diff --git a/manifest.json b/manifest.json index b9ade51..86647ef 100644 --- a/manifest.json +++ b/manifest.json @@ -2,8 +2,8 @@ "name" : "美融融商家", "appid" : "__UNI__BBE6285", "description" : "同城便捷到家美业“技术外卖”服务、同城预约到店服务平台美融融为同城爱美人群提供更优质的更全面的服务。", - "versionName" : "1.0.04", - "versionCode" : 1004, + "versionName" : "1.0.05", + "versionCode" : 1005, "transformPx" : false, /* 5+App特有相关 */ "app-plus" : { diff --git a/node_modules/.bin/mime b/node_modules/.bin/mime new file mode 100644 index 0000000..7751de3 --- /dev/null +++ b/node_modules/.bin/mime @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../mime/cli.js" "$@" +else + exec node "$basedir/../mime/cli.js" "$@" +fi diff --git a/node_modules/.bin/mime.cmd b/node_modules/.bin/mime.cmd new file mode 100644 index 0000000..54491f1 --- /dev/null +++ b/node_modules/.bin/mime.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mime\cli.js" %* diff --git a/node_modules/.bin/mime.ps1 b/node_modules/.bin/mime.ps1 new file mode 100644 index 0000000..2222f40 --- /dev/null +++ b/node_modules/.bin/mime.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../mime/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../mime/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../mime/cli.js" $args + } else { + & "node$exe" "$basedir/../mime/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/mkdirp b/node_modules/.bin/mkdirp new file mode 100644 index 0000000..1ab9c81 --- /dev/null +++ b/node_modules/.bin/mkdirp @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../mkdirp/bin/cmd.js" "$@" +else + exec node "$basedir/../mkdirp/bin/cmd.js" "$@" +fi diff --git a/node_modules/.bin/mkdirp.cmd b/node_modules/.bin/mkdirp.cmd new file mode 100644 index 0000000..a865dd9 --- /dev/null +++ b/node_modules/.bin/mkdirp.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mkdirp\bin\cmd.js" %* diff --git a/node_modules/.bin/mkdirp.ps1 b/node_modules/.bin/mkdirp.ps1 new file mode 100644 index 0000000..911e854 --- /dev/null +++ b/node_modules/.bin/mkdirp.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../mkdirp/bin/cmd.js" $args + } else { + & "$basedir/node$exe" "$basedir/../mkdirp/bin/cmd.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../mkdirp/bin/cmd.js" $args + } else { + & "node$exe" "$basedir/../mkdirp/bin/cmd.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/nanoid b/node_modules/.bin/nanoid new file mode 100644 index 0000000..46220bd --- /dev/null +++ b/node_modules/.bin/nanoid @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../nanoid/bin/nanoid.cjs" "$@" +else + exec node "$basedir/../nanoid/bin/nanoid.cjs" "$@" +fi diff --git a/node_modules/.bin/nanoid.cmd b/node_modules/.bin/nanoid.cmd new file mode 100644 index 0000000..9c40107 --- /dev/null +++ b/node_modules/.bin/nanoid.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %* diff --git a/node_modules/.bin/nanoid.ps1 b/node_modules/.bin/nanoid.ps1 new file mode 100644 index 0000000..d8a4d7a --- /dev/null +++ b/node_modules/.bin/nanoid.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } else { + & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } else { + & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/os-name b/node_modules/.bin/os-name new file mode 100644 index 0000000..7a6412e --- /dev/null +++ b/node_modules/.bin/os-name @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../os-name/cli.js" "$@" +else + exec node "$basedir/../os-name/cli.js" "$@" +fi diff --git a/node_modules/.bin/os-name.cmd b/node_modules/.bin/os-name.cmd new file mode 100644 index 0000000..88737b3 --- /dev/null +++ b/node_modules/.bin/os-name.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\os-name\cli.js" %* diff --git a/node_modules/.bin/os-name.ps1 b/node_modules/.bin/os-name.ps1 new file mode 100644 index 0000000..d91951a --- /dev/null +++ b/node_modules/.bin/os-name.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../os-name/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../os-name/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../os-name/cli.js" $args + } else { + & "node$exe" "$basedir/../os-name/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/osx-release b/node_modules/.bin/osx-release new file mode 100644 index 0000000..57b4389 --- /dev/null +++ b/node_modules/.bin/osx-release @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../osx-release/cli.js" "$@" +else + exec node "$basedir/../osx-release/cli.js" "$@" +fi diff --git a/node_modules/.bin/osx-release.cmd b/node_modules/.bin/osx-release.cmd new file mode 100644 index 0000000..56bf33c --- /dev/null +++ b/node_modules/.bin/osx-release.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\osx-release\cli.js" %* diff --git a/node_modules/.bin/osx-release.ps1 b/node_modules/.bin/osx-release.ps1 new file mode 100644 index 0000000..d2a7053 --- /dev/null +++ b/node_modules/.bin/osx-release.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../osx-release/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../osx-release/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../osx-release/cli.js" $args + } else { + & "node$exe" "$basedir/../osx-release/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/parser b/node_modules/.bin/parser new file mode 100644 index 0000000..7696ad4 --- /dev/null +++ b/node_modules/.bin/parser @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../@babel/parser/bin/babel-parser.js" "$@" +else + exec node "$basedir/../@babel/parser/bin/babel-parser.js" "$@" +fi diff --git a/node_modules/.bin/parser.cmd b/node_modules/.bin/parser.cmd new file mode 100644 index 0000000..1ad5c81 --- /dev/null +++ b/node_modules/.bin/parser.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\@babel\parser\bin\babel-parser.js" %* diff --git a/node_modules/.bin/parser.ps1 b/node_modules/.bin/parser.ps1 new file mode 100644 index 0000000..8926517 --- /dev/null +++ b/node_modules/.bin/parser.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args + } else { + & "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args + } else { + & "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/semver b/node_modules/.bin/semver new file mode 100644 index 0000000..384db49 --- /dev/null +++ b/node_modules/.bin/semver @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../semver/bin/semver" "$@" +else + exec node "$basedir/../semver/bin/semver" "$@" +fi diff --git a/node_modules/.bin/semver.cmd b/node_modules/.bin/semver.cmd new file mode 100644 index 0000000..22d9286 --- /dev/null +++ b/node_modules/.bin/semver.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\semver\bin\semver" %* diff --git a/node_modules/.bin/semver.ps1 b/node_modules/.bin/semver.ps1 new file mode 100644 index 0000000..98c1b09 --- /dev/null +++ b/node_modules/.bin/semver.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../semver/bin/semver" $args + } else { + & "$basedir/node$exe" "$basedir/../semver/bin/semver" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../semver/bin/semver" $args + } else { + & "node$exe" "$basedir/../semver/bin/semver" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..2418305 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,1407 @@ +{ + "name": "mrr.sj.front", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.0", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/types": "^7.28.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.2", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.4", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", + "license": "MIT", + "peer": true + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.18", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.18.tgz", + "integrity": "sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/parser": "^7.28.0", + "@vue/shared": "3.5.18", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.18", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.18.tgz", + "integrity": "sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-core": "3.5.18", + "@vue/shared": "3.5.18" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.18", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.18.tgz", + "integrity": "sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/parser": "^7.28.0", + "@vue/compiler-core": "3.5.18", + "@vue/compiler-dom": "3.5.18", + "@vue/compiler-ssr": "3.5.18", + "@vue/shared": "3.5.18", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.17", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.18", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.18.tgz", + "integrity": "sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.5.18", + "@vue/shared": "3.5.18" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT", + "peer": true + }, + "node_modules/@vue/reactivity": { + "version": "3.5.18", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.18.tgz", + "integrity": "sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/shared": "3.5.18" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.18", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.18.tgz", + "integrity": "sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/reactivity": "3.5.18", + "@vue/shared": "3.5.18" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.18", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.18.tgz", + "integrity": "sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/reactivity": "3.5.18", + "@vue/runtime-core": "3.5.18", + "@vue/shared": "3.5.18", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.18", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.18.tgz", + "integrity": "sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-ssr": "3.5.18", + "@vue/shared": "3.5.18" + }, + "peerDependencies": { + "vue": "3.5.18" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.18", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.18.tgz", + "integrity": "sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==", + "license": "MIT", + "peer": true + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.3.tgz", + "integrity": "sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==", + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/ali-oss": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/ali-oss/-/ali-oss-6.23.0.tgz", + "integrity": "sha512-FipRmyd16Pr/tEey/YaaQ/24Pc3HEpLM9S1DRakEuXlSLXNIJnu1oJtHM53eVYpvW3dXapSjrip3xylZUTIZVQ==", + "license": "MIT", + "dependencies": { + "address": "^1.2.2", + "agentkeepalive": "^3.4.1", + "bowser": "^1.6.0", + "copy-to": "^2.0.1", + "dateformat": "^2.0.0", + "debug": "^4.3.4", + "destroy": "^1.0.4", + "end-or-error": "^1.0.1", + "get-ready": "^1.0.0", + "humanize-ms": "^1.2.0", + "is-type-of": "^1.4.0", + "js-base64": "^2.5.2", + "jstoxml": "^2.0.0", + "lodash": "^4.17.21", + "merge-descriptors": "^1.0.1", + "mime": "^2.4.5", + "platform": "^1.3.1", + "pump": "^3.0.0", + "qs": "^6.4.0", + "sdk-base": "^2.0.1", + "stream-http": "2.8.2", + "stream-wormhole": "^1.0.4", + "urllib": "^2.44.0", + "utility": "^1.18.0", + "xml2js": "^0.6.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/bowser": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz", + "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==", + "license": "MIT" + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "license": "MIT" + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/copy-to": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", + "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT", + "peer": true + }, + "node_modules/dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-user-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz", + "integrity": "sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==", + "license": "MIT", + "dependencies": { + "os-name": "~1.0.3" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/digest-header": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/digest-header/-/digest-header-1.1.0.tgz", + "integrity": "sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==", + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/end-or-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/end-or-error/-/end-or-error-1.0.1.tgz", + "integrity": "sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ==", + "license": "MIT", + "engines": { + "node": ">= 0.11.14" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT", + "peer": true + }, + "node_modules/event-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", + "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/formstream": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/formstream/-/formstream-1.5.1.tgz", + "integrity": "sha512-q7ORzFqotpwn3Y/GBK2lK7PjtZZwJHz9QE9Phv8zb5IrL9ftGLyi2zjGURON3voK8TaZ+mqJKERYN4lrHYTkUQ==", + "license": "MIT", + "dependencies": { + "destroy": "^1.0.4", + "mime": "^2.5.2", + "node-hex": "^1.0.1", + "pause-stream": "~0.0.11" + } + }, + "node_modules/from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "license": "MIT" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-ready": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-ready/-/get-ready-1.0.0.tgz", + "integrity": "sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==", + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-class-hotfix": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz", + "integrity": "sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==", + "license": "MIT" + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-type-of": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-type-of/-/is-type-of-1.4.0.tgz", + "integrity": "sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==", + "license": "MIT", + "dependencies": { + "core-util-is": "^1.0.2", + "is-class-hotfix": "~0.0.6", + "isstream": "~0.1.2" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "license": "MIT" + }, + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "license": "BSD-3-Clause" + }, + "node_modules/js-pinyin": { + "version": "0.2.7", + "resolved": "https://registry.npmmirror.com/js-pinyin/-/js-pinyin-0.2.7.tgz", + "integrity": "sha512-Dbm7qJDwlC2MRHRXQo7GrVrL5w975tEOX6sfc0M8Z3oL9VhR4uUqgkwaETMqh4bAJ14w4zVs3tXsi9pDxWUmNg==", + "license": "MIT License" + }, + "node_modules/jstoxml": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/jstoxml/-/jstoxml-2.2.9.tgz", + "integrity": "sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw==", + "license": "MIT" + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mingo": { + "version": "6.5.6", + "resolved": "https://registry.npmjs.org/mingo/-/mingo-6.5.6.tgz", + "integrity": "sha512-XV89xbTakngi/oIEpuq7+FXXYvdA/Ht6aAsNTuIl8zLW1jfv369Va1PPWod1UTa/cqL0pC6LD2P6ggBcSSeH+A==", + "license": "MIT" + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-hex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/node-hex/-/node-hex-1.0.1.tgz", + "integrity": "sha512-iwpZdvW6Umz12ICmu9IYPRxg0tOLGmU3Tq2tKetejCj3oZd7b2nUXwP3a7QA5M9glWy8wlPS1G3RwM/CdsUbdQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/os-name": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", + "integrity": "sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==", + "license": "MIT", + "dependencies": { + "osx-release": "^1.0.0", + "win-release": "^1.0.0" + }, + "bin": { + "os-name": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osx-release": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", + "integrity": "sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==", + "license": "MIT", + "dependencies": { + "minimist": "^1.1.0" + }, + "bin": { + "osx-release": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "license": [ + "MIT", + "Apache2" + ], + "dependencies": { + "through": "~2.3" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC", + "peer": true + }, + "node_modules/platform": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", + "license": "MIT" + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/save": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/save/-/save-2.9.0.tgz", + "integrity": "sha512-eg8+g8CjvehE/2C6EbLdtK1pINVD27pcJLj4M9PjWWhoeha/y5bWf4dp/0RF+OzbKTcG1bae9qi3PAqiR8CJTg==", + "license": "ISC", + "dependencies": { + "async": "^3.2.2", + "event-stream": "^4.0.1", + "lodash.assign": "^4.2.0", + "mingo": "^6.1.0" + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" + }, + "node_modules/sdk-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/sdk-base/-/sdk-base-2.0.1.tgz", + "integrity": "sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==", + "license": "MIT", + "dependencies": { + "get-ready": "~1.0.0" + } + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/shvl": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/shvl/-/shvl-2.0.3.tgz", + "integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw==", + "deprecated": "older versions vulnerable to prototype pollution", + "license": "MIT" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==", + "license": "(WTFPL OR MIT)" + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "license": "MIT", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", + "license": "MIT", + "dependencies": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "node_modules/stream-http": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", + "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", + "license": "MIT", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-wormhole": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stream-wormhole/-/stream-wormhole-1.1.0.tgz", + "integrity": "sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "license": "MIT" + }, + "node_modules/unescape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz", + "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/urllib": { + "version": "2.44.0", + "resolved": "https://registry.npmjs.org/urllib/-/urllib-2.44.0.tgz", + "integrity": "sha512-zRCJqdfYllRDA9bXUtx+vccyRqtJPKsw85f44zH7zPD28PIvjMqIgw9VwoTLV7xTBWZsbebUFVHU5ghQcWku2A==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.3.0", + "content-type": "^1.0.2", + "default-user-agent": "^1.0.0", + "digest-header": "^1.0.0", + "ee-first": "~1.1.1", + "formstream": "^1.1.0", + "humanize-ms": "^1.2.0", + "iconv-lite": "^0.6.3", + "pump": "^3.0.0", + "qs": "^6.4.0", + "statuses": "^1.3.1", + "utility": "^1.16.1" + }, + "engines": { + "node": ">= 0.10.0" + }, + "peerDependencies": { + "proxy-agent": "^5.0.0" + }, + "peerDependenciesMeta": { + "proxy-agent": { + "optional": true + } + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utility": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/utility/-/utility-1.18.0.tgz", + "integrity": "sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==", + "license": "MIT", + "dependencies": { + "copy-to": "^2.0.1", + "escape-html": "^1.0.3", + "mkdirp": "^0.5.1", + "mz": "^2.7.0", + "unescape": "^1.0.1" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/vue": { + "version": "3.5.18", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.18.tgz", + "integrity": "sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.5.18", + "@vue/compiler-sfc": "3.5.18", + "@vue/runtime-dom": "3.5.18", + "@vue/server-renderer": "3.5.18", + "@vue/shared": "3.5.18" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vuex": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.1.0.tgz", + "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vuex-persistedstate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz", + "integrity": "sha512-3SkEj4NqwM69ikJdFVw6gObeB0NHyspRYMYkR/EbhR0hbvAKyR5gksVhtAfY1UYuWUOCCA0QNGwv9pOwdj+XUQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT", + "dependencies": { + "deepmerge": "^4.2.2", + "shvl": "^2.0.3" + }, + "peerDependencies": { + "vuex": "^3.0 || ^4.0.0-rc" + } + }, + "node_modules/weapp-qrcode-canvas-2d": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/weapp-qrcode-canvas-2d/-/weapp-qrcode-canvas-2d-1.1.6.tgz", + "integrity": "sha512-98/Al6OgYJwJIQFRypux43a21TZpeVy/63uYzAR4YQrIm9+vxq7bKH5v+hRwshWdku4TySDmhXC8la8wZmh5UQ==", + "license": "MIT", + "dependencies": { + "extend": "^3.0.2" + } + }, + "node_modules/win-release": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", + "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==", + "license": "MIT", + "dependencies": { + "semver": "^5.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + } + } +} diff --git a/node_modules/@babel/helper-string-parser/LICENSE b/node_modules/@babel/helper-string-parser/LICENSE new file mode 100644 index 0000000..f31575e --- /dev/null +++ b/node_modules/@babel/helper-string-parser/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@babel/helper-string-parser/README.md b/node_modules/@babel/helper-string-parser/README.md new file mode 100644 index 0000000..771b470 --- /dev/null +++ b/node_modules/@babel/helper-string-parser/README.md @@ -0,0 +1,19 @@ +# @babel/helper-string-parser + +> A utility package to parse strings + +See our website [@babel/helper-string-parser](https://babeljs.io/docs/babel-helper-string-parser) for more information. + +## Install + +Using npm: + +```sh +npm install --save @babel/helper-string-parser +``` + +or using yarn: + +```sh +yarn add @babel/helper-string-parser +``` diff --git a/node_modules/@babel/helper-string-parser/lib/index.js b/node_modules/@babel/helper-string-parser/lib/index.js new file mode 100644 index 0000000..2d94115 --- /dev/null +++ b/node_modules/@babel/helper-string-parser/lib/index.js @@ -0,0 +1,295 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.readCodePoint = readCodePoint; +exports.readInt = readInt; +exports.readStringContents = readStringContents; +var _isDigit = function isDigit(code) { + return code >= 48 && code <= 57; +}; +const forbiddenNumericSeparatorSiblings = { + decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]), + hex: new Set([46, 88, 95, 120]) +}; +const isAllowedNumericSeparatorSibling = { + bin: ch => ch === 48 || ch === 49, + oct: ch => ch >= 48 && ch <= 55, + dec: ch => ch >= 48 && ch <= 57, + hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102 +}; +function readStringContents(type, input, pos, lineStart, curLine, errors) { + const initialPos = pos; + const initialLineStart = lineStart; + const initialCurLine = curLine; + let out = ""; + let firstInvalidLoc = null; + let chunkStart = pos; + const { + length + } = input; + for (;;) { + if (pos >= length) { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + out += input.slice(chunkStart, pos); + break; + } + const ch = input.charCodeAt(pos); + if (isStringEnd(type, ch, input, pos)) { + out += input.slice(chunkStart, pos); + break; + } + if (ch === 92) { + out += input.slice(chunkStart, pos); + const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors); + if (res.ch === null && !firstInvalidLoc) { + firstInvalidLoc = { + pos, + lineStart, + curLine + }; + } else { + out += res.ch; + } + ({ + pos, + lineStart, + curLine + } = res); + chunkStart = pos; + } else if (ch === 8232 || ch === 8233) { + ++pos; + ++curLine; + lineStart = pos; + } else if (ch === 10 || ch === 13) { + if (type === "template") { + out += input.slice(chunkStart, pos) + "\n"; + ++pos; + if (ch === 13 && input.charCodeAt(pos) === 10) { + ++pos; + } + ++curLine; + chunkStart = lineStart = pos; + } else { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + } + } else { + ++pos; + } + } + return { + pos, + str: out, + firstInvalidLoc, + lineStart, + curLine, + containsInvalid: !!firstInvalidLoc + }; +} +function isStringEnd(type, ch, input, pos) { + if (type === "template") { + return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123; + } + return ch === (type === "double" ? 34 : 39); +} +function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) { + const throwOnInvalid = !inTemplate; + pos++; + const res = ch => ({ + pos, + ch, + lineStart, + curLine + }); + const ch = input.charCodeAt(pos++); + switch (ch) { + case 110: + return res("\n"); + case 114: + return res("\r"); + case 120: + { + let code; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCharCode(code)); + } + case 117: + { + let code; + ({ + code, + pos + } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCodePoint(code)); + } + case 116: + return res("\t"); + case 98: + return res("\b"); + case 118: + return res("\u000b"); + case 102: + return res("\f"); + case 13: + if (input.charCodeAt(pos) === 10) { + ++pos; + } + case 10: + lineStart = pos; + ++curLine; + case 8232: + case 8233: + return res(""); + case 56: + case 57: + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(pos - 1, lineStart, curLine); + } + default: + if (ch >= 48 && ch <= 55) { + const startPos = pos - 1; + const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2)); + let octalStr = match[0]; + let octal = parseInt(octalStr, 8); + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + pos += octalStr.length - 1; + const next = input.charCodeAt(pos); + if (octalStr !== "0" || next === 56 || next === 57) { + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(startPos, lineStart, curLine); + } + } + return res(String.fromCharCode(octal)); + } + return res(String.fromCharCode(ch)); + } +} +function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) { + const initialPos = pos; + let n; + ({ + n, + pos + } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid)); + if (n === null) { + if (throwOnInvalid) { + errors.invalidEscapeSequence(initialPos, lineStart, curLine); + } else { + pos = initialPos - 1; + } + } + return { + code: n, + pos + }; +} +function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) { + const start = pos; + const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; + const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin; + let invalid = false; + let total = 0; + for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { + const code = input.charCodeAt(pos); + let val; + if (code === 95 && allowNumSeparator !== "bail") { + const prev = input.charCodeAt(pos - 1); + const next = input.charCodeAt(pos + 1); + if (!allowNumSeparator) { + if (bailOnError) return { + n: null, + pos + }; + errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine); + } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) { + if (bailOnError) return { + n: null, + pos + }; + errors.unexpectedNumericSeparator(pos, lineStart, curLine); + } + ++pos; + continue; + } + if (code >= 97) { + val = code - 97 + 10; + } else if (code >= 65) { + val = code - 65 + 10; + } else if (_isDigit(code)) { + val = code - 48; + } else { + val = Infinity; + } + if (val >= radix) { + if (val <= 9 && bailOnError) { + return { + n: null, + pos + }; + } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) { + val = 0; + } else if (forceLen) { + val = 0; + invalid = true; + } else { + break; + } + } + ++pos; + total = total * radix + val; + } + if (pos === start || len != null && pos - start !== len || invalid) { + return { + n: null, + pos + }; + } + return { + n: total, + pos + }; +} +function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) { + const ch = input.charCodeAt(pos); + let code; + if (ch === 123) { + ++pos; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors)); + ++pos; + if (code !== null && code > 0x10ffff) { + if (throwOnInvalid) { + errors.invalidCodePoint(pos, lineStart, curLine); + } else { + return { + code: null, + pos + }; + } + } + } else { + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors)); + } + return { + code, + pos + }; +} + +//# sourceMappingURL=index.js.map diff --git a/node_modules/@babel/helper-string-parser/lib/index.js.map b/node_modules/@babel/helper-string-parser/lib/index.js.map new file mode 100644 index 0000000..cd50797 --- /dev/null +++ b/node_modules/@babel/helper-string-parser/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"names":["isDigit","code","forbiddenNumericSeparatorSiblings","decBinOct","Set","hex","isAllowedNumericSeparatorSibling","bin","ch","oct","dec","readStringContents","type","input","pos","lineStart","curLine","errors","initialPos","initialLineStart","initialCurLine","out","firstInvalidLoc","chunkStart","length","unterminated","slice","charCodeAt","isStringEnd","res","readEscapedChar","str","containsInvalid","inTemplate","throwOnInvalid","readHexChar","String","fromCharCode","readCodePoint","fromCodePoint","strictNumericEscape","startPos","match","exec","octalStr","octal","parseInt","next","len","forceLen","n","readInt","invalidEscapeSequence","radix","allowNumSeparator","bailOnError","start","forbiddenSiblings","isAllowedSibling","invalid","total","i","e","Infinity","val","prev","numericSeparatorInEscapeSequence","Number","isNaN","has","unexpectedNumericSeparator","_isDigit","invalidDigit","indexOf","invalidCodePoint"],"sources":["../src/index.ts"],"sourcesContent":["// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set([\n charCodes.dot,\n charCodes.uppercaseB,\n charCodes.uppercaseE,\n charCodes.uppercaseO,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseB,\n charCodes.lowercaseE,\n charCodes.lowercaseO,\n ]),\n hex: new Set([\n charCodes.dot,\n charCodes.uppercaseX,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseX,\n ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n // 0 - 1\n bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n // 0 - 7\n oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n // 0 - 9\n dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n // 0 - 9, A - F, a - f,\n hex: (ch: number) =>\n (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n unterminated(\n initialPos: number,\n initialLineStart: number,\n initialCurLine: number,\n ): void;\n};\n\nexport function readStringContents(\n type: \"single\" | \"double\" | \"template\",\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n errors: StringContentsErrorHandlers,\n) {\n const initialPos = pos;\n const initialLineStart = lineStart;\n const initialCurLine = curLine;\n\n let out = \"\";\n let firstInvalidLoc = null;\n let chunkStart = pos;\n const { length } = input;\n for (;;) {\n if (pos >= length) {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n out += input.slice(chunkStart, pos);\n break;\n }\n const ch = input.charCodeAt(pos);\n if (isStringEnd(type, ch, input, pos)) {\n out += input.slice(chunkStart, pos);\n break;\n }\n if (ch === charCodes.backslash) {\n out += input.slice(chunkStart, pos);\n const res = readEscapedChar(\n input,\n pos,\n lineStart,\n curLine,\n type === \"template\",\n errors,\n );\n if (res.ch === null && !firstInvalidLoc) {\n firstInvalidLoc = { pos, lineStart, curLine };\n } else {\n out += res.ch;\n }\n ({ pos, lineStart, curLine } = res);\n chunkStart = pos;\n } else if (\n ch === charCodes.lineSeparator ||\n ch === charCodes.paragraphSeparator\n ) {\n ++pos;\n ++curLine;\n lineStart = pos;\n } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n if (type === \"template\") {\n out += input.slice(chunkStart, pos) + \"\\n\";\n ++pos;\n if (\n ch === charCodes.carriageReturn &&\n input.charCodeAt(pos) === charCodes.lineFeed\n ) {\n ++pos;\n }\n ++curLine;\n chunkStart = lineStart = pos;\n } else {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n }\n } else {\n ++pos;\n }\n }\n return process.env.BABEL_8_BREAKING\n ? { pos, str: out, firstInvalidLoc, lineStart, curLine }\n : {\n pos,\n str: out,\n firstInvalidLoc,\n lineStart,\n curLine,\n containsInvalid: !!firstInvalidLoc,\n };\n}\n\nfunction isStringEnd(\n type: \"single\" | \"double\" | \"template\",\n ch: number,\n input: string,\n pos: number,\n) {\n if (type === \"template\") {\n return (\n ch === charCodes.graveAccent ||\n (ch === charCodes.dollarSign &&\n input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n );\n }\n return (\n ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n CodePointErrorHandlers & {\n strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n };\n\nfunction readEscapedChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n inTemplate: boolean,\n errors: EscapedCharErrorHandlers,\n) {\n const throwOnInvalid = !inTemplate;\n pos++; // skip '\\'\n\n const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n const ch = input.charCodeAt(pos++);\n switch (ch) {\n case charCodes.lowercaseN:\n return res(\"\\n\");\n case charCodes.lowercaseR:\n return res(\"\\r\");\n case charCodes.lowercaseX: {\n let code;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 2,\n false,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCharCode(code));\n }\n case charCodes.lowercaseU: {\n let code;\n ({ code, pos } = readCodePoint(\n input,\n pos,\n lineStart,\n curLine,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCodePoint(code));\n }\n case charCodes.lowercaseT:\n return res(\"\\t\");\n case charCodes.lowercaseB:\n return res(\"\\b\");\n case charCodes.lowercaseV:\n return res(\"\\u000b\");\n case charCodes.lowercaseF:\n return res(\"\\f\");\n case charCodes.carriageReturn:\n if (input.charCodeAt(pos) === charCodes.lineFeed) {\n ++pos;\n }\n // fall through\n case charCodes.lineFeed:\n lineStart = pos;\n ++curLine;\n // fall through\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return res(\"\");\n case charCodes.digit8:\n case charCodes.digit9:\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(pos - 1, lineStart, curLine);\n }\n // fall through\n default:\n if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n const startPos = pos - 1;\n const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n\n let octalStr = match[0];\n\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n pos += octalStr.length - 1;\n const next = input.charCodeAt(pos);\n if (\n octalStr !== \"0\" ||\n next === charCodes.digit8 ||\n next === charCodes.digit9\n ) {\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(startPos, lineStart, curLine);\n }\n }\n\n return res(String.fromCharCode(octal));\n }\n\n return res(String.fromCharCode(ch));\n }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n len: number,\n forceLen: boolean,\n throwOnInvalid: boolean,\n errors: HexCharErrorHandlers,\n) {\n const initialPos = pos;\n let n;\n ({ n, pos } = readInt(\n input,\n pos,\n lineStart,\n curLine,\n 16,\n len,\n forceLen,\n false,\n errors,\n /* bailOnError */ !throwOnInvalid,\n ));\n if (n === null) {\n if (throwOnInvalid) {\n errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n } else {\n pos = initialPos - 1;\n }\n }\n return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n numericSeparatorInEscapeSequence(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n unexpectedNumericSeparator(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n // It can return \"true\" to indicate that the error was handled\n // and the int parsing should continue.\n invalidDigit(\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n ): boolean;\n};\n\nexport function readInt(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n len: number | undefined,\n forceLen: boolean,\n allowNumSeparator: boolean | \"bail\",\n errors: IntErrorHandlers,\n bailOnError: boolean,\n) {\n const start = pos;\n const forbiddenSiblings =\n radix === 16\n ? forbiddenNumericSeparatorSiblings.hex\n : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling =\n radix === 16\n ? isAllowedNumericSeparatorSibling.hex\n : radix === 10\n ? isAllowedNumericSeparatorSibling.dec\n : radix === 8\n ? isAllowedNumericSeparatorSibling.oct\n : isAllowedNumericSeparatorSibling.bin;\n\n let invalid = false;\n let total = 0;\n\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = input.charCodeAt(pos);\n let val;\n\n if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n const prev = input.charCodeAt(pos - 1);\n const next = input.charCodeAt(pos + 1);\n\n if (!allowNumSeparator) {\n if (bailOnError) return { n: null, pos };\n errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n } else if (\n Number.isNaN(next) ||\n !isAllowedSibling(next) ||\n forbiddenSiblings.has(prev) ||\n forbiddenSiblings.has(next)\n ) {\n if (bailOnError) return { n: null, pos };\n errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n }\n\n // Ignore this _ character\n ++pos;\n continue;\n }\n\n if (code >= charCodes.lowercaseA) {\n val = code - charCodes.lowercaseA + charCodes.lineFeed;\n } else if (code >= charCodes.uppercaseA) {\n val = code - charCodes.uppercaseA + charCodes.lineFeed;\n } else if (charCodes.isDigit(code)) {\n val = code - charCodes.digit0; // 0-9\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n // breaking the loop (this is used for error recovery).\n if (val <= 9 && bailOnError) {\n return { n: null, pos };\n } else if (\n val <= 9 &&\n errors.invalidDigit(pos, lineStart, curLine, radix)\n ) {\n val = 0;\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++pos;\n total = total * radix + val;\n }\n if (pos === start || (len != null && pos - start !== len) || invalid) {\n return { n: null, pos };\n }\n\n return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n throwOnInvalid: boolean,\n errors: CodePointErrorHandlers,\n) {\n const ch = input.charCodeAt(pos);\n let code;\n\n if (ch === charCodes.leftCurlyBrace) {\n ++pos;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n input.indexOf(\"}\", pos) - pos,\n true,\n throwOnInvalid,\n errors,\n ));\n ++pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n errors.invalidCodePoint(pos, lineStart, curLine);\n } else {\n return { code: null, pos };\n }\n }\n } else {\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 4,\n false,\n throwOnInvalid,\n errors,\n ));\n }\n return { code, pos };\n}\n"],"mappings":";;;;;;;;eAAA,SAASA,OAAOA,CAACC,IAAI,EAAE;EACrB,OAAOA,IAAI,MAAU,IAAIA,IAAI,MAAU;AACzC,CAAC;AAID,MAAMC,iCAAiC,GAAG;EACxCC,SAAS,EAAE,IAAIC,GAAG,CAAS,kCAS1B,CAAC;EACFC,GAAG,EAAE,IAAID,GAAG,CAAS,iBAKpB;AACH,CAAC;AAED,MAAME,gCAAgC,GAAG;EAEvCC,GAAG,EAAGC,EAAU,IAAKA,EAAE,OAAqB,IAAIA,EAAE,OAAqB;EAGvEC,GAAG,EAAGD,EAAU,IAAKA,EAAE,MAAoB,IAAIA,EAAE,MAAoB;EAGrEE,GAAG,EAAGF,EAAU,IAAKA,EAAE,MAAoB,IAAIA,EAAE,MAAoB;EAGrEH,GAAG,EAAGG,EAAU,IACbA,EAAE,MAAoB,IAAIA,EAAE,MAAoB,IAChDA,EAAE,MAAwB,IAAIA,EAAE,MAAyB,IACzDA,EAAE,MAAwB,IAAIA,EAAE;AACrC,CAAC;AAUM,SAASG,kBAAkBA,CAChCC,IAAsC,EACtCC,KAAa,EACbC,GAAW,EACXC,SAAiB,EACjBC,OAAe,EACfC,MAAmC,EACnC;EACA,MAAMC,UAAU,GAAGJ,GAAG;EACtB,MAAMK,gBAAgB,GAAGJ,SAAS;EAClC,MAAMK,cAAc,GAAGJ,OAAO;EAE9B,IAAIK,GAAG,GAAG,EAAE;EACZ,IAAIC,eAAe,GAAG,IAAI;EAC1B,IAAIC,UAAU,GAAGT,GAAG;EACpB,MAAM;IAAEU;EAAO,CAAC,GAAGX,KAAK;EACxB,SAAS;IACP,IAAIC,GAAG,IAAIU,MAAM,EAAE;MACjBP,MAAM,CAACQ,YAAY,CAACP,UAAU,EAAEC,gBAAgB,EAAEC,cAAc,CAAC;MACjEC,GAAG,IAAIR,KAAK,CAACa,KAAK,CAACH,UAAU,EAAET,GAAG,CAAC;MACnC;IACF;IACA,MAAMN,EAAE,GAAGK,KAAK,CAACc,UAAU,CAACb,GAAG,CAAC;IAChC,IAAIc,WAAW,CAAChB,IAAI,EAAEJ,EAAE,EAAEK,KAAK,EAAEC,GAAG,CAAC,EAAE;MACrCO,GAAG,IAAIR,KAAK,CAACa,KAAK,CAACH,UAAU,EAAET,GAAG,CAAC;MACnC;IACF;IACA,IAAIN,EAAE,OAAwB,EAAE;MAC9Ba,GAAG,IAAIR,KAAK,CAACa,KAAK,CAACH,UAAU,EAAET,GAAG,CAAC;MACnC,MAAMe,GAAG,GAAGC,eAAe,CACzBjB,KAAK,EACLC,GAAG,EACHC,SAAS,EACTC,OAAO,EACPJ,IAAI,KAAK,UAAU,EACnBK,MACF,CAAC;MACD,IAAIY,GAAG,CAACrB,EAAE,KAAK,IAAI,IAAI,CAACc,eAAe,EAAE;QACvCA,eAAe,GAAG;UAAER,GAAG;UAAEC,SAAS;UAAEC;QAAQ,CAAC;MAC/C,CAAC,MAAM;QACLK,GAAG,IAAIQ,GAAG,CAACrB,EAAE;MACf;MACA,CAAC;QAAEM,GAAG;QAAEC,SAAS;QAAEC;MAAQ,CAAC,GAAGa,GAAG;MAClCN,UAAU,GAAGT,GAAG;IAClB,CAAC,MAAM,IACLN,EAAE,SAA4B,IAC9BA,EAAE,SAAiC,EACnC;MACA,EAAEM,GAAG;MACL,EAAEE,OAAO;MACTD,SAAS,GAAGD,GAAG;IACjB,CAAC,MAAM,IAAIN,EAAE,OAAuB,IAAIA,EAAE,OAA6B,EAAE;MACvE,IAAII,IAAI,KAAK,UAAU,EAAE;QACvBS,GAAG,IAAIR,KAAK,CAACa,KAAK,CAACH,UAAU,EAAET,GAAG,CAAC,GAAG,IAAI;QAC1C,EAAEA,GAAG;QACL,IACEN,EAAE,OAA6B,IAC/BK,KAAK,CAACc,UAAU,CAACb,GAAG,CAAC,OAAuB,EAC5C;UACA,EAAEA,GAAG;QACP;QACA,EAAEE,OAAO;QACTO,UAAU,GAAGR,SAAS,GAAGD,GAAG;MAC9B,CAAC,MAAM;QACLG,MAAM,CAACQ,YAAY,CAACP,UAAU,EAAEC,gBAAgB,EAAEC,cAAc,CAAC;MACnE;IACF,CAAC,MAAM;MACL,EAAEN,GAAG;IACP;EACF;EACA,OAEI;IACEA,GAAG;IACHiB,GAAG,EAAEV,GAAG;IACRC,eAAe;IACfP,SAAS;IACTC,OAAO;IACPgB,eAAe,EAAE,CAAC,CAACV;EACrB,CAAC;AACP;AAEA,SAASM,WAAWA,CAClBhB,IAAsC,EACtCJ,EAAU,EACVK,KAAa,EACbC,GAAW,EACX;EACA,IAAIF,IAAI,KAAK,UAAU,EAAE;IACvB,OACEJ,EAAE,OAA0B,IAC3BA,EAAE,OAAyB,IAC1BK,KAAK,CAACc,UAAU,CAACb,GAAG,GAAG,CAAC,CAAC,QAA8B;EAE7D;EACA,OACEN,EAAE,MAAMI,IAAI,KAAK,QAAQ,UAAiD,CAAC;AAE/E;AAOA,SAASkB,eAAeA,CACtBjB,KAAa,EACbC,GAAW,EACXC,SAAiB,EACjBC,OAAe,EACfiB,UAAmB,EACnBhB,MAAgC,EAChC;EACA,MAAMiB,cAAc,GAAG,CAACD,UAAU;EAClCnB,GAAG,EAAE;EAEL,MAAMe,GAAG,GAAIrB,EAAiB,KAAM;IAAEM,GAAG;IAAEN,EAAE;IAAEO,SAAS;IAAEC;EAAQ,CAAC,CAAC;EAEpE,MAAMR,EAAE,GAAGK,KAAK,CAACc,UAAU,CAACb,GAAG,EAAE,CAAC;EAClC,QAAQN,EAAE;IACR;MACE,OAAOqB,GAAG,CAAC,IAAI,CAAC;IAClB;MACE,OAAOA,GAAG,CAAC,IAAI,CAAC;IAClB;MAA2B;QACzB,IAAI5B,IAAI;QACR,CAAC;UAAEA,IAAI;UAAEa;QAAI,CAAC,GAAGqB,WAAW,CAC1BtB,KAAK,EACLC,GAAG,EACHC,SAAS,EACTC,OAAO,EACP,CAAC,EACD,KAAK,EACLkB,cAAc,EACdjB,MACF,CAAC;QACD,OAAOY,GAAG,CAAC5B,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGmC,MAAM,CAACC,YAAY,CAACpC,IAAI,CAAC,CAAC;MAC9D;IACA;MAA2B;QACzB,IAAIA,IAAI;QACR,CAAC;UAAEA,IAAI;UAAEa;QAAI,CAAC,GAAGwB,aAAa,CAC5BzB,KAAK,EACLC,GAAG,EACHC,SAAS,EACTC,OAAO,EACPkB,cAAc,EACdjB,MACF,CAAC;QACD,OAAOY,GAAG,CAAC5B,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGmC,MAAM,CAACG,aAAa,CAACtC,IAAI,CAAC,CAAC;MAC/D;IACA;MACE,OAAO4B,GAAG,CAAC,IAAI,CAAC;IAClB;MACE,OAAOA,GAAG,CAAC,IAAI,CAAC;IAClB;MACE,OAAOA,GAAG,CAAC,QAAQ,CAAC;IACtB;MACE,OAAOA,GAAG,CAAC,IAAI,CAAC;IAClB;MACE,IAAIhB,KAAK,CAACc,UAAU,CAACb,GAAG,CAAC,OAAuB,EAAE;QAChD,EAAEA,GAAG;MACP;IAEF;MACEC,SAAS,GAAGD,GAAG;MACf,EAAEE,OAAO;IAEX;IACA;MACE,OAAOa,GAAG,CAAC,EAAE,CAAC;IAChB;IACA;MACE,IAAII,UAAU,EAAE;QACd,OAAOJ,GAAG,CAAC,IAAI,CAAC;MAClB,CAAC,MAAM;QACLZ,MAAM,CAACuB,mBAAmB,CAAC1B,GAAG,GAAG,CAAC,EAAEC,SAAS,EAAEC,OAAO,CAAC;MACzD;IAEF;MACE,IAAIR,EAAE,MAAoB,IAAIA,EAAE,MAAoB,EAAE;QACpD,MAAMiC,QAAQ,GAAG3B,GAAG,GAAG,CAAC;QACxB,MAAM4B,KAAK,GAAG,SAAS,CAACC,IAAI,CAAC9B,KAAK,CAACa,KAAK,CAACe,QAAQ,EAAE3B,GAAG,GAAG,CAAC,CAAC,CAAC;QAE5D,IAAI8B,QAAQ,GAAGF,KAAK,CAAC,CAAC,CAAC;QAEvB,IAAIG,KAAK,GAAGC,QAAQ,CAACF,QAAQ,EAAE,CAAC,CAAC;QACjC,IAAIC,KAAK,GAAG,GAAG,EAAE;UACfD,QAAQ,GAAGA,QAAQ,CAAClB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;UAChCmB,KAAK,GAAGC,QAAQ,CAACF,QAAQ,EAAE,CAAC,CAAC;QAC/B;QACA9B,GAAG,IAAI8B,QAAQ,CAACpB,MAAM,GAAG,CAAC;QAC1B,MAAMuB,IAAI,GAAGlC,KAAK,CAACc,UAAU,CAACb,GAAG,CAAC;QAClC,IACE8B,QAAQ,KAAK,GAAG,IAChBG,IAAI,OAAqB,IACzBA,IAAI,OAAqB,EACzB;UACA,IAAId,UAAU,EAAE;YACd,OAAOJ,GAAG,CAAC,IAAI,CAAC;UAClB,CAAC,MAAM;YACLZ,MAAM,CAACuB,mBAAmB,CAACC,QAAQ,EAAE1B,SAAS,EAAEC,OAAO,CAAC;UAC1D;QACF;QAEA,OAAOa,GAAG,CAACO,MAAM,CAACC,YAAY,CAACQ,KAAK,CAAC,CAAC;MACxC;MAEA,OAAOhB,GAAG,CAACO,MAAM,CAACC,YAAY,CAAC7B,EAAE,CAAC,CAAC;EACvC;AACF;AAOA,SAAS2B,WAAWA,CAClBtB,KAAa,EACbC,GAAW,EACXC,SAAiB,EACjBC,OAAe,EACfgC,GAAW,EACXC,QAAiB,EACjBf,cAAuB,EACvBjB,MAA4B,EAC5B;EACA,MAAMC,UAAU,GAAGJ,GAAG;EACtB,IAAIoC,CAAC;EACL,CAAC;IAAEA,CAAC;IAAEpC;EAAI,CAAC,GAAGqC,OAAO,CACnBtC,KAAK,EACLC,GAAG,EACHC,SAAS,EACTC,OAAO,EACP,EAAE,EACFgC,GAAG,EACHC,QAAQ,EACR,KAAK,EACLhC,MAAM,EACY,CAACiB,cACrB,CAAC;EACD,IAAIgB,CAAC,KAAK,IAAI,EAAE;IACd,IAAIhB,cAAc,EAAE;MAClBjB,MAAM,CAACmC,qBAAqB,CAAClC,UAAU,EAAEH,SAAS,EAAEC,OAAO,CAAC;IAC9D,CAAC,MAAM;MACLF,GAAG,GAAGI,UAAU,GAAG,CAAC;IACtB;EACF;EACA,OAAO;IAAEjB,IAAI,EAAEiD,CAAC;IAAEpC;EAAI,CAAC;AACzB;AAuBO,SAASqC,OAAOA,CACrBtC,KAAa,EACbC,GAAW,EACXC,SAAiB,EACjBC,OAAe,EACfqC,KAAa,EACbL,GAAuB,EACvBC,QAAiB,EACjBK,iBAAmC,EACnCrC,MAAwB,EACxBsC,WAAoB,EACpB;EACA,MAAMC,KAAK,GAAG1C,GAAG;EACjB,MAAM2C,iBAAiB,GACrBJ,KAAK,KAAK,EAAE,GACRnD,iCAAiC,CAACG,GAAG,GACrCH,iCAAiC,CAACC,SAAS;EACjD,MAAMuD,gBAAgB,GACpBL,KAAK,KAAK,EAAE,GACR/C,gCAAgC,CAACD,GAAG,GACpCgD,KAAK,KAAK,EAAE,GACV/C,gCAAgC,CAACI,GAAG,GACpC2C,KAAK,KAAK,CAAC,GACT/C,gCAAgC,CAACG,GAAG,GACpCH,gCAAgC,CAACC,GAAG;EAE9C,IAAIoD,OAAO,GAAG,KAAK;EACnB,IAAIC,KAAK,GAAG,CAAC;EAEb,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEC,CAAC,GAAGd,GAAG,IAAI,IAAI,GAAGe,QAAQ,GAAGf,GAAG,EAAEa,CAAC,GAAGC,CAAC,EAAE,EAAED,CAAC,EAAE;IAC5D,MAAM5D,IAAI,GAAGY,KAAK,CAACc,UAAU,CAACb,GAAG,CAAC;IAClC,IAAIkD,GAAG;IAEP,IAAI/D,IAAI,OAAyB,IAAIqD,iBAAiB,KAAK,MAAM,EAAE;MACjE,MAAMW,IAAI,GAAGpD,KAAK,CAACc,UAAU,CAACb,GAAG,GAAG,CAAC,CAAC;MACtC,MAAMiC,IAAI,GAAGlC,KAAK,CAACc,UAAU,CAACb,GAAG,GAAG,CAAC,CAAC;MAEtC,IAAI,CAACwC,iBAAiB,EAAE;QACtB,IAAIC,WAAW,EAAE,OAAO;UAAEL,CAAC,EAAE,IAAI;UAAEpC;QAAI,CAAC;QACxCG,MAAM,CAACiD,gCAAgC,CAACpD,GAAG,EAAEC,SAAS,EAAEC,OAAO,CAAC;MAClE,CAAC,MAAM,IACLmD,MAAM,CAACC,KAAK,CAACrB,IAAI,CAAC,IAClB,CAACW,gBAAgB,CAACX,IAAI,CAAC,IACvBU,iBAAiB,CAACY,GAAG,CAACJ,IAAI,CAAC,IAC3BR,iBAAiB,CAACY,GAAG,CAACtB,IAAI,CAAC,EAC3B;QACA,IAAIQ,WAAW,EAAE,OAAO;UAAEL,CAAC,EAAE,IAAI;UAAEpC;QAAI,CAAC;QACxCG,MAAM,CAACqD,0BAA0B,CAACxD,GAAG,EAAEC,SAAS,EAAEC,OAAO,CAAC;MAC5D;MAGA,EAAEF,GAAG;MACL;IACF;IAEA,IAAIb,IAAI,MAAwB,EAAE;MAChC+D,GAAG,GAAG/D,IAAI,KAAuB,KAAqB;IACxD,CAAC,MAAM,IAAIA,IAAI,MAAwB,EAAE;MACvC+D,GAAG,GAAG/D,IAAI,KAAuB,KAAqB;IACxD,CAAC,MAAM,IAAIsE,QAAA,CAAkBtE,IAAI,CAAC,EAAE;MAClC+D,GAAG,GAAG/D,IAAI,KAAmB;IAC/B,CAAC,MAAM;MACL+D,GAAG,GAAGD,QAAQ;IAChB;IACA,IAAIC,GAAG,IAAIX,KAAK,EAAE;MAGhB,IAAIW,GAAG,IAAI,CAAC,IAAIT,WAAW,EAAE;QAC3B,OAAO;UAAEL,CAAC,EAAE,IAAI;UAAEpC;QAAI,CAAC;MACzB,CAAC,MAAM,IACLkD,GAAG,IAAI,CAAC,IACR/C,MAAM,CAACuD,YAAY,CAAC1D,GAAG,EAAEC,SAAS,EAAEC,OAAO,EAAEqC,KAAK,CAAC,EACnD;QACAW,GAAG,GAAG,CAAC;MACT,CAAC,MAAM,IAAIf,QAAQ,EAAE;QACnBe,GAAG,GAAG,CAAC;QACPL,OAAO,GAAG,IAAI;MAChB,CAAC,MAAM;QACL;MACF;IACF;IACA,EAAE7C,GAAG;IACL8C,KAAK,GAAGA,KAAK,GAAGP,KAAK,GAAGW,GAAG;EAC7B;EACA,IAAIlD,GAAG,KAAK0C,KAAK,IAAKR,GAAG,IAAI,IAAI,IAAIlC,GAAG,GAAG0C,KAAK,KAAKR,GAAI,IAAIW,OAAO,EAAE;IACpE,OAAO;MAAET,CAAC,EAAE,IAAI;MAAEpC;IAAI,CAAC;EACzB;EAEA,OAAO;IAAEoC,CAAC,EAAEU,KAAK;IAAE9C;EAAI,CAAC;AAC1B;AAMO,SAASwB,aAAaA,CAC3BzB,KAAa,EACbC,GAAW,EACXC,SAAiB,EACjBC,OAAe,EACfkB,cAAuB,EACvBjB,MAA8B,EAC9B;EACA,MAAMT,EAAE,GAAGK,KAAK,CAACc,UAAU,CAACb,GAAG,CAAC;EAChC,IAAIb,IAAI;EAER,IAAIO,EAAE,QAA6B,EAAE;IACnC,EAAEM,GAAG;IACL,CAAC;MAAEb,IAAI;MAAEa;IAAI,CAAC,GAAGqB,WAAW,CAC1BtB,KAAK,EACLC,GAAG,EACHC,SAAS,EACTC,OAAO,EACPH,KAAK,CAAC4D,OAAO,CAAC,GAAG,EAAE3D,GAAG,CAAC,GAAGA,GAAG,EAC7B,IAAI,EACJoB,cAAc,EACdjB,MACF,CAAC;IACD,EAAEH,GAAG;IACL,IAAIb,IAAI,KAAK,IAAI,IAAIA,IAAI,GAAG,QAAQ,EAAE;MACpC,IAAIiC,cAAc,EAAE;QAClBjB,MAAM,CAACyD,gBAAgB,CAAC5D,GAAG,EAAEC,SAAS,EAAEC,OAAO,CAAC;MAClD,CAAC,MAAM;QACL,OAAO;UAAEf,IAAI,EAAE,IAAI;UAAEa;QAAI,CAAC;MAC5B;IACF;EACF,CAAC,MAAM;IACL,CAAC;MAAEb,IAAI;MAAEa;IAAI,CAAC,GAAGqB,WAAW,CAC1BtB,KAAK,EACLC,GAAG,EACHC,SAAS,EACTC,OAAO,EACP,CAAC,EACD,KAAK,EACLkB,cAAc,EACdjB,MACF,CAAC;EACH;EACA,OAAO;IAAEhB,IAAI;IAAEa;EAAI,CAAC;AACtB","ignoreList":[]} \ No newline at end of file diff --git a/node_modules/@babel/helper-string-parser/package.json b/node_modules/@babel/helper-string-parser/package.json new file mode 100644 index 0000000..c4c86e4 --- /dev/null +++ b/node_modules/@babel/helper-string-parser/package.json @@ -0,0 +1,31 @@ +{ + "name": "@babel/helper-string-parser", + "version": "7.27.1", + "description": "A utility package to parse strings", + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-helper-string-parser" + }, + "homepage": "https://babel.dev/docs/en/next/babel-helper-string-parser", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "main": "./lib/index.js", + "devDependencies": { + "charcodes": "^0.2.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "author": "The Babel Team (https://babel.dev/team)", + "exports": { + ".": { + "types": "./lib/index.d.ts", + "default": "./lib/index.js" + }, + "./package.json": "./package.json" + }, + "type": "commonjs" +} \ No newline at end of file diff --git a/node_modules/@babel/helper-validator-identifier/LICENSE b/node_modules/@babel/helper-validator-identifier/LICENSE new file mode 100644 index 0000000..f31575e --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@babel/helper-validator-identifier/README.md b/node_modules/@babel/helper-validator-identifier/README.md new file mode 100644 index 0000000..05c19e6 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/README.md @@ -0,0 +1,19 @@ +# @babel/helper-validator-identifier + +> Validate identifier/keywords name + +See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/babel-helper-validator-identifier) for more information. + +## Install + +Using npm: + +```sh +npm install --save @babel/helper-validator-identifier +``` + +or using yarn: + +```sh +yarn add @babel/helper-validator-identifier +``` diff --git a/node_modules/@babel/helper-validator-identifier/lib/identifier.js b/node_modules/@babel/helper-validator-identifier/lib/identifier.js new file mode 100644 index 0000000..fdb9aec --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/identifier.js @@ -0,0 +1,70 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isIdentifierChar = isIdentifierChar; +exports.isIdentifierName = isIdentifierName; +exports.isIdentifierStart = isIdentifierStart; +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; +function isInAstralSet(code, set) { + let pos = 0x10000; + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + return false; +} +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes); +} +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} +function isIdentifierName(name) { + let isFirst = true; + for (let i = 0; i < name.length; i++) { + let cp = name.charCodeAt(i); + if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) { + const trail = name.charCodeAt(++i); + if ((trail & 0xfc00) === 0xdc00) { + cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); + } + } + if (isFirst) { + isFirst = false; + if (!isIdentifierStart(cp)) { + return false; + } + } else if (!isIdentifierChar(cp)) { + return false; + } + } + return !isFirst; +} + +//# sourceMappingURL=identifier.js.map diff --git a/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map b/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map new file mode 100644 index 0000000..ecf0952 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map @@ -0,0 +1 @@ +{"version":3,"names":["nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","RegExp","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","code","set","pos","i","length","isIdentifierStart","test","String","fromCharCode","isIdentifierChar","isIdentifierName","name","isFirst","cp","charCodeAt","trail"],"sources":["../src/identifier.ts"],"sourcesContent":["// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.cjs`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7cd\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7dc\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.cjs`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,2,60,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,42,9,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,496,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,80,3,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,343,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,726,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n"],"mappings":";;;;;;;;AAaA,IAAIA,4BAA4B,GAAG,8qIAA8qI;AAEjtI,IAAIC,uBAAuB,GAAG,+kFAA+kF;AAE7mF,MAAMC,uBAAuB,GAAG,IAAIC,MAAM,CACxC,GAAG,GAAGH,4BAA4B,GAAG,GACvC,CAAC;AACD,MAAMI,kBAAkB,GAAG,IAAID,MAAM,CACnC,GAAG,GAAGH,4BAA4B,GAAGC,uBAAuB,GAAG,GACjE,CAAC;AAEDD,4BAA4B,GAAGC,uBAAuB,GAAG,IAAI;AAQ7D,MAAMI,0BAA0B,GAAG,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,CAAC;AAEjkD,MAAMC,qBAAqB,GAAG,CAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,MAAM,EAAC,GAAG,CAAC;AAK/0B,SAASC,aAAaA,CAACC,IAAY,EAAEC,GAAsB,EAAW;EACpE,IAAIC,GAAG,GAAG,OAAO;EACjB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEC,MAAM,GAAGH,GAAG,CAACG,MAAM,EAAED,CAAC,GAAGC,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;IACvDD,GAAG,IAAID,GAAG,CAACE,CAAC,CAAC;IACb,IAAID,GAAG,GAAGF,IAAI,EAAE,OAAO,KAAK;IAE5BE,GAAG,IAAID,GAAG,CAACE,CAAC,GAAG,CAAC,CAAC;IACjB,IAAID,GAAG,IAAIF,IAAI,EAAE,OAAO,IAAI;EAC9B;EACA,OAAO,KAAK;AACd;AAIO,SAASK,iBAAiBA,CAACL,IAAY,EAAW;EACvD,IAAIA,IAAI,KAAuB,EAAE,OAAOA,IAAI,OAAyB;EACrE,IAAIA,IAAI,MAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,KAAuB,EAAE,OAAOA,IAAI,OAAyB;EACrE,IAAIA,IAAI,OAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,IAAI,MAAM,EAAE;IAClB,OACEA,IAAI,IAAI,IAAI,IAAIN,uBAAuB,CAACY,IAAI,CAACC,MAAM,CAACC,YAAY,CAACR,IAAI,CAAC,CAAC;EAE3E;EACA,OAAOD,aAAa,CAACC,IAAI,EAAEH,0BAA0B,CAAC;AACxD;AAIO,SAASY,gBAAgBA,CAACT,IAAY,EAAW;EACtD,IAAIA,IAAI,KAAmB,EAAE,OAAOA,IAAI,OAAyB;EACjE,IAAIA,IAAI,KAAkB,EAAE,OAAO,IAAI;EACvC,IAAIA,IAAI,KAAuB,EAAE,OAAO,KAAK;EAC7C,IAAIA,IAAI,MAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,KAAuB,EAAE,OAAOA,IAAI,OAAyB;EACrE,IAAIA,IAAI,OAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,IAAI,MAAM,EAAE;IAClB,OAAOA,IAAI,IAAI,IAAI,IAAIJ,kBAAkB,CAACU,IAAI,CAACC,MAAM,CAACC,YAAY,CAACR,IAAI,CAAC,CAAC;EAC3E;EACA,OACED,aAAa,CAACC,IAAI,EAAEH,0BAA0B,CAAC,IAC/CE,aAAa,CAACC,IAAI,EAAEF,qBAAqB,CAAC;AAE9C;AAIO,SAASY,gBAAgBA,CAACC,IAAY,EAAW;EACtD,IAAIC,OAAO,GAAG,IAAI;EAClB,KAAK,IAAIT,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGQ,IAAI,CAACP,MAAM,EAAED,CAAC,EAAE,EAAE;IAKpC,IAAIU,EAAE,GAAGF,IAAI,CAACG,UAAU,CAACX,CAAC,CAAC;IAC3B,IAAI,CAACU,EAAE,GAAG,MAAM,MAAM,MAAM,IAAIV,CAAC,GAAG,CAAC,GAAGQ,IAAI,CAACP,MAAM,EAAE;MACnD,MAAMW,KAAK,GAAGJ,IAAI,CAACG,UAAU,CAAC,EAAEX,CAAC,CAAC;MAClC,IAAI,CAACY,KAAK,GAAG,MAAM,MAAM,MAAM,EAAE;QAC/BF,EAAE,GAAG,OAAO,IAAI,CAACA,EAAE,GAAG,KAAK,KAAK,EAAE,CAAC,IAAIE,KAAK,GAAG,KAAK,CAAC;MACvD;IACF;IACA,IAAIH,OAAO,EAAE;MACXA,OAAO,GAAG,KAAK;MACf,IAAI,CAACP,iBAAiB,CAACQ,EAAE,CAAC,EAAE;QAC1B,OAAO,KAAK;MACd;IACF,CAAC,MAAM,IAAI,CAACJ,gBAAgB,CAACI,EAAE,CAAC,EAAE;MAChC,OAAO,KAAK;IACd;EACF;EACA,OAAO,CAACD,OAAO;AACjB","ignoreList":[]} \ No newline at end of file diff --git a/node_modules/@babel/helper-validator-identifier/lib/index.js b/node_modules/@babel/helper-validator-identifier/lib/index.js new file mode 100644 index 0000000..76b2282 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/index.js @@ -0,0 +1,57 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "isIdentifierChar", { + enumerable: true, + get: function () { + return _identifier.isIdentifierChar; + } +}); +Object.defineProperty(exports, "isIdentifierName", { + enumerable: true, + get: function () { + return _identifier.isIdentifierName; + } +}); +Object.defineProperty(exports, "isIdentifierStart", { + enumerable: true, + get: function () { + return _identifier.isIdentifierStart; + } +}); +Object.defineProperty(exports, "isKeyword", { + enumerable: true, + get: function () { + return _keyword.isKeyword; + } +}); +Object.defineProperty(exports, "isReservedWord", { + enumerable: true, + get: function () { + return _keyword.isReservedWord; + } +}); +Object.defineProperty(exports, "isStrictBindOnlyReservedWord", { + enumerable: true, + get: function () { + return _keyword.isStrictBindOnlyReservedWord; + } +}); +Object.defineProperty(exports, "isStrictBindReservedWord", { + enumerable: true, + get: function () { + return _keyword.isStrictBindReservedWord; + } +}); +Object.defineProperty(exports, "isStrictReservedWord", { + enumerable: true, + get: function () { + return _keyword.isStrictReservedWord; + } +}); +var _identifier = require("./identifier.js"); +var _keyword = require("./keyword.js"); + +//# sourceMappingURL=index.js.map diff --git a/node_modules/@babel/helper-validator-identifier/lib/index.js.map b/node_modules/@babel/helper-validator-identifier/lib/index.js.map new file mode 100644 index 0000000..d985f3b --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_identifier","require","_keyword"],"sources":["../src/index.ts"],"sourcesContent":["export {\n isIdentifierName,\n isIdentifierChar,\n isIdentifierStart,\n} from \"./identifier.ts\";\nexport {\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"./keyword.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA","ignoreList":[]} \ No newline at end of file diff --git a/node_modules/@babel/helper-validator-identifier/lib/keyword.js b/node_modules/@babel/helper-validator-identifier/lib/keyword.js new file mode 100644 index 0000000..054cf84 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/keyword.js @@ -0,0 +1,35 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isKeyword = isKeyword; +exports.isReservedWord = isReservedWord; +exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord; +exports.isStrictBindReservedWord = isStrictBindReservedWord; +exports.isStrictReservedWord = isStrictReservedWord; +const reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] +}; +const keywords = new Set(reservedWords.keyword); +const reservedWordsStrictSet = new Set(reservedWords.strict); +const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); +function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; +} +function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); +} +function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); +} +function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); +} +function isKeyword(word) { + return keywords.has(word); +} + +//# sourceMappingURL=keyword.js.map diff --git a/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map b/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map new file mode 100644 index 0000000..3471f78 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map @@ -0,0 +1 @@ +{"version":3,"names":["reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword"],"sources":["../src/keyword.ts"],"sourcesContent":["const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n"],"mappings":";;;;;;;;;;AAAA,MAAMA,aAAa,GAAG;EACpBC,OAAO,EAAE,CACP,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,CACT;EACDC,MAAM,EAAE,CACN,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,CACR;EACDC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW;AAClC,CAAC;AACD,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAACL,aAAa,CAACC,OAAO,CAAC;AAC/C,MAAMK,sBAAsB,GAAG,IAAID,GAAG,CAACL,aAAa,CAACE,MAAM,CAAC;AAC5D,MAAMK,0BAA0B,GAAG,IAAIF,GAAG,CAACL,aAAa,CAACG,UAAU,CAAC;AAK7D,SAASK,cAAcA,CAACC,IAAY,EAAEC,QAAiB,EAAW;EACvE,OAAQA,QAAQ,IAAID,IAAI,KAAK,OAAO,IAAKA,IAAI,KAAK,MAAM;AAC1D;AAOO,SAASE,oBAAoBA,CAACF,IAAY,EAAEC,QAAiB,EAAW;EAC7E,OAAOF,cAAc,CAACC,IAAI,EAAEC,QAAQ,CAAC,IAAIJ,sBAAsB,CAACM,GAAG,CAACH,IAAI,CAAC;AAC3E;AAMO,SAASI,4BAA4BA,CAACJ,IAAY,EAAW;EAClE,OAAOF,0BAA0B,CAACK,GAAG,CAACH,IAAI,CAAC;AAC7C;AAOO,SAASK,wBAAwBA,CACtCL,IAAY,EACZC,QAAiB,EACR;EACT,OACEC,oBAAoB,CAACF,IAAI,EAAEC,QAAQ,CAAC,IAAIG,4BAA4B,CAACJ,IAAI,CAAC;AAE9E;AAEO,SAASM,SAASA,CAACN,IAAY,EAAW;EAC/C,OAAOL,QAAQ,CAACQ,GAAG,CAACH,IAAI,CAAC;AAC3B","ignoreList":[]} \ No newline at end of file diff --git a/node_modules/@babel/helper-validator-identifier/package.json b/node_modules/@babel/helper-validator-identifier/package.json new file mode 100644 index 0000000..316dff6 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/package.json @@ -0,0 +1,31 @@ +{ + "name": "@babel/helper-validator-identifier", + "version": "7.27.1", + "description": "Validate identifier/keywords name", + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-helper-validator-identifier" + }, + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "main": "./lib/index.js", + "exports": { + ".": { + "types": "./lib/index.d.ts", + "default": "./lib/index.js" + }, + "./package.json": "./package.json" + }, + "devDependencies": { + "@unicode/unicode-16.0.0": "^1.0.0", + "charcodes": "^0.2.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "author": "The Babel Team (https://babel.dev/team)", + "type": "commonjs" +} \ No newline at end of file diff --git a/node_modules/@babel/parser/CHANGELOG.md b/node_modules/@babel/parser/CHANGELOG.md new file mode 100644 index 0000000..b3840ac --- /dev/null +++ b/node_modules/@babel/parser/CHANGELOG.md @@ -0,0 +1,1073 @@ +# Changelog + +> **Tags:** +> - :boom: [Breaking Change] +> - :eyeglasses: [Spec Compliance] +> - :rocket: [New Feature] +> - :bug: [Bug Fix] +> - :memo: [Documentation] +> - :house: [Internal] +> - :nail_care: [Polish] + +> Semver Policy: https://github.com/babel/babel/tree/main/packages/babel-parser#semver + +_Note: Gaps between patch versions are faulty, broken or test releases._ + +See the [Babel Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) for the pre-6.8.0 version Changelog. + +## 6.17.1 (2017-05-10) + +### :bug: Bug Fix + * Fix typo in flow spread operator error (Brian Ng) + * Fixed invalid number literal parsing ([#473](https://github.com/babel/babylon/pull/473)) (Alex Kuzmenko) + * Fix number parser ([#433](https://github.com/babel/babylon/pull/433)) (Alex Kuzmenko) + * Ensure non pattern shorthand props are checked for reserved words ([#479](https://github.com/babel/babylon/pull/479)) (Brian Ng) + * Remove jsx context when parsing arrow functions ([#475](https://github.com/babel/babylon/pull/475)) (Brian Ng) + * Allow super in class properties ([#499](https://github.com/babel/babylon/pull/499)) (Brian Ng) + * Allow flow class field to be named constructor ([#510](https://github.com/babel/babylon/pull/510)) (Brian Ng) + +## 6.17.0 (2017-04-20) + +### :bug: Bug Fix + * Cherry-pick #418 to 6.x ([#476](https://github.com/babel/babylon/pull/476)) (Sebastian McKenzie) + * Add support for invalid escapes in tagged templates ([#274](https://github.com/babel/babylon/pull/274)) (Kevin Gibbons) + * Throw error if new.target is used outside of a function ([#402](https://github.com/babel/babylon/pull/402)) (Brian Ng) + * Fix parsing of class properties ([#351](https://github.com/babel/babylon/pull/351)) (Kevin Gibbons) + * Fix parsing yield with dynamicImport ([#383](https://github.com/babel/babylon/pull/383)) (Brian Ng) + * Ensure consistent start args for parseParenItem ([#386](https://github.com/babel/babylon/pull/386)) (Brian Ng) + +## 7.0.0-beta.8 (2017-04-04) + +### New Feature +* Add support for flow type spread (#418) (Conrad Buck) +* Allow statics in flow interfaces (#427) (Brian Ng) + +### Bug Fix +* Fix predicate attachment to match flow parser (#428) (Brian Ng) +* Add extra.raw back to JSXText and JSXAttribute (#344) (Alex Rattray) +* Fix rest parameters with array and objects (#424) (Brian Ng) +* Fix number parser (#433) (Alex Kuzmenko) + +### Docs +* Fix CONTRIBUTING.md [skip ci] (#432) (Alex Kuzmenko) + +### Internal +* Use babel-register script when running babel smoke tests (#442) (Brian Ng) + +## 7.0.0-beta.7 (2017-03-22) + +### Spec Compliance +* Remove babylon plugin for template revision since it's stage-4 (#426) (Henry Zhu) + +### Bug Fix + +* Fix push-pop logic in flow (#405) (Daniel Tschinder) + +## 7.0.0-beta.6 (2017-03-21) + +### New Feature +* Add support for invalid escapes in tagged templates (#274) (Kevin Gibbons) + +### Polish +* Improves error message when super is called outside of constructor (#408) (Arshabh Kumar Agarwal) + +### Docs + +* [7.0] Moved value field in spec from ObjectMember to ObjectProperty as ObjectMethod's don't have it (#415) [skip ci] (James Browning) + +## 7.0.0-beta.5 (2017-03-21) + +### Bug Fix +* Throw error if new.target is used outside of a function (#402) (Brian Ng) +* Fix parsing of class properties (#351) (Kevin Gibbons) + +### Other + * Test runner: Detect extra property in 'actual' but not in 'expected'. (#407) (Andy) + * Optimize travis builds (#419) (Daniel Tschinder) + * Update codecov to 2.0 (#412) (Daniel Tschinder) + * Fix spec for ClassMethod: It doesn't have a function, it *is* a function. (#406) [skip ci] (Andy) + * Changed Non-existent RestPattern to RestElement which is what is actually parsed (#409) [skip ci] (James Browning) + * Upgrade flow to 0.41 (Daniel Tschinder) + * Fix watch command (#403) (Brian Ng) + * Update yarn lock (Daniel Tschinder) + * Fix watch command (#403) (Brian Ng) + * chore(package): update flow-bin to version 0.41.0 (#395) (greenkeeper[bot]) + * Add estree test for correct order of directives (Daniel Tschinder) + * Add DoExpression to spec (#364) (Alex Kuzmenko) + * Mention cloning of repository in CONTRIBUTING.md (#391) [skip ci] (Sumedh Nimkarde) + * Explain how to run only one test (#389) [skip ci] (Aaron Ang) + + ## 7.0.0-beta.4 (2017-03-01) + +* Don't consume async when checking for async func decl (#377) (Brian Ng) +* add `ranges` option [skip ci] (Henry Zhu) +* Don't parse class properties without initializers when classProperties is disabled and Flow is enabled (#300) (Andrew Levine) + +## 7.0.0-beta.3 (2017-02-28) + +- [7.0] Change RestProperty/SpreadProperty to RestElement/SpreadElement (#384) +- Merge changes from 6.x + +## 7.0.0-beta.2 (2017-02-20) + +- estree: correctly change literals in all cases (#368) (Daniel Tschinder) + +## 7.0.0-beta.1 (2017-02-20) + +- Fix negative number literal typeannotations (#366) (Daniel Tschinder) +- Update contributing with more test info [skip ci] (#355) (Brian Ng) + +## 7.0.0-beta.0 (2017-02-15) + +- Reintroduce Variance node (#333) (Daniel Tschinder) +- Rename NumericLiteralTypeAnnotation to NumberLiteralTypeAnnotation (#332) (Charles Pick) +- [7.0] Remove ForAwaitStatement, add await flag to ForOfStatement (#349) (Brandon Dail) +- chore(package): update ava to version 0.18.0 (#345) (greenkeeper[bot]) +- chore(package): update babel-plugin-istanbul to version 4.0.0 (#350) (greenkeeper[bot]) +- Change location of ObjectTypeIndexer to match flow (#228) (Daniel Tschinder) +- Rename flow AST Type ExistentialTypeParam to ExistsTypeAnnotation (#322) (Toru Kobayashi) +- Revert "Temporary rollback for erroring on trailing comma with spread (#154)" (#290) (Daniel Tschinder) +- Remove classConstructorCall plugin (#291) (Brian Ng) +- Update yarn.lock (Daniel Tschinder) +- Update cross-env to 3.x (Daniel Tschinder) +- [7.0] Remove node 0.10, 0.12 and 5 from Travis (#284) (Sergey Rubanov) +- Remove `String.fromCodePoint` shim (#279) (Mathias Bynens) + +## 6.16.1 (2017-02-23) + +### :bug: Regression + +- Revert "Fix export default async function to be FunctionDeclaration" ([#375](https://github.com/babel/babylon/pull/375)) + +Need to modify Babel for this AST node change, so moving to 7.0. + +- Revert "Don't parse class properties without initializers when classProperties plugin is disabled, and Flow is enabled" ([#376](https://github.com/babel/babylon/pull/376)) + +[react-native](https://github.com/facebook/react-native/issues/12542) broke with this so we reverted. + +## 6.16.0 (2017-02-23) + +### :rocket: New Feature + +***ESTree*** compatibility as plugin ([#277](https://github.com/babel/babylon/pull/277)) (Daniel Tschinder) + +We finally introduce a new compatibility layer for ESTree. To put babylon into ESTree-compatible mode the new plugin `estree` can be enabled. In this mode the parser will output an AST that is compliant to the specs of [ESTree](https://github.com/estree/estree/) + +We highly recommend everyone who uses babylon outside of babel to use this plugin. This will make it much easier for users to switch between different ESTree-compatible parsers. We so far tested several projects with different parsers and exchanged their parser to babylon and in nearly all cases it worked out of the box. Some other estree-compatible parsers include `acorn`, `esprima`, `espree`, `flow-parser`, etc. + +To enable `estree` mode simply add the plugin in the config: +```json +{ + "plugins": [ "estree" ] +} +``` + +If you want to migrate your project from non-ESTree mode to ESTree, have a look at our [Readme](https://github.com/babel/babylon/#output), where all deviations are mentioned. + +Add a parseExpression public method ([#213](https://github.com/babel/babylon/pull/213)) (jeromew) + +Babylon exports a new function to parse a single expression + +```js +import { parseExpression } from 'babylon'; + +const ast = parseExpression('x || y && z', options); +``` + +The returned AST will only consist of the expression. The options are the same as for `parse()` + +Add startLine option ([#346](https://github.com/babel/babylon/pull/346)) (Raphael Mu) + +A new option was added to babylon allowing to change the initial linenumber for the first line which is usually `1`. +Changing this for example to `100` will make line `1` of the input source to be marked as line `100`, line `2` as `101`, line `3` as `102`, ... + +Function predicate declaration ([#103](https://github.com/babel/babylon/pull/103)) (Panagiotis Vekris) + +Added support for function predicates which flow introduced in version 0.33.0 + +```js +declare function is_number(x: mixed): boolean %checks(typeof x === "number"); +``` + +Allow imports in declare module ([#315](https://github.com/babel/babylon/pull/315)) (Daniel Tschinder) + +Added support for imports within module declarations which flow introduced in version 0.37.0 + +```js +declare module "C" { + import type { DT } from "D"; + declare export type CT = { D: DT }; +} +``` + +### :eyeglasses: Spec Compliance + +Forbid semicolons after decorators in classes ([#352](https://github.com/babel/babylon/pull/352)) (Kevin Gibbons) + +This example now correctly throws an error when there is a semicolon after the decorator: + +```js +class A { +@a; +foo(){} +} +``` + +Keywords are not allowed as local specifier ([#307](https://github.com/babel/babylon/pull/307)) (Daniel Tschinder) + +Using keywords in imports is not allowed anymore: + +```js +import { default } from "foo"; +import { a as debugger } from "foo"; +``` + +Do not allow overwritting of primitive types ([#314](https://github.com/babel/babylon/pull/314)) (Daniel Tschinder) + +In flow it is now forbidden to overwrite the primitive types `"any"`, `"mixed"`, `"empty"`, `"bool"`, `"boolean"`, `"number"`, `"string"`, `"void"` and `"null"` with your own type declaration. + +Disallow import type { type a } from … ([#305](https://github.com/babel/babylon/pull/305)) (Daniel Tschinder) + +The following code now correctly throws an error + +```js +import type { type a } from "foo"; +``` + +Don't parse class properties without initializers when classProperties is disabled and Flow is enabled ([#300](https://github.com/babel/babylon/pull/300)) (Andrew Levine) + +Ensure that you enable the `classProperties` plugin in order to enable correct parsing of class properties. Prior to this version it was possible to parse them by enabling the `flow` plugin but this was not intended the behaviour. + +If you enable the flow plugin you can only define the type of the class properties, but not initialize them. + +Fix export default async function to be FunctionDeclaration ([#324](https://github.com/babel/babylon/pull/324)) (Daniel Tschinder) + +Parsing the following code now returns a `FunctionDeclaration` AST node instead of `FunctionExpression`. + +```js +export default async function bar() {}; +``` + +### :nail_care: Polish + +Improve error message on attempt to destructure named import ([#288](https://github.com/babel/babylon/pull/288)) (Brian Ng) + +### :bug: Bug Fix + +Fix negative number literal typeannotations ([#366](https://github.com/babel/babylon/pull/366)) (Daniel Tschinder) + +Ensure takeDecorators is called on exported class ([#358](https://github.com/babel/babylon/pull/358)) (Brian Ng) + +ESTree: correctly change literals in all cases ([#368](https://github.com/babel/babylon/pull/368)) (Daniel Tschinder) + +Correctly convert RestProperty to Assignable ([#339](https://github.com/babel/babylon/pull/339)) (Daniel Tschinder) + +Fix #321 by allowing question marks in type params ([#338](https://github.com/babel/babylon/pull/338)) (Daniel Tschinder) + +Fix #336 by correctly setting arrow-param ([#337](https://github.com/babel/babylon/pull/337)) (Daniel Tschinder) + +Fix parse error when destructuring `set` with default value ([#317](https://github.com/babel/babylon/pull/317)) (Brian Ng) + +Fix ObjectTypeCallProperty static ([#298](https://github.com/babel/babylon/pull/298)) (Dan Harper) + + +### :house: Internal + +Fix generator-method-with-computed-name spec ([#360](https://github.com/babel/babylon/pull/360)) (Alex Rattray) + +Fix flow type-parameter-declaration test with unintended semantic ([#361](https://github.com/babel/babylon/pull/361)) (Alex Rattray) + +Cleanup and splitup parser functions ([#295](https://github.com/babel/babylon/pull/295)) (Daniel Tschinder) + +chore(package): update flow-bin to version 0.38.0 ([#313](https://github.com/babel/babylon/pull/313)) (greenkeeper[bot]) + +Call inner function instead of 1:1 copy to plugin ([#294](https://github.com/babel/babylon/pull/294)) (Daniel Tschinder) + +Update eslint-config-babel to the latest version 🚀 ([#299](https://github.com/babel/babylon/pull/299)) (greenkeeper[bot]) + +Update eslint-config-babel to the latest version 🚀 ([#293](https://github.com/babel/babylon/pull/293)) (greenkeeper[bot]) + +devDeps: remove eslint-plugin-babel ([#292](https://github.com/babel/babylon/pull/292)) (Kai Cataldo) + +Correct indent eslint rule config ([#276](https://github.com/babel/babylon/pull/276)) (Daniel Tschinder) + +Fail tests that have expected.json and throws-option ([#285](https://github.com/babel/babylon/pull/285)) (Daniel Tschinder) + +### :memo: Documentation + +Update contributing with more test info [skip ci] ([#355](https://github.com/babel/babylon/pull/355)) (Brian Ng) + +Update API documentation ([#330](https://github.com/babel/babylon/pull/330)) (Timothy Gu) + +Added keywords to package.json ([#323](https://github.com/babel/babylon/pull/323)) (Dmytro) + +AST spec: fix casing of `RegExpLiteral` ([#318](https://github.com/babel/babylon/pull/318)) (Mathias Bynens) + +## 6.15.0 (2017-01-10) + +### :eyeglasses: Spec Compliance + +Add support for Flow shorthand import type ([#267](https://github.com/babel/babylon/pull/267)) (Jeff Morrison) + +This change implements flows new shorthand import syntax +and where previously you had to write this code: + +```js +import {someValue} from "blah"; +import type {someType} from "blah"; +import typeof {someOtherValue} from "blah"; +``` + +you can now write it like this: + +```js +import { + someValue, + type someType, + typeof someOtherValue, +} from "blah"; +``` + +For more information look at [this](https://github.com/facebook/flow/pull/2890) pull request. + +flow: allow leading pipes in all positions ([#256](https://github.com/babel/babylon/pull/256)) (Vladimir Kurchatkin) + +This change now allows a leading pipe everywhere types can be used: +```js +var f = (x): | 1 | 2 => 1; +``` + +Throw error when exporting non-declaration ([#241](https://github.com/babel/babylon/pull/241)) (Kai Cataldo) + +Previously babylon parsed the following exports, although they are not valid: +```js +export typeof foo; +export new Foo(); +export function() {}; +export for (;;); +export while(foo); +``` + +### :bug: Bug Fix + +Don't set inType flag when parsing property names ([#266](https://github.com/babel/babylon/pull/266)) (Vladimir Kurchatkin) + +This fixes parsing of this case: + +```js +const map = { + [age <= 17] : 'Too young' +}; +``` + +Fix source location for JSXEmptyExpression nodes (fixes #248) ([#249](https://github.com/babel/babylon/pull/249)) (James Long) + +The following case produced an invalid AST +```js +
{/* foo */}
+``` + +Use fromCodePoint to convert high value unicode entities ([#243](https://github.com/babel/babylon/pull/243)) (Ryan Duffy) + +When high value unicode entities (e.g. 💩) were used in the input source code they are now correctly encoded in the resulting AST. + +Rename folder to avoid Windows-illegal characters ([#281](https://github.com/babel/babylon/pull/281)) (Ryan Plant) + +Allow this.state.clone() when parsing decorators ([#262](https://github.com/babel/babylon/pull/262)) (Alex Rattray) + +### :house: Internal + +User external-helpers ([#254](https://github.com/babel/babylon/pull/254)) (Daniel Tschinder) + +Add watch script for dev ([#234](https://github.com/babel/babylon/pull/234)) (Kai Cataldo) + +Freeze current plugins list for "*" option, and remove from README.md ([#245](https://github.com/babel/babylon/pull/245)) (Andrew Levine) + +Prepare tests for multiple fixture runners. ([#240](https://github.com/babel/babylon/pull/240)) (Daniel Tschinder) + +Add some test coverage for decorators stage-0 plugin ([#250](https://github.com/babel/babylon/pull/250)) (Andrew Levine) + +Refactor tokenizer types file ([#263](https://github.com/babel/babylon/pull/263)) (Sven SAULEAU) + +Update eslint-config-babel to the latest version 🚀 ([#273](https://github.com/babel/babylon/pull/273)) (greenkeeper[bot]) + +chore(package): update rollup to version 0.41.0 ([#272](https://github.com/babel/babylon/pull/272)) (greenkeeper[bot]) + +chore(package): update flow-bin to version 0.37.0 ([#255](https://github.com/babel/babylon/pull/255)) (greenkeeper[bot]) + +## 6.14.1 (2016-11-17) + +### :bug: Bug Fix + +Allow `"plugins": ["*"]` ([#229](https://github.com/babel/babylon/pull/229)) (Daniel Tschinder) + +```js +{ + "plugins": ["*"] +} +``` + +Will include all parser plugins instead of specifying each one individually. Useful for tools like babel-eslint, jscodeshift, and ast-explorer. + +## 6.14.0 (2016-11-16) + +### :eyeglasses: Spec Compliance + +Throw error for reserved words `enum` and `await` ([#195](https://github.com/babel/babylon/pull/195)) (Kai Cataldo) + +[11.6.2.2 Future Reserved Words](http://www.ecma-international.org/ecma-262/6.0/#sec-future-reserved-words) + +Babylon will throw for more reserved words such as `enum` or `await` (in strict mode). + +``` +class enum {} // throws +class await {} // throws in strict mode (module) +``` + +Optional names for function types and object type indexers ([#197](https://github.com/babel/babylon/pull/197)) (Gabe Levi) + +So where you used to have to write + +```js +type A = (x: string, y: boolean) => number; +type B = (z: string) => number; +type C = { [key: string]: number }; +``` + +you can now write (with flow 0.34.0) + +```js +type A = (string, boolean) => number; +type B = string => number; +type C = { [string]: number }; +``` + +Parse flow nested array type annotations like `number[][]` ([#219](https://github.com/babel/babylon/pull/219)) (Bernhard Häussner) + +Supports these form now of specifying array types: + +```js +var a: number[][][][]; +var b: string[][]; +``` + +### :bug: Bug Fix + +Correctly eat semicolon at the end of `DelcareModuleExports` ([#223](https://github.com/babel/babylon/pull/223)) (Daniel Tschinder) + +``` +declare module "foo" { declare module.exports: number } +declare module "foo" { declare module.exports: number; } // also allowed now +``` + +### :house: Internal + + * Count Babel tests towards Babylon code coverage ([#182](https://github.com/babel/babylon/pull/182)) (Moti Zilberman) + * Fix strange line endings ([#214](https://github.com/babel/babylon/pull/214)) (Thomas Grainger) + * Add node 7 (Daniel Tschinder) + * chore(package): update flow-bin to version 0.34.0 ([#204](https://github.com/babel/babylon/pull/204)) (Greenkeeper) + +## v6.13.1 (2016-10-26) + +### :nail_care: Polish + +- Use rollup for bundling to speed up startup time ([#190](https://github.com/babel/babylon/pull/190)) ([@drewml](https://github.com/DrewML)) + +```js +const babylon = require('babylon'); +const ast = babylon.parse('var foo = "lol";'); +``` + +With that test case, there was a ~95ms savings by removing the need for node to build/traverse the dependency graph. + +**Without bundling** +![image](https://cloud.githubusercontent.com/assets/5233399/19420264/3133497e-93ad-11e6-9a6a-2da59c4f5c13.png) + +**With bundling** +![image](https://cloud.githubusercontent.com/assets/5233399/19420267/388f556e-93ad-11e6-813e-7c5c396be322.png) + +- add clean command [skip ci] ([#201](https://github.com/babel/babylon/pull/201)) (Henry Zhu) +- add ForAwaitStatement (async generator already added) [skip ci] ([#196](https://github.com/babel/babylon/pull/196)) (Henry Zhu) + +## v6.13.0 (2016-10-21) + +### :eyeglasses: Spec Compliance + +Property variance type annotations for Flow plugin ([#161](https://github.com/babel/babylon/pull/161)) (Sam Goldman) + +> See https://flowtype.org/docs/variance.html for more information + +```js +type T = { +p: T }; +interface T { -p: T }; +declare class T { +[k:K]: V }; +class T { -[k:K]: V }; +class C2 { +p: T = e }; +``` + +Raise error on duplicate definition of __proto__ ([#183](https://github.com/babel/babylon/pull/183)) (Moti Zilberman) + +```js +({ __proto__: 1, __proto__: 2 }) // Throws an error now +``` + +### :bug: Bug Fix + +Flow: Allow class properties to be named `static` ([#184](https://github.com/babel/babylon/pull/184)) (Moti Zilberman) + +```js +declare class A { + static: T; +} +``` + +Allow "async" as identifier for object literal property shorthand ([#187](https://github.com/babel/babylon/pull/187)) (Andrew Levine) + +```js +var foo = { async, bar }; +``` + +### :nail_care: Polish + +Fix flowtype and add inType to state ([#189](https://github.com/babel/babylon/pull/189)) (Daniel Tschinder) + +> This improves the performance slightly (because of hidden classes) + +### :house: Internal + +Fix .gitattributes line ending setting ([#191](https://github.com/babel/babylon/pull/191)) (Moti Zilberman) + +Increase test coverage ([#175](https://github.com/babel/babylon/pull/175) (Moti Zilberman) + +Readd missin .eslinignore for IDEs (Daniel Tschinder) + +Error on missing expected.json fixture in CI ([#188](https://github.com/babel/babylon/pull/188)) (Moti Zilberman) + +Add .gitattributes and .editorconfig for LF line endings ([#179](https://github.com/babel/babylon/pull/179)) (Moti Zilberman) + +Fixes two tests that are failing after the merge of #172 ([#177](https://github.com/babel/babylon/pull/177)) (Moti Zilberman) + +## v6.12.0 (2016-10-14) + +### :eyeglasses: Spec Compliance + +Implement import() syntax ([#163](https://github.com/babel/babylon/pull/163)) (Jordan Gensler) + +#### Dynamic Import + +- Proposal Repo: https://github.com/domenic/proposal-dynamic-import +- Championed by [@domenic](https://github.com/domenic) +- stage-2 +- [sept-28 tc39 notes](https://github.com/rwaldron/tc39-notes/blob/master/es7/2016-09/sept-28.md#113a-import) + +> This repository contains a proposal for adding a "function-like" import() module loading syntactic form to JavaScript + +```js +import(`./section-modules/${link.dataset.entryModule}.js`) +.then(module => { + module.loadPageInto(main); +}) +``` + +Add EmptyTypeAnnotation ([#171](https://github.com/babel/babylon/pull/171)) (Sam Goldman) + +#### EmptyTypeAnnotation + +Just wasn't covered before. + +```js +type T = empty; +``` + +### :bug: Bug Fix + +Fix crash when exporting with destructuring and sparse array ([#170](https://github.com/babel/babylon/pull/170)) (Jeroen Engels) + +```js +// was failing due to sparse array +export const { foo: [ ,, qux7 ] } = bar; +``` + +Allow keyword in Flow object declaration property names with type parameters ([#146](https://github.com/babel/babylon/pull/146)) (Dan Harper) + +```js +declare class X { + foobar(): void; + static foobar(): void; +} +``` + +Allow keyword in object/class property names with Flow type parameters ([#145](https://github.com/babel/babylon/pull/145)) (Dan Harper) + +```js +class Foo { + delete(item: T): T { + return item; + } +} +``` + +Allow typeAnnotations for yield expressions ([#174](https://github.com/babel/babylon/pull/174))) (Daniel Tschinder) + +```js +function *foo() { + const x = (yield 5: any); +} +``` + +### :nail_care: Polish + +Annotate more errors with expected token ([#172](https://github.com/babel/babylon/pull/172))) (Moti Zilberman) + +```js +// Unexpected token, expected ; (1:6) +{ set 1 } +``` + +### :house: Internal + +Remove kcheck ([#173](https://github.com/babel/babylon/pull/173))) (Daniel Tschinder) + +Also run flow, linting, babel tests on separate instances (add back node 0.10) + +## v6.11.6 (2016-10-12) + +### :bug: Bug Fix/Regression + +Fix crash when exporting with destructuring and sparse array ([#170](https://github.com/babel/babylon/pull/170)) (Jeroen Engels) + +```js +// was failing with `Cannot read property 'type' of null` because of null identifiers +export const { foo: [ ,, qux7 ] } = bar; +``` + +## v6.11.5 (2016-10-12) + +### :eyeglasses: Spec Compliance + +Fix: Check for duplicate named exports in exported destructuring assignments ([#144](https://github.com/babel/babylon/pull/144)) (Kai Cataldo) + +```js +// `foo` has already been exported. Exported identifiers must be unique. (2:20) +export function foo() {}; +export const { a: [{foo}] } = bar; +``` + +Fix: Check for duplicate named exports in exported rest elements/properties ([#164](https://github.com/babel/babylon/pull/164)) (Kai Cataldo) + +```js +// `foo` has already been exported. Exported identifiers must be unique. (2:22) +export const foo = 1; +export const [bar, ...foo] = baz; +``` + +### :bug: Bug Fix + +Fix: Allow identifier `async` for default param in arrow expression ([#165](https://github.com/babel/babylon/pull/165)) (Kai Cataldo) + +```js +// this is ok now +const test = ({async = true}) => {}; +``` + +### :nail_care: Polish + +Babylon will now print out the token it's expecting if there's a `SyntaxError` ([#150](https://github.com/babel/babylon/pull/150)) (Daniel Tschinder) + +```bash +# So in the case of a missing ending curly (`}`) +Module build failed: SyntaxError: Unexpected token, expected } (30:0) + 28 | } + 29 | +> 30 | + | ^ +``` + +## v6.11.4 (2016-10-03) + +Temporary rollback for erroring on trailing comma with spread (#154) (Henry Zhu) + +## v6.11.3 (2016-10-01) + +### :eyeglasses: Spec Compliance + +Add static errors for object rest (#149) ([@danez](https://github.com/danez)) + +> https://github.com/sebmarkbage/ecmascript-rest-spread + +Object rest copies the *rest* of properties from the right hand side `obj` starting from the left to right. + +```js +let { x, y, ...z } = { x: 1, y: 2, z: 3 }; +// x = 1 +// y = 2 +// z = { z: 3 } +``` + +#### New Syntax Errors: + +**SyntaxError**: The rest element has to be the last element when destructuring (1:10) +```bash +> 1 | let { ...x, y, z } = { x: 1, y: 2, z: 3}; + | ^ +# Previous behavior: +# x = { x: 1, y: 2, z: 3 } +# y = 2 +# z = 3 +``` + +Before, this was just a more verbose way of shallow copying `obj` since it doesn't actually do what you think. + +**SyntaxError**: Cannot have multiple rest elements when destructuring (1:13) + +```bash +> 1 | let { x, ...y, ...z } = { x: 1, y: 2, z: 3}; + | ^ +# Previous behavior: +# x = 1 +# y = { y: 2, z: 3 } +# z = { y: 2, z: 3 } +``` + +Before y and z would just be the same value anyway so there is no reason to need to have both. + +**SyntaxError**: A trailing comma is not permitted after the rest element (1:16) + +```js +let { x, y, ...z, } = obj; +``` + +The rationale for this is that the use case for trailing comma is that you can add something at the end without affecting the line above. Since a RestProperty always has to be the last property it doesn't make sense. + +--- + +get / set are valid property names in default assignment (#142) ([@jezell](https://github.com/jezell)) + +```js +// valid +function something({ set = null, get = null }) {} +``` + +## v6.11.2 (2016-09-23) + +### Bug Fix + +- [#139](https://github.com/babel/babylon/issues/139) Don't do the duplicate check if not an identifier (#140) @hzoo + +```js +// regression with duplicate export check +SyntaxError: ./typography.js: `undefined` has already been exported. Exported identifiers must be unique. (22:13) + 20 | + 21 | export const { rhythm } = typography; +> 22 | export const { TypographyStyle } = typography +``` + +Bail out for now, and make a change to account for destructuring in the next release. + +## 6.11.1 (2016-09-22) + +### Bug Fix +- [#137](https://github.com/babel/babylon/pull/137) - Fix a regression with duplicate exports - it was erroring on all keys in `Object.prototype`. @danez + +```javascript +export toString from './toString'; +``` + +```bash +`toString` has already been exported. Exported identifiers must be unique. (1:7) +> 1 | export toString from './toString'; + | ^ + 2 | +``` + +## 6.11.0 (2016-09-22) + +### Spec Compliance (will break CI) + +- Disallow duplicate named exports ([#107](https://github.com/babel/babylon/pull/107)) @kaicataldo + +```js +// Only one default export allowed per module. (2:9) +export default function() {}; +export { foo as default }; + +// Only one default export allowed per module. (2:0) +export default {}; +export default function() {}; + +// `Foo` has already been exported. Exported identifiers must be unique. (2:0) +export { Foo }; +export class Foo {}; +``` + +### New Feature (Syntax) + +- Add support for computed class property names ([#121](https://github.com/babel/babylon/pull/121)) @motiz88 + +```js +// AST +interface ClassProperty <: Node { + type: "ClassProperty"; + key: Identifier; + value: Expression; + computed: boolean; // added +} +``` + +```js +// with "plugins": ["classProperties"] +class Foo { + [x] + ['y'] +} + +class Bar { + [p] + [m] () {} +} + ``` + +### Bug Fix + +- Fix `static` property falling through in the declare class Flow AST ([#135](https://github.com/babel/babylon/pull/135)) @danharper + +```js +declare class X { + a: number; + static b: number; // static + c: number; // this was being marked as static in the AST as well +} +``` + +### Polish + +- Rephrase "assigning/binding to rvalue" errors to include context ([#119](https://github.com/babel/babylon/pull/119)) @motiz88 + +```js +// Used to error with: +// SyntaxError: Assigning to rvalue (1:0) + +// Now: +// Invalid left-hand side in assignment expression (1:0) +3 = 4 + +// Invalid left-hand side in for-in statement (1:5) +for (+i in {}); +``` + +### Internal + +- Fix call to `this.parseMaybeAssign` with correct arguments ([#133](https://github.com/babel/babylon/pull/133)) @danez +- Add semver note to changelog ([#131](https://github.com/babel/babylon/pull/131)) @hzoo + +## 6.10.0 (2016-09-19) + +> We plan to include some spec compliance bugs in patch versions. An example was the multiple default exports issue. + +### Spec Compliance + +* Implement ES2016 check for simple parameter list in strict mode ([#106](https://github.com/babel/babylon/pull/106)) (Timothy Gu) + +> It is a Syntax Error if ContainsUseStrict of FunctionBody is true and IsSimpleParameterList of FormalParameters is false. https://tc39.github.io/ecma262/2016/#sec-function-definitions-static-semantics-early-errors + +More Context: [tc39-notes](https://github.com/rwaldron/tc39-notes/blob/master/es7/2015-07/july-29.md#611-the-scope-of-use-strict-with-respect-to-destructuring-in-parameter-lists) + +For example: + +```js +// this errors because it uses destructuring and default parameters +// in a function with a "use strict" directive +function a([ option1, option2 ] = []) { + "use strict"; +} + ``` + +The solution would be to use a top level "use strict" or to remove the destructuring or default parameters when using a function + "use strict" or to. + +### New Feature + +* Exact object type annotations for Flow plugin ([#104](https://github.com/babel/babylon/pull/104)) (Basil Hosmer) + +Added to flow in https://github.com/facebook/flow/commit/c710c40aa2a115435098d6c0dfeaadb023cd39b8 + +Looks like: + +```js +var a : {| x: number, y: string |} = { x: 0, y: 'foo' }; +``` + +### Bug Fixes + +* Include `typeParameter` location in `ArrowFunctionExpression` ([#126](https://github.com/babel/babylon/pull/126)) (Daniel Tschinder) +* Error on invalid flow type annotation with default assignment ([#122](https://github.com/babel/babylon/pull/122)) (Dan Harper) +* Fix Flow return types on arrow functions ([#124](https://github.com/babel/babylon/pull/124)) (Dan Harper) + +### Misc + +* Add tests for export extensions ([#127](https://github.com/babel/babylon/pull/127)) (Daniel Tschinder) +* Fix Contributing guidelines [skip ci] (Daniel Tschinder) + +## 6.9.2 (2016-09-09) + +The only change is to remove the `babel-runtime` dependency by compiling with Babel's ES2015 loose mode. So using babylon standalone should be smaller. + +## 6.9.1 (2016-08-23) + +This release contains mainly small bugfixes but also updates babylons default mode to es2017. The features for `exponentiationOperator`, `asyncFunctions` and `trailingFunctionCommas` which previously needed to be activated via plugin are now enabled by default and the plugins are now no-ops. + +### Bug Fixes + +- Fix issues with default object params in async functions ([#96](https://github.com/babel/babylon/pull/96)) @danez +- Fix issues with flow-types and async function ([#95](https://github.com/babel/babylon/pull/95)) @danez +- Fix arrow functions with destructuring, types & default value ([#94](https://github.com/babel/babylon/pull/94)) @danharper +- Fix declare class with qualified type identifier ([#97](https://github.com/babel/babylon/pull/97)) @danez +- Remove exponentiationOperator, asyncFunctions, trailingFunctionCommas plugins and enable them by default ([#98](https://github.com/babel/babylon/pull/98)) @danez + +## 6.9.0 (2016-08-16) + +### New syntax support + +- Add JSX spread children ([#42](https://github.com/babel/babylon/pull/42)) @calebmer + +(Be aware that React is not going to support this syntax) + +```js +
+ {...todos.map(todo => )} +
+``` + +- Add support for declare module.exports ([#72](https://github.com/babel/babylon/pull/72)) @danez + +```js +declare module "foo" { + declare module.exports: {} +} +``` + +### New Features + +- If supplied, attach filename property to comment node loc. ([#80](https://github.com/babel/babylon/pull/80)) @divmain +- Add identifier name to node loc field ([#90](https://github.com/babel/babylon/pull/90)) @kittens + +### Bug Fixes + +- Fix exponential operator to behave according to spec ([#75](https://github.com/babel/babylon/pull/75)) @danez +- Fix lookahead to not add comments to arrays which are not cloned ([#76](https://github.com/babel/babylon/pull/76)) @danez +- Fix accidental fall-through in Flow type parsing. ([#82](https://github.com/babel/babylon/pull/82)) @xiemaisi +- Only allow declares inside declare module ([#73](https://github.com/babel/babylon/pull/73)) @danez +- Small fix for parsing type parameter declarations ([#83](https://github.com/babel/babylon/pull/83)) @gabelevi +- Fix arrow param locations with flow types ([#57](https://github.com/babel/babylon/pull/57)) @danez +- Fixes SyntaxError position with flow optional type ([#65](https://github.com/babel/babylon/pull/65)) @danez + +### Internal + +- Add codecoverage to tests @danez +- Fix tests to not save expected output if we expect the test to fail @danez +- Make a shallow clone of babel for testing @danez +- chore(package): update cross-env to version 2.0.0 ([#77](https://github.com/babel/babylon/pull/77)) @greenkeeperio-bot +- chore(package): update ava to version 0.16.0 ([#86](https://github.com/babel/babylon/pull/86)) @greenkeeperio-bot +- chore(package): update babel-plugin-istanbul to version 2.0.0 ([#89](https://github.com/babel/babylon/pull/89)) @greenkeeperio-bot +- chore(package): update nyc to version 8.0.0 ([#88](https://github.com/babel/babylon/pull/88)) @greenkeeperio-bot + +## 6.8.4 (2016-07-06) + +### Bug Fixes + +- Fix the location of params, when flow and default value used ([#68](https://github.com/babel/babylon/pull/68)) @danez + +## 6.8.3 (2016-07-02) + +### Bug Fixes + +- Fix performance regression introduced in 6.8.2 with conditionals ([#63](https://github.com/babel/babylon/pull/63)) @danez + +## 6.8.2 (2016-06-24) + +### Bug Fixes + +- Fix parse error with yielding jsx elements in generators `function* it() { yield ; }` ([#31](https://github.com/babel/babylon/pull/31)) @eldereal +- When cloning nodes do not clone its comments ([#24](https://github.com/babel/babylon/pull/24)) @danez +- Fix parse errors when using arrow functions with an spread element and return type `(...props): void => {}` ([#10](https://github.com/babel/babylon/pull/10)) @danez +- Fix leading comments added from previous node ([#23](https://github.com/babel/babylon/pull/23)) @danez +- Fix parse errors with flow's optional arguments `(arg?) => {}` ([#19](https://github.com/babel/babylon/pull/19)) @danez +- Support negative numeric type literals @kittens +- Remove line terminator restriction after await keyword @kittens +- Remove grouped type arrow restriction as it seems flow no longer has it @kittens +- Fix parse error with generic methods that have the name `get` or `set` `class foo { get() {} }` ([#55](https://github.com/babel/babylon/pull/55)) @vkurchatkin +- Fix parse error with arrow functions that have flow type parameter declarations `(x: T): T => x;` ([#54](https://github.com/babel/babylon/pull/54)) @gabelevi + +### Documentation + +- Document AST differences from ESTree ([#41](https://github.com/babel/babylon/pull/41)) @nene +- Move ast spec from babel/babel ([#46](https://github.com/babel/babylon/pull/46)) @hzoo + +### Internal + +- Enable skipped tests ([#16](https://github.com/babel/babylon/pull/16)) @danez +- Add script to test latest version of babylon with babel ([#21](https://github.com/babel/babylon/pull/21)) @danez +- Upgrade test runner ava @kittens +- Add missing generate-identifier-regex script @kittens +- Rename parser context types @kittens +- Add node v6 to travis testing @hzoo +- Update to Unicode v9 ([#45](https://github.com/babel/babylon/pull/45)) @mathiasbynens + +## 6.8.1 (2016-06-06) + +### New Feature + +- Parse type parameter declarations with defaults like `type Foo = T` + +### Bug Fixes +- Type parameter declarations need 1 or more type parameters. +- The existential type `*` is not a valid type parameter. +- The existential type `*` is a primary type + +### Spec Compliance +- The param list for type parameter declarations now consists of `TypeParameter` nodes +- New `TypeParameter` AST Node (replaces using the `Identifier` node before) + +``` +interface TypeParameter <: Node { + bound: TypeAnnotation; + default: TypeAnnotation; + name: string; + variance: "plus" | "minus"; +} +``` + +## 6.8.0 (2016-05-02) + +#### New Feature + +##### Parse Method Parameter Decorators ([#12](https://github.com/babel/babylon/pull/12)) + +> [Method Parameter Decorators](https://goo.gl/8MmCMG) is now a TC39 [stage 0 proposal](https://github.com/tc39/ecma262/blob/master/stage0.md). + +Examples: + +```js +class Foo { + constructor(@foo() x, @bar({ a: 123 }) @baz() y) {} +} + +export default function func(@foo() x, @bar({ a: 123 }) @baz() y) {} + +var obj = { + method(@foo() x, @bar({ a: 123 }) @baz() y) {} +}; +``` + +##### Parse for-await statements (w/ `asyncGenerators` plugin) ([#17](https://github.com/babel/babylon/pull/17)) + +There is also a new node type, `ForAwaitStatement`. + +> [Async generators and for-await](https://github.com/tc39/proposal-async-iteration) are now a [stage 2 proposal](https://github.com/tc39/ecma262#current-proposals). + +Example: + +```js +async function f() { + for await (let x of y); +} +``` diff --git a/node_modules/@babel/parser/LICENSE b/node_modules/@babel/parser/LICENSE new file mode 100644 index 0000000..d4c7fc5 --- /dev/null +++ b/node_modules/@babel/parser/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2012-2014 by various contributors (see AUTHORS) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@babel/parser/README.md b/node_modules/@babel/parser/README.md new file mode 100644 index 0000000..a9463e8 --- /dev/null +++ b/node_modules/@babel/parser/README.md @@ -0,0 +1,19 @@ +# @babel/parser + +> A JavaScript parser + +See our website [@babel/parser](https://babeljs.io/docs/babel-parser) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20parser%22+is%3Aopen) associated with this package. + +## Install + +Using npm: + +```sh +npm install --save-dev @babel/parser +``` + +or using yarn: + +```sh +yarn add @babel/parser --dev +``` diff --git a/node_modules/@babel/parser/bin/babel-parser.js b/node_modules/@babel/parser/bin/babel-parser.js new file mode 100644 index 0000000..4808c5e --- /dev/null +++ b/node_modules/@babel/parser/bin/babel-parser.js @@ -0,0 +1,15 @@ +#!/usr/bin/env node +/* eslint-disable no-var, unicorn/prefer-node-protocol */ + +var parser = require(".."); +var fs = require("fs"); + +var filename = process.argv[2]; +if (!filename) { + console.error("no filename specified"); +} else { + var file = fs.readFileSync(filename, "utf8"); + var ast = parser.parse(file); + + console.log(JSON.stringify(ast, null, " ")); +} diff --git a/node_modules/@babel/parser/lib/index.js b/node_modules/@babel/parser/lib/index.js new file mode 100644 index 0000000..41c94cd --- /dev/null +++ b/node_modules/@babel/parser/lib/index.js @@ -0,0 +1,14586 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +function _objectWithoutPropertiesLoose(r, e) { + if (null == r) return {}; + var t = {}; + for (var n in r) if ({}.hasOwnProperty.call(r, n)) { + if (-1 !== e.indexOf(n)) continue; + t[n] = r[n]; + } + return t; +} +class Position { + constructor(line, col, index) { + this.line = void 0; + this.column = void 0; + this.index = void 0; + this.line = line; + this.column = col; + this.index = index; + } +} +class SourceLocation { + constructor(start, end) { + this.start = void 0; + this.end = void 0; + this.filename = void 0; + this.identifierName = void 0; + this.start = start; + this.end = end; + } +} +function createPositionWithColumnOffset(position, columnOffset) { + const { + line, + column, + index + } = position; + return new Position(line, column + columnOffset, index + columnOffset); +} +const code = "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"; +var ModuleErrors = { + ImportMetaOutsideModule: { + message: `import.meta may appear only with 'sourceType: "module"'`, + code + }, + ImportOutsideModule: { + message: `'import' and 'export' may appear only with 'sourceType: "module"'`, + code + } +}; +const NodeDescriptions = { + ArrayPattern: "array destructuring pattern", + AssignmentExpression: "assignment expression", + AssignmentPattern: "assignment expression", + ArrowFunctionExpression: "arrow function expression", + ConditionalExpression: "conditional expression", + CatchClause: "catch clause", + ForOfStatement: "for-of statement", + ForInStatement: "for-in statement", + ForStatement: "for-loop", + FormalParameters: "function parameter list", + Identifier: "identifier", + ImportSpecifier: "import specifier", + ImportDefaultSpecifier: "import default specifier", + ImportNamespaceSpecifier: "import namespace specifier", + ObjectPattern: "object destructuring pattern", + ParenthesizedExpression: "parenthesized expression", + RestElement: "rest element", + UpdateExpression: { + true: "prefix operation", + false: "postfix operation" + }, + VariableDeclarator: "variable declaration", + YieldExpression: "yield expression" +}; +const toNodeDescription = node => node.type === "UpdateExpression" ? NodeDescriptions.UpdateExpression[`${node.prefix}`] : NodeDescriptions[node.type]; +var StandardErrors = { + AccessorIsGenerator: ({ + kind + }) => `A ${kind}ter cannot be a generator.`, + ArgumentsInClass: "'arguments' is only allowed in functions and class methods.", + AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.", + AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.", + AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.", + AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.", + AwaitUsingNotInAsyncContext: "'await using' is only allowed within async functions and at the top levels of modules.", + AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.", + BadGetterArity: "A 'get' accessor must not have any formal parameters.", + BadSetterArity: "A 'set' accessor must have exactly one formal parameter.", + BadSetterRestParameter: "A 'set' accessor function argument must not be a rest parameter.", + ConstructorClassField: "Classes may not have a field named 'constructor'.", + ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.", + ConstructorIsAccessor: "Class constructor may not be an accessor.", + ConstructorIsAsync: "Constructor can't be an async function.", + ConstructorIsGenerator: "Constructor can't be a generator.", + DeclarationMissingInitializer: ({ + kind + }) => `Missing initializer in ${kind} declaration.`, + DecoratorArgumentsOutsideParentheses: "Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.", + DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.", + DecoratorsBeforeAfterExport: "Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.", + DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?", + DecoratorExportClass: "Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.", + DecoratorSemicolon: "Decorators must not be followed by a semicolon.", + DecoratorStaticBlock: "Decorators can't be used with a static block.", + DeferImportRequiresNamespace: 'Only `import defer * as x from "./module"` is valid.', + DeletePrivateField: "Deleting a private field is not allowed.", + DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.", + DuplicateConstructor: "Duplicate constructor in the same class.", + DuplicateDefaultExport: "Only one default export allowed per module.", + DuplicateExport: ({ + exportName + }) => `\`${exportName}\` has already been exported. Exported identifiers must be unique.`, + DuplicateProto: "Redefinition of __proto__ property.", + DuplicateRegExpFlags: "Duplicate regular expression flag.", + ElementAfterRest: "Rest element must be last element.", + EscapedCharNotAnIdentifier: "Invalid Unicode escape.", + ExportBindingIsString: ({ + localName, + exportName + }) => `A string literal cannot be used as an exported binding without \`from\`.\n- Did you mean \`export { '${localName}' as '${exportName}' } from 'some-module'\`?`, + ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.", + ForInOfLoopInitializer: ({ + type + }) => `'${type === "ForInStatement" ? "for-in" : "for-of"}' loop variable declaration may not have an initializer.`, + ForInUsing: "For-in loop may not start with 'using' declaration.", + ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.", + ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.", + GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.", + IllegalBreakContinue: ({ + type + }) => `Unsyntactic ${type === "BreakStatement" ? "break" : "continue"}.`, + IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.", + IllegalReturn: "'return' outside of function.", + ImportAttributesUseAssert: "The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.", + ImportBindingIsString: ({ + importName + }) => `A string literal cannot be used as an imported binding.\n- Did you mean \`import { "${importName}" as foo }\`?`, + ImportCallArity: `\`import()\` requires exactly one or two arguments.`, + ImportCallNotNewExpression: "Cannot use new with import(...).", + ImportCallSpreadArgument: "`...` is not allowed in `import()`.", + ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.", + ImportReflectionHasAssertion: "`import module x` cannot have assertions.", + ImportReflectionNotBinding: 'Only `import module x from "./module"` is valid.', + IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.", + InvalidBigIntLiteral: "Invalid BigIntLiteral.", + InvalidCodePoint: "Code point out of bounds.", + InvalidCoverDiscardElement: "'void' must be followed by an expression when not used in a binding position.", + InvalidCoverInitializedName: "Invalid shorthand property initializer.", + InvalidDecimal: "Invalid decimal.", + InvalidDigit: ({ + radix + }) => `Expected number in radix ${radix}.`, + InvalidEscapeSequence: "Bad character escape sequence.", + InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.", + InvalidEscapedReservedWord: ({ + reservedWord + }) => `Escape sequence in keyword ${reservedWord}.`, + InvalidIdentifier: ({ + identifierName + }) => `Invalid identifier ${identifierName}.`, + InvalidLhs: ({ + ancestor + }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`, + InvalidLhsBinding: ({ + ancestor + }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`, + InvalidLhsOptionalChaining: ({ + ancestor + }) => `Invalid optional chaining in the left-hand side of ${toNodeDescription(ancestor)}.`, + InvalidNumber: "Invalid number.", + InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.", + InvalidOrUnexpectedToken: ({ + unexpected + }) => `Unexpected character '${unexpected}'.`, + InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.", + InvalidPrivateFieldResolution: ({ + identifierName + }) => `Private name #${identifierName} is not defined.`, + InvalidPropertyBindingPattern: "Binding member expression.", + InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.", + InvalidRestAssignmentPattern: "Invalid rest operator's argument.", + LabelRedeclaration: ({ + labelName + }) => `Label '${labelName}' is already declared.`, + LetInLexicalBinding: "'let' is disallowed as a lexically bound name.", + LineTerminatorBeforeArrow: "No line break is allowed before '=>'.", + MalformedRegExpFlags: "Invalid regular expression flag.", + MissingClassName: "A class name is required.", + MissingEqInAssignment: "Only '=' operator can be used for specifying default value.", + MissingSemicolon: "Missing semicolon.", + MissingPlugin: ({ + missingPlugin + }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, + MissingOneOfPlugins: ({ + missingPlugin + }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, + MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.", + MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.", + ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.", + ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.", + ModuleAttributesWithDuplicateKeys: ({ + key + }) => `Duplicate key "${key}" is not allowed in module attributes.`, + ModuleExportNameHasLoneSurrogate: ({ + surrogateCharCode + }) => `An export name cannot include a lone surrogate, found '\\u${surrogateCharCode.toString(16)}'.`, + ModuleExportUndefined: ({ + localName + }) => `Export '${localName}' is not defined.`, + MultipleDefaultsInSwitch: "Multiple default clauses.", + NewlineAfterThrow: "Illegal newline after throw.", + NoCatchOrFinally: "Missing catch or finally clause.", + NumberIdentifier: "Identifier directly after number.", + NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.", + ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.", + OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.", + OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.", + OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.", + ParamDupe: "Argument name clash.", + PatternHasAccessor: "Object pattern can't contain getter or setter.", + PatternHasMethod: "Object pattern can't contain methods.", + PrivateInExpectedIn: ({ + identifierName + }) => `Private names are only allowed in property accesses (\`obj.#${identifierName}\`) or in \`in\` expressions (\`#${identifierName} in obj\`).`, + PrivateNameRedeclaration: ({ + identifierName + }) => `Duplicate private name #${identifierName}.`, + RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + RecordNoProto: "'__proto__' is not allowed in Record expressions.", + RestTrailingComma: "Unexpected trailing comma after rest element.", + SloppyFunction: "In non-strict mode code, functions can only be declared at top level or inside a block.", + SloppyFunctionAnnexB: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.", + SourcePhaseImportRequiresDefault: 'Only `import source x from "./module"` is valid.', + StaticPrototype: "Classes may not have static property named prototype.", + SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?", + SuperPrivateField: "Private fields can't be accessed on super.", + TrailingDecorator: "Decorators must be attached to a class element.", + TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.", + UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.', + UnexpectedDigitAfterHash: "Unexpected digit after hash token.", + UnexpectedImportExport: "'import' and 'export' may only appear at the top level.", + UnexpectedKeyword: ({ + keyword + }) => `Unexpected keyword '${keyword}'.`, + UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.", + UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.", + UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.", + UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.", + UnexpectedPrivateField: "Unexpected private name.", + UnexpectedReservedWord: ({ + reservedWord + }) => `Unexpected reserved word '${reservedWord}'.`, + UnexpectedSuper: "'super' is only allowed in object methods and classes.", + UnexpectedToken: ({ + expected, + unexpected + }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : ""}${expected ? `, expected "${expected}"` : ""}`, + UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.", + UnexpectedUsingDeclaration: "Using declaration cannot appear in the top level when source type is `script` or in the bare case statement.", + UnexpectedVoidPattern: "Unexpected void binding.", + UnsupportedBind: "Binding should be performed on object property.", + UnsupportedDecoratorExport: "A decorated export must export a class declaration.", + UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.", + UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.", + UnsupportedMetaProperty: ({ + target, + onlyValidPropertyName + }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`, + UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.", + UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.", + UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).", + UnterminatedComment: "Unterminated comment.", + UnterminatedRegExp: "Unterminated regular expression.", + UnterminatedString: "Unterminated string constant.", + UnterminatedTemplate: "Unterminated template.", + UsingDeclarationExport: "Using declaration cannot be exported.", + UsingDeclarationHasBindingPattern: "Using declaration cannot have destructuring patterns.", + VarRedeclaration: ({ + identifierName + }) => `Identifier '${identifierName}' has already been declared.`, + VoidPatternCatchClauseParam: "A void binding can not be the catch clause parameter. Use `try { ... } catch { ... }` if you want to discard the caught error.", + VoidPatternInitializer: "A void binding may not have an initializer.", + YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.", + YieldInParameter: "Yield expression is not allowed in formal parameters.", + YieldNotInGeneratorFunction: "'yield' is only allowed within generator functions.", + ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0." +}; +var StrictModeErrors = { + StrictDelete: "Deleting local variable in strict mode.", + StrictEvalArguments: ({ + referenceName + }) => `Assigning to '${referenceName}' in strict mode.`, + StrictEvalArgumentsBinding: ({ + bindingName + }) => `Binding '${bindingName}' in strict mode.`, + StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.", + StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.", + StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.", + StrictWith: "'with' in strict mode." +}; +var ParseExpressionErrors = { + ParseExpressionEmptyInput: "Unexpected parseExpression() input: The input is empty or contains only comments.", + ParseExpressionExpectsEOF: ({ + unexpected + }) => `Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \`${String.fromCodePoint(unexpected)}\`.` +}; +const UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]); +var PipelineOperatorErrors = Object.assign({ + PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.", + PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', + PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.", + PipeTopicUnconfiguredToken: ({ + token + }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${token}" }.`, + PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.", + PipeUnparenthesizedBody: ({ + type + }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({ + type + })}; please wrap it in parentheses.` +}, { + PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.', + PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.", + PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.", + PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.", + PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.", + PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.' +}); +const _excluded = ["message"]; +function defineHidden(obj, key, value) { + Object.defineProperty(obj, key, { + enumerable: false, + configurable: true, + value + }); +} +function toParseErrorConstructor({ + toMessage, + code, + reasonCode, + syntaxPlugin +}) { + const hasMissingPlugin = reasonCode === "MissingPlugin" || reasonCode === "MissingOneOfPlugins"; + { + const oldReasonCodes = { + AccessorCannotDeclareThisParameter: "AccesorCannotDeclareThisParameter", + AccessorCannotHaveTypeParameters: "AccesorCannotHaveTypeParameters", + ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference", + SetAccessorCannotHaveOptionalParameter: "SetAccesorCannotHaveOptionalParameter", + SetAccessorCannotHaveRestParameter: "SetAccesorCannotHaveRestParameter", + SetAccessorCannotHaveReturnType: "SetAccesorCannotHaveReturnType" + }; + if (oldReasonCodes[reasonCode]) { + reasonCode = oldReasonCodes[reasonCode]; + } + } + return function constructor(loc, details) { + const error = new SyntaxError(); + error.code = code; + error.reasonCode = reasonCode; + error.loc = loc; + error.pos = loc.index; + error.syntaxPlugin = syntaxPlugin; + if (hasMissingPlugin) { + error.missingPlugin = details.missingPlugin; + } + defineHidden(error, "clone", function clone(overrides = {}) { + var _overrides$loc; + const { + line, + column, + index + } = (_overrides$loc = overrides.loc) != null ? _overrides$loc : loc; + return constructor(new Position(line, column, index), Object.assign({}, details, overrides.details)); + }); + defineHidden(error, "details", details); + Object.defineProperty(error, "message", { + configurable: true, + get() { + const message = `${toMessage(details)} (${loc.line}:${loc.column})`; + this.message = message; + return message; + }, + set(value) { + Object.defineProperty(this, "message", { + value, + writable: true + }); + } + }); + return error; + }; +} +function ParseErrorEnum(argument, syntaxPlugin) { + if (Array.isArray(argument)) { + return parseErrorTemplates => ParseErrorEnum(parseErrorTemplates, argument[0]); + } + const ParseErrorConstructors = {}; + for (const reasonCode of Object.keys(argument)) { + const template = argument[reasonCode]; + const _ref = typeof template === "string" ? { + message: () => template + } : typeof template === "function" ? { + message: template + } : template, + { + message + } = _ref, + rest = _objectWithoutPropertiesLoose(_ref, _excluded); + const toMessage = typeof message === "string" ? () => message : message; + ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({ + code: "BABEL_PARSER_SYNTAX_ERROR", + reasonCode, + toMessage + }, syntaxPlugin ? { + syntaxPlugin + } : {}, rest)); + } + return ParseErrorConstructors; +} +const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum(ParseExpressionErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors)); +function createDefaultOptions() { + return { + sourceType: "script", + sourceFilename: undefined, + startIndex: 0, + startColumn: 0, + startLine: 1, + allowAwaitOutsideFunction: false, + allowReturnOutsideFunction: false, + allowNewTargetOutsideFunction: false, + allowImportExportEverywhere: false, + allowSuperOutsideMethod: false, + allowUndeclaredExports: false, + allowYieldOutsideFunction: false, + plugins: [], + strictMode: null, + ranges: false, + tokens: false, + createImportExpressions: false, + createParenthesizedExpressions: false, + errorRecovery: false, + attachComment: true, + annexB: true + }; +} +function getOptions(opts) { + const options = createDefaultOptions(); + if (opts == null) { + return options; + } + if (opts.annexB != null && opts.annexB !== false) { + throw new Error("The `annexB` option can only be set to `false`."); + } + for (const key of Object.keys(options)) { + if (opts[key] != null) options[key] = opts[key]; + } + if (options.startLine === 1) { + if (opts.startIndex == null && options.startColumn > 0) { + options.startIndex = options.startColumn; + } else if (opts.startColumn == null && options.startIndex > 0) { + options.startColumn = options.startIndex; + } + } else if (opts.startColumn == null || opts.startIndex == null) { + if (opts.startIndex != null) { + throw new Error("With a `startLine > 1` you must also specify `startIndex` and `startColumn`."); + } + } + if (options.sourceType === "commonjs") { + if (opts.allowAwaitOutsideFunction != null) { + throw new Error("The `allowAwaitOutsideFunction` option cannot be used with `sourceType: 'commonjs'`."); + } + if (opts.allowReturnOutsideFunction != null) { + throw new Error("`sourceType: 'commonjs'` implies `allowReturnOutsideFunction: true`, please remove the `allowReturnOutsideFunction` option or use `sourceType: 'script'`."); + } + if (opts.allowNewTargetOutsideFunction != null) { + throw new Error("`sourceType: 'commonjs'` implies `allowNewTargetOutsideFunction: true`, please remove the `allowNewTargetOutsideFunction` option or use `sourceType: 'script'`."); + } + } + return options; +} +const { + defineProperty +} = Object; +const toUnenumerable = (object, key) => { + if (object) { + defineProperty(object, key, { + enumerable: false, + value: object[key] + }); + } +}; +function toESTreeLocation(node) { + toUnenumerable(node.loc.start, "index"); + toUnenumerable(node.loc.end, "index"); + return node; +} +var estree = superClass => class ESTreeParserMixin extends superClass { + parse() { + const file = toESTreeLocation(super.parse()); + if (this.optionFlags & 256) { + file.tokens = file.tokens.map(toESTreeLocation); + } + return file; + } + parseRegExpLiteral({ + pattern, + flags + }) { + let regex = null; + try { + regex = new RegExp(pattern, flags); + } catch (_) {} + const node = this.estreeParseLiteral(regex); + node.regex = { + pattern, + flags + }; + return node; + } + parseBigIntLiteral(value) { + let bigInt; + try { + bigInt = BigInt(value); + } catch (_unused) { + bigInt = null; + } + const node = this.estreeParseLiteral(bigInt); + node.bigint = String(node.value || value); + return node; + } + parseDecimalLiteral(value) { + const decimal = null; + const node = this.estreeParseLiteral(decimal); + node.decimal = String(node.value || value); + return node; + } + estreeParseLiteral(value) { + return this.parseLiteral(value, "Literal"); + } + parseStringLiteral(value) { + return this.estreeParseLiteral(value); + } + parseNumericLiteral(value) { + return this.estreeParseLiteral(value); + } + parseNullLiteral() { + return this.estreeParseLiteral(null); + } + parseBooleanLiteral(value) { + return this.estreeParseLiteral(value); + } + estreeParseChainExpression(node, endLoc) { + const chain = this.startNodeAtNode(node); + chain.expression = node; + return this.finishNodeAt(chain, "ChainExpression", endLoc); + } + directiveToStmt(directive) { + const expression = directive.value; + delete directive.value; + this.castNodeTo(expression, "Literal"); + expression.raw = expression.extra.raw; + expression.value = expression.extra.expressionValue; + const stmt = this.castNodeTo(directive, "ExpressionStatement"); + stmt.expression = expression; + stmt.directive = expression.extra.rawValue; + delete expression.extra; + return stmt; + } + fillOptionalPropertiesForTSESLint(node) {} + cloneEstreeStringLiteral(node) { + const { + start, + end, + loc, + range, + raw, + value + } = node; + const cloned = Object.create(node.constructor.prototype); + cloned.type = "Literal"; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.raw = raw; + cloned.value = value; + return cloned; + } + initFunction(node, isAsync) { + super.initFunction(node, isAsync); + node.expression = false; + } + checkDeclaration(node) { + if (node != null && this.isObjectProperty(node)) { + this.checkDeclaration(node.value); + } else { + super.checkDeclaration(node); + } + } + getObjectOrClassMethodParams(method) { + return method.value.params; + } + isValidDirective(stmt) { + var _stmt$expression$extr; + return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized); + } + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse); + const directiveStatements = node.directives.map(d => this.directiveToStmt(d)); + node.body = directiveStatements.concat(node.body); + delete node.directives; + } + parsePrivateName() { + const node = super.parsePrivateName(); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return node; + } + } + return this.convertPrivateNameToPrivateIdentifier(node); + } + convertPrivateNameToPrivateIdentifier(node) { + const name = super.getPrivateNameSV(node); + node = node; + delete node.id; + node.name = name; + return this.castNodeTo(node, "PrivateIdentifier"); + } + isPrivateName(node) { + { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.isPrivateName(node); + } + } + return node.type === "PrivateIdentifier"; + } + getPrivateNameSV(node) { + { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.getPrivateNameSV(node); + } + } + return node.name; + } + parseLiteral(value, type) { + const node = super.parseLiteral(value, type); + node.raw = node.extra.raw; + delete node.extra; + return node; + } + parseFunctionBody(node, allowExpression, isMethod = false) { + super.parseFunctionBody(node, allowExpression, isMethod); + node.expression = node.body.type !== "BlockStatement"; + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + let funcNode = this.startNode(); + funcNode.kind = node.kind; + funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + delete funcNode.kind; + const { + typeParameters + } = node; + if (typeParameters) { + delete node.typeParameters; + funcNode.typeParameters = typeParameters; + this.resetStartLocationFromNode(funcNode, typeParameters); + } + const valueNode = this.castNodeTo(funcNode, "FunctionExpression"); + node.value = valueNode; + if (type === "ClassPrivateMethod") { + node.computed = false; + } + if (type === "ObjectMethod") { + if (node.kind === "method") { + node.kind = "init"; + } + node.shorthand = false; + return this.finishNode(node, "Property"); + } else { + return this.finishNode(node, "MethodDefinition"); + } + } + nameIsConstructor(key) { + if (key.type === "Literal") return key.value === "constructor"; + return super.nameIsConstructor(key); + } + parseClassProperty(...args) { + const propertyNode = super.parseClassProperty(...args); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return propertyNode; + } + } + { + this.castNodeTo(propertyNode, "PropertyDefinition"); + } + return propertyNode; + } + parseClassPrivateProperty(...args) { + const propertyNode = super.parseClassPrivateProperty(...args); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return propertyNode; + } + } + { + this.castNodeTo(propertyNode, "PropertyDefinition"); + } + propertyNode.computed = false; + return propertyNode; + } + parseClassAccessorProperty(node) { + const accessorPropertyNode = super.parseClassAccessorProperty(node); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return accessorPropertyNode; + } + } + if (accessorPropertyNode.abstract && this.hasPlugin("typescript")) { + delete accessorPropertyNode.abstract; + this.castNodeTo(accessorPropertyNode, "TSAbstractAccessorProperty"); + } else { + this.castNodeTo(accessorPropertyNode, "AccessorProperty"); + } + return accessorPropertyNode; + } + parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { + const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); + if (node) { + node.kind = "init"; + this.castNodeTo(node, "Property"); + } + return node; + } + finishObjectProperty(node) { + node.kind = "init"; + return this.finishNode(node, "Property"); + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + return type === "Property" ? "value" : super.isValidLVal(type, isUnparenthesizedInAssign, binding); + } + isAssignable(node, isBinding) { + if (node != null && this.isObjectProperty(node)) { + return this.isAssignable(node.value, isBinding); + } + return super.isAssignable(node, isBinding); + } + toAssignable(node, isLHS = false) { + if (node != null && this.isObjectProperty(node)) { + const { + key, + value + } = node; + if (this.isPrivateName(key)) { + this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); + } + this.toAssignable(value, isLHS); + } else { + super.toAssignable(node, isLHS); + } + } + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.type === "Property" && (prop.kind === "get" || prop.kind === "set")) { + this.raise(Errors.PatternHasAccessor, prop.key); + } else if (prop.type === "Property" && prop.method) { + this.raise(Errors.PatternHasMethod, prop.key); + } else { + super.toAssignableObjectExpressionProp(prop, isLast, isLHS); + } + } + finishCallExpression(unfinished, optional) { + const node = super.finishCallExpression(unfinished, optional); + if (node.callee.type === "Import") { + var _ref, _ref2; + this.castNodeTo(node, "ImportExpression"); + node.source = node.arguments[0]; + node.options = (_ref = node.arguments[1]) != null ? _ref : null; + node.attributes = (_ref2 = node.arguments[1]) != null ? _ref2 : null; + delete node.arguments; + delete node.callee; + } else if (node.type === "OptionalCallExpression") { + this.castNodeTo(node, "CallExpression"); + } else { + node.optional = false; + } + return node; + } + toReferencedArguments(node) { + if (node.type === "ImportExpression") { + return; + } + super.toReferencedArguments(node); + } + parseExport(unfinished, decorators) { + const exportStartLoc = this.state.lastTokStartLoc; + const node = super.parseExport(unfinished, decorators); + switch (node.type) { + case "ExportAllDeclaration": + node.exported = null; + break; + case "ExportNamedDeclaration": + if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") { + this.castNodeTo(node, "ExportAllDeclaration"); + node.exported = node.specifiers[0].exported; + delete node.specifiers; + } + case "ExportDefaultDeclaration": + { + var _declaration$decorato; + const { + declaration + } = node; + if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) { + this.resetStartLocation(node, exportStartLoc); + } + } + break; + } + return node; + } + stopParseSubscript(base, state) { + const node = super.stopParseSubscript(base, state); + if (state.optionalChainMember) { + return this.estreeParseChainExpression(node, base.loc.end); + } + return node; + } + parseMember(base, startLoc, state, computed, optional) { + const node = super.parseMember(base, startLoc, state, computed, optional); + if (node.type === "OptionalMemberExpression") { + this.castNodeTo(node, "MemberExpression"); + } else { + node.optional = false; + } + return node; + } + isOptionalMemberExpression(node) { + if (node.type === "ChainExpression") { + return node.expression.type === "MemberExpression"; + } + return super.isOptionalMemberExpression(node); + } + hasPropertyAsPrivateName(node) { + if (node.type === "ChainExpression") { + node = node.expression; + } + return super.hasPropertyAsPrivateName(node); + } + isObjectProperty(node) { + return node.type === "Property" && node.kind === "init" && !node.method; + } + isObjectMethod(node) { + return node.type === "Property" && (node.method || node.kind === "get" || node.kind === "set"); + } + castNodeTo(node, type) { + const result = super.castNodeTo(node, type); + this.fillOptionalPropertiesForTSESLint(result); + return result; + } + cloneIdentifier(node) { + const cloned = super.cloneIdentifier(node); + this.fillOptionalPropertiesForTSESLint(cloned); + return cloned; + } + cloneStringLiteral(node) { + if (node.type === "Literal") { + return this.cloneEstreeStringLiteral(node); + } + return super.cloneStringLiteral(node); + } + finishNodeAt(node, type, endLoc) { + return toESTreeLocation(super.finishNodeAt(node, type, endLoc)); + } + finishNode(node, type) { + const result = super.finishNode(node, type); + this.fillOptionalPropertiesForTSESLint(result); + return result; + } + resetStartLocation(node, startLoc) { + super.resetStartLocation(node, startLoc); + toESTreeLocation(node); + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { + super.resetEndLocation(node, endLoc); + toESTreeLocation(node); + } +}; +class TokContext { + constructor(token, preserveSpace) { + this.token = void 0; + this.preserveSpace = void 0; + this.token = token; + this.preserveSpace = !!preserveSpace; + } +} +const types = { + brace: new TokContext("{"), + j_oTag: new TokContext("...", true) +}; +{ + types.template = new TokContext("`", true); +} +const beforeExpr = true; +const startsExpr = true; +const isLoop = true; +const isAssign = true; +const prefix = true; +const postfix = true; +class ExportedTokenType { + constructor(label, conf = {}) { + this.label = void 0; + this.keyword = void 0; + this.beforeExpr = void 0; + this.startsExpr = void 0; + this.rightAssociative = void 0; + this.isLoop = void 0; + this.isAssign = void 0; + this.prefix = void 0; + this.postfix = void 0; + this.binop = void 0; + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.rightAssociative = !!conf.rightAssociative; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop != null ? conf.binop : null; + { + this.updateContext = null; + } + } +} +const keywords$1 = new Map(); +function createKeyword(name, options = {}) { + options.keyword = name; + const token = createToken(name, options); + keywords$1.set(name, token); + return token; +} +function createBinop(name, binop) { + return createToken(name, { + beforeExpr, + binop + }); +} +let tokenTypeCounter = -1; +const tokenTypes = []; +const tokenLabels = []; +const tokenBinops = []; +const tokenBeforeExprs = []; +const tokenStartsExprs = []; +const tokenPrefixes = []; +function createToken(name, options = {}) { + var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix; + ++tokenTypeCounter; + tokenLabels.push(name); + tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1); + tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false); + tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false); + tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false); + tokenTypes.push(new ExportedTokenType(name, options)); + return tokenTypeCounter; +} +function createKeywordLike(name, options = {}) { + var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2; + ++tokenTypeCounter; + keywords$1.set(name, tokenTypeCounter); + tokenLabels.push(name); + tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1); + tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false); + tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false); + tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false); + tokenTypes.push(new ExportedTokenType("name", options)); + return tokenTypeCounter; +} +const tt = { + bracketL: createToken("[", { + beforeExpr, + startsExpr + }), + bracketHashL: createToken("#[", { + beforeExpr, + startsExpr + }), + bracketBarL: createToken("[|", { + beforeExpr, + startsExpr + }), + bracketR: createToken("]"), + bracketBarR: createToken("|]"), + braceL: createToken("{", { + beforeExpr, + startsExpr + }), + braceBarL: createToken("{|", { + beforeExpr, + startsExpr + }), + braceHashL: createToken("#{", { + beforeExpr, + startsExpr + }), + braceR: createToken("}"), + braceBarR: createToken("|}"), + parenL: createToken("(", { + beforeExpr, + startsExpr + }), + parenR: createToken(")"), + comma: createToken(",", { + beforeExpr + }), + semi: createToken(";", { + beforeExpr + }), + colon: createToken(":", { + beforeExpr + }), + doubleColon: createToken("::", { + beforeExpr + }), + dot: createToken("."), + question: createToken("?", { + beforeExpr + }), + questionDot: createToken("?."), + arrow: createToken("=>", { + beforeExpr + }), + template: createToken("template"), + ellipsis: createToken("...", { + beforeExpr + }), + backQuote: createToken("`", { + startsExpr + }), + dollarBraceL: createToken("${", { + beforeExpr, + startsExpr + }), + templateTail: createToken("...`", { + startsExpr + }), + templateNonTail: createToken("...${", { + beforeExpr, + startsExpr + }), + at: createToken("@"), + hash: createToken("#", { + startsExpr + }), + interpreterDirective: createToken("#!..."), + eq: createToken("=", { + beforeExpr, + isAssign + }), + assign: createToken("_=", { + beforeExpr, + isAssign + }), + slashAssign: createToken("_=", { + beforeExpr, + isAssign + }), + xorAssign: createToken("_=", { + beforeExpr, + isAssign + }), + moduloAssign: createToken("_=", { + beforeExpr, + isAssign + }), + incDec: createToken("++/--", { + prefix, + postfix, + startsExpr + }), + bang: createToken("!", { + beforeExpr, + prefix, + startsExpr + }), + tilde: createToken("~", { + beforeExpr, + prefix, + startsExpr + }), + doubleCaret: createToken("^^", { + startsExpr + }), + doubleAt: createToken("@@", { + startsExpr + }), + pipeline: createBinop("|>", 0), + nullishCoalescing: createBinop("??", 1), + logicalOR: createBinop("||", 1), + logicalAND: createBinop("&&", 2), + bitwiseOR: createBinop("|", 3), + bitwiseXOR: createBinop("^", 4), + bitwiseAND: createBinop("&", 5), + equality: createBinop("==/!=/===/!==", 6), + lt: createBinop("/<=/>=", 7), + gt: createBinop("/<=/>=", 7), + relational: createBinop("/<=/>=", 7), + bitShift: createBinop("<>/>>>", 8), + bitShiftL: createBinop("<>/>>>", 8), + bitShiftR: createBinop("<>/>>>", 8), + plusMin: createToken("+/-", { + beforeExpr, + binop: 9, + prefix, + startsExpr + }), + modulo: createToken("%", { + binop: 10, + startsExpr + }), + star: createToken("*", { + binop: 10 + }), + slash: createBinop("/", 10), + exponent: createToken("**", { + beforeExpr, + binop: 11, + rightAssociative: true + }), + _in: createKeyword("in", { + beforeExpr, + binop: 7 + }), + _instanceof: createKeyword("instanceof", { + beforeExpr, + binop: 7 + }), + _break: createKeyword("break"), + _case: createKeyword("case", { + beforeExpr + }), + _catch: createKeyword("catch"), + _continue: createKeyword("continue"), + _debugger: createKeyword("debugger"), + _default: createKeyword("default", { + beforeExpr + }), + _else: createKeyword("else", { + beforeExpr + }), + _finally: createKeyword("finally"), + _function: createKeyword("function", { + startsExpr + }), + _if: createKeyword("if"), + _return: createKeyword("return", { + beforeExpr + }), + _switch: createKeyword("switch"), + _throw: createKeyword("throw", { + beforeExpr, + prefix, + startsExpr + }), + _try: createKeyword("try"), + _var: createKeyword("var"), + _const: createKeyword("const"), + _with: createKeyword("with"), + _new: createKeyword("new", { + beforeExpr, + startsExpr + }), + _this: createKeyword("this", { + startsExpr + }), + _super: createKeyword("super", { + startsExpr + }), + _class: createKeyword("class", { + startsExpr + }), + _extends: createKeyword("extends", { + beforeExpr + }), + _export: createKeyword("export"), + _import: createKeyword("import", { + startsExpr + }), + _null: createKeyword("null", { + startsExpr + }), + _true: createKeyword("true", { + startsExpr + }), + _false: createKeyword("false", { + startsExpr + }), + _typeof: createKeyword("typeof", { + beforeExpr, + prefix, + startsExpr + }), + _void: createKeyword("void", { + beforeExpr, + prefix, + startsExpr + }), + _delete: createKeyword("delete", { + beforeExpr, + prefix, + startsExpr + }), + _do: createKeyword("do", { + isLoop, + beforeExpr + }), + _for: createKeyword("for", { + isLoop + }), + _while: createKeyword("while", { + isLoop + }), + _as: createKeywordLike("as", { + startsExpr + }), + _assert: createKeywordLike("assert", { + startsExpr + }), + _async: createKeywordLike("async", { + startsExpr + }), + _await: createKeywordLike("await", { + startsExpr + }), + _defer: createKeywordLike("defer", { + startsExpr + }), + _from: createKeywordLike("from", { + startsExpr + }), + _get: createKeywordLike("get", { + startsExpr + }), + _let: createKeywordLike("let", { + startsExpr + }), + _meta: createKeywordLike("meta", { + startsExpr + }), + _of: createKeywordLike("of", { + startsExpr + }), + _sent: createKeywordLike("sent", { + startsExpr + }), + _set: createKeywordLike("set", { + startsExpr + }), + _source: createKeywordLike("source", { + startsExpr + }), + _static: createKeywordLike("static", { + startsExpr + }), + _using: createKeywordLike("using", { + startsExpr + }), + _yield: createKeywordLike("yield", { + startsExpr + }), + _asserts: createKeywordLike("asserts", { + startsExpr + }), + _checks: createKeywordLike("checks", { + startsExpr + }), + _exports: createKeywordLike("exports", { + startsExpr + }), + _global: createKeywordLike("global", { + startsExpr + }), + _implements: createKeywordLike("implements", { + startsExpr + }), + _intrinsic: createKeywordLike("intrinsic", { + startsExpr + }), + _infer: createKeywordLike("infer", { + startsExpr + }), + _is: createKeywordLike("is", { + startsExpr + }), + _mixins: createKeywordLike("mixins", { + startsExpr + }), + _proto: createKeywordLike("proto", { + startsExpr + }), + _require: createKeywordLike("require", { + startsExpr + }), + _satisfies: createKeywordLike("satisfies", { + startsExpr + }), + _keyof: createKeywordLike("keyof", { + startsExpr + }), + _readonly: createKeywordLike("readonly", { + startsExpr + }), + _unique: createKeywordLike("unique", { + startsExpr + }), + _abstract: createKeywordLike("abstract", { + startsExpr + }), + _declare: createKeywordLike("declare", { + startsExpr + }), + _enum: createKeywordLike("enum", { + startsExpr + }), + _module: createKeywordLike("module", { + startsExpr + }), + _namespace: createKeywordLike("namespace", { + startsExpr + }), + _interface: createKeywordLike("interface", { + startsExpr + }), + _type: createKeywordLike("type", { + startsExpr + }), + _opaque: createKeywordLike("opaque", { + startsExpr + }), + name: createToken("name", { + startsExpr + }), + placeholder: createToken("%%", { + startsExpr + }), + string: createToken("string", { + startsExpr + }), + num: createToken("num", { + startsExpr + }), + bigint: createToken("bigint", { + startsExpr + }), + decimal: createToken("decimal", { + startsExpr + }), + regexp: createToken("regexp", { + startsExpr + }), + privateName: createToken("#name", { + startsExpr + }), + eof: createToken("eof"), + jsxName: createToken("jsxName"), + jsxText: createToken("jsxText", { + beforeExpr + }), + jsxTagStart: createToken("jsxTagStart", { + startsExpr + }), + jsxTagEnd: createToken("jsxTagEnd") +}; +function tokenIsIdentifier(token) { + return token >= 93 && token <= 133; +} +function tokenKeywordOrIdentifierIsKeyword(token) { + return token <= 92; +} +function tokenIsKeywordOrIdentifier(token) { + return token >= 58 && token <= 133; +} +function tokenIsLiteralPropertyName(token) { + return token >= 58 && token <= 137; +} +function tokenComesBeforeExpression(token) { + return tokenBeforeExprs[token]; +} +function tokenCanStartExpression(token) { + return tokenStartsExprs[token]; +} +function tokenIsAssignment(token) { + return token >= 29 && token <= 33; +} +function tokenIsFlowInterfaceOrTypeOrOpaque(token) { + return token >= 129 && token <= 131; +} +function tokenIsLoop(token) { + return token >= 90 && token <= 92; +} +function tokenIsKeyword(token) { + return token >= 58 && token <= 92; +} +function tokenIsOperator(token) { + return token >= 39 && token <= 59; +} +function tokenIsPostfix(token) { + return token === 34; +} +function tokenIsPrefix(token) { + return tokenPrefixes[token]; +} +function tokenIsTSTypeOperator(token) { + return token >= 121 && token <= 123; +} +function tokenIsTSDeclarationStart(token) { + return token >= 124 && token <= 130; +} +function tokenLabelName(token) { + return tokenLabels[token]; +} +function tokenOperatorPrecedence(token) { + return tokenBinops[token]; +} +function tokenIsRightAssociative(token) { + return token === 57; +} +function tokenIsTemplate(token) { + return token >= 24 && token <= 25; +} +function getExportedToken(token) { + return tokenTypes[token]; +} +{ + tokenTypes[8].updateContext = context => { + context.pop(); + }; + tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => { + context.push(types.brace); + }; + tokenTypes[22].updateContext = context => { + if (context[context.length - 1] === types.template) { + context.pop(); + } else { + context.push(types.template); + } + }; + tokenTypes[143].updateContext = context => { + context.push(types.j_expr, types.j_oTag); + }; +} +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; +function isInAstralSet(code, set) { + let pos = 0x10000; + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + return false; +} +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes); +} +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} +const reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] +}; +const keywords = new Set(reservedWords.keyword); +const reservedWordsStrictSet = new Set(reservedWords.strict); +const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); +function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; +} +function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); +} +function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); +} +function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); +} +function isKeyword(word) { + return keywords.has(word); +} +function isIteratorStart(current, next, next2) { + return current === 64 && next === 64 && isIdentifierStart(next2); +} +const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]); +function canBeReservedWord(word) { + return reservedWordLikeSet.has(word); +} +class Scope { + constructor(flags) { + this.flags = 0; + this.names = new Map(); + this.firstLexicalName = ""; + this.flags = flags; + } +} +class ScopeHandler { + constructor(parser, inModule) { + this.parser = void 0; + this.scopeStack = []; + this.inModule = void 0; + this.undefinedExports = new Map(); + this.parser = parser; + this.inModule = inModule; + } + get inTopLevel() { + return (this.currentScope().flags & 1) > 0; + } + get inFunction() { + return (this.currentVarScopeFlags() & 2) > 0; + } + get allowSuper() { + return (this.currentThisScopeFlags() & 16) > 0; + } + get allowDirectSuper() { + return (this.currentThisScopeFlags() & 32) > 0; + } + get allowNewTarget() { + return (this.currentThisScopeFlags() & 512) > 0; + } + get inClass() { + return (this.currentThisScopeFlags() & 64) > 0; + } + get inClassAndNotInNonArrowFunction() { + const flags = this.currentThisScopeFlags(); + return (flags & 64) > 0 && (flags & 2) === 0; + } + get inStaticBlock() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & 128) { + return true; + } + if (flags & (1667 | 64)) { + return false; + } + } + } + get inNonArrowFunction() { + return (this.currentThisScopeFlags() & 2) > 0; + } + get inBareCaseStatement() { + return (this.currentScope().flags & 256) > 0; + } + get treatFunctionsAsVar() { + return this.treatFunctionsAsVarInScope(this.currentScope()); + } + createScope(flags) { + return new Scope(flags); + } + enter(flags) { + this.scopeStack.push(this.createScope(flags)); + } + exit() { + const scope = this.scopeStack.pop(); + return scope.flags; + } + treatFunctionsAsVarInScope(scope) { + return !!(scope.flags & (2 | 128) || !this.parser.inModule && scope.flags & 1); + } + declareName(name, bindingType, loc) { + let scope = this.currentScope(); + if (bindingType & 8 || bindingType & 16) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + let type = scope.names.get(name) || 0; + if (bindingType & 16) { + type = type | 4; + } else { + if (!scope.firstLexicalName) { + scope.firstLexicalName = name; + } + type = type | 2; + } + scope.names.set(name, type); + if (bindingType & 8) { + this.maybeExportDefined(scope, name); + } + } else if (bindingType & 4) { + for (let i = this.scopeStack.length - 1; i >= 0; --i) { + scope = this.scopeStack[i]; + this.checkRedeclarationInScope(scope, name, bindingType, loc); + scope.names.set(name, (scope.names.get(name) || 0) | 1); + this.maybeExportDefined(scope, name); + if (scope.flags & 1667) break; + } + } + if (this.parser.inModule && scope.flags & 1) { + this.undefinedExports.delete(name); + } + } + maybeExportDefined(scope, name) { + if (this.parser.inModule && scope.flags & 1) { + this.undefinedExports.delete(name); + } + } + checkRedeclarationInScope(scope, name, bindingType, loc) { + if (this.isRedeclaredInScope(scope, name, bindingType)) { + this.parser.raise(Errors.VarRedeclaration, loc, { + identifierName: name + }); + } + } + isRedeclaredInScope(scope, name, bindingType) { + if (!(bindingType & 1)) return false; + if (bindingType & 8) { + return scope.names.has(name); + } + const type = scope.names.get(name); + if (bindingType & 16) { + return (type & 2) > 0 || !this.treatFunctionsAsVarInScope(scope) && (type & 1) > 0; + } + return (type & 2) > 0 && !(scope.flags & 8 && scope.firstLexicalName === name) || !this.treatFunctionsAsVarInScope(scope) && (type & 4) > 0; + } + checkLocalExport(id) { + const { + name + } = id; + const topLevelScope = this.scopeStack[0]; + if (!topLevelScope.names.has(name)) { + this.undefinedExports.set(name, id.loc.start); + } + } + currentScope() { + return this.scopeStack[this.scopeStack.length - 1]; + } + currentVarScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & 1667) { + return flags; + } + } + } + currentThisScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & (1667 | 64) && !(flags & 4)) { + return flags; + } + } + } +} +class FlowScope extends Scope { + constructor(...args) { + super(...args); + this.declareFunctions = new Set(); + } +} +class FlowScopeHandler extends ScopeHandler { + createScope(flags) { + return new FlowScope(flags); + } + declareName(name, bindingType, loc) { + const scope = this.currentScope(); + if (bindingType & 2048) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + scope.declareFunctions.add(name); + return; + } + super.declareName(name, bindingType, loc); + } + isRedeclaredInScope(scope, name, bindingType) { + if (super.isRedeclaredInScope(scope, name, bindingType)) return true; + if (bindingType & 2048 && !scope.declareFunctions.has(name)) { + const type = scope.names.get(name); + return (type & 4) > 0 || (type & 2) > 0; + } + return false; + } + checkLocalExport(id) { + if (!this.scopeStack[0].declareFunctions.has(id.name)) { + super.checkLocalExport(id); + } + } +} +const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]); +const FlowErrors = ParseErrorEnum`flow`({ + AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.", + AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.", + AssignReservedType: ({ + reservedType + }) => `Cannot overwrite reserved type ${reservedType}.`, + DeclareClassElement: "The `declare` modifier can only appear on class fields.", + DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.", + DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.", + EnumBooleanMemberNotInitialized: ({ + memberName, + enumName + }) => `Boolean enum members need to be initialized. Use either \`${memberName} = true,\` or \`${memberName} = false,\` in enum \`${enumName}\`.`, + EnumDuplicateMemberName: ({ + memberName, + enumName + }) => `Enum member names need to be unique, but the name \`${memberName}\` has already been used before in enum \`${enumName}\`.`, + EnumInconsistentMemberValues: ({ + enumName + }) => `Enum \`${enumName}\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`, + EnumInvalidExplicitType: ({ + invalidEnumType, + enumName + }) => `Enum type \`${invalidEnumType}\` is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, + EnumInvalidExplicitTypeUnknownSupplied: ({ + enumName + }) => `Supplied enum type is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, + EnumInvalidMemberInitializerPrimaryType: ({ + enumName, + memberName, + explicitType + }) => `Enum \`${enumName}\` has type \`${explicitType}\`, so the initializer of \`${memberName}\` needs to be a ${explicitType} literal.`, + EnumInvalidMemberInitializerSymbolType: ({ + enumName, + memberName + }) => `Symbol enum members cannot be initialized. Use \`${memberName},\` in enum \`${enumName}\`.`, + EnumInvalidMemberInitializerUnknownType: ({ + enumName, + memberName + }) => `The enum member initializer for \`${memberName}\` needs to be a literal (either a boolean, number, or string) in enum \`${enumName}\`.`, + EnumInvalidMemberName: ({ + enumName, + memberName, + suggestion + }) => `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \`${memberName}\`, consider using \`${suggestion}\`, in enum \`${enumName}\`.`, + EnumNumberMemberNotInitialized: ({ + enumName, + memberName + }) => `Number enum members need to be initialized, e.g. \`${memberName} = 1\` in enum \`${enumName}\`.`, + EnumStringMemberInconsistentlyInitialized: ({ + enumName + }) => `String enum members need to consistently either all use initializers, or use no initializers, in enum \`${enumName}\`.`, + GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.", + ImportReflectionHasImportType: "An `import module` declaration can not use `type` or `typeof` keyword.", + ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.", + InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.", + InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.", + InexactVariance: "Explicit inexact syntax cannot have variance.", + InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.", + MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.", + NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.", + NestedFlowComment: "Cannot have a flow comment inside another flow comment.", + PatternIsOptional: Object.assign({ + message: "A binding pattern parameter cannot be optional in an implementation signature." + }, { + reasonCode: "OptionalBindingPattern" + }), + SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.", + SpreadVariance: "Spread properties cannot have variance.", + ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.", + ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.", + ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.", + ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.", + ThisParamNoDefault: "The `this` parameter may not have a default value.", + TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.", + UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.", + UnexpectedReservedType: ({ + reservedType + }) => `Unexpected reserved type ${reservedType}.`, + UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.", + UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.", + UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.", + UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".', + UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.", + UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of ` async () => {}`, use `async () => {}`.", + UnsupportedDeclareExportKind: ({ + unsupportedExportKind, + suggestion + }) => `\`declare export ${unsupportedExportKind}\` is not supported. Use \`${suggestion}\` instead.`, + UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.", + UnterminatedFlowComment: "Unterminated flow-comment." +}); +function isEsModuleType(bodyElement) { + return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration"); +} +function hasTypeImportKind(node) { + return node.importKind === "type" || node.importKind === "typeof"; +} +const exportSuggestions = { + const: "declare export var", + let: "declare export var", + type: "export type", + interface: "export interface" +}; +function partition(list, test) { + const list1 = []; + const list2 = []; + for (let i = 0; i < list.length; i++) { + (test(list[i], i, list) ? list1 : list2).push(list[i]); + } + return [list1, list2]; +} +const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/; +var flow = superClass => class FlowParserMixin extends superClass { + constructor(...args) { + super(...args); + this.flowPragma = undefined; + } + getScopeHandler() { + return FlowScopeHandler; + } + shouldParseTypes() { + return this.getPluginOption("flow", "all") || this.flowPragma === "flow"; + } + finishToken(type, val) { + if (type !== 134 && type !== 13 && type !== 28) { + if (this.flowPragma === undefined) { + this.flowPragma = null; + } + } + super.finishToken(type, val); + } + addComment(comment) { + if (this.flowPragma === undefined) { + const matches = FLOW_PRAGMA_REGEX.exec(comment.value); + if (!matches) ;else if (matches[1] === "flow") { + this.flowPragma = "flow"; + } else if (matches[1] === "noflow") { + this.flowPragma = "noflow"; + } else { + throw new Error("Unexpected flow pragma"); + } + } + super.addComment(comment); + } + flowParseTypeInitialiser(tok) { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(tok || 14); + const type = this.flowParseType(); + this.state.inType = oldInType; + return type; + } + flowParsePredicate() { + const node = this.startNode(); + const moduloLoc = this.state.startLoc; + this.next(); + this.expectContextual(110); + if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) { + this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc); + } + if (this.eat(10)) { + node.value = super.parseExpression(); + this.expect(11); + return this.finishNode(node, "DeclaredPredicate"); + } else { + return this.finishNode(node, "InferredPredicate"); + } + } + flowParseTypeAndPredicateInitialiser() { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(14); + let type = null; + let predicate = null; + if (this.match(54)) { + this.state.inType = oldInType; + predicate = this.flowParsePredicate(); + } else { + type = this.flowParseType(); + this.state.inType = oldInType; + if (this.match(54)) { + predicate = this.flowParsePredicate(); + } + } + return [type, predicate]; + } + flowParseDeclareClass(node) { + this.next(); + this.flowParseInterfaceish(node, true); + return this.finishNode(node, "DeclareClass"); + } + flowParseDeclareFunction(node) { + this.next(); + const id = node.id = this.parseIdentifier(); + const typeNode = this.startNode(); + const typeContainer = this.startNode(); + if (this.match(47)) { + typeNode.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + typeNode.typeParameters = null; + } + this.expect(10); + const tmp = this.flowParseFunctionTypeParams(); + typeNode.params = tmp.params; + typeNode.rest = tmp.rest; + typeNode.this = tmp._this; + this.expect(11); + [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation"); + id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation"); + this.resetEndLocation(id); + this.semicolon(); + this.scope.declareName(node.id.name, 2048, node.id.loc.start); + return this.finishNode(node, "DeclareFunction"); + } + flowParseDeclare(node, insideModule) { + if (this.match(80)) { + return this.flowParseDeclareClass(node); + } else if (this.match(68)) { + return this.flowParseDeclareFunction(node); + } else if (this.match(74)) { + return this.flowParseDeclareVariable(node); + } else if (this.eatContextual(127)) { + if (this.match(16)) { + return this.flowParseDeclareModuleExports(node); + } else { + if (insideModule) { + this.raise(FlowErrors.NestedDeclareModule, this.state.lastTokStartLoc); + } + return this.flowParseDeclareModule(node); + } + } else if (this.isContextual(130)) { + return this.flowParseDeclareTypeAlias(node); + } else if (this.isContextual(131)) { + return this.flowParseDeclareOpaqueType(node); + } else if (this.isContextual(129)) { + return this.flowParseDeclareInterface(node); + } else if (this.match(82)) { + return this.flowParseDeclareExportDeclaration(node, insideModule); + } else { + this.unexpected(); + } + } + flowParseDeclareVariable(node) { + this.next(); + node.id = this.flowParseTypeAnnotatableIdentifier(true); + this.scope.declareName(node.id.name, 5, node.id.loc.start); + this.semicolon(); + return this.finishNode(node, "DeclareVariable"); + } + flowParseDeclareModule(node) { + this.scope.enter(0); + if (this.match(134)) { + node.id = super.parseExprAtom(); + } else { + node.id = this.parseIdentifier(); + } + const bodyNode = node.body = this.startNode(); + const body = bodyNode.body = []; + this.expect(5); + while (!this.match(8)) { + let bodyNode = this.startNode(); + if (this.match(83)) { + this.next(); + if (!this.isContextual(130) && !this.match(87)) { + this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, this.state.lastTokStartLoc); + } + super.parseImport(bodyNode); + } else { + this.expectContextual(125, FlowErrors.UnsupportedStatementInDeclareModule); + bodyNode = this.flowParseDeclare(bodyNode, true); + } + body.push(bodyNode); + } + this.scope.exit(); + this.expect(8); + this.finishNode(bodyNode, "BlockStatement"); + let kind = null; + let hasModuleExport = false; + body.forEach(bodyElement => { + if (isEsModuleType(bodyElement)) { + if (kind === "CommonJS") { + this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement); + } + kind = "ES"; + } else if (bodyElement.type === "DeclareModuleExports") { + if (hasModuleExport) { + this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement); + } + if (kind === "ES") { + this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement); + } + kind = "CommonJS"; + hasModuleExport = true; + } + }); + node.kind = kind || "CommonJS"; + return this.finishNode(node, "DeclareModule"); + } + flowParseDeclareExportDeclaration(node, insideModule) { + this.expect(82); + if (this.eat(65)) { + if (this.match(68) || this.match(80)) { + node.declaration = this.flowParseDeclare(this.startNode()); + } else { + node.declaration = this.flowParseType(); + this.semicolon(); + } + node.default = true; + return this.finishNode(node, "DeclareExportDeclaration"); + } else { + if (this.match(75) || this.isLet() || (this.isContextual(130) || this.isContextual(129)) && !insideModule) { + const label = this.state.value; + throw this.raise(FlowErrors.UnsupportedDeclareExportKind, this.state.startLoc, { + unsupportedExportKind: label, + suggestion: exportSuggestions[label] + }); + } + if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(131)) { + node.declaration = this.flowParseDeclare(this.startNode()); + node.default = false; + return this.finishNode(node, "DeclareExportDeclaration"); + } else if (this.match(55) || this.match(5) || this.isContextual(129) || this.isContextual(130) || this.isContextual(131)) { + node = this.parseExport(node, null); + if (node.type === "ExportNamedDeclaration") { + node.default = false; + delete node.exportKind; + return this.castNodeTo(node, "DeclareExportDeclaration"); + } else { + return this.castNodeTo(node, "DeclareExportAllDeclaration"); + } + } + } + this.unexpected(); + } + flowParseDeclareModuleExports(node) { + this.next(); + this.expectContextual(111); + node.typeAnnotation = this.flowParseTypeAnnotation(); + this.semicolon(); + return this.finishNode(node, "DeclareModuleExports"); + } + flowParseDeclareTypeAlias(node) { + this.next(); + const finished = this.flowParseTypeAlias(node); + this.castNodeTo(finished, "DeclareTypeAlias"); + return finished; + } + flowParseDeclareOpaqueType(node) { + this.next(); + const finished = this.flowParseOpaqueType(node, true); + this.castNodeTo(finished, "DeclareOpaqueType"); + return finished; + } + flowParseDeclareInterface(node) { + this.next(); + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "DeclareInterface"); + } + flowParseInterfaceish(node, isClass) { + node.id = this.flowParseRestrictedIdentifier(!isClass, true); + this.scope.declareName(node.id.name, isClass ? 17 : 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.extends = []; + if (this.eat(81)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (!isClass && this.eat(12)); + } + if (isClass) { + node.implements = []; + node.mixins = []; + if (this.eatContextual(117)) { + do { + node.mixins.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + if (this.eatContextual(113)) { + do { + node.implements.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + } + node.body = this.flowParseObjectType({ + allowStatic: isClass, + allowExact: false, + allowSpread: false, + allowProto: isClass, + allowInexact: false + }); + } + flowParseInterfaceExtends() { + const node = this.startNode(); + node.id = this.flowParseQualifiedTypeIdentifier(); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + return this.finishNode(node, "InterfaceExtends"); + } + flowParseInterface(node) { + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "InterfaceDeclaration"); + } + checkNotUnderscore(word) { + if (word === "_") { + this.raise(FlowErrors.UnexpectedReservedUnderscore, this.state.startLoc); + } + } + checkReservedType(word, startLoc, declaration) { + if (!reservedTypes.has(word)) return; + this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, startLoc, { + reservedType: word + }); + } + flowParseRestrictedIdentifier(liberal, declaration) { + this.checkReservedType(this.state.value, this.state.startLoc, declaration); + return this.parseIdentifier(liberal); + } + flowParseTypeAlias(node) { + node.id = this.flowParseRestrictedIdentifier(false, true); + this.scope.declareName(node.id.name, 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.right = this.flowParseTypeInitialiser(29); + this.semicolon(); + return this.finishNode(node, "TypeAlias"); + } + flowParseOpaqueType(node, declare) { + this.expectContextual(130); + node.id = this.flowParseRestrictedIdentifier(true, true); + this.scope.declareName(node.id.name, 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.supertype = null; + if (this.match(14)) { + node.supertype = this.flowParseTypeInitialiser(14); + } + node.impltype = null; + if (!declare) { + node.impltype = this.flowParseTypeInitialiser(29); + } + this.semicolon(); + return this.finishNode(node, "OpaqueType"); + } + flowParseTypeParameter(requireDefault = false) { + const nodeStartLoc = this.state.startLoc; + const node = this.startNode(); + const variance = this.flowParseVariance(); + const ident = this.flowParseTypeAnnotatableIdentifier(); + node.name = ident.name; + node.variance = variance; + node.bound = ident.typeAnnotation; + if (this.match(29)) { + this.eat(29); + node.default = this.flowParseType(); + } else { + if (requireDefault) { + this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc); + } + } + return this.finishNode(node, "TypeParameter"); + } + flowParseTypeParameterDeclaration() { + const oldInType = this.state.inType; + const node = this.startNode(); + node.params = []; + this.state.inType = true; + if (this.match(47) || this.match(143)) { + this.next(); + } else { + this.unexpected(); + } + let defaultRequired = false; + do { + const typeParameter = this.flowParseTypeParameter(defaultRequired); + node.params.push(typeParameter); + if (typeParameter.default) { + defaultRequired = true; + } + if (!this.match(48)) { + this.expect(12); + } + } while (!this.match(48)); + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterDeclaration"); + } + flowInTopLevelContext(cb) { + if (this.curContext() !== types.brace) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } else { + return cb(); + } + } + flowParseTypeParameterInstantiationInExpression() { + if (this.reScan_lt() !== 47) return; + return this.flowParseTypeParameterInstantiation(); + } + flowParseTypeParameterInstantiation() { + const node = this.startNode(); + const oldInType = this.state.inType; + this.state.inType = true; + node.params = []; + this.flowInTopLevelContext(() => { + this.expect(47); + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = false; + while (!this.match(48)) { + node.params.push(this.flowParseType()); + if (!this.match(48)) { + this.expect(12); + } + } + this.state.noAnonFunctionType = oldNoAnonFunctionType; + }); + this.state.inType = oldInType; + if (!this.state.inType && this.curContext() === types.brace) { + this.reScan_lt_gt(); + } + this.expect(48); + return this.finishNode(node, "TypeParameterInstantiation"); + } + flowParseTypeParameterInstantiationCallOrNew() { + if (this.reScan_lt() !== 47) return; + const node = this.startNode(); + const oldInType = this.state.inType; + node.params = []; + this.state.inType = true; + this.expect(47); + while (!this.match(48)) { + node.params.push(this.flowParseTypeOrImplicitInstantiation()); + if (!this.match(48)) { + this.expect(12); + } + } + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterInstantiation"); + } + flowParseInterfaceType() { + const node = this.startNode(); + this.expectContextual(129); + node.extends = []; + if (this.eat(81)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + node.body = this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: false, + allowProto: false, + allowInexact: false + }); + return this.finishNode(node, "InterfaceTypeAnnotation"); + } + flowParseObjectPropertyKey() { + return this.match(135) || this.match(134) ? super.parseExprAtom() : this.parseIdentifier(true); + } + flowParseObjectTypeIndexer(node, isStatic, variance) { + node.static = isStatic; + if (this.lookahead().type === 14) { + node.id = this.flowParseObjectPropertyKey(); + node.key = this.flowParseTypeInitialiser(); + } else { + node.id = null; + node.key = this.flowParseType(); + } + this.expect(3); + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + return this.finishNode(node, "ObjectTypeIndexer"); + } + flowParseObjectTypeInternalSlot(node, isStatic) { + node.static = isStatic; + node.id = this.flowParseObjectPropertyKey(); + this.expect(3); + this.expect(3); + if (this.match(47) || this.match(10)) { + node.method = true; + node.optional = false; + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); + } else { + node.method = false; + if (this.eat(17)) { + node.optional = true; + } + node.value = this.flowParseTypeInitialiser(); + } + return this.finishNode(node, "ObjectTypeInternalSlot"); + } + flowParseObjectTypeMethodish(node) { + node.params = []; + node.rest = null; + node.typeParameters = null; + node.this = null; + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + this.expect(10); + if (this.match(78)) { + node.this = this.flowParseFunctionTypeParam(true); + node.this.name = null; + if (!this.match(11)) { + this.expect(12); + } + } + while (!this.match(11) && !this.match(21)) { + node.params.push(this.flowParseFunctionTypeParam(false)); + if (!this.match(11)) { + this.expect(12); + } + } + if (this.eat(21)) { + node.rest = this.flowParseFunctionTypeParam(false); + } + this.expect(11); + node.returnType = this.flowParseTypeInitialiser(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + flowParseObjectTypeCallProperty(node, isStatic) { + const valueNode = this.startNode(); + node.static = isStatic; + node.value = this.flowParseObjectTypeMethodish(valueNode); + return this.finishNode(node, "ObjectTypeCallProperty"); + } + flowParseObjectType({ + allowStatic, + allowExact, + allowSpread, + allowProto, + allowInexact + }) { + const oldInType = this.state.inType; + this.state.inType = true; + const nodeStart = this.startNode(); + nodeStart.callProperties = []; + nodeStart.properties = []; + nodeStart.indexers = []; + nodeStart.internalSlots = []; + let endDelim; + let exact; + let inexact = false; + if (allowExact && this.match(6)) { + this.expect(6); + endDelim = 9; + exact = true; + } else { + this.expect(5); + endDelim = 8; + exact = false; + } + nodeStart.exact = exact; + while (!this.match(endDelim)) { + let isStatic = false; + let protoStartLoc = null; + let inexactStartLoc = null; + const node = this.startNode(); + if (allowProto && this.isContextual(118)) { + const lookahead = this.lookahead(); + if (lookahead.type !== 14 && lookahead.type !== 17) { + this.next(); + protoStartLoc = this.state.startLoc; + allowStatic = false; + } + } + if (allowStatic && this.isContextual(106)) { + const lookahead = this.lookahead(); + if (lookahead.type !== 14 && lookahead.type !== 17) { + this.next(); + isStatic = true; + } + } + const variance = this.flowParseVariance(); + if (this.eat(0)) { + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (this.eat(0)) { + if (variance) { + this.unexpected(variance.loc.start); + } + nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic)); + } else { + nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance)); + } + } else if (this.match(10) || this.match(47)) { + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.unexpected(variance.loc.start); + } + nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic)); + } else { + let kind = "init"; + if (this.isContextual(99) || this.isContextual(104)) { + const lookahead = this.lookahead(); + if (tokenIsLiteralPropertyName(lookahead.type)) { + kind = this.state.value; + this.next(); + } + } + const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact); + if (propOrInexact === null) { + inexact = true; + inexactStartLoc = this.state.lastTokStartLoc; + } else { + nodeStart.properties.push(propOrInexact); + } + } + this.flowObjectTypeSemicolon(); + if (inexactStartLoc && !this.match(8) && !this.match(9)) { + this.raise(FlowErrors.UnexpectedExplicitInexactInObject, inexactStartLoc); + } + } + this.expect(endDelim); + if (allowSpread) { + nodeStart.inexact = inexact; + } + const out = this.finishNode(nodeStart, "ObjectTypeAnnotation"); + this.state.inType = oldInType; + return out; + } + flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) { + if (this.eat(21)) { + const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9); + if (isInexactToken) { + if (!allowSpread) { + this.raise(FlowErrors.InexactInsideNonObject, this.state.lastTokStartLoc); + } else if (!allowInexact) { + this.raise(FlowErrors.InexactInsideExact, this.state.lastTokStartLoc); + } + if (variance) { + this.raise(FlowErrors.InexactVariance, variance); + } + return null; + } + if (!allowSpread) { + this.raise(FlowErrors.UnexpectedSpreadType, this.state.lastTokStartLoc); + } + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.raise(FlowErrors.SpreadVariance, variance); + } + node.argument = this.flowParseType(); + return this.finishNode(node, "ObjectTypeSpreadProperty"); + } else { + node.key = this.flowParseObjectPropertyKey(); + node.static = isStatic; + node.proto = protoStartLoc != null; + node.kind = kind; + let optional = false; + if (this.match(47) || this.match(10)) { + node.method = true; + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.unexpected(variance.loc.start); + } + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); + if (kind === "get" || kind === "set") { + this.flowCheckGetterSetterParams(node); + } + if (!allowSpread && node.key.name === "constructor" && node.value.this) { + this.raise(FlowErrors.ThisParamBannedInConstructor, node.value.this); + } + } else { + if (kind !== "init") this.unexpected(); + node.method = false; + if (this.eat(17)) { + optional = true; + } + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + } + node.optional = optional; + return this.finishNode(node, "ObjectTypeProperty"); + } + } + flowCheckGetterSetterParams(property) { + const paramCount = property.kind === "get" ? 0 : 1; + const length = property.value.params.length + (property.value.rest ? 1 : 0); + if (property.value.this) { + this.raise(property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, property.value.this); + } + if (length !== paramCount) { + this.raise(property.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, property); + } + if (property.kind === "set" && property.value.rest) { + this.raise(Errors.BadSetterRestParameter, property); + } + } + flowObjectTypeSemicolon() { + if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) { + this.unexpected(); + } + } + flowParseQualifiedTypeIdentifier(startLoc, id) { + startLoc != null ? startLoc : startLoc = this.state.startLoc; + let node = id || this.flowParseRestrictedIdentifier(true); + while (this.eat(16)) { + const node2 = this.startNodeAt(startLoc); + node2.qualification = node; + node2.id = this.flowParseRestrictedIdentifier(true); + node = this.finishNode(node2, "QualifiedTypeIdentifier"); + } + return node; + } + flowParseGenericType(startLoc, id) { + const node = this.startNodeAt(startLoc); + node.typeParameters = null; + node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } + return this.finishNode(node, "GenericTypeAnnotation"); + } + flowParseTypeofType() { + const node = this.startNode(); + this.expect(87); + node.argument = this.flowParsePrimaryType(); + return this.finishNode(node, "TypeofTypeAnnotation"); + } + flowParseTupleType() { + const node = this.startNode(); + node.types = []; + this.expect(0); + while (this.state.pos < this.length && !this.match(3)) { + node.types.push(this.flowParseType()); + if (this.match(3)) break; + this.expect(12); + } + this.expect(3); + return this.finishNode(node, "TupleTypeAnnotation"); + } + flowParseFunctionTypeParam(first) { + let name = null; + let optional = false; + let typeAnnotation = null; + const node = this.startNode(); + const lh = this.lookahead(); + const isThis = this.state.type === 78; + if (lh.type === 14 || lh.type === 17) { + if (isThis && !first) { + this.raise(FlowErrors.ThisParamMustBeFirst, node); + } + name = this.parseIdentifier(isThis); + if (this.eat(17)) { + optional = true; + if (isThis) { + this.raise(FlowErrors.ThisParamMayNotBeOptional, node); + } + } + typeAnnotation = this.flowParseTypeInitialiser(); + } else { + typeAnnotation = this.flowParseType(); + } + node.name = name; + node.optional = optional; + node.typeAnnotation = typeAnnotation; + return this.finishNode(node, "FunctionTypeParam"); + } + reinterpretTypeAsFunctionTypeParam(type) { + const node = this.startNodeAt(type.loc.start); + node.name = null; + node.optional = false; + node.typeAnnotation = type; + return this.finishNode(node, "FunctionTypeParam"); + } + flowParseFunctionTypeParams(params = []) { + let rest = null; + let _this = null; + if (this.match(78)) { + _this = this.flowParseFunctionTypeParam(true); + _this.name = null; + if (!this.match(11)) { + this.expect(12); + } + } + while (!this.match(11) && !this.match(21)) { + params.push(this.flowParseFunctionTypeParam(false)); + if (!this.match(11)) { + this.expect(12); + } + } + if (this.eat(21)) { + rest = this.flowParseFunctionTypeParam(false); + } + return { + params, + rest, + _this + }; + } + flowIdentToTypeAnnotation(startLoc, node, id) { + switch (id.name) { + case "any": + return this.finishNode(node, "AnyTypeAnnotation"); + case "bool": + case "boolean": + return this.finishNode(node, "BooleanTypeAnnotation"); + case "mixed": + return this.finishNode(node, "MixedTypeAnnotation"); + case "empty": + return this.finishNode(node, "EmptyTypeAnnotation"); + case "number": + return this.finishNode(node, "NumberTypeAnnotation"); + case "string": + return this.finishNode(node, "StringTypeAnnotation"); + case "symbol": + return this.finishNode(node, "SymbolTypeAnnotation"); + default: + this.checkNotUnderscore(id.name); + return this.flowParseGenericType(startLoc, id); + } + } + flowParsePrimaryType() { + const startLoc = this.state.startLoc; + const node = this.startNode(); + let tmp; + let type; + let isGroupedType = false; + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + switch (this.state.type) { + case 5: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: true, + allowProto: false, + allowInexact: true + }); + case 6: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: true, + allowSpread: true, + allowProto: false, + allowInexact: false + }); + case 0: + this.state.noAnonFunctionType = false; + type = this.flowParseTupleType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + return type; + case 47: + { + const node = this.startNode(); + node.typeParameters = this.flowParseTypeParameterDeclaration(); + this.expect(10); + tmp = this.flowParseFunctionTypeParams(); + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(11); + this.expect(19); + node.returnType = this.flowParseType(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + case 10: + { + const node = this.startNode(); + this.next(); + if (!this.match(11) && !this.match(21)) { + if (tokenIsIdentifier(this.state.type) || this.match(78)) { + const token = this.lookahead().type; + isGroupedType = token !== 17 && token !== 14; + } else { + isGroupedType = true; + } + } + if (isGroupedType) { + this.state.noAnonFunctionType = false; + type = this.flowParseType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) { + this.expect(11); + return type; + } else { + this.eat(12); + } + } + if (type) { + tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]); + } else { + tmp = this.flowParseFunctionTypeParams(); + } + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(11); + this.expect(19); + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + } + case 134: + return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation"); + case 85: + case 86: + node.value = this.match(85); + this.next(); + return this.finishNode(node, "BooleanLiteralTypeAnnotation"); + case 53: + if (this.state.value === "-") { + this.next(); + if (this.match(135)) { + return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node); + } + if (this.match(136)) { + return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node); + } + throw this.raise(FlowErrors.UnexpectedSubtractionOperand, this.state.startLoc); + } + this.unexpected(); + return; + case 135: + return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation"); + case 136: + return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation"); + case 88: + this.next(); + return this.finishNode(node, "VoidTypeAnnotation"); + case 84: + this.next(); + return this.finishNode(node, "NullLiteralTypeAnnotation"); + case 78: + this.next(); + return this.finishNode(node, "ThisTypeAnnotation"); + case 55: + this.next(); + return this.finishNode(node, "ExistsTypeAnnotation"); + case 87: + return this.flowParseTypeofType(); + default: + if (tokenIsKeyword(this.state.type)) { + const label = tokenLabelName(this.state.type); + this.next(); + return super.createIdentifier(node, label); + } else if (tokenIsIdentifier(this.state.type)) { + if (this.isContextual(129)) { + return this.flowParseInterfaceType(); + } + return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier()); + } + } + this.unexpected(); + } + flowParsePostfixType() { + const startLoc = this.state.startLoc; + let type = this.flowParsePrimaryType(); + let seenOptionalIndexedAccess = false; + while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startLoc); + const optional = this.eat(18); + seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional; + this.expect(0); + if (!optional && this.match(3)) { + node.elementType = type; + this.next(); + type = this.finishNode(node, "ArrayTypeAnnotation"); + } else { + node.objectType = type; + node.indexType = this.flowParseType(); + this.expect(3); + if (seenOptionalIndexedAccess) { + node.optional = optional; + type = this.finishNode(node, "OptionalIndexedAccessType"); + } else { + type = this.finishNode(node, "IndexedAccessType"); + } + } + } + return type; + } + flowParsePrefixType() { + const node = this.startNode(); + if (this.eat(17)) { + node.typeAnnotation = this.flowParsePrefixType(); + return this.finishNode(node, "NullableTypeAnnotation"); + } else { + return this.flowParsePostfixType(); + } + } + flowParseAnonFunctionWithoutParens() { + const param = this.flowParsePrefixType(); + if (!this.state.noAnonFunctionType && this.eat(19)) { + const node = this.startNodeAt(param.loc.start); + node.params = [this.reinterpretTypeAsFunctionTypeParam(param)]; + node.rest = null; + node.this = null; + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + } + return param; + } + flowParseIntersectionType() { + const node = this.startNode(); + this.eat(45); + const type = this.flowParseAnonFunctionWithoutParens(); + node.types = [type]; + while (this.eat(45)) { + node.types.push(this.flowParseAnonFunctionWithoutParens()); + } + return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation"); + } + flowParseUnionType() { + const node = this.startNode(); + this.eat(43); + const type = this.flowParseIntersectionType(); + node.types = [type]; + while (this.eat(43)) { + node.types.push(this.flowParseIntersectionType()); + } + return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation"); + } + flowParseType() { + const oldInType = this.state.inType; + this.state.inType = true; + const type = this.flowParseUnionType(); + this.state.inType = oldInType; + return type; + } + flowParseTypeOrImplicitInstantiation() { + if (this.state.type === 132 && this.state.value === "_") { + const startLoc = this.state.startLoc; + const node = this.parseIdentifier(); + return this.flowParseGenericType(startLoc, node); + } else { + return this.flowParseType(); + } + } + flowParseTypeAnnotation() { + const node = this.startNode(); + node.typeAnnotation = this.flowParseTypeInitialiser(); + return this.finishNode(node, "TypeAnnotation"); + } + flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) { + const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier(); + if (this.match(14)) { + ident.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(ident); + } + return ident; + } + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); + return node.expression; + } + flowParseVariance() { + let variance = null; + if (this.match(53)) { + variance = this.startNode(); + if (this.state.value === "+") { + variance.kind = "plus"; + } else { + variance.kind = "minus"; + } + this.next(); + return this.finishNode(variance, "Variance"); + } + return variance; + } + parseFunctionBody(node, allowExpressionBody, isMethod = false) { + if (allowExpressionBody) { + this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod)); + return; + } + super.parseFunctionBody(node, false, isMethod); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(14)) { + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null; + } + return super.parseFunctionBodyAndFinish(node, type, isMethod); + } + parseStatementLike(flags) { + if (this.state.strict && this.isContextual(129)) { + const lookahead = this.lookahead(); + if (tokenIsKeywordOrIdentifier(lookahead.type)) { + const node = this.startNode(); + this.next(); + return this.flowParseInterface(node); + } + } else if (this.isContextual(126)) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + const stmt = super.parseStatementLike(flags); + if (this.flowPragma === undefined && !this.isValidDirective(stmt)) { + this.flowPragma = null; + } + return stmt; + } + parseExpressionStatement(node, expr, decorators) { + if (expr.type === "Identifier") { + if (expr.name === "declare") { + if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) { + return this.flowParseDeclare(node); + } + } else if (tokenIsIdentifier(this.state.type)) { + if (expr.name === "interface") { + return this.flowParseInterface(node); + } else if (expr.name === "type") { + return this.flowParseTypeAlias(node); + } else if (expr.name === "opaque") { + return this.flowParseOpaqueType(node, false); + } + } + } + return super.parseExpressionStatement(node, expr, decorators); + } + shouldParseExportDeclaration() { + const { + type + } = this.state; + if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) { + return !this.state.containsEsc; + } + return super.shouldParseExportDeclaration(); + } + isExportDefaultSpecifier() { + const { + type + } = this.state; + if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) { + return this.state.containsEsc; + } + return super.isExportDefaultSpecifier(); + } + parseExportDefaultExpression() { + if (this.isContextual(126)) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + return super.parseExportDefaultExpression(); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (!this.match(17)) return expr; + if (this.state.maybeInArrowParameters) { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { + this.setOptionalParametersError(refExpressionErrors); + return expr; + } + } + this.expect(17); + const state = this.state.clone(); + const originalNoArrowAt = this.state.noArrowAt; + const node = this.startNodeAt(startLoc); + let { + consequent, + failed + } = this.tryParseConditionalConsequent(); + let [valid, invalid] = this.getArrowLikeExpressions(consequent); + if (failed || invalid.length > 0) { + const noArrowAt = [...originalNoArrowAt]; + if (invalid.length > 0) { + this.state = state; + this.state.noArrowAt = noArrowAt; + for (let i = 0; i < invalid.length; i++) { + noArrowAt.push(invalid[i].start); + } + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + [valid, invalid] = this.getArrowLikeExpressions(consequent); + } + if (failed && valid.length > 1) { + this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc); + } + if (failed && valid.length === 1) { + this.state = state; + noArrowAt.push(valid[0].start); + this.state.noArrowAt = noArrowAt; + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + } + } + this.getArrowLikeExpressions(consequent, true); + this.state.noArrowAt = originalNoArrowAt; + this.expect(14); + node.test = expr; + node.consequent = consequent; + node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined)); + return this.finishNode(node, "ConditionalExpression"); + } + tryParseConditionalConsequent() { + this.state.noArrowParamsConversionAt.push(this.state.start); + const consequent = this.parseMaybeAssignAllowIn(); + const failed = !this.match(14); + this.state.noArrowParamsConversionAt.pop(); + return { + consequent, + failed + }; + } + getArrowLikeExpressions(node, disallowInvalid) { + const stack = [node]; + const arrows = []; + while (stack.length !== 0) { + const node = stack.pop(); + if (node.type === "ArrowFunctionExpression" && node.body.type !== "BlockStatement") { + if (node.typeParameters || !node.returnType) { + this.finishArrowValidation(node); + } else { + arrows.push(node); + } + stack.push(node.body); + } else if (node.type === "ConditionalExpression") { + stack.push(node.consequent); + stack.push(node.alternate); + } + } + if (disallowInvalid) { + arrows.forEach(node => this.finishArrowValidation(node)); + return [arrows, []]; + } + return partition(arrows, node => node.params.every(param => this.isAssignable(param, true))); + } + finishArrowValidation(node) { + var _node$extra; + this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false); + this.scope.enter(514 | 4); + super.checkParams(node, false, true); + this.scope.exit(); + } + forwardNoArrowParamsConversionAt(node, parse) { + let result; + if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + this.state.noArrowParamsConversionAt.push(this.state.start); + result = parse(); + this.state.noArrowParamsConversionAt.pop(); + } else { + result = parse(); + } + return result; + } + parseParenItem(node, startLoc) { + const newNode = super.parseParenItem(node, startLoc); + if (this.eat(17)) { + newNode.optional = true; + this.resetEndLocation(node); + } + if (this.match(14)) { + const typeCastNode = this.startNodeAt(startLoc); + typeCastNode.expression = newNode; + typeCastNode.typeAnnotation = this.flowParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TypeCastExpression"); + } + return newNode; + } + assertModuleNodeAllowed(node) { + if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") { + return; + } + super.assertModuleNodeAllowed(node); + } + parseExportDeclaration(node) { + if (this.isContextual(130)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + if (this.match(5)) { + node.specifiers = this.parseExportSpecifiers(true); + super.parseExportFrom(node); + return null; + } else { + return this.flowParseTypeAlias(declarationNode); + } + } else if (this.isContextual(131)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseOpaqueType(declarationNode, false); + } else if (this.isContextual(129)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseInterface(declarationNode); + } else if (this.isContextual(126)) { + node.exportKind = "value"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(declarationNode); + } else { + return super.parseExportDeclaration(node); + } + } + eatExportStar(node) { + if (super.eatExportStar(node)) return true; + if (this.isContextual(130) && this.lookahead().type === 55) { + node.exportKind = "type"; + this.next(); + this.next(); + return true; + } + return false; + } + maybeParseExportNamespaceSpecifier(node) { + const { + startLoc + } = this.state; + const hasNamespace = super.maybeParseExportNamespaceSpecifier(node); + if (hasNamespace && node.exportKind === "type") { + this.unexpected(startLoc); + } + return hasNamespace; + } + parseClassId(node, isStatement, optionalId) { + super.parseClassId(node, isStatement, optionalId); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + } + parseClassMember(classBody, member, state) { + const { + startLoc + } = this.state; + if (this.isContextual(125)) { + if (super.parseClassMemberFromModifier(classBody, member)) { + return; + } + member.declare = true; + } + super.parseClassMember(classBody, member, state); + if (member.declare) { + if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") { + this.raise(FlowErrors.DeclareClassElement, startLoc); + } else if (member.value) { + this.raise(FlowErrors.DeclareClassFieldInitializer, member.value); + } + } + } + isIterator(word) { + return word === "iterator" || word === "asyncIterator"; + } + readIterator() { + const word = super.readWord1(); + const fullWord = "@@" + word; + if (!this.isIterator(word) || !this.state.inType) { + this.raise(Errors.InvalidIdentifier, this.state.curPosition(), { + identifierName: fullWord + }); + } + this.finishToken(132, fullWord); + } + getTokenFromCode(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 123 && next === 124) { + this.finishOp(6, 2); + } else if (this.state.inType && (code === 62 || code === 60)) { + this.finishOp(code === 62 ? 48 : 47, 1); + } else if (this.state.inType && code === 63) { + if (next === 46) { + this.finishOp(18, 2); + } else { + this.finishOp(17, 1); + } + } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) { + this.state.pos += 2; + this.readIterator(); + } else { + super.getTokenFromCode(code); + } + } + isAssignable(node, isBinding) { + if (node.type === "TypeCastExpression") { + return this.isAssignable(node.expression, isBinding); + } else { + return super.isAssignable(node, isBinding); + } + } + toAssignable(node, isLHS = false) { + if (!isLHS && node.type === "AssignmentExpression" && node.left.type === "TypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } + super.toAssignable(node, isLHS); + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") { + exprList[i] = this.typeCastToParameter(expr); + } + } + super.toAssignableList(exprList, trailingCommaLoc, isLHS); + } + toReferencedList(exprList, isParenthesizedExpr) { + for (let i = 0; i < exprList.length; i++) { + var _expr$extra; + const expr = exprList[i]; + if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) { + this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation); + } + } + return exprList; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors); + if (canBePattern && !this.state.maybeInArrowParameters) { + this.toReferencedList(node.elements); + } + return node; + } + isValidLVal(type, isParenthesized, binding) { + return type === "TypeCastExpression" || super.isValidLVal(type, isParenthesized, binding); + } + parseClassProperty(node) { + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return super.parseClassProperty(node); + } + parseClassPrivateProperty(node) { + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return super.parseClassPrivateProperty(node); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(14) || super.isClassProperty(); + } + isNonstaticConstructor(method) { + return !this.match(14) && super.isNonstaticConstructor(method); + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + if (method.variance) { + this.unexpected(method.variance.loc.start); + } + delete method.variance; + if (this.match(47)) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + if (method.params && isConstructor) { + const params = method.params; + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(FlowErrors.ThisParamBannedInConstructor, method); + } + } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) { + const params = method.value.params; + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(FlowErrors.ThisParamBannedInConstructor, method); + } + } + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + if (method.variance) { + this.unexpected(method.variance.loc.start); + } + delete method.variance; + if (this.match(47)) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + parseClassSuper(node) { + super.parseClassSuper(node); + if (node.superClass && (this.match(47) || this.match(51))) { + { + node.superTypeParameters = this.flowParseTypeParameterInstantiationInExpression(); + } + } + if (this.isContextual(113)) { + this.next(); + const implemented = node.implements = []; + do { + const node = this.startNode(); + node.id = this.flowParseRestrictedIdentifier(true); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + implemented.push(this.finishNode(node, "ClassImplements")); + } while (this.eat(12)); + } + } + checkGetterSetterParams(method) { + super.checkGetterSetterParams(method); + const params = this.getObjectOrClassMethodParams(method); + if (params.length > 0) { + const param = params[0]; + if (this.isThisParam(param) && method.kind === "get") { + this.raise(FlowErrors.GetterMayNotHaveThisParam, param); + } else if (this.isThisParam(param)) { + this.raise(FlowErrors.SetterMayNotHaveThisParam, param); + } + } + } + parsePropertyNamePrefixOperator(node) { + node.variance = this.flowParseVariance(); + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + if (prop.variance) { + this.unexpected(prop.variance.loc.start); + } + delete prop.variance; + let typeParameters; + if (this.match(47) && !isAccessor) { + typeParameters = this.flowParseTypeParameterDeclaration(); + if (!this.match(10)) this.unexpected(); + } + const result = super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + if (typeParameters) { + (result.value || result).typeParameters = typeParameters; + } + return result; + } + parseFunctionParamType(param) { + if (this.eat(17)) { + if (param.type !== "Identifier") { + this.raise(FlowErrors.PatternIsOptional, param); + } + if (this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamMayNotBeOptional, param); + } + param.optional = true; + } + if (this.match(14)) { + param.typeAnnotation = this.flowParseTypeAnnotation(); + } else if (this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamAnnotationRequired, param); + } + if (this.match(29) && this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamNoDefault, param); + } + this.resetEndLocation(param); + return param; + } + parseMaybeDefault(startLoc, left) { + const node = super.parseMaybeDefault(startLoc, left); + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation); + } + return node; + } + checkImportReflection(node) { + super.checkImportReflection(node); + if (node.module && node.importKind !== "value") { + this.raise(FlowErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start); + } + } + parseImportSpecifierLocal(node, specifier, type) { + specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier(); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + isPotentialImportPhase(isExport) { + if (super.isPotentialImportPhase(isExport)) return true; + if (this.isContextual(130)) { + if (!isExport) return true; + const ch = this.lookaheadCharCode(); + return ch === 123 || ch === 42; + } + return !isExport && this.isContextual(87); + } + applyImportPhase(node, isExport, phase, loc) { + super.applyImportPhase(node, isExport, phase, loc); + if (isExport) { + if (!phase && this.match(65)) { + return; + } + node.exportKind = phase === "type" ? phase : "value"; + } else { + if (phase === "type" && this.match(55)) this.unexpected(); + node.importKind = phase === "type" || phase === "typeof" ? phase : "value"; + } + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + const firstIdent = specifier.imported; + let specifierTypeKind = null; + if (firstIdent.type === "Identifier") { + if (firstIdent.name === "type") { + specifierTypeKind = "type"; + } else if (firstIdent.name === "typeof") { + specifierTypeKind = "typeof"; + } + } + let isBinding = false; + if (this.isContextual(93) && !this.isLookaheadContextual("as")) { + const as_ident = this.parseIdentifier(true); + if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) { + specifier.imported = as_ident; + specifier.importKind = specifierTypeKind; + specifier.local = this.cloneIdentifier(as_ident); + } else { + specifier.imported = firstIdent; + specifier.importKind = null; + specifier.local = this.parseIdentifier(); + } + } else { + if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) { + specifier.imported = this.parseIdentifier(true); + specifier.importKind = specifierTypeKind; + } else { + if (importedIsString) { + throw this.raise(Errors.ImportBindingIsString, specifier, { + importName: firstIdent.value + }); + } + specifier.imported = firstIdent; + specifier.importKind = null; + } + if (this.eatContextual(93)) { + specifier.local = this.parseIdentifier(); + } else { + isBinding = true; + specifier.local = this.cloneIdentifier(specifier.imported); + } + } + const specifierIsTypeImport = hasTypeImportKind(specifier); + if (isInTypeOnlyImport && specifierIsTypeImport) { + this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier); + } + if (isInTypeOnlyImport || specifierIsTypeImport) { + this.checkReservedType(specifier.local.name, specifier.local.loc.start, true); + } + if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) { + this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true); + } + return this.finishImportSpecifier(specifier, "ImportSpecifier"); + } + parseBindingAtom() { + switch (this.state.type) { + case 78: + return this.parseIdentifier(true); + default: + return super.parseBindingAtom(); + } + } + parseFunctionParams(node, isConstructor) { + const kind = node.kind; + if (kind !== "get" && kind !== "set" && this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.parseFunctionParams(node, isConstructor); + } + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + if (this.match(14)) { + decl.id.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(decl.id); + } + } + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(14)) { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + node.returnType = this.flowParseTypeAnnotation(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + } + return super.parseAsyncArrowFromCallExpression(node, call); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx; + let state = null; + let jsx; + if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const currentContext = context[context.length - 1]; + if (currentContext === types.j_oTag || currentContext === types.j_expr) { + context.pop(); + } + } + if ((_jsx = jsx) != null && _jsx.error || this.match(47)) { + var _jsx2, _jsx3; + state = state || this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _arrowExpression$extr; + typeParameters = this.flowParseTypeParameterDeclaration(); + const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => { + const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + this.resetStartLocationFromNode(result, typeParameters); + return result; + }); + if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort(); + const expr = this.maybeUnwrapTypeCastExpression(arrowExpression); + if (expr.type !== "ArrowFunctionExpression") abort(); + expr.typeParameters = typeParameters; + this.resetStartLocationFromNode(expr, typeParameters); + return arrowExpression; + }, state); + let arrowExpression = null; + if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") { + if (!arrow.error && !arrow.aborted) { + if (arrow.node.async) { + this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, typeParameters); + } + return arrow.node; + } + arrowExpression = arrow.node; + } + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + if (arrowExpression) { + this.state = arrow.failState; + return arrowExpression; + } + if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error; + if (arrow.thrown) throw arrow.error; + throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, typeParameters); + } + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + parseArrow(node) { + if (this.match(14)) { + const result = this.tryParse(() => { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.canInsertSemicolon()) this.unexpected(); + if (!this.match(19)) this.unexpected(); + return typeNode; + }); + if (result.thrown) return null; + if (result.error) this.state = result.failState; + node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null; + } + return super.parseArrow(node); + } + shouldParseArrow(params) { + return this.match(14) || super.shouldParseArrow(params); + } + setArrowFunctionParameters(node, params) { + if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + node.params = params; + } else { + super.setArrowFunctionParameters(node, params); + } + } + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + if (isArrowFunction && this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + return; + } + for (let i = 0; i < node.params.length; i++) { + if (this.isThisParam(node.params[i]) && i > 0) { + this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]); + } + } + super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged); + } + parseParenAndDistinguishExpression(canBeArrow) { + return super.parseParenAndDistinguishExpression(canBeArrow && !this.state.noArrowAt.includes(this.sourceToOffsetPos(this.state.start))); + } + parseSubscripts(base, startLoc, noCalls) { + if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.includes(startLoc.index)) { + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + node.arguments = super.parseCallExpressionArguments(); + base = this.finishNode(node, "CallExpression"); + } else if (base.type === "Identifier" && base.name === "async" && this.match(47)) { + const state = this.state.clone(); + const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(), state); + if (!arrow.error && !arrow.aborted) return arrow.node; + const result = this.tryParse(() => super.parseSubscripts(base, startLoc, noCalls), state); + if (result.node && !result.error) return result.node; + if (arrow.node) { + this.state = arrow.failState; + return arrow.node; + } + if (result.node) { + this.state = result.failState; + return result.node; + } + throw arrow.error || result.error; + } + return super.parseSubscripts(base, startLoc, noCalls); + } + parseSubscript(base, startLoc, noCalls, subscriptState) { + if (this.match(18) && this.isLookaheadToken_lt()) { + subscriptState.optionalChainMember = true; + if (noCalls) { + subscriptState.stop = true; + return base; + } + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + node.typeArguments = this.flowParseTypeParameterInstantiationInExpression(); + this.expect(10); + node.arguments = this.parseCallExpressionArguments(); + node.optional = true; + return this.finishCallExpression(node, true); + } else if (!noCalls && this.shouldParseTypes() && (this.match(47) || this.match(51))) { + const node = this.startNodeAt(startLoc); + node.callee = base; + const result = this.tryParse(() => { + node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew(); + this.expect(10); + node.arguments = super.parseCallExpressionArguments(); + if (subscriptState.optionalChainMember) { + node.optional = false; + } + return this.finishCallExpression(node, subscriptState.optionalChainMember); + }); + if (result.node) { + if (result.error) this.state = result.failState; + return result.node; + } + } + return super.parseSubscript(base, startLoc, noCalls, subscriptState); + } + parseNewCallee(node) { + super.parseNewCallee(node); + let targs = null; + if (this.shouldParseTypes() && this.match(47)) { + targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node; + } + node.typeArguments = targs; + } + parseAsyncArrowWithTypeParameters(startLoc) { + const node = this.startNodeAt(startLoc); + this.parseFunctionParams(node, false); + if (!this.parseArrow(node)) return; + return super.parseArrowExpression(node, undefined, true); + } + readToken_mult_modulo(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 42 && next === 47 && this.state.hasFlowComment) { + this.state.hasFlowComment = false; + this.state.pos += 2; + this.nextToken(); + return; + } + super.readToken_mult_modulo(code); + } + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 124 && next === 125) { + this.finishOp(9, 2); + return; + } + super.readToken_pipe_amp(code); + } + parseTopLevel(file, program) { + const fileNode = super.parseTopLevel(file, program); + if (this.state.hasFlowComment) { + this.raise(FlowErrors.UnterminatedFlowComment, this.state.curPosition()); + } + return fileNode; + } + skipBlockComment() { + if (this.hasPlugin("flowComments") && this.skipFlowComment()) { + if (this.state.hasFlowComment) { + throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc); + } + this.hasFlowCommentCompletion(); + const commentSkip = this.skipFlowComment(); + if (commentSkip) { + this.state.pos += commentSkip; + this.state.hasFlowComment = true; + } + return; + } + return super.skipBlockComment(this.state.hasFlowComment ? "*-/" : "*/"); + } + skipFlowComment() { + const { + pos + } = this.state; + let shiftToFirstNonWhiteSpace = 2; + while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) { + shiftToFirstNonWhiteSpace++; + } + const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos); + const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1); + if (ch2 === 58 && ch3 === 58) { + return shiftToFirstNonWhiteSpace + 2; + } + if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") { + return shiftToFirstNonWhiteSpace + 12; + } + if (ch2 === 58 && ch3 !== 58) { + return shiftToFirstNonWhiteSpace; + } + return false; + } + hasFlowCommentCompletion() { + const end = this.input.indexOf("*/", this.state.pos); + if (end === -1) { + throw this.raise(Errors.UnterminatedComment, this.state.curPosition()); + } + } + flowEnumErrorBooleanMemberNotInitialized(loc, { + enumName, + memberName + }) { + this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, { + memberName, + enumName + }); + } + flowEnumErrorInvalidMemberInitializer(loc, enumContext) { + return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === "symbol" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, loc, enumContext); + } + flowEnumErrorNumberMemberNotInitialized(loc, details) { + this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details); + } + flowEnumErrorStringMemberInconsistentlyInitialized(node, details) { + this.raise(FlowErrors.EnumStringMemberInconsistentlyInitialized, node, details); + } + flowEnumMemberInit() { + const startLoc = this.state.startLoc; + const endOfInit = () => this.match(12) || this.match(8); + switch (this.state.type) { + case 135: + { + const literal = this.parseNumericLiteral(this.state.value); + if (endOfInit()) { + return { + type: "number", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + case 134: + { + const literal = this.parseStringLiteral(this.state.value); + if (endOfInit()) { + return { + type: "string", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + case 85: + case 86: + { + const literal = this.parseBooleanLiteral(this.match(85)); + if (endOfInit()) { + return { + type: "boolean", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + default: + return { + type: "invalid", + loc: startLoc + }; + } + } + flowEnumMemberRaw() { + const loc = this.state.startLoc; + const id = this.parseIdentifier(true); + const init = this.eat(29) ? this.flowEnumMemberInit() : { + type: "none", + loc + }; + return { + id, + init + }; + } + flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) { + const { + explicitType + } = context; + if (explicitType === null) { + return; + } + if (explicitType !== expectedType) { + this.flowEnumErrorInvalidMemberInitializer(loc, context); + } + } + flowEnumMembers({ + enumName, + explicitType + }) { + const seenNames = new Set(); + const members = { + booleanMembers: [], + numberMembers: [], + stringMembers: [], + defaultedMembers: [] + }; + let hasUnknownMembers = false; + while (!this.match(8)) { + if (this.eat(21)) { + hasUnknownMembers = true; + break; + } + const memberNode = this.startNode(); + const { + id, + init + } = this.flowEnumMemberRaw(); + const memberName = id.name; + if (memberName === "") { + continue; + } + if (/^[a-z]/.test(memberName)) { + this.raise(FlowErrors.EnumInvalidMemberName, id, { + memberName, + suggestion: memberName[0].toUpperCase() + memberName.slice(1), + enumName + }); + } + if (seenNames.has(memberName)) { + this.raise(FlowErrors.EnumDuplicateMemberName, id, { + memberName, + enumName + }); + } + seenNames.add(memberName); + const context = { + enumName, + explicitType, + memberName + }; + memberNode.id = id; + switch (init.type) { + case "boolean": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "boolean"); + memberNode.init = init.value; + members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember")); + break; + } + case "number": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "number"); + memberNode.init = init.value; + members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember")); + break; + } + case "string": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "string"); + memberNode.init = init.value; + members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember")); + break; + } + case "invalid": + { + throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context); + } + case "none": + { + switch (explicitType) { + case "boolean": + this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context); + break; + case "number": + this.flowEnumErrorNumberMemberNotInitialized(init.loc, context); + break; + default: + members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember")); + } + } + } + if (!this.match(8)) { + this.expect(12); + } + } + return { + members, + hasUnknownMembers + }; + } + flowEnumStringMembers(initializedMembers, defaultedMembers, { + enumName + }) { + if (initializedMembers.length === 0) { + return defaultedMembers; + } else if (defaultedMembers.length === 0) { + return initializedMembers; + } else if (defaultedMembers.length > initializedMembers.length) { + for (const member of initializedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitialized(member, { + enumName + }); + } + return defaultedMembers; + } else { + for (const member of defaultedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitialized(member, { + enumName + }); + } + return initializedMembers; + } + } + flowEnumParseExplicitType({ + enumName + }) { + if (!this.eatContextual(102)) return null; + if (!tokenIsIdentifier(this.state.type)) { + throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, this.state.startLoc, { + enumName + }); + } + const { + value + } = this.state; + this.next(); + if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") { + this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, { + enumName, + invalidEnumType: value + }); + } + return value; + } + flowEnumBody(node, id) { + const enumName = id.name; + const nameLoc = id.loc.start; + const explicitType = this.flowEnumParseExplicitType({ + enumName + }); + this.expect(5); + const { + members, + hasUnknownMembers + } = this.flowEnumMembers({ + enumName, + explicitType + }); + node.hasUnknownMembers = hasUnknownMembers; + switch (explicitType) { + case "boolean": + node.explicitType = true; + node.members = members.booleanMembers; + this.expect(8); + return this.finishNode(node, "EnumBooleanBody"); + case "number": + node.explicitType = true; + node.members = members.numberMembers; + this.expect(8); + return this.finishNode(node, "EnumNumberBody"); + case "string": + node.explicitType = true; + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + case "symbol": + node.members = members.defaultedMembers; + this.expect(8); + return this.finishNode(node, "EnumSymbolBody"); + default: + { + const empty = () => { + node.members = []; + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + }; + node.explicitType = false; + const boolsLen = members.booleanMembers.length; + const numsLen = members.numberMembers.length; + const strsLen = members.stringMembers.length; + const defaultedLen = members.defaultedMembers.length; + if (!boolsLen && !numsLen && !strsLen && !defaultedLen) { + return empty(); + } else if (!boolsLen && !numsLen) { + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, { + enumName, + memberName: member.id.name + }); + } + node.members = members.booleanMembers; + this.expect(8); + return this.finishNode(node, "EnumBooleanBody"); + } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, { + enumName, + memberName: member.id.name + }); + } + node.members = members.numberMembers; + this.expect(8); + return this.finishNode(node, "EnumNumberBody"); + } else { + this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, { + enumName + }); + return empty(); + } + } + } + } + flowParseEnumDeclaration(node) { + const id = this.parseIdentifier(); + node.id = id; + node.body = this.flowEnumBody(this.startNode(), id); + return this.finishNode(node, "EnumDeclaration"); + } + jsxParseOpeningElementAfterName(node) { + if (this.shouldParseTypes()) { + if (this.match(47) || this.match(51)) { + node.typeArguments = this.flowParseTypeParameterInstantiationInExpression(); + } + } + return super.jsxParseOpeningElementAfterName(node); + } + isLookaheadToken_lt() { + const next = this.nextTokenStart(); + if (this.input.charCodeAt(next) === 60) { + const afterNext = this.input.charCodeAt(next + 1); + return afterNext !== 60 && afterNext !== 61; + } + return false; + } + reScan_lt_gt() { + const { + type + } = this.state; + if (type === 47) { + this.state.pos -= 1; + this.readToken_lt(); + } else if (type === 48) { + this.state.pos -= 1; + this.readToken_gt(); + } + } + reScan_lt() { + const { + type + } = this.state; + if (type === 51) { + this.state.pos -= 2; + this.finishOp(47, 1); + return 47; + } + return type; + } + maybeUnwrapTypeCastExpression(node) { + return node.type === "TypeCastExpression" ? node.expression : node; + } +}; +const entities = { + __proto__: null, + quot: "\u0022", + amp: "&", + apos: "\u0027", + lt: "<", + gt: ">", + nbsp: "\u00A0", + iexcl: "\u00A1", + cent: "\u00A2", + pound: "\u00A3", + curren: "\u00A4", + yen: "\u00A5", + brvbar: "\u00A6", + sect: "\u00A7", + uml: "\u00A8", + copy: "\u00A9", + ordf: "\u00AA", + laquo: "\u00AB", + not: "\u00AC", + shy: "\u00AD", + reg: "\u00AE", + macr: "\u00AF", + deg: "\u00B0", + plusmn: "\u00B1", + sup2: "\u00B2", + sup3: "\u00B3", + acute: "\u00B4", + micro: "\u00B5", + para: "\u00B6", + middot: "\u00B7", + cedil: "\u00B8", + sup1: "\u00B9", + ordm: "\u00BA", + raquo: "\u00BB", + frac14: "\u00BC", + frac12: "\u00BD", + frac34: "\u00BE", + iquest: "\u00BF", + Agrave: "\u00C0", + Aacute: "\u00C1", + Acirc: "\u00C2", + Atilde: "\u00C3", + Auml: "\u00C4", + Aring: "\u00C5", + AElig: "\u00C6", + Ccedil: "\u00C7", + Egrave: "\u00C8", + Eacute: "\u00C9", + Ecirc: "\u00CA", + Euml: "\u00CB", + Igrave: "\u00CC", + Iacute: "\u00CD", + Icirc: "\u00CE", + Iuml: "\u00CF", + ETH: "\u00D0", + Ntilde: "\u00D1", + Ograve: "\u00D2", + Oacute: "\u00D3", + Ocirc: "\u00D4", + Otilde: "\u00D5", + Ouml: "\u00D6", + times: "\u00D7", + Oslash: "\u00D8", + Ugrave: "\u00D9", + Uacute: "\u00DA", + Ucirc: "\u00DB", + Uuml: "\u00DC", + Yacute: "\u00DD", + THORN: "\u00DE", + szlig: "\u00DF", + agrave: "\u00E0", + aacute: "\u00E1", + acirc: "\u00E2", + atilde: "\u00E3", + auml: "\u00E4", + aring: "\u00E5", + aelig: "\u00E6", + ccedil: "\u00E7", + egrave: "\u00E8", + eacute: "\u00E9", + ecirc: "\u00EA", + euml: "\u00EB", + igrave: "\u00EC", + iacute: "\u00ED", + icirc: "\u00EE", + iuml: "\u00EF", + eth: "\u00F0", + ntilde: "\u00F1", + ograve: "\u00F2", + oacute: "\u00F3", + ocirc: "\u00F4", + otilde: "\u00F5", + ouml: "\u00F6", + divide: "\u00F7", + oslash: "\u00F8", + ugrave: "\u00F9", + uacute: "\u00FA", + ucirc: "\u00FB", + uuml: "\u00FC", + yacute: "\u00FD", + thorn: "\u00FE", + yuml: "\u00FF", + OElig: "\u0152", + oelig: "\u0153", + Scaron: "\u0160", + scaron: "\u0161", + Yuml: "\u0178", + fnof: "\u0192", + circ: "\u02C6", + tilde: "\u02DC", + Alpha: "\u0391", + Beta: "\u0392", + Gamma: "\u0393", + Delta: "\u0394", + Epsilon: "\u0395", + Zeta: "\u0396", + Eta: "\u0397", + Theta: "\u0398", + Iota: "\u0399", + Kappa: "\u039A", + Lambda: "\u039B", + Mu: "\u039C", + Nu: "\u039D", + Xi: "\u039E", + Omicron: "\u039F", + Pi: "\u03A0", + Rho: "\u03A1", + Sigma: "\u03A3", + Tau: "\u03A4", + Upsilon: "\u03A5", + Phi: "\u03A6", + Chi: "\u03A7", + Psi: "\u03A8", + Omega: "\u03A9", + alpha: "\u03B1", + beta: "\u03B2", + gamma: "\u03B3", + delta: "\u03B4", + epsilon: "\u03B5", + zeta: "\u03B6", + eta: "\u03B7", + theta: "\u03B8", + iota: "\u03B9", + kappa: "\u03BA", + lambda: "\u03BB", + mu: "\u03BC", + nu: "\u03BD", + xi: "\u03BE", + omicron: "\u03BF", + pi: "\u03C0", + rho: "\u03C1", + sigmaf: "\u03C2", + sigma: "\u03C3", + tau: "\u03C4", + upsilon: "\u03C5", + phi: "\u03C6", + chi: "\u03C7", + psi: "\u03C8", + omega: "\u03C9", + thetasym: "\u03D1", + upsih: "\u03D2", + piv: "\u03D6", + ensp: "\u2002", + emsp: "\u2003", + thinsp: "\u2009", + zwnj: "\u200C", + zwj: "\u200D", + lrm: "\u200E", + rlm: "\u200F", + ndash: "\u2013", + mdash: "\u2014", + lsquo: "\u2018", + rsquo: "\u2019", + sbquo: "\u201A", + ldquo: "\u201C", + rdquo: "\u201D", + bdquo: "\u201E", + dagger: "\u2020", + Dagger: "\u2021", + bull: "\u2022", + hellip: "\u2026", + permil: "\u2030", + prime: "\u2032", + Prime: "\u2033", + lsaquo: "\u2039", + rsaquo: "\u203A", + oline: "\u203E", + frasl: "\u2044", + euro: "\u20AC", + image: "\u2111", + weierp: "\u2118", + real: "\u211C", + trade: "\u2122", + alefsym: "\u2135", + larr: "\u2190", + uarr: "\u2191", + rarr: "\u2192", + darr: "\u2193", + harr: "\u2194", + crarr: "\u21B5", + lArr: "\u21D0", + uArr: "\u21D1", + rArr: "\u21D2", + dArr: "\u21D3", + hArr: "\u21D4", + forall: "\u2200", + part: "\u2202", + exist: "\u2203", + empty: "\u2205", + nabla: "\u2207", + isin: "\u2208", + notin: "\u2209", + ni: "\u220B", + prod: "\u220F", + sum: "\u2211", + minus: "\u2212", + lowast: "\u2217", + radic: "\u221A", + prop: "\u221D", + infin: "\u221E", + ang: "\u2220", + and: "\u2227", + or: "\u2228", + cap: "\u2229", + cup: "\u222A", + int: "\u222B", + there4: "\u2234", + sim: "\u223C", + cong: "\u2245", + asymp: "\u2248", + ne: "\u2260", + equiv: "\u2261", + le: "\u2264", + ge: "\u2265", + sub: "\u2282", + sup: "\u2283", + nsub: "\u2284", + sube: "\u2286", + supe: "\u2287", + oplus: "\u2295", + otimes: "\u2297", + perp: "\u22A5", + sdot: "\u22C5", + lceil: "\u2308", + rceil: "\u2309", + lfloor: "\u230A", + rfloor: "\u230B", + lang: "\u2329", + rang: "\u232A", + loz: "\u25CA", + spades: "\u2660", + clubs: "\u2663", + hearts: "\u2665", + diams: "\u2666" +}; +const lineBreak = /\r\n|[\r\n\u2028\u2029]/; +const lineBreakG = new RegExp(lineBreak.source, "g"); +function isNewLine(code) { + switch (code) { + case 10: + case 13: + case 8232: + case 8233: + return true; + default: + return false; + } +} +function hasNewLine(input, start, end) { + for (let i = start; i < end; i++) { + if (isNewLine(input.charCodeAt(i))) { + return true; + } + } + return false; +} +const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; +const skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/g; +function isWhitespace(code) { + switch (code) { + case 0x0009: + case 0x000b: + case 0x000c: + case 32: + case 160: + case 5760: + case 0x2000: + case 0x2001: + case 0x2002: + case 0x2003: + case 0x2004: + case 0x2005: + case 0x2006: + case 0x2007: + case 0x2008: + case 0x2009: + case 0x200a: + case 0x202f: + case 0x205f: + case 0x3000: + case 0xfeff: + return true; + default: + return false; + } +} +const JsxErrors = ParseErrorEnum`jsx`({ + AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.", + MissingClosingTagElement: ({ + openingTagName + }) => `Expected corresponding JSX closing tag for <${openingTagName}>.`, + MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.", + UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?", + UnexpectedToken: ({ + unexpected, + HTMLEntity + }) => `Unexpected token \`${unexpected}\`. Did you mean \`${HTMLEntity}\` or \`{'${unexpected}'}\`?`, + UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.", + UnterminatedJsxContent: "Unterminated JSX contents.", + UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...?" +}); +function isFragment(object) { + return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false; +} +function getQualifiedJSXName(object) { + if (object.type === "JSXIdentifier") { + return object.name; + } + if (object.type === "JSXNamespacedName") { + return object.namespace.name + ":" + object.name.name; + } + if (object.type === "JSXMemberExpression") { + return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property); + } + throw new Error("Node had unexpected type: " + object.type); +} +var jsx = superClass => class JSXParserMixin extends superClass { + jsxReadToken() { + let out = ""; + let chunkStart = this.state.pos; + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(JsxErrors.UnterminatedJsxContent, this.state.startLoc); + } + const ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 60: + case 123: + if (this.state.pos === this.state.start) { + if (ch === 60 && this.state.canStartJSXElement) { + ++this.state.pos; + this.finishToken(143); + } else { + super.getTokenFromCode(ch); + } + return; + } + out += this.input.slice(chunkStart, this.state.pos); + this.finishToken(142, out); + return; + case 38: + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + break; + case 62: + case 125: + default: + if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(true); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + } + } + jsxReadNewLine(normalizeCRLF) { + const ch = this.input.charCodeAt(this.state.pos); + let out; + ++this.state.pos; + if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + out = normalizeCRLF ? "\n" : "\r\n"; + } else { + out = String.fromCharCode(ch); + } + ++this.state.curLine; + this.state.lineStart = this.state.pos; + return out; + } + jsxReadString(quote) { + let out = ""; + let chunkStart = ++this.state.pos; + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(Errors.UnterminatedString, this.state.startLoc); + } + const ch = this.input.charCodeAt(this.state.pos); + if (ch === quote) break; + if (ch === 38) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(false); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + out += this.input.slice(chunkStart, this.state.pos++); + this.finishToken(134, out); + } + jsxReadEntity() { + const startPos = ++this.state.pos; + if (this.codePointAtPos(this.state.pos) === 35) { + ++this.state.pos; + let radix = 10; + if (this.codePointAtPos(this.state.pos) === 120) { + radix = 16; + ++this.state.pos; + } + const codePoint = this.readInt(radix, undefined, false, "bail"); + if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) { + ++this.state.pos; + return String.fromCodePoint(codePoint); + } + } else { + let count = 0; + let semi = false; + while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) === 59)) { + ++this.state.pos; + } + if (semi) { + const desc = this.input.slice(startPos, this.state.pos); + const entity = entities[desc]; + ++this.state.pos; + if (entity) { + return entity; + } + } + } + this.state.pos = startPos; + return "&"; + } + jsxReadWord() { + let ch; + const start = this.state.pos; + do { + ch = this.input.charCodeAt(++this.state.pos); + } while (isIdentifierChar(ch) || ch === 45); + this.finishToken(141, this.input.slice(start, this.state.pos)); + } + jsxParseIdentifier() { + const node = this.startNode(); + if (this.match(141)) { + node.name = this.state.value; + } else if (tokenIsKeyword(this.state.type)) { + node.name = tokenLabelName(this.state.type); + } else { + this.unexpected(); + } + this.next(); + return this.finishNode(node, "JSXIdentifier"); + } + jsxParseNamespacedName() { + const startLoc = this.state.startLoc; + const name = this.jsxParseIdentifier(); + if (!this.eat(14)) return name; + const node = this.startNodeAt(startLoc); + node.namespace = name; + node.name = this.jsxParseIdentifier(); + return this.finishNode(node, "JSXNamespacedName"); + } + jsxParseElementName() { + const startLoc = this.state.startLoc; + let node = this.jsxParseNamespacedName(); + if (node.type === "JSXNamespacedName") { + return node; + } + while (this.eat(16)) { + const newNode = this.startNodeAt(startLoc); + newNode.object = node; + newNode.property = this.jsxParseIdentifier(); + node = this.finishNode(newNode, "JSXMemberExpression"); + } + return node; + } + jsxParseAttributeValue() { + let node; + switch (this.state.type) { + case 5: + node = this.startNode(); + this.setContext(types.brace); + this.next(); + node = this.jsxParseExpressionContainer(node, types.j_oTag); + if (node.expression.type === "JSXEmptyExpression") { + this.raise(JsxErrors.AttributeIsEmpty, node); + } + return node; + case 143: + case 134: + return this.parseExprAtom(); + default: + throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc); + } + } + jsxParseEmptyExpression() { + const node = this.startNodeAt(this.state.lastTokEndLoc); + return this.finishNodeAt(node, "JSXEmptyExpression", this.state.startLoc); + } + jsxParseSpreadChild(node) { + this.next(); + node.expression = this.parseExpression(); + this.setContext(types.j_expr); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXSpreadChild"); + } + jsxParseExpressionContainer(node, previousContext) { + if (this.match(8)) { + node.expression = this.jsxParseEmptyExpression(); + } else { + const expression = this.parseExpression(); + node.expression = expression; + } + this.setContext(previousContext); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXExpressionContainer"); + } + jsxParseAttribute() { + const node = this.startNode(); + if (this.match(5)) { + this.setContext(types.brace); + this.next(); + this.expect(21); + node.argument = this.parseMaybeAssignAllowIn(); + this.setContext(types.j_oTag); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXSpreadAttribute"); + } + node.name = this.jsxParseNamespacedName(); + node.value = this.eat(29) ? this.jsxParseAttributeValue() : null; + return this.finishNode(node, "JSXAttribute"); + } + jsxParseOpeningElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + if (this.eat(144)) { + return this.finishNode(node, "JSXOpeningFragment"); + } + node.name = this.jsxParseElementName(); + return this.jsxParseOpeningElementAfterName(node); + } + jsxParseOpeningElementAfterName(node) { + const attributes = []; + while (!this.match(56) && !this.match(144)) { + attributes.push(this.jsxParseAttribute()); + } + node.attributes = attributes; + node.selfClosing = this.eat(56); + this.expect(144); + return this.finishNode(node, "JSXOpeningElement"); + } + jsxParseClosingElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + if (this.eat(144)) { + return this.finishNode(node, "JSXClosingFragment"); + } + node.name = this.jsxParseElementName(); + this.expect(144); + return this.finishNode(node, "JSXClosingElement"); + } + jsxParseElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + const children = []; + const openingElement = this.jsxParseOpeningElementAt(startLoc); + let closingElement = null; + if (!openingElement.selfClosing) { + contents: for (;;) { + switch (this.state.type) { + case 143: + startLoc = this.state.startLoc; + this.next(); + if (this.eat(56)) { + closingElement = this.jsxParseClosingElementAt(startLoc); + break contents; + } + children.push(this.jsxParseElementAt(startLoc)); + break; + case 142: + children.push(this.parseLiteral(this.state.value, "JSXText")); + break; + case 5: + { + const node = this.startNode(); + this.setContext(types.brace); + this.next(); + if (this.match(21)) { + children.push(this.jsxParseSpreadChild(node)); + } else { + children.push(this.jsxParseExpressionContainer(node, types.j_expr)); + } + break; + } + default: + this.unexpected(); + } + } + if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) { + this.raise(JsxErrors.MissingClosingTagFragment, closingElement); + } else if (!isFragment(openingElement) && isFragment(closingElement)) { + this.raise(JsxErrors.MissingClosingTagElement, closingElement, { + openingTagName: getQualifiedJSXName(openingElement.name) + }); + } else if (!isFragment(openingElement) && !isFragment(closingElement)) { + if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { + this.raise(JsxErrors.MissingClosingTagElement, closingElement, { + openingTagName: getQualifiedJSXName(openingElement.name) + }); + } + } + } + if (isFragment(openingElement)) { + node.openingFragment = openingElement; + node.closingFragment = closingElement; + } else { + node.openingElement = openingElement; + node.closingElement = closingElement; + } + node.children = children; + if (this.match(47)) { + throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, this.state.startLoc); + } + return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement"); + } + jsxParseElement() { + const startLoc = this.state.startLoc; + this.next(); + return this.jsxParseElementAt(startLoc); + } + setContext(newContext) { + const { + context + } = this.state; + context[context.length - 1] = newContext; + } + parseExprAtom(refExpressionErrors) { + if (this.match(143)) { + return this.jsxParseElement(); + } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) { + this.replaceToken(143); + return this.jsxParseElement(); + } else { + return super.parseExprAtom(refExpressionErrors); + } + } + skipSpace() { + const curContext = this.curContext(); + if (!curContext.preserveSpace) super.skipSpace(); + } + getTokenFromCode(code) { + const context = this.curContext(); + if (context === types.j_expr) { + this.jsxReadToken(); + return; + } + if (context === types.j_oTag || context === types.j_cTag) { + if (isIdentifierStart(code)) { + this.jsxReadWord(); + return; + } + if (code === 62) { + ++this.state.pos; + this.finishToken(144); + return; + } + if ((code === 34 || code === 39) && context === types.j_oTag) { + this.jsxReadString(code); + return; + } + } + if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) { + ++this.state.pos; + this.finishToken(143); + return; + } + super.getTokenFromCode(code); + } + updateContext(prevType) { + const { + context, + type + } = this.state; + if (type === 56 && prevType === 143) { + context.splice(-2, 2, types.j_cTag); + this.state.canStartJSXElement = false; + } else if (type === 143) { + context.push(types.j_oTag); + } else if (type === 144) { + const out = context[context.length - 1]; + if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) { + context.pop(); + this.state.canStartJSXElement = context[context.length - 1] === types.j_expr; + } else { + this.setContext(types.j_expr); + this.state.canStartJSXElement = true; + } + } else { + this.state.canStartJSXElement = tokenComesBeforeExpression(type); + } + } +}; +class TypeScriptScope extends Scope { + constructor(...args) { + super(...args); + this.tsNames = new Map(); + } +} +class TypeScriptScopeHandler extends ScopeHandler { + constructor(...args) { + super(...args); + this.importsStack = []; + } + createScope(flags) { + this.importsStack.push(new Set()); + return new TypeScriptScope(flags); + } + enter(flags) { + if (flags === 1024) { + this.importsStack.push(new Set()); + } + super.enter(flags); + } + exit() { + const flags = super.exit(); + if (flags === 1024) { + this.importsStack.pop(); + } + return flags; + } + hasImport(name, allowShadow) { + const len = this.importsStack.length; + if (this.importsStack[len - 1].has(name)) { + return true; + } + if (!allowShadow && len > 1) { + for (let i = 0; i < len - 1; i++) { + if (this.importsStack[i].has(name)) return true; + } + } + return false; + } + declareName(name, bindingType, loc) { + if (bindingType & 4096) { + if (this.hasImport(name, true)) { + this.parser.raise(Errors.VarRedeclaration, loc, { + identifierName: name + }); + } + this.importsStack[this.importsStack.length - 1].add(name); + return; + } + const scope = this.currentScope(); + let type = scope.tsNames.get(name) || 0; + if (bindingType & 1024) { + this.maybeExportDefined(scope, name); + scope.tsNames.set(name, type | 16); + return; + } + super.declareName(name, bindingType, loc); + if (bindingType & 2) { + if (!(bindingType & 1)) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + } + type = type | 1; + } + if (bindingType & 256) { + type = type | 2; + } + if (bindingType & 512) { + type = type | 4; + } + if (bindingType & 128) { + type = type | 8; + } + if (type) scope.tsNames.set(name, type); + } + isRedeclaredInScope(scope, name, bindingType) { + const type = scope.tsNames.get(name); + if ((type & 2) > 0) { + if (bindingType & 256) { + const isConst = !!(bindingType & 512); + const wasConst = (type & 4) > 0; + return isConst !== wasConst; + } + return true; + } + if (bindingType & 128 && (type & 8) > 0) { + if (scope.names.get(name) & 2) { + return !!(bindingType & 1); + } else { + return false; + } + } + if (bindingType & 2 && (type & 1) > 0) { + return true; + } + return super.isRedeclaredInScope(scope, name, bindingType); + } + checkLocalExport(id) { + const { + name + } = id; + if (this.hasImport(name)) return; + const len = this.scopeStack.length; + for (let i = len - 1; i >= 0; i--) { + const scope = this.scopeStack[i]; + const type = scope.tsNames.get(name); + if ((type & 1) > 0 || (type & 16) > 0) { + return; + } + } + super.checkLocalExport(id); + } +} +class ProductionParameterHandler { + constructor() { + this.stacks = []; + } + enter(flags) { + this.stacks.push(flags); + } + exit() { + this.stacks.pop(); + } + currentFlags() { + return this.stacks[this.stacks.length - 1]; + } + get hasAwait() { + return (this.currentFlags() & 2) > 0; + } + get hasYield() { + return (this.currentFlags() & 1) > 0; + } + get hasReturn() { + return (this.currentFlags() & 4) > 0; + } + get hasIn() { + return (this.currentFlags() & 8) > 0; + } +} +function functionFlags(isAsync, isGenerator) { + return (isAsync ? 2 : 0) | (isGenerator ? 1 : 0); +} +class BaseParser { + constructor() { + this.sawUnambiguousESM = false; + this.ambiguousScriptDifferentAst = false; + } + sourceToOffsetPos(sourcePos) { + return sourcePos + this.startIndex; + } + offsetToSourcePos(offsetPos) { + return offsetPos - this.startIndex; + } + hasPlugin(pluginConfig) { + if (typeof pluginConfig === "string") { + return this.plugins.has(pluginConfig); + } else { + const [pluginName, pluginOptions] = pluginConfig; + if (!this.hasPlugin(pluginName)) { + return false; + } + const actualOptions = this.plugins.get(pluginName); + for (const key of Object.keys(pluginOptions)) { + if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) { + return false; + } + } + return true; + } + } + getPluginOption(plugin, name) { + var _this$plugins$get; + return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name]; + } +} +function setTrailingComments(node, comments) { + if (node.trailingComments === undefined) { + node.trailingComments = comments; + } else { + node.trailingComments.unshift(...comments); + } +} +function setLeadingComments(node, comments) { + if (node.leadingComments === undefined) { + node.leadingComments = comments; + } else { + node.leadingComments.unshift(...comments); + } +} +function setInnerComments(node, comments) { + if (node.innerComments === undefined) { + node.innerComments = comments; + } else { + node.innerComments.unshift(...comments); + } +} +function adjustInnerComments(node, elements, commentWS) { + let lastElement = null; + let i = elements.length; + while (lastElement === null && i > 0) { + lastElement = elements[--i]; + } + if (lastElement === null || lastElement.start > commentWS.start) { + setInnerComments(node, commentWS.comments); + } else { + setTrailingComments(lastElement, commentWS.comments); + } +} +class CommentsParser extends BaseParser { + addComment(comment) { + if (this.filename) comment.loc.filename = this.filename; + const { + commentsLen + } = this.state; + if (this.comments.length !== commentsLen) { + this.comments.length = commentsLen; + } + this.comments.push(comment); + this.state.commentsLen++; + } + processComment(node) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + const lastCommentWS = commentStack[i]; + if (lastCommentWS.start === node.end) { + lastCommentWS.leadingNode = node; + i--; + } + const { + start: nodeStart + } = node; + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + if (commentEnd > nodeStart) { + commentWS.containingNode = node; + this.finalizeComment(commentWS); + commentStack.splice(i, 1); + } else { + if (commentEnd === nodeStart) { + commentWS.trailingNode = node; + } + break; + } + } + } + finalizeComment(commentWS) { + var _node$options; + const { + comments + } = commentWS; + if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) { + if (commentWS.leadingNode !== null) { + setTrailingComments(commentWS.leadingNode, comments); + } + if (commentWS.trailingNode !== null) { + setLeadingComments(commentWS.trailingNode, comments); + } + } else { + const { + containingNode: node, + start: commentStart + } = commentWS; + if (this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) === 44) { + switch (node.type) { + case "ObjectExpression": + case "ObjectPattern": + case "RecordExpression": + adjustInnerComments(node, node.properties, commentWS); + break; + case "CallExpression": + case "OptionalCallExpression": + adjustInnerComments(node, node.arguments, commentWS); + break; + case "ImportExpression": + adjustInnerComments(node, [node.source, (_node$options = node.options) != null ? _node$options : null], commentWS); + break; + case "FunctionDeclaration": + case "FunctionExpression": + case "ArrowFunctionExpression": + case "ObjectMethod": + case "ClassMethod": + case "ClassPrivateMethod": + adjustInnerComments(node, node.params, commentWS); + break; + case "ArrayExpression": + case "ArrayPattern": + case "TupleExpression": + adjustInnerComments(node, node.elements, commentWS); + break; + case "ExportNamedDeclaration": + case "ImportDeclaration": + adjustInnerComments(node, node.specifiers, commentWS); + break; + case "TSEnumDeclaration": + { + adjustInnerComments(node, node.members, commentWS); + } + break; + case "TSEnumBody": + adjustInnerComments(node, node.members, commentWS); + break; + default: + { + setInnerComments(node, comments); + } + } + } else { + setInnerComments(node, comments); + } + } + } + finalizeRemainingComments() { + const { + commentStack + } = this.state; + for (let i = commentStack.length - 1; i >= 0; i--) { + this.finalizeComment(commentStack[i]); + } + this.state.commentStack = []; + } + resetPreviousNodeTrailingComments(node) { + const { + commentStack + } = this.state; + const { + length + } = commentStack; + if (length === 0) return; + const commentWS = commentStack[length - 1]; + if (commentWS.leadingNode === node) { + commentWS.leadingNode = null; + } + } + takeSurroundingComments(node, start, end) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + const commentStart = commentWS.start; + if (commentStart === end) { + commentWS.leadingNode = node; + } else if (commentEnd === start) { + commentWS.trailingNode = node; + } else if (commentEnd < start) { + break; + } + } + } +} +class State { + constructor() { + this.flags = 1024; + this.startIndex = void 0; + this.curLine = void 0; + this.lineStart = void 0; + this.startLoc = void 0; + this.endLoc = void 0; + this.errors = []; + this.potentialArrowAt = -1; + this.noArrowAt = []; + this.noArrowParamsConversionAt = []; + this.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + this.labels = []; + this.commentsLen = 0; + this.commentStack = []; + this.pos = 0; + this.type = 140; + this.value = null; + this.start = 0; + this.end = 0; + this.lastTokEndLoc = null; + this.lastTokStartLoc = null; + this.context = [types.brace]; + this.firstInvalidTemplateEscapePos = null; + this.strictErrors = new Map(); + this.tokensLength = 0; + } + get strict() { + return (this.flags & 1) > 0; + } + set strict(v) { + if (v) this.flags |= 1;else this.flags &= -2; + } + init({ + strictMode, + sourceType, + startIndex, + startLine, + startColumn + }) { + this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module"; + this.startIndex = startIndex; + this.curLine = startLine; + this.lineStart = -startColumn; + this.startLoc = this.endLoc = new Position(startLine, startColumn, startIndex); + } + get maybeInArrowParameters() { + return (this.flags & 2) > 0; + } + set maybeInArrowParameters(v) { + if (v) this.flags |= 2;else this.flags &= -3; + } + get inType() { + return (this.flags & 4) > 0; + } + set inType(v) { + if (v) this.flags |= 4;else this.flags &= -5; + } + get noAnonFunctionType() { + return (this.flags & 8) > 0; + } + set noAnonFunctionType(v) { + if (v) this.flags |= 8;else this.flags &= -9; + } + get hasFlowComment() { + return (this.flags & 16) > 0; + } + set hasFlowComment(v) { + if (v) this.flags |= 16;else this.flags &= -17; + } + get isAmbientContext() { + return (this.flags & 32) > 0; + } + set isAmbientContext(v) { + if (v) this.flags |= 32;else this.flags &= -33; + } + get inAbstractClass() { + return (this.flags & 64) > 0; + } + set inAbstractClass(v) { + if (v) this.flags |= 64;else this.flags &= -65; + } + get inDisallowConditionalTypesContext() { + return (this.flags & 128) > 0; + } + set inDisallowConditionalTypesContext(v) { + if (v) this.flags |= 128;else this.flags &= -129; + } + get soloAwait() { + return (this.flags & 256) > 0; + } + set soloAwait(v) { + if (v) this.flags |= 256;else this.flags &= -257; + } + get inFSharpPipelineDirectBody() { + return (this.flags & 512) > 0; + } + set inFSharpPipelineDirectBody(v) { + if (v) this.flags |= 512;else this.flags &= -513; + } + get canStartJSXElement() { + return (this.flags & 1024) > 0; + } + set canStartJSXElement(v) { + if (v) this.flags |= 1024;else this.flags &= -1025; + } + get containsEsc() { + return (this.flags & 2048) > 0; + } + set containsEsc(v) { + if (v) this.flags |= 2048;else this.flags &= -2049; + } + get hasTopLevelAwait() { + return (this.flags & 4096) > 0; + } + set hasTopLevelAwait(v) { + if (v) this.flags |= 4096;else this.flags &= -4097; + } + curPosition() { + return new Position(this.curLine, this.pos - this.lineStart, this.pos + this.startIndex); + } + clone() { + const state = new State(); + state.flags = this.flags; + state.startIndex = this.startIndex; + state.curLine = this.curLine; + state.lineStart = this.lineStart; + state.startLoc = this.startLoc; + state.endLoc = this.endLoc; + state.errors = this.errors.slice(); + state.potentialArrowAt = this.potentialArrowAt; + state.noArrowAt = this.noArrowAt.slice(); + state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice(); + state.topicContext = this.topicContext; + state.labels = this.labels.slice(); + state.commentsLen = this.commentsLen; + state.commentStack = this.commentStack.slice(); + state.pos = this.pos; + state.type = this.type; + state.value = this.value; + state.start = this.start; + state.end = this.end; + state.lastTokEndLoc = this.lastTokEndLoc; + state.lastTokStartLoc = this.lastTokStartLoc; + state.context = this.context.slice(); + state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos; + state.strictErrors = this.strictErrors; + state.tokensLength = this.tokensLength; + return state; + } +} +var _isDigit = function isDigit(code) { + return code >= 48 && code <= 57; +}; +const forbiddenNumericSeparatorSiblings = { + decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]), + hex: new Set([46, 88, 95, 120]) +}; +const isAllowedNumericSeparatorSibling = { + bin: ch => ch === 48 || ch === 49, + oct: ch => ch >= 48 && ch <= 55, + dec: ch => ch >= 48 && ch <= 57, + hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102 +}; +function readStringContents(type, input, pos, lineStart, curLine, errors) { + const initialPos = pos; + const initialLineStart = lineStart; + const initialCurLine = curLine; + let out = ""; + let firstInvalidLoc = null; + let chunkStart = pos; + const { + length + } = input; + for (;;) { + if (pos >= length) { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + out += input.slice(chunkStart, pos); + break; + } + const ch = input.charCodeAt(pos); + if (isStringEnd(type, ch, input, pos)) { + out += input.slice(chunkStart, pos); + break; + } + if (ch === 92) { + out += input.slice(chunkStart, pos); + const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors); + if (res.ch === null && !firstInvalidLoc) { + firstInvalidLoc = { + pos, + lineStart, + curLine + }; + } else { + out += res.ch; + } + ({ + pos, + lineStart, + curLine + } = res); + chunkStart = pos; + } else if (ch === 8232 || ch === 8233) { + ++pos; + ++curLine; + lineStart = pos; + } else if (ch === 10 || ch === 13) { + if (type === "template") { + out += input.slice(chunkStart, pos) + "\n"; + ++pos; + if (ch === 13 && input.charCodeAt(pos) === 10) { + ++pos; + } + ++curLine; + chunkStart = lineStart = pos; + } else { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + } + } else { + ++pos; + } + } + return { + pos, + str: out, + firstInvalidLoc, + lineStart, + curLine, + containsInvalid: !!firstInvalidLoc + }; +} +function isStringEnd(type, ch, input, pos) { + if (type === "template") { + return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123; + } + return ch === (type === "double" ? 34 : 39); +} +function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) { + const throwOnInvalid = !inTemplate; + pos++; + const res = ch => ({ + pos, + ch, + lineStart, + curLine + }); + const ch = input.charCodeAt(pos++); + switch (ch) { + case 110: + return res("\n"); + case 114: + return res("\r"); + case 120: + { + let code; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCharCode(code)); + } + case 117: + { + let code; + ({ + code, + pos + } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCodePoint(code)); + } + case 116: + return res("\t"); + case 98: + return res("\b"); + case 118: + return res("\u000b"); + case 102: + return res("\f"); + case 13: + if (input.charCodeAt(pos) === 10) { + ++pos; + } + case 10: + lineStart = pos; + ++curLine; + case 8232: + case 8233: + return res(""); + case 56: + case 57: + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(pos - 1, lineStart, curLine); + } + default: + if (ch >= 48 && ch <= 55) { + const startPos = pos - 1; + const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2)); + let octalStr = match[0]; + let octal = parseInt(octalStr, 8); + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + pos += octalStr.length - 1; + const next = input.charCodeAt(pos); + if (octalStr !== "0" || next === 56 || next === 57) { + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(startPos, lineStart, curLine); + } + } + return res(String.fromCharCode(octal)); + } + return res(String.fromCharCode(ch)); + } +} +function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) { + const initialPos = pos; + let n; + ({ + n, + pos + } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid)); + if (n === null) { + if (throwOnInvalid) { + errors.invalidEscapeSequence(initialPos, lineStart, curLine); + } else { + pos = initialPos - 1; + } + } + return { + code: n, + pos + }; +} +function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) { + const start = pos; + const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; + const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin; + let invalid = false; + let total = 0; + for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { + const code = input.charCodeAt(pos); + let val; + if (code === 95 && allowNumSeparator !== "bail") { + const prev = input.charCodeAt(pos - 1); + const next = input.charCodeAt(pos + 1); + if (!allowNumSeparator) { + if (bailOnError) return { + n: null, + pos + }; + errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine); + } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) { + if (bailOnError) return { + n: null, + pos + }; + errors.unexpectedNumericSeparator(pos, lineStart, curLine); + } + ++pos; + continue; + } + if (code >= 97) { + val = code - 97 + 10; + } else if (code >= 65) { + val = code - 65 + 10; + } else if (_isDigit(code)) { + val = code - 48; + } else { + val = Infinity; + } + if (val >= radix) { + if (val <= 9 && bailOnError) { + return { + n: null, + pos + }; + } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) { + val = 0; + } else if (forceLen) { + val = 0; + invalid = true; + } else { + break; + } + } + ++pos; + total = total * radix + val; + } + if (pos === start || len != null && pos - start !== len || invalid) { + return { + n: null, + pos + }; + } + return { + n: total, + pos + }; +} +function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) { + const ch = input.charCodeAt(pos); + let code; + if (ch === 123) { + ++pos; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors)); + ++pos; + if (code !== null && code > 0x10ffff) { + if (throwOnInvalid) { + errors.invalidCodePoint(pos, lineStart, curLine); + } else { + return { + code: null, + pos + }; + } + } + } else { + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors)); + } + return { + code, + pos + }; +} +function buildPosition(pos, lineStart, curLine) { + return new Position(curLine, pos - lineStart, pos); +} +const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]); +class Token { + constructor(state) { + const startIndex = state.startIndex || 0; + this.type = state.type; + this.value = state.value; + this.start = startIndex + state.start; + this.end = startIndex + state.end; + this.loc = new SourceLocation(state.startLoc, state.endLoc); + } +} +class Tokenizer extends CommentsParser { + constructor(options, input) { + super(); + this.isLookahead = void 0; + this.tokens = []; + this.errorHandlers_readInt = { + invalidDigit: (pos, lineStart, curLine, radix) => { + if (!(this.optionFlags & 2048)) return false; + this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), { + radix + }); + return true; + }, + numericSeparatorInEscapeSequence: this.errorBuilder(Errors.NumericSeparatorInEscapeSequence), + unexpectedNumericSeparator: this.errorBuilder(Errors.UnexpectedNumericSeparator) + }; + this.errorHandlers_readCodePoint = Object.assign({}, this.errorHandlers_readInt, { + invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence), + invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint) + }); + this.errorHandlers_readStringContents_string = Object.assign({}, this.errorHandlers_readCodePoint, { + strictNumericEscape: (pos, lineStart, curLine) => { + this.recordStrictModeErrors(Errors.StrictNumericEscape, buildPosition(pos, lineStart, curLine)); + }, + unterminated: (pos, lineStart, curLine) => { + throw this.raise(Errors.UnterminatedString, buildPosition(pos - 1, lineStart, curLine)); + } + }); + this.errorHandlers_readStringContents_template = Object.assign({}, this.errorHandlers_readCodePoint, { + strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape), + unterminated: (pos, lineStart, curLine) => { + throw this.raise(Errors.UnterminatedTemplate, buildPosition(pos, lineStart, curLine)); + } + }); + this.state = new State(); + this.state.init(options); + this.input = input; + this.length = input.length; + this.comments = []; + this.isLookahead = false; + } + pushToken(token) { + this.tokens.length = this.state.tokensLength; + this.tokens.push(token); + ++this.state.tokensLength; + } + next() { + this.checkKeywordEscapes(); + if (this.optionFlags & 256) { + this.pushToken(new Token(this.state)); + } + this.state.lastTokEndLoc = this.state.endLoc; + this.state.lastTokStartLoc = this.state.startLoc; + this.nextToken(); + } + eat(type) { + if (this.match(type)) { + this.next(); + return true; + } else { + return false; + } + } + match(type) { + return this.state.type === type; + } + createLookaheadState(state) { + return { + pos: state.pos, + value: null, + type: state.type, + start: state.start, + end: state.end, + context: [this.curContext()], + inType: state.inType, + startLoc: state.startLoc, + lastTokEndLoc: state.lastTokEndLoc, + curLine: state.curLine, + lineStart: state.lineStart, + curPosition: state.curPosition + }; + } + lookahead() { + const old = this.state; + this.state = this.createLookaheadState(old); + this.isLookahead = true; + this.nextToken(); + this.isLookahead = false; + const curr = this.state; + this.state = old; + return curr; + } + nextTokenStart() { + return this.nextTokenStartSince(this.state.pos); + } + nextTokenStartSince(pos) { + skipWhiteSpace.lastIndex = pos; + return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos; + } + lookaheadCharCode() { + return this.lookaheadCharCodeSince(this.state.pos); + } + lookaheadCharCodeSince(pos) { + return this.input.charCodeAt(this.nextTokenStartSince(pos)); + } + nextTokenInLineStart() { + return this.nextTokenInLineStartSince(this.state.pos); + } + nextTokenInLineStartSince(pos) { + skipWhiteSpaceInLine.lastIndex = pos; + return skipWhiteSpaceInLine.test(this.input) ? skipWhiteSpaceInLine.lastIndex : pos; + } + lookaheadInLineCharCode() { + return this.input.charCodeAt(this.nextTokenInLineStart()); + } + codePointAtPos(pos) { + let cp = this.input.charCodeAt(pos); + if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) { + const trail = this.input.charCodeAt(pos); + if ((trail & 0xfc00) === 0xdc00) { + cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); + } + } + return cp; + } + setStrict(strict) { + this.state.strict = strict; + if (strict) { + this.state.strictErrors.forEach(([toParseError, at]) => this.raise(toParseError, at)); + this.state.strictErrors.clear(); + } + } + curContext() { + return this.state.context[this.state.context.length - 1]; + } + nextToken() { + this.skipSpace(); + this.state.start = this.state.pos; + if (!this.isLookahead) this.state.startLoc = this.state.curPosition(); + if (this.state.pos >= this.length) { + this.finishToken(140); + return; + } + this.getTokenFromCode(this.codePointAtPos(this.state.pos)); + } + skipBlockComment(commentEnd) { + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + const start = this.state.pos; + const end = this.input.indexOf(commentEnd, start + 2); + if (end === -1) { + throw this.raise(Errors.UnterminatedComment, this.state.curPosition()); + } + this.state.pos = end + commentEnd.length; + lineBreakG.lastIndex = start + 2; + while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) { + ++this.state.curLine; + this.state.lineStart = lineBreakG.lastIndex; + } + if (this.isLookahead) return; + const comment = { + type: "CommentBlock", + value: this.input.slice(start + 2, end), + start: this.sourceToOffsetPos(start), + end: this.sourceToOffsetPos(end + commentEnd.length), + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.optionFlags & 256) this.pushToken(comment); + return comment; + } + skipLineComment(startSkip) { + const start = this.state.pos; + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + let ch = this.input.charCodeAt(this.state.pos += startSkip); + if (this.state.pos < this.length) { + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + } + if (this.isLookahead) return; + const end = this.state.pos; + const value = this.input.slice(start + startSkip, end); + const comment = { + type: "CommentLine", + value, + start: this.sourceToOffsetPos(start), + end: this.sourceToOffsetPos(end), + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.optionFlags & 256) this.pushToken(comment); + return comment; + } + skipSpace() { + const spaceStart = this.state.pos; + const comments = this.optionFlags & 4096 ? [] : null; + loop: while (this.state.pos < this.length) { + const ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 32: + case 160: + case 9: + ++this.state.pos; + break; + case 13: + if (this.input.charCodeAt(this.state.pos + 1) === 10) { + ++this.state.pos; + } + case 10: + case 8232: + case 8233: + ++this.state.pos; + ++this.state.curLine; + this.state.lineStart = this.state.pos; + break; + case 47: + switch (this.input.charCodeAt(this.state.pos + 1)) { + case 42: + { + const comment = this.skipBlockComment("*/"); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + break; + } + case 47: + { + const comment = this.skipLineComment(2); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + break; + } + default: + break loop; + } + break; + default: + if (isWhitespace(ch)) { + ++this.state.pos; + } else if (ch === 45 && !this.inModule && this.optionFlags & 8192) { + const pos = this.state.pos; + if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) { + const comment = this.skipLineComment(3); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + } else { + break loop; + } + } else if (ch === 60 && !this.inModule && this.optionFlags & 8192) { + const pos = this.state.pos; + if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) { + const comment = this.skipLineComment(4); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + } else { + break loop; + } + } else { + break loop; + } + } + } + if ((comments == null ? void 0 : comments.length) > 0) { + const end = this.state.pos; + const commentWhitespace = { + start: this.sourceToOffsetPos(spaceStart), + end: this.sourceToOffsetPos(end), + comments, + leadingNode: null, + trailingNode: null, + containingNode: null + }; + this.state.commentStack.push(commentWhitespace); + } + } + finishToken(type, val) { + this.state.end = this.state.pos; + this.state.endLoc = this.state.curPosition(); + const prevType = this.state.type; + this.state.type = type; + this.state.value = val; + if (!this.isLookahead) { + this.updateContext(prevType); + } + } + replaceToken(type) { + this.state.type = type; + this.updateContext(); + } + readToken_numberSign() { + if (this.state.pos === 0 && this.readToken_interpreter()) { + return; + } + const nextPos = this.state.pos + 1; + const next = this.codePointAtPos(nextPos); + if (next >= 48 && next <= 57) { + throw this.raise(Errors.UnexpectedDigitAfterHash, this.state.curPosition()); + } + if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) { + this.expectPlugin("recordAndTuple"); + if (this.getPluginOption("recordAndTuple", "syntaxType") === "bar") { + throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + if (next === 123) { + this.finishToken(7); + } else { + this.finishToken(1); + } + } else if (isIdentifierStart(next)) { + ++this.state.pos; + this.finishToken(139, this.readWord1(next)); + } else if (next === 92) { + ++this.state.pos; + this.finishToken(139, this.readWord1()); + } else { + this.finishOp(27, 1); + } + } + readToken_dot() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next >= 48 && next <= 57) { + this.readNumber(true); + return; + } + if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) { + this.state.pos += 3; + this.finishToken(21); + } else { + ++this.state.pos; + this.finishToken(16); + } + } + readToken_slash() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + this.finishOp(31, 2); + } else { + this.finishOp(56, 1); + } + } + readToken_interpreter() { + if (this.state.pos !== 0 || this.length < 2) return false; + let ch = this.input.charCodeAt(this.state.pos + 1); + if (ch !== 33) return false; + const start = this.state.pos; + this.state.pos += 1; + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + const value = this.input.slice(start + 2, this.state.pos); + this.finishToken(28, value); + return true; + } + readToken_mult_modulo(code) { + let type = code === 42 ? 55 : 54; + let width = 1; + let next = this.input.charCodeAt(this.state.pos + 1); + if (code === 42 && next === 42) { + width++; + next = this.input.charCodeAt(this.state.pos + 2); + type = 57; + } + if (next === 61 && !this.state.inType) { + width++; + type = code === 37 ? 33 : 30; + } + this.finishOp(type, width); + } + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) { + if (this.input.charCodeAt(this.state.pos + 2) === 61) { + this.finishOp(30, 3); + } else { + this.finishOp(code === 124 ? 41 : 42, 2); + } + return; + } + if (code === 124) { + if (next === 62) { + this.finishOp(39, 2); + return; + } + if (this.hasPlugin("recordAndTuple") && next === 125) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(9); + return; + } + if (this.hasPlugin("recordAndTuple") && next === 93) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(4); + return; + } + } + if (next === 61) { + this.finishOp(30, 2); + return; + } + this.finishOp(code === 124 ? 43 : 45, 1); + } + readToken_caret() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61 && !this.state.inType) { + this.finishOp(32, 2); + } else if (next === 94 && this.hasPlugin(["pipelineOperator", { + proposal: "hack", + topicToken: "^^" + }])) { + this.finishOp(37, 2); + const lookaheadCh = this.input.codePointAt(this.state.pos); + if (lookaheadCh === 94) { + this.unexpected(); + } + } else { + this.finishOp(44, 1); + } + } + readToken_atSign() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 64 && this.hasPlugin(["pipelineOperator", { + proposal: "hack", + topicToken: "@@" + }])) { + this.finishOp(38, 2); + } else { + this.finishOp(26, 1); + } + } + readToken_plus_min(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) { + this.finishOp(34, 2); + return; + } + if (next === 61) { + this.finishOp(30, 2); + } else { + this.finishOp(53, 1); + } + } + readToken_lt() { + const { + pos + } = this.state; + const next = this.input.charCodeAt(pos + 1); + if (next === 60) { + if (this.input.charCodeAt(pos + 2) === 61) { + this.finishOp(30, 3); + return; + } + this.finishOp(51, 2); + return; + } + if (next === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(47, 1); + } + readToken_gt() { + const { + pos + } = this.state; + const next = this.input.charCodeAt(pos + 1); + if (next === 62) { + const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(pos + size) === 61) { + this.finishOp(30, size + 1); + return; + } + this.finishOp(52, size); + return; + } + if (next === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(48, 1); + } + readToken_eq_excl(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2); + return; + } + if (code === 61 && next === 62) { + this.state.pos += 2; + this.finishToken(19); + return; + } + this.finishOp(code === 61 ? 29 : 35, 1); + } + readToken_question() { + const next = this.input.charCodeAt(this.state.pos + 1); + const next2 = this.input.charCodeAt(this.state.pos + 2); + if (next === 63) { + if (next2 === 61) { + this.finishOp(30, 3); + } else { + this.finishOp(40, 2); + } + } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) { + this.state.pos += 2; + this.finishToken(18); + } else { + ++this.state.pos; + this.finishToken(17); + } + } + getTokenFromCode(code) { + switch (code) { + case 46: + this.readToken_dot(); + return; + case 40: + ++this.state.pos; + this.finishToken(10); + return; + case 41: + ++this.state.pos; + this.finishToken(11); + return; + case 59: + ++this.state.pos; + this.finishToken(13); + return; + case 44: + ++this.state.pos; + this.finishToken(12); + return; + case 91: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(2); + } else { + ++this.state.pos; + this.finishToken(0); + } + return; + case 93: + ++this.state.pos; + this.finishToken(3); + return; + case 123: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(6); + } else { + ++this.state.pos; + this.finishToken(5); + } + return; + case 125: + ++this.state.pos; + this.finishToken(8); + return; + case 58: + if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) { + this.finishOp(15, 2); + } else { + ++this.state.pos; + this.finishToken(14); + } + return; + case 63: + this.readToken_question(); + return; + case 96: + this.readTemplateToken(); + return; + case 48: + { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 120 || next === 88) { + this.readRadixNumber(16); + return; + } + if (next === 111 || next === 79) { + this.readRadixNumber(8); + return; + } + if (next === 98 || next === 66) { + this.readRadixNumber(2); + return; + } + } + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + this.readNumber(false); + return; + case 34: + case 39: + this.readString(code); + return; + case 47: + this.readToken_slash(); + return; + case 37: + case 42: + this.readToken_mult_modulo(code); + return; + case 124: + case 38: + this.readToken_pipe_amp(code); + return; + case 94: + this.readToken_caret(); + return; + case 43: + case 45: + this.readToken_plus_min(code); + return; + case 60: + this.readToken_lt(); + return; + case 62: + this.readToken_gt(); + return; + case 61: + case 33: + this.readToken_eq_excl(code); + return; + case 126: + this.finishOp(36, 1); + return; + case 64: + this.readToken_atSign(); + return; + case 35: + this.readToken_numberSign(); + return; + case 92: + this.readWord(); + return; + default: + if (isIdentifierStart(code)) { + this.readWord(code); + return; + } + } + throw this.raise(Errors.InvalidOrUnexpectedToken, this.state.curPosition(), { + unexpected: String.fromCodePoint(code) + }); + } + finishOp(type, size) { + const str = this.input.slice(this.state.pos, this.state.pos + size); + this.state.pos += size; + this.finishToken(type, str); + } + readRegexp() { + const startLoc = this.state.startLoc; + const start = this.state.start + 1; + let escaped, inClass; + let { + pos + } = this.state; + for (;; ++pos) { + if (pos >= this.length) { + throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1)); + } + const ch = this.input.charCodeAt(pos); + if (isNewLine(ch)) { + throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1)); + } + if (escaped) { + escaped = false; + } else { + if (ch === 91) { + inClass = true; + } else if (ch === 93 && inClass) { + inClass = false; + } else if (ch === 47 && !inClass) { + break; + } + escaped = ch === 92; + } + } + const content = this.input.slice(start, pos); + ++pos; + let mods = ""; + const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start); + while (pos < this.length) { + const cp = this.codePointAtPos(pos); + const char = String.fromCharCode(cp); + if (VALID_REGEX_FLAGS.has(cp)) { + if (cp === 118) { + if (mods.includes("u")) { + this.raise(Errors.IncompatibleRegExpUVFlags, nextPos()); + } + } else if (cp === 117) { + if (mods.includes("v")) { + this.raise(Errors.IncompatibleRegExpUVFlags, nextPos()); + } + } + if (mods.includes(char)) { + this.raise(Errors.DuplicateRegExpFlags, nextPos()); + } + } else if (isIdentifierChar(cp) || cp === 92) { + this.raise(Errors.MalformedRegExpFlags, nextPos()); + } else { + break; + } + ++pos; + mods += char; + } + this.state.pos = pos; + this.finishToken(138, { + pattern: content, + flags: mods + }); + } + readInt(radix, len, forceLen = false, allowNumSeparator = true) { + const { + n, + pos + } = readInt(this.input, this.state.pos, this.state.lineStart, this.state.curLine, radix, len, forceLen, allowNumSeparator, this.errorHandlers_readInt, false); + this.state.pos = pos; + return n; + } + readRadixNumber(radix) { + const start = this.state.pos; + const startLoc = this.state.curPosition(); + let isBigInt = false; + this.state.pos += 2; + const val = this.readInt(radix); + if (val == null) { + this.raise(Errors.InvalidDigit, createPositionWithColumnOffset(startLoc, 2), { + radix + }); + } + const next = this.input.charCodeAt(this.state.pos); + if (next === 110) { + ++this.state.pos; + isBigInt = true; + } else if (next === 109) { + throw this.raise(Errors.InvalidDecimal, startLoc); + } + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, this.state.curPosition()); + } + if (isBigInt) { + const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, ""); + this.finishToken(136, str); + return; + } + this.finishToken(135, val); + } + readNumber(startsWithDot) { + const start = this.state.pos; + const startLoc = this.state.curPosition(); + let isFloat = false; + let isBigInt = false; + let hasExponent = false; + let isOctal = false; + if (!startsWithDot && this.readInt(10) === null) { + this.raise(Errors.InvalidNumber, this.state.curPosition()); + } + const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48; + if (hasLeadingZero) { + const integer = this.input.slice(start, this.state.pos); + this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc); + if (!this.state.strict) { + const underscorePos = integer.indexOf("_"); + if (underscorePos > 0) { + this.raise(Errors.ZeroDigitNumericSeparator, createPositionWithColumnOffset(startLoc, underscorePos)); + } + } + isOctal = hasLeadingZero && !/[89]/.test(integer); + } + let next = this.input.charCodeAt(this.state.pos); + if (next === 46 && !isOctal) { + ++this.state.pos; + this.readInt(10); + isFloat = true; + next = this.input.charCodeAt(this.state.pos); + } + if ((next === 69 || next === 101) && !isOctal) { + next = this.input.charCodeAt(++this.state.pos); + if (next === 43 || next === 45) { + ++this.state.pos; + } + if (this.readInt(10) === null) { + this.raise(Errors.InvalidOrMissingExponent, startLoc); + } + isFloat = true; + hasExponent = true; + next = this.input.charCodeAt(this.state.pos); + } + if (next === 110) { + if (isFloat || hasLeadingZero) { + this.raise(Errors.InvalidBigIntLiteral, startLoc); + } + ++this.state.pos; + isBigInt = true; + } + if (next === 109) { + this.expectPlugin("decimal", this.state.curPosition()); + if (hasExponent || hasLeadingZero) { + this.raise(Errors.InvalidDecimal, startLoc); + } + ++this.state.pos; + var isDecimal = true; + } + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, this.state.curPosition()); + } + const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, ""); + if (isBigInt) { + this.finishToken(136, str); + return; + } + if (isDecimal) { + this.finishToken(137, str); + return; + } + const val = isOctal ? parseInt(str, 8) : parseFloat(str); + this.finishToken(135, val); + } + readCodePoint(throwOnInvalid) { + const { + code, + pos + } = readCodePoint(this.input, this.state.pos, this.state.lineStart, this.state.curLine, throwOnInvalid, this.errorHandlers_readCodePoint); + this.state.pos = pos; + return code; + } + readString(quote) { + const { + str, + pos, + curLine, + lineStart + } = readStringContents(quote === 34 ? "double" : "single", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_string); + this.state.pos = pos + 1; + this.state.lineStart = lineStart; + this.state.curLine = curLine; + this.finishToken(134, str); + } + readTemplateContinuation() { + if (!this.match(8)) { + this.unexpected(null, 8); + } + this.state.pos--; + this.readTemplateToken(); + } + readTemplateToken() { + const opening = this.input[this.state.pos]; + const { + str, + firstInvalidLoc, + pos, + curLine, + lineStart + } = readStringContents("template", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_template); + this.state.pos = pos + 1; + this.state.lineStart = lineStart; + this.state.curLine = curLine; + if (firstInvalidLoc) { + this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, this.sourceToOffsetPos(firstInvalidLoc.pos)); + } + if (this.input.codePointAt(pos) === 96) { + this.finishToken(24, firstInvalidLoc ? null : opening + str + "`"); + } else { + this.state.pos++; + this.finishToken(25, firstInvalidLoc ? null : opening + str + "${"); + } + } + recordStrictModeErrors(toParseError, at) { + const index = at.index; + if (this.state.strict && !this.state.strictErrors.has(index)) { + this.raise(toParseError, at); + } else { + this.state.strictErrors.set(index, [toParseError, at]); + } + } + readWord1(firstCode) { + this.state.containsEsc = false; + let word = ""; + const start = this.state.pos; + let chunkStart = this.state.pos; + if (firstCode !== undefined) { + this.state.pos += firstCode <= 0xffff ? 1 : 2; + } + while (this.state.pos < this.length) { + const ch = this.codePointAtPos(this.state.pos); + if (isIdentifierChar(ch)) { + this.state.pos += ch <= 0xffff ? 1 : 2; + } else if (ch === 92) { + this.state.containsEsc = true; + word += this.input.slice(chunkStart, this.state.pos); + const escStart = this.state.curPosition(); + const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar; + if (this.input.charCodeAt(++this.state.pos) !== 117) { + this.raise(Errors.MissingUnicodeEscape, this.state.curPosition()); + chunkStart = this.state.pos - 1; + continue; + } + ++this.state.pos; + const esc = this.readCodePoint(true); + if (esc !== null) { + if (!identifierCheck(esc)) { + this.raise(Errors.EscapedCharNotAnIdentifier, escStart); + } + word += String.fromCodePoint(esc); + } + chunkStart = this.state.pos; + } else { + break; + } + } + return word + this.input.slice(chunkStart, this.state.pos); + } + readWord(firstCode) { + const word = this.readWord1(firstCode); + const type = keywords$1.get(word); + if (type !== undefined) { + this.finishToken(type, tokenLabelName(type)); + } else { + this.finishToken(132, word); + } + } + checkKeywordEscapes() { + const { + type + } = this.state; + if (tokenIsKeyword(type) && this.state.containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, { + reservedWord: tokenLabelName(type) + }); + } + } + raise(toParseError, at, details = {}) { + const loc = at instanceof Position ? at : at.loc.start; + const error = toParseError(loc, details); + if (!(this.optionFlags & 2048)) throw error; + if (!this.isLookahead) this.state.errors.push(error); + return error; + } + raiseOverwrite(toParseError, at, details = {}) { + const loc = at instanceof Position ? at : at.loc.start; + const pos = loc.index; + const errors = this.state.errors; + for (let i = errors.length - 1; i >= 0; i--) { + const error = errors[i]; + if (error.loc.index === pos) { + return errors[i] = toParseError(loc, details); + } + if (error.loc.index < pos) break; + } + return this.raise(toParseError, at, details); + } + updateContext(prevType) {} + unexpected(loc, type) { + throw this.raise(Errors.UnexpectedToken, loc != null ? loc : this.state.startLoc, { + expected: type ? tokenLabelName(type) : null + }); + } + expectPlugin(pluginName, loc) { + if (this.hasPlugin(pluginName)) { + return true; + } + throw this.raise(Errors.MissingPlugin, loc != null ? loc : this.state.startLoc, { + missingPlugin: [pluginName] + }); + } + expectOnePlugin(pluginNames) { + if (!pluginNames.some(name => this.hasPlugin(name))) { + throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, { + missingPlugin: pluginNames + }); + } + } + errorBuilder(error) { + return (pos, lineStart, curLine) => { + this.raise(error, buildPosition(pos, lineStart, curLine)); + }; + } +} +class ClassScope { + constructor() { + this.privateNames = new Set(); + this.loneAccessors = new Map(); + this.undefinedPrivateNames = new Map(); + } +} +class ClassScopeHandler { + constructor(parser) { + this.parser = void 0; + this.stack = []; + this.undefinedPrivateNames = new Map(); + this.parser = parser; + } + current() { + return this.stack[this.stack.length - 1]; + } + enter() { + this.stack.push(new ClassScope()); + } + exit() { + const oldClassScope = this.stack.pop(); + const current = this.current(); + for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) { + if (current) { + if (!current.undefinedPrivateNames.has(name)) { + current.undefinedPrivateNames.set(name, loc); + } + } else { + this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, { + identifierName: name + }); + } + } + } + declarePrivateName(name, elementType, loc) { + const { + privateNames, + loneAccessors, + undefinedPrivateNames + } = this.current(); + let redefined = privateNames.has(name); + if (elementType & 3) { + const accessor = redefined && loneAccessors.get(name); + if (accessor) { + const oldStatic = accessor & 4; + const newStatic = elementType & 4; + const oldKind = accessor & 3; + const newKind = elementType & 3; + redefined = oldKind === newKind || oldStatic !== newStatic; + if (!redefined) loneAccessors.delete(name); + } else if (!redefined) { + loneAccessors.set(name, elementType); + } + } + if (redefined) { + this.parser.raise(Errors.PrivateNameRedeclaration, loc, { + identifierName: name + }); + } + privateNames.add(name); + undefinedPrivateNames.delete(name); + } + usePrivateName(name, loc) { + let classScope; + for (classScope of this.stack) { + if (classScope.privateNames.has(name)) return; + } + if (classScope) { + classScope.undefinedPrivateNames.set(name, loc); + } else { + this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, { + identifierName: name + }); + } + } +} +class ExpressionScope { + constructor(type = 0) { + this.type = type; + } + canBeArrowParameterDeclaration() { + return this.type === 2 || this.type === 1; + } + isCertainlyParameterDeclaration() { + return this.type === 3; + } +} +class ArrowHeadParsingScope extends ExpressionScope { + constructor(type) { + super(type); + this.declarationErrors = new Map(); + } + recordDeclarationError(ParsingErrorClass, at) { + const index = at.index; + this.declarationErrors.set(index, [ParsingErrorClass, at]); + } + clearDeclarationError(index) { + this.declarationErrors.delete(index); + } + iterateErrors(iterator) { + this.declarationErrors.forEach(iterator); + } +} +class ExpressionScopeHandler { + constructor(parser) { + this.parser = void 0; + this.stack = [new ExpressionScope()]; + this.parser = parser; + } + enter(scope) { + this.stack.push(scope); + } + exit() { + this.stack.pop(); + } + recordParameterInitializerError(toParseError, node) { + const origin = node.loc.start; + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + while (!scope.isCertainlyParameterDeclaration()) { + if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(toParseError, origin); + } else { + return; + } + scope = stack[--i]; + } + this.parser.raise(toParseError, origin); + } + recordArrowParameterBindingError(error, node) { + const { + stack + } = this; + const scope = stack[stack.length - 1]; + const origin = node.loc.start; + if (scope.isCertainlyParameterDeclaration()) { + this.parser.raise(error, origin); + } else if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(error, origin); + } else { + return; + } + } + recordAsyncArrowParametersError(at) { + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + while (scope.canBeArrowParameterDeclaration()) { + if (scope.type === 2) { + scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at); + } + scope = stack[--i]; + } + } + validateAsPattern() { + const { + stack + } = this; + const currentScope = stack[stack.length - 1]; + if (!currentScope.canBeArrowParameterDeclaration()) return; + currentScope.iterateErrors(([toParseError, loc]) => { + this.parser.raise(toParseError, loc); + let i = stack.length - 2; + let scope = stack[i]; + while (scope.canBeArrowParameterDeclaration()) { + scope.clearDeclarationError(loc.index); + scope = stack[--i]; + } + }); + } +} +function newParameterDeclarationScope() { + return new ExpressionScope(3); +} +function newArrowHeadScope() { + return new ArrowHeadParsingScope(1); +} +function newAsyncArrowScope() { + return new ArrowHeadParsingScope(2); +} +function newExpressionScope() { + return new ExpressionScope(); +} +class UtilParser extends Tokenizer { + addExtra(node, key, value, enumerable = true) { + if (!node) return; + let { + extra + } = node; + if (extra == null) { + extra = {}; + node.extra = extra; + } + if (enumerable) { + extra[key] = value; + } else { + Object.defineProperty(extra, key, { + enumerable, + value + }); + } + } + isContextual(token) { + return this.state.type === token && !this.state.containsEsc; + } + isUnparsedContextual(nameStart, name) { + if (this.input.startsWith(name, nameStart)) { + const nextCh = this.input.charCodeAt(nameStart + name.length); + return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800); + } + return false; + } + isLookaheadContextual(name) { + const next = this.nextTokenStart(); + return this.isUnparsedContextual(next, name); + } + eatContextual(token) { + if (this.isContextual(token)) { + this.next(); + return true; + } + return false; + } + expectContextual(token, toParseError) { + if (!this.eatContextual(token)) { + if (toParseError != null) { + throw this.raise(toParseError, this.state.startLoc); + } + this.unexpected(null, token); + } + } + canInsertSemicolon() { + return this.match(140) || this.match(8) || this.hasPrecedingLineBreak(); + } + hasPrecedingLineBreak() { + return hasNewLine(this.input, this.offsetToSourcePos(this.state.lastTokEndLoc.index), this.state.start); + } + hasFollowingLineBreak() { + return hasNewLine(this.input, this.state.end, this.nextTokenStart()); + } + isLineTerminator() { + return this.eat(13) || this.canInsertSemicolon(); + } + semicolon(allowAsi = true) { + if (allowAsi ? this.isLineTerminator() : this.eat(13)) return; + this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc); + } + expect(type, loc) { + if (!this.eat(type)) { + this.unexpected(loc, type); + } + } + tryParse(fn, oldState = this.state.clone()) { + const abortSignal = { + node: null + }; + try { + const node = fn((node = null) => { + abortSignal.node = node; + throw abortSignal; + }); + if (this.state.errors.length > oldState.errors.length) { + const failState = this.state; + this.state = oldState; + this.state.tokensLength = failState.tokensLength; + return { + node, + error: failState.errors[oldState.errors.length], + thrown: false, + aborted: false, + failState + }; + } + return { + node, + error: null, + thrown: false, + aborted: false, + failState: null + }; + } catch (error) { + const failState = this.state; + this.state = oldState; + if (error instanceof SyntaxError) { + return { + node: null, + error, + thrown: true, + aborted: false, + failState + }; + } + if (error === abortSignal) { + return { + node: abortSignal.node, + error: null, + thrown: false, + aborted: true, + failState + }; + } + throw error; + } + } + checkExpressionErrors(refExpressionErrors, andThrow) { + if (!refExpressionErrors) return false; + const { + shorthandAssignLoc, + doubleProtoLoc, + privateKeyLoc, + optionalParametersLoc, + voidPatternLoc + } = refExpressionErrors; + const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc || !!voidPatternLoc; + if (!andThrow) { + return hasErrors; + } + if (shorthandAssignLoc != null) { + this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc); + } + if (doubleProtoLoc != null) { + this.raise(Errors.DuplicateProto, doubleProtoLoc); + } + if (privateKeyLoc != null) { + this.raise(Errors.UnexpectedPrivateField, privateKeyLoc); + } + if (optionalParametersLoc != null) { + this.unexpected(optionalParametersLoc); + } + if (voidPatternLoc != null) { + this.raise(Errors.InvalidCoverDiscardElement, voidPatternLoc); + } + } + isLiteralPropertyName() { + return tokenIsLiteralPropertyName(this.state.type); + } + isPrivateName(node) { + return node.type === "PrivateName"; + } + getPrivateNameSV(node) { + return node.id.name; + } + hasPropertyAsPrivateName(node) { + return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property); + } + isObjectProperty(node) { + return node.type === "ObjectProperty"; + } + isObjectMethod(node) { + return node.type === "ObjectMethod"; + } + initializeScopes(inModule = this.options.sourceType === "module") { + const oldLabels = this.state.labels; + this.state.labels = []; + const oldExportedIdentifiers = this.exportedIdentifiers; + this.exportedIdentifiers = new Set(); + const oldInModule = this.inModule; + this.inModule = inModule; + const oldScope = this.scope; + const ScopeHandler = this.getScopeHandler(); + this.scope = new ScopeHandler(this, inModule); + const oldProdParam = this.prodParam; + this.prodParam = new ProductionParameterHandler(); + const oldClassScope = this.classScope; + this.classScope = new ClassScopeHandler(this); + const oldExpressionScope = this.expressionScope; + this.expressionScope = new ExpressionScopeHandler(this); + return () => { + this.state.labels = oldLabels; + this.exportedIdentifiers = oldExportedIdentifiers; + this.inModule = oldInModule; + this.scope = oldScope; + this.prodParam = oldProdParam; + this.classScope = oldClassScope; + this.expressionScope = oldExpressionScope; + }; + } + enterInitialScopes() { + let paramFlags = 0; + if (this.inModule || this.optionFlags & 1) { + paramFlags |= 2; + } + if (this.optionFlags & 32) { + paramFlags |= 1; + } + const isCommonJS = !this.inModule && this.options.sourceType === "commonjs"; + if (isCommonJS || this.optionFlags & 2) { + paramFlags |= 4; + } + this.prodParam.enter(paramFlags); + let scopeFlags = isCommonJS ? 514 : 1; + if (this.optionFlags & 4) { + scopeFlags |= 512; + } + this.scope.enter(scopeFlags); + } + checkDestructuringPrivate(refExpressionErrors) { + const { + privateKeyLoc + } = refExpressionErrors; + if (privateKeyLoc !== null) { + this.expectPlugin("destructuringPrivate", privateKeyLoc); + } + } +} +class ExpressionErrors { + constructor() { + this.shorthandAssignLoc = null; + this.doubleProtoLoc = null; + this.privateKeyLoc = null; + this.optionalParametersLoc = null; + this.voidPatternLoc = null; + } +} +class Node { + constructor(parser, pos, loc) { + this.type = ""; + this.start = pos; + this.end = 0; + this.loc = new SourceLocation(loc); + if ((parser == null ? void 0 : parser.optionFlags) & 128) this.range = [pos, 0]; + if (parser != null && parser.filename) this.loc.filename = parser.filename; + } +} +const NodePrototype = Node.prototype; +{ + NodePrototype.__clone = function () { + const newNode = new Node(undefined, this.start, this.loc.start); + const keys = Object.keys(this); + for (let i = 0, length = keys.length; i < length; i++) { + const key = keys[i]; + if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") { + newNode[key] = this[key]; + } + } + return newNode; + }; +} +class NodeUtils extends UtilParser { + startNode() { + const loc = this.state.startLoc; + return new Node(this, loc.index, loc); + } + startNodeAt(loc) { + return new Node(this, loc.index, loc); + } + startNodeAtNode(type) { + return this.startNodeAt(type.loc.start); + } + finishNode(node, type) { + return this.finishNodeAt(node, type, this.state.lastTokEndLoc); + } + finishNodeAt(node, type, endLoc) { + node.type = type; + node.end = endLoc.index; + node.loc.end = endLoc; + if (this.optionFlags & 128) node.range[1] = endLoc.index; + if (this.optionFlags & 4096) { + this.processComment(node); + } + return node; + } + resetStartLocation(node, startLoc) { + node.start = startLoc.index; + node.loc.start = startLoc; + if (this.optionFlags & 128) node.range[0] = startLoc.index; + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { + node.end = endLoc.index; + node.loc.end = endLoc; + if (this.optionFlags & 128) node.range[1] = endLoc.index; + } + resetStartLocationFromNode(node, locationNode) { + this.resetStartLocation(node, locationNode.loc.start); + } + castNodeTo(node, type) { + node.type = type; + return node; + } + cloneIdentifier(node) { + const { + type, + start, + end, + loc, + range, + name + } = node; + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.name = name; + if (node.extra) cloned.extra = node.extra; + return cloned; + } + cloneStringLiteral(node) { + const { + type, + start, + end, + loc, + range, + extra + } = node; + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.extra = extra; + cloned.value = node.value; + return cloned; + } +} +const unwrapParenthesizedExpression = node => { + return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node; +}; +class LValParser extends NodeUtils { + toAssignable(node, isLHS = false) { + var _node$extra, _node$extra3; + let parenthesized = undefined; + if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) { + parenthesized = unwrapParenthesizedExpression(node); + if (isLHS) { + if (parenthesized.type === "Identifier") { + this.expressionScope.recordArrowParameterBindingError(Errors.InvalidParenthesizedAssignment, node); + } else if (parenthesized.type !== "MemberExpression" && !this.isOptionalMemberExpression(parenthesized)) { + this.raise(Errors.InvalidParenthesizedAssignment, node); + } + } else { + this.raise(Errors.InvalidParenthesizedAssignment, node); + } + } + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + case "VoidPattern": + break; + case "ObjectExpression": + this.castNodeTo(node, "ObjectPattern"); + for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) { + var _node$extra2; + const prop = node.properties[i]; + const isLast = i === last; + this.toAssignableObjectExpressionProp(prop, isLast, isLHS); + if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc); + } + } + break; + case "ObjectProperty": + { + const { + key, + value + } = node; + if (this.isPrivateName(key)) { + this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); + } + this.toAssignable(value, isLHS); + break; + } + case "SpreadElement": + { + throw new Error("Internal @babel/parser error (this is a bug, please report it)." + " SpreadElement should be converted by .toAssignable's caller."); + } + case "ArrayExpression": + this.castNodeTo(node, "ArrayPattern"); + this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS); + break; + case "AssignmentExpression": + if (node.operator !== "=") { + this.raise(Errors.MissingEqInAssignment, node.left.loc.end); + } + this.castNodeTo(node, "AssignmentPattern"); + delete node.operator; + if (node.left.type === "VoidPattern") { + this.raise(Errors.VoidPatternInitializer, node.left); + } + this.toAssignable(node.left, isLHS); + break; + case "ParenthesizedExpression": + this.toAssignable(parenthesized, isLHS); + break; + } + } + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.type === "ObjectMethod") { + this.raise(prop.kind === "get" || prop.kind === "set" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, prop.key); + } else if (prop.type === "SpreadElement") { + this.castNodeTo(prop, "RestElement"); + const arg = prop.argument; + this.checkToRestConversion(arg, false); + this.toAssignable(arg, isLHS); + if (!isLast) { + this.raise(Errors.RestTrailingComma, prop); + } + } else { + this.toAssignable(prop, isLHS); + } + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + const end = exprList.length - 1; + for (let i = 0; i <= end; i++) { + const elt = exprList[i]; + if (!elt) continue; + this.toAssignableListItem(exprList, i, isLHS); + if (elt.type === "RestElement") { + if (i < end) { + this.raise(Errors.RestTrailingComma, elt); + } else if (trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, trailingCommaLoc); + } + } + } + } + toAssignableListItem(exprList, index, isLHS) { + const node = exprList[index]; + if (node.type === "SpreadElement") { + this.castNodeTo(node, "RestElement"); + const arg = node.argument; + this.checkToRestConversion(arg, true); + this.toAssignable(arg, isLHS); + } else { + this.toAssignable(node, isLHS); + } + } + isAssignable(node, isBinding) { + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + case "VoidPattern": + return true; + case "ObjectExpression": + { + const last = node.properties.length - 1; + return node.properties.every((prop, i) => { + return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && this.isAssignable(prop); + }); + } + case "ObjectProperty": + return this.isAssignable(node.value); + case "SpreadElement": + return this.isAssignable(node.argument); + case "ArrayExpression": + return node.elements.every(element => element === null || this.isAssignable(element)); + case "AssignmentExpression": + return node.operator === "="; + case "ParenthesizedExpression": + return this.isAssignable(node.expression); + case "MemberExpression": + case "OptionalMemberExpression": + return !isBinding; + default: + return false; + } + } + toReferencedList(exprList, isParenthesizedExpr) { + return exprList; + } + toReferencedListDeep(exprList, isParenthesizedExpr) { + this.toReferencedList(exprList, isParenthesizedExpr); + for (const expr of exprList) { + if ((expr == null ? void 0 : expr.type) === "ArrayExpression") { + this.toReferencedListDeep(expr.elements); + } + } + } + parseSpread(refExpressionErrors) { + const node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined); + return this.finishNode(node, "SpreadElement"); + } + parseRestBinding() { + const node = this.startNode(); + this.next(); + const argument = this.parseBindingAtom(); + if (argument.type === "VoidPattern") { + this.raise(Errors.UnexpectedVoidPattern, argument); + } + node.argument = argument; + return this.finishNode(node, "RestElement"); + } + parseBindingAtom() { + switch (this.state.type) { + case 0: + { + const node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(3, 93, 1); + return this.finishNode(node, "ArrayPattern"); + } + case 5: + return this.parseObjectLike(8, true); + case 88: + return this.parseVoidPattern(null); + } + return this.parseIdentifier(); + } + parseBindingList(close, closeCharCode, flags) { + const allowEmpty = flags & 1; + const elts = []; + let first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + } + if (allowEmpty && this.match(12)) { + elts.push(null); + } else if (this.eat(close)) { + break; + } else if (this.match(21)) { + let rest = this.parseRestBinding(); + if (this.hasPlugin("flow") || flags & 2) { + rest = this.parseFunctionParamType(rest); + } + elts.push(rest); + if (!this.checkCommaAfterRest(closeCharCode)) { + this.expect(close); + break; + } + } else { + const decorators = []; + if (flags & 2) { + if (this.match(26) && this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedParameterDecorator, this.state.startLoc); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } + } + elts.push(this.parseBindingElement(flags, decorators)); + } + } + return elts; + } + parseBindingRestProperty(prop) { + this.next(); + if (this.hasPlugin("discardBinding") && this.match(88)) { + prop.argument = this.parseVoidPattern(null); + this.raise(Errors.UnexpectedVoidPattern, prop.argument); + } else { + prop.argument = this.parseIdentifier(); + } + this.checkCommaAfterRest(125); + return this.finishNode(prop, "RestElement"); + } + parseBindingProperty() { + const { + type, + startLoc + } = this.state; + if (type === 21) { + return this.parseBindingRestProperty(this.startNode()); + } + const prop = this.startNode(); + if (type === 139) { + this.expectPlugin("destructuringPrivate", startLoc); + this.classScope.usePrivateName(this.state.value, startLoc); + prop.key = this.parsePrivateName(); + } else { + this.parsePropertyName(prop); + } + prop.method = false; + return this.parseObjPropValue(prop, startLoc, false, false, true, false); + } + parseBindingElement(flags, decorators) { + const left = this.parseMaybeDefault(); + if (this.hasPlugin("flow") || flags & 2) { + this.parseFunctionParamType(left); + } + if (decorators.length) { + left.decorators = decorators; + this.resetStartLocationFromNode(left, decorators[0]); + } + const elt = this.parseMaybeDefault(left.loc.start, left); + return elt; + } + parseFunctionParamType(param) { + return param; + } + parseMaybeDefault(startLoc, left) { + startLoc != null ? startLoc : startLoc = this.state.startLoc; + left = left != null ? left : this.parseBindingAtom(); + if (!this.eat(29)) return left; + const node = this.startNodeAt(startLoc); + if (left.type === "VoidPattern") { + this.raise(Errors.VoidPatternInitializer, left); + } + node.left = left; + node.right = this.parseMaybeAssignAllowIn(); + return this.finishNode(node, "AssignmentPattern"); + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + switch (type) { + case "AssignmentPattern": + return "left"; + case "RestElement": + return "argument"; + case "ObjectProperty": + return "value"; + case "ParenthesizedExpression": + return "expression"; + case "ArrayPattern": + return "elements"; + case "ObjectPattern": + return "properties"; + case "VoidPattern": + return true; + } + return false; + } + isOptionalMemberExpression(expression) { + return expression.type === "OptionalMemberExpression"; + } + checkLVal(expression, ancestor, binding = 64, checkClashes = false, strictModeChanged = false, hasParenthesizedAncestor = false) { + var _expression$extra; + const type = expression.type; + if (this.isObjectMethod(expression)) return; + const isOptionalMemberExpression = this.isOptionalMemberExpression(expression); + if (isOptionalMemberExpression || type === "MemberExpression") { + if (isOptionalMemberExpression) { + this.expectPlugin("optionalChainingAssign", expression.loc.start); + if (ancestor.type !== "AssignmentExpression") { + this.raise(Errors.InvalidLhsOptionalChaining, expression, { + ancestor + }); + } + } + if (binding !== 64) { + this.raise(Errors.InvalidPropertyBindingPattern, expression); + } + return; + } + if (type === "Identifier") { + this.checkIdentifier(expression, binding, strictModeChanged); + const { + name + } = expression; + if (checkClashes) { + if (checkClashes.has(name)) { + this.raise(Errors.ParamDupe, expression); + } else { + checkClashes.add(name); + } + } + return; + } else if (type === "VoidPattern" && ancestor.type === "CatchClause") { + this.raise(Errors.VoidPatternCatchClauseParam, expression); + } + const validity = this.isValidLVal(type, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === "AssignmentExpression", binding); + if (validity === true) return; + if (validity === false) { + const ParseErrorClass = binding === 64 ? Errors.InvalidLhs : Errors.InvalidLhsBinding; + this.raise(ParseErrorClass, expression, { + ancestor + }); + return; + } + let key, isParenthesizedExpression; + if (typeof validity === "string") { + key = validity; + isParenthesizedExpression = type === "ParenthesizedExpression"; + } else { + [key, isParenthesizedExpression] = validity; + } + const nextAncestor = type === "ArrayPattern" || type === "ObjectPattern" ? { + type + } : ancestor; + const val = expression[key]; + if (Array.isArray(val)) { + for (const child of val) { + if (child) { + this.checkLVal(child, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression); + } + } + } else if (val) { + this.checkLVal(val, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression); + } + } + checkIdentifier(at, bindingType, strictModeChanged = false) { + if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) { + if (bindingType === 64) { + this.raise(Errors.StrictEvalArguments, at, { + referenceName: at.name + }); + } else { + this.raise(Errors.StrictEvalArgumentsBinding, at, { + bindingName: at.name + }); + } + } + if (bindingType & 8192 && at.name === "let") { + this.raise(Errors.LetInLexicalBinding, at); + } + if (!(bindingType & 64)) { + this.declareNameFromIdentifier(at, bindingType); + } + } + declareNameFromIdentifier(identifier, binding) { + this.scope.declareName(identifier.name, binding, identifier.loc.start); + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "ParenthesizedExpression": + this.checkToRestConversion(node.expression, allowPattern); + break; + case "Identifier": + case "MemberExpression": + break; + case "ArrayExpression": + case "ObjectExpression": + if (allowPattern) break; + default: + this.raise(Errors.InvalidRestAssignmentPattern, node); + } + } + checkCommaAfterRest(close) { + if (!this.match(12)) { + return false; + } + this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, this.state.startLoc); + return true; + } +} +function nonNull(x) { + if (x == null) { + throw new Error(`Unexpected ${x} value.`); + } + return x; +} +function assert(x) { + if (!x) { + throw new Error("Assert fail"); + } +} +const TSErrors = ParseErrorEnum`typescript`({ + AbstractMethodHasImplementation: ({ + methodName + }) => `Method '${methodName}' cannot have an implementation because it is marked abstract.`, + AbstractPropertyHasInitializer: ({ + propertyName + }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`, + AccessorCannotBeOptional: "An 'accessor' property cannot be declared optional.", + AccessorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.", + AccessorCannotHaveTypeParameters: "An accessor cannot have type parameters.", + ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.", + ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.", + ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.", + ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.", + DeclareAccessor: ({ + kind + }) => `'declare' is not allowed in ${kind}ters.`, + DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.", + DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.", + DuplicateAccessibilityModifier: ({ + modifier + }) => `Accessibility modifier already seen: '${modifier}'.`, + DuplicateModifier: ({ + modifier + }) => `Duplicate modifier: '${modifier}'.`, + EmptyHeritageClauseType: ({ + token + }) => `'${token}' list cannot be empty.`, + EmptyTypeArguments: "Type argument list cannot be empty.", + EmptyTypeParameters: "Type parameter list cannot be empty.", + ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.", + ImportAliasHasImportType: "An import alias can not use 'import type'.", + ImportReflectionHasImportType: "An `import module` declaration can not use `type` modifier", + IncompatibleModifiers: ({ + modifiers + }) => `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`, + IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.", + IndexSignatureHasAccessibility: ({ + modifier + }) => `Index signatures cannot have an accessibility modifier ('${modifier}').`, + IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.", + IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.", + IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.", + InitializerNotAllowedInAmbientContext: "Initializers are not allowed in ambient contexts.", + InvalidHeritageClauseType: ({ + token + }) => `'${token}' list can only include identifiers or qualified-names with optional type arguments.`, + InvalidModifierOnAwaitUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on an await using declaration.`, + InvalidModifierOnTypeMember: ({ + modifier + }) => `'${modifier}' modifier cannot appear on a type member.`, + InvalidModifierOnTypeParameter: ({ + modifier + }) => `'${modifier}' modifier cannot appear on a type parameter.`, + InvalidModifierOnTypeParameterPositions: ({ + modifier + }) => `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`, + InvalidModifierOnUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on a using declaration.`, + InvalidModifiersOrder: ({ + orderedModifiers + }) => `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`, + InvalidPropertyAccessAfterInstantiationExpression: "Invalid property access after an instantiation expression. " + "You can either wrap the instantiation expression in parentheses, or delete the type arguments.", + InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.", + MissingInterfaceName: "'interface' declarations must be followed by an identifier.", + NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.", + NonClassMethodPropertyHasAbstractModifier: "'abstract' modifier can only appear on a class, method, or property declaration.", + OptionalTypeBeforeRequired: "A required element cannot follow an optional element.", + OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.", + PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.", + PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.", + PrivateElementHasAccessibility: ({ + modifier + }) => `Private elements cannot have an accessibility modifier ('${modifier}').`, + ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.", + ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `() => ...`.", + ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.", + SetAccessorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.", + SetAccessorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.", + SetAccessorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.", + SingleTypeParameterWithoutTrailingComma: ({ + typeParameterName + }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`, + StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.", + TupleOptionalAfterType: "A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).", + TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.", + TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.", + TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.", + UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.", + UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.", + UnexpectedTypeAnnotation: "Did not expect a type annotation here.", + UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.", + UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.", + UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.", + UnsupportedSignatureParameterKind: ({ + type + }) => `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`, + UsingDeclarationInAmbientContext: kind => `'${kind}' declarations are not allowed in ambient contexts.` +}); +function keywordTypeFromName(value) { + switch (value) { + case "any": + return "TSAnyKeyword"; + case "boolean": + return "TSBooleanKeyword"; + case "bigint": + return "TSBigIntKeyword"; + case "never": + return "TSNeverKeyword"; + case "number": + return "TSNumberKeyword"; + case "object": + return "TSObjectKeyword"; + case "string": + return "TSStringKeyword"; + case "symbol": + return "TSSymbolKeyword"; + case "undefined": + return "TSUndefinedKeyword"; + case "unknown": + return "TSUnknownKeyword"; + default: + return undefined; + } +} +function tsIsAccessModifier(modifier) { + return modifier === "private" || modifier === "public" || modifier === "protected"; +} +function tsIsVarianceAnnotations(modifier) { + return modifier === "in" || modifier === "out"; +} +var typescript = superClass => class TypeScriptParserMixin extends superClass { + constructor(...args) { + super(...args); + this.tsParseInOutModifiers = this.tsParseModifiers.bind(this, { + allowedModifiers: ["in", "out"], + disallowedModifiers: ["const", "public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + this.tsParseConstModifier = this.tsParseModifiers.bind(this, { + allowedModifiers: ["const"], + disallowedModifiers: ["in", "out"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }); + this.tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, { + allowedModifiers: ["in", "out", "const"], + disallowedModifiers: ["public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + } + getScopeHandler() { + return TypeScriptScopeHandler; + } + tsIsIdentifier() { + return tokenIsIdentifier(this.state.type); + } + tsTokenCanFollowModifier() { + return this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(139) || this.isLiteralPropertyName(); + } + tsNextTokenOnSameLineAndCanFollowModifier() { + this.next(); + if (this.hasPrecedingLineBreak()) { + return false; + } + return this.tsTokenCanFollowModifier(); + } + tsNextTokenCanFollowModifier() { + if (this.match(106)) { + this.next(); + return this.tsTokenCanFollowModifier(); + } + return this.tsNextTokenOnSameLineAndCanFollowModifier(); + } + tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock, hasSeenStaticModifier) { + if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58 && this.state.type !== 75) { + return undefined; + } + const modifier = this.state.value; + if (allowedModifiers.includes(modifier)) { + if (hasSeenStaticModifier && this.match(106)) { + return undefined; + } + if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) { + return undefined; + } + if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) { + return modifier; + } + } + return undefined; + } + tsParseModifiers({ + allowedModifiers, + disallowedModifiers, + stopOnStartOfClassStaticBlock, + errorTemplate = TSErrors.InvalidModifierOnTypeMember + }, modified) { + const enforceOrder = (loc, modifier, before, after) => { + if (modifier === before && modified[after]) { + this.raise(TSErrors.InvalidModifiersOrder, loc, { + orderedModifiers: [before, after] + }); + } + }; + const incompatible = (loc, modifier, mod1, mod2) => { + if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) { + this.raise(TSErrors.IncompatibleModifiers, loc, { + modifiers: [mod1, mod2] + }); + } + }; + for (;;) { + const { + startLoc + } = this.state; + const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock, modified.static); + if (!modifier) break; + if (tsIsAccessModifier(modifier)) { + if (modified.accessibility) { + this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, { + modifier + }); + } else { + enforceOrder(startLoc, modifier, modifier, "override"); + enforceOrder(startLoc, modifier, modifier, "static"); + enforceOrder(startLoc, modifier, modifier, "readonly"); + modified.accessibility = modifier; + } + } else if (tsIsVarianceAnnotations(modifier)) { + if (modified[modifier]) { + this.raise(TSErrors.DuplicateModifier, startLoc, { + modifier + }); + } + modified[modifier] = true; + enforceOrder(startLoc, modifier, "in", "out"); + } else { + if (hasOwnProperty.call(modified, modifier)) { + this.raise(TSErrors.DuplicateModifier, startLoc, { + modifier + }); + } else { + enforceOrder(startLoc, modifier, "static", "readonly"); + enforceOrder(startLoc, modifier, "static", "override"); + enforceOrder(startLoc, modifier, "override", "readonly"); + enforceOrder(startLoc, modifier, "abstract", "override"); + incompatible(startLoc, modifier, "declare", "override"); + incompatible(startLoc, modifier, "static", "abstract"); + } + modified[modifier] = true; + } + if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) { + this.raise(errorTemplate, startLoc, { + modifier + }); + } + } + } + tsIsListTerminator(kind) { + switch (kind) { + case "EnumMembers": + case "TypeMembers": + return this.match(8); + case "HeritageClauseElement": + return this.match(5); + case "TupleElementTypes": + return this.match(3); + case "TypeParametersOrArguments": + return this.match(48); + } + } + tsParseList(kind, parseElement) { + const result = []; + while (!this.tsIsListTerminator(kind)) { + result.push(parseElement()); + } + return result; + } + tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) { + return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos)); + } + tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) { + const result = []; + let trailingCommaPos = -1; + for (;;) { + if (this.tsIsListTerminator(kind)) { + break; + } + trailingCommaPos = -1; + const element = parseElement(); + if (element == null) { + return undefined; + } + result.push(element); + if (this.eat(12)) { + trailingCommaPos = this.state.lastTokStartLoc.index; + continue; + } + if (this.tsIsListTerminator(kind)) { + break; + } + if (expectSuccess) { + this.expect(12); + } + return undefined; + } + if (refTrailingCommaPos) { + refTrailingCommaPos.value = trailingCommaPos; + } + return result; + } + tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) { + if (!skipFirstToken) { + if (bracket) { + this.expect(0); + } else { + this.expect(47); + } + } + const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos); + if (bracket) { + this.expect(3); + } else { + this.expect(48); + } + return result; + } + tsParseImportType() { + const node = this.startNode(); + this.expect(83); + this.expect(10); + if (!this.match(134)) { + this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc); + { + node.argument = super.parseExprAtom(); + } + } else { + { + node.argument = this.parseStringLiteral(this.state.value); + } + } + if (this.eat(12)) { + node.options = this.tsParseImportTypeOptions(); + } else { + node.options = null; + } + this.expect(11); + if (this.eat(16)) { + node.qualifier = this.tsParseEntityName(1 | 2); + } + if (this.match(47)) { + { + node.typeParameters = this.tsParseTypeArguments(); + } + } + return this.finishNode(node, "TSImportType"); + } + tsParseImportTypeOptions() { + const node = this.startNode(); + this.expect(5); + const withProperty = this.startNode(); + if (this.isContextual(76)) { + withProperty.method = false; + withProperty.key = this.parseIdentifier(true); + withProperty.computed = false; + withProperty.shorthand = false; + } else { + this.unexpected(null, 76); + } + this.expect(14); + withProperty.value = this.tsParseImportTypeWithPropertyValue(); + node.properties = [this.finishObjectProperty(withProperty)]; + this.expect(8); + return this.finishNode(node, "ObjectExpression"); + } + tsParseImportTypeWithPropertyValue() { + const node = this.startNode(); + const properties = []; + this.expect(5); + while (!this.match(8)) { + const type = this.state.type; + if (tokenIsIdentifier(type) || type === 134) { + properties.push(super.parsePropertyDefinition(null)); + } else { + this.unexpected(); + } + this.eat(12); + } + node.properties = properties; + this.next(); + return this.finishNode(node, "ObjectExpression"); + } + tsParseEntityName(flags) { + let entity; + if (flags & 1 && this.match(78)) { + if (flags & 2) { + entity = this.parseIdentifier(true); + } else { + const node = this.startNode(); + this.next(); + entity = this.finishNode(node, "ThisExpression"); + } + } else { + entity = this.parseIdentifier(!!(flags & 1)); + } + while (this.eat(16)) { + const node = this.startNodeAtNode(entity); + node.left = entity; + node.right = this.parseIdentifier(!!(flags & 1)); + entity = this.finishNode(node, "TSQualifiedName"); + } + return entity; + } + tsParseTypeReference() { + const node = this.startNode(); + node.typeName = this.tsParseEntityName(1); + if (!this.hasPrecedingLineBreak() && this.match(47)) { + { + node.typeParameters = this.tsParseTypeArguments(); + } + } + return this.finishNode(node, "TSTypeReference"); + } + tsParseThisTypePredicate(lhs) { + this.next(); + const node = this.startNodeAtNode(lhs); + node.parameterName = lhs; + node.typeAnnotation = this.tsParseTypeAnnotation(false); + node.asserts = false; + return this.finishNode(node, "TSTypePredicate"); + } + tsParseThisTypeNode() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSThisType"); + } + tsParseTypeQuery() { + const node = this.startNode(); + this.expect(87); + if (this.match(83)) { + node.exprName = this.tsParseImportType(); + } else { + { + node.exprName = this.tsParseEntityName(1 | 2); + } + } + if (!this.hasPrecedingLineBreak() && this.match(47)) { + { + node.typeParameters = this.tsParseTypeArguments(); + } + } + return this.finishNode(node, "TSTypeQuery"); + } + tsParseTypeParameter(parseModifiers) { + const node = this.startNode(); + parseModifiers(node); + node.name = this.tsParseTypeParameterName(); + node.constraint = this.tsEatThenParseType(81); + node.default = this.tsEatThenParseType(29); + return this.finishNode(node, "TSTypeParameter"); + } + tsTryParseTypeParameters(parseModifiers) { + if (this.match(47)) { + return this.tsParseTypeParameters(parseModifiers); + } + } + tsParseTypeParameters(parseModifiers) { + const node = this.startNode(); + if (this.match(47) || this.match(143)) { + this.next(); + } else { + this.unexpected(); + } + const refTrailingCommaPos = { + value: -1 + }; + node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos); + if (node.params.length === 0) { + this.raise(TSErrors.EmptyTypeParameters, node); + } + if (refTrailingCommaPos.value !== -1) { + this.addExtra(node, "trailingComma", refTrailingCommaPos.value); + } + return this.finishNode(node, "TSTypeParameterDeclaration"); + } + tsFillSignature(returnToken, signature) { + const returnTokenRequired = returnToken === 19; + const paramsKey = "parameters"; + const returnTypeKey = "typeAnnotation"; + signature.typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + this.expect(10); + signature[paramsKey] = this.tsParseBindingListForSignature(); + if (returnTokenRequired) { + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } else if (this.match(returnToken)) { + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } + } + tsParseBindingListForSignature() { + const list = super.parseBindingList(11, 41, 2); + for (const pattern of list) { + const { + type + } = pattern; + if (type === "AssignmentPattern" || type === "TSParameterProperty") { + this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, { + type + }); + } + } + return list; + } + tsParseTypeMemberSemicolon() { + if (!this.eat(12) && !this.isLineTerminator()) { + this.expect(13); + } + } + tsParseSignatureMember(kind, node) { + this.tsFillSignature(14, node); + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, kind); + } + tsIsUnambiguouslyIndexSignature() { + this.next(); + if (tokenIsIdentifier(this.state.type)) { + this.next(); + return this.match(14); + } + return false; + } + tsTryParseIndexSignature(node) { + if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) { + return; + } + this.expect(0); + const id = this.parseIdentifier(); + id.typeAnnotation = this.tsParseTypeAnnotation(); + this.resetEndLocation(id); + this.expect(3); + node.parameters = [id]; + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, "TSIndexSignature"); + } + tsParsePropertyOrMethodSignature(node, readonly) { + if (this.eat(17)) node.optional = true; + if (this.match(10) || this.match(47)) { + if (readonly) { + this.raise(TSErrors.ReadonlyForMethodSignature, node); + } + const method = node; + if (method.kind && this.match(47)) { + this.raise(TSErrors.AccessorCannotHaveTypeParameters, this.state.curPosition()); + } + this.tsFillSignature(14, method); + this.tsParseTypeMemberSemicolon(); + const paramsKey = "parameters"; + const returnTypeKey = "typeAnnotation"; + if (method.kind === "get") { + if (method[paramsKey].length > 0) { + this.raise(Errors.BadGetterArity, this.state.curPosition()); + if (this.isThisParam(method[paramsKey][0])) { + this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition()); + } + } + } else if (method.kind === "set") { + if (method[paramsKey].length !== 1) { + this.raise(Errors.BadSetterArity, this.state.curPosition()); + } else { + const firstParameter = method[paramsKey][0]; + if (this.isThisParam(firstParameter)) { + this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition()); + } + if (firstParameter.type === "Identifier" && firstParameter.optional) { + this.raise(TSErrors.SetAccessorCannotHaveOptionalParameter, this.state.curPosition()); + } + if (firstParameter.type === "RestElement") { + this.raise(TSErrors.SetAccessorCannotHaveRestParameter, this.state.curPosition()); + } + } + if (method[returnTypeKey]) { + this.raise(TSErrors.SetAccessorCannotHaveReturnType, method[returnTypeKey]); + } + } else { + method.kind = "method"; + } + return this.finishNode(method, "TSMethodSignature"); + } else { + const property = node; + if (readonly) property.readonly = true; + const type = this.tsTryParseTypeAnnotation(); + if (type) property.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(property, "TSPropertySignature"); + } + } + tsParseTypeMember() { + const node = this.startNode(); + if (this.match(10) || this.match(47)) { + return this.tsParseSignatureMember("TSCallSignatureDeclaration", node); + } + if (this.match(77)) { + const id = this.startNode(); + this.next(); + if (this.match(10) || this.match(47)) { + return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node); + } else { + node.key = this.createIdentifier(id, "new"); + return this.tsParsePropertyOrMethodSignature(node, false); + } + } + this.tsParseModifiers({ + allowedModifiers: ["readonly"], + disallowedModifiers: ["declare", "abstract", "private", "protected", "public", "static", "override"] + }, node); + const idx = this.tsTryParseIndexSignature(node); + if (idx) { + return idx; + } + super.parsePropertyName(node); + if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) { + node.kind = node.key.name; + super.parsePropertyName(node); + if (!this.match(10) && !this.match(47)) { + this.unexpected(null, 10); + } + } + return this.tsParsePropertyOrMethodSignature(node, !!node.readonly); + } + tsParseTypeLiteral() { + const node = this.startNode(); + node.members = this.tsParseObjectTypeMembers(); + return this.finishNode(node, "TSTypeLiteral"); + } + tsParseObjectTypeMembers() { + this.expect(5); + const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this)); + this.expect(8); + return members; + } + tsIsStartOfMappedType() { + this.next(); + if (this.eat(53)) { + return this.isContextual(122); + } + if (this.isContextual(122)) { + this.next(); + } + if (!this.match(0)) { + return false; + } + this.next(); + if (!this.tsIsIdentifier()) { + return false; + } + this.next(); + return this.match(58); + } + tsParseMappedType() { + const node = this.startNode(); + this.expect(5); + if (this.match(53)) { + node.readonly = this.state.value; + this.next(); + this.expectContextual(122); + } else if (this.eatContextual(122)) { + node.readonly = true; + } + this.expect(0); + { + const typeParameter = this.startNode(); + typeParameter.name = this.tsParseTypeParameterName(); + typeParameter.constraint = this.tsExpectThenParseType(58); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + } + node.nameType = this.eatContextual(93) ? this.tsParseType() : null; + this.expect(3); + if (this.match(53)) { + node.optional = this.state.value; + this.next(); + this.expect(17); + } else if (this.eat(17)) { + node.optional = true; + } + node.typeAnnotation = this.tsTryParseType(); + this.semicolon(); + this.expect(8); + return this.finishNode(node, "TSMappedType"); + } + tsParseTupleType() { + const node = this.startNode(); + node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false); + let seenOptionalElement = false; + node.elementTypes.forEach(elementNode => { + const { + type + } = elementNode; + if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) { + this.raise(TSErrors.OptionalTypeBeforeRequired, elementNode); + } + seenOptionalElement || (seenOptionalElement = type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType"); + }); + return this.finishNode(node, "TSTupleType"); + } + tsParseTupleElementType() { + const restStartLoc = this.state.startLoc; + const rest = this.eat(21); + const { + startLoc + } = this.state; + let labeled; + let label; + let optional; + let type; + const isWord = tokenIsKeywordOrIdentifier(this.state.type); + const chAfterWord = isWord ? this.lookaheadCharCode() : null; + if (chAfterWord === 58) { + labeled = true; + optional = false; + label = this.parseIdentifier(true); + this.expect(14); + type = this.tsParseType(); + } else if (chAfterWord === 63) { + optional = true; + const wordName = this.state.value; + const typeOrLabel = this.tsParseNonArrayType(); + if (this.lookaheadCharCode() === 58) { + labeled = true; + label = this.createIdentifier(this.startNodeAt(startLoc), wordName); + this.expect(17); + this.expect(14); + type = this.tsParseType(); + } else { + labeled = false; + type = typeOrLabel; + this.expect(17); + } + } else { + type = this.tsParseType(); + optional = this.eat(17); + labeled = this.eat(14); + } + if (labeled) { + let labeledNode; + if (label) { + labeledNode = this.startNodeAt(startLoc); + labeledNode.optional = optional; + labeledNode.label = label; + labeledNode.elementType = type; + if (this.eat(17)) { + labeledNode.optional = true; + this.raise(TSErrors.TupleOptionalAfterType, this.state.lastTokStartLoc); + } + } else { + labeledNode = this.startNodeAt(startLoc); + labeledNode.optional = optional; + this.raise(TSErrors.InvalidTupleMemberLabel, type); + labeledNode.label = type; + labeledNode.elementType = this.tsParseType(); + } + type = this.finishNode(labeledNode, "TSNamedTupleMember"); + } else if (optional) { + const optionalTypeNode = this.startNodeAt(startLoc); + optionalTypeNode.typeAnnotation = type; + type = this.finishNode(optionalTypeNode, "TSOptionalType"); + } + if (rest) { + const restNode = this.startNodeAt(restStartLoc); + restNode.typeAnnotation = type; + type = this.finishNode(restNode, "TSRestType"); + } + return type; + } + tsParseParenthesizedType() { + const node = this.startNode(); + this.expect(10); + node.typeAnnotation = this.tsParseType(); + this.expect(11); + return this.finishNode(node, "TSParenthesizedType"); + } + tsParseFunctionOrConstructorType(type, abstract) { + const node = this.startNode(); + if (type === "TSConstructorType") { + node.abstract = !!abstract; + if (abstract) this.next(); + this.next(); + } + this.tsInAllowConditionalTypesContext(() => this.tsFillSignature(19, node)); + return this.finishNode(node, type); + } + tsParseLiteralTypeNode() { + const node = this.startNode(); + switch (this.state.type) { + case 135: + case 136: + case 134: + case 85: + case 86: + node.literal = super.parseExprAtom(); + break; + default: + this.unexpected(); + } + return this.finishNode(node, "TSLiteralType"); + } + tsParseTemplateLiteralType() { + { + const node = this.startNode(); + node.literal = super.parseTemplate(false); + return this.finishNode(node, "TSLiteralType"); + } + } + parseTemplateSubstitution() { + if (this.state.inType) return this.tsParseType(); + return super.parseTemplateSubstitution(); + } + tsParseThisTypeOrThisTypePredicate() { + const thisKeyword = this.tsParseThisTypeNode(); + if (this.isContextual(116) && !this.hasPrecedingLineBreak()) { + return this.tsParseThisTypePredicate(thisKeyword); + } else { + return thisKeyword; + } + } + tsParseNonArrayType() { + switch (this.state.type) { + case 134: + case 135: + case 136: + case 85: + case 86: + return this.tsParseLiteralTypeNode(); + case 53: + if (this.state.value === "-") { + const node = this.startNode(); + const nextToken = this.lookahead(); + if (nextToken.type !== 135 && nextToken.type !== 136) { + this.unexpected(); + } + node.literal = this.parseMaybeUnary(); + return this.finishNode(node, "TSLiteralType"); + } + break; + case 78: + return this.tsParseThisTypeOrThisTypePredicate(); + case 87: + return this.tsParseTypeQuery(); + case 83: + return this.tsParseImportType(); + case 5: + return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral(); + case 0: + return this.tsParseTupleType(); + case 10: + return this.tsParseParenthesizedType(); + case 25: + case 24: + return this.tsParseTemplateLiteralType(); + default: + { + const { + type + } = this.state; + if (tokenIsIdentifier(type) || type === 88 || type === 84) { + const nodeType = type === 88 ? "TSVoidKeyword" : type === 84 ? "TSNullKeyword" : keywordTypeFromName(this.state.value); + if (nodeType !== undefined && this.lookaheadCharCode() !== 46) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, nodeType); + } + return this.tsParseTypeReference(); + } + } + } + this.unexpected(); + } + tsParseArrayTypeOrHigher() { + const { + startLoc + } = this.state; + let type = this.tsParseNonArrayType(); + while (!this.hasPrecedingLineBreak() && this.eat(0)) { + if (this.match(3)) { + const node = this.startNodeAt(startLoc); + node.elementType = type; + this.expect(3); + type = this.finishNode(node, "TSArrayType"); + } else { + const node = this.startNodeAt(startLoc); + node.objectType = type; + node.indexType = this.tsParseType(); + this.expect(3); + type = this.finishNode(node, "TSIndexedAccessType"); + } + } + return type; + } + tsParseTypeOperator() { + const node = this.startNode(); + const operator = this.state.value; + this.next(); + node.operator = operator; + node.typeAnnotation = this.tsParseTypeOperatorOrHigher(); + if (operator === "readonly") { + this.tsCheckTypeAnnotationForReadOnly(node); + } + return this.finishNode(node, "TSTypeOperator"); + } + tsCheckTypeAnnotationForReadOnly(node) { + switch (node.typeAnnotation.type) { + case "TSTupleType": + case "TSArrayType": + return; + default: + this.raise(TSErrors.UnexpectedReadonly, node); + } + } + tsParseInferType() { + const node = this.startNode(); + this.expectContextual(115); + const typeParameter = this.startNode(); + typeParameter.name = this.tsParseTypeParameterName(); + typeParameter.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType()); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + return this.finishNode(node, "TSInferType"); + } + tsParseConstraintForInferType() { + if (this.eat(81)) { + const constraint = this.tsInDisallowConditionalTypesContext(() => this.tsParseType()); + if (this.state.inDisallowConditionalTypesContext || !this.match(17)) { + return constraint; + } + } + } + tsParseTypeOperatorOrHigher() { + const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc; + return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(115) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher()); + } + tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) { + const node = this.startNode(); + const hasLeadingOperator = this.eat(operator); + const types = []; + do { + types.push(parseConstituentType()); + } while (this.eat(operator)); + if (types.length === 1 && !hasLeadingOperator) { + return types[0]; + } + node.types = types; + return this.finishNode(node, kind); + } + tsParseIntersectionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 45); + } + tsParseUnionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 43); + } + tsIsStartOfFunctionType() { + if (this.match(47)) { + return true; + } + return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this)); + } + tsSkipParameterStart() { + if (tokenIsIdentifier(this.state.type) || this.match(78)) { + this.next(); + return true; + } + if (this.match(5)) { + const { + errors + } = this.state; + const previousErrorCount = errors.length; + try { + this.parseObjectLike(8, true); + return errors.length === previousErrorCount; + } catch (_unused) { + return false; + } + } + if (this.match(0)) { + this.next(); + const { + errors + } = this.state; + const previousErrorCount = errors.length; + try { + super.parseBindingList(3, 93, 1); + return errors.length === previousErrorCount; + } catch (_unused2) { + return false; + } + } + return false; + } + tsIsUnambiguouslyStartOfFunctionType() { + this.next(); + if (this.match(11) || this.match(21)) { + return true; + } + if (this.tsSkipParameterStart()) { + if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) { + return true; + } + if (this.match(11)) { + this.next(); + if (this.match(19)) { + return true; + } + } + } + return false; + } + tsParseTypeOrTypePredicateAnnotation(returnToken) { + return this.tsInType(() => { + const t = this.startNode(); + this.expect(returnToken); + const node = this.startNode(); + const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this)); + if (asserts && this.match(78)) { + let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate(); + if (thisTypePredicate.type === "TSThisType") { + node.parameterName = thisTypePredicate; + node.asserts = true; + node.typeAnnotation = null; + thisTypePredicate = this.finishNode(node, "TSTypePredicate"); + } else { + this.resetStartLocationFromNode(thisTypePredicate, node); + thisTypePredicate.asserts = true; + } + t.typeAnnotation = thisTypePredicate; + return this.finishNode(t, "TSTypeAnnotation"); + } + const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this)); + if (!typePredicateVariable) { + if (!asserts) { + return this.tsParseTypeAnnotation(false, t); + } + node.parameterName = this.parseIdentifier(); + node.asserts = asserts; + node.typeAnnotation = null; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + } + const type = this.tsParseTypeAnnotation(false); + node.parameterName = typePredicateVariable; + node.typeAnnotation = type; + node.asserts = asserts; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + }); + } + tsTryParseTypeOrTypePredicateAnnotation() { + if (this.match(14)) { + return this.tsParseTypeOrTypePredicateAnnotation(14); + } + } + tsTryParseTypeAnnotation() { + if (this.match(14)) { + return this.tsParseTypeAnnotation(); + } + } + tsTryParseType() { + return this.tsEatThenParseType(14); + } + tsParseTypePredicatePrefix() { + const id = this.parseIdentifier(); + if (this.isContextual(116) && !this.hasPrecedingLineBreak()) { + this.next(); + return id; + } + } + tsParseTypePredicateAsserts() { + if (this.state.type !== 109) { + return false; + } + const containsEsc = this.state.containsEsc; + this.next(); + if (!tokenIsIdentifier(this.state.type) && !this.match(78)) { + return false; + } + if (containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, this.state.lastTokStartLoc, { + reservedWord: "asserts" + }); + } + return true; + } + tsParseTypeAnnotation(eatColon = true, t = this.startNode()) { + this.tsInType(() => { + if (eatColon) this.expect(14); + t.typeAnnotation = this.tsParseType(); + }); + return this.finishNode(t, "TSTypeAnnotation"); + } + tsParseType() { + assert(this.state.inType); + const type = this.tsParseNonConditionalType(); + if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) { + return type; + } + const node = this.startNodeAtNode(type); + node.checkType = type; + node.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType()); + this.expect(17); + node.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); + this.expect(14); + node.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); + return this.finishNode(node, "TSConditionalType"); + } + isAbstractConstructorSignature() { + return this.isContextual(124) && this.isLookaheadContextual("new"); + } + tsParseNonConditionalType() { + if (this.tsIsStartOfFunctionType()) { + return this.tsParseFunctionOrConstructorType("TSFunctionType"); + } + if (this.match(77)) { + return this.tsParseFunctionOrConstructorType("TSConstructorType"); + } else if (this.isAbstractConstructorSignature()) { + return this.tsParseFunctionOrConstructorType("TSConstructorType", true); + } + return this.tsParseUnionTypeOrHigher(); + } + tsParseTypeAssertion() { + if (this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc); + } + const node = this.startNode(); + node.typeAnnotation = this.tsInType(() => { + this.next(); + return this.match(75) ? this.tsParseTypeReference() : this.tsParseType(); + }); + this.expect(48); + node.expression = this.parseMaybeUnary(); + return this.finishNode(node, "TSTypeAssertion"); + } + tsParseHeritageClause(token) { + const originalStartLoc = this.state.startLoc; + const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", () => { + { + const node = this.startNode(); + node.expression = this.tsParseEntityName(1 | 2); + if (this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSExpressionWithTypeArguments"); + } + }); + if (!delimitedList.length) { + this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, { + token + }); + } + return delimitedList; + } + tsParseInterfaceDeclaration(node, properties = {}) { + if (this.hasFollowingLineBreak()) return null; + this.expectContextual(129); + if (properties.declare) node.declare = true; + if (tokenIsIdentifier(this.state.type)) { + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, 130); + } else { + node.id = null; + this.raise(TSErrors.MissingInterfaceName, this.state.startLoc); + } + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers); + if (this.eat(81)) { + node.extends = this.tsParseHeritageClause("extends"); + } + const body = this.startNode(); + body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this)); + node.body = this.finishNode(body, "TSInterfaceBody"); + return this.finishNode(node, "TSInterfaceDeclaration"); + } + tsParseTypeAliasDeclaration(node) { + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, 2); + node.typeAnnotation = this.tsInType(() => { + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers); + this.expect(29); + if (this.isContextual(114) && this.lookaheadCharCode() !== 46) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSIntrinsicKeyword"); + } + return this.tsParseType(); + }); + this.semicolon(); + return this.finishNode(node, "TSTypeAliasDeclaration"); + } + tsInTopLevelContext(cb) { + if (this.curContext() !== types.brace) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } else { + return cb(); + } + } + tsInType(cb) { + const oldInType = this.state.inType; + this.state.inType = true; + try { + return cb(); + } finally { + this.state.inType = oldInType; + } + } + tsInDisallowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = true; + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsInAllowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = false; + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsEatThenParseType(token) { + if (this.match(token)) { + return this.tsNextThenParseType(); + } + } + tsExpectThenParseType(token) { + return this.tsInType(() => { + this.expect(token); + return this.tsParseType(); + }); + } + tsNextThenParseType() { + return this.tsInType(() => { + this.next(); + return this.tsParseType(); + }); + } + tsParseEnumMember() { + const node = this.startNode(); + node.id = this.match(134) ? super.parseStringLiteral(this.state.value) : this.parseIdentifier(true); + if (this.eat(29)) { + node.initializer = super.parseMaybeAssignAllowIn(); + } + return this.finishNode(node, "TSEnumMember"); + } + tsParseEnumDeclaration(node, properties = {}) { + if (properties.const) node.const = true; + if (properties.declare) node.declare = true; + this.expectContextual(126); + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, node.const ? 8971 : 8459); + { + this.expect(5); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(8); + } + return this.finishNode(node, "TSEnumDeclaration"); + } + tsParseEnumBody() { + const node = this.startNode(); + this.expect(5); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(8); + return this.finishNode(node, "TSEnumBody"); + } + tsParseModuleBlock() { + const node = this.startNode(); + this.scope.enter(0); + this.expect(5); + super.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8); + this.scope.exit(); + return this.finishNode(node, "TSModuleBlock"); + } + tsParseModuleOrNamespaceDeclaration(node, nested = false) { + node.id = this.parseIdentifier(); + if (!nested) { + this.checkIdentifier(node.id, 1024); + } + if (this.eat(16)) { + const inner = this.startNode(); + this.tsParseModuleOrNamespaceDeclaration(inner, true); + node.body = inner; + } else { + this.scope.enter(1024); + this.prodParam.enter(0); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } + return this.finishNode(node, "TSModuleDeclaration"); + } + tsParseAmbientExternalModuleDeclaration(node) { + if (this.isContextual(112)) { + node.kind = "global"; + { + node.global = true; + } + node.id = this.parseIdentifier(); + } else if (this.match(134)) { + node.kind = "module"; + node.id = super.parseStringLiteral(this.state.value); + } else { + this.unexpected(); + } + if (this.match(5)) { + this.scope.enter(1024); + this.prodParam.enter(0); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } else { + this.semicolon(); + } + return this.finishNode(node, "TSModuleDeclaration"); + } + tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier, isExport) { + { + node.isExport = isExport || false; + } + node.id = maybeDefaultIdentifier || this.parseIdentifier(); + this.checkIdentifier(node.id, 4096); + this.expect(29); + const moduleReference = this.tsParseModuleReference(); + if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") { + this.raise(TSErrors.ImportAliasHasImportType, moduleReference); + } + node.moduleReference = moduleReference; + this.semicolon(); + return this.finishNode(node, "TSImportEqualsDeclaration"); + } + tsIsExternalModuleReference() { + return this.isContextual(119) && this.lookaheadCharCode() === 40; + } + tsParseModuleReference() { + return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(0); + } + tsParseExternalModuleReference() { + const node = this.startNode(); + this.expectContextual(119); + this.expect(10); + if (!this.match(134)) { + this.unexpected(); + } + node.expression = super.parseExprAtom(); + this.expect(11); + this.sawUnambiguousESM = true; + return this.finishNode(node, "TSExternalModuleReference"); + } + tsLookAhead(f) { + const state = this.state.clone(); + const res = f(); + this.state = state; + return res; + } + tsTryParseAndCatch(f) { + const result = this.tryParse(abort => f() || abort()); + if (result.aborted || !result.node) return; + if (result.error) this.state = result.failState; + return result.node; + } + tsTryParse(f) { + const state = this.state.clone(); + const result = f(); + if (result !== undefined && result !== false) { + return result; + } + this.state = state; + } + tsTryParseDeclare(node) { + if (this.isLineTerminator()) { + return; + } + const startType = this.state.type; + return this.tsInAmbientContext(() => { + switch (startType) { + case 68: + node.declare = true; + return super.parseFunctionStatement(node, false, false); + case 80: + node.declare = true; + return this.parseClass(node, true, false); + case 126: + return this.tsParseEnumDeclaration(node, { + declare: true + }); + case 112: + return this.tsParseAmbientExternalModuleDeclaration(node); + case 100: + if (this.state.containsEsc) { + return; + } + case 75: + case 74: + if (!this.match(75) || !this.isLookaheadContextual("enum")) { + node.declare = true; + return this.parseVarStatement(node, this.state.value, true); + } + this.expect(75); + return this.tsParseEnumDeclaration(node, { + const: true, + declare: true + }); + case 107: + if (this.isUsing()) { + this.raise(TSErrors.InvalidModifierOnUsingDeclaration, this.state.startLoc, "declare"); + node.declare = true; + return this.parseVarStatement(node, "using", true); + } + break; + case 96: + if (this.isAwaitUsing()) { + this.raise(TSErrors.InvalidModifierOnAwaitUsingDeclaration, this.state.startLoc, "declare"); + node.declare = true; + this.next(); + return this.parseVarStatement(node, "await using", true); + } + break; + case 129: + { + const result = this.tsParseInterfaceDeclaration(node, { + declare: true + }); + if (result) return result; + } + default: + if (tokenIsIdentifier(startType)) { + return this.tsParseDeclaration(node, this.state.value, true, null); + } + } + }); + } + tsTryParseExportDeclaration() { + return this.tsParseDeclaration(this.startNode(), this.state.value, true, null); + } + tsParseExpressionStatement(node, expr, decorators) { + switch (expr.name) { + case "declare": + { + const declaration = this.tsTryParseDeclare(node); + if (declaration) { + declaration.declare = true; + } + return declaration; + } + case "global": + if (this.match(5)) { + this.scope.enter(1024); + this.prodParam.enter(0); + const mod = node; + mod.kind = "global"; + { + node.global = true; + } + mod.id = expr; + mod.body = this.tsParseModuleBlock(); + this.scope.exit(); + this.prodParam.exit(); + return this.finishNode(mod, "TSModuleDeclaration"); + } + break; + default: + return this.tsParseDeclaration(node, expr.name, false, decorators); + } + } + tsParseDeclaration(node, value, next, decorators) { + switch (value) { + case "abstract": + if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) { + return this.tsParseAbstractDeclaration(node, decorators); + } + break; + case "module": + if (this.tsCheckLineTerminator(next)) { + if (this.match(134)) { + return this.tsParseAmbientExternalModuleDeclaration(node); + } else if (tokenIsIdentifier(this.state.type)) { + node.kind = "module"; + return this.tsParseModuleOrNamespaceDeclaration(node); + } + } + break; + case "namespace": + if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + node.kind = "namespace"; + return this.tsParseModuleOrNamespaceDeclaration(node); + } + break; + case "type": + if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + return this.tsParseTypeAliasDeclaration(node); + } + break; + } + } + tsCheckLineTerminator(next) { + if (next) { + if (this.hasFollowingLineBreak()) return false; + this.next(); + return true; + } + return !this.isLineTerminator(); + } + tsTryParseGenericAsyncArrowFunction(startLoc) { + if (!this.match(47)) return; + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = true; + const res = this.tsTryParseAndCatch(() => { + const node = this.startNodeAt(startLoc); + node.typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier); + super.parseFunctionParams(node); + node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation(); + this.expect(19); + return node; + }); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + if (!res) return; + return super.parseArrowExpression(res, null, true); + } + tsParseTypeArgumentsInExpression() { + if (this.reScan_lt() !== 47) return; + return this.tsParseTypeArguments(); + } + tsParseTypeArguments() { + const node = this.startNode(); + node.params = this.tsInType(() => this.tsInTopLevelContext(() => { + this.expect(47); + return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this)); + })); + if (node.params.length === 0) { + this.raise(TSErrors.EmptyTypeArguments, node); + } else if (!this.state.inType && this.curContext() === types.brace) { + this.reScan_lt_gt(); + } + this.expect(48); + return this.finishNode(node, "TSTypeParameterInstantiation"); + } + tsIsDeclarationStart() { + return tokenIsTSDeclarationStart(this.state.type); + } + isExportDefaultSpecifier() { + if (this.tsIsDeclarationStart()) return false; + return super.isExportDefaultSpecifier(); + } + parseBindingElement(flags, decorators) { + const startLoc = decorators.length ? decorators[0].loc.start : this.state.startLoc; + const modified = {}; + this.tsParseModifiers({ + allowedModifiers: ["public", "private", "protected", "override", "readonly"] + }, modified); + const accessibility = modified.accessibility; + const override = modified.override; + const readonly = modified.readonly; + if (!(flags & 4) && (accessibility || readonly || override)) { + this.raise(TSErrors.UnexpectedParameterModifier, startLoc); + } + const left = this.parseMaybeDefault(); + if (flags & 2) { + this.parseFunctionParamType(left); + } + const elt = this.parseMaybeDefault(left.loc.start, left); + if (accessibility || readonly || override) { + const pp = this.startNodeAt(startLoc); + if (decorators.length) { + pp.decorators = decorators; + } + if (accessibility) pp.accessibility = accessibility; + if (readonly) pp.readonly = readonly; + if (override) pp.override = override; + if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") { + this.raise(TSErrors.UnsupportedParameterPropertyKind, pp); + } + pp.parameter = elt; + return this.finishNode(pp, "TSParameterProperty"); + } + if (decorators.length) { + left.decorators = decorators; + } + return elt; + } + isSimpleParameter(node) { + return node.type === "TSParameterProperty" && super.isSimpleParameter(node.parameter) || super.isSimpleParameter(node); + } + tsDisallowOptionalPattern(node) { + for (const param of node.params) { + if (param.type !== "Identifier" && param.optional && !this.state.isAmbientContext) { + this.raise(TSErrors.PatternIsOptional, param); + } + } + } + setArrowFunctionParameters(node, params, trailingCommaLoc) { + super.setArrowFunctionParameters(node, params, trailingCommaLoc); + this.tsDisallowOptionalPattern(node); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(14)) { + node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14); + } + const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" || type === "ClassPrivateMethod" ? "TSDeclareMethod" : undefined; + if (bodilessType && !this.match(5) && this.isLineTerminator()) { + return this.finishNode(node, bodilessType); + } + if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) { + this.raise(TSErrors.DeclareFunctionHasImplementation, node); + if (node.declare) { + return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod); + } + } + this.tsDisallowOptionalPattern(node); + return super.parseFunctionBodyAndFinish(node, type, isMethod); + } + registerFunctionStatementId(node) { + if (!node.body && node.id) { + this.checkIdentifier(node.id, 1024); + } else { + super.registerFunctionStatementId(node); + } + } + tsCheckForInvalidTypeCasts(items) { + items.forEach(node => { + if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") { + this.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation); + } + }); + } + toReferencedList(exprList, isInParens) { + this.tsCheckForInvalidTypeCasts(exprList); + return exprList; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors); + if (node.type === "ArrayExpression") { + this.tsCheckForInvalidTypeCasts(node.elements); + } + return node; + } + parseSubscript(base, startLoc, noCalls, state) { + if (!this.hasPrecedingLineBreak() && this.match(35)) { + this.state.canStartJSXElement = false; + this.next(); + const nonNullExpression = this.startNodeAt(startLoc); + nonNullExpression.expression = base; + return this.finishNode(nonNullExpression, "TSNonNullExpression"); + } + let isOptionalCall = false; + if (this.match(18) && this.lookaheadCharCode() === 60) { + if (noCalls) { + state.stop = true; + return base; + } + state.optionalChainMember = isOptionalCall = true; + this.next(); + } + if (this.match(47) || this.match(51)) { + let missingParenErrorLoc; + const result = this.tsTryParseAndCatch(() => { + if (!noCalls && this.atPossibleAsyncArrow(base)) { + const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startLoc); + if (asyncArrowFn) { + return asyncArrowFn; + } + } + const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (!typeArguments) return; + if (isOptionalCall && !this.match(10)) { + missingParenErrorLoc = this.state.curPosition(); + return; + } + if (tokenIsTemplate(this.state.type)) { + const result = super.parseTaggedTemplateExpression(base, startLoc, state); + { + result.typeParameters = typeArguments; + } + return result; + } + if (!noCalls && this.eat(10)) { + const node = this.startNodeAt(startLoc); + node.callee = base; + node.arguments = this.parseCallExpressionArguments(); + this.tsCheckForInvalidTypeCasts(node.arguments); + { + node.typeParameters = typeArguments; + } + if (state.optionalChainMember) { + node.optional = isOptionalCall; + } + return this.finishCallExpression(node, state.optionalChainMember); + } + const tokenType = this.state.type; + if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) { + return; + } + const node = this.startNodeAt(startLoc); + node.expression = base; + { + node.typeParameters = typeArguments; + } + return this.finishNode(node, "TSInstantiationExpression"); + }); + if (missingParenErrorLoc) { + this.unexpected(missingParenErrorLoc, 10); + } + if (result) { + if (result.type === "TSInstantiationExpression") { + if (this.match(16) || this.match(18) && this.lookaheadCharCode() !== 40) { + this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, this.state.startLoc); + } + if (!this.match(16) && !this.match(18)) { + result.expression = super.stopParseSubscript(base, state); + } + } + return result; + } + } + return super.parseSubscript(base, startLoc, noCalls, state); + } + parseNewCallee(node) { + var _callee$extra; + super.parseNewCallee(node); + const { + callee + } = node; + if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) { + { + node.typeParameters = callee.typeParameters; + } + node.callee = callee.expression; + } + } + parseExprOp(left, leftStartLoc, minPrec) { + let isSatisfies; + if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && (this.isContextual(93) || (isSatisfies = this.isContextual(120)))) { + const node = this.startNodeAt(leftStartLoc); + node.expression = left; + node.typeAnnotation = this.tsInType(() => { + this.next(); + if (this.match(75)) { + if (isSatisfies) { + this.raise(Errors.UnexpectedKeyword, this.state.startLoc, { + keyword: "const" + }); + } + return this.tsParseTypeReference(); + } + return this.tsParseType(); + }); + this.finishNode(node, isSatisfies ? "TSSatisfiesExpression" : "TSAsExpression"); + this.reScan_lt_gt(); + return this.parseExprOp(node, leftStartLoc, minPrec); + } + return super.parseExprOp(left, leftStartLoc, minPrec); + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (!this.state.isAmbientContext) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } + checkImportReflection(node) { + super.checkImportReflection(node); + if (node.module && node.importKind !== "value") { + this.raise(TSErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start); + } + } + checkDuplicateExports() {} + isPotentialImportPhase(isExport) { + if (super.isPotentialImportPhase(isExport)) return true; + if (this.isContextual(130)) { + const ch = this.lookaheadCharCode(); + return isExport ? ch === 123 || ch === 42 : ch !== 61; + } + return !isExport && this.isContextual(87); + } + applyImportPhase(node, isExport, phase, loc) { + super.applyImportPhase(node, isExport, phase, loc); + if (isExport) { + node.exportKind = phase === "type" ? "type" : "value"; + } else { + node.importKind = phase === "type" || phase === "typeof" ? phase : "value"; + } + } + parseImport(node) { + if (this.match(134)) { + node.importKind = "value"; + return super.parseImport(node); + } + let importNode; + if (tokenIsIdentifier(this.state.type) && this.lookaheadCharCode() === 61) { + node.importKind = "value"; + return this.tsParseImportEqualsDeclaration(node); + } else if (this.isContextual(130)) { + const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, false); + if (this.lookaheadCharCode() === 61) { + return this.tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier); + } else { + importNode = super.parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier); + } + } else { + importNode = super.parseImport(node); + } + if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") { + this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode); + } + return importNode; + } + parseExport(node, decorators) { + if (this.match(83)) { + const nodeImportEquals = node; + this.next(); + let maybeDefaultIdentifier = null; + if (this.isContextual(130) && this.isPotentialImportPhase(false)) { + maybeDefaultIdentifier = this.parseMaybeImportPhase(nodeImportEquals, false); + } else { + nodeImportEquals.importKind = "value"; + } + const declaration = this.tsParseImportEqualsDeclaration(nodeImportEquals, maybeDefaultIdentifier, true); + { + return declaration; + } + } else if (this.eat(29)) { + const assign = node; + assign.expression = super.parseExpression(); + this.semicolon(); + this.sawUnambiguousESM = true; + return this.finishNode(assign, "TSExportAssignment"); + } else if (this.eatContextual(93)) { + const decl = node; + this.expectContextual(128); + decl.id = this.parseIdentifier(); + this.semicolon(); + return this.finishNode(decl, "TSNamespaceExportDeclaration"); + } else { + return super.parseExport(node, decorators); + } + } + isAbstractClass() { + return this.isContextual(124) && this.isLookaheadContextual("class"); + } + parseExportDefaultExpression() { + if (this.isAbstractClass()) { + const cls = this.startNode(); + this.next(); + cls.abstract = true; + return this.parseClass(cls, true, true); + } + if (this.match(129)) { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + } + return super.parseExportDefaultExpression(); + } + parseVarStatement(node, kind, allowMissingInitializer = false) { + const { + isAmbientContext + } = this.state; + const declaration = super.parseVarStatement(node, kind, allowMissingInitializer || isAmbientContext); + if (!isAmbientContext) return declaration; + if (!node.declare && (kind === "using" || kind === "await using")) { + this.raiseOverwrite(TSErrors.UsingDeclarationInAmbientContext, node, kind); + return declaration; + } + for (const { + id, + init + } of declaration.declarations) { + if (!init) continue; + if (kind === "var" || kind === "let" || !!id.typeAnnotation) { + this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init); + } else if (!isValidAmbientConstInitializer(init, this.hasPlugin("estree"))) { + this.raise(TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference, init); + } + } + return declaration; + } + parseStatementContent(flags, decorators) { + if (this.match(75) && this.isLookaheadContextual("enum")) { + const node = this.startNode(); + this.expect(75); + return this.tsParseEnumDeclaration(node, { + const: true + }); + } + if (this.isContextual(126)) { + return this.tsParseEnumDeclaration(this.startNode()); + } + if (this.isContextual(129)) { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + } + return super.parseStatementContent(flags, decorators); + } + parseAccessModifier() { + return this.tsParseModifier(["public", "protected", "private"]); + } + tsHasSomeModifiers(member, modifiers) { + return modifiers.some(modifier => { + if (tsIsAccessModifier(modifier)) { + return member.accessibility === modifier; + } + return !!member[modifier]; + }); + } + tsIsStartOfStaticBlocks() { + return this.isContextual(106) && this.lookaheadCharCode() === 123; + } + parseClassMember(classBody, member, state) { + const modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"]; + this.tsParseModifiers({ + allowedModifiers: modifiers, + disallowedModifiers: ["in", "out"], + stopOnStartOfClassStaticBlock: true, + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }, member); + const callParseClassMemberWithIsStatic = () => { + if (this.tsIsStartOfStaticBlocks()) { + this.next(); + this.next(); + if (this.tsHasSomeModifiers(member, modifiers)) { + this.raise(TSErrors.StaticBlockCannotHaveModifier, this.state.curPosition()); + } + super.parseClassStaticBlock(classBody, member); + } else { + this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static); + } + }; + if (member.declare) { + this.tsInAmbientContext(callParseClassMemberWithIsStatic); + } else { + callParseClassMemberWithIsStatic(); + } + } + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const idx = this.tsTryParseIndexSignature(member); + if (idx) { + classBody.body.push(idx); + if (member.abstract) { + this.raise(TSErrors.IndexSignatureHasAbstract, member); + } + if (member.accessibility) { + this.raise(TSErrors.IndexSignatureHasAccessibility, member, { + modifier: member.accessibility + }); + } + if (member.declare) { + this.raise(TSErrors.IndexSignatureHasDeclare, member); + } + if (member.override) { + this.raise(TSErrors.IndexSignatureHasOverride, member); + } + return; + } + if (!this.state.inAbstractClass && member.abstract) { + this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member); + } + if (member.override) { + if (!state.hadSuperClass) { + this.raise(TSErrors.OverrideNotInSubClass, member); + } + } + super.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + parsePostMemberNameModifiers(methodOrProp) { + const optional = this.eat(17); + if (optional) methodOrProp.optional = true; + if (methodOrProp.readonly && this.match(10)) { + this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp); + } + if (methodOrProp.declare && this.match(10)) { + this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp); + } + } + parseExpressionStatement(node, expr, decorators) { + const decl = expr.type === "Identifier" ? this.tsParseExpressionStatement(node, expr, decorators) : undefined; + return decl || super.parseExpressionStatement(node, expr, decorators); + } + shouldParseExportDeclaration() { + if (this.tsIsDeclarationStart()) return true; + return super.shouldParseExportDeclaration(); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (!this.match(17)) return expr; + if (this.state.maybeInArrowParameters) { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { + this.setOptionalParametersError(refExpressionErrors); + return expr; + } + } + return super.parseConditional(expr, startLoc, refExpressionErrors); + } + parseParenItem(node, startLoc) { + const newNode = super.parseParenItem(node, startLoc); + if (this.eat(17)) { + newNode.optional = true; + this.resetEndLocation(node); + } + if (this.match(14)) { + const typeCastNode = this.startNodeAt(startLoc); + typeCastNode.expression = node; + typeCastNode.typeAnnotation = this.tsParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TSTypeCastExpression"); + } + return node; + } + parseExportDeclaration(node) { + if (!this.state.isAmbientContext && this.isContextual(125)) { + return this.tsInAmbientContext(() => this.parseExportDeclaration(node)); + } + const startLoc = this.state.startLoc; + const isDeclare = this.eatContextual(125); + if (isDeclare && (this.isContextual(125) || !this.shouldParseExportDeclaration())) { + throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, this.state.startLoc); + } + const isIdentifier = tokenIsIdentifier(this.state.type); + const declaration = isIdentifier && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(node); + if (!declaration) return null; + if (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare) { + node.exportKind = "type"; + } + if (isDeclare && declaration.type !== "TSImportEqualsDeclaration") { + this.resetStartLocation(declaration, startLoc); + declaration.declare = true; + } + return declaration; + } + parseClassId(node, isStatement, optionalId, bindingType) { + if ((!isStatement || optionalId) && this.isContextual(113)) { + return; + } + super.parseClassId(node, isStatement, optionalId, node.declare ? 1024 : 8331); + const typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers); + if (typeParameters) node.typeParameters = typeParameters; + } + parseClassPropertyAnnotation(node) { + if (!node.optional) { + if (this.eat(35)) { + node.definite = true; + } else if (this.eat(17)) { + node.optional = true; + } + } + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + } + parseClassProperty(node) { + this.parseClassPropertyAnnotation(node); + if (this.state.isAmbientContext && !(node.readonly && !node.typeAnnotation) && this.match(29)) { + this.raise(TSErrors.DeclareClassFieldHasInitializer, this.state.startLoc); + } + if (node.abstract && this.match(29)) { + const { + key + } = node; + this.raise(TSErrors.AbstractPropertyHasInitializer, this.state.startLoc, { + propertyName: key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]` + }); + } + return super.parseClassProperty(node); + } + parseClassPrivateProperty(node) { + if (node.abstract) { + this.raise(TSErrors.PrivateElementHasAbstract, node); + } + if (node.accessibility) { + this.raise(TSErrors.PrivateElementHasAccessibility, node, { + modifier: node.accessibility + }); + } + this.parseClassPropertyAnnotation(node); + return super.parseClassPrivateProperty(node); + } + parseClassAccessorProperty(node) { + this.parseClassPropertyAnnotation(node); + if (node.optional) { + this.raise(TSErrors.AccessorCannotBeOptional, node); + } + return super.parseClassAccessorProperty(node); + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters && isConstructor) { + this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters); + } + const { + declare = false, + kind + } = method; + if (declare && (kind === "get" || kind === "set")) { + this.raise(TSErrors.DeclareAccessor, method, { + kind + }); + } + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + declareClassPrivateMethodInScope(node, kind) { + if (node.type === "TSDeclareMethod") return; + if (node.type === "MethodDefinition" && node.value.body == null) { + return; + } + super.declareClassPrivateMethodInScope(node, kind); + } + parseClassSuper(node) { + super.parseClassSuper(node); + if (node.superClass && (this.match(47) || this.match(51))) { + { + node.superTypeParameters = this.tsParseTypeArgumentsInExpression(); + } + } + if (this.eatContextual(113)) { + node.implements = this.tsParseHeritageClause("implements"); + } + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) prop.typeParameters = typeParameters; + return super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + } + parseFunctionParams(node, isConstructor) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) node.typeParameters = typeParameters; + super.parseFunctionParams(node, isConstructor); + } + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + if (decl.id.type === "Identifier" && !this.hasPrecedingLineBreak() && this.eat(35)) { + decl.definite = true; + } + const type = this.tsTryParseTypeAnnotation(); + if (type) { + decl.id.typeAnnotation = type; + this.resetEndLocation(decl.id); + } + } + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(14)) { + node.returnType = this.tsParseTypeAnnotation(); + } + return super.parseAsyncArrowFromCallExpression(node, call); + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2; + let state; + let jsx; + let typeCast; + if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const currentContext = context[context.length - 1]; + if (currentContext === types.j_oTag || currentContext === types.j_expr) { + context.pop(); + } + } + if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) { + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + if (!state || state === this.state) state = this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _expr$extra, _typeParameters; + typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier); + const expr = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + abort(); + } + if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) { + this.resetStartLocationFromNode(expr, typeParameters); + } + expr.typeParameters = typeParameters; + return expr; + }, state); + if (!arrow.error && !arrow.aborted) { + if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); + return arrow.node; + } + if (!jsx) { + assert(!this.hasPlugin("jsx")); + typeCast = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!typeCast.error) return typeCast.node; + } + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + if (arrow.node) { + this.state = arrow.failState; + if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); + return arrow.node; + } + if ((_typeCast = typeCast) != null && _typeCast.node) { + this.state = typeCast.failState; + return typeCast.node; + } + throw ((_jsx3 = jsx) == null ? void 0 : _jsx3.error) || arrow.error || ((_typeCast2 = typeCast) == null ? void 0 : _typeCast2.error); + } + reportReservedArrowTypeParam(node) { + var _node$extra2; + if (node.params.length === 1 && !node.params[0].constraint && !((_node$extra2 = node.extra) != null && _node$extra2.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + this.raise(TSErrors.ReservedArrowTypeParam, node); + } + } + parseMaybeUnary(refExpressionErrors, sawUnary) { + if (!this.hasPlugin("jsx") && this.match(47)) { + return this.tsParseTypeAssertion(); + } + return super.parseMaybeUnary(refExpressionErrors, sawUnary); + } + parseArrow(node) { + if (this.match(14)) { + const result = this.tryParse(abort => { + const returnType = this.tsParseTypeOrTypePredicateAnnotation(14); + if (this.canInsertSemicolon() || !this.match(19)) abort(); + return returnType; + }); + if (result.aborted) return; + if (!result.thrown) { + if (result.error) this.state = result.failState; + node.returnType = result.node; + } + } + return super.parseArrow(node); + } + parseFunctionParamType(param) { + if (this.eat(17)) { + param.optional = true; + } + const type = this.tsTryParseTypeAnnotation(); + if (type) param.typeAnnotation = type; + this.resetEndLocation(param); + return param; + } + isAssignable(node, isBinding) { + switch (node.type) { + case "TSTypeCastExpression": + return this.isAssignable(node.expression, isBinding); + case "TSParameterProperty": + return true; + default: + return super.isAssignable(node, isBinding); + } + } + toAssignable(node, isLHS = false) { + switch (node.type) { + case "ParenthesizedExpression": + this.toAssignableParenthesizedExpression(node, isLHS); + break; + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + if (isLHS) { + this.expressionScope.recordArrowParameterBindingError(TSErrors.UnexpectedTypeCastInParameter, node); + } else { + this.raise(TSErrors.UnexpectedTypeCastInParameter, node); + } + this.toAssignable(node.expression, isLHS); + break; + case "AssignmentExpression": + if (!isLHS && node.left.type === "TSTypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } + default: + super.toAssignable(node, isLHS); + } + } + toAssignableParenthesizedExpression(node, isLHS) { + switch (node.expression.type) { + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + case "ParenthesizedExpression": + this.toAssignable(node.expression, isLHS); + break; + default: + super.toAssignable(node, isLHS); + } + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + case "TSNonNullExpression": + this.checkToRestConversion(node.expression, false); + break; + default: + super.checkToRestConversion(node, allowPattern); + } + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + switch (type) { + case "TSTypeCastExpression": + return true; + case "TSParameterProperty": + return "parameter"; + case "TSNonNullExpression": + return "expression"; + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + return (binding !== 64 || !isUnparenthesizedInAssign) && ["expression", true]; + default: + return super.isValidLVal(type, isUnparenthesizedInAssign, binding); + } + } + parseBindingAtom() { + if (this.state.type === 78) { + return this.parseIdentifier(true); + } + return super.parseBindingAtom(); + } + parseMaybeDecoratorArguments(expr, startLoc) { + if (this.match(47) || this.match(51)) { + const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (this.match(10)) { + const call = super.parseMaybeDecoratorArguments(expr, startLoc); + { + call.typeParameters = typeArguments; + } + return call; + } + this.unexpected(null, 10); + } + return super.parseMaybeDecoratorArguments(expr, startLoc); + } + checkCommaAfterRest(close) { + if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) { + this.next(); + return false; + } + return super.checkCommaAfterRest(close); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(35) || this.match(14) || super.isClassProperty(); + } + parseMaybeDefault(startLoc, left) { + const node = super.parseMaybeDefault(startLoc, left); + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation); + } + return node; + } + getTokenFromCode(code) { + if (this.state.inType) { + if (code === 62) { + this.finishOp(48, 1); + return; + } + if (code === 60) { + this.finishOp(47, 1); + return; + } + } + super.getTokenFromCode(code); + } + reScan_lt_gt() { + const { + type + } = this.state; + if (type === 47) { + this.state.pos -= 1; + this.readToken_lt(); + } else if (type === 48) { + this.state.pos -= 1; + this.readToken_gt(); + } + } + reScan_lt() { + const { + type + } = this.state; + if (type === 51) { + this.state.pos -= 2; + this.finishOp(47, 1); + return 47; + } + return type; + } + toAssignableListItem(exprList, index, isLHS) { + const node = exprList[index]; + if (node.type === "TSTypeCastExpression") { + exprList[index] = this.typeCastToParameter(node); + } + super.toAssignableListItem(exprList, index, isLHS); + } + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); + return node.expression; + } + shouldParseArrow(params) { + if (this.match(14)) { + return params.every(expr => this.isAssignable(expr, true)); + } + return super.shouldParseArrow(params); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + canHaveLeadingDecorator() { + return super.canHaveLeadingDecorator() || this.isAbstractClass(); + } + jsxParseOpeningElementAfterName(node) { + if (this.match(47) || this.match(51)) { + const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression()); + if (typeArguments) { + { + node.typeParameters = typeArguments; + } + } + } + return super.jsxParseOpeningElementAfterName(node); + } + getGetterSetterExpectedParamCount(method) { + const baseCount = super.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + const firstParam = params[0]; + const hasContextParam = firstParam && this.isThisParam(firstParam); + return hasContextParam ? baseCount + 1 : baseCount; + } + parseCatchClauseParam() { + const param = super.parseCatchClauseParam(); + const type = this.tsTryParseTypeAnnotation(); + if (type) { + param.typeAnnotation = type; + this.resetEndLocation(param); + } + return param; + } + tsInAmbientContext(cb) { + const { + isAmbientContext: oldIsAmbientContext, + strict: oldStrict + } = this.state; + this.state.isAmbientContext = true; + this.state.strict = false; + try { + return cb(); + } finally { + this.state.isAmbientContext = oldIsAmbientContext; + this.state.strict = oldStrict; + } + } + parseClass(node, isStatement, optionalId) { + const oldInAbstractClass = this.state.inAbstractClass; + this.state.inAbstractClass = !!node.abstract; + try { + return super.parseClass(node, isStatement, optionalId); + } finally { + this.state.inAbstractClass = oldInAbstractClass; + } + } + tsParseAbstractDeclaration(node, decorators) { + if (this.match(80)) { + node.abstract = true; + return this.maybeTakeDecorators(decorators, this.parseClass(node, true, false)); + } else if (this.isContextual(129)) { + if (!this.hasFollowingLineBreak()) { + node.abstract = true; + this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifier, node); + return this.tsParseInterfaceDeclaration(node); + } + } else { + this.unexpected(null, 80); + } + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) { + const method = super.parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + if (method.abstract || method.type === "TSAbstractMethodDefinition") { + const hasEstreePlugin = this.hasPlugin("estree"); + const methodFn = hasEstreePlugin ? method.value : method; + if (methodFn.body) { + const { + key + } = method; + this.raise(TSErrors.AbstractMethodHasImplementation, method, { + methodName: key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]` + }); + } + } + return method; + } + tsParseTypeParameterName() { + const typeName = this.parseIdentifier(); + return typeName.name; + } + shouldParseAsAmbientContext() { + return !!this.getPluginOption("typescript", "dts"); + } + parse() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + return super.parse(); + } + getExpression() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + return super.getExpression(); + } + parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { + if (!isString && isMaybeTypeOnly) { + this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport); + return this.finishNode(node, "ExportSpecifier"); + } + node.exportKind = "value"; + return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly); + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + if (!importedIsString && isMaybeTypeOnly) { + this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport); + return this.finishNode(specifier, "ImportSpecifier"); + } + specifier.importKind = "value"; + return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, isInTypeOnlyImport ? 4098 : 4096); + } + parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) { + const leftOfAsKey = isImport ? "imported" : "local"; + const rightOfAsKey = isImport ? "local" : "exported"; + let leftOfAs = node[leftOfAsKey]; + let rightOfAs; + let hasTypeSpecifier = false; + let canParseAsKeyword = true; + const loc = leftOfAs.loc.start; + if (this.isContextual(93)) { + const firstAs = this.parseIdentifier(); + if (this.isContextual(93)) { + const secondAs = this.parseIdentifier(); + if (tokenIsKeywordOrIdentifier(this.state.type)) { + hasTypeSpecifier = true; + leftOfAs = firstAs; + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + canParseAsKeyword = false; + } else { + rightOfAs = secondAs; + canParseAsKeyword = false; + } + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + canParseAsKeyword = false; + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + } else { + hasTypeSpecifier = true; + leftOfAs = firstAs; + } + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + hasTypeSpecifier = true; + if (isImport) { + leftOfAs = this.parseIdentifier(true); + if (!this.isContextual(93)) { + this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true); + } + } else { + leftOfAs = this.parseModuleExportName(); + } + } + if (hasTypeSpecifier && isInTypeOnlyImportExport) { + this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, loc); + } + node[leftOfAsKey] = leftOfAs; + node[rightOfAsKey] = rightOfAs; + const kindKey = isImport ? "importKind" : "exportKind"; + node[kindKey] = hasTypeSpecifier ? "type" : "value"; + if (canParseAsKeyword && this.eatContextual(93)) { + node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + } + if (!node[rightOfAsKey]) { + node[rightOfAsKey] = this.cloneIdentifier(node[leftOfAsKey]); + } + if (isImport) { + this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? 4098 : 4096); + } + } + fillOptionalPropertiesForTSESLint(node) { + var _node$directive, _node$decorators, _node$optional, _node$typeAnnotation, _node$accessibility, _node$decorators2, _node$override, _node$readonly, _node$static, _node$declare, _node$returnType, _node$typeParameters, _node$optional2, _node$optional3, _node$accessibility2, _node$readonly2, _node$static2, _node$declare2, _node$definite, _node$readonly3, _node$typeAnnotation2, _node$accessibility3, _node$decorators3, _node$override2, _node$optional4, _node$id, _node$abstract, _node$declare3, _node$decorators4, _node$implements, _node$superTypeArgume, _node$typeParameters2, _node$declare4, _node$definite2, _node$const, _node$declare5, _node$computed, _node$qualifier, _node$options, _node$declare6, _node$extends, _node$declare7, _node$global, _node$const2, _node$in, _node$out; + switch (node.type) { + case "ExpressionStatement": + (_node$directive = node.directive) != null ? _node$directive : node.directive = undefined; + return; + case "RestElement": + node.value = undefined; + case "Identifier": + case "ArrayPattern": + case "AssignmentPattern": + case "ObjectPattern": + (_node$decorators = node.decorators) != null ? _node$decorators : node.decorators = []; + (_node$optional = node.optional) != null ? _node$optional : node.optional = false; + (_node$typeAnnotation = node.typeAnnotation) != null ? _node$typeAnnotation : node.typeAnnotation = undefined; + return; + case "TSParameterProperty": + (_node$accessibility = node.accessibility) != null ? _node$accessibility : node.accessibility = undefined; + (_node$decorators2 = node.decorators) != null ? _node$decorators2 : node.decorators = []; + (_node$override = node.override) != null ? _node$override : node.override = false; + (_node$readonly = node.readonly) != null ? _node$readonly : node.readonly = false; + (_node$static = node.static) != null ? _node$static : node.static = false; + return; + case "TSEmptyBodyFunctionExpression": + node.body = null; + case "TSDeclareFunction": + case "FunctionDeclaration": + case "FunctionExpression": + case "ClassMethod": + case "ClassPrivateMethod": + (_node$declare = node.declare) != null ? _node$declare : node.declare = false; + (_node$returnType = node.returnType) != null ? _node$returnType : node.returnType = undefined; + (_node$typeParameters = node.typeParameters) != null ? _node$typeParameters : node.typeParameters = undefined; + return; + case "Property": + (_node$optional2 = node.optional) != null ? _node$optional2 : node.optional = false; + return; + case "TSMethodSignature": + case "TSPropertySignature": + (_node$optional3 = node.optional) != null ? _node$optional3 : node.optional = false; + case "TSIndexSignature": + (_node$accessibility2 = node.accessibility) != null ? _node$accessibility2 : node.accessibility = undefined; + (_node$readonly2 = node.readonly) != null ? _node$readonly2 : node.readonly = false; + (_node$static2 = node.static) != null ? _node$static2 : node.static = false; + return; + case "TSAbstractPropertyDefinition": + case "PropertyDefinition": + case "TSAbstractAccessorProperty": + case "AccessorProperty": + (_node$declare2 = node.declare) != null ? _node$declare2 : node.declare = false; + (_node$definite = node.definite) != null ? _node$definite : node.definite = false; + (_node$readonly3 = node.readonly) != null ? _node$readonly3 : node.readonly = false; + (_node$typeAnnotation2 = node.typeAnnotation) != null ? _node$typeAnnotation2 : node.typeAnnotation = undefined; + case "TSAbstractMethodDefinition": + case "MethodDefinition": + (_node$accessibility3 = node.accessibility) != null ? _node$accessibility3 : node.accessibility = undefined; + (_node$decorators3 = node.decorators) != null ? _node$decorators3 : node.decorators = []; + (_node$override2 = node.override) != null ? _node$override2 : node.override = false; + (_node$optional4 = node.optional) != null ? _node$optional4 : node.optional = false; + return; + case "ClassExpression": + (_node$id = node.id) != null ? _node$id : node.id = null; + case "ClassDeclaration": + (_node$abstract = node.abstract) != null ? _node$abstract : node.abstract = false; + (_node$declare3 = node.declare) != null ? _node$declare3 : node.declare = false; + (_node$decorators4 = node.decorators) != null ? _node$decorators4 : node.decorators = []; + (_node$implements = node.implements) != null ? _node$implements : node.implements = []; + (_node$superTypeArgume = node.superTypeArguments) != null ? _node$superTypeArgume : node.superTypeArguments = undefined; + (_node$typeParameters2 = node.typeParameters) != null ? _node$typeParameters2 : node.typeParameters = undefined; + return; + case "TSTypeAliasDeclaration": + case "VariableDeclaration": + (_node$declare4 = node.declare) != null ? _node$declare4 : node.declare = false; + return; + case "VariableDeclarator": + (_node$definite2 = node.definite) != null ? _node$definite2 : node.definite = false; + return; + case "TSEnumDeclaration": + (_node$const = node.const) != null ? _node$const : node.const = false; + (_node$declare5 = node.declare) != null ? _node$declare5 : node.declare = false; + return; + case "TSEnumMember": + (_node$computed = node.computed) != null ? _node$computed : node.computed = false; + return; + case "TSImportType": + (_node$qualifier = node.qualifier) != null ? _node$qualifier : node.qualifier = null; + (_node$options = node.options) != null ? _node$options : node.options = null; + return; + case "TSInterfaceDeclaration": + (_node$declare6 = node.declare) != null ? _node$declare6 : node.declare = false; + (_node$extends = node.extends) != null ? _node$extends : node.extends = []; + return; + case "TSModuleDeclaration": + (_node$declare7 = node.declare) != null ? _node$declare7 : node.declare = false; + (_node$global = node.global) != null ? _node$global : node.global = node.kind === "global"; + return; + case "TSTypeParameter": + (_node$const2 = node.const) != null ? _node$const2 : node.const = false; + (_node$in = node.in) != null ? _node$in : node.in = false; + (_node$out = node.out) != null ? _node$out : node.out = false; + return; + } + } +}; +function isPossiblyLiteralEnum(expression) { + if (expression.type !== "MemberExpression") return false; + const { + computed, + property + } = expression; + if (computed && property.type !== "StringLiteral" && (property.type !== "TemplateLiteral" || property.expressions.length > 0)) { + return false; + } + return isUncomputedMemberExpressionChain(expression.object); +} +function isValidAmbientConstInitializer(expression, estree) { + var _expression$extra; + const { + type + } = expression; + if ((_expression$extra = expression.extra) != null && _expression$extra.parenthesized) { + return false; + } + if (estree) { + if (type === "Literal") { + const { + value + } = expression; + if (typeof value === "string" || typeof value === "boolean") { + return true; + } + } + } else { + if (type === "StringLiteral" || type === "BooleanLiteral") { + return true; + } + } + if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) { + return true; + } + if (type === "TemplateLiteral" && expression.expressions.length === 0) { + return true; + } + if (isPossiblyLiteralEnum(expression)) { + return true; + } + return false; +} +function isNumber(expression, estree) { + if (estree) { + return expression.type === "Literal" && (typeof expression.value === "number" || "bigint" in expression); + } + return expression.type === "NumericLiteral" || expression.type === "BigIntLiteral"; +} +function isNegativeNumber(expression, estree) { + if (expression.type === "UnaryExpression") { + const { + operator, + argument + } = expression; + if (operator === "-" && isNumber(argument, estree)) { + return true; + } + } + return false; +} +function isUncomputedMemberExpressionChain(expression) { + if (expression.type === "Identifier") return true; + if (expression.type !== "MemberExpression" || expression.computed) { + return false; + } + return isUncomputedMemberExpressionChain(expression.object); +} +const PlaceholderErrors = ParseErrorEnum`placeholders`({ + ClassNameIsRequired: "A class name is required.", + UnexpectedSpace: "Unexpected space in placeholder." +}); +var placeholders = superClass => class PlaceholdersParserMixin extends superClass { + parsePlaceholder(expectedNode) { + if (this.match(133)) { + const node = this.startNode(); + this.next(); + this.assertNoSpace(); + node.name = super.parseIdentifier(true); + this.assertNoSpace(); + this.expect(133); + return this.finishPlaceholder(node, expectedNode); + } + } + finishPlaceholder(node, expectedNode) { + let placeholder = node; + if (!placeholder.expectedNode || !placeholder.type) { + placeholder = this.finishNode(placeholder, "Placeholder"); + } + placeholder.expectedNode = expectedNode; + return placeholder; + } + getTokenFromCode(code) { + if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) { + this.finishOp(133, 2); + } else { + super.getTokenFromCode(code); + } + } + parseExprAtom(refExpressionErrors) { + return this.parsePlaceholder("Expression") || super.parseExprAtom(refExpressionErrors); + } + parseIdentifier(liberal) { + return this.parsePlaceholder("Identifier") || super.parseIdentifier(liberal); + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word !== undefined) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } + cloneIdentifier(node) { + const cloned = super.cloneIdentifier(node); + if (cloned.type === "Placeholder") { + cloned.expectedNode = node.expectedNode; + } + return cloned; + } + cloneStringLiteral(node) { + if (node.type === "Placeholder") { + return this.cloneIdentifier(node); + } + return super.cloneStringLiteral(node); + } + parseBindingAtom() { + return this.parsePlaceholder("Pattern") || super.parseBindingAtom(); + } + isValidLVal(type, isParenthesized, binding) { + return type === "Placeholder" || super.isValidLVal(type, isParenthesized, binding); + } + toAssignable(node, isLHS) { + if (node && node.type === "Placeholder" && node.expectedNode === "Expression") { + node.expectedNode = "Pattern"; + } else { + super.toAssignable(node, isLHS); + } + } + chStartsBindingIdentifier(ch, pos) { + if (super.chStartsBindingIdentifier(ch, pos)) { + return true; + } + const next = this.nextTokenStart(); + if (this.input.charCodeAt(next) === 37 && this.input.charCodeAt(next + 1) === 37) { + return true; + } + return false; + } + verifyBreakContinue(node, isBreak) { + if (node.label && node.label.type === "Placeholder") return; + super.verifyBreakContinue(node, isBreak); + } + parseExpressionStatement(node, expr) { + var _expr$extra; + if (expr.type !== "Placeholder" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + return super.parseExpressionStatement(node, expr); + } + if (this.match(14)) { + const stmt = node; + stmt.label = this.finishPlaceholder(expr, "Identifier"); + this.next(); + stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration(); + return this.finishNode(stmt, "LabeledStatement"); + } + this.semicolon(); + const stmtPlaceholder = node; + stmtPlaceholder.name = expr.name; + return this.finishPlaceholder(stmtPlaceholder, "Statement"); + } + parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) { + return this.parsePlaceholder("BlockStatement") || super.parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse); + } + parseFunctionId(requireId) { + return this.parsePlaceholder("Identifier") || super.parseFunctionId(requireId); + } + parseClass(node, isStatement, optionalId) { + const type = isStatement ? "ClassDeclaration" : "ClassExpression"; + this.next(); + const oldStrict = this.state.strict; + const placeholder = this.parsePlaceholder("Identifier"); + if (placeholder) { + if (this.match(81) || this.match(133) || this.match(5)) { + node.id = placeholder; + } else if (optionalId || !isStatement) { + node.id = null; + node.body = this.finishPlaceholder(placeholder, "ClassBody"); + return this.finishNode(node, type); + } else { + throw this.raise(PlaceholderErrors.ClassNameIsRequired, this.state.startLoc); + } + } else { + this.parseClassId(node, isStatement, optionalId); + } + super.parseClassSuper(node); + node.body = this.parsePlaceholder("ClassBody") || super.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, type); + } + parseExport(node, decorators) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseExport(node, decorators); + const node2 = node; + if (!this.isContextual(98) && !this.match(12)) { + node2.specifiers = []; + node2.source = null; + node2.declaration = this.finishPlaceholder(placeholder, "Declaration"); + return this.finishNode(node2, "ExportNamedDeclaration"); + } + this.expectPlugin("exportDefaultFrom"); + const specifier = this.startNode(); + specifier.exported = placeholder; + node2.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return super.parseExport(node2, decorators); + } + isExportDefaultSpecifier() { + if (this.match(65)) { + const next = this.nextTokenStart(); + if (this.isUnparsedContextual(next, "from")) { + if (this.input.startsWith(tokenLabelName(133), this.nextTokenStartSince(next + 4))) { + return true; + } + } + } + return super.isExportDefaultSpecifier(); + } + maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) { + var _specifiers; + if ((_specifiers = node.specifiers) != null && _specifiers.length) { + return true; + } + return super.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier); + } + checkExport(node) { + const { + specifiers + } = node; + if (specifiers != null && specifiers.length) { + node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder"); + } + super.checkExport(node); + node.specifiers = specifiers; + } + parseImport(node) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseImport(node); + node.specifiers = []; + if (!this.isContextual(98) && !this.match(12)) { + node.source = this.finishPlaceholder(placeholder, "StringLiteral"); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + const specifier = this.startNodeAtNode(placeholder); + specifier.local = placeholder; + node.specifiers.push(this.finishNode(specifier, "ImportDefaultSpecifier")); + if (this.eat(12)) { + const hasStarImport = this.maybeParseStarImportSpecifier(node); + if (!hasStarImport) this.parseNamedImportSpecifiers(node); + } + this.expectContextual(98); + node.source = this.parseImportSource(); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + parseImportSource() { + return this.parsePlaceholder("StringLiteral") || super.parseImportSource(); + } + assertNoSpace() { + if (this.state.start > this.offsetToSourcePos(this.state.lastTokEndLoc.index)) { + this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc); + } + } +}; +var v8intrinsic = superClass => class V8IntrinsicMixin extends superClass { + parseV8Intrinsic() { + if (this.match(54)) { + const v8IntrinsicStartLoc = this.state.startLoc; + const node = this.startNode(); + this.next(); + if (tokenIsIdentifier(this.state.type)) { + const name = this.parseIdentifierName(); + const identifier = this.createIdentifier(node, name); + this.castNodeTo(identifier, "V8IntrinsicIdentifier"); + if (this.match(10)) { + return identifier; + } + } + this.unexpected(v8IntrinsicStartLoc); + } + } + parseExprAtom(refExpressionErrors) { + return this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors); + } +}; +const PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"]; +const TOPIC_TOKENS = ["^^", "@@", "^", "%", "#"]; +function validatePlugins(pluginsMap) { + if (pluginsMap.has("decorators")) { + if (pluginsMap.has("decorators-legacy")) { + throw new Error("Cannot use the decorators and decorators-legacy plugin together"); + } + const decoratorsBeforeExport = pluginsMap.get("decorators").decoratorsBeforeExport; + if (decoratorsBeforeExport != null && typeof decoratorsBeforeExport !== "boolean") { + throw new Error("'decoratorsBeforeExport' must be a boolean, if specified."); + } + const allowCallParenthesized = pluginsMap.get("decorators").allowCallParenthesized; + if (allowCallParenthesized != null && typeof allowCallParenthesized !== "boolean") { + throw new Error("'allowCallParenthesized' must be a boolean."); + } + } + if (pluginsMap.has("flow") && pluginsMap.has("typescript")) { + throw new Error("Cannot combine flow and typescript plugins."); + } + if (pluginsMap.has("placeholders") && pluginsMap.has("v8intrinsic")) { + throw new Error("Cannot combine placeholders and v8intrinsic plugins."); + } + if (pluginsMap.has("pipelineOperator")) { + var _pluginsMap$get2; + const proposal = pluginsMap.get("pipelineOperator").proposal; + if (!PIPELINE_PROPOSALS.includes(proposal)) { + const proposalList = PIPELINE_PROPOSALS.map(p => `"${p}"`).join(", "); + throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${proposalList}.`); + } + if (proposal === "hack") { + if (pluginsMap.has("placeholders")) { + throw new Error("Cannot combine placeholders plugin and Hack-style pipes."); + } + if (pluginsMap.has("v8intrinsic")) { + throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes."); + } + const topicToken = pluginsMap.get("pipelineOperator").topicToken; + if (!TOPIC_TOKENS.includes(topicToken)) { + const tokenList = TOPIC_TOKENS.map(t => `"${t}"`).join(", "); + throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${tokenList}.`); + } + { + var _pluginsMap$get; + if (topicToken === "#" && ((_pluginsMap$get = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get.syntaxType) === "hash") { + throw new Error(`Plugin conflict between \`["pipelineOperator", { proposal: "hack", topicToken: "#" }]\` and \`${JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")])}\`.`); + } + } + } else if (proposal === "smart" && ((_pluginsMap$get2 = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get2.syntaxType) === "hash") { + throw new Error(`Plugin conflict between \`["pipelineOperator", { proposal: "smart" }]\` and \`${JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")])}\`.`); + } + } + if (pluginsMap.has("moduleAttributes")) { + { + if (pluginsMap.has("deprecatedImportAssert") || pluginsMap.has("importAssertions")) { + throw new Error("Cannot combine importAssertions, deprecatedImportAssert and moduleAttributes plugins."); + } + const moduleAttributesVersionPluginOption = pluginsMap.get("moduleAttributes").version; + if (moduleAttributesVersionPluginOption !== "may-2020") { + throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'."); + } + } + } + if (pluginsMap.has("importAssertions")) { + if (pluginsMap.has("deprecatedImportAssert")) { + throw new Error("Cannot combine importAssertions and deprecatedImportAssert plugins."); + } + } + if (!pluginsMap.has("deprecatedImportAssert") && pluginsMap.has("importAttributes") && pluginsMap.get("importAttributes").deprecatedAssertSyntax) { + { + pluginsMap.set("deprecatedImportAssert", {}); + } + } + if (pluginsMap.has("recordAndTuple")) { + { + const syntaxType = pluginsMap.get("recordAndTuple").syntaxType; + if (syntaxType != null) { + const RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"]; + if (!RECORD_AND_TUPLE_SYNTAX_TYPES.includes(syntaxType)) { + throw new Error("The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(", ")); + } + } + } + } + if (pluginsMap.has("asyncDoExpressions") && !pluginsMap.has("doExpressions")) { + const error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins."); + error.missingPlugins = "doExpressions"; + throw error; + } + if (pluginsMap.has("optionalChainingAssign") && pluginsMap.get("optionalChainingAssign").version !== "2023-07") { + throw new Error("The 'optionalChainingAssign' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is '2023-07'."); + } + if (pluginsMap.has("discardBinding") && pluginsMap.get("discardBinding").syntaxType !== "void") { + throw new Error("The 'discardBinding' plugin requires a 'syntaxType' option. Currently the only supported value is 'void'."); + } +} +const mixinPlugins = { + estree, + jsx, + flow, + typescript, + v8intrinsic, + placeholders +}; +const mixinPluginNames = Object.keys(mixinPlugins); +class ExpressionParser extends LValParser { + checkProto(prop, isRecord, sawProto, refExpressionErrors) { + if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) { + return sawProto; + } + const key = prop.key; + const name = key.type === "Identifier" ? key.name : key.value; + if (name === "__proto__") { + if (isRecord) { + this.raise(Errors.RecordNoProto, key); + return true; + } + if (sawProto) { + if (refExpressionErrors) { + if (refExpressionErrors.doubleProtoLoc === null) { + refExpressionErrors.doubleProtoLoc = key.loc.start; + } + } else { + this.raise(Errors.DuplicateProto, key); + } + } + return true; + } + return sawProto; + } + shouldExitDescending(expr, potentialArrowAt) { + return expr.type === "ArrowFunctionExpression" && this.offsetToSourcePos(expr.start) === potentialArrowAt; + } + getExpression() { + this.enterInitialScopes(); + this.nextToken(); + if (this.match(140)) { + throw this.raise(Errors.ParseExpressionEmptyInput, this.state.startLoc); + } + const expr = this.parseExpression(); + if (!this.match(140)) { + throw this.raise(Errors.ParseExpressionExpectsEOF, this.state.startLoc, { + unexpected: this.input.codePointAt(this.state.start) + }); + } + this.finalizeRemainingComments(); + expr.comments = this.comments; + expr.errors = this.state.errors; + if (this.optionFlags & 256) { + expr.tokens = this.tokens; + } + return expr; + } + parseExpression(disallowIn, refExpressionErrors) { + if (disallowIn) { + return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + parseExpressionBase(refExpressionErrors) { + const startLoc = this.state.startLoc; + const expr = this.parseMaybeAssign(refExpressionErrors); + if (this.match(12)) { + const node = this.startNodeAt(startLoc); + node.expressions = [expr]; + while (this.eat(12)) { + node.expressions.push(this.parseMaybeAssign(refExpressionErrors)); + } + this.toReferencedList(node.expressions); + return this.finishNode(node, "SequenceExpression"); + } + return expr; + } + parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) { + return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) { + return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + setOptionalParametersError(refExpressionErrors) { + refExpressionErrors.optionalParametersLoc = this.state.startLoc; + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + const startLoc = this.state.startLoc; + const isYield = this.isContextual(108); + if (isYield) { + if (this.prodParam.hasYield) { + this.next(); + let left = this.parseYield(startLoc); + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startLoc); + } + return left; + } + } + let ownExpressionErrors; + if (refExpressionErrors) { + ownExpressionErrors = false; + } else { + refExpressionErrors = new ExpressionErrors(); + ownExpressionErrors = true; + } + const { + type + } = this.state; + if (type === 10 || tokenIsIdentifier(type)) { + this.state.potentialArrowAt = this.state.start; + } + let left = this.parseMaybeConditional(refExpressionErrors); + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startLoc); + } + if (tokenIsAssignment(this.state.type)) { + const node = this.startNodeAt(startLoc); + const operator = this.state.value; + node.operator = operator; + if (this.match(29)) { + this.toAssignable(left, true); + node.left = left; + const startIndex = startLoc.index; + if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startIndex) { + refExpressionErrors.doubleProtoLoc = null; + } + if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startIndex) { + refExpressionErrors.shorthandAssignLoc = null; + } + if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startIndex) { + this.checkDestructuringPrivate(refExpressionErrors); + refExpressionErrors.privateKeyLoc = null; + } + if (refExpressionErrors.voidPatternLoc != null && refExpressionErrors.voidPatternLoc.index >= startIndex) { + refExpressionErrors.voidPatternLoc = null; + } + } else { + node.left = left; + } + this.next(); + node.right = this.parseMaybeAssign(); + this.checkLVal(left, this.finishNode(node, "AssignmentExpression")); + return node; + } else if (ownExpressionErrors) { + this.checkExpressionErrors(refExpressionErrors, true); + } + if (isYield) { + const { + type + } = this.state; + const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54); + if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) { + this.raiseOverwrite(Errors.YieldNotInGeneratorFunction, startLoc); + return this.parseYield(startLoc); + } + } + return left; + } + parseMaybeConditional(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprOps(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseConditional(expr, startLoc, refExpressionErrors); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (this.eat(17)) { + const node = this.startNodeAt(startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssignAllowIn(); + this.expect(14); + node.alternate = this.parseMaybeAssign(); + return this.finishNode(node, "ConditionalExpression"); + } + return expr; + } + parseMaybeUnaryOrPrivate(refExpressionErrors) { + return this.match(139) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors); + } + parseExprOps(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseExprOp(expr, startLoc, -1); + } + parseExprOp(left, leftStartLoc, minPrec) { + if (this.isPrivateName(left)) { + const value = this.getPrivateNameSV(left); + if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) { + this.raise(Errors.PrivateInExpectedIn, left, { + identifierName: value + }); + } + this.classScope.usePrivateName(value, left.loc.start); + } + const op = this.state.type; + if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) { + let prec = tokenOperatorPrecedence(op); + if (prec > minPrec) { + if (op === 39) { + this.expectPlugin("pipelineOperator"); + if (this.state.inFSharpPipelineDirectBody) { + return left; + } + this.checkPipelineAtInfixOperator(left, leftStartLoc); + } + const node = this.startNodeAt(leftStartLoc); + node.left = left; + node.operator = this.state.value; + const logical = op === 41 || op === 42; + const coalesce = op === 40; + if (coalesce) { + prec = tokenOperatorPrecedence(42); + } + this.next(); + if (op === 39 && this.hasPlugin(["pipelineOperator", { + proposal: "minimal" + }])) { + if (this.state.type === 96 && this.prodParam.hasAwait) { + throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, this.state.startLoc); + } + } + node.right = this.parseExprOpRightExpr(op, prec); + const finishedNode = this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression"); + const nextOp = this.state.type; + if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) { + throw this.raise(Errors.MixingCoalesceWithLogical, this.state.startLoc); + } + return this.parseExprOp(finishedNode, leftStartLoc, minPrec); + } + } + return left; + } + parseExprOpRightExpr(op, prec) { + const startLoc = this.state.startLoc; + switch (op) { + case 39: + switch (this.getPluginOption("pipelineOperator", "proposal")) { + case "hack": + return this.withTopicBindingContext(() => { + return this.parseHackPipeBody(); + }); + case "fsharp": + return this.withSoloAwaitPermittingContext(() => { + return this.parseFSharpPipelineBody(prec); + }); + } + if (this.getPluginOption("pipelineOperator", "proposal") === "smart") { + return this.withTopicBindingContext(() => { + if (this.prodParam.hasYield && this.isContextual(108)) { + throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc); + } + return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startLoc); + }); + } + default: + return this.parseExprOpBaseRightExpr(op, prec); + } + } + parseExprOpBaseRightExpr(op, prec) { + const startLoc = this.state.startLoc; + return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec); + } + parseHackPipeBody() { + var _body$extra; + const { + startLoc + } = this.state; + const body = this.parseMaybeAssign(); + const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type); + if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) { + this.raise(Errors.PipeUnparenthesizedBody, startLoc, { + type: body.type + }); + } + if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(Errors.PipeTopicUnused, startLoc); + } + return body; + } + checkExponentialAfterUnary(node) { + if (this.match(57)) { + this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument); + } + } + parseMaybeUnary(refExpressionErrors, sawUnary) { + const startLoc = this.state.startLoc; + const isAwait = this.isContextual(96); + if (isAwait && this.recordAwaitIfAllowed()) { + this.next(); + const expr = this.parseAwait(startLoc); + if (!sawUnary) this.checkExponentialAfterUnary(expr); + return expr; + } + const update = this.match(34); + const node = this.startNode(); + if (tokenIsPrefix(this.state.type)) { + node.operator = this.state.value; + node.prefix = true; + if (this.match(72)) { + this.expectPlugin("throwExpressions"); + } + const isDelete = this.match(89); + this.next(); + node.argument = this.parseMaybeUnary(null, true); + this.checkExpressionErrors(refExpressionErrors, true); + if (this.state.strict && isDelete) { + const arg = node.argument; + if (arg.type === "Identifier") { + this.raise(Errors.StrictDelete, node); + } else if (this.hasPropertyAsPrivateName(arg)) { + this.raise(Errors.DeletePrivateField, node); + } + } + if (!update) { + if (!sawUnary) { + this.checkExponentialAfterUnary(node); + } + return this.finishNode(node, "UnaryExpression"); + } + } + const expr = this.parseUpdate(node, update, refExpressionErrors); + if (isAwait) { + const { + type + } = this.state; + const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54); + if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) { + this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc); + return this.parseAwait(startLoc); + } + } + return expr; + } + parseUpdate(node, update, refExpressionErrors) { + if (update) { + const updateExpressionNode = node; + this.checkLVal(updateExpressionNode.argument, this.finishNode(updateExpressionNode, "UpdateExpression")); + return node; + } + const startLoc = this.state.startLoc; + let expr = this.parseExprSubscripts(refExpressionErrors); + if (this.checkExpressionErrors(refExpressionErrors, false)) return expr; + while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startLoc); + node.operator = this.state.value; + node.prefix = false; + node.argument = expr; + this.next(); + this.checkLVal(expr, expr = this.finishNode(node, "UpdateExpression")); + } + return expr; + } + parseExprSubscripts(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprAtom(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseSubscripts(expr, startLoc); + } + parseSubscripts(base, startLoc, noCalls) { + const state = { + optionalChainMember: false, + maybeAsyncArrow: this.atPossibleAsyncArrow(base), + stop: false + }; + do { + base = this.parseSubscript(base, startLoc, noCalls, state); + state.maybeAsyncArrow = false; + } while (!state.stop); + return base; + } + parseSubscript(base, startLoc, noCalls, state) { + const { + type + } = this.state; + if (!noCalls && type === 15) { + return this.parseBind(base, startLoc, noCalls, state); + } else if (tokenIsTemplate(type)) { + return this.parseTaggedTemplateExpression(base, startLoc, state); + } + let optional = false; + if (type === 18) { + if (noCalls) { + this.raise(Errors.OptionalChainingNoNew, this.state.startLoc); + if (this.lookaheadCharCode() === 40) { + return this.stopParseSubscript(base, state); + } + } + state.optionalChainMember = optional = true; + this.next(); + } + if (!noCalls && this.match(10)) { + return this.parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional); + } else { + const computed = this.eat(0); + if (computed || optional || this.eat(16)) { + return this.parseMember(base, startLoc, state, computed, optional); + } else { + return this.stopParseSubscript(base, state); + } + } + } + stopParseSubscript(base, state) { + state.stop = true; + return base; + } + parseMember(base, startLoc, state, computed, optional) { + const node = this.startNodeAt(startLoc); + node.object = base; + node.computed = computed; + if (computed) { + node.property = this.parseExpression(); + this.expect(3); + } else if (this.match(139)) { + if (base.type === "Super") { + this.raise(Errors.SuperPrivateField, startLoc); + } + this.classScope.usePrivateName(this.state.value, this.state.startLoc); + node.property = this.parsePrivateName(); + } else { + node.property = this.parseIdentifier(true); + } + if (state.optionalChainMember) { + node.optional = optional; + return this.finishNode(node, "OptionalMemberExpression"); + } else { + return this.finishNode(node, "MemberExpression"); + } + } + parseBind(base, startLoc, noCalls, state) { + const node = this.startNodeAt(startLoc); + node.object = base; + this.next(); + node.callee = this.parseNoCallExpr(); + state.stop = true; + return this.parseSubscripts(this.finishNode(node, "BindExpression"), startLoc, noCalls); + } + parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional) { + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + let refExpressionErrors = null; + this.state.maybeInArrowParameters = true; + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + const { + maybeAsyncArrow, + optionalChainMember + } = state; + if (maybeAsyncArrow) { + this.expressionScope.enter(newAsyncArrowScope()); + refExpressionErrors = new ExpressionErrors(); + } + if (optionalChainMember) { + node.optional = optional; + } + if (optional) { + node.arguments = this.parseCallExpressionArguments(); + } else { + node.arguments = this.parseCallExpressionArguments(base.type !== "Super", node, refExpressionErrors); + } + let finishedNode = this.finishCallExpression(node, optionalChainMember); + if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { + state.stop = true; + this.checkDestructuringPrivate(refExpressionErrors); + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + finishedNode = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startLoc), finishedNode); + } else { + if (maybeAsyncArrow) { + this.checkExpressionErrors(refExpressionErrors, true); + this.expressionScope.exit(); + } + this.toReferencedArguments(finishedNode); + } + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return finishedNode; + } + toReferencedArguments(node, isParenthesizedExpr) { + this.toReferencedListDeep(node.arguments, isParenthesizedExpr); + } + parseTaggedTemplateExpression(base, startLoc, state) { + const node = this.startNodeAt(startLoc); + node.tag = base; + node.quasi = this.parseTemplate(true); + if (state.optionalChainMember) { + this.raise(Errors.OptionalChainingNoTemplate, startLoc); + } + return this.finishNode(node, "TaggedTemplateExpression"); + } + atPossibleAsyncArrow(base) { + return base.type === "Identifier" && base.name === "async" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.offsetToSourcePos(base.start) === this.state.potentialArrowAt; + } + finishCallExpression(node, optional) { + if (node.callee.type === "Import") { + if (node.arguments.length === 0 || node.arguments.length > 2) { + this.raise(Errors.ImportCallArity, node); + } else { + for (const arg of node.arguments) { + if (arg.type === "SpreadElement") { + this.raise(Errors.ImportCallSpreadArgument, arg); + } + } + } + } + return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression"); + } + parseCallExpressionArguments(allowPlaceholder, nodeForExtra, refExpressionErrors) { + const elts = []; + let first = true; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + while (!this.eat(11)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(11)) { + if (nodeForExtra) { + this.addTrailingCommaExtraToNode(nodeForExtra); + } + this.next(); + break; + } + } + elts.push(this.parseExprListItem(11, false, refExpressionErrors, allowPlaceholder)); + } + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return elts; + } + shouldParseAsyncArrow() { + return this.match(19) && !this.canInsertSemicolon(); + } + parseAsyncArrowFromCallExpression(node, call) { + var _call$extra; + this.resetPreviousNodeTrailingComments(call); + this.expect(19); + this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc); + if (call.innerComments) { + setInnerComments(node, call.innerComments); + } + if (call.callee.trailingComments) { + setInnerComments(node, call.callee.trailingComments); + } + return node; + } + parseNoCallExpr() { + const startLoc = this.state.startLoc; + return this.parseSubscripts(this.parseExprAtom(), startLoc, true); + } + parseExprAtom(refExpressionErrors) { + let node; + let decorators = null; + const { + type + } = this.state; + switch (type) { + case 79: + return this.parseSuper(); + case 83: + node = this.startNode(); + this.next(); + if (this.match(16)) { + return this.parseImportMetaPropertyOrPhaseCall(node); + } + if (this.match(10)) { + if (this.optionFlags & 512) { + return this.parseImportCall(node); + } else { + return this.finishNode(node, "Import"); + } + } else { + this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc); + return this.finishNode(node, "Import"); + } + case 78: + node = this.startNode(); + this.next(); + return this.finishNode(node, "ThisExpression"); + case 90: + { + return this.parseDo(this.startNode(), false); + } + case 56: + case 31: + { + this.readRegexp(); + return this.parseRegExpLiteral(this.state.value); + } + case 135: + return this.parseNumericLiteral(this.state.value); + case 136: + return this.parseBigIntLiteral(this.state.value); + case 134: + return this.parseStringLiteral(this.state.value); + case 84: + return this.parseNullLiteral(); + case 85: + return this.parseBooleanLiteral(true); + case 86: + return this.parseBooleanLiteral(false); + case 10: + { + const canBeArrow = this.state.potentialArrowAt === this.state.start; + return this.parseParenAndDistinguishExpression(canBeArrow); + } + case 0: + { + return this.parseArrayLike(3, true, false, refExpressionErrors); + } + case 5: + { + return this.parseObjectLike(8, false, false, refExpressionErrors); + } + case 68: + return this.parseFunctionOrFunctionSent(); + case 26: + decorators = this.parseDecorators(); + case 80: + return this.parseClass(this.maybeTakeDecorators(decorators, this.startNode()), false); + case 77: + return this.parseNewOrNewTarget(); + case 25: + case 24: + return this.parseTemplate(false); + case 15: + { + node = this.startNode(); + this.next(); + node.object = null; + const callee = node.callee = this.parseNoCallExpr(); + if (callee.type === "MemberExpression") { + return this.finishNode(node, "BindExpression"); + } else { + throw this.raise(Errors.UnsupportedBind, callee); + } + } + case 139: + { + this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, { + identifierName: this.state.value + }); + return this.parsePrivateName(); + } + case 33: + { + return this.parseTopicReferenceThenEqualsSign(54, "%"); + } + case 32: + { + return this.parseTopicReferenceThenEqualsSign(44, "^"); + } + case 37: + case 38: + { + return this.parseTopicReference("hack"); + } + case 44: + case 54: + case 27: + { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + if (pipeProposal) { + return this.parseTopicReference(pipeProposal); + } + this.unexpected(); + break; + } + case 47: + { + const lookaheadCh = this.input.codePointAt(this.nextTokenStart()); + if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) { + this.expectOnePlugin(["jsx", "flow", "typescript"]); + } else { + this.unexpected(); + } + break; + } + default: + { + if (type === 137) { + return this.parseDecimalLiteral(this.state.value); + } else if (type === 2 || type === 1) { + return this.parseArrayLike(this.state.type === 2 ? 4 : 3, false, true); + } else if (type === 6 || type === 7) { + return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true); + } + } + if (tokenIsIdentifier(type)) { + if (this.isContextual(127) && this.lookaheadInLineCharCode() === 123) { + return this.parseModuleExpression(); + } + const canBeArrow = this.state.potentialArrowAt === this.state.start; + const containsEsc = this.state.containsEsc; + const id = this.parseIdentifier(); + if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) { + const { + type + } = this.state; + if (type === 68) { + this.resetPreviousNodeTrailingComments(id); + this.next(); + return this.parseAsyncFunctionExpression(this.startNodeAtNode(id)); + } else if (tokenIsIdentifier(type)) { + if (this.lookaheadCharCode() === 61) { + return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id)); + } else { + return id; + } + } else if (type === 90) { + this.resetPreviousNodeTrailingComments(id); + return this.parseDo(this.startNodeAtNode(id), true); + } + } + if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) { + this.next(); + return this.parseArrowExpression(this.startNodeAtNode(id), [id], false); + } + return id; + } else { + this.unexpected(); + } + } + } + parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + if (pipeProposal) { + this.state.type = topicTokenType; + this.state.value = topicTokenValue; + this.state.pos--; + this.state.end--; + this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1); + return this.parseTopicReference(pipeProposal); + } else { + this.unexpected(); + } + } + parseTopicReference(pipeProposal) { + const node = this.startNode(); + const startLoc = this.state.startLoc; + const tokenType = this.state.type; + this.next(); + return this.finishTopicReference(node, startLoc, pipeProposal, tokenType); + } + finishTopicReference(node, startLoc, pipeProposal, tokenType) { + if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) { + if (pipeProposal === "hack") { + if (!this.topicReferenceIsAllowedInCurrentContext()) { + this.raise(Errors.PipeTopicUnbound, startLoc); + } + this.registerTopicReference(); + return this.finishNode(node, "TopicReference"); + } else { + if (!this.topicReferenceIsAllowedInCurrentContext()) { + this.raise(Errors.PrimaryTopicNotAllowed, startLoc); + } + this.registerTopicReference(); + return this.finishNode(node, "PipelinePrimaryTopicReference"); + } + } else { + throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, { + token: tokenLabelName(tokenType) + }); + } + } + testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) { + switch (pipeProposal) { + case "hack": + { + return this.hasPlugin(["pipelineOperator", { + topicToken: tokenLabelName(tokenType) + }]); + } + case "smart": + return tokenType === 27; + default: + throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc); + } + } + parseAsyncArrowUnaryFunction(node) { + this.prodParam.enter(functionFlags(true, this.prodParam.hasYield)); + const params = [this.parseIdentifier()]; + this.prodParam.exit(); + if (this.hasPrecedingLineBreak()) { + this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition()); + } + this.expect(19); + return this.parseArrowExpression(node, params, true); + } + parseDo(node, isAsync) { + this.expectPlugin("doExpressions"); + if (isAsync) { + this.expectPlugin("asyncDoExpressions"); + } + node.async = isAsync; + this.next(); + const oldLabels = this.state.labels; + this.state.labels = []; + if (isAsync) { + this.prodParam.enter(2); + node.body = this.parseBlock(); + this.prodParam.exit(); + } else { + node.body = this.parseBlock(); + } + this.state.labels = oldLabels; + return this.finishNode(node, "DoExpression"); + } + parseSuper() { + const node = this.startNode(); + this.next(); + if (this.match(10) && !this.scope.allowDirectSuper && !(this.optionFlags & 16)) { + this.raise(Errors.SuperNotAllowed, node); + } else if (!this.scope.allowSuper && !(this.optionFlags & 16)) { + this.raise(Errors.UnexpectedSuper, node); + } + if (!this.match(10) && !this.match(0) && !this.match(16)) { + this.raise(Errors.UnsupportedSuper, node); + } + return this.finishNode(node, "Super"); + } + parsePrivateName() { + const node = this.startNode(); + const id = this.startNodeAt(createPositionWithColumnOffset(this.state.startLoc, 1)); + const name = this.state.value; + this.next(); + node.id = this.createIdentifier(id, name); + return this.finishNode(node, "PrivateName"); + } + parseFunctionOrFunctionSent() { + const node = this.startNode(); + this.next(); + if (this.prodParam.hasYield && this.match(16)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "function"); + this.next(); + if (this.match(103)) { + this.expectPlugin("functionSent"); + } else if (!this.hasPlugin("functionSent")) { + this.unexpected(); + } + return this.parseMetaProperty(node, meta, "sent"); + } + return this.parseFunction(node); + } + parseMetaProperty(node, meta, propertyName) { + node.meta = meta; + const containsEsc = this.state.containsEsc; + node.property = this.parseIdentifier(true); + if (node.property.name !== propertyName || containsEsc) { + this.raise(Errors.UnsupportedMetaProperty, node.property, { + target: meta.name, + onlyValidPropertyName: propertyName + }); + } + return this.finishNode(node, "MetaProperty"); + } + parseImportMetaPropertyOrPhaseCall(node) { + this.next(); + if (this.isContextual(105) || this.isContextual(97)) { + const isSource = this.isContextual(105); + this.expectPlugin(isSource ? "sourcePhaseImports" : "deferredImportEvaluation"); + this.next(); + node.phase = isSource ? "source" : "defer"; + return this.parseImportCall(node); + } else { + const id = this.createIdentifierAt(this.startNodeAtNode(node), "import", this.state.lastTokStartLoc); + if (this.isContextual(101)) { + if (!this.inModule) { + this.raise(Errors.ImportMetaOutsideModule, id); + } + this.sawUnambiguousESM = true; + } + return this.parseMetaProperty(node, id, "meta"); + } + } + parseLiteralAtNode(value, type, node) { + this.addExtra(node, "rawValue", value); + this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end)); + node.value = value; + this.next(); + return this.finishNode(node, type); + } + parseLiteral(value, type) { + const node = this.startNode(); + return this.parseLiteralAtNode(value, type, node); + } + parseStringLiteral(value) { + return this.parseLiteral(value, "StringLiteral"); + } + parseNumericLiteral(value) { + return this.parseLiteral(value, "NumericLiteral"); + } + parseBigIntLiteral(value) { + { + return this.parseLiteral(value, "BigIntLiteral"); + } + } + parseDecimalLiteral(value) { + return this.parseLiteral(value, "DecimalLiteral"); + } + parseRegExpLiteral(value) { + const node = this.startNode(); + this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end)); + node.pattern = value.pattern; + node.flags = value.flags; + this.next(); + return this.finishNode(node, "RegExpLiteral"); + } + parseBooleanLiteral(value) { + const node = this.startNode(); + node.value = value; + this.next(); + return this.finishNode(node, "BooleanLiteral"); + } + parseNullLiteral() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "NullLiteral"); + } + parseParenAndDistinguishExpression(canBeArrow) { + const startLoc = this.state.startLoc; + let val; + this.next(); + this.expressionScope.enter(newArrowHeadScope()); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.maybeInArrowParameters = true; + this.state.inFSharpPipelineDirectBody = false; + const innerStartLoc = this.state.startLoc; + const exprList = []; + const refExpressionErrors = new ExpressionErrors(); + let first = true; + let spreadStartLoc; + let optionalCommaStartLoc; + while (!this.match(11)) { + if (first) { + first = false; + } else { + this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc); + if (this.match(11)) { + optionalCommaStartLoc = this.state.startLoc; + break; + } + } + if (this.match(21)) { + const spreadNodeStartLoc = this.state.startLoc; + spreadStartLoc = this.state.startLoc; + exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc)); + if (!this.checkCommaAfterRest(41)) { + break; + } + } else { + exprList.push(this.parseMaybeAssignAllowInOrVoidPattern(11, refExpressionErrors, this.parseParenItem)); + } + } + const innerEndLoc = this.state.lastTokEndLoc; + this.expect(11); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let arrowNode = this.startNodeAt(startLoc); + if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) { + this.checkDestructuringPrivate(refExpressionErrors); + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + this.parseArrowExpression(arrowNode, exprList, false); + return arrowNode; + } + this.expressionScope.exit(); + if (!exprList.length) { + this.unexpected(this.state.lastTokStartLoc); + } + if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc); + if (spreadStartLoc) this.unexpected(spreadStartLoc); + this.checkExpressionErrors(refExpressionErrors, true); + this.toReferencedListDeep(exprList, true); + if (exprList.length > 1) { + val = this.startNodeAt(innerStartLoc); + val.expressions = exprList; + this.finishNode(val, "SequenceExpression"); + this.resetEndLocation(val, innerEndLoc); + } else { + val = exprList[0]; + } + return this.wrapParenthesis(startLoc, val); + } + wrapParenthesis(startLoc, expression) { + if (!(this.optionFlags & 1024)) { + this.addExtra(expression, "parenthesized", true); + this.addExtra(expression, "parenStart", startLoc.index); + this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index); + return expression; + } + const parenExpression = this.startNodeAt(startLoc); + parenExpression.expression = expression; + return this.finishNode(parenExpression, "ParenthesizedExpression"); + } + shouldParseArrow(params) { + return !this.canInsertSemicolon(); + } + parseArrow(node) { + if (this.eat(19)) { + return node; + } + } + parseParenItem(node, startLoc) { + return node; + } + parseNewOrNewTarget() { + const node = this.startNode(); + this.next(); + if (this.match(16)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "new"); + this.next(); + const metaProp = this.parseMetaProperty(node, meta, "target"); + if (!this.scope.allowNewTarget) { + this.raise(Errors.UnexpectedNewTarget, metaProp); + } + return metaProp; + } + return this.parseNew(node); + } + parseNew(node) { + this.parseNewCallee(node); + if (this.eat(10)) { + const args = this.parseExprList(11); + this.toReferencedList(args); + node.arguments = args; + } else { + node.arguments = []; + } + return this.finishNode(node, "NewExpression"); + } + parseNewCallee(node) { + const isImport = this.match(83); + const callee = this.parseNoCallExpr(); + node.callee = callee; + if (isImport && (callee.type === "Import" || callee.type === "ImportExpression")) { + this.raise(Errors.ImportCallNotNewExpression, callee); + } + } + parseTemplateElement(isTagged) { + const { + start, + startLoc, + end, + value + } = this.state; + const elemStart = start + 1; + const elem = this.startNodeAt(createPositionWithColumnOffset(startLoc, 1)); + if (value === null) { + if (!isTagged) { + this.raise(Errors.InvalidEscapeSequenceTemplate, createPositionWithColumnOffset(this.state.firstInvalidTemplateEscapePos, 1)); + } + } + const isTail = this.match(24); + const endOffset = isTail ? -1 : -2; + const elemEnd = end + endOffset; + elem.value = { + raw: this.input.slice(elemStart, elemEnd).replace(/\r\n?/g, "\n"), + cooked: value === null ? null : value.slice(1, endOffset) + }; + elem.tail = isTail; + this.next(); + const finishedNode = this.finishNode(elem, "TemplateElement"); + this.resetEndLocation(finishedNode, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset)); + return finishedNode; + } + parseTemplate(isTagged) { + const node = this.startNode(); + let curElt = this.parseTemplateElement(isTagged); + const quasis = [curElt]; + const substitutions = []; + while (!curElt.tail) { + substitutions.push(this.parseTemplateSubstitution()); + this.readTemplateContinuation(); + quasis.push(curElt = this.parseTemplateElement(isTagged)); + } + node.expressions = substitutions; + node.quasis = quasis; + return this.finishNode(node, "TemplateLiteral"); + } + parseTemplateSubstitution() { + return this.parseExpression(); + } + parseObjectLike(close, isPattern, isRecord, refExpressionErrors) { + if (isRecord) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + let sawProto = false; + let first = true; + const node = this.startNode(); + node.properties = []; + this.next(); + while (!this.match(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + this.addTrailingCommaExtraToNode(node); + break; + } + } + let prop; + if (isPattern) { + prop = this.parseBindingProperty(); + } else { + prop = this.parsePropertyDefinition(refExpressionErrors); + sawProto = this.checkProto(prop, isRecord, sawProto, refExpressionErrors); + } + if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") { + this.raise(Errors.InvalidRecordProperty, prop); + } + { + if (prop.shorthand) { + this.addExtra(prop, "shorthand", true); + } + } + node.properties.push(prop); + } + this.next(); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let type = "ObjectExpression"; + if (isPattern) { + type = "ObjectPattern"; + } else if (isRecord) { + type = "RecordExpression"; + } + return this.finishNode(node, type); + } + addTrailingCommaExtraToNode(node) { + this.addExtra(node, "trailingComma", this.state.lastTokStartLoc.index); + this.addExtra(node, "trailingCommaLoc", this.state.lastTokStartLoc, false); + } + maybeAsyncOrAccessorProp(prop) { + return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(55)); + } + parsePropertyDefinition(refExpressionErrors) { + let decorators = []; + if (this.match(26)) { + if (this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } + } + const prop = this.startNode(); + let isAsync = false; + let isAccessor = false; + let startLoc; + if (this.match(21)) { + if (decorators.length) this.unexpected(); + return this.parseSpread(); + } + if (decorators.length) { + prop.decorators = decorators; + decorators = []; + } + prop.method = false; + if (refExpressionErrors) { + startLoc = this.state.startLoc; + } + let isGenerator = this.eat(55); + this.parsePropertyNamePrefixOperator(prop); + const containsEsc = this.state.containsEsc; + this.parsePropertyName(prop, refExpressionErrors); + if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) { + const { + key + } = prop; + const keyName = key.name; + if (keyName === "async" && !this.hasPrecedingLineBreak()) { + isAsync = true; + this.resetPreviousNodeTrailingComments(key); + isGenerator = this.eat(55); + this.parsePropertyName(prop); + } + if (keyName === "get" || keyName === "set") { + isAccessor = true; + this.resetPreviousNodeTrailingComments(key); + prop.kind = keyName; + if (this.match(55)) { + isGenerator = true; + this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), { + kind: keyName + }); + this.next(); + } + this.parsePropertyName(prop); + } + } + return this.parseObjPropValue(prop, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors); + } + getGetterSetterExpectedParamCount(method) { + return method.kind === "get" ? 0 : 1; + } + getObjectOrClassMethodParams(method) { + return method.params; + } + checkGetterSetterParams(method) { + var _params; + const paramCount = this.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + if (params.length !== paramCount) { + this.raise(method.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, method); + } + if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") { + this.raise(Errors.BadSetterRestParameter, method); + } + } + parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { + if (isAccessor) { + const finishedProp = this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod"); + this.checkGetterSetterParams(finishedProp); + return finishedProp; + } + if (isAsync || isGenerator || this.match(10)) { + if (isPattern) this.unexpected(); + prop.kind = "method"; + prop.method = true; + return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod"); + } + } + parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { + prop.shorthand = false; + if (this.eat(14)) { + prop.value = isPattern ? this.parseMaybeDefault(this.state.startLoc) : this.parseMaybeAssignAllowInOrVoidPattern(8, refExpressionErrors); + return this.finishObjectProperty(prop); + } + if (!prop.computed && prop.key.type === "Identifier") { + this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false); + if (isPattern) { + prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key)); + } else if (this.match(29)) { + const shorthandAssignLoc = this.state.startLoc; + if (refExpressionErrors != null) { + if (refExpressionErrors.shorthandAssignLoc === null) { + refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc; + } + } else { + this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc); + } + prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key)); + } else { + prop.value = this.cloneIdentifier(prop.key); + } + prop.shorthand = true; + return this.finishObjectProperty(prop); + } + } + finishObjectProperty(node) { + return this.finishNode(node, "ObjectProperty"); + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); + if (!node) this.unexpected(); + return node; + } + parsePropertyName(prop, refExpressionErrors) { + if (this.eat(0)) { + prop.computed = true; + prop.key = this.parseMaybeAssignAllowIn(); + this.expect(3); + } else { + const { + type, + value + } = this.state; + let key; + if (tokenIsKeywordOrIdentifier(type)) { + key = this.parseIdentifier(true); + } else { + switch (type) { + case 135: + key = this.parseNumericLiteral(value); + break; + case 134: + key = this.parseStringLiteral(value); + break; + case 136: + key = this.parseBigIntLiteral(value); + break; + case 139: + { + const privateKeyLoc = this.state.startLoc; + if (refExpressionErrors != null) { + if (refExpressionErrors.privateKeyLoc === null) { + refExpressionErrors.privateKeyLoc = privateKeyLoc; + } + } else { + this.raise(Errors.UnexpectedPrivateField, privateKeyLoc); + } + key = this.parsePrivateName(); + break; + } + default: + if (type === 137) { + key = this.parseDecimalLiteral(value); + break; + } + this.unexpected(); + } + } + prop.key = key; + if (type !== 139) { + prop.computed = false; + } + } + } + initFunction(node, isAsync) { + node.id = null; + node.generator = false; + node.async = isAsync; + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + this.initFunction(node, isAsync); + node.generator = isGenerator; + this.scope.enter(514 | 16 | (inClassScope ? 576 : 0) | (allowDirectSuper ? 32 : 0)); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + this.parseFunctionParams(node, isConstructor); + const finishedNode = this.parseFunctionBodyAndFinish(node, type, true); + this.prodParam.exit(); + this.scope.exit(); + return finishedNode; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + if (isTuple) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + const node = this.startNode(); + this.next(); + node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression"); + } + parseArrowExpression(node, params, isAsync, trailingCommaLoc) { + this.scope.enter(514 | 4); + let flags = functionFlags(isAsync, false); + if (!this.match(5) && this.prodParam.hasIn) { + flags |= 8; + } + this.prodParam.enter(flags); + this.initFunction(node, isAsync); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + if (params) { + this.state.maybeInArrowParameters = true; + this.setArrowFunctionParameters(node, params, trailingCommaLoc); + } + this.state.maybeInArrowParameters = false; + this.parseFunctionBody(node, true); + this.prodParam.exit(); + this.scope.exit(); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return this.finishNode(node, "ArrowFunctionExpression"); + } + setArrowFunctionParameters(node, params, trailingCommaLoc) { + this.toAssignableList(params, trailingCommaLoc, false); + node.params = params; + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + this.parseFunctionBody(node, false, isMethod); + return this.finishNode(node, type); + } + parseFunctionBody(node, allowExpression, isMethod = false) { + const isExpression = allowExpression && !this.match(5); + this.expressionScope.enter(newExpressionScope()); + if (isExpression) { + node.body = this.parseMaybeAssign(); + this.checkParams(node, false, allowExpression, false); + } else { + const oldStrict = this.state.strict; + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(this.prodParam.currentFlags() | 4); + node.body = this.parseBlock(true, false, hasStrictModeDirective => { + const nonSimple = !this.isSimpleParamList(node.params); + if (hasStrictModeDirective && nonSimple) { + this.raise(Errors.IllegalLanguageModeDirective, (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.loc.end : node); + } + const strictModeChanged = !oldStrict && this.state.strict; + this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged); + if (this.state.strict && node.id) { + this.checkIdentifier(node.id, 65, strictModeChanged); + } + }); + this.prodParam.exit(); + this.state.labels = oldLabels; + } + this.expressionScope.exit(); + } + isSimpleParameter(node) { + return node.type === "Identifier"; + } + isSimpleParamList(params) { + for (let i = 0, len = params.length; i < len; i++) { + if (!this.isSimpleParameter(params[i])) return false; + } + return true; + } + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + const checkClashes = !allowDuplicates && new Set(); + const formalParameters = { + type: "FormalParameters" + }; + for (const param of node.params) { + this.checkLVal(param, formalParameters, 5, checkClashes, strictModeChanged); + } + } + parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) { + const elts = []; + let first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + if (nodeForExtra) { + this.addTrailingCommaExtraToNode(nodeForExtra); + } + this.next(); + break; + } + } + elts.push(this.parseExprListItem(close, allowEmpty, refExpressionErrors)); + } + return elts; + } + parseExprListItem(close, allowEmpty, refExpressionErrors, allowPlaceholder) { + let elt; + if (this.match(12)) { + if (!allowEmpty) { + this.raise(Errors.UnexpectedToken, this.state.curPosition(), { + unexpected: "," + }); + } + elt = null; + } else if (this.match(21)) { + const spreadNodeStartLoc = this.state.startLoc; + elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartLoc); + } else if (this.match(17)) { + this.expectPlugin("partialApplication"); + if (!allowPlaceholder) { + this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc); + } + const node = this.startNode(); + this.next(); + elt = this.finishNode(node, "ArgumentPlaceholder"); + } else { + elt = this.parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, this.parseParenItem); + } + return elt; + } + parseIdentifier(liberal) { + const node = this.startNode(); + const name = this.parseIdentifierName(liberal); + return this.createIdentifier(node, name); + } + createIdentifier(node, name) { + node.name = name; + node.loc.identifierName = name; + return this.finishNode(node, "Identifier"); + } + createIdentifierAt(node, name, endLoc) { + node.name = name; + node.loc.identifierName = name; + return this.finishNodeAt(node, "Identifier", endLoc); + } + parseIdentifierName(liberal) { + let name; + const { + startLoc, + type + } = this.state; + if (tokenIsKeywordOrIdentifier(type)) { + name = this.state.value; + } else { + this.unexpected(); + } + const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type); + if (liberal) { + if (tokenIsKeyword) { + this.replaceToken(132); + } + } else { + this.checkReservedWord(name, startLoc, tokenIsKeyword, false); + } + this.next(); + return name; + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word.length > 10) { + return; + } + if (!canBeReservedWord(word)) { + return; + } + if (checkKeywords && isKeyword(word)) { + this.raise(Errors.UnexpectedKeyword, startLoc, { + keyword: word + }); + return; + } + const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord; + if (reservedTest(word, this.inModule)) { + this.raise(Errors.UnexpectedReservedWord, startLoc, { + reservedWord: word + }); + return; + } else if (word === "yield") { + if (this.prodParam.hasYield) { + this.raise(Errors.YieldBindingIdentifier, startLoc); + return; + } + } else if (word === "await") { + if (this.prodParam.hasAwait) { + this.raise(Errors.AwaitBindingIdentifier, startLoc); + return; + } + if (this.scope.inStaticBlock) { + this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc); + return; + } + this.expressionScope.recordAsyncArrowParametersError(startLoc); + } else if (word === "arguments") { + if (this.scope.inClassAndNotInNonArrowFunction) { + this.raise(Errors.ArgumentsInClass, startLoc); + return; + } + } + } + recordAwaitIfAllowed() { + const isAwaitAllowed = this.prodParam.hasAwait; + if (isAwaitAllowed && !this.scope.inFunction) { + this.state.hasTopLevelAwait = true; + } + return isAwaitAllowed; + } + parseAwait(startLoc) { + const node = this.startNodeAt(startLoc); + this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, node); + if (this.eat(55)) { + this.raise(Errors.ObsoleteAwaitStar, node); + } + if (!this.scope.inFunction && !(this.optionFlags & 1)) { + if (this.isAmbiguousPrefixOrIdentifier()) { + this.ambiguousScriptDifferentAst = true; + } else { + this.sawUnambiguousESM = true; + } + } + if (!this.state.soloAwait) { + node.argument = this.parseMaybeUnary(null, true); + } + return this.finishNode(node, "AwaitExpression"); + } + isAmbiguousPrefixOrIdentifier() { + if (this.hasPrecedingLineBreak()) return true; + const { + type + } = this.state; + return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 102 && !this.state.containsEsc || type === 138 || type === 56 || this.hasPlugin("v8intrinsic") && type === 54; + } + parseYield(startLoc) { + const node = this.startNodeAt(startLoc); + this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, node); + let delegating = false; + let argument = null; + if (!this.hasPrecedingLineBreak()) { + delegating = this.eat(55); + switch (this.state.type) { + case 13: + case 140: + case 8: + case 11: + case 3: + case 9: + case 14: + case 12: + if (!delegating) break; + default: + argument = this.parseMaybeAssign(); + } + } + node.delegate = delegating; + node.argument = argument; + return this.finishNode(node, "YieldExpression"); + } + parseImportCall(node) { + this.next(); + node.source = this.parseMaybeAssignAllowIn(); + node.options = null; + if (this.eat(12)) { + if (!this.match(11)) { + node.options = this.parseMaybeAssignAllowIn(); + if (this.eat(12)) { + this.addTrailingCommaExtraToNode(node.options); + if (!this.match(11)) { + do { + this.parseMaybeAssignAllowIn(); + } while (this.eat(12) && !this.match(11)); + this.raise(Errors.ImportCallArity, node); + } + } + } else { + this.addTrailingCommaExtraToNode(node.source); + } + } + this.expect(11); + return this.finishNode(node, "ImportExpression"); + } + checkPipelineAtInfixOperator(left, leftStartLoc) { + if (this.hasPlugin(["pipelineOperator", { + proposal: "smart" + }])) { + if (left.type === "SequenceExpression") { + this.raise(Errors.PipelineHeadSequenceExpression, leftStartLoc); + } + } + } + parseSmartPipelineBodyInStyle(childExpr, startLoc) { + if (this.isSimpleReference(childExpr)) { + const bodyNode = this.startNodeAt(startLoc); + bodyNode.callee = childExpr; + return this.finishNode(bodyNode, "PipelineBareFunction"); + } else { + const bodyNode = this.startNodeAt(startLoc); + this.checkSmartPipeTopicBodyEarlyErrors(startLoc); + bodyNode.expression = childExpr; + return this.finishNode(bodyNode, "PipelineTopicExpression"); + } + } + isSimpleReference(expression) { + switch (expression.type) { + case "MemberExpression": + return !expression.computed && this.isSimpleReference(expression.object); + case "Identifier": + return true; + default: + return false; + } + } + checkSmartPipeTopicBodyEarlyErrors(startLoc) { + if (this.match(19)) { + throw this.raise(Errors.PipelineBodyNoArrow, this.state.startLoc); + } + if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(Errors.PipelineTopicUnused, startLoc); + } + } + withTopicBindingContext(callback) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 1, + maxTopicIndex: null + }; + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } + withSmartMixTopicForbiddingContext(callback) { + if (this.hasPlugin(["pipelineOperator", { + proposal: "smart" + }])) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } else { + return callback(); + } + } + withSoloAwaitPermittingContext(callback) { + const outerContextSoloAwaitState = this.state.soloAwait; + this.state.soloAwait = true; + try { + return callback(); + } finally { + this.state.soloAwait = outerContextSoloAwaitState; + } + } + allowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToSet = 8 & ~flags; + if (prodParamToSet) { + this.prodParam.enter(flags | 8); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + disallowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToClear = 8 & flags; + if (prodParamToClear) { + this.prodParam.enter(flags & ~8); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + registerTopicReference() { + this.state.topicContext.maxTopicIndex = 0; + } + topicReferenceIsAllowedInCurrentContext() { + return this.state.topicContext.maxNumOfResolvableTopics >= 1; + } + topicReferenceWasUsedInCurrentContext() { + return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0; + } + parseFSharpPipelineBody(prec) { + const startLoc = this.state.startLoc; + this.state.potentialArrowAt = this.state.start; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = true; + const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, prec); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return ret; + } + parseModuleExpression() { + this.expectPlugin("moduleBlocks"); + const node = this.startNode(); + this.next(); + if (!this.match(5)) { + this.unexpected(null, 5); + } + const program = this.startNodeAt(this.state.endLoc); + this.next(); + const revertScopes = this.initializeScopes(true); + this.enterInitialScopes(); + try { + node.body = this.parseProgram(program, 8, "module"); + } finally { + revertScopes(); + } + return this.finishNode(node, "ModuleExpression"); + } + parseVoidPattern(refExpressionErrors) { + this.expectPlugin("discardBinding"); + const node = this.startNode(); + if (refExpressionErrors != null) { + refExpressionErrors.voidPatternLoc = this.state.startLoc; + } + this.next(); + return this.finishNode(node, "VoidPattern"); + } + parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, afterLeftParse) { + if (refExpressionErrors != null && this.match(88)) { + const nextCode = this.lookaheadCharCode(); + if (nextCode === 44 || nextCode === (close === 3 ? 93 : close === 8 ? 125 : 41) || nextCode === 61) { + return this.parseMaybeDefault(this.state.startLoc, this.parseVoidPattern(refExpressionErrors)); + } + } + return this.parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse); + } + parsePropertyNamePrefixOperator(prop) {} +} +const loopLabel = { + kind: 1 + }, + switchLabel = { + kind: 2 + }; +const loneSurrogate = /[\uD800-\uDFFF]/u; +const keywordRelationalOperator = /in(?:stanceof)?/y; +function babel7CompatTokens(tokens, input, startIndex) { + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; + const { + type + } = token; + if (typeof type === "number") { + { + if (type === 139) { + const { + loc, + start, + value, + end + } = token; + const hashEndPos = start + 1; + const hashEndLoc = createPositionWithColumnOffset(loc.start, 1); + tokens.splice(i, 1, new Token({ + type: getExportedToken(27), + value: "#", + start: start, + end: hashEndPos, + startLoc: loc.start, + endLoc: hashEndLoc + }), new Token({ + type: getExportedToken(132), + value: value, + start: hashEndPos, + end: end, + startLoc: hashEndLoc, + endLoc: loc.end + })); + i++; + continue; + } + if (tokenIsTemplate(type)) { + const { + loc, + start, + value, + end + } = token; + const backquoteEnd = start + 1; + const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1); + let startToken; + if (input.charCodeAt(start - startIndex) === 96) { + startToken = new Token({ + type: getExportedToken(22), + value: "`", + start: start, + end: backquoteEnd, + startLoc: loc.start, + endLoc: backquoteEndLoc + }); + } else { + startToken = new Token({ + type: getExportedToken(8), + value: "}", + start: start, + end: backquoteEnd, + startLoc: loc.start, + endLoc: backquoteEndLoc + }); + } + let templateValue, templateElementEnd, templateElementEndLoc, endToken; + if (type === 24) { + templateElementEnd = end - 1; + templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1); + templateValue = value === null ? null : value.slice(1, -1); + endToken = new Token({ + type: getExportedToken(22), + value: "`", + start: templateElementEnd, + end: end, + startLoc: templateElementEndLoc, + endLoc: loc.end + }); + } else { + templateElementEnd = end - 2; + templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2); + templateValue = value === null ? null : value.slice(1, -2); + endToken = new Token({ + type: getExportedToken(23), + value: "${", + start: templateElementEnd, + end: end, + startLoc: templateElementEndLoc, + endLoc: loc.end + }); + } + tokens.splice(i, 1, startToken, new Token({ + type: getExportedToken(20), + value: templateValue, + start: backquoteEnd, + end: templateElementEnd, + startLoc: backquoteEndLoc, + endLoc: templateElementEndLoc + }), endToken); + i += 2; + continue; + } + } + token.type = getExportedToken(type); + } + } + return tokens; +} +class StatementParser extends ExpressionParser { + parseTopLevel(file, program) { + file.program = this.parseProgram(program, 140, this.options.sourceType === "module" ? "module" : "script"); + file.comments = this.comments; + if (this.optionFlags & 256) { + file.tokens = babel7CompatTokens(this.tokens, this.input, this.startIndex); + } + return this.finishNode(file, "File"); + } + parseProgram(program, end, sourceType) { + program.sourceType = sourceType; + program.interpreter = this.parseInterpreterDirective(); + this.parseBlockBody(program, true, true, end); + if (this.inModule) { + if (!(this.optionFlags & 64) && this.scope.undefinedExports.size > 0) { + for (const [localName, at] of Array.from(this.scope.undefinedExports)) { + this.raise(Errors.ModuleExportUndefined, at, { + localName + }); + } + } + this.addExtra(program, "topLevelAwait", this.state.hasTopLevelAwait); + } + let finishedProgram; + if (end === 140) { + finishedProgram = this.finishNode(program, "Program"); + } else { + finishedProgram = this.finishNodeAt(program, "Program", createPositionWithColumnOffset(this.state.startLoc, -1)); + } + return finishedProgram; + } + stmtToDirective(stmt) { + const directive = this.castNodeTo(stmt, "Directive"); + const directiveLiteral = this.castNodeTo(stmt.expression, "DirectiveLiteral"); + const expressionValue = directiveLiteral.value; + const raw = this.input.slice(this.offsetToSourcePos(directiveLiteral.start), this.offsetToSourcePos(directiveLiteral.end)); + const val = directiveLiteral.value = raw.slice(1, -1); + this.addExtra(directiveLiteral, "raw", raw); + this.addExtra(directiveLiteral, "rawValue", val); + this.addExtra(directiveLiteral, "expressionValue", expressionValue); + directive.value = directiveLiteral; + delete stmt.expression; + return directive; + } + parseInterpreterDirective() { + if (!this.match(28)) { + return null; + } + const node = this.startNode(); + node.value = this.state.value; + this.next(); + return this.finishNode(node, "InterpreterDirective"); + } + isLet() { + if (!this.isContextual(100)) { + return false; + } + return this.hasFollowingBindingAtom(); + } + isUsing() { + if (!this.isContextual(107)) { + return false; + } + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingIdentifier(nextCh, next); + } + isForUsing() { + if (!this.isContextual(107)) { + return false; + } + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + if (this.isUnparsedContextual(next, "of")) { + const nextCharAfterOf = this.lookaheadCharCodeSince(next + 2); + if (nextCharAfterOf !== 61 && nextCharAfterOf !== 58 && nextCharAfterOf !== 59) { + return false; + } + } + if (this.chStartsBindingIdentifier(nextCh, next) || this.isUnparsedContextual(next, "void")) { + return true; + } + return false; + } + isAwaitUsing() { + if (!this.isContextual(96)) { + return false; + } + let next = this.nextTokenInLineStart(); + if (this.isUnparsedContextual(next, "using")) { + next = this.nextTokenInLineStartSince(next + 5); + const nextCh = this.codePointAtPos(next); + if (this.chStartsBindingIdentifier(nextCh, next)) { + return true; + } + } + return false; + } + chStartsBindingIdentifier(ch, pos) { + if (isIdentifierStart(ch)) { + keywordRelationalOperator.lastIndex = pos; + if (keywordRelationalOperator.test(this.input)) { + const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex); + if (!isIdentifierChar(endCh) && endCh !== 92) { + return false; + } + } + return true; + } else if (ch === 92) { + return true; + } else { + return false; + } + } + chStartsBindingPattern(ch) { + return ch === 91 || ch === 123; + } + hasFollowingBindingAtom() { + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingPattern(nextCh) || this.chStartsBindingIdentifier(nextCh, next); + } + hasInLineFollowingBindingIdentifierOrBrace() { + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return nextCh === 123 || this.chStartsBindingIdentifier(nextCh, next); + } + allowsUsing() { + return (this.scope.inModule || !this.scope.inTopLevel) && !this.scope.inBareCaseStatement; + } + parseModuleItem() { + return this.parseStatementLike(1 | 2 | 4 | 8); + } + parseStatementListItem() { + return this.parseStatementLike(2 | 4 | (!this.options.annexB || this.state.strict ? 0 : 8)); + } + parseStatementOrSloppyAnnexBFunctionDeclaration(allowLabeledFunction = false) { + let flags = 0; + if (this.options.annexB && !this.state.strict) { + flags |= 4; + if (allowLabeledFunction) { + flags |= 8; + } + } + return this.parseStatementLike(flags); + } + parseStatement() { + return this.parseStatementLike(0); + } + parseStatementLike(flags) { + let decorators = null; + if (this.match(26)) { + decorators = this.parseDecorators(true); + } + return this.parseStatementContent(flags, decorators); + } + parseStatementContent(flags, decorators) { + const startType = this.state.type; + const node = this.startNode(); + const allowDeclaration = !!(flags & 2); + const allowFunctionDeclaration = !!(flags & 4); + const topLevel = flags & 1; + switch (startType) { + case 60: + return this.parseBreakContinueStatement(node, true); + case 63: + return this.parseBreakContinueStatement(node, false); + case 64: + return this.parseDebuggerStatement(node); + case 90: + return this.parseDoWhileStatement(node); + case 91: + return this.parseForStatement(node); + case 68: + if (this.lookaheadCharCode() === 46) break; + if (!allowFunctionDeclaration) { + this.raise(this.state.strict ? Errors.StrictFunction : this.options.annexB ? Errors.SloppyFunctionAnnexB : Errors.SloppyFunction, this.state.startLoc); + } + return this.parseFunctionStatement(node, false, !allowDeclaration && allowFunctionDeclaration); + case 80: + if (!allowDeclaration) this.unexpected(); + return this.parseClass(this.maybeTakeDecorators(decorators, node), true); + case 69: + return this.parseIfStatement(node); + case 70: + return this.parseReturnStatement(node); + case 71: + return this.parseSwitchStatement(node); + case 72: + return this.parseThrowStatement(node); + case 73: + return this.parseTryStatement(node); + case 96: + if (this.isAwaitUsing()) { + if (!this.allowsUsing()) { + this.raise(Errors.UnexpectedUsingDeclaration, node); + } else if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, node); + } else if (!this.recordAwaitIfAllowed()) { + this.raise(Errors.AwaitUsingNotInAsyncContext, node); + } + this.next(); + return this.parseVarStatement(node, "await using"); + } + break; + case 107: + if (this.state.containsEsc || !this.hasInLineFollowingBindingIdentifierOrBrace()) { + break; + } + if (!this.allowsUsing()) { + this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc); + } else if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc); + } + return this.parseVarStatement(node, "using"); + case 100: + { + if (this.state.containsEsc) { + break; + } + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + if (nextCh !== 91) { + if (!allowDeclaration && this.hasFollowingLineBreak()) break; + if (!this.chStartsBindingIdentifier(nextCh, next) && nextCh !== 123) { + break; + } + } + } + case 75: + { + if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc); + } + } + case 74: + { + const kind = this.state.value; + return this.parseVarStatement(node, kind); + } + case 92: + return this.parseWhileStatement(node); + case 76: + return this.parseWithStatement(node); + case 5: + return this.parseBlock(); + case 13: + return this.parseEmptyStatement(node); + case 83: + { + const nextTokenCharCode = this.lookaheadCharCode(); + if (nextTokenCharCode === 40 || nextTokenCharCode === 46) { + break; + } + } + case 82: + { + if (!(this.optionFlags & 8) && !topLevel) { + this.raise(Errors.UnexpectedImportExport, this.state.startLoc); + } + this.next(); + let result; + if (startType === 83) { + result = this.parseImport(node); + } else { + result = this.parseExport(node, decorators); + } + this.assertModuleNodeAllowed(result); + return result; + } + default: + { + if (this.isAsyncFunction()) { + if (!allowDeclaration) { + this.raise(Errors.AsyncFunctionInSingleStatementContext, this.state.startLoc); + } + this.next(); + return this.parseFunctionStatement(node, true, !allowDeclaration && allowFunctionDeclaration); + } + } + } + const maybeName = this.state.value; + const expr = this.parseExpression(); + if (tokenIsIdentifier(startType) && expr.type === "Identifier" && this.eat(14)) { + return this.parseLabeledStatement(node, maybeName, expr, flags); + } else { + return this.parseExpressionStatement(node, expr, decorators); + } + } + assertModuleNodeAllowed(node) { + if (!(this.optionFlags & 8) && !this.inModule) { + this.raise(Errors.ImportOutsideModule, node); + } + } + decoratorsEnabledBeforeExport() { + if (this.hasPlugin("decorators-legacy")) return true; + return this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") !== false; + } + maybeTakeDecorators(maybeDecorators, classNode, exportNode) { + if (maybeDecorators) { + var _classNode$decorators; + if ((_classNode$decorators = classNode.decorators) != null && _classNode$decorators.length) { + if (typeof this.getPluginOption("decorators", "decoratorsBeforeExport") !== "boolean") { + this.raise(Errors.DecoratorsBeforeAfterExport, classNode.decorators[0]); + } + classNode.decorators.unshift(...maybeDecorators); + } else { + classNode.decorators = maybeDecorators; + } + this.resetStartLocationFromNode(classNode, maybeDecorators[0]); + if (exportNode) this.resetStartLocationFromNode(exportNode, classNode); + } + return classNode; + } + canHaveLeadingDecorator() { + return this.match(80); + } + parseDecorators(allowExport) { + const decorators = []; + do { + decorators.push(this.parseDecorator()); + } while (this.match(26)); + if (this.match(82)) { + if (!allowExport) { + this.unexpected(); + } + if (!this.decoratorsEnabledBeforeExport()) { + this.raise(Errors.DecoratorExportClass, this.state.startLoc); + } + } else if (!this.canHaveLeadingDecorator()) { + throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc); + } + return decorators; + } + parseDecorator() { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + const node = this.startNode(); + this.next(); + if (this.hasPlugin("decorators")) { + const startLoc = this.state.startLoc; + let expr; + if (this.match(10)) { + const startLoc = this.state.startLoc; + this.next(); + expr = this.parseExpression(); + this.expect(11); + expr = this.wrapParenthesis(startLoc, expr); + const paramsStartLoc = this.state.startLoc; + node.expression = this.parseMaybeDecoratorArguments(expr, startLoc); + if (this.getPluginOption("decorators", "allowCallParenthesized") === false && node.expression !== expr) { + this.raise(Errors.DecoratorArgumentsOutsideParentheses, paramsStartLoc); + } + } else { + expr = this.parseIdentifier(false); + while (this.eat(16)) { + const node = this.startNodeAt(startLoc); + node.object = expr; + if (this.match(139)) { + this.classScope.usePrivateName(this.state.value, this.state.startLoc); + node.property = this.parsePrivateName(); + } else { + node.property = this.parseIdentifier(true); + } + node.computed = false; + expr = this.finishNode(node, "MemberExpression"); + } + node.expression = this.parseMaybeDecoratorArguments(expr, startLoc); + } + } else { + node.expression = this.parseExprSubscripts(); + } + return this.finishNode(node, "Decorator"); + } + parseMaybeDecoratorArguments(expr, startLoc) { + if (this.eat(10)) { + const node = this.startNodeAt(startLoc); + node.callee = expr; + node.arguments = this.parseCallExpressionArguments(); + this.toReferencedList(node.arguments); + return this.finishNode(node, "CallExpression"); + } + return expr; + } + parseBreakContinueStatement(node, isBreak) { + this.next(); + if (this.isLineTerminator()) { + node.label = null; + } else { + node.label = this.parseIdentifier(); + this.semicolon(); + } + this.verifyBreakContinue(node, isBreak); + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement"); + } + verifyBreakContinue(node, isBreak) { + let i; + for (i = 0; i < this.state.labels.length; ++i) { + const lab = this.state.labels[i]; + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === 1)) { + break; + } + if (node.label && isBreak) break; + } + } + if (i === this.state.labels.length) { + const type = isBreak ? "BreakStatement" : "ContinueStatement"; + this.raise(Errors.IllegalBreakContinue, node, { + type + }); + } + } + parseDebuggerStatement(node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement"); + } + parseHeaderExpression() { + this.expect(10); + const val = this.parseExpression(); + this.expect(11); + return val; + } + parseDoWhileStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.state.labels.pop(); + this.expect(92); + node.test = this.parseHeaderExpression(); + this.eat(13); + return this.finishNode(node, "DoWhileStatement"); + } + parseForStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + let awaitAt = null; + if (this.isContextual(96) && this.recordAwaitIfAllowed()) { + awaitAt = this.state.startLoc; + this.next(); + } + this.scope.enter(0); + this.expect(10); + if (this.match(13)) { + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, null); + } + const startsWithLet = this.isContextual(100); + { + const startsWithAwaitUsing = this.isAwaitUsing(); + const starsWithUsingDeclaration = startsWithAwaitUsing || this.isForUsing(); + const isLetOrUsing = startsWithLet && this.hasFollowingBindingAtom() || starsWithUsingDeclaration; + if (this.match(74) || this.match(75) || isLetOrUsing) { + const initNode = this.startNode(); + let kind; + if (startsWithAwaitUsing) { + kind = "await using"; + if (!this.recordAwaitIfAllowed()) { + this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc); + } + this.next(); + } else { + kind = this.state.value; + } + this.next(); + this.parseVar(initNode, true, kind); + const init = this.finishNode(initNode, "VariableDeclaration"); + const isForIn = this.match(58); + if (isForIn && starsWithUsingDeclaration) { + this.raise(Errors.ForInUsing, init); + } + if ((isForIn || this.isContextual(102)) && init.declarations.length === 1) { + return this.parseForIn(node, init, awaitAt); + } + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, init); + } + } + const startsWithAsync = this.isContextual(95); + const refExpressionErrors = new ExpressionErrors(); + const init = this.parseExpression(true, refExpressionErrors); + const isForOf = this.isContextual(102); + if (isForOf) { + if (startsWithLet) { + this.raise(Errors.ForOfLet, init); + } + if (awaitAt === null && startsWithAsync && init.type === "Identifier") { + this.raise(Errors.ForOfAsync, init); + } + } + if (isForOf || this.match(58)) { + this.checkDestructuringPrivate(refExpressionErrors); + this.toAssignable(init, true); + const type = isForOf ? "ForOfStatement" : "ForInStatement"; + this.checkLVal(init, { + type + }); + return this.parseForIn(node, init, awaitAt); + } else { + this.checkExpressionErrors(refExpressionErrors, true); + } + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, init); + } + parseFunctionStatement(node, isAsync, isHangingDeclaration) { + this.next(); + return this.parseFunction(node, 1 | (isHangingDeclaration ? 2 : 0) | (isAsync ? 8 : 0)); + } + parseIfStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration(); + node.alternate = this.eat(66) ? this.parseStatementOrSloppyAnnexBFunctionDeclaration() : null; + return this.finishNode(node, "IfStatement"); + } + parseReturnStatement(node) { + if (!this.prodParam.hasReturn) { + this.raise(Errors.IllegalReturn, this.state.startLoc); + } + this.next(); + if (this.isLineTerminator()) { + node.argument = null; + } else { + node.argument = this.parseExpression(); + this.semicolon(); + } + return this.finishNode(node, "ReturnStatement"); + } + parseSwitchStatement(node) { + this.next(); + node.discriminant = this.parseHeaderExpression(); + const cases = node.cases = []; + this.expect(5); + this.state.labels.push(switchLabel); + this.scope.enter(256); + let cur; + for (let sawDefault; !this.match(8);) { + if (this.match(61) || this.match(65)) { + const isCase = this.match(61); + if (cur) this.finishNode(cur, "SwitchCase"); + cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) { + this.raise(Errors.MultipleDefaultsInSwitch, this.state.lastTokStartLoc); + } + sawDefault = true; + cur.test = null; + } + this.expect(14); + } else { + if (cur) { + cur.consequent.push(this.parseStatementListItem()); + } else { + this.unexpected(); + } + } + } + this.scope.exit(); + if (cur) this.finishNode(cur, "SwitchCase"); + this.next(); + this.state.labels.pop(); + return this.finishNode(node, "SwitchStatement"); + } + parseThrowStatement(node) { + this.next(); + if (this.hasPrecedingLineBreak()) { + this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc); + } + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement"); + } + parseCatchClauseParam() { + const param = this.parseBindingAtom(); + this.scope.enter(this.options.annexB && param.type === "Identifier" ? 8 : 0); + this.checkLVal(param, { + type: "CatchClause" + }, 9); + return param; + } + parseTryStatement(node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + if (this.match(62)) { + const clause = this.startNode(); + this.next(); + if (this.match(10)) { + this.expect(10); + clause.param = this.parseCatchClauseParam(); + this.expect(11); + } else { + clause.param = null; + this.scope.enter(0); + } + clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false)); + this.scope.exit(); + node.handler = this.finishNode(clause, "CatchClause"); + } + node.finalizer = this.eat(67) ? this.parseBlock() : null; + if (!node.handler && !node.finalizer) { + this.raise(Errors.NoCatchOrFinally, node); + } + return this.finishNode(node, "TryStatement"); + } + parseVarStatement(node, kind, allowMissingInitializer = false) { + this.next(); + this.parseVar(node, false, kind, allowMissingInitializer); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration"); + } + parseWhileStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.state.labels.pop(); + return this.finishNode(node, "WhileStatement"); + } + parseWithStatement(node) { + if (this.state.strict) { + this.raise(Errors.StrictWith, this.state.startLoc); + } + this.next(); + node.object = this.parseHeaderExpression(); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + return this.finishNode(node, "WithStatement"); + } + parseEmptyStatement(node) { + this.next(); + return this.finishNode(node, "EmptyStatement"); + } + parseLabeledStatement(node, maybeName, expr, flags) { + for (const label of this.state.labels) { + if (label.name === maybeName) { + this.raise(Errors.LabelRedeclaration, expr, { + labelName: maybeName + }); + } + } + const kind = tokenIsLoop(this.state.type) ? 1 : this.match(71) ? 2 : null; + for (let i = this.state.labels.length - 1; i >= 0; i--) { + const label = this.state.labels[i]; + if (label.statementStart === node.start) { + label.statementStart = this.sourceToOffsetPos(this.state.start); + label.kind = kind; + } else { + break; + } + } + this.state.labels.push({ + name: maybeName, + kind: kind, + statementStart: this.sourceToOffsetPos(this.state.start) + }); + node.body = flags & 8 ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement(); + this.state.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement"); + } + parseExpressionStatement(node, expr, decorators) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement"); + } + parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) { + const node = this.startNode(); + if (allowDirectives) { + this.state.strictErrors.clear(); + } + this.expect(5); + if (createNewLexicalScope) { + this.scope.enter(0); + } + this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse); + if (createNewLexicalScope) { + this.scope.exit(); + } + return this.finishNode(node, "BlockStatement"); + } + isValidDirective(stmt) { + return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized; + } + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + const body = node.body = []; + const directives = node.directives = []; + this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse); + } + parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) { + const oldStrict = this.state.strict; + let hasStrictModeDirective = false; + let parsedNonDirective = false; + while (!this.match(end)) { + const stmt = topLevel ? this.parseModuleItem() : this.parseStatementListItem(); + if (directives && !parsedNonDirective) { + if (this.isValidDirective(stmt)) { + const directive = this.stmtToDirective(stmt); + directives.push(directive); + if (!hasStrictModeDirective && directive.value.value === "use strict") { + hasStrictModeDirective = true; + this.setStrict(true); + } + continue; + } + parsedNonDirective = true; + this.state.strictErrors.clear(); + } + body.push(stmt); + } + afterBlockParse == null || afterBlockParse.call(this, hasStrictModeDirective); + if (!oldStrict) { + this.setStrict(false); + } + this.next(); + } + parseFor(node, init) { + node.init = init; + this.semicolon(false); + node.test = this.match(13) ? null : this.parseExpression(); + this.semicolon(false); + node.update = this.match(11) ? null : this.parseExpression(); + this.expect(11); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, "ForStatement"); + } + parseForIn(node, init, awaitAt) { + const isForIn = this.match(58); + this.next(); + if (isForIn) { + if (awaitAt !== null) this.unexpected(awaitAt); + } else { + node.await = awaitAt !== null; + } + if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || !this.options.annexB || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) { + this.raise(Errors.ForInOfLoopInitializer, init, { + type: isForIn ? "ForInStatement" : "ForOfStatement" + }); + } + if (init.type === "AssignmentPattern") { + this.raise(Errors.InvalidLhs, init, { + ancestor: { + type: "ForStatement" + } + }); + } + node.left = init; + node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn(); + this.expect(11); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement"); + } + parseVar(node, isFor, kind, allowMissingInitializer = false) { + const declarations = node.declarations = []; + node.kind = kind; + for (;;) { + const decl = this.startNode(); + this.parseVarId(decl, kind); + decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn(); + if (decl.init === null && !allowMissingInitializer) { + if (decl.id.type !== "Identifier" && !(isFor && (this.match(58) || this.isContextual(102)))) { + this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, { + kind: "destructuring" + }); + } else if ((kind === "const" || kind === "using" || kind === "await using") && !(this.match(58) || this.isContextual(102))) { + this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, { + kind + }); + } + } + declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(12)) break; + } + return node; + } + parseVarId(decl, kind) { + const id = this.parseBindingAtom(); + if (kind === "using" || kind === "await using") { + if (id.type === "ArrayPattern" || id.type === "ObjectPattern") { + this.raise(Errors.UsingDeclarationHasBindingPattern, id.loc.start); + } + } else { + if (id.type === "VoidPattern") { + this.raise(Errors.UnexpectedVoidPattern, id.loc.start); + } + } + this.checkLVal(id, { + type: "VariableDeclarator" + }, kind === "var" ? 5 : 8201); + decl.id = id; + } + parseAsyncFunctionExpression(node) { + return this.parseFunction(node, 8); + } + parseFunction(node, flags = 0) { + const hangingDeclaration = flags & 2; + const isDeclaration = !!(flags & 1); + const requireId = isDeclaration && !(flags & 4); + const isAsync = !!(flags & 8); + this.initFunction(node, isAsync); + if (this.match(55)) { + if (hangingDeclaration) { + this.raise(Errors.GeneratorInSingleStatementContext, this.state.startLoc); + } + this.next(); + node.generator = true; + } + if (isDeclaration) { + node.id = this.parseFunctionId(requireId); + } + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = false; + this.scope.enter(514); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + if (!isDeclaration) { + node.id = this.parseFunctionId(); + } + this.parseFunctionParams(node, false); + this.withSmartMixTopicForbiddingContext(() => { + this.parseFunctionBodyAndFinish(node, isDeclaration ? "FunctionDeclaration" : "FunctionExpression"); + }); + this.prodParam.exit(); + this.scope.exit(); + if (isDeclaration && !hangingDeclaration) { + this.registerFunctionStatementId(node); + } + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return node; + } + parseFunctionId(requireId) { + return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null; + } + parseFunctionParams(node, isConstructor) { + this.expect(10); + this.expressionScope.enter(newParameterDeclarationScope()); + node.params = this.parseBindingList(11, 41, 2 | (isConstructor ? 4 : 0)); + this.expressionScope.exit(); + } + registerFunctionStatementId(node) { + if (!node.id) return; + this.scope.declareName(node.id.name, !this.options.annexB || this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? 5 : 8201 : 17, node.id.loc.start); + } + parseClass(node, isStatement, optionalId) { + this.next(); + const oldStrict = this.state.strict; + this.state.strict = true; + this.parseClassId(node, isStatement, optionalId); + this.parseClassSuper(node); + node.body = this.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression"); + } + isClassProperty() { + return this.match(29) || this.match(13) || this.match(8); + } + isClassMethod() { + return this.match(10); + } + nameIsConstructor(key) { + return key.type === "Identifier" && key.name === "constructor" || key.type === "StringLiteral" && key.value === "constructor"; + } + isNonstaticConstructor(method) { + return !method.computed && !method.static && this.nameIsConstructor(method.key); + } + parseClassBody(hadSuperClass, oldStrict) { + this.classScope.enter(); + const state = { + hadConstructor: false, + hadSuperClass + }; + let decorators = []; + const classBody = this.startNode(); + classBody.body = []; + this.expect(5); + this.withSmartMixTopicForbiddingContext(() => { + while (!this.match(8)) { + if (this.eat(13)) { + if (decorators.length > 0) { + throw this.raise(Errors.DecoratorSemicolon, this.state.lastTokEndLoc); + } + continue; + } + if (this.match(26)) { + decorators.push(this.parseDecorator()); + continue; + } + const member = this.startNode(); + if (decorators.length) { + member.decorators = decorators; + this.resetStartLocationFromNode(member, decorators[0]); + decorators = []; + } + this.parseClassMember(classBody, member, state); + if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) { + this.raise(Errors.DecoratorConstructor, member); + } + } + }); + this.state.strict = oldStrict; + this.next(); + if (decorators.length) { + throw this.raise(Errors.TrailingDecorator, this.state.startLoc); + } + this.classScope.exit(); + return this.finishNode(classBody, "ClassBody"); + } + parseClassMemberFromModifier(classBody, member) { + const key = this.parseIdentifier(true); + if (this.isClassMethod()) { + const method = member; + method.kind = "method"; + method.computed = false; + method.key = key; + method.static = false; + this.pushClassMethod(classBody, method, false, false, false, false); + return true; + } else if (this.isClassProperty()) { + const prop = member; + prop.computed = false; + prop.key = key; + prop.static = false; + classBody.body.push(this.parseClassProperty(prop)); + return true; + } + this.resetPreviousNodeTrailingComments(key); + return false; + } + parseClassMember(classBody, member, state) { + const isStatic = this.isContextual(106); + if (isStatic) { + if (this.parseClassMemberFromModifier(classBody, member)) { + return; + } + if (this.eat(5)) { + this.parseClassStaticBlock(classBody, member); + return; + } + } + this.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const publicMethod = member; + const privateMethod = member; + const publicProp = member; + const privateProp = member; + const accessorProp = member; + const method = publicMethod; + const publicMember = publicMethod; + member.static = isStatic; + this.parsePropertyNamePrefixOperator(member); + if (this.eat(55)) { + method.kind = "method"; + const isPrivateName = this.match(139); + this.parseClassElementName(method); + this.parsePostMemberNameModifiers(method); + if (isPrivateName) { + this.pushClassPrivateMethod(classBody, privateMethod, true, false); + return; + } + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsGenerator, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, true, false, false, false); + return; + } + const isContextual = !this.state.containsEsc && tokenIsIdentifier(this.state.type); + const key = this.parseClassElementName(member); + const maybeContextualKw = isContextual ? key.name : null; + const isPrivate = this.isPrivateName(key); + const maybeQuestionTokenStartLoc = this.state.startLoc; + this.parsePostMemberNameModifiers(publicMember); + if (this.isClassMethod()) { + method.kind = "method"; + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + return; + } + const isConstructor = this.isNonstaticConstructor(publicMethod); + let allowsDirectSuper = false; + if (isConstructor) { + publicMethod.kind = "constructor"; + if (state.hadConstructor && !this.hasPlugin("typescript")) { + this.raise(Errors.DuplicateConstructor, key); + } + if (isConstructor && this.hasPlugin("typescript") && member.override) { + this.raise(Errors.OverrideOnConstructor, key); + } + state.hadConstructor = true; + allowsDirectSuper = state.hadSuperClass; + } + this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper); + } else if (this.isClassProperty()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else if (maybeContextualKw === "async" && !this.isLineTerminator()) { + this.resetPreviousNodeTrailingComments(key); + const isGenerator = this.eat(55); + if (publicMember.optional) { + this.unexpected(maybeQuestionTokenStartLoc); + } + method.kind = "method"; + const isPrivate = this.match(139); + this.parseClassElementName(method); + this.parsePostMemberNameModifiers(publicMember); + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsAsync, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false); + } + } else if ((maybeContextualKw === "get" || maybeContextualKw === "set") && !(this.match(55) && this.isLineTerminator())) { + this.resetPreviousNodeTrailingComments(key); + method.kind = maybeContextualKw; + const isPrivate = this.match(139); + this.parseClassElementName(publicMethod); + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsAccessor, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, false, false, false, false); + } + this.checkGetterSetterParams(publicMethod); + } else if (maybeContextualKw === "accessor" && !this.isLineTerminator()) { + this.expectPlugin("decoratorAutoAccessors"); + this.resetPreviousNodeTrailingComments(key); + const isPrivate = this.match(139); + this.parseClassElementName(publicProp); + this.pushClassAccessorProperty(classBody, accessorProp, isPrivate); + } else if (this.isLineTerminator()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else { + this.unexpected(); + } + } + parseClassElementName(member) { + const { + type, + value + } = this.state; + if ((type === 132 || type === 134) && member.static && value === "prototype") { + this.raise(Errors.StaticPrototype, this.state.startLoc); + } + if (type === 139) { + if (value === "constructor") { + this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc); + } + const key = this.parsePrivateName(); + member.key = key; + return key; + } + this.parsePropertyName(member); + return member.key; + } + parseClassStaticBlock(classBody, member) { + var _member$decorators; + this.scope.enter(576 | 128 | 16); + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(0); + const body = member.body = []; + this.parseBlockOrModuleBlockBody(body, undefined, false, 8); + this.prodParam.exit(); + this.scope.exit(); + this.state.labels = oldLabels; + classBody.body.push(this.finishNode(member, "StaticBlock")); + if ((_member$decorators = member.decorators) != null && _member$decorators.length) { + this.raise(Errors.DecoratorStaticBlock, member); + } + } + pushClassProperty(classBody, prop) { + if (!prop.computed && this.nameIsConstructor(prop.key)) { + this.raise(Errors.ConstructorClassField, prop.key); + } + classBody.body.push(this.parseClassProperty(prop)); + } + pushClassPrivateProperty(classBody, prop) { + const node = this.parseClassPrivateProperty(prop); + classBody.body.push(node); + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start); + } + pushClassAccessorProperty(classBody, prop, isPrivate) { + if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) { + this.raise(Errors.ConstructorClassField, prop.key); + } + const node = this.parseClassAccessorProperty(prop); + classBody.body.push(node); + if (isPrivate) { + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start); + } + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true)); + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true); + classBody.body.push(node); + const kind = node.kind === "get" ? node.static ? 6 : 2 : node.kind === "set" ? node.static ? 5 : 1 : 0; + this.declareClassPrivateMethodInScope(node, kind); + } + declareClassPrivateMethodInScope(node, kind) { + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start); + } + parsePostMemberNameModifiers(methodOrProp) {} + parseClassPrivateProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassPrivateProperty"); + } + parseClassProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassProperty"); + } + parseClassAccessorProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassAccessorProperty"); + } + parseInitializer(node) { + this.scope.enter(576 | 16); + this.expressionScope.enter(newExpressionScope()); + this.prodParam.enter(0); + node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null; + this.expressionScope.exit(); + this.prodParam.exit(); + this.scope.exit(); + } + parseClassId(node, isStatement, optionalId, bindingType = 8331) { + if (tokenIsIdentifier(this.state.type)) { + node.id = this.parseIdentifier(); + if (isStatement) { + this.declareNameFromIdentifier(node.id, bindingType); + } + } else { + if (optionalId || !isStatement) { + node.id = null; + } else { + throw this.raise(Errors.MissingClassName, this.state.startLoc); + } + } + } + parseClassSuper(node) { + node.superClass = this.eat(81) ? this.parseExprSubscripts() : null; + } + parseExport(node, decorators) { + const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, true); + const hasDefault = this.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier); + const parseAfterDefault = !hasDefault || this.eat(12); + const hasStar = parseAfterDefault && this.eatExportStar(node); + const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node); + const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12)); + const isFromRequired = hasDefault || hasStar; + if (hasStar && !hasNamespace) { + if (hasDefault) this.unexpected(); + if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.parseExportFrom(node, true); + this.sawUnambiguousESM = true; + return this.finishNode(node, "ExportAllDeclaration"); + } + const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node); + if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) { + this.unexpected(null, 5); + } + if (hasNamespace && parseAfterNamespace) { + this.unexpected(null, 98); + } + let hasDeclaration; + if (isFromRequired || hasSpecifiers) { + hasDeclaration = false; + if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.parseExportFrom(node, isFromRequired); + } else { + hasDeclaration = this.maybeParseExportDeclaration(node); + } + if (isFromRequired || hasSpecifiers || hasDeclaration) { + var _node2$declaration; + const node2 = node; + this.checkExport(node2, true, false, !!node2.source); + if (((_node2$declaration = node2.declaration) == null ? void 0 : _node2$declaration.type) === "ClassDeclaration") { + this.maybeTakeDecorators(decorators, node2.declaration, node2); + } else if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.sawUnambiguousESM = true; + return this.finishNode(node2, "ExportNamedDeclaration"); + } + if (this.eat(65)) { + const node2 = node; + const decl = this.parseExportDefaultExpression(); + node2.declaration = decl; + if (decl.type === "ClassDeclaration") { + this.maybeTakeDecorators(decorators, decl, node2); + } else if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.checkExport(node2, true, true); + this.sawUnambiguousESM = true; + return this.finishNode(node2, "ExportDefaultDeclaration"); + } + this.unexpected(null, 5); + } + eatExportStar(node) { + return this.eat(55); + } + maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) { + if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) { + this.expectPlugin("exportDefaultFrom", maybeDefaultIdentifier == null ? void 0 : maybeDefaultIdentifier.loc.start); + const id = maybeDefaultIdentifier || this.parseIdentifier(true); + const specifier = this.startNodeAtNode(id); + specifier.exported = id; + node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return true; + } + return false; + } + maybeParseExportNamespaceSpecifier(node) { + if (this.isContextual(93)) { + var _ref, _ref$specifiers; + (_ref$specifiers = (_ref = node).specifiers) != null ? _ref$specifiers : _ref.specifiers = []; + const specifier = this.startNodeAt(this.state.lastTokStartLoc); + this.next(); + specifier.exported = this.parseModuleExportName(); + node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier")); + return true; + } + return false; + } + maybeParseExportNamedSpecifiers(node) { + if (this.match(5)) { + const node2 = node; + if (!node2.specifiers) node2.specifiers = []; + const isTypeExport = node2.exportKind === "type"; + node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport)); + node2.source = null; + if (this.hasPlugin("importAssertions")) { + node2.assertions = []; + } else { + node2.attributes = []; + } + node2.declaration = null; + return true; + } + return false; + } + maybeParseExportDeclaration(node) { + if (this.shouldParseExportDeclaration()) { + node.specifiers = []; + node.source = null; + if (this.hasPlugin("importAssertions")) { + node.assertions = []; + } else { + node.attributes = []; + } + node.declaration = this.parseExportDeclaration(node); + return true; + } + return false; + } + isAsyncFunction() { + if (!this.isContextual(95)) return false; + const next = this.nextTokenInLineStart(); + return this.isUnparsedContextual(next, "function"); + } + parseExportDefaultExpression() { + const expr = this.startNode(); + if (this.match(68)) { + this.next(); + return this.parseFunction(expr, 1 | 4); + } else if (this.isAsyncFunction()) { + this.next(); + this.next(); + return this.parseFunction(expr, 1 | 4 | 8); + } + if (this.match(80)) { + return this.parseClass(expr, true, true); + } + if (this.match(26)) { + if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") === true) { + this.raise(Errors.DecoratorBeforeExport, this.state.startLoc); + } + return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(false), this.startNode()), true, true); + } + if (this.match(75) || this.match(74) || this.isLet() || this.isUsing() || this.isAwaitUsing()) { + throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc); + } + const res = this.parseMaybeAssignAllowIn(); + this.semicolon(); + return res; + } + parseExportDeclaration(node) { + if (this.match(80)) { + const node = this.parseClass(this.startNode(), true, false); + return node; + } + return this.parseStatementListItem(); + } + isExportDefaultSpecifier() { + const { + type + } = this.state; + if (tokenIsIdentifier(type)) { + if (type === 95 && !this.state.containsEsc || type === 100) { + return false; + } + if ((type === 130 || type === 129) && !this.state.containsEsc) { + const next = this.nextTokenStart(); + const nextChar = this.input.charCodeAt(next); + if (nextChar === 123 || this.chStartsBindingIdentifier(nextChar, next) && !this.input.startsWith("from", next)) { + this.expectOnePlugin(["flow", "typescript"]); + return false; + } + } + } else if (!this.match(65)) { + return false; + } + const next = this.nextTokenStart(); + const hasFrom = this.isUnparsedContextual(next, "from"); + if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) { + return true; + } + if (this.match(65) && hasFrom) { + const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4)); + return nextAfterFrom === 34 || nextAfterFrom === 39; + } + return false; + } + parseExportFrom(node, expect) { + if (this.eatContextual(98)) { + node.source = this.parseImportSource(); + this.checkExport(node); + this.maybeParseImportAttributes(node); + this.checkJSONModuleImport(node); + } else if (expect) { + this.unexpected(); + } + this.semicolon(); + } + shouldParseExportDeclaration() { + const { + type + } = this.state; + if (type === 26) { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + if (this.hasPlugin("decorators")) { + if (this.getPluginOption("decorators", "decoratorsBeforeExport") === true) { + this.raise(Errors.DecoratorBeforeExport, this.state.startLoc); + } + return true; + } + } + if (this.isUsing()) { + this.raise(Errors.UsingDeclarationExport, this.state.startLoc); + return true; + } + if (this.isAwaitUsing()) { + this.raise(Errors.UsingDeclarationExport, this.state.startLoc); + return true; + } + return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction(); + } + checkExport(node, checkNames, isDefault, isFrom) { + if (checkNames) { + var _node$specifiers; + if (isDefault) { + this.checkDuplicateExports(node, "default"); + if (this.hasPlugin("exportDefaultFrom")) { + var _declaration$extra; + const declaration = node.declaration; + if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) { + this.raise(Errors.ExportDefaultFromAsIdentifier, declaration); + } + } + } else if ((_node$specifiers = node.specifiers) != null && _node$specifiers.length) { + for (const specifier of node.specifiers) { + const { + exported + } = specifier; + const exportName = exported.type === "Identifier" ? exported.name : exported.value; + this.checkDuplicateExports(specifier, exportName); + if (!isFrom && specifier.local) { + const { + local + } = specifier; + if (local.type !== "Identifier") { + this.raise(Errors.ExportBindingIsString, specifier, { + localName: local.value, + exportName + }); + } else { + this.checkReservedWord(local.name, local.loc.start, true, false); + this.scope.checkLocalExport(local); + } + } + } + } else if (node.declaration) { + const decl = node.declaration; + if (decl.type === "FunctionDeclaration" || decl.type === "ClassDeclaration") { + const { + id + } = decl; + if (!id) throw new Error("Assertion failure"); + this.checkDuplicateExports(node, id.name); + } else if (decl.type === "VariableDeclaration") { + for (const declaration of decl.declarations) { + this.checkDeclaration(declaration.id); + } + } + } + } + } + checkDeclaration(node) { + if (node.type === "Identifier") { + this.checkDuplicateExports(node, node.name); + } else if (node.type === "ObjectPattern") { + for (const prop of node.properties) { + this.checkDeclaration(prop); + } + } else if (node.type === "ArrayPattern") { + for (const elem of node.elements) { + if (elem) { + this.checkDeclaration(elem); + } + } + } else if (node.type === "ObjectProperty") { + this.checkDeclaration(node.value); + } else if (node.type === "RestElement") { + this.checkDeclaration(node.argument); + } else if (node.type === "AssignmentPattern") { + this.checkDeclaration(node.left); + } + } + checkDuplicateExports(node, exportName) { + if (this.exportedIdentifiers.has(exportName)) { + if (exportName === "default") { + this.raise(Errors.DuplicateDefaultExport, node); + } else { + this.raise(Errors.DuplicateExport, node, { + exportName + }); + } + } + this.exportedIdentifiers.add(exportName); + } + parseExportSpecifiers(isInTypeExport) { + const nodes = []; + let first = true; + this.expect(5); + while (!this.eat(8)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.eat(8)) break; + } + const isMaybeTypeOnly = this.isContextual(130); + const isString = this.match(134); + const node = this.startNode(); + node.local = this.parseModuleExportName(); + nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly)); + } + return nodes; + } + parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { + if (this.eatContextual(93)) { + node.exported = this.parseModuleExportName(); + } else if (isString) { + node.exported = this.cloneStringLiteral(node.local); + } else if (!node.exported) { + node.exported = this.cloneIdentifier(node.local); + } + return this.finishNode(node, "ExportSpecifier"); + } + parseModuleExportName() { + if (this.match(134)) { + const result = this.parseStringLiteral(this.state.value); + const surrogate = loneSurrogate.exec(result.value); + if (surrogate) { + this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, { + surrogateCharCode: surrogate[0].charCodeAt(0) + }); + } + return result; + } + return this.parseIdentifier(true); + } + isJSONModuleImport(node) { + if (node.assertions != null) { + return node.assertions.some(({ + key, + value + }) => { + return value.value === "json" && (key.type === "Identifier" ? key.name === "type" : key.value === "type"); + }); + } + return false; + } + checkImportReflection(node) { + const { + specifiers + } = node; + const singleBindingType = specifiers.length === 1 ? specifiers[0].type : null; + if (node.phase === "source") { + if (singleBindingType !== "ImportDefaultSpecifier") { + this.raise(Errors.SourcePhaseImportRequiresDefault, specifiers[0].loc.start); + } + } else if (node.phase === "defer") { + if (singleBindingType !== "ImportNamespaceSpecifier") { + this.raise(Errors.DeferImportRequiresNamespace, specifiers[0].loc.start); + } + } else if (node.module) { + var _node$assertions; + if (singleBindingType !== "ImportDefaultSpecifier") { + this.raise(Errors.ImportReflectionNotBinding, specifiers[0].loc.start); + } + if (((_node$assertions = node.assertions) == null ? void 0 : _node$assertions.length) > 0) { + this.raise(Errors.ImportReflectionHasAssertion, specifiers[0].loc.start); + } + } + } + checkJSONModuleImport(node) { + if (this.isJSONModuleImport(node) && node.type !== "ExportAllDeclaration") { + const { + specifiers + } = node; + if (specifiers != null) { + const nonDefaultNamedSpecifier = specifiers.find(specifier => { + let imported; + if (specifier.type === "ExportSpecifier") { + imported = specifier.local; + } else if (specifier.type === "ImportSpecifier") { + imported = specifier.imported; + } + if (imported !== undefined) { + return imported.type === "Identifier" ? imported.name !== "default" : imported.value !== "default"; + } + }); + if (nonDefaultNamedSpecifier !== undefined) { + this.raise(Errors.ImportJSONBindingNotDefault, nonDefaultNamedSpecifier.loc.start); + } + } + } + } + isPotentialImportPhase(isExport) { + if (isExport) return false; + return this.isContextual(105) || this.isContextual(97) || this.isContextual(127); + } + applyImportPhase(node, isExport, phase, loc) { + if (isExport) { + return; + } + if (phase === "module") { + this.expectPlugin("importReflection", loc); + node.module = true; + } else if (this.hasPlugin("importReflection")) { + node.module = false; + } + if (phase === "source") { + this.expectPlugin("sourcePhaseImports", loc); + node.phase = "source"; + } else if (phase === "defer") { + this.expectPlugin("deferredImportEvaluation", loc); + node.phase = "defer"; + } else if (this.hasPlugin("sourcePhaseImports")) { + node.phase = null; + } + } + parseMaybeImportPhase(node, isExport) { + if (!this.isPotentialImportPhase(isExport)) { + this.applyImportPhase(node, isExport, null); + return null; + } + const phaseIdentifier = this.startNode(); + const phaseIdentifierName = this.parseIdentifierName(true); + const { + type + } = this.state; + const isImportPhase = tokenIsKeywordOrIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; + if (isImportPhase) { + this.applyImportPhase(node, isExport, phaseIdentifierName, phaseIdentifier.loc.start); + return null; + } else { + this.applyImportPhase(node, isExport, null); + return this.createIdentifier(phaseIdentifier, phaseIdentifierName); + } + } + isPrecedingIdImportPhase(phase) { + const { + type + } = this.state; + return tokenIsIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; + } + parseImport(node) { + if (this.match(134)) { + return this.parseImportSourceAndAttributes(node); + } + return this.parseImportSpecifiersAndAfter(node, this.parseMaybeImportPhase(node, false)); + } + parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier) { + node.specifiers = []; + const hasDefault = this.maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier); + const parseNext = !hasDefault || this.eat(12); + const hasStar = parseNext && this.maybeParseStarImportSpecifier(node); + if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node); + this.expectContextual(98); + return this.parseImportSourceAndAttributes(node); + } + parseImportSourceAndAttributes(node) { + var _node$specifiers2; + (_node$specifiers2 = node.specifiers) != null ? _node$specifiers2 : node.specifiers = []; + node.source = this.parseImportSource(); + this.maybeParseImportAttributes(node); + this.checkImportReflection(node); + this.checkJSONModuleImport(node); + this.semicolon(); + this.sawUnambiguousESM = true; + return this.finishNode(node, "ImportDeclaration"); + } + parseImportSource() { + if (!this.match(134)) this.unexpected(); + return this.parseExprAtom(); + } + parseImportSpecifierLocal(node, specifier, type) { + specifier.local = this.parseIdentifier(); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + finishImportSpecifier(specifier, type, bindingType = 8201) { + this.checkLVal(specifier.local, { + type + }, bindingType); + return this.finishNode(specifier, type); + } + parseImportAttributes() { + this.expect(5); + const attrs = []; + const attrNames = new Set(); + do { + if (this.match(8)) { + break; + } + const node = this.startNode(); + const keyName = this.state.value; + if (attrNames.has(keyName)) { + this.raise(Errors.ModuleAttributesWithDuplicateKeys, this.state.startLoc, { + key: keyName + }); + } + attrNames.add(keyName); + if (this.match(134)) { + node.key = this.parseStringLiteral(keyName); + } else { + node.key = this.parseIdentifier(true); + } + this.expect(14); + if (!this.match(134)) { + throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc); + } + node.value = this.parseStringLiteral(this.state.value); + attrs.push(this.finishNode(node, "ImportAttribute")); + } while (this.eat(12)); + this.expect(8); + return attrs; + } + parseModuleAttributes() { + const attrs = []; + const attributes = new Set(); + do { + const node = this.startNode(); + node.key = this.parseIdentifier(true); + if (node.key.name !== "type") { + this.raise(Errors.ModuleAttributeDifferentFromType, node.key); + } + if (attributes.has(node.key.name)) { + this.raise(Errors.ModuleAttributesWithDuplicateKeys, node.key, { + key: node.key.name + }); + } + attributes.add(node.key.name); + this.expect(14); + if (!this.match(134)) { + throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc); + } + node.value = this.parseStringLiteral(this.state.value); + attrs.push(this.finishNode(node, "ImportAttribute")); + } while (this.eat(12)); + return attrs; + } + maybeParseImportAttributes(node) { + let attributes; + { + var useWith = false; + } + if (this.match(76)) { + if (this.hasPrecedingLineBreak() && this.lookaheadCharCode() === 40) { + return; + } + this.next(); + if (this.hasPlugin("moduleAttributes")) { + attributes = this.parseModuleAttributes(); + this.addExtra(node, "deprecatedWithLegacySyntax", true); + } else { + attributes = this.parseImportAttributes(); + } + { + useWith = true; + } + } else if (this.isContextual(94) && !this.hasPrecedingLineBreak()) { + if (!this.hasPlugin("deprecatedImportAssert") && !this.hasPlugin("importAssertions")) { + this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc); + } + if (!this.hasPlugin("importAssertions")) { + this.addExtra(node, "deprecatedAssertSyntax", true); + } + this.next(); + attributes = this.parseImportAttributes(); + } else { + attributes = []; + } + if (!useWith && this.hasPlugin("importAssertions")) { + node.assertions = attributes; + } else { + node.attributes = attributes; + } + } + maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier) { + if (maybeDefaultIdentifier) { + const specifier = this.startNodeAtNode(maybeDefaultIdentifier); + specifier.local = maybeDefaultIdentifier; + node.specifiers.push(this.finishImportSpecifier(specifier, "ImportDefaultSpecifier")); + return true; + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier"); + return true; + } + return false; + } + maybeParseStarImportSpecifier(node) { + if (this.match(55)) { + const specifier = this.startNode(); + this.next(); + this.expectContextual(93); + this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier"); + return true; + } + return false; + } + parseNamedImportSpecifiers(node) { + let first = true; + this.expect(5); + while (!this.eat(8)) { + if (first) { + first = false; + } else { + if (this.eat(14)) { + throw this.raise(Errors.DestructureNamedImport, this.state.startLoc); + } + this.expect(12); + if (this.eat(8)) break; + } + const specifier = this.startNode(); + const importedIsString = this.match(134); + const isMaybeTypeOnly = this.isContextual(130); + specifier.imported = this.parseModuleExportName(); + const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly, undefined); + node.specifiers.push(importSpecifier); + } + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + if (this.eatContextual(93)) { + specifier.local = this.parseIdentifier(); + } else { + const { + imported + } = specifier; + if (importedIsString) { + throw this.raise(Errors.ImportBindingIsString, specifier, { + importName: imported.value + }); + } + this.checkReservedWord(imported.name, specifier.loc.start, true, true); + if (!specifier.local) { + specifier.local = this.cloneIdentifier(imported); + } + } + return this.finishImportSpecifier(specifier, "ImportSpecifier", bindingType); + } + isThisParam(param) { + return param.type === "Identifier" && param.name === "this"; + } +} +class Parser extends StatementParser { + constructor(options, input, pluginsMap) { + options = getOptions(options); + super(options, input); + this.options = options; + this.initializeScopes(); + this.plugins = pluginsMap; + this.filename = options.sourceFilename; + this.startIndex = options.startIndex; + let optionFlags = 0; + if (options.allowAwaitOutsideFunction) { + optionFlags |= 1; + } + if (options.allowReturnOutsideFunction) { + optionFlags |= 2; + } + if (options.allowImportExportEverywhere) { + optionFlags |= 8; + } + if (options.allowSuperOutsideMethod) { + optionFlags |= 16; + } + if (options.allowUndeclaredExports) { + optionFlags |= 64; + } + if (options.allowNewTargetOutsideFunction) { + optionFlags |= 4; + } + if (options.allowYieldOutsideFunction) { + optionFlags |= 32; + } + if (options.ranges) { + optionFlags |= 128; + } + if (options.tokens) { + optionFlags |= 256; + } + if (options.createImportExpressions) { + optionFlags |= 512; + } + if (options.createParenthesizedExpressions) { + optionFlags |= 1024; + } + if (options.errorRecovery) { + optionFlags |= 2048; + } + if (options.attachComment) { + optionFlags |= 4096; + } + if (options.annexB) { + optionFlags |= 8192; + } + this.optionFlags = optionFlags; + } + getScopeHandler() { + return ScopeHandler; + } + parse() { + this.enterInitialScopes(); + const file = this.startNode(); + const program = this.startNode(); + this.nextToken(); + file.errors = null; + this.parseTopLevel(file, program); + file.errors = this.state.errors; + file.comments.length = this.state.commentsLen; + return file; + } +} +function parse(input, options) { + var _options; + if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") { + options = Object.assign({}, options); + try { + options.sourceType = "module"; + const parser = getParser(options, input); + const ast = parser.parse(); + if (parser.sawUnambiguousESM) { + return ast; + } + if (parser.ambiguousScriptDifferentAst) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused) {} + } else { + ast.program.sourceType = "script"; + } + return ast; + } catch (moduleError) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused2) {} + throw moduleError; + } + } else { + return getParser(options, input).parse(); + } +} +function parseExpression(input, options) { + const parser = getParser(options, input); + if (parser.options.strictMode) { + parser.state.strict = true; + } + return parser.getExpression(); +} +function generateExportedTokenTypes(internalTokenTypes) { + const tokenTypes = {}; + for (const typeName of Object.keys(internalTokenTypes)) { + tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]); + } + return tokenTypes; +} +const tokTypes = generateExportedTokenTypes(tt); +function getParser(options, input) { + let cls = Parser; + const pluginsMap = new Map(); + if (options != null && options.plugins) { + for (const plugin of options.plugins) { + let name, opts; + if (typeof plugin === "string") { + name = plugin; + } else { + [name, opts] = plugin; + } + if (!pluginsMap.has(name)) { + pluginsMap.set(name, opts || {}); + } + } + validatePlugins(pluginsMap); + cls = getParserClass(pluginsMap); + } + return new cls(options, input, pluginsMap); +} +const parserClassCache = new Map(); +function getParserClass(pluginsMap) { + const pluginList = []; + for (const name of mixinPluginNames) { + if (pluginsMap.has(name)) { + pluginList.push(name); + } + } + const key = pluginList.join("|"); + let cls = parserClassCache.get(key); + if (!cls) { + cls = Parser; + for (const plugin of pluginList) { + cls = mixinPlugins[plugin](cls); + } + parserClassCache.set(key, cls); + } + return cls; +} +exports.parse = parse; +exports.parseExpression = parseExpression; +exports.tokTypes = tokTypes; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@babel/parser/lib/index.js.map b/node_modules/@babel/parser/lib/index.js.map new file mode 100644 index 0000000..dd2f4b3 --- /dev/null +++ b/node_modules/@babel/parser/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../src/util/location.ts","../src/parse-error/module-errors.ts","../src/parse-error/to-node-description.ts","../src/parse-error/standard-errors.ts","../src/parse-error/strict-mode-errors.ts","../src/parse-error/parse-expression-errors.ts","../src/parse-error/pipeline-operator-errors.ts","../src/parse-error.ts","../src/options.ts","../src/plugins/estree.ts","../src/tokenizer/context.ts","../src/tokenizer/types.ts","../../babel-helper-validator-identifier/src/identifier.ts","../../babel-helper-validator-identifier/src/keyword.ts","../src/util/identifier.ts","../src/util/scope.ts","../src/plugins/flow/scope.ts","../src/plugins/flow/index.ts","../src/plugins/jsx/xhtml.ts","../src/util/whitespace.ts","../src/plugins/jsx/index.ts","../src/plugins/typescript/scope.ts","../src/util/production-parameter.ts","../src/parser/base.ts","../src/parser/comments.ts","../src/tokenizer/state.ts","../../babel-helper-string-parser/src/index.ts","../src/tokenizer/index.ts","../src/util/class-scope.ts","../src/util/expression-scope.ts","../src/parser/util.ts","../src/parser/node.ts","../src/parser/lval.ts","../src/plugins/typescript/index.ts","../src/plugins/placeholders.ts","../src/plugins/v8intrinsic.ts","../src/plugin-utils.ts","../src/parser/expression.ts","../src/parser/statement.ts","../src/parser/index.ts","../src/index.ts"],"sourcesContent":["export type Pos = {\n start: number;\n};\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nexport class Position {\n line: number;\n column: number;\n index: number;\n\n constructor(line: number, col: number, index: number) {\n this.line = line;\n this.column = col;\n this.index = index;\n }\n}\n\nexport class SourceLocation {\n start: Position;\n end: Position;\n filename: string;\n identifierName: string | undefined | null;\n\n constructor(start: Position, end?: Position) {\n this.start = start;\n // (may start as null, but initialized later)\n this.end = end;\n }\n}\n\n/**\n * creates a new position with a non-zero column offset from the given position.\n * This function should be only be used when we create AST node out of the token\n * boundaries, such as TemplateElement ends before tt.templateNonTail. This\n * function does not skip whitespaces.\n */\nexport function createPositionWithColumnOffset(\n position: Position,\n columnOffset: number,\n) {\n const { line, column, index } = position;\n return new Position(line, column + columnOffset, index + columnOffset);\n}\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\n\nconst code = \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\n\nexport default {\n ImportMetaOutsideModule: {\n message: `import.meta may appear only with 'sourceType: \"module\"'`,\n code,\n },\n ImportOutsideModule: {\n message: `'import' and 'export' may appear only with 'sourceType: \"module\"'`,\n code,\n },\n} satisfies ParseErrorTemplates;\n","const NodeDescriptions = {\n ArrayPattern: \"array destructuring pattern\",\n AssignmentExpression: \"assignment expression\",\n AssignmentPattern: \"assignment expression\",\n ArrowFunctionExpression: \"arrow function expression\",\n ConditionalExpression: \"conditional expression\",\n CatchClause: \"catch clause\",\n ForOfStatement: \"for-of statement\",\n ForInStatement: \"for-in statement\",\n ForStatement: \"for-loop\",\n FormalParameters: \"function parameter list\",\n Identifier: \"identifier\",\n ImportSpecifier: \"import specifier\",\n ImportDefaultSpecifier: \"import default specifier\",\n ImportNamespaceSpecifier: \"import namespace specifier\",\n ObjectPattern: \"object destructuring pattern\",\n ParenthesizedExpression: \"parenthesized expression\",\n RestElement: \"rest element\",\n UpdateExpression: {\n true: \"prefix operation\",\n false: \"postfix operation\",\n },\n VariableDeclarator: \"variable declaration\",\n YieldExpression: \"yield expression\",\n};\n\ntype NodeTypesWithDescriptions = keyof Omit<\n typeof NodeDescriptions,\n \"UpdateExpression\"\n>;\n\ntype NodeWithDescription =\n | {\n type: \"UpdateExpression\";\n prefix: boolean;\n }\n | {\n type: NodeTypesWithDescriptions;\n };\n\nconst toNodeDescription = (node: NodeWithDescription) =>\n node.type === \"UpdateExpression\"\n ? NodeDescriptions.UpdateExpression[`${node.prefix}`]\n : NodeDescriptions[node.type];\n\nexport default toNodeDescription;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\nimport toNodeDescription from \"./to-node-description.ts\";\n\nexport type LValAncestor =\n | { type: \"UpdateExpression\"; prefix: boolean }\n | {\n type:\n | \"ArrayPattern\"\n | \"AssignmentExpression\"\n | \"CatchClause\"\n | \"ForOfStatement\"\n | \"FormalParameters\"\n | \"ForInStatement\"\n | \"ForStatement\"\n | \"ImportSpecifier\"\n | \"ImportNamespaceSpecifier\"\n | \"ImportDefaultSpecifier\"\n | \"ParenthesizedExpression\"\n | \"ObjectPattern\"\n | \"RestElement\"\n | \"VariableDeclarator\";\n };\n\nexport default {\n AccessorIsGenerator: ({ kind }: { kind: \"get\" | \"set\" }) =>\n `A ${kind}ter cannot be a generator.`,\n ArgumentsInClass:\n \"'arguments' is only allowed in functions and class methods.\",\n AsyncFunctionInSingleStatementContext:\n \"Async functions can only be declared at the top level or inside a block.\",\n AwaitBindingIdentifier:\n \"Can not use 'await' as identifier inside an async function.\",\n AwaitBindingIdentifierInStaticBlock:\n \"Can not use 'await' as identifier inside a static block.\",\n AwaitExpressionFormalParameter:\n \"'await' is not allowed in async function parameters.\",\n AwaitUsingNotInAsyncContext:\n \"'await using' is only allowed within async functions and at the top levels of modules.\",\n AwaitNotInAsyncContext:\n \"'await' is only allowed within async functions and at the top levels of modules.\",\n BadGetterArity: \"A 'get' accessor must not have any formal parameters.\",\n BadSetterArity: \"A 'set' accessor must have exactly one formal parameter.\",\n BadSetterRestParameter:\n \"A 'set' accessor function argument must not be a rest parameter.\",\n ConstructorClassField: \"Classes may not have a field named 'constructor'.\",\n ConstructorClassPrivateField:\n \"Classes may not have a private field named '#constructor'.\",\n ConstructorIsAccessor: \"Class constructor may not be an accessor.\",\n ConstructorIsAsync: \"Constructor can't be an async function.\",\n ConstructorIsGenerator: \"Constructor can't be a generator.\",\n DeclarationMissingInitializer: ({\n kind,\n }: {\n kind: \"await using\" | \"const\" | \"destructuring\" | \"using\";\n }) => `Missing initializer in ${kind} declaration.`,\n DecoratorArgumentsOutsideParentheses:\n \"Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.\",\n DecoratorBeforeExport:\n \"Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.\",\n DecoratorsBeforeAfterExport:\n \"Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.\",\n DecoratorConstructor:\n \"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\",\n DecoratorExportClass:\n \"Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.\",\n DecoratorSemicolon: \"Decorators must not be followed by a semicolon.\",\n DecoratorStaticBlock: \"Decorators can't be used with a static block.\",\n DeferImportRequiresNamespace:\n 'Only `import defer * as x from \"./module\"` is valid.',\n DeletePrivateField: \"Deleting a private field is not allowed.\",\n DestructureNamedImport:\n \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n DuplicateConstructor: \"Duplicate constructor in the same class.\",\n DuplicateDefaultExport: \"Only one default export allowed per module.\",\n DuplicateExport: ({ exportName }: { exportName: string }) =>\n `\\`${exportName}\\` has already been exported. Exported identifiers must be unique.`,\n DuplicateProto: \"Redefinition of __proto__ property.\",\n DuplicateRegExpFlags: \"Duplicate regular expression flag.\",\n ElementAfterRest: \"Rest element must be last element.\",\n EscapedCharNotAnIdentifier: \"Invalid Unicode escape.\",\n ExportBindingIsString: ({\n localName,\n exportName,\n }: {\n localName: string;\n exportName: string;\n }) =>\n `A string literal cannot be used as an exported binding without \\`from\\`.\\n- Did you mean \\`export { '${localName}' as '${exportName}' } from 'some-module'\\`?`,\n ExportDefaultFromAsIdentifier:\n \"'from' is not allowed as an identifier after 'export default'.\",\n\n ForInOfLoopInitializer: ({\n type,\n }: {\n type: \"ForInStatement\" | \"ForOfStatement\";\n }) =>\n `'${\n type === \"ForInStatement\" ? \"for-in\" : \"for-of\"\n }' loop variable declaration may not have an initializer.`,\n ForInUsing: \"For-in loop may not start with 'using' declaration.\",\n\n ForOfAsync: \"The left-hand side of a for-of loop may not be 'async'.\",\n ForOfLet: \"The left-hand side of a for-of loop may not start with 'let'.\",\n GeneratorInSingleStatementContext:\n \"Generators can only be declared at the top level or inside a block.\",\n\n IllegalBreakContinue: ({\n type,\n }: {\n type: \"BreakStatement\" | \"ContinueStatement\";\n }) => `Unsyntactic ${type === \"BreakStatement\" ? \"break\" : \"continue\"}.`,\n\n IllegalLanguageModeDirective:\n \"Illegal 'use strict' directive in function with non-simple parameter list.\",\n IllegalReturn: \"'return' outside of function.\",\n ImportAttributesUseAssert:\n \"The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.\",\n ImportBindingIsString: ({ importName }: { importName: string }) =>\n `A string literal cannot be used as an imported binding.\\n- Did you mean \\`import { \"${importName}\" as foo }\\`?`,\n ImportCallArity: `\\`import()\\` requires exactly one or two arguments.`,\n ImportCallNotNewExpression: \"Cannot use new with import(...).\",\n ImportCallSpreadArgument: \"`...` is not allowed in `import()`.\",\n ImportJSONBindingNotDefault:\n \"A JSON module can only be imported with `default`.\",\n ImportReflectionHasAssertion: \"`import module x` cannot have assertions.\",\n ImportReflectionNotBinding:\n 'Only `import module x from \"./module\"` is valid.',\n IncompatibleRegExpUVFlags:\n \"The 'u' and 'v' regular expression flags cannot be enabled at the same time.\",\n InvalidBigIntLiteral: \"Invalid BigIntLiteral.\",\n InvalidCodePoint: \"Code point out of bounds.\",\n InvalidCoverDiscardElement:\n \"'void' must be followed by an expression when not used in a binding position.\",\n InvalidCoverInitializedName: \"Invalid shorthand property initializer.\",\n InvalidDecimal: \"Invalid decimal.\",\n InvalidDigit: ({ radix }: { radix: number }) =>\n `Expected number in radix ${radix}.`,\n InvalidEscapeSequence: \"Bad character escape sequence.\",\n InvalidEscapeSequenceTemplate: \"Invalid escape sequence in template.\",\n InvalidEscapedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n `Escape sequence in keyword ${reservedWord}.`,\n InvalidIdentifier: ({ identifierName }: { identifierName: string }) =>\n `Invalid identifier ${identifierName}.`,\n InvalidLhs: ({ ancestor }: { ancestor: LValAncestor }) =>\n `Invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n InvalidLhsBinding: ({ ancestor }: { ancestor: LValAncestor }) =>\n `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n InvalidLhsOptionalChaining: ({ ancestor }: { ancestor: LValAncestor }) =>\n `Invalid optional chaining in the left-hand side of ${toNodeDescription(\n ancestor,\n )}.`,\n InvalidNumber: \"Invalid number.\",\n InvalidOrMissingExponent:\n \"Floating-point numbers require a valid exponent after the 'e'.\",\n InvalidOrUnexpectedToken: ({ unexpected }: { unexpected: string }) =>\n `Unexpected character '${unexpected}'.`,\n InvalidParenthesizedAssignment: \"Invalid parenthesized assignment pattern.\",\n InvalidPrivateFieldResolution: ({\n identifierName,\n }: {\n identifierName: string;\n }) => `Private name #${identifierName} is not defined.`,\n InvalidPropertyBindingPattern: \"Binding member expression.\",\n InvalidRecordProperty:\n \"Only properties and spread elements are allowed in record definitions.\",\n InvalidRestAssignmentPattern: \"Invalid rest operator's argument.\",\n LabelRedeclaration: ({ labelName }: { labelName: string }) =>\n `Label '${labelName}' is already declared.`,\n LetInLexicalBinding: \"'let' is disallowed as a lexically bound name.\",\n LineTerminatorBeforeArrow: \"No line break is allowed before '=>'.\",\n MalformedRegExpFlags: \"Invalid regular expression flag.\",\n MissingClassName: \"A class name is required.\",\n MissingEqInAssignment:\n \"Only '=' operator can be used for specifying default value.\",\n MissingSemicolon: \"Missing semicolon.\",\n MissingPlugin: ({ missingPlugin }: { missingPlugin: [string] }) =>\n `This experimental syntax requires enabling the parser plugin: ${missingPlugin\n .map(name => JSON.stringify(name))\n .join(\", \")}.`,\n // FIXME: Would be nice to make this \"missingPlugins\" instead.\n // Also, seems like we can drop the \"(s)\" from the message and just make it \"s\".\n MissingOneOfPlugins: ({ missingPlugin }: { missingPlugin: string[] }) =>\n `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin\n .map(name => JSON.stringify(name))\n .join(\", \")}.`,\n MissingUnicodeEscape: \"Expecting Unicode escape sequence \\\\uXXXX.\",\n MixingCoalesceWithLogical:\n \"Nullish coalescing operator(??) requires parens when mixing with logical operators.\",\n ModuleAttributeDifferentFromType:\n \"The only accepted module attribute is `type`.\",\n ModuleAttributeInvalidValue:\n \"Only string literals are allowed as module attribute values.\",\n ModuleAttributesWithDuplicateKeys: ({ key }: { key: string }) =>\n `Duplicate key \"${key}\" is not allowed in module attributes.`,\n ModuleExportNameHasLoneSurrogate: ({\n surrogateCharCode,\n }: {\n surrogateCharCode: number;\n }) =>\n `An export name cannot include a lone surrogate, found '\\\\u${surrogateCharCode.toString(\n 16,\n )}'.`,\n ModuleExportUndefined: ({ localName }: { localName: string }) =>\n `Export '${localName}' is not defined.`,\n MultipleDefaultsInSwitch: \"Multiple default clauses.\",\n NewlineAfterThrow: \"Illegal newline after throw.\",\n NoCatchOrFinally: \"Missing catch or finally clause.\",\n NumberIdentifier: \"Identifier directly after number.\",\n NumericSeparatorInEscapeSequence:\n \"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.\",\n ObsoleteAwaitStar:\n \"'await*' has been removed from the async functions proposal. Use Promise.all() instead.\",\n OptionalChainingNoNew:\n \"Constructors in/after an Optional Chain are not allowed.\",\n OptionalChainingNoTemplate:\n \"Tagged Template Literals are not allowed in optionalChain.\",\n OverrideOnConstructor:\n \"'override' modifier cannot appear on a constructor declaration.\",\n ParamDupe: \"Argument name clash.\",\n PatternHasAccessor: \"Object pattern can't contain getter or setter.\",\n PatternHasMethod: \"Object pattern can't contain methods.\",\n PrivateInExpectedIn: ({ identifierName }: { identifierName: string }) =>\n `Private names are only allowed in property accesses (\\`obj.#${identifierName}\\`) or in \\`in\\` expressions (\\`#${identifierName} in obj\\`).`,\n PrivateNameRedeclaration: ({ identifierName }: { identifierName: string }) =>\n `Duplicate private name #${identifierName}.`,\n RecordExpressionBarIncorrectEndSyntaxType:\n \"Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n RecordExpressionBarIncorrectStartSyntaxType:\n \"Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n RecordExpressionHashIncorrectStartSyntaxType:\n \"Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n RecordNoProto: \"'__proto__' is not allowed in Record expressions.\",\n RestTrailingComma: \"Unexpected trailing comma after rest element.\",\n SloppyFunction:\n \"In non-strict mode code, functions can only be declared at top level or inside a block.\",\n SloppyFunctionAnnexB:\n \"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.\",\n SourcePhaseImportRequiresDefault:\n 'Only `import source x from \"./module\"` is valid.',\n StaticPrototype: \"Classes may not have static property named prototype.\",\n SuperNotAllowed:\n \"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?\",\n SuperPrivateField: \"Private fields can't be accessed on super.\",\n TrailingDecorator: \"Decorators must be attached to a class element.\",\n TupleExpressionBarIncorrectEndSyntaxType:\n \"Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n TupleExpressionBarIncorrectStartSyntaxType:\n \"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n TupleExpressionHashIncorrectStartSyntaxType:\n \"Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n UnexpectedArgumentPlaceholder: \"Unexpected argument placeholder.\",\n UnexpectedAwaitAfterPipelineBody:\n 'Unexpected \"await\" after pipeline body; await must have parentheses in minimal proposal.',\n UnexpectedDigitAfterHash: \"Unexpected digit after hash token.\",\n UnexpectedImportExport:\n \"'import' and 'export' may only appear at the top level.\",\n UnexpectedKeyword: ({ keyword }: { keyword: string }) =>\n `Unexpected keyword '${keyword}'.`,\n UnexpectedLeadingDecorator:\n \"Leading decorators must be attached to a class declaration.\",\n UnexpectedLexicalDeclaration:\n \"Lexical declaration cannot appear in a single-statement context.\",\n UnexpectedNewTarget:\n \"`new.target` can only be used in functions or class properties.\",\n UnexpectedNumericSeparator:\n \"A numeric separator is only allowed between two digits.\",\n UnexpectedPrivateField: \"Unexpected private name.\",\n UnexpectedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n `Unexpected reserved word '${reservedWord}'.`,\n UnexpectedSuper: \"'super' is only allowed in object methods and classes.\",\n UnexpectedToken: ({\n expected,\n unexpected,\n }: {\n expected?: string | null;\n unexpected?: string | null;\n }) =>\n `Unexpected token${unexpected ? ` '${unexpected}'.` : \"\"}${\n expected ? `, expected \"${expected}\"` : \"\"\n }`,\n UnexpectedTokenUnaryExponentiation:\n \"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\",\n UnexpectedUsingDeclaration:\n \"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement.\",\n UnexpectedVoidPattern: \"Unexpected void binding.\",\n UnsupportedBind: \"Binding should be performed on object property.\",\n UnsupportedDecoratorExport:\n \"A decorated export must export a class declaration.\",\n UnsupportedDefaultExport:\n \"Only expressions, functions or classes are allowed as the `default` export.\",\n UnsupportedImport:\n \"`import` can only be used in `import()` or `import.meta`.\",\n UnsupportedMetaProperty: ({\n target,\n onlyValidPropertyName,\n }: {\n target: string;\n onlyValidPropertyName: string;\n }) =>\n `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`,\n UnsupportedParameterDecorator:\n \"Decorators cannot be used to decorate parameters.\",\n UnsupportedPropertyDecorator:\n \"Decorators cannot be used to decorate object literal properties.\",\n UnsupportedSuper:\n \"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).\",\n UnterminatedComment: \"Unterminated comment.\",\n UnterminatedRegExp: \"Unterminated regular expression.\",\n UnterminatedString: \"Unterminated string constant.\",\n UnterminatedTemplate: \"Unterminated template.\",\n UsingDeclarationExport: \"Using declaration cannot be exported.\",\n UsingDeclarationHasBindingPattern:\n \"Using declaration cannot have destructuring patterns.\",\n VarRedeclaration: ({ identifierName }: { identifierName: string }) =>\n `Identifier '${identifierName}' has already been declared.`,\n VoidPatternCatchClauseParam:\n \"A void binding can not be the catch clause parameter. Use `try { ... } catch { ... }` if you want to discard the caught error.\",\n VoidPatternInitializer: \"A void binding may not have an initializer.\",\n YieldBindingIdentifier:\n \"Can not use 'yield' as identifier inside a generator.\",\n YieldInParameter: \"Yield expression is not allowed in formal parameters.\",\n YieldNotInGeneratorFunction:\n \"'yield' is only allowed within generator functions.\",\n ZeroDigitNumericSeparator:\n \"Numeric separator can not be used after leading 0.\",\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error\";\n\nexport default {\n StrictDelete: \"Deleting local variable in strict mode.\",\n\n // `referenceName` is the StringValue[1] of an IdentifierReference[2], which\n // is represented as just an `Identifier`[3] in the Babel AST.\n // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n // 2. https://tc39.es/ecma262/#prod-IdentifierReference\n // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n StrictEvalArguments: ({ referenceName }: { referenceName: string }) =>\n `Assigning to '${referenceName}' in strict mode.`,\n\n // `bindingName` is the StringValue[1] of a BindingIdentifier[2], which is\n // represented as just an `Identifier`[3] in the Babel AST.\n // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n // 2. https://tc39.es/ecma262/#prod-BindingIdentifier\n // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n StrictEvalArgumentsBinding: ({ bindingName }: { bindingName: string }) =>\n `Binding '${bindingName}' in strict mode.`,\n\n StrictFunction:\n \"In strict mode code, functions can only be declared at top level or inside a block.\",\n\n StrictNumericEscape: \"The only valid numeric escape in strict mode is '\\\\0'.\",\n\n StrictOctalLiteral: \"Legacy octal literals are not allowed in strict mode.\",\n\n StrictWith: \"'with' in strict mode.\",\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\n\nexport default {\n ParseExpressionEmptyInput:\n \"Unexpected parseExpression() input: The input is empty or contains only comments.\",\n ParseExpressionExpectsEOF: ({ unexpected }: { unexpected: number }) =>\n `Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \\`${String.fromCodePoint(unexpected)}\\`.`,\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\nimport toNodeDescription from \"./to-node-description.ts\";\n\nexport const UnparenthesizedPipeBodyDescriptions = new Set([\n \"ArrowFunctionExpression\",\n \"AssignmentExpression\",\n \"ConditionalExpression\",\n \"YieldExpression\",\n] as const);\n\ntype GetSetMemberType> =\n T extends Set ? M : unknown;\n\nexport type UnparenthesizedPipeBodyTypes = GetSetMemberType<\n typeof UnparenthesizedPipeBodyDescriptions\n>;\n\nexport default {\n // This error is only used by the smart-mix proposal\n PipeBodyIsTighter:\n \"Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.\",\n PipeTopicRequiresHackPipes: process.env.BABEL_8_BREAKING\n ? 'Topic references are only supported when using the `\"proposal\": \"hack\"` version of the pipeline proposal.'\n : 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n PipeTopicUnbound:\n \"Topic reference is unbound; it must be inside a pipe body.\",\n PipeTopicUnconfiguredToken: ({ token }: { token: string }) =>\n `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"${token}\" }.`,\n PipeTopicUnused:\n \"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.\",\n PipeUnparenthesizedBody: ({ type }: { type: UnparenthesizedPipeBodyTypes }) =>\n `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({\n type,\n })}; please wrap it in parentheses.`,\n\n ...(process.env.BABEL_8_BREAKING\n ? {}\n : {\n // Messages whose codes start with “Pipeline” or “PrimaryTopic”\n // are retained for backwards compatibility\n // with the deprecated smart-mix pipe operator proposal plugin.\n // They are subject to removal in a future major version.\n PipelineBodyNoArrow:\n 'Unexpected arrow \"=>\" after pipeline body; arrow function in pipeline body must be parenthesized.',\n PipelineBodySequenceExpression:\n \"Pipeline body may not be a comma-separated sequence expression.\",\n PipelineHeadSequenceExpression:\n \"Pipeline head should not be a comma-separated sequence expression.\",\n PipelineTopicUnused:\n \"Pipeline is in topic style but does not use topic reference.\",\n PrimaryTopicNotAllowed:\n \"Topic reference was used in a lexical context without topic binding.\",\n PrimaryTopicRequiresSmartPipeline:\n 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n }),\n} satisfies ParseErrorTemplates;\n","import { Position } from \"./util/location.ts\";\n\ntype SyntaxPlugin =\n | \"flow\"\n | \"typescript\"\n | \"jsx\"\n | \"pipelineOperator\"\n | \"placeholders\";\n\ntype ParseErrorCode =\n | \"BABEL_PARSER_SYNTAX_ERROR\"\n | \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\n\n// Babel uses \"normal\" SyntaxErrors for it's errors, but adds some extra\n// functionality. This functionality is defined in the\n// `ParseErrorSpecification` interface below. We may choose to change to someday\n// give our errors their own full-blown class, but until then this allow us to\n// keep all the desirable properties of SyntaxErrors (like their name in stack\n// traces, etc.), and also allows us to punt on any publicly facing\n// class-hierarchy decisions until Babel 8.\ninterface ParseErrorSpecification {\n // Look, these *could* be readonly, but then Flow complains when we initially\n // set them. We could do a whole dance and make a special interface that's not\n // readonly for when we create the error, then cast it to the readonly\n // interface for public use, but the previous implementation didn't have them\n // as readonly, so let's just not worry about it for now.\n code: ParseErrorCode;\n reasonCode: string;\n syntaxPlugin?: SyntaxPlugin;\n missingPlugin?: string | string[];\n loc: Position;\n details: ErrorDetails;\n\n // We should consider removing this as it now just contains the same\n // information as `loc.index`.\n pos: number;\n}\n\nexport type ParseError = SyntaxError &\n ParseErrorSpecification;\n\n// By `ParseErrorConstructor`, we mean something like the new-less style\n// `ErrorConstructor`[1], since `ParseError`'s are not themselves actually\n// separate classes from `SyntaxError`'s.\n//\n// 1. https://github.com/microsoft/TypeScript/blob/v4.5.5/lib/lib.es5.d.ts#L1027\nexport type ParseErrorConstructor = (\n loc: Position,\n details: ErrorDetails,\n) => ParseError;\n\ntype ToMessage = (self: ErrorDetails) => string;\n\ntype ParseErrorCredentials = {\n code: string;\n reasonCode: string;\n syntaxPlugin?: SyntaxPlugin;\n toMessage: ToMessage;\n};\n\nfunction defineHidden(obj: object, key: string, value: unknown) {\n Object.defineProperty(obj, key, {\n enumerable: false,\n configurable: true,\n value,\n });\n}\n\nfunction toParseErrorConstructor({\n toMessage,\n code,\n reasonCode,\n syntaxPlugin,\n}: ParseErrorCredentials): ParseErrorConstructor {\n const hasMissingPlugin =\n reasonCode === \"MissingPlugin\" || reasonCode === \"MissingOneOfPlugins\";\n\n if (!process.env.BABEL_8_BREAKING) {\n const oldReasonCodes: Record = {\n AccessorCannotDeclareThisParameter: \"AccesorCannotDeclareThisParameter\",\n AccessorCannotHaveTypeParameters: \"AccesorCannotHaveTypeParameters\",\n ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference:\n \"ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference\",\n SetAccessorCannotHaveOptionalParameter:\n \"SetAccesorCannotHaveOptionalParameter\",\n SetAccessorCannotHaveRestParameter: \"SetAccesorCannotHaveRestParameter\",\n SetAccessorCannotHaveReturnType: \"SetAccesorCannotHaveReturnType\",\n };\n if (oldReasonCodes[reasonCode]) {\n reasonCode = oldReasonCodes[reasonCode];\n }\n }\n\n return function constructor(loc: Position, details: ErrorDetails) {\n const error: ParseError = new SyntaxError() as any;\n\n error.code = code as ParseErrorCode;\n error.reasonCode = reasonCode;\n error.loc = loc;\n error.pos = loc.index;\n\n error.syntaxPlugin = syntaxPlugin;\n if (hasMissingPlugin) {\n error.missingPlugin = (details as any).missingPlugin;\n }\n\n type Overrides = {\n loc?: Position;\n details?: ErrorDetails;\n };\n defineHidden(error, \"clone\", function clone(overrides: Overrides = {}) {\n const { line, column, index } = overrides.loc ?? loc;\n return constructor(new Position(line, column, index), {\n ...details,\n ...overrides.details,\n });\n });\n\n defineHidden(error, \"details\", details);\n\n Object.defineProperty(error, \"message\", {\n configurable: true,\n get(this: ParseError): string {\n const message = `${toMessage(details)} (${loc.line}:${loc.column})`;\n this.message = message;\n return message;\n },\n set(value: string) {\n Object.defineProperty(this, \"message\", { value, writable: true });\n },\n });\n\n return error;\n };\n}\n\ntype ParseErrorTemplate =\n | string\n | ToMessage\n | { message: string | ToMessage; code?: ParseErrorCode };\n\nexport type ParseErrorTemplates = { [reasonCode: string]: ParseErrorTemplate };\n\n// This is the templated form of `ParseErrorEnum`.\n//\n// Note: We could factor out the return type calculation into something like\n// `ParseErrorConstructor`, and then we could\n// reuse it in the non-templated form of `ParseErrorEnum`, but TypeScript\n// doesn't seem to drill down that far when showing you the computed type of\n// an object in an editor, so we'll leave it inlined for now.\nexport function ParseErrorEnum(a: TemplateStringsArray): <\n T extends ParseErrorTemplates,\n>(\n parseErrorTemplates: T,\n) => {\n [K in keyof T]: ParseErrorConstructor<\n T[K] extends { message: string | ToMessage }\n ? T[K][\"message\"] extends ToMessage\n ? Parameters[0]\n : object\n : T[K] extends ToMessage\n ? Parameters[0]\n : object\n >;\n};\n\nexport function ParseErrorEnum(\n parseErrorTemplates: T,\n syntaxPlugin?: SyntaxPlugin,\n): {\n [K in keyof T]: ParseErrorConstructor<\n T[K] extends { message: string | ToMessage }\n ? T[K][\"message\"] extends ToMessage\n ? Parameters[0]\n : object\n : T[K] extends ToMessage\n ? Parameters[0]\n : object\n >;\n};\n\n// You call `ParseErrorEnum` with a mapping from `ReasonCode`'s to either:\n//\n// 1. a static error message,\n// 2. `toMessage` functions that define additional necessary `details` needed by\n// the `ParseError`, or\n// 3. Objects that contain a `message` of one of the above and overridden `code`\n// and/or `reasonCode`:\n//\n// ParseErrorEnum `optionalSyntaxPlugin` ({\n// ErrorWithStaticMessage: \"message\",\n// ErrorWithDynamicMessage: ({ type } : { type: string }) => `${type}`),\n// ErrorWithOverriddenCodeAndOrReasonCode: {\n// message: ({ type }: { type: string }) => `${type}`),\n// code: \"AN_ERROR_CODE\",\n// ...(BABEL_8_BREAKING ? { } : { reasonCode: \"CustomErrorReasonCode\" })\n// }\n// });\n//\nexport function ParseErrorEnum(\n argument: TemplateStringsArray | ParseErrorTemplates,\n syntaxPlugin?: SyntaxPlugin,\n) {\n // If the first parameter is an array, that means we were called with a tagged\n // template literal. Extract the syntaxPlugin from this, and call again in\n // the \"normalized\" form.\n if (Array.isArray(argument)) {\n return (parseErrorTemplates: ParseErrorTemplates) =>\n ParseErrorEnum(parseErrorTemplates, argument[0]);\n }\n\n const ParseErrorConstructors = {} as Record<\n string,\n ParseErrorConstructor\n >;\n\n for (const reasonCode of Object.keys(argument)) {\n const template = (argument as ParseErrorTemplates)[reasonCode];\n const { message, ...rest } =\n typeof template === \"string\"\n ? { message: () => template }\n : typeof template === \"function\"\n ? { message: template }\n : template;\n const toMessage = typeof message === \"string\" ? () => message : message;\n\n ParseErrorConstructors[reasonCode] = toParseErrorConstructor({\n code: \"BABEL_PARSER_SYNTAX_ERROR\",\n reasonCode,\n toMessage,\n ...(syntaxPlugin ? { syntaxPlugin } : {}),\n ...rest,\n });\n }\n\n return ParseErrorConstructors;\n}\n\nimport ModuleErrors from \"./parse-error/module-errors.ts\";\nimport StandardErrors from \"./parse-error/standard-errors.ts\";\nimport StrictModeErrors from \"./parse-error/strict-mode-errors.ts\";\nimport ParseExpressionErrors from \"./parse-error/parse-expression-errors.ts\";\nimport PipelineOperatorErrors from \"./parse-error/pipeline-operator-errors.ts\";\n\nexport const Errors = {\n ...ParseErrorEnum(ModuleErrors),\n ...ParseErrorEnum(StandardErrors),\n ...ParseErrorEnum(StrictModeErrors),\n ...ParseErrorEnum(ParseExpressionErrors),\n ...ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors),\n};\n\nexport type { LValAncestor } from \"./parse-error/standard-errors.ts\";\n","import type { Plugin } from \"./plugin-utils.ts\";\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nexport type SourceType = \"script\" | \"commonjs\" | \"module\" | \"unambiguous\";\n\nexport interface Options {\n /**\n * By default, import and export declarations can only appear at a program's top level.\n * Setting this option to true allows them anywhere where a statement is allowed.\n */\n allowImportExportEverywhere?: boolean;\n\n /**\n * By default, await use is not allowed outside of an async function.\n * Set this to true to accept such code.\n */\n allowAwaitOutsideFunction?: boolean;\n\n /**\n * By default, a return statement at the top level raises an error.\n * Set this to true to accept such code.\n */\n allowReturnOutsideFunction?: boolean;\n\n /**\n * By default, new.target use is not allowed outside of a function or class.\n * Set this to true to accept such code.\n */\n allowNewTargetOutsideFunction?: boolean;\n\n allowSuperOutsideMethod?: boolean;\n\n /**\n * By default, exported identifiers must refer to a declared variable.\n * Set this to true to allow export statements to reference undeclared variables.\n */\n allowUndeclaredExports?: boolean;\n\n /**\n * By default, yield use is not allowed outside of a generator function.\n * Set this to true to accept such code.\n */\n\n allowYieldOutsideFunction?: boolean;\n\n /**\n * By default, Babel parser JavaScript code according to Annex B syntax.\n * Set this to `false` to disable such behavior.\n */\n annexB?: boolean;\n\n /**\n * By default, Babel attaches comments to adjacent AST nodes.\n * When this option is set to false, comments are not attached.\n * It can provide up to 30% performance improvement when the input code has many comments.\n * @babel/eslint-parser will set it for you.\n * It is not recommended to use attachComment: false with Babel transform,\n * as doing so removes all the comments in output code, and renders annotations such as\n * /* istanbul ignore next *\\/ nonfunctional.\n */\n attachComment?: boolean;\n\n /**\n * By default, Babel always throws an error when it finds some invalid code.\n * When this option is set to true, it will store the parsing error and\n * try to continue parsing the invalid input file.\n */\n errorRecovery?: boolean;\n\n /**\n * Indicate the mode the code should be parsed in.\n * Can be one of \"script\", \"commonjs\", \"module\", or \"unambiguous\". Defaults to \"script\".\n * \"unambiguous\" will make @babel/parser attempt to guess, based on the presence\n * of ES6 import or export statements.\n * Files with ES6 imports and exports are considered \"module\" and are otherwise \"script\".\n *\n * Use \"commonjs\" to parse code that is intended to be run in a CommonJS environment such as Node.js.\n */\n sourceType?: SourceType;\n\n /**\n * Correlate output AST nodes with their source filename.\n * Useful when generating code and source maps from the ASTs of multiple input files.\n */\n sourceFilename?: string;\n\n /**\n * By default, all source indexes start from 0.\n * You can provide a start index to alternatively start with.\n * Useful for integration with other source tools.\n */\n startIndex?: number;\n\n /**\n * By default, the first line of code parsed is treated as line 1.\n * You can provide a line number to alternatively start with.\n * Useful for integration with other source tools.\n */\n startLine?: number;\n\n /**\n * By default, the parsed code is treated as if it starts from line 1, column 0.\n * You can provide a column number to alternatively start with.\n * Useful for integration with other source tools.\n */\n startColumn?: number;\n\n /**\n * Array containing the plugins that you want to enable.\n */\n plugins?: Plugin[];\n\n /**\n * Should the parser work in strict mode.\n * Defaults to true if sourceType === 'module'. Otherwise, false.\n */\n strictMode?: boolean;\n\n /**\n * Adds a ranges property to each node: [node.start, node.end]\n */\n ranges?: boolean;\n\n /**\n * Adds all parsed tokens to a tokens property on the File node.\n */\n tokens?: boolean;\n\n /**\n * By default, the parser adds information about parentheses by setting\n * `extra.parenthesized` to `true` as needed.\n * When this option is `true` the parser creates `ParenthesizedExpression`\n * AST nodes instead of using the `extra` property.\n */\n createParenthesizedExpressions?: boolean;\n\n /**\n * The default is false in Babel 7 and true in Babel 8\n * Set this to true to parse it as an `ImportExpression` node.\n * Otherwise `import(foo)` is parsed as `CallExpression(Import, [Identifier(foo)])`.\n */\n createImportExpressions?: boolean;\n}\n\nexport const enum OptionFlags {\n AllowAwaitOutsideFunction = 1 << 0,\n AllowReturnOutsideFunction = 1 << 1,\n AllowNewTargetOutsideFunction = 1 << 2,\n AllowImportExportEverywhere = 1 << 3,\n AllowSuperOutsideMethod = 1 << 4,\n AllowYieldOutsideFunction = 1 << 5,\n AllowUndeclaredExports = 1 << 6,\n Ranges = 1 << 7,\n Tokens = 1 << 8,\n CreateImportExpressions = 1 << 9,\n CreateParenthesizedExpressions = 1 << 10,\n ErrorRecovery = 1 << 11,\n AttachComment = 1 << 12,\n AnnexB = 1 << 13,\n}\n\ntype OptionsWithDefaults = Required;\n\nfunction createDefaultOptions(): OptionsWithDefaults {\n return {\n // Source type (\"script\" or \"module\") for different semantics\n sourceType: \"script\",\n // Source filename.\n sourceFilename: undefined,\n // Index (0-based) from which to start counting source. Useful for\n // integration with other tools.\n startIndex: 0,\n // Column (0-based) from which to start counting source. Useful for\n // integration with other tools.\n startColumn: 0,\n // Line (1-based) from which to start counting source. Useful for\n // integration with other tools.\n startLine: 1,\n // When enabled, await at the top level is not considered an\n // error.\n allowAwaitOutsideFunction: false,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, new.target outside a function or class is not\n // considered an error.\n allowNewTargetOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // TODO\n allowSuperOutsideMethod: false,\n // When enabled, export statements can reference undeclared variables.\n allowUndeclaredExports: false,\n allowYieldOutsideFunction: false,\n // An array of plugins to enable\n plugins: [],\n // TODO\n strictMode: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // Adds all parsed tokens to a `tokens` property on the `File` node\n tokens: false,\n // Whether to create ImportExpression AST nodes (if false\n // `import(foo)` will be parsed as CallExpression(Import, [Identifier(foo)])\n createImportExpressions: process.env.BABEL_8_BREAKING ? true : false,\n // Whether to create ParenthesizedExpression AST nodes (if false\n // the parser sets extra.parenthesized on the expression nodes instead).\n createParenthesizedExpressions: false,\n // When enabled, errors are attached to the AST instead of being directly thrown.\n // Some errors will still throw, because @babel/parser can't always recover.\n errorRecovery: false,\n // When enabled, comments will be attached to adjacent AST nodes as one of\n // `leadingComments`, `trailingComments` and `innerComments`. The comment attachment\n // is vital to preserve comments after transform. If you don't print AST back,\n // consider set this option to `false` for performance\n attachComment: true,\n // When enabled, the parser will support Annex B syntax.\n // https://tc39.es/ecma262/#sec-additional-ecmascript-features-for-web-browsers\n annexB: true,\n };\n}\n\n// Interpret and default an options object\n\nexport function getOptions(opts?: Options | null): OptionsWithDefaults {\n // https://github.com/babel/babel/pull/16918\n // `options` is accessed frequently, please make sure it is a fast object.\n // `%ToFastProperties` can make it a fast object, but the performance is the same as the slow object.\n const options: any = createDefaultOptions();\n\n if (opts == null) {\n return options;\n }\n if (opts.annexB != null && opts.annexB !== false) {\n throw new Error(\"The `annexB` option can only be set to `false`.\");\n }\n\n for (const key of Object.keys(options) as (keyof Options)[]) {\n if (opts[key] != null) options[key] = opts[key];\n }\n\n if (options.startLine === 1) {\n if (opts.startIndex == null && options.startColumn > 0) {\n options.startIndex = options.startColumn;\n } else if (opts.startColumn == null && options.startIndex > 0) {\n options.startColumn = options.startIndex;\n }\n } else if (opts.startColumn == null || opts.startIndex == null) {\n if (opts.startIndex != null || process.env.BABEL_8_BREAKING) {\n throw new Error(\n \"With a `startLine > 1` you must also specify `startIndex` and `startColumn`.\",\n );\n }\n }\n\n if (options.sourceType === \"commonjs\") {\n if (opts.allowAwaitOutsideFunction != null) {\n throw new Error(\n \"The `allowAwaitOutsideFunction` option cannot be used with `sourceType: 'commonjs'`.\",\n );\n }\n if (opts.allowReturnOutsideFunction != null) {\n throw new Error(\n \"`sourceType: 'commonjs'` implies `allowReturnOutsideFunction: true`, please remove the `allowReturnOutsideFunction` option or use `sourceType: 'script'`.\",\n );\n }\n if (opts.allowNewTargetOutsideFunction != null) {\n throw new Error(\n \"`sourceType: 'commonjs'` implies `allowNewTargetOutsideFunction: true`, please remove the `allowNewTargetOutsideFunction` option or use `sourceType: 'script'`.\",\n );\n }\n }\n\n return options;\n}\n","import type { TokenType } from \"../tokenizer/types.ts\";\nimport type Parser from \"../parser/index.ts\";\nimport type * as N from \"../types.ts\";\nimport type { Node as NodeType, NodeBase, File } from \"../types.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { BindingFlag } from \"../util/scopeflags.ts\";\nimport { OptionFlags } from \"../options.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\n\nconst { defineProperty } = Object;\nconst toUnenumerable = (object: any, key: string) => {\n if (object) {\n defineProperty(object, key, { enumerable: false, value: object[key] });\n }\n};\n\nfunction toESTreeLocation(node: any) {\n toUnenumerable(node.loc.start, \"index\");\n toUnenumerable(node.loc.end, \"index\");\n\n return node;\n}\n\nexport default (superClass: typeof Parser) =>\n class ESTreeParserMixin extends superClass implements Parser {\n parse(): File {\n const file = toESTreeLocation(super.parse());\n\n if (this.optionFlags & OptionFlags.Tokens) {\n file.tokens = file.tokens.map(toESTreeLocation);\n }\n\n return file;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseRegExpLiteral({ pattern, flags }): N.EstreeRegExpLiteral {\n let regex: RegExp | null = null;\n try {\n regex = new RegExp(pattern, flags);\n } catch (_) {\n // In environments that don't support these flags value will\n // be null as the regex can't be represented natively.\n }\n const node = this.estreeParseLiteral(regex);\n node.regex = { pattern, flags };\n\n return node;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseBigIntLiteral(value: any): N.Node {\n // https://github.com/estree/estree/blob/master/es2020.md#bigintliteral\n let bigInt: bigint | null;\n try {\n bigInt = BigInt(value);\n } catch {\n bigInt = null;\n }\n const node = this.estreeParseLiteral(bigInt);\n node.bigint = String(node.value || value);\n\n return node;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseDecimalLiteral(value: any): N.Node {\n // https://github.com/estree/estree/blob/master/experimental/decimal.md\n // todo: use BigDecimal when node supports it.\n const decimal: null = null;\n const node = this.estreeParseLiteral(decimal);\n node.decimal = String(node.value || value);\n\n return node;\n }\n\n estreeParseLiteral(value: any) {\n // @ts-expect-error ESTree plugin changes node types\n return this.parseLiteral(value, \"Literal\");\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseStringLiteral(value: any): N.Node {\n return this.estreeParseLiteral(value);\n }\n\n parseNumericLiteral(value: any): any {\n return this.estreeParseLiteral(value);\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseNullLiteral(): N.Node {\n return this.estreeParseLiteral(null);\n }\n\n parseBooleanLiteral(value: boolean): N.BooleanLiteral {\n // @ts-expect-error ESTree plugin changes node types\n return this.estreeParseLiteral(value);\n }\n\n // https://github.com/estree/estree/blob/master/es2020.md#chainexpression\n estreeParseChainExpression(\n node: N.Expression,\n endLoc: Position,\n ): N.EstreeChainExpression {\n const chain = this.startNodeAtNode(node);\n chain.expression = node;\n return this.finishNodeAt(chain, \"ChainExpression\", endLoc);\n }\n\n // Cast a Directive to an ExpressionStatement. Mutates the input Directive.\n directiveToStmt(directive: N.Directive): N.ExpressionStatement {\n const expression = directive.value as any as N.EstreeLiteral;\n delete directive.value;\n\n this.castNodeTo(expression, \"Literal\");\n expression.raw = expression.extra.raw;\n expression.value = expression.extra.expressionValue;\n\n const stmt = this.castNodeTo(directive, \"ExpressionStatement\");\n stmt.expression = expression;\n stmt.directive = expression.extra.rawValue;\n\n delete expression.extra;\n\n return stmt;\n }\n\n /**\n * The TS-ESLint always define optional AST properties, here we provide the\n * default value for such properties immediately after `finishNode` was invoked.\n * This hook will be implemented by the typescript plugin.\n *\n * Note: This hook should be manually invoked when we change the `type` of a given AST\n * node, to ensure that the optional properties are correctly filled.\n * @param node The AST node finished by finishNode\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n fillOptionalPropertiesForTSESLint(node: NodeType) {}\n\n cloneEstreeStringLiteral(node: N.EstreeLiteral): N.EstreeLiteral {\n const { start, end, loc, range, raw, value } = node;\n const cloned = Object.create(node.constructor.prototype);\n cloned.type = \"Literal\";\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n cloned.raw = raw;\n cloned.value = value;\n return cloned;\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: boolean): void {\n super.initFunction(node, isAsync);\n node.expression = false;\n }\n\n checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n if (node != null && this.isObjectProperty(node)) {\n // @ts-expect-error plugin typings\n this.checkDeclaration((node as unknown as N.EstreeProperty).value);\n } else {\n super.checkDeclaration(node);\n }\n }\n\n getObjectOrClassMethodParams(method: N.ObjectMethod | N.ClassMethod) {\n return (method as unknown as N.EstreeMethodDefinition).value.params;\n }\n\n isValidDirective(stmt: N.Statement): stmt is N.ExpressionStatement {\n return (\n stmt.type === \"ExpressionStatement\" &&\n stmt.expression.type === \"Literal\" &&\n typeof stmt.expression.value === \"string\" &&\n !stmt.expression.extra?.parenthesized\n );\n }\n\n parseBlockBody(\n node: N.BlockStatementLike,\n allowDirectives: boolean | undefined | null,\n topLevel: boolean,\n end: TokenType,\n afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n ): void {\n super.parseBlockBody(\n node,\n allowDirectives,\n topLevel,\n end,\n afterBlockParse,\n );\n\n const directiveStatements = node.directives.map(d =>\n this.directiveToStmt(d),\n );\n // @ts-expect-error estree plugin typings\n node.body = directiveStatements.concat(node.body);\n delete node.directives;\n }\n\n parsePrivateName(): any {\n const node = super.parsePrivateName();\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return node;\n }\n }\n return this.convertPrivateNameToPrivateIdentifier(node);\n }\n\n convertPrivateNameToPrivateIdentifier(\n node: N.PrivateName,\n ): N.EstreePrivateIdentifier {\n const name = super.getPrivateNameSV(node);\n node = node as any;\n delete node.id;\n // @ts-expect-error mutate AST types\n node.name = name;\n return this.castNodeTo(node, \"PrivateIdentifier\");\n }\n\n // @ts-expect-error ESTree plugin changes node types\n isPrivateName(node: N.Node): node is N.EstreePrivateIdentifier {\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return super.isPrivateName(node);\n }\n }\n return node.type === \"PrivateIdentifier\";\n }\n\n // @ts-expect-error ESTree plugin changes node types\n getPrivateNameSV(node: N.EstreePrivateIdentifier): string {\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return super.getPrivateNameSV(node as unknown as N.PrivateName);\n }\n }\n return node.name;\n }\n\n // @ts-expect-error plugin may override interfaces\n parseLiteral(value: any, type: T[\"type\"]): T {\n const node = super.parseLiteral(value, type);\n // @ts-expect-error mutating AST types\n node.raw = node.extra.raw;\n delete node.extra;\n\n return node;\n }\n\n parseFunctionBody(\n node: N.Function,\n allowExpression?: boolean | null,\n isMethod: boolean = false,\n ): void {\n super.parseFunctionBody(node, allowExpression, isMethod);\n node.expression = node.body.type !== \"BlockStatement\";\n }\n\n // @ts-expect-error plugin may override interfaces\n parseMethod<\n T extends N.ClassPrivateMethod | N.ObjectMethod | N.ClassMethod,\n >(\n node: Undone,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowDirectSuper: boolean,\n type: T[\"type\"],\n inClassScope: boolean = false,\n ):\n | N.EstreeProperty\n | N.EstreeMethodDefinition\n | N.EstreeTSAbstractMethodDefinition {\n let funcNode = this.startNode();\n funcNode.kind = node.kind; // provide kind, so super method correctly sets state\n funcNode = super.parseMethod(\n funcNode,\n isGenerator,\n isAsync,\n isConstructor,\n allowDirectSuper,\n type,\n inClassScope,\n );\n delete funcNode.kind;\n const { typeParameters } = node;\n if (typeParameters) {\n delete node.typeParameters;\n funcNode.typeParameters = typeParameters;\n this.resetStartLocationFromNode(funcNode, typeParameters);\n }\n const valueNode = this.castNodeTo(\n funcNode as N.MethodLike,\n process.env.BABEL_8_BREAKING &&\n this.hasPlugin(\"typescript\") &&\n !funcNode.body\n ? \"TSEmptyBodyFunctionExpression\"\n : \"FunctionExpression\",\n );\n (\n node as unknown as Undone<\n | N.EstreeProperty\n | N.EstreeMethodDefinition\n | N.EstreeTSAbstractMethodDefinition\n >\n ).value = valueNode;\n if (type === \"ClassPrivateMethod\") {\n node.computed = false;\n }\n if (process.env.BABEL_8_BREAKING && this.hasPlugin(\"typescript\")) {\n // @ts-expect-error todo(flow->ts) property not defined for all types in union\n if (node.abstract) {\n // @ts-expect-error remove abstract from TSAbstractMethodDefinition\n delete node.abstract;\n return this.finishNode(\n // @ts-expect-error cast methods to estree types\n node as Undone,\n \"TSAbstractMethodDefinition\",\n );\n }\n }\n if (type === \"ObjectMethod\") {\n if ((node as any as N.ObjectMethod).kind === \"method\") {\n (node as any as N.EstreeProperty).kind = \"init\";\n }\n (node as any as N.EstreeProperty).shorthand = false;\n return this.finishNode(\n // @ts-expect-error cast methods to estree types\n node as Undone,\n \"Property\",\n );\n } else {\n return this.finishNode(\n // @ts-expect-error cast methods to estree types\n node as Undone,\n \"MethodDefinition\",\n );\n }\n }\n\n nameIsConstructor(key: N.Expression | N.PrivateName): boolean {\n if (key.type === \"Literal\") return key.value === \"constructor\";\n return super.nameIsConstructor(key);\n }\n\n parseClassProperty(...args: [N.ClassProperty]): any {\n const propertyNode = super.parseClassProperty(...args);\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return propertyNode as unknown as N.EstreePropertyDefinition;\n }\n }\n if (\n process.env.BABEL_8_BREAKING &&\n propertyNode.abstract &&\n this.hasPlugin(\"typescript\")\n ) {\n delete propertyNode.abstract;\n this.castNodeTo(propertyNode, \"TSAbstractPropertyDefinition\");\n } else {\n this.castNodeTo(propertyNode, \"PropertyDefinition\");\n }\n return propertyNode;\n }\n\n parseClassPrivateProperty(...args: [N.ClassPrivateProperty]): any {\n const propertyNode = super.parseClassPrivateProperty(...args);\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return propertyNode as unknown as N.EstreePropertyDefinition;\n }\n }\n if (\n process.env.BABEL_8_BREAKING &&\n propertyNode.abstract &&\n this.hasPlugin(\"typescript\")\n ) {\n this.castNodeTo(propertyNode, \"TSAbstractPropertyDefinition\");\n } else {\n this.castNodeTo(propertyNode, \"PropertyDefinition\");\n }\n propertyNode.computed = false;\n return propertyNode;\n }\n\n parseClassAccessorProperty(\n this: Parser,\n node: N.ClassAccessorProperty,\n ): any {\n const accessorPropertyNode = super.parseClassAccessorProperty(node);\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return accessorPropertyNode;\n }\n }\n if (accessorPropertyNode.abstract && this.hasPlugin(\"typescript\")) {\n delete accessorPropertyNode.abstract;\n this.castNodeTo(accessorPropertyNode, \"TSAbstractAccessorProperty\");\n } else {\n this.castNodeTo(accessorPropertyNode, \"AccessorProperty\");\n }\n return accessorPropertyNode;\n }\n\n parseObjectProperty(\n prop: N.ObjectProperty,\n startLoc: Position | undefined | null,\n isPattern: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.ObjectProperty | undefined | null {\n const node: N.EstreeProperty = super.parseObjectProperty(\n prop,\n startLoc,\n isPattern,\n refExpressionErrors,\n ) as any;\n\n if (node) {\n node.kind = \"init\";\n this.castNodeTo(node, \"Property\");\n }\n\n return node as any;\n }\n\n finishObjectProperty(node: Undone): N.ObjectProperty {\n (node as unknown as Undone).kind = \"init\";\n return this.finishNode(\n node as unknown as Undone,\n \"Property\",\n ) as any;\n }\n\n isValidLVal(\n type: string,\n isUnparenthesizedInAssign: boolean,\n binding: BindingFlag,\n ) {\n return type === \"Property\"\n ? \"value\"\n : super.isValidLVal(type, isUnparenthesizedInAssign, binding);\n }\n\n isAssignable(node: N.Node, isBinding?: boolean): boolean {\n if (node != null && this.isObjectProperty(node)) {\n return this.isAssignable(node.value, isBinding);\n }\n return super.isAssignable(node, isBinding);\n }\n\n toAssignable(node: N.Node, isLHS: boolean = false): void {\n if (node != null && this.isObjectProperty(node)) {\n const { key, value } = node;\n if (this.isPrivateName(key)) {\n this.classScope.usePrivateName(\n this.getPrivateNameSV(key),\n key.loc.start,\n );\n }\n this.toAssignable(value, isLHS);\n } else {\n super.toAssignable(node, isLHS);\n }\n }\n\n toAssignableObjectExpressionProp(\n prop: N.Node,\n isLast: boolean,\n isLHS: boolean,\n ) {\n if (\n prop.type === \"Property\" &&\n (prop.kind === \"get\" || prop.kind === \"set\")\n ) {\n this.raise(Errors.PatternHasAccessor, prop.key);\n } else if (prop.type === \"Property\" && prop.method) {\n this.raise(Errors.PatternHasMethod, prop.key);\n } else {\n super.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n }\n }\n\n finishCallExpression(\n unfinished: Undone,\n optional: boolean,\n ): T {\n const node = super.finishCallExpression(unfinished, optional);\n\n if (node.callee.type === \"Import\") {\n this.castNodeTo(node, \"ImportExpression\");\n (node as N.Node as N.EstreeImportExpression).source = node\n .arguments[0] as N.Expression;\n (node as N.Node as N.EstreeImportExpression).options =\n (node.arguments[1] as N.Expression) ?? null;\n // compatibility with previous ESTree AST\n // TODO(Babel 8): Remove this\n (node as N.Node as N.EstreeImportExpression).attributes =\n (node.arguments[1] as N.Expression) ?? null;\n // arguments isn't optional in the type definition\n delete node.arguments;\n // callee isn't optional in the type definition\n delete node.callee;\n } else if (node.type === \"OptionalCallExpression\") {\n this.castNodeTo(node, \"CallExpression\");\n } else {\n node.optional = false;\n }\n\n return node;\n }\n\n toReferencedArguments(\n node:\n | N.CallExpression\n | N.OptionalCallExpression\n | N.EstreeImportExpression,\n /* isParenthesizedExpr?: boolean, */\n ) {\n // ImportExpressions do not have an arguments array.\n if (node.type === \"ImportExpression\") {\n return;\n }\n\n super.toReferencedArguments(node);\n }\n\n parseExport(\n unfinished: Undone,\n decorators: N.Decorator[] | null,\n ) {\n const exportStartLoc = this.state.lastTokStartLoc;\n const node = super.parseExport(unfinished, decorators);\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n // @ts-expect-error mutating AST types\n node.exported = null;\n break;\n\n case \"ExportNamedDeclaration\":\n if (\n node.specifiers.length === 1 &&\n node.specifiers[0].type === \"ExportNamespaceSpecifier\"\n ) {\n this.castNodeTo(node, \"ExportAllDeclaration\");\n // @ts-expect-error mutating AST types\n node.exported = node.specifiers[0].exported;\n delete node.specifiers;\n }\n\n // fallthrough\n case \"ExportDefaultDeclaration\":\n {\n const { declaration } = node;\n if (\n declaration?.type === \"ClassDeclaration\" &&\n declaration.decorators?.length > 0 &&\n // decorator comes before export\n declaration.start === node.start\n ) {\n this.resetStartLocation(\n node,\n // For compatibility with ESLint's keyword-spacing rule, which assumes that an\n // export declaration must start with export.\n // https://github.com/babel/babel/issues/15085\n // Here we reset export declaration's start to be the start of the export token\n exportStartLoc,\n );\n }\n }\n\n break;\n }\n\n return node;\n }\n\n stopParseSubscript(base: N.Expression, state: N.ParseSubscriptState) {\n const node = super.stopParseSubscript(base, state);\n if (state.optionalChainMember) {\n return this.estreeParseChainExpression(node, base.loc.end);\n }\n return node;\n }\n\n parseMember(\n base: N.Expression,\n startLoc: Position,\n state: N.ParseSubscriptState,\n computed: boolean,\n optional: boolean,\n ) {\n const node = super.parseMember(base, startLoc, state, computed, optional);\n if (node.type === \"OptionalMemberExpression\") {\n this.castNodeTo(node, \"MemberExpression\");\n } else {\n node.optional = false;\n }\n return node;\n }\n\n isOptionalMemberExpression(node: N.Node) {\n if (node.type === \"ChainExpression\") {\n return node.expression.type === \"MemberExpression\";\n }\n return super.isOptionalMemberExpression(node);\n }\n\n hasPropertyAsPrivateName(node: N.Node): boolean {\n if (node.type === \"ChainExpression\") {\n node = node.expression;\n }\n return super.hasPropertyAsPrivateName(node);\n }\n\n // @ts-expect-error ESTree plugin changes node types\n isObjectProperty(node: N.Node): node is N.EstreeProperty {\n return node.type === \"Property\" && node.kind === \"init\" && !node.method;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n isObjectMethod(node: N.Node): node is N.EstreeProperty {\n return (\n node.type === \"Property\" &&\n (node.method || node.kind === \"get\" || node.kind === \"set\")\n );\n }\n\n /* ============================================================ *\n * parser/node.ts *\n * ============================================================ */\n\n castNodeTo(\n node: N.Node,\n type: T,\n ): Extract {\n const result = super.castNodeTo(node, type);\n this.fillOptionalPropertiesForTSESLint(result);\n return result;\n }\n\n cloneIdentifier(node: T): T {\n const cloned = super.cloneIdentifier(node);\n this.fillOptionalPropertiesForTSESLint(cloned);\n return cloned;\n }\n\n cloneStringLiteral<\n T extends N.EstreeLiteral | N.StringLiteral | N.Placeholder,\n >(node: T): T {\n if (node.type === \"Literal\") {\n return this.cloneEstreeStringLiteral(node) as T;\n }\n return super.cloneStringLiteral(node);\n }\n\n finishNodeAt(\n node: Undone,\n type: T[\"type\"],\n endLoc: Position,\n ): T {\n return toESTreeLocation(super.finishNodeAt(node, type, endLoc));\n }\n\n // Override for TS-ESLint that does not allow optional AST properties\n finishNode(node: Undone, type: T[\"type\"]): T {\n const result = super.finishNode(node, type);\n this.fillOptionalPropertiesForTSESLint(result);\n return result;\n }\n\n resetStartLocation(node: N.Node, startLoc: Position) {\n super.resetStartLocation(node, startLoc);\n toESTreeLocation(node);\n }\n\n resetEndLocation(\n node: NodeBase,\n endLoc: Position = this.state.lastTokEndLoc,\n ): void {\n super.resetEndLocation(node, endLoc);\n toESTreeLocation(node);\n }\n };\n","// The token context is used in JSX plugin to track\n// jsx tag / jsx text / normal JavaScript expression\n\nexport class TokContext {\n constructor(token: string, preserveSpace?: boolean) {\n this.token = token;\n this.preserveSpace = !!preserveSpace;\n }\n\n token: string;\n preserveSpace: boolean;\n}\n\nconst types: {\n [key: string]: TokContext;\n} = {\n brace: new TokContext(\"{\"), // normal JavaScript expression\n j_oTag: new TokContext(\"...\", true), // JSX expressions\n};\n\nif (!process.env.BABEL_8_BREAKING) {\n types.template = new TokContext(\"`\", true);\n}\n\nexport { types };\n","import { types as tc, type TokContext } from \"./context.ts\";\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between 1) binary\n// expression (<) and JSX Tag start (); 2) object literal and JSX\n// texts. It is set on the `updateContext` function in the JSX plugin.\n\n// The `startsExpr` property is used to determine whether an expression\n// may be the “argument” subexpression of a `yield` expression or\n// `yield` statement. It is set on all token types that may be at the\n// start of a subexpression.\n\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\n\ntype TokenOptions = {\n keyword?: string;\n beforeExpr?: boolean;\n startsExpr?: boolean;\n rightAssociative?: boolean;\n isLoop?: boolean;\n isAssign?: boolean;\n prefix?: boolean;\n postfix?: boolean;\n binop?: number | null;\n};\n\n// Internally the tokenizer stores token as a number\nexport type TokenType = number;\n\n// The `ExportedTokenType` is exported via `tokTypes` and accessible\n// when `tokens: true` is enabled. Unlike internal token type, it provides\n// metadata of the tokens.\nexport class ExportedTokenType {\n label: string;\n keyword: string | undefined | null;\n beforeExpr: boolean;\n startsExpr: boolean;\n rightAssociative: boolean;\n isLoop: boolean;\n isAssign: boolean;\n prefix: boolean;\n postfix: boolean;\n binop: number | undefined | null;\n // todo(Babel 8): remove updateContext from exposed token layout\n declare updateContext:\n | ((context: Array) => void)\n | undefined\n | null;\n\n constructor(label: string, conf: TokenOptions = {}) {\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.rightAssociative = !!conf.rightAssociative;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop != null ? conf.binop : null;\n if (!process.env.BABEL_8_BREAKING) {\n this.updateContext = null;\n }\n }\n}\n\n// A map from keyword/keyword-like string value to the token type\nexport const keywords = new Map();\n\nfunction createKeyword(name: string, options: TokenOptions = {}): TokenType {\n options.keyword = name;\n const token = createToken(name, options);\n keywords.set(name, token);\n return token;\n}\n\nfunction createBinop(name: string, binop: number) {\n return createToken(name, { beforeExpr, binop });\n}\n\nlet tokenTypeCounter = -1;\nexport const tokenTypes: ExportedTokenType[] = [];\nconst tokenLabels: string[] = [];\nconst tokenBinops: number[] = [];\nconst tokenBeforeExprs: boolean[] = [];\nconst tokenStartsExprs: boolean[] = [];\nconst tokenPrefixes: boolean[] = [];\n\nfunction createToken(name: string, options: TokenOptions = {}): TokenType {\n ++tokenTypeCounter;\n tokenLabels.push(name);\n tokenBinops.push(options.binop ?? -1);\n tokenBeforeExprs.push(options.beforeExpr ?? false);\n tokenStartsExprs.push(options.startsExpr ?? false);\n tokenPrefixes.push(options.prefix ?? false);\n tokenTypes.push(new ExportedTokenType(name, options));\n\n return tokenTypeCounter;\n}\n\nfunction createKeywordLike(\n name: string,\n options: TokenOptions = {},\n): TokenType {\n ++tokenTypeCounter;\n keywords.set(name, tokenTypeCounter);\n tokenLabels.push(name);\n tokenBinops.push(options.binop ?? -1);\n tokenBeforeExprs.push(options.beforeExpr ?? false);\n tokenStartsExprs.push(options.startsExpr ?? false);\n tokenPrefixes.push(options.prefix ?? false);\n // In the exported token type, we set the label as \"name\" for backward compatibility with Babel 7\n tokenTypes.push(new ExportedTokenType(\"name\", options));\n\n return tokenTypeCounter;\n}\n\n// For performance the token type helpers depend on the following declarations order.\n// When adding new token types, please also check if the token helpers need update.\n\nexport type InternalTokenTypes = typeof tt;\n\nexport const tt = {\n // Punctuation token types.\n bracketL: createToken(\"[\", { beforeExpr, startsExpr }),\n // TODO: Remove this in Babel 8\n bracketHashL: createToken(\"#[\", { beforeExpr, startsExpr }),\n // TODO: Remove this in Babel 8\n bracketBarL: createToken(\"[|\", { beforeExpr, startsExpr }),\n bracketR: createToken(\"]\"),\n // TODO: Remove this in Babel 8\n bracketBarR: createToken(\"|]\"),\n braceL: createToken(\"{\", { beforeExpr, startsExpr }),\n // TODO: Remove this in Babel 8\n braceBarL: createToken(\"{|\", { beforeExpr, startsExpr }),\n // TODO: Remove this in Babel 8\n braceHashL: createToken(\"#{\", { beforeExpr, startsExpr }),\n braceR: createToken(\"}\"),\n braceBarR: createToken(\"|}\"),\n parenL: createToken(\"(\", { beforeExpr, startsExpr }),\n parenR: createToken(\")\"),\n comma: createToken(\",\", { beforeExpr }),\n semi: createToken(\";\", { beforeExpr }),\n colon: createToken(\":\", { beforeExpr }),\n doubleColon: createToken(\"::\", { beforeExpr }),\n dot: createToken(\".\"),\n question: createToken(\"?\", { beforeExpr }),\n questionDot: createToken(\"?.\"),\n arrow: createToken(\"=>\", { beforeExpr }),\n template: createToken(\"template\"),\n ellipsis: createToken(\"...\", { beforeExpr }),\n backQuote: createToken(\"`\", { startsExpr }),\n dollarBraceL: createToken(\"${\", { beforeExpr, startsExpr }),\n // start: isTemplate\n templateTail: createToken(\"...`\", { startsExpr }),\n templateNonTail: createToken(\"...${\", { beforeExpr, startsExpr }),\n // end: isTemplate\n at: createToken(\"@\"),\n hash: createToken(\"#\", { startsExpr }),\n\n // Special hashbang token.\n interpreterDirective: createToken(\"#!...\"),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n // start: isAssign\n eq: createToken(\"=\", { beforeExpr, isAssign }),\n assign: createToken(\"_=\", { beforeExpr, isAssign }),\n slashAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n // These are only needed to support % and ^ as a Hack-pipe topic token.\n // When the proposal settles on a token, the others can be merged with\n // tt.assign.\n xorAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n moduloAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n // end: isAssign\n\n incDec: createToken(\"++/--\", { prefix, postfix, startsExpr }),\n bang: createToken(\"!\", { beforeExpr, prefix, startsExpr }),\n tilde: createToken(\"~\", { beforeExpr, prefix, startsExpr }),\n\n // More possible topic tokens.\n // When the proposal settles on a token, at least one of these may be removed.\n doubleCaret: createToken(\"^^\", { startsExpr }),\n doubleAt: createToken(\"@@\", { startsExpr }),\n\n // start: isBinop\n pipeline: createBinop(\"|>\", 0),\n nullishCoalescing: createBinop(\"??\", 1),\n logicalOR: createBinop(\"||\", 1),\n logicalAND: createBinop(\"&&\", 2),\n bitwiseOR: createBinop(\"|\", 3),\n bitwiseXOR: createBinop(\"^\", 4),\n bitwiseAND: createBinop(\"&\", 5),\n equality: createBinop(\"==/!=/===/!==\", 6),\n lt: createBinop(\"/<=/>=\", 7),\n gt: createBinop(\"/<=/>=\", 7),\n relational: createBinop(\"/<=/>=\", 7),\n bitShift: createBinop(\"<>/>>>\", 8),\n bitShiftL: createBinop(\"<>/>>>\", 8),\n bitShiftR: createBinop(\"<>/>>>\", 8),\n plusMin: createToken(\"+/-\", { beforeExpr, binop: 9, prefix, startsExpr }),\n // startsExpr: required by v8intrinsic plugin\n modulo: createToken(\"%\", { binop: 10, startsExpr }),\n // unset `beforeExpr` as it can be `function *`\n star: createToken(\"*\", { binop: 10 }),\n slash: createBinop(\"/\", 10),\n exponent: createToken(\"**\", {\n beforeExpr,\n binop: 11,\n rightAssociative: true,\n }),\n\n // Keywords\n // Don't forget to update packages/babel-helper-validator-identifier/src/keyword.js\n // when new keywords are added\n // start: isLiteralPropertyName\n // start: isKeyword\n _in: createKeyword(\"in\", { beforeExpr, binop: 7 }),\n _instanceof: createKeyword(\"instanceof\", { beforeExpr, binop: 7 }),\n // end: isBinop\n _break: createKeyword(\"break\"),\n _case: createKeyword(\"case\", { beforeExpr }),\n _catch: createKeyword(\"catch\"),\n _continue: createKeyword(\"continue\"),\n _debugger: createKeyword(\"debugger\"),\n _default: createKeyword(\"default\", { beforeExpr }),\n _else: createKeyword(\"else\", { beforeExpr }),\n _finally: createKeyword(\"finally\"),\n _function: createKeyword(\"function\", { startsExpr }),\n _if: createKeyword(\"if\"),\n _return: createKeyword(\"return\", { beforeExpr }),\n _switch: createKeyword(\"switch\"),\n _throw: createKeyword(\"throw\", { beforeExpr, prefix, startsExpr }),\n _try: createKeyword(\"try\"),\n _var: createKeyword(\"var\"),\n _const: createKeyword(\"const\"),\n _with: createKeyword(\"with\"),\n _new: createKeyword(\"new\", { beforeExpr, startsExpr }),\n _this: createKeyword(\"this\", { startsExpr }),\n _super: createKeyword(\"super\", { startsExpr }),\n _class: createKeyword(\"class\", { startsExpr }),\n _extends: createKeyword(\"extends\", { beforeExpr }),\n _export: createKeyword(\"export\"),\n _import: createKeyword(\"import\", { startsExpr }),\n _null: createKeyword(\"null\", { startsExpr }),\n _true: createKeyword(\"true\", { startsExpr }),\n _false: createKeyword(\"false\", { startsExpr }),\n _typeof: createKeyword(\"typeof\", { beforeExpr, prefix, startsExpr }),\n _void: createKeyword(\"void\", { beforeExpr, prefix, startsExpr }),\n _delete: createKeyword(\"delete\", { beforeExpr, prefix, startsExpr }),\n // start: isLoop\n _do: createKeyword(\"do\", { isLoop, beforeExpr }),\n _for: createKeyword(\"for\", { isLoop }),\n _while: createKeyword(\"while\", { isLoop }),\n // end: isLoop\n // end: isKeyword\n\n // Primary literals\n // start: isIdentifier\n _as: createKeywordLike(\"as\", { startsExpr }),\n _assert: createKeywordLike(\"assert\", { startsExpr }),\n _async: createKeywordLike(\"async\", { startsExpr }),\n _await: createKeywordLike(\"await\", { startsExpr }),\n _defer: createKeywordLike(\"defer\", { startsExpr }),\n _from: createKeywordLike(\"from\", { startsExpr }),\n _get: createKeywordLike(\"get\", { startsExpr }),\n _let: createKeywordLike(\"let\", { startsExpr }),\n _meta: createKeywordLike(\"meta\", { startsExpr }),\n _of: createKeywordLike(\"of\", { startsExpr }),\n _sent: createKeywordLike(\"sent\", { startsExpr }),\n _set: createKeywordLike(\"set\", { startsExpr }),\n _source: createKeywordLike(\"source\", { startsExpr }),\n _static: createKeywordLike(\"static\", { startsExpr }),\n _using: createKeywordLike(\"using\", { startsExpr }),\n _yield: createKeywordLike(\"yield\", { startsExpr }),\n\n // Flow and TypeScript Keywordlike\n _asserts: createKeywordLike(\"asserts\", { startsExpr }),\n _checks: createKeywordLike(\"checks\", { startsExpr }),\n _exports: createKeywordLike(\"exports\", { startsExpr }),\n _global: createKeywordLike(\"global\", { startsExpr }),\n _implements: createKeywordLike(\"implements\", { startsExpr }),\n _intrinsic: createKeywordLike(\"intrinsic\", { startsExpr }),\n _infer: createKeywordLike(\"infer\", { startsExpr }),\n _is: createKeywordLike(\"is\", { startsExpr }),\n _mixins: createKeywordLike(\"mixins\", { startsExpr }),\n _proto: createKeywordLike(\"proto\", { startsExpr }),\n _require: createKeywordLike(\"require\", { startsExpr }),\n _satisfies: createKeywordLike(\"satisfies\", { startsExpr }),\n // start: isTSTypeOperator\n _keyof: createKeywordLike(\"keyof\", { startsExpr }),\n _readonly: createKeywordLike(\"readonly\", { startsExpr }),\n _unique: createKeywordLike(\"unique\", { startsExpr }),\n // end: isTSTypeOperator\n // start: isTSDeclarationStart\n _abstract: createKeywordLike(\"abstract\", { startsExpr }),\n _declare: createKeywordLike(\"declare\", { startsExpr }),\n _enum: createKeywordLike(\"enum\", { startsExpr }),\n _module: createKeywordLike(\"module\", { startsExpr }),\n _namespace: createKeywordLike(\"namespace\", { startsExpr }),\n // start: isFlowInterfaceOrTypeOrOpaque\n _interface: createKeywordLike(\"interface\", { startsExpr }),\n _type: createKeywordLike(\"type\", { startsExpr }),\n // end: isTSDeclarationStart\n _opaque: createKeywordLike(\"opaque\", { startsExpr }),\n // end: isFlowInterfaceOrTypeOrOpaque\n name: createToken(\"name\", { startsExpr }),\n\n // placeholder plugin\n placeholder: createToken(\"%%\", { startsExpr }),\n // end: isIdentifier\n\n string: createToken(\"string\", { startsExpr }),\n num: createToken(\"num\", { startsExpr }),\n bigint: createToken(\"bigint\", { startsExpr }),\n // TODO: Remove this in Babel 8\n decimal: createToken(\"decimal\", { startsExpr }),\n // end: isLiteralPropertyName\n regexp: createToken(\"regexp\", { startsExpr }),\n privateName: createToken(\"#name\", { startsExpr }),\n eof: createToken(\"eof\"),\n\n // jsx plugin\n jsxName: createToken(\"jsxName\"),\n jsxText: createToken(\"jsxText\", { beforeExpr }),\n jsxTagStart: createToken(\"jsxTagStart\", { startsExpr }),\n jsxTagEnd: createToken(\"jsxTagEnd\"),\n} as const;\n\nexport function tokenIsIdentifier(token: TokenType): boolean {\n return token >= tt._as && token <= tt.placeholder;\n}\n\nexport function tokenKeywordOrIdentifierIsKeyword(token: TokenType): boolean {\n // we can remove the token >= tt._in check when we\n // know a token is either keyword or identifier\n return token <= tt._while;\n}\n\nexport function tokenIsKeywordOrIdentifier(token: TokenType): boolean {\n return token >= tt._in && token <= tt.placeholder;\n}\n\nexport function tokenIsLiteralPropertyName(token: TokenType): boolean {\n return token >= tt._in && token <= tt.decimal;\n}\n\nexport function tokenComesBeforeExpression(token: TokenType): boolean {\n return tokenBeforeExprs[token];\n}\n\nexport function tokenCanStartExpression(token: TokenType): boolean {\n return tokenStartsExprs[token];\n}\n\nexport function tokenIsAssignment(token: TokenType): boolean {\n return token >= tt.eq && token <= tt.moduloAssign;\n}\n\nexport function tokenIsFlowInterfaceOrTypeOrOpaque(token: TokenType): boolean {\n return token >= tt._interface && token <= tt._opaque;\n}\n\nexport function tokenIsLoop(token: TokenType): boolean {\n return token >= tt._do && token <= tt._while;\n}\n\nexport function tokenIsKeyword(token: TokenType): boolean {\n return token >= tt._in && token <= tt._while;\n}\n\nexport function tokenIsOperator(token: TokenType): boolean {\n return token >= tt.pipeline && token <= tt._instanceof;\n}\n\nexport function tokenIsPostfix(token: TokenType): boolean {\n return token === tt.incDec;\n}\n\nexport function tokenIsPrefix(token: TokenType): boolean {\n return tokenPrefixes[token];\n}\n\nexport function tokenIsTSTypeOperator(token: TokenType): boolean {\n return token >= tt._keyof && token <= tt._unique;\n}\n\nexport function tokenIsTSDeclarationStart(token: TokenType): boolean {\n return token >= tt._abstract && token <= tt._type;\n}\n\nexport function tokenLabelName(token: TokenType): string {\n return tokenLabels[token];\n}\n\nexport function tokenOperatorPrecedence(token: TokenType): number {\n return tokenBinops[token];\n}\n\nexport function tokenIsBinaryOperator(token: TokenType): boolean {\n return tokenBinops[token] !== -1;\n}\n\nexport function tokenIsRightAssociative(token: TokenType): boolean {\n return token === tt.exponent;\n}\n\nexport function tokenIsTemplate(token: TokenType): boolean {\n return token >= tt.templateTail && token <= tt.templateNonTail;\n}\n\nexport function getExportedToken(token: TokenType): ExportedTokenType {\n return tokenTypes[token];\n}\n\nexport function isTokenType(obj: any): boolean {\n return typeof obj === \"number\";\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n tokenTypes[tt.braceR].updateContext = context => {\n context.pop();\n };\n\n tokenTypes[tt.braceL].updateContext =\n tokenTypes[tt.braceHashL].updateContext =\n tokenTypes[tt.dollarBraceL].updateContext =\n context => {\n context.push(tc.brace);\n };\n\n tokenTypes[tt.backQuote].updateContext = context => {\n if (context[context.length - 1] === tc.template) {\n context.pop();\n } else {\n context.push(tc.template);\n }\n };\n\n tokenTypes[tt.jsxTagStart].updateContext = context => {\n context.push(tc.j_expr, tc.j_oTag);\n };\n}\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.cjs`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7cd\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7dc\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.cjs`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,2,60,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,42,9,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,496,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,80,3,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,343,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,726,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n","const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n","import * as charCodes from \"charcodes\";\nimport { isIdentifierStart } from \"@babel/helper-validator-identifier\";\n\nexport {\n isIdentifierStart,\n isIdentifierChar,\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nexport const keywordRelationalOperator = /^in(stanceof)?$/;\n\n// Test whether a current state character code and next character code is @\n\nexport function isIteratorStart(\n current: number,\n next: number,\n next2: number,\n): boolean {\n return (\n current === charCodes.atSign &&\n next === charCodes.atSign &&\n isIdentifierStart(next2)\n );\n}\n\n// This is the comprehensive set of JavaScript reserved words\n// If a word is in this set, it could be a reserved word,\n// depending on sourceType/strictMode/binding info. In other words\n// if a word is not in this set, it is not a reserved word under\n// any circumstance.\nconst reservedWordLikeSet = new Set([\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n // strict\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n // strictBind\n \"eval\",\n \"arguments\",\n // reservedWorkLike\n \"enum\",\n \"await\",\n]);\n\nexport function canBeReservedWord(word: string): boolean {\n return reservedWordLikeSet.has(word);\n}\n","import { ScopeFlag, BindingFlag } from \"./scopeflags.ts\";\nimport type { Position } from \"./location.ts\";\nimport type * as N from \"../types.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\n\nexport const enum NameType {\n // var-declared names in the current lexical scope\n Var = 1 << 0,\n // lexically-declared names in the current lexical scope\n Lexical = 1 << 1,\n // lexically-declared FunctionDeclaration names in the current lexical scope\n Function = 1 << 2,\n}\n\n// Start an AST node, attaching a start offset.\nexport class Scope {\n flags: ScopeFlag = 0;\n names: Map = new Map();\n firstLexicalName = \"\";\n\n constructor(flags: ScopeFlag) {\n this.flags = flags;\n }\n}\n\n// The functions in this module keep track of declared variables in the\n// current scope in order to detect duplicate variable names.\nexport default class ScopeHandler {\n parser: Tokenizer;\n scopeStack: Array = [];\n inModule: boolean;\n undefinedExports: Map = new Map();\n\n constructor(parser: Tokenizer, inModule: boolean) {\n this.parser = parser;\n this.inModule = inModule;\n }\n\n get inTopLevel() {\n return (this.currentScope().flags & ScopeFlag.PROGRAM) > 0;\n }\n get inFunction() {\n return (this.currentVarScopeFlags() & ScopeFlag.FUNCTION_BASE) > 0;\n }\n get allowSuper() {\n return (this.currentThisScopeFlags() & ScopeFlag.SUPER) > 0;\n }\n get allowDirectSuper() {\n return (this.currentThisScopeFlags() & ScopeFlag.DIRECT_SUPER) > 0;\n }\n get allowNewTarget() {\n return (this.currentThisScopeFlags() & ScopeFlag.NEW_TARGET) > 0;\n }\n get inClass() {\n return (this.currentThisScopeFlags() & ScopeFlag.CLASS_BASE) > 0;\n }\n get inClassAndNotInNonArrowFunction() {\n const flags = this.currentThisScopeFlags();\n return (\n (flags & ScopeFlag.CLASS_BASE) > 0 &&\n (flags & ScopeFlag.FUNCTION_BASE) === 0\n );\n }\n get inStaticBlock() {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const { flags } = this.scopeStack[i];\n if (flags & ScopeFlag.STATIC_BLOCK) {\n return true;\n }\n if (flags & (ScopeFlag.VAR | ScopeFlag.CLASS_BASE)) {\n // function body, module body, class property initializers\n return false;\n }\n }\n }\n get inNonArrowFunction() {\n return (this.currentThisScopeFlags() & ScopeFlag.FUNCTION_BASE) > 0;\n }\n get inBareCaseStatement() {\n return (this.currentScope().flags & ScopeFlag.SWITCH) > 0;\n }\n get treatFunctionsAsVar() {\n return this.treatFunctionsAsVarInScope(this.currentScope());\n }\n\n createScope(flags: ScopeFlag): Scope {\n return new Scope(flags);\n }\n\n enter(flags: ScopeFlag) {\n /*:: +createScope: (flags:ScopeFlag) => IScope; */\n // @ts-expect-error This method will be overwritten by subclasses\n this.scopeStack.push(this.createScope(flags));\n }\n\n exit(): ScopeFlag {\n const scope = this.scopeStack.pop();\n return scope.flags;\n }\n\n // The spec says:\n // > At the top level of a function, or script, function declarations are\n // > treated like var declarations rather than like lexical declarations.\n treatFunctionsAsVarInScope(scope: IScope): boolean {\n return !!(\n scope.flags & (ScopeFlag.FUNCTION_BASE | ScopeFlag.STATIC_BLOCK) ||\n (!this.parser.inModule && scope.flags & ScopeFlag.PROGRAM)\n );\n }\n\n declareName(name: string, bindingType: BindingFlag, loc: Position) {\n let scope = this.currentScope();\n if (\n bindingType & BindingFlag.SCOPE_LEXICAL ||\n bindingType & BindingFlag.SCOPE_FUNCTION\n ) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n\n let type = scope.names.get(name) || 0;\n\n if (bindingType & BindingFlag.SCOPE_FUNCTION) {\n type = type | NameType.Function;\n } else {\n if (!scope.firstLexicalName) {\n scope.firstLexicalName = name;\n }\n type = type | NameType.Lexical;\n }\n\n scope.names.set(name, type);\n\n if (bindingType & BindingFlag.SCOPE_LEXICAL) {\n this.maybeExportDefined(scope, name);\n }\n } else if (bindingType & BindingFlag.SCOPE_VAR) {\n for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n scope = this.scopeStack[i];\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n scope.names.set(name, (scope.names.get(name) || 0) | NameType.Var);\n this.maybeExportDefined(scope, name);\n\n if (scope.flags & ScopeFlag.VAR) break;\n }\n }\n if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n maybeExportDefined(scope: IScope, name: string) {\n if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n checkRedeclarationInScope(\n scope: IScope,\n name: string,\n bindingType: BindingFlag,\n loc: Position,\n ) {\n if (this.isRedeclaredInScope(scope, name, bindingType)) {\n this.parser.raise(Errors.VarRedeclaration, loc, {\n identifierName: name,\n });\n }\n }\n\n isRedeclaredInScope(\n scope: IScope,\n name: string,\n bindingType: BindingFlag,\n ): boolean {\n if (!(bindingType & BindingFlag.KIND_VALUE)) return false;\n\n if (bindingType & BindingFlag.SCOPE_LEXICAL) {\n return scope.names.has(name);\n }\n\n const type = scope.names.get(name);\n\n if (bindingType & BindingFlag.SCOPE_FUNCTION) {\n return (\n (type & NameType.Lexical) > 0 ||\n (!this.treatFunctionsAsVarInScope(scope) && (type & NameType.Var) > 0)\n );\n }\n\n return (\n ((type & NameType.Lexical) > 0 &&\n // Annex B.3.4\n // https://tc39.es/ecma262/#sec-variablestatements-in-catch-blocks\n !(\n scope.flags & ScopeFlag.SIMPLE_CATCH &&\n scope.firstLexicalName === name\n )) ||\n (!this.treatFunctionsAsVarInScope(scope) &&\n (type & NameType.Function) > 0)\n );\n }\n\n checkLocalExport(id: N.Identifier) {\n const { name } = id;\n const topLevelScope = this.scopeStack[0];\n if (!topLevelScope.names.has(name)) {\n this.undefinedExports.set(name, id.loc.start);\n }\n }\n\n currentScope(): IScope {\n return this.scopeStack[this.scopeStack.length - 1];\n }\n\n currentVarScopeFlags(): ScopeFlag {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const { flags } = this.scopeStack[i];\n if (flags & ScopeFlag.VAR) {\n return flags;\n }\n }\n }\n\n // Could be useful for `arguments`, `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\n currentThisScopeFlags(): ScopeFlag {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const { flags } = this.scopeStack[i];\n if (\n flags & (ScopeFlag.VAR | ScopeFlag.CLASS_BASE) &&\n !(flags & ScopeFlag.ARROW)\n ) {\n return flags;\n }\n }\n }\n}\n","import type { Position } from \"../../util/location.ts\";\nimport ScopeHandler, { NameType, Scope } from \"../../util/scope.ts\";\nimport { BindingFlag, type ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type * as N from \"../../types.ts\";\n\n// Reference implementation: https://github.com/facebook/flow/blob/23aeb2a2ef6eb4241ce178fde5d8f17c5f747fb5/src/typing/env.ml#L536-L584\nclass FlowScope extends Scope {\n // declare function foo(): type;\n declareFunctions: Set = new Set();\n}\n\nexport default class FlowScopeHandler extends ScopeHandler {\n createScope(flags: ScopeFlag): FlowScope {\n return new FlowScope(flags);\n }\n\n declareName(name: string, bindingType: BindingFlag, loc: Position) {\n const scope = this.currentScope();\n if (bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n scope.declareFunctions.add(name);\n return;\n }\n\n super.declareName(name, bindingType, loc);\n }\n\n isRedeclaredInScope(\n scope: FlowScope,\n name: string,\n bindingType: BindingFlag,\n ): boolean {\n if (super.isRedeclaredInScope(scope, name, bindingType)) return true;\n\n if (\n bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN &&\n !scope.declareFunctions.has(name)\n ) {\n const type = scope.names.get(name);\n return (type & NameType.Function) > 0 || (type & NameType.Lexical) > 0;\n }\n\n return false;\n }\n\n checkLocalExport(id: N.Identifier) {\n if (!this.scopeStack[0].declareFunctions.has(id.name)) {\n super.checkLocalExport(id);\n }\n }\n}\n","/*:: declare var invariant; */\n\nimport type Parser from \"../../parser/index.ts\";\nimport {\n tokenIsIdentifier,\n tokenIsKeyword,\n tokenIsKeywordOrIdentifier,\n tokenIsLiteralPropertyName,\n tokenLabelName,\n tt,\n type TokenType,\n tokenIsFlowInterfaceOrTypeOrOpaque,\n} from \"../../tokenizer/types.ts\";\nimport type * as N from \"../../types.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport * as charCodes from \"charcodes\";\nimport { isIteratorStart } from \"../../util/identifier.ts\";\nimport FlowScopeHandler from \"./scope.ts\";\nimport { BindingFlag, ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport type { ParseStatementFlag } from \"../../parser/statement.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport type { Undone } from \"../../parser/node.ts\";\nimport type { ClassWithMixin, IJSXParserMixin } from \"../jsx/index.ts\";\n\nconst reservedTypes = new Set([\n \"_\",\n \"any\",\n \"bool\",\n \"boolean\",\n \"empty\",\n \"extends\",\n \"false\",\n \"interface\",\n \"mixed\",\n \"null\",\n \"number\",\n \"static\",\n \"string\",\n \"true\",\n \"typeof\",\n \"void\",\n]);\n\n/* eslint sort-keys: \"error\" */\n// The Errors key follows https://github.com/facebook/flow/blob/master/src/parser/parse_error.ml unless it does not exist\nconst FlowErrors = ParseErrorEnum`flow`({\n AmbiguousConditionalArrow:\n \"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.\",\n AmbiguousDeclareModuleKind:\n \"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.\",\n // TODO: When we get proper string enums in typescript make this ReservedType.\n // Not really worth it to do the whole $Values dance with reservedTypes set.\n AssignReservedType: ({ reservedType }: { reservedType: string }) =>\n `Cannot overwrite reserved type ${reservedType}.`,\n DeclareClassElement:\n \"The `declare` modifier can only appear on class fields.\",\n DeclareClassFieldInitializer:\n \"Initializers are not allowed in fields with the `declare` modifier.\",\n DuplicateDeclareModuleExports:\n \"Duplicate `declare module.exports` statement.\",\n EnumBooleanMemberNotInitialized: ({\n memberName,\n enumName,\n }: {\n memberName: string;\n enumName: string;\n }) =>\n `Boolean enum members need to be initialized. Use either \\`${memberName} = true,\\` or \\`${memberName} = false,\\` in enum \\`${enumName}\\`.`,\n EnumDuplicateMemberName: ({\n memberName,\n enumName,\n }: {\n memberName: string;\n enumName: string;\n }) =>\n `Enum member names need to be unique, but the name \\`${memberName}\\` has already been used before in enum \\`${enumName}\\`.`,\n EnumInconsistentMemberValues: ({ enumName }: { enumName: string }) =>\n `Enum \\`${enumName}\\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`,\n EnumInvalidExplicitType: ({\n invalidEnumType,\n enumName,\n }: {\n invalidEnumType: string;\n enumName: string;\n }) =>\n `Enum type \\`${invalidEnumType}\\` is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n EnumInvalidExplicitTypeUnknownSupplied: ({\n enumName,\n }: {\n enumName: string;\n }) =>\n `Supplied enum type is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n\n // TODO: When moving to typescript, we should either have each of the\n // following errors only accept the specific strings they want:\n //\n // ...PrimaryType: explicitType: \"string\" | \"number\" | \"boolean\"\n // ...SymbolType: explicitType: \"symbol\"\n // ...UnknownType: explicitType: null\n //\n // Or, alternatively, merge these three errors together into one\n // `EnumInvalidMemberInitializer` error that can accept `EnumExplicitType`\n // without alteration, and then just have its message change based on the\n // explicitType.\n EnumInvalidMemberInitializerPrimaryType: ({\n enumName,\n memberName,\n explicitType,\n }: {\n enumName: string;\n memberName: string;\n explicitType: EnumExplicitType;\n }) =>\n `Enum \\`${enumName}\\` has type \\`${explicitType}\\`, so the initializer of \\`${memberName}\\` needs to be a ${explicitType} literal.`,\n EnumInvalidMemberInitializerSymbolType: ({\n enumName,\n memberName,\n }: {\n enumName: string;\n memberName: string;\n explicitType: EnumExplicitType;\n }) =>\n `Symbol enum members cannot be initialized. Use \\`${memberName},\\` in enum \\`${enumName}\\`.`,\n EnumInvalidMemberInitializerUnknownType: ({\n enumName,\n memberName,\n }: {\n enumName: string;\n memberName: string;\n explicitType: EnumExplicitType;\n }) =>\n `The enum member initializer for \\`${memberName}\\` needs to be a literal (either a boolean, number, or string) in enum \\`${enumName}\\`.`,\n EnumInvalidMemberName: ({\n enumName,\n memberName,\n suggestion,\n }: {\n enumName: string;\n memberName: string;\n suggestion: string;\n }) =>\n `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \\`${memberName}\\`, consider using \\`${suggestion}\\`, in enum \\`${enumName}\\`.`,\n EnumNumberMemberNotInitialized: ({\n enumName,\n memberName,\n }: {\n enumName: string;\n memberName: string;\n }) =>\n `Number enum members need to be initialized, e.g. \\`${memberName} = 1\\` in enum \\`${enumName}\\`.`,\n EnumStringMemberInconsistentlyInitialized: ({\n enumName,\n }: {\n enumName: string;\n }) =>\n `String enum members need to consistently either all use initializers, or use no initializers, in enum \\`${enumName}\\`.`,\n GetterMayNotHaveThisParam: \"A getter cannot have a `this` parameter.\",\n ImportReflectionHasImportType:\n \"An `import module` declaration can not use `type` or `typeof` keyword.\",\n ImportTypeShorthandOnlyInPureImport:\n \"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.\",\n InexactInsideExact:\n \"Explicit inexact syntax cannot appear inside an explicit exact object type.\",\n InexactInsideNonObject:\n \"Explicit inexact syntax cannot appear in class or interface definitions.\",\n InexactVariance: \"Explicit inexact syntax cannot have variance.\",\n InvalidNonTypeImportInDeclareModule:\n \"Imports within a `declare module` body must always be `import type` or `import typeof`.\",\n MissingTypeParamDefault:\n \"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.\",\n NestedDeclareModule:\n \"`declare module` cannot be used inside another `declare module`.\",\n NestedFlowComment: \"Cannot have a flow comment inside another flow comment.\",\n PatternIsOptional: {\n message:\n \"A binding pattern parameter cannot be optional in an implementation signature.\",\n // For consistency in TypeScript and Flow error codes\n ...(!process.env.BABEL_8_BREAKING\n ? { reasonCode: \"OptionalBindingPattern\" }\n : {}),\n },\n SetterMayNotHaveThisParam: \"A setter cannot have a `this` parameter.\",\n SpreadVariance: \"Spread properties cannot have variance.\",\n ThisParamAnnotationRequired:\n \"A type annotation is required for the `this` parameter.\",\n ThisParamBannedInConstructor:\n \"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.\",\n ThisParamMayNotBeOptional: \"The `this` parameter cannot be optional.\",\n ThisParamMustBeFirst:\n \"The `this` parameter must be the first function parameter.\",\n ThisParamNoDefault: \"The `this` parameter may not have a default value.\",\n TypeBeforeInitializer:\n \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n TypeCastInPattern:\n \"The type cast expression is expected to be wrapped with parenthesis.\",\n UnexpectedExplicitInexactInObject:\n \"Explicit inexact syntax must appear at the end of an inexact object.\",\n UnexpectedReservedType: ({ reservedType }: { reservedType: string }) =>\n `Unexpected reserved type ${reservedType}.`,\n UnexpectedReservedUnderscore:\n \"`_` is only allowed as a type argument to call or new.\",\n UnexpectedSpaceBetweenModuloChecks:\n \"Spaces between `%` and `checks` are not allowed here.\",\n UnexpectedSpreadType:\n \"Spread operator cannot appear in class or interface definitions.\",\n UnexpectedSubtractionOperand:\n 'Unexpected token, expected \"number\" or \"bigint\".',\n UnexpectedTokenAfterTypeParameter:\n \"Expected an arrow function after this type parameter declaration.\",\n UnexpectedTypeParameterBeforeAsyncArrowFunction:\n \"Type parameters must come after the async keyword, e.g. instead of ` async () => {}`, use `async () => {}`.\",\n UnsupportedDeclareExportKind: ({\n unsupportedExportKind,\n suggestion,\n }: {\n unsupportedExportKind: string;\n suggestion: string;\n }) =>\n `\\`declare export ${unsupportedExportKind}\\` is not supported. Use \\`${suggestion}\\` instead.`,\n UnsupportedStatementInDeclareModule:\n \"Only declares and type imports are allowed inside declare module.\",\n UnterminatedFlowComment: \"Unterminated flow-comment.\",\n});\n/* eslint-disable sort-keys */\n\nfunction isEsModuleType(bodyElement: N.Node): boolean {\n return (\n bodyElement.type === \"DeclareExportAllDeclaration\" ||\n (bodyElement.type === \"DeclareExportDeclaration\" &&\n (!bodyElement.declaration ||\n (bodyElement.declaration.type !== \"TypeAlias\" &&\n bodyElement.declaration.type !== \"InterfaceDeclaration\")))\n );\n}\n\nfunction hasTypeImportKind(\n node: Undone,\n): boolean {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n}\n\nconst exportSuggestions = {\n const: \"declare export var\",\n let: \"declare export var\",\n type: \"export type\",\n interface: \"export interface\",\n};\n\n// Like Array#filter, but returns a tuple [ acceptedElements, discardedElements ]\nfunction partition(\n list: T[],\n test: (c: T, b: number, a: T[]) => boolean | undefined | null,\n): [T[], T[]] {\n const list1: T[] = [];\n const list2: T[] = [];\n for (let i = 0; i < list.length; i++) {\n (test(list[i], i, list) ? list1 : list2).push(list[i]);\n }\n return [list1, list2];\n}\n\nconst FLOW_PRAGMA_REGEX = /\\*?\\s*@((?:no)?flow)\\b/;\n\n// Flow enums types\ntype EnumExplicitType = null | \"boolean\" | \"number\" | \"string\" | \"symbol\";\n\ntype EnumContext = {\n enumName: string;\n explicitType: EnumExplicitType;\n memberName: string;\n};\n\ntype EnumMemberInit =\n | {\n type: \"number\";\n loc: Position;\n value: N.Node;\n }\n | {\n type: \"string\";\n loc: Position;\n value: N.Node;\n }\n | {\n type: \"boolean\";\n loc: Position;\n value: N.Node;\n }\n | {\n type: \"invalid\";\n loc: Position;\n }\n | {\n type: \"none\";\n loc: Position;\n };\n\nexport default (superClass: ClassWithMixin) =>\n class FlowParserMixin extends superClass implements Parser {\n // The value of the @flow/@noflow pragma. Initially undefined, transitions\n // to \"@flow\" or \"@noflow\" if we see a pragma. Transitions to null if we are\n // past the initial comment.\n flowPragma: void | null | \"flow\" | \"noflow\" = undefined;\n\n getScopeHandler(): new (...args: any) => FlowScopeHandler {\n return FlowScopeHandler;\n }\n\n shouldParseTypes(): boolean {\n return this.getPluginOption(\"flow\", \"all\") || this.flowPragma === \"flow\";\n }\n\n finishToken(type: TokenType, val: any): void {\n if (\n type !== tt.string &&\n type !== tt.semi &&\n type !== tt.interpreterDirective\n ) {\n if (this.flowPragma === undefined) {\n this.flowPragma = null;\n }\n }\n super.finishToken(type, val);\n }\n\n addComment(comment: N.Comment): void {\n if (this.flowPragma === undefined) {\n // Try to parse a flow pragma.\n const matches = FLOW_PRAGMA_REGEX.exec(comment.value);\n if (!matches) {\n // do nothing\n } else if (matches[1] === \"flow\") {\n this.flowPragma = \"flow\";\n } else if (matches[1] === \"noflow\") {\n this.flowPragma = \"noflow\";\n } else {\n throw new Error(\"Unexpected flow pragma\");\n }\n }\n super.addComment(comment);\n }\n\n flowParseTypeInitialiser(tok?: TokenType): N.FlowType {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(tok || tt.colon);\n\n const type = this.flowParseType();\n this.state.inType = oldInType;\n return type;\n }\n\n flowParsePredicate(): N.FlowPredicate {\n const node = this.startNode();\n const moduloLoc = this.state.startLoc;\n this.next(); // eat `%`\n this.expectContextual(tt._checks);\n // Force '%' and 'checks' to be adjacent\n if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) {\n this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc);\n }\n if (this.eat(tt.parenL)) {\n node.value = super.parseExpression();\n this.expect(tt.parenR);\n return this.finishNode(node, \"DeclaredPredicate\");\n } else {\n return this.finishNode(node, \"InferredPredicate\");\n }\n }\n\n flowParseTypeAndPredicateInitialiser(): [\n N.FlowType | undefined | null,\n N.FlowPredicate | undefined | null,\n ] {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(tt.colon);\n let type = null;\n let predicate = null;\n if (this.match(tt.modulo)) {\n this.state.inType = oldInType;\n predicate = this.flowParsePredicate();\n } else {\n type = this.flowParseType();\n this.state.inType = oldInType;\n if (this.match(tt.modulo)) {\n predicate = this.flowParsePredicate();\n }\n }\n return [type, predicate];\n }\n\n flowParseDeclareClass(\n node: Undone,\n ): N.FlowDeclareClass {\n this.next();\n this.flowParseInterfaceish(node, /*isClass*/ true);\n return this.finishNode(node, \"DeclareClass\");\n }\n\n flowParseDeclareFunction(\n node: Undone,\n ): N.FlowDeclareFunction {\n this.next();\n\n const id = (node.id = this.parseIdentifier());\n\n const typeNode = this.startNode();\n const typeContainer = this.startNode();\n\n if (this.match(tt.lt)) {\n typeNode.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n typeNode.typeParameters = null;\n }\n\n this.expect(tt.parenL);\n const tmp = this.flowParseFunctionTypeParams();\n typeNode.params = tmp.params;\n typeNode.rest = tmp.rest;\n typeNode.this = tmp._this;\n this.expect(tt.parenR);\n\n [typeNode.returnType, node.predicate] =\n this.flowParseTypeAndPredicateInitialiser();\n\n typeContainer.typeAnnotation = this.finishNode(\n typeNode,\n \"FunctionTypeAnnotation\",\n );\n\n id.typeAnnotation = this.finishNode(typeContainer, \"TypeAnnotation\");\n\n this.resetEndLocation(id);\n this.semicolon();\n\n this.scope.declareName(\n node.id.name,\n BindingFlag.TYPE_FLOW_DECLARE_FN,\n node.id.loc.start,\n );\n\n return this.finishNode(node, \"DeclareFunction\");\n }\n\n flowParseDeclare(\n node: Undone,\n insideModule?: boolean,\n ): N.FlowDeclare {\n if (this.match(tt._class)) {\n return this.flowParseDeclareClass(node);\n } else if (this.match(tt._function)) {\n return this.flowParseDeclareFunction(node);\n } else if (this.match(tt._var)) {\n return this.flowParseDeclareVariable(node);\n } else if (this.eatContextual(tt._module)) {\n if (this.match(tt.dot)) {\n return this.flowParseDeclareModuleExports(node);\n } else {\n if (insideModule) {\n this.raise(\n FlowErrors.NestedDeclareModule,\n this.state.lastTokStartLoc,\n );\n }\n return this.flowParseDeclareModule(node);\n }\n } else if (this.isContextual(tt._type)) {\n return this.flowParseDeclareTypeAlias(node);\n } else if (this.isContextual(tt._opaque)) {\n return this.flowParseDeclareOpaqueType(node);\n } else if (this.isContextual(tt._interface)) {\n return this.flowParseDeclareInterface(node);\n } else if (this.match(tt._export)) {\n return this.flowParseDeclareExportDeclaration(node, insideModule);\n } else {\n this.unexpected();\n }\n }\n\n flowParseDeclareVariable(\n node: Undone,\n ): N.FlowDeclareVariable {\n this.next();\n node.id = this.flowParseTypeAnnotatableIdentifier(\n /*allowPrimitiveOverride*/ true,\n );\n this.scope.declareName(\n node.id.name,\n BindingFlag.TYPE_VAR,\n node.id.loc.start,\n );\n this.semicolon();\n return this.finishNode(node, \"DeclareVariable\");\n }\n\n flowParseDeclareModule(\n node: Undone,\n ): N.FlowDeclareModule {\n this.scope.enter(ScopeFlag.OTHER);\n\n if (this.match(tt.string)) {\n node.id = super.parseExprAtom();\n } else {\n node.id = this.parseIdentifier();\n }\n\n const bodyNode = (node.body = this.startNode());\n // @ts-expect-error refine typings\n const body = (bodyNode.body = []);\n this.expect(tt.braceL);\n while (!this.match(tt.braceR)) {\n let bodyNode = this.startNode();\n\n if (this.match(tt._import)) {\n this.next();\n if (!this.isContextual(tt._type) && !this.match(tt._typeof)) {\n this.raise(\n FlowErrors.InvalidNonTypeImportInDeclareModule,\n this.state.lastTokStartLoc,\n );\n }\n super.parseImport(bodyNode);\n } else {\n this.expectContextual(\n tt._declare,\n FlowErrors.UnsupportedStatementInDeclareModule,\n );\n // @ts-expect-error refine typings\n bodyNode = this.flowParseDeclare(bodyNode, true);\n }\n\n body.push(bodyNode);\n }\n\n this.scope.exit();\n\n this.expect(tt.braceR);\n\n this.finishNode(bodyNode, \"BlockStatement\");\n\n let kind: \"CommonJS\" | \"ES\" | null = null;\n let hasModuleExport = false;\n body.forEach(bodyElement => {\n if (isEsModuleType(bodyElement)) {\n if (kind === \"CommonJS\") {\n this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n }\n kind = \"ES\";\n } else if (bodyElement.type === \"DeclareModuleExports\") {\n if (hasModuleExport) {\n this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement);\n }\n if (kind === \"ES\") {\n this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n }\n kind = \"CommonJS\";\n hasModuleExport = true;\n }\n });\n\n node.kind = kind || \"CommonJS\";\n return this.finishNode(node, \"DeclareModule\");\n }\n\n flowParseDeclareExportDeclaration(\n node: Undone,\n insideModule?: boolean | null,\n ): N.FlowDeclareExportDeclaration {\n this.expect(tt._export);\n\n if (this.eat(tt._default)) {\n if (this.match(tt._function) || this.match(tt._class)) {\n // declare export default class ...\n // declare export default function ...\n node.declaration = this.flowParseDeclare(this.startNode());\n } else {\n // declare export default [type];\n node.declaration = this.flowParseType();\n this.semicolon();\n }\n node.default = true;\n\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else {\n if (\n this.match(tt._const) ||\n this.isLet() ||\n ((this.isContextual(tt._type) || this.isContextual(tt._interface)) &&\n !insideModule)\n ) {\n const label = this.state.value as\n | \"const\"\n | \"let\"\n | \"type\"\n | \"interface\";\n throw this.raise(\n FlowErrors.UnsupportedDeclareExportKind,\n this.state.startLoc,\n {\n unsupportedExportKind: label,\n suggestion: exportSuggestions[label],\n },\n );\n }\n\n if (\n this.match(tt._var) || // declare export var ...\n this.match(tt._function) || // declare export function ...\n this.match(tt._class) || // declare export class ...\n this.isContextual(tt._opaque) // declare export opaque ..\n ) {\n node.declaration = this.flowParseDeclare(this.startNode());\n node.default = false;\n\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else if (\n this.match(tt.star) || // declare export * from ''\n this.match(tt.braceL) || // declare export {} ...\n this.isContextual(tt._interface) || // declare export interface ...\n this.isContextual(tt._type) || // declare export type ...\n this.isContextual(tt._opaque) // declare export opaque type ...\n ) {\n node = this.parseExport(\n node as Undone,\n /* decorators */ null,\n );\n if (node.type === \"ExportNamedDeclaration\") {\n node.default = false;\n delete node.exportKind;\n return this.castNodeTo(\n node as N.ExportNamedDeclaration,\n \"DeclareExportDeclaration\",\n );\n } else {\n return this.castNodeTo(\n node as N.ExportAllDeclaration,\n \"DeclareExportAllDeclaration\",\n );\n }\n }\n }\n\n this.unexpected();\n }\n\n flowParseDeclareModuleExports(\n node: Undone,\n ): N.FlowDeclareModuleExports {\n this.next();\n this.expectContextual(tt._exports);\n node.typeAnnotation = this.flowParseTypeAnnotation();\n this.semicolon();\n\n return this.finishNode(node, \"DeclareModuleExports\");\n }\n\n flowParseDeclareTypeAlias(\n node: Undone,\n ): N.FlowDeclareTypeAlias {\n this.next();\n const finished = this.flowParseTypeAlias(\n node,\n ) as unknown as N.FlowDeclareTypeAlias;\n // Don't do finishNode as we don't want to process comments twice\n this.castNodeTo(finished, \"DeclareTypeAlias\");\n return finished;\n }\n\n flowParseDeclareOpaqueType(\n node: Undone,\n ): N.FlowDeclareOpaqueType {\n this.next();\n const finished = this.flowParseOpaqueType(\n node,\n true,\n ) as unknown as N.FlowDeclareOpaqueType;\n // Don't do finishNode as we don't want to process comments twice\n this.castNodeTo(finished, \"DeclareOpaqueType\");\n return finished;\n }\n\n flowParseDeclareInterface(\n node: Undone,\n ): N.FlowDeclareInterface {\n this.next();\n this.flowParseInterfaceish(node, /* isClass */ false);\n return this.finishNode(node, \"DeclareInterface\");\n }\n\n // Interfaces\n\n flowParseInterfaceish(node: Undone, isClass: boolean): void {\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ !isClass,\n /* declaration */ true,\n );\n\n this.scope.declareName(\n node.id.name,\n isClass ? BindingFlag.TYPE_FUNCTION : BindingFlag.TYPE_LEXICAL,\n node.id.loc.start,\n );\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.extends = [];\n\n if (this.eat(tt._extends)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (!isClass && this.eat(tt.comma));\n }\n\n if (isClass) {\n node.implements = [];\n node.mixins = [];\n\n if (this.eatContextual(tt._mixins)) {\n do {\n node.mixins.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n\n if (this.eatContextual(tt._implements)) {\n do {\n node.implements.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n }\n\n node.body = this.flowParseObjectType({\n allowStatic: isClass,\n allowExact: false,\n allowSpread: false,\n allowProto: isClass,\n allowInexact: false,\n });\n }\n\n flowParseInterfaceExtends(): N.FlowInterfaceExtends {\n const node = this.startNode();\n\n node.id = this.flowParseQualifiedTypeIdentifier();\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n\n return this.finishNode(node, \"InterfaceExtends\");\n }\n\n flowParseInterface(node: Undone): N.FlowInterface {\n this.flowParseInterfaceish(node, /* isClass */ false);\n return this.finishNode(node, \"InterfaceDeclaration\");\n }\n\n checkNotUnderscore(word: string) {\n if (word === \"_\") {\n this.raise(\n FlowErrors.UnexpectedReservedUnderscore,\n this.state.startLoc,\n );\n }\n }\n\n checkReservedType(word: string, startLoc: Position, declaration?: boolean) {\n if (!reservedTypes.has(word)) return;\n\n this.raise(\n declaration\n ? FlowErrors.AssignReservedType\n : FlowErrors.UnexpectedReservedType,\n startLoc,\n {\n reservedType: word,\n },\n );\n }\n\n flowParseRestrictedIdentifier(\n liberal?: boolean,\n declaration?: boolean,\n ): N.Identifier {\n this.checkReservedType(\n this.state.value,\n this.state.startLoc,\n declaration,\n );\n return this.parseIdentifier(liberal);\n }\n\n // Type aliases\n\n flowParseTypeAlias(node: Undone): N.FlowTypeAlias {\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ false,\n /* declaration */ true,\n );\n this.scope.declareName(\n node.id.name,\n BindingFlag.TYPE_LEXICAL,\n node.id.loc.start,\n );\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.right = this.flowParseTypeInitialiser(tt.eq);\n this.semicolon();\n\n return this.finishNode(node, \"TypeAlias\");\n }\n\n flowParseOpaqueType(\n node: Undone,\n declare: boolean,\n ): N.FlowOpaqueType {\n this.expectContextual(tt._type);\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ true,\n /* declaration */ true,\n );\n this.scope.declareName(\n node.id.name,\n BindingFlag.TYPE_LEXICAL,\n node.id.loc.start,\n );\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n // Parse the supertype\n node.supertype = null;\n if (this.match(tt.colon)) {\n node.supertype = this.flowParseTypeInitialiser(tt.colon);\n }\n\n node.impltype = null;\n if (!declare) {\n node.impltype = this.flowParseTypeInitialiser(tt.eq);\n }\n this.semicolon();\n\n return this.finishNode(node, \"OpaqueType\");\n }\n\n // Type annotations\n\n flowParseTypeParameter(requireDefault: boolean = false): N.TypeParameter {\n const nodeStartLoc = this.state.startLoc;\n\n const node = this.startNode();\n\n const variance = this.flowParseVariance();\n\n const ident = this.flowParseTypeAnnotatableIdentifier();\n node.name = ident.name;\n // @ts-expect-error migrate to Babel types\n node.variance = variance;\n // @ts-expect-error migrate to Babel types\n node.bound = ident.typeAnnotation;\n\n if (this.match(tt.eq)) {\n this.eat(tt.eq);\n // @ts-expect-error migrate to Babel types\n node.default = this.flowParseType();\n } else {\n if (requireDefault) {\n this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc);\n }\n }\n\n return this.finishNode(node, \"TypeParameter\");\n }\n\n flowParseTypeParameterDeclaration(): N.TypeParameterDeclaration {\n const oldInType = this.state.inType;\n const node = this.startNode();\n node.params = [];\n\n this.state.inType = true;\n\n // istanbul ignore else: this condition is already checked at all call sites\n if (this.match(tt.lt) || this.match(tt.jsxTagStart)) {\n this.next();\n } else {\n this.unexpected();\n }\n\n let defaultRequired = false;\n\n do {\n const typeParameter = this.flowParseTypeParameter(defaultRequired);\n\n node.params.push(typeParameter);\n\n if (typeParameter.default) {\n defaultRequired = true;\n }\n\n if (!this.match(tt.gt)) {\n this.expect(tt.comma);\n }\n } while (!this.match(tt.gt));\n this.expect(tt.gt);\n\n this.state.inType = oldInType;\n\n return this.finishNode(node, \"TypeParameterDeclaration\");\n }\n\n // Parse in top level normal context if we are in a JSX context\n flowInTopLevelContext(cb: () => T): T {\n if (this.curContext() !== tc.brace) {\n const oldContext = this.state.context;\n this.state.context = [oldContext[0]];\n try {\n return cb();\n } finally {\n this.state.context = oldContext;\n }\n } else {\n return cb();\n }\n }\n\n // Used when parsing type arguments from ES or JSX productions, where the first token\n // has been created without state.inType. Thus we need to re-scan the lt token.\n flowParseTypeParameterInstantiationInExpression():\n | N.TypeParameterInstantiation\n | undefined {\n if (this.reScan_lt() !== tt.lt) return;\n return this.flowParseTypeParameterInstantiation();\n }\n\n flowParseTypeParameterInstantiation(): N.TypeParameterInstantiation {\n const node = this.startNode();\n const oldInType = this.state.inType;\n\n this.state.inType = true;\n node.params = [];\n this.flowInTopLevelContext(() => {\n this.expect(tt.lt);\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = false;\n while (!this.match(tt.gt)) {\n node.params.push(this.flowParseType());\n if (!this.match(tt.gt)) {\n this.expect(tt.comma);\n }\n }\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n });\n\n this.state.inType = oldInType;\n if (!this.state.inType && this.curContext() === tc.brace) {\n // rescan `>` when we are no longer in type context and JSX parsing context\n // since it was tokenized when `inType` is `true`.\n this.reScan_lt_gt();\n }\n this.expect(tt.gt);\n\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n\n flowParseTypeParameterInstantiationCallOrNew(): N.TypeParameterInstantiation {\n if (this.reScan_lt() !== tt.lt) return;\n const node = this.startNode();\n const oldInType = this.state.inType;\n node.params = [];\n\n this.state.inType = true;\n\n this.expect(tt.lt);\n while (!this.match(tt.gt)) {\n node.params.push(this.flowParseTypeOrImplicitInstantiation());\n if (!this.match(tt.gt)) {\n this.expect(tt.comma);\n }\n }\n this.expect(tt.gt);\n\n this.state.inType = oldInType;\n\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n\n flowParseInterfaceType(): N.FlowInterfaceType {\n const node = this.startNode();\n this.expectContextual(tt._interface);\n\n node.extends = [];\n if (this.eat(tt._extends)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n\n node.body = this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: false,\n allowProto: false,\n allowInexact: false,\n });\n\n return this.finishNode(node, \"InterfaceTypeAnnotation\");\n }\n\n flowParseObjectPropertyKey(): N.Expression {\n return this.match(tt.num) || this.match(tt.string)\n ? super.parseExprAtom()\n : this.parseIdentifier(true);\n }\n\n flowParseObjectTypeIndexer(\n node: Undone,\n isStatic: boolean,\n variance?: N.FlowVariance | null,\n ): N.FlowObjectTypeIndexer {\n node.static = isStatic;\n\n // Note: bracketL has already been consumed\n if (this.lookahead().type === tt.colon) {\n node.id = this.flowParseObjectPropertyKey();\n node.key = this.flowParseTypeInitialiser();\n } else {\n node.id = null;\n node.key = this.flowParseType();\n }\n this.expect(tt.bracketR);\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n\n return this.finishNode(node, \"ObjectTypeIndexer\");\n }\n\n flowParseObjectTypeInternalSlot(\n node: Undone,\n isStatic: boolean,\n ): N.FlowObjectTypeInternalSlot {\n node.static = isStatic;\n // Note: both bracketL have already been consumed\n node.id = this.flowParseObjectPropertyKey();\n this.expect(tt.bracketR);\n this.expect(tt.bracketR);\n if (this.match(tt.lt) || this.match(tt.parenL)) {\n node.method = true;\n node.optional = false;\n node.value = this.flowParseObjectTypeMethodish(\n this.startNodeAt(node.loc.start),\n );\n } else {\n node.method = false;\n if (this.eat(tt.question)) {\n node.optional = true;\n }\n node.value = this.flowParseTypeInitialiser();\n }\n return this.finishNode(node, \"ObjectTypeInternalSlot\");\n }\n\n flowParseObjectTypeMethodish(\n node: Undone,\n ): N.FlowFunctionTypeAnnotation {\n node.params = [];\n node.rest = null;\n node.typeParameters = null;\n node.this = null;\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n this.expect(tt.parenL);\n if (this.match(tt._this)) {\n node.this = this.flowParseFunctionTypeParam(/* first */ true);\n // match Flow parser behavior\n node.this.name = null;\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n node.params.push(this.flowParseFunctionTypeParam(false));\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n\n if (this.eat(tt.ellipsis)) {\n node.rest = this.flowParseFunctionTypeParam(false);\n }\n this.expect(tt.parenR);\n node.returnType = this.flowParseTypeInitialiser();\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n flowParseObjectTypeCallProperty(\n node: Undone,\n isStatic: boolean,\n ): N.FlowObjectTypeCallProperty {\n const valueNode = this.startNode();\n node.static = isStatic;\n node.value = this.flowParseObjectTypeMethodish(valueNode);\n return this.finishNode(node, \"ObjectTypeCallProperty\");\n }\n\n flowParseObjectType({\n allowStatic,\n allowExact,\n allowSpread,\n allowProto,\n allowInexact,\n }: {\n allowStatic: boolean;\n allowExact: boolean;\n allowSpread: boolean;\n allowProto: boolean;\n allowInexact: boolean;\n }): N.FlowObjectTypeAnnotation {\n const oldInType = this.state.inType;\n this.state.inType = true;\n\n const nodeStart = this.startNode();\n\n nodeStart.callProperties = [];\n nodeStart.properties = [];\n nodeStart.indexers = [];\n nodeStart.internalSlots = [];\n\n let endDelim;\n let exact;\n let inexact = false;\n if (allowExact && this.match(tt.braceBarL)) {\n this.expect(tt.braceBarL);\n endDelim = tt.braceBarR;\n exact = true;\n } else {\n this.expect(tt.braceL);\n endDelim = tt.braceR;\n exact = false;\n }\n\n nodeStart.exact = exact;\n\n while (!this.match(endDelim)) {\n let isStatic = false;\n let protoStartLoc: Position | undefined | null = null;\n let inexactStartLoc: Position | undefined | null = null;\n const node = this.startNode();\n\n if (allowProto && this.isContextual(tt._proto)) {\n const lookahead = this.lookahead();\n\n if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n this.next();\n protoStartLoc = this.state.startLoc;\n allowStatic = false;\n }\n }\n\n if (allowStatic && this.isContextual(tt._static)) {\n const lookahead = this.lookahead();\n\n // static is a valid identifier name\n if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n this.next();\n isStatic = true;\n }\n }\n\n const variance = this.flowParseVariance();\n\n if (this.eat(tt.bracketL)) {\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (this.eat(tt.bracketL)) {\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n nodeStart.internalSlots.push(\n this.flowParseObjectTypeInternalSlot(node, isStatic),\n );\n } else {\n nodeStart.indexers.push(\n this.flowParseObjectTypeIndexer(node, isStatic, variance),\n );\n }\n } else if (this.match(tt.parenL) || this.match(tt.lt)) {\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n nodeStart.callProperties.push(\n this.flowParseObjectTypeCallProperty(node, isStatic),\n );\n } else {\n let kind = \"init\";\n\n if (this.isContextual(tt._get) || this.isContextual(tt._set)) {\n const lookahead = this.lookahead();\n if (tokenIsLiteralPropertyName(lookahead.type)) {\n kind = this.state.value;\n this.next();\n }\n }\n\n const propOrInexact = this.flowParseObjectTypeProperty(\n node,\n isStatic,\n protoStartLoc,\n variance,\n kind,\n allowSpread,\n allowInexact ?? !exact,\n );\n\n if (propOrInexact === null) {\n inexact = true;\n inexactStartLoc = this.state.lastTokStartLoc;\n } else {\n nodeStart.properties.push(propOrInexact);\n }\n }\n\n this.flowObjectTypeSemicolon();\n\n if (\n inexactStartLoc &&\n !this.match(tt.braceR) &&\n !this.match(tt.braceBarR)\n ) {\n this.raise(\n FlowErrors.UnexpectedExplicitInexactInObject,\n inexactStartLoc,\n );\n }\n }\n\n this.expect(endDelim);\n\n /* The inexact flag should only be added on ObjectTypeAnnotations that\n * are not the body of an interface, declare interface, or declare class.\n * Since spreads are only allowed in object types, checking that is\n * sufficient here.\n */\n if (allowSpread) {\n nodeStart.inexact = inexact;\n }\n\n const out = this.finishNode(nodeStart, \"ObjectTypeAnnotation\");\n\n this.state.inType = oldInType;\n\n return out;\n }\n\n flowParseObjectTypeProperty(\n node: Undone,\n isStatic: boolean,\n protoStartLoc: Position | undefined | null,\n variance: N.FlowVariance | undefined | null,\n kind: string,\n allowSpread: boolean,\n allowInexact: boolean,\n ): N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty | null {\n if (this.eat(tt.ellipsis)) {\n const isInexactToken =\n this.match(tt.comma) ||\n this.match(tt.semi) ||\n this.match(tt.braceR) ||\n this.match(tt.braceBarR);\n\n if (isInexactToken) {\n if (!allowSpread) {\n this.raise(\n FlowErrors.InexactInsideNonObject,\n this.state.lastTokStartLoc,\n );\n } else if (!allowInexact) {\n this.raise(\n FlowErrors.InexactInsideExact,\n this.state.lastTokStartLoc,\n );\n }\n if (variance) {\n this.raise(FlowErrors.InexactVariance, variance);\n }\n\n return null;\n }\n\n if (!allowSpread) {\n this.raise(\n FlowErrors.UnexpectedSpreadType,\n this.state.lastTokStartLoc,\n );\n }\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.raise(FlowErrors.SpreadVariance, variance);\n }\n\n node.argument = this.flowParseType();\n return this.finishNode(node, \"ObjectTypeSpreadProperty\");\n } else {\n node.key = this.flowParseObjectPropertyKey();\n node.static = isStatic;\n node.proto = protoStartLoc != null;\n node.kind = kind;\n\n let optional = false;\n if (this.match(tt.lt) || this.match(tt.parenL)) {\n // This is a method property\n node.method = true;\n\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n\n node.value = this.flowParseObjectTypeMethodish(\n this.startNodeAt(node.loc.start),\n );\n if (kind === \"get\" || kind === \"set\") {\n this.flowCheckGetterSetterParams(node);\n }\n /** Declared classes/interfaces do not allow spread */\n if (\n !allowSpread &&\n node.key.name === \"constructor\" &&\n node.value.this\n ) {\n this.raise(\n FlowErrors.ThisParamBannedInConstructor,\n node.value.this,\n );\n }\n } else {\n if (kind !== \"init\") this.unexpected();\n\n node.method = false;\n\n if (this.eat(tt.question)) {\n optional = true;\n }\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n }\n\n node.optional = optional;\n\n return this.finishNode(node, \"ObjectTypeProperty\");\n }\n }\n\n // This is similar to checkGetterSetterParams, but as\n // @babel/parser uses non estree properties we cannot reuse it here\n flowCheckGetterSetterParams(\n property: Undone<\n N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty\n >,\n ): void {\n const paramCount = property.kind === \"get\" ? 0 : 1;\n const length =\n property.value.params.length + (property.value.rest ? 1 : 0);\n\n if (property.value.this) {\n this.raise(\n property.kind === \"get\"\n ? FlowErrors.GetterMayNotHaveThisParam\n : FlowErrors.SetterMayNotHaveThisParam,\n property.value.this,\n );\n }\n\n if (length !== paramCount) {\n this.raise(\n property.kind === \"get\"\n ? Errors.BadGetterArity\n : Errors.BadSetterArity,\n property,\n );\n }\n\n if (property.kind === \"set\" && property.value.rest) {\n this.raise(Errors.BadSetterRestParameter, property);\n }\n }\n\n flowObjectTypeSemicolon(): void {\n if (\n !this.eat(tt.semi) &&\n !this.eat(tt.comma) &&\n !this.match(tt.braceR) &&\n !this.match(tt.braceBarR)\n ) {\n this.unexpected();\n }\n }\n\n flowParseQualifiedTypeIdentifier(\n startLoc?: Position,\n id?: N.Identifier,\n ): N.FlowQualifiedTypeIdentifier | N.Identifier {\n startLoc ??= this.state.startLoc;\n let node: N.Identifier | N.FlowQualifiedTypeIdentifier =\n id || this.flowParseRestrictedIdentifier(true);\n\n while (this.eat(tt.dot)) {\n const node2 = this.startNodeAt(startLoc);\n node2.qualification = node;\n node2.id = this.flowParseRestrictedIdentifier(true);\n node = this.finishNode(node2, \"QualifiedTypeIdentifier\");\n }\n\n return node;\n }\n\n flowParseGenericType(\n startLoc: Position,\n id: N.Identifier,\n ): N.FlowGenericTypeAnnotation {\n const node = this.startNodeAt(startLoc);\n\n node.typeParameters = null;\n node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id);\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n }\n\n return this.finishNode(node, \"GenericTypeAnnotation\");\n }\n\n flowParseTypeofType(): N.FlowTypeofTypeAnnotation {\n const node = this.startNode();\n this.expect(tt._typeof);\n node.argument = this.flowParsePrimaryType();\n return this.finishNode(node, \"TypeofTypeAnnotation\");\n }\n\n flowParseTupleType(): N.FlowTupleTypeAnnotation {\n const node = this.startNode();\n node.types = [];\n this.expect(tt.bracketL);\n // We allow trailing commas\n while (this.state.pos < this.length && !this.match(tt.bracketR)) {\n node.types.push(this.flowParseType());\n if (this.match(tt.bracketR)) break;\n this.expect(tt.comma);\n }\n this.expect(tt.bracketR);\n return this.finishNode(node, \"TupleTypeAnnotation\");\n }\n\n flowParseFunctionTypeParam(first: boolean): N.FlowFunctionTypeParam {\n let name = null;\n let optional = false;\n let typeAnnotation = null;\n const node = this.startNode();\n const lh = this.lookahead();\n const isThis = this.state.type === tt._this;\n\n if (lh.type === tt.colon || lh.type === tt.question) {\n if (isThis && !first) {\n this.raise(FlowErrors.ThisParamMustBeFirst, node);\n }\n name = this.parseIdentifier(isThis);\n if (this.eat(tt.question)) {\n optional = true;\n if (isThis) {\n this.raise(FlowErrors.ThisParamMayNotBeOptional, node);\n }\n }\n typeAnnotation = this.flowParseTypeInitialiser();\n } else {\n typeAnnotation = this.flowParseType();\n }\n node.name = name;\n node.optional = optional;\n node.typeAnnotation = typeAnnotation;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n\n reinterpretTypeAsFunctionTypeParam(\n type: N.FlowType,\n ): N.FlowFunctionTypeParam {\n const node = this.startNodeAt(type.loc.start);\n node.name = null;\n node.optional = false;\n node.typeAnnotation = type;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n\n flowParseFunctionTypeParams(params: N.FlowFunctionTypeParam[] = []): {\n params: N.FlowFunctionTypeParam[];\n rest: N.FlowFunctionTypeParam | undefined | null;\n _this: N.FlowFunctionTypeParam | undefined | null;\n } {\n let rest: N.FlowFunctionTypeParam | undefined | null = null;\n let _this: N.FlowFunctionTypeParam | undefined | null = null;\n if (this.match(tt._this)) {\n _this = this.flowParseFunctionTypeParam(/* first */ true);\n // match Flow parser behavior\n _this.name = null;\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n params.push(this.flowParseFunctionTypeParam(false));\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n if (this.eat(tt.ellipsis)) {\n rest = this.flowParseFunctionTypeParam(false);\n }\n return { params, rest, _this };\n }\n\n flowIdentToTypeAnnotation(\n startLoc: Position,\n node: Undone,\n id: N.Identifier,\n ): N.FlowType {\n switch (id.name) {\n case \"any\":\n return this.finishNode(node, \"AnyTypeAnnotation\");\n\n case \"bool\":\n case \"boolean\":\n return this.finishNode(node, \"BooleanTypeAnnotation\");\n\n case \"mixed\":\n return this.finishNode(node, \"MixedTypeAnnotation\");\n\n case \"empty\":\n return this.finishNode(node, \"EmptyTypeAnnotation\");\n\n case \"number\":\n return this.finishNode(node, \"NumberTypeAnnotation\");\n\n case \"string\":\n return this.finishNode(node, \"StringTypeAnnotation\");\n\n case \"symbol\":\n return this.finishNode(node, \"SymbolTypeAnnotation\");\n\n default:\n this.checkNotUnderscore(id.name);\n return this.flowParseGenericType(startLoc, id);\n }\n }\n\n // The parsing of types roughly parallels the parsing of expressions, and\n // primary types are kind of like primary expressions...they're the\n // primitives with which other types are constructed.\n flowParsePrimaryType(): N.FlowType {\n const startLoc = this.state.startLoc;\n const node = this.startNode();\n let tmp;\n let type;\n let isGroupedType = false;\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n\n switch (this.state.type) {\n case tt.braceL:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: true,\n allowProto: false,\n allowInexact: true,\n });\n\n case tt.braceBarL:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: true,\n allowSpread: true,\n allowProto: false,\n allowInexact: false,\n });\n\n case tt.bracketL:\n this.state.noAnonFunctionType = false;\n type = this.flowParseTupleType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n return type;\n\n case tt.lt: {\n const node = this.startNode();\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n this.expect(tt.parenL);\n tmp = this.flowParseFunctionTypeParams();\n node.params = tmp.params;\n node.rest = tmp.rest;\n node.this = tmp._this;\n this.expect(tt.parenR);\n\n this.expect(tt.arrow);\n\n node.returnType = this.flowParseType();\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n case tt.parenL: {\n const node = this.startNode();\n this.next();\n\n // Check to see if this is actually a grouped type\n if (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n if (tokenIsIdentifier(this.state.type) || this.match(tt._this)) {\n const token = this.lookahead().type;\n isGroupedType = token !== tt.question && token !== tt.colon;\n } else {\n isGroupedType = true;\n }\n }\n\n if (isGroupedType) {\n this.state.noAnonFunctionType = false;\n type = this.flowParseType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n // A `,` or a `) =>` means this is an anonymous function type\n if (\n this.state.noAnonFunctionType ||\n !(\n this.match(tt.comma) ||\n (this.match(tt.parenR) && this.lookahead().type === tt.arrow)\n )\n ) {\n this.expect(tt.parenR);\n return type;\n } else {\n // Eat a comma if there is one\n this.eat(tt.comma);\n }\n }\n\n if (type) {\n tmp = this.flowParseFunctionTypeParams([\n this.reinterpretTypeAsFunctionTypeParam(type),\n ]);\n } else {\n tmp = this.flowParseFunctionTypeParams();\n }\n\n node.params = tmp.params;\n node.rest = tmp.rest;\n node.this = tmp._this;\n\n this.expect(tt.parenR);\n\n this.expect(tt.arrow);\n\n node.returnType = this.flowParseType();\n\n node.typeParameters = null;\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n case tt.string:\n return this.parseLiteral(\n this.state.value,\n \"StringLiteralTypeAnnotation\",\n );\n\n case tt._true:\n case tt._false:\n node.value = this.match(tt._true);\n this.next();\n return this.finishNode(\n node as Undone,\n \"BooleanLiteralTypeAnnotation\",\n );\n\n case tt.plusMin:\n if (this.state.value === \"-\") {\n this.next();\n if (this.match(tt.num)) {\n return this.parseLiteralAtNode(\n -this.state.value,\n \"NumberLiteralTypeAnnotation\",\n node,\n );\n }\n\n if (this.match(tt.bigint)) {\n return this.parseLiteralAtNode(\n -this.state.value,\n \"BigIntLiteralTypeAnnotation\",\n node,\n );\n }\n\n throw this.raise(\n FlowErrors.UnexpectedSubtractionOperand,\n this.state.startLoc,\n );\n }\n this.unexpected();\n return;\n case tt.num:\n return this.parseLiteral(\n this.state.value,\n \"NumberLiteralTypeAnnotation\",\n );\n\n case tt.bigint:\n return this.parseLiteral(\n this.state.value,\n \"BigIntLiteralTypeAnnotation\",\n );\n\n case tt._void:\n this.next();\n return this.finishNode(node, \"VoidTypeAnnotation\");\n\n case tt._null:\n this.next();\n return this.finishNode(node, \"NullLiteralTypeAnnotation\");\n\n case tt._this:\n this.next();\n return this.finishNode(node, \"ThisTypeAnnotation\");\n\n case tt.star:\n this.next();\n return this.finishNode(node, \"ExistsTypeAnnotation\");\n\n case tt._typeof:\n return this.flowParseTypeofType();\n\n default:\n if (tokenIsKeyword(this.state.type)) {\n const label = tokenLabelName(this.state.type);\n this.next();\n return super.createIdentifier(node as Undone, label);\n } else if (tokenIsIdentifier(this.state.type)) {\n if (this.isContextual(tt._interface)) {\n return this.flowParseInterfaceType();\n }\n\n return this.flowIdentToTypeAnnotation(\n startLoc,\n node,\n this.parseIdentifier(),\n );\n }\n }\n\n this.unexpected();\n }\n\n flowParsePostfixType(): N.FlowType {\n const startLoc = this.state.startLoc;\n let type = this.flowParsePrimaryType();\n let seenOptionalIndexedAccess = false;\n while (\n (this.match(tt.bracketL) || this.match(tt.questionDot)) &&\n !this.canInsertSemicolon()\n ) {\n const node = this.startNodeAt(startLoc);\n const optional = this.eat(tt.questionDot);\n seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;\n this.expect(tt.bracketL);\n if (!optional && this.match(tt.bracketR)) {\n node.elementType = type;\n this.next(); // eat `]`\n type = this.finishNode(node, \"ArrayTypeAnnotation\");\n } else {\n node.objectType = type;\n node.indexType = this.flowParseType();\n this.expect(tt.bracketR);\n if (seenOptionalIndexedAccess) {\n node.optional = optional;\n type = this.finishNode(\n // @ts-expect-error todo(flow->ts)\n node,\n \"OptionalIndexedAccessType\",\n );\n } else {\n type = this.finishNode(\n // @ts-expect-error todo(flow->ts)\n node,\n \"IndexedAccessType\",\n );\n }\n }\n }\n return type;\n }\n\n flowParsePrefixType(): N.FlowType {\n const node = this.startNode();\n if (this.eat(tt.question)) {\n node.typeAnnotation = this.flowParsePrefixType();\n return this.finishNode(node, \"NullableTypeAnnotation\");\n } else {\n return this.flowParsePostfixType();\n }\n }\n\n flowParseAnonFunctionWithoutParens(): N.FlowType {\n const param = this.flowParsePrefixType();\n if (!this.state.noAnonFunctionType && this.eat(tt.arrow)) {\n // TODO: This should be a type error. Passing in a SourceLocation, and it expects a Position.\n const node = this.startNodeAt(\n param.loc.start,\n );\n node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];\n node.rest = null;\n node.this = null;\n node.returnType = this.flowParseType();\n node.typeParameters = null;\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n return param;\n }\n\n flowParseIntersectionType(): N.FlowType {\n const node = this.startNode();\n this.eat(tt.bitwiseAND);\n const type = this.flowParseAnonFunctionWithoutParens();\n node.types = [type];\n while (this.eat(tt.bitwiseAND)) {\n node.types.push(this.flowParseAnonFunctionWithoutParens());\n }\n return node.types.length === 1\n ? type\n : this.finishNode(node, \"IntersectionTypeAnnotation\");\n }\n\n flowParseUnionType(): N.FlowType {\n const node = this.startNode();\n this.eat(tt.bitwiseOR);\n const type = this.flowParseIntersectionType();\n node.types = [type];\n while (this.eat(tt.bitwiseOR)) {\n node.types.push(this.flowParseIntersectionType());\n }\n return node.types.length === 1\n ? type\n : this.finishNode(node, \"UnionTypeAnnotation\");\n }\n\n flowParseType(): N.FlowType {\n const oldInType = this.state.inType;\n this.state.inType = true;\n const type = this.flowParseUnionType();\n this.state.inType = oldInType;\n return type;\n }\n\n flowParseTypeOrImplicitInstantiation(): N.FlowType {\n if (this.state.type === tt.name && this.state.value === \"_\") {\n const startLoc = this.state.startLoc;\n const node = this.parseIdentifier();\n return this.flowParseGenericType(startLoc, node);\n } else {\n return this.flowParseType();\n }\n }\n\n flowParseTypeAnnotation(): N.TypeAnnotation {\n const node = this.startNode();\n node.typeAnnotation = this.flowParseTypeInitialiser();\n return this.finishNode(node, \"TypeAnnotation\");\n }\n\n flowParseTypeAnnotatableIdentifier(\n allowPrimitiveOverride?: boolean,\n ): N.Identifier {\n const ident = allowPrimitiveOverride\n ? this.parseIdentifier()\n : this.flowParseRestrictedIdentifier();\n if (this.match(tt.colon)) {\n ident.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(ident);\n }\n return ident;\n }\n\n typeCastToParameter(node: N.TypeCastExpression): N.Expression {\n (node.expression as N.Identifier).typeAnnotation = node.typeAnnotation;\n\n this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n\n return node.expression;\n }\n\n flowParseVariance(): N.FlowVariance | undefined | null {\n let variance = null;\n if (this.match(tt.plusMin)) {\n variance = this.startNode();\n if (this.state.value === \"+\") {\n variance.kind = \"plus\";\n } else {\n variance.kind = \"minus\";\n }\n this.next();\n return this.finishNode(variance, \"Variance\");\n }\n return variance;\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n parseFunctionBody(\n node: N.Function,\n allowExpressionBody?: boolean | null,\n isMethod: boolean = false,\n ): void {\n if (allowExpressionBody) {\n this.forwardNoArrowParamsConversionAt(node, () =>\n super.parseFunctionBody(node, true, isMethod),\n );\n return;\n }\n\n super.parseFunctionBody(node, false, isMethod);\n }\n\n parseFunctionBodyAndFinish<\n T extends\n | N.Function\n | N.TSDeclareMethod\n | N.TSDeclareFunction\n | N.ClassPrivateMethod,\n >(node: Undone, type: T[\"type\"], isMethod: boolean = false): T {\n if (this.match(tt.colon)) {\n const typeNode = this.startNode();\n\n [\n typeNode.typeAnnotation,\n // @ts-expect-error predicate may not exist\n node.predicate,\n ] = this.flowParseTypeAndPredicateInitialiser();\n\n node.returnType = typeNode.typeAnnotation\n ? this.finishNode(typeNode, \"TypeAnnotation\")\n : null;\n }\n\n return super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n\n // interfaces and enums\n parseStatementLike(flags: ParseStatementFlag): N.Statement {\n // strict mode handling of `interface` since it's a reserved word\n if (this.state.strict && this.isContextual(tt._interface)) {\n const lookahead = this.lookahead();\n if (tokenIsKeywordOrIdentifier(lookahead.type)) {\n const node = this.startNode();\n this.next();\n return this.flowParseInterface(node);\n }\n } else if (this.isContextual(tt._enum)) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n const stmt = super.parseStatementLike(flags);\n // We will parse a flow pragma in any comment before the first statement.\n if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {\n this.flowPragma = null;\n }\n return stmt;\n }\n\n // declares, interfaces and type aliases\n parseExpressionStatement(\n node: N.ExpressionStatement,\n expr: N.Expression,\n decorators: N.Decorator[] | null,\n ): N.ExpressionStatement {\n if (expr.type === \"Identifier\") {\n if (expr.name === \"declare\") {\n if (\n this.match(tt._class) ||\n tokenIsIdentifier(this.state.type) ||\n this.match(tt._function) ||\n this.match(tt._var) ||\n this.match(tt._export)\n ) {\n // @ts-expect-error: refine typings\n return this.flowParseDeclare(node);\n }\n } else if (tokenIsIdentifier(this.state.type)) {\n if (expr.name === \"interface\") {\n // @ts-expect-error: refine typings\n return this.flowParseInterface(node);\n } else if (expr.name === \"type\") {\n // @ts-expect-error: refine typings\n return this.flowParseTypeAlias(node);\n } else if (expr.name === \"opaque\") {\n // @ts-expect-error: refine typings\n return this.flowParseOpaqueType(node, false);\n }\n }\n }\n\n return super.parseExpressionStatement(node, expr, decorators);\n }\n\n // export type\n shouldParseExportDeclaration(): boolean {\n const { type } = this.state;\n if (type === tt._enum || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n return !this.state.containsEsc;\n }\n return super.shouldParseExportDeclaration();\n }\n\n isExportDefaultSpecifier(): boolean {\n const { type } = this.state;\n if (type === tt._enum || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n return this.state.containsEsc;\n }\n\n return super.isExportDefaultSpecifier();\n }\n\n parseExportDefaultExpression() {\n if (this.isContextual(tt._enum)) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n return super.parseExportDefaultExpression();\n }\n\n parseConditional(\n expr: N.Expression,\n\n startLoc: Position,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.Expression {\n if (!this.match(tt.question)) return expr;\n\n if (this.state.maybeInArrowParameters) {\n const nextCh = this.lookaheadCharCode();\n // These tokens cannot start an expression, so if one of them follows\n // ? then we are probably in an arrow function parameters list and we\n // don't parse the conditional expression.\n if (\n nextCh === charCodes.comma || // (a?, b) => c\n nextCh === charCodes.equalsTo || // (a? = b) => c\n nextCh === charCodes.colon || // (a?: b) => c\n nextCh === charCodes.rightParenthesis // (a?) => c\n ) {\n /*:: invariant(refExpressionErrors != null) */\n this.setOptionalParametersError(refExpressionErrors);\n return expr;\n }\n }\n\n this.expect(tt.question);\n const state = this.state.clone();\n const originalNoArrowAt = this.state.noArrowAt;\n const node = this.startNodeAt(startLoc);\n let { consequent, failed } = this.tryParseConditionalConsequent();\n let [valid, invalid] = this.getArrowLikeExpressions(consequent);\n\n if (failed || invalid.length > 0) {\n const noArrowAt = [...originalNoArrowAt];\n\n if (invalid.length > 0) {\n this.state = state;\n this.state.noArrowAt = noArrowAt;\n\n for (let i = 0; i < invalid.length; i++) {\n noArrowAt.push(invalid[i].start);\n }\n\n ({ consequent, failed } = this.tryParseConditionalConsequent());\n [valid, invalid] = this.getArrowLikeExpressions(consequent);\n }\n\n if (failed && valid.length > 1) {\n // if there are two or more possible correct ways of parsing, throw an\n // error.\n // e.g. Source: a ? (b): c => (d): e => f\n // Result 1: a ? b : (c => ((d): e => f))\n // Result 2: a ? ((b): c => d) : (e => f)\n this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc);\n }\n\n if (failed && valid.length === 1) {\n this.state = state;\n noArrowAt.push(valid[0].start);\n this.state.noArrowAt = noArrowAt;\n ({ consequent, failed } = this.tryParseConditionalConsequent());\n }\n }\n\n this.getArrowLikeExpressions(consequent, true);\n\n this.state.noArrowAt = originalNoArrowAt;\n this.expect(tt.colon);\n\n node.test = expr;\n node.consequent = consequent;\n node.alternate = this.forwardNoArrowParamsConversionAt(node, () =>\n this.parseMaybeAssign(undefined, undefined),\n );\n\n return this.finishNode(node, \"ConditionalExpression\");\n }\n\n tryParseConditionalConsequent(): {\n consequent: N.Expression;\n failed: boolean;\n } {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n\n const consequent = this.parseMaybeAssignAllowIn();\n const failed = !this.match(tt.colon);\n\n this.state.noArrowParamsConversionAt.pop();\n\n return { consequent, failed };\n }\n\n // Given an expression, walks through out its arrow functions whose body is\n // an expression and through out conditional expressions. It returns every\n // function which has been parsed with a return type but could have been\n // parenthesized expressions.\n // These functions are separated into two arrays: one containing the ones\n // whose parameters can be converted to assignable lists, one containing the\n // others.\n getArrowLikeExpressions(\n node: N.Expression,\n disallowInvalid?: boolean,\n ): [N.ArrowFunctionExpression[], N.ArrowFunctionExpression[]] {\n const stack = [node];\n const arrows: N.ArrowFunctionExpression[] = [];\n\n while (stack.length !== 0) {\n const node = stack.pop();\n if (\n node.type === \"ArrowFunctionExpression\" &&\n node.body.type !== \"BlockStatement\"\n ) {\n if (node.typeParameters || !node.returnType) {\n // This is an arrow expression without ambiguity, so check its parameters\n this.finishArrowValidation(node);\n } else {\n arrows.push(node);\n }\n stack.push(node.body);\n } else if (node.type === \"ConditionalExpression\") {\n stack.push(node.consequent);\n stack.push(node.alternate);\n }\n }\n\n if (disallowInvalid) {\n arrows.forEach(node => this.finishArrowValidation(node));\n return [arrows, []];\n }\n\n return partition(arrows, node =>\n node.params.every(param => this.isAssignable(param, true)),\n );\n }\n\n finishArrowValidation(node: N.ArrowFunctionExpression) {\n this.toAssignableList(\n // node.params is Expression[] instead of $ReadOnlyArray because it\n // has not been converted yet.\n node.params as any as N.Expression[],\n node.extra?.trailingCommaLoc,\n /* isLHS */ false,\n );\n // Enter scope, as checkParams defines bindings\n this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.ARROW);\n // Use super's method to force the parameters to be checked\n super.checkParams(node, false, true);\n this.scope.exit();\n }\n\n forwardNoArrowParamsConversionAt(\n node: Undone,\n parse: () => T,\n ): T {\n let result: T;\n if (\n this.state.noArrowParamsConversionAt.includes(\n this.offsetToSourcePos(node.start),\n )\n ) {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n result = parse();\n this.state.noArrowParamsConversionAt.pop();\n } else {\n result = parse();\n }\n\n return result;\n }\n\n parseParenItem(\n node: T,\n startLoc: Position,\n ): T | N.TypeCastExpression | N.TsTypeCastExpression {\n const newNode = super.parseParenItem(node, startLoc);\n if (this.eat(tt.question)) {\n (newNode as N.Identifier).optional = true;\n // Include questionmark in location of node\n // Don't use this.finishNode() as otherwise we might process comments twice and\n // include already consumed parens\n this.resetEndLocation(node);\n }\n\n if (this.match(tt.colon)) {\n const typeCastNode = this.startNodeAt(startLoc);\n typeCastNode.expression = newNode as N.Expression;\n typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();\n\n return this.finishNode(typeCastNode, \"TypeCastExpression\");\n }\n\n return newNode;\n }\n\n assertModuleNodeAllowed(node: N.Node) {\n if (\n (node.type === \"ImportDeclaration\" &&\n (node.importKind === \"type\" || node.importKind === \"typeof\")) ||\n (node.type === \"ExportNamedDeclaration\" &&\n node.exportKind === \"type\") ||\n (node.type === \"ExportAllDeclaration\" && node.exportKind === \"type\")\n ) {\n // Allow Flowtype imports and exports in all conditions because\n // Flow itself does not care about 'sourceType'.\n return;\n }\n\n super.assertModuleNodeAllowed(node);\n }\n\n parseExportDeclaration(\n node: N.ExportNamedDeclaration,\n ): N.Declaration | undefined | null {\n if (this.isContextual(tt._type)) {\n node.exportKind = \"type\";\n\n const declarationNode = this.startNode();\n this.next();\n\n if (this.match(tt.braceL)) {\n // export type { foo, bar };\n node.specifiers = this.parseExportSpecifiers(\n /* isInTypeExport */ true,\n );\n super.parseExportFrom(node);\n return null;\n } else {\n // export type Foo = Bar;\n // @ts-expect-error: refine typings\n return this.flowParseTypeAlias(declarationNode);\n }\n } else if (this.isContextual(tt._opaque)) {\n node.exportKind = \"type\";\n\n const declarationNode = this.startNode();\n this.next();\n // export opaque type Foo = Bar;\n // @ts-expect-error: refine typings\n return this.flowParseOpaqueType(declarationNode, false);\n } else if (this.isContextual(tt._interface)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n // @ts-expect-error: refine typings\n return this.flowParseInterface(declarationNode);\n } else if (this.isContextual(tt._enum)) {\n node.exportKind = \"value\";\n const declarationNode = this.startNode();\n this.next();\n // @ts-expect-error: refine typings\n return this.flowParseEnumDeclaration(declarationNode);\n } else {\n return super.parseExportDeclaration(node);\n }\n }\n\n eatExportStar(\n node: Undone,\n ): node is Undone {\n if (super.eatExportStar(node)) return true;\n\n if (this.isContextual(tt._type) && this.lookahead().type === tt.star) {\n (\n node as Undone\n ).exportKind = \"type\";\n this.next();\n this.next();\n return true;\n }\n\n return false;\n }\n\n maybeParseExportNamespaceSpecifier(\n node: Undone,\n ): node is Undone {\n const { startLoc } = this.state;\n const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);\n if (hasNamespace && node.exportKind === \"type\") {\n this.unexpected(startLoc);\n }\n return hasNamespace;\n }\n\n parseClassId(\n node: N.Class,\n isStatement: boolean,\n optionalId?: boolean | null,\n ) {\n super.parseClassId(node, isStatement, optionalId);\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n }\n\n parseClassMember(\n classBody: N.ClassBody,\n member: any,\n state: N.ParseClassMemberState,\n ): void {\n const { startLoc } = this.state;\n if (this.isContextual(tt._declare)) {\n if (super.parseClassMemberFromModifier(classBody, member)) {\n // 'declare' is a class element name\n return;\n }\n\n member.declare = true;\n }\n\n super.parseClassMember(classBody, member, state);\n\n if (member.declare) {\n if (\n member.type !== \"ClassProperty\" &&\n member.type !== \"ClassPrivateProperty\" &&\n member.type !== \"PropertyDefinition\" // Used by estree plugin\n ) {\n this.raise(FlowErrors.DeclareClassElement, startLoc);\n } else if (member.value) {\n this.raise(FlowErrors.DeclareClassFieldInitializer, member.value);\n }\n }\n }\n\n isIterator(word: string): boolean {\n return word === \"iterator\" || word === \"asyncIterator\";\n }\n\n readIterator(): void {\n const word = super.readWord1();\n const fullWord = \"@@\" + word;\n\n // Allow @@iterator and @@asyncIterator as a identifier only inside type\n if (!this.isIterator(word) || !this.state.inType) {\n this.raise(Errors.InvalidIdentifier, this.state.curPosition(), {\n identifierName: fullWord,\n });\n }\n\n this.finishToken(tt.name, fullWord);\n }\n\n // ensure that inside flow types, we bypass the jsx parser plugin\n getTokenFromCode(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (code === charCodes.leftCurlyBrace && next === charCodes.verticalBar) {\n this.finishOp(tt.braceBarL, 2);\n } else if (\n this.state.inType &&\n (code === charCodes.greaterThan || code === charCodes.lessThan)\n ) {\n this.finishOp(code === charCodes.greaterThan ? tt.gt : tt.lt, 1);\n } else if (this.state.inType && code === charCodes.questionMark) {\n if (next === charCodes.dot) {\n this.finishOp(tt.questionDot, 2);\n } else {\n // allow double nullable types in Flow: ??string\n this.finishOp(tt.question, 1);\n }\n } else if (\n isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))\n ) {\n this.state.pos += 2; // eat \"@@\"\n this.readIterator();\n } else {\n super.getTokenFromCode(code);\n }\n }\n\n isAssignable(node: N.Node, isBinding?: boolean): boolean {\n if (node.type === \"TypeCastExpression\") {\n return this.isAssignable(node.expression, isBinding);\n } else {\n return super.isAssignable(node, isBinding);\n }\n }\n\n toAssignable(node: N.Node, isLHS: boolean = false): void {\n if (\n !isLHS &&\n node.type === \"AssignmentExpression\" &&\n node.left.type === \"TypeCastExpression\"\n ) {\n node.left = this.typeCastToParameter(node.left) as N.Assignable;\n }\n super.toAssignable(node, isLHS);\n }\n\n // turn type casts that we found in function parameter head into type annotated params\n toAssignableList(\n exprList: N.Expression[],\n trailingCommaLoc: Position | undefined | null,\n isLHS: boolean,\n ): void {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (expr?.type === \"TypeCastExpression\") {\n exprList[i] = this.typeCastToParameter(expr);\n }\n }\n super.toAssignableList(exprList, trailingCommaLoc, isLHS);\n }\n\n // this is a list of nodes, from something like a call expression, we need to filter the\n // type casts that we've found that are illegal in this context\n toReferencedList(\n exprList:\n | ReadonlyArray\n | ReadonlyArray,\n isParenthesizedExpr?: boolean,\n ):\n | ReadonlyArray\n | ReadonlyArray {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (\n expr &&\n expr.type === \"TypeCastExpression\" &&\n !expr.extra?.parenthesized &&\n (exprList.length > 1 || !isParenthesizedExpr)\n ) {\n this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation);\n }\n }\n\n return exprList;\n }\n\n parseArrayLike(\n close: TokenType,\n canBePattern: boolean,\n isTuple: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.ArrayExpression | N.TupleExpression {\n const node = super.parseArrayLike(\n close,\n canBePattern,\n isTuple,\n refExpressionErrors,\n );\n\n // This could be an array pattern:\n // ([a: string, b: string]) => {}\n // In this case, we don't have to call toReferencedList. We will\n // call it, if needed, when we are sure that it is a parenthesized\n // expression by calling toReferencedListDeep.\n if (canBePattern && !this.state.maybeInArrowParameters) {\n this.toReferencedList(node.elements);\n }\n\n return node;\n }\n\n isValidLVal(type: string, isParenthesized: boolean, binding: BindingFlag) {\n return (\n type === \"TypeCastExpression\" ||\n super.isValidLVal(type, isParenthesized, binding)\n );\n }\n\n // parse class property type annotations\n parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n if (this.match(tt.colon)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return super.parseClassProperty(node);\n }\n\n parseClassPrivateProperty(\n node: N.ClassPrivateProperty,\n ): N.ClassPrivateProperty {\n if (this.match(tt.colon)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return super.parseClassPrivateProperty(node);\n }\n\n // determine whether or not we're currently in the position where a class method would appear\n isClassMethod(): boolean {\n return this.match(tt.lt) || super.isClassMethod();\n }\n\n // determine whether or not we're currently in the position where a class property would appear\n isClassProperty(): boolean {\n return this.match(tt.colon) || super.isClassProperty();\n }\n\n isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n return !this.match(tt.colon) && super.isNonstaticConstructor(method);\n }\n\n // parse type parameters for class methods\n pushClassMethod(\n classBody: N.ClassBody,\n method: N.ClassMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowsDirectSuper: boolean,\n ): void {\n if ((method as any).variance) {\n this.unexpected((method as any).variance.loc.start);\n }\n delete (method as any).variance;\n if (this.match(tt.lt)) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.pushClassMethod(\n classBody,\n method,\n isGenerator,\n isAsync,\n isConstructor,\n allowsDirectSuper,\n );\n\n if (method.params && isConstructor) {\n const params = method.params;\n if (params.length > 0 && this.isThisParam(params[0])) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n }\n // estree support\n } else if (\n // @ts-expect-error TS does not know about the fact that estree can replace ClassMethod with MethodDefinition\n method.type === \"MethodDefinition\" &&\n isConstructor &&\n // @ts-expect-error estree\n method.value.params\n ) {\n // @ts-expect-error estree\n const params = method.value.params;\n if (params.length > 0 && this.isThisParam(params[0])) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n }\n }\n }\n\n pushClassPrivateMethod(\n classBody: N.ClassBody,\n method: N.ClassPrivateMethod,\n isGenerator: boolean,\n isAsync: boolean,\n ): void {\n if ((method as any).variance) {\n this.unexpected((method as any).variance.loc.start);\n }\n delete (method as any).variance;\n if (this.match(tt.lt)) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n\n // parse a the super class type parameters and implements\n parseClassSuper(node: N.Class): void {\n super.parseClassSuper(node);\n if (\n node.superClass &&\n (this.match(tt.lt) ||\n // handles `class extends C<`\n this.match(tt.bitShiftL))\n ) {\n if (process.env.BABEL_8_BREAKING) {\n node.superTypeArguments =\n this.flowParseTypeParameterInstantiationInExpression();\n } else {\n node.superTypeParameters =\n this.flowParseTypeParameterInstantiationInExpression();\n }\n }\n if (this.isContextual(tt._implements)) {\n this.next();\n const implemented: N.FlowClassImplements[] = (node.implements = []);\n do {\n const node = this.startNode();\n node.id = this.flowParseRestrictedIdentifier(/*liberal*/ true);\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n implemented.push(this.finishNode(node, \"ClassImplements\"));\n } while (this.eat(tt.comma));\n }\n }\n\n checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n super.checkGetterSetterParams(method);\n const params = this.getObjectOrClassMethodParams(method);\n if (params.length > 0) {\n const param = params[0];\n if (this.isThisParam(param) && method.kind === \"get\") {\n this.raise(FlowErrors.GetterMayNotHaveThisParam, param);\n } else if (this.isThisParam(param)) {\n this.raise(FlowErrors.SetterMayNotHaveThisParam, param);\n }\n }\n }\n\n parsePropertyNamePrefixOperator(\n node: N.ObjectOrClassMember | N.ClassMember,\n ): void {\n node.variance = this.flowParseVariance();\n }\n\n // parse type parameters for object method shorthand\n parseObjPropValue(\n prop: Undone,\n startLoc: Position | undefined | null,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n isAccessor: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): T {\n if ((prop as any).variance) {\n this.unexpected((prop as any).variance.loc.start);\n }\n delete (prop as any).variance;\n\n let typeParameters;\n\n // method shorthand\n if (this.match(tt.lt) && !isAccessor) {\n typeParameters = this.flowParseTypeParameterDeclaration();\n if (!this.match(tt.parenL)) this.unexpected();\n }\n\n const result = super.parseObjPropValue(\n prop,\n startLoc,\n isGenerator,\n isAsync,\n isPattern,\n isAccessor,\n refExpressionErrors,\n );\n\n // add typeParameters if we found them\n if (typeParameters) {\n // @ts-expect-error: refine typings\n (result.value || result).typeParameters = typeParameters;\n }\n return result;\n }\n\n parseFunctionParamType(param: N.Pattern): N.Pattern {\n if (this.eat(tt.question)) {\n if (param.type !== \"Identifier\") {\n this.raise(FlowErrors.PatternIsOptional, param);\n }\n if (this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamMayNotBeOptional, param);\n }\n\n (param as any as N.Identifier).optional = true;\n }\n if (this.match(tt.colon)) {\n param.typeAnnotation = this.flowParseTypeAnnotation();\n } else if (this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamAnnotationRequired, param);\n }\n\n if (this.match(tt.eq) && this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamNoDefault, param);\n }\n\n this.resetEndLocation(param);\n return param;\n }\n\n parseMaybeDefault

(\n startLoc?: Position | null,\n left?: P | null,\n ): P | N.AssignmentPattern {\n const node = super.parseMaybeDefault(startLoc, left);\n\n if (\n node.type === \"AssignmentPattern\" &&\n node.typeAnnotation &&\n node.right.start < node.typeAnnotation.start\n ) {\n this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation);\n }\n\n return node;\n }\n\n checkImportReflection(node: Undone) {\n super.checkImportReflection(node);\n if (node.module && node.importKind !== \"value\") {\n this.raise(\n FlowErrors.ImportReflectionHasImportType,\n node.specifiers[0].loc.start,\n );\n }\n }\n\n parseImportSpecifierLocal<\n T extends\n | N.ImportSpecifier\n | N.ImportDefaultSpecifier\n | N.ImportNamespaceSpecifier,\n >(node: N.ImportDeclaration, specifier: Undone, type: T[\"type\"]): void {\n specifier.local = hasTypeImportKind(node)\n ? this.flowParseRestrictedIdentifier(\n /* liberal */ true,\n /* declaration */ true,\n )\n : this.parseIdentifier();\n\n node.specifiers.push(this.finishImportSpecifier(specifier, type));\n }\n\n isPotentialImportPhase(isExport: boolean): boolean {\n if (super.isPotentialImportPhase(isExport)) return true;\n if (this.isContextual(tt._type)) {\n if (!isExport) return true;\n const ch = this.lookaheadCharCode();\n return ch === charCodes.leftCurlyBrace || ch === charCodes.asterisk;\n }\n return !isExport && this.isContextual(tt._typeof);\n }\n\n applyImportPhase(\n node: Undone,\n isExport: boolean,\n phase: string | null,\n loc?: Position,\n ): void {\n super.applyImportPhase(node, isExport, phase, loc);\n if (isExport) {\n if (!phase && this.match(tt._default)) {\n // TODO: Align with our TS AST and always add .exportKind\n return;\n }\n (node as N.ExportNamedDeclaration).exportKind =\n phase === \"type\" ? phase : \"value\";\n } else {\n if (phase === \"type\" && this.match(tt.star)) this.unexpected();\n (node as N.ImportDeclaration).importKind =\n phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n }\n }\n\n // parse import-type/typeof shorthand\n parseImportSpecifier(\n specifier: any,\n importedIsString: boolean,\n isInTypeOnlyImport: boolean,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isMaybeTypeOnly: boolean,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n bindingType: BindingFlag | undefined,\n ): N.ImportSpecifier {\n const firstIdent = specifier.imported;\n\n let specifierTypeKind = null;\n if (firstIdent.type === \"Identifier\") {\n if (firstIdent.name === \"type\") {\n specifierTypeKind = \"type\";\n } else if (firstIdent.name === \"typeof\") {\n specifierTypeKind = \"typeof\";\n }\n }\n\n let isBinding = false;\n if (this.isContextual(tt._as) && !this.isLookaheadContextual(\"as\")) {\n const as_ident = this.parseIdentifier(true);\n if (\n specifierTypeKind !== null &&\n !tokenIsKeywordOrIdentifier(this.state.type)\n ) {\n // `import {type as ,` or `import {type as }`\n specifier.imported = as_ident;\n specifier.importKind = specifierTypeKind;\n specifier.local = this.cloneIdentifier(as_ident);\n } else {\n // `import {type as foo`\n specifier.imported = firstIdent;\n specifier.importKind = null;\n specifier.local = this.parseIdentifier();\n }\n } else {\n if (\n specifierTypeKind !== null &&\n tokenIsKeywordOrIdentifier(this.state.type)\n ) {\n // `import {type foo`\n specifier.imported = this.parseIdentifier(true);\n specifier.importKind = specifierTypeKind;\n } else {\n if (importedIsString) {\n /*:: invariant(firstIdent instanceof N.StringLiteral) */\n throw this.raise(Errors.ImportBindingIsString, specifier, {\n importName: firstIdent.value,\n });\n }\n /*:: invariant(firstIdent instanceof N.Node) */\n specifier.imported = firstIdent;\n specifier.importKind = null;\n }\n\n if (this.eatContextual(tt._as)) {\n specifier.local = this.parseIdentifier();\n } else {\n isBinding = true;\n specifier.local = this.cloneIdentifier(specifier.imported);\n }\n }\n\n const specifierIsTypeImport = hasTypeImportKind(specifier);\n\n if (isInTypeOnlyImport && specifierIsTypeImport) {\n this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier);\n }\n\n if (isInTypeOnlyImport || specifierIsTypeImport) {\n this.checkReservedType(\n specifier.local.name,\n specifier.local.loc.start,\n /* declaration */ true,\n );\n }\n\n if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {\n this.checkReservedWord(\n specifier.local.name,\n specifier.loc.start,\n true,\n true,\n );\n }\n\n return this.finishImportSpecifier(specifier, \"ImportSpecifier\");\n }\n\n parseBindingAtom(): N.Pattern {\n switch (this.state.type) {\n case tt._this:\n // \"this\" may be the name of a parameter, so allow it.\n return this.parseIdentifier(/* liberal */ true);\n default:\n return super.parseBindingAtom();\n }\n }\n\n // parse function type parameters - function foo() {}\n parseFunctionParams(\n node: Undone,\n isConstructor: boolean,\n ): void {\n // @ts-expect-error kind may not index node\n const kind = node.kind;\n if (kind !== \"get\" && kind !== \"set\" && this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n super.parseFunctionParams(node, isConstructor);\n }\n\n // parse flow type annotations on variable declarator heads - let foo: string = bar\n parseVarId(\n decl: N.VariableDeclarator,\n kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n ): void {\n super.parseVarId(decl, kind);\n if (this.match(tt.colon)) {\n decl.id.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(decl.id); // set end position to end of type\n }\n }\n\n // parse the return type of an async arrow function - let foo = (async (): number => {});\n parseAsyncArrowFromCallExpression(\n node: N.ArrowFunctionExpression,\n call: N.CallExpression,\n ): N.ArrowFunctionExpression {\n if (this.match(tt.colon)) {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n node.returnType = this.flowParseTypeAnnotation();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n }\n\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n\n // todo description\n shouldParseAsyncArrow(): boolean {\n return this.match(tt.colon) || super.shouldParseAsyncArrow();\n }\n\n // We need to support type parameter declarations for arrow functions. This\n // is tricky. There are three situations we need to handle\n //\n // 1. This is either JSX or an arrow function. We'll try JSX first. If that\n // fails, we'll try an arrow function. If that fails, we'll throw the JSX\n // error.\n // 2. This is an arrow function. We'll parse the type parameter declaration,\n // parse the rest, make sure the rest is an arrow function, and go from\n // there\n // 3. This is neither. Just call the super method\n parseMaybeAssign(\n refExpressionErrors?: ExpressionErrors | null,\n afterLeftParse?: Function,\n ): N.Expression {\n let state = null;\n\n let jsx;\n\n if (\n this.hasPlugin(\"jsx\") &&\n (this.match(tt.jsxTagStart) || this.match(tt.lt))\n ) {\n state = this.state.clone();\n\n jsx = this.tryParse(\n () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n state,\n );\n\n /*:: invariant(!jsx.aborted) */\n /*:: invariant(jsx.node != null) */\n if (!jsx.error) return jsx.node;\n\n // Remove `tc.j_expr` and `tc.j_oTag` from context added\n // by parsing `jsxTagStart` to stop the JSX plugin from\n // messing with the tokens\n const { context } = this.state;\n const currentContext = context[context.length - 1];\n if (currentContext === tc.j_oTag || currentContext === tc.j_expr) {\n context.pop();\n }\n }\n\n if (jsx?.error || this.match(tt.lt)) {\n state = state || this.state.clone();\n\n let typeParameters: N.TypeParameterDeclaration;\n\n const arrow = this.tryParse((abort: () => never) => {\n typeParameters = this.flowParseTypeParameterDeclaration();\n\n const arrowExpression = this.forwardNoArrowParamsConversionAt(\n typeParameters,\n () => {\n const result = super.parseMaybeAssign(\n refExpressionErrors,\n afterLeftParse,\n );\n\n this.resetStartLocationFromNode(result, typeParameters);\n\n return result;\n },\n );\n\n // (() => {});\n // (() => {}: any);\n if (arrowExpression.extra?.parenthesized) abort();\n\n // The above can return a TypeCastExpression when the arrow\n // expression is not wrapped in parens. See also `this.parseParenItem`.\n // (() => {}: any);\n const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);\n\n if (expr.type !== \"ArrowFunctionExpression\") abort();\n\n expr.typeParameters = typeParameters;\n this.resetStartLocationFromNode(expr, typeParameters);\n\n return arrowExpression;\n }, state);\n\n let arrowExpression:\n | N.ArrowFunctionExpression\n | N.TypeCastExpression\n | undefined\n | null = null;\n\n if (\n arrow.node &&\n this.maybeUnwrapTypeCastExpression(arrow.node).type ===\n \"ArrowFunctionExpression\"\n ) {\n if (!arrow.error && !arrow.aborted) {\n // async () => {}\n // @ts-expect-error: refine tryParse typings\n if (arrow.node.async) {\n /*:: invariant(typeParameters) */\n this.raise(\n FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction,\n typeParameters,\n );\n }\n return arrow.node;\n }\n\n // @ts-expect-error: refine typings\n arrowExpression = arrow.node;\n }\n\n // If we are here, both JSX and Flow parsing attempts failed.\n // Give the precedence to the JSX error, except if JSX had an\n // unrecoverable error while Flow didn't.\n // If the error is recoverable, we can only re-report it if there is\n // a node we can return.\n\n if (jsx?.node) {\n /*:: invariant(jsx.failState) */\n this.state = jsx.failState;\n return jsx.node;\n }\n\n if (arrowExpression) {\n /*:: invariant(arrow.failState) */\n this.state = arrow.failState;\n return arrowExpression;\n }\n\n if (jsx?.thrown) throw jsx.error;\n if (arrow.thrown) throw arrow.error;\n\n /*:: invariant(typeParameters) */\n throw this.raise(\n FlowErrors.UnexpectedTokenAfterTypeParameter,\n typeParameters,\n );\n }\n\n return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n }\n\n // handle return types for arrow functions\n parseArrow(\n node: Undone,\n ): Undone | undefined | null {\n if (this.match(tt.colon)) {\n // @ts-expect-error todo(flow->ts)\n const result = this.tryParse(() => {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n\n const typeNode = this.startNode();\n\n [\n typeNode.typeAnnotation,\n // @ts-expect-error (destructuring not supported yet)\n node.predicate,\n ] = this.flowParseTypeAndPredicateInitialiser();\n\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n if (this.canInsertSemicolon()) this.unexpected();\n if (!this.match(tt.arrow)) this.unexpected();\n\n return typeNode;\n });\n\n if (result.thrown) return null;\n /*:: invariant(result.node) */\n\n if (result.error) this.state = result.failState;\n\n // assign after it is clear it is an arrow\n // @ts-expect-error todo(flow->ts)\n node.returnType = result.node.typeAnnotation\n ? this.finishNode(result.node, \"TypeAnnotation\")\n : null;\n }\n\n return super.parseArrow(node);\n }\n\n shouldParseArrow(params: Array): boolean {\n return this.match(tt.colon) || super.shouldParseArrow(params);\n }\n\n setArrowFunctionParameters(\n node: Undone,\n params:\n | Array\n | Array,\n ): void {\n if (\n this.state.noArrowParamsConversionAt.includes(\n this.offsetToSourcePos(node.start),\n )\n ) {\n node.params = params as N.ArrowFunctionExpression[\"params\"];\n } else {\n super.setArrowFunctionParameters(node, params);\n }\n }\n\n checkParams(\n node: N.Function,\n allowDuplicates: boolean,\n isArrowFunction?: boolean | null,\n strictModeChanged: boolean = true,\n ): void {\n if (\n isArrowFunction &&\n this.state.noArrowParamsConversionAt.includes(\n this.offsetToSourcePos(node.start),\n )\n ) {\n return;\n }\n\n // ensure the `this` param is first, if it exists\n for (let i = 0; i < node.params.length; i++) {\n if (this.isThisParam(node.params[i]) && i > 0) {\n this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]);\n }\n }\n\n super.checkParams(\n node,\n allowDuplicates,\n isArrowFunction,\n strictModeChanged,\n );\n }\n\n parseParenAndDistinguishExpression(canBeArrow: boolean): N.Expression {\n return super.parseParenAndDistinguishExpression(\n canBeArrow &&\n !this.state.noArrowAt.includes(\n this.sourceToOffsetPos(this.state.start),\n ),\n );\n }\n\n parseSubscripts(\n base: N.Expression,\n startLoc: Position,\n noCalls?: boolean | null,\n ): N.Expression {\n if (\n base.type === \"Identifier\" &&\n base.name === \"async\" &&\n this.state.noArrowAt.includes(startLoc.index)\n ) {\n this.next();\n\n const node = this.startNodeAt(startLoc);\n node.callee = base;\n node.arguments = super.parseCallExpressionArguments();\n base = this.finishNode(node, \"CallExpression\");\n } else if (\n base.type === \"Identifier\" &&\n base.name === \"async\" &&\n this.match(tt.lt)\n ) {\n const state = this.state.clone();\n const arrow = this.tryParse(\n abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(),\n state,\n );\n\n /*:: invariant(arrow.node != null) */\n // @ts-expect-error: refine tryParse typings\n if (!arrow.error && !arrow.aborted) return arrow.node;\n\n const result = this.tryParse(\n () => super.parseSubscripts(base, startLoc, noCalls),\n state,\n );\n\n if (result.node && !result.error) return result.node;\n\n if (arrow.node) {\n this.state = arrow.failState;\n // @ts-expect-error: refine tryParse typings\n return arrow.node;\n }\n\n if (result.node) {\n this.state = result.failState;\n return result.node;\n }\n\n throw arrow.error || result.error;\n }\n\n return super.parseSubscripts(base, startLoc, noCalls);\n }\n\n parseSubscript(\n base: N.Expression,\n\n startLoc: Position,\n noCalls: boolean | undefined | null,\n subscriptState: N.ParseSubscriptState,\n ): N.Expression {\n if (this.match(tt.questionDot) && this.isLookaheadToken_lt()) {\n subscriptState.optionalChainMember = true;\n if (noCalls) {\n subscriptState.stop = true;\n return base;\n }\n this.next();\n const node = this.startNodeAt(startLoc);\n node.callee = base;\n node.typeArguments =\n this.flowParseTypeParameterInstantiationInExpression();\n this.expect(tt.parenL);\n node.arguments = this.parseCallExpressionArguments();\n node.optional = true;\n return this.finishCallExpression(node, /* optional */ true);\n } else if (\n !noCalls &&\n this.shouldParseTypes() &&\n (this.match(tt.lt) ||\n // also handles `new C<`\n this.match(tt.bitShiftL))\n ) {\n const node = this.startNodeAt<\n N.OptionalCallExpression | N.CallExpression\n >(startLoc);\n node.callee = base;\n\n const result = this.tryParse(() => {\n node.typeArguments =\n this.flowParseTypeParameterInstantiationCallOrNew();\n this.expect(tt.parenL);\n node.arguments = super.parseCallExpressionArguments();\n if (subscriptState.optionalChainMember) {\n (node as Undone).optional = false;\n }\n return this.finishCallExpression(\n node,\n subscriptState.optionalChainMember,\n );\n });\n\n if (result.node) {\n if (result.error) this.state = result.failState;\n return result.node;\n }\n }\n\n return super.parseSubscript(\n base,\n\n startLoc,\n noCalls,\n subscriptState,\n );\n }\n\n parseNewCallee(node: N.NewExpression): void {\n super.parseNewCallee(node);\n\n let targs = null;\n if (this.shouldParseTypes() && this.match(tt.lt)) {\n targs = this.tryParse(() =>\n this.flowParseTypeParameterInstantiationCallOrNew(),\n ).node;\n }\n node.typeArguments = targs;\n }\n\n parseAsyncArrowWithTypeParameters(\n startLoc: Position,\n ): N.ArrowFunctionExpression | undefined | null {\n const node = this.startNodeAt(startLoc);\n this.parseFunctionParams(node, false);\n if (!this.parseArrow(node)) return;\n return super.parseArrowExpression(\n node,\n /* params */ undefined,\n /* isAsync */ true,\n );\n }\n\n readToken_mult_modulo(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (\n code === charCodes.asterisk &&\n next === charCodes.slash &&\n this.state.hasFlowComment\n ) {\n this.state.hasFlowComment = false;\n this.state.pos += 2;\n this.nextToken();\n return;\n }\n\n super.readToken_mult_modulo(code);\n }\n\n readToken_pipe_amp(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (\n code === charCodes.verticalBar &&\n next === charCodes.rightCurlyBrace\n ) {\n // '|}'\n this.finishOp(tt.braceBarR, 2);\n return;\n }\n\n super.readToken_pipe_amp(code);\n }\n\n parseTopLevel(file: N.File, program: N.Program): N.File {\n const fileNode = super.parseTopLevel(file, program);\n if (this.state.hasFlowComment) {\n this.raise(\n FlowErrors.UnterminatedFlowComment,\n this.state.curPosition(),\n );\n }\n return fileNode;\n }\n\n skipBlockComment(): N.CommentBlock | undefined {\n if (this.hasPlugin(\"flowComments\") && this.skipFlowComment()) {\n if (this.state.hasFlowComment) {\n throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc);\n }\n this.hasFlowCommentCompletion();\n const commentSkip = this.skipFlowComment();\n if (commentSkip) {\n this.state.pos += commentSkip;\n this.state.hasFlowComment = true;\n }\n return;\n }\n\n return super.skipBlockComment(this.state.hasFlowComment ? \"*-/\" : \"*/\");\n }\n\n skipFlowComment(): number | false {\n const { pos } = this.state;\n let shiftToFirstNonWhiteSpace = 2;\n while (\n [charCodes.space, charCodes.tab].includes(\n // @ts-expect-error testing whether a number is included\n this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace),\n )\n ) {\n shiftToFirstNonWhiteSpace++;\n }\n\n const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);\n const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);\n\n if (ch2 === charCodes.colon && ch3 === charCodes.colon) {\n return shiftToFirstNonWhiteSpace + 2; // check for /*::\n }\n if (\n this.input.slice(\n shiftToFirstNonWhiteSpace + pos,\n shiftToFirstNonWhiteSpace + pos + 12,\n ) === \"flow-include\"\n ) {\n return shiftToFirstNonWhiteSpace + 12; // check for /*flow-include\n }\n if (ch2 === charCodes.colon && ch3 !== charCodes.colon) {\n return shiftToFirstNonWhiteSpace; // check for /*:, advance up to :\n }\n return false;\n }\n\n hasFlowCommentCompletion(): void {\n const end = this.input.indexOf(\"*/\", this.state.pos);\n if (end === -1) {\n throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n }\n }\n\n // Flow enum parsing\n\n flowEnumErrorBooleanMemberNotInitialized(\n loc: Position,\n {\n enumName,\n memberName,\n }: {\n enumName: string;\n memberName: string;\n },\n ): void {\n this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, {\n memberName,\n enumName,\n });\n }\n\n flowEnumErrorInvalidMemberInitializer(\n loc: Position,\n enumContext: EnumContext,\n ) {\n return this.raise(\n !enumContext.explicitType\n ? FlowErrors.EnumInvalidMemberInitializerUnknownType\n : enumContext.explicitType === \"symbol\"\n ? FlowErrors.EnumInvalidMemberInitializerSymbolType\n : FlowErrors.EnumInvalidMemberInitializerPrimaryType,\n loc,\n enumContext,\n );\n }\n\n flowEnumErrorNumberMemberNotInitialized(\n loc: Position,\n details: {\n enumName: string;\n memberName: string;\n },\n ): void {\n this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details);\n }\n\n flowEnumErrorStringMemberInconsistentlyInitialized(\n node: N.Node,\n details: {\n enumName: string;\n },\n ): void {\n this.raise(\n FlowErrors.EnumStringMemberInconsistentlyInitialized,\n node,\n details,\n );\n }\n\n flowEnumMemberInit(): EnumMemberInit {\n const startLoc = this.state.startLoc;\n const endOfInit = () => this.match(tt.comma) || this.match(tt.braceR);\n switch (this.state.type) {\n case tt.num: {\n const literal = this.parseNumericLiteral(this.state.value);\n if (endOfInit()) {\n return { type: \"number\", loc: literal.loc.start, value: literal };\n }\n return { type: \"invalid\", loc: startLoc };\n }\n case tt.string: {\n const literal = this.parseStringLiteral(this.state.value);\n if (endOfInit()) {\n return { type: \"string\", loc: literal.loc.start, value: literal };\n }\n return { type: \"invalid\", loc: startLoc };\n }\n case tt._true:\n case tt._false: {\n const literal = this.parseBooleanLiteral(this.match(tt._true));\n if (endOfInit()) {\n return {\n type: \"boolean\",\n loc: literal.loc.start,\n value: literal,\n };\n }\n return { type: \"invalid\", loc: startLoc };\n }\n default:\n return { type: \"invalid\", loc: startLoc };\n }\n }\n\n flowEnumMemberRaw(): {\n id: N.Identifier;\n init: EnumMemberInit;\n } {\n const loc = this.state.startLoc;\n const id = this.parseIdentifier(true);\n const init = this.eat(tt.eq)\n ? this.flowEnumMemberInit()\n : { type: \"none\" as const, loc };\n return { id, init };\n }\n\n flowEnumCheckExplicitTypeMismatch(\n loc: Position,\n context: EnumContext,\n expectedType: EnumExplicitType,\n ): void {\n const { explicitType } = context;\n if (explicitType === null) {\n return;\n }\n if (explicitType !== expectedType) {\n this.flowEnumErrorInvalidMemberInitializer(loc, context);\n }\n }\n\n flowEnumMembers({\n enumName,\n explicitType,\n }: {\n enumName: string;\n explicitType: EnumExplicitType;\n }): {\n members: {\n booleanMembers: Extract<\n N.FlowEnumMember,\n { type: \"EnumBooleanMember\" }\n >[];\n numberMembers: Extract<\n N.FlowEnumMember,\n { type: \"EnumNumberMember\" }\n >[];\n stringMembers: Extract<\n N.FlowEnumMember,\n { type: \"EnumStringMember\" }\n >[];\n defaultedMembers: Extract<\n N.FlowEnumMember,\n { type: \"EnumDefaultedMember\" }\n >[];\n };\n hasUnknownMembers: boolean;\n } {\n const seenNames = new Set();\n const members = {\n // @ts-expect-error: migrate to Babel types\n booleanMembers: [],\n // @ts-expect-error: migrate to Babel types\n numberMembers: [],\n // @ts-expect-error: migrate to Babel types\n stringMembers: [],\n // @ts-expect-error: migrate to Babel types\n defaultedMembers: [],\n };\n let hasUnknownMembers = false;\n while (!this.match(tt.braceR)) {\n if (this.eat(tt.ellipsis)) {\n hasUnknownMembers = true;\n break;\n }\n const memberNode = this.startNode();\n const { id, init } = this.flowEnumMemberRaw();\n const memberName = id.name;\n if (memberName === \"\") {\n continue;\n }\n if (/^[a-z]/.test(memberName)) {\n this.raise(FlowErrors.EnumInvalidMemberName, id, {\n memberName,\n suggestion: memberName[0].toUpperCase() + memberName.slice(1),\n enumName,\n });\n }\n if (seenNames.has(memberName)) {\n this.raise(FlowErrors.EnumDuplicateMemberName, id, {\n memberName,\n enumName,\n });\n }\n seenNames.add(memberName);\n const context = { enumName, explicitType, memberName };\n memberNode.id = id;\n switch (init.type) {\n case \"boolean\": {\n this.flowEnumCheckExplicitTypeMismatch(\n init.loc,\n context,\n \"boolean\",\n );\n memberNode.init = init.value;\n members.booleanMembers.push(\n this.finishNode(memberNode, \"EnumBooleanMember\"),\n );\n break;\n }\n case \"number\": {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"number\");\n memberNode.init = init.value;\n members.numberMembers.push(\n this.finishNode(memberNode, \"EnumNumberMember\"),\n );\n break;\n }\n case \"string\": {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"string\");\n memberNode.init = init.value;\n members.stringMembers.push(\n this.finishNode(memberNode, \"EnumStringMember\"),\n );\n break;\n }\n case \"invalid\": {\n throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);\n }\n case \"none\": {\n switch (explicitType) {\n case \"boolean\":\n this.flowEnumErrorBooleanMemberNotInitialized(\n init.loc,\n context,\n );\n break;\n case \"number\":\n this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);\n break;\n default:\n members.defaultedMembers.push(\n this.finishNode(memberNode, \"EnumDefaultedMember\"),\n );\n }\n }\n }\n\n if (!this.match(tt.braceR)) {\n this.expect(tt.comma);\n }\n }\n return { members, hasUnknownMembers };\n }\n\n flowEnumStringMembers(\n initializedMembers: Array,\n defaultedMembers: Array,\n {\n enumName,\n }: {\n enumName: string;\n },\n ): Array {\n if (initializedMembers.length === 0) {\n return defaultedMembers;\n } else if (defaultedMembers.length === 0) {\n return initializedMembers;\n } else if (defaultedMembers.length > initializedMembers.length) {\n for (const member of initializedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n enumName,\n });\n }\n return defaultedMembers;\n } else {\n for (const member of defaultedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n enumName,\n });\n }\n return initializedMembers;\n }\n }\n\n flowEnumParseExplicitType({\n enumName,\n }: {\n enumName: string;\n }): EnumExplicitType {\n if (!this.eatContextual(tt._of)) return null;\n\n if (!tokenIsIdentifier(this.state.type)) {\n throw this.raise(\n FlowErrors.EnumInvalidExplicitTypeUnknownSupplied,\n this.state.startLoc,\n {\n enumName,\n },\n );\n }\n\n const { value } = this.state;\n this.next();\n\n if (\n value !== \"boolean\" &&\n value !== \"number\" &&\n value !== \"string\" &&\n value !== \"symbol\"\n ) {\n this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, {\n enumName,\n invalidEnumType: value,\n });\n }\n\n return value;\n }\n\n flowEnumBody(node: Undone, id: N.Identifier): N.Node {\n const enumName = id.name;\n const nameLoc = id.loc.start;\n const explicitType = this.flowEnumParseExplicitType({ enumName });\n this.expect(tt.braceL);\n const { members, hasUnknownMembers } = this.flowEnumMembers({\n enumName,\n explicitType,\n });\n node.hasUnknownMembers = hasUnknownMembers;\n\n switch (explicitType) {\n case \"boolean\":\n node.explicitType = true;\n node.members = members.booleanMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumBooleanBody\");\n case \"number\":\n node.explicitType = true;\n node.members = members.numberMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumNumberBody\");\n case \"string\":\n node.explicitType = true;\n node.members = this.flowEnumStringMembers(\n members.stringMembers,\n members.defaultedMembers,\n { enumName },\n );\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n case \"symbol\":\n node.members = members.defaultedMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumSymbolBody\");\n default: {\n // `explicitType` is `null`\n const empty = () => {\n node.members = [];\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n };\n node.explicitType = false;\n\n const boolsLen = members.booleanMembers.length;\n const numsLen = members.numberMembers.length;\n const strsLen = members.stringMembers.length;\n const defaultedLen = members.defaultedMembers.length;\n\n if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {\n return empty();\n } else if (!boolsLen && !numsLen) {\n node.members = this.flowEnumStringMembers(\n members.stringMembers,\n members.defaultedMembers,\n { enumName },\n );\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {\n enumName,\n memberName: member.id.name,\n });\n }\n node.members = members.booleanMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumBooleanBody\");\n } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, {\n enumName,\n memberName: member.id.name,\n });\n }\n node.members = members.numberMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumNumberBody\");\n } else {\n this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, {\n enumName,\n });\n return empty();\n }\n }\n }\n }\n\n flowParseEnumDeclaration(\n node: Undone,\n ): N.FlowEnumDeclaration {\n const id = this.parseIdentifier();\n node.id = id;\n node.body = this.flowEnumBody(this.startNode(), id);\n return this.finishNode(node, \"EnumDeclaration\");\n }\n\n jsxParseOpeningElementAfterName(\n node: N.JSXOpeningElement,\n ): N.JSXOpeningElement {\n if (this.shouldParseTypes()) {\n if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n node.typeArguments =\n this.flowParseTypeParameterInstantiationInExpression();\n }\n }\n\n return super.jsxParseOpeningElementAfterName(node);\n }\n\n // check if the next token is a tt.lt\n isLookaheadToken_lt(): boolean {\n const next = this.nextTokenStart();\n if (this.input.charCodeAt(next) === charCodes.lessThan) {\n const afterNext = this.input.charCodeAt(next + 1);\n return (\n afterNext !== charCodes.lessThan && afterNext !== charCodes.equalsTo\n );\n }\n return false;\n }\n\n // used after we have finished parsing types\n reScan_lt_gt() {\n const { type } = this.state;\n if (type === tt.lt) {\n this.state.pos -= 1;\n this.readToken_lt();\n } else if (type === tt.gt) {\n this.state.pos -= 1;\n this.readToken_gt();\n }\n }\n\n reScan_lt() {\n const { type } = this.state;\n if (type === tt.bitShiftL) {\n this.state.pos -= 2;\n this.finishOp(tt.lt, 1);\n return tt.lt;\n }\n return type;\n }\n\n maybeUnwrapTypeCastExpression(node: N.Node) {\n return node.type === \"TypeCastExpression\" ? node.expression : node;\n }\n };\n","const entities: {\n __proto__: null;\n [name: string]: string;\n} = {\n __proto__: null,\n quot: \"\\u0022\",\n amp: \"&\",\n apos: \"\\u0027\",\n lt: \"<\",\n gt: \">\",\n nbsp: \"\\u00A0\",\n iexcl: \"\\u00A1\",\n cent: \"\\u00A2\",\n pound: \"\\u00A3\",\n curren: \"\\u00A4\",\n yen: \"\\u00A5\",\n brvbar: \"\\u00A6\",\n sect: \"\\u00A7\",\n uml: \"\\u00A8\",\n copy: \"\\u00A9\",\n ordf: \"\\u00AA\",\n laquo: \"\\u00AB\",\n not: \"\\u00AC\",\n shy: \"\\u00AD\",\n reg: \"\\u00AE\",\n macr: \"\\u00AF\",\n deg: \"\\u00B0\",\n plusmn: \"\\u00B1\",\n sup2: \"\\u00B2\",\n sup3: \"\\u00B3\",\n acute: \"\\u00B4\",\n micro: \"\\u00B5\",\n para: \"\\u00B6\",\n middot: \"\\u00B7\",\n cedil: \"\\u00B8\",\n sup1: \"\\u00B9\",\n ordm: \"\\u00BA\",\n raquo: \"\\u00BB\",\n frac14: \"\\u00BC\",\n frac12: \"\\u00BD\",\n frac34: \"\\u00BE\",\n iquest: \"\\u00BF\",\n Agrave: \"\\u00C0\",\n Aacute: \"\\u00C1\",\n Acirc: \"\\u00C2\",\n Atilde: \"\\u00C3\",\n Auml: \"\\u00C4\",\n Aring: \"\\u00C5\",\n AElig: \"\\u00C6\",\n Ccedil: \"\\u00C7\",\n Egrave: \"\\u00C8\",\n Eacute: \"\\u00C9\",\n Ecirc: \"\\u00CA\",\n Euml: \"\\u00CB\",\n Igrave: \"\\u00CC\",\n Iacute: \"\\u00CD\",\n Icirc: \"\\u00CE\",\n Iuml: \"\\u00CF\",\n ETH: \"\\u00D0\",\n Ntilde: \"\\u00D1\",\n Ograve: \"\\u00D2\",\n Oacute: \"\\u00D3\",\n Ocirc: \"\\u00D4\",\n Otilde: \"\\u00D5\",\n Ouml: \"\\u00D6\",\n times: \"\\u00D7\",\n Oslash: \"\\u00D8\",\n Ugrave: \"\\u00D9\",\n Uacute: \"\\u00DA\",\n Ucirc: \"\\u00DB\",\n Uuml: \"\\u00DC\",\n Yacute: \"\\u00DD\",\n THORN: \"\\u00DE\",\n szlig: \"\\u00DF\",\n agrave: \"\\u00E0\",\n aacute: \"\\u00E1\",\n acirc: \"\\u00E2\",\n atilde: \"\\u00E3\",\n auml: \"\\u00E4\",\n aring: \"\\u00E5\",\n aelig: \"\\u00E6\",\n ccedil: \"\\u00E7\",\n egrave: \"\\u00E8\",\n eacute: \"\\u00E9\",\n ecirc: \"\\u00EA\",\n euml: \"\\u00EB\",\n igrave: \"\\u00EC\",\n iacute: \"\\u00ED\",\n icirc: \"\\u00EE\",\n iuml: \"\\u00EF\",\n eth: \"\\u00F0\",\n ntilde: \"\\u00F1\",\n ograve: \"\\u00F2\",\n oacute: \"\\u00F3\",\n ocirc: \"\\u00F4\",\n otilde: \"\\u00F5\",\n ouml: \"\\u00F6\",\n divide: \"\\u00F7\",\n oslash: \"\\u00F8\",\n ugrave: \"\\u00F9\",\n uacute: \"\\u00FA\",\n ucirc: \"\\u00FB\",\n uuml: \"\\u00FC\",\n yacute: \"\\u00FD\",\n thorn: \"\\u00FE\",\n yuml: \"\\u00FF\",\n OElig: \"\\u0152\",\n oelig: \"\\u0153\",\n Scaron: \"\\u0160\",\n scaron: \"\\u0161\",\n Yuml: \"\\u0178\",\n fnof: \"\\u0192\",\n circ: \"\\u02C6\",\n tilde: \"\\u02DC\",\n Alpha: \"\\u0391\",\n Beta: \"\\u0392\",\n Gamma: \"\\u0393\",\n Delta: \"\\u0394\",\n Epsilon: \"\\u0395\",\n Zeta: \"\\u0396\",\n Eta: \"\\u0397\",\n Theta: \"\\u0398\",\n Iota: \"\\u0399\",\n Kappa: \"\\u039A\",\n Lambda: \"\\u039B\",\n Mu: \"\\u039C\",\n Nu: \"\\u039D\",\n Xi: \"\\u039E\",\n Omicron: \"\\u039F\",\n Pi: \"\\u03A0\",\n Rho: \"\\u03A1\",\n Sigma: \"\\u03A3\",\n Tau: \"\\u03A4\",\n Upsilon: \"\\u03A5\",\n Phi: \"\\u03A6\",\n Chi: \"\\u03A7\",\n Psi: \"\\u03A8\",\n Omega: \"\\u03A9\",\n alpha: \"\\u03B1\",\n beta: \"\\u03B2\",\n gamma: \"\\u03B3\",\n delta: \"\\u03B4\",\n epsilon: \"\\u03B5\",\n zeta: \"\\u03B6\",\n eta: \"\\u03B7\",\n theta: \"\\u03B8\",\n iota: \"\\u03B9\",\n kappa: \"\\u03BA\",\n lambda: \"\\u03BB\",\n mu: \"\\u03BC\",\n nu: \"\\u03BD\",\n xi: \"\\u03BE\",\n omicron: \"\\u03BF\",\n pi: \"\\u03C0\",\n rho: \"\\u03C1\",\n sigmaf: \"\\u03C2\",\n sigma: \"\\u03C3\",\n tau: \"\\u03C4\",\n upsilon: \"\\u03C5\",\n phi: \"\\u03C6\",\n chi: \"\\u03C7\",\n psi: \"\\u03C8\",\n omega: \"\\u03C9\",\n thetasym: \"\\u03D1\",\n upsih: \"\\u03D2\",\n piv: \"\\u03D6\",\n ensp: \"\\u2002\",\n emsp: \"\\u2003\",\n thinsp: \"\\u2009\",\n zwnj: \"\\u200C\",\n zwj: \"\\u200D\",\n lrm: \"\\u200E\",\n rlm: \"\\u200F\",\n ndash: \"\\u2013\",\n mdash: \"\\u2014\",\n lsquo: \"\\u2018\",\n rsquo: \"\\u2019\",\n sbquo: \"\\u201A\",\n ldquo: \"\\u201C\",\n rdquo: \"\\u201D\",\n bdquo: \"\\u201E\",\n dagger: \"\\u2020\",\n Dagger: \"\\u2021\",\n bull: \"\\u2022\",\n hellip: \"\\u2026\",\n permil: \"\\u2030\",\n prime: \"\\u2032\",\n Prime: \"\\u2033\",\n lsaquo: \"\\u2039\",\n rsaquo: \"\\u203A\",\n oline: \"\\u203E\",\n frasl: \"\\u2044\",\n euro: \"\\u20AC\",\n image: \"\\u2111\",\n weierp: \"\\u2118\",\n real: \"\\u211C\",\n trade: \"\\u2122\",\n alefsym: \"\\u2135\",\n larr: \"\\u2190\",\n uarr: \"\\u2191\",\n rarr: \"\\u2192\",\n darr: \"\\u2193\",\n harr: \"\\u2194\",\n crarr: \"\\u21B5\",\n lArr: \"\\u21D0\",\n uArr: \"\\u21D1\",\n rArr: \"\\u21D2\",\n dArr: \"\\u21D3\",\n hArr: \"\\u21D4\",\n forall: \"\\u2200\",\n part: \"\\u2202\",\n exist: \"\\u2203\",\n empty: \"\\u2205\",\n nabla: \"\\u2207\",\n isin: \"\\u2208\",\n notin: \"\\u2209\",\n ni: \"\\u220B\",\n prod: \"\\u220F\",\n sum: \"\\u2211\",\n minus: \"\\u2212\",\n lowast: \"\\u2217\",\n radic: \"\\u221A\",\n prop: \"\\u221D\",\n infin: \"\\u221E\",\n ang: \"\\u2220\",\n and: \"\\u2227\",\n or: \"\\u2228\",\n cap: \"\\u2229\",\n cup: \"\\u222A\",\n int: \"\\u222B\",\n there4: \"\\u2234\",\n sim: \"\\u223C\",\n cong: \"\\u2245\",\n asymp: \"\\u2248\",\n ne: \"\\u2260\",\n equiv: \"\\u2261\",\n le: \"\\u2264\",\n ge: \"\\u2265\",\n sub: \"\\u2282\",\n sup: \"\\u2283\",\n nsub: \"\\u2284\",\n sube: \"\\u2286\",\n supe: \"\\u2287\",\n oplus: \"\\u2295\",\n otimes: \"\\u2297\",\n perp: \"\\u22A5\",\n sdot: \"\\u22C5\",\n lceil: \"\\u2308\",\n rceil: \"\\u2309\",\n lfloor: \"\\u230A\",\n rfloor: \"\\u230B\",\n lang: \"\\u2329\",\n rang: \"\\u232A\",\n loz: \"\\u25CA\",\n spades: \"\\u2660\",\n clubs: \"\\u2663\",\n hearts: \"\\u2665\",\n diams: \"\\u2666\",\n} as const;\nexport default entities;\n","import * as charCodes from \"charcodes\";\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\nexport const lineBreak = /\\r\\n|[\\r\\n\\u2028\\u2029]/;\nexport const lineBreakG = new RegExp(lineBreak.source, \"g\");\n\n// https://tc39.github.io/ecma262/#sec-line-terminators\nexport function isNewLine(code: number): boolean {\n switch (code) {\n case charCodes.lineFeed:\n case charCodes.carriageReturn:\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return true;\n\n default:\n return false;\n }\n}\n\nexport function hasNewLine(input: string, start: number, end: number): boolean {\n for (let i = start; i < end; i++) {\n if (isNewLine(input.charCodeAt(i))) {\n return true;\n }\n }\n return false;\n}\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nexport const skipWhiteSpaceInLine =\n /(?:[^\\S\\n\\r\\u2028\\u2029]|\\/\\/.*|\\/\\*.*?\\*\\/)*/g;\n\n// https://tc39.github.io/ecma262/#sec-white-space\nexport function isWhitespace(code: number): boolean {\n switch (code) {\n case 0x0009: // CHARACTER TABULATION\n case 0x000b: // LINE TABULATION\n case 0x000c: // FORM FEED\n case charCodes.space:\n case charCodes.nonBreakingSpace:\n case charCodes.oghamSpaceMark:\n case 0x2000: // EN QUAD\n case 0x2001: // EM QUAD\n case 0x2002: // EN SPACE\n case 0x2003: // EM SPACE\n case 0x2004: // THREE-PER-EM SPACE\n case 0x2005: // FOUR-PER-EM SPACE\n case 0x2006: // SIX-PER-EM SPACE\n case 0x2007: // FIGURE SPACE\n case 0x2008: // PUNCTUATION SPACE\n case 0x2009: // THIN SPACE\n case 0x200a: // HAIR SPACE\n case 0x202f: // NARROW NO-BREAK SPACE\n case 0x205f: // MEDIUM MATHEMATICAL SPACE\n case 0x3000: // IDEOGRAPHIC SPACE\n case 0xfeff: // ZERO WIDTH NO-BREAK SPACE\n return true;\n\n default:\n return false;\n }\n}\n","import * as charCodes from \"charcodes\";\n\nimport XHTMLEntities from \"./xhtml.ts\";\nimport type Parser from \"../../parser/index.ts\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport {\n tokenComesBeforeExpression,\n tokenIsKeyword,\n tokenLabelName,\n type TokenType,\n tt,\n} from \"../../tokenizer/types.ts\";\nimport type { TokContext } from \"../../tokenizer/context.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport type * as N from \"../../types.ts\";\nimport { isIdentifierChar, isIdentifierStart } from \"../../util/identifier.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { isNewLine } from \"../../util/whitespace.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport type { Undone } from \"../../parser/node.ts\";\n\n/* eslint sort-keys: \"error\" */\nconst JsxErrors = ParseErrorEnum`jsx`({\n AttributeIsEmpty:\n \"JSX attributes must only be assigned a non-empty expression.\",\n MissingClosingTagElement: ({ openingTagName }: { openingTagName: string }) =>\n `Expected corresponding JSX closing tag for <${openingTagName}>.`,\n MissingClosingTagFragment: \"Expected corresponding JSX closing tag for <>.\",\n UnexpectedSequenceExpression:\n \"Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?\",\n // FIXME: Unify with Errors.UnexpectedToken\n UnexpectedToken: ({\n unexpected,\n HTMLEntity,\n }: {\n unexpected: string;\n HTMLEntity: string;\n }) =>\n `Unexpected token \\`${unexpected}\\`. Did you mean \\`${HTMLEntity}\\` or \\`{'${unexpected}'}\\`?`,\n UnsupportedJsxValue:\n \"JSX value should be either an expression or a quoted JSX text.\",\n UnterminatedJsxContent: \"Unterminated JSX contents.\",\n UnwrappedAdjacentJSXElements:\n \"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...?\",\n});\n\n/* eslint-disable sort-keys */\n\nfunction isFragment(object?: N.JSXTag | null): object is N.JSXFragmentTag {\n return object\n ? object.type === \"JSXOpeningFragment\" ||\n object.type === \"JSXClosingFragment\"\n : false;\n}\n\n// Transforms JSX element name to string.\n\nfunction getQualifiedJSXName(\n object: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression,\n): string {\n if (object.type === \"JSXIdentifier\") {\n return object.name;\n }\n\n if (object.type === \"JSXNamespacedName\") {\n return object.namespace.name + \":\" + object.name.name;\n }\n\n if (object.type === \"JSXMemberExpression\") {\n return (\n getQualifiedJSXName(object.object) +\n \".\" +\n getQualifiedJSXName(object.property)\n );\n }\n\n // istanbul ignore next\n // @ts-expect-error - object is 'never'\n throw new Error(\"Node had unexpected type: \" + object.type);\n}\n\nexport interface IJSXParserMixin {\n jsxParseOpeningElementAfterName(\n node: N.JSXOpeningElement,\n ): N.JSXOpeningElement;\n}\n\nexport type ClassWithMixin<\n T extends new (...args: any) => any,\n M extends object,\n> = T extends new (...args: infer P) => infer I\n ? new (...args: P) => I & M\n : never;\n\nexport default (superClass: typeof Parser) =>\n class JSXParserMixin extends superClass implements Parser, IJSXParserMixin {\n // Reads inline JSX contents token.\n\n jsxReadToken(): void {\n let out = \"\";\n let chunkStart = this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(\n JsxErrors.UnterminatedJsxContent,\n this.state.startLoc,\n );\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n\n switch (ch) {\n case charCodes.lessThan:\n case charCodes.leftCurlyBrace:\n if (this.state.pos === this.state.start) {\n if (ch === charCodes.lessThan && this.state.canStartJSXElement) {\n ++this.state.pos;\n this.finishToken(tt.jsxTagStart);\n } else {\n super.getTokenFromCode(ch);\n }\n return;\n }\n out += this.input.slice(chunkStart, this.state.pos);\n this.finishToken(tt.jsxText, out);\n return;\n\n case charCodes.ampersand:\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n break;\n\n case charCodes.greaterThan:\n case charCodes.rightCurlyBrace:\n if (process.env.BABEL_8_BREAKING) {\n this.raise(JsxErrors.UnexpectedToken, this.state.curPosition(), {\n unexpected: this.input[this.state.pos],\n HTMLEntity:\n ch === charCodes.rightCurlyBrace ? \"}\" : \">\",\n });\n }\n /* falls through */\n\n default:\n if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(true);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n }\n }\n\n jsxReadNewLine(normalizeCRLF: boolean): string {\n const ch = this.input.charCodeAt(this.state.pos);\n let out;\n ++this.state.pos;\n if (\n ch === charCodes.carriageReturn &&\n this.input.charCodeAt(this.state.pos) === charCodes.lineFeed\n ) {\n ++this.state.pos;\n out = normalizeCRLF ? \"\\n\" : \"\\r\\n\";\n } else {\n out = String.fromCharCode(ch);\n }\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n\n return out;\n }\n\n jsxReadString(quote: number): void {\n let out = \"\";\n let chunkStart = ++this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(Errors.UnterminatedString, this.state.startLoc);\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n if (ch === quote) break;\n if (ch === charCodes.ampersand) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(false);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n out += this.input.slice(chunkStart, this.state.pos++);\n this.finishToken(tt.string, out);\n }\n\n jsxReadEntity(): string {\n const startPos = ++this.state.pos;\n if (this.codePointAtPos(this.state.pos) === charCodes.numberSign) {\n ++this.state.pos;\n\n let radix = 10;\n if (this.codePointAtPos(this.state.pos) === charCodes.lowercaseX) {\n radix = 16;\n ++this.state.pos;\n }\n\n const codePoint = this.readInt(\n radix,\n /* len */ undefined,\n /* forceLen */ false,\n /* allowNumSeparator */ \"bail\",\n );\n if (\n codePoint !== null &&\n this.codePointAtPos(this.state.pos) === charCodes.semicolon\n ) {\n ++this.state.pos;\n return String.fromCodePoint(codePoint);\n }\n } else {\n let count = 0;\n let semi = false;\n while (\n count++ < 10 &&\n this.state.pos < this.length &&\n !(semi = this.codePointAtPos(this.state.pos) === charCodes.semicolon)\n ) {\n ++this.state.pos;\n }\n\n if (semi) {\n const desc = this.input.slice(startPos, this.state.pos);\n const entity = XHTMLEntities[desc];\n ++this.state.pos;\n\n if (entity) {\n return entity;\n }\n }\n }\n\n // Not a valid entity\n this.state.pos = startPos;\n return \"&\";\n }\n\n // Read a JSX identifier (valid tag or attribute name).\n //\n // Optimized version since JSX identifiers can\"t contain\n // escape characters and so can be read as single slice.\n // Also assumes that first character was already checked\n // by isIdentifierStart in readToken.\n\n jsxReadWord(): void {\n let ch;\n const start = this.state.pos;\n do {\n ch = this.input.charCodeAt(++this.state.pos);\n } while (isIdentifierChar(ch) || ch === charCodes.dash);\n this.finishToken(tt.jsxName, this.input.slice(start, this.state.pos));\n }\n\n // Parse next token as JSX identifier\n\n jsxParseIdentifier(): N.JSXIdentifier {\n const node = this.startNode();\n if (this.match(tt.jsxName)) {\n node.name = this.state.value;\n } else if (tokenIsKeyword(this.state.type)) {\n node.name = tokenLabelName(this.state.type);\n } else {\n this.unexpected();\n }\n this.next();\n return this.finishNode(node, \"JSXIdentifier\");\n }\n\n // Parse namespaced identifier.\n\n jsxParseNamespacedName(): N.JSXNamespacedName | N.JSXIdentifier {\n const startLoc = this.state.startLoc;\n const name = this.jsxParseIdentifier();\n if (!this.eat(tt.colon)) return name;\n\n const node = this.startNodeAt(startLoc);\n node.namespace = name;\n node.name = this.jsxParseIdentifier();\n return this.finishNode(node, \"JSXNamespacedName\");\n }\n\n // Parses element name in any form - namespaced, member\n // or single identifier.\n\n jsxParseElementName():\n | N.JSXIdentifier\n | N.JSXNamespacedName\n | N.JSXMemberExpression {\n const startLoc = this.state.startLoc;\n let node: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression =\n this.jsxParseNamespacedName();\n if (node.type === \"JSXNamespacedName\") {\n return node;\n }\n while (this.eat(tt.dot)) {\n const newNode = this.startNodeAt(startLoc);\n newNode.object = node;\n newNode.property = this.jsxParseIdentifier();\n node = this.finishNode(newNode, \"JSXMemberExpression\");\n }\n return node;\n }\n\n // Parses any type of JSX attribute value.\n\n jsxParseAttributeValue():\n | N.JSXExpressionContainer\n | N.JSXElement\n | N.StringLiteral {\n let node;\n switch (this.state.type) {\n case tt.braceL:\n node = this.startNode();\n this.setContext(tc.brace);\n this.next();\n node = this.jsxParseExpressionContainer(node, tc.j_oTag);\n if (node.expression.type === \"JSXEmptyExpression\") {\n this.raise(JsxErrors.AttributeIsEmpty, node);\n }\n return node;\n\n case tt.jsxTagStart:\n case tt.string:\n return this.parseExprAtom() as N.JSXElement | N.StringLiteral;\n\n default:\n throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc);\n }\n }\n\n // JSXEmptyExpression is unique type since it doesn't actually parse anything,\n // and so it should start at the end of last read token (left brace) and finish\n // at the beginning of the next one (right brace).\n\n jsxParseEmptyExpression(): N.JSXEmptyExpression {\n const node = this.startNodeAt(this.state.lastTokEndLoc);\n return this.finishNodeAt(node, \"JSXEmptyExpression\", this.state.startLoc);\n }\n\n // Parse JSX spread child\n\n jsxParseSpreadChild(node: Undone): N.JSXSpreadChild {\n this.next(); // ellipsis\n node.expression = this.parseExpression();\n this.setContext(tc.j_expr);\n this.state.canStartJSXElement = true;\n this.expect(tt.braceR);\n\n return this.finishNode(node, \"JSXSpreadChild\");\n }\n\n // Parses JSX expression enclosed into curly brackets.\n\n jsxParseExpressionContainer(\n node: Undone,\n previousContext: TokContext,\n ): N.JSXExpressionContainer {\n if (this.match(tt.braceR)) {\n node.expression = this.jsxParseEmptyExpression();\n } else {\n const expression = this.parseExpression();\n\n if (process.env.BABEL_8_BREAKING) {\n if (\n expression.type === \"SequenceExpression\" &&\n !expression.extra?.parenthesized\n ) {\n this.raise(\n JsxErrors.UnexpectedSequenceExpression,\n expression.expressions[1],\n );\n }\n }\n\n node.expression = expression;\n }\n this.setContext(previousContext);\n this.state.canStartJSXElement = true;\n this.expect(tt.braceR);\n\n return this.finishNode(node, \"JSXExpressionContainer\");\n }\n\n // Parses following JSX attribute name-value pair.\n\n jsxParseAttribute(): N.JSXAttribute | N.JSXSpreadAttribute {\n const node = this.startNode();\n if (this.match(tt.braceL)) {\n this.setContext(tc.brace);\n this.next();\n this.expect(tt.ellipsis);\n node.argument = this.parseMaybeAssignAllowIn();\n this.setContext(tc.j_oTag);\n this.state.canStartJSXElement = true;\n this.expect(tt.braceR);\n return this.finishNode(node, \"JSXSpreadAttribute\");\n }\n node.name = this.jsxParseNamespacedName();\n node.value = this.eat(tt.eq) ? this.jsxParseAttributeValue() : null;\n return this.finishNode(node, \"JSXAttribute\");\n }\n\n // Parses JSX opening tag starting after \"<\".\n\n jsxParseOpeningElementAt(\n startLoc: Position,\n ): N.JSXOpeningElement | N.JSXOpeningFragment {\n const node = this.startNodeAt(\n startLoc,\n );\n if (this.eat(tt.jsxTagEnd)) {\n return this.finishNode(node, \"JSXOpeningFragment\");\n }\n node.name = this.jsxParseElementName();\n return this.jsxParseOpeningElementAfterName(\n node as Undone,\n );\n }\n\n jsxParseOpeningElementAfterName(\n node: Undone,\n ): N.JSXOpeningElement {\n const attributes: (N.JSXAttribute | N.JSXSpreadAttribute)[] = [];\n while (!this.match(tt.slash) && !this.match(tt.jsxTagEnd)) {\n attributes.push(this.jsxParseAttribute());\n }\n node.attributes = attributes;\n node.selfClosing = this.eat(tt.slash);\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, \"JSXOpeningElement\");\n }\n\n // Parses JSX closing tag starting after \"(\n startLoc,\n );\n if (this.eat(tt.jsxTagEnd)) {\n return this.finishNode(node, \"JSXClosingFragment\");\n }\n node.name = this.jsxParseElementName();\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, \"JSXClosingElement\");\n }\n\n // Parses entire JSX element, including it\"s opening tag\n // (starting after \"<\"), attributes, contents and closing tag.\n\n jsxParseElementAt(startLoc: Position): N.JSXElement | N.JSXFragment {\n const node = this.startNodeAt(startLoc);\n const children = [];\n const openingElement = this.jsxParseOpeningElementAt(startLoc);\n let closingElement = null;\n\n if (!openingElement.selfClosing) {\n contents: for (;;) {\n switch (this.state.type) {\n case tt.jsxTagStart:\n startLoc = this.state.startLoc;\n this.next();\n if (this.eat(tt.slash)) {\n closingElement = this.jsxParseClosingElementAt(startLoc);\n break contents;\n }\n children.push(this.jsxParseElementAt(startLoc));\n break;\n\n case tt.jsxText:\n children.push(this.parseLiteral(this.state.value, \"JSXText\"));\n break;\n\n case tt.braceL: {\n const node = this.startNode<\n N.JSXSpreadChild | N.JSXExpressionContainer\n >();\n this.setContext(tc.brace);\n this.next();\n if (this.match(tt.ellipsis)) {\n children.push(this.jsxParseSpreadChild(node));\n } else {\n children.push(\n this.jsxParseExpressionContainer(node, tc.j_expr),\n );\n }\n\n break;\n }\n // istanbul ignore next - should never happen\n default:\n this.unexpected();\n }\n }\n\n if (\n isFragment(openingElement) &&\n !isFragment(closingElement) &&\n closingElement !== null\n ) {\n this.raise(JsxErrors.MissingClosingTagFragment, closingElement);\n } else if (!isFragment(openingElement) && isFragment(closingElement)) {\n this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n openingTagName: getQualifiedJSXName(openingElement.name),\n });\n } else if (!isFragment(openingElement) && !isFragment(closingElement)) {\n if (\n getQualifiedJSXName(closingElement.name) !==\n getQualifiedJSXName(openingElement.name)\n ) {\n this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n openingTagName: getQualifiedJSXName(openingElement.name),\n });\n }\n }\n }\n\n if (isFragment(openingElement)) {\n node.openingFragment = openingElement;\n node.closingFragment = closingElement;\n } else {\n node.openingElement = openingElement;\n node.closingElement = closingElement;\n }\n node.children = children;\n if (this.match(tt.lt)) {\n throw this.raise(\n JsxErrors.UnwrappedAdjacentJSXElements,\n this.state.startLoc,\n );\n }\n\n return isFragment(openingElement)\n ? this.finishNode(node, \"JSXFragment\")\n : this.finishNode(node, \"JSXElement\");\n }\n\n // Parses entire JSX element from current position.\n\n jsxParseElement(): N.JSXElement | N.JSXFragment {\n const startLoc = this.state.startLoc;\n this.next();\n return this.jsxParseElementAt(startLoc);\n }\n\n setContext(newContext: TokContext) {\n const { context } = this.state;\n context[context.length - 1] = newContext;\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n parseExprAtom(refExpressionErrors?: ExpressionErrors | null): N.Expression {\n if (this.match(tt.jsxTagStart)) {\n return this.jsxParseElement();\n } else if (\n this.match(tt.lt) &&\n this.input.charCodeAt(this.state.pos) !== charCodes.exclamationMark\n ) {\n // In case we encounter an lt token here it will always be the start of\n // jsx as the lt sign is not allowed in places that expect an expression\n this.replaceToken(tt.jsxTagStart);\n return this.jsxParseElement();\n } else {\n return super.parseExprAtom(refExpressionErrors);\n }\n }\n\n skipSpace() {\n const curContext = this.curContext();\n if (!curContext.preserveSpace) super.skipSpace();\n }\n\n getTokenFromCode(code: number): void {\n const context = this.curContext();\n\n if (context === tc.j_expr) {\n this.jsxReadToken();\n return;\n }\n\n if (context === tc.j_oTag || context === tc.j_cTag) {\n if (isIdentifierStart(code)) {\n this.jsxReadWord();\n return;\n }\n\n if (code === charCodes.greaterThan) {\n ++this.state.pos;\n this.finishToken(tt.jsxTagEnd);\n return;\n }\n\n if (\n (code === charCodes.quotationMark || code === charCodes.apostrophe) &&\n context === tc.j_oTag\n ) {\n this.jsxReadString(code);\n return;\n }\n }\n\n if (\n code === charCodes.lessThan &&\n this.state.canStartJSXElement &&\n this.input.charCodeAt(this.state.pos + 1) !== charCodes.exclamationMark\n ) {\n ++this.state.pos;\n this.finishToken(tt.jsxTagStart);\n return;\n }\n\n super.getTokenFromCode(code);\n }\n\n updateContext(prevType: TokenType): void {\n const { context, type } = this.state;\n if (type === tt.slash && prevType === tt.jsxTagStart) {\n // do not consider JSX expr -> JSX open tag -> ... anymore\n // reconsider as closing tag context\n context.splice(-2, 2, tc.j_cTag);\n this.state.canStartJSXElement = false;\n } else if (type === tt.jsxTagStart) {\n // start opening tag context\n context.push(tc.j_oTag);\n } else if (type === tt.jsxTagEnd) {\n const out = context[context.length - 1];\n if ((out === tc.j_oTag && prevType === tt.slash) || out === tc.j_cTag) {\n context.pop();\n this.state.canStartJSXElement =\n context[context.length - 1] === tc.j_expr;\n } else {\n this.setContext(tc.j_expr);\n this.state.canStartJSXElement = true;\n }\n } else {\n this.state.canStartJSXElement = tokenComesBeforeExpression(type);\n }\n }\n };\n","import type { Position } from \"../../util/location.ts\";\nimport ScopeHandler, { NameType, Scope } from \"../../util/scope.ts\";\nimport { BindingFlag, ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type * as N from \"../../types.ts\";\nimport { Errors } from \"../../parse-error.ts\";\n\nconst enum TsNameType {\n Types = 1 << 0,\n // enums (which are also in .types)\n Enums = 1 << 1,\n // const enums (which are also in .enums and .types)\n ConstEnums = 1 << 2,\n // classes (which are also in .lexical) and interface (which are also in .types)\n Classes = 1 << 3,\n // namespaces and ambient functions (or classes) are too difficult to track,\n // especially without type analysis.\n // We need to track them anyway, to avoid \"X is not defined\" errors\n // when exporting them.\n ExportOnlyBindings = 1 << 4,\n}\n\nclass TypeScriptScope extends Scope {\n tsNames: Map = new Map();\n}\n\n// See https://github.com/babel/babel/pull/9766#discussion_r268920730 for an\n// explanation of how typescript handles scope.\n\nexport default class TypeScriptScopeHandler extends ScopeHandler {\n importsStack: Set[] = [];\n\n createScope(flags: ScopeFlag): TypeScriptScope {\n this.importsStack.push(new Set()); // Always keep the top-level scope for export checks.\n\n return new TypeScriptScope(flags);\n }\n\n enter(flags: ScopeFlag): void {\n if (flags === ScopeFlag.TS_MODULE) {\n this.importsStack.push(new Set());\n }\n\n super.enter(flags);\n }\n\n exit() {\n const flags = super.exit();\n\n if (flags === ScopeFlag.TS_MODULE) {\n this.importsStack.pop();\n }\n\n return flags;\n }\n\n hasImport(name: string, allowShadow?: boolean) {\n const len = this.importsStack.length;\n if (this.importsStack[len - 1].has(name)) {\n return true;\n }\n if (!allowShadow && len > 1) {\n for (let i = 0; i < len - 1; i++) {\n if (this.importsStack[i].has(name)) return true;\n }\n }\n return false;\n }\n\n declareName(name: string, bindingType: BindingFlag, loc: Position) {\n if (bindingType & BindingFlag.FLAG_TS_IMPORT) {\n if (this.hasImport(name, true)) {\n this.parser.raise(Errors.VarRedeclaration, loc, {\n identifierName: name,\n });\n }\n this.importsStack[this.importsStack.length - 1].add(name);\n return;\n }\n\n const scope = this.currentScope();\n let type = scope.tsNames.get(name) || 0;\n\n if (bindingType & BindingFlag.FLAG_TS_EXPORT_ONLY) {\n this.maybeExportDefined(scope, name);\n scope.tsNames.set(name, type | TsNameType.ExportOnlyBindings);\n return;\n }\n\n super.declareName(name, bindingType, loc);\n\n if (bindingType & BindingFlag.KIND_TYPE) {\n if (!(bindingType & BindingFlag.KIND_VALUE)) {\n // \"Value\" bindings have already been registered by the superclass.\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n }\n type = type | TsNameType.Types;\n }\n if (bindingType & BindingFlag.FLAG_TS_ENUM) {\n type = type | TsNameType.Enums;\n }\n if (bindingType & BindingFlag.FLAG_TS_CONST_ENUM) {\n type = type | TsNameType.ConstEnums;\n }\n if (bindingType & BindingFlag.FLAG_CLASS) {\n type = type | TsNameType.Classes;\n }\n if (type) scope.tsNames.set(name, type);\n }\n\n isRedeclaredInScope(\n scope: TypeScriptScope,\n name: string,\n bindingType: BindingFlag,\n ): boolean {\n const type = scope.tsNames.get(name);\n if ((type & TsNameType.Enums) > 0) {\n if (bindingType & BindingFlag.FLAG_TS_ENUM) {\n // Enums can be merged with other enums if they are both\n // const or both non-const.\n const isConst = !!(bindingType & BindingFlag.FLAG_TS_CONST_ENUM);\n const wasConst = (type & TsNameType.ConstEnums) > 0;\n return isConst !== wasConst;\n }\n return true;\n }\n if (\n bindingType & BindingFlag.FLAG_CLASS &&\n (type & TsNameType.Classes) > 0\n ) {\n if (scope.names.get(name) & NameType.Lexical) {\n // Classes can be merged with interfaces\n return !!(bindingType & BindingFlag.KIND_VALUE);\n } else {\n // Interface can be merged with other classes or interfaces\n return false;\n }\n }\n if (bindingType & BindingFlag.KIND_TYPE && (type & TsNameType.Types) > 0) {\n return true;\n }\n\n return super.isRedeclaredInScope(scope, name, bindingType);\n }\n\n checkLocalExport(id: N.Identifier) {\n const { name } = id;\n\n if (this.hasImport(name)) return;\n\n const len = this.scopeStack.length;\n for (let i = len - 1; i >= 0; i--) {\n const scope = this.scopeStack[i];\n const type = scope.tsNames.get(name);\n if (\n (type & TsNameType.Types) > 0 ||\n (type & TsNameType.ExportOnlyBindings) > 0\n ) {\n return;\n }\n }\n\n super.checkLocalExport(id);\n }\n}\n","// ProductionParameterHandler is a stack fashioned production parameter tracker\n// https://tc39.es/ecma262/#sec-grammar-notation\n// The tracked parameters are defined above.\n//\n// Whenever [+Await]/[+Yield] appears in the right-hand sides of a production,\n// we must enter a new tracking stack. For example when parsing\n//\n// AsyncFunctionDeclaration [Yield, Await]:\n// async [no LineTerminator here] function BindingIdentifier[?Yield, ?Await]\n// ( FormalParameters[~Yield, +Await] ) { AsyncFunctionBody }\n//\n// we must follow such process:\n//\n// 1. parse async keyword\n// 2. parse function keyword\n// 3. parse bindingIdentifier <= inherit current parameters: [?Await]\n// 4. enter new stack with (PARAM_AWAIT)\n// 5. parse formal parameters <= must have [Await] parameter [+Await]\n// 6. parse function body\n// 7. exit current stack\n\nexport const enum ParamKind {\n // Initial Parameter flags\n PARAM = 0b0000,\n // track [Yield] production parameter\n PARAM_YIELD = 0b0001,\n // track [Await] production parameter\n PARAM_AWAIT = 0b0010,\n // track [Return] production parameter\n PARAM_RETURN = 0b0100,\n // track [In] production parameter\n PARAM_IN = 0b1000,\n}\n\n// todo(flow->ts) - check if more granular type can be used,\n// type below is not good because things like PARAM_AWAIT|PARAM_YIELD are not included\n// export type ParamKind =\n// | typeof PARAM\n// | typeof PARAM_AWAIT\n// | typeof PARAM_IN\n// | typeof PARAM_RETURN\n// | typeof PARAM_YIELD;\n\nexport default class ProductionParameterHandler {\n stacks: Array = [];\n enter(flags: ParamKind) {\n this.stacks.push(flags);\n }\n\n exit() {\n this.stacks.pop();\n }\n\n currentFlags(): ParamKind {\n return this.stacks[this.stacks.length - 1];\n }\n\n get hasAwait(): boolean {\n return (this.currentFlags() & ParamKind.PARAM_AWAIT) > 0;\n }\n\n get hasYield(): boolean {\n return (this.currentFlags() & ParamKind.PARAM_YIELD) > 0;\n }\n\n get hasReturn(): boolean {\n return (this.currentFlags() & ParamKind.PARAM_RETURN) > 0;\n }\n\n get hasIn(): boolean {\n return (this.currentFlags() & ParamKind.PARAM_IN) > 0;\n }\n}\n\nexport function functionFlags(\n isAsync: boolean,\n isGenerator: boolean,\n): ParamKind {\n return (\n (isAsync ? ParamKind.PARAM_AWAIT : 0) |\n (isGenerator ? ParamKind.PARAM_YIELD : 0)\n );\n}\n","import type { OptionFlags, Options } from \"../options.ts\";\nimport type State from \"../tokenizer/state.ts\";\nimport type { PluginsMap } from \"./index.ts\";\nimport type ScopeHandler from \"../util/scope.ts\";\nimport type ExpressionScopeHandler from \"../util/expression-scope.ts\";\nimport type ClassScopeHandler from \"../util/class-scope.ts\";\nimport type ProductionParameterHandler from \"../util/production-parameter.ts\";\nimport type {\n ParserPluginWithOptions,\n PluginConfig,\n PluginOptions,\n} from \"../typings.ts\";\nimport type * as N from \"../types.ts\";\n\nexport default class BaseParser {\n // Properties set by constructor in index.js\n declare options: Options;\n declare optionFlags: OptionFlags;\n declare inModule: boolean;\n declare scope: ScopeHandler;\n declare classScope: ClassScopeHandler;\n declare prodParam: ProductionParameterHandler;\n declare expressionScope: ExpressionScopeHandler;\n declare plugins: PluginsMap;\n declare filename: string | undefined | null;\n declare startIndex: number;\n // Names of exports store. `default` is stored as a name for both\n // `export default foo;` and `export { foo as default };`.\n declare exportedIdentifiers: Set;\n sawUnambiguousESM: boolean = false;\n ambiguousScriptDifferentAst: boolean = false;\n\n // Initialized by Tokenizer\n declare state: State;\n // input and length are not in state as they are constant and we do\n // not want to ever copy them, which happens if state gets cloned\n declare input: string;\n declare length: number;\n // Comment store for Program.comments\n declare comments: Array;\n\n sourceToOffsetPos(sourcePos: number) {\n return sourcePos + this.startIndex;\n }\n\n offsetToSourcePos(offsetPos: number) {\n return offsetPos - this.startIndex;\n }\n\n // This method accepts either a string (plugin name) or an array pair\n // (plugin name and options object). If an options object is given,\n // then each value is non-recursively checked for identity with that\n // plugin’s actual option value.\n hasPlugin(pluginConfig: PluginConfig): boolean {\n if (typeof pluginConfig === \"string\") {\n return this.plugins.has(pluginConfig);\n } else {\n const [pluginName, pluginOptions] = pluginConfig;\n if (!this.hasPlugin(pluginName)) {\n return false;\n }\n const actualOptions = this.plugins.get(pluginName);\n for (const key of Object.keys(\n pluginOptions,\n ) as (keyof typeof pluginOptions)[]) {\n if (actualOptions?.[key] !== pluginOptions[key]) {\n return false;\n }\n }\n return true;\n }\n }\n\n getPluginOption<\n PluginName extends ParserPluginWithOptions[0],\n OptionName extends keyof PluginOptions,\n >(plugin: PluginName, name: OptionName) {\n return (this.plugins.get(plugin) as null | PluginOptions)?.[\n name\n ];\n }\n}\n","/*:: declare var invariant; */\n\nimport BaseParser from \"./base.ts\";\nimport type { Comment, Node } from \"../types.ts\";\nimport * as charCodes from \"charcodes\";\nimport type { Undone } from \"./node.ts\";\n\n/**\n * A whitespace token containing comments\n */\nexport type CommentWhitespace = {\n /**\n * the start of the whitespace token.\n */\n start: number;\n /**\n * the end of the whitespace token.\n */\n end: number;\n /**\n * the containing comments\n */\n comments: Array;\n /**\n * the immediately preceding AST node of the whitespace token\n */\n leadingNode: Node | null;\n /**\n * the immediately following AST node of the whitespace token\n */\n trailingNode: Node | null;\n /**\n * the innermost AST node containing the whitespace with minimal size (|end - start|)\n */\n containingNode: Node | null;\n};\n\n/**\n * Merge comments with node's trailingComments or assign comments to be\n * trailingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setTrailingComments(node: Undone, comments: Array) {\n if (node.trailingComments === undefined) {\n node.trailingComments = comments;\n } else {\n node.trailingComments.unshift(...comments);\n }\n}\n\n/**\n * Merge comments with node's leadingComments or assign comments to be\n * leadingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setLeadingComments(node: Undone, comments: Array) {\n if (node.leadingComments === undefined) {\n node.leadingComments = comments;\n } else {\n node.leadingComments.unshift(...comments);\n }\n}\n\n/**\n * Merge comments with node's innerComments or assign comments to be\n * innerComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nexport function setInnerComments(\n node: Undone,\n comments?: Array,\n) {\n if (node.innerComments === undefined) {\n node.innerComments = comments;\n } else {\n node.innerComments.unshift(...comments);\n }\n}\n\n/**\n * Given node and elements array, if elements has non-null element,\n * merge comments to its trailingComments, otherwise merge comments\n * to node's innerComments\n */\nfunction adjustInnerComments(\n node: Undone,\n elements: Array,\n commentWS: CommentWhitespace,\n) {\n let lastElement = null;\n let i = elements.length;\n while (lastElement === null && i > 0) {\n lastElement = elements[--i];\n }\n if (lastElement === null || lastElement.start > commentWS.start) {\n setInnerComments(node, commentWS.comments);\n } else {\n setTrailingComments(lastElement, commentWS.comments);\n }\n}\n\nexport default class CommentsParser extends BaseParser {\n addComment(comment: Comment): void {\n if (this.filename) comment.loc.filename = this.filename;\n const { commentsLen } = this.state;\n if (this.comments.length !== commentsLen) {\n this.comments.length = commentsLen;\n }\n this.comments.push(comment);\n this.state.commentsLen++;\n }\n\n /**\n * Given a newly created AST node _n_, attach _n_ to a comment whitespace _w_ if applicable\n * {@see {@link CommentWhitespace}}\n */\n processComment(node: Node): void {\n const { commentStack } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n const lastCommentWS = commentStack[i];\n\n if (lastCommentWS.start === node.end) {\n lastCommentWS.leadingNode = node;\n i--;\n }\n\n const { start: nodeStart } = node;\n // invariant: for all 0 <= j <= i, let c = commentStack[j], c must satisfy c.end < node.end\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n if (commentEnd > nodeStart) {\n // by definition of commentWhiteSpace, this implies commentWS.start > nodeStart\n // so node can be a containingNode candidate. At this time we can finalize the comment\n // whitespace, because\n // 1) its leadingNode or trailingNode, if exists, will not change\n // 2) its containingNode have been assigned and will not change because it is the\n // innermost minimal-sized AST node\n commentWS.containingNode = node;\n this.finalizeComment(commentWS);\n commentStack.splice(i, 1);\n } else {\n if (commentEnd === nodeStart) {\n commentWS.trailingNode = node;\n }\n // stop the loop when commentEnd <= nodeStart\n break;\n }\n }\n }\n\n /**\n * Assign the comments of comment whitespaces to related AST nodes.\n * Also adjust innerComments following trailing comma.\n */\n finalizeComment(commentWS: CommentWhitespace) {\n const { comments } = commentWS;\n if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n if (commentWS.leadingNode !== null) {\n setTrailingComments(commentWS.leadingNode, comments);\n }\n if (commentWS.trailingNode !== null) {\n setLeadingComments(commentWS.trailingNode, comments);\n }\n } else {\n /*:: invariant(commentWS.containingNode !== null) */\n const { containingNode: node, start: commentStart } = commentWS;\n if (\n this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) ===\n charCodes.comma\n ) {\n // If a commentWhitespace follows a comma and the containingNode allows\n // list structures with trailing comma, merge it to the trailingComment\n // of the last non-null list element\n switch (node.type) {\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n case \"RecordExpression\":\n adjustInnerComments(node, node.properties, commentWS);\n break;\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n adjustInnerComments(node, node.arguments, commentWS);\n break;\n case \"ImportExpression\":\n adjustInnerComments(\n node,\n [node.source, node.options ?? null],\n commentWS,\n );\n break;\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ArrowFunctionExpression\":\n case \"ObjectMethod\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n adjustInnerComments(node, node.params, commentWS);\n break;\n case \"ArrayExpression\":\n case \"ArrayPattern\":\n case \"TupleExpression\":\n adjustInnerComments(node, node.elements, commentWS);\n break;\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n adjustInnerComments(node, node.specifiers, commentWS);\n break;\n case \"TSEnumDeclaration\":\n if (!process.env.BABEL_8_BREAKING) {\n adjustInnerComments(node, node.members, commentWS);\n } else {\n setInnerComments(node, comments);\n }\n break;\n case \"TSEnumBody\":\n adjustInnerComments(node, node.members, commentWS);\n break;\n default: {\n setInnerComments(node, comments);\n }\n }\n } else {\n setInnerComments(node, comments);\n }\n }\n }\n\n /**\n * Drains remaining commentStack and applies finalizeComment\n * to each comment whitespace. Used only in parseExpression\n * where the top level AST node is _not_ Program\n * {@see {@link CommentsParser#finalizeComment}}\n */\n finalizeRemainingComments() {\n const { commentStack } = this.state;\n for (let i = commentStack.length - 1; i >= 0; i--) {\n this.finalizeComment(commentStack[i]);\n }\n this.state.commentStack = [];\n }\n\n /* eslint-disable no-irregular-whitespace */\n /**\n * Reset previous node trailing comments. Used in object / class\n * property parsing. We parse `async`, `static`, `set` and `get`\n * as an identifier but may reinterpret it into an async/static/accessor\n * method later. In this case the identifier is not part of the AST and we\n * should sync the knowledge to commentStacks\n *\n * For example, when parsing\n * ```\n * async /* 1 *​/ function f() {}\n * ```\n * the comment whitespace `/* 1 *​/` has leading node Identifier(async). When\n * we see the function token, we create a Function node and mark `/* 1 *​/` as\n * inner comments. So `/* 1 *​/` should be detached from the Identifier node.\n *\n * @param node the last finished AST node _before_ current token\n */\n /* eslint-enable no-irregular-whitespace */\n resetPreviousNodeTrailingComments(node: Node) {\n const { commentStack } = this.state;\n const { length } = commentStack;\n if (length === 0) return;\n const commentWS = commentStack[length - 1];\n if (commentWS.leadingNode === node) {\n commentWS.leadingNode = null;\n }\n }\n\n /**\n * Attach a node to the comment whitespaces right before/after\n * the given range.\n *\n * This is used to properly attach comments around parenthesized\n * expressions as leading/trailing comments of the inner expression.\n */\n takeSurroundingComments(node: Node, start: number, end: number) {\n const { commentStack } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n const commentStart = commentWS.start;\n\n if (commentStart === end) {\n commentWS.leadingNode = node;\n } else if (commentEnd === start) {\n commentWS.trailingNode = node;\n } else if (commentEnd < start) {\n break;\n }\n }\n }\n}\n","import type { Options } from \"../options.ts\";\nimport type { CommentWhitespace } from \"../parser/comments\";\nimport { Position } from \"../util/location.ts\";\n\nimport { types as ct, type TokContext } from \"./context.ts\";\nimport { tt, type TokenType } from \"./types.ts\";\nimport type { Errors } from \"../parse-error.ts\";\nimport type { ParseError } from \"../parse-error.ts\";\n\nexport type DeferredStrictError =\n | typeof Errors.StrictNumericEscape\n | typeof Errors.StrictOctalLiteral;\n\ntype TopicContextState = {\n // When a topic binding has been currently established,\n // then this is 1. Otherwise, it is 0. This is forwards compatible\n // with a future plugin for multiple lexical topics.\n maxNumOfResolvableTopics: number;\n // When a topic binding has been currently established, and if that binding\n // has been used as a topic reference `#`, then this is 0. Otherwise, it is\n // `null`. This is forwards compatible with a future plugin for multiple\n // lexical topics.\n maxTopicIndex: null | 0;\n};\n\nexport const enum LoopLabelKind {\n Loop = 1,\n Switch = 2,\n}\n\ndeclare const bit: import(\"../../../../scripts/babel-plugin-bit-decorator/types.d.ts\").BitDecorator;\n\nexport default class State {\n @bit.storage flags: number;\n\n @bit accessor strict = false;\n\n startIndex: number;\n curLine: number;\n lineStart: number;\n\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n startLoc: Position;\n endLoc: Position;\n\n init({\n strictMode,\n sourceType,\n startIndex,\n startLine,\n startColumn,\n }: Options): void {\n this.strict =\n strictMode === false\n ? false\n : strictMode === true\n ? true\n : sourceType === \"module\";\n\n this.startIndex = startIndex;\n this.curLine = startLine;\n this.lineStart = -startColumn;\n this.startLoc = this.endLoc = new Position(\n startLine,\n startColumn,\n startIndex,\n );\n }\n\n errors: ParseError[] = [];\n\n // Used to signify the start of a potential arrow function\n potentialArrowAt: number = -1;\n\n // Used to signify the start of an expression which looks like a\n // typed arrow function, but it isn't\n // e.g. a ? (b) : c => d\n // ^\n noArrowAt: number[] = [];\n\n // Used to signify the start of an expression whose params, if it looks like\n // an arrow function, shouldn't be converted to assignable nodes.\n // This is used to defer the validation of typed arrow functions inside\n // conditional expressions.\n // e.g. a ? (b) : c => d\n // ^\n noArrowParamsConversionAt: number[] = [];\n\n // Flags to track\n @bit accessor maybeInArrowParameters = false;\n @bit accessor inType = false;\n @bit accessor noAnonFunctionType = false;\n @bit accessor hasFlowComment = false;\n @bit accessor isAmbientContext = false;\n @bit accessor inAbstractClass = false;\n @bit accessor inDisallowConditionalTypesContext = false;\n\n // For the Hack-style pipelines plugin\n topicContext: TopicContextState = {\n maxNumOfResolvableTopics: 0,\n maxTopicIndex: null,\n };\n\n // For the F#-style pipelines plugin\n @bit accessor soloAwait = false;\n @bit accessor inFSharpPipelineDirectBody = false;\n\n // Labels in scope.\n labels: Array<{\n kind: LoopLabelKind;\n name?: string | null;\n statementStart?: number;\n }> = [];\n\n commentsLen = 0;\n // Comment attachment store\n commentStack: Array = [];\n\n // The current position of the tokenizer in the input.\n pos: number = 0;\n\n // Properties of the current token:\n // Its type\n type: TokenType = tt.eof;\n\n // For tokens that include more information than their type, the value\n value: any = null;\n\n // Its start and end offset\n start: number = 0;\n end: number = 0;\n\n // Position information for the previous token\n // this is initialized when generating the second token.\n lastTokEndLoc: Position = null;\n // this is initialized when generating the second token.\n lastTokStartLoc: Position = null;\n\n // The context stack is used to track whether the apostrophe \"`\" starts\n // or ends a string template\n context: Array = [ct.brace];\n\n // Used to track whether a JSX element is allowed to form\n @bit accessor canStartJSXElement = true;\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n @bit accessor containsEsc = false;\n\n // Used to track invalid escape sequences in template literals,\n // that must be reported if the template is not tagged.\n firstInvalidTemplateEscapePos: null | Position = null;\n\n @bit accessor hasTopLevelAwait = false;\n\n // This property is used to track the following errors\n // - StrictNumericEscape\n // - StrictOctalLiteral\n //\n // in a literal that occurs prior to/immediately after a \"use strict\" directive.\n\n // todo(JLHwung): set strictErrors to null and avoid recording string errors\n // after a non-directive is parsed\n strictErrors: Map = new Map();\n\n // Tokens length in token store\n tokensLength: number = 0;\n\n /**\n * When we add a new property, we must manually update the `clone` method\n * @see State#clone\n */\n\n curPosition(): Position {\n return new Position(\n this.curLine,\n this.pos - this.lineStart,\n this.pos + this.startIndex,\n );\n }\n\n clone(): State {\n const state = new State();\n state.flags = this.flags;\n state.startIndex = this.startIndex;\n state.curLine = this.curLine;\n state.lineStart = this.lineStart;\n state.startLoc = this.startLoc;\n state.endLoc = this.endLoc;\n state.errors = this.errors.slice();\n state.potentialArrowAt = this.potentialArrowAt;\n state.noArrowAt = this.noArrowAt.slice();\n state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice();\n state.topicContext = this.topicContext;\n state.labels = this.labels.slice();\n state.commentsLen = this.commentsLen;\n state.commentStack = this.commentStack.slice();\n state.pos = this.pos;\n state.type = this.type;\n state.value = this.value;\n state.start = this.start;\n state.end = this.end;\n state.lastTokEndLoc = this.lastTokEndLoc;\n state.lastTokStartLoc = this.lastTokStartLoc;\n state.context = this.context.slice();\n state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos;\n state.strictErrors = this.strictErrors;\n state.tokensLength = this.tokensLength;\n\n return state;\n }\n}\n\nexport type LookaheadState = {\n pos: number;\n value: any;\n type: TokenType;\n start: number;\n end: number;\n context: TokContext[];\n startLoc: Position;\n lastTokEndLoc: Position;\n curLine: number;\n lineStart: number;\n curPosition: State[\"curPosition\"];\n /* Used only in readToken_mult_modulo */\n inType: boolean;\n // These boolean properties are not initialized in createLookaheadState()\n // instead they will only be set by the tokenizer\n containsEsc?: boolean;\n};\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set([\n charCodes.dot,\n charCodes.uppercaseB,\n charCodes.uppercaseE,\n charCodes.uppercaseO,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseB,\n charCodes.lowercaseE,\n charCodes.lowercaseO,\n ]),\n hex: new Set([\n charCodes.dot,\n charCodes.uppercaseX,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseX,\n ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n // 0 - 1\n bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n // 0 - 7\n oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n // 0 - 9\n dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n // 0 - 9, A - F, a - f,\n hex: (ch: number) =>\n (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n unterminated(\n initialPos: number,\n initialLineStart: number,\n initialCurLine: number,\n ): void;\n};\n\nexport function readStringContents(\n type: \"single\" | \"double\" | \"template\",\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n errors: StringContentsErrorHandlers,\n) {\n const initialPos = pos;\n const initialLineStart = lineStart;\n const initialCurLine = curLine;\n\n let out = \"\";\n let firstInvalidLoc = null;\n let chunkStart = pos;\n const { length } = input;\n for (;;) {\n if (pos >= length) {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n out += input.slice(chunkStart, pos);\n break;\n }\n const ch = input.charCodeAt(pos);\n if (isStringEnd(type, ch, input, pos)) {\n out += input.slice(chunkStart, pos);\n break;\n }\n if (ch === charCodes.backslash) {\n out += input.slice(chunkStart, pos);\n const res = readEscapedChar(\n input,\n pos,\n lineStart,\n curLine,\n type === \"template\",\n errors,\n );\n if (res.ch === null && !firstInvalidLoc) {\n firstInvalidLoc = { pos, lineStart, curLine };\n } else {\n out += res.ch;\n }\n ({ pos, lineStart, curLine } = res);\n chunkStart = pos;\n } else if (\n ch === charCodes.lineSeparator ||\n ch === charCodes.paragraphSeparator\n ) {\n ++pos;\n ++curLine;\n lineStart = pos;\n } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n if (type === \"template\") {\n out += input.slice(chunkStart, pos) + \"\\n\";\n ++pos;\n if (\n ch === charCodes.carriageReturn &&\n input.charCodeAt(pos) === charCodes.lineFeed\n ) {\n ++pos;\n }\n ++curLine;\n chunkStart = lineStart = pos;\n } else {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n }\n } else {\n ++pos;\n }\n }\n return process.env.BABEL_8_BREAKING\n ? { pos, str: out, firstInvalidLoc, lineStart, curLine }\n : {\n pos,\n str: out,\n firstInvalidLoc,\n lineStart,\n curLine,\n containsInvalid: !!firstInvalidLoc,\n };\n}\n\nfunction isStringEnd(\n type: \"single\" | \"double\" | \"template\",\n ch: number,\n input: string,\n pos: number,\n) {\n if (type === \"template\") {\n return (\n ch === charCodes.graveAccent ||\n (ch === charCodes.dollarSign &&\n input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n );\n }\n return (\n ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n CodePointErrorHandlers & {\n strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n };\n\nfunction readEscapedChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n inTemplate: boolean,\n errors: EscapedCharErrorHandlers,\n) {\n const throwOnInvalid = !inTemplate;\n pos++; // skip '\\'\n\n const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n const ch = input.charCodeAt(pos++);\n switch (ch) {\n case charCodes.lowercaseN:\n return res(\"\\n\");\n case charCodes.lowercaseR:\n return res(\"\\r\");\n case charCodes.lowercaseX: {\n let code;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 2,\n false,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCharCode(code));\n }\n case charCodes.lowercaseU: {\n let code;\n ({ code, pos } = readCodePoint(\n input,\n pos,\n lineStart,\n curLine,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCodePoint(code));\n }\n case charCodes.lowercaseT:\n return res(\"\\t\");\n case charCodes.lowercaseB:\n return res(\"\\b\");\n case charCodes.lowercaseV:\n return res(\"\\u000b\");\n case charCodes.lowercaseF:\n return res(\"\\f\");\n case charCodes.carriageReturn:\n if (input.charCodeAt(pos) === charCodes.lineFeed) {\n ++pos;\n }\n // fall through\n case charCodes.lineFeed:\n lineStart = pos;\n ++curLine;\n // fall through\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return res(\"\");\n case charCodes.digit8:\n case charCodes.digit9:\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(pos - 1, lineStart, curLine);\n }\n // fall through\n default:\n if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n const startPos = pos - 1;\n const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n\n let octalStr = match[0];\n\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n pos += octalStr.length - 1;\n const next = input.charCodeAt(pos);\n if (\n octalStr !== \"0\" ||\n next === charCodes.digit8 ||\n next === charCodes.digit9\n ) {\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(startPos, lineStart, curLine);\n }\n }\n\n return res(String.fromCharCode(octal));\n }\n\n return res(String.fromCharCode(ch));\n }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n len: number,\n forceLen: boolean,\n throwOnInvalid: boolean,\n errors: HexCharErrorHandlers,\n) {\n const initialPos = pos;\n let n;\n ({ n, pos } = readInt(\n input,\n pos,\n lineStart,\n curLine,\n 16,\n len,\n forceLen,\n false,\n errors,\n /* bailOnError */ !throwOnInvalid,\n ));\n if (n === null) {\n if (throwOnInvalid) {\n errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n } else {\n pos = initialPos - 1;\n }\n }\n return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n numericSeparatorInEscapeSequence(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n unexpectedNumericSeparator(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n // It can return \"true\" to indicate that the error was handled\n // and the int parsing should continue.\n invalidDigit(\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n ): boolean;\n};\n\nexport function readInt(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n len: number | undefined,\n forceLen: boolean,\n allowNumSeparator: boolean | \"bail\",\n errors: IntErrorHandlers,\n bailOnError: boolean,\n) {\n const start = pos;\n const forbiddenSiblings =\n radix === 16\n ? forbiddenNumericSeparatorSiblings.hex\n : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling =\n radix === 16\n ? isAllowedNumericSeparatorSibling.hex\n : radix === 10\n ? isAllowedNumericSeparatorSibling.dec\n : radix === 8\n ? isAllowedNumericSeparatorSibling.oct\n : isAllowedNumericSeparatorSibling.bin;\n\n let invalid = false;\n let total = 0;\n\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = input.charCodeAt(pos);\n let val;\n\n if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n const prev = input.charCodeAt(pos - 1);\n const next = input.charCodeAt(pos + 1);\n\n if (!allowNumSeparator) {\n if (bailOnError) return { n: null, pos };\n errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n } else if (\n Number.isNaN(next) ||\n !isAllowedSibling(next) ||\n forbiddenSiblings.has(prev) ||\n forbiddenSiblings.has(next)\n ) {\n if (bailOnError) return { n: null, pos };\n errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n }\n\n // Ignore this _ character\n ++pos;\n continue;\n }\n\n if (code >= charCodes.lowercaseA) {\n val = code - charCodes.lowercaseA + charCodes.lineFeed;\n } else if (code >= charCodes.uppercaseA) {\n val = code - charCodes.uppercaseA + charCodes.lineFeed;\n } else if (charCodes.isDigit(code)) {\n val = code - charCodes.digit0; // 0-9\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n // breaking the loop (this is used for error recovery).\n if (val <= 9 && bailOnError) {\n return { n: null, pos };\n } else if (\n val <= 9 &&\n errors.invalidDigit(pos, lineStart, curLine, radix)\n ) {\n val = 0;\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++pos;\n total = total * radix + val;\n }\n if (pos === start || (len != null && pos - start !== len) || invalid) {\n return { n: null, pos };\n }\n\n return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n throwOnInvalid: boolean,\n errors: CodePointErrorHandlers,\n) {\n const ch = input.charCodeAt(pos);\n let code;\n\n if (ch === charCodes.leftCurlyBrace) {\n ++pos;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n input.indexOf(\"}\", pos) - pos,\n true,\n throwOnInvalid,\n errors,\n ));\n ++pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n errors.invalidCodePoint(pos, lineStart, curLine);\n } else {\n return { code: null, pos };\n }\n }\n } else {\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 4,\n false,\n throwOnInvalid,\n errors,\n ));\n }\n return { code, pos };\n}\n","/*:: declare var invariant; */\n\nimport { OptionFlags, type Options } from \"../options.ts\";\nimport {\n Position,\n SourceLocation,\n createPositionWithColumnOffset,\n} from \"../util/location.ts\";\nimport CommentsParser, { type CommentWhitespace } from \"../parser/comments.ts\";\nimport type * as N from \"../types.ts\";\nimport * as charCodes from \"charcodes\";\nimport { isIdentifierStart, isIdentifierChar } from \"../util/identifier.ts\";\nimport {\n tokenIsKeyword,\n tokenLabelName,\n tt,\n keywords as keywordTypes,\n type TokenType,\n} from \"./types.ts\";\nimport type { TokContext } from \"./context.ts\";\nimport {\n Errors,\n type ParseError,\n type ParseErrorConstructor,\n} from \"../parse-error.ts\";\nimport {\n lineBreakG,\n isNewLine,\n isWhitespace,\n skipWhiteSpace,\n skipWhiteSpaceInLine,\n} from \"../util/whitespace.ts\";\nimport State from \"./state.ts\";\nimport type { LookaheadState, DeferredStrictError } from \"./state.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { Node } from \"../types.ts\";\n\nimport {\n readInt,\n readCodePoint,\n readStringContents,\n type IntErrorHandlers,\n type CodePointErrorHandlers,\n type StringContentsErrorHandlers,\n} from \"@babel/helper-string-parser\";\n\nimport type { Plugin } from \"../typings.ts\";\n\nfunction buildPosition(pos: number, lineStart: number, curLine: number) {\n return new Position(curLine, pos - lineStart, pos);\n}\n\nconst VALID_REGEX_FLAGS = new Set([\n charCodes.lowercaseG,\n charCodes.lowercaseM,\n charCodes.lowercaseS,\n charCodes.lowercaseI,\n charCodes.lowercaseY,\n charCodes.lowercaseU,\n charCodes.lowercaseD,\n charCodes.lowercaseV,\n]);\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nexport class Token {\n constructor(state: State) {\n const startIndex = state.startIndex || 0;\n this.type = state.type;\n this.value = state.value;\n this.start = startIndex + state.start;\n this.end = startIndex + state.end;\n this.loc = new SourceLocation(state.startLoc, state.endLoc);\n }\n\n declare type: TokenType;\n declare value: any;\n declare start: number;\n declare end: number;\n declare loc: SourceLocation;\n}\n\n// ## Tokenizer\n\nexport default abstract class Tokenizer extends CommentsParser {\n isLookahead: boolean;\n\n // Token store.\n tokens: Array = [];\n\n constructor(options: Options, input: string) {\n super();\n this.state = new State();\n this.state.init(options);\n this.input = input;\n this.length = input.length;\n this.comments = [];\n this.isLookahead = false;\n }\n\n pushToken(token: Token | N.Comment) {\n // Pop out invalid tokens trapped by try-catch parsing.\n // Those parsing branches are mainly created by typescript and flow plugins.\n this.tokens.length = this.state.tokensLength;\n this.tokens.push(token);\n ++this.state.tokensLength;\n }\n\n // Move to the next token\n\n next(): void {\n this.checkKeywordEscapes();\n if (this.optionFlags & OptionFlags.Tokens) {\n this.pushToken(new Token(this.state));\n }\n\n this.state.lastTokEndLoc = this.state.endLoc;\n this.state.lastTokStartLoc = this.state.startLoc;\n this.nextToken();\n }\n\n eat(type: TokenType): boolean {\n if (this.match(type)) {\n this.next();\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Whether current token matches given type\n */\n match(type: TokenType): boolean {\n return this.state.type === type;\n }\n\n /**\n * Create a LookaheadState from current parser state\n */\n createLookaheadState(state: State): LookaheadState {\n return {\n pos: state.pos,\n value: null,\n type: state.type,\n start: state.start,\n end: state.end,\n context: [this.curContext()],\n inType: state.inType,\n startLoc: state.startLoc,\n lastTokEndLoc: state.lastTokEndLoc,\n curLine: state.curLine,\n lineStart: state.lineStart,\n curPosition: state.curPosition,\n };\n }\n\n /**\n * lookahead peeks the next token, skipping changes to token context and\n * comment stack. For performance it returns a limited LookaheadState\n * instead of full parser state.\n *\n * The { column, line } Loc info is not included in lookahead since such usage\n * is rare. Although it may return other location properties e.g. `curLine` and\n * `lineStart`, these properties are not listed in the LookaheadState interface\n * and thus the returned value is _NOT_ reliable.\n *\n * The tokenizer should make best efforts to avoid using any parser state\n * other than those defined in LookaheadState\n */\n lookahead(): LookaheadState {\n const old = this.state;\n // @ts-expect-error For performance we use a simplified tokenizer state structure\n this.state = this.createLookaheadState(old);\n\n this.isLookahead = true;\n this.nextToken();\n this.isLookahead = false;\n\n const curr = this.state;\n this.state = old;\n return curr;\n }\n\n nextTokenStart(): number {\n return this.nextTokenStartSince(this.state.pos);\n }\n\n nextTokenStartSince(pos: number): number {\n skipWhiteSpace.lastIndex = pos;\n return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;\n }\n\n lookaheadCharCode(): number {\n return this.lookaheadCharCodeSince(this.state.pos);\n }\n\n lookaheadCharCodeSince(pos: number): number {\n return this.input.charCodeAt(this.nextTokenStartSince(pos));\n }\n\n /**\n * Similar to nextToken, but it will stop at line break when it is seen before the next token\n *\n * @returns {number} position of the next token start or line break, whichever is seen first.\n * @memberof Tokenizer\n */\n nextTokenInLineStart(): number {\n return this.nextTokenInLineStartSince(this.state.pos);\n }\n\n nextTokenInLineStartSince(pos: number): number {\n skipWhiteSpaceInLine.lastIndex = pos;\n return skipWhiteSpaceInLine.test(this.input)\n ? skipWhiteSpaceInLine.lastIndex\n : pos;\n }\n\n /**\n * Similar to lookaheadCharCode, but it will return the char code of line break if it is\n * seen before the next token\n *\n * @returns {number} char code of the next token start or line break, whichever is seen first.\n * @memberof Tokenizer\n */\n lookaheadInLineCharCode(): number {\n return this.input.charCodeAt(this.nextTokenInLineStart());\n }\n\n codePointAtPos(pos: number): number {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `input` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = this.input.charCodeAt(pos);\n if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {\n const trail = this.input.charCodeAt(pos);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n return cp;\n }\n\n // Toggle strict mode. Re-reads the next number or string to please\n // pedantic tests (`\"use strict\"; 010;` should fail).\n\n setStrict(strict: boolean): void {\n this.state.strict = strict;\n if (strict) {\n // Throw an error for any string decimal escape found before/immediately\n // after a \"use strict\" directive. Strict mode will be set at parse\n // time for any literals that occur after the next node of the strict\n // directive.\n this.state.strictErrors.forEach(([toParseError, at]) =>\n this.raise(toParseError, at),\n );\n this.state.strictErrors.clear();\n }\n }\n\n curContext(): TokContext {\n return this.state.context[this.state.context.length - 1];\n }\n\n // Read a single token, updating the parser object's token-related properties.\n nextToken(): void {\n this.skipSpace();\n this.state.start = this.state.pos;\n if (!this.isLookahead) this.state.startLoc = this.state.curPosition();\n if (this.state.pos >= this.length) {\n this.finishToken(tt.eof);\n return;\n }\n\n this.getTokenFromCode(this.codePointAtPos(this.state.pos));\n }\n\n // Skips a block comment, whose end is marked by commentEnd.\n // *-/ is used by the Flow plugin, when parsing block comments nested\n // inside Flow comments.\n skipBlockComment(commentEnd: \"*/\" | \"*-/\"): N.CommentBlock | undefined {\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n const start = this.state.pos;\n const end = this.input.indexOf(commentEnd, start + 2);\n if (end === -1) {\n // We have to call this again here because startLoc may not be set...\n // This seems to be for performance reasons:\n // https://github.com/babel/babel/commit/acf2a10899f696a8aaf34df78bf9725b5ea7f2da\n throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n }\n\n this.state.pos = end + commentEnd.length;\n lineBreakG.lastIndex = start + 2;\n while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {\n ++this.state.curLine;\n this.state.lineStart = lineBreakG.lastIndex;\n }\n\n // If we are doing a lookahead right now we need to advance the position (above code)\n // but we do not want to push the comment to the state.\n if (this.isLookahead) return;\n /*:: invariant(startLoc) */\n\n const comment: N.CommentBlock = {\n type: \"CommentBlock\",\n value: this.input.slice(start + 2, end),\n start: this.sourceToOffsetPos(start),\n end: this.sourceToOffsetPos(end + commentEnd.length),\n loc: new SourceLocation(startLoc, this.state.curPosition()),\n };\n if (this.optionFlags & OptionFlags.Tokens) this.pushToken(comment);\n return comment;\n }\n\n skipLineComment(startSkip: number): N.CommentLine | undefined {\n const start = this.state.pos;\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n let ch = this.input.charCodeAt((this.state.pos += startSkip));\n if (this.state.pos < this.length) {\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n }\n\n // If we are doing a lookahead right now we need to advance the position (above code)\n // but we do not want to push the comment to the state.\n if (this.isLookahead) return;\n\n const end = this.state.pos;\n const value = this.input.slice(start + startSkip, end);\n\n const comment: N.CommentLine = {\n type: \"CommentLine\",\n value,\n start: this.sourceToOffsetPos(start),\n end: this.sourceToOffsetPos(end),\n loc: new SourceLocation(startLoc, this.state.curPosition()),\n };\n if (this.optionFlags & OptionFlags.Tokens) this.pushToken(comment);\n return comment;\n }\n\n // Called at the start of the parse and after every token. Skips\n // whitespace and comments, and.\n\n skipSpace(): void {\n const spaceStart = this.state.pos;\n const comments: N.Comment[] =\n this.optionFlags & OptionFlags.AttachComment ? [] : null;\n loop: while (this.state.pos < this.length) {\n const ch = this.input.charCodeAt(this.state.pos);\n switch (ch) {\n case charCodes.space:\n case charCodes.nonBreakingSpace:\n case charCodes.tab:\n ++this.state.pos;\n break;\n case charCodes.carriageReturn:\n if (\n this.input.charCodeAt(this.state.pos + 1) === charCodes.lineFeed\n ) {\n ++this.state.pos;\n }\n // fall through\n case charCodes.lineFeed:\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n ++this.state.pos;\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n break;\n\n case charCodes.slash:\n switch (this.input.charCodeAt(this.state.pos + 1)) {\n case charCodes.asterisk: {\n const comment = this.skipBlockComment(\"*/\");\n if (comment !== undefined) {\n this.addComment(comment);\n comments?.push(comment);\n }\n break;\n }\n\n case charCodes.slash: {\n const comment = this.skipLineComment(2);\n if (comment !== undefined) {\n this.addComment(comment);\n comments?.push(comment);\n }\n break;\n }\n\n default:\n break loop;\n }\n break;\n\n default:\n if (isWhitespace(ch)) {\n ++this.state.pos;\n } else if (\n ch === charCodes.dash &&\n !this.inModule &&\n this.optionFlags & OptionFlags.AnnexB\n ) {\n const pos = this.state.pos;\n if (\n this.input.charCodeAt(pos + 1) === charCodes.dash &&\n this.input.charCodeAt(pos + 2) === charCodes.greaterThan &&\n (spaceStart === 0 || this.state.lineStart > spaceStart)\n ) {\n // A `-->` line comment\n const comment = this.skipLineComment(3);\n if (comment !== undefined) {\n this.addComment(comment);\n comments?.push(comment);\n }\n } else {\n break loop;\n }\n } else if (\n ch === charCodes.lessThan &&\n !this.inModule &&\n this.optionFlags & OptionFlags.AnnexB\n ) {\n const pos = this.state.pos;\n if (\n this.input.charCodeAt(pos + 1) === charCodes.exclamationMark &&\n this.input.charCodeAt(pos + 2) === charCodes.dash &&\n this.input.charCodeAt(pos + 3) === charCodes.dash\n ) {\n // `` + ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), + // `<\/script` + StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), + // ` this.emitCodePoint(cp, consumed) + ); + } + } + get inSFCRoot() { + return this.mode === 2 && this.stack.length === 0; + } + reset() { + this.state = 1; + this.mode = 0; + this.buffer = ""; + this.sectionStart = 0; + this.index = 0; + this.baseState = 1; + this.inRCDATA = false; + this.currentSequence = void 0; + this.newlines.length = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + } + /** + * Generate Position object with line / column information using recorded + * newline positions. We know the index is always going to be an already + * processed index, so all the newlines up to this index should have been + * recorded. + */ + getPos(index) { + let line = 1; + let column = index + 1; + for (let i = this.newlines.length - 1; i >= 0; i--) { + const newlineIndex = this.newlines[i]; + if (index > newlineIndex) { + line = i + 2; + column = index - newlineIndex; + break; + } + } + return { + column, + line, + offset: index + }; + } + peek() { + return this.buffer.charCodeAt(this.index + 1); + } + stateText(c) { + if (c === 60) { + if (this.index > this.sectionStart) { + this.cbs.ontext(this.sectionStart, this.index); + } + this.state = 5; + this.sectionStart = this.index; + } else if (c === 38) { + this.startEntity(); + } else if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } + stateInterpolationOpen(c) { + if (c === this.delimiterOpen[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterOpen.length - 1) { + const start = this.index + 1 - this.delimiterOpen.length; + if (start > this.sectionStart) { + this.cbs.ontext(this.sectionStart, start); + } + this.state = 3; + this.sectionStart = start; + } else { + this.delimiterIndex++; + } + } else if (this.inRCDATA) { + this.state = 32; + this.stateInRCDATA(c); + } else { + this.state = 1; + this.stateText(c); + } + } + stateInterpolation(c) { + if (c === this.delimiterClose[0]) { + this.state = 4; + this.delimiterIndex = 0; + this.stateInterpolationClose(c); + } + } + stateInterpolationClose(c) { + if (c === this.delimiterClose[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterClose.length - 1) { + this.cbs.oninterpolation(this.sectionStart, this.index + 1); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else { + this.delimiterIndex++; + } + } else { + this.state = 3; + this.stateInterpolation(c); + } + } + stateSpecialStartSequence(c) { + const isEnd = this.sequenceIndex === this.currentSequence.length; + const isMatch = isEnd ? ( + // If we are at the end of the sequence, make sure the tag name has ended + isEndOfTagSection(c) + ) : ( + // Otherwise, do a case-insensitive comparison + (c | 32) === this.currentSequence[this.sequenceIndex] + ); + if (!isMatch) { + this.inRCDATA = false; + } else if (!isEnd) { + this.sequenceIndex++; + return; + } + this.sequenceIndex = 0; + this.state = 6; + this.stateInTagName(c); + } + /** Look for an end tag. For and <textarea>, also decode entities. */ + stateInRCDATA(c) { + if (this.sequenceIndex === this.currentSequence.length) { + if (c === 62 || isWhitespace(c)) { + const endOfText = this.index - this.currentSequence.length; + if (this.sectionStart < endOfText) { + const actualIndex = this.index; + this.index = endOfText; + this.cbs.ontext(this.sectionStart, endOfText); + this.index = actualIndex; + } + this.sectionStart = endOfText + 2; + this.stateInClosingTagName(c); + this.inRCDATA = false; + return; + } + this.sequenceIndex = 0; + } + if ((c | 32) === this.currentSequence[this.sequenceIndex]) { + this.sequenceIndex += 1; + } else if (this.sequenceIndex === 0) { + if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd && !this.inSFCRoot) { + if (c === 38) { + this.startEntity(); + } else if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } else if (this.fastForwardTo(60)) { + this.sequenceIndex = 1; + } + } else { + this.sequenceIndex = Number(c === 60); + } + } + stateCDATASequence(c) { + if (c === Sequences.Cdata[this.sequenceIndex]) { + if (++this.sequenceIndex === Sequences.Cdata.length) { + this.state = 28; + this.currentSequence = Sequences.CdataEnd; + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + } + } else { + this.sequenceIndex = 0; + this.state = 23; + this.stateInDeclaration(c); + } + } + /** + * When we wait for one specific character, we can speed things up + * by skipping through the buffer until we find it. + * + * @returns Whether the character was found. + */ + fastForwardTo(c) { + while (++this.index < this.buffer.length) { + const cc = this.buffer.charCodeAt(this.index); + if (cc === 10) { + this.newlines.push(this.index); + } + if (cc === c) { + return true; + } + } + this.index = this.buffer.length - 1; + return false; + } + /** + * Comments and CDATA end with `-->` and `]]>`. + * + * Their common qualities are: + * - Their end sequences have a distinct character they start with. + * - That character is then repeated, so we have to check multiple repeats. + * - All characters but the start character of the sequence can be skipped. + */ + stateInCommentLike(c) { + if (c === this.currentSequence[this.sequenceIndex]) { + if (++this.sequenceIndex === this.currentSequence.length) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, this.index - 2); + } else { + this.cbs.oncomment(this.sectionStart, this.index - 2); + } + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + this.state = 1; + } + } else if (this.sequenceIndex === 0) { + if (this.fastForwardTo(this.currentSequence[0])) { + this.sequenceIndex = 1; + } + } else if (c !== this.currentSequence[this.sequenceIndex - 1]) { + this.sequenceIndex = 0; + } + } + startSpecial(sequence, offset) { + this.enterRCDATA(sequence, offset); + this.state = 31; + } + enterRCDATA(sequence, offset) { + this.inRCDATA = true; + this.currentSequence = sequence; + this.sequenceIndex = offset; + } + stateBeforeTagName(c) { + if (c === 33) { + this.state = 22; + this.sectionStart = this.index + 1; + } else if (c === 63) { + this.state = 24; + this.sectionStart = this.index + 1; + } else if (isTagStartChar(c)) { + this.sectionStart = this.index; + if (this.mode === 0) { + this.state = 6; + } else if (this.inSFCRoot) { + this.state = 34; + } else if (!this.inXML) { + if (c === 116) { + this.state = 30; + } else { + this.state = c === 115 ? 29 : 6; + } + } else { + this.state = 6; + } + } else if (c === 47) { + this.state = 8; + } else { + this.state = 1; + this.stateText(c); + } + } + stateInTagName(c) { + if (isEndOfTagSection(c)) { + this.handleTagName(c); + } + } + stateInSFCRootTagName(c) { + if (isEndOfTagSection(c)) { + const tag = this.buffer.slice(this.sectionStart, this.index); + if (tag !== "template") { + this.enterRCDATA(toCharCodes(`</` + tag), 0); + } + this.handleTagName(c); + } + } + handleTagName(c) { + this.cbs.onopentagname(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } + stateBeforeClosingTagName(c) { + if (isWhitespace(c)) ; else if (c === 62) { + { + this.cbs.onerr(14, this.index); + } + this.state = 1; + this.sectionStart = this.index + 1; + } else { + this.state = isTagStartChar(c) ? 9 : 27; + this.sectionStart = this.index; + } + } + stateInClosingTagName(c) { + if (c === 62 || isWhitespace(c)) { + this.cbs.onclosetag(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 10; + this.stateAfterClosingTagName(c); + } + } + stateAfterClosingTagName(c) { + if (c === 62) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeAttrName(c) { + if (c === 62) { + this.cbs.onopentagend(this.index); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else if (c === 47) { + this.state = 7; + if (this.peek() !== 62) { + this.cbs.onerr(22, this.index); + } + } else if (c === 60 && this.peek() === 47) { + this.cbs.onopentagend(this.index); + this.state = 5; + this.sectionStart = this.index; + } else if (!isWhitespace(c)) { + if (c === 61) { + this.cbs.onerr( + 19, + this.index + ); + } + this.handleAttrStart(c); + } + } + handleAttrStart(c) { + if (c === 118 && this.peek() === 45) { + this.state = 13; + this.sectionStart = this.index; + } else if (c === 46 || c === 58 || c === 64 || c === 35) { + this.cbs.ondirname(this.index, this.index + 1); + this.state = 14; + this.sectionStart = this.index + 1; + } else { + this.state = 12; + this.sectionStart = this.index; + } + } + stateInSelfClosingTag(c) { + if (c === 62) { + this.cbs.onselfclosingtag(this.index); + this.state = 1; + this.sectionStart = this.index + 1; + this.inRCDATA = false; + } else if (!isWhitespace(c)) { + this.state = 11; + this.stateBeforeAttrName(c); + } + } + stateInAttrName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.onattribname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 34 || c === 39 || c === 60) { + this.cbs.onerr( + 17, + this.index + ); + } + } + stateInDirName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 58) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 14; + this.sectionStart = this.index + 1; + } else if (c === 46) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDirArg(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 91) { + this.state = 15; + } else if (c === 46) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDynamicDirArg(c) { + if (c === 93) { + this.state = 14; + } else if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index + 1); + this.handleAttrNameEnd(c); + { + this.cbs.onerr( + 27, + this.index + ); + } + } + } + stateInDirModifier(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 46) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.sectionStart = this.index + 1; + } + } + handleAttrNameEnd(c) { + this.sectionStart = this.index; + this.state = 17; + this.cbs.onattribnameend(this.index); + this.stateAfterAttrName(c); + } + stateAfterAttrName(c) { + if (c === 61) { + this.state = 18; + } else if (c === 47 || c === 62) { + this.cbs.onattribend(0, this.sectionStart); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } else if (!isWhitespace(c)) { + this.cbs.onattribend(0, this.sectionStart); + this.handleAttrStart(c); + } + } + stateBeforeAttrValue(c) { + if (c === 34) { + this.state = 19; + this.sectionStart = this.index + 1; + } else if (c === 39) { + this.state = 20; + this.sectionStart = this.index + 1; + } else if (!isWhitespace(c)) { + this.sectionStart = this.index; + this.state = 21; + this.stateInAttrValueNoQuotes(c); + } + } + handleInAttrValue(c, quote) { + if (c === quote || false) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend( + quote === 34 ? 3 : 2, + this.index + 1 + ); + this.state = 11; + } else if (c === 38) { + this.startEntity(); + } + } + stateInAttrValueDoubleQuotes(c) { + this.handleInAttrValue(c, 34); + } + stateInAttrValueSingleQuotes(c) { + this.handleInAttrValue(c, 39); + } + stateInAttrValueNoQuotes(c) { + if (isWhitespace(c) || c === 62) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend(1, this.index); + this.state = 11; + this.stateBeforeAttrName(c); + } else if (c === 34 || c === 39 || c === 60 || c === 61 || c === 96) { + this.cbs.onerr( + 18, + this.index + ); + } else if (c === 38) { + this.startEntity(); + } + } + stateBeforeDeclaration(c) { + if (c === 91) { + this.state = 26; + this.sequenceIndex = 0; + } else { + this.state = c === 45 ? 25 : 23; + } + } + stateInDeclaration(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateInProcessingInstruction(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.onprocessinginstruction(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeComment(c) { + if (c === 45) { + this.state = 28; + this.currentSequence = Sequences.CommentEnd; + this.sequenceIndex = 2; + this.sectionStart = this.index + 1; + } else { + this.state = 23; + } + } + stateInSpecialComment(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.oncomment(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeSpecialS(c) { + if (c === Sequences.ScriptEnd[3]) { + this.startSpecial(Sequences.ScriptEnd, 4); + } else if (c === Sequences.StyleEnd[3]) { + this.startSpecial(Sequences.StyleEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + stateBeforeSpecialT(c) { + if (c === Sequences.TitleEnd[3]) { + this.startSpecial(Sequences.TitleEnd, 4); + } else if (c === Sequences.TextareaEnd[3]) { + this.startSpecial(Sequences.TextareaEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + startEntity() { + { + this.baseState = this.state; + this.state = 33; + this.entityStart = this.index; + this.entityDecoder.startEntity( + this.baseState === 1 || this.baseState === 32 ? decode_js.DecodingMode.Legacy : decode_js.DecodingMode.Attribute + ); + } + } + stateInEntity() { + { + const length = this.entityDecoder.write(this.buffer, this.index); + if (length >= 0) { + this.state = this.baseState; + if (length === 0) { + this.index = this.entityStart; + } + } else { + this.index = this.buffer.length - 1; + } + } + } + /** + * Iterates through the buffer, calling the function corresponding to the current state. + * + * States that are more likely to be hit are higher up, as a performance improvement. + */ + parse(input) { + this.buffer = input; + while (this.index < this.buffer.length) { + const c = this.buffer.charCodeAt(this.index); + if (c === 10 && this.state !== 33) { + this.newlines.push(this.index); + } + switch (this.state) { + case 1: { + this.stateText(c); + break; + } + case 2: { + this.stateInterpolationOpen(c); + break; + } + case 3: { + this.stateInterpolation(c); + break; + } + case 4: { + this.stateInterpolationClose(c); + break; + } + case 31: { + this.stateSpecialStartSequence(c); + break; + } + case 32: { + this.stateInRCDATA(c); + break; + } + case 26: { + this.stateCDATASequence(c); + break; + } + case 19: { + this.stateInAttrValueDoubleQuotes(c); + break; + } + case 12: { + this.stateInAttrName(c); + break; + } + case 13: { + this.stateInDirName(c); + break; + } + case 14: { + this.stateInDirArg(c); + break; + } + case 15: { + this.stateInDynamicDirArg(c); + break; + } + case 16: { + this.stateInDirModifier(c); + break; + } + case 28: { + this.stateInCommentLike(c); + break; + } + case 27: { + this.stateInSpecialComment(c); + break; + } + case 11: { + this.stateBeforeAttrName(c); + break; + } + case 6: { + this.stateInTagName(c); + break; + } + case 34: { + this.stateInSFCRootTagName(c); + break; + } + case 9: { + this.stateInClosingTagName(c); + break; + } + case 5: { + this.stateBeforeTagName(c); + break; + } + case 17: { + this.stateAfterAttrName(c); + break; + } + case 20: { + this.stateInAttrValueSingleQuotes(c); + break; + } + case 18: { + this.stateBeforeAttrValue(c); + break; + } + case 8: { + this.stateBeforeClosingTagName(c); + break; + } + case 10: { + this.stateAfterClosingTagName(c); + break; + } + case 29: { + this.stateBeforeSpecialS(c); + break; + } + case 30: { + this.stateBeforeSpecialT(c); + break; + } + case 21: { + this.stateInAttrValueNoQuotes(c); + break; + } + case 7: { + this.stateInSelfClosingTag(c); + break; + } + case 23: { + this.stateInDeclaration(c); + break; + } + case 22: { + this.stateBeforeDeclaration(c); + break; + } + case 25: { + this.stateBeforeComment(c); + break; + } + case 24: { + this.stateInProcessingInstruction(c); + break; + } + case 33: { + this.stateInEntity(); + break; + } + } + this.index++; + } + this.cleanup(); + this.finish(); + } + /** + * Remove data that has already been consumed from the buffer. + */ + cleanup() { + if (this.sectionStart !== this.index) { + if (this.state === 1 || this.state === 32 && this.sequenceIndex === 0) { + this.cbs.ontext(this.sectionStart, this.index); + this.sectionStart = this.index; + } else if (this.state === 19 || this.state === 20 || this.state === 21) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = this.index; + } + } + } + finish() { + if (this.state === 33) { + this.entityDecoder.end(); + this.state = this.baseState; + } + this.handleTrailingData(); + this.cbs.onend(); + } + /** Handle any trailing data. */ + handleTrailingData() { + const endIndex = this.buffer.length; + if (this.sectionStart >= endIndex) { + return; + } + if (this.state === 28) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, endIndex); + } else { + this.cbs.oncomment(this.sectionStart, endIndex); + } + } else if (this.state === 6 || this.state === 11 || this.state === 18 || this.state === 17 || this.state === 12 || this.state === 13 || this.state === 14 || this.state === 15 || this.state === 16 || this.state === 20 || this.state === 19 || this.state === 21 || this.state === 9) ; else { + this.cbs.ontext(this.sectionStart, endIndex); + } + } + emitCodePoint(cp, consumed) { + { + if (this.baseState !== 1 && this.baseState !== 32) { + if (this.sectionStart < this.entityStart) { + this.cbs.onattribdata(this.sectionStart, this.entityStart); + } + this.sectionStart = this.entityStart + consumed; + this.index = this.sectionStart - 1; + this.cbs.onattribentity( + decode_js.fromCodePoint(cp), + this.entityStart, + this.sectionStart + ); + } else { + if (this.sectionStart < this.entityStart) { + this.cbs.ontext(this.sectionStart, this.entityStart); + } + this.sectionStart = this.entityStart + consumed; + this.index = this.sectionStart - 1; + this.cbs.ontextentity( + decode_js.fromCodePoint(cp), + this.entityStart, + this.sectionStart + ); + } + } + } +} + +const CompilerDeprecationTypes = { + "COMPILER_IS_ON_ELEMENT": "COMPILER_IS_ON_ELEMENT", + "COMPILER_V_BIND_SYNC": "COMPILER_V_BIND_SYNC", + "COMPILER_V_BIND_OBJECT_ORDER": "COMPILER_V_BIND_OBJECT_ORDER", + "COMPILER_V_ON_NATIVE": "COMPILER_V_ON_NATIVE", + "COMPILER_V_IF_V_FOR_PRECEDENCE": "COMPILER_V_IF_V_FOR_PRECEDENCE", + "COMPILER_NATIVE_TEMPLATE": "COMPILER_NATIVE_TEMPLATE", + "COMPILER_INLINE_TEMPLATE": "COMPILER_INLINE_TEMPLATE", + "COMPILER_FILTERS": "COMPILER_FILTERS" +}; +const deprecationData = { + ["COMPILER_IS_ON_ELEMENT"]: { + message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`, + link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html` + }, + ["COMPILER_V_BIND_SYNC"]: { + message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html` + }, + ["COMPILER_V_BIND_OBJECT_ORDER"]: { + message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html` + }, + ["COMPILER_V_ON_NATIVE"]: { + message: `.native modifier for v-on has been removed as is no longer necessary.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html` + }, + ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: { + message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html` + }, + ["COMPILER_NATIVE_TEMPLATE"]: { + message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.` + }, + ["COMPILER_INLINE_TEMPLATE"]: { + message: `"inline-template" has been removed in Vue 3.`, + link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html` + }, + ["COMPILER_FILTERS"]: { + message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`, + link: `https://v3-migration.vuejs.org/breaking-changes/filters.html` + } +}; +function getCompatValue(key, { compatConfig }) { + const value = compatConfig && compatConfig[key]; + if (key === "MODE") { + return value || 3; + } else { + return value; + } +} +function isCompatEnabled(key, context) { + const mode = getCompatValue("MODE", context); + const value = getCompatValue(key, context); + return mode === 3 ? value === true : value !== false; +} +function checkCompatEnabled(key, context, loc, ...args) { + const enabled = isCompatEnabled(key, context); + if (enabled) { + warnDeprecation(key, context, loc, ...args); + } + return enabled; +} +function warnDeprecation(key, context, loc, ...args) { + const val = getCompatValue(key, context); + if (val === "suppress-warning") { + return; + } + const { message, link } = deprecationData[key]; + const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? ` + Details: ${link}` : ``}`; + const err = new SyntaxError(msg); + err.code = key; + if (loc) err.loc = loc; + context.onWarn(err); +} + +function defaultOnError(error) { + throw error; +} +function defaultOnWarn(msg) { + console.warn(`[Vue warn] ${msg.message}`); +} +function createCompilerError(code, loc, messages, additionalMessage) { + const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ; + const error = new SyntaxError(String(msg)); + error.code = code; + error.loc = loc; + return error; +} +const ErrorCodes = { + "ABRUPT_CLOSING_OF_EMPTY_COMMENT": 0, + "0": "ABRUPT_CLOSING_OF_EMPTY_COMMENT", + "CDATA_IN_HTML_CONTENT": 1, + "1": "CDATA_IN_HTML_CONTENT", + "DUPLICATE_ATTRIBUTE": 2, + "2": "DUPLICATE_ATTRIBUTE", + "END_TAG_WITH_ATTRIBUTES": 3, + "3": "END_TAG_WITH_ATTRIBUTES", + "END_TAG_WITH_TRAILING_SOLIDUS": 4, + "4": "END_TAG_WITH_TRAILING_SOLIDUS", + "EOF_BEFORE_TAG_NAME": 5, + "5": "EOF_BEFORE_TAG_NAME", + "EOF_IN_CDATA": 6, + "6": "EOF_IN_CDATA", + "EOF_IN_COMMENT": 7, + "7": "EOF_IN_COMMENT", + "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT": 8, + "8": "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT", + "EOF_IN_TAG": 9, + "9": "EOF_IN_TAG", + "INCORRECTLY_CLOSED_COMMENT": 10, + "10": "INCORRECTLY_CLOSED_COMMENT", + "INCORRECTLY_OPENED_COMMENT": 11, + "11": "INCORRECTLY_OPENED_COMMENT", + "INVALID_FIRST_CHARACTER_OF_TAG_NAME": 12, + "12": "INVALID_FIRST_CHARACTER_OF_TAG_NAME", + "MISSING_ATTRIBUTE_VALUE": 13, + "13": "MISSING_ATTRIBUTE_VALUE", + "MISSING_END_TAG_NAME": 14, + "14": "MISSING_END_TAG_NAME", + "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES": 15, + "15": "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES", + "NESTED_COMMENT": 16, + "16": "NESTED_COMMENT", + "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME": 17, + "17": "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME", + "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE": 18, + "18": "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE", + "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME": 19, + "19": "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME", + "UNEXPECTED_NULL_CHARACTER": 20, + "20": "UNEXPECTED_NULL_CHARACTER", + "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME": 21, + "21": "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME", + "UNEXPECTED_SOLIDUS_IN_TAG": 22, + "22": "UNEXPECTED_SOLIDUS_IN_TAG", + "X_INVALID_END_TAG": 23, + "23": "X_INVALID_END_TAG", + "X_MISSING_END_TAG": 24, + "24": "X_MISSING_END_TAG", + "X_MISSING_INTERPOLATION_END": 25, + "25": "X_MISSING_INTERPOLATION_END", + "X_MISSING_DIRECTIVE_NAME": 26, + "26": "X_MISSING_DIRECTIVE_NAME", + "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END": 27, + "27": "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END", + "X_V_IF_NO_EXPRESSION": 28, + "28": "X_V_IF_NO_EXPRESSION", + "X_V_IF_SAME_KEY": 29, + "29": "X_V_IF_SAME_KEY", + "X_V_ELSE_NO_ADJACENT_IF": 30, + "30": "X_V_ELSE_NO_ADJACENT_IF", + "X_V_FOR_NO_EXPRESSION": 31, + "31": "X_V_FOR_NO_EXPRESSION", + "X_V_FOR_MALFORMED_EXPRESSION": 32, + "32": "X_V_FOR_MALFORMED_EXPRESSION", + "X_V_FOR_TEMPLATE_KEY_PLACEMENT": 33, + "33": "X_V_FOR_TEMPLATE_KEY_PLACEMENT", + "X_V_BIND_NO_EXPRESSION": 34, + "34": "X_V_BIND_NO_EXPRESSION", + "X_V_ON_NO_EXPRESSION": 35, + "35": "X_V_ON_NO_EXPRESSION", + "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET": 36, + "36": "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET", + "X_V_SLOT_MIXED_SLOT_USAGE": 37, + "37": "X_V_SLOT_MIXED_SLOT_USAGE", + "X_V_SLOT_DUPLICATE_SLOT_NAMES": 38, + "38": "X_V_SLOT_DUPLICATE_SLOT_NAMES", + "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN": 39, + "39": "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN", + "X_V_SLOT_MISPLACED": 40, + "40": "X_V_SLOT_MISPLACED", + "X_V_MODEL_NO_EXPRESSION": 41, + "41": "X_V_MODEL_NO_EXPRESSION", + "X_V_MODEL_MALFORMED_EXPRESSION": 42, + "42": "X_V_MODEL_MALFORMED_EXPRESSION", + "X_V_MODEL_ON_SCOPE_VARIABLE": 43, + "43": "X_V_MODEL_ON_SCOPE_VARIABLE", + "X_V_MODEL_ON_PROPS": 44, + "44": "X_V_MODEL_ON_PROPS", + "X_INVALID_EXPRESSION": 45, + "45": "X_INVALID_EXPRESSION", + "X_KEEP_ALIVE_INVALID_CHILDREN": 46, + "46": "X_KEEP_ALIVE_INVALID_CHILDREN", + "X_PREFIX_ID_NOT_SUPPORTED": 47, + "47": "X_PREFIX_ID_NOT_SUPPORTED", + "X_MODULE_MODE_NOT_SUPPORTED": 48, + "48": "X_MODULE_MODE_NOT_SUPPORTED", + "X_CACHE_HANDLER_NOT_SUPPORTED": 49, + "49": "X_CACHE_HANDLER_NOT_SUPPORTED", + "X_SCOPE_ID_NOT_SUPPORTED": 50, + "50": "X_SCOPE_ID_NOT_SUPPORTED", + "X_VNODE_HOOKS": 51, + "51": "X_VNODE_HOOKS", + "X_V_BIND_INVALID_SAME_NAME_ARGUMENT": 52, + "52": "X_V_BIND_INVALID_SAME_NAME_ARGUMENT", + "__EXTEND_POINT__": 53, + "53": "__EXTEND_POINT__" +}; +const errorMessages = { + // parse errors + [0]: "Illegal comment.", + [1]: "CDATA section is allowed only in XML context.", + [2]: "Duplicate attribute.", + [3]: "End tag cannot have attributes.", + [4]: "Illegal '/' in tags.", + [5]: "Unexpected EOF in tag.", + [6]: "Unexpected EOF in CDATA section.", + [7]: "Unexpected EOF in comment.", + [8]: "Unexpected EOF in script.", + [9]: "Unexpected EOF in tag.", + [10]: "Incorrectly closed comment.", + [11]: "Incorrectly opened comment.", + [12]: "Illegal tag name. Use '<' to print '<'.", + [13]: "Attribute value was expected.", + [14]: "End tag name was expected.", + [15]: "Whitespace was expected.", + [16]: "Unexpected '<!--' in comment.", + [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`, + [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).", + [19]: "Attribute name cannot start with '='.", + [21]: "'<?' is allowed only in XML context.", + [20]: `Unexpected null character.`, + [22]: "Illegal '/' in tags.", + // Vue-specific parse errors + [23]: "Invalid end tag.", + [24]: "Element is missing end tag.", + [25]: "Interpolation end sign was not found.", + [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.", + [26]: "Legal directive name was expected.", + // transform errors + [28]: `v-if/v-else-if is missing expression.`, + [29]: `v-if/else branches must use unique keys.`, + [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`, + [31]: `v-for is missing expression.`, + [32]: `v-for has invalid expression.`, + [33]: `<template v-for> key should be placed on the <template> tag.`, + [34]: `v-bind is missing expression.`, + [52]: `v-bind with same-name shorthand only allows static argument.`, + [35]: `v-on is missing expression.`, + [36]: `Unexpected custom directive on <slot> outlet.`, + [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`, + [38]: `Duplicate slot names found. `, + [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`, + [40]: `v-slot can only be used on components or <template> tags.`, + [41]: `v-model is missing expression.`, + [42]: `v-model value must be a valid JavaScript member expression.`, + [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`, + [44]: `v-model cannot be used on a prop, because local prop bindings are not writable. +Use a v-bind binding combined with a v-on listener that emits update:x event instead.`, + [45]: `Error parsing JavaScript expression: `, + [46]: `<KeepAlive> expects exactly one child component.`, + [51]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`, + // generic errors + [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`, + [48]: `ES module mode is not supported in this build of compiler.`, + [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`, + [50]: `"scopeId" option is only supported in module mode.`, + // just to fulfill types + [53]: `` +}; + +function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) { + const rootExp = root.type === "Program" ? root.body[0].type === "ExpressionStatement" && root.body[0].expression : root; + estreeWalker.walk(root, { + enter(node, parent) { + parent && parentStack.push(parent); + if (parent && parent.type.startsWith("TS") && !TS_NODE_TYPES.includes(parent.type)) { + return this.skip(); + } + if (node.type === "Identifier") { + const isLocal = !!knownIds[node.name]; + const isRefed = isReferencedIdentifier(node, parent, parentStack); + if (includeAll || isRefed && !isLocal) { + onIdentifier(node, parent, parentStack, isRefed, isLocal); + } + } else if (node.type === "ObjectProperty" && // eslint-disable-next-line no-restricted-syntax + (parent == null ? void 0 : parent.type) === "ObjectPattern") { + node.inPattern = true; + } else if (isFunctionType(node)) { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + walkFunctionParams( + node, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + } else if (node.type === "BlockStatement") { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + walkBlockDeclarations( + node, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + } else if (node.type === "CatchClause" && node.param) { + for (const id of extractIdentifiers(node.param)) { + markScopeIdentifier(node, id, knownIds); + } + } else if (isForStatement(node)) { + walkForStatement( + node, + false, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + }, + leave(node, parent) { + parent && parentStack.pop(); + if (node !== rootExp && node.scopeIds) { + for (const id of node.scopeIds) { + knownIds[id]--; + if (knownIds[id] === 0) { + delete knownIds[id]; + } + } + } + } + }); +} +function isReferencedIdentifier(id, parent, parentStack) { + if (!parent) { + return true; + } + if (id.name === "arguments") { + return false; + } + if (isReferenced(id, parent, parentStack[parentStack.length - 2])) { + return true; + } + switch (parent.type) { + case "AssignmentExpression": + case "AssignmentPattern": + return true; + case "ObjectProperty": + return parent.key !== id && isInDestructureAssignment(parent, parentStack); + case "ArrayPattern": + return isInDestructureAssignment(parent, parentStack); + } + return false; +} +function isInDestructureAssignment(parent, parentStack) { + if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "AssignmentExpression") { + return true; + } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) { + break; + } + } + } + return false; +} +function isInNewExpression(parentStack) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "NewExpression") { + return true; + } else if (p.type !== "MemberExpression") { + break; + } + } + return false; +} +function walkFunctionParams(node, onIdent) { + for (const p of node.params) { + for (const id of extractIdentifiers(p)) { + onIdent(id); + } + } +} +function walkBlockDeclarations(block, onIdent) { + for (const stmt of block.body) { + if (stmt.type === "VariableDeclaration") { + if (stmt.declare) continue; + for (const decl of stmt.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") { + if (stmt.declare || !stmt.id) continue; + onIdent(stmt.id); + } else if (isForStatement(stmt)) { + walkForStatement(stmt, true, onIdent); + } + } +} +function isForStatement(stmt) { + return stmt.type === "ForOfStatement" || stmt.type === "ForInStatement" || stmt.type === "ForStatement"; +} +function walkForStatement(stmt, isVar, onIdent) { + const variable = stmt.type === "ForStatement" ? stmt.init : stmt.left; + if (variable && variable.type === "VariableDeclaration" && (variable.kind === "var" ? isVar : !isVar)) { + for (const decl of variable.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } +} +function extractIdentifiers(param, nodes = []) { + switch (param.type) { + case "Identifier": + nodes.push(param); + break; + case "MemberExpression": + let object = param; + while (object.type === "MemberExpression") { + object = object.object; + } + nodes.push(object); + break; + case "ObjectPattern": + for (const prop of param.properties) { + if (prop.type === "RestElement") { + extractIdentifiers(prop.argument, nodes); + } else { + extractIdentifiers(prop.value, nodes); + } + } + break; + case "ArrayPattern": + param.elements.forEach((element) => { + if (element) extractIdentifiers(element, nodes); + }); + break; + case "RestElement": + extractIdentifiers(param.argument, nodes); + break; + case "AssignmentPattern": + extractIdentifiers(param.left, nodes); + break; + } + return nodes; +} +function markKnownIds(name, knownIds) { + if (name in knownIds) { + knownIds[name]++; + } else { + knownIds[name] = 1; + } +} +function markScopeIdentifier(node, child, knownIds) { + const { name } = child; + if (node.scopeIds && node.scopeIds.has(name)) { + return; + } + markKnownIds(name, knownIds); + (node.scopeIds || (node.scopeIds = /* @__PURE__ */ new Set())).add(name); +} +const isFunctionType = (node) => { + return /Function(?:Expression|Declaration)$|Method$/.test(node.type); +}; +const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed; +const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node; +function isReferenced(node, parent, grandparent) { + switch (parent.type) { + // yes: PARENT[NODE] + // yes: NODE.child + // no: parent.NODE + case "MemberExpression": + case "OptionalMemberExpression": + if (parent.property === node) { + return !!parent.computed; + } + return parent.object === node; + case "JSXMemberExpression": + return parent.object === node; + // no: let NODE = init; + // yes: let id = NODE; + case "VariableDeclarator": + return parent.init === node; + // yes: () => NODE + // no: (NODE) => {} + case "ArrowFunctionExpression": + return parent.body === node; + // no: class { #NODE; } + // no: class { get #NODE() {} } + // no: class { #NODE() {} } + // no: class { fn() { return this.#NODE; } } + case "PrivateName": + return false; + // no: class { NODE() {} } + // yes: class { [NODE]() {} } + // no: class { foo(NODE) {} } + case "ClassMethod": + case "ClassPrivateMethod": + case "ObjectMethod": + if (parent.key === node) { + return !!parent.computed; + } + return false; + // yes: { [NODE]: "" } + // no: { NODE: "" } + // depends: { NODE } + // depends: { key: NODE } + case "ObjectProperty": + if (parent.key === node) { + return !!parent.computed; + } + return !grandparent || grandparent.type !== "ObjectPattern"; + // no: class { NODE = value; } + // yes: class { [NODE] = value; } + // yes: class { key = NODE; } + case "ClassProperty": + if (parent.key === node) { + return !!parent.computed; + } + return true; + case "ClassPrivateProperty": + return parent.key !== node; + // no: class NODE {} + // yes: class Foo extends NODE {} + case "ClassDeclaration": + case "ClassExpression": + return parent.superClass === node; + // yes: left = NODE; + // no: NODE = right; + case "AssignmentExpression": + return parent.right === node; + // no: [NODE = foo] = []; + // yes: [foo = NODE] = []; + case "AssignmentPattern": + return parent.right === node; + // no: NODE: for (;;) {} + case "LabeledStatement": + return false; + // no: try {} catch (NODE) {} + case "CatchClause": + return false; + // no: function foo(...NODE) {} + case "RestElement": + return false; + case "BreakStatement": + case "ContinueStatement": + return false; + // no: function NODE() {} + // no: function foo(NODE) {} + case "FunctionDeclaration": + case "FunctionExpression": + return false; + // no: export NODE from "foo"; + // no: export * as NODE from "foo"; + case "ExportNamespaceSpecifier": + case "ExportDefaultSpecifier": + return false; + // no: export { foo as NODE }; + // yes: export { NODE as foo }; + // no: export { NODE as foo } from "foo"; + case "ExportSpecifier": + if (grandparent == null ? void 0 : grandparent.source) { + return false; + } + return parent.local === node; + // no: import NODE from "foo"; + // no: import * as NODE from "foo"; + // no: import { NODE as foo } from "foo"; + // no: import { foo as NODE } from "foo"; + // no: import NODE from "bar"; + case "ImportDefaultSpecifier": + case "ImportNamespaceSpecifier": + case "ImportSpecifier": + return false; + // no: import "foo" assert { NODE: "json" } + case "ImportAttribute": + return false; + // no: <div NODE="foo" /> + case "JSXAttribute": + return false; + // no: [NODE] = []; + // no: ({ NODE }) = []; + case "ObjectPattern": + case "ArrayPattern": + return false; + // no: new.NODE + // no: NODE.target + case "MetaProperty": + return false; + // yes: type X = { someProperty: NODE } + // no: type X = { NODE: OtherType } + case "ObjectTypeProperty": + return parent.key !== node; + // yes: enum X { Foo = NODE } + // no: enum X { NODE } + case "TSEnumMember": + return parent.id !== node; + // yes: { [NODE]: value } + // no: { NODE: value } + case "TSPropertySignature": + if (parent.key === node) { + return !!parent.computed; + } + return true; + } + return true; +} +const TS_NODE_TYPES = [ + "TSAsExpression", + // foo as number + "TSTypeAssertion", + // (<number>foo) + "TSNonNullExpression", + // foo! + "TSInstantiationExpression", + // foo<string> + "TSSatisfiesExpression" + // foo satisfies T +]; +function unwrapTSNode(node) { + if (TS_NODE_TYPES.includes(node.type)) { + return unwrapTSNode(node.expression); + } else { + return node; + } +} + +const isStaticExp = (p) => p.type === 4 && p.isStatic; +function isCoreComponent(tag) { + switch (tag) { + case "Teleport": + case "teleport": + return TELEPORT; + case "Suspense": + case "suspense": + return SUSPENSE; + case "KeepAlive": + case "keep-alive": + return KEEP_ALIVE; + case "BaseTransition": + case "base-transition": + return BASE_TRANSITION; + } +} +const nonIdentifierRE = /^$|^\d|[^\$\w\xA0-\uFFFF]/; +const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name); +const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/; +const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/; +const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g; +const getExpSource = (exp) => exp.type === 4 ? exp.content : exp.loc.source; +const isMemberExpressionBrowser = (exp) => { + const path = getExpSource(exp).trim().replace(whitespaceRE, (s) => s.trim()); + let state = 0 /* inMemberExp */; + let stateStack = []; + let currentOpenBracketCount = 0; + let currentOpenParensCount = 0; + let currentStringType = null; + for (let i = 0; i < path.length; i++) { + const char = path.charAt(i); + switch (state) { + case 0 /* inMemberExp */: + if (char === "[") { + stateStack.push(state); + state = 1 /* inBrackets */; + currentOpenBracketCount++; + } else if (char === "(") { + stateStack.push(state); + state = 2 /* inParens */; + currentOpenParensCount++; + } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) { + return false; + } + break; + case 1 /* inBrackets */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `[`) { + currentOpenBracketCount++; + } else if (char === `]`) { + if (!--currentOpenBracketCount) { + state = stateStack.pop(); + } + } + break; + case 2 /* inParens */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `(`) { + currentOpenParensCount++; + } else if (char === `)`) { + if (i === path.length - 1) { + return false; + } + if (!--currentOpenParensCount) { + state = stateStack.pop(); + } + } + break; + case 3 /* inString */: + if (char === currentStringType) { + state = stateStack.pop(); + currentStringType = null; + } + break; + } + } + return !currentOpenBracketCount && !currentOpenParensCount; +}; +const isMemberExpressionNode = (exp, context) => { + try { + let ret = exp.ast || parser.parseExpression(getExpSource(exp), { + plugins: context.expressionPlugins ? [...context.expressionPlugins, "typescript"] : ["typescript"] + }); + ret = unwrapTSNode(ret); + return ret.type === "MemberExpression" || ret.type === "OptionalMemberExpression" || ret.type === "Identifier" && ret.name !== "undefined"; + } catch (e) { + return false; + } +}; +const isMemberExpression = isMemberExpressionNode; +const fnExpRE = /^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/; +const isFnExpressionBrowser = (exp) => fnExpRE.test(getExpSource(exp)); +const isFnExpressionNode = (exp, context) => { + try { + let ret = exp.ast || parser.parseExpression(getExpSource(exp), { + plugins: context.expressionPlugins ? [...context.expressionPlugins, "typescript"] : ["typescript"] + }); + if (ret.type === "Program") { + ret = ret.body[0]; + if (ret.type === "ExpressionStatement") { + ret = ret.expression; + } + } + ret = unwrapTSNode(ret); + return ret.type === "FunctionExpression" || ret.type === "ArrowFunctionExpression"; + } catch (e) { + return false; + } +}; +const isFnExpression = isFnExpressionNode; +function advancePositionWithClone(pos, source, numberOfCharacters = source.length) { + return advancePositionWithMutation( + { + offset: pos.offset, + line: pos.line, + column: pos.column + }, + source, + numberOfCharacters + ); +} +function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) { + let linesCount = 0; + let lastNewLinePos = -1; + for (let i = 0; i < numberOfCharacters; i++) { + if (source.charCodeAt(i) === 10) { + linesCount++; + lastNewLinePos = i; + } + } + pos.offset += numberOfCharacters; + pos.line += linesCount; + pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos; + return pos; +} +function assert(condition, msg) { + if (!condition) { + throw new Error(msg || `unexpected compiler condition`); + } +} +function findDir(node, name, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (allowEmpty || p.exp) && (shared.isString(name) ? p.name === name : name.test(p.name))) { + return p; + } + } +} +function findProp(node, name, dynamicOnly = false, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (dynamicOnly) continue; + if (p.name === name && (p.value || allowEmpty)) { + return p; + } + } else if (p.name === "bind" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) { + return p; + } + } +} +function isStaticArgOf(arg, name) { + return !!(arg && isStaticExp(arg) && arg.content === name); +} +function hasDynamicKeyVBind(node) { + return node.props.some( + (p) => p.type === 7 && p.name === "bind" && (!p.arg || // v-bind="obj" + p.arg.type !== 4 || // v-bind:[_ctx.foo] + !p.arg.isStatic) + // v-bind:[foo] + ); +} +function isText$1(node) { + return node.type === 5 || node.type === 2; +} +function isVPre(p) { + return p.type === 7 && p.name === "pre"; +} +function isVSlot(p) { + return p.type === 7 && p.name === "slot"; +} +function isTemplateNode(node) { + return node.type === 1 && node.tagType === 3; +} +function isSlotOutlet(node) { + return node.type === 1 && node.tagType === 2; +} +const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]); +function getUnnormalizedProps(props, callPath = []) { + if (props && !shared.isString(props) && props.type === 14) { + const callee = props.callee; + if (!shared.isString(callee) && propsHelperSet.has(callee)) { + return getUnnormalizedProps( + props.arguments[0], + callPath.concat(props) + ); + } + } + return [props, callPath]; +} +function injectProp(node, prop, context) { + let propsWithInjection; + let props = node.type === 13 ? node.props : node.arguments[2]; + let callPath = []; + let parentCall; + if (props && !shared.isString(props) && props.type === 14) { + const ret = getUnnormalizedProps(props); + props = ret[0]; + callPath = ret[1]; + parentCall = callPath[callPath.length - 1]; + } + if (props == null || shared.isString(props)) { + propsWithInjection = createObjectExpression([prop]); + } else if (props.type === 14) { + const first = props.arguments[0]; + if (!shared.isString(first) && first.type === 15) { + if (!hasProp(prop, first)) { + first.properties.unshift(prop); + } + } else { + if (props.callee === TO_HANDLERS) { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + } else { + props.arguments.unshift(createObjectExpression([prop])); + } + } + !propsWithInjection && (propsWithInjection = props); + } else if (props.type === 15) { + if (!hasProp(prop, props)) { + props.properties.unshift(prop); + } + propsWithInjection = props; + } else { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) { + parentCall = callPath[callPath.length - 2]; + } + } + if (node.type === 13) { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.props = propsWithInjection; + } + } else { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.arguments[2] = propsWithInjection; + } + } +} +function hasProp(prop, props) { + let result = false; + if (prop.key.type === 4) { + const propKeyName = prop.key.content; + result = props.properties.some( + (p) => p.key.type === 4 && p.key.content === propKeyName + ); + } + return result; +} +function toValidAssetId(name, type) { + return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => { + return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString(); + })}`; +} +function hasScopeRef(node, ids) { + if (!node || Object.keys(ids).length === 0) { + return false; + } + switch (node.type) { + case 1: + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) { + return true; + } + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 11: + if (hasScopeRef(node.source, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 9: + return node.branches.some((b) => hasScopeRef(b, ids)); + case 10: + if (hasScopeRef(node.condition, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 4: + return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content]; + case 8: + return node.children.some((c) => shared.isObject(c) && hasScopeRef(c, ids)); + case 5: + case 12: + return hasScopeRef(node.content, ids); + case 2: + case 3: + case 20: + return false; + default: + return false; + } +} +function getMemoedVNodeCall(node) { + if (node.type === 14 && node.callee === WITH_MEMO) { + return node.arguments[1].returns; + } else { + return node; + } +} +const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/; + +const defaultParserOptions = { + parseMode: "base", + ns: 0, + delimiters: [`{{`, `}}`], + getNamespace: () => 0, + isVoidTag: shared.NO, + isPreTag: shared.NO, + isIgnoreNewlineTag: shared.NO, + isCustomElement: shared.NO, + onError: defaultOnError, + onWarn: defaultOnWarn, + comments: true, + prefixIdentifiers: false +}; +let currentOptions = defaultParserOptions; +let currentRoot = null; +let currentInput = ""; +let currentOpenTag = null; +let currentProp = null; +let currentAttrValue = ""; +let currentAttrStartIndex = -1; +let currentAttrEndIndex = -1; +let inPre = 0; +let inVPre = false; +let currentVPreBoundary = null; +const stack = []; +const tokenizer = new Tokenizer(stack, { + onerr: emitError, + ontext(start, end) { + onText(getSlice(start, end), start, end); + }, + ontextentity(char, start, end) { + onText(char, start, end); + }, + oninterpolation(start, end) { + if (inVPre) { + return onText(getSlice(start, end), start, end); + } + let innerStart = start + tokenizer.delimiterOpen.length; + let innerEnd = end - tokenizer.delimiterClose.length; + while (isWhitespace(currentInput.charCodeAt(innerStart))) { + innerStart++; + } + while (isWhitespace(currentInput.charCodeAt(innerEnd - 1))) { + innerEnd--; + } + let exp = getSlice(innerStart, innerEnd); + if (exp.includes("&")) { + { + exp = decode_js.decodeHTML(exp); + } + } + addNode({ + type: 5, + content: createExp(exp, false, getLoc(innerStart, innerEnd)), + loc: getLoc(start, end) + }); + }, + onopentagname(start, end) { + const name = getSlice(start, end); + currentOpenTag = { + type: 1, + tag: name, + ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns), + tagType: 0, + // will be refined on tag close + props: [], + children: [], + loc: getLoc(start - 1, end), + codegenNode: void 0 + }; + }, + onopentagend(end) { + endOpenTag(end); + }, + onclosetag(start, end) { + const name = getSlice(start, end); + if (!currentOptions.isVoidTag(name)) { + let found = false; + for (let i = 0; i < stack.length; i++) { + const e = stack[i]; + if (e.tag.toLowerCase() === name.toLowerCase()) { + found = true; + if (i > 0) { + emitError(24, stack[0].loc.start.offset); + } + for (let j = 0; j <= i; j++) { + const el = stack.shift(); + onCloseTag(el, end, j < i); + } + break; + } + } + if (!found) { + emitError(23, backTrack(start, 60)); + } + } + }, + onselfclosingtag(end) { + const name = currentOpenTag.tag; + currentOpenTag.isSelfClosing = true; + endOpenTag(end); + if (stack[0] && stack[0].tag === name) { + onCloseTag(stack.shift(), end); + } + }, + onattribname(start, end) { + currentProp = { + type: 6, + name: getSlice(start, end), + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + }, + ondirname(start, end) { + const raw = getSlice(start, end); + const name = raw === "." || raw === ":" ? "bind" : raw === "@" ? "on" : raw === "#" ? "slot" : raw.slice(2); + if (!inVPre && name === "") { + emitError(26, start); + } + if (inVPre || name === "") { + currentProp = { + type: 6, + name: raw, + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + } else { + currentProp = { + type: 7, + name, + rawName: raw, + exp: void 0, + arg: void 0, + modifiers: raw === "." ? [createSimpleExpression("prop")] : [], + loc: getLoc(start) + }; + if (name === "pre") { + inVPre = tokenizer.inVPre = true; + currentVPreBoundary = currentOpenTag; + const props = currentOpenTag.props; + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7) { + props[i] = dirToAttr(props[i]); + } + } + } + } + }, + ondirarg(start, end) { + if (start === end) return; + const arg = getSlice(start, end); + if (inVPre && !isVPre(currentProp)) { + currentProp.name += arg; + setLocEnd(currentProp.nameLoc, end); + } else { + const isStatic = arg[0] !== `[`; + currentProp.arg = createExp( + isStatic ? arg : arg.slice(1, -1), + isStatic, + getLoc(start, end), + isStatic ? 3 : 0 + ); + } + }, + ondirmodifier(start, end) { + const mod = getSlice(start, end); + if (inVPre && !isVPre(currentProp)) { + currentProp.name += "." + mod; + setLocEnd(currentProp.nameLoc, end); + } else if (currentProp.name === "slot") { + const arg = currentProp.arg; + if (arg) { + arg.content += "." + mod; + setLocEnd(arg.loc, end); + } + } else { + const exp = createSimpleExpression(mod, true, getLoc(start, end)); + currentProp.modifiers.push(exp); + } + }, + onattribdata(start, end) { + currentAttrValue += getSlice(start, end); + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribentity(char, start, end) { + currentAttrValue += char; + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribnameend(end) { + const start = currentProp.loc.start.offset; + const name = getSlice(start, end); + if (currentProp.type === 7) { + currentProp.rawName = name; + } + if (currentOpenTag.props.some( + (p) => (p.type === 7 ? p.rawName : p.name) === name + )) { + emitError(2, start); + } + }, + onattribend(quote, end) { + if (currentOpenTag && currentProp) { + setLocEnd(currentProp.loc, end); + if (quote !== 0) { + if (currentProp.type === 6) { + if (currentProp.name === "class") { + currentAttrValue = condense(currentAttrValue).trim(); + } + if (quote === 1 && !currentAttrValue) { + emitError(13, end); + } + currentProp.value = { + type: 2, + content: currentAttrValue, + loc: quote === 1 ? getLoc(currentAttrStartIndex, currentAttrEndIndex) : getLoc(currentAttrStartIndex - 1, currentAttrEndIndex + 1) + }; + if (tokenizer.inSFCRoot && currentOpenTag.tag === "template" && currentProp.name === "lang" && currentAttrValue && currentAttrValue !== "html") { + tokenizer.enterRCDATA(toCharCodes(`</template`), 0); + } + } else { + let expParseMode = 0 /* Normal */; + { + if (currentProp.name === "for") { + expParseMode = 3 /* Skip */; + } else if (currentProp.name === "slot") { + expParseMode = 1 /* Params */; + } else if (currentProp.name === "on" && currentAttrValue.includes(";")) { + expParseMode = 2 /* Statements */; + } + } + currentProp.exp = createExp( + currentAttrValue, + false, + getLoc(currentAttrStartIndex, currentAttrEndIndex), + 0, + expParseMode + ); + if (currentProp.name === "for") { + currentProp.forParseResult = parseForExpression(currentProp.exp); + } + let syncIndex = -1; + if (currentProp.name === "bind" && (syncIndex = currentProp.modifiers.findIndex( + (mod) => mod.content === "sync" + )) > -1 && checkCompatEnabled( + "COMPILER_V_BIND_SYNC", + currentOptions, + currentProp.loc, + currentProp.arg.loc.source + )) { + currentProp.name = "model"; + currentProp.modifiers.splice(syncIndex, 1); + } + } + } + if (currentProp.type !== 7 || currentProp.name !== "pre") { + currentOpenTag.props.push(currentProp); + } + } + currentAttrValue = ""; + currentAttrStartIndex = currentAttrEndIndex = -1; + }, + oncomment(start, end) { + if (currentOptions.comments) { + addNode({ + type: 3, + content: getSlice(start, end), + loc: getLoc(start - 4, end + 3) + }); + } + }, + onend() { + const end = currentInput.length; + if (tokenizer.state !== 1) { + switch (tokenizer.state) { + case 5: + case 8: + emitError(5, end); + break; + case 3: + case 4: + emitError( + 25, + tokenizer.sectionStart + ); + break; + case 28: + if (tokenizer.currentSequence === Sequences.CdataEnd) { + emitError(6, end); + } else { + emitError(7, end); + } + break; + case 6: + case 7: + case 9: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + // " + case 20: + // ' + case 21: + emitError(9, end); + break; + } + } + for (let index = 0; index < stack.length; index++) { + onCloseTag(stack[index], end - 1); + emitError(24, stack[index].loc.start.offset); + } + }, + oncdata(start, end) { + if (stack[0].ns !== 0) { + onText(getSlice(start, end), start, end); + } else { + emitError(1, start - 9); + } + }, + onprocessinginstruction(start) { + if ((stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + emitError( + 21, + start - 1 + ); + } + } +}); +const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; +const stripParensRE = /^\(|\)$/g; +function parseForExpression(input) { + const loc = input.loc; + const exp = input.content; + const inMatch = exp.match(forAliasRE); + if (!inMatch) return; + const [, LHS, RHS] = inMatch; + const createAliasExpression = (content, offset, asParam = false) => { + const start = loc.start.offset + offset; + const end = start + content.length; + return createExp( + content, + false, + getLoc(start, end), + 0, + asParam ? 1 /* Params */ : 0 /* Normal */ + ); + }; + const result = { + source: createAliasExpression(RHS.trim(), exp.indexOf(RHS, LHS.length)), + value: void 0, + key: void 0, + index: void 0, + finalized: false + }; + let valueContent = LHS.trim().replace(stripParensRE, "").trim(); + const trimmedOffset = LHS.indexOf(valueContent); + const iteratorMatch = valueContent.match(forIteratorRE); + if (iteratorMatch) { + valueContent = valueContent.replace(forIteratorRE, "").trim(); + const keyContent = iteratorMatch[1].trim(); + let keyOffset; + if (keyContent) { + keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length); + result.key = createAliasExpression(keyContent, keyOffset, true); + } + if (iteratorMatch[2]) { + const indexContent = iteratorMatch[2].trim(); + if (indexContent) { + result.index = createAliasExpression( + indexContent, + exp.indexOf( + indexContent, + result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length + ), + true + ); + } + } + } + if (valueContent) { + result.value = createAliasExpression(valueContent, trimmedOffset, true); + } + return result; +} +function getSlice(start, end) { + return currentInput.slice(start, end); +} +function endOpenTag(end) { + if (tokenizer.inSFCRoot) { + currentOpenTag.innerLoc = getLoc(end + 1, end + 1); + } + addNode(currentOpenTag); + const { tag, ns } = currentOpenTag; + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre++; + } + if (currentOptions.isVoidTag(tag)) { + onCloseTag(currentOpenTag, end); + } else { + stack.unshift(currentOpenTag); + if (ns === 1 || ns === 2) { + tokenizer.inXML = true; + } + } + currentOpenTag = null; +} +function onText(content, start, end) { + const parent = stack[0] || currentRoot; + const lastNode = parent.children[parent.children.length - 1]; + if (lastNode && lastNode.type === 2) { + lastNode.content += content; + setLocEnd(lastNode.loc, end); + } else { + parent.children.push({ + type: 2, + content, + loc: getLoc(start, end) + }); + } +} +function onCloseTag(el, end, isImplied = false) { + if (isImplied) { + setLocEnd(el.loc, backTrack(end, 60)); + } else { + setLocEnd(el.loc, lookAhead(end, 62) + 1); + } + if (tokenizer.inSFCRoot) { + if (el.children.length) { + el.innerLoc.end = shared.extend({}, el.children[el.children.length - 1].loc.end); + } else { + el.innerLoc.end = shared.extend({}, el.innerLoc.start); + } + el.innerLoc.source = getSlice( + el.innerLoc.start.offset, + el.innerLoc.end.offset + ); + } + const { tag, ns, children } = el; + if (!inVPre) { + if (tag === "slot") { + el.tagType = 2; + } else if (isFragmentTemplate(el)) { + el.tagType = 3; + } else if (isComponent(el)) { + el.tagType = 1; + } + } + if (!tokenizer.inRCDATA) { + el.children = condenseWhitespace(children); + } + if (ns === 0 && currentOptions.isIgnoreNewlineTag(tag)) { + const first = children[0]; + if (first && first.type === 2) { + first.content = first.content.replace(/^\r?\n/, ""); + } + } + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre--; + } + if (currentVPreBoundary === el) { + inVPre = tokenizer.inVPre = false; + currentVPreBoundary = null; + } + if (tokenizer.inXML && (stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + tokenizer.inXML = false; + } + { + const props = el.props; + if (isCompatEnabled( + "COMPILER_V_IF_V_FOR_PRECEDENCE", + currentOptions + )) { + let hasIf = false; + let hasFor = false; + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 7) { + if (p.name === "if") { + hasIf = true; + } else if (p.name === "for") { + hasFor = true; + } + } + if (hasIf && hasFor) { + warnDeprecation( + "COMPILER_V_IF_V_FOR_PRECEDENCE", + currentOptions, + el.loc + ); + break; + } + } + } + if (!tokenizer.inSFCRoot && isCompatEnabled( + "COMPILER_NATIVE_TEMPLATE", + currentOptions + ) && el.tag === "template" && !isFragmentTemplate(el)) { + warnDeprecation( + "COMPILER_NATIVE_TEMPLATE", + currentOptions, + el.loc + ); + const parent = stack[0] || currentRoot; + const index = parent.children.indexOf(el); + parent.children.splice(index, 1, ...el.children); + } + const inlineTemplateProp = props.find( + (p) => p.type === 6 && p.name === "inline-template" + ); + if (inlineTemplateProp && checkCompatEnabled( + "COMPILER_INLINE_TEMPLATE", + currentOptions, + inlineTemplateProp.loc + ) && el.children.length) { + inlineTemplateProp.value = { + type: 2, + content: getSlice( + el.children[0].loc.start.offset, + el.children[el.children.length - 1].loc.end.offset + ), + loc: inlineTemplateProp.loc + }; + } + } +} +function lookAhead(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i < currentInput.length - 1) i++; + return i; +} +function backTrack(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i >= 0) i--; + return i; +} +const specialTemplateDir = /* @__PURE__ */ new Set(["if", "else", "else-if", "for", "slot"]); +function isFragmentTemplate({ tag, props }) { + if (tag === "template") { + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7 && specialTemplateDir.has(props[i].name)) { + return true; + } + } + } + return false; +} +function isComponent({ tag, props }) { + if (currentOptions.isCustomElement(tag)) { + return false; + } + if (tag === "component" || isUpperCase(tag.charCodeAt(0)) || isCoreComponent(tag) || currentOptions.isBuiltInComponent && currentOptions.isBuiltInComponent(tag) || currentOptions.isNativeTag && !currentOptions.isNativeTag(tag)) { + return true; + } + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 6) { + if (p.name === "is" && p.value) { + if (p.value.content.startsWith("vue:")) { + return true; + } else if (checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; + } + } + } else if (// :is on plain element - only treat as component in compat mode + p.name === "bind" && isStaticArgOf(p.arg, "is") && checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; + } + } + return false; +} +function isUpperCase(c) { + return c > 64 && c < 91; +} +const windowsNewlineRE = /\r\n/g; +function condenseWhitespace(nodes) { + const shouldCondense = currentOptions.whitespace !== "preserve"; + let removedWhitespace = false; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (node.type === 2) { + if (!inPre) { + if (isAllWhitespace(node.content)) { + const prev = nodes[i - 1] && nodes[i - 1].type; + const next = nodes[i + 1] && nodes[i + 1].type; + if (!prev || !next || shouldCondense && (prev === 3 && (next === 3 || next === 1) || prev === 1 && (next === 3 || next === 1 && hasNewlineChar(node.content)))) { + removedWhitespace = true; + nodes[i] = null; + } else { + node.content = " "; + } + } else if (shouldCondense) { + node.content = condense(node.content); + } + } else { + node.content = node.content.replace(windowsNewlineRE, "\n"); + } + } + } + return removedWhitespace ? nodes.filter(Boolean) : nodes; +} +function isAllWhitespace(str) { + for (let i = 0; i < str.length; i++) { + if (!isWhitespace(str.charCodeAt(i))) { + return false; + } + } + return true; +} +function hasNewlineChar(str) { + for (let i = 0; i < str.length; i++) { + const c = str.charCodeAt(i); + if (c === 10 || c === 13) { + return true; + } + } + return false; +} +function condense(str) { + let ret = ""; + let prevCharIsWhitespace = false; + for (let i = 0; i < str.length; i++) { + if (isWhitespace(str.charCodeAt(i))) { + if (!prevCharIsWhitespace) { + ret += " "; + prevCharIsWhitespace = true; + } + } else { + ret += str[i]; + prevCharIsWhitespace = false; + } + } + return ret; +} +function addNode(node) { + (stack[0] || currentRoot).children.push(node); +} +function getLoc(start, end) { + return { + start: tokenizer.getPos(start), + // @ts-expect-error allow late attachment + end: end == null ? end : tokenizer.getPos(end), + // @ts-expect-error allow late attachment + source: end == null ? end : getSlice(start, end) + }; +} +function cloneLoc(loc) { + return getLoc(loc.start.offset, loc.end.offset); +} +function setLocEnd(loc, end) { + loc.end = tokenizer.getPos(end); + loc.source = getSlice(loc.start.offset, end); +} +function dirToAttr(dir) { + const attr = { + type: 6, + name: dir.rawName, + nameLoc: getLoc( + dir.loc.start.offset, + dir.loc.start.offset + dir.rawName.length + ), + value: void 0, + loc: dir.loc + }; + if (dir.exp) { + const loc = dir.exp.loc; + if (loc.end.offset < dir.loc.end.offset) { + loc.start.offset--; + loc.start.column--; + loc.end.offset++; + loc.end.column++; + } + attr.value = { + type: 2, + content: dir.exp.content, + loc + }; + } + return attr; +} +function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0 /* Normal */) { + const exp = createSimpleExpression(content, isStatic, loc, constType); + if (!isStatic && currentOptions.prefixIdentifiers && parseMode !== 3 /* Skip */ && content.trim()) { + if (isSimpleIdentifier(content)) { + exp.ast = null; + return exp; + } + try { + const plugins = currentOptions.expressionPlugins; + const options = { + plugins: plugins ? [...plugins, "typescript"] : ["typescript"] + }; + if (parseMode === 2 /* Statements */) { + exp.ast = parser.parse(` ${content} `, options).program; + } else if (parseMode === 1 /* Params */) { + exp.ast = parser.parseExpression(`(${content})=>{}`, options); + } else { + exp.ast = parser.parseExpression(`(${content})`, options); + } + } catch (e) { + exp.ast = false; + emitError(45, loc.start.offset, e.message); + } + } + return exp; +} +function emitError(code, index, message) { + currentOptions.onError( + createCompilerError(code, getLoc(index, index), void 0, message) + ); +} +function reset() { + tokenizer.reset(); + currentOpenTag = null; + currentProp = null; + currentAttrValue = ""; + currentAttrStartIndex = -1; + currentAttrEndIndex = -1; + stack.length = 0; +} +function baseParse(input, options) { + reset(); + currentInput = input; + currentOptions = shared.extend({}, defaultParserOptions); + if (options) { + let key; + for (key in options) { + if (options[key] != null) { + currentOptions[key] = options[key]; + } + } + } + { + if (currentOptions.decodeEntities) { + console.warn( + `[@vue/compiler-core] decodeEntities option is passed but will be ignored in non-browser builds.` + ); + } + } + tokenizer.mode = currentOptions.parseMode === "html" ? 1 : currentOptions.parseMode === "sfc" ? 2 : 0; + tokenizer.inXML = currentOptions.ns === 1 || currentOptions.ns === 2; + const delimiters = options && options.delimiters; + if (delimiters) { + tokenizer.delimiterOpen = toCharCodes(delimiters[0]); + tokenizer.delimiterClose = toCharCodes(delimiters[1]); + } + const root = currentRoot = createRoot([], input); + tokenizer.parse(currentInput); + root.loc = getLoc(0, input.length); + root.children = condenseWhitespace(root.children); + currentRoot = null; + return root; +} + +function cacheStatic(root, context) { + walk( + root, + void 0, + context, + // Root node is unfortunately non-hoistable due to potential parent + // fallthrough attributes. + !!getSingleElementRoot(root) + ); +} +function getSingleElementRoot(root) { + const children = root.children.filter((x) => x.type !== 3); + return children.length === 1 && children[0].type === 1 && !isSlotOutlet(children[0]) ? children[0] : null; +} +function walk(node, parent, context, doNotHoistNode = false, inFor = false) { + const { children } = node; + const toCache = []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.type === 1 && child.tagType === 0) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType > 0) { + if (constantType >= 2) { + child.codegenNode.patchFlag = -1; + toCache.push(child); + continue; + } + } else { + const codegenNode = child.codegenNode; + if (codegenNode.type === 13) { + const flag = codegenNode.patchFlag; + if ((flag === void 0 || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) { + const props = getNodeProps(child); + if (props) { + codegenNode.props = context.hoist(props); + } + } + if (codegenNode.dynamicProps) { + codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps); + } + } + } + } else if (child.type === 12) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType >= 2) { + if (child.codegenNode.type === 14 && child.codegenNode.arguments.length > 0) { + child.codegenNode.arguments.push( + -1 + (` /* ${shared.PatchFlagNames[-1]} */` ) + ); + } + toCache.push(child); + continue; + } + } + if (child.type === 1) { + const isComponent = child.tagType === 1; + if (isComponent) { + context.scopes.vSlot++; + } + walk(child, node, context, false, inFor); + if (isComponent) { + context.scopes.vSlot--; + } + } else if (child.type === 11) { + walk(child, node, context, child.children.length === 1, true); + } else if (child.type === 9) { + for (let i2 = 0; i2 < child.branches.length; i2++) { + walk( + child.branches[i2], + node, + context, + child.branches[i2].children.length === 1, + inFor + ); + } + } + } + let cachedAsArray = false; + const slotCacheKeys = []; + if (toCache.length === children.length && node.type === 1) { + if (node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared.isArray(node.codegenNode.children)) { + node.codegenNode.children = getCacheExpression( + createArrayExpression(node.codegenNode.children) + ); + cachedAsArray = true; + } else if (node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !shared.isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) { + const slot = getSlotNode(node.codegenNode, "default"); + if (slot) { + slotCacheKeys.push(context.cached.length); + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } else if (node.tagType === 3 && parent && parent.type === 1 && parent.tagType === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !shared.isArray(parent.codegenNode.children) && parent.codegenNode.children.type === 15) { + const slotName = findDir(node, "slot", true); + const slot = slotName && slotName.arg && getSlotNode(parent.codegenNode, slotName.arg); + if (slot) { + slotCacheKeys.push(context.cached.length); + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } + } + if (!cachedAsArray) { + for (const child of toCache) { + slotCacheKeys.push(context.cached.length); + child.codegenNode = context.cache(child.codegenNode); + } + } + if (slotCacheKeys.length && node.type === 1 && node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !shared.isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) { + node.codegenNode.children.properties.push( + createObjectProperty( + `__`, + createSimpleExpression(JSON.stringify(slotCacheKeys), false) + ) + ); + } + function getCacheExpression(value) { + const exp = context.cache(value); + if (inFor && context.hmr) { + exp.needArraySpread = true; + } + return exp; + } + function getSlotNode(node2, name) { + if (node2.children && !shared.isArray(node2.children) && node2.children.type === 15) { + const slot = node2.children.properties.find( + (p) => p.key === name || p.key.content === name + ); + return slot && slot.value; + } + } + if (toCache.length && context.transformHoist) { + context.transformHoist(children, context, node); + } +} +function getConstantType(node, context) { + const { constantCache } = context; + switch (node.type) { + case 1: + if (node.tagType !== 0) { + return 0; + } + const cached = constantCache.get(node); + if (cached !== void 0) { + return cached; + } + const codegenNode = node.codegenNode; + if (codegenNode.type !== 13) { + return 0; + } + if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject" && node.tag !== "math") { + return 0; + } + if (codegenNode.patchFlag === void 0) { + let returnType2 = 3; + const generatedPropsType = getGeneratedPropsConstantType(node, context); + if (generatedPropsType === 0) { + constantCache.set(node, 0); + return 0; + } + if (generatedPropsType < returnType2) { + returnType2 = generatedPropsType; + } + for (let i = 0; i < node.children.length; i++) { + const childType = getConstantType(node.children[i], context); + if (childType === 0) { + constantCache.set(node, 0); + return 0; + } + if (childType < returnType2) { + returnType2 = childType; + } + } + if (returnType2 > 1) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && p.name === "bind" && p.exp) { + const expType = getConstantType(p.exp, context); + if (expType === 0) { + constantCache.set(node, 0); + return 0; + } + if (expType < returnType2) { + returnType2 = expType; + } + } + } + } + if (codegenNode.isBlock) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7) { + constantCache.set(node, 0); + return 0; + } + } + context.removeHelper(OPEN_BLOCK); + context.removeHelper( + getVNodeBlockHelper(context.inSSR, codegenNode.isComponent) + ); + codegenNode.isBlock = false; + context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent)); + } + constantCache.set(node, returnType2); + return returnType2; + } else { + constantCache.set(node, 0); + return 0; + } + case 2: + case 3: + return 3; + case 9: + case 11: + case 10: + return 0; + case 5: + case 12: + return getConstantType(node.content, context); + case 4: + return node.constType; + case 8: + let returnType = 3; + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (shared.isString(child) || shared.isSymbol(child)) { + continue; + } + const childType = getConstantType(child, context); + if (childType === 0) { + return 0; + } else if (childType < returnType) { + returnType = childType; + } + } + return returnType; + case 20: + return 2; + default: + return 0; + } +} +const allowHoistedHelperSet = /* @__PURE__ */ new Set([ + NORMALIZE_CLASS, + NORMALIZE_STYLE, + NORMALIZE_PROPS, + GUARD_REACTIVE_PROPS +]); +function getConstantTypeOfHelperCall(value, context) { + if (value.type === 14 && !shared.isString(value.callee) && allowHoistedHelperSet.has(value.callee)) { + const arg = value.arguments[0]; + if (arg.type === 4) { + return getConstantType(arg, context); + } else if (arg.type === 14) { + return getConstantTypeOfHelperCall(arg, context); + } + } + return 0; +} +function getGeneratedPropsConstantType(node, context) { + let returnType = 3; + const props = getNodeProps(node); + if (props && props.type === 15) { + const { properties } = props; + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + const keyType = getConstantType(key, context); + if (keyType === 0) { + return keyType; + } + if (keyType < returnType) { + returnType = keyType; + } + let valueType; + if (value.type === 4) { + valueType = getConstantType(value, context); + } else if (value.type === 14) { + valueType = getConstantTypeOfHelperCall(value, context); + } else { + valueType = 0; + } + if (valueType === 0) { + return valueType; + } + if (valueType < returnType) { + returnType = valueType; + } + } + } + return returnType; +} +function getNodeProps(node) { + const codegenNode = node.codegenNode; + if (codegenNode.type === 13) { + return codegenNode.props; + } +} + +function createTransformContext(root, { + filename = "", + prefixIdentifiers = false, + hoistStatic = false, + hmr = false, + cacheHandlers = false, + nodeTransforms = [], + directiveTransforms = {}, + transformHoist = null, + isBuiltInComponent = shared.NOOP, + isCustomElement = shared.NOOP, + expressionPlugins = [], + scopeId = null, + slotted = true, + ssr = false, + inSSR = false, + ssrCssVars = ``, + bindingMetadata = shared.EMPTY_OBJ, + inline = false, + isTS = false, + onError = defaultOnError, + onWarn = defaultOnWarn, + compatConfig +}) { + const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/); + const context = { + // options + filename, + selfName: nameMatch && shared.capitalize(shared.camelize(nameMatch[1])), + prefixIdentifiers, + hoistStatic, + hmr, + cacheHandlers, + nodeTransforms, + directiveTransforms, + transformHoist, + isBuiltInComponent, + isCustomElement, + expressionPlugins, + scopeId, + slotted, + ssr, + inSSR, + ssrCssVars, + bindingMetadata, + inline, + isTS, + onError, + onWarn, + compatConfig, + // state + root, + helpers: /* @__PURE__ */ new Map(), + components: /* @__PURE__ */ new Set(), + directives: /* @__PURE__ */ new Set(), + hoists: [], + imports: [], + cached: [], + constantCache: /* @__PURE__ */ new WeakMap(), + temps: 0, + identifiers: /* @__PURE__ */ Object.create(null), + scopes: { + vFor: 0, + vSlot: 0, + vPre: 0, + vOnce: 0 + }, + parent: null, + grandParent: null, + currentNode: root, + childIndex: 0, + inVOnce: false, + // methods + helper(name) { + const count = context.helpers.get(name) || 0; + context.helpers.set(name, count + 1); + return name; + }, + removeHelper(name) { + const count = context.helpers.get(name); + if (count) { + const currentCount = count - 1; + if (!currentCount) { + context.helpers.delete(name); + } else { + context.helpers.set(name, currentCount); + } + } + }, + helperString(name) { + return `_${helperNameMap[context.helper(name)]}`; + }, + replaceNode(node) { + { + if (!context.currentNode) { + throw new Error(`Node being replaced is already removed.`); + } + if (!context.parent) { + throw new Error(`Cannot replace root node.`); + } + } + context.parent.children[context.childIndex] = context.currentNode = node; + }, + removeNode(node) { + if (!context.parent) { + throw new Error(`Cannot remove root node.`); + } + const list = context.parent.children; + const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1; + if (removalIndex < 0) { + throw new Error(`node being removed is not a child of current parent`); + } + if (!node || node === context.currentNode) { + context.currentNode = null; + context.onNodeRemoved(); + } else { + if (context.childIndex > removalIndex) { + context.childIndex--; + context.onNodeRemoved(); + } + } + context.parent.children.splice(removalIndex, 1); + }, + onNodeRemoved: shared.NOOP, + addIdentifiers(exp) { + { + if (shared.isString(exp)) { + addId(exp); + } else if (exp.identifiers) { + exp.identifiers.forEach(addId); + } else if (exp.type === 4) { + addId(exp.content); + } + } + }, + removeIdentifiers(exp) { + { + if (shared.isString(exp)) { + removeId(exp); + } else if (exp.identifiers) { + exp.identifiers.forEach(removeId); + } else if (exp.type === 4) { + removeId(exp.content); + } + } + }, + hoist(exp) { + if (shared.isString(exp)) exp = createSimpleExpression(exp); + context.hoists.push(exp); + const identifier = createSimpleExpression( + `_hoisted_${context.hoists.length}`, + false, + exp.loc, + 2 + ); + identifier.hoisted = exp; + return identifier; + }, + cache(exp, isVNode = false, inVOnce = false) { + const cacheExp = createCacheExpression( + context.cached.length, + exp, + isVNode, + inVOnce + ); + context.cached.push(cacheExp); + return cacheExp; + } + }; + { + context.filters = /* @__PURE__ */ new Set(); + } + function addId(id) { + const { identifiers } = context; + if (identifiers[id] === void 0) { + identifiers[id] = 0; + } + identifiers[id]++; + } + function removeId(id) { + context.identifiers[id]--; + } + return context; +} +function transform(root, options) { + const context = createTransformContext(root, options); + traverseNode(root, context); + if (options.hoistStatic) { + cacheStatic(root, context); + } + if (!options.ssr) { + createRootCodegen(root, context); + } + root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]); + root.components = [...context.components]; + root.directives = [...context.directives]; + root.imports = context.imports; + root.hoists = context.hoists; + root.temps = context.temps; + root.cached = context.cached; + root.transformed = true; + { + root.filters = [...context.filters]; + } +} +function createRootCodegen(root, context) { + const { helper } = context; + const { children } = root; + if (children.length === 1) { + const singleElementRootChild = getSingleElementRoot(root); + if (singleElementRootChild && singleElementRootChild.codegenNode) { + const codegenNode = singleElementRootChild.codegenNode; + if (codegenNode.type === 13) { + convertToBlock(codegenNode, context); + } + root.codegenNode = codegenNode; + } else { + root.codegenNode = children[0]; + } + } else if (children.length > 1) { + let patchFlag = 64; + if (children.filter((c) => c.type !== 3).length === 1) { + patchFlag |= 2048; + } + root.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + root.children, + patchFlag, + void 0, + void 0, + true, + void 0, + false + ); + } else ; +} +function traverseChildren(parent, context) { + let i = 0; + const nodeRemoved = () => { + i--; + }; + for (; i < parent.children.length; i++) { + const child = parent.children[i]; + if (shared.isString(child)) continue; + context.grandParent = context.parent; + context.parent = parent; + context.childIndex = i; + context.onNodeRemoved = nodeRemoved; + traverseNode(child, context); + } +} +function traverseNode(node, context) { + context.currentNode = node; + const { nodeTransforms } = context; + const exitFns = []; + for (let i2 = 0; i2 < nodeTransforms.length; i2++) { + const onExit = nodeTransforms[i2](node, context); + if (onExit) { + if (shared.isArray(onExit)) { + exitFns.push(...onExit); + } else { + exitFns.push(onExit); + } + } + if (!context.currentNode) { + return; + } else { + node = context.currentNode; + } + } + switch (node.type) { + case 3: + if (!context.ssr) { + context.helper(CREATE_COMMENT); + } + break; + case 5: + if (!context.ssr) { + context.helper(TO_DISPLAY_STRING); + } + break; + // for container types, further traverse downwards + case 9: + for (let i2 = 0; i2 < node.branches.length; i2++) { + traverseNode(node.branches[i2], context); + } + break; + case 10: + case 11: + case 1: + case 0: + traverseChildren(node, context); + break; + } + context.currentNode = node; + let i = exitFns.length; + while (i--) { + exitFns[i](); + } +} +function createStructuralDirectiveTransform(name, fn) { + const matches = shared.isString(name) ? (n) => n === name : (n) => name.test(n); + return (node, context) => { + if (node.type === 1) { + const { props } = node; + if (node.tagType === 3 && props.some(isVSlot)) { + return; + } + const exitFns = []; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 7 && matches(prop.name)) { + props.splice(i, 1); + i--; + const onExit = fn(node, prop, context); + if (onExit) exitFns.push(onExit); + } + } + return exitFns; + } + }; +} + +const PURE_ANNOTATION = `/*@__PURE__*/`; +const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`; +function createCodegenContext(ast, { + mode = "function", + prefixIdentifiers = mode === "module", + sourceMap = false, + filename = `template.vue.html`, + scopeId = null, + optimizeImports = false, + runtimeGlobalName = `Vue`, + runtimeModuleName = `vue`, + ssrRuntimeModuleName = "vue/server-renderer", + ssr = false, + isTS = false, + inSSR = false +}) { + const context = { + mode, + prefixIdentifiers, + sourceMap, + filename, + scopeId, + optimizeImports, + runtimeGlobalName, + runtimeModuleName, + ssrRuntimeModuleName, + ssr, + isTS, + inSSR, + source: ast.source, + code: ``, + column: 1, + line: 1, + offset: 0, + indentLevel: 0, + pure: false, + map: void 0, + helper(key) { + return `_${helperNameMap[key]}`; + }, + push(code, newlineIndex = -2 /* None */, node) { + context.code += code; + if (context.map) { + if (node) { + let name; + if (node.type === 4 && !node.isStatic) { + const content = node.content.replace(/^_ctx\./, ""); + if (content !== node.content && isSimpleIdentifier(content)) { + name = content; + } + } + if (node.loc.source) { + addMapping(node.loc.start, name); + } + } + if (newlineIndex === -3 /* Unknown */) { + advancePositionWithMutation(context, code); + } else { + context.offset += code.length; + if (newlineIndex === -2 /* None */) { + context.column += code.length; + } else { + if (newlineIndex === -1 /* End */) { + newlineIndex = code.length - 1; + } + context.line++; + context.column = code.length - newlineIndex; + } + } + if (node && node.loc !== locStub && node.loc.source) { + addMapping(node.loc.end); + } + } + }, + indent() { + newline(++context.indentLevel); + }, + deindent(withoutNewLine = false) { + if (withoutNewLine) { + --context.indentLevel; + } else { + newline(--context.indentLevel); + } + }, + newline() { + newline(context.indentLevel); + } + }; + function newline(n) { + context.push("\n" + ` `.repeat(n), 0 /* Start */); + } + function addMapping(loc, name = null) { + const { _names, _mappings } = context.map; + if (name !== null && !_names.has(name)) _names.add(name); + _mappings.add({ + originalLine: loc.line, + originalColumn: loc.column - 1, + // source-map column is 0 based + generatedLine: context.line, + generatedColumn: context.column - 1, + source: filename, + name + }); + } + if (sourceMap) { + context.map = new sourceMapJs.SourceMapGenerator(); + context.map.setSourceContent(filename, context.source); + context.map._sources.add(filename); + } + return context; +} +function generate(ast, options = {}) { + const context = createCodegenContext(ast, options); + if (options.onContextCreated) options.onContextCreated(context); + const { + mode, + push, + prefixIdentifiers, + indent, + deindent, + newline, + scopeId, + ssr + } = context; + const helpers = Array.from(ast.helpers); + const hasHelpers = helpers.length > 0; + const useWithBlock = !prefixIdentifiers && mode !== "module"; + const genScopeId = scopeId != null && mode === "module"; + const isSetupInlined = !!options.inline; + const preambleContext = isSetupInlined ? createCodegenContext(ast, options) : context; + if (mode === "module") { + genModulePreamble(ast, preambleContext, genScopeId, isSetupInlined); + } else { + genFunctionPreamble(ast, preambleContext); + } + const functionName = ssr ? `ssrRender` : `render`; + const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"]; + if (options.bindingMetadata && !options.inline) { + args.push("$props", "$setup", "$data", "$options"); + } + const signature = options.isTS ? args.map((arg) => `${arg}: any`).join(",") : args.join(", "); + if (isSetupInlined) { + push(`(${signature}) => {`); + } else { + push(`function ${functionName}(${signature}) {`); + } + indent(); + if (useWithBlock) { + push(`with (_ctx) {`); + indent(); + if (hasHelpers) { + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = _Vue +`, + -1 /* End */ + ); + newline(); + } + } + if (ast.components.length) { + genAssets(ast.components, "component", context); + if (ast.directives.length || ast.temps > 0) { + newline(); + } + } + if (ast.directives.length) { + genAssets(ast.directives, "directive", context); + if (ast.temps > 0) { + newline(); + } + } + if (ast.filters && ast.filters.length) { + newline(); + genAssets(ast.filters, "filter", context); + newline(); + } + if (ast.temps > 0) { + push(`let `); + for (let i = 0; i < ast.temps; i++) { + push(`${i > 0 ? `, ` : ``}_temp${i}`); + } + } + if (ast.components.length || ast.directives.length || ast.temps) { + push(` +`, 0 /* Start */); + newline(); + } + if (!ssr) { + push(`return `); + } + if (ast.codegenNode) { + genNode(ast.codegenNode, context); + } else { + push(`null`); + } + if (useWithBlock) { + deindent(); + push(`}`); + } + deindent(); + push(`}`); + return { + ast, + code: context.code, + preamble: isSetupInlined ? preambleContext.code : ``, + map: context.map ? context.map.toJSON() : void 0 + }; +} +function genFunctionPreamble(ast, context) { + const { + ssr, + prefixIdentifiers, + push, + newline, + runtimeModuleName, + runtimeGlobalName, + ssrRuntimeModuleName + } = context; + const VueBinding = ssr ? `require(${JSON.stringify(runtimeModuleName)})` : runtimeGlobalName; + const helpers = Array.from(ast.helpers); + if (helpers.length > 0) { + if (prefixIdentifiers) { + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = ${VueBinding} +`, + -1 /* End */ + ); + } else { + push(`const _Vue = ${VueBinding} +`, -1 /* End */); + if (ast.hoists.length) { + const staticHelpers = [ + CREATE_VNODE, + CREATE_ELEMENT_VNODE, + CREATE_COMMENT, + CREATE_TEXT, + CREATE_STATIC + ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", "); + push(`const { ${staticHelpers} } = _Vue +`, -1 /* End */); + } + } + } + if (ast.ssrHelpers && ast.ssrHelpers.length) { + push( + `const { ${ast.ssrHelpers.map(aliasHelper).join(", ")} } = require("${ssrRuntimeModuleName}") +`, + -1 /* End */ + ); + } + genHoists(ast.hoists, context); + newline(); + push(`return `); +} +function genModulePreamble(ast, context, genScopeId, inline) { + const { + push, + newline, + optimizeImports, + runtimeModuleName, + ssrRuntimeModuleName + } = context; + if (ast.helpers.size) { + const helpers = Array.from(ast.helpers); + if (optimizeImports) { + push( + `import { ${helpers.map((s) => helperNameMap[s]).join(", ")} } from ${JSON.stringify(runtimeModuleName)} +`, + -1 /* End */ + ); + push( + ` +// Binding optimization for webpack code-split +const ${helpers.map((s) => `_${helperNameMap[s]} = ${helperNameMap[s]}`).join(", ")} +`, + -1 /* End */ + ); + } else { + push( + `import { ${helpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from ${JSON.stringify(runtimeModuleName)} +`, + -1 /* End */ + ); + } + } + if (ast.ssrHelpers && ast.ssrHelpers.length) { + push( + `import { ${ast.ssrHelpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from "${ssrRuntimeModuleName}" +`, + -1 /* End */ + ); + } + if (ast.imports.length) { + genImports(ast.imports, context); + newline(); + } + genHoists(ast.hoists, context); + newline(); + if (!inline) { + push(`export `); + } +} +function genAssets(assets, type, { helper, push, newline, isTS }) { + const resolver = helper( + type === "filter" ? RESOLVE_FILTER : type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE + ); + for (let i = 0; i < assets.length; i++) { + let id = assets[i]; + const maybeSelfReference = id.endsWith("__self"); + if (maybeSelfReference) { + id = id.slice(0, -6); + } + push( + `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}` + ); + if (i < assets.length - 1) { + newline(); + } + } +} +function genHoists(hoists, context) { + if (!hoists.length) { + return; + } + context.pure = true; + const { push, newline } = context; + newline(); + for (let i = 0; i < hoists.length; i++) { + const exp = hoists[i]; + if (exp) { + push(`const _hoisted_${i + 1} = `); + genNode(exp, context); + newline(); + } + } + context.pure = false; +} +function genImports(importsOptions, context) { + if (!importsOptions.length) { + return; + } + importsOptions.forEach((imports) => { + context.push(`import `); + genNode(imports.exp, context); + context.push(` from '${imports.path}'`); + context.newline(); + }); +} +function isText(n) { + return shared.isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8; +} +function genNodeListAsArray(nodes, context) { + const multilines = nodes.length > 3 || nodes.some((n) => shared.isArray(n) || !isText(n)); + context.push(`[`); + multilines && context.indent(); + genNodeList(nodes, context, multilines); + multilines && context.deindent(); + context.push(`]`); +} +function genNodeList(nodes, context, multilines = false, comma = true) { + const { push, newline } = context; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (shared.isString(node)) { + push(node, -3 /* Unknown */); + } else if (shared.isArray(node)) { + genNodeListAsArray(node, context); + } else { + genNode(node, context); + } + if (i < nodes.length - 1) { + if (multilines) { + comma && push(","); + newline(); + } else { + comma && push(", "); + } + } + } +} +function genNode(node, context) { + if (shared.isString(node)) { + context.push(node, -3 /* Unknown */); + return; + } + if (shared.isSymbol(node)) { + context.push(context.helper(node)); + return; + } + switch (node.type) { + case 1: + case 9: + case 11: + assert( + node.codegenNode != null, + `Codegen node is missing for element/if/for node. Apply appropriate transforms first.` + ); + genNode(node.codegenNode, context); + break; + case 2: + genText(node, context); + break; + case 4: + genExpression(node, context); + break; + case 5: + genInterpolation(node, context); + break; + case 12: + genNode(node.codegenNode, context); + break; + case 8: + genCompoundExpression(node, context); + break; + case 3: + genComment(node, context); + break; + case 13: + genVNodeCall(node, context); + break; + case 14: + genCallExpression(node, context); + break; + case 15: + genObjectExpression(node, context); + break; + case 17: + genArrayExpression(node, context); + break; + case 18: + genFunctionExpression(node, context); + break; + case 19: + genConditionalExpression(node, context); + break; + case 20: + genCacheExpression(node, context); + break; + case 21: + genNodeList(node.body, context, true, false); + break; + // SSR only types + case 22: + genTemplateLiteral(node, context); + break; + case 23: + genIfStatement(node, context); + break; + case 24: + genAssignmentExpression(node, context); + break; + case 25: + genSequenceExpression(node, context); + break; + case 26: + genReturnStatement(node, context); + break; + /* v8 ignore start */ + case 10: + break; + default: + { + assert(false, `unhandled codegen node type: ${node.type}`); + const exhaustiveCheck = node; + return exhaustiveCheck; + } + } +} +function genText(node, context) { + context.push(JSON.stringify(node.content), -3 /* Unknown */, node); +} +function genExpression(node, context) { + const { content, isStatic } = node; + context.push( + isStatic ? JSON.stringify(content) : content, + -3 /* Unknown */, + node + ); +} +function genInterpolation(node, context) { + const { push, helper, pure } = context; + if (pure) push(PURE_ANNOTATION); + push(`${helper(TO_DISPLAY_STRING)}(`); + genNode(node.content, context); + push(`)`); +} +function genCompoundExpression(node, context) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (shared.isString(child)) { + context.push(child, -3 /* Unknown */); + } else { + genNode(child, context); + } + } +} +function genExpressionAsPropertyKey(node, context) { + const { push } = context; + if (node.type === 8) { + push(`[`); + genCompoundExpression(node, context); + push(`]`); + } else if (node.isStatic) { + const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content); + push(text, -2 /* None */, node); + } else { + push(`[${node.content}]`, -3 /* Unknown */, node); + } +} +function genComment(node, context) { + const { push, helper, pure } = context; + if (pure) { + push(PURE_ANNOTATION); + } + push( + `${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, + -3 /* Unknown */, + node + ); +} +function genVNodeCall(node, context) { + const { push, helper, pure } = context; + const { + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent + } = node; + let patchFlagString; + if (patchFlag) { + { + if (patchFlag < 0) { + patchFlagString = patchFlag + ` /* ${shared.PatchFlagNames[patchFlag]} */`; + } else { + const flagNames = Object.keys(shared.PatchFlagNames).map(Number).filter((n) => n > 0 && patchFlag & n).map((n) => shared.PatchFlagNames[n]).join(`, `); + patchFlagString = patchFlag + ` /* ${flagNames} */`; + } + } + } + if (directives) { + push(helper(WITH_DIRECTIVES) + `(`); + } + if (isBlock) { + push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `); + } + if (pure) { + push(PURE_ANNOTATION); + } + const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent); + push(helper(callHelper) + `(`, -2 /* None */, node); + genNodeList( + genNullableArgs([tag, props, children, patchFlagString, dynamicProps]), + context + ); + push(`)`); + if (isBlock) { + push(`)`); + } + if (directives) { + push(`, `); + genNode(directives, context); + push(`)`); + } +} +function genNullableArgs(args) { + let i = args.length; + while (i--) { + if (args[i] != null) break; + } + return args.slice(0, i + 1).map((arg) => arg || `null`); +} +function genCallExpression(node, context) { + const { push, helper, pure } = context; + const callee = shared.isString(node.callee) ? node.callee : helper(node.callee); + if (pure) { + push(PURE_ANNOTATION); + } + push(callee + `(`, -2 /* None */, node); + genNodeList(node.arguments, context); + push(`)`); +} +function genObjectExpression(node, context) { + const { push, indent, deindent, newline } = context; + const { properties } = node; + if (!properties.length) { + push(`{}`, -2 /* None */, node); + return; + } + const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4); + push(multilines ? `{` : `{ `); + multilines && indent(); + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + genExpressionAsPropertyKey(key, context); + push(`: `); + genNode(value, context); + if (i < properties.length - 1) { + push(`,`); + newline(); + } + } + multilines && deindent(); + push(multilines ? `}` : ` }`); +} +function genArrayExpression(node, context) { + genNodeListAsArray(node.elements, context); +} +function genFunctionExpression(node, context) { + const { push, indent, deindent } = context; + const { params, returns, body, newline, isSlot } = node; + if (isSlot) { + push(`_${helperNameMap[WITH_CTX]}(`); + } + push(`(`, -2 /* None */, node); + if (shared.isArray(params)) { + genNodeList(params, context); + } else if (params) { + genNode(params, context); + } + push(`) => `); + if (newline || body) { + push(`{`); + indent(); + } + if (returns) { + if (newline) { + push(`return `); + } + if (shared.isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } + } else if (body) { + genNode(body, context); + } + if (newline || body) { + deindent(); + push(`}`); + } + if (isSlot) { + if (node.isNonScopedSlot) { + push(`, undefined, true`); + } + push(`)`); + } +} +function genConditionalExpression(node, context) { + const { test, consequent, alternate, newline: needNewline } = node; + const { push, indent, deindent, newline } = context; + if (test.type === 4) { + const needsParens = !isSimpleIdentifier(test.content); + needsParens && push(`(`); + genExpression(test, context); + needsParens && push(`)`); + } else { + push(`(`); + genNode(test, context); + push(`)`); + } + needNewline && indent(); + context.indentLevel++; + needNewline || push(` `); + push(`? `); + genNode(consequent, context); + context.indentLevel--; + needNewline && newline(); + needNewline || push(` `); + push(`: `); + const isNested = alternate.type === 19; + if (!isNested) { + context.indentLevel++; + } + genNode(alternate, context); + if (!isNested) { + context.indentLevel--; + } + needNewline && deindent( + true + /* without newline */ + ); +} +function genCacheExpression(node, context) { + const { push, helper, indent, deindent, newline } = context; + const { needPauseTracking, needArraySpread } = node; + if (needArraySpread) { + push(`[...(`); + } + push(`_cache[${node.index}] || (`); + if (needPauseTracking) { + indent(); + push(`${helper(SET_BLOCK_TRACKING)}(-1`); + if (node.inVOnce) push(`, true`); + push(`),`); + newline(); + push(`(`); + } + push(`_cache[${node.index}] = `); + genNode(node.value, context); + if (needPauseTracking) { + push(`).cacheIndex = ${node.index},`); + newline(); + push(`${helper(SET_BLOCK_TRACKING)}(1),`); + newline(); + push(`_cache[${node.index}]`); + deindent(); + } + push(`)`); + if (needArraySpread) { + push(`)]`); + } +} +function genTemplateLiteral(node, context) { + const { push, indent, deindent } = context; + push("`"); + const l = node.elements.length; + const multilines = l > 3; + for (let i = 0; i < l; i++) { + const e = node.elements[i]; + if (shared.isString(e)) { + push(e.replace(/(`|\$|\\)/g, "\\$1"), -3 /* Unknown */); + } else { + push("${"); + if (multilines) indent(); + genNode(e, context); + if (multilines) deindent(); + push("}"); + } + } + push("`"); +} +function genIfStatement(node, context) { + const { push, indent, deindent } = context; + const { test, consequent, alternate } = node; + push(`if (`); + genNode(test, context); + push(`) {`); + indent(); + genNode(consequent, context); + deindent(); + push(`}`); + if (alternate) { + push(` else `); + if (alternate.type === 23) { + genIfStatement(alternate, context); + } else { + push(`{`); + indent(); + genNode(alternate, context); + deindent(); + push(`}`); + } + } +} +function genAssignmentExpression(node, context) { + genNode(node.left, context); + context.push(` = `); + genNode(node.right, context); +} +function genSequenceExpression(node, context) { + context.push(`(`); + genNodeList(node.expressions, context); + context.push(`)`); +} +function genReturnStatement({ returns }, context) { + context.push(`return `); + if (shared.isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } +} + +const isLiteralWhitelisted = /* @__PURE__ */ shared.makeMap("true,false,null,this"); +const transformExpression = (node, context) => { + if (node.type === 5) { + node.content = processExpression( + node.content, + context + ); + } else if (node.type === 1) { + const memo = findDir(node, "memo"); + for (let i = 0; i < node.props.length; i++) { + const dir = node.props[i]; + if (dir.type === 7 && dir.name !== "for") { + const exp = dir.exp; + const arg = dir.arg; + if (exp && exp.type === 4 && !(dir.name === "on" && arg) && // key has been processed in transformFor(vMemo + vFor) + !(memo && arg && arg.type === 4 && arg.content === "key")) { + dir.exp = processExpression( + exp, + context, + // slot args must be processed as function params + dir.name === "slot" + ); + } + if (arg && arg.type === 4 && !arg.isStatic) { + dir.arg = processExpression(arg, context); + } + } + } + } +}; +function processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) { + if (!context.prefixIdentifiers || !node.content.trim()) { + return node; + } + const { inline, bindingMetadata } = context; + const rewriteIdentifier = (raw, parent, id) => { + const type = shared.hasOwn(bindingMetadata, raw) && bindingMetadata[raw]; + if (inline) { + const isAssignmentLVal = parent && parent.type === "AssignmentExpression" && parent.left === id; + const isUpdateArg = parent && parent.type === "UpdateExpression" && parent.argument === id; + const isDestructureAssignment = parent && isInDestructureAssignment(parent, parentStack); + const isNewExpression = parent && isInNewExpression(parentStack); + const wrapWithUnref = (raw2) => { + const wrapped = `${context.helperString(UNREF)}(${raw2})`; + return isNewExpression ? `(${wrapped})` : wrapped; + }; + if (isConst(type) || type === "setup-reactive-const" || localVars[raw]) { + return raw; + } else if (type === "setup-ref") { + return `${raw}.value`; + } else if (type === "setup-maybe-ref") { + return isAssignmentLVal || isUpdateArg || isDestructureAssignment ? `${raw}.value` : wrapWithUnref(raw); + } else if (type === "setup-let") { + if (isAssignmentLVal) { + const { right: rVal, operator } = parent; + const rExp = rawExp.slice(rVal.start - 1, rVal.end - 1); + const rExpString = stringifyExpression( + processExpression( + createSimpleExpression(rExp, false), + context, + false, + false, + knownIds + ) + ); + return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore +` : ``} ? ${raw}.value ${operator} ${rExpString} : ${raw}`; + } else if (isUpdateArg) { + id.start = parent.start; + id.end = parent.end; + const { prefix: isPrefix, operator } = parent; + const prefix = isPrefix ? operator : ``; + const postfix = isPrefix ? `` : operator; + return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore +` : ``} ? ${prefix}${raw}.value${postfix} : ${prefix}${raw}${postfix}`; + } else if (isDestructureAssignment) { + return raw; + } else { + return wrapWithUnref(raw); + } + } else if (type === "props") { + return shared.genPropsAccessExp(raw); + } else if (type === "props-aliased") { + return shared.genPropsAccessExp(bindingMetadata.__propsAliases[raw]); + } + } else { + if (type && type.startsWith("setup") || type === "literal-const") { + return `$setup.${raw}`; + } else if (type === "props-aliased") { + return `$props['${bindingMetadata.__propsAliases[raw]}']`; + } else if (type) { + return `$${type}.${raw}`; + } + } + return `_ctx.${raw}`; + }; + const rawExp = node.content; + let ast = node.ast; + if (ast === false) { + return node; + } + if (ast === null || !ast && isSimpleIdentifier(rawExp)) { + const isScopeVarReference = context.identifiers[rawExp]; + const isAllowedGlobal = shared.isGloballyAllowed(rawExp); + const isLiteral = isLiteralWhitelisted(rawExp); + if (!asParams && !isScopeVarReference && !isLiteral && (!isAllowedGlobal || bindingMetadata[rawExp])) { + if (isConst(bindingMetadata[rawExp])) { + node.constType = 1; + } + node.content = rewriteIdentifier(rawExp); + } else if (!isScopeVarReference) { + if (isLiteral) { + node.constType = 3; + } else { + node.constType = 2; + } + } + return node; + } + if (!ast) { + const source = asRawStatements ? ` ${rawExp} ` : `(${rawExp})${asParams ? `=>{}` : ``}`; + try { + ast = parser.parseExpression(source, { + sourceType: "module", + plugins: context.expressionPlugins + }); + } catch (e) { + context.onError( + createCompilerError( + 45, + node.loc, + void 0, + e.message + ) + ); + return node; + } + } + const ids = []; + const parentStack = []; + const knownIds = Object.create(context.identifiers); + walkIdentifiers( + ast, + (node2, parent, _, isReferenced, isLocal) => { + if (isStaticPropertyKey(node2, parent)) { + return; + } + if (node2.name.startsWith("_filter_")) { + return; + } + const needPrefix = isReferenced && canPrefix(node2); + if (needPrefix && !isLocal) { + if (isStaticProperty(parent) && parent.shorthand) { + node2.prefix = `${node2.name}: `; + } + node2.name = rewriteIdentifier(node2.name, parent, node2); + ids.push(node2); + } else { + if (!(needPrefix && isLocal) && (!parent || parent.type !== "CallExpression" && parent.type !== "NewExpression" && parent.type !== "MemberExpression")) { + node2.isConstant = true; + } + ids.push(node2); + } + }, + true, + // invoke on ALL identifiers + parentStack, + knownIds + ); + const children = []; + ids.sort((a, b) => a.start - b.start); + ids.forEach((id, i) => { + const start = id.start - 1; + const end = id.end - 1; + const last = ids[i - 1]; + const leadingText = rawExp.slice(last ? last.end - 1 : 0, start); + if (leadingText.length || id.prefix) { + children.push(leadingText + (id.prefix || ``)); + } + const source = rawExp.slice(start, end); + children.push( + createSimpleExpression( + id.name, + false, + { + start: advancePositionWithClone(node.loc.start, source, start), + end: advancePositionWithClone(node.loc.start, source, end), + source + }, + id.isConstant ? 3 : 0 + ) + ); + if (i === ids.length - 1 && end < rawExp.length) { + children.push(rawExp.slice(end)); + } + }); + let ret; + if (children.length) { + ret = createCompoundExpression(children, node.loc); + ret.ast = ast; + } else { + ret = node; + ret.constType = 3; + } + ret.identifiers = Object.keys(knownIds); + return ret; +} +function canPrefix(id) { + if (shared.isGloballyAllowed(id.name)) { + return false; + } + if (id.name === "require") { + return false; + } + return true; +} +function stringifyExpression(exp) { + if (shared.isString(exp)) { + return exp; + } else if (exp.type === 4) { + return exp.content; + } else { + return exp.children.map(stringifyExpression).join(""); + } +} +function isConst(type) { + return type === "setup-const" || type === "literal-const"; +} + +const transformIf = createStructuralDirectiveTransform( + /^(if|else|else-if)$/, + (node, dir, context) => { + return processIf(node, dir, context, (ifNode, branch, isRoot) => { + const siblings = context.parent.children; + let i = siblings.indexOf(ifNode); + let key = 0; + while (i-- >= 0) { + const sibling = siblings[i]; + if (sibling && sibling.type === 9) { + key += sibling.branches.length; + } + } + return () => { + if (isRoot) { + ifNode.codegenNode = createCodegenNodeForBranch( + branch, + key, + context + ); + } else { + const parentCondition = getParentCondition(ifNode.codegenNode); + parentCondition.alternate = createCodegenNodeForBranch( + branch, + key + ifNode.branches.length - 1, + context + ); + } + }; + }); + } +); +function processIf(node, dir, context, processCodegen) { + if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) { + const loc = dir.exp ? dir.exp.loc : node.loc; + context.onError( + createCompilerError(28, dir.loc) + ); + dir.exp = createSimpleExpression(`true`, false, loc); + } + if (context.prefixIdentifiers && dir.exp) { + dir.exp = processExpression(dir.exp, context); + } + if (dir.name === "if") { + const branch = createIfBranch(node, dir); + const ifNode = { + type: 9, + loc: cloneLoc(node.loc), + branches: [branch] + }; + context.replaceNode(ifNode); + if (processCodegen) { + return processCodegen(ifNode, branch, true); + } + } else { + const siblings = context.parent.children; + const comments = []; + let i = siblings.indexOf(node); + while (i-- >= -1) { + const sibling = siblings[i]; + if (sibling && sibling.type === 3) { + context.removeNode(sibling); + comments.unshift(sibling); + continue; + } + if (sibling && sibling.type === 2 && !sibling.content.trim().length) { + context.removeNode(sibling); + continue; + } + if (sibling && sibling.type === 9) { + if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) { + context.onError( + createCompilerError(30, node.loc) + ); + } + context.removeNode(); + const branch = createIfBranch(node, dir); + if (comments.length && // #3619 ignore comments if the v-if is direct child of <transition> + !(context.parent && context.parent.type === 1 && (context.parent.tag === "transition" || context.parent.tag === "Transition"))) { + branch.children = [...comments, ...branch.children]; + } + { + const key = branch.userKey; + if (key) { + sibling.branches.forEach(({ userKey }) => { + if (isSameKey(userKey, key)) { + context.onError( + createCompilerError( + 29, + branch.userKey.loc + ) + ); + } + }); + } + } + sibling.branches.push(branch); + const onExit = processCodegen && processCodegen(sibling, branch, false); + traverseNode(branch, context); + if (onExit) onExit(); + context.currentNode = null; + } else { + context.onError( + createCompilerError(30, node.loc) + ); + } + break; + } + } +} +function createIfBranch(node, dir) { + const isTemplateIf = node.tagType === 3; + return { + type: 10, + loc: node.loc, + condition: dir.name === "else" ? void 0 : dir.exp, + children: isTemplateIf && !findDir(node, "for") ? node.children : [node], + userKey: findProp(node, `key`), + isTemplateIf + }; +} +function createCodegenNodeForBranch(branch, keyIndex, context) { + if (branch.condition) { + return createConditionalExpression( + branch.condition, + createChildrenCodegenNode(branch, keyIndex, context), + // make sure to pass in asBlock: true so that the comment node call + // closes the current block. + createCallExpression(context.helper(CREATE_COMMENT), [ + '"v-if"' , + "true" + ]) + ); + } else { + return createChildrenCodegenNode(branch, keyIndex, context); + } +} +function createChildrenCodegenNode(branch, keyIndex, context) { + const { helper } = context; + const keyProperty = createObjectProperty( + `key`, + createSimpleExpression( + `${keyIndex}`, + false, + locStub, + 2 + ) + ); + const { children } = branch; + const firstChild = children[0]; + const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1; + if (needFragmentWrapper) { + if (children.length === 1 && firstChild.type === 11) { + const vnodeCall = firstChild.codegenNode; + injectProp(vnodeCall, keyProperty, context); + return vnodeCall; + } else { + let patchFlag = 64; + if (!branch.isTemplateIf && children.filter((c) => c.type !== 3).length === 1) { + patchFlag |= 2048; + } + return createVNodeCall( + context, + helper(FRAGMENT), + createObjectExpression([keyProperty]), + children, + patchFlag, + void 0, + void 0, + true, + false, + false, + branch.loc + ); + } + } else { + const ret = firstChild.codegenNode; + const vnodeCall = getMemoedVNodeCall(ret); + if (vnodeCall.type === 13) { + convertToBlock(vnodeCall, context); + } + injectProp(vnodeCall, keyProperty, context); + return ret; + } +} +function isSameKey(a, b) { + if (!a || a.type !== b.type) { + return false; + } + if (a.type === 6) { + if (a.value.content !== b.value.content) { + return false; + } + } else { + const exp = a.exp; + const branchExp = b.exp; + if (exp.type !== branchExp.type) { + return false; + } + if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) { + return false; + } + } + return true; +} +function getParentCondition(node) { + while (true) { + if (node.type === 19) { + if (node.alternate.type === 19) { + node = node.alternate; + } else { + return node; + } + } else if (node.type === 20) { + node = node.value; + } + } +} + +const transformBind = (dir, _node, context) => { + const { modifiers, loc } = dir; + const arg = dir.arg; + let { exp } = dir; + if (exp && exp.type === 4 && !exp.content.trim()) { + { + context.onError( + createCompilerError(34, loc) + ); + return { + props: [ + createObjectProperty(arg, createSimpleExpression("", true, loc)) + ] + }; + } + } + if (!exp) { + if (arg.type !== 4 || !arg.isStatic) { + context.onError( + createCompilerError( + 52, + arg.loc + ) + ); + return { + props: [ + createObjectProperty(arg, createSimpleExpression("", true, loc)) + ] + }; + } + transformBindShorthand(dir, context); + exp = dir.exp; + } + if (arg.type !== 4) { + arg.children.unshift(`(`); + arg.children.push(`) || ""`); + } else if (!arg.isStatic) { + arg.content = arg.content ? `${arg.content} || ""` : `""`; + } + if (modifiers.some((mod) => mod.content === "camel")) { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = shared.camelize(arg.content); + } else { + arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`; + } + } else { + arg.children.unshift(`${context.helperString(CAMELIZE)}(`); + arg.children.push(`)`); + } + } + if (!context.inSSR) { + if (modifiers.some((mod) => mod.content === "prop")) { + injectPrefix(arg, "."); + } + if (modifiers.some((mod) => mod.content === "attr")) { + injectPrefix(arg, "^"); + } + } + return { + props: [createObjectProperty(arg, exp)] + }; +}; +const transformBindShorthand = (dir, context) => { + const arg = dir.arg; + const propName = shared.camelize(arg.content); + dir.exp = createSimpleExpression(propName, false, arg.loc); + { + dir.exp = processExpression(dir.exp, context); + } +}; +const injectPrefix = (arg, prefix) => { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = prefix + arg.content; + } else { + arg.content = `\`${prefix}\${${arg.content}}\``; + } + } else { + arg.children.unshift(`'${prefix}' + (`); + arg.children.push(`)`); + } +}; + +const transformFor = createStructuralDirectiveTransform( + "for", + (node, dir, context) => { + const { helper, removeHelper } = context; + return processFor(node, dir, context, (forNode) => { + const renderExp = createCallExpression(helper(RENDER_LIST), [ + forNode.source + ]); + const isTemplate = isTemplateNode(node); + const memo = findDir(node, "memo"); + const keyProp = findProp(node, `key`, false, true); + const isDirKey = keyProp && keyProp.type === 7; + if (isDirKey && !keyProp.exp) { + transformBindShorthand(keyProp, context); + } + let keyExp = keyProp && (keyProp.type === 6 ? keyProp.value ? createSimpleExpression(keyProp.value.content, true) : void 0 : keyProp.exp); + if (memo && keyExp && isDirKey) { + { + keyProp.exp = keyExp = processExpression( + keyExp, + context + ); + } + } + const keyProperty = keyProp && keyExp ? createObjectProperty(`key`, keyExp) : null; + if (isTemplate) { + if (memo) { + memo.exp = processExpression( + memo.exp, + context + ); + } + if (keyProperty && keyProp.type !== 6) { + keyProperty.value = processExpression( + keyProperty.value, + context + ); + } + } + const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0; + const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256; + forNode.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + renderExp, + fragmentFlag, + void 0, + void 0, + true, + !isStableFragment, + false, + node.loc + ); + return () => { + let childBlock; + const { children } = forNode; + if (isTemplate) { + node.children.some((c) => { + if (c.type === 1) { + const key = findProp(c, "key"); + if (key) { + context.onError( + createCompilerError( + 33, + key.loc + ) + ); + return true; + } + } + }); + } + const needFragmentWrapper = children.length !== 1 || children[0].type !== 1; + const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null; + if (slotOutlet) { + childBlock = slotOutlet.codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + } else if (needFragmentWrapper) { + childBlock = createVNodeCall( + context, + helper(FRAGMENT), + keyProperty ? createObjectExpression([keyProperty]) : void 0, + node.children, + 64, + void 0, + void 0, + true, + void 0, + false + ); + } else { + childBlock = children[0].codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + if (childBlock.isBlock !== !isStableFragment) { + if (childBlock.isBlock) { + removeHelper(OPEN_BLOCK); + removeHelper( + getVNodeBlockHelper(context.inSSR, childBlock.isComponent) + ); + } else { + removeHelper( + getVNodeHelper(context.inSSR, childBlock.isComponent) + ); + } + } + childBlock.isBlock = !isStableFragment; + if (childBlock.isBlock) { + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent)); + } else { + helper(getVNodeHelper(context.inSSR, childBlock.isComponent)); + } + } + if (memo) { + const loop = createFunctionExpression( + createForLoopParams(forNode.parseResult, [ + createSimpleExpression(`_cached`) + ]) + ); + loop.body = createBlockStatement([ + createCompoundExpression([`const _memo = (`, memo.exp, `)`]), + createCompoundExpression([ + `if (_cached`, + ...keyExp ? [` && _cached.key === `, keyExp] : [], + ` && ${context.helperString( + IS_MEMO_SAME + )}(_cached, _memo)) return _cached` + ]), + createCompoundExpression([`const _item = `, childBlock]), + createSimpleExpression(`_item.memo = _memo`), + createSimpleExpression(`return _item`) + ]); + renderExp.arguments.push( + loop, + createSimpleExpression(`_cache`), + createSimpleExpression(String(context.cached.length)) + ); + context.cached.push(null); + } else { + renderExp.arguments.push( + createFunctionExpression( + createForLoopParams(forNode.parseResult), + childBlock, + true + ) + ); + } + }; + }); + } +); +function processFor(node, dir, context, processCodegen) { + if (!dir.exp) { + context.onError( + createCompilerError(31, dir.loc) + ); + return; + } + const parseResult = dir.forParseResult; + if (!parseResult) { + context.onError( + createCompilerError(32, dir.loc) + ); + return; + } + finalizeForParseResult(parseResult, context); + const { addIdentifiers, removeIdentifiers, scopes } = context; + const { source, value, key, index } = parseResult; + const forNode = { + type: 11, + loc: dir.loc, + source, + valueAlias: value, + keyAlias: key, + objectIndexAlias: index, + parseResult, + children: isTemplateNode(node) ? node.children : [node] + }; + context.replaceNode(forNode); + scopes.vFor++; + if (context.prefixIdentifiers) { + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + } + const onExit = processCodegen && processCodegen(forNode); + return () => { + scopes.vFor--; + if (context.prefixIdentifiers) { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + } + if (onExit) onExit(); + }; +} +function finalizeForParseResult(result, context) { + if (result.finalized) return; + if (context.prefixIdentifiers) { + result.source = processExpression( + result.source, + context + ); + if (result.key) { + result.key = processExpression( + result.key, + context, + true + ); + } + if (result.index) { + result.index = processExpression( + result.index, + context, + true + ); + } + if (result.value) { + result.value = processExpression( + result.value, + context, + true + ); + } + } + result.finalized = true; +} +function createForLoopParams({ value, key, index }, memoArgs = []) { + return createParamsList([value, key, index, ...memoArgs]); +} +function createParamsList(args) { + let i = args.length; + while (i--) { + if (args[i]) break; + } + return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false)); +} + +const defaultFallback = createSimpleExpression(`undefined`, false); +const trackSlotScopes = (node, context) => { + if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) { + const vSlot = findDir(node, "slot"); + if (vSlot) { + const slotProps = vSlot.exp; + if (context.prefixIdentifiers) { + slotProps && context.addIdentifiers(slotProps); + } + context.scopes.vSlot++; + return () => { + if (context.prefixIdentifiers) { + slotProps && context.removeIdentifiers(slotProps); + } + context.scopes.vSlot--; + }; + } + } +}; +const trackVForSlotScopes = (node, context) => { + let vFor; + if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, "for"))) { + const result = vFor.forParseResult; + if (result) { + finalizeForParseResult(result, context); + const { value, key, index } = result; + const { addIdentifiers, removeIdentifiers } = context; + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + return () => { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + }; + } + } +}; +const buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression( + props, + children, + false, + true, + children.length ? children[0].loc : loc +); +function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { + context.helper(WITH_CTX); + const { children, loc } = node; + const slotsProperties = []; + const dynamicSlots = []; + let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0; + if (!context.ssr && context.prefixIdentifiers) { + hasDynamicSlots = hasScopeRef(node, context.identifiers); + } + const onComponentSlot = findDir(node, "slot", true); + if (onComponentSlot) { + const { arg, exp } = onComponentSlot; + if (arg && !isStaticExp(arg)) { + hasDynamicSlots = true; + } + slotsProperties.push( + createObjectProperty( + arg || createSimpleExpression("default", true), + buildSlotFn(exp, void 0, children, loc) + ) + ); + } + let hasTemplateSlots = false; + let hasNamedDefaultSlot = false; + const implicitDefaultChildren = []; + const seenSlotNames = /* @__PURE__ */ new Set(); + let conditionalBranchIndex = 0; + for (let i = 0; i < children.length; i++) { + const slotElement = children[i]; + let slotDir; + if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) { + if (slotElement.type !== 3) { + implicitDefaultChildren.push(slotElement); + } + continue; + } + if (onComponentSlot) { + context.onError( + createCompilerError(37, slotDir.loc) + ); + break; + } + hasTemplateSlots = true; + const { children: slotChildren, loc: slotLoc } = slotElement; + const { + arg: slotName = createSimpleExpression(`default`, true), + exp: slotProps, + loc: dirLoc + } = slotDir; + let staticSlotName; + if (isStaticExp(slotName)) { + staticSlotName = slotName ? slotName.content : `default`; + } else { + hasDynamicSlots = true; + } + const vFor = findDir(slotElement, "for"); + const slotFunction = buildSlotFn(slotProps, vFor, slotChildren, slotLoc); + let vIf; + let vElse; + if (vIf = findDir(slotElement, "if")) { + hasDynamicSlots = true; + dynamicSlots.push( + createConditionalExpression( + vIf.exp, + buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++), + defaultFallback + ) + ); + } else if (vElse = findDir( + slotElement, + /^else(-if)?$/, + true + /* allowEmpty */ + )) { + let j = i; + let prev; + while (j--) { + prev = children[j]; + if (prev.type !== 3 && isNonWhitespaceContent(prev)) { + break; + } + } + if (prev && isTemplateNode(prev) && findDir(prev, /^(else-)?if$/)) { + let conditional = dynamicSlots[dynamicSlots.length - 1]; + while (conditional.alternate.type === 19) { + conditional = conditional.alternate; + } + conditional.alternate = vElse.exp ? createConditionalExpression( + vElse.exp, + buildDynamicSlot( + slotName, + slotFunction, + conditionalBranchIndex++ + ), + defaultFallback + ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++); + } else { + context.onError( + createCompilerError(30, vElse.loc) + ); + } + } else if (vFor) { + hasDynamicSlots = true; + const parseResult = vFor.forParseResult; + if (parseResult) { + finalizeForParseResult(parseResult, context); + dynamicSlots.push( + createCallExpression(context.helper(RENDER_LIST), [ + parseResult.source, + createFunctionExpression( + createForLoopParams(parseResult), + buildDynamicSlot(slotName, slotFunction), + true + ) + ]) + ); + } else { + context.onError( + createCompilerError( + 32, + vFor.loc + ) + ); + } + } else { + if (staticSlotName) { + if (seenSlotNames.has(staticSlotName)) { + context.onError( + createCompilerError( + 38, + dirLoc + ) + ); + continue; + } + seenSlotNames.add(staticSlotName); + if (staticSlotName === "default") { + hasNamedDefaultSlot = true; + } + } + slotsProperties.push(createObjectProperty(slotName, slotFunction)); + } + } + if (!onComponentSlot) { + const buildDefaultSlotProperty = (props, children2) => { + const fn = buildSlotFn(props, void 0, children2, loc); + if (context.compatConfig) { + fn.isNonScopedSlot = true; + } + return createObjectProperty(`default`, fn); + }; + if (!hasTemplateSlots) { + slotsProperties.push(buildDefaultSlotProperty(void 0, children)); + } else if (implicitDefaultChildren.length && // #3766 + // with whitespace: 'preserve', whitespaces between slots will end up in + // implicitDefaultChildren. Ignore if all implicit children are whitespaces. + implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) { + if (hasNamedDefaultSlot) { + context.onError( + createCompilerError( + 39, + implicitDefaultChildren[0].loc + ) + ); + } else { + slotsProperties.push( + buildDefaultSlotProperty(void 0, implicitDefaultChildren) + ); + } + } + } + const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1; + let slots = createObjectExpression( + slotsProperties.concat( + createObjectProperty( + `_`, + // 2 = compiled but dynamic = can skip normalization, but must run diff + // 1 = compiled and static = can skip normalization AND diff as optimized + createSimpleExpression( + slotFlag + (` /* ${shared.slotFlagsText[slotFlag]} */` ), + false + ) + ) + ), + loc + ); + if (dynamicSlots.length) { + slots = createCallExpression(context.helper(CREATE_SLOTS), [ + slots, + createArrayExpression(dynamicSlots) + ]); + } + return { + slots, + hasDynamicSlots + }; +} +function buildDynamicSlot(name, fn, index) { + const props = [ + createObjectProperty(`name`, name), + createObjectProperty(`fn`, fn) + ]; + if (index != null) { + props.push( + createObjectProperty(`key`, createSimpleExpression(String(index), true)) + ); + } + return createObjectExpression(props); +} +function hasForwardedSlots(children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1: + if (child.tagType === 2 || hasForwardedSlots(child.children)) { + return true; + } + break; + case 9: + if (hasForwardedSlots(child.branches)) return true; + break; + case 10: + case 11: + if (hasForwardedSlots(child.children)) return true; + break; + } + } + return false; +} +function isNonWhitespaceContent(node) { + if (node.type !== 2 && node.type !== 12) + return true; + return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content); +} + +const directiveImportMap = /* @__PURE__ */ new WeakMap(); +const transformElement = (node, context) => { + return function postTransformElement() { + node = context.currentNode; + if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) { + return; + } + const { tag, props } = node; + const isComponent = node.tagType === 1; + let vnodeTag = isComponent ? resolveComponentType(node, context) : `"${tag}"`; + const isDynamicComponent = shared.isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT; + let vnodeProps; + let vnodeChildren; + let patchFlag = 0; + let vnodeDynamicProps; + let dynamicPropNames; + let vnodeDirectives; + let shouldUseBlock = ( + // dynamic component may resolve to plain elements + isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block + // updates inside get proper isSVG flag at runtime. (#639, #643) + // This is technically web-specific, but splitting the logic out of core + // leads to too much unnecessary complexity. + (tag === "svg" || tag === "foreignObject" || tag === "math") + ); + if (props.length > 0) { + const propsBuildResult = buildProps( + node, + context, + void 0, + isComponent, + isDynamicComponent + ); + vnodeProps = propsBuildResult.props; + patchFlag = propsBuildResult.patchFlag; + dynamicPropNames = propsBuildResult.dynamicPropNames; + const directives = propsBuildResult.directives; + vnodeDirectives = directives && directives.length ? createArrayExpression( + directives.map((dir) => buildDirectiveArgs(dir, context)) + ) : void 0; + if (propsBuildResult.shouldUseBlock) { + shouldUseBlock = true; + } + } + if (node.children.length > 0) { + if (vnodeTag === KEEP_ALIVE) { + shouldUseBlock = true; + patchFlag |= 1024; + if (node.children.length > 1) { + context.onError( + createCompilerError(46, { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: "" + }) + ); + } + } + const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling + vnodeTag !== TELEPORT && // explained above. + vnodeTag !== KEEP_ALIVE; + if (shouldBuildAsSlots) { + const { slots, hasDynamicSlots } = buildSlots(node, context); + vnodeChildren = slots; + if (hasDynamicSlots) { + patchFlag |= 1024; + } + } else if (node.children.length === 1 && vnodeTag !== TELEPORT) { + const child = node.children[0]; + const type = child.type; + const hasDynamicTextChild = type === 5 || type === 8; + if (hasDynamicTextChild && getConstantType(child, context) === 0) { + patchFlag |= 1; + } + if (hasDynamicTextChild || type === 2) { + vnodeChildren = child; + } else { + vnodeChildren = node.children; + } + } else { + vnodeChildren = node.children; + } + } + if (dynamicPropNames && dynamicPropNames.length) { + vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames); + } + node.codegenNode = createVNodeCall( + context, + vnodeTag, + vnodeProps, + vnodeChildren, + patchFlag === 0 ? void 0 : patchFlag, + vnodeDynamicProps, + vnodeDirectives, + !!shouldUseBlock, + false, + isComponent, + node.loc + ); + }; +}; +function resolveComponentType(node, context, ssr = false) { + let { tag } = node; + const isExplicitDynamic = isComponentTag(tag); + const isProp = findProp( + node, + "is", + false, + true + /* allow empty */ + ); + if (isProp) { + if (isExplicitDynamic || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + )) { + let exp; + if (isProp.type === 6) { + exp = isProp.value && createSimpleExpression(isProp.value.content, true); + } else { + exp = isProp.exp; + if (!exp) { + exp = createSimpleExpression(`is`, false, isProp.arg.loc); + { + exp = isProp.exp = processExpression(exp, context); + } + } + } + if (exp) { + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + exp + ]); + } + } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) { + tag = isProp.value.content.slice(4); + } + } + const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag); + if (builtIn) { + if (!ssr) context.helper(builtIn); + return builtIn; + } + { + const fromSetup = resolveSetupReference(tag, context); + if (fromSetup) { + return fromSetup; + } + const dotIndex = tag.indexOf("."); + if (dotIndex > 0) { + const ns = resolveSetupReference(tag.slice(0, dotIndex), context); + if (ns) { + return ns + tag.slice(dotIndex); + } + } + } + if (context.selfName && shared.capitalize(shared.camelize(tag)) === context.selfName) { + context.helper(RESOLVE_COMPONENT); + context.components.add(tag + `__self`); + return toValidAssetId(tag, `component`); + } + context.helper(RESOLVE_COMPONENT); + context.components.add(tag); + return toValidAssetId(tag, `component`); +} +function resolveSetupReference(name, context) { + const bindings = context.bindingMetadata; + if (!bindings || bindings.__isScriptSetup === false) { + return; + } + const camelName = shared.camelize(name); + const PascalName = shared.capitalize(camelName); + const checkType = (type) => { + if (bindings[name] === type) { + return name; + } + if (bindings[camelName] === type) { + return camelName; + } + if (bindings[PascalName] === type) { + return PascalName; + } + }; + const fromConst = checkType("setup-const") || checkType("setup-reactive-const") || checkType("literal-const"); + if (fromConst) { + return context.inline ? ( + // in inline mode, const setup bindings (e.g. imports) can be used as-is + fromConst + ) : `$setup[${JSON.stringify(fromConst)}]`; + } + const fromMaybeRef = checkType("setup-let") || checkType("setup-ref") || checkType("setup-maybe-ref"); + if (fromMaybeRef) { + return context.inline ? ( + // setup scope bindings that may be refs need to be unrefed + `${context.helperString(UNREF)}(${fromMaybeRef})` + ) : `$setup[${JSON.stringify(fromMaybeRef)}]`; + } + const fromProps = checkType("props"); + if (fromProps) { + return `${context.helperString(UNREF)}(${context.inline ? "__props" : "$props"}[${JSON.stringify(fromProps)}])`; + } +} +function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) { + const { tag, loc: elementLoc, children } = node; + let properties = []; + const mergeArgs = []; + const runtimeDirectives = []; + const hasChildren = children.length > 0; + let shouldUseBlock = false; + let patchFlag = 0; + let hasRef = false; + let hasClassBinding = false; + let hasStyleBinding = false; + let hasHydrationEventBinding = false; + let hasDynamicKeys = false; + let hasVnodeHook = false; + const dynamicPropNames = []; + const pushMergeArg = (arg) => { + if (properties.length) { + mergeArgs.push( + createObjectExpression(dedupeProperties(properties), elementLoc) + ); + properties = []; + } + if (arg) mergeArgs.push(arg); + }; + const pushRefVForMarker = () => { + if (context.scopes.vFor > 0) { + properties.push( + createObjectProperty( + createSimpleExpression("ref_for", true), + createSimpleExpression("true") + ) + ); + } + }; + const analyzePatchFlag = ({ key, value }) => { + if (isStaticExp(key)) { + const name = key.content; + const isEventHandler = shared.isOn(name); + if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click + // dedicated fast path. + name.toLowerCase() !== "onclick" && // omit v-model handlers + name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks + !shared.isReservedProp(name)) { + hasHydrationEventBinding = true; + } + if (isEventHandler && shared.isReservedProp(name)) { + hasVnodeHook = true; + } + if (isEventHandler && value.type === 14) { + value = value.arguments[0]; + } + if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) { + return; + } + if (name === "ref") { + hasRef = true; + } else if (name === "class") { + hasClassBinding = true; + } else if (name === "style") { + hasStyleBinding = true; + } else if (name !== "key" && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + if (isComponent && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + } else { + hasDynamicKeys = true; + } + }; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 6) { + const { loc, name, nameLoc, value } = prop; + let isStatic = true; + if (name === "ref") { + hasRef = true; + pushRefVForMarker(); + if (value && context.inline) { + const binding = context.bindingMetadata[value.content]; + if (binding === "setup-let" || binding === "setup-ref" || binding === "setup-maybe-ref") { + isStatic = false; + properties.push( + createObjectProperty( + createSimpleExpression("ref_key", true), + createSimpleExpression(value.content, true, value.loc) + ) + ); + } + } + } + if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + properties.push( + createObjectProperty( + createSimpleExpression(name, true, nameLoc), + createSimpleExpression( + value ? value.content : "", + isStatic, + value ? value.loc : loc + ) + ) + ); + } else { + const { name, arg, exp, loc, modifiers } = prop; + const isVBind = name === "bind"; + const isVOn = name === "on"; + if (name === "slot") { + if (!isComponent) { + context.onError( + createCompilerError(40, loc) + ); + } + continue; + } + if (name === "once" || name === "memo") { + continue; + } + if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + if (isVOn && ssr) { + continue; + } + if ( + // #938: elements with dynamic keys should be forced into blocks + isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked + // before children + isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update") + ) { + shouldUseBlock = true; + } + if (isVBind && isStaticArgOf(arg, "ref")) { + pushRefVForMarker(); + } + if (!arg && (isVBind || isVOn)) { + hasDynamicKeys = true; + if (exp) { + if (isVBind) { + { + pushMergeArg(); + { + const hasOverridableKeys = mergeArgs.some((arg2) => { + if (arg2.type === 15) { + return arg2.properties.some(({ key }) => { + if (key.type !== 4 || !key.isStatic) { + return true; + } + return key.content !== "class" && key.content !== "style" && !shared.isOn(key.content); + }); + } else { + return true; + } + }); + if (hasOverridableKeys) { + checkCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context, + loc + ); + } + } + if (isCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context + )) { + mergeArgs.unshift(exp); + continue; + } + } + pushRefVForMarker(); + pushMergeArg(); + mergeArgs.push(exp); + } else { + pushMergeArg({ + type: 14, + loc, + callee: context.helper(TO_HANDLERS), + arguments: isComponent ? [exp] : [exp, `true`] + }); + } + } else { + context.onError( + createCompilerError( + isVBind ? 34 : 35, + loc + ) + ); + } + continue; + } + if (isVBind && modifiers.some((mod) => mod.content === "prop")) { + patchFlag |= 32; + } + const directiveTransform = context.directiveTransforms[name]; + if (directiveTransform) { + const { props: props2, needRuntime } = directiveTransform(prop, node, context); + !ssr && props2.forEach(analyzePatchFlag); + if (isVOn && arg && !isStaticExp(arg)) { + pushMergeArg(createObjectExpression(props2, elementLoc)); + } else { + properties.push(...props2); + } + if (needRuntime) { + runtimeDirectives.push(prop); + if (shared.isSymbol(needRuntime)) { + directiveImportMap.set(prop, needRuntime); + } + } + } else if (!shared.isBuiltInDirective(name)) { + runtimeDirectives.push(prop); + if (hasChildren) { + shouldUseBlock = true; + } + } + } + } + let propsExpression = void 0; + if (mergeArgs.length) { + pushMergeArg(); + if (mergeArgs.length > 1) { + propsExpression = createCallExpression( + context.helper(MERGE_PROPS), + mergeArgs, + elementLoc + ); + } else { + propsExpression = mergeArgs[0]; + } + } else if (properties.length) { + propsExpression = createObjectExpression( + dedupeProperties(properties), + elementLoc + ); + } + if (hasDynamicKeys) { + patchFlag |= 16; + } else { + if (hasClassBinding && !isComponent) { + patchFlag |= 2; + } + if (hasStyleBinding && !isComponent) { + patchFlag |= 4; + } + if (dynamicPropNames.length) { + patchFlag |= 8; + } + if (hasHydrationEventBinding) { + patchFlag |= 32; + } + } + if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) { + patchFlag |= 512; + } + if (!context.inSSR && propsExpression) { + switch (propsExpression.type) { + case 15: + let classKeyIndex = -1; + let styleKeyIndex = -1; + let hasDynamicKey = false; + for (let i = 0; i < propsExpression.properties.length; i++) { + const key = propsExpression.properties[i].key; + if (isStaticExp(key)) { + if (key.content === "class") { + classKeyIndex = i; + } else if (key.content === "style") { + styleKeyIndex = i; + } + } else if (!key.isHandlerKey) { + hasDynamicKey = true; + } + } + const classProp = propsExpression.properties[classKeyIndex]; + const styleProp = propsExpression.properties[styleKeyIndex]; + if (!hasDynamicKey) { + if (classProp && !isStaticExp(classProp.value)) { + classProp.value = createCallExpression( + context.helper(NORMALIZE_CLASS), + [classProp.value] + ); + } + if (styleProp && // the static style is compiled into an object, + // so use `hasStyleBinding` to ensure that it is a dynamic style binding + (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist, + // v-bind:style with static literal object + styleProp.value.type === 17)) { + styleProp.value = createCallExpression( + context.helper(NORMALIZE_STYLE), + [styleProp.value] + ); + } + } else { + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [propsExpression] + ); + } + break; + case 14: + break; + default: + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [ + createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [ + propsExpression + ]) + ] + ); + break; + } + } + return { + props: propsExpression, + directives: runtimeDirectives, + patchFlag, + dynamicPropNames, + shouldUseBlock + }; +} +function dedupeProperties(properties) { + const knownProps = /* @__PURE__ */ new Map(); + const deduped = []; + for (let i = 0; i < properties.length; i++) { + const prop = properties[i]; + if (prop.key.type === 8 || !prop.key.isStatic) { + deduped.push(prop); + continue; + } + const name = prop.key.content; + const existing = knownProps.get(name); + if (existing) { + if (name === "style" || name === "class" || shared.isOn(name)) { + mergeAsArray(existing, prop); + } + } else { + knownProps.set(name, prop); + deduped.push(prop); + } + } + return deduped; +} +function mergeAsArray(existing, incoming) { + if (existing.value.type === 17) { + existing.value.elements.push(incoming.value); + } else { + existing.value = createArrayExpression( + [existing.value, incoming.value], + existing.loc + ); + } +} +function buildDirectiveArgs(dir, context) { + const dirArgs = []; + const runtime = directiveImportMap.get(dir); + if (runtime) { + dirArgs.push(context.helperString(runtime)); + } else { + const fromSetup = resolveSetupReference("v-" + dir.name, context); + if (fromSetup) { + dirArgs.push(fromSetup); + } else { + context.helper(RESOLVE_DIRECTIVE); + context.directives.add(dir.name); + dirArgs.push(toValidAssetId(dir.name, `directive`)); + } + } + const { loc } = dir; + if (dir.exp) dirArgs.push(dir.exp); + if (dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(dir.arg); + } + if (Object.keys(dir.modifiers).length) { + if (!dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(`void 0`); + } + const trueExpression = createSimpleExpression(`true`, false, loc); + dirArgs.push( + createObjectExpression( + dir.modifiers.map( + (modifier) => createObjectProperty(modifier, trueExpression) + ), + loc + ) + ); + } + return createArrayExpression(dirArgs, dir.loc); +} +function stringifyDynamicPropNames(props) { + let propsNamesString = `[`; + for (let i = 0, l = props.length; i < l; i++) { + propsNamesString += JSON.stringify(props[i]); + if (i < l - 1) propsNamesString += ", "; + } + return propsNamesString + `]`; +} +function isComponentTag(tag) { + return tag === "component" || tag === "Component"; +} + +const transformSlotOutlet = (node, context) => { + if (isSlotOutlet(node)) { + const { children, loc } = node; + const { slotName, slotProps } = processSlotOutlet(node, context); + const slotArgs = [ + context.prefixIdentifiers ? `_ctx.$slots` : `$slots`, + slotName, + "{}", + "undefined", + "true" + ]; + let expectedLen = 2; + if (slotProps) { + slotArgs[2] = slotProps; + expectedLen = 3; + } + if (children.length) { + slotArgs[3] = createFunctionExpression([], children, false, false, loc); + expectedLen = 4; + } + if (context.scopeId && !context.slotted) { + expectedLen = 5; + } + slotArgs.splice(expectedLen); + node.codegenNode = createCallExpression( + context.helper(RENDER_SLOT), + slotArgs, + loc + ); + } +}; +function processSlotOutlet(node, context) { + let slotName = `"default"`; + let slotProps = void 0; + const nonNameProps = []; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (p.value) { + if (p.name === "name") { + slotName = JSON.stringify(p.value.content); + } else { + p.name = shared.camelize(p.name); + nonNameProps.push(p); + } + } + } else { + if (p.name === "bind" && isStaticArgOf(p.arg, "name")) { + if (p.exp) { + slotName = p.exp; + } else if (p.arg && p.arg.type === 4) { + const name = shared.camelize(p.arg.content); + slotName = p.exp = createSimpleExpression(name, false, p.arg.loc); + { + slotName = p.exp = processExpression(p.exp, context); + } + } + } else { + if (p.name === "bind" && p.arg && isStaticExp(p.arg)) { + p.arg.content = shared.camelize(p.arg.content); + } + nonNameProps.push(p); + } + } + } + if (nonNameProps.length > 0) { + const { props, directives } = buildProps( + node, + context, + nonNameProps, + false, + false + ); + slotProps = props; + if (directives.length) { + context.onError( + createCompilerError( + 36, + directives[0].loc + ) + ); + } + } + return { + slotName, + slotProps + }; +} + +const transformOn = (dir, node, context, augmentor) => { + const { loc, modifiers, arg } = dir; + if (!dir.exp && !modifiers.length) { + context.onError(createCompilerError(35, loc)); + } + let eventName; + if (arg.type === 4) { + if (arg.isStatic) { + let rawName = arg.content; + if (rawName.startsWith("vnode")) { + context.onError(createCompilerError(51, arg.loc)); + } + if (rawName.startsWith("vue:")) { + rawName = `vnode-${rawName.slice(4)}`; + } + const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? ( + // for non-element and vnode lifecycle event listeners, auto convert + // it to camelCase. See issue #2249 + shared.toHandlerKey(shared.camelize(rawName)) + ) : ( + // preserve case for plain element listeners that have uppercase + // letters, as these may be custom elements' custom events + `on:${rawName}` + ); + eventName = createSimpleExpression(eventString, true, arg.loc); + } else { + eventName = createCompoundExpression([ + `${context.helperString(TO_HANDLER_KEY)}(`, + arg, + `)` + ]); + } + } else { + eventName = arg; + eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`); + eventName.children.push(`)`); + } + let exp = dir.exp; + if (exp && !exp.content.trim()) { + exp = void 0; + } + let shouldCache = context.cacheHandlers && !exp && !context.inVOnce; + if (exp) { + const isMemberExp = isMemberExpression(exp, context); + const isInlineStatement = !(isMemberExp || isFnExpression(exp, context)); + const hasMultipleStatements = exp.content.includes(`;`); + if (context.prefixIdentifiers) { + isInlineStatement && context.addIdentifiers(`$event`); + exp = dir.exp = processExpression( + exp, + context, + false, + hasMultipleStatements + ); + isInlineStatement && context.removeIdentifiers(`$event`); + shouldCache = context.cacheHandlers && // unnecessary to cache inside v-once + !context.inVOnce && // runtime constants don't need to be cached + // (this is analyzed by compileScript in SFC <script setup>) + !(exp.type === 4 && exp.constType > 0) && // #1541 bail if this is a member exp handler passed to a component - + // we need to use the original function to preserve arity, + // e.g. <transition> relies on checking cb.length to determine + // transition end handling. Inline function is ok since its arity + // is preserved even when cached. + !(isMemberExp && node.tagType === 1) && // bail if the function references closure variables (v-for, v-slot) + // it must be passed fresh to avoid stale values. + !hasScopeRef(exp, context.identifiers); + if (shouldCache && isMemberExp) { + if (exp.type === 4) { + exp.content = `${exp.content} && ${exp.content}(...args)`; + } else { + exp.children = [...exp.children, ` && `, ...exp.children, `(...args)`]; + } + } + } + if (isInlineStatement || shouldCache && isMemberExp) { + exp = createCompoundExpression([ + `${isInlineStatement ? context.isTS ? `($event: any)` : `$event` : `${context.isTS ? ` +//@ts-ignore +` : ``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`, + exp, + hasMultipleStatements ? `}` : `)` + ]); + } + } + let ret = { + props: [ + createObjectProperty( + eventName, + exp || createSimpleExpression(`() => {}`, false, loc) + ) + ] + }; + if (augmentor) { + ret = augmentor(ret); + } + if (shouldCache) { + ret.props[0].value = context.cache(ret.props[0].value); + } + ret.props.forEach((p) => p.key.isHandlerKey = true); + return ret; +}; + +const transformText = (node, context) => { + if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) { + return () => { + const children = node.children; + let currentContainer = void 0; + let hasText = false; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child)) { + hasText = true; + for (let j = i + 1; j < children.length; j++) { + const next = children[j]; + if (isText$1(next)) { + if (!currentContainer) { + currentContainer = children[i] = createCompoundExpression( + [child], + child.loc + ); + } + currentContainer.children.push(` + `, next); + children.splice(j, 1); + j--; + } else { + currentContainer = void 0; + break; + } + } + } + } + if (!hasText || // if this is a plain element with a single text child, leave it + // as-is since the runtime has dedicated fast path for this by directly + // setting textContent of the element. + // for component root it's always normalized anyway. + children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756 + // custom directives can potentially add DOM elements arbitrarily, + // we need to avoid setting textContent of the element at runtime + // to avoid accidentally overwriting the DOM elements added + // by the user through custom directives. + !node.props.find( + (p) => p.type === 7 && !context.directiveTransforms[p.name] + ) && // in compat mode, <template> tags with no special directives + // will be rendered as a fragment so its children must be + // converted into vnodes. + !(node.tag === "template"))) { + return; + } + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child) || child.type === 8) { + const callArgs = []; + if (child.type !== 2 || child.content !== " ") { + callArgs.push(child); + } + if (!context.ssr && getConstantType(child, context) === 0) { + callArgs.push( + 1 + (` /* ${shared.PatchFlagNames[1]} */` ) + ); + } + children[i] = { + type: 12, + content: child, + loc: child.loc, + codegenNode: createCallExpression( + context.helper(CREATE_TEXT), + callArgs + ) + }; + } + } + }; + } +}; + +const seen$1 = /* @__PURE__ */ new WeakSet(); +const transformOnce = (node, context) => { + if (node.type === 1 && findDir(node, "once", true)) { + if (seen$1.has(node) || context.inVOnce || context.inSSR) { + return; + } + seen$1.add(node); + context.inVOnce = true; + context.helper(SET_BLOCK_TRACKING); + return () => { + context.inVOnce = false; + const cur = context.currentNode; + if (cur.codegenNode) { + cur.codegenNode = context.cache( + cur.codegenNode, + true, + true + ); + } + }; + } +}; + +const transformModel = (dir, node, context) => { + const { exp, arg } = dir; + if (!exp) { + context.onError( + createCompilerError(41, dir.loc) + ); + return createTransformProps(); + } + const rawExp = exp.loc.source.trim(); + const expString = exp.type === 4 ? exp.content : rawExp; + const bindingType = context.bindingMetadata[rawExp]; + if (bindingType === "props" || bindingType === "props-aliased") { + context.onError(createCompilerError(44, exp.loc)); + return createTransformProps(); + } + const maybeRef = context.inline && (bindingType === "setup-let" || bindingType === "setup-ref" || bindingType === "setup-maybe-ref"); + if (!expString.trim() || !isMemberExpression(exp, context) && !maybeRef) { + context.onError( + createCompilerError(42, exp.loc) + ); + return createTransformProps(); + } + if (context.prefixIdentifiers && isSimpleIdentifier(expString) && context.identifiers[expString]) { + context.onError( + createCompilerError(43, exp.loc) + ); + return createTransformProps(); + } + const propName = arg ? arg : createSimpleExpression("modelValue", true); + const eventName = arg ? isStaticExp(arg) ? `onUpdate:${shared.camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`; + let assignmentExp; + const eventArg = context.isTS ? `($event: any)` : `$event`; + if (maybeRef) { + if (bindingType === "setup-ref") { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + createSimpleExpression(rawExp, false, exp.loc), + `).value = $event)` + ]); + } else { + const altAssignment = bindingType === "setup-let" ? `${rawExp} = $event` : `null`; + assignmentExp = createCompoundExpression([ + `${eventArg} => (${context.helperString(IS_REF)}(${rawExp}) ? (`, + createSimpleExpression(rawExp, false, exp.loc), + `).value = $event : ${altAssignment})` + ]); + } + } else { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + exp, + `) = $event)` + ]); + } + const props = [ + // modelValue: foo + createObjectProperty(propName, dir.exp), + // "onUpdate:modelValue": $event => (foo = $event) + createObjectProperty(eventName, assignmentExp) + ]; + if (context.prefixIdentifiers && !context.inVOnce && context.cacheHandlers && !hasScopeRef(exp, context.identifiers)) { + props[1].value = context.cache(props[1].value); + } + if (dir.modifiers.length && node.tagType === 1) { + const modifiers = dir.modifiers.map((m) => m.content).map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `); + const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`; + props.push( + createObjectProperty( + modifiersKey, + createSimpleExpression( + `{ ${modifiers} }`, + false, + dir.loc, + 2 + ) + ) + ); + } + return createTransformProps(props); +}; +function createTransformProps(props = []) { + return { props }; +} + +const validDivisionCharRE = /[\w).+\-_$\]]/; +const transformFilter = (node, context) => { + if (!isCompatEnabled("COMPILER_FILTERS", context)) { + return; + } + if (node.type === 5) { + rewriteFilter(node.content, context); + } else if (node.type === 1) { + node.props.forEach((prop) => { + if (prop.type === 7 && prop.name !== "for" && prop.exp) { + rewriteFilter(prop.exp, context); + } + }); + } +}; +function rewriteFilter(node, context) { + if (node.type === 4) { + parseFilter(node, context); + } else { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (typeof child !== "object") continue; + if (child.type === 4) { + parseFilter(child, context); + } else if (child.type === 8) { + rewriteFilter(node, context); + } else if (child.type === 5) { + rewriteFilter(child.content, context); + } + } + } +} +function parseFilter(node, context) { + const exp = node.content; + let inSingle = false; + let inDouble = false; + let inTemplateString = false; + let inRegex = false; + let curly = 0; + let square = 0; + let paren = 0; + let lastFilterIndex = 0; + let c, prev, i, expression, filters = []; + for (i = 0; i < exp.length; i++) { + prev = c; + c = exp.charCodeAt(i); + if (inSingle) { + if (c === 39 && prev !== 92) inSingle = false; + } else if (inDouble) { + if (c === 34 && prev !== 92) inDouble = false; + } else if (inTemplateString) { + if (c === 96 && prev !== 92) inTemplateString = false; + } else if (inRegex) { + if (c === 47 && prev !== 92) inRegex = false; + } else if (c === 124 && // pipe + exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) { + if (expression === void 0) { + lastFilterIndex = i + 1; + expression = exp.slice(0, i).trim(); + } else { + pushFilter(); + } + } else { + switch (c) { + case 34: + inDouble = true; + break; + // " + case 39: + inSingle = true; + break; + // ' + case 96: + inTemplateString = true; + break; + // ` + case 40: + paren++; + break; + // ( + case 41: + paren--; + break; + // ) + case 91: + square++; + break; + // [ + case 93: + square--; + break; + // ] + case 123: + curly++; + break; + // { + case 125: + curly--; + break; + } + if (c === 47) { + let j = i - 1; + let p; + for (; j >= 0; j--) { + p = exp.charAt(j); + if (p !== " ") break; + } + if (!p || !validDivisionCharRE.test(p)) { + inRegex = true; + } + } + } + } + if (expression === void 0) { + expression = exp.slice(0, i).trim(); + } else if (lastFilterIndex !== 0) { + pushFilter(); + } + function pushFilter() { + filters.push(exp.slice(lastFilterIndex, i).trim()); + lastFilterIndex = i + 1; + } + if (filters.length) { + warnDeprecation( + "COMPILER_FILTERS", + context, + node.loc + ); + for (i = 0; i < filters.length; i++) { + expression = wrapFilter(expression, filters[i], context); + } + node.content = expression; + node.ast = void 0; + } +} +function wrapFilter(exp, filter, context) { + context.helper(RESOLVE_FILTER); + const i = filter.indexOf("("); + if (i < 0) { + context.filters.add(filter); + return `${toValidAssetId(filter, "filter")}(${exp})`; + } else { + const name = filter.slice(0, i); + const args = filter.slice(i + 1); + context.filters.add(name); + return `${toValidAssetId(name, "filter")}(${exp}${args !== ")" ? "," + args : args}`; + } +} + +const seen = /* @__PURE__ */ new WeakSet(); +const transformMemo = (node, context) => { + if (node.type === 1) { + const dir = findDir(node, "memo"); + if (!dir || seen.has(node)) { + return; + } + seen.add(node); + return () => { + const codegenNode = node.codegenNode || context.currentNode.codegenNode; + if (codegenNode && codegenNode.type === 13) { + if (node.tagType !== 1) { + convertToBlock(codegenNode, context); + } + node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [ + dir.exp, + createFunctionExpression(void 0, codegenNode), + `_cache`, + String(context.cached.length) + ]); + context.cached.push(null); + } + }; + } +}; + +function getBaseTransformPreset(prefixIdentifiers) { + return [ + [ + transformOnce, + transformIf, + transformMemo, + transformFor, + ...[transformFilter] , + ...prefixIdentifiers ? [ + // order is important + trackVForSlotScopes, + transformExpression + ] : [], + transformSlotOutlet, + transformElement, + trackSlotScopes, + transformText + ], + { + on: transformOn, + bind: transformBind, + model: transformModel + } + ]; +} +function baseCompile(source, options = {}) { + const onError = options.onError || defaultOnError; + const isModuleMode = options.mode === "module"; + const prefixIdentifiers = options.prefixIdentifiers === true || isModuleMode; + if (!prefixIdentifiers && options.cacheHandlers) { + onError(createCompilerError(49)); + } + if (options.scopeId && !isModuleMode) { + onError(createCompilerError(50)); + } + const resolvedOptions = shared.extend({}, options, { + prefixIdentifiers + }); + const ast = shared.isString(source) ? baseParse(source, resolvedOptions) : source; + const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(prefixIdentifiers); + if (options.isTS) { + const { expressionPlugins } = options; + if (!expressionPlugins || !expressionPlugins.includes("typescript")) { + options.expressionPlugins = [...expressionPlugins || [], "typescript"]; + } + } + transform( + ast, + shared.extend({}, resolvedOptions, { + nodeTransforms: [ + ...nodeTransforms, + ...options.nodeTransforms || [] + // user transforms + ], + directiveTransforms: shared.extend( + {}, + directiveTransforms, + options.directiveTransforms || {} + // user transforms + ) + }) + ); + return generate(ast, resolvedOptions); +} + +const BindingTypes = { + "DATA": "data", + "PROPS": "props", + "PROPS_ALIASED": "props-aliased", + "SETUP_LET": "setup-let", + "SETUP_CONST": "setup-const", + "SETUP_REACTIVE_CONST": "setup-reactive-const", + "SETUP_MAYBE_REF": "setup-maybe-ref", + "SETUP_REF": "setup-ref", + "OPTIONS": "options", + "LITERAL_CONST": "literal-const" +}; + +const noopDirectiveTransform = () => ({ props: [] }); + +exports.generateCodeFrame = shared.generateCodeFrame; +exports.BASE_TRANSITION = BASE_TRANSITION; +exports.BindingTypes = BindingTypes; +exports.CAMELIZE = CAMELIZE; +exports.CAPITALIZE = CAPITALIZE; +exports.CREATE_BLOCK = CREATE_BLOCK; +exports.CREATE_COMMENT = CREATE_COMMENT; +exports.CREATE_ELEMENT_BLOCK = CREATE_ELEMENT_BLOCK; +exports.CREATE_ELEMENT_VNODE = CREATE_ELEMENT_VNODE; +exports.CREATE_SLOTS = CREATE_SLOTS; +exports.CREATE_STATIC = CREATE_STATIC; +exports.CREATE_TEXT = CREATE_TEXT; +exports.CREATE_VNODE = CREATE_VNODE; +exports.CompilerDeprecationTypes = CompilerDeprecationTypes; +exports.ConstantTypes = ConstantTypes; +exports.ElementTypes = ElementTypes; +exports.ErrorCodes = ErrorCodes; +exports.FRAGMENT = FRAGMENT; +exports.GUARD_REACTIVE_PROPS = GUARD_REACTIVE_PROPS; +exports.IS_MEMO_SAME = IS_MEMO_SAME; +exports.IS_REF = IS_REF; +exports.KEEP_ALIVE = KEEP_ALIVE; +exports.MERGE_PROPS = MERGE_PROPS; +exports.NORMALIZE_CLASS = NORMALIZE_CLASS; +exports.NORMALIZE_PROPS = NORMALIZE_PROPS; +exports.NORMALIZE_STYLE = NORMALIZE_STYLE; +exports.Namespaces = Namespaces; +exports.NodeTypes = NodeTypes; +exports.OPEN_BLOCK = OPEN_BLOCK; +exports.POP_SCOPE_ID = POP_SCOPE_ID; +exports.PUSH_SCOPE_ID = PUSH_SCOPE_ID; +exports.RENDER_LIST = RENDER_LIST; +exports.RENDER_SLOT = RENDER_SLOT; +exports.RESOLVE_COMPONENT = RESOLVE_COMPONENT; +exports.RESOLVE_DIRECTIVE = RESOLVE_DIRECTIVE; +exports.RESOLVE_DYNAMIC_COMPONENT = RESOLVE_DYNAMIC_COMPONENT; +exports.RESOLVE_FILTER = RESOLVE_FILTER; +exports.SET_BLOCK_TRACKING = SET_BLOCK_TRACKING; +exports.SUSPENSE = SUSPENSE; +exports.TELEPORT = TELEPORT; +exports.TO_DISPLAY_STRING = TO_DISPLAY_STRING; +exports.TO_HANDLERS = TO_HANDLERS; +exports.TO_HANDLER_KEY = TO_HANDLER_KEY; +exports.TS_NODE_TYPES = TS_NODE_TYPES; +exports.UNREF = UNREF; +exports.WITH_CTX = WITH_CTX; +exports.WITH_DIRECTIVES = WITH_DIRECTIVES; +exports.WITH_MEMO = WITH_MEMO; +exports.advancePositionWithClone = advancePositionWithClone; +exports.advancePositionWithMutation = advancePositionWithMutation; +exports.assert = assert; +exports.baseCompile = baseCompile; +exports.baseParse = baseParse; +exports.buildDirectiveArgs = buildDirectiveArgs; +exports.buildProps = buildProps; +exports.buildSlots = buildSlots; +exports.checkCompatEnabled = checkCompatEnabled; +exports.convertToBlock = convertToBlock; +exports.createArrayExpression = createArrayExpression; +exports.createAssignmentExpression = createAssignmentExpression; +exports.createBlockStatement = createBlockStatement; +exports.createCacheExpression = createCacheExpression; +exports.createCallExpression = createCallExpression; +exports.createCompilerError = createCompilerError; +exports.createCompoundExpression = createCompoundExpression; +exports.createConditionalExpression = createConditionalExpression; +exports.createForLoopParams = createForLoopParams; +exports.createFunctionExpression = createFunctionExpression; +exports.createIfStatement = createIfStatement; +exports.createInterpolation = createInterpolation; +exports.createObjectExpression = createObjectExpression; +exports.createObjectProperty = createObjectProperty; +exports.createReturnStatement = createReturnStatement; +exports.createRoot = createRoot; +exports.createSequenceExpression = createSequenceExpression; +exports.createSimpleExpression = createSimpleExpression; +exports.createStructuralDirectiveTransform = createStructuralDirectiveTransform; +exports.createTemplateLiteral = createTemplateLiteral; +exports.createTransformContext = createTransformContext; +exports.createVNodeCall = createVNodeCall; +exports.errorMessages = errorMessages; +exports.extractIdentifiers = extractIdentifiers; +exports.findDir = findDir; +exports.findProp = findProp; +exports.forAliasRE = forAliasRE; +exports.generate = generate; +exports.getBaseTransformPreset = getBaseTransformPreset; +exports.getConstantType = getConstantType; +exports.getMemoedVNodeCall = getMemoedVNodeCall; +exports.getVNodeBlockHelper = getVNodeBlockHelper; +exports.getVNodeHelper = getVNodeHelper; +exports.hasDynamicKeyVBind = hasDynamicKeyVBind; +exports.hasScopeRef = hasScopeRef; +exports.helperNameMap = helperNameMap; +exports.injectProp = injectProp; +exports.isCoreComponent = isCoreComponent; +exports.isFnExpression = isFnExpression; +exports.isFnExpressionBrowser = isFnExpressionBrowser; +exports.isFnExpressionNode = isFnExpressionNode; +exports.isFunctionType = isFunctionType; +exports.isInDestructureAssignment = isInDestructureAssignment; +exports.isInNewExpression = isInNewExpression; +exports.isMemberExpression = isMemberExpression; +exports.isMemberExpressionBrowser = isMemberExpressionBrowser; +exports.isMemberExpressionNode = isMemberExpressionNode; +exports.isReferencedIdentifier = isReferencedIdentifier; +exports.isSimpleIdentifier = isSimpleIdentifier; +exports.isSlotOutlet = isSlotOutlet; +exports.isStaticArgOf = isStaticArgOf; +exports.isStaticExp = isStaticExp; +exports.isStaticProperty = isStaticProperty; +exports.isStaticPropertyKey = isStaticPropertyKey; +exports.isTemplateNode = isTemplateNode; +exports.isText = isText$1; +exports.isVPre = isVPre; +exports.isVSlot = isVSlot; +exports.locStub = locStub; +exports.noopDirectiveTransform = noopDirectiveTransform; +exports.processExpression = processExpression; +exports.processFor = processFor; +exports.processIf = processIf; +exports.processSlotOutlet = processSlotOutlet; +exports.registerRuntimeHelpers = registerRuntimeHelpers; +exports.resolveComponentType = resolveComponentType; +exports.stringifyExpression = stringifyExpression; +exports.toValidAssetId = toValidAssetId; +exports.trackSlotScopes = trackSlotScopes; +exports.trackVForSlotScopes = trackVForSlotScopes; +exports.transform = transform; +exports.transformBind = transformBind; +exports.transformElement = transformElement; +exports.transformExpression = transformExpression; +exports.transformModel = transformModel; +exports.transformOn = transformOn; +exports.traverseNode = traverseNode; +exports.unwrapTSNode = unwrapTSNode; +exports.walkBlockDeclarations = walkBlockDeclarations; +exports.walkFunctionParams = walkFunctionParams; +exports.walkIdentifiers = walkIdentifiers; +exports.warnDeprecation = warnDeprecation; diff --git a/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js b/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js new file mode 100644 index 0000000..5c507b9 --- /dev/null +++ b/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js @@ -0,0 +1,6718 @@ +/** +* @vue/compiler-core v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var shared = require('@vue/shared'); +var decode_js = require('entities/lib/decode.js'); +var parser = require('@babel/parser'); +var estreeWalker = require('estree-walker'); +var sourceMapJs = require('source-map-js'); + +const FRAGMENT = Symbol(``); +const TELEPORT = Symbol(``); +const SUSPENSE = Symbol(``); +const KEEP_ALIVE = Symbol(``); +const BASE_TRANSITION = Symbol( + `` +); +const OPEN_BLOCK = Symbol(``); +const CREATE_BLOCK = Symbol(``); +const CREATE_ELEMENT_BLOCK = Symbol( + `` +); +const CREATE_VNODE = Symbol(``); +const CREATE_ELEMENT_VNODE = Symbol( + `` +); +const CREATE_COMMENT = Symbol( + `` +); +const CREATE_TEXT = Symbol( + `` +); +const CREATE_STATIC = Symbol( + `` +); +const RESOLVE_COMPONENT = Symbol( + `` +); +const RESOLVE_DYNAMIC_COMPONENT = Symbol( + `` +); +const RESOLVE_DIRECTIVE = Symbol( + `` +); +const RESOLVE_FILTER = Symbol( + `` +); +const WITH_DIRECTIVES = Symbol( + `` +); +const RENDER_LIST = Symbol(``); +const RENDER_SLOT = Symbol(``); +const CREATE_SLOTS = Symbol(``); +const TO_DISPLAY_STRING = Symbol( + `` +); +const MERGE_PROPS = Symbol(``); +const NORMALIZE_CLASS = Symbol( + `` +); +const NORMALIZE_STYLE = Symbol( + `` +); +const NORMALIZE_PROPS = Symbol( + `` +); +const GUARD_REACTIVE_PROPS = Symbol( + `` +); +const TO_HANDLERS = Symbol(``); +const CAMELIZE = Symbol(``); +const CAPITALIZE = Symbol(``); +const TO_HANDLER_KEY = Symbol( + `` +); +const SET_BLOCK_TRACKING = Symbol( + `` +); +const PUSH_SCOPE_ID = Symbol(``); +const POP_SCOPE_ID = Symbol(``); +const WITH_CTX = Symbol(``); +const UNREF = Symbol(``); +const IS_REF = Symbol(``); +const WITH_MEMO = Symbol(``); +const IS_MEMO_SAME = Symbol(``); +const helperNameMap = { + [FRAGMENT]: `Fragment`, + [TELEPORT]: `Teleport`, + [SUSPENSE]: `Suspense`, + [KEEP_ALIVE]: `KeepAlive`, + [BASE_TRANSITION]: `BaseTransition`, + [OPEN_BLOCK]: `openBlock`, + [CREATE_BLOCK]: `createBlock`, + [CREATE_ELEMENT_BLOCK]: `createElementBlock`, + [CREATE_VNODE]: `createVNode`, + [CREATE_ELEMENT_VNODE]: `createElementVNode`, + [CREATE_COMMENT]: `createCommentVNode`, + [CREATE_TEXT]: `createTextVNode`, + [CREATE_STATIC]: `createStaticVNode`, + [RESOLVE_COMPONENT]: `resolveComponent`, + [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`, + [RESOLVE_DIRECTIVE]: `resolveDirective`, + [RESOLVE_FILTER]: `resolveFilter`, + [WITH_DIRECTIVES]: `withDirectives`, + [RENDER_LIST]: `renderList`, + [RENDER_SLOT]: `renderSlot`, + [CREATE_SLOTS]: `createSlots`, + [TO_DISPLAY_STRING]: `toDisplayString`, + [MERGE_PROPS]: `mergeProps`, + [NORMALIZE_CLASS]: `normalizeClass`, + [NORMALIZE_STYLE]: `normalizeStyle`, + [NORMALIZE_PROPS]: `normalizeProps`, + [GUARD_REACTIVE_PROPS]: `guardReactiveProps`, + [TO_HANDLERS]: `toHandlers`, + [CAMELIZE]: `camelize`, + [CAPITALIZE]: `capitalize`, + [TO_HANDLER_KEY]: `toHandlerKey`, + [SET_BLOCK_TRACKING]: `setBlockTracking`, + [PUSH_SCOPE_ID]: `pushScopeId`, + [POP_SCOPE_ID]: `popScopeId`, + [WITH_CTX]: `withCtx`, + [UNREF]: `unref`, + [IS_REF]: `isRef`, + [WITH_MEMO]: `withMemo`, + [IS_MEMO_SAME]: `isMemoSame` +}; +function registerRuntimeHelpers(helpers) { + Object.getOwnPropertySymbols(helpers).forEach((s) => { + helperNameMap[s] = helpers[s]; + }); +} + +const Namespaces = { + "HTML": 0, + "0": "HTML", + "SVG": 1, + "1": "SVG", + "MATH_ML": 2, + "2": "MATH_ML" +}; +const NodeTypes = { + "ROOT": 0, + "0": "ROOT", + "ELEMENT": 1, + "1": "ELEMENT", + "TEXT": 2, + "2": "TEXT", + "COMMENT": 3, + "3": "COMMENT", + "SIMPLE_EXPRESSION": 4, + "4": "SIMPLE_EXPRESSION", + "INTERPOLATION": 5, + "5": "INTERPOLATION", + "ATTRIBUTE": 6, + "6": "ATTRIBUTE", + "DIRECTIVE": 7, + "7": "DIRECTIVE", + "COMPOUND_EXPRESSION": 8, + "8": "COMPOUND_EXPRESSION", + "IF": 9, + "9": "IF", + "IF_BRANCH": 10, + "10": "IF_BRANCH", + "FOR": 11, + "11": "FOR", + "TEXT_CALL": 12, + "12": "TEXT_CALL", + "VNODE_CALL": 13, + "13": "VNODE_CALL", + "JS_CALL_EXPRESSION": 14, + "14": "JS_CALL_EXPRESSION", + "JS_OBJECT_EXPRESSION": 15, + "15": "JS_OBJECT_EXPRESSION", + "JS_PROPERTY": 16, + "16": "JS_PROPERTY", + "JS_ARRAY_EXPRESSION": 17, + "17": "JS_ARRAY_EXPRESSION", + "JS_FUNCTION_EXPRESSION": 18, + "18": "JS_FUNCTION_EXPRESSION", + "JS_CONDITIONAL_EXPRESSION": 19, + "19": "JS_CONDITIONAL_EXPRESSION", + "JS_CACHE_EXPRESSION": 20, + "20": "JS_CACHE_EXPRESSION", + "JS_BLOCK_STATEMENT": 21, + "21": "JS_BLOCK_STATEMENT", + "JS_TEMPLATE_LITERAL": 22, + "22": "JS_TEMPLATE_LITERAL", + "JS_IF_STATEMENT": 23, + "23": "JS_IF_STATEMENT", + "JS_ASSIGNMENT_EXPRESSION": 24, + "24": "JS_ASSIGNMENT_EXPRESSION", + "JS_SEQUENCE_EXPRESSION": 25, + "25": "JS_SEQUENCE_EXPRESSION", + "JS_RETURN_STATEMENT": 26, + "26": "JS_RETURN_STATEMENT" +}; +const ElementTypes = { + "ELEMENT": 0, + "0": "ELEMENT", + "COMPONENT": 1, + "1": "COMPONENT", + "SLOT": 2, + "2": "SLOT", + "TEMPLATE": 3, + "3": "TEMPLATE" +}; +const ConstantTypes = { + "NOT_CONSTANT": 0, + "0": "NOT_CONSTANT", + "CAN_SKIP_PATCH": 1, + "1": "CAN_SKIP_PATCH", + "CAN_CACHE": 2, + "2": "CAN_CACHE", + "CAN_STRINGIFY": 3, + "3": "CAN_STRINGIFY" +}; +const locStub = { + start: { line: 1, column: 1, offset: 0 }, + end: { line: 1, column: 1, offset: 0 }, + source: "" +}; +function createRoot(children, source = "") { + return { + type: 0, + source, + children, + helpers: /* @__PURE__ */ new Set(), + components: [], + directives: [], + hoists: [], + imports: [], + cached: [], + temps: 0, + codegenNode: void 0, + loc: locStub + }; +} +function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) { + if (context) { + if (isBlock) { + context.helper(OPEN_BLOCK); + context.helper(getVNodeBlockHelper(context.inSSR, isComponent)); + } else { + context.helper(getVNodeHelper(context.inSSR, isComponent)); + } + if (directives) { + context.helper(WITH_DIRECTIVES); + } + } + return { + type: 13, + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent, + loc + }; +} +function createArrayExpression(elements, loc = locStub) { + return { + type: 17, + loc, + elements + }; +} +function createObjectExpression(properties, loc = locStub) { + return { + type: 15, + loc, + properties + }; +} +function createObjectProperty(key, value) { + return { + type: 16, + loc: locStub, + key: shared.isString(key) ? createSimpleExpression(key, true) : key, + value + }; +} +function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) { + return { + type: 4, + loc, + content, + isStatic, + constType: isStatic ? 3 : constType + }; +} +function createInterpolation(content, loc) { + return { + type: 5, + loc, + content: shared.isString(content) ? createSimpleExpression(content, false, loc) : content + }; +} +function createCompoundExpression(children, loc = locStub) { + return { + type: 8, + loc, + children + }; +} +function createCallExpression(callee, args = [], loc = locStub) { + return { + type: 14, + loc, + callee, + arguments: args + }; +} +function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) { + return { + type: 18, + params, + returns, + newline, + isSlot, + loc + }; +} +function createConditionalExpression(test, consequent, alternate, newline = true) { + return { + type: 19, + test, + consequent, + alternate, + newline, + loc: locStub + }; +} +function createCacheExpression(index, value, needPauseTracking = false, inVOnce = false) { + return { + type: 20, + index, + value, + needPauseTracking, + inVOnce, + needArraySpread: false, + loc: locStub + }; +} +function createBlockStatement(body) { + return { + type: 21, + body, + loc: locStub + }; +} +function createTemplateLiteral(elements) { + return { + type: 22, + elements, + loc: locStub + }; +} +function createIfStatement(test, consequent, alternate) { + return { + type: 23, + test, + consequent, + alternate, + loc: locStub + }; +} +function createAssignmentExpression(left, right) { + return { + type: 24, + left, + right, + loc: locStub + }; +} +function createSequenceExpression(expressions) { + return { + type: 25, + expressions, + loc: locStub + }; +} +function createReturnStatement(returns) { + return { + type: 26, + returns, + loc: locStub + }; +} +function getVNodeHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE; +} +function getVNodeBlockHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK; +} +function convertToBlock(node, { helper, removeHelper, inSSR }) { + if (!node.isBlock) { + node.isBlock = true; + removeHelper(getVNodeHelper(inSSR, node.isComponent)); + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(inSSR, node.isComponent)); + } +} + +const defaultDelimitersOpen = new Uint8Array([123, 123]); +const defaultDelimitersClose = new Uint8Array([125, 125]); +function isTagStartChar(c) { + return c >= 97 && c <= 122 || c >= 65 && c <= 90; +} +function isWhitespace(c) { + return c === 32 || c === 10 || c === 9 || c === 12 || c === 13; +} +function isEndOfTagSection(c) { + return c === 47 || c === 62 || isWhitespace(c); +} +function toCharCodes(str) { + const ret = new Uint8Array(str.length); + for (let i = 0; i < str.length; i++) { + ret[i] = str.charCodeAt(i); + } + return ret; +} +const Sequences = { + Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]), + // CDATA[ + CdataEnd: new Uint8Array([93, 93, 62]), + // ]]> + CommentEnd: new Uint8Array([45, 45, 62]), + // `-->` + ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), + // `<\/script` + StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), + // `</style` + TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]), + // `</title` + TextareaEnd: new Uint8Array([ + 60, + 47, + 116, + 101, + 120, + 116, + 97, + 114, + 101, + 97 + ]) + // `</textarea +}; +class Tokenizer { + constructor(stack, cbs) { + this.stack = stack; + this.cbs = cbs; + /** The current state the tokenizer is in. */ + this.state = 1; + /** The read buffer. */ + this.buffer = ""; + /** The beginning of the section that is currently being read. */ + this.sectionStart = 0; + /** The index within the buffer that we are currently looking at. */ + this.index = 0; + /** The start of the last entity. */ + this.entityStart = 0; + /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */ + this.baseState = 1; + /** For special parsing behavior inside of script and style tags. */ + this.inRCDATA = false; + /** For disabling RCDATA tags handling */ + this.inXML = false; + /** For disabling interpolation parsing in v-pre */ + this.inVPre = false; + /** Record newline positions for fast line / column calculation */ + this.newlines = []; + this.mode = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + this.delimiterIndex = -1; + this.currentSequence = void 0; + this.sequenceIndex = 0; + { + this.entityDecoder = new decode_js.EntityDecoder( + decode_js.htmlDecodeTree, + (cp, consumed) => this.emitCodePoint(cp, consumed) + ); + } + } + get inSFCRoot() { + return this.mode === 2 && this.stack.length === 0; + } + reset() { + this.state = 1; + this.mode = 0; + this.buffer = ""; + this.sectionStart = 0; + this.index = 0; + this.baseState = 1; + this.inRCDATA = false; + this.currentSequence = void 0; + this.newlines.length = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + } + /** + * Generate Position object with line / column information using recorded + * newline positions. We know the index is always going to be an already + * processed index, so all the newlines up to this index should have been + * recorded. + */ + getPos(index) { + let line = 1; + let column = index + 1; + for (let i = this.newlines.length - 1; i >= 0; i--) { + const newlineIndex = this.newlines[i]; + if (index > newlineIndex) { + line = i + 2; + column = index - newlineIndex; + break; + } + } + return { + column, + line, + offset: index + }; + } + peek() { + return this.buffer.charCodeAt(this.index + 1); + } + stateText(c) { + if (c === 60) { + if (this.index > this.sectionStart) { + this.cbs.ontext(this.sectionStart, this.index); + } + this.state = 5; + this.sectionStart = this.index; + } else if (c === 38) { + this.startEntity(); + } else if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } + stateInterpolationOpen(c) { + if (c === this.delimiterOpen[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterOpen.length - 1) { + const start = this.index + 1 - this.delimiterOpen.length; + if (start > this.sectionStart) { + this.cbs.ontext(this.sectionStart, start); + } + this.state = 3; + this.sectionStart = start; + } else { + this.delimiterIndex++; + } + } else if (this.inRCDATA) { + this.state = 32; + this.stateInRCDATA(c); + } else { + this.state = 1; + this.stateText(c); + } + } + stateInterpolation(c) { + if (c === this.delimiterClose[0]) { + this.state = 4; + this.delimiterIndex = 0; + this.stateInterpolationClose(c); + } + } + stateInterpolationClose(c) { + if (c === this.delimiterClose[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterClose.length - 1) { + this.cbs.oninterpolation(this.sectionStart, this.index + 1); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else { + this.delimiterIndex++; + } + } else { + this.state = 3; + this.stateInterpolation(c); + } + } + stateSpecialStartSequence(c) { + const isEnd = this.sequenceIndex === this.currentSequence.length; + const isMatch = isEnd ? ( + // If we are at the end of the sequence, make sure the tag name has ended + isEndOfTagSection(c) + ) : ( + // Otherwise, do a case-insensitive comparison + (c | 32) === this.currentSequence[this.sequenceIndex] + ); + if (!isMatch) { + this.inRCDATA = false; + } else if (!isEnd) { + this.sequenceIndex++; + return; + } + this.sequenceIndex = 0; + this.state = 6; + this.stateInTagName(c); + } + /** Look for an end tag. For <title> and <textarea>, also decode entities. */ + stateInRCDATA(c) { + if (this.sequenceIndex === this.currentSequence.length) { + if (c === 62 || isWhitespace(c)) { + const endOfText = this.index - this.currentSequence.length; + if (this.sectionStart < endOfText) { + const actualIndex = this.index; + this.index = endOfText; + this.cbs.ontext(this.sectionStart, endOfText); + this.index = actualIndex; + } + this.sectionStart = endOfText + 2; + this.stateInClosingTagName(c); + this.inRCDATA = false; + return; + } + this.sequenceIndex = 0; + } + if ((c | 32) === this.currentSequence[this.sequenceIndex]) { + this.sequenceIndex += 1; + } else if (this.sequenceIndex === 0) { + if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd && !this.inSFCRoot) { + if (c === 38) { + this.startEntity(); + } else if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } else if (this.fastForwardTo(60)) { + this.sequenceIndex = 1; + } + } else { + this.sequenceIndex = Number(c === 60); + } + } + stateCDATASequence(c) { + if (c === Sequences.Cdata[this.sequenceIndex]) { + if (++this.sequenceIndex === Sequences.Cdata.length) { + this.state = 28; + this.currentSequence = Sequences.CdataEnd; + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + } + } else { + this.sequenceIndex = 0; + this.state = 23; + this.stateInDeclaration(c); + } + } + /** + * When we wait for one specific character, we can speed things up + * by skipping through the buffer until we find it. + * + * @returns Whether the character was found. + */ + fastForwardTo(c) { + while (++this.index < this.buffer.length) { + const cc = this.buffer.charCodeAt(this.index); + if (cc === 10) { + this.newlines.push(this.index); + } + if (cc === c) { + return true; + } + } + this.index = this.buffer.length - 1; + return false; + } + /** + * Comments and CDATA end with `-->` and `]]>`. + * + * Their common qualities are: + * - Their end sequences have a distinct character they start with. + * - That character is then repeated, so we have to check multiple repeats. + * - All characters but the start character of the sequence can be skipped. + */ + stateInCommentLike(c) { + if (c === this.currentSequence[this.sequenceIndex]) { + if (++this.sequenceIndex === this.currentSequence.length) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, this.index - 2); + } else { + this.cbs.oncomment(this.sectionStart, this.index - 2); + } + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + this.state = 1; + } + } else if (this.sequenceIndex === 0) { + if (this.fastForwardTo(this.currentSequence[0])) { + this.sequenceIndex = 1; + } + } else if (c !== this.currentSequence[this.sequenceIndex - 1]) { + this.sequenceIndex = 0; + } + } + startSpecial(sequence, offset) { + this.enterRCDATA(sequence, offset); + this.state = 31; + } + enterRCDATA(sequence, offset) { + this.inRCDATA = true; + this.currentSequence = sequence; + this.sequenceIndex = offset; + } + stateBeforeTagName(c) { + if (c === 33) { + this.state = 22; + this.sectionStart = this.index + 1; + } else if (c === 63) { + this.state = 24; + this.sectionStart = this.index + 1; + } else if (isTagStartChar(c)) { + this.sectionStart = this.index; + if (this.mode === 0) { + this.state = 6; + } else if (this.inSFCRoot) { + this.state = 34; + } else if (!this.inXML) { + if (c === 116) { + this.state = 30; + } else { + this.state = c === 115 ? 29 : 6; + } + } else { + this.state = 6; + } + } else if (c === 47) { + this.state = 8; + } else { + this.state = 1; + this.stateText(c); + } + } + stateInTagName(c) { + if (isEndOfTagSection(c)) { + this.handleTagName(c); + } + } + stateInSFCRootTagName(c) { + if (isEndOfTagSection(c)) { + const tag = this.buffer.slice(this.sectionStart, this.index); + if (tag !== "template") { + this.enterRCDATA(toCharCodes(`</` + tag), 0); + } + this.handleTagName(c); + } + } + handleTagName(c) { + this.cbs.onopentagname(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } + stateBeforeClosingTagName(c) { + if (isWhitespace(c)) ; else if (c === 62) { + { + this.cbs.onerr(14, this.index); + } + this.state = 1; + this.sectionStart = this.index + 1; + } else { + this.state = isTagStartChar(c) ? 9 : 27; + this.sectionStart = this.index; + } + } + stateInClosingTagName(c) { + if (c === 62 || isWhitespace(c)) { + this.cbs.onclosetag(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 10; + this.stateAfterClosingTagName(c); + } + } + stateAfterClosingTagName(c) { + if (c === 62) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeAttrName(c) { + if (c === 62) { + this.cbs.onopentagend(this.index); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else if (c === 47) { + this.state = 7; + if (this.peek() !== 62) { + this.cbs.onerr(22, this.index); + } + } else if (c === 60 && this.peek() === 47) { + this.cbs.onopentagend(this.index); + this.state = 5; + this.sectionStart = this.index; + } else if (!isWhitespace(c)) { + if (c === 61) { + this.cbs.onerr( + 19, + this.index + ); + } + this.handleAttrStart(c); + } + } + handleAttrStart(c) { + if (c === 118 && this.peek() === 45) { + this.state = 13; + this.sectionStart = this.index; + } else if (c === 46 || c === 58 || c === 64 || c === 35) { + this.cbs.ondirname(this.index, this.index + 1); + this.state = 14; + this.sectionStart = this.index + 1; + } else { + this.state = 12; + this.sectionStart = this.index; + } + } + stateInSelfClosingTag(c) { + if (c === 62) { + this.cbs.onselfclosingtag(this.index); + this.state = 1; + this.sectionStart = this.index + 1; + this.inRCDATA = false; + } else if (!isWhitespace(c)) { + this.state = 11; + this.stateBeforeAttrName(c); + } + } + stateInAttrName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.onattribname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 34 || c === 39 || c === 60) { + this.cbs.onerr( + 17, + this.index + ); + } + } + stateInDirName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 58) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 14; + this.sectionStart = this.index + 1; + } else if (c === 46) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDirArg(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 91) { + this.state = 15; + } else if (c === 46) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDynamicDirArg(c) { + if (c === 93) { + this.state = 14; + } else if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index + 1); + this.handleAttrNameEnd(c); + { + this.cbs.onerr( + 27, + this.index + ); + } + } + } + stateInDirModifier(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 46) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.sectionStart = this.index + 1; + } + } + handleAttrNameEnd(c) { + this.sectionStart = this.index; + this.state = 17; + this.cbs.onattribnameend(this.index); + this.stateAfterAttrName(c); + } + stateAfterAttrName(c) { + if (c === 61) { + this.state = 18; + } else if (c === 47 || c === 62) { + this.cbs.onattribend(0, this.sectionStart); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } else if (!isWhitespace(c)) { + this.cbs.onattribend(0, this.sectionStart); + this.handleAttrStart(c); + } + } + stateBeforeAttrValue(c) { + if (c === 34) { + this.state = 19; + this.sectionStart = this.index + 1; + } else if (c === 39) { + this.state = 20; + this.sectionStart = this.index + 1; + } else if (!isWhitespace(c)) { + this.sectionStart = this.index; + this.state = 21; + this.stateInAttrValueNoQuotes(c); + } + } + handleInAttrValue(c, quote) { + if (c === quote || false) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend( + quote === 34 ? 3 : 2, + this.index + 1 + ); + this.state = 11; + } else if (c === 38) { + this.startEntity(); + } + } + stateInAttrValueDoubleQuotes(c) { + this.handleInAttrValue(c, 34); + } + stateInAttrValueSingleQuotes(c) { + this.handleInAttrValue(c, 39); + } + stateInAttrValueNoQuotes(c) { + if (isWhitespace(c) || c === 62) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend(1, this.index); + this.state = 11; + this.stateBeforeAttrName(c); + } else if (c === 34 || c === 39 || c === 60 || c === 61 || c === 96) { + this.cbs.onerr( + 18, + this.index + ); + } else if (c === 38) { + this.startEntity(); + } + } + stateBeforeDeclaration(c) { + if (c === 91) { + this.state = 26; + this.sequenceIndex = 0; + } else { + this.state = c === 45 ? 25 : 23; + } + } + stateInDeclaration(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateInProcessingInstruction(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.onprocessinginstruction(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeComment(c) { + if (c === 45) { + this.state = 28; + this.currentSequence = Sequences.CommentEnd; + this.sequenceIndex = 2; + this.sectionStart = this.index + 1; + } else { + this.state = 23; + } + } + stateInSpecialComment(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.oncomment(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeSpecialS(c) { + if (c === Sequences.ScriptEnd[3]) { + this.startSpecial(Sequences.ScriptEnd, 4); + } else if (c === Sequences.StyleEnd[3]) { + this.startSpecial(Sequences.StyleEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + stateBeforeSpecialT(c) { + if (c === Sequences.TitleEnd[3]) { + this.startSpecial(Sequences.TitleEnd, 4); + } else if (c === Sequences.TextareaEnd[3]) { + this.startSpecial(Sequences.TextareaEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + startEntity() { + { + this.baseState = this.state; + this.state = 33; + this.entityStart = this.index; + this.entityDecoder.startEntity( + this.baseState === 1 || this.baseState === 32 ? decode_js.DecodingMode.Legacy : decode_js.DecodingMode.Attribute + ); + } + } + stateInEntity() { + { + const length = this.entityDecoder.write(this.buffer, this.index); + if (length >= 0) { + this.state = this.baseState; + if (length === 0) { + this.index = this.entityStart; + } + } else { + this.index = this.buffer.length - 1; + } + } + } + /** + * Iterates through the buffer, calling the function corresponding to the current state. + * + * States that are more likely to be hit are higher up, as a performance improvement. + */ + parse(input) { + this.buffer = input; + while (this.index < this.buffer.length) { + const c = this.buffer.charCodeAt(this.index); + if (c === 10 && this.state !== 33) { + this.newlines.push(this.index); + } + switch (this.state) { + case 1: { + this.stateText(c); + break; + } + case 2: { + this.stateInterpolationOpen(c); + break; + } + case 3: { + this.stateInterpolation(c); + break; + } + case 4: { + this.stateInterpolationClose(c); + break; + } + case 31: { + this.stateSpecialStartSequence(c); + break; + } + case 32: { + this.stateInRCDATA(c); + break; + } + case 26: { + this.stateCDATASequence(c); + break; + } + case 19: { + this.stateInAttrValueDoubleQuotes(c); + break; + } + case 12: { + this.stateInAttrName(c); + break; + } + case 13: { + this.stateInDirName(c); + break; + } + case 14: { + this.stateInDirArg(c); + break; + } + case 15: { + this.stateInDynamicDirArg(c); + break; + } + case 16: { + this.stateInDirModifier(c); + break; + } + case 28: { + this.stateInCommentLike(c); + break; + } + case 27: { + this.stateInSpecialComment(c); + break; + } + case 11: { + this.stateBeforeAttrName(c); + break; + } + case 6: { + this.stateInTagName(c); + break; + } + case 34: { + this.stateInSFCRootTagName(c); + break; + } + case 9: { + this.stateInClosingTagName(c); + break; + } + case 5: { + this.stateBeforeTagName(c); + break; + } + case 17: { + this.stateAfterAttrName(c); + break; + } + case 20: { + this.stateInAttrValueSingleQuotes(c); + break; + } + case 18: { + this.stateBeforeAttrValue(c); + break; + } + case 8: { + this.stateBeforeClosingTagName(c); + break; + } + case 10: { + this.stateAfterClosingTagName(c); + break; + } + case 29: { + this.stateBeforeSpecialS(c); + break; + } + case 30: { + this.stateBeforeSpecialT(c); + break; + } + case 21: { + this.stateInAttrValueNoQuotes(c); + break; + } + case 7: { + this.stateInSelfClosingTag(c); + break; + } + case 23: { + this.stateInDeclaration(c); + break; + } + case 22: { + this.stateBeforeDeclaration(c); + break; + } + case 25: { + this.stateBeforeComment(c); + break; + } + case 24: { + this.stateInProcessingInstruction(c); + break; + } + case 33: { + this.stateInEntity(); + break; + } + } + this.index++; + } + this.cleanup(); + this.finish(); + } + /** + * Remove data that has already been consumed from the buffer. + */ + cleanup() { + if (this.sectionStart !== this.index) { + if (this.state === 1 || this.state === 32 && this.sequenceIndex === 0) { + this.cbs.ontext(this.sectionStart, this.index); + this.sectionStart = this.index; + } else if (this.state === 19 || this.state === 20 || this.state === 21) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = this.index; + } + } + } + finish() { + if (this.state === 33) { + this.entityDecoder.end(); + this.state = this.baseState; + } + this.handleTrailingData(); + this.cbs.onend(); + } + /** Handle any trailing data. */ + handleTrailingData() { + const endIndex = this.buffer.length; + if (this.sectionStart >= endIndex) { + return; + } + if (this.state === 28) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, endIndex); + } else { + this.cbs.oncomment(this.sectionStart, endIndex); + } + } else if (this.state === 6 || this.state === 11 || this.state === 18 || this.state === 17 || this.state === 12 || this.state === 13 || this.state === 14 || this.state === 15 || this.state === 16 || this.state === 20 || this.state === 19 || this.state === 21 || this.state === 9) ; else { + this.cbs.ontext(this.sectionStart, endIndex); + } + } + emitCodePoint(cp, consumed) { + { + if (this.baseState !== 1 && this.baseState !== 32) { + if (this.sectionStart < this.entityStart) { + this.cbs.onattribdata(this.sectionStart, this.entityStart); + } + this.sectionStart = this.entityStart + consumed; + this.index = this.sectionStart - 1; + this.cbs.onattribentity( + decode_js.fromCodePoint(cp), + this.entityStart, + this.sectionStart + ); + } else { + if (this.sectionStart < this.entityStart) { + this.cbs.ontext(this.sectionStart, this.entityStart); + } + this.sectionStart = this.entityStart + consumed; + this.index = this.sectionStart - 1; + this.cbs.ontextentity( + decode_js.fromCodePoint(cp), + this.entityStart, + this.sectionStart + ); + } + } + } +} + +const CompilerDeprecationTypes = { + "COMPILER_IS_ON_ELEMENT": "COMPILER_IS_ON_ELEMENT", + "COMPILER_V_BIND_SYNC": "COMPILER_V_BIND_SYNC", + "COMPILER_V_BIND_OBJECT_ORDER": "COMPILER_V_BIND_OBJECT_ORDER", + "COMPILER_V_ON_NATIVE": "COMPILER_V_ON_NATIVE", + "COMPILER_V_IF_V_FOR_PRECEDENCE": "COMPILER_V_IF_V_FOR_PRECEDENCE", + "COMPILER_NATIVE_TEMPLATE": "COMPILER_NATIVE_TEMPLATE", + "COMPILER_INLINE_TEMPLATE": "COMPILER_INLINE_TEMPLATE", + "COMPILER_FILTERS": "COMPILER_FILTERS" +}; +const deprecationData = { + ["COMPILER_IS_ON_ELEMENT"]: { + message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`, + link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html` + }, + ["COMPILER_V_BIND_SYNC"]: { + message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html` + }, + ["COMPILER_V_BIND_OBJECT_ORDER"]: { + message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html` + }, + ["COMPILER_V_ON_NATIVE"]: { + message: `.native modifier for v-on has been removed as is no longer necessary.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html` + }, + ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: { + message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html` + }, + ["COMPILER_NATIVE_TEMPLATE"]: { + message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.` + }, + ["COMPILER_INLINE_TEMPLATE"]: { + message: `"inline-template" has been removed in Vue 3.`, + link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html` + }, + ["COMPILER_FILTERS"]: { + message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`, + link: `https://v3-migration.vuejs.org/breaking-changes/filters.html` + } +}; +function getCompatValue(key, { compatConfig }) { + const value = compatConfig && compatConfig[key]; + if (key === "MODE") { + return value || 3; + } else { + return value; + } +} +function isCompatEnabled(key, context) { + const mode = getCompatValue("MODE", context); + const value = getCompatValue(key, context); + return mode === 3 ? value === true : value !== false; +} +function checkCompatEnabled(key, context, loc, ...args) { + const enabled = isCompatEnabled(key, context); + return enabled; +} +function warnDeprecation(key, context, loc, ...args) { + const val = getCompatValue(key, context); + if (val === "suppress-warning") { + return; + } + const { message, link } = deprecationData[key]; + const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? ` + Details: ${link}` : ``}`; + const err = new SyntaxError(msg); + err.code = key; + if (loc) err.loc = loc; + context.onWarn(err); +} + +function defaultOnError(error) { + throw error; +} +function defaultOnWarn(msg) { +} +function createCompilerError(code, loc, messages, additionalMessage) { + const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ; + const error = new SyntaxError(String(msg)); + error.code = code; + error.loc = loc; + return error; +} +const ErrorCodes = { + "ABRUPT_CLOSING_OF_EMPTY_COMMENT": 0, + "0": "ABRUPT_CLOSING_OF_EMPTY_COMMENT", + "CDATA_IN_HTML_CONTENT": 1, + "1": "CDATA_IN_HTML_CONTENT", + "DUPLICATE_ATTRIBUTE": 2, + "2": "DUPLICATE_ATTRIBUTE", + "END_TAG_WITH_ATTRIBUTES": 3, + "3": "END_TAG_WITH_ATTRIBUTES", + "END_TAG_WITH_TRAILING_SOLIDUS": 4, + "4": "END_TAG_WITH_TRAILING_SOLIDUS", + "EOF_BEFORE_TAG_NAME": 5, + "5": "EOF_BEFORE_TAG_NAME", + "EOF_IN_CDATA": 6, + "6": "EOF_IN_CDATA", + "EOF_IN_COMMENT": 7, + "7": "EOF_IN_COMMENT", + "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT": 8, + "8": "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT", + "EOF_IN_TAG": 9, + "9": "EOF_IN_TAG", + "INCORRECTLY_CLOSED_COMMENT": 10, + "10": "INCORRECTLY_CLOSED_COMMENT", + "INCORRECTLY_OPENED_COMMENT": 11, + "11": "INCORRECTLY_OPENED_COMMENT", + "INVALID_FIRST_CHARACTER_OF_TAG_NAME": 12, + "12": "INVALID_FIRST_CHARACTER_OF_TAG_NAME", + "MISSING_ATTRIBUTE_VALUE": 13, + "13": "MISSING_ATTRIBUTE_VALUE", + "MISSING_END_TAG_NAME": 14, + "14": "MISSING_END_TAG_NAME", + "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES": 15, + "15": "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES", + "NESTED_COMMENT": 16, + "16": "NESTED_COMMENT", + "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME": 17, + "17": "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME", + "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE": 18, + "18": "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE", + "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME": 19, + "19": "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME", + "UNEXPECTED_NULL_CHARACTER": 20, + "20": "UNEXPECTED_NULL_CHARACTER", + "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME": 21, + "21": "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME", + "UNEXPECTED_SOLIDUS_IN_TAG": 22, + "22": "UNEXPECTED_SOLIDUS_IN_TAG", + "X_INVALID_END_TAG": 23, + "23": "X_INVALID_END_TAG", + "X_MISSING_END_TAG": 24, + "24": "X_MISSING_END_TAG", + "X_MISSING_INTERPOLATION_END": 25, + "25": "X_MISSING_INTERPOLATION_END", + "X_MISSING_DIRECTIVE_NAME": 26, + "26": "X_MISSING_DIRECTIVE_NAME", + "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END": 27, + "27": "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END", + "X_V_IF_NO_EXPRESSION": 28, + "28": "X_V_IF_NO_EXPRESSION", + "X_V_IF_SAME_KEY": 29, + "29": "X_V_IF_SAME_KEY", + "X_V_ELSE_NO_ADJACENT_IF": 30, + "30": "X_V_ELSE_NO_ADJACENT_IF", + "X_V_FOR_NO_EXPRESSION": 31, + "31": "X_V_FOR_NO_EXPRESSION", + "X_V_FOR_MALFORMED_EXPRESSION": 32, + "32": "X_V_FOR_MALFORMED_EXPRESSION", + "X_V_FOR_TEMPLATE_KEY_PLACEMENT": 33, + "33": "X_V_FOR_TEMPLATE_KEY_PLACEMENT", + "X_V_BIND_NO_EXPRESSION": 34, + "34": "X_V_BIND_NO_EXPRESSION", + "X_V_ON_NO_EXPRESSION": 35, + "35": "X_V_ON_NO_EXPRESSION", + "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET": 36, + "36": "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET", + "X_V_SLOT_MIXED_SLOT_USAGE": 37, + "37": "X_V_SLOT_MIXED_SLOT_USAGE", + "X_V_SLOT_DUPLICATE_SLOT_NAMES": 38, + "38": "X_V_SLOT_DUPLICATE_SLOT_NAMES", + "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN": 39, + "39": "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN", + "X_V_SLOT_MISPLACED": 40, + "40": "X_V_SLOT_MISPLACED", + "X_V_MODEL_NO_EXPRESSION": 41, + "41": "X_V_MODEL_NO_EXPRESSION", + "X_V_MODEL_MALFORMED_EXPRESSION": 42, + "42": "X_V_MODEL_MALFORMED_EXPRESSION", + "X_V_MODEL_ON_SCOPE_VARIABLE": 43, + "43": "X_V_MODEL_ON_SCOPE_VARIABLE", + "X_V_MODEL_ON_PROPS": 44, + "44": "X_V_MODEL_ON_PROPS", + "X_INVALID_EXPRESSION": 45, + "45": "X_INVALID_EXPRESSION", + "X_KEEP_ALIVE_INVALID_CHILDREN": 46, + "46": "X_KEEP_ALIVE_INVALID_CHILDREN", + "X_PREFIX_ID_NOT_SUPPORTED": 47, + "47": "X_PREFIX_ID_NOT_SUPPORTED", + "X_MODULE_MODE_NOT_SUPPORTED": 48, + "48": "X_MODULE_MODE_NOT_SUPPORTED", + "X_CACHE_HANDLER_NOT_SUPPORTED": 49, + "49": "X_CACHE_HANDLER_NOT_SUPPORTED", + "X_SCOPE_ID_NOT_SUPPORTED": 50, + "50": "X_SCOPE_ID_NOT_SUPPORTED", + "X_VNODE_HOOKS": 51, + "51": "X_VNODE_HOOKS", + "X_V_BIND_INVALID_SAME_NAME_ARGUMENT": 52, + "52": "X_V_BIND_INVALID_SAME_NAME_ARGUMENT", + "__EXTEND_POINT__": 53, + "53": "__EXTEND_POINT__" +}; +const errorMessages = { + // parse errors + [0]: "Illegal comment.", + [1]: "CDATA section is allowed only in XML context.", + [2]: "Duplicate attribute.", + [3]: "End tag cannot have attributes.", + [4]: "Illegal '/' in tags.", + [5]: "Unexpected EOF in tag.", + [6]: "Unexpected EOF in CDATA section.", + [7]: "Unexpected EOF in comment.", + [8]: "Unexpected EOF in script.", + [9]: "Unexpected EOF in tag.", + [10]: "Incorrectly closed comment.", + [11]: "Incorrectly opened comment.", + [12]: "Illegal tag name. Use '<' to print '<'.", + [13]: "Attribute value was expected.", + [14]: "End tag name was expected.", + [15]: "Whitespace was expected.", + [16]: "Unexpected '<!--' in comment.", + [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`, + [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).", + [19]: "Attribute name cannot start with '='.", + [21]: "'<?' is allowed only in XML context.", + [20]: `Unexpected null character.`, + [22]: "Illegal '/' in tags.", + // Vue-specific parse errors + [23]: "Invalid end tag.", + [24]: "Element is missing end tag.", + [25]: "Interpolation end sign was not found.", + [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.", + [26]: "Legal directive name was expected.", + // transform errors + [28]: `v-if/v-else-if is missing expression.`, + [29]: `v-if/else branches must use unique keys.`, + [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`, + [31]: `v-for is missing expression.`, + [32]: `v-for has invalid expression.`, + [33]: `<template v-for> key should be placed on the <template> tag.`, + [34]: `v-bind is missing expression.`, + [52]: `v-bind with same-name shorthand only allows static argument.`, + [35]: `v-on is missing expression.`, + [36]: `Unexpected custom directive on <slot> outlet.`, + [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`, + [38]: `Duplicate slot names found. `, + [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`, + [40]: `v-slot can only be used on components or <template> tags.`, + [41]: `v-model is missing expression.`, + [42]: `v-model value must be a valid JavaScript member expression.`, + [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`, + [44]: `v-model cannot be used on a prop, because local prop bindings are not writable. +Use a v-bind binding combined with a v-on listener that emits update:x event instead.`, + [45]: `Error parsing JavaScript expression: `, + [46]: `<KeepAlive> expects exactly one child component.`, + [51]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`, + // generic errors + [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`, + [48]: `ES module mode is not supported in this build of compiler.`, + [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`, + [50]: `"scopeId" option is only supported in module mode.`, + // just to fulfill types + [53]: `` +}; + +function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) { + const rootExp = root.type === "Program" ? root.body[0].type === "ExpressionStatement" && root.body[0].expression : root; + estreeWalker.walk(root, { + enter(node, parent) { + parent && parentStack.push(parent); + if (parent && parent.type.startsWith("TS") && !TS_NODE_TYPES.includes(parent.type)) { + return this.skip(); + } + if (node.type === "Identifier") { + const isLocal = !!knownIds[node.name]; + const isRefed = isReferencedIdentifier(node, parent, parentStack); + if (includeAll || isRefed && !isLocal) { + onIdentifier(node, parent, parentStack, isRefed, isLocal); + } + } else if (node.type === "ObjectProperty" && // eslint-disable-next-line no-restricted-syntax + (parent == null ? void 0 : parent.type) === "ObjectPattern") { + node.inPattern = true; + } else if (isFunctionType(node)) { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + walkFunctionParams( + node, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + } else if (node.type === "BlockStatement") { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + walkBlockDeclarations( + node, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + } else if (node.type === "CatchClause" && node.param) { + for (const id of extractIdentifiers(node.param)) { + markScopeIdentifier(node, id, knownIds); + } + } else if (isForStatement(node)) { + walkForStatement( + node, + false, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + }, + leave(node, parent) { + parent && parentStack.pop(); + if (node !== rootExp && node.scopeIds) { + for (const id of node.scopeIds) { + knownIds[id]--; + if (knownIds[id] === 0) { + delete knownIds[id]; + } + } + } + } + }); +} +function isReferencedIdentifier(id, parent, parentStack) { + if (!parent) { + return true; + } + if (id.name === "arguments") { + return false; + } + if (isReferenced(id, parent, parentStack[parentStack.length - 2])) { + return true; + } + switch (parent.type) { + case "AssignmentExpression": + case "AssignmentPattern": + return true; + case "ObjectProperty": + return parent.key !== id && isInDestructureAssignment(parent, parentStack); + case "ArrayPattern": + return isInDestructureAssignment(parent, parentStack); + } + return false; +} +function isInDestructureAssignment(parent, parentStack) { + if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "AssignmentExpression") { + return true; + } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) { + break; + } + } + } + return false; +} +function isInNewExpression(parentStack) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "NewExpression") { + return true; + } else if (p.type !== "MemberExpression") { + break; + } + } + return false; +} +function walkFunctionParams(node, onIdent) { + for (const p of node.params) { + for (const id of extractIdentifiers(p)) { + onIdent(id); + } + } +} +function walkBlockDeclarations(block, onIdent) { + for (const stmt of block.body) { + if (stmt.type === "VariableDeclaration") { + if (stmt.declare) continue; + for (const decl of stmt.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") { + if (stmt.declare || !stmt.id) continue; + onIdent(stmt.id); + } else if (isForStatement(stmt)) { + walkForStatement(stmt, true, onIdent); + } + } +} +function isForStatement(stmt) { + return stmt.type === "ForOfStatement" || stmt.type === "ForInStatement" || stmt.type === "ForStatement"; +} +function walkForStatement(stmt, isVar, onIdent) { + const variable = stmt.type === "ForStatement" ? stmt.init : stmt.left; + if (variable && variable.type === "VariableDeclaration" && (variable.kind === "var" ? isVar : !isVar)) { + for (const decl of variable.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } +} +function extractIdentifiers(param, nodes = []) { + switch (param.type) { + case "Identifier": + nodes.push(param); + break; + case "MemberExpression": + let object = param; + while (object.type === "MemberExpression") { + object = object.object; + } + nodes.push(object); + break; + case "ObjectPattern": + for (const prop of param.properties) { + if (prop.type === "RestElement") { + extractIdentifiers(prop.argument, nodes); + } else { + extractIdentifiers(prop.value, nodes); + } + } + break; + case "ArrayPattern": + param.elements.forEach((element) => { + if (element) extractIdentifiers(element, nodes); + }); + break; + case "RestElement": + extractIdentifiers(param.argument, nodes); + break; + case "AssignmentPattern": + extractIdentifiers(param.left, nodes); + break; + } + return nodes; +} +function markKnownIds(name, knownIds) { + if (name in knownIds) { + knownIds[name]++; + } else { + knownIds[name] = 1; + } +} +function markScopeIdentifier(node, child, knownIds) { + const { name } = child; + if (node.scopeIds && node.scopeIds.has(name)) { + return; + } + markKnownIds(name, knownIds); + (node.scopeIds || (node.scopeIds = /* @__PURE__ */ new Set())).add(name); +} +const isFunctionType = (node) => { + return /Function(?:Expression|Declaration)$|Method$/.test(node.type); +}; +const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed; +const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node; +function isReferenced(node, parent, grandparent) { + switch (parent.type) { + // yes: PARENT[NODE] + // yes: NODE.child + // no: parent.NODE + case "MemberExpression": + case "OptionalMemberExpression": + if (parent.property === node) { + return !!parent.computed; + } + return parent.object === node; + case "JSXMemberExpression": + return parent.object === node; + // no: let NODE = init; + // yes: let id = NODE; + case "VariableDeclarator": + return parent.init === node; + // yes: () => NODE + // no: (NODE) => {} + case "ArrowFunctionExpression": + return parent.body === node; + // no: class { #NODE; } + // no: class { get #NODE() {} } + // no: class { #NODE() {} } + // no: class { fn() { return this.#NODE; } } + case "PrivateName": + return false; + // no: class { NODE() {} } + // yes: class { [NODE]() {} } + // no: class { foo(NODE) {} } + case "ClassMethod": + case "ClassPrivateMethod": + case "ObjectMethod": + if (parent.key === node) { + return !!parent.computed; + } + return false; + // yes: { [NODE]: "" } + // no: { NODE: "" } + // depends: { NODE } + // depends: { key: NODE } + case "ObjectProperty": + if (parent.key === node) { + return !!parent.computed; + } + return !grandparent || grandparent.type !== "ObjectPattern"; + // no: class { NODE = value; } + // yes: class { [NODE] = value; } + // yes: class { key = NODE; } + case "ClassProperty": + if (parent.key === node) { + return !!parent.computed; + } + return true; + case "ClassPrivateProperty": + return parent.key !== node; + // no: class NODE {} + // yes: class Foo extends NODE {} + case "ClassDeclaration": + case "ClassExpression": + return parent.superClass === node; + // yes: left = NODE; + // no: NODE = right; + case "AssignmentExpression": + return parent.right === node; + // no: [NODE = foo] = []; + // yes: [foo = NODE] = []; + case "AssignmentPattern": + return parent.right === node; + // no: NODE: for (;;) {} + case "LabeledStatement": + return false; + // no: try {} catch (NODE) {} + case "CatchClause": + return false; + // no: function foo(...NODE) {} + case "RestElement": + return false; + case "BreakStatement": + case "ContinueStatement": + return false; + // no: function NODE() {} + // no: function foo(NODE) {} + case "FunctionDeclaration": + case "FunctionExpression": + return false; + // no: export NODE from "foo"; + // no: export * as NODE from "foo"; + case "ExportNamespaceSpecifier": + case "ExportDefaultSpecifier": + return false; + // no: export { foo as NODE }; + // yes: export { NODE as foo }; + // no: export { NODE as foo } from "foo"; + case "ExportSpecifier": + if (grandparent == null ? void 0 : grandparent.source) { + return false; + } + return parent.local === node; + // no: import NODE from "foo"; + // no: import * as NODE from "foo"; + // no: import { NODE as foo } from "foo"; + // no: import { foo as NODE } from "foo"; + // no: import NODE from "bar"; + case "ImportDefaultSpecifier": + case "ImportNamespaceSpecifier": + case "ImportSpecifier": + return false; + // no: import "foo" assert { NODE: "json" } + case "ImportAttribute": + return false; + // no: <div NODE="foo" /> + case "JSXAttribute": + return false; + // no: [NODE] = []; + // no: ({ NODE }) = []; + case "ObjectPattern": + case "ArrayPattern": + return false; + // no: new.NODE + // no: NODE.target + case "MetaProperty": + return false; + // yes: type X = { someProperty: NODE } + // no: type X = { NODE: OtherType } + case "ObjectTypeProperty": + return parent.key !== node; + // yes: enum X { Foo = NODE } + // no: enum X { NODE } + case "TSEnumMember": + return parent.id !== node; + // yes: { [NODE]: value } + // no: { NODE: value } + case "TSPropertySignature": + if (parent.key === node) { + return !!parent.computed; + } + return true; + } + return true; +} +const TS_NODE_TYPES = [ + "TSAsExpression", + // foo as number + "TSTypeAssertion", + // (<number>foo) + "TSNonNullExpression", + // foo! + "TSInstantiationExpression", + // foo<string> + "TSSatisfiesExpression" + // foo satisfies T +]; +function unwrapTSNode(node) { + if (TS_NODE_TYPES.includes(node.type)) { + return unwrapTSNode(node.expression); + } else { + return node; + } +} + +const isStaticExp = (p) => p.type === 4 && p.isStatic; +function isCoreComponent(tag) { + switch (tag) { + case "Teleport": + case "teleport": + return TELEPORT; + case "Suspense": + case "suspense": + return SUSPENSE; + case "KeepAlive": + case "keep-alive": + return KEEP_ALIVE; + case "BaseTransition": + case "base-transition": + return BASE_TRANSITION; + } +} +const nonIdentifierRE = /^$|^\d|[^\$\w\xA0-\uFFFF]/; +const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name); +const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/; +const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/; +const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g; +const getExpSource = (exp) => exp.type === 4 ? exp.content : exp.loc.source; +const isMemberExpressionBrowser = (exp) => { + const path = getExpSource(exp).trim().replace(whitespaceRE, (s) => s.trim()); + let state = 0 /* inMemberExp */; + let stateStack = []; + let currentOpenBracketCount = 0; + let currentOpenParensCount = 0; + let currentStringType = null; + for (let i = 0; i < path.length; i++) { + const char = path.charAt(i); + switch (state) { + case 0 /* inMemberExp */: + if (char === "[") { + stateStack.push(state); + state = 1 /* inBrackets */; + currentOpenBracketCount++; + } else if (char === "(") { + stateStack.push(state); + state = 2 /* inParens */; + currentOpenParensCount++; + } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) { + return false; + } + break; + case 1 /* inBrackets */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `[`) { + currentOpenBracketCount++; + } else if (char === `]`) { + if (!--currentOpenBracketCount) { + state = stateStack.pop(); + } + } + break; + case 2 /* inParens */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `(`) { + currentOpenParensCount++; + } else if (char === `)`) { + if (i === path.length - 1) { + return false; + } + if (!--currentOpenParensCount) { + state = stateStack.pop(); + } + } + break; + case 3 /* inString */: + if (char === currentStringType) { + state = stateStack.pop(); + currentStringType = null; + } + break; + } + } + return !currentOpenBracketCount && !currentOpenParensCount; +}; +const isMemberExpressionNode = (exp, context) => { + try { + let ret = exp.ast || parser.parseExpression(getExpSource(exp), { + plugins: context.expressionPlugins ? [...context.expressionPlugins, "typescript"] : ["typescript"] + }); + ret = unwrapTSNode(ret); + return ret.type === "MemberExpression" || ret.type === "OptionalMemberExpression" || ret.type === "Identifier" && ret.name !== "undefined"; + } catch (e) { + return false; + } +}; +const isMemberExpression = isMemberExpressionNode; +const fnExpRE = /^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/; +const isFnExpressionBrowser = (exp) => fnExpRE.test(getExpSource(exp)); +const isFnExpressionNode = (exp, context) => { + try { + let ret = exp.ast || parser.parseExpression(getExpSource(exp), { + plugins: context.expressionPlugins ? [...context.expressionPlugins, "typescript"] : ["typescript"] + }); + if (ret.type === "Program") { + ret = ret.body[0]; + if (ret.type === "ExpressionStatement") { + ret = ret.expression; + } + } + ret = unwrapTSNode(ret); + return ret.type === "FunctionExpression" || ret.type === "ArrowFunctionExpression"; + } catch (e) { + return false; + } +}; +const isFnExpression = isFnExpressionNode; +function advancePositionWithClone(pos, source, numberOfCharacters = source.length) { + return advancePositionWithMutation( + { + offset: pos.offset, + line: pos.line, + column: pos.column + }, + source, + numberOfCharacters + ); +} +function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) { + let linesCount = 0; + let lastNewLinePos = -1; + for (let i = 0; i < numberOfCharacters; i++) { + if (source.charCodeAt(i) === 10) { + linesCount++; + lastNewLinePos = i; + } + } + pos.offset += numberOfCharacters; + pos.line += linesCount; + pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos; + return pos; +} +function assert(condition, msg) { + if (!condition) { + throw new Error(msg || `unexpected compiler condition`); + } +} +function findDir(node, name, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (allowEmpty || p.exp) && (shared.isString(name) ? p.name === name : name.test(p.name))) { + return p; + } + } +} +function findProp(node, name, dynamicOnly = false, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (dynamicOnly) continue; + if (p.name === name && (p.value || allowEmpty)) { + return p; + } + } else if (p.name === "bind" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) { + return p; + } + } +} +function isStaticArgOf(arg, name) { + return !!(arg && isStaticExp(arg) && arg.content === name); +} +function hasDynamicKeyVBind(node) { + return node.props.some( + (p) => p.type === 7 && p.name === "bind" && (!p.arg || // v-bind="obj" + p.arg.type !== 4 || // v-bind:[_ctx.foo] + !p.arg.isStatic) + // v-bind:[foo] + ); +} +function isText$1(node) { + return node.type === 5 || node.type === 2; +} +function isVPre(p) { + return p.type === 7 && p.name === "pre"; +} +function isVSlot(p) { + return p.type === 7 && p.name === "slot"; +} +function isTemplateNode(node) { + return node.type === 1 && node.tagType === 3; +} +function isSlotOutlet(node) { + return node.type === 1 && node.tagType === 2; +} +const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]); +function getUnnormalizedProps(props, callPath = []) { + if (props && !shared.isString(props) && props.type === 14) { + const callee = props.callee; + if (!shared.isString(callee) && propsHelperSet.has(callee)) { + return getUnnormalizedProps( + props.arguments[0], + callPath.concat(props) + ); + } + } + return [props, callPath]; +} +function injectProp(node, prop, context) { + let propsWithInjection; + let props = node.type === 13 ? node.props : node.arguments[2]; + let callPath = []; + let parentCall; + if (props && !shared.isString(props) && props.type === 14) { + const ret = getUnnormalizedProps(props); + props = ret[0]; + callPath = ret[1]; + parentCall = callPath[callPath.length - 1]; + } + if (props == null || shared.isString(props)) { + propsWithInjection = createObjectExpression([prop]); + } else if (props.type === 14) { + const first = props.arguments[0]; + if (!shared.isString(first) && first.type === 15) { + if (!hasProp(prop, first)) { + first.properties.unshift(prop); + } + } else { + if (props.callee === TO_HANDLERS) { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + } else { + props.arguments.unshift(createObjectExpression([prop])); + } + } + !propsWithInjection && (propsWithInjection = props); + } else if (props.type === 15) { + if (!hasProp(prop, props)) { + props.properties.unshift(prop); + } + propsWithInjection = props; + } else { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) { + parentCall = callPath[callPath.length - 2]; + } + } + if (node.type === 13) { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.props = propsWithInjection; + } + } else { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.arguments[2] = propsWithInjection; + } + } +} +function hasProp(prop, props) { + let result = false; + if (prop.key.type === 4) { + const propKeyName = prop.key.content; + result = props.properties.some( + (p) => p.key.type === 4 && p.key.content === propKeyName + ); + } + return result; +} +function toValidAssetId(name, type) { + return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => { + return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString(); + })}`; +} +function hasScopeRef(node, ids) { + if (!node || Object.keys(ids).length === 0) { + return false; + } + switch (node.type) { + case 1: + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) { + return true; + } + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 11: + if (hasScopeRef(node.source, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 9: + return node.branches.some((b) => hasScopeRef(b, ids)); + case 10: + if (hasScopeRef(node.condition, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 4: + return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content]; + case 8: + return node.children.some((c) => shared.isObject(c) && hasScopeRef(c, ids)); + case 5: + case 12: + return hasScopeRef(node.content, ids); + case 2: + case 3: + case 20: + return false; + default: + return false; + } +} +function getMemoedVNodeCall(node) { + if (node.type === 14 && node.callee === WITH_MEMO) { + return node.arguments[1].returns; + } else { + return node; + } +} +const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/; + +const defaultParserOptions = { + parseMode: "base", + ns: 0, + delimiters: [`{{`, `}}`], + getNamespace: () => 0, + isVoidTag: shared.NO, + isPreTag: shared.NO, + isIgnoreNewlineTag: shared.NO, + isCustomElement: shared.NO, + onError: defaultOnError, + onWarn: defaultOnWarn, + comments: false, + prefixIdentifiers: false +}; +let currentOptions = defaultParserOptions; +let currentRoot = null; +let currentInput = ""; +let currentOpenTag = null; +let currentProp = null; +let currentAttrValue = ""; +let currentAttrStartIndex = -1; +let currentAttrEndIndex = -1; +let inPre = 0; +let inVPre = false; +let currentVPreBoundary = null; +const stack = []; +const tokenizer = new Tokenizer(stack, { + onerr: emitError, + ontext(start, end) { + onText(getSlice(start, end), start, end); + }, + ontextentity(char, start, end) { + onText(char, start, end); + }, + oninterpolation(start, end) { + if (inVPre) { + return onText(getSlice(start, end), start, end); + } + let innerStart = start + tokenizer.delimiterOpen.length; + let innerEnd = end - tokenizer.delimiterClose.length; + while (isWhitespace(currentInput.charCodeAt(innerStart))) { + innerStart++; + } + while (isWhitespace(currentInput.charCodeAt(innerEnd - 1))) { + innerEnd--; + } + let exp = getSlice(innerStart, innerEnd); + if (exp.includes("&")) { + { + exp = decode_js.decodeHTML(exp); + } + } + addNode({ + type: 5, + content: createExp(exp, false, getLoc(innerStart, innerEnd)), + loc: getLoc(start, end) + }); + }, + onopentagname(start, end) { + const name = getSlice(start, end); + currentOpenTag = { + type: 1, + tag: name, + ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns), + tagType: 0, + // will be refined on tag close + props: [], + children: [], + loc: getLoc(start - 1, end), + codegenNode: void 0 + }; + }, + onopentagend(end) { + endOpenTag(end); + }, + onclosetag(start, end) { + const name = getSlice(start, end); + if (!currentOptions.isVoidTag(name)) { + let found = false; + for (let i = 0; i < stack.length; i++) { + const e = stack[i]; + if (e.tag.toLowerCase() === name.toLowerCase()) { + found = true; + if (i > 0) { + emitError(24, stack[0].loc.start.offset); + } + for (let j = 0; j <= i; j++) { + const el = stack.shift(); + onCloseTag(el, end, j < i); + } + break; + } + } + if (!found) { + emitError(23, backTrack(start, 60)); + } + } + }, + onselfclosingtag(end) { + const name = currentOpenTag.tag; + currentOpenTag.isSelfClosing = true; + endOpenTag(end); + if (stack[0] && stack[0].tag === name) { + onCloseTag(stack.shift(), end); + } + }, + onattribname(start, end) { + currentProp = { + type: 6, + name: getSlice(start, end), + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + }, + ondirname(start, end) { + const raw = getSlice(start, end); + const name = raw === "." || raw === ":" ? "bind" : raw === "@" ? "on" : raw === "#" ? "slot" : raw.slice(2); + if (!inVPre && name === "") { + emitError(26, start); + } + if (inVPre || name === "") { + currentProp = { + type: 6, + name: raw, + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + } else { + currentProp = { + type: 7, + name, + rawName: raw, + exp: void 0, + arg: void 0, + modifiers: raw === "." ? [createSimpleExpression("prop")] : [], + loc: getLoc(start) + }; + if (name === "pre") { + inVPre = tokenizer.inVPre = true; + currentVPreBoundary = currentOpenTag; + const props = currentOpenTag.props; + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7) { + props[i] = dirToAttr(props[i]); + } + } + } + } + }, + ondirarg(start, end) { + if (start === end) return; + const arg = getSlice(start, end); + if (inVPre && !isVPre(currentProp)) { + currentProp.name += arg; + setLocEnd(currentProp.nameLoc, end); + } else { + const isStatic = arg[0] !== `[`; + currentProp.arg = createExp( + isStatic ? arg : arg.slice(1, -1), + isStatic, + getLoc(start, end), + isStatic ? 3 : 0 + ); + } + }, + ondirmodifier(start, end) { + const mod = getSlice(start, end); + if (inVPre && !isVPre(currentProp)) { + currentProp.name += "." + mod; + setLocEnd(currentProp.nameLoc, end); + } else if (currentProp.name === "slot") { + const arg = currentProp.arg; + if (arg) { + arg.content += "." + mod; + setLocEnd(arg.loc, end); + } + } else { + const exp = createSimpleExpression(mod, true, getLoc(start, end)); + currentProp.modifiers.push(exp); + } + }, + onattribdata(start, end) { + currentAttrValue += getSlice(start, end); + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribentity(char, start, end) { + currentAttrValue += char; + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribnameend(end) { + const start = currentProp.loc.start.offset; + const name = getSlice(start, end); + if (currentProp.type === 7) { + currentProp.rawName = name; + } + if (currentOpenTag.props.some( + (p) => (p.type === 7 ? p.rawName : p.name) === name + )) { + emitError(2, start); + } + }, + onattribend(quote, end) { + if (currentOpenTag && currentProp) { + setLocEnd(currentProp.loc, end); + if (quote !== 0) { + if (currentProp.type === 6) { + if (currentProp.name === "class") { + currentAttrValue = condense(currentAttrValue).trim(); + } + if (quote === 1 && !currentAttrValue) { + emitError(13, end); + } + currentProp.value = { + type: 2, + content: currentAttrValue, + loc: quote === 1 ? getLoc(currentAttrStartIndex, currentAttrEndIndex) : getLoc(currentAttrStartIndex - 1, currentAttrEndIndex + 1) + }; + if (tokenizer.inSFCRoot && currentOpenTag.tag === "template" && currentProp.name === "lang" && currentAttrValue && currentAttrValue !== "html") { + tokenizer.enterRCDATA(toCharCodes(`</template`), 0); + } + } else { + let expParseMode = 0 /* Normal */; + { + if (currentProp.name === "for") { + expParseMode = 3 /* Skip */; + } else if (currentProp.name === "slot") { + expParseMode = 1 /* Params */; + } else if (currentProp.name === "on" && currentAttrValue.includes(";")) { + expParseMode = 2 /* Statements */; + } + } + currentProp.exp = createExp( + currentAttrValue, + false, + getLoc(currentAttrStartIndex, currentAttrEndIndex), + 0, + expParseMode + ); + if (currentProp.name === "for") { + currentProp.forParseResult = parseForExpression(currentProp.exp); + } + let syncIndex = -1; + if (currentProp.name === "bind" && (syncIndex = currentProp.modifiers.findIndex( + (mod) => mod.content === "sync" + )) > -1 && checkCompatEnabled( + "COMPILER_V_BIND_SYNC", + currentOptions, + currentProp.loc, + currentProp.arg.loc.source + )) { + currentProp.name = "model"; + currentProp.modifiers.splice(syncIndex, 1); + } + } + } + if (currentProp.type !== 7 || currentProp.name !== "pre") { + currentOpenTag.props.push(currentProp); + } + } + currentAttrValue = ""; + currentAttrStartIndex = currentAttrEndIndex = -1; + }, + oncomment(start, end) { + if (currentOptions.comments) { + addNode({ + type: 3, + content: getSlice(start, end), + loc: getLoc(start - 4, end + 3) + }); + } + }, + onend() { + const end = currentInput.length; + if (tokenizer.state !== 1) { + switch (tokenizer.state) { + case 5: + case 8: + emitError(5, end); + break; + case 3: + case 4: + emitError( + 25, + tokenizer.sectionStart + ); + break; + case 28: + if (tokenizer.currentSequence === Sequences.CdataEnd) { + emitError(6, end); + } else { + emitError(7, end); + } + break; + case 6: + case 7: + case 9: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + // " + case 20: + // ' + case 21: + emitError(9, end); + break; + } + } + for (let index = 0; index < stack.length; index++) { + onCloseTag(stack[index], end - 1); + emitError(24, stack[index].loc.start.offset); + } + }, + oncdata(start, end) { + if (stack[0].ns !== 0) { + onText(getSlice(start, end), start, end); + } else { + emitError(1, start - 9); + } + }, + onprocessinginstruction(start) { + if ((stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + emitError( + 21, + start - 1 + ); + } + } +}); +const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; +const stripParensRE = /^\(|\)$/g; +function parseForExpression(input) { + const loc = input.loc; + const exp = input.content; + const inMatch = exp.match(forAliasRE); + if (!inMatch) return; + const [, LHS, RHS] = inMatch; + const createAliasExpression = (content, offset, asParam = false) => { + const start = loc.start.offset + offset; + const end = start + content.length; + return createExp( + content, + false, + getLoc(start, end), + 0, + asParam ? 1 /* Params */ : 0 /* Normal */ + ); + }; + const result = { + source: createAliasExpression(RHS.trim(), exp.indexOf(RHS, LHS.length)), + value: void 0, + key: void 0, + index: void 0, + finalized: false + }; + let valueContent = LHS.trim().replace(stripParensRE, "").trim(); + const trimmedOffset = LHS.indexOf(valueContent); + const iteratorMatch = valueContent.match(forIteratorRE); + if (iteratorMatch) { + valueContent = valueContent.replace(forIteratorRE, "").trim(); + const keyContent = iteratorMatch[1].trim(); + let keyOffset; + if (keyContent) { + keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length); + result.key = createAliasExpression(keyContent, keyOffset, true); + } + if (iteratorMatch[2]) { + const indexContent = iteratorMatch[2].trim(); + if (indexContent) { + result.index = createAliasExpression( + indexContent, + exp.indexOf( + indexContent, + result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length + ), + true + ); + } + } + } + if (valueContent) { + result.value = createAliasExpression(valueContent, trimmedOffset, true); + } + return result; +} +function getSlice(start, end) { + return currentInput.slice(start, end); +} +function endOpenTag(end) { + if (tokenizer.inSFCRoot) { + currentOpenTag.innerLoc = getLoc(end + 1, end + 1); + } + addNode(currentOpenTag); + const { tag, ns } = currentOpenTag; + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre++; + } + if (currentOptions.isVoidTag(tag)) { + onCloseTag(currentOpenTag, end); + } else { + stack.unshift(currentOpenTag); + if (ns === 1 || ns === 2) { + tokenizer.inXML = true; + } + } + currentOpenTag = null; +} +function onText(content, start, end) { + const parent = stack[0] || currentRoot; + const lastNode = parent.children[parent.children.length - 1]; + if (lastNode && lastNode.type === 2) { + lastNode.content += content; + setLocEnd(lastNode.loc, end); + } else { + parent.children.push({ + type: 2, + content, + loc: getLoc(start, end) + }); + } +} +function onCloseTag(el, end, isImplied = false) { + if (isImplied) { + setLocEnd(el.loc, backTrack(end, 60)); + } else { + setLocEnd(el.loc, lookAhead(end, 62) + 1); + } + if (tokenizer.inSFCRoot) { + if (el.children.length) { + el.innerLoc.end = shared.extend({}, el.children[el.children.length - 1].loc.end); + } else { + el.innerLoc.end = shared.extend({}, el.innerLoc.start); + } + el.innerLoc.source = getSlice( + el.innerLoc.start.offset, + el.innerLoc.end.offset + ); + } + const { tag, ns, children } = el; + if (!inVPre) { + if (tag === "slot") { + el.tagType = 2; + } else if (isFragmentTemplate(el)) { + el.tagType = 3; + } else if (isComponent(el)) { + el.tagType = 1; + } + } + if (!tokenizer.inRCDATA) { + el.children = condenseWhitespace(children); + } + if (ns === 0 && currentOptions.isIgnoreNewlineTag(tag)) { + const first = children[0]; + if (first && first.type === 2) { + first.content = first.content.replace(/^\r?\n/, ""); + } + } + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre--; + } + if (currentVPreBoundary === el) { + inVPre = tokenizer.inVPre = false; + currentVPreBoundary = null; + } + if (tokenizer.inXML && (stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + tokenizer.inXML = false; + } + { + const props = el.props; + if (!tokenizer.inSFCRoot && isCompatEnabled( + "COMPILER_NATIVE_TEMPLATE", + currentOptions + ) && el.tag === "template" && !isFragmentTemplate(el)) { + const parent = stack[0] || currentRoot; + const index = parent.children.indexOf(el); + parent.children.splice(index, 1, ...el.children); + } + const inlineTemplateProp = props.find( + (p) => p.type === 6 && p.name === "inline-template" + ); + if (inlineTemplateProp && checkCompatEnabled( + "COMPILER_INLINE_TEMPLATE", + currentOptions, + inlineTemplateProp.loc + ) && el.children.length) { + inlineTemplateProp.value = { + type: 2, + content: getSlice( + el.children[0].loc.start.offset, + el.children[el.children.length - 1].loc.end.offset + ), + loc: inlineTemplateProp.loc + }; + } + } +} +function lookAhead(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i < currentInput.length - 1) i++; + return i; +} +function backTrack(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i >= 0) i--; + return i; +} +const specialTemplateDir = /* @__PURE__ */ new Set(["if", "else", "else-if", "for", "slot"]); +function isFragmentTemplate({ tag, props }) { + if (tag === "template") { + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7 && specialTemplateDir.has(props[i].name)) { + return true; + } + } + } + return false; +} +function isComponent({ tag, props }) { + if (currentOptions.isCustomElement(tag)) { + return false; + } + if (tag === "component" || isUpperCase(tag.charCodeAt(0)) || isCoreComponent(tag) || currentOptions.isBuiltInComponent && currentOptions.isBuiltInComponent(tag) || currentOptions.isNativeTag && !currentOptions.isNativeTag(tag)) { + return true; + } + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 6) { + if (p.name === "is" && p.value) { + if (p.value.content.startsWith("vue:")) { + return true; + } else if (checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; + } + } + } else if (// :is on plain element - only treat as component in compat mode + p.name === "bind" && isStaticArgOf(p.arg, "is") && checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; + } + } + return false; +} +function isUpperCase(c) { + return c > 64 && c < 91; +} +const windowsNewlineRE = /\r\n/g; +function condenseWhitespace(nodes) { + const shouldCondense = currentOptions.whitespace !== "preserve"; + let removedWhitespace = false; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (node.type === 2) { + if (!inPre) { + if (isAllWhitespace(node.content)) { + const prev = nodes[i - 1] && nodes[i - 1].type; + const next = nodes[i + 1] && nodes[i + 1].type; + if (!prev || !next || shouldCondense && (prev === 3 && (next === 3 || next === 1) || prev === 1 && (next === 3 || next === 1 && hasNewlineChar(node.content)))) { + removedWhitespace = true; + nodes[i] = null; + } else { + node.content = " "; + } + } else if (shouldCondense) { + node.content = condense(node.content); + } + } else { + node.content = node.content.replace(windowsNewlineRE, "\n"); + } + } + } + return removedWhitespace ? nodes.filter(Boolean) : nodes; +} +function isAllWhitespace(str) { + for (let i = 0; i < str.length; i++) { + if (!isWhitespace(str.charCodeAt(i))) { + return false; + } + } + return true; +} +function hasNewlineChar(str) { + for (let i = 0; i < str.length; i++) { + const c = str.charCodeAt(i); + if (c === 10 || c === 13) { + return true; + } + } + return false; +} +function condense(str) { + let ret = ""; + let prevCharIsWhitespace = false; + for (let i = 0; i < str.length; i++) { + if (isWhitespace(str.charCodeAt(i))) { + if (!prevCharIsWhitespace) { + ret += " "; + prevCharIsWhitespace = true; + } + } else { + ret += str[i]; + prevCharIsWhitespace = false; + } + } + return ret; +} +function addNode(node) { + (stack[0] || currentRoot).children.push(node); +} +function getLoc(start, end) { + return { + start: tokenizer.getPos(start), + // @ts-expect-error allow late attachment + end: end == null ? end : tokenizer.getPos(end), + // @ts-expect-error allow late attachment + source: end == null ? end : getSlice(start, end) + }; +} +function cloneLoc(loc) { + return getLoc(loc.start.offset, loc.end.offset); +} +function setLocEnd(loc, end) { + loc.end = tokenizer.getPos(end); + loc.source = getSlice(loc.start.offset, end); +} +function dirToAttr(dir) { + const attr = { + type: 6, + name: dir.rawName, + nameLoc: getLoc( + dir.loc.start.offset, + dir.loc.start.offset + dir.rawName.length + ), + value: void 0, + loc: dir.loc + }; + if (dir.exp) { + const loc = dir.exp.loc; + if (loc.end.offset < dir.loc.end.offset) { + loc.start.offset--; + loc.start.column--; + loc.end.offset++; + loc.end.column++; + } + attr.value = { + type: 2, + content: dir.exp.content, + loc + }; + } + return attr; +} +function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0 /* Normal */) { + const exp = createSimpleExpression(content, isStatic, loc, constType); + if (!isStatic && currentOptions.prefixIdentifiers && parseMode !== 3 /* Skip */ && content.trim()) { + if (isSimpleIdentifier(content)) { + exp.ast = null; + return exp; + } + try { + const plugins = currentOptions.expressionPlugins; + const options = { + plugins: plugins ? [...plugins, "typescript"] : ["typescript"] + }; + if (parseMode === 2 /* Statements */) { + exp.ast = parser.parse(` ${content} `, options).program; + } else if (parseMode === 1 /* Params */) { + exp.ast = parser.parseExpression(`(${content})=>{}`, options); + } else { + exp.ast = parser.parseExpression(`(${content})`, options); + } + } catch (e) { + exp.ast = false; + emitError(45, loc.start.offset, e.message); + } + } + return exp; +} +function emitError(code, index, message) { + currentOptions.onError( + createCompilerError(code, getLoc(index, index), void 0, message) + ); +} +function reset() { + tokenizer.reset(); + currentOpenTag = null; + currentProp = null; + currentAttrValue = ""; + currentAttrStartIndex = -1; + currentAttrEndIndex = -1; + stack.length = 0; +} +function baseParse(input, options) { + reset(); + currentInput = input; + currentOptions = shared.extend({}, defaultParserOptions); + if (options) { + let key; + for (key in options) { + if (options[key] != null) { + currentOptions[key] = options[key]; + } + } + } + tokenizer.mode = currentOptions.parseMode === "html" ? 1 : currentOptions.parseMode === "sfc" ? 2 : 0; + tokenizer.inXML = currentOptions.ns === 1 || currentOptions.ns === 2; + const delimiters = options && options.delimiters; + if (delimiters) { + tokenizer.delimiterOpen = toCharCodes(delimiters[0]); + tokenizer.delimiterClose = toCharCodes(delimiters[1]); + } + const root = currentRoot = createRoot([], input); + tokenizer.parse(currentInput); + root.loc = getLoc(0, input.length); + root.children = condenseWhitespace(root.children); + currentRoot = null; + return root; +} + +function cacheStatic(root, context) { + walk( + root, + void 0, + context, + // Root node is unfortunately non-hoistable due to potential parent + // fallthrough attributes. + !!getSingleElementRoot(root) + ); +} +function getSingleElementRoot(root) { + const children = root.children.filter((x) => x.type !== 3); + return children.length === 1 && children[0].type === 1 && !isSlotOutlet(children[0]) ? children[0] : null; +} +function walk(node, parent, context, doNotHoistNode = false, inFor = false) { + const { children } = node; + const toCache = []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.type === 1 && child.tagType === 0) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType > 0) { + if (constantType >= 2) { + child.codegenNode.patchFlag = -1; + toCache.push(child); + continue; + } + } else { + const codegenNode = child.codegenNode; + if (codegenNode.type === 13) { + const flag = codegenNode.patchFlag; + if ((flag === void 0 || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) { + const props = getNodeProps(child); + if (props) { + codegenNode.props = context.hoist(props); + } + } + if (codegenNode.dynamicProps) { + codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps); + } + } + } + } else if (child.type === 12) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType >= 2) { + if (child.codegenNode.type === 14 && child.codegenNode.arguments.length > 0) { + child.codegenNode.arguments.push( + -1 + (``) + ); + } + toCache.push(child); + continue; + } + } + if (child.type === 1) { + const isComponent = child.tagType === 1; + if (isComponent) { + context.scopes.vSlot++; + } + walk(child, node, context, false, inFor); + if (isComponent) { + context.scopes.vSlot--; + } + } else if (child.type === 11) { + walk(child, node, context, child.children.length === 1, true); + } else if (child.type === 9) { + for (let i2 = 0; i2 < child.branches.length; i2++) { + walk( + child.branches[i2], + node, + context, + child.branches[i2].children.length === 1, + inFor + ); + } + } + } + let cachedAsArray = false; + const slotCacheKeys = []; + if (toCache.length === children.length && node.type === 1) { + if (node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared.isArray(node.codegenNode.children)) { + node.codegenNode.children = getCacheExpression( + createArrayExpression(node.codegenNode.children) + ); + cachedAsArray = true; + } else if (node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !shared.isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) { + const slot = getSlotNode(node.codegenNode, "default"); + if (slot) { + slotCacheKeys.push(context.cached.length); + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } else if (node.tagType === 3 && parent && parent.type === 1 && parent.tagType === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !shared.isArray(parent.codegenNode.children) && parent.codegenNode.children.type === 15) { + const slotName = findDir(node, "slot", true); + const slot = slotName && slotName.arg && getSlotNode(parent.codegenNode, slotName.arg); + if (slot) { + slotCacheKeys.push(context.cached.length); + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } + } + if (!cachedAsArray) { + for (const child of toCache) { + slotCacheKeys.push(context.cached.length); + child.codegenNode = context.cache(child.codegenNode); + } + } + if (slotCacheKeys.length && node.type === 1 && node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !shared.isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) { + node.codegenNode.children.properties.push( + createObjectProperty( + `__`, + createSimpleExpression(JSON.stringify(slotCacheKeys), false) + ) + ); + } + function getCacheExpression(value) { + const exp = context.cache(value); + if (inFor && context.hmr) { + exp.needArraySpread = true; + } + return exp; + } + function getSlotNode(node2, name) { + if (node2.children && !shared.isArray(node2.children) && node2.children.type === 15) { + const slot = node2.children.properties.find( + (p) => p.key === name || p.key.content === name + ); + return slot && slot.value; + } + } + if (toCache.length && context.transformHoist) { + context.transformHoist(children, context, node); + } +} +function getConstantType(node, context) { + const { constantCache } = context; + switch (node.type) { + case 1: + if (node.tagType !== 0) { + return 0; + } + const cached = constantCache.get(node); + if (cached !== void 0) { + return cached; + } + const codegenNode = node.codegenNode; + if (codegenNode.type !== 13) { + return 0; + } + if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject" && node.tag !== "math") { + return 0; + } + if (codegenNode.patchFlag === void 0) { + let returnType2 = 3; + const generatedPropsType = getGeneratedPropsConstantType(node, context); + if (generatedPropsType === 0) { + constantCache.set(node, 0); + return 0; + } + if (generatedPropsType < returnType2) { + returnType2 = generatedPropsType; + } + for (let i = 0; i < node.children.length; i++) { + const childType = getConstantType(node.children[i], context); + if (childType === 0) { + constantCache.set(node, 0); + return 0; + } + if (childType < returnType2) { + returnType2 = childType; + } + } + if (returnType2 > 1) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && p.name === "bind" && p.exp) { + const expType = getConstantType(p.exp, context); + if (expType === 0) { + constantCache.set(node, 0); + return 0; + } + if (expType < returnType2) { + returnType2 = expType; + } + } + } + } + if (codegenNode.isBlock) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7) { + constantCache.set(node, 0); + return 0; + } + } + context.removeHelper(OPEN_BLOCK); + context.removeHelper( + getVNodeBlockHelper(context.inSSR, codegenNode.isComponent) + ); + codegenNode.isBlock = false; + context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent)); + } + constantCache.set(node, returnType2); + return returnType2; + } else { + constantCache.set(node, 0); + return 0; + } + case 2: + case 3: + return 3; + case 9: + case 11: + case 10: + return 0; + case 5: + case 12: + return getConstantType(node.content, context); + case 4: + return node.constType; + case 8: + let returnType = 3; + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (shared.isString(child) || shared.isSymbol(child)) { + continue; + } + const childType = getConstantType(child, context); + if (childType === 0) { + return 0; + } else if (childType < returnType) { + returnType = childType; + } + } + return returnType; + case 20: + return 2; + default: + return 0; + } +} +const allowHoistedHelperSet = /* @__PURE__ */ new Set([ + NORMALIZE_CLASS, + NORMALIZE_STYLE, + NORMALIZE_PROPS, + GUARD_REACTIVE_PROPS +]); +function getConstantTypeOfHelperCall(value, context) { + if (value.type === 14 && !shared.isString(value.callee) && allowHoistedHelperSet.has(value.callee)) { + const arg = value.arguments[0]; + if (arg.type === 4) { + return getConstantType(arg, context); + } else if (arg.type === 14) { + return getConstantTypeOfHelperCall(arg, context); + } + } + return 0; +} +function getGeneratedPropsConstantType(node, context) { + let returnType = 3; + const props = getNodeProps(node); + if (props && props.type === 15) { + const { properties } = props; + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + const keyType = getConstantType(key, context); + if (keyType === 0) { + return keyType; + } + if (keyType < returnType) { + returnType = keyType; + } + let valueType; + if (value.type === 4) { + valueType = getConstantType(value, context); + } else if (value.type === 14) { + valueType = getConstantTypeOfHelperCall(value, context); + } else { + valueType = 0; + } + if (valueType === 0) { + return valueType; + } + if (valueType < returnType) { + returnType = valueType; + } + } + } + return returnType; +} +function getNodeProps(node) { + const codegenNode = node.codegenNode; + if (codegenNode.type === 13) { + return codegenNode.props; + } +} + +function createTransformContext(root, { + filename = "", + prefixIdentifiers = false, + hoistStatic = false, + hmr = false, + cacheHandlers = false, + nodeTransforms = [], + directiveTransforms = {}, + transformHoist = null, + isBuiltInComponent = shared.NOOP, + isCustomElement = shared.NOOP, + expressionPlugins = [], + scopeId = null, + slotted = true, + ssr = false, + inSSR = false, + ssrCssVars = ``, + bindingMetadata = shared.EMPTY_OBJ, + inline = false, + isTS = false, + onError = defaultOnError, + onWarn = defaultOnWarn, + compatConfig +}) { + const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/); + const context = { + // options + filename, + selfName: nameMatch && shared.capitalize(shared.camelize(nameMatch[1])), + prefixIdentifiers, + hoistStatic, + hmr, + cacheHandlers, + nodeTransforms, + directiveTransforms, + transformHoist, + isBuiltInComponent, + isCustomElement, + expressionPlugins, + scopeId, + slotted, + ssr, + inSSR, + ssrCssVars, + bindingMetadata, + inline, + isTS, + onError, + onWarn, + compatConfig, + // state + root, + helpers: /* @__PURE__ */ new Map(), + components: /* @__PURE__ */ new Set(), + directives: /* @__PURE__ */ new Set(), + hoists: [], + imports: [], + cached: [], + constantCache: /* @__PURE__ */ new WeakMap(), + temps: 0, + identifiers: /* @__PURE__ */ Object.create(null), + scopes: { + vFor: 0, + vSlot: 0, + vPre: 0, + vOnce: 0 + }, + parent: null, + grandParent: null, + currentNode: root, + childIndex: 0, + inVOnce: false, + // methods + helper(name) { + const count = context.helpers.get(name) || 0; + context.helpers.set(name, count + 1); + return name; + }, + removeHelper(name) { + const count = context.helpers.get(name); + if (count) { + const currentCount = count - 1; + if (!currentCount) { + context.helpers.delete(name); + } else { + context.helpers.set(name, currentCount); + } + } + }, + helperString(name) { + return `_${helperNameMap[context.helper(name)]}`; + }, + replaceNode(node) { + context.parent.children[context.childIndex] = context.currentNode = node; + }, + removeNode(node) { + const list = context.parent.children; + const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1; + if (!node || node === context.currentNode) { + context.currentNode = null; + context.onNodeRemoved(); + } else { + if (context.childIndex > removalIndex) { + context.childIndex--; + context.onNodeRemoved(); + } + } + context.parent.children.splice(removalIndex, 1); + }, + onNodeRemoved: shared.NOOP, + addIdentifiers(exp) { + { + if (shared.isString(exp)) { + addId(exp); + } else if (exp.identifiers) { + exp.identifiers.forEach(addId); + } else if (exp.type === 4) { + addId(exp.content); + } + } + }, + removeIdentifiers(exp) { + { + if (shared.isString(exp)) { + removeId(exp); + } else if (exp.identifiers) { + exp.identifiers.forEach(removeId); + } else if (exp.type === 4) { + removeId(exp.content); + } + } + }, + hoist(exp) { + if (shared.isString(exp)) exp = createSimpleExpression(exp); + context.hoists.push(exp); + const identifier = createSimpleExpression( + `_hoisted_${context.hoists.length}`, + false, + exp.loc, + 2 + ); + identifier.hoisted = exp; + return identifier; + }, + cache(exp, isVNode = false, inVOnce = false) { + const cacheExp = createCacheExpression( + context.cached.length, + exp, + isVNode, + inVOnce + ); + context.cached.push(cacheExp); + return cacheExp; + } + }; + { + context.filters = /* @__PURE__ */ new Set(); + } + function addId(id) { + const { identifiers } = context; + if (identifiers[id] === void 0) { + identifiers[id] = 0; + } + identifiers[id]++; + } + function removeId(id) { + context.identifiers[id]--; + } + return context; +} +function transform(root, options) { + const context = createTransformContext(root, options); + traverseNode(root, context); + if (options.hoistStatic) { + cacheStatic(root, context); + } + if (!options.ssr) { + createRootCodegen(root, context); + } + root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]); + root.components = [...context.components]; + root.directives = [...context.directives]; + root.imports = context.imports; + root.hoists = context.hoists; + root.temps = context.temps; + root.cached = context.cached; + root.transformed = true; + { + root.filters = [...context.filters]; + } +} +function createRootCodegen(root, context) { + const { helper } = context; + const { children } = root; + if (children.length === 1) { + const singleElementRootChild = getSingleElementRoot(root); + if (singleElementRootChild && singleElementRootChild.codegenNode) { + const codegenNode = singleElementRootChild.codegenNode; + if (codegenNode.type === 13) { + convertToBlock(codegenNode, context); + } + root.codegenNode = codegenNode; + } else { + root.codegenNode = children[0]; + } + } else if (children.length > 1) { + let patchFlag = 64; + root.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + root.children, + patchFlag, + void 0, + void 0, + true, + void 0, + false + ); + } else ; +} +function traverseChildren(parent, context) { + let i = 0; + const nodeRemoved = () => { + i--; + }; + for (; i < parent.children.length; i++) { + const child = parent.children[i]; + if (shared.isString(child)) continue; + context.grandParent = context.parent; + context.parent = parent; + context.childIndex = i; + context.onNodeRemoved = nodeRemoved; + traverseNode(child, context); + } +} +function traverseNode(node, context) { + context.currentNode = node; + const { nodeTransforms } = context; + const exitFns = []; + for (let i2 = 0; i2 < nodeTransforms.length; i2++) { + const onExit = nodeTransforms[i2](node, context); + if (onExit) { + if (shared.isArray(onExit)) { + exitFns.push(...onExit); + } else { + exitFns.push(onExit); + } + } + if (!context.currentNode) { + return; + } else { + node = context.currentNode; + } + } + switch (node.type) { + case 3: + if (!context.ssr) { + context.helper(CREATE_COMMENT); + } + break; + case 5: + if (!context.ssr) { + context.helper(TO_DISPLAY_STRING); + } + break; + // for container types, further traverse downwards + case 9: + for (let i2 = 0; i2 < node.branches.length; i2++) { + traverseNode(node.branches[i2], context); + } + break; + case 10: + case 11: + case 1: + case 0: + traverseChildren(node, context); + break; + } + context.currentNode = node; + let i = exitFns.length; + while (i--) { + exitFns[i](); + } +} +function createStructuralDirectiveTransform(name, fn) { + const matches = shared.isString(name) ? (n) => n === name : (n) => name.test(n); + return (node, context) => { + if (node.type === 1) { + const { props } = node; + if (node.tagType === 3 && props.some(isVSlot)) { + return; + } + const exitFns = []; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 7 && matches(prop.name)) { + props.splice(i, 1); + i--; + const onExit = fn(node, prop, context); + if (onExit) exitFns.push(onExit); + } + } + return exitFns; + } + }; +} + +const PURE_ANNOTATION = `/*@__PURE__*/`; +const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`; +function createCodegenContext(ast, { + mode = "function", + prefixIdentifiers = mode === "module", + sourceMap = false, + filename = `template.vue.html`, + scopeId = null, + optimizeImports = false, + runtimeGlobalName = `Vue`, + runtimeModuleName = `vue`, + ssrRuntimeModuleName = "vue/server-renderer", + ssr = false, + isTS = false, + inSSR = false +}) { + const context = { + mode, + prefixIdentifiers, + sourceMap, + filename, + scopeId, + optimizeImports, + runtimeGlobalName, + runtimeModuleName, + ssrRuntimeModuleName, + ssr, + isTS, + inSSR, + source: ast.source, + code: ``, + column: 1, + line: 1, + offset: 0, + indentLevel: 0, + pure: false, + map: void 0, + helper(key) { + return `_${helperNameMap[key]}`; + }, + push(code, newlineIndex = -2 /* None */, node) { + context.code += code; + if (context.map) { + if (node) { + let name; + if (node.type === 4 && !node.isStatic) { + const content = node.content.replace(/^_ctx\./, ""); + if (content !== node.content && isSimpleIdentifier(content)) { + name = content; + } + } + if (node.loc.source) { + addMapping(node.loc.start, name); + } + } + if (newlineIndex === -3 /* Unknown */) { + advancePositionWithMutation(context, code); + } else { + context.offset += code.length; + if (newlineIndex === -2 /* None */) { + context.column += code.length; + } else { + if (newlineIndex === -1 /* End */) { + newlineIndex = code.length - 1; + } + context.line++; + context.column = code.length - newlineIndex; + } + } + if (node && node.loc !== locStub && node.loc.source) { + addMapping(node.loc.end); + } + } + }, + indent() { + newline(++context.indentLevel); + }, + deindent(withoutNewLine = false) { + if (withoutNewLine) { + --context.indentLevel; + } else { + newline(--context.indentLevel); + } + }, + newline() { + newline(context.indentLevel); + } + }; + function newline(n) { + context.push("\n" + ` `.repeat(n), 0 /* Start */); + } + function addMapping(loc, name = null) { + const { _names, _mappings } = context.map; + if (name !== null && !_names.has(name)) _names.add(name); + _mappings.add({ + originalLine: loc.line, + originalColumn: loc.column - 1, + // source-map column is 0 based + generatedLine: context.line, + generatedColumn: context.column - 1, + source: filename, + name + }); + } + if (sourceMap) { + context.map = new sourceMapJs.SourceMapGenerator(); + context.map.setSourceContent(filename, context.source); + context.map._sources.add(filename); + } + return context; +} +function generate(ast, options = {}) { + const context = createCodegenContext(ast, options); + if (options.onContextCreated) options.onContextCreated(context); + const { + mode, + push, + prefixIdentifiers, + indent, + deindent, + newline, + scopeId, + ssr + } = context; + const helpers = Array.from(ast.helpers); + const hasHelpers = helpers.length > 0; + const useWithBlock = !prefixIdentifiers && mode !== "module"; + const genScopeId = scopeId != null && mode === "module"; + const isSetupInlined = !!options.inline; + const preambleContext = isSetupInlined ? createCodegenContext(ast, options) : context; + if (mode === "module") { + genModulePreamble(ast, preambleContext, genScopeId, isSetupInlined); + } else { + genFunctionPreamble(ast, preambleContext); + } + const functionName = ssr ? `ssrRender` : `render`; + const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"]; + if (options.bindingMetadata && !options.inline) { + args.push("$props", "$setup", "$data", "$options"); + } + const signature = options.isTS ? args.map((arg) => `${arg}: any`).join(",") : args.join(", "); + if (isSetupInlined) { + push(`(${signature}) => {`); + } else { + push(`function ${functionName}(${signature}) {`); + } + indent(); + if (useWithBlock) { + push(`with (_ctx) {`); + indent(); + if (hasHelpers) { + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = _Vue +`, + -1 /* End */ + ); + newline(); + } + } + if (ast.components.length) { + genAssets(ast.components, "component", context); + if (ast.directives.length || ast.temps > 0) { + newline(); + } + } + if (ast.directives.length) { + genAssets(ast.directives, "directive", context); + if (ast.temps > 0) { + newline(); + } + } + if (ast.filters && ast.filters.length) { + newline(); + genAssets(ast.filters, "filter", context); + newline(); + } + if (ast.temps > 0) { + push(`let `); + for (let i = 0; i < ast.temps; i++) { + push(`${i > 0 ? `, ` : ``}_temp${i}`); + } + } + if (ast.components.length || ast.directives.length || ast.temps) { + push(` +`, 0 /* Start */); + newline(); + } + if (!ssr) { + push(`return `); + } + if (ast.codegenNode) { + genNode(ast.codegenNode, context); + } else { + push(`null`); + } + if (useWithBlock) { + deindent(); + push(`}`); + } + deindent(); + push(`}`); + return { + ast, + code: context.code, + preamble: isSetupInlined ? preambleContext.code : ``, + map: context.map ? context.map.toJSON() : void 0 + }; +} +function genFunctionPreamble(ast, context) { + const { + ssr, + prefixIdentifiers, + push, + newline, + runtimeModuleName, + runtimeGlobalName, + ssrRuntimeModuleName + } = context; + const VueBinding = ssr ? `require(${JSON.stringify(runtimeModuleName)})` : runtimeGlobalName; + const helpers = Array.from(ast.helpers); + if (helpers.length > 0) { + if (prefixIdentifiers) { + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = ${VueBinding} +`, + -1 /* End */ + ); + } else { + push(`const _Vue = ${VueBinding} +`, -1 /* End */); + if (ast.hoists.length) { + const staticHelpers = [ + CREATE_VNODE, + CREATE_ELEMENT_VNODE, + CREATE_COMMENT, + CREATE_TEXT, + CREATE_STATIC + ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", "); + push(`const { ${staticHelpers} } = _Vue +`, -1 /* End */); + } + } + } + if (ast.ssrHelpers && ast.ssrHelpers.length) { + push( + `const { ${ast.ssrHelpers.map(aliasHelper).join(", ")} } = require("${ssrRuntimeModuleName}") +`, + -1 /* End */ + ); + } + genHoists(ast.hoists, context); + newline(); + push(`return `); +} +function genModulePreamble(ast, context, genScopeId, inline) { + const { + push, + newline, + optimizeImports, + runtimeModuleName, + ssrRuntimeModuleName + } = context; + if (ast.helpers.size) { + const helpers = Array.from(ast.helpers); + if (optimizeImports) { + push( + `import { ${helpers.map((s) => helperNameMap[s]).join(", ")} } from ${JSON.stringify(runtimeModuleName)} +`, + -1 /* End */ + ); + push( + ` +// Binding optimization for webpack code-split +const ${helpers.map((s) => `_${helperNameMap[s]} = ${helperNameMap[s]}`).join(", ")} +`, + -1 /* End */ + ); + } else { + push( + `import { ${helpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from ${JSON.stringify(runtimeModuleName)} +`, + -1 /* End */ + ); + } + } + if (ast.ssrHelpers && ast.ssrHelpers.length) { + push( + `import { ${ast.ssrHelpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from "${ssrRuntimeModuleName}" +`, + -1 /* End */ + ); + } + if (ast.imports.length) { + genImports(ast.imports, context); + newline(); + } + genHoists(ast.hoists, context); + newline(); + if (!inline) { + push(`export `); + } +} +function genAssets(assets, type, { helper, push, newline, isTS }) { + const resolver = helper( + type === "filter" ? RESOLVE_FILTER : type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE + ); + for (let i = 0; i < assets.length; i++) { + let id = assets[i]; + const maybeSelfReference = id.endsWith("__self"); + if (maybeSelfReference) { + id = id.slice(0, -6); + } + push( + `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}` + ); + if (i < assets.length - 1) { + newline(); + } + } +} +function genHoists(hoists, context) { + if (!hoists.length) { + return; + } + context.pure = true; + const { push, newline } = context; + newline(); + for (let i = 0; i < hoists.length; i++) { + const exp = hoists[i]; + if (exp) { + push(`const _hoisted_${i + 1} = `); + genNode(exp, context); + newline(); + } + } + context.pure = false; +} +function genImports(importsOptions, context) { + if (!importsOptions.length) { + return; + } + importsOptions.forEach((imports) => { + context.push(`import `); + genNode(imports.exp, context); + context.push(` from '${imports.path}'`); + context.newline(); + }); +} +function isText(n) { + return shared.isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8; +} +function genNodeListAsArray(nodes, context) { + const multilines = nodes.length > 3 || nodes.some((n) => shared.isArray(n) || !isText(n)); + context.push(`[`); + multilines && context.indent(); + genNodeList(nodes, context, multilines); + multilines && context.deindent(); + context.push(`]`); +} +function genNodeList(nodes, context, multilines = false, comma = true) { + const { push, newline } = context; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (shared.isString(node)) { + push(node, -3 /* Unknown */); + } else if (shared.isArray(node)) { + genNodeListAsArray(node, context); + } else { + genNode(node, context); + } + if (i < nodes.length - 1) { + if (multilines) { + comma && push(","); + newline(); + } else { + comma && push(", "); + } + } + } +} +function genNode(node, context) { + if (shared.isString(node)) { + context.push(node, -3 /* Unknown */); + return; + } + if (shared.isSymbol(node)) { + context.push(context.helper(node)); + return; + } + switch (node.type) { + case 1: + case 9: + case 11: + genNode(node.codegenNode, context); + break; + case 2: + genText(node, context); + break; + case 4: + genExpression(node, context); + break; + case 5: + genInterpolation(node, context); + break; + case 12: + genNode(node.codegenNode, context); + break; + case 8: + genCompoundExpression(node, context); + break; + case 3: + genComment(node, context); + break; + case 13: + genVNodeCall(node, context); + break; + case 14: + genCallExpression(node, context); + break; + case 15: + genObjectExpression(node, context); + break; + case 17: + genArrayExpression(node, context); + break; + case 18: + genFunctionExpression(node, context); + break; + case 19: + genConditionalExpression(node, context); + break; + case 20: + genCacheExpression(node, context); + break; + case 21: + genNodeList(node.body, context, true, false); + break; + // SSR only types + case 22: + genTemplateLiteral(node, context); + break; + case 23: + genIfStatement(node, context); + break; + case 24: + genAssignmentExpression(node, context); + break; + case 25: + genSequenceExpression(node, context); + break; + case 26: + genReturnStatement(node, context); + break; + } +} +function genText(node, context) { + context.push(JSON.stringify(node.content), -3 /* Unknown */, node); +} +function genExpression(node, context) { + const { content, isStatic } = node; + context.push( + isStatic ? JSON.stringify(content) : content, + -3 /* Unknown */, + node + ); +} +function genInterpolation(node, context) { + const { push, helper, pure } = context; + if (pure) push(PURE_ANNOTATION); + push(`${helper(TO_DISPLAY_STRING)}(`); + genNode(node.content, context); + push(`)`); +} +function genCompoundExpression(node, context) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (shared.isString(child)) { + context.push(child, -3 /* Unknown */); + } else { + genNode(child, context); + } + } +} +function genExpressionAsPropertyKey(node, context) { + const { push } = context; + if (node.type === 8) { + push(`[`); + genCompoundExpression(node, context); + push(`]`); + } else if (node.isStatic) { + const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content); + push(text, -2 /* None */, node); + } else { + push(`[${node.content}]`, -3 /* Unknown */, node); + } +} +function genComment(node, context) { + const { push, helper, pure } = context; + if (pure) { + push(PURE_ANNOTATION); + } + push( + `${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, + -3 /* Unknown */, + node + ); +} +function genVNodeCall(node, context) { + const { push, helper, pure } = context; + const { + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent + } = node; + let patchFlagString; + if (patchFlag) { + { + patchFlagString = String(patchFlag); + } + } + if (directives) { + push(helper(WITH_DIRECTIVES) + `(`); + } + if (isBlock) { + push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `); + } + if (pure) { + push(PURE_ANNOTATION); + } + const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent); + push(helper(callHelper) + `(`, -2 /* None */, node); + genNodeList( + genNullableArgs([tag, props, children, patchFlagString, dynamicProps]), + context + ); + push(`)`); + if (isBlock) { + push(`)`); + } + if (directives) { + push(`, `); + genNode(directives, context); + push(`)`); + } +} +function genNullableArgs(args) { + let i = args.length; + while (i--) { + if (args[i] != null) break; + } + return args.slice(0, i + 1).map((arg) => arg || `null`); +} +function genCallExpression(node, context) { + const { push, helper, pure } = context; + const callee = shared.isString(node.callee) ? node.callee : helper(node.callee); + if (pure) { + push(PURE_ANNOTATION); + } + push(callee + `(`, -2 /* None */, node); + genNodeList(node.arguments, context); + push(`)`); +} +function genObjectExpression(node, context) { + const { push, indent, deindent, newline } = context; + const { properties } = node; + if (!properties.length) { + push(`{}`, -2 /* None */, node); + return; + } + const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4); + push(multilines ? `{` : `{ `); + multilines && indent(); + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + genExpressionAsPropertyKey(key, context); + push(`: `); + genNode(value, context); + if (i < properties.length - 1) { + push(`,`); + newline(); + } + } + multilines && deindent(); + push(multilines ? `}` : ` }`); +} +function genArrayExpression(node, context) { + genNodeListAsArray(node.elements, context); +} +function genFunctionExpression(node, context) { + const { push, indent, deindent } = context; + const { params, returns, body, newline, isSlot } = node; + if (isSlot) { + push(`_${helperNameMap[WITH_CTX]}(`); + } + push(`(`, -2 /* None */, node); + if (shared.isArray(params)) { + genNodeList(params, context); + } else if (params) { + genNode(params, context); + } + push(`) => `); + if (newline || body) { + push(`{`); + indent(); + } + if (returns) { + if (newline) { + push(`return `); + } + if (shared.isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } + } else if (body) { + genNode(body, context); + } + if (newline || body) { + deindent(); + push(`}`); + } + if (isSlot) { + if (node.isNonScopedSlot) { + push(`, undefined, true`); + } + push(`)`); + } +} +function genConditionalExpression(node, context) { + const { test, consequent, alternate, newline: needNewline } = node; + const { push, indent, deindent, newline } = context; + if (test.type === 4) { + const needsParens = !isSimpleIdentifier(test.content); + needsParens && push(`(`); + genExpression(test, context); + needsParens && push(`)`); + } else { + push(`(`); + genNode(test, context); + push(`)`); + } + needNewline && indent(); + context.indentLevel++; + needNewline || push(` `); + push(`? `); + genNode(consequent, context); + context.indentLevel--; + needNewline && newline(); + needNewline || push(` `); + push(`: `); + const isNested = alternate.type === 19; + if (!isNested) { + context.indentLevel++; + } + genNode(alternate, context); + if (!isNested) { + context.indentLevel--; + } + needNewline && deindent( + true + /* without newline */ + ); +} +function genCacheExpression(node, context) { + const { push, helper, indent, deindent, newline } = context; + const { needPauseTracking, needArraySpread } = node; + if (needArraySpread) { + push(`[...(`); + } + push(`_cache[${node.index}] || (`); + if (needPauseTracking) { + indent(); + push(`${helper(SET_BLOCK_TRACKING)}(-1`); + if (node.inVOnce) push(`, true`); + push(`),`); + newline(); + push(`(`); + } + push(`_cache[${node.index}] = `); + genNode(node.value, context); + if (needPauseTracking) { + push(`).cacheIndex = ${node.index},`); + newline(); + push(`${helper(SET_BLOCK_TRACKING)}(1),`); + newline(); + push(`_cache[${node.index}]`); + deindent(); + } + push(`)`); + if (needArraySpread) { + push(`)]`); + } +} +function genTemplateLiteral(node, context) { + const { push, indent, deindent } = context; + push("`"); + const l = node.elements.length; + const multilines = l > 3; + for (let i = 0; i < l; i++) { + const e = node.elements[i]; + if (shared.isString(e)) { + push(e.replace(/(`|\$|\\)/g, "\\$1"), -3 /* Unknown */); + } else { + push("${"); + if (multilines) indent(); + genNode(e, context); + if (multilines) deindent(); + push("}"); + } + } + push("`"); +} +function genIfStatement(node, context) { + const { push, indent, deindent } = context; + const { test, consequent, alternate } = node; + push(`if (`); + genNode(test, context); + push(`) {`); + indent(); + genNode(consequent, context); + deindent(); + push(`}`); + if (alternate) { + push(` else `); + if (alternate.type === 23) { + genIfStatement(alternate, context); + } else { + push(`{`); + indent(); + genNode(alternate, context); + deindent(); + push(`}`); + } + } +} +function genAssignmentExpression(node, context) { + genNode(node.left, context); + context.push(` = `); + genNode(node.right, context); +} +function genSequenceExpression(node, context) { + context.push(`(`); + genNodeList(node.expressions, context); + context.push(`)`); +} +function genReturnStatement({ returns }, context) { + context.push(`return `); + if (shared.isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } +} + +const isLiteralWhitelisted = /* @__PURE__ */ shared.makeMap("true,false,null,this"); +const transformExpression = (node, context) => { + if (node.type === 5) { + node.content = processExpression( + node.content, + context + ); + } else if (node.type === 1) { + const memo = findDir(node, "memo"); + for (let i = 0; i < node.props.length; i++) { + const dir = node.props[i]; + if (dir.type === 7 && dir.name !== "for") { + const exp = dir.exp; + const arg = dir.arg; + if (exp && exp.type === 4 && !(dir.name === "on" && arg) && // key has been processed in transformFor(vMemo + vFor) + !(memo && arg && arg.type === 4 && arg.content === "key")) { + dir.exp = processExpression( + exp, + context, + // slot args must be processed as function params + dir.name === "slot" + ); + } + if (arg && arg.type === 4 && !arg.isStatic) { + dir.arg = processExpression(arg, context); + } + } + } + } +}; +function processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) { + if (!context.prefixIdentifiers || !node.content.trim()) { + return node; + } + const { inline, bindingMetadata } = context; + const rewriteIdentifier = (raw, parent, id) => { + const type = shared.hasOwn(bindingMetadata, raw) && bindingMetadata[raw]; + if (inline) { + const isAssignmentLVal = parent && parent.type === "AssignmentExpression" && parent.left === id; + const isUpdateArg = parent && parent.type === "UpdateExpression" && parent.argument === id; + const isDestructureAssignment = parent && isInDestructureAssignment(parent, parentStack); + const isNewExpression = parent && isInNewExpression(parentStack); + const wrapWithUnref = (raw2) => { + const wrapped = `${context.helperString(UNREF)}(${raw2})`; + return isNewExpression ? `(${wrapped})` : wrapped; + }; + if (isConst(type) || type === "setup-reactive-const" || localVars[raw]) { + return raw; + } else if (type === "setup-ref") { + return `${raw}.value`; + } else if (type === "setup-maybe-ref") { + return isAssignmentLVal || isUpdateArg || isDestructureAssignment ? `${raw}.value` : wrapWithUnref(raw); + } else if (type === "setup-let") { + if (isAssignmentLVal) { + const { right: rVal, operator } = parent; + const rExp = rawExp.slice(rVal.start - 1, rVal.end - 1); + const rExpString = stringifyExpression( + processExpression( + createSimpleExpression(rExp, false), + context, + false, + false, + knownIds + ) + ); + return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore +` : ``} ? ${raw}.value ${operator} ${rExpString} : ${raw}`; + } else if (isUpdateArg) { + id.start = parent.start; + id.end = parent.end; + const { prefix: isPrefix, operator } = parent; + const prefix = isPrefix ? operator : ``; + const postfix = isPrefix ? `` : operator; + return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore +` : ``} ? ${prefix}${raw}.value${postfix} : ${prefix}${raw}${postfix}`; + } else if (isDestructureAssignment) { + return raw; + } else { + return wrapWithUnref(raw); + } + } else if (type === "props") { + return shared.genPropsAccessExp(raw); + } else if (type === "props-aliased") { + return shared.genPropsAccessExp(bindingMetadata.__propsAliases[raw]); + } + } else { + if (type && type.startsWith("setup") || type === "literal-const") { + return `$setup.${raw}`; + } else if (type === "props-aliased") { + return `$props['${bindingMetadata.__propsAliases[raw]}']`; + } else if (type) { + return `$${type}.${raw}`; + } + } + return `_ctx.${raw}`; + }; + const rawExp = node.content; + let ast = node.ast; + if (ast === false) { + return node; + } + if (ast === null || !ast && isSimpleIdentifier(rawExp)) { + const isScopeVarReference = context.identifiers[rawExp]; + const isAllowedGlobal = shared.isGloballyAllowed(rawExp); + const isLiteral = isLiteralWhitelisted(rawExp); + if (!asParams && !isScopeVarReference && !isLiteral && (!isAllowedGlobal || bindingMetadata[rawExp])) { + if (isConst(bindingMetadata[rawExp])) { + node.constType = 1; + } + node.content = rewriteIdentifier(rawExp); + } else if (!isScopeVarReference) { + if (isLiteral) { + node.constType = 3; + } else { + node.constType = 2; + } + } + return node; + } + if (!ast) { + const source = asRawStatements ? ` ${rawExp} ` : `(${rawExp})${asParams ? `=>{}` : ``}`; + try { + ast = parser.parseExpression(source, { + sourceType: "module", + plugins: context.expressionPlugins + }); + } catch (e) { + context.onError( + createCompilerError( + 45, + node.loc, + void 0, + e.message + ) + ); + return node; + } + } + const ids = []; + const parentStack = []; + const knownIds = Object.create(context.identifiers); + walkIdentifiers( + ast, + (node2, parent, _, isReferenced, isLocal) => { + if (isStaticPropertyKey(node2, parent)) { + return; + } + if (node2.name.startsWith("_filter_")) { + return; + } + const needPrefix = isReferenced && canPrefix(node2); + if (needPrefix && !isLocal) { + if (isStaticProperty(parent) && parent.shorthand) { + node2.prefix = `${node2.name}: `; + } + node2.name = rewriteIdentifier(node2.name, parent, node2); + ids.push(node2); + } else { + if (!(needPrefix && isLocal) && (!parent || parent.type !== "CallExpression" && parent.type !== "NewExpression" && parent.type !== "MemberExpression")) { + node2.isConstant = true; + } + ids.push(node2); + } + }, + true, + // invoke on ALL identifiers + parentStack, + knownIds + ); + const children = []; + ids.sort((a, b) => a.start - b.start); + ids.forEach((id, i) => { + const start = id.start - 1; + const end = id.end - 1; + const last = ids[i - 1]; + const leadingText = rawExp.slice(last ? last.end - 1 : 0, start); + if (leadingText.length || id.prefix) { + children.push(leadingText + (id.prefix || ``)); + } + const source = rawExp.slice(start, end); + children.push( + createSimpleExpression( + id.name, + false, + { + start: advancePositionWithClone(node.loc.start, source, start), + end: advancePositionWithClone(node.loc.start, source, end), + source + }, + id.isConstant ? 3 : 0 + ) + ); + if (i === ids.length - 1 && end < rawExp.length) { + children.push(rawExp.slice(end)); + } + }); + let ret; + if (children.length) { + ret = createCompoundExpression(children, node.loc); + ret.ast = ast; + } else { + ret = node; + ret.constType = 3; + } + ret.identifiers = Object.keys(knownIds); + return ret; +} +function canPrefix(id) { + if (shared.isGloballyAllowed(id.name)) { + return false; + } + if (id.name === "require") { + return false; + } + return true; +} +function stringifyExpression(exp) { + if (shared.isString(exp)) { + return exp; + } else if (exp.type === 4) { + return exp.content; + } else { + return exp.children.map(stringifyExpression).join(""); + } +} +function isConst(type) { + return type === "setup-const" || type === "literal-const"; +} + +const transformIf = createStructuralDirectiveTransform( + /^(if|else|else-if)$/, + (node, dir, context) => { + return processIf(node, dir, context, (ifNode, branch, isRoot) => { + const siblings = context.parent.children; + let i = siblings.indexOf(ifNode); + let key = 0; + while (i-- >= 0) { + const sibling = siblings[i]; + if (sibling && sibling.type === 9) { + key += sibling.branches.length; + } + } + return () => { + if (isRoot) { + ifNode.codegenNode = createCodegenNodeForBranch( + branch, + key, + context + ); + } else { + const parentCondition = getParentCondition(ifNode.codegenNode); + parentCondition.alternate = createCodegenNodeForBranch( + branch, + key + ifNode.branches.length - 1, + context + ); + } + }; + }); + } +); +function processIf(node, dir, context, processCodegen) { + if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) { + const loc = dir.exp ? dir.exp.loc : node.loc; + context.onError( + createCompilerError(28, dir.loc) + ); + dir.exp = createSimpleExpression(`true`, false, loc); + } + if (context.prefixIdentifiers && dir.exp) { + dir.exp = processExpression(dir.exp, context); + } + if (dir.name === "if") { + const branch = createIfBranch(node, dir); + const ifNode = { + type: 9, + loc: cloneLoc(node.loc), + branches: [branch] + }; + context.replaceNode(ifNode); + if (processCodegen) { + return processCodegen(ifNode, branch, true); + } + } else { + const siblings = context.parent.children; + let i = siblings.indexOf(node); + while (i-- >= -1) { + const sibling = siblings[i]; + if (sibling && sibling.type === 3) { + context.removeNode(sibling); + continue; + } + if (sibling && sibling.type === 2 && !sibling.content.trim().length) { + context.removeNode(sibling); + continue; + } + if (sibling && sibling.type === 9) { + if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) { + context.onError( + createCompilerError(30, node.loc) + ); + } + context.removeNode(); + const branch = createIfBranch(node, dir); + { + const key = branch.userKey; + if (key) { + sibling.branches.forEach(({ userKey }) => { + if (isSameKey(userKey, key)) { + context.onError( + createCompilerError( + 29, + branch.userKey.loc + ) + ); + } + }); + } + } + sibling.branches.push(branch); + const onExit = processCodegen && processCodegen(sibling, branch, false); + traverseNode(branch, context); + if (onExit) onExit(); + context.currentNode = null; + } else { + context.onError( + createCompilerError(30, node.loc) + ); + } + break; + } + } +} +function createIfBranch(node, dir) { + const isTemplateIf = node.tagType === 3; + return { + type: 10, + loc: node.loc, + condition: dir.name === "else" ? void 0 : dir.exp, + children: isTemplateIf && !findDir(node, "for") ? node.children : [node], + userKey: findProp(node, `key`), + isTemplateIf + }; +} +function createCodegenNodeForBranch(branch, keyIndex, context) { + if (branch.condition) { + return createConditionalExpression( + branch.condition, + createChildrenCodegenNode(branch, keyIndex, context), + // make sure to pass in asBlock: true so that the comment node call + // closes the current block. + createCallExpression(context.helper(CREATE_COMMENT), [ + '""', + "true" + ]) + ); + } else { + return createChildrenCodegenNode(branch, keyIndex, context); + } +} +function createChildrenCodegenNode(branch, keyIndex, context) { + const { helper } = context; + const keyProperty = createObjectProperty( + `key`, + createSimpleExpression( + `${keyIndex}`, + false, + locStub, + 2 + ) + ); + const { children } = branch; + const firstChild = children[0]; + const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1; + if (needFragmentWrapper) { + if (children.length === 1 && firstChild.type === 11) { + const vnodeCall = firstChild.codegenNode; + injectProp(vnodeCall, keyProperty, context); + return vnodeCall; + } else { + let patchFlag = 64; + return createVNodeCall( + context, + helper(FRAGMENT), + createObjectExpression([keyProperty]), + children, + patchFlag, + void 0, + void 0, + true, + false, + false, + branch.loc + ); + } + } else { + const ret = firstChild.codegenNode; + const vnodeCall = getMemoedVNodeCall(ret); + if (vnodeCall.type === 13) { + convertToBlock(vnodeCall, context); + } + injectProp(vnodeCall, keyProperty, context); + return ret; + } +} +function isSameKey(a, b) { + if (!a || a.type !== b.type) { + return false; + } + if (a.type === 6) { + if (a.value.content !== b.value.content) { + return false; + } + } else { + const exp = a.exp; + const branchExp = b.exp; + if (exp.type !== branchExp.type) { + return false; + } + if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) { + return false; + } + } + return true; +} +function getParentCondition(node) { + while (true) { + if (node.type === 19) { + if (node.alternate.type === 19) { + node = node.alternate; + } else { + return node; + } + } else if (node.type === 20) { + node = node.value; + } + } +} + +const transformBind = (dir, _node, context) => { + const { modifiers, loc } = dir; + const arg = dir.arg; + let { exp } = dir; + if (exp && exp.type === 4 && !exp.content.trim()) { + { + context.onError( + createCompilerError(34, loc) + ); + return { + props: [ + createObjectProperty(arg, createSimpleExpression("", true, loc)) + ] + }; + } + } + if (!exp) { + if (arg.type !== 4 || !arg.isStatic) { + context.onError( + createCompilerError( + 52, + arg.loc + ) + ); + return { + props: [ + createObjectProperty(arg, createSimpleExpression("", true, loc)) + ] + }; + } + transformBindShorthand(dir, context); + exp = dir.exp; + } + if (arg.type !== 4) { + arg.children.unshift(`(`); + arg.children.push(`) || ""`); + } else if (!arg.isStatic) { + arg.content = arg.content ? `${arg.content} || ""` : `""`; + } + if (modifiers.some((mod) => mod.content === "camel")) { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = shared.camelize(arg.content); + } else { + arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`; + } + } else { + arg.children.unshift(`${context.helperString(CAMELIZE)}(`); + arg.children.push(`)`); + } + } + if (!context.inSSR) { + if (modifiers.some((mod) => mod.content === "prop")) { + injectPrefix(arg, "."); + } + if (modifiers.some((mod) => mod.content === "attr")) { + injectPrefix(arg, "^"); + } + } + return { + props: [createObjectProperty(arg, exp)] + }; +}; +const transformBindShorthand = (dir, context) => { + const arg = dir.arg; + const propName = shared.camelize(arg.content); + dir.exp = createSimpleExpression(propName, false, arg.loc); + { + dir.exp = processExpression(dir.exp, context); + } +}; +const injectPrefix = (arg, prefix) => { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = prefix + arg.content; + } else { + arg.content = `\`${prefix}\${${arg.content}}\``; + } + } else { + arg.children.unshift(`'${prefix}' + (`); + arg.children.push(`)`); + } +}; + +const transformFor = createStructuralDirectiveTransform( + "for", + (node, dir, context) => { + const { helper, removeHelper } = context; + return processFor(node, dir, context, (forNode) => { + const renderExp = createCallExpression(helper(RENDER_LIST), [ + forNode.source + ]); + const isTemplate = isTemplateNode(node); + const memo = findDir(node, "memo"); + const keyProp = findProp(node, `key`, false, true); + const isDirKey = keyProp && keyProp.type === 7; + if (isDirKey && !keyProp.exp) { + transformBindShorthand(keyProp, context); + } + let keyExp = keyProp && (keyProp.type === 6 ? keyProp.value ? createSimpleExpression(keyProp.value.content, true) : void 0 : keyProp.exp); + if (memo && keyExp && isDirKey) { + { + keyProp.exp = keyExp = processExpression( + keyExp, + context + ); + } + } + const keyProperty = keyProp && keyExp ? createObjectProperty(`key`, keyExp) : null; + if (isTemplate) { + if (memo) { + memo.exp = processExpression( + memo.exp, + context + ); + } + if (keyProperty && keyProp.type !== 6) { + keyProperty.value = processExpression( + keyProperty.value, + context + ); + } + } + const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0; + const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256; + forNode.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + renderExp, + fragmentFlag, + void 0, + void 0, + true, + !isStableFragment, + false, + node.loc + ); + return () => { + let childBlock; + const { children } = forNode; + if (isTemplate) { + node.children.some((c) => { + if (c.type === 1) { + const key = findProp(c, "key"); + if (key) { + context.onError( + createCompilerError( + 33, + key.loc + ) + ); + return true; + } + } + }); + } + const needFragmentWrapper = children.length !== 1 || children[0].type !== 1; + const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null; + if (slotOutlet) { + childBlock = slotOutlet.codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + } else if (needFragmentWrapper) { + childBlock = createVNodeCall( + context, + helper(FRAGMENT), + keyProperty ? createObjectExpression([keyProperty]) : void 0, + node.children, + 64, + void 0, + void 0, + true, + void 0, + false + ); + } else { + childBlock = children[0].codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + if (childBlock.isBlock !== !isStableFragment) { + if (childBlock.isBlock) { + removeHelper(OPEN_BLOCK); + removeHelper( + getVNodeBlockHelper(context.inSSR, childBlock.isComponent) + ); + } else { + removeHelper( + getVNodeHelper(context.inSSR, childBlock.isComponent) + ); + } + } + childBlock.isBlock = !isStableFragment; + if (childBlock.isBlock) { + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent)); + } else { + helper(getVNodeHelper(context.inSSR, childBlock.isComponent)); + } + } + if (memo) { + const loop = createFunctionExpression( + createForLoopParams(forNode.parseResult, [ + createSimpleExpression(`_cached`) + ]) + ); + loop.body = createBlockStatement([ + createCompoundExpression([`const _memo = (`, memo.exp, `)`]), + createCompoundExpression([ + `if (_cached`, + ...keyExp ? [` && _cached.key === `, keyExp] : [], + ` && ${context.helperString( + IS_MEMO_SAME + )}(_cached, _memo)) return _cached` + ]), + createCompoundExpression([`const _item = `, childBlock]), + createSimpleExpression(`_item.memo = _memo`), + createSimpleExpression(`return _item`) + ]); + renderExp.arguments.push( + loop, + createSimpleExpression(`_cache`), + createSimpleExpression(String(context.cached.length)) + ); + context.cached.push(null); + } else { + renderExp.arguments.push( + createFunctionExpression( + createForLoopParams(forNode.parseResult), + childBlock, + true + ) + ); + } + }; + }); + } +); +function processFor(node, dir, context, processCodegen) { + if (!dir.exp) { + context.onError( + createCompilerError(31, dir.loc) + ); + return; + } + const parseResult = dir.forParseResult; + if (!parseResult) { + context.onError( + createCompilerError(32, dir.loc) + ); + return; + } + finalizeForParseResult(parseResult, context); + const { addIdentifiers, removeIdentifiers, scopes } = context; + const { source, value, key, index } = parseResult; + const forNode = { + type: 11, + loc: dir.loc, + source, + valueAlias: value, + keyAlias: key, + objectIndexAlias: index, + parseResult, + children: isTemplateNode(node) ? node.children : [node] + }; + context.replaceNode(forNode); + scopes.vFor++; + if (context.prefixIdentifiers) { + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + } + const onExit = processCodegen && processCodegen(forNode); + return () => { + scopes.vFor--; + if (context.prefixIdentifiers) { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + } + if (onExit) onExit(); + }; +} +function finalizeForParseResult(result, context) { + if (result.finalized) return; + if (context.prefixIdentifiers) { + result.source = processExpression( + result.source, + context + ); + if (result.key) { + result.key = processExpression( + result.key, + context, + true + ); + } + if (result.index) { + result.index = processExpression( + result.index, + context, + true + ); + } + if (result.value) { + result.value = processExpression( + result.value, + context, + true + ); + } + } + result.finalized = true; +} +function createForLoopParams({ value, key, index }, memoArgs = []) { + return createParamsList([value, key, index, ...memoArgs]); +} +function createParamsList(args) { + let i = args.length; + while (i--) { + if (args[i]) break; + } + return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false)); +} + +const defaultFallback = createSimpleExpression(`undefined`, false); +const trackSlotScopes = (node, context) => { + if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) { + const vSlot = findDir(node, "slot"); + if (vSlot) { + const slotProps = vSlot.exp; + if (context.prefixIdentifiers) { + slotProps && context.addIdentifiers(slotProps); + } + context.scopes.vSlot++; + return () => { + if (context.prefixIdentifiers) { + slotProps && context.removeIdentifiers(slotProps); + } + context.scopes.vSlot--; + }; + } + } +}; +const trackVForSlotScopes = (node, context) => { + let vFor; + if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, "for"))) { + const result = vFor.forParseResult; + if (result) { + finalizeForParseResult(result, context); + const { value, key, index } = result; + const { addIdentifiers, removeIdentifiers } = context; + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + return () => { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + }; + } + } +}; +const buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression( + props, + children, + false, + true, + children.length ? children[0].loc : loc +); +function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { + context.helper(WITH_CTX); + const { children, loc } = node; + const slotsProperties = []; + const dynamicSlots = []; + let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0; + if (!context.ssr && context.prefixIdentifiers) { + hasDynamicSlots = hasScopeRef(node, context.identifiers); + } + const onComponentSlot = findDir(node, "slot", true); + if (onComponentSlot) { + const { arg, exp } = onComponentSlot; + if (arg && !isStaticExp(arg)) { + hasDynamicSlots = true; + } + slotsProperties.push( + createObjectProperty( + arg || createSimpleExpression("default", true), + buildSlotFn(exp, void 0, children, loc) + ) + ); + } + let hasTemplateSlots = false; + let hasNamedDefaultSlot = false; + const implicitDefaultChildren = []; + const seenSlotNames = /* @__PURE__ */ new Set(); + let conditionalBranchIndex = 0; + for (let i = 0; i < children.length; i++) { + const slotElement = children[i]; + let slotDir; + if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) { + if (slotElement.type !== 3) { + implicitDefaultChildren.push(slotElement); + } + continue; + } + if (onComponentSlot) { + context.onError( + createCompilerError(37, slotDir.loc) + ); + break; + } + hasTemplateSlots = true; + const { children: slotChildren, loc: slotLoc } = slotElement; + const { + arg: slotName = createSimpleExpression(`default`, true), + exp: slotProps, + loc: dirLoc + } = slotDir; + let staticSlotName; + if (isStaticExp(slotName)) { + staticSlotName = slotName ? slotName.content : `default`; + } else { + hasDynamicSlots = true; + } + const vFor = findDir(slotElement, "for"); + const slotFunction = buildSlotFn(slotProps, vFor, slotChildren, slotLoc); + let vIf; + let vElse; + if (vIf = findDir(slotElement, "if")) { + hasDynamicSlots = true; + dynamicSlots.push( + createConditionalExpression( + vIf.exp, + buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++), + defaultFallback + ) + ); + } else if (vElse = findDir( + slotElement, + /^else(-if)?$/, + true + /* allowEmpty */ + )) { + let j = i; + let prev; + while (j--) { + prev = children[j]; + if (prev.type !== 3 && isNonWhitespaceContent(prev)) { + break; + } + } + if (prev && isTemplateNode(prev) && findDir(prev, /^(else-)?if$/)) { + let conditional = dynamicSlots[dynamicSlots.length - 1]; + while (conditional.alternate.type === 19) { + conditional = conditional.alternate; + } + conditional.alternate = vElse.exp ? createConditionalExpression( + vElse.exp, + buildDynamicSlot( + slotName, + slotFunction, + conditionalBranchIndex++ + ), + defaultFallback + ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++); + } else { + context.onError( + createCompilerError(30, vElse.loc) + ); + } + } else if (vFor) { + hasDynamicSlots = true; + const parseResult = vFor.forParseResult; + if (parseResult) { + finalizeForParseResult(parseResult, context); + dynamicSlots.push( + createCallExpression(context.helper(RENDER_LIST), [ + parseResult.source, + createFunctionExpression( + createForLoopParams(parseResult), + buildDynamicSlot(slotName, slotFunction), + true + ) + ]) + ); + } else { + context.onError( + createCompilerError( + 32, + vFor.loc + ) + ); + } + } else { + if (staticSlotName) { + if (seenSlotNames.has(staticSlotName)) { + context.onError( + createCompilerError( + 38, + dirLoc + ) + ); + continue; + } + seenSlotNames.add(staticSlotName); + if (staticSlotName === "default") { + hasNamedDefaultSlot = true; + } + } + slotsProperties.push(createObjectProperty(slotName, slotFunction)); + } + } + if (!onComponentSlot) { + const buildDefaultSlotProperty = (props, children2) => { + const fn = buildSlotFn(props, void 0, children2, loc); + if (context.compatConfig) { + fn.isNonScopedSlot = true; + } + return createObjectProperty(`default`, fn); + }; + if (!hasTemplateSlots) { + slotsProperties.push(buildDefaultSlotProperty(void 0, children)); + } else if (implicitDefaultChildren.length && // #3766 + // with whitespace: 'preserve', whitespaces between slots will end up in + // implicitDefaultChildren. Ignore if all implicit children are whitespaces. + implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) { + if (hasNamedDefaultSlot) { + context.onError( + createCompilerError( + 39, + implicitDefaultChildren[0].loc + ) + ); + } else { + slotsProperties.push( + buildDefaultSlotProperty(void 0, implicitDefaultChildren) + ); + } + } + } + const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1; + let slots = createObjectExpression( + slotsProperties.concat( + createObjectProperty( + `_`, + // 2 = compiled but dynamic = can skip normalization, but must run diff + // 1 = compiled and static = can skip normalization AND diff as optimized + createSimpleExpression( + slotFlag + (``), + false + ) + ) + ), + loc + ); + if (dynamicSlots.length) { + slots = createCallExpression(context.helper(CREATE_SLOTS), [ + slots, + createArrayExpression(dynamicSlots) + ]); + } + return { + slots, + hasDynamicSlots + }; +} +function buildDynamicSlot(name, fn, index) { + const props = [ + createObjectProperty(`name`, name), + createObjectProperty(`fn`, fn) + ]; + if (index != null) { + props.push( + createObjectProperty(`key`, createSimpleExpression(String(index), true)) + ); + } + return createObjectExpression(props); +} +function hasForwardedSlots(children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1: + if (child.tagType === 2 || hasForwardedSlots(child.children)) { + return true; + } + break; + case 9: + if (hasForwardedSlots(child.branches)) return true; + break; + case 10: + case 11: + if (hasForwardedSlots(child.children)) return true; + break; + } + } + return false; +} +function isNonWhitespaceContent(node) { + if (node.type !== 2 && node.type !== 12) + return true; + return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content); +} + +const directiveImportMap = /* @__PURE__ */ new WeakMap(); +const transformElement = (node, context) => { + return function postTransformElement() { + node = context.currentNode; + if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) { + return; + } + const { tag, props } = node; + const isComponent = node.tagType === 1; + let vnodeTag = isComponent ? resolveComponentType(node, context) : `"${tag}"`; + const isDynamicComponent = shared.isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT; + let vnodeProps; + let vnodeChildren; + let patchFlag = 0; + let vnodeDynamicProps; + let dynamicPropNames; + let vnodeDirectives; + let shouldUseBlock = ( + // dynamic component may resolve to plain elements + isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block + // updates inside get proper isSVG flag at runtime. (#639, #643) + // This is technically web-specific, but splitting the logic out of core + // leads to too much unnecessary complexity. + (tag === "svg" || tag === "foreignObject" || tag === "math") + ); + if (props.length > 0) { + const propsBuildResult = buildProps( + node, + context, + void 0, + isComponent, + isDynamicComponent + ); + vnodeProps = propsBuildResult.props; + patchFlag = propsBuildResult.patchFlag; + dynamicPropNames = propsBuildResult.dynamicPropNames; + const directives = propsBuildResult.directives; + vnodeDirectives = directives && directives.length ? createArrayExpression( + directives.map((dir) => buildDirectiveArgs(dir, context)) + ) : void 0; + if (propsBuildResult.shouldUseBlock) { + shouldUseBlock = true; + } + } + if (node.children.length > 0) { + if (vnodeTag === KEEP_ALIVE) { + shouldUseBlock = true; + patchFlag |= 1024; + } + const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling + vnodeTag !== TELEPORT && // explained above. + vnodeTag !== KEEP_ALIVE; + if (shouldBuildAsSlots) { + const { slots, hasDynamicSlots } = buildSlots(node, context); + vnodeChildren = slots; + if (hasDynamicSlots) { + patchFlag |= 1024; + } + } else if (node.children.length === 1 && vnodeTag !== TELEPORT) { + const child = node.children[0]; + const type = child.type; + const hasDynamicTextChild = type === 5 || type === 8; + if (hasDynamicTextChild && getConstantType(child, context) === 0) { + patchFlag |= 1; + } + if (hasDynamicTextChild || type === 2) { + vnodeChildren = child; + } else { + vnodeChildren = node.children; + } + } else { + vnodeChildren = node.children; + } + } + if (dynamicPropNames && dynamicPropNames.length) { + vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames); + } + node.codegenNode = createVNodeCall( + context, + vnodeTag, + vnodeProps, + vnodeChildren, + patchFlag === 0 ? void 0 : patchFlag, + vnodeDynamicProps, + vnodeDirectives, + !!shouldUseBlock, + false, + isComponent, + node.loc + ); + }; +}; +function resolveComponentType(node, context, ssr = false) { + let { tag } = node; + const isExplicitDynamic = isComponentTag(tag); + const isProp = findProp( + node, + "is", + false, + true + /* allow empty */ + ); + if (isProp) { + if (isExplicitDynamic || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + )) { + let exp; + if (isProp.type === 6) { + exp = isProp.value && createSimpleExpression(isProp.value.content, true); + } else { + exp = isProp.exp; + if (!exp) { + exp = createSimpleExpression(`is`, false, isProp.arg.loc); + { + exp = isProp.exp = processExpression(exp, context); + } + } + } + if (exp) { + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + exp + ]); + } + } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) { + tag = isProp.value.content.slice(4); + } + } + const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag); + if (builtIn) { + if (!ssr) context.helper(builtIn); + return builtIn; + } + { + const fromSetup = resolveSetupReference(tag, context); + if (fromSetup) { + return fromSetup; + } + const dotIndex = tag.indexOf("."); + if (dotIndex > 0) { + const ns = resolveSetupReference(tag.slice(0, dotIndex), context); + if (ns) { + return ns + tag.slice(dotIndex); + } + } + } + if (context.selfName && shared.capitalize(shared.camelize(tag)) === context.selfName) { + context.helper(RESOLVE_COMPONENT); + context.components.add(tag + `__self`); + return toValidAssetId(tag, `component`); + } + context.helper(RESOLVE_COMPONENT); + context.components.add(tag); + return toValidAssetId(tag, `component`); +} +function resolveSetupReference(name, context) { + const bindings = context.bindingMetadata; + if (!bindings || bindings.__isScriptSetup === false) { + return; + } + const camelName = shared.camelize(name); + const PascalName = shared.capitalize(camelName); + const checkType = (type) => { + if (bindings[name] === type) { + return name; + } + if (bindings[camelName] === type) { + return camelName; + } + if (bindings[PascalName] === type) { + return PascalName; + } + }; + const fromConst = checkType("setup-const") || checkType("setup-reactive-const") || checkType("literal-const"); + if (fromConst) { + return context.inline ? ( + // in inline mode, const setup bindings (e.g. imports) can be used as-is + fromConst + ) : `$setup[${JSON.stringify(fromConst)}]`; + } + const fromMaybeRef = checkType("setup-let") || checkType("setup-ref") || checkType("setup-maybe-ref"); + if (fromMaybeRef) { + return context.inline ? ( + // setup scope bindings that may be refs need to be unrefed + `${context.helperString(UNREF)}(${fromMaybeRef})` + ) : `$setup[${JSON.stringify(fromMaybeRef)}]`; + } + const fromProps = checkType("props"); + if (fromProps) { + return `${context.helperString(UNREF)}(${context.inline ? "__props" : "$props"}[${JSON.stringify(fromProps)}])`; + } +} +function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) { + const { tag, loc: elementLoc, children } = node; + let properties = []; + const mergeArgs = []; + const runtimeDirectives = []; + const hasChildren = children.length > 0; + let shouldUseBlock = false; + let patchFlag = 0; + let hasRef = false; + let hasClassBinding = false; + let hasStyleBinding = false; + let hasHydrationEventBinding = false; + let hasDynamicKeys = false; + let hasVnodeHook = false; + const dynamicPropNames = []; + const pushMergeArg = (arg) => { + if (properties.length) { + mergeArgs.push( + createObjectExpression(dedupeProperties(properties), elementLoc) + ); + properties = []; + } + if (arg) mergeArgs.push(arg); + }; + const pushRefVForMarker = () => { + if (context.scopes.vFor > 0) { + properties.push( + createObjectProperty( + createSimpleExpression("ref_for", true), + createSimpleExpression("true") + ) + ); + } + }; + const analyzePatchFlag = ({ key, value }) => { + if (isStaticExp(key)) { + const name = key.content; + const isEventHandler = shared.isOn(name); + if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click + // dedicated fast path. + name.toLowerCase() !== "onclick" && // omit v-model handlers + name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks + !shared.isReservedProp(name)) { + hasHydrationEventBinding = true; + } + if (isEventHandler && shared.isReservedProp(name)) { + hasVnodeHook = true; + } + if (isEventHandler && value.type === 14) { + value = value.arguments[0]; + } + if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) { + return; + } + if (name === "ref") { + hasRef = true; + } else if (name === "class") { + hasClassBinding = true; + } else if (name === "style") { + hasStyleBinding = true; + } else if (name !== "key" && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + if (isComponent && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + } else { + hasDynamicKeys = true; + } + }; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 6) { + const { loc, name, nameLoc, value } = prop; + let isStatic = true; + if (name === "ref") { + hasRef = true; + pushRefVForMarker(); + if (value && context.inline) { + const binding = context.bindingMetadata[value.content]; + if (binding === "setup-let" || binding === "setup-ref" || binding === "setup-maybe-ref") { + isStatic = false; + properties.push( + createObjectProperty( + createSimpleExpression("ref_key", true), + createSimpleExpression(value.content, true, value.loc) + ) + ); + } + } + } + if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + properties.push( + createObjectProperty( + createSimpleExpression(name, true, nameLoc), + createSimpleExpression( + value ? value.content : "", + isStatic, + value ? value.loc : loc + ) + ) + ); + } else { + const { name, arg, exp, loc, modifiers } = prop; + const isVBind = name === "bind"; + const isVOn = name === "on"; + if (name === "slot") { + if (!isComponent) { + context.onError( + createCompilerError(40, loc) + ); + } + continue; + } + if (name === "once" || name === "memo") { + continue; + } + if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + if (isVOn && ssr) { + continue; + } + if ( + // #938: elements with dynamic keys should be forced into blocks + isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked + // before children + isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update") + ) { + shouldUseBlock = true; + } + if (isVBind && isStaticArgOf(arg, "ref")) { + pushRefVForMarker(); + } + if (!arg && (isVBind || isVOn)) { + hasDynamicKeys = true; + if (exp) { + if (isVBind) { + { + pushMergeArg(); + if (isCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context + )) { + mergeArgs.unshift(exp); + continue; + } + } + pushRefVForMarker(); + pushMergeArg(); + mergeArgs.push(exp); + } else { + pushMergeArg({ + type: 14, + loc, + callee: context.helper(TO_HANDLERS), + arguments: isComponent ? [exp] : [exp, `true`] + }); + } + } else { + context.onError( + createCompilerError( + isVBind ? 34 : 35, + loc + ) + ); + } + continue; + } + if (isVBind && modifiers.some((mod) => mod.content === "prop")) { + patchFlag |= 32; + } + const directiveTransform = context.directiveTransforms[name]; + if (directiveTransform) { + const { props: props2, needRuntime } = directiveTransform(prop, node, context); + !ssr && props2.forEach(analyzePatchFlag); + if (isVOn && arg && !isStaticExp(arg)) { + pushMergeArg(createObjectExpression(props2, elementLoc)); + } else { + properties.push(...props2); + } + if (needRuntime) { + runtimeDirectives.push(prop); + if (shared.isSymbol(needRuntime)) { + directiveImportMap.set(prop, needRuntime); + } + } + } else if (!shared.isBuiltInDirective(name)) { + runtimeDirectives.push(prop); + if (hasChildren) { + shouldUseBlock = true; + } + } + } + } + let propsExpression = void 0; + if (mergeArgs.length) { + pushMergeArg(); + if (mergeArgs.length > 1) { + propsExpression = createCallExpression( + context.helper(MERGE_PROPS), + mergeArgs, + elementLoc + ); + } else { + propsExpression = mergeArgs[0]; + } + } else if (properties.length) { + propsExpression = createObjectExpression( + dedupeProperties(properties), + elementLoc + ); + } + if (hasDynamicKeys) { + patchFlag |= 16; + } else { + if (hasClassBinding && !isComponent) { + patchFlag |= 2; + } + if (hasStyleBinding && !isComponent) { + patchFlag |= 4; + } + if (dynamicPropNames.length) { + patchFlag |= 8; + } + if (hasHydrationEventBinding) { + patchFlag |= 32; + } + } + if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) { + patchFlag |= 512; + } + if (!context.inSSR && propsExpression) { + switch (propsExpression.type) { + case 15: + let classKeyIndex = -1; + let styleKeyIndex = -1; + let hasDynamicKey = false; + for (let i = 0; i < propsExpression.properties.length; i++) { + const key = propsExpression.properties[i].key; + if (isStaticExp(key)) { + if (key.content === "class") { + classKeyIndex = i; + } else if (key.content === "style") { + styleKeyIndex = i; + } + } else if (!key.isHandlerKey) { + hasDynamicKey = true; + } + } + const classProp = propsExpression.properties[classKeyIndex]; + const styleProp = propsExpression.properties[styleKeyIndex]; + if (!hasDynamicKey) { + if (classProp && !isStaticExp(classProp.value)) { + classProp.value = createCallExpression( + context.helper(NORMALIZE_CLASS), + [classProp.value] + ); + } + if (styleProp && // the static style is compiled into an object, + // so use `hasStyleBinding` to ensure that it is a dynamic style binding + (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist, + // v-bind:style with static literal object + styleProp.value.type === 17)) { + styleProp.value = createCallExpression( + context.helper(NORMALIZE_STYLE), + [styleProp.value] + ); + } + } else { + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [propsExpression] + ); + } + break; + case 14: + break; + default: + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [ + createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [ + propsExpression + ]) + ] + ); + break; + } + } + return { + props: propsExpression, + directives: runtimeDirectives, + patchFlag, + dynamicPropNames, + shouldUseBlock + }; +} +function dedupeProperties(properties) { + const knownProps = /* @__PURE__ */ new Map(); + const deduped = []; + for (let i = 0; i < properties.length; i++) { + const prop = properties[i]; + if (prop.key.type === 8 || !prop.key.isStatic) { + deduped.push(prop); + continue; + } + const name = prop.key.content; + const existing = knownProps.get(name); + if (existing) { + if (name === "style" || name === "class" || shared.isOn(name)) { + mergeAsArray(existing, prop); + } + } else { + knownProps.set(name, prop); + deduped.push(prop); + } + } + return deduped; +} +function mergeAsArray(existing, incoming) { + if (existing.value.type === 17) { + existing.value.elements.push(incoming.value); + } else { + existing.value = createArrayExpression( + [existing.value, incoming.value], + existing.loc + ); + } +} +function buildDirectiveArgs(dir, context) { + const dirArgs = []; + const runtime = directiveImportMap.get(dir); + if (runtime) { + dirArgs.push(context.helperString(runtime)); + } else { + const fromSetup = resolveSetupReference("v-" + dir.name, context); + if (fromSetup) { + dirArgs.push(fromSetup); + } else { + context.helper(RESOLVE_DIRECTIVE); + context.directives.add(dir.name); + dirArgs.push(toValidAssetId(dir.name, `directive`)); + } + } + const { loc } = dir; + if (dir.exp) dirArgs.push(dir.exp); + if (dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(dir.arg); + } + if (Object.keys(dir.modifiers).length) { + if (!dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(`void 0`); + } + const trueExpression = createSimpleExpression(`true`, false, loc); + dirArgs.push( + createObjectExpression( + dir.modifiers.map( + (modifier) => createObjectProperty(modifier, trueExpression) + ), + loc + ) + ); + } + return createArrayExpression(dirArgs, dir.loc); +} +function stringifyDynamicPropNames(props) { + let propsNamesString = `[`; + for (let i = 0, l = props.length; i < l; i++) { + propsNamesString += JSON.stringify(props[i]); + if (i < l - 1) propsNamesString += ", "; + } + return propsNamesString + `]`; +} +function isComponentTag(tag) { + return tag === "component" || tag === "Component"; +} + +const transformSlotOutlet = (node, context) => { + if (isSlotOutlet(node)) { + const { children, loc } = node; + const { slotName, slotProps } = processSlotOutlet(node, context); + const slotArgs = [ + context.prefixIdentifiers ? `_ctx.$slots` : `$slots`, + slotName, + "{}", + "undefined", + "true" + ]; + let expectedLen = 2; + if (slotProps) { + slotArgs[2] = slotProps; + expectedLen = 3; + } + if (children.length) { + slotArgs[3] = createFunctionExpression([], children, false, false, loc); + expectedLen = 4; + } + if (context.scopeId && !context.slotted) { + expectedLen = 5; + } + slotArgs.splice(expectedLen); + node.codegenNode = createCallExpression( + context.helper(RENDER_SLOT), + slotArgs, + loc + ); + } +}; +function processSlotOutlet(node, context) { + let slotName = `"default"`; + let slotProps = void 0; + const nonNameProps = []; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (p.value) { + if (p.name === "name") { + slotName = JSON.stringify(p.value.content); + } else { + p.name = shared.camelize(p.name); + nonNameProps.push(p); + } + } + } else { + if (p.name === "bind" && isStaticArgOf(p.arg, "name")) { + if (p.exp) { + slotName = p.exp; + } else if (p.arg && p.arg.type === 4) { + const name = shared.camelize(p.arg.content); + slotName = p.exp = createSimpleExpression(name, false, p.arg.loc); + { + slotName = p.exp = processExpression(p.exp, context); + } + } + } else { + if (p.name === "bind" && p.arg && isStaticExp(p.arg)) { + p.arg.content = shared.camelize(p.arg.content); + } + nonNameProps.push(p); + } + } + } + if (nonNameProps.length > 0) { + const { props, directives } = buildProps( + node, + context, + nonNameProps, + false, + false + ); + slotProps = props; + if (directives.length) { + context.onError( + createCompilerError( + 36, + directives[0].loc + ) + ); + } + } + return { + slotName, + slotProps + }; +} + +const transformOn = (dir, node, context, augmentor) => { + const { loc, modifiers, arg } = dir; + if (!dir.exp && !modifiers.length) { + context.onError(createCompilerError(35, loc)); + } + let eventName; + if (arg.type === 4) { + if (arg.isStatic) { + let rawName = arg.content; + if (rawName.startsWith("vue:")) { + rawName = `vnode-${rawName.slice(4)}`; + } + const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? ( + // for non-element and vnode lifecycle event listeners, auto convert + // it to camelCase. See issue #2249 + shared.toHandlerKey(shared.camelize(rawName)) + ) : ( + // preserve case for plain element listeners that have uppercase + // letters, as these may be custom elements' custom events + `on:${rawName}` + ); + eventName = createSimpleExpression(eventString, true, arg.loc); + } else { + eventName = createCompoundExpression([ + `${context.helperString(TO_HANDLER_KEY)}(`, + arg, + `)` + ]); + } + } else { + eventName = arg; + eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`); + eventName.children.push(`)`); + } + let exp = dir.exp; + if (exp && !exp.content.trim()) { + exp = void 0; + } + let shouldCache = context.cacheHandlers && !exp && !context.inVOnce; + if (exp) { + const isMemberExp = isMemberExpression(exp, context); + const isInlineStatement = !(isMemberExp || isFnExpression(exp, context)); + const hasMultipleStatements = exp.content.includes(`;`); + if (context.prefixIdentifiers) { + isInlineStatement && context.addIdentifiers(`$event`); + exp = dir.exp = processExpression( + exp, + context, + false, + hasMultipleStatements + ); + isInlineStatement && context.removeIdentifiers(`$event`); + shouldCache = context.cacheHandlers && // unnecessary to cache inside v-once + !context.inVOnce && // runtime constants don't need to be cached + // (this is analyzed by compileScript in SFC <script setup>) + !(exp.type === 4 && exp.constType > 0) && // #1541 bail if this is a member exp handler passed to a component - + // we need to use the original function to preserve arity, + // e.g. <transition> relies on checking cb.length to determine + // transition end handling. Inline function is ok since its arity + // is preserved even when cached. + !(isMemberExp && node.tagType === 1) && // bail if the function references closure variables (v-for, v-slot) + // it must be passed fresh to avoid stale values. + !hasScopeRef(exp, context.identifiers); + if (shouldCache && isMemberExp) { + if (exp.type === 4) { + exp.content = `${exp.content} && ${exp.content}(...args)`; + } else { + exp.children = [...exp.children, ` && `, ...exp.children, `(...args)`]; + } + } + } + if (isInlineStatement || shouldCache && isMemberExp) { + exp = createCompoundExpression([ + `${isInlineStatement ? context.isTS ? `($event: any)` : `$event` : `${context.isTS ? ` +//@ts-ignore +` : ``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`, + exp, + hasMultipleStatements ? `}` : `)` + ]); + } + } + let ret = { + props: [ + createObjectProperty( + eventName, + exp || createSimpleExpression(`() => {}`, false, loc) + ) + ] + }; + if (augmentor) { + ret = augmentor(ret); + } + if (shouldCache) { + ret.props[0].value = context.cache(ret.props[0].value); + } + ret.props.forEach((p) => p.key.isHandlerKey = true); + return ret; +}; + +const transformText = (node, context) => { + if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) { + return () => { + const children = node.children; + let currentContainer = void 0; + let hasText = false; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child)) { + hasText = true; + for (let j = i + 1; j < children.length; j++) { + const next = children[j]; + if (isText$1(next)) { + if (!currentContainer) { + currentContainer = children[i] = createCompoundExpression( + [child], + child.loc + ); + } + currentContainer.children.push(` + `, next); + children.splice(j, 1); + j--; + } else { + currentContainer = void 0; + break; + } + } + } + } + if (!hasText || // if this is a plain element with a single text child, leave it + // as-is since the runtime has dedicated fast path for this by directly + // setting textContent of the element. + // for component root it's always normalized anyway. + children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756 + // custom directives can potentially add DOM elements arbitrarily, + // we need to avoid setting textContent of the element at runtime + // to avoid accidentally overwriting the DOM elements added + // by the user through custom directives. + !node.props.find( + (p) => p.type === 7 && !context.directiveTransforms[p.name] + ) && // in compat mode, <template> tags with no special directives + // will be rendered as a fragment so its children must be + // converted into vnodes. + !(node.tag === "template"))) { + return; + } + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child) || child.type === 8) { + const callArgs = []; + if (child.type !== 2 || child.content !== " ") { + callArgs.push(child); + } + if (!context.ssr && getConstantType(child, context) === 0) { + callArgs.push( + 1 + (``) + ); + } + children[i] = { + type: 12, + content: child, + loc: child.loc, + codegenNode: createCallExpression( + context.helper(CREATE_TEXT), + callArgs + ) + }; + } + } + }; + } +}; + +const seen$1 = /* @__PURE__ */ new WeakSet(); +const transformOnce = (node, context) => { + if (node.type === 1 && findDir(node, "once", true)) { + if (seen$1.has(node) || context.inVOnce || context.inSSR) { + return; + } + seen$1.add(node); + context.inVOnce = true; + context.helper(SET_BLOCK_TRACKING); + return () => { + context.inVOnce = false; + const cur = context.currentNode; + if (cur.codegenNode) { + cur.codegenNode = context.cache( + cur.codegenNode, + true, + true + ); + } + }; + } +}; + +const transformModel = (dir, node, context) => { + const { exp, arg } = dir; + if (!exp) { + context.onError( + createCompilerError(41, dir.loc) + ); + return createTransformProps(); + } + const rawExp = exp.loc.source.trim(); + const expString = exp.type === 4 ? exp.content : rawExp; + const bindingType = context.bindingMetadata[rawExp]; + if (bindingType === "props" || bindingType === "props-aliased") { + context.onError(createCompilerError(44, exp.loc)); + return createTransformProps(); + } + const maybeRef = context.inline && (bindingType === "setup-let" || bindingType === "setup-ref" || bindingType === "setup-maybe-ref"); + if (!expString.trim() || !isMemberExpression(exp, context) && !maybeRef) { + context.onError( + createCompilerError(42, exp.loc) + ); + return createTransformProps(); + } + if (context.prefixIdentifiers && isSimpleIdentifier(expString) && context.identifiers[expString]) { + context.onError( + createCompilerError(43, exp.loc) + ); + return createTransformProps(); + } + const propName = arg ? arg : createSimpleExpression("modelValue", true); + const eventName = arg ? isStaticExp(arg) ? `onUpdate:${shared.camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`; + let assignmentExp; + const eventArg = context.isTS ? `($event: any)` : `$event`; + if (maybeRef) { + if (bindingType === "setup-ref") { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + createSimpleExpression(rawExp, false, exp.loc), + `).value = $event)` + ]); + } else { + const altAssignment = bindingType === "setup-let" ? `${rawExp} = $event` : `null`; + assignmentExp = createCompoundExpression([ + `${eventArg} => (${context.helperString(IS_REF)}(${rawExp}) ? (`, + createSimpleExpression(rawExp, false, exp.loc), + `).value = $event : ${altAssignment})` + ]); + } + } else { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + exp, + `) = $event)` + ]); + } + const props = [ + // modelValue: foo + createObjectProperty(propName, dir.exp), + // "onUpdate:modelValue": $event => (foo = $event) + createObjectProperty(eventName, assignmentExp) + ]; + if (context.prefixIdentifiers && !context.inVOnce && context.cacheHandlers && !hasScopeRef(exp, context.identifiers)) { + props[1].value = context.cache(props[1].value); + } + if (dir.modifiers.length && node.tagType === 1) { + const modifiers = dir.modifiers.map((m) => m.content).map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `); + const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`; + props.push( + createObjectProperty( + modifiersKey, + createSimpleExpression( + `{ ${modifiers} }`, + false, + dir.loc, + 2 + ) + ) + ); + } + return createTransformProps(props); +}; +function createTransformProps(props = []) { + return { props }; +} + +const validDivisionCharRE = /[\w).+\-_$\]]/; +const transformFilter = (node, context) => { + if (!isCompatEnabled("COMPILER_FILTERS", context)) { + return; + } + if (node.type === 5) { + rewriteFilter(node.content, context); + } else if (node.type === 1) { + node.props.forEach((prop) => { + if (prop.type === 7 && prop.name !== "for" && prop.exp) { + rewriteFilter(prop.exp, context); + } + }); + } +}; +function rewriteFilter(node, context) { + if (node.type === 4) { + parseFilter(node, context); + } else { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (typeof child !== "object") continue; + if (child.type === 4) { + parseFilter(child, context); + } else if (child.type === 8) { + rewriteFilter(node, context); + } else if (child.type === 5) { + rewriteFilter(child.content, context); + } + } + } +} +function parseFilter(node, context) { + const exp = node.content; + let inSingle = false; + let inDouble = false; + let inTemplateString = false; + let inRegex = false; + let curly = 0; + let square = 0; + let paren = 0; + let lastFilterIndex = 0; + let c, prev, i, expression, filters = []; + for (i = 0; i < exp.length; i++) { + prev = c; + c = exp.charCodeAt(i); + if (inSingle) { + if (c === 39 && prev !== 92) inSingle = false; + } else if (inDouble) { + if (c === 34 && prev !== 92) inDouble = false; + } else if (inTemplateString) { + if (c === 96 && prev !== 92) inTemplateString = false; + } else if (inRegex) { + if (c === 47 && prev !== 92) inRegex = false; + } else if (c === 124 && // pipe + exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) { + if (expression === void 0) { + lastFilterIndex = i + 1; + expression = exp.slice(0, i).trim(); + } else { + pushFilter(); + } + } else { + switch (c) { + case 34: + inDouble = true; + break; + // " + case 39: + inSingle = true; + break; + // ' + case 96: + inTemplateString = true; + break; + // ` + case 40: + paren++; + break; + // ( + case 41: + paren--; + break; + // ) + case 91: + square++; + break; + // [ + case 93: + square--; + break; + // ] + case 123: + curly++; + break; + // { + case 125: + curly--; + break; + } + if (c === 47) { + let j = i - 1; + let p; + for (; j >= 0; j--) { + p = exp.charAt(j); + if (p !== " ") break; + } + if (!p || !validDivisionCharRE.test(p)) { + inRegex = true; + } + } + } + } + if (expression === void 0) { + expression = exp.slice(0, i).trim(); + } else if (lastFilterIndex !== 0) { + pushFilter(); + } + function pushFilter() { + filters.push(exp.slice(lastFilterIndex, i).trim()); + lastFilterIndex = i + 1; + } + if (filters.length) { + for (i = 0; i < filters.length; i++) { + expression = wrapFilter(expression, filters[i], context); + } + node.content = expression; + node.ast = void 0; + } +} +function wrapFilter(exp, filter, context) { + context.helper(RESOLVE_FILTER); + const i = filter.indexOf("("); + if (i < 0) { + context.filters.add(filter); + return `${toValidAssetId(filter, "filter")}(${exp})`; + } else { + const name = filter.slice(0, i); + const args = filter.slice(i + 1); + context.filters.add(name); + return `${toValidAssetId(name, "filter")}(${exp}${args !== ")" ? "," + args : args}`; + } +} + +const seen = /* @__PURE__ */ new WeakSet(); +const transformMemo = (node, context) => { + if (node.type === 1) { + const dir = findDir(node, "memo"); + if (!dir || seen.has(node)) { + return; + } + seen.add(node); + return () => { + const codegenNode = node.codegenNode || context.currentNode.codegenNode; + if (codegenNode && codegenNode.type === 13) { + if (node.tagType !== 1) { + convertToBlock(codegenNode, context); + } + node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [ + dir.exp, + createFunctionExpression(void 0, codegenNode), + `_cache`, + String(context.cached.length) + ]); + context.cached.push(null); + } + }; + } +}; + +function getBaseTransformPreset(prefixIdentifiers) { + return [ + [ + transformOnce, + transformIf, + transformMemo, + transformFor, + ...[transformFilter] , + ...prefixIdentifiers ? [ + // order is important + trackVForSlotScopes, + transformExpression + ] : [], + transformSlotOutlet, + transformElement, + trackSlotScopes, + transformText + ], + { + on: transformOn, + bind: transformBind, + model: transformModel + } + ]; +} +function baseCompile(source, options = {}) { + const onError = options.onError || defaultOnError; + const isModuleMode = options.mode === "module"; + const prefixIdentifiers = options.prefixIdentifiers === true || isModuleMode; + if (!prefixIdentifiers && options.cacheHandlers) { + onError(createCompilerError(49)); + } + if (options.scopeId && !isModuleMode) { + onError(createCompilerError(50)); + } + const resolvedOptions = shared.extend({}, options, { + prefixIdentifiers + }); + const ast = shared.isString(source) ? baseParse(source, resolvedOptions) : source; + const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(prefixIdentifiers); + if (options.isTS) { + const { expressionPlugins } = options; + if (!expressionPlugins || !expressionPlugins.includes("typescript")) { + options.expressionPlugins = [...expressionPlugins || [], "typescript"]; + } + } + transform( + ast, + shared.extend({}, resolvedOptions, { + nodeTransforms: [ + ...nodeTransforms, + ...options.nodeTransforms || [] + // user transforms + ], + directiveTransforms: shared.extend( + {}, + directiveTransforms, + options.directiveTransforms || {} + // user transforms + ) + }) + ); + return generate(ast, resolvedOptions); +} + +const BindingTypes = { + "DATA": "data", + "PROPS": "props", + "PROPS_ALIASED": "props-aliased", + "SETUP_LET": "setup-let", + "SETUP_CONST": "setup-const", + "SETUP_REACTIVE_CONST": "setup-reactive-const", + "SETUP_MAYBE_REF": "setup-maybe-ref", + "SETUP_REF": "setup-ref", + "OPTIONS": "options", + "LITERAL_CONST": "literal-const" +}; + +const noopDirectiveTransform = () => ({ props: [] }); + +exports.generateCodeFrame = shared.generateCodeFrame; +exports.BASE_TRANSITION = BASE_TRANSITION; +exports.BindingTypes = BindingTypes; +exports.CAMELIZE = CAMELIZE; +exports.CAPITALIZE = CAPITALIZE; +exports.CREATE_BLOCK = CREATE_BLOCK; +exports.CREATE_COMMENT = CREATE_COMMENT; +exports.CREATE_ELEMENT_BLOCK = CREATE_ELEMENT_BLOCK; +exports.CREATE_ELEMENT_VNODE = CREATE_ELEMENT_VNODE; +exports.CREATE_SLOTS = CREATE_SLOTS; +exports.CREATE_STATIC = CREATE_STATIC; +exports.CREATE_TEXT = CREATE_TEXT; +exports.CREATE_VNODE = CREATE_VNODE; +exports.CompilerDeprecationTypes = CompilerDeprecationTypes; +exports.ConstantTypes = ConstantTypes; +exports.ElementTypes = ElementTypes; +exports.ErrorCodes = ErrorCodes; +exports.FRAGMENT = FRAGMENT; +exports.GUARD_REACTIVE_PROPS = GUARD_REACTIVE_PROPS; +exports.IS_MEMO_SAME = IS_MEMO_SAME; +exports.IS_REF = IS_REF; +exports.KEEP_ALIVE = KEEP_ALIVE; +exports.MERGE_PROPS = MERGE_PROPS; +exports.NORMALIZE_CLASS = NORMALIZE_CLASS; +exports.NORMALIZE_PROPS = NORMALIZE_PROPS; +exports.NORMALIZE_STYLE = NORMALIZE_STYLE; +exports.Namespaces = Namespaces; +exports.NodeTypes = NodeTypes; +exports.OPEN_BLOCK = OPEN_BLOCK; +exports.POP_SCOPE_ID = POP_SCOPE_ID; +exports.PUSH_SCOPE_ID = PUSH_SCOPE_ID; +exports.RENDER_LIST = RENDER_LIST; +exports.RENDER_SLOT = RENDER_SLOT; +exports.RESOLVE_COMPONENT = RESOLVE_COMPONENT; +exports.RESOLVE_DIRECTIVE = RESOLVE_DIRECTIVE; +exports.RESOLVE_DYNAMIC_COMPONENT = RESOLVE_DYNAMIC_COMPONENT; +exports.RESOLVE_FILTER = RESOLVE_FILTER; +exports.SET_BLOCK_TRACKING = SET_BLOCK_TRACKING; +exports.SUSPENSE = SUSPENSE; +exports.TELEPORT = TELEPORT; +exports.TO_DISPLAY_STRING = TO_DISPLAY_STRING; +exports.TO_HANDLERS = TO_HANDLERS; +exports.TO_HANDLER_KEY = TO_HANDLER_KEY; +exports.TS_NODE_TYPES = TS_NODE_TYPES; +exports.UNREF = UNREF; +exports.WITH_CTX = WITH_CTX; +exports.WITH_DIRECTIVES = WITH_DIRECTIVES; +exports.WITH_MEMO = WITH_MEMO; +exports.advancePositionWithClone = advancePositionWithClone; +exports.advancePositionWithMutation = advancePositionWithMutation; +exports.assert = assert; +exports.baseCompile = baseCompile; +exports.baseParse = baseParse; +exports.buildDirectiveArgs = buildDirectiveArgs; +exports.buildProps = buildProps; +exports.buildSlots = buildSlots; +exports.checkCompatEnabled = checkCompatEnabled; +exports.convertToBlock = convertToBlock; +exports.createArrayExpression = createArrayExpression; +exports.createAssignmentExpression = createAssignmentExpression; +exports.createBlockStatement = createBlockStatement; +exports.createCacheExpression = createCacheExpression; +exports.createCallExpression = createCallExpression; +exports.createCompilerError = createCompilerError; +exports.createCompoundExpression = createCompoundExpression; +exports.createConditionalExpression = createConditionalExpression; +exports.createForLoopParams = createForLoopParams; +exports.createFunctionExpression = createFunctionExpression; +exports.createIfStatement = createIfStatement; +exports.createInterpolation = createInterpolation; +exports.createObjectExpression = createObjectExpression; +exports.createObjectProperty = createObjectProperty; +exports.createReturnStatement = createReturnStatement; +exports.createRoot = createRoot; +exports.createSequenceExpression = createSequenceExpression; +exports.createSimpleExpression = createSimpleExpression; +exports.createStructuralDirectiveTransform = createStructuralDirectiveTransform; +exports.createTemplateLiteral = createTemplateLiteral; +exports.createTransformContext = createTransformContext; +exports.createVNodeCall = createVNodeCall; +exports.errorMessages = errorMessages; +exports.extractIdentifiers = extractIdentifiers; +exports.findDir = findDir; +exports.findProp = findProp; +exports.forAliasRE = forAliasRE; +exports.generate = generate; +exports.getBaseTransformPreset = getBaseTransformPreset; +exports.getConstantType = getConstantType; +exports.getMemoedVNodeCall = getMemoedVNodeCall; +exports.getVNodeBlockHelper = getVNodeBlockHelper; +exports.getVNodeHelper = getVNodeHelper; +exports.hasDynamicKeyVBind = hasDynamicKeyVBind; +exports.hasScopeRef = hasScopeRef; +exports.helperNameMap = helperNameMap; +exports.injectProp = injectProp; +exports.isCoreComponent = isCoreComponent; +exports.isFnExpression = isFnExpression; +exports.isFnExpressionBrowser = isFnExpressionBrowser; +exports.isFnExpressionNode = isFnExpressionNode; +exports.isFunctionType = isFunctionType; +exports.isInDestructureAssignment = isInDestructureAssignment; +exports.isInNewExpression = isInNewExpression; +exports.isMemberExpression = isMemberExpression; +exports.isMemberExpressionBrowser = isMemberExpressionBrowser; +exports.isMemberExpressionNode = isMemberExpressionNode; +exports.isReferencedIdentifier = isReferencedIdentifier; +exports.isSimpleIdentifier = isSimpleIdentifier; +exports.isSlotOutlet = isSlotOutlet; +exports.isStaticArgOf = isStaticArgOf; +exports.isStaticExp = isStaticExp; +exports.isStaticProperty = isStaticProperty; +exports.isStaticPropertyKey = isStaticPropertyKey; +exports.isTemplateNode = isTemplateNode; +exports.isText = isText$1; +exports.isVPre = isVPre; +exports.isVSlot = isVSlot; +exports.locStub = locStub; +exports.noopDirectiveTransform = noopDirectiveTransform; +exports.processExpression = processExpression; +exports.processFor = processFor; +exports.processIf = processIf; +exports.processSlotOutlet = processSlotOutlet; +exports.registerRuntimeHelpers = registerRuntimeHelpers; +exports.resolveComponentType = resolveComponentType; +exports.stringifyExpression = stringifyExpression; +exports.toValidAssetId = toValidAssetId; +exports.trackSlotScopes = trackSlotScopes; +exports.trackVForSlotScopes = trackVForSlotScopes; +exports.transform = transform; +exports.transformBind = transformBind; +exports.transformElement = transformElement; +exports.transformExpression = transformExpression; +exports.transformModel = transformModel; +exports.transformOn = transformOn; +exports.traverseNode = traverseNode; +exports.unwrapTSNode = unwrapTSNode; +exports.walkBlockDeclarations = walkBlockDeclarations; +exports.walkFunctionParams = walkFunctionParams; +exports.walkIdentifiers = walkIdentifiers; +exports.warnDeprecation = warnDeprecation; diff --git a/node_modules/@vue/compiler-core/dist/compiler-core.d.ts b/node_modules/@vue/compiler-core/dist/compiler-core.d.ts new file mode 100644 index 0000000..80d336b --- /dev/null +++ b/node_modules/@vue/compiler-core/dist/compiler-core.d.ts @@ -0,0 +1,1093 @@ +import { PatchFlags } from '@vue/shared'; +export { generateCodeFrame } from '@vue/shared'; +import { Node as Node$1, Identifier, Function, BlockStatement as BlockStatement$1, Program, ObjectProperty } from '@babel/types'; +import { ParserPlugin } from '@babel/parser'; + +export declare const FRAGMENT: unique symbol; +export declare const TELEPORT: unique symbol; +export declare const SUSPENSE: unique symbol; +export declare const KEEP_ALIVE: unique symbol; +export declare const BASE_TRANSITION: unique symbol; +export declare const OPEN_BLOCK: unique symbol; +export declare const CREATE_BLOCK: unique symbol; +export declare const CREATE_ELEMENT_BLOCK: unique symbol; +export declare const CREATE_VNODE: unique symbol; +export declare const CREATE_ELEMENT_VNODE: unique symbol; +export declare const CREATE_COMMENT: unique symbol; +export declare const CREATE_TEXT: unique symbol; +export declare const CREATE_STATIC: unique symbol; +export declare const RESOLVE_COMPONENT: unique symbol; +export declare const RESOLVE_DYNAMIC_COMPONENT: unique symbol; +export declare const RESOLVE_DIRECTIVE: unique symbol; +export declare const RESOLVE_FILTER: unique symbol; +export declare const WITH_DIRECTIVES: unique symbol; +export declare const RENDER_LIST: unique symbol; +export declare const RENDER_SLOT: unique symbol; +export declare const CREATE_SLOTS: unique symbol; +export declare const TO_DISPLAY_STRING: unique symbol; +export declare const MERGE_PROPS: unique symbol; +export declare const NORMALIZE_CLASS: unique symbol; +export declare const NORMALIZE_STYLE: unique symbol; +export declare const NORMALIZE_PROPS: unique symbol; +export declare const GUARD_REACTIVE_PROPS: unique symbol; +export declare const TO_HANDLERS: unique symbol; +export declare const CAMELIZE: unique symbol; +export declare const CAPITALIZE: unique symbol; +export declare const TO_HANDLER_KEY: unique symbol; +export declare const SET_BLOCK_TRACKING: unique symbol; +/** + * @deprecated no longer needed in 3.5+ because we no longer hoist element nodes + * but kept for backwards compat + */ +export declare const PUSH_SCOPE_ID: unique symbol; +/** + * @deprecated kept for backwards compat + */ +export declare const POP_SCOPE_ID: unique symbol; +export declare const WITH_CTX: unique symbol; +export declare const UNREF: unique symbol; +export declare const IS_REF: unique symbol; +export declare const WITH_MEMO: unique symbol; +export declare const IS_MEMO_SAME: unique symbol; +export declare const helperNameMap: Record<symbol, string>; +export declare function registerRuntimeHelpers(helpers: Record<symbol, string>): void; + +type OptionalOptions = 'decodeEntities' | 'whitespace' | 'isNativeTag' | 'isBuiltInComponent' | 'expressionPlugins' | keyof CompilerCompatOptions; +type MergedParserOptions = Omit<Required<ParserOptions>, OptionalOptions> & Pick<ParserOptions, OptionalOptions>; +export declare function baseParse(input: string, options?: ParserOptions): RootNode; + +type CompilerCompatConfig = Partial<Record<CompilerDeprecationTypes, boolean | 'suppress-warning'>> & { + MODE?: 2 | 3; +}; +interface CompilerCompatOptions { + compatConfig?: CompilerCompatConfig; +} +export declare enum CompilerDeprecationTypes { + COMPILER_IS_ON_ELEMENT = "COMPILER_IS_ON_ELEMENT", + COMPILER_V_BIND_SYNC = "COMPILER_V_BIND_SYNC", + COMPILER_V_BIND_OBJECT_ORDER = "COMPILER_V_BIND_OBJECT_ORDER", + COMPILER_V_ON_NATIVE = "COMPILER_V_ON_NATIVE", + COMPILER_V_IF_V_FOR_PRECEDENCE = "COMPILER_V_IF_V_FOR_PRECEDENCE", + COMPILER_NATIVE_TEMPLATE = "COMPILER_NATIVE_TEMPLATE", + COMPILER_INLINE_TEMPLATE = "COMPILER_INLINE_TEMPLATE", + COMPILER_FILTERS = "COMPILER_FILTERS" +} +export declare function checkCompatEnabled(key: CompilerDeprecationTypes, context: MergedParserOptions | TransformContext, loc: SourceLocation | null, ...args: any[]): boolean; +export declare function warnDeprecation(key: CompilerDeprecationTypes, context: MergedParserOptions | TransformContext, loc: SourceLocation | null, ...args: any[]): void; + +export type NodeTransform = (node: RootNode | TemplateChildNode, context: TransformContext) => void | (() => void) | (() => void)[]; +export type DirectiveTransform = (dir: DirectiveNode, node: ElementNode, context: TransformContext, augmentor?: (ret: DirectiveTransformResult) => DirectiveTransformResult) => DirectiveTransformResult; +interface DirectiveTransformResult { + props: Property[]; + needRuntime?: boolean | symbol; + ssrTagParts?: TemplateLiteral['elements']; +} +export type StructuralDirectiveTransform = (node: ElementNode, dir: DirectiveNode, context: TransformContext) => void | (() => void); +interface ImportItem { + exp: string | ExpressionNode; + path: string; +} +export interface TransformContext extends Required<Omit<TransformOptions, keyof CompilerCompatOptions>>, CompilerCompatOptions { + selfName: string | null; + root: RootNode; + helpers: Map<symbol, number>; + components: Set<string>; + directives: Set<string>; + hoists: (JSChildNode | null)[]; + imports: ImportItem[]; + temps: number; + cached: (CacheExpression | null)[]; + identifiers: { + [name: string]: number | undefined; + }; + scopes: { + vFor: number; + vSlot: number; + vPre: number; + vOnce: number; + }; + parent: ParentNode | null; + grandParent: ParentNode | null; + childIndex: number; + currentNode: RootNode | TemplateChildNode | null; + inVOnce: boolean; + helper<T extends symbol>(name: T): T; + removeHelper<T extends symbol>(name: T): void; + helperString(name: symbol): string; + replaceNode(node: TemplateChildNode): void; + removeNode(node?: TemplateChildNode): void; + onNodeRemoved(): void; + addIdentifiers(exp: ExpressionNode | string): void; + removeIdentifiers(exp: ExpressionNode | string): void; + hoist(exp: string | JSChildNode | ArrayExpression): SimpleExpressionNode; + cache(exp: JSChildNode, isVNode?: boolean, inVOnce?: boolean): CacheExpression; + constantCache: WeakMap<TemplateChildNode, ConstantTypes>; + filters?: Set<string>; +} +export declare function createTransformContext(root: RootNode, { filename, prefixIdentifiers, hoistStatic, hmr, cacheHandlers, nodeTransforms, directiveTransforms, transformHoist, isBuiltInComponent, isCustomElement, expressionPlugins, scopeId, slotted, ssr, inSSR, ssrCssVars, bindingMetadata, inline, isTS, onError, onWarn, compatConfig, }: TransformOptions): TransformContext; +export declare function transform(root: RootNode, options: TransformOptions): void; +export declare function traverseNode(node: RootNode | TemplateChildNode, context: TransformContext): void; +export declare function createStructuralDirectiveTransform(name: string | RegExp, fn: StructuralDirectiveTransform): NodeTransform; + +export declare const transformElement: NodeTransform; +export declare function resolveComponentType(node: ComponentNode, context: TransformContext, ssr?: boolean): string | symbol | CallExpression; +export type PropsExpression = ObjectExpression | CallExpression | ExpressionNode; +export declare function buildProps(node: ElementNode, context: TransformContext, props: ElementNode['props'] | undefined, isComponent: boolean, isDynamicComponent: boolean, ssr?: boolean): { + props: PropsExpression | undefined; + directives: DirectiveNode[]; + patchFlag: number; + dynamicPropNames: string[]; + shouldUseBlock: boolean; +}; +export declare function buildDirectiveArgs(dir: DirectiveNode, context: TransformContext): ArrayExpression; + +export type Namespace = number; +export declare enum Namespaces { + HTML = 0, + SVG = 1, + MATH_ML = 2 +} +export declare enum NodeTypes { + ROOT = 0, + ELEMENT = 1, + TEXT = 2, + COMMENT = 3, + SIMPLE_EXPRESSION = 4, + INTERPOLATION = 5, + ATTRIBUTE = 6, + DIRECTIVE = 7, + COMPOUND_EXPRESSION = 8, + IF = 9, + IF_BRANCH = 10, + FOR = 11, + TEXT_CALL = 12, + VNODE_CALL = 13, + JS_CALL_EXPRESSION = 14, + JS_OBJECT_EXPRESSION = 15, + JS_PROPERTY = 16, + JS_ARRAY_EXPRESSION = 17, + JS_FUNCTION_EXPRESSION = 18, + JS_CONDITIONAL_EXPRESSION = 19, + JS_CACHE_EXPRESSION = 20, + JS_BLOCK_STATEMENT = 21, + JS_TEMPLATE_LITERAL = 22, + JS_IF_STATEMENT = 23, + JS_ASSIGNMENT_EXPRESSION = 24, + JS_SEQUENCE_EXPRESSION = 25, + JS_RETURN_STATEMENT = 26 +} +export declare enum ElementTypes { + ELEMENT = 0, + COMPONENT = 1, + SLOT = 2, + TEMPLATE = 3 +} +export interface Node { + type: NodeTypes; + loc: SourceLocation; +} +export interface SourceLocation { + start: Position; + end: Position; + source: string; +} +export interface Position { + offset: number; + line: number; + column: number; +} +export type ParentNode = RootNode | ElementNode | IfBranchNode | ForNode; +export type ExpressionNode = SimpleExpressionNode | CompoundExpressionNode; +export type TemplateChildNode = ElementNode | InterpolationNode | CompoundExpressionNode | TextNode | CommentNode | IfNode | IfBranchNode | ForNode | TextCallNode; +export interface RootNode extends Node { + type: NodeTypes.ROOT; + source: string; + children: TemplateChildNode[]; + helpers: Set<symbol>; + components: string[]; + directives: string[]; + hoists: (JSChildNode | null)[]; + imports: ImportItem[]; + cached: (CacheExpression | null)[]; + temps: number; + ssrHelpers?: symbol[]; + codegenNode?: TemplateChildNode | JSChildNode | BlockStatement; + transformed?: boolean; + filters?: string[]; +} +export type ElementNode = PlainElementNode | ComponentNode | SlotOutletNode | TemplateNode; +export interface BaseElementNode extends Node { + type: NodeTypes.ELEMENT; + ns: Namespace; + tag: string; + tagType: ElementTypes; + props: Array<AttributeNode | DirectiveNode>; + children: TemplateChildNode[]; + isSelfClosing?: boolean; + innerLoc?: SourceLocation; +} +export interface PlainElementNode extends BaseElementNode { + tagType: ElementTypes.ELEMENT; + codegenNode: VNodeCall | SimpleExpressionNode | CacheExpression | MemoExpression | undefined; + ssrCodegenNode?: TemplateLiteral; +} +export interface ComponentNode extends BaseElementNode { + tagType: ElementTypes.COMPONENT; + codegenNode: VNodeCall | CacheExpression | MemoExpression | undefined; + ssrCodegenNode?: CallExpression; +} +export interface SlotOutletNode extends BaseElementNode { + tagType: ElementTypes.SLOT; + codegenNode: RenderSlotCall | CacheExpression | undefined; + ssrCodegenNode?: CallExpression; +} +export interface TemplateNode extends BaseElementNode { + tagType: ElementTypes.TEMPLATE; + codegenNode: undefined; +} +export interface TextNode extends Node { + type: NodeTypes.TEXT; + content: string; +} +export interface CommentNode extends Node { + type: NodeTypes.COMMENT; + content: string; +} +export interface AttributeNode extends Node { + type: NodeTypes.ATTRIBUTE; + name: string; + nameLoc: SourceLocation; + value: TextNode | undefined; +} +export interface DirectiveNode extends Node { + type: NodeTypes.DIRECTIVE; + /** + * the normalized name without prefix or shorthands, e.g. "bind", "on" + */ + name: string; + /** + * the raw attribute name, preserving shorthand, and including arg & modifiers + * this is only used during parse. + */ + rawName?: string; + exp: ExpressionNode | undefined; + arg: ExpressionNode | undefined; + modifiers: SimpleExpressionNode[]; + /** + * optional property to cache the expression parse result for v-for + */ + forParseResult?: ForParseResult; +} +/** + * Static types have several levels. + * Higher levels implies lower levels. e.g. a node that can be stringified + * can always be hoisted and skipped for patch. + */ +export declare enum ConstantTypes { + NOT_CONSTANT = 0, + CAN_SKIP_PATCH = 1, + CAN_CACHE = 2, + CAN_STRINGIFY = 3 +} +export interface SimpleExpressionNode extends Node { + type: NodeTypes.SIMPLE_EXPRESSION; + content: string; + isStatic: boolean; + constType: ConstantTypes; + /** + * - `null` means the expression is a simple identifier that doesn't need + * parsing + * - `false` means there was a parsing error + */ + ast?: Node$1 | null | false; + /** + * Indicates this is an identifier for a hoist vnode call and points to the + * hoisted node. + */ + hoisted?: JSChildNode; + /** + * an expression parsed as the params of a function will track + * the identifiers declared inside the function body. + */ + identifiers?: string[]; + isHandlerKey?: boolean; +} +export interface InterpolationNode extends Node { + type: NodeTypes.INTERPOLATION; + content: ExpressionNode; +} +export interface CompoundExpressionNode extends Node { + type: NodeTypes.COMPOUND_EXPRESSION; + /** + * - `null` means the expression is a simple identifier that doesn't need + * parsing + * - `false` means there was a parsing error + */ + ast?: Node$1 | null | false; + children: (SimpleExpressionNode | CompoundExpressionNode | InterpolationNode | TextNode | string | symbol)[]; + /** + * an expression parsed as the params of a function will track + * the identifiers declared inside the function body. + */ + identifiers?: string[]; + isHandlerKey?: boolean; +} +export interface IfNode extends Node { + type: NodeTypes.IF; + branches: IfBranchNode[]; + codegenNode?: IfConditionalExpression | CacheExpression; +} +export interface IfBranchNode extends Node { + type: NodeTypes.IF_BRANCH; + condition: ExpressionNode | undefined; + children: TemplateChildNode[]; + userKey?: AttributeNode | DirectiveNode; + isTemplateIf?: boolean; +} +export interface ForNode extends Node { + type: NodeTypes.FOR; + source: ExpressionNode; + valueAlias: ExpressionNode | undefined; + keyAlias: ExpressionNode | undefined; + objectIndexAlias: ExpressionNode | undefined; + parseResult: ForParseResult; + children: TemplateChildNode[]; + codegenNode?: ForCodegenNode; +} +export interface ForParseResult { + source: ExpressionNode; + value: ExpressionNode | undefined; + key: ExpressionNode | undefined; + index: ExpressionNode | undefined; + finalized: boolean; +} +export interface TextCallNode extends Node { + type: NodeTypes.TEXT_CALL; + content: TextNode | InterpolationNode | CompoundExpressionNode; + codegenNode: CallExpression | SimpleExpressionNode; +} +export type TemplateTextChildNode = TextNode | InterpolationNode | CompoundExpressionNode; +export interface VNodeCall extends Node { + type: NodeTypes.VNODE_CALL; + tag: string | symbol | CallExpression; + props: PropsExpression | undefined; + children: TemplateChildNode[] | TemplateTextChildNode | SlotsExpression | ForRenderListExpression | SimpleExpressionNode | CacheExpression | undefined; + patchFlag: PatchFlags | undefined; + dynamicProps: string | SimpleExpressionNode | undefined; + directives: DirectiveArguments | undefined; + isBlock: boolean; + disableTracking: boolean; + isComponent: boolean; +} +export type JSChildNode = VNodeCall | CallExpression | ObjectExpression | ArrayExpression | ExpressionNode | FunctionExpression | ConditionalExpression | CacheExpression | AssignmentExpression | SequenceExpression; +export interface CallExpression extends Node { + type: NodeTypes.JS_CALL_EXPRESSION; + callee: string | symbol; + arguments: (string | symbol | JSChildNode | SSRCodegenNode | TemplateChildNode | TemplateChildNode[])[]; +} +export interface ObjectExpression extends Node { + type: NodeTypes.JS_OBJECT_EXPRESSION; + properties: Array<Property>; +} +export interface Property extends Node { + type: NodeTypes.JS_PROPERTY; + key: ExpressionNode; + value: JSChildNode; +} +export interface ArrayExpression extends Node { + type: NodeTypes.JS_ARRAY_EXPRESSION; + elements: Array<string | Node>; +} +export interface FunctionExpression extends Node { + type: NodeTypes.JS_FUNCTION_EXPRESSION; + params: ExpressionNode | string | (ExpressionNode | string)[] | undefined; + returns?: TemplateChildNode | TemplateChildNode[] | JSChildNode; + body?: BlockStatement | IfStatement; + newline: boolean; + /** + * This flag is for codegen to determine whether it needs to generate the + * withScopeId() wrapper + */ + isSlot: boolean; + /** + * __COMPAT__ only, indicates a slot function that should be excluded from + * the legacy $scopedSlots instance property. + */ + isNonScopedSlot?: boolean; +} +export interface ConditionalExpression extends Node { + type: NodeTypes.JS_CONDITIONAL_EXPRESSION; + test: JSChildNode; + consequent: JSChildNode; + alternate: JSChildNode; + newline: boolean; +} +export interface CacheExpression extends Node { + type: NodeTypes.JS_CACHE_EXPRESSION; + index: number; + value: JSChildNode; + needPauseTracking: boolean; + inVOnce: boolean; + needArraySpread: boolean; +} +export interface MemoExpression extends CallExpression { + callee: typeof WITH_MEMO; + arguments: [ExpressionNode, MemoFactory, string, string]; +} +interface MemoFactory extends FunctionExpression { + returns: BlockCodegenNode; +} +export type SSRCodegenNode = BlockStatement | TemplateLiteral | IfStatement | AssignmentExpression | ReturnStatement | SequenceExpression; +export interface BlockStatement extends Node { + type: NodeTypes.JS_BLOCK_STATEMENT; + body: (JSChildNode | IfStatement)[]; +} +export interface TemplateLiteral extends Node { + type: NodeTypes.JS_TEMPLATE_LITERAL; + elements: (string | JSChildNode)[]; +} +export interface IfStatement extends Node { + type: NodeTypes.JS_IF_STATEMENT; + test: ExpressionNode; + consequent: BlockStatement; + alternate: IfStatement | BlockStatement | ReturnStatement | undefined; +} +export interface AssignmentExpression extends Node { + type: NodeTypes.JS_ASSIGNMENT_EXPRESSION; + left: SimpleExpressionNode; + right: JSChildNode; +} +export interface SequenceExpression extends Node { + type: NodeTypes.JS_SEQUENCE_EXPRESSION; + expressions: JSChildNode[]; +} +export interface ReturnStatement extends Node { + type: NodeTypes.JS_RETURN_STATEMENT; + returns: TemplateChildNode | TemplateChildNode[] | JSChildNode; +} +export interface DirectiveArguments extends ArrayExpression { + elements: DirectiveArgumentNode[]; +} +export interface DirectiveArgumentNode extends ArrayExpression { + elements: [string] | [string, ExpressionNode] | [string, ExpressionNode, ExpressionNode] | [string, ExpressionNode, ExpressionNode, ObjectExpression]; +} +export interface RenderSlotCall extends CallExpression { + callee: typeof RENDER_SLOT; + arguments: [string, string | ExpressionNode] | [string, string | ExpressionNode, PropsExpression] | [ + string, + string | ExpressionNode, + PropsExpression | '{}', + TemplateChildNode[] + ]; +} +export type SlotsExpression = SlotsObjectExpression | DynamicSlotsExpression; +export interface SlotsObjectExpression extends ObjectExpression { + properties: SlotsObjectProperty[]; +} +export interface SlotsObjectProperty extends Property { + value: SlotFunctionExpression; +} +export interface SlotFunctionExpression extends FunctionExpression { + returns: TemplateChildNode[] | CacheExpression; +} +export interface DynamicSlotsExpression extends CallExpression { + callee: typeof CREATE_SLOTS; + arguments: [SlotsObjectExpression, DynamicSlotEntries]; +} +export interface DynamicSlotEntries extends ArrayExpression { + elements: (ConditionalDynamicSlotNode | ListDynamicSlotNode)[]; +} +export interface ConditionalDynamicSlotNode extends ConditionalExpression { + consequent: DynamicSlotNode; + alternate: DynamicSlotNode | SimpleExpressionNode; +} +export interface ListDynamicSlotNode extends CallExpression { + callee: typeof RENDER_LIST; + arguments: [ExpressionNode, ListDynamicSlotIterator]; +} +export interface ListDynamicSlotIterator extends FunctionExpression { + returns: DynamicSlotNode; +} +export interface DynamicSlotNode extends ObjectExpression { + properties: [Property, DynamicSlotFnProperty]; +} +export interface DynamicSlotFnProperty extends Property { + value: SlotFunctionExpression; +} +export type BlockCodegenNode = VNodeCall | RenderSlotCall; +export interface IfConditionalExpression extends ConditionalExpression { + consequent: BlockCodegenNode | MemoExpression; + alternate: BlockCodegenNode | IfConditionalExpression | MemoExpression; +} +export interface ForCodegenNode extends VNodeCall { + isBlock: true; + tag: typeof FRAGMENT; + props: undefined; + children: ForRenderListExpression; + patchFlag: PatchFlags; + disableTracking: boolean; +} +export interface ForRenderListExpression extends CallExpression { + callee: typeof RENDER_LIST; + arguments: [ExpressionNode, ForIteratorExpression]; +} +export interface ForIteratorExpression extends FunctionExpression { + returns?: BlockCodegenNode; +} +export declare const locStub: SourceLocation; +export declare function createRoot(children: TemplateChildNode[], source?: string): RootNode; +export declare function createVNodeCall(context: TransformContext | null, tag: VNodeCall['tag'], props?: VNodeCall['props'], children?: VNodeCall['children'], patchFlag?: VNodeCall['patchFlag'], dynamicProps?: VNodeCall['dynamicProps'], directives?: VNodeCall['directives'], isBlock?: VNodeCall['isBlock'], disableTracking?: VNodeCall['disableTracking'], isComponent?: VNodeCall['isComponent'], loc?: SourceLocation): VNodeCall; +export declare function createArrayExpression(elements: ArrayExpression['elements'], loc?: SourceLocation): ArrayExpression; +export declare function createObjectExpression(properties: ObjectExpression['properties'], loc?: SourceLocation): ObjectExpression; +export declare function createObjectProperty(key: Property['key'] | string, value: Property['value']): Property; +export declare function createSimpleExpression(content: SimpleExpressionNode['content'], isStatic?: SimpleExpressionNode['isStatic'], loc?: SourceLocation, constType?: ConstantTypes): SimpleExpressionNode; +export declare function createInterpolation(content: InterpolationNode['content'] | string, loc: SourceLocation): InterpolationNode; +export declare function createCompoundExpression(children: CompoundExpressionNode['children'], loc?: SourceLocation): CompoundExpressionNode; +type InferCodegenNodeType<T> = T extends typeof RENDER_SLOT ? RenderSlotCall : CallExpression; +export declare function createCallExpression<T extends CallExpression['callee']>(callee: T, args?: CallExpression['arguments'], loc?: SourceLocation): InferCodegenNodeType<T>; +export declare function createFunctionExpression(params: FunctionExpression['params'], returns?: FunctionExpression['returns'], newline?: boolean, isSlot?: boolean, loc?: SourceLocation): FunctionExpression; +export declare function createConditionalExpression(test: ConditionalExpression['test'], consequent: ConditionalExpression['consequent'], alternate: ConditionalExpression['alternate'], newline?: boolean): ConditionalExpression; +export declare function createCacheExpression(index: number, value: JSChildNode, needPauseTracking?: boolean, inVOnce?: boolean): CacheExpression; +export declare function createBlockStatement(body: BlockStatement['body']): BlockStatement; +export declare function createTemplateLiteral(elements: TemplateLiteral['elements']): TemplateLiteral; +export declare function createIfStatement(test: IfStatement['test'], consequent: IfStatement['consequent'], alternate?: IfStatement['alternate']): IfStatement; +export declare function createAssignmentExpression(left: AssignmentExpression['left'], right: AssignmentExpression['right']): AssignmentExpression; +export declare function createSequenceExpression(expressions: SequenceExpression['expressions']): SequenceExpression; +export declare function createReturnStatement(returns: ReturnStatement['returns']): ReturnStatement; +export declare function getVNodeHelper(ssr: boolean, isComponent: boolean): typeof CREATE_VNODE | typeof CREATE_ELEMENT_VNODE; +export declare function getVNodeBlockHelper(ssr: boolean, isComponent: boolean): typeof CREATE_BLOCK | typeof CREATE_ELEMENT_BLOCK; +export declare function convertToBlock(node: VNodeCall, { helper, removeHelper, inSSR }: TransformContext): void; + +export interface CompilerError extends SyntaxError { + code: number | string; + loc?: SourceLocation; +} +export interface CoreCompilerError extends CompilerError { + code: ErrorCodes; +} +type InferCompilerError<T> = T extends ErrorCodes ? CoreCompilerError : CompilerError; +export declare function createCompilerError<T extends number>(code: T, loc?: SourceLocation, messages?: { + [code: number]: string; +}, additionalMessage?: string): InferCompilerError<T>; +export declare enum ErrorCodes { + ABRUPT_CLOSING_OF_EMPTY_COMMENT = 0, + CDATA_IN_HTML_CONTENT = 1, + DUPLICATE_ATTRIBUTE = 2, + END_TAG_WITH_ATTRIBUTES = 3, + END_TAG_WITH_TRAILING_SOLIDUS = 4, + EOF_BEFORE_TAG_NAME = 5, + EOF_IN_CDATA = 6, + EOF_IN_COMMENT = 7, + EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT = 8, + EOF_IN_TAG = 9, + INCORRECTLY_CLOSED_COMMENT = 10, + INCORRECTLY_OPENED_COMMENT = 11, + INVALID_FIRST_CHARACTER_OF_TAG_NAME = 12, + MISSING_ATTRIBUTE_VALUE = 13, + MISSING_END_TAG_NAME = 14, + MISSING_WHITESPACE_BETWEEN_ATTRIBUTES = 15, + NESTED_COMMENT = 16, + UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME = 17, + UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE = 18, + UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME = 19, + UNEXPECTED_NULL_CHARACTER = 20, + UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME = 21, + UNEXPECTED_SOLIDUS_IN_TAG = 22, + X_INVALID_END_TAG = 23, + X_MISSING_END_TAG = 24, + X_MISSING_INTERPOLATION_END = 25, + X_MISSING_DIRECTIVE_NAME = 26, + X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END = 27, + X_V_IF_NO_EXPRESSION = 28, + X_V_IF_SAME_KEY = 29, + X_V_ELSE_NO_ADJACENT_IF = 30, + X_V_FOR_NO_EXPRESSION = 31, + X_V_FOR_MALFORMED_EXPRESSION = 32, + X_V_FOR_TEMPLATE_KEY_PLACEMENT = 33, + X_V_BIND_NO_EXPRESSION = 34, + X_V_ON_NO_EXPRESSION = 35, + X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET = 36, + X_V_SLOT_MIXED_SLOT_USAGE = 37, + X_V_SLOT_DUPLICATE_SLOT_NAMES = 38, + X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN = 39, + X_V_SLOT_MISPLACED = 40, + X_V_MODEL_NO_EXPRESSION = 41, + X_V_MODEL_MALFORMED_EXPRESSION = 42, + X_V_MODEL_ON_SCOPE_VARIABLE = 43, + X_V_MODEL_ON_PROPS = 44, + X_INVALID_EXPRESSION = 45, + X_KEEP_ALIVE_INVALID_CHILDREN = 46, + X_PREFIX_ID_NOT_SUPPORTED = 47, + X_MODULE_MODE_NOT_SUPPORTED = 48, + X_CACHE_HANDLER_NOT_SUPPORTED = 49, + X_SCOPE_ID_NOT_SUPPORTED = 50, + X_VNODE_HOOKS = 51, + X_V_BIND_INVALID_SAME_NAME_ARGUMENT = 52, + __EXTEND_POINT__ = 53 +} +export declare const errorMessages: Record<ErrorCodes, string>; + +interface ErrorHandlingOptions { + onWarn?: (warning: CompilerError) => void; + onError?: (error: CompilerError) => void; +} +export interface ParserOptions extends ErrorHandlingOptions, CompilerCompatOptions { + /** + * Base mode is platform agnostic and only parses HTML-like template syntax, + * treating all tags the same way. Specific tag parsing behavior can be + * configured by higher-level compilers. + * + * HTML mode adds additional logic for handling special parsing behavior in + * `<script>`, `<style>`,`<title>` and `<textarea>`. + * The logic is handled inside compiler-core for efficiency. + * + * SFC mode treats content of all root-level tags except `<template>` as plain + * text. + */ + parseMode?: 'base' | 'html' | 'sfc'; + /** + * Specify the root namespace to use when parsing a template. + * Defaults to `Namespaces.HTML` (0). + */ + ns?: Namespaces; + /** + * e.g. platform native elements, e.g. `<div>` for browsers + */ + isNativeTag?: (tag: string) => boolean; + /** + * e.g. native elements that can self-close, e.g. `<img>`, `<br>`, `<hr>` + */ + isVoidTag?: (tag: string) => boolean; + /** + * e.g. elements that should preserve whitespace inside, e.g. `<pre>` + */ + isPreTag?: (tag: string) => boolean; + /** + * Elements that should ignore the first newline token per parinsg spec + * e.g. `<textarea>` and `<pre>` + */ + isIgnoreNewlineTag?: (tag: string) => boolean; + /** + * Platform-specific built-in components e.g. `<Transition>` + */ + isBuiltInComponent?: (tag: string) => symbol | void; + /** + * Separate option for end users to extend the native elements list + */ + isCustomElement?: (tag: string) => boolean | void; + /** + * Get tag namespace + */ + getNamespace?: (tag: string, parent: ElementNode | undefined, rootNamespace: Namespace) => Namespace; + /** + * @default ['{{', '}}'] + */ + delimiters?: [string, string]; + /** + * Whitespace handling strategy + * @default 'condense' + */ + whitespace?: 'preserve' | 'condense'; + /** + * Only used for DOM compilers that runs in the browser. + * In non-browser builds, this option is ignored. + */ + decodeEntities?: (rawText: string, asAttr: boolean) => string; + /** + * Whether to keep comments in the templates AST. + * This defaults to `true` in development and `false` in production builds. + */ + comments?: boolean; + /** + * Parse JavaScript expressions with Babel. + * @default false + */ + prefixIdentifiers?: boolean; + /** + * A list of parser plugins to enable for `@babel/parser`, which is used to + * parse expressions in bindings and interpolations. + * https://babeljs.io/docs/en/next/babel-parser#plugins + */ + expressionPlugins?: ParserPlugin[]; +} +export type HoistTransform = (children: TemplateChildNode[], context: TransformContext, parent: ParentNode) => void; +export declare enum BindingTypes { + /** + * returned from data() + */ + DATA = "data", + /** + * declared as a prop + */ + PROPS = "props", + /** + * a local alias of a `<script setup>` destructured prop. + * the original is stored in __propsAliases of the bindingMetadata object. + */ + PROPS_ALIASED = "props-aliased", + /** + * a let binding (may or may not be a ref) + */ + SETUP_LET = "setup-let", + /** + * a const binding that can never be a ref. + * these bindings don't need `unref()` calls when processed in inlined + * template expressions. + */ + SETUP_CONST = "setup-const", + /** + * a const binding that does not need `unref()`, but may be mutated. + */ + SETUP_REACTIVE_CONST = "setup-reactive-const", + /** + * a const binding that may be a ref. + */ + SETUP_MAYBE_REF = "setup-maybe-ref", + /** + * bindings that are guaranteed to be refs + */ + SETUP_REF = "setup-ref", + /** + * declared by other options, e.g. computed, inject + */ + OPTIONS = "options", + /** + * a literal constant, e.g. 'foo', 1, true + */ + LITERAL_CONST = "literal-const" +} +export type BindingMetadata = { + [key: string]: BindingTypes | undefined; +} & { + __isScriptSetup?: boolean; + __propsAliases?: Record<string, string>; +}; +interface SharedTransformCodegenOptions { + /** + * Transform expressions like {{ foo }} to `_ctx.foo`. + * If this option is false, the generated code will be wrapped in a + * `with (this) { ... }` block. + * - This is force-enabled in module mode, since modules are by default strict + * and cannot use `with` + * @default mode === 'module' + */ + prefixIdentifiers?: boolean; + /** + * Control whether generate SSR-optimized render functions instead. + * The resulting function must be attached to the component via the + * `ssrRender` option instead of `render`. + * + * When compiler generates code for SSR's fallback branch, we need to set it to false: + * - context.ssr = false + * + * see `subTransform` in `ssrTransformComponent.ts` + */ + ssr?: boolean; + /** + * Indicates whether the compiler generates code for SSR, + * it is always true when generating code for SSR, + * regardless of whether we are generating code for SSR's fallback branch, + * this means that when the compiler generates code for SSR's fallback branch: + * - context.ssr = false + * - context.inSSR = true + */ + inSSR?: boolean; + /** + * Optional binding metadata analyzed from script - used to optimize + * binding access when `prefixIdentifiers` is enabled. + */ + bindingMetadata?: BindingMetadata; + /** + * Compile the function for inlining inside setup(). + * This allows the function to directly access setup() local bindings. + */ + inline?: boolean; + /** + * Indicates that transforms and codegen should try to output valid TS code + */ + isTS?: boolean; + /** + * Filename for source map generation. + * Also used for self-recursive reference in templates + * @default 'template.vue.html' + */ + filename?: string; +} +export interface TransformOptions extends SharedTransformCodegenOptions, ErrorHandlingOptions, CompilerCompatOptions { + /** + * An array of node transforms to be applied to every AST node. + */ + nodeTransforms?: NodeTransform[]; + /** + * An object of { name: transform } to be applied to every directive attribute + * node found on element nodes. + */ + directiveTransforms?: Record<string, DirectiveTransform | undefined>; + /** + * An optional hook to transform a node being hoisted. + * used by compiler-dom to turn hoisted nodes into stringified HTML vnodes. + * @default null + */ + transformHoist?: HoistTransform | null; + /** + * If the pairing runtime provides additional built-in elements, use this to + * mark them as built-in so the compiler will generate component vnodes + * for them. + */ + isBuiltInComponent?: (tag: string) => symbol | void; + /** + * Used by some transforms that expects only native elements + */ + isCustomElement?: (tag: string) => boolean | void; + /** + * Transform expressions like {{ foo }} to `_ctx.foo`. + * If this option is false, the generated code will be wrapped in a + * `with (this) { ... }` block. + * - This is force-enabled in module mode, since modules are by default strict + * and cannot use `with` + * @default mode === 'module' + */ + prefixIdentifiers?: boolean; + /** + * Cache static VNodes and props objects to `_hoisted_x` constants + * @default false + */ + hoistStatic?: boolean; + /** + * Cache v-on handlers to avoid creating new inline functions on each render, + * also avoids the need for dynamically patching the handlers by wrapping it. + * e.g `@click="foo"` by default is compiled to `{ onClick: foo }`. With this + * option it's compiled to: + * ```js + * { onClick: _cache[0] || (_cache[0] = e => _ctx.foo(e)) } + * ``` + * - Requires "prefixIdentifiers" to be enabled because it relies on scope + * analysis to determine if a handler is safe to cache. + * @default false + */ + cacheHandlers?: boolean; + /** + * A list of parser plugins to enable for `@babel/parser`, which is used to + * parse expressions in bindings and interpolations. + * https://babeljs.io/docs/en/next/babel-parser#plugins + */ + expressionPlugins?: ParserPlugin[]; + /** + * SFC scoped styles ID + */ + scopeId?: string | null; + /** + * Indicates this SFC template has used :slotted in its styles + * Defaults to `true` for backwards compatibility - SFC tooling should set it + * to `false` if no `:slotted` usage is detected in `<style>` + */ + slotted?: boolean; + /** + * SFC `<style vars>` injection string + * Should already be an object expression, e.g. `{ 'xxxx-color': color }` + * needed to render inline CSS variables on component root + */ + ssrCssVars?: string; + /** + * Whether to compile the template assuming it needs to handle HMR. + * Some edge cases may need to generate different code for HMR to work + * correctly, e.g. #6938, #7138 + */ + hmr?: boolean; +} +export interface CodegenOptions extends SharedTransformCodegenOptions { + /** + * - `module` mode will generate ES module import statements for helpers + * and export the render function as the default export. + * - `function` mode will generate a single `const { helpers... } = Vue` + * statement and return the render function. It expects `Vue` to be globally + * available (or passed by wrapping the code with an IIFE). It is meant to be + * used with `new Function(code)()` to generate a render function at runtime. + * @default 'function' + */ + mode?: 'module' | 'function'; + /** + * Generate source map? + * @default false + */ + sourceMap?: boolean; + /** + * SFC scoped styles ID + */ + scopeId?: string | null; + /** + * Option to optimize helper import bindings via variable assignment + * (only used for webpack code-split) + * @default false + */ + optimizeImports?: boolean; + /** + * Customize where to import runtime helpers from. + * @default 'vue' + */ + runtimeModuleName?: string; + /** + * Customize where to import ssr runtime helpers from/** + * @default 'vue/server-renderer' + */ + ssrRuntimeModuleName?: string; + /** + * Customize the global variable name of `Vue` to get helpers from + * in function mode + * @default 'Vue' + */ + runtimeGlobalName?: string; +} +export type CompilerOptions = ParserOptions & TransformOptions & CodegenOptions; + +/** + * The `SourceMapGenerator` type from `source-map-js` is a bit incomplete as it + * misses `toJSON()`. We also need to add types for internal properties which we + * need to access for better performance. + * + * Since TS 5.3, dts generation starts to strangely include broken triple slash + * references for source-map-js, so we are inlining all source map related types + * here to to workaround that. + */ +export interface CodegenSourceMapGenerator { + setSourceContent(sourceFile: string, sourceContent: string): void; + toJSON(): RawSourceMap; + _sources: Set<string>; + _names: Set<string>; + _mappings: { + add(mapping: MappingItem): void; + }; +} +export interface RawSourceMap { + file?: string; + sourceRoot?: string; + version: string; + sources: string[]; + names: string[]; + sourcesContent?: string[]; + mappings: string; +} +interface MappingItem { + source: string; + generatedLine: number; + generatedColumn: number; + originalLine: number; + originalColumn: number; + name: string | null; +} +type CodegenNode = TemplateChildNode | JSChildNode | SSRCodegenNode; +export interface CodegenResult { + code: string; + preamble: string; + ast: RootNode; + map?: RawSourceMap; +} +export interface CodegenContext extends Omit<Required<CodegenOptions>, 'bindingMetadata' | 'inline'> { + source: string; + code: string; + line: number; + column: number; + offset: number; + indentLevel: number; + pure: boolean; + map?: CodegenSourceMapGenerator; + helper(key: symbol): string; + push(code: string, newlineIndex?: number, node?: CodegenNode): void; + indent(): void; + deindent(withoutNewLine?: boolean): void; + newline(): void; +} +export declare function generate(ast: RootNode, options?: CodegenOptions & { + onContextCreated?: (context: CodegenContext) => void; +}): CodegenResult; + +export type TransformPreset = [ + NodeTransform[], + Record<string, DirectiveTransform> +]; +export declare function getBaseTransformPreset(prefixIdentifiers?: boolean): TransformPreset; +export declare function baseCompile(source: string | RootNode, options?: CompilerOptions): CodegenResult; + +export declare const isStaticExp: (p: JSChildNode) => p is SimpleExpressionNode; +export declare function isCoreComponent(tag: string): symbol | void; +export declare const isSimpleIdentifier: (name: string) => boolean; +/** + * Simple lexer to check if an expression is a member expression. This is + * lax and only checks validity at the root level (i.e. does not validate exps + * inside square brackets), but it's ok since these are only used on template + * expressions and false positives are invalid expressions in the first place. + */ +export declare const isMemberExpressionBrowser: (exp: ExpressionNode) => boolean; +export declare const isMemberExpressionNode: (exp: ExpressionNode, context: TransformContext) => boolean; +export declare const isMemberExpression: (exp: ExpressionNode, context: TransformContext) => boolean; +export declare const isFnExpressionBrowser: (exp: ExpressionNode) => boolean; +export declare const isFnExpressionNode: (exp: ExpressionNode, context: TransformContext) => boolean; +export declare const isFnExpression: (exp: ExpressionNode, context: TransformContext) => boolean; +export declare function advancePositionWithClone(pos: Position, source: string, numberOfCharacters?: number): Position; +export declare function advancePositionWithMutation(pos: Position, source: string, numberOfCharacters?: number): Position; +export declare function assert(condition: boolean, msg?: string): void; +export declare function findDir(node: ElementNode, name: string | RegExp, allowEmpty?: boolean): DirectiveNode | undefined; +export declare function findProp(node: ElementNode, name: string, dynamicOnly?: boolean, allowEmpty?: boolean): ElementNode['props'][0] | undefined; +export declare function isStaticArgOf(arg: DirectiveNode['arg'], name: string): boolean; +export declare function hasDynamicKeyVBind(node: ElementNode): boolean; +export declare function isText(node: TemplateChildNode): node is TextNode | InterpolationNode; +export declare function isVPre(p: ElementNode['props'][0]): p is DirectiveNode; +export declare function isVSlot(p: ElementNode['props'][0]): p is DirectiveNode; +export declare function isTemplateNode(node: RootNode | TemplateChildNode): node is TemplateNode; +export declare function isSlotOutlet(node: RootNode | TemplateChildNode): node is SlotOutletNode; +export declare function injectProp(node: VNodeCall | RenderSlotCall, prop: Property, context: TransformContext): void; +export declare function toValidAssetId(name: string, type: 'component' | 'directive' | 'filter'): string; +export declare function hasScopeRef(node: TemplateChildNode | IfBranchNode | ExpressionNode | CacheExpression | undefined, ids: TransformContext['identifiers']): boolean; +export declare function getMemoedVNodeCall(node: BlockCodegenNode | MemoExpression): VNodeCall | RenderSlotCall; +export declare const forAliasRE: RegExp; + +/** + * Return value indicates whether the AST walked can be a constant + */ +export declare function walkIdentifiers(root: Node$1, onIdentifier: (node: Identifier, parent: Node$1 | null, parentStack: Node$1[], isReference: boolean, isLocal: boolean) => void, includeAll?: boolean, parentStack?: Node$1[], knownIds?: Record<string, number>): void; +export declare function isReferencedIdentifier(id: Identifier, parent: Node$1 | null, parentStack: Node$1[]): boolean; +export declare function isInDestructureAssignment(parent: Node$1, parentStack: Node$1[]): boolean; +export declare function isInNewExpression(parentStack: Node$1[]): boolean; +export declare function walkFunctionParams(node: Function, onIdent: (id: Identifier) => void): void; +export declare function walkBlockDeclarations(block: BlockStatement$1 | Program, onIdent: (node: Identifier) => void): void; +export declare function extractIdentifiers(param: Node$1, nodes?: Identifier[]): Identifier[]; +export declare const isFunctionType: (node: Node$1) => node is Function; +export declare const isStaticProperty: (node: Node$1) => node is ObjectProperty; +export declare const isStaticPropertyKey: (node: Node$1, parent: Node$1) => boolean; +export declare const TS_NODE_TYPES: string[]; +export declare function unwrapTSNode(node: Node$1): Node$1; + +export declare const transformModel: DirectiveTransform; + +export declare const transformOn: DirectiveTransform; + +export declare const transformBind: DirectiveTransform; + +export declare const noopDirectiveTransform: DirectiveTransform; + +export declare function processIf(node: ElementNode, dir: DirectiveNode, context: TransformContext, processCodegen?: (node: IfNode, branch: IfBranchNode, isRoot: boolean) => (() => void) | undefined): (() => void) | undefined; + +export declare function processFor(node: ElementNode, dir: DirectiveNode, context: TransformContext, processCodegen?: (forNode: ForNode) => (() => void) | undefined): (() => void) | undefined; +export declare function createForLoopParams({ value, key, index }: ForParseResult, memoArgs?: ExpressionNode[]): ExpressionNode[]; + +export declare const transformExpression: NodeTransform; +export declare function processExpression(node: SimpleExpressionNode, context: TransformContext, asParams?: boolean, asRawStatements?: boolean, localVars?: Record<string, number>): ExpressionNode; +export declare function stringifyExpression(exp: ExpressionNode | string): string; + +export declare const trackSlotScopes: NodeTransform; +export declare const trackVForSlotScopes: NodeTransform; +export type SlotFnBuilder = (slotProps: ExpressionNode | undefined, vFor: DirectiveNode | undefined, slotChildren: TemplateChildNode[], loc: SourceLocation) => FunctionExpression; +export declare function buildSlots(node: ElementNode, context: TransformContext, buildSlotFn?: SlotFnBuilder): { + slots: SlotsExpression; + hasDynamicSlots: boolean; +}; + +interface SlotOutletProcessResult { + slotName: string | ExpressionNode; + slotProps: PropsExpression | undefined; +} +export declare function processSlotOutlet(node: SlotOutletNode, context: TransformContext): SlotOutletProcessResult; + +export declare function getConstantType(node: TemplateChildNode | SimpleExpressionNode | CacheExpression, context: TransformContext): ConstantTypes; + + diff --git a/node_modules/@vue/compiler-core/dist/compiler-core.esm-bundler.js b/node_modules/@vue/compiler-core/dist/compiler-core.esm-bundler.js new file mode 100644 index 0000000..b7bbc8a --- /dev/null +++ b/node_modules/@vue/compiler-core/dist/compiler-core.esm-bundler.js @@ -0,0 +1,5810 @@ +/** +* @vue/compiler-core v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +import { isString, NOOP, isObject, extend, NO, isSymbol, PatchFlagNames, isArray, capitalize, camelize, EMPTY_OBJ, slotFlagsText, isOn, isBuiltInDirective, isReservedProp, toHandlerKey } from '@vue/shared'; +export { generateCodeFrame } from '@vue/shared'; + +const FRAGMENT = Symbol(!!(process.env.NODE_ENV !== "production") ? `Fragment` : ``); +const TELEPORT = Symbol(!!(process.env.NODE_ENV !== "production") ? `Teleport` : ``); +const SUSPENSE = Symbol(!!(process.env.NODE_ENV !== "production") ? `Suspense` : ``); +const KEEP_ALIVE = Symbol(!!(process.env.NODE_ENV !== "production") ? `KeepAlive` : ``); +const BASE_TRANSITION = Symbol( + !!(process.env.NODE_ENV !== "production") ? `BaseTransition` : `` +); +const OPEN_BLOCK = Symbol(!!(process.env.NODE_ENV !== "production") ? `openBlock` : ``); +const CREATE_BLOCK = Symbol(!!(process.env.NODE_ENV !== "production") ? `createBlock` : ``); +const CREATE_ELEMENT_BLOCK = Symbol( + !!(process.env.NODE_ENV !== "production") ? `createElementBlock` : `` +); +const CREATE_VNODE = Symbol(!!(process.env.NODE_ENV !== "production") ? `createVNode` : ``); +const CREATE_ELEMENT_VNODE = Symbol( + !!(process.env.NODE_ENV !== "production") ? `createElementVNode` : `` +); +const CREATE_COMMENT = Symbol( + !!(process.env.NODE_ENV !== "production") ? `createCommentVNode` : `` +); +const CREATE_TEXT = Symbol( + !!(process.env.NODE_ENV !== "production") ? `createTextVNode` : `` +); +const CREATE_STATIC = Symbol( + !!(process.env.NODE_ENV !== "production") ? `createStaticVNode` : `` +); +const RESOLVE_COMPONENT = Symbol( + !!(process.env.NODE_ENV !== "production") ? `resolveComponent` : `` +); +const RESOLVE_DYNAMIC_COMPONENT = Symbol( + !!(process.env.NODE_ENV !== "production") ? `resolveDynamicComponent` : `` +); +const RESOLVE_DIRECTIVE = Symbol( + !!(process.env.NODE_ENV !== "production") ? `resolveDirective` : `` +); +const RESOLVE_FILTER = Symbol( + !!(process.env.NODE_ENV !== "production") ? `resolveFilter` : `` +); +const WITH_DIRECTIVES = Symbol( + !!(process.env.NODE_ENV !== "production") ? `withDirectives` : `` +); +const RENDER_LIST = Symbol(!!(process.env.NODE_ENV !== "production") ? `renderList` : ``); +const RENDER_SLOT = Symbol(!!(process.env.NODE_ENV !== "production") ? `renderSlot` : ``); +const CREATE_SLOTS = Symbol(!!(process.env.NODE_ENV !== "production") ? `createSlots` : ``); +const TO_DISPLAY_STRING = Symbol( + !!(process.env.NODE_ENV !== "production") ? `toDisplayString` : `` +); +const MERGE_PROPS = Symbol(!!(process.env.NODE_ENV !== "production") ? `mergeProps` : ``); +const NORMALIZE_CLASS = Symbol( + !!(process.env.NODE_ENV !== "production") ? `normalizeClass` : `` +); +const NORMALIZE_STYLE = Symbol( + !!(process.env.NODE_ENV !== "production") ? `normalizeStyle` : `` +); +const NORMALIZE_PROPS = Symbol( + !!(process.env.NODE_ENV !== "production") ? `normalizeProps` : `` +); +const GUARD_REACTIVE_PROPS = Symbol( + !!(process.env.NODE_ENV !== "production") ? `guardReactiveProps` : `` +); +const TO_HANDLERS = Symbol(!!(process.env.NODE_ENV !== "production") ? `toHandlers` : ``); +const CAMELIZE = Symbol(!!(process.env.NODE_ENV !== "production") ? `camelize` : ``); +const CAPITALIZE = Symbol(!!(process.env.NODE_ENV !== "production") ? `capitalize` : ``); +const TO_HANDLER_KEY = Symbol( + !!(process.env.NODE_ENV !== "production") ? `toHandlerKey` : `` +); +const SET_BLOCK_TRACKING = Symbol( + !!(process.env.NODE_ENV !== "production") ? `setBlockTracking` : `` +); +const PUSH_SCOPE_ID = Symbol(!!(process.env.NODE_ENV !== "production") ? `pushScopeId` : ``); +const POP_SCOPE_ID = Symbol(!!(process.env.NODE_ENV !== "production") ? `popScopeId` : ``); +const WITH_CTX = Symbol(!!(process.env.NODE_ENV !== "production") ? `withCtx` : ``); +const UNREF = Symbol(!!(process.env.NODE_ENV !== "production") ? `unref` : ``); +const IS_REF = Symbol(!!(process.env.NODE_ENV !== "production") ? `isRef` : ``); +const WITH_MEMO = Symbol(!!(process.env.NODE_ENV !== "production") ? `withMemo` : ``); +const IS_MEMO_SAME = Symbol(!!(process.env.NODE_ENV !== "production") ? `isMemoSame` : ``); +const helperNameMap = { + [FRAGMENT]: `Fragment`, + [TELEPORT]: `Teleport`, + [SUSPENSE]: `Suspense`, + [KEEP_ALIVE]: `KeepAlive`, + [BASE_TRANSITION]: `BaseTransition`, + [OPEN_BLOCK]: `openBlock`, + [CREATE_BLOCK]: `createBlock`, + [CREATE_ELEMENT_BLOCK]: `createElementBlock`, + [CREATE_VNODE]: `createVNode`, + [CREATE_ELEMENT_VNODE]: `createElementVNode`, + [CREATE_COMMENT]: `createCommentVNode`, + [CREATE_TEXT]: `createTextVNode`, + [CREATE_STATIC]: `createStaticVNode`, + [RESOLVE_COMPONENT]: `resolveComponent`, + [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`, + [RESOLVE_DIRECTIVE]: `resolveDirective`, + [RESOLVE_FILTER]: `resolveFilter`, + [WITH_DIRECTIVES]: `withDirectives`, + [RENDER_LIST]: `renderList`, + [RENDER_SLOT]: `renderSlot`, + [CREATE_SLOTS]: `createSlots`, + [TO_DISPLAY_STRING]: `toDisplayString`, + [MERGE_PROPS]: `mergeProps`, + [NORMALIZE_CLASS]: `normalizeClass`, + [NORMALIZE_STYLE]: `normalizeStyle`, + [NORMALIZE_PROPS]: `normalizeProps`, + [GUARD_REACTIVE_PROPS]: `guardReactiveProps`, + [TO_HANDLERS]: `toHandlers`, + [CAMELIZE]: `camelize`, + [CAPITALIZE]: `capitalize`, + [TO_HANDLER_KEY]: `toHandlerKey`, + [SET_BLOCK_TRACKING]: `setBlockTracking`, + [PUSH_SCOPE_ID]: `pushScopeId`, + [POP_SCOPE_ID]: `popScopeId`, + [WITH_CTX]: `withCtx`, + [UNREF]: `unref`, + [IS_REF]: `isRef`, + [WITH_MEMO]: `withMemo`, + [IS_MEMO_SAME]: `isMemoSame` +}; +function registerRuntimeHelpers(helpers) { + Object.getOwnPropertySymbols(helpers).forEach((s) => { + helperNameMap[s] = helpers[s]; + }); +} + +const Namespaces = { + "HTML": 0, + "0": "HTML", + "SVG": 1, + "1": "SVG", + "MATH_ML": 2, + "2": "MATH_ML" +}; +const NodeTypes = { + "ROOT": 0, + "0": "ROOT", + "ELEMENT": 1, + "1": "ELEMENT", + "TEXT": 2, + "2": "TEXT", + "COMMENT": 3, + "3": "COMMENT", + "SIMPLE_EXPRESSION": 4, + "4": "SIMPLE_EXPRESSION", + "INTERPOLATION": 5, + "5": "INTERPOLATION", + "ATTRIBUTE": 6, + "6": "ATTRIBUTE", + "DIRECTIVE": 7, + "7": "DIRECTIVE", + "COMPOUND_EXPRESSION": 8, + "8": "COMPOUND_EXPRESSION", + "IF": 9, + "9": "IF", + "IF_BRANCH": 10, + "10": "IF_BRANCH", + "FOR": 11, + "11": "FOR", + "TEXT_CALL": 12, + "12": "TEXT_CALL", + "VNODE_CALL": 13, + "13": "VNODE_CALL", + "JS_CALL_EXPRESSION": 14, + "14": "JS_CALL_EXPRESSION", + "JS_OBJECT_EXPRESSION": 15, + "15": "JS_OBJECT_EXPRESSION", + "JS_PROPERTY": 16, + "16": "JS_PROPERTY", + "JS_ARRAY_EXPRESSION": 17, + "17": "JS_ARRAY_EXPRESSION", + "JS_FUNCTION_EXPRESSION": 18, + "18": "JS_FUNCTION_EXPRESSION", + "JS_CONDITIONAL_EXPRESSION": 19, + "19": "JS_CONDITIONAL_EXPRESSION", + "JS_CACHE_EXPRESSION": 20, + "20": "JS_CACHE_EXPRESSION", + "JS_BLOCK_STATEMENT": 21, + "21": "JS_BLOCK_STATEMENT", + "JS_TEMPLATE_LITERAL": 22, + "22": "JS_TEMPLATE_LITERAL", + "JS_IF_STATEMENT": 23, + "23": "JS_IF_STATEMENT", + "JS_ASSIGNMENT_EXPRESSION": 24, + "24": "JS_ASSIGNMENT_EXPRESSION", + "JS_SEQUENCE_EXPRESSION": 25, + "25": "JS_SEQUENCE_EXPRESSION", + "JS_RETURN_STATEMENT": 26, + "26": "JS_RETURN_STATEMENT" +}; +const ElementTypes = { + "ELEMENT": 0, + "0": "ELEMENT", + "COMPONENT": 1, + "1": "COMPONENT", + "SLOT": 2, + "2": "SLOT", + "TEMPLATE": 3, + "3": "TEMPLATE" +}; +const ConstantTypes = { + "NOT_CONSTANT": 0, + "0": "NOT_CONSTANT", + "CAN_SKIP_PATCH": 1, + "1": "CAN_SKIP_PATCH", + "CAN_CACHE": 2, + "2": "CAN_CACHE", + "CAN_STRINGIFY": 3, + "3": "CAN_STRINGIFY" +}; +const locStub = { + start: { line: 1, column: 1, offset: 0 }, + end: { line: 1, column: 1, offset: 0 }, + source: "" +}; +function createRoot(children, source = "") { + return { + type: 0, + source, + children, + helpers: /* @__PURE__ */ new Set(), + components: [], + directives: [], + hoists: [], + imports: [], + cached: [], + temps: 0, + codegenNode: void 0, + loc: locStub + }; +} +function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) { + if (context) { + if (isBlock) { + context.helper(OPEN_BLOCK); + context.helper(getVNodeBlockHelper(context.inSSR, isComponent)); + } else { + context.helper(getVNodeHelper(context.inSSR, isComponent)); + } + if (directives) { + context.helper(WITH_DIRECTIVES); + } + } + return { + type: 13, + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent, + loc + }; +} +function createArrayExpression(elements, loc = locStub) { + return { + type: 17, + loc, + elements + }; +} +function createObjectExpression(properties, loc = locStub) { + return { + type: 15, + loc, + properties + }; +} +function createObjectProperty(key, value) { + return { + type: 16, + loc: locStub, + key: isString(key) ? createSimpleExpression(key, true) : key, + value + }; +} +function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) { + return { + type: 4, + loc, + content, + isStatic, + constType: isStatic ? 3 : constType + }; +} +function createInterpolation(content, loc) { + return { + type: 5, + loc, + content: isString(content) ? createSimpleExpression(content, false, loc) : content + }; +} +function createCompoundExpression(children, loc = locStub) { + return { + type: 8, + loc, + children + }; +} +function createCallExpression(callee, args = [], loc = locStub) { + return { + type: 14, + loc, + callee, + arguments: args + }; +} +function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) { + return { + type: 18, + params, + returns, + newline, + isSlot, + loc + }; +} +function createConditionalExpression(test, consequent, alternate, newline = true) { + return { + type: 19, + test, + consequent, + alternate, + newline, + loc: locStub + }; +} +function createCacheExpression(index, value, needPauseTracking = false, inVOnce = false) { + return { + type: 20, + index, + value, + needPauseTracking, + inVOnce, + needArraySpread: false, + loc: locStub + }; +} +function createBlockStatement(body) { + return { + type: 21, + body, + loc: locStub + }; +} +function createTemplateLiteral(elements) { + return { + type: 22, + elements, + loc: locStub + }; +} +function createIfStatement(test, consequent, alternate) { + return { + type: 23, + test, + consequent, + alternate, + loc: locStub + }; +} +function createAssignmentExpression(left, right) { + return { + type: 24, + left, + right, + loc: locStub + }; +} +function createSequenceExpression(expressions) { + return { + type: 25, + expressions, + loc: locStub + }; +} +function createReturnStatement(returns) { + return { + type: 26, + returns, + loc: locStub + }; +} +function getVNodeHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE; +} +function getVNodeBlockHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK; +} +function convertToBlock(node, { helper, removeHelper, inSSR }) { + if (!node.isBlock) { + node.isBlock = true; + removeHelper(getVNodeHelper(inSSR, node.isComponent)); + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(inSSR, node.isComponent)); + } +} + +const defaultDelimitersOpen = new Uint8Array([123, 123]); +const defaultDelimitersClose = new Uint8Array([125, 125]); +function isTagStartChar(c) { + return c >= 97 && c <= 122 || c >= 65 && c <= 90; +} +function isWhitespace(c) { + return c === 32 || c === 10 || c === 9 || c === 12 || c === 13; +} +function isEndOfTagSection(c) { + return c === 47 || c === 62 || isWhitespace(c); +} +function toCharCodes(str) { + const ret = new Uint8Array(str.length); + for (let i = 0; i < str.length; i++) { + ret[i] = str.charCodeAt(i); + } + return ret; +} +const Sequences = { + Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]), + // CDATA[ + CdataEnd: new Uint8Array([93, 93, 62]), + // ]]> + CommentEnd: new Uint8Array([45, 45, 62]), + // `-->` + ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), + // `<\/script` + StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), + // `</style` + TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]), + // `</title` + TextareaEnd: new Uint8Array([ + 60, + 47, + 116, + 101, + 120, + 116, + 97, + 114, + 101, + 97 + ]) + // `</textarea +}; +class Tokenizer { + constructor(stack, cbs) { + this.stack = stack; + this.cbs = cbs; + /** The current state the tokenizer is in. */ + this.state = 1; + /** The read buffer. */ + this.buffer = ""; + /** The beginning of the section that is currently being read. */ + this.sectionStart = 0; + /** The index within the buffer that we are currently looking at. */ + this.index = 0; + /** The start of the last entity. */ + this.entityStart = 0; + /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */ + this.baseState = 1; + /** For special parsing behavior inside of script and style tags. */ + this.inRCDATA = false; + /** For disabling RCDATA tags handling */ + this.inXML = false; + /** For disabling interpolation parsing in v-pre */ + this.inVPre = false; + /** Record newline positions for fast line / column calculation */ + this.newlines = []; + this.mode = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + this.delimiterIndex = -1; + this.currentSequence = void 0; + this.sequenceIndex = 0; + } + get inSFCRoot() { + return this.mode === 2 && this.stack.length === 0; + } + reset() { + this.state = 1; + this.mode = 0; + this.buffer = ""; + this.sectionStart = 0; + this.index = 0; + this.baseState = 1; + this.inRCDATA = false; + this.currentSequence = void 0; + this.newlines.length = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + } + /** + * Generate Position object with line / column information using recorded + * newline positions. We know the index is always going to be an already + * processed index, so all the newlines up to this index should have been + * recorded. + */ + getPos(index) { + let line = 1; + let column = index + 1; + for (let i = this.newlines.length - 1; i >= 0; i--) { + const newlineIndex = this.newlines[i]; + if (index > newlineIndex) { + line = i + 2; + column = index - newlineIndex; + break; + } + } + return { + column, + line, + offset: index + }; + } + peek() { + return this.buffer.charCodeAt(this.index + 1); + } + stateText(c) { + if (c === 60) { + if (this.index > this.sectionStart) { + this.cbs.ontext(this.sectionStart, this.index); + } + this.state = 5; + this.sectionStart = this.index; + } else if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } + stateInterpolationOpen(c) { + if (c === this.delimiterOpen[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterOpen.length - 1) { + const start = this.index + 1 - this.delimiterOpen.length; + if (start > this.sectionStart) { + this.cbs.ontext(this.sectionStart, start); + } + this.state = 3; + this.sectionStart = start; + } else { + this.delimiterIndex++; + } + } else if (this.inRCDATA) { + this.state = 32; + this.stateInRCDATA(c); + } else { + this.state = 1; + this.stateText(c); + } + } + stateInterpolation(c) { + if (c === this.delimiterClose[0]) { + this.state = 4; + this.delimiterIndex = 0; + this.stateInterpolationClose(c); + } + } + stateInterpolationClose(c) { + if (c === this.delimiterClose[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterClose.length - 1) { + this.cbs.oninterpolation(this.sectionStart, this.index + 1); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else { + this.delimiterIndex++; + } + } else { + this.state = 3; + this.stateInterpolation(c); + } + } + stateSpecialStartSequence(c) { + const isEnd = this.sequenceIndex === this.currentSequence.length; + const isMatch = isEnd ? ( + // If we are at the end of the sequence, make sure the tag name has ended + isEndOfTagSection(c) + ) : ( + // Otherwise, do a case-insensitive comparison + (c | 32) === this.currentSequence[this.sequenceIndex] + ); + if (!isMatch) { + this.inRCDATA = false; + } else if (!isEnd) { + this.sequenceIndex++; + return; + } + this.sequenceIndex = 0; + this.state = 6; + this.stateInTagName(c); + } + /** Look for an end tag. For <title> and <textarea>, also decode entities. */ + stateInRCDATA(c) { + if (this.sequenceIndex === this.currentSequence.length) { + if (c === 62 || isWhitespace(c)) { + const endOfText = this.index - this.currentSequence.length; + if (this.sectionStart < endOfText) { + const actualIndex = this.index; + this.index = endOfText; + this.cbs.ontext(this.sectionStart, endOfText); + this.index = actualIndex; + } + this.sectionStart = endOfText + 2; + this.stateInClosingTagName(c); + this.inRCDATA = false; + return; + } + this.sequenceIndex = 0; + } + if ((c | 32) === this.currentSequence[this.sequenceIndex]) { + this.sequenceIndex += 1; + } else if (this.sequenceIndex === 0) { + if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd && !this.inSFCRoot) { + if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } else if (this.fastForwardTo(60)) { + this.sequenceIndex = 1; + } + } else { + this.sequenceIndex = Number(c === 60); + } + } + stateCDATASequence(c) { + if (c === Sequences.Cdata[this.sequenceIndex]) { + if (++this.sequenceIndex === Sequences.Cdata.length) { + this.state = 28; + this.currentSequence = Sequences.CdataEnd; + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + } + } else { + this.sequenceIndex = 0; + this.state = 23; + this.stateInDeclaration(c); + } + } + /** + * When we wait for one specific character, we can speed things up + * by skipping through the buffer until we find it. + * + * @returns Whether the character was found. + */ + fastForwardTo(c) { + while (++this.index < this.buffer.length) { + const cc = this.buffer.charCodeAt(this.index); + if (cc === 10) { + this.newlines.push(this.index); + } + if (cc === c) { + return true; + } + } + this.index = this.buffer.length - 1; + return false; + } + /** + * Comments and CDATA end with `-->` and `]]>`. + * + * Their common qualities are: + * - Their end sequences have a distinct character they start with. + * - That character is then repeated, so we have to check multiple repeats. + * - All characters but the start character of the sequence can be skipped. + */ + stateInCommentLike(c) { + if (c === this.currentSequence[this.sequenceIndex]) { + if (++this.sequenceIndex === this.currentSequence.length) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, this.index - 2); + } else { + this.cbs.oncomment(this.sectionStart, this.index - 2); + } + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + this.state = 1; + } + } else if (this.sequenceIndex === 0) { + if (this.fastForwardTo(this.currentSequence[0])) { + this.sequenceIndex = 1; + } + } else if (c !== this.currentSequence[this.sequenceIndex - 1]) { + this.sequenceIndex = 0; + } + } + startSpecial(sequence, offset) { + this.enterRCDATA(sequence, offset); + this.state = 31; + } + enterRCDATA(sequence, offset) { + this.inRCDATA = true; + this.currentSequence = sequence; + this.sequenceIndex = offset; + } + stateBeforeTagName(c) { + if (c === 33) { + this.state = 22; + this.sectionStart = this.index + 1; + } else if (c === 63) { + this.state = 24; + this.sectionStart = this.index + 1; + } else if (isTagStartChar(c)) { + this.sectionStart = this.index; + if (this.mode === 0) { + this.state = 6; + } else if (this.inSFCRoot) { + this.state = 34; + } else if (!this.inXML) { + if (c === 116) { + this.state = 30; + } else { + this.state = c === 115 ? 29 : 6; + } + } else { + this.state = 6; + } + } else if (c === 47) { + this.state = 8; + } else { + this.state = 1; + this.stateText(c); + } + } + stateInTagName(c) { + if (isEndOfTagSection(c)) { + this.handleTagName(c); + } + } + stateInSFCRootTagName(c) { + if (isEndOfTagSection(c)) { + const tag = this.buffer.slice(this.sectionStart, this.index); + if (tag !== "template") { + this.enterRCDATA(toCharCodes(`</` + tag), 0); + } + this.handleTagName(c); + } + } + handleTagName(c) { + this.cbs.onopentagname(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } + stateBeforeClosingTagName(c) { + if (isWhitespace(c)) ; else if (c === 62) { + if (!!(process.env.NODE_ENV !== "production") || false) { + this.cbs.onerr(14, this.index); + } + this.state = 1; + this.sectionStart = this.index + 1; + } else { + this.state = isTagStartChar(c) ? 9 : 27; + this.sectionStart = this.index; + } + } + stateInClosingTagName(c) { + if (c === 62 || isWhitespace(c)) { + this.cbs.onclosetag(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 10; + this.stateAfterClosingTagName(c); + } + } + stateAfterClosingTagName(c) { + if (c === 62) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeAttrName(c) { + if (c === 62) { + this.cbs.onopentagend(this.index); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else if (c === 47) { + this.state = 7; + if ((!!(process.env.NODE_ENV !== "production") || false) && this.peek() !== 62) { + this.cbs.onerr(22, this.index); + } + } else if (c === 60 && this.peek() === 47) { + this.cbs.onopentagend(this.index); + this.state = 5; + this.sectionStart = this.index; + } else if (!isWhitespace(c)) { + if ((!!(process.env.NODE_ENV !== "production") || false) && c === 61) { + this.cbs.onerr( + 19, + this.index + ); + } + this.handleAttrStart(c); + } + } + handleAttrStart(c) { + if (c === 118 && this.peek() === 45) { + this.state = 13; + this.sectionStart = this.index; + } else if (c === 46 || c === 58 || c === 64 || c === 35) { + this.cbs.ondirname(this.index, this.index + 1); + this.state = 14; + this.sectionStart = this.index + 1; + } else { + this.state = 12; + this.sectionStart = this.index; + } + } + stateInSelfClosingTag(c) { + if (c === 62) { + this.cbs.onselfclosingtag(this.index); + this.state = 1; + this.sectionStart = this.index + 1; + this.inRCDATA = false; + } else if (!isWhitespace(c)) { + this.state = 11; + this.stateBeforeAttrName(c); + } + } + stateInAttrName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.onattribname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if ((!!(process.env.NODE_ENV !== "production") || false) && (c === 34 || c === 39 || c === 60)) { + this.cbs.onerr( + 17, + this.index + ); + } + } + stateInDirName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 58) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 14; + this.sectionStart = this.index + 1; + } else if (c === 46) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDirArg(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 91) { + this.state = 15; + } else if (c === 46) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDynamicDirArg(c) { + if (c === 93) { + this.state = 14; + } else if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index + 1); + this.handleAttrNameEnd(c); + if (!!(process.env.NODE_ENV !== "production") || false) { + this.cbs.onerr( + 27, + this.index + ); + } + } + } + stateInDirModifier(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 46) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.sectionStart = this.index + 1; + } + } + handleAttrNameEnd(c) { + this.sectionStart = this.index; + this.state = 17; + this.cbs.onattribnameend(this.index); + this.stateAfterAttrName(c); + } + stateAfterAttrName(c) { + if (c === 61) { + this.state = 18; + } else if (c === 47 || c === 62) { + this.cbs.onattribend(0, this.sectionStart); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } else if (!isWhitespace(c)) { + this.cbs.onattribend(0, this.sectionStart); + this.handleAttrStart(c); + } + } + stateBeforeAttrValue(c) { + if (c === 34) { + this.state = 19; + this.sectionStart = this.index + 1; + } else if (c === 39) { + this.state = 20; + this.sectionStart = this.index + 1; + } else if (!isWhitespace(c)) { + this.sectionStart = this.index; + this.state = 21; + this.stateInAttrValueNoQuotes(c); + } + } + handleInAttrValue(c, quote) { + if (c === quote || this.fastForwardTo(quote)) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend( + quote === 34 ? 3 : 2, + this.index + 1 + ); + this.state = 11; + } + } + stateInAttrValueDoubleQuotes(c) { + this.handleInAttrValue(c, 34); + } + stateInAttrValueSingleQuotes(c) { + this.handleInAttrValue(c, 39); + } + stateInAttrValueNoQuotes(c) { + if (isWhitespace(c) || c === 62) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend(1, this.index); + this.state = 11; + this.stateBeforeAttrName(c); + } else if ((!!(process.env.NODE_ENV !== "production") || false) && c === 34 || c === 39 || c === 60 || c === 61 || c === 96) { + this.cbs.onerr( + 18, + this.index + ); + } else ; + } + stateBeforeDeclaration(c) { + if (c === 91) { + this.state = 26; + this.sequenceIndex = 0; + } else { + this.state = c === 45 ? 25 : 23; + } + } + stateInDeclaration(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateInProcessingInstruction(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.onprocessinginstruction(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeComment(c) { + if (c === 45) { + this.state = 28; + this.currentSequence = Sequences.CommentEnd; + this.sequenceIndex = 2; + this.sectionStart = this.index + 1; + } else { + this.state = 23; + } + } + stateInSpecialComment(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.oncomment(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeSpecialS(c) { + if (c === Sequences.ScriptEnd[3]) { + this.startSpecial(Sequences.ScriptEnd, 4); + } else if (c === Sequences.StyleEnd[3]) { + this.startSpecial(Sequences.StyleEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + stateBeforeSpecialT(c) { + if (c === Sequences.TitleEnd[3]) { + this.startSpecial(Sequences.TitleEnd, 4); + } else if (c === Sequences.TextareaEnd[3]) { + this.startSpecial(Sequences.TextareaEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + startEntity() { + } + stateInEntity() { + } + /** + * Iterates through the buffer, calling the function corresponding to the current state. + * + * States that are more likely to be hit are higher up, as a performance improvement. + */ + parse(input) { + this.buffer = input; + while (this.index < this.buffer.length) { + const c = this.buffer.charCodeAt(this.index); + if (c === 10 && this.state !== 33) { + this.newlines.push(this.index); + } + switch (this.state) { + case 1: { + this.stateText(c); + break; + } + case 2: { + this.stateInterpolationOpen(c); + break; + } + case 3: { + this.stateInterpolation(c); + break; + } + case 4: { + this.stateInterpolationClose(c); + break; + } + case 31: { + this.stateSpecialStartSequence(c); + break; + } + case 32: { + this.stateInRCDATA(c); + break; + } + case 26: { + this.stateCDATASequence(c); + break; + } + case 19: { + this.stateInAttrValueDoubleQuotes(c); + break; + } + case 12: { + this.stateInAttrName(c); + break; + } + case 13: { + this.stateInDirName(c); + break; + } + case 14: { + this.stateInDirArg(c); + break; + } + case 15: { + this.stateInDynamicDirArg(c); + break; + } + case 16: { + this.stateInDirModifier(c); + break; + } + case 28: { + this.stateInCommentLike(c); + break; + } + case 27: { + this.stateInSpecialComment(c); + break; + } + case 11: { + this.stateBeforeAttrName(c); + break; + } + case 6: { + this.stateInTagName(c); + break; + } + case 34: { + this.stateInSFCRootTagName(c); + break; + } + case 9: { + this.stateInClosingTagName(c); + break; + } + case 5: { + this.stateBeforeTagName(c); + break; + } + case 17: { + this.stateAfterAttrName(c); + break; + } + case 20: { + this.stateInAttrValueSingleQuotes(c); + break; + } + case 18: { + this.stateBeforeAttrValue(c); + break; + } + case 8: { + this.stateBeforeClosingTagName(c); + break; + } + case 10: { + this.stateAfterClosingTagName(c); + break; + } + case 29: { + this.stateBeforeSpecialS(c); + break; + } + case 30: { + this.stateBeforeSpecialT(c); + break; + } + case 21: { + this.stateInAttrValueNoQuotes(c); + break; + } + case 7: { + this.stateInSelfClosingTag(c); + break; + } + case 23: { + this.stateInDeclaration(c); + break; + } + case 22: { + this.stateBeforeDeclaration(c); + break; + } + case 25: { + this.stateBeforeComment(c); + break; + } + case 24: { + this.stateInProcessingInstruction(c); + break; + } + case 33: { + this.stateInEntity(); + break; + } + } + this.index++; + } + this.cleanup(); + this.finish(); + } + /** + * Remove data that has already been consumed from the buffer. + */ + cleanup() { + if (this.sectionStart !== this.index) { + if (this.state === 1 || this.state === 32 && this.sequenceIndex === 0) { + this.cbs.ontext(this.sectionStart, this.index); + this.sectionStart = this.index; + } else if (this.state === 19 || this.state === 20 || this.state === 21) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = this.index; + } + } + } + finish() { + this.handleTrailingData(); + this.cbs.onend(); + } + /** Handle any trailing data. */ + handleTrailingData() { + const endIndex = this.buffer.length; + if (this.sectionStart >= endIndex) { + return; + } + if (this.state === 28) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, endIndex); + } else { + this.cbs.oncomment(this.sectionStart, endIndex); + } + } else if (this.state === 6 || this.state === 11 || this.state === 18 || this.state === 17 || this.state === 12 || this.state === 13 || this.state === 14 || this.state === 15 || this.state === 16 || this.state === 20 || this.state === 19 || this.state === 21 || this.state === 9) ; else { + this.cbs.ontext(this.sectionStart, endIndex); + } + } + emitCodePoint(cp, consumed) { + } +} + +const CompilerDeprecationTypes = { + "COMPILER_IS_ON_ELEMENT": "COMPILER_IS_ON_ELEMENT", + "COMPILER_V_BIND_SYNC": "COMPILER_V_BIND_SYNC", + "COMPILER_V_BIND_OBJECT_ORDER": "COMPILER_V_BIND_OBJECT_ORDER", + "COMPILER_V_ON_NATIVE": "COMPILER_V_ON_NATIVE", + "COMPILER_V_IF_V_FOR_PRECEDENCE": "COMPILER_V_IF_V_FOR_PRECEDENCE", + "COMPILER_NATIVE_TEMPLATE": "COMPILER_NATIVE_TEMPLATE", + "COMPILER_INLINE_TEMPLATE": "COMPILER_INLINE_TEMPLATE", + "COMPILER_FILTERS": "COMPILER_FILTERS" +}; +const deprecationData = { + ["COMPILER_IS_ON_ELEMENT"]: { + message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`, + link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html` + }, + ["COMPILER_V_BIND_SYNC"]: { + message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html` + }, + ["COMPILER_V_BIND_OBJECT_ORDER"]: { + message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html` + }, + ["COMPILER_V_ON_NATIVE"]: { + message: `.native modifier for v-on has been removed as is no longer necessary.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html` + }, + ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: { + message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html` + }, + ["COMPILER_NATIVE_TEMPLATE"]: { + message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.` + }, + ["COMPILER_INLINE_TEMPLATE"]: { + message: `"inline-template" has been removed in Vue 3.`, + link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html` + }, + ["COMPILER_FILTERS"]: { + message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`, + link: `https://v3-migration.vuejs.org/breaking-changes/filters.html` + } +}; +function getCompatValue(key, { compatConfig }) { + const value = compatConfig && compatConfig[key]; + if (key === "MODE") { + return value || 3; + } else { + return value; + } +} +function isCompatEnabled(key, context) { + const mode = getCompatValue("MODE", context); + const value = getCompatValue(key, context); + return mode === 3 ? value === true : value !== false; +} +function checkCompatEnabled(key, context, loc, ...args) { + const enabled = isCompatEnabled(key, context); + if (!!(process.env.NODE_ENV !== "production") && enabled) { + warnDeprecation(key, context, loc, ...args); + } + return enabled; +} +function warnDeprecation(key, context, loc, ...args) { + const val = getCompatValue(key, context); + if (val === "suppress-warning") { + return; + } + const { message, link } = deprecationData[key]; + const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? ` + Details: ${link}` : ``}`; + const err = new SyntaxError(msg); + err.code = key; + if (loc) err.loc = loc; + context.onWarn(err); +} + +function defaultOnError(error) { + throw error; +} +function defaultOnWarn(msg) { + !!(process.env.NODE_ENV !== "production") && console.warn(`[Vue warn] ${msg.message}`); +} +function createCompilerError(code, loc, messages, additionalMessage) { + const msg = !!(process.env.NODE_ENV !== "production") || false ? (messages || errorMessages)[code] + (additionalMessage || ``) : `https://vuejs.org/error-reference/#compiler-${code}`; + const error = new SyntaxError(String(msg)); + error.code = code; + error.loc = loc; + return error; +} +const ErrorCodes = { + "ABRUPT_CLOSING_OF_EMPTY_COMMENT": 0, + "0": "ABRUPT_CLOSING_OF_EMPTY_COMMENT", + "CDATA_IN_HTML_CONTENT": 1, + "1": "CDATA_IN_HTML_CONTENT", + "DUPLICATE_ATTRIBUTE": 2, + "2": "DUPLICATE_ATTRIBUTE", + "END_TAG_WITH_ATTRIBUTES": 3, + "3": "END_TAG_WITH_ATTRIBUTES", + "END_TAG_WITH_TRAILING_SOLIDUS": 4, + "4": "END_TAG_WITH_TRAILING_SOLIDUS", + "EOF_BEFORE_TAG_NAME": 5, + "5": "EOF_BEFORE_TAG_NAME", + "EOF_IN_CDATA": 6, + "6": "EOF_IN_CDATA", + "EOF_IN_COMMENT": 7, + "7": "EOF_IN_COMMENT", + "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT": 8, + "8": "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT", + "EOF_IN_TAG": 9, + "9": "EOF_IN_TAG", + "INCORRECTLY_CLOSED_COMMENT": 10, + "10": "INCORRECTLY_CLOSED_COMMENT", + "INCORRECTLY_OPENED_COMMENT": 11, + "11": "INCORRECTLY_OPENED_COMMENT", + "INVALID_FIRST_CHARACTER_OF_TAG_NAME": 12, + "12": "INVALID_FIRST_CHARACTER_OF_TAG_NAME", + "MISSING_ATTRIBUTE_VALUE": 13, + "13": "MISSING_ATTRIBUTE_VALUE", + "MISSING_END_TAG_NAME": 14, + "14": "MISSING_END_TAG_NAME", + "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES": 15, + "15": "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES", + "NESTED_COMMENT": 16, + "16": "NESTED_COMMENT", + "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME": 17, + "17": "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME", + "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE": 18, + "18": "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE", + "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME": 19, + "19": "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME", + "UNEXPECTED_NULL_CHARACTER": 20, + "20": "UNEXPECTED_NULL_CHARACTER", + "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME": 21, + "21": "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME", + "UNEXPECTED_SOLIDUS_IN_TAG": 22, + "22": "UNEXPECTED_SOLIDUS_IN_TAG", + "X_INVALID_END_TAG": 23, + "23": "X_INVALID_END_TAG", + "X_MISSING_END_TAG": 24, + "24": "X_MISSING_END_TAG", + "X_MISSING_INTERPOLATION_END": 25, + "25": "X_MISSING_INTERPOLATION_END", + "X_MISSING_DIRECTIVE_NAME": 26, + "26": "X_MISSING_DIRECTIVE_NAME", + "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END": 27, + "27": "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END", + "X_V_IF_NO_EXPRESSION": 28, + "28": "X_V_IF_NO_EXPRESSION", + "X_V_IF_SAME_KEY": 29, + "29": "X_V_IF_SAME_KEY", + "X_V_ELSE_NO_ADJACENT_IF": 30, + "30": "X_V_ELSE_NO_ADJACENT_IF", + "X_V_FOR_NO_EXPRESSION": 31, + "31": "X_V_FOR_NO_EXPRESSION", + "X_V_FOR_MALFORMED_EXPRESSION": 32, + "32": "X_V_FOR_MALFORMED_EXPRESSION", + "X_V_FOR_TEMPLATE_KEY_PLACEMENT": 33, + "33": "X_V_FOR_TEMPLATE_KEY_PLACEMENT", + "X_V_BIND_NO_EXPRESSION": 34, + "34": "X_V_BIND_NO_EXPRESSION", + "X_V_ON_NO_EXPRESSION": 35, + "35": "X_V_ON_NO_EXPRESSION", + "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET": 36, + "36": "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET", + "X_V_SLOT_MIXED_SLOT_USAGE": 37, + "37": "X_V_SLOT_MIXED_SLOT_USAGE", + "X_V_SLOT_DUPLICATE_SLOT_NAMES": 38, + "38": "X_V_SLOT_DUPLICATE_SLOT_NAMES", + "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN": 39, + "39": "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN", + "X_V_SLOT_MISPLACED": 40, + "40": "X_V_SLOT_MISPLACED", + "X_V_MODEL_NO_EXPRESSION": 41, + "41": "X_V_MODEL_NO_EXPRESSION", + "X_V_MODEL_MALFORMED_EXPRESSION": 42, + "42": "X_V_MODEL_MALFORMED_EXPRESSION", + "X_V_MODEL_ON_SCOPE_VARIABLE": 43, + "43": "X_V_MODEL_ON_SCOPE_VARIABLE", + "X_V_MODEL_ON_PROPS": 44, + "44": "X_V_MODEL_ON_PROPS", + "X_INVALID_EXPRESSION": 45, + "45": "X_INVALID_EXPRESSION", + "X_KEEP_ALIVE_INVALID_CHILDREN": 46, + "46": "X_KEEP_ALIVE_INVALID_CHILDREN", + "X_PREFIX_ID_NOT_SUPPORTED": 47, + "47": "X_PREFIX_ID_NOT_SUPPORTED", + "X_MODULE_MODE_NOT_SUPPORTED": 48, + "48": "X_MODULE_MODE_NOT_SUPPORTED", + "X_CACHE_HANDLER_NOT_SUPPORTED": 49, + "49": "X_CACHE_HANDLER_NOT_SUPPORTED", + "X_SCOPE_ID_NOT_SUPPORTED": 50, + "50": "X_SCOPE_ID_NOT_SUPPORTED", + "X_VNODE_HOOKS": 51, + "51": "X_VNODE_HOOKS", + "X_V_BIND_INVALID_SAME_NAME_ARGUMENT": 52, + "52": "X_V_BIND_INVALID_SAME_NAME_ARGUMENT", + "__EXTEND_POINT__": 53, + "53": "__EXTEND_POINT__" +}; +const errorMessages = { + // parse errors + [0]: "Illegal comment.", + [1]: "CDATA section is allowed only in XML context.", + [2]: "Duplicate attribute.", + [3]: "End tag cannot have attributes.", + [4]: "Illegal '/' in tags.", + [5]: "Unexpected EOF in tag.", + [6]: "Unexpected EOF in CDATA section.", + [7]: "Unexpected EOF in comment.", + [8]: "Unexpected EOF in script.", + [9]: "Unexpected EOF in tag.", + [10]: "Incorrectly closed comment.", + [11]: "Incorrectly opened comment.", + [12]: "Illegal tag name. Use '<' to print '<'.", + [13]: "Attribute value was expected.", + [14]: "End tag name was expected.", + [15]: "Whitespace was expected.", + [16]: "Unexpected '<!--' in comment.", + [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`, + [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).", + [19]: "Attribute name cannot start with '='.", + [21]: "'<?' is allowed only in XML context.", + [20]: `Unexpected null character.`, + [22]: "Illegal '/' in tags.", + // Vue-specific parse errors + [23]: "Invalid end tag.", + [24]: "Element is missing end tag.", + [25]: "Interpolation end sign was not found.", + [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.", + [26]: "Legal directive name was expected.", + // transform errors + [28]: `v-if/v-else-if is missing expression.`, + [29]: `v-if/else branches must use unique keys.`, + [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`, + [31]: `v-for is missing expression.`, + [32]: `v-for has invalid expression.`, + [33]: `<template v-for> key should be placed on the <template> tag.`, + [34]: `v-bind is missing expression.`, + [52]: `v-bind with same-name shorthand only allows static argument.`, + [35]: `v-on is missing expression.`, + [36]: `Unexpected custom directive on <slot> outlet.`, + [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`, + [38]: `Duplicate slot names found. `, + [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`, + [40]: `v-slot can only be used on components or <template> tags.`, + [41]: `v-model is missing expression.`, + [42]: `v-model value must be a valid JavaScript member expression.`, + [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`, + [44]: `v-model cannot be used on a prop, because local prop bindings are not writable. +Use a v-bind binding combined with a v-on listener that emits update:x event instead.`, + [45]: `Error parsing JavaScript expression: `, + [46]: `<KeepAlive> expects exactly one child component.`, + [51]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`, + // generic errors + [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`, + [48]: `ES module mode is not supported in this build of compiler.`, + [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`, + [50]: `"scopeId" option is only supported in module mode.`, + // just to fulfill types + [53]: `` +}; + +function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) { + { + return; + } +} +function isReferencedIdentifier(id, parent, parentStack) { + { + return false; + } +} +function isInDestructureAssignment(parent, parentStack) { + if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "AssignmentExpression") { + return true; + } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) { + break; + } + } + } + return false; +} +function isInNewExpression(parentStack) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "NewExpression") { + return true; + } else if (p.type !== "MemberExpression") { + break; + } + } + return false; +} +function walkFunctionParams(node, onIdent) { + for (const p of node.params) { + for (const id of extractIdentifiers(p)) { + onIdent(id); + } + } +} +function walkBlockDeclarations(block, onIdent) { + for (const stmt of block.body) { + if (stmt.type === "VariableDeclaration") { + if (stmt.declare) continue; + for (const decl of stmt.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") { + if (stmt.declare || !stmt.id) continue; + onIdent(stmt.id); + } else if (isForStatement(stmt)) { + walkForStatement(stmt, true, onIdent); + } + } +} +function isForStatement(stmt) { + return stmt.type === "ForOfStatement" || stmt.type === "ForInStatement" || stmt.type === "ForStatement"; +} +function walkForStatement(stmt, isVar, onIdent) { + const variable = stmt.type === "ForStatement" ? stmt.init : stmt.left; + if (variable && variable.type === "VariableDeclaration" && (variable.kind === "var" ? isVar : !isVar)) { + for (const decl of variable.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } +} +function extractIdentifiers(param, nodes = []) { + switch (param.type) { + case "Identifier": + nodes.push(param); + break; + case "MemberExpression": + let object = param; + while (object.type === "MemberExpression") { + object = object.object; + } + nodes.push(object); + break; + case "ObjectPattern": + for (const prop of param.properties) { + if (prop.type === "RestElement") { + extractIdentifiers(prop.argument, nodes); + } else { + extractIdentifiers(prop.value, nodes); + } + } + break; + case "ArrayPattern": + param.elements.forEach((element) => { + if (element) extractIdentifiers(element, nodes); + }); + break; + case "RestElement": + extractIdentifiers(param.argument, nodes); + break; + case "AssignmentPattern": + extractIdentifiers(param.left, nodes); + break; + } + return nodes; +} +const isFunctionType = (node) => { + return /Function(?:Expression|Declaration)$|Method$/.test(node.type); +}; +const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed; +const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node; +const TS_NODE_TYPES = [ + "TSAsExpression", + // foo as number + "TSTypeAssertion", + // (<number>foo) + "TSNonNullExpression", + // foo! + "TSInstantiationExpression", + // foo<string> + "TSSatisfiesExpression" + // foo satisfies T +]; +function unwrapTSNode(node) { + if (TS_NODE_TYPES.includes(node.type)) { + return unwrapTSNode(node.expression); + } else { + return node; + } +} + +const isStaticExp = (p) => p.type === 4 && p.isStatic; +function isCoreComponent(tag) { + switch (tag) { + case "Teleport": + case "teleport": + return TELEPORT; + case "Suspense": + case "suspense": + return SUSPENSE; + case "KeepAlive": + case "keep-alive": + return KEEP_ALIVE; + case "BaseTransition": + case "base-transition": + return BASE_TRANSITION; + } +} +const nonIdentifierRE = /^$|^\d|[^\$\w\xA0-\uFFFF]/; +const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name); +const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/; +const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/; +const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g; +const getExpSource = (exp) => exp.type === 4 ? exp.content : exp.loc.source; +const isMemberExpressionBrowser = (exp) => { + const path = getExpSource(exp).trim().replace(whitespaceRE, (s) => s.trim()); + let state = 0 /* inMemberExp */; + let stateStack = []; + let currentOpenBracketCount = 0; + let currentOpenParensCount = 0; + let currentStringType = null; + for (let i = 0; i < path.length; i++) { + const char = path.charAt(i); + switch (state) { + case 0 /* inMemberExp */: + if (char === "[") { + stateStack.push(state); + state = 1 /* inBrackets */; + currentOpenBracketCount++; + } else if (char === "(") { + stateStack.push(state); + state = 2 /* inParens */; + currentOpenParensCount++; + } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) { + return false; + } + break; + case 1 /* inBrackets */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `[`) { + currentOpenBracketCount++; + } else if (char === `]`) { + if (!--currentOpenBracketCount) { + state = stateStack.pop(); + } + } + break; + case 2 /* inParens */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `(`) { + currentOpenParensCount++; + } else if (char === `)`) { + if (i === path.length - 1) { + return false; + } + if (!--currentOpenParensCount) { + state = stateStack.pop(); + } + } + break; + case 3 /* inString */: + if (char === currentStringType) { + state = stateStack.pop(); + currentStringType = null; + } + break; + } + } + return !currentOpenBracketCount && !currentOpenParensCount; +}; +const isMemberExpressionNode = NOOP ; +const isMemberExpression = isMemberExpressionBrowser ; +const fnExpRE = /^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/; +const isFnExpressionBrowser = (exp) => fnExpRE.test(getExpSource(exp)); +const isFnExpressionNode = NOOP ; +const isFnExpression = isFnExpressionBrowser ; +function advancePositionWithClone(pos, source, numberOfCharacters = source.length) { + return advancePositionWithMutation( + { + offset: pos.offset, + line: pos.line, + column: pos.column + }, + source, + numberOfCharacters + ); +} +function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) { + let linesCount = 0; + let lastNewLinePos = -1; + for (let i = 0; i < numberOfCharacters; i++) { + if (source.charCodeAt(i) === 10) { + linesCount++; + lastNewLinePos = i; + } + } + pos.offset += numberOfCharacters; + pos.line += linesCount; + pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos; + return pos; +} +function assert(condition, msg) { + if (!condition) { + throw new Error(msg || `unexpected compiler condition`); + } +} +function findDir(node, name, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (allowEmpty || p.exp) && (isString(name) ? p.name === name : name.test(p.name))) { + return p; + } + } +} +function findProp(node, name, dynamicOnly = false, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (dynamicOnly) continue; + if (p.name === name && (p.value || allowEmpty)) { + return p; + } + } else if (p.name === "bind" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) { + return p; + } + } +} +function isStaticArgOf(arg, name) { + return !!(arg && isStaticExp(arg) && arg.content === name); +} +function hasDynamicKeyVBind(node) { + return node.props.some( + (p) => p.type === 7 && p.name === "bind" && (!p.arg || // v-bind="obj" + p.arg.type !== 4 || // v-bind:[_ctx.foo] + !p.arg.isStatic) + // v-bind:[foo] + ); +} +function isText$1(node) { + return node.type === 5 || node.type === 2; +} +function isVPre(p) { + return p.type === 7 && p.name === "pre"; +} +function isVSlot(p) { + return p.type === 7 && p.name === "slot"; +} +function isTemplateNode(node) { + return node.type === 1 && node.tagType === 3; +} +function isSlotOutlet(node) { + return node.type === 1 && node.tagType === 2; +} +const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]); +function getUnnormalizedProps(props, callPath = []) { + if (props && !isString(props) && props.type === 14) { + const callee = props.callee; + if (!isString(callee) && propsHelperSet.has(callee)) { + return getUnnormalizedProps( + props.arguments[0], + callPath.concat(props) + ); + } + } + return [props, callPath]; +} +function injectProp(node, prop, context) { + let propsWithInjection; + let props = node.type === 13 ? node.props : node.arguments[2]; + let callPath = []; + let parentCall; + if (props && !isString(props) && props.type === 14) { + const ret = getUnnormalizedProps(props); + props = ret[0]; + callPath = ret[1]; + parentCall = callPath[callPath.length - 1]; + } + if (props == null || isString(props)) { + propsWithInjection = createObjectExpression([prop]); + } else if (props.type === 14) { + const first = props.arguments[0]; + if (!isString(first) && first.type === 15) { + if (!hasProp(prop, first)) { + first.properties.unshift(prop); + } + } else { + if (props.callee === TO_HANDLERS) { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + } else { + props.arguments.unshift(createObjectExpression([prop])); + } + } + !propsWithInjection && (propsWithInjection = props); + } else if (props.type === 15) { + if (!hasProp(prop, props)) { + props.properties.unshift(prop); + } + propsWithInjection = props; + } else { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) { + parentCall = callPath[callPath.length - 2]; + } + } + if (node.type === 13) { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.props = propsWithInjection; + } + } else { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.arguments[2] = propsWithInjection; + } + } +} +function hasProp(prop, props) { + let result = false; + if (prop.key.type === 4) { + const propKeyName = prop.key.content; + result = props.properties.some( + (p) => p.key.type === 4 && p.key.content === propKeyName + ); + } + return result; +} +function toValidAssetId(name, type) { + return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => { + return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString(); + })}`; +} +function hasScopeRef(node, ids) { + if (!node || Object.keys(ids).length === 0) { + return false; + } + switch (node.type) { + case 1: + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) { + return true; + } + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 11: + if (hasScopeRef(node.source, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 9: + return node.branches.some((b) => hasScopeRef(b, ids)); + case 10: + if (hasScopeRef(node.condition, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 4: + return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content]; + case 8: + return node.children.some((c) => isObject(c) && hasScopeRef(c, ids)); + case 5: + case 12: + return hasScopeRef(node.content, ids); + case 2: + case 3: + case 20: + return false; + default: + if (!!(process.env.NODE_ENV !== "production")) ; + return false; + } +} +function getMemoedVNodeCall(node) { + if (node.type === 14 && node.callee === WITH_MEMO) { + return node.arguments[1].returns; + } else { + return node; + } +} +const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/; + +const defaultParserOptions = { + parseMode: "base", + ns: 0, + delimiters: [`{{`, `}}`], + getNamespace: () => 0, + isVoidTag: NO, + isPreTag: NO, + isIgnoreNewlineTag: NO, + isCustomElement: NO, + onError: defaultOnError, + onWarn: defaultOnWarn, + comments: !!(process.env.NODE_ENV !== "production"), + prefixIdentifiers: false +}; +let currentOptions = defaultParserOptions; +let currentRoot = null; +let currentInput = ""; +let currentOpenTag = null; +let currentProp = null; +let currentAttrValue = ""; +let currentAttrStartIndex = -1; +let currentAttrEndIndex = -1; +let inPre = 0; +let inVPre = false; +let currentVPreBoundary = null; +const stack = []; +const tokenizer = new Tokenizer(stack, { + onerr: emitError, + ontext(start, end) { + onText(getSlice(start, end), start, end); + }, + ontextentity(char, start, end) { + onText(char, start, end); + }, + oninterpolation(start, end) { + if (inVPre) { + return onText(getSlice(start, end), start, end); + } + let innerStart = start + tokenizer.delimiterOpen.length; + let innerEnd = end - tokenizer.delimiterClose.length; + while (isWhitespace(currentInput.charCodeAt(innerStart))) { + innerStart++; + } + while (isWhitespace(currentInput.charCodeAt(innerEnd - 1))) { + innerEnd--; + } + let exp = getSlice(innerStart, innerEnd); + if (exp.includes("&")) { + { + exp = currentOptions.decodeEntities(exp, false); + } + } + addNode({ + type: 5, + content: createExp(exp, false, getLoc(innerStart, innerEnd)), + loc: getLoc(start, end) + }); + }, + onopentagname(start, end) { + const name = getSlice(start, end); + currentOpenTag = { + type: 1, + tag: name, + ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns), + tagType: 0, + // will be refined on tag close + props: [], + children: [], + loc: getLoc(start - 1, end), + codegenNode: void 0 + }; + }, + onopentagend(end) { + endOpenTag(end); + }, + onclosetag(start, end) { + const name = getSlice(start, end); + if (!currentOptions.isVoidTag(name)) { + let found = false; + for (let i = 0; i < stack.length; i++) { + const e = stack[i]; + if (e.tag.toLowerCase() === name.toLowerCase()) { + found = true; + if (i > 0) { + emitError(24, stack[0].loc.start.offset); + } + for (let j = 0; j <= i; j++) { + const el = stack.shift(); + onCloseTag(el, end, j < i); + } + break; + } + } + if (!found) { + emitError(23, backTrack(start, 60)); + } + } + }, + onselfclosingtag(end) { + const name = currentOpenTag.tag; + currentOpenTag.isSelfClosing = true; + endOpenTag(end); + if (stack[0] && stack[0].tag === name) { + onCloseTag(stack.shift(), end); + } + }, + onattribname(start, end) { + currentProp = { + type: 6, + name: getSlice(start, end), + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + }, + ondirname(start, end) { + const raw = getSlice(start, end); + const name = raw === "." || raw === ":" ? "bind" : raw === "@" ? "on" : raw === "#" ? "slot" : raw.slice(2); + if (!inVPre && name === "") { + emitError(26, start); + } + if (inVPre || name === "") { + currentProp = { + type: 6, + name: raw, + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + } else { + currentProp = { + type: 7, + name, + rawName: raw, + exp: void 0, + arg: void 0, + modifiers: raw === "." ? [createSimpleExpression("prop")] : [], + loc: getLoc(start) + }; + if (name === "pre") { + inVPre = tokenizer.inVPre = true; + currentVPreBoundary = currentOpenTag; + const props = currentOpenTag.props; + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7) { + props[i] = dirToAttr(props[i]); + } + } + } + } + }, + ondirarg(start, end) { + if (start === end) return; + const arg = getSlice(start, end); + if (inVPre && !isVPre(currentProp)) { + currentProp.name += arg; + setLocEnd(currentProp.nameLoc, end); + } else { + const isStatic = arg[0] !== `[`; + currentProp.arg = createExp( + isStatic ? arg : arg.slice(1, -1), + isStatic, + getLoc(start, end), + isStatic ? 3 : 0 + ); + } + }, + ondirmodifier(start, end) { + const mod = getSlice(start, end); + if (inVPre && !isVPre(currentProp)) { + currentProp.name += "." + mod; + setLocEnd(currentProp.nameLoc, end); + } else if (currentProp.name === "slot") { + const arg = currentProp.arg; + if (arg) { + arg.content += "." + mod; + setLocEnd(arg.loc, end); + } + } else { + const exp = createSimpleExpression(mod, true, getLoc(start, end)); + currentProp.modifiers.push(exp); + } + }, + onattribdata(start, end) { + currentAttrValue += getSlice(start, end); + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribentity(char, start, end) { + currentAttrValue += char; + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribnameend(end) { + const start = currentProp.loc.start.offset; + const name = getSlice(start, end); + if (currentProp.type === 7) { + currentProp.rawName = name; + } + if (currentOpenTag.props.some( + (p) => (p.type === 7 ? p.rawName : p.name) === name + )) { + emitError(2, start); + } + }, + onattribend(quote, end) { + if (currentOpenTag && currentProp) { + setLocEnd(currentProp.loc, end); + if (quote !== 0) { + if (currentAttrValue.includes("&")) { + currentAttrValue = currentOptions.decodeEntities( + currentAttrValue, + true + ); + } + if (currentProp.type === 6) { + if (currentProp.name === "class") { + currentAttrValue = condense(currentAttrValue).trim(); + } + if (quote === 1 && !currentAttrValue) { + emitError(13, end); + } + currentProp.value = { + type: 2, + content: currentAttrValue, + loc: quote === 1 ? getLoc(currentAttrStartIndex, currentAttrEndIndex) : getLoc(currentAttrStartIndex - 1, currentAttrEndIndex + 1) + }; + if (tokenizer.inSFCRoot && currentOpenTag.tag === "template" && currentProp.name === "lang" && currentAttrValue && currentAttrValue !== "html") { + tokenizer.enterRCDATA(toCharCodes(`</template`), 0); + } + } else { + let expParseMode = 0 /* Normal */; + currentProp.exp = createExp( + currentAttrValue, + false, + getLoc(currentAttrStartIndex, currentAttrEndIndex), + 0, + expParseMode + ); + if (currentProp.name === "for") { + currentProp.forParseResult = parseForExpression(currentProp.exp); + } + let syncIndex = -1; + if (currentProp.name === "bind" && (syncIndex = currentProp.modifiers.findIndex( + (mod) => mod.content === "sync" + )) > -1 && checkCompatEnabled( + "COMPILER_V_BIND_SYNC", + currentOptions, + currentProp.loc, + currentProp.arg.loc.source + )) { + currentProp.name = "model"; + currentProp.modifiers.splice(syncIndex, 1); + } + } + } + if (currentProp.type !== 7 || currentProp.name !== "pre") { + currentOpenTag.props.push(currentProp); + } + } + currentAttrValue = ""; + currentAttrStartIndex = currentAttrEndIndex = -1; + }, + oncomment(start, end) { + if (currentOptions.comments) { + addNode({ + type: 3, + content: getSlice(start, end), + loc: getLoc(start - 4, end + 3) + }); + } + }, + onend() { + const end = currentInput.length; + if ((!!(process.env.NODE_ENV !== "production") || false) && tokenizer.state !== 1) { + switch (tokenizer.state) { + case 5: + case 8: + emitError(5, end); + break; + case 3: + case 4: + emitError( + 25, + tokenizer.sectionStart + ); + break; + case 28: + if (tokenizer.currentSequence === Sequences.CdataEnd) { + emitError(6, end); + } else { + emitError(7, end); + } + break; + case 6: + case 7: + case 9: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + // " + case 20: + // ' + case 21: + emitError(9, end); + break; + } + } + for (let index = 0; index < stack.length; index++) { + onCloseTag(stack[index], end - 1); + emitError(24, stack[index].loc.start.offset); + } + }, + oncdata(start, end) { + if (stack[0].ns !== 0) { + onText(getSlice(start, end), start, end); + } else { + emitError(1, start - 9); + } + }, + onprocessinginstruction(start) { + if ((stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + emitError( + 21, + start - 1 + ); + } + } +}); +const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; +const stripParensRE = /^\(|\)$/g; +function parseForExpression(input) { + const loc = input.loc; + const exp = input.content; + const inMatch = exp.match(forAliasRE); + if (!inMatch) return; + const [, LHS, RHS] = inMatch; + const createAliasExpression = (content, offset, asParam = false) => { + const start = loc.start.offset + offset; + const end = start + content.length; + return createExp( + content, + false, + getLoc(start, end), + 0, + asParam ? 1 /* Params */ : 0 /* Normal */ + ); + }; + const result = { + source: createAliasExpression(RHS.trim(), exp.indexOf(RHS, LHS.length)), + value: void 0, + key: void 0, + index: void 0, + finalized: false + }; + let valueContent = LHS.trim().replace(stripParensRE, "").trim(); + const trimmedOffset = LHS.indexOf(valueContent); + const iteratorMatch = valueContent.match(forIteratorRE); + if (iteratorMatch) { + valueContent = valueContent.replace(forIteratorRE, "").trim(); + const keyContent = iteratorMatch[1].trim(); + let keyOffset; + if (keyContent) { + keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length); + result.key = createAliasExpression(keyContent, keyOffset, true); + } + if (iteratorMatch[2]) { + const indexContent = iteratorMatch[2].trim(); + if (indexContent) { + result.index = createAliasExpression( + indexContent, + exp.indexOf( + indexContent, + result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length + ), + true + ); + } + } + } + if (valueContent) { + result.value = createAliasExpression(valueContent, trimmedOffset, true); + } + return result; +} +function getSlice(start, end) { + return currentInput.slice(start, end); +} +function endOpenTag(end) { + if (tokenizer.inSFCRoot) { + currentOpenTag.innerLoc = getLoc(end + 1, end + 1); + } + addNode(currentOpenTag); + const { tag, ns } = currentOpenTag; + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre++; + } + if (currentOptions.isVoidTag(tag)) { + onCloseTag(currentOpenTag, end); + } else { + stack.unshift(currentOpenTag); + if (ns === 1 || ns === 2) { + tokenizer.inXML = true; + } + } + currentOpenTag = null; +} +function onText(content, start, end) { + { + const tag = stack[0] && stack[0].tag; + if (tag !== "script" && tag !== "style" && content.includes("&")) { + content = currentOptions.decodeEntities(content, false); + } + } + const parent = stack[0] || currentRoot; + const lastNode = parent.children[parent.children.length - 1]; + if (lastNode && lastNode.type === 2) { + lastNode.content += content; + setLocEnd(lastNode.loc, end); + } else { + parent.children.push({ + type: 2, + content, + loc: getLoc(start, end) + }); + } +} +function onCloseTag(el, end, isImplied = false) { + if (isImplied) { + setLocEnd(el.loc, backTrack(end, 60)); + } else { + setLocEnd(el.loc, lookAhead(end, 62) + 1); + } + if (tokenizer.inSFCRoot) { + if (el.children.length) { + el.innerLoc.end = extend({}, el.children[el.children.length - 1].loc.end); + } else { + el.innerLoc.end = extend({}, el.innerLoc.start); + } + el.innerLoc.source = getSlice( + el.innerLoc.start.offset, + el.innerLoc.end.offset + ); + } + const { tag, ns, children } = el; + if (!inVPre) { + if (tag === "slot") { + el.tagType = 2; + } else if (isFragmentTemplate(el)) { + el.tagType = 3; + } else if (isComponent(el)) { + el.tagType = 1; + } + } + if (!tokenizer.inRCDATA) { + el.children = condenseWhitespace(children); + } + if (ns === 0 && currentOptions.isIgnoreNewlineTag(tag)) { + const first = children[0]; + if (first && first.type === 2) { + first.content = first.content.replace(/^\r?\n/, ""); + } + } + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre--; + } + if (currentVPreBoundary === el) { + inVPre = tokenizer.inVPre = false; + currentVPreBoundary = null; + } + if (tokenizer.inXML && (stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + tokenizer.inXML = false; + } + { + const props = el.props; + if (!!(process.env.NODE_ENV !== "production") && isCompatEnabled( + "COMPILER_V_IF_V_FOR_PRECEDENCE", + currentOptions + )) { + let hasIf = false; + let hasFor = false; + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 7) { + if (p.name === "if") { + hasIf = true; + } else if (p.name === "for") { + hasFor = true; + } + } + if (hasIf && hasFor) { + warnDeprecation( + "COMPILER_V_IF_V_FOR_PRECEDENCE", + currentOptions, + el.loc + ); + break; + } + } + } + if (!tokenizer.inSFCRoot && isCompatEnabled( + "COMPILER_NATIVE_TEMPLATE", + currentOptions + ) && el.tag === "template" && !isFragmentTemplate(el)) { + !!(process.env.NODE_ENV !== "production") && warnDeprecation( + "COMPILER_NATIVE_TEMPLATE", + currentOptions, + el.loc + ); + const parent = stack[0] || currentRoot; + const index = parent.children.indexOf(el); + parent.children.splice(index, 1, ...el.children); + } + const inlineTemplateProp = props.find( + (p) => p.type === 6 && p.name === "inline-template" + ); + if (inlineTemplateProp && checkCompatEnabled( + "COMPILER_INLINE_TEMPLATE", + currentOptions, + inlineTemplateProp.loc + ) && el.children.length) { + inlineTemplateProp.value = { + type: 2, + content: getSlice( + el.children[0].loc.start.offset, + el.children[el.children.length - 1].loc.end.offset + ), + loc: inlineTemplateProp.loc + }; + } + } +} +function lookAhead(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i < currentInput.length - 1) i++; + return i; +} +function backTrack(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i >= 0) i--; + return i; +} +const specialTemplateDir = /* @__PURE__ */ new Set(["if", "else", "else-if", "for", "slot"]); +function isFragmentTemplate({ tag, props }) { + if (tag === "template") { + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7 && specialTemplateDir.has(props[i].name)) { + return true; + } + } + } + return false; +} +function isComponent({ tag, props }) { + if (currentOptions.isCustomElement(tag)) { + return false; + } + if (tag === "component" || isUpperCase(tag.charCodeAt(0)) || isCoreComponent(tag) || currentOptions.isBuiltInComponent && currentOptions.isBuiltInComponent(tag) || currentOptions.isNativeTag && !currentOptions.isNativeTag(tag)) { + return true; + } + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 6) { + if (p.name === "is" && p.value) { + if (p.value.content.startsWith("vue:")) { + return true; + } else if (checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; + } + } + } else if (// :is on plain element - only treat as component in compat mode + p.name === "bind" && isStaticArgOf(p.arg, "is") && checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; + } + } + return false; +} +function isUpperCase(c) { + return c > 64 && c < 91; +} +const windowsNewlineRE = /\r\n/g; +function condenseWhitespace(nodes) { + const shouldCondense = currentOptions.whitespace !== "preserve"; + let removedWhitespace = false; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (node.type === 2) { + if (!inPre) { + if (isAllWhitespace(node.content)) { + const prev = nodes[i - 1] && nodes[i - 1].type; + const next = nodes[i + 1] && nodes[i + 1].type; + if (!prev || !next || shouldCondense && (prev === 3 && (next === 3 || next === 1) || prev === 1 && (next === 3 || next === 1 && hasNewlineChar(node.content)))) { + removedWhitespace = true; + nodes[i] = null; + } else { + node.content = " "; + } + } else if (shouldCondense) { + node.content = condense(node.content); + } + } else { + node.content = node.content.replace(windowsNewlineRE, "\n"); + } + } + } + return removedWhitespace ? nodes.filter(Boolean) : nodes; +} +function isAllWhitespace(str) { + for (let i = 0; i < str.length; i++) { + if (!isWhitespace(str.charCodeAt(i))) { + return false; + } + } + return true; +} +function hasNewlineChar(str) { + for (let i = 0; i < str.length; i++) { + const c = str.charCodeAt(i); + if (c === 10 || c === 13) { + return true; + } + } + return false; +} +function condense(str) { + let ret = ""; + let prevCharIsWhitespace = false; + for (let i = 0; i < str.length; i++) { + if (isWhitespace(str.charCodeAt(i))) { + if (!prevCharIsWhitespace) { + ret += " "; + prevCharIsWhitespace = true; + } + } else { + ret += str[i]; + prevCharIsWhitespace = false; + } + } + return ret; +} +function addNode(node) { + (stack[0] || currentRoot).children.push(node); +} +function getLoc(start, end) { + return { + start: tokenizer.getPos(start), + // @ts-expect-error allow late attachment + end: end == null ? end : tokenizer.getPos(end), + // @ts-expect-error allow late attachment + source: end == null ? end : getSlice(start, end) + }; +} +function cloneLoc(loc) { + return getLoc(loc.start.offset, loc.end.offset); +} +function setLocEnd(loc, end) { + loc.end = tokenizer.getPos(end); + loc.source = getSlice(loc.start.offset, end); +} +function dirToAttr(dir) { + const attr = { + type: 6, + name: dir.rawName, + nameLoc: getLoc( + dir.loc.start.offset, + dir.loc.start.offset + dir.rawName.length + ), + value: void 0, + loc: dir.loc + }; + if (dir.exp) { + const loc = dir.exp.loc; + if (loc.end.offset < dir.loc.end.offset) { + loc.start.offset--; + loc.start.column--; + loc.end.offset++; + loc.end.column++; + } + attr.value = { + type: 2, + content: dir.exp.content, + loc + }; + } + return attr; +} +function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0 /* Normal */) { + const exp = createSimpleExpression(content, isStatic, loc, constType); + return exp; +} +function emitError(code, index, message) { + currentOptions.onError( + createCompilerError(code, getLoc(index, index), void 0, message) + ); +} +function reset() { + tokenizer.reset(); + currentOpenTag = null; + currentProp = null; + currentAttrValue = ""; + currentAttrStartIndex = -1; + currentAttrEndIndex = -1; + stack.length = 0; +} +function baseParse(input, options) { + reset(); + currentInput = input; + currentOptions = extend({}, defaultParserOptions); + if (options) { + let key; + for (key in options) { + if (options[key] != null) { + currentOptions[key] = options[key]; + } + } + } + if (!!(process.env.NODE_ENV !== "production")) { + if (!currentOptions.decodeEntities) { + throw new Error( + `[@vue/compiler-core] decodeEntities option is required in browser builds.` + ); + } + } + tokenizer.mode = currentOptions.parseMode === "html" ? 1 : currentOptions.parseMode === "sfc" ? 2 : 0; + tokenizer.inXML = currentOptions.ns === 1 || currentOptions.ns === 2; + const delimiters = options && options.delimiters; + if (delimiters) { + tokenizer.delimiterOpen = toCharCodes(delimiters[0]); + tokenizer.delimiterClose = toCharCodes(delimiters[1]); + } + const root = currentRoot = createRoot([], input); + tokenizer.parse(currentInput); + root.loc = getLoc(0, input.length); + root.children = condenseWhitespace(root.children); + currentRoot = null; + return root; +} + +function cacheStatic(root, context) { + walk( + root, + void 0, + context, + // Root node is unfortunately non-hoistable due to potential parent + // fallthrough attributes. + !!getSingleElementRoot(root) + ); +} +function getSingleElementRoot(root) { + const children = root.children.filter((x) => x.type !== 3); + return children.length === 1 && children[0].type === 1 && !isSlotOutlet(children[0]) ? children[0] : null; +} +function walk(node, parent, context, doNotHoistNode = false, inFor = false) { + const { children } = node; + const toCache = []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.type === 1 && child.tagType === 0) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType > 0) { + if (constantType >= 2) { + child.codegenNode.patchFlag = -1; + toCache.push(child); + continue; + } + } else { + const codegenNode = child.codegenNode; + if (codegenNode.type === 13) { + const flag = codegenNode.patchFlag; + if ((flag === void 0 || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) { + const props = getNodeProps(child); + if (props) { + codegenNode.props = context.hoist(props); + } + } + if (codegenNode.dynamicProps) { + codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps); + } + } + } + } else if (child.type === 12) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType >= 2) { + if (child.codegenNode.type === 14 && child.codegenNode.arguments.length > 0) { + child.codegenNode.arguments.push( + -1 + (!!(process.env.NODE_ENV !== "production") ? ` /* ${PatchFlagNames[-1]} */` : ``) + ); + } + toCache.push(child); + continue; + } + } + if (child.type === 1) { + const isComponent = child.tagType === 1; + if (isComponent) { + context.scopes.vSlot++; + } + walk(child, node, context, false, inFor); + if (isComponent) { + context.scopes.vSlot--; + } + } else if (child.type === 11) { + walk(child, node, context, child.children.length === 1, true); + } else if (child.type === 9) { + for (let i2 = 0; i2 < child.branches.length; i2++) { + walk( + child.branches[i2], + node, + context, + child.branches[i2].children.length === 1, + inFor + ); + } + } + } + let cachedAsArray = false; + const slotCacheKeys = []; + if (toCache.length === children.length && node.type === 1) { + if (node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && isArray(node.codegenNode.children)) { + node.codegenNode.children = getCacheExpression( + createArrayExpression(node.codegenNode.children) + ); + cachedAsArray = true; + } else if (node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) { + const slot = getSlotNode(node.codegenNode, "default"); + if (slot) { + slotCacheKeys.push(context.cached.length); + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } else if (node.tagType === 3 && parent && parent.type === 1 && parent.tagType === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !isArray(parent.codegenNode.children) && parent.codegenNode.children.type === 15) { + const slotName = findDir(node, "slot", true); + const slot = slotName && slotName.arg && getSlotNode(parent.codegenNode, slotName.arg); + if (slot) { + slotCacheKeys.push(context.cached.length); + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } + } + if (!cachedAsArray) { + for (const child of toCache) { + slotCacheKeys.push(context.cached.length); + child.codegenNode = context.cache(child.codegenNode); + } + } + if (slotCacheKeys.length && node.type === 1 && node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) { + node.codegenNode.children.properties.push( + createObjectProperty( + `__`, + createSimpleExpression(JSON.stringify(slotCacheKeys), false) + ) + ); + } + function getCacheExpression(value) { + const exp = context.cache(value); + if (inFor && context.hmr) { + exp.needArraySpread = true; + } + return exp; + } + function getSlotNode(node2, name) { + if (node2.children && !isArray(node2.children) && node2.children.type === 15) { + const slot = node2.children.properties.find( + (p) => p.key === name || p.key.content === name + ); + return slot && slot.value; + } + } + if (toCache.length && context.transformHoist) { + context.transformHoist(children, context, node); + } +} +function getConstantType(node, context) { + const { constantCache } = context; + switch (node.type) { + case 1: + if (node.tagType !== 0) { + return 0; + } + const cached = constantCache.get(node); + if (cached !== void 0) { + return cached; + } + const codegenNode = node.codegenNode; + if (codegenNode.type !== 13) { + return 0; + } + if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject" && node.tag !== "math") { + return 0; + } + if (codegenNode.patchFlag === void 0) { + let returnType2 = 3; + const generatedPropsType = getGeneratedPropsConstantType(node, context); + if (generatedPropsType === 0) { + constantCache.set(node, 0); + return 0; + } + if (generatedPropsType < returnType2) { + returnType2 = generatedPropsType; + } + for (let i = 0; i < node.children.length; i++) { + const childType = getConstantType(node.children[i], context); + if (childType === 0) { + constantCache.set(node, 0); + return 0; + } + if (childType < returnType2) { + returnType2 = childType; + } + } + if (returnType2 > 1) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && p.name === "bind" && p.exp) { + const expType = getConstantType(p.exp, context); + if (expType === 0) { + constantCache.set(node, 0); + return 0; + } + if (expType < returnType2) { + returnType2 = expType; + } + } + } + } + if (codegenNode.isBlock) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7) { + constantCache.set(node, 0); + return 0; + } + } + context.removeHelper(OPEN_BLOCK); + context.removeHelper( + getVNodeBlockHelper(context.inSSR, codegenNode.isComponent) + ); + codegenNode.isBlock = false; + context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent)); + } + constantCache.set(node, returnType2); + return returnType2; + } else { + constantCache.set(node, 0); + return 0; + } + case 2: + case 3: + return 3; + case 9: + case 11: + case 10: + return 0; + case 5: + case 12: + return getConstantType(node.content, context); + case 4: + return node.constType; + case 8: + let returnType = 3; + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (isString(child) || isSymbol(child)) { + continue; + } + const childType = getConstantType(child, context); + if (childType === 0) { + return 0; + } else if (childType < returnType) { + returnType = childType; + } + } + return returnType; + case 20: + return 2; + default: + if (!!(process.env.NODE_ENV !== "production")) ; + return 0; + } +} +const allowHoistedHelperSet = /* @__PURE__ */ new Set([ + NORMALIZE_CLASS, + NORMALIZE_STYLE, + NORMALIZE_PROPS, + GUARD_REACTIVE_PROPS +]); +function getConstantTypeOfHelperCall(value, context) { + if (value.type === 14 && !isString(value.callee) && allowHoistedHelperSet.has(value.callee)) { + const arg = value.arguments[0]; + if (arg.type === 4) { + return getConstantType(arg, context); + } else if (arg.type === 14) { + return getConstantTypeOfHelperCall(arg, context); + } + } + return 0; +} +function getGeneratedPropsConstantType(node, context) { + let returnType = 3; + const props = getNodeProps(node); + if (props && props.type === 15) { + const { properties } = props; + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + const keyType = getConstantType(key, context); + if (keyType === 0) { + return keyType; + } + if (keyType < returnType) { + returnType = keyType; + } + let valueType; + if (value.type === 4) { + valueType = getConstantType(value, context); + } else if (value.type === 14) { + valueType = getConstantTypeOfHelperCall(value, context); + } else { + valueType = 0; + } + if (valueType === 0) { + return valueType; + } + if (valueType < returnType) { + returnType = valueType; + } + } + } + return returnType; +} +function getNodeProps(node) { + const codegenNode = node.codegenNode; + if (codegenNode.type === 13) { + return codegenNode.props; + } +} + +function createTransformContext(root, { + filename = "", + prefixIdentifiers = false, + hoistStatic = false, + hmr = false, + cacheHandlers = false, + nodeTransforms = [], + directiveTransforms = {}, + transformHoist = null, + isBuiltInComponent = NOOP, + isCustomElement = NOOP, + expressionPlugins = [], + scopeId = null, + slotted = true, + ssr = false, + inSSR = false, + ssrCssVars = ``, + bindingMetadata = EMPTY_OBJ, + inline = false, + isTS = false, + onError = defaultOnError, + onWarn = defaultOnWarn, + compatConfig +}) { + const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/); + const context = { + // options + filename, + selfName: nameMatch && capitalize(camelize(nameMatch[1])), + prefixIdentifiers, + hoistStatic, + hmr, + cacheHandlers, + nodeTransforms, + directiveTransforms, + transformHoist, + isBuiltInComponent, + isCustomElement, + expressionPlugins, + scopeId, + slotted, + ssr, + inSSR, + ssrCssVars, + bindingMetadata, + inline, + isTS, + onError, + onWarn, + compatConfig, + // state + root, + helpers: /* @__PURE__ */ new Map(), + components: /* @__PURE__ */ new Set(), + directives: /* @__PURE__ */ new Set(), + hoists: [], + imports: [], + cached: [], + constantCache: /* @__PURE__ */ new WeakMap(), + temps: 0, + identifiers: /* @__PURE__ */ Object.create(null), + scopes: { + vFor: 0, + vSlot: 0, + vPre: 0, + vOnce: 0 + }, + parent: null, + grandParent: null, + currentNode: root, + childIndex: 0, + inVOnce: false, + // methods + helper(name) { + const count = context.helpers.get(name) || 0; + context.helpers.set(name, count + 1); + return name; + }, + removeHelper(name) { + const count = context.helpers.get(name); + if (count) { + const currentCount = count - 1; + if (!currentCount) { + context.helpers.delete(name); + } else { + context.helpers.set(name, currentCount); + } + } + }, + helperString(name) { + return `_${helperNameMap[context.helper(name)]}`; + }, + replaceNode(node) { + if (!!(process.env.NODE_ENV !== "production")) { + if (!context.currentNode) { + throw new Error(`Node being replaced is already removed.`); + } + if (!context.parent) { + throw new Error(`Cannot replace root node.`); + } + } + context.parent.children[context.childIndex] = context.currentNode = node; + }, + removeNode(node) { + if (!!(process.env.NODE_ENV !== "production") && !context.parent) { + throw new Error(`Cannot remove root node.`); + } + const list = context.parent.children; + const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1; + if (!!(process.env.NODE_ENV !== "production") && removalIndex < 0) { + throw new Error(`node being removed is not a child of current parent`); + } + if (!node || node === context.currentNode) { + context.currentNode = null; + context.onNodeRemoved(); + } else { + if (context.childIndex > removalIndex) { + context.childIndex--; + context.onNodeRemoved(); + } + } + context.parent.children.splice(removalIndex, 1); + }, + onNodeRemoved: NOOP, + addIdentifiers(exp) { + }, + removeIdentifiers(exp) { + }, + hoist(exp) { + if (isString(exp)) exp = createSimpleExpression(exp); + context.hoists.push(exp); + const identifier = createSimpleExpression( + `_hoisted_${context.hoists.length}`, + false, + exp.loc, + 2 + ); + identifier.hoisted = exp; + return identifier; + }, + cache(exp, isVNode = false, inVOnce = false) { + const cacheExp = createCacheExpression( + context.cached.length, + exp, + isVNode, + inVOnce + ); + context.cached.push(cacheExp); + return cacheExp; + } + }; + { + context.filters = /* @__PURE__ */ new Set(); + } + return context; +} +function transform(root, options) { + const context = createTransformContext(root, options); + traverseNode(root, context); + if (options.hoistStatic) { + cacheStatic(root, context); + } + if (!options.ssr) { + createRootCodegen(root, context); + } + root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]); + root.components = [...context.components]; + root.directives = [...context.directives]; + root.imports = context.imports; + root.hoists = context.hoists; + root.temps = context.temps; + root.cached = context.cached; + root.transformed = true; + { + root.filters = [...context.filters]; + } +} +function createRootCodegen(root, context) { + const { helper } = context; + const { children } = root; + if (children.length === 1) { + const singleElementRootChild = getSingleElementRoot(root); + if (singleElementRootChild && singleElementRootChild.codegenNode) { + const codegenNode = singleElementRootChild.codegenNode; + if (codegenNode.type === 13) { + convertToBlock(codegenNode, context); + } + root.codegenNode = codegenNode; + } else { + root.codegenNode = children[0]; + } + } else if (children.length > 1) { + let patchFlag = 64; + if (!!(process.env.NODE_ENV !== "production") && children.filter((c) => c.type !== 3).length === 1) { + patchFlag |= 2048; + } + root.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + root.children, + patchFlag, + void 0, + void 0, + true, + void 0, + false + ); + } else ; +} +function traverseChildren(parent, context) { + let i = 0; + const nodeRemoved = () => { + i--; + }; + for (; i < parent.children.length; i++) { + const child = parent.children[i]; + if (isString(child)) continue; + context.grandParent = context.parent; + context.parent = parent; + context.childIndex = i; + context.onNodeRemoved = nodeRemoved; + traverseNode(child, context); + } +} +function traverseNode(node, context) { + context.currentNode = node; + const { nodeTransforms } = context; + const exitFns = []; + for (let i2 = 0; i2 < nodeTransforms.length; i2++) { + const onExit = nodeTransforms[i2](node, context); + if (onExit) { + if (isArray(onExit)) { + exitFns.push(...onExit); + } else { + exitFns.push(onExit); + } + } + if (!context.currentNode) { + return; + } else { + node = context.currentNode; + } + } + switch (node.type) { + case 3: + if (!context.ssr) { + context.helper(CREATE_COMMENT); + } + break; + case 5: + if (!context.ssr) { + context.helper(TO_DISPLAY_STRING); + } + break; + // for container types, further traverse downwards + case 9: + for (let i2 = 0; i2 < node.branches.length; i2++) { + traverseNode(node.branches[i2], context); + } + break; + case 10: + case 11: + case 1: + case 0: + traverseChildren(node, context); + break; + } + context.currentNode = node; + let i = exitFns.length; + while (i--) { + exitFns[i](); + } +} +function createStructuralDirectiveTransform(name, fn) { + const matches = isString(name) ? (n) => n === name : (n) => name.test(n); + return (node, context) => { + if (node.type === 1) { + const { props } = node; + if (node.tagType === 3 && props.some(isVSlot)) { + return; + } + const exitFns = []; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 7 && matches(prop.name)) { + props.splice(i, 1); + i--; + const onExit = fn(node, prop, context); + if (onExit) exitFns.push(onExit); + } + } + return exitFns; + } + }; +} + +const PURE_ANNOTATION = `/*@__PURE__*/`; +const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`; +function createCodegenContext(ast, { + mode = "function", + prefixIdentifiers = mode === "module", + sourceMap = false, + filename = `template.vue.html`, + scopeId = null, + optimizeImports = false, + runtimeGlobalName = `Vue`, + runtimeModuleName = `vue`, + ssrRuntimeModuleName = "vue/server-renderer", + ssr = false, + isTS = false, + inSSR = false +}) { + const context = { + mode, + prefixIdentifiers, + sourceMap, + filename, + scopeId, + optimizeImports, + runtimeGlobalName, + runtimeModuleName, + ssrRuntimeModuleName, + ssr, + isTS, + inSSR, + source: ast.source, + code: ``, + column: 1, + line: 1, + offset: 0, + indentLevel: 0, + pure: false, + map: void 0, + helper(key) { + return `_${helperNameMap[key]}`; + }, + push(code, newlineIndex = -2 /* None */, node) { + context.code += code; + }, + indent() { + newline(++context.indentLevel); + }, + deindent(withoutNewLine = false) { + if (withoutNewLine) { + --context.indentLevel; + } else { + newline(--context.indentLevel); + } + }, + newline() { + newline(context.indentLevel); + } + }; + function newline(n) { + context.push("\n" + ` `.repeat(n), 0 /* Start */); + } + return context; +} +function generate(ast, options = {}) { + const context = createCodegenContext(ast, options); + if (options.onContextCreated) options.onContextCreated(context); + const { + mode, + push, + prefixIdentifiers, + indent, + deindent, + newline, + scopeId, + ssr + } = context; + const helpers = Array.from(ast.helpers); + const hasHelpers = helpers.length > 0; + const useWithBlock = !prefixIdentifiers && mode !== "module"; + const preambleContext = context; + { + genFunctionPreamble(ast, preambleContext); + } + const functionName = ssr ? `ssrRender` : `render`; + const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"]; + const signature = args.join(", "); + { + push(`function ${functionName}(${signature}) {`); + } + indent(); + if (useWithBlock) { + push(`with (_ctx) {`); + indent(); + if (hasHelpers) { + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = _Vue +`, + -1 /* End */ + ); + newline(); + } + } + if (ast.components.length) { + genAssets(ast.components, "component", context); + if (ast.directives.length || ast.temps > 0) { + newline(); + } + } + if (ast.directives.length) { + genAssets(ast.directives, "directive", context); + if (ast.temps > 0) { + newline(); + } + } + if (ast.filters && ast.filters.length) { + newline(); + genAssets(ast.filters, "filter", context); + newline(); + } + if (ast.temps > 0) { + push(`let `); + for (let i = 0; i < ast.temps; i++) { + push(`${i > 0 ? `, ` : ``}_temp${i}`); + } + } + if (ast.components.length || ast.directives.length || ast.temps) { + push(` +`, 0 /* Start */); + newline(); + } + if (!ssr) { + push(`return `); + } + if (ast.codegenNode) { + genNode(ast.codegenNode, context); + } else { + push(`null`); + } + if (useWithBlock) { + deindent(); + push(`}`); + } + deindent(); + push(`}`); + return { + ast, + code: context.code, + preamble: ``, + map: context.map ? context.map.toJSON() : void 0 + }; +} +function genFunctionPreamble(ast, context) { + const { + ssr, + prefixIdentifiers, + push, + newline, + runtimeModuleName, + runtimeGlobalName, + ssrRuntimeModuleName + } = context; + const VueBinding = runtimeGlobalName; + const helpers = Array.from(ast.helpers); + if (helpers.length > 0) { + { + push(`const _Vue = ${VueBinding} +`, -1 /* End */); + if (ast.hoists.length) { + const staticHelpers = [ + CREATE_VNODE, + CREATE_ELEMENT_VNODE, + CREATE_COMMENT, + CREATE_TEXT, + CREATE_STATIC + ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", "); + push(`const { ${staticHelpers} } = _Vue +`, -1 /* End */); + } + } + } + genHoists(ast.hoists, context); + newline(); + push(`return `); +} +function genAssets(assets, type, { helper, push, newline, isTS }) { + const resolver = helper( + type === "filter" ? RESOLVE_FILTER : type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE + ); + for (let i = 0; i < assets.length; i++) { + let id = assets[i]; + const maybeSelfReference = id.endsWith("__self"); + if (maybeSelfReference) { + id = id.slice(0, -6); + } + push( + `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}` + ); + if (i < assets.length - 1) { + newline(); + } + } +} +function genHoists(hoists, context) { + if (!hoists.length) { + return; + } + context.pure = true; + const { push, newline } = context; + newline(); + for (let i = 0; i < hoists.length; i++) { + const exp = hoists[i]; + if (exp) { + push(`const _hoisted_${i + 1} = `); + genNode(exp, context); + newline(); + } + } + context.pure = false; +} +function isText(n) { + return isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8; +} +function genNodeListAsArray(nodes, context) { + const multilines = nodes.length > 3 || !!(process.env.NODE_ENV !== "production") && nodes.some((n) => isArray(n) || !isText(n)); + context.push(`[`); + multilines && context.indent(); + genNodeList(nodes, context, multilines); + multilines && context.deindent(); + context.push(`]`); +} +function genNodeList(nodes, context, multilines = false, comma = true) { + const { push, newline } = context; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (isString(node)) { + push(node, -3 /* Unknown */); + } else if (isArray(node)) { + genNodeListAsArray(node, context); + } else { + genNode(node, context); + } + if (i < nodes.length - 1) { + if (multilines) { + comma && push(","); + newline(); + } else { + comma && push(", "); + } + } + } +} +function genNode(node, context) { + if (isString(node)) { + context.push(node, -3 /* Unknown */); + return; + } + if (isSymbol(node)) { + context.push(context.helper(node)); + return; + } + switch (node.type) { + case 1: + case 9: + case 11: + !!(process.env.NODE_ENV !== "production") && assert( + node.codegenNode != null, + `Codegen node is missing for element/if/for node. Apply appropriate transforms first.` + ); + genNode(node.codegenNode, context); + break; + case 2: + genText(node, context); + break; + case 4: + genExpression(node, context); + break; + case 5: + genInterpolation(node, context); + break; + case 12: + genNode(node.codegenNode, context); + break; + case 8: + genCompoundExpression(node, context); + break; + case 3: + genComment(node, context); + break; + case 13: + genVNodeCall(node, context); + break; + case 14: + genCallExpression(node, context); + break; + case 15: + genObjectExpression(node, context); + break; + case 17: + genArrayExpression(node, context); + break; + case 18: + genFunctionExpression(node, context); + break; + case 19: + genConditionalExpression(node, context); + break; + case 20: + genCacheExpression(node, context); + break; + case 21: + genNodeList(node.body, context, true, false); + break; + // SSR only types + case 22: + break; + case 23: + break; + case 24: + break; + case 25: + break; + case 26: + break; + /* v8 ignore start */ + case 10: + break; + default: + if (!!(process.env.NODE_ENV !== "production")) { + assert(false, `unhandled codegen node type: ${node.type}`); + const exhaustiveCheck = node; + return exhaustiveCheck; + } + } +} +function genText(node, context) { + context.push(JSON.stringify(node.content), -3 /* Unknown */, node); +} +function genExpression(node, context) { + const { content, isStatic } = node; + context.push( + isStatic ? JSON.stringify(content) : content, + -3 /* Unknown */, + node + ); +} +function genInterpolation(node, context) { + const { push, helper, pure } = context; + if (pure) push(PURE_ANNOTATION); + push(`${helper(TO_DISPLAY_STRING)}(`); + genNode(node.content, context); + push(`)`); +} +function genCompoundExpression(node, context) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (isString(child)) { + context.push(child, -3 /* Unknown */); + } else { + genNode(child, context); + } + } +} +function genExpressionAsPropertyKey(node, context) { + const { push } = context; + if (node.type === 8) { + push(`[`); + genCompoundExpression(node, context); + push(`]`); + } else if (node.isStatic) { + const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content); + push(text, -2 /* None */, node); + } else { + push(`[${node.content}]`, -3 /* Unknown */, node); + } +} +function genComment(node, context) { + const { push, helper, pure } = context; + if (pure) { + push(PURE_ANNOTATION); + } + push( + `${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, + -3 /* Unknown */, + node + ); +} +function genVNodeCall(node, context) { + const { push, helper, pure } = context; + const { + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent + } = node; + let patchFlagString; + if (patchFlag) { + if (!!(process.env.NODE_ENV !== "production")) { + if (patchFlag < 0) { + patchFlagString = patchFlag + ` /* ${PatchFlagNames[patchFlag]} */`; + } else { + const flagNames = Object.keys(PatchFlagNames).map(Number).filter((n) => n > 0 && patchFlag & n).map((n) => PatchFlagNames[n]).join(`, `); + patchFlagString = patchFlag + ` /* ${flagNames} */`; + } + } else { + patchFlagString = String(patchFlag); + } + } + if (directives) { + push(helper(WITH_DIRECTIVES) + `(`); + } + if (isBlock) { + push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `); + } + if (pure) { + push(PURE_ANNOTATION); + } + const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent); + push(helper(callHelper) + `(`, -2 /* None */, node); + genNodeList( + genNullableArgs([tag, props, children, patchFlagString, dynamicProps]), + context + ); + push(`)`); + if (isBlock) { + push(`)`); + } + if (directives) { + push(`, `); + genNode(directives, context); + push(`)`); + } +} +function genNullableArgs(args) { + let i = args.length; + while (i--) { + if (args[i] != null) break; + } + return args.slice(0, i + 1).map((arg) => arg || `null`); +} +function genCallExpression(node, context) { + const { push, helper, pure } = context; + const callee = isString(node.callee) ? node.callee : helper(node.callee); + if (pure) { + push(PURE_ANNOTATION); + } + push(callee + `(`, -2 /* None */, node); + genNodeList(node.arguments, context); + push(`)`); +} +function genObjectExpression(node, context) { + const { push, indent, deindent, newline } = context; + const { properties } = node; + if (!properties.length) { + push(`{}`, -2 /* None */, node); + return; + } + const multilines = properties.length > 1 || !!(process.env.NODE_ENV !== "production") && properties.some((p) => p.value.type !== 4); + push(multilines ? `{` : `{ `); + multilines && indent(); + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + genExpressionAsPropertyKey(key, context); + push(`: `); + genNode(value, context); + if (i < properties.length - 1) { + push(`,`); + newline(); + } + } + multilines && deindent(); + push(multilines ? `}` : ` }`); +} +function genArrayExpression(node, context) { + genNodeListAsArray(node.elements, context); +} +function genFunctionExpression(node, context) { + const { push, indent, deindent } = context; + const { params, returns, body, newline, isSlot } = node; + if (isSlot) { + push(`_${helperNameMap[WITH_CTX]}(`); + } + push(`(`, -2 /* None */, node); + if (isArray(params)) { + genNodeList(params, context); + } else if (params) { + genNode(params, context); + } + push(`) => `); + if (newline || body) { + push(`{`); + indent(); + } + if (returns) { + if (newline) { + push(`return `); + } + if (isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } + } else if (body) { + genNode(body, context); + } + if (newline || body) { + deindent(); + push(`}`); + } + if (isSlot) { + if (node.isNonScopedSlot) { + push(`, undefined, true`); + } + push(`)`); + } +} +function genConditionalExpression(node, context) { + const { test, consequent, alternate, newline: needNewline } = node; + const { push, indent, deindent, newline } = context; + if (test.type === 4) { + const needsParens = !isSimpleIdentifier(test.content); + needsParens && push(`(`); + genExpression(test, context); + needsParens && push(`)`); + } else { + push(`(`); + genNode(test, context); + push(`)`); + } + needNewline && indent(); + context.indentLevel++; + needNewline || push(` `); + push(`? `); + genNode(consequent, context); + context.indentLevel--; + needNewline && newline(); + needNewline || push(` `); + push(`: `); + const isNested = alternate.type === 19; + if (!isNested) { + context.indentLevel++; + } + genNode(alternate, context); + if (!isNested) { + context.indentLevel--; + } + needNewline && deindent( + true + /* without newline */ + ); +} +function genCacheExpression(node, context) { + const { push, helper, indent, deindent, newline } = context; + const { needPauseTracking, needArraySpread } = node; + if (needArraySpread) { + push(`[...(`); + } + push(`_cache[${node.index}] || (`); + if (needPauseTracking) { + indent(); + push(`${helper(SET_BLOCK_TRACKING)}(-1`); + if (node.inVOnce) push(`, true`); + push(`),`); + newline(); + push(`(`); + } + push(`_cache[${node.index}] = `); + genNode(node.value, context); + if (needPauseTracking) { + push(`).cacheIndex = ${node.index},`); + newline(); + push(`${helper(SET_BLOCK_TRACKING)}(1),`); + newline(); + push(`_cache[${node.index}]`); + deindent(); + } + push(`)`); + if (needArraySpread) { + push(`)]`); + } +} + +const prohibitedKeywordRE = new RegExp( + "\\b" + "arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b") + "\\b" +); +const stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g; +function validateBrowserExpression(node, context, asParams = false, asRawStatements = false) { + const exp = node.content; + if (!exp.trim()) { + return; + } + try { + new Function( + asRawStatements ? ` ${exp} ` : `return ${asParams ? `(${exp}) => {}` : `(${exp})`}` + ); + } catch (e) { + let message = e.message; + const keywordMatch = exp.replace(stripStringRE, "").match(prohibitedKeywordRE); + if (keywordMatch) { + message = `avoid using JavaScript keyword as property name: "${keywordMatch[0]}"`; + } + context.onError( + createCompilerError( + 45, + node.loc, + void 0, + message + ) + ); + } +} + +const transformExpression = (node, context) => { + if (node.type === 5) { + node.content = processExpression( + node.content, + context + ); + } else if (node.type === 1) { + const memo = findDir(node, "memo"); + for (let i = 0; i < node.props.length; i++) { + const dir = node.props[i]; + if (dir.type === 7 && dir.name !== "for") { + const exp = dir.exp; + const arg = dir.arg; + if (exp && exp.type === 4 && !(dir.name === "on" && arg) && // key has been processed in transformFor(vMemo + vFor) + !(memo && arg && arg.type === 4 && arg.content === "key")) { + dir.exp = processExpression( + exp, + context, + // slot args must be processed as function params + dir.name === "slot" + ); + } + if (arg && arg.type === 4 && !arg.isStatic) { + dir.arg = processExpression(arg, context); + } + } + } + } +}; +function processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) { + { + if (!!(process.env.NODE_ENV !== "production")) { + validateBrowserExpression(node, context, asParams, asRawStatements); + } + return node; + } +} +function stringifyExpression(exp) { + if (isString(exp)) { + return exp; + } else if (exp.type === 4) { + return exp.content; + } else { + return exp.children.map(stringifyExpression).join(""); + } +} + +const transformIf = createStructuralDirectiveTransform( + /^(if|else|else-if)$/, + (node, dir, context) => { + return processIf(node, dir, context, (ifNode, branch, isRoot) => { + const siblings = context.parent.children; + let i = siblings.indexOf(ifNode); + let key = 0; + while (i-- >= 0) { + const sibling = siblings[i]; + if (sibling && sibling.type === 9) { + key += sibling.branches.length; + } + } + return () => { + if (isRoot) { + ifNode.codegenNode = createCodegenNodeForBranch( + branch, + key, + context + ); + } else { + const parentCondition = getParentCondition(ifNode.codegenNode); + parentCondition.alternate = createCodegenNodeForBranch( + branch, + key + ifNode.branches.length - 1, + context + ); + } + }; + }); + } +); +function processIf(node, dir, context, processCodegen) { + if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) { + const loc = dir.exp ? dir.exp.loc : node.loc; + context.onError( + createCompilerError(28, dir.loc) + ); + dir.exp = createSimpleExpression(`true`, false, loc); + } + if (!!(process.env.NODE_ENV !== "production") && true && dir.exp) { + validateBrowserExpression(dir.exp, context); + } + if (dir.name === "if") { + const branch = createIfBranch(node, dir); + const ifNode = { + type: 9, + loc: cloneLoc(node.loc), + branches: [branch] + }; + context.replaceNode(ifNode); + if (processCodegen) { + return processCodegen(ifNode, branch, true); + } + } else { + const siblings = context.parent.children; + const comments = []; + let i = siblings.indexOf(node); + while (i-- >= -1) { + const sibling = siblings[i]; + if (sibling && sibling.type === 3) { + context.removeNode(sibling); + !!(process.env.NODE_ENV !== "production") && comments.unshift(sibling); + continue; + } + if (sibling && sibling.type === 2 && !sibling.content.trim().length) { + context.removeNode(sibling); + continue; + } + if (sibling && sibling.type === 9) { + if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) { + context.onError( + createCompilerError(30, node.loc) + ); + } + context.removeNode(); + const branch = createIfBranch(node, dir); + if (!!(process.env.NODE_ENV !== "production") && comments.length && // #3619 ignore comments if the v-if is direct child of <transition> + !(context.parent && context.parent.type === 1 && (context.parent.tag === "transition" || context.parent.tag === "Transition"))) { + branch.children = [...comments, ...branch.children]; + } + if (!!(process.env.NODE_ENV !== "production") || false) { + const key = branch.userKey; + if (key) { + sibling.branches.forEach(({ userKey }) => { + if (isSameKey(userKey, key)) { + context.onError( + createCompilerError( + 29, + branch.userKey.loc + ) + ); + } + }); + } + } + sibling.branches.push(branch); + const onExit = processCodegen && processCodegen(sibling, branch, false); + traverseNode(branch, context); + if (onExit) onExit(); + context.currentNode = null; + } else { + context.onError( + createCompilerError(30, node.loc) + ); + } + break; + } + } +} +function createIfBranch(node, dir) { + const isTemplateIf = node.tagType === 3; + return { + type: 10, + loc: node.loc, + condition: dir.name === "else" ? void 0 : dir.exp, + children: isTemplateIf && !findDir(node, "for") ? node.children : [node], + userKey: findProp(node, `key`), + isTemplateIf + }; +} +function createCodegenNodeForBranch(branch, keyIndex, context) { + if (branch.condition) { + return createConditionalExpression( + branch.condition, + createChildrenCodegenNode(branch, keyIndex, context), + // make sure to pass in asBlock: true so that the comment node call + // closes the current block. + createCallExpression(context.helper(CREATE_COMMENT), [ + !!(process.env.NODE_ENV !== "production") ? '"v-if"' : '""', + "true" + ]) + ); + } else { + return createChildrenCodegenNode(branch, keyIndex, context); + } +} +function createChildrenCodegenNode(branch, keyIndex, context) { + const { helper } = context; + const keyProperty = createObjectProperty( + `key`, + createSimpleExpression( + `${keyIndex}`, + false, + locStub, + 2 + ) + ); + const { children } = branch; + const firstChild = children[0]; + const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1; + if (needFragmentWrapper) { + if (children.length === 1 && firstChild.type === 11) { + const vnodeCall = firstChild.codegenNode; + injectProp(vnodeCall, keyProperty, context); + return vnodeCall; + } else { + let patchFlag = 64; + if (!!(process.env.NODE_ENV !== "production") && !branch.isTemplateIf && children.filter((c) => c.type !== 3).length === 1) { + patchFlag |= 2048; + } + return createVNodeCall( + context, + helper(FRAGMENT), + createObjectExpression([keyProperty]), + children, + patchFlag, + void 0, + void 0, + true, + false, + false, + branch.loc + ); + } + } else { + const ret = firstChild.codegenNode; + const vnodeCall = getMemoedVNodeCall(ret); + if (vnodeCall.type === 13) { + convertToBlock(vnodeCall, context); + } + injectProp(vnodeCall, keyProperty, context); + return ret; + } +} +function isSameKey(a, b) { + if (!a || a.type !== b.type) { + return false; + } + if (a.type === 6) { + if (a.value.content !== b.value.content) { + return false; + } + } else { + const exp = a.exp; + const branchExp = b.exp; + if (exp.type !== branchExp.type) { + return false; + } + if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) { + return false; + } + } + return true; +} +function getParentCondition(node) { + while (true) { + if (node.type === 19) { + if (node.alternate.type === 19) { + node = node.alternate; + } else { + return node; + } + } else if (node.type === 20) { + node = node.value; + } + } +} + +const transformBind = (dir, _node, context) => { + const { modifiers, loc } = dir; + const arg = dir.arg; + let { exp } = dir; + if (exp && exp.type === 4 && !exp.content.trim()) { + { + exp = void 0; + } + } + if (!exp) { + if (arg.type !== 4 || !arg.isStatic) { + context.onError( + createCompilerError( + 52, + arg.loc + ) + ); + return { + props: [ + createObjectProperty(arg, createSimpleExpression("", true, loc)) + ] + }; + } + transformBindShorthand(dir); + exp = dir.exp; + } + if (arg.type !== 4) { + arg.children.unshift(`(`); + arg.children.push(`) || ""`); + } else if (!arg.isStatic) { + arg.content = arg.content ? `${arg.content} || ""` : `""`; + } + if (modifiers.some((mod) => mod.content === "camel")) { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = camelize(arg.content); + } else { + arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`; + } + } else { + arg.children.unshift(`${context.helperString(CAMELIZE)}(`); + arg.children.push(`)`); + } + } + if (!context.inSSR) { + if (modifiers.some((mod) => mod.content === "prop")) { + injectPrefix(arg, "."); + } + if (modifiers.some((mod) => mod.content === "attr")) { + injectPrefix(arg, "^"); + } + } + return { + props: [createObjectProperty(arg, exp)] + }; +}; +const transformBindShorthand = (dir, context) => { + const arg = dir.arg; + const propName = camelize(arg.content); + dir.exp = createSimpleExpression(propName, false, arg.loc); +}; +const injectPrefix = (arg, prefix) => { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = prefix + arg.content; + } else { + arg.content = `\`${prefix}\${${arg.content}}\``; + } + } else { + arg.children.unshift(`'${prefix}' + (`); + arg.children.push(`)`); + } +}; + +const transformFor = createStructuralDirectiveTransform( + "for", + (node, dir, context) => { + const { helper, removeHelper } = context; + return processFor(node, dir, context, (forNode) => { + const renderExp = createCallExpression(helper(RENDER_LIST), [ + forNode.source + ]); + const isTemplate = isTemplateNode(node); + const memo = findDir(node, "memo"); + const keyProp = findProp(node, `key`, false, true); + const isDirKey = keyProp && keyProp.type === 7; + if (isDirKey && !keyProp.exp) { + transformBindShorthand(keyProp); + } + let keyExp = keyProp && (keyProp.type === 6 ? keyProp.value ? createSimpleExpression(keyProp.value.content, true) : void 0 : keyProp.exp); + const keyProperty = keyProp && keyExp ? createObjectProperty(`key`, keyExp) : null; + const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0; + const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256; + forNode.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + renderExp, + fragmentFlag, + void 0, + void 0, + true, + !isStableFragment, + false, + node.loc + ); + return () => { + let childBlock; + const { children } = forNode; + if ((!!(process.env.NODE_ENV !== "production") || false) && isTemplate) { + node.children.some((c) => { + if (c.type === 1) { + const key = findProp(c, "key"); + if (key) { + context.onError( + createCompilerError( + 33, + key.loc + ) + ); + return true; + } + } + }); + } + const needFragmentWrapper = children.length !== 1 || children[0].type !== 1; + const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null; + if (slotOutlet) { + childBlock = slotOutlet.codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + } else if (needFragmentWrapper) { + childBlock = createVNodeCall( + context, + helper(FRAGMENT), + keyProperty ? createObjectExpression([keyProperty]) : void 0, + node.children, + 64, + void 0, + void 0, + true, + void 0, + false + ); + } else { + childBlock = children[0].codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + if (childBlock.isBlock !== !isStableFragment) { + if (childBlock.isBlock) { + removeHelper(OPEN_BLOCK); + removeHelper( + getVNodeBlockHelper(context.inSSR, childBlock.isComponent) + ); + } else { + removeHelper( + getVNodeHelper(context.inSSR, childBlock.isComponent) + ); + } + } + childBlock.isBlock = !isStableFragment; + if (childBlock.isBlock) { + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent)); + } else { + helper(getVNodeHelper(context.inSSR, childBlock.isComponent)); + } + } + if (memo) { + const loop = createFunctionExpression( + createForLoopParams(forNode.parseResult, [ + createSimpleExpression(`_cached`) + ]) + ); + loop.body = createBlockStatement([ + createCompoundExpression([`const _memo = (`, memo.exp, `)`]), + createCompoundExpression([ + `if (_cached`, + ...keyExp ? [` && _cached.key === `, keyExp] : [], + ` && ${context.helperString( + IS_MEMO_SAME + )}(_cached, _memo)) return _cached` + ]), + createCompoundExpression([`const _item = `, childBlock]), + createSimpleExpression(`_item.memo = _memo`), + createSimpleExpression(`return _item`) + ]); + renderExp.arguments.push( + loop, + createSimpleExpression(`_cache`), + createSimpleExpression(String(context.cached.length)) + ); + context.cached.push(null); + } else { + renderExp.arguments.push( + createFunctionExpression( + createForLoopParams(forNode.parseResult), + childBlock, + true + ) + ); + } + }; + }); + } +); +function processFor(node, dir, context, processCodegen) { + if (!dir.exp) { + context.onError( + createCompilerError(31, dir.loc) + ); + return; + } + const parseResult = dir.forParseResult; + if (!parseResult) { + context.onError( + createCompilerError(32, dir.loc) + ); + return; + } + finalizeForParseResult(parseResult, context); + const { addIdentifiers, removeIdentifiers, scopes } = context; + const { source, value, key, index } = parseResult; + const forNode = { + type: 11, + loc: dir.loc, + source, + valueAlias: value, + keyAlias: key, + objectIndexAlias: index, + parseResult, + children: isTemplateNode(node) ? node.children : [node] + }; + context.replaceNode(forNode); + scopes.vFor++; + const onExit = processCodegen && processCodegen(forNode); + return () => { + scopes.vFor--; + if (onExit) onExit(); + }; +} +function finalizeForParseResult(result, context) { + if (result.finalized) return; + if (!!(process.env.NODE_ENV !== "production") && true) { + validateBrowserExpression(result.source, context); + if (result.key) { + validateBrowserExpression( + result.key, + context, + true + ); + } + if (result.index) { + validateBrowserExpression( + result.index, + context, + true + ); + } + if (result.value) { + validateBrowserExpression( + result.value, + context, + true + ); + } + } + result.finalized = true; +} +function createForLoopParams({ value, key, index }, memoArgs = []) { + return createParamsList([value, key, index, ...memoArgs]); +} +function createParamsList(args) { + let i = args.length; + while (i--) { + if (args[i]) break; + } + return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false)); +} + +const defaultFallback = createSimpleExpression(`undefined`, false); +const trackSlotScopes = (node, context) => { + if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) { + const vSlot = findDir(node, "slot"); + if (vSlot) { + vSlot.exp; + context.scopes.vSlot++; + return () => { + context.scopes.vSlot--; + }; + } + } +}; +const trackVForSlotScopes = (node, context) => { + let vFor; + if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, "for"))) { + const result = vFor.forParseResult; + if (result) { + finalizeForParseResult(result, context); + const { value, key, index } = result; + const { addIdentifiers, removeIdentifiers } = context; + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + return () => { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + }; + } + } +}; +const buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression( + props, + children, + false, + true, + children.length ? children[0].loc : loc +); +function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { + context.helper(WITH_CTX); + const { children, loc } = node; + const slotsProperties = []; + const dynamicSlots = []; + let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0; + const onComponentSlot = findDir(node, "slot", true); + if (onComponentSlot) { + const { arg, exp } = onComponentSlot; + if (arg && !isStaticExp(arg)) { + hasDynamicSlots = true; + } + slotsProperties.push( + createObjectProperty( + arg || createSimpleExpression("default", true), + buildSlotFn(exp, void 0, children, loc) + ) + ); + } + let hasTemplateSlots = false; + let hasNamedDefaultSlot = false; + const implicitDefaultChildren = []; + const seenSlotNames = /* @__PURE__ */ new Set(); + let conditionalBranchIndex = 0; + for (let i = 0; i < children.length; i++) { + const slotElement = children[i]; + let slotDir; + if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) { + if (slotElement.type !== 3) { + implicitDefaultChildren.push(slotElement); + } + continue; + } + if (onComponentSlot) { + context.onError( + createCompilerError(37, slotDir.loc) + ); + break; + } + hasTemplateSlots = true; + const { children: slotChildren, loc: slotLoc } = slotElement; + const { + arg: slotName = createSimpleExpression(`default`, true), + exp: slotProps, + loc: dirLoc + } = slotDir; + let staticSlotName; + if (isStaticExp(slotName)) { + staticSlotName = slotName ? slotName.content : `default`; + } else { + hasDynamicSlots = true; + } + const vFor = findDir(slotElement, "for"); + const slotFunction = buildSlotFn(slotProps, vFor, slotChildren, slotLoc); + let vIf; + let vElse; + if (vIf = findDir(slotElement, "if")) { + hasDynamicSlots = true; + dynamicSlots.push( + createConditionalExpression( + vIf.exp, + buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++), + defaultFallback + ) + ); + } else if (vElse = findDir( + slotElement, + /^else(-if)?$/, + true + /* allowEmpty */ + )) { + let j = i; + let prev; + while (j--) { + prev = children[j]; + if (prev.type !== 3 && isNonWhitespaceContent(prev)) { + break; + } + } + if (prev && isTemplateNode(prev) && findDir(prev, /^(else-)?if$/)) { + let conditional = dynamicSlots[dynamicSlots.length - 1]; + while (conditional.alternate.type === 19) { + conditional = conditional.alternate; + } + conditional.alternate = vElse.exp ? createConditionalExpression( + vElse.exp, + buildDynamicSlot( + slotName, + slotFunction, + conditionalBranchIndex++ + ), + defaultFallback + ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++); + } else { + context.onError( + createCompilerError(30, vElse.loc) + ); + } + } else if (vFor) { + hasDynamicSlots = true; + const parseResult = vFor.forParseResult; + if (parseResult) { + finalizeForParseResult(parseResult, context); + dynamicSlots.push( + createCallExpression(context.helper(RENDER_LIST), [ + parseResult.source, + createFunctionExpression( + createForLoopParams(parseResult), + buildDynamicSlot(slotName, slotFunction), + true + ) + ]) + ); + } else { + context.onError( + createCompilerError( + 32, + vFor.loc + ) + ); + } + } else { + if (staticSlotName) { + if (seenSlotNames.has(staticSlotName)) { + context.onError( + createCompilerError( + 38, + dirLoc + ) + ); + continue; + } + seenSlotNames.add(staticSlotName); + if (staticSlotName === "default") { + hasNamedDefaultSlot = true; + } + } + slotsProperties.push(createObjectProperty(slotName, slotFunction)); + } + } + if (!onComponentSlot) { + const buildDefaultSlotProperty = (props, children2) => { + const fn = buildSlotFn(props, void 0, children2, loc); + if (context.compatConfig) { + fn.isNonScopedSlot = true; + } + return createObjectProperty(`default`, fn); + }; + if (!hasTemplateSlots) { + slotsProperties.push(buildDefaultSlotProperty(void 0, children)); + } else if (implicitDefaultChildren.length && // #3766 + // with whitespace: 'preserve', whitespaces between slots will end up in + // implicitDefaultChildren. Ignore if all implicit children are whitespaces. + implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) { + if (hasNamedDefaultSlot) { + context.onError( + createCompilerError( + 39, + implicitDefaultChildren[0].loc + ) + ); + } else { + slotsProperties.push( + buildDefaultSlotProperty(void 0, implicitDefaultChildren) + ); + } + } + } + const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1; + let slots = createObjectExpression( + slotsProperties.concat( + createObjectProperty( + `_`, + // 2 = compiled but dynamic = can skip normalization, but must run diff + // 1 = compiled and static = can skip normalization AND diff as optimized + createSimpleExpression( + slotFlag + (!!(process.env.NODE_ENV !== "production") ? ` /* ${slotFlagsText[slotFlag]} */` : ``), + false + ) + ) + ), + loc + ); + if (dynamicSlots.length) { + slots = createCallExpression(context.helper(CREATE_SLOTS), [ + slots, + createArrayExpression(dynamicSlots) + ]); + } + return { + slots, + hasDynamicSlots + }; +} +function buildDynamicSlot(name, fn, index) { + const props = [ + createObjectProperty(`name`, name), + createObjectProperty(`fn`, fn) + ]; + if (index != null) { + props.push( + createObjectProperty(`key`, createSimpleExpression(String(index), true)) + ); + } + return createObjectExpression(props); +} +function hasForwardedSlots(children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1: + if (child.tagType === 2 || hasForwardedSlots(child.children)) { + return true; + } + break; + case 9: + if (hasForwardedSlots(child.branches)) return true; + break; + case 10: + case 11: + if (hasForwardedSlots(child.children)) return true; + break; + } + } + return false; +} +function isNonWhitespaceContent(node) { + if (node.type !== 2 && node.type !== 12) + return true; + return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content); +} + +const directiveImportMap = /* @__PURE__ */ new WeakMap(); +const transformElement = (node, context) => { + return function postTransformElement() { + node = context.currentNode; + if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) { + return; + } + const { tag, props } = node; + const isComponent = node.tagType === 1; + let vnodeTag = isComponent ? resolveComponentType(node, context) : `"${tag}"`; + const isDynamicComponent = isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT; + let vnodeProps; + let vnodeChildren; + let patchFlag = 0; + let vnodeDynamicProps; + let dynamicPropNames; + let vnodeDirectives; + let shouldUseBlock = ( + // dynamic component may resolve to plain elements + isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block + // updates inside get proper isSVG flag at runtime. (#639, #643) + // This is technically web-specific, but splitting the logic out of core + // leads to too much unnecessary complexity. + (tag === "svg" || tag === "foreignObject" || tag === "math") + ); + if (props.length > 0) { + const propsBuildResult = buildProps( + node, + context, + void 0, + isComponent, + isDynamicComponent + ); + vnodeProps = propsBuildResult.props; + patchFlag = propsBuildResult.patchFlag; + dynamicPropNames = propsBuildResult.dynamicPropNames; + const directives = propsBuildResult.directives; + vnodeDirectives = directives && directives.length ? createArrayExpression( + directives.map((dir) => buildDirectiveArgs(dir, context)) + ) : void 0; + if (propsBuildResult.shouldUseBlock) { + shouldUseBlock = true; + } + } + if (node.children.length > 0) { + if (vnodeTag === KEEP_ALIVE) { + shouldUseBlock = true; + patchFlag |= 1024; + if (!!(process.env.NODE_ENV !== "production") && node.children.length > 1) { + context.onError( + createCompilerError(46, { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: "" + }) + ); + } + } + const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling + vnodeTag !== TELEPORT && // explained above. + vnodeTag !== KEEP_ALIVE; + if (shouldBuildAsSlots) { + const { slots, hasDynamicSlots } = buildSlots(node, context); + vnodeChildren = slots; + if (hasDynamicSlots) { + patchFlag |= 1024; + } + } else if (node.children.length === 1 && vnodeTag !== TELEPORT) { + const child = node.children[0]; + const type = child.type; + const hasDynamicTextChild = type === 5 || type === 8; + if (hasDynamicTextChild && getConstantType(child, context) === 0) { + patchFlag |= 1; + } + if (hasDynamicTextChild || type === 2) { + vnodeChildren = child; + } else { + vnodeChildren = node.children; + } + } else { + vnodeChildren = node.children; + } + } + if (dynamicPropNames && dynamicPropNames.length) { + vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames); + } + node.codegenNode = createVNodeCall( + context, + vnodeTag, + vnodeProps, + vnodeChildren, + patchFlag === 0 ? void 0 : patchFlag, + vnodeDynamicProps, + vnodeDirectives, + !!shouldUseBlock, + false, + isComponent, + node.loc + ); + }; +}; +function resolveComponentType(node, context, ssr = false) { + let { tag } = node; + const isExplicitDynamic = isComponentTag(tag); + const isProp = findProp( + node, + "is", + false, + true + /* allow empty */ + ); + if (isProp) { + if (isExplicitDynamic || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + )) { + let exp; + if (isProp.type === 6) { + exp = isProp.value && createSimpleExpression(isProp.value.content, true); + } else { + exp = isProp.exp; + if (!exp) { + exp = createSimpleExpression(`is`, false, isProp.arg.loc); + } + } + if (exp) { + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + exp + ]); + } + } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) { + tag = isProp.value.content.slice(4); + } + } + const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag); + if (builtIn) { + if (!ssr) context.helper(builtIn); + return builtIn; + } + context.helper(RESOLVE_COMPONENT); + context.components.add(tag); + return toValidAssetId(tag, `component`); +} +function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) { + const { tag, loc: elementLoc, children } = node; + let properties = []; + const mergeArgs = []; + const runtimeDirectives = []; + const hasChildren = children.length > 0; + let shouldUseBlock = false; + let patchFlag = 0; + let hasRef = false; + let hasClassBinding = false; + let hasStyleBinding = false; + let hasHydrationEventBinding = false; + let hasDynamicKeys = false; + let hasVnodeHook = false; + const dynamicPropNames = []; + const pushMergeArg = (arg) => { + if (properties.length) { + mergeArgs.push( + createObjectExpression(dedupeProperties(properties), elementLoc) + ); + properties = []; + } + if (arg) mergeArgs.push(arg); + }; + const pushRefVForMarker = () => { + if (context.scopes.vFor > 0) { + properties.push( + createObjectProperty( + createSimpleExpression("ref_for", true), + createSimpleExpression("true") + ) + ); + } + }; + const analyzePatchFlag = ({ key, value }) => { + if (isStaticExp(key)) { + const name = key.content; + const isEventHandler = isOn(name); + if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click + // dedicated fast path. + name.toLowerCase() !== "onclick" && // omit v-model handlers + name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks + !isReservedProp(name)) { + hasHydrationEventBinding = true; + } + if (isEventHandler && isReservedProp(name)) { + hasVnodeHook = true; + } + if (isEventHandler && value.type === 14) { + value = value.arguments[0]; + } + if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) { + return; + } + if (name === "ref") { + hasRef = true; + } else if (name === "class") { + hasClassBinding = true; + } else if (name === "style") { + hasStyleBinding = true; + } else if (name !== "key" && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + if (isComponent && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + } else { + hasDynamicKeys = true; + } + }; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 6) { + const { loc, name, nameLoc, value } = prop; + let isStatic = true; + if (name === "ref") { + hasRef = true; + pushRefVForMarker(); + } + if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + properties.push( + createObjectProperty( + createSimpleExpression(name, true, nameLoc), + createSimpleExpression( + value ? value.content : "", + isStatic, + value ? value.loc : loc + ) + ) + ); + } else { + const { name, arg, exp, loc, modifiers } = prop; + const isVBind = name === "bind"; + const isVOn = name === "on"; + if (name === "slot") { + if (!isComponent) { + context.onError( + createCompilerError(40, loc) + ); + } + continue; + } + if (name === "once" || name === "memo") { + continue; + } + if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + if (isVOn && ssr) { + continue; + } + if ( + // #938: elements with dynamic keys should be forced into blocks + isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked + // before children + isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update") + ) { + shouldUseBlock = true; + } + if (isVBind && isStaticArgOf(arg, "ref")) { + pushRefVForMarker(); + } + if (!arg && (isVBind || isVOn)) { + hasDynamicKeys = true; + if (exp) { + if (isVBind) { + { + pushMergeArg(); + if (!!(process.env.NODE_ENV !== "production")) { + const hasOverridableKeys = mergeArgs.some((arg2) => { + if (arg2.type === 15) { + return arg2.properties.some(({ key }) => { + if (key.type !== 4 || !key.isStatic) { + return true; + } + return key.content !== "class" && key.content !== "style" && !isOn(key.content); + }); + } else { + return true; + } + }); + if (hasOverridableKeys) { + checkCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context, + loc + ); + } + } + if (isCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context + )) { + mergeArgs.unshift(exp); + continue; + } + } + pushRefVForMarker(); + pushMergeArg(); + mergeArgs.push(exp); + } else { + pushMergeArg({ + type: 14, + loc, + callee: context.helper(TO_HANDLERS), + arguments: isComponent ? [exp] : [exp, `true`] + }); + } + } else { + context.onError( + createCompilerError( + isVBind ? 34 : 35, + loc + ) + ); + } + continue; + } + if (isVBind && modifiers.some((mod) => mod.content === "prop")) { + patchFlag |= 32; + } + const directiveTransform = context.directiveTransforms[name]; + if (directiveTransform) { + const { props: props2, needRuntime } = directiveTransform(prop, node, context); + !ssr && props2.forEach(analyzePatchFlag); + if (isVOn && arg && !isStaticExp(arg)) { + pushMergeArg(createObjectExpression(props2, elementLoc)); + } else { + properties.push(...props2); + } + if (needRuntime) { + runtimeDirectives.push(prop); + if (isSymbol(needRuntime)) { + directiveImportMap.set(prop, needRuntime); + } + } + } else if (!isBuiltInDirective(name)) { + runtimeDirectives.push(prop); + if (hasChildren) { + shouldUseBlock = true; + } + } + } + } + let propsExpression = void 0; + if (mergeArgs.length) { + pushMergeArg(); + if (mergeArgs.length > 1) { + propsExpression = createCallExpression( + context.helper(MERGE_PROPS), + mergeArgs, + elementLoc + ); + } else { + propsExpression = mergeArgs[0]; + } + } else if (properties.length) { + propsExpression = createObjectExpression( + dedupeProperties(properties), + elementLoc + ); + } + if (hasDynamicKeys) { + patchFlag |= 16; + } else { + if (hasClassBinding && !isComponent) { + patchFlag |= 2; + } + if (hasStyleBinding && !isComponent) { + patchFlag |= 4; + } + if (dynamicPropNames.length) { + patchFlag |= 8; + } + if (hasHydrationEventBinding) { + patchFlag |= 32; + } + } + if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) { + patchFlag |= 512; + } + if (!context.inSSR && propsExpression) { + switch (propsExpression.type) { + case 15: + let classKeyIndex = -1; + let styleKeyIndex = -1; + let hasDynamicKey = false; + for (let i = 0; i < propsExpression.properties.length; i++) { + const key = propsExpression.properties[i].key; + if (isStaticExp(key)) { + if (key.content === "class") { + classKeyIndex = i; + } else if (key.content === "style") { + styleKeyIndex = i; + } + } else if (!key.isHandlerKey) { + hasDynamicKey = true; + } + } + const classProp = propsExpression.properties[classKeyIndex]; + const styleProp = propsExpression.properties[styleKeyIndex]; + if (!hasDynamicKey) { + if (classProp && !isStaticExp(classProp.value)) { + classProp.value = createCallExpression( + context.helper(NORMALIZE_CLASS), + [classProp.value] + ); + } + if (styleProp && // the static style is compiled into an object, + // so use `hasStyleBinding` to ensure that it is a dynamic style binding + (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist, + // v-bind:style with static literal object + styleProp.value.type === 17)) { + styleProp.value = createCallExpression( + context.helper(NORMALIZE_STYLE), + [styleProp.value] + ); + } + } else { + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [propsExpression] + ); + } + break; + case 14: + break; + default: + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [ + createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [ + propsExpression + ]) + ] + ); + break; + } + } + return { + props: propsExpression, + directives: runtimeDirectives, + patchFlag, + dynamicPropNames, + shouldUseBlock + }; +} +function dedupeProperties(properties) { + const knownProps = /* @__PURE__ */ new Map(); + const deduped = []; + for (let i = 0; i < properties.length; i++) { + const prop = properties[i]; + if (prop.key.type === 8 || !prop.key.isStatic) { + deduped.push(prop); + continue; + } + const name = prop.key.content; + const existing = knownProps.get(name); + if (existing) { + if (name === "style" || name === "class" || isOn(name)) { + mergeAsArray(existing, prop); + } + } else { + knownProps.set(name, prop); + deduped.push(prop); + } + } + return deduped; +} +function mergeAsArray(existing, incoming) { + if (existing.value.type === 17) { + existing.value.elements.push(incoming.value); + } else { + existing.value = createArrayExpression( + [existing.value, incoming.value], + existing.loc + ); + } +} +function buildDirectiveArgs(dir, context) { + const dirArgs = []; + const runtime = directiveImportMap.get(dir); + if (runtime) { + dirArgs.push(context.helperString(runtime)); + } else { + { + context.helper(RESOLVE_DIRECTIVE); + context.directives.add(dir.name); + dirArgs.push(toValidAssetId(dir.name, `directive`)); + } + } + const { loc } = dir; + if (dir.exp) dirArgs.push(dir.exp); + if (dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(dir.arg); + } + if (Object.keys(dir.modifiers).length) { + if (!dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(`void 0`); + } + const trueExpression = createSimpleExpression(`true`, false, loc); + dirArgs.push( + createObjectExpression( + dir.modifiers.map( + (modifier) => createObjectProperty(modifier, trueExpression) + ), + loc + ) + ); + } + return createArrayExpression(dirArgs, dir.loc); +} +function stringifyDynamicPropNames(props) { + let propsNamesString = `[`; + for (let i = 0, l = props.length; i < l; i++) { + propsNamesString += JSON.stringify(props[i]); + if (i < l - 1) propsNamesString += ", "; + } + return propsNamesString + `]`; +} +function isComponentTag(tag) { + return tag === "component" || tag === "Component"; +} + +const transformSlotOutlet = (node, context) => { + if (isSlotOutlet(node)) { + const { children, loc } = node; + const { slotName, slotProps } = processSlotOutlet(node, context); + const slotArgs = [ + context.prefixIdentifiers ? `_ctx.$slots` : `$slots`, + slotName, + "{}", + "undefined", + "true" + ]; + let expectedLen = 2; + if (slotProps) { + slotArgs[2] = slotProps; + expectedLen = 3; + } + if (children.length) { + slotArgs[3] = createFunctionExpression([], children, false, false, loc); + expectedLen = 4; + } + if (context.scopeId && !context.slotted) { + expectedLen = 5; + } + slotArgs.splice(expectedLen); + node.codegenNode = createCallExpression( + context.helper(RENDER_SLOT), + slotArgs, + loc + ); + } +}; +function processSlotOutlet(node, context) { + let slotName = `"default"`; + let slotProps = void 0; + const nonNameProps = []; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (p.value) { + if (p.name === "name") { + slotName = JSON.stringify(p.value.content); + } else { + p.name = camelize(p.name); + nonNameProps.push(p); + } + } + } else { + if (p.name === "bind" && isStaticArgOf(p.arg, "name")) { + if (p.exp) { + slotName = p.exp; + } else if (p.arg && p.arg.type === 4) { + const name = camelize(p.arg.content); + slotName = p.exp = createSimpleExpression(name, false, p.arg.loc); + } + } else { + if (p.name === "bind" && p.arg && isStaticExp(p.arg)) { + p.arg.content = camelize(p.arg.content); + } + nonNameProps.push(p); + } + } + } + if (nonNameProps.length > 0) { + const { props, directives } = buildProps( + node, + context, + nonNameProps, + false, + false + ); + slotProps = props; + if (directives.length) { + context.onError( + createCompilerError( + 36, + directives[0].loc + ) + ); + } + } + return { + slotName, + slotProps + }; +} + +const transformOn = (dir, node, context, augmentor) => { + const { loc, modifiers, arg } = dir; + if (!dir.exp && !modifiers.length) { + context.onError(createCompilerError(35, loc)); + } + let eventName; + if (arg.type === 4) { + if (arg.isStatic) { + let rawName = arg.content; + if (!!(process.env.NODE_ENV !== "production") && rawName.startsWith("vnode")) { + context.onError(createCompilerError(51, arg.loc)); + } + if (rawName.startsWith("vue:")) { + rawName = `vnode-${rawName.slice(4)}`; + } + const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? ( + // for non-element and vnode lifecycle event listeners, auto convert + // it to camelCase. See issue #2249 + toHandlerKey(camelize(rawName)) + ) : ( + // preserve case for plain element listeners that have uppercase + // letters, as these may be custom elements' custom events + `on:${rawName}` + ); + eventName = createSimpleExpression(eventString, true, arg.loc); + } else { + eventName = createCompoundExpression([ + `${context.helperString(TO_HANDLER_KEY)}(`, + arg, + `)` + ]); + } + } else { + eventName = arg; + eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`); + eventName.children.push(`)`); + } + let exp = dir.exp; + if (exp && !exp.content.trim()) { + exp = void 0; + } + let shouldCache = context.cacheHandlers && !exp && !context.inVOnce; + if (exp) { + const isMemberExp = isMemberExpression(exp); + const isInlineStatement = !(isMemberExp || isFnExpression(exp)); + const hasMultipleStatements = exp.content.includes(`;`); + if (!!(process.env.NODE_ENV !== "production") && true) { + validateBrowserExpression( + exp, + context, + false, + hasMultipleStatements + ); + } + if (isInlineStatement || shouldCache && isMemberExp) { + exp = createCompoundExpression([ + `${isInlineStatement ? `$event` : `${``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`, + exp, + hasMultipleStatements ? `}` : `)` + ]); + } + } + let ret = { + props: [ + createObjectProperty( + eventName, + exp || createSimpleExpression(`() => {}`, false, loc) + ) + ] + }; + if (augmentor) { + ret = augmentor(ret); + } + if (shouldCache) { + ret.props[0].value = context.cache(ret.props[0].value); + } + ret.props.forEach((p) => p.key.isHandlerKey = true); + return ret; +}; + +const transformText = (node, context) => { + if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) { + return () => { + const children = node.children; + let currentContainer = void 0; + let hasText = false; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child)) { + hasText = true; + for (let j = i + 1; j < children.length; j++) { + const next = children[j]; + if (isText$1(next)) { + if (!currentContainer) { + currentContainer = children[i] = createCompoundExpression( + [child], + child.loc + ); + } + currentContainer.children.push(` + `, next); + children.splice(j, 1); + j--; + } else { + currentContainer = void 0; + break; + } + } + } + } + if (!hasText || // if this is a plain element with a single text child, leave it + // as-is since the runtime has dedicated fast path for this by directly + // setting textContent of the element. + // for component root it's always normalized anyway. + children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756 + // custom directives can potentially add DOM elements arbitrarily, + // we need to avoid setting textContent of the element at runtime + // to avoid accidentally overwriting the DOM elements added + // by the user through custom directives. + !node.props.find( + (p) => p.type === 7 && !context.directiveTransforms[p.name] + ) && // in compat mode, <template> tags with no special directives + // will be rendered as a fragment so its children must be + // converted into vnodes. + !(node.tag === "template"))) { + return; + } + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child) || child.type === 8) { + const callArgs = []; + if (child.type !== 2 || child.content !== " ") { + callArgs.push(child); + } + if (!context.ssr && getConstantType(child, context) === 0) { + callArgs.push( + 1 + (!!(process.env.NODE_ENV !== "production") ? ` /* ${PatchFlagNames[1]} */` : ``) + ); + } + children[i] = { + type: 12, + content: child, + loc: child.loc, + codegenNode: createCallExpression( + context.helper(CREATE_TEXT), + callArgs + ) + }; + } + } + }; + } +}; + +const seen$1 = /* @__PURE__ */ new WeakSet(); +const transformOnce = (node, context) => { + if (node.type === 1 && findDir(node, "once", true)) { + if (seen$1.has(node) || context.inVOnce || context.inSSR) { + return; + } + seen$1.add(node); + context.inVOnce = true; + context.helper(SET_BLOCK_TRACKING); + return () => { + context.inVOnce = false; + const cur = context.currentNode; + if (cur.codegenNode) { + cur.codegenNode = context.cache( + cur.codegenNode, + true, + true + ); + } + }; + } +}; + +const transformModel = (dir, node, context) => { + const { exp, arg } = dir; + if (!exp) { + context.onError( + createCompilerError(41, dir.loc) + ); + return createTransformProps(); + } + const rawExp = exp.loc.source.trim(); + const expString = exp.type === 4 ? exp.content : rawExp; + const bindingType = context.bindingMetadata[rawExp]; + if (bindingType === "props" || bindingType === "props-aliased") { + context.onError(createCompilerError(44, exp.loc)); + return createTransformProps(); + } + if (!expString.trim() || !isMemberExpression(exp) && true) { + context.onError( + createCompilerError(42, exp.loc) + ); + return createTransformProps(); + } + const propName = arg ? arg : createSimpleExpression("modelValue", true); + const eventName = arg ? isStaticExp(arg) ? `onUpdate:${camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`; + let assignmentExp; + const eventArg = context.isTS ? `($event: any)` : `$event`; + { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + exp, + `) = $event)` + ]); + } + const props = [ + // modelValue: foo + createObjectProperty(propName, dir.exp), + // "onUpdate:modelValue": $event => (foo = $event) + createObjectProperty(eventName, assignmentExp) + ]; + if (dir.modifiers.length && node.tagType === 1) { + const modifiers = dir.modifiers.map((m) => m.content).map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `); + const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`; + props.push( + createObjectProperty( + modifiersKey, + createSimpleExpression( + `{ ${modifiers} }`, + false, + dir.loc, + 2 + ) + ) + ); + } + return createTransformProps(props); +}; +function createTransformProps(props = []) { + return { props }; +} + +const validDivisionCharRE = /[\w).+\-_$\]]/; +const transformFilter = (node, context) => { + if (!isCompatEnabled("COMPILER_FILTERS", context)) { + return; + } + if (node.type === 5) { + rewriteFilter(node.content, context); + } else if (node.type === 1) { + node.props.forEach((prop) => { + if (prop.type === 7 && prop.name !== "for" && prop.exp) { + rewriteFilter(prop.exp, context); + } + }); + } +}; +function rewriteFilter(node, context) { + if (node.type === 4) { + parseFilter(node, context); + } else { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (typeof child !== "object") continue; + if (child.type === 4) { + parseFilter(child, context); + } else if (child.type === 8) { + rewriteFilter(node, context); + } else if (child.type === 5) { + rewriteFilter(child.content, context); + } + } + } +} +function parseFilter(node, context) { + const exp = node.content; + let inSingle = false; + let inDouble = false; + let inTemplateString = false; + let inRegex = false; + let curly = 0; + let square = 0; + let paren = 0; + let lastFilterIndex = 0; + let c, prev, i, expression, filters = []; + for (i = 0; i < exp.length; i++) { + prev = c; + c = exp.charCodeAt(i); + if (inSingle) { + if (c === 39 && prev !== 92) inSingle = false; + } else if (inDouble) { + if (c === 34 && prev !== 92) inDouble = false; + } else if (inTemplateString) { + if (c === 96 && prev !== 92) inTemplateString = false; + } else if (inRegex) { + if (c === 47 && prev !== 92) inRegex = false; + } else if (c === 124 && // pipe + exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) { + if (expression === void 0) { + lastFilterIndex = i + 1; + expression = exp.slice(0, i).trim(); + } else { + pushFilter(); + } + } else { + switch (c) { + case 34: + inDouble = true; + break; + // " + case 39: + inSingle = true; + break; + // ' + case 96: + inTemplateString = true; + break; + // ` + case 40: + paren++; + break; + // ( + case 41: + paren--; + break; + // ) + case 91: + square++; + break; + // [ + case 93: + square--; + break; + // ] + case 123: + curly++; + break; + // { + case 125: + curly--; + break; + } + if (c === 47) { + let j = i - 1; + let p; + for (; j >= 0; j--) { + p = exp.charAt(j); + if (p !== " ") break; + } + if (!p || !validDivisionCharRE.test(p)) { + inRegex = true; + } + } + } + } + if (expression === void 0) { + expression = exp.slice(0, i).trim(); + } else if (lastFilterIndex !== 0) { + pushFilter(); + } + function pushFilter() { + filters.push(exp.slice(lastFilterIndex, i).trim()); + lastFilterIndex = i + 1; + } + if (filters.length) { + !!(process.env.NODE_ENV !== "production") && warnDeprecation( + "COMPILER_FILTERS", + context, + node.loc + ); + for (i = 0; i < filters.length; i++) { + expression = wrapFilter(expression, filters[i], context); + } + node.content = expression; + node.ast = void 0; + } +} +function wrapFilter(exp, filter, context) { + context.helper(RESOLVE_FILTER); + const i = filter.indexOf("("); + if (i < 0) { + context.filters.add(filter); + return `${toValidAssetId(filter, "filter")}(${exp})`; + } else { + const name = filter.slice(0, i); + const args = filter.slice(i + 1); + context.filters.add(name); + return `${toValidAssetId(name, "filter")}(${exp}${args !== ")" ? "," + args : args}`; + } +} + +const seen = /* @__PURE__ */ new WeakSet(); +const transformMemo = (node, context) => { + if (node.type === 1) { + const dir = findDir(node, "memo"); + if (!dir || seen.has(node)) { + return; + } + seen.add(node); + return () => { + const codegenNode = node.codegenNode || context.currentNode.codegenNode; + if (codegenNode && codegenNode.type === 13) { + if (node.tagType !== 1) { + convertToBlock(codegenNode, context); + } + node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [ + dir.exp, + createFunctionExpression(void 0, codegenNode), + `_cache`, + String(context.cached.length) + ]); + context.cached.push(null); + } + }; + } +}; + +function getBaseTransformPreset(prefixIdentifiers) { + return [ + [ + transformOnce, + transformIf, + transformMemo, + transformFor, + ...[transformFilter] , + ...!!(process.env.NODE_ENV !== "production") ? [transformExpression] : [], + transformSlotOutlet, + transformElement, + trackSlotScopes, + transformText + ], + { + on: transformOn, + bind: transformBind, + model: transformModel + } + ]; +} +function baseCompile(source, options = {}) { + const onError = options.onError || defaultOnError; + const isModuleMode = options.mode === "module"; + { + if (options.prefixIdentifiers === true) { + onError(createCompilerError(47)); + } else if (isModuleMode) { + onError(createCompilerError(48)); + } + } + const prefixIdentifiers = false; + if (options.cacheHandlers) { + onError(createCompilerError(49)); + } + if (options.scopeId && !isModuleMode) { + onError(createCompilerError(50)); + } + const resolvedOptions = extend({}, options, { + prefixIdentifiers + }); + const ast = isString(source) ? baseParse(source, resolvedOptions) : source; + const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(); + transform( + ast, + extend({}, resolvedOptions, { + nodeTransforms: [ + ...nodeTransforms, + ...options.nodeTransforms || [] + // user transforms + ], + directiveTransforms: extend( + {}, + directiveTransforms, + options.directiveTransforms || {} + // user transforms + ) + }) + ); + return generate(ast, resolvedOptions); +} + +const BindingTypes = { + "DATA": "data", + "PROPS": "props", + "PROPS_ALIASED": "props-aliased", + "SETUP_LET": "setup-let", + "SETUP_CONST": "setup-const", + "SETUP_REACTIVE_CONST": "setup-reactive-const", + "SETUP_MAYBE_REF": "setup-maybe-ref", + "SETUP_REF": "setup-ref", + "OPTIONS": "options", + "LITERAL_CONST": "literal-const" +}; + +const noopDirectiveTransform = () => ({ props: [] }); + +export { BASE_TRANSITION, BindingTypes, CAMELIZE, CAPITALIZE, CREATE_BLOCK, CREATE_COMMENT, CREATE_ELEMENT_BLOCK, CREATE_ELEMENT_VNODE, CREATE_SLOTS, CREATE_STATIC, CREATE_TEXT, CREATE_VNODE, CompilerDeprecationTypes, ConstantTypes, ElementTypes, ErrorCodes, FRAGMENT, GUARD_REACTIVE_PROPS, IS_MEMO_SAME, IS_REF, KEEP_ALIVE, MERGE_PROPS, NORMALIZE_CLASS, NORMALIZE_PROPS, NORMALIZE_STYLE, Namespaces, NodeTypes, OPEN_BLOCK, POP_SCOPE_ID, PUSH_SCOPE_ID, RENDER_LIST, RENDER_SLOT, RESOLVE_COMPONENT, RESOLVE_DIRECTIVE, RESOLVE_DYNAMIC_COMPONENT, RESOLVE_FILTER, SET_BLOCK_TRACKING, SUSPENSE, TELEPORT, TO_DISPLAY_STRING, TO_HANDLERS, TO_HANDLER_KEY, TS_NODE_TYPES, UNREF, WITH_CTX, WITH_DIRECTIVES, WITH_MEMO, advancePositionWithClone, advancePositionWithMutation, assert, baseCompile, baseParse, buildDirectiveArgs, buildProps, buildSlots, checkCompatEnabled, convertToBlock, createArrayExpression, createAssignmentExpression, createBlockStatement, createCacheExpression, createCallExpression, createCompilerError, createCompoundExpression, createConditionalExpression, createForLoopParams, createFunctionExpression, createIfStatement, createInterpolation, createObjectExpression, createObjectProperty, createReturnStatement, createRoot, createSequenceExpression, createSimpleExpression, createStructuralDirectiveTransform, createTemplateLiteral, createTransformContext, createVNodeCall, errorMessages, extractIdentifiers, findDir, findProp, forAliasRE, generate, getBaseTransformPreset, getConstantType, getMemoedVNodeCall, getVNodeBlockHelper, getVNodeHelper, hasDynamicKeyVBind, hasScopeRef, helperNameMap, injectProp, isCoreComponent, isFnExpression, isFnExpressionBrowser, isFnExpressionNode, isFunctionType, isInDestructureAssignment, isInNewExpression, isMemberExpression, isMemberExpressionBrowser, isMemberExpressionNode, isReferencedIdentifier, isSimpleIdentifier, isSlotOutlet, isStaticArgOf, isStaticExp, isStaticProperty, isStaticPropertyKey, isTemplateNode, isText$1 as isText, isVPre, isVSlot, locStub, noopDirectiveTransform, processExpression, processFor, processIf, processSlotOutlet, registerRuntimeHelpers, resolveComponentType, stringifyExpression, toValidAssetId, trackSlotScopes, trackVForSlotScopes, transform, transformBind, transformElement, transformExpression, transformModel, transformOn, traverseNode, unwrapTSNode, walkBlockDeclarations, walkFunctionParams, walkIdentifiers, warnDeprecation }; diff --git a/node_modules/@vue/compiler-core/index.js b/node_modules/@vue/compiler-core/index.js new file mode 100644 index 0000000..d3fc54f --- /dev/null +++ b/node_modules/@vue/compiler-core/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/compiler-core.cjs.prod.js') +} else { + module.exports = require('./dist/compiler-core.cjs.js') +} diff --git a/node_modules/@vue/compiler-core/package.json b/node_modules/@vue/compiler-core/package.json new file mode 100644 index 0000000..621db13 --- /dev/null +++ b/node_modules/@vue/compiler-core/package.json @@ -0,0 +1,58 @@ +{ + "name": "@vue/compiler-core", + "version": "3.5.18", + "description": "@vue/compiler-core", + "main": "index.js", + "module": "dist/compiler-core.esm-bundler.js", + "types": "dist/compiler-core.d.ts", + "files": [ + "index.js", + "dist" + ], + "exports": { + ".": { + "types": "./dist/compiler-core.d.ts", + "node": { + "production": "./dist/compiler-core.cjs.prod.js", + "development": "./dist/compiler-core.cjs.js", + "default": "./index.js" + }, + "module": "./dist/compiler-core.esm-bundler.js", + "import": "./dist/compiler-core.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, + "buildOptions": { + "name": "VueCompilerCore", + "compat": true, + "formats": [ + "esm-bundler", + "cjs" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/compiler-core" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-core#readme", + "dependencies": { + "@babel/parser": "^7.28.0", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1", + "@vue/shared": "3.5.18" + }, + "devDependencies": { + "@babel/types": "^7.28.1" + } +} \ No newline at end of file diff --git a/node_modules/@vue/compiler-dom/LICENSE b/node_modules/@vue/compiler-dom/LICENSE new file mode 100644 index 0000000..15f1f7e --- /dev/null +++ b/node_modules/@vue/compiler-dom/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018-present, Yuxi (Evan) You + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@vue/compiler-dom/README.md b/node_modules/@vue/compiler-dom/README.md new file mode 100644 index 0000000..57748e6 --- /dev/null +++ b/node_modules/@vue/compiler-dom/README.md @@ -0,0 +1 @@ +# @vue/compiler-dom diff --git a/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js b/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js new file mode 100644 index 0000000..b3464d2 --- /dev/null +++ b/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js @@ -0,0 +1,931 @@ +/** +* @vue/compiler-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var compilerCore = require('@vue/compiler-core'); +var shared = require('@vue/shared'); + +const V_MODEL_RADIO = Symbol(`vModelRadio` ); +const V_MODEL_CHECKBOX = Symbol( + `vModelCheckbox` +); +const V_MODEL_TEXT = Symbol(`vModelText` ); +const V_MODEL_SELECT = Symbol( + `vModelSelect` +); +const V_MODEL_DYNAMIC = Symbol( + `vModelDynamic` +); +const V_ON_WITH_MODIFIERS = Symbol( + `vOnModifiersGuard` +); +const V_ON_WITH_KEYS = Symbol( + `vOnKeysGuard` +); +const V_SHOW = Symbol(`vShow` ); +const TRANSITION = Symbol(`Transition` ); +const TRANSITION_GROUP = Symbol( + `TransitionGroup` +); +compilerCore.registerRuntimeHelpers({ + [V_MODEL_RADIO]: `vModelRadio`, + [V_MODEL_CHECKBOX]: `vModelCheckbox`, + [V_MODEL_TEXT]: `vModelText`, + [V_MODEL_SELECT]: `vModelSelect`, + [V_MODEL_DYNAMIC]: `vModelDynamic`, + [V_ON_WITH_MODIFIERS]: `withModifiers`, + [V_ON_WITH_KEYS]: `withKeys`, + [V_SHOW]: `vShow`, + [TRANSITION]: `Transition`, + [TRANSITION_GROUP]: `TransitionGroup` +}); + +const parserOptions = { + parseMode: "html", + isVoidTag: shared.isVoidTag, + isNativeTag: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag) || shared.isMathMLTag(tag), + isPreTag: (tag) => tag === "pre", + isIgnoreNewlineTag: (tag) => tag === "pre" || tag === "textarea", + decodeEntities: void 0, + isBuiltInComponent: (tag) => { + if (tag === "Transition" || tag === "transition") { + return TRANSITION; + } else if (tag === "TransitionGroup" || tag === "transition-group") { + return TRANSITION_GROUP; + } + }, + // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher + getNamespace(tag, parent, rootNamespace) { + let ns = parent ? parent.ns : rootNamespace; + if (parent && ns === 2) { + if (parent.tag === "annotation-xml") { + if (tag === "svg") { + return 1; + } + if (parent.props.some( + (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml") + )) { + ns = 0; + } + } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") { + ns = 0; + } + } else if (parent && ns === 1) { + if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") { + ns = 0; + } + } + if (ns === 0) { + if (tag === "svg") { + return 1; + } + if (tag === "math") { + return 2; + } + } + return ns; + } +}; + +const transformStyle = (node) => { + if (node.type === 1) { + node.props.forEach((p, i) => { + if (p.type === 6 && p.name === "style" && p.value) { + node.props[i] = { + type: 7, + name: `bind`, + arg: compilerCore.createSimpleExpression(`style`, true, p.loc), + exp: parseInlineCSS(p.value.content, p.loc), + modifiers: [], + loc: p.loc + }; + } + }); + } +}; +const parseInlineCSS = (cssText, loc) => { + const normalized = shared.parseStringStyle(cssText); + return compilerCore.createSimpleExpression( + JSON.stringify(normalized), + false, + loc, + 3 + ); +}; + +function createDOMCompilerError(code, loc) { + return compilerCore.createCompilerError( + code, + loc, + DOMErrorMessages + ); +} +const DOMErrorCodes = { + "X_V_HTML_NO_EXPRESSION": 53, + "53": "X_V_HTML_NO_EXPRESSION", + "X_V_HTML_WITH_CHILDREN": 54, + "54": "X_V_HTML_WITH_CHILDREN", + "X_V_TEXT_NO_EXPRESSION": 55, + "55": "X_V_TEXT_NO_EXPRESSION", + "X_V_TEXT_WITH_CHILDREN": 56, + "56": "X_V_TEXT_WITH_CHILDREN", + "X_V_MODEL_ON_INVALID_ELEMENT": 57, + "57": "X_V_MODEL_ON_INVALID_ELEMENT", + "X_V_MODEL_ARG_ON_ELEMENT": 58, + "58": "X_V_MODEL_ARG_ON_ELEMENT", + "X_V_MODEL_ON_FILE_INPUT_ELEMENT": 59, + "59": "X_V_MODEL_ON_FILE_INPUT_ELEMENT", + "X_V_MODEL_UNNECESSARY_VALUE": 60, + "60": "X_V_MODEL_UNNECESSARY_VALUE", + "X_V_SHOW_NO_EXPRESSION": 61, + "61": "X_V_SHOW_NO_EXPRESSION", + "X_TRANSITION_INVALID_CHILDREN": 62, + "62": "X_TRANSITION_INVALID_CHILDREN", + "X_IGNORED_SIDE_EFFECT_TAG": 63, + "63": "X_IGNORED_SIDE_EFFECT_TAG", + "__EXTEND_POINT__": 64, + "64": "__EXTEND_POINT__" +}; +const DOMErrorMessages = { + [53]: `v-html is missing expression.`, + [54]: `v-html will override element children.`, + [55]: `v-text is missing expression.`, + [56]: `v-text will override element children.`, + [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`, + [58]: `v-model argument is not supported on plain elements.`, + [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`, + [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`, + [61]: `v-show is missing expression.`, + [62]: `<Transition> expects exactly one child element or component.`, + [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.` +}; + +const transformVHtml = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(53, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(54, loc) + ); + node.children.length = 0; + } + return { + props: [ + compilerCore.createObjectProperty( + compilerCore.createSimpleExpression(`innerHTML`, true, loc), + exp || compilerCore.createSimpleExpression("", true) + ) + ] + }; +}; + +const transformVText = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(55, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(56, loc) + ); + node.children.length = 0; + } + return { + props: [ + compilerCore.createObjectProperty( + compilerCore.createSimpleExpression(`textContent`, true), + exp ? compilerCore.getConstantType(exp, context) > 0 ? exp : compilerCore.createCallExpression( + context.helperString(compilerCore.TO_DISPLAY_STRING), + [exp], + loc + ) : compilerCore.createSimpleExpression("", true) + ) + ] + }; +}; + +const transformModel = (dir, node, context) => { + const baseResult = compilerCore.transformModel(dir, node, context); + if (!baseResult.props.length || node.tagType === 1) { + return baseResult; + } + if (dir.arg) { + context.onError( + createDOMCompilerError( + 58, + dir.arg.loc + ) + ); + } + function checkDuplicatedValue() { + const value = compilerCore.findDir(node, "bind"); + if (value && compilerCore.isStaticArgOf(value.arg, "value")) { + context.onError( + createDOMCompilerError( + 60, + value.loc + ) + ); + } + } + const { tag } = node; + const isCustomElement = context.isCustomElement(tag); + if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) { + let directiveToUse = V_MODEL_TEXT; + let isInvalidType = false; + if (tag === "input" || isCustomElement) { + const type = compilerCore.findProp(node, `type`); + if (type) { + if (type.type === 7) { + directiveToUse = V_MODEL_DYNAMIC; + } else if (type.value) { + switch (type.value.content) { + case "radio": + directiveToUse = V_MODEL_RADIO; + break; + case "checkbox": + directiveToUse = V_MODEL_CHECKBOX; + break; + case "file": + isInvalidType = true; + context.onError( + createDOMCompilerError( + 59, + dir.loc + ) + ); + break; + default: + checkDuplicatedValue(); + break; + } + } + } else if (compilerCore.hasDynamicKeyVBind(node)) { + directiveToUse = V_MODEL_DYNAMIC; + } else { + checkDuplicatedValue(); + } + } else if (tag === "select") { + directiveToUse = V_MODEL_SELECT; + } else { + checkDuplicatedValue(); + } + if (!isInvalidType) { + baseResult.needRuntime = context.helper(directiveToUse); + } + } else { + context.onError( + createDOMCompilerError( + 57, + dir.loc + ) + ); + } + baseResult.props = baseResult.props.filter( + (p) => !(p.key.type === 4 && p.key.content === "modelValue") + ); + return baseResult; +}; + +const isEventOptionModifier = /* @__PURE__ */ shared.makeMap(`passive,once,capture`); +const isNonKeyModifier = /* @__PURE__ */ shared.makeMap( + // event propagation management + `stop,prevent,self,ctrl,shift,alt,meta,exact,middle` +); +const maybeKeyModifier = /* @__PURE__ */ shared.makeMap("left,right"); +const isKeyboardEvent = /* @__PURE__ */ shared.makeMap(`onkeyup,onkeydown,onkeypress`); +const resolveModifiers = (key, modifiers, context, loc) => { + const keyModifiers = []; + const nonKeyModifiers = []; + const eventOptionModifiers = []; + for (let i = 0; i < modifiers.length; i++) { + const modifier = modifiers[i].content; + if (modifier === "native" && compilerCore.checkCompatEnabled( + "COMPILER_V_ON_NATIVE", + context, + loc + )) { + eventOptionModifiers.push(modifier); + } else if (isEventOptionModifier(modifier)) { + eventOptionModifiers.push(modifier); + } else { + if (maybeKeyModifier(modifier)) { + if (compilerCore.isStaticExp(key)) { + if (isKeyboardEvent(key.content.toLowerCase())) { + keyModifiers.push(modifier); + } else { + nonKeyModifiers.push(modifier); + } + } else { + keyModifiers.push(modifier); + nonKeyModifiers.push(modifier); + } + } else { + if (isNonKeyModifier(modifier)) { + nonKeyModifiers.push(modifier); + } else { + keyModifiers.push(modifier); + } + } + } + } + return { + keyModifiers, + nonKeyModifiers, + eventOptionModifiers + }; +}; +const transformClick = (key, event) => { + const isStaticClick = compilerCore.isStaticExp(key) && key.content.toLowerCase() === "onclick"; + return isStaticClick ? compilerCore.createSimpleExpression(event, true) : key.type !== 4 ? compilerCore.createCompoundExpression([ + `(`, + key, + `) === "onClick" ? "${event}" : (`, + key, + `)` + ]) : key; +}; +const transformOn = (dir, node, context) => { + return compilerCore.transformOn(dir, node, context, (baseResult) => { + const { modifiers } = dir; + if (!modifiers.length) return baseResult; + let { key, value: handlerExp } = baseResult.props[0]; + const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); + if (nonKeyModifiers.includes("right")) { + key = transformClick(key, `onContextmenu`); + } + if (nonKeyModifiers.includes("middle")) { + key = transformClick(key, `onMouseup`); + } + if (nonKeyModifiers.length) { + handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ + handlerExp, + JSON.stringify(nonKeyModifiers) + ]); + } + if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard + (!compilerCore.isStaticExp(key) || isKeyboardEvent(key.content.toLowerCase()))) { + handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_KEYS), [ + handlerExp, + JSON.stringify(keyModifiers) + ]); + } + if (eventOptionModifiers.length) { + const modifierPostfix = eventOptionModifiers.map(shared.capitalize).join(""); + key = compilerCore.isStaticExp(key) ? compilerCore.createSimpleExpression(`${key.content}${modifierPostfix}`, true) : compilerCore.createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); + } + return { + props: [compilerCore.createObjectProperty(key, handlerExp)] + }; + }); +}; + +const transformShow = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(61, loc) + ); + } + return { + props: [], + needRuntime: context.helper(V_SHOW) + }; +}; + +const transformTransition = (node, context) => { + if (node.type === 1 && node.tagType === 1) { + const component = context.isBuiltInComponent(node.tag); + if (component === TRANSITION) { + return () => { + if (!node.children.length) { + return; + } + if (hasMultipleChildren(node)) { + context.onError( + createDOMCompilerError( + 62, + { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: "" + } + ) + ); + } + const child = node.children[0]; + if (child.type === 1) { + for (const p of child.props) { + if (p.type === 7 && p.name === "show") { + node.props.push({ + type: 6, + name: "persisted", + nameLoc: node.loc, + value: void 0, + loc: node.loc + }); + } + } + } + }; + } + } +}; +function hasMultipleChildren(node) { + const children = node.children = node.children.filter( + (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim()) + ); + const child = children[0]; + return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren); +} + +const expReplaceRE = /__VUE_EXP_START__(.*?)__VUE_EXP_END__/g; +const stringifyStatic = (children, context, parent) => { + if (context.scopes.vSlot > 0) { + return; + } + const isParentCached = parent.type === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !shared.isArray(parent.codegenNode.children) && parent.codegenNode.children.type === 20; + let nc = 0; + let ec = 0; + const currentChunk = []; + const stringifyCurrentChunk = (currentIndex) => { + if (nc >= 20 || ec >= 5) { + const staticCall = compilerCore.createCallExpression(context.helper(compilerCore.CREATE_STATIC), [ + JSON.stringify( + currentChunk.map((node) => stringifyNode(node, context)).join("") + ).replace(expReplaceRE, `" + $1 + "`), + // the 2nd argument indicates the number of DOM nodes this static vnode + // will insert / hydrate + String(currentChunk.length) + ]); + const deleteCount = currentChunk.length - 1; + if (isParentCached) { + children.splice( + currentIndex - currentChunk.length, + currentChunk.length, + // @ts-expect-error + staticCall + ); + } else { + currentChunk[0].codegenNode.value = staticCall; + if (currentChunk.length > 1) { + children.splice(currentIndex - currentChunk.length + 1, deleteCount); + const cacheIndex = context.cached.indexOf( + currentChunk[currentChunk.length - 1].codegenNode + ); + if (cacheIndex > -1) { + for (let i2 = cacheIndex; i2 < context.cached.length; i2++) { + const c = context.cached[i2]; + if (c) c.index -= deleteCount; + } + context.cached.splice(cacheIndex - deleteCount + 1, deleteCount); + } + } + } + return deleteCount; + } + return 0; + }; + let i = 0; + for (; i < children.length; i++) { + const child = children[i]; + const isCached = isParentCached || getCachedNode(child); + if (isCached) { + const result = analyzeNode(child); + if (result) { + nc += result[0]; + ec += result[1]; + currentChunk.push(child); + continue; + } + } + i -= stringifyCurrentChunk(i); + nc = 0; + ec = 0; + currentChunk.length = 0; + } + stringifyCurrentChunk(i); +}; +const getCachedNode = (node) => { + if ((node.type === 1 && node.tagType === 0 || node.type === 12) && node.codegenNode && node.codegenNode.type === 20) { + return node.codegenNode; + } +}; +const dataAriaRE = /^(data|aria)-/; +const isStringifiableAttr = (name, ns) => { + return (ns === 0 ? shared.isKnownHtmlAttr(name) : ns === 1 ? shared.isKnownSvgAttr(name) : ns === 2 ? shared.isKnownMathMLAttr(name) : false) || dataAriaRE.test(name); +}; +const isNonStringifiable = /* @__PURE__ */ shared.makeMap( + `caption,thead,tr,th,tbody,td,tfoot,colgroup,col` +); +function analyzeNode(node) { + if (node.type === 1 && isNonStringifiable(node.tag)) { + return false; + } + if (node.type === 12) { + return [1, 0]; + } + let nc = 1; + let ec = node.props.length > 0 ? 1 : 0; + let bailed = false; + const bail = () => { + bailed = true; + return false; + }; + function walk(node2) { + const isOptionTag = node2.tag === "option" && node2.ns === 0; + for (let i = 0; i < node2.props.length; i++) { + const p = node2.props[i]; + if (p.type === 6 && !isStringifiableAttr(p.name, node2.ns)) { + return bail(); + } + if (p.type === 7 && p.name === "bind") { + if (p.arg && (p.arg.type === 8 || p.arg.isStatic && !isStringifiableAttr(p.arg.content, node2.ns))) { + return bail(); + } + if (p.exp && (p.exp.type === 8 || p.exp.constType < 3)) { + return bail(); + } + if (isOptionTag && compilerCore.isStaticArgOf(p.arg, "value") && p.exp && !p.exp.isStatic) { + return bail(); + } + } + } + for (let i = 0; i < node2.children.length; i++) { + nc++; + const child = node2.children[i]; + if (child.type === 1) { + if (child.props.length > 0) { + ec++; + } + walk(child); + if (bailed) { + return false; + } + } + } + return true; + } + return walk(node) ? [nc, ec] : false; +} +function stringifyNode(node, context) { + if (shared.isString(node)) { + return node; + } + if (shared.isSymbol(node)) { + return ``; + } + switch (node.type) { + case 1: + return stringifyElement(node, context); + case 2: + return shared.escapeHtml(node.content); + case 3: + return `<!--${shared.escapeHtml(node.content)}-->`; + case 5: + return shared.escapeHtml(shared.toDisplayString(evaluateConstant(node.content))); + case 8: + return shared.escapeHtml(evaluateConstant(node)); + case 12: + return stringifyNode(node.content, context); + default: + return ""; + } +} +function stringifyElement(node, context) { + let res = `<${node.tag}`; + let innerHTML = ""; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + res += ` ${p.name}`; + if (p.value) { + res += `="${shared.escapeHtml(p.value.content)}"`; + } + } else if (p.type === 7) { + if (p.name === "bind") { + const exp = p.exp; + if (exp.content[0] === "_") { + res += ` ${p.arg.content}="__VUE_EXP_START__${exp.content}__VUE_EXP_END__"`; + continue; + } + if (shared.isBooleanAttr(p.arg.content) && exp.content === "false") { + continue; + } + let evaluated = evaluateConstant(exp); + if (evaluated != null) { + const arg = p.arg && p.arg.content; + if (arg === "class") { + evaluated = shared.normalizeClass(evaluated); + } else if (arg === "style") { + evaluated = shared.stringifyStyle(shared.normalizeStyle(evaluated)); + } + res += ` ${p.arg.content}="${shared.escapeHtml( + evaluated + )}"`; + } + } else if (p.name === "html") { + innerHTML = evaluateConstant(p.exp); + } else if (p.name === "text") { + innerHTML = shared.escapeHtml( + shared.toDisplayString(evaluateConstant(p.exp)) + ); + } + } + } + if (context.scopeId) { + res += ` ${context.scopeId}`; + } + res += `>`; + if (innerHTML) { + res += innerHTML; + } else { + for (let i = 0; i < node.children.length; i++) { + res += stringifyNode(node.children[i], context); + } + } + if (!shared.isVoidTag(node.tag)) { + res += `</${node.tag}>`; + } + return res; +} +function evaluateConstant(exp) { + if (exp.type === 4) { + return new Function(`return (${exp.content})`)(); + } else { + let res = ``; + exp.children.forEach((c) => { + if (shared.isString(c) || shared.isSymbol(c)) { + return; + } + if (c.type === 2) { + res += c.content; + } else if (c.type === 5) { + res += shared.toDisplayString(evaluateConstant(c.content)); + } else { + res += evaluateConstant(c); + } + }); + return res; + } +} + +const ignoreSideEffectTags = (node, context) => { + if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) { + context.onError( + createDOMCompilerError( + 63, + node.loc + ) + ); + context.removeNode(); + } +}; + +function isValidHTMLNesting(parent, child) { + if (parent === "template") { + return true; + } + if (parent in onlyValidChildren) { + return onlyValidChildren[parent].has(child); + } + if (child in onlyValidParents) { + return onlyValidParents[child].has(parent); + } + if (parent in knownInvalidChildren) { + if (knownInvalidChildren[parent].has(child)) return false; + } + if (child in knownInvalidParents) { + if (knownInvalidParents[child].has(parent)) return false; + } + return true; +} +const headings = /* @__PURE__ */ new Set(["h1", "h2", "h3", "h4", "h5", "h6"]); +const emptySet = /* @__PURE__ */ new Set([]); +const onlyValidChildren = { + head: /* @__PURE__ */ new Set([ + "base", + "basefront", + "bgsound", + "link", + "meta", + "title", + "noscript", + "noframes", + "style", + "script", + "template" + ]), + optgroup: /* @__PURE__ */ new Set(["option"]), + select: /* @__PURE__ */ new Set(["optgroup", "option", "hr"]), + // table + table: /* @__PURE__ */ new Set(["caption", "colgroup", "tbody", "tfoot", "thead"]), + tr: /* @__PURE__ */ new Set(["td", "th"]), + colgroup: /* @__PURE__ */ new Set(["col"]), + tbody: /* @__PURE__ */ new Set(["tr"]), + thead: /* @__PURE__ */ new Set(["tr"]), + tfoot: /* @__PURE__ */ new Set(["tr"]), + // these elements can not have any children elements + script: emptySet, + iframe: emptySet, + option: emptySet, + textarea: emptySet, + style: emptySet, + title: emptySet +}; +const onlyValidParents = { + // sections + html: emptySet, + body: /* @__PURE__ */ new Set(["html"]), + head: /* @__PURE__ */ new Set(["html"]), + // table + td: /* @__PURE__ */ new Set(["tr"]), + colgroup: /* @__PURE__ */ new Set(["table"]), + caption: /* @__PURE__ */ new Set(["table"]), + tbody: /* @__PURE__ */ new Set(["table"]), + tfoot: /* @__PURE__ */ new Set(["table"]), + col: /* @__PURE__ */ new Set(["colgroup"]), + th: /* @__PURE__ */ new Set(["tr"]), + thead: /* @__PURE__ */ new Set(["table"]), + tr: /* @__PURE__ */ new Set(["tbody", "thead", "tfoot"]), + // data list + dd: /* @__PURE__ */ new Set(["dl", "div"]), + dt: /* @__PURE__ */ new Set(["dl", "div"]), + // other + figcaption: /* @__PURE__ */ new Set(["figure"]), + // li: new Set(["ul", "ol"]), + summary: /* @__PURE__ */ new Set(["details"]), + area: /* @__PURE__ */ new Set(["map"]) +}; +const knownInvalidChildren = { + p: /* @__PURE__ */ new Set([ + "address", + "article", + "aside", + "blockquote", + "center", + "details", + "dialog", + "dir", + "div", + "dl", + "fieldset", + "figure", + "footer", + "form", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "header", + "hgroup", + "hr", + "li", + "main", + "nav", + "menu", + "ol", + "p", + "pre", + "section", + "table", + "ul" + ]), + svg: /* @__PURE__ */ new Set([ + "b", + "blockquote", + "br", + "code", + "dd", + "div", + "dl", + "dt", + "em", + "embed", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "hr", + "i", + "img", + "li", + "menu", + "meta", + "ol", + "p", + "pre", + "ruby", + "s", + "small", + "span", + "strong", + "sub", + "sup", + "table", + "u", + "ul", + "var" + ]) +}; +const knownInvalidParents = { + a: /* @__PURE__ */ new Set(["a"]), + button: /* @__PURE__ */ new Set(["button"]), + dd: /* @__PURE__ */ new Set(["dd", "dt"]), + dt: /* @__PURE__ */ new Set(["dd", "dt"]), + form: /* @__PURE__ */ new Set(["form"]), + li: /* @__PURE__ */ new Set(["li"]), + h1: headings, + h2: headings, + h3: headings, + h4: headings, + h5: headings, + h6: headings +}; + +const validateHtmlNesting = (node, context) => { + if (node.type === 1 && node.tagType === 0 && context.parent && context.parent.type === 1 && context.parent.tagType === 0 && !isValidHTMLNesting(context.parent.tag, node.tag)) { + const error = new SyntaxError( + `<${node.tag}> cannot be child of <${context.parent.tag}>, according to HTML specifications. This can cause hydration errors or potentially disrupt future functionality.` + ); + error.loc = node.loc; + context.onWarn(error); + } +}; + +const DOMNodeTransforms = [ + transformStyle, + ...[transformTransition, validateHtmlNesting] +]; +const DOMDirectiveTransforms = { + cloak: compilerCore.noopDirectiveTransform, + html: transformVHtml, + text: transformVText, + model: transformModel, + // override compiler-core + on: transformOn, + // override compiler-core + show: transformShow +}; +function compile(src, options = {}) { + return compilerCore.baseCompile( + src, + shared.extend({}, parserOptions, options, { + nodeTransforms: [ + // ignore <script> and <tag> + // this is not put inside DOMNodeTransforms because that list is used + // by compiler-ssr to generate vnode fallback branches + ignoreSideEffectTags, + ...DOMNodeTransforms, + ...options.nodeTransforms || [] + ], + directiveTransforms: shared.extend( + {}, + DOMDirectiveTransforms, + options.directiveTransforms || {} + ), + transformHoist: stringifyStatic + }) + ); +} +function parse(template, options = {}) { + return compilerCore.baseParse(template, shared.extend({}, parserOptions, options)); +} + +exports.DOMDirectiveTransforms = DOMDirectiveTransforms; +exports.DOMErrorCodes = DOMErrorCodes; +exports.DOMErrorMessages = DOMErrorMessages; +exports.DOMNodeTransforms = DOMNodeTransforms; +exports.TRANSITION = TRANSITION; +exports.TRANSITION_GROUP = TRANSITION_GROUP; +exports.V_MODEL_CHECKBOX = V_MODEL_CHECKBOX; +exports.V_MODEL_DYNAMIC = V_MODEL_DYNAMIC; +exports.V_MODEL_RADIO = V_MODEL_RADIO; +exports.V_MODEL_SELECT = V_MODEL_SELECT; +exports.V_MODEL_TEXT = V_MODEL_TEXT; +exports.V_ON_WITH_KEYS = V_ON_WITH_KEYS; +exports.V_ON_WITH_MODIFIERS = V_ON_WITH_MODIFIERS; +exports.V_SHOW = V_SHOW; +exports.compile = compile; +exports.createDOMCompilerError = createDOMCompilerError; +exports.parse = parse; +exports.parserOptions = parserOptions; +exports.transformStyle = transformStyle; +Object.keys(compilerCore).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = compilerCore[k]; +}); diff --git a/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js b/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js new file mode 100644 index 0000000..940941e --- /dev/null +++ b/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js @@ -0,0 +1,686 @@ +/** +* @vue/compiler-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var compilerCore = require('@vue/compiler-core'); +var shared = require('@vue/shared'); + +const V_MODEL_RADIO = Symbol(``); +const V_MODEL_CHECKBOX = Symbol( + `` +); +const V_MODEL_TEXT = Symbol(``); +const V_MODEL_SELECT = Symbol( + `` +); +const V_MODEL_DYNAMIC = Symbol( + `` +); +const V_ON_WITH_MODIFIERS = Symbol( + `` +); +const V_ON_WITH_KEYS = Symbol( + `` +); +const V_SHOW = Symbol(``); +const TRANSITION = Symbol(``); +const TRANSITION_GROUP = Symbol( + `` +); +compilerCore.registerRuntimeHelpers({ + [V_MODEL_RADIO]: `vModelRadio`, + [V_MODEL_CHECKBOX]: `vModelCheckbox`, + [V_MODEL_TEXT]: `vModelText`, + [V_MODEL_SELECT]: `vModelSelect`, + [V_MODEL_DYNAMIC]: `vModelDynamic`, + [V_ON_WITH_MODIFIERS]: `withModifiers`, + [V_ON_WITH_KEYS]: `withKeys`, + [V_SHOW]: `vShow`, + [TRANSITION]: `Transition`, + [TRANSITION_GROUP]: `TransitionGroup` +}); + +const parserOptions = { + parseMode: "html", + isVoidTag: shared.isVoidTag, + isNativeTag: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag) || shared.isMathMLTag(tag), + isPreTag: (tag) => tag === "pre", + isIgnoreNewlineTag: (tag) => tag === "pre" || tag === "textarea", + decodeEntities: void 0, + isBuiltInComponent: (tag) => { + if (tag === "Transition" || tag === "transition") { + return TRANSITION; + } else if (tag === "TransitionGroup" || tag === "transition-group") { + return TRANSITION_GROUP; + } + }, + // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher + getNamespace(tag, parent, rootNamespace) { + let ns = parent ? parent.ns : rootNamespace; + if (parent && ns === 2) { + if (parent.tag === "annotation-xml") { + if (tag === "svg") { + return 1; + } + if (parent.props.some( + (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml") + )) { + ns = 0; + } + } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") { + ns = 0; + } + } else if (parent && ns === 1) { + if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") { + ns = 0; + } + } + if (ns === 0) { + if (tag === "svg") { + return 1; + } + if (tag === "math") { + return 2; + } + } + return ns; + } +}; + +const transformStyle = (node) => { + if (node.type === 1) { + node.props.forEach((p, i) => { + if (p.type === 6 && p.name === "style" && p.value) { + node.props[i] = { + type: 7, + name: `bind`, + arg: compilerCore.createSimpleExpression(`style`, true, p.loc), + exp: parseInlineCSS(p.value.content, p.loc), + modifiers: [], + loc: p.loc + }; + } + }); + } +}; +const parseInlineCSS = (cssText, loc) => { + const normalized = shared.parseStringStyle(cssText); + return compilerCore.createSimpleExpression( + JSON.stringify(normalized), + false, + loc, + 3 + ); +}; + +function createDOMCompilerError(code, loc) { + return compilerCore.createCompilerError( + code, + loc, + DOMErrorMessages + ); +} +const DOMErrorCodes = { + "X_V_HTML_NO_EXPRESSION": 53, + "53": "X_V_HTML_NO_EXPRESSION", + "X_V_HTML_WITH_CHILDREN": 54, + "54": "X_V_HTML_WITH_CHILDREN", + "X_V_TEXT_NO_EXPRESSION": 55, + "55": "X_V_TEXT_NO_EXPRESSION", + "X_V_TEXT_WITH_CHILDREN": 56, + "56": "X_V_TEXT_WITH_CHILDREN", + "X_V_MODEL_ON_INVALID_ELEMENT": 57, + "57": "X_V_MODEL_ON_INVALID_ELEMENT", + "X_V_MODEL_ARG_ON_ELEMENT": 58, + "58": "X_V_MODEL_ARG_ON_ELEMENT", + "X_V_MODEL_ON_FILE_INPUT_ELEMENT": 59, + "59": "X_V_MODEL_ON_FILE_INPUT_ELEMENT", + "X_V_MODEL_UNNECESSARY_VALUE": 60, + "60": "X_V_MODEL_UNNECESSARY_VALUE", + "X_V_SHOW_NO_EXPRESSION": 61, + "61": "X_V_SHOW_NO_EXPRESSION", + "X_TRANSITION_INVALID_CHILDREN": 62, + "62": "X_TRANSITION_INVALID_CHILDREN", + "X_IGNORED_SIDE_EFFECT_TAG": 63, + "63": "X_IGNORED_SIDE_EFFECT_TAG", + "__EXTEND_POINT__": 64, + "64": "__EXTEND_POINT__" +}; +const DOMErrorMessages = { + [53]: `v-html is missing expression.`, + [54]: `v-html will override element children.`, + [55]: `v-text is missing expression.`, + [56]: `v-text will override element children.`, + [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`, + [58]: `v-model argument is not supported on plain elements.`, + [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`, + [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`, + [61]: `v-show is missing expression.`, + [62]: `<Transition> expects exactly one child element or component.`, + [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.` +}; + +const transformVHtml = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(53, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(54, loc) + ); + node.children.length = 0; + } + return { + props: [ + compilerCore.createObjectProperty( + compilerCore.createSimpleExpression(`innerHTML`, true, loc), + exp || compilerCore.createSimpleExpression("", true) + ) + ] + }; +}; + +const transformVText = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(55, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(56, loc) + ); + node.children.length = 0; + } + return { + props: [ + compilerCore.createObjectProperty( + compilerCore.createSimpleExpression(`textContent`, true), + exp ? compilerCore.getConstantType(exp, context) > 0 ? exp : compilerCore.createCallExpression( + context.helperString(compilerCore.TO_DISPLAY_STRING), + [exp], + loc + ) : compilerCore.createSimpleExpression("", true) + ) + ] + }; +}; + +const transformModel = (dir, node, context) => { + const baseResult = compilerCore.transformModel(dir, node, context); + if (!baseResult.props.length || node.tagType === 1) { + return baseResult; + } + if (dir.arg) { + context.onError( + createDOMCompilerError( + 58, + dir.arg.loc + ) + ); + } + const { tag } = node; + const isCustomElement = context.isCustomElement(tag); + if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) { + let directiveToUse = V_MODEL_TEXT; + let isInvalidType = false; + if (tag === "input" || isCustomElement) { + const type = compilerCore.findProp(node, `type`); + if (type) { + if (type.type === 7) { + directiveToUse = V_MODEL_DYNAMIC; + } else if (type.value) { + switch (type.value.content) { + case "radio": + directiveToUse = V_MODEL_RADIO; + break; + case "checkbox": + directiveToUse = V_MODEL_CHECKBOX; + break; + case "file": + isInvalidType = true; + context.onError( + createDOMCompilerError( + 59, + dir.loc + ) + ); + break; + } + } + } else if (compilerCore.hasDynamicKeyVBind(node)) { + directiveToUse = V_MODEL_DYNAMIC; + } else ; + } else if (tag === "select") { + directiveToUse = V_MODEL_SELECT; + } else ; + if (!isInvalidType) { + baseResult.needRuntime = context.helper(directiveToUse); + } + } else { + context.onError( + createDOMCompilerError( + 57, + dir.loc + ) + ); + } + baseResult.props = baseResult.props.filter( + (p) => !(p.key.type === 4 && p.key.content === "modelValue") + ); + return baseResult; +}; + +const isEventOptionModifier = /* @__PURE__ */ shared.makeMap(`passive,once,capture`); +const isNonKeyModifier = /* @__PURE__ */ shared.makeMap( + // event propagation management + `stop,prevent,self,ctrl,shift,alt,meta,exact,middle` +); +const maybeKeyModifier = /* @__PURE__ */ shared.makeMap("left,right"); +const isKeyboardEvent = /* @__PURE__ */ shared.makeMap(`onkeyup,onkeydown,onkeypress`); +const resolveModifiers = (key, modifiers, context, loc) => { + const keyModifiers = []; + const nonKeyModifiers = []; + const eventOptionModifiers = []; + for (let i = 0; i < modifiers.length; i++) { + const modifier = modifiers[i].content; + if (modifier === "native" && compilerCore.checkCompatEnabled( + "COMPILER_V_ON_NATIVE", + context, + loc + )) { + eventOptionModifiers.push(modifier); + } else if (isEventOptionModifier(modifier)) { + eventOptionModifiers.push(modifier); + } else { + if (maybeKeyModifier(modifier)) { + if (compilerCore.isStaticExp(key)) { + if (isKeyboardEvent(key.content.toLowerCase())) { + keyModifiers.push(modifier); + } else { + nonKeyModifiers.push(modifier); + } + } else { + keyModifiers.push(modifier); + nonKeyModifiers.push(modifier); + } + } else { + if (isNonKeyModifier(modifier)) { + nonKeyModifiers.push(modifier); + } else { + keyModifiers.push(modifier); + } + } + } + } + return { + keyModifiers, + nonKeyModifiers, + eventOptionModifiers + }; +}; +const transformClick = (key, event) => { + const isStaticClick = compilerCore.isStaticExp(key) && key.content.toLowerCase() === "onclick"; + return isStaticClick ? compilerCore.createSimpleExpression(event, true) : key.type !== 4 ? compilerCore.createCompoundExpression([ + `(`, + key, + `) === "onClick" ? "${event}" : (`, + key, + `)` + ]) : key; +}; +const transformOn = (dir, node, context) => { + return compilerCore.transformOn(dir, node, context, (baseResult) => { + const { modifiers } = dir; + if (!modifiers.length) return baseResult; + let { key, value: handlerExp } = baseResult.props[0]; + const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); + if (nonKeyModifiers.includes("right")) { + key = transformClick(key, `onContextmenu`); + } + if (nonKeyModifiers.includes("middle")) { + key = transformClick(key, `onMouseup`); + } + if (nonKeyModifiers.length) { + handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ + handlerExp, + JSON.stringify(nonKeyModifiers) + ]); + } + if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard + (!compilerCore.isStaticExp(key) || isKeyboardEvent(key.content.toLowerCase()))) { + handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_KEYS), [ + handlerExp, + JSON.stringify(keyModifiers) + ]); + } + if (eventOptionModifiers.length) { + const modifierPostfix = eventOptionModifiers.map(shared.capitalize).join(""); + key = compilerCore.isStaticExp(key) ? compilerCore.createSimpleExpression(`${key.content}${modifierPostfix}`, true) : compilerCore.createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); + } + return { + props: [compilerCore.createObjectProperty(key, handlerExp)] + }; + }); +}; + +const transformShow = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(61, loc) + ); + } + return { + props: [], + needRuntime: context.helper(V_SHOW) + }; +}; + +const expReplaceRE = /__VUE_EXP_START__(.*?)__VUE_EXP_END__/g; +const stringifyStatic = (children, context, parent) => { + if (context.scopes.vSlot > 0) { + return; + } + const isParentCached = parent.type === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !shared.isArray(parent.codegenNode.children) && parent.codegenNode.children.type === 20; + let nc = 0; + let ec = 0; + const currentChunk = []; + const stringifyCurrentChunk = (currentIndex) => { + if (nc >= 20 || ec >= 5) { + const staticCall = compilerCore.createCallExpression(context.helper(compilerCore.CREATE_STATIC), [ + JSON.stringify( + currentChunk.map((node) => stringifyNode(node, context)).join("") + ).replace(expReplaceRE, `" + $1 + "`), + // the 2nd argument indicates the number of DOM nodes this static vnode + // will insert / hydrate + String(currentChunk.length) + ]); + const deleteCount = currentChunk.length - 1; + if (isParentCached) { + children.splice( + currentIndex - currentChunk.length, + currentChunk.length, + // @ts-expect-error + staticCall + ); + } else { + currentChunk[0].codegenNode.value = staticCall; + if (currentChunk.length > 1) { + children.splice(currentIndex - currentChunk.length + 1, deleteCount); + const cacheIndex = context.cached.indexOf( + currentChunk[currentChunk.length - 1].codegenNode + ); + if (cacheIndex > -1) { + for (let i2 = cacheIndex; i2 < context.cached.length; i2++) { + const c = context.cached[i2]; + if (c) c.index -= deleteCount; + } + context.cached.splice(cacheIndex - deleteCount + 1, deleteCount); + } + } + } + return deleteCount; + } + return 0; + }; + let i = 0; + for (; i < children.length; i++) { + const child = children[i]; + const isCached = isParentCached || getCachedNode(child); + if (isCached) { + const result = analyzeNode(child); + if (result) { + nc += result[0]; + ec += result[1]; + currentChunk.push(child); + continue; + } + } + i -= stringifyCurrentChunk(i); + nc = 0; + ec = 0; + currentChunk.length = 0; + } + stringifyCurrentChunk(i); +}; +const getCachedNode = (node) => { + if ((node.type === 1 && node.tagType === 0 || node.type === 12) && node.codegenNode && node.codegenNode.type === 20) { + return node.codegenNode; + } +}; +const dataAriaRE = /^(data|aria)-/; +const isStringifiableAttr = (name, ns) => { + return (ns === 0 ? shared.isKnownHtmlAttr(name) : ns === 1 ? shared.isKnownSvgAttr(name) : ns === 2 ? shared.isKnownMathMLAttr(name) : false) || dataAriaRE.test(name); +}; +const isNonStringifiable = /* @__PURE__ */ shared.makeMap( + `caption,thead,tr,th,tbody,td,tfoot,colgroup,col` +); +function analyzeNode(node) { + if (node.type === 1 && isNonStringifiable(node.tag)) { + return false; + } + if (node.type === 12) { + return [1, 0]; + } + let nc = 1; + let ec = node.props.length > 0 ? 1 : 0; + let bailed = false; + const bail = () => { + bailed = true; + return false; + }; + function walk(node2) { + const isOptionTag = node2.tag === "option" && node2.ns === 0; + for (let i = 0; i < node2.props.length; i++) { + const p = node2.props[i]; + if (p.type === 6 && !isStringifiableAttr(p.name, node2.ns)) { + return bail(); + } + if (p.type === 7 && p.name === "bind") { + if (p.arg && (p.arg.type === 8 || p.arg.isStatic && !isStringifiableAttr(p.arg.content, node2.ns))) { + return bail(); + } + if (p.exp && (p.exp.type === 8 || p.exp.constType < 3)) { + return bail(); + } + if (isOptionTag && compilerCore.isStaticArgOf(p.arg, "value") && p.exp && !p.exp.isStatic) { + return bail(); + } + } + } + for (let i = 0; i < node2.children.length; i++) { + nc++; + const child = node2.children[i]; + if (child.type === 1) { + if (child.props.length > 0) { + ec++; + } + walk(child); + if (bailed) { + return false; + } + } + } + return true; + } + return walk(node) ? [nc, ec] : false; +} +function stringifyNode(node, context) { + if (shared.isString(node)) { + return node; + } + if (shared.isSymbol(node)) { + return ``; + } + switch (node.type) { + case 1: + return stringifyElement(node, context); + case 2: + return shared.escapeHtml(node.content); + case 3: + return `<!--${shared.escapeHtml(node.content)}-->`; + case 5: + return shared.escapeHtml(shared.toDisplayString(evaluateConstant(node.content))); + case 8: + return shared.escapeHtml(evaluateConstant(node)); + case 12: + return stringifyNode(node.content, context); + default: + return ""; + } +} +function stringifyElement(node, context) { + let res = `<${node.tag}`; + let innerHTML = ""; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + res += ` ${p.name}`; + if (p.value) { + res += `="${shared.escapeHtml(p.value.content)}"`; + } + } else if (p.type === 7) { + if (p.name === "bind") { + const exp = p.exp; + if (exp.content[0] === "_") { + res += ` ${p.arg.content}="__VUE_EXP_START__${exp.content}__VUE_EXP_END__"`; + continue; + } + if (shared.isBooleanAttr(p.arg.content) && exp.content === "false") { + continue; + } + let evaluated = evaluateConstant(exp); + if (evaluated != null) { + const arg = p.arg && p.arg.content; + if (arg === "class") { + evaluated = shared.normalizeClass(evaluated); + } else if (arg === "style") { + evaluated = shared.stringifyStyle(shared.normalizeStyle(evaluated)); + } + res += ` ${p.arg.content}="${shared.escapeHtml( + evaluated + )}"`; + } + } else if (p.name === "html") { + innerHTML = evaluateConstant(p.exp); + } else if (p.name === "text") { + innerHTML = shared.escapeHtml( + shared.toDisplayString(evaluateConstant(p.exp)) + ); + } + } + } + if (context.scopeId) { + res += ` ${context.scopeId}`; + } + res += `>`; + if (innerHTML) { + res += innerHTML; + } else { + for (let i = 0; i < node.children.length; i++) { + res += stringifyNode(node.children[i], context); + } + } + if (!shared.isVoidTag(node.tag)) { + res += `</${node.tag}>`; + } + return res; +} +function evaluateConstant(exp) { + if (exp.type === 4) { + return new Function(`return (${exp.content})`)(); + } else { + let res = ``; + exp.children.forEach((c) => { + if (shared.isString(c) || shared.isSymbol(c)) { + return; + } + if (c.type === 2) { + res += c.content; + } else if (c.type === 5) { + res += shared.toDisplayString(evaluateConstant(c.content)); + } else { + res += evaluateConstant(c); + } + }); + return res; + } +} + +const ignoreSideEffectTags = (node, context) => { + if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) { + context.removeNode(); + } +}; + +const DOMNodeTransforms = [ + transformStyle, + ...[] +]; +const DOMDirectiveTransforms = { + cloak: compilerCore.noopDirectiveTransform, + html: transformVHtml, + text: transformVText, + model: transformModel, + // override compiler-core + on: transformOn, + // override compiler-core + show: transformShow +}; +function compile(src, options = {}) { + return compilerCore.baseCompile( + src, + shared.extend({}, parserOptions, options, { + nodeTransforms: [ + // ignore <script> and <tag> + // this is not put inside DOMNodeTransforms because that list is used + // by compiler-ssr to generate vnode fallback branches + ignoreSideEffectTags, + ...DOMNodeTransforms, + ...options.nodeTransforms || [] + ], + directiveTransforms: shared.extend( + {}, + DOMDirectiveTransforms, + options.directiveTransforms || {} + ), + transformHoist: stringifyStatic + }) + ); +} +function parse(template, options = {}) { + return compilerCore.baseParse(template, shared.extend({}, parserOptions, options)); +} + +exports.DOMDirectiveTransforms = DOMDirectiveTransforms; +exports.DOMErrorCodes = DOMErrorCodes; +exports.DOMErrorMessages = DOMErrorMessages; +exports.DOMNodeTransforms = DOMNodeTransforms; +exports.TRANSITION = TRANSITION; +exports.TRANSITION_GROUP = TRANSITION_GROUP; +exports.V_MODEL_CHECKBOX = V_MODEL_CHECKBOX; +exports.V_MODEL_DYNAMIC = V_MODEL_DYNAMIC; +exports.V_MODEL_RADIO = V_MODEL_RADIO; +exports.V_MODEL_SELECT = V_MODEL_SELECT; +exports.V_MODEL_TEXT = V_MODEL_TEXT; +exports.V_ON_WITH_KEYS = V_ON_WITH_KEYS; +exports.V_ON_WITH_MODIFIERS = V_ON_WITH_MODIFIERS; +exports.V_SHOW = V_SHOW; +exports.compile = compile; +exports.createDOMCompilerError = createDOMCompilerError; +exports.parse = parse; +exports.parserOptions = parserOptions; +exports.transformStyle = transformStyle; +Object.keys(compilerCore).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = compilerCore[k]; +}); diff --git a/node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts b/node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts new file mode 100644 index 0000000..b631ed8 --- /dev/null +++ b/node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts @@ -0,0 +1,45 @@ +import { ParserOptions, NodeTransform, SourceLocation, CompilerError, DirectiveTransform, RootNode, CompilerOptions, CodegenResult } from '@vue/compiler-core'; +export * from '@vue/compiler-core'; + +export declare const parserOptions: ParserOptions; + +export declare const V_MODEL_RADIO: unique symbol; +export declare const V_MODEL_CHECKBOX: unique symbol; +export declare const V_MODEL_TEXT: unique symbol; +export declare const V_MODEL_SELECT: unique symbol; +export declare const V_MODEL_DYNAMIC: unique symbol; +export declare const V_ON_WITH_MODIFIERS: unique symbol; +export declare const V_ON_WITH_KEYS: unique symbol; +export declare const V_SHOW: unique symbol; +export declare const TRANSITION: unique symbol; +export declare const TRANSITION_GROUP: unique symbol; + +export declare const transformStyle: NodeTransform; + +interface DOMCompilerError extends CompilerError { + code: DOMErrorCodes; +} +export declare function createDOMCompilerError(code: DOMErrorCodes, loc?: SourceLocation): DOMCompilerError; +export declare enum DOMErrorCodes { + X_V_HTML_NO_EXPRESSION = 53, + X_V_HTML_WITH_CHILDREN = 54, + X_V_TEXT_NO_EXPRESSION = 55, + X_V_TEXT_WITH_CHILDREN = 56, + X_V_MODEL_ON_INVALID_ELEMENT = 57, + X_V_MODEL_ARG_ON_ELEMENT = 58, + X_V_MODEL_ON_FILE_INPUT_ELEMENT = 59, + X_V_MODEL_UNNECESSARY_VALUE = 60, + X_V_SHOW_NO_EXPRESSION = 61, + X_TRANSITION_INVALID_CHILDREN = 62, + X_IGNORED_SIDE_EFFECT_TAG = 63, + __EXTEND_POINT__ = 64 +} +export declare const DOMErrorMessages: { + [code: number]: string; +}; + +export declare const DOMNodeTransforms: NodeTransform[]; +export declare const DOMDirectiveTransforms: Record<string, DirectiveTransform>; +export declare function compile(src: string | RootNode, options?: CompilerOptions): CodegenResult; +export declare function parse(template: string, options?: ParserOptions): RootNode; + diff --git a/node_modules/@vue/compiler-dom/dist/compiler-dom.esm-browser.js b/node_modules/@vue/compiler-dom/dist/compiler-dom.esm-browser.js new file mode 100644 index 0000000..4b1817f --- /dev/null +++ b/node_modules/@vue/compiler-dom/dist/compiler-dom.esm-browser.js @@ -0,0 +1,6620 @@ +/** +* @vue/compiler-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function makeMap(str) { + const map = /* @__PURE__ */ Object.create(null); + for (const key of str.split(",")) map[key] = 1; + return (val) => val in map; +} + +const EMPTY_OBJ = Object.freeze({}) ; +const NOOP = () => { +}; +const NO = () => false; +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +const extend = Object.assign; +const isArray = Array.isArray; +const isString = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject = (val) => val !== null && typeof val === "object"; +const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction( + (str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); + } +); +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction( + (str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; + } +); + +const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `NEED_HYDRATION`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `CACHED`, + [-2]: `BAIL` +}; + +const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" +}; + +const range = 2; +function generateCodeFrame(source, start = 0, end = source.length) { + start = Math.max(0, Math.min(start, source.length)); + end = Math.max(0, Math.min(end, source.length)); + if (start > end) return ""; + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); +} + +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} + +const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; +const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); +const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); +const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); +const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + +const FRAGMENT = Symbol(`Fragment` ); +const TELEPORT = Symbol(`Teleport` ); +const SUSPENSE = Symbol(`Suspense` ); +const KEEP_ALIVE = Symbol(`KeepAlive` ); +const BASE_TRANSITION = Symbol( + `BaseTransition` +); +const OPEN_BLOCK = Symbol(`openBlock` ); +const CREATE_BLOCK = Symbol(`createBlock` ); +const CREATE_ELEMENT_BLOCK = Symbol( + `createElementBlock` +); +const CREATE_VNODE = Symbol(`createVNode` ); +const CREATE_ELEMENT_VNODE = Symbol( + `createElementVNode` +); +const CREATE_COMMENT = Symbol( + `createCommentVNode` +); +const CREATE_TEXT = Symbol( + `createTextVNode` +); +const CREATE_STATIC = Symbol( + `createStaticVNode` +); +const RESOLVE_COMPONENT = Symbol( + `resolveComponent` +); +const RESOLVE_DYNAMIC_COMPONENT = Symbol( + `resolveDynamicComponent` +); +const RESOLVE_DIRECTIVE = Symbol( + `resolveDirective` +); +const RESOLVE_FILTER = Symbol( + `resolveFilter` +); +const WITH_DIRECTIVES = Symbol( + `withDirectives` +); +const RENDER_LIST = Symbol(`renderList` ); +const RENDER_SLOT = Symbol(`renderSlot` ); +const CREATE_SLOTS = Symbol(`createSlots` ); +const TO_DISPLAY_STRING = Symbol( + `toDisplayString` +); +const MERGE_PROPS = Symbol(`mergeProps` ); +const NORMALIZE_CLASS = Symbol( + `normalizeClass` +); +const NORMALIZE_STYLE = Symbol( + `normalizeStyle` +); +const NORMALIZE_PROPS = Symbol( + `normalizeProps` +); +const GUARD_REACTIVE_PROPS = Symbol( + `guardReactiveProps` +); +const TO_HANDLERS = Symbol(`toHandlers` ); +const CAMELIZE = Symbol(`camelize` ); +const CAPITALIZE = Symbol(`capitalize` ); +const TO_HANDLER_KEY = Symbol( + `toHandlerKey` +); +const SET_BLOCK_TRACKING = Symbol( + `setBlockTracking` +); +const PUSH_SCOPE_ID = Symbol(`pushScopeId` ); +const POP_SCOPE_ID = Symbol(`popScopeId` ); +const WITH_CTX = Symbol(`withCtx` ); +const UNREF = Symbol(`unref` ); +const IS_REF = Symbol(`isRef` ); +const WITH_MEMO = Symbol(`withMemo` ); +const IS_MEMO_SAME = Symbol(`isMemoSame` ); +const helperNameMap = { + [FRAGMENT]: `Fragment`, + [TELEPORT]: `Teleport`, + [SUSPENSE]: `Suspense`, + [KEEP_ALIVE]: `KeepAlive`, + [BASE_TRANSITION]: `BaseTransition`, + [OPEN_BLOCK]: `openBlock`, + [CREATE_BLOCK]: `createBlock`, + [CREATE_ELEMENT_BLOCK]: `createElementBlock`, + [CREATE_VNODE]: `createVNode`, + [CREATE_ELEMENT_VNODE]: `createElementVNode`, + [CREATE_COMMENT]: `createCommentVNode`, + [CREATE_TEXT]: `createTextVNode`, + [CREATE_STATIC]: `createStaticVNode`, + [RESOLVE_COMPONENT]: `resolveComponent`, + [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`, + [RESOLVE_DIRECTIVE]: `resolveDirective`, + [RESOLVE_FILTER]: `resolveFilter`, + [WITH_DIRECTIVES]: `withDirectives`, + [RENDER_LIST]: `renderList`, + [RENDER_SLOT]: `renderSlot`, + [CREATE_SLOTS]: `createSlots`, + [TO_DISPLAY_STRING]: `toDisplayString`, + [MERGE_PROPS]: `mergeProps`, + [NORMALIZE_CLASS]: `normalizeClass`, + [NORMALIZE_STYLE]: `normalizeStyle`, + [NORMALIZE_PROPS]: `normalizeProps`, + [GUARD_REACTIVE_PROPS]: `guardReactiveProps`, + [TO_HANDLERS]: `toHandlers`, + [CAMELIZE]: `camelize`, + [CAPITALIZE]: `capitalize`, + [TO_HANDLER_KEY]: `toHandlerKey`, + [SET_BLOCK_TRACKING]: `setBlockTracking`, + [PUSH_SCOPE_ID]: `pushScopeId`, + [POP_SCOPE_ID]: `popScopeId`, + [WITH_CTX]: `withCtx`, + [UNREF]: `unref`, + [IS_REF]: `isRef`, + [WITH_MEMO]: `withMemo`, + [IS_MEMO_SAME]: `isMemoSame` +}; +function registerRuntimeHelpers(helpers) { + Object.getOwnPropertySymbols(helpers).forEach((s) => { + helperNameMap[s] = helpers[s]; + }); +} + +const Namespaces = { + "HTML": 0, + "0": "HTML", + "SVG": 1, + "1": "SVG", + "MATH_ML": 2, + "2": "MATH_ML" +}; +const NodeTypes = { + "ROOT": 0, + "0": "ROOT", + "ELEMENT": 1, + "1": "ELEMENT", + "TEXT": 2, + "2": "TEXT", + "COMMENT": 3, + "3": "COMMENT", + "SIMPLE_EXPRESSION": 4, + "4": "SIMPLE_EXPRESSION", + "INTERPOLATION": 5, + "5": "INTERPOLATION", + "ATTRIBUTE": 6, + "6": "ATTRIBUTE", + "DIRECTIVE": 7, + "7": "DIRECTIVE", + "COMPOUND_EXPRESSION": 8, + "8": "COMPOUND_EXPRESSION", + "IF": 9, + "9": "IF", + "IF_BRANCH": 10, + "10": "IF_BRANCH", + "FOR": 11, + "11": "FOR", + "TEXT_CALL": 12, + "12": "TEXT_CALL", + "VNODE_CALL": 13, + "13": "VNODE_CALL", + "JS_CALL_EXPRESSION": 14, + "14": "JS_CALL_EXPRESSION", + "JS_OBJECT_EXPRESSION": 15, + "15": "JS_OBJECT_EXPRESSION", + "JS_PROPERTY": 16, + "16": "JS_PROPERTY", + "JS_ARRAY_EXPRESSION": 17, + "17": "JS_ARRAY_EXPRESSION", + "JS_FUNCTION_EXPRESSION": 18, + "18": "JS_FUNCTION_EXPRESSION", + "JS_CONDITIONAL_EXPRESSION": 19, + "19": "JS_CONDITIONAL_EXPRESSION", + "JS_CACHE_EXPRESSION": 20, + "20": "JS_CACHE_EXPRESSION", + "JS_BLOCK_STATEMENT": 21, + "21": "JS_BLOCK_STATEMENT", + "JS_TEMPLATE_LITERAL": 22, + "22": "JS_TEMPLATE_LITERAL", + "JS_IF_STATEMENT": 23, + "23": "JS_IF_STATEMENT", + "JS_ASSIGNMENT_EXPRESSION": 24, + "24": "JS_ASSIGNMENT_EXPRESSION", + "JS_SEQUENCE_EXPRESSION": 25, + "25": "JS_SEQUENCE_EXPRESSION", + "JS_RETURN_STATEMENT": 26, + "26": "JS_RETURN_STATEMENT" +}; +const ElementTypes = { + "ELEMENT": 0, + "0": "ELEMENT", + "COMPONENT": 1, + "1": "COMPONENT", + "SLOT": 2, + "2": "SLOT", + "TEMPLATE": 3, + "3": "TEMPLATE" +}; +const ConstantTypes = { + "NOT_CONSTANT": 0, + "0": "NOT_CONSTANT", + "CAN_SKIP_PATCH": 1, + "1": "CAN_SKIP_PATCH", + "CAN_CACHE": 2, + "2": "CAN_CACHE", + "CAN_STRINGIFY": 3, + "3": "CAN_STRINGIFY" +}; +const locStub = { + start: { line: 1, column: 1, offset: 0 }, + end: { line: 1, column: 1, offset: 0 }, + source: "" +}; +function createRoot(children, source = "") { + return { + type: 0, + source, + children, + helpers: /* @__PURE__ */ new Set(), + components: [], + directives: [], + hoists: [], + imports: [], + cached: [], + temps: 0, + codegenNode: void 0, + loc: locStub + }; +} +function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) { + if (context) { + if (isBlock) { + context.helper(OPEN_BLOCK); + context.helper(getVNodeBlockHelper(context.inSSR, isComponent)); + } else { + context.helper(getVNodeHelper(context.inSSR, isComponent)); + } + if (directives) { + context.helper(WITH_DIRECTIVES); + } + } + return { + type: 13, + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent, + loc + }; +} +function createArrayExpression(elements, loc = locStub) { + return { + type: 17, + loc, + elements + }; +} +function createObjectExpression(properties, loc = locStub) { + return { + type: 15, + loc, + properties + }; +} +function createObjectProperty(key, value) { + return { + type: 16, + loc: locStub, + key: isString(key) ? createSimpleExpression(key, true) : key, + value + }; +} +function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) { + return { + type: 4, + loc, + content, + isStatic, + constType: isStatic ? 3 : constType + }; +} +function createInterpolation(content, loc) { + return { + type: 5, + loc, + content: isString(content) ? createSimpleExpression(content, false, loc) : content + }; +} +function createCompoundExpression(children, loc = locStub) { + return { + type: 8, + loc, + children + }; +} +function createCallExpression(callee, args = [], loc = locStub) { + return { + type: 14, + loc, + callee, + arguments: args + }; +} +function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) { + return { + type: 18, + params, + returns, + newline, + isSlot, + loc + }; +} +function createConditionalExpression(test, consequent, alternate, newline = true) { + return { + type: 19, + test, + consequent, + alternate, + newline, + loc: locStub + }; +} +function createCacheExpression(index, value, needPauseTracking = false, inVOnce = false) { + return { + type: 20, + index, + value, + needPauseTracking, + inVOnce, + needArraySpread: false, + loc: locStub + }; +} +function createBlockStatement(body) { + return { + type: 21, + body, + loc: locStub + }; +} +function createTemplateLiteral(elements) { + return { + type: 22, + elements, + loc: locStub + }; +} +function createIfStatement(test, consequent, alternate) { + return { + type: 23, + test, + consequent, + alternate, + loc: locStub + }; +} +function createAssignmentExpression(left, right) { + return { + type: 24, + left, + right, + loc: locStub + }; +} +function createSequenceExpression(expressions) { + return { + type: 25, + expressions, + loc: locStub + }; +} +function createReturnStatement(returns) { + return { + type: 26, + returns, + loc: locStub + }; +} +function getVNodeHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE; +} +function getVNodeBlockHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK; +} +function convertToBlock(node, { helper, removeHelper, inSSR }) { + if (!node.isBlock) { + node.isBlock = true; + removeHelper(getVNodeHelper(inSSR, node.isComponent)); + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(inSSR, node.isComponent)); + } +} + +const defaultDelimitersOpen = new Uint8Array([123, 123]); +const defaultDelimitersClose = new Uint8Array([125, 125]); +function isTagStartChar(c) { + return c >= 97 && c <= 122 || c >= 65 && c <= 90; +} +function isWhitespace(c) { + return c === 32 || c === 10 || c === 9 || c === 12 || c === 13; +} +function isEndOfTagSection(c) { + return c === 47 || c === 62 || isWhitespace(c); +} +function toCharCodes(str) { + const ret = new Uint8Array(str.length); + for (let i = 0; i < str.length; i++) { + ret[i] = str.charCodeAt(i); + } + return ret; +} +const Sequences = { + Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]), + // CDATA[ + CdataEnd: new Uint8Array([93, 93, 62]), + // ]]> + CommentEnd: new Uint8Array([45, 45, 62]), + // `-->` + ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), + // `<\/script` + StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), + // `</style` + TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]), + // `</title` + TextareaEnd: new Uint8Array([ + 60, + 47, + 116, + 101, + 120, + 116, + 97, + 114, + 101, + 97 + ]) + // `</textarea +}; +class Tokenizer { + constructor(stack, cbs) { + this.stack = stack; + this.cbs = cbs; + /** The current state the tokenizer is in. */ + this.state = 1; + /** The read buffer. */ + this.buffer = ""; + /** The beginning of the section that is currently being read. */ + this.sectionStart = 0; + /** The index within the buffer that we are currently looking at. */ + this.index = 0; + /** The start of the last entity. */ + this.entityStart = 0; + /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */ + this.baseState = 1; + /** For special parsing behavior inside of script and style tags. */ + this.inRCDATA = false; + /** For disabling RCDATA tags handling */ + this.inXML = false; + /** For disabling interpolation parsing in v-pre */ + this.inVPre = false; + /** Record newline positions for fast line / column calculation */ + this.newlines = []; + this.mode = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + this.delimiterIndex = -1; + this.currentSequence = void 0; + this.sequenceIndex = 0; + } + get inSFCRoot() { + return this.mode === 2 && this.stack.length === 0; + } + reset() { + this.state = 1; + this.mode = 0; + this.buffer = ""; + this.sectionStart = 0; + this.index = 0; + this.baseState = 1; + this.inRCDATA = false; + this.currentSequence = void 0; + this.newlines.length = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + } + /** + * Generate Position object with line / column information using recorded + * newline positions. We know the index is always going to be an already + * processed index, so all the newlines up to this index should have been + * recorded. + */ + getPos(index) { + let line = 1; + let column = index + 1; + for (let i = this.newlines.length - 1; i >= 0; i--) { + const newlineIndex = this.newlines[i]; + if (index > newlineIndex) { + line = i + 2; + column = index - newlineIndex; + break; + } + } + return { + column, + line, + offset: index + }; + } + peek() { + return this.buffer.charCodeAt(this.index + 1); + } + stateText(c) { + if (c === 60) { + if (this.index > this.sectionStart) { + this.cbs.ontext(this.sectionStart, this.index); + } + this.state = 5; + this.sectionStart = this.index; + } else if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } + stateInterpolationOpen(c) { + if (c === this.delimiterOpen[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterOpen.length - 1) { + const start = this.index + 1 - this.delimiterOpen.length; + if (start > this.sectionStart) { + this.cbs.ontext(this.sectionStart, start); + } + this.state = 3; + this.sectionStart = start; + } else { + this.delimiterIndex++; + } + } else if (this.inRCDATA) { + this.state = 32; + this.stateInRCDATA(c); + } else { + this.state = 1; + this.stateText(c); + } + } + stateInterpolation(c) { + if (c === this.delimiterClose[0]) { + this.state = 4; + this.delimiterIndex = 0; + this.stateInterpolationClose(c); + } + } + stateInterpolationClose(c) { + if (c === this.delimiterClose[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterClose.length - 1) { + this.cbs.oninterpolation(this.sectionStart, this.index + 1); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else { + this.delimiterIndex++; + } + } else { + this.state = 3; + this.stateInterpolation(c); + } + } + stateSpecialStartSequence(c) { + const isEnd = this.sequenceIndex === this.currentSequence.length; + const isMatch = isEnd ? ( + // If we are at the end of the sequence, make sure the tag name has ended + isEndOfTagSection(c) + ) : ( + // Otherwise, do a case-insensitive comparison + (c | 32) === this.currentSequence[this.sequenceIndex] + ); + if (!isMatch) { + this.inRCDATA = false; + } else if (!isEnd) { + this.sequenceIndex++; + return; + } + this.sequenceIndex = 0; + this.state = 6; + this.stateInTagName(c); + } + /** Look for an end tag. For <title> and <textarea>, also decode entities. */ + stateInRCDATA(c) { + if (this.sequenceIndex === this.currentSequence.length) { + if (c === 62 || isWhitespace(c)) { + const endOfText = this.index - this.currentSequence.length; + if (this.sectionStart < endOfText) { + const actualIndex = this.index; + this.index = endOfText; + this.cbs.ontext(this.sectionStart, endOfText); + this.index = actualIndex; + } + this.sectionStart = endOfText + 2; + this.stateInClosingTagName(c); + this.inRCDATA = false; + return; + } + this.sequenceIndex = 0; + } + if ((c | 32) === this.currentSequence[this.sequenceIndex]) { + this.sequenceIndex += 1; + } else if (this.sequenceIndex === 0) { + if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd && !this.inSFCRoot) { + if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } else if (this.fastForwardTo(60)) { + this.sequenceIndex = 1; + } + } else { + this.sequenceIndex = Number(c === 60); + } + } + stateCDATASequence(c) { + if (c === Sequences.Cdata[this.sequenceIndex]) { + if (++this.sequenceIndex === Sequences.Cdata.length) { + this.state = 28; + this.currentSequence = Sequences.CdataEnd; + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + } + } else { + this.sequenceIndex = 0; + this.state = 23; + this.stateInDeclaration(c); + } + } + /** + * When we wait for one specific character, we can speed things up + * by skipping through the buffer until we find it. + * + * @returns Whether the character was found. + */ + fastForwardTo(c) { + while (++this.index < this.buffer.length) { + const cc = this.buffer.charCodeAt(this.index); + if (cc === 10) { + this.newlines.push(this.index); + } + if (cc === c) { + return true; + } + } + this.index = this.buffer.length - 1; + return false; + } + /** + * Comments and CDATA end with `-->` and `]]>`. + * + * Their common qualities are: + * - Their end sequences have a distinct character they start with. + * - That character is then repeated, so we have to check multiple repeats. + * - All characters but the start character of the sequence can be skipped. + */ + stateInCommentLike(c) { + if (c === this.currentSequence[this.sequenceIndex]) { + if (++this.sequenceIndex === this.currentSequence.length) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, this.index - 2); + } else { + this.cbs.oncomment(this.sectionStart, this.index - 2); + } + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + this.state = 1; + } + } else if (this.sequenceIndex === 0) { + if (this.fastForwardTo(this.currentSequence[0])) { + this.sequenceIndex = 1; + } + } else if (c !== this.currentSequence[this.sequenceIndex - 1]) { + this.sequenceIndex = 0; + } + } + startSpecial(sequence, offset) { + this.enterRCDATA(sequence, offset); + this.state = 31; + } + enterRCDATA(sequence, offset) { + this.inRCDATA = true; + this.currentSequence = sequence; + this.sequenceIndex = offset; + } + stateBeforeTagName(c) { + if (c === 33) { + this.state = 22; + this.sectionStart = this.index + 1; + } else if (c === 63) { + this.state = 24; + this.sectionStart = this.index + 1; + } else if (isTagStartChar(c)) { + this.sectionStart = this.index; + if (this.mode === 0) { + this.state = 6; + } else if (this.inSFCRoot) { + this.state = 34; + } else if (!this.inXML) { + if (c === 116) { + this.state = 30; + } else { + this.state = c === 115 ? 29 : 6; + } + } else { + this.state = 6; + } + } else if (c === 47) { + this.state = 8; + } else { + this.state = 1; + this.stateText(c); + } + } + stateInTagName(c) { + if (isEndOfTagSection(c)) { + this.handleTagName(c); + } + } + stateInSFCRootTagName(c) { + if (isEndOfTagSection(c)) { + const tag = this.buffer.slice(this.sectionStart, this.index); + if (tag !== "template") { + this.enterRCDATA(toCharCodes(`</` + tag), 0); + } + this.handleTagName(c); + } + } + handleTagName(c) { + this.cbs.onopentagname(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } + stateBeforeClosingTagName(c) { + if (isWhitespace(c)) ; else if (c === 62) { + { + this.cbs.onerr(14, this.index); + } + this.state = 1; + this.sectionStart = this.index + 1; + } else { + this.state = isTagStartChar(c) ? 9 : 27; + this.sectionStart = this.index; + } + } + stateInClosingTagName(c) { + if (c === 62 || isWhitespace(c)) { + this.cbs.onclosetag(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 10; + this.stateAfterClosingTagName(c); + } + } + stateAfterClosingTagName(c) { + if (c === 62) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeAttrName(c) { + if (c === 62) { + this.cbs.onopentagend(this.index); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else if (c === 47) { + this.state = 7; + if (this.peek() !== 62) { + this.cbs.onerr(22, this.index); + } + } else if (c === 60 && this.peek() === 47) { + this.cbs.onopentagend(this.index); + this.state = 5; + this.sectionStart = this.index; + } else if (!isWhitespace(c)) { + if (c === 61) { + this.cbs.onerr( + 19, + this.index + ); + } + this.handleAttrStart(c); + } + } + handleAttrStart(c) { + if (c === 118 && this.peek() === 45) { + this.state = 13; + this.sectionStart = this.index; + } else if (c === 46 || c === 58 || c === 64 || c === 35) { + this.cbs.ondirname(this.index, this.index + 1); + this.state = 14; + this.sectionStart = this.index + 1; + } else { + this.state = 12; + this.sectionStart = this.index; + } + } + stateInSelfClosingTag(c) { + if (c === 62) { + this.cbs.onselfclosingtag(this.index); + this.state = 1; + this.sectionStart = this.index + 1; + this.inRCDATA = false; + } else if (!isWhitespace(c)) { + this.state = 11; + this.stateBeforeAttrName(c); + } + } + stateInAttrName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.onattribname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 34 || c === 39 || c === 60) { + this.cbs.onerr( + 17, + this.index + ); + } + } + stateInDirName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 58) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 14; + this.sectionStart = this.index + 1; + } else if (c === 46) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDirArg(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 91) { + this.state = 15; + } else if (c === 46) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDynamicDirArg(c) { + if (c === 93) { + this.state = 14; + } else if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index + 1); + this.handleAttrNameEnd(c); + { + this.cbs.onerr( + 27, + this.index + ); + } + } + } + stateInDirModifier(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 46) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.sectionStart = this.index + 1; + } + } + handleAttrNameEnd(c) { + this.sectionStart = this.index; + this.state = 17; + this.cbs.onattribnameend(this.index); + this.stateAfterAttrName(c); + } + stateAfterAttrName(c) { + if (c === 61) { + this.state = 18; + } else if (c === 47 || c === 62) { + this.cbs.onattribend(0, this.sectionStart); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } else if (!isWhitespace(c)) { + this.cbs.onattribend(0, this.sectionStart); + this.handleAttrStart(c); + } + } + stateBeforeAttrValue(c) { + if (c === 34) { + this.state = 19; + this.sectionStart = this.index + 1; + } else if (c === 39) { + this.state = 20; + this.sectionStart = this.index + 1; + } else if (!isWhitespace(c)) { + this.sectionStart = this.index; + this.state = 21; + this.stateInAttrValueNoQuotes(c); + } + } + handleInAttrValue(c, quote) { + if (c === quote || this.fastForwardTo(quote)) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend( + quote === 34 ? 3 : 2, + this.index + 1 + ); + this.state = 11; + } + } + stateInAttrValueDoubleQuotes(c) { + this.handleInAttrValue(c, 34); + } + stateInAttrValueSingleQuotes(c) { + this.handleInAttrValue(c, 39); + } + stateInAttrValueNoQuotes(c) { + if (isWhitespace(c) || c === 62) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend(1, this.index); + this.state = 11; + this.stateBeforeAttrName(c); + } else if (c === 34 || c === 39 || c === 60 || c === 61 || c === 96) { + this.cbs.onerr( + 18, + this.index + ); + } else ; + } + stateBeforeDeclaration(c) { + if (c === 91) { + this.state = 26; + this.sequenceIndex = 0; + } else { + this.state = c === 45 ? 25 : 23; + } + } + stateInDeclaration(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateInProcessingInstruction(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.onprocessinginstruction(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeComment(c) { + if (c === 45) { + this.state = 28; + this.currentSequence = Sequences.CommentEnd; + this.sequenceIndex = 2; + this.sectionStart = this.index + 1; + } else { + this.state = 23; + } + } + stateInSpecialComment(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.oncomment(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeSpecialS(c) { + if (c === Sequences.ScriptEnd[3]) { + this.startSpecial(Sequences.ScriptEnd, 4); + } else if (c === Sequences.StyleEnd[3]) { + this.startSpecial(Sequences.StyleEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + stateBeforeSpecialT(c) { + if (c === Sequences.TitleEnd[3]) { + this.startSpecial(Sequences.TitleEnd, 4); + } else if (c === Sequences.TextareaEnd[3]) { + this.startSpecial(Sequences.TextareaEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + startEntity() { + } + stateInEntity() { + } + /** + * Iterates through the buffer, calling the function corresponding to the current state. + * + * States that are more likely to be hit are higher up, as a performance improvement. + */ + parse(input) { + this.buffer = input; + while (this.index < this.buffer.length) { + const c = this.buffer.charCodeAt(this.index); + if (c === 10 && this.state !== 33) { + this.newlines.push(this.index); + } + switch (this.state) { + case 1: { + this.stateText(c); + break; + } + case 2: { + this.stateInterpolationOpen(c); + break; + } + case 3: { + this.stateInterpolation(c); + break; + } + case 4: { + this.stateInterpolationClose(c); + break; + } + case 31: { + this.stateSpecialStartSequence(c); + break; + } + case 32: { + this.stateInRCDATA(c); + break; + } + case 26: { + this.stateCDATASequence(c); + break; + } + case 19: { + this.stateInAttrValueDoubleQuotes(c); + break; + } + case 12: { + this.stateInAttrName(c); + break; + } + case 13: { + this.stateInDirName(c); + break; + } + case 14: { + this.stateInDirArg(c); + break; + } + case 15: { + this.stateInDynamicDirArg(c); + break; + } + case 16: { + this.stateInDirModifier(c); + break; + } + case 28: { + this.stateInCommentLike(c); + break; + } + case 27: { + this.stateInSpecialComment(c); + break; + } + case 11: { + this.stateBeforeAttrName(c); + break; + } + case 6: { + this.stateInTagName(c); + break; + } + case 34: { + this.stateInSFCRootTagName(c); + break; + } + case 9: { + this.stateInClosingTagName(c); + break; + } + case 5: { + this.stateBeforeTagName(c); + break; + } + case 17: { + this.stateAfterAttrName(c); + break; + } + case 20: { + this.stateInAttrValueSingleQuotes(c); + break; + } + case 18: { + this.stateBeforeAttrValue(c); + break; + } + case 8: { + this.stateBeforeClosingTagName(c); + break; + } + case 10: { + this.stateAfterClosingTagName(c); + break; + } + case 29: { + this.stateBeforeSpecialS(c); + break; + } + case 30: { + this.stateBeforeSpecialT(c); + break; + } + case 21: { + this.stateInAttrValueNoQuotes(c); + break; + } + case 7: { + this.stateInSelfClosingTag(c); + break; + } + case 23: { + this.stateInDeclaration(c); + break; + } + case 22: { + this.stateBeforeDeclaration(c); + break; + } + case 25: { + this.stateBeforeComment(c); + break; + } + case 24: { + this.stateInProcessingInstruction(c); + break; + } + case 33: { + this.stateInEntity(); + break; + } + } + this.index++; + } + this.cleanup(); + this.finish(); + } + /** + * Remove data that has already been consumed from the buffer. + */ + cleanup() { + if (this.sectionStart !== this.index) { + if (this.state === 1 || this.state === 32 && this.sequenceIndex === 0) { + this.cbs.ontext(this.sectionStart, this.index); + this.sectionStart = this.index; + } else if (this.state === 19 || this.state === 20 || this.state === 21) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = this.index; + } + } + } + finish() { + this.handleTrailingData(); + this.cbs.onend(); + } + /** Handle any trailing data. */ + handleTrailingData() { + const endIndex = this.buffer.length; + if (this.sectionStart >= endIndex) { + return; + } + if (this.state === 28) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, endIndex); + } else { + this.cbs.oncomment(this.sectionStart, endIndex); + } + } else if (this.state === 6 || this.state === 11 || this.state === 18 || this.state === 17 || this.state === 12 || this.state === 13 || this.state === 14 || this.state === 15 || this.state === 16 || this.state === 20 || this.state === 19 || this.state === 21 || this.state === 9) ; else { + this.cbs.ontext(this.sectionStart, endIndex); + } + } + emitCodePoint(cp, consumed) { + } +} + +const CompilerDeprecationTypes = { + "COMPILER_IS_ON_ELEMENT": "COMPILER_IS_ON_ELEMENT", + "COMPILER_V_BIND_SYNC": "COMPILER_V_BIND_SYNC", + "COMPILER_V_BIND_OBJECT_ORDER": "COMPILER_V_BIND_OBJECT_ORDER", + "COMPILER_V_ON_NATIVE": "COMPILER_V_ON_NATIVE", + "COMPILER_V_IF_V_FOR_PRECEDENCE": "COMPILER_V_IF_V_FOR_PRECEDENCE", + "COMPILER_NATIVE_TEMPLATE": "COMPILER_NATIVE_TEMPLATE", + "COMPILER_INLINE_TEMPLATE": "COMPILER_INLINE_TEMPLATE", + "COMPILER_FILTERS": "COMPILER_FILTERS" +}; +const deprecationData = { + ["COMPILER_IS_ON_ELEMENT"]: { + message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`, + link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html` + }, + ["COMPILER_V_BIND_SYNC"]: { + message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html` + }, + ["COMPILER_V_BIND_OBJECT_ORDER"]: { + message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html` + }, + ["COMPILER_V_ON_NATIVE"]: { + message: `.native modifier for v-on has been removed as is no longer necessary.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html` + }, + ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: { + message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html` + }, + ["COMPILER_NATIVE_TEMPLATE"]: { + message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.` + }, + ["COMPILER_INLINE_TEMPLATE"]: { + message: `"inline-template" has been removed in Vue 3.`, + link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html` + }, + ["COMPILER_FILTERS"]: { + message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`, + link: `https://v3-migration.vuejs.org/breaking-changes/filters.html` + } +}; +function getCompatValue(key, { compatConfig }) { + const value = compatConfig && compatConfig[key]; + if (key === "MODE") { + return value || 3; + } else { + return value; + } +} +function isCompatEnabled(key, context) { + const mode = getCompatValue("MODE", context); + const value = getCompatValue(key, context); + return mode === 3 ? value === true : value !== false; +} +function checkCompatEnabled(key, context, loc, ...args) { + const enabled = isCompatEnabled(key, context); + if (enabled) { + warnDeprecation(key, context, loc, ...args); + } + return enabled; +} +function warnDeprecation(key, context, loc, ...args) { + const val = getCompatValue(key, context); + if (val === "suppress-warning") { + return; + } + const { message, link } = deprecationData[key]; + const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? ` + Details: ${link}` : ``}`; + const err = new SyntaxError(msg); + err.code = key; + if (loc) err.loc = loc; + context.onWarn(err); +} + +function defaultOnError(error) { + throw error; +} +function defaultOnWarn(msg) { + console.warn(`[Vue warn] ${msg.message}`); +} +function createCompilerError(code, loc, messages, additionalMessage) { + const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ; + const error = new SyntaxError(String(msg)); + error.code = code; + error.loc = loc; + return error; +} +const ErrorCodes = { + "ABRUPT_CLOSING_OF_EMPTY_COMMENT": 0, + "0": "ABRUPT_CLOSING_OF_EMPTY_COMMENT", + "CDATA_IN_HTML_CONTENT": 1, + "1": "CDATA_IN_HTML_CONTENT", + "DUPLICATE_ATTRIBUTE": 2, + "2": "DUPLICATE_ATTRIBUTE", + "END_TAG_WITH_ATTRIBUTES": 3, + "3": "END_TAG_WITH_ATTRIBUTES", + "END_TAG_WITH_TRAILING_SOLIDUS": 4, + "4": "END_TAG_WITH_TRAILING_SOLIDUS", + "EOF_BEFORE_TAG_NAME": 5, + "5": "EOF_BEFORE_TAG_NAME", + "EOF_IN_CDATA": 6, + "6": "EOF_IN_CDATA", + "EOF_IN_COMMENT": 7, + "7": "EOF_IN_COMMENT", + "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT": 8, + "8": "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT", + "EOF_IN_TAG": 9, + "9": "EOF_IN_TAG", + "INCORRECTLY_CLOSED_COMMENT": 10, + "10": "INCORRECTLY_CLOSED_COMMENT", + "INCORRECTLY_OPENED_COMMENT": 11, + "11": "INCORRECTLY_OPENED_COMMENT", + "INVALID_FIRST_CHARACTER_OF_TAG_NAME": 12, + "12": "INVALID_FIRST_CHARACTER_OF_TAG_NAME", + "MISSING_ATTRIBUTE_VALUE": 13, + "13": "MISSING_ATTRIBUTE_VALUE", + "MISSING_END_TAG_NAME": 14, + "14": "MISSING_END_TAG_NAME", + "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES": 15, + "15": "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES", + "NESTED_COMMENT": 16, + "16": "NESTED_COMMENT", + "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME": 17, + "17": "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME", + "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE": 18, + "18": "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE", + "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME": 19, + "19": "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME", + "UNEXPECTED_NULL_CHARACTER": 20, + "20": "UNEXPECTED_NULL_CHARACTER", + "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME": 21, + "21": "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME", + "UNEXPECTED_SOLIDUS_IN_TAG": 22, + "22": "UNEXPECTED_SOLIDUS_IN_TAG", + "X_INVALID_END_TAG": 23, + "23": "X_INVALID_END_TAG", + "X_MISSING_END_TAG": 24, + "24": "X_MISSING_END_TAG", + "X_MISSING_INTERPOLATION_END": 25, + "25": "X_MISSING_INTERPOLATION_END", + "X_MISSING_DIRECTIVE_NAME": 26, + "26": "X_MISSING_DIRECTIVE_NAME", + "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END": 27, + "27": "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END", + "X_V_IF_NO_EXPRESSION": 28, + "28": "X_V_IF_NO_EXPRESSION", + "X_V_IF_SAME_KEY": 29, + "29": "X_V_IF_SAME_KEY", + "X_V_ELSE_NO_ADJACENT_IF": 30, + "30": "X_V_ELSE_NO_ADJACENT_IF", + "X_V_FOR_NO_EXPRESSION": 31, + "31": "X_V_FOR_NO_EXPRESSION", + "X_V_FOR_MALFORMED_EXPRESSION": 32, + "32": "X_V_FOR_MALFORMED_EXPRESSION", + "X_V_FOR_TEMPLATE_KEY_PLACEMENT": 33, + "33": "X_V_FOR_TEMPLATE_KEY_PLACEMENT", + "X_V_BIND_NO_EXPRESSION": 34, + "34": "X_V_BIND_NO_EXPRESSION", + "X_V_ON_NO_EXPRESSION": 35, + "35": "X_V_ON_NO_EXPRESSION", + "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET": 36, + "36": "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET", + "X_V_SLOT_MIXED_SLOT_USAGE": 37, + "37": "X_V_SLOT_MIXED_SLOT_USAGE", + "X_V_SLOT_DUPLICATE_SLOT_NAMES": 38, + "38": "X_V_SLOT_DUPLICATE_SLOT_NAMES", + "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN": 39, + "39": "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN", + "X_V_SLOT_MISPLACED": 40, + "40": "X_V_SLOT_MISPLACED", + "X_V_MODEL_NO_EXPRESSION": 41, + "41": "X_V_MODEL_NO_EXPRESSION", + "X_V_MODEL_MALFORMED_EXPRESSION": 42, + "42": "X_V_MODEL_MALFORMED_EXPRESSION", + "X_V_MODEL_ON_SCOPE_VARIABLE": 43, + "43": "X_V_MODEL_ON_SCOPE_VARIABLE", + "X_V_MODEL_ON_PROPS": 44, + "44": "X_V_MODEL_ON_PROPS", + "X_INVALID_EXPRESSION": 45, + "45": "X_INVALID_EXPRESSION", + "X_KEEP_ALIVE_INVALID_CHILDREN": 46, + "46": "X_KEEP_ALIVE_INVALID_CHILDREN", + "X_PREFIX_ID_NOT_SUPPORTED": 47, + "47": "X_PREFIX_ID_NOT_SUPPORTED", + "X_MODULE_MODE_NOT_SUPPORTED": 48, + "48": "X_MODULE_MODE_NOT_SUPPORTED", + "X_CACHE_HANDLER_NOT_SUPPORTED": 49, + "49": "X_CACHE_HANDLER_NOT_SUPPORTED", + "X_SCOPE_ID_NOT_SUPPORTED": 50, + "50": "X_SCOPE_ID_NOT_SUPPORTED", + "X_VNODE_HOOKS": 51, + "51": "X_VNODE_HOOKS", + "X_V_BIND_INVALID_SAME_NAME_ARGUMENT": 52, + "52": "X_V_BIND_INVALID_SAME_NAME_ARGUMENT", + "__EXTEND_POINT__": 53, + "53": "__EXTEND_POINT__" +}; +const errorMessages = { + // parse errors + [0]: "Illegal comment.", + [1]: "CDATA section is allowed only in XML context.", + [2]: "Duplicate attribute.", + [3]: "End tag cannot have attributes.", + [4]: "Illegal '/' in tags.", + [5]: "Unexpected EOF in tag.", + [6]: "Unexpected EOF in CDATA section.", + [7]: "Unexpected EOF in comment.", + [8]: "Unexpected EOF in script.", + [9]: "Unexpected EOF in tag.", + [10]: "Incorrectly closed comment.", + [11]: "Incorrectly opened comment.", + [12]: "Illegal tag name. Use '<' to print '<'.", + [13]: "Attribute value was expected.", + [14]: "End tag name was expected.", + [15]: "Whitespace was expected.", + [16]: "Unexpected '<!--' in comment.", + [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`, + [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).", + [19]: "Attribute name cannot start with '='.", + [21]: "'<?' is allowed only in XML context.", + [20]: `Unexpected null character.`, + [22]: "Illegal '/' in tags.", + // Vue-specific parse errors + [23]: "Invalid end tag.", + [24]: "Element is missing end tag.", + [25]: "Interpolation end sign was not found.", + [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.", + [26]: "Legal directive name was expected.", + // transform errors + [28]: `v-if/v-else-if is missing expression.`, + [29]: `v-if/else branches must use unique keys.`, + [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`, + [31]: `v-for is missing expression.`, + [32]: `v-for has invalid expression.`, + [33]: `<template v-for> key should be placed on the <template> tag.`, + [34]: `v-bind is missing expression.`, + [52]: `v-bind with same-name shorthand only allows static argument.`, + [35]: `v-on is missing expression.`, + [36]: `Unexpected custom directive on <slot> outlet.`, + [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`, + [38]: `Duplicate slot names found. `, + [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`, + [40]: `v-slot can only be used on components or <template> tags.`, + [41]: `v-model is missing expression.`, + [42]: `v-model value must be a valid JavaScript member expression.`, + [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`, + [44]: `v-model cannot be used on a prop, because local prop bindings are not writable. +Use a v-bind binding combined with a v-on listener that emits update:x event instead.`, + [45]: `Error parsing JavaScript expression: `, + [46]: `<KeepAlive> expects exactly one child component.`, + [51]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`, + // generic errors + [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`, + [48]: `ES module mode is not supported in this build of compiler.`, + [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`, + [50]: `"scopeId" option is only supported in module mode.`, + // just to fulfill types + [53]: `` +}; + +function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) { + { + return; + } +} +function isReferencedIdentifier(id, parent, parentStack) { + { + return false; + } +} +function isInDestructureAssignment(parent, parentStack) { + if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "AssignmentExpression") { + return true; + } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) { + break; + } + } + } + return false; +} +function isInNewExpression(parentStack) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "NewExpression") { + return true; + } else if (p.type !== "MemberExpression") { + break; + } + } + return false; +} +function walkFunctionParams(node, onIdent) { + for (const p of node.params) { + for (const id of extractIdentifiers(p)) { + onIdent(id); + } + } +} +function walkBlockDeclarations(block, onIdent) { + for (const stmt of block.body) { + if (stmt.type === "VariableDeclaration") { + if (stmt.declare) continue; + for (const decl of stmt.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") { + if (stmt.declare || !stmt.id) continue; + onIdent(stmt.id); + } else if (isForStatement(stmt)) { + walkForStatement(stmt, true, onIdent); + } + } +} +function isForStatement(stmt) { + return stmt.type === "ForOfStatement" || stmt.type === "ForInStatement" || stmt.type === "ForStatement"; +} +function walkForStatement(stmt, isVar, onIdent) { + const variable = stmt.type === "ForStatement" ? stmt.init : stmt.left; + if (variable && variable.type === "VariableDeclaration" && (variable.kind === "var" ? isVar : !isVar)) { + for (const decl of variable.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } +} +function extractIdentifiers(param, nodes = []) { + switch (param.type) { + case "Identifier": + nodes.push(param); + break; + case "MemberExpression": + let object = param; + while (object.type === "MemberExpression") { + object = object.object; + } + nodes.push(object); + break; + case "ObjectPattern": + for (const prop of param.properties) { + if (prop.type === "RestElement") { + extractIdentifiers(prop.argument, nodes); + } else { + extractIdentifiers(prop.value, nodes); + } + } + break; + case "ArrayPattern": + param.elements.forEach((element) => { + if (element) extractIdentifiers(element, nodes); + }); + break; + case "RestElement": + extractIdentifiers(param.argument, nodes); + break; + case "AssignmentPattern": + extractIdentifiers(param.left, nodes); + break; + } + return nodes; +} +const isFunctionType = (node) => { + return /Function(?:Expression|Declaration)$|Method$/.test(node.type); +}; +const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed; +const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node; +const TS_NODE_TYPES = [ + "TSAsExpression", + // foo as number + "TSTypeAssertion", + // (<number>foo) + "TSNonNullExpression", + // foo! + "TSInstantiationExpression", + // foo<string> + "TSSatisfiesExpression" + // foo satisfies T +]; +function unwrapTSNode(node) { + if (TS_NODE_TYPES.includes(node.type)) { + return unwrapTSNode(node.expression); + } else { + return node; + } +} + +const isStaticExp = (p) => p.type === 4 && p.isStatic; +function isCoreComponent(tag) { + switch (tag) { + case "Teleport": + case "teleport": + return TELEPORT; + case "Suspense": + case "suspense": + return SUSPENSE; + case "KeepAlive": + case "keep-alive": + return KEEP_ALIVE; + case "BaseTransition": + case "base-transition": + return BASE_TRANSITION; + } +} +const nonIdentifierRE = /^$|^\d|[^\$\w\xA0-\uFFFF]/; +const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name); +const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/; +const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/; +const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g; +const getExpSource = (exp) => exp.type === 4 ? exp.content : exp.loc.source; +const isMemberExpressionBrowser = (exp) => { + const path = getExpSource(exp).trim().replace(whitespaceRE, (s) => s.trim()); + let state = 0 /* inMemberExp */; + let stateStack = []; + let currentOpenBracketCount = 0; + let currentOpenParensCount = 0; + let currentStringType = null; + for (let i = 0; i < path.length; i++) { + const char = path.charAt(i); + switch (state) { + case 0 /* inMemberExp */: + if (char === "[") { + stateStack.push(state); + state = 1 /* inBrackets */; + currentOpenBracketCount++; + } else if (char === "(") { + stateStack.push(state); + state = 2 /* inParens */; + currentOpenParensCount++; + } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) { + return false; + } + break; + case 1 /* inBrackets */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `[`) { + currentOpenBracketCount++; + } else if (char === `]`) { + if (!--currentOpenBracketCount) { + state = stateStack.pop(); + } + } + break; + case 2 /* inParens */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `(`) { + currentOpenParensCount++; + } else if (char === `)`) { + if (i === path.length - 1) { + return false; + } + if (!--currentOpenParensCount) { + state = stateStack.pop(); + } + } + break; + case 3 /* inString */: + if (char === currentStringType) { + state = stateStack.pop(); + currentStringType = null; + } + break; + } + } + return !currentOpenBracketCount && !currentOpenParensCount; +}; +const isMemberExpressionNode = NOOP ; +const isMemberExpression = isMemberExpressionBrowser ; +const fnExpRE = /^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/; +const isFnExpressionBrowser = (exp) => fnExpRE.test(getExpSource(exp)); +const isFnExpressionNode = NOOP ; +const isFnExpression = isFnExpressionBrowser ; +function advancePositionWithClone(pos, source, numberOfCharacters = source.length) { + return advancePositionWithMutation( + { + offset: pos.offset, + line: pos.line, + column: pos.column + }, + source, + numberOfCharacters + ); +} +function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) { + let linesCount = 0; + let lastNewLinePos = -1; + for (let i = 0; i < numberOfCharacters; i++) { + if (source.charCodeAt(i) === 10) { + linesCount++; + lastNewLinePos = i; + } + } + pos.offset += numberOfCharacters; + pos.line += linesCount; + pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos; + return pos; +} +function assert(condition, msg) { + if (!condition) { + throw new Error(msg || `unexpected compiler condition`); + } +} +function findDir(node, name, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (allowEmpty || p.exp) && (isString(name) ? p.name === name : name.test(p.name))) { + return p; + } + } +} +function findProp(node, name, dynamicOnly = false, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (dynamicOnly) continue; + if (p.name === name && (p.value || allowEmpty)) { + return p; + } + } else if (p.name === "bind" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) { + return p; + } + } +} +function isStaticArgOf(arg, name) { + return !!(arg && isStaticExp(arg) && arg.content === name); +} +function hasDynamicKeyVBind(node) { + return node.props.some( + (p) => p.type === 7 && p.name === "bind" && (!p.arg || // v-bind="obj" + p.arg.type !== 4 || // v-bind:[_ctx.foo] + !p.arg.isStatic) + // v-bind:[foo] + ); +} +function isText$1(node) { + return node.type === 5 || node.type === 2; +} +function isVPre(p) { + return p.type === 7 && p.name === "pre"; +} +function isVSlot(p) { + return p.type === 7 && p.name === "slot"; +} +function isTemplateNode(node) { + return node.type === 1 && node.tagType === 3; +} +function isSlotOutlet(node) { + return node.type === 1 && node.tagType === 2; +} +const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]); +function getUnnormalizedProps(props, callPath = []) { + if (props && !isString(props) && props.type === 14) { + const callee = props.callee; + if (!isString(callee) && propsHelperSet.has(callee)) { + return getUnnormalizedProps( + props.arguments[0], + callPath.concat(props) + ); + } + } + return [props, callPath]; +} +function injectProp(node, prop, context) { + let propsWithInjection; + let props = node.type === 13 ? node.props : node.arguments[2]; + let callPath = []; + let parentCall; + if (props && !isString(props) && props.type === 14) { + const ret = getUnnormalizedProps(props); + props = ret[0]; + callPath = ret[1]; + parentCall = callPath[callPath.length - 1]; + } + if (props == null || isString(props)) { + propsWithInjection = createObjectExpression([prop]); + } else if (props.type === 14) { + const first = props.arguments[0]; + if (!isString(first) && first.type === 15) { + if (!hasProp(prop, first)) { + first.properties.unshift(prop); + } + } else { + if (props.callee === TO_HANDLERS) { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + } else { + props.arguments.unshift(createObjectExpression([prop])); + } + } + !propsWithInjection && (propsWithInjection = props); + } else if (props.type === 15) { + if (!hasProp(prop, props)) { + props.properties.unshift(prop); + } + propsWithInjection = props; + } else { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) { + parentCall = callPath[callPath.length - 2]; + } + } + if (node.type === 13) { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.props = propsWithInjection; + } + } else { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.arguments[2] = propsWithInjection; + } + } +} +function hasProp(prop, props) { + let result = false; + if (prop.key.type === 4) { + const propKeyName = prop.key.content; + result = props.properties.some( + (p) => p.key.type === 4 && p.key.content === propKeyName + ); + } + return result; +} +function toValidAssetId(name, type) { + return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => { + return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString(); + })}`; +} +function hasScopeRef(node, ids) { + if (!node || Object.keys(ids).length === 0) { + return false; + } + switch (node.type) { + case 1: + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) { + return true; + } + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 11: + if (hasScopeRef(node.source, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 9: + return node.branches.some((b) => hasScopeRef(b, ids)); + case 10: + if (hasScopeRef(node.condition, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 4: + return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content]; + case 8: + return node.children.some((c) => isObject(c) && hasScopeRef(c, ids)); + case 5: + case 12: + return hasScopeRef(node.content, ids); + case 2: + case 3: + case 20: + return false; + default: + return false; + } +} +function getMemoedVNodeCall(node) { + if (node.type === 14 && node.callee === WITH_MEMO) { + return node.arguments[1].returns; + } else { + return node; + } +} +const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/; + +const defaultParserOptions = { + parseMode: "base", + ns: 0, + delimiters: [`{{`, `}}`], + getNamespace: () => 0, + isVoidTag: NO, + isPreTag: NO, + isIgnoreNewlineTag: NO, + isCustomElement: NO, + onError: defaultOnError, + onWarn: defaultOnWarn, + comments: true, + prefixIdentifiers: false +}; +let currentOptions = defaultParserOptions; +let currentRoot = null; +let currentInput = ""; +let currentOpenTag = null; +let currentProp = null; +let currentAttrValue = ""; +let currentAttrStartIndex = -1; +let currentAttrEndIndex = -1; +let inPre = 0; +let inVPre = false; +let currentVPreBoundary = null; +const stack = []; +const tokenizer = new Tokenizer(stack, { + onerr: emitError, + ontext(start, end) { + onText(getSlice(start, end), start, end); + }, + ontextentity(char, start, end) { + onText(char, start, end); + }, + oninterpolation(start, end) { + if (inVPre) { + return onText(getSlice(start, end), start, end); + } + let innerStart = start + tokenizer.delimiterOpen.length; + let innerEnd = end - tokenizer.delimiterClose.length; + while (isWhitespace(currentInput.charCodeAt(innerStart))) { + innerStart++; + } + while (isWhitespace(currentInput.charCodeAt(innerEnd - 1))) { + innerEnd--; + } + let exp = getSlice(innerStart, innerEnd); + if (exp.includes("&")) { + { + exp = currentOptions.decodeEntities(exp, false); + } + } + addNode({ + type: 5, + content: createExp(exp, false, getLoc(innerStart, innerEnd)), + loc: getLoc(start, end) + }); + }, + onopentagname(start, end) { + const name = getSlice(start, end); + currentOpenTag = { + type: 1, + tag: name, + ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns), + tagType: 0, + // will be refined on tag close + props: [], + children: [], + loc: getLoc(start - 1, end), + codegenNode: void 0 + }; + }, + onopentagend(end) { + endOpenTag(end); + }, + onclosetag(start, end) { + const name = getSlice(start, end); + if (!currentOptions.isVoidTag(name)) { + let found = false; + for (let i = 0; i < stack.length; i++) { + const e = stack[i]; + if (e.tag.toLowerCase() === name.toLowerCase()) { + found = true; + if (i > 0) { + emitError(24, stack[0].loc.start.offset); + } + for (let j = 0; j <= i; j++) { + const el = stack.shift(); + onCloseTag(el, end, j < i); + } + break; + } + } + if (!found) { + emitError(23, backTrack(start, 60)); + } + } + }, + onselfclosingtag(end) { + const name = currentOpenTag.tag; + currentOpenTag.isSelfClosing = true; + endOpenTag(end); + if (stack[0] && stack[0].tag === name) { + onCloseTag(stack.shift(), end); + } + }, + onattribname(start, end) { + currentProp = { + type: 6, + name: getSlice(start, end), + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + }, + ondirname(start, end) { + const raw = getSlice(start, end); + const name = raw === "." || raw === ":" ? "bind" : raw === "@" ? "on" : raw === "#" ? "slot" : raw.slice(2); + if (!inVPre && name === "") { + emitError(26, start); + } + if (inVPre || name === "") { + currentProp = { + type: 6, + name: raw, + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + } else { + currentProp = { + type: 7, + name, + rawName: raw, + exp: void 0, + arg: void 0, + modifiers: raw === "." ? [createSimpleExpression("prop")] : [], + loc: getLoc(start) + }; + if (name === "pre") { + inVPre = tokenizer.inVPre = true; + currentVPreBoundary = currentOpenTag; + const props = currentOpenTag.props; + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7) { + props[i] = dirToAttr(props[i]); + } + } + } + } + }, + ondirarg(start, end) { + if (start === end) return; + const arg = getSlice(start, end); + if (inVPre && !isVPre(currentProp)) { + currentProp.name += arg; + setLocEnd(currentProp.nameLoc, end); + } else { + const isStatic = arg[0] !== `[`; + currentProp.arg = createExp( + isStatic ? arg : arg.slice(1, -1), + isStatic, + getLoc(start, end), + isStatic ? 3 : 0 + ); + } + }, + ondirmodifier(start, end) { + const mod = getSlice(start, end); + if (inVPre && !isVPre(currentProp)) { + currentProp.name += "." + mod; + setLocEnd(currentProp.nameLoc, end); + } else if (currentProp.name === "slot") { + const arg = currentProp.arg; + if (arg) { + arg.content += "." + mod; + setLocEnd(arg.loc, end); + } + } else { + const exp = createSimpleExpression(mod, true, getLoc(start, end)); + currentProp.modifiers.push(exp); + } + }, + onattribdata(start, end) { + currentAttrValue += getSlice(start, end); + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribentity(char, start, end) { + currentAttrValue += char; + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribnameend(end) { + const start = currentProp.loc.start.offset; + const name = getSlice(start, end); + if (currentProp.type === 7) { + currentProp.rawName = name; + } + if (currentOpenTag.props.some( + (p) => (p.type === 7 ? p.rawName : p.name) === name + )) { + emitError(2, start); + } + }, + onattribend(quote, end) { + if (currentOpenTag && currentProp) { + setLocEnd(currentProp.loc, end); + if (quote !== 0) { + if (currentAttrValue.includes("&")) { + currentAttrValue = currentOptions.decodeEntities( + currentAttrValue, + true + ); + } + if (currentProp.type === 6) { + if (currentProp.name === "class") { + currentAttrValue = condense(currentAttrValue).trim(); + } + if (quote === 1 && !currentAttrValue) { + emitError(13, end); + } + currentProp.value = { + type: 2, + content: currentAttrValue, + loc: quote === 1 ? getLoc(currentAttrStartIndex, currentAttrEndIndex) : getLoc(currentAttrStartIndex - 1, currentAttrEndIndex + 1) + }; + if (tokenizer.inSFCRoot && currentOpenTag.tag === "template" && currentProp.name === "lang" && currentAttrValue && currentAttrValue !== "html") { + tokenizer.enterRCDATA(toCharCodes(`</template`), 0); + } + } else { + let expParseMode = 0 /* Normal */; + currentProp.exp = createExp( + currentAttrValue, + false, + getLoc(currentAttrStartIndex, currentAttrEndIndex), + 0, + expParseMode + ); + if (currentProp.name === "for") { + currentProp.forParseResult = parseForExpression(currentProp.exp); + } + let syncIndex = -1; + if (currentProp.name === "bind" && (syncIndex = currentProp.modifiers.findIndex( + (mod) => mod.content === "sync" + )) > -1 && checkCompatEnabled( + "COMPILER_V_BIND_SYNC", + currentOptions, + currentProp.loc, + currentProp.arg.loc.source + )) { + currentProp.name = "model"; + currentProp.modifiers.splice(syncIndex, 1); + } + } + } + if (currentProp.type !== 7 || currentProp.name !== "pre") { + currentOpenTag.props.push(currentProp); + } + } + currentAttrValue = ""; + currentAttrStartIndex = currentAttrEndIndex = -1; + }, + oncomment(start, end) { + if (currentOptions.comments) { + addNode({ + type: 3, + content: getSlice(start, end), + loc: getLoc(start - 4, end + 3) + }); + } + }, + onend() { + const end = currentInput.length; + if (tokenizer.state !== 1) { + switch (tokenizer.state) { + case 5: + case 8: + emitError(5, end); + break; + case 3: + case 4: + emitError( + 25, + tokenizer.sectionStart + ); + break; + case 28: + if (tokenizer.currentSequence === Sequences.CdataEnd) { + emitError(6, end); + } else { + emitError(7, end); + } + break; + case 6: + case 7: + case 9: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + // " + case 20: + // ' + case 21: + emitError(9, end); + break; + } + } + for (let index = 0; index < stack.length; index++) { + onCloseTag(stack[index], end - 1); + emitError(24, stack[index].loc.start.offset); + } + }, + oncdata(start, end) { + if (stack[0].ns !== 0) { + onText(getSlice(start, end), start, end); + } else { + emitError(1, start - 9); + } + }, + onprocessinginstruction(start) { + if ((stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + emitError( + 21, + start - 1 + ); + } + } +}); +const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; +const stripParensRE = /^\(|\)$/g; +function parseForExpression(input) { + const loc = input.loc; + const exp = input.content; + const inMatch = exp.match(forAliasRE); + if (!inMatch) return; + const [, LHS, RHS] = inMatch; + const createAliasExpression = (content, offset, asParam = false) => { + const start = loc.start.offset + offset; + const end = start + content.length; + return createExp( + content, + false, + getLoc(start, end), + 0, + asParam ? 1 /* Params */ : 0 /* Normal */ + ); + }; + const result = { + source: createAliasExpression(RHS.trim(), exp.indexOf(RHS, LHS.length)), + value: void 0, + key: void 0, + index: void 0, + finalized: false + }; + let valueContent = LHS.trim().replace(stripParensRE, "").trim(); + const trimmedOffset = LHS.indexOf(valueContent); + const iteratorMatch = valueContent.match(forIteratorRE); + if (iteratorMatch) { + valueContent = valueContent.replace(forIteratorRE, "").trim(); + const keyContent = iteratorMatch[1].trim(); + let keyOffset; + if (keyContent) { + keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length); + result.key = createAliasExpression(keyContent, keyOffset, true); + } + if (iteratorMatch[2]) { + const indexContent = iteratorMatch[2].trim(); + if (indexContent) { + result.index = createAliasExpression( + indexContent, + exp.indexOf( + indexContent, + result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length + ), + true + ); + } + } + } + if (valueContent) { + result.value = createAliasExpression(valueContent, trimmedOffset, true); + } + return result; +} +function getSlice(start, end) { + return currentInput.slice(start, end); +} +function endOpenTag(end) { + if (tokenizer.inSFCRoot) { + currentOpenTag.innerLoc = getLoc(end + 1, end + 1); + } + addNode(currentOpenTag); + const { tag, ns } = currentOpenTag; + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre++; + } + if (currentOptions.isVoidTag(tag)) { + onCloseTag(currentOpenTag, end); + } else { + stack.unshift(currentOpenTag); + if (ns === 1 || ns === 2) { + tokenizer.inXML = true; + } + } + currentOpenTag = null; +} +function onText(content, start, end) { + { + const tag = stack[0] && stack[0].tag; + if (tag !== "script" && tag !== "style" && content.includes("&")) { + content = currentOptions.decodeEntities(content, false); + } + } + const parent = stack[0] || currentRoot; + const lastNode = parent.children[parent.children.length - 1]; + if (lastNode && lastNode.type === 2) { + lastNode.content += content; + setLocEnd(lastNode.loc, end); + } else { + parent.children.push({ + type: 2, + content, + loc: getLoc(start, end) + }); + } +} +function onCloseTag(el, end, isImplied = false) { + if (isImplied) { + setLocEnd(el.loc, backTrack(end, 60)); + } else { + setLocEnd(el.loc, lookAhead(end, 62) + 1); + } + if (tokenizer.inSFCRoot) { + if (el.children.length) { + el.innerLoc.end = extend({}, el.children[el.children.length - 1].loc.end); + } else { + el.innerLoc.end = extend({}, el.innerLoc.start); + } + el.innerLoc.source = getSlice( + el.innerLoc.start.offset, + el.innerLoc.end.offset + ); + } + const { tag, ns, children } = el; + if (!inVPre) { + if (tag === "slot") { + el.tagType = 2; + } else if (isFragmentTemplate(el)) { + el.tagType = 3; + } else if (isComponent(el)) { + el.tagType = 1; + } + } + if (!tokenizer.inRCDATA) { + el.children = condenseWhitespace(children); + } + if (ns === 0 && currentOptions.isIgnoreNewlineTag(tag)) { + const first = children[0]; + if (first && first.type === 2) { + first.content = first.content.replace(/^\r?\n/, ""); + } + } + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre--; + } + if (currentVPreBoundary === el) { + inVPre = tokenizer.inVPre = false; + currentVPreBoundary = null; + } + if (tokenizer.inXML && (stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + tokenizer.inXML = false; + } + { + const props = el.props; + if (isCompatEnabled( + "COMPILER_V_IF_V_FOR_PRECEDENCE", + currentOptions + )) { + let hasIf = false; + let hasFor = false; + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 7) { + if (p.name === "if") { + hasIf = true; + } else if (p.name === "for") { + hasFor = true; + } + } + if (hasIf && hasFor) { + warnDeprecation( + "COMPILER_V_IF_V_FOR_PRECEDENCE", + currentOptions, + el.loc + ); + break; + } + } + } + if (!tokenizer.inSFCRoot && isCompatEnabled( + "COMPILER_NATIVE_TEMPLATE", + currentOptions + ) && el.tag === "template" && !isFragmentTemplate(el)) { + warnDeprecation( + "COMPILER_NATIVE_TEMPLATE", + currentOptions, + el.loc + ); + const parent = stack[0] || currentRoot; + const index = parent.children.indexOf(el); + parent.children.splice(index, 1, ...el.children); + } + const inlineTemplateProp = props.find( + (p) => p.type === 6 && p.name === "inline-template" + ); + if (inlineTemplateProp && checkCompatEnabled( + "COMPILER_INLINE_TEMPLATE", + currentOptions, + inlineTemplateProp.loc + ) && el.children.length) { + inlineTemplateProp.value = { + type: 2, + content: getSlice( + el.children[0].loc.start.offset, + el.children[el.children.length - 1].loc.end.offset + ), + loc: inlineTemplateProp.loc + }; + } + } +} +function lookAhead(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i < currentInput.length - 1) i++; + return i; +} +function backTrack(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i >= 0) i--; + return i; +} +const specialTemplateDir = /* @__PURE__ */ new Set(["if", "else", "else-if", "for", "slot"]); +function isFragmentTemplate({ tag, props }) { + if (tag === "template") { + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7 && specialTemplateDir.has(props[i].name)) { + return true; + } + } + } + return false; +} +function isComponent({ tag, props }) { + if (currentOptions.isCustomElement(tag)) { + return false; + } + if (tag === "component" || isUpperCase(tag.charCodeAt(0)) || isCoreComponent(tag) || currentOptions.isBuiltInComponent && currentOptions.isBuiltInComponent(tag) || currentOptions.isNativeTag && !currentOptions.isNativeTag(tag)) { + return true; + } + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 6) { + if (p.name === "is" && p.value) { + if (p.value.content.startsWith("vue:")) { + return true; + } else if (checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; + } + } + } else if (// :is on plain element - only treat as component in compat mode + p.name === "bind" && isStaticArgOf(p.arg, "is") && checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; + } + } + return false; +} +function isUpperCase(c) { + return c > 64 && c < 91; +} +const windowsNewlineRE = /\r\n/g; +function condenseWhitespace(nodes) { + const shouldCondense = currentOptions.whitespace !== "preserve"; + let removedWhitespace = false; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (node.type === 2) { + if (!inPre) { + if (isAllWhitespace(node.content)) { + const prev = nodes[i - 1] && nodes[i - 1].type; + const next = nodes[i + 1] && nodes[i + 1].type; + if (!prev || !next || shouldCondense && (prev === 3 && (next === 3 || next === 1) || prev === 1 && (next === 3 || next === 1 && hasNewlineChar(node.content)))) { + removedWhitespace = true; + nodes[i] = null; + } else { + node.content = " "; + } + } else if (shouldCondense) { + node.content = condense(node.content); + } + } else { + node.content = node.content.replace(windowsNewlineRE, "\n"); + } + } + } + return removedWhitespace ? nodes.filter(Boolean) : nodes; +} +function isAllWhitespace(str) { + for (let i = 0; i < str.length; i++) { + if (!isWhitespace(str.charCodeAt(i))) { + return false; + } + } + return true; +} +function hasNewlineChar(str) { + for (let i = 0; i < str.length; i++) { + const c = str.charCodeAt(i); + if (c === 10 || c === 13) { + return true; + } + } + return false; +} +function condense(str) { + let ret = ""; + let prevCharIsWhitespace = false; + for (let i = 0; i < str.length; i++) { + if (isWhitespace(str.charCodeAt(i))) { + if (!prevCharIsWhitespace) { + ret += " "; + prevCharIsWhitespace = true; + } + } else { + ret += str[i]; + prevCharIsWhitespace = false; + } + } + return ret; +} +function addNode(node) { + (stack[0] || currentRoot).children.push(node); +} +function getLoc(start, end) { + return { + start: tokenizer.getPos(start), + // @ts-expect-error allow late attachment + end: end == null ? end : tokenizer.getPos(end), + // @ts-expect-error allow late attachment + source: end == null ? end : getSlice(start, end) + }; +} +function cloneLoc(loc) { + return getLoc(loc.start.offset, loc.end.offset); +} +function setLocEnd(loc, end) { + loc.end = tokenizer.getPos(end); + loc.source = getSlice(loc.start.offset, end); +} +function dirToAttr(dir) { + const attr = { + type: 6, + name: dir.rawName, + nameLoc: getLoc( + dir.loc.start.offset, + dir.loc.start.offset + dir.rawName.length + ), + value: void 0, + loc: dir.loc + }; + if (dir.exp) { + const loc = dir.exp.loc; + if (loc.end.offset < dir.loc.end.offset) { + loc.start.offset--; + loc.start.column--; + loc.end.offset++; + loc.end.column++; + } + attr.value = { + type: 2, + content: dir.exp.content, + loc + }; + } + return attr; +} +function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0 /* Normal */) { + const exp = createSimpleExpression(content, isStatic, loc, constType); + return exp; +} +function emitError(code, index, message) { + currentOptions.onError( + createCompilerError(code, getLoc(index, index), void 0, message) + ); +} +function reset() { + tokenizer.reset(); + currentOpenTag = null; + currentProp = null; + currentAttrValue = ""; + currentAttrStartIndex = -1; + currentAttrEndIndex = -1; + stack.length = 0; +} +function baseParse(input, options) { + reset(); + currentInput = input; + currentOptions = extend({}, defaultParserOptions); + if (options) { + let key; + for (key in options) { + if (options[key] != null) { + currentOptions[key] = options[key]; + } + } + } + { + if (!currentOptions.decodeEntities) { + throw new Error( + `[@vue/compiler-core] decodeEntities option is required in browser builds.` + ); + } + } + tokenizer.mode = currentOptions.parseMode === "html" ? 1 : currentOptions.parseMode === "sfc" ? 2 : 0; + tokenizer.inXML = currentOptions.ns === 1 || currentOptions.ns === 2; + const delimiters = options && options.delimiters; + if (delimiters) { + tokenizer.delimiterOpen = toCharCodes(delimiters[0]); + tokenizer.delimiterClose = toCharCodes(delimiters[1]); + } + const root = currentRoot = createRoot([], input); + tokenizer.parse(currentInput); + root.loc = getLoc(0, input.length); + root.children = condenseWhitespace(root.children); + currentRoot = null; + return root; +} + +function cacheStatic(root, context) { + walk( + root, + void 0, + context, + // Root node is unfortunately non-hoistable due to potential parent + // fallthrough attributes. + !!getSingleElementRoot(root) + ); +} +function getSingleElementRoot(root) { + const children = root.children.filter((x) => x.type !== 3); + return children.length === 1 && children[0].type === 1 && !isSlotOutlet(children[0]) ? children[0] : null; +} +function walk(node, parent, context, doNotHoistNode = false, inFor = false) { + const { children } = node; + const toCache = []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.type === 1 && child.tagType === 0) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType > 0) { + if (constantType >= 2) { + child.codegenNode.patchFlag = -1; + toCache.push(child); + continue; + } + } else { + const codegenNode = child.codegenNode; + if (codegenNode.type === 13) { + const flag = codegenNode.patchFlag; + if ((flag === void 0 || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) { + const props = getNodeProps(child); + if (props) { + codegenNode.props = context.hoist(props); + } + } + if (codegenNode.dynamicProps) { + codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps); + } + } + } + } else if (child.type === 12) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType >= 2) { + if (child.codegenNode.type === 14 && child.codegenNode.arguments.length > 0) { + child.codegenNode.arguments.push( + -1 + (` /* ${PatchFlagNames[-1]} */` ) + ); + } + toCache.push(child); + continue; + } + } + if (child.type === 1) { + const isComponent = child.tagType === 1; + if (isComponent) { + context.scopes.vSlot++; + } + walk(child, node, context, false, inFor); + if (isComponent) { + context.scopes.vSlot--; + } + } else if (child.type === 11) { + walk(child, node, context, child.children.length === 1, true); + } else if (child.type === 9) { + for (let i2 = 0; i2 < child.branches.length; i2++) { + walk( + child.branches[i2], + node, + context, + child.branches[i2].children.length === 1, + inFor + ); + } + } + } + let cachedAsArray = false; + const slotCacheKeys = []; + if (toCache.length === children.length && node.type === 1) { + if (node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && isArray(node.codegenNode.children)) { + node.codegenNode.children = getCacheExpression( + createArrayExpression(node.codegenNode.children) + ); + cachedAsArray = true; + } else if (node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) { + const slot = getSlotNode(node.codegenNode, "default"); + if (slot) { + slotCacheKeys.push(context.cached.length); + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } else if (node.tagType === 3 && parent && parent.type === 1 && parent.tagType === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !isArray(parent.codegenNode.children) && parent.codegenNode.children.type === 15) { + const slotName = findDir(node, "slot", true); + const slot = slotName && slotName.arg && getSlotNode(parent.codegenNode, slotName.arg); + if (slot) { + slotCacheKeys.push(context.cached.length); + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } + } + if (!cachedAsArray) { + for (const child of toCache) { + slotCacheKeys.push(context.cached.length); + child.codegenNode = context.cache(child.codegenNode); + } + } + if (slotCacheKeys.length && node.type === 1 && node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) { + node.codegenNode.children.properties.push( + createObjectProperty( + `__`, + createSimpleExpression(JSON.stringify(slotCacheKeys), false) + ) + ); + } + function getCacheExpression(value) { + const exp = context.cache(value); + if (inFor && context.hmr) { + exp.needArraySpread = true; + } + return exp; + } + function getSlotNode(node2, name) { + if (node2.children && !isArray(node2.children) && node2.children.type === 15) { + const slot = node2.children.properties.find( + (p) => p.key === name || p.key.content === name + ); + return slot && slot.value; + } + } + if (toCache.length && context.transformHoist) { + context.transformHoist(children, context, node); + } +} +function getConstantType(node, context) { + const { constantCache } = context; + switch (node.type) { + case 1: + if (node.tagType !== 0) { + return 0; + } + const cached = constantCache.get(node); + if (cached !== void 0) { + return cached; + } + const codegenNode = node.codegenNode; + if (codegenNode.type !== 13) { + return 0; + } + if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject" && node.tag !== "math") { + return 0; + } + if (codegenNode.patchFlag === void 0) { + let returnType2 = 3; + const generatedPropsType = getGeneratedPropsConstantType(node, context); + if (generatedPropsType === 0) { + constantCache.set(node, 0); + return 0; + } + if (generatedPropsType < returnType2) { + returnType2 = generatedPropsType; + } + for (let i = 0; i < node.children.length; i++) { + const childType = getConstantType(node.children[i], context); + if (childType === 0) { + constantCache.set(node, 0); + return 0; + } + if (childType < returnType2) { + returnType2 = childType; + } + } + if (returnType2 > 1) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && p.name === "bind" && p.exp) { + const expType = getConstantType(p.exp, context); + if (expType === 0) { + constantCache.set(node, 0); + return 0; + } + if (expType < returnType2) { + returnType2 = expType; + } + } + } + } + if (codegenNode.isBlock) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7) { + constantCache.set(node, 0); + return 0; + } + } + context.removeHelper(OPEN_BLOCK); + context.removeHelper( + getVNodeBlockHelper(context.inSSR, codegenNode.isComponent) + ); + codegenNode.isBlock = false; + context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent)); + } + constantCache.set(node, returnType2); + return returnType2; + } else { + constantCache.set(node, 0); + return 0; + } + case 2: + case 3: + return 3; + case 9: + case 11: + case 10: + return 0; + case 5: + case 12: + return getConstantType(node.content, context); + case 4: + return node.constType; + case 8: + let returnType = 3; + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (isString(child) || isSymbol(child)) { + continue; + } + const childType = getConstantType(child, context); + if (childType === 0) { + return 0; + } else if (childType < returnType) { + returnType = childType; + } + } + return returnType; + case 20: + return 2; + default: + return 0; + } +} +const allowHoistedHelperSet = /* @__PURE__ */ new Set([ + NORMALIZE_CLASS, + NORMALIZE_STYLE, + NORMALIZE_PROPS, + GUARD_REACTIVE_PROPS +]); +function getConstantTypeOfHelperCall(value, context) { + if (value.type === 14 && !isString(value.callee) && allowHoistedHelperSet.has(value.callee)) { + const arg = value.arguments[0]; + if (arg.type === 4) { + return getConstantType(arg, context); + } else if (arg.type === 14) { + return getConstantTypeOfHelperCall(arg, context); + } + } + return 0; +} +function getGeneratedPropsConstantType(node, context) { + let returnType = 3; + const props = getNodeProps(node); + if (props && props.type === 15) { + const { properties } = props; + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + const keyType = getConstantType(key, context); + if (keyType === 0) { + return keyType; + } + if (keyType < returnType) { + returnType = keyType; + } + let valueType; + if (value.type === 4) { + valueType = getConstantType(value, context); + } else if (value.type === 14) { + valueType = getConstantTypeOfHelperCall(value, context); + } else { + valueType = 0; + } + if (valueType === 0) { + return valueType; + } + if (valueType < returnType) { + returnType = valueType; + } + } + } + return returnType; +} +function getNodeProps(node) { + const codegenNode = node.codegenNode; + if (codegenNode.type === 13) { + return codegenNode.props; + } +} + +function createTransformContext(root, { + filename = "", + prefixIdentifiers = false, + hoistStatic = false, + hmr = false, + cacheHandlers = false, + nodeTransforms = [], + directiveTransforms = {}, + transformHoist = null, + isBuiltInComponent = NOOP, + isCustomElement = NOOP, + expressionPlugins = [], + scopeId = null, + slotted = true, + ssr = false, + inSSR = false, + ssrCssVars = ``, + bindingMetadata = EMPTY_OBJ, + inline = false, + isTS = false, + onError = defaultOnError, + onWarn = defaultOnWarn, + compatConfig +}) { + const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/); + const context = { + // options + filename, + selfName: nameMatch && capitalize(camelize(nameMatch[1])), + prefixIdentifiers, + hoistStatic, + hmr, + cacheHandlers, + nodeTransforms, + directiveTransforms, + transformHoist, + isBuiltInComponent, + isCustomElement, + expressionPlugins, + scopeId, + slotted, + ssr, + inSSR, + ssrCssVars, + bindingMetadata, + inline, + isTS, + onError, + onWarn, + compatConfig, + // state + root, + helpers: /* @__PURE__ */ new Map(), + components: /* @__PURE__ */ new Set(), + directives: /* @__PURE__ */ new Set(), + hoists: [], + imports: [], + cached: [], + constantCache: /* @__PURE__ */ new WeakMap(), + temps: 0, + identifiers: /* @__PURE__ */ Object.create(null), + scopes: { + vFor: 0, + vSlot: 0, + vPre: 0, + vOnce: 0 + }, + parent: null, + grandParent: null, + currentNode: root, + childIndex: 0, + inVOnce: false, + // methods + helper(name) { + const count = context.helpers.get(name) || 0; + context.helpers.set(name, count + 1); + return name; + }, + removeHelper(name) { + const count = context.helpers.get(name); + if (count) { + const currentCount = count - 1; + if (!currentCount) { + context.helpers.delete(name); + } else { + context.helpers.set(name, currentCount); + } + } + }, + helperString(name) { + return `_${helperNameMap[context.helper(name)]}`; + }, + replaceNode(node) { + { + if (!context.currentNode) { + throw new Error(`Node being replaced is already removed.`); + } + if (!context.parent) { + throw new Error(`Cannot replace root node.`); + } + } + context.parent.children[context.childIndex] = context.currentNode = node; + }, + removeNode(node) { + if (!context.parent) { + throw new Error(`Cannot remove root node.`); + } + const list = context.parent.children; + const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1; + if (removalIndex < 0) { + throw new Error(`node being removed is not a child of current parent`); + } + if (!node || node === context.currentNode) { + context.currentNode = null; + context.onNodeRemoved(); + } else { + if (context.childIndex > removalIndex) { + context.childIndex--; + context.onNodeRemoved(); + } + } + context.parent.children.splice(removalIndex, 1); + }, + onNodeRemoved: NOOP, + addIdentifiers(exp) { + }, + removeIdentifiers(exp) { + }, + hoist(exp) { + if (isString(exp)) exp = createSimpleExpression(exp); + context.hoists.push(exp); + const identifier = createSimpleExpression( + `_hoisted_${context.hoists.length}`, + false, + exp.loc, + 2 + ); + identifier.hoisted = exp; + return identifier; + }, + cache(exp, isVNode = false, inVOnce = false) { + const cacheExp = createCacheExpression( + context.cached.length, + exp, + isVNode, + inVOnce + ); + context.cached.push(cacheExp); + return cacheExp; + } + }; + { + context.filters = /* @__PURE__ */ new Set(); + } + return context; +} +function transform(root, options) { + const context = createTransformContext(root, options); + traverseNode(root, context); + if (options.hoistStatic) { + cacheStatic(root, context); + } + if (!options.ssr) { + createRootCodegen(root, context); + } + root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]); + root.components = [...context.components]; + root.directives = [...context.directives]; + root.imports = context.imports; + root.hoists = context.hoists; + root.temps = context.temps; + root.cached = context.cached; + root.transformed = true; + { + root.filters = [...context.filters]; + } +} +function createRootCodegen(root, context) { + const { helper } = context; + const { children } = root; + if (children.length === 1) { + const singleElementRootChild = getSingleElementRoot(root); + if (singleElementRootChild && singleElementRootChild.codegenNode) { + const codegenNode = singleElementRootChild.codegenNode; + if (codegenNode.type === 13) { + convertToBlock(codegenNode, context); + } + root.codegenNode = codegenNode; + } else { + root.codegenNode = children[0]; + } + } else if (children.length > 1) { + let patchFlag = 64; + if (children.filter((c) => c.type !== 3).length === 1) { + patchFlag |= 2048; + } + root.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + root.children, + patchFlag, + void 0, + void 0, + true, + void 0, + false + ); + } else ; +} +function traverseChildren(parent, context) { + let i = 0; + const nodeRemoved = () => { + i--; + }; + for (; i < parent.children.length; i++) { + const child = parent.children[i]; + if (isString(child)) continue; + context.grandParent = context.parent; + context.parent = parent; + context.childIndex = i; + context.onNodeRemoved = nodeRemoved; + traverseNode(child, context); + } +} +function traverseNode(node, context) { + context.currentNode = node; + const { nodeTransforms } = context; + const exitFns = []; + for (let i2 = 0; i2 < nodeTransforms.length; i2++) { + const onExit = nodeTransforms[i2](node, context); + if (onExit) { + if (isArray(onExit)) { + exitFns.push(...onExit); + } else { + exitFns.push(onExit); + } + } + if (!context.currentNode) { + return; + } else { + node = context.currentNode; + } + } + switch (node.type) { + case 3: + if (!context.ssr) { + context.helper(CREATE_COMMENT); + } + break; + case 5: + if (!context.ssr) { + context.helper(TO_DISPLAY_STRING); + } + break; + // for container types, further traverse downwards + case 9: + for (let i2 = 0; i2 < node.branches.length; i2++) { + traverseNode(node.branches[i2], context); + } + break; + case 10: + case 11: + case 1: + case 0: + traverseChildren(node, context); + break; + } + context.currentNode = node; + let i = exitFns.length; + while (i--) { + exitFns[i](); + } +} +function createStructuralDirectiveTransform(name, fn) { + const matches = isString(name) ? (n) => n === name : (n) => name.test(n); + return (node, context) => { + if (node.type === 1) { + const { props } = node; + if (node.tagType === 3 && props.some(isVSlot)) { + return; + } + const exitFns = []; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 7 && matches(prop.name)) { + props.splice(i, 1); + i--; + const onExit = fn(node, prop, context); + if (onExit) exitFns.push(onExit); + } + } + return exitFns; + } + }; +} + +const PURE_ANNOTATION = `/*@__PURE__*/`; +const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`; +function createCodegenContext(ast, { + mode = "function", + prefixIdentifiers = mode === "module", + sourceMap = false, + filename = `template.vue.html`, + scopeId = null, + optimizeImports = false, + runtimeGlobalName = `Vue`, + runtimeModuleName = `vue`, + ssrRuntimeModuleName = "vue/server-renderer", + ssr = false, + isTS = false, + inSSR = false +}) { + const context = { + mode, + prefixIdentifiers, + sourceMap, + filename, + scopeId, + optimizeImports, + runtimeGlobalName, + runtimeModuleName, + ssrRuntimeModuleName, + ssr, + isTS, + inSSR, + source: ast.source, + code: ``, + column: 1, + line: 1, + offset: 0, + indentLevel: 0, + pure: false, + map: void 0, + helper(key) { + return `_${helperNameMap[key]}`; + }, + push(code, newlineIndex = -2 /* None */, node) { + context.code += code; + }, + indent() { + newline(++context.indentLevel); + }, + deindent(withoutNewLine = false) { + if (withoutNewLine) { + --context.indentLevel; + } else { + newline(--context.indentLevel); + } + }, + newline() { + newline(context.indentLevel); + } + }; + function newline(n) { + context.push("\n" + ` `.repeat(n), 0 /* Start */); + } + return context; +} +function generate(ast, options = {}) { + const context = createCodegenContext(ast, options); + if (options.onContextCreated) options.onContextCreated(context); + const { + mode, + push, + prefixIdentifiers, + indent, + deindent, + newline, + scopeId, + ssr + } = context; + const helpers = Array.from(ast.helpers); + const hasHelpers = helpers.length > 0; + const useWithBlock = !prefixIdentifiers && mode !== "module"; + const preambleContext = context; + { + genFunctionPreamble(ast, preambleContext); + } + const functionName = ssr ? `ssrRender` : `render`; + const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"]; + const signature = args.join(", "); + { + push(`function ${functionName}(${signature}) {`); + } + indent(); + if (useWithBlock) { + push(`with (_ctx) {`); + indent(); + if (hasHelpers) { + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = _Vue +`, + -1 /* End */ + ); + newline(); + } + } + if (ast.components.length) { + genAssets(ast.components, "component", context); + if (ast.directives.length || ast.temps > 0) { + newline(); + } + } + if (ast.directives.length) { + genAssets(ast.directives, "directive", context); + if (ast.temps > 0) { + newline(); + } + } + if (ast.filters && ast.filters.length) { + newline(); + genAssets(ast.filters, "filter", context); + newline(); + } + if (ast.temps > 0) { + push(`let `); + for (let i = 0; i < ast.temps; i++) { + push(`${i > 0 ? `, ` : ``}_temp${i}`); + } + } + if (ast.components.length || ast.directives.length || ast.temps) { + push(` +`, 0 /* Start */); + newline(); + } + if (!ssr) { + push(`return `); + } + if (ast.codegenNode) { + genNode(ast.codegenNode, context); + } else { + push(`null`); + } + if (useWithBlock) { + deindent(); + push(`}`); + } + deindent(); + push(`}`); + return { + ast, + code: context.code, + preamble: ``, + map: context.map ? context.map.toJSON() : void 0 + }; +} +function genFunctionPreamble(ast, context) { + const { + ssr, + prefixIdentifiers, + push, + newline, + runtimeModuleName, + runtimeGlobalName, + ssrRuntimeModuleName + } = context; + const VueBinding = runtimeGlobalName; + const helpers = Array.from(ast.helpers); + if (helpers.length > 0) { + { + push(`const _Vue = ${VueBinding} +`, -1 /* End */); + if (ast.hoists.length) { + const staticHelpers = [ + CREATE_VNODE, + CREATE_ELEMENT_VNODE, + CREATE_COMMENT, + CREATE_TEXT, + CREATE_STATIC + ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", "); + push(`const { ${staticHelpers} } = _Vue +`, -1 /* End */); + } + } + } + genHoists(ast.hoists, context); + newline(); + push(`return `); +} +function genAssets(assets, type, { helper, push, newline, isTS }) { + const resolver = helper( + type === "filter" ? RESOLVE_FILTER : type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE + ); + for (let i = 0; i < assets.length; i++) { + let id = assets[i]; + const maybeSelfReference = id.endsWith("__self"); + if (maybeSelfReference) { + id = id.slice(0, -6); + } + push( + `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}` + ); + if (i < assets.length - 1) { + newline(); + } + } +} +function genHoists(hoists, context) { + if (!hoists.length) { + return; + } + context.pure = true; + const { push, newline } = context; + newline(); + for (let i = 0; i < hoists.length; i++) { + const exp = hoists[i]; + if (exp) { + push(`const _hoisted_${i + 1} = `); + genNode(exp, context); + newline(); + } + } + context.pure = false; +} +function isText(n) { + return isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8; +} +function genNodeListAsArray(nodes, context) { + const multilines = nodes.length > 3 || nodes.some((n) => isArray(n) || !isText(n)); + context.push(`[`); + multilines && context.indent(); + genNodeList(nodes, context, multilines); + multilines && context.deindent(); + context.push(`]`); +} +function genNodeList(nodes, context, multilines = false, comma = true) { + const { push, newline } = context; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (isString(node)) { + push(node, -3 /* Unknown */); + } else if (isArray(node)) { + genNodeListAsArray(node, context); + } else { + genNode(node, context); + } + if (i < nodes.length - 1) { + if (multilines) { + comma && push(","); + newline(); + } else { + comma && push(", "); + } + } + } +} +function genNode(node, context) { + if (isString(node)) { + context.push(node, -3 /* Unknown */); + return; + } + if (isSymbol(node)) { + context.push(context.helper(node)); + return; + } + switch (node.type) { + case 1: + case 9: + case 11: + assert( + node.codegenNode != null, + `Codegen node is missing for element/if/for node. Apply appropriate transforms first.` + ); + genNode(node.codegenNode, context); + break; + case 2: + genText(node, context); + break; + case 4: + genExpression(node, context); + break; + case 5: + genInterpolation(node, context); + break; + case 12: + genNode(node.codegenNode, context); + break; + case 8: + genCompoundExpression(node, context); + break; + case 3: + genComment(node, context); + break; + case 13: + genVNodeCall(node, context); + break; + case 14: + genCallExpression(node, context); + break; + case 15: + genObjectExpression(node, context); + break; + case 17: + genArrayExpression(node, context); + break; + case 18: + genFunctionExpression(node, context); + break; + case 19: + genConditionalExpression(node, context); + break; + case 20: + genCacheExpression(node, context); + break; + case 21: + genNodeList(node.body, context, true, false); + break; + // SSR only types + case 22: + break; + case 23: + break; + case 24: + break; + case 25: + break; + case 26: + break; + /* v8 ignore start */ + case 10: + break; + default: + { + assert(false, `unhandled codegen node type: ${node.type}`); + const exhaustiveCheck = node; + return exhaustiveCheck; + } + } +} +function genText(node, context) { + context.push(JSON.stringify(node.content), -3 /* Unknown */, node); +} +function genExpression(node, context) { + const { content, isStatic } = node; + context.push( + isStatic ? JSON.stringify(content) : content, + -3 /* Unknown */, + node + ); +} +function genInterpolation(node, context) { + const { push, helper, pure } = context; + if (pure) push(PURE_ANNOTATION); + push(`${helper(TO_DISPLAY_STRING)}(`); + genNode(node.content, context); + push(`)`); +} +function genCompoundExpression(node, context) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (isString(child)) { + context.push(child, -3 /* Unknown */); + } else { + genNode(child, context); + } + } +} +function genExpressionAsPropertyKey(node, context) { + const { push } = context; + if (node.type === 8) { + push(`[`); + genCompoundExpression(node, context); + push(`]`); + } else if (node.isStatic) { + const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content); + push(text, -2 /* None */, node); + } else { + push(`[${node.content}]`, -3 /* Unknown */, node); + } +} +function genComment(node, context) { + const { push, helper, pure } = context; + if (pure) { + push(PURE_ANNOTATION); + } + push( + `${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, + -3 /* Unknown */, + node + ); +} +function genVNodeCall(node, context) { + const { push, helper, pure } = context; + const { + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent + } = node; + let patchFlagString; + if (patchFlag) { + { + if (patchFlag < 0) { + patchFlagString = patchFlag + ` /* ${PatchFlagNames[patchFlag]} */`; + } else { + const flagNames = Object.keys(PatchFlagNames).map(Number).filter((n) => n > 0 && patchFlag & n).map((n) => PatchFlagNames[n]).join(`, `); + patchFlagString = patchFlag + ` /* ${flagNames} */`; + } + } + } + if (directives) { + push(helper(WITH_DIRECTIVES) + `(`); + } + if (isBlock) { + push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `); + } + if (pure) { + push(PURE_ANNOTATION); + } + const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent); + push(helper(callHelper) + `(`, -2 /* None */, node); + genNodeList( + genNullableArgs([tag, props, children, patchFlagString, dynamicProps]), + context + ); + push(`)`); + if (isBlock) { + push(`)`); + } + if (directives) { + push(`, `); + genNode(directives, context); + push(`)`); + } +} +function genNullableArgs(args) { + let i = args.length; + while (i--) { + if (args[i] != null) break; + } + return args.slice(0, i + 1).map((arg) => arg || `null`); +} +function genCallExpression(node, context) { + const { push, helper, pure } = context; + const callee = isString(node.callee) ? node.callee : helper(node.callee); + if (pure) { + push(PURE_ANNOTATION); + } + push(callee + `(`, -2 /* None */, node); + genNodeList(node.arguments, context); + push(`)`); +} +function genObjectExpression(node, context) { + const { push, indent, deindent, newline } = context; + const { properties } = node; + if (!properties.length) { + push(`{}`, -2 /* None */, node); + return; + } + const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4); + push(multilines ? `{` : `{ `); + multilines && indent(); + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + genExpressionAsPropertyKey(key, context); + push(`: `); + genNode(value, context); + if (i < properties.length - 1) { + push(`,`); + newline(); + } + } + multilines && deindent(); + push(multilines ? `}` : ` }`); +} +function genArrayExpression(node, context) { + genNodeListAsArray(node.elements, context); +} +function genFunctionExpression(node, context) { + const { push, indent, deindent } = context; + const { params, returns, body, newline, isSlot } = node; + if (isSlot) { + push(`_${helperNameMap[WITH_CTX]}(`); + } + push(`(`, -2 /* None */, node); + if (isArray(params)) { + genNodeList(params, context); + } else if (params) { + genNode(params, context); + } + push(`) => `); + if (newline || body) { + push(`{`); + indent(); + } + if (returns) { + if (newline) { + push(`return `); + } + if (isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } + } else if (body) { + genNode(body, context); + } + if (newline || body) { + deindent(); + push(`}`); + } + if (isSlot) { + if (node.isNonScopedSlot) { + push(`, undefined, true`); + } + push(`)`); + } +} +function genConditionalExpression(node, context) { + const { test, consequent, alternate, newline: needNewline } = node; + const { push, indent, deindent, newline } = context; + if (test.type === 4) { + const needsParens = !isSimpleIdentifier(test.content); + needsParens && push(`(`); + genExpression(test, context); + needsParens && push(`)`); + } else { + push(`(`); + genNode(test, context); + push(`)`); + } + needNewline && indent(); + context.indentLevel++; + needNewline || push(` `); + push(`? `); + genNode(consequent, context); + context.indentLevel--; + needNewline && newline(); + needNewline || push(` `); + push(`: `); + const isNested = alternate.type === 19; + if (!isNested) { + context.indentLevel++; + } + genNode(alternate, context); + if (!isNested) { + context.indentLevel--; + } + needNewline && deindent( + true + /* without newline */ + ); +} +function genCacheExpression(node, context) { + const { push, helper, indent, deindent, newline } = context; + const { needPauseTracking, needArraySpread } = node; + if (needArraySpread) { + push(`[...(`); + } + push(`_cache[${node.index}] || (`); + if (needPauseTracking) { + indent(); + push(`${helper(SET_BLOCK_TRACKING)}(-1`); + if (node.inVOnce) push(`, true`); + push(`),`); + newline(); + push(`(`); + } + push(`_cache[${node.index}] = `); + genNode(node.value, context); + if (needPauseTracking) { + push(`).cacheIndex = ${node.index},`); + newline(); + push(`${helper(SET_BLOCK_TRACKING)}(1),`); + newline(); + push(`_cache[${node.index}]`); + deindent(); + } + push(`)`); + if (needArraySpread) { + push(`)]`); + } +} + +const prohibitedKeywordRE = new RegExp( + "\\b" + "arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b") + "\\b" +); +const stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g; +function validateBrowserExpression(node, context, asParams = false, asRawStatements = false) { + const exp = node.content; + if (!exp.trim()) { + return; + } + try { + new Function( + asRawStatements ? ` ${exp} ` : `return ${asParams ? `(${exp}) => {}` : `(${exp})`}` + ); + } catch (e) { + let message = e.message; + const keywordMatch = exp.replace(stripStringRE, "").match(prohibitedKeywordRE); + if (keywordMatch) { + message = `avoid using JavaScript keyword as property name: "${keywordMatch[0]}"`; + } + context.onError( + createCompilerError( + 45, + node.loc, + void 0, + message + ) + ); + } +} + +const transformExpression = (node, context) => { + if (node.type === 5) { + node.content = processExpression( + node.content, + context + ); + } else if (node.type === 1) { + const memo = findDir(node, "memo"); + for (let i = 0; i < node.props.length; i++) { + const dir = node.props[i]; + if (dir.type === 7 && dir.name !== "for") { + const exp = dir.exp; + const arg = dir.arg; + if (exp && exp.type === 4 && !(dir.name === "on" && arg) && // key has been processed in transformFor(vMemo + vFor) + !(memo && arg && arg.type === 4 && arg.content === "key")) { + dir.exp = processExpression( + exp, + context, + // slot args must be processed as function params + dir.name === "slot" + ); + } + if (arg && arg.type === 4 && !arg.isStatic) { + dir.arg = processExpression(arg, context); + } + } + } + } +}; +function processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) { + { + { + validateBrowserExpression(node, context, asParams, asRawStatements); + } + return node; + } +} +function stringifyExpression(exp) { + if (isString(exp)) { + return exp; + } else if (exp.type === 4) { + return exp.content; + } else { + return exp.children.map(stringifyExpression).join(""); + } +} + +const transformIf = createStructuralDirectiveTransform( + /^(if|else|else-if)$/, + (node, dir, context) => { + return processIf(node, dir, context, (ifNode, branch, isRoot) => { + const siblings = context.parent.children; + let i = siblings.indexOf(ifNode); + let key = 0; + while (i-- >= 0) { + const sibling = siblings[i]; + if (sibling && sibling.type === 9) { + key += sibling.branches.length; + } + } + return () => { + if (isRoot) { + ifNode.codegenNode = createCodegenNodeForBranch( + branch, + key, + context + ); + } else { + const parentCondition = getParentCondition(ifNode.codegenNode); + parentCondition.alternate = createCodegenNodeForBranch( + branch, + key + ifNode.branches.length - 1, + context + ); + } + }; + }); + } +); +function processIf(node, dir, context, processCodegen) { + if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) { + const loc = dir.exp ? dir.exp.loc : node.loc; + context.onError( + createCompilerError(28, dir.loc) + ); + dir.exp = createSimpleExpression(`true`, false, loc); + } + if (dir.exp) { + validateBrowserExpression(dir.exp, context); + } + if (dir.name === "if") { + const branch = createIfBranch(node, dir); + const ifNode = { + type: 9, + loc: cloneLoc(node.loc), + branches: [branch] + }; + context.replaceNode(ifNode); + if (processCodegen) { + return processCodegen(ifNode, branch, true); + } + } else { + const siblings = context.parent.children; + const comments = []; + let i = siblings.indexOf(node); + while (i-- >= -1) { + const sibling = siblings[i]; + if (sibling && sibling.type === 3) { + context.removeNode(sibling); + comments.unshift(sibling); + continue; + } + if (sibling && sibling.type === 2 && !sibling.content.trim().length) { + context.removeNode(sibling); + continue; + } + if (sibling && sibling.type === 9) { + if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) { + context.onError( + createCompilerError(30, node.loc) + ); + } + context.removeNode(); + const branch = createIfBranch(node, dir); + if (comments.length && // #3619 ignore comments if the v-if is direct child of <transition> + !(context.parent && context.parent.type === 1 && (context.parent.tag === "transition" || context.parent.tag === "Transition"))) { + branch.children = [...comments, ...branch.children]; + } + { + const key = branch.userKey; + if (key) { + sibling.branches.forEach(({ userKey }) => { + if (isSameKey(userKey, key)) { + context.onError( + createCompilerError( + 29, + branch.userKey.loc + ) + ); + } + }); + } + } + sibling.branches.push(branch); + const onExit = processCodegen && processCodegen(sibling, branch, false); + traverseNode(branch, context); + if (onExit) onExit(); + context.currentNode = null; + } else { + context.onError( + createCompilerError(30, node.loc) + ); + } + break; + } + } +} +function createIfBranch(node, dir) { + const isTemplateIf = node.tagType === 3; + return { + type: 10, + loc: node.loc, + condition: dir.name === "else" ? void 0 : dir.exp, + children: isTemplateIf && !findDir(node, "for") ? node.children : [node], + userKey: findProp(node, `key`), + isTemplateIf + }; +} +function createCodegenNodeForBranch(branch, keyIndex, context) { + if (branch.condition) { + return createConditionalExpression( + branch.condition, + createChildrenCodegenNode(branch, keyIndex, context), + // make sure to pass in asBlock: true so that the comment node call + // closes the current block. + createCallExpression(context.helper(CREATE_COMMENT), [ + '"v-if"' , + "true" + ]) + ); + } else { + return createChildrenCodegenNode(branch, keyIndex, context); + } +} +function createChildrenCodegenNode(branch, keyIndex, context) { + const { helper } = context; + const keyProperty = createObjectProperty( + `key`, + createSimpleExpression( + `${keyIndex}`, + false, + locStub, + 2 + ) + ); + const { children } = branch; + const firstChild = children[0]; + const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1; + if (needFragmentWrapper) { + if (children.length === 1 && firstChild.type === 11) { + const vnodeCall = firstChild.codegenNode; + injectProp(vnodeCall, keyProperty, context); + return vnodeCall; + } else { + let patchFlag = 64; + if (!branch.isTemplateIf && children.filter((c) => c.type !== 3).length === 1) { + patchFlag |= 2048; + } + return createVNodeCall( + context, + helper(FRAGMENT), + createObjectExpression([keyProperty]), + children, + patchFlag, + void 0, + void 0, + true, + false, + false, + branch.loc + ); + } + } else { + const ret = firstChild.codegenNode; + const vnodeCall = getMemoedVNodeCall(ret); + if (vnodeCall.type === 13) { + convertToBlock(vnodeCall, context); + } + injectProp(vnodeCall, keyProperty, context); + return ret; + } +} +function isSameKey(a, b) { + if (!a || a.type !== b.type) { + return false; + } + if (a.type === 6) { + if (a.value.content !== b.value.content) { + return false; + } + } else { + const exp = a.exp; + const branchExp = b.exp; + if (exp.type !== branchExp.type) { + return false; + } + if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) { + return false; + } + } + return true; +} +function getParentCondition(node) { + while (true) { + if (node.type === 19) { + if (node.alternate.type === 19) { + node = node.alternate; + } else { + return node; + } + } else if (node.type === 20) { + node = node.value; + } + } +} + +const transformBind = (dir, _node, context) => { + const { modifiers, loc } = dir; + const arg = dir.arg; + let { exp } = dir; + if (exp && exp.type === 4 && !exp.content.trim()) { + { + exp = void 0; + } + } + if (!exp) { + if (arg.type !== 4 || !arg.isStatic) { + context.onError( + createCompilerError( + 52, + arg.loc + ) + ); + return { + props: [ + createObjectProperty(arg, createSimpleExpression("", true, loc)) + ] + }; + } + transformBindShorthand(dir); + exp = dir.exp; + } + if (arg.type !== 4) { + arg.children.unshift(`(`); + arg.children.push(`) || ""`); + } else if (!arg.isStatic) { + arg.content = arg.content ? `${arg.content} || ""` : `""`; + } + if (modifiers.some((mod) => mod.content === "camel")) { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = camelize(arg.content); + } else { + arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`; + } + } else { + arg.children.unshift(`${context.helperString(CAMELIZE)}(`); + arg.children.push(`)`); + } + } + if (!context.inSSR) { + if (modifiers.some((mod) => mod.content === "prop")) { + injectPrefix(arg, "."); + } + if (modifiers.some((mod) => mod.content === "attr")) { + injectPrefix(arg, "^"); + } + } + return { + props: [createObjectProperty(arg, exp)] + }; +}; +const transformBindShorthand = (dir, context) => { + const arg = dir.arg; + const propName = camelize(arg.content); + dir.exp = createSimpleExpression(propName, false, arg.loc); +}; +const injectPrefix = (arg, prefix) => { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = prefix + arg.content; + } else { + arg.content = `\`${prefix}\${${arg.content}}\``; + } + } else { + arg.children.unshift(`'${prefix}' + (`); + arg.children.push(`)`); + } +}; + +const transformFor = createStructuralDirectiveTransform( + "for", + (node, dir, context) => { + const { helper, removeHelper } = context; + return processFor(node, dir, context, (forNode) => { + const renderExp = createCallExpression(helper(RENDER_LIST), [ + forNode.source + ]); + const isTemplate = isTemplateNode(node); + const memo = findDir(node, "memo"); + const keyProp = findProp(node, `key`, false, true); + const isDirKey = keyProp && keyProp.type === 7; + if (isDirKey && !keyProp.exp) { + transformBindShorthand(keyProp); + } + let keyExp = keyProp && (keyProp.type === 6 ? keyProp.value ? createSimpleExpression(keyProp.value.content, true) : void 0 : keyProp.exp); + const keyProperty = keyProp && keyExp ? createObjectProperty(`key`, keyExp) : null; + const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0; + const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256; + forNode.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + renderExp, + fragmentFlag, + void 0, + void 0, + true, + !isStableFragment, + false, + node.loc + ); + return () => { + let childBlock; + const { children } = forNode; + if (isTemplate) { + node.children.some((c) => { + if (c.type === 1) { + const key = findProp(c, "key"); + if (key) { + context.onError( + createCompilerError( + 33, + key.loc + ) + ); + return true; + } + } + }); + } + const needFragmentWrapper = children.length !== 1 || children[0].type !== 1; + const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null; + if (slotOutlet) { + childBlock = slotOutlet.codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + } else if (needFragmentWrapper) { + childBlock = createVNodeCall( + context, + helper(FRAGMENT), + keyProperty ? createObjectExpression([keyProperty]) : void 0, + node.children, + 64, + void 0, + void 0, + true, + void 0, + false + ); + } else { + childBlock = children[0].codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + if (childBlock.isBlock !== !isStableFragment) { + if (childBlock.isBlock) { + removeHelper(OPEN_BLOCK); + removeHelper( + getVNodeBlockHelper(context.inSSR, childBlock.isComponent) + ); + } else { + removeHelper( + getVNodeHelper(context.inSSR, childBlock.isComponent) + ); + } + } + childBlock.isBlock = !isStableFragment; + if (childBlock.isBlock) { + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent)); + } else { + helper(getVNodeHelper(context.inSSR, childBlock.isComponent)); + } + } + if (memo) { + const loop = createFunctionExpression( + createForLoopParams(forNode.parseResult, [ + createSimpleExpression(`_cached`) + ]) + ); + loop.body = createBlockStatement([ + createCompoundExpression([`const _memo = (`, memo.exp, `)`]), + createCompoundExpression([ + `if (_cached`, + ...keyExp ? [` && _cached.key === `, keyExp] : [], + ` && ${context.helperString( + IS_MEMO_SAME + )}(_cached, _memo)) return _cached` + ]), + createCompoundExpression([`const _item = `, childBlock]), + createSimpleExpression(`_item.memo = _memo`), + createSimpleExpression(`return _item`) + ]); + renderExp.arguments.push( + loop, + createSimpleExpression(`_cache`), + createSimpleExpression(String(context.cached.length)) + ); + context.cached.push(null); + } else { + renderExp.arguments.push( + createFunctionExpression( + createForLoopParams(forNode.parseResult), + childBlock, + true + ) + ); + } + }; + }); + } +); +function processFor(node, dir, context, processCodegen) { + if (!dir.exp) { + context.onError( + createCompilerError(31, dir.loc) + ); + return; + } + const parseResult = dir.forParseResult; + if (!parseResult) { + context.onError( + createCompilerError(32, dir.loc) + ); + return; + } + finalizeForParseResult(parseResult, context); + const { addIdentifiers, removeIdentifiers, scopes } = context; + const { source, value, key, index } = parseResult; + const forNode = { + type: 11, + loc: dir.loc, + source, + valueAlias: value, + keyAlias: key, + objectIndexAlias: index, + parseResult, + children: isTemplateNode(node) ? node.children : [node] + }; + context.replaceNode(forNode); + scopes.vFor++; + const onExit = processCodegen && processCodegen(forNode); + return () => { + scopes.vFor--; + if (onExit) onExit(); + }; +} +function finalizeForParseResult(result, context) { + if (result.finalized) return; + { + validateBrowserExpression(result.source, context); + if (result.key) { + validateBrowserExpression( + result.key, + context, + true + ); + } + if (result.index) { + validateBrowserExpression( + result.index, + context, + true + ); + } + if (result.value) { + validateBrowserExpression( + result.value, + context, + true + ); + } + } + result.finalized = true; +} +function createForLoopParams({ value, key, index }, memoArgs = []) { + return createParamsList([value, key, index, ...memoArgs]); +} +function createParamsList(args) { + let i = args.length; + while (i--) { + if (args[i]) break; + } + return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false)); +} + +const defaultFallback = createSimpleExpression(`undefined`, false); +const trackSlotScopes = (node, context) => { + if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) { + const vSlot = findDir(node, "slot"); + if (vSlot) { + vSlot.exp; + context.scopes.vSlot++; + return () => { + context.scopes.vSlot--; + }; + } + } +}; +const trackVForSlotScopes = (node, context) => { + let vFor; + if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, "for"))) { + const result = vFor.forParseResult; + if (result) { + finalizeForParseResult(result, context); + const { value, key, index } = result; + const { addIdentifiers, removeIdentifiers } = context; + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + return () => { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + }; + } + } +}; +const buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression( + props, + children, + false, + true, + children.length ? children[0].loc : loc +); +function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { + context.helper(WITH_CTX); + const { children, loc } = node; + const slotsProperties = []; + const dynamicSlots = []; + let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0; + const onComponentSlot = findDir(node, "slot", true); + if (onComponentSlot) { + const { arg, exp } = onComponentSlot; + if (arg && !isStaticExp(arg)) { + hasDynamicSlots = true; + } + slotsProperties.push( + createObjectProperty( + arg || createSimpleExpression("default", true), + buildSlotFn(exp, void 0, children, loc) + ) + ); + } + let hasTemplateSlots = false; + let hasNamedDefaultSlot = false; + const implicitDefaultChildren = []; + const seenSlotNames = /* @__PURE__ */ new Set(); + let conditionalBranchIndex = 0; + for (let i = 0; i < children.length; i++) { + const slotElement = children[i]; + let slotDir; + if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) { + if (slotElement.type !== 3) { + implicitDefaultChildren.push(slotElement); + } + continue; + } + if (onComponentSlot) { + context.onError( + createCompilerError(37, slotDir.loc) + ); + break; + } + hasTemplateSlots = true; + const { children: slotChildren, loc: slotLoc } = slotElement; + const { + arg: slotName = createSimpleExpression(`default`, true), + exp: slotProps, + loc: dirLoc + } = slotDir; + let staticSlotName; + if (isStaticExp(slotName)) { + staticSlotName = slotName ? slotName.content : `default`; + } else { + hasDynamicSlots = true; + } + const vFor = findDir(slotElement, "for"); + const slotFunction = buildSlotFn(slotProps, vFor, slotChildren, slotLoc); + let vIf; + let vElse; + if (vIf = findDir(slotElement, "if")) { + hasDynamicSlots = true; + dynamicSlots.push( + createConditionalExpression( + vIf.exp, + buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++), + defaultFallback + ) + ); + } else if (vElse = findDir( + slotElement, + /^else(-if)?$/, + true + /* allowEmpty */ + )) { + let j = i; + let prev; + while (j--) { + prev = children[j]; + if (prev.type !== 3 && isNonWhitespaceContent(prev)) { + break; + } + } + if (prev && isTemplateNode(prev) && findDir(prev, /^(else-)?if$/)) { + let conditional = dynamicSlots[dynamicSlots.length - 1]; + while (conditional.alternate.type === 19) { + conditional = conditional.alternate; + } + conditional.alternate = vElse.exp ? createConditionalExpression( + vElse.exp, + buildDynamicSlot( + slotName, + slotFunction, + conditionalBranchIndex++ + ), + defaultFallback + ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++); + } else { + context.onError( + createCompilerError(30, vElse.loc) + ); + } + } else if (vFor) { + hasDynamicSlots = true; + const parseResult = vFor.forParseResult; + if (parseResult) { + finalizeForParseResult(parseResult, context); + dynamicSlots.push( + createCallExpression(context.helper(RENDER_LIST), [ + parseResult.source, + createFunctionExpression( + createForLoopParams(parseResult), + buildDynamicSlot(slotName, slotFunction), + true + ) + ]) + ); + } else { + context.onError( + createCompilerError( + 32, + vFor.loc + ) + ); + } + } else { + if (staticSlotName) { + if (seenSlotNames.has(staticSlotName)) { + context.onError( + createCompilerError( + 38, + dirLoc + ) + ); + continue; + } + seenSlotNames.add(staticSlotName); + if (staticSlotName === "default") { + hasNamedDefaultSlot = true; + } + } + slotsProperties.push(createObjectProperty(slotName, slotFunction)); + } + } + if (!onComponentSlot) { + const buildDefaultSlotProperty = (props, children2) => { + const fn = buildSlotFn(props, void 0, children2, loc); + if (context.compatConfig) { + fn.isNonScopedSlot = true; + } + return createObjectProperty(`default`, fn); + }; + if (!hasTemplateSlots) { + slotsProperties.push(buildDefaultSlotProperty(void 0, children)); + } else if (implicitDefaultChildren.length && // #3766 + // with whitespace: 'preserve', whitespaces between slots will end up in + // implicitDefaultChildren. Ignore if all implicit children are whitespaces. + implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) { + if (hasNamedDefaultSlot) { + context.onError( + createCompilerError( + 39, + implicitDefaultChildren[0].loc + ) + ); + } else { + slotsProperties.push( + buildDefaultSlotProperty(void 0, implicitDefaultChildren) + ); + } + } + } + const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1; + let slots = createObjectExpression( + slotsProperties.concat( + createObjectProperty( + `_`, + // 2 = compiled but dynamic = can skip normalization, but must run diff + // 1 = compiled and static = can skip normalization AND diff as optimized + createSimpleExpression( + slotFlag + (` /* ${slotFlagsText[slotFlag]} */` ), + false + ) + ) + ), + loc + ); + if (dynamicSlots.length) { + slots = createCallExpression(context.helper(CREATE_SLOTS), [ + slots, + createArrayExpression(dynamicSlots) + ]); + } + return { + slots, + hasDynamicSlots + }; +} +function buildDynamicSlot(name, fn, index) { + const props = [ + createObjectProperty(`name`, name), + createObjectProperty(`fn`, fn) + ]; + if (index != null) { + props.push( + createObjectProperty(`key`, createSimpleExpression(String(index), true)) + ); + } + return createObjectExpression(props); +} +function hasForwardedSlots(children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1: + if (child.tagType === 2 || hasForwardedSlots(child.children)) { + return true; + } + break; + case 9: + if (hasForwardedSlots(child.branches)) return true; + break; + case 10: + case 11: + if (hasForwardedSlots(child.children)) return true; + break; + } + } + return false; +} +function isNonWhitespaceContent(node) { + if (node.type !== 2 && node.type !== 12) + return true; + return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content); +} + +const directiveImportMap = /* @__PURE__ */ new WeakMap(); +const transformElement = (node, context) => { + return function postTransformElement() { + node = context.currentNode; + if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) { + return; + } + const { tag, props } = node; + const isComponent = node.tagType === 1; + let vnodeTag = isComponent ? resolveComponentType(node, context) : `"${tag}"`; + const isDynamicComponent = isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT; + let vnodeProps; + let vnodeChildren; + let patchFlag = 0; + let vnodeDynamicProps; + let dynamicPropNames; + let vnodeDirectives; + let shouldUseBlock = ( + // dynamic component may resolve to plain elements + isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block + // updates inside get proper isSVG flag at runtime. (#639, #643) + // This is technically web-specific, but splitting the logic out of core + // leads to too much unnecessary complexity. + (tag === "svg" || tag === "foreignObject" || tag === "math") + ); + if (props.length > 0) { + const propsBuildResult = buildProps( + node, + context, + void 0, + isComponent, + isDynamicComponent + ); + vnodeProps = propsBuildResult.props; + patchFlag = propsBuildResult.patchFlag; + dynamicPropNames = propsBuildResult.dynamicPropNames; + const directives = propsBuildResult.directives; + vnodeDirectives = directives && directives.length ? createArrayExpression( + directives.map((dir) => buildDirectiveArgs(dir, context)) + ) : void 0; + if (propsBuildResult.shouldUseBlock) { + shouldUseBlock = true; + } + } + if (node.children.length > 0) { + if (vnodeTag === KEEP_ALIVE) { + shouldUseBlock = true; + patchFlag |= 1024; + if (node.children.length > 1) { + context.onError( + createCompilerError(46, { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: "" + }) + ); + } + } + const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling + vnodeTag !== TELEPORT && // explained above. + vnodeTag !== KEEP_ALIVE; + if (shouldBuildAsSlots) { + const { slots, hasDynamicSlots } = buildSlots(node, context); + vnodeChildren = slots; + if (hasDynamicSlots) { + patchFlag |= 1024; + } + } else if (node.children.length === 1 && vnodeTag !== TELEPORT) { + const child = node.children[0]; + const type = child.type; + const hasDynamicTextChild = type === 5 || type === 8; + if (hasDynamicTextChild && getConstantType(child, context) === 0) { + patchFlag |= 1; + } + if (hasDynamicTextChild || type === 2) { + vnodeChildren = child; + } else { + vnodeChildren = node.children; + } + } else { + vnodeChildren = node.children; + } + } + if (dynamicPropNames && dynamicPropNames.length) { + vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames); + } + node.codegenNode = createVNodeCall( + context, + vnodeTag, + vnodeProps, + vnodeChildren, + patchFlag === 0 ? void 0 : patchFlag, + vnodeDynamicProps, + vnodeDirectives, + !!shouldUseBlock, + false, + isComponent, + node.loc + ); + }; +}; +function resolveComponentType(node, context, ssr = false) { + let { tag } = node; + const isExplicitDynamic = isComponentTag(tag); + const isProp = findProp( + node, + "is", + false, + true + /* allow empty */ + ); + if (isProp) { + if (isExplicitDynamic || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + )) { + let exp; + if (isProp.type === 6) { + exp = isProp.value && createSimpleExpression(isProp.value.content, true); + } else { + exp = isProp.exp; + if (!exp) { + exp = createSimpleExpression(`is`, false, isProp.arg.loc); + } + } + if (exp) { + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + exp + ]); + } + } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) { + tag = isProp.value.content.slice(4); + } + } + const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag); + if (builtIn) { + if (!ssr) context.helper(builtIn); + return builtIn; + } + context.helper(RESOLVE_COMPONENT); + context.components.add(tag); + return toValidAssetId(tag, `component`); +} +function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) { + const { tag, loc: elementLoc, children } = node; + let properties = []; + const mergeArgs = []; + const runtimeDirectives = []; + const hasChildren = children.length > 0; + let shouldUseBlock = false; + let patchFlag = 0; + let hasRef = false; + let hasClassBinding = false; + let hasStyleBinding = false; + let hasHydrationEventBinding = false; + let hasDynamicKeys = false; + let hasVnodeHook = false; + const dynamicPropNames = []; + const pushMergeArg = (arg) => { + if (properties.length) { + mergeArgs.push( + createObjectExpression(dedupeProperties(properties), elementLoc) + ); + properties = []; + } + if (arg) mergeArgs.push(arg); + }; + const pushRefVForMarker = () => { + if (context.scopes.vFor > 0) { + properties.push( + createObjectProperty( + createSimpleExpression("ref_for", true), + createSimpleExpression("true") + ) + ); + } + }; + const analyzePatchFlag = ({ key, value }) => { + if (isStaticExp(key)) { + const name = key.content; + const isEventHandler = isOn(name); + if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click + // dedicated fast path. + name.toLowerCase() !== "onclick" && // omit v-model handlers + name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks + !isReservedProp(name)) { + hasHydrationEventBinding = true; + } + if (isEventHandler && isReservedProp(name)) { + hasVnodeHook = true; + } + if (isEventHandler && value.type === 14) { + value = value.arguments[0]; + } + if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) { + return; + } + if (name === "ref") { + hasRef = true; + } else if (name === "class") { + hasClassBinding = true; + } else if (name === "style") { + hasStyleBinding = true; + } else if (name !== "key" && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + if (isComponent && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + } else { + hasDynamicKeys = true; + } + }; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 6) { + const { loc, name, nameLoc, value } = prop; + let isStatic = true; + if (name === "ref") { + hasRef = true; + pushRefVForMarker(); + } + if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + properties.push( + createObjectProperty( + createSimpleExpression(name, true, nameLoc), + createSimpleExpression( + value ? value.content : "", + isStatic, + value ? value.loc : loc + ) + ) + ); + } else { + const { name, arg, exp, loc, modifiers } = prop; + const isVBind = name === "bind"; + const isVOn = name === "on"; + if (name === "slot") { + if (!isComponent) { + context.onError( + createCompilerError(40, loc) + ); + } + continue; + } + if (name === "once" || name === "memo") { + continue; + } + if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + if (isVOn && ssr) { + continue; + } + if ( + // #938: elements with dynamic keys should be forced into blocks + isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked + // before children + isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update") + ) { + shouldUseBlock = true; + } + if (isVBind && isStaticArgOf(arg, "ref")) { + pushRefVForMarker(); + } + if (!arg && (isVBind || isVOn)) { + hasDynamicKeys = true; + if (exp) { + if (isVBind) { + { + pushMergeArg(); + { + const hasOverridableKeys = mergeArgs.some((arg2) => { + if (arg2.type === 15) { + return arg2.properties.some(({ key }) => { + if (key.type !== 4 || !key.isStatic) { + return true; + } + return key.content !== "class" && key.content !== "style" && !isOn(key.content); + }); + } else { + return true; + } + }); + if (hasOverridableKeys) { + checkCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context, + loc + ); + } + } + if (isCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context + )) { + mergeArgs.unshift(exp); + continue; + } + } + pushRefVForMarker(); + pushMergeArg(); + mergeArgs.push(exp); + } else { + pushMergeArg({ + type: 14, + loc, + callee: context.helper(TO_HANDLERS), + arguments: isComponent ? [exp] : [exp, `true`] + }); + } + } else { + context.onError( + createCompilerError( + isVBind ? 34 : 35, + loc + ) + ); + } + continue; + } + if (isVBind && modifiers.some((mod) => mod.content === "prop")) { + patchFlag |= 32; + } + const directiveTransform = context.directiveTransforms[name]; + if (directiveTransform) { + const { props: props2, needRuntime } = directiveTransform(prop, node, context); + !ssr && props2.forEach(analyzePatchFlag); + if (isVOn && arg && !isStaticExp(arg)) { + pushMergeArg(createObjectExpression(props2, elementLoc)); + } else { + properties.push(...props2); + } + if (needRuntime) { + runtimeDirectives.push(prop); + if (isSymbol(needRuntime)) { + directiveImportMap.set(prop, needRuntime); + } + } + } else if (!isBuiltInDirective(name)) { + runtimeDirectives.push(prop); + if (hasChildren) { + shouldUseBlock = true; + } + } + } + } + let propsExpression = void 0; + if (mergeArgs.length) { + pushMergeArg(); + if (mergeArgs.length > 1) { + propsExpression = createCallExpression( + context.helper(MERGE_PROPS), + mergeArgs, + elementLoc + ); + } else { + propsExpression = mergeArgs[0]; + } + } else if (properties.length) { + propsExpression = createObjectExpression( + dedupeProperties(properties), + elementLoc + ); + } + if (hasDynamicKeys) { + patchFlag |= 16; + } else { + if (hasClassBinding && !isComponent) { + patchFlag |= 2; + } + if (hasStyleBinding && !isComponent) { + patchFlag |= 4; + } + if (dynamicPropNames.length) { + patchFlag |= 8; + } + if (hasHydrationEventBinding) { + patchFlag |= 32; + } + } + if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) { + patchFlag |= 512; + } + if (!context.inSSR && propsExpression) { + switch (propsExpression.type) { + case 15: + let classKeyIndex = -1; + let styleKeyIndex = -1; + let hasDynamicKey = false; + for (let i = 0; i < propsExpression.properties.length; i++) { + const key = propsExpression.properties[i].key; + if (isStaticExp(key)) { + if (key.content === "class") { + classKeyIndex = i; + } else if (key.content === "style") { + styleKeyIndex = i; + } + } else if (!key.isHandlerKey) { + hasDynamicKey = true; + } + } + const classProp = propsExpression.properties[classKeyIndex]; + const styleProp = propsExpression.properties[styleKeyIndex]; + if (!hasDynamicKey) { + if (classProp && !isStaticExp(classProp.value)) { + classProp.value = createCallExpression( + context.helper(NORMALIZE_CLASS), + [classProp.value] + ); + } + if (styleProp && // the static style is compiled into an object, + // so use `hasStyleBinding` to ensure that it is a dynamic style binding + (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist, + // v-bind:style with static literal object + styleProp.value.type === 17)) { + styleProp.value = createCallExpression( + context.helper(NORMALIZE_STYLE), + [styleProp.value] + ); + } + } else { + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [propsExpression] + ); + } + break; + case 14: + break; + default: + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [ + createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [ + propsExpression + ]) + ] + ); + break; + } + } + return { + props: propsExpression, + directives: runtimeDirectives, + patchFlag, + dynamicPropNames, + shouldUseBlock + }; +} +function dedupeProperties(properties) { + const knownProps = /* @__PURE__ */ new Map(); + const deduped = []; + for (let i = 0; i < properties.length; i++) { + const prop = properties[i]; + if (prop.key.type === 8 || !prop.key.isStatic) { + deduped.push(prop); + continue; + } + const name = prop.key.content; + const existing = knownProps.get(name); + if (existing) { + if (name === "style" || name === "class" || isOn(name)) { + mergeAsArray(existing, prop); + } + } else { + knownProps.set(name, prop); + deduped.push(prop); + } + } + return deduped; +} +function mergeAsArray(existing, incoming) { + if (existing.value.type === 17) { + existing.value.elements.push(incoming.value); + } else { + existing.value = createArrayExpression( + [existing.value, incoming.value], + existing.loc + ); + } +} +function buildDirectiveArgs(dir, context) { + const dirArgs = []; + const runtime = directiveImportMap.get(dir); + if (runtime) { + dirArgs.push(context.helperString(runtime)); + } else { + { + context.helper(RESOLVE_DIRECTIVE); + context.directives.add(dir.name); + dirArgs.push(toValidAssetId(dir.name, `directive`)); + } + } + const { loc } = dir; + if (dir.exp) dirArgs.push(dir.exp); + if (dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(dir.arg); + } + if (Object.keys(dir.modifiers).length) { + if (!dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(`void 0`); + } + const trueExpression = createSimpleExpression(`true`, false, loc); + dirArgs.push( + createObjectExpression( + dir.modifiers.map( + (modifier) => createObjectProperty(modifier, trueExpression) + ), + loc + ) + ); + } + return createArrayExpression(dirArgs, dir.loc); +} +function stringifyDynamicPropNames(props) { + let propsNamesString = `[`; + for (let i = 0, l = props.length; i < l; i++) { + propsNamesString += JSON.stringify(props[i]); + if (i < l - 1) propsNamesString += ", "; + } + return propsNamesString + `]`; +} +function isComponentTag(tag) { + return tag === "component" || tag === "Component"; +} + +const transformSlotOutlet = (node, context) => { + if (isSlotOutlet(node)) { + const { children, loc } = node; + const { slotName, slotProps } = processSlotOutlet(node, context); + const slotArgs = [ + context.prefixIdentifiers ? `_ctx.$slots` : `$slots`, + slotName, + "{}", + "undefined", + "true" + ]; + let expectedLen = 2; + if (slotProps) { + slotArgs[2] = slotProps; + expectedLen = 3; + } + if (children.length) { + slotArgs[3] = createFunctionExpression([], children, false, false, loc); + expectedLen = 4; + } + if (context.scopeId && !context.slotted) { + expectedLen = 5; + } + slotArgs.splice(expectedLen); + node.codegenNode = createCallExpression( + context.helper(RENDER_SLOT), + slotArgs, + loc + ); + } +}; +function processSlotOutlet(node, context) { + let slotName = `"default"`; + let slotProps = void 0; + const nonNameProps = []; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (p.value) { + if (p.name === "name") { + slotName = JSON.stringify(p.value.content); + } else { + p.name = camelize(p.name); + nonNameProps.push(p); + } + } + } else { + if (p.name === "bind" && isStaticArgOf(p.arg, "name")) { + if (p.exp) { + slotName = p.exp; + } else if (p.arg && p.arg.type === 4) { + const name = camelize(p.arg.content); + slotName = p.exp = createSimpleExpression(name, false, p.arg.loc); + } + } else { + if (p.name === "bind" && p.arg && isStaticExp(p.arg)) { + p.arg.content = camelize(p.arg.content); + } + nonNameProps.push(p); + } + } + } + if (nonNameProps.length > 0) { + const { props, directives } = buildProps( + node, + context, + nonNameProps, + false, + false + ); + slotProps = props; + if (directives.length) { + context.onError( + createCompilerError( + 36, + directives[0].loc + ) + ); + } + } + return { + slotName, + slotProps + }; +} + +const transformOn$1 = (dir, node, context, augmentor) => { + const { loc, modifiers, arg } = dir; + if (!dir.exp && !modifiers.length) { + context.onError(createCompilerError(35, loc)); + } + let eventName; + if (arg.type === 4) { + if (arg.isStatic) { + let rawName = arg.content; + if (rawName.startsWith("vnode")) { + context.onError(createCompilerError(51, arg.loc)); + } + if (rawName.startsWith("vue:")) { + rawName = `vnode-${rawName.slice(4)}`; + } + const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? ( + // for non-element and vnode lifecycle event listeners, auto convert + // it to camelCase. See issue #2249 + toHandlerKey(camelize(rawName)) + ) : ( + // preserve case for plain element listeners that have uppercase + // letters, as these may be custom elements' custom events + `on:${rawName}` + ); + eventName = createSimpleExpression(eventString, true, arg.loc); + } else { + eventName = createCompoundExpression([ + `${context.helperString(TO_HANDLER_KEY)}(`, + arg, + `)` + ]); + } + } else { + eventName = arg; + eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`); + eventName.children.push(`)`); + } + let exp = dir.exp; + if (exp && !exp.content.trim()) { + exp = void 0; + } + let shouldCache = context.cacheHandlers && !exp && !context.inVOnce; + if (exp) { + const isMemberExp = isMemberExpression(exp); + const isInlineStatement = !(isMemberExp || isFnExpression(exp)); + const hasMultipleStatements = exp.content.includes(`;`); + { + validateBrowserExpression( + exp, + context, + false, + hasMultipleStatements + ); + } + if (isInlineStatement || shouldCache && isMemberExp) { + exp = createCompoundExpression([ + `${isInlineStatement ? `$event` : `${``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`, + exp, + hasMultipleStatements ? `}` : `)` + ]); + } + } + let ret = { + props: [ + createObjectProperty( + eventName, + exp || createSimpleExpression(`() => {}`, false, loc) + ) + ] + }; + if (augmentor) { + ret = augmentor(ret); + } + if (shouldCache) { + ret.props[0].value = context.cache(ret.props[0].value); + } + ret.props.forEach((p) => p.key.isHandlerKey = true); + return ret; +}; + +const transformText = (node, context) => { + if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) { + return () => { + const children = node.children; + let currentContainer = void 0; + let hasText = false; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child)) { + hasText = true; + for (let j = i + 1; j < children.length; j++) { + const next = children[j]; + if (isText$1(next)) { + if (!currentContainer) { + currentContainer = children[i] = createCompoundExpression( + [child], + child.loc + ); + } + currentContainer.children.push(` + `, next); + children.splice(j, 1); + j--; + } else { + currentContainer = void 0; + break; + } + } + } + } + if (!hasText || // if this is a plain element with a single text child, leave it + // as-is since the runtime has dedicated fast path for this by directly + // setting textContent of the element. + // for component root it's always normalized anyway. + children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756 + // custom directives can potentially add DOM elements arbitrarily, + // we need to avoid setting textContent of the element at runtime + // to avoid accidentally overwriting the DOM elements added + // by the user through custom directives. + !node.props.find( + (p) => p.type === 7 && !context.directiveTransforms[p.name] + ) && // in compat mode, <template> tags with no special directives + // will be rendered as a fragment so its children must be + // converted into vnodes. + !(node.tag === "template"))) { + return; + } + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child) || child.type === 8) { + const callArgs = []; + if (child.type !== 2 || child.content !== " ") { + callArgs.push(child); + } + if (!context.ssr && getConstantType(child, context) === 0) { + callArgs.push( + 1 + (` /* ${PatchFlagNames[1]} */` ) + ); + } + children[i] = { + type: 12, + content: child, + loc: child.loc, + codegenNode: createCallExpression( + context.helper(CREATE_TEXT), + callArgs + ) + }; + } + } + }; + } +}; + +const seen$1 = /* @__PURE__ */ new WeakSet(); +const transformOnce = (node, context) => { + if (node.type === 1 && findDir(node, "once", true)) { + if (seen$1.has(node) || context.inVOnce || context.inSSR) { + return; + } + seen$1.add(node); + context.inVOnce = true; + context.helper(SET_BLOCK_TRACKING); + return () => { + context.inVOnce = false; + const cur = context.currentNode; + if (cur.codegenNode) { + cur.codegenNode = context.cache( + cur.codegenNode, + true, + true + ); + } + }; + } +}; + +const transformModel$1 = (dir, node, context) => { + const { exp, arg } = dir; + if (!exp) { + context.onError( + createCompilerError(41, dir.loc) + ); + return createTransformProps(); + } + const rawExp = exp.loc.source.trim(); + const expString = exp.type === 4 ? exp.content : rawExp; + const bindingType = context.bindingMetadata[rawExp]; + if (bindingType === "props" || bindingType === "props-aliased") { + context.onError(createCompilerError(44, exp.loc)); + return createTransformProps(); + } + if (!expString.trim() || !isMemberExpression(exp) && true) { + context.onError( + createCompilerError(42, exp.loc) + ); + return createTransformProps(); + } + const propName = arg ? arg : createSimpleExpression("modelValue", true); + const eventName = arg ? isStaticExp(arg) ? `onUpdate:${camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`; + let assignmentExp; + const eventArg = context.isTS ? `($event: any)` : `$event`; + { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + exp, + `) = $event)` + ]); + } + const props = [ + // modelValue: foo + createObjectProperty(propName, dir.exp), + // "onUpdate:modelValue": $event => (foo = $event) + createObjectProperty(eventName, assignmentExp) + ]; + if (dir.modifiers.length && node.tagType === 1) { + const modifiers = dir.modifiers.map((m) => m.content).map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `); + const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`; + props.push( + createObjectProperty( + modifiersKey, + createSimpleExpression( + `{ ${modifiers} }`, + false, + dir.loc, + 2 + ) + ) + ); + } + return createTransformProps(props); +}; +function createTransformProps(props = []) { + return { props }; +} + +const validDivisionCharRE = /[\w).+\-_$\]]/; +const transformFilter = (node, context) => { + if (!isCompatEnabled("COMPILER_FILTERS", context)) { + return; + } + if (node.type === 5) { + rewriteFilter(node.content, context); + } else if (node.type === 1) { + node.props.forEach((prop) => { + if (prop.type === 7 && prop.name !== "for" && prop.exp) { + rewriteFilter(prop.exp, context); + } + }); + } +}; +function rewriteFilter(node, context) { + if (node.type === 4) { + parseFilter(node, context); + } else { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (typeof child !== "object") continue; + if (child.type === 4) { + parseFilter(child, context); + } else if (child.type === 8) { + rewriteFilter(node, context); + } else if (child.type === 5) { + rewriteFilter(child.content, context); + } + } + } +} +function parseFilter(node, context) { + const exp = node.content; + let inSingle = false; + let inDouble = false; + let inTemplateString = false; + let inRegex = false; + let curly = 0; + let square = 0; + let paren = 0; + let lastFilterIndex = 0; + let c, prev, i, expression, filters = []; + for (i = 0; i < exp.length; i++) { + prev = c; + c = exp.charCodeAt(i); + if (inSingle) { + if (c === 39 && prev !== 92) inSingle = false; + } else if (inDouble) { + if (c === 34 && prev !== 92) inDouble = false; + } else if (inTemplateString) { + if (c === 96 && prev !== 92) inTemplateString = false; + } else if (inRegex) { + if (c === 47 && prev !== 92) inRegex = false; + } else if (c === 124 && // pipe + exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) { + if (expression === void 0) { + lastFilterIndex = i + 1; + expression = exp.slice(0, i).trim(); + } else { + pushFilter(); + } + } else { + switch (c) { + case 34: + inDouble = true; + break; + // " + case 39: + inSingle = true; + break; + // ' + case 96: + inTemplateString = true; + break; + // ` + case 40: + paren++; + break; + // ( + case 41: + paren--; + break; + // ) + case 91: + square++; + break; + // [ + case 93: + square--; + break; + // ] + case 123: + curly++; + break; + // { + case 125: + curly--; + break; + } + if (c === 47) { + let j = i - 1; + let p; + for (; j >= 0; j--) { + p = exp.charAt(j); + if (p !== " ") break; + } + if (!p || !validDivisionCharRE.test(p)) { + inRegex = true; + } + } + } + } + if (expression === void 0) { + expression = exp.slice(0, i).trim(); + } else if (lastFilterIndex !== 0) { + pushFilter(); + } + function pushFilter() { + filters.push(exp.slice(lastFilterIndex, i).trim()); + lastFilterIndex = i + 1; + } + if (filters.length) { + warnDeprecation( + "COMPILER_FILTERS", + context, + node.loc + ); + for (i = 0; i < filters.length; i++) { + expression = wrapFilter(expression, filters[i], context); + } + node.content = expression; + node.ast = void 0; + } +} +function wrapFilter(exp, filter, context) { + context.helper(RESOLVE_FILTER); + const i = filter.indexOf("("); + if (i < 0) { + context.filters.add(filter); + return `${toValidAssetId(filter, "filter")}(${exp})`; + } else { + const name = filter.slice(0, i); + const args = filter.slice(i + 1); + context.filters.add(name); + return `${toValidAssetId(name, "filter")}(${exp}${args !== ")" ? "," + args : args}`; + } +} + +const seen = /* @__PURE__ */ new WeakSet(); +const transformMemo = (node, context) => { + if (node.type === 1) { + const dir = findDir(node, "memo"); + if (!dir || seen.has(node)) { + return; + } + seen.add(node); + return () => { + const codegenNode = node.codegenNode || context.currentNode.codegenNode; + if (codegenNode && codegenNode.type === 13) { + if (node.tagType !== 1) { + convertToBlock(codegenNode, context); + } + node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [ + dir.exp, + createFunctionExpression(void 0, codegenNode), + `_cache`, + String(context.cached.length) + ]); + context.cached.push(null); + } + }; + } +}; + +function getBaseTransformPreset(prefixIdentifiers) { + return [ + [ + transformOnce, + transformIf, + transformMemo, + transformFor, + ...[transformFilter] , + ...[transformExpression] , + transformSlotOutlet, + transformElement, + trackSlotScopes, + transformText + ], + { + on: transformOn$1, + bind: transformBind, + model: transformModel$1 + } + ]; +} +function baseCompile(source, options = {}) { + const onError = options.onError || defaultOnError; + const isModuleMode = options.mode === "module"; + { + if (options.prefixIdentifiers === true) { + onError(createCompilerError(47)); + } else if (isModuleMode) { + onError(createCompilerError(48)); + } + } + const prefixIdentifiers = false; + if (options.cacheHandlers) { + onError(createCompilerError(49)); + } + if (options.scopeId && !isModuleMode) { + onError(createCompilerError(50)); + } + const resolvedOptions = extend({}, options, { + prefixIdentifiers + }); + const ast = isString(source) ? baseParse(source, resolvedOptions) : source; + const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(); + transform( + ast, + extend({}, resolvedOptions, { + nodeTransforms: [ + ...nodeTransforms, + ...options.nodeTransforms || [] + // user transforms + ], + directiveTransforms: extend( + {}, + directiveTransforms, + options.directiveTransforms || {} + // user transforms + ) + }) + ); + return generate(ast, resolvedOptions); +} + +const BindingTypes = { + "DATA": "data", + "PROPS": "props", + "PROPS_ALIASED": "props-aliased", + "SETUP_LET": "setup-let", + "SETUP_CONST": "setup-const", + "SETUP_REACTIVE_CONST": "setup-reactive-const", + "SETUP_MAYBE_REF": "setup-maybe-ref", + "SETUP_REF": "setup-ref", + "OPTIONS": "options", + "LITERAL_CONST": "literal-const" +}; + +const noopDirectiveTransform = () => ({ props: [] }); + +const V_MODEL_RADIO = Symbol(`vModelRadio` ); +const V_MODEL_CHECKBOX = Symbol( + `vModelCheckbox` +); +const V_MODEL_TEXT = Symbol(`vModelText` ); +const V_MODEL_SELECT = Symbol( + `vModelSelect` +); +const V_MODEL_DYNAMIC = Symbol( + `vModelDynamic` +); +const V_ON_WITH_MODIFIERS = Symbol( + `vOnModifiersGuard` +); +const V_ON_WITH_KEYS = Symbol( + `vOnKeysGuard` +); +const V_SHOW = Symbol(`vShow` ); +const TRANSITION = Symbol(`Transition` ); +const TRANSITION_GROUP = Symbol( + `TransitionGroup` +); +registerRuntimeHelpers({ + [V_MODEL_RADIO]: `vModelRadio`, + [V_MODEL_CHECKBOX]: `vModelCheckbox`, + [V_MODEL_TEXT]: `vModelText`, + [V_MODEL_SELECT]: `vModelSelect`, + [V_MODEL_DYNAMIC]: `vModelDynamic`, + [V_ON_WITH_MODIFIERS]: `withModifiers`, + [V_ON_WITH_KEYS]: `withKeys`, + [V_SHOW]: `vShow`, + [TRANSITION]: `Transition`, + [TRANSITION_GROUP]: `TransitionGroup` +}); + +let decoder; +function decodeHtmlBrowser(raw, asAttr = false) { + if (!decoder) { + decoder = document.createElement("div"); + } + if (asAttr) { + decoder.innerHTML = `<div foo="${raw.replace(/"/g, """)}">`; + return decoder.children[0].getAttribute("foo"); + } else { + decoder.innerHTML = raw; + return decoder.textContent; + } +} + +const parserOptions = { + parseMode: "html", + isVoidTag, + isNativeTag: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag), + isPreTag: (tag) => tag === "pre", + isIgnoreNewlineTag: (tag) => tag === "pre" || tag === "textarea", + decodeEntities: decodeHtmlBrowser , + isBuiltInComponent: (tag) => { + if (tag === "Transition" || tag === "transition") { + return TRANSITION; + } else if (tag === "TransitionGroup" || tag === "transition-group") { + return TRANSITION_GROUP; + } + }, + // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher + getNamespace(tag, parent, rootNamespace) { + let ns = parent ? parent.ns : rootNamespace; + if (parent && ns === 2) { + if (parent.tag === "annotation-xml") { + if (tag === "svg") { + return 1; + } + if (parent.props.some( + (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml") + )) { + ns = 0; + } + } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") { + ns = 0; + } + } else if (parent && ns === 1) { + if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") { + ns = 0; + } + } + if (ns === 0) { + if (tag === "svg") { + return 1; + } + if (tag === "math") { + return 2; + } + } + return ns; + } +}; + +const transformStyle = (node) => { + if (node.type === 1) { + node.props.forEach((p, i) => { + if (p.type === 6 && p.name === "style" && p.value) { + node.props[i] = { + type: 7, + name: `bind`, + arg: createSimpleExpression(`style`, true, p.loc), + exp: parseInlineCSS(p.value.content, p.loc), + modifiers: [], + loc: p.loc + }; + } + }); + } +}; +const parseInlineCSS = (cssText, loc) => { + const normalized = parseStringStyle(cssText); + return createSimpleExpression( + JSON.stringify(normalized), + false, + loc, + 3 + ); +}; + +function createDOMCompilerError(code, loc) { + return createCompilerError( + code, + loc, + DOMErrorMessages + ); +} +const DOMErrorCodes = { + "X_V_HTML_NO_EXPRESSION": 53, + "53": "X_V_HTML_NO_EXPRESSION", + "X_V_HTML_WITH_CHILDREN": 54, + "54": "X_V_HTML_WITH_CHILDREN", + "X_V_TEXT_NO_EXPRESSION": 55, + "55": "X_V_TEXT_NO_EXPRESSION", + "X_V_TEXT_WITH_CHILDREN": 56, + "56": "X_V_TEXT_WITH_CHILDREN", + "X_V_MODEL_ON_INVALID_ELEMENT": 57, + "57": "X_V_MODEL_ON_INVALID_ELEMENT", + "X_V_MODEL_ARG_ON_ELEMENT": 58, + "58": "X_V_MODEL_ARG_ON_ELEMENT", + "X_V_MODEL_ON_FILE_INPUT_ELEMENT": 59, + "59": "X_V_MODEL_ON_FILE_INPUT_ELEMENT", + "X_V_MODEL_UNNECESSARY_VALUE": 60, + "60": "X_V_MODEL_UNNECESSARY_VALUE", + "X_V_SHOW_NO_EXPRESSION": 61, + "61": "X_V_SHOW_NO_EXPRESSION", + "X_TRANSITION_INVALID_CHILDREN": 62, + "62": "X_TRANSITION_INVALID_CHILDREN", + "X_IGNORED_SIDE_EFFECT_TAG": 63, + "63": "X_IGNORED_SIDE_EFFECT_TAG", + "__EXTEND_POINT__": 64, + "64": "__EXTEND_POINT__" +}; +const DOMErrorMessages = { + [53]: `v-html is missing expression.`, + [54]: `v-html will override element children.`, + [55]: `v-text is missing expression.`, + [56]: `v-text will override element children.`, + [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`, + [58]: `v-model argument is not supported on plain elements.`, + [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`, + [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`, + [61]: `v-show is missing expression.`, + [62]: `<Transition> expects exactly one child element or component.`, + [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.` +}; + +const transformVHtml = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(53, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(54, loc) + ); + node.children.length = 0; + } + return { + props: [ + createObjectProperty( + createSimpleExpression(`innerHTML`, true, loc), + exp || createSimpleExpression("", true) + ) + ] + }; +}; + +const transformVText = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(55, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(56, loc) + ); + node.children.length = 0; + } + return { + props: [ + createObjectProperty( + createSimpleExpression(`textContent`, true), + exp ? getConstantType(exp, context) > 0 ? exp : createCallExpression( + context.helperString(TO_DISPLAY_STRING), + [exp], + loc + ) : createSimpleExpression("", true) + ) + ] + }; +}; + +const transformModel = (dir, node, context) => { + const baseResult = transformModel$1(dir, node, context); + if (!baseResult.props.length || node.tagType === 1) { + return baseResult; + } + if (dir.arg) { + context.onError( + createDOMCompilerError( + 58, + dir.arg.loc + ) + ); + } + function checkDuplicatedValue() { + const value = findDir(node, "bind"); + if (value && isStaticArgOf(value.arg, "value")) { + context.onError( + createDOMCompilerError( + 60, + value.loc + ) + ); + } + } + const { tag } = node; + const isCustomElement = context.isCustomElement(tag); + if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) { + let directiveToUse = V_MODEL_TEXT; + let isInvalidType = false; + if (tag === "input" || isCustomElement) { + const type = findProp(node, `type`); + if (type) { + if (type.type === 7) { + directiveToUse = V_MODEL_DYNAMIC; + } else if (type.value) { + switch (type.value.content) { + case "radio": + directiveToUse = V_MODEL_RADIO; + break; + case "checkbox": + directiveToUse = V_MODEL_CHECKBOX; + break; + case "file": + isInvalidType = true; + context.onError( + createDOMCompilerError( + 59, + dir.loc + ) + ); + break; + default: + checkDuplicatedValue(); + break; + } + } + } else if (hasDynamicKeyVBind(node)) { + directiveToUse = V_MODEL_DYNAMIC; + } else { + checkDuplicatedValue(); + } + } else if (tag === "select") { + directiveToUse = V_MODEL_SELECT; + } else { + checkDuplicatedValue(); + } + if (!isInvalidType) { + baseResult.needRuntime = context.helper(directiveToUse); + } + } else { + context.onError( + createDOMCompilerError( + 57, + dir.loc + ) + ); + } + baseResult.props = baseResult.props.filter( + (p) => !(p.key.type === 4 && p.key.content === "modelValue") + ); + return baseResult; +}; + +const isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`); +const isNonKeyModifier = /* @__PURE__ */ makeMap( + // event propagation management + `stop,prevent,self,ctrl,shift,alt,meta,exact,middle` +); +const maybeKeyModifier = /* @__PURE__ */ makeMap("left,right"); +const isKeyboardEvent = /* @__PURE__ */ makeMap(`onkeyup,onkeydown,onkeypress`); +const resolveModifiers = (key, modifiers, context, loc) => { + const keyModifiers = []; + const nonKeyModifiers = []; + const eventOptionModifiers = []; + for (let i = 0; i < modifiers.length; i++) { + const modifier = modifiers[i].content; + if (modifier === "native" && checkCompatEnabled( + "COMPILER_V_ON_NATIVE", + context, + loc + )) { + eventOptionModifiers.push(modifier); + } else if (isEventOptionModifier(modifier)) { + eventOptionModifiers.push(modifier); + } else { + if (maybeKeyModifier(modifier)) { + if (isStaticExp(key)) { + if (isKeyboardEvent(key.content.toLowerCase())) { + keyModifiers.push(modifier); + } else { + nonKeyModifiers.push(modifier); + } + } else { + keyModifiers.push(modifier); + nonKeyModifiers.push(modifier); + } + } else { + if (isNonKeyModifier(modifier)) { + nonKeyModifiers.push(modifier); + } else { + keyModifiers.push(modifier); + } + } + } + } + return { + keyModifiers, + nonKeyModifiers, + eventOptionModifiers + }; +}; +const transformClick = (key, event) => { + const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === "onclick"; + return isStaticClick ? createSimpleExpression(event, true) : key.type !== 4 ? createCompoundExpression([ + `(`, + key, + `) === "onClick" ? "${event}" : (`, + key, + `)` + ]) : key; +}; +const transformOn = (dir, node, context) => { + return transformOn$1(dir, node, context, (baseResult) => { + const { modifiers } = dir; + if (!modifiers.length) return baseResult; + let { key, value: handlerExp } = baseResult.props[0]; + const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); + if (nonKeyModifiers.includes("right")) { + key = transformClick(key, `onContextmenu`); + } + if (nonKeyModifiers.includes("middle")) { + key = transformClick(key, `onMouseup`); + } + if (nonKeyModifiers.length) { + handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ + handlerExp, + JSON.stringify(nonKeyModifiers) + ]); + } + if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard + (!isStaticExp(key) || isKeyboardEvent(key.content.toLowerCase()))) { + handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [ + handlerExp, + JSON.stringify(keyModifiers) + ]); + } + if (eventOptionModifiers.length) { + const modifierPostfix = eventOptionModifiers.map(capitalize).join(""); + key = isStaticExp(key) ? createSimpleExpression(`${key.content}${modifierPostfix}`, true) : createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); + } + return { + props: [createObjectProperty(key, handlerExp)] + }; + }); +}; + +const transformShow = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(61, loc) + ); + } + return { + props: [], + needRuntime: context.helper(V_SHOW) + }; +}; + +const transformTransition = (node, context) => { + if (node.type === 1 && node.tagType === 1) { + const component = context.isBuiltInComponent(node.tag); + if (component === TRANSITION) { + return () => { + if (!node.children.length) { + return; + } + if (hasMultipleChildren(node)) { + context.onError( + createDOMCompilerError( + 62, + { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: "" + } + ) + ); + } + const child = node.children[0]; + if (child.type === 1) { + for (const p of child.props) { + if (p.type === 7 && p.name === "show") { + node.props.push({ + type: 6, + name: "persisted", + nameLoc: node.loc, + value: void 0, + loc: node.loc + }); + } + } + } + }; + } + } +}; +function hasMultipleChildren(node) { + const children = node.children = node.children.filter( + (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim()) + ); + const child = children[0]; + return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren); +} + +const ignoreSideEffectTags = (node, context) => { + if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) { + context.onError( + createDOMCompilerError( + 63, + node.loc + ) + ); + context.removeNode(); + } +}; + +function isValidHTMLNesting(parent, child) { + if (parent === "template") { + return true; + } + if (parent in onlyValidChildren) { + return onlyValidChildren[parent].has(child); + } + if (child in onlyValidParents) { + return onlyValidParents[child].has(parent); + } + if (parent in knownInvalidChildren) { + if (knownInvalidChildren[parent].has(child)) return false; + } + if (child in knownInvalidParents) { + if (knownInvalidParents[child].has(parent)) return false; + } + return true; +} +const headings = /* @__PURE__ */ new Set(["h1", "h2", "h3", "h4", "h5", "h6"]); +const emptySet = /* @__PURE__ */ new Set([]); +const onlyValidChildren = { + head: /* @__PURE__ */ new Set([ + "base", + "basefront", + "bgsound", + "link", + "meta", + "title", + "noscript", + "noframes", + "style", + "script", + "template" + ]), + optgroup: /* @__PURE__ */ new Set(["option"]), + select: /* @__PURE__ */ new Set(["optgroup", "option", "hr"]), + // table + table: /* @__PURE__ */ new Set(["caption", "colgroup", "tbody", "tfoot", "thead"]), + tr: /* @__PURE__ */ new Set(["td", "th"]), + colgroup: /* @__PURE__ */ new Set(["col"]), + tbody: /* @__PURE__ */ new Set(["tr"]), + thead: /* @__PURE__ */ new Set(["tr"]), + tfoot: /* @__PURE__ */ new Set(["tr"]), + // these elements can not have any children elements + script: emptySet, + iframe: emptySet, + option: emptySet, + textarea: emptySet, + style: emptySet, + title: emptySet +}; +const onlyValidParents = { + // sections + html: emptySet, + body: /* @__PURE__ */ new Set(["html"]), + head: /* @__PURE__ */ new Set(["html"]), + // table + td: /* @__PURE__ */ new Set(["tr"]), + colgroup: /* @__PURE__ */ new Set(["table"]), + caption: /* @__PURE__ */ new Set(["table"]), + tbody: /* @__PURE__ */ new Set(["table"]), + tfoot: /* @__PURE__ */ new Set(["table"]), + col: /* @__PURE__ */ new Set(["colgroup"]), + th: /* @__PURE__ */ new Set(["tr"]), + thead: /* @__PURE__ */ new Set(["table"]), + tr: /* @__PURE__ */ new Set(["tbody", "thead", "tfoot"]), + // data list + dd: /* @__PURE__ */ new Set(["dl", "div"]), + dt: /* @__PURE__ */ new Set(["dl", "div"]), + // other + figcaption: /* @__PURE__ */ new Set(["figure"]), + // li: new Set(["ul", "ol"]), + summary: /* @__PURE__ */ new Set(["details"]), + area: /* @__PURE__ */ new Set(["map"]) +}; +const knownInvalidChildren = { + p: /* @__PURE__ */ new Set([ + "address", + "article", + "aside", + "blockquote", + "center", + "details", + "dialog", + "dir", + "div", + "dl", + "fieldset", + "figure", + "footer", + "form", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "header", + "hgroup", + "hr", + "li", + "main", + "nav", + "menu", + "ol", + "p", + "pre", + "section", + "table", + "ul" + ]), + svg: /* @__PURE__ */ new Set([ + "b", + "blockquote", + "br", + "code", + "dd", + "div", + "dl", + "dt", + "em", + "embed", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "hr", + "i", + "img", + "li", + "menu", + "meta", + "ol", + "p", + "pre", + "ruby", + "s", + "small", + "span", + "strong", + "sub", + "sup", + "table", + "u", + "ul", + "var" + ]) +}; +const knownInvalidParents = { + a: /* @__PURE__ */ new Set(["a"]), + button: /* @__PURE__ */ new Set(["button"]), + dd: /* @__PURE__ */ new Set(["dd", "dt"]), + dt: /* @__PURE__ */ new Set(["dd", "dt"]), + form: /* @__PURE__ */ new Set(["form"]), + li: /* @__PURE__ */ new Set(["li"]), + h1: headings, + h2: headings, + h3: headings, + h4: headings, + h5: headings, + h6: headings +}; + +const validateHtmlNesting = (node, context) => { + if (node.type === 1 && node.tagType === 0 && context.parent && context.parent.type === 1 && context.parent.tagType === 0 && !isValidHTMLNesting(context.parent.tag, node.tag)) { + const error = new SyntaxError( + `<${node.tag}> cannot be child of <${context.parent.tag}>, according to HTML specifications. This can cause hydration errors or potentially disrupt future functionality.` + ); + error.loc = node.loc; + context.onWarn(error); + } +}; + +const DOMNodeTransforms = [ + transformStyle, + ...[transformTransition, validateHtmlNesting] +]; +const DOMDirectiveTransforms = { + cloak: noopDirectiveTransform, + html: transformVHtml, + text: transformVText, + model: transformModel, + // override compiler-core + on: transformOn, + // override compiler-core + show: transformShow +}; +function compile(src, options = {}) { + return baseCompile( + src, + extend({}, parserOptions, options, { + nodeTransforms: [ + // ignore <script> and <tag> + // this is not put inside DOMNodeTransforms because that list is used + // by compiler-ssr to generate vnode fallback branches + ignoreSideEffectTags, + ...DOMNodeTransforms, + ...options.nodeTransforms || [] + ], + directiveTransforms: extend( + {}, + DOMDirectiveTransforms, + options.directiveTransforms || {} + ), + transformHoist: null + }) + ); +} +function parse(template, options = {}) { + return baseParse(template, extend({}, parserOptions, options)); +} + +export { BASE_TRANSITION, BindingTypes, CAMELIZE, CAPITALIZE, CREATE_BLOCK, CREATE_COMMENT, CREATE_ELEMENT_BLOCK, CREATE_ELEMENT_VNODE, CREATE_SLOTS, CREATE_STATIC, CREATE_TEXT, CREATE_VNODE, CompilerDeprecationTypes, ConstantTypes, DOMDirectiveTransforms, DOMErrorCodes, DOMErrorMessages, DOMNodeTransforms, ElementTypes, ErrorCodes, FRAGMENT, GUARD_REACTIVE_PROPS, IS_MEMO_SAME, IS_REF, KEEP_ALIVE, MERGE_PROPS, NORMALIZE_CLASS, NORMALIZE_PROPS, NORMALIZE_STYLE, Namespaces, NodeTypes, OPEN_BLOCK, POP_SCOPE_ID, PUSH_SCOPE_ID, RENDER_LIST, RENDER_SLOT, RESOLVE_COMPONENT, RESOLVE_DIRECTIVE, RESOLVE_DYNAMIC_COMPONENT, RESOLVE_FILTER, SET_BLOCK_TRACKING, SUSPENSE, TELEPORT, TO_DISPLAY_STRING, TO_HANDLERS, TO_HANDLER_KEY, TRANSITION, TRANSITION_GROUP, TS_NODE_TYPES, UNREF, V_MODEL_CHECKBOX, V_MODEL_DYNAMIC, V_MODEL_RADIO, V_MODEL_SELECT, V_MODEL_TEXT, V_ON_WITH_KEYS, V_ON_WITH_MODIFIERS, V_SHOW, WITH_CTX, WITH_DIRECTIVES, WITH_MEMO, advancePositionWithClone, advancePositionWithMutation, assert, baseCompile, baseParse, buildDirectiveArgs, buildProps, buildSlots, checkCompatEnabled, compile, convertToBlock, createArrayExpression, createAssignmentExpression, createBlockStatement, createCacheExpression, createCallExpression, createCompilerError, createCompoundExpression, createConditionalExpression, createDOMCompilerError, createForLoopParams, createFunctionExpression, createIfStatement, createInterpolation, createObjectExpression, createObjectProperty, createReturnStatement, createRoot, createSequenceExpression, createSimpleExpression, createStructuralDirectiveTransform, createTemplateLiteral, createTransformContext, createVNodeCall, errorMessages, extractIdentifiers, findDir, findProp, forAliasRE, generate, generateCodeFrame, getBaseTransformPreset, getConstantType, getMemoedVNodeCall, getVNodeBlockHelper, getVNodeHelper, hasDynamicKeyVBind, hasScopeRef, helperNameMap, injectProp, isCoreComponent, isFnExpression, isFnExpressionBrowser, isFnExpressionNode, isFunctionType, isInDestructureAssignment, isInNewExpression, isMemberExpression, isMemberExpressionBrowser, isMemberExpressionNode, isReferencedIdentifier, isSimpleIdentifier, isSlotOutlet, isStaticArgOf, isStaticExp, isStaticProperty, isStaticPropertyKey, isTemplateNode, isText$1 as isText, isVPre, isVSlot, locStub, noopDirectiveTransform, parse, parserOptions, processExpression, processFor, processIf, processSlotOutlet, registerRuntimeHelpers, resolveComponentType, stringifyExpression, toValidAssetId, trackSlotScopes, trackVForSlotScopes, transform, transformBind, transformElement, transformExpression, transformModel$1 as transformModel, transformOn$1 as transformOn, transformStyle, traverseNode, unwrapTSNode, walkBlockDeclarations, walkFunctionParams, walkIdentifiers, warnDeprecation }; diff --git a/node_modules/@vue/compiler-dom/dist/compiler-dom.esm-browser.prod.js b/node_modules/@vue/compiler-dom/dist/compiler-dom.esm-browser.prod.js new file mode 100644 index 0000000..87bfe1e --- /dev/null +++ b/node_modules/@vue/compiler-dom/dist/compiler-dom.esm-browser.prod.js @@ -0,0 +1,14 @@ +/** +* @vue/compiler-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let e;function t(e){let t=Object.create(null);for(let n of e.split(","))t[n]=1;return e=>e in t}let n={},i=()=>{},r=()=>!1,s=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&(e.charCodeAt(2)>122||97>e.charCodeAt(2)),o=Object.assign,a=Array.isArray,l=e=>"string"==typeof e,c=e=>"symbol"==typeof e,h=e=>null!==e&&"object"==typeof e,d=t(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),p=t("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),u=e=>{let t=Object.create(null);return n=>t[n]||(t[n]=e(n))},f=/-(\w)/g,E=u(e=>e.replace(f,(e,t)=>t?t.toUpperCase():"")),_=u(e=>e.charAt(0).toUpperCase()+e.slice(1)),m=u(e=>e?`on${_(e)}`:"");function S(e,t=0,n=e.length){if((t=Math.max(0,Math.min(t,e.length)))>(n=Math.max(0,Math.min(n,e.length))))return"";let i=e.split(/(\r?\n)/),r=i.filter((e,t)=>t%2==1);i=i.filter((e,t)=>t%2==0);let s=0,o=[];for(let e=0;e<i.length;e++)if((s+=i[e].length+(r[e]&&r[e].length||0))>=t){for(let a=e-2;a<=e+2||n>s;a++){if(a<0||a>=i.length)continue;let l=a+1;o.push(`${l}${" ".repeat(Math.max(3-String(l).length,0))}| ${i[a]}`);let c=i[a].length,h=r[a]&&r[a].length||0;if(a===e){let e=t-(s-(c+h)),i=Math.max(1,n>s?c-e:n-t);o.push(" | "+" ".repeat(e)+"^".repeat(i))}else if(a>e){if(n>s){let e=Math.max(Math.min(n-s,c),1);o.push(" | "+"^".repeat(e))}s+=c+h}}break}return o.join(` +`)}let g=/;(?![^(]*\))/g,T=/:([^]+)/,N=/\/\*[^]*?\*\//g,I=t("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"),y=t("svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"),O=t("annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"),A=t("area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"),C=Symbol(""),b=Symbol(""),v=Symbol(""),R=Symbol(""),x=Symbol(""),L=Symbol(""),M=Symbol(""),P=Symbol(""),D=Symbol(""),V=Symbol(""),k=Symbol(""),X=Symbol(""),w=Symbol(""),U=Symbol(""),F=Symbol(""),B=Symbol(""),$=Symbol(""),H=Symbol(""),G=Symbol(""),q=Symbol(""),J=Symbol(""),j=Symbol(""),W=Symbol(""),K=Symbol(""),Y=Symbol(""),Q=Symbol(""),z=Symbol(""),Z=Symbol(""),ee=Symbol(""),et=Symbol(""),en=Symbol(""),ei=Symbol(""),er=Symbol(""),es=Symbol(""),eo=Symbol(""),ea=Symbol(""),el=Symbol(""),ec=Symbol(""),eh=Symbol(""),ed={[C]:"Fragment",[b]:"Teleport",[v]:"Suspense",[R]:"KeepAlive",[x]:"BaseTransition",[L]:"openBlock",[M]:"createBlock",[P]:"createElementBlock",[D]:"createVNode",[V]:"createElementVNode",[k]:"createCommentVNode",[X]:"createTextVNode",[w]:"createStaticVNode",[U]:"resolveComponent",[F]:"resolveDynamicComponent",[B]:"resolveDirective",[$]:"resolveFilter",[H]:"withDirectives",[G]:"renderList",[q]:"renderSlot",[J]:"createSlots",[j]:"toDisplayString",[W]:"mergeProps",[K]:"normalizeClass",[Y]:"normalizeStyle",[Q]:"normalizeProps",[z]:"guardReactiveProps",[Z]:"toHandlers",[ee]:"camelize",[et]:"capitalize",[en]:"toHandlerKey",[ei]:"setBlockTracking",[er]:"pushScopeId",[es]:"popScopeId",[eo]:"withCtx",[ea]:"unref",[el]:"isRef",[ec]:"withMemo",[eh]:"isMemoSame"};function ep(e){Object.getOwnPropertySymbols(e).forEach(t=>{ed[t]=e[t]})}let eu={HTML:0,0:"HTML",SVG:1,1:"SVG",MATH_ML:2,2:"MATH_ML"},ef={ROOT:0,0:"ROOT",ELEMENT:1,1:"ELEMENT",TEXT:2,2:"TEXT",COMMENT:3,3:"COMMENT",SIMPLE_EXPRESSION:4,4:"SIMPLE_EXPRESSION",INTERPOLATION:5,5:"INTERPOLATION",ATTRIBUTE:6,6:"ATTRIBUTE",DIRECTIVE:7,7:"DIRECTIVE",COMPOUND_EXPRESSION:8,8:"COMPOUND_EXPRESSION",IF:9,9:"IF",IF_BRANCH:10,10:"IF_BRANCH",FOR:11,11:"FOR",TEXT_CALL:12,12:"TEXT_CALL",VNODE_CALL:13,13:"VNODE_CALL",JS_CALL_EXPRESSION:14,14:"JS_CALL_EXPRESSION",JS_OBJECT_EXPRESSION:15,15:"JS_OBJECT_EXPRESSION",JS_PROPERTY:16,16:"JS_PROPERTY",JS_ARRAY_EXPRESSION:17,17:"JS_ARRAY_EXPRESSION",JS_FUNCTION_EXPRESSION:18,18:"JS_FUNCTION_EXPRESSION",JS_CONDITIONAL_EXPRESSION:19,19:"JS_CONDITIONAL_EXPRESSION",JS_CACHE_EXPRESSION:20,20:"JS_CACHE_EXPRESSION",JS_BLOCK_STATEMENT:21,21:"JS_BLOCK_STATEMENT",JS_TEMPLATE_LITERAL:22,22:"JS_TEMPLATE_LITERAL",JS_IF_STATEMENT:23,23:"JS_IF_STATEMENT",JS_ASSIGNMENT_EXPRESSION:24,24:"JS_ASSIGNMENT_EXPRESSION",JS_SEQUENCE_EXPRESSION:25,25:"JS_SEQUENCE_EXPRESSION",JS_RETURN_STATEMENT:26,26:"JS_RETURN_STATEMENT"},eE={ELEMENT:0,0:"ELEMENT",COMPONENT:1,1:"COMPONENT",SLOT:2,2:"SLOT",TEMPLATE:3,3:"TEMPLATE"},e_={NOT_CONSTANT:0,0:"NOT_CONSTANT",CAN_SKIP_PATCH:1,1:"CAN_SKIP_PATCH",CAN_CACHE:2,2:"CAN_CACHE",CAN_STRINGIFY:3,3:"CAN_STRINGIFY"},em={start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0},source:""};function eS(e,t=""){return{type:0,source:t,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:[],temps:0,codegenNode:void 0,loc:em}}function eg(e,t,n,i,r,s,o,a=!1,l=!1,c=!1,h=em){return e&&(a?(e.helper(L),e.helper(eX(e.inSSR,c))):e.helper(ek(e.inSSR,c)),o&&e.helper(H)),{type:13,tag:t,props:n,children:i,patchFlag:r,dynamicProps:s,directives:o,isBlock:a,disableTracking:l,isComponent:c,loc:h}}function eT(e,t=em){return{type:17,loc:t,elements:e}}function eN(e,t=em){return{type:15,loc:t,properties:e}}function eI(e,t){return{type:16,loc:em,key:l(e)?ey(e,!0):e,value:t}}function ey(e,t=!1,n=em,i=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:i}}function eO(e,t){return{type:5,loc:t,content:l(e)?ey(e,!1,t):e}}function eA(e,t=em){return{type:8,loc:t,children:e}}function eC(e,t=[],n=em){return{type:14,loc:n,callee:e,arguments:t}}function eb(e,t,n=!1,i=!1,r=em){return{type:18,params:e,returns:t,newline:n,isSlot:i,loc:r}}function ev(e,t,n,i=!0){return{type:19,test:e,consequent:t,alternate:n,newline:i,loc:em}}function eR(e,t,n=!1,i=!1){return{type:20,index:e,value:t,needPauseTracking:n,inVOnce:i,needArraySpread:!1,loc:em}}function ex(e){return{type:21,body:e,loc:em}}function eL(e){return{type:22,elements:e,loc:em}}function eM(e,t,n){return{type:23,test:e,consequent:t,alternate:n,loc:em}}function eP(e,t){return{type:24,left:e,right:t,loc:em}}function eD(e){return{type:25,expressions:e,loc:em}}function eV(e){return{type:26,returns:e,loc:em}}function ek(e,t){return e||t?D:V}function eX(e,t){return e||t?M:P}function ew(e,{helper:t,removeHelper:n,inSSR:i}){e.isBlock||(e.isBlock=!0,n(ek(i,e.isComponent)),t(L),t(eX(i,e.isComponent)))}let eU=new Uint8Array([123,123]),eF=new Uint8Array([125,125]);function eB(e){return e>=97&&e<=122||e>=65&&e<=90}function e$(e){return 32===e||10===e||9===e||12===e||13===e}function eH(e){return 47===e||62===e||e$(e)}function eG(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}let eq={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97])},eJ={COMPILER_IS_ON_ELEMENT:"COMPILER_IS_ON_ELEMENT",COMPILER_V_BIND_SYNC:"COMPILER_V_BIND_SYNC",COMPILER_V_BIND_OBJECT_ORDER:"COMPILER_V_BIND_OBJECT_ORDER",COMPILER_V_ON_NATIVE:"COMPILER_V_ON_NATIVE",COMPILER_V_IF_V_FOR_PRECEDENCE:"COMPILER_V_IF_V_FOR_PRECEDENCE",COMPILER_NATIVE_TEMPLATE:"COMPILER_NATIVE_TEMPLATE",COMPILER_INLINE_TEMPLATE:"COMPILER_INLINE_TEMPLATE",COMPILER_FILTERS:"COMPILER_FILTERS"},ej={COMPILER_IS_ON_ELEMENT:{message:'Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".',link:"https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html"},COMPILER_V_BIND_SYNC:{message:e=>`.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${e}.sync\` should be changed to \`v-model:${e}\`.`,link:"https://v3-migration.vuejs.org/breaking-changes/v-model.html"},COMPILER_V_BIND_OBJECT_ORDER:{message:'v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.',link:"https://v3-migration.vuejs.org/breaking-changes/v-bind.html"},COMPILER_V_ON_NATIVE:{message:".native modifier for v-on has been removed as is no longer necessary.",link:"https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html"},COMPILER_V_IF_V_FOR_PRECEDENCE:{message:"v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.",link:"https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html"},COMPILER_NATIVE_TEMPLATE:{message:"<template> with no special directives will render as a native template element instead of its inner content in Vue 3."},COMPILER_INLINE_TEMPLATE:{message:'"inline-template" has been removed in Vue 3.',link:"https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html"},COMPILER_FILTERS:{message:'filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.',link:"https://v3-migration.vuejs.org/breaking-changes/filters.html"}};function eW(e,{compatConfig:t}){let n=t&&t[e];return"MODE"===e?n||3:n}function eK(e,t){let n=eW("MODE",t),i=eW(e,t);return 3===n?!0===i:!1!==i}function eY(e,t,n){return eK(e,t)}function eQ(e,t,n,...i){if("suppress-warning"===eW(e,t))return;let{message:r,link:s}=ej[e],o=SyntaxError(`(deprecation ${e}) ${"function"==typeof r?r(...i):r}${s?` + Details: ${s}`:""}`);o.code=e,n&&(o.loc=n),t.onWarn(o)}function ez(e){throw e}function eZ(e){}function e1(e,t,n,i){let r=SyntaxError(String(`https://vuejs.org/error-reference/#compiler-${e}`));return r.code=e,r.loc=t,r}let e0={ABRUPT_CLOSING_OF_EMPTY_COMMENT:0,0:"ABRUPT_CLOSING_OF_EMPTY_COMMENT",CDATA_IN_HTML_CONTENT:1,1:"CDATA_IN_HTML_CONTENT",DUPLICATE_ATTRIBUTE:2,2:"DUPLICATE_ATTRIBUTE",END_TAG_WITH_ATTRIBUTES:3,3:"END_TAG_WITH_ATTRIBUTES",END_TAG_WITH_TRAILING_SOLIDUS:4,4:"END_TAG_WITH_TRAILING_SOLIDUS",EOF_BEFORE_TAG_NAME:5,5:"EOF_BEFORE_TAG_NAME",EOF_IN_CDATA:6,6:"EOF_IN_CDATA",EOF_IN_COMMENT:7,7:"EOF_IN_COMMENT",EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT:8,8:"EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT",EOF_IN_TAG:9,9:"EOF_IN_TAG",INCORRECTLY_CLOSED_COMMENT:10,10:"INCORRECTLY_CLOSED_COMMENT",INCORRECTLY_OPENED_COMMENT:11,11:"INCORRECTLY_OPENED_COMMENT",INVALID_FIRST_CHARACTER_OF_TAG_NAME:12,12:"INVALID_FIRST_CHARACTER_OF_TAG_NAME",MISSING_ATTRIBUTE_VALUE:13,13:"MISSING_ATTRIBUTE_VALUE",MISSING_END_TAG_NAME:14,14:"MISSING_END_TAG_NAME",MISSING_WHITESPACE_BETWEEN_ATTRIBUTES:15,15:"MISSING_WHITESPACE_BETWEEN_ATTRIBUTES",NESTED_COMMENT:16,16:"NESTED_COMMENT",UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME:17,17:"UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME",UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE:18,18:"UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE",UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME:19,19:"UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME",UNEXPECTED_NULL_CHARACTER:20,20:"UNEXPECTED_NULL_CHARACTER",UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME:21,21:"UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME",UNEXPECTED_SOLIDUS_IN_TAG:22,22:"UNEXPECTED_SOLIDUS_IN_TAG",X_INVALID_END_TAG:23,23:"X_INVALID_END_TAG",X_MISSING_END_TAG:24,24:"X_MISSING_END_TAG",X_MISSING_INTERPOLATION_END:25,25:"X_MISSING_INTERPOLATION_END",X_MISSING_DIRECTIVE_NAME:26,26:"X_MISSING_DIRECTIVE_NAME",X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END:27,27:"X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END",X_V_IF_NO_EXPRESSION:28,28:"X_V_IF_NO_EXPRESSION",X_V_IF_SAME_KEY:29,29:"X_V_IF_SAME_KEY",X_V_ELSE_NO_ADJACENT_IF:30,30:"X_V_ELSE_NO_ADJACENT_IF",X_V_FOR_NO_EXPRESSION:31,31:"X_V_FOR_NO_EXPRESSION",X_V_FOR_MALFORMED_EXPRESSION:32,32:"X_V_FOR_MALFORMED_EXPRESSION",X_V_FOR_TEMPLATE_KEY_PLACEMENT:33,33:"X_V_FOR_TEMPLATE_KEY_PLACEMENT",X_V_BIND_NO_EXPRESSION:34,34:"X_V_BIND_NO_EXPRESSION",X_V_ON_NO_EXPRESSION:35,35:"X_V_ON_NO_EXPRESSION",X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET:36,36:"X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET",X_V_SLOT_MIXED_SLOT_USAGE:37,37:"X_V_SLOT_MIXED_SLOT_USAGE",X_V_SLOT_DUPLICATE_SLOT_NAMES:38,38:"X_V_SLOT_DUPLICATE_SLOT_NAMES",X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN:39,39:"X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN",X_V_SLOT_MISPLACED:40,40:"X_V_SLOT_MISPLACED",X_V_MODEL_NO_EXPRESSION:41,41:"X_V_MODEL_NO_EXPRESSION",X_V_MODEL_MALFORMED_EXPRESSION:42,42:"X_V_MODEL_MALFORMED_EXPRESSION",X_V_MODEL_ON_SCOPE_VARIABLE:43,43:"X_V_MODEL_ON_SCOPE_VARIABLE",X_V_MODEL_ON_PROPS:44,44:"X_V_MODEL_ON_PROPS",X_INVALID_EXPRESSION:45,45:"X_INVALID_EXPRESSION",X_KEEP_ALIVE_INVALID_CHILDREN:46,46:"X_KEEP_ALIVE_INVALID_CHILDREN",X_PREFIX_ID_NOT_SUPPORTED:47,47:"X_PREFIX_ID_NOT_SUPPORTED",X_MODULE_MODE_NOT_SUPPORTED:48,48:"X_MODULE_MODE_NOT_SUPPORTED",X_CACHE_HANDLER_NOT_SUPPORTED:49,49:"X_CACHE_HANDLER_NOT_SUPPORTED",X_SCOPE_ID_NOT_SUPPORTED:50,50:"X_SCOPE_ID_NOT_SUPPORTED",X_VNODE_HOOKS:51,51:"X_VNODE_HOOKS",X_V_BIND_INVALID_SAME_NAME_ARGUMENT:52,52:"X_V_BIND_INVALID_SAME_NAME_ARGUMENT",__EXTEND_POINT__:53,53:"__EXTEND_POINT__"},e2={0:"Illegal comment.",1:"CDATA section is allowed only in XML context.",2:"Duplicate attribute.",3:"End tag cannot have attributes.",4:"Illegal '/' in tags.",5:"Unexpected EOF in tag.",6:"Unexpected EOF in CDATA section.",7:"Unexpected EOF in comment.",8:"Unexpected EOF in script.",9:"Unexpected EOF in tag.",10:"Incorrectly closed comment.",11:"Incorrectly opened comment.",12:"Illegal tag name. Use '<' to print '<'.",13:"Attribute value was expected.",14:"End tag name was expected.",15:"Whitespace was expected.",16:"Unexpected '\x3c!--' in comment.",17:"Attribute name cannot contain U+0022 (\"), U+0027 ('), and U+003C (<).",18:"Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).",19:"Attribute name cannot start with '='.",21:"'<?' is allowed only in XML context.",20:"Unexpected null character.",22:"Illegal '/' in tags.",23:"Invalid end tag.",24:"Element is missing end tag.",25:"Interpolation end sign was not found.",27:"End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.",26:"Legal directive name was expected.",28:"v-if/v-else-if is missing expression.",29:"v-if/else branches must use unique keys.",30:"v-else/v-else-if has no adjacent v-if or v-else-if.",31:"v-for is missing expression.",32:"v-for has invalid expression.",33:"<template v-for> key should be placed on the <template> tag.",34:"v-bind is missing expression.",52:"v-bind with same-name shorthand only allows static argument.",35:"v-on is missing expression.",36:"Unexpected custom directive on <slot> outlet.",37:"Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.",38:"Duplicate slot names found. ",39:"Extraneous children found when component already has explicitly named default slot. These children will be ignored.",40:"v-slot can only be used on components or <template> tags.",41:"v-model is missing expression.",42:"v-model value must be a valid JavaScript member expression.",43:"v-model cannot be used on v-for or v-slot scope variables because they are not writable.",44:`v-model cannot be used on a prop, because local prop bindings are not writable. +Use a v-bind binding combined with a v-on listener that emits update:x event instead.`,45:"Error parsing JavaScript expression: ",46:"<KeepAlive> expects exactly one child component.",51:"@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.",47:'"prefixIdentifiers" option is not supported in this build of compiler.',48:"ES module mode is not supported in this build of compiler.",49:'"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.',50:'"scopeId" option is only supported in module mode.',53:""};function e3(e,t,n=!1,i=[],r=Object.create(null)){}function e4(e,t,n){return!1}function e6(e,t){if(e&&("ObjectProperty"===e.type||"ArrayPattern"===e.type)){let e=t.length;for(;e--;){let n=t[e];if("AssignmentExpression"===n.type)return!0;if("ObjectProperty"!==n.type&&!n.type.endsWith("Pattern"))break}}return!1}function e5(e){let t=e.length;for(;t--;){let n=e[t];if("NewExpression"===n.type)return!0;if("MemberExpression"!==n.type)break}return!1}function e9(e,t){for(let n of e.params)for(let e of e8(n))t(e)}function e7(e,t){for(let i of e.body)if("VariableDeclaration"===i.type){if(i.declare)continue;for(let e of i.declarations)for(let n of e8(e.id))t(n)}else if("FunctionDeclaration"===i.type||"ClassDeclaration"===i.type){if(i.declare||!i.id)continue;t(i.id)}else{var n;("ForOfStatement"===(n=i).type||"ForInStatement"===n.type||"ForStatement"===n.type)&&function(e,t,n){let i="ForStatement"===e.type?e.init:e.left;if(i&&"VariableDeclaration"===i.type&&("var"===i.kind?t:!t))for(let e of i.declarations)for(let t of e8(e.id))n(t)}(i,!0,t)}}function e8(e,t=[]){switch(e.type){case"Identifier":t.push(e);break;case"MemberExpression":let n=e;for(;"MemberExpression"===n.type;)n=n.object;t.push(n);break;case"ObjectPattern":for(let n of e.properties)"RestElement"===n.type?e8(n.argument,t):e8(n.value,t);break;case"ArrayPattern":e.elements.forEach(e=>{e&&e8(e,t)});break;case"RestElement":e8(e.argument,t);break;case"AssignmentPattern":e8(e.left,t)}return t}let te=e=>/Function(?:Expression|Declaration)$|Method$/.test(e.type),tt=e=>e&&("ObjectProperty"===e.type||"ObjectMethod"===e.type)&&!e.computed,tn=(e,t)=>tt(t)&&t.key===e,ti=["TSAsExpression","TSTypeAssertion","TSNonNullExpression","TSInstantiationExpression","TSSatisfiesExpression"];function tr(e){return ti.includes(e.type)?tr(e.expression):e}let ts=e=>4===e.type&&e.isStatic;function to(e){switch(e){case"Teleport":case"teleport":return b;case"Suspense":case"suspense":return v;case"KeepAlive":case"keep-alive":return R;case"BaseTransition":case"base-transition":return x}}let ta=/^$|^\d|[^\$\w\xA0-\uFFFF]/,tl=e=>!ta.test(e),tc=/[A-Za-z_$\xA0-\uFFFF]/,th=/[\.\?\w$\xA0-\uFFFF]/,td=/\s+[.[]\s*|\s*[.[]\s+/g,tp=e=>4===e.type?e.content:e.loc.source,tu=e=>{let t=tp(e).trim().replace(td,e=>e.trim()),n=0,i=[],r=0,s=0,o=null;for(let e=0;e<t.length;e++){let a=t.charAt(e);switch(n){case 0:if("["===a)i.push(n),n=1,r++;else if("("===a)i.push(n),n=2,s++;else if(!(0===e?tc:th).test(a))return!1;break;case 1:"'"===a||'"'===a||"`"===a?(i.push(n),n=3,o=a):"["===a?r++:"]"!==a||--r||(n=i.pop());break;case 2:if("'"===a||'"'===a||"`"===a)i.push(n),n=3,o=a;else if("("===a)s++;else if(")"===a){if(e===t.length-1)return!1;--s||(n=i.pop())}break;case 3:a===o&&(n=i.pop(),o=null)}}return!r&&!s},tf=i,tE=tu,t_=/^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/,tm=e=>t_.test(tp(e)),tS=i,tg=tm;function tT(e,t,n=t.length){return tN({offset:e.offset,line:e.line,column:e.column},t,n)}function tN(e,t,n=t.length){let i=0,r=-1;for(let e=0;e<n;e++)10===t.charCodeAt(e)&&(i++,r=e);return e.offset+=n,e.line+=i,e.column=-1===r?e.column+n:n-r,e}function tI(e,t){if(!e)throw Error(t||"unexpected compiler condition")}function ty(e,t,n=!1){for(let i=0;i<e.props.length;i++){let r=e.props[i];if(7===r.type&&(n||r.exp)&&(l(t)?r.name===t:t.test(r.name)))return r}}function tO(e,t,n=!1,i=!1){for(let r=0;r<e.props.length;r++){let s=e.props[r];if(6===s.type){if(n)continue;if(s.name===t&&(s.value||i))return s}else if("bind"===s.name&&(s.exp||i)&&tA(s.arg,t))return s}}function tA(e,t){return!!(e&&ts(e)&&e.content===t)}function tC(e){return e.props.some(e=>7===e.type&&"bind"===e.name&&(!e.arg||4!==e.arg.type||!e.arg.isStatic))}function tb(e){return 5===e.type||2===e.type}function tv(e){return 7===e.type&&"pre"===e.name}function tR(e){return 7===e.type&&"slot"===e.name}function tx(e){return 1===e.type&&3===e.tagType}function tL(e){return 1===e.type&&2===e.tagType}let tM=new Set([Q,z]);function tP(e,t,n){let i,r,s=13===e.type?e.props:e.arguments[2],o=[];if(s&&!l(s)&&14===s.type){let e=function e(t,n=[]){if(t&&!l(t)&&14===t.type){let i=t.callee;if(!l(i)&&tM.has(i))return e(t.arguments[0],n.concat(t))}return[t,n]}(s);s=e[0],r=(o=e[1])[o.length-1]}if(null==s||l(s))i=eN([t]);else if(14===s.type){let e=s.arguments[0];l(e)||15!==e.type?s.callee===Z?i=eC(n.helper(W),[eN([t]),s]):s.arguments.unshift(eN([t])):tD(t,e)||e.properties.unshift(t),i||(i=s)}else 15===s.type?(tD(t,s)||s.properties.unshift(t),i=s):(i=eC(n.helper(W),[eN([t]),s]),r&&r.callee===z&&(r=o[o.length-2]));13===e.type?r?r.arguments[0]=i:e.props=i:r?r.arguments[0]=i:e.arguments[2]=i}function tD(e,t){let n=!1;if(4===e.key.type){let i=e.key.content;n=t.properties.some(e=>4===e.key.type&&e.key.content===i)}return n}function tV(e,t){return`_${t}_${e.replace(/[^\w]/g,(t,n)=>"-"===t?"_":e.charCodeAt(n).toString())}`}function tk(e,t){if(!e||0===Object.keys(t).length)return!1;switch(e.type){case 1:for(let n=0;n<e.props.length;n++){let i=e.props[n];if(7===i.type&&(tk(i.arg,t)||tk(i.exp,t)))return!0}return e.children.some(e=>tk(e,t));case 11:if(tk(e.source,t))return!0;return e.children.some(e=>tk(e,t));case 9:return e.branches.some(e=>tk(e,t));case 10:if(tk(e.condition,t))return!0;return e.children.some(e=>tk(e,t));case 4:return!e.isStatic&&tl(e.content)&&!!t[e.content];case 8:return e.children.some(e=>h(e)&&tk(e,t));case 5:case 12:return tk(e.content,t);default:return!1}}function tX(e){return 14===e.type&&e.callee===ec?e.arguments[1].returns:e}let tw=/([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/,tU={parseMode:"base",ns:0,delimiters:["{{","}}"],getNamespace:()=>0,isVoidTag:r,isPreTag:r,isIgnoreNewlineTag:r,isCustomElement:r,onError:ez,onWarn:eZ,comments:!1,prefixIdentifiers:!1},tF=tU,tB=null,t$="",tH=null,tG=null,tq="",tJ=-1,tj=-1,tW=0,tK=!1,tY=null,tQ=[],tz=new class{constructor(e,t){this.stack=e,this.cbs=t,this.state=1,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=1,this.inRCDATA=!1,this.inXML=!1,this.inVPre=!1,this.newlines=[],this.mode=0,this.delimiterOpen=eU,this.delimiterClose=eF,this.delimiterIndex=-1,this.currentSequence=void 0,this.sequenceIndex=0}get inSFCRoot(){return 2===this.mode&&0===this.stack.length}reset(){this.state=1,this.mode=0,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=1,this.inRCDATA=!1,this.currentSequence=void 0,this.newlines.length=0,this.delimiterOpen=eU,this.delimiterClose=eF}getPos(e){let t=1,n=e+1;for(let i=this.newlines.length-1;i>=0;i--){let r=this.newlines[i];if(e>r){t=i+2,n=e-r;break}}return{column:n,line:t,offset:e}}peek(){return this.buffer.charCodeAt(this.index+1)}stateText(e){60===e?(this.index>this.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=5,this.sectionStart=this.index):this.inVPre||e!==this.delimiterOpen[0]||(this.state=2,this.delimiterIndex=0,this.stateInterpolationOpen(e))}stateInterpolationOpen(e){if(e===this.delimiterOpen[this.delimiterIndex])if(this.delimiterIndex===this.delimiterOpen.length-1){let e=this.index+1-this.delimiterOpen.length;e>this.sectionStart&&this.cbs.ontext(this.sectionStart,e),this.state=3,this.sectionStart=e}else this.delimiterIndex++;else this.inRCDATA?(this.state=32,this.stateInRCDATA(e)):(this.state=1,this.stateText(e))}stateInterpolation(e){e===this.delimiterClose[0]&&(this.state=4,this.delimiterIndex=0,this.stateInterpolationClose(e))}stateInterpolationClose(e){e===this.delimiterClose[this.delimiterIndex]?this.delimiterIndex===this.delimiterClose.length-1?(this.cbs.oninterpolation(this.sectionStart,this.index+1),this.inRCDATA?this.state=32:this.state=1,this.sectionStart=this.index+1):this.delimiterIndex++:(this.state=3,this.stateInterpolation(e))}stateSpecialStartSequence(e){let t=this.sequenceIndex===this.currentSequence.length;if(t?eH(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!t)return void this.sequenceIndex++}else this.inRCDATA=!1;this.sequenceIndex=0,this.state=6,this.stateInTagName(e)}stateInRCDATA(e){if(this.sequenceIndex===this.currentSequence.length){if(62===e||e$(e)){let t=this.index-this.currentSequence.length;if(this.sectionStart<t){let e=this.index;this.index=t,this.cbs.ontext(this.sectionStart,t),this.index=e}this.sectionStart=t+2,this.stateInClosingTagName(e),this.inRCDATA=!1;return}this.sequenceIndex=0}(32|e)===this.currentSequence[this.sequenceIndex]?this.sequenceIndex+=1:0===this.sequenceIndex?this.currentSequence!==eq.TitleEnd&&(this.currentSequence!==eq.TextareaEnd||this.inSFCRoot)?this.fastForwardTo(60)&&(this.sequenceIndex=1):this.inVPre||e!==this.delimiterOpen[0]||(this.state=2,this.delimiterIndex=0,this.stateInterpolationOpen(e)):this.sequenceIndex=Number(60===e)}stateCDATASequence(e){e===eq.Cdata[this.sequenceIndex]?++this.sequenceIndex===eq.Cdata.length&&(this.state=28,this.currentSequence=eq.CdataEnd,this.sequenceIndex=0,this.sectionStart=this.index+1):(this.sequenceIndex=0,this.state=23,this.stateInDeclaration(e))}fastForwardTo(e){for(;++this.index<this.buffer.length;){let t=this.buffer.charCodeAt(this.index);if(10===t&&this.newlines.push(this.index),t===e)return!0}return this.index=this.buffer.length-1,!1}stateInCommentLike(e){e===this.currentSequence[this.sequenceIndex]?++this.sequenceIndex===this.currentSequence.length&&(this.currentSequence===eq.CdataEnd?this.cbs.oncdata(this.sectionStart,this.index-2):this.cbs.oncomment(this.sectionStart,this.index-2),this.sequenceIndex=0,this.sectionStart=this.index+1,this.state=1):0===this.sequenceIndex?this.fastForwardTo(this.currentSequence[0])&&(this.sequenceIndex=1):e!==this.currentSequence[this.sequenceIndex-1]&&(this.sequenceIndex=0)}startSpecial(e,t){this.enterRCDATA(e,t),this.state=31}enterRCDATA(e,t){this.inRCDATA=!0,this.currentSequence=e,this.sequenceIndex=t}stateBeforeTagName(e){33===e?(this.state=22,this.sectionStart=this.index+1):63===e?(this.state=24,this.sectionStart=this.index+1):eB(e)?(this.sectionStart=this.index,0===this.mode?this.state=6:this.inSFCRoot?this.state=34:this.inXML?this.state=6:116===e?this.state=30:this.state=115===e?29:6):47===e?this.state=8:(this.state=1,this.stateText(e))}stateInTagName(e){eH(e)&&this.handleTagName(e)}stateInSFCRootTagName(e){if(eH(e)){let t=this.buffer.slice(this.sectionStart,this.index);"template"!==t&&this.enterRCDATA(eG("</"+t),0),this.handleTagName(e)}}handleTagName(e){this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=11,this.stateBeforeAttrName(e)}stateBeforeClosingTagName(e){e$(e)||(62===e?(this.state=1,this.sectionStart=this.index+1):(this.state=eB(e)?9:27,this.sectionStart=this.index))}stateInClosingTagName(e){(62===e||e$(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=10,this.stateAfterClosingTagName(e))}stateAfterClosingTagName(e){62===e&&(this.state=1,this.sectionStart=this.index+1)}stateBeforeAttrName(e){62===e?(this.cbs.onopentagend(this.index),this.inRCDATA?this.state=32:this.state=1,this.sectionStart=this.index+1):47===e?this.state=7:60===e&&47===this.peek()?(this.cbs.onopentagend(this.index),this.state=5,this.sectionStart=this.index):e$(e)||this.handleAttrStart(e)}handleAttrStart(e){118===e&&45===this.peek()?(this.state=13,this.sectionStart=this.index):46===e||58===e||64===e||35===e?(this.cbs.ondirname(this.index,this.index+1),this.state=14,this.sectionStart=this.index+1):(this.state=12,this.sectionStart=this.index)}stateInSelfClosingTag(e){62===e?(this.cbs.onselfclosingtag(this.index),this.state=1,this.sectionStart=this.index+1,this.inRCDATA=!1):e$(e)||(this.state=11,this.stateBeforeAttrName(e))}stateInAttrName(e){(61===e||eH(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.handleAttrNameEnd(e))}stateInDirName(e){61===e||eH(e)?(this.cbs.ondirname(this.sectionStart,this.index),this.handleAttrNameEnd(e)):58===e?(this.cbs.ondirname(this.sectionStart,this.index),this.state=14,this.sectionStart=this.index+1):46===e&&(this.cbs.ondirname(this.sectionStart,this.index),this.state=16,this.sectionStart=this.index+1)}stateInDirArg(e){61===e||eH(e)?(this.cbs.ondirarg(this.sectionStart,this.index),this.handleAttrNameEnd(e)):91===e?this.state=15:46===e&&(this.cbs.ondirarg(this.sectionStart,this.index),this.state=16,this.sectionStart=this.index+1)}stateInDynamicDirArg(e){93===e?this.state=14:(61===e||eH(e))&&(this.cbs.ondirarg(this.sectionStart,this.index+1),this.handleAttrNameEnd(e))}stateInDirModifier(e){61===e||eH(e)?(this.cbs.ondirmodifier(this.sectionStart,this.index),this.handleAttrNameEnd(e)):46===e&&(this.cbs.ondirmodifier(this.sectionStart,this.index),this.sectionStart=this.index+1)}handleAttrNameEnd(e){this.sectionStart=this.index,this.state=17,this.cbs.onattribnameend(this.index),this.stateAfterAttrName(e)}stateAfterAttrName(e){61===e?this.state=18:47===e||62===e?(this.cbs.onattribend(0,this.sectionStart),this.sectionStart=-1,this.state=11,this.stateBeforeAttrName(e)):e$(e)||(this.cbs.onattribend(0,this.sectionStart),this.handleAttrStart(e))}stateBeforeAttrValue(e){34===e?(this.state=19,this.sectionStart=this.index+1):39===e?(this.state=20,this.sectionStart=this.index+1):e$(e)||(this.sectionStart=this.index,this.state=21,this.stateInAttrValueNoQuotes(e))}handleInAttrValue(e,t){(e===t||this.fastForwardTo(t))&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(34===t?3:2,this.index+1),this.state=11)}stateInAttrValueDoubleQuotes(e){this.handleInAttrValue(e,34)}stateInAttrValueSingleQuotes(e){this.handleInAttrValue(e,39)}stateInAttrValueNoQuotes(e){e$(e)||62===e?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(1,this.index),this.state=11,this.stateBeforeAttrName(e)):(39===e||60===e||61===e||96===e)&&this.cbs.onerr(18,this.index)}stateBeforeDeclaration(e){91===e?(this.state=26,this.sequenceIndex=0):this.state=45===e?25:23}stateInDeclaration(e){(62===e||this.fastForwardTo(62))&&(this.state=1,this.sectionStart=this.index+1)}stateInProcessingInstruction(e){(62===e||this.fastForwardTo(62))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=1,this.sectionStart=this.index+1)}stateBeforeComment(e){45===e?(this.state=28,this.currentSequence=eq.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=23}stateInSpecialComment(e){(62===e||this.fastForwardTo(62))&&(this.cbs.oncomment(this.sectionStart,this.index),this.state=1,this.sectionStart=this.index+1)}stateBeforeSpecialS(e){e===eq.ScriptEnd[3]?this.startSpecial(eq.ScriptEnd,4):e===eq.StyleEnd[3]?this.startSpecial(eq.StyleEnd,4):(this.state=6,this.stateInTagName(e))}stateBeforeSpecialT(e){e===eq.TitleEnd[3]?this.startSpecial(eq.TitleEnd,4):e===eq.TextareaEnd[3]?this.startSpecial(eq.TextareaEnd,4):(this.state=6,this.stateInTagName(e))}startEntity(){}stateInEntity(){}parse(e){for(this.buffer=e;this.index<this.buffer.length;){let e=this.buffer.charCodeAt(this.index);switch(10===e&&33!==this.state&&this.newlines.push(this.index),this.state){case 1:this.stateText(e);break;case 2:this.stateInterpolationOpen(e);break;case 3:this.stateInterpolation(e);break;case 4:this.stateInterpolationClose(e);break;case 31:this.stateSpecialStartSequence(e);break;case 32:this.stateInRCDATA(e);break;case 26:this.stateCDATASequence(e);break;case 19:this.stateInAttrValueDoubleQuotes(e);break;case 12:this.stateInAttrName(e);break;case 13:this.stateInDirName(e);break;case 14:this.stateInDirArg(e);break;case 15:this.stateInDynamicDirArg(e);break;case 16:this.stateInDirModifier(e);break;case 28:this.stateInCommentLike(e);break;case 27:this.stateInSpecialComment(e);break;case 11:this.stateBeforeAttrName(e);break;case 6:this.stateInTagName(e);break;case 34:this.stateInSFCRootTagName(e);break;case 9:this.stateInClosingTagName(e);break;case 5:this.stateBeforeTagName(e);break;case 17:this.stateAfterAttrName(e);break;case 20:this.stateInAttrValueSingleQuotes(e);break;case 18:this.stateBeforeAttrValue(e);break;case 8:this.stateBeforeClosingTagName(e);break;case 10:this.stateAfterClosingTagName(e);break;case 29:this.stateBeforeSpecialS(e);break;case 30:this.stateBeforeSpecialT(e);break;case 21:this.stateInAttrValueNoQuotes(e);break;case 7:this.stateInSelfClosingTag(e);break;case 23:this.stateInDeclaration(e);break;case 22:this.stateBeforeDeclaration(e);break;case 25:this.stateBeforeComment(e);break;case 24:this.stateInProcessingInstruction(e);break;case 33:this.stateInEntity()}this.index++}this.cleanup(),this.finish()}cleanup(){this.sectionStart!==this.index&&(1===this.state||32===this.state&&0===this.sequenceIndex?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):(19===this.state||20===this.state||21===this.state)&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}finish(){this.handleTrailingData(),this.cbs.onend()}handleTrailingData(){let e=this.buffer.length;this.sectionStart>=e||(28===this.state?this.currentSequence===eq.CdataEnd?this.cbs.oncdata(this.sectionStart,e):this.cbs.oncomment(this.sectionStart,e):6===this.state||11===this.state||18===this.state||17===this.state||12===this.state||13===this.state||14===this.state||15===this.state||16===this.state||20===this.state||19===this.state||21===this.state||9===this.state||this.cbs.ontext(this.sectionStart,e))}emitCodePoint(e,t){}}(tQ,{onerr:ns,ontext(e,t){t3(t0(e,t),e,t)},ontextentity(e,t,n){t3(e,t,n)},oninterpolation(e,t){if(tK)return t3(t0(e,t),e,t);let n=e+tz.delimiterOpen.length,i=t-tz.delimiterClose.length;for(;e$(t$.charCodeAt(n));)n++;for(;e$(t$.charCodeAt(i-1));)i--;let r=t0(n,i);r.includes("&")&&(r=tF.decodeEntities(r,!1)),nt({type:5,content:nr(r,!1,nn(n,i)),loc:nn(e,t)})},onopentagname(e,t){let n=t0(e,t);tH={type:1,tag:n,ns:tF.getNamespace(n,tQ[0],tF.ns),tagType:0,props:[],children:[],loc:nn(e-1,t),codegenNode:void 0}},onopentagend(e){t2(e)},onclosetag(e,t){let n=t0(e,t);if(!tF.isVoidTag(n)){let i=!1;for(let e=0;e<tQ.length;e++)if(tQ[e].tag.toLowerCase()===n.toLowerCase()){i=!0,e>0&&tQ[0].loc.start.offset;for(let n=0;n<=e;n++)t4(tQ.shift(),t,n<e);break}i||t6(e,60)}},onselfclosingtag(e){let t=tH.tag;tH.isSelfClosing=!0,t2(e),tQ[0]&&tQ[0].tag===t&&t4(tQ.shift(),e)},onattribname(e,t){tG={type:6,name:t0(e,t),nameLoc:nn(e,t),value:void 0,loc:nn(e)}},ondirname(e,t){let n=t0(e,t),i="."===n||":"===n?"bind":"@"===n?"on":"#"===n?"slot":n.slice(2);if(tK||""===i)tG={type:6,name:n,nameLoc:nn(e,t),value:void 0,loc:nn(e)};else if(tG={type:7,name:i,rawName:n,exp:void 0,arg:void 0,modifiers:"."===n?[ey("prop")]:[],loc:nn(e)},"pre"===i){tK=tz.inVPre=!0,tY=tH;let e=tH.props;for(let t=0;t<e.length;t++)7===e[t].type&&(e[t]=function(e){let t={type:6,name:e.rawName,nameLoc:nn(e.loc.start.offset,e.loc.start.offset+e.rawName.length),value:void 0,loc:e.loc};if(e.exp){let n=e.exp.loc;n.end.offset<e.loc.end.offset&&(n.start.offset--,n.start.column--,n.end.offset++,n.end.column++),t.value={type:2,content:e.exp.content,loc:n}}return t}(e[t]))}},ondirarg(e,t){if(e===t)return;let n=t0(e,t);if(tK&&!tv(tG))tG.name+=n,ni(tG.nameLoc,t);else{let i="["!==n[0];tG.arg=nr(i?n:n.slice(1,-1),i,nn(e,t),3*!!i)}},ondirmodifier(e,t){let n=t0(e,t);if(tK&&!tv(tG))tG.name+="."+n,ni(tG.nameLoc,t);else if("slot"===tG.name){let e=tG.arg;e&&(e.content+="."+n,ni(e.loc,t))}else{let i=ey(n,!0,nn(e,t));tG.modifiers.push(i)}},onattribdata(e,t){tq+=t0(e,t),tJ<0&&(tJ=e),tj=t},onattribentity(e,t,n){tq+=e,tJ<0&&(tJ=t),tj=n},onattribnameend(e){let t=t0(tG.loc.start.offset,e);7===tG.type&&(tG.rawName=t),tH.props.some(e=>(7===e.type?e.rawName:e.name)===t)},onattribend(e,t){if(tH&&tG){if(ni(tG.loc,t),0!==e)if(tq.includes("&")&&(tq=tF.decodeEntities(tq,!0)),6===tG.type)"class"===tG.name&&(tq=ne(tq).trim()),tG.value={type:2,content:tq,loc:1===e?nn(tJ,tj):nn(tJ-1,tj+1)},tz.inSFCRoot&&"template"===tH.tag&&"lang"===tG.name&&tq&&"html"!==tq&&tz.enterRCDATA(eG("</template"),0);else{tG.exp=nr(tq,!1,nn(tJ,tj),0,0),"for"===tG.name&&(tG.forParseResult=function(e){let t=e.loc,n=e.content,i=n.match(tw);if(!i)return;let[,r,s]=i,o=(e,n,i=!1)=>{let r=t.start.offset+n,s=r+e.length;return nr(e,!1,nn(r,s),0,+!!i)},a={source:o(s.trim(),n.indexOf(s,r.length)),value:void 0,key:void 0,index:void 0,finalized:!1},l=r.trim().replace(t1,"").trim(),c=r.indexOf(l),h=l.match(tZ);if(h){let e;l=l.replace(tZ,"").trim();let t=h[1].trim();if(t&&(e=n.indexOf(t,c+l.length),a.key=o(t,e,!0)),h[2]){let i=h[2].trim();i&&(a.index=o(i,n.indexOf(i,a.key?e+t.length:c+l.length),!0))}}return l&&(a.value=o(l,c,!0)),a}(tG.exp));let e=-1;"bind"===tG.name&&(e=tG.modifiers.findIndex(e=>"sync"===e.content))>-1&&eY("COMPILER_V_BIND_SYNC",tF,tG.loc,tG.arg.loc.source)&&(tG.name="model",tG.modifiers.splice(e,1))}(7!==tG.type||"pre"!==tG.name)&&tH.props.push(tG)}tq="",tJ=tj=-1},oncomment(e,t){tF.comments&&nt({type:3,content:t0(e,t),loc:nn(e-4,t+3)})},onend(){let e=t$.length;for(let t=0;t<tQ.length;t++)t4(tQ[t],e-1),tQ[t].loc.start.offset},oncdata(e,t){0!==tQ[0].ns&&t3(t0(e,t),e,t)},onprocessinginstruction(e){(tQ[0]?tQ[0].ns:tF.ns)===0&&ns(21,e-1)}}),tZ=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,t1=/^\(|\)$/g;function t0(e,t){return t$.slice(e,t)}function t2(e){tz.inSFCRoot&&(tH.innerLoc=nn(e+1,e+1)),nt(tH);let{tag:t,ns:n}=tH;0===n&&tF.isPreTag(t)&&tW++,tF.isVoidTag(t)?t4(tH,e):(tQ.unshift(tH),(1===n||2===n)&&(tz.inXML=!0)),tH=null}function t3(e,t,n){{let t=tQ[0]&&tQ[0].tag;"script"!==t&&"style"!==t&&e.includes("&")&&(e=tF.decodeEntities(e,!1))}let i=tQ[0]||tB,r=i.children[i.children.length-1];r&&2===r.type?(r.content+=e,ni(r.loc,n)):i.children.push({type:2,content:e,loc:nn(t,n)})}function t4(e,t,n=!1){n?ni(e.loc,t6(t,60)):ni(e.loc,function(e,t){let n=e;for(;62!==t$.charCodeAt(n)&&n<t$.length-1;)n++;return n}(t,62)+1),tz.inSFCRoot&&(e.children.length?e.innerLoc.end=o({},e.children[e.children.length-1].loc.end):e.innerLoc.end=o({},e.innerLoc.start),e.innerLoc.source=t0(e.innerLoc.start.offset,e.innerLoc.end.offset));let{tag:i,ns:r,children:s}=e;if(!tK&&("slot"===i?e.tagType=2:t9(e)?e.tagType=3:function({tag:e,props:t}){var n;if(tF.isCustomElement(e))return!1;if("component"===e||(n=e.charCodeAt(0))>64&&n<91||to(e)||tF.isBuiltInComponent&&tF.isBuiltInComponent(e)||tF.isNativeTag&&!tF.isNativeTag(e))return!0;for(let e=0;e<t.length;e++){let n=t[e];if(6===n.type){if("is"===n.name&&n.value){if(n.value.content.startsWith("vue:"))return!0;else if(eY("COMPILER_IS_ON_ELEMENT",tF,n.loc))return!0}}else if("bind"===n.name&&tA(n.arg,"is")&&eY("COMPILER_IS_ON_ELEMENT",tF,n.loc))return!0}return!1}(e)&&(e.tagType=1)),tz.inRCDATA||(e.children=t8(s)),0===r&&tF.isIgnoreNewlineTag(i)){let e=s[0];e&&2===e.type&&(e.content=e.content.replace(/^\r?\n/,""))}0===r&&tF.isPreTag(i)&&tW--,tY===e&&(tK=tz.inVPre=!1,tY=null),tz.inXML&&(tQ[0]?tQ[0].ns:tF.ns)===0&&(tz.inXML=!1);{let t=e.props;if(!tz.inSFCRoot&&eK("COMPILER_NATIVE_TEMPLATE",tF)&&"template"===e.tag&&!t9(e)){let t=tQ[0]||tB,n=t.children.indexOf(e);t.children.splice(n,1,...e.children)}let n=t.find(e=>6===e.type&&"inline-template"===e.name);n&&eY("COMPILER_INLINE_TEMPLATE",tF,n.loc)&&e.children.length&&(n.value={type:2,content:t0(e.children[0].loc.start.offset,e.children[e.children.length-1].loc.end.offset),loc:n.loc})}}function t6(e,t){let n=e;for(;t$.charCodeAt(n)!==t&&n>=0;)n--;return n}let t5=new Set(["if","else","else-if","for","slot"]);function t9({tag:e,props:t}){if("template"===e){for(let e=0;e<t.length;e++)if(7===t[e].type&&t5.has(t[e].name))return!0}return!1}let t7=/\r\n/g;function t8(e){let t="preserve"!==tF.whitespace,n=!1;for(let i=0;i<e.length;i++){let r=e[i];if(2===r.type)if(tW)r.content=r.content.replace(t7,` +`);else if(function(e){for(let t=0;t<e.length;t++)if(!e$(e.charCodeAt(t)))return!1;return!0}(r.content)){let s=e[i-1]&&e[i-1].type,o=e[i+1]&&e[i+1].type;!s||!o||t&&(3===s&&(3===o||1===o)||1===s&&(3===o||1===o&&function(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(10===n||13===n)return!0}return!1}(r.content)))?(n=!0,e[i]=null):r.content=" "}else t&&(r.content=ne(r.content))}return n?e.filter(Boolean):e}function ne(e){let t="",n=!1;for(let i=0;i<e.length;i++)e$(e.charCodeAt(i))?n||(t+=" ",n=!0):(t+=e[i],n=!1);return t}function nt(e){(tQ[0]||tB).children.push(e)}function nn(e,t){return{start:tz.getPos(e),end:null==t?t:tz.getPos(t),source:null==t?t:t0(e,t)}}function ni(e,t){e.end=tz.getPos(t),e.source=t0(e.start.offset,t)}function nr(e,t=!1,n,i=0,r=0){return ey(e,t,n,i)}function ns(e,t,n){tF.onError(e1(e,nn(t,t)))}function no(e,t){if(tz.reset(),tH=null,tG=null,tq="",tJ=-1,tj=-1,tQ.length=0,t$=e,tF=o({},tU),t){let e;for(e in t)null!=t[e]&&(tF[e]=t[e])}tz.mode="html"===tF.parseMode?1:2*("sfc"===tF.parseMode),tz.inXML=1===tF.ns||2===tF.ns;let n=t&&t.delimiters;n&&(tz.delimiterOpen=eG(n[0]),tz.delimiterClose=eG(n[1]));let i=tB=eS([],e);return tz.parse(t$),i.loc=nn(0,e.length),i.children=t8(i.children),tB=null,i}function na(e){let t=e.children.filter(e=>3!==e.type);return 1!==t.length||1!==t[0].type||tL(t[0])?null:t[0]}function nl(e,t){let{constantCache:n}=t;switch(e.type){case 1:if(0!==e.tagType)return 0;let i=n.get(e);if(void 0!==i)return i;let r=e.codegenNode;if(13!==r.type||r.isBlock&&"svg"!==e.tag&&"foreignObject"!==e.tag&&"math"!==e.tag)return 0;if(void 0!==r.patchFlag)return n.set(e,0),0;{let i=3,s=nh(e,t);if(0===s)return n.set(e,0),0;s<i&&(i=s);for(let r=0;r<e.children.length;r++){let s=nl(e.children[r],t);if(0===s)return n.set(e,0),0;s<i&&(i=s)}if(i>1)for(let r=0;r<e.props.length;r++){let s=e.props[r];if(7===s.type&&"bind"===s.name&&s.exp){let r=nl(s.exp,t);if(0===r)return n.set(e,0),0;r<i&&(i=r)}}if(r.isBlock){for(let t=0;t<e.props.length;t++)if(7===e.props[t].type)return n.set(e,0),0;t.removeHelper(L),t.removeHelper(eX(t.inSSR,r.isComponent)),r.isBlock=!1,t.helper(ek(t.inSSR,r.isComponent))}return n.set(e,i),i}case 2:case 3:return 3;case 9:case 11:case 10:default:return 0;case 5:case 12:return nl(e.content,t);case 4:return e.constType;case 8:let s=3;for(let n=0;n<e.children.length;n++){let i=e.children[n];if(l(i)||c(i))continue;let r=nl(i,t);if(0===r)return 0;r<s&&(s=r)}return s;case 20:return 2}}let nc=new Set([K,Y,Q,z]);function nh(e,t){let n=3,i=nd(e);if(i&&15===i.type){let{properties:e}=i;for(let i=0;i<e.length;i++){let r,{key:s,value:o}=e[i],a=nl(s,t);if(0===a)return a;if(a<n&&(n=a),0===(r=4===o.type?nl(o,t):14===o.type?function e(t,n){if(14===t.type&&!l(t.callee)&&nc.has(t.callee)){let i=t.arguments[0];if(4===i.type)return nl(i,n);if(14===i.type)return e(i,n)}return 0}(o,t):0))return r;r<n&&(n=r)}}return n}function nd(e){let t=e.codegenNode;if(13===t.type)return t.props}function np(e,{filename:t="",prefixIdentifiers:r=!1,hoistStatic:s=!1,hmr:o=!1,cacheHandlers:a=!1,nodeTransforms:c=[],directiveTransforms:h={},transformHoist:d=null,isBuiltInComponent:p=i,isCustomElement:u=i,expressionPlugins:f=[],scopeId:m=null,slotted:S=!0,ssr:g=!1,inSSR:T=!1,ssrCssVars:N="",bindingMetadata:I=n,inline:y=!1,isTS:O=!1,onError:A=ez,onWarn:C=eZ,compatConfig:b}){let v=t.replace(/\?.*$/,"").match(/([^/\\]+)\.\w+$/),R={filename:t,selfName:v&&_(E(v[1])),prefixIdentifiers:r,hoistStatic:s,hmr:o,cacheHandlers:a,nodeTransforms:c,directiveTransforms:h,transformHoist:d,isBuiltInComponent:p,isCustomElement:u,expressionPlugins:f,scopeId:m,slotted:S,ssr:g,inSSR:T,ssrCssVars:N,bindingMetadata:I,inline:y,isTS:O,onError:A,onWarn:C,compatConfig:b,root:e,helpers:new Map,components:new Set,directives:new Set,hoists:[],imports:[],cached:[],constantCache:new WeakMap,temps:0,identifiers:Object.create(null),scopes:{vFor:0,vSlot:0,vPre:0,vOnce:0},parent:null,grandParent:null,currentNode:e,childIndex:0,inVOnce:!1,helper(e){let t=R.helpers.get(e)||0;return R.helpers.set(e,t+1),e},removeHelper(e){let t=R.helpers.get(e);if(t){let n=t-1;n?R.helpers.set(e,n):R.helpers.delete(e)}},helperString:e=>`_${ed[R.helper(e)]}`,replaceNode(e){R.parent.children[R.childIndex]=R.currentNode=e},removeNode(e){let t=R.parent.children,n=e?t.indexOf(e):R.currentNode?R.childIndex:-1;e&&e!==R.currentNode?R.childIndex>n&&(R.childIndex--,R.onNodeRemoved()):(R.currentNode=null,R.onNodeRemoved()),R.parent.children.splice(n,1)},onNodeRemoved:i,addIdentifiers(e){},removeIdentifiers(e){},hoist(e){l(e)&&(e=ey(e)),R.hoists.push(e);let t=ey(`_hoisted_${R.hoists.length}`,!1,e.loc,2);return t.hoisted=e,t},cache(e,t=!1,n=!1){let i=eR(R.cached.length,e,t,n);return R.cached.push(i),i}};return R.filters=new Set,R}function nu(e,t){let n=np(e,t);nf(e,n),t.hoistStatic&&function e(t,n,i,r=!1,s=!1){let{children:o}=t,l=[];for(let n=0;n<o.length;n++){let a=o[n];if(1===a.type&&0===a.tagType){let e=r?0:nl(a,i);if(e>0){if(e>=2){a.codegenNode.patchFlag=-1,l.push(a);continue}}else{let e=a.codegenNode;if(13===e.type){let t=e.patchFlag;if((void 0===t||512===t||1===t)&&nh(a,i)>=2){let t=nd(a);t&&(e.props=i.hoist(t))}e.dynamicProps&&(e.dynamicProps=i.hoist(e.dynamicProps))}}}else if(12===a.type&&(r?0:nl(a,i))>=2){14===a.codegenNode.type&&a.codegenNode.arguments.length>0&&a.codegenNode.arguments.push("-1"),l.push(a);continue}if(1===a.type){let n=1===a.tagType;n&&i.scopes.vSlot++,e(a,t,i,!1,s),n&&i.scopes.vSlot--}else if(11===a.type)e(a,t,i,1===a.children.length,!0);else if(9===a.type)for(let n=0;n<a.branches.length;n++)e(a.branches[n],t,i,1===a.branches[n].children.length,s)}let c=!1,h=[];if(l.length===o.length&&1===t.type){if(0===t.tagType&&t.codegenNode&&13===t.codegenNode.type&&a(t.codegenNode.children))t.codegenNode.children=d(eT(t.codegenNode.children)),c=!0;else if(1===t.tagType&&t.codegenNode&&13===t.codegenNode.type&&t.codegenNode.children&&!a(t.codegenNode.children)&&15===t.codegenNode.children.type){let e=p(t.codegenNode,"default");e&&(h.push(i.cached.length),e.returns=d(eT(e.returns)),c=!0)}else if(3===t.tagType&&n&&1===n.type&&1===n.tagType&&n.codegenNode&&13===n.codegenNode.type&&n.codegenNode.children&&!a(n.codegenNode.children)&&15===n.codegenNode.children.type){let e=ty(t,"slot",!0),r=e&&e.arg&&p(n.codegenNode,e.arg);r&&(h.push(i.cached.length),r.returns=d(eT(r.returns)),c=!0)}}if(!c)for(let e of l)h.push(i.cached.length),e.codegenNode=i.cache(e.codegenNode);function d(e){let t=i.cache(e);return s&&i.hmr&&(t.needArraySpread=!0),t}function p(e,t){if(e.children&&!a(e.children)&&15===e.children.type){let n=e.children.properties.find(e=>e.key===t||e.key.content===t);return n&&n.value}}h.length&&1===t.type&&1===t.tagType&&t.codegenNode&&13===t.codegenNode.type&&t.codegenNode.children&&!a(t.codegenNode.children)&&15===t.codegenNode.children.type&&t.codegenNode.children.properties.push(eI("__",ey(JSON.stringify(h),!1))),l.length&&i.transformHoist&&i.transformHoist(o,i,t)}(e,void 0,n,!!na(e)),t.ssr||function(e,t){let{helper:n}=t,{children:i}=e;if(1===i.length){let n=na(e);if(n&&n.codegenNode){let i=n.codegenNode;13===i.type&&ew(i,t),e.codegenNode=i}else e.codegenNode=i[0]}else i.length>1&&(e.codegenNode=eg(t,n(C),void 0,e.children,64,void 0,void 0,!0,void 0,!1))}(e,n),e.helpers=new Set([...n.helpers.keys()]),e.components=[...n.components],e.directives=[...n.directives],e.imports=n.imports,e.hoists=n.hoists,e.temps=n.temps,e.cached=n.cached,e.transformed=!0,e.filters=[...n.filters]}function nf(e,t){t.currentNode=e;let{nodeTransforms:n}=t,i=[];for(let r=0;r<n.length;r++){let s=n[r](e,t);if(s&&(a(s)?i.push(...s):i.push(s)),!t.currentNode)return;e=t.currentNode}switch(e.type){case 3:t.ssr||t.helper(k);break;case 5:t.ssr||t.helper(j);break;case 9:for(let n=0;n<e.branches.length;n++)nf(e.branches[n],t);break;case 10:case 11:case 1:case 0:var r=e;let s=0,o=()=>{s--};for(;s<r.children.length;s++){let e=r.children[s];l(e)||(t.grandParent=t.parent,t.parent=r,t.childIndex=s,t.onNodeRemoved=o,nf(e,t))}}t.currentNode=e;let c=i.length;for(;c--;)i[c]()}function nE(e,t){let n=l(e)?t=>t===e:t=>e.test(t);return(e,i)=>{if(1===e.type){let{props:r}=e;if(3===e.tagType&&r.some(tR))return;let s=[];for(let o=0;o<r.length;o++){let a=r[o];if(7===a.type&&n(a.name)){r.splice(o,1),o--;let n=t(e,a,i);n&&s.push(n)}}return s}}}let n_="/*@__PURE__*/",nm=e=>`${ed[e]}: _${ed[e]}`;function nS(e,t={}){let n=function(e,{mode:t="function",prefixIdentifiers:n="module"===t,sourceMap:i=!1,filename:r="template.vue.html",scopeId:s=null,optimizeImports:o=!1,runtimeGlobalName:a="Vue",runtimeModuleName:l="vue",ssrRuntimeModuleName:c="vue/server-renderer",ssr:h=!1,isTS:d=!1,inSSR:p=!1}){let u={mode:t,prefixIdentifiers:n,sourceMap:i,filename:r,scopeId:s,optimizeImports:o,runtimeGlobalName:a,runtimeModuleName:l,ssrRuntimeModuleName:c,ssr:h,isTS:d,inSSR:p,source:e.source,code:"",column:1,line:1,offset:0,indentLevel:0,pure:!1,map:void 0,helper:e=>`_${ed[e]}`,push(e,t=-2,n){u.code+=e},indent(){f(++u.indentLevel)},deindent(e=!1){e?--u.indentLevel:f(--u.indentLevel)},newline(){f(u.indentLevel)}};function f(e){u.push(` +`+" ".repeat(e),0)}return u}(e,t);t.onContextCreated&&t.onContextCreated(n);let{mode:i,push:r,prefixIdentifiers:s,indent:o,deindent:a,newline:l,scopeId:c,ssr:h}=n,d=Array.from(e.helpers),p=d.length>0,u=!s&&"module"!==i;var f=e,E=n;let{ssr:_,prefixIdentifiers:m,push:S,newline:g,runtimeModuleName:T,runtimeGlobalName:N,ssrRuntimeModuleName:I}=E,y=Array.from(f.helpers);if(y.length>0&&(S(`const _Vue = ${N} +`,-1),f.hoists.length)){let e=[D,V,k,X,w].filter(e=>y.includes(e)).map(nm).join(", ");S(`const { ${e} } = _Vue +`,-1)}(function(e,t){if(!e.length)return;t.pure=!0;let{push:n,newline:i}=t;i();for(let r=0;r<e.length;r++){let s=e[r];s&&(n(`const _hoisted_${r+1} = `),nI(s,t),i())}t.pure=!1})(f.hoists,E),g(),S("return ");let O=(h?["_ctx","_push","_parent","_attrs"]:["_ctx","_cache"]).join(", ");if(r(`function ${h?"ssrRender":"render"}(${O}) {`),o(),u&&(r("with (_ctx) {"),o(),p&&(r(`const { ${d.map(nm).join(", ")} } = _Vue +`,-1),l())),e.components.length&&(ng(e.components,"component",n),(e.directives.length||e.temps>0)&&l()),e.directives.length&&(ng(e.directives,"directive",n),e.temps>0&&l()),e.filters&&e.filters.length&&(l(),ng(e.filters,"filter",n),l()),e.temps>0){r("let ");for(let t=0;t<e.temps;t++)r(`${t>0?", ":""}_temp${t}`)}return(e.components.length||e.directives.length||e.temps)&&(r(` +`,0),l()),h||r("return "),e.codegenNode?nI(e.codegenNode,n):r("null"),u&&(a(),r("}")),a(),r("}"),{ast:e,code:n.code,preamble:"",map:n.map?n.map.toJSON():void 0}}function ng(e,t,{helper:n,push:i,newline:r,isTS:s}){let o=n("filter"===t?$:"component"===t?U:B);for(let n=0;n<e.length;n++){let a=e[n],l=a.endsWith("__self");l&&(a=a.slice(0,-6)),i(`const ${tV(a,t)} = ${o}(${JSON.stringify(a)}${l?", true":""})${s?"!":""}`),n<e.length-1&&r()}}function nT(e,t){let n=e.length>3;t.push("["),n&&t.indent(),nN(e,t,n),n&&t.deindent(),t.push("]")}function nN(e,t,n=!1,i=!0){let{push:r,newline:s}=t;for(let o=0;o<e.length;o++){let c=e[o];l(c)?r(c,-3):a(c)?nT(c,t):nI(c,t),o<e.length-1&&(n?(i&&r(","),s()):i&&r(", "))}}function nI(e,t){if(l(e))return void t.push(e,-3);if(c(e))return void t.push(t.helper(e));switch(e.type){case 1:case 9:case 11:case 12:nI(e.codegenNode,t);break;case 2:n=e,t.push(JSON.stringify(n.content),-3,n);break;case 4:ny(e,t);break;case 5:var n,i,r,s=e,o=t;let{push:h,helper:d,pure:p}=o;p&&h(n_),h(`${d(j)}(`),nI(s.content,o),h(")");break;case 8:nO(e,t);break;case 3:var u=e,f=t;let{push:E,helper:_,pure:m}=f;m&&E(n_),E(`${_(k)}(${JSON.stringify(u.content)})`,-3,u);break;case 13:let S;var g=e,T=t;let{push:N,helper:I,pure:y}=T,{tag:O,props:A,children:C,patchFlag:b,dynamicProps:v,directives:R,isBlock:x,disableTracking:M,isComponent:P}=g;b&&(S=String(b)),R&&N(I(H)+"("),x&&N(`(${I(L)}(${M?"true":""}), `),y&&N(n_),N(I(x?eX(T.inSSR,P):ek(T.inSSR,P))+"(",-2,g),nN(function(e){let t=e.length;for(;t--&&null==e[t];);return e.slice(0,t+1).map(e=>e||"null")}([O,A,C,S,v]),T),N(")"),x&&N(")"),R&&(N(", "),nI(R,T),N(")"));break;case 14:var D=e,V=t;let{push:X,helper:w,pure:U}=V,F=l(D.callee)?D.callee:w(D.callee);U&&X(n_),X(F+"(",-2,D),nN(D.arguments,V),X(")");break;case 15:!function(e,t){let{push:n,indent:i,deindent:r,newline:s}=t,{properties:o}=e;if(!o.length)return n("{}",-2,e);let a=o.length>1;n(a?"{":"{ "),a&&i();for(let e=0;e<o.length;e++){let{key:i,value:r}=o[e],{push:a}=t;8===i.type?(a("["),nO(i,t),a("]")):i.isStatic?a(tl(i.content)?i.content:JSON.stringify(i.content),-2,i):a(`[${i.content}]`,-3,i),n(": "),nI(r,t),e<o.length-1&&(n(","),s())}a&&r(),n(a?"}":" }")}(e,t);break;case 17:i=e,r=t,nT(i.elements,r);break;case 18:var B=e,$=t;let{push:G,indent:q,deindent:J}=$,{params:W,returns:K,body:Y,newline:Q,isSlot:z}=B;z&&G(`_${ed[eo]}(`),G("(",-2,B),a(W)?nN(W,$):W&&nI(W,$),G(") => "),(Q||Y)&&(G("{"),q()),K?(Q&&G("return "),a(K)?nT(K,$):nI(K,$)):Y&&nI(Y,$),(Q||Y)&&(J(),G("}")),z&&(B.isNonScopedSlot&&G(", undefined, true"),G(")"));break;case 19:var Z=e,ee=t;let{test:et,consequent:en,alternate:er,newline:es}=Z,{push:ea,indent:el,deindent:ec,newline:eh}=ee;if(4===et.type){let e=!tl(et.content);e&&ea("("),ny(et,ee),e&&ea(")")}else ea("("),nI(et,ee),ea(")");es&&el(),ee.indentLevel++,es||ea(" "),ea("? "),nI(en,ee),ee.indentLevel--,es&&eh(),es||ea(" "),ea(": ");let ep=19===er.type;!ep&&ee.indentLevel++,nI(er,ee),!ep&&ee.indentLevel--,es&&ec(!0);break;case 20:var eu=e,ef=t;let{push:eE,helper:e_,indent:em,deindent:eS,newline:eg}=ef,{needPauseTracking:eT,needArraySpread:eN}=eu;eN&&eE("[...("),eE(`_cache[${eu.index}] || (`),eT&&(em(),eE(`${e_(ei)}(-1`),eu.inVOnce&&eE(", true"),eE("),"),eg(),eE("(")),eE(`_cache[${eu.index}] = `),nI(eu.value,ef),eT&&(eE(`).cacheIndex = ${eu.index},`),eg(),eE(`${e_(ei)}(1),`),eg(),eE(`_cache[${eu.index}]`),eS()),eE(")"),eN&&eE(")]");break;case 21:nN(e.body,t,!0,!1)}}function ny(e,t){let{content:n,isStatic:i}=e;t.push(i?JSON.stringify(n):n,-3,e)}function nO(e,t){for(let n=0;n<e.children.length;n++){let i=e.children[n];l(i)?t.push(i,-3):nI(i,t)}}let nA=(e,t)=>{if(5===e.type)e.content=nC(e.content,t);else if(1===e.type){let n=ty(e,"memo");for(let i=0;i<e.props.length;i++){let r=e.props[i];if(7===r.type&&"for"!==r.name){let e=r.exp,i=r.arg;!e||4!==e.type||"on"===r.name&&i||n&&i&&4===i.type&&"key"===i.content||(r.exp=nC(e,t,"slot"===r.name)),i&&4===i.type&&!i.isStatic&&(r.arg=nC(i,t))}}}};function nC(e,t,n=!1,i=!1,r=Object.create(t.identifiers)){return e}function nb(e){return l(e)?e:4===e.type?e.content:e.children.map(nb).join("")}let nv=nE(/^(if|else|else-if)$/,(e,t,n)=>nR(e,t,n,(e,t,i)=>{let r=n.parent.children,s=r.indexOf(e),o=0;for(;s-- >=0;){let e=r[s];e&&9===e.type&&(o+=e.branches.length)}return()=>{i?e.codegenNode=nL(t,o,n):function(e){for(;;)if(19===e.type)if(19!==e.alternate.type)return e;else e=e.alternate;else 20===e.type&&(e=e.value)}(e.codegenNode).alternate=nL(t,o+e.branches.length-1,n)}}));function nR(e,t,n,i){if("else"!==t.name&&(!t.exp||!t.exp.content.trim())){let i=t.exp?t.exp.loc:e.loc;n.onError(e1(28,t.loc)),t.exp=ey("true",!1,i)}if("if"===t.name){var r;let s=nx(e,t),o={type:9,loc:nn((r=e.loc).start.offset,r.end.offset),branches:[s]};if(n.replaceNode(o),i)return i(o,s,!0)}else{let r=n.parent.children,s=r.indexOf(e);for(;s-- >=-1;){let o=r[s];if(o&&3===o.type||o&&2===o.type&&!o.content.trim().length){n.removeNode(o);continue}if(o&&9===o.type){"else-if"===t.name&&void 0===o.branches[o.branches.length-1].condition&&n.onError(e1(30,e.loc)),n.removeNode();let r=nx(e,t);o.branches.push(r);let s=i&&i(o,r,!1);nf(r,n),s&&s(),n.currentNode=null}else n.onError(e1(30,e.loc));break}}}function nx(e,t){let n=3===e.tagType;return{type:10,loc:e.loc,condition:"else"===t.name?void 0:t.exp,children:n&&!ty(e,"for")?e.children:[e],userKey:tO(e,"key"),isTemplateIf:n}}function nL(e,t,n){return e.condition?ev(e.condition,nM(e,t,n),eC(n.helper(k),['""',"true"])):nM(e,t,n)}function nM(e,t,n){let{helper:i}=n,r=eI("key",ey(`${t}`,!1,em,2)),{children:s}=e,o=s[0];if(1!==s.length||1!==o.type)if(1!==s.length||11!==o.type)return eg(n,i(C),eN([r]),s,64,void 0,void 0,!0,!1,!1,e.loc);else{let e=o.codegenNode;return tP(e,r,n),e}{let e=o.codegenNode,t=tX(e);return 13===t.type&&ew(t,n),tP(t,r,n),e}}let nP=(e,t,n)=>{let{modifiers:i,loc:r}=e,s=e.arg,{exp:o}=e;if(o&&4===o.type&&!o.content.trim()&&(o=void 0),!o){if(4!==s.type||!s.isStatic)return n.onError(e1(52,s.loc)),{props:[eI(s,ey("",!0,r))]};nD(e),o=e.exp}return 4!==s.type?(s.children.unshift("("),s.children.push(') || ""')):s.isStatic||(s.content=s.content?`${s.content} || ""`:'""'),i.some(e=>"camel"===e.content)&&(4===s.type?s.isStatic?s.content=E(s.content):s.content=`${n.helperString(ee)}(${s.content})`:(s.children.unshift(`${n.helperString(ee)}(`),s.children.push(")"))),!n.inSSR&&(i.some(e=>"prop"===e.content)&&nV(s,"."),i.some(e=>"attr"===e.content)&&nV(s,"^")),{props:[eI(s,o)]}},nD=(e,t)=>{let n=e.arg;e.exp=ey(E(n.content),!1,n.loc)},nV=(e,t)=>{4===e.type?e.isStatic?e.content=t+e.content:e.content=`\`${t}\${${e.content}}\``:(e.children.unshift(`'${t}' + (`),e.children.push(")"))},nk=nE("for",(e,t,n)=>{let{helper:i,removeHelper:r}=n;return nX(e,t,n,t=>{let s=eC(i(G),[t.source]),o=tx(e),a=ty(e,"memo"),l=tO(e,"key",!1,!0);l&&7===l.type&&!l.exp&&nD(l);let c=l&&(6===l.type?l.value?ey(l.value.content,!0):void 0:l.exp),h=l&&c?eI("key",c):null,d=4===t.source.type&&t.source.constType>0,p=d?64:l?128:256;return t.codegenNode=eg(n,i(C),void 0,s,p,void 0,void 0,!0,!d,!1,e.loc),()=>{let l,{children:p}=t,u=1!==p.length||1!==p[0].type,f=tL(e)?e:o&&1===e.children.length&&tL(e.children[0])?e.children[0]:null;if(f?(l=f.codegenNode,o&&h&&tP(l,h,n)):u?l=eg(n,i(C),h?eN([h]):void 0,e.children,64,void 0,void 0,!0,void 0,!1):(l=p[0].codegenNode,o&&h&&tP(l,h,n),!d!==l.isBlock&&(l.isBlock?(r(L),r(eX(n.inSSR,l.isComponent))):r(ek(n.inSSR,l.isComponent))),l.isBlock=!d,l.isBlock?(i(L),i(eX(n.inSSR,l.isComponent))):i(ek(n.inSSR,l.isComponent))),a){let e=eb(nU(t.parseResult,[ey("_cached")]));e.body=ex([eA(["const _memo = (",a.exp,")"]),eA(["if (_cached",...c?[" && _cached.key === ",c]:[],` && ${n.helperString(eh)}(_cached, _memo)) return _cached`]),eA(["const _item = ",l]),ey("_item.memo = _memo"),ey("return _item")]),s.arguments.push(e,ey("_cache"),ey(String(n.cached.length))),n.cached.push(null)}else s.arguments.push(eb(nU(t.parseResult),l,!0))}})});function nX(e,t,n,i){if(!t.exp)return void n.onError(e1(31,t.loc));let r=t.forParseResult;if(!r)return void n.onError(e1(32,t.loc));nw(r);let{addIdentifiers:s,removeIdentifiers:o,scopes:a}=n,{source:l,value:c,key:h,index:d}=r,p={type:11,loc:t.loc,source:l,valueAlias:c,keyAlias:h,objectIndexAlias:d,parseResult:r,children:tx(e)?e.children:[e]};n.replaceNode(p),a.vFor++;let u=i&&i(p);return()=>{a.vFor--,u&&u()}}function nw(e,t){e.finalized||(e.finalized=!0)}function nU({value:e,key:t,index:n},i=[]){var r=[e,t,n,...i];let s=r.length;for(;s--&&!r[s];);return r.slice(0,s+1).map((e,t)=>e||ey("_".repeat(t+1),!1))}let nF=ey("undefined",!1),nB=(e,t)=>{if(1===e.type&&(1===e.tagType||3===e.tagType)){let n=ty(e,"slot");if(n)return n.exp,t.scopes.vSlot++,()=>{t.scopes.vSlot--}}},n$=(e,t)=>{let n;if(tx(e)&&e.props.some(tR)&&(n=ty(e,"for"))){let e=n.forParseResult;if(e){nw(e);let{value:n,key:i,index:r}=e,{addIdentifiers:s,removeIdentifiers:o}=t;return n&&s(n),i&&s(i),r&&s(r),()=>{n&&o(n),i&&o(i),r&&o(r)}}}},nH=(e,t,n,i)=>eb(e,n,!1,!0,n.length?n[0].loc:i);function nG(e,t,n=nH){t.helper(eo);let{children:i,loc:r}=e,s=[],o=[],a=t.scopes.vSlot>0||t.scopes.vFor>0,l=ty(e,"slot",!0);if(l){let{arg:e,exp:t}=l;e&&!ts(e)&&(a=!0),s.push(eI(e||ey("default",!0),n(t,void 0,i,r)))}let c=!1,h=!1,d=[],p=new Set,u=0;for(let e=0;e<i.length;e++){let r,f,E,_,m=i[e];if(!tx(m)||!(r=ty(m,"slot",!0))){3!==m.type&&d.push(m);continue}if(l){t.onError(e1(37,r.loc));break}c=!0;let{children:S,loc:g}=m,{arg:T=ey("default",!0),exp:N,loc:I}=r;ts(T)?f=T?T.content:"default":a=!0;let y=ty(m,"for"),O=n(N,y,S,g);if(E=ty(m,"if"))a=!0,o.push(ev(E.exp,nq(T,O,u++),nF));else if(_=ty(m,/^else(-if)?$/,!0)){let n,r=e;for(;r--&&!(3!==(n=i[r]).type&&nJ(n)););if(n&&tx(n)&&ty(n,/^(else-)?if$/)){let e=o[o.length-1];for(;19===e.alternate.type;)e=e.alternate;e.alternate=_.exp?ev(_.exp,nq(T,O,u++),nF):nq(T,O,u++)}else t.onError(e1(30,_.loc))}else if(y){a=!0;let e=y.forParseResult;e?(nw(e),o.push(eC(t.helper(G),[e.source,eb(nU(e),nq(T,O),!0)]))):t.onError(e1(32,y.loc))}else{if(f){if(p.has(f)){t.onError(e1(38,I));continue}p.add(f),"default"===f&&(h=!0)}s.push(eI(T,O))}}if(!l){let e=(e,i)=>{let s=n(e,void 0,i,r);return t.compatConfig&&(s.isNonScopedSlot=!0),eI("default",s)};c?d.length&&d.some(e=>nJ(e))&&(h?t.onError(e1(39,d[0].loc)):s.push(e(void 0,d))):s.push(e(void 0,i))}let f=a?2:!function e(t){for(let n=0;n<t.length;n++){let i=t[n];switch(i.type){case 1:if(2===i.tagType||e(i.children))return!0;break;case 9:if(e(i.branches))return!0;break;case 10:case 11:if(e(i.children))return!0}}return!1}(e.children)?1:3,E=eN(s.concat(eI("_",ey(f+"",!1))),r);return o.length&&(E=eC(t.helper(J),[E,eT(o)])),{slots:E,hasDynamicSlots:a}}function nq(e,t,n){let i=[eI("name",e),eI("fn",t)];return null!=n&&i.push(eI("key",ey(String(n),!0))),eN(i)}function nJ(e){return 2!==e.type&&12!==e.type||(2===e.type?!!e.content.trim():nJ(e.content))}let nj=new WeakMap,nW=(e,t)=>function(){let n,i,r,s,o;if(1!==(e=t.currentNode).type||0!==e.tagType&&1!==e.tagType)return;let{tag:a,props:l}=e,c=1===e.tagType,d=c?nK(e,t):`"${a}"`,p=h(d)&&d.callee===F,u=0,f=p||d===b||d===v||!c&&("svg"===a||"foreignObject"===a||"math"===a);if(l.length>0){let i=nY(e,t,void 0,c,p);n=i.props,u=i.patchFlag,s=i.dynamicPropNames;let r=i.directives;o=r&&r.length?eT(r.map(e=>nz(e,t))):void 0,i.shouldUseBlock&&(f=!0)}if(e.children.length>0)if(d===R&&(f=!0,u|=1024),c&&d!==b&&d!==R){let{slots:n,hasDynamicSlots:r}=nG(e,t);i=n,r&&(u|=1024)}else if(1===e.children.length&&d!==b){let n=e.children[0],r=n.type,s=5===r||8===r;s&&0===nl(n,t)&&(u|=1),i=s||2===r?n:e.children}else i=e.children;s&&s.length&&(r=function(e){let t="[";for(let n=0,i=e.length;n<i;n++)t+=JSON.stringify(e[n]),n<i-1&&(t+=", ");return t+"]"}(s)),e.codegenNode=eg(t,d,n,i,0===u?void 0:u,r,o,!!f,!1,c,e.loc)};function nK(e,t,n=!1){let{tag:i}=e,r=nZ(i),s=tO(e,"is",!1,!0);if(s)if(r||eK("COMPILER_IS_ON_ELEMENT",t)){let e;if(6===s.type?e=s.value&&ey(s.value.content,!0):(e=s.exp)||(e=ey("is",!1,s.arg.loc)),e)return eC(t.helper(F),[e])}else 6===s.type&&s.value.content.startsWith("vue:")&&(i=s.value.content.slice(4));let o=to(i)||t.isBuiltInComponent(i);return o?(n||t.helper(o),o):(t.helper(U),t.components.add(i),tV(i,"component"))}function nY(e,t,n=e.props,i,r,o=!1){let a,{tag:l,loc:h,children:u}=e,f=[],E=[],_=[],m=u.length>0,S=!1,g=0,T=!1,N=!1,I=!1,y=!1,O=!1,A=!1,C=[],b=e=>{f.length&&(E.push(eN(nQ(f),h)),f=[]),e&&E.push(e)},v=()=>{t.scopes.vFor>0&&f.push(eI(ey("ref_for",!0),ey("true")))},R=({key:e,value:n})=>{if(ts(e)){let o=e.content,a=s(o);a&&(!i||r)&&"onclick"!==o.toLowerCase()&&"onUpdate:modelValue"!==o&&!d(o)&&(y=!0),a&&d(o)&&(A=!0),a&&14===n.type&&(n=n.arguments[0]),20===n.type||(4===n.type||8===n.type)&&nl(n,t)>0||("ref"===o?T=!0:"class"===o?N=!0:"style"===o?I=!0:"key"===o||C.includes(o)||C.push(o),i&&("class"===o||"style"===o)&&!C.includes(o)&&C.push(o))}else O=!0};for(let r=0;r<n.length;r++){let s=n[r];if(6===s.type){let{loc:e,name:n,nameLoc:i,value:r}=s;if("ref"===n&&(T=!0,v()),"is"===n&&(nZ(l)||r&&r.content.startsWith("vue:")||eK("COMPILER_IS_ON_ELEMENT",t)))continue;f.push(eI(ey(n,!0,i),ey(r?r.content:"",!0,r?r.loc:e)))}else{let{name:n,arg:r,exp:a,loc:d,modifiers:u}=s,T="bind"===n,N="on"===n;if("slot"===n){i||t.onError(e1(40,d));continue}if("once"===n||"memo"===n||"is"===n||T&&tA(r,"is")&&(nZ(l)||eK("COMPILER_IS_ON_ELEMENT",t))||N&&o)continue;if((T&&tA(r,"key")||N&&m&&tA(r,"vue:before-update"))&&(S=!0),T&&tA(r,"ref")&&v(),!r&&(T||N)){if(O=!0,a)if(T){if(b(),eK("COMPILER_V_BIND_OBJECT_ORDER",t)){E.unshift(a);continue}v(),b(),E.push(a)}else b({type:14,loc:d,callee:t.helper(Z),arguments:i?[a]:[a,"true"]});else t.onError(e1(T?34:35,d));continue}T&&u.some(e=>"prop"===e.content)&&(g|=32);let I=t.directiveTransforms[n];if(I){let{props:n,needRuntime:i}=I(s,e,t);o||n.forEach(R),N&&r&&!ts(r)?b(eN(n,h)):f.push(...n),i&&(_.push(s),c(i)&&nj.set(s,i))}else!p(n)&&(_.push(s),m&&(S=!0))}}if(E.length?(b(),a=E.length>1?eC(t.helper(W),E,h):E[0]):f.length&&(a=eN(nQ(f),h)),O?g|=16:(N&&!i&&(g|=2),I&&!i&&(g|=4),C.length&&(g|=8),y&&(g|=32)),!S&&(0===g||32===g)&&(T||A||_.length>0)&&(g|=512),!t.inSSR&&a)switch(a.type){case 15:let x=-1,L=-1,M=!1;for(let e=0;e<a.properties.length;e++){let t=a.properties[e].key;ts(t)?"class"===t.content?x=e:"style"===t.content&&(L=e):t.isHandlerKey||(M=!0)}let P=a.properties[x],D=a.properties[L];M?a=eC(t.helper(Q),[a]):(P&&!ts(P.value)&&(P.value=eC(t.helper(K),[P.value])),D&&(I||4===D.value.type&&"["===D.value.content.trim()[0]||17===D.value.type)&&(D.value=eC(t.helper(Y),[D.value])));break;case 14:break;default:a=eC(t.helper(Q),[eC(t.helper(z),[a])])}return{props:a,directives:_,patchFlag:g,dynamicPropNames:C,shouldUseBlock:S}}function nQ(e){let t=new Map,n=[];for(let o=0;o<e.length;o++){var i,r;let a=e[o];if(8===a.key.type||!a.key.isStatic){n.push(a);continue}let l=a.key.content,c=t.get(l);c?("style"===l||"class"===l||s(l))&&(i=c,r=a,17===i.value.type?i.value.elements.push(r.value):i.value=eT([i.value,r.value],i.loc)):(t.set(l,a),n.push(a))}return n}function nz(e,t){let n=[],i=nj.get(e);i?n.push(t.helperString(i)):(t.helper(B),t.directives.add(e.name),n.push(tV(e.name,"directive")));let{loc:r}=e;if(e.exp&&n.push(e.exp),e.arg&&(e.exp||n.push("void 0"),n.push(e.arg)),Object.keys(e.modifiers).length){e.arg||(e.exp||n.push("void 0"),n.push("void 0"));let t=ey("true",!1,r);n.push(eN(e.modifiers.map(e=>eI(e,t)),r))}return eT(n,e.loc)}function nZ(e){return"component"===e||"Component"===e}let n1=(e,t)=>{if(tL(e)){let{children:n,loc:i}=e,{slotName:r,slotProps:s}=n0(e,t),o=[t.prefixIdentifiers?"_ctx.$slots":"$slots",r,"{}","undefined","true"],a=2;s&&(o[2]=s,a=3),n.length&&(o[3]=eb([],n,!1,!1,i),a=4),t.scopeId&&!t.slotted&&(a=5),o.splice(a),e.codegenNode=eC(t.helper(q),o,i)}};function n0(e,t){let n,i='"default"',r=[];for(let t=0;t<e.props.length;t++){let n=e.props[t];if(6===n.type)n.value&&("name"===n.name?i=JSON.stringify(n.value.content):(n.name=E(n.name),r.push(n)));else if("bind"===n.name&&tA(n.arg,"name")){if(n.exp)i=n.exp;else if(n.arg&&4===n.arg.type){let e=E(n.arg.content);i=n.exp=ey(e,!1,n.arg.loc)}}else"bind"===n.name&&n.arg&&ts(n.arg)&&(n.arg.content=E(n.arg.content)),r.push(n)}if(r.length>0){let{props:i,directives:s}=nY(e,t,r,!1,!1);n=i,s.length&&t.onError(e1(36,s[0].loc))}return{slotName:i,slotProps:n}}let n2=(e,t,n,i)=>{let r,{loc:s,modifiers:o,arg:a}=e;if(!e.exp&&!o.length,4===a.type)if(a.isStatic){let e=a.content;e.startsWith("vue:")&&(e=`vnode-${e.slice(4)}`),r=ey(0!==t.tagType||e.startsWith("vnode")||!/[A-Z]/.test(e)?m(E(e)):`on:${e}`,!0,a.loc)}else r=eA([`${n.helperString(en)}(`,a,")"]);else(r=a).children.unshift(`${n.helperString(en)}(`),r.children.push(")");let l=e.exp;l&&!l.content.trim()&&(l=void 0);let c=n.cacheHandlers&&!l&&!n.inVOnce;if(l){let e=tE(l),t=!(e||tg(l)),n=l.content.includes(";");(t||c&&e)&&(l=eA([`${t?"$event":"(...args)"} => ${n?"{":"("}`,l,n?"}":")"]))}let h={props:[eI(r,l||ey("() => {}",!1,s))]};return i&&(h=i(h)),c&&(h.props[0].value=n.cache(h.props[0].value)),h.props.forEach(e=>e.key.isHandlerKey=!0),h},n3=(e,t)=>{if(0===e.type||1===e.type||11===e.type||10===e.type)return()=>{let n,i=e.children,r=!1;for(let e=0;e<i.length;e++){let t=i[e];if(tb(t)){r=!0;for(let r=e+1;r<i.length;r++){let s=i[r];if(tb(s))n||(n=i[e]=eA([t],t.loc)),n.children.push(" + ",s),i.splice(r,1),r--;else{n=void 0;break}}}}if(r&&(1!==i.length||0!==e.type&&(1!==e.type||0!==e.tagType||e.props.find(e=>7===e.type&&!t.directiveTransforms[e.name])||"template"===e.tag)))for(let e=0;e<i.length;e++){let n=i[e];if(tb(n)||8===n.type){let r=[];(2!==n.type||" "!==n.content)&&r.push(n),t.ssr||0!==nl(n,t)||r.push("1"),i[e]={type:12,content:n,loc:n.loc,codegenNode:eC(t.helper(X),r)}}}}},n4=new WeakSet,n6=(e,t)=>{if(1===e.type&&ty(e,"once",!0)&&!n4.has(e)&&!t.inVOnce&&!t.inSSR)return n4.add(e),t.inVOnce=!0,t.helper(ei),()=>{t.inVOnce=!1;let e=t.currentNode;e.codegenNode&&(e.codegenNode=t.cache(e.codegenNode,!0,!0))}},n5=(e,t,n)=>{let i,{exp:r,arg:s}=e;if(!r)return n.onError(e1(41,e.loc)),n9();let o=r.loc.source.trim(),a=4===r.type?r.content:o,l=n.bindingMetadata[o];if("props"===l||"props-aliased"===l)return r.loc,n9();if(!a.trim()||!tE(r))return n.onError(e1(42,r.loc)),n9();let c=s||ey("modelValue",!0),h=s?ts(s)?`onUpdate:${E(s.content)}`:eA(['"onUpdate:" + ',s]):"onUpdate:modelValue",d=n.isTS?"($event: any)":"$event";i=eA([`${d} => ((`,r,") = $event)"]);let p=[eI(c,e.exp),eI(h,i)];if(e.modifiers.length&&1===t.tagType){let t=e.modifiers.map(e=>e.content).map(e=>(tl(e)?e:JSON.stringify(e))+": true").join(", "),n=s?ts(s)?`${s.content}Modifiers`:eA([s,' + "Modifiers"']):"modelModifiers";p.push(eI(n,ey(`{ ${t} }`,!1,e.loc,2)))}return n9(p)};function n9(e=[]){return{props:e}}let n7=/[\w).+\-_$\]]/,n8=(e,t)=>{eK("COMPILER_FILTERS",t)&&(5===e.type?ie(e.content,t):1===e.type&&e.props.forEach(e=>{7===e.type&&"for"!==e.name&&e.exp&&ie(e.exp,t)}))};function ie(e,t){if(4===e.type)it(e,t);else for(let n=0;n<e.children.length;n++){let i=e.children[n];"object"==typeof i&&(4===i.type?it(i,t):8===i.type?ie(e,t):5===i.type&&ie(i.content,t))}}function it(e,t){let n=e.content,i=!1,r=!1,s=!1,o=!1,a=0,l=0,c=0,h=0,d,p,u,f,E=[];for(u=0;u<n.length;u++)if(p=d,d=n.charCodeAt(u),i)39===d&&92!==p&&(i=!1);else if(r)34===d&&92!==p&&(r=!1);else if(s)96===d&&92!==p&&(s=!1);else if(o)47===d&&92!==p&&(o=!1);else if(124!==d||124===n.charCodeAt(u+1)||124===n.charCodeAt(u-1)||a||l||c){switch(d){case 34:r=!0;break;case 39:i=!0;break;case 96:s=!0;break;case 40:c++;break;case 41:c--;break;case 91:l++;break;case 93:l--;break;case 123:a++;break;case 125:a--}if(47===d){let e,t=u-1;for(;t>=0&&" "===(e=n.charAt(t));t--);e&&n7.test(e)||(o=!0)}}else void 0===f?(h=u+1,f=n.slice(0,u).trim()):_();function _(){E.push(n.slice(h,u).trim()),h=u+1}if(void 0===f?f=n.slice(0,u).trim():0!==h&&_(),E.length){for(u=0;u<E.length;u++)f=function(e,t,n){n.helper($);let i=t.indexOf("(");if(i<0)return n.filters.add(t),`${tV(t,"filter")}(${e})`;{let r=t.slice(0,i),s=t.slice(i+1);return n.filters.add(r),`${tV(r,"filter")}(${e}${")"!==s?","+s:s}`}}(f,E[u],t);e.content=f,e.ast=void 0}}let ii=new WeakSet,ir=(e,t)=>{if(1===e.type){let n=ty(e,"memo");if(!(!n||ii.has(e)))return ii.add(e),()=>{let i=e.codegenNode||t.currentNode.codegenNode;i&&13===i.type&&(1!==e.tagType&&ew(i,t),e.codegenNode=eC(t.helper(ec),[n.exp,eb(void 0,i),"_cache",String(t.cached.length)]),t.cached.push(null))}}};function is(e){return[[n6,nv,ir,nk,n8,n1,nW,nB,n3],{on:n2,bind:nP,model:n5}]}function io(e,t={}){let n=t.onError||ez,i="module"===t.mode;!0===t.prefixIdentifiers?n(e1(47)):i&&n(e1(48)),t.cacheHandlers&&n(e1(49)),t.scopeId&&!i&&n(e1(50));let r=o({},t,{prefixIdentifiers:!1}),s=l(e)?no(e,r):e,[a,c]=is();return nu(s,o({},r,{nodeTransforms:[...a,...t.nodeTransforms||[]],directiveTransforms:o({},c,t.directiveTransforms||{})})),nS(s,r)}let ia={DATA:"data",PROPS:"props",PROPS_ALIASED:"props-aliased",SETUP_LET:"setup-let",SETUP_CONST:"setup-const",SETUP_REACTIVE_CONST:"setup-reactive-const",SETUP_MAYBE_REF:"setup-maybe-ref",SETUP_REF:"setup-ref",OPTIONS:"options",LITERAL_CONST:"literal-const"},il=()=>({props:[]}),ic=Symbol(""),ih=Symbol(""),id=Symbol(""),ip=Symbol(""),iu=Symbol(""),iE=Symbol(""),i_=Symbol(""),im=Symbol(""),iS=Symbol(""),ig=Symbol("");ep({[ic]:"vModelRadio",[ih]:"vModelCheckbox",[id]:"vModelText",[ip]:"vModelSelect",[iu]:"vModelDynamic",[iE]:"withModifiers",[i_]:"withKeys",[im]:"vShow",[iS]:"Transition",[ig]:"TransitionGroup"});let iT={parseMode:"html",isVoidTag:A,isNativeTag:e=>I(e)||y(e)||O(e),isPreTag:e=>"pre"===e,isIgnoreNewlineTag:e=>"pre"===e||"textarea"===e,decodeEntities:function(t,n=!1){return(e||(e=document.createElement("div")),n)?(e.innerHTML=`<div foo="${t.replace(/"/g,""")}">`,e.children[0].getAttribute("foo")):(e.innerHTML=t,e.textContent)},isBuiltInComponent:e=>"Transition"===e||"transition"===e?iS:"TransitionGroup"===e||"transition-group"===e?ig:void 0,getNamespace(e,t,n){let i=t?t.ns:n;if(t&&2===i)if("annotation-xml"===t.tag){if("svg"===e)return 1;t.props.some(e=>6===e.type&&"encoding"===e.name&&null!=e.value&&("text/html"===e.value.content||"application/xhtml+xml"===e.value.content))&&(i=0)}else/^m(?:[ions]|text)$/.test(t.tag)&&"mglyph"!==e&&"malignmark"!==e&&(i=0);else t&&1===i&&("foreignObject"===t.tag||"desc"===t.tag||"title"===t.tag)&&(i=0);if(0===i){if("svg"===e)return 1;if("math"===e)return 2}return i}},iN=e=>{1===e.type&&e.props.forEach((t,n)=>{6===t.type&&"style"===t.name&&t.value&&(e.props[n]={type:7,name:"bind",arg:ey("style",!0,t.loc),exp:iI(t.value.content,t.loc),modifiers:[],loc:t.loc})})},iI=(e,t)=>ey(JSON.stringify(function(e){let t={};return e.replace(N,"").split(g).forEach(e=>{if(e){let n=e.split(T);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}(e)),!1,t,3);function iy(e,t){return e1(e,t)}let iO={X_V_HTML_NO_EXPRESSION:53,53:"X_V_HTML_NO_EXPRESSION",X_V_HTML_WITH_CHILDREN:54,54:"X_V_HTML_WITH_CHILDREN",X_V_TEXT_NO_EXPRESSION:55,55:"X_V_TEXT_NO_EXPRESSION",X_V_TEXT_WITH_CHILDREN:56,56:"X_V_TEXT_WITH_CHILDREN",X_V_MODEL_ON_INVALID_ELEMENT:57,57:"X_V_MODEL_ON_INVALID_ELEMENT",X_V_MODEL_ARG_ON_ELEMENT:58,58:"X_V_MODEL_ARG_ON_ELEMENT",X_V_MODEL_ON_FILE_INPUT_ELEMENT:59,59:"X_V_MODEL_ON_FILE_INPUT_ELEMENT",X_V_MODEL_UNNECESSARY_VALUE:60,60:"X_V_MODEL_UNNECESSARY_VALUE",X_V_SHOW_NO_EXPRESSION:61,61:"X_V_SHOW_NO_EXPRESSION",X_TRANSITION_INVALID_CHILDREN:62,62:"X_TRANSITION_INVALID_CHILDREN",X_IGNORED_SIDE_EFFECT_TAG:63,63:"X_IGNORED_SIDE_EFFECT_TAG",__EXTEND_POINT__:64,64:"__EXTEND_POINT__"},iA={53:"v-html is missing expression.",54:"v-html will override element children.",55:"v-text is missing expression.",56:"v-text will override element children.",57:"v-model can only be used on <input>, <textarea> and <select> elements.",58:"v-model argument is not supported on plain elements.",59:"v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.",60:"Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.",61:"v-show is missing expression.",62:"<Transition> expects exactly one child element or component.",63:"Tags with side effect (<script> and <style>) are ignored in client component templates."},iC=t("passive,once,capture"),ib=t("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),iv=t("left,right"),iR=t("onkeyup,onkeydown,onkeypress"),ix=(e,t)=>ts(e)&&"onclick"===e.content.toLowerCase()?ey(t,!0):4!==e.type?eA(["(",e,`) === "onClick" ? "${t}" : (`,e,")"]):e,iL=(e,t)=>{1===e.type&&0===e.tagType&&("script"===e.tag||"style"===e.tag)&&t.removeNode()},iM=[iN],iP={cloak:il,html:(e,t,n)=>{let{exp:i,loc:r}=e;return i||n.onError(iy(53,r)),t.children.length&&(n.onError(iy(54,r)),t.children.length=0),{props:[eI(ey("innerHTML",!0,r),i||ey("",!0))]}},text:(e,t,n)=>{let{exp:i,loc:r}=e;return i||n.onError(iy(55,r)),t.children.length&&(n.onError(iy(56,r)),t.children.length=0),{props:[eI(ey("textContent",!0),i?nl(i,n)>0?i:eC(n.helperString(j),[i],r):ey("",!0))]}},model:(e,t,n)=>{let i=n5(e,t,n);if(!i.props.length||1===t.tagType)return i;e.arg&&n.onError(iy(58,e.arg.loc));let{tag:r}=t,s=n.isCustomElement(r);if("input"===r||"textarea"===r||"select"===r||s){let o=id,a=!1;if("input"===r||s){let i=tO(t,"type");if(i){if(7===i.type)o=iu;else if(i.value)switch(i.value.content){case"radio":o=ic;break;case"checkbox":o=ih;break;case"file":a=!0,n.onError(iy(59,e.loc))}}else tC(t)&&(o=iu)}else"select"===r&&(o=ip);a||(i.needRuntime=n.helper(o))}else n.onError(iy(57,e.loc));return i.props=i.props.filter(e=>4!==e.key.type||"modelValue"!==e.key.content),i},on:(e,t,n)=>n2(e,t,n,t=>{let{modifiers:i}=e;if(!i.length)return t;let{key:r,value:s}=t.props[0],{keyModifiers:o,nonKeyModifiers:a,eventOptionModifiers:l}=((e,t,n,i)=>{let r=[],s=[],o=[];for(let i=0;i<t.length;i++){let a=t[i].content;"native"===a&&eY("COMPILER_V_ON_NATIVE",n)||iC(a)?o.push(a):iv(a)?ts(e)?iR(e.content.toLowerCase())?r.push(a):s.push(a):(r.push(a),s.push(a)):ib(a)?s.push(a):r.push(a)}return{keyModifiers:r,nonKeyModifiers:s,eventOptionModifiers:o}})(r,i,n,e.loc);if(a.includes("right")&&(r=ix(r,"onContextmenu")),a.includes("middle")&&(r=ix(r,"onMouseup")),a.length&&(s=eC(n.helper(iE),[s,JSON.stringify(a)])),o.length&&(!ts(r)||iR(r.content.toLowerCase()))&&(s=eC(n.helper(i_),[s,JSON.stringify(o)])),l.length){let e=l.map(_).join("");r=ts(r)?ey(`${r.content}${e}`,!0):eA(["(",r,`) + "${e}"`])}return{props:[eI(r,s)]}}),show:(e,t,n)=>{let{exp:i,loc:r}=e;return i||n.onError(iy(61,r)),{props:[],needRuntime:n.helper(im)}}};function iD(e,t={}){return io(e,o({},iT,t,{nodeTransforms:[iL,...iM,...t.nodeTransforms||[]],directiveTransforms:o({},iP,t.directiveTransforms||{}),transformHoist:null}))}function iV(e,t={}){return no(e,o({},iT,t))}export{x as BASE_TRANSITION,ia as BindingTypes,ee as CAMELIZE,et as CAPITALIZE,M as CREATE_BLOCK,k as CREATE_COMMENT,P as CREATE_ELEMENT_BLOCK,V as CREATE_ELEMENT_VNODE,J as CREATE_SLOTS,w as CREATE_STATIC,X as CREATE_TEXT,D as CREATE_VNODE,eJ as CompilerDeprecationTypes,e_ as ConstantTypes,iP as DOMDirectiveTransforms,iO as DOMErrorCodes,iA as DOMErrorMessages,iM as DOMNodeTransforms,eE as ElementTypes,e0 as ErrorCodes,C as FRAGMENT,z as GUARD_REACTIVE_PROPS,eh as IS_MEMO_SAME,el as IS_REF,R as KEEP_ALIVE,W as MERGE_PROPS,K as NORMALIZE_CLASS,Q as NORMALIZE_PROPS,Y as NORMALIZE_STYLE,eu as Namespaces,ef as NodeTypes,L as OPEN_BLOCK,es as POP_SCOPE_ID,er as PUSH_SCOPE_ID,G as RENDER_LIST,q as RENDER_SLOT,U as RESOLVE_COMPONENT,B as RESOLVE_DIRECTIVE,F as RESOLVE_DYNAMIC_COMPONENT,$ as RESOLVE_FILTER,ei as SET_BLOCK_TRACKING,v as SUSPENSE,b as TELEPORT,j as TO_DISPLAY_STRING,Z as TO_HANDLERS,en as TO_HANDLER_KEY,iS as TRANSITION,ig as TRANSITION_GROUP,ti as TS_NODE_TYPES,ea as UNREF,ih as V_MODEL_CHECKBOX,iu as V_MODEL_DYNAMIC,ic as V_MODEL_RADIO,ip as V_MODEL_SELECT,id as V_MODEL_TEXT,i_ as V_ON_WITH_KEYS,iE as V_ON_WITH_MODIFIERS,im as V_SHOW,eo as WITH_CTX,H as WITH_DIRECTIVES,ec as WITH_MEMO,tT as advancePositionWithClone,tN as advancePositionWithMutation,tI as assert,io as baseCompile,no as baseParse,nz as buildDirectiveArgs,nY as buildProps,nG as buildSlots,eY as checkCompatEnabled,iD as compile,ew as convertToBlock,eT as createArrayExpression,eP as createAssignmentExpression,ex as createBlockStatement,eR as createCacheExpression,eC as createCallExpression,e1 as createCompilerError,eA as createCompoundExpression,ev as createConditionalExpression,iy as createDOMCompilerError,nU as createForLoopParams,eb as createFunctionExpression,eM as createIfStatement,eO as createInterpolation,eN as createObjectExpression,eI as createObjectProperty,eV as createReturnStatement,eS as createRoot,eD as createSequenceExpression,ey as createSimpleExpression,nE as createStructuralDirectiveTransform,eL as createTemplateLiteral,np as createTransformContext,eg as createVNodeCall,e2 as errorMessages,e8 as extractIdentifiers,ty as findDir,tO as findProp,tw as forAliasRE,nS as generate,S as generateCodeFrame,is as getBaseTransformPreset,nl as getConstantType,tX as getMemoedVNodeCall,eX as getVNodeBlockHelper,ek as getVNodeHelper,tC as hasDynamicKeyVBind,tk as hasScopeRef,ed as helperNameMap,tP as injectProp,to as isCoreComponent,tg as isFnExpression,tm as isFnExpressionBrowser,tS as isFnExpressionNode,te as isFunctionType,e6 as isInDestructureAssignment,e5 as isInNewExpression,tE as isMemberExpression,tu as isMemberExpressionBrowser,tf as isMemberExpressionNode,e4 as isReferencedIdentifier,tl as isSimpleIdentifier,tL as isSlotOutlet,tA as isStaticArgOf,ts as isStaticExp,tt as isStaticProperty,tn as isStaticPropertyKey,tx as isTemplateNode,tb as isText,tv as isVPre,tR as isVSlot,em as locStub,il as noopDirectiveTransform,iV as parse,iT as parserOptions,nC as processExpression,nX as processFor,nR as processIf,n0 as processSlotOutlet,ep as registerRuntimeHelpers,nK as resolveComponentType,nb as stringifyExpression,tV as toValidAssetId,nB as trackSlotScopes,n$ as trackVForSlotScopes,nu as transform,nP as transformBind,nW as transformElement,nA as transformExpression,n5 as transformModel,n2 as transformOn,iN as transformStyle,nf as traverseNode,tr as unwrapTSNode,e7 as walkBlockDeclarations,e9 as walkFunctionParams,e3 as walkIdentifiers,eQ as warnDeprecation}; diff --git a/node_modules/@vue/compiler-dom/dist/compiler-dom.esm-bundler.js b/node_modules/@vue/compiler-dom/dist/compiler-dom.esm-bundler.js new file mode 100644 index 0000000..ae2f3cb --- /dev/null +++ b/node_modules/@vue/compiler-dom/dist/compiler-dom.esm-bundler.js @@ -0,0 +1,690 @@ +/** +* @vue/compiler-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +import { registerRuntimeHelpers, createSimpleExpression, createCompilerError, createObjectProperty, createCallExpression, getConstantType, TO_DISPLAY_STRING, transformModel as transformModel$1, findProp, hasDynamicKeyVBind, findDir, isStaticArgOf, transformOn as transformOn$1, isStaticExp, createCompoundExpression, checkCompatEnabled, noopDirectiveTransform, baseCompile, baseParse } from '@vue/compiler-core'; +export * from '@vue/compiler-core'; +import { isHTMLTag, isSVGTag, isMathMLTag, isVoidTag, parseStringStyle, makeMap, capitalize, extend } from '@vue/shared'; + +const V_MODEL_RADIO = Symbol(!!(process.env.NODE_ENV !== "production") ? `vModelRadio` : ``); +const V_MODEL_CHECKBOX = Symbol( + !!(process.env.NODE_ENV !== "production") ? `vModelCheckbox` : `` +); +const V_MODEL_TEXT = Symbol(!!(process.env.NODE_ENV !== "production") ? `vModelText` : ``); +const V_MODEL_SELECT = Symbol( + !!(process.env.NODE_ENV !== "production") ? `vModelSelect` : `` +); +const V_MODEL_DYNAMIC = Symbol( + !!(process.env.NODE_ENV !== "production") ? `vModelDynamic` : `` +); +const V_ON_WITH_MODIFIERS = Symbol( + !!(process.env.NODE_ENV !== "production") ? `vOnModifiersGuard` : `` +); +const V_ON_WITH_KEYS = Symbol( + !!(process.env.NODE_ENV !== "production") ? `vOnKeysGuard` : `` +); +const V_SHOW = Symbol(!!(process.env.NODE_ENV !== "production") ? `vShow` : ``); +const TRANSITION = Symbol(!!(process.env.NODE_ENV !== "production") ? `Transition` : ``); +const TRANSITION_GROUP = Symbol( + !!(process.env.NODE_ENV !== "production") ? `TransitionGroup` : `` +); +registerRuntimeHelpers({ + [V_MODEL_RADIO]: `vModelRadio`, + [V_MODEL_CHECKBOX]: `vModelCheckbox`, + [V_MODEL_TEXT]: `vModelText`, + [V_MODEL_SELECT]: `vModelSelect`, + [V_MODEL_DYNAMIC]: `vModelDynamic`, + [V_ON_WITH_MODIFIERS]: `withModifiers`, + [V_ON_WITH_KEYS]: `withKeys`, + [V_SHOW]: `vShow`, + [TRANSITION]: `Transition`, + [TRANSITION_GROUP]: `TransitionGroup` +}); + +let decoder; +function decodeHtmlBrowser(raw, asAttr = false) { + if (!decoder) { + decoder = document.createElement("div"); + } + if (asAttr) { + decoder.innerHTML = `<div foo="${raw.replace(/"/g, """)}">`; + return decoder.children[0].getAttribute("foo"); + } else { + decoder.innerHTML = raw; + return decoder.textContent; + } +} + +const parserOptions = { + parseMode: "html", + isVoidTag, + isNativeTag: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag), + isPreTag: (tag) => tag === "pre", + isIgnoreNewlineTag: (tag) => tag === "pre" || tag === "textarea", + decodeEntities: decodeHtmlBrowser , + isBuiltInComponent: (tag) => { + if (tag === "Transition" || tag === "transition") { + return TRANSITION; + } else if (tag === "TransitionGroup" || tag === "transition-group") { + return TRANSITION_GROUP; + } + }, + // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher + getNamespace(tag, parent, rootNamespace) { + let ns = parent ? parent.ns : rootNamespace; + if (parent && ns === 2) { + if (parent.tag === "annotation-xml") { + if (tag === "svg") { + return 1; + } + if (parent.props.some( + (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml") + )) { + ns = 0; + } + } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") { + ns = 0; + } + } else if (parent && ns === 1) { + if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") { + ns = 0; + } + } + if (ns === 0) { + if (tag === "svg") { + return 1; + } + if (tag === "math") { + return 2; + } + } + return ns; + } +}; + +const transformStyle = (node) => { + if (node.type === 1) { + node.props.forEach((p, i) => { + if (p.type === 6 && p.name === "style" && p.value) { + node.props[i] = { + type: 7, + name: `bind`, + arg: createSimpleExpression(`style`, true, p.loc), + exp: parseInlineCSS(p.value.content, p.loc), + modifiers: [], + loc: p.loc + }; + } + }); + } +}; +const parseInlineCSS = (cssText, loc) => { + const normalized = parseStringStyle(cssText); + return createSimpleExpression( + JSON.stringify(normalized), + false, + loc, + 3 + ); +}; + +function createDOMCompilerError(code, loc) { + return createCompilerError( + code, + loc, + !!(process.env.NODE_ENV !== "production") || false ? DOMErrorMessages : void 0 + ); +} +const DOMErrorCodes = { + "X_V_HTML_NO_EXPRESSION": 53, + "53": "X_V_HTML_NO_EXPRESSION", + "X_V_HTML_WITH_CHILDREN": 54, + "54": "X_V_HTML_WITH_CHILDREN", + "X_V_TEXT_NO_EXPRESSION": 55, + "55": "X_V_TEXT_NO_EXPRESSION", + "X_V_TEXT_WITH_CHILDREN": 56, + "56": "X_V_TEXT_WITH_CHILDREN", + "X_V_MODEL_ON_INVALID_ELEMENT": 57, + "57": "X_V_MODEL_ON_INVALID_ELEMENT", + "X_V_MODEL_ARG_ON_ELEMENT": 58, + "58": "X_V_MODEL_ARG_ON_ELEMENT", + "X_V_MODEL_ON_FILE_INPUT_ELEMENT": 59, + "59": "X_V_MODEL_ON_FILE_INPUT_ELEMENT", + "X_V_MODEL_UNNECESSARY_VALUE": 60, + "60": "X_V_MODEL_UNNECESSARY_VALUE", + "X_V_SHOW_NO_EXPRESSION": 61, + "61": "X_V_SHOW_NO_EXPRESSION", + "X_TRANSITION_INVALID_CHILDREN": 62, + "62": "X_TRANSITION_INVALID_CHILDREN", + "X_IGNORED_SIDE_EFFECT_TAG": 63, + "63": "X_IGNORED_SIDE_EFFECT_TAG", + "__EXTEND_POINT__": 64, + "64": "__EXTEND_POINT__" +}; +const DOMErrorMessages = { + [53]: `v-html is missing expression.`, + [54]: `v-html will override element children.`, + [55]: `v-text is missing expression.`, + [56]: `v-text will override element children.`, + [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`, + [58]: `v-model argument is not supported on plain elements.`, + [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`, + [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`, + [61]: `v-show is missing expression.`, + [62]: `<Transition> expects exactly one child element or component.`, + [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.` +}; + +const transformVHtml = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(53, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(54, loc) + ); + node.children.length = 0; + } + return { + props: [ + createObjectProperty( + createSimpleExpression(`innerHTML`, true, loc), + exp || createSimpleExpression("", true) + ) + ] + }; +}; + +const transformVText = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(55, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(56, loc) + ); + node.children.length = 0; + } + return { + props: [ + createObjectProperty( + createSimpleExpression(`textContent`, true), + exp ? getConstantType(exp, context) > 0 ? exp : createCallExpression( + context.helperString(TO_DISPLAY_STRING), + [exp], + loc + ) : createSimpleExpression("", true) + ) + ] + }; +}; + +const transformModel = (dir, node, context) => { + const baseResult = transformModel$1(dir, node, context); + if (!baseResult.props.length || node.tagType === 1) { + return baseResult; + } + if (dir.arg) { + context.onError( + createDOMCompilerError( + 58, + dir.arg.loc + ) + ); + } + function checkDuplicatedValue() { + const value = findDir(node, "bind"); + if (value && isStaticArgOf(value.arg, "value")) { + context.onError( + createDOMCompilerError( + 60, + value.loc + ) + ); + } + } + const { tag } = node; + const isCustomElement = context.isCustomElement(tag); + if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) { + let directiveToUse = V_MODEL_TEXT; + let isInvalidType = false; + if (tag === "input" || isCustomElement) { + const type = findProp(node, `type`); + if (type) { + if (type.type === 7) { + directiveToUse = V_MODEL_DYNAMIC; + } else if (type.value) { + switch (type.value.content) { + case "radio": + directiveToUse = V_MODEL_RADIO; + break; + case "checkbox": + directiveToUse = V_MODEL_CHECKBOX; + break; + case "file": + isInvalidType = true; + context.onError( + createDOMCompilerError( + 59, + dir.loc + ) + ); + break; + default: + !!(process.env.NODE_ENV !== "production") && checkDuplicatedValue(); + break; + } + } + } else if (hasDynamicKeyVBind(node)) { + directiveToUse = V_MODEL_DYNAMIC; + } else { + !!(process.env.NODE_ENV !== "production") && checkDuplicatedValue(); + } + } else if (tag === "select") { + directiveToUse = V_MODEL_SELECT; + } else { + !!(process.env.NODE_ENV !== "production") && checkDuplicatedValue(); + } + if (!isInvalidType) { + baseResult.needRuntime = context.helper(directiveToUse); + } + } else { + context.onError( + createDOMCompilerError( + 57, + dir.loc + ) + ); + } + baseResult.props = baseResult.props.filter( + (p) => !(p.key.type === 4 && p.key.content === "modelValue") + ); + return baseResult; +}; + +const isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`); +const isNonKeyModifier = /* @__PURE__ */ makeMap( + // event propagation management + `stop,prevent,self,ctrl,shift,alt,meta,exact,middle` +); +const maybeKeyModifier = /* @__PURE__ */ makeMap("left,right"); +const isKeyboardEvent = /* @__PURE__ */ makeMap(`onkeyup,onkeydown,onkeypress`); +const resolveModifiers = (key, modifiers, context, loc) => { + const keyModifiers = []; + const nonKeyModifiers = []; + const eventOptionModifiers = []; + for (let i = 0; i < modifiers.length; i++) { + const modifier = modifiers[i].content; + if (modifier === "native" && checkCompatEnabled( + "COMPILER_V_ON_NATIVE", + context, + loc + )) { + eventOptionModifiers.push(modifier); + } else if (isEventOptionModifier(modifier)) { + eventOptionModifiers.push(modifier); + } else { + if (maybeKeyModifier(modifier)) { + if (isStaticExp(key)) { + if (isKeyboardEvent(key.content.toLowerCase())) { + keyModifiers.push(modifier); + } else { + nonKeyModifiers.push(modifier); + } + } else { + keyModifiers.push(modifier); + nonKeyModifiers.push(modifier); + } + } else { + if (isNonKeyModifier(modifier)) { + nonKeyModifiers.push(modifier); + } else { + keyModifiers.push(modifier); + } + } + } + } + return { + keyModifiers, + nonKeyModifiers, + eventOptionModifiers + }; +}; +const transformClick = (key, event) => { + const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === "onclick"; + return isStaticClick ? createSimpleExpression(event, true) : key.type !== 4 ? createCompoundExpression([ + `(`, + key, + `) === "onClick" ? "${event}" : (`, + key, + `)` + ]) : key; +}; +const transformOn = (dir, node, context) => { + return transformOn$1(dir, node, context, (baseResult) => { + const { modifiers } = dir; + if (!modifiers.length) return baseResult; + let { key, value: handlerExp } = baseResult.props[0]; + const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); + if (nonKeyModifiers.includes("right")) { + key = transformClick(key, `onContextmenu`); + } + if (nonKeyModifiers.includes("middle")) { + key = transformClick(key, `onMouseup`); + } + if (nonKeyModifiers.length) { + handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ + handlerExp, + JSON.stringify(nonKeyModifiers) + ]); + } + if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard + (!isStaticExp(key) || isKeyboardEvent(key.content.toLowerCase()))) { + handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [ + handlerExp, + JSON.stringify(keyModifiers) + ]); + } + if (eventOptionModifiers.length) { + const modifierPostfix = eventOptionModifiers.map(capitalize).join(""); + key = isStaticExp(key) ? createSimpleExpression(`${key.content}${modifierPostfix}`, true) : createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); + } + return { + props: [createObjectProperty(key, handlerExp)] + }; + }); +}; + +const transformShow = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(61, loc) + ); + } + return { + props: [], + needRuntime: context.helper(V_SHOW) + }; +}; + +const transformTransition = (node, context) => { + if (node.type === 1 && node.tagType === 1) { + const component = context.isBuiltInComponent(node.tag); + if (component === TRANSITION) { + return () => { + if (!node.children.length) { + return; + } + if (hasMultipleChildren(node)) { + context.onError( + createDOMCompilerError( + 62, + { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: "" + } + ) + ); + } + const child = node.children[0]; + if (child.type === 1) { + for (const p of child.props) { + if (p.type === 7 && p.name === "show") { + node.props.push({ + type: 6, + name: "persisted", + nameLoc: node.loc, + value: void 0, + loc: node.loc + }); + } + } + } + }; + } + } +}; +function hasMultipleChildren(node) { + const children = node.children = node.children.filter( + (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim()) + ); + const child = children[0]; + return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren); +} + +const ignoreSideEffectTags = (node, context) => { + if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) { + !!(process.env.NODE_ENV !== "production") && context.onError( + createDOMCompilerError( + 63, + node.loc + ) + ); + context.removeNode(); + } +}; + +function isValidHTMLNesting(parent, child) { + if (parent === "template") { + return true; + } + if (parent in onlyValidChildren) { + return onlyValidChildren[parent].has(child); + } + if (child in onlyValidParents) { + return onlyValidParents[child].has(parent); + } + if (parent in knownInvalidChildren) { + if (knownInvalidChildren[parent].has(child)) return false; + } + if (child in knownInvalidParents) { + if (knownInvalidParents[child].has(parent)) return false; + } + return true; +} +const headings = /* @__PURE__ */ new Set(["h1", "h2", "h3", "h4", "h5", "h6"]); +const emptySet = /* @__PURE__ */ new Set([]); +const onlyValidChildren = { + head: /* @__PURE__ */ new Set([ + "base", + "basefront", + "bgsound", + "link", + "meta", + "title", + "noscript", + "noframes", + "style", + "script", + "template" + ]), + optgroup: /* @__PURE__ */ new Set(["option"]), + select: /* @__PURE__ */ new Set(["optgroup", "option", "hr"]), + // table + table: /* @__PURE__ */ new Set(["caption", "colgroup", "tbody", "tfoot", "thead"]), + tr: /* @__PURE__ */ new Set(["td", "th"]), + colgroup: /* @__PURE__ */ new Set(["col"]), + tbody: /* @__PURE__ */ new Set(["tr"]), + thead: /* @__PURE__ */ new Set(["tr"]), + tfoot: /* @__PURE__ */ new Set(["tr"]), + // these elements can not have any children elements + script: emptySet, + iframe: emptySet, + option: emptySet, + textarea: emptySet, + style: emptySet, + title: emptySet +}; +const onlyValidParents = { + // sections + html: emptySet, + body: /* @__PURE__ */ new Set(["html"]), + head: /* @__PURE__ */ new Set(["html"]), + // table + td: /* @__PURE__ */ new Set(["tr"]), + colgroup: /* @__PURE__ */ new Set(["table"]), + caption: /* @__PURE__ */ new Set(["table"]), + tbody: /* @__PURE__ */ new Set(["table"]), + tfoot: /* @__PURE__ */ new Set(["table"]), + col: /* @__PURE__ */ new Set(["colgroup"]), + th: /* @__PURE__ */ new Set(["tr"]), + thead: /* @__PURE__ */ new Set(["table"]), + tr: /* @__PURE__ */ new Set(["tbody", "thead", "tfoot"]), + // data list + dd: /* @__PURE__ */ new Set(["dl", "div"]), + dt: /* @__PURE__ */ new Set(["dl", "div"]), + // other + figcaption: /* @__PURE__ */ new Set(["figure"]), + // li: new Set(["ul", "ol"]), + summary: /* @__PURE__ */ new Set(["details"]), + area: /* @__PURE__ */ new Set(["map"]) +}; +const knownInvalidChildren = { + p: /* @__PURE__ */ new Set([ + "address", + "article", + "aside", + "blockquote", + "center", + "details", + "dialog", + "dir", + "div", + "dl", + "fieldset", + "figure", + "footer", + "form", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "header", + "hgroup", + "hr", + "li", + "main", + "nav", + "menu", + "ol", + "p", + "pre", + "section", + "table", + "ul" + ]), + svg: /* @__PURE__ */ new Set([ + "b", + "blockquote", + "br", + "code", + "dd", + "div", + "dl", + "dt", + "em", + "embed", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "hr", + "i", + "img", + "li", + "menu", + "meta", + "ol", + "p", + "pre", + "ruby", + "s", + "small", + "span", + "strong", + "sub", + "sup", + "table", + "u", + "ul", + "var" + ]) +}; +const knownInvalidParents = { + a: /* @__PURE__ */ new Set(["a"]), + button: /* @__PURE__ */ new Set(["button"]), + dd: /* @__PURE__ */ new Set(["dd", "dt"]), + dt: /* @__PURE__ */ new Set(["dd", "dt"]), + form: /* @__PURE__ */ new Set(["form"]), + li: /* @__PURE__ */ new Set(["li"]), + h1: headings, + h2: headings, + h3: headings, + h4: headings, + h5: headings, + h6: headings +}; + +const validateHtmlNesting = (node, context) => { + if (node.type === 1 && node.tagType === 0 && context.parent && context.parent.type === 1 && context.parent.tagType === 0 && !isValidHTMLNesting(context.parent.tag, node.tag)) { + const error = new SyntaxError( + `<${node.tag}> cannot be child of <${context.parent.tag}>, according to HTML specifications. This can cause hydration errors or potentially disrupt future functionality.` + ); + error.loc = node.loc; + context.onWarn(error); + } +}; + +const DOMNodeTransforms = [ + transformStyle, + ...!!(process.env.NODE_ENV !== "production") ? [transformTransition, validateHtmlNesting] : [] +]; +const DOMDirectiveTransforms = { + cloak: noopDirectiveTransform, + html: transformVHtml, + text: transformVText, + model: transformModel, + // override compiler-core + on: transformOn, + // override compiler-core + show: transformShow +}; +function compile(src, options = {}) { + return baseCompile( + src, + extend({}, parserOptions, options, { + nodeTransforms: [ + // ignore <script> and <tag> + // this is not put inside DOMNodeTransforms because that list is used + // by compiler-ssr to generate vnode fallback branches + ignoreSideEffectTags, + ...DOMNodeTransforms, + ...options.nodeTransforms || [] + ], + directiveTransforms: extend( + {}, + DOMDirectiveTransforms, + options.directiveTransforms || {} + ), + transformHoist: null + }) + ); +} +function parse(template, options = {}) { + return baseParse(template, extend({}, parserOptions, options)); +} + +export { DOMDirectiveTransforms, DOMErrorCodes, DOMErrorMessages, DOMNodeTransforms, TRANSITION, TRANSITION_GROUP, V_MODEL_CHECKBOX, V_MODEL_DYNAMIC, V_MODEL_RADIO, V_MODEL_SELECT, V_MODEL_TEXT, V_ON_WITH_KEYS, V_ON_WITH_MODIFIERS, V_SHOW, compile, createDOMCompilerError, parse, parserOptions, transformStyle }; diff --git a/node_modules/@vue/compiler-dom/dist/compiler-dom.global.js b/node_modules/@vue/compiler-dom/dist/compiler-dom.global.js new file mode 100644 index 0000000..0149a1a --- /dev/null +++ b/node_modules/@vue/compiler-dom/dist/compiler-dom.global.js @@ -0,0 +1,6785 @@ +/** +* @vue/compiler-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +var VueCompilerDOM = (function (exports) { + 'use strict'; + + /*! #__NO_SIDE_EFFECTS__ */ + // @__NO_SIDE_EFFECTS__ + function makeMap(str) { + const map = /* @__PURE__ */ Object.create(null); + for (const key of str.split(",")) map[key] = 1; + return (val) => val in map; + } + + const EMPTY_OBJ = Object.freeze({}) ; + const NOOP = () => { + }; + const NO = () => false; + const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter + (key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); + const extend = Object.assign; + const isArray = Array.isArray; + const isString = (val) => typeof val === "string"; + const isSymbol = (val) => typeof val === "symbol"; + const isObject = (val) => val !== null && typeof val === "object"; + const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" + ); + const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" + ); + const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; + }; + const camelizeRE = /-(\w)/g; + const camelize = cacheStringFunction( + (str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); + } + ); + const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); + }); + const toHandlerKey = cacheStringFunction( + (str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; + } + ); + + const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `NEED_HYDRATION`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `CACHED`, + [-2]: `BAIL` + }; + + const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" + }; + + const range = 2; + function generateCodeFrame(source, start = 0, end = source.length) { + start = Math.max(0, Math.min(start, source.length)); + end = Math.max(0, Math.min(end, source.length)); + if (start > end) return ""; + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); + } + + const listDelimiterRE = /;(?![^(]*\))/g; + const propertyDelimiterRE = /:([^]+)/; + const styleCommentRE = /\/\*[^]*?\*\//g; + function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; + } + + const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; + const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; + const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; + const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; + const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); + const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); + const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); + const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + + const FRAGMENT = Symbol(`Fragment` ); + const TELEPORT = Symbol(`Teleport` ); + const SUSPENSE = Symbol(`Suspense` ); + const KEEP_ALIVE = Symbol(`KeepAlive` ); + const BASE_TRANSITION = Symbol( + `BaseTransition` + ); + const OPEN_BLOCK = Symbol(`openBlock` ); + const CREATE_BLOCK = Symbol(`createBlock` ); + const CREATE_ELEMENT_BLOCK = Symbol( + `createElementBlock` + ); + const CREATE_VNODE = Symbol(`createVNode` ); + const CREATE_ELEMENT_VNODE = Symbol( + `createElementVNode` + ); + const CREATE_COMMENT = Symbol( + `createCommentVNode` + ); + const CREATE_TEXT = Symbol( + `createTextVNode` + ); + const CREATE_STATIC = Symbol( + `createStaticVNode` + ); + const RESOLVE_COMPONENT = Symbol( + `resolveComponent` + ); + const RESOLVE_DYNAMIC_COMPONENT = Symbol( + `resolveDynamicComponent` + ); + const RESOLVE_DIRECTIVE = Symbol( + `resolveDirective` + ); + const RESOLVE_FILTER = Symbol( + `resolveFilter` + ); + const WITH_DIRECTIVES = Symbol( + `withDirectives` + ); + const RENDER_LIST = Symbol(`renderList` ); + const RENDER_SLOT = Symbol(`renderSlot` ); + const CREATE_SLOTS = Symbol(`createSlots` ); + const TO_DISPLAY_STRING = Symbol( + `toDisplayString` + ); + const MERGE_PROPS = Symbol(`mergeProps` ); + const NORMALIZE_CLASS = Symbol( + `normalizeClass` + ); + const NORMALIZE_STYLE = Symbol( + `normalizeStyle` + ); + const NORMALIZE_PROPS = Symbol( + `normalizeProps` + ); + const GUARD_REACTIVE_PROPS = Symbol( + `guardReactiveProps` + ); + const TO_HANDLERS = Symbol(`toHandlers` ); + const CAMELIZE = Symbol(`camelize` ); + const CAPITALIZE = Symbol(`capitalize` ); + const TO_HANDLER_KEY = Symbol( + `toHandlerKey` + ); + const SET_BLOCK_TRACKING = Symbol( + `setBlockTracking` + ); + const PUSH_SCOPE_ID = Symbol(`pushScopeId` ); + const POP_SCOPE_ID = Symbol(`popScopeId` ); + const WITH_CTX = Symbol(`withCtx` ); + const UNREF = Symbol(`unref` ); + const IS_REF = Symbol(`isRef` ); + const WITH_MEMO = Symbol(`withMemo` ); + const IS_MEMO_SAME = Symbol(`isMemoSame` ); + const helperNameMap = { + [FRAGMENT]: `Fragment`, + [TELEPORT]: `Teleport`, + [SUSPENSE]: `Suspense`, + [KEEP_ALIVE]: `KeepAlive`, + [BASE_TRANSITION]: `BaseTransition`, + [OPEN_BLOCK]: `openBlock`, + [CREATE_BLOCK]: `createBlock`, + [CREATE_ELEMENT_BLOCK]: `createElementBlock`, + [CREATE_VNODE]: `createVNode`, + [CREATE_ELEMENT_VNODE]: `createElementVNode`, + [CREATE_COMMENT]: `createCommentVNode`, + [CREATE_TEXT]: `createTextVNode`, + [CREATE_STATIC]: `createStaticVNode`, + [RESOLVE_COMPONENT]: `resolveComponent`, + [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`, + [RESOLVE_DIRECTIVE]: `resolveDirective`, + [RESOLVE_FILTER]: `resolveFilter`, + [WITH_DIRECTIVES]: `withDirectives`, + [RENDER_LIST]: `renderList`, + [RENDER_SLOT]: `renderSlot`, + [CREATE_SLOTS]: `createSlots`, + [TO_DISPLAY_STRING]: `toDisplayString`, + [MERGE_PROPS]: `mergeProps`, + [NORMALIZE_CLASS]: `normalizeClass`, + [NORMALIZE_STYLE]: `normalizeStyle`, + [NORMALIZE_PROPS]: `normalizeProps`, + [GUARD_REACTIVE_PROPS]: `guardReactiveProps`, + [TO_HANDLERS]: `toHandlers`, + [CAMELIZE]: `camelize`, + [CAPITALIZE]: `capitalize`, + [TO_HANDLER_KEY]: `toHandlerKey`, + [SET_BLOCK_TRACKING]: `setBlockTracking`, + [PUSH_SCOPE_ID]: `pushScopeId`, + [POP_SCOPE_ID]: `popScopeId`, + [WITH_CTX]: `withCtx`, + [UNREF]: `unref`, + [IS_REF]: `isRef`, + [WITH_MEMO]: `withMemo`, + [IS_MEMO_SAME]: `isMemoSame` + }; + function registerRuntimeHelpers(helpers) { + Object.getOwnPropertySymbols(helpers).forEach((s) => { + helperNameMap[s] = helpers[s]; + }); + } + + const Namespaces = { + "HTML": 0, + "0": "HTML", + "SVG": 1, + "1": "SVG", + "MATH_ML": 2, + "2": "MATH_ML" + }; + const NodeTypes = { + "ROOT": 0, + "0": "ROOT", + "ELEMENT": 1, + "1": "ELEMENT", + "TEXT": 2, + "2": "TEXT", + "COMMENT": 3, + "3": "COMMENT", + "SIMPLE_EXPRESSION": 4, + "4": "SIMPLE_EXPRESSION", + "INTERPOLATION": 5, + "5": "INTERPOLATION", + "ATTRIBUTE": 6, + "6": "ATTRIBUTE", + "DIRECTIVE": 7, + "7": "DIRECTIVE", + "COMPOUND_EXPRESSION": 8, + "8": "COMPOUND_EXPRESSION", + "IF": 9, + "9": "IF", + "IF_BRANCH": 10, + "10": "IF_BRANCH", + "FOR": 11, + "11": "FOR", + "TEXT_CALL": 12, + "12": "TEXT_CALL", + "VNODE_CALL": 13, + "13": "VNODE_CALL", + "JS_CALL_EXPRESSION": 14, + "14": "JS_CALL_EXPRESSION", + "JS_OBJECT_EXPRESSION": 15, + "15": "JS_OBJECT_EXPRESSION", + "JS_PROPERTY": 16, + "16": "JS_PROPERTY", + "JS_ARRAY_EXPRESSION": 17, + "17": "JS_ARRAY_EXPRESSION", + "JS_FUNCTION_EXPRESSION": 18, + "18": "JS_FUNCTION_EXPRESSION", + "JS_CONDITIONAL_EXPRESSION": 19, + "19": "JS_CONDITIONAL_EXPRESSION", + "JS_CACHE_EXPRESSION": 20, + "20": "JS_CACHE_EXPRESSION", + "JS_BLOCK_STATEMENT": 21, + "21": "JS_BLOCK_STATEMENT", + "JS_TEMPLATE_LITERAL": 22, + "22": "JS_TEMPLATE_LITERAL", + "JS_IF_STATEMENT": 23, + "23": "JS_IF_STATEMENT", + "JS_ASSIGNMENT_EXPRESSION": 24, + "24": "JS_ASSIGNMENT_EXPRESSION", + "JS_SEQUENCE_EXPRESSION": 25, + "25": "JS_SEQUENCE_EXPRESSION", + "JS_RETURN_STATEMENT": 26, + "26": "JS_RETURN_STATEMENT" + }; + const ElementTypes = { + "ELEMENT": 0, + "0": "ELEMENT", + "COMPONENT": 1, + "1": "COMPONENT", + "SLOT": 2, + "2": "SLOT", + "TEMPLATE": 3, + "3": "TEMPLATE" + }; + const ConstantTypes = { + "NOT_CONSTANT": 0, + "0": "NOT_CONSTANT", + "CAN_SKIP_PATCH": 1, + "1": "CAN_SKIP_PATCH", + "CAN_CACHE": 2, + "2": "CAN_CACHE", + "CAN_STRINGIFY": 3, + "3": "CAN_STRINGIFY" + }; + const locStub = { + start: { line: 1, column: 1, offset: 0 }, + end: { line: 1, column: 1, offset: 0 }, + source: "" + }; + function createRoot(children, source = "") { + return { + type: 0, + source, + children, + helpers: /* @__PURE__ */ new Set(), + components: [], + directives: [], + hoists: [], + imports: [], + cached: [], + temps: 0, + codegenNode: void 0, + loc: locStub + }; + } + function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) { + if (context) { + if (isBlock) { + context.helper(OPEN_BLOCK); + context.helper(getVNodeBlockHelper(context.inSSR, isComponent)); + } else { + context.helper(getVNodeHelper(context.inSSR, isComponent)); + } + if (directives) { + context.helper(WITH_DIRECTIVES); + } + } + return { + type: 13, + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent, + loc + }; + } + function createArrayExpression(elements, loc = locStub) { + return { + type: 17, + loc, + elements + }; + } + function createObjectExpression(properties, loc = locStub) { + return { + type: 15, + loc, + properties + }; + } + function createObjectProperty(key, value) { + return { + type: 16, + loc: locStub, + key: isString(key) ? createSimpleExpression(key, true) : key, + value + }; + } + function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) { + return { + type: 4, + loc, + content, + isStatic, + constType: isStatic ? 3 : constType + }; + } + function createInterpolation(content, loc) { + return { + type: 5, + loc, + content: isString(content) ? createSimpleExpression(content, false, loc) : content + }; + } + function createCompoundExpression(children, loc = locStub) { + return { + type: 8, + loc, + children + }; + } + function createCallExpression(callee, args = [], loc = locStub) { + return { + type: 14, + loc, + callee, + arguments: args + }; + } + function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) { + return { + type: 18, + params, + returns, + newline, + isSlot, + loc + }; + } + function createConditionalExpression(test, consequent, alternate, newline = true) { + return { + type: 19, + test, + consequent, + alternate, + newline, + loc: locStub + }; + } + function createCacheExpression(index, value, needPauseTracking = false, inVOnce = false) { + return { + type: 20, + index, + value, + needPauseTracking, + inVOnce, + needArraySpread: false, + loc: locStub + }; + } + function createBlockStatement(body) { + return { + type: 21, + body, + loc: locStub + }; + } + function createTemplateLiteral(elements) { + return { + type: 22, + elements, + loc: locStub + }; + } + function createIfStatement(test, consequent, alternate) { + return { + type: 23, + test, + consequent, + alternate, + loc: locStub + }; + } + function createAssignmentExpression(left, right) { + return { + type: 24, + left, + right, + loc: locStub + }; + } + function createSequenceExpression(expressions) { + return { + type: 25, + expressions, + loc: locStub + }; + } + function createReturnStatement(returns) { + return { + type: 26, + returns, + loc: locStub + }; + } + function getVNodeHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE; + } + function getVNodeBlockHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK; + } + function convertToBlock(node, { helper, removeHelper, inSSR }) { + if (!node.isBlock) { + node.isBlock = true; + removeHelper(getVNodeHelper(inSSR, node.isComponent)); + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(inSSR, node.isComponent)); + } + } + + const defaultDelimitersOpen = new Uint8Array([123, 123]); + const defaultDelimitersClose = new Uint8Array([125, 125]); + function isTagStartChar(c) { + return c >= 97 && c <= 122 || c >= 65 && c <= 90; + } + function isWhitespace(c) { + return c === 32 || c === 10 || c === 9 || c === 12 || c === 13; + } + function isEndOfTagSection(c) { + return c === 47 || c === 62 || isWhitespace(c); + } + function toCharCodes(str) { + const ret = new Uint8Array(str.length); + for (let i = 0; i < str.length; i++) { + ret[i] = str.charCodeAt(i); + } + return ret; + } + const Sequences = { + Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]), + // CDATA[ + CdataEnd: new Uint8Array([93, 93, 62]), + // ]]> + CommentEnd: new Uint8Array([45, 45, 62]), + // `-->` + ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), + // `<\/script` + StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), + // `</style` + TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]), + // `</title` + TextareaEnd: new Uint8Array([ + 60, + 47, + 116, + 101, + 120, + 116, + 97, + 114, + 101, + 97 + ]) + // `</textarea + }; + class Tokenizer { + constructor(stack, cbs) { + this.stack = stack; + this.cbs = cbs; + /** The current state the tokenizer is in. */ + this.state = 1; + /** The read buffer. */ + this.buffer = ""; + /** The beginning of the section that is currently being read. */ + this.sectionStart = 0; + /** The index within the buffer that we are currently looking at. */ + this.index = 0; + /** The start of the last entity. */ + this.entityStart = 0; + /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */ + this.baseState = 1; + /** For special parsing behavior inside of script and style tags. */ + this.inRCDATA = false; + /** For disabling RCDATA tags handling */ + this.inXML = false; + /** For disabling interpolation parsing in v-pre */ + this.inVPre = false; + /** Record newline positions for fast line / column calculation */ + this.newlines = []; + this.mode = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + this.delimiterIndex = -1; + this.currentSequence = void 0; + this.sequenceIndex = 0; + } + get inSFCRoot() { + return this.mode === 2 && this.stack.length === 0; + } + reset() { + this.state = 1; + this.mode = 0; + this.buffer = ""; + this.sectionStart = 0; + this.index = 0; + this.baseState = 1; + this.inRCDATA = false; + this.currentSequence = void 0; + this.newlines.length = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + } + /** + * Generate Position object with line / column information using recorded + * newline positions. We know the index is always going to be an already + * processed index, so all the newlines up to this index should have been + * recorded. + */ + getPos(index) { + let line = 1; + let column = index + 1; + for (let i = this.newlines.length - 1; i >= 0; i--) { + const newlineIndex = this.newlines[i]; + if (index > newlineIndex) { + line = i + 2; + column = index - newlineIndex; + break; + } + } + return { + column, + line, + offset: index + }; + } + peek() { + return this.buffer.charCodeAt(this.index + 1); + } + stateText(c) { + if (c === 60) { + if (this.index > this.sectionStart) { + this.cbs.ontext(this.sectionStart, this.index); + } + this.state = 5; + this.sectionStart = this.index; + } else if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } + stateInterpolationOpen(c) { + if (c === this.delimiterOpen[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterOpen.length - 1) { + const start = this.index + 1 - this.delimiterOpen.length; + if (start > this.sectionStart) { + this.cbs.ontext(this.sectionStart, start); + } + this.state = 3; + this.sectionStart = start; + } else { + this.delimiterIndex++; + } + } else if (this.inRCDATA) { + this.state = 32; + this.stateInRCDATA(c); + } else { + this.state = 1; + this.stateText(c); + } + } + stateInterpolation(c) { + if (c === this.delimiterClose[0]) { + this.state = 4; + this.delimiterIndex = 0; + this.stateInterpolationClose(c); + } + } + stateInterpolationClose(c) { + if (c === this.delimiterClose[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterClose.length - 1) { + this.cbs.oninterpolation(this.sectionStart, this.index + 1); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else { + this.delimiterIndex++; + } + } else { + this.state = 3; + this.stateInterpolation(c); + } + } + stateSpecialStartSequence(c) { + const isEnd = this.sequenceIndex === this.currentSequence.length; + const isMatch = isEnd ? ( + // If we are at the end of the sequence, make sure the tag name has ended + isEndOfTagSection(c) + ) : ( + // Otherwise, do a case-insensitive comparison + (c | 32) === this.currentSequence[this.sequenceIndex] + ); + if (!isMatch) { + this.inRCDATA = false; + } else if (!isEnd) { + this.sequenceIndex++; + return; + } + this.sequenceIndex = 0; + this.state = 6; + this.stateInTagName(c); + } + /** Look for an end tag. For <title> and <textarea>, also decode entities. */ + stateInRCDATA(c) { + if (this.sequenceIndex === this.currentSequence.length) { + if (c === 62 || isWhitespace(c)) { + const endOfText = this.index - this.currentSequence.length; + if (this.sectionStart < endOfText) { + const actualIndex = this.index; + this.index = endOfText; + this.cbs.ontext(this.sectionStart, endOfText); + this.index = actualIndex; + } + this.sectionStart = endOfText + 2; + this.stateInClosingTagName(c); + this.inRCDATA = false; + return; + } + this.sequenceIndex = 0; + } + if ((c | 32) === this.currentSequence[this.sequenceIndex]) { + this.sequenceIndex += 1; + } else if (this.sequenceIndex === 0) { + if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd && !this.inSFCRoot) { + if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } else if (this.fastForwardTo(60)) { + this.sequenceIndex = 1; + } + } else { + this.sequenceIndex = Number(c === 60); + } + } + stateCDATASequence(c) { + if (c === Sequences.Cdata[this.sequenceIndex]) { + if (++this.sequenceIndex === Sequences.Cdata.length) { + this.state = 28; + this.currentSequence = Sequences.CdataEnd; + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + } + } else { + this.sequenceIndex = 0; + this.state = 23; + this.stateInDeclaration(c); + } + } + /** + * When we wait for one specific character, we can speed things up + * by skipping through the buffer until we find it. + * + * @returns Whether the character was found. + */ + fastForwardTo(c) { + while (++this.index < this.buffer.length) { + const cc = this.buffer.charCodeAt(this.index); + if (cc === 10) { + this.newlines.push(this.index); + } + if (cc === c) { + return true; + } + } + this.index = this.buffer.length - 1; + return false; + } + /** + * Comments and CDATA end with `-->` and `]]>`. + * + * Their common qualities are: + * - Their end sequences have a distinct character they start with. + * - That character is then repeated, so we have to check multiple repeats. + * - All characters but the start character of the sequence can be skipped. + */ + stateInCommentLike(c) { + if (c === this.currentSequence[this.sequenceIndex]) { + if (++this.sequenceIndex === this.currentSequence.length) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, this.index - 2); + } else { + this.cbs.oncomment(this.sectionStart, this.index - 2); + } + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + this.state = 1; + } + } else if (this.sequenceIndex === 0) { + if (this.fastForwardTo(this.currentSequence[0])) { + this.sequenceIndex = 1; + } + } else if (c !== this.currentSequence[this.sequenceIndex - 1]) { + this.sequenceIndex = 0; + } + } + startSpecial(sequence, offset) { + this.enterRCDATA(sequence, offset); + this.state = 31; + } + enterRCDATA(sequence, offset) { + this.inRCDATA = true; + this.currentSequence = sequence; + this.sequenceIndex = offset; + } + stateBeforeTagName(c) { + if (c === 33) { + this.state = 22; + this.sectionStart = this.index + 1; + } else if (c === 63) { + this.state = 24; + this.sectionStart = this.index + 1; + } else if (isTagStartChar(c)) { + this.sectionStart = this.index; + if (this.mode === 0) { + this.state = 6; + } else if (this.inSFCRoot) { + this.state = 34; + } else if (!this.inXML) { + if (c === 116) { + this.state = 30; + } else { + this.state = c === 115 ? 29 : 6; + } + } else { + this.state = 6; + } + } else if (c === 47) { + this.state = 8; + } else { + this.state = 1; + this.stateText(c); + } + } + stateInTagName(c) { + if (isEndOfTagSection(c)) { + this.handleTagName(c); + } + } + stateInSFCRootTagName(c) { + if (isEndOfTagSection(c)) { + const tag = this.buffer.slice(this.sectionStart, this.index); + if (tag !== "template") { + this.enterRCDATA(toCharCodes(`</` + tag), 0); + } + this.handleTagName(c); + } + } + handleTagName(c) { + this.cbs.onopentagname(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } + stateBeforeClosingTagName(c) { + if (isWhitespace(c)) ; else if (c === 62) { + { + this.cbs.onerr(14, this.index); + } + this.state = 1; + this.sectionStart = this.index + 1; + } else { + this.state = isTagStartChar(c) ? 9 : 27; + this.sectionStart = this.index; + } + } + stateInClosingTagName(c) { + if (c === 62 || isWhitespace(c)) { + this.cbs.onclosetag(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 10; + this.stateAfterClosingTagName(c); + } + } + stateAfterClosingTagName(c) { + if (c === 62) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeAttrName(c) { + if (c === 62) { + this.cbs.onopentagend(this.index); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else if (c === 47) { + this.state = 7; + if (this.peek() !== 62) { + this.cbs.onerr(22, this.index); + } + } else if (c === 60 && this.peek() === 47) { + this.cbs.onopentagend(this.index); + this.state = 5; + this.sectionStart = this.index; + } else if (!isWhitespace(c)) { + if (c === 61) { + this.cbs.onerr( + 19, + this.index + ); + } + this.handleAttrStart(c); + } + } + handleAttrStart(c) { + if (c === 118 && this.peek() === 45) { + this.state = 13; + this.sectionStart = this.index; + } else if (c === 46 || c === 58 || c === 64 || c === 35) { + this.cbs.ondirname(this.index, this.index + 1); + this.state = 14; + this.sectionStart = this.index + 1; + } else { + this.state = 12; + this.sectionStart = this.index; + } + } + stateInSelfClosingTag(c) { + if (c === 62) { + this.cbs.onselfclosingtag(this.index); + this.state = 1; + this.sectionStart = this.index + 1; + this.inRCDATA = false; + } else if (!isWhitespace(c)) { + this.state = 11; + this.stateBeforeAttrName(c); + } + } + stateInAttrName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.onattribname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 34 || c === 39 || c === 60) { + this.cbs.onerr( + 17, + this.index + ); + } + } + stateInDirName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 58) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 14; + this.sectionStart = this.index + 1; + } else if (c === 46) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDirArg(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 91) { + this.state = 15; + } else if (c === 46) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDynamicDirArg(c) { + if (c === 93) { + this.state = 14; + } else if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index + 1); + this.handleAttrNameEnd(c); + { + this.cbs.onerr( + 27, + this.index + ); + } + } + } + stateInDirModifier(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 46) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.sectionStart = this.index + 1; + } + } + handleAttrNameEnd(c) { + this.sectionStart = this.index; + this.state = 17; + this.cbs.onattribnameend(this.index); + this.stateAfterAttrName(c); + } + stateAfterAttrName(c) { + if (c === 61) { + this.state = 18; + } else if (c === 47 || c === 62) { + this.cbs.onattribend(0, this.sectionStart); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } else if (!isWhitespace(c)) { + this.cbs.onattribend(0, this.sectionStart); + this.handleAttrStart(c); + } + } + stateBeforeAttrValue(c) { + if (c === 34) { + this.state = 19; + this.sectionStart = this.index + 1; + } else if (c === 39) { + this.state = 20; + this.sectionStart = this.index + 1; + } else if (!isWhitespace(c)) { + this.sectionStart = this.index; + this.state = 21; + this.stateInAttrValueNoQuotes(c); + } + } + handleInAttrValue(c, quote) { + if (c === quote || this.fastForwardTo(quote)) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend( + quote === 34 ? 3 : 2, + this.index + 1 + ); + this.state = 11; + } + } + stateInAttrValueDoubleQuotes(c) { + this.handleInAttrValue(c, 34); + } + stateInAttrValueSingleQuotes(c) { + this.handleInAttrValue(c, 39); + } + stateInAttrValueNoQuotes(c) { + if (isWhitespace(c) || c === 62) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend(1, this.index); + this.state = 11; + this.stateBeforeAttrName(c); + } else if (c === 34 || c === 39 || c === 60 || c === 61 || c === 96) { + this.cbs.onerr( + 18, + this.index + ); + } else ; + } + stateBeforeDeclaration(c) { + if (c === 91) { + this.state = 26; + this.sequenceIndex = 0; + } else { + this.state = c === 45 ? 25 : 23; + } + } + stateInDeclaration(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateInProcessingInstruction(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.onprocessinginstruction(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeComment(c) { + if (c === 45) { + this.state = 28; + this.currentSequence = Sequences.CommentEnd; + this.sequenceIndex = 2; + this.sectionStart = this.index + 1; + } else { + this.state = 23; + } + } + stateInSpecialComment(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.oncomment(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeSpecialS(c) { + if (c === Sequences.ScriptEnd[3]) { + this.startSpecial(Sequences.ScriptEnd, 4); + } else if (c === Sequences.StyleEnd[3]) { + this.startSpecial(Sequences.StyleEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + stateBeforeSpecialT(c) { + if (c === Sequences.TitleEnd[3]) { + this.startSpecial(Sequences.TitleEnd, 4); + } else if (c === Sequences.TextareaEnd[3]) { + this.startSpecial(Sequences.TextareaEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + startEntity() { + } + stateInEntity() { + } + /** + * Iterates through the buffer, calling the function corresponding to the current state. + * + * States that are more likely to be hit are higher up, as a performance improvement. + */ + parse(input) { + this.buffer = input; + while (this.index < this.buffer.length) { + const c = this.buffer.charCodeAt(this.index); + if (c === 10 && this.state !== 33) { + this.newlines.push(this.index); + } + switch (this.state) { + case 1: { + this.stateText(c); + break; + } + case 2: { + this.stateInterpolationOpen(c); + break; + } + case 3: { + this.stateInterpolation(c); + break; + } + case 4: { + this.stateInterpolationClose(c); + break; + } + case 31: { + this.stateSpecialStartSequence(c); + break; + } + case 32: { + this.stateInRCDATA(c); + break; + } + case 26: { + this.stateCDATASequence(c); + break; + } + case 19: { + this.stateInAttrValueDoubleQuotes(c); + break; + } + case 12: { + this.stateInAttrName(c); + break; + } + case 13: { + this.stateInDirName(c); + break; + } + case 14: { + this.stateInDirArg(c); + break; + } + case 15: { + this.stateInDynamicDirArg(c); + break; + } + case 16: { + this.stateInDirModifier(c); + break; + } + case 28: { + this.stateInCommentLike(c); + break; + } + case 27: { + this.stateInSpecialComment(c); + break; + } + case 11: { + this.stateBeforeAttrName(c); + break; + } + case 6: { + this.stateInTagName(c); + break; + } + case 34: { + this.stateInSFCRootTagName(c); + break; + } + case 9: { + this.stateInClosingTagName(c); + break; + } + case 5: { + this.stateBeforeTagName(c); + break; + } + case 17: { + this.stateAfterAttrName(c); + break; + } + case 20: { + this.stateInAttrValueSingleQuotes(c); + break; + } + case 18: { + this.stateBeforeAttrValue(c); + break; + } + case 8: { + this.stateBeforeClosingTagName(c); + break; + } + case 10: { + this.stateAfterClosingTagName(c); + break; + } + case 29: { + this.stateBeforeSpecialS(c); + break; + } + case 30: { + this.stateBeforeSpecialT(c); + break; + } + case 21: { + this.stateInAttrValueNoQuotes(c); + break; + } + case 7: { + this.stateInSelfClosingTag(c); + break; + } + case 23: { + this.stateInDeclaration(c); + break; + } + case 22: { + this.stateBeforeDeclaration(c); + break; + } + case 25: { + this.stateBeforeComment(c); + break; + } + case 24: { + this.stateInProcessingInstruction(c); + break; + } + case 33: { + this.stateInEntity(); + break; + } + } + this.index++; + } + this.cleanup(); + this.finish(); + } + /** + * Remove data that has already been consumed from the buffer. + */ + cleanup() { + if (this.sectionStart !== this.index) { + if (this.state === 1 || this.state === 32 && this.sequenceIndex === 0) { + this.cbs.ontext(this.sectionStart, this.index); + this.sectionStart = this.index; + } else if (this.state === 19 || this.state === 20 || this.state === 21) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = this.index; + } + } + } + finish() { + this.handleTrailingData(); + this.cbs.onend(); + } + /** Handle any trailing data. */ + handleTrailingData() { + const endIndex = this.buffer.length; + if (this.sectionStart >= endIndex) { + return; + } + if (this.state === 28) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, endIndex); + } else { + this.cbs.oncomment(this.sectionStart, endIndex); + } + } else if (this.state === 6 || this.state === 11 || this.state === 18 || this.state === 17 || this.state === 12 || this.state === 13 || this.state === 14 || this.state === 15 || this.state === 16 || this.state === 20 || this.state === 19 || this.state === 21 || this.state === 9) ; else { + this.cbs.ontext(this.sectionStart, endIndex); + } + } + emitCodePoint(cp, consumed) { + } + } + + const CompilerDeprecationTypes = { + "COMPILER_IS_ON_ELEMENT": "COMPILER_IS_ON_ELEMENT", + "COMPILER_V_BIND_SYNC": "COMPILER_V_BIND_SYNC", + "COMPILER_V_BIND_OBJECT_ORDER": "COMPILER_V_BIND_OBJECT_ORDER", + "COMPILER_V_ON_NATIVE": "COMPILER_V_ON_NATIVE", + "COMPILER_V_IF_V_FOR_PRECEDENCE": "COMPILER_V_IF_V_FOR_PRECEDENCE", + "COMPILER_NATIVE_TEMPLATE": "COMPILER_NATIVE_TEMPLATE", + "COMPILER_INLINE_TEMPLATE": "COMPILER_INLINE_TEMPLATE", + "COMPILER_FILTERS": "COMPILER_FILTERS" + }; + const deprecationData = { + ["COMPILER_IS_ON_ELEMENT"]: { + message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`, + link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html` + }, + ["COMPILER_V_BIND_SYNC"]: { + message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html` + }, + ["COMPILER_V_BIND_OBJECT_ORDER"]: { + message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html` + }, + ["COMPILER_V_ON_NATIVE"]: { + message: `.native modifier for v-on has been removed as is no longer necessary.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html` + }, + ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: { + message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html` + }, + ["COMPILER_NATIVE_TEMPLATE"]: { + message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.` + }, + ["COMPILER_INLINE_TEMPLATE"]: { + message: `"inline-template" has been removed in Vue 3.`, + link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html` + }, + ["COMPILER_FILTERS"]: { + message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`, + link: `https://v3-migration.vuejs.org/breaking-changes/filters.html` + } + }; + function getCompatValue(key, { compatConfig }) { + const value = compatConfig && compatConfig[key]; + if (key === "MODE") { + return value || 3; + } else { + return value; + } + } + function isCompatEnabled(key, context) { + const mode = getCompatValue("MODE", context); + const value = getCompatValue(key, context); + return mode === 3 ? value === true : value !== false; + } + function checkCompatEnabled(key, context, loc, ...args) { + const enabled = isCompatEnabled(key, context); + if (enabled) { + warnDeprecation(key, context, loc, ...args); + } + return enabled; + } + function warnDeprecation(key, context, loc, ...args) { + const val = getCompatValue(key, context); + if (val === "suppress-warning") { + return; + } + const { message, link } = deprecationData[key]; + const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? ` + Details: ${link}` : ``}`; + const err = new SyntaxError(msg); + err.code = key; + if (loc) err.loc = loc; + context.onWarn(err); + } + + function defaultOnError(error) { + throw error; + } + function defaultOnWarn(msg) { + console.warn(`[Vue warn] ${msg.message}`); + } + function createCompilerError(code, loc, messages, additionalMessage) { + const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ; + const error = new SyntaxError(String(msg)); + error.code = code; + error.loc = loc; + return error; + } + const ErrorCodes = { + "ABRUPT_CLOSING_OF_EMPTY_COMMENT": 0, + "0": "ABRUPT_CLOSING_OF_EMPTY_COMMENT", + "CDATA_IN_HTML_CONTENT": 1, + "1": "CDATA_IN_HTML_CONTENT", + "DUPLICATE_ATTRIBUTE": 2, + "2": "DUPLICATE_ATTRIBUTE", + "END_TAG_WITH_ATTRIBUTES": 3, + "3": "END_TAG_WITH_ATTRIBUTES", + "END_TAG_WITH_TRAILING_SOLIDUS": 4, + "4": "END_TAG_WITH_TRAILING_SOLIDUS", + "EOF_BEFORE_TAG_NAME": 5, + "5": "EOF_BEFORE_TAG_NAME", + "EOF_IN_CDATA": 6, + "6": "EOF_IN_CDATA", + "EOF_IN_COMMENT": 7, + "7": "EOF_IN_COMMENT", + "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT": 8, + "8": "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT", + "EOF_IN_TAG": 9, + "9": "EOF_IN_TAG", + "INCORRECTLY_CLOSED_COMMENT": 10, + "10": "INCORRECTLY_CLOSED_COMMENT", + "INCORRECTLY_OPENED_COMMENT": 11, + "11": "INCORRECTLY_OPENED_COMMENT", + "INVALID_FIRST_CHARACTER_OF_TAG_NAME": 12, + "12": "INVALID_FIRST_CHARACTER_OF_TAG_NAME", + "MISSING_ATTRIBUTE_VALUE": 13, + "13": "MISSING_ATTRIBUTE_VALUE", + "MISSING_END_TAG_NAME": 14, + "14": "MISSING_END_TAG_NAME", + "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES": 15, + "15": "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES", + "NESTED_COMMENT": 16, + "16": "NESTED_COMMENT", + "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME": 17, + "17": "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME", + "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE": 18, + "18": "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE", + "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME": 19, + "19": "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME", + "UNEXPECTED_NULL_CHARACTER": 20, + "20": "UNEXPECTED_NULL_CHARACTER", + "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME": 21, + "21": "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME", + "UNEXPECTED_SOLIDUS_IN_TAG": 22, + "22": "UNEXPECTED_SOLIDUS_IN_TAG", + "X_INVALID_END_TAG": 23, + "23": "X_INVALID_END_TAG", + "X_MISSING_END_TAG": 24, + "24": "X_MISSING_END_TAG", + "X_MISSING_INTERPOLATION_END": 25, + "25": "X_MISSING_INTERPOLATION_END", + "X_MISSING_DIRECTIVE_NAME": 26, + "26": "X_MISSING_DIRECTIVE_NAME", + "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END": 27, + "27": "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END", + "X_V_IF_NO_EXPRESSION": 28, + "28": "X_V_IF_NO_EXPRESSION", + "X_V_IF_SAME_KEY": 29, + "29": "X_V_IF_SAME_KEY", + "X_V_ELSE_NO_ADJACENT_IF": 30, + "30": "X_V_ELSE_NO_ADJACENT_IF", + "X_V_FOR_NO_EXPRESSION": 31, + "31": "X_V_FOR_NO_EXPRESSION", + "X_V_FOR_MALFORMED_EXPRESSION": 32, + "32": "X_V_FOR_MALFORMED_EXPRESSION", + "X_V_FOR_TEMPLATE_KEY_PLACEMENT": 33, + "33": "X_V_FOR_TEMPLATE_KEY_PLACEMENT", + "X_V_BIND_NO_EXPRESSION": 34, + "34": "X_V_BIND_NO_EXPRESSION", + "X_V_ON_NO_EXPRESSION": 35, + "35": "X_V_ON_NO_EXPRESSION", + "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET": 36, + "36": "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET", + "X_V_SLOT_MIXED_SLOT_USAGE": 37, + "37": "X_V_SLOT_MIXED_SLOT_USAGE", + "X_V_SLOT_DUPLICATE_SLOT_NAMES": 38, + "38": "X_V_SLOT_DUPLICATE_SLOT_NAMES", + "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN": 39, + "39": "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN", + "X_V_SLOT_MISPLACED": 40, + "40": "X_V_SLOT_MISPLACED", + "X_V_MODEL_NO_EXPRESSION": 41, + "41": "X_V_MODEL_NO_EXPRESSION", + "X_V_MODEL_MALFORMED_EXPRESSION": 42, + "42": "X_V_MODEL_MALFORMED_EXPRESSION", + "X_V_MODEL_ON_SCOPE_VARIABLE": 43, + "43": "X_V_MODEL_ON_SCOPE_VARIABLE", + "X_V_MODEL_ON_PROPS": 44, + "44": "X_V_MODEL_ON_PROPS", + "X_INVALID_EXPRESSION": 45, + "45": "X_INVALID_EXPRESSION", + "X_KEEP_ALIVE_INVALID_CHILDREN": 46, + "46": "X_KEEP_ALIVE_INVALID_CHILDREN", + "X_PREFIX_ID_NOT_SUPPORTED": 47, + "47": "X_PREFIX_ID_NOT_SUPPORTED", + "X_MODULE_MODE_NOT_SUPPORTED": 48, + "48": "X_MODULE_MODE_NOT_SUPPORTED", + "X_CACHE_HANDLER_NOT_SUPPORTED": 49, + "49": "X_CACHE_HANDLER_NOT_SUPPORTED", + "X_SCOPE_ID_NOT_SUPPORTED": 50, + "50": "X_SCOPE_ID_NOT_SUPPORTED", + "X_VNODE_HOOKS": 51, + "51": "X_VNODE_HOOKS", + "X_V_BIND_INVALID_SAME_NAME_ARGUMENT": 52, + "52": "X_V_BIND_INVALID_SAME_NAME_ARGUMENT", + "__EXTEND_POINT__": 53, + "53": "__EXTEND_POINT__" + }; + const errorMessages = { + // parse errors + [0]: "Illegal comment.", + [1]: "CDATA section is allowed only in XML context.", + [2]: "Duplicate attribute.", + [3]: "End tag cannot have attributes.", + [4]: "Illegal '/' in tags.", + [5]: "Unexpected EOF in tag.", + [6]: "Unexpected EOF in CDATA section.", + [7]: "Unexpected EOF in comment.", + [8]: "Unexpected EOF in script.", + [9]: "Unexpected EOF in tag.", + [10]: "Incorrectly closed comment.", + [11]: "Incorrectly opened comment.", + [12]: "Illegal tag name. Use '<' to print '<'.", + [13]: "Attribute value was expected.", + [14]: "End tag name was expected.", + [15]: "Whitespace was expected.", + [16]: "Unexpected '<!--' in comment.", + [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`, + [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).", + [19]: "Attribute name cannot start with '='.", + [21]: "'<?' is allowed only in XML context.", + [20]: `Unexpected null character.`, + [22]: "Illegal '/' in tags.", + // Vue-specific parse errors + [23]: "Invalid end tag.", + [24]: "Element is missing end tag.", + [25]: "Interpolation end sign was not found.", + [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.", + [26]: "Legal directive name was expected.", + // transform errors + [28]: `v-if/v-else-if is missing expression.`, + [29]: `v-if/else branches must use unique keys.`, + [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`, + [31]: `v-for is missing expression.`, + [32]: `v-for has invalid expression.`, + [33]: `<template v-for> key should be placed on the <template> tag.`, + [34]: `v-bind is missing expression.`, + [52]: `v-bind with same-name shorthand only allows static argument.`, + [35]: `v-on is missing expression.`, + [36]: `Unexpected custom directive on <slot> outlet.`, + [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`, + [38]: `Duplicate slot names found. `, + [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`, + [40]: `v-slot can only be used on components or <template> tags.`, + [41]: `v-model is missing expression.`, + [42]: `v-model value must be a valid JavaScript member expression.`, + [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`, + [44]: `v-model cannot be used on a prop, because local prop bindings are not writable. +Use a v-bind binding combined with a v-on listener that emits update:x event instead.`, + [45]: `Error parsing JavaScript expression: `, + [46]: `<KeepAlive> expects exactly one child component.`, + [51]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`, + // generic errors + [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`, + [48]: `ES module mode is not supported in this build of compiler.`, + [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`, + [50]: `"scopeId" option is only supported in module mode.`, + // just to fulfill types + [53]: `` + }; + + function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) { + { + return; + } + } + function isReferencedIdentifier(id, parent, parentStack) { + { + return false; + } + } + function isInDestructureAssignment(parent, parentStack) { + if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "AssignmentExpression") { + return true; + } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) { + break; + } + } + } + return false; + } + function isInNewExpression(parentStack) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "NewExpression") { + return true; + } else if (p.type !== "MemberExpression") { + break; + } + } + return false; + } + function walkFunctionParams(node, onIdent) { + for (const p of node.params) { + for (const id of extractIdentifiers(p)) { + onIdent(id); + } + } + } + function walkBlockDeclarations(block, onIdent) { + for (const stmt of block.body) { + if (stmt.type === "VariableDeclaration") { + if (stmt.declare) continue; + for (const decl of stmt.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") { + if (stmt.declare || !stmt.id) continue; + onIdent(stmt.id); + } else if (isForStatement(stmt)) { + walkForStatement(stmt, true, onIdent); + } + } + } + function isForStatement(stmt) { + return stmt.type === "ForOfStatement" || stmt.type === "ForInStatement" || stmt.type === "ForStatement"; + } + function walkForStatement(stmt, isVar, onIdent) { + const variable = stmt.type === "ForStatement" ? stmt.init : stmt.left; + if (variable && variable.type === "VariableDeclaration" && (variable.kind === "var" ? isVar : !isVar)) { + for (const decl of variable.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } + } + function extractIdentifiers(param, nodes = []) { + switch (param.type) { + case "Identifier": + nodes.push(param); + break; + case "MemberExpression": + let object = param; + while (object.type === "MemberExpression") { + object = object.object; + } + nodes.push(object); + break; + case "ObjectPattern": + for (const prop of param.properties) { + if (prop.type === "RestElement") { + extractIdentifiers(prop.argument, nodes); + } else { + extractIdentifiers(prop.value, nodes); + } + } + break; + case "ArrayPattern": + param.elements.forEach((element) => { + if (element) extractIdentifiers(element, nodes); + }); + break; + case "RestElement": + extractIdentifiers(param.argument, nodes); + break; + case "AssignmentPattern": + extractIdentifiers(param.left, nodes); + break; + } + return nodes; + } + const isFunctionType = (node) => { + return /Function(?:Expression|Declaration)$|Method$/.test(node.type); + }; + const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed; + const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node; + const TS_NODE_TYPES = [ + "TSAsExpression", + // foo as number + "TSTypeAssertion", + // (<number>foo) + "TSNonNullExpression", + // foo! + "TSInstantiationExpression", + // foo<string> + "TSSatisfiesExpression" + // foo satisfies T + ]; + function unwrapTSNode(node) { + if (TS_NODE_TYPES.includes(node.type)) { + return unwrapTSNode(node.expression); + } else { + return node; + } + } + + const isStaticExp = (p) => p.type === 4 && p.isStatic; + function isCoreComponent(tag) { + switch (tag) { + case "Teleport": + case "teleport": + return TELEPORT; + case "Suspense": + case "suspense": + return SUSPENSE; + case "KeepAlive": + case "keep-alive": + return KEEP_ALIVE; + case "BaseTransition": + case "base-transition": + return BASE_TRANSITION; + } + } + const nonIdentifierRE = /^$|^\d|[^\$\w\xA0-\uFFFF]/; + const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name); + const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/; + const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/; + const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g; + const getExpSource = (exp) => exp.type === 4 ? exp.content : exp.loc.source; + const isMemberExpressionBrowser = (exp) => { + const path = getExpSource(exp).trim().replace(whitespaceRE, (s) => s.trim()); + let state = 0 /* inMemberExp */; + let stateStack = []; + let currentOpenBracketCount = 0; + let currentOpenParensCount = 0; + let currentStringType = null; + for (let i = 0; i < path.length; i++) { + const char = path.charAt(i); + switch (state) { + case 0 /* inMemberExp */: + if (char === "[") { + stateStack.push(state); + state = 1 /* inBrackets */; + currentOpenBracketCount++; + } else if (char === "(") { + stateStack.push(state); + state = 2 /* inParens */; + currentOpenParensCount++; + } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) { + return false; + } + break; + case 1 /* inBrackets */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `[`) { + currentOpenBracketCount++; + } else if (char === `]`) { + if (!--currentOpenBracketCount) { + state = stateStack.pop(); + } + } + break; + case 2 /* inParens */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `(`) { + currentOpenParensCount++; + } else if (char === `)`) { + if (i === path.length - 1) { + return false; + } + if (!--currentOpenParensCount) { + state = stateStack.pop(); + } + } + break; + case 3 /* inString */: + if (char === currentStringType) { + state = stateStack.pop(); + currentStringType = null; + } + break; + } + } + return !currentOpenBracketCount && !currentOpenParensCount; + }; + const isMemberExpressionNode = NOOP ; + const isMemberExpression = isMemberExpressionBrowser ; + const fnExpRE = /^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/; + const isFnExpressionBrowser = (exp) => fnExpRE.test(getExpSource(exp)); + const isFnExpressionNode = NOOP ; + const isFnExpression = isFnExpressionBrowser ; + function advancePositionWithClone(pos, source, numberOfCharacters = source.length) { + return advancePositionWithMutation( + { + offset: pos.offset, + line: pos.line, + column: pos.column + }, + source, + numberOfCharacters + ); + } + function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) { + let linesCount = 0; + let lastNewLinePos = -1; + for (let i = 0; i < numberOfCharacters; i++) { + if (source.charCodeAt(i) === 10) { + linesCount++; + lastNewLinePos = i; + } + } + pos.offset += numberOfCharacters; + pos.line += linesCount; + pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos; + return pos; + } + function assert(condition, msg) { + if (!condition) { + throw new Error(msg || `unexpected compiler condition`); + } + } + function findDir(node, name, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (allowEmpty || p.exp) && (isString(name) ? p.name === name : name.test(p.name))) { + return p; + } + } + } + function findProp(node, name, dynamicOnly = false, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (dynamicOnly) continue; + if (p.name === name && (p.value || allowEmpty)) { + return p; + } + } else if (p.name === "bind" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) { + return p; + } + } + } + function isStaticArgOf(arg, name) { + return !!(arg && isStaticExp(arg) && arg.content === name); + } + function hasDynamicKeyVBind(node) { + return node.props.some( + (p) => p.type === 7 && p.name === "bind" && (!p.arg || // v-bind="obj" + p.arg.type !== 4 || // v-bind:[_ctx.foo] + !p.arg.isStatic) + // v-bind:[foo] + ); + } + function isText$1(node) { + return node.type === 5 || node.type === 2; + } + function isVPre(p) { + return p.type === 7 && p.name === "pre"; + } + function isVSlot(p) { + return p.type === 7 && p.name === "slot"; + } + function isTemplateNode(node) { + return node.type === 1 && node.tagType === 3; + } + function isSlotOutlet(node) { + return node.type === 1 && node.tagType === 2; + } + const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]); + function getUnnormalizedProps(props, callPath = []) { + if (props && !isString(props) && props.type === 14) { + const callee = props.callee; + if (!isString(callee) && propsHelperSet.has(callee)) { + return getUnnormalizedProps( + props.arguments[0], + callPath.concat(props) + ); + } + } + return [props, callPath]; + } + function injectProp(node, prop, context) { + let propsWithInjection; + let props = node.type === 13 ? node.props : node.arguments[2]; + let callPath = []; + let parentCall; + if (props && !isString(props) && props.type === 14) { + const ret = getUnnormalizedProps(props); + props = ret[0]; + callPath = ret[1]; + parentCall = callPath[callPath.length - 1]; + } + if (props == null || isString(props)) { + propsWithInjection = createObjectExpression([prop]); + } else if (props.type === 14) { + const first = props.arguments[0]; + if (!isString(first) && first.type === 15) { + if (!hasProp(prop, first)) { + first.properties.unshift(prop); + } + } else { + if (props.callee === TO_HANDLERS) { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + } else { + props.arguments.unshift(createObjectExpression([prop])); + } + } + !propsWithInjection && (propsWithInjection = props); + } else if (props.type === 15) { + if (!hasProp(prop, props)) { + props.properties.unshift(prop); + } + propsWithInjection = props; + } else { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) { + parentCall = callPath[callPath.length - 2]; + } + } + if (node.type === 13) { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.props = propsWithInjection; + } + } else { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.arguments[2] = propsWithInjection; + } + } + } + function hasProp(prop, props) { + let result = false; + if (prop.key.type === 4) { + const propKeyName = prop.key.content; + result = props.properties.some( + (p) => p.key.type === 4 && p.key.content === propKeyName + ); + } + return result; + } + function toValidAssetId(name, type) { + return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => { + return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString(); + })}`; + } + function hasScopeRef(node, ids) { + if (!node || Object.keys(ids).length === 0) { + return false; + } + switch (node.type) { + case 1: + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) { + return true; + } + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 11: + if (hasScopeRef(node.source, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 9: + return node.branches.some((b) => hasScopeRef(b, ids)); + case 10: + if (hasScopeRef(node.condition, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 4: + return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content]; + case 8: + return node.children.some((c) => isObject(c) && hasScopeRef(c, ids)); + case 5: + case 12: + return hasScopeRef(node.content, ids); + case 2: + case 3: + case 20: + return false; + default: + return false; + } + } + function getMemoedVNodeCall(node) { + if (node.type === 14 && node.callee === WITH_MEMO) { + return node.arguments[1].returns; + } else { + return node; + } + } + const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/; + + const defaultParserOptions = { + parseMode: "base", + ns: 0, + delimiters: [`{{`, `}}`], + getNamespace: () => 0, + isVoidTag: NO, + isPreTag: NO, + isIgnoreNewlineTag: NO, + isCustomElement: NO, + onError: defaultOnError, + onWarn: defaultOnWarn, + comments: true, + prefixIdentifiers: false + }; + let currentOptions = defaultParserOptions; + let currentRoot = null; + let currentInput = ""; + let currentOpenTag = null; + let currentProp = null; + let currentAttrValue = ""; + let currentAttrStartIndex = -1; + let currentAttrEndIndex = -1; + let inPre = 0; + let inVPre = false; + let currentVPreBoundary = null; + const stack = []; + const tokenizer = new Tokenizer(stack, { + onerr: emitError, + ontext(start, end) { + onText(getSlice(start, end), start, end); + }, + ontextentity(char, start, end) { + onText(char, start, end); + }, + oninterpolation(start, end) { + if (inVPre) { + return onText(getSlice(start, end), start, end); + } + let innerStart = start + tokenizer.delimiterOpen.length; + let innerEnd = end - tokenizer.delimiterClose.length; + while (isWhitespace(currentInput.charCodeAt(innerStart))) { + innerStart++; + } + while (isWhitespace(currentInput.charCodeAt(innerEnd - 1))) { + innerEnd--; + } + let exp = getSlice(innerStart, innerEnd); + if (exp.includes("&")) { + { + exp = currentOptions.decodeEntities(exp, false); + } + } + addNode({ + type: 5, + content: createExp(exp, false, getLoc(innerStart, innerEnd)), + loc: getLoc(start, end) + }); + }, + onopentagname(start, end) { + const name = getSlice(start, end); + currentOpenTag = { + type: 1, + tag: name, + ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns), + tagType: 0, + // will be refined on tag close + props: [], + children: [], + loc: getLoc(start - 1, end), + codegenNode: void 0 + }; + }, + onopentagend(end) { + endOpenTag(end); + }, + onclosetag(start, end) { + const name = getSlice(start, end); + if (!currentOptions.isVoidTag(name)) { + let found = false; + for (let i = 0; i < stack.length; i++) { + const e = stack[i]; + if (e.tag.toLowerCase() === name.toLowerCase()) { + found = true; + if (i > 0) { + emitError(24, stack[0].loc.start.offset); + } + for (let j = 0; j <= i; j++) { + const el = stack.shift(); + onCloseTag(el, end, j < i); + } + break; + } + } + if (!found) { + emitError(23, backTrack(start, 60)); + } + } + }, + onselfclosingtag(end) { + const name = currentOpenTag.tag; + currentOpenTag.isSelfClosing = true; + endOpenTag(end); + if (stack[0] && stack[0].tag === name) { + onCloseTag(stack.shift(), end); + } + }, + onattribname(start, end) { + currentProp = { + type: 6, + name: getSlice(start, end), + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + }, + ondirname(start, end) { + const raw = getSlice(start, end); + const name = raw === "." || raw === ":" ? "bind" : raw === "@" ? "on" : raw === "#" ? "slot" : raw.slice(2); + if (!inVPre && name === "") { + emitError(26, start); + } + if (inVPre || name === "") { + currentProp = { + type: 6, + name: raw, + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + } else { + currentProp = { + type: 7, + name, + rawName: raw, + exp: void 0, + arg: void 0, + modifiers: raw === "." ? [createSimpleExpression("prop")] : [], + loc: getLoc(start) + }; + if (name === "pre") { + inVPre = tokenizer.inVPre = true; + currentVPreBoundary = currentOpenTag; + const props = currentOpenTag.props; + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7) { + props[i] = dirToAttr(props[i]); + } + } + } + } + }, + ondirarg(start, end) { + if (start === end) return; + const arg = getSlice(start, end); + if (inVPre && !isVPre(currentProp)) { + currentProp.name += arg; + setLocEnd(currentProp.nameLoc, end); + } else { + const isStatic = arg[0] !== `[`; + currentProp.arg = createExp( + isStatic ? arg : arg.slice(1, -1), + isStatic, + getLoc(start, end), + isStatic ? 3 : 0 + ); + } + }, + ondirmodifier(start, end) { + const mod = getSlice(start, end); + if (inVPre && !isVPre(currentProp)) { + currentProp.name += "." + mod; + setLocEnd(currentProp.nameLoc, end); + } else if (currentProp.name === "slot") { + const arg = currentProp.arg; + if (arg) { + arg.content += "." + mod; + setLocEnd(arg.loc, end); + } + } else { + const exp = createSimpleExpression(mod, true, getLoc(start, end)); + currentProp.modifiers.push(exp); + } + }, + onattribdata(start, end) { + currentAttrValue += getSlice(start, end); + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribentity(char, start, end) { + currentAttrValue += char; + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribnameend(end) { + const start = currentProp.loc.start.offset; + const name = getSlice(start, end); + if (currentProp.type === 7) { + currentProp.rawName = name; + } + if (currentOpenTag.props.some( + (p) => (p.type === 7 ? p.rawName : p.name) === name + )) { + emitError(2, start); + } + }, + onattribend(quote, end) { + if (currentOpenTag && currentProp) { + setLocEnd(currentProp.loc, end); + if (quote !== 0) { + if (currentAttrValue.includes("&")) { + currentAttrValue = currentOptions.decodeEntities( + currentAttrValue, + true + ); + } + if (currentProp.type === 6) { + if (currentProp.name === "class") { + currentAttrValue = condense(currentAttrValue).trim(); + } + if (quote === 1 && !currentAttrValue) { + emitError(13, end); + } + currentProp.value = { + type: 2, + content: currentAttrValue, + loc: quote === 1 ? getLoc(currentAttrStartIndex, currentAttrEndIndex) : getLoc(currentAttrStartIndex - 1, currentAttrEndIndex + 1) + }; + if (tokenizer.inSFCRoot && currentOpenTag.tag === "template" && currentProp.name === "lang" && currentAttrValue && currentAttrValue !== "html") { + tokenizer.enterRCDATA(toCharCodes(`</template`), 0); + } + } else { + let expParseMode = 0 /* Normal */; + currentProp.exp = createExp( + currentAttrValue, + false, + getLoc(currentAttrStartIndex, currentAttrEndIndex), + 0, + expParseMode + ); + if (currentProp.name === "for") { + currentProp.forParseResult = parseForExpression(currentProp.exp); + } + let syncIndex = -1; + if (currentProp.name === "bind" && (syncIndex = currentProp.modifiers.findIndex( + (mod) => mod.content === "sync" + )) > -1 && checkCompatEnabled( + "COMPILER_V_BIND_SYNC", + currentOptions, + currentProp.loc, + currentProp.arg.loc.source + )) { + currentProp.name = "model"; + currentProp.modifiers.splice(syncIndex, 1); + } + } + } + if (currentProp.type !== 7 || currentProp.name !== "pre") { + currentOpenTag.props.push(currentProp); + } + } + currentAttrValue = ""; + currentAttrStartIndex = currentAttrEndIndex = -1; + }, + oncomment(start, end) { + if (currentOptions.comments) { + addNode({ + type: 3, + content: getSlice(start, end), + loc: getLoc(start - 4, end + 3) + }); + } + }, + onend() { + const end = currentInput.length; + if (tokenizer.state !== 1) { + switch (tokenizer.state) { + case 5: + case 8: + emitError(5, end); + break; + case 3: + case 4: + emitError( + 25, + tokenizer.sectionStart + ); + break; + case 28: + if (tokenizer.currentSequence === Sequences.CdataEnd) { + emitError(6, end); + } else { + emitError(7, end); + } + break; + case 6: + case 7: + case 9: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + // " + case 20: + // ' + case 21: + emitError(9, end); + break; + } + } + for (let index = 0; index < stack.length; index++) { + onCloseTag(stack[index], end - 1); + emitError(24, stack[index].loc.start.offset); + } + }, + oncdata(start, end) { + if (stack[0].ns !== 0) { + onText(getSlice(start, end), start, end); + } else { + emitError(1, start - 9); + } + }, + onprocessinginstruction(start) { + if ((stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + emitError( + 21, + start - 1 + ); + } + } + }); + const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; + const stripParensRE = /^\(|\)$/g; + function parseForExpression(input) { + const loc = input.loc; + const exp = input.content; + const inMatch = exp.match(forAliasRE); + if (!inMatch) return; + const [, LHS, RHS] = inMatch; + const createAliasExpression = (content, offset, asParam = false) => { + const start = loc.start.offset + offset; + const end = start + content.length; + return createExp( + content, + false, + getLoc(start, end), + 0, + asParam ? 1 /* Params */ : 0 /* Normal */ + ); + }; + const result = { + source: createAliasExpression(RHS.trim(), exp.indexOf(RHS, LHS.length)), + value: void 0, + key: void 0, + index: void 0, + finalized: false + }; + let valueContent = LHS.trim().replace(stripParensRE, "").trim(); + const trimmedOffset = LHS.indexOf(valueContent); + const iteratorMatch = valueContent.match(forIteratorRE); + if (iteratorMatch) { + valueContent = valueContent.replace(forIteratorRE, "").trim(); + const keyContent = iteratorMatch[1].trim(); + let keyOffset; + if (keyContent) { + keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length); + result.key = createAliasExpression(keyContent, keyOffset, true); + } + if (iteratorMatch[2]) { + const indexContent = iteratorMatch[2].trim(); + if (indexContent) { + result.index = createAliasExpression( + indexContent, + exp.indexOf( + indexContent, + result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length + ), + true + ); + } + } + } + if (valueContent) { + result.value = createAliasExpression(valueContent, trimmedOffset, true); + } + return result; + } + function getSlice(start, end) { + return currentInput.slice(start, end); + } + function endOpenTag(end) { + if (tokenizer.inSFCRoot) { + currentOpenTag.innerLoc = getLoc(end + 1, end + 1); + } + addNode(currentOpenTag); + const { tag, ns } = currentOpenTag; + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre++; + } + if (currentOptions.isVoidTag(tag)) { + onCloseTag(currentOpenTag, end); + } else { + stack.unshift(currentOpenTag); + if (ns === 1 || ns === 2) { + tokenizer.inXML = true; + } + } + currentOpenTag = null; + } + function onText(content, start, end) { + { + const tag = stack[0] && stack[0].tag; + if (tag !== "script" && tag !== "style" && content.includes("&")) { + content = currentOptions.decodeEntities(content, false); + } + } + const parent = stack[0] || currentRoot; + const lastNode = parent.children[parent.children.length - 1]; + if (lastNode && lastNode.type === 2) { + lastNode.content += content; + setLocEnd(lastNode.loc, end); + } else { + parent.children.push({ + type: 2, + content, + loc: getLoc(start, end) + }); + } + } + function onCloseTag(el, end, isImplied = false) { + if (isImplied) { + setLocEnd(el.loc, backTrack(end, 60)); + } else { + setLocEnd(el.loc, lookAhead(end, 62) + 1); + } + if (tokenizer.inSFCRoot) { + if (el.children.length) { + el.innerLoc.end = extend({}, el.children[el.children.length - 1].loc.end); + } else { + el.innerLoc.end = extend({}, el.innerLoc.start); + } + el.innerLoc.source = getSlice( + el.innerLoc.start.offset, + el.innerLoc.end.offset + ); + } + const { tag, ns, children } = el; + if (!inVPre) { + if (tag === "slot") { + el.tagType = 2; + } else if (isFragmentTemplate(el)) { + el.tagType = 3; + } else if (isComponent(el)) { + el.tagType = 1; + } + } + if (!tokenizer.inRCDATA) { + el.children = condenseWhitespace(children); + } + if (ns === 0 && currentOptions.isIgnoreNewlineTag(tag)) { + const first = children[0]; + if (first && first.type === 2) { + first.content = first.content.replace(/^\r?\n/, ""); + } + } + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre--; + } + if (currentVPreBoundary === el) { + inVPre = tokenizer.inVPre = false; + currentVPreBoundary = null; + } + if (tokenizer.inXML && (stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + tokenizer.inXML = false; + } + { + const props = el.props; + if (isCompatEnabled( + "COMPILER_V_IF_V_FOR_PRECEDENCE", + currentOptions + )) { + let hasIf = false; + let hasFor = false; + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 7) { + if (p.name === "if") { + hasIf = true; + } else if (p.name === "for") { + hasFor = true; + } + } + if (hasIf && hasFor) { + warnDeprecation( + "COMPILER_V_IF_V_FOR_PRECEDENCE", + currentOptions, + el.loc + ); + break; + } + } + } + if (!tokenizer.inSFCRoot && isCompatEnabled( + "COMPILER_NATIVE_TEMPLATE", + currentOptions + ) && el.tag === "template" && !isFragmentTemplate(el)) { + warnDeprecation( + "COMPILER_NATIVE_TEMPLATE", + currentOptions, + el.loc + ); + const parent = stack[0] || currentRoot; + const index = parent.children.indexOf(el); + parent.children.splice(index, 1, ...el.children); + } + const inlineTemplateProp = props.find( + (p) => p.type === 6 && p.name === "inline-template" + ); + if (inlineTemplateProp && checkCompatEnabled( + "COMPILER_INLINE_TEMPLATE", + currentOptions, + inlineTemplateProp.loc + ) && el.children.length) { + inlineTemplateProp.value = { + type: 2, + content: getSlice( + el.children[0].loc.start.offset, + el.children[el.children.length - 1].loc.end.offset + ), + loc: inlineTemplateProp.loc + }; + } + } + } + function lookAhead(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i < currentInput.length - 1) i++; + return i; + } + function backTrack(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i >= 0) i--; + return i; + } + const specialTemplateDir = /* @__PURE__ */ new Set(["if", "else", "else-if", "for", "slot"]); + function isFragmentTemplate({ tag, props }) { + if (tag === "template") { + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7 && specialTemplateDir.has(props[i].name)) { + return true; + } + } + } + return false; + } + function isComponent({ tag, props }) { + if (currentOptions.isCustomElement(tag)) { + return false; + } + if (tag === "component" || isUpperCase(tag.charCodeAt(0)) || isCoreComponent(tag) || currentOptions.isBuiltInComponent && currentOptions.isBuiltInComponent(tag) || currentOptions.isNativeTag && !currentOptions.isNativeTag(tag)) { + return true; + } + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 6) { + if (p.name === "is" && p.value) { + if (p.value.content.startsWith("vue:")) { + return true; + } else if (checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; + } + } + } else if (// :is on plain element - only treat as component in compat mode + p.name === "bind" && isStaticArgOf(p.arg, "is") && checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; + } + } + return false; + } + function isUpperCase(c) { + return c > 64 && c < 91; + } + const windowsNewlineRE = /\r\n/g; + function condenseWhitespace(nodes) { + const shouldCondense = currentOptions.whitespace !== "preserve"; + let removedWhitespace = false; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (node.type === 2) { + if (!inPre) { + if (isAllWhitespace(node.content)) { + const prev = nodes[i - 1] && nodes[i - 1].type; + const next = nodes[i + 1] && nodes[i + 1].type; + if (!prev || !next || shouldCondense && (prev === 3 && (next === 3 || next === 1) || prev === 1 && (next === 3 || next === 1 && hasNewlineChar(node.content)))) { + removedWhitespace = true; + nodes[i] = null; + } else { + node.content = " "; + } + } else if (shouldCondense) { + node.content = condense(node.content); + } + } else { + node.content = node.content.replace(windowsNewlineRE, "\n"); + } + } + } + return removedWhitespace ? nodes.filter(Boolean) : nodes; + } + function isAllWhitespace(str) { + for (let i = 0; i < str.length; i++) { + if (!isWhitespace(str.charCodeAt(i))) { + return false; + } + } + return true; + } + function hasNewlineChar(str) { + for (let i = 0; i < str.length; i++) { + const c = str.charCodeAt(i); + if (c === 10 || c === 13) { + return true; + } + } + return false; + } + function condense(str) { + let ret = ""; + let prevCharIsWhitespace = false; + for (let i = 0; i < str.length; i++) { + if (isWhitespace(str.charCodeAt(i))) { + if (!prevCharIsWhitespace) { + ret += " "; + prevCharIsWhitespace = true; + } + } else { + ret += str[i]; + prevCharIsWhitespace = false; + } + } + return ret; + } + function addNode(node) { + (stack[0] || currentRoot).children.push(node); + } + function getLoc(start, end) { + return { + start: tokenizer.getPos(start), + // @ts-expect-error allow late attachment + end: end == null ? end : tokenizer.getPos(end), + // @ts-expect-error allow late attachment + source: end == null ? end : getSlice(start, end) + }; + } + function cloneLoc(loc) { + return getLoc(loc.start.offset, loc.end.offset); + } + function setLocEnd(loc, end) { + loc.end = tokenizer.getPos(end); + loc.source = getSlice(loc.start.offset, end); + } + function dirToAttr(dir) { + const attr = { + type: 6, + name: dir.rawName, + nameLoc: getLoc( + dir.loc.start.offset, + dir.loc.start.offset + dir.rawName.length + ), + value: void 0, + loc: dir.loc + }; + if (dir.exp) { + const loc = dir.exp.loc; + if (loc.end.offset < dir.loc.end.offset) { + loc.start.offset--; + loc.start.column--; + loc.end.offset++; + loc.end.column++; + } + attr.value = { + type: 2, + content: dir.exp.content, + loc + }; + } + return attr; + } + function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0 /* Normal */) { + const exp = createSimpleExpression(content, isStatic, loc, constType); + return exp; + } + function emitError(code, index, message) { + currentOptions.onError( + createCompilerError(code, getLoc(index, index), void 0, message) + ); + } + function reset() { + tokenizer.reset(); + currentOpenTag = null; + currentProp = null; + currentAttrValue = ""; + currentAttrStartIndex = -1; + currentAttrEndIndex = -1; + stack.length = 0; + } + function baseParse(input, options) { + reset(); + currentInput = input; + currentOptions = extend({}, defaultParserOptions); + if (options) { + let key; + for (key in options) { + if (options[key] != null) { + currentOptions[key] = options[key]; + } + } + } + { + if (!currentOptions.decodeEntities) { + throw new Error( + `[@vue/compiler-core] decodeEntities option is required in browser builds.` + ); + } + } + tokenizer.mode = currentOptions.parseMode === "html" ? 1 : currentOptions.parseMode === "sfc" ? 2 : 0; + tokenizer.inXML = currentOptions.ns === 1 || currentOptions.ns === 2; + const delimiters = options && options.delimiters; + if (delimiters) { + tokenizer.delimiterOpen = toCharCodes(delimiters[0]); + tokenizer.delimiterClose = toCharCodes(delimiters[1]); + } + const root = currentRoot = createRoot([], input); + tokenizer.parse(currentInput); + root.loc = getLoc(0, input.length); + root.children = condenseWhitespace(root.children); + currentRoot = null; + return root; + } + + function cacheStatic(root, context) { + walk( + root, + void 0, + context, + // Root node is unfortunately non-hoistable due to potential parent + // fallthrough attributes. + !!getSingleElementRoot(root) + ); + } + function getSingleElementRoot(root) { + const children = root.children.filter((x) => x.type !== 3); + return children.length === 1 && children[0].type === 1 && !isSlotOutlet(children[0]) ? children[0] : null; + } + function walk(node, parent, context, doNotHoistNode = false, inFor = false) { + const { children } = node; + const toCache = []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.type === 1 && child.tagType === 0) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType > 0) { + if (constantType >= 2) { + child.codegenNode.patchFlag = -1; + toCache.push(child); + continue; + } + } else { + const codegenNode = child.codegenNode; + if (codegenNode.type === 13) { + const flag = codegenNode.patchFlag; + if ((flag === void 0 || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) { + const props = getNodeProps(child); + if (props) { + codegenNode.props = context.hoist(props); + } + } + if (codegenNode.dynamicProps) { + codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps); + } + } + } + } else if (child.type === 12) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType >= 2) { + if (child.codegenNode.type === 14 && child.codegenNode.arguments.length > 0) { + child.codegenNode.arguments.push( + -1 + (` /* ${PatchFlagNames[-1]} */` ) + ); + } + toCache.push(child); + continue; + } + } + if (child.type === 1) { + const isComponent = child.tagType === 1; + if (isComponent) { + context.scopes.vSlot++; + } + walk(child, node, context, false, inFor); + if (isComponent) { + context.scopes.vSlot--; + } + } else if (child.type === 11) { + walk(child, node, context, child.children.length === 1, true); + } else if (child.type === 9) { + for (let i2 = 0; i2 < child.branches.length; i2++) { + walk( + child.branches[i2], + node, + context, + child.branches[i2].children.length === 1, + inFor + ); + } + } + } + let cachedAsArray = false; + const slotCacheKeys = []; + if (toCache.length === children.length && node.type === 1) { + if (node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && isArray(node.codegenNode.children)) { + node.codegenNode.children = getCacheExpression( + createArrayExpression(node.codegenNode.children) + ); + cachedAsArray = true; + } else if (node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) { + const slot = getSlotNode(node.codegenNode, "default"); + if (slot) { + slotCacheKeys.push(context.cached.length); + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } else if (node.tagType === 3 && parent && parent.type === 1 && parent.tagType === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !isArray(parent.codegenNode.children) && parent.codegenNode.children.type === 15) { + const slotName = findDir(node, "slot", true); + const slot = slotName && slotName.arg && getSlotNode(parent.codegenNode, slotName.arg); + if (slot) { + slotCacheKeys.push(context.cached.length); + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } + } + if (!cachedAsArray) { + for (const child of toCache) { + slotCacheKeys.push(context.cached.length); + child.codegenNode = context.cache(child.codegenNode); + } + } + if (slotCacheKeys.length && node.type === 1 && node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray(node.codegenNode.children) && node.codegenNode.children.type === 15) { + node.codegenNode.children.properties.push( + createObjectProperty( + `__`, + createSimpleExpression(JSON.stringify(slotCacheKeys), false) + ) + ); + } + function getCacheExpression(value) { + const exp = context.cache(value); + if (inFor && context.hmr) { + exp.needArraySpread = true; + } + return exp; + } + function getSlotNode(node2, name) { + if (node2.children && !isArray(node2.children) && node2.children.type === 15) { + const slot = node2.children.properties.find( + (p) => p.key === name || p.key.content === name + ); + return slot && slot.value; + } + } + if (toCache.length && context.transformHoist) { + context.transformHoist(children, context, node); + } + } + function getConstantType(node, context) { + const { constantCache } = context; + switch (node.type) { + case 1: + if (node.tagType !== 0) { + return 0; + } + const cached = constantCache.get(node); + if (cached !== void 0) { + return cached; + } + const codegenNode = node.codegenNode; + if (codegenNode.type !== 13) { + return 0; + } + if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject" && node.tag !== "math") { + return 0; + } + if (codegenNode.patchFlag === void 0) { + let returnType2 = 3; + const generatedPropsType = getGeneratedPropsConstantType(node, context); + if (generatedPropsType === 0) { + constantCache.set(node, 0); + return 0; + } + if (generatedPropsType < returnType2) { + returnType2 = generatedPropsType; + } + for (let i = 0; i < node.children.length; i++) { + const childType = getConstantType(node.children[i], context); + if (childType === 0) { + constantCache.set(node, 0); + return 0; + } + if (childType < returnType2) { + returnType2 = childType; + } + } + if (returnType2 > 1) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && p.name === "bind" && p.exp) { + const expType = getConstantType(p.exp, context); + if (expType === 0) { + constantCache.set(node, 0); + return 0; + } + if (expType < returnType2) { + returnType2 = expType; + } + } + } + } + if (codegenNode.isBlock) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7) { + constantCache.set(node, 0); + return 0; + } + } + context.removeHelper(OPEN_BLOCK); + context.removeHelper( + getVNodeBlockHelper(context.inSSR, codegenNode.isComponent) + ); + codegenNode.isBlock = false; + context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent)); + } + constantCache.set(node, returnType2); + return returnType2; + } else { + constantCache.set(node, 0); + return 0; + } + case 2: + case 3: + return 3; + case 9: + case 11: + case 10: + return 0; + case 5: + case 12: + return getConstantType(node.content, context); + case 4: + return node.constType; + case 8: + let returnType = 3; + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (isString(child) || isSymbol(child)) { + continue; + } + const childType = getConstantType(child, context); + if (childType === 0) { + return 0; + } else if (childType < returnType) { + returnType = childType; + } + } + return returnType; + case 20: + return 2; + default: + return 0; + } + } + const allowHoistedHelperSet = /* @__PURE__ */ new Set([ + NORMALIZE_CLASS, + NORMALIZE_STYLE, + NORMALIZE_PROPS, + GUARD_REACTIVE_PROPS + ]); + function getConstantTypeOfHelperCall(value, context) { + if (value.type === 14 && !isString(value.callee) && allowHoistedHelperSet.has(value.callee)) { + const arg = value.arguments[0]; + if (arg.type === 4) { + return getConstantType(arg, context); + } else if (arg.type === 14) { + return getConstantTypeOfHelperCall(arg, context); + } + } + return 0; + } + function getGeneratedPropsConstantType(node, context) { + let returnType = 3; + const props = getNodeProps(node); + if (props && props.type === 15) { + const { properties } = props; + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + const keyType = getConstantType(key, context); + if (keyType === 0) { + return keyType; + } + if (keyType < returnType) { + returnType = keyType; + } + let valueType; + if (value.type === 4) { + valueType = getConstantType(value, context); + } else if (value.type === 14) { + valueType = getConstantTypeOfHelperCall(value, context); + } else { + valueType = 0; + } + if (valueType === 0) { + return valueType; + } + if (valueType < returnType) { + returnType = valueType; + } + } + } + return returnType; + } + function getNodeProps(node) { + const codegenNode = node.codegenNode; + if (codegenNode.type === 13) { + return codegenNode.props; + } + } + + function createTransformContext(root, { + filename = "", + prefixIdentifiers = false, + hoistStatic = false, + hmr = false, + cacheHandlers = false, + nodeTransforms = [], + directiveTransforms = {}, + transformHoist = null, + isBuiltInComponent = NOOP, + isCustomElement = NOOP, + expressionPlugins = [], + scopeId = null, + slotted = true, + ssr = false, + inSSR = false, + ssrCssVars = ``, + bindingMetadata = EMPTY_OBJ, + inline = false, + isTS = false, + onError = defaultOnError, + onWarn = defaultOnWarn, + compatConfig + }) { + const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/); + const context = { + // options + filename, + selfName: nameMatch && capitalize(camelize(nameMatch[1])), + prefixIdentifiers, + hoistStatic, + hmr, + cacheHandlers, + nodeTransforms, + directiveTransforms, + transformHoist, + isBuiltInComponent, + isCustomElement, + expressionPlugins, + scopeId, + slotted, + ssr, + inSSR, + ssrCssVars, + bindingMetadata, + inline, + isTS, + onError, + onWarn, + compatConfig, + // state + root, + helpers: /* @__PURE__ */ new Map(), + components: /* @__PURE__ */ new Set(), + directives: /* @__PURE__ */ new Set(), + hoists: [], + imports: [], + cached: [], + constantCache: /* @__PURE__ */ new WeakMap(), + temps: 0, + identifiers: /* @__PURE__ */ Object.create(null), + scopes: { + vFor: 0, + vSlot: 0, + vPre: 0, + vOnce: 0 + }, + parent: null, + grandParent: null, + currentNode: root, + childIndex: 0, + inVOnce: false, + // methods + helper(name) { + const count = context.helpers.get(name) || 0; + context.helpers.set(name, count + 1); + return name; + }, + removeHelper(name) { + const count = context.helpers.get(name); + if (count) { + const currentCount = count - 1; + if (!currentCount) { + context.helpers.delete(name); + } else { + context.helpers.set(name, currentCount); + } + } + }, + helperString(name) { + return `_${helperNameMap[context.helper(name)]}`; + }, + replaceNode(node) { + { + if (!context.currentNode) { + throw new Error(`Node being replaced is already removed.`); + } + if (!context.parent) { + throw new Error(`Cannot replace root node.`); + } + } + context.parent.children[context.childIndex] = context.currentNode = node; + }, + removeNode(node) { + if (!context.parent) { + throw new Error(`Cannot remove root node.`); + } + const list = context.parent.children; + const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1; + if (removalIndex < 0) { + throw new Error(`node being removed is not a child of current parent`); + } + if (!node || node === context.currentNode) { + context.currentNode = null; + context.onNodeRemoved(); + } else { + if (context.childIndex > removalIndex) { + context.childIndex--; + context.onNodeRemoved(); + } + } + context.parent.children.splice(removalIndex, 1); + }, + onNodeRemoved: NOOP, + addIdentifiers(exp) { + }, + removeIdentifiers(exp) { + }, + hoist(exp) { + if (isString(exp)) exp = createSimpleExpression(exp); + context.hoists.push(exp); + const identifier = createSimpleExpression( + `_hoisted_${context.hoists.length}`, + false, + exp.loc, + 2 + ); + identifier.hoisted = exp; + return identifier; + }, + cache(exp, isVNode = false, inVOnce = false) { + const cacheExp = createCacheExpression( + context.cached.length, + exp, + isVNode, + inVOnce + ); + context.cached.push(cacheExp); + return cacheExp; + } + }; + { + context.filters = /* @__PURE__ */ new Set(); + } + return context; + } + function transform(root, options) { + const context = createTransformContext(root, options); + traverseNode(root, context); + if (options.hoistStatic) { + cacheStatic(root, context); + } + if (!options.ssr) { + createRootCodegen(root, context); + } + root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]); + root.components = [...context.components]; + root.directives = [...context.directives]; + root.imports = context.imports; + root.hoists = context.hoists; + root.temps = context.temps; + root.cached = context.cached; + root.transformed = true; + { + root.filters = [...context.filters]; + } + } + function createRootCodegen(root, context) { + const { helper } = context; + const { children } = root; + if (children.length === 1) { + const singleElementRootChild = getSingleElementRoot(root); + if (singleElementRootChild && singleElementRootChild.codegenNode) { + const codegenNode = singleElementRootChild.codegenNode; + if (codegenNode.type === 13) { + convertToBlock(codegenNode, context); + } + root.codegenNode = codegenNode; + } else { + root.codegenNode = children[0]; + } + } else if (children.length > 1) { + let patchFlag = 64; + if (children.filter((c) => c.type !== 3).length === 1) { + patchFlag |= 2048; + } + root.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + root.children, + patchFlag, + void 0, + void 0, + true, + void 0, + false + ); + } else ; + } + function traverseChildren(parent, context) { + let i = 0; + const nodeRemoved = () => { + i--; + }; + for (; i < parent.children.length; i++) { + const child = parent.children[i]; + if (isString(child)) continue; + context.grandParent = context.parent; + context.parent = parent; + context.childIndex = i; + context.onNodeRemoved = nodeRemoved; + traverseNode(child, context); + } + } + function traverseNode(node, context) { + context.currentNode = node; + const { nodeTransforms } = context; + const exitFns = []; + for (let i2 = 0; i2 < nodeTransforms.length; i2++) { + const onExit = nodeTransforms[i2](node, context); + if (onExit) { + if (isArray(onExit)) { + exitFns.push(...onExit); + } else { + exitFns.push(onExit); + } + } + if (!context.currentNode) { + return; + } else { + node = context.currentNode; + } + } + switch (node.type) { + case 3: + if (!context.ssr) { + context.helper(CREATE_COMMENT); + } + break; + case 5: + if (!context.ssr) { + context.helper(TO_DISPLAY_STRING); + } + break; + // for container types, further traverse downwards + case 9: + for (let i2 = 0; i2 < node.branches.length; i2++) { + traverseNode(node.branches[i2], context); + } + break; + case 10: + case 11: + case 1: + case 0: + traverseChildren(node, context); + break; + } + context.currentNode = node; + let i = exitFns.length; + while (i--) { + exitFns[i](); + } + } + function createStructuralDirectiveTransform(name, fn) { + const matches = isString(name) ? (n) => n === name : (n) => name.test(n); + return (node, context) => { + if (node.type === 1) { + const { props } = node; + if (node.tagType === 3 && props.some(isVSlot)) { + return; + } + const exitFns = []; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 7 && matches(prop.name)) { + props.splice(i, 1); + i--; + const onExit = fn(node, prop, context); + if (onExit) exitFns.push(onExit); + } + } + return exitFns; + } + }; + } + + const PURE_ANNOTATION = `/*@__PURE__*/`; + const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`; + function createCodegenContext(ast, { + mode = "function", + prefixIdentifiers = mode === "module", + sourceMap = false, + filename = `template.vue.html`, + scopeId = null, + optimizeImports = false, + runtimeGlobalName = `Vue`, + runtimeModuleName = `vue`, + ssrRuntimeModuleName = "vue/server-renderer", + ssr = false, + isTS = false, + inSSR = false + }) { + const context = { + mode, + prefixIdentifiers, + sourceMap, + filename, + scopeId, + optimizeImports, + runtimeGlobalName, + runtimeModuleName, + ssrRuntimeModuleName, + ssr, + isTS, + inSSR, + source: ast.source, + code: ``, + column: 1, + line: 1, + offset: 0, + indentLevel: 0, + pure: false, + map: void 0, + helper(key) { + return `_${helperNameMap[key]}`; + }, + push(code, newlineIndex = -2 /* None */, node) { + context.code += code; + }, + indent() { + newline(++context.indentLevel); + }, + deindent(withoutNewLine = false) { + if (withoutNewLine) { + --context.indentLevel; + } else { + newline(--context.indentLevel); + } + }, + newline() { + newline(context.indentLevel); + } + }; + function newline(n) { + context.push("\n" + ` `.repeat(n), 0 /* Start */); + } + return context; + } + function generate(ast, options = {}) { + const context = createCodegenContext(ast, options); + if (options.onContextCreated) options.onContextCreated(context); + const { + mode, + push, + prefixIdentifiers, + indent, + deindent, + newline, + scopeId, + ssr + } = context; + const helpers = Array.from(ast.helpers); + const hasHelpers = helpers.length > 0; + const useWithBlock = !prefixIdentifiers && mode !== "module"; + const preambleContext = context; + { + genFunctionPreamble(ast, preambleContext); + } + const functionName = ssr ? `ssrRender` : `render`; + const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"]; + const signature = args.join(", "); + { + push(`function ${functionName}(${signature}) {`); + } + indent(); + if (useWithBlock) { + push(`with (_ctx) {`); + indent(); + if (hasHelpers) { + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = _Vue +`, + -1 /* End */ + ); + newline(); + } + } + if (ast.components.length) { + genAssets(ast.components, "component", context); + if (ast.directives.length || ast.temps > 0) { + newline(); + } + } + if (ast.directives.length) { + genAssets(ast.directives, "directive", context); + if (ast.temps > 0) { + newline(); + } + } + if (ast.filters && ast.filters.length) { + newline(); + genAssets(ast.filters, "filter", context); + newline(); + } + if (ast.temps > 0) { + push(`let `); + for (let i = 0; i < ast.temps; i++) { + push(`${i > 0 ? `, ` : ``}_temp${i}`); + } + } + if (ast.components.length || ast.directives.length || ast.temps) { + push(` +`, 0 /* Start */); + newline(); + } + if (!ssr) { + push(`return `); + } + if (ast.codegenNode) { + genNode(ast.codegenNode, context); + } else { + push(`null`); + } + if (useWithBlock) { + deindent(); + push(`}`); + } + deindent(); + push(`}`); + return { + ast, + code: context.code, + preamble: ``, + map: context.map ? context.map.toJSON() : void 0 + }; + } + function genFunctionPreamble(ast, context) { + const { + ssr, + prefixIdentifiers, + push, + newline, + runtimeModuleName, + runtimeGlobalName, + ssrRuntimeModuleName + } = context; + const VueBinding = runtimeGlobalName; + const helpers = Array.from(ast.helpers); + if (helpers.length > 0) { + { + push(`const _Vue = ${VueBinding} +`, -1 /* End */); + if (ast.hoists.length) { + const staticHelpers = [ + CREATE_VNODE, + CREATE_ELEMENT_VNODE, + CREATE_COMMENT, + CREATE_TEXT, + CREATE_STATIC + ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", "); + push(`const { ${staticHelpers} } = _Vue +`, -1 /* End */); + } + } + } + genHoists(ast.hoists, context); + newline(); + push(`return `); + } + function genAssets(assets, type, { helper, push, newline, isTS }) { + const resolver = helper( + type === "filter" ? RESOLVE_FILTER : type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE + ); + for (let i = 0; i < assets.length; i++) { + let id = assets[i]; + const maybeSelfReference = id.endsWith("__self"); + if (maybeSelfReference) { + id = id.slice(0, -6); + } + push( + `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}` + ); + if (i < assets.length - 1) { + newline(); + } + } + } + function genHoists(hoists, context) { + if (!hoists.length) { + return; + } + context.pure = true; + const { push, newline } = context; + newline(); + for (let i = 0; i < hoists.length; i++) { + const exp = hoists[i]; + if (exp) { + push(`const _hoisted_${i + 1} = `); + genNode(exp, context); + newline(); + } + } + context.pure = false; + } + function isText(n) { + return isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8; + } + function genNodeListAsArray(nodes, context) { + const multilines = nodes.length > 3 || nodes.some((n) => isArray(n) || !isText(n)); + context.push(`[`); + multilines && context.indent(); + genNodeList(nodes, context, multilines); + multilines && context.deindent(); + context.push(`]`); + } + function genNodeList(nodes, context, multilines = false, comma = true) { + const { push, newline } = context; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (isString(node)) { + push(node, -3 /* Unknown */); + } else if (isArray(node)) { + genNodeListAsArray(node, context); + } else { + genNode(node, context); + } + if (i < nodes.length - 1) { + if (multilines) { + comma && push(","); + newline(); + } else { + comma && push(", "); + } + } + } + } + function genNode(node, context) { + if (isString(node)) { + context.push(node, -3 /* Unknown */); + return; + } + if (isSymbol(node)) { + context.push(context.helper(node)); + return; + } + switch (node.type) { + case 1: + case 9: + case 11: + assert( + node.codegenNode != null, + `Codegen node is missing for element/if/for node. Apply appropriate transforms first.` + ); + genNode(node.codegenNode, context); + break; + case 2: + genText(node, context); + break; + case 4: + genExpression(node, context); + break; + case 5: + genInterpolation(node, context); + break; + case 12: + genNode(node.codegenNode, context); + break; + case 8: + genCompoundExpression(node, context); + break; + case 3: + genComment(node, context); + break; + case 13: + genVNodeCall(node, context); + break; + case 14: + genCallExpression(node, context); + break; + case 15: + genObjectExpression(node, context); + break; + case 17: + genArrayExpression(node, context); + break; + case 18: + genFunctionExpression(node, context); + break; + case 19: + genConditionalExpression(node, context); + break; + case 20: + genCacheExpression(node, context); + break; + case 21: + genNodeList(node.body, context, true, false); + break; + // SSR only types + case 22: + break; + case 23: + break; + case 24: + break; + case 25: + break; + case 26: + break; + /* v8 ignore start */ + case 10: + break; + default: + { + assert(false, `unhandled codegen node type: ${node.type}`); + const exhaustiveCheck = node; + return exhaustiveCheck; + } + } + } + function genText(node, context) { + context.push(JSON.stringify(node.content), -3 /* Unknown */, node); + } + function genExpression(node, context) { + const { content, isStatic } = node; + context.push( + isStatic ? JSON.stringify(content) : content, + -3 /* Unknown */, + node + ); + } + function genInterpolation(node, context) { + const { push, helper, pure } = context; + if (pure) push(PURE_ANNOTATION); + push(`${helper(TO_DISPLAY_STRING)}(`); + genNode(node.content, context); + push(`)`); + } + function genCompoundExpression(node, context) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (isString(child)) { + context.push(child, -3 /* Unknown */); + } else { + genNode(child, context); + } + } + } + function genExpressionAsPropertyKey(node, context) { + const { push } = context; + if (node.type === 8) { + push(`[`); + genCompoundExpression(node, context); + push(`]`); + } else if (node.isStatic) { + const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content); + push(text, -2 /* None */, node); + } else { + push(`[${node.content}]`, -3 /* Unknown */, node); + } + } + function genComment(node, context) { + const { push, helper, pure } = context; + if (pure) { + push(PURE_ANNOTATION); + } + push( + `${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, + -3 /* Unknown */, + node + ); + } + function genVNodeCall(node, context) { + const { push, helper, pure } = context; + const { + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent + } = node; + let patchFlagString; + if (patchFlag) { + { + if (patchFlag < 0) { + patchFlagString = patchFlag + ` /* ${PatchFlagNames[patchFlag]} */`; + } else { + const flagNames = Object.keys(PatchFlagNames).map(Number).filter((n) => n > 0 && patchFlag & n).map((n) => PatchFlagNames[n]).join(`, `); + patchFlagString = patchFlag + ` /* ${flagNames} */`; + } + } + } + if (directives) { + push(helper(WITH_DIRECTIVES) + `(`); + } + if (isBlock) { + push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `); + } + if (pure) { + push(PURE_ANNOTATION); + } + const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent); + push(helper(callHelper) + `(`, -2 /* None */, node); + genNodeList( + genNullableArgs([tag, props, children, patchFlagString, dynamicProps]), + context + ); + push(`)`); + if (isBlock) { + push(`)`); + } + if (directives) { + push(`, `); + genNode(directives, context); + push(`)`); + } + } + function genNullableArgs(args) { + let i = args.length; + while (i--) { + if (args[i] != null) break; + } + return args.slice(0, i + 1).map((arg) => arg || `null`); + } + function genCallExpression(node, context) { + const { push, helper, pure } = context; + const callee = isString(node.callee) ? node.callee : helper(node.callee); + if (pure) { + push(PURE_ANNOTATION); + } + push(callee + `(`, -2 /* None */, node); + genNodeList(node.arguments, context); + push(`)`); + } + function genObjectExpression(node, context) { + const { push, indent, deindent, newline } = context; + const { properties } = node; + if (!properties.length) { + push(`{}`, -2 /* None */, node); + return; + } + const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4); + push(multilines ? `{` : `{ `); + multilines && indent(); + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + genExpressionAsPropertyKey(key, context); + push(`: `); + genNode(value, context); + if (i < properties.length - 1) { + push(`,`); + newline(); + } + } + multilines && deindent(); + push(multilines ? `}` : ` }`); + } + function genArrayExpression(node, context) { + genNodeListAsArray(node.elements, context); + } + function genFunctionExpression(node, context) { + const { push, indent, deindent } = context; + const { params, returns, body, newline, isSlot } = node; + if (isSlot) { + push(`_${helperNameMap[WITH_CTX]}(`); + } + push(`(`, -2 /* None */, node); + if (isArray(params)) { + genNodeList(params, context); + } else if (params) { + genNode(params, context); + } + push(`) => `); + if (newline || body) { + push(`{`); + indent(); + } + if (returns) { + if (newline) { + push(`return `); + } + if (isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } + } else if (body) { + genNode(body, context); + } + if (newline || body) { + deindent(); + push(`}`); + } + if (isSlot) { + if (node.isNonScopedSlot) { + push(`, undefined, true`); + } + push(`)`); + } + } + function genConditionalExpression(node, context) { + const { test, consequent, alternate, newline: needNewline } = node; + const { push, indent, deindent, newline } = context; + if (test.type === 4) { + const needsParens = !isSimpleIdentifier(test.content); + needsParens && push(`(`); + genExpression(test, context); + needsParens && push(`)`); + } else { + push(`(`); + genNode(test, context); + push(`)`); + } + needNewline && indent(); + context.indentLevel++; + needNewline || push(` `); + push(`? `); + genNode(consequent, context); + context.indentLevel--; + needNewline && newline(); + needNewline || push(` `); + push(`: `); + const isNested = alternate.type === 19; + if (!isNested) { + context.indentLevel++; + } + genNode(alternate, context); + if (!isNested) { + context.indentLevel--; + } + needNewline && deindent( + true + /* without newline */ + ); + } + function genCacheExpression(node, context) { + const { push, helper, indent, deindent, newline } = context; + const { needPauseTracking, needArraySpread } = node; + if (needArraySpread) { + push(`[...(`); + } + push(`_cache[${node.index}] || (`); + if (needPauseTracking) { + indent(); + push(`${helper(SET_BLOCK_TRACKING)}(-1`); + if (node.inVOnce) push(`, true`); + push(`),`); + newline(); + push(`(`); + } + push(`_cache[${node.index}] = `); + genNode(node.value, context); + if (needPauseTracking) { + push(`).cacheIndex = ${node.index},`); + newline(); + push(`${helper(SET_BLOCK_TRACKING)}(1),`); + newline(); + push(`_cache[${node.index}]`); + deindent(); + } + push(`)`); + if (needArraySpread) { + push(`)]`); + } + } + + const prohibitedKeywordRE = new RegExp( + "\\b" + "arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b") + "\\b" + ); + const stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g; + function validateBrowserExpression(node, context, asParams = false, asRawStatements = false) { + const exp = node.content; + if (!exp.trim()) { + return; + } + try { + new Function( + asRawStatements ? ` ${exp} ` : `return ${asParams ? `(${exp}) => {}` : `(${exp})`}` + ); + } catch (e) { + let message = e.message; + const keywordMatch = exp.replace(stripStringRE, "").match(prohibitedKeywordRE); + if (keywordMatch) { + message = `avoid using JavaScript keyword as property name: "${keywordMatch[0]}"`; + } + context.onError( + createCompilerError( + 45, + node.loc, + void 0, + message + ) + ); + } + } + + const transformExpression = (node, context) => { + if (node.type === 5) { + node.content = processExpression( + node.content, + context + ); + } else if (node.type === 1) { + const memo = findDir(node, "memo"); + for (let i = 0; i < node.props.length; i++) { + const dir = node.props[i]; + if (dir.type === 7 && dir.name !== "for") { + const exp = dir.exp; + const arg = dir.arg; + if (exp && exp.type === 4 && !(dir.name === "on" && arg) && // key has been processed in transformFor(vMemo + vFor) + !(memo && arg && arg.type === 4 && arg.content === "key")) { + dir.exp = processExpression( + exp, + context, + // slot args must be processed as function params + dir.name === "slot" + ); + } + if (arg && arg.type === 4 && !arg.isStatic) { + dir.arg = processExpression(arg, context); + } + } + } + } + }; + function processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) { + { + { + validateBrowserExpression(node, context, asParams, asRawStatements); + } + return node; + } + } + function stringifyExpression(exp) { + if (isString(exp)) { + return exp; + } else if (exp.type === 4) { + return exp.content; + } else { + return exp.children.map(stringifyExpression).join(""); + } + } + + const transformIf = createStructuralDirectiveTransform( + /^(if|else|else-if)$/, + (node, dir, context) => { + return processIf(node, dir, context, (ifNode, branch, isRoot) => { + const siblings = context.parent.children; + let i = siblings.indexOf(ifNode); + let key = 0; + while (i-- >= 0) { + const sibling = siblings[i]; + if (sibling && sibling.type === 9) { + key += sibling.branches.length; + } + } + return () => { + if (isRoot) { + ifNode.codegenNode = createCodegenNodeForBranch( + branch, + key, + context + ); + } else { + const parentCondition = getParentCondition(ifNode.codegenNode); + parentCondition.alternate = createCodegenNodeForBranch( + branch, + key + ifNode.branches.length - 1, + context + ); + } + }; + }); + } + ); + function processIf(node, dir, context, processCodegen) { + if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) { + const loc = dir.exp ? dir.exp.loc : node.loc; + context.onError( + createCompilerError(28, dir.loc) + ); + dir.exp = createSimpleExpression(`true`, false, loc); + } + if (dir.exp) { + validateBrowserExpression(dir.exp, context); + } + if (dir.name === "if") { + const branch = createIfBranch(node, dir); + const ifNode = { + type: 9, + loc: cloneLoc(node.loc), + branches: [branch] + }; + context.replaceNode(ifNode); + if (processCodegen) { + return processCodegen(ifNode, branch, true); + } + } else { + const siblings = context.parent.children; + const comments = []; + let i = siblings.indexOf(node); + while (i-- >= -1) { + const sibling = siblings[i]; + if (sibling && sibling.type === 3) { + context.removeNode(sibling); + comments.unshift(sibling); + continue; + } + if (sibling && sibling.type === 2 && !sibling.content.trim().length) { + context.removeNode(sibling); + continue; + } + if (sibling && sibling.type === 9) { + if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) { + context.onError( + createCompilerError(30, node.loc) + ); + } + context.removeNode(); + const branch = createIfBranch(node, dir); + if (comments.length && // #3619 ignore comments if the v-if is direct child of <transition> + !(context.parent && context.parent.type === 1 && (context.parent.tag === "transition" || context.parent.tag === "Transition"))) { + branch.children = [...comments, ...branch.children]; + } + { + const key = branch.userKey; + if (key) { + sibling.branches.forEach(({ userKey }) => { + if (isSameKey(userKey, key)) { + context.onError( + createCompilerError( + 29, + branch.userKey.loc + ) + ); + } + }); + } + } + sibling.branches.push(branch); + const onExit = processCodegen && processCodegen(sibling, branch, false); + traverseNode(branch, context); + if (onExit) onExit(); + context.currentNode = null; + } else { + context.onError( + createCompilerError(30, node.loc) + ); + } + break; + } + } + } + function createIfBranch(node, dir) { + const isTemplateIf = node.tagType === 3; + return { + type: 10, + loc: node.loc, + condition: dir.name === "else" ? void 0 : dir.exp, + children: isTemplateIf && !findDir(node, "for") ? node.children : [node], + userKey: findProp(node, `key`), + isTemplateIf + }; + } + function createCodegenNodeForBranch(branch, keyIndex, context) { + if (branch.condition) { + return createConditionalExpression( + branch.condition, + createChildrenCodegenNode(branch, keyIndex, context), + // make sure to pass in asBlock: true so that the comment node call + // closes the current block. + createCallExpression(context.helper(CREATE_COMMENT), [ + '"v-if"' , + "true" + ]) + ); + } else { + return createChildrenCodegenNode(branch, keyIndex, context); + } + } + function createChildrenCodegenNode(branch, keyIndex, context) { + const { helper } = context; + const keyProperty = createObjectProperty( + `key`, + createSimpleExpression( + `${keyIndex}`, + false, + locStub, + 2 + ) + ); + const { children } = branch; + const firstChild = children[0]; + const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1; + if (needFragmentWrapper) { + if (children.length === 1 && firstChild.type === 11) { + const vnodeCall = firstChild.codegenNode; + injectProp(vnodeCall, keyProperty, context); + return vnodeCall; + } else { + let patchFlag = 64; + if (!branch.isTemplateIf && children.filter((c) => c.type !== 3).length === 1) { + patchFlag |= 2048; + } + return createVNodeCall( + context, + helper(FRAGMENT), + createObjectExpression([keyProperty]), + children, + patchFlag, + void 0, + void 0, + true, + false, + false, + branch.loc + ); + } + } else { + const ret = firstChild.codegenNode; + const vnodeCall = getMemoedVNodeCall(ret); + if (vnodeCall.type === 13) { + convertToBlock(vnodeCall, context); + } + injectProp(vnodeCall, keyProperty, context); + return ret; + } + } + function isSameKey(a, b) { + if (!a || a.type !== b.type) { + return false; + } + if (a.type === 6) { + if (a.value.content !== b.value.content) { + return false; + } + } else { + const exp = a.exp; + const branchExp = b.exp; + if (exp.type !== branchExp.type) { + return false; + } + if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) { + return false; + } + } + return true; + } + function getParentCondition(node) { + while (true) { + if (node.type === 19) { + if (node.alternate.type === 19) { + node = node.alternate; + } else { + return node; + } + } else if (node.type === 20) { + node = node.value; + } + } + } + + const transformBind = (dir, _node, context) => { + const { modifiers, loc } = dir; + const arg = dir.arg; + let { exp } = dir; + if (exp && exp.type === 4 && !exp.content.trim()) { + { + exp = void 0; + } + } + if (!exp) { + if (arg.type !== 4 || !arg.isStatic) { + context.onError( + createCompilerError( + 52, + arg.loc + ) + ); + return { + props: [ + createObjectProperty(arg, createSimpleExpression("", true, loc)) + ] + }; + } + transformBindShorthand(dir); + exp = dir.exp; + } + if (arg.type !== 4) { + arg.children.unshift(`(`); + arg.children.push(`) || ""`); + } else if (!arg.isStatic) { + arg.content = arg.content ? `${arg.content} || ""` : `""`; + } + if (modifiers.some((mod) => mod.content === "camel")) { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = camelize(arg.content); + } else { + arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`; + } + } else { + arg.children.unshift(`${context.helperString(CAMELIZE)}(`); + arg.children.push(`)`); + } + } + if (!context.inSSR) { + if (modifiers.some((mod) => mod.content === "prop")) { + injectPrefix(arg, "."); + } + if (modifiers.some((mod) => mod.content === "attr")) { + injectPrefix(arg, "^"); + } + } + return { + props: [createObjectProperty(arg, exp)] + }; + }; + const transformBindShorthand = (dir, context) => { + const arg = dir.arg; + const propName = camelize(arg.content); + dir.exp = createSimpleExpression(propName, false, arg.loc); + }; + const injectPrefix = (arg, prefix) => { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = prefix + arg.content; + } else { + arg.content = `\`${prefix}\${${arg.content}}\``; + } + } else { + arg.children.unshift(`'${prefix}' + (`); + arg.children.push(`)`); + } + }; + + const transformFor = createStructuralDirectiveTransform( + "for", + (node, dir, context) => { + const { helper, removeHelper } = context; + return processFor(node, dir, context, (forNode) => { + const renderExp = createCallExpression(helper(RENDER_LIST), [ + forNode.source + ]); + const isTemplate = isTemplateNode(node); + const memo = findDir(node, "memo"); + const keyProp = findProp(node, `key`, false, true); + const isDirKey = keyProp && keyProp.type === 7; + if (isDirKey && !keyProp.exp) { + transformBindShorthand(keyProp); + } + let keyExp = keyProp && (keyProp.type === 6 ? keyProp.value ? createSimpleExpression(keyProp.value.content, true) : void 0 : keyProp.exp); + const keyProperty = keyProp && keyExp ? createObjectProperty(`key`, keyExp) : null; + const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0; + const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256; + forNode.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + renderExp, + fragmentFlag, + void 0, + void 0, + true, + !isStableFragment, + false, + node.loc + ); + return () => { + let childBlock; + const { children } = forNode; + if (isTemplate) { + node.children.some((c) => { + if (c.type === 1) { + const key = findProp(c, "key"); + if (key) { + context.onError( + createCompilerError( + 33, + key.loc + ) + ); + return true; + } + } + }); + } + const needFragmentWrapper = children.length !== 1 || children[0].type !== 1; + const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null; + if (slotOutlet) { + childBlock = slotOutlet.codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + } else if (needFragmentWrapper) { + childBlock = createVNodeCall( + context, + helper(FRAGMENT), + keyProperty ? createObjectExpression([keyProperty]) : void 0, + node.children, + 64, + void 0, + void 0, + true, + void 0, + false + ); + } else { + childBlock = children[0].codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + if (childBlock.isBlock !== !isStableFragment) { + if (childBlock.isBlock) { + removeHelper(OPEN_BLOCK); + removeHelper( + getVNodeBlockHelper(context.inSSR, childBlock.isComponent) + ); + } else { + removeHelper( + getVNodeHelper(context.inSSR, childBlock.isComponent) + ); + } + } + childBlock.isBlock = !isStableFragment; + if (childBlock.isBlock) { + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent)); + } else { + helper(getVNodeHelper(context.inSSR, childBlock.isComponent)); + } + } + if (memo) { + const loop = createFunctionExpression( + createForLoopParams(forNode.parseResult, [ + createSimpleExpression(`_cached`) + ]) + ); + loop.body = createBlockStatement([ + createCompoundExpression([`const _memo = (`, memo.exp, `)`]), + createCompoundExpression([ + `if (_cached`, + ...keyExp ? [` && _cached.key === `, keyExp] : [], + ` && ${context.helperString( + IS_MEMO_SAME + )}(_cached, _memo)) return _cached` + ]), + createCompoundExpression([`const _item = `, childBlock]), + createSimpleExpression(`_item.memo = _memo`), + createSimpleExpression(`return _item`) + ]); + renderExp.arguments.push( + loop, + createSimpleExpression(`_cache`), + createSimpleExpression(String(context.cached.length)) + ); + context.cached.push(null); + } else { + renderExp.arguments.push( + createFunctionExpression( + createForLoopParams(forNode.parseResult), + childBlock, + true + ) + ); + } + }; + }); + } + ); + function processFor(node, dir, context, processCodegen) { + if (!dir.exp) { + context.onError( + createCompilerError(31, dir.loc) + ); + return; + } + const parseResult = dir.forParseResult; + if (!parseResult) { + context.onError( + createCompilerError(32, dir.loc) + ); + return; + } + finalizeForParseResult(parseResult, context); + const { addIdentifiers, removeIdentifiers, scopes } = context; + const { source, value, key, index } = parseResult; + const forNode = { + type: 11, + loc: dir.loc, + source, + valueAlias: value, + keyAlias: key, + objectIndexAlias: index, + parseResult, + children: isTemplateNode(node) ? node.children : [node] + }; + context.replaceNode(forNode); + scopes.vFor++; + const onExit = processCodegen && processCodegen(forNode); + return () => { + scopes.vFor--; + if (onExit) onExit(); + }; + } + function finalizeForParseResult(result, context) { + if (result.finalized) return; + { + validateBrowserExpression(result.source, context); + if (result.key) { + validateBrowserExpression( + result.key, + context, + true + ); + } + if (result.index) { + validateBrowserExpression( + result.index, + context, + true + ); + } + if (result.value) { + validateBrowserExpression( + result.value, + context, + true + ); + } + } + result.finalized = true; + } + function createForLoopParams({ value, key, index }, memoArgs = []) { + return createParamsList([value, key, index, ...memoArgs]); + } + function createParamsList(args) { + let i = args.length; + while (i--) { + if (args[i]) break; + } + return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false)); + } + + const defaultFallback = createSimpleExpression(`undefined`, false); + const trackSlotScopes = (node, context) => { + if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) { + const vSlot = findDir(node, "slot"); + if (vSlot) { + vSlot.exp; + context.scopes.vSlot++; + return () => { + context.scopes.vSlot--; + }; + } + } + }; + const trackVForSlotScopes = (node, context) => { + let vFor; + if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, "for"))) { + const result = vFor.forParseResult; + if (result) { + finalizeForParseResult(result, context); + const { value, key, index } = result; + const { addIdentifiers, removeIdentifiers } = context; + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + return () => { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + }; + } + } + }; + const buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression( + props, + children, + false, + true, + children.length ? children[0].loc : loc + ); + function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { + context.helper(WITH_CTX); + const { children, loc } = node; + const slotsProperties = []; + const dynamicSlots = []; + let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0; + const onComponentSlot = findDir(node, "slot", true); + if (onComponentSlot) { + const { arg, exp } = onComponentSlot; + if (arg && !isStaticExp(arg)) { + hasDynamicSlots = true; + } + slotsProperties.push( + createObjectProperty( + arg || createSimpleExpression("default", true), + buildSlotFn(exp, void 0, children, loc) + ) + ); + } + let hasTemplateSlots = false; + let hasNamedDefaultSlot = false; + const implicitDefaultChildren = []; + const seenSlotNames = /* @__PURE__ */ new Set(); + let conditionalBranchIndex = 0; + for (let i = 0; i < children.length; i++) { + const slotElement = children[i]; + let slotDir; + if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) { + if (slotElement.type !== 3) { + implicitDefaultChildren.push(slotElement); + } + continue; + } + if (onComponentSlot) { + context.onError( + createCompilerError(37, slotDir.loc) + ); + break; + } + hasTemplateSlots = true; + const { children: slotChildren, loc: slotLoc } = slotElement; + const { + arg: slotName = createSimpleExpression(`default`, true), + exp: slotProps, + loc: dirLoc + } = slotDir; + let staticSlotName; + if (isStaticExp(slotName)) { + staticSlotName = slotName ? slotName.content : `default`; + } else { + hasDynamicSlots = true; + } + const vFor = findDir(slotElement, "for"); + const slotFunction = buildSlotFn(slotProps, vFor, slotChildren, slotLoc); + let vIf; + let vElse; + if (vIf = findDir(slotElement, "if")) { + hasDynamicSlots = true; + dynamicSlots.push( + createConditionalExpression( + vIf.exp, + buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++), + defaultFallback + ) + ); + } else if (vElse = findDir( + slotElement, + /^else(-if)?$/, + true + /* allowEmpty */ + )) { + let j = i; + let prev; + while (j--) { + prev = children[j]; + if (prev.type !== 3 && isNonWhitespaceContent(prev)) { + break; + } + } + if (prev && isTemplateNode(prev) && findDir(prev, /^(else-)?if$/)) { + let conditional = dynamicSlots[dynamicSlots.length - 1]; + while (conditional.alternate.type === 19) { + conditional = conditional.alternate; + } + conditional.alternate = vElse.exp ? createConditionalExpression( + vElse.exp, + buildDynamicSlot( + slotName, + slotFunction, + conditionalBranchIndex++ + ), + defaultFallback + ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++); + } else { + context.onError( + createCompilerError(30, vElse.loc) + ); + } + } else if (vFor) { + hasDynamicSlots = true; + const parseResult = vFor.forParseResult; + if (parseResult) { + finalizeForParseResult(parseResult, context); + dynamicSlots.push( + createCallExpression(context.helper(RENDER_LIST), [ + parseResult.source, + createFunctionExpression( + createForLoopParams(parseResult), + buildDynamicSlot(slotName, slotFunction), + true + ) + ]) + ); + } else { + context.onError( + createCompilerError( + 32, + vFor.loc + ) + ); + } + } else { + if (staticSlotName) { + if (seenSlotNames.has(staticSlotName)) { + context.onError( + createCompilerError( + 38, + dirLoc + ) + ); + continue; + } + seenSlotNames.add(staticSlotName); + if (staticSlotName === "default") { + hasNamedDefaultSlot = true; + } + } + slotsProperties.push(createObjectProperty(slotName, slotFunction)); + } + } + if (!onComponentSlot) { + const buildDefaultSlotProperty = (props, children2) => { + const fn = buildSlotFn(props, void 0, children2, loc); + if (context.compatConfig) { + fn.isNonScopedSlot = true; + } + return createObjectProperty(`default`, fn); + }; + if (!hasTemplateSlots) { + slotsProperties.push(buildDefaultSlotProperty(void 0, children)); + } else if (implicitDefaultChildren.length && // #3766 + // with whitespace: 'preserve', whitespaces between slots will end up in + // implicitDefaultChildren. Ignore if all implicit children are whitespaces. + implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) { + if (hasNamedDefaultSlot) { + context.onError( + createCompilerError( + 39, + implicitDefaultChildren[0].loc + ) + ); + } else { + slotsProperties.push( + buildDefaultSlotProperty(void 0, implicitDefaultChildren) + ); + } + } + } + const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1; + let slots = createObjectExpression( + slotsProperties.concat( + createObjectProperty( + `_`, + // 2 = compiled but dynamic = can skip normalization, but must run diff + // 1 = compiled and static = can skip normalization AND diff as optimized + createSimpleExpression( + slotFlag + (` /* ${slotFlagsText[slotFlag]} */` ), + false + ) + ) + ), + loc + ); + if (dynamicSlots.length) { + slots = createCallExpression(context.helper(CREATE_SLOTS), [ + slots, + createArrayExpression(dynamicSlots) + ]); + } + return { + slots, + hasDynamicSlots + }; + } + function buildDynamicSlot(name, fn, index) { + const props = [ + createObjectProperty(`name`, name), + createObjectProperty(`fn`, fn) + ]; + if (index != null) { + props.push( + createObjectProperty(`key`, createSimpleExpression(String(index), true)) + ); + } + return createObjectExpression(props); + } + function hasForwardedSlots(children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1: + if (child.tagType === 2 || hasForwardedSlots(child.children)) { + return true; + } + break; + case 9: + if (hasForwardedSlots(child.branches)) return true; + break; + case 10: + case 11: + if (hasForwardedSlots(child.children)) return true; + break; + } + } + return false; + } + function isNonWhitespaceContent(node) { + if (node.type !== 2 && node.type !== 12) + return true; + return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content); + } + + const directiveImportMap = /* @__PURE__ */ new WeakMap(); + const transformElement = (node, context) => { + return function postTransformElement() { + node = context.currentNode; + if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) { + return; + } + const { tag, props } = node; + const isComponent = node.tagType === 1; + let vnodeTag = isComponent ? resolveComponentType(node, context) : `"${tag}"`; + const isDynamicComponent = isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT; + let vnodeProps; + let vnodeChildren; + let patchFlag = 0; + let vnodeDynamicProps; + let dynamicPropNames; + let vnodeDirectives; + let shouldUseBlock = ( + // dynamic component may resolve to plain elements + isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block + // updates inside get proper isSVG flag at runtime. (#639, #643) + // This is technically web-specific, but splitting the logic out of core + // leads to too much unnecessary complexity. + (tag === "svg" || tag === "foreignObject" || tag === "math") + ); + if (props.length > 0) { + const propsBuildResult = buildProps( + node, + context, + void 0, + isComponent, + isDynamicComponent + ); + vnodeProps = propsBuildResult.props; + patchFlag = propsBuildResult.patchFlag; + dynamicPropNames = propsBuildResult.dynamicPropNames; + const directives = propsBuildResult.directives; + vnodeDirectives = directives && directives.length ? createArrayExpression( + directives.map((dir) => buildDirectiveArgs(dir, context)) + ) : void 0; + if (propsBuildResult.shouldUseBlock) { + shouldUseBlock = true; + } + } + if (node.children.length > 0) { + if (vnodeTag === KEEP_ALIVE) { + shouldUseBlock = true; + patchFlag |= 1024; + if (node.children.length > 1) { + context.onError( + createCompilerError(46, { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: "" + }) + ); + } + } + const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling + vnodeTag !== TELEPORT && // explained above. + vnodeTag !== KEEP_ALIVE; + if (shouldBuildAsSlots) { + const { slots, hasDynamicSlots } = buildSlots(node, context); + vnodeChildren = slots; + if (hasDynamicSlots) { + patchFlag |= 1024; + } + } else if (node.children.length === 1 && vnodeTag !== TELEPORT) { + const child = node.children[0]; + const type = child.type; + const hasDynamicTextChild = type === 5 || type === 8; + if (hasDynamicTextChild && getConstantType(child, context) === 0) { + patchFlag |= 1; + } + if (hasDynamicTextChild || type === 2) { + vnodeChildren = child; + } else { + vnodeChildren = node.children; + } + } else { + vnodeChildren = node.children; + } + } + if (dynamicPropNames && dynamicPropNames.length) { + vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames); + } + node.codegenNode = createVNodeCall( + context, + vnodeTag, + vnodeProps, + vnodeChildren, + patchFlag === 0 ? void 0 : patchFlag, + vnodeDynamicProps, + vnodeDirectives, + !!shouldUseBlock, + false, + isComponent, + node.loc + ); + }; + }; + function resolveComponentType(node, context, ssr = false) { + let { tag } = node; + const isExplicitDynamic = isComponentTag(tag); + const isProp = findProp( + node, + "is", + false, + true + /* allow empty */ + ); + if (isProp) { + if (isExplicitDynamic || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + )) { + let exp; + if (isProp.type === 6) { + exp = isProp.value && createSimpleExpression(isProp.value.content, true); + } else { + exp = isProp.exp; + if (!exp) { + exp = createSimpleExpression(`is`, false, isProp.arg.loc); + } + } + if (exp) { + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + exp + ]); + } + } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) { + tag = isProp.value.content.slice(4); + } + } + const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag); + if (builtIn) { + if (!ssr) context.helper(builtIn); + return builtIn; + } + context.helper(RESOLVE_COMPONENT); + context.components.add(tag); + return toValidAssetId(tag, `component`); + } + function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) { + const { tag, loc: elementLoc, children } = node; + let properties = []; + const mergeArgs = []; + const runtimeDirectives = []; + const hasChildren = children.length > 0; + let shouldUseBlock = false; + let patchFlag = 0; + let hasRef = false; + let hasClassBinding = false; + let hasStyleBinding = false; + let hasHydrationEventBinding = false; + let hasDynamicKeys = false; + let hasVnodeHook = false; + const dynamicPropNames = []; + const pushMergeArg = (arg) => { + if (properties.length) { + mergeArgs.push( + createObjectExpression(dedupeProperties(properties), elementLoc) + ); + properties = []; + } + if (arg) mergeArgs.push(arg); + }; + const pushRefVForMarker = () => { + if (context.scopes.vFor > 0) { + properties.push( + createObjectProperty( + createSimpleExpression("ref_for", true), + createSimpleExpression("true") + ) + ); + } + }; + const analyzePatchFlag = ({ key, value }) => { + if (isStaticExp(key)) { + const name = key.content; + const isEventHandler = isOn(name); + if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click + // dedicated fast path. + name.toLowerCase() !== "onclick" && // omit v-model handlers + name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks + !isReservedProp(name)) { + hasHydrationEventBinding = true; + } + if (isEventHandler && isReservedProp(name)) { + hasVnodeHook = true; + } + if (isEventHandler && value.type === 14) { + value = value.arguments[0]; + } + if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) { + return; + } + if (name === "ref") { + hasRef = true; + } else if (name === "class") { + hasClassBinding = true; + } else if (name === "style") { + hasStyleBinding = true; + } else if (name !== "key" && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + if (isComponent && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + } else { + hasDynamicKeys = true; + } + }; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 6) { + const { loc, name, nameLoc, value } = prop; + let isStatic = true; + if (name === "ref") { + hasRef = true; + pushRefVForMarker(); + } + if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + properties.push( + createObjectProperty( + createSimpleExpression(name, true, nameLoc), + createSimpleExpression( + value ? value.content : "", + isStatic, + value ? value.loc : loc + ) + ) + ); + } else { + const { name, arg, exp, loc, modifiers } = prop; + const isVBind = name === "bind"; + const isVOn = name === "on"; + if (name === "slot") { + if (!isComponent) { + context.onError( + createCompilerError(40, loc) + ); + } + continue; + } + if (name === "once" || name === "memo") { + continue; + } + if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + if (isVOn && ssr) { + continue; + } + if ( + // #938: elements with dynamic keys should be forced into blocks + isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked + // before children + isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update") + ) { + shouldUseBlock = true; + } + if (isVBind && isStaticArgOf(arg, "ref")) { + pushRefVForMarker(); + } + if (!arg && (isVBind || isVOn)) { + hasDynamicKeys = true; + if (exp) { + if (isVBind) { + { + pushMergeArg(); + { + const hasOverridableKeys = mergeArgs.some((arg2) => { + if (arg2.type === 15) { + return arg2.properties.some(({ key }) => { + if (key.type !== 4 || !key.isStatic) { + return true; + } + return key.content !== "class" && key.content !== "style" && !isOn(key.content); + }); + } else { + return true; + } + }); + if (hasOverridableKeys) { + checkCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context, + loc + ); + } + } + if (isCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context + )) { + mergeArgs.unshift(exp); + continue; + } + } + pushRefVForMarker(); + pushMergeArg(); + mergeArgs.push(exp); + } else { + pushMergeArg({ + type: 14, + loc, + callee: context.helper(TO_HANDLERS), + arguments: isComponent ? [exp] : [exp, `true`] + }); + } + } else { + context.onError( + createCompilerError( + isVBind ? 34 : 35, + loc + ) + ); + } + continue; + } + if (isVBind && modifiers.some((mod) => mod.content === "prop")) { + patchFlag |= 32; + } + const directiveTransform = context.directiveTransforms[name]; + if (directiveTransform) { + const { props: props2, needRuntime } = directiveTransform(prop, node, context); + !ssr && props2.forEach(analyzePatchFlag); + if (isVOn && arg && !isStaticExp(arg)) { + pushMergeArg(createObjectExpression(props2, elementLoc)); + } else { + properties.push(...props2); + } + if (needRuntime) { + runtimeDirectives.push(prop); + if (isSymbol(needRuntime)) { + directiveImportMap.set(prop, needRuntime); + } + } + } else if (!isBuiltInDirective(name)) { + runtimeDirectives.push(prop); + if (hasChildren) { + shouldUseBlock = true; + } + } + } + } + let propsExpression = void 0; + if (mergeArgs.length) { + pushMergeArg(); + if (mergeArgs.length > 1) { + propsExpression = createCallExpression( + context.helper(MERGE_PROPS), + mergeArgs, + elementLoc + ); + } else { + propsExpression = mergeArgs[0]; + } + } else if (properties.length) { + propsExpression = createObjectExpression( + dedupeProperties(properties), + elementLoc + ); + } + if (hasDynamicKeys) { + patchFlag |= 16; + } else { + if (hasClassBinding && !isComponent) { + patchFlag |= 2; + } + if (hasStyleBinding && !isComponent) { + patchFlag |= 4; + } + if (dynamicPropNames.length) { + patchFlag |= 8; + } + if (hasHydrationEventBinding) { + patchFlag |= 32; + } + } + if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) { + patchFlag |= 512; + } + if (!context.inSSR && propsExpression) { + switch (propsExpression.type) { + case 15: + let classKeyIndex = -1; + let styleKeyIndex = -1; + let hasDynamicKey = false; + for (let i = 0; i < propsExpression.properties.length; i++) { + const key = propsExpression.properties[i].key; + if (isStaticExp(key)) { + if (key.content === "class") { + classKeyIndex = i; + } else if (key.content === "style") { + styleKeyIndex = i; + } + } else if (!key.isHandlerKey) { + hasDynamicKey = true; + } + } + const classProp = propsExpression.properties[classKeyIndex]; + const styleProp = propsExpression.properties[styleKeyIndex]; + if (!hasDynamicKey) { + if (classProp && !isStaticExp(classProp.value)) { + classProp.value = createCallExpression( + context.helper(NORMALIZE_CLASS), + [classProp.value] + ); + } + if (styleProp && // the static style is compiled into an object, + // so use `hasStyleBinding` to ensure that it is a dynamic style binding + (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist, + // v-bind:style with static literal object + styleProp.value.type === 17)) { + styleProp.value = createCallExpression( + context.helper(NORMALIZE_STYLE), + [styleProp.value] + ); + } + } else { + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [propsExpression] + ); + } + break; + case 14: + break; + default: + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [ + createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [ + propsExpression + ]) + ] + ); + break; + } + } + return { + props: propsExpression, + directives: runtimeDirectives, + patchFlag, + dynamicPropNames, + shouldUseBlock + }; + } + function dedupeProperties(properties) { + const knownProps = /* @__PURE__ */ new Map(); + const deduped = []; + for (let i = 0; i < properties.length; i++) { + const prop = properties[i]; + if (prop.key.type === 8 || !prop.key.isStatic) { + deduped.push(prop); + continue; + } + const name = prop.key.content; + const existing = knownProps.get(name); + if (existing) { + if (name === "style" || name === "class" || isOn(name)) { + mergeAsArray(existing, prop); + } + } else { + knownProps.set(name, prop); + deduped.push(prop); + } + } + return deduped; + } + function mergeAsArray(existing, incoming) { + if (existing.value.type === 17) { + existing.value.elements.push(incoming.value); + } else { + existing.value = createArrayExpression( + [existing.value, incoming.value], + existing.loc + ); + } + } + function buildDirectiveArgs(dir, context) { + const dirArgs = []; + const runtime = directiveImportMap.get(dir); + if (runtime) { + dirArgs.push(context.helperString(runtime)); + } else { + { + context.helper(RESOLVE_DIRECTIVE); + context.directives.add(dir.name); + dirArgs.push(toValidAssetId(dir.name, `directive`)); + } + } + const { loc } = dir; + if (dir.exp) dirArgs.push(dir.exp); + if (dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(dir.arg); + } + if (Object.keys(dir.modifiers).length) { + if (!dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(`void 0`); + } + const trueExpression = createSimpleExpression(`true`, false, loc); + dirArgs.push( + createObjectExpression( + dir.modifiers.map( + (modifier) => createObjectProperty(modifier, trueExpression) + ), + loc + ) + ); + } + return createArrayExpression(dirArgs, dir.loc); + } + function stringifyDynamicPropNames(props) { + let propsNamesString = `[`; + for (let i = 0, l = props.length; i < l; i++) { + propsNamesString += JSON.stringify(props[i]); + if (i < l - 1) propsNamesString += ", "; + } + return propsNamesString + `]`; + } + function isComponentTag(tag) { + return tag === "component" || tag === "Component"; + } + + const transformSlotOutlet = (node, context) => { + if (isSlotOutlet(node)) { + const { children, loc } = node; + const { slotName, slotProps } = processSlotOutlet(node, context); + const slotArgs = [ + context.prefixIdentifiers ? `_ctx.$slots` : `$slots`, + slotName, + "{}", + "undefined", + "true" + ]; + let expectedLen = 2; + if (slotProps) { + slotArgs[2] = slotProps; + expectedLen = 3; + } + if (children.length) { + slotArgs[3] = createFunctionExpression([], children, false, false, loc); + expectedLen = 4; + } + if (context.scopeId && !context.slotted) { + expectedLen = 5; + } + slotArgs.splice(expectedLen); + node.codegenNode = createCallExpression( + context.helper(RENDER_SLOT), + slotArgs, + loc + ); + } + }; + function processSlotOutlet(node, context) { + let slotName = `"default"`; + let slotProps = void 0; + const nonNameProps = []; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (p.value) { + if (p.name === "name") { + slotName = JSON.stringify(p.value.content); + } else { + p.name = camelize(p.name); + nonNameProps.push(p); + } + } + } else { + if (p.name === "bind" && isStaticArgOf(p.arg, "name")) { + if (p.exp) { + slotName = p.exp; + } else if (p.arg && p.arg.type === 4) { + const name = camelize(p.arg.content); + slotName = p.exp = createSimpleExpression(name, false, p.arg.loc); + } + } else { + if (p.name === "bind" && p.arg && isStaticExp(p.arg)) { + p.arg.content = camelize(p.arg.content); + } + nonNameProps.push(p); + } + } + } + if (nonNameProps.length > 0) { + const { props, directives } = buildProps( + node, + context, + nonNameProps, + false, + false + ); + slotProps = props; + if (directives.length) { + context.onError( + createCompilerError( + 36, + directives[0].loc + ) + ); + } + } + return { + slotName, + slotProps + }; + } + + const transformOn$1 = (dir, node, context, augmentor) => { + const { loc, modifiers, arg } = dir; + if (!dir.exp && !modifiers.length) { + context.onError(createCompilerError(35, loc)); + } + let eventName; + if (arg.type === 4) { + if (arg.isStatic) { + let rawName = arg.content; + if (rawName.startsWith("vnode")) { + context.onError(createCompilerError(51, arg.loc)); + } + if (rawName.startsWith("vue:")) { + rawName = `vnode-${rawName.slice(4)}`; + } + const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? ( + // for non-element and vnode lifecycle event listeners, auto convert + // it to camelCase. See issue #2249 + toHandlerKey(camelize(rawName)) + ) : ( + // preserve case for plain element listeners that have uppercase + // letters, as these may be custom elements' custom events + `on:${rawName}` + ); + eventName = createSimpleExpression(eventString, true, arg.loc); + } else { + eventName = createCompoundExpression([ + `${context.helperString(TO_HANDLER_KEY)}(`, + arg, + `)` + ]); + } + } else { + eventName = arg; + eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`); + eventName.children.push(`)`); + } + let exp = dir.exp; + if (exp && !exp.content.trim()) { + exp = void 0; + } + let shouldCache = context.cacheHandlers && !exp && !context.inVOnce; + if (exp) { + const isMemberExp = isMemberExpression(exp); + const isInlineStatement = !(isMemberExp || isFnExpression(exp)); + const hasMultipleStatements = exp.content.includes(`;`); + { + validateBrowserExpression( + exp, + context, + false, + hasMultipleStatements + ); + } + if (isInlineStatement || shouldCache && isMemberExp) { + exp = createCompoundExpression([ + `${isInlineStatement ? `$event` : `${``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`, + exp, + hasMultipleStatements ? `}` : `)` + ]); + } + } + let ret = { + props: [ + createObjectProperty( + eventName, + exp || createSimpleExpression(`() => {}`, false, loc) + ) + ] + }; + if (augmentor) { + ret = augmentor(ret); + } + if (shouldCache) { + ret.props[0].value = context.cache(ret.props[0].value); + } + ret.props.forEach((p) => p.key.isHandlerKey = true); + return ret; + }; + + const transformText = (node, context) => { + if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) { + return () => { + const children = node.children; + let currentContainer = void 0; + let hasText = false; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child)) { + hasText = true; + for (let j = i + 1; j < children.length; j++) { + const next = children[j]; + if (isText$1(next)) { + if (!currentContainer) { + currentContainer = children[i] = createCompoundExpression( + [child], + child.loc + ); + } + currentContainer.children.push(` + `, next); + children.splice(j, 1); + j--; + } else { + currentContainer = void 0; + break; + } + } + } + } + if (!hasText || // if this is a plain element with a single text child, leave it + // as-is since the runtime has dedicated fast path for this by directly + // setting textContent of the element. + // for component root it's always normalized anyway. + children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756 + // custom directives can potentially add DOM elements arbitrarily, + // we need to avoid setting textContent of the element at runtime + // to avoid accidentally overwriting the DOM elements added + // by the user through custom directives. + !node.props.find( + (p) => p.type === 7 && !context.directiveTransforms[p.name] + ) && // in compat mode, <template> tags with no special directives + // will be rendered as a fragment so its children must be + // converted into vnodes. + !(node.tag === "template"))) { + return; + } + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child) || child.type === 8) { + const callArgs = []; + if (child.type !== 2 || child.content !== " ") { + callArgs.push(child); + } + if (!context.ssr && getConstantType(child, context) === 0) { + callArgs.push( + 1 + (` /* ${PatchFlagNames[1]} */` ) + ); + } + children[i] = { + type: 12, + content: child, + loc: child.loc, + codegenNode: createCallExpression( + context.helper(CREATE_TEXT), + callArgs + ) + }; + } + } + }; + } + }; + + const seen$1 = /* @__PURE__ */ new WeakSet(); + const transformOnce = (node, context) => { + if (node.type === 1 && findDir(node, "once", true)) { + if (seen$1.has(node) || context.inVOnce || context.inSSR) { + return; + } + seen$1.add(node); + context.inVOnce = true; + context.helper(SET_BLOCK_TRACKING); + return () => { + context.inVOnce = false; + const cur = context.currentNode; + if (cur.codegenNode) { + cur.codegenNode = context.cache( + cur.codegenNode, + true, + true + ); + } + }; + } + }; + + const transformModel$1 = (dir, node, context) => { + const { exp, arg } = dir; + if (!exp) { + context.onError( + createCompilerError(41, dir.loc) + ); + return createTransformProps(); + } + const rawExp = exp.loc.source.trim(); + const expString = exp.type === 4 ? exp.content : rawExp; + const bindingType = context.bindingMetadata[rawExp]; + if (bindingType === "props" || bindingType === "props-aliased") { + context.onError(createCompilerError(44, exp.loc)); + return createTransformProps(); + } + if (!expString.trim() || !isMemberExpression(exp) && true) { + context.onError( + createCompilerError(42, exp.loc) + ); + return createTransformProps(); + } + const propName = arg ? arg : createSimpleExpression("modelValue", true); + const eventName = arg ? isStaticExp(arg) ? `onUpdate:${camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`; + let assignmentExp; + const eventArg = context.isTS ? `($event: any)` : `$event`; + { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + exp, + `) = $event)` + ]); + } + const props = [ + // modelValue: foo + createObjectProperty(propName, dir.exp), + // "onUpdate:modelValue": $event => (foo = $event) + createObjectProperty(eventName, assignmentExp) + ]; + if (dir.modifiers.length && node.tagType === 1) { + const modifiers = dir.modifiers.map((m) => m.content).map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `); + const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`; + props.push( + createObjectProperty( + modifiersKey, + createSimpleExpression( + `{ ${modifiers} }`, + false, + dir.loc, + 2 + ) + ) + ); + } + return createTransformProps(props); + }; + function createTransformProps(props = []) { + return { props }; + } + + const validDivisionCharRE = /[\w).+\-_$\]]/; + const transformFilter = (node, context) => { + if (!isCompatEnabled("COMPILER_FILTERS", context)) { + return; + } + if (node.type === 5) { + rewriteFilter(node.content, context); + } else if (node.type === 1) { + node.props.forEach((prop) => { + if (prop.type === 7 && prop.name !== "for" && prop.exp) { + rewriteFilter(prop.exp, context); + } + }); + } + }; + function rewriteFilter(node, context) { + if (node.type === 4) { + parseFilter(node, context); + } else { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (typeof child !== "object") continue; + if (child.type === 4) { + parseFilter(child, context); + } else if (child.type === 8) { + rewriteFilter(node, context); + } else if (child.type === 5) { + rewriteFilter(child.content, context); + } + } + } + } + function parseFilter(node, context) { + const exp = node.content; + let inSingle = false; + let inDouble = false; + let inTemplateString = false; + let inRegex = false; + let curly = 0; + let square = 0; + let paren = 0; + let lastFilterIndex = 0; + let c, prev, i, expression, filters = []; + for (i = 0; i < exp.length; i++) { + prev = c; + c = exp.charCodeAt(i); + if (inSingle) { + if (c === 39 && prev !== 92) inSingle = false; + } else if (inDouble) { + if (c === 34 && prev !== 92) inDouble = false; + } else if (inTemplateString) { + if (c === 96 && prev !== 92) inTemplateString = false; + } else if (inRegex) { + if (c === 47 && prev !== 92) inRegex = false; + } else if (c === 124 && // pipe + exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) { + if (expression === void 0) { + lastFilterIndex = i + 1; + expression = exp.slice(0, i).trim(); + } else { + pushFilter(); + } + } else { + switch (c) { + case 34: + inDouble = true; + break; + // " + case 39: + inSingle = true; + break; + // ' + case 96: + inTemplateString = true; + break; + // ` + case 40: + paren++; + break; + // ( + case 41: + paren--; + break; + // ) + case 91: + square++; + break; + // [ + case 93: + square--; + break; + // ] + case 123: + curly++; + break; + // { + case 125: + curly--; + break; + } + if (c === 47) { + let j = i - 1; + let p; + for (; j >= 0; j--) { + p = exp.charAt(j); + if (p !== " ") break; + } + if (!p || !validDivisionCharRE.test(p)) { + inRegex = true; + } + } + } + } + if (expression === void 0) { + expression = exp.slice(0, i).trim(); + } else if (lastFilterIndex !== 0) { + pushFilter(); + } + function pushFilter() { + filters.push(exp.slice(lastFilterIndex, i).trim()); + lastFilterIndex = i + 1; + } + if (filters.length) { + warnDeprecation( + "COMPILER_FILTERS", + context, + node.loc + ); + for (i = 0; i < filters.length; i++) { + expression = wrapFilter(expression, filters[i], context); + } + node.content = expression; + node.ast = void 0; + } + } + function wrapFilter(exp, filter, context) { + context.helper(RESOLVE_FILTER); + const i = filter.indexOf("("); + if (i < 0) { + context.filters.add(filter); + return `${toValidAssetId(filter, "filter")}(${exp})`; + } else { + const name = filter.slice(0, i); + const args = filter.slice(i + 1); + context.filters.add(name); + return `${toValidAssetId(name, "filter")}(${exp}${args !== ")" ? "," + args : args}`; + } + } + + const seen = /* @__PURE__ */ new WeakSet(); + const transformMemo = (node, context) => { + if (node.type === 1) { + const dir = findDir(node, "memo"); + if (!dir || seen.has(node)) { + return; + } + seen.add(node); + return () => { + const codegenNode = node.codegenNode || context.currentNode.codegenNode; + if (codegenNode && codegenNode.type === 13) { + if (node.tagType !== 1) { + convertToBlock(codegenNode, context); + } + node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [ + dir.exp, + createFunctionExpression(void 0, codegenNode), + `_cache`, + String(context.cached.length) + ]); + context.cached.push(null); + } + }; + } + }; + + function getBaseTransformPreset(prefixIdentifiers) { + return [ + [ + transformOnce, + transformIf, + transformMemo, + transformFor, + ...[transformFilter] , + ...[transformExpression] , + transformSlotOutlet, + transformElement, + trackSlotScopes, + transformText + ], + { + on: transformOn$1, + bind: transformBind, + model: transformModel$1 + } + ]; + } + function baseCompile(source, options = {}) { + const onError = options.onError || defaultOnError; + const isModuleMode = options.mode === "module"; + { + if (options.prefixIdentifiers === true) { + onError(createCompilerError(47)); + } else if (isModuleMode) { + onError(createCompilerError(48)); + } + } + const prefixIdentifiers = false; + if (options.cacheHandlers) { + onError(createCompilerError(49)); + } + if (options.scopeId && !isModuleMode) { + onError(createCompilerError(50)); + } + const resolvedOptions = extend({}, options, { + prefixIdentifiers + }); + const ast = isString(source) ? baseParse(source, resolvedOptions) : source; + const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(); + transform( + ast, + extend({}, resolvedOptions, { + nodeTransforms: [ + ...nodeTransforms, + ...options.nodeTransforms || [] + // user transforms + ], + directiveTransforms: extend( + {}, + directiveTransforms, + options.directiveTransforms || {} + // user transforms + ) + }) + ); + return generate(ast, resolvedOptions); + } + + const BindingTypes = { + "DATA": "data", + "PROPS": "props", + "PROPS_ALIASED": "props-aliased", + "SETUP_LET": "setup-let", + "SETUP_CONST": "setup-const", + "SETUP_REACTIVE_CONST": "setup-reactive-const", + "SETUP_MAYBE_REF": "setup-maybe-ref", + "SETUP_REF": "setup-ref", + "OPTIONS": "options", + "LITERAL_CONST": "literal-const" + }; + + const noopDirectiveTransform = () => ({ props: [] }); + + const V_MODEL_RADIO = Symbol(`vModelRadio` ); + const V_MODEL_CHECKBOX = Symbol( + `vModelCheckbox` + ); + const V_MODEL_TEXT = Symbol(`vModelText` ); + const V_MODEL_SELECT = Symbol( + `vModelSelect` + ); + const V_MODEL_DYNAMIC = Symbol( + `vModelDynamic` + ); + const V_ON_WITH_MODIFIERS = Symbol( + `vOnModifiersGuard` + ); + const V_ON_WITH_KEYS = Symbol( + `vOnKeysGuard` + ); + const V_SHOW = Symbol(`vShow` ); + const TRANSITION = Symbol(`Transition` ); + const TRANSITION_GROUP = Symbol( + `TransitionGroup` + ); + registerRuntimeHelpers({ + [V_MODEL_RADIO]: `vModelRadio`, + [V_MODEL_CHECKBOX]: `vModelCheckbox`, + [V_MODEL_TEXT]: `vModelText`, + [V_MODEL_SELECT]: `vModelSelect`, + [V_MODEL_DYNAMIC]: `vModelDynamic`, + [V_ON_WITH_MODIFIERS]: `withModifiers`, + [V_ON_WITH_KEYS]: `withKeys`, + [V_SHOW]: `vShow`, + [TRANSITION]: `Transition`, + [TRANSITION_GROUP]: `TransitionGroup` + }); + + let decoder; + function decodeHtmlBrowser(raw, asAttr = false) { + if (!decoder) { + decoder = document.createElement("div"); + } + if (asAttr) { + decoder.innerHTML = `<div foo="${raw.replace(/"/g, """)}">`; + return decoder.children[0].getAttribute("foo"); + } else { + decoder.innerHTML = raw; + return decoder.textContent; + } + } + + const parserOptions = { + parseMode: "html", + isVoidTag, + isNativeTag: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag), + isPreTag: (tag) => tag === "pre", + isIgnoreNewlineTag: (tag) => tag === "pre" || tag === "textarea", + decodeEntities: decodeHtmlBrowser , + isBuiltInComponent: (tag) => { + if (tag === "Transition" || tag === "transition") { + return TRANSITION; + } else if (tag === "TransitionGroup" || tag === "transition-group") { + return TRANSITION_GROUP; + } + }, + // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher + getNamespace(tag, parent, rootNamespace) { + let ns = parent ? parent.ns : rootNamespace; + if (parent && ns === 2) { + if (parent.tag === "annotation-xml") { + if (tag === "svg") { + return 1; + } + if (parent.props.some( + (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml") + )) { + ns = 0; + } + } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") { + ns = 0; + } + } else if (parent && ns === 1) { + if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") { + ns = 0; + } + } + if (ns === 0) { + if (tag === "svg") { + return 1; + } + if (tag === "math") { + return 2; + } + } + return ns; + } + }; + + const transformStyle = (node) => { + if (node.type === 1) { + node.props.forEach((p, i) => { + if (p.type === 6 && p.name === "style" && p.value) { + node.props[i] = { + type: 7, + name: `bind`, + arg: createSimpleExpression(`style`, true, p.loc), + exp: parseInlineCSS(p.value.content, p.loc), + modifiers: [], + loc: p.loc + }; + } + }); + } + }; + const parseInlineCSS = (cssText, loc) => { + const normalized = parseStringStyle(cssText); + return createSimpleExpression( + JSON.stringify(normalized), + false, + loc, + 3 + ); + }; + + function createDOMCompilerError(code, loc) { + return createCompilerError( + code, + loc, + DOMErrorMessages + ); + } + const DOMErrorCodes = { + "X_V_HTML_NO_EXPRESSION": 53, + "53": "X_V_HTML_NO_EXPRESSION", + "X_V_HTML_WITH_CHILDREN": 54, + "54": "X_V_HTML_WITH_CHILDREN", + "X_V_TEXT_NO_EXPRESSION": 55, + "55": "X_V_TEXT_NO_EXPRESSION", + "X_V_TEXT_WITH_CHILDREN": 56, + "56": "X_V_TEXT_WITH_CHILDREN", + "X_V_MODEL_ON_INVALID_ELEMENT": 57, + "57": "X_V_MODEL_ON_INVALID_ELEMENT", + "X_V_MODEL_ARG_ON_ELEMENT": 58, + "58": "X_V_MODEL_ARG_ON_ELEMENT", + "X_V_MODEL_ON_FILE_INPUT_ELEMENT": 59, + "59": "X_V_MODEL_ON_FILE_INPUT_ELEMENT", + "X_V_MODEL_UNNECESSARY_VALUE": 60, + "60": "X_V_MODEL_UNNECESSARY_VALUE", + "X_V_SHOW_NO_EXPRESSION": 61, + "61": "X_V_SHOW_NO_EXPRESSION", + "X_TRANSITION_INVALID_CHILDREN": 62, + "62": "X_TRANSITION_INVALID_CHILDREN", + "X_IGNORED_SIDE_EFFECT_TAG": 63, + "63": "X_IGNORED_SIDE_EFFECT_TAG", + "__EXTEND_POINT__": 64, + "64": "__EXTEND_POINT__" + }; + const DOMErrorMessages = { + [53]: `v-html is missing expression.`, + [54]: `v-html will override element children.`, + [55]: `v-text is missing expression.`, + [56]: `v-text will override element children.`, + [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`, + [58]: `v-model argument is not supported on plain elements.`, + [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`, + [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`, + [61]: `v-show is missing expression.`, + [62]: `<Transition> expects exactly one child element or component.`, + [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.` + }; + + const transformVHtml = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(53, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(54, loc) + ); + node.children.length = 0; + } + return { + props: [ + createObjectProperty( + createSimpleExpression(`innerHTML`, true, loc), + exp || createSimpleExpression("", true) + ) + ] + }; + }; + + const transformVText = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(55, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(56, loc) + ); + node.children.length = 0; + } + return { + props: [ + createObjectProperty( + createSimpleExpression(`textContent`, true), + exp ? getConstantType(exp, context) > 0 ? exp : createCallExpression( + context.helperString(TO_DISPLAY_STRING), + [exp], + loc + ) : createSimpleExpression("", true) + ) + ] + }; + }; + + const transformModel = (dir, node, context) => { + const baseResult = transformModel$1(dir, node, context); + if (!baseResult.props.length || node.tagType === 1) { + return baseResult; + } + if (dir.arg) { + context.onError( + createDOMCompilerError( + 58, + dir.arg.loc + ) + ); + } + function checkDuplicatedValue() { + const value = findDir(node, "bind"); + if (value && isStaticArgOf(value.arg, "value")) { + context.onError( + createDOMCompilerError( + 60, + value.loc + ) + ); + } + } + const { tag } = node; + const isCustomElement = context.isCustomElement(tag); + if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) { + let directiveToUse = V_MODEL_TEXT; + let isInvalidType = false; + if (tag === "input" || isCustomElement) { + const type = findProp(node, `type`); + if (type) { + if (type.type === 7) { + directiveToUse = V_MODEL_DYNAMIC; + } else if (type.value) { + switch (type.value.content) { + case "radio": + directiveToUse = V_MODEL_RADIO; + break; + case "checkbox": + directiveToUse = V_MODEL_CHECKBOX; + break; + case "file": + isInvalidType = true; + context.onError( + createDOMCompilerError( + 59, + dir.loc + ) + ); + break; + default: + checkDuplicatedValue(); + break; + } + } + } else if (hasDynamicKeyVBind(node)) { + directiveToUse = V_MODEL_DYNAMIC; + } else { + checkDuplicatedValue(); + } + } else if (tag === "select") { + directiveToUse = V_MODEL_SELECT; + } else { + checkDuplicatedValue(); + } + if (!isInvalidType) { + baseResult.needRuntime = context.helper(directiveToUse); + } + } else { + context.onError( + createDOMCompilerError( + 57, + dir.loc + ) + ); + } + baseResult.props = baseResult.props.filter( + (p) => !(p.key.type === 4 && p.key.content === "modelValue") + ); + return baseResult; + }; + + const isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`); + const isNonKeyModifier = /* @__PURE__ */ makeMap( + // event propagation management + `stop,prevent,self,ctrl,shift,alt,meta,exact,middle` + ); + const maybeKeyModifier = /* @__PURE__ */ makeMap("left,right"); + const isKeyboardEvent = /* @__PURE__ */ makeMap(`onkeyup,onkeydown,onkeypress`); + const resolveModifiers = (key, modifiers, context, loc) => { + const keyModifiers = []; + const nonKeyModifiers = []; + const eventOptionModifiers = []; + for (let i = 0; i < modifiers.length; i++) { + const modifier = modifiers[i].content; + if (modifier === "native" && checkCompatEnabled( + "COMPILER_V_ON_NATIVE", + context, + loc + )) { + eventOptionModifiers.push(modifier); + } else if (isEventOptionModifier(modifier)) { + eventOptionModifiers.push(modifier); + } else { + if (maybeKeyModifier(modifier)) { + if (isStaticExp(key)) { + if (isKeyboardEvent(key.content.toLowerCase())) { + keyModifiers.push(modifier); + } else { + nonKeyModifiers.push(modifier); + } + } else { + keyModifiers.push(modifier); + nonKeyModifiers.push(modifier); + } + } else { + if (isNonKeyModifier(modifier)) { + nonKeyModifiers.push(modifier); + } else { + keyModifiers.push(modifier); + } + } + } + } + return { + keyModifiers, + nonKeyModifiers, + eventOptionModifiers + }; + }; + const transformClick = (key, event) => { + const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === "onclick"; + return isStaticClick ? createSimpleExpression(event, true) : key.type !== 4 ? createCompoundExpression([ + `(`, + key, + `) === "onClick" ? "${event}" : (`, + key, + `)` + ]) : key; + }; + const transformOn = (dir, node, context) => { + return transformOn$1(dir, node, context, (baseResult) => { + const { modifiers } = dir; + if (!modifiers.length) return baseResult; + let { key, value: handlerExp } = baseResult.props[0]; + const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); + if (nonKeyModifiers.includes("right")) { + key = transformClick(key, `onContextmenu`); + } + if (nonKeyModifiers.includes("middle")) { + key = transformClick(key, `onMouseup`); + } + if (nonKeyModifiers.length) { + handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ + handlerExp, + JSON.stringify(nonKeyModifiers) + ]); + } + if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard + (!isStaticExp(key) || isKeyboardEvent(key.content.toLowerCase()))) { + handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [ + handlerExp, + JSON.stringify(keyModifiers) + ]); + } + if (eventOptionModifiers.length) { + const modifierPostfix = eventOptionModifiers.map(capitalize).join(""); + key = isStaticExp(key) ? createSimpleExpression(`${key.content}${modifierPostfix}`, true) : createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); + } + return { + props: [createObjectProperty(key, handlerExp)] + }; + }); + }; + + const transformShow = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(61, loc) + ); + } + return { + props: [], + needRuntime: context.helper(V_SHOW) + }; + }; + + const transformTransition = (node, context) => { + if (node.type === 1 && node.tagType === 1) { + const component = context.isBuiltInComponent(node.tag); + if (component === TRANSITION) { + return () => { + if (!node.children.length) { + return; + } + if (hasMultipleChildren(node)) { + context.onError( + createDOMCompilerError( + 62, + { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: "" + } + ) + ); + } + const child = node.children[0]; + if (child.type === 1) { + for (const p of child.props) { + if (p.type === 7 && p.name === "show") { + node.props.push({ + type: 6, + name: "persisted", + nameLoc: node.loc, + value: void 0, + loc: node.loc + }); + } + } + } + }; + } + } + }; + function hasMultipleChildren(node) { + const children = node.children = node.children.filter( + (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim()) + ); + const child = children[0]; + return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren); + } + + const ignoreSideEffectTags = (node, context) => { + if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) { + context.onError( + createDOMCompilerError( + 63, + node.loc + ) + ); + context.removeNode(); + } + }; + + function isValidHTMLNesting(parent, child) { + if (parent === "template") { + return true; + } + if (parent in onlyValidChildren) { + return onlyValidChildren[parent].has(child); + } + if (child in onlyValidParents) { + return onlyValidParents[child].has(parent); + } + if (parent in knownInvalidChildren) { + if (knownInvalidChildren[parent].has(child)) return false; + } + if (child in knownInvalidParents) { + if (knownInvalidParents[child].has(parent)) return false; + } + return true; + } + const headings = /* @__PURE__ */ new Set(["h1", "h2", "h3", "h4", "h5", "h6"]); + const emptySet = /* @__PURE__ */ new Set([]); + const onlyValidChildren = { + head: /* @__PURE__ */ new Set([ + "base", + "basefront", + "bgsound", + "link", + "meta", + "title", + "noscript", + "noframes", + "style", + "script", + "template" + ]), + optgroup: /* @__PURE__ */ new Set(["option"]), + select: /* @__PURE__ */ new Set(["optgroup", "option", "hr"]), + // table + table: /* @__PURE__ */ new Set(["caption", "colgroup", "tbody", "tfoot", "thead"]), + tr: /* @__PURE__ */ new Set(["td", "th"]), + colgroup: /* @__PURE__ */ new Set(["col"]), + tbody: /* @__PURE__ */ new Set(["tr"]), + thead: /* @__PURE__ */ new Set(["tr"]), + tfoot: /* @__PURE__ */ new Set(["tr"]), + // these elements can not have any children elements + script: emptySet, + iframe: emptySet, + option: emptySet, + textarea: emptySet, + style: emptySet, + title: emptySet + }; + const onlyValidParents = { + // sections + html: emptySet, + body: /* @__PURE__ */ new Set(["html"]), + head: /* @__PURE__ */ new Set(["html"]), + // table + td: /* @__PURE__ */ new Set(["tr"]), + colgroup: /* @__PURE__ */ new Set(["table"]), + caption: /* @__PURE__ */ new Set(["table"]), + tbody: /* @__PURE__ */ new Set(["table"]), + tfoot: /* @__PURE__ */ new Set(["table"]), + col: /* @__PURE__ */ new Set(["colgroup"]), + th: /* @__PURE__ */ new Set(["tr"]), + thead: /* @__PURE__ */ new Set(["table"]), + tr: /* @__PURE__ */ new Set(["tbody", "thead", "tfoot"]), + // data list + dd: /* @__PURE__ */ new Set(["dl", "div"]), + dt: /* @__PURE__ */ new Set(["dl", "div"]), + // other + figcaption: /* @__PURE__ */ new Set(["figure"]), + // li: new Set(["ul", "ol"]), + summary: /* @__PURE__ */ new Set(["details"]), + area: /* @__PURE__ */ new Set(["map"]) + }; + const knownInvalidChildren = { + p: /* @__PURE__ */ new Set([ + "address", + "article", + "aside", + "blockquote", + "center", + "details", + "dialog", + "dir", + "div", + "dl", + "fieldset", + "figure", + "footer", + "form", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "header", + "hgroup", + "hr", + "li", + "main", + "nav", + "menu", + "ol", + "p", + "pre", + "section", + "table", + "ul" + ]), + svg: /* @__PURE__ */ new Set([ + "b", + "blockquote", + "br", + "code", + "dd", + "div", + "dl", + "dt", + "em", + "embed", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "hr", + "i", + "img", + "li", + "menu", + "meta", + "ol", + "p", + "pre", + "ruby", + "s", + "small", + "span", + "strong", + "sub", + "sup", + "table", + "u", + "ul", + "var" + ]) + }; + const knownInvalidParents = { + a: /* @__PURE__ */ new Set(["a"]), + button: /* @__PURE__ */ new Set(["button"]), + dd: /* @__PURE__ */ new Set(["dd", "dt"]), + dt: /* @__PURE__ */ new Set(["dd", "dt"]), + form: /* @__PURE__ */ new Set(["form"]), + li: /* @__PURE__ */ new Set(["li"]), + h1: headings, + h2: headings, + h3: headings, + h4: headings, + h5: headings, + h6: headings + }; + + const validateHtmlNesting = (node, context) => { + if (node.type === 1 && node.tagType === 0 && context.parent && context.parent.type === 1 && context.parent.tagType === 0 && !isValidHTMLNesting(context.parent.tag, node.tag)) { + const error = new SyntaxError( + `<${node.tag}> cannot be child of <${context.parent.tag}>, according to HTML specifications. This can cause hydration errors or potentially disrupt future functionality.` + ); + error.loc = node.loc; + context.onWarn(error); + } + }; + + const DOMNodeTransforms = [ + transformStyle, + ...[transformTransition, validateHtmlNesting] + ]; + const DOMDirectiveTransforms = { + cloak: noopDirectiveTransform, + html: transformVHtml, + text: transformVText, + model: transformModel, + // override compiler-core + on: transformOn, + // override compiler-core + show: transformShow + }; + function compile(src, options = {}) { + return baseCompile( + src, + extend({}, parserOptions, options, { + nodeTransforms: [ + // ignore <script> and <tag> + // this is not put inside DOMNodeTransforms because that list is used + // by compiler-ssr to generate vnode fallback branches + ignoreSideEffectTags, + ...DOMNodeTransforms, + ...options.nodeTransforms || [] + ], + directiveTransforms: extend( + {}, + DOMDirectiveTransforms, + options.directiveTransforms || {} + ), + transformHoist: null + }) + ); + } + function parse(template, options = {}) { + return baseParse(template, extend({}, parserOptions, options)); + } + + exports.BASE_TRANSITION = BASE_TRANSITION; + exports.BindingTypes = BindingTypes; + exports.CAMELIZE = CAMELIZE; + exports.CAPITALIZE = CAPITALIZE; + exports.CREATE_BLOCK = CREATE_BLOCK; + exports.CREATE_COMMENT = CREATE_COMMENT; + exports.CREATE_ELEMENT_BLOCK = CREATE_ELEMENT_BLOCK; + exports.CREATE_ELEMENT_VNODE = CREATE_ELEMENT_VNODE; + exports.CREATE_SLOTS = CREATE_SLOTS; + exports.CREATE_STATIC = CREATE_STATIC; + exports.CREATE_TEXT = CREATE_TEXT; + exports.CREATE_VNODE = CREATE_VNODE; + exports.CompilerDeprecationTypes = CompilerDeprecationTypes; + exports.ConstantTypes = ConstantTypes; + exports.DOMDirectiveTransforms = DOMDirectiveTransforms; + exports.DOMErrorCodes = DOMErrorCodes; + exports.DOMErrorMessages = DOMErrorMessages; + exports.DOMNodeTransforms = DOMNodeTransforms; + exports.ElementTypes = ElementTypes; + exports.ErrorCodes = ErrorCodes; + exports.FRAGMENT = FRAGMENT; + exports.GUARD_REACTIVE_PROPS = GUARD_REACTIVE_PROPS; + exports.IS_MEMO_SAME = IS_MEMO_SAME; + exports.IS_REF = IS_REF; + exports.KEEP_ALIVE = KEEP_ALIVE; + exports.MERGE_PROPS = MERGE_PROPS; + exports.NORMALIZE_CLASS = NORMALIZE_CLASS; + exports.NORMALIZE_PROPS = NORMALIZE_PROPS; + exports.NORMALIZE_STYLE = NORMALIZE_STYLE; + exports.Namespaces = Namespaces; + exports.NodeTypes = NodeTypes; + exports.OPEN_BLOCK = OPEN_BLOCK; + exports.POP_SCOPE_ID = POP_SCOPE_ID; + exports.PUSH_SCOPE_ID = PUSH_SCOPE_ID; + exports.RENDER_LIST = RENDER_LIST; + exports.RENDER_SLOT = RENDER_SLOT; + exports.RESOLVE_COMPONENT = RESOLVE_COMPONENT; + exports.RESOLVE_DIRECTIVE = RESOLVE_DIRECTIVE; + exports.RESOLVE_DYNAMIC_COMPONENT = RESOLVE_DYNAMIC_COMPONENT; + exports.RESOLVE_FILTER = RESOLVE_FILTER; + exports.SET_BLOCK_TRACKING = SET_BLOCK_TRACKING; + exports.SUSPENSE = SUSPENSE; + exports.TELEPORT = TELEPORT; + exports.TO_DISPLAY_STRING = TO_DISPLAY_STRING; + exports.TO_HANDLERS = TO_HANDLERS; + exports.TO_HANDLER_KEY = TO_HANDLER_KEY; + exports.TRANSITION = TRANSITION; + exports.TRANSITION_GROUP = TRANSITION_GROUP; + exports.TS_NODE_TYPES = TS_NODE_TYPES; + exports.UNREF = UNREF; + exports.V_MODEL_CHECKBOX = V_MODEL_CHECKBOX; + exports.V_MODEL_DYNAMIC = V_MODEL_DYNAMIC; + exports.V_MODEL_RADIO = V_MODEL_RADIO; + exports.V_MODEL_SELECT = V_MODEL_SELECT; + exports.V_MODEL_TEXT = V_MODEL_TEXT; + exports.V_ON_WITH_KEYS = V_ON_WITH_KEYS; + exports.V_ON_WITH_MODIFIERS = V_ON_WITH_MODIFIERS; + exports.V_SHOW = V_SHOW; + exports.WITH_CTX = WITH_CTX; + exports.WITH_DIRECTIVES = WITH_DIRECTIVES; + exports.WITH_MEMO = WITH_MEMO; + exports.advancePositionWithClone = advancePositionWithClone; + exports.advancePositionWithMutation = advancePositionWithMutation; + exports.assert = assert; + exports.baseCompile = baseCompile; + exports.baseParse = baseParse; + exports.buildDirectiveArgs = buildDirectiveArgs; + exports.buildProps = buildProps; + exports.buildSlots = buildSlots; + exports.checkCompatEnabled = checkCompatEnabled; + exports.compile = compile; + exports.convertToBlock = convertToBlock; + exports.createArrayExpression = createArrayExpression; + exports.createAssignmentExpression = createAssignmentExpression; + exports.createBlockStatement = createBlockStatement; + exports.createCacheExpression = createCacheExpression; + exports.createCallExpression = createCallExpression; + exports.createCompilerError = createCompilerError; + exports.createCompoundExpression = createCompoundExpression; + exports.createConditionalExpression = createConditionalExpression; + exports.createDOMCompilerError = createDOMCompilerError; + exports.createForLoopParams = createForLoopParams; + exports.createFunctionExpression = createFunctionExpression; + exports.createIfStatement = createIfStatement; + exports.createInterpolation = createInterpolation; + exports.createObjectExpression = createObjectExpression; + exports.createObjectProperty = createObjectProperty; + exports.createReturnStatement = createReturnStatement; + exports.createRoot = createRoot; + exports.createSequenceExpression = createSequenceExpression; + exports.createSimpleExpression = createSimpleExpression; + exports.createStructuralDirectiveTransform = createStructuralDirectiveTransform; + exports.createTemplateLiteral = createTemplateLiteral; + exports.createTransformContext = createTransformContext; + exports.createVNodeCall = createVNodeCall; + exports.errorMessages = errorMessages; + exports.extractIdentifiers = extractIdentifiers; + exports.findDir = findDir; + exports.findProp = findProp; + exports.forAliasRE = forAliasRE; + exports.generate = generate; + exports.generateCodeFrame = generateCodeFrame; + exports.getBaseTransformPreset = getBaseTransformPreset; + exports.getConstantType = getConstantType; + exports.getMemoedVNodeCall = getMemoedVNodeCall; + exports.getVNodeBlockHelper = getVNodeBlockHelper; + exports.getVNodeHelper = getVNodeHelper; + exports.hasDynamicKeyVBind = hasDynamicKeyVBind; + exports.hasScopeRef = hasScopeRef; + exports.helperNameMap = helperNameMap; + exports.injectProp = injectProp; + exports.isCoreComponent = isCoreComponent; + exports.isFnExpression = isFnExpression; + exports.isFnExpressionBrowser = isFnExpressionBrowser; + exports.isFnExpressionNode = isFnExpressionNode; + exports.isFunctionType = isFunctionType; + exports.isInDestructureAssignment = isInDestructureAssignment; + exports.isInNewExpression = isInNewExpression; + exports.isMemberExpression = isMemberExpression; + exports.isMemberExpressionBrowser = isMemberExpressionBrowser; + exports.isMemberExpressionNode = isMemberExpressionNode; + exports.isReferencedIdentifier = isReferencedIdentifier; + exports.isSimpleIdentifier = isSimpleIdentifier; + exports.isSlotOutlet = isSlotOutlet; + exports.isStaticArgOf = isStaticArgOf; + exports.isStaticExp = isStaticExp; + exports.isStaticProperty = isStaticProperty; + exports.isStaticPropertyKey = isStaticPropertyKey; + exports.isTemplateNode = isTemplateNode; + exports.isText = isText$1; + exports.isVPre = isVPre; + exports.isVSlot = isVSlot; + exports.locStub = locStub; + exports.noopDirectiveTransform = noopDirectiveTransform; + exports.parse = parse; + exports.parserOptions = parserOptions; + exports.processExpression = processExpression; + exports.processFor = processFor; + exports.processIf = processIf; + exports.processSlotOutlet = processSlotOutlet; + exports.registerRuntimeHelpers = registerRuntimeHelpers; + exports.resolveComponentType = resolveComponentType; + exports.stringifyExpression = stringifyExpression; + exports.toValidAssetId = toValidAssetId; + exports.trackSlotScopes = trackSlotScopes; + exports.trackVForSlotScopes = trackVForSlotScopes; + exports.transform = transform; + exports.transformBind = transformBind; + exports.transformElement = transformElement; + exports.transformExpression = transformExpression; + exports.transformModel = transformModel$1; + exports.transformOn = transformOn$1; + exports.transformStyle = transformStyle; + exports.traverseNode = traverseNode; + exports.unwrapTSNode = unwrapTSNode; + exports.walkBlockDeclarations = walkBlockDeclarations; + exports.walkFunctionParams = walkFunctionParams; + exports.walkIdentifiers = walkIdentifiers; + exports.warnDeprecation = warnDeprecation; + + return exports; + +})({}); diff --git a/node_modules/@vue/compiler-dom/dist/compiler-dom.global.prod.js b/node_modules/@vue/compiler-dom/dist/compiler-dom.global.prod.js new file mode 100644 index 0000000..8b5d929 --- /dev/null +++ b/node_modules/@vue/compiler-dom/dist/compiler-dom.global.prod.js @@ -0,0 +1,14 @@ +/** +* @vue/compiler-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/var VueCompilerDOM=function(e){"use strict";let t;function n(e){let t=Object.create(null);for(let n of e.split(","))t[n]=1;return e=>e in t}let i={},r=()=>{},s=()=>!1,o=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&(e.charCodeAt(2)>122||97>e.charCodeAt(2)),a=Object.assign,l=Array.isArray,c=e=>"string"==typeof e,h=e=>"symbol"==typeof e,d=e=>null!==e&&"object"==typeof e,p=n(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),u=n("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),f=e=>{let t=Object.create(null);return n=>t[n]||(t[n]=e(n))},E=/-(\w)/g,_=f(e=>e.replace(E,(e,t)=>t?t.toUpperCase():"")),m=f(e=>e.charAt(0).toUpperCase()+e.slice(1)),S=f(e=>e?`on${m(e)}`:""),g=/;(?![^(]*\))/g,T=/:([^]+)/,N=/\/\*[^]*?\*\//g,I=n("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"),y=n("svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"),O=n("annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"),A=n("area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"),C=Symbol(""),b=Symbol(""),v=Symbol(""),R=Symbol(""),x=Symbol(""),L=Symbol(""),M=Symbol(""),P=Symbol(""),D=Symbol(""),V=Symbol(""),k=Symbol(""),X=Symbol(""),w=Symbol(""),U=Symbol(""),F=Symbol(""),B=Symbol(""),$=Symbol(""),H=Symbol(""),G=Symbol(""),q=Symbol(""),J=Symbol(""),j=Symbol(""),W=Symbol(""),K=Symbol(""),Y=Symbol(""),Q=Symbol(""),z=Symbol(""),Z=Symbol(""),ee=Symbol(""),et=Symbol(""),en=Symbol(""),ei=Symbol(""),er=Symbol(""),es=Symbol(""),eo=Symbol(""),ea=Symbol(""),el=Symbol(""),ec=Symbol(""),eh=Symbol(""),ed={[C]:"Fragment",[b]:"Teleport",[v]:"Suspense",[R]:"KeepAlive",[x]:"BaseTransition",[L]:"openBlock",[M]:"createBlock",[P]:"createElementBlock",[D]:"createVNode",[V]:"createElementVNode",[k]:"createCommentVNode",[X]:"createTextVNode",[w]:"createStaticVNode",[U]:"resolveComponent",[F]:"resolveDynamicComponent",[B]:"resolveDirective",[$]:"resolveFilter",[H]:"withDirectives",[G]:"renderList",[q]:"renderSlot",[J]:"createSlots",[j]:"toDisplayString",[W]:"mergeProps",[K]:"normalizeClass",[Y]:"normalizeStyle",[Q]:"normalizeProps",[z]:"guardReactiveProps",[Z]:"toHandlers",[ee]:"camelize",[et]:"capitalize",[en]:"toHandlerKey",[ei]:"setBlockTracking",[er]:"pushScopeId",[es]:"popScopeId",[eo]:"withCtx",[ea]:"unref",[el]:"isRef",[ec]:"withMemo",[eh]:"isMemoSame"};function ep(e){Object.getOwnPropertySymbols(e).forEach(t=>{ed[t]=e[t]})}let eu={start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0},source:""};function ef(e,t=""){return{type:0,source:t,children:e,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:[],temps:0,codegenNode:void 0,loc:eu}}function eE(e,t,n,i,r,s,o,a=!1,l=!1,c=!1,h=eu){return e&&(a?(e.helper(L),e.helper(eb(e.inSSR,c))):e.helper(eC(e.inSSR,c)),o&&e.helper(H)),{type:13,tag:t,props:n,children:i,patchFlag:r,dynamicProps:s,directives:o,isBlock:a,disableTracking:l,isComponent:c,loc:h}}function e_(e,t=eu){return{type:17,loc:t,elements:e}}function em(e,t=eu){return{type:15,loc:t,properties:e}}function eS(e,t){return{type:16,loc:eu,key:c(e)?eg(e,!0):e,value:t}}function eg(e,t=!1,n=eu,i=0){return{type:4,loc:n,content:e,isStatic:t,constType:t?3:i}}function eT(e,t=eu){return{type:8,loc:t,children:e}}function eN(e,t=[],n=eu){return{type:14,loc:n,callee:e,arguments:t}}function eI(e,t,n=!1,i=!1,r=eu){return{type:18,params:e,returns:t,newline:n,isSlot:i,loc:r}}function ey(e,t,n,i=!0){return{type:19,test:e,consequent:t,alternate:n,newline:i,loc:eu}}function eO(e,t,n=!1,i=!1){return{type:20,index:e,value:t,needPauseTracking:n,inVOnce:i,needArraySpread:!1,loc:eu}}function eA(e){return{type:21,body:e,loc:eu}}function eC(e,t){return e||t?D:V}function eb(e,t){return e||t?M:P}function ev(e,{helper:t,removeHelper:n,inSSR:i}){e.isBlock||(e.isBlock=!0,n(eC(i,e.isComponent)),t(L),t(eb(i,e.isComponent)))}let eR=new Uint8Array([123,123]),ex=new Uint8Array([125,125]);function eL(e){return e>=97&&e<=122||e>=65&&e<=90}function eM(e){return 32===e||10===e||9===e||12===e||13===e}function eP(e){return 47===e||62===e||eM(e)}function eD(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}let eV={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101]),TextareaEnd:new Uint8Array([60,47,116,101,120,116,97,114,101,97])},ek={COMPILER_IS_ON_ELEMENT:{message:'Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".',link:"https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html"},COMPILER_V_BIND_SYNC:{message:e=>`.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${e}.sync\` should be changed to \`v-model:${e}\`.`,link:"https://v3-migration.vuejs.org/breaking-changes/v-model.html"},COMPILER_V_BIND_OBJECT_ORDER:{message:'v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.',link:"https://v3-migration.vuejs.org/breaking-changes/v-bind.html"},COMPILER_V_ON_NATIVE:{message:".native modifier for v-on has been removed as is no longer necessary.",link:"https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html"},COMPILER_V_IF_V_FOR_PRECEDENCE:{message:"v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.",link:"https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html"},COMPILER_NATIVE_TEMPLATE:{message:"<template> with no special directives will render as a native template element instead of its inner content in Vue 3."},COMPILER_INLINE_TEMPLATE:{message:'"inline-template" has been removed in Vue 3.',link:"https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html"},COMPILER_FILTERS:{message:'filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.',link:"https://v3-migration.vuejs.org/breaking-changes/filters.html"}};function eX(e,{compatConfig:t}){let n=t&&t[e];return"MODE"===e?n||3:n}function ew(e,t){let n=eX("MODE",t),i=eX(e,t);return 3===n?!0===i:!1!==i}function eU(e){throw e}function eF(e){}function eB(e,t,n,i){let r=SyntaxError(String(`https://vuejs.org/error-reference/#compiler-${e}`));return r.code=e,r.loc=t,r}let e$={0:"Illegal comment.",1:"CDATA section is allowed only in XML context.",2:"Duplicate attribute.",3:"End tag cannot have attributes.",4:"Illegal '/' in tags.",5:"Unexpected EOF in tag.",6:"Unexpected EOF in CDATA section.",7:"Unexpected EOF in comment.",8:"Unexpected EOF in script.",9:"Unexpected EOF in tag.",10:"Incorrectly closed comment.",11:"Incorrectly opened comment.",12:"Illegal tag name. Use '<' to print '<'.",13:"Attribute value was expected.",14:"End tag name was expected.",15:"Whitespace was expected.",16:"Unexpected '\x3c!--' in comment.",17:"Attribute name cannot contain U+0022 (\"), U+0027 ('), and U+003C (<).",18:"Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).",19:"Attribute name cannot start with '='.",21:"'<?' is allowed only in XML context.",20:"Unexpected null character.",22:"Illegal '/' in tags.",23:"Invalid end tag.",24:"Element is missing end tag.",25:"Interpolation end sign was not found.",27:"End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.",26:"Legal directive name was expected.",28:"v-if/v-else-if is missing expression.",29:"v-if/else branches must use unique keys.",30:"v-else/v-else-if has no adjacent v-if or v-else-if.",31:"v-for is missing expression.",32:"v-for has invalid expression.",33:"<template v-for> key should be placed on the <template> tag.",34:"v-bind is missing expression.",52:"v-bind with same-name shorthand only allows static argument.",35:"v-on is missing expression.",36:"Unexpected custom directive on <slot> outlet.",37:"Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.",38:"Duplicate slot names found. ",39:"Extraneous children found when component already has explicitly named default slot. These children will be ignored.",40:"v-slot can only be used on components or <template> tags.",41:"v-model is missing expression.",42:"v-model value must be a valid JavaScript member expression.",43:"v-model cannot be used on v-for or v-slot scope variables because they are not writable.",44:`v-model cannot be used on a prop, because local prop bindings are not writable. +Use a v-bind binding combined with a v-on listener that emits update:x event instead.`,45:"Error parsing JavaScript expression: ",46:"<KeepAlive> expects exactly one child component.",51:"@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.",47:'"prefixIdentifiers" option is not supported in this build of compiler.',48:"ES module mode is not supported in this build of compiler.",49:'"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.',50:'"scopeId" option is only supported in module mode.',53:""};function eH(e,t=[]){switch(e.type){case"Identifier":t.push(e);break;case"MemberExpression":let n=e;for(;"MemberExpression"===n.type;)n=n.object;t.push(n);break;case"ObjectPattern":for(let n of e.properties)"RestElement"===n.type?eH(n.argument,t):eH(n.value,t);break;case"ArrayPattern":e.elements.forEach(e=>{e&&eH(e,t)});break;case"RestElement":eH(e.argument,t);break;case"AssignmentPattern":eH(e.left,t)}return t}let eG=e=>e&&("ObjectProperty"===e.type||"ObjectMethod"===e.type)&&!e.computed,eq=["TSAsExpression","TSTypeAssertion","TSNonNullExpression","TSInstantiationExpression","TSSatisfiesExpression"],eJ=e=>4===e.type&&e.isStatic;function ej(e){switch(e){case"Teleport":case"teleport":return b;case"Suspense":case"suspense":return v;case"KeepAlive":case"keep-alive":return R;case"BaseTransition":case"base-transition":return x}}let eW=/^$|^\d|[^\$\w\xA0-\uFFFF]/,eK=e=>!eW.test(e),eY=/[A-Za-z_$\xA0-\uFFFF]/,eQ=/[\.\?\w$\xA0-\uFFFF]/,ez=/\s+[.[]\s*|\s*[.[]\s+/g,eZ=e=>4===e.type?e.content:e.loc.source,e1=e=>{let t=eZ(e).trim().replace(ez,e=>e.trim()),n=0,i=[],r=0,s=0,o=null;for(let e=0;e<t.length;e++){let a=t.charAt(e);switch(n){case 0:if("["===a)i.push(n),n=1,r++;else if("("===a)i.push(n),n=2,s++;else if(!(0===e?eY:eQ).test(a))return!1;break;case 1:"'"===a||'"'===a||"`"===a?(i.push(n),n=3,o=a):"["===a?r++:"]"!==a||--r||(n=i.pop());break;case 2:if("'"===a||'"'===a||"`"===a)i.push(n),n=3,o=a;else if("("===a)s++;else if(")"===a){if(e===t.length-1)return!1;--s||(n=i.pop())}break;case 3:a===o&&(n=i.pop(),o=null)}}return!r&&!s},e0=/^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/,e2=e=>e0.test(eZ(e));function e3(e,t,n=t.length){let i=0,r=-1;for(let e=0;e<n;e++)10===t.charCodeAt(e)&&(i++,r=e);return e.offset+=n,e.line+=i,e.column=-1===r?e.column+n:n-r,e}function e4(e,t,n=!1){for(let i=0;i<e.props.length;i++){let r=e.props[i];if(7===r.type&&(n||r.exp)&&(c(t)?r.name===t:t.test(r.name)))return r}}function e6(e,t,n=!1,i=!1){for(let r=0;r<e.props.length;r++){let s=e.props[r];if(6===s.type){if(n)continue;if(s.name===t&&(s.value||i))return s}else if("bind"===s.name&&(s.exp||i)&&e5(s.arg,t))return s}}function e5(e,t){return!!(e&&eJ(e)&&e.content===t)}function e9(e){return e.props.some(e=>7===e.type&&"bind"===e.name&&(!e.arg||4!==e.arg.type||!e.arg.isStatic))}function e7(e){return 5===e.type||2===e.type}function e8(e){return 7===e.type&&"pre"===e.name}function te(e){return 7===e.type&&"slot"===e.name}function tt(e){return 1===e.type&&3===e.tagType}function tn(e){return 1===e.type&&2===e.tagType}let ti=new Set([Q,z]);function tr(e,t,n){let i,r,s=13===e.type?e.props:e.arguments[2],o=[];if(s&&!c(s)&&14===s.type){let e=function e(t,n=[]){if(t&&!c(t)&&14===t.type){let i=t.callee;if(!c(i)&&ti.has(i))return e(t.arguments[0],n.concat(t))}return[t,n]}(s);s=e[0],r=(o=e[1])[o.length-1]}if(null==s||c(s))i=em([t]);else if(14===s.type){let e=s.arguments[0];c(e)||15!==e.type?s.callee===Z?i=eN(n.helper(W),[em([t]),s]):s.arguments.unshift(em([t])):ts(t,e)||e.properties.unshift(t),i||(i=s)}else 15===s.type?(ts(t,s)||s.properties.unshift(t),i=s):(i=eN(n.helper(W),[em([t]),s]),r&&r.callee===z&&(r=o[o.length-2]));13===e.type?r?r.arguments[0]=i:e.props=i:r?r.arguments[0]=i:e.arguments[2]=i}function ts(e,t){let n=!1;if(4===e.key.type){let i=e.key.content;n=t.properties.some(e=>4===e.key.type&&e.key.content===i)}return n}function to(e,t){return`_${t}_${e.replace(/[^\w]/g,(t,n)=>"-"===t?"_":e.charCodeAt(n).toString())}`}function ta(e){return 14===e.type&&e.callee===ec?e.arguments[1].returns:e}let tl=/([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/,tc={parseMode:"base",ns:0,delimiters:["{{","}}"],getNamespace:()=>0,isVoidTag:s,isPreTag:s,isIgnoreNewlineTag:s,isCustomElement:s,onError:eU,onWarn:eF,comments:!1,prefixIdentifiers:!1},th=tc,td=null,tp="",tu=null,tf=null,tE="",t_=-1,tm=-1,tS=0,tg=!1,tT=null,tN=[],tI=new class{constructor(e,t){this.stack=e,this.cbs=t,this.state=1,this.buffer="",this.sectionStart=0,this.index=0,this.entityStart=0,this.baseState=1,this.inRCDATA=!1,this.inXML=!1,this.inVPre=!1,this.newlines=[],this.mode=0,this.delimiterOpen=eR,this.delimiterClose=ex,this.delimiterIndex=-1,this.currentSequence=void 0,this.sequenceIndex=0}get inSFCRoot(){return 2===this.mode&&0===this.stack.length}reset(){this.state=1,this.mode=0,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=1,this.inRCDATA=!1,this.currentSequence=void 0,this.newlines.length=0,this.delimiterOpen=eR,this.delimiterClose=ex}getPos(e){let t=1,n=e+1;for(let i=this.newlines.length-1;i>=0;i--){let r=this.newlines[i];if(e>r){t=i+2,n=e-r;break}}return{column:n,line:t,offset:e}}peek(){return this.buffer.charCodeAt(this.index+1)}stateText(e){60===e?(this.index>this.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=5,this.sectionStart=this.index):this.inVPre||e!==this.delimiterOpen[0]||(this.state=2,this.delimiterIndex=0,this.stateInterpolationOpen(e))}stateInterpolationOpen(e){if(e===this.delimiterOpen[this.delimiterIndex])if(this.delimiterIndex===this.delimiterOpen.length-1){let e=this.index+1-this.delimiterOpen.length;e>this.sectionStart&&this.cbs.ontext(this.sectionStart,e),this.state=3,this.sectionStart=e}else this.delimiterIndex++;else this.inRCDATA?(this.state=32,this.stateInRCDATA(e)):(this.state=1,this.stateText(e))}stateInterpolation(e){e===this.delimiterClose[0]&&(this.state=4,this.delimiterIndex=0,this.stateInterpolationClose(e))}stateInterpolationClose(e){e===this.delimiterClose[this.delimiterIndex]?this.delimiterIndex===this.delimiterClose.length-1?(this.cbs.oninterpolation(this.sectionStart,this.index+1),this.inRCDATA?this.state=32:this.state=1,this.sectionStart=this.index+1):this.delimiterIndex++:(this.state=3,this.stateInterpolation(e))}stateSpecialStartSequence(e){let t=this.sequenceIndex===this.currentSequence.length;if(t?eP(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!t)return void this.sequenceIndex++}else this.inRCDATA=!1;this.sequenceIndex=0,this.state=6,this.stateInTagName(e)}stateInRCDATA(e){if(this.sequenceIndex===this.currentSequence.length){if(62===e||eM(e)){let t=this.index-this.currentSequence.length;if(this.sectionStart<t){let e=this.index;this.index=t,this.cbs.ontext(this.sectionStart,t),this.index=e}this.sectionStart=t+2,this.stateInClosingTagName(e),this.inRCDATA=!1;return}this.sequenceIndex=0}(32|e)===this.currentSequence[this.sequenceIndex]?this.sequenceIndex+=1:0===this.sequenceIndex?this.currentSequence!==eV.TitleEnd&&(this.currentSequence!==eV.TextareaEnd||this.inSFCRoot)?this.fastForwardTo(60)&&(this.sequenceIndex=1):this.inVPre||e!==this.delimiterOpen[0]||(this.state=2,this.delimiterIndex=0,this.stateInterpolationOpen(e)):this.sequenceIndex=Number(60===e)}stateCDATASequence(e){e===eV.Cdata[this.sequenceIndex]?++this.sequenceIndex===eV.Cdata.length&&(this.state=28,this.currentSequence=eV.CdataEnd,this.sequenceIndex=0,this.sectionStart=this.index+1):(this.sequenceIndex=0,this.state=23,this.stateInDeclaration(e))}fastForwardTo(e){for(;++this.index<this.buffer.length;){let t=this.buffer.charCodeAt(this.index);if(10===t&&this.newlines.push(this.index),t===e)return!0}return this.index=this.buffer.length-1,!1}stateInCommentLike(e){e===this.currentSequence[this.sequenceIndex]?++this.sequenceIndex===this.currentSequence.length&&(this.currentSequence===eV.CdataEnd?this.cbs.oncdata(this.sectionStart,this.index-2):this.cbs.oncomment(this.sectionStart,this.index-2),this.sequenceIndex=0,this.sectionStart=this.index+1,this.state=1):0===this.sequenceIndex?this.fastForwardTo(this.currentSequence[0])&&(this.sequenceIndex=1):e!==this.currentSequence[this.sequenceIndex-1]&&(this.sequenceIndex=0)}startSpecial(e,t){this.enterRCDATA(e,t),this.state=31}enterRCDATA(e,t){this.inRCDATA=!0,this.currentSequence=e,this.sequenceIndex=t}stateBeforeTagName(e){33===e?(this.state=22,this.sectionStart=this.index+1):63===e?(this.state=24,this.sectionStart=this.index+1):eL(e)?(this.sectionStart=this.index,0===this.mode?this.state=6:this.inSFCRoot?this.state=34:this.inXML?this.state=6:116===e?this.state=30:this.state=115===e?29:6):47===e?this.state=8:(this.state=1,this.stateText(e))}stateInTagName(e){eP(e)&&this.handleTagName(e)}stateInSFCRootTagName(e){if(eP(e)){let t=this.buffer.slice(this.sectionStart,this.index);"template"!==t&&this.enterRCDATA(eD("</"+t),0),this.handleTagName(e)}}handleTagName(e){this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=11,this.stateBeforeAttrName(e)}stateBeforeClosingTagName(e){eM(e)||(62===e?(this.state=1,this.sectionStart=this.index+1):(this.state=eL(e)?9:27,this.sectionStart=this.index))}stateInClosingTagName(e){(62===e||eM(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=10,this.stateAfterClosingTagName(e))}stateAfterClosingTagName(e){62===e&&(this.state=1,this.sectionStart=this.index+1)}stateBeforeAttrName(e){62===e?(this.cbs.onopentagend(this.index),this.inRCDATA?this.state=32:this.state=1,this.sectionStart=this.index+1):47===e?this.state=7:60===e&&47===this.peek()?(this.cbs.onopentagend(this.index),this.state=5,this.sectionStart=this.index):eM(e)||this.handleAttrStart(e)}handleAttrStart(e){118===e&&45===this.peek()?(this.state=13,this.sectionStart=this.index):46===e||58===e||64===e||35===e?(this.cbs.ondirname(this.index,this.index+1),this.state=14,this.sectionStart=this.index+1):(this.state=12,this.sectionStart=this.index)}stateInSelfClosingTag(e){62===e?(this.cbs.onselfclosingtag(this.index),this.state=1,this.sectionStart=this.index+1,this.inRCDATA=!1):eM(e)||(this.state=11,this.stateBeforeAttrName(e))}stateInAttrName(e){(61===e||eP(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.handleAttrNameEnd(e))}stateInDirName(e){61===e||eP(e)?(this.cbs.ondirname(this.sectionStart,this.index),this.handleAttrNameEnd(e)):58===e?(this.cbs.ondirname(this.sectionStart,this.index),this.state=14,this.sectionStart=this.index+1):46===e&&(this.cbs.ondirname(this.sectionStart,this.index),this.state=16,this.sectionStart=this.index+1)}stateInDirArg(e){61===e||eP(e)?(this.cbs.ondirarg(this.sectionStart,this.index),this.handleAttrNameEnd(e)):91===e?this.state=15:46===e&&(this.cbs.ondirarg(this.sectionStart,this.index),this.state=16,this.sectionStart=this.index+1)}stateInDynamicDirArg(e){93===e?this.state=14:(61===e||eP(e))&&(this.cbs.ondirarg(this.sectionStart,this.index+1),this.handleAttrNameEnd(e))}stateInDirModifier(e){61===e||eP(e)?(this.cbs.ondirmodifier(this.sectionStart,this.index),this.handleAttrNameEnd(e)):46===e&&(this.cbs.ondirmodifier(this.sectionStart,this.index),this.sectionStart=this.index+1)}handleAttrNameEnd(e){this.sectionStart=this.index,this.state=17,this.cbs.onattribnameend(this.index),this.stateAfterAttrName(e)}stateAfterAttrName(e){61===e?this.state=18:47===e||62===e?(this.cbs.onattribend(0,this.sectionStart),this.sectionStart=-1,this.state=11,this.stateBeforeAttrName(e)):eM(e)||(this.cbs.onattribend(0,this.sectionStart),this.handleAttrStart(e))}stateBeforeAttrValue(e){34===e?(this.state=19,this.sectionStart=this.index+1):39===e?(this.state=20,this.sectionStart=this.index+1):eM(e)||(this.sectionStart=this.index,this.state=21,this.stateInAttrValueNoQuotes(e))}handleInAttrValue(e,t){(e===t||this.fastForwardTo(t))&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(34===t?3:2,this.index+1),this.state=11)}stateInAttrValueDoubleQuotes(e){this.handleInAttrValue(e,34)}stateInAttrValueSingleQuotes(e){this.handleInAttrValue(e,39)}stateInAttrValueNoQuotes(e){eM(e)||62===e?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(1,this.index),this.state=11,this.stateBeforeAttrName(e)):(39===e||60===e||61===e||96===e)&&this.cbs.onerr(18,this.index)}stateBeforeDeclaration(e){91===e?(this.state=26,this.sequenceIndex=0):this.state=45===e?25:23}stateInDeclaration(e){(62===e||this.fastForwardTo(62))&&(this.state=1,this.sectionStart=this.index+1)}stateInProcessingInstruction(e){(62===e||this.fastForwardTo(62))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=1,this.sectionStart=this.index+1)}stateBeforeComment(e){45===e?(this.state=28,this.currentSequence=eV.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=23}stateInSpecialComment(e){(62===e||this.fastForwardTo(62))&&(this.cbs.oncomment(this.sectionStart,this.index),this.state=1,this.sectionStart=this.index+1)}stateBeforeSpecialS(e){e===eV.ScriptEnd[3]?this.startSpecial(eV.ScriptEnd,4):e===eV.StyleEnd[3]?this.startSpecial(eV.StyleEnd,4):(this.state=6,this.stateInTagName(e))}stateBeforeSpecialT(e){e===eV.TitleEnd[3]?this.startSpecial(eV.TitleEnd,4):e===eV.TextareaEnd[3]?this.startSpecial(eV.TextareaEnd,4):(this.state=6,this.stateInTagName(e))}startEntity(){}stateInEntity(){}parse(e){for(this.buffer=e;this.index<this.buffer.length;){let e=this.buffer.charCodeAt(this.index);switch(10===e&&33!==this.state&&this.newlines.push(this.index),this.state){case 1:this.stateText(e);break;case 2:this.stateInterpolationOpen(e);break;case 3:this.stateInterpolation(e);break;case 4:this.stateInterpolationClose(e);break;case 31:this.stateSpecialStartSequence(e);break;case 32:this.stateInRCDATA(e);break;case 26:this.stateCDATASequence(e);break;case 19:this.stateInAttrValueDoubleQuotes(e);break;case 12:this.stateInAttrName(e);break;case 13:this.stateInDirName(e);break;case 14:this.stateInDirArg(e);break;case 15:this.stateInDynamicDirArg(e);break;case 16:this.stateInDirModifier(e);break;case 28:this.stateInCommentLike(e);break;case 27:this.stateInSpecialComment(e);break;case 11:this.stateBeforeAttrName(e);break;case 6:this.stateInTagName(e);break;case 34:this.stateInSFCRootTagName(e);break;case 9:this.stateInClosingTagName(e);break;case 5:this.stateBeforeTagName(e);break;case 17:this.stateAfterAttrName(e);break;case 20:this.stateInAttrValueSingleQuotes(e);break;case 18:this.stateBeforeAttrValue(e);break;case 8:this.stateBeforeClosingTagName(e);break;case 10:this.stateAfterClosingTagName(e);break;case 29:this.stateBeforeSpecialS(e);break;case 30:this.stateBeforeSpecialT(e);break;case 21:this.stateInAttrValueNoQuotes(e);break;case 7:this.stateInSelfClosingTag(e);break;case 23:this.stateInDeclaration(e);break;case 22:this.stateBeforeDeclaration(e);break;case 25:this.stateBeforeComment(e);break;case 24:this.stateInProcessingInstruction(e);break;case 33:this.stateInEntity()}this.index++}this.cleanup(),this.finish()}cleanup(){this.sectionStart!==this.index&&(1===this.state||32===this.state&&0===this.sequenceIndex?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):(19===this.state||20===this.state||21===this.state)&&(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}finish(){this.handleTrailingData(),this.cbs.onend()}handleTrailingData(){let e=this.buffer.length;this.sectionStart>=e||(28===this.state?this.currentSequence===eV.CdataEnd?this.cbs.oncdata(this.sectionStart,e):this.cbs.oncomment(this.sectionStart,e):6===this.state||11===this.state||18===this.state||17===this.state||12===this.state||13===this.state||14===this.state||15===this.state||16===this.state||20===this.state||19===this.state||21===this.state||9===this.state||this.cbs.ontext(this.sectionStart,e))}emitCodePoint(e,t){}}(tN,{onerr:tU,ontext(e,t){tb(tA(e,t),e,t)},ontextentity(e,t,n){tb(e,t,n)},oninterpolation(e,t){if(tg)return tb(tA(e,t),e,t);let n=e+tI.delimiterOpen.length,i=t-tI.delimiterClose.length;for(;eM(tp.charCodeAt(n));)n++;for(;eM(tp.charCodeAt(i-1));)i--;let r=tA(n,i);r.includes("&")&&(r=th.decodeEntities(r,!1)),tV({type:5,content:tw(r,!1,tk(n,i)),loc:tk(e,t)})},onopentagname(e,t){let n=tA(e,t);tu={type:1,tag:n,ns:th.getNamespace(n,tN[0],th.ns),tagType:0,props:[],children:[],loc:tk(e-1,t),codegenNode:void 0}},onopentagend(e){tC(e)},onclosetag(e,t){let n=tA(e,t);if(!th.isVoidTag(n)){let i=!1;for(let e=0;e<tN.length;e++)if(tN[e].tag.toLowerCase()===n.toLowerCase()){i=!0,e>0&&tN[0].loc.start.offset;for(let n=0;n<=e;n++)tv(tN.shift(),t,n<e);break}i||tR(e,60)}},onselfclosingtag(e){let t=tu.tag;tu.isSelfClosing=!0,tC(e),tN[0]&&tN[0].tag===t&&tv(tN.shift(),e)},onattribname(e,t){tf={type:6,name:tA(e,t),nameLoc:tk(e,t),value:void 0,loc:tk(e)}},ondirname(e,t){let n=tA(e,t),i="."===n||":"===n?"bind":"@"===n?"on":"#"===n?"slot":n.slice(2);if(tg||""===i)tf={type:6,name:n,nameLoc:tk(e,t),value:void 0,loc:tk(e)};else if(tf={type:7,name:i,rawName:n,exp:void 0,arg:void 0,modifiers:"."===n?[eg("prop")]:[],loc:tk(e)},"pre"===i){tg=tI.inVPre=!0,tT=tu;let e=tu.props;for(let t=0;t<e.length;t++)7===e[t].type&&(e[t]=function(e){let t={type:6,name:e.rawName,nameLoc:tk(e.loc.start.offset,e.loc.start.offset+e.rawName.length),value:void 0,loc:e.loc};if(e.exp){let n=e.exp.loc;n.end.offset<e.loc.end.offset&&(n.start.offset--,n.start.column--,n.end.offset++,n.end.column++),t.value={type:2,content:e.exp.content,loc:n}}return t}(e[t]))}},ondirarg(e,t){if(e===t)return;let n=tA(e,t);if(tg&&!e8(tf))tf.name+=n,tX(tf.nameLoc,t);else{let i="["!==n[0];tf.arg=tw(i?n:n.slice(1,-1),i,tk(e,t),3*!!i)}},ondirmodifier(e,t){let n=tA(e,t);if(tg&&!e8(tf))tf.name+="."+n,tX(tf.nameLoc,t);else if("slot"===tf.name){let e=tf.arg;e&&(e.content+="."+n,tX(e.loc,t))}else{let i=eg(n,!0,tk(e,t));tf.modifiers.push(i)}},onattribdata(e,t){tE+=tA(e,t),t_<0&&(t_=e),tm=t},onattribentity(e,t,n){tE+=e,t_<0&&(t_=t),tm=n},onattribnameend(e){let t=tA(tf.loc.start.offset,e);7===tf.type&&(tf.rawName=t),tu.props.some(e=>(7===e.type?e.rawName:e.name)===t)},onattribend(e,t){if(tu&&tf){if(tX(tf.loc,t),0!==e)if(tE.includes("&")&&(tE=th.decodeEntities(tE,!0)),6===tf.type)"class"===tf.name&&(tE=tD(tE).trim()),tf.value={type:2,content:tE,loc:1===e?tk(t_,tm):tk(t_-1,tm+1)},tI.inSFCRoot&&"template"===tu.tag&&"lang"===tf.name&&tE&&"html"!==tE&&tI.enterRCDATA(eD("</template"),0);else{var n;tf.exp=tw(tE,!1,tk(t_,tm),0,0),"for"===tf.name&&(tf.forParseResult=function(e){let t=e.loc,n=e.content,i=n.match(tl);if(!i)return;let[,r,s]=i,o=(e,n,i=!1)=>{let r=t.start.offset+n,s=r+e.length;return tw(e,!1,tk(r,s),0,+!!i)},a={source:o(s.trim(),n.indexOf(s,r.length)),value:void 0,key:void 0,index:void 0,finalized:!1},l=r.trim().replace(tO,"").trim(),c=r.indexOf(l),h=l.match(ty);if(h){let e;l=l.replace(ty,"").trim();let t=h[1].trim();if(t&&(e=n.indexOf(t,c+l.length),a.key=o(t,e,!0)),h[2]){let i=h[2].trim();i&&(a.index=o(i,n.indexOf(i,a.key?e+t.length:c+l.length),!0))}}return l&&(a.value=o(l,c,!0)),a}(tf.exp));let e=-1;"bind"===tf.name&&(e=tf.modifiers.findIndex(e=>"sync"===e.content))>-1&&(n=th,tf.loc,tf.arg.loc.source,ew("COMPILER_V_BIND_SYNC",n))&&(tf.name="model",tf.modifiers.splice(e,1))}(7!==tf.type||"pre"!==tf.name)&&tu.props.push(tf)}tE="",t_=tm=-1},oncomment(e,t){th.comments&&tV({type:3,content:tA(e,t),loc:tk(e-4,t+3)})},onend(){let e=tp.length;for(let t=0;t<tN.length;t++)tv(tN[t],e-1),tN[t].loc.start.offset},oncdata(e,t){0!==tN[0].ns&&tb(tA(e,t),e,t)},onprocessinginstruction(e){(tN[0]?tN[0].ns:th.ns)===0&&tU(21,e-1)}}),ty=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,tO=/^\(|\)$/g;function tA(e,t){return tp.slice(e,t)}function tC(e){tI.inSFCRoot&&(tu.innerLoc=tk(e+1,e+1)),tV(tu);let{tag:t,ns:n}=tu;0===n&&th.isPreTag(t)&&tS++,th.isVoidTag(t)?tv(tu,e):(tN.unshift(tu),(1===n||2===n)&&(tI.inXML=!0)),tu=null}function tb(e,t,n){{let t=tN[0]&&tN[0].tag;"script"!==t&&"style"!==t&&e.includes("&")&&(e=th.decodeEntities(e,!1))}let i=tN[0]||td,r=i.children[i.children.length-1];r&&2===r.type?(r.content+=e,tX(r.loc,n)):i.children.push({type:2,content:e,loc:tk(t,n)})}function tv(e,t,n=!1){n?tX(e.loc,tR(t,60)):tX(e.loc,function(e,t){let n=e;for(;62!==tp.charCodeAt(n)&&n<tp.length-1;)n++;return n}(t,62)+1),tI.inSFCRoot&&(e.children.length?e.innerLoc.end=a({},e.children[e.children.length-1].loc.end):e.innerLoc.end=a({},e.innerLoc.start),e.innerLoc.source=tA(e.innerLoc.start.offset,e.innerLoc.end.offset));let{tag:i,ns:r,children:s}=e;if(!tg&&("slot"===i?e.tagType=2:tL(e)?e.tagType=3:function({tag:e,props:t}){var n,i,r;if(th.isCustomElement(e))return!1;if("component"===e||(n=e.charCodeAt(0))>64&&n<91||ej(e)||th.isBuiltInComponent&&th.isBuiltInComponent(e)||th.isNativeTag&&!th.isNativeTag(e))return!0;for(let e=0;e<t.length;e++){let n=t[e];if(6===n.type){if("is"===n.name&&n.value){if(n.value.content.startsWith("vue:"))return!0;else if(i=th,n.loc,ew("COMPILER_IS_ON_ELEMENT",i))return!0}}else if("bind"===n.name&&e5(n.arg,"is")&&(r=th,n.loc,ew("COMPILER_IS_ON_ELEMENT",r)))return!0}return!1}(e)&&(e.tagType=1)),tI.inRCDATA||(e.children=tP(s)),0===r&&th.isIgnoreNewlineTag(i)){let e=s[0];e&&2===e.type&&(e.content=e.content.replace(/^\r?\n/,""))}0===r&&th.isPreTag(i)&&tS--,tT===e&&(tg=tI.inVPre=!1,tT=null),tI.inXML&&(tN[0]?tN[0].ns:th.ns)===0&&(tI.inXML=!1);{var o;let t=e.props;if(!tI.inSFCRoot&&ew("COMPILER_NATIVE_TEMPLATE",th)&&"template"===e.tag&&!tL(e)){let t=tN[0]||td,n=t.children.indexOf(e);t.children.splice(n,1,...e.children)}let n=t.find(e=>6===e.type&&"inline-template"===e.name);n&&(o=th,n.loc,ew("COMPILER_INLINE_TEMPLATE",o))&&e.children.length&&(n.value={type:2,content:tA(e.children[0].loc.start.offset,e.children[e.children.length-1].loc.end.offset),loc:n.loc})}}function tR(e,t){let n=e;for(;tp.charCodeAt(n)!==t&&n>=0;)n--;return n}let tx=new Set(["if","else","else-if","for","slot"]);function tL({tag:e,props:t}){if("template"===e){for(let e=0;e<t.length;e++)if(7===t[e].type&&tx.has(t[e].name))return!0}return!1}let tM=/\r\n/g;function tP(e){let t="preserve"!==th.whitespace,n=!1;for(let i=0;i<e.length;i++){let r=e[i];if(2===r.type)if(tS)r.content=r.content.replace(tM,` +`);else if(function(e){for(let t=0;t<e.length;t++)if(!eM(e.charCodeAt(t)))return!1;return!0}(r.content)){let s=e[i-1]&&e[i-1].type,o=e[i+1]&&e[i+1].type;!s||!o||t&&(3===s&&(3===o||1===o)||1===s&&(3===o||1===o&&function(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(10===n||13===n)return!0}return!1}(r.content)))?(n=!0,e[i]=null):r.content=" "}else t&&(r.content=tD(r.content))}return n?e.filter(Boolean):e}function tD(e){let t="",n=!1;for(let i=0;i<e.length;i++)eM(e.charCodeAt(i))?n||(t+=" ",n=!0):(t+=e[i],n=!1);return t}function tV(e){(tN[0]||td).children.push(e)}function tk(e,t){return{start:tI.getPos(e),end:null==t?t:tI.getPos(t),source:null==t?t:tA(e,t)}}function tX(e,t){e.end=tI.getPos(t),e.source=tA(e.start.offset,t)}function tw(e,t=!1,n,i=0,r=0){return eg(e,t,n,i)}function tU(e,t,n){th.onError(eB(e,tk(t,t)))}function tF(e,t){if(tI.reset(),tu=null,tf=null,tE="",t_=-1,tm=-1,tN.length=0,tp=e,th=a({},tc),t){let e;for(e in t)null!=t[e]&&(th[e]=t[e])}tI.mode="html"===th.parseMode?1:2*("sfc"===th.parseMode),tI.inXML=1===th.ns||2===th.ns;let n=t&&t.delimiters;n&&(tI.delimiterOpen=eD(n[0]),tI.delimiterClose=eD(n[1]));let i=td=ef([],e);return tI.parse(tp),i.loc=tk(0,e.length),i.children=tP(i.children),td=null,i}function tB(e){let t=e.children.filter(e=>3!==e.type);return 1!==t.length||1!==t[0].type||tn(t[0])?null:t[0]}function t$(e,t){let{constantCache:n}=t;switch(e.type){case 1:if(0!==e.tagType)return 0;let i=n.get(e);if(void 0!==i)return i;let r=e.codegenNode;if(13!==r.type||r.isBlock&&"svg"!==e.tag&&"foreignObject"!==e.tag&&"math"!==e.tag)return 0;if(void 0!==r.patchFlag)return n.set(e,0),0;{let i=3,s=tG(e,t);if(0===s)return n.set(e,0),0;s<i&&(i=s);for(let r=0;r<e.children.length;r++){let s=t$(e.children[r],t);if(0===s)return n.set(e,0),0;s<i&&(i=s)}if(i>1)for(let r=0;r<e.props.length;r++){let s=e.props[r];if(7===s.type&&"bind"===s.name&&s.exp){let r=t$(s.exp,t);if(0===r)return n.set(e,0),0;r<i&&(i=r)}}if(r.isBlock){for(let t=0;t<e.props.length;t++)if(7===e.props[t].type)return n.set(e,0),0;t.removeHelper(L),t.removeHelper(eb(t.inSSR,r.isComponent)),r.isBlock=!1,t.helper(eC(t.inSSR,r.isComponent))}return n.set(e,i),i}case 2:case 3:return 3;case 9:case 11:case 10:default:return 0;case 5:case 12:return t$(e.content,t);case 4:return e.constType;case 8:let s=3;for(let n=0;n<e.children.length;n++){let i=e.children[n];if(c(i)||h(i))continue;let r=t$(i,t);if(0===r)return 0;r<s&&(s=r)}return s;case 20:return 2}}let tH=new Set([K,Y,Q,z]);function tG(e,t){let n=3,i=tq(e);if(i&&15===i.type){let{properties:e}=i;for(let i=0;i<e.length;i++){let r,{key:s,value:o}=e[i],a=t$(s,t);if(0===a)return a;if(a<n&&(n=a),0===(r=4===o.type?t$(o,t):14===o.type?function e(t,n){if(14===t.type&&!c(t.callee)&&tH.has(t.callee)){let i=t.arguments[0];if(4===i.type)return t$(i,n);if(14===i.type)return e(i,n)}return 0}(o,t):0))return r;r<n&&(n=r)}}return n}function tq(e){let t=e.codegenNode;if(13===t.type)return t.props}function tJ(e,{filename:t="",prefixIdentifiers:n=!1,hoistStatic:s=!1,hmr:o=!1,cacheHandlers:a=!1,nodeTransforms:l=[],directiveTransforms:h={},transformHoist:d=null,isBuiltInComponent:p=r,isCustomElement:u=r,expressionPlugins:f=[],scopeId:E=null,slotted:S=!0,ssr:g=!1,inSSR:T=!1,ssrCssVars:N="",bindingMetadata:I=i,inline:y=!1,isTS:O=!1,onError:A=eU,onWarn:C=eF,compatConfig:b}){let v=t.replace(/\?.*$/,"").match(/([^/\\]+)\.\w+$/),R={filename:t,selfName:v&&m(_(v[1])),prefixIdentifiers:n,hoistStatic:s,hmr:o,cacheHandlers:a,nodeTransforms:l,directiveTransforms:h,transformHoist:d,isBuiltInComponent:p,isCustomElement:u,expressionPlugins:f,scopeId:E,slotted:S,ssr:g,inSSR:T,ssrCssVars:N,bindingMetadata:I,inline:y,isTS:O,onError:A,onWarn:C,compatConfig:b,root:e,helpers:new Map,components:new Set,directives:new Set,hoists:[],imports:[],cached:[],constantCache:new WeakMap,temps:0,identifiers:Object.create(null),scopes:{vFor:0,vSlot:0,vPre:0,vOnce:0},parent:null,grandParent:null,currentNode:e,childIndex:0,inVOnce:!1,helper(e){let t=R.helpers.get(e)||0;return R.helpers.set(e,t+1),e},removeHelper(e){let t=R.helpers.get(e);if(t){let n=t-1;n?R.helpers.set(e,n):R.helpers.delete(e)}},helperString:e=>`_${ed[R.helper(e)]}`,replaceNode(e){R.parent.children[R.childIndex]=R.currentNode=e},removeNode(e){let t=R.parent.children,n=e?t.indexOf(e):R.currentNode?R.childIndex:-1;e&&e!==R.currentNode?R.childIndex>n&&(R.childIndex--,R.onNodeRemoved()):(R.currentNode=null,R.onNodeRemoved()),R.parent.children.splice(n,1)},onNodeRemoved:r,addIdentifiers(e){},removeIdentifiers(e){},hoist(e){c(e)&&(e=eg(e)),R.hoists.push(e);let t=eg(`_hoisted_${R.hoists.length}`,!1,e.loc,2);return t.hoisted=e,t},cache(e,t=!1,n=!1){let i=eO(R.cached.length,e,t,n);return R.cached.push(i),i}};return R.filters=new Set,R}function tj(e,t){let n=tJ(e,t);tW(e,n),t.hoistStatic&&function e(t,n,i,r=!1,s=!1){let{children:o}=t,a=[];for(let n=0;n<o.length;n++){let l=o[n];if(1===l.type&&0===l.tagType){let e=r?0:t$(l,i);if(e>0){if(e>=2){l.codegenNode.patchFlag=-1,a.push(l);continue}}else{let e=l.codegenNode;if(13===e.type){let t=e.patchFlag;if((void 0===t||512===t||1===t)&&tG(l,i)>=2){let t=tq(l);t&&(e.props=i.hoist(t))}e.dynamicProps&&(e.dynamicProps=i.hoist(e.dynamicProps))}}}else if(12===l.type&&(r?0:t$(l,i))>=2){14===l.codegenNode.type&&l.codegenNode.arguments.length>0&&l.codegenNode.arguments.push("-1"),a.push(l);continue}if(1===l.type){let n=1===l.tagType;n&&i.scopes.vSlot++,e(l,t,i,!1,s),n&&i.scopes.vSlot--}else if(11===l.type)e(l,t,i,1===l.children.length,!0);else if(9===l.type)for(let n=0;n<l.branches.length;n++)e(l.branches[n],t,i,1===l.branches[n].children.length,s)}let c=!1,h=[];if(a.length===o.length&&1===t.type){if(0===t.tagType&&t.codegenNode&&13===t.codegenNode.type&&l(t.codegenNode.children))t.codegenNode.children=d(e_(t.codegenNode.children)),c=!0;else if(1===t.tagType&&t.codegenNode&&13===t.codegenNode.type&&t.codegenNode.children&&!l(t.codegenNode.children)&&15===t.codegenNode.children.type){let e=p(t.codegenNode,"default");e&&(h.push(i.cached.length),e.returns=d(e_(e.returns)),c=!0)}else if(3===t.tagType&&n&&1===n.type&&1===n.tagType&&n.codegenNode&&13===n.codegenNode.type&&n.codegenNode.children&&!l(n.codegenNode.children)&&15===n.codegenNode.children.type){let e=e4(t,"slot",!0),r=e&&e.arg&&p(n.codegenNode,e.arg);r&&(h.push(i.cached.length),r.returns=d(e_(r.returns)),c=!0)}}if(!c)for(let e of a)h.push(i.cached.length),e.codegenNode=i.cache(e.codegenNode);function d(e){let t=i.cache(e);return s&&i.hmr&&(t.needArraySpread=!0),t}function p(e,t){if(e.children&&!l(e.children)&&15===e.children.type){let n=e.children.properties.find(e=>e.key===t||e.key.content===t);return n&&n.value}}h.length&&1===t.type&&1===t.tagType&&t.codegenNode&&13===t.codegenNode.type&&t.codegenNode.children&&!l(t.codegenNode.children)&&15===t.codegenNode.children.type&&t.codegenNode.children.properties.push(eS("__",eg(JSON.stringify(h),!1))),a.length&&i.transformHoist&&i.transformHoist(o,i,t)}(e,void 0,n,!!tB(e)),t.ssr||function(e,t){let{helper:n}=t,{children:i}=e;if(1===i.length){let n=tB(e);if(n&&n.codegenNode){let i=n.codegenNode;13===i.type&&ev(i,t),e.codegenNode=i}else e.codegenNode=i[0]}else i.length>1&&(e.codegenNode=eE(t,n(C),void 0,e.children,64,void 0,void 0,!0,void 0,!1))}(e,n),e.helpers=new Set([...n.helpers.keys()]),e.components=[...n.components],e.directives=[...n.directives],e.imports=n.imports,e.hoists=n.hoists,e.temps=n.temps,e.cached=n.cached,e.transformed=!0,e.filters=[...n.filters]}function tW(e,t){t.currentNode=e;let{nodeTransforms:n}=t,i=[];for(let r=0;r<n.length;r++){let s=n[r](e,t);if(s&&(l(s)?i.push(...s):i.push(s)),!t.currentNode)return;e=t.currentNode}switch(e.type){case 3:t.ssr||t.helper(k);break;case 5:t.ssr||t.helper(j);break;case 9:for(let n=0;n<e.branches.length;n++)tW(e.branches[n],t);break;case 10:case 11:case 1:case 0:var r=e;let s=0,o=()=>{s--};for(;s<r.children.length;s++){let e=r.children[s];c(e)||(t.grandParent=t.parent,t.parent=r,t.childIndex=s,t.onNodeRemoved=o,tW(e,t))}}t.currentNode=e;let a=i.length;for(;a--;)i[a]()}function tK(e,t){let n=c(e)?t=>t===e:t=>e.test(t);return(e,i)=>{if(1===e.type){let{props:r}=e;if(3===e.tagType&&r.some(te))return;let s=[];for(let o=0;o<r.length;o++){let a=r[o];if(7===a.type&&n(a.name)){r.splice(o,1),o--;let n=t(e,a,i);n&&s.push(n)}}return s}}}let tY="/*@__PURE__*/",tQ=e=>`${ed[e]}: _${ed[e]}`;function tz(e,t={}){let n=function(e,{mode:t="function",prefixIdentifiers:n="module"===t,sourceMap:i=!1,filename:r="template.vue.html",scopeId:s=null,optimizeImports:o=!1,runtimeGlobalName:a="Vue",runtimeModuleName:l="vue",ssrRuntimeModuleName:c="vue/server-renderer",ssr:h=!1,isTS:d=!1,inSSR:p=!1}){let u={mode:t,prefixIdentifiers:n,sourceMap:i,filename:r,scopeId:s,optimizeImports:o,runtimeGlobalName:a,runtimeModuleName:l,ssrRuntimeModuleName:c,ssr:h,isTS:d,inSSR:p,source:e.source,code:"",column:1,line:1,offset:0,indentLevel:0,pure:!1,map:void 0,helper:e=>`_${ed[e]}`,push(e,t=-2,n){u.code+=e},indent(){f(++u.indentLevel)},deindent(e=!1){e?--u.indentLevel:f(--u.indentLevel)},newline(){f(u.indentLevel)}};function f(e){u.push(` +`+" ".repeat(e),0)}return u}(e,t);t.onContextCreated&&t.onContextCreated(n);let{mode:i,push:r,prefixIdentifiers:s,indent:o,deindent:a,newline:l,scopeId:c,ssr:h}=n,d=Array.from(e.helpers),p=d.length>0,u=!s&&"module"!==i;var f=e,E=n;let{ssr:_,prefixIdentifiers:m,push:S,newline:g,runtimeModuleName:T,runtimeGlobalName:N,ssrRuntimeModuleName:I}=E,y=Array.from(f.helpers);if(y.length>0&&(S(`const _Vue = ${N} +`,-1),f.hoists.length)){let e=[D,V,k,X,w].filter(e=>y.includes(e)).map(tQ).join(", ");S(`const { ${e} } = _Vue +`,-1)}(function(e,t){if(!e.length)return;t.pure=!0;let{push:n,newline:i}=t;i();for(let r=0;r<e.length;r++){let s=e[r];s&&(n(`const _hoisted_${r+1} = `),t2(s,t),i())}t.pure=!1})(f.hoists,E),g(),S("return ");let O=(h?["_ctx","_push","_parent","_attrs"]:["_ctx","_cache"]).join(", ");if(r(`function ${h?"ssrRender":"render"}(${O}) {`),o(),u&&(r("with (_ctx) {"),o(),p&&(r(`const { ${d.map(tQ).join(", ")} } = _Vue +`,-1),l())),e.components.length&&(tZ(e.components,"component",n),(e.directives.length||e.temps>0)&&l()),e.directives.length&&(tZ(e.directives,"directive",n),e.temps>0&&l()),e.filters&&e.filters.length&&(l(),tZ(e.filters,"filter",n),l()),e.temps>0){r("let ");for(let t=0;t<e.temps;t++)r(`${t>0?", ":""}_temp${t}`)}return(e.components.length||e.directives.length||e.temps)&&(r(` +`,0),l()),h||r("return "),e.codegenNode?t2(e.codegenNode,n):r("null"),u&&(a(),r("}")),a(),r("}"),{ast:e,code:n.code,preamble:"",map:n.map?n.map.toJSON():void 0}}function tZ(e,t,{helper:n,push:i,newline:r,isTS:s}){let o=n("filter"===t?$:"component"===t?U:B);for(let n=0;n<e.length;n++){let a=e[n],l=a.endsWith("__self");l&&(a=a.slice(0,-6)),i(`const ${to(a,t)} = ${o}(${JSON.stringify(a)}${l?", true":""})${s?"!":""}`),n<e.length-1&&r()}}function t1(e,t){let n=e.length>3;t.push("["),n&&t.indent(),t0(e,t,n),n&&t.deindent(),t.push("]")}function t0(e,t,n=!1,i=!0){let{push:r,newline:s}=t;for(let o=0;o<e.length;o++){let a=e[o];c(a)?r(a,-3):l(a)?t1(a,t):t2(a,t),o<e.length-1&&(n?(i&&r(","),s()):i&&r(", "))}}function t2(e,t){if(c(e))return void t.push(e,-3);if(h(e))return void t.push(t.helper(e));switch(e.type){case 1:case 9:case 11:case 12:t2(e.codegenNode,t);break;case 2:n=e,t.push(JSON.stringify(n.content),-3,n);break;case 4:t3(e,t);break;case 5:var n,i,r,s=e,o=t;let{push:a,helper:d,pure:p}=o;p&&a(tY),a(`${d(j)}(`),t2(s.content,o),a(")");break;case 8:t4(e,t);break;case 3:var u=e,f=t;let{push:E,helper:_,pure:m}=f;m&&E(tY),E(`${_(k)}(${JSON.stringify(u.content)})`,-3,u);break;case 13:let S;var g=e,T=t;let{push:N,helper:I,pure:y}=T,{tag:O,props:A,children:C,patchFlag:b,dynamicProps:v,directives:R,isBlock:x,disableTracking:M,isComponent:P}=g;b&&(S=String(b)),R&&N(I(H)+"("),x&&N(`(${I(L)}(${M?"true":""}), `),y&&N(tY),N(I(x?eb(T.inSSR,P):eC(T.inSSR,P))+"(",-2,g),t0(function(e){let t=e.length;for(;t--&&null==e[t];);return e.slice(0,t+1).map(e=>e||"null")}([O,A,C,S,v]),T),N(")"),x&&N(")"),R&&(N(", "),t2(R,T),N(")"));break;case 14:var D=e,V=t;let{push:X,helper:w,pure:U}=V,F=c(D.callee)?D.callee:w(D.callee);U&&X(tY),X(F+"(",-2,D),t0(D.arguments,V),X(")");break;case 15:!function(e,t){let{push:n,indent:i,deindent:r,newline:s}=t,{properties:o}=e;if(!o.length)return n("{}",-2,e);let a=o.length>1;n(a?"{":"{ "),a&&i();for(let e=0;e<o.length;e++){let{key:i,value:r}=o[e],{push:a}=t;8===i.type?(a("["),t4(i,t),a("]")):i.isStatic?a(eK(i.content)?i.content:JSON.stringify(i.content),-2,i):a(`[${i.content}]`,-3,i),n(": "),t2(r,t),e<o.length-1&&(n(","),s())}a&&r(),n(a?"}":" }")}(e,t);break;case 17:i=e,r=t,t1(i.elements,r);break;case 18:var B=e,$=t;let{push:G,indent:q,deindent:J}=$,{params:W,returns:K,body:Y,newline:Q,isSlot:z}=B;z&&G(`_${ed[eo]}(`),G("(",-2,B),l(W)?t0(W,$):W&&t2(W,$),G(") => "),(Q||Y)&&(G("{"),q()),K?(Q&&G("return "),l(K)?t1(K,$):t2(K,$)):Y&&t2(Y,$),(Q||Y)&&(J(),G("}")),z&&(B.isNonScopedSlot&&G(", undefined, true"),G(")"));break;case 19:var Z=e,ee=t;let{test:et,consequent:en,alternate:er,newline:es}=Z,{push:ea,indent:el,deindent:ec,newline:eh}=ee;if(4===et.type){let e=!eK(et.content);e&&ea("("),t3(et,ee),e&&ea(")")}else ea("("),t2(et,ee),ea(")");es&&el(),ee.indentLevel++,es||ea(" "),ea("? "),t2(en,ee),ee.indentLevel--,es&&eh(),es||ea(" "),ea(": ");let ep=19===er.type;!ep&&ee.indentLevel++,t2(er,ee),!ep&&ee.indentLevel--,es&&ec(!0);break;case 20:var eu=e,ef=t;let{push:eE,helper:e_,indent:em,deindent:eS,newline:eg}=ef,{needPauseTracking:eT,needArraySpread:eN}=eu;eN&&eE("[...("),eE(`_cache[${eu.index}] || (`),eT&&(em(),eE(`${e_(ei)}(-1`),eu.inVOnce&&eE(", true"),eE("),"),eg(),eE("(")),eE(`_cache[${eu.index}] = `),t2(eu.value,ef),eT&&(eE(`).cacheIndex = ${eu.index},`),eg(),eE(`${e_(ei)}(1),`),eg(),eE(`_cache[${eu.index}]`),eS()),eE(")"),eN&&eE(")]");break;case 21:t0(e.body,t,!0,!1)}}function t3(e,t){let{content:n,isStatic:i}=e;t.push(i?JSON.stringify(n):n,-3,e)}function t4(e,t){for(let n=0;n<e.children.length;n++){let i=e.children[n];c(i)?t.push(i,-3):t2(i,t)}}function t6(e,t,n=!1,i=!1,r=Object.create(t.identifiers)){return e}let t5=tK(/^(if|else|else-if)$/,(e,t,n)=>t9(e,t,n,(e,t,i)=>{let r=n.parent.children,s=r.indexOf(e),o=0;for(;s-- >=0;){let e=r[s];e&&9===e.type&&(o+=e.branches.length)}return()=>{i?e.codegenNode=t8(t,o,n):function(e){for(;;)if(19===e.type)if(19!==e.alternate.type)return e;else e=e.alternate;else 20===e.type&&(e=e.value)}(e.codegenNode).alternate=t8(t,o+e.branches.length-1,n)}}));function t9(e,t,n,i){if("else"!==t.name&&(!t.exp||!t.exp.content.trim())){let i=t.exp?t.exp.loc:e.loc;n.onError(eB(28,t.loc)),t.exp=eg("true",!1,i)}if("if"===t.name){var r;let s=t7(e,t),o={type:9,loc:tk((r=e.loc).start.offset,r.end.offset),branches:[s]};if(n.replaceNode(o),i)return i(o,s,!0)}else{let r=n.parent.children,s=r.indexOf(e);for(;s-- >=-1;){let o=r[s];if(o&&3===o.type||o&&2===o.type&&!o.content.trim().length){n.removeNode(o);continue}if(o&&9===o.type){"else-if"===t.name&&void 0===o.branches[o.branches.length-1].condition&&n.onError(eB(30,e.loc)),n.removeNode();let r=t7(e,t);o.branches.push(r);let s=i&&i(o,r,!1);tW(r,n),s&&s(),n.currentNode=null}else n.onError(eB(30,e.loc));break}}}function t7(e,t){let n=3===e.tagType;return{type:10,loc:e.loc,condition:"else"===t.name?void 0:t.exp,children:n&&!e4(e,"for")?e.children:[e],userKey:e6(e,"key"),isTemplateIf:n}}function t8(e,t,n){return e.condition?ey(e.condition,ne(e,t,n),eN(n.helper(k),['""',"true"])):ne(e,t,n)}function ne(e,t,n){let{helper:i}=n,r=eS("key",eg(`${t}`,!1,eu,2)),{children:s}=e,o=s[0];if(1!==s.length||1!==o.type)if(1!==s.length||11!==o.type)return eE(n,i(C),em([r]),s,64,void 0,void 0,!0,!1,!1,e.loc);else{let e=o.codegenNode;return tr(e,r,n),e}{let e=o.codegenNode,t=ta(e);return 13===t.type&&ev(t,n),tr(t,r,n),e}}let nt=(e,t,n)=>{let{modifiers:i,loc:r}=e,s=e.arg,{exp:o}=e;if(o&&4===o.type&&!o.content.trim()&&(o=void 0),!o){if(4!==s.type||!s.isStatic)return n.onError(eB(52,s.loc)),{props:[eS(s,eg("",!0,r))]};nn(e),o=e.exp}return 4!==s.type?(s.children.unshift("("),s.children.push(') || ""')):s.isStatic||(s.content=s.content?`${s.content} || ""`:'""'),i.some(e=>"camel"===e.content)&&(4===s.type?s.isStatic?s.content=_(s.content):s.content=`${n.helperString(ee)}(${s.content})`:(s.children.unshift(`${n.helperString(ee)}(`),s.children.push(")"))),!n.inSSR&&(i.some(e=>"prop"===e.content)&&ni(s,"."),i.some(e=>"attr"===e.content)&&ni(s,"^")),{props:[eS(s,o)]}},nn=(e,t)=>{let n=e.arg;e.exp=eg(_(n.content),!1,n.loc)},ni=(e,t)=>{4===e.type?e.isStatic?e.content=t+e.content:e.content=`\`${t}\${${e.content}}\``:(e.children.unshift(`'${t}' + (`),e.children.push(")"))},nr=tK("for",(e,t,n)=>{let{helper:i,removeHelper:r}=n;return ns(e,t,n,t=>{let s=eN(i(G),[t.source]),o=tt(e),a=e4(e,"memo"),l=e6(e,"key",!1,!0);l&&7===l.type&&!l.exp&&nn(l);let c=l&&(6===l.type?l.value?eg(l.value.content,!0):void 0:l.exp),h=l&&c?eS("key",c):null,d=4===t.source.type&&t.source.constType>0,p=d?64:l?128:256;return t.codegenNode=eE(n,i(C),void 0,s,p,void 0,void 0,!0,!d,!1,e.loc),()=>{let l,{children:p}=t,u=1!==p.length||1!==p[0].type,f=tn(e)?e:o&&1===e.children.length&&tn(e.children[0])?e.children[0]:null;if(f?(l=f.codegenNode,o&&h&&tr(l,h,n)):u?l=eE(n,i(C),h?em([h]):void 0,e.children,64,void 0,void 0,!0,void 0,!1):(l=p[0].codegenNode,o&&h&&tr(l,h,n),!d!==l.isBlock&&(l.isBlock?(r(L),r(eb(n.inSSR,l.isComponent))):r(eC(n.inSSR,l.isComponent))),l.isBlock=!d,l.isBlock?(i(L),i(eb(n.inSSR,l.isComponent))):i(eC(n.inSSR,l.isComponent))),a){let e=eI(na(t.parseResult,[eg("_cached")]));e.body=eA([eT(["const _memo = (",a.exp,")"]),eT(["if (_cached",...c?[" && _cached.key === ",c]:[],` && ${n.helperString(eh)}(_cached, _memo)) return _cached`]),eT(["const _item = ",l]),eg("_item.memo = _memo"),eg("return _item")]),s.arguments.push(e,eg("_cache"),eg(String(n.cached.length))),n.cached.push(null)}else s.arguments.push(eI(na(t.parseResult),l,!0))}})});function ns(e,t,n,i){if(!t.exp)return void n.onError(eB(31,t.loc));let r=t.forParseResult;if(!r)return void n.onError(eB(32,t.loc));no(r);let{addIdentifiers:s,removeIdentifiers:o,scopes:a}=n,{source:l,value:c,key:h,index:d}=r,p={type:11,loc:t.loc,source:l,valueAlias:c,keyAlias:h,objectIndexAlias:d,parseResult:r,children:tt(e)?e.children:[e]};n.replaceNode(p),a.vFor++;let u=i&&i(p);return()=>{a.vFor--,u&&u()}}function no(e,t){e.finalized||(e.finalized=!0)}function na({value:e,key:t,index:n},i=[]){var r=[e,t,n,...i];let s=r.length;for(;s--&&!r[s];);return r.slice(0,s+1).map((e,t)=>e||eg("_".repeat(t+1),!1))}let nl=eg("undefined",!1),nc=(e,t)=>{if(1===e.type&&(1===e.tagType||3===e.tagType)){let n=e4(e,"slot");if(n)return n.exp,t.scopes.vSlot++,()=>{t.scopes.vSlot--}}},nh=(e,t,n,i)=>eI(e,n,!1,!0,n.length?n[0].loc:i);function nd(e,t,n=nh){t.helper(eo);let{children:i,loc:r}=e,s=[],o=[],a=t.scopes.vSlot>0||t.scopes.vFor>0,l=e4(e,"slot",!0);if(l){let{arg:e,exp:t}=l;e&&!eJ(e)&&(a=!0),s.push(eS(e||eg("default",!0),n(t,void 0,i,r)))}let c=!1,h=!1,d=[],p=new Set,u=0;for(let e=0;e<i.length;e++){let r,f,E,_,m=i[e];if(!tt(m)||!(r=e4(m,"slot",!0))){3!==m.type&&d.push(m);continue}if(l){t.onError(eB(37,r.loc));break}c=!0;let{children:S,loc:g}=m,{arg:T=eg("default",!0),exp:N,loc:I}=r;eJ(T)?f=T?T.content:"default":a=!0;let y=e4(m,"for"),O=n(N,y,S,g);if(E=e4(m,"if"))a=!0,o.push(ey(E.exp,np(T,O,u++),nl));else if(_=e4(m,/^else(-if)?$/,!0)){let n,r=e;for(;r--&&!(3!==(n=i[r]).type&&nu(n)););if(n&&tt(n)&&e4(n,/^(else-)?if$/)){let e=o[o.length-1];for(;19===e.alternate.type;)e=e.alternate;e.alternate=_.exp?ey(_.exp,np(T,O,u++),nl):np(T,O,u++)}else t.onError(eB(30,_.loc))}else if(y){a=!0;let e=y.forParseResult;e?(no(e),o.push(eN(t.helper(G),[e.source,eI(na(e),np(T,O),!0)]))):t.onError(eB(32,y.loc))}else{if(f){if(p.has(f)){t.onError(eB(38,I));continue}p.add(f),"default"===f&&(h=!0)}s.push(eS(T,O))}}if(!l){let e=(e,i)=>{let s=n(e,void 0,i,r);return t.compatConfig&&(s.isNonScopedSlot=!0),eS("default",s)};c?d.length&&d.some(e=>nu(e))&&(h?t.onError(eB(39,d[0].loc)):s.push(e(void 0,d))):s.push(e(void 0,i))}let f=a?2:!function e(t){for(let n=0;n<t.length;n++){let i=t[n];switch(i.type){case 1:if(2===i.tagType||e(i.children))return!0;break;case 9:if(e(i.branches))return!0;break;case 10:case 11:if(e(i.children))return!0}}return!1}(e.children)?1:3,E=em(s.concat(eS("_",eg(f+"",!1))),r);return o.length&&(E=eN(t.helper(J),[E,e_(o)])),{slots:E,hasDynamicSlots:a}}function np(e,t,n){let i=[eS("name",e),eS("fn",t)];return null!=n&&i.push(eS("key",eg(String(n),!0))),em(i)}function nu(e){return 2!==e.type&&12!==e.type||(2===e.type?!!e.content.trim():nu(e.content))}let nf=new WeakMap,nE=(e,t)=>function(){let n,i,r,s,o;if(1!==(e=t.currentNode).type||0!==e.tagType&&1!==e.tagType)return;let{tag:a,props:l}=e,c=1===e.tagType,h=c?n_(e,t):`"${a}"`,p=d(h)&&h.callee===F,u=0,f=p||h===b||h===v||!c&&("svg"===a||"foreignObject"===a||"math"===a);if(l.length>0){let i=nm(e,t,void 0,c,p);n=i.props,u=i.patchFlag,s=i.dynamicPropNames;let r=i.directives;o=r&&r.length?e_(r.map(e=>ng(e,t))):void 0,i.shouldUseBlock&&(f=!0)}if(e.children.length>0)if(h===R&&(f=!0,u|=1024),c&&h!==b&&h!==R){let{slots:n,hasDynamicSlots:r}=nd(e,t);i=n,r&&(u|=1024)}else if(1===e.children.length&&h!==b){let n=e.children[0],r=n.type,s=5===r||8===r;s&&0===t$(n,t)&&(u|=1),i=s||2===r?n:e.children}else i=e.children;s&&s.length&&(r=function(e){let t="[";for(let n=0,i=e.length;n<i;n++)t+=JSON.stringify(e[n]),n<i-1&&(t+=", ");return t+"]"}(s)),e.codegenNode=eE(t,h,n,i,0===u?void 0:u,r,o,!!f,!1,c,e.loc)};function n_(e,t,n=!1){let{tag:i}=e,r=nT(i),s=e6(e,"is",!1,!0);if(s)if(r||ew("COMPILER_IS_ON_ELEMENT",t)){let e;if(6===s.type?e=s.value&&eg(s.value.content,!0):(e=s.exp)||(e=eg("is",!1,s.arg.loc)),e)return eN(t.helper(F),[e])}else 6===s.type&&s.value.content.startsWith("vue:")&&(i=s.value.content.slice(4));let o=ej(i)||t.isBuiltInComponent(i);return o?(n||t.helper(o),o):(t.helper(U),t.components.add(i),to(i,"component"))}function nm(e,t,n=e.props,i,r,s=!1){let a,{tag:l,loc:c,children:d}=e,f=[],E=[],_=[],m=d.length>0,S=!1,g=0,T=!1,N=!1,I=!1,y=!1,O=!1,A=!1,C=[],b=e=>{f.length&&(E.push(em(nS(f),c)),f=[]),e&&E.push(e)},v=()=>{t.scopes.vFor>0&&f.push(eS(eg("ref_for",!0),eg("true")))},R=({key:e,value:n})=>{if(eJ(e)){let s=e.content,a=o(s);a&&(!i||r)&&"onclick"!==s.toLowerCase()&&"onUpdate:modelValue"!==s&&!p(s)&&(y=!0),a&&p(s)&&(A=!0),a&&14===n.type&&(n=n.arguments[0]),20===n.type||(4===n.type||8===n.type)&&t$(n,t)>0||("ref"===s?T=!0:"class"===s?N=!0:"style"===s?I=!0:"key"===s||C.includes(s)||C.push(s),i&&("class"===s||"style"===s)&&!C.includes(s)&&C.push(s))}else O=!0};for(let r=0;r<n.length;r++){let o=n[r];if(6===o.type){let{loc:e,name:n,nameLoc:i,value:r}=o;if("ref"===n&&(T=!0,v()),"is"===n&&(nT(l)||r&&r.content.startsWith("vue:")||ew("COMPILER_IS_ON_ELEMENT",t)))continue;f.push(eS(eg(n,!0,i),eg(r?r.content:"",!0,r?r.loc:e)))}else{let{name:n,arg:r,exp:a,loc:d,modifiers:p}=o,T="bind"===n,N="on"===n;if("slot"===n){i||t.onError(eB(40,d));continue}if("once"===n||"memo"===n||"is"===n||T&&e5(r,"is")&&(nT(l)||ew("COMPILER_IS_ON_ELEMENT",t))||N&&s)continue;if((T&&e5(r,"key")||N&&m&&e5(r,"vue:before-update"))&&(S=!0),T&&e5(r,"ref")&&v(),!r&&(T||N)){if(O=!0,a)if(T){if(b(),ew("COMPILER_V_BIND_OBJECT_ORDER",t)){E.unshift(a);continue}v(),b(),E.push(a)}else b({type:14,loc:d,callee:t.helper(Z),arguments:i?[a]:[a,"true"]});else t.onError(eB(T?34:35,d));continue}T&&p.some(e=>"prop"===e.content)&&(g|=32);let I=t.directiveTransforms[n];if(I){let{props:n,needRuntime:i}=I(o,e,t);s||n.forEach(R),N&&r&&!eJ(r)?b(em(n,c)):f.push(...n),i&&(_.push(o),h(i)&&nf.set(o,i))}else!u(n)&&(_.push(o),m&&(S=!0))}}if(E.length?(b(),a=E.length>1?eN(t.helper(W),E,c):E[0]):f.length&&(a=em(nS(f),c)),O?g|=16:(N&&!i&&(g|=2),I&&!i&&(g|=4),C.length&&(g|=8),y&&(g|=32)),!S&&(0===g||32===g)&&(T||A||_.length>0)&&(g|=512),!t.inSSR&&a)switch(a.type){case 15:let x=-1,L=-1,M=!1;for(let e=0;e<a.properties.length;e++){let t=a.properties[e].key;eJ(t)?"class"===t.content?x=e:"style"===t.content&&(L=e):t.isHandlerKey||(M=!0)}let P=a.properties[x],D=a.properties[L];M?a=eN(t.helper(Q),[a]):(P&&!eJ(P.value)&&(P.value=eN(t.helper(K),[P.value])),D&&(I||4===D.value.type&&"["===D.value.content.trim()[0]||17===D.value.type)&&(D.value=eN(t.helper(Y),[D.value])));break;case 14:break;default:a=eN(t.helper(Q),[eN(t.helper(z),[a])])}return{props:a,directives:_,patchFlag:g,dynamicPropNames:C,shouldUseBlock:S}}function nS(e){let t=new Map,n=[];for(let s=0;s<e.length;s++){var i,r;let a=e[s];if(8===a.key.type||!a.key.isStatic){n.push(a);continue}let l=a.key.content,c=t.get(l);c?("style"===l||"class"===l||o(l))&&(i=c,r=a,17===i.value.type?i.value.elements.push(r.value):i.value=e_([i.value,r.value],i.loc)):(t.set(l,a),n.push(a))}return n}function ng(e,t){let n=[],i=nf.get(e);i?n.push(t.helperString(i)):(t.helper(B),t.directives.add(e.name),n.push(to(e.name,"directive")));let{loc:r}=e;if(e.exp&&n.push(e.exp),e.arg&&(e.exp||n.push("void 0"),n.push(e.arg)),Object.keys(e.modifiers).length){e.arg||(e.exp||n.push("void 0"),n.push("void 0"));let t=eg("true",!1,r);n.push(em(e.modifiers.map(e=>eS(e,t)),r))}return e_(n,e.loc)}function nT(e){return"component"===e||"Component"===e}let nN=(e,t)=>{if(tn(e)){let{children:n,loc:i}=e,{slotName:r,slotProps:s}=nI(e,t),o=[t.prefixIdentifiers?"_ctx.$slots":"$slots",r,"{}","undefined","true"],a=2;s&&(o[2]=s,a=3),n.length&&(o[3]=eI([],n,!1,!1,i),a=4),t.scopeId&&!t.slotted&&(a=5),o.splice(a),e.codegenNode=eN(t.helper(q),o,i)}};function nI(e,t){let n,i='"default"',r=[];for(let t=0;t<e.props.length;t++){let n=e.props[t];if(6===n.type)n.value&&("name"===n.name?i=JSON.stringify(n.value.content):(n.name=_(n.name),r.push(n)));else if("bind"===n.name&&e5(n.arg,"name")){if(n.exp)i=n.exp;else if(n.arg&&4===n.arg.type){let e=_(n.arg.content);i=n.exp=eg(e,!1,n.arg.loc)}}else"bind"===n.name&&n.arg&&eJ(n.arg)&&(n.arg.content=_(n.arg.content)),r.push(n)}if(r.length>0){let{props:i,directives:s}=nm(e,t,r,!1,!1);n=i,s.length&&t.onError(eB(36,s[0].loc))}return{slotName:i,slotProps:n}}let ny=(e,t,n,i)=>{let r,{loc:s,modifiers:o,arg:a}=e;if(!e.exp&&!o.length,4===a.type)if(a.isStatic){let e=a.content;e.startsWith("vue:")&&(e=`vnode-${e.slice(4)}`),r=eg(0!==t.tagType||e.startsWith("vnode")||!/[A-Z]/.test(e)?S(_(e)):`on:${e}`,!0,a.loc)}else r=eT([`${n.helperString(en)}(`,a,")"]);else(r=a).children.unshift(`${n.helperString(en)}(`),r.children.push(")");let l=e.exp;l&&!l.content.trim()&&(l=void 0);let c=n.cacheHandlers&&!l&&!n.inVOnce;if(l){let e=e1(l),t=!(e||e2(l)),n=l.content.includes(";");(t||c&&e)&&(l=eT([`${t?"$event":"(...args)"} => ${n?"{":"("}`,l,n?"}":")"]))}let h={props:[eS(r,l||eg("() => {}",!1,s))]};return i&&(h=i(h)),c&&(h.props[0].value=n.cache(h.props[0].value)),h.props.forEach(e=>e.key.isHandlerKey=!0),h},nO=(e,t)=>{if(0===e.type||1===e.type||11===e.type||10===e.type)return()=>{let n,i=e.children,r=!1;for(let e=0;e<i.length;e++){let t=i[e];if(e7(t)){r=!0;for(let r=e+1;r<i.length;r++){let s=i[r];if(e7(s))n||(n=i[e]=eT([t],t.loc)),n.children.push(" + ",s),i.splice(r,1),r--;else{n=void 0;break}}}}if(r&&(1!==i.length||0!==e.type&&(1!==e.type||0!==e.tagType||e.props.find(e=>7===e.type&&!t.directiveTransforms[e.name])||"template"===e.tag)))for(let e=0;e<i.length;e++){let n=i[e];if(e7(n)||8===n.type){let r=[];(2!==n.type||" "!==n.content)&&r.push(n),t.ssr||0!==t$(n,t)||r.push("1"),i[e]={type:12,content:n,loc:n.loc,codegenNode:eN(t.helper(X),r)}}}}},nA=new WeakSet,nC=(e,t)=>{if(1===e.type&&e4(e,"once",!0)&&!nA.has(e)&&!t.inVOnce&&!t.inSSR)return nA.add(e),t.inVOnce=!0,t.helper(ei),()=>{t.inVOnce=!1;let e=t.currentNode;e.codegenNode&&(e.codegenNode=t.cache(e.codegenNode,!0,!0))}},nb=(e,t,n)=>{let i,{exp:r,arg:s}=e;if(!r)return n.onError(eB(41,e.loc)),nv();let o=r.loc.source.trim(),a=4===r.type?r.content:o,l=n.bindingMetadata[o];if("props"===l||"props-aliased"===l)return r.loc,nv();if(!a.trim()||!e1(r))return n.onError(eB(42,r.loc)),nv();let c=s||eg("modelValue",!0),h=s?eJ(s)?`onUpdate:${_(s.content)}`:eT(['"onUpdate:" + ',s]):"onUpdate:modelValue",d=n.isTS?"($event: any)":"$event";i=eT([`${d} => ((`,r,") = $event)"]);let p=[eS(c,e.exp),eS(h,i)];if(e.modifiers.length&&1===t.tagType){let t=e.modifiers.map(e=>e.content).map(e=>(eK(e)?e:JSON.stringify(e))+": true").join(", "),n=s?eJ(s)?`${s.content}Modifiers`:eT([s,' + "Modifiers"']):"modelModifiers";p.push(eS(n,eg(`{ ${t} }`,!1,e.loc,2)))}return nv(p)};function nv(e=[]){return{props:e}}let nR=/[\w).+\-_$\]]/,nx=(e,t)=>{ew("COMPILER_FILTERS",t)&&(5===e.type?nL(e.content,t):1===e.type&&e.props.forEach(e=>{7===e.type&&"for"!==e.name&&e.exp&&nL(e.exp,t)}))};function nL(e,t){if(4===e.type)nM(e,t);else for(let n=0;n<e.children.length;n++){let i=e.children[n];"object"==typeof i&&(4===i.type?nM(i,t):8===i.type?nL(e,t):5===i.type&&nL(i.content,t))}}function nM(e,t){let n=e.content,i=!1,r=!1,s=!1,o=!1,a=0,l=0,c=0,h=0,d,p,u,f,E=[];for(u=0;u<n.length;u++)if(p=d,d=n.charCodeAt(u),i)39===d&&92!==p&&(i=!1);else if(r)34===d&&92!==p&&(r=!1);else if(s)96===d&&92!==p&&(s=!1);else if(o)47===d&&92!==p&&(o=!1);else if(124!==d||124===n.charCodeAt(u+1)||124===n.charCodeAt(u-1)||a||l||c){switch(d){case 34:r=!0;break;case 39:i=!0;break;case 96:s=!0;break;case 40:c++;break;case 41:c--;break;case 91:l++;break;case 93:l--;break;case 123:a++;break;case 125:a--}if(47===d){let e,t=u-1;for(;t>=0&&" "===(e=n.charAt(t));t--);e&&nR.test(e)||(o=!0)}}else void 0===f?(h=u+1,f=n.slice(0,u).trim()):_();function _(){E.push(n.slice(h,u).trim()),h=u+1}if(void 0===f?f=n.slice(0,u).trim():0!==h&&_(),E.length){for(u=0;u<E.length;u++)f=function(e,t,n){n.helper($);let i=t.indexOf("(");if(i<0)return n.filters.add(t),`${to(t,"filter")}(${e})`;{let r=t.slice(0,i),s=t.slice(i+1);return n.filters.add(r),`${to(r,"filter")}(${e}${")"!==s?","+s:s}`}}(f,E[u],t);e.content=f,e.ast=void 0}}let nP=new WeakSet,nD=(e,t)=>{if(1===e.type){let n=e4(e,"memo");if(!(!n||nP.has(e)))return nP.add(e),()=>{let i=e.codegenNode||t.currentNode.codegenNode;i&&13===i.type&&(1!==e.tagType&&ev(i,t),e.codegenNode=eN(t.helper(ec),[n.exp,eI(void 0,i),"_cache",String(t.cached.length)]),t.cached.push(null))}}};function nV(e){return[[nC,t5,nD,nr,nx,nN,nE,nc,nO],{on:ny,bind:nt,model:nb}]}function nk(e,t={}){let n=t.onError||eU,i="module"===t.mode;!0===t.prefixIdentifiers?n(eB(47)):i&&n(eB(48)),t.cacheHandlers&&n(eB(49)),t.scopeId&&!i&&n(eB(50));let r=a({},t,{prefixIdentifiers:!1}),s=c(e)?tF(e,r):e,[o,l]=nV();return tj(s,a({},r,{nodeTransforms:[...o,...t.nodeTransforms||[]],directiveTransforms:a({},l,t.directiveTransforms||{})})),tz(s,r)}let nX=()=>({props:[]}),nw=Symbol(""),nU=Symbol(""),nF=Symbol(""),nB=Symbol(""),n$=Symbol(""),nH=Symbol(""),nG=Symbol(""),nq=Symbol(""),nJ=Symbol(""),nj=Symbol("");ep({[nw]:"vModelRadio",[nU]:"vModelCheckbox",[nF]:"vModelText",[nB]:"vModelSelect",[n$]:"vModelDynamic",[nH]:"withModifiers",[nG]:"withKeys",[nq]:"vShow",[nJ]:"Transition",[nj]:"TransitionGroup"});let nW={parseMode:"html",isVoidTag:A,isNativeTag:e=>I(e)||y(e)||O(e),isPreTag:e=>"pre"===e,isIgnoreNewlineTag:e=>"pre"===e||"textarea"===e,decodeEntities:function(e,n=!1){return(t||(t=document.createElement("div")),n)?(t.innerHTML=`<div foo="${e.replace(/"/g,""")}">`,t.children[0].getAttribute("foo")):(t.innerHTML=e,t.textContent)},isBuiltInComponent:e=>"Transition"===e||"transition"===e?nJ:"TransitionGroup"===e||"transition-group"===e?nj:void 0,getNamespace(e,t,n){let i=t?t.ns:n;if(t&&2===i)if("annotation-xml"===t.tag){if("svg"===e)return 1;t.props.some(e=>6===e.type&&"encoding"===e.name&&null!=e.value&&("text/html"===e.value.content||"application/xhtml+xml"===e.value.content))&&(i=0)}else/^m(?:[ions]|text)$/.test(t.tag)&&"mglyph"!==e&&"malignmark"!==e&&(i=0);else t&&1===i&&("foreignObject"===t.tag||"desc"===t.tag||"title"===t.tag)&&(i=0);if(0===i){if("svg"===e)return 1;if("math"===e)return 2}return i}},nK=e=>{1===e.type&&e.props.forEach((t,n)=>{6===t.type&&"style"===t.name&&t.value&&(e.props[n]={type:7,name:"bind",arg:eg("style",!0,t.loc),exp:nY(t.value.content,t.loc),modifiers:[],loc:t.loc})})},nY=(e,t)=>eg(JSON.stringify(function(e){let t={};return e.replace(N,"").split(g).forEach(e=>{if(e){let n=e.split(T);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}(e)),!1,t,3),nQ=n("passive,once,capture"),nz=n("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),nZ=n("left,right"),n1=n("onkeyup,onkeydown,onkeypress"),n0=(e,t)=>eJ(e)&&"onclick"===e.content.toLowerCase()?eg(t,!0):4!==e.type?eT(["(",e,`) === "onClick" ? "${t}" : (`,e,")"]):e,n2=(e,t)=>{1===e.type&&0===e.tagType&&("script"===e.tag||"style"===e.tag)&&t.removeNode()},n3=[nK],n4={cloak:nX,html:(e,t,n)=>{let{exp:i,loc:r}=e;return i||n.onError(eB(53,r)),t.children.length&&(n.onError(eB(54,r)),t.children.length=0),{props:[eS(eg("innerHTML",!0,r),i||eg("",!0))]}},text:(e,t,n)=>{let{exp:i,loc:r}=e;return i||n.onError(eB(55,r)),t.children.length&&(n.onError(eB(56,r)),t.children.length=0),{props:[eS(eg("textContent",!0),i?t$(i,n)>0?i:eN(n.helperString(j),[i],r):eg("",!0))]}},model:(e,t,n)=>{let i=nb(e,t,n);if(!i.props.length||1===t.tagType)return i;e.arg&&n.onError(eB(58,e.arg.loc));let{tag:r}=t,s=n.isCustomElement(r);if("input"===r||"textarea"===r||"select"===r||s){let o=nF,a=!1;if("input"===r||s){let i=e6(t,"type");if(i){if(7===i.type)o=n$;else if(i.value)switch(i.value.content){case"radio":o=nw;break;case"checkbox":o=nU;break;case"file":a=!0,n.onError(eB(59,e.loc))}}else e9(t)&&(o=n$)}else"select"===r&&(o=nB);a||(i.needRuntime=n.helper(o))}else n.onError(eB(57,e.loc));return i.props=i.props.filter(e=>4!==e.key.type||"modelValue"!==e.key.content),i},on:(e,t,n)=>ny(e,t,n,t=>{let{modifiers:i}=e;if(!i.length)return t;let{key:r,value:s}=t.props[0],{keyModifiers:o,nonKeyModifiers:a,eventOptionModifiers:l}=((e,t,n,i)=>{let r=[],s=[],o=[];for(let i=0;i<t.length;i++){let a=t[i].content;"native"===a&&ew("COMPILER_V_ON_NATIVE",n)||nQ(a)?o.push(a):nZ(a)?eJ(e)?n1(e.content.toLowerCase())?r.push(a):s.push(a):(r.push(a),s.push(a)):nz(a)?s.push(a):r.push(a)}return{keyModifiers:r,nonKeyModifiers:s,eventOptionModifiers:o}})(r,i,n,e.loc);if(a.includes("right")&&(r=n0(r,"onContextmenu")),a.includes("middle")&&(r=n0(r,"onMouseup")),a.length&&(s=eN(n.helper(nH),[s,JSON.stringify(a)])),o.length&&(!eJ(r)||n1(r.content.toLowerCase()))&&(s=eN(n.helper(nG),[s,JSON.stringify(o)])),l.length){let e=l.map(m).join("");r=eJ(r)?eg(`${r.content}${e}`,!0):eT(["(",r,`) + "${e}"`])}return{props:[eS(r,s)]}}),show:(e,t,n)=>{let{exp:i,loc:r}=e;return i||n.onError(eB(61,r)),{props:[],needRuntime:n.helper(nq)}}};return e.BASE_TRANSITION=x,e.BindingTypes={DATA:"data",PROPS:"props",PROPS_ALIASED:"props-aliased",SETUP_LET:"setup-let",SETUP_CONST:"setup-const",SETUP_REACTIVE_CONST:"setup-reactive-const",SETUP_MAYBE_REF:"setup-maybe-ref",SETUP_REF:"setup-ref",OPTIONS:"options",LITERAL_CONST:"literal-const"},e.CAMELIZE=ee,e.CAPITALIZE=et,e.CREATE_BLOCK=M,e.CREATE_COMMENT=k,e.CREATE_ELEMENT_BLOCK=P,e.CREATE_ELEMENT_VNODE=V,e.CREATE_SLOTS=J,e.CREATE_STATIC=w,e.CREATE_TEXT=X,e.CREATE_VNODE=D,e.CompilerDeprecationTypes={COMPILER_IS_ON_ELEMENT:"COMPILER_IS_ON_ELEMENT",COMPILER_V_BIND_SYNC:"COMPILER_V_BIND_SYNC",COMPILER_V_BIND_OBJECT_ORDER:"COMPILER_V_BIND_OBJECT_ORDER",COMPILER_V_ON_NATIVE:"COMPILER_V_ON_NATIVE",COMPILER_V_IF_V_FOR_PRECEDENCE:"COMPILER_V_IF_V_FOR_PRECEDENCE",COMPILER_NATIVE_TEMPLATE:"COMPILER_NATIVE_TEMPLATE",COMPILER_INLINE_TEMPLATE:"COMPILER_INLINE_TEMPLATE",COMPILER_FILTERS:"COMPILER_FILTERS"},e.ConstantTypes={NOT_CONSTANT:0,0:"NOT_CONSTANT",CAN_SKIP_PATCH:1,1:"CAN_SKIP_PATCH",CAN_CACHE:2,2:"CAN_CACHE",CAN_STRINGIFY:3,3:"CAN_STRINGIFY"},e.DOMDirectiveTransforms=n4,e.DOMErrorCodes={X_V_HTML_NO_EXPRESSION:53,53:"X_V_HTML_NO_EXPRESSION",X_V_HTML_WITH_CHILDREN:54,54:"X_V_HTML_WITH_CHILDREN",X_V_TEXT_NO_EXPRESSION:55,55:"X_V_TEXT_NO_EXPRESSION",X_V_TEXT_WITH_CHILDREN:56,56:"X_V_TEXT_WITH_CHILDREN",X_V_MODEL_ON_INVALID_ELEMENT:57,57:"X_V_MODEL_ON_INVALID_ELEMENT",X_V_MODEL_ARG_ON_ELEMENT:58,58:"X_V_MODEL_ARG_ON_ELEMENT",X_V_MODEL_ON_FILE_INPUT_ELEMENT:59,59:"X_V_MODEL_ON_FILE_INPUT_ELEMENT",X_V_MODEL_UNNECESSARY_VALUE:60,60:"X_V_MODEL_UNNECESSARY_VALUE",X_V_SHOW_NO_EXPRESSION:61,61:"X_V_SHOW_NO_EXPRESSION",X_TRANSITION_INVALID_CHILDREN:62,62:"X_TRANSITION_INVALID_CHILDREN",X_IGNORED_SIDE_EFFECT_TAG:63,63:"X_IGNORED_SIDE_EFFECT_TAG",__EXTEND_POINT__:64,64:"__EXTEND_POINT__"},e.DOMErrorMessages={53:"v-html is missing expression.",54:"v-html will override element children.",55:"v-text is missing expression.",56:"v-text will override element children.",57:"v-model can only be used on <input>, <textarea> and <select> elements.",58:"v-model argument is not supported on plain elements.",59:"v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.",60:"Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.",61:"v-show is missing expression.",62:"<Transition> expects exactly one child element or component.",63:"Tags with side effect (<script> and <style>) are ignored in client component templates."},e.DOMNodeTransforms=n3,e.ElementTypes={ELEMENT:0,0:"ELEMENT",COMPONENT:1,1:"COMPONENT",SLOT:2,2:"SLOT",TEMPLATE:3,3:"TEMPLATE"},e.ErrorCodes={ABRUPT_CLOSING_OF_EMPTY_COMMENT:0,0:"ABRUPT_CLOSING_OF_EMPTY_COMMENT",CDATA_IN_HTML_CONTENT:1,1:"CDATA_IN_HTML_CONTENT",DUPLICATE_ATTRIBUTE:2,2:"DUPLICATE_ATTRIBUTE",END_TAG_WITH_ATTRIBUTES:3,3:"END_TAG_WITH_ATTRIBUTES",END_TAG_WITH_TRAILING_SOLIDUS:4,4:"END_TAG_WITH_TRAILING_SOLIDUS",EOF_BEFORE_TAG_NAME:5,5:"EOF_BEFORE_TAG_NAME",EOF_IN_CDATA:6,6:"EOF_IN_CDATA",EOF_IN_COMMENT:7,7:"EOF_IN_COMMENT",EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT:8,8:"EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT",EOF_IN_TAG:9,9:"EOF_IN_TAG",INCORRECTLY_CLOSED_COMMENT:10,10:"INCORRECTLY_CLOSED_COMMENT",INCORRECTLY_OPENED_COMMENT:11,11:"INCORRECTLY_OPENED_COMMENT",INVALID_FIRST_CHARACTER_OF_TAG_NAME:12,12:"INVALID_FIRST_CHARACTER_OF_TAG_NAME",MISSING_ATTRIBUTE_VALUE:13,13:"MISSING_ATTRIBUTE_VALUE",MISSING_END_TAG_NAME:14,14:"MISSING_END_TAG_NAME",MISSING_WHITESPACE_BETWEEN_ATTRIBUTES:15,15:"MISSING_WHITESPACE_BETWEEN_ATTRIBUTES",NESTED_COMMENT:16,16:"NESTED_COMMENT",UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME:17,17:"UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME",UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE:18,18:"UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE",UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME:19,19:"UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME",UNEXPECTED_NULL_CHARACTER:20,20:"UNEXPECTED_NULL_CHARACTER",UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME:21,21:"UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME",UNEXPECTED_SOLIDUS_IN_TAG:22,22:"UNEXPECTED_SOLIDUS_IN_TAG",X_INVALID_END_TAG:23,23:"X_INVALID_END_TAG",X_MISSING_END_TAG:24,24:"X_MISSING_END_TAG",X_MISSING_INTERPOLATION_END:25,25:"X_MISSING_INTERPOLATION_END",X_MISSING_DIRECTIVE_NAME:26,26:"X_MISSING_DIRECTIVE_NAME",X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END:27,27:"X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END",X_V_IF_NO_EXPRESSION:28,28:"X_V_IF_NO_EXPRESSION",X_V_IF_SAME_KEY:29,29:"X_V_IF_SAME_KEY",X_V_ELSE_NO_ADJACENT_IF:30,30:"X_V_ELSE_NO_ADJACENT_IF",X_V_FOR_NO_EXPRESSION:31,31:"X_V_FOR_NO_EXPRESSION",X_V_FOR_MALFORMED_EXPRESSION:32,32:"X_V_FOR_MALFORMED_EXPRESSION",X_V_FOR_TEMPLATE_KEY_PLACEMENT:33,33:"X_V_FOR_TEMPLATE_KEY_PLACEMENT",X_V_BIND_NO_EXPRESSION:34,34:"X_V_BIND_NO_EXPRESSION",X_V_ON_NO_EXPRESSION:35,35:"X_V_ON_NO_EXPRESSION",X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET:36,36:"X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET",X_V_SLOT_MIXED_SLOT_USAGE:37,37:"X_V_SLOT_MIXED_SLOT_USAGE",X_V_SLOT_DUPLICATE_SLOT_NAMES:38,38:"X_V_SLOT_DUPLICATE_SLOT_NAMES",X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN:39,39:"X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN",X_V_SLOT_MISPLACED:40,40:"X_V_SLOT_MISPLACED",X_V_MODEL_NO_EXPRESSION:41,41:"X_V_MODEL_NO_EXPRESSION",X_V_MODEL_MALFORMED_EXPRESSION:42,42:"X_V_MODEL_MALFORMED_EXPRESSION",X_V_MODEL_ON_SCOPE_VARIABLE:43,43:"X_V_MODEL_ON_SCOPE_VARIABLE",X_V_MODEL_ON_PROPS:44,44:"X_V_MODEL_ON_PROPS",X_INVALID_EXPRESSION:45,45:"X_INVALID_EXPRESSION",X_KEEP_ALIVE_INVALID_CHILDREN:46,46:"X_KEEP_ALIVE_INVALID_CHILDREN",X_PREFIX_ID_NOT_SUPPORTED:47,47:"X_PREFIX_ID_NOT_SUPPORTED",X_MODULE_MODE_NOT_SUPPORTED:48,48:"X_MODULE_MODE_NOT_SUPPORTED",X_CACHE_HANDLER_NOT_SUPPORTED:49,49:"X_CACHE_HANDLER_NOT_SUPPORTED",X_SCOPE_ID_NOT_SUPPORTED:50,50:"X_SCOPE_ID_NOT_SUPPORTED",X_VNODE_HOOKS:51,51:"X_VNODE_HOOKS",X_V_BIND_INVALID_SAME_NAME_ARGUMENT:52,52:"X_V_BIND_INVALID_SAME_NAME_ARGUMENT",__EXTEND_POINT__:53,53:"__EXTEND_POINT__"},e.FRAGMENT=C,e.GUARD_REACTIVE_PROPS=z,e.IS_MEMO_SAME=eh,e.IS_REF=el,e.KEEP_ALIVE=R,e.MERGE_PROPS=W,e.NORMALIZE_CLASS=K,e.NORMALIZE_PROPS=Q,e.NORMALIZE_STYLE=Y,e.Namespaces={HTML:0,0:"HTML",SVG:1,1:"SVG",MATH_ML:2,2:"MATH_ML"},e.NodeTypes={ROOT:0,0:"ROOT",ELEMENT:1,1:"ELEMENT",TEXT:2,2:"TEXT",COMMENT:3,3:"COMMENT",SIMPLE_EXPRESSION:4,4:"SIMPLE_EXPRESSION",INTERPOLATION:5,5:"INTERPOLATION",ATTRIBUTE:6,6:"ATTRIBUTE",DIRECTIVE:7,7:"DIRECTIVE",COMPOUND_EXPRESSION:8,8:"COMPOUND_EXPRESSION",IF:9,9:"IF",IF_BRANCH:10,10:"IF_BRANCH",FOR:11,11:"FOR",TEXT_CALL:12,12:"TEXT_CALL",VNODE_CALL:13,13:"VNODE_CALL",JS_CALL_EXPRESSION:14,14:"JS_CALL_EXPRESSION",JS_OBJECT_EXPRESSION:15,15:"JS_OBJECT_EXPRESSION",JS_PROPERTY:16,16:"JS_PROPERTY",JS_ARRAY_EXPRESSION:17,17:"JS_ARRAY_EXPRESSION",JS_FUNCTION_EXPRESSION:18,18:"JS_FUNCTION_EXPRESSION",JS_CONDITIONAL_EXPRESSION:19,19:"JS_CONDITIONAL_EXPRESSION",JS_CACHE_EXPRESSION:20,20:"JS_CACHE_EXPRESSION",JS_BLOCK_STATEMENT:21,21:"JS_BLOCK_STATEMENT",JS_TEMPLATE_LITERAL:22,22:"JS_TEMPLATE_LITERAL",JS_IF_STATEMENT:23,23:"JS_IF_STATEMENT",JS_ASSIGNMENT_EXPRESSION:24,24:"JS_ASSIGNMENT_EXPRESSION",JS_SEQUENCE_EXPRESSION:25,25:"JS_SEQUENCE_EXPRESSION",JS_RETURN_STATEMENT:26,26:"JS_RETURN_STATEMENT"},e.OPEN_BLOCK=L,e.POP_SCOPE_ID=es,e.PUSH_SCOPE_ID=er,e.RENDER_LIST=G,e.RENDER_SLOT=q,e.RESOLVE_COMPONENT=U,e.RESOLVE_DIRECTIVE=B,e.RESOLVE_DYNAMIC_COMPONENT=F,e.RESOLVE_FILTER=$,e.SET_BLOCK_TRACKING=ei,e.SUSPENSE=v,e.TELEPORT=b,e.TO_DISPLAY_STRING=j,e.TO_HANDLERS=Z,e.TO_HANDLER_KEY=en,e.TRANSITION=nJ,e.TRANSITION_GROUP=nj,e.TS_NODE_TYPES=eq,e.UNREF=ea,e.V_MODEL_CHECKBOX=nU,e.V_MODEL_DYNAMIC=n$,e.V_MODEL_RADIO=nw,e.V_MODEL_SELECT=nB,e.V_MODEL_TEXT=nF,e.V_ON_WITH_KEYS=nG,e.V_ON_WITH_MODIFIERS=nH,e.V_SHOW=nq,e.WITH_CTX=eo,e.WITH_DIRECTIVES=H,e.WITH_MEMO=ec,e.advancePositionWithClone=function(e,t,n=t.length){return e3({offset:e.offset,line:e.line,column:e.column},t,n)},e.advancePositionWithMutation=e3,e.assert=function(e,t){if(!e)throw Error(t||"unexpected compiler condition")},e.baseCompile=nk,e.baseParse=tF,e.buildDirectiveArgs=ng,e.buildProps=nm,e.buildSlots=nd,e.checkCompatEnabled=function(e,t,n){return ew(e,t)},e.compile=function(e,t={}){return nk(e,a({},nW,t,{nodeTransforms:[n2,...n3,...t.nodeTransforms||[]],directiveTransforms:a({},n4,t.directiveTransforms||{}),transformHoist:null}))},e.convertToBlock=ev,e.createArrayExpression=e_,e.createAssignmentExpression=function(e,t){return{type:24,left:e,right:t,loc:eu}},e.createBlockStatement=eA,e.createCacheExpression=eO,e.createCallExpression=eN,e.createCompilerError=eB,e.createCompoundExpression=eT,e.createConditionalExpression=ey,e.createDOMCompilerError=function(e,t){return eB(e,t)},e.createForLoopParams=na,e.createFunctionExpression=eI,e.createIfStatement=function(e,t,n){return{type:23,test:e,consequent:t,alternate:n,loc:eu}},e.createInterpolation=function(e,t){return{type:5,loc:t,content:c(e)?eg(e,!1,t):e}},e.createObjectExpression=em,e.createObjectProperty=eS,e.createReturnStatement=function(e){return{type:26,returns:e,loc:eu}},e.createRoot=ef,e.createSequenceExpression=function(e){return{type:25,expressions:e,loc:eu}},e.createSimpleExpression=eg,e.createStructuralDirectiveTransform=tK,e.createTemplateLiteral=function(e){return{type:22,elements:e,loc:eu}},e.createTransformContext=tJ,e.createVNodeCall=eE,e.errorMessages=e$,e.extractIdentifiers=eH,e.findDir=e4,e.findProp=e6,e.forAliasRE=tl,e.generate=tz,e.generateCodeFrame=function(e,t=0,n=e.length){if((t=Math.max(0,Math.min(t,e.length)))>(n=Math.max(0,Math.min(n,e.length))))return"";let i=e.split(/(\r?\n)/),r=i.filter((e,t)=>t%2==1);i=i.filter((e,t)=>t%2==0);let s=0,o=[];for(let e=0;e<i.length;e++)if((s+=i[e].length+(r[e]&&r[e].length||0))>=t){for(let a=e-2;a<=e+2||n>s;a++){if(a<0||a>=i.length)continue;let l=a+1;o.push(`${l}${" ".repeat(Math.max(3-String(l).length,0))}| ${i[a]}`);let c=i[a].length,h=r[a]&&r[a].length||0;if(a===e){let e=t-(s-(c+h)),i=Math.max(1,n>s?c-e:n-t);o.push(" | "+" ".repeat(e)+"^".repeat(i))}else if(a>e){if(n>s){let e=Math.max(Math.min(n-s,c),1);o.push(" | "+"^".repeat(e))}s+=c+h}}break}return o.join(` +`)},e.getBaseTransformPreset=nV,e.getConstantType=t$,e.getMemoedVNodeCall=ta,e.getVNodeBlockHelper=eb,e.getVNodeHelper=eC,e.hasDynamicKeyVBind=e9,e.hasScopeRef=function e(t,n){if(!t||0===Object.keys(n).length)return!1;switch(t.type){case 1:for(let i=0;i<t.props.length;i++){let r=t.props[i];if(7===r.type&&(e(r.arg,n)||e(r.exp,n)))return!0}return t.children.some(t=>e(t,n));case 11:if(e(t.source,n))return!0;return t.children.some(t=>e(t,n));case 9:return t.branches.some(t=>e(t,n));case 10:if(e(t.condition,n))return!0;return t.children.some(t=>e(t,n));case 4:return!t.isStatic&&eK(t.content)&&!!n[t.content];case 8:return t.children.some(t=>d(t)&&e(t,n));case 5:case 12:return e(t.content,n);default:return!1}},e.helperNameMap=ed,e.injectProp=tr,e.isCoreComponent=ej,e.isFnExpression=e2,e.isFnExpressionBrowser=e2,e.isFnExpressionNode=r,e.isFunctionType=e=>/Function(?:Expression|Declaration)$|Method$/.test(e.type),e.isInDestructureAssignment=function(e,t){if(e&&("ObjectProperty"===e.type||"ArrayPattern"===e.type)){let e=t.length;for(;e--;){let n=t[e];if("AssignmentExpression"===n.type)return!0;if("ObjectProperty"!==n.type&&!n.type.endsWith("Pattern"))break}}return!1},e.isInNewExpression=function(e){let t=e.length;for(;t--;){let n=e[t];if("NewExpression"===n.type)return!0;if("MemberExpression"!==n.type)break}return!1},e.isMemberExpression=e1,e.isMemberExpressionBrowser=e1,e.isMemberExpressionNode=r,e.isReferencedIdentifier=function(e,t,n){return!1},e.isSimpleIdentifier=eK,e.isSlotOutlet=tn,e.isStaticArgOf=e5,e.isStaticExp=eJ,e.isStaticProperty=eG,e.isStaticPropertyKey=(e,t)=>eG(t)&&t.key===e,e.isTemplateNode=tt,e.isText=e7,e.isVPre=e8,e.isVSlot=te,e.locStub=eu,e.noopDirectiveTransform=nX,e.parse=function(e,t={}){return tF(e,a({},nW,t))},e.parserOptions=nW,e.processExpression=t6,e.processFor=ns,e.processIf=t9,e.processSlotOutlet=nI,e.registerRuntimeHelpers=ep,e.resolveComponentType=n_,e.stringifyExpression=function e(t){return c(t)?t:4===t.type?t.content:t.children.map(e).join("")},e.toValidAssetId=to,e.trackSlotScopes=nc,e.trackVForSlotScopes=(e,t)=>{let n;if(tt(e)&&e.props.some(te)&&(n=e4(e,"for"))){let e=n.forParseResult;if(e){no(e);let{value:n,key:i,index:r}=e,{addIdentifiers:s,removeIdentifiers:o}=t;return n&&s(n),i&&s(i),r&&s(r),()=>{n&&o(n),i&&o(i),r&&o(r)}}}},e.transform=tj,e.transformBind=nt,e.transformElement=nE,e.transformExpression=(e,t)=>{if(5===e.type)e.content=t6(e.content,t);else if(1===e.type){let n=e4(e,"memo");for(let i=0;i<e.props.length;i++){let r=e.props[i];if(7===r.type&&"for"!==r.name){let e=r.exp,i=r.arg;!e||4!==e.type||"on"===r.name&&i||n&&i&&4===i.type&&"key"===i.content||(r.exp=t6(e,t,"slot"===r.name)),i&&4===i.type&&!i.isStatic&&(r.arg=t6(i,t))}}}},e.transformModel=nb,e.transformOn=ny,e.transformStyle=nK,e.traverseNode=tW,e.unwrapTSNode=function e(t){return eq.includes(t.type)?e(t.expression):t},e.walkBlockDeclarations=function(e,t){for(let i of e.body)if("VariableDeclaration"===i.type){if(i.declare)continue;for(let e of i.declarations)for(let n of eH(e.id))t(n)}else if("FunctionDeclaration"===i.type||"ClassDeclaration"===i.type){if(i.declare||!i.id)continue;t(i.id)}else{var n;("ForOfStatement"===(n=i).type||"ForInStatement"===n.type||"ForStatement"===n.type)&&function(e,t,n){let i="ForStatement"===e.type?e.init:e.left;if(i&&"VariableDeclaration"===i.type&&("var"===i.kind?t:!t))for(let e of i.declarations)for(let t of eH(e.id))n(t)}(i,!0,t)}},e.walkFunctionParams=function(e,t){for(let n of e.params)for(let e of eH(n))t(e)},e.walkIdentifiers=function(e,t,n=!1,i=[],r=Object.create(null)){},e.warnDeprecation=function(e,t,n,...i){if("suppress-warning"===eX(e,t))return;let{message:r,link:s}=ek[e],o=SyntaxError(`(deprecation ${e}) ${"function"==typeof r?r(...i):r}${s?` + Details: ${s}`:""}`);o.code=e,n&&(o.loc=n),t.onWarn(o)},e}({}); diff --git a/node_modules/@vue/compiler-dom/index.js b/node_modules/@vue/compiler-dom/index.js new file mode 100644 index 0000000..b5f7a05 --- /dev/null +++ b/node_modules/@vue/compiler-dom/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/compiler-dom.cjs.prod.js') +} else { + module.exports = require('./dist/compiler-dom.cjs.js') +} diff --git a/node_modules/@vue/compiler-dom/package.json b/node_modules/@vue/compiler-dom/package.json new file mode 100644 index 0000000..0d6d208 --- /dev/null +++ b/node_modules/@vue/compiler-dom/package.json @@ -0,0 +1,57 @@ +{ + "name": "@vue/compiler-dom", + "version": "3.5.18", + "description": "@vue/compiler-dom", + "main": "index.js", + "module": "dist/compiler-dom.esm-bundler.js", + "types": "dist/compiler-dom.d.ts", + "unpkg": "dist/compiler-dom.global.js", + "jsdelivr": "dist/compiler-dom.global.js", + "files": [ + "index.js", + "dist" + ], + "exports": { + ".": { + "types": "./dist/compiler-dom.d.ts", + "node": { + "production": "./dist/compiler-dom.cjs.prod.js", + "development": "./dist/compiler-dom.cjs.js", + "default": "./index.js" + }, + "module": "./dist/compiler-dom.esm-bundler.js", + "import": "./dist/compiler-dom.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, + "sideEffects": false, + "buildOptions": { + "name": "VueCompilerDOM", + "compat": true, + "formats": [ + "esm-bundler", + "esm-browser", + "cjs", + "global" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/compiler-dom" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-dom#readme", + "dependencies": { + "@vue/compiler-core": "3.5.18", + "@vue/shared": "3.5.18" + } +} \ No newline at end of file diff --git a/node_modules/@vue/compiler-sfc/LICENSE b/node_modules/@vue/compiler-sfc/LICENSE new file mode 100644 index 0000000..15f1f7e --- /dev/null +++ b/node_modules/@vue/compiler-sfc/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018-present, Yuxi (Evan) You + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@vue/compiler-sfc/README.md b/node_modules/@vue/compiler-sfc/README.md new file mode 100644 index 0000000..4f8ff3a --- /dev/null +++ b/node_modules/@vue/compiler-sfc/README.md @@ -0,0 +1,80 @@ +# @vue/compiler-sfc + +> Lower level utilities for compiling Vue Single File Components + +**Note: as of 3.2.13+, this package is included as a dependency of the main `vue` package and can be accessed as `vue/compiler-sfc`. This means you no longer need to explicitly install this package and ensure its version match that of `vue`'s. Just use the main `vue/compiler-sfc` deep import instead.** + +This package contains lower level utilities that you can use if you are writing a plugin / transform for a bundler or module system that compiles Vue Single File Components (SFCs) into JavaScript. It is used in [vue-loader](https://github.com/vuejs/vue-loader) and [@vitejs/plugin-vue](https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue). + +## API + +The API is intentionally low-level due to the various considerations when integrating Vue SFCs in a build system: + +- Separate hot-module replacement (HMR) for script, template and styles + + - template updates should not reset component state + - style updates should be performed without component re-render + +- Leveraging the tool's plugin system for pre-processor handling. e.g. `<style lang="scss">` should be processed by the corresponding webpack loader. + +- In some cases, transformers of each block in an SFC do not share the same execution context. For example, when used with `thread-loader` or other parallelized configurations, the template sub-loader in `vue-loader` may not have access to the full SFC and its descriptor. + +The general idea is to generate a facade module that imports the individual blocks of the component. The trick is the module imports itself with different query strings so that the build system can handle each request as "virtual" modules: + +``` + +--------------------+ + | | + | script transform | + +----->+ | + | +--------------------+ + | ++--------------------+ | +--------------------+ +| | | | | +| facade transform +----------->+ template transform | +| | | | | ++--------------------+ | +--------------------+ + | + | +--------------------+ + +----->+ | + | style transform | + | | + +--------------------+ +``` + +Where the facade module looks like this: + +```js +// main script +import script from '/project/foo.vue?vue&type=script' +// template compiled to render function +import { render } from '/project/foo.vue?vue&type=template&id=xxxxxx' +// css +import '/project/foo.vue?vue&type=style&index=0&id=xxxxxx' + +// attach render function to script +script.render = render + +// attach additional metadata +// some of these should be dev only +script.__file = 'example.vue' +script.__scopeId = 'xxxxxx' + +// additional tooling-specific HMR handling code +// using __VUE_HMR_API__ global + +export default script +``` + +### High Level Workflow + +1. In facade transform, parse the source into descriptor with the `parse` API and generate the above facade module code based on the descriptor; + +2. In script transform, use `compileScript` to process the script. This handles features like `<script setup>` and CSS variable injection. Alternatively, this can be done directly in the facade module (with the code inlined instead of imported), but it will require rewriting `export default` to a temp variable (a `rewriteDefault` convenience API is provided for this purpose) so additional options can be attached to the exported object. + +3. In template transform, use `compileTemplate` to compile the raw template into render function code. + +4. In style transform, use `compileStyle` to compile raw CSS to handle `<style scoped>`, `<style module>` and CSS variable injection. + +Options needed for these APIs can be passed via the query string. + +For detailed API references and options, check out the source type definitions. For actual usage of these APIs, check out [@vitejs/plugin-vue](https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue) or [vue-loader](https://github.com/vuejs/vue-loader/tree/next). diff --git a/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js b/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js new file mode 100644 index 0000000..8a52416 --- /dev/null +++ b/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js @@ -0,0 +1,25018 @@ +/** +* @vue/compiler-sfc v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var compilerCore = require('@vue/compiler-core'); +var CompilerDOM = require('@vue/compiler-dom'); +var sourceMapJs = require('source-map-js'); +var shared = require('@vue/shared'); +var path$1 = require('path'); +var url = require('url'); +var CompilerSSR = require('@vue/compiler-ssr'); +var require$$2 = require('util'); +var require$$0 = require('fs'); +var require$$0$1 = require('postcss'); +var estreeWalker = require('estree-walker'); +var MagicString = require('magic-string'); +var parser$2 = require('@babel/parser'); +var process$1 = require('process'); + +function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + for (var k in e) { + n[k] = e[k]; + } + } + n.default = e; + return Object.freeze(n); +} + +var CompilerDOM__namespace = /*#__PURE__*/_interopNamespaceDefault(CompilerDOM); +var CompilerSSR__namespace = /*#__PURE__*/_interopNamespaceDefault(CompilerSSR); +var process__namespace = /*#__PURE__*/_interopNamespaceDefault(process$1); + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +var hashSum; +var hasRequiredHashSum; + +function requireHashSum () { + if (hasRequiredHashSum) return hashSum; + hasRequiredHashSum = 1; + + function pad (hash, len) { + while (hash.length < len) { + hash = '0' + hash; + } + return hash; + } + + function fold (hash, text) { + var i; + var chr; + var len; + if (text.length === 0) { + return hash; + } + for (i = 0, len = text.length; i < len; i++) { + chr = text.charCodeAt(i); + hash = ((hash << 5) - hash) + chr; + hash |= 0; + } + return hash < 0 ? hash * -2 : hash; + } + + function foldObject (hash, o, seen) { + return Object.keys(o).sort().reduce(foldKey, hash); + function foldKey (hash, key) { + return foldValue(hash, o[key], key, seen); + } + } + + function foldValue (input, value, key, seen) { + var hash = fold(fold(fold(input, key), toString(value)), typeof value); + if (value === null) { + return fold(hash, 'null'); + } + if (value === undefined) { + return fold(hash, 'undefined'); + } + if (typeof value === 'object' || typeof value === 'function') { + if (seen.indexOf(value) !== -1) { + return fold(hash, '[Circular]' + key); + } + seen.push(value); + + var objHash = foldObject(hash, value, seen); + + if (!('valueOf' in value) || typeof value.valueOf !== 'function') { + return objHash; + } + + try { + return fold(objHash, String(value.valueOf())) + } catch (err) { + return fold(objHash, '[valueOf exception]' + (err.stack || err.message)) + } + } + return fold(hash, value.toString()); + } + + function toString (o) { + return Object.prototype.toString.call(o); + } + + function sum (o) { + return pad(foldValue(0, o, '', []).toString(16), 8); + } + + hashSum = sum; + return hashSum; +} + +var hashSumExports = /*@__PURE__*/ requireHashSum(); +var hash = /*@__PURE__*/getDefaultExportFromCjs(hashSumExports); + +const CSS_VARS_HELPER = `useCssVars`; +function genCssVarsFromList(vars, id, isProd, isSSR = false) { + return `{ + ${vars.map( + (key) => ( + // The `:` prefix here is used in `ssrRenderStyle` to distinguish whether + // a custom property comes from `ssrCssVars`. If it does, we need to reset + // its value to `initial` on the component instance to avoid unintentionally + // inheriting the same property value from a different instance of the same + // component in the outer scope. + `"${isSSR ? `:--` : ``}${genVarName(id, key, isProd, isSSR)}": (${key})` + ) + ).join(",\n ")} +}`; +} +function genVarName(id, raw, isProd, isSSR = false) { + if (isProd) { + return hash(id + raw); + } else { + return `${id}-${shared.getEscapedCssVarName(raw, isSSR)}`; + } +} +function normalizeExpression(exp) { + exp = exp.trim(); + if (exp[0] === `'` && exp[exp.length - 1] === `'` || exp[0] === `"` && exp[exp.length - 1] === `"`) { + return exp.slice(1, -1); + } + return exp; +} +const vBindRE = /v-bind\s*\(/g; +function parseCssVars(sfc) { + const vars = []; + sfc.styles.forEach((style) => { + let match; + const content = style.content.replace(/\/\*([\s\S]*?)\*\/|\/\/.*/g, ""); + while (match = vBindRE.exec(content)) { + const start = match.index + match[0].length; + const end = lexBinding(content, start); + if (end !== null) { + const variable = normalizeExpression(content.slice(start, end)); + if (!vars.includes(variable)) { + vars.push(variable); + } + } + } + }); + return vars; +} +function lexBinding(content, start) { + let state = 0 /* inParens */; + let parenDepth = 0; + for (let i = start; i < content.length; i++) { + const char = content.charAt(i); + switch (state) { + case 0 /* inParens */: + if (char === `'`) { + state = 1 /* inSingleQuoteString */; + } else if (char === `"`) { + state = 2 /* inDoubleQuoteString */; + } else if (char === `(`) { + parenDepth++; + } else if (char === `)`) { + if (parenDepth > 0) { + parenDepth--; + } else { + return i; + } + } + break; + case 1 /* inSingleQuoteString */: + if (char === `'`) { + state = 0 /* inParens */; + } + break; + case 2 /* inDoubleQuoteString */: + if (char === `"`) { + state = 0 /* inParens */; + } + break; + } + } + return null; +} +const cssVarsPlugin = (opts) => { + const { id, isProd } = opts; + return { + postcssPlugin: "vue-sfc-vars", + Declaration(decl) { + const value = decl.value; + if (vBindRE.test(value)) { + vBindRE.lastIndex = 0; + let transformed = ""; + let lastIndex = 0; + let match; + while (match = vBindRE.exec(value)) { + const start = match.index + match[0].length; + const end = lexBinding(value, start); + if (end !== null) { + const variable = normalizeExpression(value.slice(start, end)); + transformed += value.slice(lastIndex, match.index) + `var(--${genVarName(id, variable, isProd)})`; + lastIndex = end + 1; + } + } + decl.value = transformed + value.slice(lastIndex); + } + } + }; +}; +cssVarsPlugin.postcss = true; +function genCssVarsCode(vars, bindings, id, isProd) { + const varsExp = genCssVarsFromList(vars, id, isProd); + const exp = CompilerDOM.createSimpleExpression(varsExp, false); + const context = CompilerDOM.createTransformContext(CompilerDOM.createRoot([]), { + prefixIdentifiers: true, + inline: true, + bindingMetadata: bindings.__isScriptSetup === false ? void 0 : bindings + }); + const transformed = CompilerDOM.processExpression(exp, context); + const transformedString = transformed.type === 4 ? transformed.content : transformed.children.map((c) => { + return typeof c === "string" ? c : c.content; + }).join(""); + return `_${CSS_VARS_HELPER}(_ctx => (${transformedString}))`; +} +function genNormalScriptCssVarsCode(cssVars, bindings, id, isProd, defaultVar) { + return ` +import { ${CSS_VARS_HELPER} as _${CSS_VARS_HELPER} } from 'vue' +const __injectCSSVars__ = () => { +${genCssVarsCode( + cssVars, + bindings, + id, + isProd + )}} +const __setup__ = ${defaultVar}.setup +${defaultVar}.setup = __setup__ + ? (props, ctx) => { __injectCSSVars__();return __setup__(props, ctx) } + : __injectCSSVars__ +`; +} + +/** + * @module LRUCache + */ +const perf = typeof performance === 'object' && + performance && + typeof performance.now === 'function' + ? performance + : Date; +const warned = new Set(); +/* c8 ignore start */ +const PROCESS = (typeof process === 'object' && !!process ? process : {}); +/* c8 ignore start */ +const emitWarning = (msg, type, code, fn) => { + typeof PROCESS.emitWarning === 'function' + ? PROCESS.emitWarning(msg, type, code, fn) + : console.error(`[${code}] ${type}: ${msg}`); +}; +let AC = globalThis.AbortController; +let AS = globalThis.AbortSignal; +/* c8 ignore start */ +if (typeof AC === 'undefined') { + //@ts-ignore + AS = class AbortSignal { + onabort; + _onabort = []; + reason; + aborted = false; + addEventListener(_, fn) { + this._onabort.push(fn); + } + }; + //@ts-ignore + AC = class AbortController { + constructor() { + warnACPolyfill(); + } + signal = new AS(); + abort(reason) { + if (this.signal.aborted) + return; + //@ts-ignore + this.signal.reason = reason; + //@ts-ignore + this.signal.aborted = true; + //@ts-ignore + for (const fn of this.signal._onabort) { + fn(reason); + } + this.signal.onabort?.(reason); + } + }; + let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1'; + const warnACPolyfill = () => { + if (!printACPolyfillWarning) + return; + printACPolyfillWarning = false; + emitWarning('AbortController is not defined. If using lru-cache in ' + + 'node 14, load an AbortController polyfill from the ' + + '`node-abort-controller` package. A minimal polyfill is ' + + 'provided for use by LRUCache.fetch(), but it should not be ' + + 'relied upon in other contexts (eg, passing it to other APIs that ' + + 'use AbortController/AbortSignal might have undesirable effects). ' + + 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill); + }; +} +/* c8 ignore stop */ +const shouldWarn = (code) => !warned.has(code); +const isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n); +/* c8 ignore start */ +// This is a little bit ridiculous, tbh. +// The maximum array length is 2^32-1 or thereabouts on most JS impls. +// And well before that point, you're caching the entire world, I mean, +// that's ~32GB of just integers for the next/prev links, plus whatever +// else to hold that many keys and values. Just filling the memory with +// zeroes at init time is brutal when you get that big. +// But why not be complete? +// Maybe in the future, these limits will have expanded. +const getUintArray = (max) => !isPosInt(max) + ? null + : max <= Math.pow(2, 8) + ? Uint8Array + : max <= Math.pow(2, 16) + ? Uint16Array + : max <= Math.pow(2, 32) + ? Uint32Array + : max <= Number.MAX_SAFE_INTEGER + ? ZeroArray + : null; +/* c8 ignore stop */ +class ZeroArray extends Array { + constructor(size) { + super(size); + this.fill(0); + } +} +class Stack { + heap; + length; + // private constructor + static #constructing = false; + static create(max) { + const HeapCls = getUintArray(max); + if (!HeapCls) + return []; + Stack.#constructing = true; + const s = new Stack(max, HeapCls); + Stack.#constructing = false; + return s; + } + constructor(max, HeapCls) { + /* c8 ignore start */ + if (!Stack.#constructing) { + throw new TypeError('instantiate Stack using Stack.create(n)'); + } + /* c8 ignore stop */ + this.heap = new HeapCls(max); + this.length = 0; + } + push(n) { + this.heap[this.length++] = n; + } + pop() { + return this.heap[--this.length]; + } +} +/** + * Default export, the thing you're using this module to get. + * + * All properties from the options object (with the exception of + * {@link OptionsBase.max} and {@link OptionsBase.maxSize}) are added as + * normal public members. (`max` and `maxBase` are read-only getters.) + * Changing any of these will alter the defaults for subsequent method calls, + * but is otherwise safe. + */ +class LRUCache { + // properties coming in from the options of these, only max and maxSize + // really *need* to be protected. The rest can be modified, as they just + // set defaults for various methods. + #max; + #maxSize; + #dispose; + #disposeAfter; + #fetchMethod; + /** + * {@link LRUCache.OptionsBase.ttl} + */ + ttl; + /** + * {@link LRUCache.OptionsBase.ttlResolution} + */ + ttlResolution; + /** + * {@link LRUCache.OptionsBase.ttlAutopurge} + */ + ttlAutopurge; + /** + * {@link LRUCache.OptionsBase.updateAgeOnGet} + */ + updateAgeOnGet; + /** + * {@link LRUCache.OptionsBase.updateAgeOnHas} + */ + updateAgeOnHas; + /** + * {@link LRUCache.OptionsBase.allowStale} + */ + allowStale; + /** + * {@link LRUCache.OptionsBase.noDisposeOnSet} + */ + noDisposeOnSet; + /** + * {@link LRUCache.OptionsBase.noUpdateTTL} + */ + noUpdateTTL; + /** + * {@link LRUCache.OptionsBase.maxEntrySize} + */ + maxEntrySize; + /** + * {@link LRUCache.OptionsBase.sizeCalculation} + */ + sizeCalculation; + /** + * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection} + */ + noDeleteOnFetchRejection; + /** + * {@link LRUCache.OptionsBase.noDeleteOnStaleGet} + */ + noDeleteOnStaleGet; + /** + * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort} + */ + allowStaleOnFetchAbort; + /** + * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} + */ + allowStaleOnFetchRejection; + /** + * {@link LRUCache.OptionsBase.ignoreFetchAbort} + */ + ignoreFetchAbort; + // computed properties + #size; + #calculatedSize; + #keyMap; + #keyList; + #valList; + #next; + #prev; + #head; + #tail; + #free; + #disposed; + #sizes; + #starts; + #ttls; + #hasDispose; + #hasFetchMethod; + #hasDisposeAfter; + /** + * Do not call this method unless you need to inspect the + * inner workings of the cache. If anything returned by this + * object is modified in any way, strange breakage may occur. + * + * These fields are private for a reason! + * + * @internal + */ + static unsafeExposeInternals(c) { + return { + // properties + starts: c.#starts, + ttls: c.#ttls, + sizes: c.#sizes, + keyMap: c.#keyMap, + keyList: c.#keyList, + valList: c.#valList, + next: c.#next, + prev: c.#prev, + get head() { + return c.#head; + }, + get tail() { + return c.#tail; + }, + free: c.#free, + // methods + isBackgroundFetch: (p) => c.#isBackgroundFetch(p), + backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context), + moveToTail: (index) => c.#moveToTail(index), + indexes: (options) => c.#indexes(options), + rindexes: (options) => c.#rindexes(options), + isStale: (index) => c.#isStale(index), + }; + } + // Protected read-only members + /** + * {@link LRUCache.OptionsBase.max} (read-only) + */ + get max() { + return this.#max; + } + /** + * {@link LRUCache.OptionsBase.maxSize} (read-only) + */ + get maxSize() { + return this.#maxSize; + } + /** + * The total computed size of items in the cache (read-only) + */ + get calculatedSize() { + return this.#calculatedSize; + } + /** + * The number of items stored in the cache (read-only) + */ + get size() { + return this.#size; + } + /** + * {@link LRUCache.OptionsBase.fetchMethod} (read-only) + */ + get fetchMethod() { + return this.#fetchMethod; + } + /** + * {@link LRUCache.OptionsBase.dispose} (read-only) + */ + get dispose() { + return this.#dispose; + } + /** + * {@link LRUCache.OptionsBase.disposeAfter} (read-only) + */ + get disposeAfter() { + return this.#disposeAfter; + } + constructor(options) { + const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options; + if (max !== 0 && !isPosInt(max)) { + throw new TypeError('max option must be a nonnegative integer'); + } + const UintArray = max ? getUintArray(max) : Array; + if (!UintArray) { + throw new Error('invalid max value: ' + max); + } + this.#max = max; + this.#maxSize = maxSize; + this.maxEntrySize = maxEntrySize || this.#maxSize; + this.sizeCalculation = sizeCalculation; + if (this.sizeCalculation) { + if (!this.#maxSize && !this.maxEntrySize) { + throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize'); + } + if (typeof this.sizeCalculation !== 'function') { + throw new TypeError('sizeCalculation set to non-function'); + } + } + if (fetchMethod !== undefined && + typeof fetchMethod !== 'function') { + throw new TypeError('fetchMethod must be a function if specified'); + } + this.#fetchMethod = fetchMethod; + this.#hasFetchMethod = !!fetchMethod; + this.#keyMap = new Map(); + this.#keyList = new Array(max).fill(undefined); + this.#valList = new Array(max).fill(undefined); + this.#next = new UintArray(max); + this.#prev = new UintArray(max); + this.#head = 0; + this.#tail = 0; + this.#free = Stack.create(max); + this.#size = 0; + this.#calculatedSize = 0; + if (typeof dispose === 'function') { + this.#dispose = dispose; + } + if (typeof disposeAfter === 'function') { + this.#disposeAfter = disposeAfter; + this.#disposed = []; + } + else { + this.#disposeAfter = undefined; + this.#disposed = undefined; + } + this.#hasDispose = !!this.#dispose; + this.#hasDisposeAfter = !!this.#disposeAfter; + this.noDisposeOnSet = !!noDisposeOnSet; + this.noUpdateTTL = !!noUpdateTTL; + this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection; + this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection; + this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort; + this.ignoreFetchAbort = !!ignoreFetchAbort; + // NB: maxEntrySize is set to maxSize if it's set + if (this.maxEntrySize !== 0) { + if (this.#maxSize !== 0) { + if (!isPosInt(this.#maxSize)) { + throw new TypeError('maxSize must be a positive integer if specified'); + } + } + if (!isPosInt(this.maxEntrySize)) { + throw new TypeError('maxEntrySize must be a positive integer if specified'); + } + this.#initializeSizeTracking(); + } + this.allowStale = !!allowStale; + this.noDeleteOnStaleGet = !!noDeleteOnStaleGet; + this.updateAgeOnGet = !!updateAgeOnGet; + this.updateAgeOnHas = !!updateAgeOnHas; + this.ttlResolution = + isPosInt(ttlResolution) || ttlResolution === 0 + ? ttlResolution + : 1; + this.ttlAutopurge = !!ttlAutopurge; + this.ttl = ttl || 0; + if (this.ttl) { + if (!isPosInt(this.ttl)) { + throw new TypeError('ttl must be a positive integer if specified'); + } + this.#initializeTTLTracking(); + } + // do not allow completely unbounded caches + if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) { + throw new TypeError('At least one of max, maxSize, or ttl is required'); + } + if (!this.ttlAutopurge && !this.#max && !this.#maxSize) { + const code = 'LRU_CACHE_UNBOUNDED'; + if (shouldWarn(code)) { + warned.add(code); + const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' + + 'result in unbounded memory consumption.'; + emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache); + } + } + } + /** + * Return the remaining TTL time for a given entry key + */ + getRemainingTTL(key) { + return this.#keyMap.has(key) ? Infinity : 0; + } + #initializeTTLTracking() { + const ttls = new ZeroArray(this.#max); + const starts = new ZeroArray(this.#max); + this.#ttls = ttls; + this.#starts = starts; + this.#setItemTTL = (index, ttl, start = perf.now()) => { + starts[index] = ttl !== 0 ? start : 0; + ttls[index] = ttl; + if (ttl !== 0 && this.ttlAutopurge) { + const t = setTimeout(() => { + if (this.#isStale(index)) { + this.delete(this.#keyList[index]); + } + }, ttl + 1); + // unref() not supported on all platforms + /* c8 ignore start */ + if (t.unref) { + t.unref(); + } + /* c8 ignore stop */ + } + }; + this.#updateItemAge = index => { + starts[index] = ttls[index] !== 0 ? perf.now() : 0; + }; + this.#statusTTL = (status, index) => { + if (ttls[index]) { + const ttl = ttls[index]; + const start = starts[index]; + /* c8 ignore next */ + if (!ttl || !start) + return; + status.ttl = ttl; + status.start = start; + status.now = cachedNow || getNow(); + const age = status.now - start; + status.remainingTTL = ttl - age; + } + }; + // debounce calls to perf.now() to 1s so we're not hitting + // that costly call repeatedly. + let cachedNow = 0; + const getNow = () => { + const n = perf.now(); + if (this.ttlResolution > 0) { + cachedNow = n; + const t = setTimeout(() => (cachedNow = 0), this.ttlResolution); + // not available on all platforms + /* c8 ignore start */ + if (t.unref) { + t.unref(); + } + /* c8 ignore stop */ + } + return n; + }; + this.getRemainingTTL = key => { + const index = this.#keyMap.get(key); + if (index === undefined) { + return 0; + } + const ttl = ttls[index]; + const start = starts[index]; + if (!ttl || !start) { + return Infinity; + } + const age = (cachedNow || getNow()) - start; + return ttl - age; + }; + this.#isStale = index => { + const s = starts[index]; + const t = ttls[index]; + return !!t && !!s && (cachedNow || getNow()) - s > t; + }; + } + // conditionally set private methods related to TTL + #updateItemAge = () => { }; + #statusTTL = () => { }; + #setItemTTL = () => { }; + /* c8 ignore stop */ + #isStale = () => false; + #initializeSizeTracking() { + const sizes = new ZeroArray(this.#max); + this.#calculatedSize = 0; + this.#sizes = sizes; + this.#removeItemSize = index => { + this.#calculatedSize -= sizes[index]; + sizes[index] = 0; + }; + this.#requireSize = (k, v, size, sizeCalculation) => { + // provisionally accept background fetches. + // actual value size will be checked when they return. + if (this.#isBackgroundFetch(v)) { + return 0; + } + if (!isPosInt(size)) { + if (sizeCalculation) { + if (typeof sizeCalculation !== 'function') { + throw new TypeError('sizeCalculation must be a function'); + } + size = sizeCalculation(v, k); + if (!isPosInt(size)) { + throw new TypeError('sizeCalculation return invalid (expect positive integer)'); + } + } + else { + throw new TypeError('invalid size value (must be positive integer). ' + + 'When maxSize or maxEntrySize is used, sizeCalculation ' + + 'or size must be set.'); + } + } + return size; + }; + this.#addItemSize = (index, size, status) => { + sizes[index] = size; + if (this.#maxSize) { + const maxSize = this.#maxSize - sizes[index]; + while (this.#calculatedSize > maxSize) { + this.#evict(true); + } + } + this.#calculatedSize += sizes[index]; + if (status) { + status.entrySize = size; + status.totalCalculatedSize = this.#calculatedSize; + } + }; + } + #removeItemSize = _i => { }; + #addItemSize = (_i, _s, _st) => { }; + #requireSize = (_k, _v, size, sizeCalculation) => { + if (size || sizeCalculation) { + throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache'); + } + return 0; + }; + *#indexes({ allowStale = this.allowStale } = {}) { + if (this.#size) { + for (let i = this.#tail; true;) { + if (!this.#isValidIndex(i)) { + break; + } + if (allowStale || !this.#isStale(i)) { + yield i; + } + if (i === this.#head) { + break; + } + else { + i = this.#prev[i]; + } + } + } + } + *#rindexes({ allowStale = this.allowStale } = {}) { + if (this.#size) { + for (let i = this.#head; true;) { + if (!this.#isValidIndex(i)) { + break; + } + if (allowStale || !this.#isStale(i)) { + yield i; + } + if (i === this.#tail) { + break; + } + else { + i = this.#next[i]; + } + } + } + } + #isValidIndex(index) { + return (index !== undefined && + this.#keyMap.get(this.#keyList[index]) === index); + } + /** + * Return a generator yielding `[key, value]` pairs, + * in order from most recently used to least recently used. + */ + *entries() { + for (const i of this.#indexes()) { + if (this.#valList[i] !== undefined && + this.#keyList[i] !== undefined && + !this.#isBackgroundFetch(this.#valList[i])) { + yield [this.#keyList[i], this.#valList[i]]; + } + } + } + /** + * Inverse order version of {@link LRUCache.entries} + * + * Return a generator yielding `[key, value]` pairs, + * in order from least recently used to most recently used. + */ + *rentries() { + for (const i of this.#rindexes()) { + if (this.#valList[i] !== undefined && + this.#keyList[i] !== undefined && + !this.#isBackgroundFetch(this.#valList[i])) { + yield [this.#keyList[i], this.#valList[i]]; + } + } + } + /** + * Return a generator yielding the keys in the cache, + * in order from most recently used to least recently used. + */ + *keys() { + for (const i of this.#indexes()) { + const k = this.#keyList[i]; + if (k !== undefined && + !this.#isBackgroundFetch(this.#valList[i])) { + yield k; + } + } + } + /** + * Inverse order version of {@link LRUCache.keys} + * + * Return a generator yielding the keys in the cache, + * in order from least recently used to most recently used. + */ + *rkeys() { + for (const i of this.#rindexes()) { + const k = this.#keyList[i]; + if (k !== undefined && + !this.#isBackgroundFetch(this.#valList[i])) { + yield k; + } + } + } + /** + * Return a generator yielding the values in the cache, + * in order from most recently used to least recently used. + */ + *values() { + for (const i of this.#indexes()) { + const v = this.#valList[i]; + if (v !== undefined && + !this.#isBackgroundFetch(this.#valList[i])) { + yield this.#valList[i]; + } + } + } + /** + * Inverse order version of {@link LRUCache.values} + * + * Return a generator yielding the values in the cache, + * in order from least recently used to most recently used. + */ + *rvalues() { + for (const i of this.#rindexes()) { + const v = this.#valList[i]; + if (v !== undefined && + !this.#isBackgroundFetch(this.#valList[i])) { + yield this.#valList[i]; + } + } + } + /** + * Iterating over the cache itself yields the same results as + * {@link LRUCache.entries} + */ + [Symbol.iterator]() { + return this.entries(); + } + /** + * Find a value for which the supplied fn method returns a truthy value, + * similar to Array.find(). fn is called as fn(value, key, cache). + */ + find(fn, getOptions = {}) { + for (const i of this.#indexes()) { + const v = this.#valList[i]; + const value = this.#isBackgroundFetch(v) + ? v.__staleWhileFetching + : v; + if (value === undefined) + continue; + if (fn(value, this.#keyList[i], this)) { + return this.get(this.#keyList[i], getOptions); + } + } + } + /** + * Call the supplied function on each item in the cache, in order from + * most recently used to least recently used. fn is called as + * fn(value, key, cache). Does not update age or recenty of use. + * Does not iterate over stale values. + */ + forEach(fn, thisp = this) { + for (const i of this.#indexes()) { + const v = this.#valList[i]; + const value = this.#isBackgroundFetch(v) + ? v.__staleWhileFetching + : v; + if (value === undefined) + continue; + fn.call(thisp, value, this.#keyList[i], this); + } + } + /** + * The same as {@link LRUCache.forEach} but items are iterated over in + * reverse order. (ie, less recently used items are iterated over first.) + */ + rforEach(fn, thisp = this) { + for (const i of this.#rindexes()) { + const v = this.#valList[i]; + const value = this.#isBackgroundFetch(v) + ? v.__staleWhileFetching + : v; + if (value === undefined) + continue; + fn.call(thisp, value, this.#keyList[i], this); + } + } + /** + * Delete any stale entries. Returns true if anything was removed, + * false otherwise. + */ + purgeStale() { + let deleted = false; + for (const i of this.#rindexes({ allowStale: true })) { + if (this.#isStale(i)) { + this.delete(this.#keyList[i]); + deleted = true; + } + } + return deleted; + } + /** + * Get the extended info about a given entry, to get its value, size, and + * TTL info simultaneously. Like {@link LRUCache#dump}, but just for a + * single key. Always returns stale values, if their info is found in the + * cache, so be sure to check for expired TTLs if relevant. + */ + info(key) { + const i = this.#keyMap.get(key); + if (i === undefined) + return undefined; + const v = this.#valList[i]; + const value = this.#isBackgroundFetch(v) + ? v.__staleWhileFetching + : v; + if (value === undefined) + return undefined; + const entry = { value }; + if (this.#ttls && this.#starts) { + const ttl = this.#ttls[i]; + const start = this.#starts[i]; + if (ttl && start) { + const remain = ttl - (perf.now() - start); + entry.ttl = remain; + entry.start = Date.now(); + } + } + if (this.#sizes) { + entry.size = this.#sizes[i]; + } + return entry; + } + /** + * Return an array of [key, {@link LRUCache.Entry}] tuples which can be + * passed to cache.load() + */ + dump() { + const arr = []; + for (const i of this.#indexes({ allowStale: true })) { + const key = this.#keyList[i]; + const v = this.#valList[i]; + const value = this.#isBackgroundFetch(v) + ? v.__staleWhileFetching + : v; + if (value === undefined || key === undefined) + continue; + const entry = { value }; + if (this.#ttls && this.#starts) { + entry.ttl = this.#ttls[i]; + // always dump the start relative to a portable timestamp + // it's ok for this to be a bit slow, it's a rare operation. + const age = perf.now() - this.#starts[i]; + entry.start = Math.floor(Date.now() - age); + } + if (this.#sizes) { + entry.size = this.#sizes[i]; + } + arr.unshift([key, entry]); + } + return arr; + } + /** + * Reset the cache and load in the items in entries in the order listed. + * Note that the shape of the resulting cache may be different if the + * same options are not used in both caches. + */ + load(arr) { + this.clear(); + for (const [key, entry] of arr) { + if (entry.start) { + // entry.start is a portable timestamp, but we may be using + // node's performance.now(), so calculate the offset, so that + // we get the intended remaining TTL, no matter how long it's + // been on ice. + // + // it's ok for this to be a bit slow, it's a rare operation. + const age = Date.now() - entry.start; + entry.start = perf.now() - age; + } + this.set(key, entry.value, entry); + } + } + /** + * Add a value to the cache. + * + * Note: if `undefined` is specified as a value, this is an alias for + * {@link LRUCache#delete} + */ + set(k, v, setOptions = {}) { + if (v === undefined) { + this.delete(k); + return this; + } + const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions; + let { noUpdateTTL = this.noUpdateTTL } = setOptions; + const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation); + // if the item doesn't fit, don't do anything + // NB: maxEntrySize set to maxSize by default + if (this.maxEntrySize && size > this.maxEntrySize) { + if (status) { + status.set = 'miss'; + status.maxEntrySizeExceeded = true; + } + // have to delete, in case something is there already. + this.delete(k); + return this; + } + let index = this.#size === 0 ? undefined : this.#keyMap.get(k); + if (index === undefined) { + // addition + index = (this.#size === 0 + ? this.#tail + : this.#free.length !== 0 + ? this.#free.pop() + : this.#size === this.#max + ? this.#evict(false) + : this.#size); + this.#keyList[index] = k; + this.#valList[index] = v; + this.#keyMap.set(k, index); + this.#next[this.#tail] = index; + this.#prev[index] = this.#tail; + this.#tail = index; + this.#size++; + this.#addItemSize(index, size, status); + if (status) + status.set = 'add'; + noUpdateTTL = false; + } + else { + // update + this.#moveToTail(index); + const oldVal = this.#valList[index]; + if (v !== oldVal) { + if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) { + oldVal.__abortController.abort(new Error('replaced')); + const { __staleWhileFetching: s } = oldVal; + if (s !== undefined && !noDisposeOnSet) { + if (this.#hasDispose) { + this.#dispose?.(s, k, 'set'); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([s, k, 'set']); + } + } + } + else if (!noDisposeOnSet) { + if (this.#hasDispose) { + this.#dispose?.(oldVal, k, 'set'); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([oldVal, k, 'set']); + } + } + this.#removeItemSize(index); + this.#addItemSize(index, size, status); + this.#valList[index] = v; + if (status) { + status.set = 'replace'; + const oldValue = oldVal && this.#isBackgroundFetch(oldVal) + ? oldVal.__staleWhileFetching + : oldVal; + if (oldValue !== undefined) + status.oldValue = oldValue; + } + } + else if (status) { + status.set = 'update'; + } + } + if (ttl !== 0 && !this.#ttls) { + this.#initializeTTLTracking(); + } + if (this.#ttls) { + if (!noUpdateTTL) { + this.#setItemTTL(index, ttl, start); + } + if (status) + this.#statusTTL(status, index); + } + if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) { + const dt = this.#disposed; + let task; + while ((task = dt?.shift())) { + this.#disposeAfter?.(...task); + } + } + return this; + } + /** + * Evict the least recently used item, returning its value or + * `undefined` if cache is empty. + */ + pop() { + try { + while (this.#size) { + const val = this.#valList[this.#head]; + this.#evict(true); + if (this.#isBackgroundFetch(val)) { + if (val.__staleWhileFetching) { + return val.__staleWhileFetching; + } + } + else if (val !== undefined) { + return val; + } + } + } + finally { + if (this.#hasDisposeAfter && this.#disposed) { + const dt = this.#disposed; + let task; + while ((task = dt?.shift())) { + this.#disposeAfter?.(...task); + } + } + } + } + #evict(free) { + const head = this.#head; + const k = this.#keyList[head]; + const v = this.#valList[head]; + if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) { + v.__abortController.abort(new Error('evicted')); + } + else if (this.#hasDispose || this.#hasDisposeAfter) { + if (this.#hasDispose) { + this.#dispose?.(v, k, 'evict'); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([v, k, 'evict']); + } + } + this.#removeItemSize(head); + // if we aren't about to use the index, then null these out + if (free) { + this.#keyList[head] = undefined; + this.#valList[head] = undefined; + this.#free.push(head); + } + if (this.#size === 1) { + this.#head = this.#tail = 0; + this.#free.length = 0; + } + else { + this.#head = this.#next[head]; + } + this.#keyMap.delete(k); + this.#size--; + return head; + } + /** + * Check if a key is in the cache, without updating the recency of use. + * Will return false if the item is stale, even though it is technically + * in the cache. + * + * Will not update item age unless + * {@link LRUCache.OptionsBase.updateAgeOnHas} is set. + */ + has(k, hasOptions = {}) { + const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions; + const index = this.#keyMap.get(k); + if (index !== undefined) { + const v = this.#valList[index]; + if (this.#isBackgroundFetch(v) && + v.__staleWhileFetching === undefined) { + return false; + } + if (!this.#isStale(index)) { + if (updateAgeOnHas) { + this.#updateItemAge(index); + } + if (status) { + status.has = 'hit'; + this.#statusTTL(status, index); + } + return true; + } + else if (status) { + status.has = 'stale'; + this.#statusTTL(status, index); + } + } + else if (status) { + status.has = 'miss'; + } + return false; + } + /** + * Like {@link LRUCache#get} but doesn't update recency or delete stale + * items. + * + * Returns `undefined` if the item is stale, unless + * {@link LRUCache.OptionsBase.allowStale} is set. + */ + peek(k, peekOptions = {}) { + const { allowStale = this.allowStale } = peekOptions; + const index = this.#keyMap.get(k); + if (index === undefined || + (!allowStale && this.#isStale(index))) { + return; + } + const v = this.#valList[index]; + // either stale and allowed, or forcing a refresh of non-stale value + return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v; + } + #backgroundFetch(k, index, options, context) { + const v = index === undefined ? undefined : this.#valList[index]; + if (this.#isBackgroundFetch(v)) { + return v; + } + const ac = new AC(); + const { signal } = options; + // when/if our AC signals, then stop listening to theirs. + signal?.addEventListener('abort', () => ac.abort(signal.reason), { + signal: ac.signal, + }); + const fetchOpts = { + signal: ac.signal, + options, + context, + }; + const cb = (v, updateCache = false) => { + const { aborted } = ac.signal; + const ignoreAbort = options.ignoreFetchAbort && v !== undefined; + if (options.status) { + if (aborted && !updateCache) { + options.status.fetchAborted = true; + options.status.fetchError = ac.signal.reason; + if (ignoreAbort) + options.status.fetchAbortIgnored = true; + } + else { + options.status.fetchResolved = true; + } + } + if (aborted && !ignoreAbort && !updateCache) { + return fetchFail(ac.signal.reason); + } + // either we didn't abort, and are still here, or we did, and ignored + const bf = p; + if (this.#valList[index] === p) { + if (v === undefined) { + if (bf.__staleWhileFetching) { + this.#valList[index] = bf.__staleWhileFetching; + } + else { + this.delete(k); + } + } + else { + if (options.status) + options.status.fetchUpdated = true; + this.set(k, v, fetchOpts.options); + } + } + return v; + }; + const eb = (er) => { + if (options.status) { + options.status.fetchRejected = true; + options.status.fetchError = er; + } + return fetchFail(er); + }; + const fetchFail = (er) => { + const { aborted } = ac.signal; + const allowStaleAborted = aborted && options.allowStaleOnFetchAbort; + const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection; + const noDelete = allowStale || options.noDeleteOnFetchRejection; + const bf = p; + if (this.#valList[index] === p) { + // if we allow stale on fetch rejections, then we need to ensure that + // the stale value is not removed from the cache when the fetch fails. + const del = !noDelete || bf.__staleWhileFetching === undefined; + if (del) { + this.delete(k); + } + else if (!allowStaleAborted) { + // still replace the *promise* with the stale value, + // since we are done with the promise at this point. + // leave it untouched if we're still waiting for an + // aborted background fetch that hasn't yet returned. + this.#valList[index] = bf.__staleWhileFetching; + } + } + if (allowStale) { + if (options.status && bf.__staleWhileFetching !== undefined) { + options.status.returnedStale = true; + } + return bf.__staleWhileFetching; + } + else if (bf.__returned === bf) { + throw er; + } + }; + const pcall = (res, rej) => { + const fmp = this.#fetchMethod?.(k, v, fetchOpts); + if (fmp && fmp instanceof Promise) { + fmp.then(v => res(v === undefined ? undefined : v), rej); + } + // ignored, we go until we finish, regardless. + // defer check until we are actually aborting, + // so fetchMethod can override. + ac.signal.addEventListener('abort', () => { + if (!options.ignoreFetchAbort || + options.allowStaleOnFetchAbort) { + res(undefined); + // when it eventually resolves, update the cache. + if (options.allowStaleOnFetchAbort) { + res = v => cb(v, true); + } + } + }); + }; + if (options.status) + options.status.fetchDispatched = true; + const p = new Promise(pcall).then(cb, eb); + const bf = Object.assign(p, { + __abortController: ac, + __staleWhileFetching: v, + __returned: undefined, + }); + if (index === undefined) { + // internal, don't expose status. + this.set(k, bf, { ...fetchOpts.options, status: undefined }); + index = this.#keyMap.get(k); + } + else { + this.#valList[index] = bf; + } + return bf; + } + #isBackgroundFetch(p) { + if (!this.#hasFetchMethod) + return false; + const b = p; + return (!!b && + b instanceof Promise && + b.hasOwnProperty('__staleWhileFetching') && + b.__abortController instanceof AC); + } + async fetch(k, fetchOptions = {}) { + const { + // get options + allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, + // set options + ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, + // fetch exclusive options + noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions; + if (!this.#hasFetchMethod) { + if (status) + status.fetch = 'get'; + return this.get(k, { + allowStale, + updateAgeOnGet, + noDeleteOnStaleGet, + status, + }); + } + const options = { + allowStale, + updateAgeOnGet, + noDeleteOnStaleGet, + ttl, + noDisposeOnSet, + size, + sizeCalculation, + noUpdateTTL, + noDeleteOnFetchRejection, + allowStaleOnFetchRejection, + allowStaleOnFetchAbort, + ignoreFetchAbort, + status, + signal, + }; + let index = this.#keyMap.get(k); + if (index === undefined) { + if (status) + status.fetch = 'miss'; + const p = this.#backgroundFetch(k, index, options, context); + return (p.__returned = p); + } + else { + // in cache, maybe already fetching + const v = this.#valList[index]; + if (this.#isBackgroundFetch(v)) { + const stale = allowStale && v.__staleWhileFetching !== undefined; + if (status) { + status.fetch = 'inflight'; + if (stale) + status.returnedStale = true; + } + return stale ? v.__staleWhileFetching : (v.__returned = v); + } + // if we force a refresh, that means do NOT serve the cached value, + // unless we are already in the process of refreshing the cache. + const isStale = this.#isStale(index); + if (!forceRefresh && !isStale) { + if (status) + status.fetch = 'hit'; + this.#moveToTail(index); + if (updateAgeOnGet) { + this.#updateItemAge(index); + } + if (status) + this.#statusTTL(status, index); + return v; + } + // ok, it is stale or a forced refresh, and not already fetching. + // refresh the cache. + const p = this.#backgroundFetch(k, index, options, context); + const hasStale = p.__staleWhileFetching !== undefined; + const staleVal = hasStale && allowStale; + if (status) { + status.fetch = isStale ? 'stale' : 'refresh'; + if (staleVal && isStale) + status.returnedStale = true; + } + return staleVal ? p.__staleWhileFetching : (p.__returned = p); + } + } + /** + * Return a value from the cache. Will update the recency of the cache + * entry found. + * + * If the key is not found, get() will return `undefined`. + */ + get(k, getOptions = {}) { + const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions; + const index = this.#keyMap.get(k); + if (index !== undefined) { + const value = this.#valList[index]; + const fetching = this.#isBackgroundFetch(value); + if (status) + this.#statusTTL(status, index); + if (this.#isStale(index)) { + if (status) + status.get = 'stale'; + // delete only if not an in-flight background fetch + if (!fetching) { + if (!noDeleteOnStaleGet) { + this.delete(k); + } + if (status && allowStale) + status.returnedStale = true; + return allowStale ? value : undefined; + } + else { + if (status && + allowStale && + value.__staleWhileFetching !== undefined) { + status.returnedStale = true; + } + return allowStale ? value.__staleWhileFetching : undefined; + } + } + else { + if (status) + status.get = 'hit'; + // if we're currently fetching it, we don't actually have it yet + // it's not stale, which means this isn't a staleWhileRefetching. + // If it's not stale, and fetching, AND has a __staleWhileFetching + // value, then that means the user fetched with {forceRefresh:true}, + // so it's safe to return that value. + if (fetching) { + return value.__staleWhileFetching; + } + this.#moveToTail(index); + if (updateAgeOnGet) { + this.#updateItemAge(index); + } + return value; + } + } + else if (status) { + status.get = 'miss'; + } + } + #connect(p, n) { + this.#prev[n] = p; + this.#next[p] = n; + } + #moveToTail(index) { + // if tail already, nothing to do + // if head, move head to next[index] + // else + // move next[prev[index]] to next[index] (head has no prev) + // move prev[next[index]] to prev[index] + // prev[index] = tail + // next[tail] = index + // tail = index + if (index !== this.#tail) { + if (index === this.#head) { + this.#head = this.#next[index]; + } + else { + this.#connect(this.#prev[index], this.#next[index]); + } + this.#connect(this.#tail, index); + this.#tail = index; + } + } + /** + * Deletes a key out of the cache. + * Returns true if the key was deleted, false otherwise. + */ + delete(k) { + let deleted = false; + if (this.#size !== 0) { + const index = this.#keyMap.get(k); + if (index !== undefined) { + deleted = true; + if (this.#size === 1) { + this.clear(); + } + else { + this.#removeItemSize(index); + const v = this.#valList[index]; + if (this.#isBackgroundFetch(v)) { + v.__abortController.abort(new Error('deleted')); + } + else if (this.#hasDispose || this.#hasDisposeAfter) { + if (this.#hasDispose) { + this.#dispose?.(v, k, 'delete'); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([v, k, 'delete']); + } + } + this.#keyMap.delete(k); + this.#keyList[index] = undefined; + this.#valList[index] = undefined; + if (index === this.#tail) { + this.#tail = this.#prev[index]; + } + else if (index === this.#head) { + this.#head = this.#next[index]; + } + else { + const pi = this.#prev[index]; + this.#next[pi] = this.#next[index]; + const ni = this.#next[index]; + this.#prev[ni] = this.#prev[index]; + } + this.#size--; + this.#free.push(index); + } + } + } + if (this.#hasDisposeAfter && this.#disposed?.length) { + const dt = this.#disposed; + let task; + while ((task = dt?.shift())) { + this.#disposeAfter?.(...task); + } + } + return deleted; + } + /** + * Clear the cache entirely, throwing away all values. + */ + clear() { + for (const index of this.#rindexes({ allowStale: true })) { + const v = this.#valList[index]; + if (this.#isBackgroundFetch(v)) { + v.__abortController.abort(new Error('deleted')); + } + else { + const k = this.#keyList[index]; + if (this.#hasDispose) { + this.#dispose?.(v, k, 'delete'); + } + if (this.#hasDisposeAfter) { + this.#disposed?.push([v, k, 'delete']); + } + } + } + this.#keyMap.clear(); + this.#valList.fill(undefined); + this.#keyList.fill(undefined); + if (this.#ttls && this.#starts) { + this.#ttls.fill(0); + this.#starts.fill(0); + } + if (this.#sizes) { + this.#sizes.fill(0); + } + this.#head = 0; + this.#tail = 0; + this.#free.length = 0; + this.#calculatedSize = 0; + this.#size = 0; + if (this.#hasDisposeAfter && this.#disposed) { + const dt = this.#disposed; + let task; + while ((task = dt?.shift())) { + this.#disposeAfter?.(...task); + } + } + } +} + +function createCache(max = 500) { + return new LRUCache({ max }); +} + +function isImportUsed(local, sfc) { + return resolveTemplateUsedIdentifiers(sfc).has(local); +} +const templateUsageCheckCache = createCache(); +function resolveTemplateUsedIdentifiers(sfc) { + const { content, ast } = sfc.template; + const cached = templateUsageCheckCache.get(content); + if (cached) { + return cached; + } + const ids = /* @__PURE__ */ new Set(); + ast.children.forEach(walk); + function walk(node) { + var _a; + switch (node.type) { + case 1: + let tag = node.tag; + if (tag.includes(".")) tag = tag.split(".")[0].trim(); + if (!CompilerDOM.parserOptions.isNativeTag(tag) && !CompilerDOM.parserOptions.isBuiltInComponent(tag)) { + ids.add(shared.camelize(tag)); + ids.add(shared.capitalize(shared.camelize(tag))); + } + for (let i = 0; i < node.props.length; i++) { + const prop = node.props[i]; + if (prop.type === 7) { + if (!shared.isBuiltInDirective(prop.name)) { + ids.add(`v${shared.capitalize(shared.camelize(prop.name))}`); + } + if (prop.arg && !prop.arg.isStatic) { + extractIdentifiers(ids, prop.arg); + } + if (prop.name === "for") { + extractIdentifiers(ids, prop.forParseResult.source); + } else if (prop.exp) { + extractIdentifiers(ids, prop.exp); + } else if (prop.name === "bind" && !prop.exp) { + ids.add(shared.camelize(prop.arg.content)); + } + } + if (prop.type === 6 && prop.name === "ref" && ((_a = prop.value) == null ? void 0 : _a.content)) { + ids.add(prop.value.content); + } + } + node.children.forEach(walk); + break; + case 5: + extractIdentifiers(ids, node.content); + break; + } + } + templateUsageCheckCache.set(content, ids); + return ids; +} +function extractIdentifiers(ids, node) { + if (node.ast) { + CompilerDOM.walkIdentifiers(node.ast, (n) => ids.add(n.name)); + } else if (node.ast === null) { + ids.add(node.content); + } +} + +const DEFAULT_FILENAME = "anonymous.vue"; +const parseCache$1 = createCache(); +function parse$1(source, options = {}) { + var _a; + const sourceKey = shared.genCacheKey(source, { + ...options, + compiler: { parse: (_a = options.compiler) == null ? void 0 : _a.parse } + }); + const cache = parseCache$1.get(sourceKey); + if (cache) { + return cache; + } + const { + sourceMap = true, + filename = DEFAULT_FILENAME, + sourceRoot = "", + pad = false, + ignoreEmpty = true, + compiler = CompilerDOM__namespace, + templateParseOptions = {} + } = options; + const descriptor = { + filename, + source, + template: null, + script: null, + scriptSetup: null, + styles: [], + customBlocks: [], + cssVars: [], + slotted: false, + shouldForceReload: (prevImports) => hmrShouldReload(prevImports, descriptor) + }; + const errors = []; + const ast = compiler.parse(source, { + parseMode: "sfc", + prefixIdentifiers: true, + ...templateParseOptions, + onError: (e) => { + errors.push(e); + } + }); + ast.children.forEach((node) => { + if (node.type !== 1) { + return; + } + if (ignoreEmpty && node.tag !== "template" && isEmpty(node) && !hasSrc(node)) { + return; + } + switch (node.tag) { + case "template": + if (!descriptor.template) { + const templateBlock = descriptor.template = createBlock( + node, + source, + false + ); + if (!templateBlock.attrs.src) { + templateBlock.ast = compilerCore.createRoot(node.children, source); + } + if (templateBlock.attrs.functional) { + const err = new SyntaxError( + `<template functional> is no longer supported in Vue 3, since functional components no longer have significant performance difference from stateful ones. Just use a normal <template> instead.` + ); + err.loc = node.props.find( + (p) => p.type === 6 && p.name === "functional" + ).loc; + errors.push(err); + } + } else { + errors.push(createDuplicateBlockError(node)); + } + break; + case "script": + const scriptBlock = createBlock(node, source, pad); + const isSetup = !!scriptBlock.attrs.setup; + if (isSetup && !descriptor.scriptSetup) { + descriptor.scriptSetup = scriptBlock; + break; + } + if (!isSetup && !descriptor.script) { + descriptor.script = scriptBlock; + break; + } + errors.push(createDuplicateBlockError(node, isSetup)); + break; + case "style": + const styleBlock = createBlock(node, source, pad); + if (styleBlock.attrs.vars) { + errors.push( + new SyntaxError( + `<style vars> has been replaced by a new proposal: https://github.com/vuejs/rfcs/pull/231` + ) + ); + } + descriptor.styles.push(styleBlock); + break; + default: + descriptor.customBlocks.push(createBlock(node, source, pad)); + break; + } + }); + if (!descriptor.template && !descriptor.script && !descriptor.scriptSetup) { + errors.push( + new SyntaxError( + `At least one <template> or <script> is required in a single file component. ${descriptor.filename}` + ) + ); + } + if (descriptor.scriptSetup) { + if (descriptor.scriptSetup.src) { + errors.push( + new SyntaxError( + `<script setup> cannot use the "src" attribute because its syntax will be ambiguous outside of the component.` + ) + ); + descriptor.scriptSetup = null; + } + if (descriptor.script && descriptor.script.src) { + errors.push( + new SyntaxError( + `<script> cannot use the "src" attribute when <script setup> is also present because they must be processed together.` + ) + ); + descriptor.script = null; + } + } + let templateColumnOffset = 0; + if (descriptor.template && (descriptor.template.lang === "pug" || descriptor.template.lang === "jade")) { + [descriptor.template.content, templateColumnOffset] = dedent( + descriptor.template.content + ); + } + if (sourceMap) { + const genMap = (block, columnOffset = 0) => { + if (block && !block.src) { + block.map = generateSourceMap( + filename, + source, + block.content, + sourceRoot, + !pad || block.type === "template" ? block.loc.start.line - 1 : 0, + columnOffset + ); + } + }; + genMap(descriptor.template, templateColumnOffset); + genMap(descriptor.script); + descriptor.styles.forEach((s) => genMap(s)); + descriptor.customBlocks.forEach((s) => genMap(s)); + } + descriptor.cssVars = parseCssVars(descriptor); + const slottedRE = /(?:::v-|:)slotted\(/; + descriptor.slotted = descriptor.styles.some( + (s) => s.scoped && slottedRE.test(s.content) + ); + const result = { + descriptor, + errors + }; + parseCache$1.set(sourceKey, result); + return result; +} +function createDuplicateBlockError(node, isScriptSetup = false) { + const err = new SyntaxError( + `Single file component can contain only one <${node.tag}${isScriptSetup ? ` setup` : ``}> element` + ); + err.loc = node.loc; + return err; +} +function createBlock(node, source, pad) { + const type = node.tag; + const loc = node.innerLoc; + const attrs = {}; + const block = { + type, + content: source.slice(loc.start.offset, loc.end.offset), + loc, + attrs + }; + if (pad) { + block.content = padContent(source, block, pad) + block.content; + } + node.props.forEach((p) => { + if (p.type === 6) { + const name = p.name; + attrs[name] = p.value ? p.value.content || true : true; + if (name === "lang") { + block.lang = p.value && p.value.content; + } else if (name === "src") { + block.src = p.value && p.value.content; + } else if (type === "style") { + if (name === "scoped") { + block.scoped = true; + } else if (name === "module") { + block.module = attrs[name]; + } + } else if (type === "script" && name === "setup") { + block.setup = attrs.setup; + } + } + }); + return block; +} +const splitRE = /\r?\n/g; +const emptyRE = /^(?:\/\/)?\s*$/; +const replaceRE = /./g; +function generateSourceMap(filename, source, generated, sourceRoot, lineOffset, columnOffset) { + const map = new sourceMapJs.SourceMapGenerator({ + file: filename.replace(/\\/g, "/"), + sourceRoot: sourceRoot.replace(/\\/g, "/") + }); + map.setSourceContent(filename, source); + map._sources.add(filename); + generated.split(splitRE).forEach((line, index) => { + if (!emptyRE.test(line)) { + const originalLine = index + 1 + lineOffset; + const generatedLine = index + 1; + for (let i = 0; i < line.length; i++) { + if (!/\s/.test(line[i])) { + map._mappings.add({ + originalLine, + originalColumn: i + columnOffset, + generatedLine, + generatedColumn: i, + source: filename, + name: null + }); + } + } + } + }); + return map.toJSON(); +} +function padContent(content, block, pad) { + content = content.slice(0, block.loc.start.offset); + if (pad === "space") { + return content.replace(replaceRE, " "); + } else { + const offset = content.split(splitRE).length; + const padChar = block.type === "script" && !block.lang ? "//\n" : "\n"; + return Array(offset).join(padChar); + } +} +function hasSrc(node) { + return node.props.some((p) => { + if (p.type !== 6) { + return false; + } + return p.name === "src"; + }); +} +function isEmpty(node) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (child.type !== 2 || child.content.trim() !== "") { + return false; + } + } + return true; +} +function hmrShouldReload(prevImports, next) { + if (!next.scriptSetup || next.scriptSetup.lang !== "ts" && next.scriptSetup.lang !== "tsx") { + return false; + } + for (const key in prevImports) { + if (!prevImports[key].isUsedInTemplate && isImportUsed(key, next)) { + return true; + } + } + return false; +} +function dedent(s) { + const lines = s.split("\n"); + const minIndent = lines.reduce(function(minIndent2, line) { + var _a, _b; + if (line.trim() === "") { + return minIndent2; + } + const indent = ((_b = (_a = line.match(/^\s*/)) == null ? void 0 : _a[0]) == null ? void 0 : _b.length) || 0; + return Math.min(indent, minIndent2); + }, Infinity); + if (minIndent === 0) { + return [s, minIndent]; + } + return [ + lines.map(function(line) { + return line.slice(minIndent); + }).join("\n"), + minIndent + ]; +} + +function isRelativeUrl(url) { + const firstChar = url.charAt(0); + return firstChar === "." || firstChar === "~" || firstChar === "@"; +} +const externalRE = /^(https?:)?\/\//; +function isExternalUrl(url) { + return externalRE.test(url); +} +const dataUrlRE = /^\s*data:/i; +function isDataUrl(url) { + return dataUrlRE.test(url); +} +function parseUrl(url) { + const firstChar = url.charAt(0); + if (firstChar === "~") { + const secondChar = url.charAt(1); + url = url.slice(secondChar === "/" ? 2 : 1); + } + return parseUriParts(url); +} +function parseUriParts(urlString) { + return url.parse(shared.isString(urlString) ? urlString : "", false, true); +} + +const defaultAssetUrlOptions = { + base: null, + includeAbsolute: false, + tags: { + video: ["src", "poster"], + source: ["src"], + img: ["src"], + image: ["xlink:href", "href"], + use: ["xlink:href", "href"] + } +}; +const normalizeOptions = (options) => { + if (Object.keys(options).some((key) => shared.isArray(options[key]))) { + return { + ...defaultAssetUrlOptions, + tags: options + }; + } + return { + ...defaultAssetUrlOptions, + ...options + }; +}; +const createAssetUrlTransformWithOptions = (options) => { + return (node, context) => transformAssetUrl(node, context, options); +}; +const transformAssetUrl = (node, context, options = defaultAssetUrlOptions) => { + if (node.type === 1) { + if (!node.props.length) { + return; + } + const tags = options.tags || defaultAssetUrlOptions.tags; + const attrs = tags[node.tag]; + const wildCardAttrs = tags["*"]; + if (!attrs && !wildCardAttrs) { + return; + } + const assetAttrs = (attrs || []).concat(wildCardAttrs || []); + node.props.forEach((attr, index) => { + if (attr.type !== 6 || !assetAttrs.includes(attr.name) || !attr.value || isExternalUrl(attr.value.content) || isDataUrl(attr.value.content) || attr.value.content[0] === "#" || !options.includeAbsolute && !isRelativeUrl(attr.value.content)) { + return; + } + const url = parseUrl(attr.value.content); + if (options.base && attr.value.content[0] === ".") { + const base = parseUrl(options.base); + const protocol = base.protocol || ""; + const host = base.host ? protocol + "//" + base.host : ""; + const basePath = base.path || "/"; + attr.value.content = host + (path$1.posix || path$1).join(basePath, url.path + (url.hash || "")); + return; + } + const exp = getImportsExpressionExp(url.path, url.hash, attr.loc, context); + node.props[index] = { + type: 7, + name: "bind", + arg: compilerCore.createSimpleExpression(attr.name, true, attr.loc), + exp, + modifiers: [], + loc: attr.loc + }; + }); + } +}; +function getImportsExpressionExp(path2, hash, loc, context) { + if (path2) { + let name; + let exp; + const existingIndex = context.imports.findIndex((i) => i.path === path2); + if (existingIndex > -1) { + name = `_imports_${existingIndex}`; + exp = context.imports[existingIndex].exp; + } else { + name = `_imports_${context.imports.length}`; + exp = compilerCore.createSimpleExpression( + name, + false, + loc, + 3 + ); + context.imports.push({ + exp, + path: decodeURIComponent(path2) + }); + } + if (!hash) { + return exp; + } + const hashExp = `${name} + '${hash}'`; + const finalExp = compilerCore.createSimpleExpression( + hashExp, + false, + loc, + 3 + ); + if (!context.hoistStatic) { + return finalExp; + } + const existingHoistIndex = context.hoists.findIndex((h) => { + return h && h.type === 4 && !h.isStatic && h.content === hashExp; + }); + if (existingHoistIndex > -1) { + return compilerCore.createSimpleExpression( + `_hoisted_${existingHoistIndex + 1}`, + false, + loc, + 3 + ); + } + return context.hoist(finalExp); + } else { + return compilerCore.createSimpleExpression(`''`, false, loc, 3); + } +} + +const srcsetTags = ["img", "source"]; +const escapedSpaceCharacters = /( |\\t|\\n|\\f|\\r)+/g; +const createSrcsetTransformWithOptions = (options) => { + return (node, context) => transformSrcset(node, context, options); +}; +const transformSrcset = (node, context, options = defaultAssetUrlOptions) => { + if (node.type === 1) { + if (srcsetTags.includes(node.tag) && node.props.length) { + node.props.forEach((attr, index) => { + if (attr.name === "srcset" && attr.type === 6) { + if (!attr.value) return; + const value = attr.value.content; + if (!value) return; + const imageCandidates = value.split(",").map((s) => { + const [url, descriptor] = s.replace(escapedSpaceCharacters, " ").trim().split(" ", 2); + return { url, descriptor }; + }); + for (let i = 0; i < imageCandidates.length; i++) { + const { url } = imageCandidates[i]; + if (isDataUrl(url)) { + imageCandidates[i + 1].url = url + "," + imageCandidates[i + 1].url; + imageCandidates.splice(i, 1); + } + } + const shouldProcessUrl = (url) => { + return url && !isExternalUrl(url) && !isDataUrl(url) && (options.includeAbsolute || isRelativeUrl(url)); + }; + if (!imageCandidates.some(({ url }) => shouldProcessUrl(url))) { + return; + } + if (options.base) { + const base = options.base; + const set = []; + let needImportTransform = false; + imageCandidates.forEach((candidate) => { + let { url, descriptor } = candidate; + descriptor = descriptor ? ` ${descriptor}` : ``; + if (url[0] === ".") { + candidate.url = (path$1.posix || path$1).join(base, url); + set.push(candidate.url + descriptor); + } else if (shouldProcessUrl(url)) { + needImportTransform = true; + } else { + set.push(url + descriptor); + } + }); + if (!needImportTransform) { + attr.value.content = set.join(", "); + return; + } + } + const compoundExpression = compilerCore.createCompoundExpression([], attr.loc); + imageCandidates.forEach(({ url, descriptor }, index2) => { + if (shouldProcessUrl(url)) { + const { path: path2 } = parseUrl(url); + let exp2; + if (path2) { + const existingImportsIndex = context.imports.findIndex( + (i) => i.path === path2 + ); + if (existingImportsIndex > -1) { + exp2 = compilerCore.createSimpleExpression( + `_imports_${existingImportsIndex}`, + false, + attr.loc, + 3 + ); + } else { + exp2 = compilerCore.createSimpleExpression( + `_imports_${context.imports.length}`, + false, + attr.loc, + 3 + ); + context.imports.push({ exp: exp2, path: path2 }); + } + compoundExpression.children.push(exp2); + } + } else { + const exp2 = compilerCore.createSimpleExpression( + `"${url}"`, + false, + attr.loc, + 3 + ); + compoundExpression.children.push(exp2); + } + const isNotLast = imageCandidates.length - 1 > index2; + if (descriptor && isNotLast) { + compoundExpression.children.push(` + ' ${descriptor}, ' + `); + } else if (descriptor) { + compoundExpression.children.push(` + ' ${descriptor}'`); + } else if (isNotLast) { + compoundExpression.children.push(` + ', ' + `); + } + }); + let exp = compoundExpression; + if (context.hoistStatic) { + exp = context.hoist(compoundExpression); + exp.constType = 3; + } + node.props[index] = { + type: 7, + name: "bind", + arg: compilerCore.createSimpleExpression("srcset", true, attr.loc), + exp, + modifiers: [], + loc: attr.loc + }; + } + }); + } + } +}; + +function commonjsRequire(path) { + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); +} + +var consolidate$2 = {exports: {}}; + +var hasRequiredConsolidate$1; + +function requireConsolidate$1 () { + if (hasRequiredConsolidate$1) return consolidate$2.exports; + hasRequiredConsolidate$1 = 1; + (function (module, exports) { + /* + * Engines which do not support caching of their file contents + * should use the `read()` function defined in consolidate.js + * On top of this, when an engine compiles to a `Function`, + * these functions should either be cached within consolidate.js + * or the engine itself via `options.cache`. This will allow + * users and frameworks to pass `options.cache = true` for + * `NODE_ENV=production`, however edit the file(s) without + * re-loading the application in development. + */ + + /** + * Module dependencies. + */ + + var fs = require$$0; + var path = path$1; + var util = require$$2; + + var join = path.join; + var resolve = path.resolve; + var extname = path.extname; + var dirname = path.dirname; + var isAbsolute = path.isAbsolute; + + var readCache = {}; + + /** + * Require cache. + */ + + var cacheStore = {}; + + /** + * Require cache. + */ + + var requires = {}; + + /** + * Clear the cache. + * + * @api public + */ + + exports.clearCache = function() { + readCache = {}; + cacheStore = {}; + }; + + /** + * Conditionally cache `compiled` template based + * on the `options` filename and `.cache` boolean. + * + * @param {Object} options + * @param {Function} compiled + * @return {Function} + * @api private + */ + + function cache(options, compiled) { + // cachable + if (compiled && options.filename && options.cache) { + delete readCache[options.filename]; + cacheStore[options.filename] = compiled; + return compiled; + } + + // check cache + if (options.filename && options.cache) { + return cacheStore[options.filename]; + } + + return compiled; + } + + /** + * Read `path` with `options` with + * callback `(err, str)`. When `options.cache` + * is true the template string will be cached. + * + * @param {String} options + * @param {Function} cb + * @api private + */ + + function read(path, options, cb) { + var str = readCache[path]; + var cached = options.cache && str && typeof str === 'string'; + + // cached (only if cached is a string and not a compiled template function) + if (cached) return cb(null, str); + + // read + fs.readFile(path, 'utf8', function(err, str) { + if (err) return cb(err); + // remove extraneous utf8 BOM marker + str = str.replace(/^\uFEFF/, ''); + if (options.cache) readCache[path] = str; + cb(null, str); + }); + } + + /** + * Read `path` with `options` with + * callback `(err, str)`. When `options.cache` + * is true the partial string will be cached. + * + * @param {String} options + * @param {Function} fn + * @api private + */ + + function readPartials(path, options, cb) { + if (!options.partials) return cb(); + var keys = Object.keys(options.partials); + var partials = {}; + + function next(index) { + if (index === keys.length) return cb(null, partials); + var key = keys[index]; + var partialPath = options.partials[key]; + + if (partialPath === undefined || partialPath === null || partialPath === false) { + return next(++index); + } + + var file; + if (isAbsolute(partialPath)) { + if (extname(partialPath) !== '') { + file = partialPath; + } else { + file = join(partialPath + extname(path)); + } + } else { + file = join(dirname(path), partialPath + extname(path)); + } + + read(file, options, function(err, str) { + if (err) return cb(err); + partials[key] = str; + next(++index); + }); + } + + next(0); + } + + /** + * promisify + */ + function promisify(cb, fn) { + return new Promise(function(resolve, reject) { + cb = cb || function(err, html) { + if (err) { + return reject(err); + } + resolve(html); + }; + fn(cb); + }); + } + + /** + * fromStringRenderer + */ + + function fromStringRenderer(name) { + return function(path, options, cb) { + options.filename = path; + + return promisify(cb, function(cb) { + readPartials(path, options, function(err, partials) { + var extend = (requires.extend || (requires.extend = require$$2._extend)); + var opts = extend({}, options); + opts.partials = partials; + if (err) return cb(err); + if (cache(opts)) { + exports[name].render('', opts, cb); + } else { + read(path, opts, function(err, str) { + if (err) return cb(err); + exports[name].render(str, opts, cb); + }); + } + }); + }); + }; + } + + /** + * velocity support. + */ + + exports.velocityjs = fromStringRenderer('velocityjs'); + + /** + * velocity string support. + */ + + exports.velocityjs.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.velocityjs || (requires.velocityjs = require('velocityjs')); + try { + options.locals = options; + cb(null, engine.render(str, options).trimLeft()); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Liquid support. + */ + + exports.liquid = fromStringRenderer('liquid'); + + /** + * Liquid string support. + */ + + /** + * Note that in order to get filters and custom tags we've had to push + * all user-defined locals down into @locals. However, just to make things + * backwards-compatible, any property of `options` that is left after + * processing and removing `locals`, `meta`, `filters`, `customTags` and + * `includeDir` will also become a local. + */ + + function _renderTinyliquid(engine, str, options, cb) { + var context = engine.newContext(); + var k; + + /** + * Note that there's a bug in the library that doesn't allow us to pass + * the locals to newContext(), hence looping through the keys: + */ + + if (options.locals) { + for (k in options.locals) { + context.setLocals(k, options.locals[k]); + } + delete options.locals; + } + + if (options.meta) { + context.setLocals('page', options.meta); + delete options.meta; + } + + /** + * Add any defined filters: + */ + + if (options.filters) { + for (k in options.filters) { + context.setFilter(k, options.filters[k]); + } + delete options.filters; + } + + /** + * Set up a callback for the include directory: + */ + + var includeDir = options.includeDir || process.cwd(); + + context.onInclude(function(name, callback) { + var extname = path.extname(name) ? '' : '.liquid'; + var filename = path.resolve(includeDir, name + extname); + + fs.readFile(filename, {encoding: 'utf8'}, function(err, data) { + if (err) return callback(err); + callback(null, engine.parse(data)); + }); + }); + delete options.includeDir; + + /** + * The custom tag functions need to have their results pushed back + * through the parser, so set up a shim before calling the provided + * callback: + */ + + var compileOptions = { + customTags: {} + }; + + if (options.customTags) { + var tagFunctions = options.customTags; + + for (k in options.customTags) { + /*Tell jshint there's no problem with having this function in the loop */ + /*jshint -W083 */ + compileOptions.customTags[k] = function(context, name, body) { + var tpl = tagFunctions[name](body.trim()); + context.astStack.push(engine.parse(tpl)); + }; + /*jshint +W083 */ + } + delete options.customTags; + } + + /** + * Now anything left in `options` becomes a local: + */ + + for (k in options) { + context.setLocals(k, options[k]); + } + + /** + * Finally, execute the template: + */ + + var tmpl = cache(context) || cache(context, engine.compile(str, compileOptions)); + tmpl(context, cb); + } + + exports.liquid.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.liquid; + var Liquid; + + try { + // set up tinyliquid engine + engine = requires.liquid = require('tinyliquid'); + + // use tinyliquid engine + _renderTinyliquid(engine, str, options, cb); + + return; + + } catch (err) { + + // set up liquid-node engine + try { + Liquid = requires.liquid = require('liquid-node'); + engine = new Liquid.Engine(); + } catch (err) { + throw err; + } + + } + + // use liquid-node engine + try { + var locals = options.locals || {}; + + if (options.meta) { + locals.pages = options.meta; + delete options.meta; + } + + /** + * Add any defined filters: + */ + + if (options.filters) { + engine.registerFilters(options.filters); + delete options.filters; + } + + /** + * Set up a callback for the include directory: + */ + + var includeDir = options.includeDir || process.cwd(); + engine.fileSystem = new Liquid.LocalFileSystem(includeDir, 'liquid'); + delete options.includeDir; + + /** + * The custom tag functions need to have their results pushed back + * through the parser, so set up a shim before calling the provided + * callback: + */ + + if (options.customTags) { + var tagFunctions = options.customTags; + + for (k in options.customTags) { + engine.registerTag(k, tagFunctions[k]); + } + delete options.customTags; + } + + /** + * Now anything left in `options` becomes a local: + */ + + for (var k in options) { + locals[k] = options[k]; + } + + /** + * Finally, execute the template: + */ + + return engine + .parseAndRender(str, locals) + .nodeify(function(err, result) { + if (err) { + throw new Error(err); + } else { + return cb(null, result); + } + }); + + } catch (err) { + cb(err); + } + }); + }; + + /** + * Jade support. + */ + + exports.jade = function(path, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.jade; + if (!engine) { + try { + engine = requires.jade = require('jade'); + } catch (err) { + try { + engine = requires.jade = require('then-jade'); + } catch (otherError) { + throw err; + } + } + } + + try { + var tmpl = cache(options) || cache(options, engine.compileFile(path, options)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Jade string support. + */ + + exports.jade.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.jade; + if (!engine) { + try { + engine = requires.jade = require('jade'); + } catch (err) { + try { + engine = requires.jade = require('then-jade'); + } catch (otherError) { + throw err; + } + } + } + + try { + var tmpl = cache(options) || cache(options, engine.compile(str, options)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Dust support. + */ + + exports.dust = fromStringRenderer('dust'); + + /** + * Dust string support. + */ + + exports.dust.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.dust; + if (!engine) { + try { + engine = requires.dust = require('dust'); + } catch (err) { + try { + engine = requires.dust = require('dustjs-helpers'); + } catch (err) { + engine = requires.dust = require('dustjs-linkedin'); + } + } + } + + var ext = 'dust'; + var views = '.'; + + if (options) { + if (options.ext) ext = options.ext; + if (options.views) views = options.views; + if (options.settings && options.settings.views) views = options.settings.views; + } + if (!options || (options && !options.cache)) engine.cache = {}; + + engine.onLoad = function(path, callback) { + if (extname(path) === '') path += '.' + ext; + if (path[0] !== '/') path = views + '/' + path; + read(path, options, callback); + }; + + try { + var templateName; + if (options.filename) { + templateName = options.filename.replace(new RegExp('^' + views + '/'), '').replace(new RegExp('\\.' + ext), ''); + } + + var tmpl = cache(options) || cache(options, engine.compileFn(str, templateName)); + tmpl(options, cb); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Swig support. + */ + + exports.swig = fromStringRenderer('swig'); + + /** + * Swig string support. + */ + + exports.swig.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.swig; + if (!engine) { + try { + engine = requires.swig = require('swig'); + } catch (err) { + try { + engine = requires.swig = require('swig-templates'); + } catch (otherError) { + throw err; + } + } + } + + try { + if (options.cache === true) options.cache = 'memory'; + engine.setDefaults({ cache: options.cache }); + var tmpl = cache(options) || cache(options, engine.compile(str, options)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Razor support. + */ + + exports.razor = function(path, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.razor; + if (!engine) { + try { + engine = requires.razor = require('razor-tmpl'); + + } catch (err) { + + throw err; + + } + } + try { + + var tmpl = cache(options) || cache(options, (locals) => { + console.log('Rendering razor file', path); + return engine.renderFileSync(path, locals); + }); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * razor string support. + */ + + exports.razor.render = function(str, options, cb) { + return promisify(cb, function(cb) { + + try { + var engine = requires.razor = require('razor-tmpl'); + } catch (err) { + throw err; + } + + try { + var tf = engine.compile(str); + var tmpl = cache(options) || cache(options, tf); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Atpl support. + */ + + exports.atpl = fromStringRenderer('atpl'); + + /** + * Atpl string support. + */ + + exports.atpl.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.atpl || (requires.atpl = require('atpl')); + try { + var tmpl = cache(options) || cache(options, engine.compile(str, options)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Liquor support, + */ + + exports.liquor = fromStringRenderer('liquor'); + + /** + * Liquor string support. + */ + + exports.liquor.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.liquor || (requires.liquor = require('liquor')); + try { + var tmpl = cache(options) || cache(options, engine.compile(str, options)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Twig support. + */ + + exports.twig = fromStringRenderer('twig'); + + /** + * Twig string support. + */ + + exports.twig.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.twig || (requires.twig = require('twig').twig); + var templateData = { + data: str, + allowInlineIncludes: options.allowInlineIncludes, + namespaces: options.namespaces, + path: options.path + }; + try { + var tmpl = cache(templateData) || cache(templateData, engine(templateData)); + cb(null, tmpl.render(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * EJS support. + */ + + exports.ejs = fromStringRenderer('ejs'); + + /** + * EJS string support. + */ + + exports.ejs.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.ejs || (requires.ejs = require('ejs')); + try { + var tmpl = cache(options) || cache(options, engine.compile(str, options)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Eco support. + */ + + exports.eco = fromStringRenderer('eco'); + + /** + * Eco string support. + */ + + exports.eco.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.eco || (requires.eco = require('eco')); + try { + cb(null, engine.render(str, options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Jazz support. + */ + + exports.jazz = fromStringRenderer('jazz'); + + /** + * Jazz string support. + */ + + exports.jazz.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.jazz || (requires.jazz = require('jazz')); + try { + var tmpl = cache(options) || cache(options, engine.compile(str, options)); + tmpl.eval(options, function(str) { + cb(null, str); + }); + } catch (err) { + cb(err); + } + }); + }; + + /** + * JQTPL support. + */ + + exports.jqtpl = fromStringRenderer('jqtpl'); + + /** + * JQTPL string support. + */ + + exports.jqtpl.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.jqtpl || (requires.jqtpl = require('jqtpl')); + try { + engine.template(str, str); + cb(null, engine.tmpl(str, options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Haml support. + */ + + exports.haml = fromStringRenderer('haml'); + + /** + * Haml string support. + */ + + exports.haml.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.haml || (requires.haml = require('hamljs')); + try { + options.locals = options; + cb(null, engine.render(str, options).trimLeft()); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Hamlet support. + */ + + exports.hamlet = fromStringRenderer('hamlet'); + + /** + * Hamlet string support. + */ + + exports.hamlet.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.hamlet || (requires.hamlet = require('hamlet')); + try { + options.locals = options; + cb(null, engine.render(str, options).trimLeft()); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Whiskers support. + */ + + exports.whiskers = function(path, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.whiskers || (requires.whiskers = require('whiskers')); + engine.__express(path, options, cb); + }); + }; + + /** + * Whiskers string support. + */ + + exports.whiskers.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.whiskers || (requires.whiskers = require('whiskers')); + try { + cb(null, engine.render(str, options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Coffee-HAML support. + */ + + exports['haml-coffee'] = fromStringRenderer('haml-coffee'); + + /** + * Coffee-HAML string support. + */ + + exports['haml-coffee'].render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires['haml-coffee'] || (requires['haml-coffee'] = require('haml-coffee')); + try { + var tmpl = cache(options) || cache(options, engine.compile(str, options)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Hogan support. + */ + + exports.hogan = fromStringRenderer('hogan'); + + /** + * Hogan string support. + */ + + exports.hogan.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.hogan || (requires.hogan = require('hogan.js')); + try { + var tmpl = cache(options) || cache(options, engine.compile(str, options)); + cb(null, tmpl.render(options, options.partials)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * templayed.js support. + */ + + exports.templayed = fromStringRenderer('templayed'); + + /** + * templayed.js string support. + */ + + exports.templayed.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.templayed || (requires.templayed = require('templayed')); + try { + var tmpl = cache(options) || cache(options, engine(str)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Handlebars support. + */ + + exports.handlebars = fromStringRenderer('handlebars'); + + /** + * Handlebars string support. + */ + + exports.handlebars.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.handlebars || (requires.handlebars = require('handlebars')); + try { + for (var partial in options.partials) { + engine.registerPartial(partial, options.partials[partial]); + } + for (var helper in options.helpers) { + engine.registerHelper(helper, options.helpers[helper]); + } + var tmpl = cache(options) || cache(options, engine.compile(str, options)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Underscore support. + */ + + exports.underscore = fromStringRenderer('underscore'); + + /** + * Underscore string support. + */ + + exports.underscore.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.underscore || (requires.underscore = require('underscore')); + try { + const partials = {}; + for (var partial in options.partials) { + partials[partial] = engine.template(options.partials[partial]); + } + options.partials = partials; + var tmpl = cache(options) || cache(options, engine.template(str, null, options)); + cb(null, tmpl(options).replace(/\n$/, '')); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Lodash support. + */ + + exports.lodash = fromStringRenderer('lodash'); + + /** + * Lodash string support. + */ + + exports.lodash.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.lodash || (requires.lodash = require('lodash')); + try { + var tmpl = cache(options) || cache(options, engine.template(str, options)); + cb(null, tmpl(options).replace(/\n$/, '')); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Pug support. (formerly Jade) + */ + + exports.pug = function(path, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.pug; + if (!engine) { + try { + engine = requires.pug = require('pug'); + } catch (err) { + try { + engine = requires.pug = require('then-pug'); + } catch (otherError) { + throw err; + } + } + } + + try { + var tmpl = cache(options) || cache(options, engine.compileFile(path, options)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Pug string support. + */ + + exports.pug.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.pug; + if (!engine) { + try { + engine = requires.pug = require('pug'); + } catch (err) { + try { + engine = requires.pug = require('then-pug'); + } catch (otherError) { + throw err; + } + } + } + + try { + var tmpl = cache(options) || cache(options, engine.compile(str, options)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * QEJS support. + */ + + exports.qejs = fromStringRenderer('qejs'); + + /** + * QEJS string support. + */ + + exports.qejs.render = function(str, options, cb) { + return promisify(cb, function(cb) { + try { + var engine = requires.qejs || (requires.qejs = require('qejs')); + engine.render(str, options).then(function(result) { + cb(null, result); + }, function(err) { + cb(err); + }).done(); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Walrus support. + */ + + exports.walrus = fromStringRenderer('walrus'); + + /** + * Walrus string support. + */ + + exports.walrus.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.walrus || (requires.walrus = require('walrus')); + try { + var tmpl = cache(options) || cache(options, engine.parse(str)); + cb(null, tmpl.compile(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Mustache support. + */ + + exports.mustache = fromStringRenderer('mustache'); + + /** + * Mustache string support. + */ + + exports.mustache.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.mustache || (requires.mustache = require('mustache')); + try { + cb(null, engine.render(str, options, options.partials)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Just support. + */ + + exports.just = function(path, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.just; + if (!engine) { + var JUST = require('just'); + engine = requires.just = new JUST(); + } + engine.configure({ useCache: options.cache }); + engine.render(path, options, cb); + }); + }; + + /** + * Just string support. + */ + + exports.just.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var JUST = require('just'); + var engine = new JUST({ root: { page: str }}); + engine.render('page', options, cb); + }); + }; + + /** + * ECT support. + */ + + exports.ect = function(path, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.ect; + if (!engine) { + var ECT = require('ect'); + engine = requires.ect = new ECT(options); + } + engine.configure({ cache: options.cache }); + engine.render(path, options, cb); + }); + }; + + /** + * ECT string support. + */ + + exports.ect.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var ECT = require('ect'); + var engine = new ECT({ root: { page: str }}); + engine.render('page', options, cb); + }); + }; + + /** + * mote support. + */ + + exports.mote = fromStringRenderer('mote'); + + /** + * mote string support. + */ + + exports.mote.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.mote || (requires.mote = require('mote')); + try { + var tmpl = cache(options) || cache(options, engine.compile(str)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Toffee support. + */ + + exports.toffee = function(path, options, cb) { + return promisify(cb, function(cb) { + var toffee = requires.toffee || (requires.toffee = require('toffee')); + toffee.__consolidate_engine_render(path, options, cb); + }); + }; + + /** + * Toffee string support. + */ + + exports.toffee.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.toffee || (requires.toffee = require('toffee')); + try { + engine.str_render(str, options, cb); + } catch (err) { + cb(err); + } + }); + }; + + /** + * doT support. + */ + + exports.dot = fromStringRenderer('dot'); + + /** + * doT string support. + */ + + exports.dot.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.dot || (requires.dot = require('dot')); + var extend = (requires.extend || (requires.extend = require$$2._extend)); + try { + var settings = {}; + settings = extend(settings, engine.templateSettings); + settings = extend(settings, options ? options.dot : {}); + var tmpl = cache(options) || cache(options, engine.template(str, settings, options)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * bracket support. + */ + + exports.bracket = fromStringRenderer('bracket'); + + /** + * bracket string support. + */ + + exports.bracket.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.bracket || (requires.bracket = require('bracket-template')); + try { + var tmpl = cache(options) || cache(options, engine.default.compile(str, options)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Ractive support. + */ + + exports.ractive = fromStringRenderer('ractive'); + + /** + * Ractive string support. + */ + + exports.ractive.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var Engine = requires.ractive || (requires.ractive = require('ractive')); + + var template = cache(options) || cache(options, Engine.parse(str)); + options.template = template; + + if (options.data === null || options.data === undefined) { + var extend = (requires.extend || (requires.extend = require$$2._extend)); + + // Shallow clone the options object + options.data = extend({}, options); + + // Remove consolidate-specific properties from the clone + var i; + var length; + var properties = ['template', 'filename', 'cache', 'partials']; + for (i = 0, length = properties.length; i < length; i++) { + var property = properties[i]; + delete options.data[property]; + } + } + + try { + cb(null, new Engine(options).toHTML()); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Nunjucks support. + */ + + exports.nunjucks = fromStringRenderer('nunjucks'); + + /** + * Nunjucks string support. + */ + + exports.nunjucks.render = function(str, options, cb) { + return promisify(cb, function(cb) { + + try { + + var engine = options.nunjucksEnv || requires.nunjucks || (requires.nunjucks = require('nunjucks')); + + var env = engine; + + // deprecated fallback support for express + // <https://github.com/tj/consolidate.js/pull/152> + // <https://github.com/tj/consolidate.js/pull/224> + if (options.settings && options.settings.views) { + env = engine.configure(options.settings.views); + } else if (options.nunjucks && options.nunjucks.configure) { + env = engine.configure.apply(engine, options.nunjucks.configure); + } + + // + // because `renderString` does not initiate loaders + // we must manually create a loader for it based off + // either `options.settings.views` or `options.nunjucks` or `options.nunjucks.root` + // + // <https://github.com/mozilla/nunjucks/issues/730> + // <https://github.com/crocodilejs/node-email-templates/issues/182> + // + + // so instead we simply check if we passed a custom loader + // otherwise we create a simple file based loader + if (options.loader) { + env = new engine.Environment(options.loader); + } else if (options.settings && options.settings.views) { + env = new engine.Environment( + new engine.FileSystemLoader(options.settings.views) + ); + } else if (options.nunjucks && options.nunjucks.loader) { + if (typeof options.nunjucks.loader === 'string') { + env = new engine.Environment(new engine.FileSystemLoader(options.nunjucks.loader)); + } else { + env = new engine.Environment( + new engine.FileSystemLoader( + options.nunjucks.loader[0], + options.nunjucks.loader[1] + ) + ); + } + } + + env.renderString(str, options, cb); + } catch (err) { + throw cb(err); + } + }); + }; + + /** + * HTMLing support. + */ + + exports.htmling = fromStringRenderer('htmling'); + + /** + * HTMLing string support. + */ + + exports.htmling.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.htmling || (requires.htmling = require('htmling')); + try { + var tmpl = cache(options) || cache(options, engine.string(str)); + cb(null, tmpl.render(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Rendering function + */ + function requireReact(module, filename) { + var babel = requires.babel || (requires.babel = require('babel-core')); + + var compiled = babel.transformFileSync(filename, { presets: [ 'react' ] }).code; + + return module._compile(compiled, filename); + } + + exports.requireReact = requireReact; + + /** + * Converting a string into a node module. + */ + function requireReactString(src, filename) { + var babel = requires.babel || (requires.babel = require('babel-core')); + + if (!filename) filename = ''; + var m = new module.constructor(); + filename = filename || ''; + + // Compile Using React + var compiled = babel.transform(src, { presets: [ 'react' ] }).code; + + // Compile as a module + m.paths = module.paths; + m._compile(compiled, filename); + + return m.exports; + } + + /** + * A naive helper to replace {{tags}} with options.tags content + */ + function reactBaseTmpl(data, options) { + + var exp; + var regex; + + // Iterates through the keys in file object + // and interpolate / replace {{key}} with it's value + for (var k in options) { + if (options.hasOwnProperty(k)) { + exp = '{{' + k + '}}'; + regex = new RegExp(exp, 'g'); + if (data.match(regex)) { + data = data.replace(regex, options[k]); + } + } + } + + return data; + } + + /** + * Plates Support. + */ + + exports.plates = fromStringRenderer('plates'); + + /** + * Plates string support. + */ + + exports.plates.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.plates || (requires.plates = require('plates')); + var map = options.map || undefined; + try { + var tmpl = engine.bind(str, options, map); + cb(null, tmpl); + } catch (err) { + cb(err); + } + }); + }; + + /** + * The main render parser for React bsaed templates + */ + function reactRenderer(type) { + + if (commonjsRequire.extensions) { + + // Ensure JSX is transformed on require + if (!commonjsRequire.extensions['.jsx']) { + commonjsRequire.extensions['.jsx'] = requireReact; + } + + // Supporting .react extension as well as test cases + // Using .react extension is not recommended. + if (!commonjsRequire.extensions['.react']) { + commonjsRequire.extensions['.react'] = requireReact; + } + + } + + // Return rendering fx + return function(str, options, cb) { + return promisify(cb, function(cb) { + // React Import + var ReactDOM = requires.ReactDOM || (requires.ReactDOM = require('react-dom/server')); + var react = requires.react || (requires.react = require('react')); + + // Assign HTML Base + var base = options.base; + delete options.base; + + var enableCache = options.cache; + delete options.cache; + + var isNonStatic = options.isNonStatic; + delete options.isNonStatic; + + // Start Conversion + try { + + var Code; + var Factory; + + var baseStr; + var content; + var parsed; + + if (!cache(options)) { + // Parsing + if (type === 'path') { + var path = resolve(str); + delete require.cache[path]; + Code = commonjsRequire(path); + } else { + Code = requireReactString(str); + } + Factory = cache(options, react.createFactory(Code)); + + } else { + Factory = cache(options); + } + + parsed = new Factory(options); + content = (isNonStatic) ? ReactDOM.renderToString(parsed) : ReactDOM.renderToStaticMarkup(parsed); + + if (base) { + baseStr = readCache[str] || fs.readFileSync(resolve(base), 'utf8'); + + if (enableCache) { + readCache[str] = baseStr; + } + + options.content = content; + content = reactBaseTmpl(baseStr, options); + } + + cb(null, content); + + } catch (err) { + cb(err); + } + }); + }; + } + + /** + * React JS Support + */ + exports.react = reactRenderer('path'); + + /** + * React JS string support. + */ + exports.react.render = reactRenderer('string'); + + /** + * ARC-templates support. + */ + + exports['arc-templates'] = fromStringRenderer('arc-templates'); + + /** + * ARC-templates string support. + */ + + exports['arc-templates'].render = function(str, options, cb) { + var readFileWithOptions = util.promisify(read); + var consolidateFileSystem = {}; + consolidateFileSystem.readFile = function(path) { + return readFileWithOptions(path, options); + }; + + return promisify(cb, function(cb) { + try { + var engine = requires['arc-templates']; + if (!engine) { + var Engine = require('arc-templates/dist/es5'); + engine = requires['arc-templates'] = new Engine({ filesystem: consolidateFileSystem }); + } + + var compiler = cache(options) || cache(options, engine.compileString(str, options.filename)); + compiler.then(function(func) { return func(options); }) + .then(function(result) { cb(null, result.content); }) + .catch(cb); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Vash support + */ + exports.vash = fromStringRenderer('vash'); + + /** + * Vash string support + */ + exports.vash.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.vash || (requires.vash = require('vash')); + + try { + // helper system : https://github.com/kirbysayshi/vash#helper-system + if (options.helpers) { + for (var key in options.helpers) { + if (!options.helpers.hasOwnProperty(key) || typeof options.helpers[key] !== 'function') { + continue; + } + engine.helpers[key] = options.helpers[key]; + } + } + + var tmpl = cache(options) || cache(options, engine.compile(str, options)); + tmpl(options, function sealLayout(err, ctx) { + if (err) cb(err); + ctx.finishLayout(); + cb(null, ctx.toString().replace(/\n$/, '')); + }); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Slm support. + */ + + exports.slm = fromStringRenderer('slm'); + + /** + * Slm string support. + */ + + exports.slm.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.slm || (requires.slm = require('slm')); + + try { + var tmpl = cache(options) || cache(options, engine.compile(str, options)); + cb(null, tmpl(options)); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Marko support. + */ + + exports.marko = function(path, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.marko || (requires.marko = require('marko')); + options.writeToDisk = !!options.cache; + + try { + var tmpl = cache(options) || cache(options, engine.load(path, options)); + tmpl.renderToString(options, cb); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Marko string support. + */ + + exports.marko.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.marko || (requires.marko = require('marko')); + options.writeToDisk = !!options.cache; + options.filename = options.filename || 'string.marko'; + + try { + var tmpl = cache(options) || cache(options, engine.load(options.filename, str, options)); + tmpl.renderToString(options, cb); + } catch (err) { + cb(err); + } + }); + }; + + /** + * Teacup support. + */ + exports.teacup = function(path, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.teacup || (requires.teacup = require('teacup/lib/express')); + commonjsRequire.extensions['.teacup'] = commonjsRequire.extensions['.coffee']; + if (path[0] !== '/') { + path = join(process.cwd(), path); + } + if (!options.cache) { + var callback = cb; + cb = function() { + delete require.cache[path]; + callback.apply(this, arguments); + }; + } + engine.renderFile(path, options, cb); + }); + }; + + /** + * Teacup string support. + */ + exports.teacup.render = function(str, options, cb) { + var coffee = require('coffee-script'); + var vm = require('vm'); + var sandbox = { + module: {exports: {}}, + require: commonjsRequire + }; + return promisify(cb, function(cb) { + vm.runInNewContext(coffee.compile(str), sandbox); + var tmpl = sandbox.module.exports; + cb(null, tmpl(options)); + }); + }; + + /** + * Squirrelly support. + */ + + exports.squirrelly = fromStringRenderer('squirrelly'); + + /** + * Squirrelly string support. + */ + + exports.squirrelly.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.squirrelly || (requires.squirrelly = require('squirrelly')); + try { + for (var partial in options.partials) { + engine.definePartial(partial, options.partials[partial]); + } + for (var helper in options.helpers) { + engine.defineHelper(helper, options.helpers[helper]); + } + var tmpl = cache(options) || cache(options, engine.Compile(str, options)); + cb(null, tmpl(options, engine)); + } catch (err) { + cb(err); + } + }); + }; + /** + * Twing support. + */ + + exports.twing = fromStringRenderer('twing'); + + /** + * Twing string support. + */ + + exports.twing.render = function(str, options, cb) { + return promisify(cb, function(cb) { + var engine = requires.twing || (requires.twing = require('twing')); + try { + new engine.TwingEnvironment(new engine.TwingLoaderNull()).createTemplate(str).then((twingTemplate) => { + twingTemplate.render(options).then((rendTmpl) => { + var tmpl = cache(options) || cache(options, rendTmpl); + cb(null, tmpl); + }); + }); + } catch (err) { + cb(err); + } + }); + }; + /** + * expose the instance of the engine + */ + exports.requires = requires; + } (consolidate$2, consolidate$2.exports)); + return consolidate$2.exports; +} + +var consolidate$1; +var hasRequiredConsolidate; + +function requireConsolidate () { + if (hasRequiredConsolidate) return consolidate$1; + hasRequiredConsolidate = 1; + consolidate$1 = /*@__PURE__*/ requireConsolidate$1(); + return consolidate$1; +} + +var consolidateExports = /*@__PURE__*/ requireConsolidate(); +var consolidate = /*@__PURE__*/getDefaultExportFromCjs(consolidateExports); + +const hasWarned = {}; +function warnOnce(msg) { + const isNodeProd = typeof process !== "undefined" && process.env.NODE_ENV === "production"; + if (!isNodeProd && true && !hasWarned[msg]) { + hasWarned[msg] = true; + warn(msg); + } +} +function warn(msg) { + console.warn( + `\x1B[1m\x1B[33m[@vue/compiler-sfc]\x1B[0m\x1B[33m ${msg}\x1B[0m +` + ); +} + +function preprocess$1({ source, filename, preprocessOptions }, preprocessor) { + let res = ""; + let err = null; + preprocessor.render( + source, + { filename, ...preprocessOptions }, + (_err, _res) => { + if (_err) err = _err; + res = _res; + } + ); + if (err) throw err; + return res; +} +function compileTemplate(options) { + const { preprocessLang, preprocessCustomRequire } = options; + const preprocessor = preprocessLang ? preprocessCustomRequire ? preprocessCustomRequire(preprocessLang) : consolidate[preprocessLang] : false; + if (preprocessor) { + try { + return doCompileTemplate({ + ...options, + source: preprocess$1(options, preprocessor), + ast: void 0 + // invalidate AST if template goes through preprocessor + }); + } catch (e) { + return { + code: `export default function render() {}`, + source: options.source, + tips: [], + errors: [e] + }; + } + } else if (preprocessLang) { + return { + code: `export default function render() {}`, + source: options.source, + tips: [ + `Component ${options.filename} uses lang ${preprocessLang} for template. Please install the language preprocessor.` + ], + errors: [ + `Component ${options.filename} uses lang ${preprocessLang} for template, however it is not installed.` + ] + }; + } else { + return doCompileTemplate(options); + } +} +function doCompileTemplate({ + filename, + id, + scoped, + slotted, + inMap, + source, + ast: inAST, + ssr = false, + ssrCssVars, + isProd = false, + compiler, + compilerOptions = {}, + transformAssetUrls +}) { + const errors = []; + const warnings = []; + let nodeTransforms = []; + if (shared.isObject(transformAssetUrls)) { + const assetOptions = normalizeOptions(transformAssetUrls); + nodeTransforms = [ + createAssetUrlTransformWithOptions(assetOptions), + createSrcsetTransformWithOptions(assetOptions) + ]; + } else if (transformAssetUrls !== false) { + nodeTransforms = [transformAssetUrl, transformSrcset]; + } + if (ssr && !ssrCssVars) { + warnOnce( + `compileTemplate is called with \`ssr: true\` but no corresponding \`cssVars\` option.` + ); + } + if (!id) { + warnOnce(`compileTemplate now requires the \`id\` option.`); + id = ""; + } + const shortId = id.replace(/^data-v-/, ""); + const longId = `data-v-${shortId}`; + const defaultCompiler = ssr ? CompilerSSR__namespace : CompilerDOM__namespace; + compiler = compiler || defaultCompiler; + if (compiler !== defaultCompiler) { + inAST = void 0; + } + if (inAST == null ? void 0 : inAST.transformed) { + const newAST = (ssr ? CompilerDOM__namespace : compiler).parse(inAST.source, { + prefixIdentifiers: true, + ...compilerOptions, + parseMode: "sfc", + onError: (e) => errors.push(e) + }); + const template = newAST.children.find( + (node) => node.type === 1 && node.tag === "template" + ); + inAST = compilerCore.createRoot(template.children, inAST.source); + } + let { code, ast, preamble, map } = compiler.compile(inAST || source, { + mode: "module", + prefixIdentifiers: true, + hoistStatic: true, + cacheHandlers: true, + ssrCssVars: ssr && ssrCssVars && ssrCssVars.length ? genCssVarsFromList(ssrCssVars, shortId, isProd, true) : "", + scopeId: scoped ? longId : void 0, + slotted, + sourceMap: true, + ...compilerOptions, + hmr: !isProd, + nodeTransforms: nodeTransforms.concat(compilerOptions.nodeTransforms || []), + filename, + onError: (e) => errors.push(e), + onWarn: (w) => warnings.push(w) + }); + if (inMap && !inAST) { + if (map) { + map = mapLines(inMap, map); + } + if (errors.length) { + patchErrors(errors, source, inMap); + } + } + const tips = warnings.map((w) => { + let msg = w.message; + if (w.loc) { + msg += ` +${shared.generateCodeFrame( + (inAST == null ? void 0 : inAST.source) || source, + w.loc.start.offset, + w.loc.end.offset + )}`; + } + return msg; + }); + return { code, ast, preamble, source, errors, tips, map }; +} +function mapLines(oldMap, newMap) { + if (!oldMap) return newMap; + if (!newMap) return oldMap; + const oldMapConsumer = new sourceMapJs.SourceMapConsumer(oldMap); + const newMapConsumer = new sourceMapJs.SourceMapConsumer(newMap); + const mergedMapGenerator = new sourceMapJs.SourceMapGenerator(); + newMapConsumer.eachMapping((m) => { + if (m.originalLine == null) { + return; + } + const origPosInOldMap = oldMapConsumer.originalPositionFor({ + line: m.originalLine, + column: m.originalColumn + }); + if (origPosInOldMap.source == null) { + return; + } + mergedMapGenerator.addMapping({ + generated: { + line: m.generatedLine, + column: m.generatedColumn + }, + original: { + line: origPosInOldMap.line, + // map line + // use current column, since the oldMap produced by @vue/compiler-sfc + // does not + column: m.originalColumn + }, + source: origPosInOldMap.source, + name: origPosInOldMap.name + }); + }); + const generator = mergedMapGenerator; + oldMapConsumer.sources.forEach((sourceFile) => { + generator._sources.add(sourceFile); + const sourceContent = oldMapConsumer.sourceContentFor(sourceFile); + if (sourceContent != null) { + mergedMapGenerator.setSourceContent(sourceFile, sourceContent); + } + }); + generator._sourceRoot = oldMap.sourceRoot; + generator._file = oldMap.file; + return generator.toJSON(); +} +function patchErrors(errors, source, inMap) { + const originalSource = inMap.sourcesContent[0]; + const offset = originalSource.indexOf(source); + const lineOffset = originalSource.slice(0, offset).split(/\r?\n/).length - 1; + errors.forEach((err) => { + if (err.loc) { + err.loc.start.line += lineOffset; + err.loc.start.offset += offset; + if (err.loc.end !== err.loc.start) { + err.loc.end.line += lineOffset; + err.loc.end.offset += offset; + } + } + }); +} + +const trimPlugin = () => { + return { + postcssPlugin: "vue-sfc-trim", + Once(root) { + root.walk(({ type, raws }) => { + if (type === "rule" || type === "atrule") { + if (raws.before) raws.before = "\n"; + if ("after" in raws && raws.after) raws.after = "\n"; + } + }); + } + }; +}; +trimPlugin.postcss = true; + +var dist$1 = {exports: {}}; + +var processor$1 = {exports: {}}; + +var parser$1 = {exports: {}}; + +var root$1 = {exports: {}}; + +var container$1 = {exports: {}}; + +var node$2 = {exports: {}}; + +var util$2 = {}; + +var unesc$1 = {exports: {}}; + +var hasRequiredUnesc$1; + +function requireUnesc$1 () { + if (hasRequiredUnesc$1) return unesc$1.exports; + hasRequiredUnesc$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = unesc; + // Many thanks for this post which made this migration much easier. + // https://mathiasbynens.be/notes/css-escapes + + /** + * + * @param {string} str + * @returns {[string, number]|undefined} + */ + function gobbleHex(str) { + var lower = str.toLowerCase(); + var hex = ''; + var spaceTerminated = false; + for (var i = 0; i < 6 && lower[i] !== undefined; i++) { + var code = lower.charCodeAt(i); + // check to see if we are dealing with a valid hex char [a-f|0-9] + var valid = code >= 97 && code <= 102 || code >= 48 && code <= 57; + // https://drafts.csswg.org/css-syntax/#consume-escaped-code-point + spaceTerminated = code === 32; + if (!valid) { + break; + } + hex += lower[i]; + } + if (hex.length === 0) { + return undefined; + } + var codePoint = parseInt(hex, 16); + var isSurrogate = codePoint >= 0xD800 && codePoint <= 0xDFFF; + // Add special case for + // "If this number is zero, or is for a surrogate, or is greater than the maximum allowed code point" + // https://drafts.csswg.org/css-syntax/#maximum-allowed-code-point + if (isSurrogate || codePoint === 0x0000 || codePoint > 0x10FFFF) { + return ["\uFFFD", hex.length + (spaceTerminated ? 1 : 0)]; + } + return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)]; + } + var CONTAINS_ESCAPE = /\\/; + function unesc(str) { + var needToProcess = CONTAINS_ESCAPE.test(str); + if (!needToProcess) { + return str; + } + var ret = ""; + for (var i = 0; i < str.length; i++) { + if (str[i] === "\\") { + var gobbled = gobbleHex(str.slice(i + 1, i + 7)); + if (gobbled !== undefined) { + ret += gobbled[0]; + i += gobbled[1]; + continue; + } + + // Retain a pair of \\ if double escaped `\\\\` + // https://github.com/postcss/postcss-selector-parser/commit/268c9a7656fb53f543dc620aa5b73a30ec3ff20e + if (str[i + 1] === "\\") { + ret += "\\"; + i++; + continue; + } + + // if \\ is at the end of the string retain it + // https://github.com/postcss/postcss-selector-parser/commit/01a6b346e3612ce1ab20219acc26abdc259ccefb + if (str.length === i + 1) { + ret += str[i]; + } + continue; + } + ret += str[i]; + } + return ret; + } + module.exports = exports.default; + } (unesc$1, unesc$1.exports)); + return unesc$1.exports; +} + +var getProp$1 = {exports: {}}; + +var hasRequiredGetProp$1; + +function requireGetProp$1 () { + if (hasRequiredGetProp$1) return getProp$1.exports; + hasRequiredGetProp$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = getProp; + function getProp(obj) { + for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + props[_key - 1] = arguments[_key]; + } + while (props.length > 0) { + var prop = props.shift(); + if (!obj[prop]) { + return undefined; + } + obj = obj[prop]; + } + return obj; + } + module.exports = exports.default; + } (getProp$1, getProp$1.exports)); + return getProp$1.exports; +} + +var ensureObject$1 = {exports: {}}; + +var hasRequiredEnsureObject$1; + +function requireEnsureObject$1 () { + if (hasRequiredEnsureObject$1) return ensureObject$1.exports; + hasRequiredEnsureObject$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = ensureObject; + function ensureObject(obj) { + for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + props[_key - 1] = arguments[_key]; + } + while (props.length > 0) { + var prop = props.shift(); + if (!obj[prop]) { + obj[prop] = {}; + } + obj = obj[prop]; + } + } + module.exports = exports.default; + } (ensureObject$1, ensureObject$1.exports)); + return ensureObject$1.exports; +} + +var stripComments$1 = {exports: {}}; + +var hasRequiredStripComments$1; + +function requireStripComments$1 () { + if (hasRequiredStripComments$1) return stripComments$1.exports; + hasRequiredStripComments$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = stripComments; + function stripComments(str) { + var s = ""; + var commentStart = str.indexOf("/*"); + var lastEnd = 0; + while (commentStart >= 0) { + s = s + str.slice(lastEnd, commentStart); + var commentEnd = str.indexOf("*/", commentStart + 2); + if (commentEnd < 0) { + return s; + } + lastEnd = commentEnd + 2; + commentStart = str.indexOf("/*", lastEnd); + } + s = s + str.slice(lastEnd); + return s; + } + module.exports = exports.default; + } (stripComments$1, stripComments$1.exports)); + return stripComments$1.exports; +} + +var hasRequiredUtil$2; + +function requireUtil$2 () { + if (hasRequiredUtil$2) return util$2; + hasRequiredUtil$2 = 1; + + util$2.__esModule = true; + util$2.unesc = util$2.stripComments = util$2.getProp = util$2.ensureObject = void 0; + var _unesc = _interopRequireDefault(/*@__PURE__*/ requireUnesc$1()); + util$2.unesc = _unesc["default"]; + var _getProp = _interopRequireDefault(/*@__PURE__*/ requireGetProp$1()); + util$2.getProp = _getProp["default"]; + var _ensureObject = _interopRequireDefault(/*@__PURE__*/ requireEnsureObject$1()); + util$2.ensureObject = _ensureObject["default"]; + var _stripComments = _interopRequireDefault(/*@__PURE__*/ requireStripComments$1()); + util$2.stripComments = _stripComments["default"]; + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + return util$2; +} + +var hasRequiredNode$2; + +function requireNode$2 () { + if (hasRequiredNode$2) return node$2.exports; + hasRequiredNode$2 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _util = /*@__PURE__*/ requireUtil$2(); + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + var cloneNode = function cloneNode(obj, parent) { + if (typeof obj !== 'object' || obj === null) { + return obj; + } + var cloned = new obj.constructor(); + for (var i in obj) { + if (!obj.hasOwnProperty(i)) { + continue; + } + var value = obj[i]; + var type = typeof value; + if (i === 'parent' && type === 'object') { + if (parent) { + cloned[i] = parent; + } + } else if (value instanceof Array) { + cloned[i] = value.map(function (j) { + return cloneNode(j, cloned); + }); + } else { + cloned[i] = cloneNode(value, cloned); + } + } + return cloned; + }; + var Node = /*#__PURE__*/function () { + function Node(opts) { + if (opts === void 0) { + opts = {}; + } + Object.assign(this, opts); + this.spaces = this.spaces || {}; + this.spaces.before = this.spaces.before || ''; + this.spaces.after = this.spaces.after || ''; + } + var _proto = Node.prototype; + _proto.remove = function remove() { + if (this.parent) { + this.parent.removeChild(this); + } + this.parent = undefined; + return this; + }; + _proto.replaceWith = function replaceWith() { + if (this.parent) { + for (var index in arguments) { + this.parent.insertBefore(this, arguments[index]); + } + this.remove(); + } + return this; + }; + _proto.next = function next() { + return this.parent.at(this.parent.index(this) + 1); + }; + _proto.prev = function prev() { + return this.parent.at(this.parent.index(this) - 1); + }; + _proto.clone = function clone(overrides) { + if (overrides === void 0) { + overrides = {}; + } + var cloned = cloneNode(this); + for (var name in overrides) { + cloned[name] = overrides[name]; + } + return cloned; + } + + /** + * Some non-standard syntax doesn't follow normal escaping rules for css. + * This allows non standard syntax to be appended to an existing property + * by specifying the escaped value. By specifying the escaped value, + * illegal characters are allowed to be directly inserted into css output. + * @param {string} name the property to set + * @param {any} value the unescaped value of the property + * @param {string} valueEscaped optional. the escaped value of the property. + */; + _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) { + if (!this.raws) { + this.raws = {}; + } + var originalValue = this[name]; + var originalEscaped = this.raws[name]; + this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first. + if (originalEscaped || valueEscaped !== value) { + this.raws[name] = (originalEscaped || originalValue) + valueEscaped; + } else { + delete this.raws[name]; // delete any escaped value that was created by the setter. + } + } + + /** + * Some non-standard syntax doesn't follow normal escaping rules for css. + * This allows the escaped value to be specified directly, allowing illegal + * characters to be directly inserted into css output. + * @param {string} name the property to set + * @param {any} value the unescaped value of the property + * @param {string} valueEscaped the escaped value of the property. + */; + _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) { + if (!this.raws) { + this.raws = {}; + } + this[name] = value; // this may trigger a setter that updates raws, so it has to be set first. + this.raws[name] = valueEscaped; + } + + /** + * When you want a value to passed through to CSS directly. This method + * deletes the corresponding raw value causing the stringifier to fallback + * to the unescaped value. + * @param {string} name the property to set. + * @param {any} value The value that is both escaped and unescaped. + */; + _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) { + this[name] = value; // this may trigger a setter that updates raws, so it has to be set first. + if (this.raws) { + delete this.raws[name]; + } + } + + /** + * + * @param {number} line The number (starting with 1) + * @param {number} column The column number (starting with 1) + */; + _proto.isAtPosition = function isAtPosition(line, column) { + if (this.source && this.source.start && this.source.end) { + if (this.source.start.line > line) { + return false; + } + if (this.source.end.line < line) { + return false; + } + if (this.source.start.line === line && this.source.start.column > column) { + return false; + } + if (this.source.end.line === line && this.source.end.column < column) { + return false; + } + return true; + } + return undefined; + }; + _proto.stringifyProperty = function stringifyProperty(name) { + return this.raws && this.raws[name] || this[name]; + }; + _proto.valueToString = function valueToString() { + return String(this.stringifyProperty("value")); + }; + _proto.toString = function toString() { + return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join(''); + }; + _createClass(Node, [{ + key: "rawSpaceBefore", + get: function get() { + var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before; + if (rawSpace === undefined) { + rawSpace = this.spaces && this.spaces.before; + } + return rawSpace || ""; + }, + set: function set(raw) { + (0, _util.ensureObject)(this, "raws", "spaces"); + this.raws.spaces.before = raw; + } + }, { + key: "rawSpaceAfter", + get: function get() { + var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after; + if (rawSpace === undefined) { + rawSpace = this.spaces.after; + } + return rawSpace || ""; + }, + set: function set(raw) { + (0, _util.ensureObject)(this, "raws", "spaces"); + this.raws.spaces.after = raw; + } + }]); + return Node; + }(); + exports["default"] = Node; + module.exports = exports.default; + } (node$2, node$2.exports)); + return node$2.exports; +} + +var types$2 = {}; + +var hasRequiredTypes$1; + +function requireTypes$1 () { + if (hasRequiredTypes$1) return types$2; + hasRequiredTypes$1 = 1; + + types$2.__esModule = true; + types$2.UNIVERSAL = types$2.TAG = types$2.STRING = types$2.SELECTOR = types$2.ROOT = types$2.PSEUDO = types$2.NESTING = types$2.ID = types$2.COMMENT = types$2.COMBINATOR = types$2.CLASS = types$2.ATTRIBUTE = void 0; + var TAG = 'tag'; + types$2.TAG = TAG; + var STRING = 'string'; + types$2.STRING = STRING; + var SELECTOR = 'selector'; + types$2.SELECTOR = SELECTOR; + var ROOT = 'root'; + types$2.ROOT = ROOT; + var PSEUDO = 'pseudo'; + types$2.PSEUDO = PSEUDO; + var NESTING = 'nesting'; + types$2.NESTING = NESTING; + var ID = 'id'; + types$2.ID = ID; + var COMMENT = 'comment'; + types$2.COMMENT = COMMENT; + var COMBINATOR = 'combinator'; + types$2.COMBINATOR = COMBINATOR; + var CLASS = 'class'; + types$2.CLASS = CLASS; + var ATTRIBUTE = 'attribute'; + types$2.ATTRIBUTE = ATTRIBUTE; + var UNIVERSAL = 'universal'; + types$2.UNIVERSAL = UNIVERSAL; + return types$2; +} + +var hasRequiredContainer$1; + +function requireContainer$1 () { + if (hasRequiredContainer$1) return container$1.exports; + hasRequiredContainer$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$2()); + var types = _interopRequireWildcard(/*@__PURE__*/ requireTypes$1()); + function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike) { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Container = /*#__PURE__*/function (_Node) { + _inheritsLoose(Container, _Node); + function Container(opts) { + var _this; + _this = _Node.call(this, opts) || this; + if (!_this.nodes) { + _this.nodes = []; + } + return _this; + } + var _proto = Container.prototype; + _proto.append = function append(selector) { + selector.parent = this; + this.nodes.push(selector); + return this; + }; + _proto.prepend = function prepend(selector) { + selector.parent = this; + this.nodes.unshift(selector); + for (var id in this.indexes) { + this.indexes[id]++; + } + return this; + }; + _proto.at = function at(index) { + return this.nodes[index]; + }; + _proto.index = function index(child) { + if (typeof child === 'number') { + return child; + } + return this.nodes.indexOf(child); + }; + _proto.removeChild = function removeChild(child) { + child = this.index(child); + this.at(child).parent = undefined; + this.nodes.splice(child, 1); + var index; + for (var id in this.indexes) { + index = this.indexes[id]; + if (index >= child) { + this.indexes[id] = index - 1; + } + } + return this; + }; + _proto.removeAll = function removeAll() { + for (var _iterator = _createForOfIteratorHelperLoose(this.nodes), _step; !(_step = _iterator()).done;) { + var node = _step.value; + node.parent = undefined; + } + this.nodes = []; + return this; + }; + _proto.empty = function empty() { + return this.removeAll(); + }; + _proto.insertAfter = function insertAfter(oldNode, newNode) { + var _this$nodes; + newNode.parent = this; + var oldIndex = this.index(oldNode); + var resetNode = []; + for (var i = 2; i < arguments.length; i++) { + resetNode.push(arguments[i]); + } + (_this$nodes = this.nodes).splice.apply(_this$nodes, [oldIndex + 1, 0, newNode].concat(resetNode)); + newNode.parent = this; + var index; + for (var id in this.indexes) { + index = this.indexes[id]; + if (oldIndex < index) { + this.indexes[id] = index + arguments.length - 1; + } + } + return this; + }; + _proto.insertBefore = function insertBefore(oldNode, newNode) { + var _this$nodes2; + newNode.parent = this; + var oldIndex = this.index(oldNode); + var resetNode = []; + for (var i = 2; i < arguments.length; i++) { + resetNode.push(arguments[i]); + } + (_this$nodes2 = this.nodes).splice.apply(_this$nodes2, [oldIndex, 0, newNode].concat(resetNode)); + newNode.parent = this; + var index; + for (var id in this.indexes) { + index = this.indexes[id]; + if (index >= oldIndex) { + this.indexes[id] = index + arguments.length - 1; + } + } + return this; + }; + _proto._findChildAtPosition = function _findChildAtPosition(line, col) { + var found = undefined; + this.each(function (node) { + if (node.atPosition) { + var foundChild = node.atPosition(line, col); + if (foundChild) { + found = foundChild; + return false; + } + } else if (node.isAtPosition(line, col)) { + found = node; + return false; + } + }); + return found; + } + + /** + * Return the most specific node at the line and column number given. + * The source location is based on the original parsed location, locations aren't + * updated as selector nodes are mutated. + * + * Note that this location is relative to the location of the first character + * of the selector, and not the location of the selector in the overall document + * when used in conjunction with postcss. + * + * If not found, returns undefined. + * @param {number} line The line number of the node to find. (1-based index) + * @param {number} col The column number of the node to find. (1-based index) + */; + _proto.atPosition = function atPosition(line, col) { + if (this.isAtPosition(line, col)) { + return this._findChildAtPosition(line, col) || this; + } else { + return undefined; + } + }; + _proto._inferEndPosition = function _inferEndPosition() { + if (this.last && this.last.source && this.last.source.end) { + this.source = this.source || {}; + this.source.end = this.source.end || {}; + Object.assign(this.source.end, this.last.source.end); + } + }; + _proto.each = function each(callback) { + if (!this.lastEach) { + this.lastEach = 0; + } + if (!this.indexes) { + this.indexes = {}; + } + this.lastEach++; + var id = this.lastEach; + this.indexes[id] = 0; + if (!this.length) { + return undefined; + } + var index, result; + while (this.indexes[id] < this.length) { + index = this.indexes[id]; + result = callback(this.at(index), index); + if (result === false) { + break; + } + this.indexes[id] += 1; + } + delete this.indexes[id]; + if (result === false) { + return false; + } + }; + _proto.walk = function walk(callback) { + return this.each(function (node, i) { + var result = callback(node, i); + if (result !== false && node.length) { + result = node.walk(callback); + } + if (result === false) { + return false; + } + }); + }; + _proto.walkAttributes = function walkAttributes(callback) { + var _this2 = this; + return this.walk(function (selector) { + if (selector.type === types.ATTRIBUTE) { + return callback.call(_this2, selector); + } + }); + }; + _proto.walkClasses = function walkClasses(callback) { + var _this3 = this; + return this.walk(function (selector) { + if (selector.type === types.CLASS) { + return callback.call(_this3, selector); + } + }); + }; + _proto.walkCombinators = function walkCombinators(callback) { + var _this4 = this; + return this.walk(function (selector) { + if (selector.type === types.COMBINATOR) { + return callback.call(_this4, selector); + } + }); + }; + _proto.walkComments = function walkComments(callback) { + var _this5 = this; + return this.walk(function (selector) { + if (selector.type === types.COMMENT) { + return callback.call(_this5, selector); + } + }); + }; + _proto.walkIds = function walkIds(callback) { + var _this6 = this; + return this.walk(function (selector) { + if (selector.type === types.ID) { + return callback.call(_this6, selector); + } + }); + }; + _proto.walkNesting = function walkNesting(callback) { + var _this7 = this; + return this.walk(function (selector) { + if (selector.type === types.NESTING) { + return callback.call(_this7, selector); + } + }); + }; + _proto.walkPseudos = function walkPseudos(callback) { + var _this8 = this; + return this.walk(function (selector) { + if (selector.type === types.PSEUDO) { + return callback.call(_this8, selector); + } + }); + }; + _proto.walkTags = function walkTags(callback) { + var _this9 = this; + return this.walk(function (selector) { + if (selector.type === types.TAG) { + return callback.call(_this9, selector); + } + }); + }; + _proto.walkUniversals = function walkUniversals(callback) { + var _this10 = this; + return this.walk(function (selector) { + if (selector.type === types.UNIVERSAL) { + return callback.call(_this10, selector); + } + }); + }; + _proto.split = function split(callback) { + var _this11 = this; + var current = []; + return this.reduce(function (memo, node, index) { + var split = callback.call(_this11, node); + current.push(node); + if (split) { + memo.push(current); + current = []; + } else if (index === _this11.length - 1) { + memo.push(current); + } + return memo; + }, []); + }; + _proto.map = function map(callback) { + return this.nodes.map(callback); + }; + _proto.reduce = function reduce(callback, memo) { + return this.nodes.reduce(callback, memo); + }; + _proto.every = function every(callback) { + return this.nodes.every(callback); + }; + _proto.some = function some(callback) { + return this.nodes.some(callback); + }; + _proto.filter = function filter(callback) { + return this.nodes.filter(callback); + }; + _proto.sort = function sort(callback) { + return this.nodes.sort(callback); + }; + _proto.toString = function toString() { + return this.map(String).join(''); + }; + _createClass(Container, [{ + key: "first", + get: function get() { + return this.at(0); + } + }, { + key: "last", + get: function get() { + return this.at(this.length - 1); + } + }, { + key: "length", + get: function get() { + return this.nodes.length; + } + }]); + return Container; + }(_node["default"]); + exports["default"] = Container; + module.exports = exports.default; + } (container$1, container$1.exports)); + return container$1.exports; +} + +var hasRequiredRoot$1; + +function requireRoot$1 () { + if (hasRequiredRoot$1) return root$1.exports; + hasRequiredRoot$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _container = _interopRequireDefault(/*@__PURE__*/ requireContainer$1()); + var _types = /*@__PURE__*/ requireTypes$1(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Root = /*#__PURE__*/function (_Container) { + _inheritsLoose(Root, _Container); + function Root(opts) { + var _this; + _this = _Container.call(this, opts) || this; + _this.type = _types.ROOT; + return _this; + } + var _proto = Root.prototype; + _proto.toString = function toString() { + var str = this.reduce(function (memo, selector) { + memo.push(String(selector)); + return memo; + }, []).join(','); + return this.trailingComma ? str + ',' : str; + }; + _proto.error = function error(message, options) { + if (this._error) { + return this._error(message, options); + } else { + return new Error(message); + } + }; + _createClass(Root, [{ + key: "errorGenerator", + set: function set(handler) { + this._error = handler; + } + }]); + return Root; + }(_container["default"]); + exports["default"] = Root; + module.exports = exports.default; + } (root$1, root$1.exports)); + return root$1.exports; +} + +var selector$1 = {exports: {}}; + +var hasRequiredSelector$1; + +function requireSelector$1 () { + if (hasRequiredSelector$1) return selector$1.exports; + hasRequiredSelector$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _container = _interopRequireDefault(/*@__PURE__*/ requireContainer$1()); + var _types = /*@__PURE__*/ requireTypes$1(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Selector = /*#__PURE__*/function (_Container) { + _inheritsLoose(Selector, _Container); + function Selector(opts) { + var _this; + _this = _Container.call(this, opts) || this; + _this.type = _types.SELECTOR; + return _this; + } + return Selector; + }(_container["default"]); + exports["default"] = Selector; + module.exports = exports.default; + } (selector$1, selector$1.exports)); + return selector$1.exports; +} + +var className$1 = {exports: {}}; + +/*! https://mths.be/cssesc v3.0.0 by @mathias */ + +var cssesc_1; +var hasRequiredCssesc; + +function requireCssesc () { + if (hasRequiredCssesc) return cssesc_1; + hasRequiredCssesc = 1; + + var object = {}; + var hasOwnProperty = object.hasOwnProperty; + var merge = function merge(options, defaults) { + if (!options) { + return defaults; + } + var result = {}; + for (var key in defaults) { + // `if (defaults.hasOwnProperty(key) { … }` is not needed here, since + // only recognized option names are used. + result[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key]; + } + return result; + }; + + var regexAnySingleEscape = /[ -,\.\/:-@\[-\^`\{-~]/; + var regexSingleEscape = /[ -,\.\/:-@\[\]\^`\{-~]/; + var regexExcessiveSpaces = /(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g; + + // https://mathiasbynens.be/notes/css-escapes#css + var cssesc = function cssesc(string, options) { + options = merge(options, cssesc.options); + if (options.quotes != 'single' && options.quotes != 'double') { + options.quotes = 'single'; + } + var quote = options.quotes == 'double' ? '"' : '\''; + var isIdentifier = options.isIdentifier; + + var firstChar = string.charAt(0); + var output = ''; + var counter = 0; + var length = string.length; + while (counter < length) { + var character = string.charAt(counter++); + var codePoint = character.charCodeAt(); + var value = void 0; + // If it’s not a printable ASCII character… + if (codePoint < 0x20 || codePoint > 0x7E) { + if (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) { + // It’s a high surrogate, and there is a next character. + var extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { + // next character is low surrogate + codePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000; + } else { + // It’s an unmatched surrogate; only append this code unit, in case + // the next code unit is the high surrogate of a surrogate pair. + counter--; + } + } + value = '\\' + codePoint.toString(16).toUpperCase() + ' '; + } else { + if (options.escapeEverything) { + if (regexAnySingleEscape.test(character)) { + value = '\\' + character; + } else { + value = '\\' + codePoint.toString(16).toUpperCase() + ' '; + } + } else if (/[\t\n\f\r\x0B]/.test(character)) { + value = '\\' + codePoint.toString(16).toUpperCase() + ' '; + } else if (character == '\\' || !isIdentifier && (character == '"' && quote == character || character == '\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) { + value = '\\' + character; + } else { + value = character; + } + } + output += value; + } + + if (isIdentifier) { + if (/^-[-\d]/.test(output)) { + output = '\\-' + output.slice(1); + } else if (/\d/.test(firstChar)) { + output = '\\3' + firstChar + ' ' + output.slice(1); + } + } + + // Remove spaces after `\HEX` escapes that are not followed by a hex digit, + // since they’re redundant. Note that this is only possible if the escape + // sequence isn’t preceded by an odd number of backslashes. + output = output.replace(regexExcessiveSpaces, function ($0, $1, $2) { + if ($1 && $1.length % 2) { + // It’s not safe to remove the space, so don’t. + return $0; + } + // Strip the space. + return ($1 || '') + $2; + }); + + if (!isIdentifier && options.wrap) { + return quote + output + quote; + } + return output; + }; + + // Expose default options (so they can be overridden globally). + cssesc.options = { + 'escapeEverything': false, + 'isIdentifier': false, + 'quotes': 'single', + 'wrap': false + }; + + cssesc.version = '3.0.0'; + + cssesc_1 = cssesc; + return cssesc_1; +} + +var hasRequiredClassName$1; + +function requireClassName$1 () { + if (hasRequiredClassName$1) return className$1.exports; + hasRequiredClassName$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _cssesc = _interopRequireDefault(/*@__PURE__*/ requireCssesc()); + var _util = /*@__PURE__*/ requireUtil$2(); + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$2()); + var _types = /*@__PURE__*/ requireTypes$1(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var ClassName = /*#__PURE__*/function (_Node) { + _inheritsLoose(ClassName, _Node); + function ClassName(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.CLASS; + _this._constructed = true; + return _this; + } + var _proto = ClassName.prototype; + _proto.valueToString = function valueToString() { + return '.' + _Node.prototype.valueToString.call(this); + }; + _createClass(ClassName, [{ + key: "value", + get: function get() { + return this._value; + }, + set: function set(v) { + if (this._constructed) { + var escaped = (0, _cssesc["default"])(v, { + isIdentifier: true + }); + if (escaped !== v) { + (0, _util.ensureObject)(this, "raws"); + this.raws.value = escaped; + } else if (this.raws) { + delete this.raws.value; + } + } + this._value = v; + } + }]); + return ClassName; + }(_node["default"]); + exports["default"] = ClassName; + module.exports = exports.default; + } (className$1, className$1.exports)); + return className$1.exports; +} + +var comment$1 = {exports: {}}; + +var hasRequiredComment$1; + +function requireComment$1 () { + if (hasRequiredComment$1) return comment$1.exports; + hasRequiredComment$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$2()); + var _types = /*@__PURE__*/ requireTypes$1(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Comment = /*#__PURE__*/function (_Node) { + _inheritsLoose(Comment, _Node); + function Comment(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.COMMENT; + return _this; + } + return Comment; + }(_node["default"]); + exports["default"] = Comment; + module.exports = exports.default; + } (comment$1, comment$1.exports)); + return comment$1.exports; +} + +var id$1 = {exports: {}}; + +var hasRequiredId$1; + +function requireId$1 () { + if (hasRequiredId$1) return id$1.exports; + hasRequiredId$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$2()); + var _types = /*@__PURE__*/ requireTypes$1(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var ID = /*#__PURE__*/function (_Node) { + _inheritsLoose(ID, _Node); + function ID(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.ID; + return _this; + } + var _proto = ID.prototype; + _proto.valueToString = function valueToString() { + return '#' + _Node.prototype.valueToString.call(this); + }; + return ID; + }(_node["default"]); + exports["default"] = ID; + module.exports = exports.default; + } (id$1, id$1.exports)); + return id$1.exports; +} + +var tag$1 = {exports: {}}; + +var namespace$1 = {exports: {}}; + +var hasRequiredNamespace$1; + +function requireNamespace$1 () { + if (hasRequiredNamespace$1) return namespace$1.exports; + hasRequiredNamespace$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _cssesc = _interopRequireDefault(/*@__PURE__*/ requireCssesc()); + var _util = /*@__PURE__*/ requireUtil$2(); + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$2()); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Namespace = /*#__PURE__*/function (_Node) { + _inheritsLoose(Namespace, _Node); + function Namespace() { + return _Node.apply(this, arguments) || this; + } + var _proto = Namespace.prototype; + _proto.qualifiedName = function qualifiedName(value) { + if (this.namespace) { + return this.namespaceString + "|" + value; + } else { + return value; + } + }; + _proto.valueToString = function valueToString() { + return this.qualifiedName(_Node.prototype.valueToString.call(this)); + }; + _createClass(Namespace, [{ + key: "namespace", + get: function get() { + return this._namespace; + }, + set: function set(namespace) { + if (namespace === true || namespace === "*" || namespace === "&") { + this._namespace = namespace; + if (this.raws) { + delete this.raws.namespace; + } + return; + } + var escaped = (0, _cssesc["default"])(namespace, { + isIdentifier: true + }); + this._namespace = namespace; + if (escaped !== namespace) { + (0, _util.ensureObject)(this, "raws"); + this.raws.namespace = escaped; + } else if (this.raws) { + delete this.raws.namespace; + } + } + }, { + key: "ns", + get: function get() { + return this._namespace; + }, + set: function set(namespace) { + this.namespace = namespace; + } + }, { + key: "namespaceString", + get: function get() { + if (this.namespace) { + var ns = this.stringifyProperty("namespace"); + if (ns === true) { + return ''; + } else { + return ns; + } + } else { + return ''; + } + } + }]); + return Namespace; + }(_node["default"]); + exports["default"] = Namespace; + module.exports = exports.default; + } (namespace$1, namespace$1.exports)); + return namespace$1.exports; +} + +var hasRequiredTag$1; + +function requireTag$1 () { + if (hasRequiredTag$1) return tag$1.exports; + hasRequiredTag$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _namespace = _interopRequireDefault(/*@__PURE__*/ requireNamespace$1()); + var _types = /*@__PURE__*/ requireTypes$1(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Tag = /*#__PURE__*/function (_Namespace) { + _inheritsLoose(Tag, _Namespace); + function Tag(opts) { + var _this; + _this = _Namespace.call(this, opts) || this; + _this.type = _types.TAG; + return _this; + } + return Tag; + }(_namespace["default"]); + exports["default"] = Tag; + module.exports = exports.default; + } (tag$1, tag$1.exports)); + return tag$1.exports; +} + +var string$1 = {exports: {}}; + +var hasRequiredString$1; + +function requireString$1 () { + if (hasRequiredString$1) return string$1.exports; + hasRequiredString$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$2()); + var _types = /*@__PURE__*/ requireTypes$1(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var String = /*#__PURE__*/function (_Node) { + _inheritsLoose(String, _Node); + function String(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.STRING; + return _this; + } + return String; + }(_node["default"]); + exports["default"] = String; + module.exports = exports.default; + } (string$1, string$1.exports)); + return string$1.exports; +} + +var pseudo$1 = {exports: {}}; + +var hasRequiredPseudo$1; + +function requirePseudo$1 () { + if (hasRequiredPseudo$1) return pseudo$1.exports; + hasRequiredPseudo$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _container = _interopRequireDefault(/*@__PURE__*/ requireContainer$1()); + var _types = /*@__PURE__*/ requireTypes$1(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Pseudo = /*#__PURE__*/function (_Container) { + _inheritsLoose(Pseudo, _Container); + function Pseudo(opts) { + var _this; + _this = _Container.call(this, opts) || this; + _this.type = _types.PSEUDO; + return _this; + } + var _proto = Pseudo.prototype; + _proto.toString = function toString() { + var params = this.length ? '(' + this.map(String).join(',') + ')' : ''; + return [this.rawSpaceBefore, this.stringifyProperty("value"), params, this.rawSpaceAfter].join(''); + }; + return Pseudo; + }(_container["default"]); + exports["default"] = Pseudo; + module.exports = exports.default; + } (pseudo$1, pseudo$1.exports)); + return pseudo$1.exports; +} + +var attribute$1 = {}; + +var node$1; +var hasRequiredNode$1; + +function requireNode$1 () { + if (hasRequiredNode$1) return node$1; + hasRequiredNode$1 = 1; + /** + * For Node.js, simply re-export the core `util.deprecate` function. + */ + + node$1 = require$$2.deprecate; + return node$1; +} + +var hasRequiredAttribute$1; + +function requireAttribute$1 () { + if (hasRequiredAttribute$1) return attribute$1; + hasRequiredAttribute$1 = 1; + (function (exports) { + + exports.__esModule = true; + exports["default"] = void 0; + exports.unescapeValue = unescapeValue; + var _cssesc = _interopRequireDefault(/*@__PURE__*/ requireCssesc()); + var _unesc = _interopRequireDefault(/*@__PURE__*/ requireUnesc$1()); + var _namespace = _interopRequireDefault(/*@__PURE__*/ requireNamespace$1()); + var _types = /*@__PURE__*/ requireTypes$1(); + var _CSSESC_QUOTE_OPTIONS; + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var deprecate = /*@__PURE__*/ requireNode$1(); + var WRAPPED_IN_QUOTES = /^('|")([^]*)\1$/; + var warnOfDeprecatedValueAssignment = deprecate(function () {}, "Assigning an attribute a value containing characters that might need to be escaped is deprecated. " + "Call attribute.setValue() instead."); + var warnOfDeprecatedQuotedAssignment = deprecate(function () {}, "Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead."); + var warnOfDeprecatedConstructor = deprecate(function () {}, "Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now."); + function unescapeValue(value) { + var deprecatedUsage = false; + var quoteMark = null; + var unescaped = value; + var m = unescaped.match(WRAPPED_IN_QUOTES); + if (m) { + quoteMark = m[1]; + unescaped = m[2]; + } + unescaped = (0, _unesc["default"])(unescaped); + if (unescaped !== value) { + deprecatedUsage = true; + } + return { + deprecatedUsage: deprecatedUsage, + unescaped: unescaped, + quoteMark: quoteMark + }; + } + function handleDeprecatedContructorOpts(opts) { + if (opts.quoteMark !== undefined) { + return opts; + } + if (opts.value === undefined) { + return opts; + } + warnOfDeprecatedConstructor(); + var _unescapeValue = unescapeValue(opts.value), + quoteMark = _unescapeValue.quoteMark, + unescaped = _unescapeValue.unescaped; + if (!opts.raws) { + opts.raws = {}; + } + if (opts.raws.value === undefined) { + opts.raws.value = opts.value; + } + opts.value = unescaped; + opts.quoteMark = quoteMark; + return opts; + } + var Attribute = /*#__PURE__*/function (_Namespace) { + _inheritsLoose(Attribute, _Namespace); + function Attribute(opts) { + var _this; + if (opts === void 0) { + opts = {}; + } + _this = _Namespace.call(this, handleDeprecatedContructorOpts(opts)) || this; + _this.type = _types.ATTRIBUTE; + _this.raws = _this.raws || {}; + Object.defineProperty(_this.raws, 'unquoted', { + get: deprecate(function () { + return _this.value; + }, "attr.raws.unquoted is deprecated. Call attr.value instead."), + set: deprecate(function () { + return _this.value; + }, "Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.") + }); + _this._constructed = true; + return _this; + } + + /** + * Returns the Attribute's value quoted such that it would be legal to use + * in the value of a css file. The original value's quotation setting + * used for stringification is left unchanged. See `setValue(value, options)` + * if you want to control the quote settings of a new value for the attribute. + * + * You can also change the quotation used for the current value by setting quoteMark. + * + * Options: + * * quoteMark {'"' | "'" | null} - Use this value to quote the value. If this + * option is not set, the original value for quoteMark will be used. If + * indeterminate, a double quote is used. The legal values are: + * * `null` - the value will be unquoted and characters will be escaped as necessary. + * * `'` - the value will be quoted with a single quote and single quotes are escaped. + * * `"` - the value will be quoted with a double quote and double quotes are escaped. + * * preferCurrentQuoteMark {boolean} - if true, prefer the source quote mark + * over the quoteMark option value. + * * smart {boolean} - if true, will select a quote mark based on the value + * and the other options specified here. See the `smartQuoteMark()` + * method. + **/ + var _proto = Attribute.prototype; + _proto.getQuotedValue = function getQuotedValue(options) { + if (options === void 0) { + options = {}; + } + var quoteMark = this._determineQuoteMark(options); + var cssescopts = CSSESC_QUOTE_OPTIONS[quoteMark]; + var escaped = (0, _cssesc["default"])(this._value, cssescopts); + return escaped; + }; + _proto._determineQuoteMark = function _determineQuoteMark(options) { + return options.smart ? this.smartQuoteMark(options) : this.preferredQuoteMark(options); + } + + /** + * Set the unescaped value with the specified quotation options. The value + * provided must not include any wrapping quote marks -- those quotes will + * be interpreted as part of the value and escaped accordingly. + */; + _proto.setValue = function setValue(value, options) { + if (options === void 0) { + options = {}; + } + this._value = value; + this._quoteMark = this._determineQuoteMark(options); + this._syncRawValue(); + } + + /** + * Intelligently select a quoteMark value based on the value's contents. If + * the value is a legal CSS ident, it will not be quoted. Otherwise a quote + * mark will be picked that minimizes the number of escapes. + * + * If there's no clear winner, the quote mark from these options is used, + * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is + * true). If the quoteMark is unspecified, a double quote is used. + * + * @param options This takes the quoteMark and preferCurrentQuoteMark options + * from the quoteValue method. + */; + _proto.smartQuoteMark = function smartQuoteMark(options) { + var v = this.value; + var numSingleQuotes = v.replace(/[^']/g, '').length; + var numDoubleQuotes = v.replace(/[^"]/g, '').length; + if (numSingleQuotes + numDoubleQuotes === 0) { + var escaped = (0, _cssesc["default"])(v, { + isIdentifier: true + }); + if (escaped === v) { + return Attribute.NO_QUOTE; + } else { + var pref = this.preferredQuoteMark(options); + if (pref === Attribute.NO_QUOTE) { + // pick a quote mark that isn't none and see if it's smaller + var quote = this.quoteMark || options.quoteMark || Attribute.DOUBLE_QUOTE; + var opts = CSSESC_QUOTE_OPTIONS[quote]; + var quoteValue = (0, _cssesc["default"])(v, opts); + if (quoteValue.length < escaped.length) { + return quote; + } + } + return pref; + } + } else if (numDoubleQuotes === numSingleQuotes) { + return this.preferredQuoteMark(options); + } else if (numDoubleQuotes < numSingleQuotes) { + return Attribute.DOUBLE_QUOTE; + } else { + return Attribute.SINGLE_QUOTE; + } + } + + /** + * Selects the preferred quote mark based on the options and the current quote mark value. + * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)` + * instead. + */; + _proto.preferredQuoteMark = function preferredQuoteMark(options) { + var quoteMark = options.preferCurrentQuoteMark ? this.quoteMark : options.quoteMark; + if (quoteMark === undefined) { + quoteMark = options.preferCurrentQuoteMark ? options.quoteMark : this.quoteMark; + } + if (quoteMark === undefined) { + quoteMark = Attribute.DOUBLE_QUOTE; + } + return quoteMark; + }; + _proto._syncRawValue = function _syncRawValue() { + var rawValue = (0, _cssesc["default"])(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]); + if (rawValue === this._value) { + if (this.raws) { + delete this.raws.value; + } + } else { + this.raws.value = rawValue; + } + }; + _proto._handleEscapes = function _handleEscapes(prop, value) { + if (this._constructed) { + var escaped = (0, _cssesc["default"])(value, { + isIdentifier: true + }); + if (escaped !== value) { + this.raws[prop] = escaped; + } else { + delete this.raws[prop]; + } + } + }; + _proto._spacesFor = function _spacesFor(name) { + var attrSpaces = { + before: '', + after: '' + }; + var spaces = this.spaces[name] || {}; + var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {}; + return Object.assign(attrSpaces, spaces, rawSpaces); + }; + _proto._stringFor = function _stringFor(name, spaceName, concat) { + if (spaceName === void 0) { + spaceName = name; + } + if (concat === void 0) { + concat = defaultAttrConcat; + } + var attrSpaces = this._spacesFor(spaceName); + return concat(this.stringifyProperty(name), attrSpaces); + } + + /** + * returns the offset of the attribute part specified relative to the + * start of the node of the output string. + * + * * "ns" - alias for "namespace" + * * "namespace" - the namespace if it exists. + * * "attribute" - the attribute name + * * "attributeNS" - the start of the attribute or its namespace + * * "operator" - the match operator of the attribute + * * "value" - The value (string or identifier) + * * "insensitive" - the case insensitivity flag; + * @param part One of the possible values inside an attribute. + * @returns -1 if the name is invalid or the value doesn't exist in this attribute. + */; + _proto.offsetOf = function offsetOf(name) { + var count = 1; + var attributeSpaces = this._spacesFor("attribute"); + count += attributeSpaces.before.length; + if (name === "namespace" || name === "ns") { + return this.namespace ? count : -1; + } + if (name === "attributeNS") { + return count; + } + count += this.namespaceString.length; + if (this.namespace) { + count += 1; + } + if (name === "attribute") { + return count; + } + count += this.stringifyProperty("attribute").length; + count += attributeSpaces.after.length; + var operatorSpaces = this._spacesFor("operator"); + count += operatorSpaces.before.length; + var operator = this.stringifyProperty("operator"); + if (name === "operator") { + return operator ? count : -1; + } + count += operator.length; + count += operatorSpaces.after.length; + var valueSpaces = this._spacesFor("value"); + count += valueSpaces.before.length; + var value = this.stringifyProperty("value"); + if (name === "value") { + return value ? count : -1; + } + count += value.length; + count += valueSpaces.after.length; + var insensitiveSpaces = this._spacesFor("insensitive"); + count += insensitiveSpaces.before.length; + if (name === "insensitive") { + return this.insensitive ? count : -1; + } + return -1; + }; + _proto.toString = function toString() { + var _this2 = this; + var selector = [this.rawSpaceBefore, '[']; + selector.push(this._stringFor('qualifiedAttribute', 'attribute')); + if (this.operator && (this.value || this.value === '')) { + selector.push(this._stringFor('operator')); + selector.push(this._stringFor('value')); + selector.push(this._stringFor('insensitiveFlag', 'insensitive', function (attrValue, attrSpaces) { + if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) { + attrSpaces.before = " "; + } + return defaultAttrConcat(attrValue, attrSpaces); + })); + } + selector.push(']'); + selector.push(this.rawSpaceAfter); + return selector.join(''); + }; + _createClass(Attribute, [{ + key: "quoted", + get: function get() { + var qm = this.quoteMark; + return qm === "'" || qm === '"'; + }, + set: function set(value) { + warnOfDeprecatedQuotedAssignment(); + } + + /** + * returns a single (`'`) or double (`"`) quote character if the value is quoted. + * returns `null` if the value is not quoted. + * returns `undefined` if the quotation state is unknown (this can happen when + * the attribute is constructed without specifying a quote mark.) + */ + }, { + key: "quoteMark", + get: function get() { + return this._quoteMark; + } + + /** + * Set the quote mark to be used by this attribute's value. + * If the quote mark changes, the raw (escaped) value at `attr.raws.value` of the attribute + * value is updated accordingly. + * + * @param {"'" | '"' | null} quoteMark The quote mark or `null` if the value should be unquoted. + */, + set: function set(quoteMark) { + if (!this._constructed) { + this._quoteMark = quoteMark; + return; + } + if (this._quoteMark !== quoteMark) { + this._quoteMark = quoteMark; + this._syncRawValue(); + } + } + }, { + key: "qualifiedAttribute", + get: function get() { + return this.qualifiedName(this.raws.attribute || this.attribute); + } + }, { + key: "insensitiveFlag", + get: function get() { + return this.insensitive ? 'i' : ''; + } + }, { + key: "value", + get: function get() { + return this._value; + }, + set: + /** + * Before 3.0, the value had to be set to an escaped value including any wrapped + * quote marks. In 3.0, the semantics of `Attribute.value` changed so that the value + * is unescaped during parsing and any quote marks are removed. + * + * Because the ambiguity of this semantic change, if you set `attr.value = newValue`, + * a deprecation warning is raised when the new value contains any characters that would + * require escaping (including if it contains wrapped quotes). + * + * Instead, you should call `attr.setValue(newValue, opts)` and pass options that describe + * how the new value is quoted. + */ + function set(v) { + if (this._constructed) { + var _unescapeValue2 = unescapeValue(v), + deprecatedUsage = _unescapeValue2.deprecatedUsage, + unescaped = _unescapeValue2.unescaped, + quoteMark = _unescapeValue2.quoteMark; + if (deprecatedUsage) { + warnOfDeprecatedValueAssignment(); + } + if (unescaped === this._value && quoteMark === this._quoteMark) { + return; + } + this._value = unescaped; + this._quoteMark = quoteMark; + this._syncRawValue(); + } else { + this._value = v; + } + } + }, { + key: "insensitive", + get: function get() { + return this._insensitive; + } + + /** + * Set the case insensitive flag. + * If the case insensitive flag changes, the raw (escaped) value at `attr.raws.insensitiveFlag` + * of the attribute is updated accordingly. + * + * @param {true | false} insensitive true if the attribute should match case-insensitively. + */, + set: function set(insensitive) { + if (!insensitive) { + this._insensitive = false; + + // "i" and "I" can be used in "this.raws.insensitiveFlag" to store the original notation. + // When setting `attr.insensitive = false` both should be erased to ensure correct serialization. + if (this.raws && (this.raws.insensitiveFlag === 'I' || this.raws.insensitiveFlag === 'i')) { + this.raws.insensitiveFlag = undefined; + } + } + this._insensitive = insensitive; + } + }, { + key: "attribute", + get: function get() { + return this._attribute; + }, + set: function set(name) { + this._handleEscapes("attribute", name); + this._attribute = name; + } + }]); + return Attribute; + }(_namespace["default"]); + exports["default"] = Attribute; + Attribute.NO_QUOTE = null; + Attribute.SINGLE_QUOTE = "'"; + Attribute.DOUBLE_QUOTE = '"'; + var CSSESC_QUOTE_OPTIONS = (_CSSESC_QUOTE_OPTIONS = { + "'": { + quotes: 'single', + wrap: true + }, + '"': { + quotes: 'double', + wrap: true + } + }, _CSSESC_QUOTE_OPTIONS[null] = { + isIdentifier: true + }, _CSSESC_QUOTE_OPTIONS); + function defaultAttrConcat(attrValue, attrSpaces) { + return "" + attrSpaces.before + attrValue + attrSpaces.after; + } + } (attribute$1)); + return attribute$1; +} + +var universal$1 = {exports: {}}; + +var hasRequiredUniversal$1; + +function requireUniversal$1 () { + if (hasRequiredUniversal$1) return universal$1.exports; + hasRequiredUniversal$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _namespace = _interopRequireDefault(/*@__PURE__*/ requireNamespace$1()); + var _types = /*@__PURE__*/ requireTypes$1(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Universal = /*#__PURE__*/function (_Namespace) { + _inheritsLoose(Universal, _Namespace); + function Universal(opts) { + var _this; + _this = _Namespace.call(this, opts) || this; + _this.type = _types.UNIVERSAL; + _this.value = '*'; + return _this; + } + return Universal; + }(_namespace["default"]); + exports["default"] = Universal; + module.exports = exports.default; + } (universal$1, universal$1.exports)); + return universal$1.exports; +} + +var combinator$1 = {exports: {}}; + +var hasRequiredCombinator$1; + +function requireCombinator$1 () { + if (hasRequiredCombinator$1) return combinator$1.exports; + hasRequiredCombinator$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$2()); + var _types = /*@__PURE__*/ requireTypes$1(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Combinator = /*#__PURE__*/function (_Node) { + _inheritsLoose(Combinator, _Node); + function Combinator(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.COMBINATOR; + return _this; + } + return Combinator; + }(_node["default"]); + exports["default"] = Combinator; + module.exports = exports.default; + } (combinator$1, combinator$1.exports)); + return combinator$1.exports; +} + +var nesting$1 = {exports: {}}; + +var hasRequiredNesting$1; + +function requireNesting$1 () { + if (hasRequiredNesting$1) return nesting$1.exports; + hasRequiredNesting$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$2()); + var _types = /*@__PURE__*/ requireTypes$1(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Nesting = /*#__PURE__*/function (_Node) { + _inheritsLoose(Nesting, _Node); + function Nesting(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.NESTING; + _this.value = '&'; + return _this; + } + return Nesting; + }(_node["default"]); + exports["default"] = Nesting; + module.exports = exports.default; + } (nesting$1, nesting$1.exports)); + return nesting$1.exports; +} + +var sortAscending$1 = {exports: {}}; + +var hasRequiredSortAscending$1; + +function requireSortAscending$1 () { + if (hasRequiredSortAscending$1) return sortAscending$1.exports; + hasRequiredSortAscending$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = sortAscending; + function sortAscending(list) { + return list.sort(function (a, b) { + return a - b; + }); + } + module.exports = exports.default; + } (sortAscending$1, sortAscending$1.exports)); + return sortAscending$1.exports; +} + +var tokenize$1 = {}; + +var tokenTypes$1 = {}; + +var hasRequiredTokenTypes$1; + +function requireTokenTypes$1 () { + if (hasRequiredTokenTypes$1) return tokenTypes$1; + hasRequiredTokenTypes$1 = 1; + + tokenTypes$1.__esModule = true; + tokenTypes$1.word = tokenTypes$1.tilde = tokenTypes$1.tab = tokenTypes$1.str = tokenTypes$1.space = tokenTypes$1.slash = tokenTypes$1.singleQuote = tokenTypes$1.semicolon = tokenTypes$1.plus = tokenTypes$1.pipe = tokenTypes$1.openSquare = tokenTypes$1.openParenthesis = tokenTypes$1.newline = tokenTypes$1.greaterThan = tokenTypes$1.feed = tokenTypes$1.equals = tokenTypes$1.doubleQuote = tokenTypes$1.dollar = tokenTypes$1.cr = tokenTypes$1.comment = tokenTypes$1.comma = tokenTypes$1.combinator = tokenTypes$1.colon = tokenTypes$1.closeSquare = tokenTypes$1.closeParenthesis = tokenTypes$1.caret = tokenTypes$1.bang = tokenTypes$1.backslash = tokenTypes$1.at = tokenTypes$1.asterisk = tokenTypes$1.ampersand = void 0; + var ampersand = 38; // `&`.charCodeAt(0); + tokenTypes$1.ampersand = ampersand; + var asterisk = 42; // `*`.charCodeAt(0); + tokenTypes$1.asterisk = asterisk; + var at = 64; // `@`.charCodeAt(0); + tokenTypes$1.at = at; + var comma = 44; // `,`.charCodeAt(0); + tokenTypes$1.comma = comma; + var colon = 58; // `:`.charCodeAt(0); + tokenTypes$1.colon = colon; + var semicolon = 59; // `;`.charCodeAt(0); + tokenTypes$1.semicolon = semicolon; + var openParenthesis = 40; // `(`.charCodeAt(0); + tokenTypes$1.openParenthesis = openParenthesis; + var closeParenthesis = 41; // `)`.charCodeAt(0); + tokenTypes$1.closeParenthesis = closeParenthesis; + var openSquare = 91; // `[`.charCodeAt(0); + tokenTypes$1.openSquare = openSquare; + var closeSquare = 93; // `]`.charCodeAt(0); + tokenTypes$1.closeSquare = closeSquare; + var dollar = 36; // `$`.charCodeAt(0); + tokenTypes$1.dollar = dollar; + var tilde = 126; // `~`.charCodeAt(0); + tokenTypes$1.tilde = tilde; + var caret = 94; // `^`.charCodeAt(0); + tokenTypes$1.caret = caret; + var plus = 43; // `+`.charCodeAt(0); + tokenTypes$1.plus = plus; + var equals = 61; // `=`.charCodeAt(0); + tokenTypes$1.equals = equals; + var pipe = 124; // `|`.charCodeAt(0); + tokenTypes$1.pipe = pipe; + var greaterThan = 62; // `>`.charCodeAt(0); + tokenTypes$1.greaterThan = greaterThan; + var space = 32; // ` `.charCodeAt(0); + tokenTypes$1.space = space; + var singleQuote = 39; // `'`.charCodeAt(0); + tokenTypes$1.singleQuote = singleQuote; + var doubleQuote = 34; // `"`.charCodeAt(0); + tokenTypes$1.doubleQuote = doubleQuote; + var slash = 47; // `/`.charCodeAt(0); + tokenTypes$1.slash = slash; + var bang = 33; // `!`.charCodeAt(0); + tokenTypes$1.bang = bang; + var backslash = 92; // '\\'.charCodeAt(0); + tokenTypes$1.backslash = backslash; + var cr = 13; // '\r'.charCodeAt(0); + tokenTypes$1.cr = cr; + var feed = 12; // '\f'.charCodeAt(0); + tokenTypes$1.feed = feed; + var newline = 10; // '\n'.charCodeAt(0); + tokenTypes$1.newline = newline; + var tab = 9; // '\t'.charCodeAt(0); + + // Expose aliases primarily for readability. + tokenTypes$1.tab = tab; + var str = singleQuote; + + // No good single character representation! + tokenTypes$1.str = str; + var comment = -1; + tokenTypes$1.comment = comment; + var word = -2; + tokenTypes$1.word = word; + var combinator = -3; + tokenTypes$1.combinator = combinator; + return tokenTypes$1; +} + +var hasRequiredTokenize$1; + +function requireTokenize$1 () { + if (hasRequiredTokenize$1) return tokenize$1; + hasRequiredTokenize$1 = 1; + (function (exports) { + + exports.__esModule = true; + exports.FIELDS = void 0; + exports["default"] = tokenize; + var t = _interopRequireWildcard(/*@__PURE__*/ requireTokenTypes$1()); + var _unescapable, _wordDelimiters; + function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + var unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable); + var wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters); + var hex = {}; + var hexChars = "0123456789abcdefABCDEF"; + for (var i = 0; i < hexChars.length; i++) { + hex[hexChars.charCodeAt(i)] = true; + } + + /** + * Returns the last index of the bar css word + * @param {string} css The string in which the word begins + * @param {number} start The index into the string where word's first letter occurs + */ + function consumeWord(css, start) { + var next = start; + var code; + do { + code = css.charCodeAt(next); + if (wordDelimiters[code]) { + return next - 1; + } else if (code === t.backslash) { + next = consumeEscape(css, next) + 1; + } else { + // All other characters are part of the word + next++; + } + } while (next < css.length); + return next - 1; + } + + /** + * Returns the last index of the escape sequence + * @param {string} css The string in which the sequence begins + * @param {number} start The index into the string where escape character (`\`) occurs. + */ + function consumeEscape(css, start) { + var next = start; + var code = css.charCodeAt(next + 1); + if (unescapable[code]) ; else if (hex[code]) { + var hexDigits = 0; + // consume up to 6 hex chars + do { + next++; + hexDigits++; + code = css.charCodeAt(next + 1); + } while (hex[code] && hexDigits < 6); + // if fewer than 6 hex chars, a trailing space ends the escape + if (hexDigits < 6 && code === t.space) { + next++; + } + } else { + // the next char is part of the current word + next++; + } + return next; + } + var FIELDS = { + TYPE: 0, + START_LINE: 1, + START_COL: 2, + END_LINE: 3, + END_COL: 4, + START_POS: 5, + END_POS: 6 + }; + exports.FIELDS = FIELDS; + function tokenize(input) { + var tokens = []; + var css = input.css.valueOf(); + var _css = css, + length = _css.length; + var offset = -1; + var line = 1; + var start = 0; + var end = 0; + var code, content, endColumn, endLine, escaped, escapePos, last, lines, next, nextLine, nextOffset, quote, tokenType; + function unclosed(what, fix) { + if (input.safe) { + // fyi: this is never set to true. + css += fix; + next = css.length - 1; + } else { + throw input.error('Unclosed ' + what, line, start - offset, start); + } + } + while (start < length) { + code = css.charCodeAt(start); + if (code === t.newline) { + offset = start; + line += 1; + } + switch (code) { + case t.space: + case t.tab: + case t.newline: + case t.cr: + case t.feed: + next = start; + do { + next += 1; + code = css.charCodeAt(next); + if (code === t.newline) { + offset = next; + line += 1; + } + } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed); + tokenType = t.space; + endLine = line; + endColumn = next - offset - 1; + end = next; + break; + case t.plus: + case t.greaterThan: + case t.tilde: + case t.pipe: + next = start; + do { + next += 1; + code = css.charCodeAt(next); + } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe); + tokenType = t.combinator; + endLine = line; + endColumn = start - offset; + end = next; + break; + + // Consume these characters as single tokens. + case t.asterisk: + case t.ampersand: + case t.bang: + case t.comma: + case t.equals: + case t.dollar: + case t.caret: + case t.openSquare: + case t.closeSquare: + case t.colon: + case t.semicolon: + case t.openParenthesis: + case t.closeParenthesis: + next = start; + tokenType = code; + endLine = line; + endColumn = start - offset; + end = next + 1; + break; + case t.singleQuote: + case t.doubleQuote: + quote = code === t.singleQuote ? "'" : '"'; + next = start; + do { + escaped = false; + next = css.indexOf(quote, next + 1); + if (next === -1) { + unclosed('quote', quote); + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === t.backslash) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped); + tokenType = t.str; + endLine = line; + endColumn = start - offset; + end = next + 1; + break; + default: + if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) { + next = css.indexOf('*/', start + 2) + 1; + if (next === 0) { + unclosed('comment', '*/'); + } + content = css.slice(start, next + 1); + lines = content.split('\n'); + last = lines.length - 1; + if (last > 0) { + nextLine = line + last; + nextOffset = next - lines[last].length; + } else { + nextLine = line; + nextOffset = offset; + } + tokenType = t.comment; + line = nextLine; + endLine = nextLine; + endColumn = next - nextOffset; + } else if (code === t.slash) { + next = start; + tokenType = code; + endLine = line; + endColumn = start - offset; + end = next + 1; + } else { + next = consumeWord(css, start); + tokenType = t.word; + endLine = line; + endColumn = next - offset; + } + end = next + 1; + break; + } + + // Ensure that the token structure remains consistent + tokens.push([tokenType, + // [0] Token type + line, + // [1] Starting line + start - offset, + // [2] Starting column + endLine, + // [3] Ending line + endColumn, + // [4] Ending column + start, + // [5] Start position / Source index + end // [6] End position + ]); + + // Reset offset for the next token + if (nextOffset) { + offset = nextOffset; + nextOffset = null; + } + start = end; + } + return tokens; + } + } (tokenize$1)); + return tokenize$1; +} + +var hasRequiredParser$2; + +function requireParser$2 () { + if (hasRequiredParser$2) return parser$1.exports; + hasRequiredParser$2 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _root = _interopRequireDefault(/*@__PURE__*/ requireRoot$1()); + var _selector = _interopRequireDefault(/*@__PURE__*/ requireSelector$1()); + var _className = _interopRequireDefault(/*@__PURE__*/ requireClassName$1()); + var _comment = _interopRequireDefault(/*@__PURE__*/ requireComment$1()); + var _id = _interopRequireDefault(/*@__PURE__*/ requireId$1()); + var _tag = _interopRequireDefault(/*@__PURE__*/ requireTag$1()); + var _string = _interopRequireDefault(/*@__PURE__*/ requireString$1()); + var _pseudo = _interopRequireDefault(/*@__PURE__*/ requirePseudo$1()); + var _attribute = _interopRequireWildcard(/*@__PURE__*/ requireAttribute$1()); + var _universal = _interopRequireDefault(/*@__PURE__*/ requireUniversal$1()); + var _combinator = _interopRequireDefault(/*@__PURE__*/ requireCombinator$1()); + var _nesting = _interopRequireDefault(/*@__PURE__*/ requireNesting$1()); + var _sortAscending = _interopRequireDefault(/*@__PURE__*/ requireSortAscending$1()); + var _tokenize = _interopRequireWildcard(/*@__PURE__*/ requireTokenize$1()); + var tokens = _interopRequireWildcard(/*@__PURE__*/ requireTokenTypes$1()); + var types = _interopRequireWildcard(/*@__PURE__*/ requireTypes$1()); + var _util = /*@__PURE__*/ requireUtil$2(); + var _WHITESPACE_TOKENS, _Object$assign; + function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + var WHITESPACE_TOKENS = (_WHITESPACE_TOKENS = {}, _WHITESPACE_TOKENS[tokens.space] = true, _WHITESPACE_TOKENS[tokens.cr] = true, _WHITESPACE_TOKENS[tokens.feed] = true, _WHITESPACE_TOKENS[tokens.newline] = true, _WHITESPACE_TOKENS[tokens.tab] = true, _WHITESPACE_TOKENS); + var WHITESPACE_EQUIV_TOKENS = Object.assign({}, WHITESPACE_TOKENS, (_Object$assign = {}, _Object$assign[tokens.comment] = true, _Object$assign)); + function tokenStart(token) { + return { + line: token[_tokenize.FIELDS.START_LINE], + column: token[_tokenize.FIELDS.START_COL] + }; + } + function tokenEnd(token) { + return { + line: token[_tokenize.FIELDS.END_LINE], + column: token[_tokenize.FIELDS.END_COL] + }; + } + function getSource(startLine, startColumn, endLine, endColumn) { + return { + start: { + line: startLine, + column: startColumn + }, + end: { + line: endLine, + column: endColumn + } + }; + } + function getTokenSource(token) { + return getSource(token[_tokenize.FIELDS.START_LINE], token[_tokenize.FIELDS.START_COL], token[_tokenize.FIELDS.END_LINE], token[_tokenize.FIELDS.END_COL]); + } + function getTokenSourceSpan(startToken, endToken) { + if (!startToken) { + return undefined; + } + return getSource(startToken[_tokenize.FIELDS.START_LINE], startToken[_tokenize.FIELDS.START_COL], endToken[_tokenize.FIELDS.END_LINE], endToken[_tokenize.FIELDS.END_COL]); + } + function unescapeProp(node, prop) { + var value = node[prop]; + if (typeof value !== "string") { + return; + } + if (value.indexOf("\\") !== -1) { + (0, _util.ensureObject)(node, 'raws'); + node[prop] = (0, _util.unesc)(value); + if (node.raws[prop] === undefined) { + node.raws[prop] = value; + } + } + return node; + } + function indexesOf(array, item) { + var i = -1; + var indexes = []; + while ((i = array.indexOf(item, i + 1)) !== -1) { + indexes.push(i); + } + return indexes; + } + function uniqs() { + var list = Array.prototype.concat.apply([], arguments); + return list.filter(function (item, i) { + return i === list.indexOf(item); + }); + } + var Parser = /*#__PURE__*/function () { + function Parser(rule, options) { + if (options === void 0) { + options = {}; + } + this.rule = rule; + this.options = Object.assign({ + lossy: false, + safe: false + }, options); + this.position = 0; + this.css = typeof this.rule === 'string' ? this.rule : this.rule.selector; + this.tokens = (0, _tokenize["default"])({ + css: this.css, + error: this._errorGenerator(), + safe: this.options.safe + }); + var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]); + this.root = new _root["default"]({ + source: rootSource + }); + this.root.errorGenerator = this._errorGenerator(); + var selector = new _selector["default"]({ + source: { + start: { + line: 1, + column: 1 + } + }, + sourceIndex: 0 + }); + this.root.append(selector); + this.current = selector; + this.loop(); + } + var _proto = Parser.prototype; + _proto._errorGenerator = function _errorGenerator() { + var _this = this; + return function (message, errorOptions) { + if (typeof _this.rule === 'string') { + return new Error(message); + } + return _this.rule.error(message, errorOptions); + }; + }; + _proto.attribute = function attribute() { + var attr = []; + var startingToken = this.currToken; + this.position++; + while (this.position < this.tokens.length && this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) { + attr.push(this.currToken); + this.position++; + } + if (this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) { + return this.expected('closing square bracket', this.currToken[_tokenize.FIELDS.START_POS]); + } + var len = attr.length; + var node = { + source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]), + sourceIndex: startingToken[_tokenize.FIELDS.START_POS] + }; + if (len === 1 && !~[tokens.word].indexOf(attr[0][_tokenize.FIELDS.TYPE])) { + return this.expected('attribute', attr[0][_tokenize.FIELDS.START_POS]); + } + var pos = 0; + var spaceBefore = ''; + var commentBefore = ''; + var lastAdded = null; + var spaceAfterMeaningfulToken = false; + while (pos < len) { + var token = attr[pos]; + var content = this.content(token); + var next = attr[pos + 1]; + switch (token[_tokenize.FIELDS.TYPE]) { + case tokens.space: + // if ( + // len === 1 || + // pos === 0 && this.content(next) === '|' + // ) { + // return this.expected('attribute', token[TOKEN.START_POS], content); + // } + spaceAfterMeaningfulToken = true; + if (this.options.lossy) { + break; + } + if (lastAdded) { + (0, _util.ensureObject)(node, 'spaces', lastAdded); + var prevContent = node.spaces[lastAdded].after || ''; + node.spaces[lastAdded].after = prevContent + content; + var existingComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || null; + if (existingComment) { + node.raws.spaces[lastAdded].after = existingComment + content; + } + } else { + spaceBefore = spaceBefore + content; + commentBefore = commentBefore + content; + } + break; + case tokens.asterisk: + if (next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = 'operator'; + } else if ((!node.namespace || lastAdded === "namespace" && !spaceAfterMeaningfulToken) && next) { + if (spaceBefore) { + (0, _util.ensureObject)(node, 'spaces', 'attribute'); + node.spaces.attribute.before = spaceBefore; + spaceBefore = ''; + } + if (commentBefore) { + (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute'); + node.raws.spaces.attribute.before = spaceBefore; + commentBefore = ''; + } + node.namespace = (node.namespace || "") + content; + var rawValue = (0, _util.getProp)(node, 'raws', 'namespace') || null; + if (rawValue) { + node.raws.namespace += content; + } + lastAdded = 'namespace'; + } + spaceAfterMeaningfulToken = false; + break; + case tokens.dollar: + if (lastAdded === "value") { + var oldRawValue = (0, _util.getProp)(node, 'raws', 'value'); + node.value += "$"; + if (oldRawValue) { + node.raws.value = oldRawValue + "$"; + } + break; + } + // Falls through + case tokens.caret: + if (next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = 'operator'; + } + spaceAfterMeaningfulToken = false; + break; + case tokens.combinator: + if (content === '~' && next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = 'operator'; + } + if (content !== '|') { + spaceAfterMeaningfulToken = false; + break; + } + if (next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = 'operator'; + } else if (!node.namespace && !node.attribute) { + node.namespace = true; + } + spaceAfterMeaningfulToken = false; + break; + case tokens.word: + if (next && this.content(next) === '|' && attr[pos + 2] && attr[pos + 2][_tokenize.FIELDS.TYPE] !== tokens.equals && + // this look-ahead probably fails with comment nodes involved. + !node.operator && !node.namespace) { + node.namespace = content; + lastAdded = 'namespace'; + } else if (!node.attribute || lastAdded === "attribute" && !spaceAfterMeaningfulToken) { + if (spaceBefore) { + (0, _util.ensureObject)(node, 'spaces', 'attribute'); + node.spaces.attribute.before = spaceBefore; + spaceBefore = ''; + } + if (commentBefore) { + (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute'); + node.raws.spaces.attribute.before = commentBefore; + commentBefore = ''; + } + node.attribute = (node.attribute || "") + content; + var _rawValue = (0, _util.getProp)(node, 'raws', 'attribute') || null; + if (_rawValue) { + node.raws.attribute += content; + } + lastAdded = 'attribute'; + } else if (!node.value && node.value !== "" || lastAdded === "value" && !(spaceAfterMeaningfulToken || node.quoteMark)) { + var _unescaped = (0, _util.unesc)(content); + var _oldRawValue = (0, _util.getProp)(node, 'raws', 'value') || ''; + var oldValue = node.value || ''; + node.value = oldValue + _unescaped; + node.quoteMark = null; + if (_unescaped !== content || _oldRawValue) { + (0, _util.ensureObject)(node, 'raws'); + node.raws.value = (_oldRawValue || oldValue) + content; + } + lastAdded = 'value'; + } else { + var insensitive = content === 'i' || content === "I"; + if ((node.value || node.value === '') && (node.quoteMark || spaceAfterMeaningfulToken)) { + node.insensitive = insensitive; + if (!insensitive || content === "I") { + (0, _util.ensureObject)(node, 'raws'); + node.raws.insensitiveFlag = content; + } + lastAdded = 'insensitive'; + if (spaceBefore) { + (0, _util.ensureObject)(node, 'spaces', 'insensitive'); + node.spaces.insensitive.before = spaceBefore; + spaceBefore = ''; + } + if (commentBefore) { + (0, _util.ensureObject)(node, 'raws', 'spaces', 'insensitive'); + node.raws.spaces.insensitive.before = commentBefore; + commentBefore = ''; + } + } else if (node.value || node.value === '') { + lastAdded = 'value'; + node.value += content; + if (node.raws.value) { + node.raws.value += content; + } + } + } + spaceAfterMeaningfulToken = false; + break; + case tokens.str: + if (!node.attribute || !node.operator) { + return this.error("Expected an attribute followed by an operator preceding the string.", { + index: token[_tokenize.FIELDS.START_POS] + }); + } + var _unescapeValue = (0, _attribute.unescapeValue)(content), + unescaped = _unescapeValue.unescaped, + quoteMark = _unescapeValue.quoteMark; + node.value = unescaped; + node.quoteMark = quoteMark; + lastAdded = 'value'; + (0, _util.ensureObject)(node, 'raws'); + node.raws.value = content; + spaceAfterMeaningfulToken = false; + break; + case tokens.equals: + if (!node.attribute) { + return this.expected('attribute', token[_tokenize.FIELDS.START_POS], content); + } + if (node.value) { + return this.error('Unexpected "=" found; an operator was already defined.', { + index: token[_tokenize.FIELDS.START_POS] + }); + } + node.operator = node.operator ? node.operator + content : content; + lastAdded = 'operator'; + spaceAfterMeaningfulToken = false; + break; + case tokens.comment: + if (lastAdded) { + if (spaceAfterMeaningfulToken || next && next[_tokenize.FIELDS.TYPE] === tokens.space || lastAdded === 'insensitive') { + var lastComment = (0, _util.getProp)(node, 'spaces', lastAdded, 'after') || ''; + var rawLastComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || lastComment; + (0, _util.ensureObject)(node, 'raws', 'spaces', lastAdded); + node.raws.spaces[lastAdded].after = rawLastComment + content; + } else { + var lastValue = node[lastAdded] || ''; + var rawLastValue = (0, _util.getProp)(node, 'raws', lastAdded) || lastValue; + (0, _util.ensureObject)(node, 'raws'); + node.raws[lastAdded] = rawLastValue + content; + } + } else { + commentBefore = commentBefore + content; + } + break; + default: + return this.error("Unexpected \"" + content + "\" found.", { + index: token[_tokenize.FIELDS.START_POS] + }); + } + pos++; + } + unescapeProp(node, "attribute"); + unescapeProp(node, "namespace"); + this.newNode(new _attribute["default"](node)); + this.position++; + } + + /** + * return a node containing meaningless garbage up to (but not including) the specified token position. + * if the token position is negative, all remaining tokens are consumed. + * + * This returns an array containing a single string node if all whitespace, + * otherwise an array of comment nodes with space before and after. + * + * These tokens are not added to the current selector, the caller can add them or use them to amend + * a previous node's space metadata. + * + * In lossy mode, this returns only comments. + */; + _proto.parseWhitespaceEquivalentTokens = function parseWhitespaceEquivalentTokens(stopPosition) { + if (stopPosition < 0) { + stopPosition = this.tokens.length; + } + var startPosition = this.position; + var nodes = []; + var space = ""; + var lastComment = undefined; + do { + if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) { + if (!this.options.lossy) { + space += this.content(); + } + } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.comment) { + var spaces = {}; + if (space) { + spaces.before = space; + space = ""; + } + lastComment = new _comment["default"]({ + value: this.content(), + source: getTokenSource(this.currToken), + sourceIndex: this.currToken[_tokenize.FIELDS.START_POS], + spaces: spaces + }); + nodes.push(lastComment); + } + } while (++this.position < stopPosition); + if (space) { + if (lastComment) { + lastComment.spaces.after = space; + } else if (!this.options.lossy) { + var firstToken = this.tokens[startPosition]; + var lastToken = this.tokens[this.position - 1]; + nodes.push(new _string["default"]({ + value: '', + source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]), + sourceIndex: firstToken[_tokenize.FIELDS.START_POS], + spaces: { + before: space, + after: '' + } + })); + } + } + return nodes; + } + + /** + * + * @param {*} nodes + */; + _proto.convertWhitespaceNodesToSpace = function convertWhitespaceNodesToSpace(nodes, requiredSpace) { + var _this2 = this; + if (requiredSpace === void 0) { + requiredSpace = false; + } + var space = ""; + var rawSpace = ""; + nodes.forEach(function (n) { + var spaceBefore = _this2.lossySpace(n.spaces.before, requiredSpace); + var rawSpaceBefore = _this2.lossySpace(n.rawSpaceBefore, requiredSpace); + space += spaceBefore + _this2.lossySpace(n.spaces.after, requiredSpace && spaceBefore.length === 0); + rawSpace += spaceBefore + n.value + _this2.lossySpace(n.rawSpaceAfter, requiredSpace && rawSpaceBefore.length === 0); + }); + if (rawSpace === space) { + rawSpace = undefined; + } + var result = { + space: space, + rawSpace: rawSpace + }; + return result; + }; + _proto.isNamedCombinator = function isNamedCombinator(position) { + if (position === void 0) { + position = this.position; + } + return this.tokens[position + 0] && this.tokens[position + 0][_tokenize.FIELDS.TYPE] === tokens.slash && this.tokens[position + 1] && this.tokens[position + 1][_tokenize.FIELDS.TYPE] === tokens.word && this.tokens[position + 2] && this.tokens[position + 2][_tokenize.FIELDS.TYPE] === tokens.slash; + }; + _proto.namedCombinator = function namedCombinator() { + if (this.isNamedCombinator()) { + var nameRaw = this.content(this.tokens[this.position + 1]); + var name = (0, _util.unesc)(nameRaw).toLowerCase(); + var raws = {}; + if (name !== nameRaw) { + raws.value = "/" + nameRaw + "/"; + } + var node = new _combinator["default"]({ + value: "/" + name + "/", + source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]), + sourceIndex: this.currToken[_tokenize.FIELDS.START_POS], + raws: raws + }); + this.position = this.position + 3; + return node; + } else { + this.unexpected(); + } + }; + _proto.combinator = function combinator() { + var _this3 = this; + if (this.content() === '|') { + return this.namespace(); + } + // We need to decide between a space that's a descendant combinator and meaningless whitespace at the end of a selector. + var nextSigTokenPos = this.locateNextMeaningfulToken(this.position); + if (nextSigTokenPos < 0 || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.comma || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) { + var nodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos); + if (nodes.length > 0) { + var last = this.current.last; + if (last) { + var _this$convertWhitespa = this.convertWhitespaceNodesToSpace(nodes), + space = _this$convertWhitespa.space, + rawSpace = _this$convertWhitespa.rawSpace; + if (rawSpace !== undefined) { + last.rawSpaceAfter += rawSpace; + } + last.spaces.after += space; + } else { + nodes.forEach(function (n) { + return _this3.newNode(n); + }); + } + } + return; + } + var firstToken = this.currToken; + var spaceOrDescendantSelectorNodes = undefined; + if (nextSigTokenPos > this.position) { + spaceOrDescendantSelectorNodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos); + } + var node; + if (this.isNamedCombinator()) { + node = this.namedCombinator(); + } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) { + node = new _combinator["default"]({ + value: this.content(), + source: getTokenSource(this.currToken), + sourceIndex: this.currToken[_tokenize.FIELDS.START_POS] + }); + this.position++; + } else if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) ; else if (!spaceOrDescendantSelectorNodes) { + this.unexpected(); + } + if (node) { + if (spaceOrDescendantSelectorNodes) { + var _this$convertWhitespa2 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes), + _space = _this$convertWhitespa2.space, + _rawSpace = _this$convertWhitespa2.rawSpace; + node.spaces.before = _space; + node.rawSpaceBefore = _rawSpace; + } + } else { + // descendant combinator + var _this$convertWhitespa3 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes, true), + _space2 = _this$convertWhitespa3.space, + _rawSpace2 = _this$convertWhitespa3.rawSpace; + if (!_rawSpace2) { + _rawSpace2 = _space2; + } + var spaces = {}; + var raws = { + spaces: {} + }; + if (_space2.endsWith(' ') && _rawSpace2.endsWith(' ')) { + spaces.before = _space2.slice(0, _space2.length - 1); + raws.spaces.before = _rawSpace2.slice(0, _rawSpace2.length - 1); + } else if (_space2.startsWith(' ') && _rawSpace2.startsWith(' ')) { + spaces.after = _space2.slice(1); + raws.spaces.after = _rawSpace2.slice(1); + } else { + raws.value = _rawSpace2; + } + node = new _combinator["default"]({ + value: ' ', + source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]), + sourceIndex: firstToken[_tokenize.FIELDS.START_POS], + spaces: spaces, + raws: raws + }); + } + if (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.space) { + node.spaces.after = this.optionalSpace(this.content()); + this.position++; + } + return this.newNode(node); + }; + _proto.comma = function comma() { + if (this.position === this.tokens.length - 1) { + this.root.trailingComma = true; + this.position++; + return; + } + this.current._inferEndPosition(); + var selector = new _selector["default"]({ + source: { + start: tokenStart(this.tokens[this.position + 1]) + }, + sourceIndex: this.tokens[this.position + 1][_tokenize.FIELDS.START_POS] + }); + this.current.parent.append(selector); + this.current = selector; + this.position++; + }; + _proto.comment = function comment() { + var current = this.currToken; + this.newNode(new _comment["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + })); + this.position++; + }; + _proto.error = function error(message, opts) { + throw this.root.error(message, opts); + }; + _proto.missingBackslash = function missingBackslash() { + return this.error('Expected a backslash preceding the semicolon.', { + index: this.currToken[_tokenize.FIELDS.START_POS] + }); + }; + _proto.missingParenthesis = function missingParenthesis() { + return this.expected('opening parenthesis', this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.missingSquareBracket = function missingSquareBracket() { + return this.expected('opening square bracket', this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.unexpected = function unexpected() { + return this.error("Unexpected '" + this.content() + "'. Escaping special characters with \\ may help.", this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.unexpectedPipe = function unexpectedPipe() { + return this.error("Unexpected '|'.", this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.namespace = function namespace() { + var before = this.prevToken && this.content(this.prevToken) || true; + if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.word) { + this.position++; + return this.word(before); + } else if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.asterisk) { + this.position++; + return this.universal(before); + } + this.unexpectedPipe(); + }; + _proto.nesting = function nesting() { + if (this.nextToken) { + var nextContent = this.content(this.nextToken); + if (nextContent === "|") { + this.position++; + return; + } + } + var current = this.currToken; + this.newNode(new _nesting["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + })); + this.position++; + }; + _proto.parentheses = function parentheses() { + var last = this.current.last; + var unbalanced = 1; + this.position++; + if (last && last.type === types.PSEUDO) { + var selector = new _selector["default"]({ + source: { + start: tokenStart(this.tokens[this.position]) + }, + sourceIndex: this.tokens[this.position][_tokenize.FIELDS.START_POS] + }); + var cache = this.current; + last.append(selector); + this.current = selector; + while (this.position < this.tokens.length && unbalanced) { + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) { + unbalanced++; + } + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) { + unbalanced--; + } + if (unbalanced) { + this.parse(); + } else { + this.current.source.end = tokenEnd(this.currToken); + this.current.parent.source.end = tokenEnd(this.currToken); + this.position++; + } + } + this.current = cache; + } else { + // I think this case should be an error. It's used to implement a basic parse of media queries + // but I don't think it's a good idea. + var parenStart = this.currToken; + var parenValue = "("; + var parenEnd; + while (this.position < this.tokens.length && unbalanced) { + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) { + unbalanced++; + } + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) { + unbalanced--; + } + parenEnd = this.currToken; + parenValue += this.parseParenthesisToken(this.currToken); + this.position++; + } + if (last) { + last.appendToPropertyAndEscape("value", parenValue, parenValue); + } else { + this.newNode(new _string["default"]({ + value: parenValue, + source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]), + sourceIndex: parenStart[_tokenize.FIELDS.START_POS] + })); + } + } + if (unbalanced) { + return this.expected('closing parenthesis', this.currToken[_tokenize.FIELDS.START_POS]); + } + }; + _proto.pseudo = function pseudo() { + var _this4 = this; + var pseudoStr = ''; + var startingToken = this.currToken; + while (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.colon) { + pseudoStr += this.content(); + this.position++; + } + if (!this.currToken) { + return this.expected(['pseudo-class', 'pseudo-element'], this.position - 1); + } + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.word) { + this.splitWord(false, function (first, length) { + pseudoStr += first; + _this4.newNode(new _pseudo["default"]({ + value: pseudoStr, + source: getTokenSourceSpan(startingToken, _this4.currToken), + sourceIndex: startingToken[_tokenize.FIELDS.START_POS] + })); + if (length > 1 && _this4.nextToken && _this4.nextToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) { + _this4.error('Misplaced parenthesis.', { + index: _this4.nextToken[_tokenize.FIELDS.START_POS] + }); + } + }); + } else { + return this.expected(['pseudo-class', 'pseudo-element'], this.currToken[_tokenize.FIELDS.START_POS]); + } + }; + _proto.space = function space() { + var content = this.content(); + // Handle space before and after the selector + if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis || this.current.nodes.every(function (node) { + return node.type === 'comment'; + })) { + this.spaces = this.optionalSpace(content); + this.position++; + } else if (this.position === this.tokens.length - 1 || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) { + this.current.last.spaces.after = this.optionalSpace(content); + this.position++; + } else { + this.combinator(); + } + }; + _proto.string = function string() { + var current = this.currToken; + this.newNode(new _string["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + })); + this.position++; + }; + _proto.universal = function universal(namespace) { + var nextToken = this.nextToken; + if (nextToken && this.content(nextToken) === '|') { + this.position++; + return this.namespace(); + } + var current = this.currToken; + this.newNode(new _universal["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + }), namespace); + this.position++; + }; + _proto.splitWord = function splitWord(namespace, firstCallback) { + var _this5 = this; + var nextToken = this.nextToken; + var word = this.content(); + while (nextToken && ~[tokens.dollar, tokens.caret, tokens.equals, tokens.word].indexOf(nextToken[_tokenize.FIELDS.TYPE])) { + this.position++; + var current = this.content(); + word += current; + if (current.lastIndexOf('\\') === current.length - 1) { + var next = this.nextToken; + if (next && next[_tokenize.FIELDS.TYPE] === tokens.space) { + word += this.requiredSpace(this.content(next)); + this.position++; + } + } + nextToken = this.nextToken; + } + var hasClass = indexesOf(word, '.').filter(function (i) { + // Allow escaped dot within class name + var escapedDot = word[i - 1] === '\\'; + // Allow decimal numbers percent in @keyframes + var isKeyframesPercent = /^\d+\.\d+%$/.test(word); + return !escapedDot && !isKeyframesPercent; + }); + var hasId = indexesOf(word, '#').filter(function (i) { + return word[i - 1] !== '\\'; + }); + // Eliminate Sass interpolations from the list of id indexes + var interpolations = indexesOf(word, '#{'); + if (interpolations.length) { + hasId = hasId.filter(function (hashIndex) { + return !~interpolations.indexOf(hashIndex); + }); + } + var indices = (0, _sortAscending["default"])(uniqs([0].concat(hasClass, hasId))); + indices.forEach(function (ind, i) { + var index = indices[i + 1] || word.length; + var value = word.slice(ind, index); + if (i === 0 && firstCallback) { + return firstCallback.call(_this5, value, indices.length); + } + var node; + var current = _this5.currToken; + var sourceIndex = current[_tokenize.FIELDS.START_POS] + indices[i]; + var source = getSource(current[1], current[2] + ind, current[3], current[2] + (index - 1)); + if (~hasClass.indexOf(ind)) { + var classNameOpts = { + value: value.slice(1), + source: source, + sourceIndex: sourceIndex + }; + node = new _className["default"](unescapeProp(classNameOpts, "value")); + } else if (~hasId.indexOf(ind)) { + var idOpts = { + value: value.slice(1), + source: source, + sourceIndex: sourceIndex + }; + node = new _id["default"](unescapeProp(idOpts, "value")); + } else { + var tagOpts = { + value: value, + source: source, + sourceIndex: sourceIndex + }; + unescapeProp(tagOpts, "value"); + node = new _tag["default"](tagOpts); + } + _this5.newNode(node, namespace); + // Ensure that the namespace is used only once + namespace = null; + }); + this.position++; + }; + _proto.word = function word(namespace) { + var nextToken = this.nextToken; + if (nextToken && this.content(nextToken) === '|') { + this.position++; + return this.namespace(); + } + return this.splitWord(namespace); + }; + _proto.loop = function loop() { + while (this.position < this.tokens.length) { + this.parse(true); + } + this.current._inferEndPosition(); + return this.root; + }; + _proto.parse = function parse(throwOnParenthesis) { + switch (this.currToken[_tokenize.FIELDS.TYPE]) { + case tokens.space: + this.space(); + break; + case tokens.comment: + this.comment(); + break; + case tokens.openParenthesis: + this.parentheses(); + break; + case tokens.closeParenthesis: + if (throwOnParenthesis) { + this.missingParenthesis(); + } + break; + case tokens.openSquare: + this.attribute(); + break; + case tokens.dollar: + case tokens.caret: + case tokens.equals: + case tokens.word: + this.word(); + break; + case tokens.colon: + this.pseudo(); + break; + case tokens.comma: + this.comma(); + break; + case tokens.asterisk: + this.universal(); + break; + case tokens.ampersand: + this.nesting(); + break; + case tokens.slash: + case tokens.combinator: + this.combinator(); + break; + case tokens.str: + this.string(); + break; + // These cases throw; no break needed. + case tokens.closeSquare: + this.missingSquareBracket(); + case tokens.semicolon: + this.missingBackslash(); + default: + this.unexpected(); + } + } + + /** + * Helpers + */; + _proto.expected = function expected(description, index, found) { + if (Array.isArray(description)) { + var last = description.pop(); + description = description.join(', ') + " or " + last; + } + var an = /^[aeiou]/.test(description[0]) ? 'an' : 'a'; + if (!found) { + return this.error("Expected " + an + " " + description + ".", { + index: index + }); + } + return this.error("Expected " + an + " " + description + ", found \"" + found + "\" instead.", { + index: index + }); + }; + _proto.requiredSpace = function requiredSpace(space) { + return this.options.lossy ? ' ' : space; + }; + _proto.optionalSpace = function optionalSpace(space) { + return this.options.lossy ? '' : space; + }; + _proto.lossySpace = function lossySpace(space, required) { + if (this.options.lossy) { + return required ? ' ' : ''; + } else { + return space; + } + }; + _proto.parseParenthesisToken = function parseParenthesisToken(token) { + var content = this.content(token); + if (token[_tokenize.FIELDS.TYPE] === tokens.space) { + return this.requiredSpace(content); + } else { + return content; + } + }; + _proto.newNode = function newNode(node, namespace) { + if (namespace) { + if (/^ +$/.test(namespace)) { + if (!this.options.lossy) { + this.spaces = (this.spaces || '') + namespace; + } + namespace = true; + } + node.namespace = namespace; + unescapeProp(node, "namespace"); + } + if (this.spaces) { + node.spaces.before = this.spaces; + this.spaces = ''; + } + return this.current.append(node); + }; + _proto.content = function content(token) { + if (token === void 0) { + token = this.currToken; + } + return this.css.slice(token[_tokenize.FIELDS.START_POS], token[_tokenize.FIELDS.END_POS]); + }; + /** + * returns the index of the next non-whitespace, non-comment token. + * returns -1 if no meaningful token is found. + */ + _proto.locateNextMeaningfulToken = function locateNextMeaningfulToken(startPosition) { + if (startPosition === void 0) { + startPosition = this.position + 1; + } + var searchPosition = startPosition; + while (searchPosition < this.tokens.length) { + if (WHITESPACE_EQUIV_TOKENS[this.tokens[searchPosition][_tokenize.FIELDS.TYPE]]) { + searchPosition++; + continue; + } else { + return searchPosition; + } + } + return -1; + }; + _createClass(Parser, [{ + key: "currToken", + get: function get() { + return this.tokens[this.position]; + } + }, { + key: "nextToken", + get: function get() { + return this.tokens[this.position + 1]; + } + }, { + key: "prevToken", + get: function get() { + return this.tokens[this.position - 1]; + } + }]); + return Parser; + }(); + exports["default"] = Parser; + module.exports = exports.default; + } (parser$1, parser$1.exports)); + return parser$1.exports; +} + +var hasRequiredProcessor$1; + +function requireProcessor$1 () { + if (hasRequiredProcessor$1) return processor$1.exports; + hasRequiredProcessor$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _parser = _interopRequireDefault(/*@__PURE__*/ requireParser$2()); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + var Processor = /*#__PURE__*/function () { + function Processor(func, options) { + this.func = func || function noop() {}; + this.funcRes = null; + this.options = options; + } + var _proto = Processor.prototype; + _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) { + if (options === void 0) { + options = {}; + } + var merged = Object.assign({}, this.options, options); + if (merged.updateSelector === false) { + return false; + } else { + return typeof rule !== "string"; + } + }; + _proto._isLossy = function _isLossy(options) { + if (options === void 0) { + options = {}; + } + var merged = Object.assign({}, this.options, options); + if (merged.lossless === false) { + return true; + } else { + return false; + } + }; + _proto._root = function _root(rule, options) { + if (options === void 0) { + options = {}; + } + var parser = new _parser["default"](rule, this._parseOptions(options)); + return parser.root; + }; + _proto._parseOptions = function _parseOptions(options) { + return { + lossy: this._isLossy(options) + }; + }; + _proto._run = function _run(rule, options) { + var _this = this; + if (options === void 0) { + options = {}; + } + return new Promise(function (resolve, reject) { + try { + var root = _this._root(rule, options); + Promise.resolve(_this.func(root)).then(function (transform) { + var string = undefined; + if (_this._shouldUpdateSelector(rule, options)) { + string = root.toString(); + rule.selector = string; + } + return { + transform: transform, + root: root, + string: string + }; + }).then(resolve, reject); + } catch (e) { + reject(e); + return; + } + }); + }; + _proto._runSync = function _runSync(rule, options) { + if (options === void 0) { + options = {}; + } + var root = this._root(rule, options); + var transform = this.func(root); + if (transform && typeof transform.then === "function") { + throw new Error("Selector processor returned a promise to a synchronous call."); + } + var string = undefined; + if (options.updateSelector && typeof rule !== "string") { + string = root.toString(); + rule.selector = string; + } + return { + transform: transform, + root: root, + string: string + }; + } + + /** + * Process rule into a selector AST. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {Promise<parser.Root>} The AST of the selector after processing it. + */; + _proto.ast = function ast(rule, options) { + return this._run(rule, options).then(function (result) { + return result.root; + }); + } + + /** + * Process rule into a selector AST synchronously. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {parser.Root} The AST of the selector after processing it. + */; + _proto.astSync = function astSync(rule, options) { + return this._runSync(rule, options).root; + } + + /** + * Process a selector into a transformed value asynchronously + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {Promise<any>} The value returned by the processor. + */; + _proto.transform = function transform(rule, options) { + return this._run(rule, options).then(function (result) { + return result.transform; + }); + } + + /** + * Process a selector into a transformed value synchronously. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {any} The value returned by the processor. + */; + _proto.transformSync = function transformSync(rule, options) { + return this._runSync(rule, options).transform; + } + + /** + * Process a selector into a new selector string asynchronously. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {string} the selector after processing. + */; + _proto.process = function process(rule, options) { + return this._run(rule, options).then(function (result) { + return result.string || result.root.toString(); + }); + } + + /** + * Process a selector into a new selector string synchronously. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {string} the selector after processing. + */; + _proto.processSync = function processSync(rule, options) { + var result = this._runSync(rule, options); + return result.string || result.root.toString(); + }; + return Processor; + }(); + exports["default"] = Processor; + module.exports = exports.default; + } (processor$1, processor$1.exports)); + return processor$1.exports; +} + +var selectors$1 = {}; + +var constructors$1 = {}; + +var hasRequiredConstructors$1; + +function requireConstructors$1 () { + if (hasRequiredConstructors$1) return constructors$1; + hasRequiredConstructors$1 = 1; + + constructors$1.__esModule = true; + constructors$1.universal = constructors$1.tag = constructors$1.string = constructors$1.selector = constructors$1.root = constructors$1.pseudo = constructors$1.nesting = constructors$1.id = constructors$1.comment = constructors$1.combinator = constructors$1.className = constructors$1.attribute = void 0; + var _attribute = _interopRequireDefault(/*@__PURE__*/ requireAttribute$1()); + var _className = _interopRequireDefault(/*@__PURE__*/ requireClassName$1()); + var _combinator = _interopRequireDefault(/*@__PURE__*/ requireCombinator$1()); + var _comment = _interopRequireDefault(/*@__PURE__*/ requireComment$1()); + var _id = _interopRequireDefault(/*@__PURE__*/ requireId$1()); + var _nesting = _interopRequireDefault(/*@__PURE__*/ requireNesting$1()); + var _pseudo = _interopRequireDefault(/*@__PURE__*/ requirePseudo$1()); + var _root = _interopRequireDefault(/*@__PURE__*/ requireRoot$1()); + var _selector = _interopRequireDefault(/*@__PURE__*/ requireSelector$1()); + var _string = _interopRequireDefault(/*@__PURE__*/ requireString$1()); + var _tag = _interopRequireDefault(/*@__PURE__*/ requireTag$1()); + var _universal = _interopRequireDefault(/*@__PURE__*/ requireUniversal$1()); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + var attribute = function attribute(opts) { + return new _attribute["default"](opts); + }; + constructors$1.attribute = attribute; + var className = function className(opts) { + return new _className["default"](opts); + }; + constructors$1.className = className; + var combinator = function combinator(opts) { + return new _combinator["default"](opts); + }; + constructors$1.combinator = combinator; + var comment = function comment(opts) { + return new _comment["default"](opts); + }; + constructors$1.comment = comment; + var id = function id(opts) { + return new _id["default"](opts); + }; + constructors$1.id = id; + var nesting = function nesting(opts) { + return new _nesting["default"](opts); + }; + constructors$1.nesting = nesting; + var pseudo = function pseudo(opts) { + return new _pseudo["default"](opts); + }; + constructors$1.pseudo = pseudo; + var root = function root(opts) { + return new _root["default"](opts); + }; + constructors$1.root = root; + var selector = function selector(opts) { + return new _selector["default"](opts); + }; + constructors$1.selector = selector; + var string = function string(opts) { + return new _string["default"](opts); + }; + constructors$1.string = string; + var tag = function tag(opts) { + return new _tag["default"](opts); + }; + constructors$1.tag = tag; + var universal = function universal(opts) { + return new _universal["default"](opts); + }; + constructors$1.universal = universal; + return constructors$1; +} + +var guards$1 = {}; + +var hasRequiredGuards$1; + +function requireGuards$1 () { + if (hasRequiredGuards$1) return guards$1; + hasRequiredGuards$1 = 1; + + guards$1.__esModule = true; + guards$1.isComment = guards$1.isCombinator = guards$1.isClassName = guards$1.isAttribute = void 0; + guards$1.isContainer = isContainer; + guards$1.isIdentifier = void 0; + guards$1.isNamespace = isNamespace; + guards$1.isNesting = void 0; + guards$1.isNode = isNode; + guards$1.isPseudo = void 0; + guards$1.isPseudoClass = isPseudoClass; + guards$1.isPseudoElement = isPseudoElement; + guards$1.isUniversal = guards$1.isTag = guards$1.isString = guards$1.isSelector = guards$1.isRoot = void 0; + var _types = /*@__PURE__*/ requireTypes$1(); + var _IS_TYPE; + var IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types.ATTRIBUTE] = true, _IS_TYPE[_types.CLASS] = true, _IS_TYPE[_types.COMBINATOR] = true, _IS_TYPE[_types.COMMENT] = true, _IS_TYPE[_types.ID] = true, _IS_TYPE[_types.NESTING] = true, _IS_TYPE[_types.PSEUDO] = true, _IS_TYPE[_types.ROOT] = true, _IS_TYPE[_types.SELECTOR] = true, _IS_TYPE[_types.STRING] = true, _IS_TYPE[_types.TAG] = true, _IS_TYPE[_types.UNIVERSAL] = true, _IS_TYPE); + function isNode(node) { + return typeof node === "object" && IS_TYPE[node.type]; + } + function isNodeType(type, node) { + return isNode(node) && node.type === type; + } + var isAttribute = isNodeType.bind(null, _types.ATTRIBUTE); + guards$1.isAttribute = isAttribute; + var isClassName = isNodeType.bind(null, _types.CLASS); + guards$1.isClassName = isClassName; + var isCombinator = isNodeType.bind(null, _types.COMBINATOR); + guards$1.isCombinator = isCombinator; + var isComment = isNodeType.bind(null, _types.COMMENT); + guards$1.isComment = isComment; + var isIdentifier = isNodeType.bind(null, _types.ID); + guards$1.isIdentifier = isIdentifier; + var isNesting = isNodeType.bind(null, _types.NESTING); + guards$1.isNesting = isNesting; + var isPseudo = isNodeType.bind(null, _types.PSEUDO); + guards$1.isPseudo = isPseudo; + var isRoot = isNodeType.bind(null, _types.ROOT); + guards$1.isRoot = isRoot; + var isSelector = isNodeType.bind(null, _types.SELECTOR); + guards$1.isSelector = isSelector; + var isString = isNodeType.bind(null, _types.STRING); + guards$1.isString = isString; + var isTag = isNodeType.bind(null, _types.TAG); + guards$1.isTag = isTag; + var isUniversal = isNodeType.bind(null, _types.UNIVERSAL); + guards$1.isUniversal = isUniversal; + function isPseudoElement(node) { + return isPseudo(node) && node.value && (node.value.startsWith("::") || node.value.toLowerCase() === ":before" || node.value.toLowerCase() === ":after" || node.value.toLowerCase() === ":first-letter" || node.value.toLowerCase() === ":first-line"); + } + function isPseudoClass(node) { + return isPseudo(node) && !isPseudoElement(node); + } + function isContainer(node) { + return !!(isNode(node) && node.walk); + } + function isNamespace(node) { + return isAttribute(node) || isTag(node); + } + return guards$1; +} + +var hasRequiredSelectors$1; + +function requireSelectors$1 () { + if (hasRequiredSelectors$1) return selectors$1; + hasRequiredSelectors$1 = 1; + (function (exports) { + + exports.__esModule = true; + var _types = /*@__PURE__*/ requireTypes$1(); + Object.keys(_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _types[key]) return; + exports[key] = _types[key]; + }); + var _constructors = /*@__PURE__*/ requireConstructors$1(); + Object.keys(_constructors).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _constructors[key]) return; + exports[key] = _constructors[key]; + }); + var _guards = /*@__PURE__*/ requireGuards$1(); + Object.keys(_guards).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _guards[key]) return; + exports[key] = _guards[key]; + }); + } (selectors$1)); + return selectors$1; +} + +var hasRequiredDist$1; + +function requireDist$1 () { + if (hasRequiredDist$1) return dist$1.exports; + hasRequiredDist$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _processor = _interopRequireDefault(/*@__PURE__*/ requireProcessor$1()); + var selectors = _interopRequireWildcard(/*@__PURE__*/ requireSelectors$1()); + function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + var parser = function parser(processor) { + return new _processor["default"](processor); + }; + Object.assign(parser, selectors); + delete parser.__esModule; + var _default = parser; + exports["default"] = _default; + module.exports = exports.default; + } (dist$1, dist$1.exports)); + return dist$1.exports; +} + +var distExports = /*@__PURE__*/ requireDist$1(); +var selectorParser = /*@__PURE__*/getDefaultExportFromCjs(distExports); + +const animationNameRE = /^(-\w+-)?animation-name$/; +const animationRE = /^(-\w+-)?animation$/; +const keyframesRE = /^(?:-\w+-)?keyframes$/; +const scopedPlugin = (id = "") => { + const keyframes = /* @__PURE__ */ Object.create(null); + const shortId = id.replace(/^data-v-/, ""); + return { + postcssPlugin: "vue-sfc-scoped", + Rule(rule) { + processRule(id, rule); + }, + AtRule(node) { + if (keyframesRE.test(node.name) && !node.params.endsWith(`-${shortId}`)) { + keyframes[node.params] = node.params = node.params + "-" + shortId; + } + }, + OnceExit(root) { + if (Object.keys(keyframes).length) { + root.walkDecls((decl) => { + if (animationNameRE.test(decl.prop)) { + decl.value = decl.value.split(",").map((v) => keyframes[v.trim()] || v.trim()).join(","); + } + if (animationRE.test(decl.prop)) { + decl.value = decl.value.split(",").map((v) => { + const vals = v.trim().split(/\s+/); + const i = vals.findIndex((val) => keyframes[val]); + if (i !== -1) { + vals.splice(i, 1, keyframes[vals[i]]); + return vals.join(" "); + } else { + return v; + } + }).join(","); + } + }); + } + } + }; +}; +const processedRules = /* @__PURE__ */ new WeakSet(); +function processRule(id, rule) { + if (processedRules.has(rule) || rule.parent && rule.parent.type === "atrule" && keyframesRE.test(rule.parent.name)) { + return; + } + processedRules.add(rule); + let deep = false; + let parent = rule.parent; + while (parent && parent.type !== "root") { + if (parent.__deep) { + deep = true; + break; + } + parent = parent.parent; + } + rule.selector = selectorParser((selectorRoot) => { + selectorRoot.each((selector) => { + rewriteSelector(id, rule, selector, selectorRoot, deep); + }); + }).processSync(rule.selector); +} +function rewriteSelector(id, rule, selector, selectorRoot, deep, slotted = false) { + let node = null; + let shouldInject = !deep; + selector.each((n) => { + if (n.type === "combinator" && (n.value === ">>>" || n.value === "/deep/")) { + n.value = " "; + n.spaces.before = n.spaces.after = ""; + warn( + `the >>> and /deep/ combinators have been deprecated. Use :deep() instead.` + ); + return false; + } + if (n.type === "pseudo") { + const { value } = n; + if (value === ":deep" || value === "::v-deep") { + rule.__deep = true; + if (n.nodes.length) { + let last = n; + n.nodes[0].each((ss) => { + selector.insertAfter(last, ss); + last = ss; + }); + const prev = selector.at(selector.index(n) - 1); + if (!prev || !isSpaceCombinator(prev)) { + selector.insertAfter( + n, + selectorParser.combinator({ + value: " " + }) + ); + } + selector.removeChild(n); + } else { + warn( + `${value} usage as a combinator has been deprecated. Use :deep(<inner-selector>) instead of ${value} <inner-selector>.` + ); + const prev = selector.at(selector.index(n) - 1); + if (prev && isSpaceCombinator(prev)) { + selector.removeChild(prev); + } + selector.removeChild(n); + } + return false; + } + if (value === ":slotted" || value === "::v-slotted") { + rewriteSelector( + id, + rule, + n.nodes[0], + selectorRoot, + deep, + true + ); + let last = n; + n.nodes[0].each((ss) => { + selector.insertAfter(last, ss); + last = ss; + }); + selector.removeChild(n); + shouldInject = false; + return false; + } + if (value === ":global" || value === "::v-global") { + selector.replaceWith(n.nodes[0]); + return false; + } + } + if (n.type === "universal") { + const prev = selector.at(selector.index(n) - 1); + const next = selector.at(selector.index(n) + 1); + if (!prev) { + if (next) { + if (next.type === "combinator" && next.value === " ") { + selector.removeChild(next); + } + selector.removeChild(n); + return; + } else { + node = selectorParser.combinator({ + value: "" + }); + selector.insertBefore(n, node); + selector.removeChild(n); + return false; + } + } + if (node) return; + } + if (n.type !== "pseudo" && n.type !== "combinator" || n.type === "pseudo" && (n.value === ":is" || n.value === ":where") && !node) { + node = n; + } + }); + if (rule.nodes.some((node2) => node2.type === "rule")) { + const deep2 = rule.__deep; + if (!deep2) { + extractAndWrapNodes(rule); + const atruleNodes = rule.nodes.filter((node2) => node2.type === "atrule"); + for (const atnode of atruleNodes) { + extractAndWrapNodes(atnode); + } + } + shouldInject = deep2; + } + if (node) { + const { type, value } = node; + if (type === "pseudo" && (value === ":is" || value === ":where")) { + node.nodes.forEach( + (value2) => rewriteSelector(id, rule, value2, selectorRoot, deep, slotted) + ); + shouldInject = false; + } + } + if (node) { + node.spaces.after = ""; + } else { + selector.first.spaces.before = ""; + } + if (shouldInject) { + const idToAdd = slotted ? id + "-s" : id; + selector.insertAfter( + // If node is null it means we need to inject [id] at the start + // insertAfter can handle `null` here + node, + selectorParser.attribute({ + attribute: idToAdd, + value: idToAdd, + raws: {}, + quoteMark: `"` + }) + ); + } +} +function isSpaceCombinator(node) { + return node.type === "combinator" && /^\s+$/.test(node.value); +} +function extractAndWrapNodes(parentNode) { + if (!parentNode.nodes) return; + const nodes = parentNode.nodes.filter( + (node) => node.type === "decl" || node.type === "comment" + ); + if (nodes.length) { + for (const node of nodes) { + parentNode.removeChild(node); + } + const wrappedRule = new require$$0$1.Rule({ + nodes, + selector: "&" + }); + parentNode.prepend(wrappedRule); + } +} +scopedPlugin.postcss = true; + +var sourceMap = {}; + +var sourceMapGenerator = {}; + +var base64Vlq = {}; + +var base64 = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredBase64; + +function requireBase64 () { + if (hasRequiredBase64) return base64; + hasRequiredBase64 = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + + /** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ + base64.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); + }; + + /** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ + base64.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' + + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + + var zero = 48; // '0' + var nine = 57; // '9' + + var plus = 43; // '+' + var slash = 47; // '/' + + var littleOffset = 26; + var numberOffset = 52; + + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } + + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } + + // 62: + + if (charCode == plus) { + return 62; + } + + // 63: / + if (charCode == slash) { + return 63; + } + + // Invalid base64 digit. + return -1; + }; + return base64; +} + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredBase64Vlq; + +function requireBase64Vlq () { + if (hasRequiredBase64Vlq) return base64Vlq; + hasRequiredBase64Vlq = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS 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 + * OWNER 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. + */ + + var base64 = /*@__PURE__*/ requireBase64(); + + // A single base 64 digit can contain 6 bits of data. For the base 64 variable + // length quantities we use in the source map spec, the first bit is the sign, + // the next four bits are the actual value, and the 6th bit is the + // continuation bit. The continuation bit tells us whether there are more + // digits in this value following this digit. + // + // Continuation + // | Sign + // | | + // V V + // 101011 + + var VLQ_BASE_SHIFT = 5; + + // binary: 100000 + var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + + // binary: 011111 + var VLQ_BASE_MASK = VLQ_BASE - 1; + + // binary: 100000 + var VLQ_CONTINUATION_BIT = VLQ_BASE; + + /** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ + function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; + } + + /** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ + function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; + } + + /** + * Returns the base 64 VLQ encoded value. + */ + base64Vlq.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; + }; + + /** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ + base64Vlq.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; + }; + return base64Vlq; +} + +var util$1 = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredUtil$1; + +function requireUtil$1 () { + if (hasRequiredUtil$1) return util$1; + hasRequiredUtil$1 = 1; + (function (exports) { + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + /** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ + function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } + } + exports.getArg = getArg; + + var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; + var dataUrlRegexp = /^data:.+\,.+$/; + + function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; + } + exports.urlParse = urlParse; + + function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port; + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; + } + exports.urlGenerate = urlGenerate; + + /** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '<dir>/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ + function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + + var parts = path.split(/\/+/); + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; + } + exports.normalize = normalize; + + /** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ + function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; + } + exports.join = join; + + exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || urlRegexp.test(aPath); + }; + + /** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ + function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); + } + exports.relative = relative; + + var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); + }()); + + function identity (s) { + return s; + } + + /** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ + function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; + } + exports.toSetString = supportsNullProto ? identity : toSetString; + + function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; + } + exports.fromSetString = supportsNullProto ? identity : fromSetString; + + function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; + } + + /** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ + function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByOriginalPositions = compareByOriginalPositions; + + /** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ + function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + + function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 === null) { + return 1; // aStr2 !== null + } + + if (aStr2 === null) { + return -1; // aStr1 !== null + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; + } + + /** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ + function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + + /** + * Strip any JSON XSSI avoidance prefix from the string (as documented + * in the source maps specification), and then parse the string as + * JSON. + */ + function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); + } + exports.parseSourceMapInput = parseSourceMapInput; + + /** + * Compute the URL of a source given the the source root, the source's + * URL, and the source map's URL. + */ + function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ''; + + if (sourceRoot) { + // This follows what Chrome does. + if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { + sourceRoot += '/'; + } + // The spec says: + // Line 4: An optional source root, useful for relocating source + // files on a server or removing repeated values in the + // “sources” entry. This value is prepended to the individual + // entries in the “source” field. + sourceURL = sourceRoot + sourceURL; + } + + // Historically, SourceMapConsumer did not take the sourceMapURL as + // a parameter. This mode is still somewhat supported, which is why + // this code block is conditional. However, it's preferable to pass + // the source map URL to SourceMapConsumer, so that this function + // can implement the source URL resolution algorithm as outlined in + // the spec. This block is basically the equivalent of: + // new URL(sourceURL, sourceMapURL).toString() + // ... except it avoids using URL, which wasn't available in the + // older releases of node still supported by this library. + // + // The spec says: + // If the sources are not absolute URLs after prepending of the + // “sourceRoot”, the sources are resolved relative to the + // SourceMap (like resolving script src in a html document). + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + // Strip the last path component, but keep the "/". + var index = parsed.path.lastIndexOf('/'); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + + return normalize(sourceURL); + } + exports.computeSourceURL = computeSourceURL; + } (util$1)); + return util$1; +} + +var arraySet = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredArraySet; + +function requireArraySet () { + if (hasRequiredArraySet) return arraySet; + hasRequiredArraySet = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = /*@__PURE__*/ requireUtil$1(); + var has = Object.prototype.hasOwnProperty; + var hasNativeMap = typeof Map !== "undefined"; + + /** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ + function ArraySet() { + this._array = []; + this._set = hasNativeMap ? new Map() : Object.create(null); + } + + /** + * Static method for creating ArraySet instances from an existing array. + */ + ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; + }; + + /** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ + ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; + }; + + /** + * Add the given string to this set. + * + * @param String aStr + */ + ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } + }; + + /** + * Is the given string a member of this set? + * + * @param String aStr + */ + ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } + }; + + /** + * What is the index of the given string in the array? + * + * @param String aStr + */ + ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + + throw new Error('"' + aStr + '" is not in the set.'); + }; + + /** + * What is the element at the given index? + * + * @param Number aIdx + */ + ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); + }; + + /** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ + ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); + }; + + arraySet.ArraySet = ArraySet; + return arraySet; +} + +var mappingList = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredMappingList; + +function requireMappingList () { + if (hasRequiredMappingList) return mappingList; + hasRequiredMappingList = 1; + /* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = /*@__PURE__*/ requireUtil$1(); + + /** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ + function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; + } + + /** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ + function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; + } + + /** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ + MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + + /** + * Add the given source mapping. + * + * @param Object aMapping + */ + MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } + }; + + /** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ + MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; + }; + + mappingList.MappingList = MappingList; + return mappingList; +} + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredSourceMapGenerator; + +function requireSourceMapGenerator () { + if (hasRequiredSourceMapGenerator) return sourceMapGenerator; + hasRequiredSourceMapGenerator = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var base64VLQ = /*@__PURE__*/ requireBase64Vlq(); + var util = /*@__PURE__*/ requireUtil$1(); + var ArraySet = /*@__PURE__*/ requireArraySet().ArraySet; + var MappingList = /*@__PURE__*/ requireMappingList().MappingList; + + /** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ + function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; + } + + SourceMapGenerator.prototype._version = 3; + + /** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ + SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + }); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + + /** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ + SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + + /** + * Set the source content for a source file. + */ + SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + + /** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ + SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source); + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + + /** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ + SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { + throw new Error( + 'original.line and original.column are not numbers -- you probably meant to omit ' + + 'the original mapping entirely and only map the generated position. If so, pass ' + + 'null for the original mapping instead of an object with empty or null values.' + ); + } + + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + throw new Error('Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + + /** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ + SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = ''; + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + + SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + + /** + * Externalize the source map. + */ + SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + + /** + * Render the source map being generated to a string. + */ + SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + + sourceMapGenerator.SourceMapGenerator = SourceMapGenerator; + return sourceMapGenerator; +} + +var sourceMapConsumer = {}; + +var binarySearch = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredBinarySearch; + +function requireBinarySearch () { + if (hasRequiredBinarySearch) return binarySearch; + hasRequiredBinarySearch = 1; + (function (exports) { + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + exports.GREATEST_LOWER_BOUND = 1; + exports.LEAST_UPPER_BOUND = 2; + + /** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ + function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } + } + + /** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ + exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; + }; + } (binarySearch)); + return binarySearch; +} + +var quickSort = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredQuickSort; + +function requireQuickSort () { + if (hasRequiredQuickSort) return quickSort; + hasRequiredQuickSort = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + // It turns out that some (most?) JavaScript engines don't self-host + // `Array.prototype.sort`. This makes sense because C++ will likely remain + // faster than JS when doing raw CPU-intensive sorting. However, when using a + // custom comparator function, calling back and forth between the VM's C++ and + // JIT'd JS is rather slow *and* loses JIT type information, resulting in + // worse generated code for the comparator function than would be optimal. In + // fact, when sorting with a comparator, these costs outweigh the benefits of + // sorting in C++. By using our own JS-implemented Quick Sort (below), we get + // a ~3500ms mean speed-up in `bench/bench.html`. + + /** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ + function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; + } + + /** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ + function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); + } + + /** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ + function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } + } + + /** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ + quickSort.quickSort = function (ary, comparator) { + doQuickSort(ary, comparator, 0, ary.length - 1); + }; + return quickSort; +} + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredSourceMapConsumer; + +function requireSourceMapConsumer () { + if (hasRequiredSourceMapConsumer) return sourceMapConsumer; + hasRequiredSourceMapConsumer = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = /*@__PURE__*/ requireUtil$1(); + var binarySearch = /*@__PURE__*/ requireBinarySearch(); + var ArraySet = /*@__PURE__*/ requireArraySet().ArraySet; + var base64VLQ = /*@__PURE__*/ requireBase64Vlq(); + var quickSort = /*@__PURE__*/ requireQuickSort().quickSort; + + function SourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) + : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); + } + + SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); + }; + + /** + * The version of the source mapping spec that we are consuming. + */ + SourceMapConsumer.prototype._version = 3; + + // `__generatedMappings` and `__originalMappings` are arrays that hold the + // parsed mapping coordinates from the source map's "mappings" attribute. They + // are lazily instantiated, accessed via the `_generatedMappings` and + // `_originalMappings` getters respectively, and we only parse the mappings + // and create these arrays once queried for a source location. We jump through + // these hoops because there can be many thousands of mappings, and parsing + // them is expensive, so we only want to do it if we must. + // + // Each object in the arrays is of the form: + // + // { + // generatedLine: The line number in the generated code, + // generatedColumn: The column number in the generated code, + // source: The path to the original source file that generated this + // chunk of code, + // originalLine: The line number in the original source that + // corresponds to this chunk of generated code, + // originalColumn: The column number in the original source that + // corresponds to this chunk of generated code, + // name: The name of the original symbol which generated this chunk of + // code. + // } + // + // All properties except for `generatedLine` and `generatedColumn` can be + // `null`. + // + // `_generatedMappings` is ordered by the generated positions. + // + // `_originalMappings` is ordered by the original positions. + + SourceMapConsumer.prototype.__generatedMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappings; + } + }); + + SourceMapConsumer.prototype.__originalMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappings; + } + }); + + SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + + SourceMapConsumer.GENERATED_ORDER = 1; + SourceMapConsumer.ORIGINAL_ORDER = 2; + + SourceMapConsumer.GREATEST_LOWER_BOUND = 1; + SourceMapConsumer.LEAST_UPPER_BOUND = 2; + + /** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ + SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + mappings.map(function (mapping) { + var source = mapping.source === null ? null : this._sources.at(mapping.source); + source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); + return { + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : this._names.at(mapping.name) + }; + }, this).forEach(aCallback, context); + }; + + /** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number is 1-based. + * - column: Optional. the column number in the original source. + * The column number is 0-based. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; + + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + }; + + sourceMapConsumer.SourceMapConsumer = SourceMapConsumer; + + /** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The first parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ + function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + if (sourceRoot) { + sourceRoot = util.normalize(sourceRoot); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); + + this._absoluteSources = this._sources.toArray().map(function (s) { + return util.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); + + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this._sourceMapURL = aSourceMapURL; + this.file = file; + } + + BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + + /** + * Utility function to find the index of a source. Returns -1 if not + * found. + */ + BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } + + // Maybe aSource is an absolute URL as returned by |sources|. In + // this case we can't simply undo the transform. + var i; + for (i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } + + return -1; + }; + + /** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @param String aSourceMapURL + * The URL at which the source map can be found (optional) + * @returns BasicSourceMapConsumer + */ + BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + smc._sourceMapURL = aSourceMapURL; + smc._absoluteSources = smc._sources.toArray().map(function (s) { + return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); + }); + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + + destOriginalMappings.push(destMapping); + } + + destGeneratedMappings.push(destMapping); + } + + quickSort(smc.__originalMappings, util.compareByOriginalPositions); + + return smc; + }; + + /** + * The version of the source mapping spec that we are consuming. + */ + BasicSourceMapConsumer.prototype._version = 3; + + /** + * The list of original sources. + */ + Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._absoluteSources.slice(); + } + }); + + /** + * Provide the JIT with a nice shape / hidden class. + */ + function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; + } + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + // Because each offset is encoded relative to the previous one, + // many segments often have the same encoding. We can exploit this + // fact by caching the parsed variable length fields of each segment, + // allowing us to avoid a second parse if we encounter the same + // segment again. + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); + + segment = cachedSegments[str]; + if (segment) { + index += str.length; + } else { + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } + + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } + + cachedSegments[str] = segment; + } + + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + originalMappings.push(mapping); + } + } + } + + quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); + this.__generatedMappings = generatedMappings; + + quickSort(originalMappings, util.compareByOriginalPositions); + this.__originalMappings = originalMappings; + }; + + /** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ + BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + + /** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ + BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ + BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + var index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + }; + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } + + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + }; + + sourceMapConsumer.BasicSourceMapConsumer = BasicSourceMapConsumer; + + /** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The first parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ + function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); + + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._sources = new ArraySet(); + this._names = new ArraySet(); + + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; + + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) + } + }); + } + + IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + + /** + * The version of the source mapping spec that we are consuming. + */ + IndexedSourceMapConsumer.prototype._version = 3; + + /** + * The list of original sources. + */ + Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } + }); + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ + IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + }; + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + + var source = section.consumer._sources.at(mapping.source); + source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = null; + if (mapping.name) { + name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + } + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + + sourceMapConsumer.IndexedSourceMapConsumer = IndexedSourceMapConsumer; + return sourceMapConsumer; +} + +var sourceNode = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredSourceNode; + +function requireSourceNode () { + if (hasRequiredSourceNode) return sourceNode; + hasRequiredSourceNode = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var SourceMapGenerator = /*@__PURE__*/ requireSourceMapGenerator().SourceMapGenerator; + var util = /*@__PURE__*/ requireUtil$1(); + + // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other + // operating systems these days (capturing the result). + var REGEX_NEWLINE = /(\r?\n)/; + + // Newline character code for charCodeAt() comparisons + var NEWLINE_CODE = 10; + + // Private symbol for identifying `SourceNode`s when multiple versions of + // the source-map library are loaded. This MUST NOT CHANGE across + // versions! + var isSourceNode = "$$$isSourceNode$$$"; + + /** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ + function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); + } + + /** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ + SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + // The last line of a file might not have a newline. + var newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[remainingLinesIndex] || ''; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex] || ''; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + + /** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + + /** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + + /** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ + SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } + }; + + /** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ + SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; + }; + + /** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ + SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; + }; + + /** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ + SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + + /** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ + SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + + /** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ + SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; + }; + + /** + * Returns the string representation of this source node along with a source + * map. + */ + SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; + }; + + sourceNode.SourceNode = SourceNode; + return sourceNode; +} + +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var hasRequiredSourceMap; + +function requireSourceMap () { + if (hasRequiredSourceMap) return sourceMap; + hasRequiredSourceMap = 1; + sourceMap.SourceMapGenerator = /*@__PURE__*/ requireSourceMapGenerator().SourceMapGenerator; + sourceMap.SourceMapConsumer = /*@__PURE__*/ requireSourceMapConsumer().SourceMapConsumer; + sourceMap.SourceNode = /*@__PURE__*/ requireSourceNode().SourceNode; + return sourceMap; +} + +var mergeSourceMap; +var hasRequiredMergeSourceMap; + +function requireMergeSourceMap () { + if (hasRequiredMergeSourceMap) return mergeSourceMap; + hasRequiredMergeSourceMap = 1; + var sourceMap = /*@__PURE__*/ requireSourceMap(); + var SourceMapConsumer = sourceMap.SourceMapConsumer; + var SourceMapGenerator = sourceMap.SourceMapGenerator; + + mergeSourceMap = merge; + + /** + * Merge old source map and new source map and return merged. + * If old or new source map value is falsy, return another one as it is. + * + * @param {object|string} [oldMap] old source map object + * @param {object|string} [newmap] new source map object + * @return {object|undefined} merged source map object, or undefined when both old and new source map are undefined + */ + function merge(oldMap, newMap) { + if (!oldMap) return newMap + if (!newMap) return oldMap + + var oldMapConsumer = new SourceMapConsumer(oldMap); + var newMapConsumer = new SourceMapConsumer(newMap); + var mergedMapGenerator = new SourceMapGenerator(); + + // iterate on new map and overwrite original position of new map with one of old map + newMapConsumer.eachMapping(function(m) { + // pass when `originalLine` is null. + // It occurs in case that the node does not have origin in original code. + if (m.originalLine == null) return + + var origPosInOldMap = oldMapConsumer.originalPositionFor({ + line: m.originalLine, + column: m.originalColumn + }); + + if (origPosInOldMap.source == null) return + + mergedMapGenerator.addMapping({ + original: { + line: origPosInOldMap.line, + column: origPosInOldMap.column + }, + generated: { + line: m.generatedLine, + column: m.generatedColumn + }, + source: origPosInOldMap.source, + name: origPosInOldMap.name + }); + }); + + var consumers = [oldMapConsumer, newMapConsumer]; + consumers.forEach(function(consumer) { + consumer.sources.forEach(function(sourceFile) { + mergedMapGenerator._sources.add(sourceFile); + var sourceContent = consumer.sourceContentFor(sourceFile); + if (sourceContent != null) { + mergedMapGenerator.setSourceContent(sourceFile, sourceContent); + } + }); + }); + + mergedMapGenerator._sourceRoot = oldMap.sourceRoot; + mergedMapGenerator._file = oldMap.file; + + return JSON.parse(mergedMapGenerator.toString()) + } + return mergeSourceMap; +} + +var mergeSourceMapExports = /*@__PURE__*/ requireMergeSourceMap(); +var merge = /*@__PURE__*/getDefaultExportFromCjs(mergeSourceMapExports); + +const scss = (source, map, options, load = require) => { + const nodeSass = load("sass"); + const { compileString, renderSync } = nodeSass; + const data = getSource(source, options.filename, options.additionalData); + let css; + let dependencies; + let sourceMap; + try { + if (compileString) { + const { pathToFileURL, fileURLToPath } = load("url"); + const result = compileString(data, { + ...options, + url: pathToFileURL(options.filename), + sourceMap: !!map + }); + css = result.css; + dependencies = result.loadedUrls.map((url) => fileURLToPath(url)); + sourceMap = map ? result.sourceMap : void 0; + } else { + const result = renderSync({ + ...options, + data, + file: options.filename, + outFile: options.filename, + sourceMap: !!map + }); + css = result.css.toString(); + dependencies = result.stats.includedFiles; + sourceMap = map ? JSON.parse(result.map.toString()) : void 0; + } + if (map) { + return { + code: css, + errors: [], + dependencies, + map: merge(map, sourceMap) + }; + } + return { code: css, errors: [], dependencies }; + } catch (e) { + return { code: "", errors: [e], dependencies: [] }; + } +}; +const sass = (source, map, options, load) => scss( + source, + map, + { + ...options, + indentedSyntax: true + }, + load +); +const less = (source, map, options, load = require) => { + const nodeLess = load("less"); + let result; + let error = null; + nodeLess.render( + getSource(source, options.filename, options.additionalData), + { ...options, syncImport: true }, + (err, output) => { + error = err; + result = output; + } + ); + if (error) return { code: "", errors: [error], dependencies: [] }; + const dependencies = result.imports; + if (map) { + return { + code: result.css.toString(), + map: merge(map, result.map), + errors: [], + dependencies + }; + } + return { + code: result.css.toString(), + errors: [], + dependencies + }; +}; +const styl = (source, map, options, load = require) => { + const nodeStylus = load("stylus"); + try { + const ref = nodeStylus(source, options); + if (map) ref.set("sourcemap", { inline: false, comment: false }); + const result = ref.render(); + const dependencies = ref.deps(); + if (map) { + return { + code: result, + map: merge(map, ref.sourcemap), + errors: [], + dependencies + }; + } + return { code: result, errors: [], dependencies }; + } catch (e) { + return { code: "", errors: [e], dependencies: [] }; + } +}; +function getSource(source, filename, additionalData) { + if (!additionalData) return source; + if (shared.isFunction(additionalData)) { + return additionalData(source, filename); + } + return additionalData + source; +} +const processors = { + less, + sass, + scss, + styl, + stylus: styl +}; + +var build = {exports: {}}; + +var fs = {}; + +var hasRequiredFs; + +function requireFs () { + if (hasRequiredFs) return fs; + hasRequiredFs = 1; + + Object.defineProperty(fs, "__esModule", { + value: true + }); + fs.getFileSystem = getFileSystem; + fs.setFileSystem = setFileSystem; + let fileSystem = { + readFile: () => { + throw Error("readFile not implemented"); + }, + writeFile: () => { + throw Error("writeFile not implemented"); + } + }; + + function setFileSystem(fs) { + fileSystem.readFile = fs.readFile; + fileSystem.writeFile = fs.writeFile; + } + + function getFileSystem() { + return fileSystem; + } + return fs; +} + +var pluginFactory = {}; + +var unquote = {}; + +var hasRequiredUnquote; + +function requireUnquote () { + if (hasRequiredUnquote) return unquote; + hasRequiredUnquote = 1; + + Object.defineProperty(unquote, "__esModule", { + value: true + }); + unquote.default = unquote$1; + // copied from https://github.com/lakenen/node-unquote + const reg = /['"]/; + + function unquote$1(str) { + if (!str) { + return ""; + } + + if (reg.test(str.charAt(0))) { + str = str.substr(1); + } + + if (reg.test(str.charAt(str.length - 1))) { + str = str.substr(0, str.length - 1); + } + + return str; + } + return unquote; +} + +var Parser = {}; + +var replaceValueSymbols_1; +var hasRequiredReplaceValueSymbols; + +function requireReplaceValueSymbols () { + if (hasRequiredReplaceValueSymbols) return replaceValueSymbols_1; + hasRequiredReplaceValueSymbols = 1; + const matchValueName = /[$]?[\w-]+/g; + + const replaceValueSymbols = (value, replacements) => { + let matches; + + while ((matches = matchValueName.exec(value))) { + const replacement = replacements[matches[0]]; + + if (replacement) { + value = + value.slice(0, matches.index) + + replacement + + value.slice(matchValueName.lastIndex); + + matchValueName.lastIndex -= matches[0].length - replacement.length; + } + } + + return value; + }; + + replaceValueSymbols_1 = replaceValueSymbols; + return replaceValueSymbols_1; +} + +var replaceSymbols_1; +var hasRequiredReplaceSymbols; + +function requireReplaceSymbols () { + if (hasRequiredReplaceSymbols) return replaceSymbols_1; + hasRequiredReplaceSymbols = 1; + const replaceValueSymbols = /*@__PURE__*/ requireReplaceValueSymbols(); + + const replaceSymbols = (css, replacements) => { + css.walk((node) => { + if (node.type === "decl" && node.value) { + node.value = replaceValueSymbols(node.value.toString(), replacements); + } else if (node.type === "rule" && node.selector) { + node.selector = replaceValueSymbols( + node.selector.toString(), + replacements + ); + } else if (node.type === "atrule" && node.params) { + node.params = replaceValueSymbols(node.params.toString(), replacements); + } + }); + }; + + replaceSymbols_1 = replaceSymbols; + return replaceSymbols_1; +} + +var extractICSS_1; +var hasRequiredExtractICSS; + +function requireExtractICSS () { + if (hasRequiredExtractICSS) return extractICSS_1; + hasRequiredExtractICSS = 1; + const importPattern = /^:import\(("[^"]*"|'[^']*'|[^"']+)\)$/; + const balancedQuotes = /^("[^"]*"|'[^']*'|[^"']+)$/; + + const getDeclsObject = (rule) => { + const object = {}; + + rule.walkDecls((decl) => { + const before = decl.raws.before ? decl.raws.before.trim() : ""; + + object[before + decl.prop] = decl.value; + }); + + return object; + }; + /** + * + * @param {string} css + * @param {boolean} removeRules + * @param {'auto' | 'rule' | 'at-rule'} mode + */ + const extractICSS = (css, removeRules = true, mode = "auto") => { + const icssImports = {}; + const icssExports = {}; + + function addImports(node, path) { + const unquoted = path.replace(/'|"/g, ""); + icssImports[unquoted] = Object.assign( + icssImports[unquoted] || {}, + getDeclsObject(node) + ); + + if (removeRules) { + node.remove(); + } + } + + function addExports(node) { + Object.assign(icssExports, getDeclsObject(node)); + if (removeRules) { + node.remove(); + } + } + + css.each((node) => { + if (node.type === "rule" && mode !== "at-rule") { + if (node.selector.slice(0, 7) === ":import") { + const matches = importPattern.exec(node.selector); + + if (matches) { + addImports(node, matches[1]); + } + } + + if (node.selector === ":export") { + addExports(node); + } + } + + if (node.type === "atrule" && mode !== "rule") { + if (node.name === "icss-import") { + const matches = balancedQuotes.exec(node.params); + + if (matches) { + addImports(node, matches[1]); + } + } + if (node.name === "icss-export") { + addExports(node); + } + } + }); + + return { icssImports, icssExports }; + }; + + extractICSS_1 = extractICSS; + return extractICSS_1; +} + +var createICSSRules_1; +var hasRequiredCreateICSSRules; + +function requireCreateICSSRules () { + if (hasRequiredCreateICSSRules) return createICSSRules_1; + hasRequiredCreateICSSRules = 1; + const createImports = (imports, postcss, mode = "rule") => { + return Object.keys(imports).map((path) => { + const aliases = imports[path]; + const declarations = Object.keys(aliases).map((key) => + postcss.decl({ + prop: key, + value: aliases[key], + raws: { before: "\n " }, + }) + ); + + const hasDeclarations = declarations.length > 0; + + const rule = + mode === "rule" + ? postcss.rule({ + selector: `:import('${path}')`, + raws: { after: hasDeclarations ? "\n" : "" }, + }) + : postcss.atRule({ + name: "icss-import", + params: `'${path}'`, + raws: { after: hasDeclarations ? "\n" : "" }, + }); + + if (hasDeclarations) { + rule.append(declarations); + } + + return rule; + }); + }; + + const createExports = (exports, postcss, mode = "rule") => { + const declarations = Object.keys(exports).map((key) => + postcss.decl({ + prop: key, + value: exports[key], + raws: { before: "\n " }, + }) + ); + + if (declarations.length === 0) { + return []; + } + const rule = + mode === "rule" + ? postcss.rule({ + selector: `:export`, + raws: { after: "\n" }, + }) + : postcss.atRule({ + name: "icss-export", + raws: { after: "\n" }, + }); + + rule.append(declarations); + + return [rule]; + }; + + const createICSSRules = (imports, exports, postcss, mode) => [ + ...createImports(imports, postcss, mode), + ...createExports(exports, postcss, mode), + ]; + + createICSSRules_1 = createICSSRules; + return createICSSRules_1; +} + +var src$4; +var hasRequiredSrc$4; + +function requireSrc$4 () { + if (hasRequiredSrc$4) return src$4; + hasRequiredSrc$4 = 1; + const replaceValueSymbols = /*@__PURE__*/ requireReplaceValueSymbols(); + const replaceSymbols = /*@__PURE__*/ requireReplaceSymbols(); + const extractICSS = /*@__PURE__*/ requireExtractICSS(); + const createICSSRules = /*@__PURE__*/ requireCreateICSSRules(); + + src$4 = { + replaceValueSymbols, + replaceSymbols, + extractICSS, + createICSSRules, + }; + return src$4; +} + +var hasRequiredParser$1; + +function requireParser$1 () { + if (hasRequiredParser$1) return Parser; + hasRequiredParser$1 = 1; + + Object.defineProperty(Parser, "__esModule", { + value: true + }); + Parser.default = void 0; + + var _icssUtils = /*@__PURE__*/ requireSrc$4(); + + // Initially copied from https://github.com/css-modules/css-modules-loader-core + const importRegexp = /^:import\((.+)\)$/; + + let Parser$1 = class Parser { + constructor(pathFetcher, trace) { + this.pathFetcher = pathFetcher; + this.plugin = this.plugin.bind(this); + this.exportTokens = {}; + this.translations = {}; + this.trace = trace; + } + + plugin() { + const parser = this; + return { + postcssPlugin: "css-modules-parser", + + async OnceExit(css) { + await Promise.all(parser.fetchAllImports(css)); + parser.linkImportedSymbols(css); + return parser.extractExports(css); + } + + }; + } + + fetchAllImports(css) { + let imports = []; + css.each(node => { + if (node.type == "rule" && node.selector.match(importRegexp)) { + imports.push(this.fetchImport(node, css.source.input.from, imports.length)); + } + }); + return imports; + } + + linkImportedSymbols(css) { + (0, _icssUtils.replaceSymbols)(css, this.translations); + } + + extractExports(css) { + css.each(node => { + if (node.type == "rule" && node.selector == ":export") this.handleExport(node); + }); + } + + handleExport(exportNode) { + exportNode.each(decl => { + if (decl.type == "decl") { + Object.keys(this.translations).forEach(translation => { + decl.value = decl.value.replace(translation, this.translations[translation]); + }); + this.exportTokens[decl.prop] = decl.value; + } + }); + exportNode.remove(); + } + + async fetchImport(importNode, relativeTo, depNr) { + const file = importNode.selector.match(importRegexp)[1]; + const depTrace = this.trace + String.fromCharCode(depNr); + const exports = await this.pathFetcher(file, relativeTo, depTrace); + + try { + importNode.each(decl => { + if (decl.type == "decl") { + this.translations[decl.prop] = exports[decl.value]; + } + }); + importNode.remove(); + } catch (err) { + console.log(err); + } + } + + }; + + Parser.default = Parser$1; + return Parser; +} + +var saveJSON = {}; + +var hasRequiredSaveJSON; + +function requireSaveJSON () { + if (hasRequiredSaveJSON) return saveJSON; + hasRequiredSaveJSON = 1; + + Object.defineProperty(saveJSON, "__esModule", { + value: true + }); + saveJSON.default = saveJSON$1; + + var _fs = /*@__PURE__*/ requireFs(); + + function saveJSON$1(cssFile, json) { + return new Promise((resolve, reject) => { + const { + writeFile + } = (0, _fs.getFileSystem)(); + writeFile(`${cssFile}.json`, JSON.stringify(json), e => e ? reject(e) : resolve(json)); + }); + } + return saveJSON; +} + +var localsConvention = {}; + +/** + * lodash (Custom Build) <https://lodash.com/> + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors <https://jquery.org/> + * Released under MIT license <https://lodash.com/license> + * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +var lodash_camelcase; +var hasRequiredLodash_camelcase; + +function requireLodash_camelcase () { + if (hasRequiredLodash_camelcase) return lodash_camelcase; + hasRequiredLodash_camelcase = 1; + + /** `Object#toString` result references. */ + var symbolTag = '[object Symbol]'; + + /** Used to match words composed of alphanumeric characters. */ + var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + + /** Used to match Latin Unicode letters (excluding mathematical operators). */ + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + + /** Used to compose unicode character classes. */ + var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboSymbolsRange = '\\u20d0-\\u20f0', + rsDingbatRange = '\\u2700-\\u27bf', + rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', + rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', + rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', + rsPunctuationRange = '\\u2000-\\u206f', + rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', + rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', + rsVarRange = '\\ufe0e\\ufe0f', + rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + + /** Used to compose unicode capture groups. */ + var rsApos = "['\u2019]", + rsAstral = '[' + rsAstralRange + ']', + rsBreak = '[' + rsBreakRange + ']', + rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']', + rsDigits = '\\d+', + rsDingbat = '[' + rsDingbatRange + ']', + rsLower = '[' + rsLowerRange + ']', + rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsUpper = '[' + rsUpperRange + ']', + rsZWJ = '\\u200d'; + + /** Used to compose unicode regexes. */ + var rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')', + rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')', + rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', + rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', + reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + + /** Used to match apostrophes. */ + var reApos = RegExp(rsApos, 'g'); + + /** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ + var reComboMark = RegExp(rsCombo, 'g'); + + /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ + var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + + /** Used to match complex or compound words. */ + var reUnicodeWord = RegExp([ + rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', + rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')', + rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr, + rsUpper + '+' + rsOptUpperContr, + rsDigits, + rsEmoji + ].join('|'), 'g'); + + /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ + var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']'); + + /** Used to detect strings that need a more robust regexp to match words. */ + var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + + /** Used to map Latin Unicode letters to basic Latin letters. */ + var deburredLetters = { + // Latin-1 Supplement block. + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss', + // Latin Extended-A block. + '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', + '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', + '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', + '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', + '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', + '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', + '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', + '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', + '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', + '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', + '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', + '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', + '\u0134': 'J', '\u0135': 'j', + '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', + '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', + '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', + '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', + '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', + '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', + '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', + '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', + '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', + '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', + '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', + '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', + '\u0163': 't', '\u0165': 't', '\u0167': 't', + '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', + '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', + '\u0174': 'W', '\u0175': 'w', + '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', + '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', + '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', + '\u0132': 'IJ', '\u0133': 'ij', + '\u0152': 'Oe', '\u0153': 'oe', + '\u0149': "'n", '\u017f': 'ss' + }; + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; + + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); + + /** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array ? array.length : 0; + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + + /** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function asciiToArray(string) { + return string.split(''); + } + + /** + * Splits an ASCII `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function asciiWords(string) { + return string.match(reAsciiWord) || []; + } + + /** + * The base implementation of `_.propertyOf` without support for deep paths. + * + * @private + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyOf(object) { + return function(key) { + return object == null ? undefined : object[key]; + }; + } + + /** + * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A + * letters to basic Latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ + var deburrLetter = basePropertyOf(deburredLetters); + + /** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ + function hasUnicode(string) { + return reHasUnicode.test(string); + } + + /** + * Checks if `string` contains a word composed of Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a word is found, else `false`. + */ + function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); + } + + /** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function stringToArray(string) { + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); + } + + /** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } + + /** + * Splits a Unicode `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function unicodeWords(string) { + return string.match(reUnicodeWord) || []; + } + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var objectToString = objectProto.toString; + + /** Built-in value references. */ + var Symbol = root.Symbol; + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + /** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + /** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -Infinity) ? '-0' : result; + } + + /** + * Casts `array` to a slice if it's needed. + * + * @private + * @param {Array} array The array to inspect. + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. + */ + function castSlice(array, start, end) { + var length = array.length; + end = end === undefined ? length : end; + return (!start && end >= length) ? array : baseSlice(array, start, end); + } + + /** + * Creates a function like `_.lowerFirst`. + * + * @private + * @param {string} methodName The name of the `String` case method to use. + * @returns {Function} Returns the new case function. + */ + function createCaseFirst(methodName) { + return function(string) { + string = toString(string); + + var strSymbols = hasUnicode(string) + ? stringToArray(string) + : undefined; + + var chr = strSymbols + ? strSymbols[0] + : string.charAt(0); + + var trailing = strSymbols + ? castSlice(strSymbols, 1).join('') + : string.slice(1); + + return chr[methodName]() + trailing; + }; + } + + /** + * Creates a function like `_.camelCase`. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ + function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); + }; + } + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return !!value && typeof value == 'object'; + } + + /** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); + } + + /** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {string} Returns the string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ + function toString(value) { + return value == null ? '' : baseToString(value); + } + + /** + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar--'); + * // => 'fooBar' + * + * _.camelCase('__FOO_BAR__'); + * // => 'fooBar' + */ + var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? capitalize(word) : word); + }); + + /** + * Converts the first character of `string` to upper case and the remaining + * to lower case. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('FRED'); + * // => 'Fred' + */ + function capitalize(string) { + return upperFirst(toString(string).toLowerCase()); + } + + /** + * Deburrs `string` by converting + * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) + * letters to basic Latin letters and removing + * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ + function deburr(string) { + string = toString(string); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); + } + + /** + * Converts the first character of `string` to upper case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.upperFirst('fred'); + * // => 'Fred' + * + * _.upperFirst('FRED'); + * // => 'FRED' + */ + var upperFirst = createCaseFirst('toUpperCase'); + + /** + * Splits `string` into an array of its words. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {RegExp|string} [pattern] The pattern to match words. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the words of `string`. + * @example + * + * _.words('fred, barney, & pebbles'); + * // => ['fred', 'barney', 'pebbles'] + * + * _.words('fred, barney, & pebbles', /[^, ]+/g); + * // => ['fred', 'barney', '&', 'pebbles'] + */ + function words(string, pattern, guard) { + string = toString(string); + pattern = pattern; + + if (pattern === undefined) { + return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); + } + return string.match(pattern) || []; + } + + lodash_camelcase = camelCase; + return lodash_camelcase; +} + +var hasRequiredLocalsConvention; + +function requireLocalsConvention () { + if (hasRequiredLocalsConvention) return localsConvention; + hasRequiredLocalsConvention = 1; + + Object.defineProperty(localsConvention, "__esModule", { + value: true + }); + localsConvention.makeLocalsConventionReducer = makeLocalsConventionReducer; + + var _lodash = _interopRequireDefault(/*@__PURE__*/ requireLodash_camelcase()); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function dashesCamelCase(string) { + return string.replace(/-+(\w)/g, (_, firstLetter) => firstLetter.toUpperCase()); + } + + function makeLocalsConventionReducer(localsConvention, inputFile) { + const isFunc = typeof localsConvention === "function"; + return (tokens, [className, value]) => { + if (isFunc) { + const convention = localsConvention(className, value, inputFile); + tokens[convention] = value; + return tokens; + } + + switch (localsConvention) { + case "camelCase": + tokens[className] = value; + tokens[(0, _lodash.default)(className)] = value; + break; + + case "camelCaseOnly": + tokens[(0, _lodash.default)(className)] = value; + break; + + case "dashes": + tokens[className] = value; + tokens[dashesCamelCase(className)] = value; + break; + + case "dashesOnly": + tokens[dashesCamelCase(className)] = value; + break; + } + + return tokens; + }; + } + return localsConvention; +} + +var FileSystemLoader = {}; + +var hasRequiredFileSystemLoader; + +function requireFileSystemLoader () { + if (hasRequiredFileSystemLoader) return FileSystemLoader; + hasRequiredFileSystemLoader = 1; + + Object.defineProperty(FileSystemLoader, "__esModule", { + value: true + }); + FileSystemLoader.default = void 0; + + var _postcss = _interopRequireDefault(require$$0$1); + + var _path = _interopRequireDefault(path$1); + + var _Parser = _interopRequireDefault(/*@__PURE__*/ requireParser$1()); + + var _fs = /*@__PURE__*/ requireFs(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // Initially copied from https://github.com/css-modules/css-modules-loader-core + class Core { + constructor(plugins) { + this.plugins = plugins || Core.defaultPlugins; + } + + async load(sourceString, sourcePath, trace, pathFetcher) { + const parser = new _Parser.default(pathFetcher, trace); + const plugins = this.plugins.concat([parser.plugin()]); + const result = await (0, _postcss.default)(plugins).process(sourceString, { + from: sourcePath + }); + return { + injectableSource: result.css, + exportTokens: parser.exportTokens + }; + } + + } // Sorts dependencies in the following way: + // AAA comes before AA and A + // AB comes after AA and before A + // All Bs come after all As + // This ensures that the files are always returned in the following order: + // - In the order they were required, except + // - After all their dependencies + + + const traceKeySorter = (a, b) => { + if (a.length < b.length) { + return a < b.substring(0, a.length) ? -1 : 1; + } + + if (a.length > b.length) { + return a.substring(0, b.length) <= b ? -1 : 1; + } + + return a < b ? -1 : 1; + }; + + let FileSystemLoader$1 = class FileSystemLoader { + constructor(root, plugins, fileResolve) { + if (root === "/" && process.platform === "win32") { + const cwdDrive = process.cwd().slice(0, 3); + + if (!/^[A-Za-z]:\\$/.test(cwdDrive)) { + throw new Error(`Failed to obtain root from "${process.cwd()}".`); + } + + root = cwdDrive; + } + + this.root = root; + this.fileResolve = fileResolve; + this.sources = {}; + this.traces = {}; + this.importNr = 0; + this.core = new Core(plugins); + this.tokensByFile = {}; + this.fs = (0, _fs.getFileSystem)(); + } + + async fetch(_newPath, relativeTo, _trace) { + const newPath = _newPath.replace(/^["']|["']$/g, ""); + + const trace = _trace || String.fromCharCode(this.importNr++); + + const useFileResolve = typeof this.fileResolve === "function"; + const fileResolvedPath = useFileResolve ? await this.fileResolve(newPath, relativeTo) : await Promise.resolve(); + + if (fileResolvedPath && !_path.default.isAbsolute(fileResolvedPath)) { + throw new Error('The returned path from the "fileResolve" option must be absolute.'); + } + + const relativeDir = _path.default.dirname(relativeTo); + + const rootRelativePath = fileResolvedPath || _path.default.resolve(relativeDir, newPath); + + let fileRelativePath = fileResolvedPath || _path.default.resolve(_path.default.resolve(this.root, relativeDir), newPath); // if the path is not relative or absolute, try to resolve it in node_modules + + + if (!useFileResolve && newPath[0] !== "." && !_path.default.isAbsolute(newPath)) { + try { + fileRelativePath = require.resolve(newPath); + } catch (e) {// noop + } + } + + const tokens = this.tokensByFile[fileRelativePath]; + if (tokens) return tokens; + return new Promise((resolve, reject) => { + this.fs.readFile(fileRelativePath, "utf-8", async (err, source) => { + if (err) reject(err); + const { + injectableSource, + exportTokens + } = await this.core.load(source, rootRelativePath, trace, this.fetch.bind(this)); + this.sources[fileRelativePath] = injectableSource; + this.traces[trace] = fileRelativePath; + this.tokensByFile[fileRelativePath] = exportTokens; + resolve(exportTokens); + }); + }); + } + + get finalSource() { + const traces = this.traces; + const sources = this.sources; + let written = new Set(); + return Object.keys(traces).sort(traceKeySorter).map(key => { + const filename = traces[key]; + + if (written.has(filename)) { + return null; + } + + written.add(filename); + return sources[filename]; + }).join(""); + } + + }; + + FileSystemLoader.default = FileSystemLoader$1; + return FileSystemLoader; +} + +var scoping = {}; + +var src$3 = {exports: {}}; + +var topologicalSort_1; +var hasRequiredTopologicalSort; + +function requireTopologicalSort () { + if (hasRequiredTopologicalSort) return topologicalSort_1; + hasRequiredTopologicalSort = 1; + const PERMANENT_MARKER = 2; + const TEMPORARY_MARKER = 1; + + function createError(node, graph) { + const er = new Error("Nondeterministic import's order"); + + const related = graph[node]; + const relatedNode = related.find( + (relatedNode) => graph[relatedNode].indexOf(node) > -1 + ); + + er.nodes = [node, relatedNode]; + + return er; + } + + function walkGraph(node, graph, state, result, strict) { + if (state[node] === PERMANENT_MARKER) { + return; + } + + if (state[node] === TEMPORARY_MARKER) { + if (strict) { + return createError(node, graph); + } + + return; + } + + state[node] = TEMPORARY_MARKER; + + const children = graph[node]; + const length = children.length; + + for (let i = 0; i < length; ++i) { + const error = walkGraph(children[i], graph, state, result, strict); + + if (error instanceof Error) { + return error; + } + } + + state[node] = PERMANENT_MARKER; + + result.push(node); + } + + function topologicalSort(graph, strict) { + const result = []; + const state = {}; + + const nodes = Object.keys(graph); + const length = nodes.length; + + for (let i = 0; i < length; ++i) { + const er = walkGraph(nodes[i], graph, state, result, strict); + + if (er instanceof Error) { + return er; + } + } + + return result; + } + + topologicalSort_1 = topologicalSort; + return topologicalSort_1; +} + +var hasRequiredSrc$3; + +function requireSrc$3 () { + if (hasRequiredSrc$3) return src$3.exports; + hasRequiredSrc$3 = 1; + const topologicalSort = /*@__PURE__*/ requireTopologicalSort(); + + const matchImports = /^(.+?)\s+from\s+(?:"([^"]+)"|'([^']+)'|(global))$/; + const icssImport = /^:import\((?:"([^"]+)"|'([^']+)')\)/; + + const VISITED_MARKER = 1; + + /** + * :import('G') {} + * + * Rule + * composes: ... from 'A' + * composes: ... from 'B' + + * Rule + * composes: ... from 'A' + * composes: ... from 'A' + * composes: ... from 'C' + * + * Results in: + * + * graph: { + * G: [], + * A: [], + * B: ['A'], + * C: ['A'], + * } + */ + function addImportToGraph(importId, parentId, graph, visited) { + const siblingsId = parentId + "_" + "siblings"; + const visitedId = parentId + "_" + importId; + + if (visited[visitedId] !== VISITED_MARKER) { + if (!Array.isArray(visited[siblingsId])) { + visited[siblingsId] = []; + } + + const siblings = visited[siblingsId]; + + if (Array.isArray(graph[importId])) { + graph[importId] = graph[importId].concat(siblings); + } else { + graph[importId] = siblings.slice(); + } + + visited[visitedId] = VISITED_MARKER; + + siblings.push(importId); + } + } + + src$3.exports = (options = {}) => { + let importIndex = 0; + const createImportedName = + typeof options.createImportedName !== "function" + ? (importName /*, path*/) => + `i__imported_${importName.replace(/\W/g, "_")}_${importIndex++}` + : options.createImportedName; + const failOnWrongOrder = options.failOnWrongOrder; + + return { + postcssPlugin: "postcss-modules-extract-imports", + prepare() { + const graph = {}; + const visited = {}; + const existingImports = {}; + const importDecls = {}; + const imports = {}; + + return { + Once(root, postcss) { + // Check the existing imports order and save refs + root.walkRules((rule) => { + const matches = icssImport.exec(rule.selector); + + if (matches) { + const [, /*match*/ doubleQuotePath, singleQuotePath] = matches; + const importPath = doubleQuotePath || singleQuotePath; + + addImportToGraph(importPath, "root", graph, visited); + + existingImports[importPath] = rule; + } + }); + + root.walkDecls(/^composes$/, (declaration) => { + const multiple = declaration.value.split(","); + const values = []; + + multiple.forEach((value) => { + const matches = value.trim().match(matchImports); + + if (!matches) { + values.push(value); + + return; + } + + let tmpSymbols; + let [ + , + /*match*/ symbols, + doubleQuotePath, + singleQuotePath, + global, + ] = matches; + + if (global) { + // Composing globals simply means changing these classes to wrap them in global(name) + tmpSymbols = symbols.split(/\s+/).map((s) => `global(${s})`); + } else { + const importPath = doubleQuotePath || singleQuotePath; + + let parent = declaration.parent; + let parentIndexes = ""; + + while (parent.type !== "root") { + parentIndexes = + parent.parent.index(parent) + "_" + parentIndexes; + parent = parent.parent; + } + + const { selector } = declaration.parent; + const parentRule = `_${parentIndexes}${selector}`; + + addImportToGraph(importPath, parentRule, graph, visited); + + importDecls[importPath] = declaration; + imports[importPath] = imports[importPath] || {}; + + tmpSymbols = symbols.split(/\s+/).map((s) => { + if (!imports[importPath][s]) { + imports[importPath][s] = createImportedName(s, importPath); + } + + return imports[importPath][s]; + }); + } + + values.push(tmpSymbols.join(" ")); + }); + + declaration.value = values.join(", "); + }); + + const importsOrder = topologicalSort(graph, failOnWrongOrder); + + if (importsOrder instanceof Error) { + const importPath = importsOrder.nodes.find((importPath) => + // eslint-disable-next-line no-prototype-builtins + importDecls.hasOwnProperty(importPath) + ); + const decl = importDecls[importPath]; + + throw decl.error( + "Failed to resolve order of composed modules " + + importsOrder.nodes + .map((importPath) => "`" + importPath + "`") + .join(", ") + + ".", + { + plugin: "postcss-modules-extract-imports", + word: "composes", + } + ); + } + + let lastImportRule; + + importsOrder.forEach((path) => { + const importedSymbols = imports[path]; + let rule = existingImports[path]; + + if (!rule && importedSymbols) { + rule = postcss.rule({ + selector: `:import("${path}")`, + raws: { after: "\n" }, + }); + + if (lastImportRule) { + root.insertAfter(lastImportRule, rule); + } else { + root.prepend(rule); + } + } + + lastImportRule = rule; + + if (!importedSymbols) { + return; + } + + Object.keys(importedSymbols).forEach((importedSymbol) => { + rule.append( + postcss.decl({ + value: importedSymbol, + prop: importedSymbols[importedSymbol], + raws: { before: "\n " }, + }) + ); + }); + }); + }, + }; + }, + }; + }; + + src$3.exports.postcss = true; + return src$3.exports; +} + +var wasmHash = {exports: {}}; + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +var hasRequiredWasmHash; + +function requireWasmHash () { + if (hasRequiredWasmHash) return wasmHash.exports; + hasRequiredWasmHash = 1; + + // 65536 is the size of a wasm memory page + // 64 is the maximum chunk size for every possible wasm hash implementation + // 4 is the maximum number of bytes per char for string encoding (max is utf-8) + // ~3 makes sure that it's always a block of 4 chars, so avoid partially encoded bytes for base64 + const MAX_SHORT_STRING = Math.floor((65536 - 64) / 4) & -4; + + class WasmHash { + /** + * @param {WebAssembly.Instance} instance wasm instance + * @param {WebAssembly.Instance[]} instancesPool pool of instances + * @param {number} chunkSize size of data chunks passed to wasm + * @param {number} digestSize size of digest returned by wasm + */ + constructor(instance, instancesPool, chunkSize, digestSize) { + const exports = /** @type {any} */ (instance.exports); + + exports.init(); + + this.exports = exports; + this.mem = Buffer.from(exports.memory.buffer, 0, 65536); + this.buffered = 0; + this.instancesPool = instancesPool; + this.chunkSize = chunkSize; + this.digestSize = digestSize; + } + + reset() { + this.buffered = 0; + this.exports.init(); + } + + /** + * @param {Buffer | string} data data + * @param {BufferEncoding=} encoding encoding + * @returns {this} itself + */ + update(data, encoding) { + if (typeof data === "string") { + while (data.length > MAX_SHORT_STRING) { + this._updateWithShortString(data.slice(0, MAX_SHORT_STRING), encoding); + data = data.slice(MAX_SHORT_STRING); + } + + this._updateWithShortString(data, encoding); + + return this; + } + + this._updateWithBuffer(data); + + return this; + } + + /** + * @param {string} data data + * @param {BufferEncoding=} encoding encoding + * @returns {void} + */ + _updateWithShortString(data, encoding) { + const { exports, buffered, mem, chunkSize } = this; + + let endPos; + + if (data.length < 70) { + if (!encoding || encoding === "utf-8" || encoding === "utf8") { + endPos = buffered; + for (let i = 0; i < data.length; i++) { + const cc = data.charCodeAt(i); + + if (cc < 0x80) { + mem[endPos++] = cc; + } else if (cc < 0x800) { + mem[endPos] = (cc >> 6) | 0xc0; + mem[endPos + 1] = (cc & 0x3f) | 0x80; + endPos += 2; + } else { + // bail-out for weird chars + endPos += mem.write(data.slice(i), endPos, encoding); + break; + } + } + } else if (encoding === "latin1") { + endPos = buffered; + + for (let i = 0; i < data.length; i++) { + const cc = data.charCodeAt(i); + + mem[endPos++] = cc; + } + } else { + endPos = buffered + mem.write(data, buffered, encoding); + } + } else { + endPos = buffered + mem.write(data, buffered, encoding); + } + + if (endPos < chunkSize) { + this.buffered = endPos; + } else { + const l = endPos & ~(this.chunkSize - 1); + + exports.update(l); + + const newBuffered = endPos - l; + + this.buffered = newBuffered; + + if (newBuffered > 0) { + mem.copyWithin(0, l, endPos); + } + } + } + + /** + * @param {Buffer} data data + * @returns {void} + */ + _updateWithBuffer(data) { + const { exports, buffered, mem } = this; + const length = data.length; + + if (buffered + length < this.chunkSize) { + data.copy(mem, buffered, 0, length); + + this.buffered += length; + } else { + const l = (buffered + length) & ~(this.chunkSize - 1); + + if (l > 65536) { + let i = 65536 - buffered; + + data.copy(mem, buffered, 0, i); + exports.update(65536); + + const stop = l - buffered - 65536; + + while (i < stop) { + data.copy(mem, 0, i, i + 65536); + exports.update(65536); + i += 65536; + } + + data.copy(mem, 0, i, l - buffered); + + exports.update(l - buffered - i); + } else { + data.copy(mem, buffered, 0, l - buffered); + + exports.update(l); + } + + const newBuffered = length + buffered - l; + + this.buffered = newBuffered; + + if (newBuffered > 0) { + data.copy(mem, 0, length - newBuffered, length); + } + } + } + + digest(type) { + const { exports, buffered, mem, digestSize } = this; + + exports.final(buffered); + + this.instancesPool.push(this); + + const hex = mem.toString("latin1", 0, digestSize); + + if (type === "hex") { + return hex; + } + + if (type === "binary" || !type) { + return Buffer.from(hex, "hex"); + } + + return Buffer.from(hex, "hex").toString(type); + } + } + + const create = (wasmModule, instancesPool, chunkSize, digestSize) => { + if (instancesPool.length > 0) { + const old = instancesPool.pop(); + + old.reset(); + + return old; + } else { + return new WasmHash( + new WebAssembly.Instance(wasmModule), + instancesPool, + chunkSize, + digestSize + ); + } + }; + + wasmHash.exports = create; + wasmHash.exports.MAX_SHORT_STRING = MAX_SHORT_STRING; + return wasmHash.exports; +} + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +var xxhash64_1; +var hasRequiredXxhash64; + +function requireXxhash64 () { + if (hasRequiredXxhash64) return xxhash64_1; + hasRequiredXxhash64 = 1; + + const create = /*@__PURE__*/ requireWasmHash(); + + //#region wasm code: xxhash64 (../../../assembly/hash/xxhash64.asm.ts) --initialMemory 1 + const xxhash64 = new WebAssembly.Module( + Buffer.from( + // 1173 bytes + "AGFzbQEAAAABCAJgAX8AYAAAAwQDAQAABQMBAAEGGgV+AUIAC34BQgALfgFCAAt+AUIAC34BQgALByIEBGluaXQAAAZ1cGRhdGUAAQVmaW5hbAACBm1lbW9yeQIACrUIAzAAQtbrgu7q/Yn14AAkAELP1tO+0ser2UIkAUIAJAJC+erQ0OfJoeThACQDQgAkBAvUAQIBfwR+IABFBEAPCyMEIACtfCQEIwAhAiMBIQMjAiEEIwMhBQNAIAIgASkDAELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiECIAMgASkDCELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEDIAQgASkDEELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEEIAUgASkDGELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEFIAAgAUEgaiIBSw0ACyACJAAgAyQBIAQkAiAFJAMLqwYCAX8EfiMEQgBSBH4jACICQgGJIwEiA0IHiXwjAiIEQgyJfCMDIgVCEol8IAJCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0gA0LP1tO+0ser2UJ+Qh+JQoeVr6+Ytt6bnn9+hUKHla+vmLbem55/fkKdo7Xqg7GNivoAfSAEQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IAVCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0FQsXP2bLx5brqJwsjBCAArXx8IQIDQCABQQhqIABNBEAgAiABKQMAQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQhuJQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IQIgAUEIaiEBDAELCyABQQRqIABNBEACfyACIAE1AgBCh5Wvr5i23puef36FQheJQs/W077Sx6vZQn5C+fPd8Zn2masWfCECIAFBBGoLIQELA0AgACABRwRAIAIgATEAAELFz9my8eW66id+hUILiUKHla+vmLbem55/fiECIAFBAWohAQwBCwtBACACIAJCIYiFQs/W077Sx6vZQn4iAiACQh2IhUL5893xmfaZqxZ+IgIgAkIgiIUiAkIgiCIDQv//A4NCIIYgA0KAgPz/D4NCEIiEIgNC/4GAgPAfg0IQhiADQoD+g4CA4D+DQgiIhCIDQo+AvIDwgcAHg0IIhiADQvCBwIeAnoD4AINCBIiEIgNChoyYsODAgYMGfEIEiEKBgoSIkKDAgAGDQid+IANCsODAgYOGjJgwhHw3AwBBCCACQv////8PgyICQv//A4NCIIYgAkKAgPz/D4NCEIiEIgJC/4GAgPAfg0IQhiACQoD+g4CA4D+DQgiIhCICQo+AvIDwgcAHg0IIhiACQvCBwIeAnoD4AINCBIiEIgJChoyYsODAgYMGfEIEiEKBgoSIkKDAgAGDQid+IAJCsODAgYOGjJgwhHw3AwAL", + "base64" + ) + ); + //#endregion + + xxhash64_1 = create.bind(null, xxhash64, [], 32, 16); + return xxhash64_1; +} + +var BatchedHash_1; +var hasRequiredBatchedHash; + +function requireBatchedHash () { + if (hasRequiredBatchedHash) return BatchedHash_1; + hasRequiredBatchedHash = 1; + const MAX_SHORT_STRING = /*@__PURE__*/ requireWasmHash().MAX_SHORT_STRING; + + class BatchedHash { + constructor(hash) { + this.string = undefined; + this.encoding = undefined; + this.hash = hash; + } + + /** + * Update hash {@link https://nodejs.org/api/crypto.html#crypto_hash_update_data_inputencoding} + * @param {string|Buffer} data data + * @param {string=} inputEncoding data encoding + * @returns {this} updated hash + */ + update(data, inputEncoding) { + if (this.string !== undefined) { + if ( + typeof data === "string" && + inputEncoding === this.encoding && + this.string.length + data.length < MAX_SHORT_STRING + ) { + this.string += data; + + return this; + } + + this.hash.update(this.string, this.encoding); + this.string = undefined; + } + + if (typeof data === "string") { + if ( + data.length < MAX_SHORT_STRING && + // base64 encoding is not valid since it may contain padding chars + (!inputEncoding || !inputEncoding.startsWith("ba")) + ) { + this.string = data; + this.encoding = inputEncoding; + } else { + this.hash.update(data, inputEncoding); + } + } else { + this.hash.update(data); + } + + return this; + } + + /** + * Calculates the digest {@link https://nodejs.org/api/crypto.html#crypto_hash_digest_encoding} + * @param {string=} encoding encoding of the return value + * @returns {string|Buffer} digest + */ + digest(encoding) { + if (this.string !== undefined) { + this.hash.update(this.string, this.encoding); + } + + return this.hash.digest(encoding); + } + } + + BatchedHash_1 = BatchedHash; + return BatchedHash_1; +} + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +var md4_1; +var hasRequiredMd4; + +function requireMd4 () { + if (hasRequiredMd4) return md4_1; + hasRequiredMd4 = 1; + + const create = /*@__PURE__*/ requireWasmHash(); + + //#region wasm code: md4 (../../../assembly/hash/md4.asm.ts) --initialMemory 1 + const md4 = new WebAssembly.Module( + Buffer.from( + // 2150 bytes + "AGFzbQEAAAABCAJgAX8AYAAAAwUEAQAAAAUDAQABBhoFfwFBAAt/AUEAC38BQQALfwFBAAt/AUEACwciBARpbml0AAAGdXBkYXRlAAIFZmluYWwAAwZtZW1vcnkCAAqFEAQmAEGBxpS6BiQBQYnXtv5+JAJB/rnrxXkkA0H2qMmBASQEQQAkAAvMCgEYfyMBIQojAiEGIwMhByMEIQgDQCAAIAVLBEAgBSgCCCINIAcgBiAFKAIEIgsgCCAHIAUoAgAiDCAKIAggBiAHIAhzcXNqakEDdyIDIAYgB3Nxc2pqQQd3IgEgAyAGc3FzampBC3chAiAFKAIUIg8gASACIAUoAhAiCSADIAEgBSgCDCIOIAYgAyACIAEgA3Nxc2pqQRN3IgQgASACc3FzampBA3ciAyACIARzcXNqakEHdyEBIAUoAiAiEiADIAEgBSgCHCIRIAQgAyAFKAIYIhAgAiAEIAEgAyAEc3FzampBC3ciAiABIANzcXNqakETdyIEIAEgAnNxc2pqQQN3IQMgBSgCLCIVIAQgAyAFKAIoIhQgAiAEIAUoAiQiEyABIAIgAyACIARzcXNqakEHdyIBIAMgBHNxc2pqQQt3IgIgASADc3FzampBE3chBCAPIBAgCSAVIBQgEyAFKAI4IhYgAiAEIAUoAjQiFyABIAIgBSgCMCIYIAMgASAEIAEgAnNxc2pqQQN3IgEgAiAEc3FzampBB3ciAiABIARzcXNqakELdyIDIAkgAiAMIAEgBSgCPCIJIAQgASADIAEgAnNxc2pqQRN3IgEgAiADcnEgAiADcXJqakGZ84nUBWpBA3ciAiABIANycSABIANxcmpqQZnzidQFakEFdyIEIAEgAnJxIAEgAnFyaiASakGZ84nUBWpBCXciAyAPIAQgCyACIBggASADIAIgBHJxIAIgBHFyampBmfOJ1AVqQQ13IgEgAyAEcnEgAyAEcXJqakGZ84nUBWpBA3ciAiABIANycSABIANxcmpqQZnzidQFakEFdyIEIAEgAnJxIAEgAnFyampBmfOJ1AVqQQl3IgMgECAEIAIgFyABIAMgAiAEcnEgAiAEcXJqakGZ84nUBWpBDXciASADIARycSADIARxcmogDWpBmfOJ1AVqQQN3IgIgASADcnEgASADcXJqakGZ84nUBWpBBXciBCABIAJycSABIAJxcmpqQZnzidQFakEJdyIDIBEgBCAOIAIgFiABIAMgAiAEcnEgAiAEcXJqakGZ84nUBWpBDXciASADIARycSADIARxcmpqQZnzidQFakEDdyICIAEgA3JxIAEgA3FyampBmfOJ1AVqQQV3IgQgASACcnEgASACcXJqakGZ84nUBWpBCXciAyAMIAIgAyAJIAEgAyACIARycSACIARxcmpqQZnzidQFakENdyIBcyAEc2pqQaHX5/YGakEDdyICIAQgASACcyADc2ogEmpBodfn9gZqQQl3IgRzIAFzampBodfn9gZqQQt3IgMgAiADIBggASADIARzIAJzampBodfn9gZqQQ93IgFzIARzaiANakGh1+f2BmpBA3ciAiAUIAQgASACcyADc2pqQaHX5/YGakEJdyIEcyABc2pqQaHX5/YGakELdyIDIAsgAiADIBYgASADIARzIAJzampBodfn9gZqQQ93IgFzIARzampBodfn9gZqQQN3IgIgEyAEIAEgAnMgA3NqakGh1+f2BmpBCXciBHMgAXNqakGh1+f2BmpBC3chAyAKIA4gAiADIBcgASADIARzIAJzampBodfn9gZqQQ93IgFzIARzampBodfn9gZqQQN3IgJqIQogBiAJIAEgESADIAIgFSAEIAEgAnMgA3NqakGh1+f2BmpBCXciBHMgAXNqakGh1+f2BmpBC3ciAyAEcyACc2pqQaHX5/YGakEPd2ohBiADIAdqIQcgBCAIaiEIIAVBQGshBQwBCwsgCiQBIAYkAiAHJAMgCCQECw0AIAAQASMAIABqJAAL/wQCA38BfiMAIABqrUIDhiEEIABByABqQUBxIgJBCGshAyAAIgFBAWohACABQYABOgAAA0AgACACSUEAIABBB3EbBEAgAEEAOgAAIABBAWohAAwBCwsDQCAAIAJJBEAgAEIANwMAIABBCGohAAwBCwsgAyAENwMAIAIQAUEAIwGtIgRC//8DgyAEQoCA/P8Pg0IQhoQiBEL/gYCA8B+DIARCgP6DgIDgP4NCCIaEIgRCj4C8gPCBwAeDQgiGIARC8IHAh4CegPgAg0IEiIQiBEKGjJiw4MCBgwZ8QgSIQoGChIiQoMCAAYNCJ34gBEKw4MCBg4aMmDCEfDcDAEEIIwKtIgRC//8DgyAEQoCA/P8Pg0IQhoQiBEL/gYCA8B+DIARCgP6DgIDgP4NCCIaEIgRCj4C8gPCBwAeDQgiGIARC8IHAh4CegPgAg0IEiIQiBEKGjJiw4MCBgwZ8QgSIQoGChIiQoMCAAYNCJ34gBEKw4MCBg4aMmDCEfDcDAEEQIwOtIgRC//8DgyAEQoCA/P8Pg0IQhoQiBEL/gYCA8B+DIARCgP6DgIDgP4NCCIaEIgRCj4C8gPCBwAeDQgiGIARC8IHAh4CegPgAg0IEiIQiBEKGjJiw4MCBgwZ8QgSIQoGChIiQoMCAAYNCJ34gBEKw4MCBg4aMmDCEfDcDAEEYIwStIgRC//8DgyAEQoCA/P8Pg0IQhoQiBEL/gYCA8B+DIARCgP6DgIDgP4NCCIaEIgRCj4C8gPCBwAeDQgiGIARC8IHAh4CegPgAg0IEiIQiBEKGjJiw4MCBgwZ8QgSIQoGChIiQoMCAAYNCJ34gBEKw4MCBg4aMmDCEfDcDAAs=", + "base64" + ) + ); + //#endregion + + md4_1 = create.bind(null, md4, [], 64, 32); + return md4_1; +} + +var BulkUpdateDecorator_1; +var hasRequiredBulkUpdateDecorator; + +function requireBulkUpdateDecorator () { + if (hasRequiredBulkUpdateDecorator) return BulkUpdateDecorator_1; + hasRequiredBulkUpdateDecorator = 1; + const BULK_SIZE = 2000; + + // We are using an object instead of a Map as this will stay static during the runtime + // so access to it can be optimized by v8 + const digestCaches = {}; + + class BulkUpdateDecorator { + /** + * @param {Hash | function(): Hash} hashOrFactory function to create a hash + * @param {string=} hashKey key for caching + */ + constructor(hashOrFactory, hashKey) { + this.hashKey = hashKey; + + if (typeof hashOrFactory === "function") { + this.hashFactory = hashOrFactory; + this.hash = undefined; + } else { + this.hashFactory = undefined; + this.hash = hashOrFactory; + } + + this.buffer = ""; + } + + /** + * Update hash {@link https://nodejs.org/api/crypto.html#crypto_hash_update_data_inputencoding} + * @param {string|Buffer} data data + * @param {string=} inputEncoding data encoding + * @returns {this} updated hash + */ + update(data, inputEncoding) { + if ( + inputEncoding !== undefined || + typeof data !== "string" || + data.length > BULK_SIZE + ) { + if (this.hash === undefined) { + this.hash = this.hashFactory(); + } + + if (this.buffer.length > 0) { + this.hash.update(this.buffer); + this.buffer = ""; + } + + this.hash.update(data, inputEncoding); + } else { + this.buffer += data; + + if (this.buffer.length > BULK_SIZE) { + if (this.hash === undefined) { + this.hash = this.hashFactory(); + } + + this.hash.update(this.buffer); + this.buffer = ""; + } + } + + return this; + } + + /** + * Calculates the digest {@link https://nodejs.org/api/crypto.html#crypto_hash_digest_encoding} + * @param {string=} encoding encoding of the return value + * @returns {string|Buffer} digest + */ + digest(encoding) { + let digestCache; + + const buffer = this.buffer; + + if (this.hash === undefined) { + // short data for hash, we can use caching + const cacheKey = `${this.hashKey}-${encoding}`; + + digestCache = digestCaches[cacheKey]; + + if (digestCache === undefined) { + digestCache = digestCaches[cacheKey] = new Map(); + } + + const cacheEntry = digestCache.get(buffer); + + if (cacheEntry !== undefined) { + return cacheEntry; + } + + this.hash = this.hashFactory(); + } + + if (buffer.length > 0) { + this.hash.update(buffer); + } + + const digestResult = this.hash.digest(encoding); + + if (digestCache !== undefined) { + digestCache.set(buffer, digestResult); + } + + return digestResult; + } + } + + BulkUpdateDecorator_1 = BulkUpdateDecorator; + return BulkUpdateDecorator_1; +} + +var getHashDigest_1; +var hasRequiredGetHashDigest; + +function requireGetHashDigest () { + if (hasRequiredGetHashDigest) return getHashDigest_1; + hasRequiredGetHashDigest = 1; + + const baseEncodeTables = { + 26: "abcdefghijklmnopqrstuvwxyz", + 32: "123456789abcdefghjkmnpqrstuvwxyz", // no 0lio + 36: "0123456789abcdefghijklmnopqrstuvwxyz", + 49: "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ", // no lIO + 52: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", + 58: "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ", // no 0lIO + 62: "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", + 64: "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_", + }; + + /** + * @param {Uint32Array} uint32Array Treated as a long base-0x100000000 number, little endian + * @param {number} divisor The divisor + * @return {number} Modulo (remainder) of the division + */ + function divmod32(uint32Array, divisor) { + let carry = 0; + for (let i = uint32Array.length - 1; i >= 0; i--) { + const value = carry * 0x100000000 + uint32Array[i]; + carry = value % divisor; + uint32Array[i] = Math.floor(value / divisor); + } + return carry; + } + + function encodeBufferToBase(buffer, base, length) { + const encodeTable = baseEncodeTables[base]; + + if (!encodeTable) { + throw new Error("Unknown encoding base" + base); + } + + // Input bits are only enough to generate this many characters + const limit = Math.ceil((buffer.length * 8) / Math.log2(base)); + length = Math.min(length, limit); + + // Most of the crypto digests (if not all) has length a multiple of 4 bytes. + // Fewer numbers in the array means faster math. + const uint32Array = new Uint32Array(Math.ceil(buffer.length / 4)); + + // Make sure the input buffer data is copied and is not mutated by reference. + // divmod32() would corrupt the BulkUpdateDecorator cache otherwise. + buffer.copy(Buffer.from(uint32Array.buffer)); + + let output = ""; + + for (let i = 0; i < length; i++) { + output = encodeTable[divmod32(uint32Array, base)] + output; + } + + return output; + } + + let crypto = undefined; + let createXXHash64 = undefined; + let createMd4 = undefined; + let BatchedHash = undefined; + let BulkUpdateDecorator = undefined; + + function getHashDigest(buffer, algorithm, digestType, maxLength) { + algorithm = algorithm || "xxhash64"; + maxLength = maxLength || 9999; + + let hash; + + if (algorithm === "xxhash64") { + if (createXXHash64 === undefined) { + createXXHash64 = /*@__PURE__*/ requireXxhash64(); + + if (BatchedHash === undefined) { + BatchedHash = /*@__PURE__*/ requireBatchedHash(); + } + } + + hash = new BatchedHash(createXXHash64()); + } else if (algorithm === "md4") { + if (createMd4 === undefined) { + createMd4 = /*@__PURE__*/ requireMd4(); + + if (BatchedHash === undefined) { + BatchedHash = /*@__PURE__*/ requireBatchedHash(); + } + } + + hash = new BatchedHash(createMd4()); + } else if (algorithm === "native-md4") { + if (typeof crypto === "undefined") { + crypto = require("crypto"); + + if (BulkUpdateDecorator === undefined) { + BulkUpdateDecorator = /*@__PURE__*/ requireBulkUpdateDecorator(); + } + } + + hash = new BulkUpdateDecorator(() => crypto.createHash("md4"), "md4"); + } else { + if (typeof crypto === "undefined") { + crypto = require("crypto"); + + if (BulkUpdateDecorator === undefined) { + BulkUpdateDecorator = /*@__PURE__*/ requireBulkUpdateDecorator(); + } + } + + hash = new BulkUpdateDecorator( + () => crypto.createHash(algorithm), + algorithm + ); + } + + hash.update(buffer); + + if ( + digestType === "base26" || + digestType === "base32" || + digestType === "base36" || + digestType === "base49" || + digestType === "base52" || + digestType === "base58" || + digestType === "base62" || + digestType === "base64safe" + ) { + return encodeBufferToBase( + hash.digest(), + digestType === "base64safe" ? 64 : digestType.substr(4), + maxLength + ); + } + + return hash.digest(digestType || "hex").substr(0, maxLength); + } + + getHashDigest_1 = getHashDigest; + return getHashDigest_1; +} + +var interpolateName_1; +var hasRequiredInterpolateName; + +function requireInterpolateName () { + if (hasRequiredInterpolateName) return interpolateName_1; + hasRequiredInterpolateName = 1; + + const path = path$1; + const getHashDigest = /*@__PURE__*/ requireGetHashDigest(); + + function interpolateName(loaderContext, name, options = {}) { + let filename; + + const hasQuery = + loaderContext.resourceQuery && loaderContext.resourceQuery.length > 1; + + if (typeof name === "function") { + filename = name( + loaderContext.resourcePath, + hasQuery ? loaderContext.resourceQuery : undefined + ); + } else { + filename = name || "[hash].[ext]"; + } + + const context = options.context; + const content = options.content; + const regExp = options.regExp; + + let ext = "bin"; + let basename = "file"; + let directory = ""; + let folder = ""; + let query = ""; + + if (loaderContext.resourcePath) { + const parsed = path.parse(loaderContext.resourcePath); + let resourcePath = loaderContext.resourcePath; + + if (parsed.ext) { + ext = parsed.ext.substr(1); + } + + if (parsed.dir) { + basename = parsed.name; + resourcePath = parsed.dir + path.sep; + } + + if (typeof context !== "undefined") { + directory = path + .relative(context, resourcePath + "_") + .replace(/\\/g, "/") + .replace(/\.\.(\/)?/g, "_$1"); + directory = directory.substr(0, directory.length - 1); + } else { + directory = resourcePath.replace(/\\/g, "/").replace(/\.\.(\/)?/g, "_$1"); + } + + if (directory.length <= 1) { + directory = ""; + } else { + // directory.length > 1 + folder = path.basename(directory); + } + } + + if (loaderContext.resourceQuery && loaderContext.resourceQuery.length > 1) { + query = loaderContext.resourceQuery; + + const hashIdx = query.indexOf("#"); + + if (hashIdx >= 0) { + query = query.substr(0, hashIdx); + } + } + + let url = filename; + + if (content) { + // Match hash template + url = url + // `hash` and `contenthash` are same in `loader-utils` context + // let's keep `hash` for backward compatibility + .replace( + /\[(?:([^[:\]]+):)?(?:hash|contenthash)(?::([a-z]+\d*(?:safe)?))?(?::(\d+))?\]/gi, + (all, hashType, digestType, maxLength) => + getHashDigest(content, hashType, digestType, parseInt(maxLength, 10)) + ); + } + + url = url + .replace(/\[ext\]/gi, () => ext) + .replace(/\[name\]/gi, () => basename) + .replace(/\[path\]/gi, () => directory) + .replace(/\[folder\]/gi, () => folder) + .replace(/\[query\]/gi, () => query); + + if (regExp && loaderContext.resourcePath) { + const match = loaderContext.resourcePath.match(new RegExp(regExp)); + + match && + match.forEach((matched, i) => { + url = url.replace(new RegExp("\\[" + i + "\\]", "ig"), matched); + }); + } + + if ( + typeof loaderContext.options === "object" && + typeof loaderContext.options.customInterpolateName === "function" + ) { + url = loaderContext.options.customInterpolateName.call( + loaderContext, + url, + name, + options + ); + } + + return url; + } + + interpolateName_1 = interpolateName; + return interpolateName_1; +} + +var genericNames; +var hasRequiredGenericNames; + +function requireGenericNames () { + if (hasRequiredGenericNames) return genericNames; + hasRequiredGenericNames = 1; + + var interpolateName = /*@__PURE__*/ requireInterpolateName(); + var path = path$1; + + /** + * @param {string} pattern + * @param {object} options + * @param {string} options.context + * @param {string} options.hashPrefix + * @return {function} + */ + genericNames = function createGenerator(pattern, options) { + options = options || {}; + var context = + options && typeof options.context === "string" + ? options.context + : process.cwd(); + var hashPrefix = + options && typeof options.hashPrefix === "string" ? options.hashPrefix : ""; + + /** + * @param {string} localName Usually a class name + * @param {string} filepath Absolute path + * @return {string} + */ + return function generate(localName, filepath) { + var name = pattern.replace(/\[local\]/gi, localName); + var loaderContext = { + resourcePath: filepath, + }; + + var loaderOptions = { + content: + hashPrefix + + path.relative(context, filepath).replace(/\\/g, "/") + + "\x00" + + localName, + context: context, + }; + + var genericName = interpolateName(loaderContext, name, loaderOptions); + return genericName + .replace(new RegExp("[^a-zA-Z0-9\\-_\u00A0-\uFFFF]", "g"), "-") + .replace(/^((-?[0-9])|--)/, "_$1"); + }; + }; + return genericNames; +} + +var src$2 = {exports: {}}; + +var dist = {exports: {}}; + +var processor = {exports: {}}; + +var parser = {exports: {}}; + +var root = {exports: {}}; + +var container = {exports: {}}; + +var node = {exports: {}}; + +var util = {}; + +var unesc = {exports: {}}; + +var hasRequiredUnesc; + +function requireUnesc () { + if (hasRequiredUnesc) return unesc.exports; + hasRequiredUnesc = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = unesc; + // Many thanks for this post which made this migration much easier. + // https://mathiasbynens.be/notes/css-escapes + + /** + * + * @param {string} str + * @returns {[string, number]|undefined} + */ + function gobbleHex(str) { + var lower = str.toLowerCase(); + var hex = ''; + var spaceTerminated = false; + for (var i = 0; i < 6 && lower[i] !== undefined; i++) { + var code = lower.charCodeAt(i); + // check to see if we are dealing with a valid hex char [a-f|0-9] + var valid = code >= 97 && code <= 102 || code >= 48 && code <= 57; + // https://drafts.csswg.org/css-syntax/#consume-escaped-code-point + spaceTerminated = code === 32; + if (!valid) { + break; + } + hex += lower[i]; + } + if (hex.length === 0) { + return undefined; + } + var codePoint = parseInt(hex, 16); + var isSurrogate = codePoint >= 0xD800 && codePoint <= 0xDFFF; + // Add special case for + // "If this number is zero, or is for a surrogate, or is greater than the maximum allowed code point" + // https://drafts.csswg.org/css-syntax/#maximum-allowed-code-point + if (isSurrogate || codePoint === 0x0000 || codePoint > 0x10FFFF) { + return ["\uFFFD", hex.length + (spaceTerminated ? 1 : 0)]; + } + return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)]; + } + var CONTAINS_ESCAPE = /\\/; + function unesc(str) { + var needToProcess = CONTAINS_ESCAPE.test(str); + if (!needToProcess) { + return str; + } + var ret = ""; + for (var i = 0; i < str.length; i++) { + if (str[i] === "\\") { + var gobbled = gobbleHex(str.slice(i + 1, i + 7)); + if (gobbled !== undefined) { + ret += gobbled[0]; + i += gobbled[1]; + continue; + } + + // Retain a pair of \\ if double escaped `\\\\` + // https://github.com/postcss/postcss-selector-parser/commit/268c9a7656fb53f543dc620aa5b73a30ec3ff20e + if (str[i + 1] === "\\") { + ret += "\\"; + i++; + continue; + } + + // if \\ is at the end of the string retain it + // https://github.com/postcss/postcss-selector-parser/commit/01a6b346e3612ce1ab20219acc26abdc259ccefb + if (str.length === i + 1) { + ret += str[i]; + } + continue; + } + ret += str[i]; + } + return ret; + } + module.exports = exports.default; + } (unesc, unesc.exports)); + return unesc.exports; +} + +var getProp = {exports: {}}; + +var hasRequiredGetProp; + +function requireGetProp () { + if (hasRequiredGetProp) return getProp.exports; + hasRequiredGetProp = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = getProp; + function getProp(obj) { + for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + props[_key - 1] = arguments[_key]; + } + while (props.length > 0) { + var prop = props.shift(); + if (!obj[prop]) { + return undefined; + } + obj = obj[prop]; + } + return obj; + } + module.exports = exports.default; + } (getProp, getProp.exports)); + return getProp.exports; +} + +var ensureObject = {exports: {}}; + +var hasRequiredEnsureObject; + +function requireEnsureObject () { + if (hasRequiredEnsureObject) return ensureObject.exports; + hasRequiredEnsureObject = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = ensureObject; + function ensureObject(obj) { + for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + props[_key - 1] = arguments[_key]; + } + while (props.length > 0) { + var prop = props.shift(); + if (!obj[prop]) { + obj[prop] = {}; + } + obj = obj[prop]; + } + } + module.exports = exports.default; + } (ensureObject, ensureObject.exports)); + return ensureObject.exports; +} + +var stripComments = {exports: {}}; + +var hasRequiredStripComments; + +function requireStripComments () { + if (hasRequiredStripComments) return stripComments.exports; + hasRequiredStripComments = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = stripComments; + function stripComments(str) { + var s = ""; + var commentStart = str.indexOf("/*"); + var lastEnd = 0; + while (commentStart >= 0) { + s = s + str.slice(lastEnd, commentStart); + var commentEnd = str.indexOf("*/", commentStart + 2); + if (commentEnd < 0) { + return s; + } + lastEnd = commentEnd + 2; + commentStart = str.indexOf("/*", lastEnd); + } + s = s + str.slice(lastEnd); + return s; + } + module.exports = exports.default; + } (stripComments, stripComments.exports)); + return stripComments.exports; +} + +var hasRequiredUtil; + +function requireUtil () { + if (hasRequiredUtil) return util; + hasRequiredUtil = 1; + + util.__esModule = true; + util.unesc = util.stripComments = util.getProp = util.ensureObject = void 0; + var _unesc = _interopRequireDefault(/*@__PURE__*/ requireUnesc()); + util.unesc = _unesc["default"]; + var _getProp = _interopRequireDefault(/*@__PURE__*/ requireGetProp()); + util.getProp = _getProp["default"]; + var _ensureObject = _interopRequireDefault(/*@__PURE__*/ requireEnsureObject()); + util.ensureObject = _ensureObject["default"]; + var _stripComments = _interopRequireDefault(/*@__PURE__*/ requireStripComments()); + util.stripComments = _stripComments["default"]; + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + return util; +} + +var hasRequiredNode; + +function requireNode () { + if (hasRequiredNode) return node.exports; + hasRequiredNode = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _util = /*@__PURE__*/ requireUtil(); + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + var cloneNode = function cloneNode(obj, parent) { + if (typeof obj !== 'object' || obj === null) { + return obj; + } + var cloned = new obj.constructor(); + for (var i in obj) { + if (!obj.hasOwnProperty(i)) { + continue; + } + var value = obj[i]; + var type = typeof value; + if (i === 'parent' && type === 'object') { + if (parent) { + cloned[i] = parent; + } + } else if (value instanceof Array) { + cloned[i] = value.map(function (j) { + return cloneNode(j, cloned); + }); + } else { + cloned[i] = cloneNode(value, cloned); + } + } + return cloned; + }; + var Node = /*#__PURE__*/function () { + function Node(opts) { + if (opts === void 0) { + opts = {}; + } + Object.assign(this, opts); + this.spaces = this.spaces || {}; + this.spaces.before = this.spaces.before || ''; + this.spaces.after = this.spaces.after || ''; + } + var _proto = Node.prototype; + _proto.remove = function remove() { + if (this.parent) { + this.parent.removeChild(this); + } + this.parent = undefined; + return this; + }; + _proto.replaceWith = function replaceWith() { + if (this.parent) { + for (var index in arguments) { + this.parent.insertBefore(this, arguments[index]); + } + this.remove(); + } + return this; + }; + _proto.next = function next() { + return this.parent.at(this.parent.index(this) + 1); + }; + _proto.prev = function prev() { + return this.parent.at(this.parent.index(this) - 1); + }; + _proto.clone = function clone(overrides) { + if (overrides === void 0) { + overrides = {}; + } + var cloned = cloneNode(this); + for (var name in overrides) { + cloned[name] = overrides[name]; + } + return cloned; + } + + /** + * Some non-standard syntax doesn't follow normal escaping rules for css. + * This allows non standard syntax to be appended to an existing property + * by specifying the escaped value. By specifying the escaped value, + * illegal characters are allowed to be directly inserted into css output. + * @param {string} name the property to set + * @param {any} value the unescaped value of the property + * @param {string} valueEscaped optional. the escaped value of the property. + */; + _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) { + if (!this.raws) { + this.raws = {}; + } + var originalValue = this[name]; + var originalEscaped = this.raws[name]; + this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first. + if (originalEscaped || valueEscaped !== value) { + this.raws[name] = (originalEscaped || originalValue) + valueEscaped; + } else { + delete this.raws[name]; // delete any escaped value that was created by the setter. + } + } + + /** + * Some non-standard syntax doesn't follow normal escaping rules for css. + * This allows the escaped value to be specified directly, allowing illegal + * characters to be directly inserted into css output. + * @param {string} name the property to set + * @param {any} value the unescaped value of the property + * @param {string} valueEscaped the escaped value of the property. + */; + _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) { + if (!this.raws) { + this.raws = {}; + } + this[name] = value; // this may trigger a setter that updates raws, so it has to be set first. + this.raws[name] = valueEscaped; + } + + /** + * When you want a value to passed through to CSS directly. This method + * deletes the corresponding raw value causing the stringifier to fallback + * to the unescaped value. + * @param {string} name the property to set. + * @param {any} value The value that is both escaped and unescaped. + */; + _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) { + this[name] = value; // this may trigger a setter that updates raws, so it has to be set first. + if (this.raws) { + delete this.raws[name]; + } + } + + /** + * + * @param {number} line The number (starting with 1) + * @param {number} column The column number (starting with 1) + */; + _proto.isAtPosition = function isAtPosition(line, column) { + if (this.source && this.source.start && this.source.end) { + if (this.source.start.line > line) { + return false; + } + if (this.source.end.line < line) { + return false; + } + if (this.source.start.line === line && this.source.start.column > column) { + return false; + } + if (this.source.end.line === line && this.source.end.column < column) { + return false; + } + return true; + } + return undefined; + }; + _proto.stringifyProperty = function stringifyProperty(name) { + return this.raws && this.raws[name] || this[name]; + }; + _proto.valueToString = function valueToString() { + return String(this.stringifyProperty("value")); + }; + _proto.toString = function toString() { + return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join(''); + }; + _createClass(Node, [{ + key: "rawSpaceBefore", + get: function get() { + var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before; + if (rawSpace === undefined) { + rawSpace = this.spaces && this.spaces.before; + } + return rawSpace || ""; + }, + set: function set(raw) { + (0, _util.ensureObject)(this, "raws", "spaces"); + this.raws.spaces.before = raw; + } + }, { + key: "rawSpaceAfter", + get: function get() { + var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after; + if (rawSpace === undefined) { + rawSpace = this.spaces.after; + } + return rawSpace || ""; + }, + set: function set(raw) { + (0, _util.ensureObject)(this, "raws", "spaces"); + this.raws.spaces.after = raw; + } + }]); + return Node; + }(); + exports["default"] = Node; + module.exports = exports.default; + } (node, node.exports)); + return node.exports; +} + +var types$1 = {}; + +var hasRequiredTypes; + +function requireTypes () { + if (hasRequiredTypes) return types$1; + hasRequiredTypes = 1; + + types$1.__esModule = true; + types$1.UNIVERSAL = types$1.TAG = types$1.STRING = types$1.SELECTOR = types$1.ROOT = types$1.PSEUDO = types$1.NESTING = types$1.ID = types$1.COMMENT = types$1.COMBINATOR = types$1.CLASS = types$1.ATTRIBUTE = void 0; + var TAG = 'tag'; + types$1.TAG = TAG; + var STRING = 'string'; + types$1.STRING = STRING; + var SELECTOR = 'selector'; + types$1.SELECTOR = SELECTOR; + var ROOT = 'root'; + types$1.ROOT = ROOT; + var PSEUDO = 'pseudo'; + types$1.PSEUDO = PSEUDO; + var NESTING = 'nesting'; + types$1.NESTING = NESTING; + var ID = 'id'; + types$1.ID = ID; + var COMMENT = 'comment'; + types$1.COMMENT = COMMENT; + var COMBINATOR = 'combinator'; + types$1.COMBINATOR = COMBINATOR; + var CLASS = 'class'; + types$1.CLASS = CLASS; + var ATTRIBUTE = 'attribute'; + types$1.ATTRIBUTE = ATTRIBUTE; + var UNIVERSAL = 'universal'; + types$1.UNIVERSAL = UNIVERSAL; + return types$1; +} + +var hasRequiredContainer; + +function requireContainer () { + if (hasRequiredContainer) return container.exports; + hasRequiredContainer = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode()); + var types = _interopRequireWildcard(/*@__PURE__*/ requireTypes()); + function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike) { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Container = /*#__PURE__*/function (_Node) { + _inheritsLoose(Container, _Node); + function Container(opts) { + var _this; + _this = _Node.call(this, opts) || this; + if (!_this.nodes) { + _this.nodes = []; + } + return _this; + } + var _proto = Container.prototype; + _proto.append = function append(selector) { + selector.parent = this; + this.nodes.push(selector); + return this; + }; + _proto.prepend = function prepend(selector) { + selector.parent = this; + this.nodes.unshift(selector); + return this; + }; + _proto.at = function at(index) { + return this.nodes[index]; + }; + _proto.index = function index(child) { + if (typeof child === 'number') { + return child; + } + return this.nodes.indexOf(child); + }; + _proto.removeChild = function removeChild(child) { + child = this.index(child); + this.at(child).parent = undefined; + this.nodes.splice(child, 1); + var index; + for (var id in this.indexes) { + index = this.indexes[id]; + if (index >= child) { + this.indexes[id] = index - 1; + } + } + return this; + }; + _proto.removeAll = function removeAll() { + for (var _iterator = _createForOfIteratorHelperLoose(this.nodes), _step; !(_step = _iterator()).done;) { + var node = _step.value; + node.parent = undefined; + } + this.nodes = []; + return this; + }; + _proto.empty = function empty() { + return this.removeAll(); + }; + _proto.insertAfter = function insertAfter(oldNode, newNode) { + newNode.parent = this; + var oldIndex = this.index(oldNode); + this.nodes.splice(oldIndex + 1, 0, newNode); + newNode.parent = this; + var index; + for (var id in this.indexes) { + index = this.indexes[id]; + if (oldIndex <= index) { + this.indexes[id] = index + 1; + } + } + return this; + }; + _proto.insertBefore = function insertBefore(oldNode, newNode) { + newNode.parent = this; + var oldIndex = this.index(oldNode); + this.nodes.splice(oldIndex, 0, newNode); + newNode.parent = this; + var index; + for (var id in this.indexes) { + index = this.indexes[id]; + if (index <= oldIndex) { + this.indexes[id] = index + 1; + } + } + return this; + }; + _proto._findChildAtPosition = function _findChildAtPosition(line, col) { + var found = undefined; + this.each(function (node) { + if (node.atPosition) { + var foundChild = node.atPosition(line, col); + if (foundChild) { + found = foundChild; + return false; + } + } else if (node.isAtPosition(line, col)) { + found = node; + return false; + } + }); + return found; + } + + /** + * Return the most specific node at the line and column number given. + * The source location is based on the original parsed location, locations aren't + * updated as selector nodes are mutated. + * + * Note that this location is relative to the location of the first character + * of the selector, and not the location of the selector in the overall document + * when used in conjunction with postcss. + * + * If not found, returns undefined. + * @param {number} line The line number of the node to find. (1-based index) + * @param {number} col The column number of the node to find. (1-based index) + */; + _proto.atPosition = function atPosition(line, col) { + if (this.isAtPosition(line, col)) { + return this._findChildAtPosition(line, col) || this; + } else { + return undefined; + } + }; + _proto._inferEndPosition = function _inferEndPosition() { + if (this.last && this.last.source && this.last.source.end) { + this.source = this.source || {}; + this.source.end = this.source.end || {}; + Object.assign(this.source.end, this.last.source.end); + } + }; + _proto.each = function each(callback) { + if (!this.lastEach) { + this.lastEach = 0; + } + if (!this.indexes) { + this.indexes = {}; + } + this.lastEach++; + var id = this.lastEach; + this.indexes[id] = 0; + if (!this.length) { + return undefined; + } + var index, result; + while (this.indexes[id] < this.length) { + index = this.indexes[id]; + result = callback(this.at(index), index); + if (result === false) { + break; + } + this.indexes[id] += 1; + } + delete this.indexes[id]; + if (result === false) { + return false; + } + }; + _proto.walk = function walk(callback) { + return this.each(function (node, i) { + var result = callback(node, i); + if (result !== false && node.length) { + result = node.walk(callback); + } + if (result === false) { + return false; + } + }); + }; + _proto.walkAttributes = function walkAttributes(callback) { + var _this2 = this; + return this.walk(function (selector) { + if (selector.type === types.ATTRIBUTE) { + return callback.call(_this2, selector); + } + }); + }; + _proto.walkClasses = function walkClasses(callback) { + var _this3 = this; + return this.walk(function (selector) { + if (selector.type === types.CLASS) { + return callback.call(_this3, selector); + } + }); + }; + _proto.walkCombinators = function walkCombinators(callback) { + var _this4 = this; + return this.walk(function (selector) { + if (selector.type === types.COMBINATOR) { + return callback.call(_this4, selector); + } + }); + }; + _proto.walkComments = function walkComments(callback) { + var _this5 = this; + return this.walk(function (selector) { + if (selector.type === types.COMMENT) { + return callback.call(_this5, selector); + } + }); + }; + _proto.walkIds = function walkIds(callback) { + var _this6 = this; + return this.walk(function (selector) { + if (selector.type === types.ID) { + return callback.call(_this6, selector); + } + }); + }; + _proto.walkNesting = function walkNesting(callback) { + var _this7 = this; + return this.walk(function (selector) { + if (selector.type === types.NESTING) { + return callback.call(_this7, selector); + } + }); + }; + _proto.walkPseudos = function walkPseudos(callback) { + var _this8 = this; + return this.walk(function (selector) { + if (selector.type === types.PSEUDO) { + return callback.call(_this8, selector); + } + }); + }; + _proto.walkTags = function walkTags(callback) { + var _this9 = this; + return this.walk(function (selector) { + if (selector.type === types.TAG) { + return callback.call(_this9, selector); + } + }); + }; + _proto.walkUniversals = function walkUniversals(callback) { + var _this10 = this; + return this.walk(function (selector) { + if (selector.type === types.UNIVERSAL) { + return callback.call(_this10, selector); + } + }); + }; + _proto.split = function split(callback) { + var _this11 = this; + var current = []; + return this.reduce(function (memo, node, index) { + var split = callback.call(_this11, node); + current.push(node); + if (split) { + memo.push(current); + current = []; + } else if (index === _this11.length - 1) { + memo.push(current); + } + return memo; + }, []); + }; + _proto.map = function map(callback) { + return this.nodes.map(callback); + }; + _proto.reduce = function reduce(callback, memo) { + return this.nodes.reduce(callback, memo); + }; + _proto.every = function every(callback) { + return this.nodes.every(callback); + }; + _proto.some = function some(callback) { + return this.nodes.some(callback); + }; + _proto.filter = function filter(callback) { + return this.nodes.filter(callback); + }; + _proto.sort = function sort(callback) { + return this.nodes.sort(callback); + }; + _proto.toString = function toString() { + return this.map(String).join(''); + }; + _createClass(Container, [{ + key: "first", + get: function get() { + return this.at(0); + } + }, { + key: "last", + get: function get() { + return this.at(this.length - 1); + } + }, { + key: "length", + get: function get() { + return this.nodes.length; + } + }]); + return Container; + }(_node["default"]); + exports["default"] = Container; + module.exports = exports.default; + } (container, container.exports)); + return container.exports; +} + +var hasRequiredRoot; + +function requireRoot () { + if (hasRequiredRoot) return root.exports; + hasRequiredRoot = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _container = _interopRequireDefault(/*@__PURE__*/ requireContainer()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Root = /*#__PURE__*/function (_Container) { + _inheritsLoose(Root, _Container); + function Root(opts) { + var _this; + _this = _Container.call(this, opts) || this; + _this.type = _types.ROOT; + return _this; + } + var _proto = Root.prototype; + _proto.toString = function toString() { + var str = this.reduce(function (memo, selector) { + memo.push(String(selector)); + return memo; + }, []).join(','); + return this.trailingComma ? str + ',' : str; + }; + _proto.error = function error(message, options) { + if (this._error) { + return this._error(message, options); + } else { + return new Error(message); + } + }; + _createClass(Root, [{ + key: "errorGenerator", + set: function set(handler) { + this._error = handler; + } + }]); + return Root; + }(_container["default"]); + exports["default"] = Root; + module.exports = exports.default; + } (root, root.exports)); + return root.exports; +} + +var selector = {exports: {}}; + +var hasRequiredSelector; + +function requireSelector () { + if (hasRequiredSelector) return selector.exports; + hasRequiredSelector = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _container = _interopRequireDefault(/*@__PURE__*/ requireContainer()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Selector = /*#__PURE__*/function (_Container) { + _inheritsLoose(Selector, _Container); + function Selector(opts) { + var _this; + _this = _Container.call(this, opts) || this; + _this.type = _types.SELECTOR; + return _this; + } + return Selector; + }(_container["default"]); + exports["default"] = Selector; + module.exports = exports.default; + } (selector, selector.exports)); + return selector.exports; +} + +var className = {exports: {}}; + +var hasRequiredClassName; + +function requireClassName () { + if (hasRequiredClassName) return className.exports; + hasRequiredClassName = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _cssesc = _interopRequireDefault(/*@__PURE__*/ requireCssesc()); + var _util = /*@__PURE__*/ requireUtil(); + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var ClassName = /*#__PURE__*/function (_Node) { + _inheritsLoose(ClassName, _Node); + function ClassName(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.CLASS; + _this._constructed = true; + return _this; + } + var _proto = ClassName.prototype; + _proto.valueToString = function valueToString() { + return '.' + _Node.prototype.valueToString.call(this); + }; + _createClass(ClassName, [{ + key: "value", + get: function get() { + return this._value; + }, + set: function set(v) { + if (this._constructed) { + var escaped = (0, _cssesc["default"])(v, { + isIdentifier: true + }); + if (escaped !== v) { + (0, _util.ensureObject)(this, "raws"); + this.raws.value = escaped; + } else if (this.raws) { + delete this.raws.value; + } + } + this._value = v; + } + }]); + return ClassName; + }(_node["default"]); + exports["default"] = ClassName; + module.exports = exports.default; + } (className, className.exports)); + return className.exports; +} + +var comment = {exports: {}}; + +var hasRequiredComment; + +function requireComment () { + if (hasRequiredComment) return comment.exports; + hasRequiredComment = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Comment = /*#__PURE__*/function (_Node) { + _inheritsLoose(Comment, _Node); + function Comment(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.COMMENT; + return _this; + } + return Comment; + }(_node["default"]); + exports["default"] = Comment; + module.exports = exports.default; + } (comment, comment.exports)); + return comment.exports; +} + +var id = {exports: {}}; + +var hasRequiredId; + +function requireId () { + if (hasRequiredId) return id.exports; + hasRequiredId = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var ID = /*#__PURE__*/function (_Node) { + _inheritsLoose(ID, _Node); + function ID(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.ID; + return _this; + } + var _proto = ID.prototype; + _proto.valueToString = function valueToString() { + return '#' + _Node.prototype.valueToString.call(this); + }; + return ID; + }(_node["default"]); + exports["default"] = ID; + module.exports = exports.default; + } (id, id.exports)); + return id.exports; +} + +var tag = {exports: {}}; + +var namespace = {exports: {}}; + +var hasRequiredNamespace; + +function requireNamespace () { + if (hasRequiredNamespace) return namespace.exports; + hasRequiredNamespace = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _cssesc = _interopRequireDefault(/*@__PURE__*/ requireCssesc()); + var _util = /*@__PURE__*/ requireUtil(); + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode()); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Namespace = /*#__PURE__*/function (_Node) { + _inheritsLoose(Namespace, _Node); + function Namespace() { + return _Node.apply(this, arguments) || this; + } + var _proto = Namespace.prototype; + _proto.qualifiedName = function qualifiedName(value) { + if (this.namespace) { + return this.namespaceString + "|" + value; + } else { + return value; + } + }; + _proto.valueToString = function valueToString() { + return this.qualifiedName(_Node.prototype.valueToString.call(this)); + }; + _createClass(Namespace, [{ + key: "namespace", + get: function get() { + return this._namespace; + }, + set: function set(namespace) { + if (namespace === true || namespace === "*" || namespace === "&") { + this._namespace = namespace; + if (this.raws) { + delete this.raws.namespace; + } + return; + } + var escaped = (0, _cssesc["default"])(namespace, { + isIdentifier: true + }); + this._namespace = namespace; + if (escaped !== namespace) { + (0, _util.ensureObject)(this, "raws"); + this.raws.namespace = escaped; + } else if (this.raws) { + delete this.raws.namespace; + } + } + }, { + key: "ns", + get: function get() { + return this._namespace; + }, + set: function set(namespace) { + this.namespace = namespace; + } + }, { + key: "namespaceString", + get: function get() { + if (this.namespace) { + var ns = this.stringifyProperty("namespace"); + if (ns === true) { + return ''; + } else { + return ns; + } + } else { + return ''; + } + } + }]); + return Namespace; + }(_node["default"]); + exports["default"] = Namespace; + module.exports = exports.default; + } (namespace, namespace.exports)); + return namespace.exports; +} + +var hasRequiredTag; + +function requireTag () { + if (hasRequiredTag) return tag.exports; + hasRequiredTag = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _namespace = _interopRequireDefault(/*@__PURE__*/ requireNamespace()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Tag = /*#__PURE__*/function (_Namespace) { + _inheritsLoose(Tag, _Namespace); + function Tag(opts) { + var _this; + _this = _Namespace.call(this, opts) || this; + _this.type = _types.TAG; + return _this; + } + return Tag; + }(_namespace["default"]); + exports["default"] = Tag; + module.exports = exports.default; + } (tag, tag.exports)); + return tag.exports; +} + +var string = {exports: {}}; + +var hasRequiredString; + +function requireString () { + if (hasRequiredString) return string.exports; + hasRequiredString = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var String = /*#__PURE__*/function (_Node) { + _inheritsLoose(String, _Node); + function String(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.STRING; + return _this; + } + return String; + }(_node["default"]); + exports["default"] = String; + module.exports = exports.default; + } (string, string.exports)); + return string.exports; +} + +var pseudo = {exports: {}}; + +var hasRequiredPseudo; + +function requirePseudo () { + if (hasRequiredPseudo) return pseudo.exports; + hasRequiredPseudo = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _container = _interopRequireDefault(/*@__PURE__*/ requireContainer()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Pseudo = /*#__PURE__*/function (_Container) { + _inheritsLoose(Pseudo, _Container); + function Pseudo(opts) { + var _this; + _this = _Container.call(this, opts) || this; + _this.type = _types.PSEUDO; + return _this; + } + var _proto = Pseudo.prototype; + _proto.toString = function toString() { + var params = this.length ? '(' + this.map(String).join(',') + ')' : ''; + return [this.rawSpaceBefore, this.stringifyProperty("value"), params, this.rawSpaceAfter].join(''); + }; + return Pseudo; + }(_container["default"]); + exports["default"] = Pseudo; + module.exports = exports.default; + } (pseudo, pseudo.exports)); + return pseudo.exports; +} + +var attribute = {}; + +var hasRequiredAttribute; + +function requireAttribute () { + if (hasRequiredAttribute) return attribute; + hasRequiredAttribute = 1; + (function (exports) { + + exports.__esModule = true; + exports["default"] = void 0; + exports.unescapeValue = unescapeValue; + var _cssesc = _interopRequireDefault(/*@__PURE__*/ requireCssesc()); + var _unesc = _interopRequireDefault(/*@__PURE__*/ requireUnesc()); + var _namespace = _interopRequireDefault(/*@__PURE__*/ requireNamespace()); + var _types = /*@__PURE__*/ requireTypes(); + var _CSSESC_QUOTE_OPTIONS; + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var deprecate = /*@__PURE__*/ requireNode$1(); + var WRAPPED_IN_QUOTES = /^('|")([^]*)\1$/; + var warnOfDeprecatedValueAssignment = deprecate(function () {}, "Assigning an attribute a value containing characters that might need to be escaped is deprecated. " + "Call attribute.setValue() instead."); + var warnOfDeprecatedQuotedAssignment = deprecate(function () {}, "Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead."); + var warnOfDeprecatedConstructor = deprecate(function () {}, "Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now."); + function unescapeValue(value) { + var deprecatedUsage = false; + var quoteMark = null; + var unescaped = value; + var m = unescaped.match(WRAPPED_IN_QUOTES); + if (m) { + quoteMark = m[1]; + unescaped = m[2]; + } + unescaped = (0, _unesc["default"])(unescaped); + if (unescaped !== value) { + deprecatedUsage = true; + } + return { + deprecatedUsage: deprecatedUsage, + unescaped: unescaped, + quoteMark: quoteMark + }; + } + function handleDeprecatedContructorOpts(opts) { + if (opts.quoteMark !== undefined) { + return opts; + } + if (opts.value === undefined) { + return opts; + } + warnOfDeprecatedConstructor(); + var _unescapeValue = unescapeValue(opts.value), + quoteMark = _unescapeValue.quoteMark, + unescaped = _unescapeValue.unescaped; + if (!opts.raws) { + opts.raws = {}; + } + if (opts.raws.value === undefined) { + opts.raws.value = opts.value; + } + opts.value = unescaped; + opts.quoteMark = quoteMark; + return opts; + } + var Attribute = /*#__PURE__*/function (_Namespace) { + _inheritsLoose(Attribute, _Namespace); + function Attribute(opts) { + var _this; + if (opts === void 0) { + opts = {}; + } + _this = _Namespace.call(this, handleDeprecatedContructorOpts(opts)) || this; + _this.type = _types.ATTRIBUTE; + _this.raws = _this.raws || {}; + Object.defineProperty(_this.raws, 'unquoted', { + get: deprecate(function () { + return _this.value; + }, "attr.raws.unquoted is deprecated. Call attr.value instead."), + set: deprecate(function () { + return _this.value; + }, "Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.") + }); + _this._constructed = true; + return _this; + } + + /** + * Returns the Attribute's value quoted such that it would be legal to use + * in the value of a css file. The original value's quotation setting + * used for stringification is left unchanged. See `setValue(value, options)` + * if you want to control the quote settings of a new value for the attribute. + * + * You can also change the quotation used for the current value by setting quoteMark. + * + * Options: + * * quoteMark {'"' | "'" | null} - Use this value to quote the value. If this + * option is not set, the original value for quoteMark will be used. If + * indeterminate, a double quote is used. The legal values are: + * * `null` - the value will be unquoted and characters will be escaped as necessary. + * * `'` - the value will be quoted with a single quote and single quotes are escaped. + * * `"` - the value will be quoted with a double quote and double quotes are escaped. + * * preferCurrentQuoteMark {boolean} - if true, prefer the source quote mark + * over the quoteMark option value. + * * smart {boolean} - if true, will select a quote mark based on the value + * and the other options specified here. See the `smartQuoteMark()` + * method. + **/ + var _proto = Attribute.prototype; + _proto.getQuotedValue = function getQuotedValue(options) { + if (options === void 0) { + options = {}; + } + var quoteMark = this._determineQuoteMark(options); + var cssescopts = CSSESC_QUOTE_OPTIONS[quoteMark]; + var escaped = (0, _cssesc["default"])(this._value, cssescopts); + return escaped; + }; + _proto._determineQuoteMark = function _determineQuoteMark(options) { + return options.smart ? this.smartQuoteMark(options) : this.preferredQuoteMark(options); + } + + /** + * Set the unescaped value with the specified quotation options. The value + * provided must not include any wrapping quote marks -- those quotes will + * be interpreted as part of the value and escaped accordingly. + */; + _proto.setValue = function setValue(value, options) { + if (options === void 0) { + options = {}; + } + this._value = value; + this._quoteMark = this._determineQuoteMark(options); + this._syncRawValue(); + } + + /** + * Intelligently select a quoteMark value based on the value's contents. If + * the value is a legal CSS ident, it will not be quoted. Otherwise a quote + * mark will be picked that minimizes the number of escapes. + * + * If there's no clear winner, the quote mark from these options is used, + * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is + * true). If the quoteMark is unspecified, a double quote is used. + * + * @param options This takes the quoteMark and preferCurrentQuoteMark options + * from the quoteValue method. + */; + _proto.smartQuoteMark = function smartQuoteMark(options) { + var v = this.value; + var numSingleQuotes = v.replace(/[^']/g, '').length; + var numDoubleQuotes = v.replace(/[^"]/g, '').length; + if (numSingleQuotes + numDoubleQuotes === 0) { + var escaped = (0, _cssesc["default"])(v, { + isIdentifier: true + }); + if (escaped === v) { + return Attribute.NO_QUOTE; + } else { + var pref = this.preferredQuoteMark(options); + if (pref === Attribute.NO_QUOTE) { + // pick a quote mark that isn't none and see if it's smaller + var quote = this.quoteMark || options.quoteMark || Attribute.DOUBLE_QUOTE; + var opts = CSSESC_QUOTE_OPTIONS[quote]; + var quoteValue = (0, _cssesc["default"])(v, opts); + if (quoteValue.length < escaped.length) { + return quote; + } + } + return pref; + } + } else if (numDoubleQuotes === numSingleQuotes) { + return this.preferredQuoteMark(options); + } else if (numDoubleQuotes < numSingleQuotes) { + return Attribute.DOUBLE_QUOTE; + } else { + return Attribute.SINGLE_QUOTE; + } + } + + /** + * Selects the preferred quote mark based on the options and the current quote mark value. + * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)` + * instead. + */; + _proto.preferredQuoteMark = function preferredQuoteMark(options) { + var quoteMark = options.preferCurrentQuoteMark ? this.quoteMark : options.quoteMark; + if (quoteMark === undefined) { + quoteMark = options.preferCurrentQuoteMark ? options.quoteMark : this.quoteMark; + } + if (quoteMark === undefined) { + quoteMark = Attribute.DOUBLE_QUOTE; + } + return quoteMark; + }; + _proto._syncRawValue = function _syncRawValue() { + var rawValue = (0, _cssesc["default"])(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]); + if (rawValue === this._value) { + if (this.raws) { + delete this.raws.value; + } + } else { + this.raws.value = rawValue; + } + }; + _proto._handleEscapes = function _handleEscapes(prop, value) { + if (this._constructed) { + var escaped = (0, _cssesc["default"])(value, { + isIdentifier: true + }); + if (escaped !== value) { + this.raws[prop] = escaped; + } else { + delete this.raws[prop]; + } + } + }; + _proto._spacesFor = function _spacesFor(name) { + var attrSpaces = { + before: '', + after: '' + }; + var spaces = this.spaces[name] || {}; + var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {}; + return Object.assign(attrSpaces, spaces, rawSpaces); + }; + _proto._stringFor = function _stringFor(name, spaceName, concat) { + if (spaceName === void 0) { + spaceName = name; + } + if (concat === void 0) { + concat = defaultAttrConcat; + } + var attrSpaces = this._spacesFor(spaceName); + return concat(this.stringifyProperty(name), attrSpaces); + } + + /** + * returns the offset of the attribute part specified relative to the + * start of the node of the output string. + * + * * "ns" - alias for "namespace" + * * "namespace" - the namespace if it exists. + * * "attribute" - the attribute name + * * "attributeNS" - the start of the attribute or its namespace + * * "operator" - the match operator of the attribute + * * "value" - The value (string or identifier) + * * "insensitive" - the case insensitivity flag; + * @param part One of the possible values inside an attribute. + * @returns -1 if the name is invalid or the value doesn't exist in this attribute. + */; + _proto.offsetOf = function offsetOf(name) { + var count = 1; + var attributeSpaces = this._spacesFor("attribute"); + count += attributeSpaces.before.length; + if (name === "namespace" || name === "ns") { + return this.namespace ? count : -1; + } + if (name === "attributeNS") { + return count; + } + count += this.namespaceString.length; + if (this.namespace) { + count += 1; + } + if (name === "attribute") { + return count; + } + count += this.stringifyProperty("attribute").length; + count += attributeSpaces.after.length; + var operatorSpaces = this._spacesFor("operator"); + count += operatorSpaces.before.length; + var operator = this.stringifyProperty("operator"); + if (name === "operator") { + return operator ? count : -1; + } + count += operator.length; + count += operatorSpaces.after.length; + var valueSpaces = this._spacesFor("value"); + count += valueSpaces.before.length; + var value = this.stringifyProperty("value"); + if (name === "value") { + return value ? count : -1; + } + count += value.length; + count += valueSpaces.after.length; + var insensitiveSpaces = this._spacesFor("insensitive"); + count += insensitiveSpaces.before.length; + if (name === "insensitive") { + return this.insensitive ? count : -1; + } + return -1; + }; + _proto.toString = function toString() { + var _this2 = this; + var selector = [this.rawSpaceBefore, '[']; + selector.push(this._stringFor('qualifiedAttribute', 'attribute')); + if (this.operator && (this.value || this.value === '')) { + selector.push(this._stringFor('operator')); + selector.push(this._stringFor('value')); + selector.push(this._stringFor('insensitiveFlag', 'insensitive', function (attrValue, attrSpaces) { + if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) { + attrSpaces.before = " "; + } + return defaultAttrConcat(attrValue, attrSpaces); + })); + } + selector.push(']'); + selector.push(this.rawSpaceAfter); + return selector.join(''); + }; + _createClass(Attribute, [{ + key: "quoted", + get: function get() { + var qm = this.quoteMark; + return qm === "'" || qm === '"'; + }, + set: function set(value) { + warnOfDeprecatedQuotedAssignment(); + } + + /** + * returns a single (`'`) or double (`"`) quote character if the value is quoted. + * returns `null` if the value is not quoted. + * returns `undefined` if the quotation state is unknown (this can happen when + * the attribute is constructed without specifying a quote mark.) + */ + }, { + key: "quoteMark", + get: function get() { + return this._quoteMark; + } + + /** + * Set the quote mark to be used by this attribute's value. + * If the quote mark changes, the raw (escaped) value at `attr.raws.value` of the attribute + * value is updated accordingly. + * + * @param {"'" | '"' | null} quoteMark The quote mark or `null` if the value should be unquoted. + */, + set: function set(quoteMark) { + if (!this._constructed) { + this._quoteMark = quoteMark; + return; + } + if (this._quoteMark !== quoteMark) { + this._quoteMark = quoteMark; + this._syncRawValue(); + } + } + }, { + key: "qualifiedAttribute", + get: function get() { + return this.qualifiedName(this.raws.attribute || this.attribute); + } + }, { + key: "insensitiveFlag", + get: function get() { + return this.insensitive ? 'i' : ''; + } + }, { + key: "value", + get: function get() { + return this._value; + }, + set: + /** + * Before 3.0, the value had to be set to an escaped value including any wrapped + * quote marks. In 3.0, the semantics of `Attribute.value` changed so that the value + * is unescaped during parsing and any quote marks are removed. + * + * Because the ambiguity of this semantic change, if you set `attr.value = newValue`, + * a deprecation warning is raised when the new value contains any characters that would + * require escaping (including if it contains wrapped quotes). + * + * Instead, you should call `attr.setValue(newValue, opts)` and pass options that describe + * how the new value is quoted. + */ + function set(v) { + if (this._constructed) { + var _unescapeValue2 = unescapeValue(v), + deprecatedUsage = _unescapeValue2.deprecatedUsage, + unescaped = _unescapeValue2.unescaped, + quoteMark = _unescapeValue2.quoteMark; + if (deprecatedUsage) { + warnOfDeprecatedValueAssignment(); + } + if (unescaped === this._value && quoteMark === this._quoteMark) { + return; + } + this._value = unescaped; + this._quoteMark = quoteMark; + this._syncRawValue(); + } else { + this._value = v; + } + } + }, { + key: "insensitive", + get: function get() { + return this._insensitive; + } + + /** + * Set the case insensitive flag. + * If the case insensitive flag changes, the raw (escaped) value at `attr.raws.insensitiveFlag` + * of the attribute is updated accordingly. + * + * @param {true | false} insensitive true if the attribute should match case-insensitively. + */, + set: function set(insensitive) { + if (!insensitive) { + this._insensitive = false; + + // "i" and "I" can be used in "this.raws.insensitiveFlag" to store the original notation. + // When setting `attr.insensitive = false` both should be erased to ensure correct serialization. + if (this.raws && (this.raws.insensitiveFlag === 'I' || this.raws.insensitiveFlag === 'i')) { + this.raws.insensitiveFlag = undefined; + } + } + this._insensitive = insensitive; + } + }, { + key: "attribute", + get: function get() { + return this._attribute; + }, + set: function set(name) { + this._handleEscapes("attribute", name); + this._attribute = name; + } + }]); + return Attribute; + }(_namespace["default"]); + exports["default"] = Attribute; + Attribute.NO_QUOTE = null; + Attribute.SINGLE_QUOTE = "'"; + Attribute.DOUBLE_QUOTE = '"'; + var CSSESC_QUOTE_OPTIONS = (_CSSESC_QUOTE_OPTIONS = { + "'": { + quotes: 'single', + wrap: true + }, + '"': { + quotes: 'double', + wrap: true + } + }, _CSSESC_QUOTE_OPTIONS[null] = { + isIdentifier: true + }, _CSSESC_QUOTE_OPTIONS); + function defaultAttrConcat(attrValue, attrSpaces) { + return "" + attrSpaces.before + attrValue + attrSpaces.after; + } + } (attribute)); + return attribute; +} + +var universal = {exports: {}}; + +var hasRequiredUniversal; + +function requireUniversal () { + if (hasRequiredUniversal) return universal.exports; + hasRequiredUniversal = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _namespace = _interopRequireDefault(/*@__PURE__*/ requireNamespace()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Universal = /*#__PURE__*/function (_Namespace) { + _inheritsLoose(Universal, _Namespace); + function Universal(opts) { + var _this; + _this = _Namespace.call(this, opts) || this; + _this.type = _types.UNIVERSAL; + _this.value = '*'; + return _this; + } + return Universal; + }(_namespace["default"]); + exports["default"] = Universal; + module.exports = exports.default; + } (universal, universal.exports)); + return universal.exports; +} + +var combinator = {exports: {}}; + +var hasRequiredCombinator; + +function requireCombinator () { + if (hasRequiredCombinator) return combinator.exports; + hasRequiredCombinator = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Combinator = /*#__PURE__*/function (_Node) { + _inheritsLoose(Combinator, _Node); + function Combinator(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.COMBINATOR; + return _this; + } + return Combinator; + }(_node["default"]); + exports["default"] = Combinator; + module.exports = exports.default; + } (combinator, combinator.exports)); + return combinator.exports; +} + +var nesting = {exports: {}}; + +var hasRequiredNesting; + +function requireNesting () { + if (hasRequiredNesting) return nesting.exports; + hasRequiredNesting = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Nesting = /*#__PURE__*/function (_Node) { + _inheritsLoose(Nesting, _Node); + function Nesting(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.NESTING; + _this.value = '&'; + return _this; + } + return Nesting; + }(_node["default"]); + exports["default"] = Nesting; + module.exports = exports.default; + } (nesting, nesting.exports)); + return nesting.exports; +} + +var sortAscending = {exports: {}}; + +var hasRequiredSortAscending; + +function requireSortAscending () { + if (hasRequiredSortAscending) return sortAscending.exports; + hasRequiredSortAscending = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = sortAscending; + function sortAscending(list) { + return list.sort(function (a, b) { + return a - b; + }); + } + module.exports = exports.default; + } (sortAscending, sortAscending.exports)); + return sortAscending.exports; +} + +var tokenize = {}; + +var tokenTypes = {}; + +var hasRequiredTokenTypes; + +function requireTokenTypes () { + if (hasRequiredTokenTypes) return tokenTypes; + hasRequiredTokenTypes = 1; + + tokenTypes.__esModule = true; + tokenTypes.word = tokenTypes.tilde = tokenTypes.tab = tokenTypes.str = tokenTypes.space = tokenTypes.slash = tokenTypes.singleQuote = tokenTypes.semicolon = tokenTypes.plus = tokenTypes.pipe = tokenTypes.openSquare = tokenTypes.openParenthesis = tokenTypes.newline = tokenTypes.greaterThan = tokenTypes.feed = tokenTypes.equals = tokenTypes.doubleQuote = tokenTypes.dollar = tokenTypes.cr = tokenTypes.comment = tokenTypes.comma = tokenTypes.combinator = tokenTypes.colon = tokenTypes.closeSquare = tokenTypes.closeParenthesis = tokenTypes.caret = tokenTypes.bang = tokenTypes.backslash = tokenTypes.at = tokenTypes.asterisk = tokenTypes.ampersand = void 0; + var ampersand = 38; // `&`.charCodeAt(0); + tokenTypes.ampersand = ampersand; + var asterisk = 42; // `*`.charCodeAt(0); + tokenTypes.asterisk = asterisk; + var at = 64; // `@`.charCodeAt(0); + tokenTypes.at = at; + var comma = 44; // `,`.charCodeAt(0); + tokenTypes.comma = comma; + var colon = 58; // `:`.charCodeAt(0); + tokenTypes.colon = colon; + var semicolon = 59; // `;`.charCodeAt(0); + tokenTypes.semicolon = semicolon; + var openParenthesis = 40; // `(`.charCodeAt(0); + tokenTypes.openParenthesis = openParenthesis; + var closeParenthesis = 41; // `)`.charCodeAt(0); + tokenTypes.closeParenthesis = closeParenthesis; + var openSquare = 91; // `[`.charCodeAt(0); + tokenTypes.openSquare = openSquare; + var closeSquare = 93; // `]`.charCodeAt(0); + tokenTypes.closeSquare = closeSquare; + var dollar = 36; // `$`.charCodeAt(0); + tokenTypes.dollar = dollar; + var tilde = 126; // `~`.charCodeAt(0); + tokenTypes.tilde = tilde; + var caret = 94; // `^`.charCodeAt(0); + tokenTypes.caret = caret; + var plus = 43; // `+`.charCodeAt(0); + tokenTypes.plus = plus; + var equals = 61; // `=`.charCodeAt(0); + tokenTypes.equals = equals; + var pipe = 124; // `|`.charCodeAt(0); + tokenTypes.pipe = pipe; + var greaterThan = 62; // `>`.charCodeAt(0); + tokenTypes.greaterThan = greaterThan; + var space = 32; // ` `.charCodeAt(0); + tokenTypes.space = space; + var singleQuote = 39; // `'`.charCodeAt(0); + tokenTypes.singleQuote = singleQuote; + var doubleQuote = 34; // `"`.charCodeAt(0); + tokenTypes.doubleQuote = doubleQuote; + var slash = 47; // `/`.charCodeAt(0); + tokenTypes.slash = slash; + var bang = 33; // `!`.charCodeAt(0); + tokenTypes.bang = bang; + var backslash = 92; // '\\'.charCodeAt(0); + tokenTypes.backslash = backslash; + var cr = 13; // '\r'.charCodeAt(0); + tokenTypes.cr = cr; + var feed = 12; // '\f'.charCodeAt(0); + tokenTypes.feed = feed; + var newline = 10; // '\n'.charCodeAt(0); + tokenTypes.newline = newline; + var tab = 9; // '\t'.charCodeAt(0); + + // Expose aliases primarily for readability. + tokenTypes.tab = tab; + var str = singleQuote; + + // No good single character representation! + tokenTypes.str = str; + var comment = -1; + tokenTypes.comment = comment; + var word = -2; + tokenTypes.word = word; + var combinator = -3; + tokenTypes.combinator = combinator; + return tokenTypes; +} + +var hasRequiredTokenize; + +function requireTokenize () { + if (hasRequiredTokenize) return tokenize; + hasRequiredTokenize = 1; + (function (exports) { + + exports.__esModule = true; + exports.FIELDS = void 0; + exports["default"] = tokenize; + var t = _interopRequireWildcard(/*@__PURE__*/ requireTokenTypes()); + var _unescapable, _wordDelimiters; + function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + var unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable); + var wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters); + var hex = {}; + var hexChars = "0123456789abcdefABCDEF"; + for (var i = 0; i < hexChars.length; i++) { + hex[hexChars.charCodeAt(i)] = true; + } + + /** + * Returns the last index of the bar css word + * @param {string} css The string in which the word begins + * @param {number} start The index into the string where word's first letter occurs + */ + function consumeWord(css, start) { + var next = start; + var code; + do { + code = css.charCodeAt(next); + if (wordDelimiters[code]) { + return next - 1; + } else if (code === t.backslash) { + next = consumeEscape(css, next) + 1; + } else { + // All other characters are part of the word + next++; + } + } while (next < css.length); + return next - 1; + } + + /** + * Returns the last index of the escape sequence + * @param {string} css The string in which the sequence begins + * @param {number} start The index into the string where escape character (`\`) occurs. + */ + function consumeEscape(css, start) { + var next = start; + var code = css.charCodeAt(next + 1); + if (unescapable[code]) ; else if (hex[code]) { + var hexDigits = 0; + // consume up to 6 hex chars + do { + next++; + hexDigits++; + code = css.charCodeAt(next + 1); + } while (hex[code] && hexDigits < 6); + // if fewer than 6 hex chars, a trailing space ends the escape + if (hexDigits < 6 && code === t.space) { + next++; + } + } else { + // the next char is part of the current word + next++; + } + return next; + } + var FIELDS = { + TYPE: 0, + START_LINE: 1, + START_COL: 2, + END_LINE: 3, + END_COL: 4, + START_POS: 5, + END_POS: 6 + }; + exports.FIELDS = FIELDS; + function tokenize(input) { + var tokens = []; + var css = input.css.valueOf(); + var _css = css, + length = _css.length; + var offset = -1; + var line = 1; + var start = 0; + var end = 0; + var code, content, endColumn, endLine, escaped, escapePos, last, lines, next, nextLine, nextOffset, quote, tokenType; + function unclosed(what, fix) { + if (input.safe) { + // fyi: this is never set to true. + css += fix; + next = css.length - 1; + } else { + throw input.error('Unclosed ' + what, line, start - offset, start); + } + } + while (start < length) { + code = css.charCodeAt(start); + if (code === t.newline) { + offset = start; + line += 1; + } + switch (code) { + case t.space: + case t.tab: + case t.newline: + case t.cr: + case t.feed: + next = start; + do { + next += 1; + code = css.charCodeAt(next); + if (code === t.newline) { + offset = next; + line += 1; + } + } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed); + tokenType = t.space; + endLine = line; + endColumn = next - offset - 1; + end = next; + break; + case t.plus: + case t.greaterThan: + case t.tilde: + case t.pipe: + next = start; + do { + next += 1; + code = css.charCodeAt(next); + } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe); + tokenType = t.combinator; + endLine = line; + endColumn = start - offset; + end = next; + break; + + // Consume these characters as single tokens. + case t.asterisk: + case t.ampersand: + case t.bang: + case t.comma: + case t.equals: + case t.dollar: + case t.caret: + case t.openSquare: + case t.closeSquare: + case t.colon: + case t.semicolon: + case t.openParenthesis: + case t.closeParenthesis: + next = start; + tokenType = code; + endLine = line; + endColumn = start - offset; + end = next + 1; + break; + case t.singleQuote: + case t.doubleQuote: + quote = code === t.singleQuote ? "'" : '"'; + next = start; + do { + escaped = false; + next = css.indexOf(quote, next + 1); + if (next === -1) { + unclosed('quote', quote); + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === t.backslash) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped); + tokenType = t.str; + endLine = line; + endColumn = start - offset; + end = next + 1; + break; + default: + if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) { + next = css.indexOf('*/', start + 2) + 1; + if (next === 0) { + unclosed('comment', '*/'); + } + content = css.slice(start, next + 1); + lines = content.split('\n'); + last = lines.length - 1; + if (last > 0) { + nextLine = line + last; + nextOffset = next - lines[last].length; + } else { + nextLine = line; + nextOffset = offset; + } + tokenType = t.comment; + line = nextLine; + endLine = nextLine; + endColumn = next - nextOffset; + } else if (code === t.slash) { + next = start; + tokenType = code; + endLine = line; + endColumn = start - offset; + end = next + 1; + } else { + next = consumeWord(css, start); + tokenType = t.word; + endLine = line; + endColumn = next - offset; + } + end = next + 1; + break; + } + + // Ensure that the token structure remains consistent + tokens.push([tokenType, + // [0] Token type + line, + // [1] Starting line + start - offset, + // [2] Starting column + endLine, + // [3] Ending line + endColumn, + // [4] Ending column + start, + // [5] Start position / Source index + end // [6] End position + ]); + + // Reset offset for the next token + if (nextOffset) { + offset = nextOffset; + nextOffset = null; + } + start = end; + } + return tokens; + } + } (tokenize)); + return tokenize; +} + +var hasRequiredParser; + +function requireParser () { + if (hasRequiredParser) return parser.exports; + hasRequiredParser = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _root = _interopRequireDefault(/*@__PURE__*/ requireRoot()); + var _selector = _interopRequireDefault(/*@__PURE__*/ requireSelector()); + var _className = _interopRequireDefault(/*@__PURE__*/ requireClassName()); + var _comment = _interopRequireDefault(/*@__PURE__*/ requireComment()); + var _id = _interopRequireDefault(/*@__PURE__*/ requireId()); + var _tag = _interopRequireDefault(/*@__PURE__*/ requireTag()); + var _string = _interopRequireDefault(/*@__PURE__*/ requireString()); + var _pseudo = _interopRequireDefault(/*@__PURE__*/ requirePseudo()); + var _attribute = _interopRequireWildcard(/*@__PURE__*/ requireAttribute()); + var _universal = _interopRequireDefault(/*@__PURE__*/ requireUniversal()); + var _combinator = _interopRequireDefault(/*@__PURE__*/ requireCombinator()); + var _nesting = _interopRequireDefault(/*@__PURE__*/ requireNesting()); + var _sortAscending = _interopRequireDefault(/*@__PURE__*/ requireSortAscending()); + var _tokenize = _interopRequireWildcard(/*@__PURE__*/ requireTokenize()); + var tokens = _interopRequireWildcard(/*@__PURE__*/ requireTokenTypes()); + var types = _interopRequireWildcard(/*@__PURE__*/ requireTypes()); + var _util = /*@__PURE__*/ requireUtil(); + var _WHITESPACE_TOKENS, _Object$assign; + function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + var WHITESPACE_TOKENS = (_WHITESPACE_TOKENS = {}, _WHITESPACE_TOKENS[tokens.space] = true, _WHITESPACE_TOKENS[tokens.cr] = true, _WHITESPACE_TOKENS[tokens.feed] = true, _WHITESPACE_TOKENS[tokens.newline] = true, _WHITESPACE_TOKENS[tokens.tab] = true, _WHITESPACE_TOKENS); + var WHITESPACE_EQUIV_TOKENS = Object.assign({}, WHITESPACE_TOKENS, (_Object$assign = {}, _Object$assign[tokens.comment] = true, _Object$assign)); + function tokenStart(token) { + return { + line: token[_tokenize.FIELDS.START_LINE], + column: token[_tokenize.FIELDS.START_COL] + }; + } + function tokenEnd(token) { + return { + line: token[_tokenize.FIELDS.END_LINE], + column: token[_tokenize.FIELDS.END_COL] + }; + } + function getSource(startLine, startColumn, endLine, endColumn) { + return { + start: { + line: startLine, + column: startColumn + }, + end: { + line: endLine, + column: endColumn + } + }; + } + function getTokenSource(token) { + return getSource(token[_tokenize.FIELDS.START_LINE], token[_tokenize.FIELDS.START_COL], token[_tokenize.FIELDS.END_LINE], token[_tokenize.FIELDS.END_COL]); + } + function getTokenSourceSpan(startToken, endToken) { + if (!startToken) { + return undefined; + } + return getSource(startToken[_tokenize.FIELDS.START_LINE], startToken[_tokenize.FIELDS.START_COL], endToken[_tokenize.FIELDS.END_LINE], endToken[_tokenize.FIELDS.END_COL]); + } + function unescapeProp(node, prop) { + var value = node[prop]; + if (typeof value !== "string") { + return; + } + if (value.indexOf("\\") !== -1) { + (0, _util.ensureObject)(node, 'raws'); + node[prop] = (0, _util.unesc)(value); + if (node.raws[prop] === undefined) { + node.raws[prop] = value; + } + } + return node; + } + function indexesOf(array, item) { + var i = -1; + var indexes = []; + while ((i = array.indexOf(item, i + 1)) !== -1) { + indexes.push(i); + } + return indexes; + } + function uniqs() { + var list = Array.prototype.concat.apply([], arguments); + return list.filter(function (item, i) { + return i === list.indexOf(item); + }); + } + var Parser = /*#__PURE__*/function () { + function Parser(rule, options) { + if (options === void 0) { + options = {}; + } + this.rule = rule; + this.options = Object.assign({ + lossy: false, + safe: false + }, options); + this.position = 0; + this.css = typeof this.rule === 'string' ? this.rule : this.rule.selector; + this.tokens = (0, _tokenize["default"])({ + css: this.css, + error: this._errorGenerator(), + safe: this.options.safe + }); + var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]); + this.root = new _root["default"]({ + source: rootSource + }); + this.root.errorGenerator = this._errorGenerator(); + var selector = new _selector["default"]({ + source: { + start: { + line: 1, + column: 1 + } + }, + sourceIndex: 0 + }); + this.root.append(selector); + this.current = selector; + this.loop(); + } + var _proto = Parser.prototype; + _proto._errorGenerator = function _errorGenerator() { + var _this = this; + return function (message, errorOptions) { + if (typeof _this.rule === 'string') { + return new Error(message); + } + return _this.rule.error(message, errorOptions); + }; + }; + _proto.attribute = function attribute() { + var attr = []; + var startingToken = this.currToken; + this.position++; + while (this.position < this.tokens.length && this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) { + attr.push(this.currToken); + this.position++; + } + if (this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) { + return this.expected('closing square bracket', this.currToken[_tokenize.FIELDS.START_POS]); + } + var len = attr.length; + var node = { + source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]), + sourceIndex: startingToken[_tokenize.FIELDS.START_POS] + }; + if (len === 1 && !~[tokens.word].indexOf(attr[0][_tokenize.FIELDS.TYPE])) { + return this.expected('attribute', attr[0][_tokenize.FIELDS.START_POS]); + } + var pos = 0; + var spaceBefore = ''; + var commentBefore = ''; + var lastAdded = null; + var spaceAfterMeaningfulToken = false; + while (pos < len) { + var token = attr[pos]; + var content = this.content(token); + var next = attr[pos + 1]; + switch (token[_tokenize.FIELDS.TYPE]) { + case tokens.space: + // if ( + // len === 1 || + // pos === 0 && this.content(next) === '|' + // ) { + // return this.expected('attribute', token[TOKEN.START_POS], content); + // } + spaceAfterMeaningfulToken = true; + if (this.options.lossy) { + break; + } + if (lastAdded) { + (0, _util.ensureObject)(node, 'spaces', lastAdded); + var prevContent = node.spaces[lastAdded].after || ''; + node.spaces[lastAdded].after = prevContent + content; + var existingComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || null; + if (existingComment) { + node.raws.spaces[lastAdded].after = existingComment + content; + } + } else { + spaceBefore = spaceBefore + content; + commentBefore = commentBefore + content; + } + break; + case tokens.asterisk: + if (next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = 'operator'; + } else if ((!node.namespace || lastAdded === "namespace" && !spaceAfterMeaningfulToken) && next) { + if (spaceBefore) { + (0, _util.ensureObject)(node, 'spaces', 'attribute'); + node.spaces.attribute.before = spaceBefore; + spaceBefore = ''; + } + if (commentBefore) { + (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute'); + node.raws.spaces.attribute.before = spaceBefore; + commentBefore = ''; + } + node.namespace = (node.namespace || "") + content; + var rawValue = (0, _util.getProp)(node, 'raws', 'namespace') || null; + if (rawValue) { + node.raws.namespace += content; + } + lastAdded = 'namespace'; + } + spaceAfterMeaningfulToken = false; + break; + case tokens.dollar: + if (lastAdded === "value") { + var oldRawValue = (0, _util.getProp)(node, 'raws', 'value'); + node.value += "$"; + if (oldRawValue) { + node.raws.value = oldRawValue + "$"; + } + break; + } + // Falls through + case tokens.caret: + if (next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = 'operator'; + } + spaceAfterMeaningfulToken = false; + break; + case tokens.combinator: + if (content === '~' && next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = 'operator'; + } + if (content !== '|') { + spaceAfterMeaningfulToken = false; + break; + } + if (next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = 'operator'; + } else if (!node.namespace && !node.attribute) { + node.namespace = true; + } + spaceAfterMeaningfulToken = false; + break; + case tokens.word: + if (next && this.content(next) === '|' && attr[pos + 2] && attr[pos + 2][_tokenize.FIELDS.TYPE] !== tokens.equals && + // this look-ahead probably fails with comment nodes involved. + !node.operator && !node.namespace) { + node.namespace = content; + lastAdded = 'namespace'; + } else if (!node.attribute || lastAdded === "attribute" && !spaceAfterMeaningfulToken) { + if (spaceBefore) { + (0, _util.ensureObject)(node, 'spaces', 'attribute'); + node.spaces.attribute.before = spaceBefore; + spaceBefore = ''; + } + if (commentBefore) { + (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute'); + node.raws.spaces.attribute.before = commentBefore; + commentBefore = ''; + } + node.attribute = (node.attribute || "") + content; + var _rawValue = (0, _util.getProp)(node, 'raws', 'attribute') || null; + if (_rawValue) { + node.raws.attribute += content; + } + lastAdded = 'attribute'; + } else if (!node.value && node.value !== "" || lastAdded === "value" && !(spaceAfterMeaningfulToken || node.quoteMark)) { + var _unescaped = (0, _util.unesc)(content); + var _oldRawValue = (0, _util.getProp)(node, 'raws', 'value') || ''; + var oldValue = node.value || ''; + node.value = oldValue + _unescaped; + node.quoteMark = null; + if (_unescaped !== content || _oldRawValue) { + (0, _util.ensureObject)(node, 'raws'); + node.raws.value = (_oldRawValue || oldValue) + content; + } + lastAdded = 'value'; + } else { + var insensitive = content === 'i' || content === "I"; + if ((node.value || node.value === '') && (node.quoteMark || spaceAfterMeaningfulToken)) { + node.insensitive = insensitive; + if (!insensitive || content === "I") { + (0, _util.ensureObject)(node, 'raws'); + node.raws.insensitiveFlag = content; + } + lastAdded = 'insensitive'; + if (spaceBefore) { + (0, _util.ensureObject)(node, 'spaces', 'insensitive'); + node.spaces.insensitive.before = spaceBefore; + spaceBefore = ''; + } + if (commentBefore) { + (0, _util.ensureObject)(node, 'raws', 'spaces', 'insensitive'); + node.raws.spaces.insensitive.before = commentBefore; + commentBefore = ''; + } + } else if (node.value || node.value === '') { + lastAdded = 'value'; + node.value += content; + if (node.raws.value) { + node.raws.value += content; + } + } + } + spaceAfterMeaningfulToken = false; + break; + case tokens.str: + if (!node.attribute || !node.operator) { + return this.error("Expected an attribute followed by an operator preceding the string.", { + index: token[_tokenize.FIELDS.START_POS] + }); + } + var _unescapeValue = (0, _attribute.unescapeValue)(content), + unescaped = _unescapeValue.unescaped, + quoteMark = _unescapeValue.quoteMark; + node.value = unescaped; + node.quoteMark = quoteMark; + lastAdded = 'value'; + (0, _util.ensureObject)(node, 'raws'); + node.raws.value = content; + spaceAfterMeaningfulToken = false; + break; + case tokens.equals: + if (!node.attribute) { + return this.expected('attribute', token[_tokenize.FIELDS.START_POS], content); + } + if (node.value) { + return this.error('Unexpected "=" found; an operator was already defined.', { + index: token[_tokenize.FIELDS.START_POS] + }); + } + node.operator = node.operator ? node.operator + content : content; + lastAdded = 'operator'; + spaceAfterMeaningfulToken = false; + break; + case tokens.comment: + if (lastAdded) { + if (spaceAfterMeaningfulToken || next && next[_tokenize.FIELDS.TYPE] === tokens.space || lastAdded === 'insensitive') { + var lastComment = (0, _util.getProp)(node, 'spaces', lastAdded, 'after') || ''; + var rawLastComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || lastComment; + (0, _util.ensureObject)(node, 'raws', 'spaces', lastAdded); + node.raws.spaces[lastAdded].after = rawLastComment + content; + } else { + var lastValue = node[lastAdded] || ''; + var rawLastValue = (0, _util.getProp)(node, 'raws', lastAdded) || lastValue; + (0, _util.ensureObject)(node, 'raws'); + node.raws[lastAdded] = rawLastValue + content; + } + } else { + commentBefore = commentBefore + content; + } + break; + default: + return this.error("Unexpected \"" + content + "\" found.", { + index: token[_tokenize.FIELDS.START_POS] + }); + } + pos++; + } + unescapeProp(node, "attribute"); + unescapeProp(node, "namespace"); + this.newNode(new _attribute["default"](node)); + this.position++; + } + + /** + * return a node containing meaningless garbage up to (but not including) the specified token position. + * if the token position is negative, all remaining tokens are consumed. + * + * This returns an array containing a single string node if all whitespace, + * otherwise an array of comment nodes with space before and after. + * + * These tokens are not added to the current selector, the caller can add them or use them to amend + * a previous node's space metadata. + * + * In lossy mode, this returns only comments. + */; + _proto.parseWhitespaceEquivalentTokens = function parseWhitespaceEquivalentTokens(stopPosition) { + if (stopPosition < 0) { + stopPosition = this.tokens.length; + } + var startPosition = this.position; + var nodes = []; + var space = ""; + var lastComment = undefined; + do { + if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) { + if (!this.options.lossy) { + space += this.content(); + } + } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.comment) { + var spaces = {}; + if (space) { + spaces.before = space; + space = ""; + } + lastComment = new _comment["default"]({ + value: this.content(), + source: getTokenSource(this.currToken), + sourceIndex: this.currToken[_tokenize.FIELDS.START_POS], + spaces: spaces + }); + nodes.push(lastComment); + } + } while (++this.position < stopPosition); + if (space) { + if (lastComment) { + lastComment.spaces.after = space; + } else if (!this.options.lossy) { + var firstToken = this.tokens[startPosition]; + var lastToken = this.tokens[this.position - 1]; + nodes.push(new _string["default"]({ + value: '', + source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]), + sourceIndex: firstToken[_tokenize.FIELDS.START_POS], + spaces: { + before: space, + after: '' + } + })); + } + } + return nodes; + } + + /** + * + * @param {*} nodes + */; + _proto.convertWhitespaceNodesToSpace = function convertWhitespaceNodesToSpace(nodes, requiredSpace) { + var _this2 = this; + if (requiredSpace === void 0) { + requiredSpace = false; + } + var space = ""; + var rawSpace = ""; + nodes.forEach(function (n) { + var spaceBefore = _this2.lossySpace(n.spaces.before, requiredSpace); + var rawSpaceBefore = _this2.lossySpace(n.rawSpaceBefore, requiredSpace); + space += spaceBefore + _this2.lossySpace(n.spaces.after, requiredSpace && spaceBefore.length === 0); + rawSpace += spaceBefore + n.value + _this2.lossySpace(n.rawSpaceAfter, requiredSpace && rawSpaceBefore.length === 0); + }); + if (rawSpace === space) { + rawSpace = undefined; + } + var result = { + space: space, + rawSpace: rawSpace + }; + return result; + }; + _proto.isNamedCombinator = function isNamedCombinator(position) { + if (position === void 0) { + position = this.position; + } + return this.tokens[position + 0] && this.tokens[position + 0][_tokenize.FIELDS.TYPE] === tokens.slash && this.tokens[position + 1] && this.tokens[position + 1][_tokenize.FIELDS.TYPE] === tokens.word && this.tokens[position + 2] && this.tokens[position + 2][_tokenize.FIELDS.TYPE] === tokens.slash; + }; + _proto.namedCombinator = function namedCombinator() { + if (this.isNamedCombinator()) { + var nameRaw = this.content(this.tokens[this.position + 1]); + var name = (0, _util.unesc)(nameRaw).toLowerCase(); + var raws = {}; + if (name !== nameRaw) { + raws.value = "/" + nameRaw + "/"; + } + var node = new _combinator["default"]({ + value: "/" + name + "/", + source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]), + sourceIndex: this.currToken[_tokenize.FIELDS.START_POS], + raws: raws + }); + this.position = this.position + 3; + return node; + } else { + this.unexpected(); + } + }; + _proto.combinator = function combinator() { + var _this3 = this; + if (this.content() === '|') { + return this.namespace(); + } + // We need to decide between a space that's a descendant combinator and meaningless whitespace at the end of a selector. + var nextSigTokenPos = this.locateNextMeaningfulToken(this.position); + if (nextSigTokenPos < 0 || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.comma || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) { + var nodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos); + if (nodes.length > 0) { + var last = this.current.last; + if (last) { + var _this$convertWhitespa = this.convertWhitespaceNodesToSpace(nodes), + space = _this$convertWhitespa.space, + rawSpace = _this$convertWhitespa.rawSpace; + if (rawSpace !== undefined) { + last.rawSpaceAfter += rawSpace; + } + last.spaces.after += space; + } else { + nodes.forEach(function (n) { + return _this3.newNode(n); + }); + } + } + return; + } + var firstToken = this.currToken; + var spaceOrDescendantSelectorNodes = undefined; + if (nextSigTokenPos > this.position) { + spaceOrDescendantSelectorNodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos); + } + var node; + if (this.isNamedCombinator()) { + node = this.namedCombinator(); + } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) { + node = new _combinator["default"]({ + value: this.content(), + source: getTokenSource(this.currToken), + sourceIndex: this.currToken[_tokenize.FIELDS.START_POS] + }); + this.position++; + } else if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) ; else if (!spaceOrDescendantSelectorNodes) { + this.unexpected(); + } + if (node) { + if (spaceOrDescendantSelectorNodes) { + var _this$convertWhitespa2 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes), + _space = _this$convertWhitespa2.space, + _rawSpace = _this$convertWhitespa2.rawSpace; + node.spaces.before = _space; + node.rawSpaceBefore = _rawSpace; + } + } else { + // descendant combinator + var _this$convertWhitespa3 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes, true), + _space2 = _this$convertWhitespa3.space, + _rawSpace2 = _this$convertWhitespa3.rawSpace; + if (!_rawSpace2) { + _rawSpace2 = _space2; + } + var spaces = {}; + var raws = { + spaces: {} + }; + if (_space2.endsWith(' ') && _rawSpace2.endsWith(' ')) { + spaces.before = _space2.slice(0, _space2.length - 1); + raws.spaces.before = _rawSpace2.slice(0, _rawSpace2.length - 1); + } else if (_space2.startsWith(' ') && _rawSpace2.startsWith(' ')) { + spaces.after = _space2.slice(1); + raws.spaces.after = _rawSpace2.slice(1); + } else { + raws.value = _rawSpace2; + } + node = new _combinator["default"]({ + value: ' ', + source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]), + sourceIndex: firstToken[_tokenize.FIELDS.START_POS], + spaces: spaces, + raws: raws + }); + } + if (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.space) { + node.spaces.after = this.optionalSpace(this.content()); + this.position++; + } + return this.newNode(node); + }; + _proto.comma = function comma() { + if (this.position === this.tokens.length - 1) { + this.root.trailingComma = true; + this.position++; + return; + } + this.current._inferEndPosition(); + var selector = new _selector["default"]({ + source: { + start: tokenStart(this.tokens[this.position + 1]) + }, + sourceIndex: this.tokens[this.position + 1][_tokenize.FIELDS.START_POS] + }); + this.current.parent.append(selector); + this.current = selector; + this.position++; + }; + _proto.comment = function comment() { + var current = this.currToken; + this.newNode(new _comment["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + })); + this.position++; + }; + _proto.error = function error(message, opts) { + throw this.root.error(message, opts); + }; + _proto.missingBackslash = function missingBackslash() { + return this.error('Expected a backslash preceding the semicolon.', { + index: this.currToken[_tokenize.FIELDS.START_POS] + }); + }; + _proto.missingParenthesis = function missingParenthesis() { + return this.expected('opening parenthesis', this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.missingSquareBracket = function missingSquareBracket() { + return this.expected('opening square bracket', this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.unexpected = function unexpected() { + return this.error("Unexpected '" + this.content() + "'. Escaping special characters with \\ may help.", this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.unexpectedPipe = function unexpectedPipe() { + return this.error("Unexpected '|'.", this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.namespace = function namespace() { + var before = this.prevToken && this.content(this.prevToken) || true; + if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.word) { + this.position++; + return this.word(before); + } else if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.asterisk) { + this.position++; + return this.universal(before); + } + this.unexpectedPipe(); + }; + _proto.nesting = function nesting() { + if (this.nextToken) { + var nextContent = this.content(this.nextToken); + if (nextContent === "|") { + this.position++; + return; + } + } + var current = this.currToken; + this.newNode(new _nesting["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + })); + this.position++; + }; + _proto.parentheses = function parentheses() { + var last = this.current.last; + var unbalanced = 1; + this.position++; + if (last && last.type === types.PSEUDO) { + var selector = new _selector["default"]({ + source: { + start: tokenStart(this.tokens[this.position]) + }, + sourceIndex: this.tokens[this.position][_tokenize.FIELDS.START_POS] + }); + var cache = this.current; + last.append(selector); + this.current = selector; + while (this.position < this.tokens.length && unbalanced) { + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) { + unbalanced++; + } + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) { + unbalanced--; + } + if (unbalanced) { + this.parse(); + } else { + this.current.source.end = tokenEnd(this.currToken); + this.current.parent.source.end = tokenEnd(this.currToken); + this.position++; + } + } + this.current = cache; + } else { + // I think this case should be an error. It's used to implement a basic parse of media queries + // but I don't think it's a good idea. + var parenStart = this.currToken; + var parenValue = "("; + var parenEnd; + while (this.position < this.tokens.length && unbalanced) { + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) { + unbalanced++; + } + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) { + unbalanced--; + } + parenEnd = this.currToken; + parenValue += this.parseParenthesisToken(this.currToken); + this.position++; + } + if (last) { + last.appendToPropertyAndEscape("value", parenValue, parenValue); + } else { + this.newNode(new _string["default"]({ + value: parenValue, + source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]), + sourceIndex: parenStart[_tokenize.FIELDS.START_POS] + })); + } + } + if (unbalanced) { + return this.expected('closing parenthesis', this.currToken[_tokenize.FIELDS.START_POS]); + } + }; + _proto.pseudo = function pseudo() { + var _this4 = this; + var pseudoStr = ''; + var startingToken = this.currToken; + while (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.colon) { + pseudoStr += this.content(); + this.position++; + } + if (!this.currToken) { + return this.expected(['pseudo-class', 'pseudo-element'], this.position - 1); + } + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.word) { + this.splitWord(false, function (first, length) { + pseudoStr += first; + _this4.newNode(new _pseudo["default"]({ + value: pseudoStr, + source: getTokenSourceSpan(startingToken, _this4.currToken), + sourceIndex: startingToken[_tokenize.FIELDS.START_POS] + })); + if (length > 1 && _this4.nextToken && _this4.nextToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) { + _this4.error('Misplaced parenthesis.', { + index: _this4.nextToken[_tokenize.FIELDS.START_POS] + }); + } + }); + } else { + return this.expected(['pseudo-class', 'pseudo-element'], this.currToken[_tokenize.FIELDS.START_POS]); + } + }; + _proto.space = function space() { + var content = this.content(); + // Handle space before and after the selector + if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis || this.current.nodes.every(function (node) { + return node.type === 'comment'; + })) { + this.spaces = this.optionalSpace(content); + this.position++; + } else if (this.position === this.tokens.length - 1 || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) { + this.current.last.spaces.after = this.optionalSpace(content); + this.position++; + } else { + this.combinator(); + } + }; + _proto.string = function string() { + var current = this.currToken; + this.newNode(new _string["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + })); + this.position++; + }; + _proto.universal = function universal(namespace) { + var nextToken = this.nextToken; + if (nextToken && this.content(nextToken) === '|') { + this.position++; + return this.namespace(); + } + var current = this.currToken; + this.newNode(new _universal["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + }), namespace); + this.position++; + }; + _proto.splitWord = function splitWord(namespace, firstCallback) { + var _this5 = this; + var nextToken = this.nextToken; + var word = this.content(); + while (nextToken && ~[tokens.dollar, tokens.caret, tokens.equals, tokens.word].indexOf(nextToken[_tokenize.FIELDS.TYPE])) { + this.position++; + var current = this.content(); + word += current; + if (current.lastIndexOf('\\') === current.length - 1) { + var next = this.nextToken; + if (next && next[_tokenize.FIELDS.TYPE] === tokens.space) { + word += this.requiredSpace(this.content(next)); + this.position++; + } + } + nextToken = this.nextToken; + } + var hasClass = indexesOf(word, '.').filter(function (i) { + // Allow escaped dot within class name + var escapedDot = word[i - 1] === '\\'; + // Allow decimal numbers percent in @keyframes + var isKeyframesPercent = /^\d+\.\d+%$/.test(word); + return !escapedDot && !isKeyframesPercent; + }); + var hasId = indexesOf(word, '#').filter(function (i) { + return word[i - 1] !== '\\'; + }); + // Eliminate Sass interpolations from the list of id indexes + var interpolations = indexesOf(word, '#{'); + if (interpolations.length) { + hasId = hasId.filter(function (hashIndex) { + return !~interpolations.indexOf(hashIndex); + }); + } + var indices = (0, _sortAscending["default"])(uniqs([0].concat(hasClass, hasId))); + indices.forEach(function (ind, i) { + var index = indices[i + 1] || word.length; + var value = word.slice(ind, index); + if (i === 0 && firstCallback) { + return firstCallback.call(_this5, value, indices.length); + } + var node; + var current = _this5.currToken; + var sourceIndex = current[_tokenize.FIELDS.START_POS] + indices[i]; + var source = getSource(current[1], current[2] + ind, current[3], current[2] + (index - 1)); + if (~hasClass.indexOf(ind)) { + var classNameOpts = { + value: value.slice(1), + source: source, + sourceIndex: sourceIndex + }; + node = new _className["default"](unescapeProp(classNameOpts, "value")); + } else if (~hasId.indexOf(ind)) { + var idOpts = { + value: value.slice(1), + source: source, + sourceIndex: sourceIndex + }; + node = new _id["default"](unescapeProp(idOpts, "value")); + } else { + var tagOpts = { + value: value, + source: source, + sourceIndex: sourceIndex + }; + unescapeProp(tagOpts, "value"); + node = new _tag["default"](tagOpts); + } + _this5.newNode(node, namespace); + // Ensure that the namespace is used only once + namespace = null; + }); + this.position++; + }; + _proto.word = function word(namespace) { + var nextToken = this.nextToken; + if (nextToken && this.content(nextToken) === '|') { + this.position++; + return this.namespace(); + } + return this.splitWord(namespace); + }; + _proto.loop = function loop() { + while (this.position < this.tokens.length) { + this.parse(true); + } + this.current._inferEndPosition(); + return this.root; + }; + _proto.parse = function parse(throwOnParenthesis) { + switch (this.currToken[_tokenize.FIELDS.TYPE]) { + case tokens.space: + this.space(); + break; + case tokens.comment: + this.comment(); + break; + case tokens.openParenthesis: + this.parentheses(); + break; + case tokens.closeParenthesis: + if (throwOnParenthesis) { + this.missingParenthesis(); + } + break; + case tokens.openSquare: + this.attribute(); + break; + case tokens.dollar: + case tokens.caret: + case tokens.equals: + case tokens.word: + this.word(); + break; + case tokens.colon: + this.pseudo(); + break; + case tokens.comma: + this.comma(); + break; + case tokens.asterisk: + this.universal(); + break; + case tokens.ampersand: + this.nesting(); + break; + case tokens.slash: + case tokens.combinator: + this.combinator(); + break; + case tokens.str: + this.string(); + break; + // These cases throw; no break needed. + case tokens.closeSquare: + this.missingSquareBracket(); + case tokens.semicolon: + this.missingBackslash(); + default: + this.unexpected(); + } + } + + /** + * Helpers + */; + _proto.expected = function expected(description, index, found) { + if (Array.isArray(description)) { + var last = description.pop(); + description = description.join(', ') + " or " + last; + } + var an = /^[aeiou]/.test(description[0]) ? 'an' : 'a'; + if (!found) { + return this.error("Expected " + an + " " + description + ".", { + index: index + }); + } + return this.error("Expected " + an + " " + description + ", found \"" + found + "\" instead.", { + index: index + }); + }; + _proto.requiredSpace = function requiredSpace(space) { + return this.options.lossy ? ' ' : space; + }; + _proto.optionalSpace = function optionalSpace(space) { + return this.options.lossy ? '' : space; + }; + _proto.lossySpace = function lossySpace(space, required) { + if (this.options.lossy) { + return required ? ' ' : ''; + } else { + return space; + } + }; + _proto.parseParenthesisToken = function parseParenthesisToken(token) { + var content = this.content(token); + if (token[_tokenize.FIELDS.TYPE] === tokens.space) { + return this.requiredSpace(content); + } else { + return content; + } + }; + _proto.newNode = function newNode(node, namespace) { + if (namespace) { + if (/^ +$/.test(namespace)) { + if (!this.options.lossy) { + this.spaces = (this.spaces || '') + namespace; + } + namespace = true; + } + node.namespace = namespace; + unescapeProp(node, "namespace"); + } + if (this.spaces) { + node.spaces.before = this.spaces; + this.spaces = ''; + } + return this.current.append(node); + }; + _proto.content = function content(token) { + if (token === void 0) { + token = this.currToken; + } + return this.css.slice(token[_tokenize.FIELDS.START_POS], token[_tokenize.FIELDS.END_POS]); + }; + /** + * returns the index of the next non-whitespace, non-comment token. + * returns -1 if no meaningful token is found. + */ + _proto.locateNextMeaningfulToken = function locateNextMeaningfulToken(startPosition) { + if (startPosition === void 0) { + startPosition = this.position + 1; + } + var searchPosition = startPosition; + while (searchPosition < this.tokens.length) { + if (WHITESPACE_EQUIV_TOKENS[this.tokens[searchPosition][_tokenize.FIELDS.TYPE]]) { + searchPosition++; + continue; + } else { + return searchPosition; + } + } + return -1; + }; + _createClass(Parser, [{ + key: "currToken", + get: function get() { + return this.tokens[this.position]; + } + }, { + key: "nextToken", + get: function get() { + return this.tokens[this.position + 1]; + } + }, { + key: "prevToken", + get: function get() { + return this.tokens[this.position - 1]; + } + }]); + return Parser; + }(); + exports["default"] = Parser; + module.exports = exports.default; + } (parser, parser.exports)); + return parser.exports; +} + +var hasRequiredProcessor; + +function requireProcessor () { + if (hasRequiredProcessor) return processor.exports; + hasRequiredProcessor = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _parser = _interopRequireDefault(/*@__PURE__*/ requireParser()); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + var Processor = /*#__PURE__*/function () { + function Processor(func, options) { + this.func = func || function noop() {}; + this.funcRes = null; + this.options = options; + } + var _proto = Processor.prototype; + _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) { + if (options === void 0) { + options = {}; + } + var merged = Object.assign({}, this.options, options); + if (merged.updateSelector === false) { + return false; + } else { + return typeof rule !== "string"; + } + }; + _proto._isLossy = function _isLossy(options) { + if (options === void 0) { + options = {}; + } + var merged = Object.assign({}, this.options, options); + if (merged.lossless === false) { + return true; + } else { + return false; + } + }; + _proto._root = function _root(rule, options) { + if (options === void 0) { + options = {}; + } + var parser = new _parser["default"](rule, this._parseOptions(options)); + return parser.root; + }; + _proto._parseOptions = function _parseOptions(options) { + return { + lossy: this._isLossy(options) + }; + }; + _proto._run = function _run(rule, options) { + var _this = this; + if (options === void 0) { + options = {}; + } + return new Promise(function (resolve, reject) { + try { + var root = _this._root(rule, options); + Promise.resolve(_this.func(root)).then(function (transform) { + var string = undefined; + if (_this._shouldUpdateSelector(rule, options)) { + string = root.toString(); + rule.selector = string; + } + return { + transform: transform, + root: root, + string: string + }; + }).then(resolve, reject); + } catch (e) { + reject(e); + return; + } + }); + }; + _proto._runSync = function _runSync(rule, options) { + if (options === void 0) { + options = {}; + } + var root = this._root(rule, options); + var transform = this.func(root); + if (transform && typeof transform.then === "function") { + throw new Error("Selector processor returned a promise to a synchronous call."); + } + var string = undefined; + if (options.updateSelector && typeof rule !== "string") { + string = root.toString(); + rule.selector = string; + } + return { + transform: transform, + root: root, + string: string + }; + } + + /** + * Process rule into a selector AST. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {Promise<parser.Root>} The AST of the selector after processing it. + */; + _proto.ast = function ast(rule, options) { + return this._run(rule, options).then(function (result) { + return result.root; + }); + } + + /** + * Process rule into a selector AST synchronously. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {parser.Root} The AST of the selector after processing it. + */; + _proto.astSync = function astSync(rule, options) { + return this._runSync(rule, options).root; + } + + /** + * Process a selector into a transformed value asynchronously + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {Promise<any>} The value returned by the processor. + */; + _proto.transform = function transform(rule, options) { + return this._run(rule, options).then(function (result) { + return result.transform; + }); + } + + /** + * Process a selector into a transformed value synchronously. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {any} The value returned by the processor. + */; + _proto.transformSync = function transformSync(rule, options) { + return this._runSync(rule, options).transform; + } + + /** + * Process a selector into a new selector string asynchronously. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {string} the selector after processing. + */; + _proto.process = function process(rule, options) { + return this._run(rule, options).then(function (result) { + return result.string || result.root.toString(); + }); + } + + /** + * Process a selector into a new selector string synchronously. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {string} the selector after processing. + */; + _proto.processSync = function processSync(rule, options) { + var result = this._runSync(rule, options); + return result.string || result.root.toString(); + }; + return Processor; + }(); + exports["default"] = Processor; + module.exports = exports.default; + } (processor, processor.exports)); + return processor.exports; +} + +var selectors = {}; + +var constructors = {}; + +var hasRequiredConstructors; + +function requireConstructors () { + if (hasRequiredConstructors) return constructors; + hasRequiredConstructors = 1; + + constructors.__esModule = true; + constructors.universal = constructors.tag = constructors.string = constructors.selector = constructors.root = constructors.pseudo = constructors.nesting = constructors.id = constructors.comment = constructors.combinator = constructors.className = constructors.attribute = void 0; + var _attribute = _interopRequireDefault(/*@__PURE__*/ requireAttribute()); + var _className = _interopRequireDefault(/*@__PURE__*/ requireClassName()); + var _combinator = _interopRequireDefault(/*@__PURE__*/ requireCombinator()); + var _comment = _interopRequireDefault(/*@__PURE__*/ requireComment()); + var _id = _interopRequireDefault(/*@__PURE__*/ requireId()); + var _nesting = _interopRequireDefault(/*@__PURE__*/ requireNesting()); + var _pseudo = _interopRequireDefault(/*@__PURE__*/ requirePseudo()); + var _root = _interopRequireDefault(/*@__PURE__*/ requireRoot()); + var _selector = _interopRequireDefault(/*@__PURE__*/ requireSelector()); + var _string = _interopRequireDefault(/*@__PURE__*/ requireString()); + var _tag = _interopRequireDefault(/*@__PURE__*/ requireTag()); + var _universal = _interopRequireDefault(/*@__PURE__*/ requireUniversal()); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + var attribute = function attribute(opts) { + return new _attribute["default"](opts); + }; + constructors.attribute = attribute; + var className = function className(opts) { + return new _className["default"](opts); + }; + constructors.className = className; + var combinator = function combinator(opts) { + return new _combinator["default"](opts); + }; + constructors.combinator = combinator; + var comment = function comment(opts) { + return new _comment["default"](opts); + }; + constructors.comment = comment; + var id = function id(opts) { + return new _id["default"](opts); + }; + constructors.id = id; + var nesting = function nesting(opts) { + return new _nesting["default"](opts); + }; + constructors.nesting = nesting; + var pseudo = function pseudo(opts) { + return new _pseudo["default"](opts); + }; + constructors.pseudo = pseudo; + var root = function root(opts) { + return new _root["default"](opts); + }; + constructors.root = root; + var selector = function selector(opts) { + return new _selector["default"](opts); + }; + constructors.selector = selector; + var string = function string(opts) { + return new _string["default"](opts); + }; + constructors.string = string; + var tag = function tag(opts) { + return new _tag["default"](opts); + }; + constructors.tag = tag; + var universal = function universal(opts) { + return new _universal["default"](opts); + }; + constructors.universal = universal; + return constructors; +} + +var guards = {}; + +var hasRequiredGuards; + +function requireGuards () { + if (hasRequiredGuards) return guards; + hasRequiredGuards = 1; + + guards.__esModule = true; + guards.isComment = guards.isCombinator = guards.isClassName = guards.isAttribute = void 0; + guards.isContainer = isContainer; + guards.isIdentifier = void 0; + guards.isNamespace = isNamespace; + guards.isNesting = void 0; + guards.isNode = isNode; + guards.isPseudo = void 0; + guards.isPseudoClass = isPseudoClass; + guards.isPseudoElement = isPseudoElement; + guards.isUniversal = guards.isTag = guards.isString = guards.isSelector = guards.isRoot = void 0; + var _types = /*@__PURE__*/ requireTypes(); + var _IS_TYPE; + var IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types.ATTRIBUTE] = true, _IS_TYPE[_types.CLASS] = true, _IS_TYPE[_types.COMBINATOR] = true, _IS_TYPE[_types.COMMENT] = true, _IS_TYPE[_types.ID] = true, _IS_TYPE[_types.NESTING] = true, _IS_TYPE[_types.PSEUDO] = true, _IS_TYPE[_types.ROOT] = true, _IS_TYPE[_types.SELECTOR] = true, _IS_TYPE[_types.STRING] = true, _IS_TYPE[_types.TAG] = true, _IS_TYPE[_types.UNIVERSAL] = true, _IS_TYPE); + function isNode(node) { + return typeof node === "object" && IS_TYPE[node.type]; + } + function isNodeType(type, node) { + return isNode(node) && node.type === type; + } + var isAttribute = isNodeType.bind(null, _types.ATTRIBUTE); + guards.isAttribute = isAttribute; + var isClassName = isNodeType.bind(null, _types.CLASS); + guards.isClassName = isClassName; + var isCombinator = isNodeType.bind(null, _types.COMBINATOR); + guards.isCombinator = isCombinator; + var isComment = isNodeType.bind(null, _types.COMMENT); + guards.isComment = isComment; + var isIdentifier = isNodeType.bind(null, _types.ID); + guards.isIdentifier = isIdentifier; + var isNesting = isNodeType.bind(null, _types.NESTING); + guards.isNesting = isNesting; + var isPseudo = isNodeType.bind(null, _types.PSEUDO); + guards.isPseudo = isPseudo; + var isRoot = isNodeType.bind(null, _types.ROOT); + guards.isRoot = isRoot; + var isSelector = isNodeType.bind(null, _types.SELECTOR); + guards.isSelector = isSelector; + var isString = isNodeType.bind(null, _types.STRING); + guards.isString = isString; + var isTag = isNodeType.bind(null, _types.TAG); + guards.isTag = isTag; + var isUniversal = isNodeType.bind(null, _types.UNIVERSAL); + guards.isUniversal = isUniversal; + function isPseudoElement(node) { + return isPseudo(node) && node.value && (node.value.startsWith("::") || node.value.toLowerCase() === ":before" || node.value.toLowerCase() === ":after" || node.value.toLowerCase() === ":first-letter" || node.value.toLowerCase() === ":first-line"); + } + function isPseudoClass(node) { + return isPseudo(node) && !isPseudoElement(node); + } + function isContainer(node) { + return !!(isNode(node) && node.walk); + } + function isNamespace(node) { + return isAttribute(node) || isTag(node); + } + return guards; +} + +var hasRequiredSelectors; + +function requireSelectors () { + if (hasRequiredSelectors) return selectors; + hasRequiredSelectors = 1; + (function (exports) { + + exports.__esModule = true; + var _types = /*@__PURE__*/ requireTypes(); + Object.keys(_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _types[key]) return; + exports[key] = _types[key]; + }); + var _constructors = /*@__PURE__*/ requireConstructors(); + Object.keys(_constructors).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _constructors[key]) return; + exports[key] = _constructors[key]; + }); + var _guards = /*@__PURE__*/ requireGuards(); + Object.keys(_guards).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _guards[key]) return; + exports[key] = _guards[key]; + }); + } (selectors)); + return selectors; +} + +var hasRequiredDist; + +function requireDist () { + if (hasRequiredDist) return dist.exports; + hasRequiredDist = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _processor = _interopRequireDefault(/*@__PURE__*/ requireProcessor()); + var selectors = _interopRequireWildcard(/*@__PURE__*/ requireSelectors()); + function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + var parser = function parser(processor) { + return new _processor["default"](processor); + }; + Object.assign(parser, selectors); + delete parser.__esModule; + var _default = parser; + exports["default"] = _default; + module.exports = exports.default; + } (dist, dist.exports)); + return dist.exports; +} + +var parse; +var hasRequiredParse; + +function requireParse () { + if (hasRequiredParse) return parse; + hasRequiredParse = 1; + var openParentheses = "(".charCodeAt(0); + var closeParentheses = ")".charCodeAt(0); + var singleQuote = "'".charCodeAt(0); + var doubleQuote = '"'.charCodeAt(0); + var backslash = "\\".charCodeAt(0); + var slash = "/".charCodeAt(0); + var comma = ",".charCodeAt(0); + var colon = ":".charCodeAt(0); + var star = "*".charCodeAt(0); + var uLower = "u".charCodeAt(0); + var uUpper = "U".charCodeAt(0); + var plus = "+".charCodeAt(0); + var isUnicodeRange = /^[a-f0-9?-]+$/i; + + parse = function(input) { + var tokens = []; + var value = input; + + var next, + quote, + prev, + token, + escape, + escapePos, + whitespacePos, + parenthesesOpenPos; + var pos = 0; + var code = value.charCodeAt(pos); + var max = value.length; + var stack = [{ nodes: tokens }]; + var balanced = 0; + var parent; + + var name = ""; + var before = ""; + var after = ""; + + while (pos < max) { + // Whitespaces + if (code <= 32) { + next = pos; + do { + next += 1; + code = value.charCodeAt(next); + } while (code <= 32); + token = value.slice(pos, next); + + prev = tokens[tokens.length - 1]; + if (code === closeParentheses && balanced) { + after = token; + } else if (prev && prev.type === "div") { + prev.after = token; + prev.sourceEndIndex += token.length; + } else if ( + code === comma || + code === colon || + (code === slash && + value.charCodeAt(next + 1) !== star && + (!parent || + (parent && parent.type === "function" && parent.value !== "calc"))) + ) { + before = token; + } else { + tokens.push({ + type: "space", + sourceIndex: pos, + sourceEndIndex: next, + value: token + }); + } + + pos = next; + + // Quotes + } else if (code === singleQuote || code === doubleQuote) { + next = pos; + quote = code === singleQuote ? "'" : '"'; + token = { + type: "string", + sourceIndex: pos, + quote: quote + }; + do { + escape = false; + next = value.indexOf(quote, next + 1); + if (~next) { + escapePos = next; + while (value.charCodeAt(escapePos - 1) === backslash) { + escapePos -= 1; + escape = !escape; + } + } else { + value += quote; + next = value.length - 1; + token.unclosed = true; + } + } while (escape); + token.value = value.slice(pos + 1, next); + token.sourceEndIndex = token.unclosed ? next : next + 1; + tokens.push(token); + pos = next + 1; + code = value.charCodeAt(pos); + + // Comments + } else if (code === slash && value.charCodeAt(pos + 1) === star) { + next = value.indexOf("*/", pos); + + token = { + type: "comment", + sourceIndex: pos, + sourceEndIndex: next + 2 + }; + + if (next === -1) { + token.unclosed = true; + next = value.length; + token.sourceEndIndex = next; + } + + token.value = value.slice(pos + 2, next); + tokens.push(token); + + pos = next + 2; + code = value.charCodeAt(pos); + + // Operation within calc + } else if ( + (code === slash || code === star) && + parent && + parent.type === "function" && + parent.value === "calc" + ) { + token = value[pos]; + tokens.push({ + type: "word", + sourceIndex: pos - before.length, + sourceEndIndex: pos + token.length, + value: token + }); + pos += 1; + code = value.charCodeAt(pos); + + // Dividers + } else if (code === slash || code === comma || code === colon) { + token = value[pos]; + + tokens.push({ + type: "div", + sourceIndex: pos - before.length, + sourceEndIndex: pos + token.length, + value: token, + before: before, + after: "" + }); + before = ""; + + pos += 1; + code = value.charCodeAt(pos); + + // Open parentheses + } else if (openParentheses === code) { + // Whitespaces after open parentheses + next = pos; + do { + next += 1; + code = value.charCodeAt(next); + } while (code <= 32); + parenthesesOpenPos = pos; + token = { + type: "function", + sourceIndex: pos - name.length, + value: name, + before: value.slice(parenthesesOpenPos + 1, next) + }; + pos = next; + + if (name === "url" && code !== singleQuote && code !== doubleQuote) { + next -= 1; + do { + escape = false; + next = value.indexOf(")", next + 1); + if (~next) { + escapePos = next; + while (value.charCodeAt(escapePos - 1) === backslash) { + escapePos -= 1; + escape = !escape; + } + } else { + value += ")"; + next = value.length - 1; + token.unclosed = true; + } + } while (escape); + // Whitespaces before closed + whitespacePos = next; + do { + whitespacePos -= 1; + code = value.charCodeAt(whitespacePos); + } while (code <= 32); + if (parenthesesOpenPos < whitespacePos) { + if (pos !== whitespacePos + 1) { + token.nodes = [ + { + type: "word", + sourceIndex: pos, + sourceEndIndex: whitespacePos + 1, + value: value.slice(pos, whitespacePos + 1) + } + ]; + } else { + token.nodes = []; + } + if (token.unclosed && whitespacePos + 1 !== next) { + token.after = ""; + token.nodes.push({ + type: "space", + sourceIndex: whitespacePos + 1, + sourceEndIndex: next, + value: value.slice(whitespacePos + 1, next) + }); + } else { + token.after = value.slice(whitespacePos + 1, next); + token.sourceEndIndex = next; + } + } else { + token.after = ""; + token.nodes = []; + } + pos = next + 1; + token.sourceEndIndex = token.unclosed ? next : pos; + code = value.charCodeAt(pos); + tokens.push(token); + } else { + balanced += 1; + token.after = ""; + token.sourceEndIndex = pos + 1; + tokens.push(token); + stack.push(token); + tokens = token.nodes = []; + parent = token; + } + name = ""; + + // Close parentheses + } else if (closeParentheses === code && balanced) { + pos += 1; + code = value.charCodeAt(pos); + + parent.after = after; + parent.sourceEndIndex += after.length; + after = ""; + balanced -= 1; + stack[stack.length - 1].sourceEndIndex = pos; + stack.pop(); + parent = stack[balanced]; + tokens = parent.nodes; + + // Words + } else { + next = pos; + do { + if (code === backslash) { + next += 1; + } + next += 1; + code = value.charCodeAt(next); + } while ( + next < max && + !( + code <= 32 || + code === singleQuote || + code === doubleQuote || + code === comma || + code === colon || + code === slash || + code === openParentheses || + (code === star && + parent && + parent.type === "function" && + parent.value === "calc") || + (code === slash && + parent.type === "function" && + parent.value === "calc") || + (code === closeParentheses && balanced) + ) + ); + token = value.slice(pos, next); + + if (openParentheses === code) { + name = token; + } else if ( + (uLower === token.charCodeAt(0) || uUpper === token.charCodeAt(0)) && + plus === token.charCodeAt(1) && + isUnicodeRange.test(token.slice(2)) + ) { + tokens.push({ + type: "unicode-range", + sourceIndex: pos, + sourceEndIndex: next, + value: token + }); + } else { + tokens.push({ + type: "word", + sourceIndex: pos, + sourceEndIndex: next, + value: token + }); + } + + pos = next; + } + } + + for (pos = stack.length - 1; pos; pos -= 1) { + stack[pos].unclosed = true; + stack[pos].sourceEndIndex = value.length; + } + + return stack[0].nodes; + }; + return parse; +} + +var walk$1; +var hasRequiredWalk; + +function requireWalk () { + if (hasRequiredWalk) return walk$1; + hasRequiredWalk = 1; + walk$1 = function walk(nodes, cb, bubble) { + var i, max, node, result; + + for (i = 0, max = nodes.length; i < max; i += 1) { + node = nodes[i]; + if (!bubble) { + result = cb(node, i, nodes); + } + + if ( + result !== false && + node.type === "function" && + Array.isArray(node.nodes) + ) { + walk(node.nodes, cb, bubble); + } + + if (bubble) { + cb(node, i, nodes); + } + } + }; + return walk$1; +} + +var stringify_1; +var hasRequiredStringify; + +function requireStringify () { + if (hasRequiredStringify) return stringify_1; + hasRequiredStringify = 1; + function stringifyNode(node, custom) { + var type = node.type; + var value = node.value; + var buf; + var customResult; + + if (custom && (customResult = custom(node)) !== undefined) { + return customResult; + } else if (type === "word" || type === "space") { + return value; + } else if (type === "string") { + buf = node.quote || ""; + return buf + value + (node.unclosed ? "" : buf); + } else if (type === "comment") { + return "/*" + value + (node.unclosed ? "" : "*/"); + } else if (type === "div") { + return (node.before || "") + value + (node.after || ""); + } else if (Array.isArray(node.nodes)) { + buf = stringify(node.nodes, custom); + if (type !== "function") { + return buf; + } + return ( + value + + "(" + + (node.before || "") + + buf + + (node.after || "") + + (node.unclosed ? "" : ")") + ); + } + return value; + } + + function stringify(nodes, custom) { + var result, i; + + if (Array.isArray(nodes)) { + result = ""; + for (i = nodes.length - 1; ~i; i -= 1) { + result = stringifyNode(nodes[i], custom) + result; + } + return result; + } + return stringifyNode(nodes, custom); + } + + stringify_1 = stringify; + return stringify_1; +} + +var unit; +var hasRequiredUnit; + +function requireUnit () { + if (hasRequiredUnit) return unit; + hasRequiredUnit = 1; + var minus = "-".charCodeAt(0); + var plus = "+".charCodeAt(0); + var dot = ".".charCodeAt(0); + var exp = "e".charCodeAt(0); + var EXP = "E".charCodeAt(0); + + // Check if three code points would start a number + // https://www.w3.org/TR/css-syntax-3/#starts-with-a-number + function likeNumber(value) { + var code = value.charCodeAt(0); + var nextCode; + + if (code === plus || code === minus) { + nextCode = value.charCodeAt(1); + + if (nextCode >= 48 && nextCode <= 57) { + return true; + } + + var nextNextCode = value.charCodeAt(2); + + if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) { + return true; + } + + return false; + } + + if (code === dot) { + nextCode = value.charCodeAt(1); + + if (nextCode >= 48 && nextCode <= 57) { + return true; + } + + return false; + } + + if (code >= 48 && code <= 57) { + return true; + } + + return false; + } + + // Consume a number + // https://www.w3.org/TR/css-syntax-3/#consume-number + unit = function(value) { + var pos = 0; + var length = value.length; + var code; + var nextCode; + var nextNextCode; + + if (length === 0 || !likeNumber(value)) { + return false; + } + + code = value.charCodeAt(pos); + + if (code === plus || code === minus) { + pos++; + } + + while (pos < length) { + code = value.charCodeAt(pos); + + if (code < 48 || code > 57) { + break; + } + + pos += 1; + } + + code = value.charCodeAt(pos); + nextCode = value.charCodeAt(pos + 1); + + if (code === dot && nextCode >= 48 && nextCode <= 57) { + pos += 2; + + while (pos < length) { + code = value.charCodeAt(pos); + + if (code < 48 || code > 57) { + break; + } + + pos += 1; + } + } + + code = value.charCodeAt(pos); + nextCode = value.charCodeAt(pos + 1); + nextNextCode = value.charCodeAt(pos + 2); + + if ( + (code === exp || code === EXP) && + ((nextCode >= 48 && nextCode <= 57) || + ((nextCode === plus || nextCode === minus) && + nextNextCode >= 48 && + nextNextCode <= 57)) + ) { + pos += nextCode === plus || nextCode === minus ? 3 : 2; + + while (pos < length) { + code = value.charCodeAt(pos); + + if (code < 48 || code > 57) { + break; + } + + pos += 1; + } + } + + return { + number: value.slice(0, pos), + unit: value.slice(pos) + }; + }; + return unit; +} + +var lib; +var hasRequiredLib; + +function requireLib () { + if (hasRequiredLib) return lib; + hasRequiredLib = 1; + var parse = /*@__PURE__*/ requireParse(); + var walk = /*@__PURE__*/ requireWalk(); + var stringify = /*@__PURE__*/ requireStringify(); + + function ValueParser(value) { + if (this instanceof ValueParser) { + this.nodes = parse(value); + return this; + } + return new ValueParser(value); + } + + ValueParser.prototype.toString = function() { + return Array.isArray(this.nodes) ? stringify(this.nodes) : ""; + }; + + ValueParser.prototype.walk = function(cb, bubble) { + walk(this.nodes, cb, bubble); + return this; + }; + + ValueParser.unit = /*@__PURE__*/ requireUnit(); + + ValueParser.walk = walk; + + ValueParser.stringify = stringify; + + lib = ValueParser; + return lib; +} + +var hasRequiredSrc$2; + +function requireSrc$2 () { + if (hasRequiredSrc$2) return src$2.exports; + hasRequiredSrc$2 = 1; + + const selectorParser = /*@__PURE__*/ requireDist(); + const valueParser = /*@__PURE__*/ requireLib(); + const { extractICSS } = /*@__PURE__*/ requireSrc$4(); + + const isSpacing = (node) => node.type === "combinator" && node.value === " "; + + function normalizeNodeArray(nodes) { + const array = []; + + nodes.forEach((x) => { + if (Array.isArray(x)) { + normalizeNodeArray(x).forEach((item) => { + array.push(item); + }); + } else if (x) { + array.push(x); + } + }); + + if (array.length > 0 && isSpacing(array[array.length - 1])) { + array.pop(); + } + return array; + } + + function localizeNode(rule, mode, localAliasMap) { + const transform = (node, context) => { + if (context.ignoreNextSpacing && !isSpacing(node)) { + throw new Error("Missing whitespace after " + context.ignoreNextSpacing); + } + + if (context.enforceNoSpacing && isSpacing(node)) { + throw new Error("Missing whitespace before " + context.enforceNoSpacing); + } + + let newNodes; + + switch (node.type) { + case "root": { + let resultingGlobal; + + context.hasPureGlobals = false; + + newNodes = node.nodes.map((n) => { + const nContext = { + global: context.global, + lastWasSpacing: true, + hasLocals: false, + explicit: false, + }; + + n = transform(n, nContext); + + if (typeof resultingGlobal === "undefined") { + resultingGlobal = nContext.global; + } else if (resultingGlobal !== nContext.global) { + throw new Error( + 'Inconsistent rule global/local result in rule "' + + node + + '" (multiple selectors must result in the same mode for the rule)' + ); + } + + if (!nContext.hasLocals) { + context.hasPureGlobals = true; + } + + return n; + }); + + context.global = resultingGlobal; + + node.nodes = normalizeNodeArray(newNodes); + break; + } + case "selector": { + newNodes = node.map((childNode) => transform(childNode, context)); + + node = node.clone(); + node.nodes = normalizeNodeArray(newNodes); + break; + } + case "combinator": { + if (isSpacing(node)) { + if (context.ignoreNextSpacing) { + context.ignoreNextSpacing = false; + context.lastWasSpacing = false; + context.enforceNoSpacing = false; + return null; + } + context.lastWasSpacing = true; + return node; + } + break; + } + case "pseudo": { + let childContext; + const isNested = !!node.length; + const isScoped = node.value === ":local" || node.value === ":global"; + const isImportExport = + node.value === ":import" || node.value === ":export"; + + if (isImportExport) { + context.hasLocals = true; + // :local(.foo) + } else if (isNested) { + if (isScoped) { + if (node.nodes.length === 0) { + throw new Error(`${node.value}() can't be empty`); + } + + if (context.inside) { + throw new Error( + `A ${node.value} is not allowed inside of a ${context.inside}(...)` + ); + } + + childContext = { + global: node.value === ":global", + inside: node.value, + hasLocals: false, + explicit: true, + }; + + newNodes = node + .map((childNode) => transform(childNode, childContext)) + .reduce((acc, next) => acc.concat(next.nodes), []); + + if (newNodes.length) { + const { before, after } = node.spaces; + + const first = newNodes[0]; + const last = newNodes[newNodes.length - 1]; + + first.spaces = { before, after: first.spaces.after }; + last.spaces = { before: last.spaces.before, after }; + } + + node = newNodes; + + break; + } else { + childContext = { + global: context.global, + inside: context.inside, + lastWasSpacing: true, + hasLocals: false, + explicit: context.explicit, + }; + newNodes = node.map((childNode) => { + const newContext = { + ...childContext, + enforceNoSpacing: false, + }; + + const result = transform(childNode, newContext); + + childContext.global = newContext.global; + childContext.hasLocals = newContext.hasLocals; + + return result; + }); + + node = node.clone(); + node.nodes = normalizeNodeArray(newNodes); + + if (childContext.hasLocals) { + context.hasLocals = true; + } + } + break; + + //:local .foo .bar + } else if (isScoped) { + if (context.inside) { + throw new Error( + `A ${node.value} is not allowed inside of a ${context.inside}(...)` + ); + } + + const addBackSpacing = !!node.spaces.before; + + context.ignoreNextSpacing = context.lastWasSpacing + ? node.value + : false; + + context.enforceNoSpacing = context.lastWasSpacing + ? false + : node.value; + + context.global = node.value === ":global"; + context.explicit = true; + + // because this node has spacing that is lost when we remove it + // we make up for it by adding an extra combinator in since adding + // spacing on the parent selector doesn't work + return addBackSpacing + ? selectorParser.combinator({ value: " " }) + : null; + } + break; + } + case "id": + case "class": { + if (!node.value) { + throw new Error("Invalid class or id selector syntax"); + } + + if (context.global) { + break; + } + + const isImportedValue = localAliasMap.has(node.value); + const isImportedWithExplicitScope = isImportedValue && context.explicit; + + if (!isImportedValue || isImportedWithExplicitScope) { + const innerNode = node.clone(); + innerNode.spaces = { before: "", after: "" }; + + node = selectorParser.pseudo({ + value: ":local", + nodes: [innerNode], + spaces: node.spaces, + }); + + context.hasLocals = true; + } + + break; + } + case "nesting": { + if (node.value === "&") { + context.hasLocals = true; + } + } + } + + context.lastWasSpacing = false; + context.ignoreNextSpacing = false; + context.enforceNoSpacing = false; + + return node; + }; + + const rootContext = { + global: mode === "global", + hasPureGlobals: false, + }; + + rootContext.selector = selectorParser((root) => { + transform(root, rootContext); + }).processSync(rule, { updateSelector: false, lossless: true }); + + return rootContext; + } + + function localizeDeclNode(node, context) { + switch (node.type) { + case "word": + if (context.localizeNextItem) { + if (!context.localAliasMap.has(node.value)) { + node.value = ":local(" + node.value + ")"; + context.localizeNextItem = false; + } + } + break; + + case "function": + if ( + context.options && + context.options.rewriteUrl && + node.value.toLowerCase() === "url" + ) { + node.nodes.map((nestedNode) => { + if (nestedNode.type !== "string" && nestedNode.type !== "word") { + return; + } + + let newUrl = context.options.rewriteUrl( + context.global, + nestedNode.value + ); + + switch (nestedNode.type) { + case "string": + if (nestedNode.quote === "'") { + newUrl = newUrl.replace(/(\\)/g, "\\$1").replace(/'/g, "\\'"); + } + + if (nestedNode.quote === '"') { + newUrl = newUrl.replace(/(\\)/g, "\\$1").replace(/"/g, '\\"'); + } + + break; + case "word": + newUrl = newUrl.replace(/("|'|\)|\\)/g, "\\$1"); + break; + } + + nestedNode.value = newUrl; + }); + } + break; + } + return node; + } + + // `none` is special value, other is global values + const specialKeywords = [ + "none", + "inherit", + "initial", + "revert", + "revert-layer", + "unset", + ]; + + function localizeDeclarationValues(localize, declaration, context) { + const valueNodes = valueParser(declaration.value); + + valueNodes.walk((node, index, nodes) => { + if ( + node.type === "function" && + (node.value.toLowerCase() === "var" || node.value.toLowerCase() === "env") + ) { + return false; + } + + if ( + node.type === "word" && + specialKeywords.includes(node.value.toLowerCase()) + ) { + return; + } + + const subContext = { + options: context.options, + global: context.global, + localizeNextItem: localize && !context.global, + localAliasMap: context.localAliasMap, + }; + nodes[index] = localizeDeclNode(node, subContext); + }); + + declaration.value = valueNodes.toString(); + } + + function localizeDeclaration(declaration, context) { + const isAnimation = /animation$/i.test(declaration.prop); + + if (isAnimation) { + // letter + // An uppercase letter or a lowercase letter. + // + // ident-start code point + // A letter, a non-ASCII code point, or U+005F LOW LINE (_). + // + // ident code point + // An ident-start code point, a digit, or U+002D HYPHEN-MINUS (-). + + // We don't validate `hex digits`, because we don't need it, it is work of linters. + const validIdent = + /^-?([a-z\u0080-\uFFFF_]|(\\[^\r\n\f])|-(?![0-9]))((\\[^\r\n\f])|[a-z\u0080-\uFFFF_0-9-])*$/i; + + /* + The spec defines some keywords that you can use to describe properties such as the timing + function. These are still valid animation names, so as long as there is a property that accepts + a keyword, it is given priority. Only when all the properties that can take a keyword are + exhausted can the animation name be set to the keyword. I.e. + + animation: infinite infinite; + + The animation will repeat an infinite number of times from the first argument, and will have an + animation name of infinite from the second. + */ + const animationKeywords = { + // animation-direction + $normal: 1, + $reverse: 1, + $alternate: 1, + "$alternate-reverse": 1, + // animation-fill-mode + $forwards: 1, + $backwards: 1, + $both: 1, + // animation-iteration-count + $infinite: 1, + // animation-play-state + $paused: 1, + $running: 1, + // animation-timing-function + $ease: 1, + "$ease-in": 1, + "$ease-out": 1, + "$ease-in-out": 1, + $linear: 1, + "$step-end": 1, + "$step-start": 1, + // Special + $none: Infinity, // No matter how many times you write none, it will never be an animation name + // Global values + $initial: Infinity, + $inherit: Infinity, + $unset: Infinity, + $revert: Infinity, + "$revert-layer": Infinity, + }; + let parsedAnimationKeywords = {}; + const valueNodes = valueParser(declaration.value).walk((node) => { + // If div-token appeared (represents as comma ','), a possibility of an animation-keywords should be reflesh. + if (node.type === "div") { + parsedAnimationKeywords = {}; + + return; + } + // Do not handle nested functions + else if (node.type === "function") { + return false; + } + // Ignore all except word + else if (node.type !== "word") { + return; + } + + const value = node.type === "word" ? node.value.toLowerCase() : null; + + let shouldParseAnimationName = false; + + if (value && validIdent.test(value)) { + if ("$" + value in animationKeywords) { + parsedAnimationKeywords["$" + value] = + "$" + value in parsedAnimationKeywords + ? parsedAnimationKeywords["$" + value] + 1 + : 0; + + shouldParseAnimationName = + parsedAnimationKeywords["$" + value] >= + animationKeywords["$" + value]; + } else { + shouldParseAnimationName = true; + } + } + + const subContext = { + options: context.options, + global: context.global, + localizeNextItem: shouldParseAnimationName && !context.global, + localAliasMap: context.localAliasMap, + }; + + return localizeDeclNode(node, subContext); + }); + + declaration.value = valueNodes.toString(); + + return; + } + + const isAnimationName = /animation(-name)?$/i.test(declaration.prop); + + if (isAnimationName) { + return localizeDeclarationValues(true, declaration, context); + } + + const hasUrl = /url\(/i.test(declaration.value); + + if (hasUrl) { + return localizeDeclarationValues(false, declaration, context); + } + } + + src$2.exports = (options = {}) => { + if ( + options && + options.mode && + options.mode !== "global" && + options.mode !== "local" && + options.mode !== "pure" + ) { + throw new Error( + 'options.mode must be either "global", "local" or "pure" (default "local")' + ); + } + + const pureMode = options && options.mode === "pure"; + const globalMode = options && options.mode === "global"; + + return { + postcssPlugin: "postcss-modules-local-by-default", + prepare() { + const localAliasMap = new Map(); + + return { + Once(root) { + const { icssImports } = extractICSS(root, false); + + Object.keys(icssImports).forEach((key) => { + Object.keys(icssImports[key]).forEach((prop) => { + localAliasMap.set(prop, icssImports[key][prop]); + }); + }); + + root.walkAtRules((atRule) => { + if (/keyframes$/i.test(atRule.name)) { + const globalMatch = /^\s*:global\s*\((.+)\)\s*$/.exec( + atRule.params + ); + const localMatch = /^\s*:local\s*\((.+)\)\s*$/.exec( + atRule.params + ); + + let globalKeyframes = globalMode; + + if (globalMatch) { + if (pureMode) { + throw atRule.error( + "@keyframes :global(...) is not allowed in pure mode" + ); + } + atRule.params = globalMatch[1]; + globalKeyframes = true; + } else if (localMatch) { + atRule.params = localMatch[0]; + globalKeyframes = false; + } else if ( + atRule.params && + !globalMode && + !localAliasMap.has(atRule.params) + ) { + atRule.params = ":local(" + atRule.params + ")"; + } + + atRule.walkDecls((declaration) => { + localizeDeclaration(declaration, { + localAliasMap, + options: options, + global: globalKeyframes, + }); + }); + } else if (/scope$/i.test(atRule.name)) { + if (atRule.params) { + atRule.params = atRule.params + .split("to") + .map((item) => { + const selector = item.trim().slice(1, -1).trim(); + const context = localizeNode( + selector, + options.mode, + localAliasMap + ); + + context.options = options; + context.localAliasMap = localAliasMap; + + if (pureMode && context.hasPureGlobals) { + throw atRule.error( + 'Selector in at-rule"' + + selector + + '" is not pure ' + + "(pure selectors must contain at least one local class or id)" + ); + } + + return `(${context.selector})`; + }) + .join(" to "); + } + + atRule.nodes.forEach((declaration) => { + if (declaration.type === "decl") { + localizeDeclaration(declaration, { + localAliasMap, + options: options, + global: globalMode, + }); + } + }); + } else if (atRule.nodes) { + atRule.nodes.forEach((declaration) => { + if (declaration.type === "decl") { + localizeDeclaration(declaration, { + localAliasMap, + options: options, + global: globalMode, + }); + } + }); + } + }); + + root.walkRules((rule) => { + if ( + rule.parent && + rule.parent.type === "atrule" && + /keyframes$/i.test(rule.parent.name) + ) { + // ignore keyframe rules + return; + } + + const context = localizeNode(rule, options.mode, localAliasMap); + + context.options = options; + context.localAliasMap = localAliasMap; + + if (pureMode && context.hasPureGlobals) { + throw rule.error( + 'Selector "' + + rule.selector + + '" is not pure ' + + "(pure selectors must contain at least one local class or id)" + ); + } + + rule.selector = context.selector; + + // Less-syntax mixins parse as rules with no nodes + if (rule.nodes) { + rule.nodes.forEach((declaration) => + localizeDeclaration(declaration, context) + ); + } + }); + }, + }; + }, + }; + }; + src$2.exports.postcss = true; + return src$2.exports; +} + +var src$1; +var hasRequiredSrc$1; + +function requireSrc$1 () { + if (hasRequiredSrc$1) return src$1; + hasRequiredSrc$1 = 1; + + const selectorParser = /*@__PURE__*/ requireDist(); + + const hasOwnProperty = Object.prototype.hasOwnProperty; + + function isNestedRule(rule) { + if (!rule.parent || rule.parent.type === "root") { + return false; + } + + if (rule.parent.type === "rule") { + return true; + } + + return isNestedRule(rule.parent); + } + + function getSingleLocalNamesForComposes(root, rule) { + if (isNestedRule(rule)) { + throw new Error(`composition is not allowed in nested rule \n\n${rule}`); + } + + return root.nodes.map((node) => { + if (node.type !== "selector" || node.nodes.length !== 1) { + throw new Error( + `composition is only allowed when selector is single :local class name not in "${root}"` + ); + } + + node = node.nodes[0]; + + if ( + node.type !== "pseudo" || + node.value !== ":local" || + node.nodes.length !== 1 + ) { + throw new Error( + 'composition is only allowed when selector is single :local class name not in "' + + root + + '", "' + + node + + '" is weird' + ); + } + + node = node.first; + + if (node.type !== "selector" || node.length !== 1) { + throw new Error( + 'composition is only allowed when selector is single :local class name not in "' + + root + + '", "' + + node + + '" is weird' + ); + } + + node = node.first; + + if (node.type !== "class") { + // 'id' is not possible, because you can't compose ids + throw new Error( + 'composition is only allowed when selector is single :local class name not in "' + + root + + '", "' + + node + + '" is weird' + ); + } + + return node.value; + }); + } + + const whitespace = "[\\x20\\t\\r\\n\\f]"; + const unescapeRegExp = new RegExp( + "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", + "ig" + ); + + function unescape(str) { + return str.replace(unescapeRegExp, (_, escaped, escapedWhitespace) => { + const high = "0x" + escaped - 0x10000; + + // NaN means non-codepoint + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace + ? escaped + : high < 0 + ? // BMP codepoint + String.fromCharCode(high + 0x10000) + : // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00); + }); + } + + const plugin = (options = {}) => { + const generateScopedName = + (options && options.generateScopedName) || plugin.generateScopedName; + const generateExportEntry = + (options && options.generateExportEntry) || plugin.generateExportEntry; + const exportGlobals = options && options.exportGlobals; + + return { + postcssPlugin: "postcss-modules-scope", + Once(root, { rule }) { + const exports = Object.create(null); + + function exportScopedName(name, rawName, node) { + const scopedName = generateScopedName( + rawName ? rawName : name, + root.source.input.from, + root.source.input.css, + node + ); + const exportEntry = generateExportEntry( + rawName ? rawName : name, + scopedName, + root.source.input.from, + root.source.input.css, + node + ); + const { key, value } = exportEntry; + + exports[key] = exports[key] || []; + + if (exports[key].indexOf(value) < 0) { + exports[key].push(value); + } + + return scopedName; + } + + function localizeNode(node) { + switch (node.type) { + case "selector": + node.nodes = node.map((item) => localizeNode(item)); + return node; + case "class": + return selectorParser.className({ + value: exportScopedName( + node.value, + node.raws && node.raws.value ? node.raws.value : null, + node + ), + }); + case "id": { + return selectorParser.id({ + value: exportScopedName( + node.value, + node.raws && node.raws.value ? node.raws.value : null, + node + ), + }); + } + case "attribute": { + if (node.attribute === "class" && node.operator === "=") { + return selectorParser.attribute({ + attribute: node.attribute, + operator: node.operator, + quoteMark: "'", + value: exportScopedName(node.value, null, null), + }); + } + } + } + + throw new Error( + `${node.type} ("${node}") is not allowed in a :local block` + ); + } + + function traverseNode(node) { + switch (node.type) { + case "pseudo": + if (node.value === ":local") { + if (node.nodes.length !== 1) { + throw new Error('Unexpected comma (",") in :local block'); + } + + const selector = localizeNode(node.first); + // move the spaces that were around the pseudo selector to the first + // non-container node + selector.first.spaces = node.spaces; + + const nextNode = node.next(); + + if ( + nextNode && + nextNode.type === "combinator" && + nextNode.value === " " && + /\\[A-F0-9]{1,6}$/.test(selector.last.value) + ) { + selector.last.spaces.after = " "; + } + + node.replaceWith(selector); + + return; + } + /* falls through */ + case "root": + case "selector": { + node.each((item) => traverseNode(item)); + break; + } + case "id": + case "class": + if (exportGlobals) { + exports[node.value] = [node.value]; + } + break; + } + return node; + } + + // Find any :import and remember imported names + const importedNames = {}; + + root.walkRules(/^:import\(.+\)$/, (rule) => { + rule.walkDecls((decl) => { + importedNames[decl.prop] = true; + }); + }); + + // Find any :local selectors + root.walkRules((rule) => { + let parsedSelector = selectorParser().astSync(rule); + + rule.selector = traverseNode(parsedSelector.clone()).toString(); + + rule.walkDecls(/^(composes|compose-with)$/i, (decl) => { + const localNames = getSingleLocalNamesForComposes( + parsedSelector, + decl.parent + ); + const multiple = decl.value.split(","); + + multiple.forEach((value) => { + const classes = value.trim().split(/\s+/); + + classes.forEach((className) => { + const global = /^global\(([^)]+)\)$/.exec(className); + + if (global) { + localNames.forEach((exportedName) => { + exports[exportedName].push(global[1]); + }); + } else if (hasOwnProperty.call(importedNames, className)) { + localNames.forEach((exportedName) => { + exports[exportedName].push(className); + }); + } else if (hasOwnProperty.call(exports, className)) { + localNames.forEach((exportedName) => { + exports[className].forEach((item) => { + exports[exportedName].push(item); + }); + }); + } else { + throw decl.error( + `referenced class name "${className}" in ${decl.prop} not found` + ); + } + }); + }); + + decl.remove(); + }); + + // Find any :local values + rule.walkDecls((decl) => { + if (!/:local\s*\((.+?)\)/.test(decl.value)) { + return; + } + + let tokens = decl.value.split(/(,|'[^']*'|"[^"]*")/); + + tokens = tokens.map((token, idx) => { + if (idx === 0 || tokens[idx - 1] === ",") { + let result = token; + + const localMatch = /:local\s*\((.+?)\)/.exec(token); + + if (localMatch) { + const input = localMatch.input; + const matchPattern = localMatch[0]; + const matchVal = localMatch[1]; + const newVal = exportScopedName(matchVal); + + result = input.replace(matchPattern, newVal); + } else { + return token; + } + + return result; + } else { + return token; + } + }); + + decl.value = tokens.join(""); + }); + }); + + // Find any :local keyframes + root.walkAtRules(/keyframes$/i, (atRule) => { + const localMatch = /^\s*:local\s*\((.+?)\)\s*$/.exec(atRule.params); + + if (!localMatch) { + return; + } + + atRule.params = exportScopedName(localMatch[1]); + }); + + root.walkAtRules(/scope$/i, (atRule) => { + if (atRule.params) { + atRule.params = atRule.params + .split("to") + .map((item) => { + const selector = item.trim().slice(1, -1).trim(); + + const localMatch = /^\s*:local\s*\((.+?)\)\s*$/.exec(selector); + + if (!localMatch) { + return `(${selector})`; + } + + let parsedSelector = selectorParser().astSync(selector); + + return `(${traverseNode(parsedSelector).toString()})`; + }) + .join(" to "); + } + }); + + // If we found any :locals, insert an :export rule + const exportedNames = Object.keys(exports); + + if (exportedNames.length > 0) { + const exportRule = rule({ selector: ":export" }); + + exportedNames.forEach((exportedName) => + exportRule.append({ + prop: exportedName, + value: exports[exportedName].join(" "), + raws: { before: "\n " }, + }) + ); + + root.append(exportRule); + } + }, + }; + }; + + plugin.postcss = true; + + plugin.generateScopedName = function (name, path) { + const sanitisedPath = path + .replace(/\.[^./\\]+$/, "") + .replace(/[\W_]+/g, "_") + .replace(/^_|_$/g, ""); + + return `_${sanitisedPath}__${name}`.trim(); + }; + + plugin.generateExportEntry = function (name, scopedName) { + return { + key: unescape(name), + value: unescape(scopedName), + }; + }; + + src$1 = plugin; + return src$1; +} + +var stringHash; +var hasRequiredStringHash; + +function requireStringHash () { + if (hasRequiredStringHash) return stringHash; + hasRequiredStringHash = 1; + + function hash(str) { + var hash = 5381, + i = str.length; + + while(i) { + hash = (hash * 33) ^ str.charCodeAt(--i); + } + + /* JavaScript does bitwise operations (like XOR, above) on 32-bit signed + * integers. Since we want the results to be always positive, convert the + * signed int to an unsigned by doing an unsigned bitshift. */ + return hash >>> 0; + } + + stringHash = hash; + return stringHash; +} + +var src = {exports: {}}; + +var hasRequiredSrc; + +function requireSrc () { + if (hasRequiredSrc) return src.exports; + hasRequiredSrc = 1; + + const ICSSUtils = /*@__PURE__*/ requireSrc$4(); + + const matchImports = /^(.+?|\([\s\S]+?\))\s+from\s+("[^"]*"|'[^']*'|[\w-]+)$/; + const matchValueDefinition = /(?:\s+|^)([\w-]+):?(.*?)$/; + const matchImport = /^([\w-]+)(?:\s+as\s+([\w-]+))?/; + + src.exports = (options) => { + let importIndex = 0; + const createImportedName = + (options && options.createImportedName) || + ((importName /*, path*/) => + `i__const_${importName.replace(/\W/g, "_")}_${importIndex++}`); + + return { + postcssPlugin: "postcss-modules-values", + prepare(result) { + const importAliases = []; + const definitions = {}; + + return { + Once(root, postcss) { + root.walkAtRules(/value/i, (atRule) => { + const matches = atRule.params.match(matchImports); + + if (matches) { + let [, /*match*/ aliases, path] = matches; + + // We can use constants for path names + if (definitions[path]) { + path = definitions[path]; + } + + const imports = aliases + .replace(/^\(\s*([\s\S]+)\s*\)$/, "$1") + .split(/\s*,\s*/) + .map((alias) => { + const tokens = matchImport.exec(alias); + + if (tokens) { + const [, /*match*/ theirName, myName = theirName] = tokens; + const importedName = createImportedName(myName); + definitions[myName] = importedName; + return { theirName, importedName }; + } else { + throw new Error(`@import statement "${alias}" is invalid!`); + } + }); + + importAliases.push({ path, imports }); + + atRule.remove(); + + return; + } + + if (atRule.params.indexOf("@value") !== -1) { + result.warn("Invalid value definition: " + atRule.params); + } + + let [, key, value] = `${atRule.params}${atRule.raws.between}`.match( + matchValueDefinition + ); + + const normalizedValue = value.replace(/\/\*((?!\*\/).*?)\*\//g, ""); + + if (normalizedValue.length === 0) { + result.warn("Invalid value definition: " + atRule.params); + atRule.remove(); + + return; + } + + let isOnlySpace = /^\s+$/.test(normalizedValue); + + if (!isOnlySpace) { + value = value.trim(); + } + + // Add to the definitions, knowing that values can refer to each other + definitions[key] = ICSSUtils.replaceValueSymbols( + value, + definitions + ); + + atRule.remove(); + }); + + /* If we have no definitions, don't continue */ + if (!Object.keys(definitions).length) { + return; + } + + /* Perform replacements */ + ICSSUtils.replaceSymbols(root, definitions); + + /* We want to export anything defined by now, but don't add it to the CSS yet or it well get picked up by the replacement stuff */ + const exportDeclarations = Object.keys(definitions).map((key) => + postcss.decl({ + value: definitions[key], + prop: key, + raws: { before: "\n " }, + }) + ); + + /* Add export rules if any */ + if (exportDeclarations.length > 0) { + const exportRule = postcss.rule({ + selector: ":export", + raws: { after: "\n" }, + }); + + exportRule.append(exportDeclarations); + + root.prepend(exportRule); + } + + /* Add import rules */ + importAliases.reverse().forEach(({ path, imports }) => { + const importRule = postcss.rule({ + selector: `:import(${path})`, + raws: { after: "\n" }, + }); + + imports.forEach(({ theirName, importedName }) => { + importRule.append({ + value: theirName, + prop: importedName, + raws: { before: "\n " }, + }); + }); + + root.prepend(importRule); + }); + }, + }; + }, + }; + }; + + src.exports.postcss = true; + return src.exports; +} + +var hasRequiredScoping; + +function requireScoping () { + if (hasRequiredScoping) return scoping; + hasRequiredScoping = 1; + + Object.defineProperty(scoping, "__esModule", { + value: true + }); + scoping.behaviours = void 0; + scoping.getDefaultPlugins = getDefaultPlugins; + scoping.getDefaultScopeBehaviour = getDefaultScopeBehaviour; + scoping.getScopedNameGenerator = getScopedNameGenerator; + + var _postcssModulesExtractImports = _interopRequireDefault(/*@__PURE__*/ requireSrc$3()); + + var _genericNames = _interopRequireDefault(/*@__PURE__*/ requireGenericNames()); + + var _postcssModulesLocalByDefault = _interopRequireDefault(/*@__PURE__*/ requireSrc$2()); + + var _postcssModulesScope = _interopRequireDefault(/*@__PURE__*/ requireSrc$1()); + + var _stringHash = _interopRequireDefault(/*@__PURE__*/ requireStringHash()); + + var _postcssModulesValues = _interopRequireDefault(/*@__PURE__*/ requireSrc()); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + const behaviours = { + LOCAL: "local", + GLOBAL: "global" + }; + scoping.behaviours = behaviours; + + function getDefaultPlugins({ + behaviour, + generateScopedName, + exportGlobals + }) { + const scope = (0, _postcssModulesScope.default)({ + generateScopedName, + exportGlobals + }); + const plugins = { + [behaviours.LOCAL]: [_postcssModulesValues.default, (0, _postcssModulesLocalByDefault.default)({ + mode: "local" + }), _postcssModulesExtractImports.default, scope], + [behaviours.GLOBAL]: [_postcssModulesValues.default, (0, _postcssModulesLocalByDefault.default)({ + mode: "global" + }), _postcssModulesExtractImports.default, scope] + }; + return plugins[behaviour]; + } + + function isValidBehaviour(behaviour) { + return Object.keys(behaviours).map(key => behaviours[key]).indexOf(behaviour) > -1; + } + + function getDefaultScopeBehaviour(scopeBehaviour) { + return scopeBehaviour && isValidBehaviour(scopeBehaviour) ? scopeBehaviour : behaviours.LOCAL; + } + + function generateScopedNameDefault(name, filename, css) { + const i = css.indexOf(`.${name}`); + const lineNumber = css.substr(0, i).split(/[\r\n]/).length; + const hash = (0, _stringHash.default)(css).toString(36).substr(0, 5); + return `_${name}_${hash}_${lineNumber}`; + } + + function getScopedNameGenerator(generateScopedName, hashPrefix) { + const scopedNameGenerator = generateScopedName || generateScopedNameDefault; + + if (typeof scopedNameGenerator === "function") { + return scopedNameGenerator; + } + + return (0, _genericNames.default)(scopedNameGenerator, { + context: process.cwd(), + hashPrefix: hashPrefix + }); + } + return scoping; +} + +var hasRequiredPluginFactory; + +function requirePluginFactory () { + if (hasRequiredPluginFactory) return pluginFactory; + hasRequiredPluginFactory = 1; + + Object.defineProperty(pluginFactory, "__esModule", { + value: true + }); + pluginFactory.makePlugin = makePlugin; + + var _postcss = _interopRequireDefault(require$$0$1); + + var _unquote = _interopRequireDefault(/*@__PURE__*/ requireUnquote()); + + var _Parser = _interopRequireDefault(/*@__PURE__*/ requireParser$1()); + + var _saveJSON = _interopRequireDefault(/*@__PURE__*/ requireSaveJSON()); + + var _localsConvention = /*@__PURE__*/ requireLocalsConvention(); + + var _FileSystemLoader = _interopRequireDefault(/*@__PURE__*/ requireFileSystemLoader()); + + var _scoping = /*@__PURE__*/ requireScoping(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + const PLUGIN_NAME = "postcss-modules"; + + function isGlobalModule(globalModules, inputFile) { + return globalModules.some(regex => inputFile.match(regex)); + } + + function getDefaultPluginsList(opts, inputFile) { + const globalModulesList = opts.globalModulePaths || null; + const exportGlobals = opts.exportGlobals || false; + const defaultBehaviour = (0, _scoping.getDefaultScopeBehaviour)(opts.scopeBehaviour); + const generateScopedName = (0, _scoping.getScopedNameGenerator)(opts.generateScopedName, opts.hashPrefix); + + if (globalModulesList && isGlobalModule(globalModulesList, inputFile)) { + return (0, _scoping.getDefaultPlugins)({ + behaviour: _scoping.behaviours.GLOBAL, + generateScopedName, + exportGlobals + }); + } + + return (0, _scoping.getDefaultPlugins)({ + behaviour: defaultBehaviour, + generateScopedName, + exportGlobals + }); + } + + function getLoader(opts, plugins) { + const root = typeof opts.root === "undefined" ? "/" : opts.root; + return typeof opts.Loader === "function" ? new opts.Loader(root, plugins, opts.resolve) : new _FileSystemLoader.default(root, plugins, opts.resolve); + } + + function isOurPlugin(plugin) { + return plugin.postcssPlugin === PLUGIN_NAME; + } + + function makePlugin(opts) { + return { + postcssPlugin: PLUGIN_NAME, + + async OnceExit(css, { + result + }) { + const getJSON = opts.getJSON || _saveJSON.default; + const inputFile = css.source.input.file; + const pluginList = getDefaultPluginsList(opts, inputFile); + const resultPluginIndex = result.processor.plugins.findIndex(plugin => isOurPlugin(plugin)); + + if (resultPluginIndex === -1) { + throw new Error("Plugin missing from options."); + } + + const earlierPlugins = result.processor.plugins.slice(0, resultPluginIndex); + const loaderPlugins = [...earlierPlugins, ...pluginList]; + const loader = getLoader(opts, loaderPlugins); + + const fetcher = async (file, relativeTo, depTrace) => { + const unquoteFile = (0, _unquote.default)(file); + return loader.fetch.call(loader, unquoteFile, relativeTo, depTrace); + }; + + const parser = new _Parser.default(fetcher); + await (0, _postcss.default)([...pluginList, parser.plugin()]).process(css, { + from: inputFile + }); + const out = loader.finalSource; + if (out) css.prepend(out); + + if (opts.localsConvention) { + const reducer = (0, _localsConvention.makeLocalsConventionReducer)(opts.localsConvention, inputFile); + parser.exportTokens = Object.entries(parser.exportTokens).reduce(reducer, {}); + } + + result.messages.push({ + type: "export", + plugin: "postcss-modules", + exportTokens: parser.exportTokens + }); // getJSON may return a promise + + return getJSON(css.source.input.file, parser.exportTokens, result.opts.to); + } + + }; + } + return pluginFactory; +} + +var hasRequiredBuild; + +function requireBuild () { + if (hasRequiredBuild) return build.exports; + hasRequiredBuild = 1; + + var _fs = require$$0; + + var _fs2 = /*@__PURE__*/ requireFs(); + + var _pluginFactory = /*@__PURE__*/ requirePluginFactory(); + + (0, _fs2.setFileSystem)({ + readFile: _fs.readFile, + writeFile: _fs.writeFile + }); + + build.exports = (opts = {}) => (0, _pluginFactory.makePlugin)(opts); + + build.exports.postcss = true; + return build.exports; +} + +var buildExports = /*@__PURE__*/ requireBuild(); +var postcssModules = /*@__PURE__*/getDefaultExportFromCjs(buildExports); + +function compileStyle(options) { + return doCompileStyle({ + ...options, + isAsync: false + }); +} +function compileStyleAsync(options) { + return doCompileStyle({ + ...options, + isAsync: true + }); +} +function doCompileStyle(options) { + const { + filename, + id, + scoped = false, + trim = true, + isProd = false, + modules = false, + modulesOptions = {}, + preprocessLang, + postcssOptions, + postcssPlugins + } = options; + const preprocessor = preprocessLang && processors[preprocessLang]; + const preProcessedSource = preprocessor && preprocess(options, preprocessor); + const map = preProcessedSource ? preProcessedSource.map : options.inMap || options.map; + const source = preProcessedSource ? preProcessedSource.code : options.source; + const shortId = id.replace(/^data-v-/, ""); + const longId = `data-v-${shortId}`; + const plugins = (postcssPlugins || []).slice(); + plugins.unshift(cssVarsPlugin({ id: shortId, isProd })); + if (trim) { + plugins.push(trimPlugin()); + } + if (scoped) { + plugins.push(scopedPlugin(longId)); + } + let cssModules; + if (modules) { + if (!options.isAsync) { + throw new Error( + "[@vue/compiler-sfc] `modules` option can only be used with compileStyleAsync()." + ); + } + plugins.push( + postcssModules({ + ...modulesOptions, + getJSON: (_cssFileName, json) => { + cssModules = json; + } + }) + ); + } + const postCSSOptions = { + ...postcssOptions, + to: filename, + from: filename + }; + if (map) { + postCSSOptions.map = { + inline: false, + annotation: false, + prev: map + }; + } + let result; + let code; + let outMap; + const dependencies = new Set( + preProcessedSource ? preProcessedSource.dependencies : [] + ); + dependencies.delete(filename); + const errors = []; + if (preProcessedSource && preProcessedSource.errors.length) { + errors.push(...preProcessedSource.errors); + } + const recordPlainCssDependencies = (messages) => { + messages.forEach((msg) => { + if (msg.type === "dependency") { + dependencies.add(msg.file); + } + }); + return dependencies; + }; + try { + result = require$$0$1(plugins).process(source, postCSSOptions); + if (options.isAsync) { + return result.then((result2) => ({ + code: result2.css || "", + map: result2.map && result2.map.toJSON(), + errors, + modules: cssModules, + rawResult: result2, + dependencies: recordPlainCssDependencies(result2.messages) + })).catch((error) => ({ + code: "", + map: void 0, + errors: [...errors, error], + rawResult: void 0, + dependencies + })); + } + recordPlainCssDependencies(result.messages); + code = result.css; + outMap = result.map; + } catch (e) { + errors.push(e); + } + return { + code: code || ``, + map: outMap && outMap.toJSON(), + errors, + rawResult: result, + dependencies + }; +} +function preprocess(options, preprocessor) { + return preprocessor( + options.source, + options.inMap || options.map, + { + filename: options.filename, + ...options.preprocessOptions + }, + options.preprocessCustomRequire + ); +} + +const UNKNOWN_TYPE = "Unknown"; +function resolveObjectKey(node, computed) { + switch (node.type) { + case "StringLiteral": + case "NumericLiteral": + return String(node.value); + case "Identifier": + if (!computed) return node.name; + } + return void 0; +} +function concatStrings(strs) { + return strs.filter((s) => !!s).join(", "); +} +function isLiteralNode(node) { + return node.type.endsWith("Literal"); +} +function isCallOf(node, test) { + return !!(node && test && node.type === "CallExpression" && node.callee.type === "Identifier" && (typeof test === "string" ? node.callee.name === test : test(node.callee.name))); +} +function toRuntimeTypeString(types) { + return types.length > 1 ? `[${types.join(", ")}]` : types[0]; +} +function getImportedName(specifier) { + if (specifier.type === "ImportSpecifier") + return specifier.imported.type === "Identifier" ? specifier.imported.name : specifier.imported.value; + else if (specifier.type === "ImportNamespaceSpecifier") return "*"; + return "default"; +} +function getId(node) { + return node.type === "Identifier" ? node.name : node.type === "StringLiteral" ? node.value : null; +} +const identity = (str) => str; +const fileNameLowerCaseRegExp = /[^\u0130\u0131\u00DFa-z0-9\\/:\-_\. ]+/g; +const toLowerCase = (str) => str.toLowerCase(); +function toFileNameLowerCase(x) { + return fileNameLowerCaseRegExp.test(x) ? x.replace(fileNameLowerCaseRegExp, toLowerCase) : x; +} +function createGetCanonicalFileName(useCaseSensitiveFileNames) { + return useCaseSensitiveFileNames ? identity : toFileNameLowerCase; +} +const normalize = (path$1.posix || path$1).normalize; +const windowsSlashRE = /\\/g; +function normalizePath(p) { + return normalize(p.replace(windowsSlashRE, "/")); +} +const joinPaths = (path$1.posix || path$1).join; +const propNameEscapeSymbolsRE = /[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~\-]/; +function getEscapedPropName(key) { + return propNameEscapeSymbolsRE.test(key) ? JSON.stringify(key) : key; +} + +function analyzeScriptBindings(ast) { + for (const node of ast) { + if (node.type === "ExportDefaultDeclaration" && node.declaration.type === "ObjectExpression") { + return analyzeBindingsFromOptions(node.declaration); + } + } + return {}; +} +function analyzeBindingsFromOptions(node) { + const bindings = {}; + Object.defineProperty(bindings, "__isScriptSetup", { + enumerable: false, + value: false + }); + for (const property of node.properties) { + if (property.type === "ObjectProperty" && !property.computed && property.key.type === "Identifier") { + if (property.key.name === "props") { + for (const key of getObjectOrArrayExpressionKeys(property.value)) { + bindings[key] = "props"; + } + } else if (property.key.name === "inject") { + for (const key of getObjectOrArrayExpressionKeys(property.value)) { + bindings[key] = "options"; + } + } else if (property.value.type === "ObjectExpression" && (property.key.name === "computed" || property.key.name === "methods")) { + for (const key of getObjectExpressionKeys(property.value)) { + bindings[key] = "options"; + } + } + } else if (property.type === "ObjectMethod" && property.key.type === "Identifier" && (property.key.name === "setup" || property.key.name === "data")) { + for (const bodyItem of property.body.body) { + if (bodyItem.type === "ReturnStatement" && bodyItem.argument && bodyItem.argument.type === "ObjectExpression") { + for (const key of getObjectExpressionKeys(bodyItem.argument)) { + bindings[key] = property.key.name === "setup" ? "setup-maybe-ref" : "data"; + } + } + } + } + } + return bindings; +} +function getObjectExpressionKeys(node) { + const keys = []; + for (const prop of node.properties) { + if (prop.type === "SpreadElement") continue; + const key = resolveObjectKey(prop.key, prop.computed); + if (key) keys.push(String(key)); + } + return keys; +} +function getArrayExpressionKeys(node) { + const keys = []; + for (const element of node.elements) { + if (element && element.type === "StringLiteral") { + keys.push(element.value); + } + } + return keys; +} +function getObjectOrArrayExpressionKeys(value) { + if (value.type === "ArrayExpression") { + return getArrayExpressionKeys(value); + } + if (value.type === "ObjectExpression") { + return getObjectExpressionKeys(value); + } + return []; +} + +var _a, _b; +class ScriptCompileContext { + constructor(descriptor, options) { + this.descriptor = descriptor; + this.options = options; + this.isCE = false; + this.source = this.descriptor.source; + this.filename = this.descriptor.filename; + this.s = new MagicString(this.source); + this.startOffset = (_a = this.descriptor.scriptSetup) == null ? void 0 : _a.loc.start.offset; + this.endOffset = (_b = this.descriptor.scriptSetup) == null ? void 0 : _b.loc.end.offset; + this.userImports = /* @__PURE__ */ Object.create(null); + // macros presence check + this.hasDefinePropsCall = false; + this.hasDefineEmitCall = false; + this.hasDefineExposeCall = false; + this.hasDefaultExportName = false; + this.hasDefaultExportRender = false; + this.hasDefineOptionsCall = false; + this.hasDefineSlotsCall = false; + this.hasDefineModelCall = false; + this.propsDestructuredBindings = /* @__PURE__ */ Object.create(null); + // defineModel + this.modelDecls = /* @__PURE__ */ Object.create(null); + // codegen + this.bindingMetadata = {}; + this.helperImports = /* @__PURE__ */ new Set(); + const { script, scriptSetup } = descriptor; + const scriptLang = script && script.lang; + const scriptSetupLang = scriptSetup && scriptSetup.lang; + this.isJS = scriptLang === "js" || scriptLang === "jsx" || scriptSetupLang === "js" || scriptSetupLang === "jsx"; + this.isTS = scriptLang === "ts" || scriptLang === "tsx" || scriptSetupLang === "ts" || scriptSetupLang === "tsx"; + const customElement = options.customElement; + const filename = this.descriptor.filename; + if (customElement) { + this.isCE = typeof customElement === "boolean" ? customElement : customElement(filename); + } + const plugins = resolveParserPlugins( + scriptLang || scriptSetupLang, + options.babelParserPlugins + ); + function parse(input, offset) { + try { + return parser$2.parse(input, { + plugins, + sourceType: "module" + }).program; + } catch (e) { + e.message = `[vue/compiler-sfc] ${e.message} + +${descriptor.filename} +${shared.generateCodeFrame( + descriptor.source, + e.pos + offset, + e.pos + offset + 1 + )}`; + throw e; + } + } + this.scriptAst = descriptor.script && parse(descriptor.script.content, descriptor.script.loc.start.offset); + this.scriptSetupAst = descriptor.scriptSetup && parse(descriptor.scriptSetup.content, this.startOffset); + } + helper(key) { + this.helperImports.add(key); + return `_${key}`; + } + getString(node, scriptSetup = true) { + const block = scriptSetup ? this.descriptor.scriptSetup : this.descriptor.script; + return block.content.slice(node.start, node.end); + } + warn(msg, node, scope) { + warn(generateError(msg, node, this, scope)); + } + error(msg, node, scope) { + throw new Error( + `[@vue/compiler-sfc] ${generateError(msg, node, this, scope)}` + ); + } +} +function generateError(msg, node, ctx, scope) { + const offset = scope ? scope.offset : ctx.startOffset; + return `${msg} + +${(scope || ctx.descriptor).filename} +${shared.generateCodeFrame( + (scope || ctx.descriptor).source, + node.start + offset, + node.end + offset + )}`; +} +function resolveParserPlugins(lang, userPlugins, dts = false) { + const plugins = []; + if (!userPlugins || !userPlugins.some( + (p) => p === "importAssertions" || p === "importAttributes" || shared.isArray(p) && p[0] === "importAttributes" + )) { + plugins.push("importAttributes"); + } + if (lang === "jsx" || lang === "tsx" || lang === "mtsx") { + plugins.push("jsx"); + } else if (userPlugins) { + userPlugins = userPlugins.filter((p) => p !== "jsx"); + } + if (lang === "ts" || lang === "mts" || lang === "tsx" || lang === "mtsx") { + plugins.push(["typescript", { dts }], "explicitResourceManagement"); + if (!userPlugins || !userPlugins.includes("decorators")) { + plugins.push("decorators-legacy"); + } + } + if (userPlugins) { + plugins.push(...userPlugins); + } + return plugins; +} + +function rewriteDefault(input, as, parserPlugins) { + const ast = parser$2.parse(input, { + sourceType: "module", + plugins: resolveParserPlugins("js", parserPlugins) + }).program.body; + const s = new MagicString(input); + rewriteDefaultAST(ast, s, as); + return s.toString(); +} +function rewriteDefaultAST(ast, s, as) { + if (!hasDefaultExport(ast)) { + s.append(` +const ${as} = {}`); + return; + } + ast.forEach((node) => { + if (node.type === "ExportDefaultDeclaration") { + if (node.declaration.type === "ClassDeclaration" && node.declaration.id) { + const start = node.declaration.decorators && node.declaration.decorators.length > 0 ? node.declaration.decorators[node.declaration.decorators.length - 1].end : node.start; + s.overwrite(start, node.declaration.id.start, ` class `); + s.append(` +const ${as} = ${node.declaration.id.name}`); + } else { + s.overwrite(node.start, node.declaration.start, `const ${as} = `); + } + } else if (node.type === "ExportNamedDeclaration") { + for (const specifier of node.specifiers) { + if (specifier.type === "ExportSpecifier" && specifier.exported.type === "Identifier" && specifier.exported.name === "default") { + if (node.source) { + if (specifier.local.name === "default") { + s.prepend( + `import { default as __VUE_DEFAULT__ } from '${node.source.value}' +` + ); + const end2 = specifierEnd(s, specifier.local.end, node.end); + s.remove(specifier.start, end2); + s.append(` +const ${as} = __VUE_DEFAULT__`); + continue; + } else { + s.prepend( + `import { ${s.slice( + specifier.local.start, + specifier.local.end + )} as __VUE_DEFAULT__ } from '${node.source.value}' +` + ); + const end2 = specifierEnd(s, specifier.exported.end, node.end); + s.remove(specifier.start, end2); + s.append(` +const ${as} = __VUE_DEFAULT__`); + continue; + } + } + const end = specifierEnd(s, specifier.end, node.end); + s.remove(specifier.start, end); + s.append(` +const ${as} = ${specifier.local.name}`); + } + } + } + }); +} +function hasDefaultExport(ast) { + for (const stmt of ast) { + if (stmt.type === "ExportDefaultDeclaration") { + return true; + } else if (stmt.type === "ExportNamedDeclaration" && stmt.specifiers.some( + (spec) => spec.exported.name === "default" + )) { + return true; + } + } + return false; +} +function specifierEnd(s, end, nodeEnd) { + let hasCommas = false; + let oldEnd = end; + while (end < nodeEnd) { + if (/\s/.test(s.slice(end, end + 1))) { + end++; + } else if (s.slice(end, end + 1) === ",") { + end++; + hasCommas = true; + break; + } else if (s.slice(end, end + 1) === "}") { + break; + } + } + return hasCommas ? end : oldEnd; +} + +const normalScriptDefaultVar = `__default__`; +function processNormalScript(ctx, scopeId) { + var _a; + const script = ctx.descriptor.script; + if (script.lang && !ctx.isJS && !ctx.isTS) { + return script; + } + try { + let content = script.content; + let map = script.map; + const scriptAst = ctx.scriptAst; + const bindings = analyzeScriptBindings(scriptAst.body); + const { cssVars } = ctx.descriptor; + const { genDefaultAs, isProd } = ctx.options; + if (cssVars.length || genDefaultAs) { + const defaultVar = genDefaultAs || normalScriptDefaultVar; + const s = new MagicString(content); + rewriteDefaultAST(scriptAst.body, s, defaultVar); + content = s.toString(); + if (cssVars.length && !((_a = ctx.options.templateOptions) == null ? void 0 : _a.ssr)) { + content += genNormalScriptCssVarsCode( + cssVars, + bindings, + scopeId, + !!isProd, + defaultVar + ); + } + if (!genDefaultAs) { + content += ` +export default ${defaultVar}`; + } + } + return { + ...script, + content, + map, + bindings, + scriptAst: scriptAst.body + }; + } catch (e) { + return script; + } +} + +const balanced = (a, b, str) => { + const ma = a instanceof RegExp ? maybeMatch(a, str) : a; + const mb = b instanceof RegExp ? maybeMatch(b, str) : b; + const r = ma !== null && mb != null && range(ma, mb, str); + return (r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + ma.length, r[1]), + post: str.slice(r[1] + mb.length), + }); +}; +const maybeMatch = (reg, str) => { + const m = str.match(reg); + return m ? m[0] : null; +}; +const range = (a, b, str) => { + let begs, beg, left, right = undefined, result; + let ai = str.indexOf(a); + let bi = str.indexOf(b, ai + 1); + let i = ai; + if (ai >= 0 && bi > 0) { + if (a === b) { + return [ai, bi]; + } + begs = []; + left = str.length; + while (i >= 0 && !result) { + if (i === ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } + else if (begs.length === 1) { + const r = begs.pop(); + if (r !== undefined) + result = [r, bi]; + } + else { + beg = begs.pop(); + if (beg !== undefined && beg < left) { + left = beg; + right = bi; + } + bi = str.indexOf(b, i + 1); + } + i = ai < bi && ai >= 0 ? ai : bi; + } + if (begs.length && right !== undefined) { + result = [left, right]; + } + } + return result; +}; + +const escSlash = '\0SLASH' + Math.random() + '\0'; +const escOpen = '\0OPEN' + Math.random() + '\0'; +const escClose = '\0CLOSE' + Math.random() + '\0'; +const escComma = '\0COMMA' + Math.random() + '\0'; +const escPeriod = '\0PERIOD' + Math.random() + '\0'; +const escSlashPattern = new RegExp(escSlash, 'g'); +const escOpenPattern = new RegExp(escOpen, 'g'); +const escClosePattern = new RegExp(escClose, 'g'); +const escCommaPattern = new RegExp(escComma, 'g'); +const escPeriodPattern = new RegExp(escPeriod, 'g'); +const slashPattern = /\\\\/g; +const openPattern = /\\{/g; +const closePattern = /\\}/g; +const commaPattern = /\\,/g; +const periodPattern = /\\./g; +function numeric(str) { + return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0); +} +function escapeBraces(str) { + return str + .replace(slashPattern, escSlash) + .replace(openPattern, escOpen) + .replace(closePattern, escClose) + .replace(commaPattern, escComma) + .replace(periodPattern, escPeriod); +} +function unescapeBraces(str) { + return str + .replace(escSlashPattern, '\\') + .replace(escOpenPattern, '{') + .replace(escClosePattern, '}') + .replace(escCommaPattern, ',') + .replace(escPeriodPattern, '.'); +} +/** + * Basically just str.split(","), but handling cases + * where we have nested braced sections, which should be + * treated as individual members, like {a,{b,c},d} + */ +function parseCommaParts(str) { + if (!str) { + return ['']; + } + const parts = []; + const m = balanced('{', '}', str); + if (!m) { + return str.split(','); + } + const { pre, body, post } = m; + const p = pre.split(','); + p[p.length - 1] += '{' + body + '}'; + const postParts = parseCommaParts(post); + if (post.length) { + p[p.length - 1] += postParts.shift(); + p.push.apply(p, postParts); + } + parts.push.apply(parts, p); + return parts; +} +function expand(str) { + if (!str) { + return []; + } + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.slice(0, 2) === '{}') { + str = '\\{\\}' + str.slice(2); + } + return expand_(escapeBraces(str), true).map(unescapeBraces); +} +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} +function expand_(str, isTop) { + /** @type {string[]} */ + const expansions = []; + const m = balanced('{', '}', str); + if (!m) + return [str]; + // no need to expand pre, since it is guaranteed to be free of brace-sets + const pre = m.pre; + const post = m.post.length ? expand_(m.post, false) : ['']; + if (/\$$/.test(m.pre)) { + for (let k = 0; k < post.length; k++) { + const expansion = pre + '{' + m.body + '}' + post[k]; + expansions.push(expansion); + } + } + else { + const isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + const isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + const isSequence = isNumericSequence || isAlphaSequence; + const isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,(?!,).*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand_(str); + } + return [str]; + } + let n; + if (isSequence) { + n = m.body.split(/\.\./); + } + else { + n = parseCommaParts(m.body); + if (n.length === 1 && n[0] !== undefined) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand_(n[0], false).map(embrace); + //XXX is this necessary? Can't seem to hit it in tests. + /* c8 ignore start */ + if (n.length === 1) { + return post.map(p => m.pre + n[0] + p); + } + /* c8 ignore stop */ + } + } + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + let N; + if (isSequence && n[0] !== undefined && n[1] !== undefined) { + const x = numeric(n[0]); + const y = numeric(n[1]); + const width = Math.max(n[0].length, n[1].length); + let incr = n.length === 3 && n[2] !== undefined ? Math.abs(numeric(n[2])) : 1; + let test = lte; + const reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + const pad = n.some(isPadded); + N = []; + for (let i = x; test(i, y); i += incr) { + let c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') { + c = ''; + } + } + else { + c = String(i); + if (pad) { + const need = width - c.length; + if (need > 0) { + const z = new Array(need + 1).join('0'); + if (i < 0) { + c = '-' + z + c.slice(1); + } + else { + c = z + c; + } + } + } + } + N.push(c); + } + } + else { + N = []; + for (let j = 0; j < n.length; j++) { + N.push.apply(N, expand_(n[j], false)); + } + } + for (let j = 0; j < N.length; j++) { + for (let k = 0; k < post.length; k++) { + const expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) { + expansions.push(expansion); + } + } + } + } + return expansions; +} + +const MAX_PATTERN_LENGTH = 1024 * 64; +const assertValidPattern = (pattern) => { + if (typeof pattern !== 'string') { + throw new TypeError('invalid pattern'); + } + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError('pattern is too long'); + } +}; + +// translate the various posix character classes into unicode properties +// this works across all unicode locales +// { <posix class>: [<translation>, /u flag required, negated] +const posixClasses = { + '[:alnum:]': ['\\p{L}\\p{Nl}\\p{Nd}', true], + '[:alpha:]': ['\\p{L}\\p{Nl}', true], + '[:ascii:]': ['\\x' + '00-\\x' + '7f', false], + '[:blank:]': ['\\p{Zs}\\t', true], + '[:cntrl:]': ['\\p{Cc}', true], + '[:digit:]': ['\\p{Nd}', true], + '[:graph:]': ['\\p{Z}\\p{C}', true, true], + '[:lower:]': ['\\p{Ll}', true], + '[:print:]': ['\\p{C}', true], + '[:punct:]': ['\\p{P}', true], + '[:space:]': ['\\p{Z}\\t\\r\\n\\v\\f', true], + '[:upper:]': ['\\p{Lu}', true], + '[:word:]': ['\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}', true], + '[:xdigit:]': ['A-Fa-f0-9', false], +}; +// only need to escape a few things inside of brace expressions +// escapes: [ \ ] - +const braceEscape = (s) => s.replace(/[[\]\\-]/g, '\\$&'); +// escape all regexp magic characters +const regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); +// everything has already been escaped, we just have to join +const rangesToString = (ranges) => ranges.join(''); +// takes a glob string at a posix brace expression, and returns +// an equivalent regular expression source, and boolean indicating +// whether the /u flag needs to be applied, and the number of chars +// consumed to parse the character class. +// This also removes out of order ranges, and returns ($.) if the +// entire class just no good. +const parseClass = (glob, position) => { + const pos = position; + /* c8 ignore start */ + if (glob.charAt(pos) !== '[') { + throw new Error('not in a brace expression'); + } + /* c8 ignore stop */ + const ranges = []; + const negs = []; + let i = pos + 1; + let sawStart = false; + let uflag = false; + let escaping = false; + let negate = false; + let endPos = pos; + let rangeStart = ''; + WHILE: while (i < glob.length) { + const c = glob.charAt(i); + if ((c === '!' || c === '^') && i === pos + 1) { + negate = true; + i++; + continue; + } + if (c === ']' && sawStart && !escaping) { + endPos = i + 1; + break; + } + sawStart = true; + if (c === '\\') { + if (!escaping) { + escaping = true; + i++; + continue; + } + // escaped \ char, fall through and treat like normal char + } + if (c === '[' && !escaping) { + // either a posix class, a collation equivalent, or just a [ + for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) { + if (glob.startsWith(cls, i)) { + // invalid, [a-[] is fine, but not [a-[:alpha]] + if (rangeStart) { + return ['$.', false, glob.length - pos, true]; + } + i += cls.length; + if (neg) + negs.push(unip); + else + ranges.push(unip); + uflag = uflag || u; + continue WHILE; + } + } + } + // now it's just a normal character, effectively + escaping = false; + if (rangeStart) { + // throw this range away if it's not valid, but others + // can still match. + if (c > rangeStart) { + ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c)); + } + else if (c === rangeStart) { + ranges.push(braceEscape(c)); + } + rangeStart = ''; + i++; + continue; + } + // now might be the start of a range. + // can be either c-d or c-] or c<more...>] or c] at this point + if (glob.startsWith('-]', i + 1)) { + ranges.push(braceEscape(c + '-')); + i += 2; + continue; + } + if (glob.startsWith('-', i + 1)) { + rangeStart = c; + i += 2; + continue; + } + // not the start of a range, just a single character + ranges.push(braceEscape(c)); + i++; + } + if (endPos < i) { + // didn't see the end of the class, not a valid class, + // but might still be valid as a literal match. + return ['', false, 0, false]; + } + // if we got no ranges and no negates, then we have a range that + // cannot possibly match anything, and that poisons the whole glob + if (!ranges.length && !negs.length) { + return ['$.', false, glob.length - pos, true]; + } + // if we got one positive range, and it's a single character, then that's + // not actually a magic pattern, it's just that one literal character. + // we should not treat that as "magic", we should just return the literal + // character. [_] is a perfectly valid way to escape glob magic chars. + if (negs.length === 0 && + ranges.length === 1 && + /^\\?.$/.test(ranges[0]) && + !negate) { + const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]; + return [regexpEscape(r), false, endPos - pos, false]; + } + const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'; + const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'; + const comb = ranges.length && negs.length + ? '(' + sranges + '|' + snegs + ')' + : ranges.length + ? sranges + : snegs; + return [comb, uflag, endPos - pos, true]; +}; + +/** + * Un-escape a string that has been escaped with {@link escape}. + * + * If the {@link windowsPathsNoEscape} option is used, then square-brace + * escapes are removed, but not backslash escapes. For example, it will turn + * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`, + * becuase `\` is a path separator in `windowsPathsNoEscape` mode. + * + * When `windowsPathsNoEscape` is not set, then both brace escapes and + * backslash escapes are removed. + * + * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped + * or unescaped. + */ +const unescape = (s, { windowsPathsNoEscape = false, } = {}) => { + return windowsPathsNoEscape + ? s.replace(/\[([^\/\\])\]/g, '$1') + : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2').replace(/\\([^\/])/g, '$1'); +}; + +// parse a single path portion +const types = new Set(['!', '?', '+', '*', '@']); +const isExtglobType = (c) => types.has(c); +// Patterns that get prepended to bind to the start of either the +// entire string, or just a single path portion, to prevent dots +// and/or traversal patterns, when needed. +// Exts don't need the ^ or / bit, because the root binds that already. +const startNoTraversal = '(?!(?:^|/)\\.\\.?(?:$|/))'; +const startNoDot = '(?!\\.)'; +// characters that indicate a start of pattern needs the "no dots" bit, +// because a dot *might* be matched. ( is not in the list, because in +// the case of a child extglob, it will handle the prevention itself. +const addPatternStart = new Set(['[', '.']); +// cases where traversal is A-OK, no dot prevention needed +const justDots = new Set(['..', '.']); +const reSpecials = new Set('().*{}+?[]^$\\!'); +const regExpEscape$1 = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); +// any single thing other than / +const qmark$1 = '[^/]'; +// * => any number of characters +const star$1 = qmark$1 + '*?'; +// use + when we need to ensure that *something* matches, because the * is +// the only thing in the path portion. +const starNoEmpty = qmark$1 + '+?'; +// remove the \ chars that we added if we end up doing a nonmagic compare +// const deslash = (s: string) => s.replace(/\\(.)/g, '$1') +class AST { + type; + #root; + #hasMagic; + #uflag = false; + #parts = []; + #parent; + #parentIndex; + #negs; + #filledNegs = false; + #options; + #toString; + // set to true if it's an extglob with no children + // (which really means one child of '') + #emptyExt = false; + constructor(type, parent, options = {}) { + this.type = type; + // extglobs are inherently magical + if (type) + this.#hasMagic = true; + this.#parent = parent; + this.#root = this.#parent ? this.#parent.#root : this; + this.#options = this.#root === this ? options : this.#root.#options; + this.#negs = this.#root === this ? [] : this.#root.#negs; + if (type === '!' && !this.#root.#filledNegs) + this.#negs.push(this); + this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0; + } + get hasMagic() { + /* c8 ignore start */ + if (this.#hasMagic !== undefined) + return this.#hasMagic; + /* c8 ignore stop */ + for (const p of this.#parts) { + if (typeof p === 'string') + continue; + if (p.type || p.hasMagic) + return (this.#hasMagic = true); + } + // note: will be undefined until we generate the regexp src and find out + return this.#hasMagic; + } + // reconstructs the pattern + toString() { + if (this.#toString !== undefined) + return this.#toString; + if (!this.type) { + return (this.#toString = this.#parts.map(p => String(p)).join('')); + } + else { + return (this.#toString = + this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')'); + } + } + #fillNegs() { + /* c8 ignore start */ + if (this !== this.#root) + throw new Error('should only call on root'); + if (this.#filledNegs) + return this; + /* c8 ignore stop */ + // call toString() once to fill this out + this.toString(); + this.#filledNegs = true; + let n; + while ((n = this.#negs.pop())) { + if (n.type !== '!') + continue; + // walk up the tree, appending everthing that comes AFTER parentIndex + let p = n; + let pp = p.#parent; + while (pp) { + for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) { + for (const part of n.#parts) { + /* c8 ignore start */ + if (typeof part === 'string') { + throw new Error('string part in extglob AST??'); + } + /* c8 ignore stop */ + part.copyIn(pp.#parts[i]); + } + } + p = pp; + pp = p.#parent; + } + } + return this; + } + push(...parts) { + for (const p of parts) { + if (p === '') + continue; + /* c8 ignore start */ + if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) { + throw new Error('invalid part: ' + p); + } + /* c8 ignore stop */ + this.#parts.push(p); + } + } + toJSON() { + const ret = this.type === null + ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON())) + : [this.type, ...this.#parts.map(p => p.toJSON())]; + if (this.isStart() && !this.type) + ret.unshift([]); + if (this.isEnd() && + (this === this.#root || + (this.#root.#filledNegs && this.#parent?.type === '!'))) { + ret.push({}); + } + return ret; + } + isStart() { + if (this.#root === this) + return true; + // if (this.type) return !!this.#parent?.isStart() + if (!this.#parent?.isStart()) + return false; + if (this.#parentIndex === 0) + return true; + // if everything AHEAD of this is a negation, then it's still the "start" + const p = this.#parent; + for (let i = 0; i < this.#parentIndex; i++) { + const pp = p.#parts[i]; + if (!(pp instanceof AST && pp.type === '!')) { + return false; + } + } + return true; + } + isEnd() { + if (this.#root === this) + return true; + if (this.#parent?.type === '!') + return true; + if (!this.#parent?.isEnd()) + return false; + if (!this.type) + return this.#parent?.isEnd(); + // if not root, it'll always have a parent + /* c8 ignore start */ + const pl = this.#parent ? this.#parent.#parts.length : 0; + /* c8 ignore stop */ + return this.#parentIndex === pl - 1; + } + copyIn(part) { + if (typeof part === 'string') + this.push(part); + else + this.push(part.clone(this)); + } + clone(parent) { + const c = new AST(this.type, parent); + for (const p of this.#parts) { + c.copyIn(p); + } + return c; + } + static #parseAST(str, ast, pos, opt) { + let escaping = false; + let inBrace = false; + let braceStart = -1; + let braceNeg = false; + if (ast.type === null) { + // outside of a extglob, append until we find a start + let i = pos; + let acc = ''; + while (i < str.length) { + const c = str.charAt(i++); + // still accumulate escapes at this point, but we do ignore + // starts that are escaped + if (escaping || c === '\\') { + escaping = !escaping; + acc += c; + continue; + } + if (inBrace) { + if (i === braceStart + 1) { + if (c === '^' || c === '!') { + braceNeg = true; + } + } + else if (c === ']' && !(i === braceStart + 2 && braceNeg)) { + inBrace = false; + } + acc += c; + continue; + } + else if (c === '[') { + inBrace = true; + braceStart = i; + braceNeg = false; + acc += c; + continue; + } + if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') { + ast.push(acc); + acc = ''; + const ext = new AST(c, ast); + i = AST.#parseAST(str, ext, i, opt); + ast.push(ext); + continue; + } + acc += c; + } + ast.push(acc); + return i; + } + // some kind of extglob, pos is at the ( + // find the next | or ) + let i = pos + 1; + let part = new AST(null, ast); + const parts = []; + let acc = ''; + while (i < str.length) { + const c = str.charAt(i++); + // still accumulate escapes at this point, but we do ignore + // starts that are escaped + if (escaping || c === '\\') { + escaping = !escaping; + acc += c; + continue; + } + if (inBrace) { + if (i === braceStart + 1) { + if (c === '^' || c === '!') { + braceNeg = true; + } + } + else if (c === ']' && !(i === braceStart + 2 && braceNeg)) { + inBrace = false; + } + acc += c; + continue; + } + else if (c === '[') { + inBrace = true; + braceStart = i; + braceNeg = false; + acc += c; + continue; + } + if (isExtglobType(c) && str.charAt(i) === '(') { + part.push(acc); + acc = ''; + const ext = new AST(c, part); + part.push(ext); + i = AST.#parseAST(str, ext, i, opt); + continue; + } + if (c === '|') { + part.push(acc); + acc = ''; + parts.push(part); + part = new AST(null, ast); + continue; + } + if (c === ')') { + if (acc === '' && ast.#parts.length === 0) { + ast.#emptyExt = true; + } + part.push(acc); + acc = ''; + ast.push(...parts, part); + return i; + } + acc += c; + } + // unfinished extglob + // if we got here, it was a malformed extglob! not an extglob, but + // maybe something else in there. + ast.type = null; + ast.#hasMagic = undefined; + ast.#parts = [str.substring(pos - 1)]; + return i; + } + static fromGlob(pattern, options = {}) { + const ast = new AST(null, undefined, options); + AST.#parseAST(pattern, ast, 0, options); + return ast; + } + // returns the regular expression if there's magic, or the unescaped + // string if not. + toMMPattern() { + // should only be called on root + /* c8 ignore start */ + if (this !== this.#root) + return this.#root.toMMPattern(); + /* c8 ignore stop */ + const glob = this.toString(); + const [re, body, hasMagic, uflag] = this.toRegExpSource(); + // if we're in nocase mode, and not nocaseMagicOnly, then we do + // still need a regular expression if we have to case-insensitively + // match capital/lowercase characters. + const anyMagic = hasMagic || + this.#hasMagic || + (this.#options.nocase && + !this.#options.nocaseMagicOnly && + glob.toUpperCase() !== glob.toLowerCase()); + if (!anyMagic) { + return body; + } + const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : ''); + return Object.assign(new RegExp(`^${re}$`, flags), { + _src: re, + _glob: glob, + }); + } + get options() { + return this.#options; + } + // returns the string match, the regexp source, whether there's magic + // in the regexp (so a regular expression is required) and whether or + // not the uflag is needed for the regular expression (for posix classes) + // TODO: instead of injecting the start/end at this point, just return + // the BODY of the regexp, along with the start/end portions suitable + // for binding the start/end in either a joined full-path makeRe context + // (where we bind to (^|/), or a standalone matchPart context (where + // we bind to ^, and not /). Otherwise slashes get duped! + // + // In part-matching mode, the start is: + // - if not isStart: nothing + // - if traversal possible, but not allowed: ^(?!\.\.?$) + // - if dots allowed or not possible: ^ + // - if dots possible and not allowed: ^(?!\.) + // end is: + // - if not isEnd(): nothing + // - else: $ + // + // In full-path matching mode, we put the slash at the START of the + // pattern, so start is: + // - if first pattern: same as part-matching mode + // - if not isStart(): nothing + // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/)) + // - if dots allowed or not possible: / + // - if dots possible and not allowed: /(?!\.) + // end is: + // - if last pattern, same as part-matching mode + // - else nothing + // + // Always put the (?:$|/) on negated tails, though, because that has to be + // there to bind the end of the negated pattern portion, and it's easier to + // just stick it in now rather than try to inject it later in the middle of + // the pattern. + // + // We can just always return the same end, and leave it up to the caller + // to know whether it's going to be used joined or in parts. + // And, if the start is adjusted slightly, can do the same there: + // - if not isStart: nothing + // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$) + // - if dots allowed or not possible: (?:/|^) + // - if dots possible and not allowed: (?:/|^)(?!\.) + // + // But it's better to have a simpler binding without a conditional, for + // performance, so probably better to return both start options. + // + // Then the caller just ignores the end if it's not the first pattern, + // and the start always gets applied. + // + // But that's always going to be $ if it's the ending pattern, or nothing, + // so the caller can just attach $ at the end of the pattern when building. + // + // So the todo is: + // - better detect what kind of start is needed + // - return both flavors of starting pattern + // - attach $ at the end of the pattern when creating the actual RegExp + // + // Ah, but wait, no, that all only applies to the root when the first pattern + // is not an extglob. If the first pattern IS an extglob, then we need all + // that dot prevention biz to live in the extglob portions, because eg + // +(*|.x*) can match .xy but not .yx. + // + // So, return the two flavors if it's #root and the first child is not an + // AST, otherwise leave it to the child AST to handle it, and there, + // use the (?:^|/) style of start binding. + // + // Even simplified further: + // - Since the start for a join is eg /(?!\.) and the start for a part + // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root + // or start or whatever) and prepend ^ or / at the Regexp construction. + toRegExpSource(allowDot) { + const dot = allowDot ?? !!this.#options.dot; + if (this.#root === this) + this.#fillNegs(); + if (!this.type) { + const noEmpty = this.isStart() && this.isEnd(); + const src = this.#parts + .map(p => { + const [re, _, hasMagic, uflag] = typeof p === 'string' + ? AST.#parseGlob(p, this.#hasMagic, noEmpty) + : p.toRegExpSource(allowDot); + this.#hasMagic = this.#hasMagic || hasMagic; + this.#uflag = this.#uflag || uflag; + return re; + }) + .join(''); + let start = ''; + if (this.isStart()) { + if (typeof this.#parts[0] === 'string') { + // this is the string that will match the start of the pattern, + // so we need to protect against dots and such. + // '.' and '..' cannot match unless the pattern is that exactly, + // even if it starts with . or dot:true is set. + const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]); + if (!dotTravAllowed) { + const aps = addPatternStart; + // check if we have a possibility of matching . or .., + // and prevent that. + const needNoTrav = + // dots are allowed, and the pattern starts with [ or . + (dot && aps.has(src.charAt(0))) || + // the pattern starts with \., and then [ or . + (src.startsWith('\\.') && aps.has(src.charAt(2))) || + // the pattern starts with \.\., and then [ or . + (src.startsWith('\\.\\.') && aps.has(src.charAt(4))); + // no need to prevent dots if it can't match a dot, or if a + // sub-pattern will be preventing it anyway. + const needNoDot = !dot && !allowDot && aps.has(src.charAt(0)); + start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : ''; + } + } + } + // append the "end of path portion" pattern to negation tails + let end = ''; + if (this.isEnd() && + this.#root.#filledNegs && + this.#parent?.type === '!') { + end = '(?:$|\\/)'; + } + const final = start + src + end; + return [ + final, + unescape(src), + (this.#hasMagic = !!this.#hasMagic), + this.#uflag, + ]; + } + // We need to calculate the body *twice* if it's a repeat pattern + // at the start, once in nodot mode, then again in dot mode, so a + // pattern like *(?) can match 'x.y' + const repeated = this.type === '*' || this.type === '+'; + // some kind of extglob + const start = this.type === '!' ? '(?:(?!(?:' : '(?:'; + let body = this.#partsToRegExp(dot); + if (this.isStart() && this.isEnd() && !body && this.type !== '!') { + // invalid extglob, has to at least be *something* present, if it's + // the entire path portion. + const s = this.toString(); + this.#parts = [s]; + this.type = null; + this.#hasMagic = undefined; + return [s, unescape(this.toString()), false, false]; + } + // XXX abstract out this map method + let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot + ? '' + : this.#partsToRegExp(true); + if (bodyDotAllowed === body) { + bodyDotAllowed = ''; + } + if (bodyDotAllowed) { + body = `(?:${body})(?:${bodyDotAllowed})*?`; + } + // an empty !() is exactly equivalent to a starNoEmpty + let final = ''; + if (this.type === '!' && this.#emptyExt) { + final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty; + } + else { + const close = this.type === '!' + ? // !() must match something,but !(x) can match '' + '))' + + (this.isStart() && !dot && !allowDot ? startNoDot : '') + + star$1 + + ')' + : this.type === '@' + ? ')' + : this.type === '?' + ? ')?' + : this.type === '+' && bodyDotAllowed + ? ')' + : this.type === '*' && bodyDotAllowed + ? `)?` + : `)${this.type}`; + final = start + body + close; + } + return [ + final, + unescape(body), + (this.#hasMagic = !!this.#hasMagic), + this.#uflag, + ]; + } + #partsToRegExp(dot) { + return this.#parts + .map(p => { + // extglob ASTs should only contain parent ASTs + /* c8 ignore start */ + if (typeof p === 'string') { + throw new Error('string type in extglob ast??'); + } + /* c8 ignore stop */ + // can ignore hasMagic, because extglobs are already always magic + const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot); + this.#uflag = this.#uflag || uflag; + return re; + }) + .filter(p => !(this.isStart() && this.isEnd()) || !!p) + .join('|'); + } + static #parseGlob(glob, hasMagic, noEmpty = false) { + let escaping = false; + let re = ''; + let uflag = false; + for (let i = 0; i < glob.length; i++) { + const c = glob.charAt(i); + if (escaping) { + escaping = false; + re += (reSpecials.has(c) ? '\\' : '') + c; + continue; + } + if (c === '\\') { + if (i === glob.length - 1) { + re += '\\\\'; + } + else { + escaping = true; + } + continue; + } + if (c === '[') { + const [src, needUflag, consumed, magic] = parseClass(glob, i); + if (consumed) { + re += src; + uflag = uflag || needUflag; + i += consumed - 1; + hasMagic = hasMagic || magic; + continue; + } + } + if (c === '*') { + if (noEmpty && glob === '*') + re += starNoEmpty; + else + re += star$1; + hasMagic = true; + continue; + } + if (c === '?') { + re += qmark$1; + hasMagic = true; + continue; + } + re += regExpEscape$1(c); + } + return [re, unescape(glob), !!hasMagic, uflag]; + } +} + +/** + * Escape all magic characters in a glob pattern. + * + * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape} + * option is used, then characters are escaped by wrapping in `[]`, because + * a magic character wrapped in a character class can only be satisfied by + * that exact character. In this mode, `\` is _not_ escaped, because it is + * not interpreted as a magic character, but instead as a path separator. + */ +const escape = (s, { windowsPathsNoEscape = false, } = {}) => { + // don't need to escape +@! because we escape the parens + // that make those magic, and escaping ! as [!] isn't valid, + // because [!]] is a valid glob class meaning not ']'. + return windowsPathsNoEscape + ? s.replace(/[?*()[\]]/g, '[$&]') + : s.replace(/[?*()[\]\\]/g, '\\$&'); +}; + +const minimatch = (p, pattern, options = {}) => { + assertValidPattern(pattern); + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false; + } + return new Minimatch(pattern, options).match(p); +}; +// Optimized checking for the most common glob patterns. +const starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/; +const starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext); +const starDotExtTestDot = (ext) => (f) => f.endsWith(ext); +const starDotExtTestNocase = (ext) => { + ext = ext.toLowerCase(); + return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext); +}; +const starDotExtTestNocaseDot = (ext) => { + ext = ext.toLowerCase(); + return (f) => f.toLowerCase().endsWith(ext); +}; +const starDotStarRE = /^\*+\.\*+$/; +const starDotStarTest = (f) => !f.startsWith('.') && f.includes('.'); +const starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.'); +const dotStarRE = /^\.\*+$/; +const dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.'); +const starRE = /^\*+$/; +const starTest = (f) => f.length !== 0 && !f.startsWith('.'); +const starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..'; +const qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/; +const qmarksTestNocase = ([$0, ext = '']) => { + const noext = qmarksTestNoExt([$0]); + if (!ext) + return noext; + ext = ext.toLowerCase(); + return (f) => noext(f) && f.toLowerCase().endsWith(ext); +}; +const qmarksTestNocaseDot = ([$0, ext = '']) => { + const noext = qmarksTestNoExtDot([$0]); + if (!ext) + return noext; + ext = ext.toLowerCase(); + return (f) => noext(f) && f.toLowerCase().endsWith(ext); +}; +const qmarksTestDot = ([$0, ext = '']) => { + const noext = qmarksTestNoExtDot([$0]); + return !ext ? noext : (f) => noext(f) && f.endsWith(ext); +}; +const qmarksTest = ([$0, ext = '']) => { + const noext = qmarksTestNoExt([$0]); + return !ext ? noext : (f) => noext(f) && f.endsWith(ext); +}; +const qmarksTestNoExt = ([$0]) => { + const len = $0.length; + return (f) => f.length === len && !f.startsWith('.'); +}; +const qmarksTestNoExtDot = ([$0]) => { + const len = $0.length; + return (f) => f.length === len && f !== '.' && f !== '..'; +}; +/* c8 ignore start */ +const defaultPlatform = (typeof process === 'object' && process + ? (typeof process.env === 'object' && + process.env && + process.env.__MINIMATCH_TESTING_PLATFORM__) || + process.platform + : 'posix'); +const path = { + win32: { sep: '\\' }, + posix: { sep: '/' }, +}; +/* c8 ignore stop */ +const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep; +minimatch.sep = sep; +const GLOBSTAR = Symbol('globstar **'); +minimatch.GLOBSTAR = GLOBSTAR; +// any single thing other than / +// don't need to escape / when using new RegExp() +const qmark = '[^/]'; +// * => any number of characters +const star = qmark + '*?'; +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +const twoStarDot = '(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?'; +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +const twoStarNoDot = '(?:(?!(?:\\/|^)\\.).)*?'; +const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options); +minimatch.filter = filter; +const ext = (a, b = {}) => Object.assign({}, a, b); +const defaults = (def) => { + if (!def || typeof def !== 'object' || !Object.keys(def).length) { + return minimatch; + } + const orig = minimatch; + const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options)); + return Object.assign(m, { + Minimatch: class Minimatch extends orig.Minimatch { + constructor(pattern, options = {}) { + super(pattern, ext(def, options)); + } + static defaults(options) { + return orig.defaults(ext(def, options)).Minimatch; + } + }, + AST: class AST extends orig.AST { + /* c8 ignore start */ + constructor(type, parent, options = {}) { + super(type, parent, ext(def, options)); + } + /* c8 ignore stop */ + static fromGlob(pattern, options = {}) { + return orig.AST.fromGlob(pattern, ext(def, options)); + } + }, + unescape: (s, options = {}) => orig.unescape(s, ext(def, options)), + escape: (s, options = {}) => orig.escape(s, ext(def, options)), + filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)), + defaults: (options) => orig.defaults(ext(def, options)), + makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)), + braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)), + match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)), + sep: orig.sep, + GLOBSTAR: GLOBSTAR, + }); +}; +minimatch.defaults = defaults; +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +const braceExpand = (pattern, options = {}) => { + assertValidPattern(pattern); + // Thanks to Yeting Li <https://github.com/yetingli> for + // improving this regexp to avoid a ReDOS vulnerability. + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + // shortcut. no need to expand. + return [pattern]; + } + return expand(pattern); +}; +minimatch.braceExpand = braceExpand; +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe(); +minimatch.makeRe = makeRe; +const match = (list, pattern, options = {}) => { + const mm = new Minimatch(pattern, options); + list = list.filter(f => mm.match(f)); + if (mm.options.nonull && !list.length) { + list.push(pattern); + } + return list; +}; +minimatch.match = match; +// replace stuff like \* with * +const globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/; +const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); +class Minimatch { + options; + set; + pattern; + windowsPathsNoEscape; + nonegate; + negate; + comment; + empty; + preserveMultipleSlashes; + partial; + globSet; + globParts; + nocase; + isWindows; + platform; + windowsNoMagicRoot; + regexp; + constructor(pattern, options = {}) { + assertValidPattern(pattern); + options = options || {}; + this.options = options; + this.pattern = pattern; + this.platform = options.platform || defaultPlatform; + this.isWindows = this.platform === 'win32'; + this.windowsPathsNoEscape = + !!options.windowsPathsNoEscape || options.allowWindowsEscape === false; + if (this.windowsPathsNoEscape) { + this.pattern = this.pattern.replace(/\\/g, '/'); + } + this.preserveMultipleSlashes = !!options.preserveMultipleSlashes; + this.regexp = null; + this.negate = false; + this.nonegate = !!options.nonegate; + this.comment = false; + this.empty = false; + this.partial = !!options.partial; + this.nocase = !!this.options.nocase; + this.windowsNoMagicRoot = + options.windowsNoMagicRoot !== undefined + ? options.windowsNoMagicRoot + : !!(this.isWindows && this.nocase); + this.globSet = []; + this.globParts = []; + this.set = []; + // make the set of regexps etc. + this.make(); + } + hasMagic() { + if (this.options.magicalBraces && this.set.length > 1) { + return true; + } + for (const pattern of this.set) { + for (const part of pattern) { + if (typeof part !== 'string') + return true; + } + } + return false; + } + debug(..._) { } + make() { + const pattern = this.pattern; + const options = this.options; + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true; + return; + } + if (!pattern) { + this.empty = true; + return; + } + // step 1: figure out negation, etc. + this.parseNegate(); + // step 2: expand braces + this.globSet = [...new Set(this.braceExpand())]; + if (options.debug) { + this.debug = (...args) => console.error(...args); + } + this.debug(this.pattern, this.globSet); + // step 3: now we have a set, so turn each one into a series of + // path-portion matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + // + // First, we preprocess to make the glob pattern sets a bit simpler + // and deduped. There are some perf-killing patterns that can cause + // problems with a glob walk, but we can simplify them down a bit. + const rawGlobParts = this.globSet.map(s => this.slashSplit(s)); + this.globParts = this.preprocess(rawGlobParts); + this.debug(this.pattern, this.globParts); + // glob --> regexps + let set = this.globParts.map((s, _, __) => { + if (this.isWindows && this.windowsNoMagicRoot) { + // check if it's a drive or unc path. + const isUNC = s[0] === '' && + s[1] === '' && + (s[2] === '?' || !globMagic.test(s[2])) && + !globMagic.test(s[3]); + const isDrive = /^[a-z]:/i.test(s[0]); + if (isUNC) { + return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))]; + } + else if (isDrive) { + return [s[0], ...s.slice(1).map(ss => this.parse(ss))]; + } + } + return s.map(ss => this.parse(ss)); + }); + this.debug(this.pattern, set); + // filter out everything that didn't compile properly. + this.set = set.filter(s => s.indexOf(false) === -1); + // do not treat the ? in UNC paths as magic + if (this.isWindows) { + for (let i = 0; i < this.set.length; i++) { + const p = this.set[i]; + if (p[0] === '' && + p[1] === '' && + this.globParts[i][2] === '?' && + typeof p[3] === 'string' && + /^[a-z]:$/i.test(p[3])) { + p[2] = '?'; + } + } + } + this.debug(this.pattern, this.set); + } + // various transforms to equivalent pattern sets that are + // faster to process in a filesystem walk. The goal is to + // eliminate what we can, and push all ** patterns as far + // to the right as possible, even if it increases the number + // of patterns that we have to process. + preprocess(globParts) { + // if we're not in globstar mode, then turn all ** into * + if (this.options.noglobstar) { + for (let i = 0; i < globParts.length; i++) { + for (let j = 0; j < globParts[i].length; j++) { + if (globParts[i][j] === '**') { + globParts[i][j] = '*'; + } + } + } + } + const { optimizationLevel = 1 } = this.options; + if (optimizationLevel >= 2) { + // aggressive optimization for the purpose of fs walking + globParts = this.firstPhasePreProcess(globParts); + globParts = this.secondPhasePreProcess(globParts); + } + else if (optimizationLevel >= 1) { + // just basic optimizations to remove some .. parts + globParts = this.levelOneOptimize(globParts); + } + else { + // just collapse multiple ** portions into one + globParts = this.adjascentGlobstarOptimize(globParts); + } + return globParts; + } + // just get rid of adjascent ** portions + adjascentGlobstarOptimize(globParts) { + return globParts.map(parts => { + let gs = -1; + while (-1 !== (gs = parts.indexOf('**', gs + 1))) { + let i = gs; + while (parts[i + 1] === '**') { + i++; + } + if (i !== gs) { + parts.splice(gs, i - gs); + } + } + return parts; + }); + } + // get rid of adjascent ** and resolve .. portions + levelOneOptimize(globParts) { + return globParts.map(parts => { + parts = parts.reduce((set, part) => { + const prev = set[set.length - 1]; + if (part === '**' && prev === '**') { + return set; + } + if (part === '..') { + if (prev && prev !== '..' && prev !== '.' && prev !== '**') { + set.pop(); + return set; + } + } + set.push(part); + return set; + }, []); + return parts.length === 0 ? [''] : parts; + }); + } + levelTwoFileOptimize(parts) { + if (!Array.isArray(parts)) { + parts = this.slashSplit(parts); + } + let didSomething = false; + do { + didSomething = false; + // <pre>/<e>/<rest> -> <pre>/<rest> + if (!this.preserveMultipleSlashes) { + for (let i = 1; i < parts.length - 1; i++) { + const p = parts[i]; + // don't squeeze out UNC patterns + if (i === 1 && p === '' && parts[0] === '') + continue; + if (p === '.' || p === '') { + didSomething = true; + parts.splice(i, 1); + i--; + } + } + if (parts[0] === '.' && + parts.length === 2 && + (parts[1] === '.' || parts[1] === '')) { + didSomething = true; + parts.pop(); + } + } + // <pre>/<p>/../<rest> -> <pre>/<rest> + let dd = 0; + while (-1 !== (dd = parts.indexOf('..', dd + 1))) { + const p = parts[dd - 1]; + if (p && p !== '.' && p !== '..' && p !== '**') { + didSomething = true; + parts.splice(dd - 1, 2); + dd -= 2; + } + } + } while (didSomething); + return parts.length === 0 ? [''] : parts; + } + // First phase: single-pattern processing + // <pre> is 1 or more portions + // <rest> is 1 or more portions + // <p> is any portion other than ., .., '', or ** + // <e> is . or '' + // + // **/.. is *brutal* for filesystem walking performance, because + // it effectively resets the recursive walk each time it occurs, + // and ** cannot be reduced out by a .. pattern part like a regexp + // or most strings (other than .., ., and '') can be. + // + // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>} + // <pre>/<e>/<rest> -> <pre>/<rest> + // <pre>/<p>/../<rest> -> <pre>/<rest> + // **/**/<rest> -> **/<rest> + // + // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow + // this WOULD be allowed if ** did follow symlinks, or * didn't + firstPhasePreProcess(globParts) { + let didSomething = false; + do { + didSomething = false; + // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>} + for (let parts of globParts) { + let gs = -1; + while (-1 !== (gs = parts.indexOf('**', gs + 1))) { + let gss = gs; + while (parts[gss + 1] === '**') { + // <pre>/**/**/<rest> -> <pre>/**/<rest> + gss++; + } + // eg, if gs is 2 and gss is 4, that means we have 3 ** + // parts, and can remove 2 of them. + if (gss > gs) { + parts.splice(gs + 1, gss - gs); + } + let next = parts[gs + 1]; + const p = parts[gs + 2]; + const p2 = parts[gs + 3]; + if (next !== '..') + continue; + if (!p || + p === '.' || + p === '..' || + !p2 || + p2 === '.' || + p2 === '..') { + continue; + } + didSomething = true; + // edit parts in place, and push the new one + parts.splice(gs, 1); + const other = parts.slice(0); + other[gs] = '**'; + globParts.push(other); + gs--; + } + // <pre>/<e>/<rest> -> <pre>/<rest> + if (!this.preserveMultipleSlashes) { + for (let i = 1; i < parts.length - 1; i++) { + const p = parts[i]; + // don't squeeze out UNC patterns + if (i === 1 && p === '' && parts[0] === '') + continue; + if (p === '.' || p === '') { + didSomething = true; + parts.splice(i, 1); + i--; + } + } + if (parts[0] === '.' && + parts.length === 2 && + (parts[1] === '.' || parts[1] === '')) { + didSomething = true; + parts.pop(); + } + } + // <pre>/<p>/../<rest> -> <pre>/<rest> + let dd = 0; + while (-1 !== (dd = parts.indexOf('..', dd + 1))) { + const p = parts[dd - 1]; + if (p && p !== '.' && p !== '..' && p !== '**') { + didSomething = true; + const needDot = dd === 1 && parts[dd + 1] === '**'; + const splin = needDot ? ['.'] : []; + parts.splice(dd - 1, 2, ...splin); + if (parts.length === 0) + parts.push(''); + dd -= 2; + } + } + } + } while (didSomething); + return globParts; + } + // second phase: multi-pattern dedupes + // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest> + // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest> + // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest> + // + // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest> + // ^-- not valid because ** doens't follow symlinks + secondPhasePreProcess(globParts) { + for (let i = 0; i < globParts.length - 1; i++) { + for (let j = i + 1; j < globParts.length; j++) { + const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes); + if (matched) { + globParts[i] = []; + globParts[j] = matched; + break; + } + } + } + return globParts.filter(gs => gs.length); + } + partsMatch(a, b, emptyGSMatch = false) { + let ai = 0; + let bi = 0; + let result = []; + let which = ''; + while (ai < a.length && bi < b.length) { + if (a[ai] === b[bi]) { + result.push(which === 'b' ? b[bi] : a[ai]); + ai++; + bi++; + } + else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) { + result.push(a[ai]); + ai++; + } + else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) { + result.push(b[bi]); + bi++; + } + else if (a[ai] === '*' && + b[bi] && + (this.options.dot || !b[bi].startsWith('.')) && + b[bi] !== '**') { + if (which === 'b') + return false; + which = 'a'; + result.push(a[ai]); + ai++; + bi++; + } + else if (b[bi] === '*' && + a[ai] && + (this.options.dot || !a[ai].startsWith('.')) && + a[ai] !== '**') { + if (which === 'a') + return false; + which = 'b'; + result.push(b[bi]); + ai++; + bi++; + } + else { + return false; + } + } + // if we fall out of the loop, it means they two are identical + // as long as their lengths match + return a.length === b.length && result; + } + parseNegate() { + if (this.nonegate) + return; + const pattern = this.pattern; + let negate = false; + let negateOffset = 0; + for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) { + negate = !negate; + negateOffset++; + } + if (negateOffset) + this.pattern = pattern.slice(negateOffset); + this.negate = negate; + } + // set partial to true to test if, for example, + // "/a/b" matches the start of "/*/b/*/d" + // Partial means, if you run out of file before you run + // out of pattern, then that's fine, as long as all + // the parts match. + matchOne(file, pattern, partial = false) { + const options = this.options; + // UNC paths like //?/X:/... can match X:/... and vice versa + // Drive letters in absolute drive or unc paths are always compared + // case-insensitively. + if (this.isWindows) { + const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]); + const fileUNC = !fileDrive && + file[0] === '' && + file[1] === '' && + file[2] === '?' && + /^[a-z]:$/i.test(file[3]); + const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]); + const patternUNC = !patternDrive && + pattern[0] === '' && + pattern[1] === '' && + pattern[2] === '?' && + typeof pattern[3] === 'string' && + /^[a-z]:$/i.test(pattern[3]); + const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined; + const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined; + if (typeof fdi === 'number' && typeof pdi === 'number') { + const [fd, pd] = [file[fdi], pattern[pdi]]; + if (fd.toLowerCase() === pd.toLowerCase()) { + pattern[pdi] = fd; + if (pdi > fdi) { + pattern = pattern.slice(pdi); + } + else if (fdi > pdi) { + file = file.slice(fdi); + } + } + } + } + // resolve and reduce . and .. portions in the file as well. + // dont' need to do the second phase, because it's only one string[] + const { optimizationLevel = 1 } = this.options; + if (optimizationLevel >= 2) { + file = this.levelTwoFileOptimize(file); + } + this.debug('matchOne', this, { file, pattern }); + this.debug('matchOne', file.length, pattern.length); + for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) { + this.debug('matchOne loop'); + var p = pattern[pi]; + var f = file[fi]; + this.debug(pattern, p, f); + // should be impossible. + // some invalid regexp stuff in the set. + /* c8 ignore start */ + if (p === false) { + return false; + } + /* c8 ignore stop */ + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]); + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi; + var pr = pi + 1; + if (pr === pl) { + this.debug('** at the end'); + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || + file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) + return false; + } + return true; + } + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr]; + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee); + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee); + // found a match. + return true; + } + else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || + swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr); + break; + } + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue'); + fr++; + } + } + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + /* c8 ignore start */ + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr); + if (fr === fl) { + return true; + } + } + /* c8 ignore stop */ + return false; + } + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + let hit; + if (typeof p === 'string') { + hit = f === p; + this.debug('string match', p, f, hit); + } + else { + hit = p.test(f); + this.debug('pattern match', p, f, hit); + } + if (!hit) + return false; + } + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true; + } + else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial; + } + else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + return fi === fl - 1 && file[fi] === ''; + /* c8 ignore start */ + } + else { + // should be unreachable. + throw new Error('wtf?'); + } + /* c8 ignore stop */ + } + braceExpand() { + return braceExpand(this.pattern, this.options); + } + parse(pattern) { + assertValidPattern(pattern); + const options = this.options; + // shortcuts + if (pattern === '**') + return GLOBSTAR; + if (pattern === '') + return ''; + // far and away, the most common glob pattern parts are + // *, *.*, and *.<ext> Add a fast check method for those. + let m; + let fastTest = null; + if ((m = pattern.match(starRE))) { + fastTest = options.dot ? starTestDot : starTest; + } + else if ((m = pattern.match(starDotExtRE))) { + fastTest = (options.nocase + ? options.dot + ? starDotExtTestNocaseDot + : starDotExtTestNocase + : options.dot + ? starDotExtTestDot + : starDotExtTest)(m[1]); + } + else if ((m = pattern.match(qmarksRE))) { + fastTest = (options.nocase + ? options.dot + ? qmarksTestNocaseDot + : qmarksTestNocase + : options.dot + ? qmarksTestDot + : qmarksTest)(m); + } + else if ((m = pattern.match(starDotStarRE))) { + fastTest = options.dot ? starDotStarTestDot : starDotStarTest; + } + else if ((m = pattern.match(dotStarRE))) { + fastTest = dotStarTest; + } + const re = AST.fromGlob(pattern, this.options).toMMPattern(); + if (fastTest && typeof re === 'object') { + // Avoids overriding in frozen environments + Reflect.defineProperty(re, 'test', { value: fastTest }); + } + return re; + } + makeRe() { + if (this.regexp || this.regexp === false) + return this.regexp; + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + const set = this.set; + if (!set.length) { + this.regexp = false; + return this.regexp; + } + const options = this.options; + const twoStar = options.noglobstar + ? star + : options.dot + ? twoStarDot + : twoStarNoDot; + const flags = new Set(options.nocase ? ['i'] : []); + // regexpify non-globstar patterns + // if ** is only item, then we just do one twoStar + // if ** is first, and there are more, prepend (\/|twoStar\/)? to next + // if ** is last, append (\/twoStar|) to previous + // if ** is in the middle, append (\/|\/twoStar\/) to previous + // then filter out GLOBSTAR symbols + let re = set + .map(pattern => { + const pp = pattern.map(p => { + if (p instanceof RegExp) { + for (const f of p.flags.split('')) + flags.add(f); + } + return typeof p === 'string' + ? regExpEscape(p) + : p === GLOBSTAR + ? GLOBSTAR + : p._src; + }); + pp.forEach((p, i) => { + const next = pp[i + 1]; + const prev = pp[i - 1]; + if (p !== GLOBSTAR || prev === GLOBSTAR) { + return; + } + if (prev === undefined) { + if (next !== undefined && next !== GLOBSTAR) { + pp[i + 1] = '(?:\\/|' + twoStar + '\\/)?' + next; + } + else { + pp[i] = twoStar; + } + } + else if (next === undefined) { + pp[i - 1] = prev + '(?:\\/|' + twoStar + ')?'; + } + else if (next !== GLOBSTAR) { + pp[i - 1] = prev + '(?:\\/|\\/' + twoStar + '\\/)' + next; + pp[i + 1] = GLOBSTAR; + } + }); + return pp.filter(p => p !== GLOBSTAR).join('/'); + }) + .join('|'); + // need to wrap in parens if we had more than one thing with |, + // otherwise only the first will be anchored to ^ and the last to $ + const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']; + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^' + open + re + close + '$'; + // can match anything, as long as it's not this. + if (this.negate) + re = '^(?!' + re + ').+$'; + try { + this.regexp = new RegExp(re, [...flags].join('')); + /* c8 ignore start */ + } + catch (ex) { + // should be impossible + this.regexp = false; + } + /* c8 ignore stop */ + return this.regexp; + } + slashSplit(p) { + // if p starts with // on windows, we preserve that + // so that UNC paths aren't broken. Otherwise, any number of + // / characters are coalesced into one, unless + // preserveMultipleSlashes is set to true. + if (this.preserveMultipleSlashes) { + return p.split('/'); + } + else if (this.isWindows && /^\/\/[^\/]+/.test(p)) { + // add an extra '' for the one we lose + return ['', ...p.split(/\/+/)]; + } + else { + return p.split(/\/+/); + } + } + match(f, partial = this.partial) { + this.debug('match', f, this.pattern); + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) { + return false; + } + if (this.empty) { + return f === ''; + } + if (f === '/' && partial) { + return true; + } + const options = this.options; + // windows: need to use /, not \ + if (this.isWindows) { + f = f.split('\\').join('/'); + } + // treat the test path as a set of pathparts. + const ff = this.slashSplit(f); + this.debug(this.pattern, 'split', ff); + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + const set = this.set; + this.debug(this.pattern, 'set', set); + // Find the basename of the path by looking for the last non-empty segment + let filename = ff[ff.length - 1]; + if (!filename) { + for (let i = ff.length - 2; !filename && i >= 0; i--) { + filename = ff[i]; + } + } + for (let i = 0; i < set.length; i++) { + const pattern = set[i]; + let file = ff; + if (options.matchBase && pattern.length === 1) { + file = [filename]; + } + const hit = this.matchOne(file, pattern, partial); + if (hit) { + if (options.flipNegate) { + return true; + } + return !this.negate; + } + } + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) { + return false; + } + return this.negate; + } + static defaults(def) { + return minimatch.defaults(def).Minimatch; + } +} +/* c8 ignore stop */ +minimatch.AST = AST; +minimatch.Minimatch = Minimatch; +minimatch.escape = escape; +minimatch.unescape = unescape; + +class TypeScope { + constructor(filename, source, offset = 0, imports = /* @__PURE__ */ Object.create(null), types = /* @__PURE__ */ Object.create(null), declares = /* @__PURE__ */ Object.create(null)) { + this.filename = filename; + this.source = source; + this.offset = offset; + this.imports = imports; + this.types = types; + this.declares = declares; + this.isGenericScope = false; + this.resolvedImportSources = /* @__PURE__ */ Object.create(null); + this.exportedTypes = /* @__PURE__ */ Object.create(null); + this.exportedDeclares = /* @__PURE__ */ Object.create(null); + } +} +function resolveTypeElements(ctx, node, scope, typeParameters) { + const canCache = !typeParameters; + if (canCache && node._resolvedElements) { + return node._resolvedElements; + } + const resolved = innerResolveTypeElements( + ctx, + node, + node._ownerScope || scope || ctxToScope(ctx), + typeParameters + ); + return canCache ? node._resolvedElements = resolved : resolved; +} +function innerResolveTypeElements(ctx, node, scope, typeParameters) { + var _a, _b; + if (node.leadingComments && node.leadingComments.some((c) => c.value.includes("@vue-ignore"))) { + return { props: {} }; + } + switch (node.type) { + case "TSTypeLiteral": + return typeElementsToMap(ctx, node.members, scope, typeParameters); + case "TSInterfaceDeclaration": + return resolveInterfaceMembers(ctx, node, scope, typeParameters); + case "TSTypeAliasDeclaration": + case "TSTypeAnnotation": + case "TSParenthesizedType": + return resolveTypeElements( + ctx, + node.typeAnnotation, + scope, + typeParameters + ); + case "TSFunctionType": { + return { props: {}, calls: [node] }; + } + case "TSUnionType": + case "TSIntersectionType": + return mergeElements( + node.types.map((t) => resolveTypeElements(ctx, t, scope, typeParameters)), + node.type + ); + case "TSMappedType": + return resolveMappedType(ctx, node, scope, typeParameters); + case "TSIndexedAccessType": { + const types = resolveIndexType(ctx, node, scope); + return mergeElements( + types.map((t) => resolveTypeElements(ctx, t, t._ownerScope)), + "TSUnionType" + ); + } + case "TSExpressionWithTypeArguments": + // referenced by interface extends + case "TSTypeReference": { + const typeName = getReferenceName(node); + if ((typeName === "ExtractPropTypes" || typeName === "ExtractPublicPropTypes") && node.typeParameters && ((_a = scope.imports[typeName]) == null ? void 0 : _a.source) === "vue") { + return resolveExtractPropTypes( + resolveTypeElements( + ctx, + node.typeParameters.params[0], + scope, + typeParameters + ), + scope + ); + } + const resolved = resolveTypeReference(ctx, node, scope); + if (resolved) { + let typeParams; + if ((resolved.type === "TSTypeAliasDeclaration" || resolved.type === "TSInterfaceDeclaration") && resolved.typeParameters && node.typeParameters) { + typeParams = /* @__PURE__ */ Object.create(null); + resolved.typeParameters.params.forEach((p, i) => { + let param = typeParameters && typeParameters[p.name]; + if (!param) param = node.typeParameters.params[i]; + typeParams[p.name] = param; + }); + } + return resolveTypeElements( + ctx, + resolved, + resolved._ownerScope, + typeParams + ); + } else { + if (typeof typeName === "string") { + if (typeParameters && typeParameters[typeName]) { + return resolveTypeElements( + ctx, + typeParameters[typeName], + scope, + typeParameters + ); + } + if ( + // @ts-expect-error + SupportedBuiltinsSet.has(typeName) + ) { + return resolveBuiltin( + ctx, + node, + typeName, + scope, + typeParameters + ); + } else if (typeName === "ReturnType" && node.typeParameters) { + const ret = resolveReturnType( + ctx, + node.typeParameters.params[0], + scope + ); + if (ret) { + return resolveTypeElements(ctx, ret, scope); + } + } + } + return ctx.error( + `Unresolvable type reference or unsupported built-in utility type`, + node, + scope + ); + } + } + case "TSImportType": { + if (getId(node.argument) === "vue" && ((_b = node.qualifier) == null ? void 0 : _b.type) === "Identifier" && node.qualifier.name === "ExtractPropTypes" && node.typeParameters) { + return resolveExtractPropTypes( + resolveTypeElements(ctx, node.typeParameters.params[0], scope), + scope + ); + } + const sourceScope = importSourceToScope( + ctx, + node.argument, + scope, + node.argument.value + ); + const resolved = resolveTypeReference(ctx, node, sourceScope); + if (resolved) { + return resolveTypeElements(ctx, resolved, resolved._ownerScope); + } + break; + } + case "TSTypeQuery": + { + const resolved = resolveTypeReference(ctx, node, scope); + if (resolved) { + return resolveTypeElements(ctx, resolved, resolved._ownerScope); + } + } + break; + } + return ctx.error(`Unresolvable type: ${node.type}`, node, scope); +} +function typeElementsToMap(ctx, elements, scope = ctxToScope(ctx), typeParameters) { + const res = { props: {} }; + for (const e of elements) { + if (e.type === "TSPropertySignature" || e.type === "TSMethodSignature") { + if (typeParameters) { + scope = createChildScope(scope); + scope.isGenericScope = true; + Object.assign(scope.types, typeParameters); + } + e._ownerScope = scope; + const name = getId(e.key); + if (name && !e.computed) { + res.props[name] = e; + } else if (e.key.type === "TemplateLiteral") { + for (const key of resolveTemplateKeys(ctx, e.key, scope)) { + res.props[key] = e; + } + } else { + ctx.error( + `Unsupported computed key in type referenced by a macro`, + e.key, + scope + ); + } + } else if (e.type === "TSCallSignatureDeclaration") { + (res.calls || (res.calls = [])).push(e); + } + } + return res; +} +function mergeElements(maps, type) { + if (maps.length === 1) return maps[0]; + const res = { props: {} }; + const { props: baseProps } = res; + for (const { props, calls } of maps) { + for (const key in props) { + if (!shared.hasOwn(baseProps, key)) { + baseProps[key] = props[key]; + } else { + baseProps[key] = createProperty( + baseProps[key].key, + { + type, + // @ts-expect-error + types: [baseProps[key], props[key]] + }, + baseProps[key]._ownerScope, + baseProps[key].optional || props[key].optional + ); + } + } + if (calls) { + (res.calls || (res.calls = [])).push(...calls); + } + } + return res; +} +function createProperty(key, typeAnnotation, scope, optional) { + return { + type: "TSPropertySignature", + key, + kind: "get", + optional, + typeAnnotation: { + type: "TSTypeAnnotation", + typeAnnotation + }, + _ownerScope: scope + }; +} +function resolveInterfaceMembers(ctx, node, scope, typeParameters) { + const base = typeElementsToMap( + ctx, + node.body.body, + node._ownerScope, + typeParameters + ); + if (node.extends) { + for (const ext of node.extends) { + try { + const { props, calls } = resolveTypeElements(ctx, ext, scope); + for (const key in props) { + if (!shared.hasOwn(base.props, key)) { + base.props[key] = props[key]; + } + } + if (calls) { + ; + (base.calls || (base.calls = [])).push(...calls); + } + } catch (e) { + ctx.error( + `Failed to resolve extends base type. +If this previously worked in 3.2, you can instruct the compiler to ignore this extend by adding /* @vue-ignore */ before it, for example: + +interface Props extends /* @vue-ignore */ Base {} + +Note: both in 3.2 or with the ignore, the properties in the base type are treated as fallthrough attrs at runtime.`, + ext, + scope + ); + } + } + } + return base; +} +function resolveMappedType(ctx, node, scope, typeParameters) { + const res = { props: {} }; + let keys; + if (node.nameType) { + const { name, constraint } = node.typeParameter; + scope = createChildScope(scope); + Object.assign(scope.types, { ...typeParameters, [name]: constraint }); + keys = resolveStringType(ctx, node.nameType, scope); + } else { + keys = resolveStringType(ctx, node.typeParameter.constraint, scope); + } + for (const key of keys) { + res.props[key] = createProperty( + { + type: "Identifier", + name: key + }, + node.typeAnnotation, + scope, + !!node.optional + ); + } + return res; +} +function resolveIndexType(ctx, node, scope) { + var _a, _b; + if (node.indexType.type === "TSNumberKeyword") { + return resolveArrayElementType(ctx, node.objectType, scope); + } + const { indexType, objectType } = node; + const types = []; + let keys; + let resolved; + if (indexType.type === "TSStringKeyword") { + resolved = resolveTypeElements(ctx, objectType, scope); + keys = Object.keys(resolved.props); + } else { + keys = resolveStringType(ctx, indexType, scope); + resolved = resolveTypeElements(ctx, objectType, scope); + } + for (const key of keys) { + const targetType = (_b = (_a = resolved.props[key]) == null ? void 0 : _a.typeAnnotation) == null ? void 0 : _b.typeAnnotation; + if (targetType) { + targetType._ownerScope = resolved.props[key]._ownerScope; + types.push(targetType); + } + } + return types; +} +function resolveArrayElementType(ctx, node, scope) { + if (node.type === "TSArrayType") { + return [node.elementType]; + } + if (node.type === "TSTupleType") { + return node.elementTypes.map( + (t) => t.type === "TSNamedTupleMember" ? t.elementType : t + ); + } + if (node.type === "TSTypeReference") { + if (getReferenceName(node) === "Array" && node.typeParameters) { + return node.typeParameters.params; + } else { + const resolved = resolveTypeReference(ctx, node, scope); + if (resolved) { + return resolveArrayElementType(ctx, resolved, scope); + } + } + } + return ctx.error( + "Failed to resolve element type from target type", + node, + scope + ); +} +function resolveStringType(ctx, node, scope, typeParameters) { + switch (node.type) { + case "StringLiteral": + return [node.value]; + case "TSLiteralType": + return resolveStringType(ctx, node.literal, scope, typeParameters); + case "TSUnionType": + return node.types.map((t) => resolveStringType(ctx, t, scope, typeParameters)).flat(); + case "TemplateLiteral": { + return resolveTemplateKeys(ctx, node, scope); + } + case "TSTypeReference": { + const resolved = resolveTypeReference(ctx, node, scope); + if (resolved) { + return resolveStringType(ctx, resolved, scope, typeParameters); + } + if (node.typeName.type === "Identifier") { + const name = node.typeName.name; + if (typeParameters && typeParameters[name]) { + return resolveStringType( + ctx, + typeParameters[name], + scope, + typeParameters + ); + } + const getParam = (index = 0) => resolveStringType( + ctx, + node.typeParameters.params[index], + scope, + typeParameters + ); + switch (name) { + case "Extract": + return getParam(1); + case "Exclude": { + const excluded = getParam(1); + return getParam().filter((s) => !excluded.includes(s)); + } + case "Uppercase": + return getParam().map((s) => s.toUpperCase()); + case "Lowercase": + return getParam().map((s) => s.toLowerCase()); + case "Capitalize": + return getParam().map(shared.capitalize); + case "Uncapitalize": + return getParam().map((s) => s[0].toLowerCase() + s.slice(1)); + default: + ctx.error( + "Unsupported type when resolving index type", + node.typeName, + scope + ); + } + } + } + } + return ctx.error("Failed to resolve index type into finite keys", node, scope); +} +function resolveTemplateKeys(ctx, node, scope) { + if (!node.expressions.length) { + return [node.quasis[0].value.raw]; + } + const res = []; + const e = node.expressions[0]; + const q = node.quasis[0]; + const leading = q ? q.value.raw : ``; + const resolved = resolveStringType(ctx, e, scope); + const restResolved = resolveTemplateKeys( + ctx, + { + ...node, + expressions: node.expressions.slice(1), + quasis: q ? node.quasis.slice(1) : node.quasis + }, + scope + ); + for (const r of resolved) { + for (const rr of restResolved) { + res.push(leading + r + rr); + } + } + return res; +} +const SupportedBuiltinsSet = /* @__PURE__ */ new Set([ + "Partial", + "Required", + "Readonly", + "Pick", + "Omit" +]); +function resolveBuiltin(ctx, node, name, scope, typeParameters) { + const t = resolveTypeElements( + ctx, + node.typeParameters.params[0], + scope, + typeParameters + ); + switch (name) { + case "Partial": { + const res2 = { props: {}, calls: t.calls }; + Object.keys(t.props).forEach((key) => { + res2.props[key] = { ...t.props[key], optional: true }; + }); + return res2; + } + case "Required": { + const res2 = { props: {}, calls: t.calls }; + Object.keys(t.props).forEach((key) => { + res2.props[key] = { ...t.props[key], optional: false }; + }); + return res2; + } + case "Readonly": + return t; + case "Pick": { + const picked = resolveStringType( + ctx, + node.typeParameters.params[1], + scope, + typeParameters + ); + const res2 = { props: {}, calls: t.calls }; + for (const key of picked) { + res2.props[key] = t.props[key]; + } + return res2; + } + case "Omit": + const omitted = resolveStringType( + ctx, + node.typeParameters.params[1], + scope, + typeParameters + ); + const res = { props: {}, calls: t.calls }; + for (const key in t.props) { + if (!omitted.includes(key)) { + res.props[key] = t.props[key]; + } + } + return res; + } +} +function resolveTypeReference(ctx, node, scope, name, onlyExported = false) { + const canCache = !(scope == null ? void 0 : scope.isGenericScope); + if (canCache && node._resolvedReference) { + return node._resolvedReference; + } + const resolved = innerResolveTypeReference( + ctx, + scope || ctxToScope(ctx), + name || getReferenceName(node), + node, + onlyExported + ); + return canCache ? node._resolvedReference = resolved : resolved; +} +function innerResolveTypeReference(ctx, scope, name, node, onlyExported) { + if (typeof name === "string") { + if (scope.imports[name]) { + return resolveTypeFromImport(ctx, node, name, scope); + } else { + const lookupSource = node.type === "TSTypeQuery" ? onlyExported ? scope.exportedDeclares : scope.declares : onlyExported ? scope.exportedTypes : scope.types; + if (lookupSource[name]) { + return lookupSource[name]; + } else { + const globalScopes = resolveGlobalScope(ctx); + if (globalScopes) { + for (const s of globalScopes) { + const src = node.type === "TSTypeQuery" ? s.declares : s.types; + if (src[name]) { + (ctx.deps || (ctx.deps = /* @__PURE__ */ new Set())).add(s.filename); + return src[name]; + } + } + } + } + } + } else { + let ns = innerResolveTypeReference(ctx, scope, name[0], node, onlyExported); + if (ns) { + if (ns.type !== "TSModuleDeclaration") { + ns = ns._ns; + } + if (ns) { + const childScope = moduleDeclToScope(ctx, ns, ns._ownerScope || scope); + return innerResolveTypeReference( + ctx, + childScope, + name.length > 2 ? name.slice(1) : name[name.length - 1], + node, + !ns.declare + ); + } + } + } +} +function getReferenceName(node) { + const ref = node.type === "TSTypeReference" ? node.typeName : node.type === "TSExpressionWithTypeArguments" ? node.expression : node.type === "TSImportType" ? node.qualifier : node.exprName; + if ((ref == null ? void 0 : ref.type) === "Identifier") { + return ref.name; + } else if ((ref == null ? void 0 : ref.type) === "TSQualifiedName") { + return qualifiedNameToPath(ref); + } else { + return "default"; + } +} +function qualifiedNameToPath(node) { + if (node.type === "Identifier") { + return [node.name]; + } else { + return [...qualifiedNameToPath(node.left), node.right.name]; + } +} +function resolveGlobalScope(ctx) { + if (ctx.options.globalTypeFiles) { + const fs = resolveFS(ctx); + if (!fs) { + throw new Error("[vue/compiler-sfc] globalTypeFiles requires fs access."); + } + return ctx.options.globalTypeFiles.map( + (file) => fileToScope(ctx, normalizePath(file), true) + ); + } +} +let ts; +let loadTS; +function registerTS(_loadTS) { + loadTS = () => { + try { + return _loadTS(); + } catch (err) { + if (typeof err.message === "string" && err.message.includes("Cannot find module")) { + throw new Error( + 'Failed to load TypeScript, which is required for resolving imported types. Please make sure "typescript" is installed as a project dependency.' + ); + } else { + throw new Error( + "Failed to load TypeScript for resolving imported types." + ); + } + } + }; +} +function resolveFS(ctx) { + if (ctx.fs) { + return ctx.fs; + } + if (!ts && loadTS) { + ts = loadTS(); + } + const fs = ctx.options.fs || (ts == null ? void 0 : ts.sys); + if (!fs) { + return; + } + return ctx.fs = { + fileExists(file) { + if (file.endsWith(".vue.ts") && !file.endsWith(".d.vue.ts")) { + file = file.replace(/\.ts$/, ""); + } + return fs.fileExists(file); + }, + readFile(file) { + if (file.endsWith(".vue.ts") && !file.endsWith(".d.vue.ts")) { + file = file.replace(/\.ts$/, ""); + } + return fs.readFile(file); + }, + realpath: fs.realpath + }; +} +function resolveTypeFromImport(ctx, node, name, scope) { + const { source, imported } = scope.imports[name]; + const sourceScope = importSourceToScope(ctx, node, scope, source); + return resolveTypeReference(ctx, node, sourceScope, imported, true); +} +function importSourceToScope(ctx, node, scope, source) { + let fs; + try { + fs = resolveFS(ctx); + } catch (err) { + return ctx.error(err.message, node, scope); + } + if (!fs) { + return ctx.error( + `No fs option provided to \`compileScript\` in non-Node environment. File system access is required for resolving imported types.`, + node, + scope + ); + } + let resolved = scope.resolvedImportSources[source]; + if (!resolved) { + if (source.startsWith("..")) { + const osSpecificJoinFn = process__namespace.platform === "win32" ? path$1.join : joinPaths; + const filename = osSpecificJoinFn(path$1.dirname(scope.filename), source); + resolved = resolveExt(filename, fs); + } else if (source[0] === ".") { + const filename = joinPaths(path$1.dirname(scope.filename), source); + resolved = resolveExt(filename, fs); + } else { + if (!ts) { + if (loadTS) ts = loadTS(); + if (!ts) { + return ctx.error( + `Failed to resolve import source ${JSON.stringify(source)}. typescript is required as a peer dep for vue in order to support resolving types from module imports.`, + node, + scope + ); + } + } + resolved = resolveWithTS(scope.filename, source, ts, fs); + } + if (resolved) { + resolved = scope.resolvedImportSources[source] = normalizePath(resolved); + } + } + if (resolved) { + (ctx.deps || (ctx.deps = /* @__PURE__ */ new Set())).add(resolved); + return fileToScope(ctx, resolved); + } else { + return ctx.error( + `Failed to resolve import source ${JSON.stringify(source)}.`, + node, + scope + ); + } +} +function resolveExt(filename, fs) { + filename = filename.replace(/\.js$/, ""); + const tryResolve = (filename2) => { + if (fs.fileExists(filename2)) return filename2; + }; + return tryResolve(filename) || tryResolve(filename + `.ts`) || tryResolve(filename + `.tsx`) || tryResolve(filename + `.d.ts`) || tryResolve(joinPaths(filename, `index.ts`)) || tryResolve(joinPaths(filename, `index.tsx`)) || tryResolve(joinPaths(filename, `index.d.ts`)); +} +const tsConfigCache = createCache(); +const tsConfigRefMap = /* @__PURE__ */ new Map(); +function resolveWithTS(containingFile, source, ts2, fs) { + var _a, _b; + const configPath = ts2.findConfigFile(containingFile, fs.fileExists); + let tsCompilerOptions; + let tsResolveCache; + if (configPath) { + let configs; + const normalizedConfigPath = normalizePath(configPath); + const cached = tsConfigCache.get(normalizedConfigPath); + if (!cached) { + configs = loadTSConfig(configPath, ts2, fs).map((config) => ({ config })); + tsConfigCache.set(normalizedConfigPath, configs); + } else { + configs = cached; + } + let matchedConfig; + if (configs.length === 1) { + matchedConfig = configs[0]; + } else { + for (const c of configs) { + const base = normalizePath( + c.config.options.pathsBasePath || path$1.dirname(c.config.options.configFilePath) + ); + const included = (_a = c.config.raw) == null ? void 0 : _a.include; + const excluded = (_b = c.config.raw) == null ? void 0 : _b.exclude; + if (!included && (!base || containingFile.startsWith(base)) || (included == null ? void 0 : included.some((p) => minimatch(containingFile, joinPaths(base, p))))) { + if (excluded && excluded.some((p) => minimatch(containingFile, joinPaths(base, p)))) { + continue; + } + matchedConfig = c; + break; + } + } + if (!matchedConfig) { + matchedConfig = configs[configs.length - 1]; + } + } + tsCompilerOptions = matchedConfig.config.options; + tsResolveCache = matchedConfig.cache || (matchedConfig.cache = ts2.createModuleResolutionCache( + process__namespace.cwd(), + createGetCanonicalFileName(ts2.sys.useCaseSensitiveFileNames), + tsCompilerOptions + )); + } else { + tsCompilerOptions = {}; + } + const res = ts2.resolveModuleName( + source, + containingFile, + tsCompilerOptions, + fs, + tsResolveCache + ); + if (res.resolvedModule) { + let filename = res.resolvedModule.resolvedFileName; + if (filename.endsWith(".vue.ts") && !filename.endsWith(".d.vue.ts")) { + filename = filename.replace(/\.ts$/, ""); + } + return fs.realpath ? fs.realpath(filename) : filename; + } +} +function loadTSConfig(configPath, ts2, fs, visited = /* @__PURE__ */ new Set()) { + const parseConfigHost = ts2.sys; + const config = ts2.parseJsonConfigFileContent( + ts2.readConfigFile(configPath, fs.readFile).config, + parseConfigHost, + path$1.dirname(configPath), + void 0, + configPath + ); + const res = [config]; + visited.add(configPath); + if (config.projectReferences) { + for (const ref of config.projectReferences) { + const refPath = ts2.resolveProjectReferencePath(ref); + if (visited.has(refPath) || !fs.fileExists(refPath)) { + continue; + } + tsConfigRefMap.set(refPath, configPath); + res.unshift(...loadTSConfig(refPath, ts2, fs, visited)); + } + } + return res; +} +const fileToScopeCache = createCache(); +function invalidateTypeCache(filename) { + filename = normalizePath(filename); + fileToScopeCache.delete(filename); + tsConfigCache.delete(filename); + const affectedConfig = tsConfigRefMap.get(filename); + if (affectedConfig) tsConfigCache.delete(affectedConfig); +} +function fileToScope(ctx, filename, asGlobal = false) { + const cached = fileToScopeCache.get(filename); + if (cached) { + return cached; + } + const fs = resolveFS(ctx); + const source = fs.readFile(filename) || ""; + const body = parseFile(filename, source, fs, ctx.options.babelParserPlugins); + const scope = new TypeScope(filename, source, 0, recordImports(body)); + recordTypes(ctx, body, scope, asGlobal); + fileToScopeCache.set(filename, scope); + return scope; +} +function parseFile(filename, content, fs, parserPlugins) { + const ext = path$1.extname(filename); + if (ext === ".ts" || ext === ".mts" || ext === ".tsx" || ext === ".mtsx") { + return parser$2.parse(content, { + plugins: resolveParserPlugins( + ext.slice(1), + parserPlugins, + /\.d\.m?ts$/.test(filename) + ), + sourceType: "module" + }).program.body; + } + const isUnknownTypeSource = !/\.[cm]?[tj]sx?$/.test(filename); + const arbitraryTypeSource = `${filename.slice(0, -ext.length)}.d${ext}.ts`; + const hasArbitraryTypeDeclaration = isUnknownTypeSource && fs.fileExists(arbitraryTypeSource); + if (hasArbitraryTypeDeclaration) { + return parser$2.parse(fs.readFile(arbitraryTypeSource), { + plugins: resolveParserPlugins("ts", parserPlugins, true), + sourceType: "module" + }).program.body; + } + if (ext === ".vue") { + const { + descriptor: { script, scriptSetup } + } = parse$1(content); + if (!script && !scriptSetup) { + return []; + } + const scriptOffset = script ? script.loc.start.offset : Infinity; + const scriptSetupOffset = scriptSetup ? scriptSetup.loc.start.offset : Infinity; + const firstBlock = scriptOffset < scriptSetupOffset ? script : scriptSetup; + const secondBlock = scriptOffset < scriptSetupOffset ? scriptSetup : script; + let scriptContent = " ".repeat(Math.min(scriptOffset, scriptSetupOffset)) + firstBlock.content; + if (secondBlock) { + scriptContent += " ".repeat(secondBlock.loc.start.offset - script.loc.end.offset) + secondBlock.content; + } + const lang = (script == null ? void 0 : script.lang) || (scriptSetup == null ? void 0 : scriptSetup.lang); + return parser$2.parse(scriptContent, { + plugins: resolveParserPlugins(lang, parserPlugins), + sourceType: "module" + }).program.body; + } + return []; +} +function ctxToScope(ctx) { + if (ctx.scope) { + return ctx.scope; + } + const body = "ast" in ctx ? ctx.ast : ctx.scriptAst ? [...ctx.scriptAst.body, ...ctx.scriptSetupAst.body] : ctx.scriptSetupAst.body; + const scope = new TypeScope( + ctx.filename, + ctx.source, + "startOffset" in ctx ? ctx.startOffset : 0, + "userImports" in ctx ? Object.create(ctx.userImports) : recordImports(body) + ); + recordTypes(ctx, body, scope); + return ctx.scope = scope; +} +function moduleDeclToScope(ctx, node, parentScope) { + if (node._resolvedChildScope) { + return node._resolvedChildScope; + } + const scope = createChildScope(parentScope); + if (node.body.type === "TSModuleDeclaration") { + const decl = node.body; + decl._ownerScope = scope; + const id = getId(decl.id); + scope.types[id] = scope.exportedTypes[id] = decl; + } else { + recordTypes(ctx, node.body.body, scope); + } + return node._resolvedChildScope = scope; +} +function createChildScope(parentScope) { + return new TypeScope( + parentScope.filename, + parentScope.source, + parentScope.offset, + Object.create(parentScope.imports), + Object.create(parentScope.types), + Object.create(parentScope.declares) + ); +} +const importExportRE = /^Import|^Export/; +function recordTypes(ctx, body, scope, asGlobal = false) { + const { types, declares, exportedTypes, exportedDeclares, imports } = scope; + const isAmbient = asGlobal ? !body.some((s) => importExportRE.test(s.type)) : false; + for (const stmt of body) { + if (asGlobal) { + if (isAmbient) { + if (stmt.declare) { + recordType(stmt, types, declares); + } + } else if (stmt.type === "TSModuleDeclaration" && stmt.global) { + for (const s of stmt.body.body) { + recordType(s, types, declares); + } + } + } else { + recordType(stmt, types, declares); + } + } + if (!asGlobal) { + for (const stmt of body) { + if (stmt.type === "ExportNamedDeclaration") { + if (stmt.declaration) { + recordType(stmt.declaration, types, declares); + recordType(stmt.declaration, exportedTypes, exportedDeclares); + } else { + for (const spec of stmt.specifiers) { + if (spec.type === "ExportSpecifier") { + const local = spec.local.name; + const exported = getId(spec.exported); + if (stmt.source) { + imports[exported] = { + source: stmt.source.value, + imported: local + }; + exportedTypes[exported] = { + type: "TSTypeReference", + typeName: { + type: "Identifier", + name: local + }, + _ownerScope: scope + }; + } else if (types[local]) { + exportedTypes[exported] = types[local]; + } + } + } + } + } else if (stmt.type === "ExportAllDeclaration") { + const sourceScope = importSourceToScope( + ctx, + stmt.source, + scope, + stmt.source.value + ); + Object.assign(scope.exportedTypes, sourceScope.exportedTypes); + } else if (stmt.type === "ExportDefaultDeclaration" && stmt.declaration) { + if (stmt.declaration.type !== "Identifier") { + recordType(stmt.declaration, types, declares, "default"); + recordType( + stmt.declaration, + exportedTypes, + exportedDeclares, + "default" + ); + } else if (types[stmt.declaration.name]) { + exportedTypes["default"] = types[stmt.declaration.name]; + } + } + } + } + for (const key of Object.keys(types)) { + const node = types[key]; + node._ownerScope = scope; + if (node._ns) node._ns._ownerScope = scope; + } + for (const key of Object.keys(declares)) { + declares[key]._ownerScope = scope; + } +} +function recordType(node, types, declares, overwriteId) { + switch (node.type) { + case "TSInterfaceDeclaration": + case "TSEnumDeclaration": + case "TSModuleDeclaration": { + const id = overwriteId || getId(node.id); + let existing = types[id]; + if (existing) { + if (node.type === "TSModuleDeclaration") { + if (existing.type === "TSModuleDeclaration") { + mergeNamespaces(existing, node); + } else { + attachNamespace(existing, node); + } + break; + } + if (existing.type === "TSModuleDeclaration") { + types[id] = node; + attachNamespace(node, existing); + break; + } + if (existing.type !== node.type) { + break; + } + if (node.type === "TSInterfaceDeclaration") { + existing.body.body.push(...node.body.body); + } else { + existing.members.push(...node.members); + } + } else { + types[id] = node; + } + break; + } + case "ClassDeclaration": + if (overwriteId || node.id) types[overwriteId || getId(node.id)] = node; + break; + case "TSTypeAliasDeclaration": + types[node.id.name] = node.typeParameters ? node : node.typeAnnotation; + break; + case "TSDeclareFunction": + if (node.id) declares[node.id.name] = node; + break; + case "VariableDeclaration": { + if (node.declare) { + for (const decl of node.declarations) { + if (decl.id.type === "Identifier" && decl.id.typeAnnotation) { + declares[decl.id.name] = decl.id.typeAnnotation.typeAnnotation; + } + } + } + break; + } + } +} +function mergeNamespaces(to, from) { + const toBody = to.body; + const fromBody = from.body; + if (toBody.type === "TSModuleDeclaration") { + if (fromBody.type === "TSModuleDeclaration") { + mergeNamespaces(toBody, fromBody); + } else { + fromBody.body.push({ + type: "ExportNamedDeclaration", + declaration: toBody, + exportKind: "type", + specifiers: [] + }); + } + } else if (fromBody.type === "TSModuleDeclaration") { + toBody.body.push({ + type: "ExportNamedDeclaration", + declaration: fromBody, + exportKind: "type", + specifiers: [] + }); + } else { + toBody.body.push(...fromBody.body); + } +} +function attachNamespace(to, ns) { + if (!to._ns) { + to._ns = ns; + } else { + mergeNamespaces(to._ns, ns); + } +} +function recordImports(body) { + const imports = /* @__PURE__ */ Object.create(null); + for (const s of body) { + recordImport(s, imports); + } + return imports; +} +function recordImport(node, imports) { + if (node.type !== "ImportDeclaration") { + return; + } + for (const s of node.specifiers) { + imports[s.local.name] = { + imported: getImportedName(s), + source: node.source.value + }; + } +} +function inferRuntimeType(ctx, node, scope = node._ownerScope || ctxToScope(ctx), isKeyOf = false) { + try { + switch (node.type) { + case "TSStringKeyword": + return ["String"]; + case "TSNumberKeyword": + return ["Number"]; + case "TSBooleanKeyword": + return ["Boolean"]; + case "TSObjectKeyword": + return ["Object"]; + case "TSNullKeyword": + return ["null"]; + case "TSTypeLiteral": + case "TSInterfaceDeclaration": { + const types = /* @__PURE__ */ new Set(); + const members = node.type === "TSTypeLiteral" ? node.members : node.body.body; + for (const m of members) { + if (isKeyOf) { + if (m.type === "TSPropertySignature" && m.key.type === "NumericLiteral") { + types.add("Number"); + } else if (m.type === "TSIndexSignature") { + const annotation = m.parameters[0].typeAnnotation; + if (annotation && annotation.type !== "Noop") { + const type = inferRuntimeType( + ctx, + annotation.typeAnnotation, + scope + )[0]; + if (type === UNKNOWN_TYPE) return [UNKNOWN_TYPE]; + types.add(type); + } + } else { + types.add("String"); + } + } else if (m.type === "TSCallSignatureDeclaration" || m.type === "TSConstructSignatureDeclaration") { + types.add("Function"); + } else { + types.add("Object"); + } + } + return types.size ? Array.from(types) : [isKeyOf ? UNKNOWN_TYPE : "Object"]; + } + case "TSPropertySignature": + if (node.typeAnnotation) { + return inferRuntimeType( + ctx, + node.typeAnnotation.typeAnnotation, + scope + ); + } + break; + case "TSMethodSignature": + case "TSFunctionType": + return ["Function"]; + case "TSArrayType": + case "TSTupleType": + return ["Array"]; + case "TSLiteralType": + switch (node.literal.type) { + case "StringLiteral": + return ["String"]; + case "BooleanLiteral": + return ["Boolean"]; + case "NumericLiteral": + case "BigIntLiteral": + return ["Number"]; + default: + return [UNKNOWN_TYPE]; + } + case "TSTypeReference": { + const resolved = resolveTypeReference(ctx, node, scope); + if (resolved) { + if (resolved.type === "TSTypeAliasDeclaration" && resolved.typeAnnotation.type === "TSFunctionType") { + return ["Function"]; + } + return inferRuntimeType(ctx, resolved, resolved._ownerScope, isKeyOf); + } + if (node.typeName.type === "Identifier") { + if (isKeyOf) { + switch (node.typeName.name) { + case "String": + case "Array": + case "ArrayLike": + case "Parameters": + case "ConstructorParameters": + case "ReadonlyArray": + return ["String", "Number"]; + // TS built-in utility types + case "Record": + case "Partial": + case "Required": + case "Readonly": + if (node.typeParameters && node.typeParameters.params[0]) { + return inferRuntimeType( + ctx, + node.typeParameters.params[0], + scope, + true + ); + } + break; + case "Pick": + case "Extract": + if (node.typeParameters && node.typeParameters.params[1]) { + return inferRuntimeType( + ctx, + node.typeParameters.params[1], + scope + ); + } + break; + case "Function": + case "Object": + case "Set": + case "Map": + case "WeakSet": + case "WeakMap": + case "Date": + case "Promise": + case "Error": + case "Uppercase": + case "Lowercase": + case "Capitalize": + case "Uncapitalize": + case "ReadonlyMap": + case "ReadonlySet": + return ["String"]; + } + } else { + switch (node.typeName.name) { + case "Array": + case "Function": + case "Object": + case "Set": + case "Map": + case "WeakSet": + case "WeakMap": + case "Date": + case "Promise": + case "Error": + return [node.typeName.name]; + // TS built-in utility types + // https://www.typescriptlang.org/docs/handbook/utility-types.html + case "Partial": + case "Required": + case "Readonly": + case "Record": + case "Pick": + case "Omit": + case "InstanceType": + return ["Object"]; + case "Uppercase": + case "Lowercase": + case "Capitalize": + case "Uncapitalize": + return ["String"]; + case "Parameters": + case "ConstructorParameters": + case "ReadonlyArray": + return ["Array"]; + case "ReadonlyMap": + return ["Map"]; + case "ReadonlySet": + return ["Set"]; + case "NonNullable": + if (node.typeParameters && node.typeParameters.params[0]) { + return inferRuntimeType( + ctx, + node.typeParameters.params[0], + scope + ).filter((t) => t !== "null"); + } + break; + case "Extract": + if (node.typeParameters && node.typeParameters.params[1]) { + return inferRuntimeType( + ctx, + node.typeParameters.params[1], + scope + ); + } + break; + case "Exclude": + case "OmitThisParameter": + if (node.typeParameters && node.typeParameters.params[0]) { + return inferRuntimeType( + ctx, + node.typeParameters.params[0], + scope + ); + } + break; + } + } + } + break; + } + case "TSParenthesizedType": + return inferRuntimeType(ctx, node.typeAnnotation, scope); + case "TSUnionType": + return flattenTypes(ctx, node.types, scope, isKeyOf); + case "TSIntersectionType": { + return flattenTypes(ctx, node.types, scope, isKeyOf).filter( + (t) => t !== UNKNOWN_TYPE + ); + } + case "TSEnumDeclaration": + return inferEnumType(node); + case "TSSymbolKeyword": + return ["Symbol"]; + case "TSIndexedAccessType": { + const types = resolveIndexType(ctx, node, scope); + return flattenTypes(ctx, types, scope, isKeyOf); + } + case "ClassDeclaration": + return ["Object"]; + case "TSImportType": { + const sourceScope = importSourceToScope( + ctx, + node.argument, + scope, + node.argument.value + ); + const resolved = resolveTypeReference(ctx, node, sourceScope); + if (resolved) { + return inferRuntimeType(ctx, resolved, resolved._ownerScope); + } + break; + } + case "TSTypeQuery": { + const id = node.exprName; + if (id.type === "Identifier") { + const matched = scope.declares[id.name]; + if (matched) { + return inferRuntimeType(ctx, matched, matched._ownerScope, isKeyOf); + } + } + break; + } + // e.g. readonly + case "TSTypeOperator": { + return inferRuntimeType( + ctx, + node.typeAnnotation, + scope, + node.operator === "keyof" + ); + } + case "TSAnyKeyword": { + if (isKeyOf) { + return ["String", "Number", "Symbol"]; + } + break; + } + } + } catch (e) { + } + return [UNKNOWN_TYPE]; +} +function flattenTypes(ctx, types, scope, isKeyOf = false) { + if (types.length === 1) { + return inferRuntimeType(ctx, types[0], scope, isKeyOf); + } + return [ + ...new Set( + [].concat( + ...types.map((t) => inferRuntimeType(ctx, t, scope, isKeyOf)) + ) + ) + ]; +} +function inferEnumType(node) { + const types = /* @__PURE__ */ new Set(); + for (const m of node.members) { + if (m.initializer) { + switch (m.initializer.type) { + case "StringLiteral": + types.add("String"); + break; + case "NumericLiteral": + types.add("Number"); + break; + } + } + } + return types.size ? [...types] : ["Number"]; +} +function resolveExtractPropTypes({ props }, scope) { + const res = { props: {} }; + for (const key in props) { + const raw = props[key]; + res.props[key] = reverseInferType( + raw.key, + raw.typeAnnotation.typeAnnotation, + scope + ); + } + return res; +} +function reverseInferType(key, node, scope, optional = true, checkObjectSyntax = true) { + if (checkObjectSyntax && node.type === "TSTypeLiteral") { + const typeType = findStaticPropertyType(node, "type"); + if (typeType) { + const requiredType = findStaticPropertyType(node, "required"); + const optional2 = requiredType && requiredType.type === "TSLiteralType" && requiredType.literal.type === "BooleanLiteral" ? !requiredType.literal.value : true; + return reverseInferType(key, typeType, scope, optional2, false); + } + } else if (node.type === "TSTypeReference" && node.typeName.type === "Identifier") { + if (node.typeName.name.endsWith("Constructor")) { + return createProperty( + key, + ctorToType(node.typeName.name), + scope, + optional + ); + } else if (node.typeName.name === "PropType" && node.typeParameters) { + return createProperty(key, node.typeParameters.params[0], scope, optional); + } + } + if ((node.type === "TSTypeReference" || node.type === "TSImportType") && node.typeParameters) { + for (const t of node.typeParameters.params) { + const inferred = reverseInferType(key, t, scope, optional); + if (inferred) return inferred; + } + } + return createProperty(key, { type: `TSNullKeyword` }, scope, optional); +} +function ctorToType(ctorType) { + const ctor = ctorType.slice(0, -11); + switch (ctor) { + case "String": + case "Number": + case "Boolean": + return { type: `TS${ctor}Keyword` }; + case "Array": + case "Function": + case "Object": + case "Set": + case "Map": + case "WeakSet": + case "WeakMap": + case "Date": + case "Promise": + return { + type: "TSTypeReference", + typeName: { type: "Identifier", name: ctor } + }; + } + return { type: `TSNullKeyword` }; +} +function findStaticPropertyType(node, key) { + const prop = node.members.find( + (m) => m.type === "TSPropertySignature" && !m.computed && getId(m.key) === key && m.typeAnnotation + ); + return prop && prop.typeAnnotation.typeAnnotation; +} +function resolveReturnType(ctx, arg, scope) { + var _a; + let resolved = arg; + if (arg.type === "TSTypeReference" || arg.type === "TSTypeQuery" || arg.type === "TSImportType") { + resolved = resolveTypeReference(ctx, arg, scope); + } + if (!resolved) return; + if (resolved.type === "TSFunctionType") { + return (_a = resolved.typeAnnotation) == null ? void 0 : _a.typeAnnotation; + } + if (resolved.type === "TSDeclareFunction") { + return resolved.returnType; + } +} +function resolveUnionType(ctx, node, scope) { + if (node.type === "TSTypeReference") { + const resolved = resolveTypeReference(ctx, node, scope); + if (resolved) node = resolved; + } + let types; + if (node.type === "TSUnionType") { + types = node.types.flatMap((node2) => resolveUnionType(ctx, node2, scope)); + } else { + types = [node]; + } + return types; +} + +const DEFINE_MODEL = "defineModel"; +function processDefineModel(ctx, node, declId) { + if (!isCallOf(node, DEFINE_MODEL)) { + return false; + } + ctx.hasDefineModelCall = true; + const type = node.typeParameters && node.typeParameters.params[0] || void 0; + let modelName; + let options; + const arg0 = node.arguments[0] && CompilerDOM.unwrapTSNode(node.arguments[0]); + const hasName = arg0 && arg0.type === "StringLiteral"; + if (hasName) { + modelName = arg0.value; + options = node.arguments[1]; + } else { + modelName = "modelValue"; + options = arg0; + } + if (ctx.modelDecls[modelName]) { + ctx.error(`duplicate model name ${JSON.stringify(modelName)}`, node); + } + let optionsString = options && ctx.getString(options); + let optionsRemoved = !options; + const runtimeOptionNodes = []; + if (options && options.type === "ObjectExpression" && !options.properties.some((p) => p.type === "SpreadElement" || p.computed)) { + let removed = 0; + for (let i = options.properties.length - 1; i >= 0; i--) { + const p = options.properties[i]; + const next = options.properties[i + 1]; + const start = p.start; + const end = next ? next.start : options.end - 1; + if ((p.type === "ObjectProperty" || p.type === "ObjectMethod") && (p.key.type === "Identifier" && (p.key.name === "get" || p.key.name === "set") || p.key.type === "StringLiteral" && (p.key.value === "get" || p.key.value === "set"))) { + optionsString = optionsString.slice(0, start - options.start) + optionsString.slice(end - options.start); + } else { + removed++; + ctx.s.remove(ctx.startOffset + start, ctx.startOffset + end); + runtimeOptionNodes.push(p); + } + } + if (removed === options.properties.length) { + optionsRemoved = true; + ctx.s.remove( + ctx.startOffset + (hasName ? arg0.end : options.start), + ctx.startOffset + options.end + ); + } + } + ctx.modelDecls[modelName] = { + type, + options: optionsString, + runtimeOptionNodes, + identifier: declId && declId.type === "Identifier" ? declId.name : void 0 + }; + ctx.bindingMetadata[modelName] = "props"; + ctx.s.overwrite( + ctx.startOffset + node.callee.start, + ctx.startOffset + node.callee.end, + ctx.helper("useModel") + ); + ctx.s.appendLeft( + ctx.startOffset + (node.arguments.length ? node.arguments[0].start : node.end - 1), + `__props, ` + (hasName ? `` : `${JSON.stringify(modelName)}${optionsRemoved ? `` : `, `}`) + ); + return true; +} +function genModelProps(ctx) { + if (!ctx.hasDefineModelCall) return; + const isProd = !!ctx.options.isProd; + let modelPropsDecl = ""; + for (const [name, { type, options: runtimeOptions }] of Object.entries( + ctx.modelDecls + )) { + let skipCheck = false; + let codegenOptions = ``; + let runtimeTypes = type && inferRuntimeType(ctx, type); + if (runtimeTypes) { + const hasBoolean = runtimeTypes.includes("Boolean"); + const hasFunction = runtimeTypes.includes("Function"); + const hasUnknownType = runtimeTypes.includes(UNKNOWN_TYPE); + if (hasUnknownType) { + if (hasBoolean || hasFunction) { + runtimeTypes = runtimeTypes.filter((t) => t !== UNKNOWN_TYPE); + skipCheck = true; + } else { + runtimeTypes = ["null"]; + } + } + if (!isProd) { + codegenOptions = `type: ${toRuntimeTypeString(runtimeTypes)}` + (skipCheck ? ", skipCheck: true" : ""); + } else if (hasBoolean || runtimeOptions && hasFunction) { + codegenOptions = `type: ${toRuntimeTypeString(runtimeTypes)}`; + } else ; + } + let decl; + if (codegenOptions && runtimeOptions) { + decl = ctx.isTS ? `{ ${codegenOptions}, ...${runtimeOptions} }` : `Object.assign({ ${codegenOptions} }, ${runtimeOptions})`; + } else if (codegenOptions) { + decl = `{ ${codegenOptions} }`; + } else if (runtimeOptions) { + decl = runtimeOptions; + } else { + decl = `{}`; + } + modelPropsDecl += ` + ${JSON.stringify(name)}: ${decl},`; + const modifierPropName = JSON.stringify( + name === "modelValue" ? `modelModifiers` : `${name}Modifiers` + ); + modelPropsDecl += ` + ${modifierPropName}: {},`; + } + return `{${modelPropsDecl} + }`; +} + +const DEFINE_PROPS = "defineProps"; +const WITH_DEFAULTS = "withDefaults"; +function processDefineProps(ctx, node, declId, isWithDefaults = false) { + if (!isCallOf(node, DEFINE_PROPS)) { + return processWithDefaults(ctx, node, declId); + } + if (ctx.hasDefinePropsCall) { + ctx.error(`duplicate ${DEFINE_PROPS}() call`, node); + } + ctx.hasDefinePropsCall = true; + ctx.propsRuntimeDecl = node.arguments[0]; + if (ctx.propsRuntimeDecl) { + for (const key of getObjectOrArrayExpressionKeys(ctx.propsRuntimeDecl)) { + if (!(key in ctx.bindingMetadata)) { + ctx.bindingMetadata[key] = "props"; + } + } + } + if (node.typeParameters) { + if (ctx.propsRuntimeDecl) { + ctx.error( + `${DEFINE_PROPS}() cannot accept both type and non-type arguments at the same time. Use one or the other.`, + node + ); + } + ctx.propsTypeDecl = node.typeParameters.params[0]; + } + if (!isWithDefaults && declId && declId.type === "ObjectPattern") { + processPropsDestructure(ctx, declId); + } + ctx.propsCall = node; + ctx.propsDecl = declId; + return true; +} +function processWithDefaults(ctx, node, declId) { + if (!isCallOf(node, WITH_DEFAULTS)) { + return false; + } + if (!processDefineProps( + ctx, + node.arguments[0], + declId, + true + )) { + ctx.error( + `${WITH_DEFAULTS}' first argument must be a ${DEFINE_PROPS} call.`, + node.arguments[0] || node + ); + } + if (ctx.propsRuntimeDecl) { + ctx.error( + `${WITH_DEFAULTS} can only be used with type-based ${DEFINE_PROPS} declaration.`, + node + ); + } + if (declId && declId.type === "ObjectPattern") { + ctx.warn( + `${WITH_DEFAULTS}() is unnecessary when using destructure with ${DEFINE_PROPS}(). +Reactive destructure will be disabled when using withDefaults(). +Prefer using destructure default values, e.g. const { foo = 1 } = defineProps(...). `, + node.callee + ); + } + ctx.propsRuntimeDefaults = node.arguments[1]; + if (!ctx.propsRuntimeDefaults) { + ctx.error(`The 2nd argument of ${WITH_DEFAULTS} is required.`, node); + } + ctx.propsCall = node; + return true; +} +function genRuntimeProps(ctx) { + let propsDecls; + if (ctx.propsRuntimeDecl) { + propsDecls = ctx.getString(ctx.propsRuntimeDecl).trim(); + if (ctx.propsDestructureDecl) { + const defaults = []; + for (const key in ctx.propsDestructuredBindings) { + const d = genDestructuredDefaultValue(ctx, key); + const finalKey = getEscapedPropName(key); + if (d) + defaults.push( + `${finalKey}: ${d.valueString}${d.needSkipFactory ? `, __skip_${finalKey}: true` : ``}` + ); + } + if (defaults.length) { + propsDecls = `/*@__PURE__*/${ctx.helper( + `mergeDefaults` + )}(${propsDecls}, { + ${defaults.join(",\n ")} +})`; + } + } + } else if (ctx.propsTypeDecl) { + propsDecls = extractRuntimeProps(ctx); + } + const modelsDecls = genModelProps(ctx); + if (propsDecls && modelsDecls) { + return `/*@__PURE__*/${ctx.helper( + "mergeModels" + )}(${propsDecls}, ${modelsDecls})`; + } else { + return modelsDecls || propsDecls; + } +} +function extractRuntimeProps(ctx) { + const props = resolveRuntimePropsFromType(ctx, ctx.propsTypeDecl); + if (!props.length) { + return; + } + const propStrings = []; + const hasStaticDefaults = hasStaticWithDefaults(ctx); + for (const prop of props) { + propStrings.push(genRuntimePropFromType(ctx, prop, hasStaticDefaults)); + if ("bindingMetadata" in ctx && !(prop.key in ctx.bindingMetadata)) { + ctx.bindingMetadata[prop.key] = "props"; + } + } + let propsDecls = `{ + ${propStrings.join(",\n ")} + }`; + if (ctx.propsRuntimeDefaults && !hasStaticDefaults) { + propsDecls = `/*@__PURE__*/${ctx.helper( + "mergeDefaults" + )}(${propsDecls}, ${ctx.getString(ctx.propsRuntimeDefaults)})`; + } + return propsDecls; +} +function resolveRuntimePropsFromType(ctx, node) { + const props = []; + const elements = resolveTypeElements(ctx, node); + for (const key in elements.props) { + const e = elements.props[key]; + let type = inferRuntimeType(ctx, e); + let skipCheck = false; + if (type.includes(UNKNOWN_TYPE)) { + if (type.includes("Boolean") || type.includes("Function")) { + type = type.filter((t) => t !== UNKNOWN_TYPE); + skipCheck = true; + } else { + type = ["null"]; + } + } + props.push({ + key, + required: !e.optional, + type: type || [`null`], + skipCheck + }); + } + return props; +} +function genRuntimePropFromType(ctx, { key, required, type, skipCheck }, hasStaticDefaults) { + let defaultString; + const destructured = genDestructuredDefaultValue(ctx, key, type); + if (destructured) { + defaultString = `default: ${destructured.valueString}${destructured.needSkipFactory ? `, skipFactory: true` : ``}`; + } else if (hasStaticDefaults) { + const prop = ctx.propsRuntimeDefaults.properties.find( + (node) => { + if (node.type === "SpreadElement") return false; + return resolveObjectKey(node.key, node.computed) === key; + } + ); + if (prop) { + if (prop.type === "ObjectProperty") { + defaultString = `default: ${ctx.getString(prop.value)}`; + } else { + defaultString = `${prop.async ? "async " : ""}${prop.kind !== "method" ? `${prop.kind} ` : ""}default() ${ctx.getString(prop.body)}`; + } + } + } + const finalKey = getEscapedPropName(key); + if (!ctx.options.isProd) { + return `${finalKey}: { ${concatStrings([ + `type: ${toRuntimeTypeString(type)}`, + `required: ${required}`, + skipCheck && "skipCheck: true", + defaultString + ])} }`; + } else if (type.some( + (el) => el === "Boolean" || (!hasStaticDefaults || defaultString) && el === "Function" + )) { + return `${finalKey}: { ${concatStrings([ + `type: ${toRuntimeTypeString(type)}`, + defaultString + ])} }`; + } else { + if (ctx.isCE) { + if (defaultString) { + return `${finalKey}: ${`{ ${defaultString}, type: ${toRuntimeTypeString( + type + )} }`}`; + } else { + return `${finalKey}: {type: ${toRuntimeTypeString(type)}}`; + } + } + return `${finalKey}: ${defaultString ? `{ ${defaultString} }` : `{}`}`; + } +} +function hasStaticWithDefaults(ctx) { + return !!(ctx.propsRuntimeDefaults && ctx.propsRuntimeDefaults.type === "ObjectExpression" && ctx.propsRuntimeDefaults.properties.every( + (node) => node.type !== "SpreadElement" && (!node.computed || node.key.type.endsWith("Literal")) + )); +} +function genDestructuredDefaultValue(ctx, key, inferredType) { + const destructured = ctx.propsDestructuredBindings[key]; + const defaultVal = destructured && destructured.default; + if (defaultVal) { + const value = ctx.getString(defaultVal); + const unwrapped = CompilerDOM.unwrapTSNode(defaultVal); + if (inferredType && inferredType.length && !inferredType.includes("null")) { + const valueType = inferValueType(unwrapped); + if (valueType && !inferredType.includes(valueType)) { + ctx.error( + `Default value of prop "${key}" does not match declared type.`, + unwrapped + ); + } + } + const needSkipFactory = !inferredType && (CompilerDOM.isFunctionType(unwrapped) || unwrapped.type === "Identifier"); + const needFactoryWrap = !needSkipFactory && !isLiteralNode(unwrapped) && !(inferredType == null ? void 0 : inferredType.includes("Function")); + return { + valueString: needFactoryWrap ? `() => (${value})` : value, + needSkipFactory + }; + } +} +function inferValueType(node) { + switch (node.type) { + case "StringLiteral": + return "String"; + case "NumericLiteral": + return "Number"; + case "BooleanLiteral": + return "Boolean"; + case "ObjectExpression": + return "Object"; + case "ArrayExpression": + return "Array"; + case "FunctionExpression": + case "ArrowFunctionExpression": + return "Function"; + } +} + +function processPropsDestructure(ctx, declId) { + if (ctx.options.propsDestructure === "error") { + ctx.error(`Props destructure is explicitly prohibited via config.`, declId); + } else if (ctx.options.propsDestructure === false) { + return; + } + ctx.propsDestructureDecl = declId; + const registerBinding = (key, local, defaultValue) => { + ctx.propsDestructuredBindings[key] = { local, default: defaultValue }; + if (local !== key) { + ctx.bindingMetadata[local] = "props-aliased"; + (ctx.bindingMetadata.__propsAliases || (ctx.bindingMetadata.__propsAliases = {}))[local] = key; + } + }; + for (const prop of declId.properties) { + if (prop.type === "ObjectProperty") { + const propKey = resolveObjectKey(prop.key, prop.computed); + if (!propKey) { + ctx.error( + `${DEFINE_PROPS}() destructure cannot use computed key.`, + prop.key + ); + } + if (prop.value.type === "AssignmentPattern") { + const { left, right } = prop.value; + if (left.type !== "Identifier") { + ctx.error( + `${DEFINE_PROPS}() destructure does not support nested patterns.`, + left + ); + } + registerBinding(propKey, left.name, right); + } else if (prop.value.type === "Identifier") { + registerBinding(propKey, prop.value.name); + } else { + ctx.error( + `${DEFINE_PROPS}() destructure does not support nested patterns.`, + prop.value + ); + } + } else { + ctx.propsDestructureRestId = prop.argument.name; + ctx.bindingMetadata[ctx.propsDestructureRestId] = "setup-reactive-const"; + } + } +} +function transformDestructuredProps(ctx, vueImportAliases) { + if (ctx.options.propsDestructure === false) { + return; + } + const rootScope = /* @__PURE__ */ Object.create(null); + const scopeStack = [rootScope]; + let currentScope = rootScope; + const excludedIds = /* @__PURE__ */ new WeakSet(); + const parentStack = []; + const propsLocalToPublicMap = /* @__PURE__ */ Object.create(null); + for (const key in ctx.propsDestructuredBindings) { + const { local } = ctx.propsDestructuredBindings[key]; + rootScope[local] = true; + propsLocalToPublicMap[local] = key; + } + function pushScope() { + scopeStack.push(currentScope = Object.create(currentScope)); + } + function popScope() { + scopeStack.pop(); + currentScope = scopeStack[scopeStack.length - 1] || null; + } + function registerLocalBinding(id) { + excludedIds.add(id); + if (currentScope) { + currentScope[id.name] = false; + } else { + ctx.error( + "registerBinding called without active scope, something is wrong.", + id + ); + } + } + function walkScope(node, isRoot = false) { + for (const stmt of node.body) { + if (stmt.type === "VariableDeclaration") { + walkVariableDeclaration(stmt, isRoot); + } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") { + if (stmt.declare || !stmt.id) continue; + registerLocalBinding(stmt.id); + } else if ((stmt.type === "ForOfStatement" || stmt.type === "ForInStatement") && stmt.left.type === "VariableDeclaration") { + walkVariableDeclaration(stmt.left); + } else if (stmt.type === "ExportNamedDeclaration" && stmt.declaration && stmt.declaration.type === "VariableDeclaration") { + walkVariableDeclaration(stmt.declaration, isRoot); + } else if (stmt.type === "LabeledStatement" && stmt.body.type === "VariableDeclaration") { + walkVariableDeclaration(stmt.body, isRoot); + } + } + } + function walkVariableDeclaration(stmt, isRoot = false) { + if (stmt.declare) { + return; + } + for (const decl of stmt.declarations) { + const isDefineProps = isRoot && decl.init && isCallOf(CompilerDOM.unwrapTSNode(decl.init), "defineProps"); + for (const id of CompilerDOM.extractIdentifiers(decl.id)) { + if (isDefineProps) { + excludedIds.add(id); + } else { + registerLocalBinding(id); + } + } + } + } + function rewriteId(id, parent, parentStack2) { + if (parent.type === "AssignmentExpression" && id === parent.left || parent.type === "UpdateExpression") { + ctx.error(`Cannot assign to destructured props as they are readonly.`, id); + } + if (CompilerDOM.isStaticProperty(parent) && parent.shorthand) { + if (!parent.inPattern || CompilerDOM.isInDestructureAssignment(parent, parentStack2)) { + ctx.s.appendLeft( + id.end + ctx.startOffset, + `: ${shared.genPropsAccessExp(propsLocalToPublicMap[id.name])}` + ); + } + } else { + ctx.s.overwrite( + id.start + ctx.startOffset, + id.end + ctx.startOffset, + shared.genPropsAccessExp(propsLocalToPublicMap[id.name]) + ); + } + } + function checkUsage(node, method, alias = method) { + if (isCallOf(node, alias)) { + const arg = CompilerDOM.unwrapTSNode(node.arguments[0]); + if (arg.type === "Identifier" && currentScope[arg.name]) { + ctx.error( + `"${arg.name}" is a destructured prop and should not be passed directly to ${method}(). Pass a getter () => ${arg.name} instead.`, + arg + ); + } + } + } + const ast = ctx.scriptSetupAst; + walkScope(ast, true); + estreeWalker.walk(ast, { + enter(node, parent) { + parent && parentStack.push(parent); + if (parent && parent.type.startsWith("TS") && !CompilerDOM.TS_NODE_TYPES.includes(parent.type)) { + return this.skip(); + } + checkUsage(node, "watch", vueImportAliases.watch); + checkUsage(node, "toRef", vueImportAliases.toRef); + if (CompilerDOM.isFunctionType(node)) { + pushScope(); + CompilerDOM.walkFunctionParams(node, registerLocalBinding); + if (node.body.type === "BlockStatement") { + walkScope(node.body); + } + return; + } + if (node.type === "CatchClause") { + pushScope(); + if (node.param && node.param.type === "Identifier") { + registerLocalBinding(node.param); + } + walkScope(node.body); + return; + } + if (node.type === "BlockStatement" && !CompilerDOM.isFunctionType(parent)) { + pushScope(); + walkScope(node); + return; + } + if (node.type === "Identifier") { + if (CompilerDOM.isReferencedIdentifier(node, parent, parentStack) && !excludedIds.has(node)) { + if (currentScope[node.name]) { + rewriteId(node, parent, parentStack); + } + } + } + }, + leave(node, parent) { + parent && parentStack.pop(); + if (node.type === "BlockStatement" && !CompilerDOM.isFunctionType(parent) || CompilerDOM.isFunctionType(node) || node.type === "CatchClause") { + popScope(); + } + } + }); +} + +const DEFINE_EMITS = "defineEmits"; +function processDefineEmits(ctx, node, declId) { + if (!isCallOf(node, DEFINE_EMITS)) { + return false; + } + if (ctx.hasDefineEmitCall) { + ctx.error(`duplicate ${DEFINE_EMITS}() call`, node); + } + ctx.hasDefineEmitCall = true; + ctx.emitsRuntimeDecl = node.arguments[0]; + if (node.typeParameters) { + if (ctx.emitsRuntimeDecl) { + ctx.error( + `${DEFINE_EMITS}() cannot accept both type and non-type arguments at the same time. Use one or the other.`, + node + ); + } + ctx.emitsTypeDecl = node.typeParameters.params[0]; + } + ctx.emitDecl = declId; + return true; +} +function genRuntimeEmits(ctx) { + let emitsDecl = ""; + if (ctx.emitsRuntimeDecl) { + emitsDecl = ctx.getString(ctx.emitsRuntimeDecl).trim(); + } else if (ctx.emitsTypeDecl) { + const typeDeclaredEmits = extractRuntimeEmits(ctx); + emitsDecl = typeDeclaredEmits.size ? `[${Array.from(typeDeclaredEmits).map((k) => JSON.stringify(k)).join(", ")}]` : ``; + } + if (ctx.hasDefineModelCall) { + let modelEmitsDecl = `[${Object.keys(ctx.modelDecls).map((n) => JSON.stringify(`update:${n}`)).join(", ")}]`; + emitsDecl = emitsDecl ? `/*@__PURE__*/${ctx.helper( + "mergeModels" + )}(${emitsDecl}, ${modelEmitsDecl})` : modelEmitsDecl; + } + return emitsDecl; +} +function extractRuntimeEmits(ctx) { + const emits = /* @__PURE__ */ new Set(); + const node = ctx.emitsTypeDecl; + if (node.type === "TSFunctionType") { + extractEventNames(ctx, node.parameters[0], emits); + return emits; + } + const { props, calls } = resolveTypeElements(ctx, node); + let hasProperty = false; + for (const key in props) { + emits.add(key); + hasProperty = true; + } + if (calls) { + if (hasProperty) { + ctx.error( + `defineEmits() type cannot mixed call signature and property syntax.`, + node + ); + } + for (const call of calls) { + extractEventNames(ctx, call.parameters[0], emits); + } + } + return emits; +} +function extractEventNames(ctx, eventName, emits) { + if (eventName.type === "Identifier" && eventName.typeAnnotation && eventName.typeAnnotation.type === "TSTypeAnnotation") { + const types = resolveUnionType(ctx, eventName.typeAnnotation.typeAnnotation); + for (const type of types) { + if (type.type === "TSLiteralType") { + if (type.literal.type !== "UnaryExpression" && type.literal.type !== "TemplateLiteral") { + emits.add(String(type.literal.value)); + } + } + } + } +} + +const DEFINE_EXPOSE = "defineExpose"; +function processDefineExpose(ctx, node) { + if (isCallOf(node, DEFINE_EXPOSE)) { + if (ctx.hasDefineExposeCall) { + ctx.error(`duplicate ${DEFINE_EXPOSE}() call`, node); + } + ctx.hasDefineExposeCall = true; + return true; + } + return false; +} + +const DEFINE_SLOTS = "defineSlots"; +function processDefineSlots(ctx, node, declId) { + if (!isCallOf(node, DEFINE_SLOTS)) { + return false; + } + if (ctx.hasDefineSlotsCall) { + ctx.error(`duplicate ${DEFINE_SLOTS}() call`, node); + } + ctx.hasDefineSlotsCall = true; + if (node.arguments.length > 0) { + ctx.error(`${DEFINE_SLOTS}() cannot accept arguments`, node); + } + if (declId) { + ctx.s.overwrite( + ctx.startOffset + node.start, + ctx.startOffset + node.end, + `${ctx.helper("useSlots")}()` + ); + } + return true; +} + +const DEFINE_OPTIONS = "defineOptions"; +function processDefineOptions(ctx, node) { + if (!isCallOf(node, DEFINE_OPTIONS)) { + return false; + } + if (ctx.hasDefineOptionsCall) { + ctx.error(`duplicate ${DEFINE_OPTIONS}() call`, node); + } + if (node.typeParameters) { + ctx.error(`${DEFINE_OPTIONS}() cannot accept type arguments`, node); + } + if (!node.arguments[0]) return true; + ctx.hasDefineOptionsCall = true; + ctx.optionsRuntimeDecl = CompilerDOM.unwrapTSNode(node.arguments[0]); + let propsOption = void 0; + let emitsOption = void 0; + let exposeOption = void 0; + let slotsOption = void 0; + if (ctx.optionsRuntimeDecl.type === "ObjectExpression") { + for (const prop of ctx.optionsRuntimeDecl.properties) { + if ((prop.type === "ObjectProperty" || prop.type === "ObjectMethod") && prop.key.type === "Identifier") { + switch (prop.key.name) { + case "props": + propsOption = prop; + break; + case "emits": + emitsOption = prop; + break; + case "expose": + exposeOption = prop; + break; + case "slots": + slotsOption = prop; + break; + } + } + } + } + if (propsOption) { + ctx.error( + `${DEFINE_OPTIONS}() cannot be used to declare props. Use ${DEFINE_PROPS}() instead.`, + propsOption + ); + } + if (emitsOption) { + ctx.error( + `${DEFINE_OPTIONS}() cannot be used to declare emits. Use ${DEFINE_EMITS}() instead.`, + emitsOption + ); + } + if (exposeOption) { + ctx.error( + `${DEFINE_OPTIONS}() cannot be used to declare expose. Use ${DEFINE_EXPOSE}() instead.`, + exposeOption + ); + } + if (slotsOption) { + ctx.error( + `${DEFINE_OPTIONS}() cannot be used to declare slots. Use ${DEFINE_SLOTS}() instead.`, + slotsOption + ); + } + return true; +} + +function processAwait(ctx, node, needSemi, isStatement) { + const argumentStart = node.argument.extra && node.argument.extra.parenthesized ? node.argument.extra.parenStart : node.argument.start; + const startOffset = ctx.startOffset; + const argumentStr = ctx.descriptor.source.slice( + argumentStart + startOffset, + node.argument.end + startOffset + ); + const containsNestedAwait = /\bawait\b/.test(argumentStr); + ctx.s.overwrite( + node.start + startOffset, + argumentStart + startOffset, + `${needSemi ? `;` : ``}( + ([__temp,__restore] = ${ctx.helper( + `withAsyncContext` + )}(${containsNestedAwait ? `async ` : ``}() => ` + ); + ctx.s.appendLeft( + node.end + startOffset, + `)), + ${isStatement ? `` : `__temp = `}await __temp, + __restore()${isStatement ? `` : `, + __temp`} +)` + ); +} + +const MACROS = [ + DEFINE_PROPS, + DEFINE_EMITS, + DEFINE_EXPOSE, + DEFINE_OPTIONS, + DEFINE_SLOTS, + DEFINE_MODEL, + WITH_DEFAULTS +]; +function compileScript(sfc, options) { + var _a, _b, _c; + if (!options.id) { + warnOnce( + `compileScript now requires passing the \`id\` option. +Upgrade your vite or vue-loader version for compatibility with the latest experimental proposals.` + ); + } + const ctx = new ScriptCompileContext(sfc, options); + const { script, scriptSetup, source, filename } = sfc; + const hoistStatic = options.hoistStatic !== false && !script; + const scopeId = options.id ? options.id.replace(/^data-v-/, "") : ""; + const scriptLang = script && script.lang; + const scriptSetupLang = scriptSetup && scriptSetup.lang; + if (!scriptSetup) { + if (!script) { + throw new Error(`[@vue/compiler-sfc] SFC contains no <script> tags.`); + } + return processNormalScript(ctx, scopeId); + } + if (script && scriptLang !== scriptSetupLang) { + throw new Error( + `[@vue/compiler-sfc] <script> and <script setup> must have the same language type.` + ); + } + if (scriptSetupLang && !ctx.isJS && !ctx.isTS) { + return scriptSetup; + } + const scriptBindings = /* @__PURE__ */ Object.create(null); + const setupBindings = /* @__PURE__ */ Object.create(null); + let defaultExport; + let hasAwait = false; + let hasInlinedSsrRenderFn = false; + const startOffset = ctx.startOffset; + const endOffset = ctx.endOffset; + const scriptStartOffset = script && script.loc.start.offset; + const scriptEndOffset = script && script.loc.end.offset; + function hoistNode(node) { + const start = node.start + startOffset; + let end = node.end + startOffset; + if (node.trailingComments && node.trailingComments.length > 0) { + const lastCommentNode = node.trailingComments[node.trailingComments.length - 1]; + end = lastCommentNode.end + startOffset; + } + while (end <= source.length) { + if (!/\s/.test(source.charAt(end))) { + break; + } + end++; + } + ctx.s.move(start, end, 0); + } + function registerUserImport(source2, local, imported, isType, isFromSetup, needTemplateUsageCheck) { + let isUsedInTemplate = needTemplateUsageCheck; + if (needTemplateUsageCheck && ctx.isTS && sfc.template && !sfc.template.src && !sfc.template.lang) { + isUsedInTemplate = isImportUsed(local, sfc); + } + ctx.userImports[local] = { + isType, + imported, + local, + source: source2, + isFromSetup, + isUsedInTemplate + }; + } + function checkInvalidScopeReference(node, method) { + if (!node) return; + CompilerDOM.walkIdentifiers(node, (id) => { + const binding = setupBindings[id.name]; + if (binding && binding !== "literal-const") { + ctx.error( + `\`${method}()\` in <script setup> cannot reference locally declared variables because it will be hoisted outside of the setup() function. If your component options require initialization in the module scope, use a separate normal <script> to export the options instead.`, + id + ); + } + }); + } + const scriptAst = ctx.scriptAst; + const scriptSetupAst = ctx.scriptSetupAst; + if (scriptAst) { + for (const node of scriptAst.body) { + if (node.type === "ImportDeclaration") { + for (const specifier of node.specifiers) { + const imported = getImportedName(specifier); + registerUserImport( + node.source.value, + specifier.local.name, + imported, + node.importKind === "type" || specifier.type === "ImportSpecifier" && specifier.importKind === "type", + false, + !options.inlineTemplate + ); + } + } + } + } + for (const node of scriptSetupAst.body) { + if (node.type === "ImportDeclaration") { + hoistNode(node); + let removed = 0; + const removeSpecifier = (i) => { + const removeLeft = i > removed; + removed++; + const current = node.specifiers[i]; + const next = node.specifiers[i + 1]; + ctx.s.remove( + removeLeft ? node.specifiers[i - 1].end + startOffset : current.start + startOffset, + next && !removeLeft ? next.start + startOffset : current.end + startOffset + ); + }; + for (let i = 0; i < node.specifiers.length; i++) { + const specifier = node.specifiers[i]; + const local = specifier.local.name; + const imported = getImportedName(specifier); + const source2 = node.source.value; + const existing = ctx.userImports[local]; + if (source2 === "vue" && MACROS.includes(imported)) { + if (local === imported) { + warnOnce( + `\`${imported}\` is a compiler macro and no longer needs to be imported.` + ); + } else { + ctx.error( + `\`${imported}\` is a compiler macro and cannot be aliased to a different name.`, + specifier + ); + } + removeSpecifier(i); + } else if (existing) { + if (existing.source === source2 && existing.imported === imported) { + removeSpecifier(i); + } else { + ctx.error( + `different imports aliased to same local name.`, + specifier + ); + } + } else { + registerUserImport( + source2, + local, + imported, + node.importKind === "type" || specifier.type === "ImportSpecifier" && specifier.importKind === "type", + true, + !options.inlineTemplate + ); + } + } + if (node.specifiers.length && removed === node.specifiers.length) { + ctx.s.remove(node.start + startOffset, node.end + startOffset); + } + } + } + const vueImportAliases = {}; + for (const key in ctx.userImports) { + const { source: source2, imported, local } = ctx.userImports[key]; + if (source2 === "vue") vueImportAliases[imported] = local; + } + if (script && scriptAst) { + for (const node of scriptAst.body) { + if (node.type === "ExportDefaultDeclaration") { + defaultExport = node; + let optionProperties; + if (defaultExport.declaration.type === "ObjectExpression") { + optionProperties = defaultExport.declaration.properties; + } else if (defaultExport.declaration.type === "CallExpression" && defaultExport.declaration.arguments[0] && defaultExport.declaration.arguments[0].type === "ObjectExpression") { + optionProperties = defaultExport.declaration.arguments[0].properties; + } + if (optionProperties) { + for (const p of optionProperties) { + if (p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === "name") { + ctx.hasDefaultExportName = true; + } + if ((p.type === "ObjectMethod" || p.type === "ObjectProperty") && p.key.type === "Identifier" && p.key.name === "render") { + ctx.hasDefaultExportRender = true; + } + } + } + const start = node.start + scriptStartOffset; + const end = node.declaration.start + scriptStartOffset; + ctx.s.overwrite(start, end, `const ${normalScriptDefaultVar} = `); + } else if (node.type === "ExportNamedDeclaration") { + const defaultSpecifier = node.specifiers.find( + (s) => s.exported.type === "Identifier" && s.exported.name === "default" + ); + if (defaultSpecifier) { + defaultExport = node; + if (node.specifiers.length > 1) { + ctx.s.remove( + defaultSpecifier.start + scriptStartOffset, + defaultSpecifier.end + scriptStartOffset + ); + } else { + ctx.s.remove( + node.start + scriptStartOffset, + node.end + scriptStartOffset + ); + } + if (node.source) { + ctx.s.prepend( + `import { ${defaultSpecifier.local.name} as ${normalScriptDefaultVar} } from '${node.source.value}' +` + ); + } else { + ctx.s.appendLeft( + scriptEndOffset, + ` +const ${normalScriptDefaultVar} = ${defaultSpecifier.local.name} +` + ); + } + } + if (node.declaration) { + walkDeclaration( + "script", + node.declaration, + scriptBindings, + vueImportAliases, + hoistStatic + ); + } + } else if ((node.type === "VariableDeclaration" || node.type === "FunctionDeclaration" || node.type === "ClassDeclaration" || node.type === "TSEnumDeclaration") && !node.declare) { + walkDeclaration( + "script", + node, + scriptBindings, + vueImportAliases, + hoistStatic + ); + } + } + if (scriptStartOffset > startOffset) { + if (!/\n$/.test(script.content.trim())) { + ctx.s.appendLeft(scriptEndOffset, ` +`); + } + ctx.s.move(scriptStartOffset, scriptEndOffset, 0); + } + } + for (const node of scriptSetupAst.body) { + if (node.type === "ExpressionStatement") { + const expr = CompilerDOM.unwrapTSNode(node.expression); + if (processDefineProps(ctx, expr) || processDefineEmits(ctx, expr) || processDefineOptions(ctx, expr) || processDefineSlots(ctx, expr)) { + ctx.s.remove(node.start + startOffset, node.end + startOffset); + } else if (processDefineExpose(ctx, expr)) { + const callee = expr.callee; + ctx.s.overwrite( + callee.start + startOffset, + callee.end + startOffset, + "__expose" + ); + } else { + processDefineModel(ctx, expr); + } + } + if (node.type === "VariableDeclaration" && !node.declare) { + const total = node.declarations.length; + let left = total; + let lastNonRemoved; + for (let i = 0; i < total; i++) { + const decl = node.declarations[i]; + const init = decl.init && CompilerDOM.unwrapTSNode(decl.init); + if (init) { + if (processDefineOptions(ctx, init)) { + ctx.error( + `${DEFINE_OPTIONS}() has no returning value, it cannot be assigned.`, + node + ); + } + const isDefineProps = processDefineProps(ctx, init, decl.id); + if (ctx.propsDestructureRestId) { + setupBindings[ctx.propsDestructureRestId] = "setup-reactive-const"; + } + const isDefineEmits = !isDefineProps && processDefineEmits(ctx, init, decl.id); + !isDefineEmits && (processDefineSlots(ctx, init, decl.id) || processDefineModel(ctx, init, decl.id)); + if (isDefineProps && !ctx.propsDestructureRestId && ctx.propsDestructureDecl) { + if (left === 1) { + ctx.s.remove(node.start + startOffset, node.end + startOffset); + } else { + let start = decl.start + startOffset; + let end = decl.end + startOffset; + if (i === total - 1) { + start = node.declarations[lastNonRemoved].end + startOffset; + } else { + end = node.declarations[i + 1].start + startOffset; + } + ctx.s.remove(start, end); + left--; + } + } else if (isDefineEmits) { + ctx.s.overwrite( + startOffset + init.start, + startOffset + init.end, + "__emit" + ); + } else { + lastNonRemoved = i; + } + } + } + } + let isAllLiteral = false; + if ((node.type === "VariableDeclaration" || node.type === "FunctionDeclaration" || node.type === "ClassDeclaration" || node.type === "TSEnumDeclaration") && !node.declare) { + isAllLiteral = walkDeclaration( + "scriptSetup", + node, + setupBindings, + vueImportAliases, + hoistStatic, + !!ctx.propsDestructureDecl + ); + } + if (hoistStatic && isAllLiteral) { + hoistNode(node); + } + if (node.type === "VariableDeclaration" && !node.declare || node.type.endsWith("Statement")) { + const scope = [scriptSetupAst.body]; + estreeWalker.walk(node, { + enter(child, parent) { + if (CompilerDOM.isFunctionType(child)) { + this.skip(); + } + if (child.type === "BlockStatement") { + scope.push(child.body); + } + if (child.type === "AwaitExpression") { + hasAwait = true; + const currentScope = scope[scope.length - 1]; + const needsSemi = currentScope.some((n, i) => { + return (scope.length === 1 || i > 0) && n.type === "ExpressionStatement" && n.start === child.start; + }); + processAwait( + ctx, + child, + needsSemi, + parent.type === "ExpressionStatement" + ); + } + }, + exit(node2) { + if (node2.type === "BlockStatement") scope.pop(); + } + }); + } + if (node.type === "ExportNamedDeclaration" && node.exportKind !== "type" || node.type === "ExportAllDeclaration" || node.type === "ExportDefaultDeclaration") { + ctx.error( + `<script setup> cannot contain ES module exports. If you are using a previous version of <script setup>, please consult the updated RFC at https://github.com/vuejs/rfcs/pull/227.`, + node + ); + } + if (ctx.isTS) { + if (node.type.startsWith("TS") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "VariableDeclaration" && node.declare) { + if (node.type !== "TSEnumDeclaration") { + hoistNode(node); + } + } + } + } + if (ctx.propsDestructureDecl) { + transformDestructuredProps(ctx, vueImportAliases); + } + checkInvalidScopeReference(ctx.propsRuntimeDecl, DEFINE_PROPS); + checkInvalidScopeReference(ctx.propsRuntimeDefaults, DEFINE_PROPS); + checkInvalidScopeReference(ctx.propsDestructureDecl, DEFINE_PROPS); + checkInvalidScopeReference(ctx.emitsRuntimeDecl, DEFINE_EMITS); + checkInvalidScopeReference(ctx.optionsRuntimeDecl, DEFINE_OPTIONS); + for (const { runtimeOptionNodes } of Object.values(ctx.modelDecls)) { + for (const node of runtimeOptionNodes) { + checkInvalidScopeReference(node, DEFINE_MODEL); + } + } + if (script) { + if (startOffset < scriptStartOffset) { + ctx.s.remove(0, startOffset); + ctx.s.remove(endOffset, scriptStartOffset); + ctx.s.remove(scriptEndOffset, source.length); + } else { + ctx.s.remove(0, scriptStartOffset); + ctx.s.remove(scriptEndOffset, startOffset); + ctx.s.remove(endOffset, source.length); + } + } else { + ctx.s.remove(0, startOffset); + ctx.s.remove(endOffset, source.length); + } + if (scriptAst) { + Object.assign(ctx.bindingMetadata, analyzeScriptBindings(scriptAst.body)); + } + for (const [key, { isType, imported, source: source2 }] of Object.entries( + ctx.userImports + )) { + if (isType) continue; + ctx.bindingMetadata[key] = imported === "*" || imported === "default" && source2.endsWith(".vue") || source2 === "vue" ? "setup-const" : "setup-maybe-ref"; + } + for (const key in scriptBindings) { + ctx.bindingMetadata[key] = scriptBindings[key]; + } + for (const key in setupBindings) { + ctx.bindingMetadata[key] = setupBindings[key]; + } + if (sfc.cssVars.length && // no need to do this when targeting SSR + !((_a = options.templateOptions) == null ? void 0 : _a.ssr)) { + ctx.helperImports.add(CSS_VARS_HELPER); + ctx.helperImports.add("unref"); + ctx.s.prependLeft( + startOffset, + ` +${genCssVarsCode( + sfc.cssVars, + ctx.bindingMetadata, + scopeId, + !!options.isProd + )} +` + ); + } + let args = `__props`; + if (ctx.propsTypeDecl) { + args += `: any`; + } + if (ctx.propsDecl) { + if (ctx.propsDestructureRestId) { + ctx.s.overwrite( + startOffset + ctx.propsCall.start, + startOffset + ctx.propsCall.end, + `${ctx.helper(`createPropsRestProxy`)}(__props, ${JSON.stringify( + Object.keys(ctx.propsDestructuredBindings) + )})` + ); + ctx.s.overwrite( + startOffset + ctx.propsDestructureDecl.start, + startOffset + ctx.propsDestructureDecl.end, + ctx.propsDestructureRestId + ); + } else if (!ctx.propsDestructureDecl) { + ctx.s.overwrite( + startOffset + ctx.propsCall.start, + startOffset + ctx.propsCall.end, + "__props" + ); + } + } + if (hasAwait) { + const any = ctx.isTS ? `: any` : ``; + ctx.s.prependLeft(startOffset, ` +let __temp${any}, __restore${any} +`); + } + const destructureElements = ctx.hasDefineExposeCall || !options.inlineTemplate ? [`expose: __expose`] : []; + if (ctx.emitDecl) { + destructureElements.push(`emit: __emit`); + } + if (destructureElements.length) { + args += `, { ${destructureElements.join(", ")} }`; + } + let templateMap; + let returned; + if (!options.inlineTemplate || !sfc.template && ctx.hasDefaultExportRender) { + const allBindings = { + ...scriptBindings, + ...setupBindings + }; + for (const key in ctx.userImports) { + if (!ctx.userImports[key].isType && ctx.userImports[key].isUsedInTemplate) { + allBindings[key] = true; + } + } + returned = `{ `; + for (const key in allBindings) { + if (allBindings[key] === true && ctx.userImports[key].source !== "vue" && !ctx.userImports[key].source.endsWith(".vue")) { + returned += `get ${key}() { return ${key} }, `; + } else if (ctx.bindingMetadata[key] === "setup-let") { + const setArg = key === "v" ? `_v` : `v`; + returned += `get ${key}() { return ${key} }, set ${key}(${setArg}) { ${key} = ${setArg} }, `; + } else { + returned += `${key}, `; + } + } + returned = returned.replace(/, $/, "") + ` }`; + } else { + if (sfc.template && !sfc.template.src) { + if (options.templateOptions && options.templateOptions.ssr) { + hasInlinedSsrRenderFn = true; + } + const { code, ast, preamble, tips, errors, map: map2 } = compileTemplate({ + filename, + ast: sfc.template.ast, + source: sfc.template.content, + inMap: sfc.template.map, + ...options.templateOptions, + id: scopeId, + scoped: sfc.styles.some((s) => s.scoped), + isProd: options.isProd, + ssrCssVars: sfc.cssVars, + compilerOptions: { + ...options.templateOptions && options.templateOptions.compilerOptions, + inline: true, + isTS: ctx.isTS, + bindingMetadata: ctx.bindingMetadata + } + }); + templateMap = map2; + if (tips.length) { + tips.forEach(warnOnce); + } + const err = errors[0]; + if (typeof err === "string") { + throw new Error(err); + } else if (err) { + if (err.loc) { + err.message += ` + +` + sfc.filename + "\n" + shared.generateCodeFrame( + source, + err.loc.start.offset, + err.loc.end.offset + ) + ` +`; + } + throw err; + } + if (preamble) { + ctx.s.prepend(preamble); + } + if (ast && ast.helpers.has(CompilerDOM.UNREF)) { + ctx.helperImports.delete("unref"); + } + returned = code; + } else { + returned = `() => {}`; + } + } + if (!options.inlineTemplate && true) { + ctx.s.appendRight( + endOffset, + ` +const __returned__ = ${returned} +Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true }) +return __returned__ +} + +` + ); + } else { + ctx.s.appendRight(endOffset, ` +return ${returned} +} + +`); + } + const genDefaultAs = options.genDefaultAs ? `const ${options.genDefaultAs} =` : `export default`; + let runtimeOptions = ``; + if (!ctx.hasDefaultExportName && filename && filename !== DEFAULT_FILENAME) { + const match = filename.match(/([^/\\]+)\.\w+$/); + if (match) { + runtimeOptions += ` + __name: '${match[1]}',`; + } + } + if (hasInlinedSsrRenderFn) { + runtimeOptions += ` + __ssrInlineRender: true,`; + } + const propsDecl = genRuntimeProps(ctx); + if (propsDecl) runtimeOptions += ` + props: ${propsDecl},`; + const emitsDecl = genRuntimeEmits(ctx); + if (emitsDecl) runtimeOptions += ` + emits: ${emitsDecl},`; + let definedOptions = ""; + if (ctx.optionsRuntimeDecl) { + definedOptions = scriptSetup.content.slice(ctx.optionsRuntimeDecl.start, ctx.optionsRuntimeDecl.end).trim(); + } + const exposeCall = ctx.hasDefineExposeCall || options.inlineTemplate ? `` : ` __expose(); +`; + if (ctx.isTS) { + const def = (defaultExport ? ` + ...${normalScriptDefaultVar},` : ``) + (definedOptions ? ` + ...${definedOptions},` : ""); + ctx.s.prependLeft( + startOffset, + ` +${genDefaultAs} /*@__PURE__*/${ctx.helper( + `defineComponent` + )}({${def}${runtimeOptions} + ${hasAwait ? `async ` : ``}setup(${args}) { +${exposeCall}` + ); + ctx.s.appendRight(endOffset, `})`); + } else { + if (defaultExport || definedOptions) { + ctx.s.prependLeft( + startOffset, + ` +${genDefaultAs} /*@__PURE__*/Object.assign(${defaultExport ? `${normalScriptDefaultVar}, ` : ""}${definedOptions ? `${definedOptions}, ` : ""}{${runtimeOptions} + ${hasAwait ? `async ` : ``}setup(${args}) { +${exposeCall}` + ); + ctx.s.appendRight(endOffset, `})`); + } else { + ctx.s.prependLeft( + startOffset, + ` +${genDefaultAs} {${runtimeOptions} + ${hasAwait ? `async ` : ``}setup(${args}) { +${exposeCall}` + ); + ctx.s.appendRight(endOffset, `}`); + } + } + if (ctx.helperImports.size > 0) { + const runtimeModuleName = (_c = (_b = options.templateOptions) == null ? void 0 : _b.compilerOptions) == null ? void 0 : _c.runtimeModuleName; + const importSrc = runtimeModuleName ? JSON.stringify(runtimeModuleName) : `'vue'`; + ctx.s.prepend( + `import { ${[...ctx.helperImports].map((h) => `${h} as _${h}`).join(", ")} } from ${importSrc} +` + ); + } + const content = ctx.s.toString(); + let map = options.sourceMap !== false ? ctx.s.generateMap({ + source: filename, + hires: true, + includeContent: true + }) : void 0; + if (templateMap && map) { + const offset = content.indexOf(returned); + const templateLineOffset = content.slice(0, offset).split(/\r?\n/).length - 1; + map = mergeSourceMaps(map, templateMap, templateLineOffset); + } + return { + ...scriptSetup, + bindings: ctx.bindingMetadata, + imports: ctx.userImports, + content, + map, + scriptAst: scriptAst == null ? void 0 : scriptAst.body, + scriptSetupAst: scriptSetupAst == null ? void 0 : scriptSetupAst.body, + deps: ctx.deps ? [...ctx.deps] : void 0 + }; +} +function registerBinding(bindings, node, type) { + bindings[node.name] = type; +} +function walkDeclaration(from, node, bindings, userImportAliases, hoistStatic, isPropsDestructureEnabled = false) { + let isAllLiteral = false; + if (node.type === "VariableDeclaration") { + const isConst = node.kind === "const"; + isAllLiteral = isConst && node.declarations.every( + (decl) => decl.id.type === "Identifier" && isStaticNode(decl.init) + ); + for (const { id, init: _init } of node.declarations) { + const init = _init && CompilerDOM.unwrapTSNode(_init); + const isConstMacroCall = isConst && isCallOf( + init, + (c) => c === DEFINE_PROPS || c === DEFINE_EMITS || c === WITH_DEFAULTS || c === DEFINE_SLOTS + ); + if (id.type === "Identifier") { + let bindingType; + const userReactiveBinding = userImportAliases["reactive"]; + if ((hoistStatic || from === "script") && (isAllLiteral || isConst && isStaticNode(init))) { + bindingType = "literal-const"; + } else if (isCallOf(init, userReactiveBinding)) { + bindingType = isConst ? "setup-reactive-const" : "setup-let"; + } else if ( + // if a declaration is a const literal, we can mark it so that + // the generated render fn code doesn't need to unref() it + isConstMacroCall || isConst && canNeverBeRef(init, userReactiveBinding) + ) { + bindingType = isCallOf(init, DEFINE_PROPS) ? "setup-reactive-const" : "setup-const"; + } else if (isConst) { + if (isCallOf( + init, + (m) => m === userImportAliases["ref"] || m === userImportAliases["computed"] || m === userImportAliases["shallowRef"] || m === userImportAliases["customRef"] || m === userImportAliases["toRef"] || m === userImportAliases["useTemplateRef"] || m === DEFINE_MODEL + )) { + bindingType = "setup-ref"; + } else { + bindingType = "setup-maybe-ref"; + } + } else { + bindingType = "setup-let"; + } + registerBinding(bindings, id, bindingType); + } else { + if (isCallOf(init, DEFINE_PROPS) && isPropsDestructureEnabled) { + continue; + } + if (id.type === "ObjectPattern") { + walkObjectPattern(id, bindings, isConst, isConstMacroCall); + } else if (id.type === "ArrayPattern") { + walkArrayPattern(id, bindings, isConst, isConstMacroCall); + } + } + } + } else if (node.type === "TSEnumDeclaration") { + isAllLiteral = node.members.every( + (member) => !member.initializer || isStaticNode(member.initializer) + ); + bindings[node.id.name] = isAllLiteral ? "literal-const" : "setup-const"; + } else if (node.type === "FunctionDeclaration" || node.type === "ClassDeclaration") { + bindings[node.id.name] = "setup-const"; + } + return isAllLiteral; +} +function walkObjectPattern(node, bindings, isConst, isDefineCall = false) { + for (const p of node.properties) { + if (p.type === "ObjectProperty") { + if (p.key.type === "Identifier" && p.key === p.value) { + const type = isDefineCall ? "setup-const" : isConst ? "setup-maybe-ref" : "setup-let"; + registerBinding(bindings, p.key, type); + } else { + walkPattern(p.value, bindings, isConst, isDefineCall); + } + } else { + const type = isConst ? "setup-const" : "setup-let"; + registerBinding(bindings, p.argument, type); + } + } +} +function walkArrayPattern(node, bindings, isConst, isDefineCall = false) { + for (const e of node.elements) { + e && walkPattern(e, bindings, isConst, isDefineCall); + } +} +function walkPattern(node, bindings, isConst, isDefineCall = false) { + if (node.type === "Identifier") { + const type = isDefineCall ? "setup-const" : isConst ? "setup-maybe-ref" : "setup-let"; + registerBinding(bindings, node, type); + } else if (node.type === "RestElement") { + const type = isConst ? "setup-const" : "setup-let"; + registerBinding(bindings, node.argument, type); + } else if (node.type === "ObjectPattern") { + walkObjectPattern(node, bindings, isConst); + } else if (node.type === "ArrayPattern") { + walkArrayPattern(node, bindings, isConst); + } else if (node.type === "AssignmentPattern") { + if (node.left.type === "Identifier") { + const type = isDefineCall ? "setup-const" : isConst ? "setup-maybe-ref" : "setup-let"; + registerBinding(bindings, node.left, type); + } else { + walkPattern(node.left, bindings, isConst); + } + } +} +function canNeverBeRef(node, userReactiveImport) { + if (isCallOf(node, userReactiveImport)) { + return true; + } + switch (node.type) { + case "UnaryExpression": + case "BinaryExpression": + case "ArrayExpression": + case "ObjectExpression": + case "FunctionExpression": + case "ArrowFunctionExpression": + case "UpdateExpression": + case "ClassExpression": + case "TaggedTemplateExpression": + return true; + case "SequenceExpression": + return canNeverBeRef( + node.expressions[node.expressions.length - 1], + userReactiveImport + ); + default: + if (isLiteralNode(node)) { + return true; + } + return false; + } +} +function isStaticNode(node) { + node = CompilerDOM.unwrapTSNode(node); + switch (node.type) { + case "UnaryExpression": + return isStaticNode(node.argument); + case "LogicalExpression": + // 1 > 2 + case "BinaryExpression": + return isStaticNode(node.left) && isStaticNode(node.right); + case "ConditionalExpression": { + return isStaticNode(node.test) && isStaticNode(node.consequent) && isStaticNode(node.alternate); + } + case "SequenceExpression": + // (1, 2) + case "TemplateLiteral": + return node.expressions.every((expr) => isStaticNode(expr)); + case "ParenthesizedExpression": + return isStaticNode(node.expression); + case "StringLiteral": + case "NumericLiteral": + case "BooleanLiteral": + case "NullLiteral": + case "BigIntLiteral": + return true; + } + return false; +} +function mergeSourceMaps(scriptMap, templateMap, templateLineOffset) { + const generator = new sourceMapJs.SourceMapGenerator(); + const addMapping = (map, lineOffset = 0) => { + const consumer = new sourceMapJs.SourceMapConsumer(map); + consumer.sources.forEach((sourceFile) => { + generator._sources.add(sourceFile); + const sourceContent = consumer.sourceContentFor(sourceFile); + if (sourceContent != null) { + generator.setSourceContent(sourceFile, sourceContent); + } + }); + consumer.eachMapping((m) => { + if (m.originalLine == null) return; + generator.addMapping({ + generated: { + line: m.generatedLine + lineOffset, + column: m.generatedColumn + }, + original: { + line: m.originalLine, + column: m.originalColumn + }, + source: m.source, + name: m.name + }); + }); + }; + addMapping(scriptMap); + addMapping(templateMap, templateLineOffset); + generator._sourceRoot = scriptMap.sourceRoot; + generator._file = scriptMap.file; + return generator.toJSON(); +} + +const version = "3.5.18"; +const parseCache = parseCache$1; +const errorMessages = { + ...CompilerDOM.errorMessages, + ...CompilerDOM.DOMErrorMessages +}; +const walk = estreeWalker.walk; +const shouldTransformRef = () => false; + +exports.extractIdentifiers = compilerCore.extractIdentifiers; +exports.generateCodeFrame = compilerCore.generateCodeFrame; +exports.isInDestructureAssignment = compilerCore.isInDestructureAssignment; +exports.isStaticProperty = compilerCore.isStaticProperty; +exports.walkIdentifiers = compilerCore.walkIdentifiers; +exports.MagicString = MagicString; +exports.babelParse = parser$2.parse; +exports.compileScript = compileScript; +exports.compileStyle = compileStyle; +exports.compileStyleAsync = compileStyleAsync; +exports.compileTemplate = compileTemplate; +exports.errorMessages = errorMessages; +exports.extractRuntimeEmits = extractRuntimeEmits; +exports.extractRuntimeProps = extractRuntimeProps; +exports.inferRuntimeType = inferRuntimeType; +exports.invalidateTypeCache = invalidateTypeCache; +exports.parse = parse$1; +exports.parseCache = parseCache; +exports.registerTS = registerTS; +exports.resolveTypeElements = resolveTypeElements; +exports.rewriteDefault = rewriteDefault; +exports.rewriteDefaultAST = rewriteDefaultAST; +exports.shouldTransformRef = shouldTransformRef; +exports.version = version; +exports.walk = walk; diff --git a/node_modules/@vue/compiler-sfc/dist/compiler-sfc.d.ts b/node_modules/@vue/compiler-sfc/dist/compiler-sfc.d.ts new file mode 100644 index 0000000..5f80757 --- /dev/null +++ b/node_modules/@vue/compiler-sfc/dist/compiler-sfc.d.ts @@ -0,0 +1,485 @@ +import * as _babel_types from '@babel/types'; +import { Statement, Expression, TSType, Node, Program, CallExpression, ObjectPattern, TSModuleDeclaration, TSPropertySignature, TSMethodSignature, TSCallSignatureDeclaration, TSFunctionType } from '@babel/types'; +import { RootNode, CompilerOptions, CodegenResult, ParserOptions, RawSourceMap, CompilerError, SourceLocation, BindingMetadata as BindingMetadata$1 } from '@vue/compiler-core'; +export { BindingMetadata, CompilerError, CompilerOptions, extractIdentifiers, generateCodeFrame, isInDestructureAssignment, isStaticProperty, walkIdentifiers } from '@vue/compiler-core'; +import { ParserPlugin } from '@babel/parser'; +export { parse as babelParse } from '@babel/parser'; +import { Result, LazyResult } from 'postcss'; +import MagicString from 'magic-string'; +export { default as MagicString } from 'magic-string'; +import TS from 'typescript'; + +export interface AssetURLTagConfig { + [name: string]: string[]; +} +export interface AssetURLOptions { + /** + * If base is provided, instead of transforming relative asset urls into + * imports, they will be directly rewritten to absolute urls. + */ + base?: string | null; + /** + * If true, also processes absolute urls. + */ + includeAbsolute?: boolean; + tags?: AssetURLTagConfig; +} + +export interface TemplateCompiler { + compile(source: string | RootNode, options: CompilerOptions): CodegenResult; + parse(template: string, options: ParserOptions): RootNode; +} +export interface SFCTemplateCompileResults { + code: string; + ast?: RootNode; + preamble?: string; + source: string; + tips: string[]; + errors: (string | CompilerError)[]; + map?: RawSourceMap; +} +export interface SFCTemplateCompileOptions { + source: string; + ast?: RootNode; + filename: string; + id: string; + scoped?: boolean; + slotted?: boolean; + isProd?: boolean; + ssr?: boolean; + ssrCssVars?: string[]; + inMap?: RawSourceMap; + compiler?: TemplateCompiler; + compilerOptions?: CompilerOptions; + preprocessLang?: string; + preprocessOptions?: any; + /** + * In some cases, compiler-sfc may not be inside the project root (e.g. when + * linked or globally installed). In such cases a custom `require` can be + * passed to correctly resolve the preprocessors. + */ + preprocessCustomRequire?: (id: string) => any; + /** + * Configure what tags/attributes to transform into asset url imports, + * or disable the transform altogether with `false`. + */ + transformAssetUrls?: AssetURLOptions | AssetURLTagConfig | boolean; +} +export declare function compileTemplate(options: SFCTemplateCompileOptions): SFCTemplateCompileResults; + +export interface SFCScriptCompileOptions { + /** + * Scope ID for prefixing injected CSS variables. + * This must be consistent with the `id` passed to `compileStyle`. + */ + id: string; + /** + * Production mode. Used to determine whether to generate hashed CSS variables + */ + isProd?: boolean; + /** + * Enable/disable source map. Defaults to true. + */ + sourceMap?: boolean; + /** + * https://babeljs.io/docs/en/babel-parser#plugins + */ + babelParserPlugins?: ParserPlugin[]; + /** + * A list of files to parse for global types to be made available for type + * resolving in SFC macros. The list must be fully resolved file system paths. + */ + globalTypeFiles?: string[]; + /** + * Compile the template and inline the resulting render function + * directly inside setup(). + * - Only affects `<script setup>` + * - This should only be used in production because it prevents the template + * from being hot-reloaded separately from component state. + */ + inlineTemplate?: boolean; + /** + * Generate the final component as a variable instead of default export. + * This is useful in e.g. @vitejs/plugin-vue where the script needs to be + * placed inside the main module. + */ + genDefaultAs?: string; + /** + * Options for template compilation when inlining. Note these are options that + * would normally be passed to `compiler-sfc`'s own `compileTemplate()`, not + * options passed to `compiler-dom`. + */ + templateOptions?: Partial<SFCTemplateCompileOptions>; + /** + * Hoist <script setup> static constants. + * - Only enables when one `<script setup>` exists. + * @default true + */ + hoistStatic?: boolean; + /** + * Set to `false` to disable reactive destructure for `defineProps` (pre-3.5 + * behavior), or set to `'error'` to throw hard error on props destructures. + * @default true + */ + propsDestructure?: boolean | 'error'; + /** + * File system access methods to be used when resolving types + * imported in SFC macros. Defaults to ts.sys in Node.js, can be overwritten + * to use a virtual file system for use in browsers (e.g. in REPLs) + */ + fs?: { + fileExists(file: string): boolean; + readFile(file: string): string | undefined; + realpath?(file: string): string; + }; + /** + * Transform Vue SFCs into custom elements. + */ + customElement?: boolean | ((filename: string) => boolean); +} +interface ImportBinding { + isType: boolean; + imported: string; + local: string; + source: string; + isFromSetup: boolean; + isUsedInTemplate: boolean; +} +/** + * Compile `<script setup>` + * It requires the whole SFC descriptor because we need to handle and merge + * normal `<script>` + `<script setup>` if both are present. + */ +export declare function compileScript(sfc: SFCDescriptor, options: SFCScriptCompileOptions): SFCScriptBlock; + +export interface SFCParseOptions { + filename?: string; + sourceMap?: boolean; + sourceRoot?: string; + pad?: boolean | 'line' | 'space'; + ignoreEmpty?: boolean; + compiler?: TemplateCompiler; + templateParseOptions?: ParserOptions; +} +export interface SFCBlock { + type: string; + content: string; + attrs: Record<string, string | true>; + loc: SourceLocation; + map?: RawSourceMap; + lang?: string; + src?: string; +} +export interface SFCTemplateBlock extends SFCBlock { + type: 'template'; + ast?: RootNode; +} +export interface SFCScriptBlock extends SFCBlock { + type: 'script'; + setup?: string | boolean; + bindings?: BindingMetadata$1; + imports?: Record<string, ImportBinding>; + scriptAst?: _babel_types.Statement[]; + scriptSetupAst?: _babel_types.Statement[]; + warnings?: string[]; + /** + * Fully resolved dependency file paths (unix slashes) with imported types + * used in macros, used for HMR cache busting in @vitejs/plugin-vue and + * vue-loader. + */ + deps?: string[]; +} +export interface SFCStyleBlock extends SFCBlock { + type: 'style'; + scoped?: boolean; + module?: string | boolean; +} +export interface SFCDescriptor { + filename: string; + source: string; + template: SFCTemplateBlock | null; + script: SFCScriptBlock | null; + scriptSetup: SFCScriptBlock | null; + styles: SFCStyleBlock[]; + customBlocks: SFCBlock[]; + cssVars: string[]; + /** + * whether the SFC uses :slotted() modifier. + * this is used as a compiler optimization hint. + */ + slotted: boolean; + /** + * compare with an existing descriptor to determine whether HMR should perform + * a reload vs. re-render. + * + * Note: this comparison assumes the prev/next script are already identical, + * and only checks the special case where <script setup lang="ts"> unused import + * pruning result changes due to template changes. + */ + shouldForceReload: (prevImports: Record<string, ImportBinding>) => boolean; +} +export interface SFCParseResult { + descriptor: SFCDescriptor; + errors: (CompilerError | SyntaxError)[]; +} +export declare function parse(source: string, options?: SFCParseOptions): SFCParseResult; + +type PreprocessLang = 'less' | 'sass' | 'scss' | 'styl' | 'stylus'; + +export interface SFCStyleCompileOptions { + source: string; + filename: string; + id: string; + scoped?: boolean; + trim?: boolean; + isProd?: boolean; + inMap?: RawSourceMap; + preprocessLang?: PreprocessLang; + preprocessOptions?: any; + preprocessCustomRequire?: (id: string) => any; + postcssOptions?: any; + postcssPlugins?: any[]; + /** + * @deprecated use `inMap` instead. + */ + map?: RawSourceMap; +} +/** + * Aligns with postcss-modules + * https://github.com/css-modules/postcss-modules + */ +interface CSSModulesOptions { + scopeBehaviour?: 'global' | 'local'; + generateScopedName?: string | ((name: string, filename: string, css: string) => string); + hashPrefix?: string; + localsConvention?: 'camelCase' | 'camelCaseOnly' | 'dashes' | 'dashesOnly'; + exportGlobals?: boolean; + globalModulePaths?: RegExp[]; +} +export interface SFCAsyncStyleCompileOptions extends SFCStyleCompileOptions { + isAsync?: boolean; + modules?: boolean; + modulesOptions?: CSSModulesOptions; +} +export interface SFCStyleCompileResults { + code: string; + map: RawSourceMap | undefined; + rawResult: Result | LazyResult | undefined; + errors: Error[]; + modules?: Record<string, string>; + dependencies: Set<string>; +} +export declare function compileStyle(options: SFCStyleCompileOptions): SFCStyleCompileResults; +export declare function compileStyleAsync(options: SFCAsyncStyleCompileOptions): Promise<SFCStyleCompileResults>; + +export declare function rewriteDefault(input: string, as: string, parserPlugins?: ParserPlugin[]): string; +/** + * Utility for rewriting `export default` in a script block into a variable + * declaration so that we can inject things into it + */ +export declare function rewriteDefaultAST(ast: Statement[], s: MagicString, as: string): void; + +type PropsDestructureBindings = Record<string, // public prop key +{ + local: string; + default?: Expression; +}>; +export declare function extractRuntimeProps(ctx: TypeResolveContext): string | undefined; + +interface ModelDecl { + type: TSType | undefined; + options: string | undefined; + identifier: string | undefined; + runtimeOptionNodes: Node[]; +} + +declare enum BindingTypes { + /** + * returned from data() + */ + DATA = "data", + /** + * declared as a prop + */ + PROPS = "props", + /** + * a local alias of a `<script setup>` destructured prop. + * the original is stored in __propsAliases of the bindingMetadata object. + */ + PROPS_ALIASED = "props-aliased", + /** + * a let binding (may or may not be a ref) + */ + SETUP_LET = "setup-let", + /** + * a const binding that can never be a ref. + * these bindings don't need `unref()` calls when processed in inlined + * template expressions. + */ + SETUP_CONST = "setup-const", + /** + * a const binding that does not need `unref()`, but may be mutated. + */ + SETUP_REACTIVE_CONST = "setup-reactive-const", + /** + * a const binding that may be a ref. + */ + SETUP_MAYBE_REF = "setup-maybe-ref", + /** + * bindings that are guaranteed to be refs + */ + SETUP_REF = "setup-ref", + /** + * declared by other options, e.g. computed, inject + */ + OPTIONS = "options", + /** + * a literal constant, e.g. 'foo', 1, true + */ + LITERAL_CONST = "literal-const" +} +type BindingMetadata = { + [key: string]: BindingTypes | undefined; +} & { + __isScriptSetup?: boolean; + __propsAliases?: Record<string, string>; +}; + +export declare class ScriptCompileContext { + descriptor: SFCDescriptor; + options: Partial<SFCScriptCompileOptions>; + isJS: boolean; + isTS: boolean; + isCE: boolean; + scriptAst: Program | null; + scriptSetupAst: Program | null; + source: string; + filename: string; + s: MagicString; + startOffset: number | undefined; + endOffset: number | undefined; + scope?: TypeScope; + globalScopes?: TypeScope[]; + userImports: Record<string, ImportBinding>; + hasDefinePropsCall: boolean; + hasDefineEmitCall: boolean; + hasDefineExposeCall: boolean; + hasDefaultExportName: boolean; + hasDefaultExportRender: boolean; + hasDefineOptionsCall: boolean; + hasDefineSlotsCall: boolean; + hasDefineModelCall: boolean; + propsCall: CallExpression | undefined; + propsDecl: Node | undefined; + propsRuntimeDecl: Node | undefined; + propsTypeDecl: Node | undefined; + propsDestructureDecl: ObjectPattern | undefined; + propsDestructuredBindings: PropsDestructureBindings; + propsDestructureRestId: string | undefined; + propsRuntimeDefaults: Node | undefined; + emitsRuntimeDecl: Node | undefined; + emitsTypeDecl: Node | undefined; + emitDecl: Node | undefined; + modelDecls: Record<string, ModelDecl>; + optionsRuntimeDecl: Node | undefined; + bindingMetadata: BindingMetadata; + helperImports: Set<string>; + helper(key: string): string; + /** + * to be exposed on compiled script block for HMR cache busting + */ + deps?: Set<string>; + /** + * cache for resolved fs + */ + fs?: NonNullable<SFCScriptCompileOptions['fs']>; + constructor(descriptor: SFCDescriptor, options: Partial<SFCScriptCompileOptions>); + getString(node: Node, scriptSetup?: boolean): string; + warn(msg: string, node: Node, scope?: TypeScope): void; + error(msg: string, node: Node, scope?: TypeScope): never; +} + +export type SimpleTypeResolveOptions = Partial<Pick<SFCScriptCompileOptions, 'globalTypeFiles' | 'fs' | 'babelParserPlugins' | 'isProd'>>; +/** + * TypeResolveContext is compatible with ScriptCompileContext + * but also allows a simpler version of it with minimal required properties + * when resolveType needs to be used in a non-SFC context, e.g. in a babel + * plugin. The simplest context can be just: + * ```ts + * const ctx: SimpleTypeResolveContext = { + * filename: '...', + * source: '...', + * options: {}, + * error() {}, + * ast: [] + * } + * ``` + */ +export type SimpleTypeResolveContext = Pick<ScriptCompileContext, 'source' | 'filename' | 'error' | 'helper' | 'getString' | 'propsTypeDecl' | 'propsRuntimeDefaults' | 'propsDestructuredBindings' | 'emitsTypeDecl' | 'isCE'> & Partial<Pick<ScriptCompileContext, 'scope' | 'globalScopes' | 'deps' | 'fs'>> & { + ast: Statement[]; + options: SimpleTypeResolveOptions; +}; +export type TypeResolveContext = ScriptCompileContext | SimpleTypeResolveContext; +type Import = Pick<ImportBinding, 'source' | 'imported'>; +interface WithScope { + _ownerScope: TypeScope; +} +type ScopeTypeNode = Node & WithScope & { + _ns?: TSModuleDeclaration & WithScope; +}; +declare class TypeScope { + filename: string; + source: string; + offset: number; + imports: Record<string, Import>; + types: Record<string, ScopeTypeNode>; + declares: Record<string, ScopeTypeNode>; + constructor(filename: string, source: string, offset?: number, imports?: Record<string, Import>, types?: Record<string, ScopeTypeNode>, declares?: Record<string, ScopeTypeNode>); + isGenericScope: boolean; + resolvedImportSources: Record<string, string>; + exportedTypes: Record<string, ScopeTypeNode>; + exportedDeclares: Record<string, ScopeTypeNode>; +} +interface MaybeWithScope { + _ownerScope?: TypeScope; +} +interface ResolvedElements { + props: Record<string, (TSPropertySignature | TSMethodSignature) & { + _ownerScope: TypeScope; + }>; + calls?: (TSCallSignatureDeclaration | TSFunctionType)[]; +} +/** + * Resolve arbitrary type node to a list of type elements that can be then + * mapped to runtime props or emits. + */ +export declare function resolveTypeElements(ctx: TypeResolveContext, node: Node & MaybeWithScope & { + _resolvedElements?: ResolvedElements; +}, scope?: TypeScope, typeParameters?: Record<string, Node>): ResolvedElements; +/** + * @private + */ +export declare function registerTS(_loadTS: () => typeof TS): void; +/** + * @private + */ +export declare function invalidateTypeCache(filename: string): void; +export declare function inferRuntimeType(ctx: TypeResolveContext, node: Node & MaybeWithScope, scope?: TypeScope, isKeyOf?: boolean): string[]; + +export declare function extractRuntimeEmits(ctx: TypeResolveContext): Set<string>; + +export declare const version: string; + +export declare const parseCache: Map<string, SFCParseResult>; +export declare const errorMessages: Record<number, string>; + +export declare const walk: any; + +/** + * @deprecated this is preserved to avoid breaking vite-plugin-vue < 5.0 + * with reactivityTransform: true. The desired behavior should be silently + * ignoring the option instead of breaking. + */ +export declare const shouldTransformRef: () => boolean; + + diff --git a/node_modules/@vue/compiler-sfc/dist/compiler-sfc.esm-browser.js b/node_modules/@vue/compiler-sfc/dist/compiler-sfc.esm-browser.js new file mode 100644 index 0000000..b0faf6e --- /dev/null +++ b/node_modules/@vue/compiler-sfc/dist/compiler-sfc.esm-browser.js @@ -0,0 +1,50457 @@ +/** +* @vue/compiler-sfc v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function makeMap(str) { + const map = /* @__PURE__ */ Object.create(null); + for (const key of str.split(",")) map[key] = 1; + return (val) => val in map; +} + +const EMPTY_OBJ = Object.freeze({}) ; +const NOOP = () => { +}; +const NO = () => false; +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +const extend = Object.assign; +const hasOwnProperty$3 = Object.prototype.hasOwnProperty; +const hasOwn = (val, key) => hasOwnProperty$3.call(val, key); +const isArray$3 = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isFunction$1 = (val) => typeof val === "function"; +const isString$1 = (val) => typeof val === "string"; +const isSymbol$1 = (val) => typeof val === "symbol"; +const isObject$2 = (val) => val !== null && typeof val === "object"; +const objectToString$1 = Object.prototype.toString; +const toTypeString = (value) => objectToString$1.call(value); +const isPlainObject = (val) => toTypeString(val) === "[object Object]"; +const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction( + (str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); + } +); +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction( + (str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; + } +); +const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/; +function genPropsAccessExp(name) { + return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`; +} +function genCacheKey(source, options) { + return source + JSON.stringify( + options, + (_, val) => typeof val === "function" ? val.toString() : val + ); +} + +const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `NEED_HYDRATION`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `CACHED`, + [-2]: `BAIL` +}; + +const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" +}; + +const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol"; +const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); + +const range = 2; +function generateCodeFrame(source, start = 0, end = source.length) { + start = Math.max(0, Math.min(start, source.length)); + end = Math.max(0, Math.min(end, source.length)); + if (start > end) return ""; + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); +} + +function normalizeStyle(value) { + if (isArray$3(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString$1(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString$1(value) || isObject$2(value)) { + return value; + } +} +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function stringifyStyle(styles) { + if (!styles) return ""; + if (isString$1(styles)) return styles; + let ret = ""; + for (const key in styles) { + const value = styles[key]; + if (isString$1(value) || typeof value === "number") { + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + ret += `${normalizedKey}:${value};`; + } + } + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString$1(value)) { + res = value; + } else if (isArray$3(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject$2(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} + +const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; +const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); +const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); +const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); +const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + +const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +const isBooleanAttr = /* @__PURE__ */ makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/; +const attrValidationCache = {}; +function isSSRSafeAttrName(name) { + if (attrValidationCache.hasOwnProperty(name)) { + return attrValidationCache[name]; + } + const isUnsafe = unsafeAttrCharRE.test(name); + if (isUnsafe) { + console.error(`unsafe attribute name: ${name}`); + } + return attrValidationCache[name] = !isUnsafe; +} +const propsToAttrMap = { + acceptCharset: "accept-charset", + className: "class", + htmlFor: "for", + httpEquiv: "http-equiv" +}; +const isKnownHtmlAttr = /* @__PURE__ */ makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +const isKnownSvgAttr = /* @__PURE__ */ makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); +const isKnownMathMLAttr = /* @__PURE__ */ makeMap( + `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns` +); + +const escapeRE = /["'&<>]/; +function escapeHtml(string) { + const str = "" + string; + const match = escapeRE.exec(str); + if (!match) { + return str; + } + let html = ""; + let escaped; + let index; + let lastIndex = 0; + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + escaped = """; + break; + case 38: + escaped = "&"; + break; + case 39: + escaped = "'"; + break; + case 60: + escaped = "<"; + break; + case 62: + escaped = ">"; + break; + default: + continue; + } + if (lastIndex !== index) { + html += str.slice(lastIndex, index); + } + lastIndex = index + 1; + html += escaped; + } + return lastIndex !== index ? html + str.slice(lastIndex, index) : html; +} +const cssVarNameEscapeSymbolsRE = /[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g; +function getEscapedCssVarName(key, doubleEscape) { + return key.replace( + cssVarNameEscapeSymbolsRE, + (s) => doubleEscape ? s === '"' ? '\\\\\\"' : `\\\\${s}` : `\\${s}` + ); +} + +const isRef = (val) => { + return !!(val && val["__v_isRef"] === true); +}; +const toDisplayString = (val) => { + return isString$1(val) ? val : val == null ? "" : isArray$3(val) || isObject$2(val) && (val.toString === objectToString$1 || !isFunction$1(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val); +}; +const replacer = (_key, val) => { + if (isRef(val)) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce( + (entries, [key, val2], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) + }; + } else if (isSymbol$1(val)) { + return stringifySymbol(val); + } else if (isObject$2(val) && !isArray$3(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; +const stringifySymbol = (v, i = "") => { + var _a; + return ( + // Symbol.description in es2019+ so we need to cast here to pass + // the lib: es2016 check + isSymbol$1(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v + ); +}; + +const FRAGMENT = Symbol(`Fragment` ); +const TELEPORT = Symbol(`Teleport` ); +const SUSPENSE = Symbol(`Suspense` ); +const KEEP_ALIVE = Symbol(`KeepAlive` ); +const BASE_TRANSITION = Symbol( + `BaseTransition` +); +const OPEN_BLOCK = Symbol(`openBlock` ); +const CREATE_BLOCK = Symbol(`createBlock` ); +const CREATE_ELEMENT_BLOCK = Symbol( + `createElementBlock` +); +const CREATE_VNODE = Symbol(`createVNode` ); +const CREATE_ELEMENT_VNODE = Symbol( + `createElementVNode` +); +const CREATE_COMMENT = Symbol( + `createCommentVNode` +); +const CREATE_TEXT = Symbol( + `createTextVNode` +); +const CREATE_STATIC = Symbol( + `createStaticVNode` +); +const RESOLVE_COMPONENT = Symbol( + `resolveComponent` +); +const RESOLVE_DYNAMIC_COMPONENT = Symbol( + `resolveDynamicComponent` +); +const RESOLVE_DIRECTIVE = Symbol( + `resolveDirective` +); +const RESOLVE_FILTER = Symbol( + `resolveFilter` +); +const WITH_DIRECTIVES = Symbol( + `withDirectives` +); +const RENDER_LIST = Symbol(`renderList` ); +const RENDER_SLOT = Symbol(`renderSlot` ); +const CREATE_SLOTS = Symbol(`createSlots` ); +const TO_DISPLAY_STRING = Symbol( + `toDisplayString` +); +const MERGE_PROPS = Symbol(`mergeProps` ); +const NORMALIZE_CLASS = Symbol( + `normalizeClass` +); +const NORMALIZE_STYLE = Symbol( + `normalizeStyle` +); +const NORMALIZE_PROPS = Symbol( + `normalizeProps` +); +const GUARD_REACTIVE_PROPS = Symbol( + `guardReactiveProps` +); +const TO_HANDLERS = Symbol(`toHandlers` ); +const CAMELIZE = Symbol(`camelize` ); +const CAPITALIZE = Symbol(`capitalize` ); +const TO_HANDLER_KEY = Symbol( + `toHandlerKey` +); +const SET_BLOCK_TRACKING = Symbol( + `setBlockTracking` +); +const PUSH_SCOPE_ID = Symbol(`pushScopeId` ); +const POP_SCOPE_ID = Symbol(`popScopeId` ); +const WITH_CTX = Symbol(`withCtx` ); +const UNREF = Symbol(`unref` ); +const IS_REF = Symbol(`isRef` ); +const WITH_MEMO = Symbol(`withMemo` ); +const IS_MEMO_SAME = Symbol(`isMemoSame` ); +const helperNameMap = { + [FRAGMENT]: `Fragment`, + [TELEPORT]: `Teleport`, + [SUSPENSE]: `Suspense`, + [KEEP_ALIVE]: `KeepAlive`, + [BASE_TRANSITION]: `BaseTransition`, + [OPEN_BLOCK]: `openBlock`, + [CREATE_BLOCK]: `createBlock`, + [CREATE_ELEMENT_BLOCK]: `createElementBlock`, + [CREATE_VNODE]: `createVNode`, + [CREATE_ELEMENT_VNODE]: `createElementVNode`, + [CREATE_COMMENT]: `createCommentVNode`, + [CREATE_TEXT]: `createTextVNode`, + [CREATE_STATIC]: `createStaticVNode`, + [RESOLVE_COMPONENT]: `resolveComponent`, + [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`, + [RESOLVE_DIRECTIVE]: `resolveDirective`, + [RESOLVE_FILTER]: `resolveFilter`, + [WITH_DIRECTIVES]: `withDirectives`, + [RENDER_LIST]: `renderList`, + [RENDER_SLOT]: `renderSlot`, + [CREATE_SLOTS]: `createSlots`, + [TO_DISPLAY_STRING]: `toDisplayString`, + [MERGE_PROPS]: `mergeProps`, + [NORMALIZE_CLASS]: `normalizeClass`, + [NORMALIZE_STYLE]: `normalizeStyle`, + [NORMALIZE_PROPS]: `normalizeProps`, + [GUARD_REACTIVE_PROPS]: `guardReactiveProps`, + [TO_HANDLERS]: `toHandlers`, + [CAMELIZE]: `camelize`, + [CAPITALIZE]: `capitalize`, + [TO_HANDLER_KEY]: `toHandlerKey`, + [SET_BLOCK_TRACKING]: `setBlockTracking`, + [PUSH_SCOPE_ID]: `pushScopeId`, + [POP_SCOPE_ID]: `popScopeId`, + [WITH_CTX]: `withCtx`, + [UNREF]: `unref`, + [IS_REF]: `isRef`, + [WITH_MEMO]: `withMemo`, + [IS_MEMO_SAME]: `isMemoSame` +}; +function registerRuntimeHelpers(helpers) { + Object.getOwnPropertySymbols(helpers).forEach((s) => { + helperNameMap[s] = helpers[s]; + }); +} + +const Namespaces = { + "HTML": 0, + "0": "HTML", + "SVG": 1, + "1": "SVG", + "MATH_ML": 2, + "2": "MATH_ML" +}; +const NodeTypes = { + "ROOT": 0, + "0": "ROOT", + "ELEMENT": 1, + "1": "ELEMENT", + "TEXT": 2, + "2": "TEXT", + "COMMENT": 3, + "3": "COMMENT", + "SIMPLE_EXPRESSION": 4, + "4": "SIMPLE_EXPRESSION", + "INTERPOLATION": 5, + "5": "INTERPOLATION", + "ATTRIBUTE": 6, + "6": "ATTRIBUTE", + "DIRECTIVE": 7, + "7": "DIRECTIVE", + "COMPOUND_EXPRESSION": 8, + "8": "COMPOUND_EXPRESSION", + "IF": 9, + "9": "IF", + "IF_BRANCH": 10, + "10": "IF_BRANCH", + "FOR": 11, + "11": "FOR", + "TEXT_CALL": 12, + "12": "TEXT_CALL", + "VNODE_CALL": 13, + "13": "VNODE_CALL", + "JS_CALL_EXPRESSION": 14, + "14": "JS_CALL_EXPRESSION", + "JS_OBJECT_EXPRESSION": 15, + "15": "JS_OBJECT_EXPRESSION", + "JS_PROPERTY": 16, + "16": "JS_PROPERTY", + "JS_ARRAY_EXPRESSION": 17, + "17": "JS_ARRAY_EXPRESSION", + "JS_FUNCTION_EXPRESSION": 18, + "18": "JS_FUNCTION_EXPRESSION", + "JS_CONDITIONAL_EXPRESSION": 19, + "19": "JS_CONDITIONAL_EXPRESSION", + "JS_CACHE_EXPRESSION": 20, + "20": "JS_CACHE_EXPRESSION", + "JS_BLOCK_STATEMENT": 21, + "21": "JS_BLOCK_STATEMENT", + "JS_TEMPLATE_LITERAL": 22, + "22": "JS_TEMPLATE_LITERAL", + "JS_IF_STATEMENT": 23, + "23": "JS_IF_STATEMENT", + "JS_ASSIGNMENT_EXPRESSION": 24, + "24": "JS_ASSIGNMENT_EXPRESSION", + "JS_SEQUENCE_EXPRESSION": 25, + "25": "JS_SEQUENCE_EXPRESSION", + "JS_RETURN_STATEMENT": 26, + "26": "JS_RETURN_STATEMENT" +}; +const ElementTypes = { + "ELEMENT": 0, + "0": "ELEMENT", + "COMPONENT": 1, + "1": "COMPONENT", + "SLOT": 2, + "2": "SLOT", + "TEMPLATE": 3, + "3": "TEMPLATE" +}; +const ConstantTypes = { + "NOT_CONSTANT": 0, + "0": "NOT_CONSTANT", + "CAN_SKIP_PATCH": 1, + "1": "CAN_SKIP_PATCH", + "CAN_CACHE": 2, + "2": "CAN_CACHE", + "CAN_STRINGIFY": 3, + "3": "CAN_STRINGIFY" +}; +const locStub = { + start: { line: 1, column: 1, offset: 0 }, + end: { line: 1, column: 1, offset: 0 }, + source: "" +}; +function createRoot(children, source = "") { + return { + type: 0, + source, + children, + helpers: /* @__PURE__ */ new Set(), + components: [], + directives: [], + hoists: [], + imports: [], + cached: [], + temps: 0, + codegenNode: void 0, + loc: locStub + }; +} +function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) { + if (context) { + if (isBlock) { + context.helper(OPEN_BLOCK); + context.helper(getVNodeBlockHelper(context.inSSR, isComponent)); + } else { + context.helper(getVNodeHelper(context.inSSR, isComponent)); + } + if (directives) { + context.helper(WITH_DIRECTIVES); + } + } + return { + type: 13, + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent, + loc + }; +} +function createArrayExpression(elements, loc = locStub) { + return { + type: 17, + loc, + elements + }; +} +function createObjectExpression(properties, loc = locStub) { + return { + type: 15, + loc, + properties + }; +} +function createObjectProperty(key, value) { + return { + type: 16, + loc: locStub, + key: isString$1(key) ? createSimpleExpression(key, true) : key, + value + }; +} +function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) { + return { + type: 4, + loc, + content, + isStatic, + constType: isStatic ? 3 : constType + }; +} +function createInterpolation(content, loc) { + return { + type: 5, + loc, + content: isString$1(content) ? createSimpleExpression(content, false, loc) : content + }; +} +function createCompoundExpression(children, loc = locStub) { + return { + type: 8, + loc, + children + }; +} +function createCallExpression(callee, args = [], loc = locStub) { + return { + type: 14, + loc, + callee, + arguments: args + }; +} +function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) { + return { + type: 18, + params, + returns, + newline, + isSlot, + loc + }; +} +function createConditionalExpression(test, consequent, alternate, newline = true) { + return { + type: 19, + test, + consequent, + alternate, + newline, + loc: locStub + }; +} +function createCacheExpression(index, value, needPauseTracking = false, inVOnce = false) { + return { + type: 20, + index, + value, + needPauseTracking, + inVOnce, + needArraySpread: false, + loc: locStub + }; +} +function createBlockStatement(body) { + return { + type: 21, + body, + loc: locStub + }; +} +function createTemplateLiteral(elements) { + return { + type: 22, + elements, + loc: locStub + }; +} +function createIfStatement(test, consequent, alternate) { + return { + type: 23, + test, + consequent, + alternate, + loc: locStub + }; +} +function createAssignmentExpression(left, right) { + return { + type: 24, + left, + right, + loc: locStub + }; +} +function createSequenceExpression(expressions) { + return { + type: 25, + expressions, + loc: locStub + }; +} +function createReturnStatement(returns) { + return { + type: 26, + returns, + loc: locStub + }; +} +function getVNodeHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE; +} +function getVNodeBlockHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK; +} +function convertToBlock(node, { helper, removeHelper, inSSR }) { + if (!node.isBlock) { + node.isBlock = true; + removeHelper(getVNodeHelper(inSSR, node.isComponent)); + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(inSSR, node.isComponent)); + } +} + +// Generated using scripts/write-decode-map.ts +var htmlDecodeTree = new Uint16Array( +// prettier-ignore +"\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c" + .split("") + .map((c) => c.charCodeAt(0))); + +// Generated using scripts/write-decode-map.ts +var xmlDecodeTree = new Uint16Array( +// prettier-ignore +"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022" + .split("") + .map((c) => c.charCodeAt(0))); + +// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134 +var _a$1; +const decodeMap = new Map([ + [0, 65533], + // C1 Unicode control character reference replacements + [128, 8364], + [130, 8218], + [131, 402], + [132, 8222], + [133, 8230], + [134, 8224], + [135, 8225], + [136, 710], + [137, 8240], + [138, 352], + [139, 8249], + [140, 338], + [142, 381], + [145, 8216], + [146, 8217], + [147, 8220], + [148, 8221], + [149, 8226], + [150, 8211], + [151, 8212], + [152, 732], + [153, 8482], + [154, 353], + [155, 8250], + [156, 339], + [158, 382], + [159, 376], +]); +/** + * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point. + */ +const fromCodePoint = +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins +(_a$1 = String.fromCodePoint) !== null && _a$1 !== void 0 ? _a$1 : function (codePoint) { + let output = ""; + if (codePoint > 0xffff) { + codePoint -= 0x10000; + output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800); + codePoint = 0xdc00 | (codePoint & 0x3ff); + } + output += String.fromCharCode(codePoint); + return output; +}; +/** + * Replace the given code point with a replacement character if it is a + * surrogate or is outside the valid range. Otherwise return the code + * point unchanged. + */ +function replaceCodePoint(codePoint) { + var _a; + if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) { + return 0xfffd; + } + return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint; +} + +var CharCodes; +(function (CharCodes) { + CharCodes[CharCodes["NUM"] = 35] = "NUM"; + CharCodes[CharCodes["SEMI"] = 59] = "SEMI"; + CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS"; + CharCodes[CharCodes["ZERO"] = 48] = "ZERO"; + CharCodes[CharCodes["NINE"] = 57] = "NINE"; + CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A"; + CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F"; + CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X"; + CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z"; + CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A"; + CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F"; + CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z"; +})(CharCodes || (CharCodes = {})); +/** Bit that needs to be set to convert an upper case ASCII character to lower case */ +const TO_LOWER_BIT = 0b100000; +var BinTrieFlags; +(function (BinTrieFlags) { + BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; + BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; + BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE"; +})(BinTrieFlags || (BinTrieFlags = {})); +function isNumber$1(code) { + return code >= CharCodes.ZERO && code <= CharCodes.NINE; +} +function isHexadecimalCharacter(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F)); +} +function isAsciiAlphaNumeric(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) || + isNumber$1(code)); +} +/** + * Checks if the given character is a valid end character for an entity in an attribute. + * + * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error. + * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state + */ +function isEntityInAttributeInvalidEnd(code) { + return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); +} +var EntityDecoderState; +(function (EntityDecoderState) { + EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart"; + EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart"; + EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal"; + EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex"; + EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity"; +})(EntityDecoderState || (EntityDecoderState = {})); +var DecodingMode; +(function (DecodingMode) { + /** Entities in text nodes that can end with any character. */ + DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy"; + /** Only allow entities terminated with a semicolon. */ + DecodingMode[DecodingMode["Strict"] = 1] = "Strict"; + /** Entities in attributes have limitations on ending characters. */ + DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute"; +})(DecodingMode || (DecodingMode = {})); +/** + * Token decoder with support of writing partial entities. + */ +class EntityDecoder { + constructor( + /** The tree used to decode entities. */ + decodeTree, + /** + * The function that is called when a codepoint is decoded. + * + * For multi-byte named entities, this will be called multiple times, + * with the second codepoint, and the same `consumed` value. + * + * @param codepoint The decoded codepoint. + * @param consumed The number of bytes consumed by the decoder. + */ + emitCodePoint, + /** An object that is used to produce errors. */ + errors) { + this.decodeTree = decodeTree; + this.emitCodePoint = emitCodePoint; + this.errors = errors; + /** The current state of the decoder. */ + this.state = EntityDecoderState.EntityStart; + /** Characters that were consumed while parsing an entity. */ + this.consumed = 1; + /** + * The result of the entity. + * + * Either the result index of a numeric entity, or the codepoint of a + * numeric entity. + */ + this.result = 0; + /** The current index in the decode tree. */ + this.treeIndex = 0; + /** The number of characters that were consumed in excess. */ + this.excess = 1; + /** The mode in which the decoder is operating. */ + this.decodeMode = DecodingMode.Strict; + } + /** Resets the instance to make it reusable. */ + startEntity(decodeMode) { + this.decodeMode = decodeMode; + this.state = EntityDecoderState.EntityStart; + this.result = 0; + this.treeIndex = 0; + this.excess = 1; + this.consumed = 1; + } + /** + * Write an entity to the decoder. This can be called multiple times with partial entities. + * If the entity is incomplete, the decoder will return -1. + * + * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the + * entity is incomplete, and resume when the next string is written. + * + * @param string The string containing the entity (or a continuation of the entity). + * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + write(str, offset) { + switch (this.state) { + case EntityDecoderState.EntityStart: { + if (str.charCodeAt(offset) === CharCodes.NUM) { + this.state = EntityDecoderState.NumericStart; + this.consumed += 1; + return this.stateNumericStart(str, offset + 1); + } + this.state = EntityDecoderState.NamedEntity; + return this.stateNamedEntity(str, offset); + } + case EntityDecoderState.NumericStart: { + return this.stateNumericStart(str, offset); + } + case EntityDecoderState.NumericDecimal: { + return this.stateNumericDecimal(str, offset); + } + case EntityDecoderState.NumericHex: { + return this.stateNumericHex(str, offset); + } + case EntityDecoderState.NamedEntity: { + return this.stateNamedEntity(str, offset); + } + } + } + /** + * Switches between the numeric decimal and hexadecimal states. + * + * Equivalent to the `Numeric character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNumericStart(str, offset) { + if (offset >= str.length) { + return -1; + } + if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { + this.state = EntityDecoderState.NumericHex; + this.consumed += 1; + return this.stateNumericHex(str, offset + 1); + } + this.state = EntityDecoderState.NumericDecimal; + return this.stateNumericDecimal(str, offset); + } + addToNumericResult(str, start, end, base) { + if (start !== end) { + const digitCount = end - start; + this.result = + this.result * Math.pow(base, digitCount) + + parseInt(str.substr(start, digitCount), base); + this.consumed += digitCount; + } + } + /** + * Parses a hexadecimal numeric entity. + * + * Equivalent to the `Hexademical character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNumericHex(str, offset) { + const startIdx = offset; + while (offset < str.length) { + const char = str.charCodeAt(offset); + if (isNumber$1(char) || isHexadecimalCharacter(char)) { + offset += 1; + } + else { + this.addToNumericResult(str, startIdx, offset, 16); + return this.emitNumericEntity(char, 3); + } + } + this.addToNumericResult(str, startIdx, offset, 16); + return -1; + } + /** + * Parses a decimal numeric entity. + * + * Equivalent to the `Decimal character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNumericDecimal(str, offset) { + const startIdx = offset; + while (offset < str.length) { + const char = str.charCodeAt(offset); + if (isNumber$1(char)) { + offset += 1; + } + else { + this.addToNumericResult(str, startIdx, offset, 10); + return this.emitNumericEntity(char, 2); + } + } + this.addToNumericResult(str, startIdx, offset, 10); + return -1; + } + /** + * Validate and emit a numeric entity. + * + * Implements the logic from the `Hexademical character reference start + * state` and `Numeric character reference end state` in the HTML spec. + * + * @param lastCp The last code point of the entity. Used to see if the + * entity was terminated with a semicolon. + * @param expectedLength The minimum number of characters that should be + * consumed. Used to validate that at least one digit + * was consumed. + * @returns The number of characters that were consumed. + */ + emitNumericEntity(lastCp, expectedLength) { + var _a; + // Ensure we consumed at least one digit. + if (this.consumed <= expectedLength) { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + // Figure out if this is a legit end of the entity + if (lastCp === CharCodes.SEMI) { + this.consumed += 1; + } + else if (this.decodeMode === DecodingMode.Strict) { + return 0; + } + this.emitCodePoint(replaceCodePoint(this.result), this.consumed); + if (this.errors) { + if (lastCp !== CharCodes.SEMI) { + this.errors.missingSemicolonAfterCharacterReference(); + } + this.errors.validateNumericCharacterReference(this.result); + } + return this.consumed; + } + /** + * Parses a named entity. + * + * Equivalent to the `Named character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNamedEntity(str, offset) { + const { decodeTree } = this; + let current = decodeTree[this.treeIndex]; + // The mask is the number of bytes of the value, including the current byte. + let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + for (; offset < str.length; offset++, this.excess++) { + const char = str.charCodeAt(offset); + this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); + if (this.treeIndex < 0) { + return this.result === 0 || + // If we are parsing an attribute + (this.decodeMode === DecodingMode.Attribute && + // We shouldn't have consumed any characters after the entity, + (valueLength === 0 || + // And there should be no invalid characters. + isEntityInAttributeInvalidEnd(char))) + ? 0 + : this.emitNotTerminatedNamedEntity(); + } + current = decodeTree[this.treeIndex]; + valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + // If the branch is a value, store it and continue + if (valueLength !== 0) { + // If the entity is terminated by a semicolon, we are done. + if (char === CharCodes.SEMI) { + return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); + } + // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it. + if (this.decodeMode !== DecodingMode.Strict) { + this.result = this.treeIndex; + this.consumed += this.excess; + this.excess = 0; + } + } + } + return -1; + } + /** + * Emit a named entity that was not terminated with a semicolon. + * + * @returns The number of characters consumed. + */ + emitNotTerminatedNamedEntity() { + var _a; + const { result, decodeTree } = this; + const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; + this.emitNamedEntityData(result, valueLength, this.consumed); + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference(); + return this.consumed; + } + /** + * Emit a named entity. + * + * @param result The index of the entity in the decode tree. + * @param valueLength The number of bytes in the entity. + * @param consumed The number of characters consumed. + * + * @returns The number of characters consumed. + */ + emitNamedEntityData(result, valueLength, consumed) { + const { decodeTree } = this; + this.emitCodePoint(valueLength === 1 + ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH + : decodeTree[result + 1], consumed); + if (valueLength === 3) { + // For multi-byte values, we need to emit the second byte. + this.emitCodePoint(decodeTree[result + 2], consumed); + } + return consumed; + } + /** + * Signal to the parser that the end of the input was reached. + * + * Remaining data will be emitted and relevant errors will be produced. + * + * @returns The number of characters consumed. + */ + end() { + var _a; + switch (this.state) { + case EntityDecoderState.NamedEntity: { + // Emit a named entity if we have one. + return this.result !== 0 && + (this.decodeMode !== DecodingMode.Attribute || + this.result === this.treeIndex) + ? this.emitNotTerminatedNamedEntity() + : 0; + } + // Otherwise, emit a numeric entity if we have one. + case EntityDecoderState.NumericDecimal: { + return this.emitNumericEntity(0, 2); + } + case EntityDecoderState.NumericHex: { + return this.emitNumericEntity(0, 3); + } + case EntityDecoderState.NumericStart: { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + case EntityDecoderState.EntityStart: { + // Return 0 if we have no entity. + return 0; + } + } + } +} +/** + * Creates a function that decodes entities in a string. + * + * @param decodeTree The decode tree. + * @returns A function that decodes entities in a string. + */ +function getDecoder(decodeTree) { + let ret = ""; + const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str))); + return function decodeWithTrie(str, decodeMode) { + let lastIndex = 0; + let offset = 0; + while ((offset = str.indexOf("&", offset)) >= 0) { + ret += str.slice(lastIndex, offset); + decoder.startEntity(decodeMode); + const len = decoder.write(str, + // Skip the "&" + offset + 1); + if (len < 0) { + lastIndex = offset + decoder.end(); + break; + } + lastIndex = offset + len; + // If `len` is 0, skip the current `&` and continue. + offset = len === 0 ? lastIndex + 1 : lastIndex; + } + const result = ret + str.slice(lastIndex); + // Make sure we don't keep a reference to the final string. + ret = ""; + return result; + }; +} +/** + * Determines the branch of the current node that is taken given the current + * character. This function is used to traverse the trie. + * + * @param decodeTree The trie. + * @param current The current node. + * @param nodeIdx The index right after the current node and its value. + * @param char The current character. + * @returns The index of the next node, or -1 if no branch is taken. + */ +function determineBranch(decodeTree, current, nodeIdx, char) { + const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; + const jumpOffset = current & BinTrieFlags.JUMP_TABLE; + // Case 1: Single branch encoded in jump offset + if (branchCount === 0) { + return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; + } + // Case 2: Multiple branches encoded in jump table + if (jumpOffset) { + const value = char - jumpOffset; + return value < 0 || value >= branchCount + ? -1 + : decodeTree[nodeIdx + value] - 1; + } + // Case 3: Multiple branches encoded in dictionary + // Binary search for the character. + let lo = nodeIdx; + let hi = lo + branchCount - 1; + while (lo <= hi) { + const mid = (lo + hi) >>> 1; + const midVal = decodeTree[mid]; + if (midVal < char) { + lo = mid + 1; + } + else if (midVal > char) { + hi = mid - 1; + } + else { + return decodeTree[mid + branchCount]; + } + } + return -1; +} +const htmlDecoder = getDecoder(htmlDecodeTree); +getDecoder(xmlDecodeTree); +/** + * Decodes an HTML string. + * + * @param str The string to decode. + * @param mode The decoding mode. + * @returns The decoded string. + */ +function decodeHTML(str, mode = DecodingMode.Legacy) { + return htmlDecoder(str, mode); +} + +const defaultDelimitersOpen = new Uint8Array([123, 123]); +const defaultDelimitersClose = new Uint8Array([125, 125]); +function isTagStartChar(c) { + return c >= 97 && c <= 122 || c >= 65 && c <= 90; +} +function isWhitespace(c) { + return c === 32 || c === 10 || c === 9 || c === 12 || c === 13; +} +function isEndOfTagSection(c) { + return c === 47 || c === 62 || isWhitespace(c); +} +function toCharCodes(str) { + const ret = new Uint8Array(str.length); + for (let i = 0; i < str.length; i++) { + ret[i] = str.charCodeAt(i); + } + return ret; +} +const Sequences = { + Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]), + // CDATA[ + CdataEnd: new Uint8Array([93, 93, 62]), + // ]]> + CommentEnd: new Uint8Array([45, 45, 62]), + // `-->` + ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), + // `<\/script` + StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), + // `</style` + TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]), + // `</title` + TextareaEnd: new Uint8Array([ + 60, + 47, + 116, + 101, + 120, + 116, + 97, + 114, + 101, + 97 + ]) + // `</textarea +}; +class Tokenizer { + constructor(stack, cbs) { + this.stack = stack; + this.cbs = cbs; + /** The current state the tokenizer is in. */ + this.state = 1; + /** The read buffer. */ + this.buffer = ""; + /** The beginning of the section that is currently being read. */ + this.sectionStart = 0; + /** The index within the buffer that we are currently looking at. */ + this.index = 0; + /** The start of the last entity. */ + this.entityStart = 0; + /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */ + this.baseState = 1; + /** For special parsing behavior inside of script and style tags. */ + this.inRCDATA = false; + /** For disabling RCDATA tags handling */ + this.inXML = false; + /** For disabling interpolation parsing in v-pre */ + this.inVPre = false; + /** Record newline positions for fast line / column calculation */ + this.newlines = []; + this.mode = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + this.delimiterIndex = -1; + this.currentSequence = void 0; + this.sequenceIndex = 0; + { + this.entityDecoder = new EntityDecoder( + htmlDecodeTree, + (cp, consumed) => this.emitCodePoint(cp, consumed) + ); + } + } + get inSFCRoot() { + return this.mode === 2 && this.stack.length === 0; + } + reset() { + this.state = 1; + this.mode = 0; + this.buffer = ""; + this.sectionStart = 0; + this.index = 0; + this.baseState = 1; + this.inRCDATA = false; + this.currentSequence = void 0; + this.newlines.length = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + } + /** + * Generate Position object with line / column information using recorded + * newline positions. We know the index is always going to be an already + * processed index, so all the newlines up to this index should have been + * recorded. + */ + getPos(index) { + let line = 1; + let column = index + 1; + for (let i = this.newlines.length - 1; i >= 0; i--) { + const newlineIndex = this.newlines[i]; + if (index > newlineIndex) { + line = i + 2; + column = index - newlineIndex; + break; + } + } + return { + column, + line, + offset: index + }; + } + peek() { + return this.buffer.charCodeAt(this.index + 1); + } + stateText(c) { + if (c === 60) { + if (this.index > this.sectionStart) { + this.cbs.ontext(this.sectionStart, this.index); + } + this.state = 5; + this.sectionStart = this.index; + } else if (c === 38) { + this.startEntity(); + } else if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } + stateInterpolationOpen(c) { + if (c === this.delimiterOpen[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterOpen.length - 1) { + const start = this.index + 1 - this.delimiterOpen.length; + if (start > this.sectionStart) { + this.cbs.ontext(this.sectionStart, start); + } + this.state = 3; + this.sectionStart = start; + } else { + this.delimiterIndex++; + } + } else if (this.inRCDATA) { + this.state = 32; + this.stateInRCDATA(c); + } else { + this.state = 1; + this.stateText(c); + } + } + stateInterpolation(c) { + if (c === this.delimiterClose[0]) { + this.state = 4; + this.delimiterIndex = 0; + this.stateInterpolationClose(c); + } + } + stateInterpolationClose(c) { + if (c === this.delimiterClose[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterClose.length - 1) { + this.cbs.oninterpolation(this.sectionStart, this.index + 1); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else { + this.delimiterIndex++; + } + } else { + this.state = 3; + this.stateInterpolation(c); + } + } + stateSpecialStartSequence(c) { + const isEnd = this.sequenceIndex === this.currentSequence.length; + const isMatch = isEnd ? ( + // If we are at the end of the sequence, make sure the tag name has ended + isEndOfTagSection(c) + ) : ( + // Otherwise, do a case-insensitive comparison + (c | 32) === this.currentSequence[this.sequenceIndex] + ); + if (!isMatch) { + this.inRCDATA = false; + } else if (!isEnd) { + this.sequenceIndex++; + return; + } + this.sequenceIndex = 0; + this.state = 6; + this.stateInTagName(c); + } + /** Look for an end tag. For <title> and <textarea>, also decode entities. */ + stateInRCDATA(c) { + if (this.sequenceIndex === this.currentSequence.length) { + if (c === 62 || isWhitespace(c)) { + const endOfText = this.index - this.currentSequence.length; + if (this.sectionStart < endOfText) { + const actualIndex = this.index; + this.index = endOfText; + this.cbs.ontext(this.sectionStart, endOfText); + this.index = actualIndex; + } + this.sectionStart = endOfText + 2; + this.stateInClosingTagName(c); + this.inRCDATA = false; + return; + } + this.sequenceIndex = 0; + } + if ((c | 32) === this.currentSequence[this.sequenceIndex]) { + this.sequenceIndex += 1; + } else if (this.sequenceIndex === 0) { + if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd && !this.inSFCRoot) { + if (c === 38) { + this.startEntity(); + } else if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } else if (this.fastForwardTo(60)) { + this.sequenceIndex = 1; + } + } else { + this.sequenceIndex = Number(c === 60); + } + } + stateCDATASequence(c) { + if (c === Sequences.Cdata[this.sequenceIndex]) { + if (++this.sequenceIndex === Sequences.Cdata.length) { + this.state = 28; + this.currentSequence = Sequences.CdataEnd; + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + } + } else { + this.sequenceIndex = 0; + this.state = 23; + this.stateInDeclaration(c); + } + } + /** + * When we wait for one specific character, we can speed things up + * by skipping through the buffer until we find it. + * + * @returns Whether the character was found. + */ + fastForwardTo(c) { + while (++this.index < this.buffer.length) { + const cc = this.buffer.charCodeAt(this.index); + if (cc === 10) { + this.newlines.push(this.index); + } + if (cc === c) { + return true; + } + } + this.index = this.buffer.length - 1; + return false; + } + /** + * Comments and CDATA end with `-->` and `]]>`. + * + * Their common qualities are: + * - Their end sequences have a distinct character they start with. + * - That character is then repeated, so we have to check multiple repeats. + * - All characters but the start character of the sequence can be skipped. + */ + stateInCommentLike(c) { + if (c === this.currentSequence[this.sequenceIndex]) { + if (++this.sequenceIndex === this.currentSequence.length) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, this.index - 2); + } else { + this.cbs.oncomment(this.sectionStart, this.index - 2); + } + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + this.state = 1; + } + } else if (this.sequenceIndex === 0) { + if (this.fastForwardTo(this.currentSequence[0])) { + this.sequenceIndex = 1; + } + } else if (c !== this.currentSequence[this.sequenceIndex - 1]) { + this.sequenceIndex = 0; + } + } + startSpecial(sequence, offset) { + this.enterRCDATA(sequence, offset); + this.state = 31; + } + enterRCDATA(sequence, offset) { + this.inRCDATA = true; + this.currentSequence = sequence; + this.sequenceIndex = offset; + } + stateBeforeTagName(c) { + if (c === 33) { + this.state = 22; + this.sectionStart = this.index + 1; + } else if (c === 63) { + this.state = 24; + this.sectionStart = this.index + 1; + } else if (isTagStartChar(c)) { + this.sectionStart = this.index; + if (this.mode === 0) { + this.state = 6; + } else if (this.inSFCRoot) { + this.state = 34; + } else if (!this.inXML) { + if (c === 116) { + this.state = 30; + } else { + this.state = c === 115 ? 29 : 6; + } + } else { + this.state = 6; + } + } else if (c === 47) { + this.state = 8; + } else { + this.state = 1; + this.stateText(c); + } + } + stateInTagName(c) { + if (isEndOfTagSection(c)) { + this.handleTagName(c); + } + } + stateInSFCRootTagName(c) { + if (isEndOfTagSection(c)) { + const tag = this.buffer.slice(this.sectionStart, this.index); + if (tag !== "template") { + this.enterRCDATA(toCharCodes(`</` + tag), 0); + } + this.handleTagName(c); + } + } + handleTagName(c) { + this.cbs.onopentagname(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } + stateBeforeClosingTagName(c) { + if (isWhitespace(c)) ; else if (c === 62) { + { + this.cbs.onerr(14, this.index); + } + this.state = 1; + this.sectionStart = this.index + 1; + } else { + this.state = isTagStartChar(c) ? 9 : 27; + this.sectionStart = this.index; + } + } + stateInClosingTagName(c) { + if (c === 62 || isWhitespace(c)) { + this.cbs.onclosetag(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 10; + this.stateAfterClosingTagName(c); + } + } + stateAfterClosingTagName(c) { + if (c === 62) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeAttrName(c) { + if (c === 62) { + this.cbs.onopentagend(this.index); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else if (c === 47) { + this.state = 7; + if (this.peek() !== 62) { + this.cbs.onerr(22, this.index); + } + } else if (c === 60 && this.peek() === 47) { + this.cbs.onopentagend(this.index); + this.state = 5; + this.sectionStart = this.index; + } else if (!isWhitespace(c)) { + if (c === 61) { + this.cbs.onerr( + 19, + this.index + ); + } + this.handleAttrStart(c); + } + } + handleAttrStart(c) { + if (c === 118 && this.peek() === 45) { + this.state = 13; + this.sectionStart = this.index; + } else if (c === 46 || c === 58 || c === 64 || c === 35) { + this.cbs.ondirname(this.index, this.index + 1); + this.state = 14; + this.sectionStart = this.index + 1; + } else { + this.state = 12; + this.sectionStart = this.index; + } + } + stateInSelfClosingTag(c) { + if (c === 62) { + this.cbs.onselfclosingtag(this.index); + this.state = 1; + this.sectionStart = this.index + 1; + this.inRCDATA = false; + } else if (!isWhitespace(c)) { + this.state = 11; + this.stateBeforeAttrName(c); + } + } + stateInAttrName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.onattribname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 34 || c === 39 || c === 60) { + this.cbs.onerr( + 17, + this.index + ); + } + } + stateInDirName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 58) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 14; + this.sectionStart = this.index + 1; + } else if (c === 46) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDirArg(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 91) { + this.state = 15; + } else if (c === 46) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDynamicDirArg(c) { + if (c === 93) { + this.state = 14; + } else if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index + 1); + this.handleAttrNameEnd(c); + { + this.cbs.onerr( + 27, + this.index + ); + } + } + } + stateInDirModifier(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 46) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.sectionStart = this.index + 1; + } + } + handleAttrNameEnd(c) { + this.sectionStart = this.index; + this.state = 17; + this.cbs.onattribnameend(this.index); + this.stateAfterAttrName(c); + } + stateAfterAttrName(c) { + if (c === 61) { + this.state = 18; + } else if (c === 47 || c === 62) { + this.cbs.onattribend(0, this.sectionStart); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } else if (!isWhitespace(c)) { + this.cbs.onattribend(0, this.sectionStart); + this.handleAttrStart(c); + } + } + stateBeforeAttrValue(c) { + if (c === 34) { + this.state = 19; + this.sectionStart = this.index + 1; + } else if (c === 39) { + this.state = 20; + this.sectionStart = this.index + 1; + } else if (!isWhitespace(c)) { + this.sectionStart = this.index; + this.state = 21; + this.stateInAttrValueNoQuotes(c); + } + } + handleInAttrValue(c, quote) { + if (c === quote || false) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend( + quote === 34 ? 3 : 2, + this.index + 1 + ); + this.state = 11; + } else if (c === 38) { + this.startEntity(); + } + } + stateInAttrValueDoubleQuotes(c) { + this.handleInAttrValue(c, 34); + } + stateInAttrValueSingleQuotes(c) { + this.handleInAttrValue(c, 39); + } + stateInAttrValueNoQuotes(c) { + if (isWhitespace(c) || c === 62) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend(1, this.index); + this.state = 11; + this.stateBeforeAttrName(c); + } else if (c === 34 || c === 39 || c === 60 || c === 61 || c === 96) { + this.cbs.onerr( + 18, + this.index + ); + } else if (c === 38) { + this.startEntity(); + } + } + stateBeforeDeclaration(c) { + if (c === 91) { + this.state = 26; + this.sequenceIndex = 0; + } else { + this.state = c === 45 ? 25 : 23; + } + } + stateInDeclaration(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateInProcessingInstruction(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.onprocessinginstruction(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeComment(c) { + if (c === 45) { + this.state = 28; + this.currentSequence = Sequences.CommentEnd; + this.sequenceIndex = 2; + this.sectionStart = this.index + 1; + } else { + this.state = 23; + } + } + stateInSpecialComment(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.oncomment(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeSpecialS(c) { + if (c === Sequences.ScriptEnd[3]) { + this.startSpecial(Sequences.ScriptEnd, 4); + } else if (c === Sequences.StyleEnd[3]) { + this.startSpecial(Sequences.StyleEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + stateBeforeSpecialT(c) { + if (c === Sequences.TitleEnd[3]) { + this.startSpecial(Sequences.TitleEnd, 4); + } else if (c === Sequences.TextareaEnd[3]) { + this.startSpecial(Sequences.TextareaEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + startEntity() { + { + this.baseState = this.state; + this.state = 33; + this.entityStart = this.index; + this.entityDecoder.startEntity( + this.baseState === 1 || this.baseState === 32 ? DecodingMode.Legacy : DecodingMode.Attribute + ); + } + } + stateInEntity() { + { + const length = this.entityDecoder.write(this.buffer, this.index); + if (length >= 0) { + this.state = this.baseState; + if (length === 0) { + this.index = this.entityStart; + } + } else { + this.index = this.buffer.length - 1; + } + } + } + /** + * Iterates through the buffer, calling the function corresponding to the current state. + * + * States that are more likely to be hit are higher up, as a performance improvement. + */ + parse(input) { + this.buffer = input; + while (this.index < this.buffer.length) { + const c = this.buffer.charCodeAt(this.index); + if (c === 10 && this.state !== 33) { + this.newlines.push(this.index); + } + switch (this.state) { + case 1: { + this.stateText(c); + break; + } + case 2: { + this.stateInterpolationOpen(c); + break; + } + case 3: { + this.stateInterpolation(c); + break; + } + case 4: { + this.stateInterpolationClose(c); + break; + } + case 31: { + this.stateSpecialStartSequence(c); + break; + } + case 32: { + this.stateInRCDATA(c); + break; + } + case 26: { + this.stateCDATASequence(c); + break; + } + case 19: { + this.stateInAttrValueDoubleQuotes(c); + break; + } + case 12: { + this.stateInAttrName(c); + break; + } + case 13: { + this.stateInDirName(c); + break; + } + case 14: { + this.stateInDirArg(c); + break; + } + case 15: { + this.stateInDynamicDirArg(c); + break; + } + case 16: { + this.stateInDirModifier(c); + break; + } + case 28: { + this.stateInCommentLike(c); + break; + } + case 27: { + this.stateInSpecialComment(c); + break; + } + case 11: { + this.stateBeforeAttrName(c); + break; + } + case 6: { + this.stateInTagName(c); + break; + } + case 34: { + this.stateInSFCRootTagName(c); + break; + } + case 9: { + this.stateInClosingTagName(c); + break; + } + case 5: { + this.stateBeforeTagName(c); + break; + } + case 17: { + this.stateAfterAttrName(c); + break; + } + case 20: { + this.stateInAttrValueSingleQuotes(c); + break; + } + case 18: { + this.stateBeforeAttrValue(c); + break; + } + case 8: { + this.stateBeforeClosingTagName(c); + break; + } + case 10: { + this.stateAfterClosingTagName(c); + break; + } + case 29: { + this.stateBeforeSpecialS(c); + break; + } + case 30: { + this.stateBeforeSpecialT(c); + break; + } + case 21: { + this.stateInAttrValueNoQuotes(c); + break; + } + case 7: { + this.stateInSelfClosingTag(c); + break; + } + case 23: { + this.stateInDeclaration(c); + break; + } + case 22: { + this.stateBeforeDeclaration(c); + break; + } + case 25: { + this.stateBeforeComment(c); + break; + } + case 24: { + this.stateInProcessingInstruction(c); + break; + } + case 33: { + this.stateInEntity(); + break; + } + } + this.index++; + } + this.cleanup(); + this.finish(); + } + /** + * Remove data that has already been consumed from the buffer. + */ + cleanup() { + if (this.sectionStart !== this.index) { + if (this.state === 1 || this.state === 32 && this.sequenceIndex === 0) { + this.cbs.ontext(this.sectionStart, this.index); + this.sectionStart = this.index; + } else if (this.state === 19 || this.state === 20 || this.state === 21) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = this.index; + } + } + } + finish() { + if (this.state === 33) { + this.entityDecoder.end(); + this.state = this.baseState; + } + this.handleTrailingData(); + this.cbs.onend(); + } + /** Handle any trailing data. */ + handleTrailingData() { + const endIndex = this.buffer.length; + if (this.sectionStart >= endIndex) { + return; + } + if (this.state === 28) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, endIndex); + } else { + this.cbs.oncomment(this.sectionStart, endIndex); + } + } else if (this.state === 6 || this.state === 11 || this.state === 18 || this.state === 17 || this.state === 12 || this.state === 13 || this.state === 14 || this.state === 15 || this.state === 16 || this.state === 20 || this.state === 19 || this.state === 21 || this.state === 9) ; else { + this.cbs.ontext(this.sectionStart, endIndex); + } + } + emitCodePoint(cp, consumed) { + { + if (this.baseState !== 1 && this.baseState !== 32) { + if (this.sectionStart < this.entityStart) { + this.cbs.onattribdata(this.sectionStart, this.entityStart); + } + this.sectionStart = this.entityStart + consumed; + this.index = this.sectionStart - 1; + this.cbs.onattribentity( + fromCodePoint(cp), + this.entityStart, + this.sectionStart + ); + } else { + if (this.sectionStart < this.entityStart) { + this.cbs.ontext(this.sectionStart, this.entityStart); + } + this.sectionStart = this.entityStart + consumed; + this.index = this.sectionStart - 1; + this.cbs.ontextentity( + fromCodePoint(cp), + this.entityStart, + this.sectionStart + ); + } + } + } +} + +const CompilerDeprecationTypes = { + "COMPILER_IS_ON_ELEMENT": "COMPILER_IS_ON_ELEMENT", + "COMPILER_V_BIND_SYNC": "COMPILER_V_BIND_SYNC", + "COMPILER_V_BIND_OBJECT_ORDER": "COMPILER_V_BIND_OBJECT_ORDER", + "COMPILER_V_ON_NATIVE": "COMPILER_V_ON_NATIVE", + "COMPILER_V_IF_V_FOR_PRECEDENCE": "COMPILER_V_IF_V_FOR_PRECEDENCE", + "COMPILER_NATIVE_TEMPLATE": "COMPILER_NATIVE_TEMPLATE", + "COMPILER_INLINE_TEMPLATE": "COMPILER_INLINE_TEMPLATE", + "COMPILER_FILTERS": "COMPILER_FILTERS" +}; +const deprecationData = { + ["COMPILER_IS_ON_ELEMENT"]: { + message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`, + link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html` + }, + ["COMPILER_V_BIND_SYNC"]: { + message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html` + }, + ["COMPILER_V_BIND_OBJECT_ORDER"]: { + message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html` + }, + ["COMPILER_V_ON_NATIVE"]: { + message: `.native modifier for v-on has been removed as is no longer necessary.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html` + }, + ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: { + message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html` + }, + ["COMPILER_NATIVE_TEMPLATE"]: { + message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.` + }, + ["COMPILER_INLINE_TEMPLATE"]: { + message: `"inline-template" has been removed in Vue 3.`, + link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html` + }, + ["COMPILER_FILTERS"]: { + message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`, + link: `https://v3-migration.vuejs.org/breaking-changes/filters.html` + } +}; +function getCompatValue(key, { compatConfig }) { + const value = compatConfig && compatConfig[key]; + if (key === "MODE") { + return value || 3; + } else { + return value; + } +} +function isCompatEnabled(key, context) { + const mode = getCompatValue("MODE", context); + const value = getCompatValue(key, context); + return mode === 3 ? value === true : value !== false; +} +function checkCompatEnabled(key, context, loc, ...args) { + const enabled = isCompatEnabled(key, context); + if (enabled) { + warnDeprecation(key, context, loc, ...args); + } + return enabled; +} +function warnDeprecation(key, context, loc, ...args) { + const val = getCompatValue(key, context); + if (val === "suppress-warning") { + return; + } + const { message, link } = deprecationData[key]; + const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? ` + Details: ${link}` : ``}`; + const err = new SyntaxError(msg); + err.code = key; + if (loc) err.loc = loc; + context.onWarn(err); +} + +function defaultOnError(error) { + throw error; +} +function defaultOnWarn(msg) { + console.warn(`[Vue warn] ${msg.message}`); +} +function createCompilerError(code, loc, messages, additionalMessage) { + const msg = (messages || errorMessages$1)[code] + (additionalMessage || ``) ; + const error = new SyntaxError(String(msg)); + error.code = code; + error.loc = loc; + return error; +} +const ErrorCodes = { + "ABRUPT_CLOSING_OF_EMPTY_COMMENT": 0, + "0": "ABRUPT_CLOSING_OF_EMPTY_COMMENT", + "CDATA_IN_HTML_CONTENT": 1, + "1": "CDATA_IN_HTML_CONTENT", + "DUPLICATE_ATTRIBUTE": 2, + "2": "DUPLICATE_ATTRIBUTE", + "END_TAG_WITH_ATTRIBUTES": 3, + "3": "END_TAG_WITH_ATTRIBUTES", + "END_TAG_WITH_TRAILING_SOLIDUS": 4, + "4": "END_TAG_WITH_TRAILING_SOLIDUS", + "EOF_BEFORE_TAG_NAME": 5, + "5": "EOF_BEFORE_TAG_NAME", + "EOF_IN_CDATA": 6, + "6": "EOF_IN_CDATA", + "EOF_IN_COMMENT": 7, + "7": "EOF_IN_COMMENT", + "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT": 8, + "8": "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT", + "EOF_IN_TAG": 9, + "9": "EOF_IN_TAG", + "INCORRECTLY_CLOSED_COMMENT": 10, + "10": "INCORRECTLY_CLOSED_COMMENT", + "INCORRECTLY_OPENED_COMMENT": 11, + "11": "INCORRECTLY_OPENED_COMMENT", + "INVALID_FIRST_CHARACTER_OF_TAG_NAME": 12, + "12": "INVALID_FIRST_CHARACTER_OF_TAG_NAME", + "MISSING_ATTRIBUTE_VALUE": 13, + "13": "MISSING_ATTRIBUTE_VALUE", + "MISSING_END_TAG_NAME": 14, + "14": "MISSING_END_TAG_NAME", + "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES": 15, + "15": "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES", + "NESTED_COMMENT": 16, + "16": "NESTED_COMMENT", + "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME": 17, + "17": "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME", + "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE": 18, + "18": "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE", + "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME": 19, + "19": "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME", + "UNEXPECTED_NULL_CHARACTER": 20, + "20": "UNEXPECTED_NULL_CHARACTER", + "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME": 21, + "21": "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME", + "UNEXPECTED_SOLIDUS_IN_TAG": 22, + "22": "UNEXPECTED_SOLIDUS_IN_TAG", + "X_INVALID_END_TAG": 23, + "23": "X_INVALID_END_TAG", + "X_MISSING_END_TAG": 24, + "24": "X_MISSING_END_TAG", + "X_MISSING_INTERPOLATION_END": 25, + "25": "X_MISSING_INTERPOLATION_END", + "X_MISSING_DIRECTIVE_NAME": 26, + "26": "X_MISSING_DIRECTIVE_NAME", + "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END": 27, + "27": "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END", + "X_V_IF_NO_EXPRESSION": 28, + "28": "X_V_IF_NO_EXPRESSION", + "X_V_IF_SAME_KEY": 29, + "29": "X_V_IF_SAME_KEY", + "X_V_ELSE_NO_ADJACENT_IF": 30, + "30": "X_V_ELSE_NO_ADJACENT_IF", + "X_V_FOR_NO_EXPRESSION": 31, + "31": "X_V_FOR_NO_EXPRESSION", + "X_V_FOR_MALFORMED_EXPRESSION": 32, + "32": "X_V_FOR_MALFORMED_EXPRESSION", + "X_V_FOR_TEMPLATE_KEY_PLACEMENT": 33, + "33": "X_V_FOR_TEMPLATE_KEY_PLACEMENT", + "X_V_BIND_NO_EXPRESSION": 34, + "34": "X_V_BIND_NO_EXPRESSION", + "X_V_ON_NO_EXPRESSION": 35, + "35": "X_V_ON_NO_EXPRESSION", + "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET": 36, + "36": "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET", + "X_V_SLOT_MIXED_SLOT_USAGE": 37, + "37": "X_V_SLOT_MIXED_SLOT_USAGE", + "X_V_SLOT_DUPLICATE_SLOT_NAMES": 38, + "38": "X_V_SLOT_DUPLICATE_SLOT_NAMES", + "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN": 39, + "39": "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN", + "X_V_SLOT_MISPLACED": 40, + "40": "X_V_SLOT_MISPLACED", + "X_V_MODEL_NO_EXPRESSION": 41, + "41": "X_V_MODEL_NO_EXPRESSION", + "X_V_MODEL_MALFORMED_EXPRESSION": 42, + "42": "X_V_MODEL_MALFORMED_EXPRESSION", + "X_V_MODEL_ON_SCOPE_VARIABLE": 43, + "43": "X_V_MODEL_ON_SCOPE_VARIABLE", + "X_V_MODEL_ON_PROPS": 44, + "44": "X_V_MODEL_ON_PROPS", + "X_INVALID_EXPRESSION": 45, + "45": "X_INVALID_EXPRESSION", + "X_KEEP_ALIVE_INVALID_CHILDREN": 46, + "46": "X_KEEP_ALIVE_INVALID_CHILDREN", + "X_PREFIX_ID_NOT_SUPPORTED": 47, + "47": "X_PREFIX_ID_NOT_SUPPORTED", + "X_MODULE_MODE_NOT_SUPPORTED": 48, + "48": "X_MODULE_MODE_NOT_SUPPORTED", + "X_CACHE_HANDLER_NOT_SUPPORTED": 49, + "49": "X_CACHE_HANDLER_NOT_SUPPORTED", + "X_SCOPE_ID_NOT_SUPPORTED": 50, + "50": "X_SCOPE_ID_NOT_SUPPORTED", + "X_VNODE_HOOKS": 51, + "51": "X_VNODE_HOOKS", + "X_V_BIND_INVALID_SAME_NAME_ARGUMENT": 52, + "52": "X_V_BIND_INVALID_SAME_NAME_ARGUMENT", + "__EXTEND_POINT__": 53, + "53": "__EXTEND_POINT__" +}; +const errorMessages$1 = { + // parse errors + [0]: "Illegal comment.", + [1]: "CDATA section is allowed only in XML context.", + [2]: "Duplicate attribute.", + [3]: "End tag cannot have attributes.", + [4]: "Illegal '/' in tags.", + [5]: "Unexpected EOF in tag.", + [6]: "Unexpected EOF in CDATA section.", + [7]: "Unexpected EOF in comment.", + [8]: "Unexpected EOF in script.", + [9]: "Unexpected EOF in tag.", + [10]: "Incorrectly closed comment.", + [11]: "Incorrectly opened comment.", + [12]: "Illegal tag name. Use '<' to print '<'.", + [13]: "Attribute value was expected.", + [14]: "End tag name was expected.", + [15]: "Whitespace was expected.", + [16]: "Unexpected '<!--' in comment.", + [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`, + [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).", + [19]: "Attribute name cannot start with '='.", + [21]: "'<?' is allowed only in XML context.", + [20]: `Unexpected null character.`, + [22]: "Illegal '/' in tags.", + // Vue-specific parse errors + [23]: "Invalid end tag.", + [24]: "Element is missing end tag.", + [25]: "Interpolation end sign was not found.", + [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.", + [26]: "Legal directive name was expected.", + // transform errors + [28]: `v-if/v-else-if is missing expression.`, + [29]: `v-if/else branches must use unique keys.`, + [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`, + [31]: `v-for is missing expression.`, + [32]: `v-for has invalid expression.`, + [33]: `<template v-for> key should be placed on the <template> tag.`, + [34]: `v-bind is missing expression.`, + [52]: `v-bind with same-name shorthand only allows static argument.`, + [35]: `v-on is missing expression.`, + [36]: `Unexpected custom directive on <slot> outlet.`, + [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`, + [38]: `Duplicate slot names found. `, + [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`, + [40]: `v-slot can only be used on components or <template> tags.`, + [41]: `v-model is missing expression.`, + [42]: `v-model value must be a valid JavaScript member expression.`, + [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`, + [44]: `v-model cannot be used on a prop, because local prop bindings are not writable. +Use a v-bind binding combined with a v-on listener that emits update:x event instead.`, + [45]: `Error parsing JavaScript expression: `, + [46]: `<KeepAlive> expects exactly one child component.`, + [51]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`, + // generic errors + [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`, + [48]: `ES module mode is not supported in this build of compiler.`, + [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`, + [50]: `"scopeId" option is only supported in module mode.`, + // just to fulfill types + [53]: `` +}; + +function getDefaultExportFromCjs (x) { + return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; +} + +function getAugmentedNamespace(n) { + if (Object.prototype.hasOwnProperty.call(n, '__esModule')) return n; + var f = n.default; + if (typeof f == "function") { + var a = function a () { + var isInstance = false; + try { + isInstance = this instanceof a; + } catch {} + if (isInstance) { + return Reflect.construct(f, arguments, this.constructor); + } + return f.apply(this, arguments); + }; + a.prototype = f.prototype; + } else a = {}; + Object.defineProperty(a, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; +} + +var lib = {}; + +var hasRequiredLib; + +function requireLib () { + if (hasRequiredLib) return lib; + hasRequiredLib = 1; + + Object.defineProperty(lib, '__esModule', { + value: true + }); + function _objectWithoutPropertiesLoose(r, e) { + if (null == r) return {}; + var t = {}; + for (var n in r) if ({}.hasOwnProperty.call(r, n)) { + if (-1 !== e.indexOf(n)) continue; + t[n] = r[n]; + } + return t; + } + class Position { + constructor(line, col, index) { + this.line = void 0; + this.column = void 0; + this.index = void 0; + this.line = line; + this.column = col; + this.index = index; + } + } + class SourceLocation { + constructor(start, end) { + this.start = void 0; + this.end = void 0; + this.filename = void 0; + this.identifierName = void 0; + this.start = start; + this.end = end; + } + } + function createPositionWithColumnOffset(position, columnOffset) { + const { + line, + column, + index + } = position; + return new Position(line, column + columnOffset, index + columnOffset); + } + const code = "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"; + var ModuleErrors = { + ImportMetaOutsideModule: { + message: `import.meta may appear only with 'sourceType: "module"'`, + code + }, + ImportOutsideModule: { + message: `'import' and 'export' may appear only with 'sourceType: "module"'`, + code + } + }; + const NodeDescriptions = { + ArrayPattern: "array destructuring pattern", + AssignmentExpression: "assignment expression", + AssignmentPattern: "assignment expression", + ArrowFunctionExpression: "arrow function expression", + ConditionalExpression: "conditional expression", + CatchClause: "catch clause", + ForOfStatement: "for-of statement", + ForInStatement: "for-in statement", + ForStatement: "for-loop", + FormalParameters: "function parameter list", + Identifier: "identifier", + ImportSpecifier: "import specifier", + ImportDefaultSpecifier: "import default specifier", + ImportNamespaceSpecifier: "import namespace specifier", + ObjectPattern: "object destructuring pattern", + ParenthesizedExpression: "parenthesized expression", + RestElement: "rest element", + UpdateExpression: { + true: "prefix operation", + false: "postfix operation" + }, + VariableDeclarator: "variable declaration", + YieldExpression: "yield expression" + }; + const toNodeDescription = node => node.type === "UpdateExpression" ? NodeDescriptions.UpdateExpression[`${node.prefix}`] : NodeDescriptions[node.type]; + var StandardErrors = { + AccessorIsGenerator: ({ + kind + }) => `A ${kind}ter cannot be a generator.`, + ArgumentsInClass: "'arguments' is only allowed in functions and class methods.", + AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.", + AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.", + AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.", + AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.", + AwaitUsingNotInAsyncContext: "'await using' is only allowed within async functions and at the top levels of modules.", + AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.", + BadGetterArity: "A 'get' accessor must not have any formal parameters.", + BadSetterArity: "A 'set' accessor must have exactly one formal parameter.", + BadSetterRestParameter: "A 'set' accessor function argument must not be a rest parameter.", + ConstructorClassField: "Classes may not have a field named 'constructor'.", + ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.", + ConstructorIsAccessor: "Class constructor may not be an accessor.", + ConstructorIsAsync: "Constructor can't be an async function.", + ConstructorIsGenerator: "Constructor can't be a generator.", + DeclarationMissingInitializer: ({ + kind + }) => `Missing initializer in ${kind} declaration.`, + DecoratorArgumentsOutsideParentheses: "Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.", + DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.", + DecoratorsBeforeAfterExport: "Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.", + DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?", + DecoratorExportClass: "Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.", + DecoratorSemicolon: "Decorators must not be followed by a semicolon.", + DecoratorStaticBlock: "Decorators can't be used with a static block.", + DeferImportRequiresNamespace: 'Only `import defer * as x from "./module"` is valid.', + DeletePrivateField: "Deleting a private field is not allowed.", + DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.", + DuplicateConstructor: "Duplicate constructor in the same class.", + DuplicateDefaultExport: "Only one default export allowed per module.", + DuplicateExport: ({ + exportName + }) => `\`${exportName}\` has already been exported. Exported identifiers must be unique.`, + DuplicateProto: "Redefinition of __proto__ property.", + DuplicateRegExpFlags: "Duplicate regular expression flag.", + ElementAfterRest: "Rest element must be last element.", + EscapedCharNotAnIdentifier: "Invalid Unicode escape.", + ExportBindingIsString: ({ + localName, + exportName + }) => `A string literal cannot be used as an exported binding without \`from\`.\n- Did you mean \`export { '${localName}' as '${exportName}' } from 'some-module'\`?`, + ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.", + ForInOfLoopInitializer: ({ + type + }) => `'${type === "ForInStatement" ? "for-in" : "for-of"}' loop variable declaration may not have an initializer.`, + ForInUsing: "For-in loop may not start with 'using' declaration.", + ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.", + ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.", + GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.", + IllegalBreakContinue: ({ + type + }) => `Unsyntactic ${type === "BreakStatement" ? "break" : "continue"}.`, + IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.", + IllegalReturn: "'return' outside of function.", + ImportAttributesUseAssert: "The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.", + ImportBindingIsString: ({ + importName + }) => `A string literal cannot be used as an imported binding.\n- Did you mean \`import { "${importName}" as foo }\`?`, + ImportCallArity: `\`import()\` requires exactly one or two arguments.`, + ImportCallNotNewExpression: "Cannot use new with import(...).", + ImportCallSpreadArgument: "`...` is not allowed in `import()`.", + ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.", + ImportReflectionHasAssertion: "`import module x` cannot have assertions.", + ImportReflectionNotBinding: 'Only `import module x from "./module"` is valid.', + IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.", + InvalidBigIntLiteral: "Invalid BigIntLiteral.", + InvalidCodePoint: "Code point out of bounds.", + InvalidCoverDiscardElement: "'void' must be followed by an expression when not used in a binding position.", + InvalidCoverInitializedName: "Invalid shorthand property initializer.", + InvalidDecimal: "Invalid decimal.", + InvalidDigit: ({ + radix + }) => `Expected number in radix ${radix}.`, + InvalidEscapeSequence: "Bad character escape sequence.", + InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.", + InvalidEscapedReservedWord: ({ + reservedWord + }) => `Escape sequence in keyword ${reservedWord}.`, + InvalidIdentifier: ({ + identifierName + }) => `Invalid identifier ${identifierName}.`, + InvalidLhs: ({ + ancestor + }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`, + InvalidLhsBinding: ({ + ancestor + }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`, + InvalidLhsOptionalChaining: ({ + ancestor + }) => `Invalid optional chaining in the left-hand side of ${toNodeDescription(ancestor)}.`, + InvalidNumber: "Invalid number.", + InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.", + InvalidOrUnexpectedToken: ({ + unexpected + }) => `Unexpected character '${unexpected}'.`, + InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.", + InvalidPrivateFieldResolution: ({ + identifierName + }) => `Private name #${identifierName} is not defined.`, + InvalidPropertyBindingPattern: "Binding member expression.", + InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.", + InvalidRestAssignmentPattern: "Invalid rest operator's argument.", + LabelRedeclaration: ({ + labelName + }) => `Label '${labelName}' is already declared.`, + LetInLexicalBinding: "'let' is disallowed as a lexically bound name.", + LineTerminatorBeforeArrow: "No line break is allowed before '=>'.", + MalformedRegExpFlags: "Invalid regular expression flag.", + MissingClassName: "A class name is required.", + MissingEqInAssignment: "Only '=' operator can be used for specifying default value.", + MissingSemicolon: "Missing semicolon.", + MissingPlugin: ({ + missingPlugin + }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, + MissingOneOfPlugins: ({ + missingPlugin + }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, + MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.", + MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.", + ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.", + ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.", + ModuleAttributesWithDuplicateKeys: ({ + key + }) => `Duplicate key "${key}" is not allowed in module attributes.`, + ModuleExportNameHasLoneSurrogate: ({ + surrogateCharCode + }) => `An export name cannot include a lone surrogate, found '\\u${surrogateCharCode.toString(16)}'.`, + ModuleExportUndefined: ({ + localName + }) => `Export '${localName}' is not defined.`, + MultipleDefaultsInSwitch: "Multiple default clauses.", + NewlineAfterThrow: "Illegal newline after throw.", + NoCatchOrFinally: "Missing catch or finally clause.", + NumberIdentifier: "Identifier directly after number.", + NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.", + ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.", + OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.", + OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.", + OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.", + ParamDupe: "Argument name clash.", + PatternHasAccessor: "Object pattern can't contain getter or setter.", + PatternHasMethod: "Object pattern can't contain methods.", + PrivateInExpectedIn: ({ + identifierName + }) => `Private names are only allowed in property accesses (\`obj.#${identifierName}\`) or in \`in\` expressions (\`#${identifierName} in obj\`).`, + PrivateNameRedeclaration: ({ + identifierName + }) => `Duplicate private name #${identifierName}.`, + RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + RecordNoProto: "'__proto__' is not allowed in Record expressions.", + RestTrailingComma: "Unexpected trailing comma after rest element.", + SloppyFunction: "In non-strict mode code, functions can only be declared at top level or inside a block.", + SloppyFunctionAnnexB: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.", + SourcePhaseImportRequiresDefault: 'Only `import source x from "./module"` is valid.', + StaticPrototype: "Classes may not have static property named prototype.", + SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?", + SuperPrivateField: "Private fields can't be accessed on super.", + TrailingDecorator: "Decorators must be attached to a class element.", + TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.", + UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.', + UnexpectedDigitAfterHash: "Unexpected digit after hash token.", + UnexpectedImportExport: "'import' and 'export' may only appear at the top level.", + UnexpectedKeyword: ({ + keyword + }) => `Unexpected keyword '${keyword}'.`, + UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.", + UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.", + UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.", + UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.", + UnexpectedPrivateField: "Unexpected private name.", + UnexpectedReservedWord: ({ + reservedWord + }) => `Unexpected reserved word '${reservedWord}'.`, + UnexpectedSuper: "'super' is only allowed in object methods and classes.", + UnexpectedToken: ({ + expected, + unexpected + }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : ""}${expected ? `, expected "${expected}"` : ""}`, + UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.", + UnexpectedUsingDeclaration: "Using declaration cannot appear in the top level when source type is `script` or in the bare case statement.", + UnexpectedVoidPattern: "Unexpected void binding.", + UnsupportedBind: "Binding should be performed on object property.", + UnsupportedDecoratorExport: "A decorated export must export a class declaration.", + UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.", + UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.", + UnsupportedMetaProperty: ({ + target, + onlyValidPropertyName + }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`, + UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.", + UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.", + UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).", + UnterminatedComment: "Unterminated comment.", + UnterminatedRegExp: "Unterminated regular expression.", + UnterminatedString: "Unterminated string constant.", + UnterminatedTemplate: "Unterminated template.", + UsingDeclarationExport: "Using declaration cannot be exported.", + UsingDeclarationHasBindingPattern: "Using declaration cannot have destructuring patterns.", + VarRedeclaration: ({ + identifierName + }) => `Identifier '${identifierName}' has already been declared.`, + VoidPatternCatchClauseParam: "A void binding can not be the catch clause parameter. Use `try { ... } catch { ... }` if you want to discard the caught error.", + VoidPatternInitializer: "A void binding may not have an initializer.", + YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.", + YieldInParameter: "Yield expression is not allowed in formal parameters.", + YieldNotInGeneratorFunction: "'yield' is only allowed within generator functions.", + ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0." + }; + var StrictModeErrors = { + StrictDelete: "Deleting local variable in strict mode.", + StrictEvalArguments: ({ + referenceName + }) => `Assigning to '${referenceName}' in strict mode.`, + StrictEvalArgumentsBinding: ({ + bindingName + }) => `Binding '${bindingName}' in strict mode.`, + StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.", + StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.", + StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.", + StrictWith: "'with' in strict mode." + }; + var ParseExpressionErrors = { + ParseExpressionEmptyInput: "Unexpected parseExpression() input: The input is empty or contains only comments.", + ParseExpressionExpectsEOF: ({ + unexpected + }) => `Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \`${String.fromCodePoint(unexpected)}\`.` + }; + const UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]); + var PipelineOperatorErrors = Object.assign({ + PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.", + PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', + PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.", + PipeTopicUnconfiguredToken: ({ + token + }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${token}" }.`, + PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.", + PipeUnparenthesizedBody: ({ + type + }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({ + type + })}; please wrap it in parentheses.` + }, { + PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.', + PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.", + PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.", + PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.", + PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.", + PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.' + }); + const _excluded = ["message"]; + function defineHidden(obj, key, value) { + Object.defineProperty(obj, key, { + enumerable: false, + configurable: true, + value + }); + } + function toParseErrorConstructor({ + toMessage, + code, + reasonCode, + syntaxPlugin + }) { + const hasMissingPlugin = reasonCode === "MissingPlugin" || reasonCode === "MissingOneOfPlugins"; + { + const oldReasonCodes = { + AccessorCannotDeclareThisParameter: "AccesorCannotDeclareThisParameter", + AccessorCannotHaveTypeParameters: "AccesorCannotHaveTypeParameters", + ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference", + SetAccessorCannotHaveOptionalParameter: "SetAccesorCannotHaveOptionalParameter", + SetAccessorCannotHaveRestParameter: "SetAccesorCannotHaveRestParameter", + SetAccessorCannotHaveReturnType: "SetAccesorCannotHaveReturnType" + }; + if (oldReasonCodes[reasonCode]) { + reasonCode = oldReasonCodes[reasonCode]; + } + } + return function constructor(loc, details) { + const error = new SyntaxError(); + error.code = code; + error.reasonCode = reasonCode; + error.loc = loc; + error.pos = loc.index; + error.syntaxPlugin = syntaxPlugin; + if (hasMissingPlugin) { + error.missingPlugin = details.missingPlugin; + } + defineHidden(error, "clone", function clone(overrides = {}) { + var _overrides$loc; + const { + line, + column, + index + } = (_overrides$loc = overrides.loc) != null ? _overrides$loc : loc; + return constructor(new Position(line, column, index), Object.assign({}, details, overrides.details)); + }); + defineHidden(error, "details", details); + Object.defineProperty(error, "message", { + configurable: true, + get() { + const message = `${toMessage(details)} (${loc.line}:${loc.column})`; + this.message = message; + return message; + }, + set(value) { + Object.defineProperty(this, "message", { + value, + writable: true + }); + } + }); + return error; + }; + } + function ParseErrorEnum(argument, syntaxPlugin) { + if (Array.isArray(argument)) { + return parseErrorTemplates => ParseErrorEnum(parseErrorTemplates, argument[0]); + } + const ParseErrorConstructors = {}; + for (const reasonCode of Object.keys(argument)) { + const template = argument[reasonCode]; + const _ref = typeof template === "string" ? { + message: () => template + } : typeof template === "function" ? { + message: template + } : template, + { + message + } = _ref, + rest = _objectWithoutPropertiesLoose(_ref, _excluded); + const toMessage = typeof message === "string" ? () => message : message; + ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({ + code: "BABEL_PARSER_SYNTAX_ERROR", + reasonCode, + toMessage + }, syntaxPlugin ? { + syntaxPlugin + } : {}, rest)); + } + return ParseErrorConstructors; + } + const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum(ParseExpressionErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors)); + function createDefaultOptions() { + return { + sourceType: "script", + sourceFilename: undefined, + startIndex: 0, + startColumn: 0, + startLine: 1, + allowAwaitOutsideFunction: false, + allowReturnOutsideFunction: false, + allowNewTargetOutsideFunction: false, + allowImportExportEverywhere: false, + allowSuperOutsideMethod: false, + allowUndeclaredExports: false, + allowYieldOutsideFunction: false, + plugins: [], + strictMode: null, + ranges: false, + tokens: false, + createImportExpressions: false, + createParenthesizedExpressions: false, + errorRecovery: false, + attachComment: true, + annexB: true + }; + } + function getOptions(opts) { + const options = createDefaultOptions(); + if (opts == null) { + return options; + } + if (opts.annexB != null && opts.annexB !== false) { + throw new Error("The `annexB` option can only be set to `false`."); + } + for (const key of Object.keys(options)) { + if (opts[key] != null) options[key] = opts[key]; + } + if (options.startLine === 1) { + if (opts.startIndex == null && options.startColumn > 0) { + options.startIndex = options.startColumn; + } else if (opts.startColumn == null && options.startIndex > 0) { + options.startColumn = options.startIndex; + } + } else if (opts.startColumn == null || opts.startIndex == null) { + if (opts.startIndex != null) { + throw new Error("With a `startLine > 1` you must also specify `startIndex` and `startColumn`."); + } + } + if (options.sourceType === "commonjs") { + if (opts.allowAwaitOutsideFunction != null) { + throw new Error("The `allowAwaitOutsideFunction` option cannot be used with `sourceType: 'commonjs'`."); + } + if (opts.allowReturnOutsideFunction != null) { + throw new Error("`sourceType: 'commonjs'` implies `allowReturnOutsideFunction: true`, please remove the `allowReturnOutsideFunction` option or use `sourceType: 'script'`."); + } + if (opts.allowNewTargetOutsideFunction != null) { + throw new Error("`sourceType: 'commonjs'` implies `allowNewTargetOutsideFunction: true`, please remove the `allowNewTargetOutsideFunction` option or use `sourceType: 'script'`."); + } + } + return options; + } + const { + defineProperty + } = Object; + const toUnenumerable = (object, key) => { + if (object) { + defineProperty(object, key, { + enumerable: false, + value: object[key] + }); + } + }; + function toESTreeLocation(node) { + toUnenumerable(node.loc.start, "index"); + toUnenumerable(node.loc.end, "index"); + return node; + } + var estree = superClass => class ESTreeParserMixin extends superClass { + parse() { + const file = toESTreeLocation(super.parse()); + if (this.optionFlags & 256) { + file.tokens = file.tokens.map(toESTreeLocation); + } + return file; + } + parseRegExpLiteral({ + pattern, + flags + }) { + let regex = null; + try { + regex = new RegExp(pattern, flags); + } catch (_) {} + const node = this.estreeParseLiteral(regex); + node.regex = { + pattern, + flags + }; + return node; + } + parseBigIntLiteral(value) { + let bigInt; + try { + bigInt = BigInt(value); + } catch (_unused) { + bigInt = null; + } + const node = this.estreeParseLiteral(bigInt); + node.bigint = String(node.value || value); + return node; + } + parseDecimalLiteral(value) { + const decimal = null; + const node = this.estreeParseLiteral(decimal); + node.decimal = String(node.value || value); + return node; + } + estreeParseLiteral(value) { + return this.parseLiteral(value, "Literal"); + } + parseStringLiteral(value) { + return this.estreeParseLiteral(value); + } + parseNumericLiteral(value) { + return this.estreeParseLiteral(value); + } + parseNullLiteral() { + return this.estreeParseLiteral(null); + } + parseBooleanLiteral(value) { + return this.estreeParseLiteral(value); + } + estreeParseChainExpression(node, endLoc) { + const chain = this.startNodeAtNode(node); + chain.expression = node; + return this.finishNodeAt(chain, "ChainExpression", endLoc); + } + directiveToStmt(directive) { + const expression = directive.value; + delete directive.value; + this.castNodeTo(expression, "Literal"); + expression.raw = expression.extra.raw; + expression.value = expression.extra.expressionValue; + const stmt = this.castNodeTo(directive, "ExpressionStatement"); + stmt.expression = expression; + stmt.directive = expression.extra.rawValue; + delete expression.extra; + return stmt; + } + fillOptionalPropertiesForTSESLint(node) {} + cloneEstreeStringLiteral(node) { + const { + start, + end, + loc, + range, + raw, + value + } = node; + const cloned = Object.create(node.constructor.prototype); + cloned.type = "Literal"; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.raw = raw; + cloned.value = value; + return cloned; + } + initFunction(node, isAsync) { + super.initFunction(node, isAsync); + node.expression = false; + } + checkDeclaration(node) { + if (node != null && this.isObjectProperty(node)) { + this.checkDeclaration(node.value); + } else { + super.checkDeclaration(node); + } + } + getObjectOrClassMethodParams(method) { + return method.value.params; + } + isValidDirective(stmt) { + var _stmt$expression$extr; + return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized); + } + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse); + const directiveStatements = node.directives.map(d => this.directiveToStmt(d)); + node.body = directiveStatements.concat(node.body); + delete node.directives; + } + parsePrivateName() { + const node = super.parsePrivateName(); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return node; + } + } + return this.convertPrivateNameToPrivateIdentifier(node); + } + convertPrivateNameToPrivateIdentifier(node) { + const name = super.getPrivateNameSV(node); + node = node; + delete node.id; + node.name = name; + return this.castNodeTo(node, "PrivateIdentifier"); + } + isPrivateName(node) { + { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.isPrivateName(node); + } + } + return node.type === "PrivateIdentifier"; + } + getPrivateNameSV(node) { + { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.getPrivateNameSV(node); + } + } + return node.name; + } + parseLiteral(value, type) { + const node = super.parseLiteral(value, type); + node.raw = node.extra.raw; + delete node.extra; + return node; + } + parseFunctionBody(node, allowExpression, isMethod = false) { + super.parseFunctionBody(node, allowExpression, isMethod); + node.expression = node.body.type !== "BlockStatement"; + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + let funcNode = this.startNode(); + funcNode.kind = node.kind; + funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + delete funcNode.kind; + const { + typeParameters + } = node; + if (typeParameters) { + delete node.typeParameters; + funcNode.typeParameters = typeParameters; + this.resetStartLocationFromNode(funcNode, typeParameters); + } + const valueNode = this.castNodeTo(funcNode, "FunctionExpression"); + node.value = valueNode; + if (type === "ClassPrivateMethod") { + node.computed = false; + } + if (type === "ObjectMethod") { + if (node.kind === "method") { + node.kind = "init"; + } + node.shorthand = false; + return this.finishNode(node, "Property"); + } else { + return this.finishNode(node, "MethodDefinition"); + } + } + nameIsConstructor(key) { + if (key.type === "Literal") return key.value === "constructor"; + return super.nameIsConstructor(key); + } + parseClassProperty(...args) { + const propertyNode = super.parseClassProperty(...args); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return propertyNode; + } + } + { + this.castNodeTo(propertyNode, "PropertyDefinition"); + } + return propertyNode; + } + parseClassPrivateProperty(...args) { + const propertyNode = super.parseClassPrivateProperty(...args); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return propertyNode; + } + } + { + this.castNodeTo(propertyNode, "PropertyDefinition"); + } + propertyNode.computed = false; + return propertyNode; + } + parseClassAccessorProperty(node) { + const accessorPropertyNode = super.parseClassAccessorProperty(node); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return accessorPropertyNode; + } + } + if (accessorPropertyNode.abstract && this.hasPlugin("typescript")) { + delete accessorPropertyNode.abstract; + this.castNodeTo(accessorPropertyNode, "TSAbstractAccessorProperty"); + } else { + this.castNodeTo(accessorPropertyNode, "AccessorProperty"); + } + return accessorPropertyNode; + } + parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { + const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); + if (node) { + node.kind = "init"; + this.castNodeTo(node, "Property"); + } + return node; + } + finishObjectProperty(node) { + node.kind = "init"; + return this.finishNode(node, "Property"); + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + return type === "Property" ? "value" : super.isValidLVal(type, isUnparenthesizedInAssign, binding); + } + isAssignable(node, isBinding) { + if (node != null && this.isObjectProperty(node)) { + return this.isAssignable(node.value, isBinding); + } + return super.isAssignable(node, isBinding); + } + toAssignable(node, isLHS = false) { + if (node != null && this.isObjectProperty(node)) { + const { + key, + value + } = node; + if (this.isPrivateName(key)) { + this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); + } + this.toAssignable(value, isLHS); + } else { + super.toAssignable(node, isLHS); + } + } + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.type === "Property" && (prop.kind === "get" || prop.kind === "set")) { + this.raise(Errors.PatternHasAccessor, prop.key); + } else if (prop.type === "Property" && prop.method) { + this.raise(Errors.PatternHasMethod, prop.key); + } else { + super.toAssignableObjectExpressionProp(prop, isLast, isLHS); + } + } + finishCallExpression(unfinished, optional) { + const node = super.finishCallExpression(unfinished, optional); + if (node.callee.type === "Import") { + var _ref, _ref2; + this.castNodeTo(node, "ImportExpression"); + node.source = node.arguments[0]; + node.options = (_ref = node.arguments[1]) != null ? _ref : null; + node.attributes = (_ref2 = node.arguments[1]) != null ? _ref2 : null; + delete node.arguments; + delete node.callee; + } else if (node.type === "OptionalCallExpression") { + this.castNodeTo(node, "CallExpression"); + } else { + node.optional = false; + } + return node; + } + toReferencedArguments(node) { + if (node.type === "ImportExpression") { + return; + } + super.toReferencedArguments(node); + } + parseExport(unfinished, decorators) { + const exportStartLoc = this.state.lastTokStartLoc; + const node = super.parseExport(unfinished, decorators); + switch (node.type) { + case "ExportAllDeclaration": + node.exported = null; + break; + case "ExportNamedDeclaration": + if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") { + this.castNodeTo(node, "ExportAllDeclaration"); + node.exported = node.specifiers[0].exported; + delete node.specifiers; + } + case "ExportDefaultDeclaration": + { + var _declaration$decorato; + const { + declaration + } = node; + if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) { + this.resetStartLocation(node, exportStartLoc); + } + } + break; + } + return node; + } + stopParseSubscript(base, state) { + const node = super.stopParseSubscript(base, state); + if (state.optionalChainMember) { + return this.estreeParseChainExpression(node, base.loc.end); + } + return node; + } + parseMember(base, startLoc, state, computed, optional) { + const node = super.parseMember(base, startLoc, state, computed, optional); + if (node.type === "OptionalMemberExpression") { + this.castNodeTo(node, "MemberExpression"); + } else { + node.optional = false; + } + return node; + } + isOptionalMemberExpression(node) { + if (node.type === "ChainExpression") { + return node.expression.type === "MemberExpression"; + } + return super.isOptionalMemberExpression(node); + } + hasPropertyAsPrivateName(node) { + if (node.type === "ChainExpression") { + node = node.expression; + } + return super.hasPropertyAsPrivateName(node); + } + isObjectProperty(node) { + return node.type === "Property" && node.kind === "init" && !node.method; + } + isObjectMethod(node) { + return node.type === "Property" && (node.method || node.kind === "get" || node.kind === "set"); + } + castNodeTo(node, type) { + const result = super.castNodeTo(node, type); + this.fillOptionalPropertiesForTSESLint(result); + return result; + } + cloneIdentifier(node) { + const cloned = super.cloneIdentifier(node); + this.fillOptionalPropertiesForTSESLint(cloned); + return cloned; + } + cloneStringLiteral(node) { + if (node.type === "Literal") { + return this.cloneEstreeStringLiteral(node); + } + return super.cloneStringLiteral(node); + } + finishNodeAt(node, type, endLoc) { + return toESTreeLocation(super.finishNodeAt(node, type, endLoc)); + } + finishNode(node, type) { + const result = super.finishNode(node, type); + this.fillOptionalPropertiesForTSESLint(result); + return result; + } + resetStartLocation(node, startLoc) { + super.resetStartLocation(node, startLoc); + toESTreeLocation(node); + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { + super.resetEndLocation(node, endLoc); + toESTreeLocation(node); + } + }; + class TokContext { + constructor(token, preserveSpace) { + this.token = void 0; + this.preserveSpace = void 0; + this.token = token; + this.preserveSpace = !!preserveSpace; + } + } + const types = { + brace: new TokContext("{"), + j_oTag: new TokContext("<tag"), + j_cTag: new TokContext("</tag"), + j_expr: new TokContext("<tag>...</tag>", true) + }; + { + types.template = new TokContext("`", true); + } + const beforeExpr = true; + const startsExpr = true; + const isLoop = true; + const isAssign = true; + const prefix = true; + const postfix = true; + class ExportedTokenType { + constructor(label, conf = {}) { + this.label = void 0; + this.keyword = void 0; + this.beforeExpr = void 0; + this.startsExpr = void 0; + this.rightAssociative = void 0; + this.isLoop = void 0; + this.isAssign = void 0; + this.prefix = void 0; + this.postfix = void 0; + this.binop = void 0; + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.rightAssociative = !!conf.rightAssociative; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop != null ? conf.binop : null; + { + this.updateContext = null; + } + } + } + const keywords$1 = new Map(); + function createKeyword(name, options = {}) { + options.keyword = name; + const token = createToken(name, options); + keywords$1.set(name, token); + return token; + } + function createBinop(name, binop) { + return createToken(name, { + beforeExpr, + binop + }); + } + let tokenTypeCounter = -1; + const tokenTypes = []; + const tokenLabels = []; + const tokenBinops = []; + const tokenBeforeExprs = []; + const tokenStartsExprs = []; + const tokenPrefixes = []; + function createToken(name, options = {}) { + var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix; + ++tokenTypeCounter; + tokenLabels.push(name); + tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1); + tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false); + tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false); + tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false); + tokenTypes.push(new ExportedTokenType(name, options)); + return tokenTypeCounter; + } + function createKeywordLike(name, options = {}) { + var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2; + ++tokenTypeCounter; + keywords$1.set(name, tokenTypeCounter); + tokenLabels.push(name); + tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1); + tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false); + tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false); + tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false); + tokenTypes.push(new ExportedTokenType("name", options)); + return tokenTypeCounter; + } + const tt = { + bracketL: createToken("[", { + beforeExpr, + startsExpr + }), + bracketHashL: createToken("#[", { + beforeExpr, + startsExpr + }), + bracketBarL: createToken("[|", { + beforeExpr, + startsExpr + }), + bracketR: createToken("]"), + bracketBarR: createToken("|]"), + braceL: createToken("{", { + beforeExpr, + startsExpr + }), + braceBarL: createToken("{|", { + beforeExpr, + startsExpr + }), + braceHashL: createToken("#{", { + beforeExpr, + startsExpr + }), + braceR: createToken("}"), + braceBarR: createToken("|}"), + parenL: createToken("(", { + beforeExpr, + startsExpr + }), + parenR: createToken(")"), + comma: createToken(",", { + beforeExpr + }), + semi: createToken(";", { + beforeExpr + }), + colon: createToken(":", { + beforeExpr + }), + doubleColon: createToken("::", { + beforeExpr + }), + dot: createToken("."), + question: createToken("?", { + beforeExpr + }), + questionDot: createToken("?."), + arrow: createToken("=>", { + beforeExpr + }), + template: createToken("template"), + ellipsis: createToken("...", { + beforeExpr + }), + backQuote: createToken("`", { + startsExpr + }), + dollarBraceL: createToken("${", { + beforeExpr, + startsExpr + }), + templateTail: createToken("...`", { + startsExpr + }), + templateNonTail: createToken("...${", { + beforeExpr, + startsExpr + }), + at: createToken("@"), + hash: createToken("#", { + startsExpr + }), + interpreterDirective: createToken("#!..."), + eq: createToken("=", { + beforeExpr, + isAssign + }), + assign: createToken("_=", { + beforeExpr, + isAssign + }), + slashAssign: createToken("_=", { + beforeExpr, + isAssign + }), + xorAssign: createToken("_=", { + beforeExpr, + isAssign + }), + moduloAssign: createToken("_=", { + beforeExpr, + isAssign + }), + incDec: createToken("++/--", { + prefix, + postfix, + startsExpr + }), + bang: createToken("!", { + beforeExpr, + prefix, + startsExpr + }), + tilde: createToken("~", { + beforeExpr, + prefix, + startsExpr + }), + doubleCaret: createToken("^^", { + startsExpr + }), + doubleAt: createToken("@@", { + startsExpr + }), + pipeline: createBinop("|>", 0), + nullishCoalescing: createBinop("??", 1), + logicalOR: createBinop("||", 1), + logicalAND: createBinop("&&", 2), + bitwiseOR: createBinop("|", 3), + bitwiseXOR: createBinop("^", 4), + bitwiseAND: createBinop("&", 5), + equality: createBinop("==/!=/===/!==", 6), + lt: createBinop("</>/<=/>=", 7), + gt: createBinop("</>/<=/>=", 7), + relational: createBinop("</>/<=/>=", 7), + bitShift: createBinop("<</>>/>>>", 8), + bitShiftL: createBinop("<</>>/>>>", 8), + bitShiftR: createBinop("<</>>/>>>", 8), + plusMin: createToken("+/-", { + beforeExpr, + binop: 9, + prefix, + startsExpr + }), + modulo: createToken("%", { + binop: 10, + startsExpr + }), + star: createToken("*", { + binop: 10 + }), + slash: createBinop("/", 10), + exponent: createToken("**", { + beforeExpr, + binop: 11, + rightAssociative: true + }), + _in: createKeyword("in", { + beforeExpr, + binop: 7 + }), + _instanceof: createKeyword("instanceof", { + beforeExpr, + binop: 7 + }), + _break: createKeyword("break"), + _case: createKeyword("case", { + beforeExpr + }), + _catch: createKeyword("catch"), + _continue: createKeyword("continue"), + _debugger: createKeyword("debugger"), + _default: createKeyword("default", { + beforeExpr + }), + _else: createKeyword("else", { + beforeExpr + }), + _finally: createKeyword("finally"), + _function: createKeyword("function", { + startsExpr + }), + _if: createKeyword("if"), + _return: createKeyword("return", { + beforeExpr + }), + _switch: createKeyword("switch"), + _throw: createKeyword("throw", { + beforeExpr, + prefix, + startsExpr + }), + _try: createKeyword("try"), + _var: createKeyword("var"), + _const: createKeyword("const"), + _with: createKeyword("with"), + _new: createKeyword("new", { + beforeExpr, + startsExpr + }), + _this: createKeyword("this", { + startsExpr + }), + _super: createKeyword("super", { + startsExpr + }), + _class: createKeyword("class", { + startsExpr + }), + _extends: createKeyword("extends", { + beforeExpr + }), + _export: createKeyword("export"), + _import: createKeyword("import", { + startsExpr + }), + _null: createKeyword("null", { + startsExpr + }), + _true: createKeyword("true", { + startsExpr + }), + _false: createKeyword("false", { + startsExpr + }), + _typeof: createKeyword("typeof", { + beforeExpr, + prefix, + startsExpr + }), + _void: createKeyword("void", { + beforeExpr, + prefix, + startsExpr + }), + _delete: createKeyword("delete", { + beforeExpr, + prefix, + startsExpr + }), + _do: createKeyword("do", { + isLoop, + beforeExpr + }), + _for: createKeyword("for", { + isLoop + }), + _while: createKeyword("while", { + isLoop + }), + _as: createKeywordLike("as", { + startsExpr + }), + _assert: createKeywordLike("assert", { + startsExpr + }), + _async: createKeywordLike("async", { + startsExpr + }), + _await: createKeywordLike("await", { + startsExpr + }), + _defer: createKeywordLike("defer", { + startsExpr + }), + _from: createKeywordLike("from", { + startsExpr + }), + _get: createKeywordLike("get", { + startsExpr + }), + _let: createKeywordLike("let", { + startsExpr + }), + _meta: createKeywordLike("meta", { + startsExpr + }), + _of: createKeywordLike("of", { + startsExpr + }), + _sent: createKeywordLike("sent", { + startsExpr + }), + _set: createKeywordLike("set", { + startsExpr + }), + _source: createKeywordLike("source", { + startsExpr + }), + _static: createKeywordLike("static", { + startsExpr + }), + _using: createKeywordLike("using", { + startsExpr + }), + _yield: createKeywordLike("yield", { + startsExpr + }), + _asserts: createKeywordLike("asserts", { + startsExpr + }), + _checks: createKeywordLike("checks", { + startsExpr + }), + _exports: createKeywordLike("exports", { + startsExpr + }), + _global: createKeywordLike("global", { + startsExpr + }), + _implements: createKeywordLike("implements", { + startsExpr + }), + _intrinsic: createKeywordLike("intrinsic", { + startsExpr + }), + _infer: createKeywordLike("infer", { + startsExpr + }), + _is: createKeywordLike("is", { + startsExpr + }), + _mixins: createKeywordLike("mixins", { + startsExpr + }), + _proto: createKeywordLike("proto", { + startsExpr + }), + _require: createKeywordLike("require", { + startsExpr + }), + _satisfies: createKeywordLike("satisfies", { + startsExpr + }), + _keyof: createKeywordLike("keyof", { + startsExpr + }), + _readonly: createKeywordLike("readonly", { + startsExpr + }), + _unique: createKeywordLike("unique", { + startsExpr + }), + _abstract: createKeywordLike("abstract", { + startsExpr + }), + _declare: createKeywordLike("declare", { + startsExpr + }), + _enum: createKeywordLike("enum", { + startsExpr + }), + _module: createKeywordLike("module", { + startsExpr + }), + _namespace: createKeywordLike("namespace", { + startsExpr + }), + _interface: createKeywordLike("interface", { + startsExpr + }), + _type: createKeywordLike("type", { + startsExpr + }), + _opaque: createKeywordLike("opaque", { + startsExpr + }), + name: createToken("name", { + startsExpr + }), + placeholder: createToken("%%", { + startsExpr + }), + string: createToken("string", { + startsExpr + }), + num: createToken("num", { + startsExpr + }), + bigint: createToken("bigint", { + startsExpr + }), + decimal: createToken("decimal", { + startsExpr + }), + regexp: createToken("regexp", { + startsExpr + }), + privateName: createToken("#name", { + startsExpr + }), + eof: createToken("eof"), + jsxName: createToken("jsxName"), + jsxText: createToken("jsxText", { + beforeExpr + }), + jsxTagStart: createToken("jsxTagStart", { + startsExpr + }), + jsxTagEnd: createToken("jsxTagEnd") + }; + function tokenIsIdentifier(token) { + return token >= 93 && token <= 133; + } + function tokenKeywordOrIdentifierIsKeyword(token) { + return token <= 92; + } + function tokenIsKeywordOrIdentifier(token) { + return token >= 58 && token <= 133; + } + function tokenIsLiteralPropertyName(token) { + return token >= 58 && token <= 137; + } + function tokenComesBeforeExpression(token) { + return tokenBeforeExprs[token]; + } + function tokenCanStartExpression(token) { + return tokenStartsExprs[token]; + } + function tokenIsAssignment(token) { + return token >= 29 && token <= 33; + } + function tokenIsFlowInterfaceOrTypeOrOpaque(token) { + return token >= 129 && token <= 131; + } + function tokenIsLoop(token) { + return token >= 90 && token <= 92; + } + function tokenIsKeyword(token) { + return token >= 58 && token <= 92; + } + function tokenIsOperator(token) { + return token >= 39 && token <= 59; + } + function tokenIsPostfix(token) { + return token === 34; + } + function tokenIsPrefix(token) { + return tokenPrefixes[token]; + } + function tokenIsTSTypeOperator(token) { + return token >= 121 && token <= 123; + } + function tokenIsTSDeclarationStart(token) { + return token >= 124 && token <= 130; + } + function tokenLabelName(token) { + return tokenLabels[token]; + } + function tokenOperatorPrecedence(token) { + return tokenBinops[token]; + } + function tokenIsRightAssociative(token) { + return token === 57; + } + function tokenIsTemplate(token) { + return token >= 24 && token <= 25; + } + function getExportedToken(token) { + return tokenTypes[token]; + } + { + tokenTypes[8].updateContext = context => { + context.pop(); + }; + tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => { + context.push(types.brace); + }; + tokenTypes[22].updateContext = context => { + if (context[context.length - 1] === types.template) { + context.pop(); + } else { + context.push(types.template); + } + }; + tokenTypes[143].updateContext = context => { + context.push(types.j_expr, types.j_oTag); + }; + } + let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; + let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; + const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); + const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); + nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; + const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; + const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; + function isInAstralSet(code, set) { + let pos = 0x10000; + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + return false; + } + function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes); + } + function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); + } + const reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] + }; + const keywords = new Set(reservedWords.keyword); + const reservedWordsStrictSet = new Set(reservedWords.strict); + const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); + function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; + } + function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); + } + function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); + } + function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); + } + function isKeyword(word) { + return keywords.has(word); + } + function isIteratorStart(current, next, next2) { + return current === 64 && next === 64 && isIdentifierStart(next2); + } + const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]); + function canBeReservedWord(word) { + return reservedWordLikeSet.has(word); + } + class Scope { + constructor(flags) { + this.flags = 0; + this.names = new Map(); + this.firstLexicalName = ""; + this.flags = flags; + } + } + class ScopeHandler { + constructor(parser, inModule) { + this.parser = void 0; + this.scopeStack = []; + this.inModule = void 0; + this.undefinedExports = new Map(); + this.parser = parser; + this.inModule = inModule; + } + get inTopLevel() { + return (this.currentScope().flags & 1) > 0; + } + get inFunction() { + return (this.currentVarScopeFlags() & 2) > 0; + } + get allowSuper() { + return (this.currentThisScopeFlags() & 16) > 0; + } + get allowDirectSuper() { + return (this.currentThisScopeFlags() & 32) > 0; + } + get allowNewTarget() { + return (this.currentThisScopeFlags() & 512) > 0; + } + get inClass() { + return (this.currentThisScopeFlags() & 64) > 0; + } + get inClassAndNotInNonArrowFunction() { + const flags = this.currentThisScopeFlags(); + return (flags & 64) > 0 && (flags & 2) === 0; + } + get inStaticBlock() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & 128) { + return true; + } + if (flags & (1667 | 64)) { + return false; + } + } + } + get inNonArrowFunction() { + return (this.currentThisScopeFlags() & 2) > 0; + } + get inBareCaseStatement() { + return (this.currentScope().flags & 256) > 0; + } + get treatFunctionsAsVar() { + return this.treatFunctionsAsVarInScope(this.currentScope()); + } + createScope(flags) { + return new Scope(flags); + } + enter(flags) { + this.scopeStack.push(this.createScope(flags)); + } + exit() { + const scope = this.scopeStack.pop(); + return scope.flags; + } + treatFunctionsAsVarInScope(scope) { + return !!(scope.flags & (2 | 128) || !this.parser.inModule && scope.flags & 1); + } + declareName(name, bindingType, loc) { + let scope = this.currentScope(); + if (bindingType & 8 || bindingType & 16) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + let type = scope.names.get(name) || 0; + if (bindingType & 16) { + type = type | 4; + } else { + if (!scope.firstLexicalName) { + scope.firstLexicalName = name; + } + type = type | 2; + } + scope.names.set(name, type); + if (bindingType & 8) { + this.maybeExportDefined(scope, name); + } + } else if (bindingType & 4) { + for (let i = this.scopeStack.length - 1; i >= 0; --i) { + scope = this.scopeStack[i]; + this.checkRedeclarationInScope(scope, name, bindingType, loc); + scope.names.set(name, (scope.names.get(name) || 0) | 1); + this.maybeExportDefined(scope, name); + if (scope.flags & 1667) break; + } + } + if (this.parser.inModule && scope.flags & 1) { + this.undefinedExports.delete(name); + } + } + maybeExportDefined(scope, name) { + if (this.parser.inModule && scope.flags & 1) { + this.undefinedExports.delete(name); + } + } + checkRedeclarationInScope(scope, name, bindingType, loc) { + if (this.isRedeclaredInScope(scope, name, bindingType)) { + this.parser.raise(Errors.VarRedeclaration, loc, { + identifierName: name + }); + } + } + isRedeclaredInScope(scope, name, bindingType) { + if (!(bindingType & 1)) return false; + if (bindingType & 8) { + return scope.names.has(name); + } + const type = scope.names.get(name); + if (bindingType & 16) { + return (type & 2) > 0 || !this.treatFunctionsAsVarInScope(scope) && (type & 1) > 0; + } + return (type & 2) > 0 && !(scope.flags & 8 && scope.firstLexicalName === name) || !this.treatFunctionsAsVarInScope(scope) && (type & 4) > 0; + } + checkLocalExport(id) { + const { + name + } = id; + const topLevelScope = this.scopeStack[0]; + if (!topLevelScope.names.has(name)) { + this.undefinedExports.set(name, id.loc.start); + } + } + currentScope() { + return this.scopeStack[this.scopeStack.length - 1]; + } + currentVarScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & 1667) { + return flags; + } + } + } + currentThisScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & (1667 | 64) && !(flags & 4)) { + return flags; + } + } + } + } + class FlowScope extends Scope { + constructor(...args) { + super(...args); + this.declareFunctions = new Set(); + } + } + class FlowScopeHandler extends ScopeHandler { + createScope(flags) { + return new FlowScope(flags); + } + declareName(name, bindingType, loc) { + const scope = this.currentScope(); + if (bindingType & 2048) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + scope.declareFunctions.add(name); + return; + } + super.declareName(name, bindingType, loc); + } + isRedeclaredInScope(scope, name, bindingType) { + if (super.isRedeclaredInScope(scope, name, bindingType)) return true; + if (bindingType & 2048 && !scope.declareFunctions.has(name)) { + const type = scope.names.get(name); + return (type & 4) > 0 || (type & 2) > 0; + } + return false; + } + checkLocalExport(id) { + if (!this.scopeStack[0].declareFunctions.has(id.name)) { + super.checkLocalExport(id); + } + } + } + const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]); + const FlowErrors = ParseErrorEnum`flow`({ + AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.", + AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.", + AssignReservedType: ({ + reservedType + }) => `Cannot overwrite reserved type ${reservedType}.`, + DeclareClassElement: "The `declare` modifier can only appear on class fields.", + DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.", + DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.", + EnumBooleanMemberNotInitialized: ({ + memberName, + enumName + }) => `Boolean enum members need to be initialized. Use either \`${memberName} = true,\` or \`${memberName} = false,\` in enum \`${enumName}\`.`, + EnumDuplicateMemberName: ({ + memberName, + enumName + }) => `Enum member names need to be unique, but the name \`${memberName}\` has already been used before in enum \`${enumName}\`.`, + EnumInconsistentMemberValues: ({ + enumName + }) => `Enum \`${enumName}\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`, + EnumInvalidExplicitType: ({ + invalidEnumType, + enumName + }) => `Enum type \`${invalidEnumType}\` is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, + EnumInvalidExplicitTypeUnknownSupplied: ({ + enumName + }) => `Supplied enum type is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, + EnumInvalidMemberInitializerPrimaryType: ({ + enumName, + memberName, + explicitType + }) => `Enum \`${enumName}\` has type \`${explicitType}\`, so the initializer of \`${memberName}\` needs to be a ${explicitType} literal.`, + EnumInvalidMemberInitializerSymbolType: ({ + enumName, + memberName + }) => `Symbol enum members cannot be initialized. Use \`${memberName},\` in enum \`${enumName}\`.`, + EnumInvalidMemberInitializerUnknownType: ({ + enumName, + memberName + }) => `The enum member initializer for \`${memberName}\` needs to be a literal (either a boolean, number, or string) in enum \`${enumName}\`.`, + EnumInvalidMemberName: ({ + enumName, + memberName, + suggestion + }) => `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \`${memberName}\`, consider using \`${suggestion}\`, in enum \`${enumName}\`.`, + EnumNumberMemberNotInitialized: ({ + enumName, + memberName + }) => `Number enum members need to be initialized, e.g. \`${memberName} = 1\` in enum \`${enumName}\`.`, + EnumStringMemberInconsistentlyInitialized: ({ + enumName + }) => `String enum members need to consistently either all use initializers, or use no initializers, in enum \`${enumName}\`.`, + GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.", + ImportReflectionHasImportType: "An `import module` declaration can not use `type` or `typeof` keyword.", + ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.", + InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.", + InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.", + InexactVariance: "Explicit inexact syntax cannot have variance.", + InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.", + MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.", + NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.", + NestedFlowComment: "Cannot have a flow comment inside another flow comment.", + PatternIsOptional: Object.assign({ + message: "A binding pattern parameter cannot be optional in an implementation signature." + }, { + reasonCode: "OptionalBindingPattern" + }), + SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.", + SpreadVariance: "Spread properties cannot have variance.", + ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.", + ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.", + ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.", + ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.", + ThisParamNoDefault: "The `this` parameter may not have a default value.", + TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.", + UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.", + UnexpectedReservedType: ({ + reservedType + }) => `Unexpected reserved type ${reservedType}.`, + UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.", + UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.", + UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.", + UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".', + UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.", + UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.", + UnsupportedDeclareExportKind: ({ + unsupportedExportKind, + suggestion + }) => `\`declare export ${unsupportedExportKind}\` is not supported. Use \`${suggestion}\` instead.`, + UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.", + UnterminatedFlowComment: "Unterminated flow-comment." + }); + function isEsModuleType(bodyElement) { + return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration"); + } + function hasTypeImportKind(node) { + return node.importKind === "type" || node.importKind === "typeof"; + } + const exportSuggestions = { + const: "declare export var", + let: "declare export var", + type: "export type", + interface: "export interface" + }; + function partition(list, test) { + const list1 = []; + const list2 = []; + for (let i = 0; i < list.length; i++) { + (test(list[i], i, list) ? list1 : list2).push(list[i]); + } + return [list1, list2]; + } + const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/; + var flow = superClass => class FlowParserMixin extends superClass { + constructor(...args) { + super(...args); + this.flowPragma = undefined; + } + getScopeHandler() { + return FlowScopeHandler; + } + shouldParseTypes() { + return this.getPluginOption("flow", "all") || this.flowPragma === "flow"; + } + finishToken(type, val) { + if (type !== 134 && type !== 13 && type !== 28) { + if (this.flowPragma === undefined) { + this.flowPragma = null; + } + } + super.finishToken(type, val); + } + addComment(comment) { + if (this.flowPragma === undefined) { + const matches = FLOW_PRAGMA_REGEX.exec(comment.value); + if (!matches) ;else if (matches[1] === "flow") { + this.flowPragma = "flow"; + } else if (matches[1] === "noflow") { + this.flowPragma = "noflow"; + } else { + throw new Error("Unexpected flow pragma"); + } + } + super.addComment(comment); + } + flowParseTypeInitialiser(tok) { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(tok || 14); + const type = this.flowParseType(); + this.state.inType = oldInType; + return type; + } + flowParsePredicate() { + const node = this.startNode(); + const moduloLoc = this.state.startLoc; + this.next(); + this.expectContextual(110); + if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) { + this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc); + } + if (this.eat(10)) { + node.value = super.parseExpression(); + this.expect(11); + return this.finishNode(node, "DeclaredPredicate"); + } else { + return this.finishNode(node, "InferredPredicate"); + } + } + flowParseTypeAndPredicateInitialiser() { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(14); + let type = null; + let predicate = null; + if (this.match(54)) { + this.state.inType = oldInType; + predicate = this.flowParsePredicate(); + } else { + type = this.flowParseType(); + this.state.inType = oldInType; + if (this.match(54)) { + predicate = this.flowParsePredicate(); + } + } + return [type, predicate]; + } + flowParseDeclareClass(node) { + this.next(); + this.flowParseInterfaceish(node, true); + return this.finishNode(node, "DeclareClass"); + } + flowParseDeclareFunction(node) { + this.next(); + const id = node.id = this.parseIdentifier(); + const typeNode = this.startNode(); + const typeContainer = this.startNode(); + if (this.match(47)) { + typeNode.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + typeNode.typeParameters = null; + } + this.expect(10); + const tmp = this.flowParseFunctionTypeParams(); + typeNode.params = tmp.params; + typeNode.rest = tmp.rest; + typeNode.this = tmp._this; + this.expect(11); + [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation"); + id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation"); + this.resetEndLocation(id); + this.semicolon(); + this.scope.declareName(node.id.name, 2048, node.id.loc.start); + return this.finishNode(node, "DeclareFunction"); + } + flowParseDeclare(node, insideModule) { + if (this.match(80)) { + return this.flowParseDeclareClass(node); + } else if (this.match(68)) { + return this.flowParseDeclareFunction(node); + } else if (this.match(74)) { + return this.flowParseDeclareVariable(node); + } else if (this.eatContextual(127)) { + if (this.match(16)) { + return this.flowParseDeclareModuleExports(node); + } else { + if (insideModule) { + this.raise(FlowErrors.NestedDeclareModule, this.state.lastTokStartLoc); + } + return this.flowParseDeclareModule(node); + } + } else if (this.isContextual(130)) { + return this.flowParseDeclareTypeAlias(node); + } else if (this.isContextual(131)) { + return this.flowParseDeclareOpaqueType(node); + } else if (this.isContextual(129)) { + return this.flowParseDeclareInterface(node); + } else if (this.match(82)) { + return this.flowParseDeclareExportDeclaration(node, insideModule); + } else { + this.unexpected(); + } + } + flowParseDeclareVariable(node) { + this.next(); + node.id = this.flowParseTypeAnnotatableIdentifier(true); + this.scope.declareName(node.id.name, 5, node.id.loc.start); + this.semicolon(); + return this.finishNode(node, "DeclareVariable"); + } + flowParseDeclareModule(node) { + this.scope.enter(0); + if (this.match(134)) { + node.id = super.parseExprAtom(); + } else { + node.id = this.parseIdentifier(); + } + const bodyNode = node.body = this.startNode(); + const body = bodyNode.body = []; + this.expect(5); + while (!this.match(8)) { + let bodyNode = this.startNode(); + if (this.match(83)) { + this.next(); + if (!this.isContextual(130) && !this.match(87)) { + this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, this.state.lastTokStartLoc); + } + super.parseImport(bodyNode); + } else { + this.expectContextual(125, FlowErrors.UnsupportedStatementInDeclareModule); + bodyNode = this.flowParseDeclare(bodyNode, true); + } + body.push(bodyNode); + } + this.scope.exit(); + this.expect(8); + this.finishNode(bodyNode, "BlockStatement"); + let kind = null; + let hasModuleExport = false; + body.forEach(bodyElement => { + if (isEsModuleType(bodyElement)) { + if (kind === "CommonJS") { + this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement); + } + kind = "ES"; + } else if (bodyElement.type === "DeclareModuleExports") { + if (hasModuleExport) { + this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement); + } + if (kind === "ES") { + this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement); + } + kind = "CommonJS"; + hasModuleExport = true; + } + }); + node.kind = kind || "CommonJS"; + return this.finishNode(node, "DeclareModule"); + } + flowParseDeclareExportDeclaration(node, insideModule) { + this.expect(82); + if (this.eat(65)) { + if (this.match(68) || this.match(80)) { + node.declaration = this.flowParseDeclare(this.startNode()); + } else { + node.declaration = this.flowParseType(); + this.semicolon(); + } + node.default = true; + return this.finishNode(node, "DeclareExportDeclaration"); + } else { + if (this.match(75) || this.isLet() || (this.isContextual(130) || this.isContextual(129)) && !insideModule) { + const label = this.state.value; + throw this.raise(FlowErrors.UnsupportedDeclareExportKind, this.state.startLoc, { + unsupportedExportKind: label, + suggestion: exportSuggestions[label] + }); + } + if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(131)) { + node.declaration = this.flowParseDeclare(this.startNode()); + node.default = false; + return this.finishNode(node, "DeclareExportDeclaration"); + } else if (this.match(55) || this.match(5) || this.isContextual(129) || this.isContextual(130) || this.isContextual(131)) { + node = this.parseExport(node, null); + if (node.type === "ExportNamedDeclaration") { + node.default = false; + delete node.exportKind; + return this.castNodeTo(node, "DeclareExportDeclaration"); + } else { + return this.castNodeTo(node, "DeclareExportAllDeclaration"); + } + } + } + this.unexpected(); + } + flowParseDeclareModuleExports(node) { + this.next(); + this.expectContextual(111); + node.typeAnnotation = this.flowParseTypeAnnotation(); + this.semicolon(); + return this.finishNode(node, "DeclareModuleExports"); + } + flowParseDeclareTypeAlias(node) { + this.next(); + const finished = this.flowParseTypeAlias(node); + this.castNodeTo(finished, "DeclareTypeAlias"); + return finished; + } + flowParseDeclareOpaqueType(node) { + this.next(); + const finished = this.flowParseOpaqueType(node, true); + this.castNodeTo(finished, "DeclareOpaqueType"); + return finished; + } + flowParseDeclareInterface(node) { + this.next(); + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "DeclareInterface"); + } + flowParseInterfaceish(node, isClass) { + node.id = this.flowParseRestrictedIdentifier(!isClass, true); + this.scope.declareName(node.id.name, isClass ? 17 : 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.extends = []; + if (this.eat(81)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (!isClass && this.eat(12)); + } + if (isClass) { + node.implements = []; + node.mixins = []; + if (this.eatContextual(117)) { + do { + node.mixins.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + if (this.eatContextual(113)) { + do { + node.implements.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + } + node.body = this.flowParseObjectType({ + allowStatic: isClass, + allowExact: false, + allowSpread: false, + allowProto: isClass, + allowInexact: false + }); + } + flowParseInterfaceExtends() { + const node = this.startNode(); + node.id = this.flowParseQualifiedTypeIdentifier(); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + return this.finishNode(node, "InterfaceExtends"); + } + flowParseInterface(node) { + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "InterfaceDeclaration"); + } + checkNotUnderscore(word) { + if (word === "_") { + this.raise(FlowErrors.UnexpectedReservedUnderscore, this.state.startLoc); + } + } + checkReservedType(word, startLoc, declaration) { + if (!reservedTypes.has(word)) return; + this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, startLoc, { + reservedType: word + }); + } + flowParseRestrictedIdentifier(liberal, declaration) { + this.checkReservedType(this.state.value, this.state.startLoc, declaration); + return this.parseIdentifier(liberal); + } + flowParseTypeAlias(node) { + node.id = this.flowParseRestrictedIdentifier(false, true); + this.scope.declareName(node.id.name, 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.right = this.flowParseTypeInitialiser(29); + this.semicolon(); + return this.finishNode(node, "TypeAlias"); + } + flowParseOpaqueType(node, declare) { + this.expectContextual(130); + node.id = this.flowParseRestrictedIdentifier(true, true); + this.scope.declareName(node.id.name, 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.supertype = null; + if (this.match(14)) { + node.supertype = this.flowParseTypeInitialiser(14); + } + node.impltype = null; + if (!declare) { + node.impltype = this.flowParseTypeInitialiser(29); + } + this.semicolon(); + return this.finishNode(node, "OpaqueType"); + } + flowParseTypeParameter(requireDefault = false) { + const nodeStartLoc = this.state.startLoc; + const node = this.startNode(); + const variance = this.flowParseVariance(); + const ident = this.flowParseTypeAnnotatableIdentifier(); + node.name = ident.name; + node.variance = variance; + node.bound = ident.typeAnnotation; + if (this.match(29)) { + this.eat(29); + node.default = this.flowParseType(); + } else { + if (requireDefault) { + this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc); + } + } + return this.finishNode(node, "TypeParameter"); + } + flowParseTypeParameterDeclaration() { + const oldInType = this.state.inType; + const node = this.startNode(); + node.params = []; + this.state.inType = true; + if (this.match(47) || this.match(143)) { + this.next(); + } else { + this.unexpected(); + } + let defaultRequired = false; + do { + const typeParameter = this.flowParseTypeParameter(defaultRequired); + node.params.push(typeParameter); + if (typeParameter.default) { + defaultRequired = true; + } + if (!this.match(48)) { + this.expect(12); + } + } while (!this.match(48)); + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterDeclaration"); + } + flowInTopLevelContext(cb) { + if (this.curContext() !== types.brace) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } else { + return cb(); + } + } + flowParseTypeParameterInstantiationInExpression() { + if (this.reScan_lt() !== 47) return; + return this.flowParseTypeParameterInstantiation(); + } + flowParseTypeParameterInstantiation() { + const node = this.startNode(); + const oldInType = this.state.inType; + this.state.inType = true; + node.params = []; + this.flowInTopLevelContext(() => { + this.expect(47); + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = false; + while (!this.match(48)) { + node.params.push(this.flowParseType()); + if (!this.match(48)) { + this.expect(12); + } + } + this.state.noAnonFunctionType = oldNoAnonFunctionType; + }); + this.state.inType = oldInType; + if (!this.state.inType && this.curContext() === types.brace) { + this.reScan_lt_gt(); + } + this.expect(48); + return this.finishNode(node, "TypeParameterInstantiation"); + } + flowParseTypeParameterInstantiationCallOrNew() { + if (this.reScan_lt() !== 47) return; + const node = this.startNode(); + const oldInType = this.state.inType; + node.params = []; + this.state.inType = true; + this.expect(47); + while (!this.match(48)) { + node.params.push(this.flowParseTypeOrImplicitInstantiation()); + if (!this.match(48)) { + this.expect(12); + } + } + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterInstantiation"); + } + flowParseInterfaceType() { + const node = this.startNode(); + this.expectContextual(129); + node.extends = []; + if (this.eat(81)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + node.body = this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: false, + allowProto: false, + allowInexact: false + }); + return this.finishNode(node, "InterfaceTypeAnnotation"); + } + flowParseObjectPropertyKey() { + return this.match(135) || this.match(134) ? super.parseExprAtom() : this.parseIdentifier(true); + } + flowParseObjectTypeIndexer(node, isStatic, variance) { + node.static = isStatic; + if (this.lookahead().type === 14) { + node.id = this.flowParseObjectPropertyKey(); + node.key = this.flowParseTypeInitialiser(); + } else { + node.id = null; + node.key = this.flowParseType(); + } + this.expect(3); + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + return this.finishNode(node, "ObjectTypeIndexer"); + } + flowParseObjectTypeInternalSlot(node, isStatic) { + node.static = isStatic; + node.id = this.flowParseObjectPropertyKey(); + this.expect(3); + this.expect(3); + if (this.match(47) || this.match(10)) { + node.method = true; + node.optional = false; + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); + } else { + node.method = false; + if (this.eat(17)) { + node.optional = true; + } + node.value = this.flowParseTypeInitialiser(); + } + return this.finishNode(node, "ObjectTypeInternalSlot"); + } + flowParseObjectTypeMethodish(node) { + node.params = []; + node.rest = null; + node.typeParameters = null; + node.this = null; + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + this.expect(10); + if (this.match(78)) { + node.this = this.flowParseFunctionTypeParam(true); + node.this.name = null; + if (!this.match(11)) { + this.expect(12); + } + } + while (!this.match(11) && !this.match(21)) { + node.params.push(this.flowParseFunctionTypeParam(false)); + if (!this.match(11)) { + this.expect(12); + } + } + if (this.eat(21)) { + node.rest = this.flowParseFunctionTypeParam(false); + } + this.expect(11); + node.returnType = this.flowParseTypeInitialiser(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + flowParseObjectTypeCallProperty(node, isStatic) { + const valueNode = this.startNode(); + node.static = isStatic; + node.value = this.flowParseObjectTypeMethodish(valueNode); + return this.finishNode(node, "ObjectTypeCallProperty"); + } + flowParseObjectType({ + allowStatic, + allowExact, + allowSpread, + allowProto, + allowInexact + }) { + const oldInType = this.state.inType; + this.state.inType = true; + const nodeStart = this.startNode(); + nodeStart.callProperties = []; + nodeStart.properties = []; + nodeStart.indexers = []; + nodeStart.internalSlots = []; + let endDelim; + let exact; + let inexact = false; + if (allowExact && this.match(6)) { + this.expect(6); + endDelim = 9; + exact = true; + } else { + this.expect(5); + endDelim = 8; + exact = false; + } + nodeStart.exact = exact; + while (!this.match(endDelim)) { + let isStatic = false; + let protoStartLoc = null; + let inexactStartLoc = null; + const node = this.startNode(); + if (allowProto && this.isContextual(118)) { + const lookahead = this.lookahead(); + if (lookahead.type !== 14 && lookahead.type !== 17) { + this.next(); + protoStartLoc = this.state.startLoc; + allowStatic = false; + } + } + if (allowStatic && this.isContextual(106)) { + const lookahead = this.lookahead(); + if (lookahead.type !== 14 && lookahead.type !== 17) { + this.next(); + isStatic = true; + } + } + const variance = this.flowParseVariance(); + if (this.eat(0)) { + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (this.eat(0)) { + if (variance) { + this.unexpected(variance.loc.start); + } + nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic)); + } else { + nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance)); + } + } else if (this.match(10) || this.match(47)) { + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.unexpected(variance.loc.start); + } + nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic)); + } else { + let kind = "init"; + if (this.isContextual(99) || this.isContextual(104)) { + const lookahead = this.lookahead(); + if (tokenIsLiteralPropertyName(lookahead.type)) { + kind = this.state.value; + this.next(); + } + } + const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact); + if (propOrInexact === null) { + inexact = true; + inexactStartLoc = this.state.lastTokStartLoc; + } else { + nodeStart.properties.push(propOrInexact); + } + } + this.flowObjectTypeSemicolon(); + if (inexactStartLoc && !this.match(8) && !this.match(9)) { + this.raise(FlowErrors.UnexpectedExplicitInexactInObject, inexactStartLoc); + } + } + this.expect(endDelim); + if (allowSpread) { + nodeStart.inexact = inexact; + } + const out = this.finishNode(nodeStart, "ObjectTypeAnnotation"); + this.state.inType = oldInType; + return out; + } + flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) { + if (this.eat(21)) { + const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9); + if (isInexactToken) { + if (!allowSpread) { + this.raise(FlowErrors.InexactInsideNonObject, this.state.lastTokStartLoc); + } else if (!allowInexact) { + this.raise(FlowErrors.InexactInsideExact, this.state.lastTokStartLoc); + } + if (variance) { + this.raise(FlowErrors.InexactVariance, variance); + } + return null; + } + if (!allowSpread) { + this.raise(FlowErrors.UnexpectedSpreadType, this.state.lastTokStartLoc); + } + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.raise(FlowErrors.SpreadVariance, variance); + } + node.argument = this.flowParseType(); + return this.finishNode(node, "ObjectTypeSpreadProperty"); + } else { + node.key = this.flowParseObjectPropertyKey(); + node.static = isStatic; + node.proto = protoStartLoc != null; + node.kind = kind; + let optional = false; + if (this.match(47) || this.match(10)) { + node.method = true; + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.unexpected(variance.loc.start); + } + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); + if (kind === "get" || kind === "set") { + this.flowCheckGetterSetterParams(node); + } + if (!allowSpread && node.key.name === "constructor" && node.value.this) { + this.raise(FlowErrors.ThisParamBannedInConstructor, node.value.this); + } + } else { + if (kind !== "init") this.unexpected(); + node.method = false; + if (this.eat(17)) { + optional = true; + } + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + } + node.optional = optional; + return this.finishNode(node, "ObjectTypeProperty"); + } + } + flowCheckGetterSetterParams(property) { + const paramCount = property.kind === "get" ? 0 : 1; + const length = property.value.params.length + (property.value.rest ? 1 : 0); + if (property.value.this) { + this.raise(property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, property.value.this); + } + if (length !== paramCount) { + this.raise(property.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, property); + } + if (property.kind === "set" && property.value.rest) { + this.raise(Errors.BadSetterRestParameter, property); + } + } + flowObjectTypeSemicolon() { + if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) { + this.unexpected(); + } + } + flowParseQualifiedTypeIdentifier(startLoc, id) { + startLoc != null ? startLoc : startLoc = this.state.startLoc; + let node = id || this.flowParseRestrictedIdentifier(true); + while (this.eat(16)) { + const node2 = this.startNodeAt(startLoc); + node2.qualification = node; + node2.id = this.flowParseRestrictedIdentifier(true); + node = this.finishNode(node2, "QualifiedTypeIdentifier"); + } + return node; + } + flowParseGenericType(startLoc, id) { + const node = this.startNodeAt(startLoc); + node.typeParameters = null; + node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } + return this.finishNode(node, "GenericTypeAnnotation"); + } + flowParseTypeofType() { + const node = this.startNode(); + this.expect(87); + node.argument = this.flowParsePrimaryType(); + return this.finishNode(node, "TypeofTypeAnnotation"); + } + flowParseTupleType() { + const node = this.startNode(); + node.types = []; + this.expect(0); + while (this.state.pos < this.length && !this.match(3)) { + node.types.push(this.flowParseType()); + if (this.match(3)) break; + this.expect(12); + } + this.expect(3); + return this.finishNode(node, "TupleTypeAnnotation"); + } + flowParseFunctionTypeParam(first) { + let name = null; + let optional = false; + let typeAnnotation = null; + const node = this.startNode(); + const lh = this.lookahead(); + const isThis = this.state.type === 78; + if (lh.type === 14 || lh.type === 17) { + if (isThis && !first) { + this.raise(FlowErrors.ThisParamMustBeFirst, node); + } + name = this.parseIdentifier(isThis); + if (this.eat(17)) { + optional = true; + if (isThis) { + this.raise(FlowErrors.ThisParamMayNotBeOptional, node); + } + } + typeAnnotation = this.flowParseTypeInitialiser(); + } else { + typeAnnotation = this.flowParseType(); + } + node.name = name; + node.optional = optional; + node.typeAnnotation = typeAnnotation; + return this.finishNode(node, "FunctionTypeParam"); + } + reinterpretTypeAsFunctionTypeParam(type) { + const node = this.startNodeAt(type.loc.start); + node.name = null; + node.optional = false; + node.typeAnnotation = type; + return this.finishNode(node, "FunctionTypeParam"); + } + flowParseFunctionTypeParams(params = []) { + let rest = null; + let _this = null; + if (this.match(78)) { + _this = this.flowParseFunctionTypeParam(true); + _this.name = null; + if (!this.match(11)) { + this.expect(12); + } + } + while (!this.match(11) && !this.match(21)) { + params.push(this.flowParseFunctionTypeParam(false)); + if (!this.match(11)) { + this.expect(12); + } + } + if (this.eat(21)) { + rest = this.flowParseFunctionTypeParam(false); + } + return { + params, + rest, + _this + }; + } + flowIdentToTypeAnnotation(startLoc, node, id) { + switch (id.name) { + case "any": + return this.finishNode(node, "AnyTypeAnnotation"); + case "bool": + case "boolean": + return this.finishNode(node, "BooleanTypeAnnotation"); + case "mixed": + return this.finishNode(node, "MixedTypeAnnotation"); + case "empty": + return this.finishNode(node, "EmptyTypeAnnotation"); + case "number": + return this.finishNode(node, "NumberTypeAnnotation"); + case "string": + return this.finishNode(node, "StringTypeAnnotation"); + case "symbol": + return this.finishNode(node, "SymbolTypeAnnotation"); + default: + this.checkNotUnderscore(id.name); + return this.flowParseGenericType(startLoc, id); + } + } + flowParsePrimaryType() { + const startLoc = this.state.startLoc; + const node = this.startNode(); + let tmp; + let type; + let isGroupedType = false; + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + switch (this.state.type) { + case 5: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: true, + allowProto: false, + allowInexact: true + }); + case 6: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: true, + allowSpread: true, + allowProto: false, + allowInexact: false + }); + case 0: + this.state.noAnonFunctionType = false; + type = this.flowParseTupleType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + return type; + case 47: + { + const node = this.startNode(); + node.typeParameters = this.flowParseTypeParameterDeclaration(); + this.expect(10); + tmp = this.flowParseFunctionTypeParams(); + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(11); + this.expect(19); + node.returnType = this.flowParseType(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + case 10: + { + const node = this.startNode(); + this.next(); + if (!this.match(11) && !this.match(21)) { + if (tokenIsIdentifier(this.state.type) || this.match(78)) { + const token = this.lookahead().type; + isGroupedType = token !== 17 && token !== 14; + } else { + isGroupedType = true; + } + } + if (isGroupedType) { + this.state.noAnonFunctionType = false; + type = this.flowParseType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) { + this.expect(11); + return type; + } else { + this.eat(12); + } + } + if (type) { + tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]); + } else { + tmp = this.flowParseFunctionTypeParams(); + } + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(11); + this.expect(19); + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + } + case 134: + return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation"); + case 85: + case 86: + node.value = this.match(85); + this.next(); + return this.finishNode(node, "BooleanLiteralTypeAnnotation"); + case 53: + if (this.state.value === "-") { + this.next(); + if (this.match(135)) { + return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node); + } + if (this.match(136)) { + return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node); + } + throw this.raise(FlowErrors.UnexpectedSubtractionOperand, this.state.startLoc); + } + this.unexpected(); + return; + case 135: + return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation"); + case 136: + return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation"); + case 88: + this.next(); + return this.finishNode(node, "VoidTypeAnnotation"); + case 84: + this.next(); + return this.finishNode(node, "NullLiteralTypeAnnotation"); + case 78: + this.next(); + return this.finishNode(node, "ThisTypeAnnotation"); + case 55: + this.next(); + return this.finishNode(node, "ExistsTypeAnnotation"); + case 87: + return this.flowParseTypeofType(); + default: + if (tokenIsKeyword(this.state.type)) { + const label = tokenLabelName(this.state.type); + this.next(); + return super.createIdentifier(node, label); + } else if (tokenIsIdentifier(this.state.type)) { + if (this.isContextual(129)) { + return this.flowParseInterfaceType(); + } + return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier()); + } + } + this.unexpected(); + } + flowParsePostfixType() { + const startLoc = this.state.startLoc; + let type = this.flowParsePrimaryType(); + let seenOptionalIndexedAccess = false; + while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startLoc); + const optional = this.eat(18); + seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional; + this.expect(0); + if (!optional && this.match(3)) { + node.elementType = type; + this.next(); + type = this.finishNode(node, "ArrayTypeAnnotation"); + } else { + node.objectType = type; + node.indexType = this.flowParseType(); + this.expect(3); + if (seenOptionalIndexedAccess) { + node.optional = optional; + type = this.finishNode(node, "OptionalIndexedAccessType"); + } else { + type = this.finishNode(node, "IndexedAccessType"); + } + } + } + return type; + } + flowParsePrefixType() { + const node = this.startNode(); + if (this.eat(17)) { + node.typeAnnotation = this.flowParsePrefixType(); + return this.finishNode(node, "NullableTypeAnnotation"); + } else { + return this.flowParsePostfixType(); + } + } + flowParseAnonFunctionWithoutParens() { + const param = this.flowParsePrefixType(); + if (!this.state.noAnonFunctionType && this.eat(19)) { + const node = this.startNodeAt(param.loc.start); + node.params = [this.reinterpretTypeAsFunctionTypeParam(param)]; + node.rest = null; + node.this = null; + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + } + return param; + } + flowParseIntersectionType() { + const node = this.startNode(); + this.eat(45); + const type = this.flowParseAnonFunctionWithoutParens(); + node.types = [type]; + while (this.eat(45)) { + node.types.push(this.flowParseAnonFunctionWithoutParens()); + } + return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation"); + } + flowParseUnionType() { + const node = this.startNode(); + this.eat(43); + const type = this.flowParseIntersectionType(); + node.types = [type]; + while (this.eat(43)) { + node.types.push(this.flowParseIntersectionType()); + } + return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation"); + } + flowParseType() { + const oldInType = this.state.inType; + this.state.inType = true; + const type = this.flowParseUnionType(); + this.state.inType = oldInType; + return type; + } + flowParseTypeOrImplicitInstantiation() { + if (this.state.type === 132 && this.state.value === "_") { + const startLoc = this.state.startLoc; + const node = this.parseIdentifier(); + return this.flowParseGenericType(startLoc, node); + } else { + return this.flowParseType(); + } + } + flowParseTypeAnnotation() { + const node = this.startNode(); + node.typeAnnotation = this.flowParseTypeInitialiser(); + return this.finishNode(node, "TypeAnnotation"); + } + flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) { + const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier(); + if (this.match(14)) { + ident.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(ident); + } + return ident; + } + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); + return node.expression; + } + flowParseVariance() { + let variance = null; + if (this.match(53)) { + variance = this.startNode(); + if (this.state.value === "+") { + variance.kind = "plus"; + } else { + variance.kind = "minus"; + } + this.next(); + return this.finishNode(variance, "Variance"); + } + return variance; + } + parseFunctionBody(node, allowExpressionBody, isMethod = false) { + if (allowExpressionBody) { + this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod)); + return; + } + super.parseFunctionBody(node, false, isMethod); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(14)) { + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null; + } + return super.parseFunctionBodyAndFinish(node, type, isMethod); + } + parseStatementLike(flags) { + if (this.state.strict && this.isContextual(129)) { + const lookahead = this.lookahead(); + if (tokenIsKeywordOrIdentifier(lookahead.type)) { + const node = this.startNode(); + this.next(); + return this.flowParseInterface(node); + } + } else if (this.isContextual(126)) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + const stmt = super.parseStatementLike(flags); + if (this.flowPragma === undefined && !this.isValidDirective(stmt)) { + this.flowPragma = null; + } + return stmt; + } + parseExpressionStatement(node, expr, decorators) { + if (expr.type === "Identifier") { + if (expr.name === "declare") { + if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) { + return this.flowParseDeclare(node); + } + } else if (tokenIsIdentifier(this.state.type)) { + if (expr.name === "interface") { + return this.flowParseInterface(node); + } else if (expr.name === "type") { + return this.flowParseTypeAlias(node); + } else if (expr.name === "opaque") { + return this.flowParseOpaqueType(node, false); + } + } + } + return super.parseExpressionStatement(node, expr, decorators); + } + shouldParseExportDeclaration() { + const { + type + } = this.state; + if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) { + return !this.state.containsEsc; + } + return super.shouldParseExportDeclaration(); + } + isExportDefaultSpecifier() { + const { + type + } = this.state; + if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) { + return this.state.containsEsc; + } + return super.isExportDefaultSpecifier(); + } + parseExportDefaultExpression() { + if (this.isContextual(126)) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + return super.parseExportDefaultExpression(); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (!this.match(17)) return expr; + if (this.state.maybeInArrowParameters) { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { + this.setOptionalParametersError(refExpressionErrors); + return expr; + } + } + this.expect(17); + const state = this.state.clone(); + const originalNoArrowAt = this.state.noArrowAt; + const node = this.startNodeAt(startLoc); + let { + consequent, + failed + } = this.tryParseConditionalConsequent(); + let [valid, invalid] = this.getArrowLikeExpressions(consequent); + if (failed || invalid.length > 0) { + const noArrowAt = [...originalNoArrowAt]; + if (invalid.length > 0) { + this.state = state; + this.state.noArrowAt = noArrowAt; + for (let i = 0; i < invalid.length; i++) { + noArrowAt.push(invalid[i].start); + } + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + [valid, invalid] = this.getArrowLikeExpressions(consequent); + } + if (failed && valid.length > 1) { + this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc); + } + if (failed && valid.length === 1) { + this.state = state; + noArrowAt.push(valid[0].start); + this.state.noArrowAt = noArrowAt; + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + } + } + this.getArrowLikeExpressions(consequent, true); + this.state.noArrowAt = originalNoArrowAt; + this.expect(14); + node.test = expr; + node.consequent = consequent; + node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined)); + return this.finishNode(node, "ConditionalExpression"); + } + tryParseConditionalConsequent() { + this.state.noArrowParamsConversionAt.push(this.state.start); + const consequent = this.parseMaybeAssignAllowIn(); + const failed = !this.match(14); + this.state.noArrowParamsConversionAt.pop(); + return { + consequent, + failed + }; + } + getArrowLikeExpressions(node, disallowInvalid) { + const stack = [node]; + const arrows = []; + while (stack.length !== 0) { + const node = stack.pop(); + if (node.type === "ArrowFunctionExpression" && node.body.type !== "BlockStatement") { + if (node.typeParameters || !node.returnType) { + this.finishArrowValidation(node); + } else { + arrows.push(node); + } + stack.push(node.body); + } else if (node.type === "ConditionalExpression") { + stack.push(node.consequent); + stack.push(node.alternate); + } + } + if (disallowInvalid) { + arrows.forEach(node => this.finishArrowValidation(node)); + return [arrows, []]; + } + return partition(arrows, node => node.params.every(param => this.isAssignable(param, true))); + } + finishArrowValidation(node) { + var _node$extra; + this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false); + this.scope.enter(514 | 4); + super.checkParams(node, false, true); + this.scope.exit(); + } + forwardNoArrowParamsConversionAt(node, parse) { + let result; + if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + this.state.noArrowParamsConversionAt.push(this.state.start); + result = parse(); + this.state.noArrowParamsConversionAt.pop(); + } else { + result = parse(); + } + return result; + } + parseParenItem(node, startLoc) { + const newNode = super.parseParenItem(node, startLoc); + if (this.eat(17)) { + newNode.optional = true; + this.resetEndLocation(node); + } + if (this.match(14)) { + const typeCastNode = this.startNodeAt(startLoc); + typeCastNode.expression = newNode; + typeCastNode.typeAnnotation = this.flowParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TypeCastExpression"); + } + return newNode; + } + assertModuleNodeAllowed(node) { + if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") { + return; + } + super.assertModuleNodeAllowed(node); + } + parseExportDeclaration(node) { + if (this.isContextual(130)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + if (this.match(5)) { + node.specifiers = this.parseExportSpecifiers(true); + super.parseExportFrom(node); + return null; + } else { + return this.flowParseTypeAlias(declarationNode); + } + } else if (this.isContextual(131)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseOpaqueType(declarationNode, false); + } else if (this.isContextual(129)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseInterface(declarationNode); + } else if (this.isContextual(126)) { + node.exportKind = "value"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(declarationNode); + } else { + return super.parseExportDeclaration(node); + } + } + eatExportStar(node) { + if (super.eatExportStar(node)) return true; + if (this.isContextual(130) && this.lookahead().type === 55) { + node.exportKind = "type"; + this.next(); + this.next(); + return true; + } + return false; + } + maybeParseExportNamespaceSpecifier(node) { + const { + startLoc + } = this.state; + const hasNamespace = super.maybeParseExportNamespaceSpecifier(node); + if (hasNamespace && node.exportKind === "type") { + this.unexpected(startLoc); + } + return hasNamespace; + } + parseClassId(node, isStatement, optionalId) { + super.parseClassId(node, isStatement, optionalId); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + } + parseClassMember(classBody, member, state) { + const { + startLoc + } = this.state; + if (this.isContextual(125)) { + if (super.parseClassMemberFromModifier(classBody, member)) { + return; + } + member.declare = true; + } + super.parseClassMember(classBody, member, state); + if (member.declare) { + if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") { + this.raise(FlowErrors.DeclareClassElement, startLoc); + } else if (member.value) { + this.raise(FlowErrors.DeclareClassFieldInitializer, member.value); + } + } + } + isIterator(word) { + return word === "iterator" || word === "asyncIterator"; + } + readIterator() { + const word = super.readWord1(); + const fullWord = "@@" + word; + if (!this.isIterator(word) || !this.state.inType) { + this.raise(Errors.InvalidIdentifier, this.state.curPosition(), { + identifierName: fullWord + }); + } + this.finishToken(132, fullWord); + } + getTokenFromCode(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 123 && next === 124) { + this.finishOp(6, 2); + } else if (this.state.inType && (code === 62 || code === 60)) { + this.finishOp(code === 62 ? 48 : 47, 1); + } else if (this.state.inType && code === 63) { + if (next === 46) { + this.finishOp(18, 2); + } else { + this.finishOp(17, 1); + } + } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) { + this.state.pos += 2; + this.readIterator(); + } else { + super.getTokenFromCode(code); + } + } + isAssignable(node, isBinding) { + if (node.type === "TypeCastExpression") { + return this.isAssignable(node.expression, isBinding); + } else { + return super.isAssignable(node, isBinding); + } + } + toAssignable(node, isLHS = false) { + if (!isLHS && node.type === "AssignmentExpression" && node.left.type === "TypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } + super.toAssignable(node, isLHS); + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") { + exprList[i] = this.typeCastToParameter(expr); + } + } + super.toAssignableList(exprList, trailingCommaLoc, isLHS); + } + toReferencedList(exprList, isParenthesizedExpr) { + for (let i = 0; i < exprList.length; i++) { + var _expr$extra; + const expr = exprList[i]; + if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) { + this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation); + } + } + return exprList; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors); + if (canBePattern && !this.state.maybeInArrowParameters) { + this.toReferencedList(node.elements); + } + return node; + } + isValidLVal(type, isParenthesized, binding) { + return type === "TypeCastExpression" || super.isValidLVal(type, isParenthesized, binding); + } + parseClassProperty(node) { + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return super.parseClassProperty(node); + } + parseClassPrivateProperty(node) { + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return super.parseClassPrivateProperty(node); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(14) || super.isClassProperty(); + } + isNonstaticConstructor(method) { + return !this.match(14) && super.isNonstaticConstructor(method); + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + if (method.variance) { + this.unexpected(method.variance.loc.start); + } + delete method.variance; + if (this.match(47)) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + if (method.params && isConstructor) { + const params = method.params; + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(FlowErrors.ThisParamBannedInConstructor, method); + } + } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) { + const params = method.value.params; + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(FlowErrors.ThisParamBannedInConstructor, method); + } + } + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + if (method.variance) { + this.unexpected(method.variance.loc.start); + } + delete method.variance; + if (this.match(47)) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + parseClassSuper(node) { + super.parseClassSuper(node); + if (node.superClass && (this.match(47) || this.match(51))) { + { + node.superTypeParameters = this.flowParseTypeParameterInstantiationInExpression(); + } + } + if (this.isContextual(113)) { + this.next(); + const implemented = node.implements = []; + do { + const node = this.startNode(); + node.id = this.flowParseRestrictedIdentifier(true); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + implemented.push(this.finishNode(node, "ClassImplements")); + } while (this.eat(12)); + } + } + checkGetterSetterParams(method) { + super.checkGetterSetterParams(method); + const params = this.getObjectOrClassMethodParams(method); + if (params.length > 0) { + const param = params[0]; + if (this.isThisParam(param) && method.kind === "get") { + this.raise(FlowErrors.GetterMayNotHaveThisParam, param); + } else if (this.isThisParam(param)) { + this.raise(FlowErrors.SetterMayNotHaveThisParam, param); + } + } + } + parsePropertyNamePrefixOperator(node) { + node.variance = this.flowParseVariance(); + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + if (prop.variance) { + this.unexpected(prop.variance.loc.start); + } + delete prop.variance; + let typeParameters; + if (this.match(47) && !isAccessor) { + typeParameters = this.flowParseTypeParameterDeclaration(); + if (!this.match(10)) this.unexpected(); + } + const result = super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + if (typeParameters) { + (result.value || result).typeParameters = typeParameters; + } + return result; + } + parseFunctionParamType(param) { + if (this.eat(17)) { + if (param.type !== "Identifier") { + this.raise(FlowErrors.PatternIsOptional, param); + } + if (this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamMayNotBeOptional, param); + } + param.optional = true; + } + if (this.match(14)) { + param.typeAnnotation = this.flowParseTypeAnnotation(); + } else if (this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamAnnotationRequired, param); + } + if (this.match(29) && this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamNoDefault, param); + } + this.resetEndLocation(param); + return param; + } + parseMaybeDefault(startLoc, left) { + const node = super.parseMaybeDefault(startLoc, left); + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation); + } + return node; + } + checkImportReflection(node) { + super.checkImportReflection(node); + if (node.module && node.importKind !== "value") { + this.raise(FlowErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start); + } + } + parseImportSpecifierLocal(node, specifier, type) { + specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier(); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + isPotentialImportPhase(isExport) { + if (super.isPotentialImportPhase(isExport)) return true; + if (this.isContextual(130)) { + if (!isExport) return true; + const ch = this.lookaheadCharCode(); + return ch === 123 || ch === 42; + } + return !isExport && this.isContextual(87); + } + applyImportPhase(node, isExport, phase, loc) { + super.applyImportPhase(node, isExport, phase, loc); + if (isExport) { + if (!phase && this.match(65)) { + return; + } + node.exportKind = phase === "type" ? phase : "value"; + } else { + if (phase === "type" && this.match(55)) this.unexpected(); + node.importKind = phase === "type" || phase === "typeof" ? phase : "value"; + } + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + const firstIdent = specifier.imported; + let specifierTypeKind = null; + if (firstIdent.type === "Identifier") { + if (firstIdent.name === "type") { + specifierTypeKind = "type"; + } else if (firstIdent.name === "typeof") { + specifierTypeKind = "typeof"; + } + } + let isBinding = false; + if (this.isContextual(93) && !this.isLookaheadContextual("as")) { + const as_ident = this.parseIdentifier(true); + if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) { + specifier.imported = as_ident; + specifier.importKind = specifierTypeKind; + specifier.local = this.cloneIdentifier(as_ident); + } else { + specifier.imported = firstIdent; + specifier.importKind = null; + specifier.local = this.parseIdentifier(); + } + } else { + if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) { + specifier.imported = this.parseIdentifier(true); + specifier.importKind = specifierTypeKind; + } else { + if (importedIsString) { + throw this.raise(Errors.ImportBindingIsString, specifier, { + importName: firstIdent.value + }); + } + specifier.imported = firstIdent; + specifier.importKind = null; + } + if (this.eatContextual(93)) { + specifier.local = this.parseIdentifier(); + } else { + isBinding = true; + specifier.local = this.cloneIdentifier(specifier.imported); + } + } + const specifierIsTypeImport = hasTypeImportKind(specifier); + if (isInTypeOnlyImport && specifierIsTypeImport) { + this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier); + } + if (isInTypeOnlyImport || specifierIsTypeImport) { + this.checkReservedType(specifier.local.name, specifier.local.loc.start, true); + } + if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) { + this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true); + } + return this.finishImportSpecifier(specifier, "ImportSpecifier"); + } + parseBindingAtom() { + switch (this.state.type) { + case 78: + return this.parseIdentifier(true); + default: + return super.parseBindingAtom(); + } + } + parseFunctionParams(node, isConstructor) { + const kind = node.kind; + if (kind !== "get" && kind !== "set" && this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.parseFunctionParams(node, isConstructor); + } + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + if (this.match(14)) { + decl.id.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(decl.id); + } + } + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(14)) { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + node.returnType = this.flowParseTypeAnnotation(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + } + return super.parseAsyncArrowFromCallExpression(node, call); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx; + let state = null; + let jsx; + if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const currentContext = context[context.length - 1]; + if (currentContext === types.j_oTag || currentContext === types.j_expr) { + context.pop(); + } + } + if ((_jsx = jsx) != null && _jsx.error || this.match(47)) { + var _jsx2, _jsx3; + state = state || this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _arrowExpression$extr; + typeParameters = this.flowParseTypeParameterDeclaration(); + const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => { + const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + this.resetStartLocationFromNode(result, typeParameters); + return result; + }); + if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort(); + const expr = this.maybeUnwrapTypeCastExpression(arrowExpression); + if (expr.type !== "ArrowFunctionExpression") abort(); + expr.typeParameters = typeParameters; + this.resetStartLocationFromNode(expr, typeParameters); + return arrowExpression; + }, state); + let arrowExpression = null; + if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") { + if (!arrow.error && !arrow.aborted) { + if (arrow.node.async) { + this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, typeParameters); + } + return arrow.node; + } + arrowExpression = arrow.node; + } + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + if (arrowExpression) { + this.state = arrow.failState; + return arrowExpression; + } + if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error; + if (arrow.thrown) throw arrow.error; + throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, typeParameters); + } + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + parseArrow(node) { + if (this.match(14)) { + const result = this.tryParse(() => { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.canInsertSemicolon()) this.unexpected(); + if (!this.match(19)) this.unexpected(); + return typeNode; + }); + if (result.thrown) return null; + if (result.error) this.state = result.failState; + node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null; + } + return super.parseArrow(node); + } + shouldParseArrow(params) { + return this.match(14) || super.shouldParseArrow(params); + } + setArrowFunctionParameters(node, params) { + if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + node.params = params; + } else { + super.setArrowFunctionParameters(node, params); + } + } + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + if (isArrowFunction && this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + return; + } + for (let i = 0; i < node.params.length; i++) { + if (this.isThisParam(node.params[i]) && i > 0) { + this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]); + } + } + super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged); + } + parseParenAndDistinguishExpression(canBeArrow) { + return super.parseParenAndDistinguishExpression(canBeArrow && !this.state.noArrowAt.includes(this.sourceToOffsetPos(this.state.start))); + } + parseSubscripts(base, startLoc, noCalls) { + if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.includes(startLoc.index)) { + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + node.arguments = super.parseCallExpressionArguments(); + base = this.finishNode(node, "CallExpression"); + } else if (base.type === "Identifier" && base.name === "async" && this.match(47)) { + const state = this.state.clone(); + const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(), state); + if (!arrow.error && !arrow.aborted) return arrow.node; + const result = this.tryParse(() => super.parseSubscripts(base, startLoc, noCalls), state); + if (result.node && !result.error) return result.node; + if (arrow.node) { + this.state = arrow.failState; + return arrow.node; + } + if (result.node) { + this.state = result.failState; + return result.node; + } + throw arrow.error || result.error; + } + return super.parseSubscripts(base, startLoc, noCalls); + } + parseSubscript(base, startLoc, noCalls, subscriptState) { + if (this.match(18) && this.isLookaheadToken_lt()) { + subscriptState.optionalChainMember = true; + if (noCalls) { + subscriptState.stop = true; + return base; + } + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + node.typeArguments = this.flowParseTypeParameterInstantiationInExpression(); + this.expect(10); + node.arguments = this.parseCallExpressionArguments(); + node.optional = true; + return this.finishCallExpression(node, true); + } else if (!noCalls && this.shouldParseTypes() && (this.match(47) || this.match(51))) { + const node = this.startNodeAt(startLoc); + node.callee = base; + const result = this.tryParse(() => { + node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew(); + this.expect(10); + node.arguments = super.parseCallExpressionArguments(); + if (subscriptState.optionalChainMember) { + node.optional = false; + } + return this.finishCallExpression(node, subscriptState.optionalChainMember); + }); + if (result.node) { + if (result.error) this.state = result.failState; + return result.node; + } + } + return super.parseSubscript(base, startLoc, noCalls, subscriptState); + } + parseNewCallee(node) { + super.parseNewCallee(node); + let targs = null; + if (this.shouldParseTypes() && this.match(47)) { + targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node; + } + node.typeArguments = targs; + } + parseAsyncArrowWithTypeParameters(startLoc) { + const node = this.startNodeAt(startLoc); + this.parseFunctionParams(node, false); + if (!this.parseArrow(node)) return; + return super.parseArrowExpression(node, undefined, true); + } + readToken_mult_modulo(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 42 && next === 47 && this.state.hasFlowComment) { + this.state.hasFlowComment = false; + this.state.pos += 2; + this.nextToken(); + return; + } + super.readToken_mult_modulo(code); + } + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 124 && next === 125) { + this.finishOp(9, 2); + return; + } + super.readToken_pipe_amp(code); + } + parseTopLevel(file, program) { + const fileNode = super.parseTopLevel(file, program); + if (this.state.hasFlowComment) { + this.raise(FlowErrors.UnterminatedFlowComment, this.state.curPosition()); + } + return fileNode; + } + skipBlockComment() { + if (this.hasPlugin("flowComments") && this.skipFlowComment()) { + if (this.state.hasFlowComment) { + throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc); + } + this.hasFlowCommentCompletion(); + const commentSkip = this.skipFlowComment(); + if (commentSkip) { + this.state.pos += commentSkip; + this.state.hasFlowComment = true; + } + return; + } + return super.skipBlockComment(this.state.hasFlowComment ? "*-/" : "*/"); + } + skipFlowComment() { + const { + pos + } = this.state; + let shiftToFirstNonWhiteSpace = 2; + while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) { + shiftToFirstNonWhiteSpace++; + } + const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos); + const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1); + if (ch2 === 58 && ch3 === 58) { + return shiftToFirstNonWhiteSpace + 2; + } + if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") { + return shiftToFirstNonWhiteSpace + 12; + } + if (ch2 === 58 && ch3 !== 58) { + return shiftToFirstNonWhiteSpace; + } + return false; + } + hasFlowCommentCompletion() { + const end = this.input.indexOf("*/", this.state.pos); + if (end === -1) { + throw this.raise(Errors.UnterminatedComment, this.state.curPosition()); + } + } + flowEnumErrorBooleanMemberNotInitialized(loc, { + enumName, + memberName + }) { + this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, { + memberName, + enumName + }); + } + flowEnumErrorInvalidMemberInitializer(loc, enumContext) { + return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === "symbol" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, loc, enumContext); + } + flowEnumErrorNumberMemberNotInitialized(loc, details) { + this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details); + } + flowEnumErrorStringMemberInconsistentlyInitialized(node, details) { + this.raise(FlowErrors.EnumStringMemberInconsistentlyInitialized, node, details); + } + flowEnumMemberInit() { + const startLoc = this.state.startLoc; + const endOfInit = () => this.match(12) || this.match(8); + switch (this.state.type) { + case 135: + { + const literal = this.parseNumericLiteral(this.state.value); + if (endOfInit()) { + return { + type: "number", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + case 134: + { + const literal = this.parseStringLiteral(this.state.value); + if (endOfInit()) { + return { + type: "string", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + case 85: + case 86: + { + const literal = this.parseBooleanLiteral(this.match(85)); + if (endOfInit()) { + return { + type: "boolean", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + default: + return { + type: "invalid", + loc: startLoc + }; + } + } + flowEnumMemberRaw() { + const loc = this.state.startLoc; + const id = this.parseIdentifier(true); + const init = this.eat(29) ? this.flowEnumMemberInit() : { + type: "none", + loc + }; + return { + id, + init + }; + } + flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) { + const { + explicitType + } = context; + if (explicitType === null) { + return; + } + if (explicitType !== expectedType) { + this.flowEnumErrorInvalidMemberInitializer(loc, context); + } + } + flowEnumMembers({ + enumName, + explicitType + }) { + const seenNames = new Set(); + const members = { + booleanMembers: [], + numberMembers: [], + stringMembers: [], + defaultedMembers: [] + }; + let hasUnknownMembers = false; + while (!this.match(8)) { + if (this.eat(21)) { + hasUnknownMembers = true; + break; + } + const memberNode = this.startNode(); + const { + id, + init + } = this.flowEnumMemberRaw(); + const memberName = id.name; + if (memberName === "") { + continue; + } + if (/^[a-z]/.test(memberName)) { + this.raise(FlowErrors.EnumInvalidMemberName, id, { + memberName, + suggestion: memberName[0].toUpperCase() + memberName.slice(1), + enumName + }); + } + if (seenNames.has(memberName)) { + this.raise(FlowErrors.EnumDuplicateMemberName, id, { + memberName, + enumName + }); + } + seenNames.add(memberName); + const context = { + enumName, + explicitType, + memberName + }; + memberNode.id = id; + switch (init.type) { + case "boolean": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "boolean"); + memberNode.init = init.value; + members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember")); + break; + } + case "number": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "number"); + memberNode.init = init.value; + members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember")); + break; + } + case "string": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "string"); + memberNode.init = init.value; + members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember")); + break; + } + case "invalid": + { + throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context); + } + case "none": + { + switch (explicitType) { + case "boolean": + this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context); + break; + case "number": + this.flowEnumErrorNumberMemberNotInitialized(init.loc, context); + break; + default: + members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember")); + } + } + } + if (!this.match(8)) { + this.expect(12); + } + } + return { + members, + hasUnknownMembers + }; + } + flowEnumStringMembers(initializedMembers, defaultedMembers, { + enumName + }) { + if (initializedMembers.length === 0) { + return defaultedMembers; + } else if (defaultedMembers.length === 0) { + return initializedMembers; + } else if (defaultedMembers.length > initializedMembers.length) { + for (const member of initializedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitialized(member, { + enumName + }); + } + return defaultedMembers; + } else { + for (const member of defaultedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitialized(member, { + enumName + }); + } + return initializedMembers; + } + } + flowEnumParseExplicitType({ + enumName + }) { + if (!this.eatContextual(102)) return null; + if (!tokenIsIdentifier(this.state.type)) { + throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, this.state.startLoc, { + enumName + }); + } + const { + value + } = this.state; + this.next(); + if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") { + this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, { + enumName, + invalidEnumType: value + }); + } + return value; + } + flowEnumBody(node, id) { + const enumName = id.name; + const nameLoc = id.loc.start; + const explicitType = this.flowEnumParseExplicitType({ + enumName + }); + this.expect(5); + const { + members, + hasUnknownMembers + } = this.flowEnumMembers({ + enumName, + explicitType + }); + node.hasUnknownMembers = hasUnknownMembers; + switch (explicitType) { + case "boolean": + node.explicitType = true; + node.members = members.booleanMembers; + this.expect(8); + return this.finishNode(node, "EnumBooleanBody"); + case "number": + node.explicitType = true; + node.members = members.numberMembers; + this.expect(8); + return this.finishNode(node, "EnumNumberBody"); + case "string": + node.explicitType = true; + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + case "symbol": + node.members = members.defaultedMembers; + this.expect(8); + return this.finishNode(node, "EnumSymbolBody"); + default: + { + const empty = () => { + node.members = []; + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + }; + node.explicitType = false; + const boolsLen = members.booleanMembers.length; + const numsLen = members.numberMembers.length; + const strsLen = members.stringMembers.length; + const defaultedLen = members.defaultedMembers.length; + if (!boolsLen && !numsLen && !strsLen && !defaultedLen) { + return empty(); + } else if (!boolsLen && !numsLen) { + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, { + enumName, + memberName: member.id.name + }); + } + node.members = members.booleanMembers; + this.expect(8); + return this.finishNode(node, "EnumBooleanBody"); + } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, { + enumName, + memberName: member.id.name + }); + } + node.members = members.numberMembers; + this.expect(8); + return this.finishNode(node, "EnumNumberBody"); + } else { + this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, { + enumName + }); + return empty(); + } + } + } + } + flowParseEnumDeclaration(node) { + const id = this.parseIdentifier(); + node.id = id; + node.body = this.flowEnumBody(this.startNode(), id); + return this.finishNode(node, "EnumDeclaration"); + } + jsxParseOpeningElementAfterName(node) { + if (this.shouldParseTypes()) { + if (this.match(47) || this.match(51)) { + node.typeArguments = this.flowParseTypeParameterInstantiationInExpression(); + } + } + return super.jsxParseOpeningElementAfterName(node); + } + isLookaheadToken_lt() { + const next = this.nextTokenStart(); + if (this.input.charCodeAt(next) === 60) { + const afterNext = this.input.charCodeAt(next + 1); + return afterNext !== 60 && afterNext !== 61; + } + return false; + } + reScan_lt_gt() { + const { + type + } = this.state; + if (type === 47) { + this.state.pos -= 1; + this.readToken_lt(); + } else if (type === 48) { + this.state.pos -= 1; + this.readToken_gt(); + } + } + reScan_lt() { + const { + type + } = this.state; + if (type === 51) { + this.state.pos -= 2; + this.finishOp(47, 1); + return 47; + } + return type; + } + maybeUnwrapTypeCastExpression(node) { + return node.type === "TypeCastExpression" ? node.expression : node; + } + }; + const entities = { + __proto__: null, + quot: "\u0022", + amp: "&", + apos: "\u0027", + lt: "<", + gt: ">", + nbsp: "\u00A0", + iexcl: "\u00A1", + cent: "\u00A2", + pound: "\u00A3", + curren: "\u00A4", + yen: "\u00A5", + brvbar: "\u00A6", + sect: "\u00A7", + uml: "\u00A8", + copy: "\u00A9", + ordf: "\u00AA", + laquo: "\u00AB", + not: "\u00AC", + shy: "\u00AD", + reg: "\u00AE", + macr: "\u00AF", + deg: "\u00B0", + plusmn: "\u00B1", + sup2: "\u00B2", + sup3: "\u00B3", + acute: "\u00B4", + micro: "\u00B5", + para: "\u00B6", + middot: "\u00B7", + cedil: "\u00B8", + sup1: "\u00B9", + ordm: "\u00BA", + raquo: "\u00BB", + frac14: "\u00BC", + frac12: "\u00BD", + frac34: "\u00BE", + iquest: "\u00BF", + Agrave: "\u00C0", + Aacute: "\u00C1", + Acirc: "\u00C2", + Atilde: "\u00C3", + Auml: "\u00C4", + Aring: "\u00C5", + AElig: "\u00C6", + Ccedil: "\u00C7", + Egrave: "\u00C8", + Eacute: "\u00C9", + Ecirc: "\u00CA", + Euml: "\u00CB", + Igrave: "\u00CC", + Iacute: "\u00CD", + Icirc: "\u00CE", + Iuml: "\u00CF", + ETH: "\u00D0", + Ntilde: "\u00D1", + Ograve: "\u00D2", + Oacute: "\u00D3", + Ocirc: "\u00D4", + Otilde: "\u00D5", + Ouml: "\u00D6", + times: "\u00D7", + Oslash: "\u00D8", + Ugrave: "\u00D9", + Uacute: "\u00DA", + Ucirc: "\u00DB", + Uuml: "\u00DC", + Yacute: "\u00DD", + THORN: "\u00DE", + szlig: "\u00DF", + agrave: "\u00E0", + aacute: "\u00E1", + acirc: "\u00E2", + atilde: "\u00E3", + auml: "\u00E4", + aring: "\u00E5", + aelig: "\u00E6", + ccedil: "\u00E7", + egrave: "\u00E8", + eacute: "\u00E9", + ecirc: "\u00EA", + euml: "\u00EB", + igrave: "\u00EC", + iacute: "\u00ED", + icirc: "\u00EE", + iuml: "\u00EF", + eth: "\u00F0", + ntilde: "\u00F1", + ograve: "\u00F2", + oacute: "\u00F3", + ocirc: "\u00F4", + otilde: "\u00F5", + ouml: "\u00F6", + divide: "\u00F7", + oslash: "\u00F8", + ugrave: "\u00F9", + uacute: "\u00FA", + ucirc: "\u00FB", + uuml: "\u00FC", + yacute: "\u00FD", + thorn: "\u00FE", + yuml: "\u00FF", + OElig: "\u0152", + oelig: "\u0153", + Scaron: "\u0160", + scaron: "\u0161", + Yuml: "\u0178", + fnof: "\u0192", + circ: "\u02C6", + tilde: "\u02DC", + Alpha: "\u0391", + Beta: "\u0392", + Gamma: "\u0393", + Delta: "\u0394", + Epsilon: "\u0395", + Zeta: "\u0396", + Eta: "\u0397", + Theta: "\u0398", + Iota: "\u0399", + Kappa: "\u039A", + Lambda: "\u039B", + Mu: "\u039C", + Nu: "\u039D", + Xi: "\u039E", + Omicron: "\u039F", + Pi: "\u03A0", + Rho: "\u03A1", + Sigma: "\u03A3", + Tau: "\u03A4", + Upsilon: "\u03A5", + Phi: "\u03A6", + Chi: "\u03A7", + Psi: "\u03A8", + Omega: "\u03A9", + alpha: "\u03B1", + beta: "\u03B2", + gamma: "\u03B3", + delta: "\u03B4", + epsilon: "\u03B5", + zeta: "\u03B6", + eta: "\u03B7", + theta: "\u03B8", + iota: "\u03B9", + kappa: "\u03BA", + lambda: "\u03BB", + mu: "\u03BC", + nu: "\u03BD", + xi: "\u03BE", + omicron: "\u03BF", + pi: "\u03C0", + rho: "\u03C1", + sigmaf: "\u03C2", + sigma: "\u03C3", + tau: "\u03C4", + upsilon: "\u03C5", + phi: "\u03C6", + chi: "\u03C7", + psi: "\u03C8", + omega: "\u03C9", + thetasym: "\u03D1", + upsih: "\u03D2", + piv: "\u03D6", + ensp: "\u2002", + emsp: "\u2003", + thinsp: "\u2009", + zwnj: "\u200C", + zwj: "\u200D", + lrm: "\u200E", + rlm: "\u200F", + ndash: "\u2013", + mdash: "\u2014", + lsquo: "\u2018", + rsquo: "\u2019", + sbquo: "\u201A", + ldquo: "\u201C", + rdquo: "\u201D", + bdquo: "\u201E", + dagger: "\u2020", + Dagger: "\u2021", + bull: "\u2022", + hellip: "\u2026", + permil: "\u2030", + prime: "\u2032", + Prime: "\u2033", + lsaquo: "\u2039", + rsaquo: "\u203A", + oline: "\u203E", + frasl: "\u2044", + euro: "\u20AC", + image: "\u2111", + weierp: "\u2118", + real: "\u211C", + trade: "\u2122", + alefsym: "\u2135", + larr: "\u2190", + uarr: "\u2191", + rarr: "\u2192", + darr: "\u2193", + harr: "\u2194", + crarr: "\u21B5", + lArr: "\u21D0", + uArr: "\u21D1", + rArr: "\u21D2", + dArr: "\u21D3", + hArr: "\u21D4", + forall: "\u2200", + part: "\u2202", + exist: "\u2203", + empty: "\u2205", + nabla: "\u2207", + isin: "\u2208", + notin: "\u2209", + ni: "\u220B", + prod: "\u220F", + sum: "\u2211", + minus: "\u2212", + lowast: "\u2217", + radic: "\u221A", + prop: "\u221D", + infin: "\u221E", + ang: "\u2220", + and: "\u2227", + or: "\u2228", + cap: "\u2229", + cup: "\u222A", + int: "\u222B", + there4: "\u2234", + sim: "\u223C", + cong: "\u2245", + asymp: "\u2248", + ne: "\u2260", + equiv: "\u2261", + le: "\u2264", + ge: "\u2265", + sub: "\u2282", + sup: "\u2283", + nsub: "\u2284", + sube: "\u2286", + supe: "\u2287", + oplus: "\u2295", + otimes: "\u2297", + perp: "\u22A5", + sdot: "\u22C5", + lceil: "\u2308", + rceil: "\u2309", + lfloor: "\u230A", + rfloor: "\u230B", + lang: "\u2329", + rang: "\u232A", + loz: "\u25CA", + spades: "\u2660", + clubs: "\u2663", + hearts: "\u2665", + diams: "\u2666" + }; + const lineBreak = /\r\n|[\r\n\u2028\u2029]/; + const lineBreakG = new RegExp(lineBreak.source, "g"); + function isNewLine(code) { + switch (code) { + case 10: + case 13: + case 8232: + case 8233: + return true; + default: + return false; + } + } + function hasNewLine(input, start, end) { + for (let i = start; i < end; i++) { + if (isNewLine(input.charCodeAt(i))) { + return true; + } + } + return false; + } + const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; + const skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/g; + function isWhitespace(code) { + switch (code) { + case 0x0009: + case 0x000b: + case 0x000c: + case 32: + case 160: + case 5760: + case 0x2000: + case 0x2001: + case 0x2002: + case 0x2003: + case 0x2004: + case 0x2005: + case 0x2006: + case 0x2007: + case 0x2008: + case 0x2009: + case 0x200a: + case 0x202f: + case 0x205f: + case 0x3000: + case 0xfeff: + return true; + default: + return false; + } + } + const JsxErrors = ParseErrorEnum`jsx`({ + AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.", + MissingClosingTagElement: ({ + openingTagName + }) => `Expected corresponding JSX closing tag for <${openingTagName}>.`, + MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.", + UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?", + UnexpectedToken: ({ + unexpected, + HTMLEntity + }) => `Unexpected token \`${unexpected}\`. Did you mean \`${HTMLEntity}\` or \`{'${unexpected}'}\`?`, + UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.", + UnterminatedJsxContent: "Unterminated JSX contents.", + UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?" + }); + function isFragment(object) { + return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false; + } + function getQualifiedJSXName(object) { + if (object.type === "JSXIdentifier") { + return object.name; + } + if (object.type === "JSXNamespacedName") { + return object.namespace.name + ":" + object.name.name; + } + if (object.type === "JSXMemberExpression") { + return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property); + } + throw new Error("Node had unexpected type: " + object.type); + } + var jsx = superClass => class JSXParserMixin extends superClass { + jsxReadToken() { + let out = ""; + let chunkStart = this.state.pos; + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(JsxErrors.UnterminatedJsxContent, this.state.startLoc); + } + const ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 60: + case 123: + if (this.state.pos === this.state.start) { + if (ch === 60 && this.state.canStartJSXElement) { + ++this.state.pos; + this.finishToken(143); + } else { + super.getTokenFromCode(ch); + } + return; + } + out += this.input.slice(chunkStart, this.state.pos); + this.finishToken(142, out); + return; + case 38: + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + break; + case 62: + case 125: + default: + if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(true); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + } + } + jsxReadNewLine(normalizeCRLF) { + const ch = this.input.charCodeAt(this.state.pos); + let out; + ++this.state.pos; + if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + out = normalizeCRLF ? "\n" : "\r\n"; + } else { + out = String.fromCharCode(ch); + } + ++this.state.curLine; + this.state.lineStart = this.state.pos; + return out; + } + jsxReadString(quote) { + let out = ""; + let chunkStart = ++this.state.pos; + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(Errors.UnterminatedString, this.state.startLoc); + } + const ch = this.input.charCodeAt(this.state.pos); + if (ch === quote) break; + if (ch === 38) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(false); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + out += this.input.slice(chunkStart, this.state.pos++); + this.finishToken(134, out); + } + jsxReadEntity() { + const startPos = ++this.state.pos; + if (this.codePointAtPos(this.state.pos) === 35) { + ++this.state.pos; + let radix = 10; + if (this.codePointAtPos(this.state.pos) === 120) { + radix = 16; + ++this.state.pos; + } + const codePoint = this.readInt(radix, undefined, false, "bail"); + if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) { + ++this.state.pos; + return String.fromCodePoint(codePoint); + } + } else { + let count = 0; + let semi = false; + while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) === 59)) { + ++this.state.pos; + } + if (semi) { + const desc = this.input.slice(startPos, this.state.pos); + const entity = entities[desc]; + ++this.state.pos; + if (entity) { + return entity; + } + } + } + this.state.pos = startPos; + return "&"; + } + jsxReadWord() { + let ch; + const start = this.state.pos; + do { + ch = this.input.charCodeAt(++this.state.pos); + } while (isIdentifierChar(ch) || ch === 45); + this.finishToken(141, this.input.slice(start, this.state.pos)); + } + jsxParseIdentifier() { + const node = this.startNode(); + if (this.match(141)) { + node.name = this.state.value; + } else if (tokenIsKeyword(this.state.type)) { + node.name = tokenLabelName(this.state.type); + } else { + this.unexpected(); + } + this.next(); + return this.finishNode(node, "JSXIdentifier"); + } + jsxParseNamespacedName() { + const startLoc = this.state.startLoc; + const name = this.jsxParseIdentifier(); + if (!this.eat(14)) return name; + const node = this.startNodeAt(startLoc); + node.namespace = name; + node.name = this.jsxParseIdentifier(); + return this.finishNode(node, "JSXNamespacedName"); + } + jsxParseElementName() { + const startLoc = this.state.startLoc; + let node = this.jsxParseNamespacedName(); + if (node.type === "JSXNamespacedName") { + return node; + } + while (this.eat(16)) { + const newNode = this.startNodeAt(startLoc); + newNode.object = node; + newNode.property = this.jsxParseIdentifier(); + node = this.finishNode(newNode, "JSXMemberExpression"); + } + return node; + } + jsxParseAttributeValue() { + let node; + switch (this.state.type) { + case 5: + node = this.startNode(); + this.setContext(types.brace); + this.next(); + node = this.jsxParseExpressionContainer(node, types.j_oTag); + if (node.expression.type === "JSXEmptyExpression") { + this.raise(JsxErrors.AttributeIsEmpty, node); + } + return node; + case 143: + case 134: + return this.parseExprAtom(); + default: + throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc); + } + } + jsxParseEmptyExpression() { + const node = this.startNodeAt(this.state.lastTokEndLoc); + return this.finishNodeAt(node, "JSXEmptyExpression", this.state.startLoc); + } + jsxParseSpreadChild(node) { + this.next(); + node.expression = this.parseExpression(); + this.setContext(types.j_expr); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXSpreadChild"); + } + jsxParseExpressionContainer(node, previousContext) { + if (this.match(8)) { + node.expression = this.jsxParseEmptyExpression(); + } else { + const expression = this.parseExpression(); + node.expression = expression; + } + this.setContext(previousContext); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXExpressionContainer"); + } + jsxParseAttribute() { + const node = this.startNode(); + if (this.match(5)) { + this.setContext(types.brace); + this.next(); + this.expect(21); + node.argument = this.parseMaybeAssignAllowIn(); + this.setContext(types.j_oTag); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXSpreadAttribute"); + } + node.name = this.jsxParseNamespacedName(); + node.value = this.eat(29) ? this.jsxParseAttributeValue() : null; + return this.finishNode(node, "JSXAttribute"); + } + jsxParseOpeningElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + if (this.eat(144)) { + return this.finishNode(node, "JSXOpeningFragment"); + } + node.name = this.jsxParseElementName(); + return this.jsxParseOpeningElementAfterName(node); + } + jsxParseOpeningElementAfterName(node) { + const attributes = []; + while (!this.match(56) && !this.match(144)) { + attributes.push(this.jsxParseAttribute()); + } + node.attributes = attributes; + node.selfClosing = this.eat(56); + this.expect(144); + return this.finishNode(node, "JSXOpeningElement"); + } + jsxParseClosingElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + if (this.eat(144)) { + return this.finishNode(node, "JSXClosingFragment"); + } + node.name = this.jsxParseElementName(); + this.expect(144); + return this.finishNode(node, "JSXClosingElement"); + } + jsxParseElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + const children = []; + const openingElement = this.jsxParseOpeningElementAt(startLoc); + let closingElement = null; + if (!openingElement.selfClosing) { + contents: for (;;) { + switch (this.state.type) { + case 143: + startLoc = this.state.startLoc; + this.next(); + if (this.eat(56)) { + closingElement = this.jsxParseClosingElementAt(startLoc); + break contents; + } + children.push(this.jsxParseElementAt(startLoc)); + break; + case 142: + children.push(this.parseLiteral(this.state.value, "JSXText")); + break; + case 5: + { + const node = this.startNode(); + this.setContext(types.brace); + this.next(); + if (this.match(21)) { + children.push(this.jsxParseSpreadChild(node)); + } else { + children.push(this.jsxParseExpressionContainer(node, types.j_expr)); + } + break; + } + default: + this.unexpected(); + } + } + if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) { + this.raise(JsxErrors.MissingClosingTagFragment, closingElement); + } else if (!isFragment(openingElement) && isFragment(closingElement)) { + this.raise(JsxErrors.MissingClosingTagElement, closingElement, { + openingTagName: getQualifiedJSXName(openingElement.name) + }); + } else if (!isFragment(openingElement) && !isFragment(closingElement)) { + if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { + this.raise(JsxErrors.MissingClosingTagElement, closingElement, { + openingTagName: getQualifiedJSXName(openingElement.name) + }); + } + } + } + if (isFragment(openingElement)) { + node.openingFragment = openingElement; + node.closingFragment = closingElement; + } else { + node.openingElement = openingElement; + node.closingElement = closingElement; + } + node.children = children; + if (this.match(47)) { + throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, this.state.startLoc); + } + return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement"); + } + jsxParseElement() { + const startLoc = this.state.startLoc; + this.next(); + return this.jsxParseElementAt(startLoc); + } + setContext(newContext) { + const { + context + } = this.state; + context[context.length - 1] = newContext; + } + parseExprAtom(refExpressionErrors) { + if (this.match(143)) { + return this.jsxParseElement(); + } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) { + this.replaceToken(143); + return this.jsxParseElement(); + } else { + return super.parseExprAtom(refExpressionErrors); + } + } + skipSpace() { + const curContext = this.curContext(); + if (!curContext.preserveSpace) super.skipSpace(); + } + getTokenFromCode(code) { + const context = this.curContext(); + if (context === types.j_expr) { + this.jsxReadToken(); + return; + } + if (context === types.j_oTag || context === types.j_cTag) { + if (isIdentifierStart(code)) { + this.jsxReadWord(); + return; + } + if (code === 62) { + ++this.state.pos; + this.finishToken(144); + return; + } + if ((code === 34 || code === 39) && context === types.j_oTag) { + this.jsxReadString(code); + return; + } + } + if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) { + ++this.state.pos; + this.finishToken(143); + return; + } + super.getTokenFromCode(code); + } + updateContext(prevType) { + const { + context, + type + } = this.state; + if (type === 56 && prevType === 143) { + context.splice(-2, 2, types.j_cTag); + this.state.canStartJSXElement = false; + } else if (type === 143) { + context.push(types.j_oTag); + } else if (type === 144) { + const out = context[context.length - 1]; + if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) { + context.pop(); + this.state.canStartJSXElement = context[context.length - 1] === types.j_expr; + } else { + this.setContext(types.j_expr); + this.state.canStartJSXElement = true; + } + } else { + this.state.canStartJSXElement = tokenComesBeforeExpression(type); + } + } + }; + class TypeScriptScope extends Scope { + constructor(...args) { + super(...args); + this.tsNames = new Map(); + } + } + class TypeScriptScopeHandler extends ScopeHandler { + constructor(...args) { + super(...args); + this.importsStack = []; + } + createScope(flags) { + this.importsStack.push(new Set()); + return new TypeScriptScope(flags); + } + enter(flags) { + if (flags === 1024) { + this.importsStack.push(new Set()); + } + super.enter(flags); + } + exit() { + const flags = super.exit(); + if (flags === 1024) { + this.importsStack.pop(); + } + return flags; + } + hasImport(name, allowShadow) { + const len = this.importsStack.length; + if (this.importsStack[len - 1].has(name)) { + return true; + } + if (!allowShadow && len > 1) { + for (let i = 0; i < len - 1; i++) { + if (this.importsStack[i].has(name)) return true; + } + } + return false; + } + declareName(name, bindingType, loc) { + if (bindingType & 4096) { + if (this.hasImport(name, true)) { + this.parser.raise(Errors.VarRedeclaration, loc, { + identifierName: name + }); + } + this.importsStack[this.importsStack.length - 1].add(name); + return; + } + const scope = this.currentScope(); + let type = scope.tsNames.get(name) || 0; + if (bindingType & 1024) { + this.maybeExportDefined(scope, name); + scope.tsNames.set(name, type | 16); + return; + } + super.declareName(name, bindingType, loc); + if (bindingType & 2) { + if (!(bindingType & 1)) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + } + type = type | 1; + } + if (bindingType & 256) { + type = type | 2; + } + if (bindingType & 512) { + type = type | 4; + } + if (bindingType & 128) { + type = type | 8; + } + if (type) scope.tsNames.set(name, type); + } + isRedeclaredInScope(scope, name, bindingType) { + const type = scope.tsNames.get(name); + if ((type & 2) > 0) { + if (bindingType & 256) { + const isConst = !!(bindingType & 512); + const wasConst = (type & 4) > 0; + return isConst !== wasConst; + } + return true; + } + if (bindingType & 128 && (type & 8) > 0) { + if (scope.names.get(name) & 2) { + return !!(bindingType & 1); + } else { + return false; + } + } + if (bindingType & 2 && (type & 1) > 0) { + return true; + } + return super.isRedeclaredInScope(scope, name, bindingType); + } + checkLocalExport(id) { + const { + name + } = id; + if (this.hasImport(name)) return; + const len = this.scopeStack.length; + for (let i = len - 1; i >= 0; i--) { + const scope = this.scopeStack[i]; + const type = scope.tsNames.get(name); + if ((type & 1) > 0 || (type & 16) > 0) { + return; + } + } + super.checkLocalExport(id); + } + } + class ProductionParameterHandler { + constructor() { + this.stacks = []; + } + enter(flags) { + this.stacks.push(flags); + } + exit() { + this.stacks.pop(); + } + currentFlags() { + return this.stacks[this.stacks.length - 1]; + } + get hasAwait() { + return (this.currentFlags() & 2) > 0; + } + get hasYield() { + return (this.currentFlags() & 1) > 0; + } + get hasReturn() { + return (this.currentFlags() & 4) > 0; + } + get hasIn() { + return (this.currentFlags() & 8) > 0; + } + } + function functionFlags(isAsync, isGenerator) { + return (isAsync ? 2 : 0) | (isGenerator ? 1 : 0); + } + class BaseParser { + constructor() { + this.sawUnambiguousESM = false; + this.ambiguousScriptDifferentAst = false; + } + sourceToOffsetPos(sourcePos) { + return sourcePos + this.startIndex; + } + offsetToSourcePos(offsetPos) { + return offsetPos - this.startIndex; + } + hasPlugin(pluginConfig) { + if (typeof pluginConfig === "string") { + return this.plugins.has(pluginConfig); + } else { + const [pluginName, pluginOptions] = pluginConfig; + if (!this.hasPlugin(pluginName)) { + return false; + } + const actualOptions = this.plugins.get(pluginName); + for (const key of Object.keys(pluginOptions)) { + if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) { + return false; + } + } + return true; + } + } + getPluginOption(plugin, name) { + var _this$plugins$get; + return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name]; + } + } + function setTrailingComments(node, comments) { + if (node.trailingComments === undefined) { + node.trailingComments = comments; + } else { + node.trailingComments.unshift(...comments); + } + } + function setLeadingComments(node, comments) { + if (node.leadingComments === undefined) { + node.leadingComments = comments; + } else { + node.leadingComments.unshift(...comments); + } + } + function setInnerComments(node, comments) { + if (node.innerComments === undefined) { + node.innerComments = comments; + } else { + node.innerComments.unshift(...comments); + } + } + function adjustInnerComments(node, elements, commentWS) { + let lastElement = null; + let i = elements.length; + while (lastElement === null && i > 0) { + lastElement = elements[--i]; + } + if (lastElement === null || lastElement.start > commentWS.start) { + setInnerComments(node, commentWS.comments); + } else { + setTrailingComments(lastElement, commentWS.comments); + } + } + class CommentsParser extends BaseParser { + addComment(comment) { + if (this.filename) comment.loc.filename = this.filename; + const { + commentsLen + } = this.state; + if (this.comments.length !== commentsLen) { + this.comments.length = commentsLen; + } + this.comments.push(comment); + this.state.commentsLen++; + } + processComment(node) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + const lastCommentWS = commentStack[i]; + if (lastCommentWS.start === node.end) { + lastCommentWS.leadingNode = node; + i--; + } + const { + start: nodeStart + } = node; + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + if (commentEnd > nodeStart) { + commentWS.containingNode = node; + this.finalizeComment(commentWS); + commentStack.splice(i, 1); + } else { + if (commentEnd === nodeStart) { + commentWS.trailingNode = node; + } + break; + } + } + } + finalizeComment(commentWS) { + var _node$options; + const { + comments + } = commentWS; + if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) { + if (commentWS.leadingNode !== null) { + setTrailingComments(commentWS.leadingNode, comments); + } + if (commentWS.trailingNode !== null) { + setLeadingComments(commentWS.trailingNode, comments); + } + } else { + const { + containingNode: node, + start: commentStart + } = commentWS; + if (this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) === 44) { + switch (node.type) { + case "ObjectExpression": + case "ObjectPattern": + case "RecordExpression": + adjustInnerComments(node, node.properties, commentWS); + break; + case "CallExpression": + case "OptionalCallExpression": + adjustInnerComments(node, node.arguments, commentWS); + break; + case "ImportExpression": + adjustInnerComments(node, [node.source, (_node$options = node.options) != null ? _node$options : null], commentWS); + break; + case "FunctionDeclaration": + case "FunctionExpression": + case "ArrowFunctionExpression": + case "ObjectMethod": + case "ClassMethod": + case "ClassPrivateMethod": + adjustInnerComments(node, node.params, commentWS); + break; + case "ArrayExpression": + case "ArrayPattern": + case "TupleExpression": + adjustInnerComments(node, node.elements, commentWS); + break; + case "ExportNamedDeclaration": + case "ImportDeclaration": + adjustInnerComments(node, node.specifiers, commentWS); + break; + case "TSEnumDeclaration": + { + adjustInnerComments(node, node.members, commentWS); + } + break; + case "TSEnumBody": + adjustInnerComments(node, node.members, commentWS); + break; + default: + { + setInnerComments(node, comments); + } + } + } else { + setInnerComments(node, comments); + } + } + } + finalizeRemainingComments() { + const { + commentStack + } = this.state; + for (let i = commentStack.length - 1; i >= 0; i--) { + this.finalizeComment(commentStack[i]); + } + this.state.commentStack = []; + } + resetPreviousNodeTrailingComments(node) { + const { + commentStack + } = this.state; + const { + length + } = commentStack; + if (length === 0) return; + const commentWS = commentStack[length - 1]; + if (commentWS.leadingNode === node) { + commentWS.leadingNode = null; + } + } + takeSurroundingComments(node, start, end) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + const commentStart = commentWS.start; + if (commentStart === end) { + commentWS.leadingNode = node; + } else if (commentEnd === start) { + commentWS.trailingNode = node; + } else if (commentEnd < start) { + break; + } + } + } + } + class State { + constructor() { + this.flags = 1024; + this.startIndex = void 0; + this.curLine = void 0; + this.lineStart = void 0; + this.startLoc = void 0; + this.endLoc = void 0; + this.errors = []; + this.potentialArrowAt = -1; + this.noArrowAt = []; + this.noArrowParamsConversionAt = []; + this.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + this.labels = []; + this.commentsLen = 0; + this.commentStack = []; + this.pos = 0; + this.type = 140; + this.value = null; + this.start = 0; + this.end = 0; + this.lastTokEndLoc = null; + this.lastTokStartLoc = null; + this.context = [types.brace]; + this.firstInvalidTemplateEscapePos = null; + this.strictErrors = new Map(); + this.tokensLength = 0; + } + get strict() { + return (this.flags & 1) > 0; + } + set strict(v) { + if (v) this.flags |= 1;else this.flags &= -2; + } + init({ + strictMode, + sourceType, + startIndex, + startLine, + startColumn + }) { + this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module"; + this.startIndex = startIndex; + this.curLine = startLine; + this.lineStart = -startColumn; + this.startLoc = this.endLoc = new Position(startLine, startColumn, startIndex); + } + get maybeInArrowParameters() { + return (this.flags & 2) > 0; + } + set maybeInArrowParameters(v) { + if (v) this.flags |= 2;else this.flags &= -3; + } + get inType() { + return (this.flags & 4) > 0; + } + set inType(v) { + if (v) this.flags |= 4;else this.flags &= -5; + } + get noAnonFunctionType() { + return (this.flags & 8) > 0; + } + set noAnonFunctionType(v) { + if (v) this.flags |= 8;else this.flags &= -9; + } + get hasFlowComment() { + return (this.flags & 16) > 0; + } + set hasFlowComment(v) { + if (v) this.flags |= 16;else this.flags &= -17; + } + get isAmbientContext() { + return (this.flags & 32) > 0; + } + set isAmbientContext(v) { + if (v) this.flags |= 32;else this.flags &= -33; + } + get inAbstractClass() { + return (this.flags & 64) > 0; + } + set inAbstractClass(v) { + if (v) this.flags |= 64;else this.flags &= -65; + } + get inDisallowConditionalTypesContext() { + return (this.flags & 128) > 0; + } + set inDisallowConditionalTypesContext(v) { + if (v) this.flags |= 128;else this.flags &= -129; + } + get soloAwait() { + return (this.flags & 256) > 0; + } + set soloAwait(v) { + if (v) this.flags |= 256;else this.flags &= -257; + } + get inFSharpPipelineDirectBody() { + return (this.flags & 512) > 0; + } + set inFSharpPipelineDirectBody(v) { + if (v) this.flags |= 512;else this.flags &= -513; + } + get canStartJSXElement() { + return (this.flags & 1024) > 0; + } + set canStartJSXElement(v) { + if (v) this.flags |= 1024;else this.flags &= -1025; + } + get containsEsc() { + return (this.flags & 2048) > 0; + } + set containsEsc(v) { + if (v) this.flags |= 2048;else this.flags &= -2049; + } + get hasTopLevelAwait() { + return (this.flags & 4096) > 0; + } + set hasTopLevelAwait(v) { + if (v) this.flags |= 4096;else this.flags &= -4097; + } + curPosition() { + return new Position(this.curLine, this.pos - this.lineStart, this.pos + this.startIndex); + } + clone() { + const state = new State(); + state.flags = this.flags; + state.startIndex = this.startIndex; + state.curLine = this.curLine; + state.lineStart = this.lineStart; + state.startLoc = this.startLoc; + state.endLoc = this.endLoc; + state.errors = this.errors.slice(); + state.potentialArrowAt = this.potentialArrowAt; + state.noArrowAt = this.noArrowAt.slice(); + state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice(); + state.topicContext = this.topicContext; + state.labels = this.labels.slice(); + state.commentsLen = this.commentsLen; + state.commentStack = this.commentStack.slice(); + state.pos = this.pos; + state.type = this.type; + state.value = this.value; + state.start = this.start; + state.end = this.end; + state.lastTokEndLoc = this.lastTokEndLoc; + state.lastTokStartLoc = this.lastTokStartLoc; + state.context = this.context.slice(); + state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos; + state.strictErrors = this.strictErrors; + state.tokensLength = this.tokensLength; + return state; + } + } + var _isDigit = function isDigit(code) { + return code >= 48 && code <= 57; + }; + const forbiddenNumericSeparatorSiblings = { + decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]), + hex: new Set([46, 88, 95, 120]) + }; + const isAllowedNumericSeparatorSibling = { + bin: ch => ch === 48 || ch === 49, + oct: ch => ch >= 48 && ch <= 55, + dec: ch => ch >= 48 && ch <= 57, + hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102 + }; + function readStringContents(type, input, pos, lineStart, curLine, errors) { + const initialPos = pos; + const initialLineStart = lineStart; + const initialCurLine = curLine; + let out = ""; + let firstInvalidLoc = null; + let chunkStart = pos; + const { + length + } = input; + for (;;) { + if (pos >= length) { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + out += input.slice(chunkStart, pos); + break; + } + const ch = input.charCodeAt(pos); + if (isStringEnd(type, ch, input, pos)) { + out += input.slice(chunkStart, pos); + break; + } + if (ch === 92) { + out += input.slice(chunkStart, pos); + const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors); + if (res.ch === null && !firstInvalidLoc) { + firstInvalidLoc = { + pos, + lineStart, + curLine + }; + } else { + out += res.ch; + } + ({ + pos, + lineStart, + curLine + } = res); + chunkStart = pos; + } else if (ch === 8232 || ch === 8233) { + ++pos; + ++curLine; + lineStart = pos; + } else if (ch === 10 || ch === 13) { + if (type === "template") { + out += input.slice(chunkStart, pos) + "\n"; + ++pos; + if (ch === 13 && input.charCodeAt(pos) === 10) { + ++pos; + } + ++curLine; + chunkStart = lineStart = pos; + } else { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + } + } else { + ++pos; + } + } + return { + pos, + str: out, + firstInvalidLoc, + lineStart, + curLine, + containsInvalid: !!firstInvalidLoc + }; + } + function isStringEnd(type, ch, input, pos) { + if (type === "template") { + return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123; + } + return ch === (type === "double" ? 34 : 39); + } + function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) { + const throwOnInvalid = !inTemplate; + pos++; + const res = ch => ({ + pos, + ch, + lineStart, + curLine + }); + const ch = input.charCodeAt(pos++); + switch (ch) { + case 110: + return res("\n"); + case 114: + return res("\r"); + case 120: + { + let code; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCharCode(code)); + } + case 117: + { + let code; + ({ + code, + pos + } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCodePoint(code)); + } + case 116: + return res("\t"); + case 98: + return res("\b"); + case 118: + return res("\u000b"); + case 102: + return res("\f"); + case 13: + if (input.charCodeAt(pos) === 10) { + ++pos; + } + case 10: + lineStart = pos; + ++curLine; + case 8232: + case 8233: + return res(""); + case 56: + case 57: + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(pos - 1, lineStart, curLine); + } + default: + if (ch >= 48 && ch <= 55) { + const startPos = pos - 1; + const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2)); + let octalStr = match[0]; + let octal = parseInt(octalStr, 8); + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + pos += octalStr.length - 1; + const next = input.charCodeAt(pos); + if (octalStr !== "0" || next === 56 || next === 57) { + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(startPos, lineStart, curLine); + } + } + return res(String.fromCharCode(octal)); + } + return res(String.fromCharCode(ch)); + } + } + function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) { + const initialPos = pos; + let n; + ({ + n, + pos + } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid)); + if (n === null) { + if (throwOnInvalid) { + errors.invalidEscapeSequence(initialPos, lineStart, curLine); + } else { + pos = initialPos - 1; + } + } + return { + code: n, + pos + }; + } + function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) { + const start = pos; + const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; + const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin; + let invalid = false; + let total = 0; + for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { + const code = input.charCodeAt(pos); + let val; + if (code === 95 && allowNumSeparator !== "bail") { + const prev = input.charCodeAt(pos - 1); + const next = input.charCodeAt(pos + 1); + if (!allowNumSeparator) { + if (bailOnError) return { + n: null, + pos + }; + errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine); + } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) { + if (bailOnError) return { + n: null, + pos + }; + errors.unexpectedNumericSeparator(pos, lineStart, curLine); + } + ++pos; + continue; + } + if (code >= 97) { + val = code - 97 + 10; + } else if (code >= 65) { + val = code - 65 + 10; + } else if (_isDigit(code)) { + val = code - 48; + } else { + val = Infinity; + } + if (val >= radix) { + if (val <= 9 && bailOnError) { + return { + n: null, + pos + }; + } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) { + val = 0; + } else if (forceLen) { + val = 0; + invalid = true; + } else { + break; + } + } + ++pos; + total = total * radix + val; + } + if (pos === start || len != null && pos - start !== len || invalid) { + return { + n: null, + pos + }; + } + return { + n: total, + pos + }; + } + function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) { + const ch = input.charCodeAt(pos); + let code; + if (ch === 123) { + ++pos; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors)); + ++pos; + if (code !== null && code > 0x10ffff) { + if (throwOnInvalid) { + errors.invalidCodePoint(pos, lineStart, curLine); + } else { + return { + code: null, + pos + }; + } + } + } else { + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors)); + } + return { + code, + pos + }; + } + function buildPosition(pos, lineStart, curLine) { + return new Position(curLine, pos - lineStart, pos); + } + const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]); + class Token { + constructor(state) { + const startIndex = state.startIndex || 0; + this.type = state.type; + this.value = state.value; + this.start = startIndex + state.start; + this.end = startIndex + state.end; + this.loc = new SourceLocation(state.startLoc, state.endLoc); + } + } + class Tokenizer extends CommentsParser { + constructor(options, input) { + super(); + this.isLookahead = void 0; + this.tokens = []; + this.errorHandlers_readInt = { + invalidDigit: (pos, lineStart, curLine, radix) => { + if (!(this.optionFlags & 2048)) return false; + this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), { + radix + }); + return true; + }, + numericSeparatorInEscapeSequence: this.errorBuilder(Errors.NumericSeparatorInEscapeSequence), + unexpectedNumericSeparator: this.errorBuilder(Errors.UnexpectedNumericSeparator) + }; + this.errorHandlers_readCodePoint = Object.assign({}, this.errorHandlers_readInt, { + invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence), + invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint) + }); + this.errorHandlers_readStringContents_string = Object.assign({}, this.errorHandlers_readCodePoint, { + strictNumericEscape: (pos, lineStart, curLine) => { + this.recordStrictModeErrors(Errors.StrictNumericEscape, buildPosition(pos, lineStart, curLine)); + }, + unterminated: (pos, lineStart, curLine) => { + throw this.raise(Errors.UnterminatedString, buildPosition(pos - 1, lineStart, curLine)); + } + }); + this.errorHandlers_readStringContents_template = Object.assign({}, this.errorHandlers_readCodePoint, { + strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape), + unterminated: (pos, lineStart, curLine) => { + throw this.raise(Errors.UnterminatedTemplate, buildPosition(pos, lineStart, curLine)); + } + }); + this.state = new State(); + this.state.init(options); + this.input = input; + this.length = input.length; + this.comments = []; + this.isLookahead = false; + } + pushToken(token) { + this.tokens.length = this.state.tokensLength; + this.tokens.push(token); + ++this.state.tokensLength; + } + next() { + this.checkKeywordEscapes(); + if (this.optionFlags & 256) { + this.pushToken(new Token(this.state)); + } + this.state.lastTokEndLoc = this.state.endLoc; + this.state.lastTokStartLoc = this.state.startLoc; + this.nextToken(); + } + eat(type) { + if (this.match(type)) { + this.next(); + return true; + } else { + return false; + } + } + match(type) { + return this.state.type === type; + } + createLookaheadState(state) { + return { + pos: state.pos, + value: null, + type: state.type, + start: state.start, + end: state.end, + context: [this.curContext()], + inType: state.inType, + startLoc: state.startLoc, + lastTokEndLoc: state.lastTokEndLoc, + curLine: state.curLine, + lineStart: state.lineStart, + curPosition: state.curPosition + }; + } + lookahead() { + const old = this.state; + this.state = this.createLookaheadState(old); + this.isLookahead = true; + this.nextToken(); + this.isLookahead = false; + const curr = this.state; + this.state = old; + return curr; + } + nextTokenStart() { + return this.nextTokenStartSince(this.state.pos); + } + nextTokenStartSince(pos) { + skipWhiteSpace.lastIndex = pos; + return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos; + } + lookaheadCharCode() { + return this.lookaheadCharCodeSince(this.state.pos); + } + lookaheadCharCodeSince(pos) { + return this.input.charCodeAt(this.nextTokenStartSince(pos)); + } + nextTokenInLineStart() { + return this.nextTokenInLineStartSince(this.state.pos); + } + nextTokenInLineStartSince(pos) { + skipWhiteSpaceInLine.lastIndex = pos; + return skipWhiteSpaceInLine.test(this.input) ? skipWhiteSpaceInLine.lastIndex : pos; + } + lookaheadInLineCharCode() { + return this.input.charCodeAt(this.nextTokenInLineStart()); + } + codePointAtPos(pos) { + let cp = this.input.charCodeAt(pos); + if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) { + const trail = this.input.charCodeAt(pos); + if ((trail & 0xfc00) === 0xdc00) { + cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); + } + } + return cp; + } + setStrict(strict) { + this.state.strict = strict; + if (strict) { + this.state.strictErrors.forEach(([toParseError, at]) => this.raise(toParseError, at)); + this.state.strictErrors.clear(); + } + } + curContext() { + return this.state.context[this.state.context.length - 1]; + } + nextToken() { + this.skipSpace(); + this.state.start = this.state.pos; + if (!this.isLookahead) this.state.startLoc = this.state.curPosition(); + if (this.state.pos >= this.length) { + this.finishToken(140); + return; + } + this.getTokenFromCode(this.codePointAtPos(this.state.pos)); + } + skipBlockComment(commentEnd) { + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + const start = this.state.pos; + const end = this.input.indexOf(commentEnd, start + 2); + if (end === -1) { + throw this.raise(Errors.UnterminatedComment, this.state.curPosition()); + } + this.state.pos = end + commentEnd.length; + lineBreakG.lastIndex = start + 2; + while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) { + ++this.state.curLine; + this.state.lineStart = lineBreakG.lastIndex; + } + if (this.isLookahead) return; + const comment = { + type: "CommentBlock", + value: this.input.slice(start + 2, end), + start: this.sourceToOffsetPos(start), + end: this.sourceToOffsetPos(end + commentEnd.length), + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.optionFlags & 256) this.pushToken(comment); + return comment; + } + skipLineComment(startSkip) { + const start = this.state.pos; + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + let ch = this.input.charCodeAt(this.state.pos += startSkip); + if (this.state.pos < this.length) { + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + } + if (this.isLookahead) return; + const end = this.state.pos; + const value = this.input.slice(start + startSkip, end); + const comment = { + type: "CommentLine", + value, + start: this.sourceToOffsetPos(start), + end: this.sourceToOffsetPos(end), + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.optionFlags & 256) this.pushToken(comment); + return comment; + } + skipSpace() { + const spaceStart = this.state.pos; + const comments = this.optionFlags & 4096 ? [] : null; + loop: while (this.state.pos < this.length) { + const ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 32: + case 160: + case 9: + ++this.state.pos; + break; + case 13: + if (this.input.charCodeAt(this.state.pos + 1) === 10) { + ++this.state.pos; + } + case 10: + case 8232: + case 8233: + ++this.state.pos; + ++this.state.curLine; + this.state.lineStart = this.state.pos; + break; + case 47: + switch (this.input.charCodeAt(this.state.pos + 1)) { + case 42: + { + const comment = this.skipBlockComment("*/"); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + break; + } + case 47: + { + const comment = this.skipLineComment(2); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + break; + } + default: + break loop; + } + break; + default: + if (isWhitespace(ch)) { + ++this.state.pos; + } else if (ch === 45 && !this.inModule && this.optionFlags & 8192) { + const pos = this.state.pos; + if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) { + const comment = this.skipLineComment(3); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + } else { + break loop; + } + } else if (ch === 60 && !this.inModule && this.optionFlags & 8192) { + const pos = this.state.pos; + if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) { + const comment = this.skipLineComment(4); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + } else { + break loop; + } + } else { + break loop; + } + } + } + if ((comments == null ? void 0 : comments.length) > 0) { + const end = this.state.pos; + const commentWhitespace = { + start: this.sourceToOffsetPos(spaceStart), + end: this.sourceToOffsetPos(end), + comments, + leadingNode: null, + trailingNode: null, + containingNode: null + }; + this.state.commentStack.push(commentWhitespace); + } + } + finishToken(type, val) { + this.state.end = this.state.pos; + this.state.endLoc = this.state.curPosition(); + const prevType = this.state.type; + this.state.type = type; + this.state.value = val; + if (!this.isLookahead) { + this.updateContext(prevType); + } + } + replaceToken(type) { + this.state.type = type; + this.updateContext(); + } + readToken_numberSign() { + if (this.state.pos === 0 && this.readToken_interpreter()) { + return; + } + const nextPos = this.state.pos + 1; + const next = this.codePointAtPos(nextPos); + if (next >= 48 && next <= 57) { + throw this.raise(Errors.UnexpectedDigitAfterHash, this.state.curPosition()); + } + if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) { + this.expectPlugin("recordAndTuple"); + if (this.getPluginOption("recordAndTuple", "syntaxType") === "bar") { + throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + if (next === 123) { + this.finishToken(7); + } else { + this.finishToken(1); + } + } else if (isIdentifierStart(next)) { + ++this.state.pos; + this.finishToken(139, this.readWord1(next)); + } else if (next === 92) { + ++this.state.pos; + this.finishToken(139, this.readWord1()); + } else { + this.finishOp(27, 1); + } + } + readToken_dot() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next >= 48 && next <= 57) { + this.readNumber(true); + return; + } + if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) { + this.state.pos += 3; + this.finishToken(21); + } else { + ++this.state.pos; + this.finishToken(16); + } + } + readToken_slash() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + this.finishOp(31, 2); + } else { + this.finishOp(56, 1); + } + } + readToken_interpreter() { + if (this.state.pos !== 0 || this.length < 2) return false; + let ch = this.input.charCodeAt(this.state.pos + 1); + if (ch !== 33) return false; + const start = this.state.pos; + this.state.pos += 1; + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + const value = this.input.slice(start + 2, this.state.pos); + this.finishToken(28, value); + return true; + } + readToken_mult_modulo(code) { + let type = code === 42 ? 55 : 54; + let width = 1; + let next = this.input.charCodeAt(this.state.pos + 1); + if (code === 42 && next === 42) { + width++; + next = this.input.charCodeAt(this.state.pos + 2); + type = 57; + } + if (next === 61 && !this.state.inType) { + width++; + type = code === 37 ? 33 : 30; + } + this.finishOp(type, width); + } + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) { + if (this.input.charCodeAt(this.state.pos + 2) === 61) { + this.finishOp(30, 3); + } else { + this.finishOp(code === 124 ? 41 : 42, 2); + } + return; + } + if (code === 124) { + if (next === 62) { + this.finishOp(39, 2); + return; + } + if (this.hasPlugin("recordAndTuple") && next === 125) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(9); + return; + } + if (this.hasPlugin("recordAndTuple") && next === 93) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(4); + return; + } + } + if (next === 61) { + this.finishOp(30, 2); + return; + } + this.finishOp(code === 124 ? 43 : 45, 1); + } + readToken_caret() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61 && !this.state.inType) { + this.finishOp(32, 2); + } else if (next === 94 && this.hasPlugin(["pipelineOperator", { + proposal: "hack", + topicToken: "^^" + }])) { + this.finishOp(37, 2); + const lookaheadCh = this.input.codePointAt(this.state.pos); + if (lookaheadCh === 94) { + this.unexpected(); + } + } else { + this.finishOp(44, 1); + } + } + readToken_atSign() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 64 && this.hasPlugin(["pipelineOperator", { + proposal: "hack", + topicToken: "@@" + }])) { + this.finishOp(38, 2); + } else { + this.finishOp(26, 1); + } + } + readToken_plus_min(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) { + this.finishOp(34, 2); + return; + } + if (next === 61) { + this.finishOp(30, 2); + } else { + this.finishOp(53, 1); + } + } + readToken_lt() { + const { + pos + } = this.state; + const next = this.input.charCodeAt(pos + 1); + if (next === 60) { + if (this.input.charCodeAt(pos + 2) === 61) { + this.finishOp(30, 3); + return; + } + this.finishOp(51, 2); + return; + } + if (next === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(47, 1); + } + readToken_gt() { + const { + pos + } = this.state; + const next = this.input.charCodeAt(pos + 1); + if (next === 62) { + const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(pos + size) === 61) { + this.finishOp(30, size + 1); + return; + } + this.finishOp(52, size); + return; + } + if (next === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(48, 1); + } + readToken_eq_excl(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2); + return; + } + if (code === 61 && next === 62) { + this.state.pos += 2; + this.finishToken(19); + return; + } + this.finishOp(code === 61 ? 29 : 35, 1); + } + readToken_question() { + const next = this.input.charCodeAt(this.state.pos + 1); + const next2 = this.input.charCodeAt(this.state.pos + 2); + if (next === 63) { + if (next2 === 61) { + this.finishOp(30, 3); + } else { + this.finishOp(40, 2); + } + } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) { + this.state.pos += 2; + this.finishToken(18); + } else { + ++this.state.pos; + this.finishToken(17); + } + } + getTokenFromCode(code) { + switch (code) { + case 46: + this.readToken_dot(); + return; + case 40: + ++this.state.pos; + this.finishToken(10); + return; + case 41: + ++this.state.pos; + this.finishToken(11); + return; + case 59: + ++this.state.pos; + this.finishToken(13); + return; + case 44: + ++this.state.pos; + this.finishToken(12); + return; + case 91: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(2); + } else { + ++this.state.pos; + this.finishToken(0); + } + return; + case 93: + ++this.state.pos; + this.finishToken(3); + return; + case 123: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(6); + } else { + ++this.state.pos; + this.finishToken(5); + } + return; + case 125: + ++this.state.pos; + this.finishToken(8); + return; + case 58: + if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) { + this.finishOp(15, 2); + } else { + ++this.state.pos; + this.finishToken(14); + } + return; + case 63: + this.readToken_question(); + return; + case 96: + this.readTemplateToken(); + return; + case 48: + { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 120 || next === 88) { + this.readRadixNumber(16); + return; + } + if (next === 111 || next === 79) { + this.readRadixNumber(8); + return; + } + if (next === 98 || next === 66) { + this.readRadixNumber(2); + return; + } + } + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + this.readNumber(false); + return; + case 34: + case 39: + this.readString(code); + return; + case 47: + this.readToken_slash(); + return; + case 37: + case 42: + this.readToken_mult_modulo(code); + return; + case 124: + case 38: + this.readToken_pipe_amp(code); + return; + case 94: + this.readToken_caret(); + return; + case 43: + case 45: + this.readToken_plus_min(code); + return; + case 60: + this.readToken_lt(); + return; + case 62: + this.readToken_gt(); + return; + case 61: + case 33: + this.readToken_eq_excl(code); + return; + case 126: + this.finishOp(36, 1); + return; + case 64: + this.readToken_atSign(); + return; + case 35: + this.readToken_numberSign(); + return; + case 92: + this.readWord(); + return; + default: + if (isIdentifierStart(code)) { + this.readWord(code); + return; + } + } + throw this.raise(Errors.InvalidOrUnexpectedToken, this.state.curPosition(), { + unexpected: String.fromCodePoint(code) + }); + } + finishOp(type, size) { + const str = this.input.slice(this.state.pos, this.state.pos + size); + this.state.pos += size; + this.finishToken(type, str); + } + readRegexp() { + const startLoc = this.state.startLoc; + const start = this.state.start + 1; + let escaped, inClass; + let { + pos + } = this.state; + for (;; ++pos) { + if (pos >= this.length) { + throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1)); + } + const ch = this.input.charCodeAt(pos); + if (isNewLine(ch)) { + throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1)); + } + if (escaped) { + escaped = false; + } else { + if (ch === 91) { + inClass = true; + } else if (ch === 93 && inClass) { + inClass = false; + } else if (ch === 47 && !inClass) { + break; + } + escaped = ch === 92; + } + } + const content = this.input.slice(start, pos); + ++pos; + let mods = ""; + const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start); + while (pos < this.length) { + const cp = this.codePointAtPos(pos); + const char = String.fromCharCode(cp); + if (VALID_REGEX_FLAGS.has(cp)) { + if (cp === 118) { + if (mods.includes("u")) { + this.raise(Errors.IncompatibleRegExpUVFlags, nextPos()); + } + } else if (cp === 117) { + if (mods.includes("v")) { + this.raise(Errors.IncompatibleRegExpUVFlags, nextPos()); + } + } + if (mods.includes(char)) { + this.raise(Errors.DuplicateRegExpFlags, nextPos()); + } + } else if (isIdentifierChar(cp) || cp === 92) { + this.raise(Errors.MalformedRegExpFlags, nextPos()); + } else { + break; + } + ++pos; + mods += char; + } + this.state.pos = pos; + this.finishToken(138, { + pattern: content, + flags: mods + }); + } + readInt(radix, len, forceLen = false, allowNumSeparator = true) { + const { + n, + pos + } = readInt(this.input, this.state.pos, this.state.lineStart, this.state.curLine, radix, len, forceLen, allowNumSeparator, this.errorHandlers_readInt, false); + this.state.pos = pos; + return n; + } + readRadixNumber(radix) { + const start = this.state.pos; + const startLoc = this.state.curPosition(); + let isBigInt = false; + this.state.pos += 2; + const val = this.readInt(radix); + if (val == null) { + this.raise(Errors.InvalidDigit, createPositionWithColumnOffset(startLoc, 2), { + radix + }); + } + const next = this.input.charCodeAt(this.state.pos); + if (next === 110) { + ++this.state.pos; + isBigInt = true; + } else if (next === 109) { + throw this.raise(Errors.InvalidDecimal, startLoc); + } + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, this.state.curPosition()); + } + if (isBigInt) { + const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, ""); + this.finishToken(136, str); + return; + } + this.finishToken(135, val); + } + readNumber(startsWithDot) { + const start = this.state.pos; + const startLoc = this.state.curPosition(); + let isFloat = false; + let isBigInt = false; + let hasExponent = false; + let isOctal = false; + if (!startsWithDot && this.readInt(10) === null) { + this.raise(Errors.InvalidNumber, this.state.curPosition()); + } + const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48; + if (hasLeadingZero) { + const integer = this.input.slice(start, this.state.pos); + this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc); + if (!this.state.strict) { + const underscorePos = integer.indexOf("_"); + if (underscorePos > 0) { + this.raise(Errors.ZeroDigitNumericSeparator, createPositionWithColumnOffset(startLoc, underscorePos)); + } + } + isOctal = hasLeadingZero && !/[89]/.test(integer); + } + let next = this.input.charCodeAt(this.state.pos); + if (next === 46 && !isOctal) { + ++this.state.pos; + this.readInt(10); + isFloat = true; + next = this.input.charCodeAt(this.state.pos); + } + if ((next === 69 || next === 101) && !isOctal) { + next = this.input.charCodeAt(++this.state.pos); + if (next === 43 || next === 45) { + ++this.state.pos; + } + if (this.readInt(10) === null) { + this.raise(Errors.InvalidOrMissingExponent, startLoc); + } + isFloat = true; + hasExponent = true; + next = this.input.charCodeAt(this.state.pos); + } + if (next === 110) { + if (isFloat || hasLeadingZero) { + this.raise(Errors.InvalidBigIntLiteral, startLoc); + } + ++this.state.pos; + isBigInt = true; + } + if (next === 109) { + this.expectPlugin("decimal", this.state.curPosition()); + if (hasExponent || hasLeadingZero) { + this.raise(Errors.InvalidDecimal, startLoc); + } + ++this.state.pos; + var isDecimal = true; + } + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, this.state.curPosition()); + } + const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, ""); + if (isBigInt) { + this.finishToken(136, str); + return; + } + if (isDecimal) { + this.finishToken(137, str); + return; + } + const val = isOctal ? parseInt(str, 8) : parseFloat(str); + this.finishToken(135, val); + } + readCodePoint(throwOnInvalid) { + const { + code, + pos + } = readCodePoint(this.input, this.state.pos, this.state.lineStart, this.state.curLine, throwOnInvalid, this.errorHandlers_readCodePoint); + this.state.pos = pos; + return code; + } + readString(quote) { + const { + str, + pos, + curLine, + lineStart + } = readStringContents(quote === 34 ? "double" : "single", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_string); + this.state.pos = pos + 1; + this.state.lineStart = lineStart; + this.state.curLine = curLine; + this.finishToken(134, str); + } + readTemplateContinuation() { + if (!this.match(8)) { + this.unexpected(null, 8); + } + this.state.pos--; + this.readTemplateToken(); + } + readTemplateToken() { + const opening = this.input[this.state.pos]; + const { + str, + firstInvalidLoc, + pos, + curLine, + lineStart + } = readStringContents("template", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_template); + this.state.pos = pos + 1; + this.state.lineStart = lineStart; + this.state.curLine = curLine; + if (firstInvalidLoc) { + this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, this.sourceToOffsetPos(firstInvalidLoc.pos)); + } + if (this.input.codePointAt(pos) === 96) { + this.finishToken(24, firstInvalidLoc ? null : opening + str + "`"); + } else { + this.state.pos++; + this.finishToken(25, firstInvalidLoc ? null : opening + str + "${"); + } + } + recordStrictModeErrors(toParseError, at) { + const index = at.index; + if (this.state.strict && !this.state.strictErrors.has(index)) { + this.raise(toParseError, at); + } else { + this.state.strictErrors.set(index, [toParseError, at]); + } + } + readWord1(firstCode) { + this.state.containsEsc = false; + let word = ""; + const start = this.state.pos; + let chunkStart = this.state.pos; + if (firstCode !== undefined) { + this.state.pos += firstCode <= 0xffff ? 1 : 2; + } + while (this.state.pos < this.length) { + const ch = this.codePointAtPos(this.state.pos); + if (isIdentifierChar(ch)) { + this.state.pos += ch <= 0xffff ? 1 : 2; + } else if (ch === 92) { + this.state.containsEsc = true; + word += this.input.slice(chunkStart, this.state.pos); + const escStart = this.state.curPosition(); + const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar; + if (this.input.charCodeAt(++this.state.pos) !== 117) { + this.raise(Errors.MissingUnicodeEscape, this.state.curPosition()); + chunkStart = this.state.pos - 1; + continue; + } + ++this.state.pos; + const esc = this.readCodePoint(true); + if (esc !== null) { + if (!identifierCheck(esc)) { + this.raise(Errors.EscapedCharNotAnIdentifier, escStart); + } + word += String.fromCodePoint(esc); + } + chunkStart = this.state.pos; + } else { + break; + } + } + return word + this.input.slice(chunkStart, this.state.pos); + } + readWord(firstCode) { + const word = this.readWord1(firstCode); + const type = keywords$1.get(word); + if (type !== undefined) { + this.finishToken(type, tokenLabelName(type)); + } else { + this.finishToken(132, word); + } + } + checkKeywordEscapes() { + const { + type + } = this.state; + if (tokenIsKeyword(type) && this.state.containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, { + reservedWord: tokenLabelName(type) + }); + } + } + raise(toParseError, at, details = {}) { + const loc = at instanceof Position ? at : at.loc.start; + const error = toParseError(loc, details); + if (!(this.optionFlags & 2048)) throw error; + if (!this.isLookahead) this.state.errors.push(error); + return error; + } + raiseOverwrite(toParseError, at, details = {}) { + const loc = at instanceof Position ? at : at.loc.start; + const pos = loc.index; + const errors = this.state.errors; + for (let i = errors.length - 1; i >= 0; i--) { + const error = errors[i]; + if (error.loc.index === pos) { + return errors[i] = toParseError(loc, details); + } + if (error.loc.index < pos) break; + } + return this.raise(toParseError, at, details); + } + updateContext(prevType) {} + unexpected(loc, type) { + throw this.raise(Errors.UnexpectedToken, loc != null ? loc : this.state.startLoc, { + expected: type ? tokenLabelName(type) : null + }); + } + expectPlugin(pluginName, loc) { + if (this.hasPlugin(pluginName)) { + return true; + } + throw this.raise(Errors.MissingPlugin, loc != null ? loc : this.state.startLoc, { + missingPlugin: [pluginName] + }); + } + expectOnePlugin(pluginNames) { + if (!pluginNames.some(name => this.hasPlugin(name))) { + throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, { + missingPlugin: pluginNames + }); + } + } + errorBuilder(error) { + return (pos, lineStart, curLine) => { + this.raise(error, buildPosition(pos, lineStart, curLine)); + }; + } + } + class ClassScope { + constructor() { + this.privateNames = new Set(); + this.loneAccessors = new Map(); + this.undefinedPrivateNames = new Map(); + } + } + class ClassScopeHandler { + constructor(parser) { + this.parser = void 0; + this.stack = []; + this.undefinedPrivateNames = new Map(); + this.parser = parser; + } + current() { + return this.stack[this.stack.length - 1]; + } + enter() { + this.stack.push(new ClassScope()); + } + exit() { + const oldClassScope = this.stack.pop(); + const current = this.current(); + for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) { + if (current) { + if (!current.undefinedPrivateNames.has(name)) { + current.undefinedPrivateNames.set(name, loc); + } + } else { + this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, { + identifierName: name + }); + } + } + } + declarePrivateName(name, elementType, loc) { + const { + privateNames, + loneAccessors, + undefinedPrivateNames + } = this.current(); + let redefined = privateNames.has(name); + if (elementType & 3) { + const accessor = redefined && loneAccessors.get(name); + if (accessor) { + const oldStatic = accessor & 4; + const newStatic = elementType & 4; + const oldKind = accessor & 3; + const newKind = elementType & 3; + redefined = oldKind === newKind || oldStatic !== newStatic; + if (!redefined) loneAccessors.delete(name); + } else if (!redefined) { + loneAccessors.set(name, elementType); + } + } + if (redefined) { + this.parser.raise(Errors.PrivateNameRedeclaration, loc, { + identifierName: name + }); + } + privateNames.add(name); + undefinedPrivateNames.delete(name); + } + usePrivateName(name, loc) { + let classScope; + for (classScope of this.stack) { + if (classScope.privateNames.has(name)) return; + } + if (classScope) { + classScope.undefinedPrivateNames.set(name, loc); + } else { + this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, { + identifierName: name + }); + } + } + } + class ExpressionScope { + constructor(type = 0) { + this.type = type; + } + canBeArrowParameterDeclaration() { + return this.type === 2 || this.type === 1; + } + isCertainlyParameterDeclaration() { + return this.type === 3; + } + } + class ArrowHeadParsingScope extends ExpressionScope { + constructor(type) { + super(type); + this.declarationErrors = new Map(); + } + recordDeclarationError(ParsingErrorClass, at) { + const index = at.index; + this.declarationErrors.set(index, [ParsingErrorClass, at]); + } + clearDeclarationError(index) { + this.declarationErrors.delete(index); + } + iterateErrors(iterator) { + this.declarationErrors.forEach(iterator); + } + } + class ExpressionScopeHandler { + constructor(parser) { + this.parser = void 0; + this.stack = [new ExpressionScope()]; + this.parser = parser; + } + enter(scope) { + this.stack.push(scope); + } + exit() { + this.stack.pop(); + } + recordParameterInitializerError(toParseError, node) { + const origin = node.loc.start; + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + while (!scope.isCertainlyParameterDeclaration()) { + if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(toParseError, origin); + } else { + return; + } + scope = stack[--i]; + } + this.parser.raise(toParseError, origin); + } + recordArrowParameterBindingError(error, node) { + const { + stack + } = this; + const scope = stack[stack.length - 1]; + const origin = node.loc.start; + if (scope.isCertainlyParameterDeclaration()) { + this.parser.raise(error, origin); + } else if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(error, origin); + } else { + return; + } + } + recordAsyncArrowParametersError(at) { + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + while (scope.canBeArrowParameterDeclaration()) { + if (scope.type === 2) { + scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at); + } + scope = stack[--i]; + } + } + validateAsPattern() { + const { + stack + } = this; + const currentScope = stack[stack.length - 1]; + if (!currentScope.canBeArrowParameterDeclaration()) return; + currentScope.iterateErrors(([toParseError, loc]) => { + this.parser.raise(toParseError, loc); + let i = stack.length - 2; + let scope = stack[i]; + while (scope.canBeArrowParameterDeclaration()) { + scope.clearDeclarationError(loc.index); + scope = stack[--i]; + } + }); + } + } + function newParameterDeclarationScope() { + return new ExpressionScope(3); + } + function newArrowHeadScope() { + return new ArrowHeadParsingScope(1); + } + function newAsyncArrowScope() { + return new ArrowHeadParsingScope(2); + } + function newExpressionScope() { + return new ExpressionScope(); + } + class UtilParser extends Tokenizer { + addExtra(node, key, value, enumerable = true) { + if (!node) return; + let { + extra + } = node; + if (extra == null) { + extra = {}; + node.extra = extra; + } + if (enumerable) { + extra[key] = value; + } else { + Object.defineProperty(extra, key, { + enumerable, + value + }); + } + } + isContextual(token) { + return this.state.type === token && !this.state.containsEsc; + } + isUnparsedContextual(nameStart, name) { + if (this.input.startsWith(name, nameStart)) { + const nextCh = this.input.charCodeAt(nameStart + name.length); + return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800); + } + return false; + } + isLookaheadContextual(name) { + const next = this.nextTokenStart(); + return this.isUnparsedContextual(next, name); + } + eatContextual(token) { + if (this.isContextual(token)) { + this.next(); + return true; + } + return false; + } + expectContextual(token, toParseError) { + if (!this.eatContextual(token)) { + if (toParseError != null) { + throw this.raise(toParseError, this.state.startLoc); + } + this.unexpected(null, token); + } + } + canInsertSemicolon() { + return this.match(140) || this.match(8) || this.hasPrecedingLineBreak(); + } + hasPrecedingLineBreak() { + return hasNewLine(this.input, this.offsetToSourcePos(this.state.lastTokEndLoc.index), this.state.start); + } + hasFollowingLineBreak() { + return hasNewLine(this.input, this.state.end, this.nextTokenStart()); + } + isLineTerminator() { + return this.eat(13) || this.canInsertSemicolon(); + } + semicolon(allowAsi = true) { + if (allowAsi ? this.isLineTerminator() : this.eat(13)) return; + this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc); + } + expect(type, loc) { + if (!this.eat(type)) { + this.unexpected(loc, type); + } + } + tryParse(fn, oldState = this.state.clone()) { + const abortSignal = { + node: null + }; + try { + const node = fn((node = null) => { + abortSignal.node = node; + throw abortSignal; + }); + if (this.state.errors.length > oldState.errors.length) { + const failState = this.state; + this.state = oldState; + this.state.tokensLength = failState.tokensLength; + return { + node, + error: failState.errors[oldState.errors.length], + thrown: false, + aborted: false, + failState + }; + } + return { + node, + error: null, + thrown: false, + aborted: false, + failState: null + }; + } catch (error) { + const failState = this.state; + this.state = oldState; + if (error instanceof SyntaxError) { + return { + node: null, + error, + thrown: true, + aborted: false, + failState + }; + } + if (error === abortSignal) { + return { + node: abortSignal.node, + error: null, + thrown: false, + aborted: true, + failState + }; + } + throw error; + } + } + checkExpressionErrors(refExpressionErrors, andThrow) { + if (!refExpressionErrors) return false; + const { + shorthandAssignLoc, + doubleProtoLoc, + privateKeyLoc, + optionalParametersLoc, + voidPatternLoc + } = refExpressionErrors; + const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc || !!voidPatternLoc; + if (!andThrow) { + return hasErrors; + } + if (shorthandAssignLoc != null) { + this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc); + } + if (doubleProtoLoc != null) { + this.raise(Errors.DuplicateProto, doubleProtoLoc); + } + if (privateKeyLoc != null) { + this.raise(Errors.UnexpectedPrivateField, privateKeyLoc); + } + if (optionalParametersLoc != null) { + this.unexpected(optionalParametersLoc); + } + if (voidPatternLoc != null) { + this.raise(Errors.InvalidCoverDiscardElement, voidPatternLoc); + } + } + isLiteralPropertyName() { + return tokenIsLiteralPropertyName(this.state.type); + } + isPrivateName(node) { + return node.type === "PrivateName"; + } + getPrivateNameSV(node) { + return node.id.name; + } + hasPropertyAsPrivateName(node) { + return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property); + } + isObjectProperty(node) { + return node.type === "ObjectProperty"; + } + isObjectMethod(node) { + return node.type === "ObjectMethod"; + } + initializeScopes(inModule = this.options.sourceType === "module") { + const oldLabels = this.state.labels; + this.state.labels = []; + const oldExportedIdentifiers = this.exportedIdentifiers; + this.exportedIdentifiers = new Set(); + const oldInModule = this.inModule; + this.inModule = inModule; + const oldScope = this.scope; + const ScopeHandler = this.getScopeHandler(); + this.scope = new ScopeHandler(this, inModule); + const oldProdParam = this.prodParam; + this.prodParam = new ProductionParameterHandler(); + const oldClassScope = this.classScope; + this.classScope = new ClassScopeHandler(this); + const oldExpressionScope = this.expressionScope; + this.expressionScope = new ExpressionScopeHandler(this); + return () => { + this.state.labels = oldLabels; + this.exportedIdentifiers = oldExportedIdentifiers; + this.inModule = oldInModule; + this.scope = oldScope; + this.prodParam = oldProdParam; + this.classScope = oldClassScope; + this.expressionScope = oldExpressionScope; + }; + } + enterInitialScopes() { + let paramFlags = 0; + if (this.inModule || this.optionFlags & 1) { + paramFlags |= 2; + } + if (this.optionFlags & 32) { + paramFlags |= 1; + } + const isCommonJS = !this.inModule && this.options.sourceType === "commonjs"; + if (isCommonJS || this.optionFlags & 2) { + paramFlags |= 4; + } + this.prodParam.enter(paramFlags); + let scopeFlags = isCommonJS ? 514 : 1; + if (this.optionFlags & 4) { + scopeFlags |= 512; + } + this.scope.enter(scopeFlags); + } + checkDestructuringPrivate(refExpressionErrors) { + const { + privateKeyLoc + } = refExpressionErrors; + if (privateKeyLoc !== null) { + this.expectPlugin("destructuringPrivate", privateKeyLoc); + } + } + } + class ExpressionErrors { + constructor() { + this.shorthandAssignLoc = null; + this.doubleProtoLoc = null; + this.privateKeyLoc = null; + this.optionalParametersLoc = null; + this.voidPatternLoc = null; + } + } + class Node { + constructor(parser, pos, loc) { + this.type = ""; + this.start = pos; + this.end = 0; + this.loc = new SourceLocation(loc); + if ((parser == null ? void 0 : parser.optionFlags) & 128) this.range = [pos, 0]; + if (parser != null && parser.filename) this.loc.filename = parser.filename; + } + } + const NodePrototype = Node.prototype; + { + NodePrototype.__clone = function () { + const newNode = new Node(undefined, this.start, this.loc.start); + const keys = Object.keys(this); + for (let i = 0, length = keys.length; i < length; i++) { + const key = keys[i]; + if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") { + newNode[key] = this[key]; + } + } + return newNode; + }; + } + class NodeUtils extends UtilParser { + startNode() { + const loc = this.state.startLoc; + return new Node(this, loc.index, loc); + } + startNodeAt(loc) { + return new Node(this, loc.index, loc); + } + startNodeAtNode(type) { + return this.startNodeAt(type.loc.start); + } + finishNode(node, type) { + return this.finishNodeAt(node, type, this.state.lastTokEndLoc); + } + finishNodeAt(node, type, endLoc) { + node.type = type; + node.end = endLoc.index; + node.loc.end = endLoc; + if (this.optionFlags & 128) node.range[1] = endLoc.index; + if (this.optionFlags & 4096) { + this.processComment(node); + } + return node; + } + resetStartLocation(node, startLoc) { + node.start = startLoc.index; + node.loc.start = startLoc; + if (this.optionFlags & 128) node.range[0] = startLoc.index; + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { + node.end = endLoc.index; + node.loc.end = endLoc; + if (this.optionFlags & 128) node.range[1] = endLoc.index; + } + resetStartLocationFromNode(node, locationNode) { + this.resetStartLocation(node, locationNode.loc.start); + } + castNodeTo(node, type) { + node.type = type; + return node; + } + cloneIdentifier(node) { + const { + type, + start, + end, + loc, + range, + name + } = node; + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.name = name; + if (node.extra) cloned.extra = node.extra; + return cloned; + } + cloneStringLiteral(node) { + const { + type, + start, + end, + loc, + range, + extra + } = node; + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.extra = extra; + cloned.value = node.value; + return cloned; + } + } + const unwrapParenthesizedExpression = node => { + return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node; + }; + class LValParser extends NodeUtils { + toAssignable(node, isLHS = false) { + var _node$extra, _node$extra3; + let parenthesized = undefined; + if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) { + parenthesized = unwrapParenthesizedExpression(node); + if (isLHS) { + if (parenthesized.type === "Identifier") { + this.expressionScope.recordArrowParameterBindingError(Errors.InvalidParenthesizedAssignment, node); + } else if (parenthesized.type !== "MemberExpression" && !this.isOptionalMemberExpression(parenthesized)) { + this.raise(Errors.InvalidParenthesizedAssignment, node); + } + } else { + this.raise(Errors.InvalidParenthesizedAssignment, node); + } + } + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + case "VoidPattern": + break; + case "ObjectExpression": + this.castNodeTo(node, "ObjectPattern"); + for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) { + var _node$extra2; + const prop = node.properties[i]; + const isLast = i === last; + this.toAssignableObjectExpressionProp(prop, isLast, isLHS); + if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc); + } + } + break; + case "ObjectProperty": + { + const { + key, + value + } = node; + if (this.isPrivateName(key)) { + this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); + } + this.toAssignable(value, isLHS); + break; + } + case "SpreadElement": + { + throw new Error("Internal @babel/parser error (this is a bug, please report it)." + " SpreadElement should be converted by .toAssignable's caller."); + } + case "ArrayExpression": + this.castNodeTo(node, "ArrayPattern"); + this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS); + break; + case "AssignmentExpression": + if (node.operator !== "=") { + this.raise(Errors.MissingEqInAssignment, node.left.loc.end); + } + this.castNodeTo(node, "AssignmentPattern"); + delete node.operator; + if (node.left.type === "VoidPattern") { + this.raise(Errors.VoidPatternInitializer, node.left); + } + this.toAssignable(node.left, isLHS); + break; + case "ParenthesizedExpression": + this.toAssignable(parenthesized, isLHS); + break; + } + } + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.type === "ObjectMethod") { + this.raise(prop.kind === "get" || prop.kind === "set" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, prop.key); + } else if (prop.type === "SpreadElement") { + this.castNodeTo(prop, "RestElement"); + const arg = prop.argument; + this.checkToRestConversion(arg, false); + this.toAssignable(arg, isLHS); + if (!isLast) { + this.raise(Errors.RestTrailingComma, prop); + } + } else { + this.toAssignable(prop, isLHS); + } + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + const end = exprList.length - 1; + for (let i = 0; i <= end; i++) { + const elt = exprList[i]; + if (!elt) continue; + this.toAssignableListItem(exprList, i, isLHS); + if (elt.type === "RestElement") { + if (i < end) { + this.raise(Errors.RestTrailingComma, elt); + } else if (trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, trailingCommaLoc); + } + } + } + } + toAssignableListItem(exprList, index, isLHS) { + const node = exprList[index]; + if (node.type === "SpreadElement") { + this.castNodeTo(node, "RestElement"); + const arg = node.argument; + this.checkToRestConversion(arg, true); + this.toAssignable(arg, isLHS); + } else { + this.toAssignable(node, isLHS); + } + } + isAssignable(node, isBinding) { + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + case "VoidPattern": + return true; + case "ObjectExpression": + { + const last = node.properties.length - 1; + return node.properties.every((prop, i) => { + return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && this.isAssignable(prop); + }); + } + case "ObjectProperty": + return this.isAssignable(node.value); + case "SpreadElement": + return this.isAssignable(node.argument); + case "ArrayExpression": + return node.elements.every(element => element === null || this.isAssignable(element)); + case "AssignmentExpression": + return node.operator === "="; + case "ParenthesizedExpression": + return this.isAssignable(node.expression); + case "MemberExpression": + case "OptionalMemberExpression": + return !isBinding; + default: + return false; + } + } + toReferencedList(exprList, isParenthesizedExpr) { + return exprList; + } + toReferencedListDeep(exprList, isParenthesizedExpr) { + this.toReferencedList(exprList, isParenthesizedExpr); + for (const expr of exprList) { + if ((expr == null ? void 0 : expr.type) === "ArrayExpression") { + this.toReferencedListDeep(expr.elements); + } + } + } + parseSpread(refExpressionErrors) { + const node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined); + return this.finishNode(node, "SpreadElement"); + } + parseRestBinding() { + const node = this.startNode(); + this.next(); + const argument = this.parseBindingAtom(); + if (argument.type === "VoidPattern") { + this.raise(Errors.UnexpectedVoidPattern, argument); + } + node.argument = argument; + return this.finishNode(node, "RestElement"); + } + parseBindingAtom() { + switch (this.state.type) { + case 0: + { + const node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(3, 93, 1); + return this.finishNode(node, "ArrayPattern"); + } + case 5: + return this.parseObjectLike(8, true); + case 88: + return this.parseVoidPattern(null); + } + return this.parseIdentifier(); + } + parseBindingList(close, closeCharCode, flags) { + const allowEmpty = flags & 1; + const elts = []; + let first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + } + if (allowEmpty && this.match(12)) { + elts.push(null); + } else if (this.eat(close)) { + break; + } else if (this.match(21)) { + let rest = this.parseRestBinding(); + if (this.hasPlugin("flow") || flags & 2) { + rest = this.parseFunctionParamType(rest); + } + elts.push(rest); + if (!this.checkCommaAfterRest(closeCharCode)) { + this.expect(close); + break; + } + } else { + const decorators = []; + if (flags & 2) { + if (this.match(26) && this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedParameterDecorator, this.state.startLoc); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } + } + elts.push(this.parseBindingElement(flags, decorators)); + } + } + return elts; + } + parseBindingRestProperty(prop) { + this.next(); + if (this.hasPlugin("discardBinding") && this.match(88)) { + prop.argument = this.parseVoidPattern(null); + this.raise(Errors.UnexpectedVoidPattern, prop.argument); + } else { + prop.argument = this.parseIdentifier(); + } + this.checkCommaAfterRest(125); + return this.finishNode(prop, "RestElement"); + } + parseBindingProperty() { + const { + type, + startLoc + } = this.state; + if (type === 21) { + return this.parseBindingRestProperty(this.startNode()); + } + const prop = this.startNode(); + if (type === 139) { + this.expectPlugin("destructuringPrivate", startLoc); + this.classScope.usePrivateName(this.state.value, startLoc); + prop.key = this.parsePrivateName(); + } else { + this.parsePropertyName(prop); + } + prop.method = false; + return this.parseObjPropValue(prop, startLoc, false, false, true, false); + } + parseBindingElement(flags, decorators) { + const left = this.parseMaybeDefault(); + if (this.hasPlugin("flow") || flags & 2) { + this.parseFunctionParamType(left); + } + if (decorators.length) { + left.decorators = decorators; + this.resetStartLocationFromNode(left, decorators[0]); + } + const elt = this.parseMaybeDefault(left.loc.start, left); + return elt; + } + parseFunctionParamType(param) { + return param; + } + parseMaybeDefault(startLoc, left) { + startLoc != null ? startLoc : startLoc = this.state.startLoc; + left = left != null ? left : this.parseBindingAtom(); + if (!this.eat(29)) return left; + const node = this.startNodeAt(startLoc); + if (left.type === "VoidPattern") { + this.raise(Errors.VoidPatternInitializer, left); + } + node.left = left; + node.right = this.parseMaybeAssignAllowIn(); + return this.finishNode(node, "AssignmentPattern"); + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + switch (type) { + case "AssignmentPattern": + return "left"; + case "RestElement": + return "argument"; + case "ObjectProperty": + return "value"; + case "ParenthesizedExpression": + return "expression"; + case "ArrayPattern": + return "elements"; + case "ObjectPattern": + return "properties"; + case "VoidPattern": + return true; + } + return false; + } + isOptionalMemberExpression(expression) { + return expression.type === "OptionalMemberExpression"; + } + checkLVal(expression, ancestor, binding = 64, checkClashes = false, strictModeChanged = false, hasParenthesizedAncestor = false) { + var _expression$extra; + const type = expression.type; + if (this.isObjectMethod(expression)) return; + const isOptionalMemberExpression = this.isOptionalMemberExpression(expression); + if (isOptionalMemberExpression || type === "MemberExpression") { + if (isOptionalMemberExpression) { + this.expectPlugin("optionalChainingAssign", expression.loc.start); + if (ancestor.type !== "AssignmentExpression") { + this.raise(Errors.InvalidLhsOptionalChaining, expression, { + ancestor + }); + } + } + if (binding !== 64) { + this.raise(Errors.InvalidPropertyBindingPattern, expression); + } + return; + } + if (type === "Identifier") { + this.checkIdentifier(expression, binding, strictModeChanged); + const { + name + } = expression; + if (checkClashes) { + if (checkClashes.has(name)) { + this.raise(Errors.ParamDupe, expression); + } else { + checkClashes.add(name); + } + } + return; + } else if (type === "VoidPattern" && ancestor.type === "CatchClause") { + this.raise(Errors.VoidPatternCatchClauseParam, expression); + } + const validity = this.isValidLVal(type, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === "AssignmentExpression", binding); + if (validity === true) return; + if (validity === false) { + const ParseErrorClass = binding === 64 ? Errors.InvalidLhs : Errors.InvalidLhsBinding; + this.raise(ParseErrorClass, expression, { + ancestor + }); + return; + } + let key, isParenthesizedExpression; + if (typeof validity === "string") { + key = validity; + isParenthesizedExpression = type === "ParenthesizedExpression"; + } else { + [key, isParenthesizedExpression] = validity; + } + const nextAncestor = type === "ArrayPattern" || type === "ObjectPattern" ? { + type + } : ancestor; + const val = expression[key]; + if (Array.isArray(val)) { + for (const child of val) { + if (child) { + this.checkLVal(child, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression); + } + } + } else if (val) { + this.checkLVal(val, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression); + } + } + checkIdentifier(at, bindingType, strictModeChanged = false) { + if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) { + if (bindingType === 64) { + this.raise(Errors.StrictEvalArguments, at, { + referenceName: at.name + }); + } else { + this.raise(Errors.StrictEvalArgumentsBinding, at, { + bindingName: at.name + }); + } + } + if (bindingType & 8192 && at.name === "let") { + this.raise(Errors.LetInLexicalBinding, at); + } + if (!(bindingType & 64)) { + this.declareNameFromIdentifier(at, bindingType); + } + } + declareNameFromIdentifier(identifier, binding) { + this.scope.declareName(identifier.name, binding, identifier.loc.start); + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "ParenthesizedExpression": + this.checkToRestConversion(node.expression, allowPattern); + break; + case "Identifier": + case "MemberExpression": + break; + case "ArrayExpression": + case "ObjectExpression": + if (allowPattern) break; + default: + this.raise(Errors.InvalidRestAssignmentPattern, node); + } + } + checkCommaAfterRest(close) { + if (!this.match(12)) { + return false; + } + this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, this.state.startLoc); + return true; + } + } + function nonNull(x) { + if (x == null) { + throw new Error(`Unexpected ${x} value.`); + } + return x; + } + function assert(x) { + if (!x) { + throw new Error("Assert fail"); + } + } + const TSErrors = ParseErrorEnum`typescript`({ + AbstractMethodHasImplementation: ({ + methodName + }) => `Method '${methodName}' cannot have an implementation because it is marked abstract.`, + AbstractPropertyHasInitializer: ({ + propertyName + }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`, + AccessorCannotBeOptional: "An 'accessor' property cannot be declared optional.", + AccessorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.", + AccessorCannotHaveTypeParameters: "An accessor cannot have type parameters.", + ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.", + ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.", + ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.", + ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.", + DeclareAccessor: ({ + kind + }) => `'declare' is not allowed in ${kind}ters.`, + DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.", + DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.", + DuplicateAccessibilityModifier: ({ + modifier + }) => `Accessibility modifier already seen: '${modifier}'.`, + DuplicateModifier: ({ + modifier + }) => `Duplicate modifier: '${modifier}'.`, + EmptyHeritageClauseType: ({ + token + }) => `'${token}' list cannot be empty.`, + EmptyTypeArguments: "Type argument list cannot be empty.", + EmptyTypeParameters: "Type parameter list cannot be empty.", + ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.", + ImportAliasHasImportType: "An import alias can not use 'import type'.", + ImportReflectionHasImportType: "An `import module` declaration can not use `type` modifier", + IncompatibleModifiers: ({ + modifiers + }) => `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`, + IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.", + IndexSignatureHasAccessibility: ({ + modifier + }) => `Index signatures cannot have an accessibility modifier ('${modifier}').`, + IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.", + IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.", + IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.", + InitializerNotAllowedInAmbientContext: "Initializers are not allowed in ambient contexts.", + InvalidHeritageClauseType: ({ + token + }) => `'${token}' list can only include identifiers or qualified-names with optional type arguments.`, + InvalidModifierOnAwaitUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on an await using declaration.`, + InvalidModifierOnTypeMember: ({ + modifier + }) => `'${modifier}' modifier cannot appear on a type member.`, + InvalidModifierOnTypeParameter: ({ + modifier + }) => `'${modifier}' modifier cannot appear on a type parameter.`, + InvalidModifierOnTypeParameterPositions: ({ + modifier + }) => `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`, + InvalidModifierOnUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on a using declaration.`, + InvalidModifiersOrder: ({ + orderedModifiers + }) => `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`, + InvalidPropertyAccessAfterInstantiationExpression: "Invalid property access after an instantiation expression. " + "You can either wrap the instantiation expression in parentheses, or delete the type arguments.", + InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.", + MissingInterfaceName: "'interface' declarations must be followed by an identifier.", + NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.", + NonClassMethodPropertyHasAbstractModifier: "'abstract' modifier can only appear on a class, method, or property declaration.", + OptionalTypeBeforeRequired: "A required element cannot follow an optional element.", + OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.", + PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.", + PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.", + PrivateElementHasAccessibility: ({ + modifier + }) => `Private elements cannot have an accessibility modifier ('${modifier}').`, + ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.", + ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.", + ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.", + SetAccessorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.", + SetAccessorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.", + SetAccessorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.", + SingleTypeParameterWithoutTrailingComma: ({ + typeParameterName + }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`, + StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.", + TupleOptionalAfterType: "A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).", + TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.", + TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.", + TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.", + UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.", + UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.", + UnexpectedTypeAnnotation: "Did not expect a type annotation here.", + UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.", + UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.", + UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.", + UnsupportedSignatureParameterKind: ({ + type + }) => `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`, + UsingDeclarationInAmbientContext: kind => `'${kind}' declarations are not allowed in ambient contexts.` + }); + function keywordTypeFromName(value) { + switch (value) { + case "any": + return "TSAnyKeyword"; + case "boolean": + return "TSBooleanKeyword"; + case "bigint": + return "TSBigIntKeyword"; + case "never": + return "TSNeverKeyword"; + case "number": + return "TSNumberKeyword"; + case "object": + return "TSObjectKeyword"; + case "string": + return "TSStringKeyword"; + case "symbol": + return "TSSymbolKeyword"; + case "undefined": + return "TSUndefinedKeyword"; + case "unknown": + return "TSUnknownKeyword"; + default: + return undefined; + } + } + function tsIsAccessModifier(modifier) { + return modifier === "private" || modifier === "public" || modifier === "protected"; + } + function tsIsVarianceAnnotations(modifier) { + return modifier === "in" || modifier === "out"; + } + var typescript = superClass => class TypeScriptParserMixin extends superClass { + constructor(...args) { + super(...args); + this.tsParseInOutModifiers = this.tsParseModifiers.bind(this, { + allowedModifiers: ["in", "out"], + disallowedModifiers: ["const", "public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + this.tsParseConstModifier = this.tsParseModifiers.bind(this, { + allowedModifiers: ["const"], + disallowedModifiers: ["in", "out"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }); + this.tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, { + allowedModifiers: ["in", "out", "const"], + disallowedModifiers: ["public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + } + getScopeHandler() { + return TypeScriptScopeHandler; + } + tsIsIdentifier() { + return tokenIsIdentifier(this.state.type); + } + tsTokenCanFollowModifier() { + return this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(139) || this.isLiteralPropertyName(); + } + tsNextTokenOnSameLineAndCanFollowModifier() { + this.next(); + if (this.hasPrecedingLineBreak()) { + return false; + } + return this.tsTokenCanFollowModifier(); + } + tsNextTokenCanFollowModifier() { + if (this.match(106)) { + this.next(); + return this.tsTokenCanFollowModifier(); + } + return this.tsNextTokenOnSameLineAndCanFollowModifier(); + } + tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock, hasSeenStaticModifier) { + if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58 && this.state.type !== 75) { + return undefined; + } + const modifier = this.state.value; + if (allowedModifiers.includes(modifier)) { + if (hasSeenStaticModifier && this.match(106)) { + return undefined; + } + if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) { + return undefined; + } + if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) { + return modifier; + } + } + return undefined; + } + tsParseModifiers({ + allowedModifiers, + disallowedModifiers, + stopOnStartOfClassStaticBlock, + errorTemplate = TSErrors.InvalidModifierOnTypeMember + }, modified) { + const enforceOrder = (loc, modifier, before, after) => { + if (modifier === before && modified[after]) { + this.raise(TSErrors.InvalidModifiersOrder, loc, { + orderedModifiers: [before, after] + }); + } + }; + const incompatible = (loc, modifier, mod1, mod2) => { + if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) { + this.raise(TSErrors.IncompatibleModifiers, loc, { + modifiers: [mod1, mod2] + }); + } + }; + for (;;) { + const { + startLoc + } = this.state; + const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock, modified.static); + if (!modifier) break; + if (tsIsAccessModifier(modifier)) { + if (modified.accessibility) { + this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, { + modifier + }); + } else { + enforceOrder(startLoc, modifier, modifier, "override"); + enforceOrder(startLoc, modifier, modifier, "static"); + enforceOrder(startLoc, modifier, modifier, "readonly"); + modified.accessibility = modifier; + } + } else if (tsIsVarianceAnnotations(modifier)) { + if (modified[modifier]) { + this.raise(TSErrors.DuplicateModifier, startLoc, { + modifier + }); + } + modified[modifier] = true; + enforceOrder(startLoc, modifier, "in", "out"); + } else { + if (hasOwnProperty.call(modified, modifier)) { + this.raise(TSErrors.DuplicateModifier, startLoc, { + modifier + }); + } else { + enforceOrder(startLoc, modifier, "static", "readonly"); + enforceOrder(startLoc, modifier, "static", "override"); + enforceOrder(startLoc, modifier, "override", "readonly"); + enforceOrder(startLoc, modifier, "abstract", "override"); + incompatible(startLoc, modifier, "declare", "override"); + incompatible(startLoc, modifier, "static", "abstract"); + } + modified[modifier] = true; + } + if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) { + this.raise(errorTemplate, startLoc, { + modifier + }); + } + } + } + tsIsListTerminator(kind) { + switch (kind) { + case "EnumMembers": + case "TypeMembers": + return this.match(8); + case "HeritageClauseElement": + return this.match(5); + case "TupleElementTypes": + return this.match(3); + case "TypeParametersOrArguments": + return this.match(48); + } + } + tsParseList(kind, parseElement) { + const result = []; + while (!this.tsIsListTerminator(kind)) { + result.push(parseElement()); + } + return result; + } + tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) { + return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos)); + } + tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) { + const result = []; + let trailingCommaPos = -1; + for (;;) { + if (this.tsIsListTerminator(kind)) { + break; + } + trailingCommaPos = -1; + const element = parseElement(); + if (element == null) { + return undefined; + } + result.push(element); + if (this.eat(12)) { + trailingCommaPos = this.state.lastTokStartLoc.index; + continue; + } + if (this.tsIsListTerminator(kind)) { + break; + } + if (expectSuccess) { + this.expect(12); + } + return undefined; + } + if (refTrailingCommaPos) { + refTrailingCommaPos.value = trailingCommaPos; + } + return result; + } + tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) { + if (!skipFirstToken) { + if (bracket) { + this.expect(0); + } else { + this.expect(47); + } + } + const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos); + if (bracket) { + this.expect(3); + } else { + this.expect(48); + } + return result; + } + tsParseImportType() { + const node = this.startNode(); + this.expect(83); + this.expect(10); + if (!this.match(134)) { + this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc); + { + node.argument = super.parseExprAtom(); + } + } else { + { + node.argument = this.parseStringLiteral(this.state.value); + } + } + if (this.eat(12)) { + node.options = this.tsParseImportTypeOptions(); + } else { + node.options = null; + } + this.expect(11); + if (this.eat(16)) { + node.qualifier = this.tsParseEntityName(1 | 2); + } + if (this.match(47)) { + { + node.typeParameters = this.tsParseTypeArguments(); + } + } + return this.finishNode(node, "TSImportType"); + } + tsParseImportTypeOptions() { + const node = this.startNode(); + this.expect(5); + const withProperty = this.startNode(); + if (this.isContextual(76)) { + withProperty.method = false; + withProperty.key = this.parseIdentifier(true); + withProperty.computed = false; + withProperty.shorthand = false; + } else { + this.unexpected(null, 76); + } + this.expect(14); + withProperty.value = this.tsParseImportTypeWithPropertyValue(); + node.properties = [this.finishObjectProperty(withProperty)]; + this.expect(8); + return this.finishNode(node, "ObjectExpression"); + } + tsParseImportTypeWithPropertyValue() { + const node = this.startNode(); + const properties = []; + this.expect(5); + while (!this.match(8)) { + const type = this.state.type; + if (tokenIsIdentifier(type) || type === 134) { + properties.push(super.parsePropertyDefinition(null)); + } else { + this.unexpected(); + } + this.eat(12); + } + node.properties = properties; + this.next(); + return this.finishNode(node, "ObjectExpression"); + } + tsParseEntityName(flags) { + let entity; + if (flags & 1 && this.match(78)) { + if (flags & 2) { + entity = this.parseIdentifier(true); + } else { + const node = this.startNode(); + this.next(); + entity = this.finishNode(node, "ThisExpression"); + } + } else { + entity = this.parseIdentifier(!!(flags & 1)); + } + while (this.eat(16)) { + const node = this.startNodeAtNode(entity); + node.left = entity; + node.right = this.parseIdentifier(!!(flags & 1)); + entity = this.finishNode(node, "TSQualifiedName"); + } + return entity; + } + tsParseTypeReference() { + const node = this.startNode(); + node.typeName = this.tsParseEntityName(1); + if (!this.hasPrecedingLineBreak() && this.match(47)) { + { + node.typeParameters = this.tsParseTypeArguments(); + } + } + return this.finishNode(node, "TSTypeReference"); + } + tsParseThisTypePredicate(lhs) { + this.next(); + const node = this.startNodeAtNode(lhs); + node.parameterName = lhs; + node.typeAnnotation = this.tsParseTypeAnnotation(false); + node.asserts = false; + return this.finishNode(node, "TSTypePredicate"); + } + tsParseThisTypeNode() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSThisType"); + } + tsParseTypeQuery() { + const node = this.startNode(); + this.expect(87); + if (this.match(83)) { + node.exprName = this.tsParseImportType(); + } else { + { + node.exprName = this.tsParseEntityName(1 | 2); + } + } + if (!this.hasPrecedingLineBreak() && this.match(47)) { + { + node.typeParameters = this.tsParseTypeArguments(); + } + } + return this.finishNode(node, "TSTypeQuery"); + } + tsParseTypeParameter(parseModifiers) { + const node = this.startNode(); + parseModifiers(node); + node.name = this.tsParseTypeParameterName(); + node.constraint = this.tsEatThenParseType(81); + node.default = this.tsEatThenParseType(29); + return this.finishNode(node, "TSTypeParameter"); + } + tsTryParseTypeParameters(parseModifiers) { + if (this.match(47)) { + return this.tsParseTypeParameters(parseModifiers); + } + } + tsParseTypeParameters(parseModifiers) { + const node = this.startNode(); + if (this.match(47) || this.match(143)) { + this.next(); + } else { + this.unexpected(); + } + const refTrailingCommaPos = { + value: -1 + }; + node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos); + if (node.params.length === 0) { + this.raise(TSErrors.EmptyTypeParameters, node); + } + if (refTrailingCommaPos.value !== -1) { + this.addExtra(node, "trailingComma", refTrailingCommaPos.value); + } + return this.finishNode(node, "TSTypeParameterDeclaration"); + } + tsFillSignature(returnToken, signature) { + const returnTokenRequired = returnToken === 19; + const paramsKey = "parameters"; + const returnTypeKey = "typeAnnotation"; + signature.typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + this.expect(10); + signature[paramsKey] = this.tsParseBindingListForSignature(); + if (returnTokenRequired) { + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } else if (this.match(returnToken)) { + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } + } + tsParseBindingListForSignature() { + const list = super.parseBindingList(11, 41, 2); + for (const pattern of list) { + const { + type + } = pattern; + if (type === "AssignmentPattern" || type === "TSParameterProperty") { + this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, { + type + }); + } + } + return list; + } + tsParseTypeMemberSemicolon() { + if (!this.eat(12) && !this.isLineTerminator()) { + this.expect(13); + } + } + tsParseSignatureMember(kind, node) { + this.tsFillSignature(14, node); + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, kind); + } + tsIsUnambiguouslyIndexSignature() { + this.next(); + if (tokenIsIdentifier(this.state.type)) { + this.next(); + return this.match(14); + } + return false; + } + tsTryParseIndexSignature(node) { + if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) { + return; + } + this.expect(0); + const id = this.parseIdentifier(); + id.typeAnnotation = this.tsParseTypeAnnotation(); + this.resetEndLocation(id); + this.expect(3); + node.parameters = [id]; + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, "TSIndexSignature"); + } + tsParsePropertyOrMethodSignature(node, readonly) { + if (this.eat(17)) node.optional = true; + if (this.match(10) || this.match(47)) { + if (readonly) { + this.raise(TSErrors.ReadonlyForMethodSignature, node); + } + const method = node; + if (method.kind && this.match(47)) { + this.raise(TSErrors.AccessorCannotHaveTypeParameters, this.state.curPosition()); + } + this.tsFillSignature(14, method); + this.tsParseTypeMemberSemicolon(); + const paramsKey = "parameters"; + const returnTypeKey = "typeAnnotation"; + if (method.kind === "get") { + if (method[paramsKey].length > 0) { + this.raise(Errors.BadGetterArity, this.state.curPosition()); + if (this.isThisParam(method[paramsKey][0])) { + this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition()); + } + } + } else if (method.kind === "set") { + if (method[paramsKey].length !== 1) { + this.raise(Errors.BadSetterArity, this.state.curPosition()); + } else { + const firstParameter = method[paramsKey][0]; + if (this.isThisParam(firstParameter)) { + this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition()); + } + if (firstParameter.type === "Identifier" && firstParameter.optional) { + this.raise(TSErrors.SetAccessorCannotHaveOptionalParameter, this.state.curPosition()); + } + if (firstParameter.type === "RestElement") { + this.raise(TSErrors.SetAccessorCannotHaveRestParameter, this.state.curPosition()); + } + } + if (method[returnTypeKey]) { + this.raise(TSErrors.SetAccessorCannotHaveReturnType, method[returnTypeKey]); + } + } else { + method.kind = "method"; + } + return this.finishNode(method, "TSMethodSignature"); + } else { + const property = node; + if (readonly) property.readonly = true; + const type = this.tsTryParseTypeAnnotation(); + if (type) property.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(property, "TSPropertySignature"); + } + } + tsParseTypeMember() { + const node = this.startNode(); + if (this.match(10) || this.match(47)) { + return this.tsParseSignatureMember("TSCallSignatureDeclaration", node); + } + if (this.match(77)) { + const id = this.startNode(); + this.next(); + if (this.match(10) || this.match(47)) { + return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node); + } else { + node.key = this.createIdentifier(id, "new"); + return this.tsParsePropertyOrMethodSignature(node, false); + } + } + this.tsParseModifiers({ + allowedModifiers: ["readonly"], + disallowedModifiers: ["declare", "abstract", "private", "protected", "public", "static", "override"] + }, node); + const idx = this.tsTryParseIndexSignature(node); + if (idx) { + return idx; + } + super.parsePropertyName(node); + if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) { + node.kind = node.key.name; + super.parsePropertyName(node); + if (!this.match(10) && !this.match(47)) { + this.unexpected(null, 10); + } + } + return this.tsParsePropertyOrMethodSignature(node, !!node.readonly); + } + tsParseTypeLiteral() { + const node = this.startNode(); + node.members = this.tsParseObjectTypeMembers(); + return this.finishNode(node, "TSTypeLiteral"); + } + tsParseObjectTypeMembers() { + this.expect(5); + const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this)); + this.expect(8); + return members; + } + tsIsStartOfMappedType() { + this.next(); + if (this.eat(53)) { + return this.isContextual(122); + } + if (this.isContextual(122)) { + this.next(); + } + if (!this.match(0)) { + return false; + } + this.next(); + if (!this.tsIsIdentifier()) { + return false; + } + this.next(); + return this.match(58); + } + tsParseMappedType() { + const node = this.startNode(); + this.expect(5); + if (this.match(53)) { + node.readonly = this.state.value; + this.next(); + this.expectContextual(122); + } else if (this.eatContextual(122)) { + node.readonly = true; + } + this.expect(0); + { + const typeParameter = this.startNode(); + typeParameter.name = this.tsParseTypeParameterName(); + typeParameter.constraint = this.tsExpectThenParseType(58); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + } + node.nameType = this.eatContextual(93) ? this.tsParseType() : null; + this.expect(3); + if (this.match(53)) { + node.optional = this.state.value; + this.next(); + this.expect(17); + } else if (this.eat(17)) { + node.optional = true; + } + node.typeAnnotation = this.tsTryParseType(); + this.semicolon(); + this.expect(8); + return this.finishNode(node, "TSMappedType"); + } + tsParseTupleType() { + const node = this.startNode(); + node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false); + let seenOptionalElement = false; + node.elementTypes.forEach(elementNode => { + const { + type + } = elementNode; + if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) { + this.raise(TSErrors.OptionalTypeBeforeRequired, elementNode); + } + seenOptionalElement || (seenOptionalElement = type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType"); + }); + return this.finishNode(node, "TSTupleType"); + } + tsParseTupleElementType() { + const restStartLoc = this.state.startLoc; + const rest = this.eat(21); + const { + startLoc + } = this.state; + let labeled; + let label; + let optional; + let type; + const isWord = tokenIsKeywordOrIdentifier(this.state.type); + const chAfterWord = isWord ? this.lookaheadCharCode() : null; + if (chAfterWord === 58) { + labeled = true; + optional = false; + label = this.parseIdentifier(true); + this.expect(14); + type = this.tsParseType(); + } else if (chAfterWord === 63) { + optional = true; + const wordName = this.state.value; + const typeOrLabel = this.tsParseNonArrayType(); + if (this.lookaheadCharCode() === 58) { + labeled = true; + label = this.createIdentifier(this.startNodeAt(startLoc), wordName); + this.expect(17); + this.expect(14); + type = this.tsParseType(); + } else { + labeled = false; + type = typeOrLabel; + this.expect(17); + } + } else { + type = this.tsParseType(); + optional = this.eat(17); + labeled = this.eat(14); + } + if (labeled) { + let labeledNode; + if (label) { + labeledNode = this.startNodeAt(startLoc); + labeledNode.optional = optional; + labeledNode.label = label; + labeledNode.elementType = type; + if (this.eat(17)) { + labeledNode.optional = true; + this.raise(TSErrors.TupleOptionalAfterType, this.state.lastTokStartLoc); + } + } else { + labeledNode = this.startNodeAt(startLoc); + labeledNode.optional = optional; + this.raise(TSErrors.InvalidTupleMemberLabel, type); + labeledNode.label = type; + labeledNode.elementType = this.tsParseType(); + } + type = this.finishNode(labeledNode, "TSNamedTupleMember"); + } else if (optional) { + const optionalTypeNode = this.startNodeAt(startLoc); + optionalTypeNode.typeAnnotation = type; + type = this.finishNode(optionalTypeNode, "TSOptionalType"); + } + if (rest) { + const restNode = this.startNodeAt(restStartLoc); + restNode.typeAnnotation = type; + type = this.finishNode(restNode, "TSRestType"); + } + return type; + } + tsParseParenthesizedType() { + const node = this.startNode(); + this.expect(10); + node.typeAnnotation = this.tsParseType(); + this.expect(11); + return this.finishNode(node, "TSParenthesizedType"); + } + tsParseFunctionOrConstructorType(type, abstract) { + const node = this.startNode(); + if (type === "TSConstructorType") { + node.abstract = !!abstract; + if (abstract) this.next(); + this.next(); + } + this.tsInAllowConditionalTypesContext(() => this.tsFillSignature(19, node)); + return this.finishNode(node, type); + } + tsParseLiteralTypeNode() { + const node = this.startNode(); + switch (this.state.type) { + case 135: + case 136: + case 134: + case 85: + case 86: + node.literal = super.parseExprAtom(); + break; + default: + this.unexpected(); + } + return this.finishNode(node, "TSLiteralType"); + } + tsParseTemplateLiteralType() { + { + const node = this.startNode(); + node.literal = super.parseTemplate(false); + return this.finishNode(node, "TSLiteralType"); + } + } + parseTemplateSubstitution() { + if (this.state.inType) return this.tsParseType(); + return super.parseTemplateSubstitution(); + } + tsParseThisTypeOrThisTypePredicate() { + const thisKeyword = this.tsParseThisTypeNode(); + if (this.isContextual(116) && !this.hasPrecedingLineBreak()) { + return this.tsParseThisTypePredicate(thisKeyword); + } else { + return thisKeyword; + } + } + tsParseNonArrayType() { + switch (this.state.type) { + case 134: + case 135: + case 136: + case 85: + case 86: + return this.tsParseLiteralTypeNode(); + case 53: + if (this.state.value === "-") { + const node = this.startNode(); + const nextToken = this.lookahead(); + if (nextToken.type !== 135 && nextToken.type !== 136) { + this.unexpected(); + } + node.literal = this.parseMaybeUnary(); + return this.finishNode(node, "TSLiteralType"); + } + break; + case 78: + return this.tsParseThisTypeOrThisTypePredicate(); + case 87: + return this.tsParseTypeQuery(); + case 83: + return this.tsParseImportType(); + case 5: + return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral(); + case 0: + return this.tsParseTupleType(); + case 10: + return this.tsParseParenthesizedType(); + case 25: + case 24: + return this.tsParseTemplateLiteralType(); + default: + { + const { + type + } = this.state; + if (tokenIsIdentifier(type) || type === 88 || type === 84) { + const nodeType = type === 88 ? "TSVoidKeyword" : type === 84 ? "TSNullKeyword" : keywordTypeFromName(this.state.value); + if (nodeType !== undefined && this.lookaheadCharCode() !== 46) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, nodeType); + } + return this.tsParseTypeReference(); + } + } + } + this.unexpected(); + } + tsParseArrayTypeOrHigher() { + const { + startLoc + } = this.state; + let type = this.tsParseNonArrayType(); + while (!this.hasPrecedingLineBreak() && this.eat(0)) { + if (this.match(3)) { + const node = this.startNodeAt(startLoc); + node.elementType = type; + this.expect(3); + type = this.finishNode(node, "TSArrayType"); + } else { + const node = this.startNodeAt(startLoc); + node.objectType = type; + node.indexType = this.tsParseType(); + this.expect(3); + type = this.finishNode(node, "TSIndexedAccessType"); + } + } + return type; + } + tsParseTypeOperator() { + const node = this.startNode(); + const operator = this.state.value; + this.next(); + node.operator = operator; + node.typeAnnotation = this.tsParseTypeOperatorOrHigher(); + if (operator === "readonly") { + this.tsCheckTypeAnnotationForReadOnly(node); + } + return this.finishNode(node, "TSTypeOperator"); + } + tsCheckTypeAnnotationForReadOnly(node) { + switch (node.typeAnnotation.type) { + case "TSTupleType": + case "TSArrayType": + return; + default: + this.raise(TSErrors.UnexpectedReadonly, node); + } + } + tsParseInferType() { + const node = this.startNode(); + this.expectContextual(115); + const typeParameter = this.startNode(); + typeParameter.name = this.tsParseTypeParameterName(); + typeParameter.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType()); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + return this.finishNode(node, "TSInferType"); + } + tsParseConstraintForInferType() { + if (this.eat(81)) { + const constraint = this.tsInDisallowConditionalTypesContext(() => this.tsParseType()); + if (this.state.inDisallowConditionalTypesContext || !this.match(17)) { + return constraint; + } + } + } + tsParseTypeOperatorOrHigher() { + const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc; + return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(115) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher()); + } + tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) { + const node = this.startNode(); + const hasLeadingOperator = this.eat(operator); + const types = []; + do { + types.push(parseConstituentType()); + } while (this.eat(operator)); + if (types.length === 1 && !hasLeadingOperator) { + return types[0]; + } + node.types = types; + return this.finishNode(node, kind); + } + tsParseIntersectionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 45); + } + tsParseUnionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 43); + } + tsIsStartOfFunctionType() { + if (this.match(47)) { + return true; + } + return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this)); + } + tsSkipParameterStart() { + if (tokenIsIdentifier(this.state.type) || this.match(78)) { + this.next(); + return true; + } + if (this.match(5)) { + const { + errors + } = this.state; + const previousErrorCount = errors.length; + try { + this.parseObjectLike(8, true); + return errors.length === previousErrorCount; + } catch (_unused) { + return false; + } + } + if (this.match(0)) { + this.next(); + const { + errors + } = this.state; + const previousErrorCount = errors.length; + try { + super.parseBindingList(3, 93, 1); + return errors.length === previousErrorCount; + } catch (_unused2) { + return false; + } + } + return false; + } + tsIsUnambiguouslyStartOfFunctionType() { + this.next(); + if (this.match(11) || this.match(21)) { + return true; + } + if (this.tsSkipParameterStart()) { + if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) { + return true; + } + if (this.match(11)) { + this.next(); + if (this.match(19)) { + return true; + } + } + } + return false; + } + tsParseTypeOrTypePredicateAnnotation(returnToken) { + return this.tsInType(() => { + const t = this.startNode(); + this.expect(returnToken); + const node = this.startNode(); + const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this)); + if (asserts && this.match(78)) { + let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate(); + if (thisTypePredicate.type === "TSThisType") { + node.parameterName = thisTypePredicate; + node.asserts = true; + node.typeAnnotation = null; + thisTypePredicate = this.finishNode(node, "TSTypePredicate"); + } else { + this.resetStartLocationFromNode(thisTypePredicate, node); + thisTypePredicate.asserts = true; + } + t.typeAnnotation = thisTypePredicate; + return this.finishNode(t, "TSTypeAnnotation"); + } + const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this)); + if (!typePredicateVariable) { + if (!asserts) { + return this.tsParseTypeAnnotation(false, t); + } + node.parameterName = this.parseIdentifier(); + node.asserts = asserts; + node.typeAnnotation = null; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + } + const type = this.tsParseTypeAnnotation(false); + node.parameterName = typePredicateVariable; + node.typeAnnotation = type; + node.asserts = asserts; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + }); + } + tsTryParseTypeOrTypePredicateAnnotation() { + if (this.match(14)) { + return this.tsParseTypeOrTypePredicateAnnotation(14); + } + } + tsTryParseTypeAnnotation() { + if (this.match(14)) { + return this.tsParseTypeAnnotation(); + } + } + tsTryParseType() { + return this.tsEatThenParseType(14); + } + tsParseTypePredicatePrefix() { + const id = this.parseIdentifier(); + if (this.isContextual(116) && !this.hasPrecedingLineBreak()) { + this.next(); + return id; + } + } + tsParseTypePredicateAsserts() { + if (this.state.type !== 109) { + return false; + } + const containsEsc = this.state.containsEsc; + this.next(); + if (!tokenIsIdentifier(this.state.type) && !this.match(78)) { + return false; + } + if (containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, this.state.lastTokStartLoc, { + reservedWord: "asserts" + }); + } + return true; + } + tsParseTypeAnnotation(eatColon = true, t = this.startNode()) { + this.tsInType(() => { + if (eatColon) this.expect(14); + t.typeAnnotation = this.tsParseType(); + }); + return this.finishNode(t, "TSTypeAnnotation"); + } + tsParseType() { + assert(this.state.inType); + const type = this.tsParseNonConditionalType(); + if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) { + return type; + } + const node = this.startNodeAtNode(type); + node.checkType = type; + node.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType()); + this.expect(17); + node.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); + this.expect(14); + node.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); + return this.finishNode(node, "TSConditionalType"); + } + isAbstractConstructorSignature() { + return this.isContextual(124) && this.isLookaheadContextual("new"); + } + tsParseNonConditionalType() { + if (this.tsIsStartOfFunctionType()) { + return this.tsParseFunctionOrConstructorType("TSFunctionType"); + } + if (this.match(77)) { + return this.tsParseFunctionOrConstructorType("TSConstructorType"); + } else if (this.isAbstractConstructorSignature()) { + return this.tsParseFunctionOrConstructorType("TSConstructorType", true); + } + return this.tsParseUnionTypeOrHigher(); + } + tsParseTypeAssertion() { + if (this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc); + } + const node = this.startNode(); + node.typeAnnotation = this.tsInType(() => { + this.next(); + return this.match(75) ? this.tsParseTypeReference() : this.tsParseType(); + }); + this.expect(48); + node.expression = this.parseMaybeUnary(); + return this.finishNode(node, "TSTypeAssertion"); + } + tsParseHeritageClause(token) { + const originalStartLoc = this.state.startLoc; + const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", () => { + { + const node = this.startNode(); + node.expression = this.tsParseEntityName(1 | 2); + if (this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSExpressionWithTypeArguments"); + } + }); + if (!delimitedList.length) { + this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, { + token + }); + } + return delimitedList; + } + tsParseInterfaceDeclaration(node, properties = {}) { + if (this.hasFollowingLineBreak()) return null; + this.expectContextual(129); + if (properties.declare) node.declare = true; + if (tokenIsIdentifier(this.state.type)) { + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, 130); + } else { + node.id = null; + this.raise(TSErrors.MissingInterfaceName, this.state.startLoc); + } + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers); + if (this.eat(81)) { + node.extends = this.tsParseHeritageClause("extends"); + } + const body = this.startNode(); + body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this)); + node.body = this.finishNode(body, "TSInterfaceBody"); + return this.finishNode(node, "TSInterfaceDeclaration"); + } + tsParseTypeAliasDeclaration(node) { + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, 2); + node.typeAnnotation = this.tsInType(() => { + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers); + this.expect(29); + if (this.isContextual(114) && this.lookaheadCharCode() !== 46) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSIntrinsicKeyword"); + } + return this.tsParseType(); + }); + this.semicolon(); + return this.finishNode(node, "TSTypeAliasDeclaration"); + } + tsInTopLevelContext(cb) { + if (this.curContext() !== types.brace) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } else { + return cb(); + } + } + tsInType(cb) { + const oldInType = this.state.inType; + this.state.inType = true; + try { + return cb(); + } finally { + this.state.inType = oldInType; + } + } + tsInDisallowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = true; + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsInAllowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = false; + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsEatThenParseType(token) { + if (this.match(token)) { + return this.tsNextThenParseType(); + } + } + tsExpectThenParseType(token) { + return this.tsInType(() => { + this.expect(token); + return this.tsParseType(); + }); + } + tsNextThenParseType() { + return this.tsInType(() => { + this.next(); + return this.tsParseType(); + }); + } + tsParseEnumMember() { + const node = this.startNode(); + node.id = this.match(134) ? super.parseStringLiteral(this.state.value) : this.parseIdentifier(true); + if (this.eat(29)) { + node.initializer = super.parseMaybeAssignAllowIn(); + } + return this.finishNode(node, "TSEnumMember"); + } + tsParseEnumDeclaration(node, properties = {}) { + if (properties.const) node.const = true; + if (properties.declare) node.declare = true; + this.expectContextual(126); + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, node.const ? 8971 : 8459); + { + this.expect(5); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(8); + } + return this.finishNode(node, "TSEnumDeclaration"); + } + tsParseEnumBody() { + const node = this.startNode(); + this.expect(5); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(8); + return this.finishNode(node, "TSEnumBody"); + } + tsParseModuleBlock() { + const node = this.startNode(); + this.scope.enter(0); + this.expect(5); + super.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8); + this.scope.exit(); + return this.finishNode(node, "TSModuleBlock"); + } + tsParseModuleOrNamespaceDeclaration(node, nested = false) { + node.id = this.parseIdentifier(); + if (!nested) { + this.checkIdentifier(node.id, 1024); + } + if (this.eat(16)) { + const inner = this.startNode(); + this.tsParseModuleOrNamespaceDeclaration(inner, true); + node.body = inner; + } else { + this.scope.enter(1024); + this.prodParam.enter(0); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } + return this.finishNode(node, "TSModuleDeclaration"); + } + tsParseAmbientExternalModuleDeclaration(node) { + if (this.isContextual(112)) { + node.kind = "global"; + { + node.global = true; + } + node.id = this.parseIdentifier(); + } else if (this.match(134)) { + node.kind = "module"; + node.id = super.parseStringLiteral(this.state.value); + } else { + this.unexpected(); + } + if (this.match(5)) { + this.scope.enter(1024); + this.prodParam.enter(0); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } else { + this.semicolon(); + } + return this.finishNode(node, "TSModuleDeclaration"); + } + tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier, isExport) { + { + node.isExport = isExport || false; + } + node.id = maybeDefaultIdentifier || this.parseIdentifier(); + this.checkIdentifier(node.id, 4096); + this.expect(29); + const moduleReference = this.tsParseModuleReference(); + if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") { + this.raise(TSErrors.ImportAliasHasImportType, moduleReference); + } + node.moduleReference = moduleReference; + this.semicolon(); + return this.finishNode(node, "TSImportEqualsDeclaration"); + } + tsIsExternalModuleReference() { + return this.isContextual(119) && this.lookaheadCharCode() === 40; + } + tsParseModuleReference() { + return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(0); + } + tsParseExternalModuleReference() { + const node = this.startNode(); + this.expectContextual(119); + this.expect(10); + if (!this.match(134)) { + this.unexpected(); + } + node.expression = super.parseExprAtom(); + this.expect(11); + this.sawUnambiguousESM = true; + return this.finishNode(node, "TSExternalModuleReference"); + } + tsLookAhead(f) { + const state = this.state.clone(); + const res = f(); + this.state = state; + return res; + } + tsTryParseAndCatch(f) { + const result = this.tryParse(abort => f() || abort()); + if (result.aborted || !result.node) return; + if (result.error) this.state = result.failState; + return result.node; + } + tsTryParse(f) { + const state = this.state.clone(); + const result = f(); + if (result !== undefined && result !== false) { + return result; + } + this.state = state; + } + tsTryParseDeclare(node) { + if (this.isLineTerminator()) { + return; + } + const startType = this.state.type; + return this.tsInAmbientContext(() => { + switch (startType) { + case 68: + node.declare = true; + return super.parseFunctionStatement(node, false, false); + case 80: + node.declare = true; + return this.parseClass(node, true, false); + case 126: + return this.tsParseEnumDeclaration(node, { + declare: true + }); + case 112: + return this.tsParseAmbientExternalModuleDeclaration(node); + case 100: + if (this.state.containsEsc) { + return; + } + case 75: + case 74: + if (!this.match(75) || !this.isLookaheadContextual("enum")) { + node.declare = true; + return this.parseVarStatement(node, this.state.value, true); + } + this.expect(75); + return this.tsParseEnumDeclaration(node, { + const: true, + declare: true + }); + case 107: + if (this.isUsing()) { + this.raise(TSErrors.InvalidModifierOnUsingDeclaration, this.state.startLoc, "declare"); + node.declare = true; + return this.parseVarStatement(node, "using", true); + } + break; + case 96: + if (this.isAwaitUsing()) { + this.raise(TSErrors.InvalidModifierOnAwaitUsingDeclaration, this.state.startLoc, "declare"); + node.declare = true; + this.next(); + return this.parseVarStatement(node, "await using", true); + } + break; + case 129: + { + const result = this.tsParseInterfaceDeclaration(node, { + declare: true + }); + if (result) return result; + } + default: + if (tokenIsIdentifier(startType)) { + return this.tsParseDeclaration(node, this.state.value, true, null); + } + } + }); + } + tsTryParseExportDeclaration() { + return this.tsParseDeclaration(this.startNode(), this.state.value, true, null); + } + tsParseExpressionStatement(node, expr, decorators) { + switch (expr.name) { + case "declare": + { + const declaration = this.tsTryParseDeclare(node); + if (declaration) { + declaration.declare = true; + } + return declaration; + } + case "global": + if (this.match(5)) { + this.scope.enter(1024); + this.prodParam.enter(0); + const mod = node; + mod.kind = "global"; + { + node.global = true; + } + mod.id = expr; + mod.body = this.tsParseModuleBlock(); + this.scope.exit(); + this.prodParam.exit(); + return this.finishNode(mod, "TSModuleDeclaration"); + } + break; + default: + return this.tsParseDeclaration(node, expr.name, false, decorators); + } + } + tsParseDeclaration(node, value, next, decorators) { + switch (value) { + case "abstract": + if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) { + return this.tsParseAbstractDeclaration(node, decorators); + } + break; + case "module": + if (this.tsCheckLineTerminator(next)) { + if (this.match(134)) { + return this.tsParseAmbientExternalModuleDeclaration(node); + } else if (tokenIsIdentifier(this.state.type)) { + node.kind = "module"; + return this.tsParseModuleOrNamespaceDeclaration(node); + } + } + break; + case "namespace": + if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + node.kind = "namespace"; + return this.tsParseModuleOrNamespaceDeclaration(node); + } + break; + case "type": + if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + return this.tsParseTypeAliasDeclaration(node); + } + break; + } + } + tsCheckLineTerminator(next) { + if (next) { + if (this.hasFollowingLineBreak()) return false; + this.next(); + return true; + } + return !this.isLineTerminator(); + } + tsTryParseGenericAsyncArrowFunction(startLoc) { + if (!this.match(47)) return; + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = true; + const res = this.tsTryParseAndCatch(() => { + const node = this.startNodeAt(startLoc); + node.typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier); + super.parseFunctionParams(node); + node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation(); + this.expect(19); + return node; + }); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + if (!res) return; + return super.parseArrowExpression(res, null, true); + } + tsParseTypeArgumentsInExpression() { + if (this.reScan_lt() !== 47) return; + return this.tsParseTypeArguments(); + } + tsParseTypeArguments() { + const node = this.startNode(); + node.params = this.tsInType(() => this.tsInTopLevelContext(() => { + this.expect(47); + return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this)); + })); + if (node.params.length === 0) { + this.raise(TSErrors.EmptyTypeArguments, node); + } else if (!this.state.inType && this.curContext() === types.brace) { + this.reScan_lt_gt(); + } + this.expect(48); + return this.finishNode(node, "TSTypeParameterInstantiation"); + } + tsIsDeclarationStart() { + return tokenIsTSDeclarationStart(this.state.type); + } + isExportDefaultSpecifier() { + if (this.tsIsDeclarationStart()) return false; + return super.isExportDefaultSpecifier(); + } + parseBindingElement(flags, decorators) { + const startLoc = decorators.length ? decorators[0].loc.start : this.state.startLoc; + const modified = {}; + this.tsParseModifiers({ + allowedModifiers: ["public", "private", "protected", "override", "readonly"] + }, modified); + const accessibility = modified.accessibility; + const override = modified.override; + const readonly = modified.readonly; + if (!(flags & 4) && (accessibility || readonly || override)) { + this.raise(TSErrors.UnexpectedParameterModifier, startLoc); + } + const left = this.parseMaybeDefault(); + if (flags & 2) { + this.parseFunctionParamType(left); + } + const elt = this.parseMaybeDefault(left.loc.start, left); + if (accessibility || readonly || override) { + const pp = this.startNodeAt(startLoc); + if (decorators.length) { + pp.decorators = decorators; + } + if (accessibility) pp.accessibility = accessibility; + if (readonly) pp.readonly = readonly; + if (override) pp.override = override; + if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") { + this.raise(TSErrors.UnsupportedParameterPropertyKind, pp); + } + pp.parameter = elt; + return this.finishNode(pp, "TSParameterProperty"); + } + if (decorators.length) { + left.decorators = decorators; + } + return elt; + } + isSimpleParameter(node) { + return node.type === "TSParameterProperty" && super.isSimpleParameter(node.parameter) || super.isSimpleParameter(node); + } + tsDisallowOptionalPattern(node) { + for (const param of node.params) { + if (param.type !== "Identifier" && param.optional && !this.state.isAmbientContext) { + this.raise(TSErrors.PatternIsOptional, param); + } + } + } + setArrowFunctionParameters(node, params, trailingCommaLoc) { + super.setArrowFunctionParameters(node, params, trailingCommaLoc); + this.tsDisallowOptionalPattern(node); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(14)) { + node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14); + } + const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" || type === "ClassPrivateMethod" ? "TSDeclareMethod" : undefined; + if (bodilessType && !this.match(5) && this.isLineTerminator()) { + return this.finishNode(node, bodilessType); + } + if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) { + this.raise(TSErrors.DeclareFunctionHasImplementation, node); + if (node.declare) { + return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod); + } + } + this.tsDisallowOptionalPattern(node); + return super.parseFunctionBodyAndFinish(node, type, isMethod); + } + registerFunctionStatementId(node) { + if (!node.body && node.id) { + this.checkIdentifier(node.id, 1024); + } else { + super.registerFunctionStatementId(node); + } + } + tsCheckForInvalidTypeCasts(items) { + items.forEach(node => { + if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") { + this.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation); + } + }); + } + toReferencedList(exprList, isInParens) { + this.tsCheckForInvalidTypeCasts(exprList); + return exprList; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors); + if (node.type === "ArrayExpression") { + this.tsCheckForInvalidTypeCasts(node.elements); + } + return node; + } + parseSubscript(base, startLoc, noCalls, state) { + if (!this.hasPrecedingLineBreak() && this.match(35)) { + this.state.canStartJSXElement = false; + this.next(); + const nonNullExpression = this.startNodeAt(startLoc); + nonNullExpression.expression = base; + return this.finishNode(nonNullExpression, "TSNonNullExpression"); + } + let isOptionalCall = false; + if (this.match(18) && this.lookaheadCharCode() === 60) { + if (noCalls) { + state.stop = true; + return base; + } + state.optionalChainMember = isOptionalCall = true; + this.next(); + } + if (this.match(47) || this.match(51)) { + let missingParenErrorLoc; + const result = this.tsTryParseAndCatch(() => { + if (!noCalls && this.atPossibleAsyncArrow(base)) { + const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startLoc); + if (asyncArrowFn) { + return asyncArrowFn; + } + } + const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (!typeArguments) return; + if (isOptionalCall && !this.match(10)) { + missingParenErrorLoc = this.state.curPosition(); + return; + } + if (tokenIsTemplate(this.state.type)) { + const result = super.parseTaggedTemplateExpression(base, startLoc, state); + { + result.typeParameters = typeArguments; + } + return result; + } + if (!noCalls && this.eat(10)) { + const node = this.startNodeAt(startLoc); + node.callee = base; + node.arguments = this.parseCallExpressionArguments(); + this.tsCheckForInvalidTypeCasts(node.arguments); + { + node.typeParameters = typeArguments; + } + if (state.optionalChainMember) { + node.optional = isOptionalCall; + } + return this.finishCallExpression(node, state.optionalChainMember); + } + const tokenType = this.state.type; + if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) { + return; + } + const node = this.startNodeAt(startLoc); + node.expression = base; + { + node.typeParameters = typeArguments; + } + return this.finishNode(node, "TSInstantiationExpression"); + }); + if (missingParenErrorLoc) { + this.unexpected(missingParenErrorLoc, 10); + } + if (result) { + if (result.type === "TSInstantiationExpression") { + if (this.match(16) || this.match(18) && this.lookaheadCharCode() !== 40) { + this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, this.state.startLoc); + } + if (!this.match(16) && !this.match(18)) { + result.expression = super.stopParseSubscript(base, state); + } + } + return result; + } + } + return super.parseSubscript(base, startLoc, noCalls, state); + } + parseNewCallee(node) { + var _callee$extra; + super.parseNewCallee(node); + const { + callee + } = node; + if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) { + { + node.typeParameters = callee.typeParameters; + } + node.callee = callee.expression; + } + } + parseExprOp(left, leftStartLoc, minPrec) { + let isSatisfies; + if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && (this.isContextual(93) || (isSatisfies = this.isContextual(120)))) { + const node = this.startNodeAt(leftStartLoc); + node.expression = left; + node.typeAnnotation = this.tsInType(() => { + this.next(); + if (this.match(75)) { + if (isSatisfies) { + this.raise(Errors.UnexpectedKeyword, this.state.startLoc, { + keyword: "const" + }); + } + return this.tsParseTypeReference(); + } + return this.tsParseType(); + }); + this.finishNode(node, isSatisfies ? "TSSatisfiesExpression" : "TSAsExpression"); + this.reScan_lt_gt(); + return this.parseExprOp(node, leftStartLoc, minPrec); + } + return super.parseExprOp(left, leftStartLoc, minPrec); + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (!this.state.isAmbientContext) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } + checkImportReflection(node) { + super.checkImportReflection(node); + if (node.module && node.importKind !== "value") { + this.raise(TSErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start); + } + } + checkDuplicateExports() {} + isPotentialImportPhase(isExport) { + if (super.isPotentialImportPhase(isExport)) return true; + if (this.isContextual(130)) { + const ch = this.lookaheadCharCode(); + return isExport ? ch === 123 || ch === 42 : ch !== 61; + } + return !isExport && this.isContextual(87); + } + applyImportPhase(node, isExport, phase, loc) { + super.applyImportPhase(node, isExport, phase, loc); + if (isExport) { + node.exportKind = phase === "type" ? "type" : "value"; + } else { + node.importKind = phase === "type" || phase === "typeof" ? phase : "value"; + } + } + parseImport(node) { + if (this.match(134)) { + node.importKind = "value"; + return super.parseImport(node); + } + let importNode; + if (tokenIsIdentifier(this.state.type) && this.lookaheadCharCode() === 61) { + node.importKind = "value"; + return this.tsParseImportEqualsDeclaration(node); + } else if (this.isContextual(130)) { + const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, false); + if (this.lookaheadCharCode() === 61) { + return this.tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier); + } else { + importNode = super.parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier); + } + } else { + importNode = super.parseImport(node); + } + if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") { + this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode); + } + return importNode; + } + parseExport(node, decorators) { + if (this.match(83)) { + const nodeImportEquals = node; + this.next(); + let maybeDefaultIdentifier = null; + if (this.isContextual(130) && this.isPotentialImportPhase(false)) { + maybeDefaultIdentifier = this.parseMaybeImportPhase(nodeImportEquals, false); + } else { + nodeImportEquals.importKind = "value"; + } + const declaration = this.tsParseImportEqualsDeclaration(nodeImportEquals, maybeDefaultIdentifier, true); + { + return declaration; + } + } else if (this.eat(29)) { + const assign = node; + assign.expression = super.parseExpression(); + this.semicolon(); + this.sawUnambiguousESM = true; + return this.finishNode(assign, "TSExportAssignment"); + } else if (this.eatContextual(93)) { + const decl = node; + this.expectContextual(128); + decl.id = this.parseIdentifier(); + this.semicolon(); + return this.finishNode(decl, "TSNamespaceExportDeclaration"); + } else { + return super.parseExport(node, decorators); + } + } + isAbstractClass() { + return this.isContextual(124) && this.isLookaheadContextual("class"); + } + parseExportDefaultExpression() { + if (this.isAbstractClass()) { + const cls = this.startNode(); + this.next(); + cls.abstract = true; + return this.parseClass(cls, true, true); + } + if (this.match(129)) { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + } + return super.parseExportDefaultExpression(); + } + parseVarStatement(node, kind, allowMissingInitializer = false) { + const { + isAmbientContext + } = this.state; + const declaration = super.parseVarStatement(node, kind, allowMissingInitializer || isAmbientContext); + if (!isAmbientContext) return declaration; + if (!node.declare && (kind === "using" || kind === "await using")) { + this.raiseOverwrite(TSErrors.UsingDeclarationInAmbientContext, node, kind); + return declaration; + } + for (const { + id, + init + } of declaration.declarations) { + if (!init) continue; + if (kind === "var" || kind === "let" || !!id.typeAnnotation) { + this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init); + } else if (!isValidAmbientConstInitializer(init, this.hasPlugin("estree"))) { + this.raise(TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference, init); + } + } + return declaration; + } + parseStatementContent(flags, decorators) { + if (this.match(75) && this.isLookaheadContextual("enum")) { + const node = this.startNode(); + this.expect(75); + return this.tsParseEnumDeclaration(node, { + const: true + }); + } + if (this.isContextual(126)) { + return this.tsParseEnumDeclaration(this.startNode()); + } + if (this.isContextual(129)) { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + } + return super.parseStatementContent(flags, decorators); + } + parseAccessModifier() { + return this.tsParseModifier(["public", "protected", "private"]); + } + tsHasSomeModifiers(member, modifiers) { + return modifiers.some(modifier => { + if (tsIsAccessModifier(modifier)) { + return member.accessibility === modifier; + } + return !!member[modifier]; + }); + } + tsIsStartOfStaticBlocks() { + return this.isContextual(106) && this.lookaheadCharCode() === 123; + } + parseClassMember(classBody, member, state) { + const modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"]; + this.tsParseModifiers({ + allowedModifiers: modifiers, + disallowedModifiers: ["in", "out"], + stopOnStartOfClassStaticBlock: true, + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }, member); + const callParseClassMemberWithIsStatic = () => { + if (this.tsIsStartOfStaticBlocks()) { + this.next(); + this.next(); + if (this.tsHasSomeModifiers(member, modifiers)) { + this.raise(TSErrors.StaticBlockCannotHaveModifier, this.state.curPosition()); + } + super.parseClassStaticBlock(classBody, member); + } else { + this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static); + } + }; + if (member.declare) { + this.tsInAmbientContext(callParseClassMemberWithIsStatic); + } else { + callParseClassMemberWithIsStatic(); + } + } + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const idx = this.tsTryParseIndexSignature(member); + if (idx) { + classBody.body.push(idx); + if (member.abstract) { + this.raise(TSErrors.IndexSignatureHasAbstract, member); + } + if (member.accessibility) { + this.raise(TSErrors.IndexSignatureHasAccessibility, member, { + modifier: member.accessibility + }); + } + if (member.declare) { + this.raise(TSErrors.IndexSignatureHasDeclare, member); + } + if (member.override) { + this.raise(TSErrors.IndexSignatureHasOverride, member); + } + return; + } + if (!this.state.inAbstractClass && member.abstract) { + this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member); + } + if (member.override) { + if (!state.hadSuperClass) { + this.raise(TSErrors.OverrideNotInSubClass, member); + } + } + super.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + parsePostMemberNameModifiers(methodOrProp) { + const optional = this.eat(17); + if (optional) methodOrProp.optional = true; + if (methodOrProp.readonly && this.match(10)) { + this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp); + } + if (methodOrProp.declare && this.match(10)) { + this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp); + } + } + parseExpressionStatement(node, expr, decorators) { + const decl = expr.type === "Identifier" ? this.tsParseExpressionStatement(node, expr, decorators) : undefined; + return decl || super.parseExpressionStatement(node, expr, decorators); + } + shouldParseExportDeclaration() { + if (this.tsIsDeclarationStart()) return true; + return super.shouldParseExportDeclaration(); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (!this.match(17)) return expr; + if (this.state.maybeInArrowParameters) { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { + this.setOptionalParametersError(refExpressionErrors); + return expr; + } + } + return super.parseConditional(expr, startLoc, refExpressionErrors); + } + parseParenItem(node, startLoc) { + const newNode = super.parseParenItem(node, startLoc); + if (this.eat(17)) { + newNode.optional = true; + this.resetEndLocation(node); + } + if (this.match(14)) { + const typeCastNode = this.startNodeAt(startLoc); + typeCastNode.expression = node; + typeCastNode.typeAnnotation = this.tsParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TSTypeCastExpression"); + } + return node; + } + parseExportDeclaration(node) { + if (!this.state.isAmbientContext && this.isContextual(125)) { + return this.tsInAmbientContext(() => this.parseExportDeclaration(node)); + } + const startLoc = this.state.startLoc; + const isDeclare = this.eatContextual(125); + if (isDeclare && (this.isContextual(125) || !this.shouldParseExportDeclaration())) { + throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, this.state.startLoc); + } + const isIdentifier = tokenIsIdentifier(this.state.type); + const declaration = isIdentifier && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(node); + if (!declaration) return null; + if (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare) { + node.exportKind = "type"; + } + if (isDeclare && declaration.type !== "TSImportEqualsDeclaration") { + this.resetStartLocation(declaration, startLoc); + declaration.declare = true; + } + return declaration; + } + parseClassId(node, isStatement, optionalId, bindingType) { + if ((!isStatement || optionalId) && this.isContextual(113)) { + return; + } + super.parseClassId(node, isStatement, optionalId, node.declare ? 1024 : 8331); + const typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers); + if (typeParameters) node.typeParameters = typeParameters; + } + parseClassPropertyAnnotation(node) { + if (!node.optional) { + if (this.eat(35)) { + node.definite = true; + } else if (this.eat(17)) { + node.optional = true; + } + } + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + } + parseClassProperty(node) { + this.parseClassPropertyAnnotation(node); + if (this.state.isAmbientContext && !(node.readonly && !node.typeAnnotation) && this.match(29)) { + this.raise(TSErrors.DeclareClassFieldHasInitializer, this.state.startLoc); + } + if (node.abstract && this.match(29)) { + const { + key + } = node; + this.raise(TSErrors.AbstractPropertyHasInitializer, this.state.startLoc, { + propertyName: key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]` + }); + } + return super.parseClassProperty(node); + } + parseClassPrivateProperty(node) { + if (node.abstract) { + this.raise(TSErrors.PrivateElementHasAbstract, node); + } + if (node.accessibility) { + this.raise(TSErrors.PrivateElementHasAccessibility, node, { + modifier: node.accessibility + }); + } + this.parseClassPropertyAnnotation(node); + return super.parseClassPrivateProperty(node); + } + parseClassAccessorProperty(node) { + this.parseClassPropertyAnnotation(node); + if (node.optional) { + this.raise(TSErrors.AccessorCannotBeOptional, node); + } + return super.parseClassAccessorProperty(node); + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters && isConstructor) { + this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters); + } + const { + declare = false, + kind + } = method; + if (declare && (kind === "get" || kind === "set")) { + this.raise(TSErrors.DeclareAccessor, method, { + kind + }); + } + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + declareClassPrivateMethodInScope(node, kind) { + if (node.type === "TSDeclareMethod") return; + if (node.type === "MethodDefinition" && node.value.body == null) { + return; + } + super.declareClassPrivateMethodInScope(node, kind); + } + parseClassSuper(node) { + super.parseClassSuper(node); + if (node.superClass && (this.match(47) || this.match(51))) { + { + node.superTypeParameters = this.tsParseTypeArgumentsInExpression(); + } + } + if (this.eatContextual(113)) { + node.implements = this.tsParseHeritageClause("implements"); + } + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) prop.typeParameters = typeParameters; + return super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + } + parseFunctionParams(node, isConstructor) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) node.typeParameters = typeParameters; + super.parseFunctionParams(node, isConstructor); + } + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + if (decl.id.type === "Identifier" && !this.hasPrecedingLineBreak() && this.eat(35)) { + decl.definite = true; + } + const type = this.tsTryParseTypeAnnotation(); + if (type) { + decl.id.typeAnnotation = type; + this.resetEndLocation(decl.id); + } + } + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(14)) { + node.returnType = this.tsParseTypeAnnotation(); + } + return super.parseAsyncArrowFromCallExpression(node, call); + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2; + let state; + let jsx; + let typeCast; + if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const currentContext = context[context.length - 1]; + if (currentContext === types.j_oTag || currentContext === types.j_expr) { + context.pop(); + } + } + if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) { + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + if (!state || state === this.state) state = this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _expr$extra, _typeParameters; + typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier); + const expr = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + abort(); + } + if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) { + this.resetStartLocationFromNode(expr, typeParameters); + } + expr.typeParameters = typeParameters; + return expr; + }, state); + if (!arrow.error && !arrow.aborted) { + if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); + return arrow.node; + } + if (!jsx) { + assert(!this.hasPlugin("jsx")); + typeCast = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!typeCast.error) return typeCast.node; + } + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + if (arrow.node) { + this.state = arrow.failState; + if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); + return arrow.node; + } + if ((_typeCast = typeCast) != null && _typeCast.node) { + this.state = typeCast.failState; + return typeCast.node; + } + throw ((_jsx3 = jsx) == null ? void 0 : _jsx3.error) || arrow.error || ((_typeCast2 = typeCast) == null ? void 0 : _typeCast2.error); + } + reportReservedArrowTypeParam(node) { + var _node$extra2; + if (node.params.length === 1 && !node.params[0].constraint && !((_node$extra2 = node.extra) != null && _node$extra2.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + this.raise(TSErrors.ReservedArrowTypeParam, node); + } + } + parseMaybeUnary(refExpressionErrors, sawUnary) { + if (!this.hasPlugin("jsx") && this.match(47)) { + return this.tsParseTypeAssertion(); + } + return super.parseMaybeUnary(refExpressionErrors, sawUnary); + } + parseArrow(node) { + if (this.match(14)) { + const result = this.tryParse(abort => { + const returnType = this.tsParseTypeOrTypePredicateAnnotation(14); + if (this.canInsertSemicolon() || !this.match(19)) abort(); + return returnType; + }); + if (result.aborted) return; + if (!result.thrown) { + if (result.error) this.state = result.failState; + node.returnType = result.node; + } + } + return super.parseArrow(node); + } + parseFunctionParamType(param) { + if (this.eat(17)) { + param.optional = true; + } + const type = this.tsTryParseTypeAnnotation(); + if (type) param.typeAnnotation = type; + this.resetEndLocation(param); + return param; + } + isAssignable(node, isBinding) { + switch (node.type) { + case "TSTypeCastExpression": + return this.isAssignable(node.expression, isBinding); + case "TSParameterProperty": + return true; + default: + return super.isAssignable(node, isBinding); + } + } + toAssignable(node, isLHS = false) { + switch (node.type) { + case "ParenthesizedExpression": + this.toAssignableParenthesizedExpression(node, isLHS); + break; + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + if (isLHS) { + this.expressionScope.recordArrowParameterBindingError(TSErrors.UnexpectedTypeCastInParameter, node); + } else { + this.raise(TSErrors.UnexpectedTypeCastInParameter, node); + } + this.toAssignable(node.expression, isLHS); + break; + case "AssignmentExpression": + if (!isLHS && node.left.type === "TSTypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } + default: + super.toAssignable(node, isLHS); + } + } + toAssignableParenthesizedExpression(node, isLHS) { + switch (node.expression.type) { + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + case "ParenthesizedExpression": + this.toAssignable(node.expression, isLHS); + break; + default: + super.toAssignable(node, isLHS); + } + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + case "TSNonNullExpression": + this.checkToRestConversion(node.expression, false); + break; + default: + super.checkToRestConversion(node, allowPattern); + } + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + switch (type) { + case "TSTypeCastExpression": + return true; + case "TSParameterProperty": + return "parameter"; + case "TSNonNullExpression": + return "expression"; + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + return (binding !== 64 || !isUnparenthesizedInAssign) && ["expression", true]; + default: + return super.isValidLVal(type, isUnparenthesizedInAssign, binding); + } + } + parseBindingAtom() { + if (this.state.type === 78) { + return this.parseIdentifier(true); + } + return super.parseBindingAtom(); + } + parseMaybeDecoratorArguments(expr, startLoc) { + if (this.match(47) || this.match(51)) { + const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (this.match(10)) { + const call = super.parseMaybeDecoratorArguments(expr, startLoc); + { + call.typeParameters = typeArguments; + } + return call; + } + this.unexpected(null, 10); + } + return super.parseMaybeDecoratorArguments(expr, startLoc); + } + checkCommaAfterRest(close) { + if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) { + this.next(); + return false; + } + return super.checkCommaAfterRest(close); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(35) || this.match(14) || super.isClassProperty(); + } + parseMaybeDefault(startLoc, left) { + const node = super.parseMaybeDefault(startLoc, left); + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation); + } + return node; + } + getTokenFromCode(code) { + if (this.state.inType) { + if (code === 62) { + this.finishOp(48, 1); + return; + } + if (code === 60) { + this.finishOp(47, 1); + return; + } + } + super.getTokenFromCode(code); + } + reScan_lt_gt() { + const { + type + } = this.state; + if (type === 47) { + this.state.pos -= 1; + this.readToken_lt(); + } else if (type === 48) { + this.state.pos -= 1; + this.readToken_gt(); + } + } + reScan_lt() { + const { + type + } = this.state; + if (type === 51) { + this.state.pos -= 2; + this.finishOp(47, 1); + return 47; + } + return type; + } + toAssignableListItem(exprList, index, isLHS) { + const node = exprList[index]; + if (node.type === "TSTypeCastExpression") { + exprList[index] = this.typeCastToParameter(node); + } + super.toAssignableListItem(exprList, index, isLHS); + } + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); + return node.expression; + } + shouldParseArrow(params) { + if (this.match(14)) { + return params.every(expr => this.isAssignable(expr, true)); + } + return super.shouldParseArrow(params); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + canHaveLeadingDecorator() { + return super.canHaveLeadingDecorator() || this.isAbstractClass(); + } + jsxParseOpeningElementAfterName(node) { + if (this.match(47) || this.match(51)) { + const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression()); + if (typeArguments) { + { + node.typeParameters = typeArguments; + } + } + } + return super.jsxParseOpeningElementAfterName(node); + } + getGetterSetterExpectedParamCount(method) { + const baseCount = super.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + const firstParam = params[0]; + const hasContextParam = firstParam && this.isThisParam(firstParam); + return hasContextParam ? baseCount + 1 : baseCount; + } + parseCatchClauseParam() { + const param = super.parseCatchClauseParam(); + const type = this.tsTryParseTypeAnnotation(); + if (type) { + param.typeAnnotation = type; + this.resetEndLocation(param); + } + return param; + } + tsInAmbientContext(cb) { + const { + isAmbientContext: oldIsAmbientContext, + strict: oldStrict + } = this.state; + this.state.isAmbientContext = true; + this.state.strict = false; + try { + return cb(); + } finally { + this.state.isAmbientContext = oldIsAmbientContext; + this.state.strict = oldStrict; + } + } + parseClass(node, isStatement, optionalId) { + const oldInAbstractClass = this.state.inAbstractClass; + this.state.inAbstractClass = !!node.abstract; + try { + return super.parseClass(node, isStatement, optionalId); + } finally { + this.state.inAbstractClass = oldInAbstractClass; + } + } + tsParseAbstractDeclaration(node, decorators) { + if (this.match(80)) { + node.abstract = true; + return this.maybeTakeDecorators(decorators, this.parseClass(node, true, false)); + } else if (this.isContextual(129)) { + if (!this.hasFollowingLineBreak()) { + node.abstract = true; + this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifier, node); + return this.tsParseInterfaceDeclaration(node); + } + } else { + this.unexpected(null, 80); + } + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) { + const method = super.parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + if (method.abstract || method.type === "TSAbstractMethodDefinition") { + const hasEstreePlugin = this.hasPlugin("estree"); + const methodFn = hasEstreePlugin ? method.value : method; + if (methodFn.body) { + const { + key + } = method; + this.raise(TSErrors.AbstractMethodHasImplementation, method, { + methodName: key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]` + }); + } + } + return method; + } + tsParseTypeParameterName() { + const typeName = this.parseIdentifier(); + return typeName.name; + } + shouldParseAsAmbientContext() { + return !!this.getPluginOption("typescript", "dts"); + } + parse() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + return super.parse(); + } + getExpression() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + return super.getExpression(); + } + parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { + if (!isString && isMaybeTypeOnly) { + this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport); + return this.finishNode(node, "ExportSpecifier"); + } + node.exportKind = "value"; + return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly); + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + if (!importedIsString && isMaybeTypeOnly) { + this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport); + return this.finishNode(specifier, "ImportSpecifier"); + } + specifier.importKind = "value"; + return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, isInTypeOnlyImport ? 4098 : 4096); + } + parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) { + const leftOfAsKey = isImport ? "imported" : "local"; + const rightOfAsKey = isImport ? "local" : "exported"; + let leftOfAs = node[leftOfAsKey]; + let rightOfAs; + let hasTypeSpecifier = false; + let canParseAsKeyword = true; + const loc = leftOfAs.loc.start; + if (this.isContextual(93)) { + const firstAs = this.parseIdentifier(); + if (this.isContextual(93)) { + const secondAs = this.parseIdentifier(); + if (tokenIsKeywordOrIdentifier(this.state.type)) { + hasTypeSpecifier = true; + leftOfAs = firstAs; + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + canParseAsKeyword = false; + } else { + rightOfAs = secondAs; + canParseAsKeyword = false; + } + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + canParseAsKeyword = false; + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + } else { + hasTypeSpecifier = true; + leftOfAs = firstAs; + } + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + hasTypeSpecifier = true; + if (isImport) { + leftOfAs = this.parseIdentifier(true); + if (!this.isContextual(93)) { + this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true); + } + } else { + leftOfAs = this.parseModuleExportName(); + } + } + if (hasTypeSpecifier && isInTypeOnlyImportExport) { + this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, loc); + } + node[leftOfAsKey] = leftOfAs; + node[rightOfAsKey] = rightOfAs; + const kindKey = isImport ? "importKind" : "exportKind"; + node[kindKey] = hasTypeSpecifier ? "type" : "value"; + if (canParseAsKeyword && this.eatContextual(93)) { + node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + } + if (!node[rightOfAsKey]) { + node[rightOfAsKey] = this.cloneIdentifier(node[leftOfAsKey]); + } + if (isImport) { + this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? 4098 : 4096); + } + } + fillOptionalPropertiesForTSESLint(node) { + var _node$directive, _node$decorators, _node$optional, _node$typeAnnotation, _node$accessibility, _node$decorators2, _node$override, _node$readonly, _node$static, _node$declare, _node$returnType, _node$typeParameters, _node$optional2, _node$optional3, _node$accessibility2, _node$readonly2, _node$static2, _node$declare2, _node$definite, _node$readonly3, _node$typeAnnotation2, _node$accessibility3, _node$decorators3, _node$override2, _node$optional4, _node$id, _node$abstract, _node$declare3, _node$decorators4, _node$implements, _node$superTypeArgume, _node$typeParameters2, _node$declare4, _node$definite2, _node$const, _node$declare5, _node$computed, _node$qualifier, _node$options, _node$declare6, _node$extends, _node$declare7, _node$global, _node$const2, _node$in, _node$out; + switch (node.type) { + case "ExpressionStatement": + (_node$directive = node.directive) != null ? _node$directive : node.directive = undefined; + return; + case "RestElement": + node.value = undefined; + case "Identifier": + case "ArrayPattern": + case "AssignmentPattern": + case "ObjectPattern": + (_node$decorators = node.decorators) != null ? _node$decorators : node.decorators = []; + (_node$optional = node.optional) != null ? _node$optional : node.optional = false; + (_node$typeAnnotation = node.typeAnnotation) != null ? _node$typeAnnotation : node.typeAnnotation = undefined; + return; + case "TSParameterProperty": + (_node$accessibility = node.accessibility) != null ? _node$accessibility : node.accessibility = undefined; + (_node$decorators2 = node.decorators) != null ? _node$decorators2 : node.decorators = []; + (_node$override = node.override) != null ? _node$override : node.override = false; + (_node$readonly = node.readonly) != null ? _node$readonly : node.readonly = false; + (_node$static = node.static) != null ? _node$static : node.static = false; + return; + case "TSEmptyBodyFunctionExpression": + node.body = null; + case "TSDeclareFunction": + case "FunctionDeclaration": + case "FunctionExpression": + case "ClassMethod": + case "ClassPrivateMethod": + (_node$declare = node.declare) != null ? _node$declare : node.declare = false; + (_node$returnType = node.returnType) != null ? _node$returnType : node.returnType = undefined; + (_node$typeParameters = node.typeParameters) != null ? _node$typeParameters : node.typeParameters = undefined; + return; + case "Property": + (_node$optional2 = node.optional) != null ? _node$optional2 : node.optional = false; + return; + case "TSMethodSignature": + case "TSPropertySignature": + (_node$optional3 = node.optional) != null ? _node$optional3 : node.optional = false; + case "TSIndexSignature": + (_node$accessibility2 = node.accessibility) != null ? _node$accessibility2 : node.accessibility = undefined; + (_node$readonly2 = node.readonly) != null ? _node$readonly2 : node.readonly = false; + (_node$static2 = node.static) != null ? _node$static2 : node.static = false; + return; + case "TSAbstractPropertyDefinition": + case "PropertyDefinition": + case "TSAbstractAccessorProperty": + case "AccessorProperty": + (_node$declare2 = node.declare) != null ? _node$declare2 : node.declare = false; + (_node$definite = node.definite) != null ? _node$definite : node.definite = false; + (_node$readonly3 = node.readonly) != null ? _node$readonly3 : node.readonly = false; + (_node$typeAnnotation2 = node.typeAnnotation) != null ? _node$typeAnnotation2 : node.typeAnnotation = undefined; + case "TSAbstractMethodDefinition": + case "MethodDefinition": + (_node$accessibility3 = node.accessibility) != null ? _node$accessibility3 : node.accessibility = undefined; + (_node$decorators3 = node.decorators) != null ? _node$decorators3 : node.decorators = []; + (_node$override2 = node.override) != null ? _node$override2 : node.override = false; + (_node$optional4 = node.optional) != null ? _node$optional4 : node.optional = false; + return; + case "ClassExpression": + (_node$id = node.id) != null ? _node$id : node.id = null; + case "ClassDeclaration": + (_node$abstract = node.abstract) != null ? _node$abstract : node.abstract = false; + (_node$declare3 = node.declare) != null ? _node$declare3 : node.declare = false; + (_node$decorators4 = node.decorators) != null ? _node$decorators4 : node.decorators = []; + (_node$implements = node.implements) != null ? _node$implements : node.implements = []; + (_node$superTypeArgume = node.superTypeArguments) != null ? _node$superTypeArgume : node.superTypeArguments = undefined; + (_node$typeParameters2 = node.typeParameters) != null ? _node$typeParameters2 : node.typeParameters = undefined; + return; + case "TSTypeAliasDeclaration": + case "VariableDeclaration": + (_node$declare4 = node.declare) != null ? _node$declare4 : node.declare = false; + return; + case "VariableDeclarator": + (_node$definite2 = node.definite) != null ? _node$definite2 : node.definite = false; + return; + case "TSEnumDeclaration": + (_node$const = node.const) != null ? _node$const : node.const = false; + (_node$declare5 = node.declare) != null ? _node$declare5 : node.declare = false; + return; + case "TSEnumMember": + (_node$computed = node.computed) != null ? _node$computed : node.computed = false; + return; + case "TSImportType": + (_node$qualifier = node.qualifier) != null ? _node$qualifier : node.qualifier = null; + (_node$options = node.options) != null ? _node$options : node.options = null; + return; + case "TSInterfaceDeclaration": + (_node$declare6 = node.declare) != null ? _node$declare6 : node.declare = false; + (_node$extends = node.extends) != null ? _node$extends : node.extends = []; + return; + case "TSModuleDeclaration": + (_node$declare7 = node.declare) != null ? _node$declare7 : node.declare = false; + (_node$global = node.global) != null ? _node$global : node.global = node.kind === "global"; + return; + case "TSTypeParameter": + (_node$const2 = node.const) != null ? _node$const2 : node.const = false; + (_node$in = node.in) != null ? _node$in : node.in = false; + (_node$out = node.out) != null ? _node$out : node.out = false; + return; + } + } + }; + function isPossiblyLiteralEnum(expression) { + if (expression.type !== "MemberExpression") return false; + const { + computed, + property + } = expression; + if (computed && property.type !== "StringLiteral" && (property.type !== "TemplateLiteral" || property.expressions.length > 0)) { + return false; + } + return isUncomputedMemberExpressionChain(expression.object); + } + function isValidAmbientConstInitializer(expression, estree) { + var _expression$extra; + const { + type + } = expression; + if ((_expression$extra = expression.extra) != null && _expression$extra.parenthesized) { + return false; + } + if (estree) { + if (type === "Literal") { + const { + value + } = expression; + if (typeof value === "string" || typeof value === "boolean") { + return true; + } + } + } else { + if (type === "StringLiteral" || type === "BooleanLiteral") { + return true; + } + } + if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) { + return true; + } + if (type === "TemplateLiteral" && expression.expressions.length === 0) { + return true; + } + if (isPossiblyLiteralEnum(expression)) { + return true; + } + return false; + } + function isNumber(expression, estree) { + if (estree) { + return expression.type === "Literal" && (typeof expression.value === "number" || "bigint" in expression); + } + return expression.type === "NumericLiteral" || expression.type === "BigIntLiteral"; + } + function isNegativeNumber(expression, estree) { + if (expression.type === "UnaryExpression") { + const { + operator, + argument + } = expression; + if (operator === "-" && isNumber(argument, estree)) { + return true; + } + } + return false; + } + function isUncomputedMemberExpressionChain(expression) { + if (expression.type === "Identifier") return true; + if (expression.type !== "MemberExpression" || expression.computed) { + return false; + } + return isUncomputedMemberExpressionChain(expression.object); + } + const PlaceholderErrors = ParseErrorEnum`placeholders`({ + ClassNameIsRequired: "A class name is required.", + UnexpectedSpace: "Unexpected space in placeholder." + }); + var placeholders = superClass => class PlaceholdersParserMixin extends superClass { + parsePlaceholder(expectedNode) { + if (this.match(133)) { + const node = this.startNode(); + this.next(); + this.assertNoSpace(); + node.name = super.parseIdentifier(true); + this.assertNoSpace(); + this.expect(133); + return this.finishPlaceholder(node, expectedNode); + } + } + finishPlaceholder(node, expectedNode) { + let placeholder = node; + if (!placeholder.expectedNode || !placeholder.type) { + placeholder = this.finishNode(placeholder, "Placeholder"); + } + placeholder.expectedNode = expectedNode; + return placeholder; + } + getTokenFromCode(code) { + if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) { + this.finishOp(133, 2); + } else { + super.getTokenFromCode(code); + } + } + parseExprAtom(refExpressionErrors) { + return this.parsePlaceholder("Expression") || super.parseExprAtom(refExpressionErrors); + } + parseIdentifier(liberal) { + return this.parsePlaceholder("Identifier") || super.parseIdentifier(liberal); + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word !== undefined) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } + cloneIdentifier(node) { + const cloned = super.cloneIdentifier(node); + if (cloned.type === "Placeholder") { + cloned.expectedNode = node.expectedNode; + } + return cloned; + } + cloneStringLiteral(node) { + if (node.type === "Placeholder") { + return this.cloneIdentifier(node); + } + return super.cloneStringLiteral(node); + } + parseBindingAtom() { + return this.parsePlaceholder("Pattern") || super.parseBindingAtom(); + } + isValidLVal(type, isParenthesized, binding) { + return type === "Placeholder" || super.isValidLVal(type, isParenthesized, binding); + } + toAssignable(node, isLHS) { + if (node && node.type === "Placeholder" && node.expectedNode === "Expression") { + node.expectedNode = "Pattern"; + } else { + super.toAssignable(node, isLHS); + } + } + chStartsBindingIdentifier(ch, pos) { + if (super.chStartsBindingIdentifier(ch, pos)) { + return true; + } + const next = this.nextTokenStart(); + if (this.input.charCodeAt(next) === 37 && this.input.charCodeAt(next + 1) === 37) { + return true; + } + return false; + } + verifyBreakContinue(node, isBreak) { + if (node.label && node.label.type === "Placeholder") return; + super.verifyBreakContinue(node, isBreak); + } + parseExpressionStatement(node, expr) { + var _expr$extra; + if (expr.type !== "Placeholder" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + return super.parseExpressionStatement(node, expr); + } + if (this.match(14)) { + const stmt = node; + stmt.label = this.finishPlaceholder(expr, "Identifier"); + this.next(); + stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration(); + return this.finishNode(stmt, "LabeledStatement"); + } + this.semicolon(); + const stmtPlaceholder = node; + stmtPlaceholder.name = expr.name; + return this.finishPlaceholder(stmtPlaceholder, "Statement"); + } + parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) { + return this.parsePlaceholder("BlockStatement") || super.parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse); + } + parseFunctionId(requireId) { + return this.parsePlaceholder("Identifier") || super.parseFunctionId(requireId); + } + parseClass(node, isStatement, optionalId) { + const type = isStatement ? "ClassDeclaration" : "ClassExpression"; + this.next(); + const oldStrict = this.state.strict; + const placeholder = this.parsePlaceholder("Identifier"); + if (placeholder) { + if (this.match(81) || this.match(133) || this.match(5)) { + node.id = placeholder; + } else if (optionalId || !isStatement) { + node.id = null; + node.body = this.finishPlaceholder(placeholder, "ClassBody"); + return this.finishNode(node, type); + } else { + throw this.raise(PlaceholderErrors.ClassNameIsRequired, this.state.startLoc); + } + } else { + this.parseClassId(node, isStatement, optionalId); + } + super.parseClassSuper(node); + node.body = this.parsePlaceholder("ClassBody") || super.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, type); + } + parseExport(node, decorators) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseExport(node, decorators); + const node2 = node; + if (!this.isContextual(98) && !this.match(12)) { + node2.specifiers = []; + node2.source = null; + node2.declaration = this.finishPlaceholder(placeholder, "Declaration"); + return this.finishNode(node2, "ExportNamedDeclaration"); + } + this.expectPlugin("exportDefaultFrom"); + const specifier = this.startNode(); + specifier.exported = placeholder; + node2.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return super.parseExport(node2, decorators); + } + isExportDefaultSpecifier() { + if (this.match(65)) { + const next = this.nextTokenStart(); + if (this.isUnparsedContextual(next, "from")) { + if (this.input.startsWith(tokenLabelName(133), this.nextTokenStartSince(next + 4))) { + return true; + } + } + } + return super.isExportDefaultSpecifier(); + } + maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) { + var _specifiers; + if ((_specifiers = node.specifiers) != null && _specifiers.length) { + return true; + } + return super.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier); + } + checkExport(node) { + const { + specifiers + } = node; + if (specifiers != null && specifiers.length) { + node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder"); + } + super.checkExport(node); + node.specifiers = specifiers; + } + parseImport(node) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseImport(node); + node.specifiers = []; + if (!this.isContextual(98) && !this.match(12)) { + node.source = this.finishPlaceholder(placeholder, "StringLiteral"); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + const specifier = this.startNodeAtNode(placeholder); + specifier.local = placeholder; + node.specifiers.push(this.finishNode(specifier, "ImportDefaultSpecifier")); + if (this.eat(12)) { + const hasStarImport = this.maybeParseStarImportSpecifier(node); + if (!hasStarImport) this.parseNamedImportSpecifiers(node); + } + this.expectContextual(98); + node.source = this.parseImportSource(); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + parseImportSource() { + return this.parsePlaceholder("StringLiteral") || super.parseImportSource(); + } + assertNoSpace() { + if (this.state.start > this.offsetToSourcePos(this.state.lastTokEndLoc.index)) { + this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc); + } + } + }; + var v8intrinsic = superClass => class V8IntrinsicMixin extends superClass { + parseV8Intrinsic() { + if (this.match(54)) { + const v8IntrinsicStartLoc = this.state.startLoc; + const node = this.startNode(); + this.next(); + if (tokenIsIdentifier(this.state.type)) { + const name = this.parseIdentifierName(); + const identifier = this.createIdentifier(node, name); + this.castNodeTo(identifier, "V8IntrinsicIdentifier"); + if (this.match(10)) { + return identifier; + } + } + this.unexpected(v8IntrinsicStartLoc); + } + } + parseExprAtom(refExpressionErrors) { + return this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors); + } + }; + const PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"]; + const TOPIC_TOKENS = ["^^", "@@", "^", "%", "#"]; + function validatePlugins(pluginsMap) { + if (pluginsMap.has("decorators")) { + if (pluginsMap.has("decorators-legacy")) { + throw new Error("Cannot use the decorators and decorators-legacy plugin together"); + } + const decoratorsBeforeExport = pluginsMap.get("decorators").decoratorsBeforeExport; + if (decoratorsBeforeExport != null && typeof decoratorsBeforeExport !== "boolean") { + throw new Error("'decoratorsBeforeExport' must be a boolean, if specified."); + } + const allowCallParenthesized = pluginsMap.get("decorators").allowCallParenthesized; + if (allowCallParenthesized != null && typeof allowCallParenthesized !== "boolean") { + throw new Error("'allowCallParenthesized' must be a boolean."); + } + } + if (pluginsMap.has("flow") && pluginsMap.has("typescript")) { + throw new Error("Cannot combine flow and typescript plugins."); + } + if (pluginsMap.has("placeholders") && pluginsMap.has("v8intrinsic")) { + throw new Error("Cannot combine placeholders and v8intrinsic plugins."); + } + if (pluginsMap.has("pipelineOperator")) { + var _pluginsMap$get2; + const proposal = pluginsMap.get("pipelineOperator").proposal; + if (!PIPELINE_PROPOSALS.includes(proposal)) { + const proposalList = PIPELINE_PROPOSALS.map(p => `"${p}"`).join(", "); + throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${proposalList}.`); + } + if (proposal === "hack") { + if (pluginsMap.has("placeholders")) { + throw new Error("Cannot combine placeholders plugin and Hack-style pipes."); + } + if (pluginsMap.has("v8intrinsic")) { + throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes."); + } + const topicToken = pluginsMap.get("pipelineOperator").topicToken; + if (!TOPIC_TOKENS.includes(topicToken)) { + const tokenList = TOPIC_TOKENS.map(t => `"${t}"`).join(", "); + throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${tokenList}.`); + } + { + var _pluginsMap$get; + if (topicToken === "#" && ((_pluginsMap$get = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get.syntaxType) === "hash") { + throw new Error(`Plugin conflict between \`["pipelineOperator", { proposal: "hack", topicToken: "#" }]\` and \`${JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")])}\`.`); + } + } + } else if (proposal === "smart" && ((_pluginsMap$get2 = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get2.syntaxType) === "hash") { + throw new Error(`Plugin conflict between \`["pipelineOperator", { proposal: "smart" }]\` and \`${JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")])}\`.`); + } + } + if (pluginsMap.has("moduleAttributes")) { + { + if (pluginsMap.has("deprecatedImportAssert") || pluginsMap.has("importAssertions")) { + throw new Error("Cannot combine importAssertions, deprecatedImportAssert and moduleAttributes plugins."); + } + const moduleAttributesVersionPluginOption = pluginsMap.get("moduleAttributes").version; + if (moduleAttributesVersionPluginOption !== "may-2020") { + throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'."); + } + } + } + if (pluginsMap.has("importAssertions")) { + if (pluginsMap.has("deprecatedImportAssert")) { + throw new Error("Cannot combine importAssertions and deprecatedImportAssert plugins."); + } + } + if (!pluginsMap.has("deprecatedImportAssert") && pluginsMap.has("importAttributes") && pluginsMap.get("importAttributes").deprecatedAssertSyntax) { + { + pluginsMap.set("deprecatedImportAssert", {}); + } + } + if (pluginsMap.has("recordAndTuple")) { + { + const syntaxType = pluginsMap.get("recordAndTuple").syntaxType; + if (syntaxType != null) { + const RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"]; + if (!RECORD_AND_TUPLE_SYNTAX_TYPES.includes(syntaxType)) { + throw new Error("The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(", ")); + } + } + } + } + if (pluginsMap.has("asyncDoExpressions") && !pluginsMap.has("doExpressions")) { + const error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins."); + error.missingPlugins = "doExpressions"; + throw error; + } + if (pluginsMap.has("optionalChainingAssign") && pluginsMap.get("optionalChainingAssign").version !== "2023-07") { + throw new Error("The 'optionalChainingAssign' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is '2023-07'."); + } + if (pluginsMap.has("discardBinding") && pluginsMap.get("discardBinding").syntaxType !== "void") { + throw new Error("The 'discardBinding' plugin requires a 'syntaxType' option. Currently the only supported value is 'void'."); + } + } + const mixinPlugins = { + estree, + jsx, + flow, + typescript, + v8intrinsic, + placeholders + }; + const mixinPluginNames = Object.keys(mixinPlugins); + class ExpressionParser extends LValParser { + checkProto(prop, isRecord, sawProto, refExpressionErrors) { + if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) { + return sawProto; + } + const key = prop.key; + const name = key.type === "Identifier" ? key.name : key.value; + if (name === "__proto__") { + if (isRecord) { + this.raise(Errors.RecordNoProto, key); + return true; + } + if (sawProto) { + if (refExpressionErrors) { + if (refExpressionErrors.doubleProtoLoc === null) { + refExpressionErrors.doubleProtoLoc = key.loc.start; + } + } else { + this.raise(Errors.DuplicateProto, key); + } + } + return true; + } + return sawProto; + } + shouldExitDescending(expr, potentialArrowAt) { + return expr.type === "ArrowFunctionExpression" && this.offsetToSourcePos(expr.start) === potentialArrowAt; + } + getExpression() { + this.enterInitialScopes(); + this.nextToken(); + if (this.match(140)) { + throw this.raise(Errors.ParseExpressionEmptyInput, this.state.startLoc); + } + const expr = this.parseExpression(); + if (!this.match(140)) { + throw this.raise(Errors.ParseExpressionExpectsEOF, this.state.startLoc, { + unexpected: this.input.codePointAt(this.state.start) + }); + } + this.finalizeRemainingComments(); + expr.comments = this.comments; + expr.errors = this.state.errors; + if (this.optionFlags & 256) { + expr.tokens = this.tokens; + } + return expr; + } + parseExpression(disallowIn, refExpressionErrors) { + if (disallowIn) { + return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + parseExpressionBase(refExpressionErrors) { + const startLoc = this.state.startLoc; + const expr = this.parseMaybeAssign(refExpressionErrors); + if (this.match(12)) { + const node = this.startNodeAt(startLoc); + node.expressions = [expr]; + while (this.eat(12)) { + node.expressions.push(this.parseMaybeAssign(refExpressionErrors)); + } + this.toReferencedList(node.expressions); + return this.finishNode(node, "SequenceExpression"); + } + return expr; + } + parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) { + return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) { + return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + setOptionalParametersError(refExpressionErrors) { + refExpressionErrors.optionalParametersLoc = this.state.startLoc; + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + const startLoc = this.state.startLoc; + const isYield = this.isContextual(108); + if (isYield) { + if (this.prodParam.hasYield) { + this.next(); + let left = this.parseYield(startLoc); + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startLoc); + } + return left; + } + } + let ownExpressionErrors; + if (refExpressionErrors) { + ownExpressionErrors = false; + } else { + refExpressionErrors = new ExpressionErrors(); + ownExpressionErrors = true; + } + const { + type + } = this.state; + if (type === 10 || tokenIsIdentifier(type)) { + this.state.potentialArrowAt = this.state.start; + } + let left = this.parseMaybeConditional(refExpressionErrors); + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startLoc); + } + if (tokenIsAssignment(this.state.type)) { + const node = this.startNodeAt(startLoc); + const operator = this.state.value; + node.operator = operator; + if (this.match(29)) { + this.toAssignable(left, true); + node.left = left; + const startIndex = startLoc.index; + if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startIndex) { + refExpressionErrors.doubleProtoLoc = null; + } + if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startIndex) { + refExpressionErrors.shorthandAssignLoc = null; + } + if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startIndex) { + this.checkDestructuringPrivate(refExpressionErrors); + refExpressionErrors.privateKeyLoc = null; + } + if (refExpressionErrors.voidPatternLoc != null && refExpressionErrors.voidPatternLoc.index >= startIndex) { + refExpressionErrors.voidPatternLoc = null; + } + } else { + node.left = left; + } + this.next(); + node.right = this.parseMaybeAssign(); + this.checkLVal(left, this.finishNode(node, "AssignmentExpression")); + return node; + } else if (ownExpressionErrors) { + this.checkExpressionErrors(refExpressionErrors, true); + } + if (isYield) { + const { + type + } = this.state; + const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54); + if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) { + this.raiseOverwrite(Errors.YieldNotInGeneratorFunction, startLoc); + return this.parseYield(startLoc); + } + } + return left; + } + parseMaybeConditional(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprOps(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseConditional(expr, startLoc, refExpressionErrors); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (this.eat(17)) { + const node = this.startNodeAt(startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssignAllowIn(); + this.expect(14); + node.alternate = this.parseMaybeAssign(); + return this.finishNode(node, "ConditionalExpression"); + } + return expr; + } + parseMaybeUnaryOrPrivate(refExpressionErrors) { + return this.match(139) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors); + } + parseExprOps(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseExprOp(expr, startLoc, -1); + } + parseExprOp(left, leftStartLoc, minPrec) { + if (this.isPrivateName(left)) { + const value = this.getPrivateNameSV(left); + if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) { + this.raise(Errors.PrivateInExpectedIn, left, { + identifierName: value + }); + } + this.classScope.usePrivateName(value, left.loc.start); + } + const op = this.state.type; + if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) { + let prec = tokenOperatorPrecedence(op); + if (prec > minPrec) { + if (op === 39) { + this.expectPlugin("pipelineOperator"); + if (this.state.inFSharpPipelineDirectBody) { + return left; + } + this.checkPipelineAtInfixOperator(left, leftStartLoc); + } + const node = this.startNodeAt(leftStartLoc); + node.left = left; + node.operator = this.state.value; + const logical = op === 41 || op === 42; + const coalesce = op === 40; + if (coalesce) { + prec = tokenOperatorPrecedence(42); + } + this.next(); + if (op === 39 && this.hasPlugin(["pipelineOperator", { + proposal: "minimal" + }])) { + if (this.state.type === 96 && this.prodParam.hasAwait) { + throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, this.state.startLoc); + } + } + node.right = this.parseExprOpRightExpr(op, prec); + const finishedNode = this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression"); + const nextOp = this.state.type; + if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) { + throw this.raise(Errors.MixingCoalesceWithLogical, this.state.startLoc); + } + return this.parseExprOp(finishedNode, leftStartLoc, minPrec); + } + } + return left; + } + parseExprOpRightExpr(op, prec) { + const startLoc = this.state.startLoc; + switch (op) { + case 39: + switch (this.getPluginOption("pipelineOperator", "proposal")) { + case "hack": + return this.withTopicBindingContext(() => { + return this.parseHackPipeBody(); + }); + case "fsharp": + return this.withSoloAwaitPermittingContext(() => { + return this.parseFSharpPipelineBody(prec); + }); + } + if (this.getPluginOption("pipelineOperator", "proposal") === "smart") { + return this.withTopicBindingContext(() => { + if (this.prodParam.hasYield && this.isContextual(108)) { + throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc); + } + return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startLoc); + }); + } + default: + return this.parseExprOpBaseRightExpr(op, prec); + } + } + parseExprOpBaseRightExpr(op, prec) { + const startLoc = this.state.startLoc; + return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec); + } + parseHackPipeBody() { + var _body$extra; + const { + startLoc + } = this.state; + const body = this.parseMaybeAssign(); + const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type); + if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) { + this.raise(Errors.PipeUnparenthesizedBody, startLoc, { + type: body.type + }); + } + if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(Errors.PipeTopicUnused, startLoc); + } + return body; + } + checkExponentialAfterUnary(node) { + if (this.match(57)) { + this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument); + } + } + parseMaybeUnary(refExpressionErrors, sawUnary) { + const startLoc = this.state.startLoc; + const isAwait = this.isContextual(96); + if (isAwait && this.recordAwaitIfAllowed()) { + this.next(); + const expr = this.parseAwait(startLoc); + if (!sawUnary) this.checkExponentialAfterUnary(expr); + return expr; + } + const update = this.match(34); + const node = this.startNode(); + if (tokenIsPrefix(this.state.type)) { + node.operator = this.state.value; + node.prefix = true; + if (this.match(72)) { + this.expectPlugin("throwExpressions"); + } + const isDelete = this.match(89); + this.next(); + node.argument = this.parseMaybeUnary(null, true); + this.checkExpressionErrors(refExpressionErrors, true); + if (this.state.strict && isDelete) { + const arg = node.argument; + if (arg.type === "Identifier") { + this.raise(Errors.StrictDelete, node); + } else if (this.hasPropertyAsPrivateName(arg)) { + this.raise(Errors.DeletePrivateField, node); + } + } + if (!update) { + if (!sawUnary) { + this.checkExponentialAfterUnary(node); + } + return this.finishNode(node, "UnaryExpression"); + } + } + const expr = this.parseUpdate(node, update, refExpressionErrors); + if (isAwait) { + const { + type + } = this.state; + const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54); + if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) { + this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc); + return this.parseAwait(startLoc); + } + } + return expr; + } + parseUpdate(node, update, refExpressionErrors) { + if (update) { + const updateExpressionNode = node; + this.checkLVal(updateExpressionNode.argument, this.finishNode(updateExpressionNode, "UpdateExpression")); + return node; + } + const startLoc = this.state.startLoc; + let expr = this.parseExprSubscripts(refExpressionErrors); + if (this.checkExpressionErrors(refExpressionErrors, false)) return expr; + while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startLoc); + node.operator = this.state.value; + node.prefix = false; + node.argument = expr; + this.next(); + this.checkLVal(expr, expr = this.finishNode(node, "UpdateExpression")); + } + return expr; + } + parseExprSubscripts(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprAtom(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseSubscripts(expr, startLoc); + } + parseSubscripts(base, startLoc, noCalls) { + const state = { + optionalChainMember: false, + maybeAsyncArrow: this.atPossibleAsyncArrow(base), + stop: false + }; + do { + base = this.parseSubscript(base, startLoc, noCalls, state); + state.maybeAsyncArrow = false; + } while (!state.stop); + return base; + } + parseSubscript(base, startLoc, noCalls, state) { + const { + type + } = this.state; + if (!noCalls && type === 15) { + return this.parseBind(base, startLoc, noCalls, state); + } else if (tokenIsTemplate(type)) { + return this.parseTaggedTemplateExpression(base, startLoc, state); + } + let optional = false; + if (type === 18) { + if (noCalls) { + this.raise(Errors.OptionalChainingNoNew, this.state.startLoc); + if (this.lookaheadCharCode() === 40) { + return this.stopParseSubscript(base, state); + } + } + state.optionalChainMember = optional = true; + this.next(); + } + if (!noCalls && this.match(10)) { + return this.parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional); + } else { + const computed = this.eat(0); + if (computed || optional || this.eat(16)) { + return this.parseMember(base, startLoc, state, computed, optional); + } else { + return this.stopParseSubscript(base, state); + } + } + } + stopParseSubscript(base, state) { + state.stop = true; + return base; + } + parseMember(base, startLoc, state, computed, optional) { + const node = this.startNodeAt(startLoc); + node.object = base; + node.computed = computed; + if (computed) { + node.property = this.parseExpression(); + this.expect(3); + } else if (this.match(139)) { + if (base.type === "Super") { + this.raise(Errors.SuperPrivateField, startLoc); + } + this.classScope.usePrivateName(this.state.value, this.state.startLoc); + node.property = this.parsePrivateName(); + } else { + node.property = this.parseIdentifier(true); + } + if (state.optionalChainMember) { + node.optional = optional; + return this.finishNode(node, "OptionalMemberExpression"); + } else { + return this.finishNode(node, "MemberExpression"); + } + } + parseBind(base, startLoc, noCalls, state) { + const node = this.startNodeAt(startLoc); + node.object = base; + this.next(); + node.callee = this.parseNoCallExpr(); + state.stop = true; + return this.parseSubscripts(this.finishNode(node, "BindExpression"), startLoc, noCalls); + } + parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional) { + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + let refExpressionErrors = null; + this.state.maybeInArrowParameters = true; + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + const { + maybeAsyncArrow, + optionalChainMember + } = state; + if (maybeAsyncArrow) { + this.expressionScope.enter(newAsyncArrowScope()); + refExpressionErrors = new ExpressionErrors(); + } + if (optionalChainMember) { + node.optional = optional; + } + if (optional) { + node.arguments = this.parseCallExpressionArguments(); + } else { + node.arguments = this.parseCallExpressionArguments(base.type !== "Super", node, refExpressionErrors); + } + let finishedNode = this.finishCallExpression(node, optionalChainMember); + if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { + state.stop = true; + this.checkDestructuringPrivate(refExpressionErrors); + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + finishedNode = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startLoc), finishedNode); + } else { + if (maybeAsyncArrow) { + this.checkExpressionErrors(refExpressionErrors, true); + this.expressionScope.exit(); + } + this.toReferencedArguments(finishedNode); + } + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return finishedNode; + } + toReferencedArguments(node, isParenthesizedExpr) { + this.toReferencedListDeep(node.arguments, isParenthesizedExpr); + } + parseTaggedTemplateExpression(base, startLoc, state) { + const node = this.startNodeAt(startLoc); + node.tag = base; + node.quasi = this.parseTemplate(true); + if (state.optionalChainMember) { + this.raise(Errors.OptionalChainingNoTemplate, startLoc); + } + return this.finishNode(node, "TaggedTemplateExpression"); + } + atPossibleAsyncArrow(base) { + return base.type === "Identifier" && base.name === "async" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.offsetToSourcePos(base.start) === this.state.potentialArrowAt; + } + finishCallExpression(node, optional) { + if (node.callee.type === "Import") { + if (node.arguments.length === 0 || node.arguments.length > 2) { + this.raise(Errors.ImportCallArity, node); + } else { + for (const arg of node.arguments) { + if (arg.type === "SpreadElement") { + this.raise(Errors.ImportCallSpreadArgument, arg); + } + } + } + } + return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression"); + } + parseCallExpressionArguments(allowPlaceholder, nodeForExtra, refExpressionErrors) { + const elts = []; + let first = true; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + while (!this.eat(11)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(11)) { + if (nodeForExtra) { + this.addTrailingCommaExtraToNode(nodeForExtra); + } + this.next(); + break; + } + } + elts.push(this.parseExprListItem(11, false, refExpressionErrors, allowPlaceholder)); + } + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return elts; + } + shouldParseAsyncArrow() { + return this.match(19) && !this.canInsertSemicolon(); + } + parseAsyncArrowFromCallExpression(node, call) { + var _call$extra; + this.resetPreviousNodeTrailingComments(call); + this.expect(19); + this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc); + if (call.innerComments) { + setInnerComments(node, call.innerComments); + } + if (call.callee.trailingComments) { + setInnerComments(node, call.callee.trailingComments); + } + return node; + } + parseNoCallExpr() { + const startLoc = this.state.startLoc; + return this.parseSubscripts(this.parseExprAtom(), startLoc, true); + } + parseExprAtom(refExpressionErrors) { + let node; + let decorators = null; + const { + type + } = this.state; + switch (type) { + case 79: + return this.parseSuper(); + case 83: + node = this.startNode(); + this.next(); + if (this.match(16)) { + return this.parseImportMetaPropertyOrPhaseCall(node); + } + if (this.match(10)) { + if (this.optionFlags & 512) { + return this.parseImportCall(node); + } else { + return this.finishNode(node, "Import"); + } + } else { + this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc); + return this.finishNode(node, "Import"); + } + case 78: + node = this.startNode(); + this.next(); + return this.finishNode(node, "ThisExpression"); + case 90: + { + return this.parseDo(this.startNode(), false); + } + case 56: + case 31: + { + this.readRegexp(); + return this.parseRegExpLiteral(this.state.value); + } + case 135: + return this.parseNumericLiteral(this.state.value); + case 136: + return this.parseBigIntLiteral(this.state.value); + case 134: + return this.parseStringLiteral(this.state.value); + case 84: + return this.parseNullLiteral(); + case 85: + return this.parseBooleanLiteral(true); + case 86: + return this.parseBooleanLiteral(false); + case 10: + { + const canBeArrow = this.state.potentialArrowAt === this.state.start; + return this.parseParenAndDistinguishExpression(canBeArrow); + } + case 0: + { + return this.parseArrayLike(3, true, false, refExpressionErrors); + } + case 5: + { + return this.parseObjectLike(8, false, false, refExpressionErrors); + } + case 68: + return this.parseFunctionOrFunctionSent(); + case 26: + decorators = this.parseDecorators(); + case 80: + return this.parseClass(this.maybeTakeDecorators(decorators, this.startNode()), false); + case 77: + return this.parseNewOrNewTarget(); + case 25: + case 24: + return this.parseTemplate(false); + case 15: + { + node = this.startNode(); + this.next(); + node.object = null; + const callee = node.callee = this.parseNoCallExpr(); + if (callee.type === "MemberExpression") { + return this.finishNode(node, "BindExpression"); + } else { + throw this.raise(Errors.UnsupportedBind, callee); + } + } + case 139: + { + this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, { + identifierName: this.state.value + }); + return this.parsePrivateName(); + } + case 33: + { + return this.parseTopicReferenceThenEqualsSign(54, "%"); + } + case 32: + { + return this.parseTopicReferenceThenEqualsSign(44, "^"); + } + case 37: + case 38: + { + return this.parseTopicReference("hack"); + } + case 44: + case 54: + case 27: + { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + if (pipeProposal) { + return this.parseTopicReference(pipeProposal); + } + this.unexpected(); + break; + } + case 47: + { + const lookaheadCh = this.input.codePointAt(this.nextTokenStart()); + if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) { + this.expectOnePlugin(["jsx", "flow", "typescript"]); + } else { + this.unexpected(); + } + break; + } + default: + { + if (type === 137) { + return this.parseDecimalLiteral(this.state.value); + } else if (type === 2 || type === 1) { + return this.parseArrayLike(this.state.type === 2 ? 4 : 3, false, true); + } else if (type === 6 || type === 7) { + return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true); + } + } + if (tokenIsIdentifier(type)) { + if (this.isContextual(127) && this.lookaheadInLineCharCode() === 123) { + return this.parseModuleExpression(); + } + const canBeArrow = this.state.potentialArrowAt === this.state.start; + const containsEsc = this.state.containsEsc; + const id = this.parseIdentifier(); + if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) { + const { + type + } = this.state; + if (type === 68) { + this.resetPreviousNodeTrailingComments(id); + this.next(); + return this.parseAsyncFunctionExpression(this.startNodeAtNode(id)); + } else if (tokenIsIdentifier(type)) { + if (this.lookaheadCharCode() === 61) { + return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id)); + } else { + return id; + } + } else if (type === 90) { + this.resetPreviousNodeTrailingComments(id); + return this.parseDo(this.startNodeAtNode(id), true); + } + } + if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) { + this.next(); + return this.parseArrowExpression(this.startNodeAtNode(id), [id], false); + } + return id; + } else { + this.unexpected(); + } + } + } + parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + if (pipeProposal) { + this.state.type = topicTokenType; + this.state.value = topicTokenValue; + this.state.pos--; + this.state.end--; + this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1); + return this.parseTopicReference(pipeProposal); + } else { + this.unexpected(); + } + } + parseTopicReference(pipeProposal) { + const node = this.startNode(); + const startLoc = this.state.startLoc; + const tokenType = this.state.type; + this.next(); + return this.finishTopicReference(node, startLoc, pipeProposal, tokenType); + } + finishTopicReference(node, startLoc, pipeProposal, tokenType) { + if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) { + if (pipeProposal === "hack") { + if (!this.topicReferenceIsAllowedInCurrentContext()) { + this.raise(Errors.PipeTopicUnbound, startLoc); + } + this.registerTopicReference(); + return this.finishNode(node, "TopicReference"); + } else { + if (!this.topicReferenceIsAllowedInCurrentContext()) { + this.raise(Errors.PrimaryTopicNotAllowed, startLoc); + } + this.registerTopicReference(); + return this.finishNode(node, "PipelinePrimaryTopicReference"); + } + } else { + throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, { + token: tokenLabelName(tokenType) + }); + } + } + testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) { + switch (pipeProposal) { + case "hack": + { + return this.hasPlugin(["pipelineOperator", { + topicToken: tokenLabelName(tokenType) + }]); + } + case "smart": + return tokenType === 27; + default: + throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc); + } + } + parseAsyncArrowUnaryFunction(node) { + this.prodParam.enter(functionFlags(true, this.prodParam.hasYield)); + const params = [this.parseIdentifier()]; + this.prodParam.exit(); + if (this.hasPrecedingLineBreak()) { + this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition()); + } + this.expect(19); + return this.parseArrowExpression(node, params, true); + } + parseDo(node, isAsync) { + this.expectPlugin("doExpressions"); + if (isAsync) { + this.expectPlugin("asyncDoExpressions"); + } + node.async = isAsync; + this.next(); + const oldLabels = this.state.labels; + this.state.labels = []; + if (isAsync) { + this.prodParam.enter(2); + node.body = this.parseBlock(); + this.prodParam.exit(); + } else { + node.body = this.parseBlock(); + } + this.state.labels = oldLabels; + return this.finishNode(node, "DoExpression"); + } + parseSuper() { + const node = this.startNode(); + this.next(); + if (this.match(10) && !this.scope.allowDirectSuper && !(this.optionFlags & 16)) { + this.raise(Errors.SuperNotAllowed, node); + } else if (!this.scope.allowSuper && !(this.optionFlags & 16)) { + this.raise(Errors.UnexpectedSuper, node); + } + if (!this.match(10) && !this.match(0) && !this.match(16)) { + this.raise(Errors.UnsupportedSuper, node); + } + return this.finishNode(node, "Super"); + } + parsePrivateName() { + const node = this.startNode(); + const id = this.startNodeAt(createPositionWithColumnOffset(this.state.startLoc, 1)); + const name = this.state.value; + this.next(); + node.id = this.createIdentifier(id, name); + return this.finishNode(node, "PrivateName"); + } + parseFunctionOrFunctionSent() { + const node = this.startNode(); + this.next(); + if (this.prodParam.hasYield && this.match(16)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "function"); + this.next(); + if (this.match(103)) { + this.expectPlugin("functionSent"); + } else if (!this.hasPlugin("functionSent")) { + this.unexpected(); + } + return this.parseMetaProperty(node, meta, "sent"); + } + return this.parseFunction(node); + } + parseMetaProperty(node, meta, propertyName) { + node.meta = meta; + const containsEsc = this.state.containsEsc; + node.property = this.parseIdentifier(true); + if (node.property.name !== propertyName || containsEsc) { + this.raise(Errors.UnsupportedMetaProperty, node.property, { + target: meta.name, + onlyValidPropertyName: propertyName + }); + } + return this.finishNode(node, "MetaProperty"); + } + parseImportMetaPropertyOrPhaseCall(node) { + this.next(); + if (this.isContextual(105) || this.isContextual(97)) { + const isSource = this.isContextual(105); + this.expectPlugin(isSource ? "sourcePhaseImports" : "deferredImportEvaluation"); + this.next(); + node.phase = isSource ? "source" : "defer"; + return this.parseImportCall(node); + } else { + const id = this.createIdentifierAt(this.startNodeAtNode(node), "import", this.state.lastTokStartLoc); + if (this.isContextual(101)) { + if (!this.inModule) { + this.raise(Errors.ImportMetaOutsideModule, id); + } + this.sawUnambiguousESM = true; + } + return this.parseMetaProperty(node, id, "meta"); + } + } + parseLiteralAtNode(value, type, node) { + this.addExtra(node, "rawValue", value); + this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end)); + node.value = value; + this.next(); + return this.finishNode(node, type); + } + parseLiteral(value, type) { + const node = this.startNode(); + return this.parseLiteralAtNode(value, type, node); + } + parseStringLiteral(value) { + return this.parseLiteral(value, "StringLiteral"); + } + parseNumericLiteral(value) { + return this.parseLiteral(value, "NumericLiteral"); + } + parseBigIntLiteral(value) { + { + return this.parseLiteral(value, "BigIntLiteral"); + } + } + parseDecimalLiteral(value) { + return this.parseLiteral(value, "DecimalLiteral"); + } + parseRegExpLiteral(value) { + const node = this.startNode(); + this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end)); + node.pattern = value.pattern; + node.flags = value.flags; + this.next(); + return this.finishNode(node, "RegExpLiteral"); + } + parseBooleanLiteral(value) { + const node = this.startNode(); + node.value = value; + this.next(); + return this.finishNode(node, "BooleanLiteral"); + } + parseNullLiteral() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "NullLiteral"); + } + parseParenAndDistinguishExpression(canBeArrow) { + const startLoc = this.state.startLoc; + let val; + this.next(); + this.expressionScope.enter(newArrowHeadScope()); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.maybeInArrowParameters = true; + this.state.inFSharpPipelineDirectBody = false; + const innerStartLoc = this.state.startLoc; + const exprList = []; + const refExpressionErrors = new ExpressionErrors(); + let first = true; + let spreadStartLoc; + let optionalCommaStartLoc; + while (!this.match(11)) { + if (first) { + first = false; + } else { + this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc); + if (this.match(11)) { + optionalCommaStartLoc = this.state.startLoc; + break; + } + } + if (this.match(21)) { + const spreadNodeStartLoc = this.state.startLoc; + spreadStartLoc = this.state.startLoc; + exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc)); + if (!this.checkCommaAfterRest(41)) { + break; + } + } else { + exprList.push(this.parseMaybeAssignAllowInOrVoidPattern(11, refExpressionErrors, this.parseParenItem)); + } + } + const innerEndLoc = this.state.lastTokEndLoc; + this.expect(11); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let arrowNode = this.startNodeAt(startLoc); + if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) { + this.checkDestructuringPrivate(refExpressionErrors); + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + this.parseArrowExpression(arrowNode, exprList, false); + return arrowNode; + } + this.expressionScope.exit(); + if (!exprList.length) { + this.unexpected(this.state.lastTokStartLoc); + } + if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc); + if (spreadStartLoc) this.unexpected(spreadStartLoc); + this.checkExpressionErrors(refExpressionErrors, true); + this.toReferencedListDeep(exprList, true); + if (exprList.length > 1) { + val = this.startNodeAt(innerStartLoc); + val.expressions = exprList; + this.finishNode(val, "SequenceExpression"); + this.resetEndLocation(val, innerEndLoc); + } else { + val = exprList[0]; + } + return this.wrapParenthesis(startLoc, val); + } + wrapParenthesis(startLoc, expression) { + if (!(this.optionFlags & 1024)) { + this.addExtra(expression, "parenthesized", true); + this.addExtra(expression, "parenStart", startLoc.index); + this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index); + return expression; + } + const parenExpression = this.startNodeAt(startLoc); + parenExpression.expression = expression; + return this.finishNode(parenExpression, "ParenthesizedExpression"); + } + shouldParseArrow(params) { + return !this.canInsertSemicolon(); + } + parseArrow(node) { + if (this.eat(19)) { + return node; + } + } + parseParenItem(node, startLoc) { + return node; + } + parseNewOrNewTarget() { + const node = this.startNode(); + this.next(); + if (this.match(16)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "new"); + this.next(); + const metaProp = this.parseMetaProperty(node, meta, "target"); + if (!this.scope.allowNewTarget) { + this.raise(Errors.UnexpectedNewTarget, metaProp); + } + return metaProp; + } + return this.parseNew(node); + } + parseNew(node) { + this.parseNewCallee(node); + if (this.eat(10)) { + const args = this.parseExprList(11); + this.toReferencedList(args); + node.arguments = args; + } else { + node.arguments = []; + } + return this.finishNode(node, "NewExpression"); + } + parseNewCallee(node) { + const isImport = this.match(83); + const callee = this.parseNoCallExpr(); + node.callee = callee; + if (isImport && (callee.type === "Import" || callee.type === "ImportExpression")) { + this.raise(Errors.ImportCallNotNewExpression, callee); + } + } + parseTemplateElement(isTagged) { + const { + start, + startLoc, + end, + value + } = this.state; + const elemStart = start + 1; + const elem = this.startNodeAt(createPositionWithColumnOffset(startLoc, 1)); + if (value === null) { + if (!isTagged) { + this.raise(Errors.InvalidEscapeSequenceTemplate, createPositionWithColumnOffset(this.state.firstInvalidTemplateEscapePos, 1)); + } + } + const isTail = this.match(24); + const endOffset = isTail ? -1 : -2; + const elemEnd = end + endOffset; + elem.value = { + raw: this.input.slice(elemStart, elemEnd).replace(/\r\n?/g, "\n"), + cooked: value === null ? null : value.slice(1, endOffset) + }; + elem.tail = isTail; + this.next(); + const finishedNode = this.finishNode(elem, "TemplateElement"); + this.resetEndLocation(finishedNode, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset)); + return finishedNode; + } + parseTemplate(isTagged) { + const node = this.startNode(); + let curElt = this.parseTemplateElement(isTagged); + const quasis = [curElt]; + const substitutions = []; + while (!curElt.tail) { + substitutions.push(this.parseTemplateSubstitution()); + this.readTemplateContinuation(); + quasis.push(curElt = this.parseTemplateElement(isTagged)); + } + node.expressions = substitutions; + node.quasis = quasis; + return this.finishNode(node, "TemplateLiteral"); + } + parseTemplateSubstitution() { + return this.parseExpression(); + } + parseObjectLike(close, isPattern, isRecord, refExpressionErrors) { + if (isRecord) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + let sawProto = false; + let first = true; + const node = this.startNode(); + node.properties = []; + this.next(); + while (!this.match(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + this.addTrailingCommaExtraToNode(node); + break; + } + } + let prop; + if (isPattern) { + prop = this.parseBindingProperty(); + } else { + prop = this.parsePropertyDefinition(refExpressionErrors); + sawProto = this.checkProto(prop, isRecord, sawProto, refExpressionErrors); + } + if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") { + this.raise(Errors.InvalidRecordProperty, prop); + } + { + if (prop.shorthand) { + this.addExtra(prop, "shorthand", true); + } + } + node.properties.push(prop); + } + this.next(); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let type = "ObjectExpression"; + if (isPattern) { + type = "ObjectPattern"; + } else if (isRecord) { + type = "RecordExpression"; + } + return this.finishNode(node, type); + } + addTrailingCommaExtraToNode(node) { + this.addExtra(node, "trailingComma", this.state.lastTokStartLoc.index); + this.addExtra(node, "trailingCommaLoc", this.state.lastTokStartLoc, false); + } + maybeAsyncOrAccessorProp(prop) { + return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(55)); + } + parsePropertyDefinition(refExpressionErrors) { + let decorators = []; + if (this.match(26)) { + if (this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } + } + const prop = this.startNode(); + let isAsync = false; + let isAccessor = false; + let startLoc; + if (this.match(21)) { + if (decorators.length) this.unexpected(); + return this.parseSpread(); + } + if (decorators.length) { + prop.decorators = decorators; + decorators = []; + } + prop.method = false; + if (refExpressionErrors) { + startLoc = this.state.startLoc; + } + let isGenerator = this.eat(55); + this.parsePropertyNamePrefixOperator(prop); + const containsEsc = this.state.containsEsc; + this.parsePropertyName(prop, refExpressionErrors); + if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) { + const { + key + } = prop; + const keyName = key.name; + if (keyName === "async" && !this.hasPrecedingLineBreak()) { + isAsync = true; + this.resetPreviousNodeTrailingComments(key); + isGenerator = this.eat(55); + this.parsePropertyName(prop); + } + if (keyName === "get" || keyName === "set") { + isAccessor = true; + this.resetPreviousNodeTrailingComments(key); + prop.kind = keyName; + if (this.match(55)) { + isGenerator = true; + this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), { + kind: keyName + }); + this.next(); + } + this.parsePropertyName(prop); + } + } + return this.parseObjPropValue(prop, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors); + } + getGetterSetterExpectedParamCount(method) { + return method.kind === "get" ? 0 : 1; + } + getObjectOrClassMethodParams(method) { + return method.params; + } + checkGetterSetterParams(method) { + var _params; + const paramCount = this.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + if (params.length !== paramCount) { + this.raise(method.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, method); + } + if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") { + this.raise(Errors.BadSetterRestParameter, method); + } + } + parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { + if (isAccessor) { + const finishedProp = this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod"); + this.checkGetterSetterParams(finishedProp); + return finishedProp; + } + if (isAsync || isGenerator || this.match(10)) { + if (isPattern) this.unexpected(); + prop.kind = "method"; + prop.method = true; + return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod"); + } + } + parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { + prop.shorthand = false; + if (this.eat(14)) { + prop.value = isPattern ? this.parseMaybeDefault(this.state.startLoc) : this.parseMaybeAssignAllowInOrVoidPattern(8, refExpressionErrors); + return this.finishObjectProperty(prop); + } + if (!prop.computed && prop.key.type === "Identifier") { + this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false); + if (isPattern) { + prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key)); + } else if (this.match(29)) { + const shorthandAssignLoc = this.state.startLoc; + if (refExpressionErrors != null) { + if (refExpressionErrors.shorthandAssignLoc === null) { + refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc; + } + } else { + this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc); + } + prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key)); + } else { + prop.value = this.cloneIdentifier(prop.key); + } + prop.shorthand = true; + return this.finishObjectProperty(prop); + } + } + finishObjectProperty(node) { + return this.finishNode(node, "ObjectProperty"); + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); + if (!node) this.unexpected(); + return node; + } + parsePropertyName(prop, refExpressionErrors) { + if (this.eat(0)) { + prop.computed = true; + prop.key = this.parseMaybeAssignAllowIn(); + this.expect(3); + } else { + const { + type, + value + } = this.state; + let key; + if (tokenIsKeywordOrIdentifier(type)) { + key = this.parseIdentifier(true); + } else { + switch (type) { + case 135: + key = this.parseNumericLiteral(value); + break; + case 134: + key = this.parseStringLiteral(value); + break; + case 136: + key = this.parseBigIntLiteral(value); + break; + case 139: + { + const privateKeyLoc = this.state.startLoc; + if (refExpressionErrors != null) { + if (refExpressionErrors.privateKeyLoc === null) { + refExpressionErrors.privateKeyLoc = privateKeyLoc; + } + } else { + this.raise(Errors.UnexpectedPrivateField, privateKeyLoc); + } + key = this.parsePrivateName(); + break; + } + default: + if (type === 137) { + key = this.parseDecimalLiteral(value); + break; + } + this.unexpected(); + } + } + prop.key = key; + if (type !== 139) { + prop.computed = false; + } + } + } + initFunction(node, isAsync) { + node.id = null; + node.generator = false; + node.async = isAsync; + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + this.initFunction(node, isAsync); + node.generator = isGenerator; + this.scope.enter(514 | 16 | (inClassScope ? 576 : 0) | (allowDirectSuper ? 32 : 0)); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + this.parseFunctionParams(node, isConstructor); + const finishedNode = this.parseFunctionBodyAndFinish(node, type, true); + this.prodParam.exit(); + this.scope.exit(); + return finishedNode; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + if (isTuple) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + const node = this.startNode(); + this.next(); + node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression"); + } + parseArrowExpression(node, params, isAsync, trailingCommaLoc) { + this.scope.enter(514 | 4); + let flags = functionFlags(isAsync, false); + if (!this.match(5) && this.prodParam.hasIn) { + flags |= 8; + } + this.prodParam.enter(flags); + this.initFunction(node, isAsync); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + if (params) { + this.state.maybeInArrowParameters = true; + this.setArrowFunctionParameters(node, params, trailingCommaLoc); + } + this.state.maybeInArrowParameters = false; + this.parseFunctionBody(node, true); + this.prodParam.exit(); + this.scope.exit(); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return this.finishNode(node, "ArrowFunctionExpression"); + } + setArrowFunctionParameters(node, params, trailingCommaLoc) { + this.toAssignableList(params, trailingCommaLoc, false); + node.params = params; + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + this.parseFunctionBody(node, false, isMethod); + return this.finishNode(node, type); + } + parseFunctionBody(node, allowExpression, isMethod = false) { + const isExpression = allowExpression && !this.match(5); + this.expressionScope.enter(newExpressionScope()); + if (isExpression) { + node.body = this.parseMaybeAssign(); + this.checkParams(node, false, allowExpression, false); + } else { + const oldStrict = this.state.strict; + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(this.prodParam.currentFlags() | 4); + node.body = this.parseBlock(true, false, hasStrictModeDirective => { + const nonSimple = !this.isSimpleParamList(node.params); + if (hasStrictModeDirective && nonSimple) { + this.raise(Errors.IllegalLanguageModeDirective, (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.loc.end : node); + } + const strictModeChanged = !oldStrict && this.state.strict; + this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged); + if (this.state.strict && node.id) { + this.checkIdentifier(node.id, 65, strictModeChanged); + } + }); + this.prodParam.exit(); + this.state.labels = oldLabels; + } + this.expressionScope.exit(); + } + isSimpleParameter(node) { + return node.type === "Identifier"; + } + isSimpleParamList(params) { + for (let i = 0, len = params.length; i < len; i++) { + if (!this.isSimpleParameter(params[i])) return false; + } + return true; + } + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + const checkClashes = !allowDuplicates && new Set(); + const formalParameters = { + type: "FormalParameters" + }; + for (const param of node.params) { + this.checkLVal(param, formalParameters, 5, checkClashes, strictModeChanged); + } + } + parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) { + const elts = []; + let first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + if (nodeForExtra) { + this.addTrailingCommaExtraToNode(nodeForExtra); + } + this.next(); + break; + } + } + elts.push(this.parseExprListItem(close, allowEmpty, refExpressionErrors)); + } + return elts; + } + parseExprListItem(close, allowEmpty, refExpressionErrors, allowPlaceholder) { + let elt; + if (this.match(12)) { + if (!allowEmpty) { + this.raise(Errors.UnexpectedToken, this.state.curPosition(), { + unexpected: "," + }); + } + elt = null; + } else if (this.match(21)) { + const spreadNodeStartLoc = this.state.startLoc; + elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartLoc); + } else if (this.match(17)) { + this.expectPlugin("partialApplication"); + if (!allowPlaceholder) { + this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc); + } + const node = this.startNode(); + this.next(); + elt = this.finishNode(node, "ArgumentPlaceholder"); + } else { + elt = this.parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, this.parseParenItem); + } + return elt; + } + parseIdentifier(liberal) { + const node = this.startNode(); + const name = this.parseIdentifierName(liberal); + return this.createIdentifier(node, name); + } + createIdentifier(node, name) { + node.name = name; + node.loc.identifierName = name; + return this.finishNode(node, "Identifier"); + } + createIdentifierAt(node, name, endLoc) { + node.name = name; + node.loc.identifierName = name; + return this.finishNodeAt(node, "Identifier", endLoc); + } + parseIdentifierName(liberal) { + let name; + const { + startLoc, + type + } = this.state; + if (tokenIsKeywordOrIdentifier(type)) { + name = this.state.value; + } else { + this.unexpected(); + } + const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type); + if (liberal) { + if (tokenIsKeyword) { + this.replaceToken(132); + } + } else { + this.checkReservedWord(name, startLoc, tokenIsKeyword, false); + } + this.next(); + return name; + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word.length > 10) { + return; + } + if (!canBeReservedWord(word)) { + return; + } + if (checkKeywords && isKeyword(word)) { + this.raise(Errors.UnexpectedKeyword, startLoc, { + keyword: word + }); + return; + } + const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord; + if (reservedTest(word, this.inModule)) { + this.raise(Errors.UnexpectedReservedWord, startLoc, { + reservedWord: word + }); + return; + } else if (word === "yield") { + if (this.prodParam.hasYield) { + this.raise(Errors.YieldBindingIdentifier, startLoc); + return; + } + } else if (word === "await") { + if (this.prodParam.hasAwait) { + this.raise(Errors.AwaitBindingIdentifier, startLoc); + return; + } + if (this.scope.inStaticBlock) { + this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc); + return; + } + this.expressionScope.recordAsyncArrowParametersError(startLoc); + } else if (word === "arguments") { + if (this.scope.inClassAndNotInNonArrowFunction) { + this.raise(Errors.ArgumentsInClass, startLoc); + return; + } + } + } + recordAwaitIfAllowed() { + const isAwaitAllowed = this.prodParam.hasAwait; + if (isAwaitAllowed && !this.scope.inFunction) { + this.state.hasTopLevelAwait = true; + } + return isAwaitAllowed; + } + parseAwait(startLoc) { + const node = this.startNodeAt(startLoc); + this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, node); + if (this.eat(55)) { + this.raise(Errors.ObsoleteAwaitStar, node); + } + if (!this.scope.inFunction && !(this.optionFlags & 1)) { + if (this.isAmbiguousPrefixOrIdentifier()) { + this.ambiguousScriptDifferentAst = true; + } else { + this.sawUnambiguousESM = true; + } + } + if (!this.state.soloAwait) { + node.argument = this.parseMaybeUnary(null, true); + } + return this.finishNode(node, "AwaitExpression"); + } + isAmbiguousPrefixOrIdentifier() { + if (this.hasPrecedingLineBreak()) return true; + const { + type + } = this.state; + return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 102 && !this.state.containsEsc || type === 138 || type === 56 || this.hasPlugin("v8intrinsic") && type === 54; + } + parseYield(startLoc) { + const node = this.startNodeAt(startLoc); + this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, node); + let delegating = false; + let argument = null; + if (!this.hasPrecedingLineBreak()) { + delegating = this.eat(55); + switch (this.state.type) { + case 13: + case 140: + case 8: + case 11: + case 3: + case 9: + case 14: + case 12: + if (!delegating) break; + default: + argument = this.parseMaybeAssign(); + } + } + node.delegate = delegating; + node.argument = argument; + return this.finishNode(node, "YieldExpression"); + } + parseImportCall(node) { + this.next(); + node.source = this.parseMaybeAssignAllowIn(); + node.options = null; + if (this.eat(12)) { + if (!this.match(11)) { + node.options = this.parseMaybeAssignAllowIn(); + if (this.eat(12)) { + this.addTrailingCommaExtraToNode(node.options); + if (!this.match(11)) { + do { + this.parseMaybeAssignAllowIn(); + } while (this.eat(12) && !this.match(11)); + this.raise(Errors.ImportCallArity, node); + } + } + } else { + this.addTrailingCommaExtraToNode(node.source); + } + } + this.expect(11); + return this.finishNode(node, "ImportExpression"); + } + checkPipelineAtInfixOperator(left, leftStartLoc) { + if (this.hasPlugin(["pipelineOperator", { + proposal: "smart" + }])) { + if (left.type === "SequenceExpression") { + this.raise(Errors.PipelineHeadSequenceExpression, leftStartLoc); + } + } + } + parseSmartPipelineBodyInStyle(childExpr, startLoc) { + if (this.isSimpleReference(childExpr)) { + const bodyNode = this.startNodeAt(startLoc); + bodyNode.callee = childExpr; + return this.finishNode(bodyNode, "PipelineBareFunction"); + } else { + const bodyNode = this.startNodeAt(startLoc); + this.checkSmartPipeTopicBodyEarlyErrors(startLoc); + bodyNode.expression = childExpr; + return this.finishNode(bodyNode, "PipelineTopicExpression"); + } + } + isSimpleReference(expression) { + switch (expression.type) { + case "MemberExpression": + return !expression.computed && this.isSimpleReference(expression.object); + case "Identifier": + return true; + default: + return false; + } + } + checkSmartPipeTopicBodyEarlyErrors(startLoc) { + if (this.match(19)) { + throw this.raise(Errors.PipelineBodyNoArrow, this.state.startLoc); + } + if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(Errors.PipelineTopicUnused, startLoc); + } + } + withTopicBindingContext(callback) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 1, + maxTopicIndex: null + }; + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } + withSmartMixTopicForbiddingContext(callback) { + if (this.hasPlugin(["pipelineOperator", { + proposal: "smart" + }])) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } else { + return callback(); + } + } + withSoloAwaitPermittingContext(callback) { + const outerContextSoloAwaitState = this.state.soloAwait; + this.state.soloAwait = true; + try { + return callback(); + } finally { + this.state.soloAwait = outerContextSoloAwaitState; + } + } + allowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToSet = 8 & ~flags; + if (prodParamToSet) { + this.prodParam.enter(flags | 8); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + disallowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToClear = 8 & flags; + if (prodParamToClear) { + this.prodParam.enter(flags & -9); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + registerTopicReference() { + this.state.topicContext.maxTopicIndex = 0; + } + topicReferenceIsAllowedInCurrentContext() { + return this.state.topicContext.maxNumOfResolvableTopics >= 1; + } + topicReferenceWasUsedInCurrentContext() { + return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0; + } + parseFSharpPipelineBody(prec) { + const startLoc = this.state.startLoc; + this.state.potentialArrowAt = this.state.start; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = true; + const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, prec); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return ret; + } + parseModuleExpression() { + this.expectPlugin("moduleBlocks"); + const node = this.startNode(); + this.next(); + if (!this.match(5)) { + this.unexpected(null, 5); + } + const program = this.startNodeAt(this.state.endLoc); + this.next(); + const revertScopes = this.initializeScopes(true); + this.enterInitialScopes(); + try { + node.body = this.parseProgram(program, 8, "module"); + } finally { + revertScopes(); + } + return this.finishNode(node, "ModuleExpression"); + } + parseVoidPattern(refExpressionErrors) { + this.expectPlugin("discardBinding"); + const node = this.startNode(); + if (refExpressionErrors != null) { + refExpressionErrors.voidPatternLoc = this.state.startLoc; + } + this.next(); + return this.finishNode(node, "VoidPattern"); + } + parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, afterLeftParse) { + if (refExpressionErrors != null && this.match(88)) { + const nextCode = this.lookaheadCharCode(); + if (nextCode === 44 || nextCode === (close === 3 ? 93 : close === 8 ? 125 : 41) || nextCode === 61) { + return this.parseMaybeDefault(this.state.startLoc, this.parseVoidPattern(refExpressionErrors)); + } + } + return this.parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse); + } + parsePropertyNamePrefixOperator(prop) {} + } + const loopLabel = { + kind: 1 + }, + switchLabel = { + kind: 2 + }; + const loneSurrogate = /[\uD800-\uDFFF]/u; + const keywordRelationalOperator = /in(?:stanceof)?/y; + function babel7CompatTokens(tokens, input, startIndex) { + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; + const { + type + } = token; + if (typeof type === "number") { + { + if (type === 139) { + const { + loc, + start, + value, + end + } = token; + const hashEndPos = start + 1; + const hashEndLoc = createPositionWithColumnOffset(loc.start, 1); + tokens.splice(i, 1, new Token({ + type: getExportedToken(27), + value: "#", + start: start, + end: hashEndPos, + startLoc: loc.start, + endLoc: hashEndLoc + }), new Token({ + type: getExportedToken(132), + value: value, + start: hashEndPos, + end: end, + startLoc: hashEndLoc, + endLoc: loc.end + })); + i++; + continue; + } + if (tokenIsTemplate(type)) { + const { + loc, + start, + value, + end + } = token; + const backquoteEnd = start + 1; + const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1); + let startToken; + if (input.charCodeAt(start - startIndex) === 96) { + startToken = new Token({ + type: getExportedToken(22), + value: "`", + start: start, + end: backquoteEnd, + startLoc: loc.start, + endLoc: backquoteEndLoc + }); + } else { + startToken = new Token({ + type: getExportedToken(8), + value: "}", + start: start, + end: backquoteEnd, + startLoc: loc.start, + endLoc: backquoteEndLoc + }); + } + let templateValue, templateElementEnd, templateElementEndLoc, endToken; + if (type === 24) { + templateElementEnd = end - 1; + templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1); + templateValue = value === null ? null : value.slice(1, -1); + endToken = new Token({ + type: getExportedToken(22), + value: "`", + start: templateElementEnd, + end: end, + startLoc: templateElementEndLoc, + endLoc: loc.end + }); + } else { + templateElementEnd = end - 2; + templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2); + templateValue = value === null ? null : value.slice(1, -2); + endToken = new Token({ + type: getExportedToken(23), + value: "${", + start: templateElementEnd, + end: end, + startLoc: templateElementEndLoc, + endLoc: loc.end + }); + } + tokens.splice(i, 1, startToken, new Token({ + type: getExportedToken(20), + value: templateValue, + start: backquoteEnd, + end: templateElementEnd, + startLoc: backquoteEndLoc, + endLoc: templateElementEndLoc + }), endToken); + i += 2; + continue; + } + } + token.type = getExportedToken(type); + } + } + return tokens; + } + class StatementParser extends ExpressionParser { + parseTopLevel(file, program) { + file.program = this.parseProgram(program, 140, this.options.sourceType === "module" ? "module" : "script"); + file.comments = this.comments; + if (this.optionFlags & 256) { + file.tokens = babel7CompatTokens(this.tokens, this.input, this.startIndex); + } + return this.finishNode(file, "File"); + } + parseProgram(program, end, sourceType) { + program.sourceType = sourceType; + program.interpreter = this.parseInterpreterDirective(); + this.parseBlockBody(program, true, true, end); + if (this.inModule) { + if (!(this.optionFlags & 64) && this.scope.undefinedExports.size > 0) { + for (const [localName, at] of Array.from(this.scope.undefinedExports)) { + this.raise(Errors.ModuleExportUndefined, at, { + localName + }); + } + } + this.addExtra(program, "topLevelAwait", this.state.hasTopLevelAwait); + } + let finishedProgram; + if (end === 140) { + finishedProgram = this.finishNode(program, "Program"); + } else { + finishedProgram = this.finishNodeAt(program, "Program", createPositionWithColumnOffset(this.state.startLoc, -1)); + } + return finishedProgram; + } + stmtToDirective(stmt) { + const directive = this.castNodeTo(stmt, "Directive"); + const directiveLiteral = this.castNodeTo(stmt.expression, "DirectiveLiteral"); + const expressionValue = directiveLiteral.value; + const raw = this.input.slice(this.offsetToSourcePos(directiveLiteral.start), this.offsetToSourcePos(directiveLiteral.end)); + const val = directiveLiteral.value = raw.slice(1, -1); + this.addExtra(directiveLiteral, "raw", raw); + this.addExtra(directiveLiteral, "rawValue", val); + this.addExtra(directiveLiteral, "expressionValue", expressionValue); + directive.value = directiveLiteral; + delete stmt.expression; + return directive; + } + parseInterpreterDirective() { + if (!this.match(28)) { + return null; + } + const node = this.startNode(); + node.value = this.state.value; + this.next(); + return this.finishNode(node, "InterpreterDirective"); + } + isLet() { + if (!this.isContextual(100)) { + return false; + } + return this.hasFollowingBindingAtom(); + } + isUsing() { + if (!this.isContextual(107)) { + return false; + } + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingIdentifier(nextCh, next); + } + isForUsing() { + if (!this.isContextual(107)) { + return false; + } + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + if (this.isUnparsedContextual(next, "of")) { + const nextCharAfterOf = this.lookaheadCharCodeSince(next + 2); + if (nextCharAfterOf !== 61 && nextCharAfterOf !== 58 && nextCharAfterOf !== 59) { + return false; + } + } + if (this.chStartsBindingIdentifier(nextCh, next) || this.isUnparsedContextual(next, "void")) { + return true; + } + return false; + } + isAwaitUsing() { + if (!this.isContextual(96)) { + return false; + } + let next = this.nextTokenInLineStart(); + if (this.isUnparsedContextual(next, "using")) { + next = this.nextTokenInLineStartSince(next + 5); + const nextCh = this.codePointAtPos(next); + if (this.chStartsBindingIdentifier(nextCh, next)) { + return true; + } + } + return false; + } + chStartsBindingIdentifier(ch, pos) { + if (isIdentifierStart(ch)) { + keywordRelationalOperator.lastIndex = pos; + if (keywordRelationalOperator.test(this.input)) { + const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex); + if (!isIdentifierChar(endCh) && endCh !== 92) { + return false; + } + } + return true; + } else if (ch === 92) { + return true; + } else { + return false; + } + } + chStartsBindingPattern(ch) { + return ch === 91 || ch === 123; + } + hasFollowingBindingAtom() { + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingPattern(nextCh) || this.chStartsBindingIdentifier(nextCh, next); + } + hasInLineFollowingBindingIdentifierOrBrace() { + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return nextCh === 123 || this.chStartsBindingIdentifier(nextCh, next); + } + allowsUsing() { + return (this.scope.inModule || !this.scope.inTopLevel) && !this.scope.inBareCaseStatement; + } + parseModuleItem() { + return this.parseStatementLike(1 | 2 | 4 | 8); + } + parseStatementListItem() { + return this.parseStatementLike(2 | 4 | (!this.options.annexB || this.state.strict ? 0 : 8)); + } + parseStatementOrSloppyAnnexBFunctionDeclaration(allowLabeledFunction = false) { + let flags = 0; + if (this.options.annexB && !this.state.strict) { + flags |= 4; + if (allowLabeledFunction) { + flags |= 8; + } + } + return this.parseStatementLike(flags); + } + parseStatement() { + return this.parseStatementLike(0); + } + parseStatementLike(flags) { + let decorators = null; + if (this.match(26)) { + decorators = this.parseDecorators(true); + } + return this.parseStatementContent(flags, decorators); + } + parseStatementContent(flags, decorators) { + const startType = this.state.type; + const node = this.startNode(); + const allowDeclaration = !!(flags & 2); + const allowFunctionDeclaration = !!(flags & 4); + const topLevel = flags & 1; + switch (startType) { + case 60: + return this.parseBreakContinueStatement(node, true); + case 63: + return this.parseBreakContinueStatement(node, false); + case 64: + return this.parseDebuggerStatement(node); + case 90: + return this.parseDoWhileStatement(node); + case 91: + return this.parseForStatement(node); + case 68: + if (this.lookaheadCharCode() === 46) break; + if (!allowFunctionDeclaration) { + this.raise(this.state.strict ? Errors.StrictFunction : this.options.annexB ? Errors.SloppyFunctionAnnexB : Errors.SloppyFunction, this.state.startLoc); + } + return this.parseFunctionStatement(node, false, !allowDeclaration && allowFunctionDeclaration); + case 80: + if (!allowDeclaration) this.unexpected(); + return this.parseClass(this.maybeTakeDecorators(decorators, node), true); + case 69: + return this.parseIfStatement(node); + case 70: + return this.parseReturnStatement(node); + case 71: + return this.parseSwitchStatement(node); + case 72: + return this.parseThrowStatement(node); + case 73: + return this.parseTryStatement(node); + case 96: + if (this.isAwaitUsing()) { + if (!this.allowsUsing()) { + this.raise(Errors.UnexpectedUsingDeclaration, node); + } else if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, node); + } else if (!this.recordAwaitIfAllowed()) { + this.raise(Errors.AwaitUsingNotInAsyncContext, node); + } + this.next(); + return this.parseVarStatement(node, "await using"); + } + break; + case 107: + if (this.state.containsEsc || !this.hasInLineFollowingBindingIdentifierOrBrace()) { + break; + } + if (!this.allowsUsing()) { + this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc); + } else if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc); + } + return this.parseVarStatement(node, "using"); + case 100: + { + if (this.state.containsEsc) { + break; + } + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + if (nextCh !== 91) { + if (!allowDeclaration && this.hasFollowingLineBreak()) break; + if (!this.chStartsBindingIdentifier(nextCh, next) && nextCh !== 123) { + break; + } + } + } + case 75: + { + if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc); + } + } + case 74: + { + const kind = this.state.value; + return this.parseVarStatement(node, kind); + } + case 92: + return this.parseWhileStatement(node); + case 76: + return this.parseWithStatement(node); + case 5: + return this.parseBlock(); + case 13: + return this.parseEmptyStatement(node); + case 83: + { + const nextTokenCharCode = this.lookaheadCharCode(); + if (nextTokenCharCode === 40 || nextTokenCharCode === 46) { + break; + } + } + case 82: + { + if (!(this.optionFlags & 8) && !topLevel) { + this.raise(Errors.UnexpectedImportExport, this.state.startLoc); + } + this.next(); + let result; + if (startType === 83) { + result = this.parseImport(node); + } else { + result = this.parseExport(node, decorators); + } + this.assertModuleNodeAllowed(result); + return result; + } + default: + { + if (this.isAsyncFunction()) { + if (!allowDeclaration) { + this.raise(Errors.AsyncFunctionInSingleStatementContext, this.state.startLoc); + } + this.next(); + return this.parseFunctionStatement(node, true, !allowDeclaration && allowFunctionDeclaration); + } + } + } + const maybeName = this.state.value; + const expr = this.parseExpression(); + if (tokenIsIdentifier(startType) && expr.type === "Identifier" && this.eat(14)) { + return this.parseLabeledStatement(node, maybeName, expr, flags); + } else { + return this.parseExpressionStatement(node, expr, decorators); + } + } + assertModuleNodeAllowed(node) { + if (!(this.optionFlags & 8) && !this.inModule) { + this.raise(Errors.ImportOutsideModule, node); + } + } + decoratorsEnabledBeforeExport() { + if (this.hasPlugin("decorators-legacy")) return true; + return this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") !== false; + } + maybeTakeDecorators(maybeDecorators, classNode, exportNode) { + if (maybeDecorators) { + var _classNode$decorators; + if ((_classNode$decorators = classNode.decorators) != null && _classNode$decorators.length) { + if (typeof this.getPluginOption("decorators", "decoratorsBeforeExport") !== "boolean") { + this.raise(Errors.DecoratorsBeforeAfterExport, classNode.decorators[0]); + } + classNode.decorators.unshift(...maybeDecorators); + } else { + classNode.decorators = maybeDecorators; + } + this.resetStartLocationFromNode(classNode, maybeDecorators[0]); + if (exportNode) this.resetStartLocationFromNode(exportNode, classNode); + } + return classNode; + } + canHaveLeadingDecorator() { + return this.match(80); + } + parseDecorators(allowExport) { + const decorators = []; + do { + decorators.push(this.parseDecorator()); + } while (this.match(26)); + if (this.match(82)) { + if (!allowExport) { + this.unexpected(); + } + if (!this.decoratorsEnabledBeforeExport()) { + this.raise(Errors.DecoratorExportClass, this.state.startLoc); + } + } else if (!this.canHaveLeadingDecorator()) { + throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc); + } + return decorators; + } + parseDecorator() { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + const node = this.startNode(); + this.next(); + if (this.hasPlugin("decorators")) { + const startLoc = this.state.startLoc; + let expr; + if (this.match(10)) { + const startLoc = this.state.startLoc; + this.next(); + expr = this.parseExpression(); + this.expect(11); + expr = this.wrapParenthesis(startLoc, expr); + const paramsStartLoc = this.state.startLoc; + node.expression = this.parseMaybeDecoratorArguments(expr, startLoc); + if (this.getPluginOption("decorators", "allowCallParenthesized") === false && node.expression !== expr) { + this.raise(Errors.DecoratorArgumentsOutsideParentheses, paramsStartLoc); + } + } else { + expr = this.parseIdentifier(false); + while (this.eat(16)) { + const node = this.startNodeAt(startLoc); + node.object = expr; + if (this.match(139)) { + this.classScope.usePrivateName(this.state.value, this.state.startLoc); + node.property = this.parsePrivateName(); + } else { + node.property = this.parseIdentifier(true); + } + node.computed = false; + expr = this.finishNode(node, "MemberExpression"); + } + node.expression = this.parseMaybeDecoratorArguments(expr, startLoc); + } + } else { + node.expression = this.parseExprSubscripts(); + } + return this.finishNode(node, "Decorator"); + } + parseMaybeDecoratorArguments(expr, startLoc) { + if (this.eat(10)) { + const node = this.startNodeAt(startLoc); + node.callee = expr; + node.arguments = this.parseCallExpressionArguments(); + this.toReferencedList(node.arguments); + return this.finishNode(node, "CallExpression"); + } + return expr; + } + parseBreakContinueStatement(node, isBreak) { + this.next(); + if (this.isLineTerminator()) { + node.label = null; + } else { + node.label = this.parseIdentifier(); + this.semicolon(); + } + this.verifyBreakContinue(node, isBreak); + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement"); + } + verifyBreakContinue(node, isBreak) { + let i; + for (i = 0; i < this.state.labels.length; ++i) { + const lab = this.state.labels[i]; + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === 1)) { + break; + } + if (node.label && isBreak) break; + } + } + if (i === this.state.labels.length) { + const type = isBreak ? "BreakStatement" : "ContinueStatement"; + this.raise(Errors.IllegalBreakContinue, node, { + type + }); + } + } + parseDebuggerStatement(node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement"); + } + parseHeaderExpression() { + this.expect(10); + const val = this.parseExpression(); + this.expect(11); + return val; + } + parseDoWhileStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.state.labels.pop(); + this.expect(92); + node.test = this.parseHeaderExpression(); + this.eat(13); + return this.finishNode(node, "DoWhileStatement"); + } + parseForStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + let awaitAt = null; + if (this.isContextual(96) && this.recordAwaitIfAllowed()) { + awaitAt = this.state.startLoc; + this.next(); + } + this.scope.enter(0); + this.expect(10); + if (this.match(13)) { + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, null); + } + const startsWithLet = this.isContextual(100); + { + const startsWithAwaitUsing = this.isAwaitUsing(); + const starsWithUsingDeclaration = startsWithAwaitUsing || this.isForUsing(); + const isLetOrUsing = startsWithLet && this.hasFollowingBindingAtom() || starsWithUsingDeclaration; + if (this.match(74) || this.match(75) || isLetOrUsing) { + const initNode = this.startNode(); + let kind; + if (startsWithAwaitUsing) { + kind = "await using"; + if (!this.recordAwaitIfAllowed()) { + this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc); + } + this.next(); + } else { + kind = this.state.value; + } + this.next(); + this.parseVar(initNode, true, kind); + const init = this.finishNode(initNode, "VariableDeclaration"); + const isForIn = this.match(58); + if (isForIn && starsWithUsingDeclaration) { + this.raise(Errors.ForInUsing, init); + } + if ((isForIn || this.isContextual(102)) && init.declarations.length === 1) { + return this.parseForIn(node, init, awaitAt); + } + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, init); + } + } + const startsWithAsync = this.isContextual(95); + const refExpressionErrors = new ExpressionErrors(); + const init = this.parseExpression(true, refExpressionErrors); + const isForOf = this.isContextual(102); + if (isForOf) { + if (startsWithLet) { + this.raise(Errors.ForOfLet, init); + } + if (awaitAt === null && startsWithAsync && init.type === "Identifier") { + this.raise(Errors.ForOfAsync, init); + } + } + if (isForOf || this.match(58)) { + this.checkDestructuringPrivate(refExpressionErrors); + this.toAssignable(init, true); + const type = isForOf ? "ForOfStatement" : "ForInStatement"; + this.checkLVal(init, { + type + }); + return this.parseForIn(node, init, awaitAt); + } else { + this.checkExpressionErrors(refExpressionErrors, true); + } + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, init); + } + parseFunctionStatement(node, isAsync, isHangingDeclaration) { + this.next(); + return this.parseFunction(node, 1 | (isHangingDeclaration ? 2 : 0) | (isAsync ? 8 : 0)); + } + parseIfStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration(); + node.alternate = this.eat(66) ? this.parseStatementOrSloppyAnnexBFunctionDeclaration() : null; + return this.finishNode(node, "IfStatement"); + } + parseReturnStatement(node) { + if (!this.prodParam.hasReturn) { + this.raise(Errors.IllegalReturn, this.state.startLoc); + } + this.next(); + if (this.isLineTerminator()) { + node.argument = null; + } else { + node.argument = this.parseExpression(); + this.semicolon(); + } + return this.finishNode(node, "ReturnStatement"); + } + parseSwitchStatement(node) { + this.next(); + node.discriminant = this.parseHeaderExpression(); + const cases = node.cases = []; + this.expect(5); + this.state.labels.push(switchLabel); + this.scope.enter(256); + let cur; + for (let sawDefault; !this.match(8);) { + if (this.match(61) || this.match(65)) { + const isCase = this.match(61); + if (cur) this.finishNode(cur, "SwitchCase"); + cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) { + this.raise(Errors.MultipleDefaultsInSwitch, this.state.lastTokStartLoc); + } + sawDefault = true; + cur.test = null; + } + this.expect(14); + } else { + if (cur) { + cur.consequent.push(this.parseStatementListItem()); + } else { + this.unexpected(); + } + } + } + this.scope.exit(); + if (cur) this.finishNode(cur, "SwitchCase"); + this.next(); + this.state.labels.pop(); + return this.finishNode(node, "SwitchStatement"); + } + parseThrowStatement(node) { + this.next(); + if (this.hasPrecedingLineBreak()) { + this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc); + } + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement"); + } + parseCatchClauseParam() { + const param = this.parseBindingAtom(); + this.scope.enter(this.options.annexB && param.type === "Identifier" ? 8 : 0); + this.checkLVal(param, { + type: "CatchClause" + }, 9); + return param; + } + parseTryStatement(node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + if (this.match(62)) { + const clause = this.startNode(); + this.next(); + if (this.match(10)) { + this.expect(10); + clause.param = this.parseCatchClauseParam(); + this.expect(11); + } else { + clause.param = null; + this.scope.enter(0); + } + clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false)); + this.scope.exit(); + node.handler = this.finishNode(clause, "CatchClause"); + } + node.finalizer = this.eat(67) ? this.parseBlock() : null; + if (!node.handler && !node.finalizer) { + this.raise(Errors.NoCatchOrFinally, node); + } + return this.finishNode(node, "TryStatement"); + } + parseVarStatement(node, kind, allowMissingInitializer = false) { + this.next(); + this.parseVar(node, false, kind, allowMissingInitializer); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration"); + } + parseWhileStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.state.labels.pop(); + return this.finishNode(node, "WhileStatement"); + } + parseWithStatement(node) { + if (this.state.strict) { + this.raise(Errors.StrictWith, this.state.startLoc); + } + this.next(); + node.object = this.parseHeaderExpression(); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + return this.finishNode(node, "WithStatement"); + } + parseEmptyStatement(node) { + this.next(); + return this.finishNode(node, "EmptyStatement"); + } + parseLabeledStatement(node, maybeName, expr, flags) { + for (const label of this.state.labels) { + if (label.name === maybeName) { + this.raise(Errors.LabelRedeclaration, expr, { + labelName: maybeName + }); + } + } + const kind = tokenIsLoop(this.state.type) ? 1 : this.match(71) ? 2 : null; + for (let i = this.state.labels.length - 1; i >= 0; i--) { + const label = this.state.labels[i]; + if (label.statementStart === node.start) { + label.statementStart = this.sourceToOffsetPos(this.state.start); + label.kind = kind; + } else { + break; + } + } + this.state.labels.push({ + name: maybeName, + kind: kind, + statementStart: this.sourceToOffsetPos(this.state.start) + }); + node.body = flags & 8 ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement(); + this.state.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement"); + } + parseExpressionStatement(node, expr, decorators) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement"); + } + parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) { + const node = this.startNode(); + if (allowDirectives) { + this.state.strictErrors.clear(); + } + this.expect(5); + if (createNewLexicalScope) { + this.scope.enter(0); + } + this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse); + if (createNewLexicalScope) { + this.scope.exit(); + } + return this.finishNode(node, "BlockStatement"); + } + isValidDirective(stmt) { + return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized; + } + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + const body = node.body = []; + const directives = node.directives = []; + this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse); + } + parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) { + const oldStrict = this.state.strict; + let hasStrictModeDirective = false; + let parsedNonDirective = false; + while (!this.match(end)) { + const stmt = topLevel ? this.parseModuleItem() : this.parseStatementListItem(); + if (directives && !parsedNonDirective) { + if (this.isValidDirective(stmt)) { + const directive = this.stmtToDirective(stmt); + directives.push(directive); + if (!hasStrictModeDirective && directive.value.value === "use strict") { + hasStrictModeDirective = true; + this.setStrict(true); + } + continue; + } + parsedNonDirective = true; + this.state.strictErrors.clear(); + } + body.push(stmt); + } + afterBlockParse == null || afterBlockParse.call(this, hasStrictModeDirective); + if (!oldStrict) { + this.setStrict(false); + } + this.next(); + } + parseFor(node, init) { + node.init = init; + this.semicolon(false); + node.test = this.match(13) ? null : this.parseExpression(); + this.semicolon(false); + node.update = this.match(11) ? null : this.parseExpression(); + this.expect(11); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, "ForStatement"); + } + parseForIn(node, init, awaitAt) { + const isForIn = this.match(58); + this.next(); + if (isForIn) { + if (awaitAt !== null) this.unexpected(awaitAt); + } else { + node.await = awaitAt !== null; + } + if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || !this.options.annexB || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) { + this.raise(Errors.ForInOfLoopInitializer, init, { + type: isForIn ? "ForInStatement" : "ForOfStatement" + }); + } + if (init.type === "AssignmentPattern") { + this.raise(Errors.InvalidLhs, init, { + ancestor: { + type: "ForStatement" + } + }); + } + node.left = init; + node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn(); + this.expect(11); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement"); + } + parseVar(node, isFor, kind, allowMissingInitializer = false) { + const declarations = node.declarations = []; + node.kind = kind; + for (;;) { + const decl = this.startNode(); + this.parseVarId(decl, kind); + decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn(); + if (decl.init === null && !allowMissingInitializer) { + if (decl.id.type !== "Identifier" && !(isFor && (this.match(58) || this.isContextual(102)))) { + this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, { + kind: "destructuring" + }); + } else if ((kind === "const" || kind === "using" || kind === "await using") && !(this.match(58) || this.isContextual(102))) { + this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, { + kind + }); + } + } + declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(12)) break; + } + return node; + } + parseVarId(decl, kind) { + const id = this.parseBindingAtom(); + if (kind === "using" || kind === "await using") { + if (id.type === "ArrayPattern" || id.type === "ObjectPattern") { + this.raise(Errors.UsingDeclarationHasBindingPattern, id.loc.start); + } + } else { + if (id.type === "VoidPattern") { + this.raise(Errors.UnexpectedVoidPattern, id.loc.start); + } + } + this.checkLVal(id, { + type: "VariableDeclarator" + }, kind === "var" ? 5 : 8201); + decl.id = id; + } + parseAsyncFunctionExpression(node) { + return this.parseFunction(node, 8); + } + parseFunction(node, flags = 0) { + const hangingDeclaration = flags & 2; + const isDeclaration = !!(flags & 1); + const requireId = isDeclaration && !(flags & 4); + const isAsync = !!(flags & 8); + this.initFunction(node, isAsync); + if (this.match(55)) { + if (hangingDeclaration) { + this.raise(Errors.GeneratorInSingleStatementContext, this.state.startLoc); + } + this.next(); + node.generator = true; + } + if (isDeclaration) { + node.id = this.parseFunctionId(requireId); + } + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = false; + this.scope.enter(514); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + if (!isDeclaration) { + node.id = this.parseFunctionId(); + } + this.parseFunctionParams(node, false); + this.withSmartMixTopicForbiddingContext(() => { + this.parseFunctionBodyAndFinish(node, isDeclaration ? "FunctionDeclaration" : "FunctionExpression"); + }); + this.prodParam.exit(); + this.scope.exit(); + if (isDeclaration && !hangingDeclaration) { + this.registerFunctionStatementId(node); + } + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return node; + } + parseFunctionId(requireId) { + return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null; + } + parseFunctionParams(node, isConstructor) { + this.expect(10); + this.expressionScope.enter(newParameterDeclarationScope()); + node.params = this.parseBindingList(11, 41, 2 | (isConstructor ? 4 : 0)); + this.expressionScope.exit(); + } + registerFunctionStatementId(node) { + if (!node.id) return; + this.scope.declareName(node.id.name, !this.options.annexB || this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? 5 : 8201 : 17, node.id.loc.start); + } + parseClass(node, isStatement, optionalId) { + this.next(); + const oldStrict = this.state.strict; + this.state.strict = true; + this.parseClassId(node, isStatement, optionalId); + this.parseClassSuper(node); + node.body = this.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression"); + } + isClassProperty() { + return this.match(29) || this.match(13) || this.match(8); + } + isClassMethod() { + return this.match(10); + } + nameIsConstructor(key) { + return key.type === "Identifier" && key.name === "constructor" || key.type === "StringLiteral" && key.value === "constructor"; + } + isNonstaticConstructor(method) { + return !method.computed && !method.static && this.nameIsConstructor(method.key); + } + parseClassBody(hadSuperClass, oldStrict) { + this.classScope.enter(); + const state = { + hadConstructor: false, + hadSuperClass + }; + let decorators = []; + const classBody = this.startNode(); + classBody.body = []; + this.expect(5); + this.withSmartMixTopicForbiddingContext(() => { + while (!this.match(8)) { + if (this.eat(13)) { + if (decorators.length > 0) { + throw this.raise(Errors.DecoratorSemicolon, this.state.lastTokEndLoc); + } + continue; + } + if (this.match(26)) { + decorators.push(this.parseDecorator()); + continue; + } + const member = this.startNode(); + if (decorators.length) { + member.decorators = decorators; + this.resetStartLocationFromNode(member, decorators[0]); + decorators = []; + } + this.parseClassMember(classBody, member, state); + if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) { + this.raise(Errors.DecoratorConstructor, member); + } + } + }); + this.state.strict = oldStrict; + this.next(); + if (decorators.length) { + throw this.raise(Errors.TrailingDecorator, this.state.startLoc); + } + this.classScope.exit(); + return this.finishNode(classBody, "ClassBody"); + } + parseClassMemberFromModifier(classBody, member) { + const key = this.parseIdentifier(true); + if (this.isClassMethod()) { + const method = member; + method.kind = "method"; + method.computed = false; + method.key = key; + method.static = false; + this.pushClassMethod(classBody, method, false, false, false, false); + return true; + } else if (this.isClassProperty()) { + const prop = member; + prop.computed = false; + prop.key = key; + prop.static = false; + classBody.body.push(this.parseClassProperty(prop)); + return true; + } + this.resetPreviousNodeTrailingComments(key); + return false; + } + parseClassMember(classBody, member, state) { + const isStatic = this.isContextual(106); + if (isStatic) { + if (this.parseClassMemberFromModifier(classBody, member)) { + return; + } + if (this.eat(5)) { + this.parseClassStaticBlock(classBody, member); + return; + } + } + this.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const publicMethod = member; + const privateMethod = member; + const publicProp = member; + const privateProp = member; + const accessorProp = member; + const method = publicMethod; + const publicMember = publicMethod; + member.static = isStatic; + this.parsePropertyNamePrefixOperator(member); + if (this.eat(55)) { + method.kind = "method"; + const isPrivateName = this.match(139); + this.parseClassElementName(method); + this.parsePostMemberNameModifiers(method); + if (isPrivateName) { + this.pushClassPrivateMethod(classBody, privateMethod, true, false); + return; + } + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsGenerator, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, true, false, false, false); + return; + } + const isContextual = !this.state.containsEsc && tokenIsIdentifier(this.state.type); + const key = this.parseClassElementName(member); + const maybeContextualKw = isContextual ? key.name : null; + const isPrivate = this.isPrivateName(key); + const maybeQuestionTokenStartLoc = this.state.startLoc; + this.parsePostMemberNameModifiers(publicMember); + if (this.isClassMethod()) { + method.kind = "method"; + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + return; + } + const isConstructor = this.isNonstaticConstructor(publicMethod); + let allowsDirectSuper = false; + if (isConstructor) { + publicMethod.kind = "constructor"; + if (state.hadConstructor && !this.hasPlugin("typescript")) { + this.raise(Errors.DuplicateConstructor, key); + } + if (isConstructor && this.hasPlugin("typescript") && member.override) { + this.raise(Errors.OverrideOnConstructor, key); + } + state.hadConstructor = true; + allowsDirectSuper = state.hadSuperClass; + } + this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper); + } else if (this.isClassProperty()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else if (maybeContextualKw === "async" && !this.isLineTerminator()) { + this.resetPreviousNodeTrailingComments(key); + const isGenerator = this.eat(55); + if (publicMember.optional) { + this.unexpected(maybeQuestionTokenStartLoc); + } + method.kind = "method"; + const isPrivate = this.match(139); + this.parseClassElementName(method); + this.parsePostMemberNameModifiers(publicMember); + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsAsync, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false); + } + } else if ((maybeContextualKw === "get" || maybeContextualKw === "set") && !(this.match(55) && this.isLineTerminator())) { + this.resetPreviousNodeTrailingComments(key); + method.kind = maybeContextualKw; + const isPrivate = this.match(139); + this.parseClassElementName(publicMethod); + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsAccessor, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, false, false, false, false); + } + this.checkGetterSetterParams(publicMethod); + } else if (maybeContextualKw === "accessor" && !this.isLineTerminator()) { + this.expectPlugin("decoratorAutoAccessors"); + this.resetPreviousNodeTrailingComments(key); + const isPrivate = this.match(139); + this.parseClassElementName(publicProp); + this.pushClassAccessorProperty(classBody, accessorProp, isPrivate); + } else if (this.isLineTerminator()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else { + this.unexpected(); + } + } + parseClassElementName(member) { + const { + type, + value + } = this.state; + if ((type === 132 || type === 134) && member.static && value === "prototype") { + this.raise(Errors.StaticPrototype, this.state.startLoc); + } + if (type === 139) { + if (value === "constructor") { + this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc); + } + const key = this.parsePrivateName(); + member.key = key; + return key; + } + this.parsePropertyName(member); + return member.key; + } + parseClassStaticBlock(classBody, member) { + var _member$decorators; + this.scope.enter(576 | 128 | 16); + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(0); + const body = member.body = []; + this.parseBlockOrModuleBlockBody(body, undefined, false, 8); + this.prodParam.exit(); + this.scope.exit(); + this.state.labels = oldLabels; + classBody.body.push(this.finishNode(member, "StaticBlock")); + if ((_member$decorators = member.decorators) != null && _member$decorators.length) { + this.raise(Errors.DecoratorStaticBlock, member); + } + } + pushClassProperty(classBody, prop) { + if (!prop.computed && this.nameIsConstructor(prop.key)) { + this.raise(Errors.ConstructorClassField, prop.key); + } + classBody.body.push(this.parseClassProperty(prop)); + } + pushClassPrivateProperty(classBody, prop) { + const node = this.parseClassPrivateProperty(prop); + classBody.body.push(node); + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start); + } + pushClassAccessorProperty(classBody, prop, isPrivate) { + if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) { + this.raise(Errors.ConstructorClassField, prop.key); + } + const node = this.parseClassAccessorProperty(prop); + classBody.body.push(node); + if (isPrivate) { + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start); + } + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true)); + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true); + classBody.body.push(node); + const kind = node.kind === "get" ? node.static ? 6 : 2 : node.kind === "set" ? node.static ? 5 : 1 : 0; + this.declareClassPrivateMethodInScope(node, kind); + } + declareClassPrivateMethodInScope(node, kind) { + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start); + } + parsePostMemberNameModifiers(methodOrProp) {} + parseClassPrivateProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassPrivateProperty"); + } + parseClassProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassProperty"); + } + parseClassAccessorProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassAccessorProperty"); + } + parseInitializer(node) { + this.scope.enter(576 | 16); + this.expressionScope.enter(newExpressionScope()); + this.prodParam.enter(0); + node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null; + this.expressionScope.exit(); + this.prodParam.exit(); + this.scope.exit(); + } + parseClassId(node, isStatement, optionalId, bindingType = 8331) { + if (tokenIsIdentifier(this.state.type)) { + node.id = this.parseIdentifier(); + if (isStatement) { + this.declareNameFromIdentifier(node.id, bindingType); + } + } else { + if (optionalId || !isStatement) { + node.id = null; + } else { + throw this.raise(Errors.MissingClassName, this.state.startLoc); + } + } + } + parseClassSuper(node) { + node.superClass = this.eat(81) ? this.parseExprSubscripts() : null; + } + parseExport(node, decorators) { + const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, true); + const hasDefault = this.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier); + const parseAfterDefault = !hasDefault || this.eat(12); + const hasStar = parseAfterDefault && this.eatExportStar(node); + const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node); + const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12)); + const isFromRequired = hasDefault || hasStar; + if (hasStar && !hasNamespace) { + if (hasDefault) this.unexpected(); + if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.parseExportFrom(node, true); + this.sawUnambiguousESM = true; + return this.finishNode(node, "ExportAllDeclaration"); + } + const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node); + if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) { + this.unexpected(null, 5); + } + if (hasNamespace && parseAfterNamespace) { + this.unexpected(null, 98); + } + let hasDeclaration; + if (isFromRequired || hasSpecifiers) { + hasDeclaration = false; + if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.parseExportFrom(node, isFromRequired); + } else { + hasDeclaration = this.maybeParseExportDeclaration(node); + } + if (isFromRequired || hasSpecifiers || hasDeclaration) { + var _node2$declaration; + const node2 = node; + this.checkExport(node2, true, false, !!node2.source); + if (((_node2$declaration = node2.declaration) == null ? void 0 : _node2$declaration.type) === "ClassDeclaration") { + this.maybeTakeDecorators(decorators, node2.declaration, node2); + } else if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.sawUnambiguousESM = true; + return this.finishNode(node2, "ExportNamedDeclaration"); + } + if (this.eat(65)) { + const node2 = node; + const decl = this.parseExportDefaultExpression(); + node2.declaration = decl; + if (decl.type === "ClassDeclaration") { + this.maybeTakeDecorators(decorators, decl, node2); + } else if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.checkExport(node2, true, true); + this.sawUnambiguousESM = true; + return this.finishNode(node2, "ExportDefaultDeclaration"); + } + this.unexpected(null, 5); + } + eatExportStar(node) { + return this.eat(55); + } + maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) { + if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) { + this.expectPlugin("exportDefaultFrom", maybeDefaultIdentifier == null ? void 0 : maybeDefaultIdentifier.loc.start); + const id = maybeDefaultIdentifier || this.parseIdentifier(true); + const specifier = this.startNodeAtNode(id); + specifier.exported = id; + node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return true; + } + return false; + } + maybeParseExportNamespaceSpecifier(node) { + if (this.isContextual(93)) { + var _ref, _ref$specifiers; + (_ref$specifiers = (_ref = node).specifiers) != null ? _ref$specifiers : _ref.specifiers = []; + const specifier = this.startNodeAt(this.state.lastTokStartLoc); + this.next(); + specifier.exported = this.parseModuleExportName(); + node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier")); + return true; + } + return false; + } + maybeParseExportNamedSpecifiers(node) { + if (this.match(5)) { + const node2 = node; + if (!node2.specifiers) node2.specifiers = []; + const isTypeExport = node2.exportKind === "type"; + node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport)); + node2.source = null; + if (this.hasPlugin("importAssertions")) { + node2.assertions = []; + } else { + node2.attributes = []; + } + node2.declaration = null; + return true; + } + return false; + } + maybeParseExportDeclaration(node) { + if (this.shouldParseExportDeclaration()) { + node.specifiers = []; + node.source = null; + if (this.hasPlugin("importAssertions")) { + node.assertions = []; + } else { + node.attributes = []; + } + node.declaration = this.parseExportDeclaration(node); + return true; + } + return false; + } + isAsyncFunction() { + if (!this.isContextual(95)) return false; + const next = this.nextTokenInLineStart(); + return this.isUnparsedContextual(next, "function"); + } + parseExportDefaultExpression() { + const expr = this.startNode(); + if (this.match(68)) { + this.next(); + return this.parseFunction(expr, 1 | 4); + } else if (this.isAsyncFunction()) { + this.next(); + this.next(); + return this.parseFunction(expr, 1 | 4 | 8); + } + if (this.match(80)) { + return this.parseClass(expr, true, true); + } + if (this.match(26)) { + if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") === true) { + this.raise(Errors.DecoratorBeforeExport, this.state.startLoc); + } + return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(false), this.startNode()), true, true); + } + if (this.match(75) || this.match(74) || this.isLet() || this.isUsing() || this.isAwaitUsing()) { + throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc); + } + const res = this.parseMaybeAssignAllowIn(); + this.semicolon(); + return res; + } + parseExportDeclaration(node) { + if (this.match(80)) { + const node = this.parseClass(this.startNode(), true, false); + return node; + } + return this.parseStatementListItem(); + } + isExportDefaultSpecifier() { + const { + type + } = this.state; + if (tokenIsIdentifier(type)) { + if (type === 95 && !this.state.containsEsc || type === 100) { + return false; + } + if ((type === 130 || type === 129) && !this.state.containsEsc) { + const next = this.nextTokenStart(); + const nextChar = this.input.charCodeAt(next); + if (nextChar === 123 || this.chStartsBindingIdentifier(nextChar, next) && !this.input.startsWith("from", next)) { + this.expectOnePlugin(["flow", "typescript"]); + return false; + } + } + } else if (!this.match(65)) { + return false; + } + const next = this.nextTokenStart(); + const hasFrom = this.isUnparsedContextual(next, "from"); + if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) { + return true; + } + if (this.match(65) && hasFrom) { + const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4)); + return nextAfterFrom === 34 || nextAfterFrom === 39; + } + return false; + } + parseExportFrom(node, expect) { + if (this.eatContextual(98)) { + node.source = this.parseImportSource(); + this.checkExport(node); + this.maybeParseImportAttributes(node); + this.checkJSONModuleImport(node); + } else if (expect) { + this.unexpected(); + } + this.semicolon(); + } + shouldParseExportDeclaration() { + const { + type + } = this.state; + if (type === 26) { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + if (this.hasPlugin("decorators")) { + if (this.getPluginOption("decorators", "decoratorsBeforeExport") === true) { + this.raise(Errors.DecoratorBeforeExport, this.state.startLoc); + } + return true; + } + } + if (this.isUsing()) { + this.raise(Errors.UsingDeclarationExport, this.state.startLoc); + return true; + } + if (this.isAwaitUsing()) { + this.raise(Errors.UsingDeclarationExport, this.state.startLoc); + return true; + } + return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction(); + } + checkExport(node, checkNames, isDefault, isFrom) { + if (checkNames) { + var _node$specifiers; + if (isDefault) { + this.checkDuplicateExports(node, "default"); + if (this.hasPlugin("exportDefaultFrom")) { + var _declaration$extra; + const declaration = node.declaration; + if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) { + this.raise(Errors.ExportDefaultFromAsIdentifier, declaration); + } + } + } else if ((_node$specifiers = node.specifiers) != null && _node$specifiers.length) { + for (const specifier of node.specifiers) { + const { + exported + } = specifier; + const exportName = exported.type === "Identifier" ? exported.name : exported.value; + this.checkDuplicateExports(specifier, exportName); + if (!isFrom && specifier.local) { + const { + local + } = specifier; + if (local.type !== "Identifier") { + this.raise(Errors.ExportBindingIsString, specifier, { + localName: local.value, + exportName + }); + } else { + this.checkReservedWord(local.name, local.loc.start, true, false); + this.scope.checkLocalExport(local); + } + } + } + } else if (node.declaration) { + const decl = node.declaration; + if (decl.type === "FunctionDeclaration" || decl.type === "ClassDeclaration") { + const { + id + } = decl; + if (!id) throw new Error("Assertion failure"); + this.checkDuplicateExports(node, id.name); + } else if (decl.type === "VariableDeclaration") { + for (const declaration of decl.declarations) { + this.checkDeclaration(declaration.id); + } + } + } + } + } + checkDeclaration(node) { + if (node.type === "Identifier") { + this.checkDuplicateExports(node, node.name); + } else if (node.type === "ObjectPattern") { + for (const prop of node.properties) { + this.checkDeclaration(prop); + } + } else if (node.type === "ArrayPattern") { + for (const elem of node.elements) { + if (elem) { + this.checkDeclaration(elem); + } + } + } else if (node.type === "ObjectProperty") { + this.checkDeclaration(node.value); + } else if (node.type === "RestElement") { + this.checkDeclaration(node.argument); + } else if (node.type === "AssignmentPattern") { + this.checkDeclaration(node.left); + } + } + checkDuplicateExports(node, exportName) { + if (this.exportedIdentifiers.has(exportName)) { + if (exportName === "default") { + this.raise(Errors.DuplicateDefaultExport, node); + } else { + this.raise(Errors.DuplicateExport, node, { + exportName + }); + } + } + this.exportedIdentifiers.add(exportName); + } + parseExportSpecifiers(isInTypeExport) { + const nodes = []; + let first = true; + this.expect(5); + while (!this.eat(8)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.eat(8)) break; + } + const isMaybeTypeOnly = this.isContextual(130); + const isString = this.match(134); + const node = this.startNode(); + node.local = this.parseModuleExportName(); + nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly)); + } + return nodes; + } + parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { + if (this.eatContextual(93)) { + node.exported = this.parseModuleExportName(); + } else if (isString) { + node.exported = this.cloneStringLiteral(node.local); + } else if (!node.exported) { + node.exported = this.cloneIdentifier(node.local); + } + return this.finishNode(node, "ExportSpecifier"); + } + parseModuleExportName() { + if (this.match(134)) { + const result = this.parseStringLiteral(this.state.value); + const surrogate = loneSurrogate.exec(result.value); + if (surrogate) { + this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, { + surrogateCharCode: surrogate[0].charCodeAt(0) + }); + } + return result; + } + return this.parseIdentifier(true); + } + isJSONModuleImport(node) { + if (node.assertions != null) { + return node.assertions.some(({ + key, + value + }) => { + return value.value === "json" && (key.type === "Identifier" ? key.name === "type" : key.value === "type"); + }); + } + return false; + } + checkImportReflection(node) { + const { + specifiers + } = node; + const singleBindingType = specifiers.length === 1 ? specifiers[0].type : null; + if (node.phase === "source") { + if (singleBindingType !== "ImportDefaultSpecifier") { + this.raise(Errors.SourcePhaseImportRequiresDefault, specifiers[0].loc.start); + } + } else if (node.phase === "defer") { + if (singleBindingType !== "ImportNamespaceSpecifier") { + this.raise(Errors.DeferImportRequiresNamespace, specifiers[0].loc.start); + } + } else if (node.module) { + var _node$assertions; + if (singleBindingType !== "ImportDefaultSpecifier") { + this.raise(Errors.ImportReflectionNotBinding, specifiers[0].loc.start); + } + if (((_node$assertions = node.assertions) == null ? void 0 : _node$assertions.length) > 0) { + this.raise(Errors.ImportReflectionHasAssertion, specifiers[0].loc.start); + } + } + } + checkJSONModuleImport(node) { + if (this.isJSONModuleImport(node) && node.type !== "ExportAllDeclaration") { + const { + specifiers + } = node; + if (specifiers != null) { + const nonDefaultNamedSpecifier = specifiers.find(specifier => { + let imported; + if (specifier.type === "ExportSpecifier") { + imported = specifier.local; + } else if (specifier.type === "ImportSpecifier") { + imported = specifier.imported; + } + if (imported !== undefined) { + return imported.type === "Identifier" ? imported.name !== "default" : imported.value !== "default"; + } + }); + if (nonDefaultNamedSpecifier !== undefined) { + this.raise(Errors.ImportJSONBindingNotDefault, nonDefaultNamedSpecifier.loc.start); + } + } + } + } + isPotentialImportPhase(isExport) { + if (isExport) return false; + return this.isContextual(105) || this.isContextual(97) || this.isContextual(127); + } + applyImportPhase(node, isExport, phase, loc) { + if (isExport) { + return; + } + if (phase === "module") { + this.expectPlugin("importReflection", loc); + node.module = true; + } else if (this.hasPlugin("importReflection")) { + node.module = false; + } + if (phase === "source") { + this.expectPlugin("sourcePhaseImports", loc); + node.phase = "source"; + } else if (phase === "defer") { + this.expectPlugin("deferredImportEvaluation", loc); + node.phase = "defer"; + } else if (this.hasPlugin("sourcePhaseImports")) { + node.phase = null; + } + } + parseMaybeImportPhase(node, isExport) { + if (!this.isPotentialImportPhase(isExport)) { + this.applyImportPhase(node, isExport, null); + return null; + } + const phaseIdentifier = this.startNode(); + const phaseIdentifierName = this.parseIdentifierName(true); + const { + type + } = this.state; + const isImportPhase = tokenIsKeywordOrIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; + if (isImportPhase) { + this.applyImportPhase(node, isExport, phaseIdentifierName, phaseIdentifier.loc.start); + return null; + } else { + this.applyImportPhase(node, isExport, null); + return this.createIdentifier(phaseIdentifier, phaseIdentifierName); + } + } + isPrecedingIdImportPhase(phase) { + const { + type + } = this.state; + return tokenIsIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; + } + parseImport(node) { + if (this.match(134)) { + return this.parseImportSourceAndAttributes(node); + } + return this.parseImportSpecifiersAndAfter(node, this.parseMaybeImportPhase(node, false)); + } + parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier) { + node.specifiers = []; + const hasDefault = this.maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier); + const parseNext = !hasDefault || this.eat(12); + const hasStar = parseNext && this.maybeParseStarImportSpecifier(node); + if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node); + this.expectContextual(98); + return this.parseImportSourceAndAttributes(node); + } + parseImportSourceAndAttributes(node) { + var _node$specifiers2; + (_node$specifiers2 = node.specifiers) != null ? _node$specifiers2 : node.specifiers = []; + node.source = this.parseImportSource(); + this.maybeParseImportAttributes(node); + this.checkImportReflection(node); + this.checkJSONModuleImport(node); + this.semicolon(); + this.sawUnambiguousESM = true; + return this.finishNode(node, "ImportDeclaration"); + } + parseImportSource() { + if (!this.match(134)) this.unexpected(); + return this.parseExprAtom(); + } + parseImportSpecifierLocal(node, specifier, type) { + specifier.local = this.parseIdentifier(); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + finishImportSpecifier(specifier, type, bindingType = 8201) { + this.checkLVal(specifier.local, { + type + }, bindingType); + return this.finishNode(specifier, type); + } + parseImportAttributes() { + this.expect(5); + const attrs = []; + const attrNames = new Set(); + do { + if (this.match(8)) { + break; + } + const node = this.startNode(); + const keyName = this.state.value; + if (attrNames.has(keyName)) { + this.raise(Errors.ModuleAttributesWithDuplicateKeys, this.state.startLoc, { + key: keyName + }); + } + attrNames.add(keyName); + if (this.match(134)) { + node.key = this.parseStringLiteral(keyName); + } else { + node.key = this.parseIdentifier(true); + } + this.expect(14); + if (!this.match(134)) { + throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc); + } + node.value = this.parseStringLiteral(this.state.value); + attrs.push(this.finishNode(node, "ImportAttribute")); + } while (this.eat(12)); + this.expect(8); + return attrs; + } + parseModuleAttributes() { + const attrs = []; + const attributes = new Set(); + do { + const node = this.startNode(); + node.key = this.parseIdentifier(true); + if (node.key.name !== "type") { + this.raise(Errors.ModuleAttributeDifferentFromType, node.key); + } + if (attributes.has(node.key.name)) { + this.raise(Errors.ModuleAttributesWithDuplicateKeys, node.key, { + key: node.key.name + }); + } + attributes.add(node.key.name); + this.expect(14); + if (!this.match(134)) { + throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc); + } + node.value = this.parseStringLiteral(this.state.value); + attrs.push(this.finishNode(node, "ImportAttribute")); + } while (this.eat(12)); + return attrs; + } + maybeParseImportAttributes(node) { + let attributes; + { + var useWith = false; + } + if (this.match(76)) { + if (this.hasPrecedingLineBreak() && this.lookaheadCharCode() === 40) { + return; + } + this.next(); + if (this.hasPlugin("moduleAttributes")) { + attributes = this.parseModuleAttributes(); + this.addExtra(node, "deprecatedWithLegacySyntax", true); + } else { + attributes = this.parseImportAttributes(); + } + { + useWith = true; + } + } else if (this.isContextual(94) && !this.hasPrecedingLineBreak()) { + if (!this.hasPlugin("deprecatedImportAssert") && !this.hasPlugin("importAssertions")) { + this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc); + } + if (!this.hasPlugin("importAssertions")) { + this.addExtra(node, "deprecatedAssertSyntax", true); + } + this.next(); + attributes = this.parseImportAttributes(); + } else { + attributes = []; + } + if (!useWith && this.hasPlugin("importAssertions")) { + node.assertions = attributes; + } else { + node.attributes = attributes; + } + } + maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier) { + if (maybeDefaultIdentifier) { + const specifier = this.startNodeAtNode(maybeDefaultIdentifier); + specifier.local = maybeDefaultIdentifier; + node.specifiers.push(this.finishImportSpecifier(specifier, "ImportDefaultSpecifier")); + return true; + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier"); + return true; + } + return false; + } + maybeParseStarImportSpecifier(node) { + if (this.match(55)) { + const specifier = this.startNode(); + this.next(); + this.expectContextual(93); + this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier"); + return true; + } + return false; + } + parseNamedImportSpecifiers(node) { + let first = true; + this.expect(5); + while (!this.eat(8)) { + if (first) { + first = false; + } else { + if (this.eat(14)) { + throw this.raise(Errors.DestructureNamedImport, this.state.startLoc); + } + this.expect(12); + if (this.eat(8)) break; + } + const specifier = this.startNode(); + const importedIsString = this.match(134); + const isMaybeTypeOnly = this.isContextual(130); + specifier.imported = this.parseModuleExportName(); + const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly, undefined); + node.specifiers.push(importSpecifier); + } + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + if (this.eatContextual(93)) { + specifier.local = this.parseIdentifier(); + } else { + const { + imported + } = specifier; + if (importedIsString) { + throw this.raise(Errors.ImportBindingIsString, specifier, { + importName: imported.value + }); + } + this.checkReservedWord(imported.name, specifier.loc.start, true, true); + if (!specifier.local) { + specifier.local = this.cloneIdentifier(imported); + } + } + return this.finishImportSpecifier(specifier, "ImportSpecifier", bindingType); + } + isThisParam(param) { + return param.type === "Identifier" && param.name === "this"; + } + } + class Parser extends StatementParser { + constructor(options, input, pluginsMap) { + options = getOptions(options); + super(options, input); + this.options = options; + this.initializeScopes(); + this.plugins = pluginsMap; + this.filename = options.sourceFilename; + this.startIndex = options.startIndex; + let optionFlags = 0; + if (options.allowAwaitOutsideFunction) { + optionFlags |= 1; + } + if (options.allowReturnOutsideFunction) { + optionFlags |= 2; + } + if (options.allowImportExportEverywhere) { + optionFlags |= 8; + } + if (options.allowSuperOutsideMethod) { + optionFlags |= 16; + } + if (options.allowUndeclaredExports) { + optionFlags |= 64; + } + if (options.allowNewTargetOutsideFunction) { + optionFlags |= 4; + } + if (options.allowYieldOutsideFunction) { + optionFlags |= 32; + } + if (options.ranges) { + optionFlags |= 128; + } + if (options.tokens) { + optionFlags |= 256; + } + if (options.createImportExpressions) { + optionFlags |= 512; + } + if (options.createParenthesizedExpressions) { + optionFlags |= 1024; + } + if (options.errorRecovery) { + optionFlags |= 2048; + } + if (options.attachComment) { + optionFlags |= 4096; + } + if (options.annexB) { + optionFlags |= 8192; + } + this.optionFlags = optionFlags; + } + getScopeHandler() { + return ScopeHandler; + } + parse() { + this.enterInitialScopes(); + const file = this.startNode(); + const program = this.startNode(); + this.nextToken(); + file.errors = null; + this.parseTopLevel(file, program); + file.errors = this.state.errors; + file.comments.length = this.state.commentsLen; + return file; + } + } + function parse(input, options) { + var _options; + if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") { + options = Object.assign({}, options); + try { + options.sourceType = "module"; + const parser = getParser(options, input); + const ast = parser.parse(); + if (parser.sawUnambiguousESM) { + return ast; + } + if (parser.ambiguousScriptDifferentAst) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused) {} + } else { + ast.program.sourceType = "script"; + } + return ast; + } catch (moduleError) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused2) {} + throw moduleError; + } + } else { + return getParser(options, input).parse(); + } + } + function parseExpression(input, options) { + const parser = getParser(options, input); + if (parser.options.strictMode) { + parser.state.strict = true; + } + return parser.getExpression(); + } + function generateExportedTokenTypes(internalTokenTypes) { + const tokenTypes = {}; + for (const typeName of Object.keys(internalTokenTypes)) { + tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]); + } + return tokenTypes; + } + const tokTypes = generateExportedTokenTypes(tt); + function getParser(options, input) { + let cls = Parser; + const pluginsMap = new Map(); + if (options != null && options.plugins) { + for (const plugin of options.plugins) { + let name, opts; + if (typeof plugin === "string") { + name = plugin; + } else { + [name, opts] = plugin; + } + if (!pluginsMap.has(name)) { + pluginsMap.set(name, opts || {}); + } + } + validatePlugins(pluginsMap); + cls = getParserClass(pluginsMap); + } + return new cls(options, input, pluginsMap); + } + const parserClassCache = new Map(); + function getParserClass(pluginsMap) { + const pluginList = []; + for (const name of mixinPluginNames) { + if (pluginsMap.has(name)) { + pluginList.push(name); + } + } + const key = pluginList.join("|"); + let cls = parserClassCache.get(key); + if (!cls) { + cls = Parser; + for (const plugin of pluginList) { + cls = mixinPlugins[plugin](cls); + } + parserClassCache.set(key, cls); + } + return cls; + } + lib.parse = parse; + lib.parseExpression = parseExpression; + lib.tokTypes = tokTypes; + + return lib; +} + +var libExports = /*@__PURE__*/ requireLib(); + +// @ts-check +/** @typedef { import('estree').BaseNode} BaseNode */ + +/** @typedef {{ + skip: () => void; + remove: () => void; + replace: (node: BaseNode) => void; +}} WalkerContext */ + +class WalkerBase { + constructor() { + /** @type {boolean} */ + this.should_skip = false; + + /** @type {boolean} */ + this.should_remove = false; + + /** @type {BaseNode | null} */ + this.replacement = null; + + /** @type {WalkerContext} */ + this.context = { + skip: () => (this.should_skip = true), + remove: () => (this.should_remove = true), + replace: (node) => (this.replacement = node) + }; + } + + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + * @param {BaseNode} node + */ + replace(parent, prop, index, node) { + if (parent) { + if (index !== null) { + parent[prop][index] = node; + } else { + parent[prop] = node; + } + } + } + + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + */ + remove(parent, prop, index) { + if (parent) { + if (index !== null) { + parent[prop].splice(index, 1); + } else { + delete parent[prop]; + } + } + } +} + +// @ts-check + +/** @typedef { import('estree').BaseNode} BaseNode */ +/** @typedef { import('./walker.js').WalkerContext} WalkerContext */ + +/** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => void} SyncHandler */ + +class SyncWalker extends WalkerBase { + /** + * + * @param {SyncHandler} enter + * @param {SyncHandler} leave + */ + constructor(enter, leave) { + super(); + + /** @type {SyncHandler} */ + this.enter = enter; + + /** @type {SyncHandler} */ + this.leave = leave; + } + + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {BaseNode} + */ + visit(node, parent, prop, index) { + if (node) { + if (this.enter) { + const _should_skip = this.should_skip; + const _should_remove = this.should_remove; + const _replacement = this.replacement; + this.should_skip = false; + this.should_remove = false; + this.replacement = null; + + this.enter.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const skipped = this.should_skip; + const removed = this.should_remove; + + this.should_skip = _should_skip; + this.should_remove = _should_remove; + this.replacement = _replacement; + + if (skipped) return node; + if (removed) return null; + } + + for (const key in node) { + const value = node[key]; + + if (typeof value !== "object") { + continue; + } else if (Array.isArray(value)) { + for (let i = 0; i < value.length; i += 1) { + if (value[i] !== null && typeof value[i].type === 'string') { + if (!this.visit(value[i], node, key, i)) { + // removed + i--; + } + } + } + } else if (value !== null && typeof value.type === "string") { + this.visit(value, node, key, null); + } + } + + if (this.leave) { + const _replacement = this.replacement; + const _should_remove = this.should_remove; + this.replacement = null; + this.should_remove = false; + + this.leave.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const removed = this.should_remove; + + this.replacement = _replacement; + this.should_remove = _should_remove; + + if (removed) return null; + } + } + + return node; + } +} + +// @ts-check + +/** @typedef { import('estree').BaseNode} BaseNode */ +/** @typedef { import('./sync.js').SyncHandler} SyncHandler */ +/** @typedef { import('./async.js').AsyncHandler} AsyncHandler */ + +/** + * + * @param {BaseNode} ast + * @param {{ + * enter?: SyncHandler + * leave?: SyncHandler + * }} walker + * @returns {BaseNode} + */ +function walk$2(ast, { enter, leave }) { + const instance = new SyncWalker(enter, leave); + return instance.visit(ast, null); +} + +function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) { + const rootExp = root.type === "Program" ? root.body[0].type === "ExpressionStatement" && root.body[0].expression : root; + walk$2(root, { + enter(node, parent) { + parent && parentStack.push(parent); + if (parent && parent.type.startsWith("TS") && !TS_NODE_TYPES.includes(parent.type)) { + return this.skip(); + } + if (node.type === "Identifier") { + const isLocal = !!knownIds[node.name]; + const isRefed = isReferencedIdentifier(node, parent, parentStack); + if (includeAll || isRefed && !isLocal) { + onIdentifier(node, parent, parentStack, isRefed, isLocal); + } + } else if (node.type === "ObjectProperty" && // eslint-disable-next-line no-restricted-syntax + (parent == null ? void 0 : parent.type) === "ObjectPattern") { + node.inPattern = true; + } else if (isFunctionType(node)) { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + walkFunctionParams( + node, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + } else if (node.type === "BlockStatement") { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + walkBlockDeclarations( + node, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + } else if (node.type === "CatchClause" && node.param) { + for (const id of extractIdentifiers$1(node.param)) { + markScopeIdentifier(node, id, knownIds); + } + } else if (isForStatement(node)) { + walkForStatement( + node, + false, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + }, + leave(node, parent) { + parent && parentStack.pop(); + if (node !== rootExp && node.scopeIds) { + for (const id of node.scopeIds) { + knownIds[id]--; + if (knownIds[id] === 0) { + delete knownIds[id]; + } + } + } + } + }); +} +function isReferencedIdentifier(id, parent, parentStack) { + if (!parent) { + return true; + } + if (id.name === "arguments") { + return false; + } + if (isReferenced(id, parent, parentStack[parentStack.length - 2])) { + return true; + } + switch (parent.type) { + case "AssignmentExpression": + case "AssignmentPattern": + return true; + case "ObjectProperty": + return parent.key !== id && isInDestructureAssignment(parent, parentStack); + case "ArrayPattern": + return isInDestructureAssignment(parent, parentStack); + } + return false; +} +function isInDestructureAssignment(parent, parentStack) { + if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "AssignmentExpression") { + return true; + } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) { + break; + } + } + } + return false; +} +function isInNewExpression(parentStack) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "NewExpression") { + return true; + } else if (p.type !== "MemberExpression") { + break; + } + } + return false; +} +function walkFunctionParams(node, onIdent) { + for (const p of node.params) { + for (const id of extractIdentifiers$1(p)) { + onIdent(id); + } + } +} +function walkBlockDeclarations(block, onIdent) { + for (const stmt of block.body) { + if (stmt.type === "VariableDeclaration") { + if (stmt.declare) continue; + for (const decl of stmt.declarations) { + for (const id of extractIdentifiers$1(decl.id)) { + onIdent(id); + } + } + } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") { + if (stmt.declare || !stmt.id) continue; + onIdent(stmt.id); + } else if (isForStatement(stmt)) { + walkForStatement(stmt, true, onIdent); + } + } +} +function isForStatement(stmt) { + return stmt.type === "ForOfStatement" || stmt.type === "ForInStatement" || stmt.type === "ForStatement"; +} +function walkForStatement(stmt, isVar, onIdent) { + const variable = stmt.type === "ForStatement" ? stmt.init : stmt.left; + if (variable && variable.type === "VariableDeclaration" && (variable.kind === "var" ? isVar : !isVar)) { + for (const decl of variable.declarations) { + for (const id of extractIdentifiers$1(decl.id)) { + onIdent(id); + } + } + } +} +function extractIdentifiers$1(param, nodes = []) { + switch (param.type) { + case "Identifier": + nodes.push(param); + break; + case "MemberExpression": + let object = param; + while (object.type === "MemberExpression") { + object = object.object; + } + nodes.push(object); + break; + case "ObjectPattern": + for (const prop of param.properties) { + if (prop.type === "RestElement") { + extractIdentifiers$1(prop.argument, nodes); + } else { + extractIdentifiers$1(prop.value, nodes); + } + } + break; + case "ArrayPattern": + param.elements.forEach((element) => { + if (element) extractIdentifiers$1(element, nodes); + }); + break; + case "RestElement": + extractIdentifiers$1(param.argument, nodes); + break; + case "AssignmentPattern": + extractIdentifiers$1(param.left, nodes); + break; + } + return nodes; +} +function markKnownIds(name, knownIds) { + if (name in knownIds) { + knownIds[name]++; + } else { + knownIds[name] = 1; + } +} +function markScopeIdentifier(node, child, knownIds) { + const { name } = child; + if (node.scopeIds && node.scopeIds.has(name)) { + return; + } + markKnownIds(name, knownIds); + (node.scopeIds || (node.scopeIds = /* @__PURE__ */ new Set())).add(name); +} +const isFunctionType = (node) => { + return /Function(?:Expression|Declaration)$|Method$/.test(node.type); +}; +const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed; +const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node; +function isReferenced(node, parent, grandparent) { + switch (parent.type) { + // yes: PARENT[NODE] + // yes: NODE.child + // no: parent.NODE + case "MemberExpression": + case "OptionalMemberExpression": + if (parent.property === node) { + return !!parent.computed; + } + return parent.object === node; + case "JSXMemberExpression": + return parent.object === node; + // no: let NODE = init; + // yes: let id = NODE; + case "VariableDeclarator": + return parent.init === node; + // yes: () => NODE + // no: (NODE) => {} + case "ArrowFunctionExpression": + return parent.body === node; + // no: class { #NODE; } + // no: class { get #NODE() {} } + // no: class { #NODE() {} } + // no: class { fn() { return this.#NODE; } } + case "PrivateName": + return false; + // no: class { NODE() {} } + // yes: class { [NODE]() {} } + // no: class { foo(NODE) {} } + case "ClassMethod": + case "ClassPrivateMethod": + case "ObjectMethod": + if (parent.key === node) { + return !!parent.computed; + } + return false; + // yes: { [NODE]: "" } + // no: { NODE: "" } + // depends: { NODE } + // depends: { key: NODE } + case "ObjectProperty": + if (parent.key === node) { + return !!parent.computed; + } + return !grandparent || grandparent.type !== "ObjectPattern"; + // no: class { NODE = value; } + // yes: class { [NODE] = value; } + // yes: class { key = NODE; } + case "ClassProperty": + if (parent.key === node) { + return !!parent.computed; + } + return true; + case "ClassPrivateProperty": + return parent.key !== node; + // no: class NODE {} + // yes: class Foo extends NODE {} + case "ClassDeclaration": + case "ClassExpression": + return parent.superClass === node; + // yes: left = NODE; + // no: NODE = right; + case "AssignmentExpression": + return parent.right === node; + // no: [NODE = foo] = []; + // yes: [foo = NODE] = []; + case "AssignmentPattern": + return parent.right === node; + // no: NODE: for (;;) {} + case "LabeledStatement": + return false; + // no: try {} catch (NODE) {} + case "CatchClause": + return false; + // no: function foo(...NODE) {} + case "RestElement": + return false; + case "BreakStatement": + case "ContinueStatement": + return false; + // no: function NODE() {} + // no: function foo(NODE) {} + case "FunctionDeclaration": + case "FunctionExpression": + return false; + // no: export NODE from "foo"; + // no: export * as NODE from "foo"; + case "ExportNamespaceSpecifier": + case "ExportDefaultSpecifier": + return false; + // no: export { foo as NODE }; + // yes: export { NODE as foo }; + // no: export { NODE as foo } from "foo"; + case "ExportSpecifier": + if (grandparent == null ? void 0 : grandparent.source) { + return false; + } + return parent.local === node; + // no: import NODE from "foo"; + // no: import * as NODE from "foo"; + // no: import { NODE as foo } from "foo"; + // no: import { foo as NODE } from "foo"; + // no: import NODE from "bar"; + case "ImportDefaultSpecifier": + case "ImportNamespaceSpecifier": + case "ImportSpecifier": + return false; + // no: import "foo" assert { NODE: "json" } + case "ImportAttribute": + return false; + // no: <div NODE="foo" /> + case "JSXAttribute": + return false; + // no: [NODE] = []; + // no: ({ NODE }) = []; + case "ObjectPattern": + case "ArrayPattern": + return false; + // no: new.NODE + // no: NODE.target + case "MetaProperty": + return false; + // yes: type X = { someProperty: NODE } + // no: type X = { NODE: OtherType } + case "ObjectTypeProperty": + return parent.key !== node; + // yes: enum X { Foo = NODE } + // no: enum X { NODE } + case "TSEnumMember": + return parent.id !== node; + // yes: { [NODE]: value } + // no: { NODE: value } + case "TSPropertySignature": + if (parent.key === node) { + return !!parent.computed; + } + return true; + } + return true; +} +const TS_NODE_TYPES = [ + "TSAsExpression", + // foo as number + "TSTypeAssertion", + // (<number>foo) + "TSNonNullExpression", + // foo! + "TSInstantiationExpression", + // foo<string> + "TSSatisfiesExpression" + // foo satisfies T +]; +function unwrapTSNode(node) { + if (TS_NODE_TYPES.includes(node.type)) { + return unwrapTSNode(node.expression); + } else { + return node; + } +} + +const isStaticExp = (p) => p.type === 4 && p.isStatic; +function isCoreComponent(tag) { + switch (tag) { + case "Teleport": + case "teleport": + return TELEPORT; + case "Suspense": + case "suspense": + return SUSPENSE; + case "KeepAlive": + case "keep-alive": + return KEEP_ALIVE; + case "BaseTransition": + case "base-transition": + return BASE_TRANSITION; + } +} +const nonIdentifierRE = /^$|^\d|[^\$\w\xA0-\uFFFF]/; +const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name); +const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/; +const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/; +const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g; +const getExpSource = (exp) => exp.type === 4 ? exp.content : exp.loc.source; +const isMemberExpressionBrowser = (exp) => { + const path = getExpSource(exp).trim().replace(whitespaceRE, (s) => s.trim()); + let state = 0 /* inMemberExp */; + let stateStack = []; + let currentOpenBracketCount = 0; + let currentOpenParensCount = 0; + let currentStringType = null; + for (let i = 0; i < path.length; i++) { + const char = path.charAt(i); + switch (state) { + case 0 /* inMemberExp */: + if (char === "[") { + stateStack.push(state); + state = 1 /* inBrackets */; + currentOpenBracketCount++; + } else if (char === "(") { + stateStack.push(state); + state = 2 /* inParens */; + currentOpenParensCount++; + } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) { + return false; + } + break; + case 1 /* inBrackets */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `[`) { + currentOpenBracketCount++; + } else if (char === `]`) { + if (!--currentOpenBracketCount) { + state = stateStack.pop(); + } + } + break; + case 2 /* inParens */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `(`) { + currentOpenParensCount++; + } else if (char === `)`) { + if (i === path.length - 1) { + return false; + } + if (!--currentOpenParensCount) { + state = stateStack.pop(); + } + } + break; + case 3 /* inString */: + if (char === currentStringType) { + state = stateStack.pop(); + currentStringType = null; + } + break; + } + } + return !currentOpenBracketCount && !currentOpenParensCount; +}; +const isMemberExpressionNode = (exp, context) => { + try { + let ret = exp.ast || libExports.parseExpression(getExpSource(exp), { + plugins: context.expressionPlugins ? [...context.expressionPlugins, "typescript"] : ["typescript"] + }); + ret = unwrapTSNode(ret); + return ret.type === "MemberExpression" || ret.type === "OptionalMemberExpression" || ret.type === "Identifier" && ret.name !== "undefined"; + } catch (e) { + return false; + } +}; +const isMemberExpression = isMemberExpressionNode; +const fnExpRE = /^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/; +const isFnExpressionBrowser = (exp) => fnExpRE.test(getExpSource(exp)); +const isFnExpressionNode = (exp, context) => { + try { + let ret = exp.ast || libExports.parseExpression(getExpSource(exp), { + plugins: context.expressionPlugins ? [...context.expressionPlugins, "typescript"] : ["typescript"] + }); + if (ret.type === "Program") { + ret = ret.body[0]; + if (ret.type === "ExpressionStatement") { + ret = ret.expression; + } + } + ret = unwrapTSNode(ret); + return ret.type === "FunctionExpression" || ret.type === "ArrowFunctionExpression"; + } catch (e) { + return false; + } +}; +const isFnExpression = isFnExpressionNode; +function advancePositionWithClone(pos, source, numberOfCharacters = source.length) { + return advancePositionWithMutation( + { + offset: pos.offset, + line: pos.line, + column: pos.column + }, + source, + numberOfCharacters + ); +} +function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) { + let linesCount = 0; + let lastNewLinePos = -1; + for (let i = 0; i < numberOfCharacters; i++) { + if (source.charCodeAt(i) === 10) { + linesCount++; + lastNewLinePos = i; + } + } + pos.offset += numberOfCharacters; + pos.line += linesCount; + pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos; + return pos; +} +function assert(condition, msg) { + if (!condition) { + throw new Error(msg || `unexpected compiler condition`); + } +} +function findDir(node, name, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (allowEmpty || p.exp) && (isString$1(name) ? p.name === name : name.test(p.name))) { + return p; + } + } +} +function findProp(node, name, dynamicOnly = false, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (dynamicOnly) continue; + if (p.name === name && (p.value || allowEmpty)) { + return p; + } + } else if (p.name === "bind" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) { + return p; + } + } +} +function isStaticArgOf(arg, name) { + return !!(arg && isStaticExp(arg) && arg.content === name); +} +function hasDynamicKeyVBind(node) { + return node.props.some( + (p) => p.type === 7 && p.name === "bind" && (!p.arg || // v-bind="obj" + p.arg.type !== 4 || // v-bind:[_ctx.foo] + !p.arg.isStatic) + // v-bind:[foo] + ); +} +function isText$1(node) { + return node.type === 5 || node.type === 2; +} +function isVPre(p) { + return p.type === 7 && p.name === "pre"; +} +function isVSlot(p) { + return p.type === 7 && p.name === "slot"; +} +function isTemplateNode(node) { + return node.type === 1 && node.tagType === 3; +} +function isSlotOutlet(node) { + return node.type === 1 && node.tagType === 2; +} +const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]); +function getUnnormalizedProps(props, callPath = []) { + if (props && !isString$1(props) && props.type === 14) { + const callee = props.callee; + if (!isString$1(callee) && propsHelperSet.has(callee)) { + return getUnnormalizedProps( + props.arguments[0], + callPath.concat(props) + ); + } + } + return [props, callPath]; +} +function injectProp(node, prop, context) { + let propsWithInjection; + let props = node.type === 13 ? node.props : node.arguments[2]; + let callPath = []; + let parentCall; + if (props && !isString$1(props) && props.type === 14) { + const ret = getUnnormalizedProps(props); + props = ret[0]; + callPath = ret[1]; + parentCall = callPath[callPath.length - 1]; + } + if (props == null || isString$1(props)) { + propsWithInjection = createObjectExpression([prop]); + } else if (props.type === 14) { + const first = props.arguments[0]; + if (!isString$1(first) && first.type === 15) { + if (!hasProp(prop, first)) { + first.properties.unshift(prop); + } + } else { + if (props.callee === TO_HANDLERS) { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + } else { + props.arguments.unshift(createObjectExpression([prop])); + } + } + !propsWithInjection && (propsWithInjection = props); + } else if (props.type === 15) { + if (!hasProp(prop, props)) { + props.properties.unshift(prop); + } + propsWithInjection = props; + } else { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) { + parentCall = callPath[callPath.length - 2]; + } + } + if (node.type === 13) { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.props = propsWithInjection; + } + } else { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.arguments[2] = propsWithInjection; + } + } +} +function hasProp(prop, props) { + let result = false; + if (prop.key.type === 4) { + const propKeyName = prop.key.content; + result = props.properties.some( + (p) => p.key.type === 4 && p.key.content === propKeyName + ); + } + return result; +} +function toValidAssetId(name, type) { + return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => { + return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString(); + })}`; +} +function hasScopeRef(node, ids) { + if (!node || Object.keys(ids).length === 0) { + return false; + } + switch (node.type) { + case 1: + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) { + return true; + } + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 11: + if (hasScopeRef(node.source, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 9: + return node.branches.some((b) => hasScopeRef(b, ids)); + case 10: + if (hasScopeRef(node.condition, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 4: + return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content]; + case 8: + return node.children.some((c) => isObject$2(c) && hasScopeRef(c, ids)); + case 5: + case 12: + return hasScopeRef(node.content, ids); + case 2: + case 3: + case 20: + return false; + default: + return false; + } +} +function getMemoedVNodeCall(node) { + if (node.type === 14 && node.callee === WITH_MEMO) { + return node.arguments[1].returns; + } else { + return node; + } +} +const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/; + +const defaultParserOptions = { + parseMode: "base", + ns: 0, + delimiters: [`{{`, `}}`], + getNamespace: () => 0, + isVoidTag: NO, + isPreTag: NO, + isIgnoreNewlineTag: NO, + isCustomElement: NO, + onError: defaultOnError, + onWarn: defaultOnWarn, + comments: true, + prefixIdentifiers: false +}; +let currentOptions = defaultParserOptions; +let currentRoot = null; +let currentInput = ""; +let currentOpenTag = null; +let currentProp = null; +let currentAttrValue = ""; +let currentAttrStartIndex = -1; +let currentAttrEndIndex = -1; +let inPre = 0; +let inVPre = false; +let currentVPreBoundary = null; +const stack = []; +const tokenizer = new Tokenizer(stack, { + onerr: emitError, + ontext(start, end) { + onText(getSlice(start, end), start, end); + }, + ontextentity(char, start, end) { + onText(char, start, end); + }, + oninterpolation(start, end) { + if (inVPre) { + return onText(getSlice(start, end), start, end); + } + let innerStart = start + tokenizer.delimiterOpen.length; + let innerEnd = end - tokenizer.delimiterClose.length; + while (isWhitespace(currentInput.charCodeAt(innerStart))) { + innerStart++; + } + while (isWhitespace(currentInput.charCodeAt(innerEnd - 1))) { + innerEnd--; + } + let exp = getSlice(innerStart, innerEnd); + if (exp.includes("&")) { + { + exp = decodeHTML(exp); + } + } + addNode({ + type: 5, + content: createExp(exp, false, getLoc(innerStart, innerEnd)), + loc: getLoc(start, end) + }); + }, + onopentagname(start, end) { + const name = getSlice(start, end); + currentOpenTag = { + type: 1, + tag: name, + ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns), + tagType: 0, + // will be refined on tag close + props: [], + children: [], + loc: getLoc(start - 1, end), + codegenNode: void 0 + }; + }, + onopentagend(end) { + endOpenTag(end); + }, + onclosetag(start, end) { + const name = getSlice(start, end); + if (!currentOptions.isVoidTag(name)) { + let found = false; + for (let i = 0; i < stack.length; i++) { + const e = stack[i]; + if (e.tag.toLowerCase() === name.toLowerCase()) { + found = true; + if (i > 0) { + emitError(24, stack[0].loc.start.offset); + } + for (let j = 0; j <= i; j++) { + const el = stack.shift(); + onCloseTag(el, end, j < i); + } + break; + } + } + if (!found) { + emitError(23, backTrack(start, 60)); + } + } + }, + onselfclosingtag(end) { + const name = currentOpenTag.tag; + currentOpenTag.isSelfClosing = true; + endOpenTag(end); + if (stack[0] && stack[0].tag === name) { + onCloseTag(stack.shift(), end); + } + }, + onattribname(start, end) { + currentProp = { + type: 6, + name: getSlice(start, end), + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + }, + ondirname(start, end) { + const raw = getSlice(start, end); + const name = raw === "." || raw === ":" ? "bind" : raw === "@" ? "on" : raw === "#" ? "slot" : raw.slice(2); + if (!inVPre && name === "") { + emitError(26, start); + } + if (inVPre || name === "") { + currentProp = { + type: 6, + name: raw, + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + } else { + currentProp = { + type: 7, + name, + rawName: raw, + exp: void 0, + arg: void 0, + modifiers: raw === "." ? [createSimpleExpression("prop")] : [], + loc: getLoc(start) + }; + if (name === "pre") { + inVPre = tokenizer.inVPre = true; + currentVPreBoundary = currentOpenTag; + const props = currentOpenTag.props; + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7) { + props[i] = dirToAttr(props[i]); + } + } + } + } + }, + ondirarg(start, end) { + if (start === end) return; + const arg = getSlice(start, end); + if (inVPre && !isVPre(currentProp)) { + currentProp.name += arg; + setLocEnd(currentProp.nameLoc, end); + } else { + const isStatic = arg[0] !== `[`; + currentProp.arg = createExp( + isStatic ? arg : arg.slice(1, -1), + isStatic, + getLoc(start, end), + isStatic ? 3 : 0 + ); + } + }, + ondirmodifier(start, end) { + const mod = getSlice(start, end); + if (inVPre && !isVPre(currentProp)) { + currentProp.name += "." + mod; + setLocEnd(currentProp.nameLoc, end); + } else if (currentProp.name === "slot") { + const arg = currentProp.arg; + if (arg) { + arg.content += "." + mod; + setLocEnd(arg.loc, end); + } + } else { + const exp = createSimpleExpression(mod, true, getLoc(start, end)); + currentProp.modifiers.push(exp); + } + }, + onattribdata(start, end) { + currentAttrValue += getSlice(start, end); + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribentity(char, start, end) { + currentAttrValue += char; + if (currentAttrStartIndex < 0) currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribnameend(end) { + const start = currentProp.loc.start.offset; + const name = getSlice(start, end); + if (currentProp.type === 7) { + currentProp.rawName = name; + } + if (currentOpenTag.props.some( + (p) => (p.type === 7 ? p.rawName : p.name) === name + )) { + emitError(2, start); + } + }, + onattribend(quote, end) { + if (currentOpenTag && currentProp) { + setLocEnd(currentProp.loc, end); + if (quote !== 0) { + if (currentProp.type === 6) { + if (currentProp.name === "class") { + currentAttrValue = condense(currentAttrValue).trim(); + } + if (quote === 1 && !currentAttrValue) { + emitError(13, end); + } + currentProp.value = { + type: 2, + content: currentAttrValue, + loc: quote === 1 ? getLoc(currentAttrStartIndex, currentAttrEndIndex) : getLoc(currentAttrStartIndex - 1, currentAttrEndIndex + 1) + }; + if (tokenizer.inSFCRoot && currentOpenTag.tag === "template" && currentProp.name === "lang" && currentAttrValue && currentAttrValue !== "html") { + tokenizer.enterRCDATA(toCharCodes(`</template`), 0); + } + } else { + let expParseMode = 0 /* Normal */; + { + if (currentProp.name === "for") { + expParseMode = 3 /* Skip */; + } else if (currentProp.name === "slot") { + expParseMode = 1 /* Params */; + } else if (currentProp.name === "on" && currentAttrValue.includes(";")) { + expParseMode = 2 /* Statements */; + } + } + currentProp.exp = createExp( + currentAttrValue, + false, + getLoc(currentAttrStartIndex, currentAttrEndIndex), + 0, + expParseMode + ); + if (currentProp.name === "for") { + currentProp.forParseResult = parseForExpression(currentProp.exp); + } + } + } + if (currentProp.type !== 7 || currentProp.name !== "pre") { + currentOpenTag.props.push(currentProp); + } + } + currentAttrValue = ""; + currentAttrStartIndex = currentAttrEndIndex = -1; + }, + oncomment(start, end) { + if (currentOptions.comments) { + addNode({ + type: 3, + content: getSlice(start, end), + loc: getLoc(start - 4, end + 3) + }); + } + }, + onend() { + const end = currentInput.length; + if (tokenizer.state !== 1) { + switch (tokenizer.state) { + case 5: + case 8: + emitError(5, end); + break; + case 3: + case 4: + emitError( + 25, + tokenizer.sectionStart + ); + break; + case 28: + if (tokenizer.currentSequence === Sequences.CdataEnd) { + emitError(6, end); + } else { + emitError(7, end); + } + break; + case 6: + case 7: + case 9: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + // " + case 20: + // ' + case 21: + emitError(9, end); + break; + } + } + for (let index = 0; index < stack.length; index++) { + onCloseTag(stack[index], end - 1); + emitError(24, stack[index].loc.start.offset); + } + }, + oncdata(start, end) { + if (stack[0].ns !== 0) { + onText(getSlice(start, end), start, end); + } else { + emitError(1, start - 9); + } + }, + onprocessinginstruction(start) { + if ((stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + emitError( + 21, + start - 1 + ); + } + } +}); +const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; +const stripParensRE = /^\(|\)$/g; +function parseForExpression(input) { + const loc = input.loc; + const exp = input.content; + const inMatch = exp.match(forAliasRE); + if (!inMatch) return; + const [, LHS, RHS] = inMatch; + const createAliasExpression = (content, offset, asParam = false) => { + const start = loc.start.offset + offset; + const end = start + content.length; + return createExp( + content, + false, + getLoc(start, end), + 0, + asParam ? 1 /* Params */ : 0 /* Normal */ + ); + }; + const result = { + source: createAliasExpression(RHS.trim(), exp.indexOf(RHS, LHS.length)), + value: void 0, + key: void 0, + index: void 0, + finalized: false + }; + let valueContent = LHS.trim().replace(stripParensRE, "").trim(); + const trimmedOffset = LHS.indexOf(valueContent); + const iteratorMatch = valueContent.match(forIteratorRE); + if (iteratorMatch) { + valueContent = valueContent.replace(forIteratorRE, "").trim(); + const keyContent = iteratorMatch[1].trim(); + let keyOffset; + if (keyContent) { + keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length); + result.key = createAliasExpression(keyContent, keyOffset, true); + } + if (iteratorMatch[2]) { + const indexContent = iteratorMatch[2].trim(); + if (indexContent) { + result.index = createAliasExpression( + indexContent, + exp.indexOf( + indexContent, + result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length + ), + true + ); + } + } + } + if (valueContent) { + result.value = createAliasExpression(valueContent, trimmedOffset, true); + } + return result; +} +function getSlice(start, end) { + return currentInput.slice(start, end); +} +function endOpenTag(end) { + if (tokenizer.inSFCRoot) { + currentOpenTag.innerLoc = getLoc(end + 1, end + 1); + } + addNode(currentOpenTag); + const { tag, ns } = currentOpenTag; + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre++; + } + if (currentOptions.isVoidTag(tag)) { + onCloseTag(currentOpenTag, end); + } else { + stack.unshift(currentOpenTag); + if (ns === 1 || ns === 2) { + tokenizer.inXML = true; + } + } + currentOpenTag = null; +} +function onText(content, start, end) { + const parent = stack[0] || currentRoot; + const lastNode = parent.children[parent.children.length - 1]; + if (lastNode && lastNode.type === 2) { + lastNode.content += content; + setLocEnd(lastNode.loc, end); + } else { + parent.children.push({ + type: 2, + content, + loc: getLoc(start, end) + }); + } +} +function onCloseTag(el, end, isImplied = false) { + if (isImplied) { + setLocEnd(el.loc, backTrack(end, 60)); + } else { + setLocEnd(el.loc, lookAhead(end, 62) + 1); + } + if (tokenizer.inSFCRoot) { + if (el.children.length) { + el.innerLoc.end = extend({}, el.children[el.children.length - 1].loc.end); + } else { + el.innerLoc.end = extend({}, el.innerLoc.start); + } + el.innerLoc.source = getSlice( + el.innerLoc.start.offset, + el.innerLoc.end.offset + ); + } + const { tag, ns, children } = el; + if (!inVPre) { + if (tag === "slot") { + el.tagType = 2; + } else if (isFragmentTemplate(el)) { + el.tagType = 3; + } else if (isComponent(el)) { + el.tagType = 1; + } + } + if (!tokenizer.inRCDATA) { + el.children = condenseWhitespace(children); + } + if (ns === 0 && currentOptions.isIgnoreNewlineTag(tag)) { + const first = children[0]; + if (first && first.type === 2) { + first.content = first.content.replace(/^\r?\n/, ""); + } + } + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre--; + } + if (currentVPreBoundary === el) { + inVPre = tokenizer.inVPre = false; + currentVPreBoundary = null; + } + if (tokenizer.inXML && (stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + tokenizer.inXML = false; + } +} +function lookAhead(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i < currentInput.length - 1) i++; + return i; +} +function backTrack(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i >= 0) i--; + return i; +} +const specialTemplateDir = /* @__PURE__ */ new Set(["if", "else", "else-if", "for", "slot"]); +function isFragmentTemplate({ tag, props }) { + if (tag === "template") { + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7 && specialTemplateDir.has(props[i].name)) { + return true; + } + } + } + return false; +} +function isComponent({ tag, props }) { + if (currentOptions.isCustomElement(tag)) { + return false; + } + if (tag === "component" || isUpperCase(tag.charCodeAt(0)) || isCoreComponent(tag) || currentOptions.isBuiltInComponent && currentOptions.isBuiltInComponent(tag) || currentOptions.isNativeTag && !currentOptions.isNativeTag(tag)) { + return true; + } + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 6) { + if (p.name === "is" && p.value) { + if (p.value.content.startsWith("vue:")) { + return true; + } + } + } + } + return false; +} +function isUpperCase(c) { + return c > 64 && c < 91; +} +const windowsNewlineRE = /\r\n/g; +function condenseWhitespace(nodes) { + const shouldCondense = currentOptions.whitespace !== "preserve"; + let removedWhitespace = false; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (node.type === 2) { + if (!inPre) { + if (isAllWhitespace(node.content)) { + const prev = nodes[i - 1] && nodes[i - 1].type; + const next = nodes[i + 1] && nodes[i + 1].type; + if (!prev || !next || shouldCondense && (prev === 3 && (next === 3 || next === 1) || prev === 1 && (next === 3 || next === 1 && hasNewlineChar(node.content)))) { + removedWhitespace = true; + nodes[i] = null; + } else { + node.content = " "; + } + } else if (shouldCondense) { + node.content = condense(node.content); + } + } else { + node.content = node.content.replace(windowsNewlineRE, "\n"); + } + } + } + return removedWhitespace ? nodes.filter(Boolean) : nodes; +} +function isAllWhitespace(str) { + for (let i = 0; i < str.length; i++) { + if (!isWhitespace(str.charCodeAt(i))) { + return false; + } + } + return true; +} +function hasNewlineChar(str) { + for (let i = 0; i < str.length; i++) { + const c = str.charCodeAt(i); + if (c === 10 || c === 13) { + return true; + } + } + return false; +} +function condense(str) { + let ret = ""; + let prevCharIsWhitespace = false; + for (let i = 0; i < str.length; i++) { + if (isWhitespace(str.charCodeAt(i))) { + if (!prevCharIsWhitespace) { + ret += " "; + prevCharIsWhitespace = true; + } + } else { + ret += str[i]; + prevCharIsWhitespace = false; + } + } + return ret; +} +function addNode(node) { + (stack[0] || currentRoot).children.push(node); +} +function getLoc(start, end) { + return { + start: tokenizer.getPos(start), + // @ts-expect-error allow late attachment + end: end == null ? end : tokenizer.getPos(end), + // @ts-expect-error allow late attachment + source: end == null ? end : getSlice(start, end) + }; +} +function cloneLoc(loc) { + return getLoc(loc.start.offset, loc.end.offset); +} +function setLocEnd(loc, end) { + loc.end = tokenizer.getPos(end); + loc.source = getSlice(loc.start.offset, end); +} +function dirToAttr(dir) { + const attr = { + type: 6, + name: dir.rawName, + nameLoc: getLoc( + dir.loc.start.offset, + dir.loc.start.offset + dir.rawName.length + ), + value: void 0, + loc: dir.loc + }; + if (dir.exp) { + const loc = dir.exp.loc; + if (loc.end.offset < dir.loc.end.offset) { + loc.start.offset--; + loc.start.column--; + loc.end.offset++; + loc.end.column++; + } + attr.value = { + type: 2, + content: dir.exp.content, + loc + }; + } + return attr; +} +function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0 /* Normal */) { + const exp = createSimpleExpression(content, isStatic, loc, constType); + if (!isStatic && currentOptions.prefixIdentifiers && parseMode !== 3 /* Skip */ && content.trim()) { + if (isSimpleIdentifier(content)) { + exp.ast = null; + return exp; + } + try { + const plugins = currentOptions.expressionPlugins; + const options = { + plugins: plugins ? [...plugins, "typescript"] : ["typescript"] + }; + if (parseMode === 2 /* Statements */) { + exp.ast = libExports.parse(` ${content} `, options).program; + } else if (parseMode === 1 /* Params */) { + exp.ast = libExports.parseExpression(`(${content})=>{}`, options); + } else { + exp.ast = libExports.parseExpression(`(${content})`, options); + } + } catch (e) { + exp.ast = false; + emitError(45, loc.start.offset, e.message); + } + } + return exp; +} +function emitError(code, index, message) { + currentOptions.onError( + createCompilerError(code, getLoc(index, index), void 0, message) + ); +} +function reset() { + tokenizer.reset(); + currentOpenTag = null; + currentProp = null; + currentAttrValue = ""; + currentAttrStartIndex = -1; + currentAttrEndIndex = -1; + stack.length = 0; +} +function baseParse(input, options) { + reset(); + currentInput = input; + currentOptions = extend({}, defaultParserOptions); + if (options) { + let key; + for (key in options) { + if (options[key] != null) { + currentOptions[key] = options[key]; + } + } + } + { + if (currentOptions.decodeEntities) { + console.warn( + `[@vue/compiler-core] decodeEntities option is passed but will be ignored in non-browser builds.` + ); + } + } + tokenizer.mode = currentOptions.parseMode === "html" ? 1 : currentOptions.parseMode === "sfc" ? 2 : 0; + tokenizer.inXML = currentOptions.ns === 1 || currentOptions.ns === 2; + const delimiters = options && options.delimiters; + if (delimiters) { + tokenizer.delimiterOpen = toCharCodes(delimiters[0]); + tokenizer.delimiterClose = toCharCodes(delimiters[1]); + } + const root = currentRoot = createRoot([], input); + tokenizer.parse(currentInput); + root.loc = getLoc(0, input.length); + root.children = condenseWhitespace(root.children); + currentRoot = null; + return root; +} + +function cacheStatic(root, context) { + walk$1( + root, + void 0, + context, + // Root node is unfortunately non-hoistable due to potential parent + // fallthrough attributes. + !!getSingleElementRoot(root) + ); +} +function getSingleElementRoot(root) { + const children = root.children.filter((x) => x.type !== 3); + return children.length === 1 && children[0].type === 1 && !isSlotOutlet(children[0]) ? children[0] : null; +} +function walk$1(node, parent, context, doNotHoistNode = false, inFor = false) { + const { children } = node; + const toCache = []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.type === 1 && child.tagType === 0) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType > 0) { + if (constantType >= 2) { + child.codegenNode.patchFlag = -1; + toCache.push(child); + continue; + } + } else { + const codegenNode = child.codegenNode; + if (codegenNode.type === 13) { + const flag = codegenNode.patchFlag; + if ((flag === void 0 || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) { + const props = getNodeProps(child); + if (props) { + codegenNode.props = context.hoist(props); + } + } + if (codegenNode.dynamicProps) { + codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps); + } + } + } + } else if (child.type === 12) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType >= 2) { + if (child.codegenNode.type === 14 && child.codegenNode.arguments.length > 0) { + child.codegenNode.arguments.push( + -1 + (` /* ${PatchFlagNames[-1]} */` ) + ); + } + toCache.push(child); + continue; + } + } + if (child.type === 1) { + const isComponent = child.tagType === 1; + if (isComponent) { + context.scopes.vSlot++; + } + walk$1(child, node, context, false, inFor); + if (isComponent) { + context.scopes.vSlot--; + } + } else if (child.type === 11) { + walk$1(child, node, context, child.children.length === 1, true); + } else if (child.type === 9) { + for (let i2 = 0; i2 < child.branches.length; i2++) { + walk$1( + child.branches[i2], + node, + context, + child.branches[i2].children.length === 1, + inFor + ); + } + } + } + let cachedAsArray = false; + const slotCacheKeys = []; + if (toCache.length === children.length && node.type === 1) { + if (node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && isArray$3(node.codegenNode.children)) { + node.codegenNode.children = getCacheExpression( + createArrayExpression(node.codegenNode.children) + ); + cachedAsArray = true; + } else if (node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray$3(node.codegenNode.children) && node.codegenNode.children.type === 15) { + const slot = getSlotNode(node.codegenNode, "default"); + if (slot) { + slotCacheKeys.push(context.cached.length); + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } else if (node.tagType === 3 && parent && parent.type === 1 && parent.tagType === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !isArray$3(parent.codegenNode.children) && parent.codegenNode.children.type === 15) { + const slotName = findDir(node, "slot", true); + const slot = slotName && slotName.arg && getSlotNode(parent.codegenNode, slotName.arg); + if (slot) { + slotCacheKeys.push(context.cached.length); + slot.returns = getCacheExpression( + createArrayExpression(slot.returns) + ); + cachedAsArray = true; + } + } + } + if (!cachedAsArray) { + for (const child of toCache) { + slotCacheKeys.push(context.cached.length); + child.codegenNode = context.cache(child.codegenNode); + } + } + if (slotCacheKeys.length && node.type === 1 && node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray$3(node.codegenNode.children) && node.codegenNode.children.type === 15) { + node.codegenNode.children.properties.push( + createObjectProperty( + `__`, + createSimpleExpression(JSON.stringify(slotCacheKeys), false) + ) + ); + } + function getCacheExpression(value) { + const exp = context.cache(value); + if (inFor && context.hmr) { + exp.needArraySpread = true; + } + return exp; + } + function getSlotNode(node2, name) { + if (node2.children && !isArray$3(node2.children) && node2.children.type === 15) { + const slot = node2.children.properties.find( + (p) => p.key === name || p.key.content === name + ); + return slot && slot.value; + } + } + if (toCache.length && context.transformHoist) { + context.transformHoist(children, context, node); + } +} +function getConstantType(node, context) { + const { constantCache } = context; + switch (node.type) { + case 1: + if (node.tagType !== 0) { + return 0; + } + const cached = constantCache.get(node); + if (cached !== void 0) { + return cached; + } + const codegenNode = node.codegenNode; + if (codegenNode.type !== 13) { + return 0; + } + if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject" && node.tag !== "math") { + return 0; + } + if (codegenNode.patchFlag === void 0) { + let returnType2 = 3; + const generatedPropsType = getGeneratedPropsConstantType(node, context); + if (generatedPropsType === 0) { + constantCache.set(node, 0); + return 0; + } + if (generatedPropsType < returnType2) { + returnType2 = generatedPropsType; + } + for (let i = 0; i < node.children.length; i++) { + const childType = getConstantType(node.children[i], context); + if (childType === 0) { + constantCache.set(node, 0); + return 0; + } + if (childType < returnType2) { + returnType2 = childType; + } + } + if (returnType2 > 1) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && p.name === "bind" && p.exp) { + const expType = getConstantType(p.exp, context); + if (expType === 0) { + constantCache.set(node, 0); + return 0; + } + if (expType < returnType2) { + returnType2 = expType; + } + } + } + } + if (codegenNode.isBlock) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7) { + constantCache.set(node, 0); + return 0; + } + } + context.removeHelper(OPEN_BLOCK); + context.removeHelper( + getVNodeBlockHelper(context.inSSR, codegenNode.isComponent) + ); + codegenNode.isBlock = false; + context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent)); + } + constantCache.set(node, returnType2); + return returnType2; + } else { + constantCache.set(node, 0); + return 0; + } + case 2: + case 3: + return 3; + case 9: + case 11: + case 10: + return 0; + case 5: + case 12: + return getConstantType(node.content, context); + case 4: + return node.constType; + case 8: + let returnType = 3; + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (isString$1(child) || isSymbol$1(child)) { + continue; + } + const childType = getConstantType(child, context); + if (childType === 0) { + return 0; + } else if (childType < returnType) { + returnType = childType; + } + } + return returnType; + case 20: + return 2; + default: + return 0; + } +} +const allowHoistedHelperSet = /* @__PURE__ */ new Set([ + NORMALIZE_CLASS, + NORMALIZE_STYLE, + NORMALIZE_PROPS, + GUARD_REACTIVE_PROPS +]); +function getConstantTypeOfHelperCall(value, context) { + if (value.type === 14 && !isString$1(value.callee) && allowHoistedHelperSet.has(value.callee)) { + const arg = value.arguments[0]; + if (arg.type === 4) { + return getConstantType(arg, context); + } else if (arg.type === 14) { + return getConstantTypeOfHelperCall(arg, context); + } + } + return 0; +} +function getGeneratedPropsConstantType(node, context) { + let returnType = 3; + const props = getNodeProps(node); + if (props && props.type === 15) { + const { properties } = props; + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + const keyType = getConstantType(key, context); + if (keyType === 0) { + return keyType; + } + if (keyType < returnType) { + returnType = keyType; + } + let valueType; + if (value.type === 4) { + valueType = getConstantType(value, context); + } else if (value.type === 14) { + valueType = getConstantTypeOfHelperCall(value, context); + } else { + valueType = 0; + } + if (valueType === 0) { + return valueType; + } + if (valueType < returnType) { + returnType = valueType; + } + } + } + return returnType; +} +function getNodeProps(node) { + const codegenNode = node.codegenNode; + if (codegenNode.type === 13) { + return codegenNode.props; + } +} + +function createTransformContext(root, { + filename = "", + prefixIdentifiers = false, + hoistStatic = false, + hmr = false, + cacheHandlers = false, + nodeTransforms = [], + directiveTransforms = {}, + transformHoist = null, + isBuiltInComponent = NOOP, + isCustomElement = NOOP, + expressionPlugins = [], + scopeId = null, + slotted = true, + ssr = false, + inSSR = false, + ssrCssVars = ``, + bindingMetadata = EMPTY_OBJ, + inline = false, + isTS = false, + onError = defaultOnError, + onWarn = defaultOnWarn, + compatConfig +}) { + const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/); + const context = { + // options + filename, + selfName: nameMatch && capitalize(camelize(nameMatch[1])), + prefixIdentifiers, + hoistStatic, + hmr, + cacheHandlers, + nodeTransforms, + directiveTransforms, + transformHoist, + isBuiltInComponent, + isCustomElement, + expressionPlugins, + scopeId, + slotted, + ssr, + inSSR, + ssrCssVars, + bindingMetadata, + inline, + isTS, + onError, + onWarn, + compatConfig, + // state + root, + helpers: /* @__PURE__ */ new Map(), + components: /* @__PURE__ */ new Set(), + directives: /* @__PURE__ */ new Set(), + hoists: [], + imports: [], + cached: [], + constantCache: /* @__PURE__ */ new WeakMap(), + temps: 0, + identifiers: /* @__PURE__ */ Object.create(null), + scopes: { + vFor: 0, + vSlot: 0, + vPre: 0, + vOnce: 0 + }, + parent: null, + grandParent: null, + currentNode: root, + childIndex: 0, + inVOnce: false, + // methods + helper(name) { + const count = context.helpers.get(name) || 0; + context.helpers.set(name, count + 1); + return name; + }, + removeHelper(name) { + const count = context.helpers.get(name); + if (count) { + const currentCount = count - 1; + if (!currentCount) { + context.helpers.delete(name); + } else { + context.helpers.set(name, currentCount); + } + } + }, + helperString(name) { + return `_${helperNameMap[context.helper(name)]}`; + }, + replaceNode(node) { + { + if (!context.currentNode) { + throw new Error(`Node being replaced is already removed.`); + } + if (!context.parent) { + throw new Error(`Cannot replace root node.`); + } + } + context.parent.children[context.childIndex] = context.currentNode = node; + }, + removeNode(node) { + if (!context.parent) { + throw new Error(`Cannot remove root node.`); + } + const list = context.parent.children; + const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1; + if (removalIndex < 0) { + throw new Error(`node being removed is not a child of current parent`); + } + if (!node || node === context.currentNode) { + context.currentNode = null; + context.onNodeRemoved(); + } else { + if (context.childIndex > removalIndex) { + context.childIndex--; + context.onNodeRemoved(); + } + } + context.parent.children.splice(removalIndex, 1); + }, + onNodeRemoved: NOOP, + addIdentifiers(exp) { + { + if (isString$1(exp)) { + addId(exp); + } else if (exp.identifiers) { + exp.identifiers.forEach(addId); + } else if (exp.type === 4) { + addId(exp.content); + } + } + }, + removeIdentifiers(exp) { + { + if (isString$1(exp)) { + removeId(exp); + } else if (exp.identifiers) { + exp.identifiers.forEach(removeId); + } else if (exp.type === 4) { + removeId(exp.content); + } + } + }, + hoist(exp) { + if (isString$1(exp)) exp = createSimpleExpression(exp); + context.hoists.push(exp); + const identifier = createSimpleExpression( + `_hoisted_${context.hoists.length}`, + false, + exp.loc, + 2 + ); + identifier.hoisted = exp; + return identifier; + }, + cache(exp, isVNode = false, inVOnce = false) { + const cacheExp = createCacheExpression( + context.cached.length, + exp, + isVNode, + inVOnce + ); + context.cached.push(cacheExp); + return cacheExp; + } + }; + function addId(id) { + const { identifiers } = context; + if (identifiers[id] === void 0) { + identifiers[id] = 0; + } + identifiers[id]++; + } + function removeId(id) { + context.identifiers[id]--; + } + return context; +} +function transform(root, options) { + const context = createTransformContext(root, options); + traverseNode(root, context); + if (options.hoistStatic) { + cacheStatic(root, context); + } + if (!options.ssr) { + createRootCodegen(root, context); + } + root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]); + root.components = [...context.components]; + root.directives = [...context.directives]; + root.imports = context.imports; + root.hoists = context.hoists; + root.temps = context.temps; + root.cached = context.cached; + root.transformed = true; +} +function createRootCodegen(root, context) { + const { helper } = context; + const { children } = root; + if (children.length === 1) { + const singleElementRootChild = getSingleElementRoot(root); + if (singleElementRootChild && singleElementRootChild.codegenNode) { + const codegenNode = singleElementRootChild.codegenNode; + if (codegenNode.type === 13) { + convertToBlock(codegenNode, context); + } + root.codegenNode = codegenNode; + } else { + root.codegenNode = children[0]; + } + } else if (children.length > 1) { + let patchFlag = 64; + if (children.filter((c) => c.type !== 3).length === 1) { + patchFlag |= 2048; + } + root.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + root.children, + patchFlag, + void 0, + void 0, + true, + void 0, + false + ); + } else ; +} +function traverseChildren(parent, context) { + let i = 0; + const nodeRemoved = () => { + i--; + }; + for (; i < parent.children.length; i++) { + const child = parent.children[i]; + if (isString$1(child)) continue; + context.grandParent = context.parent; + context.parent = parent; + context.childIndex = i; + context.onNodeRemoved = nodeRemoved; + traverseNode(child, context); + } +} +function traverseNode(node, context) { + context.currentNode = node; + const { nodeTransforms } = context; + const exitFns = []; + for (let i2 = 0; i2 < nodeTransforms.length; i2++) { + const onExit = nodeTransforms[i2](node, context); + if (onExit) { + if (isArray$3(onExit)) { + exitFns.push(...onExit); + } else { + exitFns.push(onExit); + } + } + if (!context.currentNode) { + return; + } else { + node = context.currentNode; + } + } + switch (node.type) { + case 3: + if (!context.ssr) { + context.helper(CREATE_COMMENT); + } + break; + case 5: + if (!context.ssr) { + context.helper(TO_DISPLAY_STRING); + } + break; + // for container types, further traverse downwards + case 9: + for (let i2 = 0; i2 < node.branches.length; i2++) { + traverseNode(node.branches[i2], context); + } + break; + case 10: + case 11: + case 1: + case 0: + traverseChildren(node, context); + break; + } + context.currentNode = node; + let i = exitFns.length; + while (i--) { + exitFns[i](); + } +} +function createStructuralDirectiveTransform(name, fn) { + const matches = isString$1(name) ? (n) => n === name : (n) => name.test(n); + return (node, context) => { + if (node.type === 1) { + const { props } = node; + if (node.tagType === 3 && props.some(isVSlot)) { + return; + } + const exitFns = []; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 7 && matches(prop.name)) { + props.splice(i, 1); + i--; + const onExit = fn(node, prop, context); + if (onExit) exitFns.push(onExit); + } + } + return exitFns; + } + }; +} + +var sourceMap$1 = {}; + +var sourceMapGenerator$1 = {}; + +var base64Vlq$1 = {}; + +var base64$1 = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredBase64$1; + +function requireBase64$1 () { + if (hasRequiredBase64$1) return base64$1; + hasRequiredBase64$1 = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + + /** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ + base64$1.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); + }; + + /** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ + base64$1.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' + + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + + var zero = 48; // '0' + var nine = 57; // '9' + + var plus = 43; // '+' + var slash = 47; // '/' + + var littleOffset = 26; + var numberOffset = 52; + + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } + + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } + + // 62: + + if (charCode == plus) { + return 62; + } + + // 63: / + if (charCode == slash) { + return 63; + } + + // Invalid base64 digit. + return -1; + }; + return base64$1; +} + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredBase64Vlq$1; + +function requireBase64Vlq$1 () { + if (hasRequiredBase64Vlq$1) return base64Vlq$1; + hasRequiredBase64Vlq$1 = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS 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 + * OWNER 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. + */ + + var base64 = /*@__PURE__*/ requireBase64$1(); + + // A single base 64 digit can contain 6 bits of data. For the base 64 variable + // length quantities we use in the source map spec, the first bit is the sign, + // the next four bits are the actual value, and the 6th bit is the + // continuation bit. The continuation bit tells us whether there are more + // digits in this value following this digit. + // + // Continuation + // | Sign + // | | + // V V + // 101011 + + var VLQ_BASE_SHIFT = 5; + + // binary: 100000 + var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + + // binary: 011111 + var VLQ_BASE_MASK = VLQ_BASE - 1; + + // binary: 100000 + var VLQ_CONTINUATION_BIT = VLQ_BASE; + + /** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ + function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; + } + + /** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ + function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; + } + + /** + * Returns the base 64 VLQ encoded value. + */ + base64Vlq$1.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; + }; + + /** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ + base64Vlq$1.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; + }; + return base64Vlq$1; +} + +var util$2 = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredUtil$2; + +function requireUtil$2 () { + if (hasRequiredUtil$2) return util$2; + hasRequiredUtil$2 = 1; + (function (exports) { + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + /** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ + function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } + } + exports.getArg = getArg; + + var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; + var dataUrlRegexp = /^data:.+\,.+$/; + + function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; + } + exports.urlParse = urlParse; + + function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port; + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; + } + exports.urlGenerate = urlGenerate; + + var MAX_CACHED_INPUTS = 32; + + /** + * Takes some function `f(input) -> result` and returns a memoized version of + * `f`. + * + * We keep at most `MAX_CACHED_INPUTS` memoized results of `f` alive. The + * memoization is a dumb-simple, linear least-recently-used cache. + */ + function lruMemoize(f) { + var cache = []; + + return function(input) { + for (var i = 0; i < cache.length; i++) { + if (cache[i].input === input) { + var temp = cache[0]; + cache[0] = cache[i]; + cache[i] = temp; + return cache[0].result; + } + } + + var result = f(input); + + cache.unshift({ + input, + result, + }); + + if (cache.length > MAX_CACHED_INPUTS) { + cache.pop(); + } + + return result; + }; + } + + /** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '<dir>/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ + var normalize = lruMemoize(function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + // Split the path into parts between `/` characters. This is much faster than + // using `.split(/\/+/g)`. + var parts = []; + var start = 0; + var i = 0; + while (true) { + start = i; + i = path.indexOf("/", start); + if (i === -1) { + parts.push(path.slice(start)); + break; + } else { + parts.push(path.slice(start, i)); + while (i < path.length && path[i] === "/") { + i++; + } + } + } + + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; + }); + exports.normalize = normalize; + + /** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ + function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; + } + exports.join = join; + + exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || urlRegexp.test(aPath); + }; + + /** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ + function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); + } + exports.relative = relative; + + var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); + }()); + + function identity (s) { + return s; + } + + /** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ + function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; + } + exports.toSetString = supportsNullProto ? identity : toSetString; + + function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; + } + exports.fromSetString = supportsNullProto ? identity : fromSetString; + + function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; + } + + /** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ + function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByOriginalPositions = compareByOriginalPositions; + + function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) { + var cmp; + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource; + + /** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ + function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + + function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine; + + function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 === null) { + return 1; // aStr2 !== null + } + + if (aStr2 === null) { + return -1; // aStr1 !== null + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; + } + + /** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ + function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + + /** + * Strip any JSON XSSI avoidance prefix from the string (as documented + * in the source maps specification), and then parse the string as + * JSON. + */ + function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); + } + exports.parseSourceMapInput = parseSourceMapInput; + + /** + * Compute the URL of a source given the the source root, the source's + * URL, and the source map's URL. + */ + function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ''; + + if (sourceRoot) { + // This follows what Chrome does. + if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { + sourceRoot += '/'; + } + // The spec says: + // Line 4: An optional source root, useful for relocating source + // files on a server or removing repeated values in the + // “sources” entry. This value is prepended to the individual + // entries in the “source” field. + sourceURL = sourceRoot + sourceURL; + } + + // Historically, SourceMapConsumer did not take the sourceMapURL as + // a parameter. This mode is still somewhat supported, which is why + // this code block is conditional. However, it's preferable to pass + // the source map URL to SourceMapConsumer, so that this function + // can implement the source URL resolution algorithm as outlined in + // the spec. This block is basically the equivalent of: + // new URL(sourceURL, sourceMapURL).toString() + // ... except it avoids using URL, which wasn't available in the + // older releases of node still supported by this library. + // + // The spec says: + // If the sources are not absolute URLs after prepending of the + // “sourceRoot”, the sources are resolved relative to the + // SourceMap (like resolving script src in a html document). + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + // Strip the last path component, but keep the "/". + var index = parsed.path.lastIndexOf('/'); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + + return normalize(sourceURL); + } + exports.computeSourceURL = computeSourceURL; + } (util$2)); + return util$2; +} + +var arraySet$1 = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredArraySet$1; + +function requireArraySet$1 () { + if (hasRequiredArraySet$1) return arraySet$1; + hasRequiredArraySet$1 = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = /*@__PURE__*/ requireUtil$2(); + var has = Object.prototype.hasOwnProperty; + var hasNativeMap = typeof Map !== "undefined"; + + /** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ + function ArraySet() { + this._array = []; + this._set = hasNativeMap ? new Map() : Object.create(null); + } + + /** + * Static method for creating ArraySet instances from an existing array. + */ + ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; + }; + + /** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ + ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; + }; + + /** + * Add the given string to this set. + * + * @param String aStr + */ + ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } + }; + + /** + * Is the given string a member of this set? + * + * @param String aStr + */ + ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } + }; + + /** + * What is the index of the given string in the array? + * + * @param String aStr + */ + ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + + throw new Error('"' + aStr + '" is not in the set.'); + }; + + /** + * What is the element at the given index? + * + * @param Number aIdx + */ + ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); + }; + + /** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ + ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); + }; + + arraySet$1.ArraySet = ArraySet; + return arraySet$1; +} + +var mappingList$1 = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredMappingList$1; + +function requireMappingList$1 () { + if (hasRequiredMappingList$1) return mappingList$1; + hasRequiredMappingList$1 = 1; + /* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = /*@__PURE__*/ requireUtil$2(); + + /** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ + function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; + } + + /** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ + function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; + } + + /** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ + MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + + /** + * Add the given source mapping. + * + * @param Object aMapping + */ + MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } + }; + + /** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ + MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; + }; + + mappingList$1.MappingList = MappingList; + return mappingList$1; +} + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredSourceMapGenerator$1; + +function requireSourceMapGenerator$1 () { + if (hasRequiredSourceMapGenerator$1) return sourceMapGenerator$1; + hasRequiredSourceMapGenerator$1 = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var base64VLQ = /*@__PURE__*/ requireBase64Vlq$1(); + var util = /*@__PURE__*/ requireUtil$2(); + var ArraySet = /*@__PURE__*/ requireArraySet$1().ArraySet; + var MappingList = /*@__PURE__*/ requireMappingList$1().MappingList; + + /** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ + function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._ignoreInvalidMapping = util.getArg(aArgs, 'ignoreInvalidMapping', false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; + } + + SourceMapGenerator.prototype._version = 3; + + /** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ + SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer, generatorOps) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator(Object.assign(generatorOps || {}, { + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + })); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + + /** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ + SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + if (this._validateMapping(generated, original, source, name) === false) { + return; + } + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + + /** + * Set the source content for a source file. + */ + SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + + /** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ + SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source); + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + + /** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ + SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { + var message = 'original.line and original.column are not numbers -- you probably meant to omit ' + + 'the original mapping entirely and only map the generated position. If so, pass ' + + 'null for the original mapping instead of an object with empty or null values.'; + + if (this._ignoreInvalidMapping) { + if (typeof console !== 'undefined' && console.warn) { + console.warn(message); + } + return false; + } else { + throw new Error(message); + } + } + + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + var message = 'Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + }); + + if (this._ignoreInvalidMapping) { + if (typeof console !== 'undefined' && console.warn) { + console.warn(message); + } + return false; + } else { + throw new Error(message) + } + } + }; + + /** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ + SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = ''; + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + + SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + + /** + * Externalize the source map. + */ + SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + + /** + * Render the source map being generated to a string. + */ + SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + + sourceMapGenerator$1.SourceMapGenerator = SourceMapGenerator; + return sourceMapGenerator$1; +} + +var sourceMapConsumer$1 = {}; + +var binarySearch$1 = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredBinarySearch$1; + +function requireBinarySearch$1 () { + if (hasRequiredBinarySearch$1) return binarySearch$1; + hasRequiredBinarySearch$1 = 1; + (function (exports) { + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + exports.GREATEST_LOWER_BOUND = 1; + exports.LEAST_UPPER_BOUND = 2; + + /** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ + function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } + } + + /** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ + exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; + }; + } (binarySearch$1)); + return binarySearch$1; +} + +var quickSort$1 = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredQuickSort$1; + +function requireQuickSort$1 () { + if (hasRequiredQuickSort$1) return quickSort$1; + hasRequiredQuickSort$1 = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + // It turns out that some (most?) JavaScript engines don't self-host + // `Array.prototype.sort`. This makes sense because C++ will likely remain + // faster than JS when doing raw CPU-intensive sorting. However, when using a + // custom comparator function, calling back and forth between the VM's C++ and + // JIT'd JS is rather slow *and* loses JIT type information, resulting in + // worse generated code for the comparator function than would be optimal. In + // fact, when sorting with a comparator, these costs outweigh the benefits of + // sorting in C++. By using our own JS-implemented Quick Sort (below), we get + // a ~3500ms mean speed-up in `bench/bench.html`. + + function SortTemplate(comparator) { + + /** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ + function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; + } + + /** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ + function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); + } + + /** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ + function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot, false) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } + } + + return doQuickSort; + } + + function cloneSort(comparator) { + let template = SortTemplate.toString(); + let templateFn = new Function(`return ${template}`)(); + return templateFn(comparator); + } + + /** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ + + let sortCache = new WeakMap(); + quickSort$1.quickSort = function (ary, comparator, start = 0) { + let doQuickSort = sortCache.get(comparator); + if (doQuickSort === void 0) { + doQuickSort = cloneSort(comparator); + sortCache.set(comparator, doQuickSort); + } + doQuickSort(ary, comparator, start, ary.length - 1); + }; + return quickSort$1; +} + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredSourceMapConsumer$1; + +function requireSourceMapConsumer$1 () { + if (hasRequiredSourceMapConsumer$1) return sourceMapConsumer$1; + hasRequiredSourceMapConsumer$1 = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = /*@__PURE__*/ requireUtil$2(); + var binarySearch = /*@__PURE__*/ requireBinarySearch$1(); + var ArraySet = /*@__PURE__*/ requireArraySet$1().ArraySet; + var base64VLQ = /*@__PURE__*/ requireBase64Vlq$1(); + var quickSort = /*@__PURE__*/ requireQuickSort$1().quickSort; + + function SourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) + : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); + } + + SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); + }; + + /** + * The version of the source mapping spec that we are consuming. + */ + SourceMapConsumer.prototype._version = 3; + + // `__generatedMappings` and `__originalMappings` are arrays that hold the + // parsed mapping coordinates from the source map's "mappings" attribute. They + // are lazily instantiated, accessed via the `_generatedMappings` and + // `_originalMappings` getters respectively, and we only parse the mappings + // and create these arrays once queried for a source location. We jump through + // these hoops because there can be many thousands of mappings, and parsing + // them is expensive, so we only want to do it if we must. + // + // Each object in the arrays is of the form: + // + // { + // generatedLine: The line number in the generated code, + // generatedColumn: The column number in the generated code, + // source: The path to the original source file that generated this + // chunk of code, + // originalLine: The line number in the original source that + // corresponds to this chunk of generated code, + // originalColumn: The column number in the original source that + // corresponds to this chunk of generated code, + // name: The name of the original symbol which generated this chunk of + // code. + // } + // + // All properties except for `generatedLine` and `generatedColumn` can be + // `null`. + // + // `_generatedMappings` is ordered by the generated positions. + // + // `_originalMappings` is ordered by the original positions. + + SourceMapConsumer.prototype.__generatedMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappings; + } + }); + + SourceMapConsumer.prototype.__originalMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappings; + } + }); + + SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + + SourceMapConsumer.GENERATED_ORDER = 1; + SourceMapConsumer.ORIGINAL_ORDER = 2; + + SourceMapConsumer.GREATEST_LOWER_BOUND = 1; + SourceMapConsumer.LEAST_UPPER_BOUND = 2; + + /** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ + SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + var boundCallback = aCallback.bind(context); + var names = this._names; + var sources = this._sources; + var sourceMapURL = this._sourceMapURL; + + for (var i = 0, n = mappings.length; i < n; i++) { + var mapping = mappings[i]; + var source = mapping.source === null ? null : sources.at(mapping.source); + if(source !== null) { + source = util.computeSourceURL(sourceRoot, source, sourceMapURL); + } + boundCallback({ + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : names.at(mapping.name) + }); + } + }; + + /** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number is 1-based. + * - column: Optional. the column number in the original source. + * The column number is 0-based. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; + + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + }; + + sourceMapConsumer$1.SourceMapConsumer = SourceMapConsumer; + + /** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The first parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ + function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + if (sourceRoot) { + sourceRoot = util.normalize(sourceRoot); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); + + this._absoluteSources = this._sources.toArray().map(function (s) { + return util.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); + + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this._sourceMapURL = aSourceMapURL; + this.file = file; + } + + BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + + /** + * Utility function to find the index of a source. Returns -1 if not + * found. + */ + BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } + + // Maybe aSource is an absolute URL as returned by |sources|. In + // this case we can't simply undo the transform. + var i; + for (i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } + + return -1; + }; + + /** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @param String aSourceMapURL + * The URL at which the source map can be found (optional) + * @returns BasicSourceMapConsumer + */ + BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + smc._sourceMapURL = aSourceMapURL; + smc._absoluteSources = smc._sources.toArray().map(function (s) { + return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); + }); + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + + destOriginalMappings.push(destMapping); + } + + destGeneratedMappings.push(destMapping); + } + + quickSort(smc.__originalMappings, util.compareByOriginalPositions); + + return smc; + }; + + /** + * The version of the source mapping spec that we are consuming. + */ + BasicSourceMapConsumer.prototype._version = 3; + + /** + * The list of original sources. + */ + Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._absoluteSources.slice(); + } + }); + + /** + * Provide the JIT with a nice shape / hidden class. + */ + function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; + } + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + + const compareGenerated = util.compareByGeneratedPositionsDeflatedNoLine; + function sortGenerated(array, start) { + let l = array.length; + let n = array.length - start; + if (n <= 1) { + return; + } else if (n == 2) { + let a = array[start]; + let b = array[start + 1]; + if (compareGenerated(a, b) > 0) { + array[start] = b; + array[start + 1] = a; + } + } else if (n < 20) { + for (let i = start; i < l; i++) { + for (let j = i; j > start; j--) { + let a = array[j - 1]; + let b = array[j]; + if (compareGenerated(a, b) <= 0) { + break; + } + array[j - 1] = b; + array[j] = a; + } + } + } else { + quickSort(array, compareGenerated, start); + } + } + BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, segment, end, value; + + let subarrayStart = 0; + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + + sortGenerated(generatedMappings, subarrayStart); + subarrayStart = generatedMappings.length; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + aStr.slice(index, end); + + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } + + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } + + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + let currentSource = mapping.source; + while (originalMappings.length <= currentSource) { + originalMappings.push(null); + } + if (originalMappings[currentSource] === null) { + originalMappings[currentSource] = []; + } + originalMappings[currentSource].push(mapping); + } + } + } + + sortGenerated(generatedMappings, subarrayStart); + this.__generatedMappings = generatedMappings; + + for (var i = 0; i < originalMappings.length; i++) { + if (originalMappings[i] != null) { + quickSort(originalMappings[i], util.compareByOriginalPositionsNoSource); + } + } + this.__originalMappings = [].concat(...originalMappings); + }; + + /** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ + BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + + /** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ + BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ + BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + var index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + }; + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } + + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + }; + + sourceMapConsumer$1.BasicSourceMapConsumer = BasicSourceMapConsumer; + + /** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The first parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ + function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); + + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._sources = new ArraySet(); + this._names = new ArraySet(); + + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; + + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) + } + }); + } + + IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + + /** + * The version of the source mapping spec that we are consuming. + */ + IndexedSourceMapConsumer.prototype._version = 3; + + /** + * The list of original sources. + */ + Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } + }); + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ + IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + var content = section.consumer.sourceContentFor(aSource, true); + if (content || content === '') { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + }; + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + + var source = section.consumer._sources.at(mapping.source); + if(source !== null) { + source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + } + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = null; + if (mapping.name) { + name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + } + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + + sourceMapConsumer$1.IndexedSourceMapConsumer = IndexedSourceMapConsumer; + return sourceMapConsumer$1; +} + +var sourceNode$1 = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredSourceNode$1; + +function requireSourceNode$1 () { + if (hasRequiredSourceNode$1) return sourceNode$1; + hasRequiredSourceNode$1 = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var SourceMapGenerator = /*@__PURE__*/ requireSourceMapGenerator$1().SourceMapGenerator; + var util = /*@__PURE__*/ requireUtil$2(); + + // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other + // operating systems these days (capturing the result). + var REGEX_NEWLINE = /(\r?\n)/; + + // Newline character code for charCodeAt() comparisons + var NEWLINE_CODE = 10; + + // Private symbol for identifying `SourceNode`s when multiple versions of + // the source-map library are loaded. This MUST NOT CHANGE across + // versions! + var isSourceNode = "$$$isSourceNode$$$"; + + /** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ + function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); + } + + /** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ + SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + // The last line of a file might not have a newline. + var newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[remainingLinesIndex] || ''; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex] || ''; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + + /** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + + /** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + + /** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ + SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } + }; + + /** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ + SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; + }; + + /** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ + SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; + }; + + /** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ + SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + + /** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ + SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + + /** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ + SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; + }; + + /** + * Returns the string representation of this source node along with a source + * map. + */ + SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; + }; + + sourceNode$1.SourceNode = SourceNode; + return sourceNode$1; +} + +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var hasRequiredSourceMap$1; + +function requireSourceMap$1 () { + if (hasRequiredSourceMap$1) return sourceMap$1; + hasRequiredSourceMap$1 = 1; + sourceMap$1.SourceMapGenerator = /*@__PURE__*/ requireSourceMapGenerator$1().SourceMapGenerator; + sourceMap$1.SourceMapConsumer = /*@__PURE__*/ requireSourceMapConsumer$1().SourceMapConsumer; + sourceMap$1.SourceNode = /*@__PURE__*/ requireSourceNode$1().SourceNode; + return sourceMap$1; +} + +var sourceMapExports = /*@__PURE__*/ requireSourceMap$1(); + +const PURE_ANNOTATION = `/*@__PURE__*/`; +const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`; +function createCodegenContext(ast, { + mode = "function", + prefixIdentifiers = mode === "module", + sourceMap = false, + filename = `template.vue.html`, + scopeId = null, + optimizeImports = false, + runtimeGlobalName = `Vue`, + runtimeModuleName = `vue`, + ssrRuntimeModuleName = "vue/server-renderer", + ssr = false, + isTS = false, + inSSR = false +}) { + const context = { + mode, + prefixIdentifiers, + sourceMap, + filename, + scopeId, + optimizeImports, + runtimeGlobalName, + runtimeModuleName, + ssrRuntimeModuleName, + ssr, + isTS, + inSSR, + source: ast.source, + code: ``, + column: 1, + line: 1, + offset: 0, + indentLevel: 0, + pure: false, + map: void 0, + helper(key) { + return `_${helperNameMap[key]}`; + }, + push(code, newlineIndex = -2 /* None */, node) { + context.code += code; + if (context.map) { + if (node) { + let name; + if (node.type === 4 && !node.isStatic) { + const content = node.content.replace(/^_ctx\./, ""); + if (content !== node.content && isSimpleIdentifier(content)) { + name = content; + } + } + if (node.loc.source) { + addMapping(node.loc.start, name); + } + } + if (newlineIndex === -3 /* Unknown */) { + advancePositionWithMutation(context, code); + } else { + context.offset += code.length; + if (newlineIndex === -2 /* None */) { + context.column += code.length; + } else { + if (newlineIndex === -1 /* End */) { + newlineIndex = code.length - 1; + } + context.line++; + context.column = code.length - newlineIndex; + } + } + if (node && node.loc !== locStub && node.loc.source) { + addMapping(node.loc.end); + } + } + }, + indent() { + newline(++context.indentLevel); + }, + deindent(withoutNewLine = false) { + if (withoutNewLine) { + --context.indentLevel; + } else { + newline(--context.indentLevel); + } + }, + newline() { + newline(context.indentLevel); + } + }; + function newline(n) { + context.push("\n" + ` `.repeat(n), 0 /* Start */); + } + function addMapping(loc, name = null) { + const { _names, _mappings } = context.map; + if (name !== null && !_names.has(name)) _names.add(name); + _mappings.add({ + originalLine: loc.line, + originalColumn: loc.column - 1, + // source-map column is 0 based + generatedLine: context.line, + generatedColumn: context.column - 1, + source: filename, + name + }); + } + if (sourceMap) { + context.map = new sourceMapExports.SourceMapGenerator(); + context.map.setSourceContent(filename, context.source); + context.map._sources.add(filename); + } + return context; +} +function generate(ast, options = {}) { + const context = createCodegenContext(ast, options); + if (options.onContextCreated) options.onContextCreated(context); + const { + mode, + push, + prefixIdentifiers, + indent, + deindent, + newline, + scopeId, + ssr + } = context; + const helpers = Array.from(ast.helpers); + const hasHelpers = helpers.length > 0; + const useWithBlock = !prefixIdentifiers && mode !== "module"; + const genScopeId = scopeId != null && mode === "module"; + const isSetupInlined = !!options.inline; + const preambleContext = isSetupInlined ? createCodegenContext(ast, options) : context; + if (mode === "module") { + genModulePreamble(ast, preambleContext, genScopeId, isSetupInlined); + } else { + genFunctionPreamble(ast, preambleContext); + } + const functionName = ssr ? `ssrRender` : `render`; + const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"]; + if (options.bindingMetadata && !options.inline) { + args.push("$props", "$setup", "$data", "$options"); + } + const signature = options.isTS ? args.map((arg) => `${arg}: any`).join(",") : args.join(", "); + if (isSetupInlined) { + push(`(${signature}) => {`); + } else { + push(`function ${functionName}(${signature}) {`); + } + indent(); + if (useWithBlock) { + push(`with (_ctx) {`); + indent(); + if (hasHelpers) { + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = _Vue +`, + -1 /* End */ + ); + newline(); + } + } + if (ast.components.length) { + genAssets(ast.components, "component", context); + if (ast.directives.length || ast.temps > 0) { + newline(); + } + } + if (ast.directives.length) { + genAssets(ast.directives, "directive", context); + if (ast.temps > 0) { + newline(); + } + } + if (ast.temps > 0) { + push(`let `); + for (let i = 0; i < ast.temps; i++) { + push(`${i > 0 ? `, ` : ``}_temp${i}`); + } + } + if (ast.components.length || ast.directives.length || ast.temps) { + push(` +`, 0 /* Start */); + newline(); + } + if (!ssr) { + push(`return `); + } + if (ast.codegenNode) { + genNode(ast.codegenNode, context); + } else { + push(`null`); + } + if (useWithBlock) { + deindent(); + push(`}`); + } + deindent(); + push(`}`); + return { + ast, + code: context.code, + preamble: isSetupInlined ? preambleContext.code : ``, + map: context.map ? context.map.toJSON() : void 0 + }; +} +function genFunctionPreamble(ast, context) { + const { + ssr, + prefixIdentifiers, + push, + newline, + runtimeModuleName, + runtimeGlobalName, + ssrRuntimeModuleName + } = context; + const VueBinding = ssr ? `require(${JSON.stringify(runtimeModuleName)})` : runtimeGlobalName; + const helpers = Array.from(ast.helpers); + if (helpers.length > 0) { + if (prefixIdentifiers) { + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = ${VueBinding} +`, + -1 /* End */ + ); + } else { + push(`const _Vue = ${VueBinding} +`, -1 /* End */); + if (ast.hoists.length) { + const staticHelpers = [ + CREATE_VNODE, + CREATE_ELEMENT_VNODE, + CREATE_COMMENT, + CREATE_TEXT, + CREATE_STATIC + ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", "); + push(`const { ${staticHelpers} } = _Vue +`, -1 /* End */); + } + } + } + if (ast.ssrHelpers && ast.ssrHelpers.length) { + push( + `const { ${ast.ssrHelpers.map(aliasHelper).join(", ")} } = require("${ssrRuntimeModuleName}") +`, + -1 /* End */ + ); + } + genHoists(ast.hoists, context); + newline(); + push(`return `); +} +function genModulePreamble(ast, context, genScopeId, inline) { + const { + push, + newline, + optimizeImports, + runtimeModuleName, + ssrRuntimeModuleName + } = context; + if (ast.helpers.size) { + const helpers = Array.from(ast.helpers); + if (optimizeImports) { + push( + `import { ${helpers.map((s) => helperNameMap[s]).join(", ")} } from ${JSON.stringify(runtimeModuleName)} +`, + -1 /* End */ + ); + push( + ` +// Binding optimization for webpack code-split +const ${helpers.map((s) => `_${helperNameMap[s]} = ${helperNameMap[s]}`).join(", ")} +`, + -1 /* End */ + ); + } else { + push( + `import { ${helpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from ${JSON.stringify(runtimeModuleName)} +`, + -1 /* End */ + ); + } + } + if (ast.ssrHelpers && ast.ssrHelpers.length) { + push( + `import { ${ast.ssrHelpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from "${ssrRuntimeModuleName}" +`, + -1 /* End */ + ); + } + if (ast.imports.length) { + genImports(ast.imports, context); + newline(); + } + genHoists(ast.hoists, context); + newline(); + if (!inline) { + push(`export `); + } +} +function genAssets(assets, type, { helper, push, newline, isTS }) { + const resolver = helper( + type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE + ); + for (let i = 0; i < assets.length; i++) { + let id = assets[i]; + const maybeSelfReference = id.endsWith("__self"); + if (maybeSelfReference) { + id = id.slice(0, -6); + } + push( + `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}` + ); + if (i < assets.length - 1) { + newline(); + } + } +} +function genHoists(hoists, context) { + if (!hoists.length) { + return; + } + context.pure = true; + const { push, newline } = context; + newline(); + for (let i = 0; i < hoists.length; i++) { + const exp = hoists[i]; + if (exp) { + push(`const _hoisted_${i + 1} = `); + genNode(exp, context); + newline(); + } + } + context.pure = false; +} +function genImports(importsOptions, context) { + if (!importsOptions.length) { + return; + } + importsOptions.forEach((imports) => { + context.push(`import `); + genNode(imports.exp, context); + context.push(` from '${imports.path}'`); + context.newline(); + }); +} +function isText(n) { + return isString$1(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8; +} +function genNodeListAsArray(nodes, context) { + const multilines = nodes.length > 3 || nodes.some((n) => isArray$3(n) || !isText(n)); + context.push(`[`); + multilines && context.indent(); + genNodeList(nodes, context, multilines); + multilines && context.deindent(); + context.push(`]`); +} +function genNodeList(nodes, context, multilines = false, comma = true) { + const { push, newline } = context; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (isString$1(node)) { + push(node, -3 /* Unknown */); + } else if (isArray$3(node)) { + genNodeListAsArray(node, context); + } else { + genNode(node, context); + } + if (i < nodes.length - 1) { + if (multilines) { + comma && push(","); + newline(); + } else { + comma && push(", "); + } + } + } +} +function genNode(node, context) { + if (isString$1(node)) { + context.push(node, -3 /* Unknown */); + return; + } + if (isSymbol$1(node)) { + context.push(context.helper(node)); + return; + } + switch (node.type) { + case 1: + case 9: + case 11: + assert( + node.codegenNode != null, + `Codegen node is missing for element/if/for node. Apply appropriate transforms first.` + ); + genNode(node.codegenNode, context); + break; + case 2: + genText(node, context); + break; + case 4: + genExpression(node, context); + break; + case 5: + genInterpolation(node, context); + break; + case 12: + genNode(node.codegenNode, context); + break; + case 8: + genCompoundExpression(node, context); + break; + case 3: + genComment(node, context); + break; + case 13: + genVNodeCall(node, context); + break; + case 14: + genCallExpression(node, context); + break; + case 15: + genObjectExpression(node, context); + break; + case 17: + genArrayExpression(node, context); + break; + case 18: + genFunctionExpression(node, context); + break; + case 19: + genConditionalExpression(node, context); + break; + case 20: + genCacheExpression(node, context); + break; + case 21: + genNodeList(node.body, context, true, false); + break; + // SSR only types + case 22: + genTemplateLiteral(node, context); + break; + case 23: + genIfStatement(node, context); + break; + case 24: + genAssignmentExpression(node, context); + break; + case 25: + genSequenceExpression(node, context); + break; + case 26: + genReturnStatement(node, context); + break; + /* v8 ignore start */ + case 10: + break; + default: + { + assert(false, `unhandled codegen node type: ${node.type}`); + const exhaustiveCheck = node; + return exhaustiveCheck; + } + } +} +function genText(node, context) { + context.push(JSON.stringify(node.content), -3 /* Unknown */, node); +} +function genExpression(node, context) { + const { content, isStatic } = node; + context.push( + isStatic ? JSON.stringify(content) : content, + -3 /* Unknown */, + node + ); +} +function genInterpolation(node, context) { + const { push, helper, pure } = context; + if (pure) push(PURE_ANNOTATION); + push(`${helper(TO_DISPLAY_STRING)}(`); + genNode(node.content, context); + push(`)`); +} +function genCompoundExpression(node, context) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (isString$1(child)) { + context.push(child, -3 /* Unknown */); + } else { + genNode(child, context); + } + } +} +function genExpressionAsPropertyKey(node, context) { + const { push } = context; + if (node.type === 8) { + push(`[`); + genCompoundExpression(node, context); + push(`]`); + } else if (node.isStatic) { + const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content); + push(text, -2 /* None */, node); + } else { + push(`[${node.content}]`, -3 /* Unknown */, node); + } +} +function genComment(node, context) { + const { push, helper, pure } = context; + if (pure) { + push(PURE_ANNOTATION); + } + push( + `${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, + -3 /* Unknown */, + node + ); +} +function genVNodeCall(node, context) { + const { push, helper, pure } = context; + const { + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent + } = node; + let patchFlagString; + if (patchFlag) { + { + if (patchFlag < 0) { + patchFlagString = patchFlag + ` /* ${PatchFlagNames[patchFlag]} */`; + } else { + const flagNames = Object.keys(PatchFlagNames).map(Number).filter((n) => n > 0 && patchFlag & n).map((n) => PatchFlagNames[n]).join(`, `); + patchFlagString = patchFlag + ` /* ${flagNames} */`; + } + } + } + if (directives) { + push(helper(WITH_DIRECTIVES) + `(`); + } + if (isBlock) { + push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `); + } + if (pure) { + push(PURE_ANNOTATION); + } + const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent); + push(helper(callHelper) + `(`, -2 /* None */, node); + genNodeList( + genNullableArgs([tag, props, children, patchFlagString, dynamicProps]), + context + ); + push(`)`); + if (isBlock) { + push(`)`); + } + if (directives) { + push(`, `); + genNode(directives, context); + push(`)`); + } +} +function genNullableArgs(args) { + let i = args.length; + while (i--) { + if (args[i] != null) break; + } + return args.slice(0, i + 1).map((arg) => arg || `null`); +} +function genCallExpression(node, context) { + const { push, helper, pure } = context; + const callee = isString$1(node.callee) ? node.callee : helper(node.callee); + if (pure) { + push(PURE_ANNOTATION); + } + push(callee + `(`, -2 /* None */, node); + genNodeList(node.arguments, context); + push(`)`); +} +function genObjectExpression(node, context) { + const { push, indent, deindent, newline } = context; + const { properties } = node; + if (!properties.length) { + push(`{}`, -2 /* None */, node); + return; + } + const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4); + push(multilines ? `{` : `{ `); + multilines && indent(); + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + genExpressionAsPropertyKey(key, context); + push(`: `); + genNode(value, context); + if (i < properties.length - 1) { + push(`,`); + newline(); + } + } + multilines && deindent(); + push(multilines ? `}` : ` }`); +} +function genArrayExpression(node, context) { + genNodeListAsArray(node.elements, context); +} +function genFunctionExpression(node, context) { + const { push, indent, deindent } = context; + const { params, returns, body, newline, isSlot } = node; + if (isSlot) { + push(`_${helperNameMap[WITH_CTX]}(`); + } + push(`(`, -2 /* None */, node); + if (isArray$3(params)) { + genNodeList(params, context); + } else if (params) { + genNode(params, context); + } + push(`) => `); + if (newline || body) { + push(`{`); + indent(); + } + if (returns) { + if (newline) { + push(`return `); + } + if (isArray$3(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } + } else if (body) { + genNode(body, context); + } + if (newline || body) { + deindent(); + push(`}`); + } + if (isSlot) { + push(`)`); + } +} +function genConditionalExpression(node, context) { + const { test, consequent, alternate, newline: needNewline } = node; + const { push, indent, deindent, newline } = context; + if (test.type === 4) { + const needsParens = !isSimpleIdentifier(test.content); + needsParens && push(`(`); + genExpression(test, context); + needsParens && push(`)`); + } else { + push(`(`); + genNode(test, context); + push(`)`); + } + needNewline && indent(); + context.indentLevel++; + needNewline || push(` `); + push(`? `); + genNode(consequent, context); + context.indentLevel--; + needNewline && newline(); + needNewline || push(` `); + push(`: `); + const isNested = alternate.type === 19; + if (!isNested) { + context.indentLevel++; + } + genNode(alternate, context); + if (!isNested) { + context.indentLevel--; + } + needNewline && deindent( + true + /* without newline */ + ); +} +function genCacheExpression(node, context) { + const { push, helper, indent, deindent, newline } = context; + const { needPauseTracking, needArraySpread } = node; + if (needArraySpread) { + push(`[...(`); + } + push(`_cache[${node.index}] || (`); + if (needPauseTracking) { + indent(); + push(`${helper(SET_BLOCK_TRACKING)}(-1`); + if (node.inVOnce) push(`, true`); + push(`),`); + newline(); + push(`(`); + } + push(`_cache[${node.index}] = `); + genNode(node.value, context); + if (needPauseTracking) { + push(`).cacheIndex = ${node.index},`); + newline(); + push(`${helper(SET_BLOCK_TRACKING)}(1),`); + newline(); + push(`_cache[${node.index}]`); + deindent(); + } + push(`)`); + if (needArraySpread) { + push(`)]`); + } +} +function genTemplateLiteral(node, context) { + const { push, indent, deindent } = context; + push("`"); + const l = node.elements.length; + const multilines = l > 3; + for (let i = 0; i < l; i++) { + const e = node.elements[i]; + if (isString$1(e)) { + push(e.replace(/(`|\$|\\)/g, "\\$1"), -3 /* Unknown */); + } else { + push("${"); + if (multilines) indent(); + genNode(e, context); + if (multilines) deindent(); + push("}"); + } + } + push("`"); +} +function genIfStatement(node, context) { + const { push, indent, deindent } = context; + const { test, consequent, alternate } = node; + push(`if (`); + genNode(test, context); + push(`) {`); + indent(); + genNode(consequent, context); + deindent(); + push(`}`); + if (alternate) { + push(` else `); + if (alternate.type === 23) { + genIfStatement(alternate, context); + } else { + push(`{`); + indent(); + genNode(alternate, context); + deindent(); + push(`}`); + } + } +} +function genAssignmentExpression(node, context) { + genNode(node.left, context); + context.push(` = `); + genNode(node.right, context); +} +function genSequenceExpression(node, context) { + context.push(`(`); + genNodeList(node.expressions, context); + context.push(`)`); +} +function genReturnStatement({ returns }, context) { + context.push(`return `); + if (isArray$3(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } +} + +const isLiteralWhitelisted = /* @__PURE__ */ makeMap("true,false,null,this"); +const transformExpression = (node, context) => { + if (node.type === 5) { + node.content = processExpression( + node.content, + context + ); + } else if (node.type === 1) { + const memo = findDir(node, "memo"); + for (let i = 0; i < node.props.length; i++) { + const dir = node.props[i]; + if (dir.type === 7 && dir.name !== "for") { + const exp = dir.exp; + const arg = dir.arg; + if (exp && exp.type === 4 && !(dir.name === "on" && arg) && // key has been processed in transformFor(vMemo + vFor) + !(memo && arg && arg.type === 4 && arg.content === "key")) { + dir.exp = processExpression( + exp, + context, + // slot args must be processed as function params + dir.name === "slot" + ); + } + if (arg && arg.type === 4 && !arg.isStatic) { + dir.arg = processExpression(arg, context); + } + } + } + } +}; +function processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) { + if (!context.prefixIdentifiers || !node.content.trim()) { + return node; + } + const { inline, bindingMetadata } = context; + const rewriteIdentifier = (raw, parent, id) => { + const type = hasOwn(bindingMetadata, raw) && bindingMetadata[raw]; + if (inline) { + const isAssignmentLVal = parent && parent.type === "AssignmentExpression" && parent.left === id; + const isUpdateArg = parent && parent.type === "UpdateExpression" && parent.argument === id; + const isDestructureAssignment = parent && isInDestructureAssignment(parent, parentStack); + const isNewExpression = parent && isInNewExpression(parentStack); + const wrapWithUnref = (raw2) => { + const wrapped = `${context.helperString(UNREF)}(${raw2})`; + return isNewExpression ? `(${wrapped})` : wrapped; + }; + if (isConst(type) || type === "setup-reactive-const" || localVars[raw]) { + return raw; + } else if (type === "setup-ref") { + return `${raw}.value`; + } else if (type === "setup-maybe-ref") { + return isAssignmentLVal || isUpdateArg || isDestructureAssignment ? `${raw}.value` : wrapWithUnref(raw); + } else if (type === "setup-let") { + if (isAssignmentLVal) { + const { right: rVal, operator } = parent; + const rExp = rawExp.slice(rVal.start - 1, rVal.end - 1); + const rExpString = stringifyExpression( + processExpression( + createSimpleExpression(rExp, false), + context, + false, + false, + knownIds + ) + ); + return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore +` : ``} ? ${raw}.value ${operator} ${rExpString} : ${raw}`; + } else if (isUpdateArg) { + id.start = parent.start; + id.end = parent.end; + const { prefix: isPrefix, operator } = parent; + const prefix = isPrefix ? operator : ``; + const postfix = isPrefix ? `` : operator; + return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore +` : ``} ? ${prefix}${raw}.value${postfix} : ${prefix}${raw}${postfix}`; + } else if (isDestructureAssignment) { + return raw; + } else { + return wrapWithUnref(raw); + } + } else if (type === "props") { + return genPropsAccessExp(raw); + } else if (type === "props-aliased") { + return genPropsAccessExp(bindingMetadata.__propsAliases[raw]); + } + } else { + if (type && type.startsWith("setup") || type === "literal-const") { + return `$setup.${raw}`; + } else if (type === "props-aliased") { + return `$props['${bindingMetadata.__propsAliases[raw]}']`; + } else if (type) { + return `$${type}.${raw}`; + } + } + return `_ctx.${raw}`; + }; + const rawExp = node.content; + let ast = node.ast; + if (ast === false) { + return node; + } + if (ast === null || !ast && isSimpleIdentifier(rawExp)) { + const isScopeVarReference = context.identifiers[rawExp]; + const isAllowedGlobal = isGloballyAllowed(rawExp); + const isLiteral = isLiteralWhitelisted(rawExp); + if (!asParams && !isScopeVarReference && !isLiteral && (!isAllowedGlobal || bindingMetadata[rawExp])) { + if (isConst(bindingMetadata[rawExp])) { + node.constType = 1; + } + node.content = rewriteIdentifier(rawExp); + } else if (!isScopeVarReference) { + if (isLiteral) { + node.constType = 3; + } else { + node.constType = 2; + } + } + return node; + } + if (!ast) { + const source = asRawStatements ? ` ${rawExp} ` : `(${rawExp})${asParams ? `=>{}` : ``}`; + try { + ast = libExports.parseExpression(source, { + sourceType: "module", + plugins: context.expressionPlugins + }); + } catch (e) { + context.onError( + createCompilerError( + 45, + node.loc, + void 0, + e.message + ) + ); + return node; + } + } + const ids = []; + const parentStack = []; + const knownIds = Object.create(context.identifiers); + walkIdentifiers( + ast, + (node2, parent, _, isReferenced, isLocal) => { + if (isStaticPropertyKey(node2, parent)) { + return; + } + const needPrefix = isReferenced && canPrefix(node2); + if (needPrefix && !isLocal) { + if (isStaticProperty(parent) && parent.shorthand) { + node2.prefix = `${node2.name}: `; + } + node2.name = rewriteIdentifier(node2.name, parent, node2); + ids.push(node2); + } else { + if (!(needPrefix && isLocal) && (!parent || parent.type !== "CallExpression" && parent.type !== "NewExpression" && parent.type !== "MemberExpression")) { + node2.isConstant = true; + } + ids.push(node2); + } + }, + true, + // invoke on ALL identifiers + parentStack, + knownIds + ); + const children = []; + ids.sort((a, b) => a.start - b.start); + ids.forEach((id, i) => { + const start = id.start - 1; + const end = id.end - 1; + const last = ids[i - 1]; + const leadingText = rawExp.slice(last ? last.end - 1 : 0, start); + if (leadingText.length || id.prefix) { + children.push(leadingText + (id.prefix || ``)); + } + const source = rawExp.slice(start, end); + children.push( + createSimpleExpression( + id.name, + false, + { + start: advancePositionWithClone(node.loc.start, source, start), + end: advancePositionWithClone(node.loc.start, source, end), + source + }, + id.isConstant ? 3 : 0 + ) + ); + if (i === ids.length - 1 && end < rawExp.length) { + children.push(rawExp.slice(end)); + } + }); + let ret; + if (children.length) { + ret = createCompoundExpression(children, node.loc); + ret.ast = ast; + } else { + ret = node; + ret.constType = 3; + } + ret.identifiers = Object.keys(knownIds); + return ret; +} +function canPrefix(id) { + if (isGloballyAllowed(id.name)) { + return false; + } + if (id.name === "require") { + return false; + } + return true; +} +function stringifyExpression(exp) { + if (isString$1(exp)) { + return exp; + } else if (exp.type === 4) { + return exp.content; + } else { + return exp.children.map(stringifyExpression).join(""); + } +} +function isConst(type) { + return type === "setup-const" || type === "literal-const"; +} + +const transformIf = createStructuralDirectiveTransform( + /^(if|else|else-if)$/, + (node, dir, context) => { + return processIf(node, dir, context, (ifNode, branch, isRoot) => { + const siblings = context.parent.children; + let i = siblings.indexOf(ifNode); + let key = 0; + while (i-- >= 0) { + const sibling = siblings[i]; + if (sibling && sibling.type === 9) { + key += sibling.branches.length; + } + } + return () => { + if (isRoot) { + ifNode.codegenNode = createCodegenNodeForBranch( + branch, + key, + context + ); + } else { + const parentCondition = getParentCondition(ifNode.codegenNode); + parentCondition.alternate = createCodegenNodeForBranch( + branch, + key + ifNode.branches.length - 1, + context + ); + } + }; + }); + } +); +function processIf(node, dir, context, processCodegen) { + if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) { + const loc = dir.exp ? dir.exp.loc : node.loc; + context.onError( + createCompilerError(28, dir.loc) + ); + dir.exp = createSimpleExpression(`true`, false, loc); + } + if (context.prefixIdentifiers && dir.exp) { + dir.exp = processExpression(dir.exp, context); + } + if (dir.name === "if") { + const branch = createIfBranch(node, dir); + const ifNode = { + type: 9, + loc: cloneLoc(node.loc), + branches: [branch] + }; + context.replaceNode(ifNode); + if (processCodegen) { + return processCodegen(ifNode, branch, true); + } + } else { + const siblings = context.parent.children; + const comments = []; + let i = siblings.indexOf(node); + while (i-- >= -1) { + const sibling = siblings[i]; + if (sibling && sibling.type === 3) { + context.removeNode(sibling); + comments.unshift(sibling); + continue; + } + if (sibling && sibling.type === 2 && !sibling.content.trim().length) { + context.removeNode(sibling); + continue; + } + if (sibling && sibling.type === 9) { + if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) { + context.onError( + createCompilerError(30, node.loc) + ); + } + context.removeNode(); + const branch = createIfBranch(node, dir); + if (comments.length && // #3619 ignore comments if the v-if is direct child of <transition> + !(context.parent && context.parent.type === 1 && (context.parent.tag === "transition" || context.parent.tag === "Transition"))) { + branch.children = [...comments, ...branch.children]; + } + { + const key = branch.userKey; + if (key) { + sibling.branches.forEach(({ userKey }) => { + if (isSameKey(userKey, key)) { + context.onError( + createCompilerError( + 29, + branch.userKey.loc + ) + ); + } + }); + } + } + sibling.branches.push(branch); + const onExit = processCodegen && processCodegen(sibling, branch, false); + traverseNode(branch, context); + if (onExit) onExit(); + context.currentNode = null; + } else { + context.onError( + createCompilerError(30, node.loc) + ); + } + break; + } + } +} +function createIfBranch(node, dir) { + const isTemplateIf = node.tagType === 3; + return { + type: 10, + loc: node.loc, + condition: dir.name === "else" ? void 0 : dir.exp, + children: isTemplateIf && !findDir(node, "for") ? node.children : [node], + userKey: findProp(node, `key`), + isTemplateIf + }; +} +function createCodegenNodeForBranch(branch, keyIndex, context) { + if (branch.condition) { + return createConditionalExpression( + branch.condition, + createChildrenCodegenNode(branch, keyIndex, context), + // make sure to pass in asBlock: true so that the comment node call + // closes the current block. + createCallExpression(context.helper(CREATE_COMMENT), [ + '"v-if"' , + "true" + ]) + ); + } else { + return createChildrenCodegenNode(branch, keyIndex, context); + } +} +function createChildrenCodegenNode(branch, keyIndex, context) { + const { helper } = context; + const keyProperty = createObjectProperty( + `key`, + createSimpleExpression( + `${keyIndex}`, + false, + locStub, + 2 + ) + ); + const { children } = branch; + const firstChild = children[0]; + const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1; + if (needFragmentWrapper) { + if (children.length === 1 && firstChild.type === 11) { + const vnodeCall = firstChild.codegenNode; + injectProp(vnodeCall, keyProperty, context); + return vnodeCall; + } else { + let patchFlag = 64; + if (!branch.isTemplateIf && children.filter((c) => c.type !== 3).length === 1) { + patchFlag |= 2048; + } + return createVNodeCall( + context, + helper(FRAGMENT), + createObjectExpression([keyProperty]), + children, + patchFlag, + void 0, + void 0, + true, + false, + false, + branch.loc + ); + } + } else { + const ret = firstChild.codegenNode; + const vnodeCall = getMemoedVNodeCall(ret); + if (vnodeCall.type === 13) { + convertToBlock(vnodeCall, context); + } + injectProp(vnodeCall, keyProperty, context); + return ret; + } +} +function isSameKey(a, b) { + if (!a || a.type !== b.type) { + return false; + } + if (a.type === 6) { + if (a.value.content !== b.value.content) { + return false; + } + } else { + const exp = a.exp; + const branchExp = b.exp; + if (exp.type !== branchExp.type) { + return false; + } + if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) { + return false; + } + } + return true; +} +function getParentCondition(node) { + while (true) { + if (node.type === 19) { + if (node.alternate.type === 19) { + node = node.alternate; + } else { + return node; + } + } else if (node.type === 20) { + node = node.value; + } + } +} + +const transformBind = (dir, _node, context) => { + const { modifiers, loc } = dir; + const arg = dir.arg; + let { exp } = dir; + if (exp && exp.type === 4 && !exp.content.trim()) { + { + context.onError( + createCompilerError(34, loc) + ); + return { + props: [ + createObjectProperty(arg, createSimpleExpression("", true, loc)) + ] + }; + } + } + if (!exp) { + if (arg.type !== 4 || !arg.isStatic) { + context.onError( + createCompilerError( + 52, + arg.loc + ) + ); + return { + props: [ + createObjectProperty(arg, createSimpleExpression("", true, loc)) + ] + }; + } + transformBindShorthand(dir, context); + exp = dir.exp; + } + if (arg.type !== 4) { + arg.children.unshift(`(`); + arg.children.push(`) || ""`); + } else if (!arg.isStatic) { + arg.content = arg.content ? `${arg.content} || ""` : `""`; + } + if (modifiers.some((mod) => mod.content === "camel")) { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = camelize(arg.content); + } else { + arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`; + } + } else { + arg.children.unshift(`${context.helperString(CAMELIZE)}(`); + arg.children.push(`)`); + } + } + if (!context.inSSR) { + if (modifiers.some((mod) => mod.content === "prop")) { + injectPrefix(arg, "."); + } + if (modifiers.some((mod) => mod.content === "attr")) { + injectPrefix(arg, "^"); + } + } + return { + props: [createObjectProperty(arg, exp)] + }; +}; +const transformBindShorthand = (dir, context) => { + const arg = dir.arg; + const propName = camelize(arg.content); + dir.exp = createSimpleExpression(propName, false, arg.loc); + { + dir.exp = processExpression(dir.exp, context); + } +}; +const injectPrefix = (arg, prefix) => { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = prefix + arg.content; + } else { + arg.content = `\`${prefix}\${${arg.content}}\``; + } + } else { + arg.children.unshift(`'${prefix}' + (`); + arg.children.push(`)`); + } +}; + +const transformFor = createStructuralDirectiveTransform( + "for", + (node, dir, context) => { + const { helper, removeHelper } = context; + return processFor(node, dir, context, (forNode) => { + const renderExp = createCallExpression(helper(RENDER_LIST), [ + forNode.source + ]); + const isTemplate = isTemplateNode(node); + const memo = findDir(node, "memo"); + const keyProp = findProp(node, `key`, false, true); + const isDirKey = keyProp && keyProp.type === 7; + if (isDirKey && !keyProp.exp) { + transformBindShorthand(keyProp, context); + } + let keyExp = keyProp && (keyProp.type === 6 ? keyProp.value ? createSimpleExpression(keyProp.value.content, true) : void 0 : keyProp.exp); + if (memo && keyExp && isDirKey) { + { + keyProp.exp = keyExp = processExpression( + keyExp, + context + ); + } + } + const keyProperty = keyProp && keyExp ? createObjectProperty(`key`, keyExp) : null; + if (isTemplate) { + if (memo) { + memo.exp = processExpression( + memo.exp, + context + ); + } + if (keyProperty && keyProp.type !== 6) { + keyProperty.value = processExpression( + keyProperty.value, + context + ); + } + } + const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0; + const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256; + forNode.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + renderExp, + fragmentFlag, + void 0, + void 0, + true, + !isStableFragment, + false, + node.loc + ); + return () => { + let childBlock; + const { children } = forNode; + if (isTemplate) { + node.children.some((c) => { + if (c.type === 1) { + const key = findProp(c, "key"); + if (key) { + context.onError( + createCompilerError( + 33, + key.loc + ) + ); + return true; + } + } + }); + } + const needFragmentWrapper = children.length !== 1 || children[0].type !== 1; + const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null; + if (slotOutlet) { + childBlock = slotOutlet.codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + } else if (needFragmentWrapper) { + childBlock = createVNodeCall( + context, + helper(FRAGMENT), + keyProperty ? createObjectExpression([keyProperty]) : void 0, + node.children, + 64, + void 0, + void 0, + true, + void 0, + false + ); + } else { + childBlock = children[0].codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + if (childBlock.isBlock !== !isStableFragment) { + if (childBlock.isBlock) { + removeHelper(OPEN_BLOCK); + removeHelper( + getVNodeBlockHelper(context.inSSR, childBlock.isComponent) + ); + } else { + removeHelper( + getVNodeHelper(context.inSSR, childBlock.isComponent) + ); + } + } + childBlock.isBlock = !isStableFragment; + if (childBlock.isBlock) { + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent)); + } else { + helper(getVNodeHelper(context.inSSR, childBlock.isComponent)); + } + } + if (memo) { + const loop = createFunctionExpression( + createForLoopParams(forNode.parseResult, [ + createSimpleExpression(`_cached`) + ]) + ); + loop.body = createBlockStatement([ + createCompoundExpression([`const _memo = (`, memo.exp, `)`]), + createCompoundExpression([ + `if (_cached`, + ...keyExp ? [` && _cached.key === `, keyExp] : [], + ` && ${context.helperString( + IS_MEMO_SAME + )}(_cached, _memo)) return _cached` + ]), + createCompoundExpression([`const _item = `, childBlock]), + createSimpleExpression(`_item.memo = _memo`), + createSimpleExpression(`return _item`) + ]); + renderExp.arguments.push( + loop, + createSimpleExpression(`_cache`), + createSimpleExpression(String(context.cached.length)) + ); + context.cached.push(null); + } else { + renderExp.arguments.push( + createFunctionExpression( + createForLoopParams(forNode.parseResult), + childBlock, + true + ) + ); + } + }; + }); + } +); +function processFor(node, dir, context, processCodegen) { + if (!dir.exp) { + context.onError( + createCompilerError(31, dir.loc) + ); + return; + } + const parseResult = dir.forParseResult; + if (!parseResult) { + context.onError( + createCompilerError(32, dir.loc) + ); + return; + } + finalizeForParseResult(parseResult, context); + const { addIdentifiers, removeIdentifiers, scopes } = context; + const { source, value, key, index } = parseResult; + const forNode = { + type: 11, + loc: dir.loc, + source, + valueAlias: value, + keyAlias: key, + objectIndexAlias: index, + parseResult, + children: isTemplateNode(node) ? node.children : [node] + }; + context.replaceNode(forNode); + scopes.vFor++; + if (context.prefixIdentifiers) { + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + } + const onExit = processCodegen && processCodegen(forNode); + return () => { + scopes.vFor--; + if (context.prefixIdentifiers) { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + } + if (onExit) onExit(); + }; +} +function finalizeForParseResult(result, context) { + if (result.finalized) return; + if (context.prefixIdentifiers) { + result.source = processExpression( + result.source, + context + ); + if (result.key) { + result.key = processExpression( + result.key, + context, + true + ); + } + if (result.index) { + result.index = processExpression( + result.index, + context, + true + ); + } + if (result.value) { + result.value = processExpression( + result.value, + context, + true + ); + } + } + result.finalized = true; +} +function createForLoopParams({ value, key, index }, memoArgs = []) { + return createParamsList([value, key, index, ...memoArgs]); +} +function createParamsList(args) { + let i = args.length; + while (i--) { + if (args[i]) break; + } + return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false)); +} + +const defaultFallback = createSimpleExpression(`undefined`, false); +const trackSlotScopes = (node, context) => { + if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) { + const vSlot = findDir(node, "slot"); + if (vSlot) { + const slotProps = vSlot.exp; + if (context.prefixIdentifiers) { + slotProps && context.addIdentifiers(slotProps); + } + context.scopes.vSlot++; + return () => { + if (context.prefixIdentifiers) { + slotProps && context.removeIdentifiers(slotProps); + } + context.scopes.vSlot--; + }; + } + } +}; +const trackVForSlotScopes = (node, context) => { + let vFor; + if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, "for"))) { + const result = vFor.forParseResult; + if (result) { + finalizeForParseResult(result, context); + const { value, key, index } = result; + const { addIdentifiers, removeIdentifiers } = context; + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + return () => { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + }; + } + } +}; +const buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression( + props, + children, + false, + true, + children.length ? children[0].loc : loc +); +function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { + context.helper(WITH_CTX); + const { children, loc } = node; + const slotsProperties = []; + const dynamicSlots = []; + let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0; + if (!context.ssr && context.prefixIdentifiers) { + hasDynamicSlots = hasScopeRef(node, context.identifiers); + } + const onComponentSlot = findDir(node, "slot", true); + if (onComponentSlot) { + const { arg, exp } = onComponentSlot; + if (arg && !isStaticExp(arg)) { + hasDynamicSlots = true; + } + slotsProperties.push( + createObjectProperty( + arg || createSimpleExpression("default", true), + buildSlotFn(exp, void 0, children, loc) + ) + ); + } + let hasTemplateSlots = false; + let hasNamedDefaultSlot = false; + const implicitDefaultChildren = []; + const seenSlotNames = /* @__PURE__ */ new Set(); + let conditionalBranchIndex = 0; + for (let i = 0; i < children.length; i++) { + const slotElement = children[i]; + let slotDir; + if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) { + if (slotElement.type !== 3) { + implicitDefaultChildren.push(slotElement); + } + continue; + } + if (onComponentSlot) { + context.onError( + createCompilerError(37, slotDir.loc) + ); + break; + } + hasTemplateSlots = true; + const { children: slotChildren, loc: slotLoc } = slotElement; + const { + arg: slotName = createSimpleExpression(`default`, true), + exp: slotProps, + loc: dirLoc + } = slotDir; + let staticSlotName; + if (isStaticExp(slotName)) { + staticSlotName = slotName ? slotName.content : `default`; + } else { + hasDynamicSlots = true; + } + const vFor = findDir(slotElement, "for"); + const slotFunction = buildSlotFn(slotProps, vFor, slotChildren, slotLoc); + let vIf; + let vElse; + if (vIf = findDir(slotElement, "if")) { + hasDynamicSlots = true; + dynamicSlots.push( + createConditionalExpression( + vIf.exp, + buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++), + defaultFallback + ) + ); + } else if (vElse = findDir( + slotElement, + /^else(-if)?$/, + true + /* allowEmpty */ + )) { + let j = i; + let prev; + while (j--) { + prev = children[j]; + if (prev.type !== 3 && isNonWhitespaceContent(prev)) { + break; + } + } + if (prev && isTemplateNode(prev) && findDir(prev, /^(else-)?if$/)) { + let conditional = dynamicSlots[dynamicSlots.length - 1]; + while (conditional.alternate.type === 19) { + conditional = conditional.alternate; + } + conditional.alternate = vElse.exp ? createConditionalExpression( + vElse.exp, + buildDynamicSlot( + slotName, + slotFunction, + conditionalBranchIndex++ + ), + defaultFallback + ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++); + } else { + context.onError( + createCompilerError(30, vElse.loc) + ); + } + } else if (vFor) { + hasDynamicSlots = true; + const parseResult = vFor.forParseResult; + if (parseResult) { + finalizeForParseResult(parseResult, context); + dynamicSlots.push( + createCallExpression(context.helper(RENDER_LIST), [ + parseResult.source, + createFunctionExpression( + createForLoopParams(parseResult), + buildDynamicSlot(slotName, slotFunction), + true + ) + ]) + ); + } else { + context.onError( + createCompilerError( + 32, + vFor.loc + ) + ); + } + } else { + if (staticSlotName) { + if (seenSlotNames.has(staticSlotName)) { + context.onError( + createCompilerError( + 38, + dirLoc + ) + ); + continue; + } + seenSlotNames.add(staticSlotName); + if (staticSlotName === "default") { + hasNamedDefaultSlot = true; + } + } + slotsProperties.push(createObjectProperty(slotName, slotFunction)); + } + } + if (!onComponentSlot) { + const buildDefaultSlotProperty = (props, children2) => { + const fn = buildSlotFn(props, void 0, children2, loc); + return createObjectProperty(`default`, fn); + }; + if (!hasTemplateSlots) { + slotsProperties.push(buildDefaultSlotProperty(void 0, children)); + } else if (implicitDefaultChildren.length && // #3766 + // with whitespace: 'preserve', whitespaces between slots will end up in + // implicitDefaultChildren. Ignore if all implicit children are whitespaces. + implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) { + if (hasNamedDefaultSlot) { + context.onError( + createCompilerError( + 39, + implicitDefaultChildren[0].loc + ) + ); + } else { + slotsProperties.push( + buildDefaultSlotProperty(void 0, implicitDefaultChildren) + ); + } + } + } + const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1; + let slots = createObjectExpression( + slotsProperties.concat( + createObjectProperty( + `_`, + // 2 = compiled but dynamic = can skip normalization, but must run diff + // 1 = compiled and static = can skip normalization AND diff as optimized + createSimpleExpression( + slotFlag + (` /* ${slotFlagsText[slotFlag]} */` ), + false + ) + ) + ), + loc + ); + if (dynamicSlots.length) { + slots = createCallExpression(context.helper(CREATE_SLOTS), [ + slots, + createArrayExpression(dynamicSlots) + ]); + } + return { + slots, + hasDynamicSlots + }; +} +function buildDynamicSlot(name, fn, index) { + const props = [ + createObjectProperty(`name`, name), + createObjectProperty(`fn`, fn) + ]; + if (index != null) { + props.push( + createObjectProperty(`key`, createSimpleExpression(String(index), true)) + ); + } + return createObjectExpression(props); +} +function hasForwardedSlots(children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1: + if (child.tagType === 2 || hasForwardedSlots(child.children)) { + return true; + } + break; + case 9: + if (hasForwardedSlots(child.branches)) return true; + break; + case 10: + case 11: + if (hasForwardedSlots(child.children)) return true; + break; + } + } + return false; +} +function isNonWhitespaceContent(node) { + if (node.type !== 2 && node.type !== 12) + return true; + return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content); +} + +const directiveImportMap = /* @__PURE__ */ new WeakMap(); +const transformElement = (node, context) => { + return function postTransformElement() { + node = context.currentNode; + if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) { + return; + } + const { tag, props } = node; + const isComponent = node.tagType === 1; + let vnodeTag = isComponent ? resolveComponentType(node, context) : `"${tag}"`; + const isDynamicComponent = isObject$2(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT; + let vnodeProps; + let vnodeChildren; + let patchFlag = 0; + let vnodeDynamicProps; + let dynamicPropNames; + let vnodeDirectives; + let shouldUseBlock = ( + // dynamic component may resolve to plain elements + isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block + // updates inside get proper isSVG flag at runtime. (#639, #643) + // This is technically web-specific, but splitting the logic out of core + // leads to too much unnecessary complexity. + (tag === "svg" || tag === "foreignObject" || tag === "math") + ); + if (props.length > 0) { + const propsBuildResult = buildProps( + node, + context, + void 0, + isComponent, + isDynamicComponent + ); + vnodeProps = propsBuildResult.props; + patchFlag = propsBuildResult.patchFlag; + dynamicPropNames = propsBuildResult.dynamicPropNames; + const directives = propsBuildResult.directives; + vnodeDirectives = directives && directives.length ? createArrayExpression( + directives.map((dir) => buildDirectiveArgs(dir, context)) + ) : void 0; + if (propsBuildResult.shouldUseBlock) { + shouldUseBlock = true; + } + } + if (node.children.length > 0) { + if (vnodeTag === KEEP_ALIVE) { + shouldUseBlock = true; + patchFlag |= 1024; + if (node.children.length > 1) { + context.onError( + createCompilerError(46, { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: "" + }) + ); + } + } + const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling + vnodeTag !== TELEPORT && // explained above. + vnodeTag !== KEEP_ALIVE; + if (shouldBuildAsSlots) { + const { slots, hasDynamicSlots } = buildSlots(node, context); + vnodeChildren = slots; + if (hasDynamicSlots) { + patchFlag |= 1024; + } + } else if (node.children.length === 1 && vnodeTag !== TELEPORT) { + const child = node.children[0]; + const type = child.type; + const hasDynamicTextChild = type === 5 || type === 8; + if (hasDynamicTextChild && getConstantType(child, context) === 0) { + patchFlag |= 1; + } + if (hasDynamicTextChild || type === 2) { + vnodeChildren = child; + } else { + vnodeChildren = node.children; + } + } else { + vnodeChildren = node.children; + } + } + if (dynamicPropNames && dynamicPropNames.length) { + vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames); + } + node.codegenNode = createVNodeCall( + context, + vnodeTag, + vnodeProps, + vnodeChildren, + patchFlag === 0 ? void 0 : patchFlag, + vnodeDynamicProps, + vnodeDirectives, + !!shouldUseBlock, + false, + isComponent, + node.loc + ); + }; +}; +function resolveComponentType(node, context, ssr = false) { + let { tag } = node; + const isExplicitDynamic = isComponentTag(tag); + const isProp = findProp( + node, + "is", + false, + true + /* allow empty */ + ); + if (isProp) { + if (isExplicitDynamic || false) { + let exp; + if (isProp.type === 6) { + exp = isProp.value && createSimpleExpression(isProp.value.content, true); + } else { + exp = isProp.exp; + if (!exp) { + exp = createSimpleExpression(`is`, false, isProp.arg.loc); + { + exp = isProp.exp = processExpression(exp, context); + } + } + } + if (exp) { + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + exp + ]); + } + } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) { + tag = isProp.value.content.slice(4); + } + } + const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag); + if (builtIn) { + if (!ssr) context.helper(builtIn); + return builtIn; + } + { + const fromSetup = resolveSetupReference(tag, context); + if (fromSetup) { + return fromSetup; + } + const dotIndex = tag.indexOf("."); + if (dotIndex > 0) { + const ns = resolveSetupReference(tag.slice(0, dotIndex), context); + if (ns) { + return ns + tag.slice(dotIndex); + } + } + } + if (context.selfName && capitalize(camelize(tag)) === context.selfName) { + context.helper(RESOLVE_COMPONENT); + context.components.add(tag + `__self`); + return toValidAssetId(tag, `component`); + } + context.helper(RESOLVE_COMPONENT); + context.components.add(tag); + return toValidAssetId(tag, `component`); +} +function resolveSetupReference(name, context) { + const bindings = context.bindingMetadata; + if (!bindings || bindings.__isScriptSetup === false) { + return; + } + const camelName = camelize(name); + const PascalName = capitalize(camelName); + const checkType = (type) => { + if (bindings[name] === type) { + return name; + } + if (bindings[camelName] === type) { + return camelName; + } + if (bindings[PascalName] === type) { + return PascalName; + } + }; + const fromConst = checkType("setup-const") || checkType("setup-reactive-const") || checkType("literal-const"); + if (fromConst) { + return context.inline ? ( + // in inline mode, const setup bindings (e.g. imports) can be used as-is + fromConst + ) : `$setup[${JSON.stringify(fromConst)}]`; + } + const fromMaybeRef = checkType("setup-let") || checkType("setup-ref") || checkType("setup-maybe-ref"); + if (fromMaybeRef) { + return context.inline ? ( + // setup scope bindings that may be refs need to be unrefed + `${context.helperString(UNREF)}(${fromMaybeRef})` + ) : `$setup[${JSON.stringify(fromMaybeRef)}]`; + } + const fromProps = checkType("props"); + if (fromProps) { + return `${context.helperString(UNREF)}(${context.inline ? "__props" : "$props"}[${JSON.stringify(fromProps)}])`; + } +} +function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) { + const { tag, loc: elementLoc, children } = node; + let properties = []; + const mergeArgs = []; + const runtimeDirectives = []; + const hasChildren = children.length > 0; + let shouldUseBlock = false; + let patchFlag = 0; + let hasRef = false; + let hasClassBinding = false; + let hasStyleBinding = false; + let hasHydrationEventBinding = false; + let hasDynamicKeys = false; + let hasVnodeHook = false; + const dynamicPropNames = []; + const pushMergeArg = (arg) => { + if (properties.length) { + mergeArgs.push( + createObjectExpression(dedupeProperties(properties), elementLoc) + ); + properties = []; + } + if (arg) mergeArgs.push(arg); + }; + const pushRefVForMarker = () => { + if (context.scopes.vFor > 0) { + properties.push( + createObjectProperty( + createSimpleExpression("ref_for", true), + createSimpleExpression("true") + ) + ); + } + }; + const analyzePatchFlag = ({ key, value }) => { + if (isStaticExp(key)) { + const name = key.content; + const isEventHandler = isOn(name); + if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click + // dedicated fast path. + name.toLowerCase() !== "onclick" && // omit v-model handlers + name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks + !isReservedProp(name)) { + hasHydrationEventBinding = true; + } + if (isEventHandler && isReservedProp(name)) { + hasVnodeHook = true; + } + if (isEventHandler && value.type === 14) { + value = value.arguments[0]; + } + if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) { + return; + } + if (name === "ref") { + hasRef = true; + } else if (name === "class") { + hasClassBinding = true; + } else if (name === "style") { + hasStyleBinding = true; + } else if (name !== "key" && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + if (isComponent && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + } else { + hasDynamicKeys = true; + } + }; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 6) { + const { loc, name, nameLoc, value } = prop; + let isStatic = true; + if (name === "ref") { + hasRef = true; + pushRefVForMarker(); + if (value && context.inline) { + const binding = context.bindingMetadata[value.content]; + if (binding === "setup-let" || binding === "setup-ref" || binding === "setup-maybe-ref") { + isStatic = false; + properties.push( + createObjectProperty( + createSimpleExpression("ref_key", true), + createSimpleExpression(value.content, true, value.loc) + ) + ); + } + } + } + if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || false)) { + continue; + } + properties.push( + createObjectProperty( + createSimpleExpression(name, true, nameLoc), + createSimpleExpression( + value ? value.content : "", + isStatic, + value ? value.loc : loc + ) + ) + ); + } else { + const { name, arg, exp, loc, modifiers } = prop; + const isVBind = name === "bind"; + const isVOn = name === "on"; + if (name === "slot") { + if (!isComponent) { + context.onError( + createCompilerError(40, loc) + ); + } + continue; + } + if (name === "once" || name === "memo") { + continue; + } + if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || false)) { + continue; + } + if (isVOn && ssr) { + continue; + } + if ( + // #938: elements with dynamic keys should be forced into blocks + isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked + // before children + isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update") + ) { + shouldUseBlock = true; + } + if (isVBind && isStaticArgOf(arg, "ref")) { + pushRefVForMarker(); + } + if (!arg && (isVBind || isVOn)) { + hasDynamicKeys = true; + if (exp) { + if (isVBind) { + pushRefVForMarker(); + pushMergeArg(); + mergeArgs.push(exp); + } else { + pushMergeArg({ + type: 14, + loc, + callee: context.helper(TO_HANDLERS), + arguments: isComponent ? [exp] : [exp, `true`] + }); + } + } else { + context.onError( + createCompilerError( + isVBind ? 34 : 35, + loc + ) + ); + } + continue; + } + if (isVBind && modifiers.some((mod) => mod.content === "prop")) { + patchFlag |= 32; + } + const directiveTransform = context.directiveTransforms[name]; + if (directiveTransform) { + const { props: props2, needRuntime } = directiveTransform(prop, node, context); + !ssr && props2.forEach(analyzePatchFlag); + if (isVOn && arg && !isStaticExp(arg)) { + pushMergeArg(createObjectExpression(props2, elementLoc)); + } else { + properties.push(...props2); + } + if (needRuntime) { + runtimeDirectives.push(prop); + if (isSymbol$1(needRuntime)) { + directiveImportMap.set(prop, needRuntime); + } + } + } else if (!isBuiltInDirective(name)) { + runtimeDirectives.push(prop); + if (hasChildren) { + shouldUseBlock = true; + } + } + } + } + let propsExpression = void 0; + if (mergeArgs.length) { + pushMergeArg(); + if (mergeArgs.length > 1) { + propsExpression = createCallExpression( + context.helper(MERGE_PROPS), + mergeArgs, + elementLoc + ); + } else { + propsExpression = mergeArgs[0]; + } + } else if (properties.length) { + propsExpression = createObjectExpression( + dedupeProperties(properties), + elementLoc + ); + } + if (hasDynamicKeys) { + patchFlag |= 16; + } else { + if (hasClassBinding && !isComponent) { + patchFlag |= 2; + } + if (hasStyleBinding && !isComponent) { + patchFlag |= 4; + } + if (dynamicPropNames.length) { + patchFlag |= 8; + } + if (hasHydrationEventBinding) { + patchFlag |= 32; + } + } + if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) { + patchFlag |= 512; + } + if (!context.inSSR && propsExpression) { + switch (propsExpression.type) { + case 15: + let classKeyIndex = -1; + let styleKeyIndex = -1; + let hasDynamicKey = false; + for (let i = 0; i < propsExpression.properties.length; i++) { + const key = propsExpression.properties[i].key; + if (isStaticExp(key)) { + if (key.content === "class") { + classKeyIndex = i; + } else if (key.content === "style") { + styleKeyIndex = i; + } + } else if (!key.isHandlerKey) { + hasDynamicKey = true; + } + } + const classProp = propsExpression.properties[classKeyIndex]; + const styleProp = propsExpression.properties[styleKeyIndex]; + if (!hasDynamicKey) { + if (classProp && !isStaticExp(classProp.value)) { + classProp.value = createCallExpression( + context.helper(NORMALIZE_CLASS), + [classProp.value] + ); + } + if (styleProp && // the static style is compiled into an object, + // so use `hasStyleBinding` to ensure that it is a dynamic style binding + (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist, + // v-bind:style with static literal object + styleProp.value.type === 17)) { + styleProp.value = createCallExpression( + context.helper(NORMALIZE_STYLE), + [styleProp.value] + ); + } + } else { + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [propsExpression] + ); + } + break; + case 14: + break; + default: + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [ + createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [ + propsExpression + ]) + ] + ); + break; + } + } + return { + props: propsExpression, + directives: runtimeDirectives, + patchFlag, + dynamicPropNames, + shouldUseBlock + }; +} +function dedupeProperties(properties) { + const knownProps = /* @__PURE__ */ new Map(); + const deduped = []; + for (let i = 0; i < properties.length; i++) { + const prop = properties[i]; + if (prop.key.type === 8 || !prop.key.isStatic) { + deduped.push(prop); + continue; + } + const name = prop.key.content; + const existing = knownProps.get(name); + if (existing) { + if (name === "style" || name === "class" || isOn(name)) { + mergeAsArray(existing, prop); + } + } else { + knownProps.set(name, prop); + deduped.push(prop); + } + } + return deduped; +} +function mergeAsArray(existing, incoming) { + if (existing.value.type === 17) { + existing.value.elements.push(incoming.value); + } else { + existing.value = createArrayExpression( + [existing.value, incoming.value], + existing.loc + ); + } +} +function buildDirectiveArgs(dir, context) { + const dirArgs = []; + const runtime = directiveImportMap.get(dir); + if (runtime) { + dirArgs.push(context.helperString(runtime)); + } else { + const fromSetup = resolveSetupReference("v-" + dir.name, context); + if (fromSetup) { + dirArgs.push(fromSetup); + } else { + context.helper(RESOLVE_DIRECTIVE); + context.directives.add(dir.name); + dirArgs.push(toValidAssetId(dir.name, `directive`)); + } + } + const { loc } = dir; + if (dir.exp) dirArgs.push(dir.exp); + if (dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(dir.arg); + } + if (Object.keys(dir.modifiers).length) { + if (!dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(`void 0`); + } + const trueExpression = createSimpleExpression(`true`, false, loc); + dirArgs.push( + createObjectExpression( + dir.modifiers.map( + (modifier) => createObjectProperty(modifier, trueExpression) + ), + loc + ) + ); + } + return createArrayExpression(dirArgs, dir.loc); +} +function stringifyDynamicPropNames(props) { + let propsNamesString = `[`; + for (let i = 0, l = props.length; i < l; i++) { + propsNamesString += JSON.stringify(props[i]); + if (i < l - 1) propsNamesString += ", "; + } + return propsNamesString + `]`; +} +function isComponentTag(tag) { + return tag === "component" || tag === "Component"; +} + +const transformSlotOutlet = (node, context) => { + if (isSlotOutlet(node)) { + const { children, loc } = node; + const { slotName, slotProps } = processSlotOutlet(node, context); + const slotArgs = [ + context.prefixIdentifiers ? `_ctx.$slots` : `$slots`, + slotName, + "{}", + "undefined", + "true" + ]; + let expectedLen = 2; + if (slotProps) { + slotArgs[2] = slotProps; + expectedLen = 3; + } + if (children.length) { + slotArgs[3] = createFunctionExpression([], children, false, false, loc); + expectedLen = 4; + } + if (context.scopeId && !context.slotted) { + expectedLen = 5; + } + slotArgs.splice(expectedLen); + node.codegenNode = createCallExpression( + context.helper(RENDER_SLOT), + slotArgs, + loc + ); + } +}; +function processSlotOutlet(node, context) { + let slotName = `"default"`; + let slotProps = void 0; + const nonNameProps = []; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (p.value) { + if (p.name === "name") { + slotName = JSON.stringify(p.value.content); + } else { + p.name = camelize(p.name); + nonNameProps.push(p); + } + } + } else { + if (p.name === "bind" && isStaticArgOf(p.arg, "name")) { + if (p.exp) { + slotName = p.exp; + } else if (p.arg && p.arg.type === 4) { + const name = camelize(p.arg.content); + slotName = p.exp = createSimpleExpression(name, false, p.arg.loc); + { + slotName = p.exp = processExpression(p.exp, context); + } + } + } else { + if (p.name === "bind" && p.arg && isStaticExp(p.arg)) { + p.arg.content = camelize(p.arg.content); + } + nonNameProps.push(p); + } + } + } + if (nonNameProps.length > 0) { + const { props, directives } = buildProps( + node, + context, + nonNameProps, + false, + false + ); + slotProps = props; + if (directives.length) { + context.onError( + createCompilerError( + 36, + directives[0].loc + ) + ); + } + } + return { + slotName, + slotProps + }; +} + +const transformOn$1 = (dir, node, context, augmentor) => { + const { loc, modifiers, arg } = dir; + if (!dir.exp && !modifiers.length) { + context.onError(createCompilerError(35, loc)); + } + let eventName; + if (arg.type === 4) { + if (arg.isStatic) { + let rawName = arg.content; + if (rawName.startsWith("vnode")) { + context.onError(createCompilerError(51, arg.loc)); + } + if (rawName.startsWith("vue:")) { + rawName = `vnode-${rawName.slice(4)}`; + } + const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? ( + // for non-element and vnode lifecycle event listeners, auto convert + // it to camelCase. See issue #2249 + toHandlerKey(camelize(rawName)) + ) : ( + // preserve case for plain element listeners that have uppercase + // letters, as these may be custom elements' custom events + `on:${rawName}` + ); + eventName = createSimpleExpression(eventString, true, arg.loc); + } else { + eventName = createCompoundExpression([ + `${context.helperString(TO_HANDLER_KEY)}(`, + arg, + `)` + ]); + } + } else { + eventName = arg; + eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`); + eventName.children.push(`)`); + } + let exp = dir.exp; + if (exp && !exp.content.trim()) { + exp = void 0; + } + let shouldCache = context.cacheHandlers && !exp && !context.inVOnce; + if (exp) { + const isMemberExp = isMemberExpression(exp, context); + const isInlineStatement = !(isMemberExp || isFnExpression(exp, context)); + const hasMultipleStatements = exp.content.includes(`;`); + if (context.prefixIdentifiers) { + isInlineStatement && context.addIdentifiers(`$event`); + exp = dir.exp = processExpression( + exp, + context, + false, + hasMultipleStatements + ); + isInlineStatement && context.removeIdentifiers(`$event`); + shouldCache = context.cacheHandlers && // unnecessary to cache inside v-once + !context.inVOnce && // runtime constants don't need to be cached + // (this is analyzed by compileScript in SFC <script setup>) + !(exp.type === 4 && exp.constType > 0) && // #1541 bail if this is a member exp handler passed to a component - + // we need to use the original function to preserve arity, + // e.g. <transition> relies on checking cb.length to determine + // transition end handling. Inline function is ok since its arity + // is preserved even when cached. + !(isMemberExp && node.tagType === 1) && // bail if the function references closure variables (v-for, v-slot) + // it must be passed fresh to avoid stale values. + !hasScopeRef(exp, context.identifiers); + if (shouldCache && isMemberExp) { + if (exp.type === 4) { + exp.content = `${exp.content} && ${exp.content}(...args)`; + } else { + exp.children = [...exp.children, ` && `, ...exp.children, `(...args)`]; + } + } + } + if (isInlineStatement || shouldCache && isMemberExp) { + exp = createCompoundExpression([ + `${isInlineStatement ? context.isTS ? `($event: any)` : `$event` : `${context.isTS ? ` +//@ts-ignore +` : ``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`, + exp, + hasMultipleStatements ? `}` : `)` + ]); + } + } + let ret = { + props: [ + createObjectProperty( + eventName, + exp || createSimpleExpression(`() => {}`, false, loc) + ) + ] + }; + if (augmentor) { + ret = augmentor(ret); + } + if (shouldCache) { + ret.props[0].value = context.cache(ret.props[0].value); + } + ret.props.forEach((p) => p.key.isHandlerKey = true); + return ret; +}; + +const transformText = (node, context) => { + if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) { + return () => { + const children = node.children; + let currentContainer = void 0; + let hasText = false; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child)) { + hasText = true; + for (let j = i + 1; j < children.length; j++) { + const next = children[j]; + if (isText$1(next)) { + if (!currentContainer) { + currentContainer = children[i] = createCompoundExpression( + [child], + child.loc + ); + } + currentContainer.children.push(` + `, next); + children.splice(j, 1); + j--; + } else { + currentContainer = void 0; + break; + } + } + } + } + if (!hasText || // if this is a plain element with a single text child, leave it + // as-is since the runtime has dedicated fast path for this by directly + // setting textContent of the element. + // for component root it's always normalized anyway. + children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756 + // custom directives can potentially add DOM elements arbitrarily, + // we need to avoid setting textContent of the element at runtime + // to avoid accidentally overwriting the DOM elements added + // by the user through custom directives. + !node.props.find( + (p) => p.type === 7 && !context.directiveTransforms[p.name] + ) && // in compat mode, <template> tags with no special directives + // will be rendered as a fragment so its children must be + // converted into vnodes. + true)) { + return; + } + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child) || child.type === 8) { + const callArgs = []; + if (child.type !== 2 || child.content !== " ") { + callArgs.push(child); + } + if (!context.ssr && getConstantType(child, context) === 0) { + callArgs.push( + 1 + (` /* ${PatchFlagNames[1]} */` ) + ); + } + children[i] = { + type: 12, + content: child, + loc: child.loc, + codegenNode: createCallExpression( + context.helper(CREATE_TEXT), + callArgs + ) + }; + } + } + }; + } +}; + +const seen$1 = /* @__PURE__ */ new WeakSet(); +const transformOnce = (node, context) => { + if (node.type === 1 && findDir(node, "once", true)) { + if (seen$1.has(node) || context.inVOnce || context.inSSR) { + return; + } + seen$1.add(node); + context.inVOnce = true; + context.helper(SET_BLOCK_TRACKING); + return () => { + context.inVOnce = false; + const cur = context.currentNode; + if (cur.codegenNode) { + cur.codegenNode = context.cache( + cur.codegenNode, + true, + true + ); + } + }; + } +}; + +const transformModel$1 = (dir, node, context) => { + const { exp, arg } = dir; + if (!exp) { + context.onError( + createCompilerError(41, dir.loc) + ); + return createTransformProps(); + } + const rawExp = exp.loc.source.trim(); + const expString = exp.type === 4 ? exp.content : rawExp; + const bindingType = context.bindingMetadata[rawExp]; + if (bindingType === "props" || bindingType === "props-aliased") { + context.onError(createCompilerError(44, exp.loc)); + return createTransformProps(); + } + const maybeRef = context.inline && (bindingType === "setup-let" || bindingType === "setup-ref" || bindingType === "setup-maybe-ref"); + if (!expString.trim() || !isMemberExpression(exp, context) && !maybeRef) { + context.onError( + createCompilerError(42, exp.loc) + ); + return createTransformProps(); + } + if (context.prefixIdentifiers && isSimpleIdentifier(expString) && context.identifiers[expString]) { + context.onError( + createCompilerError(43, exp.loc) + ); + return createTransformProps(); + } + const propName = arg ? arg : createSimpleExpression("modelValue", true); + const eventName = arg ? isStaticExp(arg) ? `onUpdate:${camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`; + let assignmentExp; + const eventArg = context.isTS ? `($event: any)` : `$event`; + if (maybeRef) { + if (bindingType === "setup-ref") { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + createSimpleExpression(rawExp, false, exp.loc), + `).value = $event)` + ]); + } else { + const altAssignment = bindingType === "setup-let" ? `${rawExp} = $event` : `null`; + assignmentExp = createCompoundExpression([ + `${eventArg} => (${context.helperString(IS_REF)}(${rawExp}) ? (`, + createSimpleExpression(rawExp, false, exp.loc), + `).value = $event : ${altAssignment})` + ]); + } + } else { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + exp, + `) = $event)` + ]); + } + const props = [ + // modelValue: foo + createObjectProperty(propName, dir.exp), + // "onUpdate:modelValue": $event => (foo = $event) + createObjectProperty(eventName, assignmentExp) + ]; + if (context.prefixIdentifiers && !context.inVOnce && context.cacheHandlers && !hasScopeRef(exp, context.identifiers)) { + props[1].value = context.cache(props[1].value); + } + if (dir.modifiers.length && node.tagType === 1) { + const modifiers = dir.modifiers.map((m) => m.content).map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `); + const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`; + props.push( + createObjectProperty( + modifiersKey, + createSimpleExpression( + `{ ${modifiers} }`, + false, + dir.loc, + 2 + ) + ) + ); + } + return createTransformProps(props); +}; +function createTransformProps(props = []) { + return { props }; +} + +const seen = /* @__PURE__ */ new WeakSet(); +const transformMemo = (node, context) => { + if (node.type === 1) { + const dir = findDir(node, "memo"); + if (!dir || seen.has(node)) { + return; + } + seen.add(node); + return () => { + const codegenNode = node.codegenNode || context.currentNode.codegenNode; + if (codegenNode && codegenNode.type === 13) { + if (node.tagType !== 1) { + convertToBlock(codegenNode, context); + } + node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [ + dir.exp, + createFunctionExpression(void 0, codegenNode), + `_cache`, + String(context.cached.length) + ]); + context.cached.push(null); + } + }; + } +}; + +function getBaseTransformPreset(prefixIdentifiers) { + return [ + [ + transformOnce, + transformIf, + transformMemo, + transformFor, + ...[], + ...prefixIdentifiers ? [ + // order is important + trackVForSlotScopes, + transformExpression + ] : [], + transformSlotOutlet, + transformElement, + trackSlotScopes, + transformText + ], + { + on: transformOn$1, + bind: transformBind, + model: transformModel$1 + } + ]; +} +function baseCompile(source, options = {}) { + const onError = options.onError || defaultOnError; + const isModuleMode = options.mode === "module"; + const prefixIdentifiers = options.prefixIdentifiers === true || isModuleMode; + if (!prefixIdentifiers && options.cacheHandlers) { + onError(createCompilerError(49)); + } + if (options.scopeId && !isModuleMode) { + onError(createCompilerError(50)); + } + const resolvedOptions = extend({}, options, { + prefixIdentifiers + }); + const ast = isString$1(source) ? baseParse(source, resolvedOptions) : source; + const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(prefixIdentifiers); + if (options.isTS) { + const { expressionPlugins } = options; + if (!expressionPlugins || !expressionPlugins.includes("typescript")) { + options.expressionPlugins = [...expressionPlugins || [], "typescript"]; + } + } + transform( + ast, + extend({}, resolvedOptions, { + nodeTransforms: [ + ...nodeTransforms, + ...options.nodeTransforms || [] + // user transforms + ], + directiveTransforms: extend( + {}, + directiveTransforms, + options.directiveTransforms || {} + // user transforms + ) + }) + ); + return generate(ast, resolvedOptions); +} + +const BindingTypes = { + "DATA": "data", + "PROPS": "props", + "PROPS_ALIASED": "props-aliased", + "SETUP_LET": "setup-let", + "SETUP_CONST": "setup-const", + "SETUP_REACTIVE_CONST": "setup-reactive-const", + "SETUP_MAYBE_REF": "setup-maybe-ref", + "SETUP_REF": "setup-ref", + "OPTIONS": "options", + "LITERAL_CONST": "literal-const" +}; + +const noopDirectiveTransform = () => ({ props: [] }); + +const V_MODEL_RADIO = Symbol(`vModelRadio` ); +const V_MODEL_CHECKBOX = Symbol( + `vModelCheckbox` +); +const V_MODEL_TEXT = Symbol(`vModelText` ); +const V_MODEL_SELECT = Symbol( + `vModelSelect` +); +const V_MODEL_DYNAMIC = Symbol( + `vModelDynamic` +); +const V_ON_WITH_MODIFIERS = Symbol( + `vOnModifiersGuard` +); +const V_ON_WITH_KEYS = Symbol( + `vOnKeysGuard` +); +const V_SHOW = Symbol(`vShow` ); +const TRANSITION = Symbol(`Transition` ); +const TRANSITION_GROUP = Symbol( + `TransitionGroup` +); +registerRuntimeHelpers({ + [V_MODEL_RADIO]: `vModelRadio`, + [V_MODEL_CHECKBOX]: `vModelCheckbox`, + [V_MODEL_TEXT]: `vModelText`, + [V_MODEL_SELECT]: `vModelSelect`, + [V_MODEL_DYNAMIC]: `vModelDynamic`, + [V_ON_WITH_MODIFIERS]: `withModifiers`, + [V_ON_WITH_KEYS]: `withKeys`, + [V_SHOW]: `vShow`, + [TRANSITION]: `Transition`, + [TRANSITION_GROUP]: `TransitionGroup` +}); + +const parserOptions = { + parseMode: "html", + isVoidTag, + isNativeTag: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag), + isPreTag: (tag) => tag === "pre", + isIgnoreNewlineTag: (tag) => tag === "pre" || tag === "textarea", + decodeEntities: void 0, + isBuiltInComponent: (tag) => { + if (tag === "Transition" || tag === "transition") { + return TRANSITION; + } else if (tag === "TransitionGroup" || tag === "transition-group") { + return TRANSITION_GROUP; + } + }, + // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher + getNamespace(tag, parent, rootNamespace) { + let ns = parent ? parent.ns : rootNamespace; + if (parent && ns === 2) { + if (parent.tag === "annotation-xml") { + if (tag === "svg") { + return 1; + } + if (parent.props.some( + (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml") + )) { + ns = 0; + } + } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") { + ns = 0; + } + } else if (parent && ns === 1) { + if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") { + ns = 0; + } + } + if (ns === 0) { + if (tag === "svg") { + return 1; + } + if (tag === "math") { + return 2; + } + } + return ns; + } +}; + +const transformStyle = (node) => { + if (node.type === 1) { + node.props.forEach((p, i) => { + if (p.type === 6 && p.name === "style" && p.value) { + node.props[i] = { + type: 7, + name: `bind`, + arg: createSimpleExpression(`style`, true, p.loc), + exp: parseInlineCSS(p.value.content, p.loc), + modifiers: [], + loc: p.loc + }; + } + }); + } +}; +const parseInlineCSS = (cssText, loc) => { + const normalized = parseStringStyle(cssText); + return createSimpleExpression( + JSON.stringify(normalized), + false, + loc, + 3 + ); +}; + +function createDOMCompilerError(code, loc) { + return createCompilerError( + code, + loc, + DOMErrorMessages + ); +} +const DOMErrorCodes = { + "X_V_HTML_NO_EXPRESSION": 53, + "53": "X_V_HTML_NO_EXPRESSION", + "X_V_HTML_WITH_CHILDREN": 54, + "54": "X_V_HTML_WITH_CHILDREN", + "X_V_TEXT_NO_EXPRESSION": 55, + "55": "X_V_TEXT_NO_EXPRESSION", + "X_V_TEXT_WITH_CHILDREN": 56, + "56": "X_V_TEXT_WITH_CHILDREN", + "X_V_MODEL_ON_INVALID_ELEMENT": 57, + "57": "X_V_MODEL_ON_INVALID_ELEMENT", + "X_V_MODEL_ARG_ON_ELEMENT": 58, + "58": "X_V_MODEL_ARG_ON_ELEMENT", + "X_V_MODEL_ON_FILE_INPUT_ELEMENT": 59, + "59": "X_V_MODEL_ON_FILE_INPUT_ELEMENT", + "X_V_MODEL_UNNECESSARY_VALUE": 60, + "60": "X_V_MODEL_UNNECESSARY_VALUE", + "X_V_SHOW_NO_EXPRESSION": 61, + "61": "X_V_SHOW_NO_EXPRESSION", + "X_TRANSITION_INVALID_CHILDREN": 62, + "62": "X_TRANSITION_INVALID_CHILDREN", + "X_IGNORED_SIDE_EFFECT_TAG": 63, + "63": "X_IGNORED_SIDE_EFFECT_TAG", + "__EXTEND_POINT__": 64, + "64": "__EXTEND_POINT__" +}; +const DOMErrorMessages = { + [53]: `v-html is missing expression.`, + [54]: `v-html will override element children.`, + [55]: `v-text is missing expression.`, + [56]: `v-text will override element children.`, + [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`, + [58]: `v-model argument is not supported on plain elements.`, + [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`, + [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`, + [61]: `v-show is missing expression.`, + [62]: `<Transition> expects exactly one child element or component.`, + [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.` +}; + +const transformVHtml = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(53, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(54, loc) + ); + node.children.length = 0; + } + return { + props: [ + createObjectProperty( + createSimpleExpression(`innerHTML`, true, loc), + exp || createSimpleExpression("", true) + ) + ] + }; +}; + +const transformVText = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(55, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(56, loc) + ); + node.children.length = 0; + } + return { + props: [ + createObjectProperty( + createSimpleExpression(`textContent`, true), + exp ? getConstantType(exp, context) > 0 ? exp : createCallExpression( + context.helperString(TO_DISPLAY_STRING), + [exp], + loc + ) : createSimpleExpression("", true) + ) + ] + }; +}; + +const transformModel = (dir, node, context) => { + const baseResult = transformModel$1(dir, node, context); + if (!baseResult.props.length || node.tagType === 1) { + return baseResult; + } + if (dir.arg) { + context.onError( + createDOMCompilerError( + 58, + dir.arg.loc + ) + ); + } + function checkDuplicatedValue() { + const value = findDir(node, "bind"); + if (value && isStaticArgOf(value.arg, "value")) { + context.onError( + createDOMCompilerError( + 60, + value.loc + ) + ); + } + } + const { tag } = node; + const isCustomElement = context.isCustomElement(tag); + if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) { + let directiveToUse = V_MODEL_TEXT; + let isInvalidType = false; + if (tag === "input" || isCustomElement) { + const type = findProp(node, `type`); + if (type) { + if (type.type === 7) { + directiveToUse = V_MODEL_DYNAMIC; + } else if (type.value) { + switch (type.value.content) { + case "radio": + directiveToUse = V_MODEL_RADIO; + break; + case "checkbox": + directiveToUse = V_MODEL_CHECKBOX; + break; + case "file": + isInvalidType = true; + context.onError( + createDOMCompilerError( + 59, + dir.loc + ) + ); + break; + default: + checkDuplicatedValue(); + break; + } + } + } else if (hasDynamicKeyVBind(node)) { + directiveToUse = V_MODEL_DYNAMIC; + } else { + checkDuplicatedValue(); + } + } else if (tag === "select") { + directiveToUse = V_MODEL_SELECT; + } else { + checkDuplicatedValue(); + } + if (!isInvalidType) { + baseResult.needRuntime = context.helper(directiveToUse); + } + } else { + context.onError( + createDOMCompilerError( + 57, + dir.loc + ) + ); + } + baseResult.props = baseResult.props.filter( + (p) => !(p.key.type === 4 && p.key.content === "modelValue") + ); + return baseResult; +}; + +const isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`); +const isNonKeyModifier = /* @__PURE__ */ makeMap( + // event propagation management + `stop,prevent,self,ctrl,shift,alt,meta,exact,middle` +); +const maybeKeyModifier = /* @__PURE__ */ makeMap("left,right"); +const isKeyboardEvent = /* @__PURE__ */ makeMap(`onkeyup,onkeydown,onkeypress`); +const resolveModifiers = (key, modifiers, context, loc) => { + const keyModifiers = []; + const nonKeyModifiers = []; + const eventOptionModifiers = []; + for (let i = 0; i < modifiers.length; i++) { + const modifier = modifiers[i].content; + if (isEventOptionModifier(modifier)) { + eventOptionModifiers.push(modifier); + } else { + if (maybeKeyModifier(modifier)) { + if (isStaticExp(key)) { + if (isKeyboardEvent(key.content.toLowerCase())) { + keyModifiers.push(modifier); + } else { + nonKeyModifiers.push(modifier); + } + } else { + keyModifiers.push(modifier); + nonKeyModifiers.push(modifier); + } + } else { + if (isNonKeyModifier(modifier)) { + nonKeyModifiers.push(modifier); + } else { + keyModifiers.push(modifier); + } + } + } + } + return { + keyModifiers, + nonKeyModifiers, + eventOptionModifiers + }; +}; +const transformClick = (key, event) => { + const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === "onclick"; + return isStaticClick ? createSimpleExpression(event, true) : key.type !== 4 ? createCompoundExpression([ + `(`, + key, + `) === "onClick" ? "${event}" : (`, + key, + `)` + ]) : key; +}; +const transformOn = (dir, node, context) => { + return transformOn$1(dir, node, context, (baseResult) => { + const { modifiers } = dir; + if (!modifiers.length) return baseResult; + let { key, value: handlerExp } = baseResult.props[0]; + const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); + if (nonKeyModifiers.includes("right")) { + key = transformClick(key, `onContextmenu`); + } + if (nonKeyModifiers.includes("middle")) { + key = transformClick(key, `onMouseup`); + } + if (nonKeyModifiers.length) { + handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ + handlerExp, + JSON.stringify(nonKeyModifiers) + ]); + } + if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard + (!isStaticExp(key) || isKeyboardEvent(key.content.toLowerCase()))) { + handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [ + handlerExp, + JSON.stringify(keyModifiers) + ]); + } + if (eventOptionModifiers.length) { + const modifierPostfix = eventOptionModifiers.map(capitalize).join(""); + key = isStaticExp(key) ? createSimpleExpression(`${key.content}${modifierPostfix}`, true) : createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); + } + return { + props: [createObjectProperty(key, handlerExp)] + }; + }); +}; + +const transformShow = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(61, loc) + ); + } + return { + props: [], + needRuntime: context.helper(V_SHOW) + }; +}; + +const transformTransition = (node, context) => { + if (node.type === 1 && node.tagType === 1) { + const component = context.isBuiltInComponent(node.tag); + if (component === TRANSITION) { + return () => { + if (!node.children.length) { + return; + } + if (hasMultipleChildren(node)) { + context.onError( + createDOMCompilerError( + 62, + { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: "" + } + ) + ); + } + const child = node.children[0]; + if (child.type === 1) { + for (const p of child.props) { + if (p.type === 7 && p.name === "show") { + node.props.push({ + type: 6, + name: "persisted", + nameLoc: node.loc, + value: void 0, + loc: node.loc + }); + } + } + } + }; + } + } +}; +function hasMultipleChildren(node) { + const children = node.children = node.children.filter( + (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim()) + ); + const child = children[0]; + return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren); +} + +const expReplaceRE = /__VUE_EXP_START__(.*?)__VUE_EXP_END__/g; +const stringifyStatic = (children, context, parent) => { + if (context.scopes.vSlot > 0) { + return; + } + const isParentCached = parent.type === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !isArray$3(parent.codegenNode.children) && parent.codegenNode.children.type === 20; + let nc = 0; + let ec = 0; + const currentChunk = []; + const stringifyCurrentChunk = (currentIndex) => { + if (nc >= 20 || ec >= 5) { + const staticCall = createCallExpression(context.helper(CREATE_STATIC), [ + JSON.stringify( + currentChunk.map((node) => stringifyNode(node, context)).join("") + ).replace(expReplaceRE, `" + $1 + "`), + // the 2nd argument indicates the number of DOM nodes this static vnode + // will insert / hydrate + String(currentChunk.length) + ]); + const deleteCount = currentChunk.length - 1; + if (isParentCached) { + children.splice( + currentIndex - currentChunk.length, + currentChunk.length, + // @ts-expect-error + staticCall + ); + } else { + currentChunk[0].codegenNode.value = staticCall; + if (currentChunk.length > 1) { + children.splice(currentIndex - currentChunk.length + 1, deleteCount); + const cacheIndex = context.cached.indexOf( + currentChunk[currentChunk.length - 1].codegenNode + ); + if (cacheIndex > -1) { + for (let i2 = cacheIndex; i2 < context.cached.length; i2++) { + const c = context.cached[i2]; + if (c) c.index -= deleteCount; + } + context.cached.splice(cacheIndex - deleteCount + 1, deleteCount); + } + } + } + return deleteCount; + } + return 0; + }; + let i = 0; + for (; i < children.length; i++) { + const child = children[i]; + const isCached = isParentCached || getCachedNode(child); + if (isCached) { + const result = analyzeNode(child); + if (result) { + nc += result[0]; + ec += result[1]; + currentChunk.push(child); + continue; + } + } + i -= stringifyCurrentChunk(i); + nc = 0; + ec = 0; + currentChunk.length = 0; + } + stringifyCurrentChunk(i); +}; +const getCachedNode = (node) => { + if ((node.type === 1 && node.tagType === 0 || node.type === 12) && node.codegenNode && node.codegenNode.type === 20) { + return node.codegenNode; + } +}; +const dataAriaRE = /^(data|aria)-/; +const isStringifiableAttr = (name, ns) => { + return (ns === 0 ? isKnownHtmlAttr(name) : ns === 1 ? isKnownSvgAttr(name) : ns === 2 ? isKnownMathMLAttr(name) : false) || dataAriaRE.test(name); +}; +const isNonStringifiable = /* @__PURE__ */ makeMap( + `caption,thead,tr,th,tbody,td,tfoot,colgroup,col` +); +function analyzeNode(node) { + if (node.type === 1 && isNonStringifiable(node.tag)) { + return false; + } + if (node.type === 12) { + return [1, 0]; + } + let nc = 1; + let ec = node.props.length > 0 ? 1 : 0; + let bailed = false; + const bail = () => { + bailed = true; + return false; + }; + function walk(node2) { + const isOptionTag = node2.tag === "option" && node2.ns === 0; + for (let i = 0; i < node2.props.length; i++) { + const p = node2.props[i]; + if (p.type === 6 && !isStringifiableAttr(p.name, node2.ns)) { + return bail(); + } + if (p.type === 7 && p.name === "bind") { + if (p.arg && (p.arg.type === 8 || p.arg.isStatic && !isStringifiableAttr(p.arg.content, node2.ns))) { + return bail(); + } + if (p.exp && (p.exp.type === 8 || p.exp.constType < 3)) { + return bail(); + } + if (isOptionTag && isStaticArgOf(p.arg, "value") && p.exp && !p.exp.isStatic) { + return bail(); + } + } + } + for (let i = 0; i < node2.children.length; i++) { + nc++; + const child = node2.children[i]; + if (child.type === 1) { + if (child.props.length > 0) { + ec++; + } + walk(child); + if (bailed) { + return false; + } + } + } + return true; + } + return walk(node) ? [nc, ec] : false; +} +function stringifyNode(node, context) { + if (isString$1(node)) { + return node; + } + if (isSymbol$1(node)) { + return ``; + } + switch (node.type) { + case 1: + return stringifyElement(node, context); + case 2: + return escapeHtml(node.content); + case 3: + return `<!--${escapeHtml(node.content)}-->`; + case 5: + return escapeHtml(toDisplayString(evaluateConstant(node.content))); + case 8: + return escapeHtml(evaluateConstant(node)); + case 12: + return stringifyNode(node.content, context); + default: + return ""; + } +} +function stringifyElement(node, context) { + let res = `<${node.tag}`; + let innerHTML = ""; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + res += ` ${p.name}`; + if (p.value) { + res += `="${escapeHtml(p.value.content)}"`; + } + } else if (p.type === 7) { + if (p.name === "bind") { + const exp = p.exp; + if (exp.content[0] === "_") { + res += ` ${p.arg.content}="__VUE_EXP_START__${exp.content}__VUE_EXP_END__"`; + continue; + } + if (isBooleanAttr(p.arg.content) && exp.content === "false") { + continue; + } + let evaluated = evaluateConstant(exp); + if (evaluated != null) { + const arg = p.arg && p.arg.content; + if (arg === "class") { + evaluated = normalizeClass(evaluated); + } else if (arg === "style") { + evaluated = stringifyStyle(normalizeStyle(evaluated)); + } + res += ` ${p.arg.content}="${escapeHtml( + evaluated + )}"`; + } + } else if (p.name === "html") { + innerHTML = evaluateConstant(p.exp); + } else if (p.name === "text") { + innerHTML = escapeHtml( + toDisplayString(evaluateConstant(p.exp)) + ); + } + } + } + if (context.scopeId) { + res += ` ${context.scopeId}`; + } + res += `>`; + if (innerHTML) { + res += innerHTML; + } else { + for (let i = 0; i < node.children.length; i++) { + res += stringifyNode(node.children[i], context); + } + } + if (!isVoidTag(node.tag)) { + res += `</${node.tag}>`; + } + return res; +} +function evaluateConstant(exp) { + if (exp.type === 4) { + return new Function(`return (${exp.content})`)(); + } else { + let res = ``; + exp.children.forEach((c) => { + if (isString$1(c) || isSymbol$1(c)) { + return; + } + if (c.type === 2) { + res += c.content; + } else if (c.type === 5) { + res += toDisplayString(evaluateConstant(c.content)); + } else { + res += evaluateConstant(c); + } + }); + return res; + } +} + +const ignoreSideEffectTags = (node, context) => { + if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) { + context.onError( + createDOMCompilerError( + 63, + node.loc + ) + ); + context.removeNode(); + } +}; + +function isValidHTMLNesting(parent, child) { + if (parent === "template") { + return true; + } + if (parent in onlyValidChildren) { + return onlyValidChildren[parent].has(child); + } + if (child in onlyValidParents) { + return onlyValidParents[child].has(parent); + } + if (parent in knownInvalidChildren) { + if (knownInvalidChildren[parent].has(child)) return false; + } + if (child in knownInvalidParents) { + if (knownInvalidParents[child].has(parent)) return false; + } + return true; +} +const headings = /* @__PURE__ */ new Set(["h1", "h2", "h3", "h4", "h5", "h6"]); +const emptySet = /* @__PURE__ */ new Set([]); +const onlyValidChildren = { + head: /* @__PURE__ */ new Set([ + "base", + "basefront", + "bgsound", + "link", + "meta", + "title", + "noscript", + "noframes", + "style", + "script", + "template" + ]), + optgroup: /* @__PURE__ */ new Set(["option"]), + select: /* @__PURE__ */ new Set(["optgroup", "option", "hr"]), + // table + table: /* @__PURE__ */ new Set(["caption", "colgroup", "tbody", "tfoot", "thead"]), + tr: /* @__PURE__ */ new Set(["td", "th"]), + colgroup: /* @__PURE__ */ new Set(["col"]), + tbody: /* @__PURE__ */ new Set(["tr"]), + thead: /* @__PURE__ */ new Set(["tr"]), + tfoot: /* @__PURE__ */ new Set(["tr"]), + // these elements can not have any children elements + script: emptySet, + iframe: emptySet, + option: emptySet, + textarea: emptySet, + style: emptySet, + title: emptySet +}; +const onlyValidParents = { + // sections + html: emptySet, + body: /* @__PURE__ */ new Set(["html"]), + head: /* @__PURE__ */ new Set(["html"]), + // table + td: /* @__PURE__ */ new Set(["tr"]), + colgroup: /* @__PURE__ */ new Set(["table"]), + caption: /* @__PURE__ */ new Set(["table"]), + tbody: /* @__PURE__ */ new Set(["table"]), + tfoot: /* @__PURE__ */ new Set(["table"]), + col: /* @__PURE__ */ new Set(["colgroup"]), + th: /* @__PURE__ */ new Set(["tr"]), + thead: /* @__PURE__ */ new Set(["table"]), + tr: /* @__PURE__ */ new Set(["tbody", "thead", "tfoot"]), + // data list + dd: /* @__PURE__ */ new Set(["dl", "div"]), + dt: /* @__PURE__ */ new Set(["dl", "div"]), + // other + figcaption: /* @__PURE__ */ new Set(["figure"]), + // li: new Set(["ul", "ol"]), + summary: /* @__PURE__ */ new Set(["details"]), + area: /* @__PURE__ */ new Set(["map"]) +}; +const knownInvalidChildren = { + p: /* @__PURE__ */ new Set([ + "address", + "article", + "aside", + "blockquote", + "center", + "details", + "dialog", + "dir", + "div", + "dl", + "fieldset", + "figure", + "footer", + "form", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "header", + "hgroup", + "hr", + "li", + "main", + "nav", + "menu", + "ol", + "p", + "pre", + "section", + "table", + "ul" + ]), + svg: /* @__PURE__ */ new Set([ + "b", + "blockquote", + "br", + "code", + "dd", + "div", + "dl", + "dt", + "em", + "embed", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "hr", + "i", + "img", + "li", + "menu", + "meta", + "ol", + "p", + "pre", + "ruby", + "s", + "small", + "span", + "strong", + "sub", + "sup", + "table", + "u", + "ul", + "var" + ]) +}; +const knownInvalidParents = { + a: /* @__PURE__ */ new Set(["a"]), + button: /* @__PURE__ */ new Set(["button"]), + dd: /* @__PURE__ */ new Set(["dd", "dt"]), + dt: /* @__PURE__ */ new Set(["dd", "dt"]), + form: /* @__PURE__ */ new Set(["form"]), + li: /* @__PURE__ */ new Set(["li"]), + h1: headings, + h2: headings, + h3: headings, + h4: headings, + h5: headings, + h6: headings +}; + +const validateHtmlNesting = (node, context) => { + if (node.type === 1 && node.tagType === 0 && context.parent && context.parent.type === 1 && context.parent.tagType === 0 && !isValidHTMLNesting(context.parent.tag, node.tag)) { + const error = new SyntaxError( + `<${node.tag}> cannot be child of <${context.parent.tag}>, according to HTML specifications. This can cause hydration errors or potentially disrupt future functionality.` + ); + error.loc = node.loc; + context.onWarn(error); + } +}; + +const DOMNodeTransforms = [ + transformStyle, + ...[transformTransition, validateHtmlNesting] +]; +const DOMDirectiveTransforms = { + cloak: noopDirectiveTransform, + html: transformVHtml, + text: transformVText, + model: transformModel, + // override compiler-core + on: transformOn, + // override compiler-core + show: transformShow +}; +function compile$1(src, options = {}) { + return baseCompile( + src, + extend({}, parserOptions, options, { + nodeTransforms: [ + // ignore <script> and <tag> + // this is not put inside DOMNodeTransforms because that list is used + // by compiler-ssr to generate vnode fallback branches + ignoreSideEffectTags, + ...DOMNodeTransforms, + ...options.nodeTransforms || [] + ], + directiveTransforms: extend( + {}, + DOMDirectiveTransforms, + options.directiveTransforms || {} + ), + transformHoist: stringifyStatic + }) + ); +} +function parse$3(template, options = {}) { + return baseParse(template, extend({}, parserOptions, options)); +} + +var CompilerDOM = /*#__PURE__*/Object.freeze({ + __proto__: null, + BASE_TRANSITION: BASE_TRANSITION, + BindingTypes: BindingTypes, + CAMELIZE: CAMELIZE, + CAPITALIZE: CAPITALIZE, + CREATE_BLOCK: CREATE_BLOCK, + CREATE_COMMENT: CREATE_COMMENT, + CREATE_ELEMENT_BLOCK: CREATE_ELEMENT_BLOCK, + CREATE_ELEMENT_VNODE: CREATE_ELEMENT_VNODE, + CREATE_SLOTS: CREATE_SLOTS, + CREATE_STATIC: CREATE_STATIC, + CREATE_TEXT: CREATE_TEXT, + CREATE_VNODE: CREATE_VNODE, + CompilerDeprecationTypes: CompilerDeprecationTypes, + ConstantTypes: ConstantTypes, + DOMDirectiveTransforms: DOMDirectiveTransforms, + DOMErrorCodes: DOMErrorCodes, + DOMErrorMessages: DOMErrorMessages, + DOMNodeTransforms: DOMNodeTransforms, + ElementTypes: ElementTypes, + ErrorCodes: ErrorCodes, + FRAGMENT: FRAGMENT, + GUARD_REACTIVE_PROPS: GUARD_REACTIVE_PROPS, + IS_MEMO_SAME: IS_MEMO_SAME, + IS_REF: IS_REF, + KEEP_ALIVE: KEEP_ALIVE, + MERGE_PROPS: MERGE_PROPS, + NORMALIZE_CLASS: NORMALIZE_CLASS, + NORMALIZE_PROPS: NORMALIZE_PROPS, + NORMALIZE_STYLE: NORMALIZE_STYLE, + Namespaces: Namespaces, + NodeTypes: NodeTypes, + OPEN_BLOCK: OPEN_BLOCK, + POP_SCOPE_ID: POP_SCOPE_ID, + PUSH_SCOPE_ID: PUSH_SCOPE_ID, + RENDER_LIST: RENDER_LIST, + RENDER_SLOT: RENDER_SLOT, + RESOLVE_COMPONENT: RESOLVE_COMPONENT, + RESOLVE_DIRECTIVE: RESOLVE_DIRECTIVE, + RESOLVE_DYNAMIC_COMPONENT: RESOLVE_DYNAMIC_COMPONENT, + RESOLVE_FILTER: RESOLVE_FILTER, + SET_BLOCK_TRACKING: SET_BLOCK_TRACKING, + SUSPENSE: SUSPENSE, + TELEPORT: TELEPORT, + TO_DISPLAY_STRING: TO_DISPLAY_STRING, + TO_HANDLERS: TO_HANDLERS, + TO_HANDLER_KEY: TO_HANDLER_KEY, + TRANSITION: TRANSITION, + TRANSITION_GROUP: TRANSITION_GROUP, + TS_NODE_TYPES: TS_NODE_TYPES, + UNREF: UNREF, + V_MODEL_CHECKBOX: V_MODEL_CHECKBOX, + V_MODEL_DYNAMIC: V_MODEL_DYNAMIC, + V_MODEL_RADIO: V_MODEL_RADIO, + V_MODEL_SELECT: V_MODEL_SELECT, + V_MODEL_TEXT: V_MODEL_TEXT, + V_ON_WITH_KEYS: V_ON_WITH_KEYS, + V_ON_WITH_MODIFIERS: V_ON_WITH_MODIFIERS, + V_SHOW: V_SHOW, + WITH_CTX: WITH_CTX, + WITH_DIRECTIVES: WITH_DIRECTIVES, + WITH_MEMO: WITH_MEMO, + advancePositionWithClone: advancePositionWithClone, + advancePositionWithMutation: advancePositionWithMutation, + assert: assert, + baseCompile: baseCompile, + baseParse: baseParse, + buildDirectiveArgs: buildDirectiveArgs, + buildProps: buildProps, + buildSlots: buildSlots, + checkCompatEnabled: checkCompatEnabled, + compile: compile$1, + convertToBlock: convertToBlock, + createArrayExpression: createArrayExpression, + createAssignmentExpression: createAssignmentExpression, + createBlockStatement: createBlockStatement, + createCacheExpression: createCacheExpression, + createCallExpression: createCallExpression, + createCompilerError: createCompilerError, + createCompoundExpression: createCompoundExpression, + createConditionalExpression: createConditionalExpression, + createDOMCompilerError: createDOMCompilerError, + createForLoopParams: createForLoopParams, + createFunctionExpression: createFunctionExpression, + createIfStatement: createIfStatement, + createInterpolation: createInterpolation, + createObjectExpression: createObjectExpression, + createObjectProperty: createObjectProperty, + createReturnStatement: createReturnStatement, + createRoot: createRoot, + createSequenceExpression: createSequenceExpression, + createSimpleExpression: createSimpleExpression, + createStructuralDirectiveTransform: createStructuralDirectiveTransform, + createTemplateLiteral: createTemplateLiteral, + createTransformContext: createTransformContext, + createVNodeCall: createVNodeCall, + errorMessages: errorMessages$1, + extractIdentifiers: extractIdentifiers$1, + findDir: findDir, + findProp: findProp, + forAliasRE: forAliasRE, + generate: generate, + generateCodeFrame: generateCodeFrame, + getBaseTransformPreset: getBaseTransformPreset, + getConstantType: getConstantType, + getMemoedVNodeCall: getMemoedVNodeCall, + getVNodeBlockHelper: getVNodeBlockHelper, + getVNodeHelper: getVNodeHelper, + hasDynamicKeyVBind: hasDynamicKeyVBind, + hasScopeRef: hasScopeRef, + helperNameMap: helperNameMap, + injectProp: injectProp, + isCoreComponent: isCoreComponent, + isFnExpression: isFnExpression, + isFnExpressionBrowser: isFnExpressionBrowser, + isFnExpressionNode: isFnExpressionNode, + isFunctionType: isFunctionType, + isInDestructureAssignment: isInDestructureAssignment, + isInNewExpression: isInNewExpression, + isMemberExpression: isMemberExpression, + isMemberExpressionBrowser: isMemberExpressionBrowser, + isMemberExpressionNode: isMemberExpressionNode, + isReferencedIdentifier: isReferencedIdentifier, + isSimpleIdentifier: isSimpleIdentifier, + isSlotOutlet: isSlotOutlet, + isStaticArgOf: isStaticArgOf, + isStaticExp: isStaticExp, + isStaticProperty: isStaticProperty, + isStaticPropertyKey: isStaticPropertyKey, + isTemplateNode: isTemplateNode, + isText: isText$1, + isVPre: isVPre, + isVSlot: isVSlot, + locStub: locStub, + noopDirectiveTransform: noopDirectiveTransform, + parse: parse$3, + parserOptions: parserOptions, + processExpression: processExpression, + processFor: processFor, + processIf: processIf, + processSlotOutlet: processSlotOutlet, + registerRuntimeHelpers: registerRuntimeHelpers, + resolveComponentType: resolveComponentType, + stringifyExpression: stringifyExpression, + toValidAssetId: toValidAssetId, + trackSlotScopes: trackSlotScopes, + trackVForSlotScopes: trackVForSlotScopes, + transform: transform, + transformBind: transformBind, + transformElement: transformElement, + transformExpression: transformExpression, + transformModel: transformModel$1, + transformOn: transformOn$1, + transformStyle: transformStyle, + traverseNode: traverseNode, + unwrapTSNode: unwrapTSNode, + walkBlockDeclarations: walkBlockDeclarations, + walkFunctionParams: walkFunctionParams, + walkIdentifiers: walkIdentifiers, + warnDeprecation: warnDeprecation +}); + +var hashSum; +var hasRequiredHashSum; + +function requireHashSum () { + if (hasRequiredHashSum) return hashSum; + hasRequiredHashSum = 1; + + function pad (hash, len) { + while (hash.length < len) { + hash = '0' + hash; + } + return hash; + } + + function fold (hash, text) { + var i; + var chr; + var len; + if (text.length === 0) { + return hash; + } + for (i = 0, len = text.length; i < len; i++) { + chr = text.charCodeAt(i); + hash = ((hash << 5) - hash) + chr; + hash |= 0; + } + return hash < 0 ? hash * -2 : hash; + } + + function foldObject (hash, o, seen) { + return Object.keys(o).sort().reduce(foldKey, hash); + function foldKey (hash, key) { + return foldValue(hash, o[key], key, seen); + } + } + + function foldValue (input, value, key, seen) { + var hash = fold(fold(fold(input, key), toString(value)), typeof value); + if (value === null) { + return fold(hash, 'null'); + } + if (value === undefined) { + return fold(hash, 'undefined'); + } + if (typeof value === 'object' || typeof value === 'function') { + if (seen.indexOf(value) !== -1) { + return fold(hash, '[Circular]' + key); + } + seen.push(value); + + var objHash = foldObject(hash, value, seen); + + if (!('valueOf' in value) || typeof value.valueOf !== 'function') { + return objHash; + } + + try { + return fold(objHash, String(value.valueOf())) + } catch (err) { + return fold(objHash, '[valueOf exception]' + (err.stack || err.message)) + } + } + return fold(hash, value.toString()); + } + + function toString (o) { + return Object.prototype.toString.call(o); + } + + function sum (o) { + return pad(foldValue(0, o, '', []).toString(16), 8); + } + + hashSum = sum; + return hashSum; +} + +var hashSumExports = /*@__PURE__*/ requireHashSum(); +var hash = /*@__PURE__*/getDefaultExportFromCjs(hashSumExports); + +const CSS_VARS_HELPER = `useCssVars`; +function genCssVarsFromList(vars, id, isProd, isSSR = false) { + return `{ + ${vars.map( + (key) => ( + // The `:` prefix here is used in `ssrRenderStyle` to distinguish whether + // a custom property comes from `ssrCssVars`. If it does, we need to reset + // its value to `initial` on the component instance to avoid unintentionally + // inheriting the same property value from a different instance of the same + // component in the outer scope. + `"${isSSR ? `:--` : ``}${genVarName(id, key, isProd, isSSR)}": (${key})` + ) + ).join(",\n ")} +}`; +} +function genVarName(id, raw, isProd, isSSR = false) { + if (isProd) { + return hash(id + raw); + } else { + return `${id}-${getEscapedCssVarName(raw, isSSR)}`; + } +} +function normalizeExpression(exp) { + exp = exp.trim(); + if (exp[0] === `'` && exp[exp.length - 1] === `'` || exp[0] === `"` && exp[exp.length - 1] === `"`) { + return exp.slice(1, -1); + } + return exp; +} +const vBindRE = /v-bind\s*\(/g; +function parseCssVars(sfc) { + const vars = []; + sfc.styles.forEach((style) => { + let match; + const content = style.content.replace(/\/\*([\s\S]*?)\*\/|\/\/.*/g, ""); + while (match = vBindRE.exec(content)) { + const start = match.index + match[0].length; + const end = lexBinding(content, start); + if (end !== null) { + const variable = normalizeExpression(content.slice(start, end)); + if (!vars.includes(variable)) { + vars.push(variable); + } + } + } + }); + return vars; +} +function lexBinding(content, start) { + let state = 0 /* inParens */; + let parenDepth = 0; + for (let i = start; i < content.length; i++) { + const char = content.charAt(i); + switch (state) { + case 0 /* inParens */: + if (char === `'`) { + state = 1 /* inSingleQuoteString */; + } else if (char === `"`) { + state = 2 /* inDoubleQuoteString */; + } else if (char === `(`) { + parenDepth++; + } else if (char === `)`) { + if (parenDepth > 0) { + parenDepth--; + } else { + return i; + } + } + break; + case 1 /* inSingleQuoteString */: + if (char === `'`) { + state = 0 /* inParens */; + } + break; + case 2 /* inDoubleQuoteString */: + if (char === `"`) { + state = 0 /* inParens */; + } + break; + } + } + return null; +} +const cssVarsPlugin = (opts) => { + const { id, isProd } = opts; + return { + postcssPlugin: "vue-sfc-vars", + Declaration(decl) { + const value = decl.value; + if (vBindRE.test(value)) { + vBindRE.lastIndex = 0; + let transformed = ""; + let lastIndex = 0; + let match; + while (match = vBindRE.exec(value)) { + const start = match.index + match[0].length; + const end = lexBinding(value, start); + if (end !== null) { + const variable = normalizeExpression(value.slice(start, end)); + transformed += value.slice(lastIndex, match.index) + `var(--${genVarName(id, variable, isProd)})`; + lastIndex = end + 1; + } + } + decl.value = transformed + value.slice(lastIndex); + } + } + }; +}; +cssVarsPlugin.postcss = true; +function genCssVarsCode(vars, bindings, id, isProd) { + const varsExp = genCssVarsFromList(vars, id, isProd); + const exp = createSimpleExpression(varsExp, false); + const context = createTransformContext(createRoot([]), { + prefixIdentifiers: true, + inline: true, + bindingMetadata: bindings.__isScriptSetup === false ? void 0 : bindings + }); + const transformed = processExpression(exp, context); + const transformedString = transformed.type === 4 ? transformed.content : transformed.children.map((c) => { + return typeof c === "string" ? c : c.content; + }).join(""); + return `_${CSS_VARS_HELPER}(_ctx => (${transformedString}))`; +} +function genNormalScriptCssVarsCode(cssVars, bindings, id, isProd, defaultVar) { + return ` +import { ${CSS_VARS_HELPER} as _${CSS_VARS_HELPER} } from 'vue' +const __injectCSSVars__ = () => { +${genCssVarsCode( + cssVars, + bindings, + id, + isProd + )}} +const __setup__ = ${defaultVar}.setup +${defaultVar}.setup = __setup__ + ? (props, ctx) => { __injectCSSVars__();return __setup__(props, ctx) } + : __injectCSSVars__ +`; +} + +var global$1 = (typeof global !== "undefined" ? global : + typeof self !== "undefined" ? self : + typeof window !== "undefined" ? window : {}); + +// shim for using process in browser +// based off https://github.com/defunctzombie/node-process/blob/master/browser.js + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +var cachedSetTimeout = defaultSetTimout; +var cachedClearTimeout = defaultClearTimeout; +if (typeof global$1.setTimeout === 'function') { + cachedSetTimeout = setTimeout; +} +if (typeof global$1.clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; +} + +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // 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 + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // 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. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} +function nextTick(fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +} +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +var title = 'browser'; +var platform = 'browser'; +var browser = true; +var env = {}; +var argv = []; +var version$1 = ''; // empty string to avoid regexp issues +var versions = {}; +var release = {}; +var config = {}; + +function noop() {} + +var on = noop; +var addListener = noop; +var once = noop; +var off = noop; +var removeListener = noop; +var removeAllListeners = noop; +var emit = noop; + +function binding(name) { + throw new Error('process.binding is not supported'); +} + +function cwd () { return '/' } +function chdir (dir) { + throw new Error('process.chdir is not supported'); +}function umask() { return 0; } + +// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js +var performance = global$1.performance || {}; +var performanceNow = + performance.now || + performance.mozNow || + performance.msNow || + performance.oNow || + performance.webkitNow || + function(){ return (new Date()).getTime() }; + +// generate timestamp or delta +// see http://nodejs.org/api/process.html#process_process_hrtime +function hrtime(previousTimestamp){ + var clocktime = performanceNow.call(performance)*1e-3; + var seconds = Math.floor(clocktime); + var nanoseconds = Math.floor((clocktime%1)*1e9); + if (previousTimestamp) { + seconds = seconds - previousTimestamp[0]; + nanoseconds = nanoseconds - previousTimestamp[1]; + if (nanoseconds<0) { + seconds--; + nanoseconds += 1e9; + } + } + return [seconds,nanoseconds] +} + +var startTime = new Date(); +function uptime() { + var currentTime = new Date(); + var dif = currentTime - startTime; + return dif / 1000; +} + +var browser$1 = { + nextTick: nextTick, + title: title, + browser: browser, + env: env, + argv: argv, + version: version$1, + versions: versions, + on: on, + addListener: addListener, + once: once, + off: off, + removeListener: removeListener, + removeAllListeners: removeAllListeners, + emit: emit, + binding: binding, + cwd: cwd, + chdir: chdir, + umask: umask, + hrtime: hrtime, + platform: platform, + release: release, + config: config, + uptime: uptime +}; + +function createCache(max = 500) { + { + return /* @__PURE__ */ new Map(); + } +} + +function isImportUsed(local, sfc) { + return resolveTemplateUsedIdentifiers(sfc).has(local); +} +const templateUsageCheckCache = createCache(); +function resolveTemplateUsedIdentifiers(sfc) { + const { content, ast } = sfc.template; + const cached = templateUsageCheckCache.get(content); + if (cached) { + return cached; + } + const ids = /* @__PURE__ */ new Set(); + ast.children.forEach(walk); + function walk(node) { + var _a; + switch (node.type) { + case 1: + let tag = node.tag; + if (tag.includes(".")) tag = tag.split(".")[0].trim(); + if (!parserOptions.isNativeTag(tag) && !parserOptions.isBuiltInComponent(tag)) { + ids.add(camelize(tag)); + ids.add(capitalize(camelize(tag))); + } + for (let i = 0; i < node.props.length; i++) { + const prop = node.props[i]; + if (prop.type === 7) { + if (!isBuiltInDirective(prop.name)) { + ids.add(`v${capitalize(camelize(prop.name))}`); + } + if (prop.arg && !prop.arg.isStatic) { + extractIdentifiers(ids, prop.arg); + } + if (prop.name === "for") { + extractIdentifiers(ids, prop.forParseResult.source); + } else if (prop.exp) { + extractIdentifiers(ids, prop.exp); + } else if (prop.name === "bind" && !prop.exp) { + ids.add(camelize(prop.arg.content)); + } + } + if (prop.type === 6 && prop.name === "ref" && ((_a = prop.value) == null ? void 0 : _a.content)) { + ids.add(prop.value.content); + } + } + node.children.forEach(walk); + break; + case 5: + extractIdentifiers(ids, node.content); + break; + } + } + templateUsageCheckCache.set(content, ids); + return ids; +} +function extractIdentifiers(ids, node) { + if (node.ast) { + walkIdentifiers(node.ast, (n) => ids.add(n.name)); + } else if (node.ast === null) { + ids.add(node.content); + } +} + +var __defProp$a = Object.defineProperty; +var __defProps$9 = Object.defineProperties; +var __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$a = Object.getOwnPropertySymbols; +var __hasOwnProp$a = Object.prototype.hasOwnProperty; +var __propIsEnum$a = Object.prototype.propertyIsEnumerable; +var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$a = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$a.call(b, prop)) + __defNormalProp$a(a, prop, b[prop]); + if (__getOwnPropSymbols$a) + for (var prop of __getOwnPropSymbols$a(b)) { + if (__propIsEnum$a.call(b, prop)) + __defNormalProp$a(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b)); +const DEFAULT_FILENAME = "anonymous.vue"; +const parseCache$1 = createCache(); +function parse$2(source, options = {}) { + var _a; + const sourceKey = genCacheKey(source, __spreadProps$9(__spreadValues$a({}, options), { + compiler: { parse: (_a = options.compiler) == null ? void 0 : _a.parse } + })); + const cache = parseCache$1.get(sourceKey); + if (cache) { + return cache; + } + const { + sourceMap = true, + filename = DEFAULT_FILENAME, + sourceRoot = "", + pad = false, + ignoreEmpty = true, + compiler = CompilerDOM, + templateParseOptions = {} + } = options; + const descriptor = { + filename, + source, + template: null, + script: null, + scriptSetup: null, + styles: [], + customBlocks: [], + cssVars: [], + slotted: false, + shouldForceReload: (prevImports) => hmrShouldReload(prevImports, descriptor) + }; + const errors = []; + const ast = compiler.parse(source, __spreadProps$9(__spreadValues$a({ + parseMode: "sfc", + prefixIdentifiers: true + }, templateParseOptions), { + onError: (e) => { + errors.push(e); + } + })); + ast.children.forEach((node) => { + if (node.type !== 1) { + return; + } + if (ignoreEmpty && node.tag !== "template" && isEmpty(node) && !hasSrc(node)) { + return; + } + switch (node.tag) { + case "template": + if (!descriptor.template) { + const templateBlock = descriptor.template = createBlock( + node, + source, + false + ); + if (!templateBlock.attrs.src) { + templateBlock.ast = createRoot(node.children, source); + } + if (templateBlock.attrs.functional) { + const err = new SyntaxError( + `<template functional> is no longer supported in Vue 3, since functional components no longer have significant performance difference from stateful ones. Just use a normal <template> instead.` + ); + err.loc = node.props.find( + (p) => p.type === 6 && p.name === "functional" + ).loc; + errors.push(err); + } + } else { + errors.push(createDuplicateBlockError(node)); + } + break; + case "script": + const scriptBlock = createBlock(node, source, pad); + const isSetup = !!scriptBlock.attrs.setup; + if (isSetup && !descriptor.scriptSetup) { + descriptor.scriptSetup = scriptBlock; + break; + } + if (!isSetup && !descriptor.script) { + descriptor.script = scriptBlock; + break; + } + errors.push(createDuplicateBlockError(node, isSetup)); + break; + case "style": + const styleBlock = createBlock(node, source, pad); + if (styleBlock.attrs.vars) { + errors.push( + new SyntaxError( + `<style vars> has been replaced by a new proposal: https://github.com/vuejs/rfcs/pull/231` + ) + ); + } + descriptor.styles.push(styleBlock); + break; + default: + descriptor.customBlocks.push(createBlock(node, source, pad)); + break; + } + }); + if (!descriptor.template && !descriptor.script && !descriptor.scriptSetup) { + errors.push( + new SyntaxError( + `At least one <template> or <script> is required in a single file component. ${descriptor.filename}` + ) + ); + } + if (descriptor.scriptSetup) { + if (descriptor.scriptSetup.src) { + errors.push( + new SyntaxError( + `<script setup> cannot use the "src" attribute because its syntax will be ambiguous outside of the component.` + ) + ); + descriptor.scriptSetup = null; + } + if (descriptor.script && descriptor.script.src) { + errors.push( + new SyntaxError( + `<script> cannot use the "src" attribute when <script setup> is also present because they must be processed together.` + ) + ); + descriptor.script = null; + } + } + let templateColumnOffset = 0; + if (descriptor.template && (descriptor.template.lang === "pug" || descriptor.template.lang === "jade")) { + [descriptor.template.content, templateColumnOffset] = dedent( + descriptor.template.content + ); + } + if (sourceMap) { + const genMap = (block, columnOffset = 0) => { + if (block && !block.src) { + block.map = generateSourceMap( + filename, + source, + block.content, + sourceRoot, + !pad || block.type === "template" ? block.loc.start.line - 1 : 0, + columnOffset + ); + } + }; + genMap(descriptor.template, templateColumnOffset); + genMap(descriptor.script); + descriptor.styles.forEach((s) => genMap(s)); + descriptor.customBlocks.forEach((s) => genMap(s)); + } + descriptor.cssVars = parseCssVars(descriptor); + const slottedRE = /(?:::v-|:)slotted\(/; + descriptor.slotted = descriptor.styles.some( + (s) => s.scoped && slottedRE.test(s.content) + ); + const result = { + descriptor, + errors + }; + parseCache$1.set(sourceKey, result); + return result; +} +function createDuplicateBlockError(node, isScriptSetup = false) { + const err = new SyntaxError( + `Single file component can contain only one <${node.tag}${isScriptSetup ? ` setup` : ``}> element` + ); + err.loc = node.loc; + return err; +} +function createBlock(node, source, pad) { + const type = node.tag; + const loc = node.innerLoc; + const attrs = {}; + const block = { + type, + content: source.slice(loc.start.offset, loc.end.offset), + loc, + attrs + }; + if (pad) { + block.content = padContent(source, block, pad) + block.content; + } + node.props.forEach((p) => { + if (p.type === 6) { + const name = p.name; + attrs[name] = p.value ? p.value.content || true : true; + if (name === "lang") { + block.lang = p.value && p.value.content; + } else if (name === "src") { + block.src = p.value && p.value.content; + } else if (type === "style") { + if (name === "scoped") { + block.scoped = true; + } else if (name === "module") { + block.module = attrs[name]; + } + } else if (type === "script" && name === "setup") { + block.setup = attrs.setup; + } + } + }); + return block; +} +const splitRE = /\r?\n/g; +const emptyRE = /^(?:\/\/)?\s*$/; +const replaceRE = /./g; +function generateSourceMap(filename, source, generated, sourceRoot, lineOffset, columnOffset) { + const map = new sourceMapExports.SourceMapGenerator({ + file: filename.replace(/\\/g, "/"), + sourceRoot: sourceRoot.replace(/\\/g, "/") + }); + map.setSourceContent(filename, source); + map._sources.add(filename); + generated.split(splitRE).forEach((line, index) => { + if (!emptyRE.test(line)) { + const originalLine = index + 1 + lineOffset; + const generatedLine = index + 1; + for (let i = 0; i < line.length; i++) { + if (!/\s/.test(line[i])) { + map._mappings.add({ + originalLine, + originalColumn: i + columnOffset, + generatedLine, + generatedColumn: i, + source: filename, + name: null + }); + } + } + } + }); + return map.toJSON(); +} +function padContent(content, block, pad) { + content = content.slice(0, block.loc.start.offset); + if (pad === "space") { + return content.replace(replaceRE, " "); + } else { + const offset = content.split(splitRE).length; + const padChar = block.type === "script" && !block.lang ? "//\n" : "\n"; + return Array(offset).join(padChar); + } +} +function hasSrc(node) { + return node.props.some((p) => { + if (p.type !== 6) { + return false; + } + return p.name === "src"; + }); +} +function isEmpty(node) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (child.type !== 2 || child.content.trim() !== "") { + return false; + } + } + return true; +} +function hmrShouldReload(prevImports, next) { + if (!next.scriptSetup || next.scriptSetup.lang !== "ts" && next.scriptSetup.lang !== "tsx") { + return false; + } + for (const key in prevImports) { + if (!prevImports[key].isUsedInTemplate && isImportUsed(key, next)) { + return true; + } + } + return false; +} +function dedent(s) { + const lines = s.split("\n"); + const minIndent = lines.reduce(function(minIndent2, line) { + var _a, _b; + if (line.trim() === "") { + return minIndent2; + } + const indent = ((_b = (_a = line.match(/^\s*/)) == null ? void 0 : _a[0]) == null ? void 0 : _b.length) || 0; + return Math.min(indent, minIndent2); + }, Infinity); + if (minIndent === 0) { + return [s, minIndent]; + } + return [ + lines.map(function(line) { + return line.slice(minIndent); + }).join("\n"), + minIndent + ]; +} + +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// resolves . and .. elements in a path array with directory names there +// must be no slashes, empty elements, or device names (c:\) in the array +// (so also no leading and trailing slashes - it does not distinguish +// relative and absolute paths) +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +// Split a filename into [root, dir, basename, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; +var splitPath = function(filename) { + return splitPathRe.exec(filename).slice(1); +}; + +// path.resolve([from ...], to) +// posix version +function resolve() { + var resolvedPath = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : '/'; + + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; +} +// path.normalize(path) +// posix version +function normalize$1(path) { + var isPathAbsolute = isAbsolute(path), + trailingSlash = substr(path, -1) === '/'; + + // Normalize the path + path = normalizeArray(filter(path.split('/'), function(p) { + return !!p; + }), !isPathAbsolute).join('/'); + + if (!path && !isPathAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + + return (isPathAbsolute ? '/' : '') + path; +} +// posix version +function isAbsolute(path) { + return path.charAt(0) === '/'; +} + +// posix version +function join() { + var paths = Array.prototype.slice.call(arguments, 0); + return normalize$1(filter(paths, function(p, index) { + if (typeof p !== 'string') { + throw new TypeError('Arguments to path.join must be strings'); + } + return p; + }).join('/')); +} + + +// path.relative(from, to) +// posix version +function relative(from, to) { + from = resolve(from).substr(1); + to = resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('/'); +} + +var sep = '/'; +var delimiter$1 = ':'; + +function dirname(path) { + var result = splitPath(path), + root = result[0], + dir = result[1]; + + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + + return root + dir; +} + +function basename(path, ext) { + var f = splitPath(path)[2]; + // TODO: make this comparison case-insensitive on windows? + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + return f; +} + + +function extname(path) { + return splitPath(path)[3]; +} +var path = { + extname: extname, + basename: basename, + dirname: dirname, + sep: sep, + delimiter: delimiter$1, + relative: relative, + join: join, + isAbsolute: isAbsolute, + normalize: normalize$1, + resolve: resolve +}; +function filter (xs, f) { + if (xs.filter) return xs.filter(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + if (f(xs[i], i, xs)) res.push(xs[i]); + } + return res; +} + +// String.prototype.substr - negative index don't work in IE8 +var substr = 'ab'.substr(-1) === 'b' ? + function (str, start, len) { return str.substr(start, len) } : + function (str, start, len) { + if (start < 0) start = str.length + start; + return str.substr(start, len); + } +; + +var _polyfillNode_path = /*#__PURE__*/Object.freeze({ + __proto__: null, + basename: basename, + default: path, + delimiter: delimiter$1, + dirname: dirname, + extname: extname, + isAbsolute: isAbsolute, + join: join, + normalize: normalize$1, + relative: relative, + resolve: resolve, + sep: sep +}); + +/*! https://mths.be/punycode v1.4.1 by @mathias */ + + +/** Highest positive signed 32-bit float value */ +var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 + +/** Bootstring parameters */ +var base = 36; +var tMin = 1; +var tMax = 26; +var skew = 38; +var damp = 700; +var initialBias = 72; +var initialN = 128; // 0x80 +var delimiter = '-'; // '\x2D' +var regexNonASCII = /[^\x20-\x7E]/; // unprintable ASCII chars + non-ASCII chars +var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators + +/** Error messages */ +var errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' +}; + +/** Convenience shortcuts */ +var baseMinusTMin = base - tMin; +var floor = Math.floor; +var stringFromCharCode = String.fromCharCode; + +/*--------------------------------------------------------------------------*/ + +/** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ +function error(type) { + throw new RangeError(errors[type]); +} + +/** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ +function map$1(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; +} + +/** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ +function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map$1(labels, fn).join('.'); + return result + encoded; +} + +/** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see <https://mathiasbynens.be/notes/javascript-encoding> + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ +function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; +} + +/** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ +function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); +} + +/** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ +function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for ( /* no initialization */ ; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); +} + +/** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ +function encode$1(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); + + // Cache the length + inputLength = input.length; + + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; + + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */ ; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); +} + +/** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ +function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) ? + 'xn--' + encode$1(string) : + string; + }); +} + +var lookup = []; +var revLookup = []; +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; +var inited = false; +function init () { + inited = true; + var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i]; + revLookup[code.charCodeAt(i)] = i; + } + + revLookup['-'.charCodeAt(0)] = 62; + revLookup['_'.charCodeAt(0)] = 63; +} + +function toByteArray (b64) { + if (!inited) { + init(); + } + var i, j, l, tmp, placeHolders, arr; + var len = b64.length; + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // the number of equal signs (place holders) + // if there are two placeholders, than the two characters before it + // represent one byte + // if there is only one, then the three characters before it represent 2 bytes + // this is just a cheap hack to not do indexOf twice + placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0; + + // base64 is 4/3 + up to two characters of the original data + arr = new Arr(len * 3 / 4 - placeHolders); + + // if there are placeholders, only get up to the last complete 4 chars + l = placeHolders > 0 ? len - 4 : len; + + var L = 0; + + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]; + arr[L++] = (tmp >> 16) & 0xFF; + arr[L++] = (tmp >> 8) & 0xFF; + arr[L++] = tmp & 0xFF; + } + + if (placeHolders === 2) { + tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4); + arr[L++] = tmp & 0xFF; + } else if (placeHolders === 1) { + tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2); + arr[L++] = (tmp >> 8) & 0xFF; + arr[L++] = tmp & 0xFF; + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp; + var output = []; + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]); + output.push(tripletToBase64(tmp)); + } + return output.join('') +} + +function fromByteArray (uint8) { + if (!inited) { + init(); + } + var tmp; + var len = uint8.length; + var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes + var output = ''; + var parts = []; + var maxChunkLength = 16383; // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1]; + output += lookup[tmp >> 2]; + output += lookup[(tmp << 4) & 0x3F]; + output += '=='; + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + (uint8[len - 1]); + output += lookup[tmp >> 10]; + output += lookup[(tmp >> 4) & 0x3F]; + output += lookup[(tmp << 2) & 0x3F]; + output += '='; + } + + parts.push(output); + + return parts.join('') +} + +function read (buffer, offset, isLE, mLen, nBytes) { + var e, m; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = -7; + var i = isLE ? (nBytes - 1) : 0; + var d = isLE ? -1 : 1; + var s = buffer[offset + i]; + + i += d; + + e = s & ((1 << (-nBits)) - 1); + s >>= (-nBits); + nBits += eLen; + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1); + e >>= (-nBits); + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +function write (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); + var i = isLE ? 0 : (nBytes - 1); + var d = isLE ? 1 : -1; + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; + + value = Math.abs(value); + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128; +} + +var toString$1 = {}.toString; + +var isArray$2 = Array.isArray || function (arr) { + return toString$1.call(arr) == '[object Array]'; +}; + +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> + * @license MIT + */ +/* eslint-disable no-proto */ + + +var INSPECT_MAX_BYTES = 50; + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer$1.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined + ? global$1.TYPED_ARRAY_SUPPORT + : true; + +/* + * Export kMaxLength after typed array support is determined. + */ +kMaxLength(); + +function kMaxLength () { + return Buffer$1.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer$1.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length); + that.__proto__ = Buffer$1.prototype; + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer$1(length); + } + that.length = length; + } + + return that +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer$1 (arg, encodingOrOffset, length) { + if (!Buffer$1.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer$1)) { + return new Buffer$1(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer$1.poolSize = 8192; // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer$1._augment = function (arr) { + arr.__proto__ = Buffer$1.prototype; + return arr +}; + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer$1.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +}; + +if (Buffer$1.TYPED_ARRAY_SUPPORT) { + Buffer$1.prototype.__proto__ = Uint8Array.prototype; + Buffer$1.__proto__ = Uint8Array; + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer$1[Symbol.species] === Buffer$1) ; +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size); + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer$1.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +}; + +function allocUnsafe (that, size) { + assertSize(size); + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0); + if (!Buffer$1.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0; + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer$1.allocUnsafe = function (size) { + return allocUnsafe(null, size) +}; +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer$1.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +}; + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8'; + } + + if (!Buffer$1.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0; + that = createBuffer(that, length); + + var actual = that.write(string, encoding); + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual); + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0; + that = createBuffer(that, length); + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255; + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength; // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array); + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset); + } else { + array = new Uint8Array(array, byteOffset, length); + } + + if (Buffer$1.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array; + that.__proto__ = Buffer$1.prototype; + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array); + } + return that +} + +function fromObject (that, obj) { + if (internalIsBuffer(obj)) { + var len = checked(obj.length) | 0; + that = createBuffer(that, len); + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len); + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray$2(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} +Buffer$1.isBuffer = isBuffer$1; +function internalIsBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer$1.compare = function compare (a, b) { + if (!internalIsBuffer(a) || !internalIsBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +Buffer$1.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +}; + +Buffer$1.concat = function concat (list, length) { + if (!isArray$2(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer$1.alloc(0) + } + + var i; + if (length === undefined) { + length = 0; + for (i = 0; i < list.length; ++i) { + length += list[i].length; + } + } + + var buffer = Buffer$1.allocUnsafe(length); + var pos = 0; + for (i = 0; i < list.length; ++i) { + var buf = list[i]; + if (!internalIsBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos); + pos += buf.length; + } + return buffer +}; + +function byteLength (string, encoding) { + if (internalIsBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string; + } + + var len = string.length; + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +} +Buffer$1.byteLength = byteLength; + +function slowToString (encoding, start, end) { + var loweredCase = false; + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0; + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length; + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0; + start >>>= 0; + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8'; + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase(); + loweredCase = true; + } + } +} + +// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect +// Buffer instances. +Buffer$1.prototype._isBuffer = true; + +function swap (b, n, m) { + var i = b[n]; + b[n] = b[m]; + b[m] = i; +} + +Buffer$1.prototype.swap16 = function swap16 () { + var len = this.length; + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1); + } + return this +}; + +Buffer$1.prototype.swap32 = function swap32 () { + var len = this.length; + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3); + swap(this, i + 1, i + 2); + } + return this +}; + +Buffer$1.prototype.swap64 = function swap64 () { + var len = this.length; + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7); + swap(this, i + 1, i + 6); + swap(this, i + 2, i + 5); + swap(this, i + 3, i + 4); + } + return this +}; + +Buffer$1.prototype.toString = function toString () { + var length = this.length | 0; + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +}; + +Buffer$1.prototype.equals = function equals (b) { + if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer$1.compare(this, b) === 0 +}; + +Buffer$1.prototype.inspect = function inspect () { + var str = ''; + var max = INSPECT_MAX_BYTES; + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' '); + if (this.length > max) str += ' ... '; + } + return '<Buffer ' + str + '>' +}; + +Buffer$1.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!internalIsBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0; + } + if (end === undefined) { + end = target ? target.length : 0; + } + if (thisStart === undefined) { + thisStart = 0; + } + if (thisEnd === undefined) { + thisEnd = this.length; + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0; + end >>>= 0; + thisStart >>>= 0; + thisEnd >>>= 0; + + if (this === target) return 0 + + var x = thisEnd - thisStart; + var y = end - start; + var len = Math.min(x, y); + + var thisCopy = this.slice(thisStart, thisEnd); + var targetCopy = target.slice(start, end); + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i]; + y = targetCopy[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff; + } else if (byteOffset < -2147483648) { + byteOffset = -2147483648; + } + byteOffset = +byteOffset; // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1); + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset; + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1; + } else if (byteOffset < 0) { + if (dir) byteOffset = 0; + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer$1.from(val, encoding); + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (internalIsBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF; // Search for a byte value [0-255] + if (Buffer$1.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1; + var arrLength = arr.length; + var valLength = val.length; + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase(); + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2; + arrLength /= 2; + valLength /= 2; + byteOffset /= 2; + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i; + if (dir) { + var foundIndex = -1; + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i; + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex; + foundIndex = -1; + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; + for (i = byteOffset; i >= 0; i--) { + var found = true; + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false; + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer$1.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +}; + +Buffer$1.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +}; + +Buffer$1.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +}; + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0; + var remaining = buf.length - offset; + if (!length) { + length = remaining; + } else { + length = Number(length); + if (length > remaining) { + length = remaining; + } + } + + // must be an even number of digits + var strLen = string.length; + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2; + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16); + if (isNaN(parsed)) return i + buf[offset + i] = parsed; + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer$1.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8'; + length = this.length; + offset = 0; + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset; + length = this.length; + offset = 0; + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0; + if (isFinite(length)) { + length = length | 0; + if (encoding === undefined) encoding = 'utf8'; + } else { + encoding = length; + length = undefined; + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset; + if (length === undefined || length > remaining) length = remaining; + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8'; + + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +}; + +Buffer$1.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +}; + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return fromByteArray(buf) + } else { + return fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end); + var res = []; + + var i = start; + while (i < end) { + var firstByte = buf[i]; + var codePoint = null; + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1; + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint; + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte; + } + break + case 2: + secondByte = buf[i + 1]; + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint; + } + } + break + case 3: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint; + } + } + break + case 4: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + fourthByte = buf[i + 3]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint; + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD; + bytesPerSequence = 1; + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000; + res.push(codePoint >>> 10 & 0x3FF | 0xD800); + codePoint = 0xDC00 | codePoint & 0x3FF; + } + + res.push(codePoint); + i += bytesPerSequence; + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000; + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length; + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = ''; + var i = 0; + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ); + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F); + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]); + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length; + + if (!start || start < 0) start = 0; + if (!end || end < 0 || end > len) end = len; + + var out = ''; + for (var i = start; i < end; ++i) { + out += toHex(buf[i]); + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end); + var res = ''; + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); + } + return res +} + +Buffer$1.prototype.slice = function slice (start, end) { + var len = this.length; + start = ~~start; + end = end === undefined ? len : ~~end; + + if (start < 0) { + start += len; + if (start < 0) start = 0; + } else if (start > len) { + start = len; + } + + if (end < 0) { + end += len; + if (end < 0) end = 0; + } else if (end > len) { + end = len; + } + + if (end < start) end = start; + + var newBuf; + if (Buffer$1.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end); + newBuf.__proto__ = Buffer$1.prototype; + } else { + var sliceLen = end - start; + newBuf = new Buffer$1(sliceLen, undefined); + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start]; + } + } + + return newBuf +}; + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer$1.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + + return val +}; + +Buffer$1.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + checkOffset(offset, byteLength, this.length); + } + + var val = this[offset + --byteLength]; + var mul = 1; + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul; + } + + return val +}; + +Buffer$1.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length); + return this[offset] +}; + +Buffer$1.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] | (this[offset + 1] << 8) +}; + +Buffer$1.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + return (this[offset] << 8) | this[offset + 1] +}; + +Buffer$1.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +}; + +Buffer$1.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +}; + +Buffer$1.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer$1.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var i = byteLength; + var mul = 1; + var val = this[offset + --i]; + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer$1.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length); + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +}; + +Buffer$1.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset] | (this[offset + 1] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer$1.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset + 1] | (this[offset] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer$1.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +}; + +Buffer$1.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +}; + +Buffer$1.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + return read(this, offset, true, 23, 4) +}; + +Buffer$1.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + return read(this, offset, false, 23, 4) +}; + +Buffer$1.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length); + return read(this, offset, true, 52, 8) +}; + +Buffer$1.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length); + return read(this, offset, false, 52, 8) +}; + +function checkInt (buf, value, offset, ext, max, min) { + if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer$1.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var mul = 1; + var i = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer$1.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var i = byteLength - 1; + var mul = 1; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer$1.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); + if (!Buffer$1.TYPED_ARRAY_SUPPORT) value = Math.floor(value); + this[offset] = (value & 0xff); + return offset + 1 +}; + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1; + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8; + } +} + +Buffer$1.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + if (Buffer$1.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + } else { + objectWriteUInt16(this, value, offset, true); + } + return offset + 2 +}; + +Buffer$1.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + if (Buffer$1.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + } else { + objectWriteUInt16(this, value, offset, false); + } + return offset + 2 +}; + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1; + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff; + } +} + +Buffer$1.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + if (Buffer$1.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24); + this[offset + 2] = (value >>> 16); + this[offset + 1] = (value >>> 8); + this[offset] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, true); + } + return offset + 4 +}; + +Buffer$1.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + if (Buffer$1.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, false); + } + return offset + 4 +}; + +Buffer$1.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = 0; + var mul = 1; + var sub = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer$1.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = byteLength - 1; + var mul = 1; + var sub = 0; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer$1.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -128); + if (!Buffer$1.TYPED_ARRAY_SUPPORT) value = Math.floor(value); + if (value < 0) value = 0xff + value + 1; + this[offset] = (value & 0xff); + return offset + 1 +}; + +Buffer$1.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768); + if (Buffer$1.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + } else { + objectWriteUInt16(this, value, offset, true); + } + return offset + 2 +}; + +Buffer$1.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768); + if (Buffer$1.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + } else { + objectWriteUInt16(this, value, offset, false); + } + return offset + 2 +}; + +Buffer$1.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648); + if (Buffer$1.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + this[offset + 2] = (value >>> 16); + this[offset + 3] = (value >>> 24); + } else { + objectWriteUInt32(this, value, offset, true); + } + return offset + 4 +}; + +Buffer$1.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648); + if (value < 0) value = 0xffffffff + value + 1; + if (Buffer$1.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, false); + } + return offset + 4 +}; + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4); + } + write(buf, value, offset, littleEndian, 23, 4); + return offset + 4 +} + +Buffer$1.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +}; + +Buffer$1.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +}; + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8); + } + write(buf, value, offset, littleEndian, 52, 8); + return offset + 8 +} + +Buffer$1.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +}; + +Buffer$1.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +}; + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer$1.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0; + if (!end && end !== 0) end = this.length; + if (targetStart >= target.length) targetStart = target.length; + if (!targetStart) targetStart = 0; + if (end > 0 && end < start) end = start; + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length; + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start; + } + + var len = end - start; + var i; + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start]; + } + } else if (len < 1000 || !Buffer$1.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start]; + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ); + } + + return len +}; + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer$1.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start; + start = 0; + end = this.length; + } else if (typeof end === 'string') { + encoding = end; + end = this.length; + } + if (val.length === 1) { + var code = val.charCodeAt(0); + if (code < 256) { + val = code; + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer$1.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255; + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0; + end = end === undefined ? this.length : end >>> 0; + + if (!val) val = 0; + + var i; + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val; + } + } else { + var bytes = internalIsBuffer(val) + ? val + : utf8ToBytes(new Buffer$1(val, encoding).toString()); + var len = bytes.length; + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len]; + } + } + + return this +}; + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g; + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, ''); + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '='; + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity; + var codePoint; + var length = string.length; + var leadSurrogate = null; + var bytes = []; + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i); + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } + + // valid lead + leadSurrogate = codePoint; + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + leadSurrogate = codePoint; + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + } + + leadSurrogate = null; + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint); + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF); + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo; + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i); + hi = c >> 8; + lo = c % 256; + byteArray.push(lo); + byteArray.push(hi); + } + + return byteArray +} + + +function base64ToBytes (str) { + return toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i]; + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + + +// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +function isBuffer$1(obj) { + return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj)) +} + +function isFastBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0)) +} + +var inherits; +if (typeof Object.create === 'function'){ + inherits = function inherits(ctor, superCtor) { + // implementation from standard node.js 'util' module + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + inherits = function inherits(ctor, superCtor) { + ctor.super_ = superCtor; + var TempCtor = function () {}; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + }; +} + +var getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || + function getOwnPropertyDescriptors(obj) { + var keys = Object.keys(obj); + var descriptors = {}; + for (var i = 0; i < keys.length; i++) { + descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]); + } + return descriptors; + }; + +var formatRegExp = /%[sdj%]/g; +function format$1(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject$1(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +} + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +function deprecate(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global$1.process)) { + return function() { + return deprecate(fn, msg).apply(this, arguments); + }; + } + + if (browser$1.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (browser$1.throwDeprecation) { + throw new Error(msg); + } else if (browser$1.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +} + +var debugs = {}; +var debugEnviron; +function debuglog(set) { + if (isUndefined(debugEnviron)) + debugEnviron = browser$1.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = 0; + debugs[set] = function() { + var msg = format$1.apply(null, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +} + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + _extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray$1(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty$2(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty$2(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var length = output.reduce(function(prev, cur) { + if (cur.indexOf('\n') >= 0) ; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray$1(ar) { + return Array.isArray(ar); +} + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} + +function isNull(arg) { + return arg === null; +} + +function isNullOrUndefined(arg) { + return arg == null; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isString(arg) { + return typeof arg === 'string'; +} + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} + +function isUndefined(arg) { + return arg === void 0; +} + +function isRegExp(re) { + return isObject$1(re) && objectToString(re) === '[object RegExp]'; +} + +function isObject$1(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isDate(d) { + return isObject$1(d) && objectToString(d) === '[object Date]'; +} + +function isError(e) { + return isObject$1(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} + +function isBuffer(maybeBuf) { + return Buffer$1.isBuffer(maybeBuf); +} + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +function log() { + console.log('%s - %s', timestamp(), format$1.apply(null, arguments)); +} + +function _extend(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject$1(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +} +function hasOwnProperty$2(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +var kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined; + +function promisify(original) { + if (typeof original !== 'function') + throw new TypeError('The "original" argument must be of type Function'); + + if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) { + var fn = original[kCustomPromisifiedSymbol]; + if (typeof fn !== 'function') { + throw new TypeError('The "util.promisify.custom" argument must be of type Function'); + } + Object.defineProperty(fn, kCustomPromisifiedSymbol, { + value: fn, enumerable: false, writable: false, configurable: true + }); + return fn; + } + + function fn() { + var promiseResolve, promiseReject; + var promise = new Promise(function (resolve, reject) { + promiseResolve = resolve; + promiseReject = reject; + }); + + var args = []; + for (var i = 0; i < arguments.length; i++) { + args.push(arguments[i]); + } + args.push(function (err, value) { + if (err) { + promiseReject(err); + } else { + promiseResolve(value); + } + }); + + try { + original.apply(this, args); + } catch (err) { + promiseReject(err); + } + + return promise; + } + + Object.setPrototypeOf(fn, Object.getPrototypeOf(original)); + + if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, { + value: fn, enumerable: false, writable: false, configurable: true + }); + return Object.defineProperties( + fn, + getOwnPropertyDescriptors(original) + ); +} + +promisify.custom = kCustomPromisifiedSymbol; + +function callbackifyOnRejected(reason, cb) { + // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M). + // Because `null` is a special error value in callbacks which means "no error + // occurred", we error-wrap so the callback consumer can distinguish between + // "the promise rejected with null" or "the promise fulfilled with undefined". + if (!reason) { + var newReason = new Error('Promise was rejected with a falsy value'); + newReason.reason = reason; + reason = newReason; + } + return cb(reason); +} + +function callbackify(original) { + if (typeof original !== 'function') { + throw new TypeError('The "original" argument must be of type Function'); + } + + // We DO NOT return the promise as it gives the user a false sense that + // the promise is actually somehow related to the callback's execution + // and that the callback throwing will reject the promise. + function callbackified() { + var args = []; + for (var i = 0; i < arguments.length; i++) { + args.push(arguments[i]); + } + + var maybeCb = args.pop(); + if (typeof maybeCb !== 'function') { + throw new TypeError('The last argument must be of type Function'); + } + var self = this; + var cb = function() { + return maybeCb.apply(self, arguments); + }; + // In true node style we process the callback on `nextTick` with all the + // implications (stack, `uncaughtException`, `async_hooks`) + original.apply(this, args) + .then(function(ret) { browser$1.nextTick(cb.bind(null, null, ret)); }, + function(rej) { browser$1.nextTick(callbackifyOnRejected.bind(null, rej, cb)); }); + } + + Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original)); + Object.defineProperties(callbackified, getOwnPropertyDescriptors(original)); + return callbackified; +} + +var _polyfillNode_util = { + inherits: inherits, + _extend: _extend, + log: log, + isBuffer: isBuffer, + isPrimitive: isPrimitive, + isFunction: isFunction, + isError: isError, + isDate: isDate, + isObject: isObject$1, + isRegExp: isRegExp, + isUndefined: isUndefined, + isSymbol: isSymbol, + isString: isString, + isNumber: isNumber, + isNullOrUndefined: isNullOrUndefined, + isNull: isNull, + isBoolean: isBoolean, + isArray: isArray$1, + inspect: inspect, + deprecate: deprecate, + format: format$1, + debuglog: debuglog, + promisify: promisify, + callbackify: callbackify, +}; + +var _polyfillNode_util$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + _extend: _extend, + callbackify: callbackify, + debuglog: debuglog, + default: _polyfillNode_util, + deprecate: deprecate, + format: format$1, + inherits: inherits, + inspect: inspect, + isArray: isArray$1, + isBoolean: isBoolean, + isBuffer: isBuffer, + isDate: isDate, + isError: isError, + isFunction: isFunction, + isNull: isNull, + isNullOrUndefined: isNullOrUndefined, + isNumber: isNumber, + isObject: isObject$1, + isPrimitive: isPrimitive, + isRegExp: isRegExp, + isString: isString, + isSymbol: isSymbol, + isUndefined: isUndefined, + log: log, + promisify: promisify +}); + +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + +// If obj.hasOwnProperty has been overridden, then calling +// obj.hasOwnProperty(prop) will break. +// See: https://github.com/joyent/node/issues/1707 +function hasOwnProperty$1(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; +function stringifyPrimitive(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } +} + +function stringify (obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return map(objectKeys(obj), function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (isArray(obj[k])) { + return map(obj[k], function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); +} +function map (xs, f) { + if (xs.map) return xs.map(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + res.push(f(xs[i], i)); + } + return res; +} + +var objectKeys = Object.keys || function (obj) { + var res = []; + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); + } + return res; +}; + +function parse$1(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + // maxKeys <= 0 means that we should not limit keys count + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty$1(obj, k)) { + obj[k] = v; + } else if (isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; +} + +// WHATWG API +const URL$1 = global$1.URL; +const URLSearchParams = global$1.URLSearchParams; +var _polyfillNode_url = { + parse: urlParse, + resolve: urlResolve, + resolveObject: urlResolveObject, + fileURLToPath: urlFileURLToPath, + format: urlFormat, + Url: Url, + + // WHATWG API + URL: URL$1, + URLSearchParams, +}; +function Url() { + this.protocol = null; + this.slashes = null; + this.auth = null; + this.host = null; + this.port = null; + this.hostname = null; + this.hash = null; + this.search = null; + this.query = null; + this.pathname = null; + this.path = null; + this.href = null; +} + +// Reference: RFC 3986, RFC 1808, RFC 2396 + +// define these here so at least they only have to be +// compiled once on the first module load. +var protocolPattern = /^([a-z0-9.+-]+:)/i, + portPattern = /:[0-9]*$/, + + // Special case for a simple path URL + simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, + + // RFC 2396: characters reserved for delimiting URLs. + // We actually just auto-escape these. + delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], + + // RFC 2396: characters not allowed for various reasons. + unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), + + // Allowed by RFCs, but cause of XSS attacks. Always escape these. + autoEscape = ['\''].concat(unwise), + // Characters that are never ever allowed in a hostname. + // Note that any invalid chars are also handled, but these + // are the ones that are *expected* to be seen, so we fast-path + // them. + nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), + hostEndingChars = ['/', '?', '#'], + hostnameMaxLen = 255, + hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, + // protocols that can allow "unsafe" and "unwise" chars. + unsafeProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that never have a hostname. + hostlessProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that always contain a // bit. + slashedProtocol = { + 'http': true, + 'https': true, + 'ftp': true, + 'gopher': true, + 'file': true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }; + +function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && isObject$1(url) && url instanceof Url) return url; + + var u = new Url; + u.parse(url, parseQueryString, slashesDenoteHost); + return u; +} +Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { + return parse(this, url, parseQueryString, slashesDenoteHost); +}; + +function parse(self, url, parseQueryString, slashesDenoteHost) { + if (!isString(url)) { + throw new TypeError('Parameter \'url\' must be a string, not ' + typeof url); + } + + // Copy chrome, IE, opera backslash-handling behavior. + // Back slashes before the query string get converted to forward slashes + // See: https://code.google.com/p/chromium/issues/detail?id=25916 + var queryIndex = url.indexOf('?'), + splitter = + (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#', + uSplit = url.split(splitter), + slashRegex = /\\/g; + uSplit[0] = uSplit[0].replace(slashRegex, '/'); + url = uSplit.join(splitter); + + var rest = url; + + // trim before proceeding. + // This is to support parse stuff like " http://foo.com \n" + rest = rest.trim(); + + if (!slashesDenoteHost && url.split('#').length === 1) { + // Try fast path regexp + var simplePath = simplePathPattern.exec(rest); + if (simplePath) { + self.path = rest; + self.href = rest; + self.pathname = simplePath[1]; + if (simplePath[2]) { + self.search = simplePath[2]; + if (parseQueryString) { + self.query = parse$1(self.search.substr(1)); + } else { + self.query = self.search.substr(1); + } + } else if (parseQueryString) { + self.search = ''; + self.query = {}; + } + return self; + } + } + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + self.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + // figure out if it's got a host + // user@server is *always* interpreted as a hostname, and url + // resolution will treat //foo/bar as host=foo,path=bar because that's + // how the browser resolves relative URLs. + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + self.slashes = true; + } + } + var i, hec, l, p; + if (!hostlessProtocol[proto] && + (slashes || (proto && !slashedProtocol[proto]))) { + + // there's a hostname. + // the first instance of /, ?, ;, or # ends the host. + // + // If there is an @ in the hostname, then non-host chars *are* allowed + // to the left of the last @ sign, unless some host-ending character + // comes *before* the @-sign. + // URLs are obnoxious. + // + // ex: + // http://a@b@c/ => user:a@b host:c + // http://a@b?@c => user:a host:c path:/?@c + + // v0.12 TODO(isaacs): This is not quite how Chrome does things. + // Review our test case against browsers more comprehensively. + + // find the first instance of any hostEndingChars + var hostEnd = -1; + for (i = 0; i < hostEndingChars.length; i++) { + hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + + // at this point, either we have an explicit point where the + // auth portion cannot go past, or the last @ char is the decider. + var auth, atSign; + if (hostEnd === -1) { + // atSign can be anywhere. + atSign = rest.lastIndexOf('@'); + } else { + // atSign must be in auth portion. + // http://a@b/c@d => host:b auth:a path:/c@d + atSign = rest.lastIndexOf('@', hostEnd); + } + + // Now we have a portion which is definitely the auth. + // Pull that off. + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + self.auth = decodeURIComponent(auth); + } + + // the host is the remaining to the left of the first non-host char + hostEnd = -1; + for (i = 0; i < nonHostChars.length; i++) { + hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + // if we still have not hit it, then the entire thing is a host. + if (hostEnd === -1) + hostEnd = rest.length; + + self.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + // pull out port. + parseHost(self); + + // we've indicated that there is a hostname, + // so even if it's empty, it has to be present. + self.hostname = self.hostname || ''; + + // if hostname begins with [ and ends with ] + // assume that it's an IPv6 address. + var ipv6Hostname = self.hostname[0] === '[' && + self.hostname[self.hostname.length - 1] === ']'; + + // validate a little. + if (!ipv6Hostname) { + var hostparts = self.hostname.split(/\./); + for (i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) continue; + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + // we replace non-ASCII char with a temporary placeholder + // we need this to make sure size of hostname is not + // broken by replacing non-ASCII by nothing + newpart += 'x'; + } else { + newpart += part[j]; + } + } + // we test again with ASCII char only + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + self.hostname = validParts.join('.'); + break; + } + } + } + } + + if (self.hostname.length > hostnameMaxLen) { + self.hostname = ''; + } else { + // hostnames are always lower case. + self.hostname = self.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + // IDNA Support: Returns a punycoded representation of "domain". + // It only converts parts of the domain name that + // have non-ASCII characters, i.e. it doesn't matter if + // you call it with a domain that already is ASCII-only. + self.hostname = toASCII(self.hostname); + } + + p = self.port ? ':' + self.port : ''; + var h = self.hostname || ''; + self.host = h + p; + self.href += self.host; + + // strip [ and ] from the hostname + // the host field still retains them, though + if (ipv6Hostname) { + self.hostname = self.hostname.substr(1, self.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + // now rest is set to the post-host stuff. + // chop off any delim chars. + if (!unsafeProtocol[lowerProto]) { + + // First, make 100% sure that any "autoEscape" chars get + // escaped, even if encodeURIComponent doesn't think they + // need to be. + for (i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + if (rest.indexOf(ae) === -1) + continue; + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + + // chop off from the tail first. + var hash = rest.indexOf('#'); + if (hash !== -1) { + // got a fragment string. + self.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + self.search = rest.substr(qm); + self.query = rest.substr(qm + 1); + if (parseQueryString) { + self.query = parse$1(self.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + // no query string, but parseQueryString still requested + self.search = ''; + self.query = {}; + } + if (rest) self.pathname = rest; + if (slashedProtocol[lowerProto] && + self.hostname && !self.pathname) { + self.pathname = '/'; + } + + //to support http.request + if (self.pathname || self.search) { + p = self.pathname || ''; + var s = self.search || ''; + self.path = p + s; + } + + // finally, reconstruct the href based on what has been validated. + self.href = format(self); + return self; +} + +function urlFileURLToPath(path) { + if (typeof path === 'string') + path = new Url().parse(path); + else if (!(path instanceof Url)) + throw new TypeError('The "path" argument must be of type string or an instance of URL. Received type ' + (typeof path) + String(path)); + if (path.protocol !== 'file:') + throw new TypeError('The URL must be of scheme file'); + return getPathFromURLPosix(path); +} + +function getPathFromURLPosix(url) { + const pathname = url.pathname; + for (let n = 0; n < pathname.length; n++) { + if (pathname[n] === '%') { + const third = pathname.codePointAt(n + 2) | 0x20; + if (pathname[n + 1] === '2' && third === 102) { + throw new TypeError( + 'must not include encoded / characters' + ); + } + } + } + return decodeURIComponent(pathname); +} + +// format a parsed object into a url string +function urlFormat(obj) { + // ensure it's an object, and not a string url. + // If it's an obj, this is a no-op. + // this way, you can call url_format() on strings + // to clean up potentially wonky urls. + if (isString(obj)) obj = parse({}, obj); + return format(obj); +} + +function format(self) { + var auth = self.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + + var protocol = self.protocol || '', + pathname = self.pathname || '', + hash = self.hash || '', + host = false, + query = ''; + + if (self.host) { + host = auth + self.host; + } else if (self.hostname) { + host = auth + (self.hostname.indexOf(':') === -1 ? + self.hostname : + '[' + this.hostname + ']'); + if (self.port) { + host += ':' + self.port; + } + } + + if (self.query && + isObject$1(self.query) && + Object.keys(self.query).length) { + query = stringify(self.query); + } + + var search = self.search || (query && ('?' + query)) || ''; + + if (protocol && protocol.substr(-1) !== ':') protocol += ':'; + + // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. + // unless they had them to begin with. + if (self.slashes || + (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') hash = '#' + hash; + if (search && search.charAt(0) !== '?') search = '?' + search; + + pathname = pathname.replace(/[?#]/g, function(match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; +} + +Url.prototype.format = function() { + return format(this); +}; + +function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); +} + +Url.prototype.resolve = function(relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); +}; + +function urlResolveObject(source, relative) { + if (!source) return relative; + return urlParse(source, false, true).resolveObject(relative); +} + +Url.prototype.resolveObject = function(relative) { + if (isString(relative)) { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + var tkeys = Object.keys(this); + for (var tk = 0; tk < tkeys.length; tk++) { + var tkey = tkeys[tk]; + result[tkey] = this[tkey]; + } + + // hash is always overridden, no matter what. + // even href="" will remove it. + result.hash = relative.hash; + + // if the relative url is empty, then there's nothing left to do here. + if (relative.href === '') { + result.href = result.format(); + return result; + } + + // hrefs like //foo/bar always cut to the protocol. + if (relative.slashes && !relative.protocol) { + // take everything except the protocol from relative + var rkeys = Object.keys(relative); + for (var rk = 0; rk < rkeys.length; rk++) { + var rkey = rkeys[rk]; + if (rkey !== 'protocol') + result[rkey] = relative[rkey]; + } + + //urlParse appends trailing / to urls like http://www.example.com + if (slashedProtocol[result.protocol] && + result.hostname && !result.pathname) { + result.path = result.pathname = '/'; + } + + result.href = result.format(); + return result; + } + var relPath; + if (relative.protocol && relative.protocol !== result.protocol) { + // if it's a known url protocol, then changing + // the protocol does weird things + // first, if it's not file:, then we MUST have a host, + // and if there was a path + // to begin with, then we MUST have a path. + // if it is file:, then the host is dropped, + // because that's known to be hostless. + // anything else is assumed to be absolute. + if (!slashedProtocol[relative.protocol]) { + var keys = Object.keys(relative); + for (var v = 0; v < keys.length; v++) { + var k = keys[v]; + result[k] = relative[k]; + } + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())); + if (!relative.host) relative.host = ''; + if (!relative.hostname) relative.hostname = ''; + if (relPath[0] !== '') relPath.unshift(''); + if (relPath.length < 2) relPath.unshift(''); + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + // to support http.request + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), + isRelAbs = ( + relative.host || + relative.pathname && relative.pathname.charAt(0) === '/' + ), + mustEndAbs = (isRelAbs || isSourceAbs || + (result.host && relative.pathname)), + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + relPath = relative.pathname && relative.pathname.split('/') || []; + // if the url is a non-slashed url, then relative + // links like ../.. should be able + // to crawl up to the hostname, as well. This is strange. + // result.protocol has already been set by now. + // Later on, put the first path part into the host field. + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') srcPath[0] = result.host; + else srcPath.unshift(result.host); + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') relPath[0] = relative.host; + else relPath.unshift(relative.host); + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + var authInHost; + if (isRelAbs) { + // it's absolute. + result.host = (relative.host || relative.host === '') ? + relative.host : result.host; + result.hostname = (relative.hostname || relative.hostname === '') ? + relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + // fall through to the dot-handling below. + } else if (relPath.length) { + // it's relative + // throw away the existing file, and take the new path instead. + if (!srcPath) srcPath = []; + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (!isNullOrUndefined(relative.search)) { + // just pull out the search. + // like href='?foo'. + // Put this after the other two cases because it simplifies the booleans + if (psychotic) { + result.hostname = result.host = srcPath.shift(); + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + result.search = relative.search; + result.query = relative.query; + //to support http.request + if (!isNull(result.pathname) || !isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + // no path at all. easy. + // we've already handled the other stuff above. + result.pathname = null; + //to support http.request + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + // if a url ENDs in . or .., then it must get a trailing slash. + // however, if it ends in anything else non-slashy, + // then it must NOT get a trailing slash. + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = ( + (result.host || relative.host || srcPath.length > 1) && + (last === '.' || last === '..') || last === ''); + + // strip single dots, resolve double dots to parent dir + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last === '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && + (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || + (srcPath[0] && srcPath[0].charAt(0) === '/'); + + // put the host back + if (psychotic) { + result.hostname = result.host = isAbsolute ? '' : + srcPath.length ? srcPath.shift() : ''; + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (!srcPath.length) { + result.pathname = null; + result.path = null; + } else { + result.pathname = srcPath.join('/'); + } + + //to support request.http + if (!isNull(result.pathname) || !isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; +}; + +Url.prototype.parseHost = function() { + return parseHost(this); +}; + +function parseHost(self) { + var host = self.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + self.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) self.hostname = host; +} + +var _polyfillNode_url$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + URL: URL$1, + URLSearchParams: URLSearchParams, + Url: Url, + default: _polyfillNode_url, + fileURLToPath: urlFileURLToPath, + format: urlFormat, + parse: urlParse, + resolve: urlResolve, + resolveObject: urlResolveObject +}); + +function isRelativeUrl(url) { + const firstChar = url.charAt(0); + return firstChar === "." || firstChar === "~" || firstChar === "@"; +} +const externalRE = /^(https?:)?\/\//; +function isExternalUrl(url) { + return externalRE.test(url); +} +const dataUrlRE = /^\s*data:/i; +function isDataUrl(url) { + return dataUrlRE.test(url); +} +function parseUrl(url) { + const firstChar = url.charAt(0); + if (firstChar === "~") { + const secondChar = url.charAt(1); + url = url.slice(secondChar === "/" ? 2 : 1); + } + return parseUriParts(url); +} +function parseUriParts(urlString) { + return urlParse(isString$1(urlString) ? urlString : "", false, true); +} + +var __defProp$9 = Object.defineProperty; +var __defProps$8 = Object.defineProperties; +var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols; +var __hasOwnProp$9 = Object.prototype.hasOwnProperty; +var __propIsEnum$9 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$9 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$9.call(b, prop)) + __defNormalProp$9(a, prop, b[prop]); + if (__getOwnPropSymbols$9) + for (var prop of __getOwnPropSymbols$9(b)) { + if (__propIsEnum$9.call(b, prop)) + __defNormalProp$9(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b)); +const defaultAssetUrlOptions = { + base: null, + includeAbsolute: false, + tags: { + video: ["src", "poster"], + source: ["src"], + img: ["src"], + image: ["xlink:href", "href"], + use: ["xlink:href", "href"] + } +}; +const normalizeOptions = (options) => { + if (Object.keys(options).some((key) => isArray$3(options[key]))) { + return __spreadProps$8(__spreadValues$9({}, defaultAssetUrlOptions), { + tags: options + }); + } + return __spreadValues$9(__spreadValues$9({}, defaultAssetUrlOptions), options); +}; +const createAssetUrlTransformWithOptions = (options) => { + return (node, context) => transformAssetUrl(node, context, options); +}; +const transformAssetUrl = (node, context, options = defaultAssetUrlOptions) => { + if (node.type === 1) { + if (!node.props.length) { + return; + } + const tags = options.tags || defaultAssetUrlOptions.tags; + const attrs = tags[node.tag]; + const wildCardAttrs = tags["*"]; + if (!attrs && !wildCardAttrs) { + return; + } + const assetAttrs = (attrs || []).concat(wildCardAttrs || []); + node.props.forEach((attr, index) => { + if (attr.type !== 6 || !assetAttrs.includes(attr.name) || !attr.value || isExternalUrl(attr.value.content) || isDataUrl(attr.value.content) || attr.value.content[0] === "#" || !options.includeAbsolute && !isRelativeUrl(attr.value.content)) { + return; + } + const url = parseUrl(attr.value.content); + if (options.base && attr.value.content[0] === ".") { + const base = parseUrl(options.base); + const protocol = base.protocol || ""; + const host = base.host ? protocol + "//" + base.host : ""; + const basePath = base.path || "/"; + attr.value.content = host + (path.posix || path).join(basePath, url.path + (url.hash || "")); + return; + } + const exp = getImportsExpressionExp(url.path, url.hash, attr.loc, context); + node.props[index] = { + type: 7, + name: "bind", + arg: createSimpleExpression(attr.name, true, attr.loc), + exp, + modifiers: [], + loc: attr.loc + }; + }); + } +}; +function getImportsExpressionExp(path2, hash, loc, context) { + if (path2) { + let name; + let exp; + const existingIndex = context.imports.findIndex((i) => i.path === path2); + if (existingIndex > -1) { + name = `_imports_${existingIndex}`; + exp = context.imports[existingIndex].exp; + } else { + name = `_imports_${context.imports.length}`; + exp = createSimpleExpression( + name, + false, + loc, + 3 + ); + context.imports.push({ + exp, + path: decodeURIComponent(path2) + }); + } + if (!hash) { + return exp; + } + const hashExp = `${name} + '${hash}'`; + const finalExp = createSimpleExpression( + hashExp, + false, + loc, + 3 + ); + if (!context.hoistStatic) { + return finalExp; + } + const existingHoistIndex = context.hoists.findIndex((h) => { + return h && h.type === 4 && !h.isStatic && h.content === hashExp; + }); + if (existingHoistIndex > -1) { + return createSimpleExpression( + `_hoisted_${existingHoistIndex + 1}`, + false, + loc, + 3 + ); + } + return context.hoist(finalExp); + } else { + return createSimpleExpression(`''`, false, loc, 3); + } +} + +const srcsetTags = ["img", "source"]; +const escapedSpaceCharacters = /( |\\t|\\n|\\f|\\r)+/g; +const createSrcsetTransformWithOptions = (options) => { + return (node, context) => transformSrcset(node, context, options); +}; +const transformSrcset = (node, context, options = defaultAssetUrlOptions) => { + if (node.type === 1) { + if (srcsetTags.includes(node.tag) && node.props.length) { + node.props.forEach((attr, index) => { + if (attr.name === "srcset" && attr.type === 6) { + if (!attr.value) return; + const value = attr.value.content; + if (!value) return; + const imageCandidates = value.split(",").map((s) => { + const [url, descriptor] = s.replace(escapedSpaceCharacters, " ").trim().split(" ", 2); + return { url, descriptor }; + }); + for (let i = 0; i < imageCandidates.length; i++) { + const { url } = imageCandidates[i]; + if (isDataUrl(url)) { + imageCandidates[i + 1].url = url + "," + imageCandidates[i + 1].url; + imageCandidates.splice(i, 1); + } + } + const shouldProcessUrl = (url) => { + return url && !isExternalUrl(url) && !isDataUrl(url) && (options.includeAbsolute || isRelativeUrl(url)); + }; + if (!imageCandidates.some(({ url }) => shouldProcessUrl(url))) { + return; + } + if (options.base) { + const base = options.base; + const set = []; + let needImportTransform = false; + imageCandidates.forEach((candidate) => { + let { url, descriptor } = candidate; + descriptor = descriptor ? ` ${descriptor}` : ``; + if (url[0] === ".") { + candidate.url = (path.posix || path).join(base, url); + set.push(candidate.url + descriptor); + } else if (shouldProcessUrl(url)) { + needImportTransform = true; + } else { + set.push(url + descriptor); + } + }); + if (!needImportTransform) { + attr.value.content = set.join(", "); + return; + } + } + const compoundExpression = createCompoundExpression([], attr.loc); + imageCandidates.forEach(({ url, descriptor }, index2) => { + if (shouldProcessUrl(url)) { + const { path: path2 } = parseUrl(url); + let exp2; + if (path2) { + const existingImportsIndex = context.imports.findIndex( + (i) => i.path === path2 + ); + if (existingImportsIndex > -1) { + exp2 = createSimpleExpression( + `_imports_${existingImportsIndex}`, + false, + attr.loc, + 3 + ); + } else { + exp2 = createSimpleExpression( + `_imports_${context.imports.length}`, + false, + attr.loc, + 3 + ); + context.imports.push({ exp: exp2, path: path2 }); + } + compoundExpression.children.push(exp2); + } + } else { + const exp2 = createSimpleExpression( + `"${url}"`, + false, + attr.loc, + 3 + ); + compoundExpression.children.push(exp2); + } + const isNotLast = imageCandidates.length - 1 > index2; + if (descriptor && isNotLast) { + compoundExpression.children.push(` + ' ${descriptor}, ' + `); + } else if (descriptor) { + compoundExpression.children.push(` + ' ${descriptor}'`); + } else if (isNotLast) { + compoundExpression.children.push(` + ', ' + `); + } + }); + let exp = compoundExpression; + if (context.hoistStatic) { + exp = context.hoist(compoundExpression); + exp.constType = 3; + } + node.props[index] = { + type: 7, + name: "bind", + arg: createSimpleExpression("srcset", true, attr.loc), + exp, + modifiers: [], + loc: attr.loc + }; + } + }); + } + } +}; + +const SSR_INTERPOLATE = Symbol(`ssrInterpolate`); +const SSR_RENDER_VNODE = Symbol(`ssrRenderVNode`); +const SSR_RENDER_COMPONENT = Symbol(`ssrRenderComponent`); +const SSR_RENDER_SLOT = Symbol(`ssrRenderSlot`); +const SSR_RENDER_SLOT_INNER = Symbol(`ssrRenderSlotInner`); +const SSR_RENDER_CLASS = Symbol(`ssrRenderClass`); +const SSR_RENDER_STYLE = Symbol(`ssrRenderStyle`); +const SSR_RENDER_ATTRS = Symbol(`ssrRenderAttrs`); +const SSR_RENDER_ATTR = Symbol(`ssrRenderAttr`); +const SSR_RENDER_DYNAMIC_ATTR = Symbol(`ssrRenderDynamicAttr`); +const SSR_RENDER_LIST = Symbol(`ssrRenderList`); +const SSR_INCLUDE_BOOLEAN_ATTR = Symbol( + `ssrIncludeBooleanAttr` +); +const SSR_LOOSE_EQUAL = Symbol(`ssrLooseEqual`); +const SSR_LOOSE_CONTAIN = Symbol(`ssrLooseContain`); +const SSR_RENDER_DYNAMIC_MODEL = Symbol( + `ssrRenderDynamicModel` +); +const SSR_GET_DYNAMIC_MODEL_PROPS = Symbol( + `ssrGetDynamicModelProps` +); +const SSR_RENDER_TELEPORT = Symbol(`ssrRenderTeleport`); +const SSR_RENDER_SUSPENSE = Symbol(`ssrRenderSuspense`); +const SSR_GET_DIRECTIVE_PROPS = Symbol(`ssrGetDirectiveProps`); +const ssrHelpers = { + [SSR_INTERPOLATE]: `ssrInterpolate`, + [SSR_RENDER_VNODE]: `ssrRenderVNode`, + [SSR_RENDER_COMPONENT]: `ssrRenderComponent`, + [SSR_RENDER_SLOT]: `ssrRenderSlot`, + [SSR_RENDER_SLOT_INNER]: `ssrRenderSlotInner`, + [SSR_RENDER_CLASS]: `ssrRenderClass`, + [SSR_RENDER_STYLE]: `ssrRenderStyle`, + [SSR_RENDER_ATTRS]: `ssrRenderAttrs`, + [SSR_RENDER_ATTR]: `ssrRenderAttr`, + [SSR_RENDER_DYNAMIC_ATTR]: `ssrRenderDynamicAttr`, + [SSR_RENDER_LIST]: `ssrRenderList`, + [SSR_INCLUDE_BOOLEAN_ATTR]: `ssrIncludeBooleanAttr`, + [SSR_LOOSE_EQUAL]: `ssrLooseEqual`, + [SSR_LOOSE_CONTAIN]: `ssrLooseContain`, + [SSR_RENDER_DYNAMIC_MODEL]: `ssrRenderDynamicModel`, + [SSR_GET_DYNAMIC_MODEL_PROPS]: `ssrGetDynamicModelProps`, + [SSR_RENDER_TELEPORT]: `ssrRenderTeleport`, + [SSR_RENDER_SUSPENSE]: `ssrRenderSuspense`, + [SSR_GET_DIRECTIVE_PROPS]: `ssrGetDirectiveProps` +}; +registerRuntimeHelpers(ssrHelpers); + +const ssrTransformIf = createStructuralDirectiveTransform( + /^(if|else|else-if)$/, + processIf +); +function ssrProcessIf(node, context, disableNestedFragments = false, disableComment = false) { + const [rootBranch] = node.branches; + const ifStatement = createIfStatement( + rootBranch.condition, + processIfBranch(rootBranch, context, disableNestedFragments) + ); + context.pushStatement(ifStatement); + let currentIf = ifStatement; + for (let i = 1; i < node.branches.length; i++) { + const branch = node.branches[i]; + const branchBlockStatement = processIfBranch( + branch, + context, + disableNestedFragments + ); + if (branch.condition) { + currentIf = currentIf.alternate = createIfStatement( + branch.condition, + branchBlockStatement + ); + } else { + currentIf.alternate = branchBlockStatement; + } + } + if (!currentIf.alternate && !disableComment) { + currentIf.alternate = createBlockStatement([ + createCallExpression(`_push`, ["`<!---->`"]) + ]); + } +} +function processIfBranch(branch, context, disableNestedFragments = false) { + const { children } = branch; + const needFragmentWrapper = !disableNestedFragments && (children.length !== 1 || children[0].type !== 1) && // optimize away nested fragments when the only child is a ForNode + !(children.length === 1 && children[0].type === 11); + return processChildrenAsStatement(branch, context, needFragmentWrapper); +} + +const ssrTransformFor = createStructuralDirectiveTransform("for", processFor); +function ssrProcessFor(node, context, disableNestedFragments = false) { + const needFragmentWrapper = !disableNestedFragments && (node.children.length !== 1 || node.children[0].type !== 1); + const renderLoop = createFunctionExpression( + createForLoopParams(node.parseResult) + ); + renderLoop.body = processChildrenAsStatement( + node, + context, + needFragmentWrapper + ); + if (!disableNestedFragments) { + context.pushStringPart(`<!--[-->`); + } + context.pushStatement( + createCallExpression(context.helper(SSR_RENDER_LIST), [ + node.source, + renderLoop + ]) + ); + if (!disableNestedFragments) { + context.pushStringPart(`<!--]-->`); + } +} + +const ssrTransformSlotOutlet = (node, context) => { + if (isSlotOutlet(node)) { + const { slotName, slotProps } = processSlotOutlet(node, context); + const args = [ + `_ctx.$slots`, + slotName, + slotProps || `{}`, + // fallback content placeholder. will be replaced in the process phase + `null`, + `_push`, + `_parent` + ]; + if (context.scopeId && context.slotted !== false) { + args.push(`"${context.scopeId}-s"`); + } + let method = SSR_RENDER_SLOT; + let parent = context.parent; + if (parent) { + const children = parent.children; + if (parent.type === 10) { + parent = context.grandParent; + } + let componentType; + if (parent.type === 1 && parent.tagType === 1 && ((componentType = resolveComponentType(parent, context, true)) === TRANSITION || componentType === TRANSITION_GROUP) && children.filter((c) => c.type === 1).length === 1) { + method = SSR_RENDER_SLOT_INNER; + if (!(context.scopeId && context.slotted !== false)) { + args.push("null"); + } + args.push("true"); + } + } + node.ssrCodegenNode = createCallExpression(context.helper(method), args); + } +}; +function ssrProcessSlotOutlet(node, context) { + const renderCall = node.ssrCodegenNode; + if (node.children.length) { + const fallbackRenderFn = createFunctionExpression([]); + fallbackRenderFn.body = processChildrenAsStatement(node, context); + renderCall.arguments[3] = fallbackRenderFn; + } + if (context.withSlotScopeId) { + const slotScopeId = renderCall.arguments[6]; + renderCall.arguments[6] = slotScopeId ? `${slotScopeId} + _scopeId` : `_scopeId`; + } + context.pushStatement(node.ssrCodegenNode); +} + +function createSSRCompilerError(code, loc) { + return createCompilerError(code, loc, SSRErrorMessages); +} +const SSRErrorMessages = { + [65]: `Unsafe attribute name for SSR.`, + [66]: `Missing the 'to' prop on teleport element.`, + [67]: `Invalid AST node during SSR transform.` +}; + +function ssrProcessTeleport(node, context) { + const targetProp = findProp(node, "to"); + if (!targetProp) { + context.onError( + createSSRCompilerError(66, node.loc) + ); + return; + } + let target; + if (targetProp.type === 6) { + target = targetProp.value && createSimpleExpression(targetProp.value.content, true); + } else { + target = targetProp.exp; + } + if (!target) { + context.onError( + createSSRCompilerError( + 66, + targetProp.loc + ) + ); + return; + } + const disabledProp = findProp( + node, + "disabled", + false, + true + /* allow empty */ + ); + const disabled = disabledProp ? disabledProp.type === 6 ? `true` : disabledProp.exp || `false` : `false`; + const contentRenderFn = createFunctionExpression( + [`_push`], + void 0, + // Body is added later + true, + // newline + false, + // isSlot + node.loc + ); + contentRenderFn.body = processChildrenAsStatement(node, context); + context.pushStatement( + createCallExpression(context.helper(SSR_RENDER_TELEPORT), [ + `_push`, + contentRenderFn, + target, + disabled, + `_parent` + ]) + ); +} + +const wipMap$3 = /* @__PURE__ */ new WeakMap(); +function ssrTransformSuspense(node, context) { + return () => { + if (node.children.length) { + const wipEntry = { + slotsExp: null, + // to be immediately set + wipSlots: [] + }; + wipMap$3.set(node, wipEntry); + wipEntry.slotsExp = buildSlots( + node, + context, + (_props, _vForExp, children, loc) => { + const fn = createFunctionExpression( + [], + void 0, + // no return, assign body later + true, + // newline + false, + // suspense slots are not treated as normal slots + loc + ); + wipEntry.wipSlots.push({ + fn, + children + }); + return fn; + } + ).slots; + } + }; +} +function ssrProcessSuspense(node, context) { + const wipEntry = wipMap$3.get(node); + if (!wipEntry) { + return; + } + const { slotsExp, wipSlots } = wipEntry; + for (let i = 0; i < wipSlots.length; i++) { + const slot = wipSlots[i]; + slot.fn.body = processChildrenAsStatement(slot, context); + } + context.pushStatement( + createCallExpression(context.helper(SSR_RENDER_SUSPENSE), [ + `_push`, + slotsExp + ]) + ); +} + +const rawChildrenMap = /* @__PURE__ */ new WeakMap(); +const ssrTransformElement = (node, context) => { + if (node.type !== 1 || node.tagType !== 0) { + return; + } + return function ssrPostTransformElement() { + const openTag = [`<${node.tag}`]; + const needTagForRuntime = node.tag === "textarea" || node.tag.indexOf("-") > 0; + const hasDynamicVBind = hasDynamicKeyVBind(node); + const hasCustomDir = node.props.some( + (p) => p.type === 7 && !isBuiltInDirective(p.name) + ); + const needMergeProps = hasDynamicVBind || hasCustomDir; + if (needMergeProps) { + const { props, directives } = buildProps( + node, + context, + node.props, + false, + false, + true + ); + if (props || directives.length) { + const mergedProps = buildSSRProps(props, directives, context); + const propsExp = createCallExpression( + context.helper(SSR_RENDER_ATTRS), + [mergedProps] + ); + if (node.tag === "textarea") { + const existingText = node.children[0]; + if (!existingText || existingText.type !== 5) { + const tempId = `_temp${context.temps++}`; + propsExp.arguments = [ + createAssignmentExpression( + createSimpleExpression(tempId, false), + mergedProps + ) + ]; + rawChildrenMap.set( + node, + createCallExpression(context.helper(SSR_INTERPOLATE), [ + createConditionalExpression( + createSimpleExpression(`"value" in ${tempId}`, false), + createSimpleExpression(`${tempId}.value`, false), + createSimpleExpression( + existingText ? existingText.content : ``, + true + ), + false + ) + ]) + ); + } + } else if (node.tag === "input") { + const vModel = findVModel(node); + if (vModel) { + const tempId = `_temp${context.temps++}`; + const tempExp = createSimpleExpression(tempId, false); + propsExp.arguments = [ + createSequenceExpression([ + createAssignmentExpression(tempExp, mergedProps), + createCallExpression(context.helper(MERGE_PROPS), [ + tempExp, + createCallExpression( + context.helper(SSR_GET_DYNAMIC_MODEL_PROPS), + [ + tempExp, + // existing props + vModel.exp + // model + ] + ) + ]) + ]) + ]; + } + } else if (directives.length && !node.children.length) { + const vText = findDir(node, "text"); + if (!vText) { + const tempId = `_temp${context.temps++}`; + propsExp.arguments = [ + createAssignmentExpression( + createSimpleExpression(tempId, false), + mergedProps + ) + ]; + rawChildrenMap.set( + node, + createConditionalExpression( + createSimpleExpression(`"textContent" in ${tempId}`, false), + createCallExpression(context.helper(SSR_INTERPOLATE), [ + createSimpleExpression(`${tempId}.textContent`, false) + ]), + createSimpleExpression(`${tempId}.innerHTML ?? ''`, false), + false + ) + ); + } + } + if (needTagForRuntime) { + propsExp.arguments.push(`"${node.tag}"`); + } + openTag.push(propsExp); + } + } + let dynamicClassBinding = void 0; + let staticClassBinding = void 0; + let dynamicStyleBinding = void 0; + for (let i = 0; i < node.props.length; i++) { + const prop = node.props[i]; + if (node.tag === "input" && isTrueFalseValue(prop)) { + continue; + } + if (prop.type === 7) { + if (prop.name === "html" && prop.exp) { + rawChildrenMap.set( + node, + createCompoundExpression([`(`, prop.exp, `) ?? ''`]) + ); + } else if (prop.name === "text" && prop.exp) { + node.children = [createInterpolation(prop.exp, prop.loc)]; + } else if (prop.name === "slot") { + context.onError( + createCompilerError(40, prop.loc) + ); + } else if (isTextareaWithValue(node, prop) && prop.exp) { + if (!needMergeProps) { + node.children = [createInterpolation(prop.exp, prop.loc)]; + } + } else if (!needMergeProps && prop.name !== "on") { + const directiveTransform = context.directiveTransforms[prop.name]; + if (directiveTransform) { + const { props, ssrTagParts } = directiveTransform( + prop, + node, + context + ); + if (ssrTagParts) { + openTag.push(...ssrTagParts); + } + for (let j = 0; j < props.length; j++) { + const { key, value } = props[j]; + if (isStaticExp(key)) { + let attrName = key.content; + if (attrName === "key" || attrName === "ref") { + continue; + } + if (attrName === "class") { + openTag.push( + ` class="`, + dynamicClassBinding = createCallExpression( + context.helper(SSR_RENDER_CLASS), + [value] + ), + `"` + ); + } else if (attrName === "style") { + if (dynamicStyleBinding) { + mergeCall(dynamicStyleBinding, value); + } else { + openTag.push( + ` style="`, + dynamicStyleBinding = createCallExpression( + context.helper(SSR_RENDER_STYLE), + [value] + ), + `"` + ); + } + } else { + attrName = node.tag.indexOf("-") > 0 ? attrName : propsToAttrMap[attrName] || attrName.toLowerCase(); + if (isBooleanAttr(attrName)) { + openTag.push( + createConditionalExpression( + createCallExpression( + context.helper(SSR_INCLUDE_BOOLEAN_ATTR), + [value] + ), + createSimpleExpression(" " + attrName, true), + createSimpleExpression("", true), + false + ) + ); + } else if (isSSRSafeAttrName(attrName)) { + openTag.push( + createCallExpression(context.helper(SSR_RENDER_ATTR), [ + key, + value + ]) + ); + } else { + context.onError( + createSSRCompilerError( + 65, + key.loc + ) + ); + } + } + } else { + const args = [key, value]; + if (needTagForRuntime) { + args.push(`"${node.tag}"`); + } + openTag.push( + createCallExpression( + context.helper(SSR_RENDER_DYNAMIC_ATTR), + args + ) + ); + } + } + } + } + } else { + const name = prop.name; + if (node.tag === "textarea" && name === "value" && prop.value) { + rawChildrenMap.set(node, escapeHtml(prop.value.content)); + } else if (!needMergeProps) { + if (name === "key" || name === "ref") { + continue; + } + if (name === "class" && prop.value) { + staticClassBinding = JSON.stringify(prop.value.content); + } + openTag.push( + ` ${prop.name}` + (prop.value ? `="${escapeHtml(prop.value.content)}"` : ``) + ); + } + } + } + if (dynamicClassBinding && staticClassBinding) { + mergeCall(dynamicClassBinding, staticClassBinding); + removeStaticBinding(openTag, "class"); + } + if (context.scopeId) { + openTag.push(` ${context.scopeId}`); + } + node.ssrCodegenNode = createTemplateLiteral(openTag); + }; +}; +function buildSSRProps(props, directives, context) { + let mergePropsArgs = []; + if (props) { + if (props.type === 14) { + mergePropsArgs = props.arguments; + } else { + mergePropsArgs.push(props); + } + } + if (directives.length) { + for (const dir of directives) { + mergePropsArgs.push( + createCallExpression(context.helper(SSR_GET_DIRECTIVE_PROPS), [ + `_ctx`, + ...buildDirectiveArgs(dir, context).elements + ]) + ); + } + } + return mergePropsArgs.length > 1 ? createCallExpression(context.helper(MERGE_PROPS), mergePropsArgs) : mergePropsArgs[0]; +} +function isTrueFalseValue(prop) { + if (prop.type === 7) { + return prop.name === "bind" && prop.arg && isStaticExp(prop.arg) && (prop.arg.content === "true-value" || prop.arg.content === "false-value"); + } else { + return prop.name === "true-value" || prop.name === "false-value"; + } +} +function isTextareaWithValue(node, prop) { + return !!(node.tag === "textarea" && prop.name === "bind" && isStaticArgOf(prop.arg, "value")); +} +function mergeCall(call, arg) { + const existing = call.arguments[0]; + if (existing.type === 17) { + existing.elements.push(arg); + } else { + call.arguments[0] = createArrayExpression([existing, arg]); + } +} +function removeStaticBinding(tag, binding) { + const regExp = new RegExp(`^ ${binding}=".+"$`); + const i = tag.findIndex((e) => typeof e === "string" && regExp.test(e)); + if (i > -1) { + tag.splice(i, 1); + } +} +function findVModel(node) { + return node.props.find( + (p) => p.type === 7 && p.name === "model" && p.exp + ); +} +function ssrProcessElement(node, context) { + const isVoidTag = context.options.isVoidTag || NO; + const elementsToAdd = node.ssrCodegenNode.elements; + for (let j = 0; j < elementsToAdd.length; j++) { + context.pushStringPart(elementsToAdd[j]); + } + if (context.withSlotScopeId) { + context.pushStringPart(createSimpleExpression(`_scopeId`, false)); + } + context.pushStringPart(`>`); + const rawChildren = rawChildrenMap.get(node); + if (rawChildren) { + context.pushStringPart(rawChildren); + } else if (node.children.length) { + processChildren(node, context); + } + if (!isVoidTag(node.tag)) { + context.pushStringPart(`</${node.tag}>`); + } +} + +const wipMap$2 = /* @__PURE__ */ new WeakMap(); +function ssrTransformTransitionGroup(node, context) { + return () => { + const tag = findProp(node, "tag"); + if (tag) { + const otherProps = node.props.filter((p) => p !== tag); + const { props, directives } = buildProps( + node, + context, + otherProps, + true, + false, + true + ); + let propsExp = null; + if (props || directives.length) { + propsExp = createCallExpression(context.helper(SSR_RENDER_ATTRS), [ + buildSSRProps(props, directives, context) + ]); + } + wipMap$2.set(node, { + tag, + propsExp, + scopeId: context.scopeId || null + }); + } + }; +} +function ssrProcessTransitionGroup(node, context) { + const entry = wipMap$2.get(node); + if (entry) { + const { tag, propsExp, scopeId } = entry; + if (tag.type === 7) { + context.pushStringPart(`<`); + context.pushStringPart(tag.exp); + if (propsExp) { + context.pushStringPart(propsExp); + } + if (scopeId) { + context.pushStringPart(` ${scopeId}`); + } + context.pushStringPart(`>`); + processChildren( + node, + context, + false, + /** + * TransitionGroup has the special runtime behavior of flattening and + * concatenating all children into a single fragment (in order for them to + * be patched using the same key map) so we need to account for that here + * by disabling nested fragment wrappers from being generated. + */ + true, + /** + * TransitionGroup filters out comment children at runtime and thus + * doesn't expect comments to be present during hydration. We need to + * account for that by disabling the empty comment that is otherwise + * rendered for a falsy v-if that has no v-else specified. (#6715) + */ + true + ); + context.pushStringPart(`</`); + context.pushStringPart(tag.exp); + context.pushStringPart(`>`); + } else { + context.pushStringPart(`<${tag.value.content}`); + if (propsExp) { + context.pushStringPart(propsExp); + } + if (scopeId) { + context.pushStringPart(` ${scopeId}`); + } + context.pushStringPart(`>`); + processChildren(node, context, false, true, true); + context.pushStringPart(`</${tag.value.content}>`); + } + } else { + processChildren(node, context, true, true, true); + } +} + +const wipMap$1 = /* @__PURE__ */ new WeakMap(); +function ssrTransformTransition(node, context) { + return () => { + const appear = findProp(node, "appear", false, true); + wipMap$1.set(node, !!appear); + }; +} +function ssrProcessTransition(node, context) { + node.children = node.children.filter((c) => c.type !== 3); + const appear = wipMap$1.get(node); + if (appear) { + context.pushStringPart(`<template>`); + processChildren(node, context, false, true); + context.pushStringPart(`</template>`); + } else { + processChildren(node, context, false, true); + } +} + +var __defProp$8 = Object.defineProperty; +var __defProps$7 = Object.defineProperties; +var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols; +var __hasOwnProp$8 = Object.prototype.hasOwnProperty; +var __propIsEnum$8 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$8 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$8.call(b, prop)) + __defNormalProp$8(a, prop, b[prop]); + if (__getOwnPropSymbols$8) + for (var prop of __getOwnPropSymbols$8(b)) { + if (__propIsEnum$8.call(b, prop)) + __defNormalProp$8(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b)); +const wipMap = /* @__PURE__ */ new WeakMap(); +const WIP_SLOT = Symbol(); +const componentTypeMap = /* @__PURE__ */ new WeakMap(); +const ssrTransformComponent = (node, context) => { + if (node.type !== 1 || node.tagType !== 1) { + return; + } + const component = resolveComponentType( + node, + context, + true + /* ssr */ + ); + const isDynamicComponent = isObject$2(component) && component.callee === RESOLVE_DYNAMIC_COMPONENT; + componentTypeMap.set(node, component); + if (isSymbol$1(component)) { + if (component === SUSPENSE) { + return ssrTransformSuspense(node, context); + } else if (component === TRANSITION_GROUP) { + return ssrTransformTransitionGroup(node, context); + } else if (component === TRANSITION) { + return ssrTransformTransition(node); + } + return; + } + const vnodeBranches = []; + const clonedNode = clone(node); + return function ssrPostTransformComponent() { + if (clonedNode.children.length) { + buildSlots(clonedNode, context, (props, vFor, children) => { + vnodeBranches.push( + createVNodeSlotBranch(props, vFor, children, context) + ); + return createFunctionExpression(void 0); + }); + } + let propsExp = `null`; + if (node.props.length) { + const { props, directives } = buildProps( + node, + context, + void 0, + true, + isDynamicComponent + ); + if (props || directives.length) { + propsExp = buildSSRProps(props, directives, context); + } + } + const wipEntries = []; + wipMap.set(node, wipEntries); + const buildSSRSlotFn = (props, _vForExp, children, loc) => { + const param0 = props && stringifyExpression(props) || `_`; + const fn = createFunctionExpression( + [param0, `_push`, `_parent`, `_scopeId`], + void 0, + // no return, assign body later + true, + // newline + true, + // isSlot + loc + ); + wipEntries.push({ + type: WIP_SLOT, + fn, + children, + // also collect the corresponding vnode branch built earlier + vnodeBranch: vnodeBranches[wipEntries.length] + }); + return fn; + }; + const slots = node.children.length ? buildSlots(node, context, buildSSRSlotFn).slots : `null`; + if (typeof component !== "string") { + node.ssrCodegenNode = createCallExpression( + context.helper(SSR_RENDER_VNODE), + [ + `_push`, + createCallExpression(context.helper(CREATE_VNODE), [ + component, + propsExp, + slots + ]), + `_parent` + ] + ); + } else { + node.ssrCodegenNode = createCallExpression( + context.helper(SSR_RENDER_COMPONENT), + [component, propsExp, slots, `_parent`] + ); + } + }; +}; +function ssrProcessComponent(node, context, parent) { + const component = componentTypeMap.get(node); + if (!node.ssrCodegenNode) { + if (component === TELEPORT) { + return ssrProcessTeleport(node, context); + } else if (component === SUSPENSE) { + return ssrProcessSuspense(node, context); + } else if (component === TRANSITION_GROUP) { + return ssrProcessTransitionGroup(node, context); + } else { + if (parent.type === WIP_SLOT) { + context.pushStringPart(``); + } + if (component === TRANSITION) { + return ssrProcessTransition(node, context); + } + processChildren(node, context); + } + } else { + const wipEntries = wipMap.get(node) || []; + for (let i = 0; i < wipEntries.length; i++) { + const { fn, vnodeBranch } = wipEntries[i]; + fn.body = createIfStatement( + createSimpleExpression(`_push`, false), + processChildrenAsStatement( + wipEntries[i], + context, + false, + true + ), + vnodeBranch + ); + } + if (context.withSlotScopeId) { + node.ssrCodegenNode.arguments.push(`_scopeId`); + } + if (typeof component === "string") { + context.pushStatement( + createCallExpression(`_push`, [node.ssrCodegenNode]) + ); + } else { + context.pushStatement(node.ssrCodegenNode); + } + } +} +const rawOptionsMap = /* @__PURE__ */ new WeakMap(); +const [baseNodeTransforms, baseDirectiveTransforms] = getBaseTransformPreset(true); +const vnodeNodeTransforms = [...baseNodeTransforms, ...DOMNodeTransforms]; +const vnodeDirectiveTransforms = __spreadValues$8(__spreadValues$8({}, baseDirectiveTransforms), DOMDirectiveTransforms); +function createVNodeSlotBranch(slotProps, vFor, children, parentContext) { + const rawOptions = rawOptionsMap.get(parentContext.root); + const subOptions = __spreadProps$7(__spreadValues$8({}, rawOptions), { + // overwrite with vnode-based transforms + nodeTransforms: [ + ...vnodeNodeTransforms, + ...rawOptions.nodeTransforms || [] + ], + directiveTransforms: __spreadValues$8(__spreadValues$8({}, vnodeDirectiveTransforms), rawOptions.directiveTransforms || {}) + }); + const wrapperProps = []; + if (slotProps) { + wrapperProps.push({ + type: 7, + name: "slot", + exp: slotProps, + arg: void 0, + modifiers: [], + loc: locStub + }); + } + if (vFor) { + wrapperProps.push(extend({}, vFor)); + } + const wrapperNode = { + type: 1, + ns: 0, + tag: "template", + tagType: 3, + props: wrapperProps, + children, + loc: locStub, + codegenNode: void 0 + }; + subTransform(wrapperNode, subOptions, parentContext); + return createReturnStatement(children); +} +function subTransform(node, options, parentContext) { + const childRoot = createRoot([node]); + const childContext = createTransformContext(childRoot, options); + childContext.ssr = false; + childContext.scopes = __spreadValues$8({}, parentContext.scopes); + childContext.identifiers = __spreadValues$8({}, parentContext.identifiers); + childContext.imports = parentContext.imports; + traverseNode(childRoot, childContext); + ["helpers", "components", "directives"].forEach((key) => { + childContext[key].forEach((value, helperKey) => { + if (key === "helpers") { + const parentCount = parentContext.helpers.get(helperKey); + if (parentCount === void 0) { + parentContext.helpers.set(helperKey, value); + } else { + parentContext.helpers.set(helperKey, value + parentCount); + } + } else { + parentContext[key].add(value); + } + }); + }); +} +function clone(v) { + if (isArray$3(v)) { + return v.map(clone); + } else if (isPlainObject(v)) { + const res = {}; + for (const key in v) { + res[key] = clone(v[key]); + } + return res; + } else { + return v; + } +} + +function ssrCodegenTransform(ast, options) { + const context = createSSRTransformContext(ast, options); + if (options.ssrCssVars) { + const cssContext = createTransformContext(createRoot([]), options); + const varsExp = processExpression( + createSimpleExpression(options.ssrCssVars, false), + cssContext + ); + context.body.push( + createCompoundExpression([`const _cssVars = { style: `, varsExp, `}`]) + ); + Array.from(cssContext.helpers.keys()).forEach((helper) => { + ast.helpers.add(helper); + }); + } + const isFragment = ast.children.length > 1 && ast.children.some((c) => !isText$1(c)); + processChildren(ast, context, isFragment); + ast.codegenNode = createBlockStatement(context.body); + ast.ssrHelpers = Array.from( + /* @__PURE__ */ new Set([ + ...Array.from(ast.helpers).filter((h) => h in ssrHelpers), + ...context.helpers + ]) + ); + ast.helpers = new Set(Array.from(ast.helpers).filter((h) => !(h in ssrHelpers))); +} +function createSSRTransformContext(root, options, helpers = /* @__PURE__ */ new Set(), withSlotScopeId = false) { + const body = []; + let currentString = null; + return { + root, + options, + body, + helpers, + withSlotScopeId, + onError: options.onError || ((e) => { + throw e; + }), + helper(name) { + helpers.add(name); + return name; + }, + pushStringPart(part) { + if (!currentString) { + const currentCall = createCallExpression(`_push`); + body.push(currentCall); + currentString = createTemplateLiteral([]); + currentCall.arguments.push(currentString); + } + const bufferedElements = currentString.elements; + const lastItem = bufferedElements[bufferedElements.length - 1]; + if (isString$1(part) && isString$1(lastItem)) { + bufferedElements[bufferedElements.length - 1] += part; + } else { + bufferedElements.push(part); + } + }, + pushStatement(statement) { + currentString = null; + body.push(statement); + } + }; +} +function createChildContext(parent, withSlotScopeId = parent.withSlotScopeId) { + return createSSRTransformContext( + parent.root, + parent.options, + parent.helpers, + withSlotScopeId + ); +} +function processChildren(parent, context, asFragment = false, disableNestedFragments = false, disableComment = false) { + if (asFragment) { + context.pushStringPart(`<!--[-->`); + } + const { children } = parent; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1: + switch (child.tagType) { + case 0: + ssrProcessElement(child, context); + break; + case 1: + ssrProcessComponent(child, context, parent); + break; + case 2: + ssrProcessSlotOutlet(child, context); + break; + case 3: + break; + default: + context.onError( + createSSRCompilerError( + 67, + child.loc + ) + ); + const exhaustiveCheck2 = child; + return exhaustiveCheck2; + } + break; + case 2: + context.pushStringPart(escapeHtml(child.content)); + break; + case 3: + if (!disableComment) { + context.pushStringPart(`<!--${child.content}-->`); + } + break; + case 5: + context.pushStringPart( + createCallExpression(context.helper(SSR_INTERPOLATE), [ + child.content + ]) + ); + break; + case 9: + ssrProcessIf(child, context, disableNestedFragments, disableComment); + break; + case 11: + ssrProcessFor(child, context, disableNestedFragments); + break; + case 10: + break; + case 12: + case 8: + break; + default: + context.onError( + createSSRCompilerError( + 67, + child.loc + ) + ); + const exhaustiveCheck = child; + return exhaustiveCheck; + } + } + if (asFragment) { + context.pushStringPart(`<!--]-->`); + } +} +function processChildrenAsStatement(parent, parentContext, asFragment = false, withSlotScopeId = parentContext.withSlotScopeId) { + const childContext = createChildContext(parentContext, withSlotScopeId); + processChildren(parent, childContext, asFragment); + return createBlockStatement(childContext.body); +} + +const ssrTransformModel = (dir, node, context) => { + const model = dir.exp; + function checkDuplicatedValue() { + const value = findProp(node, "value"); + if (value) { + context.onError( + createDOMCompilerError( + 60, + value.loc + ) + ); + } + } + const processSelectChildren = (children) => { + children.forEach((child) => { + if (child.type === 1) { + processOption(child); + } else if (child.type === 11) { + processSelectChildren(child.children); + } else if (child.type === 9) { + child.branches.forEach((b) => processSelectChildren(b.children)); + } + }); + }; + function processOption(plainNode) { + if (plainNode.tag === "option") { + if (plainNode.props.findIndex((p) => p.name === "selected") === -1) { + const value = findValueBinding(plainNode); + plainNode.ssrCodegenNode.elements.push( + createConditionalExpression( + createCallExpression(context.helper(SSR_INCLUDE_BOOLEAN_ATTR), [ + createConditionalExpression( + createCallExpression(`Array.isArray`, [model]), + createCallExpression(context.helper(SSR_LOOSE_CONTAIN), [ + model, + value + ]), + createCallExpression(context.helper(SSR_LOOSE_EQUAL), [ + model, + value + ]) + ) + ]), + createSimpleExpression(" selected", true), + createSimpleExpression("", true), + false + ) + ); + } + } else if (plainNode.tag === "optgroup") { + processSelectChildren(plainNode.children); + } + } + if (node.tagType === 0) { + const res = { props: [] }; + const defaultProps = [ + // default value binding for text type inputs + createObjectProperty(`value`, model) + ]; + if (node.tag === "input") { + const type = findProp(node, "type"); + if (type) { + const value = findValueBinding(node); + if (type.type === 7) { + res.ssrTagParts = [ + createCallExpression(context.helper(SSR_RENDER_DYNAMIC_MODEL), [ + type.exp, + model, + value + ]) + ]; + } else if (type.value) { + switch (type.value.content) { + case "radio": + res.props = [ + createObjectProperty( + `checked`, + createCallExpression(context.helper(SSR_LOOSE_EQUAL), [ + model, + value + ]) + ) + ]; + break; + case "checkbox": + const trueValueBinding = findProp(node, "true-value"); + if (trueValueBinding) { + const trueValue = trueValueBinding.type === 6 ? JSON.stringify(trueValueBinding.value.content) : trueValueBinding.exp; + res.props = [ + createObjectProperty( + `checked`, + createCallExpression(context.helper(SSR_LOOSE_EQUAL), [ + model, + trueValue + ]) + ) + ]; + } else { + res.props = [ + createObjectProperty( + `checked`, + createConditionalExpression( + createCallExpression(`Array.isArray`, [model]), + createCallExpression(context.helper(SSR_LOOSE_CONTAIN), [ + model, + value + ]), + model + ) + ) + ]; + } + break; + case "file": + context.onError( + createDOMCompilerError( + 59, + dir.loc + ) + ); + break; + default: + checkDuplicatedValue(); + res.props = defaultProps; + break; + } + } + } else if (hasDynamicKeyVBind(node)) ; else { + checkDuplicatedValue(); + res.props = defaultProps; + } + } else if (node.tag === "textarea") { + checkDuplicatedValue(); + node.children = [createInterpolation(model, model.loc)]; + } else if (node.tag === "select") { + processSelectChildren(node.children); + } else { + context.onError( + createDOMCompilerError( + 57, + dir.loc + ) + ); + } + return res; + } else { + return transformModel$1(dir, node, context); + } +}; +function findValueBinding(node) { + const valueBinding = findProp(node, "value"); + return valueBinding ? valueBinding.type === 7 ? valueBinding.exp : createSimpleExpression(valueBinding.value.content, true) : createSimpleExpression(`null`, false); +} + +const ssrTransformShow = (dir, node, context) => { + if (!dir.exp) { + context.onError( + createDOMCompilerError(61) + ); + } + return { + props: [ + createObjectProperty( + `style`, + createConditionalExpression( + dir.exp, + createSimpleExpression(`null`, false), + createObjectExpression([ + createObjectProperty( + `display`, + createSimpleExpression(`none`, true) + ) + ]), + false + ) + ) + ] + }; +}; + +const filterChild = (node) => node.children.filter((n) => n.type !== 3); +const hasSingleChild = (node) => filterChild(node).length === 1; +const ssrInjectFallthroughAttrs = (node, context) => { + if (node.type === 0) { + context.identifiers._attrs = 1; + } + if (node.type === 1 && node.tagType === 1 && (node.tag === "transition" || node.tag === "Transition" || node.tag === "KeepAlive" || node.tag === "keep-alive")) { + const rootChildren = filterChild(context.root); + if (rootChildren.length === 1 && rootChildren[0] === node) { + if (hasSingleChild(node)) { + injectFallthroughAttrs(node.children[0]); + } + return; + } + } + const parent = context.parent; + if (!parent || parent.type !== 0) { + return; + } + if (node.type === 10 && hasSingleChild(node)) { + let hasEncounteredIf = false; + for (const c of filterChild(parent)) { + if (c.type === 9 || c.type === 1 && findDir(c, "if")) { + if (hasEncounteredIf) return; + hasEncounteredIf = true; + } else if ( + // node before v-if + !hasEncounteredIf || // non else nodes + !(c.type === 1 && findDir(c, /else/, true)) + ) { + return; + } + } + injectFallthroughAttrs(node.children[0]); + } else if (hasSingleChild(parent)) { + injectFallthroughAttrs(node); + } +}; +function injectFallthroughAttrs(node) { + if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !findDir(node, "for")) { + node.props.push({ + type: 7, + name: "bind", + arg: void 0, + exp: createSimpleExpression(`_attrs`, false), + modifiers: [], + loc: locStub + }); + } +} + +const ssrInjectCssVars = (node, context) => { + if (!context.ssrCssVars) { + return; + } + if (node.type === 0) { + context.identifiers._cssVars = 1; + } + const parent = context.parent; + if (!parent || parent.type !== 0) { + return; + } + if (node.type === 10) { + for (const child of node.children) { + injectCssVars(child); + } + } else { + injectCssVars(node); + } +}; +function injectCssVars(node) { + if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !findDir(node, "for")) { + if (node.tag === "suspense" || node.tag === "Suspense") { + for (const child of node.children) { + if (child.type === 1 && child.tagType === 3) { + child.children.forEach(injectCssVars); + } else { + injectCssVars(child); + } + } + } else { + node.props.push({ + type: 7, + name: "bind", + arg: void 0, + exp: createSimpleExpression(`_cssVars`, false), + modifiers: [], + loc: locStub + }); + } + } +} + +var __defProp$7 = Object.defineProperty; +var __defProps$6 = Object.defineProperties; +var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols; +var __hasOwnProp$7 = Object.prototype.hasOwnProperty; +var __propIsEnum$7 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$7 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$7.call(b, prop)) + __defNormalProp$7(a, prop, b[prop]); + if (__getOwnPropSymbols$7) + for (var prop of __getOwnPropSymbols$7(b)) { + if (__propIsEnum$7.call(b, prop)) + __defNormalProp$7(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b)); +function compile(source, options = {}) { + options = __spreadProps$6(__spreadValues$7(__spreadValues$7({}, options), parserOptions), { + ssr: true, + inSSR: true, + scopeId: options.mode === "function" ? null : options.scopeId, + // always prefix since compiler-ssr doesn't have size concern + prefixIdentifiers: true, + // disable optimizations that are unnecessary for ssr + cacheHandlers: false, + hoistStatic: false + }); + const ast = typeof source === "string" ? baseParse(source, options) : source; + rawOptionsMap.set(ast, options); + transform(ast, __spreadProps$6(__spreadValues$7({}, options), { + hoistStatic: false, + nodeTransforms: [ + ssrTransformIf, + ssrTransformFor, + trackVForSlotScopes, + transformExpression, + ssrTransformSlotOutlet, + ssrInjectFallthroughAttrs, + ssrInjectCssVars, + ssrTransformElement, + ssrTransformComponent, + trackSlotScopes, + transformStyle, + ...options.nodeTransforms || [] + // user transforms + ], + directiveTransforms: __spreadValues$7({ + // reusing core v-bind + bind: transformBind, + on: transformOn$1, + // model and show have dedicated SSR handling + model: ssrTransformModel, + show: ssrTransformShow, + // the following are ignored during SSR + // on: noopDirectiveTransform, + cloak: noopDirectiveTransform, + once: noopDirectiveTransform, + memo: noopDirectiveTransform + }, options.directiveTransforms || {}) + })); + ssrCodegenTransform(ast, options); + return generate(ast, options); +} + +var CompilerSSR = /*#__PURE__*/Object.freeze({ + __proto__: null, + compile: compile +}); + +var _polyfillNode_fs = {}; + +var _polyfillNode_fs$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + default: _polyfillNode_fs +}); + +var require$$0$1 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_fs$1); + +var require$$1 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_path); + +var require$$0 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_util$1); + +const hasWarned = {}; +function warnOnce$1(msg) { + const isNodeProd = typeof process !== "undefined" && process.env.NODE_ENV === "production"; + if (!isNodeProd && true && !hasWarned[msg]) { + hasWarned[msg] = true; + warn(msg); + } +} +function warn(msg) { + console.warn( + `\x1B[1m\x1B[33m[@vue/compiler-sfc]\x1B[0m\x1B[33m ${msg}\x1B[0m +` + ); +} + +var __defProp$6 = Object.defineProperty; +var __defProps$5 = Object.defineProperties; +var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols; +var __hasOwnProp$6 = Object.prototype.hasOwnProperty; +var __propIsEnum$6 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$6 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$6.call(b, prop)) + __defNormalProp$6(a, prop, b[prop]); + if (__getOwnPropSymbols$6) + for (var prop of __getOwnPropSymbols$6(b)) { + if (__propIsEnum$6.call(b, prop)) + __defNormalProp$6(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b)); +function preprocess$1({ source, filename, preprocessOptions }, preprocessor) { + let res = ""; + let err = null; + preprocessor.render( + source, + __spreadValues$6({ filename }, preprocessOptions), + (_err, _res) => { + if (_err) err = _err; + res = _res; + } + ); + if (err) throw err; + return res; +} +function compileTemplate(options) { + const { preprocessLang, preprocessCustomRequire } = options; + if (preprocessLang && !preprocessCustomRequire) { + throw new Error( + `[@vue/compiler-sfc] Template preprocessing in the browser build must provide the \`preprocessCustomRequire\` option to return the in-browser version of the preprocessor in the shape of { render(): string }.` + ); + } + const preprocessor = preprocessLang ? preprocessCustomRequire ? preprocessCustomRequire(preprocessLang) : void 0 : false; + if (preprocessor) { + try { + return doCompileTemplate(__spreadProps$5(__spreadValues$6({}, options), { + source: preprocess$1(options, preprocessor), + ast: void 0 + // invalidate AST if template goes through preprocessor + })); + } catch (e) { + return { + code: `export default function render() {}`, + source: options.source, + tips: [], + errors: [e] + }; + } + } else if (preprocessLang) { + return { + code: `export default function render() {}`, + source: options.source, + tips: [ + `Component ${options.filename} uses lang ${preprocessLang} for template. Please install the language preprocessor.` + ], + errors: [ + `Component ${options.filename} uses lang ${preprocessLang} for template, however it is not installed.` + ] + }; + } else { + return doCompileTemplate(options); + } +} +function doCompileTemplate({ + filename, + id, + scoped, + slotted, + inMap, + source, + ast: inAST, + ssr = false, + ssrCssVars, + isProd = false, + compiler, + compilerOptions = {}, + transformAssetUrls +}) { + const errors = []; + const warnings = []; + let nodeTransforms = []; + if (isObject$2(transformAssetUrls)) { + const assetOptions = normalizeOptions(transformAssetUrls); + nodeTransforms = [ + createAssetUrlTransformWithOptions(assetOptions), + createSrcsetTransformWithOptions(assetOptions) + ]; + } else if (transformAssetUrls !== false) { + nodeTransforms = [transformAssetUrl, transformSrcset]; + } + if (ssr && !ssrCssVars) { + warnOnce$1( + `compileTemplate is called with \`ssr: true\` but no corresponding \`cssVars\` option.` + ); + } + if (!id) { + warnOnce$1(`compileTemplate now requires the \`id\` option.`); + id = ""; + } + const shortId = id.replace(/^data-v-/, ""); + const longId = `data-v-${shortId}`; + const defaultCompiler = ssr ? CompilerSSR : CompilerDOM; + compiler = compiler || defaultCompiler; + if (compiler !== defaultCompiler) { + inAST = void 0; + } + if (inAST == null ? void 0 : inAST.transformed) { + const newAST = (ssr ? CompilerDOM : compiler).parse(inAST.source, __spreadProps$5(__spreadValues$6({ + prefixIdentifiers: true + }, compilerOptions), { + parseMode: "sfc", + onError: (e) => errors.push(e) + })); + const template = newAST.children.find( + (node) => node.type === 1 && node.tag === "template" + ); + inAST = createRoot(template.children, inAST.source); + } + let { code, ast, preamble, map } = compiler.compile(inAST || source, __spreadProps$5(__spreadValues$6({ + mode: "module", + prefixIdentifiers: true, + hoistStatic: true, + cacheHandlers: true, + ssrCssVars: ssr && ssrCssVars && ssrCssVars.length ? genCssVarsFromList(ssrCssVars, shortId, isProd, true) : "", + scopeId: scoped ? longId : void 0, + slotted, + sourceMap: true + }, compilerOptions), { + hmr: !isProd, + nodeTransforms: nodeTransforms.concat(compilerOptions.nodeTransforms || []), + filename, + onError: (e) => errors.push(e), + onWarn: (w) => warnings.push(w) + })); + if (inMap && !inAST) { + if (map) { + map = mapLines(inMap, map); + } + if (errors.length) { + patchErrors(errors, source, inMap); + } + } + const tips = warnings.map((w) => { + let msg = w.message; + if (w.loc) { + msg += ` +${generateCodeFrame( + (inAST == null ? void 0 : inAST.source) || source, + w.loc.start.offset, + w.loc.end.offset + )}`; + } + return msg; + }); + return { code, ast, preamble, source, errors, tips, map }; +} +function mapLines(oldMap, newMap) { + if (!oldMap) return newMap; + if (!newMap) return oldMap; + const oldMapConsumer = new sourceMapExports.SourceMapConsumer(oldMap); + const newMapConsumer = new sourceMapExports.SourceMapConsumer(newMap); + const mergedMapGenerator = new sourceMapExports.SourceMapGenerator(); + newMapConsumer.eachMapping((m) => { + if (m.originalLine == null) { + return; + } + const origPosInOldMap = oldMapConsumer.originalPositionFor({ + line: m.originalLine, + column: m.originalColumn + }); + if (origPosInOldMap.source == null) { + return; + } + mergedMapGenerator.addMapping({ + generated: { + line: m.generatedLine, + column: m.generatedColumn + }, + original: { + line: origPosInOldMap.line, + // map line + // use current column, since the oldMap produced by @vue/compiler-sfc + // does not + column: m.originalColumn + }, + source: origPosInOldMap.source, + name: origPosInOldMap.name + }); + }); + const generator = mergedMapGenerator; + oldMapConsumer.sources.forEach((sourceFile) => { + generator._sources.add(sourceFile); + const sourceContent = oldMapConsumer.sourceContentFor(sourceFile); + if (sourceContent != null) { + mergedMapGenerator.setSourceContent(sourceFile, sourceContent); + } + }); + generator._sourceRoot = oldMap.sourceRoot; + generator._file = oldMap.file; + return generator.toJSON(); +} +function patchErrors(errors, source, inMap) { + const originalSource = inMap.sourcesContent[0]; + const offset = originalSource.indexOf(source); + const lineOffset = originalSource.slice(0, offset).split(/\r?\n/).length - 1; + errors.forEach((err) => { + if (err.loc) { + err.loc.start.line += lineOffset; + err.loc.start.offset += offset; + if (err.loc.end !== err.loc.start) { + err.loc.end.line += lineOffset; + err.loc.end.offset += offset; + } + } + }); +} + +var picocolors = {exports: {}}; + +var hasRequiredPicocolors; + +function requirePicocolors () { + if (hasRequiredPicocolors) return picocolors.exports; + hasRequiredPicocolors = 1; + let p = browser$1 || {}, argv = p.argv || [], env = p.env || {}; + let isColorSupported = + !(!!env.NO_COLOR || argv.includes("--no-color")) && + (!!env.FORCE_COLOR || argv.includes("--color") || p.platform === "win32" || ((p.stdout || {}).isTTY && env.TERM !== "dumb") || !!env.CI); + + let formatter = (open, close, replace = open) => + input => { + let string = "" + input, index = string.indexOf(close, open.length); + return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close + }; + + let replaceClose = (string, close, replace, index) => { + let result = "", cursor = 0; + do { + result += string.substring(cursor, index) + replace; + cursor = index + close.length; + index = string.indexOf(close, cursor); + } while (~index) + return result + string.substring(cursor) + }; + + let createColors = (enabled = isColorSupported) => { + let f = enabled ? formatter : () => String; + return { + isColorSupported: enabled, + reset: f("\x1b[0m", "\x1b[0m"), + bold: f("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m"), + dim: f("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m"), + italic: f("\x1b[3m", "\x1b[23m"), + underline: f("\x1b[4m", "\x1b[24m"), + inverse: f("\x1b[7m", "\x1b[27m"), + hidden: f("\x1b[8m", "\x1b[28m"), + strikethrough: f("\x1b[9m", "\x1b[29m"), + + black: f("\x1b[30m", "\x1b[39m"), + red: f("\x1b[31m", "\x1b[39m"), + green: f("\x1b[32m", "\x1b[39m"), + yellow: f("\x1b[33m", "\x1b[39m"), + blue: f("\x1b[34m", "\x1b[39m"), + magenta: f("\x1b[35m", "\x1b[39m"), + cyan: f("\x1b[36m", "\x1b[39m"), + white: f("\x1b[37m", "\x1b[39m"), + gray: f("\x1b[90m", "\x1b[39m"), + + bgBlack: f("\x1b[40m", "\x1b[49m"), + bgRed: f("\x1b[41m", "\x1b[49m"), + bgGreen: f("\x1b[42m", "\x1b[49m"), + bgYellow: f("\x1b[43m", "\x1b[49m"), + bgBlue: f("\x1b[44m", "\x1b[49m"), + bgMagenta: f("\x1b[45m", "\x1b[49m"), + bgCyan: f("\x1b[46m", "\x1b[49m"), + bgWhite: f("\x1b[47m", "\x1b[49m"), + + blackBright: f("\x1b[90m", "\x1b[39m"), + redBright: f("\x1b[91m", "\x1b[39m"), + greenBright: f("\x1b[92m", "\x1b[39m"), + yellowBright: f("\x1b[93m", "\x1b[39m"), + blueBright: f("\x1b[94m", "\x1b[39m"), + magentaBright: f("\x1b[95m", "\x1b[39m"), + cyanBright: f("\x1b[96m", "\x1b[39m"), + whiteBright: f("\x1b[97m", "\x1b[39m"), + + bgBlackBright: f("\x1b[100m", "\x1b[49m"), + bgRedBright: f("\x1b[101m", "\x1b[49m"), + bgGreenBright: f("\x1b[102m", "\x1b[49m"), + bgYellowBright: f("\x1b[103m", "\x1b[49m"), + bgBlueBright: f("\x1b[104m", "\x1b[49m"), + bgMagentaBright: f("\x1b[105m", "\x1b[49m"), + bgCyanBright: f("\x1b[106m", "\x1b[49m"), + bgWhiteBright: f("\x1b[107m", "\x1b[49m"), + } + }; + + picocolors.exports = createColors(); + picocolors.exports.createColors = createColors; + return picocolors.exports; +} + +var tokenize$1; +var hasRequiredTokenize$1; + +function requireTokenize$1 () { + if (hasRequiredTokenize$1) return tokenize$1; + hasRequiredTokenize$1 = 1; + + const SINGLE_QUOTE = "'".charCodeAt(0); + const DOUBLE_QUOTE = '"'.charCodeAt(0); + const BACKSLASH = '\\'.charCodeAt(0); + const SLASH = '/'.charCodeAt(0); + const NEWLINE = '\n'.charCodeAt(0); + const SPACE = ' '.charCodeAt(0); + const FEED = '\f'.charCodeAt(0); + const TAB = '\t'.charCodeAt(0); + const CR = '\r'.charCodeAt(0); + const OPEN_SQUARE = '['.charCodeAt(0); + const CLOSE_SQUARE = ']'.charCodeAt(0); + const OPEN_PARENTHESES = '('.charCodeAt(0); + const CLOSE_PARENTHESES = ')'.charCodeAt(0); + const OPEN_CURLY = '{'.charCodeAt(0); + const CLOSE_CURLY = '}'.charCodeAt(0); + const SEMICOLON = ';'.charCodeAt(0); + const ASTERISK = '*'.charCodeAt(0); + const COLON = ':'.charCodeAt(0); + const AT = '@'.charCodeAt(0); + + const RE_AT_END = /[\t\n\f\r "#'()/;[\\\]{}]/g; + const RE_WORD_END = /[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g; + const RE_BAD_BRACKET = /.[\r\n"'(/\\]/; + const RE_HEX_ESCAPE = /[\da-f]/i; + + tokenize$1 = function tokenizer(input, options = {}) { + let css = input.css.valueOf(); + let ignore = options.ignoreErrors; + + let code, content, escape, next, quote; + let currentToken, escaped, escapePos, n, prev; + + let length = css.length; + let pos = 0; + let buffer = []; + let returned = []; + + function position() { + return pos + } + + function unclosed(what) { + throw input.error('Unclosed ' + what, pos) + } + + function endOfFile() { + return returned.length === 0 && pos >= length + } + + function nextToken(opts) { + if (returned.length) return returned.pop() + if (pos >= length) return + + let ignoreUnclosed = opts ? opts.ignoreUnclosed : false; + + code = css.charCodeAt(pos); + + switch (code) { + case NEWLINE: + case SPACE: + case TAB: + case CR: + case FEED: { + next = pos; + do { + next += 1; + code = css.charCodeAt(next); + } while ( + code === SPACE || + code === NEWLINE || + code === TAB || + code === CR || + code === FEED + ) + + currentToken = ['space', css.slice(pos, next)]; + pos = next - 1; + break + } + + case OPEN_SQUARE: + case CLOSE_SQUARE: + case OPEN_CURLY: + case CLOSE_CURLY: + case COLON: + case SEMICOLON: + case CLOSE_PARENTHESES: { + let controlChar = String.fromCharCode(code); + currentToken = [controlChar, controlChar, pos]; + break + } + + case OPEN_PARENTHESES: { + prev = buffer.length ? buffer.pop()[1] : ''; + n = css.charCodeAt(pos + 1); + if ( + prev === 'url' && + n !== SINGLE_QUOTE && + n !== DOUBLE_QUOTE && + n !== SPACE && + n !== NEWLINE && + n !== TAB && + n !== FEED && + n !== CR + ) { + next = pos; + do { + escaped = false; + next = css.indexOf(')', next + 1); + if (next === -1) { + if (ignore || ignoreUnclosed) { + next = pos; + break + } else { + unclosed('bracket'); + } + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === BACKSLASH) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped) + + currentToken = ['brackets', css.slice(pos, next + 1), pos, next]; + + pos = next; + } else { + next = css.indexOf(')', pos + 1); + content = css.slice(pos, next + 1); + + if (next === -1 || RE_BAD_BRACKET.test(content)) { + currentToken = ['(', '(', pos]; + } else { + currentToken = ['brackets', content, pos, next]; + pos = next; + } + } + + break + } + + case SINGLE_QUOTE: + case DOUBLE_QUOTE: { + quote = code === SINGLE_QUOTE ? "'" : '"'; + next = pos; + do { + escaped = false; + next = css.indexOf(quote, next + 1); + if (next === -1) { + if (ignore || ignoreUnclosed) { + next = pos + 1; + break + } else { + unclosed('string'); + } + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === BACKSLASH) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped) + + currentToken = ['string', css.slice(pos, next + 1), pos, next]; + pos = next; + break + } + + case AT: { + RE_AT_END.lastIndex = pos + 1; + RE_AT_END.test(css); + if (RE_AT_END.lastIndex === 0) { + next = css.length - 1; + } else { + next = RE_AT_END.lastIndex - 2; + } + + currentToken = ['at-word', css.slice(pos, next + 1), pos, next]; + + pos = next; + break + } + + case BACKSLASH: { + next = pos; + escape = true; + while (css.charCodeAt(next + 1) === BACKSLASH) { + next += 1; + escape = !escape; + } + code = css.charCodeAt(next + 1); + if ( + escape && + code !== SLASH && + code !== SPACE && + code !== NEWLINE && + code !== TAB && + code !== CR && + code !== FEED + ) { + next += 1; + if (RE_HEX_ESCAPE.test(css.charAt(next))) { + while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) { + next += 1; + } + if (css.charCodeAt(next + 1) === SPACE) { + next += 1; + } + } + } + + currentToken = ['word', css.slice(pos, next + 1), pos, next]; + + pos = next; + break + } + + default: { + if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) { + next = css.indexOf('*/', pos + 2) + 1; + if (next === 0) { + if (ignore || ignoreUnclosed) { + next = css.length; + } else { + unclosed('comment'); + } + } + + currentToken = ['comment', css.slice(pos, next + 1), pos, next]; + pos = next; + } else { + RE_WORD_END.lastIndex = pos + 1; + RE_WORD_END.test(css); + if (RE_WORD_END.lastIndex === 0) { + next = css.length - 1; + } else { + next = RE_WORD_END.lastIndex - 2; + } + + currentToken = ['word', css.slice(pos, next + 1), pos, next]; + buffer.push(currentToken); + pos = next; + } + + break + } + } + + pos++; + return currentToken + } + + function back(token) { + returned.push(token); + } + + return { + back, + endOfFile, + nextToken, + position + } + }; + return tokenize$1; +} + +var terminalHighlight_1; +var hasRequiredTerminalHighlight; + +function requireTerminalHighlight () { + if (hasRequiredTerminalHighlight) return terminalHighlight_1; + hasRequiredTerminalHighlight = 1; + + let pico = /*@__PURE__*/ requirePicocolors(); + + let tokenizer = /*@__PURE__*/ requireTokenize$1(); + + let Input; + + function registerInput(dependant) { + Input = dependant; + } + + const HIGHLIGHT_THEME = { + ';': pico.yellow, + ':': pico.yellow, + '(': pico.cyan, + ')': pico.cyan, + '[': pico.yellow, + ']': pico.yellow, + '{': pico.yellow, + '}': pico.yellow, + 'at-word': pico.cyan, + 'brackets': pico.cyan, + 'call': pico.cyan, + 'class': pico.yellow, + 'comment': pico.gray, + 'hash': pico.magenta, + 'string': pico.green + }; + + function getTokenType([type, value], processor) { + if (type === 'word') { + if (value[0] === '.') { + return 'class' + } + if (value[0] === '#') { + return 'hash' + } + } + + if (!processor.endOfFile()) { + let next = processor.nextToken(); + processor.back(next); + if (next[0] === 'brackets' || next[0] === '(') return 'call' + } + + return type + } + + function terminalHighlight(css) { + let processor = tokenizer(new Input(css), { ignoreErrors: true }); + let result = ''; + while (!processor.endOfFile()) { + let token = processor.nextToken(); + let color = HIGHLIGHT_THEME[getTokenType(token, processor)]; + if (color) { + result += token[1] + .split(/\r?\n/) + .map(i => color(i)) + .join('\n'); + } else { + result += token[1]; + } + } + return result + } + + terminalHighlight.registerInput = registerInput; + + terminalHighlight_1 = terminalHighlight; + return terminalHighlight_1; +} + +var cssSyntaxError; +var hasRequiredCssSyntaxError; + +function requireCssSyntaxError () { + if (hasRequiredCssSyntaxError) return cssSyntaxError; + hasRequiredCssSyntaxError = 1; + + let pico = /*@__PURE__*/ requirePicocolors(); + + let terminalHighlight = /*@__PURE__*/ requireTerminalHighlight(); + + class CssSyntaxError extends Error { + constructor(message, line, column, source, file, plugin) { + super(message); + this.name = 'CssSyntaxError'; + this.reason = message; + + if (file) { + this.file = file; + } + if (source) { + this.source = source; + } + if (plugin) { + this.plugin = plugin; + } + if (typeof line !== 'undefined' && typeof column !== 'undefined') { + if (typeof line === 'number') { + this.line = line; + this.column = column; + } else { + this.line = line.line; + this.column = line.column; + this.endLine = column.line; + this.endColumn = column.column; + } + } + + this.setMessage(); + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, CssSyntaxError); + } + } + + setMessage() { + this.message = this.plugin ? this.plugin + ': ' : ''; + this.message += this.file ? this.file : '<css input>'; + if (typeof this.line !== 'undefined') { + this.message += ':' + this.line + ':' + this.column; + } + this.message += ': ' + this.reason; + } + + showSourceCode(color) { + if (!this.source) return '' + + let css = this.source; + if (color == null) color = pico.isColorSupported; + + let aside = text => text; + let mark = text => text; + let highlight = text => text; + if (color) { + let { bold, gray, red } = pico.createColors(true); + mark = text => bold(red(text)); + aside = text => gray(text); + if (terminalHighlight) { + highlight = text => terminalHighlight(text); + } + } + + let lines = css.split(/\r?\n/); + let start = Math.max(this.line - 3, 0); + let end = Math.min(this.line + 2, lines.length); + let maxWidth = String(end).length; + + return lines + .slice(start, end) + .map((line, index) => { + let number = start + 1 + index; + let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '; + if (number === this.line) { + if (line.length > 160) { + let padding = 20; + let subLineStart = Math.max(0, this.column - padding); + let subLineEnd = Math.max( + this.column + padding, + this.endColumn + padding + ); + let subLine = line.slice(subLineStart, subLineEnd); + + let spacing = + aside(gutter.replace(/\d/g, ' ')) + + line + .slice(0, Math.min(this.column - 1, padding - 1)) + .replace(/[^\t]/g, ' '); + + return ( + mark('>') + + aside(gutter) + + highlight(subLine) + + '\n ' + + spacing + + mark('^') + ) + } + + let spacing = + aside(gutter.replace(/\d/g, ' ')) + + line.slice(0, this.column - 1).replace(/[^\t]/g, ' '); + + return ( + mark('>') + + aside(gutter) + + highlight(line) + + '\n ' + + spacing + + mark('^') + ) + } + + return ' ' + aside(gutter) + highlight(line) + }) + .join('\n') + } + + toString() { + let code = this.showSourceCode(); + if (code) { + code = '\n\n' + code + '\n'; + } + return this.name + ': ' + this.message + code + } + } + + cssSyntaxError = CssSyntaxError; + CssSyntaxError.default = CssSyntaxError; + return cssSyntaxError; +} + +var stringifier; +var hasRequiredStringifier; + +function requireStringifier () { + if (hasRequiredStringifier) return stringifier; + hasRequiredStringifier = 1; + + const DEFAULT_RAW = { + after: '\n', + beforeClose: '\n', + beforeComment: '\n', + beforeDecl: '\n', + beforeOpen: ' ', + beforeRule: '\n', + colon: ': ', + commentLeft: ' ', + commentRight: ' ', + emptyBody: '', + indent: ' ', + semicolon: false + }; + + function capitalize(str) { + return str[0].toUpperCase() + str.slice(1) + } + + class Stringifier { + constructor(builder) { + this.builder = builder; + } + + atrule(node, semicolon) { + let name = '@' + node.name; + let params = node.params ? this.rawValue(node, 'params') : ''; + + if (typeof node.raws.afterName !== 'undefined') { + name += node.raws.afterName; + } else if (params) { + name += ' '; + } + + if (node.nodes) { + this.block(node, name + params); + } else { + let end = (node.raws.between || '') + (semicolon ? ';' : ''); + this.builder(name + params + end, node); + } + } + + beforeAfter(node, detect) { + let value; + if (node.type === 'decl') { + value = this.raw(node, null, 'beforeDecl'); + } else if (node.type === 'comment') { + value = this.raw(node, null, 'beforeComment'); + } else if (detect === 'before') { + value = this.raw(node, null, 'beforeRule'); + } else { + value = this.raw(node, null, 'beforeClose'); + } + + let buf = node.parent; + let depth = 0; + while (buf && buf.type !== 'root') { + depth += 1; + buf = buf.parent; + } + + if (value.includes('\n')) { + let indent = this.raw(node, null, 'indent'); + if (indent.length) { + for (let step = 0; step < depth; step++) value += indent; + } + } + + return value + } + + block(node, start) { + let between = this.raw(node, 'between', 'beforeOpen'); + this.builder(start + between + '{', node, 'start'); + + let after; + if (node.nodes && node.nodes.length) { + this.body(node); + after = this.raw(node, 'after'); + } else { + after = this.raw(node, 'after', 'emptyBody'); + } + + if (after) this.builder(after); + this.builder('}', node, 'end'); + } + + body(node) { + let last = node.nodes.length - 1; + while (last > 0) { + if (node.nodes[last].type !== 'comment') break + last -= 1; + } + + let semicolon = this.raw(node, 'semicolon'); + for (let i = 0; i < node.nodes.length; i++) { + let child = node.nodes[i]; + let before = this.raw(child, 'before'); + if (before) this.builder(before); + this.stringify(child, last !== i || semicolon); + } + } + + comment(node) { + let left = this.raw(node, 'left', 'commentLeft'); + let right = this.raw(node, 'right', 'commentRight'); + this.builder('/*' + left + node.text + right + '*/', node); + } + + decl(node, semicolon) { + let between = this.raw(node, 'between', 'colon'); + let string = node.prop + between + this.rawValue(node, 'value'); + + if (node.important) { + string += node.raws.important || ' !important'; + } + + if (semicolon) string += ';'; + this.builder(string, node); + } + + document(node) { + this.body(node); + } + + raw(node, own, detect) { + let value; + if (!detect) detect = own; + + // Already had + if (own) { + value = node.raws[own]; + if (typeof value !== 'undefined') return value + } + + let parent = node.parent; + + if (detect === 'before') { + // Hack for first rule in CSS + if (!parent || (parent.type === 'root' && parent.first === node)) { + return '' + } + + // `root` nodes in `document` should use only their own raws + if (parent && parent.type === 'document') { + return '' + } + } + + // Floating child without parent + if (!parent) return DEFAULT_RAW[detect] + + // Detect style by other nodes + let root = node.root(); + if (!root.rawCache) root.rawCache = {}; + if (typeof root.rawCache[detect] !== 'undefined') { + return root.rawCache[detect] + } + + if (detect === 'before' || detect === 'after') { + return this.beforeAfter(node, detect) + } else { + let method = 'raw' + capitalize(detect); + if (this[method]) { + value = this[method](root, node); + } else { + root.walk(i => { + value = i.raws[own]; + if (typeof value !== 'undefined') return false + }); + } + } + + if (typeof value === 'undefined') value = DEFAULT_RAW[detect]; + + root.rawCache[detect] = value; + return value + } + + rawBeforeClose(root) { + let value; + root.walk(i => { + if (i.nodes && i.nodes.length > 0) { + if (typeof i.raws.after !== 'undefined') { + value = i.raws.after; + if (value.includes('\n')) { + value = value.replace(/[^\n]+$/, ''); + } + return false + } + } + }); + if (value) value = value.replace(/\S/g, ''); + return value + } + + rawBeforeComment(root, node) { + let value; + root.walkComments(i => { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before; + if (value.includes('\n')) { + value = value.replace(/[^\n]+$/, ''); + } + return false + } + }); + if (typeof value === 'undefined') { + value = this.raw(node, null, 'beforeDecl'); + } else if (value) { + value = value.replace(/\S/g, ''); + } + return value + } + + rawBeforeDecl(root, node) { + let value; + root.walkDecls(i => { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before; + if (value.includes('\n')) { + value = value.replace(/[^\n]+$/, ''); + } + return false + } + }); + if (typeof value === 'undefined') { + value = this.raw(node, null, 'beforeRule'); + } else if (value) { + value = value.replace(/\S/g, ''); + } + return value + } + + rawBeforeOpen(root) { + let value; + root.walk(i => { + if (i.type !== 'decl') { + value = i.raws.between; + if (typeof value !== 'undefined') return false + } + }); + return value + } + + rawBeforeRule(root) { + let value; + root.walk(i => { + if (i.nodes && (i.parent !== root || root.first !== i)) { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before; + if (value.includes('\n')) { + value = value.replace(/[^\n]+$/, ''); + } + return false + } + } + }); + if (value) value = value.replace(/\S/g, ''); + return value + } + + rawColon(root) { + let value; + root.walkDecls(i => { + if (typeof i.raws.between !== 'undefined') { + value = i.raws.between.replace(/[^\s:]/g, ''); + return false + } + }); + return value + } + + rawEmptyBody(root) { + let value; + root.walk(i => { + if (i.nodes && i.nodes.length === 0) { + value = i.raws.after; + if (typeof value !== 'undefined') return false + } + }); + return value + } + + rawIndent(root) { + if (root.raws.indent) return root.raws.indent + let value; + root.walk(i => { + let p = i.parent; + if (p && p !== root && p.parent && p.parent === root) { + if (typeof i.raws.before !== 'undefined') { + let parts = i.raws.before.split('\n'); + value = parts[parts.length - 1]; + value = value.replace(/\S/g, ''); + return false + } + } + }); + return value + } + + rawSemicolon(root) { + let value; + root.walk(i => { + if (i.nodes && i.nodes.length && i.last.type === 'decl') { + value = i.raws.semicolon; + if (typeof value !== 'undefined') return false + } + }); + return value + } + + rawValue(node, prop) { + let value = node[prop]; + let raw = node.raws[prop]; + if (raw && raw.value === value) { + return raw.raw + } + + return value + } + + root(node) { + this.body(node); + if (node.raws.after) this.builder(node.raws.after); + } + + rule(node) { + this.block(node, this.rawValue(node, 'selector')); + if (node.raws.ownSemicolon) { + this.builder(node.raws.ownSemicolon, node, 'end'); + } + } + + stringify(node, semicolon) { + /* c8 ignore start */ + if (!this[node.type]) { + throw new Error( + 'Unknown AST node type ' + + node.type + + '. ' + + 'Maybe you need to change PostCSS stringifier.' + ) + } + /* c8 ignore stop */ + this[node.type](node, semicolon); + } + } + + stringifier = Stringifier; + Stringifier.default = Stringifier; + return stringifier; +} + +var stringify_1; +var hasRequiredStringify; + +function requireStringify () { + if (hasRequiredStringify) return stringify_1; + hasRequiredStringify = 1; + + let Stringifier = /*@__PURE__*/ requireStringifier(); + + function stringify(node, builder) { + let str = new Stringifier(builder); + str.stringify(node); + } + + stringify_1 = stringify; + stringify.default = stringify; + return stringify_1; +} + +var symbols = {}; + +var hasRequiredSymbols; + +function requireSymbols () { + if (hasRequiredSymbols) return symbols; + hasRequiredSymbols = 1; + + symbols.isClean = Symbol('isClean'); + + symbols.my = Symbol('my'); + return symbols; +} + +var node$2; +var hasRequiredNode$2; + +function requireNode$2 () { + if (hasRequiredNode$2) return node$2; + hasRequiredNode$2 = 1; + + let CssSyntaxError = /*@__PURE__*/ requireCssSyntaxError(); + let Stringifier = /*@__PURE__*/ requireStringifier(); + let stringify = /*@__PURE__*/ requireStringify(); + let { isClean, my } = /*@__PURE__*/ requireSymbols(); + + function cloneNode(obj, parent) { + let cloned = new obj.constructor(); + + for (let i in obj) { + if (!Object.prototype.hasOwnProperty.call(obj, i)) { + /* c8 ignore next 2 */ + continue + } + if (i === 'proxyCache') continue + let value = obj[i]; + let type = typeof value; + + if (i === 'parent' && type === 'object') { + if (parent) cloned[i] = parent; + } else if (i === 'source') { + cloned[i] = value; + } else if (Array.isArray(value)) { + cloned[i] = value.map(j => cloneNode(j, cloned)); + } else { + if (type === 'object' && value !== null) value = cloneNode(value); + cloned[i] = value; + } + } + + return cloned + } + + function sourceOffset(inputCSS, position) { + // Not all custom syntaxes support `offset` in `source.start` and `source.end` + if (position && typeof position.offset !== 'undefined') { + return position.offset + } + + let column = 1; + let line = 1; + let offset = 0; + + for (let i = 0; i < inputCSS.length; i++) { + if (line === position.line && column === position.column) { + offset = i; + break + } + + if (inputCSS[i] === '\n') { + column = 1; + line += 1; + } else { + column += 1; + } + } + + return offset + } + + class Node { + get proxyOf() { + return this + } + + constructor(defaults = {}) { + this.raws = {}; + this[isClean] = false; + this[my] = true; + + for (let name in defaults) { + if (name === 'nodes') { + this.nodes = []; + for (let node of defaults[name]) { + if (typeof node.clone === 'function') { + this.append(node.clone()); + } else { + this.append(node); + } + } + } else { + this[name] = defaults[name]; + } + } + } + + addToError(error) { + error.postcssNode = this; + if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) { + let s = this.source; + error.stack = error.stack.replace( + /\n\s{4}at /, + `$&${s.input.from}:${s.start.line}:${s.start.column}$&` + ); + } + return error + } + + after(add) { + this.parent.insertAfter(this, add); + return this + } + + assign(overrides = {}) { + for (let name in overrides) { + this[name] = overrides[name]; + } + return this + } + + before(add) { + this.parent.insertBefore(this, add); + return this + } + + cleanRaws(keepBetween) { + delete this.raws.before; + delete this.raws.after; + if (!keepBetween) delete this.raws.between; + } + + clone(overrides = {}) { + let cloned = cloneNode(this); + for (let name in overrides) { + cloned[name] = overrides[name]; + } + return cloned + } + + cloneAfter(overrides = {}) { + let cloned = this.clone(overrides); + this.parent.insertAfter(this, cloned); + return cloned + } + + cloneBefore(overrides = {}) { + let cloned = this.clone(overrides); + this.parent.insertBefore(this, cloned); + return cloned + } + + error(message, opts = {}) { + if (this.source) { + let { end, start } = this.rangeBy(opts); + return this.source.input.error( + message, + { column: start.column, line: start.line }, + { column: end.column, line: end.line }, + opts + ) + } + return new CssSyntaxError(message) + } + + getProxyProcessor() { + return { + get(node, prop) { + if (prop === 'proxyOf') { + return node + } else if (prop === 'root') { + return () => node.root().toProxy() + } else { + return node[prop] + } + }, + + set(node, prop, value) { + if (node[prop] === value) return true + node[prop] = value; + if ( + prop === 'prop' || + prop === 'value' || + prop === 'name' || + prop === 'params' || + prop === 'important' || + /* c8 ignore next */ + prop === 'text' + ) { + node.markDirty(); + } + return true + } + } + } + + /* c8 ignore next 3 */ + markClean() { + this[isClean] = true; + } + + markDirty() { + if (this[isClean]) { + this[isClean] = false; + let next = this; + while ((next = next.parent)) { + next[isClean] = false; + } + } + } + + next() { + if (!this.parent) return undefined + let index = this.parent.index(this); + return this.parent.nodes[index + 1] + } + + positionBy(opts = {}) { + let pos = this.source.start; + if (opts.index) { + pos = this.positionInside(opts.index); + } else if (opts.word) { + let inputString = + 'document' in this.source.input + ? this.source.input.document + : this.source.input.css; + let stringRepresentation = inputString.slice( + sourceOffset(inputString, this.source.start), + sourceOffset(inputString, this.source.end) + ); + let index = stringRepresentation.indexOf(opts.word); + if (index !== -1) pos = this.positionInside(index); + } + return pos + } + + positionInside(index) { + let column = this.source.start.column; + let line = this.source.start.line; + let inputString = + 'document' in this.source.input + ? this.source.input.document + : this.source.input.css; + let offset = sourceOffset(inputString, this.source.start); + let end = offset + index; + + for (let i = offset; i < end; i++) { + if (inputString[i] === '\n') { + column = 1; + line += 1; + } else { + column += 1; + } + } + + return { column, line, offset: end } + } + + prev() { + if (!this.parent) return undefined + let index = this.parent.index(this); + return this.parent.nodes[index - 1] + } + + rangeBy(opts = {}) { + let inputString = + 'document' in this.source.input + ? this.source.input.document + : this.source.input.css; + let start = { + column: this.source.start.column, + line: this.source.start.line, + offset: sourceOffset(inputString, this.source.start) + }; + let end = this.source.end + ? { + column: this.source.end.column + 1, + line: this.source.end.line, + offset: + typeof this.source.end.offset === 'number' + ? // `source.end.offset` is exclusive, so we don't need to add 1 + this.source.end.offset + : // Since line/column in this.source.end is inclusive, + // the `sourceOffset(... , this.source.end)` returns an inclusive offset. + // So, we add 1 to convert it to exclusive. + sourceOffset(inputString, this.source.end) + 1 + } + : { + column: start.column + 1, + line: start.line, + offset: start.offset + 1 + }; + + if (opts.word) { + let stringRepresentation = inputString.slice( + sourceOffset(inputString, this.source.start), + sourceOffset(inputString, this.source.end) + ); + let index = stringRepresentation.indexOf(opts.word); + if (index !== -1) { + start = this.positionInside(index); + end = this.positionInside(index + opts.word.length); + } + } else { + if (opts.start) { + start = { + column: opts.start.column, + line: opts.start.line, + offset: sourceOffset(inputString, opts.start) + }; + } else if (opts.index) { + start = this.positionInside(opts.index); + } + + if (opts.end) { + end = { + column: opts.end.column, + line: opts.end.line, + offset: sourceOffset(inputString, opts.end) + }; + } else if (typeof opts.endIndex === 'number') { + end = this.positionInside(opts.endIndex); + } else if (opts.index) { + end = this.positionInside(opts.index + 1); + } + } + + if ( + end.line < start.line || + (end.line === start.line && end.column <= start.column) + ) { + end = { + column: start.column + 1, + line: start.line, + offset: start.offset + 1 + }; + } + + return { end, start } + } + + raw(prop, defaultType) { + let str = new Stringifier(); + return str.raw(this, prop, defaultType) + } + + remove() { + if (this.parent) { + this.parent.removeChild(this); + } + this.parent = undefined; + return this + } + + replaceWith(...nodes) { + if (this.parent) { + let bookmark = this; + let foundSelf = false; + for (let node of nodes) { + if (node === this) { + foundSelf = true; + } else if (foundSelf) { + this.parent.insertAfter(bookmark, node); + bookmark = node; + } else { + this.parent.insertBefore(bookmark, node); + } + } + + if (!foundSelf) { + this.remove(); + } + } + + return this + } + + root() { + let result = this; + while (result.parent && result.parent.type !== 'document') { + result = result.parent; + } + return result + } + + toJSON(_, inputs) { + let fixed = {}; + let emitInputs = inputs == null; + inputs = inputs || new Map(); + let inputsNextIndex = 0; + + for (let name in this) { + if (!Object.prototype.hasOwnProperty.call(this, name)) { + /* c8 ignore next 2 */ + continue + } + if (name === 'parent' || name === 'proxyCache') continue + let value = this[name]; + + if (Array.isArray(value)) { + fixed[name] = value.map(i => { + if (typeof i === 'object' && i.toJSON) { + return i.toJSON(null, inputs) + } else { + return i + } + }); + } else if (typeof value === 'object' && value.toJSON) { + fixed[name] = value.toJSON(null, inputs); + } else if (name === 'source') { + if (value == null) continue + let inputId = inputs.get(value.input); + if (inputId == null) { + inputId = inputsNextIndex; + inputs.set(value.input, inputsNextIndex); + inputsNextIndex++; + } + fixed[name] = { + end: value.end, + inputId, + start: value.start + }; + } else { + fixed[name] = value; + } + } + + if (emitInputs) { + fixed.inputs = [...inputs.keys()].map(input => input.toJSON()); + } + + return fixed + } + + toProxy() { + if (!this.proxyCache) { + this.proxyCache = new Proxy(this, this.getProxyProcessor()); + } + return this.proxyCache + } + + toString(stringifier = stringify) { + if (stringifier.stringify) stringifier = stringifier.stringify; + let result = ''; + stringifier(this, i => { + result += i; + }); + return result + } + + warn(result, text, opts = {}) { + let data = { node: this }; + for (let i in opts) data[i] = opts[i]; + return result.warn(text, data) + } + } + + node$2 = Node; + Node.default = Node; + return node$2; +} + +var comment$1; +var hasRequiredComment$1; + +function requireComment$1 () { + if (hasRequiredComment$1) return comment$1; + hasRequiredComment$1 = 1; + + let Node = /*@__PURE__*/ requireNode$2(); + + class Comment extends Node { + constructor(defaults) { + super(defaults); + this.type = 'comment'; + } + } + + comment$1 = Comment; + Comment.default = Comment; + return comment$1; +} + +var declaration; +var hasRequiredDeclaration; + +function requireDeclaration () { + if (hasRequiredDeclaration) return declaration; + hasRequiredDeclaration = 1; + + let Node = /*@__PURE__*/ requireNode$2(); + + class Declaration extends Node { + get variable() { + return this.prop.startsWith('--') || this.prop[0] === '$' + } + + constructor(defaults) { + if ( + defaults && + typeof defaults.value !== 'undefined' && + typeof defaults.value !== 'string' + ) { + defaults = { ...defaults, value: String(defaults.value) }; + } + super(defaults); + this.type = 'decl'; + } + } + + declaration = Declaration; + Declaration.default = Declaration; + return declaration; +} + +var container$1; +var hasRequiredContainer$1; + +function requireContainer$1 () { + if (hasRequiredContainer$1) return container$1; + hasRequiredContainer$1 = 1; + + let Comment = /*@__PURE__*/ requireComment$1(); + let Declaration = /*@__PURE__*/ requireDeclaration(); + let Node = /*@__PURE__*/ requireNode$2(); + let { isClean, my } = /*@__PURE__*/ requireSymbols(); + + let AtRule, parse, Root, Rule; + + function cleanSource(nodes) { + return nodes.map(i => { + if (i.nodes) i.nodes = cleanSource(i.nodes); + delete i.source; + return i + }) + } + + function markTreeDirty(node) { + node[isClean] = false; + if (node.proxyOf.nodes) { + for (let i of node.proxyOf.nodes) { + markTreeDirty(i); + } + } + } + + class Container extends Node { + get first() { + if (!this.proxyOf.nodes) return undefined + return this.proxyOf.nodes[0] + } + + get last() { + if (!this.proxyOf.nodes) return undefined + return this.proxyOf.nodes[this.proxyOf.nodes.length - 1] + } + + append(...children) { + for (let child of children) { + let nodes = this.normalize(child, this.last); + for (let node of nodes) this.proxyOf.nodes.push(node); + } + + this.markDirty(); + + return this + } + + cleanRaws(keepBetween) { + super.cleanRaws(keepBetween); + if (this.nodes) { + for (let node of this.nodes) node.cleanRaws(keepBetween); + } + } + + each(callback) { + if (!this.proxyOf.nodes) return undefined + let iterator = this.getIterator(); + + let index, result; + while (this.indexes[iterator] < this.proxyOf.nodes.length) { + index = this.indexes[iterator]; + result = callback(this.proxyOf.nodes[index], index); + if (result === false) break + + this.indexes[iterator] += 1; + } + + delete this.indexes[iterator]; + return result + } + + every(condition) { + return this.nodes.every(condition) + } + + getIterator() { + if (!this.lastEach) this.lastEach = 0; + if (!this.indexes) this.indexes = {}; + + this.lastEach += 1; + let iterator = this.lastEach; + this.indexes[iterator] = 0; + + return iterator + } + + getProxyProcessor() { + return { + get(node, prop) { + if (prop === 'proxyOf') { + return node + } else if (!node[prop]) { + return node[prop] + } else if ( + prop === 'each' || + (typeof prop === 'string' && prop.startsWith('walk')) + ) { + return (...args) => { + return node[prop]( + ...args.map(i => { + if (typeof i === 'function') { + return (child, index) => i(child.toProxy(), index) + } else { + return i + } + }) + ) + } + } else if (prop === 'every' || prop === 'some') { + return cb => { + return node[prop]((child, ...other) => + cb(child.toProxy(), ...other) + ) + } + } else if (prop === 'root') { + return () => node.root().toProxy() + } else if (prop === 'nodes') { + return node.nodes.map(i => i.toProxy()) + } else if (prop === 'first' || prop === 'last') { + return node[prop].toProxy() + } else { + return node[prop] + } + }, + + set(node, prop, value) { + if (node[prop] === value) return true + node[prop] = value; + if (prop === 'name' || prop === 'params' || prop === 'selector') { + node.markDirty(); + } + return true + } + } + } + + index(child) { + if (typeof child === 'number') return child + if (child.proxyOf) child = child.proxyOf; + return this.proxyOf.nodes.indexOf(child) + } + + insertAfter(exist, add) { + let existIndex = this.index(exist); + let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse(); + existIndex = this.index(exist); + for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node); + + let index; + for (let id in this.indexes) { + index = this.indexes[id]; + if (existIndex < index) { + this.indexes[id] = index + nodes.length; + } + } + + this.markDirty(); + + return this + } + + insertBefore(exist, add) { + let existIndex = this.index(exist); + let type = existIndex === 0 ? 'prepend' : false; + let nodes = this.normalize( + add, + this.proxyOf.nodes[existIndex], + type + ).reverse(); + existIndex = this.index(exist); + for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node); + + let index; + for (let id in this.indexes) { + index = this.indexes[id]; + if (existIndex <= index) { + this.indexes[id] = index + nodes.length; + } + } + + this.markDirty(); + + return this + } + + normalize(nodes, sample) { + if (typeof nodes === 'string') { + nodes = cleanSource(parse(nodes).nodes); + } else if (typeof nodes === 'undefined') { + nodes = []; + } else if (Array.isArray(nodes)) { + nodes = nodes.slice(0); + for (let i of nodes) { + if (i.parent) i.parent.removeChild(i, 'ignore'); + } + } else if (nodes.type === 'root' && this.type !== 'document') { + nodes = nodes.nodes.slice(0); + for (let i of nodes) { + if (i.parent) i.parent.removeChild(i, 'ignore'); + } + } else if (nodes.type) { + nodes = [nodes]; + } else if (nodes.prop) { + if (typeof nodes.value === 'undefined') { + throw new Error('Value field is missed in node creation') + } else if (typeof nodes.value !== 'string') { + nodes.value = String(nodes.value); + } + nodes = [new Declaration(nodes)]; + } else if (nodes.selector || nodes.selectors) { + nodes = [new Rule(nodes)]; + } else if (nodes.name) { + nodes = [new AtRule(nodes)]; + } else if (nodes.text) { + nodes = [new Comment(nodes)]; + } else { + throw new Error('Unknown node type in node creation') + } + + let processed = nodes.map(i => { + /* c8 ignore next */ + if (!i[my]) Container.rebuild(i); + i = i.proxyOf; + if (i.parent) i.parent.removeChild(i); + if (i[isClean]) markTreeDirty(i); + + if (!i.raws) i.raws = {}; + if (typeof i.raws.before === 'undefined') { + if (sample && typeof sample.raws.before !== 'undefined') { + i.raws.before = sample.raws.before.replace(/\S/g, ''); + } + } + i.parent = this.proxyOf; + return i + }); + + return processed + } + + prepend(...children) { + children = children.reverse(); + for (let child of children) { + let nodes = this.normalize(child, this.first, 'prepend').reverse(); + for (let node of nodes) this.proxyOf.nodes.unshift(node); + for (let id in this.indexes) { + this.indexes[id] = this.indexes[id] + nodes.length; + } + } + + this.markDirty(); + + return this + } + + push(child) { + child.parent = this; + this.proxyOf.nodes.push(child); + return this + } + + removeAll() { + for (let node of this.proxyOf.nodes) node.parent = undefined; + this.proxyOf.nodes = []; + + this.markDirty(); + + return this + } + + removeChild(child) { + child = this.index(child); + this.proxyOf.nodes[child].parent = undefined; + this.proxyOf.nodes.splice(child, 1); + + let index; + for (let id in this.indexes) { + index = this.indexes[id]; + if (index >= child) { + this.indexes[id] = index - 1; + } + } + + this.markDirty(); + + return this + } + + replaceValues(pattern, opts, callback) { + if (!callback) { + callback = opts; + opts = {}; + } + + this.walkDecls(decl => { + if (opts.props && !opts.props.includes(decl.prop)) return + if (opts.fast && !decl.value.includes(opts.fast)) return + + decl.value = decl.value.replace(pattern, callback); + }); + + this.markDirty(); + + return this + } + + some(condition) { + return this.nodes.some(condition) + } + + walk(callback) { + return this.each((child, i) => { + let result; + try { + result = callback(child, i); + } catch (e) { + throw child.addToError(e) + } + if (result !== false && child.walk) { + result = child.walk(callback); + } + + return result + }) + } + + walkAtRules(name, callback) { + if (!callback) { + callback = name; + return this.walk((child, i) => { + if (child.type === 'atrule') { + return callback(child, i) + } + }) + } + if (name instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'atrule' && name.test(child.name)) { + return callback(child, i) + } + }) + } + return this.walk((child, i) => { + if (child.type === 'atrule' && child.name === name) { + return callback(child, i) + } + }) + } + + walkComments(callback) { + return this.walk((child, i) => { + if (child.type === 'comment') { + return callback(child, i) + } + }) + } + + walkDecls(prop, callback) { + if (!callback) { + callback = prop; + return this.walk((child, i) => { + if (child.type === 'decl') { + return callback(child, i) + } + }) + } + if (prop instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'decl' && prop.test(child.prop)) { + return callback(child, i) + } + }) + } + return this.walk((child, i) => { + if (child.type === 'decl' && child.prop === prop) { + return callback(child, i) + } + }) + } + + walkRules(selector, callback) { + if (!callback) { + callback = selector; + + return this.walk((child, i) => { + if (child.type === 'rule') { + return callback(child, i) + } + }) + } + if (selector instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'rule' && selector.test(child.selector)) { + return callback(child, i) + } + }) + } + return this.walk((child, i) => { + if (child.type === 'rule' && child.selector === selector) { + return callback(child, i) + } + }) + } + } + + Container.registerParse = dependant => { + parse = dependant; + }; + + Container.registerRule = dependant => { + Rule = dependant; + }; + + Container.registerAtRule = dependant => { + AtRule = dependant; + }; + + Container.registerRoot = dependant => { + Root = dependant; + }; + + container$1 = Container; + Container.default = Container; + + /* c8 ignore start */ + Container.rebuild = node => { + if (node.type === 'atrule') { + Object.setPrototypeOf(node, AtRule.prototype); + } else if (node.type === 'rule') { + Object.setPrototypeOf(node, Rule.prototype); + } else if (node.type === 'decl') { + Object.setPrototypeOf(node, Declaration.prototype); + } else if (node.type === 'comment') { + Object.setPrototypeOf(node, Comment.prototype); + } else if (node.type === 'root') { + Object.setPrototypeOf(node, Root.prototype); + } + + node[my] = true; + + if (node.nodes) { + node.nodes.forEach(child => { + Container.rebuild(child); + }); + } + }; + /* c8 ignore stop */ + return container$1; +} + +var atRule; +var hasRequiredAtRule; + +function requireAtRule () { + if (hasRequiredAtRule) return atRule; + hasRequiredAtRule = 1; + + let Container = /*@__PURE__*/ requireContainer$1(); + + class AtRule extends Container { + constructor(defaults) { + super(defaults); + this.type = 'atrule'; + } + + append(...children) { + if (!this.proxyOf.nodes) this.nodes = []; + return super.append(...children) + } + + prepend(...children) { + if (!this.proxyOf.nodes) this.nodes = []; + return super.prepend(...children) + } + } + + atRule = AtRule; + AtRule.default = AtRule; + + Container.registerAtRule(AtRule); + return atRule; +} + +var document; +var hasRequiredDocument; + +function requireDocument () { + if (hasRequiredDocument) return document; + hasRequiredDocument = 1; + + let Container = /*@__PURE__*/ requireContainer$1(); + + let LazyResult, Processor; + + class Document extends Container { + constructor(defaults) { + // type needs to be passed to super, otherwise child roots won't be normalized correctly + super({ type: 'document', ...defaults }); + + if (!this.nodes) { + this.nodes = []; + } + } + + toResult(opts = {}) { + let lazy = new LazyResult(new Processor(), this, opts); + + return lazy.stringify() + } + } + + Document.registerLazyResult = dependant => { + LazyResult = dependant; + }; + + Document.registerProcessor = dependant => { + Processor = dependant; + }; + + document = Document; + Document.default = Document; + return document; +} + +var nonSecure; +var hasRequiredNonSecure; + +function requireNonSecure () { + if (hasRequiredNonSecure) return nonSecure; + hasRequiredNonSecure = 1; + // This alphabet uses `A-Za-z0-9_-` symbols. + // The order of characters is optimized for better gzip and brotli compression. + // References to the same file (works both for gzip and brotli): + // `'use`, `andom`, and `rict'` + // References to the brotli default dictionary: + // `-26T`, `1983`, `40px`, `75px`, `bush`, `jack`, `mind`, `very`, and `wolf` + let urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'; + + let customAlphabet = (alphabet, defaultSize = 21) => { + return (size = defaultSize) => { + let id = ''; + // A compact alternative for `for (var i = 0; i < step; i++)`. + let i = size | 0; + while (i--) { + // `| 0` is more compact and faster than `Math.floor()`. + id += alphabet[(Math.random() * alphabet.length) | 0]; + } + return id + } + }; + + let nanoid = (size = 21) => { + let id = ''; + // A compact alternative for `for (var i = 0; i < step; i++)`. + let i = size | 0; + while (i--) { + // `| 0` is more compact and faster than `Math.floor()`. + id += urlAlphabet[(Math.random() * 64) | 0]; + } + return id + }; + + nonSecure = { nanoid, customAlphabet }; + return nonSecure; +} + +var require$$2 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_url$1); + +var previousMap; +var hasRequiredPreviousMap; + +function requirePreviousMap () { + if (hasRequiredPreviousMap) return previousMap; + hasRequiredPreviousMap = 1; + + let { existsSync, readFileSync } = require$$0$1; + let { dirname, join } = require$$1; + let { SourceMapConsumer, SourceMapGenerator } = /*@__PURE__*/ requireSourceMap$1(); + + function fromBase64(str) { + if (Buffer$1) { + return Buffer$1.from(str, 'base64').toString() + } else { + /* c8 ignore next 2 */ + return window.atob(str) + } + } + + class PreviousMap { + constructor(css, opts) { + if (opts.map === false) return + this.loadAnnotation(css); + this.inline = this.startWith(this.annotation, 'data:'); + + let prev = opts.map ? opts.map.prev : undefined; + let text = this.loadMap(opts.from, prev); + if (!this.mapFile && opts.from) { + this.mapFile = opts.from; + } + if (this.mapFile) this.root = dirname(this.mapFile); + if (text) this.text = text; + } + + consumer() { + if (!this.consumerCache) { + this.consumerCache = new SourceMapConsumer(this.text); + } + return this.consumerCache + } + + decodeInline(text) { + let baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/; + let baseUri = /^data:application\/json;base64,/; + let charsetUri = /^data:application\/json;charset=utf-?8,/; + let uri = /^data:application\/json,/; + + let uriMatch = text.match(charsetUri) || text.match(uri); + if (uriMatch) { + return decodeURIComponent(text.substr(uriMatch[0].length)) + } + + let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri); + if (baseUriMatch) { + return fromBase64(text.substr(baseUriMatch[0].length)) + } + + let encoding = text.match(/data:application\/json;([^,]+),/)[1]; + throw new Error('Unsupported source map encoding ' + encoding) + } + + getAnnotationURL(sourceMapString) { + return sourceMapString.replace(/^\/\*\s*# sourceMappingURL=/, '').trim() + } + + isMap(map) { + if (typeof map !== 'object') return false + return ( + typeof map.mappings === 'string' || + typeof map._mappings === 'string' || + Array.isArray(map.sections) + ) + } + + loadAnnotation(css) { + let comments = css.match(/\/\*\s*# sourceMappingURL=/g); + if (!comments) return + + // sourceMappingURLs from comments, strings, etc. + let start = css.lastIndexOf(comments.pop()); + let end = css.indexOf('*/', start); + + if (start > -1 && end > -1) { + // Locate the last sourceMappingURL to avoid pickin + this.annotation = this.getAnnotationURL(css.substring(start, end)); + } + } + + loadFile(path) { + this.root = dirname(path); + if (existsSync(path)) { + this.mapFile = path; + return readFileSync(path, 'utf-8').toString().trim() + } + } + + loadMap(file, prev) { + if (prev === false) return false + + if (prev) { + if (typeof prev === 'string') { + return prev + } else if (typeof prev === 'function') { + let prevPath = prev(file); + if (prevPath) { + let map = this.loadFile(prevPath); + if (!map) { + throw new Error( + 'Unable to load previous source map: ' + prevPath.toString() + ) + } + return map + } + } else if (prev instanceof SourceMapConsumer) { + return SourceMapGenerator.fromSourceMap(prev).toString() + } else if (prev instanceof SourceMapGenerator) { + return prev.toString() + } else if (this.isMap(prev)) { + return JSON.stringify(prev) + } else { + throw new Error( + 'Unsupported previous source map format: ' + prev.toString() + ) + } + } else if (this.inline) { + return this.decodeInline(this.annotation) + } else if (this.annotation) { + let map = this.annotation; + if (file) map = join(dirname(file), map); + return this.loadFile(map) + } + } + + startWith(string, start) { + if (!string) return false + return string.substr(0, start.length) === start + } + + withContent() { + return !!( + this.consumer().sourcesContent && + this.consumer().sourcesContent.length > 0 + ) + } + } + + previousMap = PreviousMap; + PreviousMap.default = PreviousMap; + return previousMap; +} + +var input; +var hasRequiredInput; + +function requireInput () { + if (hasRequiredInput) return input; + hasRequiredInput = 1; + + let { nanoid } = /*@__PURE__*/ requireNonSecure(); + let { isAbsolute, resolve } = require$$1; + let { SourceMapConsumer, SourceMapGenerator } = /*@__PURE__*/ requireSourceMap$1(); + let { fileURLToPath, pathToFileURL } = require$$2; + + let CssSyntaxError = /*@__PURE__*/ requireCssSyntaxError(); + let PreviousMap = /*@__PURE__*/ requirePreviousMap(); + let terminalHighlight = /*@__PURE__*/ requireTerminalHighlight(); + + let lineToIndexCache = Symbol('lineToIndexCache'); + + let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator); + let pathAvailable = Boolean(resolve && isAbsolute); + + function getLineToIndex(input) { + if (input[lineToIndexCache]) return input[lineToIndexCache] + let lines = input.css.split('\n'); + let lineToIndex = new Array(lines.length); + let prevIndex = 0; + + for (let i = 0, l = lines.length; i < l; i++) { + lineToIndex[i] = prevIndex; + prevIndex += lines[i].length + 1; + } + + input[lineToIndexCache] = lineToIndex; + return lineToIndex + } + + class Input { + get from() { + return this.file || this.id + } + + constructor(css, opts = {}) { + if ( + css === null || + typeof css === 'undefined' || + (typeof css === 'object' && !css.toString) + ) { + throw new Error(`PostCSS received ${css} instead of CSS string`) + } + + this.css = css.toString(); + + if (this.css[0] === '\uFEFF' || this.css[0] === '\uFFFE') { + this.hasBOM = true; + this.css = this.css.slice(1); + } else { + this.hasBOM = false; + } + + this.document = this.css; + if (opts.document) this.document = opts.document.toString(); + + if (opts.from) { + if ( + !pathAvailable || + /^\w+:\/\//.test(opts.from) || + isAbsolute(opts.from) + ) { + this.file = opts.from; + } else { + this.file = resolve(opts.from); + } + } + + if (pathAvailable && sourceMapAvailable) { + let map = new PreviousMap(this.css, opts); + if (map.text) { + this.map = map; + let file = map.consumer().file; + if (!this.file && file) this.file = this.mapResolve(file); + } + } + + if (!this.file) { + this.id = '<input css ' + nanoid(6) + '>'; + } + if (this.map) this.map.file = this.from; + } + + error(message, line, column, opts = {}) { + let endColumn, endLine, endOffset, offset, result; + + if (line && typeof line === 'object') { + let start = line; + let end = column; + if (typeof start.offset === 'number') { + offset = start.offset; + let pos = this.fromOffset(offset); + line = pos.line; + column = pos.col; + } else { + line = start.line; + column = start.column; + offset = this.fromLineAndColumn(line, column); + } + if (typeof end.offset === 'number') { + endOffset = end.offset; + let pos = this.fromOffset(endOffset); + endLine = pos.line; + endColumn = pos.col; + } else { + endLine = end.line; + endColumn = end.column; + endOffset = this.fromLineAndColumn(end.line, end.column); + } + } else if (!column) { + offset = line; + let pos = this.fromOffset(offset); + line = pos.line; + column = pos.col; + } else { + offset = this.fromLineAndColumn(line, column); + } + + let origin = this.origin(line, column, endLine, endColumn); + if (origin) { + result = new CssSyntaxError( + message, + origin.endLine === undefined + ? origin.line + : { column: origin.column, line: origin.line }, + origin.endLine === undefined + ? origin.column + : { column: origin.endColumn, line: origin.endLine }, + origin.source, + origin.file, + opts.plugin + ); + } else { + result = new CssSyntaxError( + message, + endLine === undefined ? line : { column, line }, + endLine === undefined ? column : { column: endColumn, line: endLine }, + this.css, + this.file, + opts.plugin + ); + } + + result.input = { column, endColumn, endLine, endOffset, line, offset, source: this.css }; + if (this.file) { + if (pathToFileURL) { + result.input.url = pathToFileURL(this.file).toString(); + } + result.input.file = this.file; + } + + return result + } + + fromLineAndColumn(line, column) { + let lineToIndex = getLineToIndex(this); + let index = lineToIndex[line - 1]; + return index + column - 1 + } + + fromOffset(offset) { + let lineToIndex = getLineToIndex(this); + let lastLine = lineToIndex[lineToIndex.length - 1]; + + let min = 0; + if (offset >= lastLine) { + min = lineToIndex.length - 1; + } else { + let max = lineToIndex.length - 2; + let mid; + while (min < max) { + mid = min + ((max - min) >> 1); + if (offset < lineToIndex[mid]) { + max = mid - 1; + } else if (offset >= lineToIndex[mid + 1]) { + min = mid + 1; + } else { + min = mid; + break + } + } + } + return { + col: offset - lineToIndex[min] + 1, + line: min + 1 + } + } + + mapResolve(file) { + if (/^\w+:\/\//.test(file)) { + return file + } + return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file) + } + + origin(line, column, endLine, endColumn) { + if (!this.map) return false + let consumer = this.map.consumer(); + + let from = consumer.originalPositionFor({ column, line }); + if (!from.source) return false + + let to; + if (typeof endLine === 'number') { + to = consumer.originalPositionFor({ column: endColumn, line: endLine }); + } + + let fromUrl; + + if (isAbsolute(from.source)) { + fromUrl = pathToFileURL(from.source); + } else { + fromUrl = new URL( + from.source, + this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile) + ); + } + + let result = { + column: from.column, + endColumn: to && to.column, + endLine: to && to.line, + line: from.line, + url: fromUrl.toString() + }; + + if (fromUrl.protocol === 'file:') { + if (fileURLToPath) { + result.file = fileURLToPath(fromUrl); + } else { + /* c8 ignore next 2 */ + throw new Error(`file: protocol is not available in this PostCSS build`) + } + } + + let source = consumer.sourceContentFor(from.source); + if (source) result.source = source; + + return result + } + + toJSON() { + let json = {}; + for (let name of ['hasBOM', 'css', 'file', 'id']) { + if (this[name] != null) { + json[name] = this[name]; + } + } + if (this.map) { + json.map = { ...this.map }; + if (json.map.consumerCache) { + json.map.consumerCache = undefined; + } + } + return json + } + } + + input = Input; + Input.default = Input; + + if (terminalHighlight && terminalHighlight.registerInput) { + terminalHighlight.registerInput(Input); + } + return input; +} + +var root$1; +var hasRequiredRoot$1; + +function requireRoot$1 () { + if (hasRequiredRoot$1) return root$1; + hasRequiredRoot$1 = 1; + + let Container = /*@__PURE__*/ requireContainer$1(); + + let LazyResult, Processor; + + class Root extends Container { + constructor(defaults) { + super(defaults); + this.type = 'root'; + if (!this.nodes) this.nodes = []; + } + + normalize(child, sample, type) { + let nodes = super.normalize(child); + + if (sample) { + if (type === 'prepend') { + if (this.nodes.length > 1) { + sample.raws.before = this.nodes[1].raws.before; + } else { + delete sample.raws.before; + } + } else if (this.first !== sample) { + for (let node of nodes) { + node.raws.before = sample.raws.before; + } + } + } + + return nodes + } + + removeChild(child, ignore) { + let index = this.index(child); + + if (!ignore && index === 0 && this.nodes.length > 1) { + this.nodes[1].raws.before = this.nodes[index].raws.before; + } + + return super.removeChild(child) + } + + toResult(opts = {}) { + let lazy = new LazyResult(new Processor(), this, opts); + return lazy.stringify() + } + } + + Root.registerLazyResult = dependant => { + LazyResult = dependant; + }; + + Root.registerProcessor = dependant => { + Processor = dependant; + }; + + root$1 = Root; + Root.default = Root; + + Container.registerRoot(Root); + return root$1; +} + +var list_1; +var hasRequiredList; + +function requireList () { + if (hasRequiredList) return list_1; + hasRequiredList = 1; + + let list = { + comma(string) { + return list.split(string, [','], true) + }, + + space(string) { + let spaces = [' ', '\n', '\t']; + return list.split(string, spaces) + }, + + split(string, separators, last) { + let array = []; + let current = ''; + let split = false; + + let func = 0; + let inQuote = false; + let prevQuote = ''; + let escape = false; + + for (let letter of string) { + if (escape) { + escape = false; + } else if (letter === '\\') { + escape = true; + } else if (inQuote) { + if (letter === prevQuote) { + inQuote = false; + } + } else if (letter === '"' || letter === "'") { + inQuote = true; + prevQuote = letter; + } else if (letter === '(') { + func += 1; + } else if (letter === ')') { + if (func > 0) func -= 1; + } else if (func === 0) { + if (separators.includes(letter)) split = true; + } + + if (split) { + if (current !== '') array.push(current.trim()); + current = ''; + split = false; + } else { + current += letter; + } + } + + if (last || current !== '') array.push(current.trim()); + return array + } + }; + + list_1 = list; + list.default = list; + return list_1; +} + +var rule; +var hasRequiredRule; + +function requireRule () { + if (hasRequiredRule) return rule; + hasRequiredRule = 1; + + let Container = /*@__PURE__*/ requireContainer$1(); + let list = /*@__PURE__*/ requireList(); + + class Rule extends Container { + get selectors() { + return list.comma(this.selector) + } + + set selectors(values) { + let match = this.selector ? this.selector.match(/,\s*/) : null; + let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen'); + this.selector = values.join(sep); + } + + constructor(defaults) { + super(defaults); + this.type = 'rule'; + if (!this.nodes) this.nodes = []; + } + } + + rule = Rule; + Rule.default = Rule; + + Container.registerRule(Rule); + return rule; +} + +var fromJSON_1; +var hasRequiredFromJSON; + +function requireFromJSON () { + if (hasRequiredFromJSON) return fromJSON_1; + hasRequiredFromJSON = 1; + + let AtRule = /*@__PURE__*/ requireAtRule(); + let Comment = /*@__PURE__*/ requireComment$1(); + let Declaration = /*@__PURE__*/ requireDeclaration(); + let Input = /*@__PURE__*/ requireInput(); + let PreviousMap = /*@__PURE__*/ requirePreviousMap(); + let Root = /*@__PURE__*/ requireRoot$1(); + let Rule = /*@__PURE__*/ requireRule(); + + function fromJSON(json, inputs) { + if (Array.isArray(json)) return json.map(n => fromJSON(n)) + + let { inputs: ownInputs, ...defaults } = json; + if (ownInputs) { + inputs = []; + for (let input of ownInputs) { + let inputHydrated = { ...input, __proto__: Input.prototype }; + if (inputHydrated.map) { + inputHydrated.map = { + ...inputHydrated.map, + __proto__: PreviousMap.prototype + }; + } + inputs.push(inputHydrated); + } + } + if (defaults.nodes) { + defaults.nodes = json.nodes.map(n => fromJSON(n, inputs)); + } + if (defaults.source) { + let { inputId, ...source } = defaults.source; + defaults.source = source; + if (inputId != null) { + defaults.source.input = inputs[inputId]; + } + } + if (defaults.type === 'root') { + return new Root(defaults) + } else if (defaults.type === 'decl') { + return new Declaration(defaults) + } else if (defaults.type === 'rule') { + return new Rule(defaults) + } else if (defaults.type === 'comment') { + return new Comment(defaults) + } else if (defaults.type === 'atrule') { + return new AtRule(defaults) + } else { + throw new Error('Unknown node type: ' + json.type) + } + } + + fromJSON_1 = fromJSON; + fromJSON.default = fromJSON; + return fromJSON_1; +} + +var mapGenerator; +var hasRequiredMapGenerator; + +function requireMapGenerator () { + if (hasRequiredMapGenerator) return mapGenerator; + hasRequiredMapGenerator = 1; + + let { dirname, relative, resolve, sep } = require$$1; + let { SourceMapConsumer, SourceMapGenerator } = /*@__PURE__*/ requireSourceMap$1(); + let { pathToFileURL } = require$$2; + + let Input = /*@__PURE__*/ requireInput(); + + let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator); + let pathAvailable = Boolean(dirname && resolve && relative && sep); + + class MapGenerator { + constructor(stringify, root, opts, cssString) { + this.stringify = stringify; + this.mapOpts = opts.map || {}; + this.root = root; + this.opts = opts; + this.css = cssString; + this.originalCSS = cssString; + this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute; + + this.memoizedFileURLs = new Map(); + this.memoizedPaths = new Map(); + this.memoizedURLs = new Map(); + } + + addAnnotation() { + let content; + + if (this.isInline()) { + content = + 'data:application/json;base64,' + this.toBase64(this.map.toString()); + } else if (typeof this.mapOpts.annotation === 'string') { + content = this.mapOpts.annotation; + } else if (typeof this.mapOpts.annotation === 'function') { + content = this.mapOpts.annotation(this.opts.to, this.root); + } else { + content = this.outputFile() + '.map'; + } + let eol = '\n'; + if (this.css.includes('\r\n')) eol = '\r\n'; + + this.css += eol + '/*# sourceMappingURL=' + content + ' */'; + } + + applyPrevMaps() { + for (let prev of this.previous()) { + let from = this.toUrl(this.path(prev.file)); + let root = prev.root || dirname(prev.file); + let map; + + if (this.mapOpts.sourcesContent === false) { + map = new SourceMapConsumer(prev.text); + if (map.sourcesContent) { + map.sourcesContent = null; + } + } else { + map = prev.consumer(); + } + + this.map.applySourceMap(map, from, this.toUrl(this.path(root))); + } + } + + clearAnnotation() { + if (this.mapOpts.annotation === false) return + + if (this.root) { + let node; + for (let i = this.root.nodes.length - 1; i >= 0; i--) { + node = this.root.nodes[i]; + if (node.type !== 'comment') continue + if (node.text.startsWith('# sourceMappingURL=')) { + this.root.removeChild(i); + } + } + } else if (this.css) { + this.css = this.css.replace(/\n*\/\*#[\S\s]*?\*\/$/gm, ''); + } + } + + generate() { + this.clearAnnotation(); + if (pathAvailable && sourceMapAvailable && this.isMap()) { + return this.generateMap() + } else { + let result = ''; + this.stringify(this.root, i => { + result += i; + }); + return [result] + } + } + + generateMap() { + if (this.root) { + this.generateString(); + } else if (this.previous().length === 1) { + let prev = this.previous()[0].consumer(); + prev.file = this.outputFile(); + this.map = SourceMapGenerator.fromSourceMap(prev, { + ignoreInvalidMapping: true + }); + } else { + this.map = new SourceMapGenerator({ + file: this.outputFile(), + ignoreInvalidMapping: true + }); + this.map.addMapping({ + generated: { column: 0, line: 1 }, + original: { column: 0, line: 1 }, + source: this.opts.from + ? this.toUrl(this.path(this.opts.from)) + : '<no source>' + }); + } + + if (this.isSourcesContent()) this.setSourcesContent(); + if (this.root && this.previous().length > 0) this.applyPrevMaps(); + if (this.isAnnotation()) this.addAnnotation(); + + if (this.isInline()) { + return [this.css] + } else { + return [this.css, this.map] + } + } + + generateString() { + this.css = ''; + this.map = new SourceMapGenerator({ + file: this.outputFile(), + ignoreInvalidMapping: true + }); + + let line = 1; + let column = 1; + + let noSource = '<no source>'; + let mapping = { + generated: { column: 0, line: 0 }, + original: { column: 0, line: 0 }, + source: '' + }; + + let last, lines; + this.stringify(this.root, (str, node, type) => { + this.css += str; + + if (node && type !== 'end') { + mapping.generated.line = line; + mapping.generated.column = column - 1; + if (node.source && node.source.start) { + mapping.source = this.sourcePath(node); + mapping.original.line = node.source.start.line; + mapping.original.column = node.source.start.column - 1; + this.map.addMapping(mapping); + } else { + mapping.source = noSource; + mapping.original.line = 1; + mapping.original.column = 0; + this.map.addMapping(mapping); + } + } + + lines = str.match(/\n/g); + if (lines) { + line += lines.length; + last = str.lastIndexOf('\n'); + column = str.length - last; + } else { + column += str.length; + } + + if (node && type !== 'start') { + let p = node.parent || { raws: {} }; + let childless = + node.type === 'decl' || (node.type === 'atrule' && !node.nodes); + if (!childless || node !== p.last || p.raws.semicolon) { + if (node.source && node.source.end) { + mapping.source = this.sourcePath(node); + mapping.original.line = node.source.end.line; + mapping.original.column = node.source.end.column - 1; + mapping.generated.line = line; + mapping.generated.column = column - 2; + this.map.addMapping(mapping); + } else { + mapping.source = noSource; + mapping.original.line = 1; + mapping.original.column = 0; + mapping.generated.line = line; + mapping.generated.column = column - 1; + this.map.addMapping(mapping); + } + } + } + }); + } + + isAnnotation() { + if (this.isInline()) { + return true + } + if (typeof this.mapOpts.annotation !== 'undefined') { + return this.mapOpts.annotation + } + if (this.previous().length) { + return this.previous().some(i => i.annotation) + } + return true + } + + isInline() { + if (typeof this.mapOpts.inline !== 'undefined') { + return this.mapOpts.inline + } + + let annotation = this.mapOpts.annotation; + if (typeof annotation !== 'undefined' && annotation !== true) { + return false + } + + if (this.previous().length) { + return this.previous().some(i => i.inline) + } + return true + } + + isMap() { + if (typeof this.opts.map !== 'undefined') { + return !!this.opts.map + } + return this.previous().length > 0 + } + + isSourcesContent() { + if (typeof this.mapOpts.sourcesContent !== 'undefined') { + return this.mapOpts.sourcesContent + } + if (this.previous().length) { + return this.previous().some(i => i.withContent()) + } + return true + } + + outputFile() { + if (this.opts.to) { + return this.path(this.opts.to) + } else if (this.opts.from) { + return this.path(this.opts.from) + } else { + return 'to.css' + } + } + + path(file) { + if (this.mapOpts.absolute) return file + if (file.charCodeAt(0) === 60 /* `<` */) return file + if (/^\w+:\/\//.test(file)) return file + let cached = this.memoizedPaths.get(file); + if (cached) return cached + + let from = this.opts.to ? dirname(this.opts.to) : '.'; + + if (typeof this.mapOpts.annotation === 'string') { + from = dirname(resolve(from, this.mapOpts.annotation)); + } + + let path = relative(from, file); + this.memoizedPaths.set(file, path); + + return path + } + + previous() { + if (!this.previousMaps) { + this.previousMaps = []; + if (this.root) { + this.root.walk(node => { + if (node.source && node.source.input.map) { + let map = node.source.input.map; + if (!this.previousMaps.includes(map)) { + this.previousMaps.push(map); + } + } + }); + } else { + let input = new Input(this.originalCSS, this.opts); + if (input.map) this.previousMaps.push(input.map); + } + } + + return this.previousMaps + } + + setSourcesContent() { + let already = {}; + if (this.root) { + this.root.walk(node => { + if (node.source) { + let from = node.source.input.from; + if (from && !already[from]) { + already[from] = true; + let fromUrl = this.usesFileUrls + ? this.toFileUrl(from) + : this.toUrl(this.path(from)); + this.map.setSourceContent(fromUrl, node.source.input.css); + } + } + }); + } else if (this.css) { + let from = this.opts.from + ? this.toUrl(this.path(this.opts.from)) + : '<no source>'; + this.map.setSourceContent(from, this.css); + } + } + + sourcePath(node) { + if (this.mapOpts.from) { + return this.toUrl(this.mapOpts.from) + } else if (this.usesFileUrls) { + return this.toFileUrl(node.source.input.from) + } else { + return this.toUrl(this.path(node.source.input.from)) + } + } + + toBase64(str) { + if (Buffer$1) { + return Buffer$1.from(str).toString('base64') + } else { + return window.btoa(unescape(encodeURIComponent(str))) + } + } + + toFileUrl(path) { + let cached = this.memoizedFileURLs.get(path); + if (cached) return cached + + if (pathToFileURL) { + let fileURL = pathToFileURL(path).toString(); + this.memoizedFileURLs.set(path, fileURL); + + return fileURL + } else { + throw new Error( + '`map.absolute` option is not available in this PostCSS build' + ) + } + } + + toUrl(path) { + let cached = this.memoizedURLs.get(path); + if (cached) return cached + + if (sep === '\\') { + path = path.replace(/\\/g, '/'); + } + + let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent); + this.memoizedURLs.set(path, url); + + return url + } + } + + mapGenerator = MapGenerator; + return mapGenerator; +} + +var parser$1; +var hasRequiredParser$1; + +function requireParser$1 () { + if (hasRequiredParser$1) return parser$1; + hasRequiredParser$1 = 1; + + let AtRule = /*@__PURE__*/ requireAtRule(); + let Comment = /*@__PURE__*/ requireComment$1(); + let Declaration = /*@__PURE__*/ requireDeclaration(); + let Root = /*@__PURE__*/ requireRoot$1(); + let Rule = /*@__PURE__*/ requireRule(); + let tokenizer = /*@__PURE__*/ requireTokenize$1(); + + const SAFE_COMMENT_NEIGHBOR = { + empty: true, + space: true + }; + + function findLastWithPosition(tokens) { + for (let i = tokens.length - 1; i >= 0; i--) { + let token = tokens[i]; + let pos = token[3] || token[2]; + if (pos) return pos + } + } + + class Parser { + constructor(input) { + this.input = input; + + this.root = new Root(); + this.current = this.root; + this.spaces = ''; + this.semicolon = false; + + this.createTokenizer(); + this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }; + } + + atrule(token) { + let node = new AtRule(); + node.name = token[1].slice(1); + if (node.name === '') { + this.unnamedAtrule(node, token); + } + this.init(node, token[2]); + + let type; + let prev; + let shift; + let last = false; + let open = false; + let params = []; + let brackets = []; + + while (!this.tokenizer.endOfFile()) { + token = this.tokenizer.nextToken(); + type = token[0]; + + if (type === '(' || type === '[') { + brackets.push(type === '(' ? ')' : ']'); + } else if (type === '{' && brackets.length > 0) { + brackets.push('}'); + } else if (type === brackets[brackets.length - 1]) { + brackets.pop(); + } + + if (brackets.length === 0) { + if (type === ';') { + node.source.end = this.getPosition(token[2]); + node.source.end.offset++; + this.semicolon = true; + break + } else if (type === '{') { + open = true; + break + } else if (type === '}') { + if (params.length > 0) { + shift = params.length - 1; + prev = params[shift]; + while (prev && prev[0] === 'space') { + prev = params[--shift]; + } + if (prev) { + node.source.end = this.getPosition(prev[3] || prev[2]); + node.source.end.offset++; + } + } + this.end(token); + break + } else { + params.push(token); + } + } else { + params.push(token); + } + + if (this.tokenizer.endOfFile()) { + last = true; + break + } + } + + node.raws.between = this.spacesAndCommentsFromEnd(params); + if (params.length) { + node.raws.afterName = this.spacesAndCommentsFromStart(params); + this.raw(node, 'params', params); + if (last) { + token = params[params.length - 1]; + node.source.end = this.getPosition(token[3] || token[2]); + node.source.end.offset++; + this.spaces = node.raws.between; + node.raws.between = ''; + } + } else { + node.raws.afterName = ''; + node.params = ''; + } + + if (open) { + node.nodes = []; + this.current = node; + } + } + + checkMissedSemicolon(tokens) { + let colon = this.colon(tokens); + if (colon === false) return + + let founded = 0; + let token; + for (let j = colon - 1; j >= 0; j--) { + token = tokens[j]; + if (token[0] !== 'space') { + founded += 1; + if (founded === 2) break + } + } + // If the token is a word, e.g. `!important`, `red` or any other valid property's value. + // Then we need to return the colon after that word token. [3] is the "end" colon of that word. + // And because we need it after that one we do +1 to get the next one. + throw this.input.error( + 'Missed semicolon', + token[0] === 'word' ? token[3] + 1 : token[2] + ) + } + + colon(tokens) { + let brackets = 0; + let prev, token, type; + for (let [i, element] of tokens.entries()) { + token = element; + type = token[0]; + + if (type === '(') { + brackets += 1; + } + if (type === ')') { + brackets -= 1; + } + if (brackets === 0 && type === ':') { + if (!prev) { + this.doubleColon(token); + } else if (prev[0] === 'word' && prev[1] === 'progid') { + continue + } else { + return i + } + } + + prev = token; + } + return false + } + + comment(token) { + let node = new Comment(); + this.init(node, token[2]); + node.source.end = this.getPosition(token[3] || token[2]); + node.source.end.offset++; + + let text = token[1].slice(2, -2); + if (/^\s*$/.test(text)) { + node.text = ''; + node.raws.left = text; + node.raws.right = ''; + } else { + let match = text.match(/^(\s*)([^]*\S)(\s*)$/); + node.text = match[2]; + node.raws.left = match[1]; + node.raws.right = match[3]; + } + } + + createTokenizer() { + this.tokenizer = tokenizer(this.input); + } + + decl(tokens, customProperty) { + let node = new Declaration(); + this.init(node, tokens[0][2]); + + let last = tokens[tokens.length - 1]; + if (last[0] === ';') { + this.semicolon = true; + tokens.pop(); + } + + node.source.end = this.getPosition( + last[3] || last[2] || findLastWithPosition(tokens) + ); + node.source.end.offset++; + + while (tokens[0][0] !== 'word') { + if (tokens.length === 1) this.unknownWord(tokens); + node.raws.before += tokens.shift()[1]; + } + node.source.start = this.getPosition(tokens[0][2]); + + node.prop = ''; + while (tokens.length) { + let type = tokens[0][0]; + if (type === ':' || type === 'space' || type === 'comment') { + break + } + node.prop += tokens.shift()[1]; + } + + node.raws.between = ''; + + let token; + while (tokens.length) { + token = tokens.shift(); + + if (token[0] === ':') { + node.raws.between += token[1]; + break + } else { + if (token[0] === 'word' && /\w/.test(token[1])) { + this.unknownWord([token]); + } + node.raws.between += token[1]; + } + } + + if (node.prop[0] === '_' || node.prop[0] === '*') { + node.raws.before += node.prop[0]; + node.prop = node.prop.slice(1); + } + + let firstSpaces = []; + let next; + while (tokens.length) { + next = tokens[0][0]; + if (next !== 'space' && next !== 'comment') break + firstSpaces.push(tokens.shift()); + } + + this.precheckMissedSemicolon(tokens); + + for (let i = tokens.length - 1; i >= 0; i--) { + token = tokens[i]; + if (token[1].toLowerCase() === '!important') { + node.important = true; + let string = this.stringFrom(tokens, i); + string = this.spacesFromEnd(tokens) + string; + if (string !== ' !important') node.raws.important = string; + break + } else if (token[1].toLowerCase() === 'important') { + let cache = tokens.slice(0); + let str = ''; + for (let j = i; j > 0; j--) { + let type = cache[j][0]; + if (str.trim().startsWith('!') && type !== 'space') { + break + } + str = cache.pop()[1] + str; + } + if (str.trim().startsWith('!')) { + node.important = true; + node.raws.important = str; + tokens = cache; + } + } + + if (token[0] !== 'space' && token[0] !== 'comment') { + break + } + } + + let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment'); + + if (hasWord) { + node.raws.between += firstSpaces.map(i => i[1]).join(''); + firstSpaces = []; + } + this.raw(node, 'value', firstSpaces.concat(tokens), customProperty); + + if (node.value.includes(':') && !customProperty) { + this.checkMissedSemicolon(tokens); + } + } + + doubleColon(token) { + throw this.input.error( + 'Double colon', + { offset: token[2] }, + { offset: token[2] + token[1].length } + ) + } + + emptyRule(token) { + let node = new Rule(); + this.init(node, token[2]); + node.selector = ''; + node.raws.between = ''; + this.current = node; + } + + end(token) { + if (this.current.nodes && this.current.nodes.length) { + this.current.raws.semicolon = this.semicolon; + } + this.semicolon = false; + + this.current.raws.after = (this.current.raws.after || '') + this.spaces; + this.spaces = ''; + + if (this.current.parent) { + this.current.source.end = this.getPosition(token[2]); + this.current.source.end.offset++; + this.current = this.current.parent; + } else { + this.unexpectedClose(token); + } + } + + endFile() { + if (this.current.parent) this.unclosedBlock(); + if (this.current.nodes && this.current.nodes.length) { + this.current.raws.semicolon = this.semicolon; + } + this.current.raws.after = (this.current.raws.after || '') + this.spaces; + this.root.source.end = this.getPosition(this.tokenizer.position()); + } + + freeSemicolon(token) { + this.spaces += token[1]; + if (this.current.nodes) { + let prev = this.current.nodes[this.current.nodes.length - 1]; + if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) { + prev.raws.ownSemicolon = this.spaces; + this.spaces = ''; + prev.source.end = this.getPosition(token[2]); + prev.source.end.offset += prev.raws.ownSemicolon.length; + } + } + } + + // Helpers + + getPosition(offset) { + let pos = this.input.fromOffset(offset); + return { + column: pos.col, + line: pos.line, + offset + } + } + + init(node, offset) { + this.current.push(node); + node.source = { + input: this.input, + start: this.getPosition(offset) + }; + node.raws.before = this.spaces; + this.spaces = ''; + if (node.type !== 'comment') this.semicolon = false; + } + + other(start) { + let end = false; + let type = null; + let colon = false; + let bracket = null; + let brackets = []; + let customProperty = start[1].startsWith('--'); + + let tokens = []; + let token = start; + while (token) { + type = token[0]; + tokens.push(token); + + if (type === '(' || type === '[') { + if (!bracket) bracket = token; + brackets.push(type === '(' ? ')' : ']'); + } else if (customProperty && colon && type === '{') { + if (!bracket) bracket = token; + brackets.push('}'); + } else if (brackets.length === 0) { + if (type === ';') { + if (colon) { + this.decl(tokens, customProperty); + return + } else { + break + } + } else if (type === '{') { + this.rule(tokens); + return + } else if (type === '}') { + this.tokenizer.back(tokens.pop()); + end = true; + break + } else if (type === ':') { + colon = true; + } + } else if (type === brackets[brackets.length - 1]) { + brackets.pop(); + if (brackets.length === 0) bracket = null; + } + + token = this.tokenizer.nextToken(); + } + + if (this.tokenizer.endOfFile()) end = true; + if (brackets.length > 0) this.unclosedBracket(bracket); + + if (end && colon) { + if (!customProperty) { + while (tokens.length) { + token = tokens[tokens.length - 1][0]; + if (token !== 'space' && token !== 'comment') break + this.tokenizer.back(tokens.pop()); + } + } + this.decl(tokens, customProperty); + } else { + this.unknownWord(tokens); + } + } + + parse() { + let token; + while (!this.tokenizer.endOfFile()) { + token = this.tokenizer.nextToken(); + + switch (token[0]) { + case 'space': + this.spaces += token[1]; + break + + case ';': + this.freeSemicolon(token); + break + + case '}': + this.end(token); + break + + case 'comment': + this.comment(token); + break + + case 'at-word': + this.atrule(token); + break + + case '{': + this.emptyRule(token); + break + + default: + this.other(token); + break + } + } + this.endFile(); + } + + precheckMissedSemicolon(/* tokens */) { + // Hook for Safe Parser + } + + raw(node, prop, tokens, customProperty) { + let token, type; + let length = tokens.length; + let value = ''; + let clean = true; + let next, prev; + + for (let i = 0; i < length; i += 1) { + token = tokens[i]; + type = token[0]; + if (type === 'space' && i === length - 1 && !customProperty) { + clean = false; + } else if (type === 'comment') { + prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty'; + next = tokens[i + 1] ? tokens[i + 1][0] : 'empty'; + if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) { + if (value.slice(-1) === ',') { + clean = false; + } else { + value += token[1]; + } + } else { + clean = false; + } + } else { + value += token[1]; + } + } + if (!clean) { + let raw = tokens.reduce((all, i) => all + i[1], ''); + node.raws[prop] = { raw, value }; + } + node[prop] = value; + } + + rule(tokens) { + tokens.pop(); + + let node = new Rule(); + this.init(node, tokens[0][2]); + + node.raws.between = this.spacesAndCommentsFromEnd(tokens); + this.raw(node, 'selector', tokens); + this.current = node; + } + + spacesAndCommentsFromEnd(tokens) { + let lastTokenType; + let spaces = ''; + while (tokens.length) { + lastTokenType = tokens[tokens.length - 1][0]; + if (lastTokenType !== 'space' && lastTokenType !== 'comment') break + spaces = tokens.pop()[1] + spaces; + } + return spaces + } + + // Errors + + spacesAndCommentsFromStart(tokens) { + let next; + let spaces = ''; + while (tokens.length) { + next = tokens[0][0]; + if (next !== 'space' && next !== 'comment') break + spaces += tokens.shift()[1]; + } + return spaces + } + + spacesFromEnd(tokens) { + let lastTokenType; + let spaces = ''; + while (tokens.length) { + lastTokenType = tokens[tokens.length - 1][0]; + if (lastTokenType !== 'space') break + spaces = tokens.pop()[1] + spaces; + } + return spaces + } + + stringFrom(tokens, from) { + let result = ''; + for (let i = from; i < tokens.length; i++) { + result += tokens[i][1]; + } + tokens.splice(from, tokens.length - from); + return result + } + + unclosedBlock() { + let pos = this.current.source.start; + throw this.input.error('Unclosed block', pos.line, pos.column) + } + + unclosedBracket(bracket) { + throw this.input.error( + 'Unclosed bracket', + { offset: bracket[2] }, + { offset: bracket[2] + 1 } + ) + } + + unexpectedClose(token) { + throw this.input.error( + 'Unexpected }', + { offset: token[2] }, + { offset: token[2] + 1 } + ) + } + + unknownWord(tokens) { + throw this.input.error( + 'Unknown word ' + tokens[0][1], + { offset: tokens[0][2] }, + { offset: tokens[0][2] + tokens[0][1].length } + ) + } + + unnamedAtrule(node, token) { + throw this.input.error( + 'At-rule without name', + { offset: token[2] }, + { offset: token[2] + token[1].length } + ) + } + } + + parser$1 = Parser; + return parser$1; +} + +var parse_1; +var hasRequiredParse; + +function requireParse () { + if (hasRequiredParse) return parse_1; + hasRequiredParse = 1; + + let Container = /*@__PURE__*/ requireContainer$1(); + let Input = /*@__PURE__*/ requireInput(); + let Parser = /*@__PURE__*/ requireParser$1(); + + function parse(css, opts) { + let input = new Input(css, opts); + let parser = new Parser(input); + try { + parser.parse(); + } catch (e) { + if (browser$1.env.NODE_ENV !== 'production') { + if (e.name === 'CssSyntaxError' && opts && opts.from) { + if (/\.scss$/i.test(opts.from)) { + e.message += + '\nYou tried to parse SCSS with ' + + 'the standard CSS parser; ' + + 'try again with the postcss-scss parser'; + } else if (/\.sass/i.test(opts.from)) { + e.message += + '\nYou tried to parse Sass with ' + + 'the standard CSS parser; ' + + 'try again with the postcss-sass parser'; + } else if (/\.less$/i.test(opts.from)) { + e.message += + '\nYou tried to parse Less with ' + + 'the standard CSS parser; ' + + 'try again with the postcss-less parser'; + } + } + } + throw e + } + + return parser.root + } + + parse_1 = parse; + parse.default = parse; + + Container.registerParse(parse); + return parse_1; +} + +var warning; +var hasRequiredWarning; + +function requireWarning () { + if (hasRequiredWarning) return warning; + hasRequiredWarning = 1; + + class Warning { + constructor(text, opts = {}) { + this.type = 'warning'; + this.text = text; + + if (opts.node && opts.node.source) { + let range = opts.node.rangeBy(opts); + this.line = range.start.line; + this.column = range.start.column; + this.endLine = range.end.line; + this.endColumn = range.end.column; + } + + for (let opt in opts) this[opt] = opts[opt]; + } + + toString() { + if (this.node) { + return this.node.error(this.text, { + index: this.index, + plugin: this.plugin, + word: this.word + }).message + } + + if (this.plugin) { + return this.plugin + ': ' + this.text + } + + return this.text + } + } + + warning = Warning; + Warning.default = Warning; + return warning; +} + +var result; +var hasRequiredResult; + +function requireResult () { + if (hasRequiredResult) return result; + hasRequiredResult = 1; + + let Warning = /*@__PURE__*/ requireWarning(); + + class Result { + get content() { + return this.css + } + + constructor(processor, root, opts) { + this.processor = processor; + this.messages = []; + this.root = root; + this.opts = opts; + this.css = ''; + this.map = undefined; + } + + toString() { + return this.css + } + + warn(text, opts = {}) { + if (!opts.plugin) { + if (this.lastPlugin && this.lastPlugin.postcssPlugin) { + opts.plugin = this.lastPlugin.postcssPlugin; + } + } + + let warning = new Warning(text, opts); + this.messages.push(warning); + + return warning + } + + warnings() { + return this.messages.filter(i => i.type === 'warning') + } + } + + result = Result; + Result.default = Result; + return result; +} + +/* eslint-disable no-console */ + +var warnOnce; +var hasRequiredWarnOnce; + +function requireWarnOnce () { + if (hasRequiredWarnOnce) return warnOnce; + hasRequiredWarnOnce = 1; + + let printed = {}; + + warnOnce = function warnOnce(message) { + if (printed[message]) return + printed[message] = true; + + if (typeof console !== 'undefined' && console.warn) { + console.warn(message); + } + }; + return warnOnce; +} + +var lazyResult; +var hasRequiredLazyResult; + +function requireLazyResult () { + if (hasRequiredLazyResult) return lazyResult; + hasRequiredLazyResult = 1; + + let Container = /*@__PURE__*/ requireContainer$1(); + let Document = /*@__PURE__*/ requireDocument(); + let MapGenerator = /*@__PURE__*/ requireMapGenerator(); + let parse = /*@__PURE__*/ requireParse(); + let Result = /*@__PURE__*/ requireResult(); + let Root = /*@__PURE__*/ requireRoot$1(); + let stringify = /*@__PURE__*/ requireStringify(); + let { isClean, my } = /*@__PURE__*/ requireSymbols(); + let warnOnce = /*@__PURE__*/ requireWarnOnce(); + + const TYPE_TO_CLASS_NAME = { + atrule: 'AtRule', + comment: 'Comment', + decl: 'Declaration', + document: 'Document', + root: 'Root', + rule: 'Rule' + }; + + const PLUGIN_PROPS = { + AtRule: true, + AtRuleExit: true, + Comment: true, + CommentExit: true, + Declaration: true, + DeclarationExit: true, + Document: true, + DocumentExit: true, + Once: true, + OnceExit: true, + postcssPlugin: true, + prepare: true, + Root: true, + RootExit: true, + Rule: true, + RuleExit: true + }; + + const NOT_VISITORS = { + Once: true, + postcssPlugin: true, + prepare: true + }; + + const CHILDREN = 0; + + function isPromise(obj) { + return typeof obj === 'object' && typeof obj.then === 'function' + } + + function getEvents(node) { + let key = false; + let type = TYPE_TO_CLASS_NAME[node.type]; + if (node.type === 'decl') { + key = node.prop.toLowerCase(); + } else if (node.type === 'atrule') { + key = node.name.toLowerCase(); + } + + if (key && node.append) { + return [ + type, + type + '-' + key, + CHILDREN, + type + 'Exit', + type + 'Exit-' + key + ] + } else if (key) { + return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key] + } else if (node.append) { + return [type, CHILDREN, type + 'Exit'] + } else { + return [type, type + 'Exit'] + } + } + + function toStack(node) { + let events; + if (node.type === 'document') { + events = ['Document', CHILDREN, 'DocumentExit']; + } else if (node.type === 'root') { + events = ['Root', CHILDREN, 'RootExit']; + } else { + events = getEvents(node); + } + + return { + eventIndex: 0, + events, + iterator: 0, + node, + visitorIndex: 0, + visitors: [] + } + } + + function cleanMarks(node) { + node[isClean] = false; + if (node.nodes) node.nodes.forEach(i => cleanMarks(i)); + return node + } + + let postcss = {}; + + class LazyResult { + get content() { + return this.stringify().content + } + + get css() { + return this.stringify().css + } + + get map() { + return this.stringify().map + } + + get messages() { + return this.sync().messages + } + + get opts() { + return this.result.opts + } + + get processor() { + return this.result.processor + } + + get root() { + return this.sync().root + } + + get [Symbol.toStringTag]() { + return 'LazyResult' + } + + constructor(processor, css, opts) { + this.stringified = false; + this.processed = false; + + let root; + if ( + typeof css === 'object' && + css !== null && + (css.type === 'root' || css.type === 'document') + ) { + root = cleanMarks(css); + } else if (css instanceof LazyResult || css instanceof Result) { + root = cleanMarks(css.root); + if (css.map) { + if (typeof opts.map === 'undefined') opts.map = {}; + if (!opts.map.inline) opts.map.inline = false; + opts.map.prev = css.map; + } + } else { + let parser = parse; + if (opts.syntax) parser = opts.syntax.parse; + if (opts.parser) parser = opts.parser; + if (parser.parse) parser = parser.parse; + + try { + root = parser(css, opts); + } catch (error) { + this.processed = true; + this.error = error; + } + + if (root && !root[my]) { + /* c8 ignore next 2 */ + Container.rebuild(root); + } + } + + this.result = new Result(processor, root, opts); + this.helpers = { ...postcss, postcss, result: this.result }; + this.plugins = this.processor.plugins.map(plugin => { + if (typeof plugin === 'object' && plugin.prepare) { + return { ...plugin, ...plugin.prepare(this.result) } + } else { + return plugin + } + }); + } + + async() { + if (this.error) return Promise.reject(this.error) + if (this.processed) return Promise.resolve(this.result) + if (!this.processing) { + this.processing = this.runAsync(); + } + return this.processing + } + + catch(onRejected) { + return this.async().catch(onRejected) + } + + finally(onFinally) { + return this.async().then(onFinally, onFinally) + } + + getAsyncError() { + throw new Error('Use process(css).then(cb) to work with async plugins') + } + + handleError(error, node) { + let plugin = this.result.lastPlugin; + try { + if (node) node.addToError(error); + this.error = error; + if (error.name === 'CssSyntaxError' && !error.plugin) { + error.plugin = plugin.postcssPlugin; + error.setMessage(); + } else if (plugin.postcssVersion) { + if (browser$1.env.NODE_ENV !== 'production') { + let pluginName = plugin.postcssPlugin; + let pluginVer = plugin.postcssVersion; + let runtimeVer = this.result.processor.version; + let a = pluginVer.split('.'); + let b = runtimeVer.split('.'); + + if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) { + // eslint-disable-next-line no-console + console.error( + 'Unknown error from PostCSS plugin. Your current PostCSS ' + + 'version is ' + + runtimeVer + + ', but ' + + pluginName + + ' uses ' + + pluginVer + + '. Perhaps this is the source of the error below.' + ); + } + } + } + } catch (err) { + /* c8 ignore next 3 */ + // eslint-disable-next-line no-console + if (console && console.error) console.error(err); + } + return error + } + + prepareVisitors() { + this.listeners = {}; + let add = (plugin, type, cb) => { + if (!this.listeners[type]) this.listeners[type] = []; + this.listeners[type].push([plugin, cb]); + }; + for (let plugin of this.plugins) { + if (typeof plugin === 'object') { + for (let event in plugin) { + if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) { + throw new Error( + `Unknown event ${event} in ${plugin.postcssPlugin}. ` + + `Try to update PostCSS (${this.processor.version} now).` + ) + } + if (!NOT_VISITORS[event]) { + if (typeof plugin[event] === 'object') { + for (let filter in plugin[event]) { + if (filter === '*') { + add(plugin, event, plugin[event][filter]); + } else { + add( + plugin, + event + '-' + filter.toLowerCase(), + plugin[event][filter] + ); + } + } + } else if (typeof plugin[event] === 'function') { + add(plugin, event, plugin[event]); + } + } + } + } + } + this.hasListener = Object.keys(this.listeners).length > 0; + } + + async runAsync() { + this.plugin = 0; + for (let i = 0; i < this.plugins.length; i++) { + let plugin = this.plugins[i]; + let promise = this.runOnRoot(plugin); + if (isPromise(promise)) { + try { + await promise; + } catch (error) { + throw this.handleError(error) + } + } + } + + this.prepareVisitors(); + if (this.hasListener) { + let root = this.result.root; + while (!root[isClean]) { + root[isClean] = true; + let stack = [toStack(root)]; + while (stack.length > 0) { + let promise = this.visitTick(stack); + if (isPromise(promise)) { + try { + await promise; + } catch (e) { + let node = stack[stack.length - 1].node; + throw this.handleError(e, node) + } + } + } + } + + if (this.listeners.OnceExit) { + for (let [plugin, visitor] of this.listeners.OnceExit) { + this.result.lastPlugin = plugin; + try { + if (root.type === 'document') { + let roots = root.nodes.map(subRoot => + visitor(subRoot, this.helpers) + ); + + await Promise.all(roots); + } else { + await visitor(root, this.helpers); + } + } catch (e) { + throw this.handleError(e) + } + } + } + } + + this.processed = true; + return this.stringify() + } + + runOnRoot(plugin) { + this.result.lastPlugin = plugin; + try { + if (typeof plugin === 'object' && plugin.Once) { + if (this.result.root.type === 'document') { + let roots = this.result.root.nodes.map(root => + plugin.Once(root, this.helpers) + ); + + if (isPromise(roots[0])) { + return Promise.all(roots) + } + + return roots + } + + return plugin.Once(this.result.root, this.helpers) + } else if (typeof plugin === 'function') { + return plugin(this.result.root, this.result) + } + } catch (error) { + throw this.handleError(error) + } + } + + stringify() { + if (this.error) throw this.error + if (this.stringified) return this.result + this.stringified = true; + + this.sync(); + + let opts = this.result.opts; + let str = stringify; + if (opts.syntax) str = opts.syntax.stringify; + if (opts.stringifier) str = opts.stringifier; + if (str.stringify) str = str.stringify; + + let map = new MapGenerator(str, this.result.root, this.result.opts); + let data = map.generate(); + this.result.css = data[0]; + this.result.map = data[1]; + + return this.result + } + + sync() { + if (this.error) throw this.error + if (this.processed) return this.result + this.processed = true; + + if (this.processing) { + throw this.getAsyncError() + } + + for (let plugin of this.plugins) { + let promise = this.runOnRoot(plugin); + if (isPromise(promise)) { + throw this.getAsyncError() + } + } + + this.prepareVisitors(); + if (this.hasListener) { + let root = this.result.root; + while (!root[isClean]) { + root[isClean] = true; + this.walkSync(root); + } + if (this.listeners.OnceExit) { + if (root.type === 'document') { + for (let subRoot of root.nodes) { + this.visitSync(this.listeners.OnceExit, subRoot); + } + } else { + this.visitSync(this.listeners.OnceExit, root); + } + } + } + + return this.result + } + + then(onFulfilled, onRejected) { + if (browser$1.env.NODE_ENV !== 'production') { + if (!('from' in this.opts)) { + warnOnce( + 'Without `from` option PostCSS could generate wrong source map ' + + 'and will not find Browserslist config. Set it to CSS file path ' + + 'or to `undefined` to prevent this warning.' + ); + } + } + return this.async().then(onFulfilled, onRejected) + } + + toString() { + return this.css + } + + visitSync(visitors, node) { + for (let [plugin, visitor] of visitors) { + this.result.lastPlugin = plugin; + let promise; + try { + promise = visitor(node, this.helpers); + } catch (e) { + throw this.handleError(e, node.proxyOf) + } + if (node.type !== 'root' && node.type !== 'document' && !node.parent) { + return true + } + if (isPromise(promise)) { + throw this.getAsyncError() + } + } + } + + visitTick(stack) { + let visit = stack[stack.length - 1]; + let { node, visitors } = visit; + + if (node.type !== 'root' && node.type !== 'document' && !node.parent) { + stack.pop(); + return + } + + if (visitors.length > 0 && visit.visitorIndex < visitors.length) { + let [plugin, visitor] = visitors[visit.visitorIndex]; + visit.visitorIndex += 1; + if (visit.visitorIndex === visitors.length) { + visit.visitors = []; + visit.visitorIndex = 0; + } + this.result.lastPlugin = plugin; + try { + return visitor(node.toProxy(), this.helpers) + } catch (e) { + throw this.handleError(e, node) + } + } + + if (visit.iterator !== 0) { + let iterator = visit.iterator; + let child; + while ((child = node.nodes[node.indexes[iterator]])) { + node.indexes[iterator] += 1; + if (!child[isClean]) { + child[isClean] = true; + stack.push(toStack(child)); + return + } + } + visit.iterator = 0; + delete node.indexes[iterator]; + } + + let events = visit.events; + while (visit.eventIndex < events.length) { + let event = events[visit.eventIndex]; + visit.eventIndex += 1; + if (event === CHILDREN) { + if (node.nodes && node.nodes.length) { + node[isClean] = true; + visit.iterator = node.getIterator(); + } + return + } else if (this.listeners[event]) { + visit.visitors = this.listeners[event]; + return + } + } + stack.pop(); + } + + walkSync(node) { + node[isClean] = true; + let events = getEvents(node); + for (let event of events) { + if (event === CHILDREN) { + if (node.nodes) { + node.each(child => { + if (!child[isClean]) this.walkSync(child); + }); + } + } else { + let visitors = this.listeners[event]; + if (visitors) { + if (this.visitSync(visitors, node.toProxy())) return + } + } + } + } + + warnings() { + return this.sync().warnings() + } + } + + LazyResult.registerPostcss = dependant => { + postcss = dependant; + }; + + lazyResult = LazyResult; + LazyResult.default = LazyResult; + + Root.registerLazyResult(LazyResult); + Document.registerLazyResult(LazyResult); + return lazyResult; +} + +var noWorkResult; +var hasRequiredNoWorkResult; + +function requireNoWorkResult () { + if (hasRequiredNoWorkResult) return noWorkResult; + hasRequiredNoWorkResult = 1; + + let MapGenerator = /*@__PURE__*/ requireMapGenerator(); + let parse = /*@__PURE__*/ requireParse(); + const Result = /*@__PURE__*/ requireResult(); + let stringify = /*@__PURE__*/ requireStringify(); + let warnOnce = /*@__PURE__*/ requireWarnOnce(); + + class NoWorkResult { + get content() { + return this.result.css + } + + get css() { + return this.result.css + } + + get map() { + return this.result.map + } + + get messages() { + return [] + } + + get opts() { + return this.result.opts + } + + get processor() { + return this.result.processor + } + + get root() { + if (this._root) { + return this._root + } + + let root; + let parser = parse; + + try { + root = parser(this._css, this._opts); + } catch (error) { + this.error = error; + } + + if (this.error) { + throw this.error + } else { + this._root = root; + return root + } + } + + get [Symbol.toStringTag]() { + return 'NoWorkResult' + } + + constructor(processor, css, opts) { + css = css.toString(); + this.stringified = false; + + this._processor = processor; + this._css = css; + this._opts = opts; + this._map = undefined; + let root; + + let str = stringify; + this.result = new Result(this._processor, root, this._opts); + this.result.css = css; + + let self = this; + Object.defineProperty(this.result, 'root', { + get() { + return self.root + } + }); + + let map = new MapGenerator(str, root, this._opts, css); + if (map.isMap()) { + let [generatedCSS, generatedMap] = map.generate(); + if (generatedCSS) { + this.result.css = generatedCSS; + } + if (generatedMap) { + this.result.map = generatedMap; + } + } else { + map.clearAnnotation(); + this.result.css = map.css; + } + } + + async() { + if (this.error) return Promise.reject(this.error) + return Promise.resolve(this.result) + } + + catch(onRejected) { + return this.async().catch(onRejected) + } + + finally(onFinally) { + return this.async().then(onFinally, onFinally) + } + + sync() { + if (this.error) throw this.error + return this.result + } + + then(onFulfilled, onRejected) { + if (browser$1.env.NODE_ENV !== 'production') { + if (!('from' in this._opts)) { + warnOnce( + 'Without `from` option PostCSS could generate wrong source map ' + + 'and will not find Browserslist config. Set it to CSS file path ' + + 'or to `undefined` to prevent this warning.' + ); + } + } + + return this.async().then(onFulfilled, onRejected) + } + + toString() { + return this._css + } + + warnings() { + return [] + } + } + + noWorkResult = NoWorkResult; + NoWorkResult.default = NoWorkResult; + return noWorkResult; +} + +var processor$1; +var hasRequiredProcessor$1; + +function requireProcessor$1 () { + if (hasRequiredProcessor$1) return processor$1; + hasRequiredProcessor$1 = 1; + + let Document = /*@__PURE__*/ requireDocument(); + let LazyResult = /*@__PURE__*/ requireLazyResult(); + let NoWorkResult = /*@__PURE__*/ requireNoWorkResult(); + let Root = /*@__PURE__*/ requireRoot$1(); + + class Processor { + constructor(plugins = []) { + this.version = '8.5.6'; + this.plugins = this.normalize(plugins); + } + + normalize(plugins) { + let normalized = []; + for (let i of plugins) { + if (i.postcss === true) { + i = i(); + } else if (i.postcss) { + i = i.postcss; + } + + if (typeof i === 'object' && Array.isArray(i.plugins)) { + normalized = normalized.concat(i.plugins); + } else if (typeof i === 'object' && i.postcssPlugin) { + normalized.push(i); + } else if (typeof i === 'function') { + normalized.push(i); + } else if (typeof i === 'object' && (i.parse || i.stringify)) { + if (browser$1.env.NODE_ENV !== 'production') { + throw new Error( + 'PostCSS syntaxes cannot be used as plugins. Instead, please use ' + + 'one of the syntax/parser/stringifier options as outlined ' + + 'in your PostCSS runner documentation.' + ) + } + } else { + throw new Error(i + ' is not a PostCSS plugin') + } + } + return normalized + } + + process(css, opts = {}) { + if ( + !this.plugins.length && + !opts.parser && + !opts.stringifier && + !opts.syntax + ) { + return new NoWorkResult(this, css, opts) + } else { + return new LazyResult(this, css, opts) + } + } + + use(plugin) { + this.plugins = this.plugins.concat(this.normalize([plugin])); + return this + } + } + + processor$1 = Processor; + Processor.default = Processor; + + Root.registerProcessor(Processor); + Document.registerProcessor(Processor); + return processor$1; +} + +var postcss_1; +var hasRequiredPostcss; + +function requirePostcss () { + if (hasRequiredPostcss) return postcss_1; + hasRequiredPostcss = 1; + + let AtRule = /*@__PURE__*/ requireAtRule(); + let Comment = /*@__PURE__*/ requireComment$1(); + let Container = /*@__PURE__*/ requireContainer$1(); + let CssSyntaxError = /*@__PURE__*/ requireCssSyntaxError(); + let Declaration = /*@__PURE__*/ requireDeclaration(); + let Document = /*@__PURE__*/ requireDocument(); + let fromJSON = /*@__PURE__*/ requireFromJSON(); + let Input = /*@__PURE__*/ requireInput(); + let LazyResult = /*@__PURE__*/ requireLazyResult(); + let list = /*@__PURE__*/ requireList(); + let Node = /*@__PURE__*/ requireNode$2(); + let parse = /*@__PURE__*/ requireParse(); + let Processor = /*@__PURE__*/ requireProcessor$1(); + let Result = /*@__PURE__*/ requireResult(); + let Root = /*@__PURE__*/ requireRoot$1(); + let Rule = /*@__PURE__*/ requireRule(); + let stringify = /*@__PURE__*/ requireStringify(); + let Warning = /*@__PURE__*/ requireWarning(); + + function postcss(...plugins) { + if (plugins.length === 1 && Array.isArray(plugins[0])) { + plugins = plugins[0]; + } + return new Processor(plugins) + } + + postcss.plugin = function plugin(name, initializer) { + let warningPrinted = false; + function creator(...args) { + // eslint-disable-next-line no-console + if (console && console.warn && !warningPrinted) { + warningPrinted = true; + // eslint-disable-next-line no-console + console.warn( + name + + ': postcss.plugin was deprecated. Migration guide:\n' + + 'https://evilmartians.com/chronicles/postcss-8-plugin-migration' + ); + if (browser$1.env.LANG && browser$1.env.LANG.startsWith('cn')) { + /* c8 ignore next 7 */ + // eslint-disable-next-line no-console + console.warn( + name + + ': 里面 postcss.plugin 被弃用. 迁移指南:\n' + + 'https://www.w3ctech.com/topic/2226' + ); + } + } + let transformer = initializer(...args); + transformer.postcssPlugin = name; + transformer.postcssVersion = new Processor().version; + return transformer + } + + let cache; + Object.defineProperty(creator, 'postcss', { + get() { + if (!cache) cache = creator(); + return cache + } + }); + + creator.process = function (css, processOpts, pluginOpts) { + return postcss([creator(pluginOpts)]).process(css, processOpts) + }; + + return creator + }; + + postcss.stringify = stringify; + postcss.parse = parse; + postcss.fromJSON = fromJSON; + postcss.list = list; + + postcss.comment = defaults => new Comment(defaults); + postcss.atRule = defaults => new AtRule(defaults); + postcss.decl = defaults => new Declaration(defaults); + postcss.rule = defaults => new Rule(defaults); + postcss.root = defaults => new Root(defaults); + postcss.document = defaults => new Document(defaults); + + postcss.CssSyntaxError = CssSyntaxError; + postcss.Declaration = Declaration; + postcss.Container = Container; + postcss.Processor = Processor; + postcss.Document = Document; + postcss.Comment = Comment; + postcss.Warning = Warning; + postcss.AtRule = AtRule; + postcss.Result = Result; + postcss.Input = Input; + postcss.Rule = Rule; + postcss.Root = Root; + postcss.Node = Node; + + LazyResult.registerPostcss(postcss); + + postcss_1 = postcss; + postcss.default = postcss; + return postcss_1; +} + +var postcssExports = /*@__PURE__*/ requirePostcss(); +var postcss = /*@__PURE__*/getDefaultExportFromCjs(postcssExports); + +postcss.stringify; +postcss.fromJSON; +postcss.plugin; +postcss.parse; +postcss.list; + +postcss.document; +postcss.comment; +postcss.atRule; +postcss.rule; +postcss.decl; +postcss.root; + +postcss.CssSyntaxError; +postcss.Declaration; +postcss.Container; +postcss.Processor; +postcss.Document; +postcss.Comment; +postcss.Warning; +postcss.AtRule; +postcss.Result; +postcss.Input; +const Rule = postcss.Rule; +postcss.Root; +postcss.Node; + +const trimPlugin = () => { + return { + postcssPlugin: "vue-sfc-trim", + Once(root) { + root.walk(({ type, raws }) => { + if (type === "rule" || type === "atrule") { + if (raws.before) raws.before = "\n"; + if ("after" in raws && raws.after) raws.after = "\n"; + } + }); + } + }; +}; +trimPlugin.postcss = true; + +var dist = {exports: {}}; + +var processor = {exports: {}}; + +var parser = {exports: {}}; + +var root = {exports: {}}; + +var container = {exports: {}}; + +var node$1 = {exports: {}}; + +var util$1 = {}; + +var unesc = {exports: {}}; + +var hasRequiredUnesc; + +function requireUnesc () { + if (hasRequiredUnesc) return unesc.exports; + hasRequiredUnesc = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = unesc; + // Many thanks for this post which made this migration much easier. + // https://mathiasbynens.be/notes/css-escapes + + /** + * + * @param {string} str + * @returns {[string, number]|undefined} + */ + function gobbleHex(str) { + var lower = str.toLowerCase(); + var hex = ''; + var spaceTerminated = false; + for (var i = 0; i < 6 && lower[i] !== undefined; i++) { + var code = lower.charCodeAt(i); + // check to see if we are dealing with a valid hex char [a-f|0-9] + var valid = code >= 97 && code <= 102 || code >= 48 && code <= 57; + // https://drafts.csswg.org/css-syntax/#consume-escaped-code-point + spaceTerminated = code === 32; + if (!valid) { + break; + } + hex += lower[i]; + } + if (hex.length === 0) { + return undefined; + } + var codePoint = parseInt(hex, 16); + var isSurrogate = codePoint >= 0xD800 && codePoint <= 0xDFFF; + // Add special case for + // "If this number is zero, or is for a surrogate, or is greater than the maximum allowed code point" + // https://drafts.csswg.org/css-syntax/#maximum-allowed-code-point + if (isSurrogate || codePoint === 0x0000 || codePoint > 0x10FFFF) { + return ["\uFFFD", hex.length + (spaceTerminated ? 1 : 0)]; + } + return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)]; + } + var CONTAINS_ESCAPE = /\\/; + function unesc(str) { + var needToProcess = CONTAINS_ESCAPE.test(str); + if (!needToProcess) { + return str; + } + var ret = ""; + for (var i = 0; i < str.length; i++) { + if (str[i] === "\\") { + var gobbled = gobbleHex(str.slice(i + 1, i + 7)); + if (gobbled !== undefined) { + ret += gobbled[0]; + i += gobbled[1]; + continue; + } + + // Retain a pair of \\ if double escaped `\\\\` + // https://github.com/postcss/postcss-selector-parser/commit/268c9a7656fb53f543dc620aa5b73a30ec3ff20e + if (str[i + 1] === "\\") { + ret += "\\"; + i++; + continue; + } + + // if \\ is at the end of the string retain it + // https://github.com/postcss/postcss-selector-parser/commit/01a6b346e3612ce1ab20219acc26abdc259ccefb + if (str.length === i + 1) { + ret += str[i]; + } + continue; + } + ret += str[i]; + } + return ret; + } + module.exports = exports.default; + } (unesc, unesc.exports)); + return unesc.exports; +} + +var getProp = {exports: {}}; + +var hasRequiredGetProp; + +function requireGetProp () { + if (hasRequiredGetProp) return getProp.exports; + hasRequiredGetProp = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = getProp; + function getProp(obj) { + for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + props[_key - 1] = arguments[_key]; + } + while (props.length > 0) { + var prop = props.shift(); + if (!obj[prop]) { + return undefined; + } + obj = obj[prop]; + } + return obj; + } + module.exports = exports.default; + } (getProp, getProp.exports)); + return getProp.exports; +} + +var ensureObject = {exports: {}}; + +var hasRequiredEnsureObject; + +function requireEnsureObject () { + if (hasRequiredEnsureObject) return ensureObject.exports; + hasRequiredEnsureObject = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = ensureObject; + function ensureObject(obj) { + for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + props[_key - 1] = arguments[_key]; + } + while (props.length > 0) { + var prop = props.shift(); + if (!obj[prop]) { + obj[prop] = {}; + } + obj = obj[prop]; + } + } + module.exports = exports.default; + } (ensureObject, ensureObject.exports)); + return ensureObject.exports; +} + +var stripComments = {exports: {}}; + +var hasRequiredStripComments; + +function requireStripComments () { + if (hasRequiredStripComments) return stripComments.exports; + hasRequiredStripComments = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = stripComments; + function stripComments(str) { + var s = ""; + var commentStart = str.indexOf("/*"); + var lastEnd = 0; + while (commentStart >= 0) { + s = s + str.slice(lastEnd, commentStart); + var commentEnd = str.indexOf("*/", commentStart + 2); + if (commentEnd < 0) { + return s; + } + lastEnd = commentEnd + 2; + commentStart = str.indexOf("/*", lastEnd); + } + s = s + str.slice(lastEnd); + return s; + } + module.exports = exports.default; + } (stripComments, stripComments.exports)); + return stripComments.exports; +} + +var hasRequiredUtil$1; + +function requireUtil$1 () { + if (hasRequiredUtil$1) return util$1; + hasRequiredUtil$1 = 1; + + util$1.__esModule = true; + util$1.unesc = util$1.stripComments = util$1.getProp = util$1.ensureObject = void 0; + var _unesc = _interopRequireDefault(/*@__PURE__*/ requireUnesc()); + util$1.unesc = _unesc["default"]; + var _getProp = _interopRequireDefault(/*@__PURE__*/ requireGetProp()); + util$1.getProp = _getProp["default"]; + var _ensureObject = _interopRequireDefault(/*@__PURE__*/ requireEnsureObject()); + util$1.ensureObject = _ensureObject["default"]; + var _stripComments = _interopRequireDefault(/*@__PURE__*/ requireStripComments()); + util$1.stripComments = _stripComments["default"]; + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + return util$1; +} + +var hasRequiredNode$1; + +function requireNode$1 () { + if (hasRequiredNode$1) return node$1.exports; + hasRequiredNode$1 = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _util = /*@__PURE__*/ requireUtil$1(); + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + var cloneNode = function cloneNode(obj, parent) { + if (typeof obj !== 'object' || obj === null) { + return obj; + } + var cloned = new obj.constructor(); + for (var i in obj) { + if (!obj.hasOwnProperty(i)) { + continue; + } + var value = obj[i]; + var type = typeof value; + if (i === 'parent' && type === 'object') { + if (parent) { + cloned[i] = parent; + } + } else if (value instanceof Array) { + cloned[i] = value.map(function (j) { + return cloneNode(j, cloned); + }); + } else { + cloned[i] = cloneNode(value, cloned); + } + } + return cloned; + }; + var Node = /*#__PURE__*/function () { + function Node(opts) { + if (opts === void 0) { + opts = {}; + } + Object.assign(this, opts); + this.spaces = this.spaces || {}; + this.spaces.before = this.spaces.before || ''; + this.spaces.after = this.spaces.after || ''; + } + var _proto = Node.prototype; + _proto.remove = function remove() { + if (this.parent) { + this.parent.removeChild(this); + } + this.parent = undefined; + return this; + }; + _proto.replaceWith = function replaceWith() { + if (this.parent) { + for (var index in arguments) { + this.parent.insertBefore(this, arguments[index]); + } + this.remove(); + } + return this; + }; + _proto.next = function next() { + return this.parent.at(this.parent.index(this) + 1); + }; + _proto.prev = function prev() { + return this.parent.at(this.parent.index(this) - 1); + }; + _proto.clone = function clone(overrides) { + if (overrides === void 0) { + overrides = {}; + } + var cloned = cloneNode(this); + for (var name in overrides) { + cloned[name] = overrides[name]; + } + return cloned; + } + + /** + * Some non-standard syntax doesn't follow normal escaping rules for css. + * This allows non standard syntax to be appended to an existing property + * by specifying the escaped value. By specifying the escaped value, + * illegal characters are allowed to be directly inserted into css output. + * @param {string} name the property to set + * @param {any} value the unescaped value of the property + * @param {string} valueEscaped optional. the escaped value of the property. + */; + _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) { + if (!this.raws) { + this.raws = {}; + } + var originalValue = this[name]; + var originalEscaped = this.raws[name]; + this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first. + if (originalEscaped || valueEscaped !== value) { + this.raws[name] = (originalEscaped || originalValue) + valueEscaped; + } else { + delete this.raws[name]; // delete any escaped value that was created by the setter. + } + } + + /** + * Some non-standard syntax doesn't follow normal escaping rules for css. + * This allows the escaped value to be specified directly, allowing illegal + * characters to be directly inserted into css output. + * @param {string} name the property to set + * @param {any} value the unescaped value of the property + * @param {string} valueEscaped the escaped value of the property. + */; + _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) { + if (!this.raws) { + this.raws = {}; + } + this[name] = value; // this may trigger a setter that updates raws, so it has to be set first. + this.raws[name] = valueEscaped; + } + + /** + * When you want a value to passed through to CSS directly. This method + * deletes the corresponding raw value causing the stringifier to fallback + * to the unescaped value. + * @param {string} name the property to set. + * @param {any} value The value that is both escaped and unescaped. + */; + _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) { + this[name] = value; // this may trigger a setter that updates raws, so it has to be set first. + if (this.raws) { + delete this.raws[name]; + } + } + + /** + * + * @param {number} line The number (starting with 1) + * @param {number} column The column number (starting with 1) + */; + _proto.isAtPosition = function isAtPosition(line, column) { + if (this.source && this.source.start && this.source.end) { + if (this.source.start.line > line) { + return false; + } + if (this.source.end.line < line) { + return false; + } + if (this.source.start.line === line && this.source.start.column > column) { + return false; + } + if (this.source.end.line === line && this.source.end.column < column) { + return false; + } + return true; + } + return undefined; + }; + _proto.stringifyProperty = function stringifyProperty(name) { + return this.raws && this.raws[name] || this[name]; + }; + _proto.valueToString = function valueToString() { + return String(this.stringifyProperty("value")); + }; + _proto.toString = function toString() { + return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join(''); + }; + _createClass(Node, [{ + key: "rawSpaceBefore", + get: function get() { + var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before; + if (rawSpace === undefined) { + rawSpace = this.spaces && this.spaces.before; + } + return rawSpace || ""; + }, + set: function set(raw) { + (0, _util.ensureObject)(this, "raws", "spaces"); + this.raws.spaces.before = raw; + } + }, { + key: "rawSpaceAfter", + get: function get() { + var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after; + if (rawSpace === undefined) { + rawSpace = this.spaces.after; + } + return rawSpace || ""; + }, + set: function set(raw) { + (0, _util.ensureObject)(this, "raws", "spaces"); + this.raws.spaces.after = raw; + } + }]); + return Node; + }(); + exports["default"] = Node; + module.exports = exports.default; + } (node$1, node$1.exports)); + return node$1.exports; +} + +var types = {}; + +var hasRequiredTypes; + +function requireTypes () { + if (hasRequiredTypes) return types; + hasRequiredTypes = 1; + + types.__esModule = true; + types.UNIVERSAL = types.TAG = types.STRING = types.SELECTOR = types.ROOT = types.PSEUDO = types.NESTING = types.ID = types.COMMENT = types.COMBINATOR = types.CLASS = types.ATTRIBUTE = void 0; + var TAG = 'tag'; + types.TAG = TAG; + var STRING = 'string'; + types.STRING = STRING; + var SELECTOR = 'selector'; + types.SELECTOR = SELECTOR; + var ROOT = 'root'; + types.ROOT = ROOT; + var PSEUDO = 'pseudo'; + types.PSEUDO = PSEUDO; + var NESTING = 'nesting'; + types.NESTING = NESTING; + var ID = 'id'; + types.ID = ID; + var COMMENT = 'comment'; + types.COMMENT = COMMENT; + var COMBINATOR = 'combinator'; + types.COMBINATOR = COMBINATOR; + var CLASS = 'class'; + types.CLASS = CLASS; + var ATTRIBUTE = 'attribute'; + types.ATTRIBUTE = ATTRIBUTE; + var UNIVERSAL = 'universal'; + types.UNIVERSAL = UNIVERSAL; + return types; +} + +var hasRequiredContainer; + +function requireContainer () { + if (hasRequiredContainer) return container.exports; + hasRequiredContainer = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$1()); + var types = _interopRequireWildcard(/*@__PURE__*/ requireTypes()); + function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike) { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Container = /*#__PURE__*/function (_Node) { + _inheritsLoose(Container, _Node); + function Container(opts) { + var _this; + _this = _Node.call(this, opts) || this; + if (!_this.nodes) { + _this.nodes = []; + } + return _this; + } + var _proto = Container.prototype; + _proto.append = function append(selector) { + selector.parent = this; + this.nodes.push(selector); + return this; + }; + _proto.prepend = function prepend(selector) { + selector.parent = this; + this.nodes.unshift(selector); + for (var id in this.indexes) { + this.indexes[id]++; + } + return this; + }; + _proto.at = function at(index) { + return this.nodes[index]; + }; + _proto.index = function index(child) { + if (typeof child === 'number') { + return child; + } + return this.nodes.indexOf(child); + }; + _proto.removeChild = function removeChild(child) { + child = this.index(child); + this.at(child).parent = undefined; + this.nodes.splice(child, 1); + var index; + for (var id in this.indexes) { + index = this.indexes[id]; + if (index >= child) { + this.indexes[id] = index - 1; + } + } + return this; + }; + _proto.removeAll = function removeAll() { + for (var _iterator = _createForOfIteratorHelperLoose(this.nodes), _step; !(_step = _iterator()).done;) { + var node = _step.value; + node.parent = undefined; + } + this.nodes = []; + return this; + }; + _proto.empty = function empty() { + return this.removeAll(); + }; + _proto.insertAfter = function insertAfter(oldNode, newNode) { + var _this$nodes; + newNode.parent = this; + var oldIndex = this.index(oldNode); + var resetNode = []; + for (var i = 2; i < arguments.length; i++) { + resetNode.push(arguments[i]); + } + (_this$nodes = this.nodes).splice.apply(_this$nodes, [oldIndex + 1, 0, newNode].concat(resetNode)); + newNode.parent = this; + var index; + for (var id in this.indexes) { + index = this.indexes[id]; + if (oldIndex < index) { + this.indexes[id] = index + arguments.length - 1; + } + } + return this; + }; + _proto.insertBefore = function insertBefore(oldNode, newNode) { + var _this$nodes2; + newNode.parent = this; + var oldIndex = this.index(oldNode); + var resetNode = []; + for (var i = 2; i < arguments.length; i++) { + resetNode.push(arguments[i]); + } + (_this$nodes2 = this.nodes).splice.apply(_this$nodes2, [oldIndex, 0, newNode].concat(resetNode)); + newNode.parent = this; + var index; + for (var id in this.indexes) { + index = this.indexes[id]; + if (index >= oldIndex) { + this.indexes[id] = index + arguments.length - 1; + } + } + return this; + }; + _proto._findChildAtPosition = function _findChildAtPosition(line, col) { + var found = undefined; + this.each(function (node) { + if (node.atPosition) { + var foundChild = node.atPosition(line, col); + if (foundChild) { + found = foundChild; + return false; + } + } else if (node.isAtPosition(line, col)) { + found = node; + return false; + } + }); + return found; + } + + /** + * Return the most specific node at the line and column number given. + * The source location is based on the original parsed location, locations aren't + * updated as selector nodes are mutated. + * + * Note that this location is relative to the location of the first character + * of the selector, and not the location of the selector in the overall document + * when used in conjunction with postcss. + * + * If not found, returns undefined. + * @param {number} line The line number of the node to find. (1-based index) + * @param {number} col The column number of the node to find. (1-based index) + */; + _proto.atPosition = function atPosition(line, col) { + if (this.isAtPosition(line, col)) { + return this._findChildAtPosition(line, col) || this; + } else { + return undefined; + } + }; + _proto._inferEndPosition = function _inferEndPosition() { + if (this.last && this.last.source && this.last.source.end) { + this.source = this.source || {}; + this.source.end = this.source.end || {}; + Object.assign(this.source.end, this.last.source.end); + } + }; + _proto.each = function each(callback) { + if (!this.lastEach) { + this.lastEach = 0; + } + if (!this.indexes) { + this.indexes = {}; + } + this.lastEach++; + var id = this.lastEach; + this.indexes[id] = 0; + if (!this.length) { + return undefined; + } + var index, result; + while (this.indexes[id] < this.length) { + index = this.indexes[id]; + result = callback(this.at(index), index); + if (result === false) { + break; + } + this.indexes[id] += 1; + } + delete this.indexes[id]; + if (result === false) { + return false; + } + }; + _proto.walk = function walk(callback) { + return this.each(function (node, i) { + var result = callback(node, i); + if (result !== false && node.length) { + result = node.walk(callback); + } + if (result === false) { + return false; + } + }); + }; + _proto.walkAttributes = function walkAttributes(callback) { + var _this2 = this; + return this.walk(function (selector) { + if (selector.type === types.ATTRIBUTE) { + return callback.call(_this2, selector); + } + }); + }; + _proto.walkClasses = function walkClasses(callback) { + var _this3 = this; + return this.walk(function (selector) { + if (selector.type === types.CLASS) { + return callback.call(_this3, selector); + } + }); + }; + _proto.walkCombinators = function walkCombinators(callback) { + var _this4 = this; + return this.walk(function (selector) { + if (selector.type === types.COMBINATOR) { + return callback.call(_this4, selector); + } + }); + }; + _proto.walkComments = function walkComments(callback) { + var _this5 = this; + return this.walk(function (selector) { + if (selector.type === types.COMMENT) { + return callback.call(_this5, selector); + } + }); + }; + _proto.walkIds = function walkIds(callback) { + var _this6 = this; + return this.walk(function (selector) { + if (selector.type === types.ID) { + return callback.call(_this6, selector); + } + }); + }; + _proto.walkNesting = function walkNesting(callback) { + var _this7 = this; + return this.walk(function (selector) { + if (selector.type === types.NESTING) { + return callback.call(_this7, selector); + } + }); + }; + _proto.walkPseudos = function walkPseudos(callback) { + var _this8 = this; + return this.walk(function (selector) { + if (selector.type === types.PSEUDO) { + return callback.call(_this8, selector); + } + }); + }; + _proto.walkTags = function walkTags(callback) { + var _this9 = this; + return this.walk(function (selector) { + if (selector.type === types.TAG) { + return callback.call(_this9, selector); + } + }); + }; + _proto.walkUniversals = function walkUniversals(callback) { + var _this10 = this; + return this.walk(function (selector) { + if (selector.type === types.UNIVERSAL) { + return callback.call(_this10, selector); + } + }); + }; + _proto.split = function split(callback) { + var _this11 = this; + var current = []; + return this.reduce(function (memo, node, index) { + var split = callback.call(_this11, node); + current.push(node); + if (split) { + memo.push(current); + current = []; + } else if (index === _this11.length - 1) { + memo.push(current); + } + return memo; + }, []); + }; + _proto.map = function map(callback) { + return this.nodes.map(callback); + }; + _proto.reduce = function reduce(callback, memo) { + return this.nodes.reduce(callback, memo); + }; + _proto.every = function every(callback) { + return this.nodes.every(callback); + }; + _proto.some = function some(callback) { + return this.nodes.some(callback); + }; + _proto.filter = function filter(callback) { + return this.nodes.filter(callback); + }; + _proto.sort = function sort(callback) { + return this.nodes.sort(callback); + }; + _proto.toString = function toString() { + return this.map(String).join(''); + }; + _createClass(Container, [{ + key: "first", + get: function get() { + return this.at(0); + } + }, { + key: "last", + get: function get() { + return this.at(this.length - 1); + } + }, { + key: "length", + get: function get() { + return this.nodes.length; + } + }]); + return Container; + }(_node["default"]); + exports["default"] = Container; + module.exports = exports.default; + } (container, container.exports)); + return container.exports; +} + +var hasRequiredRoot; + +function requireRoot () { + if (hasRequiredRoot) return root.exports; + hasRequiredRoot = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _container = _interopRequireDefault(/*@__PURE__*/ requireContainer()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Root = /*#__PURE__*/function (_Container) { + _inheritsLoose(Root, _Container); + function Root(opts) { + var _this; + _this = _Container.call(this, opts) || this; + _this.type = _types.ROOT; + return _this; + } + var _proto = Root.prototype; + _proto.toString = function toString() { + var str = this.reduce(function (memo, selector) { + memo.push(String(selector)); + return memo; + }, []).join(','); + return this.trailingComma ? str + ',' : str; + }; + _proto.error = function error(message, options) { + if (this._error) { + return this._error(message, options); + } else { + return new Error(message); + } + }; + _createClass(Root, [{ + key: "errorGenerator", + set: function set(handler) { + this._error = handler; + } + }]); + return Root; + }(_container["default"]); + exports["default"] = Root; + module.exports = exports.default; + } (root, root.exports)); + return root.exports; +} + +var selector = {exports: {}}; + +var hasRequiredSelector; + +function requireSelector () { + if (hasRequiredSelector) return selector.exports; + hasRequiredSelector = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _container = _interopRequireDefault(/*@__PURE__*/ requireContainer()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Selector = /*#__PURE__*/function (_Container) { + _inheritsLoose(Selector, _Container); + function Selector(opts) { + var _this; + _this = _Container.call(this, opts) || this; + _this.type = _types.SELECTOR; + return _this; + } + return Selector; + }(_container["default"]); + exports["default"] = Selector; + module.exports = exports.default; + } (selector, selector.exports)); + return selector.exports; +} + +var className = {exports: {}}; + +/*! https://mths.be/cssesc v3.0.0 by @mathias */ + +var cssesc_1; +var hasRequiredCssesc; + +function requireCssesc () { + if (hasRequiredCssesc) return cssesc_1; + hasRequiredCssesc = 1; + + var object = {}; + var hasOwnProperty = object.hasOwnProperty; + var merge = function merge(options, defaults) { + if (!options) { + return defaults; + } + var result = {}; + for (var key in defaults) { + // `if (defaults.hasOwnProperty(key) { … }` is not needed here, since + // only recognized option names are used. + result[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key]; + } + return result; + }; + + var regexAnySingleEscape = /[ -,\.\/:-@\[-\^`\{-~]/; + var regexSingleEscape = /[ -,\.\/:-@\[\]\^`\{-~]/; + var regexExcessiveSpaces = /(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g; + + // https://mathiasbynens.be/notes/css-escapes#css + var cssesc = function cssesc(string, options) { + options = merge(options, cssesc.options); + if (options.quotes != 'single' && options.quotes != 'double') { + options.quotes = 'single'; + } + var quote = options.quotes == 'double' ? '"' : '\''; + var isIdentifier = options.isIdentifier; + + var firstChar = string.charAt(0); + var output = ''; + var counter = 0; + var length = string.length; + while (counter < length) { + var character = string.charAt(counter++); + var codePoint = character.charCodeAt(); + var value = void 0; + // If it’s not a printable ASCII character… + if (codePoint < 0x20 || codePoint > 0x7E) { + if (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) { + // It’s a high surrogate, and there is a next character. + var extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { + // next character is low surrogate + codePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000; + } else { + // It’s an unmatched surrogate; only append this code unit, in case + // the next code unit is the high surrogate of a surrogate pair. + counter--; + } + } + value = '\\' + codePoint.toString(16).toUpperCase() + ' '; + } else { + if (options.escapeEverything) { + if (regexAnySingleEscape.test(character)) { + value = '\\' + character; + } else { + value = '\\' + codePoint.toString(16).toUpperCase() + ' '; + } + } else if (/[\t\n\f\r\x0B]/.test(character)) { + value = '\\' + codePoint.toString(16).toUpperCase() + ' '; + } else if (character == '\\' || !isIdentifier && (character == '"' && quote == character || character == '\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) { + value = '\\' + character; + } else { + value = character; + } + } + output += value; + } + + if (isIdentifier) { + if (/^-[-\d]/.test(output)) { + output = '\\-' + output.slice(1); + } else if (/\d/.test(firstChar)) { + output = '\\3' + firstChar + ' ' + output.slice(1); + } + } + + // Remove spaces after `\HEX` escapes that are not followed by a hex digit, + // since they’re redundant. Note that this is only possible if the escape + // sequence isn’t preceded by an odd number of backslashes. + output = output.replace(regexExcessiveSpaces, function ($0, $1, $2) { + if ($1 && $1.length % 2) { + // It’s not safe to remove the space, so don’t. + return $0; + } + // Strip the space. + return ($1 || '') + $2; + }); + + if (!isIdentifier && options.wrap) { + return quote + output + quote; + } + return output; + }; + + // Expose default options (so they can be overridden globally). + cssesc.options = { + 'escapeEverything': false, + 'isIdentifier': false, + 'quotes': 'single', + 'wrap': false + }; + + cssesc.version = '3.0.0'; + + cssesc_1 = cssesc; + return cssesc_1; +} + +var hasRequiredClassName; + +function requireClassName () { + if (hasRequiredClassName) return className.exports; + hasRequiredClassName = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _cssesc = _interopRequireDefault(/*@__PURE__*/ requireCssesc()); + var _util = /*@__PURE__*/ requireUtil$1(); + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$1()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var ClassName = /*#__PURE__*/function (_Node) { + _inheritsLoose(ClassName, _Node); + function ClassName(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.CLASS; + _this._constructed = true; + return _this; + } + var _proto = ClassName.prototype; + _proto.valueToString = function valueToString() { + return '.' + _Node.prototype.valueToString.call(this); + }; + _createClass(ClassName, [{ + key: "value", + get: function get() { + return this._value; + }, + set: function set(v) { + if (this._constructed) { + var escaped = (0, _cssesc["default"])(v, { + isIdentifier: true + }); + if (escaped !== v) { + (0, _util.ensureObject)(this, "raws"); + this.raws.value = escaped; + } else if (this.raws) { + delete this.raws.value; + } + } + this._value = v; + } + }]); + return ClassName; + }(_node["default"]); + exports["default"] = ClassName; + module.exports = exports.default; + } (className, className.exports)); + return className.exports; +} + +var comment = {exports: {}}; + +var hasRequiredComment; + +function requireComment () { + if (hasRequiredComment) return comment.exports; + hasRequiredComment = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$1()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Comment = /*#__PURE__*/function (_Node) { + _inheritsLoose(Comment, _Node); + function Comment(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.COMMENT; + return _this; + } + return Comment; + }(_node["default"]); + exports["default"] = Comment; + module.exports = exports.default; + } (comment, comment.exports)); + return comment.exports; +} + +var id = {exports: {}}; + +var hasRequiredId; + +function requireId () { + if (hasRequiredId) return id.exports; + hasRequiredId = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$1()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var ID = /*#__PURE__*/function (_Node) { + _inheritsLoose(ID, _Node); + function ID(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.ID; + return _this; + } + var _proto = ID.prototype; + _proto.valueToString = function valueToString() { + return '#' + _Node.prototype.valueToString.call(this); + }; + return ID; + }(_node["default"]); + exports["default"] = ID; + module.exports = exports.default; + } (id, id.exports)); + return id.exports; +} + +var tag = {exports: {}}; + +var namespace = {exports: {}}; + +var hasRequiredNamespace; + +function requireNamespace () { + if (hasRequiredNamespace) return namespace.exports; + hasRequiredNamespace = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _cssesc = _interopRequireDefault(/*@__PURE__*/ requireCssesc()); + var _util = /*@__PURE__*/ requireUtil$1(); + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$1()); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Namespace = /*#__PURE__*/function (_Node) { + _inheritsLoose(Namespace, _Node); + function Namespace() { + return _Node.apply(this, arguments) || this; + } + var _proto = Namespace.prototype; + _proto.qualifiedName = function qualifiedName(value) { + if (this.namespace) { + return this.namespaceString + "|" + value; + } else { + return value; + } + }; + _proto.valueToString = function valueToString() { + return this.qualifiedName(_Node.prototype.valueToString.call(this)); + }; + _createClass(Namespace, [{ + key: "namespace", + get: function get() { + return this._namespace; + }, + set: function set(namespace) { + if (namespace === true || namespace === "*" || namespace === "&") { + this._namespace = namespace; + if (this.raws) { + delete this.raws.namespace; + } + return; + } + var escaped = (0, _cssesc["default"])(namespace, { + isIdentifier: true + }); + this._namespace = namespace; + if (escaped !== namespace) { + (0, _util.ensureObject)(this, "raws"); + this.raws.namespace = escaped; + } else if (this.raws) { + delete this.raws.namespace; + } + } + }, { + key: "ns", + get: function get() { + return this._namespace; + }, + set: function set(namespace) { + this.namespace = namespace; + } + }, { + key: "namespaceString", + get: function get() { + if (this.namespace) { + var ns = this.stringifyProperty("namespace"); + if (ns === true) { + return ''; + } else { + return ns; + } + } else { + return ''; + } + } + }]); + return Namespace; + }(_node["default"]); + exports["default"] = Namespace; + module.exports = exports.default; + } (namespace, namespace.exports)); + return namespace.exports; +} + +var hasRequiredTag; + +function requireTag () { + if (hasRequiredTag) return tag.exports; + hasRequiredTag = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _namespace = _interopRequireDefault(/*@__PURE__*/ requireNamespace()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Tag = /*#__PURE__*/function (_Namespace) { + _inheritsLoose(Tag, _Namespace); + function Tag(opts) { + var _this; + _this = _Namespace.call(this, opts) || this; + _this.type = _types.TAG; + return _this; + } + return Tag; + }(_namespace["default"]); + exports["default"] = Tag; + module.exports = exports.default; + } (tag, tag.exports)); + return tag.exports; +} + +var string = {exports: {}}; + +var hasRequiredString; + +function requireString () { + if (hasRequiredString) return string.exports; + hasRequiredString = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$1()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var String = /*#__PURE__*/function (_Node) { + _inheritsLoose(String, _Node); + function String(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.STRING; + return _this; + } + return String; + }(_node["default"]); + exports["default"] = String; + module.exports = exports.default; + } (string, string.exports)); + return string.exports; +} + +var pseudo = {exports: {}}; + +var hasRequiredPseudo; + +function requirePseudo () { + if (hasRequiredPseudo) return pseudo.exports; + hasRequiredPseudo = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _container = _interopRequireDefault(/*@__PURE__*/ requireContainer()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Pseudo = /*#__PURE__*/function (_Container) { + _inheritsLoose(Pseudo, _Container); + function Pseudo(opts) { + var _this; + _this = _Container.call(this, opts) || this; + _this.type = _types.PSEUDO; + return _this; + } + var _proto = Pseudo.prototype; + _proto.toString = function toString() { + var params = this.length ? '(' + this.map(String).join(',') + ')' : ''; + return [this.rawSpaceBefore, this.stringifyProperty("value"), params, this.rawSpaceAfter].join(''); + }; + return Pseudo; + }(_container["default"]); + exports["default"] = Pseudo; + module.exports = exports.default; + } (pseudo, pseudo.exports)); + return pseudo.exports; +} + +var attribute = {}; + +var node; +var hasRequiredNode; + +function requireNode () { + if (hasRequiredNode) return node; + hasRequiredNode = 1; + /** + * For Node.js, simply re-export the core `util.deprecate` function. + */ + + node = require$$0.deprecate; + return node; +} + +var hasRequiredAttribute; + +function requireAttribute () { + if (hasRequiredAttribute) return attribute; + hasRequiredAttribute = 1; + (function (exports) { + + exports.__esModule = true; + exports["default"] = void 0; + exports.unescapeValue = unescapeValue; + var _cssesc = _interopRequireDefault(/*@__PURE__*/ requireCssesc()); + var _unesc = _interopRequireDefault(/*@__PURE__*/ requireUnesc()); + var _namespace = _interopRequireDefault(/*@__PURE__*/ requireNamespace()); + var _types = /*@__PURE__*/ requireTypes(); + var _CSSESC_QUOTE_OPTIONS; + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var deprecate = /*@__PURE__*/ requireNode(); + var WRAPPED_IN_QUOTES = /^('|")([^]*)\1$/; + var warnOfDeprecatedValueAssignment = deprecate(function () {}, "Assigning an attribute a value containing characters that might need to be escaped is deprecated. " + "Call attribute.setValue() instead."); + var warnOfDeprecatedQuotedAssignment = deprecate(function () {}, "Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead."); + var warnOfDeprecatedConstructor = deprecate(function () {}, "Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now."); + function unescapeValue(value) { + var deprecatedUsage = false; + var quoteMark = null; + var unescaped = value; + var m = unescaped.match(WRAPPED_IN_QUOTES); + if (m) { + quoteMark = m[1]; + unescaped = m[2]; + } + unescaped = (0, _unesc["default"])(unescaped); + if (unescaped !== value) { + deprecatedUsage = true; + } + return { + deprecatedUsage: deprecatedUsage, + unescaped: unescaped, + quoteMark: quoteMark + }; + } + function handleDeprecatedContructorOpts(opts) { + if (opts.quoteMark !== undefined) { + return opts; + } + if (opts.value === undefined) { + return opts; + } + warnOfDeprecatedConstructor(); + var _unescapeValue = unescapeValue(opts.value), + quoteMark = _unescapeValue.quoteMark, + unescaped = _unescapeValue.unescaped; + if (!opts.raws) { + opts.raws = {}; + } + if (opts.raws.value === undefined) { + opts.raws.value = opts.value; + } + opts.value = unescaped; + opts.quoteMark = quoteMark; + return opts; + } + var Attribute = /*#__PURE__*/function (_Namespace) { + _inheritsLoose(Attribute, _Namespace); + function Attribute(opts) { + var _this; + if (opts === void 0) { + opts = {}; + } + _this = _Namespace.call(this, handleDeprecatedContructorOpts(opts)) || this; + _this.type = _types.ATTRIBUTE; + _this.raws = _this.raws || {}; + Object.defineProperty(_this.raws, 'unquoted', { + get: deprecate(function () { + return _this.value; + }, "attr.raws.unquoted is deprecated. Call attr.value instead."), + set: deprecate(function () { + return _this.value; + }, "Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.") + }); + _this._constructed = true; + return _this; + } + + /** + * Returns the Attribute's value quoted such that it would be legal to use + * in the value of a css file. The original value's quotation setting + * used for stringification is left unchanged. See `setValue(value, options)` + * if you want to control the quote settings of a new value for the attribute. + * + * You can also change the quotation used for the current value by setting quoteMark. + * + * Options: + * * quoteMark {'"' | "'" | null} - Use this value to quote the value. If this + * option is not set, the original value for quoteMark will be used. If + * indeterminate, a double quote is used. The legal values are: + * * `null` - the value will be unquoted and characters will be escaped as necessary. + * * `'` - the value will be quoted with a single quote and single quotes are escaped. + * * `"` - the value will be quoted with a double quote and double quotes are escaped. + * * preferCurrentQuoteMark {boolean} - if true, prefer the source quote mark + * over the quoteMark option value. + * * smart {boolean} - if true, will select a quote mark based on the value + * and the other options specified here. See the `smartQuoteMark()` + * method. + **/ + var _proto = Attribute.prototype; + _proto.getQuotedValue = function getQuotedValue(options) { + if (options === void 0) { + options = {}; + } + var quoteMark = this._determineQuoteMark(options); + var cssescopts = CSSESC_QUOTE_OPTIONS[quoteMark]; + var escaped = (0, _cssesc["default"])(this._value, cssescopts); + return escaped; + }; + _proto._determineQuoteMark = function _determineQuoteMark(options) { + return options.smart ? this.smartQuoteMark(options) : this.preferredQuoteMark(options); + } + + /** + * Set the unescaped value with the specified quotation options. The value + * provided must not include any wrapping quote marks -- those quotes will + * be interpreted as part of the value and escaped accordingly. + */; + _proto.setValue = function setValue(value, options) { + if (options === void 0) { + options = {}; + } + this._value = value; + this._quoteMark = this._determineQuoteMark(options); + this._syncRawValue(); + } + + /** + * Intelligently select a quoteMark value based on the value's contents. If + * the value is a legal CSS ident, it will not be quoted. Otherwise a quote + * mark will be picked that minimizes the number of escapes. + * + * If there's no clear winner, the quote mark from these options is used, + * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is + * true). If the quoteMark is unspecified, a double quote is used. + * + * @param options This takes the quoteMark and preferCurrentQuoteMark options + * from the quoteValue method. + */; + _proto.smartQuoteMark = function smartQuoteMark(options) { + var v = this.value; + var numSingleQuotes = v.replace(/[^']/g, '').length; + var numDoubleQuotes = v.replace(/[^"]/g, '').length; + if (numSingleQuotes + numDoubleQuotes === 0) { + var escaped = (0, _cssesc["default"])(v, { + isIdentifier: true + }); + if (escaped === v) { + return Attribute.NO_QUOTE; + } else { + var pref = this.preferredQuoteMark(options); + if (pref === Attribute.NO_QUOTE) { + // pick a quote mark that isn't none and see if it's smaller + var quote = this.quoteMark || options.quoteMark || Attribute.DOUBLE_QUOTE; + var opts = CSSESC_QUOTE_OPTIONS[quote]; + var quoteValue = (0, _cssesc["default"])(v, opts); + if (quoteValue.length < escaped.length) { + return quote; + } + } + return pref; + } + } else if (numDoubleQuotes === numSingleQuotes) { + return this.preferredQuoteMark(options); + } else if (numDoubleQuotes < numSingleQuotes) { + return Attribute.DOUBLE_QUOTE; + } else { + return Attribute.SINGLE_QUOTE; + } + } + + /** + * Selects the preferred quote mark based on the options and the current quote mark value. + * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)` + * instead. + */; + _proto.preferredQuoteMark = function preferredQuoteMark(options) { + var quoteMark = options.preferCurrentQuoteMark ? this.quoteMark : options.quoteMark; + if (quoteMark === undefined) { + quoteMark = options.preferCurrentQuoteMark ? options.quoteMark : this.quoteMark; + } + if (quoteMark === undefined) { + quoteMark = Attribute.DOUBLE_QUOTE; + } + return quoteMark; + }; + _proto._syncRawValue = function _syncRawValue() { + var rawValue = (0, _cssesc["default"])(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]); + if (rawValue === this._value) { + if (this.raws) { + delete this.raws.value; + } + } else { + this.raws.value = rawValue; + } + }; + _proto._handleEscapes = function _handleEscapes(prop, value) { + if (this._constructed) { + var escaped = (0, _cssesc["default"])(value, { + isIdentifier: true + }); + if (escaped !== value) { + this.raws[prop] = escaped; + } else { + delete this.raws[prop]; + } + } + }; + _proto._spacesFor = function _spacesFor(name) { + var attrSpaces = { + before: '', + after: '' + }; + var spaces = this.spaces[name] || {}; + var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {}; + return Object.assign(attrSpaces, spaces, rawSpaces); + }; + _proto._stringFor = function _stringFor(name, spaceName, concat) { + if (spaceName === void 0) { + spaceName = name; + } + if (concat === void 0) { + concat = defaultAttrConcat; + } + var attrSpaces = this._spacesFor(spaceName); + return concat(this.stringifyProperty(name), attrSpaces); + } + + /** + * returns the offset of the attribute part specified relative to the + * start of the node of the output string. + * + * * "ns" - alias for "namespace" + * * "namespace" - the namespace if it exists. + * * "attribute" - the attribute name + * * "attributeNS" - the start of the attribute or its namespace + * * "operator" - the match operator of the attribute + * * "value" - The value (string or identifier) + * * "insensitive" - the case insensitivity flag; + * @param part One of the possible values inside an attribute. + * @returns -1 if the name is invalid or the value doesn't exist in this attribute. + */; + _proto.offsetOf = function offsetOf(name) { + var count = 1; + var attributeSpaces = this._spacesFor("attribute"); + count += attributeSpaces.before.length; + if (name === "namespace" || name === "ns") { + return this.namespace ? count : -1; + } + if (name === "attributeNS") { + return count; + } + count += this.namespaceString.length; + if (this.namespace) { + count += 1; + } + if (name === "attribute") { + return count; + } + count += this.stringifyProperty("attribute").length; + count += attributeSpaces.after.length; + var operatorSpaces = this._spacesFor("operator"); + count += operatorSpaces.before.length; + var operator = this.stringifyProperty("operator"); + if (name === "operator") { + return operator ? count : -1; + } + count += operator.length; + count += operatorSpaces.after.length; + var valueSpaces = this._spacesFor("value"); + count += valueSpaces.before.length; + var value = this.stringifyProperty("value"); + if (name === "value") { + return value ? count : -1; + } + count += value.length; + count += valueSpaces.after.length; + var insensitiveSpaces = this._spacesFor("insensitive"); + count += insensitiveSpaces.before.length; + if (name === "insensitive") { + return this.insensitive ? count : -1; + } + return -1; + }; + _proto.toString = function toString() { + var _this2 = this; + var selector = [this.rawSpaceBefore, '[']; + selector.push(this._stringFor('qualifiedAttribute', 'attribute')); + if (this.operator && (this.value || this.value === '')) { + selector.push(this._stringFor('operator')); + selector.push(this._stringFor('value')); + selector.push(this._stringFor('insensitiveFlag', 'insensitive', function (attrValue, attrSpaces) { + if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) { + attrSpaces.before = " "; + } + return defaultAttrConcat(attrValue, attrSpaces); + })); + } + selector.push(']'); + selector.push(this.rawSpaceAfter); + return selector.join(''); + }; + _createClass(Attribute, [{ + key: "quoted", + get: function get() { + var qm = this.quoteMark; + return qm === "'" || qm === '"'; + }, + set: function set(value) { + warnOfDeprecatedQuotedAssignment(); + } + + /** + * returns a single (`'`) or double (`"`) quote character if the value is quoted. + * returns `null` if the value is not quoted. + * returns `undefined` if the quotation state is unknown (this can happen when + * the attribute is constructed without specifying a quote mark.) + */ + }, { + key: "quoteMark", + get: function get() { + return this._quoteMark; + } + + /** + * Set the quote mark to be used by this attribute's value. + * If the quote mark changes, the raw (escaped) value at `attr.raws.value` of the attribute + * value is updated accordingly. + * + * @param {"'" | '"' | null} quoteMark The quote mark or `null` if the value should be unquoted. + */, + set: function set(quoteMark) { + if (!this._constructed) { + this._quoteMark = quoteMark; + return; + } + if (this._quoteMark !== quoteMark) { + this._quoteMark = quoteMark; + this._syncRawValue(); + } + } + }, { + key: "qualifiedAttribute", + get: function get() { + return this.qualifiedName(this.raws.attribute || this.attribute); + } + }, { + key: "insensitiveFlag", + get: function get() { + return this.insensitive ? 'i' : ''; + } + }, { + key: "value", + get: function get() { + return this._value; + }, + set: + /** + * Before 3.0, the value had to be set to an escaped value including any wrapped + * quote marks. In 3.0, the semantics of `Attribute.value` changed so that the value + * is unescaped during parsing and any quote marks are removed. + * + * Because the ambiguity of this semantic change, if you set `attr.value = newValue`, + * a deprecation warning is raised when the new value contains any characters that would + * require escaping (including if it contains wrapped quotes). + * + * Instead, you should call `attr.setValue(newValue, opts)` and pass options that describe + * how the new value is quoted. + */ + function set(v) { + if (this._constructed) { + var _unescapeValue2 = unescapeValue(v), + deprecatedUsage = _unescapeValue2.deprecatedUsage, + unescaped = _unescapeValue2.unescaped, + quoteMark = _unescapeValue2.quoteMark; + if (deprecatedUsage) { + warnOfDeprecatedValueAssignment(); + } + if (unescaped === this._value && quoteMark === this._quoteMark) { + return; + } + this._value = unescaped; + this._quoteMark = quoteMark; + this._syncRawValue(); + } else { + this._value = v; + } + } + }, { + key: "insensitive", + get: function get() { + return this._insensitive; + } + + /** + * Set the case insensitive flag. + * If the case insensitive flag changes, the raw (escaped) value at `attr.raws.insensitiveFlag` + * of the attribute is updated accordingly. + * + * @param {true | false} insensitive true if the attribute should match case-insensitively. + */, + set: function set(insensitive) { + if (!insensitive) { + this._insensitive = false; + + // "i" and "I" can be used in "this.raws.insensitiveFlag" to store the original notation. + // When setting `attr.insensitive = false` both should be erased to ensure correct serialization. + if (this.raws && (this.raws.insensitiveFlag === 'I' || this.raws.insensitiveFlag === 'i')) { + this.raws.insensitiveFlag = undefined; + } + } + this._insensitive = insensitive; + } + }, { + key: "attribute", + get: function get() { + return this._attribute; + }, + set: function set(name) { + this._handleEscapes("attribute", name); + this._attribute = name; + } + }]); + return Attribute; + }(_namespace["default"]); + exports["default"] = Attribute; + Attribute.NO_QUOTE = null; + Attribute.SINGLE_QUOTE = "'"; + Attribute.DOUBLE_QUOTE = '"'; + var CSSESC_QUOTE_OPTIONS = (_CSSESC_QUOTE_OPTIONS = { + "'": { + quotes: 'single', + wrap: true + }, + '"': { + quotes: 'double', + wrap: true + } + }, _CSSESC_QUOTE_OPTIONS[null] = { + isIdentifier: true + }, _CSSESC_QUOTE_OPTIONS); + function defaultAttrConcat(attrValue, attrSpaces) { + return "" + attrSpaces.before + attrValue + attrSpaces.after; + } + } (attribute)); + return attribute; +} + +var universal = {exports: {}}; + +var hasRequiredUniversal; + +function requireUniversal () { + if (hasRequiredUniversal) return universal.exports; + hasRequiredUniversal = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _namespace = _interopRequireDefault(/*@__PURE__*/ requireNamespace()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Universal = /*#__PURE__*/function (_Namespace) { + _inheritsLoose(Universal, _Namespace); + function Universal(opts) { + var _this; + _this = _Namespace.call(this, opts) || this; + _this.type = _types.UNIVERSAL; + _this.value = '*'; + return _this; + } + return Universal; + }(_namespace["default"]); + exports["default"] = Universal; + module.exports = exports.default; + } (universal, universal.exports)); + return universal.exports; +} + +var combinator = {exports: {}}; + +var hasRequiredCombinator; + +function requireCombinator () { + if (hasRequiredCombinator) return combinator.exports; + hasRequiredCombinator = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$1()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Combinator = /*#__PURE__*/function (_Node) { + _inheritsLoose(Combinator, _Node); + function Combinator(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.COMBINATOR; + return _this; + } + return Combinator; + }(_node["default"]); + exports["default"] = Combinator; + module.exports = exports.default; + } (combinator, combinator.exports)); + return combinator.exports; +} + +var nesting = {exports: {}}; + +var hasRequiredNesting; + +function requireNesting () { + if (hasRequiredNesting) return nesting.exports; + hasRequiredNesting = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _node = _interopRequireDefault(/*@__PURE__*/ requireNode$1()); + var _types = /*@__PURE__*/ requireTypes(); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } + function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + var Nesting = /*#__PURE__*/function (_Node) { + _inheritsLoose(Nesting, _Node); + function Nesting(opts) { + var _this; + _this = _Node.call(this, opts) || this; + _this.type = _types.NESTING; + _this.value = '&'; + return _this; + } + return Nesting; + }(_node["default"]); + exports["default"] = Nesting; + module.exports = exports.default; + } (nesting, nesting.exports)); + return nesting.exports; +} + +var sortAscending = {exports: {}}; + +var hasRequiredSortAscending; + +function requireSortAscending () { + if (hasRequiredSortAscending) return sortAscending.exports; + hasRequiredSortAscending = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = sortAscending; + function sortAscending(list) { + return list.sort(function (a, b) { + return a - b; + }); + } + module.exports = exports.default; + } (sortAscending, sortAscending.exports)); + return sortAscending.exports; +} + +var tokenize = {}; + +var tokenTypes = {}; + +var hasRequiredTokenTypes; + +function requireTokenTypes () { + if (hasRequiredTokenTypes) return tokenTypes; + hasRequiredTokenTypes = 1; + + tokenTypes.__esModule = true; + tokenTypes.word = tokenTypes.tilde = tokenTypes.tab = tokenTypes.str = tokenTypes.space = tokenTypes.slash = tokenTypes.singleQuote = tokenTypes.semicolon = tokenTypes.plus = tokenTypes.pipe = tokenTypes.openSquare = tokenTypes.openParenthesis = tokenTypes.newline = tokenTypes.greaterThan = tokenTypes.feed = tokenTypes.equals = tokenTypes.doubleQuote = tokenTypes.dollar = tokenTypes.cr = tokenTypes.comment = tokenTypes.comma = tokenTypes.combinator = tokenTypes.colon = tokenTypes.closeSquare = tokenTypes.closeParenthesis = tokenTypes.caret = tokenTypes.bang = tokenTypes.backslash = tokenTypes.at = tokenTypes.asterisk = tokenTypes.ampersand = void 0; + var ampersand = 38; // `&`.charCodeAt(0); + tokenTypes.ampersand = ampersand; + var asterisk = 42; // `*`.charCodeAt(0); + tokenTypes.asterisk = asterisk; + var at = 64; // `@`.charCodeAt(0); + tokenTypes.at = at; + var comma = 44; // `,`.charCodeAt(0); + tokenTypes.comma = comma; + var colon = 58; // `:`.charCodeAt(0); + tokenTypes.colon = colon; + var semicolon = 59; // `;`.charCodeAt(0); + tokenTypes.semicolon = semicolon; + var openParenthesis = 40; // `(`.charCodeAt(0); + tokenTypes.openParenthesis = openParenthesis; + var closeParenthesis = 41; // `)`.charCodeAt(0); + tokenTypes.closeParenthesis = closeParenthesis; + var openSquare = 91; // `[`.charCodeAt(0); + tokenTypes.openSquare = openSquare; + var closeSquare = 93; // `]`.charCodeAt(0); + tokenTypes.closeSquare = closeSquare; + var dollar = 36; // `$`.charCodeAt(0); + tokenTypes.dollar = dollar; + var tilde = 126; // `~`.charCodeAt(0); + tokenTypes.tilde = tilde; + var caret = 94; // `^`.charCodeAt(0); + tokenTypes.caret = caret; + var plus = 43; // `+`.charCodeAt(0); + tokenTypes.plus = plus; + var equals = 61; // `=`.charCodeAt(0); + tokenTypes.equals = equals; + var pipe = 124; // `|`.charCodeAt(0); + tokenTypes.pipe = pipe; + var greaterThan = 62; // `>`.charCodeAt(0); + tokenTypes.greaterThan = greaterThan; + var space = 32; // ` `.charCodeAt(0); + tokenTypes.space = space; + var singleQuote = 39; // `'`.charCodeAt(0); + tokenTypes.singleQuote = singleQuote; + var doubleQuote = 34; // `"`.charCodeAt(0); + tokenTypes.doubleQuote = doubleQuote; + var slash = 47; // `/`.charCodeAt(0); + tokenTypes.slash = slash; + var bang = 33; // `!`.charCodeAt(0); + tokenTypes.bang = bang; + var backslash = 92; // '\\'.charCodeAt(0); + tokenTypes.backslash = backslash; + var cr = 13; // '\r'.charCodeAt(0); + tokenTypes.cr = cr; + var feed = 12; // '\f'.charCodeAt(0); + tokenTypes.feed = feed; + var newline = 10; // '\n'.charCodeAt(0); + tokenTypes.newline = newline; + var tab = 9; // '\t'.charCodeAt(0); + + // Expose aliases primarily for readability. + tokenTypes.tab = tab; + var str = singleQuote; + + // No good single character representation! + tokenTypes.str = str; + var comment = -1; + tokenTypes.comment = comment; + var word = -2; + tokenTypes.word = word; + var combinator = -3; + tokenTypes.combinator = combinator; + return tokenTypes; +} + +var hasRequiredTokenize; + +function requireTokenize () { + if (hasRequiredTokenize) return tokenize; + hasRequiredTokenize = 1; + (function (exports) { + + exports.__esModule = true; + exports.FIELDS = void 0; + exports["default"] = tokenize; + var t = _interopRequireWildcard(/*@__PURE__*/ requireTokenTypes()); + var _unescapable, _wordDelimiters; + function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + var unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable); + var wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters); + var hex = {}; + var hexChars = "0123456789abcdefABCDEF"; + for (var i = 0; i < hexChars.length; i++) { + hex[hexChars.charCodeAt(i)] = true; + } + + /** + * Returns the last index of the bar css word + * @param {string} css The string in which the word begins + * @param {number} start The index into the string where word's first letter occurs + */ + function consumeWord(css, start) { + var next = start; + var code; + do { + code = css.charCodeAt(next); + if (wordDelimiters[code]) { + return next - 1; + } else if (code === t.backslash) { + next = consumeEscape(css, next) + 1; + } else { + // All other characters are part of the word + next++; + } + } while (next < css.length); + return next - 1; + } + + /** + * Returns the last index of the escape sequence + * @param {string} css The string in which the sequence begins + * @param {number} start The index into the string where escape character (`\`) occurs. + */ + function consumeEscape(css, start) { + var next = start; + var code = css.charCodeAt(next + 1); + if (unescapable[code]) ; else if (hex[code]) { + var hexDigits = 0; + // consume up to 6 hex chars + do { + next++; + hexDigits++; + code = css.charCodeAt(next + 1); + } while (hex[code] && hexDigits < 6); + // if fewer than 6 hex chars, a trailing space ends the escape + if (hexDigits < 6 && code === t.space) { + next++; + } + } else { + // the next char is part of the current word + next++; + } + return next; + } + var FIELDS = { + TYPE: 0, + START_LINE: 1, + START_COL: 2, + END_LINE: 3, + END_COL: 4, + START_POS: 5, + END_POS: 6 + }; + exports.FIELDS = FIELDS; + function tokenize(input) { + var tokens = []; + var css = input.css.valueOf(); + var _css = css, + length = _css.length; + var offset = -1; + var line = 1; + var start = 0; + var end = 0; + var code, content, endColumn, endLine, escaped, escapePos, last, lines, next, nextLine, nextOffset, quote, tokenType; + function unclosed(what, fix) { + if (input.safe) { + // fyi: this is never set to true. + css += fix; + next = css.length - 1; + } else { + throw input.error('Unclosed ' + what, line, start - offset, start); + } + } + while (start < length) { + code = css.charCodeAt(start); + if (code === t.newline) { + offset = start; + line += 1; + } + switch (code) { + case t.space: + case t.tab: + case t.newline: + case t.cr: + case t.feed: + next = start; + do { + next += 1; + code = css.charCodeAt(next); + if (code === t.newline) { + offset = next; + line += 1; + } + } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed); + tokenType = t.space; + endLine = line; + endColumn = next - offset - 1; + end = next; + break; + case t.plus: + case t.greaterThan: + case t.tilde: + case t.pipe: + next = start; + do { + next += 1; + code = css.charCodeAt(next); + } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe); + tokenType = t.combinator; + endLine = line; + endColumn = start - offset; + end = next; + break; + + // Consume these characters as single tokens. + case t.asterisk: + case t.ampersand: + case t.bang: + case t.comma: + case t.equals: + case t.dollar: + case t.caret: + case t.openSquare: + case t.closeSquare: + case t.colon: + case t.semicolon: + case t.openParenthesis: + case t.closeParenthesis: + next = start; + tokenType = code; + endLine = line; + endColumn = start - offset; + end = next + 1; + break; + case t.singleQuote: + case t.doubleQuote: + quote = code === t.singleQuote ? "'" : '"'; + next = start; + do { + escaped = false; + next = css.indexOf(quote, next + 1); + if (next === -1) { + unclosed('quote', quote); + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === t.backslash) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped); + tokenType = t.str; + endLine = line; + endColumn = start - offset; + end = next + 1; + break; + default: + if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) { + next = css.indexOf('*/', start + 2) + 1; + if (next === 0) { + unclosed('comment', '*/'); + } + content = css.slice(start, next + 1); + lines = content.split('\n'); + last = lines.length - 1; + if (last > 0) { + nextLine = line + last; + nextOffset = next - lines[last].length; + } else { + nextLine = line; + nextOffset = offset; + } + tokenType = t.comment; + line = nextLine; + endLine = nextLine; + endColumn = next - nextOffset; + } else if (code === t.slash) { + next = start; + tokenType = code; + endLine = line; + endColumn = start - offset; + end = next + 1; + } else { + next = consumeWord(css, start); + tokenType = t.word; + endLine = line; + endColumn = next - offset; + } + end = next + 1; + break; + } + + // Ensure that the token structure remains consistent + tokens.push([tokenType, + // [0] Token type + line, + // [1] Starting line + start - offset, + // [2] Starting column + endLine, + // [3] Ending line + endColumn, + // [4] Ending column + start, + // [5] Start position / Source index + end // [6] End position + ]); + + // Reset offset for the next token + if (nextOffset) { + offset = nextOffset; + nextOffset = null; + } + start = end; + } + return tokens; + } + } (tokenize)); + return tokenize; +} + +var hasRequiredParser; + +function requireParser () { + if (hasRequiredParser) return parser.exports; + hasRequiredParser = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _root = _interopRequireDefault(/*@__PURE__*/ requireRoot()); + var _selector = _interopRequireDefault(/*@__PURE__*/ requireSelector()); + var _className = _interopRequireDefault(/*@__PURE__*/ requireClassName()); + var _comment = _interopRequireDefault(/*@__PURE__*/ requireComment()); + var _id = _interopRequireDefault(/*@__PURE__*/ requireId()); + var _tag = _interopRequireDefault(/*@__PURE__*/ requireTag()); + var _string = _interopRequireDefault(/*@__PURE__*/ requireString()); + var _pseudo = _interopRequireDefault(/*@__PURE__*/ requirePseudo()); + var _attribute = _interopRequireWildcard(/*@__PURE__*/ requireAttribute()); + var _universal = _interopRequireDefault(/*@__PURE__*/ requireUniversal()); + var _combinator = _interopRequireDefault(/*@__PURE__*/ requireCombinator()); + var _nesting = _interopRequireDefault(/*@__PURE__*/ requireNesting()); + var _sortAscending = _interopRequireDefault(/*@__PURE__*/ requireSortAscending()); + var _tokenize = _interopRequireWildcard(/*@__PURE__*/ requireTokenize()); + var tokens = _interopRequireWildcard(/*@__PURE__*/ requireTokenTypes()); + var types = _interopRequireWildcard(/*@__PURE__*/ requireTypes()); + var _util = /*@__PURE__*/ requireUtil$1(); + var _WHITESPACE_TOKENS, _Object$assign; + function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + function _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); } } + function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } + var WHITESPACE_TOKENS = (_WHITESPACE_TOKENS = {}, _WHITESPACE_TOKENS[tokens.space] = true, _WHITESPACE_TOKENS[tokens.cr] = true, _WHITESPACE_TOKENS[tokens.feed] = true, _WHITESPACE_TOKENS[tokens.newline] = true, _WHITESPACE_TOKENS[tokens.tab] = true, _WHITESPACE_TOKENS); + var WHITESPACE_EQUIV_TOKENS = Object.assign({}, WHITESPACE_TOKENS, (_Object$assign = {}, _Object$assign[tokens.comment] = true, _Object$assign)); + function tokenStart(token) { + return { + line: token[_tokenize.FIELDS.START_LINE], + column: token[_tokenize.FIELDS.START_COL] + }; + } + function tokenEnd(token) { + return { + line: token[_tokenize.FIELDS.END_LINE], + column: token[_tokenize.FIELDS.END_COL] + }; + } + function getSource(startLine, startColumn, endLine, endColumn) { + return { + start: { + line: startLine, + column: startColumn + }, + end: { + line: endLine, + column: endColumn + } + }; + } + function getTokenSource(token) { + return getSource(token[_tokenize.FIELDS.START_LINE], token[_tokenize.FIELDS.START_COL], token[_tokenize.FIELDS.END_LINE], token[_tokenize.FIELDS.END_COL]); + } + function getTokenSourceSpan(startToken, endToken) { + if (!startToken) { + return undefined; + } + return getSource(startToken[_tokenize.FIELDS.START_LINE], startToken[_tokenize.FIELDS.START_COL], endToken[_tokenize.FIELDS.END_LINE], endToken[_tokenize.FIELDS.END_COL]); + } + function unescapeProp(node, prop) { + var value = node[prop]; + if (typeof value !== "string") { + return; + } + if (value.indexOf("\\") !== -1) { + (0, _util.ensureObject)(node, 'raws'); + node[prop] = (0, _util.unesc)(value); + if (node.raws[prop] === undefined) { + node.raws[prop] = value; + } + } + return node; + } + function indexesOf(array, item) { + var i = -1; + var indexes = []; + while ((i = array.indexOf(item, i + 1)) !== -1) { + indexes.push(i); + } + return indexes; + } + function uniqs() { + var list = Array.prototype.concat.apply([], arguments); + return list.filter(function (item, i) { + return i === list.indexOf(item); + }); + } + var Parser = /*#__PURE__*/function () { + function Parser(rule, options) { + if (options === void 0) { + options = {}; + } + this.rule = rule; + this.options = Object.assign({ + lossy: false, + safe: false + }, options); + this.position = 0; + this.css = typeof this.rule === 'string' ? this.rule : this.rule.selector; + this.tokens = (0, _tokenize["default"])({ + css: this.css, + error: this._errorGenerator(), + safe: this.options.safe + }); + var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]); + this.root = new _root["default"]({ + source: rootSource + }); + this.root.errorGenerator = this._errorGenerator(); + var selector = new _selector["default"]({ + source: { + start: { + line: 1, + column: 1 + } + }, + sourceIndex: 0 + }); + this.root.append(selector); + this.current = selector; + this.loop(); + } + var _proto = Parser.prototype; + _proto._errorGenerator = function _errorGenerator() { + var _this = this; + return function (message, errorOptions) { + if (typeof _this.rule === 'string') { + return new Error(message); + } + return _this.rule.error(message, errorOptions); + }; + }; + _proto.attribute = function attribute() { + var attr = []; + var startingToken = this.currToken; + this.position++; + while (this.position < this.tokens.length && this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) { + attr.push(this.currToken); + this.position++; + } + if (this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) { + return this.expected('closing square bracket', this.currToken[_tokenize.FIELDS.START_POS]); + } + var len = attr.length; + var node = { + source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]), + sourceIndex: startingToken[_tokenize.FIELDS.START_POS] + }; + if (len === 1 && !~[tokens.word].indexOf(attr[0][_tokenize.FIELDS.TYPE])) { + return this.expected('attribute', attr[0][_tokenize.FIELDS.START_POS]); + } + var pos = 0; + var spaceBefore = ''; + var commentBefore = ''; + var lastAdded = null; + var spaceAfterMeaningfulToken = false; + while (pos < len) { + var token = attr[pos]; + var content = this.content(token); + var next = attr[pos + 1]; + switch (token[_tokenize.FIELDS.TYPE]) { + case tokens.space: + // if ( + // len === 1 || + // pos === 0 && this.content(next) === '|' + // ) { + // return this.expected('attribute', token[TOKEN.START_POS], content); + // } + spaceAfterMeaningfulToken = true; + if (this.options.lossy) { + break; + } + if (lastAdded) { + (0, _util.ensureObject)(node, 'spaces', lastAdded); + var prevContent = node.spaces[lastAdded].after || ''; + node.spaces[lastAdded].after = prevContent + content; + var existingComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || null; + if (existingComment) { + node.raws.spaces[lastAdded].after = existingComment + content; + } + } else { + spaceBefore = spaceBefore + content; + commentBefore = commentBefore + content; + } + break; + case tokens.asterisk: + if (next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = 'operator'; + } else if ((!node.namespace || lastAdded === "namespace" && !spaceAfterMeaningfulToken) && next) { + if (spaceBefore) { + (0, _util.ensureObject)(node, 'spaces', 'attribute'); + node.spaces.attribute.before = spaceBefore; + spaceBefore = ''; + } + if (commentBefore) { + (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute'); + node.raws.spaces.attribute.before = spaceBefore; + commentBefore = ''; + } + node.namespace = (node.namespace || "") + content; + var rawValue = (0, _util.getProp)(node, 'raws', 'namespace') || null; + if (rawValue) { + node.raws.namespace += content; + } + lastAdded = 'namespace'; + } + spaceAfterMeaningfulToken = false; + break; + case tokens.dollar: + if (lastAdded === "value") { + var oldRawValue = (0, _util.getProp)(node, 'raws', 'value'); + node.value += "$"; + if (oldRawValue) { + node.raws.value = oldRawValue + "$"; + } + break; + } + // Falls through + case tokens.caret: + if (next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = 'operator'; + } + spaceAfterMeaningfulToken = false; + break; + case tokens.combinator: + if (content === '~' && next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = 'operator'; + } + if (content !== '|') { + spaceAfterMeaningfulToken = false; + break; + } + if (next[_tokenize.FIELDS.TYPE] === tokens.equals) { + node.operator = content; + lastAdded = 'operator'; + } else if (!node.namespace && !node.attribute) { + node.namespace = true; + } + spaceAfterMeaningfulToken = false; + break; + case tokens.word: + if (next && this.content(next) === '|' && attr[pos + 2] && attr[pos + 2][_tokenize.FIELDS.TYPE] !== tokens.equals && + // this look-ahead probably fails with comment nodes involved. + !node.operator && !node.namespace) { + node.namespace = content; + lastAdded = 'namespace'; + } else if (!node.attribute || lastAdded === "attribute" && !spaceAfterMeaningfulToken) { + if (spaceBefore) { + (0, _util.ensureObject)(node, 'spaces', 'attribute'); + node.spaces.attribute.before = spaceBefore; + spaceBefore = ''; + } + if (commentBefore) { + (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute'); + node.raws.spaces.attribute.before = commentBefore; + commentBefore = ''; + } + node.attribute = (node.attribute || "") + content; + var _rawValue = (0, _util.getProp)(node, 'raws', 'attribute') || null; + if (_rawValue) { + node.raws.attribute += content; + } + lastAdded = 'attribute'; + } else if (!node.value && node.value !== "" || lastAdded === "value" && !(spaceAfterMeaningfulToken || node.quoteMark)) { + var _unescaped = (0, _util.unesc)(content); + var _oldRawValue = (0, _util.getProp)(node, 'raws', 'value') || ''; + var oldValue = node.value || ''; + node.value = oldValue + _unescaped; + node.quoteMark = null; + if (_unescaped !== content || _oldRawValue) { + (0, _util.ensureObject)(node, 'raws'); + node.raws.value = (_oldRawValue || oldValue) + content; + } + lastAdded = 'value'; + } else { + var insensitive = content === 'i' || content === "I"; + if ((node.value || node.value === '') && (node.quoteMark || spaceAfterMeaningfulToken)) { + node.insensitive = insensitive; + if (!insensitive || content === "I") { + (0, _util.ensureObject)(node, 'raws'); + node.raws.insensitiveFlag = content; + } + lastAdded = 'insensitive'; + if (spaceBefore) { + (0, _util.ensureObject)(node, 'spaces', 'insensitive'); + node.spaces.insensitive.before = spaceBefore; + spaceBefore = ''; + } + if (commentBefore) { + (0, _util.ensureObject)(node, 'raws', 'spaces', 'insensitive'); + node.raws.spaces.insensitive.before = commentBefore; + commentBefore = ''; + } + } else if (node.value || node.value === '') { + lastAdded = 'value'; + node.value += content; + if (node.raws.value) { + node.raws.value += content; + } + } + } + spaceAfterMeaningfulToken = false; + break; + case tokens.str: + if (!node.attribute || !node.operator) { + return this.error("Expected an attribute followed by an operator preceding the string.", { + index: token[_tokenize.FIELDS.START_POS] + }); + } + var _unescapeValue = (0, _attribute.unescapeValue)(content), + unescaped = _unescapeValue.unescaped, + quoteMark = _unescapeValue.quoteMark; + node.value = unescaped; + node.quoteMark = quoteMark; + lastAdded = 'value'; + (0, _util.ensureObject)(node, 'raws'); + node.raws.value = content; + spaceAfterMeaningfulToken = false; + break; + case tokens.equals: + if (!node.attribute) { + return this.expected('attribute', token[_tokenize.FIELDS.START_POS], content); + } + if (node.value) { + return this.error('Unexpected "=" found; an operator was already defined.', { + index: token[_tokenize.FIELDS.START_POS] + }); + } + node.operator = node.operator ? node.operator + content : content; + lastAdded = 'operator'; + spaceAfterMeaningfulToken = false; + break; + case tokens.comment: + if (lastAdded) { + if (spaceAfterMeaningfulToken || next && next[_tokenize.FIELDS.TYPE] === tokens.space || lastAdded === 'insensitive') { + var lastComment = (0, _util.getProp)(node, 'spaces', lastAdded, 'after') || ''; + var rawLastComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || lastComment; + (0, _util.ensureObject)(node, 'raws', 'spaces', lastAdded); + node.raws.spaces[lastAdded].after = rawLastComment + content; + } else { + var lastValue = node[lastAdded] || ''; + var rawLastValue = (0, _util.getProp)(node, 'raws', lastAdded) || lastValue; + (0, _util.ensureObject)(node, 'raws'); + node.raws[lastAdded] = rawLastValue + content; + } + } else { + commentBefore = commentBefore + content; + } + break; + default: + return this.error("Unexpected \"" + content + "\" found.", { + index: token[_tokenize.FIELDS.START_POS] + }); + } + pos++; + } + unescapeProp(node, "attribute"); + unescapeProp(node, "namespace"); + this.newNode(new _attribute["default"](node)); + this.position++; + } + + /** + * return a node containing meaningless garbage up to (but not including) the specified token position. + * if the token position is negative, all remaining tokens are consumed. + * + * This returns an array containing a single string node if all whitespace, + * otherwise an array of comment nodes with space before and after. + * + * These tokens are not added to the current selector, the caller can add them or use them to amend + * a previous node's space metadata. + * + * In lossy mode, this returns only comments. + */; + _proto.parseWhitespaceEquivalentTokens = function parseWhitespaceEquivalentTokens(stopPosition) { + if (stopPosition < 0) { + stopPosition = this.tokens.length; + } + var startPosition = this.position; + var nodes = []; + var space = ""; + var lastComment = undefined; + do { + if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) { + if (!this.options.lossy) { + space += this.content(); + } + } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.comment) { + var spaces = {}; + if (space) { + spaces.before = space; + space = ""; + } + lastComment = new _comment["default"]({ + value: this.content(), + source: getTokenSource(this.currToken), + sourceIndex: this.currToken[_tokenize.FIELDS.START_POS], + spaces: spaces + }); + nodes.push(lastComment); + } + } while (++this.position < stopPosition); + if (space) { + if (lastComment) { + lastComment.spaces.after = space; + } else if (!this.options.lossy) { + var firstToken = this.tokens[startPosition]; + var lastToken = this.tokens[this.position - 1]; + nodes.push(new _string["default"]({ + value: '', + source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]), + sourceIndex: firstToken[_tokenize.FIELDS.START_POS], + spaces: { + before: space, + after: '' + } + })); + } + } + return nodes; + } + + /** + * + * @param {*} nodes + */; + _proto.convertWhitespaceNodesToSpace = function convertWhitespaceNodesToSpace(nodes, requiredSpace) { + var _this2 = this; + if (requiredSpace === void 0) { + requiredSpace = false; + } + var space = ""; + var rawSpace = ""; + nodes.forEach(function (n) { + var spaceBefore = _this2.lossySpace(n.spaces.before, requiredSpace); + var rawSpaceBefore = _this2.lossySpace(n.rawSpaceBefore, requiredSpace); + space += spaceBefore + _this2.lossySpace(n.spaces.after, requiredSpace && spaceBefore.length === 0); + rawSpace += spaceBefore + n.value + _this2.lossySpace(n.rawSpaceAfter, requiredSpace && rawSpaceBefore.length === 0); + }); + if (rawSpace === space) { + rawSpace = undefined; + } + var result = { + space: space, + rawSpace: rawSpace + }; + return result; + }; + _proto.isNamedCombinator = function isNamedCombinator(position) { + if (position === void 0) { + position = this.position; + } + return this.tokens[position + 0] && this.tokens[position + 0][_tokenize.FIELDS.TYPE] === tokens.slash && this.tokens[position + 1] && this.tokens[position + 1][_tokenize.FIELDS.TYPE] === tokens.word && this.tokens[position + 2] && this.tokens[position + 2][_tokenize.FIELDS.TYPE] === tokens.slash; + }; + _proto.namedCombinator = function namedCombinator() { + if (this.isNamedCombinator()) { + var nameRaw = this.content(this.tokens[this.position + 1]); + var name = (0, _util.unesc)(nameRaw).toLowerCase(); + var raws = {}; + if (name !== nameRaw) { + raws.value = "/" + nameRaw + "/"; + } + var node = new _combinator["default"]({ + value: "/" + name + "/", + source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]), + sourceIndex: this.currToken[_tokenize.FIELDS.START_POS], + raws: raws + }); + this.position = this.position + 3; + return node; + } else { + this.unexpected(); + } + }; + _proto.combinator = function combinator() { + var _this3 = this; + if (this.content() === '|') { + return this.namespace(); + } + // We need to decide between a space that's a descendant combinator and meaningless whitespace at the end of a selector. + var nextSigTokenPos = this.locateNextMeaningfulToken(this.position); + if (nextSigTokenPos < 0 || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.comma || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) { + var nodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos); + if (nodes.length > 0) { + var last = this.current.last; + if (last) { + var _this$convertWhitespa = this.convertWhitespaceNodesToSpace(nodes), + space = _this$convertWhitespa.space, + rawSpace = _this$convertWhitespa.rawSpace; + if (rawSpace !== undefined) { + last.rawSpaceAfter += rawSpace; + } + last.spaces.after += space; + } else { + nodes.forEach(function (n) { + return _this3.newNode(n); + }); + } + } + return; + } + var firstToken = this.currToken; + var spaceOrDescendantSelectorNodes = undefined; + if (nextSigTokenPos > this.position) { + spaceOrDescendantSelectorNodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos); + } + var node; + if (this.isNamedCombinator()) { + node = this.namedCombinator(); + } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) { + node = new _combinator["default"]({ + value: this.content(), + source: getTokenSource(this.currToken), + sourceIndex: this.currToken[_tokenize.FIELDS.START_POS] + }); + this.position++; + } else if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) ; else if (!spaceOrDescendantSelectorNodes) { + this.unexpected(); + } + if (node) { + if (spaceOrDescendantSelectorNodes) { + var _this$convertWhitespa2 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes), + _space = _this$convertWhitespa2.space, + _rawSpace = _this$convertWhitespa2.rawSpace; + node.spaces.before = _space; + node.rawSpaceBefore = _rawSpace; + } + } else { + // descendant combinator + var _this$convertWhitespa3 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes, true), + _space2 = _this$convertWhitespa3.space, + _rawSpace2 = _this$convertWhitespa3.rawSpace; + if (!_rawSpace2) { + _rawSpace2 = _space2; + } + var spaces = {}; + var raws = { + spaces: {} + }; + if (_space2.endsWith(' ') && _rawSpace2.endsWith(' ')) { + spaces.before = _space2.slice(0, _space2.length - 1); + raws.spaces.before = _rawSpace2.slice(0, _rawSpace2.length - 1); + } else if (_space2.startsWith(' ') && _rawSpace2.startsWith(' ')) { + spaces.after = _space2.slice(1); + raws.spaces.after = _rawSpace2.slice(1); + } else { + raws.value = _rawSpace2; + } + node = new _combinator["default"]({ + value: ' ', + source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]), + sourceIndex: firstToken[_tokenize.FIELDS.START_POS], + spaces: spaces, + raws: raws + }); + } + if (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.space) { + node.spaces.after = this.optionalSpace(this.content()); + this.position++; + } + return this.newNode(node); + }; + _proto.comma = function comma() { + if (this.position === this.tokens.length - 1) { + this.root.trailingComma = true; + this.position++; + return; + } + this.current._inferEndPosition(); + var selector = new _selector["default"]({ + source: { + start: tokenStart(this.tokens[this.position + 1]) + }, + sourceIndex: this.tokens[this.position + 1][_tokenize.FIELDS.START_POS] + }); + this.current.parent.append(selector); + this.current = selector; + this.position++; + }; + _proto.comment = function comment() { + var current = this.currToken; + this.newNode(new _comment["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + })); + this.position++; + }; + _proto.error = function error(message, opts) { + throw this.root.error(message, opts); + }; + _proto.missingBackslash = function missingBackslash() { + return this.error('Expected a backslash preceding the semicolon.', { + index: this.currToken[_tokenize.FIELDS.START_POS] + }); + }; + _proto.missingParenthesis = function missingParenthesis() { + return this.expected('opening parenthesis', this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.missingSquareBracket = function missingSquareBracket() { + return this.expected('opening square bracket', this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.unexpected = function unexpected() { + return this.error("Unexpected '" + this.content() + "'. Escaping special characters with \\ may help.", this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.unexpectedPipe = function unexpectedPipe() { + return this.error("Unexpected '|'.", this.currToken[_tokenize.FIELDS.START_POS]); + }; + _proto.namespace = function namespace() { + var before = this.prevToken && this.content(this.prevToken) || true; + if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.word) { + this.position++; + return this.word(before); + } else if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.asterisk) { + this.position++; + return this.universal(before); + } + this.unexpectedPipe(); + }; + _proto.nesting = function nesting() { + if (this.nextToken) { + var nextContent = this.content(this.nextToken); + if (nextContent === "|") { + this.position++; + return; + } + } + var current = this.currToken; + this.newNode(new _nesting["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + })); + this.position++; + }; + _proto.parentheses = function parentheses() { + var last = this.current.last; + var unbalanced = 1; + this.position++; + if (last && last.type === types.PSEUDO) { + var selector = new _selector["default"]({ + source: { + start: tokenStart(this.tokens[this.position]) + }, + sourceIndex: this.tokens[this.position][_tokenize.FIELDS.START_POS] + }); + var cache = this.current; + last.append(selector); + this.current = selector; + while (this.position < this.tokens.length && unbalanced) { + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) { + unbalanced++; + } + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) { + unbalanced--; + } + if (unbalanced) { + this.parse(); + } else { + this.current.source.end = tokenEnd(this.currToken); + this.current.parent.source.end = tokenEnd(this.currToken); + this.position++; + } + } + this.current = cache; + } else { + // I think this case should be an error. It's used to implement a basic parse of media queries + // but I don't think it's a good idea. + var parenStart = this.currToken; + var parenValue = "("; + var parenEnd; + while (this.position < this.tokens.length && unbalanced) { + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) { + unbalanced++; + } + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) { + unbalanced--; + } + parenEnd = this.currToken; + parenValue += this.parseParenthesisToken(this.currToken); + this.position++; + } + if (last) { + last.appendToPropertyAndEscape("value", parenValue, parenValue); + } else { + this.newNode(new _string["default"]({ + value: parenValue, + source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]), + sourceIndex: parenStart[_tokenize.FIELDS.START_POS] + })); + } + } + if (unbalanced) { + return this.expected('closing parenthesis', this.currToken[_tokenize.FIELDS.START_POS]); + } + }; + _proto.pseudo = function pseudo() { + var _this4 = this; + var pseudoStr = ''; + var startingToken = this.currToken; + while (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.colon) { + pseudoStr += this.content(); + this.position++; + } + if (!this.currToken) { + return this.expected(['pseudo-class', 'pseudo-element'], this.position - 1); + } + if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.word) { + this.splitWord(false, function (first, length) { + pseudoStr += first; + _this4.newNode(new _pseudo["default"]({ + value: pseudoStr, + source: getTokenSourceSpan(startingToken, _this4.currToken), + sourceIndex: startingToken[_tokenize.FIELDS.START_POS] + })); + if (length > 1 && _this4.nextToken && _this4.nextToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) { + _this4.error('Misplaced parenthesis.', { + index: _this4.nextToken[_tokenize.FIELDS.START_POS] + }); + } + }); + } else { + return this.expected(['pseudo-class', 'pseudo-element'], this.currToken[_tokenize.FIELDS.START_POS]); + } + }; + _proto.space = function space() { + var content = this.content(); + // Handle space before and after the selector + if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis || this.current.nodes.every(function (node) { + return node.type === 'comment'; + })) { + this.spaces = this.optionalSpace(content); + this.position++; + } else if (this.position === this.tokens.length - 1 || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) { + this.current.last.spaces.after = this.optionalSpace(content); + this.position++; + } else { + this.combinator(); + } + }; + _proto.string = function string() { + var current = this.currToken; + this.newNode(new _string["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + })); + this.position++; + }; + _proto.universal = function universal(namespace) { + var nextToken = this.nextToken; + if (nextToken && this.content(nextToken) === '|') { + this.position++; + return this.namespace(); + } + var current = this.currToken; + this.newNode(new _universal["default"]({ + value: this.content(), + source: getTokenSource(current), + sourceIndex: current[_tokenize.FIELDS.START_POS] + }), namespace); + this.position++; + }; + _proto.splitWord = function splitWord(namespace, firstCallback) { + var _this5 = this; + var nextToken = this.nextToken; + var word = this.content(); + while (nextToken && ~[tokens.dollar, tokens.caret, tokens.equals, tokens.word].indexOf(nextToken[_tokenize.FIELDS.TYPE])) { + this.position++; + var current = this.content(); + word += current; + if (current.lastIndexOf('\\') === current.length - 1) { + var next = this.nextToken; + if (next && next[_tokenize.FIELDS.TYPE] === tokens.space) { + word += this.requiredSpace(this.content(next)); + this.position++; + } + } + nextToken = this.nextToken; + } + var hasClass = indexesOf(word, '.').filter(function (i) { + // Allow escaped dot within class name + var escapedDot = word[i - 1] === '\\'; + // Allow decimal numbers percent in @keyframes + var isKeyframesPercent = /^\d+\.\d+%$/.test(word); + return !escapedDot && !isKeyframesPercent; + }); + var hasId = indexesOf(word, '#').filter(function (i) { + return word[i - 1] !== '\\'; + }); + // Eliminate Sass interpolations from the list of id indexes + var interpolations = indexesOf(word, '#{'); + if (interpolations.length) { + hasId = hasId.filter(function (hashIndex) { + return !~interpolations.indexOf(hashIndex); + }); + } + var indices = (0, _sortAscending["default"])(uniqs([0].concat(hasClass, hasId))); + indices.forEach(function (ind, i) { + var index = indices[i + 1] || word.length; + var value = word.slice(ind, index); + if (i === 0 && firstCallback) { + return firstCallback.call(_this5, value, indices.length); + } + var node; + var current = _this5.currToken; + var sourceIndex = current[_tokenize.FIELDS.START_POS] + indices[i]; + var source = getSource(current[1], current[2] + ind, current[3], current[2] + (index - 1)); + if (~hasClass.indexOf(ind)) { + var classNameOpts = { + value: value.slice(1), + source: source, + sourceIndex: sourceIndex + }; + node = new _className["default"](unescapeProp(classNameOpts, "value")); + } else if (~hasId.indexOf(ind)) { + var idOpts = { + value: value.slice(1), + source: source, + sourceIndex: sourceIndex + }; + node = new _id["default"](unescapeProp(idOpts, "value")); + } else { + var tagOpts = { + value: value, + source: source, + sourceIndex: sourceIndex + }; + unescapeProp(tagOpts, "value"); + node = new _tag["default"](tagOpts); + } + _this5.newNode(node, namespace); + // Ensure that the namespace is used only once + namespace = null; + }); + this.position++; + }; + _proto.word = function word(namespace) { + var nextToken = this.nextToken; + if (nextToken && this.content(nextToken) === '|') { + this.position++; + return this.namespace(); + } + return this.splitWord(namespace); + }; + _proto.loop = function loop() { + while (this.position < this.tokens.length) { + this.parse(true); + } + this.current._inferEndPosition(); + return this.root; + }; + _proto.parse = function parse(throwOnParenthesis) { + switch (this.currToken[_tokenize.FIELDS.TYPE]) { + case tokens.space: + this.space(); + break; + case tokens.comment: + this.comment(); + break; + case tokens.openParenthesis: + this.parentheses(); + break; + case tokens.closeParenthesis: + if (throwOnParenthesis) { + this.missingParenthesis(); + } + break; + case tokens.openSquare: + this.attribute(); + break; + case tokens.dollar: + case tokens.caret: + case tokens.equals: + case tokens.word: + this.word(); + break; + case tokens.colon: + this.pseudo(); + break; + case tokens.comma: + this.comma(); + break; + case tokens.asterisk: + this.universal(); + break; + case tokens.ampersand: + this.nesting(); + break; + case tokens.slash: + case tokens.combinator: + this.combinator(); + break; + case tokens.str: + this.string(); + break; + // These cases throw; no break needed. + case tokens.closeSquare: + this.missingSquareBracket(); + case tokens.semicolon: + this.missingBackslash(); + default: + this.unexpected(); + } + } + + /** + * Helpers + */; + _proto.expected = function expected(description, index, found) { + if (Array.isArray(description)) { + var last = description.pop(); + description = description.join(', ') + " or " + last; + } + var an = /^[aeiou]/.test(description[0]) ? 'an' : 'a'; + if (!found) { + return this.error("Expected " + an + " " + description + ".", { + index: index + }); + } + return this.error("Expected " + an + " " + description + ", found \"" + found + "\" instead.", { + index: index + }); + }; + _proto.requiredSpace = function requiredSpace(space) { + return this.options.lossy ? ' ' : space; + }; + _proto.optionalSpace = function optionalSpace(space) { + return this.options.lossy ? '' : space; + }; + _proto.lossySpace = function lossySpace(space, required) { + if (this.options.lossy) { + return required ? ' ' : ''; + } else { + return space; + } + }; + _proto.parseParenthesisToken = function parseParenthesisToken(token) { + var content = this.content(token); + if (token[_tokenize.FIELDS.TYPE] === tokens.space) { + return this.requiredSpace(content); + } else { + return content; + } + }; + _proto.newNode = function newNode(node, namespace) { + if (namespace) { + if (/^ +$/.test(namespace)) { + if (!this.options.lossy) { + this.spaces = (this.spaces || '') + namespace; + } + namespace = true; + } + node.namespace = namespace; + unescapeProp(node, "namespace"); + } + if (this.spaces) { + node.spaces.before = this.spaces; + this.spaces = ''; + } + return this.current.append(node); + }; + _proto.content = function content(token) { + if (token === void 0) { + token = this.currToken; + } + return this.css.slice(token[_tokenize.FIELDS.START_POS], token[_tokenize.FIELDS.END_POS]); + }; + /** + * returns the index of the next non-whitespace, non-comment token. + * returns -1 if no meaningful token is found. + */ + _proto.locateNextMeaningfulToken = function locateNextMeaningfulToken(startPosition) { + if (startPosition === void 0) { + startPosition = this.position + 1; + } + var searchPosition = startPosition; + while (searchPosition < this.tokens.length) { + if (WHITESPACE_EQUIV_TOKENS[this.tokens[searchPosition][_tokenize.FIELDS.TYPE]]) { + searchPosition++; + continue; + } else { + return searchPosition; + } + } + return -1; + }; + _createClass(Parser, [{ + key: "currToken", + get: function get() { + return this.tokens[this.position]; + } + }, { + key: "nextToken", + get: function get() { + return this.tokens[this.position + 1]; + } + }, { + key: "prevToken", + get: function get() { + return this.tokens[this.position - 1]; + } + }]); + return Parser; + }(); + exports["default"] = Parser; + module.exports = exports.default; + } (parser, parser.exports)); + return parser.exports; +} + +var hasRequiredProcessor; + +function requireProcessor () { + if (hasRequiredProcessor) return processor.exports; + hasRequiredProcessor = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _parser = _interopRequireDefault(/*@__PURE__*/ requireParser()); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + var Processor = /*#__PURE__*/function () { + function Processor(func, options) { + this.func = func || function noop() {}; + this.funcRes = null; + this.options = options; + } + var _proto = Processor.prototype; + _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) { + if (options === void 0) { + options = {}; + } + var merged = Object.assign({}, this.options, options); + if (merged.updateSelector === false) { + return false; + } else { + return typeof rule !== "string"; + } + }; + _proto._isLossy = function _isLossy(options) { + if (options === void 0) { + options = {}; + } + var merged = Object.assign({}, this.options, options); + if (merged.lossless === false) { + return true; + } else { + return false; + } + }; + _proto._root = function _root(rule, options) { + if (options === void 0) { + options = {}; + } + var parser = new _parser["default"](rule, this._parseOptions(options)); + return parser.root; + }; + _proto._parseOptions = function _parseOptions(options) { + return { + lossy: this._isLossy(options) + }; + }; + _proto._run = function _run(rule, options) { + var _this = this; + if (options === void 0) { + options = {}; + } + return new Promise(function (resolve, reject) { + try { + var root = _this._root(rule, options); + Promise.resolve(_this.func(root)).then(function (transform) { + var string = undefined; + if (_this._shouldUpdateSelector(rule, options)) { + string = root.toString(); + rule.selector = string; + } + return { + transform: transform, + root: root, + string: string + }; + }).then(resolve, reject); + } catch (e) { + reject(e); + return; + } + }); + }; + _proto._runSync = function _runSync(rule, options) { + if (options === void 0) { + options = {}; + } + var root = this._root(rule, options); + var transform = this.func(root); + if (transform && typeof transform.then === "function") { + throw new Error("Selector processor returned a promise to a synchronous call."); + } + var string = undefined; + if (options.updateSelector && typeof rule !== "string") { + string = root.toString(); + rule.selector = string; + } + return { + transform: transform, + root: root, + string: string + }; + } + + /** + * Process rule into a selector AST. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {Promise<parser.Root>} The AST of the selector after processing it. + */; + _proto.ast = function ast(rule, options) { + return this._run(rule, options).then(function (result) { + return result.root; + }); + } + + /** + * Process rule into a selector AST synchronously. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {parser.Root} The AST of the selector after processing it. + */; + _proto.astSync = function astSync(rule, options) { + return this._runSync(rule, options).root; + } + + /** + * Process a selector into a transformed value asynchronously + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {Promise<any>} The value returned by the processor. + */; + _proto.transform = function transform(rule, options) { + return this._run(rule, options).then(function (result) { + return result.transform; + }); + } + + /** + * Process a selector into a transformed value synchronously. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {any} The value returned by the processor. + */; + _proto.transformSync = function transformSync(rule, options) { + return this._runSync(rule, options).transform; + } + + /** + * Process a selector into a new selector string asynchronously. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {string} the selector after processing. + */; + _proto.process = function process(rule, options) { + return this._run(rule, options).then(function (result) { + return result.string || result.root.toString(); + }); + } + + /** + * Process a selector into a new selector string synchronously. + * + * @param rule {postcss.Rule | string} The css selector to be processed + * @param options The options for processing + * @returns {string} the selector after processing. + */; + _proto.processSync = function processSync(rule, options) { + var result = this._runSync(rule, options); + return result.string || result.root.toString(); + }; + return Processor; + }(); + exports["default"] = Processor; + module.exports = exports.default; + } (processor, processor.exports)); + return processor.exports; +} + +var selectors = {}; + +var constructors = {}; + +var hasRequiredConstructors; + +function requireConstructors () { + if (hasRequiredConstructors) return constructors; + hasRequiredConstructors = 1; + + constructors.__esModule = true; + constructors.universal = constructors.tag = constructors.string = constructors.selector = constructors.root = constructors.pseudo = constructors.nesting = constructors.id = constructors.comment = constructors.combinator = constructors.className = constructors.attribute = void 0; + var _attribute = _interopRequireDefault(/*@__PURE__*/ requireAttribute()); + var _className = _interopRequireDefault(/*@__PURE__*/ requireClassName()); + var _combinator = _interopRequireDefault(/*@__PURE__*/ requireCombinator()); + var _comment = _interopRequireDefault(/*@__PURE__*/ requireComment()); + var _id = _interopRequireDefault(/*@__PURE__*/ requireId()); + var _nesting = _interopRequireDefault(/*@__PURE__*/ requireNesting()); + var _pseudo = _interopRequireDefault(/*@__PURE__*/ requirePseudo()); + var _root = _interopRequireDefault(/*@__PURE__*/ requireRoot()); + var _selector = _interopRequireDefault(/*@__PURE__*/ requireSelector()); + var _string = _interopRequireDefault(/*@__PURE__*/ requireString()); + var _tag = _interopRequireDefault(/*@__PURE__*/ requireTag()); + var _universal = _interopRequireDefault(/*@__PURE__*/ requireUniversal()); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + var attribute = function attribute(opts) { + return new _attribute["default"](opts); + }; + constructors.attribute = attribute; + var className = function className(opts) { + return new _className["default"](opts); + }; + constructors.className = className; + var combinator = function combinator(opts) { + return new _combinator["default"](opts); + }; + constructors.combinator = combinator; + var comment = function comment(opts) { + return new _comment["default"](opts); + }; + constructors.comment = comment; + var id = function id(opts) { + return new _id["default"](opts); + }; + constructors.id = id; + var nesting = function nesting(opts) { + return new _nesting["default"](opts); + }; + constructors.nesting = nesting; + var pseudo = function pseudo(opts) { + return new _pseudo["default"](opts); + }; + constructors.pseudo = pseudo; + var root = function root(opts) { + return new _root["default"](opts); + }; + constructors.root = root; + var selector = function selector(opts) { + return new _selector["default"](opts); + }; + constructors.selector = selector; + var string = function string(opts) { + return new _string["default"](opts); + }; + constructors.string = string; + var tag = function tag(opts) { + return new _tag["default"](opts); + }; + constructors.tag = tag; + var universal = function universal(opts) { + return new _universal["default"](opts); + }; + constructors.universal = universal; + return constructors; +} + +var guards = {}; + +var hasRequiredGuards; + +function requireGuards () { + if (hasRequiredGuards) return guards; + hasRequiredGuards = 1; + + guards.__esModule = true; + guards.isComment = guards.isCombinator = guards.isClassName = guards.isAttribute = void 0; + guards.isContainer = isContainer; + guards.isIdentifier = void 0; + guards.isNamespace = isNamespace; + guards.isNesting = void 0; + guards.isNode = isNode; + guards.isPseudo = void 0; + guards.isPseudoClass = isPseudoClass; + guards.isPseudoElement = isPseudoElement; + guards.isUniversal = guards.isTag = guards.isString = guards.isSelector = guards.isRoot = void 0; + var _types = /*@__PURE__*/ requireTypes(); + var _IS_TYPE; + var IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types.ATTRIBUTE] = true, _IS_TYPE[_types.CLASS] = true, _IS_TYPE[_types.COMBINATOR] = true, _IS_TYPE[_types.COMMENT] = true, _IS_TYPE[_types.ID] = true, _IS_TYPE[_types.NESTING] = true, _IS_TYPE[_types.PSEUDO] = true, _IS_TYPE[_types.ROOT] = true, _IS_TYPE[_types.SELECTOR] = true, _IS_TYPE[_types.STRING] = true, _IS_TYPE[_types.TAG] = true, _IS_TYPE[_types.UNIVERSAL] = true, _IS_TYPE); + function isNode(node) { + return typeof node === "object" && IS_TYPE[node.type]; + } + function isNodeType(type, node) { + return isNode(node) && node.type === type; + } + var isAttribute = isNodeType.bind(null, _types.ATTRIBUTE); + guards.isAttribute = isAttribute; + var isClassName = isNodeType.bind(null, _types.CLASS); + guards.isClassName = isClassName; + var isCombinator = isNodeType.bind(null, _types.COMBINATOR); + guards.isCombinator = isCombinator; + var isComment = isNodeType.bind(null, _types.COMMENT); + guards.isComment = isComment; + var isIdentifier = isNodeType.bind(null, _types.ID); + guards.isIdentifier = isIdentifier; + var isNesting = isNodeType.bind(null, _types.NESTING); + guards.isNesting = isNesting; + var isPseudo = isNodeType.bind(null, _types.PSEUDO); + guards.isPseudo = isPseudo; + var isRoot = isNodeType.bind(null, _types.ROOT); + guards.isRoot = isRoot; + var isSelector = isNodeType.bind(null, _types.SELECTOR); + guards.isSelector = isSelector; + var isString = isNodeType.bind(null, _types.STRING); + guards.isString = isString; + var isTag = isNodeType.bind(null, _types.TAG); + guards.isTag = isTag; + var isUniversal = isNodeType.bind(null, _types.UNIVERSAL); + guards.isUniversal = isUniversal; + function isPseudoElement(node) { + return isPseudo(node) && node.value && (node.value.startsWith("::") || node.value.toLowerCase() === ":before" || node.value.toLowerCase() === ":after" || node.value.toLowerCase() === ":first-letter" || node.value.toLowerCase() === ":first-line"); + } + function isPseudoClass(node) { + return isPseudo(node) && !isPseudoElement(node); + } + function isContainer(node) { + return !!(isNode(node) && node.walk); + } + function isNamespace(node) { + return isAttribute(node) || isTag(node); + } + return guards; +} + +var hasRequiredSelectors; + +function requireSelectors () { + if (hasRequiredSelectors) return selectors; + hasRequiredSelectors = 1; + (function (exports) { + + exports.__esModule = true; + var _types = /*@__PURE__*/ requireTypes(); + Object.keys(_types).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _types[key]) return; + exports[key] = _types[key]; + }); + var _constructors = /*@__PURE__*/ requireConstructors(); + Object.keys(_constructors).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _constructors[key]) return; + exports[key] = _constructors[key]; + }); + var _guards = /*@__PURE__*/ requireGuards(); + Object.keys(_guards).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _guards[key]) return; + exports[key] = _guards[key]; + }); + } (selectors)); + return selectors; +} + +var hasRequiredDist; + +function requireDist () { + if (hasRequiredDist) return dist.exports; + hasRequiredDist = 1; + (function (module, exports) { + + exports.__esModule = true; + exports["default"] = void 0; + var _processor = _interopRequireDefault(/*@__PURE__*/ requireProcessor()); + var selectors = _interopRequireWildcard(/*@__PURE__*/ requireSelectors()); + function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + var parser = function parser(processor) { + return new _processor["default"](processor); + }; + Object.assign(parser, selectors); + delete parser.__esModule; + var _default = parser; + exports["default"] = _default; + module.exports = exports.default; + } (dist, dist.exports)); + return dist.exports; +} + +var distExports = /*@__PURE__*/ requireDist(); +var selectorParser = /*@__PURE__*/getDefaultExportFromCjs(distExports); + +const animationNameRE = /^(-\w+-)?animation-name$/; +const animationRE = /^(-\w+-)?animation$/; +const keyframesRE = /^(?:-\w+-)?keyframes$/; +const scopedPlugin = (id = "") => { + const keyframes = /* @__PURE__ */ Object.create(null); + const shortId = id.replace(/^data-v-/, ""); + return { + postcssPlugin: "vue-sfc-scoped", + Rule(rule) { + processRule(id, rule); + }, + AtRule(node) { + if (keyframesRE.test(node.name) && !node.params.endsWith(`-${shortId}`)) { + keyframes[node.params] = node.params = node.params + "-" + shortId; + } + }, + OnceExit(root) { + if (Object.keys(keyframes).length) { + root.walkDecls((decl) => { + if (animationNameRE.test(decl.prop)) { + decl.value = decl.value.split(",").map((v) => keyframes[v.trim()] || v.trim()).join(","); + } + if (animationRE.test(decl.prop)) { + decl.value = decl.value.split(",").map((v) => { + const vals = v.trim().split(/\s+/); + const i = vals.findIndex((val) => keyframes[val]); + if (i !== -1) { + vals.splice(i, 1, keyframes[vals[i]]); + return vals.join(" "); + } else { + return v; + } + }).join(","); + } + }); + } + } + }; +}; +const processedRules = /* @__PURE__ */ new WeakSet(); +function processRule(id, rule) { + if (processedRules.has(rule) || rule.parent && rule.parent.type === "atrule" && keyframesRE.test(rule.parent.name)) { + return; + } + processedRules.add(rule); + let deep = false; + let parent = rule.parent; + while (parent && parent.type !== "root") { + if (parent.__deep) { + deep = true; + break; + } + parent = parent.parent; + } + rule.selector = selectorParser((selectorRoot) => { + selectorRoot.each((selector) => { + rewriteSelector(id, rule, selector, selectorRoot, deep); + }); + }).processSync(rule.selector); +} +function rewriteSelector(id, rule, selector, selectorRoot, deep, slotted = false) { + let node = null; + let shouldInject = !deep; + selector.each((n) => { + if (n.type === "combinator" && (n.value === ">>>" || n.value === "/deep/")) { + n.value = " "; + n.spaces.before = n.spaces.after = ""; + warn( + `the >>> and /deep/ combinators have been deprecated. Use :deep() instead.` + ); + return false; + } + if (n.type === "pseudo") { + const { value } = n; + if (value === ":deep" || value === "::v-deep") { + rule.__deep = true; + if (n.nodes.length) { + let last = n; + n.nodes[0].each((ss) => { + selector.insertAfter(last, ss); + last = ss; + }); + const prev = selector.at(selector.index(n) - 1); + if (!prev || !isSpaceCombinator(prev)) { + selector.insertAfter( + n, + selectorParser.combinator({ + value: " " + }) + ); + } + selector.removeChild(n); + } else { + warn( + `${value} usage as a combinator has been deprecated. Use :deep(<inner-selector>) instead of ${value} <inner-selector>.` + ); + const prev = selector.at(selector.index(n) - 1); + if (prev && isSpaceCombinator(prev)) { + selector.removeChild(prev); + } + selector.removeChild(n); + } + return false; + } + if (value === ":slotted" || value === "::v-slotted") { + rewriteSelector( + id, + rule, + n.nodes[0], + selectorRoot, + deep, + true + ); + let last = n; + n.nodes[0].each((ss) => { + selector.insertAfter(last, ss); + last = ss; + }); + selector.removeChild(n); + shouldInject = false; + return false; + } + if (value === ":global" || value === "::v-global") { + selector.replaceWith(n.nodes[0]); + return false; + } + } + if (n.type === "universal") { + const prev = selector.at(selector.index(n) - 1); + const next = selector.at(selector.index(n) + 1); + if (!prev) { + if (next) { + if (next.type === "combinator" && next.value === " ") { + selector.removeChild(next); + } + selector.removeChild(n); + return; + } else { + node = selectorParser.combinator({ + value: "" + }); + selector.insertBefore(n, node); + selector.removeChild(n); + return false; + } + } + if (node) return; + } + if (n.type !== "pseudo" && n.type !== "combinator" || n.type === "pseudo" && (n.value === ":is" || n.value === ":where") && !node) { + node = n; + } + }); + if (rule.nodes.some((node2) => node2.type === "rule")) { + const deep2 = rule.__deep; + if (!deep2) { + extractAndWrapNodes(rule); + const atruleNodes = rule.nodes.filter((node2) => node2.type === "atrule"); + for (const atnode of atruleNodes) { + extractAndWrapNodes(atnode); + } + } + shouldInject = deep2; + } + if (node) { + const { type, value } = node; + if (type === "pseudo" && (value === ":is" || value === ":where")) { + node.nodes.forEach( + (value2) => rewriteSelector(id, rule, value2, selectorRoot, deep, slotted) + ); + shouldInject = false; + } + } + if (node) { + node.spaces.after = ""; + } else { + selector.first.spaces.before = ""; + } + if (shouldInject) { + const idToAdd = slotted ? id + "-s" : id; + selector.insertAfter( + // If node is null it means we need to inject [id] at the start + // insertAfter can handle `null` here + node, + selectorParser.attribute({ + attribute: idToAdd, + value: idToAdd, + raws: {}, + quoteMark: `"` + }) + ); + } +} +function isSpaceCombinator(node) { + return node.type === "combinator" && /^\s+$/.test(node.value); +} +function extractAndWrapNodes(parentNode) { + if (!parentNode.nodes) return; + const nodes = parentNode.nodes.filter( + (node) => node.type === "decl" || node.type === "comment" + ); + if (nodes.length) { + for (const node of nodes) { + parentNode.removeChild(node); + } + const wrappedRule = new Rule({ + nodes, + selector: "&" + }); + parentNode.prepend(wrappedRule); + } +} +scopedPlugin.postcss = true; + +var sourceMap = {}; + +var sourceMapGenerator = {}; + +var base64Vlq = {}; + +var base64 = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredBase64; + +function requireBase64 () { + if (hasRequiredBase64) return base64; + hasRequiredBase64 = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + + /** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ + base64.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); + }; + + /** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ + base64.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' + + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + + var zero = 48; // '0' + var nine = 57; // '9' + + var plus = 43; // '+' + var slash = 47; // '/' + + var littleOffset = 26; + var numberOffset = 52; + + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } + + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } + + // 62: + + if (charCode == plus) { + return 62; + } + + // 63: / + if (charCode == slash) { + return 63; + } + + // Invalid base64 digit. + return -1; + }; + return base64; +} + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredBase64Vlq; + +function requireBase64Vlq () { + if (hasRequiredBase64Vlq) return base64Vlq; + hasRequiredBase64Vlq = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS 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 + * OWNER 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. + */ + + var base64 = /*@__PURE__*/ requireBase64(); + + // A single base 64 digit can contain 6 bits of data. For the base 64 variable + // length quantities we use in the source map spec, the first bit is the sign, + // the next four bits are the actual value, and the 6th bit is the + // continuation bit. The continuation bit tells us whether there are more + // digits in this value following this digit. + // + // Continuation + // | Sign + // | | + // V V + // 101011 + + var VLQ_BASE_SHIFT = 5; + + // binary: 100000 + var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + + // binary: 011111 + var VLQ_BASE_MASK = VLQ_BASE - 1; + + // binary: 100000 + var VLQ_CONTINUATION_BIT = VLQ_BASE; + + /** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ + function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; + } + + /** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ + function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; + } + + /** + * Returns the base 64 VLQ encoded value. + */ + base64Vlq.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; + }; + + /** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ + base64Vlq.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; + }; + return base64Vlq; +} + +var util = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredUtil; + +function requireUtil () { + if (hasRequiredUtil) return util; + hasRequiredUtil = 1; + (function (exports) { + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + /** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ + function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } + } + exports.getArg = getArg; + + var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; + var dataUrlRegexp = /^data:.+\,.+$/; + + function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; + } + exports.urlParse = urlParse; + + function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port; + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; + } + exports.urlGenerate = urlGenerate; + + /** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '<dir>/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ + function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + + var parts = path.split(/\/+/); + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; + } + exports.normalize = normalize; + + /** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ + function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; + } + exports.join = join; + + exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || urlRegexp.test(aPath); + }; + + /** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ + function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); + } + exports.relative = relative; + + var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); + }()); + + function identity (s) { + return s; + } + + /** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ + function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; + } + exports.toSetString = supportsNullProto ? identity : toSetString; + + function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; + } + exports.fromSetString = supportsNullProto ? identity : fromSetString; + + function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; + } + + /** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ + function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByOriginalPositions = compareByOriginalPositions; + + /** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ + function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + + function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 === null) { + return 1; // aStr2 !== null + } + + if (aStr2 === null) { + return -1; // aStr1 !== null + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; + } + + /** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ + function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + + /** + * Strip any JSON XSSI avoidance prefix from the string (as documented + * in the source maps specification), and then parse the string as + * JSON. + */ + function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); + } + exports.parseSourceMapInput = parseSourceMapInput; + + /** + * Compute the URL of a source given the the source root, the source's + * URL, and the source map's URL. + */ + function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ''; + + if (sourceRoot) { + // This follows what Chrome does. + if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { + sourceRoot += '/'; + } + // The spec says: + // Line 4: An optional source root, useful for relocating source + // files on a server or removing repeated values in the + // “sources” entry. This value is prepended to the individual + // entries in the “source” field. + sourceURL = sourceRoot + sourceURL; + } + + // Historically, SourceMapConsumer did not take the sourceMapURL as + // a parameter. This mode is still somewhat supported, which is why + // this code block is conditional. However, it's preferable to pass + // the source map URL to SourceMapConsumer, so that this function + // can implement the source URL resolution algorithm as outlined in + // the spec. This block is basically the equivalent of: + // new URL(sourceURL, sourceMapURL).toString() + // ... except it avoids using URL, which wasn't available in the + // older releases of node still supported by this library. + // + // The spec says: + // If the sources are not absolute URLs after prepending of the + // “sourceRoot”, the sources are resolved relative to the + // SourceMap (like resolving script src in a html document). + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + // Strip the last path component, but keep the "/". + var index = parsed.path.lastIndexOf('/'); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + + return normalize(sourceURL); + } + exports.computeSourceURL = computeSourceURL; + } (util)); + return util; +} + +var arraySet = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredArraySet; + +function requireArraySet () { + if (hasRequiredArraySet) return arraySet; + hasRequiredArraySet = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = /*@__PURE__*/ requireUtil(); + var has = Object.prototype.hasOwnProperty; + var hasNativeMap = typeof Map !== "undefined"; + + /** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ + function ArraySet() { + this._array = []; + this._set = hasNativeMap ? new Map() : Object.create(null); + } + + /** + * Static method for creating ArraySet instances from an existing array. + */ + ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; + }; + + /** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ + ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; + }; + + /** + * Add the given string to this set. + * + * @param String aStr + */ + ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } + }; + + /** + * Is the given string a member of this set? + * + * @param String aStr + */ + ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } + }; + + /** + * What is the index of the given string in the array? + * + * @param String aStr + */ + ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + + throw new Error('"' + aStr + '" is not in the set.'); + }; + + /** + * What is the element at the given index? + * + * @param Number aIdx + */ + ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); + }; + + /** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ + ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); + }; + + arraySet.ArraySet = ArraySet; + return arraySet; +} + +var mappingList = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredMappingList; + +function requireMappingList () { + if (hasRequiredMappingList) return mappingList; + hasRequiredMappingList = 1; + /* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = /*@__PURE__*/ requireUtil(); + + /** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ + function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; + } + + /** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ + function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; + } + + /** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ + MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + + /** + * Add the given source mapping. + * + * @param Object aMapping + */ + MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } + }; + + /** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ + MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; + }; + + mappingList.MappingList = MappingList; + return mappingList; +} + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredSourceMapGenerator; + +function requireSourceMapGenerator () { + if (hasRequiredSourceMapGenerator) return sourceMapGenerator; + hasRequiredSourceMapGenerator = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var base64VLQ = /*@__PURE__*/ requireBase64Vlq(); + var util = /*@__PURE__*/ requireUtil(); + var ArraySet = /*@__PURE__*/ requireArraySet().ArraySet; + var MappingList = /*@__PURE__*/ requireMappingList().MappingList; + + /** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ + function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; + } + + SourceMapGenerator.prototype._version = 3; + + /** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ + SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + }); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + + /** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ + SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + + /** + * Set the source content for a source file. + */ + SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + + /** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ + SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source); + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + + /** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ + SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { + throw new Error( + 'original.line and original.column are not numbers -- you probably meant to omit ' + + 'the original mapping entirely and only map the generated position. If so, pass ' + + 'null for the original mapping instead of an object with empty or null values.' + ); + } + + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + throw new Error('Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + + /** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ + SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = ''; + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + + SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + + /** + * Externalize the source map. + */ + SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + + /** + * Render the source map being generated to a string. + */ + SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + + sourceMapGenerator.SourceMapGenerator = SourceMapGenerator; + return sourceMapGenerator; +} + +var sourceMapConsumer = {}; + +var binarySearch = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredBinarySearch; + +function requireBinarySearch () { + if (hasRequiredBinarySearch) return binarySearch; + hasRequiredBinarySearch = 1; + (function (exports) { + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + exports.GREATEST_LOWER_BOUND = 1; + exports.LEAST_UPPER_BOUND = 2; + + /** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ + function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } + } + + /** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ + exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; + }; + } (binarySearch)); + return binarySearch; +} + +var quickSort = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredQuickSort; + +function requireQuickSort () { + if (hasRequiredQuickSort) return quickSort; + hasRequiredQuickSort = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + // It turns out that some (most?) JavaScript engines don't self-host + // `Array.prototype.sort`. This makes sense because C++ will likely remain + // faster than JS when doing raw CPU-intensive sorting. However, when using a + // custom comparator function, calling back and forth between the VM's C++ and + // JIT'd JS is rather slow *and* loses JIT type information, resulting in + // worse generated code for the comparator function than would be optimal. In + // fact, when sorting with a comparator, these costs outweigh the benefits of + // sorting in C++. By using our own JS-implemented Quick Sort (below), we get + // a ~3500ms mean speed-up in `bench/bench.html`. + + /** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ + function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; + } + + /** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ + function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); + } + + /** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ + function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } + } + + /** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ + quickSort.quickSort = function (ary, comparator) { + doQuickSort(ary, comparator, 0, ary.length - 1); + }; + return quickSort; +} + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredSourceMapConsumer; + +function requireSourceMapConsumer () { + if (hasRequiredSourceMapConsumer) return sourceMapConsumer; + hasRequiredSourceMapConsumer = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var util = /*@__PURE__*/ requireUtil(); + var binarySearch = /*@__PURE__*/ requireBinarySearch(); + var ArraySet = /*@__PURE__*/ requireArraySet().ArraySet; + var base64VLQ = /*@__PURE__*/ requireBase64Vlq(); + var quickSort = /*@__PURE__*/ requireQuickSort().quickSort; + + function SourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) + : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); + } + + SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); + }; + + /** + * The version of the source mapping spec that we are consuming. + */ + SourceMapConsumer.prototype._version = 3; + + // `__generatedMappings` and `__originalMappings` are arrays that hold the + // parsed mapping coordinates from the source map's "mappings" attribute. They + // are lazily instantiated, accessed via the `_generatedMappings` and + // `_originalMappings` getters respectively, and we only parse the mappings + // and create these arrays once queried for a source location. We jump through + // these hoops because there can be many thousands of mappings, and parsing + // them is expensive, so we only want to do it if we must. + // + // Each object in the arrays is of the form: + // + // { + // generatedLine: The line number in the generated code, + // generatedColumn: The column number in the generated code, + // source: The path to the original source file that generated this + // chunk of code, + // originalLine: The line number in the original source that + // corresponds to this chunk of generated code, + // originalColumn: The column number in the original source that + // corresponds to this chunk of generated code, + // name: The name of the original symbol which generated this chunk of + // code. + // } + // + // All properties except for `generatedLine` and `generatedColumn` can be + // `null`. + // + // `_generatedMappings` is ordered by the generated positions. + // + // `_originalMappings` is ordered by the original positions. + + SourceMapConsumer.prototype.__generatedMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappings; + } + }); + + SourceMapConsumer.prototype.__originalMappings = null; + Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappings; + } + }); + + SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + + SourceMapConsumer.GENERATED_ORDER = 1; + SourceMapConsumer.ORIGINAL_ORDER = 2; + + SourceMapConsumer.GREATEST_LOWER_BOUND = 1; + SourceMapConsumer.LEAST_UPPER_BOUND = 2; + + /** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ + SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + mappings.map(function (mapping) { + var source = mapping.source === null ? null : this._sources.at(mapping.source); + source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); + return { + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : this._names.at(mapping.name) + }; + }, this).forEach(aCallback, context); + }; + + /** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number is 1-based. + * - column: Optional. the column number in the original source. + * The column number is 0-based. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; + + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + }; + + sourceMapConsumer.SourceMapConsumer = SourceMapConsumer; + + /** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The first parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ + function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + if (sourceRoot) { + sourceRoot = util.normalize(sourceRoot); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); + + this._absoluteSources = this._sources.toArray().map(function (s) { + return util.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); + + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this._sourceMapURL = aSourceMapURL; + this.file = file; + } + + BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + + /** + * Utility function to find the index of a source. Returns -1 if not + * found. + */ + BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } + + // Maybe aSource is an absolute URL as returned by |sources|. In + // this case we can't simply undo the transform. + var i; + for (i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } + + return -1; + }; + + /** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @param String aSourceMapURL + * The URL at which the source map can be found (optional) + * @returns BasicSourceMapConsumer + */ + BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + smc._sourceMapURL = aSourceMapURL; + smc._absoluteSources = smc._sources.toArray().map(function (s) { + return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); + }); + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + + destOriginalMappings.push(destMapping); + } + + destGeneratedMappings.push(destMapping); + } + + quickSort(smc.__originalMappings, util.compareByOriginalPositions); + + return smc; + }; + + /** + * The version of the source mapping spec that we are consuming. + */ + BasicSourceMapConsumer.prototype._version = 3; + + /** + * The list of original sources. + */ + Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._absoluteSources.slice(); + } + }); + + /** + * Provide the JIT with a nice shape / hidden class. + */ + function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; + } + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + // Because each offset is encoded relative to the previous one, + // many segments often have the same encoding. We can exploit this + // fact by caching the parsed variable length fields of each segment, + // allowing us to avoid a second parse if we encounter the same + // segment again. + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); + + segment = cachedSegments[str]; + if (segment) { + index += str.length; + } else { + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } + + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } + + cachedSegments[str] = segment; + } + + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + originalMappings.push(mapping); + } + } + } + + quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); + this.__generatedMappings = generatedMappings; + + quickSort(originalMappings, util.compareByOriginalPositions); + this.__originalMappings = originalMappings; + }; + + /** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ + BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + + /** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ + BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ + BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + var index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + }; + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } + + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + }; + + sourceMapConsumer.BasicSourceMapConsumer = BasicSourceMapConsumer; + + /** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The first parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ + function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); + + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._sources = new ArraySet(); + this._names = new ArraySet(); + + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; + + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) + } + }); + } + + IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); + IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + + /** + * The version of the source mapping spec that we are consuming. + */ + IndexedSourceMapConsumer.prototype._version = 3; + + /** + * The list of original sources. + */ + Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } + }); + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ + IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; + + /** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ + IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + + /** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ + IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ + IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + }; + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + + var source = section.consumer._sources.at(mapping.source); + source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = null; + if (mapping.name) { + name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + } + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + + sourceMapConsumer.IndexedSourceMapConsumer = IndexedSourceMapConsumer; + return sourceMapConsumer; +} + +var sourceNode = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +var hasRequiredSourceNode; + +function requireSourceNode () { + if (hasRequiredSourceNode) return sourceNode; + hasRequiredSourceNode = 1; + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + var SourceMapGenerator = /*@__PURE__*/ requireSourceMapGenerator().SourceMapGenerator; + var util = /*@__PURE__*/ requireUtil(); + + // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other + // operating systems these days (capturing the result). + var REGEX_NEWLINE = /(\r?\n)/; + + // Newline character code for charCodeAt() comparisons + var NEWLINE_CODE = 10; + + // Private symbol for identifying `SourceNode`s when multiple versions of + // the source-map library are loaded. This MUST NOT CHANGE across + // versions! + var isSourceNode = "$$$isSourceNode$$$"; + + /** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ + function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); + } + + /** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ + SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + // The last line of a file might not have a newline. + var newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[remainingLinesIndex] || ''; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex] || ''; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + + /** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + + /** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + + /** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ + SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } + }; + + /** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ + SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; + }; + + /** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ + SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; + }; + + /** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ + SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + + /** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ + SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + + /** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ + SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; + }; + + /** + * Returns the string representation of this source node along with a source + * map. + */ + SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; + }; + + sourceNode.SourceNode = SourceNode; + return sourceNode; +} + +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var hasRequiredSourceMap; + +function requireSourceMap () { + if (hasRequiredSourceMap) return sourceMap; + hasRequiredSourceMap = 1; + sourceMap.SourceMapGenerator = /*@__PURE__*/ requireSourceMapGenerator().SourceMapGenerator; + sourceMap.SourceMapConsumer = /*@__PURE__*/ requireSourceMapConsumer().SourceMapConsumer; + sourceMap.SourceNode = /*@__PURE__*/ requireSourceNode().SourceNode; + return sourceMap; +} + +var mergeSourceMap; +var hasRequiredMergeSourceMap; + +function requireMergeSourceMap () { + if (hasRequiredMergeSourceMap) return mergeSourceMap; + hasRequiredMergeSourceMap = 1; + var sourceMap = /*@__PURE__*/ requireSourceMap(); + var SourceMapConsumer = sourceMap.SourceMapConsumer; + var SourceMapGenerator = sourceMap.SourceMapGenerator; + + mergeSourceMap = merge; + + /** + * Merge old source map and new source map and return merged. + * If old or new source map value is falsy, return another one as it is. + * + * @param {object|string} [oldMap] old source map object + * @param {object|string} [newmap] new source map object + * @return {object|undefined} merged source map object, or undefined when both old and new source map are undefined + */ + function merge(oldMap, newMap) { + if (!oldMap) return newMap + if (!newMap) return oldMap + + var oldMapConsumer = new SourceMapConsumer(oldMap); + var newMapConsumer = new SourceMapConsumer(newMap); + var mergedMapGenerator = new SourceMapGenerator(); + + // iterate on new map and overwrite original position of new map with one of old map + newMapConsumer.eachMapping(function(m) { + // pass when `originalLine` is null. + // It occurs in case that the node does not have origin in original code. + if (m.originalLine == null) return + + var origPosInOldMap = oldMapConsumer.originalPositionFor({ + line: m.originalLine, + column: m.originalColumn + }); + + if (origPosInOldMap.source == null) return + + mergedMapGenerator.addMapping({ + original: { + line: origPosInOldMap.line, + column: origPosInOldMap.column + }, + generated: { + line: m.generatedLine, + column: m.generatedColumn + }, + source: origPosInOldMap.source, + name: origPosInOldMap.name + }); + }); + + var consumers = [oldMapConsumer, newMapConsumer]; + consumers.forEach(function(consumer) { + consumer.sources.forEach(function(sourceFile) { + mergedMapGenerator._sources.add(sourceFile); + var sourceContent = consumer.sourceContentFor(sourceFile); + if (sourceContent != null) { + mergedMapGenerator.setSourceContent(sourceFile, sourceContent); + } + }); + }); + + mergedMapGenerator._sourceRoot = oldMap.sourceRoot; + mergedMapGenerator._file = oldMap.file; + + return JSON.parse(mergedMapGenerator.toString()) + } + return mergeSourceMap; +} + +var mergeSourceMapExports = /*@__PURE__*/ requireMergeSourceMap(); +var merge = /*@__PURE__*/getDefaultExportFromCjs(mergeSourceMapExports); + +var __defProp$5 = Object.defineProperty; +var __defProps$4 = Object.defineProperties; +var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols; +var __hasOwnProp$5 = Object.prototype.hasOwnProperty; +var __propIsEnum$5 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$5 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$5.call(b, prop)) + __defNormalProp$5(a, prop, b[prop]); + if (__getOwnPropSymbols$5) + for (var prop of __getOwnPropSymbols$5(b)) { + if (__propIsEnum$5.call(b, prop)) + __defNormalProp$5(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b)); +const scss = (source, map, options, load = require) => { + const nodeSass = load("sass"); + const { compileString, renderSync } = nodeSass; + const data = getSource(source, options.filename, options.additionalData); + let css; + let dependencies; + let sourceMap; + try { + if (compileString) { + const { pathToFileURL, fileURLToPath } = load("url"); + const result = compileString(data, __spreadProps$4(__spreadValues$5({}, options), { + url: pathToFileURL(options.filename), + sourceMap: !!map + })); + css = result.css; + dependencies = result.loadedUrls.map((url) => fileURLToPath(url)); + sourceMap = map ? result.sourceMap : void 0; + } else { + const result = renderSync(__spreadProps$4(__spreadValues$5({}, options), { + data, + file: options.filename, + outFile: options.filename, + sourceMap: !!map + })); + css = result.css.toString(); + dependencies = result.stats.includedFiles; + sourceMap = map ? JSON.parse(result.map.toString()) : void 0; + } + if (map) { + return { + code: css, + errors: [], + dependencies, + map: merge(map, sourceMap) + }; + } + return { code: css, errors: [], dependencies }; + } catch (e) { + return { code: "", errors: [e], dependencies: [] }; + } +}; +const sass = (source, map, options, load) => scss( + source, + map, + __spreadProps$4(__spreadValues$5({}, options), { + indentedSyntax: true + }), + load +); +const less = (source, map, options, load = require) => { + const nodeLess = load("less"); + let result; + let error = null; + nodeLess.render( + getSource(source, options.filename, options.additionalData), + __spreadProps$4(__spreadValues$5({}, options), { syncImport: true }), + (err, output) => { + error = err; + result = output; + } + ); + if (error) return { code: "", errors: [error], dependencies: [] }; + const dependencies = result.imports; + if (map) { + return { + code: result.css.toString(), + map: merge(map, result.map), + errors: [], + dependencies + }; + } + return { + code: result.css.toString(), + errors: [], + dependencies + }; +}; +const styl = (source, map, options, load = require) => { + const nodeStylus = load("stylus"); + try { + const ref = nodeStylus(source, options); + if (map) ref.set("sourcemap", { inline: false, comment: false }); + const result = ref.render(); + const dependencies = ref.deps(); + if (map) { + return { + code: result, + map: merge(map, ref.sourcemap), + errors: [], + dependencies + }; + } + return { code: result, errors: [], dependencies }; + } catch (e) { + return { code: "", errors: [e], dependencies: [] }; + } +}; +function getSource(source, filename, additionalData) { + if (!additionalData) return source; + if (isFunction$1(additionalData)) { + return additionalData(source, filename); + } + return additionalData + source; +} +const processors = { + less, + sass, + scss, + styl, + stylus: styl +}; + +var __defProp$4 = Object.defineProperty; +var __defProps$3 = Object.defineProperties; +var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols; +var __hasOwnProp$4 = Object.prototype.hasOwnProperty; +var __propIsEnum$4 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$4 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$4.call(b, prop)) + __defNormalProp$4(a, prop, b[prop]); + if (__getOwnPropSymbols$4) + for (var prop of __getOwnPropSymbols$4(b)) { + if (__propIsEnum$4.call(b, prop)) + __defNormalProp$4(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b)); +function compileStyle(options) { + return doCompileStyle(__spreadProps$3(__spreadValues$4({}, options), { + isAsync: false + })); +} +function compileStyleAsync(options) { + return doCompileStyle(__spreadProps$3(__spreadValues$4({}, options), { + isAsync: true + })); +} +function doCompileStyle(options) { + const { + filename, + id, + scoped = false, + trim = true, + isProd = false, + modules = false, + modulesOptions = {}, + preprocessLang, + postcssOptions, + postcssPlugins + } = options; + const preprocessor = preprocessLang && processors[preprocessLang]; + const preProcessedSource = preprocessor && preprocess(options, preprocessor); + const map = preProcessedSource ? preProcessedSource.map : options.inMap || options.map; + const source = preProcessedSource ? preProcessedSource.code : options.source; + const shortId = id.replace(/^data-v-/, ""); + const longId = `data-v-${shortId}`; + const plugins = (postcssPlugins || []).slice(); + plugins.unshift(cssVarsPlugin({ id: shortId, isProd })); + if (trim) { + plugins.push(trimPlugin()); + } + if (scoped) { + plugins.push(scopedPlugin(longId)); + } + let cssModules; + if (modules) { + { + throw new Error( + "[@vue/compiler-sfc] `modules` option is not supported in the browser build." + ); + } + } + const postCSSOptions = __spreadProps$3(__spreadValues$4({}, postcssOptions), { + to: filename, + from: filename + }); + if (map) { + postCSSOptions.map = { + inline: false, + annotation: false, + prev: map + }; + } + let result; + let code; + let outMap; + const dependencies = new Set( + preProcessedSource ? preProcessedSource.dependencies : [] + ); + dependencies.delete(filename); + const errors = []; + if (preProcessedSource && preProcessedSource.errors.length) { + errors.push(...preProcessedSource.errors); + } + const recordPlainCssDependencies = (messages) => { + messages.forEach((msg) => { + if (msg.type === "dependency") { + dependencies.add(msg.file); + } + }); + return dependencies; + }; + try { + result = postcss(plugins).process(source, postCSSOptions); + if (options.isAsync) { + return result.then((result2) => ({ + code: result2.css || "", + map: result2.map && result2.map.toJSON(), + errors, + modules: cssModules, + rawResult: result2, + dependencies: recordPlainCssDependencies(result2.messages) + })).catch((error) => ({ + code: "", + map: void 0, + errors: [...errors, error], + rawResult: void 0, + dependencies + })); + } + recordPlainCssDependencies(result.messages); + code = result.css; + outMap = result.map; + } catch (e) { + errors.push(e); + } + return { + code: code || ``, + map: outMap && outMap.toJSON(), + errors, + rawResult: result, + dependencies + }; +} +function preprocess(options, preprocessor) { + if (!options.preprocessCustomRequire) { + throw new Error( + `[@vue/compiler-sfc] Style preprocessing in the browser build must provide the \`preprocessCustomRequire\` option to return the in-browser version of the preprocessor.` + ); + } + return preprocessor( + options.source, + options.inMap || options.map, + __spreadValues$4({ + filename: options.filename + }, options.preprocessOptions), + options.preprocessCustomRequire + ); +} + +const UNKNOWN_TYPE = "Unknown"; +function resolveObjectKey(node, computed) { + switch (node.type) { + case "StringLiteral": + case "NumericLiteral": + return String(node.value); + case "Identifier": + if (!computed) return node.name; + } + return void 0; +} +function concatStrings(strs) { + return strs.filter((s) => !!s).join(", "); +} +function isLiteralNode(node) { + return node.type.endsWith("Literal"); +} +function isCallOf(node, test) { + return !!(node && test && node.type === "CallExpression" && node.callee.type === "Identifier" && (typeof test === "string" ? node.callee.name === test : test(node.callee.name))); +} +function toRuntimeTypeString(types) { + return types.length > 1 ? `[${types.join(", ")}]` : types[0]; +} +function getImportedName(specifier) { + if (specifier.type === "ImportSpecifier") + return specifier.imported.type === "Identifier" ? specifier.imported.name : specifier.imported.value; + else if (specifier.type === "ImportNamespaceSpecifier") return "*"; + return "default"; +} +function getId(node) { + return node.type === "Identifier" ? node.name : node.type === "StringLiteral" ? node.value : null; +} +const normalize = (path.posix || path).normalize; +const windowsSlashRE = /\\/g; +function normalizePath(p) { + return normalize(p.replace(windowsSlashRE, "/")); +} +const joinPaths = (path.posix || path).join; +const propNameEscapeSymbolsRE = /[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~\-]/; +function getEscapedPropName(key) { + return propNameEscapeSymbolsRE.test(key) ? JSON.stringify(key) : key; +} + +function analyzeScriptBindings(ast) { + for (const node of ast) { + if (node.type === "ExportDefaultDeclaration" && node.declaration.type === "ObjectExpression") { + return analyzeBindingsFromOptions(node.declaration); + } + } + return {}; +} +function analyzeBindingsFromOptions(node) { + const bindings = {}; + Object.defineProperty(bindings, "__isScriptSetup", { + enumerable: false, + value: false + }); + for (const property of node.properties) { + if (property.type === "ObjectProperty" && !property.computed && property.key.type === "Identifier") { + if (property.key.name === "props") { + for (const key of getObjectOrArrayExpressionKeys(property.value)) { + bindings[key] = "props"; + } + } else if (property.key.name === "inject") { + for (const key of getObjectOrArrayExpressionKeys(property.value)) { + bindings[key] = "options"; + } + } else if (property.value.type === "ObjectExpression" && (property.key.name === "computed" || property.key.name === "methods")) { + for (const key of getObjectExpressionKeys(property.value)) { + bindings[key] = "options"; + } + } + } else if (property.type === "ObjectMethod" && property.key.type === "Identifier" && (property.key.name === "setup" || property.key.name === "data")) { + for (const bodyItem of property.body.body) { + if (bodyItem.type === "ReturnStatement" && bodyItem.argument && bodyItem.argument.type === "ObjectExpression") { + for (const key of getObjectExpressionKeys(bodyItem.argument)) { + bindings[key] = property.key.name === "setup" ? "setup-maybe-ref" : "data"; + } + } + } + } + } + return bindings; +} +function getObjectExpressionKeys(node) { + const keys = []; + for (const prop of node.properties) { + if (prop.type === "SpreadElement") continue; + const key = resolveObjectKey(prop.key, prop.computed); + if (key) keys.push(String(key)); + } + return keys; +} +function getArrayExpressionKeys(node) { + const keys = []; + for (const element of node.elements) { + if (element && element.type === "StringLiteral") { + keys.push(element.value); + } + } + return keys; +} +function getObjectOrArrayExpressionKeys(value) { + if (value.type === "ArrayExpression") { + return getArrayExpressionKeys(value); + } + if (value.type === "ObjectExpression") { + return getObjectExpressionKeys(value); + } + return []; +} + +const comma = ','.charCodeAt(0); +const semicolon = ';'.charCodeAt(0); +const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; +const intToChar = new Uint8Array(64); // 64 possible chars. +const charToInt = new Uint8Array(128); // z is 122 in ASCII +for (let i = 0; i < chars.length; i++) { + const c = chars.charCodeAt(i); + intToChar[i] = c; + charToInt[c] = i; +} +function encodeInteger(builder, num, relative) { + let delta = num - relative; + delta = delta < 0 ? (-delta << 1) | 1 : delta << 1; + do { + let clamped = delta & 0b011111; + delta >>>= 5; + if (delta > 0) + clamped |= 0b100000; + builder.write(intToChar[clamped]); + } while (delta > 0); + return num; +} + +const bufLength = 1024 * 16; +// Provide a fallback for older environments. +const td = typeof TextDecoder !== 'undefined' + ? /* #__PURE__ */ new TextDecoder() + : typeof Buffer !== 'undefined' + ? { + decode(buf) { + const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); + return out.toString(); + }, + } + : { + decode(buf) { + let out = ''; + for (let i = 0; i < buf.length; i++) { + out += String.fromCharCode(buf[i]); + } + return out; + }, + }; +class StringWriter { + constructor() { + this.pos = 0; + this.out = ''; + this.buffer = new Uint8Array(bufLength); + } + write(v) { + const { buffer } = this; + buffer[this.pos++] = v; + if (this.pos === bufLength) { + this.out += td.decode(buffer); + this.pos = 0; + } + } + flush() { + const { buffer, out, pos } = this; + return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out; + } +} +function encode(decoded) { + const writer = new StringWriter(); + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + if (i > 0) + writer.write(semicolon); + if (line.length === 0) + continue; + let genColumn = 0; + for (let j = 0; j < line.length; j++) { + const segment = line[j]; + if (j > 0) + writer.write(comma); + genColumn = encodeInteger(writer, segment[0], genColumn); + if (segment.length === 1) + continue; + sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex); + sourceLine = encodeInteger(writer, segment[2], sourceLine); + sourceColumn = encodeInteger(writer, segment[3], sourceColumn); + if (segment.length === 4) + continue; + namesIndex = encodeInteger(writer, segment[4], namesIndex); + } + } + return writer.flush(); +} + +class BitSet { + constructor(arg) { + this.bits = arg instanceof BitSet ? arg.bits.slice() : []; + } + + add(n) { + this.bits[n >> 5] |= 1 << (n & 31); + } + + has(n) { + return !!(this.bits[n >> 5] & (1 << (n & 31))); + } +} + +class Chunk { + constructor(start, end, content) { + this.start = start; + this.end = end; + this.original = content; + + this.intro = ''; + this.outro = ''; + + this.content = content; + this.storeName = false; + this.edited = false; + + { + this.previous = null; + this.next = null; + } + } + + appendLeft(content) { + this.outro += content; + } + + appendRight(content) { + this.intro = this.intro + content; + } + + clone() { + const chunk = new Chunk(this.start, this.end, this.original); + + chunk.intro = this.intro; + chunk.outro = this.outro; + chunk.content = this.content; + chunk.storeName = this.storeName; + chunk.edited = this.edited; + + return chunk; + } + + contains(index) { + return this.start < index && index < this.end; + } + + eachNext(fn) { + let chunk = this; + while (chunk) { + fn(chunk); + chunk = chunk.next; + } + } + + eachPrevious(fn) { + let chunk = this; + while (chunk) { + fn(chunk); + chunk = chunk.previous; + } + } + + edit(content, storeName, contentOnly) { + this.content = content; + if (!contentOnly) { + this.intro = ''; + this.outro = ''; + } + this.storeName = storeName; + + this.edited = true; + + return this; + } + + prependLeft(content) { + this.outro = content + this.outro; + } + + prependRight(content) { + this.intro = content + this.intro; + } + + reset() { + this.intro = ''; + this.outro = ''; + if (this.edited) { + this.content = this.original; + this.storeName = false; + this.edited = false; + } + } + + split(index) { + const sliceIndex = index - this.start; + + const originalBefore = this.original.slice(0, sliceIndex); + const originalAfter = this.original.slice(sliceIndex); + + this.original = originalBefore; + + const newChunk = new Chunk(index, this.end, originalAfter); + newChunk.outro = this.outro; + this.outro = ''; + + this.end = index; + + if (this.edited) { + // after split we should save the edit content record into the correct chunk + // to make sure sourcemap correct + // For example: + // ' test'.trim() + // split -> ' ' + 'test' + // ✔️ edit -> '' + 'test' + // ✖️ edit -> 'test' + '' + // TODO is this block necessary?... + newChunk.edit('', false); + this.content = ''; + } else { + this.content = originalBefore; + } + + newChunk.next = this.next; + if (newChunk.next) newChunk.next.previous = newChunk; + newChunk.previous = this; + this.next = newChunk; + + return newChunk; + } + + toString() { + return this.intro + this.content + this.outro; + } + + trimEnd(rx) { + this.outro = this.outro.replace(rx, ''); + if (this.outro.length) return true; + + const trimmed = this.content.replace(rx, ''); + + if (trimmed.length) { + if (trimmed !== this.content) { + this.split(this.start + trimmed.length).edit('', undefined, true); + if (this.edited) { + // save the change, if it has been edited + this.edit(trimmed, this.storeName, true); + } + } + return true; + } else { + this.edit('', undefined, true); + + this.intro = this.intro.replace(rx, ''); + if (this.intro.length) return true; + } + } + + trimStart(rx) { + this.intro = this.intro.replace(rx, ''); + if (this.intro.length) return true; + + const trimmed = this.content.replace(rx, ''); + + if (trimmed.length) { + if (trimmed !== this.content) { + const newChunk = this.split(this.end - trimmed.length); + if (this.edited) { + // save the change, if it has been edited + newChunk.edit(trimmed, this.storeName, true); + } + this.edit('', undefined, true); + } + return true; + } else { + this.edit('', undefined, true); + + this.outro = this.outro.replace(rx, ''); + if (this.outro.length) return true; + } + } +} + +function getBtoa() { + if (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') { + return (str) => globalThis.btoa(unescape(encodeURIComponent(str))); + } else if (typeof Buffer === 'function') { + return (str) => Buffer.from(str, 'utf-8').toString('base64'); + } else { + return () => { + throw new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.'); + }; + } +} + +const btoa = /*#__PURE__*/ getBtoa(); + +class SourceMap { + constructor(properties) { + this.version = 3; + this.file = properties.file; + this.sources = properties.sources; + this.sourcesContent = properties.sourcesContent; + this.names = properties.names; + this.mappings = encode(properties.mappings); + if (typeof properties.x_google_ignoreList !== 'undefined') { + this.x_google_ignoreList = properties.x_google_ignoreList; + } + if (typeof properties.debugId !== 'undefined') { + this.debugId = properties.debugId; + } + } + + toString() { + return JSON.stringify(this); + } + + toUrl() { + return 'data:application/json;charset=utf-8;base64,' + btoa(this.toString()); + } +} + +function guessIndent(code) { + const lines = code.split('\n'); + + const tabbed = lines.filter((line) => /^\t+/.test(line)); + const spaced = lines.filter((line) => /^ {2,}/.test(line)); + + if (tabbed.length === 0 && spaced.length === 0) { + return null; + } + + // More lines tabbed than spaced? Assume tabs, and + // default to tabs in the case of a tie (or nothing + // to go on) + if (tabbed.length >= spaced.length) { + return '\t'; + } + + // Otherwise, we need to guess the multiple + const min = spaced.reduce((previous, current) => { + const numSpaces = /^ +/.exec(current)[0].length; + return Math.min(numSpaces, previous); + }, Infinity); + + return new Array(min + 1).join(' '); +} + +function getRelativePath(from, to) { + const fromParts = from.split(/[/\\]/); + const toParts = to.split(/[/\\]/); + + fromParts.pop(); // get dirname + + while (fromParts[0] === toParts[0]) { + fromParts.shift(); + toParts.shift(); + } + + if (fromParts.length) { + let i = fromParts.length; + while (i--) fromParts[i] = '..'; + } + + return fromParts.concat(toParts).join('/'); +} + +const toString = Object.prototype.toString; + +function isObject(thing) { + return toString.call(thing) === '[object Object]'; +} + +function getLocator(source) { + const originalLines = source.split('\n'); + const lineOffsets = []; + + for (let i = 0, pos = 0; i < originalLines.length; i++) { + lineOffsets.push(pos); + pos += originalLines[i].length + 1; + } + + return function locate(index) { + let i = 0; + let j = lineOffsets.length; + while (i < j) { + const m = (i + j) >> 1; + if (index < lineOffsets[m]) { + j = m; + } else { + i = m + 1; + } + } + const line = i - 1; + const column = index - lineOffsets[line]; + return { line, column }; + }; +} + +const wordRegex = /\w/; + +class Mappings { + constructor(hires) { + this.hires = hires; + this.generatedCodeLine = 0; + this.generatedCodeColumn = 0; + this.raw = []; + this.rawSegments = this.raw[this.generatedCodeLine] = []; + this.pending = null; + } + + addEdit(sourceIndex, content, loc, nameIndex) { + if (content.length) { + const contentLengthMinusOne = content.length - 1; + let contentLineEnd = content.indexOf('\n', 0); + let previousContentLineEnd = -1; + // Loop through each line in the content and add a segment, but stop if the last line is empty, + // else code afterwards would fill one line too many + while (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) { + const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + if (nameIndex >= 0) { + segment.push(nameIndex); + } + this.rawSegments.push(segment); + + this.generatedCodeLine += 1; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + this.generatedCodeColumn = 0; + + previousContentLineEnd = contentLineEnd; + contentLineEnd = content.indexOf('\n', contentLineEnd + 1); + } + + const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + if (nameIndex >= 0) { + segment.push(nameIndex); + } + this.rawSegments.push(segment); + + this.advance(content.slice(previousContentLineEnd + 1)); + } else if (this.pending) { + this.rawSegments.push(this.pending); + this.advance(content); + } + + this.pending = null; + } + + addUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) { + let originalCharIndex = chunk.start; + let first = true; + // when iterating each char, check if it's in a word boundary + let charInHiresBoundary = false; + + while (originalCharIndex < chunk.end) { + if (original[originalCharIndex] === '\n') { + loc.line += 1; + loc.column = 0; + this.generatedCodeLine += 1; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + this.generatedCodeColumn = 0; + first = true; + charInHiresBoundary = false; + } else { + if (this.hires || first || sourcemapLocations.has(originalCharIndex)) { + const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + + if (this.hires === 'boundary') { + // in hires "boundary", group segments per word boundary than per char + if (wordRegex.test(original[originalCharIndex])) { + // for first char in the boundary found, start the boundary by pushing a segment + if (!charInHiresBoundary) { + this.rawSegments.push(segment); + charInHiresBoundary = true; + } + } else { + // for non-word char, end the boundary by pushing a segment + this.rawSegments.push(segment); + charInHiresBoundary = false; + } + } else { + this.rawSegments.push(segment); + } + } + + loc.column += 1; + this.generatedCodeColumn += 1; + first = false; + } + + originalCharIndex += 1; + } + + this.pending = null; + } + + advance(str) { + if (!str) return; + + const lines = str.split('\n'); + + if (lines.length > 1) { + for (let i = 0; i < lines.length - 1; i++) { + this.generatedCodeLine++; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + } + this.generatedCodeColumn = 0; + } + + this.generatedCodeColumn += lines[lines.length - 1].length; + } +} + +const n = '\n'; + +const warned = { + insertLeft: false, + insertRight: false, + storeName: false, +}; + +class MagicString { + constructor(string, options = {}) { + const chunk = new Chunk(0, string.length, string); + + Object.defineProperties(this, { + original: { writable: true, value: string }, + outro: { writable: true, value: '' }, + intro: { writable: true, value: '' }, + firstChunk: { writable: true, value: chunk }, + lastChunk: { writable: true, value: chunk }, + lastSearchedChunk: { writable: true, value: chunk }, + byStart: { writable: true, value: {} }, + byEnd: { writable: true, value: {} }, + filename: { writable: true, value: options.filename }, + indentExclusionRanges: { writable: true, value: options.indentExclusionRanges }, + sourcemapLocations: { writable: true, value: new BitSet() }, + storedNames: { writable: true, value: {} }, + indentStr: { writable: true, value: undefined }, + ignoreList: { writable: true, value: options.ignoreList }, + offset: { writable: true, value: options.offset || 0 }, + }); + + this.byStart[0] = chunk; + this.byEnd[string.length] = chunk; + } + + addSourcemapLocation(char) { + this.sourcemapLocations.add(char); + } + + append(content) { + if (typeof content !== 'string') throw new TypeError('outro content must be a string'); + + this.outro += content; + return this; + } + + appendLeft(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byEnd[index]; + + if (chunk) { + chunk.appendLeft(content); + } else { + this.intro += content; + } + return this; + } + + appendRight(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byStart[index]; + + if (chunk) { + chunk.appendRight(content); + } else { + this.outro += content; + } + return this; + } + + clone() { + const cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset }); + + let originalChunk = this.firstChunk; + let clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone()); + + while (originalChunk) { + cloned.byStart[clonedChunk.start] = clonedChunk; + cloned.byEnd[clonedChunk.end] = clonedChunk; + + const nextOriginalChunk = originalChunk.next; + const nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone(); + + if (nextClonedChunk) { + clonedChunk.next = nextClonedChunk; + nextClonedChunk.previous = clonedChunk; + + clonedChunk = nextClonedChunk; + } + + originalChunk = nextOriginalChunk; + } + + cloned.lastChunk = clonedChunk; + + if (this.indentExclusionRanges) { + cloned.indentExclusionRanges = this.indentExclusionRanges.slice(); + } + + cloned.sourcemapLocations = new BitSet(this.sourcemapLocations); + + cloned.intro = this.intro; + cloned.outro = this.outro; + + return cloned; + } + + generateDecodedMap(options) { + options = options || {}; + + const sourceIndex = 0; + const names = Object.keys(this.storedNames); + const mappings = new Mappings(options.hires); + + const locate = getLocator(this.original); + + if (this.intro) { + mappings.advance(this.intro); + } + + this.firstChunk.eachNext((chunk) => { + const loc = locate(chunk.start); + + if (chunk.intro.length) mappings.advance(chunk.intro); + + if (chunk.edited) { + mappings.addEdit( + sourceIndex, + chunk.content, + loc, + chunk.storeName ? names.indexOf(chunk.original) : -1, + ); + } else { + mappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations); + } + + if (chunk.outro.length) mappings.advance(chunk.outro); + }); + + return { + file: options.file ? options.file.split(/[/\\]/).pop() : undefined, + sources: [ + options.source ? getRelativePath(options.file || '', options.source) : options.file || '', + ], + sourcesContent: options.includeContent ? [this.original] : undefined, + names, + mappings: mappings.raw, + x_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined, + }; + } + + generateMap(options) { + return new SourceMap(this.generateDecodedMap(options)); + } + + _ensureindentStr() { + if (this.indentStr === undefined) { + this.indentStr = guessIndent(this.original); + } + } + + _getRawIndentString() { + this._ensureindentStr(); + return this.indentStr; + } + + getIndentString() { + this._ensureindentStr(); + return this.indentStr === null ? '\t' : this.indentStr; + } + + indent(indentStr, options) { + const pattern = /^[^\r\n]/gm; + + if (isObject(indentStr)) { + options = indentStr; + indentStr = undefined; + } + + if (indentStr === undefined) { + this._ensureindentStr(); + indentStr = this.indentStr || '\t'; + } + + if (indentStr === '') return this; // noop + + options = options || {}; + + // Process exclusion ranges + const isExcluded = {}; + + if (options.exclude) { + const exclusions = + typeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude; + exclusions.forEach((exclusion) => { + for (let i = exclusion[0]; i < exclusion[1]; i += 1) { + isExcluded[i] = true; + } + }); + } + + let shouldIndentNextCharacter = options.indentStart !== false; + const replacer = (match) => { + if (shouldIndentNextCharacter) return `${indentStr}${match}`; + shouldIndentNextCharacter = true; + return match; + }; + + this.intro = this.intro.replace(pattern, replacer); + + let charIndex = 0; + let chunk = this.firstChunk; + + while (chunk) { + const end = chunk.end; + + if (chunk.edited) { + if (!isExcluded[charIndex]) { + chunk.content = chunk.content.replace(pattern, replacer); + + if (chunk.content.length) { + shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\n'; + } + } + } else { + charIndex = chunk.start; + + while (charIndex < end) { + if (!isExcluded[charIndex]) { + const char = this.original[charIndex]; + + if (char === '\n') { + shouldIndentNextCharacter = true; + } else if (char !== '\r' && shouldIndentNextCharacter) { + shouldIndentNextCharacter = false; + + if (charIndex === chunk.start) { + chunk.prependRight(indentStr); + } else { + this._splitChunk(chunk, charIndex); + chunk = chunk.next; + chunk.prependRight(indentStr); + } + } + } + + charIndex += 1; + } + } + + charIndex = chunk.end; + chunk = chunk.next; + } + + this.outro = this.outro.replace(pattern, replacer); + + return this; + } + + insert() { + throw new Error( + 'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)', + ); + } + + insertLeft(index, content) { + if (!warned.insertLeft) { + console.warn( + 'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead', + ); + warned.insertLeft = true; + } + + return this.appendLeft(index, content); + } + + insertRight(index, content) { + if (!warned.insertRight) { + console.warn( + 'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead', + ); + warned.insertRight = true; + } + + return this.prependRight(index, content); + } + + move(start, end, index) { + start = start + this.offset; + end = end + this.offset; + index = index + this.offset; + + if (index >= start && index <= end) throw new Error('Cannot move a selection inside itself'); + + this._split(start); + this._split(end); + this._split(index); + + const first = this.byStart[start]; + const last = this.byEnd[end]; + + const oldLeft = first.previous; + const oldRight = last.next; + + const newRight = this.byStart[index]; + if (!newRight && last === this.lastChunk) return this; + const newLeft = newRight ? newRight.previous : this.lastChunk; + + if (oldLeft) oldLeft.next = oldRight; + if (oldRight) oldRight.previous = oldLeft; + + if (newLeft) newLeft.next = first; + if (newRight) newRight.previous = last; + + if (!first.previous) this.firstChunk = last.next; + if (!last.next) { + this.lastChunk = first.previous; + this.lastChunk.next = null; + } + + first.previous = newLeft; + last.next = newRight || null; + + if (!newLeft) this.firstChunk = first; + if (!newRight) this.lastChunk = last; + return this; + } + + overwrite(start, end, content, options) { + options = options || {}; + return this.update(start, end, content, { ...options, overwrite: !options.contentOnly }); + } + + update(start, end, content, options) { + start = start + this.offset; + end = end + this.offset; + + if (typeof content !== 'string') throw new TypeError('replacement content must be a string'); + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + if (end > this.original.length) throw new Error('end is out of bounds'); + if (start === end) + throw new Error( + 'Cannot overwrite a zero-length range – use appendLeft or prependRight instead', + ); + + this._split(start); + this._split(end); + + if (options === true) { + if (!warned.storeName) { + console.warn( + 'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string', + ); + warned.storeName = true; + } + + options = { storeName: true }; + } + const storeName = options !== undefined ? options.storeName : false; + const overwrite = options !== undefined ? options.overwrite : false; + + if (storeName) { + const original = this.original.slice(start, end); + Object.defineProperty(this.storedNames, original, { + writable: true, + value: true, + enumerable: true, + }); + } + + const first = this.byStart[start]; + const last = this.byEnd[end]; + + if (first) { + let chunk = first; + while (chunk !== last) { + if (chunk.next !== this.byStart[chunk.end]) { + throw new Error('Cannot overwrite across a split point'); + } + chunk = chunk.next; + chunk.edit('', false); + } + + first.edit(content, storeName, !overwrite); + } else { + // must be inserting at the end + const newChunk = new Chunk(start, end, '').edit(content, storeName); + + // TODO last chunk in the array may not be the last chunk, if it's moved... + last.next = newChunk; + newChunk.previous = last; + } + return this; + } + + prepend(content) { + if (typeof content !== 'string') throw new TypeError('outro content must be a string'); + + this.intro = content + this.intro; + return this; + } + + prependLeft(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byEnd[index]; + + if (chunk) { + chunk.prependLeft(content); + } else { + this.intro = content + this.intro; + } + return this; + } + + prependRight(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byStart[index]; + + if (chunk) { + chunk.prependRight(content); + } else { + this.outro = content + this.outro; + } + return this; + } + + remove(start, end) { + start = start + this.offset; + end = end + this.offset; + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + if (start === end) return this; + + if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds'); + if (start > end) throw new Error('end must be greater than start'); + + this._split(start); + this._split(end); + + let chunk = this.byStart[start]; + + while (chunk) { + chunk.intro = ''; + chunk.outro = ''; + chunk.edit(''); + + chunk = end > chunk.end ? this.byStart[chunk.end] : null; + } + return this; + } + + reset(start, end) { + start = start + this.offset; + end = end + this.offset; + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + if (start === end) return this; + + if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds'); + if (start > end) throw new Error('end must be greater than start'); + + this._split(start); + this._split(end); + + let chunk = this.byStart[start]; + + while (chunk) { + chunk.reset(); + + chunk = end > chunk.end ? this.byStart[chunk.end] : null; + } + return this; + } + + lastChar() { + if (this.outro.length) return this.outro[this.outro.length - 1]; + let chunk = this.lastChunk; + do { + if (chunk.outro.length) return chunk.outro[chunk.outro.length - 1]; + if (chunk.content.length) return chunk.content[chunk.content.length - 1]; + if (chunk.intro.length) return chunk.intro[chunk.intro.length - 1]; + } while ((chunk = chunk.previous)); + if (this.intro.length) return this.intro[this.intro.length - 1]; + return ''; + } + + lastLine() { + let lineIndex = this.outro.lastIndexOf(n); + if (lineIndex !== -1) return this.outro.substr(lineIndex + 1); + let lineStr = this.outro; + let chunk = this.lastChunk; + do { + if (chunk.outro.length > 0) { + lineIndex = chunk.outro.lastIndexOf(n); + if (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr; + lineStr = chunk.outro + lineStr; + } + + if (chunk.content.length > 0) { + lineIndex = chunk.content.lastIndexOf(n); + if (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr; + lineStr = chunk.content + lineStr; + } + + if (chunk.intro.length > 0) { + lineIndex = chunk.intro.lastIndexOf(n); + if (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr; + lineStr = chunk.intro + lineStr; + } + } while ((chunk = chunk.previous)); + lineIndex = this.intro.lastIndexOf(n); + if (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr; + return this.intro + lineStr; + } + + slice(start = 0, end = this.original.length - this.offset) { + start = start + this.offset; + end = end + this.offset; + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + let result = ''; + + // find start chunk + let chunk = this.firstChunk; + while (chunk && (chunk.start > start || chunk.end <= start)) { + // found end chunk before start + if (chunk.start < end && chunk.end >= end) { + return result; + } + + chunk = chunk.next; + } + + if (chunk && chunk.edited && chunk.start !== start) + throw new Error(`Cannot use replaced character ${start} as slice start anchor.`); + + const startChunk = chunk; + while (chunk) { + if (chunk.intro && (startChunk !== chunk || chunk.start === start)) { + result += chunk.intro; + } + + const containsEnd = chunk.start < end && chunk.end >= end; + if (containsEnd && chunk.edited && chunk.end !== end) + throw new Error(`Cannot use replaced character ${end} as slice end anchor.`); + + const sliceStart = startChunk === chunk ? start - chunk.start : 0; + const sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length; + + result += chunk.content.slice(sliceStart, sliceEnd); + + if (chunk.outro && (!containsEnd || chunk.end === end)) { + result += chunk.outro; + } + + if (containsEnd) { + break; + } + + chunk = chunk.next; + } + + return result; + } + + // TODO deprecate this? not really very useful + snip(start, end) { + const clone = this.clone(); + clone.remove(0, start); + clone.remove(end, clone.original.length); + + return clone; + } + + _split(index) { + if (this.byStart[index] || this.byEnd[index]) return; + + let chunk = this.lastSearchedChunk; + const searchForward = index > chunk.end; + + while (chunk) { + if (chunk.contains(index)) return this._splitChunk(chunk, index); + + chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start]; + } + } + + _splitChunk(chunk, index) { + if (chunk.edited && chunk.content.length) { + // zero-length edited chunks are a special case (overlapping replacements) + const loc = getLocator(this.original)(index); + throw new Error( + `Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – "${chunk.original}")`, + ); + } + + const newChunk = chunk.split(index); + + this.byEnd[index] = chunk; + this.byStart[index] = newChunk; + this.byEnd[newChunk.end] = newChunk; + + if (chunk === this.lastChunk) this.lastChunk = newChunk; + + this.lastSearchedChunk = chunk; + return true; + } + + toString() { + let str = this.intro; + + let chunk = this.firstChunk; + while (chunk) { + str += chunk.toString(); + chunk = chunk.next; + } + + return str + this.outro; + } + + isEmpty() { + let chunk = this.firstChunk; + do { + if ( + (chunk.intro.length && chunk.intro.trim()) || + (chunk.content.length && chunk.content.trim()) || + (chunk.outro.length && chunk.outro.trim()) + ) + return false; + } while ((chunk = chunk.next)); + return true; + } + + length() { + let chunk = this.firstChunk; + let length = 0; + do { + length += chunk.intro.length + chunk.content.length + chunk.outro.length; + } while ((chunk = chunk.next)); + return length; + } + + trimLines() { + return this.trim('[\\r\\n]'); + } + + trim(charType) { + return this.trimStart(charType).trimEnd(charType); + } + + trimEndAborted(charType) { + const rx = new RegExp((charType || '\\s') + '+$'); + + this.outro = this.outro.replace(rx, ''); + if (this.outro.length) return true; + + let chunk = this.lastChunk; + + do { + const end = chunk.end; + const aborted = chunk.trimEnd(rx); + + // if chunk was trimmed, we have a new lastChunk + if (chunk.end !== end) { + if (this.lastChunk === chunk) { + this.lastChunk = chunk.next; + } + + this.byEnd[chunk.end] = chunk; + this.byStart[chunk.next.start] = chunk.next; + this.byEnd[chunk.next.end] = chunk.next; + } + + if (aborted) return true; + chunk = chunk.previous; + } while (chunk); + + return false; + } + + trimEnd(charType) { + this.trimEndAborted(charType); + return this; + } + trimStartAborted(charType) { + const rx = new RegExp('^' + (charType || '\\s') + '+'); + + this.intro = this.intro.replace(rx, ''); + if (this.intro.length) return true; + + let chunk = this.firstChunk; + + do { + const end = chunk.end; + const aborted = chunk.trimStart(rx); + + if (chunk.end !== end) { + // special case... + if (chunk === this.lastChunk) this.lastChunk = chunk.next; + + this.byEnd[chunk.end] = chunk; + this.byStart[chunk.next.start] = chunk.next; + this.byEnd[chunk.next.end] = chunk.next; + } + + if (aborted) return true; + chunk = chunk.next; + } while (chunk); + + return false; + } + + trimStart(charType) { + this.trimStartAborted(charType); + return this; + } + + hasChanged() { + return this.original !== this.toString(); + } + + _replaceRegexp(searchValue, replacement) { + function getReplacement(match, str) { + if (typeof replacement === 'string') { + return replacement.replace(/\$(\$|&|\d+)/g, (_, i) => { + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter + if (i === '$') return '$'; + if (i === '&') return match[0]; + const num = +i; + if (num < match.length) return match[+i]; + return `$${i}`; + }); + } else { + return replacement(...match, match.index, str, match.groups); + } + } + function matchAll(re, str) { + let match; + const matches = []; + while ((match = re.exec(str))) { + matches.push(match); + } + return matches; + } + if (searchValue.global) { + const matches = matchAll(searchValue, this.original); + matches.forEach((match) => { + if (match.index != null) { + const replacement = getReplacement(match, this.original); + if (replacement !== match[0]) { + this.overwrite(match.index, match.index + match[0].length, replacement); + } + } + }); + } else { + const match = this.original.match(searchValue); + if (match && match.index != null) { + const replacement = getReplacement(match, this.original); + if (replacement !== match[0]) { + this.overwrite(match.index, match.index + match[0].length, replacement); + } + } + } + return this; + } + + _replaceString(string, replacement) { + const { original } = this; + const index = original.indexOf(string); + + if (index !== -1) { + this.overwrite(index, index + string.length, replacement); + } + + return this; + } + + replace(searchValue, replacement) { + if (typeof searchValue === 'string') { + return this._replaceString(searchValue, replacement); + } + + return this._replaceRegexp(searchValue, replacement); + } + + _replaceAllString(string, replacement) { + const { original } = this; + const stringLength = string.length; + for ( + let index = original.indexOf(string); + index !== -1; + index = original.indexOf(string, index + stringLength) + ) { + const previous = original.slice(index, index + stringLength); + if (previous !== replacement) this.overwrite(index, index + stringLength, replacement); + } + + return this; + } + + replaceAll(searchValue, replacement) { + if (typeof searchValue === 'string') { + return this._replaceAllString(searchValue, replacement); + } + + if (!searchValue.global) { + throw new TypeError( + 'MagicString.prototype.replaceAll called with a non-global RegExp argument', + ); + } + + return this._replaceRegexp(searchValue, replacement); + } +} + +var _a, _b; +class ScriptCompileContext { + constructor(descriptor, options) { + this.descriptor = descriptor; + this.options = options; + this.isCE = false; + this.source = this.descriptor.source; + this.filename = this.descriptor.filename; + this.s = new MagicString(this.source); + this.startOffset = (_a = this.descriptor.scriptSetup) == null ? void 0 : _a.loc.start.offset; + this.endOffset = (_b = this.descriptor.scriptSetup) == null ? void 0 : _b.loc.end.offset; + this.userImports = /* @__PURE__ */ Object.create(null); + // macros presence check + this.hasDefinePropsCall = false; + this.hasDefineEmitCall = false; + this.hasDefineExposeCall = false; + this.hasDefaultExportName = false; + this.hasDefaultExportRender = false; + this.hasDefineOptionsCall = false; + this.hasDefineSlotsCall = false; + this.hasDefineModelCall = false; + this.propsDestructuredBindings = /* @__PURE__ */ Object.create(null); + // defineModel + this.modelDecls = /* @__PURE__ */ Object.create(null); + // codegen + this.bindingMetadata = {}; + this.helperImports = /* @__PURE__ */ new Set(); + const { script, scriptSetup } = descriptor; + const scriptLang = script && script.lang; + const scriptSetupLang = scriptSetup && scriptSetup.lang; + this.isJS = scriptLang === "js" || scriptLang === "jsx" || scriptSetupLang === "js" || scriptSetupLang === "jsx"; + this.isTS = scriptLang === "ts" || scriptLang === "tsx" || scriptSetupLang === "ts" || scriptSetupLang === "tsx"; + const customElement = options.customElement; + const filename = this.descriptor.filename; + if (customElement) { + this.isCE = typeof customElement === "boolean" ? customElement : customElement(filename); + } + const plugins = resolveParserPlugins( + scriptLang || scriptSetupLang, + options.babelParserPlugins + ); + function parse(input, offset) { + try { + return libExports.parse(input, { + plugins, + sourceType: "module" + }).program; + } catch (e) { + e.message = `[vue/compiler-sfc] ${e.message} + +${descriptor.filename} +${generateCodeFrame( + descriptor.source, + e.pos + offset, + e.pos + offset + 1 + )}`; + throw e; + } + } + this.scriptAst = descriptor.script && parse(descriptor.script.content, descriptor.script.loc.start.offset); + this.scriptSetupAst = descriptor.scriptSetup && parse(descriptor.scriptSetup.content, this.startOffset); + } + helper(key) { + this.helperImports.add(key); + return `_${key}`; + } + getString(node, scriptSetup = true) { + const block = scriptSetup ? this.descriptor.scriptSetup : this.descriptor.script; + return block.content.slice(node.start, node.end); + } + warn(msg, node, scope) { + warn(generateError(msg, node, this, scope)); + } + error(msg, node, scope) { + throw new Error( + `[@vue/compiler-sfc] ${generateError(msg, node, this, scope)}` + ); + } +} +function generateError(msg, node, ctx, scope) { + const offset = scope ? scope.offset : ctx.startOffset; + return `${msg} + +${(scope || ctx.descriptor).filename} +${generateCodeFrame( + (scope || ctx.descriptor).source, + node.start + offset, + node.end + offset + )}`; +} +function resolveParserPlugins(lang, userPlugins, dts = false) { + const plugins = []; + if (!userPlugins || !userPlugins.some( + (p) => p === "importAssertions" || p === "importAttributes" || isArray$3(p) && p[0] === "importAttributes" + )) { + plugins.push("importAttributes"); + } + if (lang === "jsx" || lang === "tsx" || lang === "mtsx") { + plugins.push("jsx"); + } else if (userPlugins) { + userPlugins = userPlugins.filter((p) => p !== "jsx"); + } + if (lang === "ts" || lang === "mts" || lang === "tsx" || lang === "mtsx") { + plugins.push(["typescript", { dts }], "explicitResourceManagement"); + if (!userPlugins || !userPlugins.includes("decorators")) { + plugins.push("decorators-legacy"); + } + } + if (userPlugins) { + plugins.push(...userPlugins); + } + return plugins; +} + +function rewriteDefault(input, as, parserPlugins) { + const ast = libExports.parse(input, { + sourceType: "module", + plugins: resolveParserPlugins("js", parserPlugins) + }).program.body; + const s = new MagicString(input); + rewriteDefaultAST(ast, s, as); + return s.toString(); +} +function rewriteDefaultAST(ast, s, as) { + if (!hasDefaultExport(ast)) { + s.append(` +const ${as} = {}`); + return; + } + ast.forEach((node) => { + if (node.type === "ExportDefaultDeclaration") { + if (node.declaration.type === "ClassDeclaration" && node.declaration.id) { + const start = node.declaration.decorators && node.declaration.decorators.length > 0 ? node.declaration.decorators[node.declaration.decorators.length - 1].end : node.start; + s.overwrite(start, node.declaration.id.start, ` class `); + s.append(` +const ${as} = ${node.declaration.id.name}`); + } else { + s.overwrite(node.start, node.declaration.start, `const ${as} = `); + } + } else if (node.type === "ExportNamedDeclaration") { + for (const specifier of node.specifiers) { + if (specifier.type === "ExportSpecifier" && specifier.exported.type === "Identifier" && specifier.exported.name === "default") { + if (node.source) { + if (specifier.local.name === "default") { + s.prepend( + `import { default as __VUE_DEFAULT__ } from '${node.source.value}' +` + ); + const end2 = specifierEnd(s, specifier.local.end, node.end); + s.remove(specifier.start, end2); + s.append(` +const ${as} = __VUE_DEFAULT__`); + continue; + } else { + s.prepend( + `import { ${s.slice( + specifier.local.start, + specifier.local.end + )} as __VUE_DEFAULT__ } from '${node.source.value}' +` + ); + const end2 = specifierEnd(s, specifier.exported.end, node.end); + s.remove(specifier.start, end2); + s.append(` +const ${as} = __VUE_DEFAULT__`); + continue; + } + } + const end = specifierEnd(s, specifier.end, node.end); + s.remove(specifier.start, end); + s.append(` +const ${as} = ${specifier.local.name}`); + } + } + } + }); +} +function hasDefaultExport(ast) { + for (const stmt of ast) { + if (stmt.type === "ExportDefaultDeclaration") { + return true; + } else if (stmt.type === "ExportNamedDeclaration" && stmt.specifiers.some( + (spec) => spec.exported.name === "default" + )) { + return true; + } + } + return false; +} +function specifierEnd(s, end, nodeEnd) { + let hasCommas = false; + let oldEnd = end; + while (end < nodeEnd) { + if (/\s/.test(s.slice(end, end + 1))) { + end++; + } else if (s.slice(end, end + 1) === ",") { + end++; + hasCommas = true; + break; + } else if (s.slice(end, end + 1) === "}") { + break; + } + } + return hasCommas ? end : oldEnd; +} + +var __defProp$3 = Object.defineProperty; +var __defProps$2 = Object.defineProperties; +var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols; +var __hasOwnProp$3 = Object.prototype.hasOwnProperty; +var __propIsEnum$3 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$3 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$3.call(b, prop)) + __defNormalProp$3(a, prop, b[prop]); + if (__getOwnPropSymbols$3) + for (var prop of __getOwnPropSymbols$3(b)) { + if (__propIsEnum$3.call(b, prop)) + __defNormalProp$3(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b)); +const normalScriptDefaultVar = `__default__`; +function processNormalScript(ctx, scopeId) { + var _a; + const script = ctx.descriptor.script; + if (script.lang && !ctx.isJS && !ctx.isTS) { + return script; + } + try { + let content = script.content; + let map = script.map; + const scriptAst = ctx.scriptAst; + const bindings = analyzeScriptBindings(scriptAst.body); + const { cssVars } = ctx.descriptor; + const { genDefaultAs, isProd } = ctx.options; + if (cssVars.length || genDefaultAs) { + const defaultVar = genDefaultAs || normalScriptDefaultVar; + const s = new MagicString(content); + rewriteDefaultAST(scriptAst.body, s, defaultVar); + content = s.toString(); + if (cssVars.length && !((_a = ctx.options.templateOptions) == null ? void 0 : _a.ssr)) { + content += genNormalScriptCssVarsCode( + cssVars, + bindings, + scopeId, + !!isProd, + defaultVar + ); + } + if (!genDefaultAs) { + content += ` +export default ${defaultVar}`; + } + } + return __spreadProps$2(__spreadValues$3({}, script), { + content, + map, + bindings, + scriptAst: scriptAst.body + }); + } catch (e) { + return script; + } +} + +var __defProp$2 = Object.defineProperty; +var __defProps$1 = Object.defineProperties; +var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols; +var __hasOwnProp$2 = Object.prototype.hasOwnProperty; +var __propIsEnum$2 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$2 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$2.call(b, prop)) + __defNormalProp$2(a, prop, b[prop]); + if (__getOwnPropSymbols$2) + for (var prop of __getOwnPropSymbols$2(b)) { + if (__propIsEnum$2.call(b, prop)) + __defNormalProp$2(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b)); +class TypeScope { + constructor(filename, source, offset = 0, imports = /* @__PURE__ */ Object.create(null), types = /* @__PURE__ */ Object.create(null), declares = /* @__PURE__ */ Object.create(null)) { + this.filename = filename; + this.source = source; + this.offset = offset; + this.imports = imports; + this.types = types; + this.declares = declares; + this.isGenericScope = false; + this.resolvedImportSources = /* @__PURE__ */ Object.create(null); + this.exportedTypes = /* @__PURE__ */ Object.create(null); + this.exportedDeclares = /* @__PURE__ */ Object.create(null); + } +} +function resolveTypeElements(ctx, node, scope, typeParameters) { + const canCache = !typeParameters; + if (canCache && node._resolvedElements) { + return node._resolvedElements; + } + const resolved = innerResolveTypeElements( + ctx, + node, + node._ownerScope || scope || ctxToScope(ctx), + typeParameters + ); + return canCache ? node._resolvedElements = resolved : resolved; +} +function innerResolveTypeElements(ctx, node, scope, typeParameters) { + var _a, _b; + if (node.leadingComments && node.leadingComments.some((c) => c.value.includes("@vue-ignore"))) { + return { props: {} }; + } + switch (node.type) { + case "TSTypeLiteral": + return typeElementsToMap(ctx, node.members, scope, typeParameters); + case "TSInterfaceDeclaration": + return resolveInterfaceMembers(ctx, node, scope, typeParameters); + case "TSTypeAliasDeclaration": + case "TSTypeAnnotation": + case "TSParenthesizedType": + return resolveTypeElements( + ctx, + node.typeAnnotation, + scope, + typeParameters + ); + case "TSFunctionType": { + return { props: {}, calls: [node] }; + } + case "TSUnionType": + case "TSIntersectionType": + return mergeElements( + node.types.map((t) => resolveTypeElements(ctx, t, scope, typeParameters)), + node.type + ); + case "TSMappedType": + return resolveMappedType(ctx, node, scope, typeParameters); + case "TSIndexedAccessType": { + const types = resolveIndexType(ctx, node, scope); + return mergeElements( + types.map((t) => resolveTypeElements(ctx, t, t._ownerScope)), + "TSUnionType" + ); + } + case "TSExpressionWithTypeArguments": + // referenced by interface extends + case "TSTypeReference": { + const typeName = getReferenceName(node); + if ((typeName === "ExtractPropTypes" || typeName === "ExtractPublicPropTypes") && node.typeParameters && ((_a = scope.imports[typeName]) == null ? void 0 : _a.source) === "vue") { + return resolveExtractPropTypes( + resolveTypeElements( + ctx, + node.typeParameters.params[0], + scope, + typeParameters + ), + scope + ); + } + const resolved = resolveTypeReference(ctx, node, scope); + if (resolved) { + let typeParams; + if ((resolved.type === "TSTypeAliasDeclaration" || resolved.type === "TSInterfaceDeclaration") && resolved.typeParameters && node.typeParameters) { + typeParams = /* @__PURE__ */ Object.create(null); + resolved.typeParameters.params.forEach((p, i) => { + let param = typeParameters && typeParameters[p.name]; + if (!param) param = node.typeParameters.params[i]; + typeParams[p.name] = param; + }); + } + return resolveTypeElements( + ctx, + resolved, + resolved._ownerScope, + typeParams + ); + } else { + if (typeof typeName === "string") { + if (typeParameters && typeParameters[typeName]) { + return resolveTypeElements( + ctx, + typeParameters[typeName], + scope, + typeParameters + ); + } + if ( + // @ts-expect-error + SupportedBuiltinsSet.has(typeName) + ) { + return resolveBuiltin( + ctx, + node, + typeName, + scope, + typeParameters + ); + } else if (typeName === "ReturnType" && node.typeParameters) { + const ret = resolveReturnType( + ctx, + node.typeParameters.params[0], + scope + ); + if (ret) { + return resolveTypeElements(ctx, ret, scope); + } + } + } + return ctx.error( + `Unresolvable type reference or unsupported built-in utility type`, + node, + scope + ); + } + } + case "TSImportType": { + if (getId(node.argument) === "vue" && ((_b = node.qualifier) == null ? void 0 : _b.type) === "Identifier" && node.qualifier.name === "ExtractPropTypes" && node.typeParameters) { + return resolveExtractPropTypes( + resolveTypeElements(ctx, node.typeParameters.params[0], scope), + scope + ); + } + const sourceScope = importSourceToScope( + ctx, + node.argument, + scope, + node.argument.value + ); + const resolved = resolveTypeReference(ctx, node, sourceScope); + if (resolved) { + return resolveTypeElements(ctx, resolved, resolved._ownerScope); + } + break; + } + case "TSTypeQuery": + { + const resolved = resolveTypeReference(ctx, node, scope); + if (resolved) { + return resolveTypeElements(ctx, resolved, resolved._ownerScope); + } + } + break; + } + return ctx.error(`Unresolvable type: ${node.type}`, node, scope); +} +function typeElementsToMap(ctx, elements, scope = ctxToScope(ctx), typeParameters) { + const res = { props: {} }; + for (const e of elements) { + if (e.type === "TSPropertySignature" || e.type === "TSMethodSignature") { + if (typeParameters) { + scope = createChildScope(scope); + scope.isGenericScope = true; + Object.assign(scope.types, typeParameters); + } + e._ownerScope = scope; + const name = getId(e.key); + if (name && !e.computed) { + res.props[name] = e; + } else if (e.key.type === "TemplateLiteral") { + for (const key of resolveTemplateKeys(ctx, e.key, scope)) { + res.props[key] = e; + } + } else { + ctx.error( + `Unsupported computed key in type referenced by a macro`, + e.key, + scope + ); + } + } else if (e.type === "TSCallSignatureDeclaration") { + (res.calls || (res.calls = [])).push(e); + } + } + return res; +} +function mergeElements(maps, type) { + if (maps.length === 1) return maps[0]; + const res = { props: {} }; + const { props: baseProps } = res; + for (const { props, calls } of maps) { + for (const key in props) { + if (!hasOwn(baseProps, key)) { + baseProps[key] = props[key]; + } else { + baseProps[key] = createProperty( + baseProps[key].key, + { + type, + // @ts-expect-error + types: [baseProps[key], props[key]] + }, + baseProps[key]._ownerScope, + baseProps[key].optional || props[key].optional + ); + } + } + if (calls) { + (res.calls || (res.calls = [])).push(...calls); + } + } + return res; +} +function createProperty(key, typeAnnotation, scope, optional) { + return { + type: "TSPropertySignature", + key, + kind: "get", + optional, + typeAnnotation: { + type: "TSTypeAnnotation", + typeAnnotation + }, + _ownerScope: scope + }; +} +function resolveInterfaceMembers(ctx, node, scope, typeParameters) { + const base = typeElementsToMap( + ctx, + node.body.body, + node._ownerScope, + typeParameters + ); + if (node.extends) { + for (const ext of node.extends) { + try { + const { props, calls } = resolveTypeElements(ctx, ext, scope); + for (const key in props) { + if (!hasOwn(base.props, key)) { + base.props[key] = props[key]; + } + } + if (calls) { + ; + (base.calls || (base.calls = [])).push(...calls); + } + } catch (e) { + ctx.error( + `Failed to resolve extends base type. +If this previously worked in 3.2, you can instruct the compiler to ignore this extend by adding /* @vue-ignore */ before it, for example: + +interface Props extends /* @vue-ignore */ Base {} + +Note: both in 3.2 or with the ignore, the properties in the base type are treated as fallthrough attrs at runtime.`, + ext, + scope + ); + } + } + } + return base; +} +function resolveMappedType(ctx, node, scope, typeParameters) { + const res = { props: {} }; + let keys; + if (node.nameType) { + const { name, constraint } = node.typeParameter; + scope = createChildScope(scope); + Object.assign(scope.types, __spreadProps$1(__spreadValues$2({}, typeParameters), { [name]: constraint })); + keys = resolveStringType(ctx, node.nameType, scope); + } else { + keys = resolveStringType(ctx, node.typeParameter.constraint, scope); + } + for (const key of keys) { + res.props[key] = createProperty( + { + type: "Identifier", + name: key + }, + node.typeAnnotation, + scope, + !!node.optional + ); + } + return res; +} +function resolveIndexType(ctx, node, scope) { + var _a, _b; + if (node.indexType.type === "TSNumberKeyword") { + return resolveArrayElementType(ctx, node.objectType, scope); + } + const { indexType, objectType } = node; + const types = []; + let keys; + let resolved; + if (indexType.type === "TSStringKeyword") { + resolved = resolveTypeElements(ctx, objectType, scope); + keys = Object.keys(resolved.props); + } else { + keys = resolveStringType(ctx, indexType, scope); + resolved = resolveTypeElements(ctx, objectType, scope); + } + for (const key of keys) { + const targetType = (_b = (_a = resolved.props[key]) == null ? void 0 : _a.typeAnnotation) == null ? void 0 : _b.typeAnnotation; + if (targetType) { + targetType._ownerScope = resolved.props[key]._ownerScope; + types.push(targetType); + } + } + return types; +} +function resolveArrayElementType(ctx, node, scope) { + if (node.type === "TSArrayType") { + return [node.elementType]; + } + if (node.type === "TSTupleType") { + return node.elementTypes.map( + (t) => t.type === "TSNamedTupleMember" ? t.elementType : t + ); + } + if (node.type === "TSTypeReference") { + if (getReferenceName(node) === "Array" && node.typeParameters) { + return node.typeParameters.params; + } else { + const resolved = resolveTypeReference(ctx, node, scope); + if (resolved) { + return resolveArrayElementType(ctx, resolved, scope); + } + } + } + return ctx.error( + "Failed to resolve element type from target type", + node, + scope + ); +} +function resolveStringType(ctx, node, scope, typeParameters) { + switch (node.type) { + case "StringLiteral": + return [node.value]; + case "TSLiteralType": + return resolveStringType(ctx, node.literal, scope, typeParameters); + case "TSUnionType": + return node.types.map((t) => resolveStringType(ctx, t, scope, typeParameters)).flat(); + case "TemplateLiteral": { + return resolveTemplateKeys(ctx, node, scope); + } + case "TSTypeReference": { + const resolved = resolveTypeReference(ctx, node, scope); + if (resolved) { + return resolveStringType(ctx, resolved, scope, typeParameters); + } + if (node.typeName.type === "Identifier") { + const name = node.typeName.name; + if (typeParameters && typeParameters[name]) { + return resolveStringType( + ctx, + typeParameters[name], + scope, + typeParameters + ); + } + const getParam = (index = 0) => resolveStringType( + ctx, + node.typeParameters.params[index], + scope, + typeParameters + ); + switch (name) { + case "Extract": + return getParam(1); + case "Exclude": { + const excluded = getParam(1); + return getParam().filter((s) => !excluded.includes(s)); + } + case "Uppercase": + return getParam().map((s) => s.toUpperCase()); + case "Lowercase": + return getParam().map((s) => s.toLowerCase()); + case "Capitalize": + return getParam().map(capitalize); + case "Uncapitalize": + return getParam().map((s) => s[0].toLowerCase() + s.slice(1)); + default: + ctx.error( + "Unsupported type when resolving index type", + node.typeName, + scope + ); + } + } + } + } + return ctx.error("Failed to resolve index type into finite keys", node, scope); +} +function resolveTemplateKeys(ctx, node, scope) { + if (!node.expressions.length) { + return [node.quasis[0].value.raw]; + } + const res = []; + const e = node.expressions[0]; + const q = node.quasis[0]; + const leading = q ? q.value.raw : ``; + const resolved = resolveStringType(ctx, e, scope); + const restResolved = resolveTemplateKeys( + ctx, + __spreadProps$1(__spreadValues$2({}, node), { + expressions: node.expressions.slice(1), + quasis: q ? node.quasis.slice(1) : node.quasis + }), + scope + ); + for (const r of resolved) { + for (const rr of restResolved) { + res.push(leading + r + rr); + } + } + return res; +} +const SupportedBuiltinsSet = /* @__PURE__ */ new Set([ + "Partial", + "Required", + "Readonly", + "Pick", + "Omit" +]); +function resolveBuiltin(ctx, node, name, scope, typeParameters) { + const t = resolveTypeElements( + ctx, + node.typeParameters.params[0], + scope, + typeParameters + ); + switch (name) { + case "Partial": { + const res2 = { props: {}, calls: t.calls }; + Object.keys(t.props).forEach((key) => { + res2.props[key] = __spreadProps$1(__spreadValues$2({}, t.props[key]), { optional: true }); + }); + return res2; + } + case "Required": { + const res2 = { props: {}, calls: t.calls }; + Object.keys(t.props).forEach((key) => { + res2.props[key] = __spreadProps$1(__spreadValues$2({}, t.props[key]), { optional: false }); + }); + return res2; + } + case "Readonly": + return t; + case "Pick": { + const picked = resolveStringType( + ctx, + node.typeParameters.params[1], + scope, + typeParameters + ); + const res2 = { props: {}, calls: t.calls }; + for (const key of picked) { + res2.props[key] = t.props[key]; + } + return res2; + } + case "Omit": + const omitted = resolveStringType( + ctx, + node.typeParameters.params[1], + scope, + typeParameters + ); + const res = { props: {}, calls: t.calls }; + for (const key in t.props) { + if (!omitted.includes(key)) { + res.props[key] = t.props[key]; + } + } + return res; + } +} +function resolveTypeReference(ctx, node, scope, name, onlyExported = false) { + const canCache = !(scope == null ? void 0 : scope.isGenericScope); + if (canCache && node._resolvedReference) { + return node._resolvedReference; + } + const resolved = innerResolveTypeReference( + ctx, + scope || ctxToScope(ctx), + name || getReferenceName(node), + node, + onlyExported + ); + return canCache ? node._resolvedReference = resolved : resolved; +} +function innerResolveTypeReference(ctx, scope, name, node, onlyExported) { + if (typeof name === "string") { + if (scope.imports[name]) { + return resolveTypeFromImport(ctx, node, name, scope); + } else { + const lookupSource = node.type === "TSTypeQuery" ? onlyExported ? scope.exportedDeclares : scope.declares : onlyExported ? scope.exportedTypes : scope.types; + if (lookupSource[name]) { + return lookupSource[name]; + } else { + const globalScopes = resolveGlobalScope(ctx); + if (globalScopes) { + for (const s of globalScopes) { + const src = node.type === "TSTypeQuery" ? s.declares : s.types; + if (src[name]) { + (ctx.deps || (ctx.deps = /* @__PURE__ */ new Set())).add(s.filename); + return src[name]; + } + } + } + } + } + } else { + let ns = innerResolveTypeReference(ctx, scope, name[0], node, onlyExported); + if (ns) { + if (ns.type !== "TSModuleDeclaration") { + ns = ns._ns; + } + if (ns) { + const childScope = moduleDeclToScope(ctx, ns, ns._ownerScope || scope); + return innerResolveTypeReference( + ctx, + childScope, + name.length > 2 ? name.slice(1) : name[name.length - 1], + node, + !ns.declare + ); + } + } + } +} +function getReferenceName(node) { + const ref = node.type === "TSTypeReference" ? node.typeName : node.type === "TSExpressionWithTypeArguments" ? node.expression : node.type === "TSImportType" ? node.qualifier : node.exprName; + if ((ref == null ? void 0 : ref.type) === "Identifier") { + return ref.name; + } else if ((ref == null ? void 0 : ref.type) === "TSQualifiedName") { + return qualifiedNameToPath(ref); + } else { + return "default"; + } +} +function qualifiedNameToPath(node) { + if (node.type === "Identifier") { + return [node.name]; + } else { + return [...qualifiedNameToPath(node.left), node.right.name]; + } +} +function resolveGlobalScope(ctx) { + if (ctx.options.globalTypeFiles) { + const fs = resolveFS(ctx); + if (!fs) { + throw new Error("[vue/compiler-sfc] globalTypeFiles requires fs access."); + } + return ctx.options.globalTypeFiles.map( + (file) => fileToScope(ctx, normalizePath(file), true) + ); + } +} +let ts; +let loadTS; +function registerTS(_loadTS) { + loadTS = () => { + try { + return _loadTS(); + } catch (err) { + if (typeof err.message === "string" && err.message.includes("Cannot find module")) { + throw new Error( + 'Failed to load TypeScript, which is required for resolving imported types. Please make sure "typescript" is installed as a project dependency.' + ); + } else { + throw new Error( + "Failed to load TypeScript for resolving imported types." + ); + } + } + }; +} +function resolveFS(ctx) { + if (ctx.fs) { + return ctx.fs; + } + if (!ts && loadTS) { + ts = loadTS(); + } + const fs = ctx.options.fs || (ts == null ? void 0 : ts.sys); + if (!fs) { + return; + } + return ctx.fs = { + fileExists(file) { + if (file.endsWith(".vue.ts") && !file.endsWith(".d.vue.ts")) { + file = file.replace(/\.ts$/, ""); + } + return fs.fileExists(file); + }, + readFile(file) { + if (file.endsWith(".vue.ts") && !file.endsWith(".d.vue.ts")) { + file = file.replace(/\.ts$/, ""); + } + return fs.readFile(file); + }, + realpath: fs.realpath + }; +} +function resolveTypeFromImport(ctx, node, name, scope) { + const { source, imported } = scope.imports[name]; + const sourceScope = importSourceToScope(ctx, node, scope, source); + return resolveTypeReference(ctx, node, sourceScope, imported, true); +} +function importSourceToScope(ctx, node, scope, source) { + let fs; + try { + fs = resolveFS(ctx); + } catch (err) { + return ctx.error(err.message, node, scope); + } + if (!fs) { + return ctx.error( + `No fs option provided to \`compileScript\` in non-Node environment. File system access is required for resolving imported types.`, + node, + scope + ); + } + let resolved = scope.resolvedImportSources[source]; + if (!resolved) { + if (source.startsWith("..")) { + const osSpecificJoinFn = joinPaths; + const filename = osSpecificJoinFn(dirname(scope.filename), source); + resolved = resolveExt(filename, fs); + } else if (source[0] === ".") { + const filename = joinPaths(dirname(scope.filename), source); + resolved = resolveExt(filename, fs); + } else { + { + return ctx.error( + `Type import from non-relative sources is not supported in the browser build.`, + node, + scope + ); + } + } + if (resolved) { + resolved = scope.resolvedImportSources[source] = normalizePath(resolved); + } + } + if (resolved) { + (ctx.deps || (ctx.deps = /* @__PURE__ */ new Set())).add(resolved); + return fileToScope(ctx, resolved); + } else { + return ctx.error( + `Failed to resolve import source ${JSON.stringify(source)}.`, + node, + scope + ); + } +} +function resolveExt(filename, fs) { + filename = filename.replace(/\.js$/, ""); + const tryResolve = (filename2) => { + if (fs.fileExists(filename2)) return filename2; + }; + return tryResolve(filename) || tryResolve(filename + `.ts`) || tryResolve(filename + `.tsx`) || tryResolve(filename + `.d.ts`) || tryResolve(joinPaths(filename, `index.ts`)) || tryResolve(joinPaths(filename, `index.tsx`)) || tryResolve(joinPaths(filename, `index.d.ts`)); +} +const tsConfigCache = createCache(); +const tsConfigRefMap = /* @__PURE__ */ new Map(); +const fileToScopeCache = createCache(); +function invalidateTypeCache(filename) { + filename = normalizePath(filename); + fileToScopeCache.delete(filename); + tsConfigCache.delete(filename); + const affectedConfig = tsConfigRefMap.get(filename); + if (affectedConfig) tsConfigCache.delete(affectedConfig); +} +function fileToScope(ctx, filename, asGlobal = false) { + const cached = fileToScopeCache.get(filename); + if (cached) { + return cached; + } + const fs = resolveFS(ctx); + const source = fs.readFile(filename) || ""; + const body = parseFile(filename, source, fs, ctx.options.babelParserPlugins); + const scope = new TypeScope(filename, source, 0, recordImports(body)); + recordTypes(ctx, body, scope, asGlobal); + fileToScopeCache.set(filename, scope); + return scope; +} +function parseFile(filename, content, fs, parserPlugins) { + const ext = extname(filename); + if (ext === ".ts" || ext === ".mts" || ext === ".tsx" || ext === ".mtsx") { + return libExports.parse(content, { + plugins: resolveParserPlugins( + ext.slice(1), + parserPlugins, + /\.d\.m?ts$/.test(filename) + ), + sourceType: "module" + }).program.body; + } + const isUnknownTypeSource = !/\.[cm]?[tj]sx?$/.test(filename); + const arbitraryTypeSource = `${filename.slice(0, -ext.length)}.d${ext}.ts`; + const hasArbitraryTypeDeclaration = isUnknownTypeSource && fs.fileExists(arbitraryTypeSource); + if (hasArbitraryTypeDeclaration) { + return libExports.parse(fs.readFile(arbitraryTypeSource), { + plugins: resolveParserPlugins("ts", parserPlugins, true), + sourceType: "module" + }).program.body; + } + if (ext === ".vue") { + const { + descriptor: { script, scriptSetup } + } = parse$2(content); + if (!script && !scriptSetup) { + return []; + } + const scriptOffset = script ? script.loc.start.offset : Infinity; + const scriptSetupOffset = scriptSetup ? scriptSetup.loc.start.offset : Infinity; + const firstBlock = scriptOffset < scriptSetupOffset ? script : scriptSetup; + const secondBlock = scriptOffset < scriptSetupOffset ? scriptSetup : script; + let scriptContent = " ".repeat(Math.min(scriptOffset, scriptSetupOffset)) + firstBlock.content; + if (secondBlock) { + scriptContent += " ".repeat(secondBlock.loc.start.offset - script.loc.end.offset) + secondBlock.content; + } + const lang = (script == null ? void 0 : script.lang) || (scriptSetup == null ? void 0 : scriptSetup.lang); + return libExports.parse(scriptContent, { + plugins: resolveParserPlugins(lang, parserPlugins), + sourceType: "module" + }).program.body; + } + return []; +} +function ctxToScope(ctx) { + if (ctx.scope) { + return ctx.scope; + } + const body = "ast" in ctx ? ctx.ast : ctx.scriptAst ? [...ctx.scriptAst.body, ...ctx.scriptSetupAst.body] : ctx.scriptSetupAst.body; + const scope = new TypeScope( + ctx.filename, + ctx.source, + "startOffset" in ctx ? ctx.startOffset : 0, + "userImports" in ctx ? Object.create(ctx.userImports) : recordImports(body) + ); + recordTypes(ctx, body, scope); + return ctx.scope = scope; +} +function moduleDeclToScope(ctx, node, parentScope) { + if (node._resolvedChildScope) { + return node._resolvedChildScope; + } + const scope = createChildScope(parentScope); + if (node.body.type === "TSModuleDeclaration") { + const decl = node.body; + decl._ownerScope = scope; + const id = getId(decl.id); + scope.types[id] = scope.exportedTypes[id] = decl; + } else { + recordTypes(ctx, node.body.body, scope); + } + return node._resolvedChildScope = scope; +} +function createChildScope(parentScope) { + return new TypeScope( + parentScope.filename, + parentScope.source, + parentScope.offset, + Object.create(parentScope.imports), + Object.create(parentScope.types), + Object.create(parentScope.declares) + ); +} +const importExportRE = /^Import|^Export/; +function recordTypes(ctx, body, scope, asGlobal = false) { + const { types, declares, exportedTypes, exportedDeclares, imports } = scope; + const isAmbient = asGlobal ? !body.some((s) => importExportRE.test(s.type)) : false; + for (const stmt of body) { + if (asGlobal) { + if (isAmbient) { + if (stmt.declare) { + recordType(stmt, types, declares); + } + } else if (stmt.type === "TSModuleDeclaration" && stmt.global) { + for (const s of stmt.body.body) { + recordType(s, types, declares); + } + } + } else { + recordType(stmt, types, declares); + } + } + if (!asGlobal) { + for (const stmt of body) { + if (stmt.type === "ExportNamedDeclaration") { + if (stmt.declaration) { + recordType(stmt.declaration, types, declares); + recordType(stmt.declaration, exportedTypes, exportedDeclares); + } else { + for (const spec of stmt.specifiers) { + if (spec.type === "ExportSpecifier") { + const local = spec.local.name; + const exported = getId(spec.exported); + if (stmt.source) { + imports[exported] = { + source: stmt.source.value, + imported: local + }; + exportedTypes[exported] = { + type: "TSTypeReference", + typeName: { + type: "Identifier", + name: local + }, + _ownerScope: scope + }; + } else if (types[local]) { + exportedTypes[exported] = types[local]; + } + } + } + } + } else if (stmt.type === "ExportAllDeclaration") { + const sourceScope = importSourceToScope( + ctx, + stmt.source, + scope, + stmt.source.value + ); + Object.assign(scope.exportedTypes, sourceScope.exportedTypes); + } else if (stmt.type === "ExportDefaultDeclaration" && stmt.declaration) { + if (stmt.declaration.type !== "Identifier") { + recordType(stmt.declaration, types, declares, "default"); + recordType( + stmt.declaration, + exportedTypes, + exportedDeclares, + "default" + ); + } else if (types[stmt.declaration.name]) { + exportedTypes["default"] = types[stmt.declaration.name]; + } + } + } + } + for (const key of Object.keys(types)) { + const node = types[key]; + node._ownerScope = scope; + if (node._ns) node._ns._ownerScope = scope; + } + for (const key of Object.keys(declares)) { + declares[key]._ownerScope = scope; + } +} +function recordType(node, types, declares, overwriteId) { + switch (node.type) { + case "TSInterfaceDeclaration": + case "TSEnumDeclaration": + case "TSModuleDeclaration": { + const id = overwriteId || getId(node.id); + let existing = types[id]; + if (existing) { + if (node.type === "TSModuleDeclaration") { + if (existing.type === "TSModuleDeclaration") { + mergeNamespaces(existing, node); + } else { + attachNamespace(existing, node); + } + break; + } + if (existing.type === "TSModuleDeclaration") { + types[id] = node; + attachNamespace(node, existing); + break; + } + if (existing.type !== node.type) { + break; + } + if (node.type === "TSInterfaceDeclaration") { + existing.body.body.push(...node.body.body); + } else { + existing.members.push(...node.members); + } + } else { + types[id] = node; + } + break; + } + case "ClassDeclaration": + if (overwriteId || node.id) types[overwriteId || getId(node.id)] = node; + break; + case "TSTypeAliasDeclaration": + types[node.id.name] = node.typeParameters ? node : node.typeAnnotation; + break; + case "TSDeclareFunction": + if (node.id) declares[node.id.name] = node; + break; + case "VariableDeclaration": { + if (node.declare) { + for (const decl of node.declarations) { + if (decl.id.type === "Identifier" && decl.id.typeAnnotation) { + declares[decl.id.name] = decl.id.typeAnnotation.typeAnnotation; + } + } + } + break; + } + } +} +function mergeNamespaces(to, from) { + const toBody = to.body; + const fromBody = from.body; + if (toBody.type === "TSModuleDeclaration") { + if (fromBody.type === "TSModuleDeclaration") { + mergeNamespaces(toBody, fromBody); + } else { + fromBody.body.push({ + type: "ExportNamedDeclaration", + declaration: toBody, + exportKind: "type", + specifiers: [] + }); + } + } else if (fromBody.type === "TSModuleDeclaration") { + toBody.body.push({ + type: "ExportNamedDeclaration", + declaration: fromBody, + exportKind: "type", + specifiers: [] + }); + } else { + toBody.body.push(...fromBody.body); + } +} +function attachNamespace(to, ns) { + if (!to._ns) { + to._ns = ns; + } else { + mergeNamespaces(to._ns, ns); + } +} +function recordImports(body) { + const imports = /* @__PURE__ */ Object.create(null); + for (const s of body) { + recordImport(s, imports); + } + return imports; +} +function recordImport(node, imports) { + if (node.type !== "ImportDeclaration") { + return; + } + for (const s of node.specifiers) { + imports[s.local.name] = { + imported: getImportedName(s), + source: node.source.value + }; + } +} +function inferRuntimeType(ctx, node, scope = node._ownerScope || ctxToScope(ctx), isKeyOf = false) { + try { + switch (node.type) { + case "TSStringKeyword": + return ["String"]; + case "TSNumberKeyword": + return ["Number"]; + case "TSBooleanKeyword": + return ["Boolean"]; + case "TSObjectKeyword": + return ["Object"]; + case "TSNullKeyword": + return ["null"]; + case "TSTypeLiteral": + case "TSInterfaceDeclaration": { + const types = /* @__PURE__ */ new Set(); + const members = node.type === "TSTypeLiteral" ? node.members : node.body.body; + for (const m of members) { + if (isKeyOf) { + if (m.type === "TSPropertySignature" && m.key.type === "NumericLiteral") { + types.add("Number"); + } else if (m.type === "TSIndexSignature") { + const annotation = m.parameters[0].typeAnnotation; + if (annotation && annotation.type !== "Noop") { + const type = inferRuntimeType( + ctx, + annotation.typeAnnotation, + scope + )[0]; + if (type === UNKNOWN_TYPE) return [UNKNOWN_TYPE]; + types.add(type); + } + } else { + types.add("String"); + } + } else if (m.type === "TSCallSignatureDeclaration" || m.type === "TSConstructSignatureDeclaration") { + types.add("Function"); + } else { + types.add("Object"); + } + } + return types.size ? Array.from(types) : [isKeyOf ? UNKNOWN_TYPE : "Object"]; + } + case "TSPropertySignature": + if (node.typeAnnotation) { + return inferRuntimeType( + ctx, + node.typeAnnotation.typeAnnotation, + scope + ); + } + break; + case "TSMethodSignature": + case "TSFunctionType": + return ["Function"]; + case "TSArrayType": + case "TSTupleType": + return ["Array"]; + case "TSLiteralType": + switch (node.literal.type) { + case "StringLiteral": + return ["String"]; + case "BooleanLiteral": + return ["Boolean"]; + case "NumericLiteral": + case "BigIntLiteral": + return ["Number"]; + default: + return [UNKNOWN_TYPE]; + } + case "TSTypeReference": { + const resolved = resolveTypeReference(ctx, node, scope); + if (resolved) { + if (resolved.type === "TSTypeAliasDeclaration" && resolved.typeAnnotation.type === "TSFunctionType") { + return ["Function"]; + } + return inferRuntimeType(ctx, resolved, resolved._ownerScope, isKeyOf); + } + if (node.typeName.type === "Identifier") { + if (isKeyOf) { + switch (node.typeName.name) { + case "String": + case "Array": + case "ArrayLike": + case "Parameters": + case "ConstructorParameters": + case "ReadonlyArray": + return ["String", "Number"]; + // TS built-in utility types + case "Record": + case "Partial": + case "Required": + case "Readonly": + if (node.typeParameters && node.typeParameters.params[0]) { + return inferRuntimeType( + ctx, + node.typeParameters.params[0], + scope, + true + ); + } + break; + case "Pick": + case "Extract": + if (node.typeParameters && node.typeParameters.params[1]) { + return inferRuntimeType( + ctx, + node.typeParameters.params[1], + scope + ); + } + break; + case "Function": + case "Object": + case "Set": + case "Map": + case "WeakSet": + case "WeakMap": + case "Date": + case "Promise": + case "Error": + case "Uppercase": + case "Lowercase": + case "Capitalize": + case "Uncapitalize": + case "ReadonlyMap": + case "ReadonlySet": + return ["String"]; + } + } else { + switch (node.typeName.name) { + case "Array": + case "Function": + case "Object": + case "Set": + case "Map": + case "WeakSet": + case "WeakMap": + case "Date": + case "Promise": + case "Error": + return [node.typeName.name]; + // TS built-in utility types + // https://www.typescriptlang.org/docs/handbook/utility-types.html + case "Partial": + case "Required": + case "Readonly": + case "Record": + case "Pick": + case "Omit": + case "InstanceType": + return ["Object"]; + case "Uppercase": + case "Lowercase": + case "Capitalize": + case "Uncapitalize": + return ["String"]; + case "Parameters": + case "ConstructorParameters": + case "ReadonlyArray": + return ["Array"]; + case "ReadonlyMap": + return ["Map"]; + case "ReadonlySet": + return ["Set"]; + case "NonNullable": + if (node.typeParameters && node.typeParameters.params[0]) { + return inferRuntimeType( + ctx, + node.typeParameters.params[0], + scope + ).filter((t) => t !== "null"); + } + break; + case "Extract": + if (node.typeParameters && node.typeParameters.params[1]) { + return inferRuntimeType( + ctx, + node.typeParameters.params[1], + scope + ); + } + break; + case "Exclude": + case "OmitThisParameter": + if (node.typeParameters && node.typeParameters.params[0]) { + return inferRuntimeType( + ctx, + node.typeParameters.params[0], + scope + ); + } + break; + } + } + } + break; + } + case "TSParenthesizedType": + return inferRuntimeType(ctx, node.typeAnnotation, scope); + case "TSUnionType": + return flattenTypes(ctx, node.types, scope, isKeyOf); + case "TSIntersectionType": { + return flattenTypes(ctx, node.types, scope, isKeyOf).filter( + (t) => t !== UNKNOWN_TYPE + ); + } + case "TSEnumDeclaration": + return inferEnumType(node); + case "TSSymbolKeyword": + return ["Symbol"]; + case "TSIndexedAccessType": { + const types = resolveIndexType(ctx, node, scope); + return flattenTypes(ctx, types, scope, isKeyOf); + } + case "ClassDeclaration": + return ["Object"]; + case "TSImportType": { + const sourceScope = importSourceToScope( + ctx, + node.argument, + scope, + node.argument.value + ); + const resolved = resolveTypeReference(ctx, node, sourceScope); + if (resolved) { + return inferRuntimeType(ctx, resolved, resolved._ownerScope); + } + break; + } + case "TSTypeQuery": { + const id = node.exprName; + if (id.type === "Identifier") { + const matched = scope.declares[id.name]; + if (matched) { + return inferRuntimeType(ctx, matched, matched._ownerScope, isKeyOf); + } + } + break; + } + // e.g. readonly + case "TSTypeOperator": { + return inferRuntimeType( + ctx, + node.typeAnnotation, + scope, + node.operator === "keyof" + ); + } + case "TSAnyKeyword": { + if (isKeyOf) { + return ["String", "Number", "Symbol"]; + } + break; + } + } + } catch (e) { + } + return [UNKNOWN_TYPE]; +} +function flattenTypes(ctx, types, scope, isKeyOf = false) { + if (types.length === 1) { + return inferRuntimeType(ctx, types[0], scope, isKeyOf); + } + return [ + ...new Set( + [].concat( + ...types.map((t) => inferRuntimeType(ctx, t, scope, isKeyOf)) + ) + ) + ]; +} +function inferEnumType(node) { + const types = /* @__PURE__ */ new Set(); + for (const m of node.members) { + if (m.initializer) { + switch (m.initializer.type) { + case "StringLiteral": + types.add("String"); + break; + case "NumericLiteral": + types.add("Number"); + break; + } + } + } + return types.size ? [...types] : ["Number"]; +} +function resolveExtractPropTypes({ props }, scope) { + const res = { props: {} }; + for (const key in props) { + const raw = props[key]; + res.props[key] = reverseInferType( + raw.key, + raw.typeAnnotation.typeAnnotation, + scope + ); + } + return res; +} +function reverseInferType(key, node, scope, optional = true, checkObjectSyntax = true) { + if (checkObjectSyntax && node.type === "TSTypeLiteral") { + const typeType = findStaticPropertyType(node, "type"); + if (typeType) { + const requiredType = findStaticPropertyType(node, "required"); + const optional2 = requiredType && requiredType.type === "TSLiteralType" && requiredType.literal.type === "BooleanLiteral" ? !requiredType.literal.value : true; + return reverseInferType(key, typeType, scope, optional2, false); + } + } else if (node.type === "TSTypeReference" && node.typeName.type === "Identifier") { + if (node.typeName.name.endsWith("Constructor")) { + return createProperty( + key, + ctorToType(node.typeName.name), + scope, + optional + ); + } else if (node.typeName.name === "PropType" && node.typeParameters) { + return createProperty(key, node.typeParameters.params[0], scope, optional); + } + } + if ((node.type === "TSTypeReference" || node.type === "TSImportType") && node.typeParameters) { + for (const t of node.typeParameters.params) { + const inferred = reverseInferType(key, t, scope, optional); + if (inferred) return inferred; + } + } + return createProperty(key, { type: `TSNullKeyword` }, scope, optional); +} +function ctorToType(ctorType) { + const ctor = ctorType.slice(0, -11); + switch (ctor) { + case "String": + case "Number": + case "Boolean": + return { type: `TS${ctor}Keyword` }; + case "Array": + case "Function": + case "Object": + case "Set": + case "Map": + case "WeakSet": + case "WeakMap": + case "Date": + case "Promise": + return { + type: "TSTypeReference", + typeName: { type: "Identifier", name: ctor } + }; + } + return { type: `TSNullKeyword` }; +} +function findStaticPropertyType(node, key) { + const prop = node.members.find( + (m) => m.type === "TSPropertySignature" && !m.computed && getId(m.key) === key && m.typeAnnotation + ); + return prop && prop.typeAnnotation.typeAnnotation; +} +function resolveReturnType(ctx, arg, scope) { + var _a; + let resolved = arg; + if (arg.type === "TSTypeReference" || arg.type === "TSTypeQuery" || arg.type === "TSImportType") { + resolved = resolveTypeReference(ctx, arg, scope); + } + if (!resolved) return; + if (resolved.type === "TSFunctionType") { + return (_a = resolved.typeAnnotation) == null ? void 0 : _a.typeAnnotation; + } + if (resolved.type === "TSDeclareFunction") { + return resolved.returnType; + } +} +function resolveUnionType(ctx, node, scope) { + if (node.type === "TSTypeReference") { + const resolved = resolveTypeReference(ctx, node, scope); + if (resolved) node = resolved; + } + let types; + if (node.type === "TSUnionType") { + types = node.types.flatMap((node2) => resolveUnionType(ctx, node2, scope)); + } else { + types = [node]; + } + return types; +} + +const DEFINE_MODEL = "defineModel"; +function processDefineModel(ctx, node, declId) { + if (!isCallOf(node, DEFINE_MODEL)) { + return false; + } + ctx.hasDefineModelCall = true; + const type = node.typeParameters && node.typeParameters.params[0] || void 0; + let modelName; + let options; + const arg0 = node.arguments[0] && unwrapTSNode(node.arguments[0]); + const hasName = arg0 && arg0.type === "StringLiteral"; + if (hasName) { + modelName = arg0.value; + options = node.arguments[1]; + } else { + modelName = "modelValue"; + options = arg0; + } + if (ctx.modelDecls[modelName]) { + ctx.error(`duplicate model name ${JSON.stringify(modelName)}`, node); + } + let optionsString = options && ctx.getString(options); + let optionsRemoved = !options; + const runtimeOptionNodes = []; + if (options && options.type === "ObjectExpression" && !options.properties.some((p) => p.type === "SpreadElement" || p.computed)) { + let removed = 0; + for (let i = options.properties.length - 1; i >= 0; i--) { + const p = options.properties[i]; + const next = options.properties[i + 1]; + const start = p.start; + const end = next ? next.start : options.end - 1; + if ((p.type === "ObjectProperty" || p.type === "ObjectMethod") && (p.key.type === "Identifier" && (p.key.name === "get" || p.key.name === "set") || p.key.type === "StringLiteral" && (p.key.value === "get" || p.key.value === "set"))) { + optionsString = optionsString.slice(0, start - options.start) + optionsString.slice(end - options.start); + } else { + removed++; + ctx.s.remove(ctx.startOffset + start, ctx.startOffset + end); + runtimeOptionNodes.push(p); + } + } + if (removed === options.properties.length) { + optionsRemoved = true; + ctx.s.remove( + ctx.startOffset + (hasName ? arg0.end : options.start), + ctx.startOffset + options.end + ); + } + } + ctx.modelDecls[modelName] = { + type, + options: optionsString, + runtimeOptionNodes, + identifier: declId && declId.type === "Identifier" ? declId.name : void 0 + }; + ctx.bindingMetadata[modelName] = "props"; + ctx.s.overwrite( + ctx.startOffset + node.callee.start, + ctx.startOffset + node.callee.end, + ctx.helper("useModel") + ); + ctx.s.appendLeft( + ctx.startOffset + (node.arguments.length ? node.arguments[0].start : node.end - 1), + `__props, ` + (hasName ? `` : `${JSON.stringify(modelName)}${optionsRemoved ? `` : `, `}`) + ); + return true; +} +function genModelProps(ctx) { + if (!ctx.hasDefineModelCall) return; + const isProd = !!ctx.options.isProd; + let modelPropsDecl = ""; + for (const [name, { type, options: runtimeOptions }] of Object.entries( + ctx.modelDecls + )) { + let skipCheck = false; + let codegenOptions = ``; + let runtimeTypes = type && inferRuntimeType(ctx, type); + if (runtimeTypes) { + const hasBoolean = runtimeTypes.includes("Boolean"); + const hasFunction = runtimeTypes.includes("Function"); + const hasUnknownType = runtimeTypes.includes(UNKNOWN_TYPE); + if (hasUnknownType) { + if (hasBoolean || hasFunction) { + runtimeTypes = runtimeTypes.filter((t) => t !== UNKNOWN_TYPE); + skipCheck = true; + } else { + runtimeTypes = ["null"]; + } + } + if (!isProd) { + codegenOptions = `type: ${toRuntimeTypeString(runtimeTypes)}` + (skipCheck ? ", skipCheck: true" : ""); + } else if (hasBoolean || runtimeOptions && hasFunction) { + codegenOptions = `type: ${toRuntimeTypeString(runtimeTypes)}`; + } else ; + } + let decl; + if (codegenOptions && runtimeOptions) { + decl = ctx.isTS ? `{ ${codegenOptions}, ...${runtimeOptions} }` : `Object.assign({ ${codegenOptions} }, ${runtimeOptions})`; + } else if (codegenOptions) { + decl = `{ ${codegenOptions} }`; + } else if (runtimeOptions) { + decl = runtimeOptions; + } else { + decl = `{}`; + } + modelPropsDecl += ` + ${JSON.stringify(name)}: ${decl},`; + const modifierPropName = JSON.stringify( + name === "modelValue" ? `modelModifiers` : `${name}Modifiers` + ); + modelPropsDecl += ` + ${modifierPropName}: {},`; + } + return `{${modelPropsDecl} + }`; +} + +const DEFINE_PROPS = "defineProps"; +const WITH_DEFAULTS = "withDefaults"; +function processDefineProps(ctx, node, declId, isWithDefaults = false) { + if (!isCallOf(node, DEFINE_PROPS)) { + return processWithDefaults(ctx, node, declId); + } + if (ctx.hasDefinePropsCall) { + ctx.error(`duplicate ${DEFINE_PROPS}() call`, node); + } + ctx.hasDefinePropsCall = true; + ctx.propsRuntimeDecl = node.arguments[0]; + if (ctx.propsRuntimeDecl) { + for (const key of getObjectOrArrayExpressionKeys(ctx.propsRuntimeDecl)) { + if (!(key in ctx.bindingMetadata)) { + ctx.bindingMetadata[key] = "props"; + } + } + } + if (node.typeParameters) { + if (ctx.propsRuntimeDecl) { + ctx.error( + `${DEFINE_PROPS}() cannot accept both type and non-type arguments at the same time. Use one or the other.`, + node + ); + } + ctx.propsTypeDecl = node.typeParameters.params[0]; + } + if (!isWithDefaults && declId && declId.type === "ObjectPattern") { + processPropsDestructure(ctx, declId); + } + ctx.propsCall = node; + ctx.propsDecl = declId; + return true; +} +function processWithDefaults(ctx, node, declId) { + if (!isCallOf(node, WITH_DEFAULTS)) { + return false; + } + if (!processDefineProps( + ctx, + node.arguments[0], + declId, + true + )) { + ctx.error( + `${WITH_DEFAULTS}' first argument must be a ${DEFINE_PROPS} call.`, + node.arguments[0] || node + ); + } + if (ctx.propsRuntimeDecl) { + ctx.error( + `${WITH_DEFAULTS} can only be used with type-based ${DEFINE_PROPS} declaration.`, + node + ); + } + if (declId && declId.type === "ObjectPattern") { + ctx.warn( + `${WITH_DEFAULTS}() is unnecessary when using destructure with ${DEFINE_PROPS}(). +Reactive destructure will be disabled when using withDefaults(). +Prefer using destructure default values, e.g. const { foo = 1 } = defineProps(...). `, + node.callee + ); + } + ctx.propsRuntimeDefaults = node.arguments[1]; + if (!ctx.propsRuntimeDefaults) { + ctx.error(`The 2nd argument of ${WITH_DEFAULTS} is required.`, node); + } + ctx.propsCall = node; + return true; +} +function genRuntimeProps(ctx) { + let propsDecls; + if (ctx.propsRuntimeDecl) { + propsDecls = ctx.getString(ctx.propsRuntimeDecl).trim(); + if (ctx.propsDestructureDecl) { + const defaults = []; + for (const key in ctx.propsDestructuredBindings) { + const d = genDestructuredDefaultValue(ctx, key); + const finalKey = getEscapedPropName(key); + if (d) + defaults.push( + `${finalKey}: ${d.valueString}${d.needSkipFactory ? `, __skip_${finalKey}: true` : ``}` + ); + } + if (defaults.length) { + propsDecls = `/*@__PURE__*/${ctx.helper( + `mergeDefaults` + )}(${propsDecls}, { + ${defaults.join(",\n ")} +})`; + } + } + } else if (ctx.propsTypeDecl) { + propsDecls = extractRuntimeProps(ctx); + } + const modelsDecls = genModelProps(ctx); + if (propsDecls && modelsDecls) { + return `/*@__PURE__*/${ctx.helper( + "mergeModels" + )}(${propsDecls}, ${modelsDecls})`; + } else { + return modelsDecls || propsDecls; + } +} +function extractRuntimeProps(ctx) { + const props = resolveRuntimePropsFromType(ctx, ctx.propsTypeDecl); + if (!props.length) { + return; + } + const propStrings = []; + const hasStaticDefaults = hasStaticWithDefaults(ctx); + for (const prop of props) { + propStrings.push(genRuntimePropFromType(ctx, prop, hasStaticDefaults)); + if ("bindingMetadata" in ctx && !(prop.key in ctx.bindingMetadata)) { + ctx.bindingMetadata[prop.key] = "props"; + } + } + let propsDecls = `{ + ${propStrings.join(",\n ")} + }`; + if (ctx.propsRuntimeDefaults && !hasStaticDefaults) { + propsDecls = `/*@__PURE__*/${ctx.helper( + "mergeDefaults" + )}(${propsDecls}, ${ctx.getString(ctx.propsRuntimeDefaults)})`; + } + return propsDecls; +} +function resolveRuntimePropsFromType(ctx, node) { + const props = []; + const elements = resolveTypeElements(ctx, node); + for (const key in elements.props) { + const e = elements.props[key]; + let type = inferRuntimeType(ctx, e); + let skipCheck = false; + if (type.includes(UNKNOWN_TYPE)) { + if (type.includes("Boolean") || type.includes("Function")) { + type = type.filter((t) => t !== UNKNOWN_TYPE); + skipCheck = true; + } else { + type = ["null"]; + } + } + props.push({ + key, + required: !e.optional, + type: type || [`null`], + skipCheck + }); + } + return props; +} +function genRuntimePropFromType(ctx, { key, required, type, skipCheck }, hasStaticDefaults) { + let defaultString; + const destructured = genDestructuredDefaultValue(ctx, key, type); + if (destructured) { + defaultString = `default: ${destructured.valueString}${destructured.needSkipFactory ? `, skipFactory: true` : ``}`; + } else if (hasStaticDefaults) { + const prop = ctx.propsRuntimeDefaults.properties.find( + (node) => { + if (node.type === "SpreadElement") return false; + return resolveObjectKey(node.key, node.computed) === key; + } + ); + if (prop) { + if (prop.type === "ObjectProperty") { + defaultString = `default: ${ctx.getString(prop.value)}`; + } else { + defaultString = `${prop.async ? "async " : ""}${prop.kind !== "method" ? `${prop.kind} ` : ""}default() ${ctx.getString(prop.body)}`; + } + } + } + const finalKey = getEscapedPropName(key); + if (!ctx.options.isProd) { + return `${finalKey}: { ${concatStrings([ + `type: ${toRuntimeTypeString(type)}`, + `required: ${required}`, + skipCheck && "skipCheck: true", + defaultString + ])} }`; + } else if (type.some( + (el) => el === "Boolean" || (!hasStaticDefaults || defaultString) && el === "Function" + )) { + return `${finalKey}: { ${concatStrings([ + `type: ${toRuntimeTypeString(type)}`, + defaultString + ])} }`; + } else { + if (ctx.isCE) { + if (defaultString) { + return `${finalKey}: ${`{ ${defaultString}, type: ${toRuntimeTypeString( + type + )} }`}`; + } else { + return `${finalKey}: {type: ${toRuntimeTypeString(type)}}`; + } + } + return `${finalKey}: ${defaultString ? `{ ${defaultString} }` : `{}`}`; + } +} +function hasStaticWithDefaults(ctx) { + return !!(ctx.propsRuntimeDefaults && ctx.propsRuntimeDefaults.type === "ObjectExpression" && ctx.propsRuntimeDefaults.properties.every( + (node) => node.type !== "SpreadElement" && (!node.computed || node.key.type.endsWith("Literal")) + )); +} +function genDestructuredDefaultValue(ctx, key, inferredType) { + const destructured = ctx.propsDestructuredBindings[key]; + const defaultVal = destructured && destructured.default; + if (defaultVal) { + const value = ctx.getString(defaultVal); + const unwrapped = unwrapTSNode(defaultVal); + if (inferredType && inferredType.length && !inferredType.includes("null")) { + const valueType = inferValueType(unwrapped); + if (valueType && !inferredType.includes(valueType)) { + ctx.error( + `Default value of prop "${key}" does not match declared type.`, + unwrapped + ); + } + } + const needSkipFactory = !inferredType && (isFunctionType(unwrapped) || unwrapped.type === "Identifier"); + const needFactoryWrap = !needSkipFactory && !isLiteralNode(unwrapped) && !(inferredType == null ? void 0 : inferredType.includes("Function")); + return { + valueString: needFactoryWrap ? `() => (${value})` : value, + needSkipFactory + }; + } +} +function inferValueType(node) { + switch (node.type) { + case "StringLiteral": + return "String"; + case "NumericLiteral": + return "Number"; + case "BooleanLiteral": + return "Boolean"; + case "ObjectExpression": + return "Object"; + case "ArrayExpression": + return "Array"; + case "FunctionExpression": + case "ArrowFunctionExpression": + return "Function"; + } +} + +function processPropsDestructure(ctx, declId) { + if (ctx.options.propsDestructure === "error") { + ctx.error(`Props destructure is explicitly prohibited via config.`, declId); + } else if (ctx.options.propsDestructure === false) { + return; + } + ctx.propsDestructureDecl = declId; + const registerBinding = (key, local, defaultValue) => { + ctx.propsDestructuredBindings[key] = { local, default: defaultValue }; + if (local !== key) { + ctx.bindingMetadata[local] = "props-aliased"; + (ctx.bindingMetadata.__propsAliases || (ctx.bindingMetadata.__propsAliases = {}))[local] = key; + } + }; + for (const prop of declId.properties) { + if (prop.type === "ObjectProperty") { + const propKey = resolveObjectKey(prop.key, prop.computed); + if (!propKey) { + ctx.error( + `${DEFINE_PROPS}() destructure cannot use computed key.`, + prop.key + ); + } + if (prop.value.type === "AssignmentPattern") { + const { left, right } = prop.value; + if (left.type !== "Identifier") { + ctx.error( + `${DEFINE_PROPS}() destructure does not support nested patterns.`, + left + ); + } + registerBinding(propKey, left.name, right); + } else if (prop.value.type === "Identifier") { + registerBinding(propKey, prop.value.name); + } else { + ctx.error( + `${DEFINE_PROPS}() destructure does not support nested patterns.`, + prop.value + ); + } + } else { + ctx.propsDestructureRestId = prop.argument.name; + ctx.bindingMetadata[ctx.propsDestructureRestId] = "setup-reactive-const"; + } + } +} +function transformDestructuredProps(ctx, vueImportAliases) { + if (ctx.options.propsDestructure === false) { + return; + } + const rootScope = /* @__PURE__ */ Object.create(null); + const scopeStack = [rootScope]; + let currentScope = rootScope; + const excludedIds = /* @__PURE__ */ new WeakSet(); + const parentStack = []; + const propsLocalToPublicMap = /* @__PURE__ */ Object.create(null); + for (const key in ctx.propsDestructuredBindings) { + const { local } = ctx.propsDestructuredBindings[key]; + rootScope[local] = true; + propsLocalToPublicMap[local] = key; + } + function pushScope() { + scopeStack.push(currentScope = Object.create(currentScope)); + } + function popScope() { + scopeStack.pop(); + currentScope = scopeStack[scopeStack.length - 1] || null; + } + function registerLocalBinding(id) { + excludedIds.add(id); + if (currentScope) { + currentScope[id.name] = false; + } else { + ctx.error( + "registerBinding called without active scope, something is wrong.", + id + ); + } + } + function walkScope(node, isRoot = false) { + for (const stmt of node.body) { + if (stmt.type === "VariableDeclaration") { + walkVariableDeclaration(stmt, isRoot); + } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") { + if (stmt.declare || !stmt.id) continue; + registerLocalBinding(stmt.id); + } else if ((stmt.type === "ForOfStatement" || stmt.type === "ForInStatement") && stmt.left.type === "VariableDeclaration") { + walkVariableDeclaration(stmt.left); + } else if (stmt.type === "ExportNamedDeclaration" && stmt.declaration && stmt.declaration.type === "VariableDeclaration") { + walkVariableDeclaration(stmt.declaration, isRoot); + } else if (stmt.type === "LabeledStatement" && stmt.body.type === "VariableDeclaration") { + walkVariableDeclaration(stmt.body, isRoot); + } + } + } + function walkVariableDeclaration(stmt, isRoot = false) { + if (stmt.declare) { + return; + } + for (const decl of stmt.declarations) { + const isDefineProps = isRoot && decl.init && isCallOf(unwrapTSNode(decl.init), "defineProps"); + for (const id of extractIdentifiers$1(decl.id)) { + if (isDefineProps) { + excludedIds.add(id); + } else { + registerLocalBinding(id); + } + } + } + } + function rewriteId(id, parent, parentStack2) { + if (parent.type === "AssignmentExpression" && id === parent.left || parent.type === "UpdateExpression") { + ctx.error(`Cannot assign to destructured props as they are readonly.`, id); + } + if (isStaticProperty(parent) && parent.shorthand) { + if (!parent.inPattern || isInDestructureAssignment(parent, parentStack2)) { + ctx.s.appendLeft( + id.end + ctx.startOffset, + `: ${genPropsAccessExp(propsLocalToPublicMap[id.name])}` + ); + } + } else { + ctx.s.overwrite( + id.start + ctx.startOffset, + id.end + ctx.startOffset, + genPropsAccessExp(propsLocalToPublicMap[id.name]) + ); + } + } + function checkUsage(node, method, alias = method) { + if (isCallOf(node, alias)) { + const arg = unwrapTSNode(node.arguments[0]); + if (arg.type === "Identifier" && currentScope[arg.name]) { + ctx.error( + `"${arg.name}" is a destructured prop and should not be passed directly to ${method}(). Pass a getter () => ${arg.name} instead.`, + arg + ); + } + } + } + const ast = ctx.scriptSetupAst; + walkScope(ast, true); + walk$2(ast, { + enter(node, parent) { + parent && parentStack.push(parent); + if (parent && parent.type.startsWith("TS") && !TS_NODE_TYPES.includes(parent.type)) { + return this.skip(); + } + checkUsage(node, "watch", vueImportAliases.watch); + checkUsage(node, "toRef", vueImportAliases.toRef); + if (isFunctionType(node)) { + pushScope(); + walkFunctionParams(node, registerLocalBinding); + if (node.body.type === "BlockStatement") { + walkScope(node.body); + } + return; + } + if (node.type === "CatchClause") { + pushScope(); + if (node.param && node.param.type === "Identifier") { + registerLocalBinding(node.param); + } + walkScope(node.body); + return; + } + if (node.type === "BlockStatement" && !isFunctionType(parent)) { + pushScope(); + walkScope(node); + return; + } + if (node.type === "Identifier") { + if (isReferencedIdentifier(node, parent, parentStack) && !excludedIds.has(node)) { + if (currentScope[node.name]) { + rewriteId(node, parent, parentStack); + } + } + } + }, + leave(node, parent) { + parent && parentStack.pop(); + if (node.type === "BlockStatement" && !isFunctionType(parent) || isFunctionType(node) || node.type === "CatchClause") { + popScope(); + } + } + }); +} + +const DEFINE_EMITS = "defineEmits"; +function processDefineEmits(ctx, node, declId) { + if (!isCallOf(node, DEFINE_EMITS)) { + return false; + } + if (ctx.hasDefineEmitCall) { + ctx.error(`duplicate ${DEFINE_EMITS}() call`, node); + } + ctx.hasDefineEmitCall = true; + ctx.emitsRuntimeDecl = node.arguments[0]; + if (node.typeParameters) { + if (ctx.emitsRuntimeDecl) { + ctx.error( + `${DEFINE_EMITS}() cannot accept both type and non-type arguments at the same time. Use one or the other.`, + node + ); + } + ctx.emitsTypeDecl = node.typeParameters.params[0]; + } + ctx.emitDecl = declId; + return true; +} +function genRuntimeEmits(ctx) { + let emitsDecl = ""; + if (ctx.emitsRuntimeDecl) { + emitsDecl = ctx.getString(ctx.emitsRuntimeDecl).trim(); + } else if (ctx.emitsTypeDecl) { + const typeDeclaredEmits = extractRuntimeEmits(ctx); + emitsDecl = typeDeclaredEmits.size ? `[${Array.from(typeDeclaredEmits).map((k) => JSON.stringify(k)).join(", ")}]` : ``; + } + if (ctx.hasDefineModelCall) { + let modelEmitsDecl = `[${Object.keys(ctx.modelDecls).map((n) => JSON.stringify(`update:${n}`)).join(", ")}]`; + emitsDecl = emitsDecl ? `/*@__PURE__*/${ctx.helper( + "mergeModels" + )}(${emitsDecl}, ${modelEmitsDecl})` : modelEmitsDecl; + } + return emitsDecl; +} +function extractRuntimeEmits(ctx) { + const emits = /* @__PURE__ */ new Set(); + const node = ctx.emitsTypeDecl; + if (node.type === "TSFunctionType") { + extractEventNames(ctx, node.parameters[0], emits); + return emits; + } + const { props, calls } = resolveTypeElements(ctx, node); + let hasProperty = false; + for (const key in props) { + emits.add(key); + hasProperty = true; + } + if (calls) { + if (hasProperty) { + ctx.error( + `defineEmits() type cannot mixed call signature and property syntax.`, + node + ); + } + for (const call of calls) { + extractEventNames(ctx, call.parameters[0], emits); + } + } + return emits; +} +function extractEventNames(ctx, eventName, emits) { + if (eventName.type === "Identifier" && eventName.typeAnnotation && eventName.typeAnnotation.type === "TSTypeAnnotation") { + const types = resolveUnionType(ctx, eventName.typeAnnotation.typeAnnotation); + for (const type of types) { + if (type.type === "TSLiteralType") { + if (type.literal.type !== "UnaryExpression" && type.literal.type !== "TemplateLiteral") { + emits.add(String(type.literal.value)); + } + } + } + } +} + +const DEFINE_EXPOSE = "defineExpose"; +function processDefineExpose(ctx, node) { + if (isCallOf(node, DEFINE_EXPOSE)) { + if (ctx.hasDefineExposeCall) { + ctx.error(`duplicate ${DEFINE_EXPOSE}() call`, node); + } + ctx.hasDefineExposeCall = true; + return true; + } + return false; +} + +const DEFINE_SLOTS = "defineSlots"; +function processDefineSlots(ctx, node, declId) { + if (!isCallOf(node, DEFINE_SLOTS)) { + return false; + } + if (ctx.hasDefineSlotsCall) { + ctx.error(`duplicate ${DEFINE_SLOTS}() call`, node); + } + ctx.hasDefineSlotsCall = true; + if (node.arguments.length > 0) { + ctx.error(`${DEFINE_SLOTS}() cannot accept arguments`, node); + } + if (declId) { + ctx.s.overwrite( + ctx.startOffset + node.start, + ctx.startOffset + node.end, + `${ctx.helper("useSlots")}()` + ); + } + return true; +} + +const DEFINE_OPTIONS = "defineOptions"; +function processDefineOptions(ctx, node) { + if (!isCallOf(node, DEFINE_OPTIONS)) { + return false; + } + if (ctx.hasDefineOptionsCall) { + ctx.error(`duplicate ${DEFINE_OPTIONS}() call`, node); + } + if (node.typeParameters) { + ctx.error(`${DEFINE_OPTIONS}() cannot accept type arguments`, node); + } + if (!node.arguments[0]) return true; + ctx.hasDefineOptionsCall = true; + ctx.optionsRuntimeDecl = unwrapTSNode(node.arguments[0]); + let propsOption = void 0; + let emitsOption = void 0; + let exposeOption = void 0; + let slotsOption = void 0; + if (ctx.optionsRuntimeDecl.type === "ObjectExpression") { + for (const prop of ctx.optionsRuntimeDecl.properties) { + if ((prop.type === "ObjectProperty" || prop.type === "ObjectMethod") && prop.key.type === "Identifier") { + switch (prop.key.name) { + case "props": + propsOption = prop; + break; + case "emits": + emitsOption = prop; + break; + case "expose": + exposeOption = prop; + break; + case "slots": + slotsOption = prop; + break; + } + } + } + } + if (propsOption) { + ctx.error( + `${DEFINE_OPTIONS}() cannot be used to declare props. Use ${DEFINE_PROPS}() instead.`, + propsOption + ); + } + if (emitsOption) { + ctx.error( + `${DEFINE_OPTIONS}() cannot be used to declare emits. Use ${DEFINE_EMITS}() instead.`, + emitsOption + ); + } + if (exposeOption) { + ctx.error( + `${DEFINE_OPTIONS}() cannot be used to declare expose. Use ${DEFINE_EXPOSE}() instead.`, + exposeOption + ); + } + if (slotsOption) { + ctx.error( + `${DEFINE_OPTIONS}() cannot be used to declare slots. Use ${DEFINE_SLOTS}() instead.`, + slotsOption + ); + } + return true; +} + +function processAwait(ctx, node, needSemi, isStatement) { + const argumentStart = node.argument.extra && node.argument.extra.parenthesized ? node.argument.extra.parenStart : node.argument.start; + const startOffset = ctx.startOffset; + const argumentStr = ctx.descriptor.source.slice( + argumentStart + startOffset, + node.argument.end + startOffset + ); + const containsNestedAwait = /\bawait\b/.test(argumentStr); + ctx.s.overwrite( + node.start + startOffset, + argumentStart + startOffset, + `${needSemi ? `;` : ``}( + ([__temp,__restore] = ${ctx.helper( + `withAsyncContext` + )}(${containsNestedAwait ? `async ` : ``}() => ` + ); + ctx.s.appendLeft( + node.end + startOffset, + `)), + ${isStatement ? `` : `__temp = `}await __temp, + __restore()${isStatement ? `` : `, + __temp`} +)` + ); +} + +var __defProp$1 = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols; +var __hasOwnProp$1 = Object.prototype.hasOwnProperty; +var __propIsEnum$1 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$1 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$1.call(b, prop)) + __defNormalProp$1(a, prop, b[prop]); + if (__getOwnPropSymbols$1) + for (var prop of __getOwnPropSymbols$1(b)) { + if (__propIsEnum$1.call(b, prop)) + __defNormalProp$1(a, prop, b[prop]); + } + return a; +}; +var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +const MACROS = [ + DEFINE_PROPS, + DEFINE_EMITS, + DEFINE_EXPOSE, + DEFINE_OPTIONS, + DEFINE_SLOTS, + DEFINE_MODEL, + WITH_DEFAULTS +]; +function compileScript(sfc, options) { + var _a, _b, _c; + if (!options.id) { + warnOnce$1( + `compileScript now requires passing the \`id\` option. +Upgrade your vite or vue-loader version for compatibility with the latest experimental proposals.` + ); + } + const ctx = new ScriptCompileContext(sfc, options); + const { script, scriptSetup, source, filename } = sfc; + const hoistStatic = options.hoistStatic !== false && !script; + const scopeId = options.id ? options.id.replace(/^data-v-/, "") : ""; + const scriptLang = script && script.lang; + const scriptSetupLang = scriptSetup && scriptSetup.lang; + if (!scriptSetup) { + if (!script) { + throw new Error(`[@vue/compiler-sfc] SFC contains no <script> tags.`); + } + return processNormalScript(ctx, scopeId); + } + if (script && scriptLang !== scriptSetupLang) { + throw new Error( + `[@vue/compiler-sfc] <script> and <script setup> must have the same language type.` + ); + } + if (scriptSetupLang && !ctx.isJS && !ctx.isTS) { + return scriptSetup; + } + const scriptBindings = /* @__PURE__ */ Object.create(null); + const setupBindings = /* @__PURE__ */ Object.create(null); + let defaultExport; + let hasAwait = false; + let hasInlinedSsrRenderFn = false; + const startOffset = ctx.startOffset; + const endOffset = ctx.endOffset; + const scriptStartOffset = script && script.loc.start.offset; + const scriptEndOffset = script && script.loc.end.offset; + function hoistNode(node) { + const start = node.start + startOffset; + let end = node.end + startOffset; + if (node.trailingComments && node.trailingComments.length > 0) { + const lastCommentNode = node.trailingComments[node.trailingComments.length - 1]; + end = lastCommentNode.end + startOffset; + } + while (end <= source.length) { + if (!/\s/.test(source.charAt(end))) { + break; + } + end++; + } + ctx.s.move(start, end, 0); + } + function registerUserImport(source2, local, imported, isType, isFromSetup, needTemplateUsageCheck) { + let isUsedInTemplate = needTemplateUsageCheck; + if (needTemplateUsageCheck && ctx.isTS && sfc.template && !sfc.template.src && !sfc.template.lang) { + isUsedInTemplate = isImportUsed(local, sfc); + } + ctx.userImports[local] = { + isType, + imported, + local, + source: source2, + isFromSetup, + isUsedInTemplate + }; + } + function checkInvalidScopeReference(node, method) { + if (!node) return; + walkIdentifiers(node, (id) => { + const binding = setupBindings[id.name]; + if (binding && binding !== "literal-const") { + ctx.error( + `\`${method}()\` in <script setup> cannot reference locally declared variables because it will be hoisted outside of the setup() function. If your component options require initialization in the module scope, use a separate normal <script> to export the options instead.`, + id + ); + } + }); + } + const scriptAst = ctx.scriptAst; + const scriptSetupAst = ctx.scriptSetupAst; + if (scriptAst) { + for (const node of scriptAst.body) { + if (node.type === "ImportDeclaration") { + for (const specifier of node.specifiers) { + const imported = getImportedName(specifier); + registerUserImport( + node.source.value, + specifier.local.name, + imported, + node.importKind === "type" || specifier.type === "ImportSpecifier" && specifier.importKind === "type", + false, + !options.inlineTemplate + ); + } + } + } + } + for (const node of scriptSetupAst.body) { + if (node.type === "ImportDeclaration") { + hoistNode(node); + let removed = 0; + const removeSpecifier = (i) => { + const removeLeft = i > removed; + removed++; + const current = node.specifiers[i]; + const next = node.specifiers[i + 1]; + ctx.s.remove( + removeLeft ? node.specifiers[i - 1].end + startOffset : current.start + startOffset, + next && !removeLeft ? next.start + startOffset : current.end + startOffset + ); + }; + for (let i = 0; i < node.specifiers.length; i++) { + const specifier = node.specifiers[i]; + const local = specifier.local.name; + const imported = getImportedName(specifier); + const source2 = node.source.value; + const existing = ctx.userImports[local]; + if (source2 === "vue" && MACROS.includes(imported)) { + if (local === imported) { + warnOnce$1( + `\`${imported}\` is a compiler macro and no longer needs to be imported.` + ); + } else { + ctx.error( + `\`${imported}\` is a compiler macro and cannot be aliased to a different name.`, + specifier + ); + } + removeSpecifier(i); + } else if (existing) { + if (existing.source === source2 && existing.imported === imported) { + removeSpecifier(i); + } else { + ctx.error( + `different imports aliased to same local name.`, + specifier + ); + } + } else { + registerUserImport( + source2, + local, + imported, + node.importKind === "type" || specifier.type === "ImportSpecifier" && specifier.importKind === "type", + true, + !options.inlineTemplate + ); + } + } + if (node.specifiers.length && removed === node.specifiers.length) { + ctx.s.remove(node.start + startOffset, node.end + startOffset); + } + } + } + const vueImportAliases = {}; + for (const key in ctx.userImports) { + const { source: source2, imported, local } = ctx.userImports[key]; + if (source2 === "vue") vueImportAliases[imported] = local; + } + if (script && scriptAst) { + for (const node of scriptAst.body) { + if (node.type === "ExportDefaultDeclaration") { + defaultExport = node; + let optionProperties; + if (defaultExport.declaration.type === "ObjectExpression") { + optionProperties = defaultExport.declaration.properties; + } else if (defaultExport.declaration.type === "CallExpression" && defaultExport.declaration.arguments[0] && defaultExport.declaration.arguments[0].type === "ObjectExpression") { + optionProperties = defaultExport.declaration.arguments[0].properties; + } + if (optionProperties) { + for (const p of optionProperties) { + if (p.type === "ObjectProperty" && p.key.type === "Identifier" && p.key.name === "name") { + ctx.hasDefaultExportName = true; + } + if ((p.type === "ObjectMethod" || p.type === "ObjectProperty") && p.key.type === "Identifier" && p.key.name === "render") { + ctx.hasDefaultExportRender = true; + } + } + } + const start = node.start + scriptStartOffset; + const end = node.declaration.start + scriptStartOffset; + ctx.s.overwrite(start, end, `const ${normalScriptDefaultVar} = `); + } else if (node.type === "ExportNamedDeclaration") { + const defaultSpecifier = node.specifiers.find( + (s) => s.exported.type === "Identifier" && s.exported.name === "default" + ); + if (defaultSpecifier) { + defaultExport = node; + if (node.specifiers.length > 1) { + ctx.s.remove( + defaultSpecifier.start + scriptStartOffset, + defaultSpecifier.end + scriptStartOffset + ); + } else { + ctx.s.remove( + node.start + scriptStartOffset, + node.end + scriptStartOffset + ); + } + if (node.source) { + ctx.s.prepend( + `import { ${defaultSpecifier.local.name} as ${normalScriptDefaultVar} } from '${node.source.value}' +` + ); + } else { + ctx.s.appendLeft( + scriptEndOffset, + ` +const ${normalScriptDefaultVar} = ${defaultSpecifier.local.name} +` + ); + } + } + if (node.declaration) { + walkDeclaration( + "script", + node.declaration, + scriptBindings, + vueImportAliases, + hoistStatic + ); + } + } else if ((node.type === "VariableDeclaration" || node.type === "FunctionDeclaration" || node.type === "ClassDeclaration" || node.type === "TSEnumDeclaration") && !node.declare) { + walkDeclaration( + "script", + node, + scriptBindings, + vueImportAliases, + hoistStatic + ); + } + } + if (scriptStartOffset > startOffset) { + if (!/\n$/.test(script.content.trim())) { + ctx.s.appendLeft(scriptEndOffset, ` +`); + } + ctx.s.move(scriptStartOffset, scriptEndOffset, 0); + } + } + for (const node of scriptSetupAst.body) { + if (node.type === "ExpressionStatement") { + const expr = unwrapTSNode(node.expression); + if (processDefineProps(ctx, expr) || processDefineEmits(ctx, expr) || processDefineOptions(ctx, expr) || processDefineSlots(ctx, expr)) { + ctx.s.remove(node.start + startOffset, node.end + startOffset); + } else if (processDefineExpose(ctx, expr)) { + const callee = expr.callee; + ctx.s.overwrite( + callee.start + startOffset, + callee.end + startOffset, + "__expose" + ); + } else { + processDefineModel(ctx, expr); + } + } + if (node.type === "VariableDeclaration" && !node.declare) { + const total = node.declarations.length; + let left = total; + let lastNonRemoved; + for (let i = 0; i < total; i++) { + const decl = node.declarations[i]; + const init = decl.init && unwrapTSNode(decl.init); + if (init) { + if (processDefineOptions(ctx, init)) { + ctx.error( + `${DEFINE_OPTIONS}() has no returning value, it cannot be assigned.`, + node + ); + } + const isDefineProps = processDefineProps(ctx, init, decl.id); + if (ctx.propsDestructureRestId) { + setupBindings[ctx.propsDestructureRestId] = "setup-reactive-const"; + } + const isDefineEmits = !isDefineProps && processDefineEmits(ctx, init, decl.id); + !isDefineEmits && (processDefineSlots(ctx, init, decl.id) || processDefineModel(ctx, init, decl.id)); + if (isDefineProps && !ctx.propsDestructureRestId && ctx.propsDestructureDecl) { + if (left === 1) { + ctx.s.remove(node.start + startOffset, node.end + startOffset); + } else { + let start = decl.start + startOffset; + let end = decl.end + startOffset; + if (i === total - 1) { + start = node.declarations[lastNonRemoved].end + startOffset; + } else { + end = node.declarations[i + 1].start + startOffset; + } + ctx.s.remove(start, end); + left--; + } + } else if (isDefineEmits) { + ctx.s.overwrite( + startOffset + init.start, + startOffset + init.end, + "__emit" + ); + } else { + lastNonRemoved = i; + } + } + } + } + let isAllLiteral = false; + if ((node.type === "VariableDeclaration" || node.type === "FunctionDeclaration" || node.type === "ClassDeclaration" || node.type === "TSEnumDeclaration") && !node.declare) { + isAllLiteral = walkDeclaration( + "scriptSetup", + node, + setupBindings, + vueImportAliases, + hoistStatic, + !!ctx.propsDestructureDecl + ); + } + if (hoistStatic && isAllLiteral) { + hoistNode(node); + } + if (node.type === "VariableDeclaration" && !node.declare || node.type.endsWith("Statement")) { + const scope = [scriptSetupAst.body]; + walk$2(node, { + enter(child, parent) { + if (isFunctionType(child)) { + this.skip(); + } + if (child.type === "BlockStatement") { + scope.push(child.body); + } + if (child.type === "AwaitExpression") { + hasAwait = true; + const currentScope = scope[scope.length - 1]; + const needsSemi = currentScope.some((n, i) => { + return (scope.length === 1 || i > 0) && n.type === "ExpressionStatement" && n.start === child.start; + }); + processAwait( + ctx, + child, + needsSemi, + parent.type === "ExpressionStatement" + ); + } + }, + exit(node2) { + if (node2.type === "BlockStatement") scope.pop(); + } + }); + } + if (node.type === "ExportNamedDeclaration" && node.exportKind !== "type" || node.type === "ExportAllDeclaration" || node.type === "ExportDefaultDeclaration") { + ctx.error( + `<script setup> cannot contain ES module exports. If you are using a previous version of <script setup>, please consult the updated RFC at https://github.com/vuejs/rfcs/pull/227.`, + node + ); + } + if (ctx.isTS) { + if (node.type.startsWith("TS") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "VariableDeclaration" && node.declare) { + if (node.type !== "TSEnumDeclaration") { + hoistNode(node); + } + } + } + } + if (ctx.propsDestructureDecl) { + transformDestructuredProps(ctx, vueImportAliases); + } + checkInvalidScopeReference(ctx.propsRuntimeDecl, DEFINE_PROPS); + checkInvalidScopeReference(ctx.propsRuntimeDefaults, DEFINE_PROPS); + checkInvalidScopeReference(ctx.propsDestructureDecl, DEFINE_PROPS); + checkInvalidScopeReference(ctx.emitsRuntimeDecl, DEFINE_EMITS); + checkInvalidScopeReference(ctx.optionsRuntimeDecl, DEFINE_OPTIONS); + for (const { runtimeOptionNodes } of Object.values(ctx.modelDecls)) { + for (const node of runtimeOptionNodes) { + checkInvalidScopeReference(node, DEFINE_MODEL); + } + } + if (script) { + if (startOffset < scriptStartOffset) { + ctx.s.remove(0, startOffset); + ctx.s.remove(endOffset, scriptStartOffset); + ctx.s.remove(scriptEndOffset, source.length); + } else { + ctx.s.remove(0, scriptStartOffset); + ctx.s.remove(scriptEndOffset, startOffset); + ctx.s.remove(endOffset, source.length); + } + } else { + ctx.s.remove(0, startOffset); + ctx.s.remove(endOffset, source.length); + } + if (scriptAst) { + Object.assign(ctx.bindingMetadata, analyzeScriptBindings(scriptAst.body)); + } + for (const [key, { isType, imported, source: source2 }] of Object.entries( + ctx.userImports + )) { + if (isType) continue; + ctx.bindingMetadata[key] = imported === "*" || imported === "default" && source2.endsWith(".vue") || source2 === "vue" ? "setup-const" : "setup-maybe-ref"; + } + for (const key in scriptBindings) { + ctx.bindingMetadata[key] = scriptBindings[key]; + } + for (const key in setupBindings) { + ctx.bindingMetadata[key] = setupBindings[key]; + } + if (sfc.cssVars.length && // no need to do this when targeting SSR + !((_a = options.templateOptions) == null ? void 0 : _a.ssr)) { + ctx.helperImports.add(CSS_VARS_HELPER); + ctx.helperImports.add("unref"); + ctx.s.prependLeft( + startOffset, + ` +${genCssVarsCode( + sfc.cssVars, + ctx.bindingMetadata, + scopeId, + !!options.isProd + )} +` + ); + } + let args = `__props`; + if (ctx.propsTypeDecl) { + args += `: any`; + } + if (ctx.propsDecl) { + if (ctx.propsDestructureRestId) { + ctx.s.overwrite( + startOffset + ctx.propsCall.start, + startOffset + ctx.propsCall.end, + `${ctx.helper(`createPropsRestProxy`)}(__props, ${JSON.stringify( + Object.keys(ctx.propsDestructuredBindings) + )})` + ); + ctx.s.overwrite( + startOffset + ctx.propsDestructureDecl.start, + startOffset + ctx.propsDestructureDecl.end, + ctx.propsDestructureRestId + ); + } else if (!ctx.propsDestructureDecl) { + ctx.s.overwrite( + startOffset + ctx.propsCall.start, + startOffset + ctx.propsCall.end, + "__props" + ); + } + } + if (hasAwait) { + const any = ctx.isTS ? `: any` : ``; + ctx.s.prependLeft(startOffset, ` +let __temp${any}, __restore${any} +`); + } + const destructureElements = ctx.hasDefineExposeCall || !options.inlineTemplate ? [`expose: __expose`] : []; + if (ctx.emitDecl) { + destructureElements.push(`emit: __emit`); + } + if (destructureElements.length) { + args += `, { ${destructureElements.join(", ")} }`; + } + let templateMap; + let returned; + if (!options.inlineTemplate || !sfc.template && ctx.hasDefaultExportRender) { + const allBindings = __spreadValues$1(__spreadValues$1({}, scriptBindings), setupBindings); + for (const key in ctx.userImports) { + if (!ctx.userImports[key].isType && ctx.userImports[key].isUsedInTemplate) { + allBindings[key] = true; + } + } + returned = `{ `; + for (const key in allBindings) { + if (allBindings[key] === true && ctx.userImports[key].source !== "vue" && !ctx.userImports[key].source.endsWith(".vue")) { + returned += `get ${key}() { return ${key} }, `; + } else if (ctx.bindingMetadata[key] === "setup-let") { + const setArg = key === "v" ? `_v` : `v`; + returned += `get ${key}() { return ${key} }, set ${key}(${setArg}) { ${key} = ${setArg} }, `; + } else { + returned += `${key}, `; + } + } + returned = returned.replace(/, $/, "") + ` }`; + } else { + if (sfc.template && !sfc.template.src) { + if (options.templateOptions && options.templateOptions.ssr) { + hasInlinedSsrRenderFn = true; + } + const { code, ast, preamble, tips, errors, map: map2 } = compileTemplate(__spreadProps(__spreadValues$1({ + filename, + ast: sfc.template.ast, + source: sfc.template.content, + inMap: sfc.template.map + }, options.templateOptions), { + id: scopeId, + scoped: sfc.styles.some((s) => s.scoped), + isProd: options.isProd, + ssrCssVars: sfc.cssVars, + compilerOptions: __spreadProps(__spreadValues$1({}, options.templateOptions && options.templateOptions.compilerOptions), { + inline: true, + isTS: ctx.isTS, + bindingMetadata: ctx.bindingMetadata + }) + })); + templateMap = map2; + if (tips.length) { + tips.forEach(warnOnce$1); + } + const err = errors[0]; + if (typeof err === "string") { + throw new Error(err); + } else if (err) { + if (err.loc) { + err.message += ` + +` + sfc.filename + "\n" + generateCodeFrame( + source, + err.loc.start.offset, + err.loc.end.offset + ) + ` +`; + } + throw err; + } + if (preamble) { + ctx.s.prepend(preamble); + } + if (ast && ast.helpers.has(UNREF)) { + ctx.helperImports.delete("unref"); + } + returned = code; + } else { + returned = `() => {}`; + } + } + if (!options.inlineTemplate && true) { + ctx.s.appendRight( + endOffset, + ` +const __returned__ = ${returned} +Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true }) +return __returned__ +} + +` + ); + } else { + ctx.s.appendRight(endOffset, ` +return ${returned} +} + +`); + } + const genDefaultAs = options.genDefaultAs ? `const ${options.genDefaultAs} =` : `export default`; + let runtimeOptions = ``; + if (!ctx.hasDefaultExportName && filename && filename !== DEFAULT_FILENAME) { + const match = filename.match(/([^/\\]+)\.\w+$/); + if (match) { + runtimeOptions += ` + __name: '${match[1]}',`; + } + } + if (hasInlinedSsrRenderFn) { + runtimeOptions += ` + __ssrInlineRender: true,`; + } + const propsDecl = genRuntimeProps(ctx); + if (propsDecl) runtimeOptions += ` + props: ${propsDecl},`; + const emitsDecl = genRuntimeEmits(ctx); + if (emitsDecl) runtimeOptions += ` + emits: ${emitsDecl},`; + let definedOptions = ""; + if (ctx.optionsRuntimeDecl) { + definedOptions = scriptSetup.content.slice(ctx.optionsRuntimeDecl.start, ctx.optionsRuntimeDecl.end).trim(); + } + const exposeCall = ctx.hasDefineExposeCall || options.inlineTemplate ? `` : ` __expose(); +`; + if (ctx.isTS) { + const def = (defaultExport ? ` + ...${normalScriptDefaultVar},` : ``) + (definedOptions ? ` + ...${definedOptions},` : ""); + ctx.s.prependLeft( + startOffset, + ` +${genDefaultAs} /*@__PURE__*/${ctx.helper( + `defineComponent` + )}({${def}${runtimeOptions} + ${hasAwait ? `async ` : ``}setup(${args}) { +${exposeCall}` + ); + ctx.s.appendRight(endOffset, `})`); + } else { + if (defaultExport || definedOptions) { + ctx.s.prependLeft( + startOffset, + ` +${genDefaultAs} /*@__PURE__*/Object.assign(${defaultExport ? `${normalScriptDefaultVar}, ` : ""}${definedOptions ? `${definedOptions}, ` : ""}{${runtimeOptions} + ${hasAwait ? `async ` : ``}setup(${args}) { +${exposeCall}` + ); + ctx.s.appendRight(endOffset, `})`); + } else { + ctx.s.prependLeft( + startOffset, + ` +${genDefaultAs} {${runtimeOptions} + ${hasAwait ? `async ` : ``}setup(${args}) { +${exposeCall}` + ); + ctx.s.appendRight(endOffset, `}`); + } + } + if (ctx.helperImports.size > 0) { + const runtimeModuleName = (_c = (_b = options.templateOptions) == null ? void 0 : _b.compilerOptions) == null ? void 0 : _c.runtimeModuleName; + const importSrc = runtimeModuleName ? JSON.stringify(runtimeModuleName) : `'vue'`; + ctx.s.prepend( + `import { ${[...ctx.helperImports].map((h) => `${h} as _${h}`).join(", ")} } from ${importSrc} +` + ); + } + const content = ctx.s.toString(); + let map = options.sourceMap !== false ? ctx.s.generateMap({ + source: filename, + hires: true, + includeContent: true + }) : void 0; + if (templateMap && map) { + const offset = content.indexOf(returned); + const templateLineOffset = content.slice(0, offset).split(/\r?\n/).length - 1; + map = mergeSourceMaps(map, templateMap, templateLineOffset); + } + return __spreadProps(__spreadValues$1({}, scriptSetup), { + bindings: ctx.bindingMetadata, + imports: ctx.userImports, + content, + map, + scriptAst: scriptAst == null ? void 0 : scriptAst.body, + scriptSetupAst: scriptSetupAst == null ? void 0 : scriptSetupAst.body, + deps: ctx.deps ? [...ctx.deps] : void 0 + }); +} +function registerBinding(bindings, node, type) { + bindings[node.name] = type; +} +function walkDeclaration(from, node, bindings, userImportAliases, hoistStatic, isPropsDestructureEnabled = false) { + let isAllLiteral = false; + if (node.type === "VariableDeclaration") { + const isConst = node.kind === "const"; + isAllLiteral = isConst && node.declarations.every( + (decl) => decl.id.type === "Identifier" && isStaticNode(decl.init) + ); + for (const { id, init: _init } of node.declarations) { + const init = _init && unwrapTSNode(_init); + const isConstMacroCall = isConst && isCallOf( + init, + (c) => c === DEFINE_PROPS || c === DEFINE_EMITS || c === WITH_DEFAULTS || c === DEFINE_SLOTS + ); + if (id.type === "Identifier") { + let bindingType; + const userReactiveBinding = userImportAliases["reactive"]; + if ((hoistStatic || from === "script") && (isAllLiteral || isConst && isStaticNode(init))) { + bindingType = "literal-const"; + } else if (isCallOf(init, userReactiveBinding)) { + bindingType = isConst ? "setup-reactive-const" : "setup-let"; + } else if ( + // if a declaration is a const literal, we can mark it so that + // the generated render fn code doesn't need to unref() it + isConstMacroCall || isConst && canNeverBeRef(init, userReactiveBinding) + ) { + bindingType = isCallOf(init, DEFINE_PROPS) ? "setup-reactive-const" : "setup-const"; + } else if (isConst) { + if (isCallOf( + init, + (m) => m === userImportAliases["ref"] || m === userImportAliases["computed"] || m === userImportAliases["shallowRef"] || m === userImportAliases["customRef"] || m === userImportAliases["toRef"] || m === userImportAliases["useTemplateRef"] || m === DEFINE_MODEL + )) { + bindingType = "setup-ref"; + } else { + bindingType = "setup-maybe-ref"; + } + } else { + bindingType = "setup-let"; + } + registerBinding(bindings, id, bindingType); + } else { + if (isCallOf(init, DEFINE_PROPS) && isPropsDestructureEnabled) { + continue; + } + if (id.type === "ObjectPattern") { + walkObjectPattern(id, bindings, isConst, isConstMacroCall); + } else if (id.type === "ArrayPattern") { + walkArrayPattern(id, bindings, isConst, isConstMacroCall); + } + } + } + } else if (node.type === "TSEnumDeclaration") { + isAllLiteral = node.members.every( + (member) => !member.initializer || isStaticNode(member.initializer) + ); + bindings[node.id.name] = isAllLiteral ? "literal-const" : "setup-const"; + } else if (node.type === "FunctionDeclaration" || node.type === "ClassDeclaration") { + bindings[node.id.name] = "setup-const"; + } + return isAllLiteral; +} +function walkObjectPattern(node, bindings, isConst, isDefineCall = false) { + for (const p of node.properties) { + if (p.type === "ObjectProperty") { + if (p.key.type === "Identifier" && p.key === p.value) { + const type = isDefineCall ? "setup-const" : isConst ? "setup-maybe-ref" : "setup-let"; + registerBinding(bindings, p.key, type); + } else { + walkPattern(p.value, bindings, isConst, isDefineCall); + } + } else { + const type = isConst ? "setup-const" : "setup-let"; + registerBinding(bindings, p.argument, type); + } + } +} +function walkArrayPattern(node, bindings, isConst, isDefineCall = false) { + for (const e of node.elements) { + e && walkPattern(e, bindings, isConst, isDefineCall); + } +} +function walkPattern(node, bindings, isConst, isDefineCall = false) { + if (node.type === "Identifier") { + const type = isDefineCall ? "setup-const" : isConst ? "setup-maybe-ref" : "setup-let"; + registerBinding(bindings, node, type); + } else if (node.type === "RestElement") { + const type = isConst ? "setup-const" : "setup-let"; + registerBinding(bindings, node.argument, type); + } else if (node.type === "ObjectPattern") { + walkObjectPattern(node, bindings, isConst); + } else if (node.type === "ArrayPattern") { + walkArrayPattern(node, bindings, isConst); + } else if (node.type === "AssignmentPattern") { + if (node.left.type === "Identifier") { + const type = isDefineCall ? "setup-const" : isConst ? "setup-maybe-ref" : "setup-let"; + registerBinding(bindings, node.left, type); + } else { + walkPattern(node.left, bindings, isConst); + } + } +} +function canNeverBeRef(node, userReactiveImport) { + if (isCallOf(node, userReactiveImport)) { + return true; + } + switch (node.type) { + case "UnaryExpression": + case "BinaryExpression": + case "ArrayExpression": + case "ObjectExpression": + case "FunctionExpression": + case "ArrowFunctionExpression": + case "UpdateExpression": + case "ClassExpression": + case "TaggedTemplateExpression": + return true; + case "SequenceExpression": + return canNeverBeRef( + node.expressions[node.expressions.length - 1], + userReactiveImport + ); + default: + if (isLiteralNode(node)) { + return true; + } + return false; + } +} +function isStaticNode(node) { + node = unwrapTSNode(node); + switch (node.type) { + case "UnaryExpression": + return isStaticNode(node.argument); + case "LogicalExpression": + // 1 > 2 + case "BinaryExpression": + return isStaticNode(node.left) && isStaticNode(node.right); + case "ConditionalExpression": { + return isStaticNode(node.test) && isStaticNode(node.consequent) && isStaticNode(node.alternate); + } + case "SequenceExpression": + // (1, 2) + case "TemplateLiteral": + return node.expressions.every((expr) => isStaticNode(expr)); + case "ParenthesizedExpression": + return isStaticNode(node.expression); + case "StringLiteral": + case "NumericLiteral": + case "BooleanLiteral": + case "NullLiteral": + case "BigIntLiteral": + return true; + } + return false; +} +function mergeSourceMaps(scriptMap, templateMap, templateLineOffset) { + const generator = new sourceMapExports.SourceMapGenerator(); + const addMapping = (map, lineOffset = 0) => { + const consumer = new sourceMapExports.SourceMapConsumer(map); + consumer.sources.forEach((sourceFile) => { + generator._sources.add(sourceFile); + const sourceContent = consumer.sourceContentFor(sourceFile); + if (sourceContent != null) { + generator.setSourceContent(sourceFile, sourceContent); + } + }); + consumer.eachMapping((m) => { + if (m.originalLine == null) return; + generator.addMapping({ + generated: { + line: m.generatedLine + lineOffset, + column: m.generatedColumn + }, + original: { + line: m.originalLine, + column: m.originalColumn + }, + source: m.source, + name: m.name + }); + }); + }; + addMapping(scriptMap); + addMapping(templateMap, templateLineOffset); + generator._sourceRoot = scriptMap.sourceRoot; + generator._file = scriptMap.file; + return generator.toJSON(); +} + +var __defProp = Object.defineProperty; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +const version = "3.5.18"; +const parseCache = parseCache$1; +const errorMessages = __spreadValues(__spreadValues({}, errorMessages$1), DOMErrorMessages); +const walk = walk$2; +const shouldTransformRef = () => false; + +var parse$4 = libExports.parse; +export { MagicString, parse$4 as babelParse, compileScript, compileStyle, compileStyleAsync, compileTemplate, errorMessages, extractIdentifiers$1 as extractIdentifiers, extractRuntimeEmits, extractRuntimeProps, generateCodeFrame, inferRuntimeType, invalidateTypeCache, isInDestructureAssignment, isStaticProperty, parse$2 as parse, parseCache, registerTS, resolveTypeElements, rewriteDefault, rewriteDefaultAST, shouldTransformRef, version, walk, walkIdentifiers }; diff --git a/node_modules/@vue/compiler-sfc/package.json b/node_modules/@vue/compiler-sfc/package.json new file mode 100644 index 0000000..040394d --- /dev/null +++ b/node_modules/@vue/compiler-sfc/package.json @@ -0,0 +1,67 @@ +{ + "name": "@vue/compiler-sfc", + "version": "3.5.18", + "description": "@vue/compiler-sfc", + "main": "dist/compiler-sfc.cjs.js", + "module": "dist/compiler-sfc.esm-browser.js", + "types": "dist/compiler-sfc.d.ts", + "files": [ + "dist" + ], + "exports": { + ".": { + "types": "./dist/compiler-sfc.d.ts", + "node": "./dist/compiler-sfc.cjs.js", + "module": "./dist/compiler-sfc.esm-browser.js", + "import": "./dist/compiler-sfc.esm-browser.js", + "require": "./dist/compiler-sfc.cjs.js" + }, + "./*": "./*" + }, + "buildOptions": { + "name": "VueCompilerSFC", + "formats": [ + "cjs", + "esm-browser" + ], + "prod": false, + "enableNonBrowserBranches": true + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/compiler-sfc" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-sfc#readme", + "dependencies": { + "@babel/parser": "^7.28.0", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.17", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1", + "@vue/compiler-dom": "3.5.18", + "@vue/compiler-ssr": "3.5.18", + "@vue/shared": "3.5.18", + "@vue/compiler-core": "3.5.18" + }, + "devDependencies": { + "@babel/types": "^7.28.1", + "@vue/consolidate": "^1.0.0", + "hash-sum": "^2.0.0", + "lru-cache": "10.1.0", + "merge-source-map": "^1.1.0", + "minimatch": "~10.0.3", + "postcss-modules": "^6.0.1", + "postcss-selector-parser": "^7.1.0", + "pug": "^3.0.3", + "sass": "^1.89.2" + } +} \ No newline at end of file diff --git a/node_modules/@vue/compiler-ssr/LICENSE b/node_modules/@vue/compiler-ssr/LICENSE new file mode 100644 index 0000000..15f1f7e --- /dev/null +++ b/node_modules/@vue/compiler-ssr/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018-present, Yuxi (Evan) You + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@vue/compiler-ssr/README.md b/node_modules/@vue/compiler-ssr/README.md new file mode 100644 index 0000000..9337906 --- /dev/null +++ b/node_modules/@vue/compiler-ssr/README.md @@ -0,0 +1 @@ +# @vue/compiler-ssr diff --git a/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js b/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js new file mode 100644 index 0000000..496a5b3 --- /dev/null +++ b/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js @@ -0,0 +1,1402 @@ +/** +* @vue/compiler-ssr v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var compilerDom = require('@vue/compiler-dom'); +var shared = require('@vue/shared'); + +const SSR_INTERPOLATE = Symbol(`ssrInterpolate`); +const SSR_RENDER_VNODE = Symbol(`ssrRenderVNode`); +const SSR_RENDER_COMPONENT = Symbol(`ssrRenderComponent`); +const SSR_RENDER_SLOT = Symbol(`ssrRenderSlot`); +const SSR_RENDER_SLOT_INNER = Symbol(`ssrRenderSlotInner`); +const SSR_RENDER_CLASS = Symbol(`ssrRenderClass`); +const SSR_RENDER_STYLE = Symbol(`ssrRenderStyle`); +const SSR_RENDER_ATTRS = Symbol(`ssrRenderAttrs`); +const SSR_RENDER_ATTR = Symbol(`ssrRenderAttr`); +const SSR_RENDER_DYNAMIC_ATTR = Symbol(`ssrRenderDynamicAttr`); +const SSR_RENDER_LIST = Symbol(`ssrRenderList`); +const SSR_INCLUDE_BOOLEAN_ATTR = Symbol( + `ssrIncludeBooleanAttr` +); +const SSR_LOOSE_EQUAL = Symbol(`ssrLooseEqual`); +const SSR_LOOSE_CONTAIN = Symbol(`ssrLooseContain`); +const SSR_RENDER_DYNAMIC_MODEL = Symbol( + `ssrRenderDynamicModel` +); +const SSR_GET_DYNAMIC_MODEL_PROPS = Symbol( + `ssrGetDynamicModelProps` +); +const SSR_RENDER_TELEPORT = Symbol(`ssrRenderTeleport`); +const SSR_RENDER_SUSPENSE = Symbol(`ssrRenderSuspense`); +const SSR_GET_DIRECTIVE_PROPS = Symbol(`ssrGetDirectiveProps`); +const ssrHelpers = { + [SSR_INTERPOLATE]: `ssrInterpolate`, + [SSR_RENDER_VNODE]: `ssrRenderVNode`, + [SSR_RENDER_COMPONENT]: `ssrRenderComponent`, + [SSR_RENDER_SLOT]: `ssrRenderSlot`, + [SSR_RENDER_SLOT_INNER]: `ssrRenderSlotInner`, + [SSR_RENDER_CLASS]: `ssrRenderClass`, + [SSR_RENDER_STYLE]: `ssrRenderStyle`, + [SSR_RENDER_ATTRS]: `ssrRenderAttrs`, + [SSR_RENDER_ATTR]: `ssrRenderAttr`, + [SSR_RENDER_DYNAMIC_ATTR]: `ssrRenderDynamicAttr`, + [SSR_RENDER_LIST]: `ssrRenderList`, + [SSR_INCLUDE_BOOLEAN_ATTR]: `ssrIncludeBooleanAttr`, + [SSR_LOOSE_EQUAL]: `ssrLooseEqual`, + [SSR_LOOSE_CONTAIN]: `ssrLooseContain`, + [SSR_RENDER_DYNAMIC_MODEL]: `ssrRenderDynamicModel`, + [SSR_GET_DYNAMIC_MODEL_PROPS]: `ssrGetDynamicModelProps`, + [SSR_RENDER_TELEPORT]: `ssrRenderTeleport`, + [SSR_RENDER_SUSPENSE]: `ssrRenderSuspense`, + [SSR_GET_DIRECTIVE_PROPS]: `ssrGetDirectiveProps` +}; +compilerDom.registerRuntimeHelpers(ssrHelpers); + +const ssrTransformIf = compilerDom.createStructuralDirectiveTransform( + /^(if|else|else-if)$/, + compilerDom.processIf +); +function ssrProcessIf(node, context, disableNestedFragments = false, disableComment = false) { + const [rootBranch] = node.branches; + const ifStatement = compilerDom.createIfStatement( + rootBranch.condition, + processIfBranch(rootBranch, context, disableNestedFragments) + ); + context.pushStatement(ifStatement); + let currentIf = ifStatement; + for (let i = 1; i < node.branches.length; i++) { + const branch = node.branches[i]; + const branchBlockStatement = processIfBranch( + branch, + context, + disableNestedFragments + ); + if (branch.condition) { + currentIf = currentIf.alternate = compilerDom.createIfStatement( + branch.condition, + branchBlockStatement + ); + } else { + currentIf.alternate = branchBlockStatement; + } + } + if (!currentIf.alternate && !disableComment) { + currentIf.alternate = compilerDom.createBlockStatement([ + compilerDom.createCallExpression(`_push`, ["`<!---->`"]) + ]); + } +} +function processIfBranch(branch, context, disableNestedFragments = false) { + const { children } = branch; + const needFragmentWrapper = !disableNestedFragments && (children.length !== 1 || children[0].type !== 1) && // optimize away nested fragments when the only child is a ForNode + !(children.length === 1 && children[0].type === 11); + return processChildrenAsStatement(branch, context, needFragmentWrapper); +} + +const ssrTransformFor = compilerDom.createStructuralDirectiveTransform("for", compilerDom.processFor); +function ssrProcessFor(node, context, disableNestedFragments = false) { + const needFragmentWrapper = !disableNestedFragments && (node.children.length !== 1 || node.children[0].type !== 1); + const renderLoop = compilerDom.createFunctionExpression( + compilerDom.createForLoopParams(node.parseResult) + ); + renderLoop.body = processChildrenAsStatement( + node, + context, + needFragmentWrapper + ); + if (!disableNestedFragments) { + context.pushStringPart(`<!--[-->`); + } + context.pushStatement( + compilerDom.createCallExpression(context.helper(SSR_RENDER_LIST), [ + node.source, + renderLoop + ]) + ); + if (!disableNestedFragments) { + context.pushStringPart(`<!--]-->`); + } +} + +const ssrTransformSlotOutlet = (node, context) => { + if (compilerDom.isSlotOutlet(node)) { + const { slotName, slotProps } = compilerDom.processSlotOutlet(node, context); + const args = [ + `_ctx.$slots`, + slotName, + slotProps || `{}`, + // fallback content placeholder. will be replaced in the process phase + `null`, + `_push`, + `_parent` + ]; + if (context.scopeId && context.slotted !== false) { + args.push(`"${context.scopeId}-s"`); + } + let method = SSR_RENDER_SLOT; + let parent = context.parent; + if (parent) { + const children = parent.children; + if (parent.type === 10) { + parent = context.grandParent; + } + let componentType; + if (parent.type === 1 && parent.tagType === 1 && ((componentType = compilerDom.resolveComponentType(parent, context, true)) === compilerDom.TRANSITION || componentType === compilerDom.TRANSITION_GROUP) && children.filter((c) => c.type === 1).length === 1) { + method = SSR_RENDER_SLOT_INNER; + if (!(context.scopeId && context.slotted !== false)) { + args.push("null"); + } + args.push("true"); + } + } + node.ssrCodegenNode = compilerDom.createCallExpression(context.helper(method), args); + } +}; +function ssrProcessSlotOutlet(node, context) { + const renderCall = node.ssrCodegenNode; + if (node.children.length) { + const fallbackRenderFn = compilerDom.createFunctionExpression([]); + fallbackRenderFn.body = processChildrenAsStatement(node, context); + renderCall.arguments[3] = fallbackRenderFn; + } + if (context.withSlotScopeId) { + const slotScopeId = renderCall.arguments[6]; + renderCall.arguments[6] = slotScopeId ? `${slotScopeId} + _scopeId` : `_scopeId`; + } + context.pushStatement(node.ssrCodegenNode); +} + +function createSSRCompilerError(code, loc) { + return compilerDom.createCompilerError(code, loc, SSRErrorMessages); +} +const SSRErrorMessages = { + [65]: `Unsafe attribute name for SSR.`, + [66]: `Missing the 'to' prop on teleport element.`, + [67]: `Invalid AST node during SSR transform.` +}; + +function ssrProcessTeleport(node, context) { + const targetProp = compilerDom.findProp(node, "to"); + if (!targetProp) { + context.onError( + createSSRCompilerError(66, node.loc) + ); + return; + } + let target; + if (targetProp.type === 6) { + target = targetProp.value && compilerDom.createSimpleExpression(targetProp.value.content, true); + } else { + target = targetProp.exp; + } + if (!target) { + context.onError( + createSSRCompilerError( + 66, + targetProp.loc + ) + ); + return; + } + const disabledProp = compilerDom.findProp( + node, + "disabled", + false, + true + /* allow empty */ + ); + const disabled = disabledProp ? disabledProp.type === 6 ? `true` : disabledProp.exp || `false` : `false`; + const contentRenderFn = compilerDom.createFunctionExpression( + [`_push`], + void 0, + // Body is added later + true, + // newline + false, + // isSlot + node.loc + ); + contentRenderFn.body = processChildrenAsStatement(node, context); + context.pushStatement( + compilerDom.createCallExpression(context.helper(SSR_RENDER_TELEPORT), [ + `_push`, + contentRenderFn, + target, + disabled, + `_parent` + ]) + ); +} + +const wipMap$3 = /* @__PURE__ */ new WeakMap(); +function ssrTransformSuspense(node, context) { + return () => { + if (node.children.length) { + const wipEntry = { + slotsExp: null, + // to be immediately set + wipSlots: [] + }; + wipMap$3.set(node, wipEntry); + wipEntry.slotsExp = compilerDom.buildSlots( + node, + context, + (_props, _vForExp, children, loc) => { + const fn = compilerDom.createFunctionExpression( + [], + void 0, + // no return, assign body later + true, + // newline + false, + // suspense slots are not treated as normal slots + loc + ); + wipEntry.wipSlots.push({ + fn, + children + }); + return fn; + } + ).slots; + } + }; +} +function ssrProcessSuspense(node, context) { + const wipEntry = wipMap$3.get(node); + if (!wipEntry) { + return; + } + const { slotsExp, wipSlots } = wipEntry; + for (let i = 0; i < wipSlots.length; i++) { + const slot = wipSlots[i]; + slot.fn.body = processChildrenAsStatement(slot, context); + } + context.pushStatement( + compilerDom.createCallExpression(context.helper(SSR_RENDER_SUSPENSE), [ + `_push`, + slotsExp + ]) + ); +} + +const rawChildrenMap = /* @__PURE__ */ new WeakMap(); +const ssrTransformElement = (node, context) => { + if (node.type !== 1 || node.tagType !== 0) { + return; + } + return function ssrPostTransformElement() { + const openTag = [`<${node.tag}`]; + const needTagForRuntime = node.tag === "textarea" || node.tag.indexOf("-") > 0; + const hasDynamicVBind = compilerDom.hasDynamicKeyVBind(node); + const hasCustomDir = node.props.some( + (p) => p.type === 7 && !shared.isBuiltInDirective(p.name) + ); + const needMergeProps = hasDynamicVBind || hasCustomDir; + if (needMergeProps) { + const { props, directives } = compilerDom.buildProps( + node, + context, + node.props, + false, + false, + true + ); + if (props || directives.length) { + const mergedProps = buildSSRProps(props, directives, context); + const propsExp = compilerDom.createCallExpression( + context.helper(SSR_RENDER_ATTRS), + [mergedProps] + ); + if (node.tag === "textarea") { + const existingText = node.children[0]; + if (!existingText || existingText.type !== 5) { + const tempId = `_temp${context.temps++}`; + propsExp.arguments = [ + compilerDom.createAssignmentExpression( + compilerDom.createSimpleExpression(tempId, false), + mergedProps + ) + ]; + rawChildrenMap.set( + node, + compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [ + compilerDom.createConditionalExpression( + compilerDom.createSimpleExpression(`"value" in ${tempId}`, false), + compilerDom.createSimpleExpression(`${tempId}.value`, false), + compilerDom.createSimpleExpression( + existingText ? existingText.content : ``, + true + ), + false + ) + ]) + ); + } + } else if (node.tag === "input") { + const vModel = findVModel(node); + if (vModel) { + const tempId = `_temp${context.temps++}`; + const tempExp = compilerDom.createSimpleExpression(tempId, false); + propsExp.arguments = [ + compilerDom.createSequenceExpression([ + compilerDom.createAssignmentExpression(tempExp, mergedProps), + compilerDom.createCallExpression(context.helper(compilerDom.MERGE_PROPS), [ + tempExp, + compilerDom.createCallExpression( + context.helper(SSR_GET_DYNAMIC_MODEL_PROPS), + [ + tempExp, + // existing props + vModel.exp + // model + ] + ) + ]) + ]) + ]; + } + } else if (directives.length && !node.children.length) { + const vText = compilerDom.findDir(node, "text"); + if (!vText) { + const tempId = `_temp${context.temps++}`; + propsExp.arguments = [ + compilerDom.createAssignmentExpression( + compilerDom.createSimpleExpression(tempId, false), + mergedProps + ) + ]; + rawChildrenMap.set( + node, + compilerDom.createConditionalExpression( + compilerDom.createSimpleExpression(`"textContent" in ${tempId}`, false), + compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [ + compilerDom.createSimpleExpression(`${tempId}.textContent`, false) + ]), + compilerDom.createSimpleExpression(`${tempId}.innerHTML ?? ''`, false), + false + ) + ); + } + } + if (needTagForRuntime) { + propsExp.arguments.push(`"${node.tag}"`); + } + openTag.push(propsExp); + } + } + let dynamicClassBinding = void 0; + let staticClassBinding = void 0; + let dynamicStyleBinding = void 0; + for (let i = 0; i < node.props.length; i++) { + const prop = node.props[i]; + if (node.tag === "input" && isTrueFalseValue(prop)) { + continue; + } + if (prop.type === 7) { + if (prop.name === "html" && prop.exp) { + rawChildrenMap.set( + node, + compilerDom.createCompoundExpression([`(`, prop.exp, `) ?? ''`]) + ); + } else if (prop.name === "text" && prop.exp) { + node.children = [compilerDom.createInterpolation(prop.exp, prop.loc)]; + } else if (prop.name === "slot") { + context.onError( + compilerDom.createCompilerError(40, prop.loc) + ); + } else if (isTextareaWithValue(node, prop) && prop.exp) { + if (!needMergeProps) { + node.children = [compilerDom.createInterpolation(prop.exp, prop.loc)]; + } + } else if (!needMergeProps && prop.name !== "on") { + const directiveTransform = context.directiveTransforms[prop.name]; + if (directiveTransform) { + const { props, ssrTagParts } = directiveTransform( + prop, + node, + context + ); + if (ssrTagParts) { + openTag.push(...ssrTagParts); + } + for (let j = 0; j < props.length; j++) { + const { key, value } = props[j]; + if (compilerDom.isStaticExp(key)) { + let attrName = key.content; + if (attrName === "key" || attrName === "ref") { + continue; + } + if (attrName === "class") { + openTag.push( + ` class="`, + dynamicClassBinding = compilerDom.createCallExpression( + context.helper(SSR_RENDER_CLASS), + [value] + ), + `"` + ); + } else if (attrName === "style") { + if (dynamicStyleBinding) { + mergeCall(dynamicStyleBinding, value); + } else { + openTag.push( + ` style="`, + dynamicStyleBinding = compilerDom.createCallExpression( + context.helper(SSR_RENDER_STYLE), + [value] + ), + `"` + ); + } + } else { + attrName = node.tag.indexOf("-") > 0 ? attrName : shared.propsToAttrMap[attrName] || attrName.toLowerCase(); + if (shared.isBooleanAttr(attrName)) { + openTag.push( + compilerDom.createConditionalExpression( + compilerDom.createCallExpression( + context.helper(SSR_INCLUDE_BOOLEAN_ATTR), + [value] + ), + compilerDom.createSimpleExpression(" " + attrName, true), + compilerDom.createSimpleExpression("", true), + false + ) + ); + } else if (shared.isSSRSafeAttrName(attrName)) { + openTag.push( + compilerDom.createCallExpression(context.helper(SSR_RENDER_ATTR), [ + key, + value + ]) + ); + } else { + context.onError( + createSSRCompilerError( + 65, + key.loc + ) + ); + } + } + } else { + const args = [key, value]; + if (needTagForRuntime) { + args.push(`"${node.tag}"`); + } + openTag.push( + compilerDom.createCallExpression( + context.helper(SSR_RENDER_DYNAMIC_ATTR), + args + ) + ); + } + } + } + } + } else { + const name = prop.name; + if (node.tag === "textarea" && name === "value" && prop.value) { + rawChildrenMap.set(node, shared.escapeHtml(prop.value.content)); + } else if (!needMergeProps) { + if (name === "key" || name === "ref") { + continue; + } + if (name === "class" && prop.value) { + staticClassBinding = JSON.stringify(prop.value.content); + } + openTag.push( + ` ${prop.name}` + (prop.value ? `="${shared.escapeHtml(prop.value.content)}"` : ``) + ); + } + } + } + if (dynamicClassBinding && staticClassBinding) { + mergeCall(dynamicClassBinding, staticClassBinding); + removeStaticBinding(openTag, "class"); + } + if (context.scopeId) { + openTag.push(` ${context.scopeId}`); + } + node.ssrCodegenNode = compilerDom.createTemplateLiteral(openTag); + }; +}; +function buildSSRProps(props, directives, context) { + let mergePropsArgs = []; + if (props) { + if (props.type === 14) { + mergePropsArgs = props.arguments; + } else { + mergePropsArgs.push(props); + } + } + if (directives.length) { + for (const dir of directives) { + mergePropsArgs.push( + compilerDom.createCallExpression(context.helper(SSR_GET_DIRECTIVE_PROPS), [ + `_ctx`, + ...compilerDom.buildDirectiveArgs(dir, context).elements + ]) + ); + } + } + return mergePropsArgs.length > 1 ? compilerDom.createCallExpression(context.helper(compilerDom.MERGE_PROPS), mergePropsArgs) : mergePropsArgs[0]; +} +function isTrueFalseValue(prop) { + if (prop.type === 7) { + return prop.name === "bind" && prop.arg && compilerDom.isStaticExp(prop.arg) && (prop.arg.content === "true-value" || prop.arg.content === "false-value"); + } else { + return prop.name === "true-value" || prop.name === "false-value"; + } +} +function isTextareaWithValue(node, prop) { + return !!(node.tag === "textarea" && prop.name === "bind" && compilerDom.isStaticArgOf(prop.arg, "value")); +} +function mergeCall(call, arg) { + const existing = call.arguments[0]; + if (existing.type === 17) { + existing.elements.push(arg); + } else { + call.arguments[0] = compilerDom.createArrayExpression([existing, arg]); + } +} +function removeStaticBinding(tag, binding) { + const regExp = new RegExp(`^ ${binding}=".+"$`); + const i = tag.findIndex((e) => typeof e === "string" && regExp.test(e)); + if (i > -1) { + tag.splice(i, 1); + } +} +function findVModel(node) { + return node.props.find( + (p) => p.type === 7 && p.name === "model" && p.exp + ); +} +function ssrProcessElement(node, context) { + const isVoidTag = context.options.isVoidTag || shared.NO; + const elementsToAdd = node.ssrCodegenNode.elements; + for (let j = 0; j < elementsToAdd.length; j++) { + context.pushStringPart(elementsToAdd[j]); + } + if (context.withSlotScopeId) { + context.pushStringPart(compilerDom.createSimpleExpression(`_scopeId`, false)); + } + context.pushStringPart(`>`); + const rawChildren = rawChildrenMap.get(node); + if (rawChildren) { + context.pushStringPart(rawChildren); + } else if (node.children.length) { + processChildren(node, context); + } + if (!isVoidTag(node.tag)) { + context.pushStringPart(`</${node.tag}>`); + } +} + +const wipMap$2 = /* @__PURE__ */ new WeakMap(); +function ssrTransformTransitionGroup(node, context) { + return () => { + const tag = compilerDom.findProp(node, "tag"); + if (tag) { + const otherProps = node.props.filter((p) => p !== tag); + const { props, directives } = compilerDom.buildProps( + node, + context, + otherProps, + true, + false, + true + ); + let propsExp = null; + if (props || directives.length) { + propsExp = compilerDom.createCallExpression(context.helper(SSR_RENDER_ATTRS), [ + buildSSRProps(props, directives, context) + ]); + } + wipMap$2.set(node, { + tag, + propsExp, + scopeId: context.scopeId || null + }); + } + }; +} +function ssrProcessTransitionGroup(node, context) { + const entry = wipMap$2.get(node); + if (entry) { + const { tag, propsExp, scopeId } = entry; + if (tag.type === 7) { + context.pushStringPart(`<`); + context.pushStringPart(tag.exp); + if (propsExp) { + context.pushStringPart(propsExp); + } + if (scopeId) { + context.pushStringPart(` ${scopeId}`); + } + context.pushStringPart(`>`); + processChildren( + node, + context, + false, + /** + * TransitionGroup has the special runtime behavior of flattening and + * concatenating all children into a single fragment (in order for them to + * be patched using the same key map) so we need to account for that here + * by disabling nested fragment wrappers from being generated. + */ + true, + /** + * TransitionGroup filters out comment children at runtime and thus + * doesn't expect comments to be present during hydration. We need to + * account for that by disabling the empty comment that is otherwise + * rendered for a falsy v-if that has no v-else specified. (#6715) + */ + true + ); + context.pushStringPart(`</`); + context.pushStringPart(tag.exp); + context.pushStringPart(`>`); + } else { + context.pushStringPart(`<${tag.value.content}`); + if (propsExp) { + context.pushStringPart(propsExp); + } + if (scopeId) { + context.pushStringPart(` ${scopeId}`); + } + context.pushStringPart(`>`); + processChildren(node, context, false, true, true); + context.pushStringPart(`</${tag.value.content}>`); + } + } else { + processChildren(node, context, true, true, true); + } +} + +const wipMap$1 = /* @__PURE__ */ new WeakMap(); +function ssrTransformTransition(node, context) { + return () => { + const appear = compilerDom.findProp(node, "appear", false, true); + wipMap$1.set(node, !!appear); + }; +} +function ssrProcessTransition(node, context) { + node.children = node.children.filter((c) => c.type !== 3); + const appear = wipMap$1.get(node); + if (appear) { + context.pushStringPart(`<template>`); + processChildren(node, context, false, true); + context.pushStringPart(`</template>`); + } else { + processChildren(node, context, false, true); + } +} + +const wipMap = /* @__PURE__ */ new WeakMap(); +const WIP_SLOT = Symbol(); +const componentTypeMap = /* @__PURE__ */ new WeakMap(); +const ssrTransformComponent = (node, context) => { + if (node.type !== 1 || node.tagType !== 1) { + return; + } + const component = compilerDom.resolveComponentType( + node, + context, + true + /* ssr */ + ); + const isDynamicComponent = shared.isObject(component) && component.callee === compilerDom.RESOLVE_DYNAMIC_COMPONENT; + componentTypeMap.set(node, component); + if (shared.isSymbol(component)) { + if (component === compilerDom.SUSPENSE) { + return ssrTransformSuspense(node, context); + } else if (component === compilerDom.TRANSITION_GROUP) { + return ssrTransformTransitionGroup(node, context); + } else if (component === compilerDom.TRANSITION) { + return ssrTransformTransition(node); + } + return; + } + const vnodeBranches = []; + const clonedNode = clone(node); + return function ssrPostTransformComponent() { + if (clonedNode.children.length) { + compilerDom.buildSlots(clonedNode, context, (props, vFor, children) => { + vnodeBranches.push( + createVNodeSlotBranch(props, vFor, children, context) + ); + return compilerDom.createFunctionExpression(void 0); + }); + } + let propsExp = `null`; + if (node.props.length) { + const { props, directives } = compilerDom.buildProps( + node, + context, + void 0, + true, + isDynamicComponent + ); + if (props || directives.length) { + propsExp = buildSSRProps(props, directives, context); + } + } + const wipEntries = []; + wipMap.set(node, wipEntries); + const buildSSRSlotFn = (props, _vForExp, children, loc) => { + const param0 = props && compilerDom.stringifyExpression(props) || `_`; + const fn = compilerDom.createFunctionExpression( + [param0, `_push`, `_parent`, `_scopeId`], + void 0, + // no return, assign body later + true, + // newline + true, + // isSlot + loc + ); + wipEntries.push({ + type: WIP_SLOT, + fn, + children, + // also collect the corresponding vnode branch built earlier + vnodeBranch: vnodeBranches[wipEntries.length] + }); + return fn; + }; + const slots = node.children.length ? compilerDom.buildSlots(node, context, buildSSRSlotFn).slots : `null`; + if (typeof component !== "string") { + node.ssrCodegenNode = compilerDom.createCallExpression( + context.helper(SSR_RENDER_VNODE), + [ + `_push`, + compilerDom.createCallExpression(context.helper(compilerDom.CREATE_VNODE), [ + component, + propsExp, + slots + ]), + `_parent` + ] + ); + } else { + node.ssrCodegenNode = compilerDom.createCallExpression( + context.helper(SSR_RENDER_COMPONENT), + [component, propsExp, slots, `_parent`] + ); + } + }; +}; +function ssrProcessComponent(node, context, parent) { + const component = componentTypeMap.get(node); + if (!node.ssrCodegenNode) { + if (component === compilerDom.TELEPORT) { + return ssrProcessTeleport(node, context); + } else if (component === compilerDom.SUSPENSE) { + return ssrProcessSuspense(node, context); + } else if (component === compilerDom.TRANSITION_GROUP) { + return ssrProcessTransitionGroup(node, context); + } else { + if (parent.type === WIP_SLOT) { + context.pushStringPart(``); + } + if (component === compilerDom.TRANSITION) { + return ssrProcessTransition(node, context); + } + processChildren(node, context); + } + } else { + const wipEntries = wipMap.get(node) || []; + for (let i = 0; i < wipEntries.length; i++) { + const { fn, vnodeBranch } = wipEntries[i]; + fn.body = compilerDom.createIfStatement( + compilerDom.createSimpleExpression(`_push`, false), + processChildrenAsStatement( + wipEntries[i], + context, + false, + true + ), + vnodeBranch + ); + } + if (context.withSlotScopeId) { + node.ssrCodegenNode.arguments.push(`_scopeId`); + } + if (typeof component === "string") { + context.pushStatement( + compilerDom.createCallExpression(`_push`, [node.ssrCodegenNode]) + ); + } else { + context.pushStatement(node.ssrCodegenNode); + } + } +} +const rawOptionsMap = /* @__PURE__ */ new WeakMap(); +const [baseNodeTransforms, baseDirectiveTransforms] = compilerDom.getBaseTransformPreset(true); +const vnodeNodeTransforms = [...baseNodeTransforms, ...compilerDom.DOMNodeTransforms]; +const vnodeDirectiveTransforms = { + ...baseDirectiveTransforms, + ...compilerDom.DOMDirectiveTransforms +}; +function createVNodeSlotBranch(slotProps, vFor, children, parentContext) { + const rawOptions = rawOptionsMap.get(parentContext.root); + const subOptions = { + ...rawOptions, + // overwrite with vnode-based transforms + nodeTransforms: [ + ...vnodeNodeTransforms, + ...rawOptions.nodeTransforms || [] + ], + directiveTransforms: { + ...vnodeDirectiveTransforms, + ...rawOptions.directiveTransforms || {} + } + }; + const wrapperProps = []; + if (slotProps) { + wrapperProps.push({ + type: 7, + name: "slot", + exp: slotProps, + arg: void 0, + modifiers: [], + loc: compilerDom.locStub + }); + } + if (vFor) { + wrapperProps.push(shared.extend({}, vFor)); + } + const wrapperNode = { + type: 1, + ns: 0, + tag: "template", + tagType: 3, + props: wrapperProps, + children, + loc: compilerDom.locStub, + codegenNode: void 0 + }; + subTransform(wrapperNode, subOptions, parentContext); + return compilerDom.createReturnStatement(children); +} +function subTransform(node, options, parentContext) { + const childRoot = compilerDom.createRoot([node]); + const childContext = compilerDom.createTransformContext(childRoot, options); + childContext.ssr = false; + childContext.scopes = { ...parentContext.scopes }; + childContext.identifiers = { ...parentContext.identifiers }; + childContext.imports = parentContext.imports; + compilerDom.traverseNode(childRoot, childContext); + ["helpers", "components", "directives"].forEach((key) => { + childContext[key].forEach((value, helperKey) => { + if (key === "helpers") { + const parentCount = parentContext.helpers.get(helperKey); + if (parentCount === void 0) { + parentContext.helpers.set(helperKey, value); + } else { + parentContext.helpers.set(helperKey, value + parentCount); + } + } else { + parentContext[key].add(value); + } + }); + }); +} +function clone(v) { + if (shared.isArray(v)) { + return v.map(clone); + } else if (shared.isPlainObject(v)) { + const res = {}; + for (const key in v) { + res[key] = clone(v[key]); + } + return res; + } else { + return v; + } +} + +function ssrCodegenTransform(ast, options) { + const context = createSSRTransformContext(ast, options); + if (options.ssrCssVars) { + const cssContext = compilerDom.createTransformContext(compilerDom.createRoot([]), options); + const varsExp = compilerDom.processExpression( + compilerDom.createSimpleExpression(options.ssrCssVars, false), + cssContext + ); + context.body.push( + compilerDom.createCompoundExpression([`const _cssVars = { style: `, varsExp, `}`]) + ); + Array.from(cssContext.helpers.keys()).forEach((helper) => { + ast.helpers.add(helper); + }); + } + const isFragment = ast.children.length > 1 && ast.children.some((c) => !compilerDom.isText(c)); + processChildren(ast, context, isFragment); + ast.codegenNode = compilerDom.createBlockStatement(context.body); + ast.ssrHelpers = Array.from( + /* @__PURE__ */ new Set([ + ...Array.from(ast.helpers).filter((h) => h in ssrHelpers), + ...context.helpers + ]) + ); + ast.helpers = new Set(Array.from(ast.helpers).filter((h) => !(h in ssrHelpers))); +} +function createSSRTransformContext(root, options, helpers = /* @__PURE__ */ new Set(), withSlotScopeId = false) { + const body = []; + let currentString = null; + return { + root, + options, + body, + helpers, + withSlotScopeId, + onError: options.onError || ((e) => { + throw e; + }), + helper(name) { + helpers.add(name); + return name; + }, + pushStringPart(part) { + if (!currentString) { + const currentCall = compilerDom.createCallExpression(`_push`); + body.push(currentCall); + currentString = compilerDom.createTemplateLiteral([]); + currentCall.arguments.push(currentString); + } + const bufferedElements = currentString.elements; + const lastItem = bufferedElements[bufferedElements.length - 1]; + if (shared.isString(part) && shared.isString(lastItem)) { + bufferedElements[bufferedElements.length - 1] += part; + } else { + bufferedElements.push(part); + } + }, + pushStatement(statement) { + currentString = null; + body.push(statement); + } + }; +} +function createChildContext(parent, withSlotScopeId = parent.withSlotScopeId) { + return createSSRTransformContext( + parent.root, + parent.options, + parent.helpers, + withSlotScopeId + ); +} +function processChildren(parent, context, asFragment = false, disableNestedFragments = false, disableComment = false) { + if (asFragment) { + context.pushStringPart(`<!--[-->`); + } + const { children } = parent; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1: + switch (child.tagType) { + case 0: + ssrProcessElement(child, context); + break; + case 1: + ssrProcessComponent(child, context, parent); + break; + case 2: + ssrProcessSlotOutlet(child, context); + break; + case 3: + break; + default: + context.onError( + createSSRCompilerError( + 67, + child.loc + ) + ); + const exhaustiveCheck2 = child; + return exhaustiveCheck2; + } + break; + case 2: + context.pushStringPart(shared.escapeHtml(child.content)); + break; + case 3: + if (!disableComment) { + context.pushStringPart(`<!--${child.content}-->`); + } + break; + case 5: + context.pushStringPart( + compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [ + child.content + ]) + ); + break; + case 9: + ssrProcessIf(child, context, disableNestedFragments, disableComment); + break; + case 11: + ssrProcessFor(child, context, disableNestedFragments); + break; + case 10: + break; + case 12: + case 8: + break; + default: + context.onError( + createSSRCompilerError( + 67, + child.loc + ) + ); + const exhaustiveCheck = child; + return exhaustiveCheck; + } + } + if (asFragment) { + context.pushStringPart(`<!--]-->`); + } +} +function processChildrenAsStatement(parent, parentContext, asFragment = false, withSlotScopeId = parentContext.withSlotScopeId) { + const childContext = createChildContext(parentContext, withSlotScopeId); + processChildren(parent, childContext, asFragment); + return compilerDom.createBlockStatement(childContext.body); +} + +const ssrTransformModel = (dir, node, context) => { + const model = dir.exp; + function checkDuplicatedValue() { + const value = compilerDom.findProp(node, "value"); + if (value) { + context.onError( + compilerDom.createDOMCompilerError( + 60, + value.loc + ) + ); + } + } + const processSelectChildren = (children) => { + children.forEach((child) => { + if (child.type === 1) { + processOption(child); + } else if (child.type === 11) { + processSelectChildren(child.children); + } else if (child.type === 9) { + child.branches.forEach((b) => processSelectChildren(b.children)); + } + }); + }; + function processOption(plainNode) { + if (plainNode.tag === "option") { + if (plainNode.props.findIndex((p) => p.name === "selected") === -1) { + const value = findValueBinding(plainNode); + plainNode.ssrCodegenNode.elements.push( + compilerDom.createConditionalExpression( + compilerDom.createCallExpression(context.helper(SSR_INCLUDE_BOOLEAN_ATTR), [ + compilerDom.createConditionalExpression( + compilerDom.createCallExpression(`Array.isArray`, [model]), + compilerDom.createCallExpression(context.helper(SSR_LOOSE_CONTAIN), [ + model, + value + ]), + compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [ + model, + value + ]) + ) + ]), + compilerDom.createSimpleExpression(" selected", true), + compilerDom.createSimpleExpression("", true), + false + ) + ); + } + } else if (plainNode.tag === "optgroup") { + processSelectChildren(plainNode.children); + } + } + if (node.tagType === 0) { + const res = { props: [] }; + const defaultProps = [ + // default value binding for text type inputs + compilerDom.createObjectProperty(`value`, model) + ]; + if (node.tag === "input") { + const type = compilerDom.findProp(node, "type"); + if (type) { + const value = findValueBinding(node); + if (type.type === 7) { + res.ssrTagParts = [ + compilerDom.createCallExpression(context.helper(SSR_RENDER_DYNAMIC_MODEL), [ + type.exp, + model, + value + ]) + ]; + } else if (type.value) { + switch (type.value.content) { + case "radio": + res.props = [ + compilerDom.createObjectProperty( + `checked`, + compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [ + model, + value + ]) + ) + ]; + break; + case "checkbox": + const trueValueBinding = compilerDom.findProp(node, "true-value"); + if (trueValueBinding) { + const trueValue = trueValueBinding.type === 6 ? JSON.stringify(trueValueBinding.value.content) : trueValueBinding.exp; + res.props = [ + compilerDom.createObjectProperty( + `checked`, + compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [ + model, + trueValue + ]) + ) + ]; + } else { + res.props = [ + compilerDom.createObjectProperty( + `checked`, + compilerDom.createConditionalExpression( + compilerDom.createCallExpression(`Array.isArray`, [model]), + compilerDom.createCallExpression(context.helper(SSR_LOOSE_CONTAIN), [ + model, + value + ]), + model + ) + ) + ]; + } + break; + case "file": + context.onError( + compilerDom.createDOMCompilerError( + 59, + dir.loc + ) + ); + break; + default: + checkDuplicatedValue(); + res.props = defaultProps; + break; + } + } + } else if (compilerDom.hasDynamicKeyVBind(node)) ; else { + checkDuplicatedValue(); + res.props = defaultProps; + } + } else if (node.tag === "textarea") { + checkDuplicatedValue(); + node.children = [compilerDom.createInterpolation(model, model.loc)]; + } else if (node.tag === "select") { + processSelectChildren(node.children); + } else { + context.onError( + compilerDom.createDOMCompilerError( + 57, + dir.loc + ) + ); + } + return res; + } else { + return compilerDom.transformModel(dir, node, context); + } +}; +function findValueBinding(node) { + const valueBinding = compilerDom.findProp(node, "value"); + return valueBinding ? valueBinding.type === 7 ? valueBinding.exp : compilerDom.createSimpleExpression(valueBinding.value.content, true) : compilerDom.createSimpleExpression(`null`, false); +} + +const ssrTransformShow = (dir, node, context) => { + if (!dir.exp) { + context.onError( + compilerDom.createDOMCompilerError(61) + ); + } + return { + props: [ + compilerDom.createObjectProperty( + `style`, + compilerDom.createConditionalExpression( + dir.exp, + compilerDom.createSimpleExpression(`null`, false), + compilerDom.createObjectExpression([ + compilerDom.createObjectProperty( + `display`, + compilerDom.createSimpleExpression(`none`, true) + ) + ]), + false + ) + ) + ] + }; +}; + +const filterChild = (node) => node.children.filter((n) => n.type !== 3); +const hasSingleChild = (node) => filterChild(node).length === 1; +const ssrInjectFallthroughAttrs = (node, context) => { + if (node.type === 0) { + context.identifiers._attrs = 1; + } + if (node.type === 1 && node.tagType === 1 && (node.tag === "transition" || node.tag === "Transition" || node.tag === "KeepAlive" || node.tag === "keep-alive")) { + const rootChildren = filterChild(context.root); + if (rootChildren.length === 1 && rootChildren[0] === node) { + if (hasSingleChild(node)) { + injectFallthroughAttrs(node.children[0]); + } + return; + } + } + const parent = context.parent; + if (!parent || parent.type !== 0) { + return; + } + if (node.type === 10 && hasSingleChild(node)) { + let hasEncounteredIf = false; + for (const c of filterChild(parent)) { + if (c.type === 9 || c.type === 1 && compilerDom.findDir(c, "if")) { + if (hasEncounteredIf) return; + hasEncounteredIf = true; + } else if ( + // node before v-if + !hasEncounteredIf || // non else nodes + !(c.type === 1 && compilerDom.findDir(c, /else/, true)) + ) { + return; + } + } + injectFallthroughAttrs(node.children[0]); + } else if (hasSingleChild(parent)) { + injectFallthroughAttrs(node); + } +}; +function injectFallthroughAttrs(node) { + if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) { + node.props.push({ + type: 7, + name: "bind", + arg: void 0, + exp: compilerDom.createSimpleExpression(`_attrs`, false), + modifiers: [], + loc: compilerDom.locStub + }); + } +} + +const ssrInjectCssVars = (node, context) => { + if (!context.ssrCssVars) { + return; + } + if (node.type === 0) { + context.identifiers._cssVars = 1; + } + const parent = context.parent; + if (!parent || parent.type !== 0) { + return; + } + if (node.type === 10) { + for (const child of node.children) { + injectCssVars(child); + } + } else { + injectCssVars(node); + } +}; +function injectCssVars(node) { + if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) { + if (node.tag === "suspense" || node.tag === "Suspense") { + for (const child of node.children) { + if (child.type === 1 && child.tagType === 3) { + child.children.forEach(injectCssVars); + } else { + injectCssVars(child); + } + } + } else { + node.props.push({ + type: 7, + name: "bind", + arg: void 0, + exp: compilerDom.createSimpleExpression(`_cssVars`, false), + modifiers: [], + loc: compilerDom.locStub + }); + } + } +} + +function compile(source, options = {}) { + options = { + ...options, + ...compilerDom.parserOptions, + ssr: true, + inSSR: true, + scopeId: options.mode === "function" ? null : options.scopeId, + // always prefix since compiler-ssr doesn't have size concern + prefixIdentifiers: true, + // disable optimizations that are unnecessary for ssr + cacheHandlers: false, + hoistStatic: false + }; + const ast = typeof source === "string" ? compilerDom.baseParse(source, options) : source; + rawOptionsMap.set(ast, options); + compilerDom.transform(ast, { + ...options, + hoistStatic: false, + nodeTransforms: [ + ssrTransformIf, + ssrTransformFor, + compilerDom.trackVForSlotScopes, + compilerDom.transformExpression, + ssrTransformSlotOutlet, + ssrInjectFallthroughAttrs, + ssrInjectCssVars, + ssrTransformElement, + ssrTransformComponent, + compilerDom.trackSlotScopes, + compilerDom.transformStyle, + ...options.nodeTransforms || [] + // user transforms + ], + directiveTransforms: { + // reusing core v-bind + bind: compilerDom.transformBind, + on: compilerDom.transformOn, + // model and show have dedicated SSR handling + model: ssrTransformModel, + show: ssrTransformShow, + // the following are ignored during SSR + // on: noopDirectiveTransform, + cloak: compilerDom.noopDirectiveTransform, + once: compilerDom.noopDirectiveTransform, + memo: compilerDom.noopDirectiveTransform, + ...options.directiveTransforms || {} + // user transforms + } + }); + ssrCodegenTransform(ast, options); + return compilerDom.generate(ast, options); +} + +exports.compile = compile; diff --git a/node_modules/@vue/compiler-ssr/dist/compiler-ssr.d.ts b/node_modules/@vue/compiler-ssr/dist/compiler-ssr.d.ts new file mode 100644 index 0000000..60dfb21 --- /dev/null +++ b/node_modules/@vue/compiler-ssr/dist/compiler-ssr.d.ts @@ -0,0 +1,4 @@ +import { RootNode, CompilerOptions, CodegenResult } from '@vue/compiler-dom'; + +export declare function compile(source: string | RootNode, options?: CompilerOptions): CodegenResult; + diff --git a/node_modules/@vue/compiler-ssr/package.json b/node_modules/@vue/compiler-ssr/package.json new file mode 100644 index 0000000..9dd16f7 --- /dev/null +++ b/node_modules/@vue/compiler-ssr/package.json @@ -0,0 +1,34 @@ +{ + "name": "@vue/compiler-ssr", + "version": "3.5.18", + "description": "@vue/compiler-ssr", + "main": "dist/compiler-ssr.cjs.js", + "types": "dist/compiler-ssr.d.ts", + "files": [ + "dist" + ], + "buildOptions": { + "prod": false, + "formats": [ + "cjs" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/compiler-ssr" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-ssr#readme", + "dependencies": { + "@vue/compiler-dom": "3.5.18", + "@vue/shared": "3.5.18" + } +} \ No newline at end of file diff --git a/node_modules/@vue/devtools-api/lib/cjs/api/api.js b/node_modules/@vue/devtools-api/lib/cjs/api/api.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/cjs/api/api.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@vue/devtools-api/lib/cjs/api/app.js b/node_modules/@vue/devtools-api/lib/cjs/api/app.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/cjs/api/app.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@vue/devtools-api/lib/cjs/api/component.js b/node_modules/@vue/devtools-api/lib/cjs/api/component.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/cjs/api/component.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@vue/devtools-api/lib/cjs/api/context.js b/node_modules/@vue/devtools-api/lib/cjs/api/context.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/cjs/api/context.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@vue/devtools-api/lib/cjs/api/hooks.js b/node_modules/@vue/devtools-api/lib/cjs/api/hooks.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/cjs/api/hooks.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@vue/devtools-api/lib/cjs/api/index.js b/node_modules/@vue/devtools-api/lib/cjs/api/index.js new file mode 100644 index 0000000..22f7589 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/cjs/api/index.js @@ -0,0 +1,22 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./api.js"), exports); +__exportStar(require("./app.js"), exports); +__exportStar(require("./component.js"), exports); +__exportStar(require("./context.js"), exports); +__exportStar(require("./hooks.js"), exports); +__exportStar(require("./util.js"), exports); diff --git a/node_modules/@vue/devtools-api/lib/cjs/api/util.js b/node_modules/@vue/devtools-api/lib/cjs/api/util.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/cjs/api/util.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@vue/devtools-api/lib/cjs/const.js b/node_modules/@vue/devtools-api/lib/cjs/const.js new file mode 100644 index 0000000..84d408c --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/cjs/const.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.HOOK_PLUGIN_SETTINGS_SET = exports.HOOK_SETUP = void 0; +exports.HOOK_SETUP = 'devtools-plugin:setup'; +exports.HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set'; diff --git a/node_modules/@vue/devtools-api/lib/cjs/env.js b/node_modules/@vue/devtools-api/lib/cjs/env.js new file mode 100644 index 0000000..e6c7ebd --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/cjs/env.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isProxyAvailable = exports.getTarget = exports.getDevtoolsGlobalHook = void 0; +function getDevtoolsGlobalHook() { + return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; +} +exports.getDevtoolsGlobalHook = getDevtoolsGlobalHook; +function getTarget() { + // @ts-expect-error navigator and windows are not available in all environments + return (typeof navigator !== 'undefined' && typeof window !== 'undefined') + ? window + : typeof globalThis !== 'undefined' + ? globalThis + : {}; +} +exports.getTarget = getTarget; +exports.isProxyAvailable = typeof Proxy === 'function'; diff --git a/node_modules/@vue/devtools-api/lib/cjs/index.js b/node_modules/@vue/devtools-api/lib/cjs/index.js new file mode 100644 index 0000000..f8b5fc3 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/cjs/index.js @@ -0,0 +1,45 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupDevtoolsPlugin = void 0; +const env_js_1 = require("./env.js"); +const const_js_1 = require("./const.js"); +const proxy_js_1 = require("./proxy.js"); +__exportStar(require("./api/index.js"), exports); +__exportStar(require("./plugin.js"), exports); +__exportStar(require("./time.js"), exports); +function setupDevtoolsPlugin(pluginDescriptor, setupFn) { + const descriptor = pluginDescriptor; + const target = (0, env_js_1.getTarget)(); + const hook = (0, env_js_1.getDevtoolsGlobalHook)(); + const enableProxy = env_js_1.isProxyAvailable && descriptor.enableEarlyProxy; + if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) { + hook.emit(const_js_1.HOOK_SETUP, pluginDescriptor, setupFn); + } + else { + const proxy = enableProxy ? new proxy_js_1.ApiProxy(descriptor, hook) : null; + const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; + list.push({ + pluginDescriptor: descriptor, + setupFn, + proxy, + }); + if (proxy) { + setupFn(proxy.proxiedTarget); + } + } +} +exports.setupDevtoolsPlugin = setupDevtoolsPlugin; diff --git a/node_modules/@vue/devtools-api/lib/cjs/plugin.js b/node_modules/@vue/devtools-api/lib/cjs/plugin.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/cjs/plugin.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@vue/devtools-api/lib/cjs/proxy.js b/node_modules/@vue/devtools-api/lib/cjs/proxy.js new file mode 100644 index 0000000..731c9ac --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/cjs/proxy.js @@ -0,0 +1,111 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ApiProxy = void 0; +const const_js_1 = require("./const.js"); +const time_js_1 = require("./time.js"); +class ApiProxy { + constructor(plugin, hook) { + this.target = null; + this.targetQueue = []; + this.onQueue = []; + this.plugin = plugin; + this.hook = hook; + const defaultSettings = {}; + if (plugin.settings) { + for (const id in plugin.settings) { + const item = plugin.settings[id]; + defaultSettings[id] = item.defaultValue; + } + } + const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`; + let currentSettings = Object.assign({}, defaultSettings); + try { + const raw = localStorage.getItem(localSettingsSaveId); + const data = JSON.parse(raw); + Object.assign(currentSettings, data); + } + catch (e) { + // noop + } + this.fallbacks = { + getSettings() { + return currentSettings; + }, + setSettings(value) { + try { + localStorage.setItem(localSettingsSaveId, JSON.stringify(value)); + } + catch (e) { + // noop + } + currentSettings = value; + }, + now() { + return (0, time_js_1.now)(); + }, + }; + if (hook) { + hook.on(const_js_1.HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => { + if (pluginId === this.plugin.id) { + this.fallbacks.setSettings(value); + } + }); + } + this.proxiedOn = new Proxy({}, { + get: (_target, prop) => { + if (this.target) { + return this.target.on[prop]; + } + else { + return (...args) => { + this.onQueue.push({ + method: prop, + args, + }); + }; + } + }, + }); + this.proxiedTarget = new Proxy({}, { + get: (_target, prop) => { + if (this.target) { + return this.target[prop]; + } + else if (prop === 'on') { + return this.proxiedOn; + } + else if (Object.keys(this.fallbacks).includes(prop)) { + return (...args) => { + this.targetQueue.push({ + method: prop, + args, + resolve: () => { }, + }); + return this.fallbacks[prop](...args); + }; + } + else { + return (...args) => { + return new Promise((resolve) => { + this.targetQueue.push({ + method: prop, + args, + resolve, + }); + }); + }; + } + }, + }); + } + async setRealTarget(target) { + this.target = target; + for (const item of this.onQueue) { + this.target.on[item.method](...item.args); + } + for (const item of this.targetQueue) { + item.resolve(await this.target[item.method](...item.args)); + } + } +} +exports.ApiProxy = ApiProxy; diff --git a/node_modules/@vue/devtools-api/lib/cjs/time.js b/node_modules/@vue/devtools-api/lib/cjs/time.js new file mode 100644 index 0000000..78d7f67 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/cjs/time.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.now = exports.isPerformanceSupported = void 0; +let supported; +let perf; +function isPerformanceSupported() { + var _a; + if (supported !== undefined) { + return supported; + } + if (typeof window !== 'undefined' && window.performance) { + supported = true; + perf = window.performance; + } + else if (typeof globalThis !== 'undefined' && ((_a = globalThis.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) { + supported = true; + perf = globalThis.perf_hooks.performance; + } + else { + supported = false; + } + return supported; +} +exports.isPerformanceSupported = isPerformanceSupported; +function now() { + return isPerformanceSupported() ? perf.now() : Date.now(); +} +exports.now = now; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/api.d.ts b/node_modules/@vue/devtools-api/lib/esm/api/api.d.ts new file mode 100644 index 0000000..2e5494c --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/api/api.d.ts @@ -0,0 +1,108 @@ +import type { ComponentBounds, Hookable } from './hooks.js'; +import type { Context } from './context.js'; +import type { ComponentInstance, ComponentState, StateBase } from './component.js'; +import type { App } from './app.js'; +import type { ID } from './util.js'; +export interface DevtoolsPluginApi<TSettings> { + on: Hookable<Context>; + notifyComponentUpdate: (instance?: ComponentInstance) => void; + addTimelineLayer: (options: TimelineLayerOptions) => void; + addTimelineEvent: (options: TimelineEventOptions) => void; + addInspector: (options: CustomInspectorOptions) => void; + sendInspectorTree: (inspectorId: string) => void; + sendInspectorState: (inspectorId: string) => void; + selectInspectorNode: (inspectorId: string, nodeId: string) => void; + getComponentBounds: (instance: ComponentInstance) => Promise<ComponentBounds>; + getComponentName: (instance: ComponentInstance) => Promise<string>; + getComponentInstances: (app: App) => Promise<ComponentInstance[]>; + highlightElement: (instance: ComponentInstance) => void; + unhighlightElement: () => void; + getSettings: (pluginId?: string) => TSettings; + now: () => number; + /** + * @private + */ + setSettings: (values: TSettings) => void; +} +export interface AppRecord { + id: string; + name: string; + instanceMap: Map<string, ComponentInstance>; + rootInstance: ComponentInstance; +} +export interface TimelineLayerOptions<TData = any, TMeta = any> { + id: string; + label: string; + color: number; + skipScreenshots?: boolean; + groupsOnly?: boolean; + ignoreNoDurationGroups?: boolean; + screenshotOverlayRender?: (event: TimelineEvent<TData, TMeta> & ScreenshotOverlayEvent, ctx: ScreenshotOverlayRenderContext) => ScreenshotOverlayRenderResult | Promise<ScreenshotOverlayRenderResult>; +} +export interface ScreenshotOverlayEvent { + layerId: string; + renderMeta: any; +} +export interface ScreenshotOverlayRenderContext<TData = any, TMeta = any> { + screenshot: ScreenshotData; + events: (TimelineEvent<TData, TMeta> & ScreenshotOverlayEvent)[]; + index: number; +} +export type ScreenshotOverlayRenderResult = HTMLElement | string | false; +export interface ScreenshotData { + time: number; +} +export interface TimelineEventOptions { + layerId: string; + event: TimelineEvent; + all?: boolean; +} +export interface TimelineEvent<TData = any, TMeta = any> { + time: number; + data: TData; + logType?: 'default' | 'warning' | 'error'; + meta?: TMeta; + groupId?: ID; + title?: string; + subtitle?: string; +} +export interface TimelineMarkerOptions { + id: string; + time: number; + color: number; + label: string; + all?: boolean; +} +export interface CustomInspectorOptions { + id: string; + label: string; + icon?: string; + treeFilterPlaceholder?: string; + stateFilterPlaceholder?: string; + noSelectionText?: string; + actions?: { + icon: string; + tooltip?: string; + action: () => void | Promise<void>; + }[]; + nodeActions?: { + icon: string; + tooltip?: string; + action: (nodeId: string) => void | Promise<void>; + }[]; +} +export interface CustomInspectorNode { + id: string; + label: string; + children?: CustomInspectorNode[]; + tags?: InspectorNodeTag[]; +} +export interface InspectorNodeTag { + label: string; + textColor: number; + backgroundColor: number; + tooltip?: string; +} +export interface CustomInspectorState { + [key: string]: (StateBase | Omit<ComponentState, 'type'>)[]; +} diff --git a/node_modules/@vue/devtools-api/lib/esm/api/api.js b/node_modules/@vue/devtools-api/lib/esm/api/api.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/api/api.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/app.d.ts b/node_modules/@vue/devtools-api/lib/esm/api/app.d.ts new file mode 100644 index 0000000..a10f02f --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/api/app.d.ts @@ -0,0 +1 @@ +export type App = any; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/app.js b/node_modules/@vue/devtools-api/lib/esm/api/app.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/api/app.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/component.d.ts b/node_modules/@vue/devtools-api/lib/esm/api/component.d.ts new file mode 100644 index 0000000..84fcba7 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/api/component.d.ts @@ -0,0 +1,78 @@ +import type { InspectorNodeTag } from './api.js'; +import type { ID } from './util.js'; +export type ComponentInstance = any; +export interface ComponentTreeNode { + uid: ID; + id: string; + name: string; + renderKey: string | number; + inactive: boolean; + isFragment: boolean; + hasChildren: boolean; + children: ComponentTreeNode[]; + domOrder?: number[]; + consoleId?: string; + isRouterView?: boolean; + macthedRouteSegment?: string; + tags: InspectorNodeTag[]; + autoOpen: boolean; + meta?: any; +} +export interface InspectedComponentData { + id: string; + name: string; + file: string; + state: ComponentState[]; + functional?: boolean; +} +export interface StateBase { + key: string; + value: any; + editable?: boolean; + objectType?: 'ref' | 'reactive' | 'computed' | 'other'; + raw?: string; +} +export interface ComponentStateBase extends StateBase { + type: string; +} +export interface ComponentPropState extends ComponentStateBase { + meta?: { + type: string; + required: boolean; + /** Vue 1 only */ + mode?: 'default' | 'sync' | 'once'; + }; +} +export type ComponentBuiltinCustomStateTypes = 'function' | 'map' | 'set' | 'reference' | 'component' | 'component-definition' | 'router' | 'store'; +export interface ComponentCustomState extends ComponentStateBase { + value: CustomState; +} +export interface CustomState { + _custom: { + type: ComponentBuiltinCustomStateTypes | string; + objectType?: string; + display?: string; + tooltip?: string; + value?: any; + abstract?: boolean; + file?: string; + uid?: number; + readOnly?: boolean; + /** Configure immediate child fields */ + fields?: { + abstract?: boolean; + }; + id?: any; + actions?: { + icon: string; + tooltip?: string; + action: () => void | Promise<void>; + }[]; + /** internal */ + _reviveId?: number; + }; +} +export type ComponentState = ComponentStateBase | ComponentPropState | ComponentCustomState; +export interface ComponentDevtoolsOptions { + hide?: boolean; +} diff --git a/node_modules/@vue/devtools-api/lib/esm/api/component.js b/node_modules/@vue/devtools-api/lib/esm/api/component.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/api/component.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/context.d.ts b/node_modules/@vue/devtools-api/lib/esm/api/context.d.ts new file mode 100644 index 0000000..29388f1 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/api/context.d.ts @@ -0,0 +1,5 @@ +import type { AppRecord } from './api.js'; +export interface Context { + currentTab: string; + currentAppRecord: AppRecord; +} diff --git a/node_modules/@vue/devtools-api/lib/esm/api/context.js b/node_modules/@vue/devtools-api/lib/esm/api/context.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/api/context.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/hooks.d.ts b/node_modules/@vue/devtools-api/lib/esm/api/hooks.d.ts new file mode 100644 index 0000000..4e5d7cc --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/api/hooks.d.ts @@ -0,0 +1,180 @@ +import type { ComponentDevtoolsOptions, ComponentInstance, ComponentTreeNode, InspectedComponentData } from './component.js'; +import type { App } from './app.js'; +import type { CustomInspectorNode, CustomInspectorState, TimelineEvent } from './api.js'; +export declare const enum Hooks { + TRANSFORM_CALL = "transformCall", + GET_APP_RECORD_NAME = "getAppRecordName", + GET_APP_ROOT_INSTANCE = "getAppRootInstance", + REGISTER_APPLICATION = "registerApplication", + WALK_COMPONENT_TREE = "walkComponentTree", + VISIT_COMPONENT_TREE = "visitComponentTree", + WALK_COMPONENT_PARENTS = "walkComponentParents", + INSPECT_COMPONENT = "inspectComponent", + GET_COMPONENT_BOUNDS = "getComponentBounds", + GET_COMPONENT_NAME = "getComponentName", + GET_COMPONENT_INSTANCES = "getComponentInstances", + GET_ELEMENT_COMPONENT = "getElementComponent", + GET_COMPONENT_ROOT_ELEMENTS = "getComponentRootElements", + EDIT_COMPONENT_STATE = "editComponentState", + GET_COMPONENT_DEVTOOLS_OPTIONS = "getAppDevtoolsOptions", + GET_COMPONENT_RENDER_CODE = "getComponentRenderCode", + INSPECT_TIMELINE_EVENT = "inspectTimelineEvent", + TIMELINE_CLEARED = "timelineCleared", + GET_INSPECTOR_TREE = "getInspectorTree", + GET_INSPECTOR_STATE = "getInspectorState", + EDIT_INSPECTOR_STATE = "editInspectorState", + SET_PLUGIN_SETTINGS = "setPluginSettings" +} +export interface ComponentBounds { + left: number; + top: number; + width: number; + height: number; +} +export interface HookPayloads { + [Hooks.TRANSFORM_CALL]: { + callName: string; + inArgs: any[]; + outArgs: any[]; + }; + [Hooks.GET_APP_RECORD_NAME]: { + app: App; + name: string; + }; + [Hooks.GET_APP_ROOT_INSTANCE]: { + app: App; + root: ComponentInstance; + }; + [Hooks.REGISTER_APPLICATION]: { + app: App; + }; + [Hooks.WALK_COMPONENT_TREE]: { + componentInstance: ComponentInstance; + componentTreeData: ComponentTreeNode[]; + maxDepth: number; + filter: string; + recursively: boolean; + }; + [Hooks.VISIT_COMPONENT_TREE]: { + app: App; + componentInstance: ComponentInstance; + treeNode: ComponentTreeNode; + filter: string; + }; + [Hooks.WALK_COMPONENT_PARENTS]: { + componentInstance: ComponentInstance; + parentInstances: ComponentInstance[]; + }; + [Hooks.INSPECT_COMPONENT]: { + app: App; + componentInstance: ComponentInstance; + instanceData: InspectedComponentData; + }; + [Hooks.GET_COMPONENT_BOUNDS]: { + componentInstance: ComponentInstance; + bounds: ComponentBounds; + }; + [Hooks.GET_COMPONENT_NAME]: { + componentInstance: ComponentInstance; + name: string; + }; + [Hooks.GET_COMPONENT_INSTANCES]: { + app: App; + componentInstances: ComponentInstance[]; + }; + [Hooks.GET_ELEMENT_COMPONENT]: { + element: HTMLElement | any; + componentInstance: ComponentInstance; + }; + [Hooks.GET_COMPONENT_ROOT_ELEMENTS]: { + componentInstance: ComponentInstance; + rootElements: (HTMLElement | any)[]; + }; + [Hooks.EDIT_COMPONENT_STATE]: { + app: App; + componentInstance: ComponentInstance; + path: string[]; + type: string; + state: EditStatePayload; + set: (object: any, path?: string | (string[]), value?: any, cb?: (object: any, field: string, value: any) => void) => void; + }; + [Hooks.GET_COMPONENT_DEVTOOLS_OPTIONS]: { + componentInstance: ComponentInstance; + options: ComponentDevtoolsOptions; + }; + [Hooks.GET_COMPONENT_RENDER_CODE]: { + componentInstance: ComponentInstance; + code: string; + }; + [Hooks.INSPECT_TIMELINE_EVENT]: { + app: App; + layerId: string; + event: TimelineEvent; + all?: boolean; + data: any; + }; + [Hooks.TIMELINE_CLEARED]: Record<string, never>; + [Hooks.GET_INSPECTOR_TREE]: { + app: App; + inspectorId: string; + filter: string; + rootNodes: CustomInspectorNode[]; + }; + [Hooks.GET_INSPECTOR_STATE]: { + app: App; + inspectorId: string; + nodeId: string; + state: CustomInspectorState; + }; + [Hooks.EDIT_INSPECTOR_STATE]: { + app: App; + inspectorId: string; + nodeId: string; + path: string[]; + type: string; + state: EditStatePayload; + set: (object: any, path?: string | (string[]), value?: any, cb?: (object: any, field: string, value: any) => void) => void; + }; + [Hooks.SET_PLUGIN_SETTINGS]: { + app: App; + pluginId: string; + key: string; + newValue: any; + oldValue: any; + settings: any; + }; +} +export type EditStatePayload = { + value: any; + newKey?: string | null; + remove?: undefined | false; +} | { + value?: undefined; + newKey?: undefined; + remove: true; +}; +export type HookHandler<TPayload, TContext> = (payload: TPayload, ctx: TContext) => void | Promise<void>; +export interface Hookable<TContext> { + transformCall: (handler: HookHandler<HookPayloads[Hooks.TRANSFORM_CALL], TContext>) => any; + getAppRecordName: (handler: HookHandler<HookPayloads[Hooks.GET_APP_RECORD_NAME], TContext>) => any; + getAppRootInstance: (handler: HookHandler<HookPayloads[Hooks.GET_APP_ROOT_INSTANCE], TContext>) => any; + registerApplication: (handler: HookHandler<HookPayloads[Hooks.REGISTER_APPLICATION], TContext>) => any; + walkComponentTree: (handler: HookHandler<HookPayloads[Hooks.WALK_COMPONENT_TREE], TContext>) => any; + visitComponentTree: (handler: HookHandler<HookPayloads[Hooks.VISIT_COMPONENT_TREE], TContext>) => any; + walkComponentParents: (handler: HookHandler<HookPayloads[Hooks.WALK_COMPONENT_PARENTS], TContext>) => any; + inspectComponent: (handler: HookHandler<HookPayloads[Hooks.INSPECT_COMPONENT], TContext>) => any; + getComponentBounds: (handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_BOUNDS], TContext>) => any; + getComponentName: (handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_NAME], TContext>) => any; + getComponentInstances: (handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_INSTANCES], TContext>) => any; + getElementComponent: (handler: HookHandler<HookPayloads[Hooks.GET_ELEMENT_COMPONENT], TContext>) => any; + getComponentRootElements: (handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_ROOT_ELEMENTS], TContext>) => any; + editComponentState: (handler: HookHandler<HookPayloads[Hooks.EDIT_COMPONENT_STATE], TContext>) => any; + getComponentDevtoolsOptions: (handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_DEVTOOLS_OPTIONS], TContext>) => any; + getComponentRenderCode: (handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_RENDER_CODE], TContext>) => any; + inspectTimelineEvent: (handler: HookHandler<HookPayloads[Hooks.INSPECT_TIMELINE_EVENT], TContext>) => any; + timelineCleared: (handler: HookHandler<HookPayloads[Hooks.TIMELINE_CLEARED], TContext>) => any; + getInspectorTree: (handler: HookHandler<HookPayloads[Hooks.GET_INSPECTOR_TREE], TContext>) => any; + getInspectorState: (handler: HookHandler<HookPayloads[Hooks.GET_INSPECTOR_STATE], TContext>) => any; + editInspectorState: (handler: HookHandler<HookPayloads[Hooks.EDIT_INSPECTOR_STATE], TContext>) => any; + setPluginSettings: (handler: HookHandler<HookPayloads[Hooks.SET_PLUGIN_SETTINGS], TContext>) => any; +} diff --git a/node_modules/@vue/devtools-api/lib/esm/api/hooks.js b/node_modules/@vue/devtools-api/lib/esm/api/hooks.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/api/hooks.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/index.d.ts b/node_modules/@vue/devtools-api/lib/esm/api/index.d.ts new file mode 100644 index 0000000..70d09d2 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/api/index.d.ts @@ -0,0 +1,6 @@ +export * from './api.js'; +export * from './app.js'; +export * from './component.js'; +export * from './context.js'; +export * from './hooks.js'; +export * from './util.js'; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/index.js b/node_modules/@vue/devtools-api/lib/esm/api/index.js new file mode 100644 index 0000000..70d09d2 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/api/index.js @@ -0,0 +1,6 @@ +export * from './api.js'; +export * from './app.js'; +export * from './component.js'; +export * from './context.js'; +export * from './hooks.js'; +export * from './util.js'; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/util.d.ts b/node_modules/@vue/devtools-api/lib/esm/api/util.d.ts new file mode 100644 index 0000000..f8ca920 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/api/util.d.ts @@ -0,0 +1,4 @@ +export type ID = number | string; +export interface WithId { + id: ID; +} diff --git a/node_modules/@vue/devtools-api/lib/esm/api/util.js b/node_modules/@vue/devtools-api/lib/esm/api/util.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/api/util.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/const.d.ts b/node_modules/@vue/devtools-api/lib/esm/const.d.ts new file mode 100644 index 0000000..289b254 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/const.d.ts @@ -0,0 +1,2 @@ +export declare const HOOK_SETUP = "devtools-plugin:setup"; +export declare const HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set"; diff --git a/node_modules/@vue/devtools-api/lib/esm/const.js b/node_modules/@vue/devtools-api/lib/esm/const.js new file mode 100644 index 0000000..872ea3e --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/const.js @@ -0,0 +1,2 @@ +export const HOOK_SETUP = 'devtools-plugin:setup'; +export const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set'; diff --git a/node_modules/@vue/devtools-api/lib/esm/env.d.ts b/node_modules/@vue/devtools-api/lib/esm/env.d.ts new file mode 100644 index 0000000..045d95f --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/env.d.ts @@ -0,0 +1,15 @@ +import type { ApiProxy } from './proxy.js'; +import type { PluginDescriptor, SetupFunction } from './index.js'; +export interface PluginQueueItem { + pluginDescriptor: PluginDescriptor; + setupFn: SetupFunction; + proxy?: ApiProxy; +} +interface GlobalTarget { + __VUE_DEVTOOLS_PLUGINS__?: PluginQueueItem[]; + __VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__?: boolean; +} +export declare function getDevtoolsGlobalHook(): any; +export declare function getTarget(): GlobalTarget; +export declare const isProxyAvailable: boolean; +export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/env.js b/node_modules/@vue/devtools-api/lib/esm/env.js new file mode 100644 index 0000000..a7a74b1 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/env.js @@ -0,0 +1,12 @@ +export function getDevtoolsGlobalHook() { + return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; +} +export function getTarget() { + // @ts-expect-error navigator and windows are not available in all environments + return (typeof navigator !== 'undefined' && typeof window !== 'undefined') + ? window + : typeof globalThis !== 'undefined' + ? globalThis + : {}; +} +export const isProxyAvailable = typeof Proxy === 'function'; diff --git a/node_modules/@vue/devtools-api/lib/esm/index.d.ts b/node_modules/@vue/devtools-api/lib/esm/index.d.ts new file mode 100644 index 0000000..162518b --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/index.d.ts @@ -0,0 +1,18 @@ +import type { DevtoolsPluginApi } from './api/index.js'; +import type { ExtractSettingsTypes, PluginDescriptor, PluginSettingsItem } from './plugin.js'; +export * from './api/index.js'; +export * from './plugin.js'; +export * from './time.js'; +export { PluginQueueItem } from './env.js'; +type Cast<A, B> = A extends B ? A : B; +type Narrowable = string | number | bigint | boolean; +type Narrow<A> = Cast<A, [] | (A extends Narrowable ? A : never) | ({ + [K in keyof A]: Narrow<A[K]>; +})>; +type Exact<C, T> = { + [K in keyof C]: K extends keyof T ? T[K] : never; +}; +export type SetupFunction<TSettings = any> = (api: DevtoolsPluginApi<TSettings>) => void; +export declare function setupDevtoolsPlugin<TDescriptor extends Exact<TDescriptor, PluginDescriptor>, TSettings = ExtractSettingsTypes<TDescriptor extends { + settings: infer S; +} ? S extends Record<string, PluginSettingsItem> ? S : Record<string, PluginSettingsItem> : Record<string, PluginSettingsItem>>>(pluginDescriptor: Narrow<TDescriptor>, setupFn: SetupFunction<TSettings>): void; diff --git a/node_modules/@vue/devtools-api/lib/esm/index.js b/node_modules/@vue/devtools-api/lib/esm/index.js new file mode 100644 index 0000000..c7a50ec --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/index.js @@ -0,0 +1,27 @@ +import { getDevtoolsGlobalHook, getTarget, isProxyAvailable } from './env.js'; +import { HOOK_SETUP } from './const.js'; +import { ApiProxy } from './proxy.js'; +export * from './api/index.js'; +export * from './plugin.js'; +export * from './time.js'; +export function setupDevtoolsPlugin(pluginDescriptor, setupFn) { + const descriptor = pluginDescriptor; + const target = getTarget(); + const hook = getDevtoolsGlobalHook(); + const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy; + if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) { + hook.emit(HOOK_SETUP, pluginDescriptor, setupFn); + } + else { + const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null; + const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; + list.push({ + pluginDescriptor: descriptor, + setupFn, + proxy, + }); + if (proxy) { + setupFn(proxy.proxiedTarget); + } + } +} diff --git a/node_modules/@vue/devtools-api/lib/esm/plugin.d.ts b/node_modules/@vue/devtools-api/lib/esm/plugin.d.ts new file mode 100644 index 0000000..52322ca --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/plugin.d.ts @@ -0,0 +1,47 @@ +import type { App } from './api/index.js'; +export interface PluginDescriptor { + id: string; + label: string; + app: App; + packageName?: string; + homepage?: string; + componentStateTypes?: string[]; + logo?: string; + disableAppScope?: boolean; + disablePluginScope?: boolean; + /** + * Run the plugin setup and expose the api even if the devtools is not opened yet. + * Useful to record timeline events early. + */ + enableEarlyProxy?: boolean; + settings?: Record<string, PluginSettingsItem>; +} +export type PluginSettingsItem = { + label: string; + description?: string; +} & ({ + type: 'boolean'; + defaultValue: boolean; +} | { + type: 'choice'; + defaultValue: string | number; + options: { + value: string | number; + label: string; + }[]; + component?: 'select' | 'button-group'; +} | { + type: 'text'; + defaultValue: string; +}); +type InferSettingsType<T extends PluginSettingsItem> = [T] extends [{ + type: 'boolean'; +}] ? boolean : [T] extends [{ + type: 'choice'; +}] ? T['options'][number]['value'] : [T] extends [{ + type: 'text'; +}] ? string : unknown; +export type ExtractSettingsTypes<O extends Record<string, PluginSettingsItem>> = { + [K in keyof O]: InferSettingsType<O[K]>; +}; +export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/plugin.js b/node_modules/@vue/devtools-api/lib/esm/plugin.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/plugin.js @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/proxy.d.ts b/node_modules/@vue/devtools-api/lib/esm/proxy.d.ts new file mode 100644 index 0000000..38ff867 --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/proxy.d.ts @@ -0,0 +1,20 @@ +import type { Context, DevtoolsPluginApi, Hookable } from './api/index.js'; +import type { PluginDescriptor } from './plugin.js'; +interface QueueItem { + method: string; + args: any[]; + resolve?: (value?: any) => void; +} +export declare class ApiProxy<TTarget extends DevtoolsPluginApi<any> = DevtoolsPluginApi<any>> { + target: TTarget | null; + targetQueue: QueueItem[]; + proxiedTarget: TTarget; + onQueue: QueueItem[]; + proxiedOn: Hookable<Context>; + plugin: PluginDescriptor; + hook: any; + fallbacks: Record<string, any>; + constructor(plugin: PluginDescriptor, hook: any); + setRealTarget(target: TTarget): Promise<void>; +} +export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/proxy.js b/node_modules/@vue/devtools-api/lib/esm/proxy.js new file mode 100644 index 0000000..3cce0ff --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/proxy.js @@ -0,0 +1,107 @@ +import { HOOK_PLUGIN_SETTINGS_SET } from './const.js'; +import { now } from './time.js'; +export class ApiProxy { + constructor(plugin, hook) { + this.target = null; + this.targetQueue = []; + this.onQueue = []; + this.plugin = plugin; + this.hook = hook; + const defaultSettings = {}; + if (plugin.settings) { + for (const id in plugin.settings) { + const item = plugin.settings[id]; + defaultSettings[id] = item.defaultValue; + } + } + const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`; + let currentSettings = Object.assign({}, defaultSettings); + try { + const raw = localStorage.getItem(localSettingsSaveId); + const data = JSON.parse(raw); + Object.assign(currentSettings, data); + } + catch (e) { + // noop + } + this.fallbacks = { + getSettings() { + return currentSettings; + }, + setSettings(value) { + try { + localStorage.setItem(localSettingsSaveId, JSON.stringify(value)); + } + catch (e) { + // noop + } + currentSettings = value; + }, + now() { + return now(); + }, + }; + if (hook) { + hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => { + if (pluginId === this.plugin.id) { + this.fallbacks.setSettings(value); + } + }); + } + this.proxiedOn = new Proxy({}, { + get: (_target, prop) => { + if (this.target) { + return this.target.on[prop]; + } + else { + return (...args) => { + this.onQueue.push({ + method: prop, + args, + }); + }; + } + }, + }); + this.proxiedTarget = new Proxy({}, { + get: (_target, prop) => { + if (this.target) { + return this.target[prop]; + } + else if (prop === 'on') { + return this.proxiedOn; + } + else if (Object.keys(this.fallbacks).includes(prop)) { + return (...args) => { + this.targetQueue.push({ + method: prop, + args, + resolve: () => { }, + }); + return this.fallbacks[prop](...args); + }; + } + else { + return (...args) => { + return new Promise((resolve) => { + this.targetQueue.push({ + method: prop, + args, + resolve, + }); + }); + }; + } + }, + }); + } + async setRealTarget(target) { + this.target = target; + for (const item of this.onQueue) { + this.target.on[item.method](...item.args); + } + for (const item of this.targetQueue) { + item.resolve(await this.target[item.method](...item.args)); + } + } +} diff --git a/node_modules/@vue/devtools-api/lib/esm/time.d.ts b/node_modules/@vue/devtools-api/lib/esm/time.d.ts new file mode 100644 index 0000000..1aebade --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/time.d.ts @@ -0,0 +1,2 @@ +export declare function isPerformanceSupported(): boolean; +export declare function now(): number; diff --git a/node_modules/@vue/devtools-api/lib/esm/time.js b/node_modules/@vue/devtools-api/lib/esm/time.js new file mode 100644 index 0000000..fd15ffe --- /dev/null +++ b/node_modules/@vue/devtools-api/lib/esm/time.js @@ -0,0 +1,23 @@ +let supported; +let perf; +export function isPerformanceSupported() { + var _a; + if (supported !== undefined) { + return supported; + } + if (typeof window !== 'undefined' && window.performance) { + supported = true; + perf = window.performance; + } + else if (typeof globalThis !== 'undefined' && ((_a = globalThis.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) { + supported = true; + perf = globalThis.perf_hooks.performance; + } + else { + supported = false; + } + return supported; +} +export function now() { + return isPerformanceSupported() ? perf.now() : Date.now(); +} diff --git a/node_modules/@vue/devtools-api/package.json b/node_modules/@vue/devtools-api/package.json new file mode 100644 index 0000000..85e9706 --- /dev/null +++ b/node_modules/@vue/devtools-api/package.json @@ -0,0 +1,37 @@ +{ + "name": "@vue/devtools-api", + "version": "6.6.4", + "description": "Interact with the Vue devtools from the page", + "author": { + "name": "Guillaume Chau" + }, + "license": "MIT", + "repository": { + "url": "https://github.com/vuejs/vue-devtools.git", + "type": "git", + "directory": "packages/api" + }, + "sideEffects": false, + "main": "lib/cjs/index.js", + "browser": "lib/esm/index.js", + "module": "lib/esm/index.js", + "types": "lib/esm/index.d.ts", + "files": [ + "lib/cjs", + "lib/esm" + ], + "publishConfig": { + "access": "public" + }, + "scripts": { + "build": "rimraf lib && yarn build:esm && yarn build:cjs", + "build:esm": "tsc --module es2015 --outDir lib/esm -d", + "build:cjs": "tsc --module commonjs --outDir lib/cjs", + "build:watch": "yarn tsc --module es2015 --outDir lib/esm -d -w --sourceMap" + }, + "devDependencies": { + "@types/node": "^20.11.16", + "@types/webpack-env": "^1.15.1", + "typescript": "^5.3.3" + } +} \ No newline at end of file diff --git a/node_modules/@vue/reactivity/LICENSE b/node_modules/@vue/reactivity/LICENSE new file mode 100644 index 0000000..15f1f7e --- /dev/null +++ b/node_modules/@vue/reactivity/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018-present, Yuxi (Evan) You + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@vue/reactivity/README.md b/node_modules/@vue/reactivity/README.md new file mode 100644 index 0000000..e478074 --- /dev/null +++ b/node_modules/@vue/reactivity/README.md @@ -0,0 +1,19 @@ +# @vue/reactivity + +## Usage Note + +This package is inlined into Global & Browser ESM builds of user-facing renderers (e.g. `@vue/runtime-dom`), but also published as a package that can be used standalone. The standalone build should not be used alongside a pre-bundled build of a user-facing renderer, as they will have different internal storage for reactivity connections. A user-facing renderer should re-export all APIs from this package. + +For full exposed APIs, see `src/index.ts`. + +## Credits + +The implementation of this module is inspired by the following prior art in the JavaScript ecosystem: + +- [Meteor Tracker](https://docs.meteor.com/api/tracker.html) +- [nx-js/observer-util](https://github.com/nx-js/observer-util) +- [salesforce/observable-membrane](https://github.com/salesforce/observable-membrane) + +## Caveats + +- Built-in objects are not observed except for `Array`, `Map`, `WeakMap`, `Set` and `WeakSet`. diff --git a/node_modules/@vue/reactivity/dist/reactivity.cjs.js b/node_modules/@vue/reactivity/dist/reactivity.cjs.js new file mode 100644 index 0000000..ee36e77 --- /dev/null +++ b/node_modules/@vue/reactivity/dist/reactivity.cjs.js @@ -0,0 +1,1956 @@ +/** +* @vue/reactivity v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var shared = require('@vue/shared'); + +function warn(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); +} + +let activeEffectScope; +class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal track `on` calls, allow `on` call multiple times + */ + this._on = 0; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this._isPaused = false; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + pause() { + if (this._active) { + this._isPaused = true; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].pause(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].pause(); + } + } + } + /** + * Resumes the effect scope, including all child scopes and effects. + */ + resume() { + if (this._active) { + if (this._isPaused) { + this._isPaused = false; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].resume(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].resume(); + } + } + } + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else { + warn(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + if (++this._on === 1) { + this.prevScope = activeEffectScope; + activeEffectScope = this; + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + if (this._on > 0 && --this._on === 0) { + activeEffectScope = this.prevScope; + this.prevScope = void 0; + } + } + stop(fromParent) { + if (this._active) { + this._active = false; + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + this.effects.length = 0; + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + this.cleanups.length = 0; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + this.scopes.length = 0; + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + } + } +} +function effectScope(detached) { + return new EffectScope(detached); +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn, failSilently = false) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else if (!failSilently) { + warn( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } +} + +let activeSub; +const EffectFlags = { + "ACTIVE": 1, + "1": "ACTIVE", + "RUNNING": 2, + "2": "RUNNING", + "TRACKING": 4, + "4": "TRACKING", + "NOTIFIED": 8, + "8": "NOTIFIED", + "DIRTY": 16, + "16": "DIRTY", + "ALLOW_RECURSE": 32, + "32": "ALLOW_RECURSE", + "PAUSED": 64, + "64": "PAUSED", + "EVALUATED": 128, + "128": "EVALUATED" +}; +const pausedQueueEffects = /* @__PURE__ */ new WeakSet(); +class ReactiveEffect { + constructor(fn) { + this.fn = fn; + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 1 | 4; + /** + * @internal + */ + this.next = void 0; + /** + * @internal + */ + this.cleanup = void 0; + this.scheduler = void 0; + if (activeEffectScope && activeEffectScope.active) { + activeEffectScope.effects.push(this); + } + } + pause() { + this.flags |= 64; + } + resume() { + if (this.flags & 64) { + this.flags &= -65; + if (pausedQueueEffects.has(this)) { + pausedQueueEffects.delete(this); + this.trigger(); + } + } + } + /** + * @internal + */ + notify() { + if (this.flags & 2 && !(this.flags & 32)) { + return; + } + if (!(this.flags & 8)) { + batch(this); + } + } + run() { + if (!(this.flags & 1)) { + return this.fn(); + } + this.flags |= 2; + cleanupEffect(this); + prepareDeps(this); + const prevEffect = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = this; + shouldTrack = true; + try { + return this.fn(); + } finally { + if (activeSub !== this) { + warn( + "Active effect was not restored correctly - this is likely a Vue internal bug." + ); + } + cleanupDeps(this); + activeSub = prevEffect; + shouldTrack = prevShouldTrack; + this.flags &= -3; + } + } + stop() { + if (this.flags & 1) { + for (let link = this.deps; link; link = link.nextDep) { + removeSub(link); + } + this.deps = this.depsTail = void 0; + cleanupEffect(this); + this.onStop && this.onStop(); + this.flags &= -2; + } + } + trigger() { + if (this.flags & 64) { + pausedQueueEffects.add(this); + } else if (this.scheduler) { + this.scheduler(); + } else { + this.runIfDirty(); + } + } + /** + * @internal + */ + runIfDirty() { + if (isDirty(this)) { + this.run(); + } + } + get dirty() { + return isDirty(this); + } +} +let batchDepth = 0; +let batchedSub; +let batchedComputed; +function batch(sub, isComputed = false) { + sub.flags |= 8; + if (isComputed) { + sub.next = batchedComputed; + batchedComputed = sub; + return; + } + sub.next = batchedSub; + batchedSub = sub; +} +function startBatch() { + batchDepth++; +} +function endBatch() { + if (--batchDepth > 0) { + return; + } + if (batchedComputed) { + let e = batchedComputed; + batchedComputed = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + e = next; + } + } + let error; + while (batchedSub) { + let e = batchedSub; + batchedSub = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + if (e.flags & 1) { + try { + ; + e.trigger(); + } catch (err) { + if (!error) error = err; + } + } + e = next; + } + } + if (error) throw error; +} +function prepareDeps(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + link.version = -1; + link.prevActiveLink = link.dep.activeLink; + link.dep.activeLink = link; + } +} +function cleanupDeps(sub) { + let head; + let tail = sub.depsTail; + let link = tail; + while (link) { + const prev = link.prevDep; + if (link.version === -1) { + if (link === tail) tail = prev; + removeSub(link); + removeDep(link); + } else { + head = link; + } + link.dep.activeLink = link.prevActiveLink; + link.prevActiveLink = void 0; + link = prev; + } + sub.deps = head; + sub.depsTail = tail; +} +function isDirty(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) { + return true; + } + } + if (sub._dirty) { + return true; + } + return false; +} +function refreshComputed(computed) { + if (computed.flags & 4 && !(computed.flags & 16)) { + return; + } + computed.flags &= -17; + if (computed.globalVersion === globalVersion) { + return; + } + computed.globalVersion = globalVersion; + if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) { + return; + } + computed.flags |= 2; + const dep = computed.dep; + const prevSub = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = computed; + shouldTrack = true; + try { + prepareDeps(computed); + const value = computed.fn(computed._value); + if (dep.version === 0 || shared.hasChanged(value, computed._value)) { + computed.flags |= 128; + computed._value = value; + dep.version++; + } + } catch (err) { + dep.version++; + throw err; + } finally { + activeSub = prevSub; + shouldTrack = prevShouldTrack; + cleanupDeps(computed); + computed.flags &= -3; + } +} +function removeSub(link, soft = false) { + const { dep, prevSub, nextSub } = link; + if (prevSub) { + prevSub.nextSub = nextSub; + link.prevSub = void 0; + } + if (nextSub) { + nextSub.prevSub = prevSub; + link.nextSub = void 0; + } + if (dep.subsHead === link) { + dep.subsHead = nextSub; + } + if (dep.subs === link) { + dep.subs = prevSub; + if (!prevSub && dep.computed) { + dep.computed.flags &= -5; + for (let l = dep.computed.deps; l; l = l.nextDep) { + removeSub(l, true); + } + } + } + if (!soft && !--dep.sc && dep.map) { + dep.map.delete(dep.key); + } +} +function removeDep(link) { + const { prevDep, nextDep } = link; + if (prevDep) { + prevDep.nextDep = nextDep; + link.prevDep = void 0; + } + if (nextDep) { + nextDep.prevDep = prevDep; + link.nextDep = void 0; + } +} +function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const e = new ReactiveEffect(fn); + if (options) { + shared.extend(e, options); + } + try { + e.run(); + } catch (err) { + e.stop(); + throw err; + } + const runner = e.run.bind(e); + runner.effect = e; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +let shouldTrack = true; +const trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function enableTracking() { + trackStack.push(shouldTrack); + shouldTrack = true; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function onEffectCleanup(fn, failSilently = false) { + if (activeSub instanceof ReactiveEffect) { + activeSub.cleanup = fn; + } else if (!failSilently) { + warn( + `onEffectCleanup() was called when there was no active effect to associate with.` + ); + } +} +function cleanupEffect(e) { + const { cleanup } = e; + e.cleanup = void 0; + if (cleanup) { + const prevSub = activeSub; + activeSub = void 0; + try { + cleanup(); + } finally { + activeSub = prevSub; + } + } +} + +let globalVersion = 0; +class Link { + constructor(sub, dep) { + this.sub = sub; + this.dep = dep; + this.version = dep.version; + this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; + } +} +class Dep { + // TODO isolatedDeclarations "__v_skip" + constructor(computed) { + this.computed = computed; + this.version = 0; + /** + * Link between this dep and the current active effect + */ + this.activeLink = void 0; + /** + * Doubly linked list representing the subscribing effects (tail) + */ + this.subs = void 0; + /** + * For object property deps cleanup + */ + this.map = void 0; + this.key = void 0; + /** + * Subscriber counter + */ + this.sc = 0; + /** + * @internal + */ + this.__v_skip = true; + { + this.subsHead = void 0; + } + } + track(debugInfo) { + if (!activeSub || !shouldTrack || activeSub === this.computed) { + return; + } + let link = this.activeLink; + if (link === void 0 || link.sub !== activeSub) { + link = this.activeLink = new Link(activeSub, this); + if (!activeSub.deps) { + activeSub.deps = activeSub.depsTail = link; + } else { + link.prevDep = activeSub.depsTail; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + } + addSub(link); + } else if (link.version === -1) { + link.version = this.version; + if (link.nextDep) { + const next = link.nextDep; + next.prevDep = link.prevDep; + if (link.prevDep) { + link.prevDep.nextDep = next; + } + link.prevDep = activeSub.depsTail; + link.nextDep = void 0; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + if (activeSub.deps === link) { + activeSub.deps = next; + } + } + } + if (activeSub.onTrack) { + activeSub.onTrack( + shared.extend( + { + effect: activeSub + }, + debugInfo + ) + ); + } + return link; + } + trigger(debugInfo) { + this.version++; + globalVersion++; + this.notify(debugInfo); + } + notify(debugInfo) { + startBatch(); + try { + if (true) { + for (let head = this.subsHead; head; head = head.nextSub) { + if (head.sub.onTrigger && !(head.sub.flags & 8)) { + head.sub.onTrigger( + shared.extend( + { + effect: head.sub + }, + debugInfo + ) + ); + } + } + } + for (let link = this.subs; link; link = link.prevSub) { + if (link.sub.notify()) { + ; + link.sub.dep.notify(); + } + } + } finally { + endBatch(); + } + } +} +function addSub(link) { + link.dep.sc++; + if (link.sub.flags & 4) { + const computed = link.dep.computed; + if (computed && !link.dep.subs) { + computed.flags |= 4 | 16; + for (let l = computed.deps; l; l = l.nextDep) { + addSub(l); + } + } + const currentTail = link.dep.subs; + if (currentTail !== link) { + link.prevSub = currentTail; + if (currentTail) currentTail.nextSub = link; + } + if (link.dep.subsHead === void 0) { + link.dep.subsHead = link; + } + link.dep.subs = link; + } +} +const targetMap = /* @__PURE__ */ new WeakMap(); +const ITERATE_KEY = Symbol( + "Object iterate" +); +const MAP_KEY_ITERATE_KEY = Symbol( + "Map keys iterate" +); +const ARRAY_ITERATE_KEY = Symbol( + "Array iterate" +); +function track(target, type, key) { + if (shouldTrack && activeSub) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = new Dep()); + dep.map = depsMap; + dep.key = key; + } + { + dep.track({ + target, + type, + key + }); + } + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + globalVersion++; + return; + } + const run = (dep) => { + if (dep) { + { + dep.trigger({ + target, + type, + key, + newValue, + oldValue, + oldTarget + }); + } + } + }; + startBatch(); + if (type === "clear") { + depsMap.forEach(run); + } else { + const targetIsArray = shared.isArray(target); + const isArrayIndex = targetIsArray && shared.isIntegerKey(key); + if (targetIsArray && key === "length") { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !shared.isSymbol(key2) && key2 >= newLength) { + run(dep); + } + }); + } else { + if (key !== void 0 || depsMap.has(void 0)) { + run(depsMap.get(key)); + } + if (isArrayIndex) { + run(depsMap.get(ARRAY_ITERATE_KEY)); + } + switch (type) { + case "add": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (shared.isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isArrayIndex) { + run(depsMap.get("length")); + } + break; + case "delete": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (shared.isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (shared.isMap(target)) { + run(depsMap.get(ITERATE_KEY)); + } + break; + } + } + } + endBatch(); +} +function getDepFromReactive(object, key) { + const depMap = targetMap.get(object); + return depMap && depMap.get(key); +} + +function reactiveReadArray(array) { + const raw = toRaw(array); + if (raw === array) return raw; + track(raw, "iterate", ARRAY_ITERATE_KEY); + return isShallow(array) ? raw : raw.map(toReactive); +} +function shallowReadArray(arr) { + track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY); + return arr; +} +const arrayInstrumentations = { + __proto__: null, + [Symbol.iterator]() { + return iterator(this, Symbol.iterator, toReactive); + }, + concat(...args) { + return reactiveReadArray(this).concat( + ...args.map((x) => shared.isArray(x) ? reactiveReadArray(x) : x) + ); + }, + entries() { + return iterator(this, "entries", (value) => { + value[1] = toReactive(value[1]); + return value; + }); + }, + every(fn, thisArg) { + return apply(this, "every", fn, thisArg, void 0, arguments); + }, + filter(fn, thisArg) { + return apply(this, "filter", fn, thisArg, (v) => v.map(toReactive), arguments); + }, + find(fn, thisArg) { + return apply(this, "find", fn, thisArg, toReactive, arguments); + }, + findIndex(fn, thisArg) { + return apply(this, "findIndex", fn, thisArg, void 0, arguments); + }, + findLast(fn, thisArg) { + return apply(this, "findLast", fn, thisArg, toReactive, arguments); + }, + findLastIndex(fn, thisArg) { + return apply(this, "findLastIndex", fn, thisArg, void 0, arguments); + }, + // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement + forEach(fn, thisArg) { + return apply(this, "forEach", fn, thisArg, void 0, arguments); + }, + includes(...args) { + return searchProxy(this, "includes", args); + }, + indexOf(...args) { + return searchProxy(this, "indexOf", args); + }, + join(separator) { + return reactiveReadArray(this).join(separator); + }, + // keys() iterator only reads `length`, no optimisation required + lastIndexOf(...args) { + return searchProxy(this, "lastIndexOf", args); + }, + map(fn, thisArg) { + return apply(this, "map", fn, thisArg, void 0, arguments); + }, + pop() { + return noTracking(this, "pop"); + }, + push(...args) { + return noTracking(this, "push", args); + }, + reduce(fn, ...args) { + return reduce(this, "reduce", fn, args); + }, + reduceRight(fn, ...args) { + return reduce(this, "reduceRight", fn, args); + }, + shift() { + return noTracking(this, "shift"); + }, + // slice could use ARRAY_ITERATE but also seems to beg for range tracking + some(fn, thisArg) { + return apply(this, "some", fn, thisArg, void 0, arguments); + }, + splice(...args) { + return noTracking(this, "splice", args); + }, + toReversed() { + return reactiveReadArray(this).toReversed(); + }, + toSorted(comparer) { + return reactiveReadArray(this).toSorted(comparer); + }, + toSpliced(...args) { + return reactiveReadArray(this).toSpliced(...args); + }, + unshift(...args) { + return noTracking(this, "unshift", args); + }, + values() { + return iterator(this, "values", toReactive); + } +}; +function iterator(self, method, wrapValue) { + const arr = shallowReadArray(self); + const iter = arr[method](); + if (arr !== self && !isShallow(self)) { + iter._next = iter.next; + iter.next = () => { + const result = iter._next(); + if (result.value) { + result.value = wrapValue(result.value); + } + return result; + }; + } + return iter; +} +const arrayProto = Array.prototype; +function apply(self, method, fn, thisArg, wrappedRetFn, args) { + const arr = shallowReadArray(self); + const needsWrap = arr !== self && !isShallow(self); + const methodFn = arr[method]; + if (methodFn !== arrayProto[method]) { + const result2 = methodFn.apply(self, args); + return needsWrap ? toReactive(result2) : result2; + } + let wrappedFn = fn; + if (arr !== self) { + if (needsWrap) { + wrappedFn = function(item, index) { + return fn.call(this, toReactive(item), index, self); + }; + } else if (fn.length > 2) { + wrappedFn = function(item, index) { + return fn.call(this, item, index, self); + }; + } + } + const result = methodFn.call(arr, wrappedFn, thisArg); + return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result; +} +function reduce(self, method, fn, args) { + const arr = shallowReadArray(self); + let wrappedFn = fn; + if (arr !== self) { + if (!isShallow(self)) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, toReactive(item), index, self); + }; + } else if (fn.length > 3) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, item, index, self); + }; + } + } + return arr[method](wrappedFn, ...args); +} +function searchProxy(self, method, args) { + const arr = toRaw(self); + track(arr, "iterate", ARRAY_ITERATE_KEY); + const res = arr[method](...args); + if ((res === -1 || res === false) && isProxy(args[0])) { + args[0] = toRaw(args[0]); + return arr[method](...args); + } + return res; +} +function noTracking(self, method, args = []) { + pauseTracking(); + startBatch(); + const res = toRaw(self)[method].apply(self, args); + endBatch(); + resetTracking(); + return res; +} + +const isNonTrackableKeys = /* @__PURE__ */ shared.makeMap(`__proto__,__v_isRef,__isVue`); +const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(shared.isSymbol) +); +function hasOwnProperty(key) { + if (!shared.isSymbol(key)) key = String(key); + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +class BaseReactiveHandler { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + if (key === "__v_skip") return target["__v_skip"]; + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the receiver is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = shared.isArray(target); + if (!isReadonly2) { + let fn; + if (targetIsArray && (fn = arrayInstrumentations[key])) { + return fn; + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get( + target, + key, + // if this is a proxy wrapping a ref, return methods using the raw ref + // as receiver so that we don't have to call `toRaw` on the ref in all + // its class methods + isRef(target) ? target : receiver + ); + if (shared.isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef(res)) { + return targetIsArray && shared.isIntegerKey(key) ? res : res.value; + } + if (shared.isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +} +class MutableReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!shared.isArray(target) && isRef(oldValue) && !isRef(value)) { + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = shared.isArray(target) && shared.isIntegerKey(key) ? Number(key) < target.length : shared.hasOwn(target, key); + const result = Reflect.set( + target, + key, + value, + isRef(target) ? target : receiver + ); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (shared.hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = shared.hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!shared.isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + shared.isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +} +class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + { + warn( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + { + warn( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } +} +const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); +const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); +const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true); +const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + +const toShallow = (value) => value; +const getProto = (v) => Reflect.getPrototypeOf(v); +function createIterableMethod(method, isReadonly2, isShallow2) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = shared.isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + { + const key = args[0] ? `on key "${args[0]}" ` : ``; + warn( + `${shared.capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations(readonly, shallow) { + const instrumentations = { + get(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (shared.hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has } = getProto(rawTarget); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + if (has.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } + }, + get size() { + const target = this["__v_raw"]; + !readonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); + }, + has(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (shared.hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); + }, + forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + !readonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + } + }; + shared.extend( + instrumentations, + readonly ? { + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear") + } : { + add(value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; + }, + set(key, value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + const oldValue = get.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (shared.hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; + }, + delete(key) { + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + const oldValue = get ? get.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + }, + clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = shared.isMap(target) ? new Map(target) : new Set(target) ; + const result = target.clear(); + if (hadItems) { + trigger( + target, + "clear", + void 0, + void 0, + oldTarget + ); + } + return result; + } + } + ); + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator + ]; + iteratorMethods.forEach((method) => { + instrumentations[method] = createIterableMethod(method, readonly, shallow); + }); + return instrumentations; +} +function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = createInstrumentations(isReadonly2, shallow); + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + shared.hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) +}; +const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) +}; +const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) +}; +const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) +}; +function checkIdentityKeys(target, has, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has.call(target, rawKey)) { + const type = shared.toRawType(target); + warn( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } +} + +const reactiveMap = /* @__PURE__ */ new WeakMap(); +const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +const readonlyMap = /* @__PURE__ */ new WeakMap(); +const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(shared.toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!shared.isObject(target)) { + { + warn( + `value cannot be made ${isReadonly2 ? "readonly" : "reactive"}: ${String( + target + )}` + ); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function isProxy(value) { + return value ? !!value["__v_raw"] : false; +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + if (!shared.hasOwn(value, "__v_skip") && Object.isExtensible(value)) { + shared.def(value, "__v_skip", true); + } + return value; +} +const toReactive = (value) => shared.isObject(value) ? reactive(value) : value; +const toReadonly = (value) => shared.isObject(value) ? readonly(value) : value; + +function isRef(r) { + return r ? r["__v_isRef"] === true : false; +} +function ref(value) { + return createRef(value, false); +} +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +class RefImpl { + constructor(value, isShallow2) { + this.dep = new Dep(); + this["__v_isRef"] = true; + this["__v_isShallow"] = false; + this._rawValue = isShallow2 ? value : toRaw(value); + this._value = isShallow2 ? value : toReactive(value); + this["__v_isShallow"] = isShallow2; + } + get value() { + { + this.dep.track({ + target: this, + type: "get", + key: "value" + }); + } + return this._value; + } + set value(newValue) { + const oldValue = this._rawValue; + const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue); + newValue = useDirectValue ? newValue : toRaw(newValue); + if (shared.hasChanged(newValue, oldValue)) { + this._rawValue = newValue; + this._value = useDirectValue ? newValue : toReactive(newValue); + { + this.dep.trigger({ + target: this, + type: "set", + key: "value", + newValue, + oldValue + }); + } + } + } +} +function triggerRef(ref2) { + if (ref2.dep) { + { + ref2.dep.trigger({ + target: ref2, + type: "set", + key: "value", + newValue: ref2._value + }); + } + } +} +function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return shared.isFunction(source) ? source() : unref(source); +} +const shallowUnwrapHandlers = { + get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +class CustomRefImpl { + constructor(factory) { + this["__v_isRef"] = true; + this._value = void 0; + const dep = this.dep = new Dep(); + const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep)); + this._get = get; + this._set = set; + } + get value() { + return this._value = this._get(); + } + set value(newVal) { + this._set(newVal); + } +} +function customRef(factory) { + return new CustomRefImpl(factory); +} +function toRefs(object) { + if (!isProxy(object)) { + warn(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = shared.isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this["__v_isRef"] = true; + this._value = void 0; + } + get value() { + const val = this._object[this._key]; + return this._value = val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } +} +class GetterRefImpl { + constructor(_getter) { + this._getter = _getter; + this["__v_isRef"] = true; + this["__v_isReadonly"] = true; + this._value = void 0; + } + get value() { + return this._value = this._getter(); + } +} +function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (shared.isFunction(source)) { + return new GetterRefImpl(source); + } else if (shared.isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); +} + +class ComputedRefImpl { + constructor(fn, setter, isSSR) { + this.fn = fn; + this.setter = setter; + /** + * @internal + */ + this._value = void 0; + /** + * @internal + */ + this.dep = new Dep(this); + /** + * @internal + */ + this.__v_isRef = true; + // TODO isolatedDeclarations "__v_isReadonly" + // A computed is also a subscriber that tracks other deps + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 16; + /** + * @internal + */ + this.globalVersion = globalVersion - 1; + /** + * @internal + */ + this.next = void 0; + // for backwards compat + this.effect = this; + this["__v_isReadonly"] = !setter; + this.isSSR = isSSR; + } + /** + * @internal + */ + notify() { + this.flags |= 16; + if (!(this.flags & 8) && // avoid infinite self recursion + activeSub !== this) { + batch(this, true); + return true; + } + } + get value() { + const link = this.dep.track({ + target: this, + type: "get", + key: "value" + }) ; + refreshComputed(this); + if (link) { + link.version = this.dep.version; + } + return this._value; + } + set value(newValue) { + if (this.setter) { + this.setter(newValue); + } else { + warn("Write operation failed: computed value is readonly"); + } + } +} +function computed(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + if (shared.isFunction(getterOrOptions)) { + getter = getterOrOptions; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, isSSR); + if (debugOptions && !isSSR) { + cRef.onTrack = debugOptions.onTrack; + cRef.onTrigger = debugOptions.onTrigger; + } + return cRef; +} + +const TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" +}; +const TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" +}; +const ReactiveFlags = { + "SKIP": "__v_skip", + "IS_REACTIVE": "__v_isReactive", + "IS_READONLY": "__v_isReadonly", + "IS_SHALLOW": "__v_isShallow", + "RAW": "__v_raw", + "IS_REF": "__v_isRef" +}; + +const WatchErrorCodes = { + "WATCH_GETTER": 2, + "2": "WATCH_GETTER", + "WATCH_CALLBACK": 3, + "3": "WATCH_CALLBACK", + "WATCH_CLEANUP": 4, + "4": "WATCH_CLEANUP" +}; +const INITIAL_WATCHER_VALUE = {}; +const cleanupMap = /* @__PURE__ */ new WeakMap(); +let activeWatcher = void 0; +function getCurrentWatcher() { + return activeWatcher; +} +function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) { + if (owner) { + let cleanups = cleanupMap.get(owner); + if (!cleanups) cleanupMap.set(owner, cleanups = []); + cleanups.push(cleanupFn); + } else if (!failSilently) { + warn( + `onWatcherCleanup() was called when there was no active watcher to associate with.` + ); + } +} +function watch(source, cb, options = shared.EMPTY_OBJ) { + const { immediate, deep, once, scheduler, augmentJob, call } = options; + const warnInvalidSource = (s) => { + (options.onWarn || warn)( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const reactiveGetter = (source2) => { + if (deep) return source2; + if (isShallow(source2) || deep === false || deep === 0) + return traverse(source2, 1); + return traverse(source2); + }; + let effect; + let getter; + let cleanup; + let boundCleanup; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (shared.isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return reactiveGetter(s); + } else if (shared.isFunction(s)) { + return call ? call(s, 2) : s(); + } else { + warnInvalidSource(s); + } + }); + } else if (shared.isFunction(source)) { + if (cb) { + getter = call ? () => call(source, 2) : source; + } else { + getter = () => { + if (cleanup) { + pauseTracking(); + try { + cleanup(); + } finally { + resetTracking(); + } + } + const currentEffect = activeWatcher; + activeWatcher = effect; + try { + return call ? call(source, 3, [boundCleanup]) : source(boundCleanup); + } finally { + activeWatcher = currentEffect; + } + }; + } + } else { + getter = shared.NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + const depth = deep === true ? Infinity : deep; + getter = () => traverse(baseGetter(), depth); + } + const scope = getCurrentScope(); + const watchHandle = () => { + effect.stop(); + if (scope && scope.active) { + shared.remove(scope.effects, effect); + } + }; + if (once && cb) { + const _cb = cb; + cb = (...args) => { + _cb(...args); + watchHandle(); + }; + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = (immediateFirstRun) => { + if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => shared.hasChanged(v, oldValue[i])) : shared.hasChanged(newValue, oldValue))) { + if (cleanup) { + cleanup(); + } + const currentWatcher = activeWatcher; + activeWatcher = effect; + try { + const args = [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + boundCleanup + ]; + oldValue = newValue; + call ? call(cb, 3, args) : ( + // @ts-expect-error + cb(...args) + ); + } finally { + activeWatcher = currentWatcher; + } + } + } else { + effect.run(); + } + }; + if (augmentJob) { + augmentJob(job); + } + effect = new ReactiveEffect(getter); + effect.scheduler = scheduler ? () => scheduler(job, false) : job; + boundCleanup = (fn) => onWatcherCleanup(fn, false, effect); + cleanup = effect.onStop = () => { + const cleanups = cleanupMap.get(effect); + if (cleanups) { + if (call) { + call(cleanups, 4); + } else { + for (const cleanup2 of cleanups) cleanup2(); + } + cleanupMap.delete(effect); + } + }; + { + effect.onTrack = options.onTrack; + effect.onTrigger = options.onTrigger; + } + if (cb) { + if (immediate) { + job(true); + } else { + oldValue = effect.run(); + } + } else if (scheduler) { + scheduler(job.bind(null, true), true); + } else { + effect.run(); + } + watchHandle.pause = effect.pause.bind(effect); + watchHandle.resume = effect.resume.bind(effect); + watchHandle.stop = watchHandle; + return watchHandle; +} +function traverse(value, depth = Infinity, seen) { + if (depth <= 0 || !shared.isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + depth--; + if (isRef(value)) { + traverse(value.value, depth, seen); + } else if (shared.isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, seen); + } + } else if (shared.isSet(value) || shared.isMap(value)) { + value.forEach((v) => { + traverse(v, depth, seen); + }); + } else if (shared.isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, seen); + } + for (const key of Object.getOwnPropertySymbols(value)) { + if (Object.prototype.propertyIsEnumerable.call(value, key)) { + traverse(value[key], depth, seen); + } + } + } + return value; +} + +exports.ARRAY_ITERATE_KEY = ARRAY_ITERATE_KEY; +exports.EffectFlags = EffectFlags; +exports.EffectScope = EffectScope; +exports.ITERATE_KEY = ITERATE_KEY; +exports.MAP_KEY_ITERATE_KEY = MAP_KEY_ITERATE_KEY; +exports.ReactiveEffect = ReactiveEffect; +exports.ReactiveFlags = ReactiveFlags; +exports.TrackOpTypes = TrackOpTypes; +exports.TriggerOpTypes = TriggerOpTypes; +exports.WatchErrorCodes = WatchErrorCodes; +exports.computed = computed; +exports.customRef = customRef; +exports.effect = effect; +exports.effectScope = effectScope; +exports.enableTracking = enableTracking; +exports.getCurrentScope = getCurrentScope; +exports.getCurrentWatcher = getCurrentWatcher; +exports.isProxy = isProxy; +exports.isReactive = isReactive; +exports.isReadonly = isReadonly; +exports.isRef = isRef; +exports.isShallow = isShallow; +exports.markRaw = markRaw; +exports.onEffectCleanup = onEffectCleanup; +exports.onScopeDispose = onScopeDispose; +exports.onWatcherCleanup = onWatcherCleanup; +exports.pauseTracking = pauseTracking; +exports.proxyRefs = proxyRefs; +exports.reactive = reactive; +exports.reactiveReadArray = reactiveReadArray; +exports.readonly = readonly; +exports.ref = ref; +exports.resetTracking = resetTracking; +exports.shallowReactive = shallowReactive; +exports.shallowReadArray = shallowReadArray; +exports.shallowReadonly = shallowReadonly; +exports.shallowRef = shallowRef; +exports.stop = stop; +exports.toRaw = toRaw; +exports.toReactive = toReactive; +exports.toReadonly = toReadonly; +exports.toRef = toRef; +exports.toRefs = toRefs; +exports.toValue = toValue; +exports.track = track; +exports.traverse = traverse; +exports.trigger = trigger; +exports.triggerRef = triggerRef; +exports.unref = unref; +exports.watch = watch; diff --git a/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js b/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js new file mode 100644 index 0000000..dea84d4 --- /dev/null +++ b/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js @@ -0,0 +1,1806 @@ +/** +* @vue/reactivity v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var shared = require('@vue/shared'); + +let activeEffectScope; +class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal track `on` calls, allow `on` call multiple times + */ + this._on = 0; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this._isPaused = false; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + pause() { + if (this._active) { + this._isPaused = true; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].pause(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].pause(); + } + } + } + /** + * Resumes the effect scope, including all child scopes and effects. + */ + resume() { + if (this._active) { + if (this._isPaused) { + this._isPaused = false; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].resume(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].resume(); + } + } + } + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + if (++this._on === 1) { + this.prevScope = activeEffectScope; + activeEffectScope = this; + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + if (this._on > 0 && --this._on === 0) { + activeEffectScope = this.prevScope; + this.prevScope = void 0; + } + } + stop(fromParent) { + if (this._active) { + this._active = false; + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + this.effects.length = 0; + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + this.cleanups.length = 0; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + this.scopes.length = 0; + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + } + } +} +function effectScope(detached) { + return new EffectScope(detached); +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn, failSilently = false) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } +} + +let activeSub; +const EffectFlags = { + "ACTIVE": 1, + "1": "ACTIVE", + "RUNNING": 2, + "2": "RUNNING", + "TRACKING": 4, + "4": "TRACKING", + "NOTIFIED": 8, + "8": "NOTIFIED", + "DIRTY": 16, + "16": "DIRTY", + "ALLOW_RECURSE": 32, + "32": "ALLOW_RECURSE", + "PAUSED": 64, + "64": "PAUSED", + "EVALUATED": 128, + "128": "EVALUATED" +}; +const pausedQueueEffects = /* @__PURE__ */ new WeakSet(); +class ReactiveEffect { + constructor(fn) { + this.fn = fn; + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 1 | 4; + /** + * @internal + */ + this.next = void 0; + /** + * @internal + */ + this.cleanup = void 0; + this.scheduler = void 0; + if (activeEffectScope && activeEffectScope.active) { + activeEffectScope.effects.push(this); + } + } + pause() { + this.flags |= 64; + } + resume() { + if (this.flags & 64) { + this.flags &= -65; + if (pausedQueueEffects.has(this)) { + pausedQueueEffects.delete(this); + this.trigger(); + } + } + } + /** + * @internal + */ + notify() { + if (this.flags & 2 && !(this.flags & 32)) { + return; + } + if (!(this.flags & 8)) { + batch(this); + } + } + run() { + if (!(this.flags & 1)) { + return this.fn(); + } + this.flags |= 2; + cleanupEffect(this); + prepareDeps(this); + const prevEffect = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = this; + shouldTrack = true; + try { + return this.fn(); + } finally { + cleanupDeps(this); + activeSub = prevEffect; + shouldTrack = prevShouldTrack; + this.flags &= -3; + } + } + stop() { + if (this.flags & 1) { + for (let link = this.deps; link; link = link.nextDep) { + removeSub(link); + } + this.deps = this.depsTail = void 0; + cleanupEffect(this); + this.onStop && this.onStop(); + this.flags &= -2; + } + } + trigger() { + if (this.flags & 64) { + pausedQueueEffects.add(this); + } else if (this.scheduler) { + this.scheduler(); + } else { + this.runIfDirty(); + } + } + /** + * @internal + */ + runIfDirty() { + if (isDirty(this)) { + this.run(); + } + } + get dirty() { + return isDirty(this); + } +} +let batchDepth = 0; +let batchedSub; +let batchedComputed; +function batch(sub, isComputed = false) { + sub.flags |= 8; + if (isComputed) { + sub.next = batchedComputed; + batchedComputed = sub; + return; + } + sub.next = batchedSub; + batchedSub = sub; +} +function startBatch() { + batchDepth++; +} +function endBatch() { + if (--batchDepth > 0) { + return; + } + if (batchedComputed) { + let e = batchedComputed; + batchedComputed = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + e = next; + } + } + let error; + while (batchedSub) { + let e = batchedSub; + batchedSub = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + if (e.flags & 1) { + try { + ; + e.trigger(); + } catch (err) { + if (!error) error = err; + } + } + e = next; + } + } + if (error) throw error; +} +function prepareDeps(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + link.version = -1; + link.prevActiveLink = link.dep.activeLink; + link.dep.activeLink = link; + } +} +function cleanupDeps(sub) { + let head; + let tail = sub.depsTail; + let link = tail; + while (link) { + const prev = link.prevDep; + if (link.version === -1) { + if (link === tail) tail = prev; + removeSub(link); + removeDep(link); + } else { + head = link; + } + link.dep.activeLink = link.prevActiveLink; + link.prevActiveLink = void 0; + link = prev; + } + sub.deps = head; + sub.depsTail = tail; +} +function isDirty(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) { + return true; + } + } + if (sub._dirty) { + return true; + } + return false; +} +function refreshComputed(computed) { + if (computed.flags & 4 && !(computed.flags & 16)) { + return; + } + computed.flags &= -17; + if (computed.globalVersion === globalVersion) { + return; + } + computed.globalVersion = globalVersion; + if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) { + return; + } + computed.flags |= 2; + const dep = computed.dep; + const prevSub = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = computed; + shouldTrack = true; + try { + prepareDeps(computed); + const value = computed.fn(computed._value); + if (dep.version === 0 || shared.hasChanged(value, computed._value)) { + computed.flags |= 128; + computed._value = value; + dep.version++; + } + } catch (err) { + dep.version++; + throw err; + } finally { + activeSub = prevSub; + shouldTrack = prevShouldTrack; + cleanupDeps(computed); + computed.flags &= -3; + } +} +function removeSub(link, soft = false) { + const { dep, prevSub, nextSub } = link; + if (prevSub) { + prevSub.nextSub = nextSub; + link.prevSub = void 0; + } + if (nextSub) { + nextSub.prevSub = prevSub; + link.nextSub = void 0; + } + if (dep.subs === link) { + dep.subs = prevSub; + if (!prevSub && dep.computed) { + dep.computed.flags &= -5; + for (let l = dep.computed.deps; l; l = l.nextDep) { + removeSub(l, true); + } + } + } + if (!soft && !--dep.sc && dep.map) { + dep.map.delete(dep.key); + } +} +function removeDep(link) { + const { prevDep, nextDep } = link; + if (prevDep) { + prevDep.nextDep = nextDep; + link.prevDep = void 0; + } + if (nextDep) { + nextDep.prevDep = prevDep; + link.nextDep = void 0; + } +} +function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const e = new ReactiveEffect(fn); + if (options) { + shared.extend(e, options); + } + try { + e.run(); + } catch (err) { + e.stop(); + throw err; + } + const runner = e.run.bind(e); + runner.effect = e; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +let shouldTrack = true; +const trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function enableTracking() { + trackStack.push(shouldTrack); + shouldTrack = true; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function onEffectCleanup(fn, failSilently = false) { + if (activeSub instanceof ReactiveEffect) { + activeSub.cleanup = fn; + } +} +function cleanupEffect(e) { + const { cleanup } = e; + e.cleanup = void 0; + if (cleanup) { + const prevSub = activeSub; + activeSub = void 0; + try { + cleanup(); + } finally { + activeSub = prevSub; + } + } +} + +let globalVersion = 0; +class Link { + constructor(sub, dep) { + this.sub = sub; + this.dep = dep; + this.version = dep.version; + this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; + } +} +class Dep { + // TODO isolatedDeclarations "__v_skip" + constructor(computed) { + this.computed = computed; + this.version = 0; + /** + * Link between this dep and the current active effect + */ + this.activeLink = void 0; + /** + * Doubly linked list representing the subscribing effects (tail) + */ + this.subs = void 0; + /** + * For object property deps cleanup + */ + this.map = void 0; + this.key = void 0; + /** + * Subscriber counter + */ + this.sc = 0; + /** + * @internal + */ + this.__v_skip = true; + } + track(debugInfo) { + if (!activeSub || !shouldTrack || activeSub === this.computed) { + return; + } + let link = this.activeLink; + if (link === void 0 || link.sub !== activeSub) { + link = this.activeLink = new Link(activeSub, this); + if (!activeSub.deps) { + activeSub.deps = activeSub.depsTail = link; + } else { + link.prevDep = activeSub.depsTail; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + } + addSub(link); + } else if (link.version === -1) { + link.version = this.version; + if (link.nextDep) { + const next = link.nextDep; + next.prevDep = link.prevDep; + if (link.prevDep) { + link.prevDep.nextDep = next; + } + link.prevDep = activeSub.depsTail; + link.nextDep = void 0; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + if (activeSub.deps === link) { + activeSub.deps = next; + } + } + } + return link; + } + trigger(debugInfo) { + this.version++; + globalVersion++; + this.notify(debugInfo); + } + notify(debugInfo) { + startBatch(); + try { + if (false) ; + for (let link = this.subs; link; link = link.prevSub) { + if (link.sub.notify()) { + ; + link.sub.dep.notify(); + } + } + } finally { + endBatch(); + } + } +} +function addSub(link) { + link.dep.sc++; + if (link.sub.flags & 4) { + const computed = link.dep.computed; + if (computed && !link.dep.subs) { + computed.flags |= 4 | 16; + for (let l = computed.deps; l; l = l.nextDep) { + addSub(l); + } + } + const currentTail = link.dep.subs; + if (currentTail !== link) { + link.prevSub = currentTail; + if (currentTail) currentTail.nextSub = link; + } + link.dep.subs = link; + } +} +const targetMap = /* @__PURE__ */ new WeakMap(); +const ITERATE_KEY = Symbol( + "" +); +const MAP_KEY_ITERATE_KEY = Symbol( + "" +); +const ARRAY_ITERATE_KEY = Symbol( + "" +); +function track(target, type, key) { + if (shouldTrack && activeSub) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = new Dep()); + dep.map = depsMap; + dep.key = key; + } + { + dep.track(); + } + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + globalVersion++; + return; + } + const run = (dep) => { + if (dep) { + { + dep.trigger(); + } + } + }; + startBatch(); + if (type === "clear") { + depsMap.forEach(run); + } else { + const targetIsArray = shared.isArray(target); + const isArrayIndex = targetIsArray && shared.isIntegerKey(key); + if (targetIsArray && key === "length") { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !shared.isSymbol(key2) && key2 >= newLength) { + run(dep); + } + }); + } else { + if (key !== void 0 || depsMap.has(void 0)) { + run(depsMap.get(key)); + } + if (isArrayIndex) { + run(depsMap.get(ARRAY_ITERATE_KEY)); + } + switch (type) { + case "add": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (shared.isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isArrayIndex) { + run(depsMap.get("length")); + } + break; + case "delete": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (shared.isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (shared.isMap(target)) { + run(depsMap.get(ITERATE_KEY)); + } + break; + } + } + } + endBatch(); +} +function getDepFromReactive(object, key) { + const depMap = targetMap.get(object); + return depMap && depMap.get(key); +} + +function reactiveReadArray(array) { + const raw = toRaw(array); + if (raw === array) return raw; + track(raw, "iterate", ARRAY_ITERATE_KEY); + return isShallow(array) ? raw : raw.map(toReactive); +} +function shallowReadArray(arr) { + track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY); + return arr; +} +const arrayInstrumentations = { + __proto__: null, + [Symbol.iterator]() { + return iterator(this, Symbol.iterator, toReactive); + }, + concat(...args) { + return reactiveReadArray(this).concat( + ...args.map((x) => shared.isArray(x) ? reactiveReadArray(x) : x) + ); + }, + entries() { + return iterator(this, "entries", (value) => { + value[1] = toReactive(value[1]); + return value; + }); + }, + every(fn, thisArg) { + return apply(this, "every", fn, thisArg, void 0, arguments); + }, + filter(fn, thisArg) { + return apply(this, "filter", fn, thisArg, (v) => v.map(toReactive), arguments); + }, + find(fn, thisArg) { + return apply(this, "find", fn, thisArg, toReactive, arguments); + }, + findIndex(fn, thisArg) { + return apply(this, "findIndex", fn, thisArg, void 0, arguments); + }, + findLast(fn, thisArg) { + return apply(this, "findLast", fn, thisArg, toReactive, arguments); + }, + findLastIndex(fn, thisArg) { + return apply(this, "findLastIndex", fn, thisArg, void 0, arguments); + }, + // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement + forEach(fn, thisArg) { + return apply(this, "forEach", fn, thisArg, void 0, arguments); + }, + includes(...args) { + return searchProxy(this, "includes", args); + }, + indexOf(...args) { + return searchProxy(this, "indexOf", args); + }, + join(separator) { + return reactiveReadArray(this).join(separator); + }, + // keys() iterator only reads `length`, no optimisation required + lastIndexOf(...args) { + return searchProxy(this, "lastIndexOf", args); + }, + map(fn, thisArg) { + return apply(this, "map", fn, thisArg, void 0, arguments); + }, + pop() { + return noTracking(this, "pop"); + }, + push(...args) { + return noTracking(this, "push", args); + }, + reduce(fn, ...args) { + return reduce(this, "reduce", fn, args); + }, + reduceRight(fn, ...args) { + return reduce(this, "reduceRight", fn, args); + }, + shift() { + return noTracking(this, "shift"); + }, + // slice could use ARRAY_ITERATE but also seems to beg for range tracking + some(fn, thisArg) { + return apply(this, "some", fn, thisArg, void 0, arguments); + }, + splice(...args) { + return noTracking(this, "splice", args); + }, + toReversed() { + return reactiveReadArray(this).toReversed(); + }, + toSorted(comparer) { + return reactiveReadArray(this).toSorted(comparer); + }, + toSpliced(...args) { + return reactiveReadArray(this).toSpliced(...args); + }, + unshift(...args) { + return noTracking(this, "unshift", args); + }, + values() { + return iterator(this, "values", toReactive); + } +}; +function iterator(self, method, wrapValue) { + const arr = shallowReadArray(self); + const iter = arr[method](); + if (arr !== self && !isShallow(self)) { + iter._next = iter.next; + iter.next = () => { + const result = iter._next(); + if (result.value) { + result.value = wrapValue(result.value); + } + return result; + }; + } + return iter; +} +const arrayProto = Array.prototype; +function apply(self, method, fn, thisArg, wrappedRetFn, args) { + const arr = shallowReadArray(self); + const needsWrap = arr !== self && !isShallow(self); + const methodFn = arr[method]; + if (methodFn !== arrayProto[method]) { + const result2 = methodFn.apply(self, args); + return needsWrap ? toReactive(result2) : result2; + } + let wrappedFn = fn; + if (arr !== self) { + if (needsWrap) { + wrappedFn = function(item, index) { + return fn.call(this, toReactive(item), index, self); + }; + } else if (fn.length > 2) { + wrappedFn = function(item, index) { + return fn.call(this, item, index, self); + }; + } + } + const result = methodFn.call(arr, wrappedFn, thisArg); + return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result; +} +function reduce(self, method, fn, args) { + const arr = shallowReadArray(self); + let wrappedFn = fn; + if (arr !== self) { + if (!isShallow(self)) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, toReactive(item), index, self); + }; + } else if (fn.length > 3) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, item, index, self); + }; + } + } + return arr[method](wrappedFn, ...args); +} +function searchProxy(self, method, args) { + const arr = toRaw(self); + track(arr, "iterate", ARRAY_ITERATE_KEY); + const res = arr[method](...args); + if ((res === -1 || res === false) && isProxy(args[0])) { + args[0] = toRaw(args[0]); + return arr[method](...args); + } + return res; +} +function noTracking(self, method, args = []) { + pauseTracking(); + startBatch(); + const res = toRaw(self)[method].apply(self, args); + endBatch(); + resetTracking(); + return res; +} + +const isNonTrackableKeys = /* @__PURE__ */ shared.makeMap(`__proto__,__v_isRef,__isVue`); +const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(shared.isSymbol) +); +function hasOwnProperty(key) { + if (!shared.isSymbol(key)) key = String(key); + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +class BaseReactiveHandler { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + if (key === "__v_skip") return target["__v_skip"]; + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the receiver is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = shared.isArray(target); + if (!isReadonly2) { + let fn; + if (targetIsArray && (fn = arrayInstrumentations[key])) { + return fn; + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get( + target, + key, + // if this is a proxy wrapping a ref, return methods using the raw ref + // as receiver so that we don't have to call `toRaw` on the ref in all + // its class methods + isRef(target) ? target : receiver + ); + if (shared.isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef(res)) { + return targetIsArray && shared.isIntegerKey(key) ? res : res.value; + } + if (shared.isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +} +class MutableReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!shared.isArray(target) && isRef(oldValue) && !isRef(value)) { + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = shared.isArray(target) && shared.isIntegerKey(key) ? Number(key) < target.length : shared.hasOwn(target, key); + const result = Reflect.set( + target, + key, + value, + isRef(target) ? target : receiver + ); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (shared.hasChanged(value, oldValue)) { + trigger(target, "set", key, value); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = shared.hasOwn(target, key); + target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!shared.isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + shared.isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +} +class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + return true; + } + deleteProperty(target, key) { + return true; + } +} +const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); +const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); +const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true); +const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + +const toShallow = (value) => value; +const getProto = (v) => Reflect.getPrototypeOf(v); +function createIterableMethod(method, isReadonly2, isShallow2) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = shared.isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations(readonly, shallow) { + const instrumentations = { + get(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (shared.hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has } = getProto(rawTarget); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + if (has.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } + }, + get size() { + const target = this["__v_raw"]; + !readonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); + }, + has(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (shared.hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); + }, + forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + !readonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + } + }; + shared.extend( + instrumentations, + readonly ? { + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear") + } : { + add(value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; + }, + set(key, value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } + const oldValue = get.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (shared.hasChanged(value, oldValue)) { + trigger(target, "set", key, value); + } + return this; + }, + delete(key) { + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } + get ? get.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0); + } + return result; + }, + clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const result = target.clear(); + if (hadItems) { + trigger( + target, + "clear", + void 0, + void 0); + } + return result; + } + } + ); + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator + ]; + iteratorMethods.forEach((method) => { + instrumentations[method] = createIterableMethod(method, readonly, shallow); + }); + return instrumentations; +} +function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = createInstrumentations(isReadonly2, shallow); + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + shared.hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) +}; +const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) +}; +const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) +}; +const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) +}; + +const reactiveMap = /* @__PURE__ */ new WeakMap(); +const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +const readonlyMap = /* @__PURE__ */ new WeakMap(); +const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(shared.toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!shared.isObject(target)) { + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function isProxy(value) { + return value ? !!value["__v_raw"] : false; +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + if (!shared.hasOwn(value, "__v_skip") && Object.isExtensible(value)) { + shared.def(value, "__v_skip", true); + } + return value; +} +const toReactive = (value) => shared.isObject(value) ? reactive(value) : value; +const toReadonly = (value) => shared.isObject(value) ? readonly(value) : value; + +function isRef(r) { + return r ? r["__v_isRef"] === true : false; +} +function ref(value) { + return createRef(value, false); +} +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +class RefImpl { + constructor(value, isShallow2) { + this.dep = new Dep(); + this["__v_isRef"] = true; + this["__v_isShallow"] = false; + this._rawValue = isShallow2 ? value : toRaw(value); + this._value = isShallow2 ? value : toReactive(value); + this["__v_isShallow"] = isShallow2; + } + get value() { + { + this.dep.track(); + } + return this._value; + } + set value(newValue) { + const oldValue = this._rawValue; + const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue); + newValue = useDirectValue ? newValue : toRaw(newValue); + if (shared.hasChanged(newValue, oldValue)) { + this._rawValue = newValue; + this._value = useDirectValue ? newValue : toReactive(newValue); + { + this.dep.trigger(); + } + } + } +} +function triggerRef(ref2) { + if (ref2.dep) { + { + ref2.dep.trigger(); + } + } +} +function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return shared.isFunction(source) ? source() : unref(source); +} +const shallowUnwrapHandlers = { + get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +class CustomRefImpl { + constructor(factory) { + this["__v_isRef"] = true; + this._value = void 0; + const dep = this.dep = new Dep(); + const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep)); + this._get = get; + this._set = set; + } + get value() { + return this._value = this._get(); + } + set value(newVal) { + this._set(newVal); + } +} +function customRef(factory) { + return new CustomRefImpl(factory); +} +function toRefs(object) { + const ret = shared.isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this["__v_isRef"] = true; + this._value = void 0; + } + get value() { + const val = this._object[this._key]; + return this._value = val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } +} +class GetterRefImpl { + constructor(_getter) { + this._getter = _getter; + this["__v_isRef"] = true; + this["__v_isReadonly"] = true; + this._value = void 0; + } + get value() { + return this._value = this._getter(); + } +} +function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (shared.isFunction(source)) { + return new GetterRefImpl(source); + } else if (shared.isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); +} + +class ComputedRefImpl { + constructor(fn, setter, isSSR) { + this.fn = fn; + this.setter = setter; + /** + * @internal + */ + this._value = void 0; + /** + * @internal + */ + this.dep = new Dep(this); + /** + * @internal + */ + this.__v_isRef = true; + // TODO isolatedDeclarations "__v_isReadonly" + // A computed is also a subscriber that tracks other deps + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 16; + /** + * @internal + */ + this.globalVersion = globalVersion - 1; + /** + * @internal + */ + this.next = void 0; + // for backwards compat + this.effect = this; + this["__v_isReadonly"] = !setter; + this.isSSR = isSSR; + } + /** + * @internal + */ + notify() { + this.flags |= 16; + if (!(this.flags & 8) && // avoid infinite self recursion + activeSub !== this) { + batch(this, true); + return true; + } + } + get value() { + const link = this.dep.track(); + refreshComputed(this); + if (link) { + link.version = this.dep.version; + } + return this._value; + } + set value(newValue) { + if (this.setter) { + this.setter(newValue); + } + } +} +function computed(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + if (shared.isFunction(getterOrOptions)) { + getter = getterOrOptions; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, isSSR); + return cRef; +} + +const TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" +}; +const TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" +}; +const ReactiveFlags = { + "SKIP": "__v_skip", + "IS_REACTIVE": "__v_isReactive", + "IS_READONLY": "__v_isReadonly", + "IS_SHALLOW": "__v_isShallow", + "RAW": "__v_raw", + "IS_REF": "__v_isRef" +}; + +const WatchErrorCodes = { + "WATCH_GETTER": 2, + "2": "WATCH_GETTER", + "WATCH_CALLBACK": 3, + "3": "WATCH_CALLBACK", + "WATCH_CLEANUP": 4, + "4": "WATCH_CLEANUP" +}; +const INITIAL_WATCHER_VALUE = {}; +const cleanupMap = /* @__PURE__ */ new WeakMap(); +let activeWatcher = void 0; +function getCurrentWatcher() { + return activeWatcher; +} +function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) { + if (owner) { + let cleanups = cleanupMap.get(owner); + if (!cleanups) cleanupMap.set(owner, cleanups = []); + cleanups.push(cleanupFn); + } +} +function watch(source, cb, options = shared.EMPTY_OBJ) { + const { immediate, deep, once, scheduler, augmentJob, call } = options; + const reactiveGetter = (source2) => { + if (deep) return source2; + if (isShallow(source2) || deep === false || deep === 0) + return traverse(source2, 1); + return traverse(source2); + }; + let effect; + let getter; + let cleanup; + let boundCleanup; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (shared.isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return reactiveGetter(s); + } else if (shared.isFunction(s)) { + return call ? call(s, 2) : s(); + } else ; + }); + } else if (shared.isFunction(source)) { + if (cb) { + getter = call ? () => call(source, 2) : source; + } else { + getter = () => { + if (cleanup) { + pauseTracking(); + try { + cleanup(); + } finally { + resetTracking(); + } + } + const currentEffect = activeWatcher; + activeWatcher = effect; + try { + return call ? call(source, 3, [boundCleanup]) : source(boundCleanup); + } finally { + activeWatcher = currentEffect; + } + }; + } + } else { + getter = shared.NOOP; + } + if (cb && deep) { + const baseGetter = getter; + const depth = deep === true ? Infinity : deep; + getter = () => traverse(baseGetter(), depth); + } + const scope = getCurrentScope(); + const watchHandle = () => { + effect.stop(); + if (scope && scope.active) { + shared.remove(scope.effects, effect); + } + }; + if (once && cb) { + const _cb = cb; + cb = (...args) => { + _cb(...args); + watchHandle(); + }; + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = (immediateFirstRun) => { + if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => shared.hasChanged(v, oldValue[i])) : shared.hasChanged(newValue, oldValue))) { + if (cleanup) { + cleanup(); + } + const currentWatcher = activeWatcher; + activeWatcher = effect; + try { + const args = [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + boundCleanup + ]; + oldValue = newValue; + call ? call(cb, 3, args) : ( + // @ts-expect-error + cb(...args) + ); + } finally { + activeWatcher = currentWatcher; + } + } + } else { + effect.run(); + } + }; + if (augmentJob) { + augmentJob(job); + } + effect = new ReactiveEffect(getter); + effect.scheduler = scheduler ? () => scheduler(job, false) : job; + boundCleanup = (fn) => onWatcherCleanup(fn, false, effect); + cleanup = effect.onStop = () => { + const cleanups = cleanupMap.get(effect); + if (cleanups) { + if (call) { + call(cleanups, 4); + } else { + for (const cleanup2 of cleanups) cleanup2(); + } + cleanupMap.delete(effect); + } + }; + if (cb) { + if (immediate) { + job(true); + } else { + oldValue = effect.run(); + } + } else if (scheduler) { + scheduler(job.bind(null, true), true); + } else { + effect.run(); + } + watchHandle.pause = effect.pause.bind(effect); + watchHandle.resume = effect.resume.bind(effect); + watchHandle.stop = watchHandle; + return watchHandle; +} +function traverse(value, depth = Infinity, seen) { + if (depth <= 0 || !shared.isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + depth--; + if (isRef(value)) { + traverse(value.value, depth, seen); + } else if (shared.isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, seen); + } + } else if (shared.isSet(value) || shared.isMap(value)) { + value.forEach((v) => { + traverse(v, depth, seen); + }); + } else if (shared.isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, seen); + } + for (const key of Object.getOwnPropertySymbols(value)) { + if (Object.prototype.propertyIsEnumerable.call(value, key)) { + traverse(value[key], depth, seen); + } + } + } + return value; +} + +exports.ARRAY_ITERATE_KEY = ARRAY_ITERATE_KEY; +exports.EffectFlags = EffectFlags; +exports.EffectScope = EffectScope; +exports.ITERATE_KEY = ITERATE_KEY; +exports.MAP_KEY_ITERATE_KEY = MAP_KEY_ITERATE_KEY; +exports.ReactiveEffect = ReactiveEffect; +exports.ReactiveFlags = ReactiveFlags; +exports.TrackOpTypes = TrackOpTypes; +exports.TriggerOpTypes = TriggerOpTypes; +exports.WatchErrorCodes = WatchErrorCodes; +exports.computed = computed; +exports.customRef = customRef; +exports.effect = effect; +exports.effectScope = effectScope; +exports.enableTracking = enableTracking; +exports.getCurrentScope = getCurrentScope; +exports.getCurrentWatcher = getCurrentWatcher; +exports.isProxy = isProxy; +exports.isReactive = isReactive; +exports.isReadonly = isReadonly; +exports.isRef = isRef; +exports.isShallow = isShallow; +exports.markRaw = markRaw; +exports.onEffectCleanup = onEffectCleanup; +exports.onScopeDispose = onScopeDispose; +exports.onWatcherCleanup = onWatcherCleanup; +exports.pauseTracking = pauseTracking; +exports.proxyRefs = proxyRefs; +exports.reactive = reactive; +exports.reactiveReadArray = reactiveReadArray; +exports.readonly = readonly; +exports.ref = ref; +exports.resetTracking = resetTracking; +exports.shallowReactive = shallowReactive; +exports.shallowReadArray = shallowReadArray; +exports.shallowReadonly = shallowReadonly; +exports.shallowRef = shallowRef; +exports.stop = stop; +exports.toRaw = toRaw; +exports.toReactive = toReactive; +exports.toReadonly = toReadonly; +exports.toRef = toRef; +exports.toRefs = toRefs; +exports.toValue = toValue; +exports.track = track; +exports.traverse = traverse; +exports.trigger = trigger; +exports.triggerRef = triggerRef; +exports.unref = unref; +exports.watch = watch; diff --git a/node_modules/@vue/reactivity/dist/reactivity.d.ts b/node_modules/@vue/reactivity/dist/reactivity.d.ts new file mode 100644 index 0000000..9be9482 --- /dev/null +++ b/node_modules/@vue/reactivity/dist/reactivity.d.ts @@ -0,0 +1,757 @@ +import { IfAny } from '@vue/shared'; + +export declare enum TrackOpTypes { + GET = "get", + HAS = "has", + ITERATE = "iterate" +} +export declare enum TriggerOpTypes { + SET = "set", + ADD = "add", + DELETE = "delete", + CLEAR = "clear" +} +export declare enum ReactiveFlags { + SKIP = "__v_skip", + IS_REACTIVE = "__v_isReactive", + IS_READONLY = "__v_isReadonly", + IS_SHALLOW = "__v_isShallow", + RAW = "__v_raw", + IS_REF = "__v_isRef" +} + +export type UnwrapNestedRefs<T> = T extends Ref ? T : UnwrapRefSimple<T>; +declare const ReactiveMarkerSymbol: unique symbol; +export interface ReactiveMarker { + [ReactiveMarkerSymbol]?: void; +} +export type Reactive<T> = UnwrapNestedRefs<T> & (T extends readonly any[] ? ReactiveMarker : {}); +/** + * Returns a reactive proxy of the object. + * + * The reactive conversion is "deep": it affects all nested properties. A + * reactive object also deeply unwraps any properties that are refs while + * maintaining reactivity. + * + * @example + * ```js + * const obj = reactive({ count: 0 }) + * ``` + * + * @param target - The source object. + * @see {@link https://vuejs.org/api/reactivity-core.html#reactive} + */ +export declare function reactive<T extends object>(target: T): Reactive<T>; +declare const ShallowReactiveMarker: unique symbol; +export type ShallowReactive<T> = T & { + [ShallowReactiveMarker]?: true; +}; +/** + * Shallow version of {@link reactive}. + * + * Unlike {@link reactive}, there is no deep conversion: only root-level + * properties are reactive for a shallow reactive object. Property values are + * stored and exposed as-is - this also means properties with ref values will + * not be automatically unwrapped. + * + * @example + * ```js + * const state = shallowReactive({ + * foo: 1, + * nested: { + * bar: 2 + * } + * }) + * + * // mutating state's own properties is reactive + * state.foo++ + * + * // ...but does not convert nested objects + * isReactive(state.nested) // false + * + * // NOT reactive + * state.nested.bar++ + * ``` + * + * @param target - The source object. + * @see {@link https://vuejs.org/api/reactivity-advanced.html#shallowreactive} + */ +export declare function shallowReactive<T extends object>(target: T): ShallowReactive<T>; +type Primitive = string | number | boolean | bigint | symbol | undefined | null; +type Builtin = Primitive | Function | Date | Error | RegExp; +export type DeepReadonly<T> = T extends Builtin ? T : T extends Map<infer K, infer V> ? ReadonlyMap<DeepReadonly<K>, DeepReadonly<V>> : T extends ReadonlyMap<infer K, infer V> ? ReadonlyMap<DeepReadonly<K>, DeepReadonly<V>> : T extends WeakMap<infer K, infer V> ? WeakMap<DeepReadonly<K>, DeepReadonly<V>> : T extends Set<infer U> ? ReadonlySet<DeepReadonly<U>> : T extends ReadonlySet<infer U> ? ReadonlySet<DeepReadonly<U>> : T extends WeakSet<infer U> ? WeakSet<DeepReadonly<U>> : T extends Promise<infer U> ? Promise<DeepReadonly<U>> : T extends Ref<infer U, unknown> ? Readonly<Ref<DeepReadonly<U>>> : T extends {} ? { + readonly [K in keyof T]: DeepReadonly<T[K]>; +} : Readonly<T>; +/** + * Takes an object (reactive or plain) or a ref and returns a readonly proxy to + * the original. + * + * A readonly proxy is deep: any nested property accessed will be readonly as + * well. It also has the same ref-unwrapping behavior as {@link reactive}, + * except the unwrapped values will also be made readonly. + * + * @example + * ```js + * const original = reactive({ count: 0 }) + * + * const copy = readonly(original) + * + * watchEffect(() => { + * // works for reactivity tracking + * console.log(copy.count) + * }) + * + * // mutating original will trigger watchers relying on the copy + * original.count++ + * + * // mutating the copy will fail and result in a warning + * copy.count++ // warning! + * ``` + * + * @param target - The source object. + * @see {@link https://vuejs.org/api/reactivity-core.html#readonly} + */ +export declare function readonly<T extends object>(target: T): DeepReadonly<UnwrapNestedRefs<T>>; +/** + * Shallow version of {@link readonly}. + * + * Unlike {@link readonly}, there is no deep conversion: only root-level + * properties are made readonly. Property values are stored and exposed as-is - + * this also means properties with ref values will not be automatically + * unwrapped. + * + * @example + * ```js + * const state = shallowReadonly({ + * foo: 1, + * nested: { + * bar: 2 + * } + * }) + * + * // mutating state's own properties will fail + * state.foo++ + * + * // ...but works on nested objects + * isReadonly(state.nested) // false + * + * // works + * state.nested.bar++ + * ``` + * + * @param target - The source object. + * @see {@link https://vuejs.org/api/reactivity-advanced.html#shallowreadonly} + */ +export declare function shallowReadonly<T extends object>(target: T): Readonly<T>; +/** + * Checks if an object is a proxy created by {@link reactive} or + * {@link shallowReactive} (or {@link ref} in some cases). + * + * @example + * ```js + * isReactive(reactive({})) // => true + * isReactive(readonly(reactive({}))) // => true + * isReactive(ref({}).value) // => true + * isReactive(readonly(ref({})).value) // => true + * isReactive(ref(true)) // => false + * isReactive(shallowRef({}).value) // => false + * isReactive(shallowReactive({})) // => true + * ``` + * + * @param value - The value to check. + * @see {@link https://vuejs.org/api/reactivity-utilities.html#isreactive} + */ +export declare function isReactive(value: unknown): boolean; +/** + * Checks whether the passed value is a readonly object. The properties of a + * readonly object can change, but they can't be assigned directly via the + * passed object. + * + * The proxies created by {@link readonly} and {@link shallowReadonly} are + * both considered readonly, as is a computed ref without a set function. + * + * @param value - The value to check. + * @see {@link https://vuejs.org/api/reactivity-utilities.html#isreadonly} + */ +export declare function isReadonly(value: unknown): boolean; +export declare function isShallow(value: unknown): boolean; +/** + * Checks if an object is a proxy created by {@link reactive}, + * {@link readonly}, {@link shallowReactive} or {@link shallowReadonly}. + * + * @param value - The value to check. + * @see {@link https://vuejs.org/api/reactivity-utilities.html#isproxy} + */ +export declare function isProxy(value: any): boolean; +/** + * Returns the raw, original object of a Vue-created proxy. + * + * `toRaw()` can return the original object from proxies created by + * {@link reactive}, {@link readonly}, {@link shallowReactive} or + * {@link shallowReadonly}. + * + * This is an escape hatch that can be used to temporarily read without + * incurring proxy access / tracking overhead or write without triggering + * changes. It is **not** recommended to hold a persistent reference to the + * original object. Use with caution. + * + * @example + * ```js + * const foo = {} + * const reactiveFoo = reactive(foo) + * + * console.log(toRaw(reactiveFoo) === foo) // true + * ``` + * + * @param observed - The object for which the "raw" value is requested. + * @see {@link https://vuejs.org/api/reactivity-advanced.html#toraw} + */ +export declare function toRaw<T>(observed: T): T; +export type Raw<T> = T & { + [RawSymbol]?: true; +}; +/** + * Marks an object so that it will never be converted to a proxy. Returns the + * object itself. + * + * @example + * ```js + * const foo = markRaw({}) + * console.log(isReactive(reactive(foo))) // false + * + * // also works when nested inside other reactive objects + * const bar = reactive({ foo }) + * console.log(isReactive(bar.foo)) // false + * ``` + * + * **Warning:** `markRaw()` together with the shallow APIs such as + * {@link shallowReactive} allow you to selectively opt-out of the default + * deep reactive/readonly conversion and embed raw, non-proxied objects in your + * state graph. + * + * @param value - The object to be marked as "raw". + * @see {@link https://vuejs.org/api/reactivity-advanced.html#markraw} + */ +export declare function markRaw<T extends object>(value: T): Raw<T>; +/** + * Returns a reactive proxy of the given value (if possible). + * + * If the given value is not an object, the original value itself is returned. + * + * @param value - The value for which a reactive proxy shall be created. + */ +export declare const toReactive: <T extends unknown>(value: T) => T; +/** + * Returns a readonly proxy of the given value (if possible). + * + * If the given value is not an object, the original value itself is returned. + * + * @param value - The value for which a readonly proxy shall be created. + */ +export declare const toReadonly: <T extends unknown>(value: T) => DeepReadonly<T>; + +export type EffectScheduler = (...args: any[]) => any; +export type DebuggerEvent = { + effect: Subscriber; +} & DebuggerEventExtraInfo; +export type DebuggerEventExtraInfo = { + target: object; + type: TrackOpTypes | TriggerOpTypes; + key: any; + newValue?: any; + oldValue?: any; + oldTarget?: Map<any, any> | Set<any>; +}; +export interface DebuggerOptions { + onTrack?: (event: DebuggerEvent) => void; + onTrigger?: (event: DebuggerEvent) => void; +} +export interface ReactiveEffectOptions extends DebuggerOptions { + scheduler?: EffectScheduler; + allowRecurse?: boolean; + onStop?: () => void; +} +export declare enum EffectFlags { + /** + * ReactiveEffect only + */ + ACTIVE = 1, + RUNNING = 2, + TRACKING = 4, + NOTIFIED = 8, + DIRTY = 16, + ALLOW_RECURSE = 32, + PAUSED = 64, + EVALUATED = 128 +} +/** + * Subscriber is a type that tracks (or subscribes to) a list of deps. + */ +interface Subscriber extends DebuggerOptions { +} +export declare class ReactiveEffect<T = any> implements Subscriber, ReactiveEffectOptions { + fn: () => T; + scheduler?: EffectScheduler; + onStop?: () => void; + onTrack?: (event: DebuggerEvent) => void; + onTrigger?: (event: DebuggerEvent) => void; + constructor(fn: () => T); + pause(): void; + resume(): void; + run(): T; + stop(): void; + trigger(): void; + get dirty(): boolean; +} +export interface ReactiveEffectRunner<T = any> { + (): T; + effect: ReactiveEffect; +} +export interface ReactiveEffectRunner<T = any> { + (): T; + effect: ReactiveEffect; +} +export declare function effect<T = any>(fn: () => T, options?: ReactiveEffectOptions): ReactiveEffectRunner<T>; +/** + * Stops the effect associated with the given runner. + * + * @param runner - Association with the effect to stop tracking. + */ +export declare function stop(runner: ReactiveEffectRunner): void; +/** + * Temporarily pauses tracking. + */ +export declare function pauseTracking(): void; +/** + * Re-enables effect tracking (if it was paused). + */ +export declare function enableTracking(): void; +/** + * Resets the previous global effect tracking state. + */ +export declare function resetTracking(): void; +/** + * Registers a cleanup function for the current active effect. + * The cleanup function is called right before the next effect run, or when the + * effect is stopped. + * + * Throws a warning if there is no current active effect. The warning can be + * suppressed by passing `true` to the second argument. + * + * @param fn - the cleanup function to be registered + * @param failSilently - if `true`, will not throw warning when called without + * an active effect. + */ +export declare function onEffectCleanup(fn: () => void, failSilently?: boolean): void; + +declare const ComputedRefSymbol: unique symbol; +declare const WritableComputedRefSymbol: unique symbol; +interface BaseComputedRef<T, S = T> extends Ref<T, S> { + [ComputedRefSymbol]: true; + /** + * @deprecated computed no longer uses effect + */ + effect: ComputedRefImpl; +} +export interface ComputedRef<T = any> extends BaseComputedRef<T> { + readonly value: T; +} +export interface WritableComputedRef<T, S = T> extends BaseComputedRef<T, S> { + [WritableComputedRefSymbol]: true; +} +export type ComputedGetter<T> = (oldValue?: T) => T; +export type ComputedSetter<T> = (newValue: T) => void; +export interface WritableComputedOptions<T, S = T> { + get: ComputedGetter<T>; + set: ComputedSetter<S>; +} +/** + * @private exported by @vue/reactivity for Vue core use, but not exported from + * the main vue package + */ +export declare class ComputedRefImpl<T = any> implements Subscriber { + fn: ComputedGetter<T>; + private readonly setter; + effect: this; + onTrack?: (event: DebuggerEvent) => void; + onTrigger?: (event: DebuggerEvent) => void; + constructor(fn: ComputedGetter<T>, setter: ComputedSetter<T> | undefined, isSSR: boolean); + get value(): T; + set value(newValue: T); +} +/** + * Takes a getter function and returns a readonly reactive ref object for the + * returned value from the getter. It can also take an object with get and set + * functions to create a writable ref object. + * + * @example + * ```js + * // Creating a readonly computed ref: + * const count = ref(1) + * const plusOne = computed(() => count.value + 1) + * + * console.log(plusOne.value) // 2 + * plusOne.value++ // error + * ``` + * + * ```js + * // Creating a writable computed ref: + * const count = ref(1) + * const plusOne = computed({ + * get: () => count.value + 1, + * set: (val) => { + * count.value = val - 1 + * } + * }) + * + * plusOne.value = 1 + * console.log(count.value) // 0 + * ``` + * + * @param getter - Function that produces the next value. + * @param debugOptions - For debugging. See {@link https://vuejs.org/guide/extras/reactivity-in-depth.html#computed-debugging}. + * @see {@link https://vuejs.org/api/reactivity-core.html#computed} + */ +export declare function computed<T>(getter: ComputedGetter<T>, debugOptions?: DebuggerOptions): ComputedRef<T>; +export declare function computed<T, S = T>(options: WritableComputedOptions<T, S>, debugOptions?: DebuggerOptions): WritableComputedRef<T, S>; + +declare const RefSymbol: unique symbol; +declare const RawSymbol: unique symbol; +export interface Ref<T = any, S = T> { + get value(): T; + set value(_: S); + /** + * Type differentiator only. + * We need this to be in public d.ts but don't want it to show up in IDE + * autocomplete, so we use a private Symbol instead. + */ + [RefSymbol]: true; +} +/** + * Checks if a value is a ref object. + * + * @param r - The value to inspect. + * @see {@link https://vuejs.org/api/reactivity-utilities.html#isref} + */ +export declare function isRef<T>(r: Ref<T> | unknown): r is Ref<T>; +/** + * Takes an inner value and returns a reactive and mutable ref object, which + * has a single property `.value` that points to the inner value. + * + * @param value - The object to wrap in the ref. + * @see {@link https://vuejs.org/api/reactivity-core.html#ref} + */ +export declare function ref<T>(value: T): [T] extends [Ref] ? IfAny<T, Ref<T>, T> : Ref<UnwrapRef<T>, UnwrapRef<T> | T>; +export declare function ref<T = any>(): Ref<T | undefined>; +declare const ShallowRefMarker: unique symbol; +export type ShallowRef<T = any, S = T> = Ref<T, S> & { + [ShallowRefMarker]?: true; +}; +/** + * Shallow version of {@link ref}. + * + * @example + * ```js + * const state = shallowRef({ count: 1 }) + * + * // does NOT trigger change + * state.value.count = 2 + * + * // does trigger change + * state.value = { count: 2 } + * ``` + * + * @param value - The "inner value" for the shallow ref. + * @see {@link https://vuejs.org/api/reactivity-advanced.html#shallowref} + */ +export declare function shallowRef<T>(value: T): Ref extends T ? T extends Ref ? IfAny<T, ShallowRef<T>, T> : ShallowRef<T> : ShallowRef<T>; +export declare function shallowRef<T = any>(): ShallowRef<T | undefined>; +/** + * Force trigger effects that depends on a shallow ref. This is typically used + * after making deep mutations to the inner value of a shallow ref. + * + * @example + * ```js + * const shallow = shallowRef({ + * greet: 'Hello, world' + * }) + * + * // Logs "Hello, world" once for the first run-through + * watchEffect(() => { + * console.log(shallow.value.greet) + * }) + * + * // This won't trigger the effect because the ref is shallow + * shallow.value.greet = 'Hello, universe' + * + * // Logs "Hello, universe" + * triggerRef(shallow) + * ``` + * + * @param ref - The ref whose tied effects shall be executed. + * @see {@link https://vuejs.org/api/reactivity-advanced.html#triggerref} + */ +export declare function triggerRef(ref: Ref): void; +export type MaybeRef<T = any> = T | Ref<T> | ShallowRef<T> | WritableComputedRef<T>; +export type MaybeRefOrGetter<T = any> = MaybeRef<T> | ComputedRef<T> | (() => T); +/** + * Returns the inner value if the argument is a ref, otherwise return the + * argument itself. This is a sugar function for + * `val = isRef(val) ? val.value : val`. + * + * @example + * ```js + * function useFoo(x: number | Ref<number>) { + * const unwrapped = unref(x) + * // unwrapped is guaranteed to be number now + * } + * ``` + * + * @param ref - Ref or plain value to be converted into the plain value. + * @see {@link https://vuejs.org/api/reactivity-utilities.html#unref} + */ +export declare function unref<T>(ref: MaybeRef<T> | ComputedRef<T>): T; +/** + * Normalizes values / refs / getters to values. + * This is similar to {@link unref}, except that it also normalizes getters. + * If the argument is a getter, it will be invoked and its return value will + * be returned. + * + * @example + * ```js + * toValue(1) // 1 + * toValue(ref(1)) // 1 + * toValue(() => 1) // 1 + * ``` + * + * @param source - A getter, an existing ref, or a non-function value. + * @see {@link https://vuejs.org/api/reactivity-utilities.html#tovalue} + */ +export declare function toValue<T>(source: MaybeRefOrGetter<T>): T; +/** + * Returns a proxy for the given object that shallowly unwraps properties that + * are refs. If the object already is reactive, it's returned as-is. If not, a + * new reactive proxy is created. + * + * @param objectWithRefs - Either an already-reactive object or a simple object + * that contains refs. + */ +export declare function proxyRefs<T extends object>(objectWithRefs: T): ShallowUnwrapRef<T>; +export type CustomRefFactory<T> = (track: () => void, trigger: () => void) => { + get: () => T; + set: (value: T) => void; +}; +/** + * Creates a customized ref with explicit control over its dependency tracking + * and updates triggering. + * + * @param factory - The function that receives the `track` and `trigger` callbacks. + * @see {@link https://vuejs.org/api/reactivity-advanced.html#customref} + */ +export declare function customRef<T>(factory: CustomRefFactory<T>): Ref<T>; +export type ToRefs<T = any> = { + [K in keyof T]: ToRef<T[K]>; +}; +/** + * Converts a reactive object to a plain object where each property of the + * resulting object is a ref pointing to the corresponding property of the + * original object. Each individual ref is created using {@link toRef}. + * + * @param object - Reactive object to be made into an object of linked refs. + * @see {@link https://vuejs.org/api/reactivity-utilities.html#torefs} + */ +export declare function toRefs<T extends object>(object: T): ToRefs<T>; +export type ToRef<T> = IfAny<T, Ref<T>, [T] extends [Ref] ? T : Ref<T>>; +/** + * Used to normalize values / refs / getters into refs. + * + * @example + * ```js + * // returns existing refs as-is + * toRef(existingRef) + * + * // creates a ref that calls the getter on .value access + * toRef(() => props.foo) + * + * // creates normal refs from non-function values + * // equivalent to ref(1) + * toRef(1) + * ``` + * + * Can also be used to create a ref for a property on a source reactive object. + * The created ref is synced with its source property: mutating the source + * property will update the ref, and vice-versa. + * + * @example + * ```js + * const state = reactive({ + * foo: 1, + * bar: 2 + * }) + * + * const fooRef = toRef(state, 'foo') + * + * // mutating the ref updates the original + * fooRef.value++ + * console.log(state.foo) // 2 + * + * // mutating the original also updates the ref + * state.foo++ + * console.log(fooRef.value) // 3 + * ``` + * + * @param source - A getter, an existing ref, a non-function value, or a + * reactive object to create a property ref from. + * @param [key] - (optional) Name of the property in the reactive object. + * @see {@link https://vuejs.org/api/reactivity-utilities.html#toref} + */ +export declare function toRef<T>(value: T): T extends () => infer R ? Readonly<Ref<R>> : T extends Ref ? T : Ref<UnwrapRef<T>>; +export declare function toRef<T extends object, K extends keyof T>(object: T, key: K): ToRef<T[K]>; +export declare function toRef<T extends object, K extends keyof T>(object: T, key: K, defaultValue: T[K]): ToRef<Exclude<T[K], undefined>>; +/** + * This is a special exported interface for other packages to declare + * additional types that should bail out for ref unwrapping. For example + * \@vue/runtime-dom can declare it like so in its d.ts: + * + * ``` ts + * declare module '@vue/reactivity' { + * export interface RefUnwrapBailTypes { + * runtimeDOMBailTypes: Node | Window + * } + * } + * ``` + */ +export interface RefUnwrapBailTypes { +} +export type ShallowUnwrapRef<T> = { + [K in keyof T]: DistributeRef<T[K]>; +}; +type DistributeRef<T> = T extends Ref<infer V, unknown> ? V : T; +export type UnwrapRef<T> = T extends ShallowRef<infer V, unknown> ? V : T extends Ref<infer V, unknown> ? UnwrapRefSimple<V> : UnwrapRefSimple<T>; +type UnwrapRefSimple<T> = T extends Builtin | Ref | RefUnwrapBailTypes[keyof RefUnwrapBailTypes] | { + [RawSymbol]?: true; +} ? T : T extends Map<infer K, infer V> ? Map<K, UnwrapRefSimple<V>> & UnwrapRef<Omit<T, keyof Map<any, any>>> : T extends WeakMap<infer K, infer V> ? WeakMap<K, UnwrapRefSimple<V>> & UnwrapRef<Omit<T, keyof WeakMap<any, any>>> : T extends Set<infer V> ? Set<UnwrapRefSimple<V>> & UnwrapRef<Omit<T, keyof Set<any>>> : T extends WeakSet<infer V> ? WeakSet<UnwrapRefSimple<V>> & UnwrapRef<Omit<T, keyof WeakSet<any>>> : T extends ReadonlyArray<any> ? { + [K in keyof T]: UnwrapRefSimple<T[K]>; +} : T extends object & { + [ShallowReactiveMarker]?: never; +} ? { + [P in keyof T]: P extends symbol ? T[P] : UnwrapRef<T[P]>; +} : T; + +export declare const ITERATE_KEY: unique symbol; +export declare const MAP_KEY_ITERATE_KEY: unique symbol; +export declare const ARRAY_ITERATE_KEY: unique symbol; +/** + * Tracks access to a reactive property. + * + * This will check which effect is running at the moment and record it as dep + * which records all effects that depend on the reactive property. + * + * @param target - Object holding the reactive property. + * @param type - Defines the type of access to the reactive property. + * @param key - Identifier of the reactive property to track. + */ +export declare function track(target: object, type: TrackOpTypes, key: unknown): void; +/** + * Finds all deps associated with the target (or a specific property) and + * triggers the effects stored within. + * + * @param target - The reactive object. + * @param type - Defines the type of the operation that needs to trigger effects. + * @param key - Can be used to target a specific reactive property in the target object. + */ +export declare function trigger(target: object, type: TriggerOpTypes, key?: unknown, newValue?: unknown, oldValue?: unknown, oldTarget?: Map<unknown, unknown> | Set<unknown>): void; + +export declare class EffectScope { + detached: boolean; + private _isPaused; + constructor(detached?: boolean); + get active(): boolean; + pause(): void; + /** + * Resumes the effect scope, including all child scopes and effects. + */ + resume(): void; + run<T>(fn: () => T): T | undefined; + prevScope: EffectScope | undefined; + stop(fromParent?: boolean): void; +} +/** + * Creates an effect scope object which can capture the reactive effects (i.e. + * computed and watchers) created within it so that these effects can be + * disposed together. For detailed use cases of this API, please consult its + * corresponding {@link https://github.com/vuejs/rfcs/blob/master/active-rfcs/0041-reactivity-effect-scope.md | RFC}. + * + * @param detached - Can be used to create a "detached" effect scope. + * @see {@link https://vuejs.org/api/reactivity-advanced.html#effectscope} + */ +export declare function effectScope(detached?: boolean): EffectScope; +/** + * Returns the current active effect scope if there is one. + * + * @see {@link https://vuejs.org/api/reactivity-advanced.html#getcurrentscope} + */ +export declare function getCurrentScope(): EffectScope | undefined; +/** + * Registers a dispose callback on the current active effect scope. The + * callback will be invoked when the associated effect scope is stopped. + * + * @param fn - The callback function to attach to the scope's cleanup. + * @see {@link https://vuejs.org/api/reactivity-advanced.html#onscopedispose} + */ +export declare function onScopeDispose(fn: () => void, failSilently?: boolean): void; + +/** + * Track array iteration and return: + * - if input is reactive: a cloned raw array with reactive values + * - if input is non-reactive or shallowReactive: the original raw array + */ +export declare function reactiveReadArray<T>(array: T[]): T[]; +/** + * Track array iteration and return raw array + */ +export declare function shallowReadArray<T>(arr: T[]): T[]; + +export declare enum WatchErrorCodes { + WATCH_GETTER = 2, + WATCH_CALLBACK = 3, + WATCH_CLEANUP = 4 +} +export type WatchEffect = (onCleanup: OnCleanup) => void; +export type WatchSource<T = any> = Ref<T, any> | ComputedRef<T> | (() => T); +export type WatchCallback<V = any, OV = any> = (value: V, oldValue: OV, onCleanup: OnCleanup) => any; +export type OnCleanup = (cleanupFn: () => void) => void; +export interface WatchOptions<Immediate = boolean> extends DebuggerOptions { + immediate?: Immediate; + deep?: boolean | number; + once?: boolean; + scheduler?: WatchScheduler; + onWarn?: (msg: string, ...args: any[]) => void; +} +export type WatchStopHandle = () => void; +export interface WatchHandle extends WatchStopHandle { + pause: () => void; + resume: () => void; + stop: () => void; +} +export type WatchScheduler = (job: () => void, isFirstRun: boolean) => void; +/** + * Returns the current active effect if there is one. + */ +export declare function getCurrentWatcher(): ReactiveEffect<any> | undefined; +/** + * Registers a cleanup callback on the current active effect. This + * registered cleanup callback will be invoked right before the + * associated effect re-runs. + * + * @param cleanupFn - The callback function to attach to the effect's cleanup. + * @param failSilently - if `true`, will not throw warning when called without + * an active effect. + * @param owner - The effect that this cleanup function should be attached to. + * By default, the current active effect. + */ +export declare function onWatcherCleanup(cleanupFn: () => void, failSilently?: boolean, owner?: ReactiveEffect | undefined): void; +export declare function watch(source: WatchSource | WatchSource[] | WatchEffect | object, cb?: WatchCallback | null, options?: WatchOptions): WatchHandle; +export declare function traverse(value: unknown, depth?: number, seen?: Set<unknown>): unknown; + + diff --git a/node_modules/@vue/reactivity/dist/reactivity.esm-browser.js b/node_modules/@vue/reactivity/dist/reactivity.esm-browser.js new file mode 100644 index 0000000..10a0893 --- /dev/null +++ b/node_modules/@vue/reactivity/dist/reactivity.esm-browser.js @@ -0,0 +1,1955 @@ +/** +* @vue/reactivity v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function makeMap(str) { + const map = /* @__PURE__ */ Object.create(null); + for (const key of str.split(",")) map[key] = 1; + return (val) => val in map; +} + +const EMPTY_OBJ = Object.freeze({}) ; +const NOOP = () => { +}; +const extend = Object.assign; +const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +const hasOwnProperty$1 = Object.prototype.hasOwnProperty; +const hasOwn = (val, key) => hasOwnProperty$1.call(val, key); +const isArray = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isFunction = (val) => typeof val === "function"; +const isString = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject = (val) => val !== null && typeof val === "object"; +const objectToString = Object.prototype.toString; +const toTypeString = (value) => objectToString.call(value); +const toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +const isPlainObject = (val) => toTypeString(val) === "[object Object]"; +const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const hasChanged = (value, oldValue) => !Object.is(value, oldValue); +const def = (obj, key, value, writable = false) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + writable, + value + }); +}; + +function warn(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); +} + +let activeEffectScope; +class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal track `on` calls, allow `on` call multiple times + */ + this._on = 0; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this._isPaused = false; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + pause() { + if (this._active) { + this._isPaused = true; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].pause(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].pause(); + } + } + } + /** + * Resumes the effect scope, including all child scopes and effects. + */ + resume() { + if (this._active) { + if (this._isPaused) { + this._isPaused = false; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].resume(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].resume(); + } + } + } + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else { + warn(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + if (++this._on === 1) { + this.prevScope = activeEffectScope; + activeEffectScope = this; + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + if (this._on > 0 && --this._on === 0) { + activeEffectScope = this.prevScope; + this.prevScope = void 0; + } + } + stop(fromParent) { + if (this._active) { + this._active = false; + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + this.effects.length = 0; + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + this.cleanups.length = 0; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + this.scopes.length = 0; + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + } + } +} +function effectScope(detached) { + return new EffectScope(detached); +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn, failSilently = false) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else if (!failSilently) { + warn( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } +} + +let activeSub; +const EffectFlags = { + "ACTIVE": 1, + "1": "ACTIVE", + "RUNNING": 2, + "2": "RUNNING", + "TRACKING": 4, + "4": "TRACKING", + "NOTIFIED": 8, + "8": "NOTIFIED", + "DIRTY": 16, + "16": "DIRTY", + "ALLOW_RECURSE": 32, + "32": "ALLOW_RECURSE", + "PAUSED": 64, + "64": "PAUSED", + "EVALUATED": 128, + "128": "EVALUATED" +}; +const pausedQueueEffects = /* @__PURE__ */ new WeakSet(); +class ReactiveEffect { + constructor(fn) { + this.fn = fn; + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 1 | 4; + /** + * @internal + */ + this.next = void 0; + /** + * @internal + */ + this.cleanup = void 0; + this.scheduler = void 0; + if (activeEffectScope && activeEffectScope.active) { + activeEffectScope.effects.push(this); + } + } + pause() { + this.flags |= 64; + } + resume() { + if (this.flags & 64) { + this.flags &= -65; + if (pausedQueueEffects.has(this)) { + pausedQueueEffects.delete(this); + this.trigger(); + } + } + } + /** + * @internal + */ + notify() { + if (this.flags & 2 && !(this.flags & 32)) { + return; + } + if (!(this.flags & 8)) { + batch(this); + } + } + run() { + if (!(this.flags & 1)) { + return this.fn(); + } + this.flags |= 2; + cleanupEffect(this); + prepareDeps(this); + const prevEffect = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = this; + shouldTrack = true; + try { + return this.fn(); + } finally { + if (activeSub !== this) { + warn( + "Active effect was not restored correctly - this is likely a Vue internal bug." + ); + } + cleanupDeps(this); + activeSub = prevEffect; + shouldTrack = prevShouldTrack; + this.flags &= -3; + } + } + stop() { + if (this.flags & 1) { + for (let link = this.deps; link; link = link.nextDep) { + removeSub(link); + } + this.deps = this.depsTail = void 0; + cleanupEffect(this); + this.onStop && this.onStop(); + this.flags &= -2; + } + } + trigger() { + if (this.flags & 64) { + pausedQueueEffects.add(this); + } else if (this.scheduler) { + this.scheduler(); + } else { + this.runIfDirty(); + } + } + /** + * @internal + */ + runIfDirty() { + if (isDirty(this)) { + this.run(); + } + } + get dirty() { + return isDirty(this); + } +} +let batchDepth = 0; +let batchedSub; +let batchedComputed; +function batch(sub, isComputed = false) { + sub.flags |= 8; + if (isComputed) { + sub.next = batchedComputed; + batchedComputed = sub; + return; + } + sub.next = batchedSub; + batchedSub = sub; +} +function startBatch() { + batchDepth++; +} +function endBatch() { + if (--batchDepth > 0) { + return; + } + if (batchedComputed) { + let e = batchedComputed; + batchedComputed = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + e = next; + } + } + let error; + while (batchedSub) { + let e = batchedSub; + batchedSub = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + if (e.flags & 1) { + try { + ; + e.trigger(); + } catch (err) { + if (!error) error = err; + } + } + e = next; + } + } + if (error) throw error; +} +function prepareDeps(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + link.version = -1; + link.prevActiveLink = link.dep.activeLink; + link.dep.activeLink = link; + } +} +function cleanupDeps(sub) { + let head; + let tail = sub.depsTail; + let link = tail; + while (link) { + const prev = link.prevDep; + if (link.version === -1) { + if (link === tail) tail = prev; + removeSub(link); + removeDep(link); + } else { + head = link; + } + link.dep.activeLink = link.prevActiveLink; + link.prevActiveLink = void 0; + link = prev; + } + sub.deps = head; + sub.depsTail = tail; +} +function isDirty(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) { + return true; + } + } + if (sub._dirty) { + return true; + } + return false; +} +function refreshComputed(computed) { + if (computed.flags & 4 && !(computed.flags & 16)) { + return; + } + computed.flags &= -17; + if (computed.globalVersion === globalVersion) { + return; + } + computed.globalVersion = globalVersion; + if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) { + return; + } + computed.flags |= 2; + const dep = computed.dep; + const prevSub = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = computed; + shouldTrack = true; + try { + prepareDeps(computed); + const value = computed.fn(computed._value); + if (dep.version === 0 || hasChanged(value, computed._value)) { + computed.flags |= 128; + computed._value = value; + dep.version++; + } + } catch (err) { + dep.version++; + throw err; + } finally { + activeSub = prevSub; + shouldTrack = prevShouldTrack; + cleanupDeps(computed); + computed.flags &= -3; + } +} +function removeSub(link, soft = false) { + const { dep, prevSub, nextSub } = link; + if (prevSub) { + prevSub.nextSub = nextSub; + link.prevSub = void 0; + } + if (nextSub) { + nextSub.prevSub = prevSub; + link.nextSub = void 0; + } + if (dep.subsHead === link) { + dep.subsHead = nextSub; + } + if (dep.subs === link) { + dep.subs = prevSub; + if (!prevSub && dep.computed) { + dep.computed.flags &= -5; + for (let l = dep.computed.deps; l; l = l.nextDep) { + removeSub(l, true); + } + } + } + if (!soft && !--dep.sc && dep.map) { + dep.map.delete(dep.key); + } +} +function removeDep(link) { + const { prevDep, nextDep } = link; + if (prevDep) { + prevDep.nextDep = nextDep; + link.prevDep = void 0; + } + if (nextDep) { + nextDep.prevDep = prevDep; + link.nextDep = void 0; + } +} +function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const e = new ReactiveEffect(fn); + if (options) { + extend(e, options); + } + try { + e.run(); + } catch (err) { + e.stop(); + throw err; + } + const runner = e.run.bind(e); + runner.effect = e; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +let shouldTrack = true; +const trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function enableTracking() { + trackStack.push(shouldTrack); + shouldTrack = true; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function onEffectCleanup(fn, failSilently = false) { + if (activeSub instanceof ReactiveEffect) { + activeSub.cleanup = fn; + } else if (!failSilently) { + warn( + `onEffectCleanup() was called when there was no active effect to associate with.` + ); + } +} +function cleanupEffect(e) { + const { cleanup } = e; + e.cleanup = void 0; + if (cleanup) { + const prevSub = activeSub; + activeSub = void 0; + try { + cleanup(); + } finally { + activeSub = prevSub; + } + } +} + +let globalVersion = 0; +class Link { + constructor(sub, dep) { + this.sub = sub; + this.dep = dep; + this.version = dep.version; + this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; + } +} +class Dep { + // TODO isolatedDeclarations "__v_skip" + constructor(computed) { + this.computed = computed; + this.version = 0; + /** + * Link between this dep and the current active effect + */ + this.activeLink = void 0; + /** + * Doubly linked list representing the subscribing effects (tail) + */ + this.subs = void 0; + /** + * For object property deps cleanup + */ + this.map = void 0; + this.key = void 0; + /** + * Subscriber counter + */ + this.sc = 0; + /** + * @internal + */ + this.__v_skip = true; + { + this.subsHead = void 0; + } + } + track(debugInfo) { + if (!activeSub || !shouldTrack || activeSub === this.computed) { + return; + } + let link = this.activeLink; + if (link === void 0 || link.sub !== activeSub) { + link = this.activeLink = new Link(activeSub, this); + if (!activeSub.deps) { + activeSub.deps = activeSub.depsTail = link; + } else { + link.prevDep = activeSub.depsTail; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + } + addSub(link); + } else if (link.version === -1) { + link.version = this.version; + if (link.nextDep) { + const next = link.nextDep; + next.prevDep = link.prevDep; + if (link.prevDep) { + link.prevDep.nextDep = next; + } + link.prevDep = activeSub.depsTail; + link.nextDep = void 0; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + if (activeSub.deps === link) { + activeSub.deps = next; + } + } + } + if (activeSub.onTrack) { + activeSub.onTrack( + extend( + { + effect: activeSub + }, + debugInfo + ) + ); + } + return link; + } + trigger(debugInfo) { + this.version++; + globalVersion++; + this.notify(debugInfo); + } + notify(debugInfo) { + startBatch(); + try { + if (true) { + for (let head = this.subsHead; head; head = head.nextSub) { + if (head.sub.onTrigger && !(head.sub.flags & 8)) { + head.sub.onTrigger( + extend( + { + effect: head.sub + }, + debugInfo + ) + ); + } + } + } + for (let link = this.subs; link; link = link.prevSub) { + if (link.sub.notify()) { + ; + link.sub.dep.notify(); + } + } + } finally { + endBatch(); + } + } +} +function addSub(link) { + link.dep.sc++; + if (link.sub.flags & 4) { + const computed = link.dep.computed; + if (computed && !link.dep.subs) { + computed.flags |= 4 | 16; + for (let l = computed.deps; l; l = l.nextDep) { + addSub(l); + } + } + const currentTail = link.dep.subs; + if (currentTail !== link) { + link.prevSub = currentTail; + if (currentTail) currentTail.nextSub = link; + } + if (link.dep.subsHead === void 0) { + link.dep.subsHead = link; + } + link.dep.subs = link; + } +} +const targetMap = /* @__PURE__ */ new WeakMap(); +const ITERATE_KEY = Symbol( + "Object iterate" +); +const MAP_KEY_ITERATE_KEY = Symbol( + "Map keys iterate" +); +const ARRAY_ITERATE_KEY = Symbol( + "Array iterate" +); +function track(target, type, key) { + if (shouldTrack && activeSub) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = new Dep()); + dep.map = depsMap; + dep.key = key; + } + { + dep.track({ + target, + type, + key + }); + } + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + globalVersion++; + return; + } + const run = (dep) => { + if (dep) { + { + dep.trigger({ + target, + type, + key, + newValue, + oldValue, + oldTarget + }); + } + } + }; + startBatch(); + if (type === "clear") { + depsMap.forEach(run); + } else { + const targetIsArray = isArray(target); + const isArrayIndex = targetIsArray && isIntegerKey(key); + if (targetIsArray && key === "length") { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) { + run(dep); + } + }); + } else { + if (key !== void 0 || depsMap.has(void 0)) { + run(depsMap.get(key)); + } + if (isArrayIndex) { + run(depsMap.get(ARRAY_ITERATE_KEY)); + } + switch (type) { + case "add": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isArrayIndex) { + run(depsMap.get("length")); + } + break; + case "delete": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + run(depsMap.get(ITERATE_KEY)); + } + break; + } + } + } + endBatch(); +} +function getDepFromReactive(object, key) { + const depMap = targetMap.get(object); + return depMap && depMap.get(key); +} + +function reactiveReadArray(array) { + const raw = toRaw(array); + if (raw === array) return raw; + track(raw, "iterate", ARRAY_ITERATE_KEY); + return isShallow(array) ? raw : raw.map(toReactive); +} +function shallowReadArray(arr) { + track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY); + return arr; +} +const arrayInstrumentations = { + __proto__: null, + [Symbol.iterator]() { + return iterator(this, Symbol.iterator, toReactive); + }, + concat(...args) { + return reactiveReadArray(this).concat( + ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x) + ); + }, + entries() { + return iterator(this, "entries", (value) => { + value[1] = toReactive(value[1]); + return value; + }); + }, + every(fn, thisArg) { + return apply(this, "every", fn, thisArg, void 0, arguments); + }, + filter(fn, thisArg) { + return apply(this, "filter", fn, thisArg, (v) => v.map(toReactive), arguments); + }, + find(fn, thisArg) { + return apply(this, "find", fn, thisArg, toReactive, arguments); + }, + findIndex(fn, thisArg) { + return apply(this, "findIndex", fn, thisArg, void 0, arguments); + }, + findLast(fn, thisArg) { + return apply(this, "findLast", fn, thisArg, toReactive, arguments); + }, + findLastIndex(fn, thisArg) { + return apply(this, "findLastIndex", fn, thisArg, void 0, arguments); + }, + // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement + forEach(fn, thisArg) { + return apply(this, "forEach", fn, thisArg, void 0, arguments); + }, + includes(...args) { + return searchProxy(this, "includes", args); + }, + indexOf(...args) { + return searchProxy(this, "indexOf", args); + }, + join(separator) { + return reactiveReadArray(this).join(separator); + }, + // keys() iterator only reads `length`, no optimisation required + lastIndexOf(...args) { + return searchProxy(this, "lastIndexOf", args); + }, + map(fn, thisArg) { + return apply(this, "map", fn, thisArg, void 0, arguments); + }, + pop() { + return noTracking(this, "pop"); + }, + push(...args) { + return noTracking(this, "push", args); + }, + reduce(fn, ...args) { + return reduce(this, "reduce", fn, args); + }, + reduceRight(fn, ...args) { + return reduce(this, "reduceRight", fn, args); + }, + shift() { + return noTracking(this, "shift"); + }, + // slice could use ARRAY_ITERATE but also seems to beg for range tracking + some(fn, thisArg) { + return apply(this, "some", fn, thisArg, void 0, arguments); + }, + splice(...args) { + return noTracking(this, "splice", args); + }, + toReversed() { + return reactiveReadArray(this).toReversed(); + }, + toSorted(comparer) { + return reactiveReadArray(this).toSorted(comparer); + }, + toSpliced(...args) { + return reactiveReadArray(this).toSpliced(...args); + }, + unshift(...args) { + return noTracking(this, "unshift", args); + }, + values() { + return iterator(this, "values", toReactive); + } +}; +function iterator(self, method, wrapValue) { + const arr = shallowReadArray(self); + const iter = arr[method](); + if (arr !== self && !isShallow(self)) { + iter._next = iter.next; + iter.next = () => { + const result = iter._next(); + if (result.value) { + result.value = wrapValue(result.value); + } + return result; + }; + } + return iter; +} +const arrayProto = Array.prototype; +function apply(self, method, fn, thisArg, wrappedRetFn, args) { + const arr = shallowReadArray(self); + const needsWrap = arr !== self && !isShallow(self); + const methodFn = arr[method]; + if (methodFn !== arrayProto[method]) { + const result2 = methodFn.apply(self, args); + return needsWrap ? toReactive(result2) : result2; + } + let wrappedFn = fn; + if (arr !== self) { + if (needsWrap) { + wrappedFn = function(item, index) { + return fn.call(this, toReactive(item), index, self); + }; + } else if (fn.length > 2) { + wrappedFn = function(item, index) { + return fn.call(this, item, index, self); + }; + } + } + const result = methodFn.call(arr, wrappedFn, thisArg); + return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result; +} +function reduce(self, method, fn, args) { + const arr = shallowReadArray(self); + let wrappedFn = fn; + if (arr !== self) { + if (!isShallow(self)) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, toReactive(item), index, self); + }; + } else if (fn.length > 3) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, item, index, self); + }; + } + } + return arr[method](wrappedFn, ...args); +} +function searchProxy(self, method, args) { + const arr = toRaw(self); + track(arr, "iterate", ARRAY_ITERATE_KEY); + const res = arr[method](...args); + if ((res === -1 || res === false) && isProxy(args[0])) { + args[0] = toRaw(args[0]); + return arr[method](...args); + } + return res; +} +function noTracking(self, method, args = []) { + pauseTracking(); + startBatch(); + const res = toRaw(self)[method].apply(self, args); + endBatch(); + resetTracking(); + return res; +} + +const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); +const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) +); +function hasOwnProperty(key) { + if (!isSymbol(key)) key = String(key); + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +class BaseReactiveHandler { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + if (key === "__v_skip") return target["__v_skip"]; + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the receiver is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + let fn; + if (targetIsArray && (fn = arrayInstrumentations[key])) { + return fn; + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get( + target, + key, + // if this is a proxy wrapping a ref, return methods using the raw ref + // as receiver so that we don't have to call `toRaw` on the ref in all + // its class methods + isRef(target) ? target : receiver + ); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +} +class MutableReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set( + target, + key, + value, + isRef(target) ? target : receiver + ); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +} +class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + { + warn( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + { + warn( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } +} +const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); +const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); +const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true); +const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + +const toShallow = (value) => value; +const getProto = (v) => Reflect.getPrototypeOf(v); +function createIterableMethod(method, isReadonly2, isShallow2) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + { + const key = args[0] ? `on key "${args[0]}" ` : ``; + warn( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations(readonly, shallow) { + const instrumentations = { + get(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has } = getProto(rawTarget); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + if (has.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } + }, + get size() { + const target = this["__v_raw"]; + !readonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); + }, + has(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); + }, + forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + !readonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + } + }; + extend( + instrumentations, + readonly ? { + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear") + } : { + add(value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; + }, + set(key, value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + const oldValue = get.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; + }, + delete(key) { + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + const oldValue = get ? get.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + }, + clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = isMap(target) ? new Map(target) : new Set(target) ; + const result = target.clear(); + if (hadItems) { + trigger( + target, + "clear", + void 0, + void 0, + oldTarget + ); + } + return result; + } + } + ); + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator + ]; + iteratorMethods.forEach((method) => { + instrumentations[method] = createIterableMethod(method, readonly, shallow); + }); + return instrumentations; +} +function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = createInstrumentations(isReadonly2, shallow); + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) +}; +const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) +}; +const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) +}; +const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) +}; +function checkIdentityKeys(target, has, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has.call(target, rawKey)) { + const type = toRawType(target); + warn( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } +} + +const reactiveMap = /* @__PURE__ */ new WeakMap(); +const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +const readonlyMap = /* @__PURE__ */ new WeakMap(); +const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + { + warn( + `value cannot be made ${isReadonly2 ? "readonly" : "reactive"}: ${String( + target + )}` + ); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function isProxy(value) { + return value ? !!value["__v_raw"] : false; +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + if (!hasOwn(value, "__v_skip") && Object.isExtensible(value)) { + def(value, "__v_skip", true); + } + return value; +} +const toReactive = (value) => isObject(value) ? reactive(value) : value; +const toReadonly = (value) => isObject(value) ? readonly(value) : value; + +function isRef(r) { + return r ? r["__v_isRef"] === true : false; +} +function ref(value) { + return createRef(value, false); +} +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +class RefImpl { + constructor(value, isShallow2) { + this.dep = new Dep(); + this["__v_isRef"] = true; + this["__v_isShallow"] = false; + this._rawValue = isShallow2 ? value : toRaw(value); + this._value = isShallow2 ? value : toReactive(value); + this["__v_isShallow"] = isShallow2; + } + get value() { + { + this.dep.track({ + target: this, + type: "get", + key: "value" + }); + } + return this._value; + } + set value(newValue) { + const oldValue = this._rawValue; + const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue); + newValue = useDirectValue ? newValue : toRaw(newValue); + if (hasChanged(newValue, oldValue)) { + this._rawValue = newValue; + this._value = useDirectValue ? newValue : toReactive(newValue); + { + this.dep.trigger({ + target: this, + type: "set", + key: "value", + newValue, + oldValue + }); + } + } + } +} +function triggerRef(ref2) { + if (ref2.dep) { + { + ref2.dep.trigger({ + target: ref2, + type: "set", + key: "value", + newValue: ref2._value + }); + } + } +} +function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return isFunction(source) ? source() : unref(source); +} +const shallowUnwrapHandlers = { + get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +class CustomRefImpl { + constructor(factory) { + this["__v_isRef"] = true; + this._value = void 0; + const dep = this.dep = new Dep(); + const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep)); + this._get = get; + this._set = set; + } + get value() { + return this._value = this._get(); + } + set value(newVal) { + this._set(newVal); + } +} +function customRef(factory) { + return new CustomRefImpl(factory); +} +function toRefs(object) { + if (!isProxy(object)) { + warn(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this["__v_isRef"] = true; + this._value = void 0; + } + get value() { + const val = this._object[this._key]; + return this._value = val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } +} +class GetterRefImpl { + constructor(_getter) { + this._getter = _getter; + this["__v_isRef"] = true; + this["__v_isReadonly"] = true; + this._value = void 0; + } + get value() { + return this._value = this._getter(); + } +} +function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (isFunction(source)) { + return new GetterRefImpl(source); + } else if (isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); +} + +class ComputedRefImpl { + constructor(fn, setter, isSSR) { + this.fn = fn; + this.setter = setter; + /** + * @internal + */ + this._value = void 0; + /** + * @internal + */ + this.dep = new Dep(this); + /** + * @internal + */ + this.__v_isRef = true; + // TODO isolatedDeclarations "__v_isReadonly" + // A computed is also a subscriber that tracks other deps + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 16; + /** + * @internal + */ + this.globalVersion = globalVersion - 1; + /** + * @internal + */ + this.next = void 0; + // for backwards compat + this.effect = this; + this["__v_isReadonly"] = !setter; + this.isSSR = isSSR; + } + /** + * @internal + */ + notify() { + this.flags |= 16; + if (!(this.flags & 8) && // avoid infinite self recursion + activeSub !== this) { + batch(this, true); + return true; + } + } + get value() { + const link = this.dep.track({ + target: this, + type: "get", + key: "value" + }) ; + refreshComputed(this); + if (link) { + link.version = this.dep.version; + } + return this._value; + } + set value(newValue) { + if (this.setter) { + this.setter(newValue); + } else { + warn("Write operation failed: computed value is readonly"); + } + } +} +function computed(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + if (isFunction(getterOrOptions)) { + getter = getterOrOptions; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, isSSR); + if (debugOptions && !isSSR) { + cRef.onTrack = debugOptions.onTrack; + cRef.onTrigger = debugOptions.onTrigger; + } + return cRef; +} + +const TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" +}; +const TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" +}; +const ReactiveFlags = { + "SKIP": "__v_skip", + "IS_REACTIVE": "__v_isReactive", + "IS_READONLY": "__v_isReadonly", + "IS_SHALLOW": "__v_isShallow", + "RAW": "__v_raw", + "IS_REF": "__v_isRef" +}; + +const WatchErrorCodes = { + "WATCH_GETTER": 2, + "2": "WATCH_GETTER", + "WATCH_CALLBACK": 3, + "3": "WATCH_CALLBACK", + "WATCH_CLEANUP": 4, + "4": "WATCH_CLEANUP" +}; +const INITIAL_WATCHER_VALUE = {}; +const cleanupMap = /* @__PURE__ */ new WeakMap(); +let activeWatcher = void 0; +function getCurrentWatcher() { + return activeWatcher; +} +function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) { + if (owner) { + let cleanups = cleanupMap.get(owner); + if (!cleanups) cleanupMap.set(owner, cleanups = []); + cleanups.push(cleanupFn); + } else if (!failSilently) { + warn( + `onWatcherCleanup() was called when there was no active watcher to associate with.` + ); + } +} +function watch(source, cb, options = EMPTY_OBJ) { + const { immediate, deep, once, scheduler, augmentJob, call } = options; + const warnInvalidSource = (s) => { + (options.onWarn || warn)( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const reactiveGetter = (source2) => { + if (deep) return source2; + if (isShallow(source2) || deep === false || deep === 0) + return traverse(source2, 1); + return traverse(source2); + }; + let effect; + let getter; + let cleanup; + let boundCleanup; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return reactiveGetter(s); + } else if (isFunction(s)) { + return call ? call(s, 2) : s(); + } else { + warnInvalidSource(s); + } + }); + } else if (isFunction(source)) { + if (cb) { + getter = call ? () => call(source, 2) : source; + } else { + getter = () => { + if (cleanup) { + pauseTracking(); + try { + cleanup(); + } finally { + resetTracking(); + } + } + const currentEffect = activeWatcher; + activeWatcher = effect; + try { + return call ? call(source, 3, [boundCleanup]) : source(boundCleanup); + } finally { + activeWatcher = currentEffect; + } + }; + } + } else { + getter = NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + const depth = deep === true ? Infinity : deep; + getter = () => traverse(baseGetter(), depth); + } + const scope = getCurrentScope(); + const watchHandle = () => { + effect.stop(); + if (scope && scope.active) { + remove(scope.effects, effect); + } + }; + if (once && cb) { + const _cb = cb; + cb = (...args) => { + _cb(...args); + watchHandle(); + }; + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = (immediateFirstRun) => { + if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) { + if (cleanup) { + cleanup(); + } + const currentWatcher = activeWatcher; + activeWatcher = effect; + try { + const args = [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + boundCleanup + ]; + oldValue = newValue; + call ? call(cb, 3, args) : ( + // @ts-expect-error + cb(...args) + ); + } finally { + activeWatcher = currentWatcher; + } + } + } else { + effect.run(); + } + }; + if (augmentJob) { + augmentJob(job); + } + effect = new ReactiveEffect(getter); + effect.scheduler = scheduler ? () => scheduler(job, false) : job; + boundCleanup = (fn) => onWatcherCleanup(fn, false, effect); + cleanup = effect.onStop = () => { + const cleanups = cleanupMap.get(effect); + if (cleanups) { + if (call) { + call(cleanups, 4); + } else { + for (const cleanup2 of cleanups) cleanup2(); + } + cleanupMap.delete(effect); + } + }; + { + effect.onTrack = options.onTrack; + effect.onTrigger = options.onTrigger; + } + if (cb) { + if (immediate) { + job(true); + } else { + oldValue = effect.run(); + } + } else if (scheduler) { + scheduler(job.bind(null, true), true); + } else { + effect.run(); + } + watchHandle.pause = effect.pause.bind(effect); + watchHandle.resume = effect.resume.bind(effect); + watchHandle.stop = watchHandle; + return watchHandle; +} +function traverse(value, depth = Infinity, seen) { + if (depth <= 0 || !isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + depth--; + if (isRef(value)) { + traverse(value.value, depth, seen); + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, depth, seen); + }); + } else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, seen); + } + for (const key of Object.getOwnPropertySymbols(value)) { + if (Object.prototype.propertyIsEnumerable.call(value, key)) { + traverse(value[key], depth, seen); + } + } + } + return value; +} + +export { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch }; diff --git a/node_modules/@vue/reactivity/dist/reactivity.esm-browser.prod.js b/node_modules/@vue/reactivity/dist/reactivity.esm-browser.prod.js new file mode 100644 index 0000000..2ef192c --- /dev/null +++ b/node_modules/@vue/reactivity/dist/reactivity.esm-browser.prod.js @@ -0,0 +1,5 @@ +/** +* @vue/reactivity v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let e,t,i,s,r;let n={},l=()=>{},o=Object.assign,a=Object.prototype.hasOwnProperty,u=(e,t)=>a.call(e,t),h=Array.isArray,c=e=>"[object Map]"===_(e),f=e=>"symbol"==typeof e,p=e=>null!==e&&"object"==typeof e,d=Object.prototype.toString,_=e=>d.call(e),v=e=>"string"==typeof e&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,g=(e,t)=>!Object.is(e,t);class y{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=e,!t&&e&&(this.index=(e.scopes||(e.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){let e,t;if(this._isPaused=!0,this.scopes)for(e=0,t=this.scopes.length;e<t;e++)this.scopes[e].pause();for(e=0,t=this.effects.length;e<t;e++)this.effects[e].pause()}}resume(){if(this._active&&this._isPaused){let e,t;if(this._isPaused=!1,this.scopes)for(e=0,t=this.scopes.length;e<t;e++)this.scopes[e].resume();for(e=0,t=this.effects.length;e<t;e++)this.effects[e].resume()}}run(t){if(this._active){let i=e;try{return e=this,t()}finally{e=i}}}on(){1==++this._on&&(this.prevScope=e,e=this)}off(){this._on>0&&0==--this._on&&(e=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){let t,i;for(t=0,this._active=!1,i=this.effects.length;t<i;t++)this.effects[t].stop();for(t=0,this.effects.length=0,i=this.cleanups.length;t<i;t++)this.cleanups[t]();if(this.cleanups.length=0,this.scopes){for(t=0,i=this.scopes.length;t<i;t++)this.scopes[t].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!e){let e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.parent=void 0}}}function R(e){return new y(e)}function b(){return e}function w(t,i=!1){e&&e.cleanups.push(t)}let S={ACTIVE:1,1:"ACTIVE",RUNNING:2,2:"RUNNING",TRACKING:4,4:"TRACKING",NOTIFIED:8,8:"NOTIFIED",DIRTY:16,16:"DIRTY",ALLOW_RECURSE:32,32:"ALLOW_RECURSE",PAUSED:64,64:"PAUSED",EVALUATED:128,128:"EVALUATED"},E=new WeakSet;class x{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,e&&e.active&&e.effects.push(this)}pause(){this.flags|=64}resume(){64&this.flags&&(this.flags&=-65,E.has(this)&&(E.delete(this),this.trigger()))}notify(){(!(2&this.flags)||32&this.flags)&&(8&this.flags||m(this))}run(){if(!(1&this.flags))return this.fn();this.flags|=2,U(this),k(this);let e=t,i=P;t=this,P=!0;try{return this.fn()}finally{D(this),t=e,P=i,this.flags&=-3}}stop(){if(1&this.flags){for(let e=this.deps;e;e=e.nextDep)L(e);this.deps=this.depsTail=void 0,U(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){64&this.flags?E.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){O(this)&&this.run()}get dirty(){return O(this)}}let T=0;function m(e,t=!1){if(e.flags|=8,t){e.next=s,s=e;return}e.next=i,i=e}function A(){let e;if(!(--T>0)){if(s){let e=s;for(s=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}for(;i;){let t=i;for(i=void 0;t;){let i=t.next;if(t.next=void 0,t.flags&=-9,1&t.flags)try{t.trigger()}catch(t){e||(e=t)}t=i}}if(e)throw e}}function k(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function D(e){let t,i=e.depsTail,s=i;for(;s;){let e=s.prevDep;-1===s.version?(s===i&&(i=e),L(s),function(e){let{prevDep:t,nextDep:i}=e;t&&(t.nextDep=i,e.prevDep=void 0),i&&(i.prevDep=t,e.nextDep=void 0)}(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=e}e.deps=t,e.depsTail=i}function O(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(I(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function I(e){if(4&e.flags&&!(16&e.flags)||(e.flags&=-17,e.globalVersion===H)||(e.globalVersion=H,!e.isSSR&&128&e.flags&&(!e.deps&&!e._dirty||!O(e))))return;e.flags|=2;let i=e.dep,s=t,r=P;t=e,P=!0;try{k(e);let t=e.fn(e._value);(0===i.version||g(t,e._value))&&(e.flags|=128,e._value=t,i.version++)}catch(e){throw i.version++,e}finally{t=s,P=r,D(e),e.flags&=-3}}function L(e,t=!1){let{dep:i,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),i.subs===e&&(i.subs=s,!s&&i.computed)){i.computed.flags&=-5;for(let e=i.computed.deps;e;e=e.nextDep)L(e,!0)}t||--i.sc||!i.map||i.map.delete(i.key)}function j(e,t){e.effect instanceof x&&(e=e.effect.fn);let i=new x(e);t&&o(i,t);try{i.run()}catch(e){throw i.stop(),e}let s=i.run.bind(i);return s.effect=i,s}function C(e){e.effect.stop()}let P=!0,W=[];function N(){W.push(P),P=!1}function V(){W.push(P),P=!0}function K(){let e=W.pop();P=void 0===e||e}function M(e,i=!1){t instanceof x&&(t.cleanup=e)}function U(e){let{cleanup:i}=e;if(e.cleanup=void 0,i){let e=t;t=void 0;try{i()}finally{t=e}}}let H=0;class Y{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class G{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!t||!P||t===this.computed)return;let i=this.activeLink;if(void 0===i||i.sub!==t)i=this.activeLink=new Y(t,this),t.deps?(i.prevDep=t.depsTail,t.depsTail.nextDep=i,t.depsTail=i):t.deps=t.depsTail=i,function e(t){if(t.dep.sc++,4&t.sub.flags){let i=t.dep.computed;if(i&&!t.dep.subs){i.flags|=20;for(let t=i.deps;t;t=t.nextDep)e(t)}let s=t.dep.subs;s!==t&&(t.prevSub=s,s&&(s.nextSub=t)),t.dep.subs=t}}(i);else if(-1===i.version&&(i.version=this.version,i.nextDep)){let e=i.nextDep;e.prevDep=i.prevDep,i.prevDep&&(i.prevDep.nextDep=e),i.prevDep=t.depsTail,i.nextDep=void 0,t.depsTail.nextDep=i,t.depsTail=i,t.deps===i&&(t.deps=e)}return i}trigger(e){this.version++,H++,this.notify(e)}notify(e){T++;try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{A()}}}let F=new WeakMap,z=Symbol(""),B=Symbol(""),q=Symbol("");function J(e,i,s){if(P&&t){let t=F.get(e);t||F.set(e,t=new Map);let i=t.get(s);i||(t.set(s,i=new G),i.map=t,i.key=s),i.track()}}function Q(e,t,i,s,r,n){let l=F.get(e);if(!l)return void H++;let o=e=>{e&&e.trigger()};if(T++,"clear"===t)l.forEach(o);else{let r=h(e),n=r&&v(i);if(r&&"length"===i){let e=Number(s);l.forEach((t,i)=>{("length"===i||i===q||!f(i)&&i>=e)&&o(t)})}else switch((void 0!==i||l.has(void 0))&&o(l.get(i)),n&&o(l.get(q)),t){case"add":r?n&&o(l.get("length")):(o(l.get(z)),c(e)&&o(l.get(B)));break;case"delete":!r&&(o(l.get(z)),c(e)&&o(l.get(B)));break;case"set":c(e)&&o(l.get(z))}}A()}function X(e){let t=eN(e);return t===e?t:(J(t,"iterate",q),eP(e)?t:t.map(eK))}function Z(e){return J(e=eN(e),"iterate",q),e}let $={__proto__:null,[Symbol.iterator](){return ee(this,Symbol.iterator,eK)},concat(...e){return X(this).concat(...e.map(e=>h(e)?X(e):e))},entries(){return ee(this,"entries",e=>(e[1]=eK(e[1]),e))},every(e,t){return ei(this,"every",e,t,void 0,arguments)},filter(e,t){return ei(this,"filter",e,t,e=>e.map(eK),arguments)},find(e,t){return ei(this,"find",e,t,eK,arguments)},findIndex(e,t){return ei(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ei(this,"findLast",e,t,eK,arguments)},findLastIndex(e,t){return ei(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ei(this,"forEach",e,t,void 0,arguments)},includes(...e){return er(this,"includes",e)},indexOf(...e){return er(this,"indexOf",e)},join(e){return X(this).join(e)},lastIndexOf(...e){return er(this,"lastIndexOf",e)},map(e,t){return ei(this,"map",e,t,void 0,arguments)},pop(){return en(this,"pop")},push(...e){return en(this,"push",e)},reduce(e,...t){return es(this,"reduce",e,t)},reduceRight(e,...t){return es(this,"reduceRight",e,t)},shift(){return en(this,"shift")},some(e,t){return ei(this,"some",e,t,void 0,arguments)},splice(...e){return en(this,"splice",e)},toReversed(){return X(this).toReversed()},toSorted(e){return X(this).toSorted(e)},toSpliced(...e){return X(this).toSpliced(...e)},unshift(...e){return en(this,"unshift",e)},values(){return ee(this,"values",eK)}};function ee(e,t,i){let s=Z(e),r=s[t]();return s===e||eP(e)||(r._next=r.next,r.next=()=>{let e=r._next();return e.value&&(e.value=i(e.value)),e}),r}let et=Array.prototype;function ei(e,t,i,s,r,n){let l=Z(e),o=l!==e&&!eP(e),a=l[t];if(a!==et[t]){let t=a.apply(e,n);return o?eK(t):t}let u=i;l!==e&&(o?u=function(t,s){return i.call(this,eK(t),s,e)}:i.length>2&&(u=function(t,s){return i.call(this,t,s,e)}));let h=a.call(l,u,s);return o&&r?r(h):h}function es(e,t,i,s){let r=Z(e),n=i;return r!==e&&(eP(e)?i.length>3&&(n=function(t,s,r){return i.call(this,t,s,r,e)}):n=function(t,s,r){return i.call(this,t,eK(s),r,e)}),r[t](n,...s)}function er(e,t,i){let s=eN(e);J(s,"iterate",q);let r=s[t](...i);return(-1===r||!1===r)&&eW(i[0])?(i[0]=eN(i[0]),s[t](...i)):r}function en(e,t,i=[]){N(),T++;let s=eN(e)[t].apply(e,i);return A(),K(),s}let el=function(e){let t=Object.create(null);for(let i of e.split(","))t[i]=1;return e=>e in t}("__proto__,__v_isRef,__isVue"),eo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>"arguments"!==e&&"caller"!==e).map(e=>Symbol[e]).filter(f));function ea(e){f(e)||(e=String(e));let t=eN(this);return J(t,"has",e),t.hasOwnProperty(e)}class eu{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,i){if("__v_skip"===t)return e.__v_skip;let s=this._isReadonly,r=this._isShallow;if("__v_isReactive"===t)return!s;if("__v_isReadonly"===t)return s;if("__v_isShallow"===t)return r;if("__v_raw"===t)return i===(s?r?eA:em:r?eT:ex).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(i)?e:void 0;let n=h(e);if(!s){let e;if(n&&(e=$[t]))return e;if("hasOwnProperty"===t)return ea}let l=Reflect.get(e,t,eU(e)?e:i);return(f(t)?eo.has(t):el(t))||(s||J(e,"get",t),r)?l:eU(l)?n&&v(t)?l:l.value:p(l)?s?eO(l):ek(l):l}}class eh extends eu{constructor(e=!1){super(!1,e)}set(e,t,i,s){let r=e[t];if(!this._isShallow){let t=eC(r);if(eP(i)||eC(i)||(r=eN(r),i=eN(i)),!h(e)&&eU(r)&&!eU(i))if(t)return!1;else return r.value=i,!0}let n=h(e)&&v(t)?Number(t)<e.length:u(e,t),l=Reflect.set(e,t,i,eU(e)?e:s);return e===eN(s)&&(n?g(i,r)&&Q(e,"set",t,i):Q(e,"add",t,i)),l}deleteProperty(e,t){let i=u(e,t);e[t];let s=Reflect.deleteProperty(e,t);return s&&i&&Q(e,"delete",t,void 0),s}has(e,t){let i=Reflect.has(e,t);return f(t)&&eo.has(t)||J(e,"has",t),i}ownKeys(e){return J(e,"iterate",h(e)?"length":z),Reflect.ownKeys(e)}}class ec extends eu{constructor(e=!1){super(!0,e)}set(e,t){return!0}deleteProperty(e,t){return!0}}let ef=new eh,ep=new ec,ed=new eh(!0),e_=new ec(!0),ev=e=>e,eg=e=>Reflect.getPrototypeOf(e);function ey(e){return function(){return"delete"!==e&&("clear"===e?void 0:this)}}function eR(e,t){let i=function(e,t){let i={get(i){let s=this.__v_raw,r=eN(s),n=eN(i);e||(g(i,n)&&J(r,"get",i),J(r,"get",n));let{has:l}=eg(r),o=t?ev:e?eM:eK;return l.call(r,i)?o(s.get(i)):l.call(r,n)?o(s.get(n)):void(s!==r&&s.get(i))},get size(){let t=this.__v_raw;return e||J(eN(t),"iterate",z),Reflect.get(t,"size",t)},has(t){let i=this.__v_raw,s=eN(i),r=eN(t);return e||(g(t,r)&&J(s,"has",t),J(s,"has",r)),t===r?i.has(t):i.has(t)||i.has(r)},forEach(i,s){let r=this,n=r.__v_raw,l=eN(n),o=t?ev:e?eM:eK;return e||J(l,"iterate",z),n.forEach((e,t)=>i.call(s,o(e),o(t),r))}};return o(i,e?{add:ey("add"),set:ey("set"),delete:ey("delete"),clear:ey("clear")}:{add(e){t||eP(e)||eC(e)||(e=eN(e));let i=eN(this);return eg(i).has.call(i,e)||(i.add(e),Q(i,"add",e,e)),this},set(e,i){t||eP(i)||eC(i)||(i=eN(i));let s=eN(this),{has:r,get:n}=eg(s),l=r.call(s,e);l||(e=eN(e),l=r.call(s,e));let o=n.call(s,e);return s.set(e,i),l?g(i,o)&&Q(s,"set",e,i):Q(s,"add",e,i),this},delete(e){let t=eN(this),{has:i,get:s}=eg(t),r=i.call(t,e);r||(e=eN(e),r=i.call(t,e)),s&&s.call(t,e);let n=t.delete(e);return r&&Q(t,"delete",e,void 0),n},clear(){let e=eN(this),t=0!==e.size,i=e.clear();return t&&Q(e,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{i[s]=function(...i){let r=this.__v_raw,n=eN(r),l=c(n),o="entries"===s||s===Symbol.iterator&&l,a=r[s](...i),u=t?ev:e?eM:eK;return e||J(n,"iterate","keys"===s&&l?B:z),{next(){let{value:e,done:t}=a.next();return t?{value:e,done:t}:{value:o?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}),i}(e,t);return(t,s,r)=>"__v_isReactive"===s?!e:"__v_isReadonly"===s?e:"__v_raw"===s?t:Reflect.get(u(i,s)&&s in t?i:t,s,r)}let eb={get:eR(!1,!1)},ew={get:eR(!1,!0)},eS={get:eR(!0,!1)},eE={get:eR(!0,!0)},ex=new WeakMap,eT=new WeakMap,em=new WeakMap,eA=new WeakMap;function ek(e){return eC(e)?e:eL(e,!1,ef,eb,ex)}function eD(e){return eL(e,!1,ed,ew,eT)}function eO(e){return eL(e,!0,ep,eS,em)}function eI(e){return eL(e,!0,e_,eE,eA)}function eL(e,t,i,s,r){var n;if(!p(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;let l=(n=e).__v_skip||!Object.isExtensible(n)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(_(n).slice(8,-1));if(0===l)return e;let o=r.get(e);if(o)return o;let a=new Proxy(e,2===l?s:i);return r.set(e,a),a}function ej(e){return eC(e)?ej(e.__v_raw):!!(e&&e.__v_isReactive)}function eC(e){return!!(e&&e.__v_isReadonly)}function eP(e){return!!(e&&e.__v_isShallow)}function eW(e){return!!e&&!!e.__v_raw}function eN(e){let t=e&&e.__v_raw;return t?eN(t):e}function eV(e){return!u(e,"__v_skip")&&Object.isExtensible(e)&&((e,t,i,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:i})})(e,"__v_skip",!0),e}let eK=e=>p(e)?ek(e):e,eM=e=>p(e)?eO(e):e;function eU(e){return!!e&&!0===e.__v_isRef}function eH(e){return eG(e,!1)}function eY(e){return eG(e,!0)}function eG(e,t){return eU(e)?e:new eF(e,t)}class eF{constructor(e,t){this.dep=new G,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:eN(e),this._value=t?e:eK(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,i=this.__v_isShallow||eP(e)||eC(e);g(e=i?e:eN(e),t)&&(this._rawValue=e,this._value=i?e:eK(e),this.dep.trigger())}}function ez(e){e.dep&&e.dep.trigger()}function eB(e){return eU(e)?e.value:e}function eq(e){return"function"==typeof e?e():eB(e)}let eJ={get:(e,t,i)=>"__v_raw"===t?e:eB(Reflect.get(e,t,i)),set:(e,t,i,s)=>{let r=e[t];return eU(r)&&!eU(i)?(r.value=i,!0):Reflect.set(e,t,i,s)}};function eQ(e){return ej(e)?e:new Proxy(e,eJ)}class eX{constructor(e){this.__v_isRef=!0,this._value=void 0;let t=this.dep=new G,{get:i,set:s}=e(t.track.bind(t),t.trigger.bind(t));this._get=i,this._set=s}get value(){return this._value=this._get()}set value(e){this._set(e)}}function eZ(e){return new eX(e)}function e$(e){let t=h(e)?Array(e.length):{};for(let i in e)t[i]=e4(e,i);return t}class e0{constructor(e,t,i){this._object=e,this._key=t,this._defaultValue=i,this.__v_isRef=!0,this._value=void 0}get value(){let e=this._object[this._key];return this._value=void 0===e?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return function(e,t){let i=F.get(e);return i&&i.get(t)}(eN(this._object),this._key)}}class e1{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function e2(e,t,i){return eU(e)?e:"function"==typeof e?new e1(e):p(e)&&arguments.length>1?e4(e,t,i):eH(e)}function e4(e,t,i){let s=e[t];return eU(s)?s:new e0(e,t,i)}class e6{constructor(e,t,i){this.fn=e,this.setter=t,this._value=void 0,this.dep=new G(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=H-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=i}notify(){if(this.flags|=16,!(8&this.flags)&&t!==this)return m(this,!0),!0}get value(){let e=this.dep.track();return I(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function e3(e,t,i=!1){let s,r;return"function"==typeof e?s=e:(s=e.get,r=e.set),new e6(s,r,i)}let e8={GET:"get",HAS:"has",ITERATE:"iterate"},e5={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"},e9={SKIP:"__v_skip",IS_REACTIVE:"__v_isReactive",IS_READONLY:"__v_isReadonly",IS_SHALLOW:"__v_isShallow",RAW:"__v_raw",IS_REF:"__v_isRef"},e7={WATCH_GETTER:2,2:"WATCH_GETTER",WATCH_CALLBACK:3,3:"WATCH_CALLBACK",WATCH_CLEANUP:4,4:"WATCH_CLEANUP"},te={},tt=new WeakMap;function ti(){return r}function ts(e,t=!1,i=r){if(i){let t=tt.get(i);t||tt.set(i,t=[]),t.push(e)}}function tr(e,t,i=n){let s,o,a,u,{immediate:c,deep:f,once:p,scheduler:d,augmentJob:_,call:v}=i,y=e=>f?e:eP(e)||!1===f||0===f?tn(e,1):tn(e),R=!1,w=!1;if(eU(e)?(o=()=>e.value,R=eP(e)):ej(e)?(o=()=>y(e),R=!0):h(e)?(w=!0,R=e.some(e=>ej(e)||eP(e)),o=()=>e.map(e=>eU(e)?e.value:ej(e)?y(e):"function"==typeof e?v?v(e,2):e():void 0)):o="function"==typeof e?t?v?()=>v(e,2):e:()=>{if(a){N();try{a()}finally{K()}}let t=r;r=s;try{return v?v(e,3,[u]):e(u)}finally{r=t}}:l,t&&f){let e=o,t=!0===f?1/0:f;o=()=>tn(e(),t)}let S=b(),E=()=>{s.stop(),S&&S.active&&((e,t)=>{let i=e.indexOf(t);i>-1&&e.splice(i,1)})(S.effects,s)};if(p&&t){let e=t;t=(...t)=>{e(...t),E()}}let T=w?Array(e.length).fill(te):te,m=e=>{if(1&s.flags&&(s.dirty||e))if(t){let e=s.run();if(f||R||(w?e.some((e,t)=>g(e,T[t])):g(e,T))){a&&a();let i=r;r=s;try{let i=[e,T===te?void 0:w&&T[0]===te?[]:T,u];T=e,v?v(t,3,i):t(...i)}finally{r=i}}}else s.run()};return _&&_(m),(s=new x(o)).scheduler=d?()=>d(m,!1):m,u=e=>ts(e,!1,s),a=s.onStop=()=>{let e=tt.get(s);if(e){if(v)v(e,4);else for(let t of e)t();tt.delete(s)}},t?c?m(!0):T=s.run():d?d(m.bind(null,!0),!0):s.run(),E.pause=s.pause.bind(s),E.resume=s.resume.bind(s),E.stop=E,E}function tn(e,t=1/0,i){if(t<=0||!p(e)||e.__v_skip||(i=i||new Set).has(e))return e;if(i.add(e),t--,eU(e))tn(e.value,t,i);else if(h(e))for(let s=0;s<e.length;s++)tn(e[s],t,i);else if("[object Set]"===_(e)||c(e))e.forEach(e=>{tn(e,t,i)});else if("[object Object]"===_(e)){for(let s in e)tn(e[s],t,i);for(let s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&tn(e[s],t,i)}return e}export{q as ARRAY_ITERATE_KEY,S as EffectFlags,y as EffectScope,z as ITERATE_KEY,B as MAP_KEY_ITERATE_KEY,x as ReactiveEffect,e9 as ReactiveFlags,e8 as TrackOpTypes,e5 as TriggerOpTypes,e7 as WatchErrorCodes,e3 as computed,eZ as customRef,j as effect,R as effectScope,V as enableTracking,b as getCurrentScope,ti as getCurrentWatcher,eW as isProxy,ej as isReactive,eC as isReadonly,eU as isRef,eP as isShallow,eV as markRaw,M as onEffectCleanup,w as onScopeDispose,ts as onWatcherCleanup,N as pauseTracking,eQ as proxyRefs,ek as reactive,X as reactiveReadArray,eO as readonly,eH as ref,K as resetTracking,eD as shallowReactive,Z as shallowReadArray,eI as shallowReadonly,eY as shallowRef,C as stop,eN as toRaw,eK as toReactive,eM as toReadonly,e2 as toRef,e$ as toRefs,eq as toValue,J as track,tn as traverse,Q as trigger,ez as triggerRef,eB as unref,tr as watch}; diff --git a/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js b/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js new file mode 100644 index 0000000..9572eab --- /dev/null +++ b/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js @@ -0,0 +1,1913 @@ +/** +* @vue/reactivity v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +import { extend, hasChanged, isArray, isIntegerKey, isSymbol, isMap, hasOwn, makeMap, isObject, capitalize, toRawType, def, isFunction, EMPTY_OBJ, isSet, isPlainObject, remove, NOOP } from '@vue/shared'; + +function warn(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); +} + +let activeEffectScope; +class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal track `on` calls, allow `on` call multiple times + */ + this._on = 0; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this._isPaused = false; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + pause() { + if (this._active) { + this._isPaused = true; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].pause(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].pause(); + } + } + } + /** + * Resumes the effect scope, including all child scopes and effects. + */ + resume() { + if (this._active) { + if (this._isPaused) { + this._isPaused = false; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].resume(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].resume(); + } + } + } + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else if (!!(process.env.NODE_ENV !== "production")) { + warn(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + if (++this._on === 1) { + this.prevScope = activeEffectScope; + activeEffectScope = this; + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + if (this._on > 0 && --this._on === 0) { + activeEffectScope = this.prevScope; + this.prevScope = void 0; + } + } + stop(fromParent) { + if (this._active) { + this._active = false; + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + this.effects.length = 0; + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + this.cleanups.length = 0; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + this.scopes.length = 0; + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + } + } +} +function effectScope(detached) { + return new EffectScope(detached); +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn, failSilently = false) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else if (!!(process.env.NODE_ENV !== "production") && !failSilently) { + warn( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } +} + +let activeSub; +const EffectFlags = { + "ACTIVE": 1, + "1": "ACTIVE", + "RUNNING": 2, + "2": "RUNNING", + "TRACKING": 4, + "4": "TRACKING", + "NOTIFIED": 8, + "8": "NOTIFIED", + "DIRTY": 16, + "16": "DIRTY", + "ALLOW_RECURSE": 32, + "32": "ALLOW_RECURSE", + "PAUSED": 64, + "64": "PAUSED", + "EVALUATED": 128, + "128": "EVALUATED" +}; +const pausedQueueEffects = /* @__PURE__ */ new WeakSet(); +class ReactiveEffect { + constructor(fn) { + this.fn = fn; + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 1 | 4; + /** + * @internal + */ + this.next = void 0; + /** + * @internal + */ + this.cleanup = void 0; + this.scheduler = void 0; + if (activeEffectScope && activeEffectScope.active) { + activeEffectScope.effects.push(this); + } + } + pause() { + this.flags |= 64; + } + resume() { + if (this.flags & 64) { + this.flags &= -65; + if (pausedQueueEffects.has(this)) { + pausedQueueEffects.delete(this); + this.trigger(); + } + } + } + /** + * @internal + */ + notify() { + if (this.flags & 2 && !(this.flags & 32)) { + return; + } + if (!(this.flags & 8)) { + batch(this); + } + } + run() { + if (!(this.flags & 1)) { + return this.fn(); + } + this.flags |= 2; + cleanupEffect(this); + prepareDeps(this); + const prevEffect = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = this; + shouldTrack = true; + try { + return this.fn(); + } finally { + if (!!(process.env.NODE_ENV !== "production") && activeSub !== this) { + warn( + "Active effect was not restored correctly - this is likely a Vue internal bug." + ); + } + cleanupDeps(this); + activeSub = prevEffect; + shouldTrack = prevShouldTrack; + this.flags &= -3; + } + } + stop() { + if (this.flags & 1) { + for (let link = this.deps; link; link = link.nextDep) { + removeSub(link); + } + this.deps = this.depsTail = void 0; + cleanupEffect(this); + this.onStop && this.onStop(); + this.flags &= -2; + } + } + trigger() { + if (this.flags & 64) { + pausedQueueEffects.add(this); + } else if (this.scheduler) { + this.scheduler(); + } else { + this.runIfDirty(); + } + } + /** + * @internal + */ + runIfDirty() { + if (isDirty(this)) { + this.run(); + } + } + get dirty() { + return isDirty(this); + } +} +let batchDepth = 0; +let batchedSub; +let batchedComputed; +function batch(sub, isComputed = false) { + sub.flags |= 8; + if (isComputed) { + sub.next = batchedComputed; + batchedComputed = sub; + return; + } + sub.next = batchedSub; + batchedSub = sub; +} +function startBatch() { + batchDepth++; +} +function endBatch() { + if (--batchDepth > 0) { + return; + } + if (batchedComputed) { + let e = batchedComputed; + batchedComputed = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + e = next; + } + } + let error; + while (batchedSub) { + let e = batchedSub; + batchedSub = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + if (e.flags & 1) { + try { + ; + e.trigger(); + } catch (err) { + if (!error) error = err; + } + } + e = next; + } + } + if (error) throw error; +} +function prepareDeps(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + link.version = -1; + link.prevActiveLink = link.dep.activeLink; + link.dep.activeLink = link; + } +} +function cleanupDeps(sub) { + let head; + let tail = sub.depsTail; + let link = tail; + while (link) { + const prev = link.prevDep; + if (link.version === -1) { + if (link === tail) tail = prev; + removeSub(link); + removeDep(link); + } else { + head = link; + } + link.dep.activeLink = link.prevActiveLink; + link.prevActiveLink = void 0; + link = prev; + } + sub.deps = head; + sub.depsTail = tail; +} +function isDirty(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) { + return true; + } + } + if (sub._dirty) { + return true; + } + return false; +} +function refreshComputed(computed) { + if (computed.flags & 4 && !(computed.flags & 16)) { + return; + } + computed.flags &= -17; + if (computed.globalVersion === globalVersion) { + return; + } + computed.globalVersion = globalVersion; + if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) { + return; + } + computed.flags |= 2; + const dep = computed.dep; + const prevSub = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = computed; + shouldTrack = true; + try { + prepareDeps(computed); + const value = computed.fn(computed._value); + if (dep.version === 0 || hasChanged(value, computed._value)) { + computed.flags |= 128; + computed._value = value; + dep.version++; + } + } catch (err) { + dep.version++; + throw err; + } finally { + activeSub = prevSub; + shouldTrack = prevShouldTrack; + cleanupDeps(computed); + computed.flags &= -3; + } +} +function removeSub(link, soft = false) { + const { dep, prevSub, nextSub } = link; + if (prevSub) { + prevSub.nextSub = nextSub; + link.prevSub = void 0; + } + if (nextSub) { + nextSub.prevSub = prevSub; + link.nextSub = void 0; + } + if (!!(process.env.NODE_ENV !== "production") && dep.subsHead === link) { + dep.subsHead = nextSub; + } + if (dep.subs === link) { + dep.subs = prevSub; + if (!prevSub && dep.computed) { + dep.computed.flags &= -5; + for (let l = dep.computed.deps; l; l = l.nextDep) { + removeSub(l, true); + } + } + } + if (!soft && !--dep.sc && dep.map) { + dep.map.delete(dep.key); + } +} +function removeDep(link) { + const { prevDep, nextDep } = link; + if (prevDep) { + prevDep.nextDep = nextDep; + link.prevDep = void 0; + } + if (nextDep) { + nextDep.prevDep = prevDep; + link.nextDep = void 0; + } +} +function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const e = new ReactiveEffect(fn); + if (options) { + extend(e, options); + } + try { + e.run(); + } catch (err) { + e.stop(); + throw err; + } + const runner = e.run.bind(e); + runner.effect = e; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +let shouldTrack = true; +const trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function enableTracking() { + trackStack.push(shouldTrack); + shouldTrack = true; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function onEffectCleanup(fn, failSilently = false) { + if (activeSub instanceof ReactiveEffect) { + activeSub.cleanup = fn; + } else if (!!(process.env.NODE_ENV !== "production") && !failSilently) { + warn( + `onEffectCleanup() was called when there was no active effect to associate with.` + ); + } +} +function cleanupEffect(e) { + const { cleanup } = e; + e.cleanup = void 0; + if (cleanup) { + const prevSub = activeSub; + activeSub = void 0; + try { + cleanup(); + } finally { + activeSub = prevSub; + } + } +} + +let globalVersion = 0; +class Link { + constructor(sub, dep) { + this.sub = sub; + this.dep = dep; + this.version = dep.version; + this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; + } +} +class Dep { + // TODO isolatedDeclarations "__v_skip" + constructor(computed) { + this.computed = computed; + this.version = 0; + /** + * Link between this dep and the current active effect + */ + this.activeLink = void 0; + /** + * Doubly linked list representing the subscribing effects (tail) + */ + this.subs = void 0; + /** + * For object property deps cleanup + */ + this.map = void 0; + this.key = void 0; + /** + * Subscriber counter + */ + this.sc = 0; + /** + * @internal + */ + this.__v_skip = true; + if (!!(process.env.NODE_ENV !== "production")) { + this.subsHead = void 0; + } + } + track(debugInfo) { + if (!activeSub || !shouldTrack || activeSub === this.computed) { + return; + } + let link = this.activeLink; + if (link === void 0 || link.sub !== activeSub) { + link = this.activeLink = new Link(activeSub, this); + if (!activeSub.deps) { + activeSub.deps = activeSub.depsTail = link; + } else { + link.prevDep = activeSub.depsTail; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + } + addSub(link); + } else if (link.version === -1) { + link.version = this.version; + if (link.nextDep) { + const next = link.nextDep; + next.prevDep = link.prevDep; + if (link.prevDep) { + link.prevDep.nextDep = next; + } + link.prevDep = activeSub.depsTail; + link.nextDep = void 0; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + if (activeSub.deps === link) { + activeSub.deps = next; + } + } + } + if (!!(process.env.NODE_ENV !== "production") && activeSub.onTrack) { + activeSub.onTrack( + extend( + { + effect: activeSub + }, + debugInfo + ) + ); + } + return link; + } + trigger(debugInfo) { + this.version++; + globalVersion++; + this.notify(debugInfo); + } + notify(debugInfo) { + startBatch(); + try { + if (!!(process.env.NODE_ENV !== "production")) { + for (let head = this.subsHead; head; head = head.nextSub) { + if (head.sub.onTrigger && !(head.sub.flags & 8)) { + head.sub.onTrigger( + extend( + { + effect: head.sub + }, + debugInfo + ) + ); + } + } + } + for (let link = this.subs; link; link = link.prevSub) { + if (link.sub.notify()) { + ; + link.sub.dep.notify(); + } + } + } finally { + endBatch(); + } + } +} +function addSub(link) { + link.dep.sc++; + if (link.sub.flags & 4) { + const computed = link.dep.computed; + if (computed && !link.dep.subs) { + computed.flags |= 4 | 16; + for (let l = computed.deps; l; l = l.nextDep) { + addSub(l); + } + } + const currentTail = link.dep.subs; + if (currentTail !== link) { + link.prevSub = currentTail; + if (currentTail) currentTail.nextSub = link; + } + if (!!(process.env.NODE_ENV !== "production") && link.dep.subsHead === void 0) { + link.dep.subsHead = link; + } + link.dep.subs = link; + } +} +const targetMap = /* @__PURE__ */ new WeakMap(); +const ITERATE_KEY = Symbol( + !!(process.env.NODE_ENV !== "production") ? "Object iterate" : "" +); +const MAP_KEY_ITERATE_KEY = Symbol( + !!(process.env.NODE_ENV !== "production") ? "Map keys iterate" : "" +); +const ARRAY_ITERATE_KEY = Symbol( + !!(process.env.NODE_ENV !== "production") ? "Array iterate" : "" +); +function track(target, type, key) { + if (shouldTrack && activeSub) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = new Dep()); + dep.map = depsMap; + dep.key = key; + } + if (!!(process.env.NODE_ENV !== "production")) { + dep.track({ + target, + type, + key + }); + } else { + dep.track(); + } + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + globalVersion++; + return; + } + const run = (dep) => { + if (dep) { + if (!!(process.env.NODE_ENV !== "production")) { + dep.trigger({ + target, + type, + key, + newValue, + oldValue, + oldTarget + }); + } else { + dep.trigger(); + } + } + }; + startBatch(); + if (type === "clear") { + depsMap.forEach(run); + } else { + const targetIsArray = isArray(target); + const isArrayIndex = targetIsArray && isIntegerKey(key); + if (targetIsArray && key === "length") { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) { + run(dep); + } + }); + } else { + if (key !== void 0 || depsMap.has(void 0)) { + run(depsMap.get(key)); + } + if (isArrayIndex) { + run(depsMap.get(ARRAY_ITERATE_KEY)); + } + switch (type) { + case "add": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isArrayIndex) { + run(depsMap.get("length")); + } + break; + case "delete": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + run(depsMap.get(ITERATE_KEY)); + } + break; + } + } + } + endBatch(); +} +function getDepFromReactive(object, key) { + const depMap = targetMap.get(object); + return depMap && depMap.get(key); +} + +function reactiveReadArray(array) { + const raw = toRaw(array); + if (raw === array) return raw; + track(raw, "iterate", ARRAY_ITERATE_KEY); + return isShallow(array) ? raw : raw.map(toReactive); +} +function shallowReadArray(arr) { + track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY); + return arr; +} +const arrayInstrumentations = { + __proto__: null, + [Symbol.iterator]() { + return iterator(this, Symbol.iterator, toReactive); + }, + concat(...args) { + return reactiveReadArray(this).concat( + ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x) + ); + }, + entries() { + return iterator(this, "entries", (value) => { + value[1] = toReactive(value[1]); + return value; + }); + }, + every(fn, thisArg) { + return apply(this, "every", fn, thisArg, void 0, arguments); + }, + filter(fn, thisArg) { + return apply(this, "filter", fn, thisArg, (v) => v.map(toReactive), arguments); + }, + find(fn, thisArg) { + return apply(this, "find", fn, thisArg, toReactive, arguments); + }, + findIndex(fn, thisArg) { + return apply(this, "findIndex", fn, thisArg, void 0, arguments); + }, + findLast(fn, thisArg) { + return apply(this, "findLast", fn, thisArg, toReactive, arguments); + }, + findLastIndex(fn, thisArg) { + return apply(this, "findLastIndex", fn, thisArg, void 0, arguments); + }, + // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement + forEach(fn, thisArg) { + return apply(this, "forEach", fn, thisArg, void 0, arguments); + }, + includes(...args) { + return searchProxy(this, "includes", args); + }, + indexOf(...args) { + return searchProxy(this, "indexOf", args); + }, + join(separator) { + return reactiveReadArray(this).join(separator); + }, + // keys() iterator only reads `length`, no optimisation required + lastIndexOf(...args) { + return searchProxy(this, "lastIndexOf", args); + }, + map(fn, thisArg) { + return apply(this, "map", fn, thisArg, void 0, arguments); + }, + pop() { + return noTracking(this, "pop"); + }, + push(...args) { + return noTracking(this, "push", args); + }, + reduce(fn, ...args) { + return reduce(this, "reduce", fn, args); + }, + reduceRight(fn, ...args) { + return reduce(this, "reduceRight", fn, args); + }, + shift() { + return noTracking(this, "shift"); + }, + // slice could use ARRAY_ITERATE but also seems to beg for range tracking + some(fn, thisArg) { + return apply(this, "some", fn, thisArg, void 0, arguments); + }, + splice(...args) { + return noTracking(this, "splice", args); + }, + toReversed() { + return reactiveReadArray(this).toReversed(); + }, + toSorted(comparer) { + return reactiveReadArray(this).toSorted(comparer); + }, + toSpliced(...args) { + return reactiveReadArray(this).toSpliced(...args); + }, + unshift(...args) { + return noTracking(this, "unshift", args); + }, + values() { + return iterator(this, "values", toReactive); + } +}; +function iterator(self, method, wrapValue) { + const arr = shallowReadArray(self); + const iter = arr[method](); + if (arr !== self && !isShallow(self)) { + iter._next = iter.next; + iter.next = () => { + const result = iter._next(); + if (result.value) { + result.value = wrapValue(result.value); + } + return result; + }; + } + return iter; +} +const arrayProto = Array.prototype; +function apply(self, method, fn, thisArg, wrappedRetFn, args) { + const arr = shallowReadArray(self); + const needsWrap = arr !== self && !isShallow(self); + const methodFn = arr[method]; + if (methodFn !== arrayProto[method]) { + const result2 = methodFn.apply(self, args); + return needsWrap ? toReactive(result2) : result2; + } + let wrappedFn = fn; + if (arr !== self) { + if (needsWrap) { + wrappedFn = function(item, index) { + return fn.call(this, toReactive(item), index, self); + }; + } else if (fn.length > 2) { + wrappedFn = function(item, index) { + return fn.call(this, item, index, self); + }; + } + } + const result = methodFn.call(arr, wrappedFn, thisArg); + return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result; +} +function reduce(self, method, fn, args) { + const arr = shallowReadArray(self); + let wrappedFn = fn; + if (arr !== self) { + if (!isShallow(self)) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, toReactive(item), index, self); + }; + } else if (fn.length > 3) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, item, index, self); + }; + } + } + return arr[method](wrappedFn, ...args); +} +function searchProxy(self, method, args) { + const arr = toRaw(self); + track(arr, "iterate", ARRAY_ITERATE_KEY); + const res = arr[method](...args); + if ((res === -1 || res === false) && isProxy(args[0])) { + args[0] = toRaw(args[0]); + return arr[method](...args); + } + return res; +} +function noTracking(self, method, args = []) { + pauseTracking(); + startBatch(); + const res = toRaw(self)[method].apply(self, args); + endBatch(); + resetTracking(); + return res; +} + +const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); +const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) +); +function hasOwnProperty(key) { + if (!isSymbol(key)) key = String(key); + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +class BaseReactiveHandler { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + if (key === "__v_skip") return target["__v_skip"]; + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the receiver is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + let fn; + if (targetIsArray && (fn = arrayInstrumentations[key])) { + return fn; + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get( + target, + key, + // if this is a proxy wrapping a ref, return methods using the raw ref + // as receiver so that we don't have to call `toRaw` on the ref in all + // its class methods + isRef(target) ? target : receiver + ); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +} +class MutableReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set( + target, + key, + value, + isRef(target) ? target : receiver + ); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +} +class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + if (!!(process.env.NODE_ENV !== "production")) { + warn( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + if (!!(process.env.NODE_ENV !== "production")) { + warn( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } +} +const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); +const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); +const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true); +const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + +const toShallow = (value) => value; +const getProto = (v) => Reflect.getPrototypeOf(v); +function createIterableMethod(method, isReadonly2, isShallow2) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + if (!!(process.env.NODE_ENV !== "production")) { + const key = args[0] ? `on key "${args[0]}" ` : ``; + warn( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations(readonly, shallow) { + const instrumentations = { + get(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has } = getProto(rawTarget); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + if (has.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } + }, + get size() { + const target = this["__v_raw"]; + !readonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); + }, + has(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); + }, + forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + !readonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + } + }; + extend( + instrumentations, + readonly ? { + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear") + } : { + add(value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; + }, + set(key, value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else if (!!(process.env.NODE_ENV !== "production")) { + checkIdentityKeys(target, has, key); + } + const oldValue = get.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; + }, + delete(key) { + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else if (!!(process.env.NODE_ENV !== "production")) { + checkIdentityKeys(target, has, key); + } + const oldValue = get ? get.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + }, + clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = !!(process.env.NODE_ENV !== "production") ? isMap(target) ? new Map(target) : new Set(target) : void 0; + const result = target.clear(); + if (hadItems) { + trigger( + target, + "clear", + void 0, + void 0, + oldTarget + ); + } + return result; + } + } + ); + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator + ]; + iteratorMethods.forEach((method) => { + instrumentations[method] = createIterableMethod(method, readonly, shallow); + }); + return instrumentations; +} +function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = createInstrumentations(isReadonly2, shallow); + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) +}; +const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) +}; +const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) +}; +const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) +}; +function checkIdentityKeys(target, has, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has.call(target, rawKey)) { + const type = toRawType(target); + warn( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } +} + +const reactiveMap = /* @__PURE__ */ new WeakMap(); +const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +const readonlyMap = /* @__PURE__ */ new WeakMap(); +const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + if (!!(process.env.NODE_ENV !== "production")) { + warn( + `value cannot be made ${isReadonly2 ? "readonly" : "reactive"}: ${String( + target + )}` + ); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function isProxy(value) { + return value ? !!value["__v_raw"] : false; +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + if (!hasOwn(value, "__v_skip") && Object.isExtensible(value)) { + def(value, "__v_skip", true); + } + return value; +} +const toReactive = (value) => isObject(value) ? reactive(value) : value; +const toReadonly = (value) => isObject(value) ? readonly(value) : value; + +function isRef(r) { + return r ? r["__v_isRef"] === true : false; +} +function ref(value) { + return createRef(value, false); +} +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +class RefImpl { + constructor(value, isShallow2) { + this.dep = new Dep(); + this["__v_isRef"] = true; + this["__v_isShallow"] = false; + this._rawValue = isShallow2 ? value : toRaw(value); + this._value = isShallow2 ? value : toReactive(value); + this["__v_isShallow"] = isShallow2; + } + get value() { + if (!!(process.env.NODE_ENV !== "production")) { + this.dep.track({ + target: this, + type: "get", + key: "value" + }); + } else { + this.dep.track(); + } + return this._value; + } + set value(newValue) { + const oldValue = this._rawValue; + const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue); + newValue = useDirectValue ? newValue : toRaw(newValue); + if (hasChanged(newValue, oldValue)) { + this._rawValue = newValue; + this._value = useDirectValue ? newValue : toReactive(newValue); + if (!!(process.env.NODE_ENV !== "production")) { + this.dep.trigger({ + target: this, + type: "set", + key: "value", + newValue, + oldValue + }); + } else { + this.dep.trigger(); + } + } + } +} +function triggerRef(ref2) { + if (ref2.dep) { + if (!!(process.env.NODE_ENV !== "production")) { + ref2.dep.trigger({ + target: ref2, + type: "set", + key: "value", + newValue: ref2._value + }); + } else { + ref2.dep.trigger(); + } + } +} +function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return isFunction(source) ? source() : unref(source); +} +const shallowUnwrapHandlers = { + get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +class CustomRefImpl { + constructor(factory) { + this["__v_isRef"] = true; + this._value = void 0; + const dep = this.dep = new Dep(); + const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep)); + this._get = get; + this._set = set; + } + get value() { + return this._value = this._get(); + } + set value(newVal) { + this._set(newVal); + } +} +function customRef(factory) { + return new CustomRefImpl(factory); +} +function toRefs(object) { + if (!!(process.env.NODE_ENV !== "production") && !isProxy(object)) { + warn(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this["__v_isRef"] = true; + this._value = void 0; + } + get value() { + const val = this._object[this._key]; + return this._value = val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } +} +class GetterRefImpl { + constructor(_getter) { + this._getter = _getter; + this["__v_isRef"] = true; + this["__v_isReadonly"] = true; + this._value = void 0; + } + get value() { + return this._value = this._getter(); + } +} +function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (isFunction(source)) { + return new GetterRefImpl(source); + } else if (isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); +} + +class ComputedRefImpl { + constructor(fn, setter, isSSR) { + this.fn = fn; + this.setter = setter; + /** + * @internal + */ + this._value = void 0; + /** + * @internal + */ + this.dep = new Dep(this); + /** + * @internal + */ + this.__v_isRef = true; + // TODO isolatedDeclarations "__v_isReadonly" + // A computed is also a subscriber that tracks other deps + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 16; + /** + * @internal + */ + this.globalVersion = globalVersion - 1; + /** + * @internal + */ + this.next = void 0; + // for backwards compat + this.effect = this; + this["__v_isReadonly"] = !setter; + this.isSSR = isSSR; + } + /** + * @internal + */ + notify() { + this.flags |= 16; + if (!(this.flags & 8) && // avoid infinite self recursion + activeSub !== this) { + batch(this, true); + return true; + } else if (!!(process.env.NODE_ENV !== "production")) ; + } + get value() { + const link = !!(process.env.NODE_ENV !== "production") ? this.dep.track({ + target: this, + type: "get", + key: "value" + }) : this.dep.track(); + refreshComputed(this); + if (link) { + link.version = this.dep.version; + } + return this._value; + } + set value(newValue) { + if (this.setter) { + this.setter(newValue); + } else if (!!(process.env.NODE_ENV !== "production")) { + warn("Write operation failed: computed value is readonly"); + } + } +} +function computed(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + if (isFunction(getterOrOptions)) { + getter = getterOrOptions; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, isSSR); + if (!!(process.env.NODE_ENV !== "production") && debugOptions && !isSSR) { + cRef.onTrack = debugOptions.onTrack; + cRef.onTrigger = debugOptions.onTrigger; + } + return cRef; +} + +const TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" +}; +const TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" +}; +const ReactiveFlags = { + "SKIP": "__v_skip", + "IS_REACTIVE": "__v_isReactive", + "IS_READONLY": "__v_isReadonly", + "IS_SHALLOW": "__v_isShallow", + "RAW": "__v_raw", + "IS_REF": "__v_isRef" +}; + +const WatchErrorCodes = { + "WATCH_GETTER": 2, + "2": "WATCH_GETTER", + "WATCH_CALLBACK": 3, + "3": "WATCH_CALLBACK", + "WATCH_CLEANUP": 4, + "4": "WATCH_CLEANUP" +}; +const INITIAL_WATCHER_VALUE = {}; +const cleanupMap = /* @__PURE__ */ new WeakMap(); +let activeWatcher = void 0; +function getCurrentWatcher() { + return activeWatcher; +} +function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) { + if (owner) { + let cleanups = cleanupMap.get(owner); + if (!cleanups) cleanupMap.set(owner, cleanups = []); + cleanups.push(cleanupFn); + } else if (!!(process.env.NODE_ENV !== "production") && !failSilently) { + warn( + `onWatcherCleanup() was called when there was no active watcher to associate with.` + ); + } +} +function watch(source, cb, options = EMPTY_OBJ) { + const { immediate, deep, once, scheduler, augmentJob, call } = options; + const warnInvalidSource = (s) => { + (options.onWarn || warn)( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const reactiveGetter = (source2) => { + if (deep) return source2; + if (isShallow(source2) || deep === false || deep === 0) + return traverse(source2, 1); + return traverse(source2); + }; + let effect; + let getter; + let cleanup; + let boundCleanup; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return reactiveGetter(s); + } else if (isFunction(s)) { + return call ? call(s, 2) : s(); + } else { + !!(process.env.NODE_ENV !== "production") && warnInvalidSource(s); + } + }); + } else if (isFunction(source)) { + if (cb) { + getter = call ? () => call(source, 2) : source; + } else { + getter = () => { + if (cleanup) { + pauseTracking(); + try { + cleanup(); + } finally { + resetTracking(); + } + } + const currentEffect = activeWatcher; + activeWatcher = effect; + try { + return call ? call(source, 3, [boundCleanup]) : source(boundCleanup); + } finally { + activeWatcher = currentEffect; + } + }; + } + } else { + getter = NOOP; + !!(process.env.NODE_ENV !== "production") && warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + const depth = deep === true ? Infinity : deep; + getter = () => traverse(baseGetter(), depth); + } + const scope = getCurrentScope(); + const watchHandle = () => { + effect.stop(); + if (scope && scope.active) { + remove(scope.effects, effect); + } + }; + if (once && cb) { + const _cb = cb; + cb = (...args) => { + _cb(...args); + watchHandle(); + }; + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = (immediateFirstRun) => { + if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) { + if (cleanup) { + cleanup(); + } + const currentWatcher = activeWatcher; + activeWatcher = effect; + try { + const args = [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + boundCleanup + ]; + oldValue = newValue; + call ? call(cb, 3, args) : ( + // @ts-expect-error + cb(...args) + ); + } finally { + activeWatcher = currentWatcher; + } + } + } else { + effect.run(); + } + }; + if (augmentJob) { + augmentJob(job); + } + effect = new ReactiveEffect(getter); + effect.scheduler = scheduler ? () => scheduler(job, false) : job; + boundCleanup = (fn) => onWatcherCleanup(fn, false, effect); + cleanup = effect.onStop = () => { + const cleanups = cleanupMap.get(effect); + if (cleanups) { + if (call) { + call(cleanups, 4); + } else { + for (const cleanup2 of cleanups) cleanup2(); + } + cleanupMap.delete(effect); + } + }; + if (!!(process.env.NODE_ENV !== "production")) { + effect.onTrack = options.onTrack; + effect.onTrigger = options.onTrigger; + } + if (cb) { + if (immediate) { + job(true); + } else { + oldValue = effect.run(); + } + } else if (scheduler) { + scheduler(job.bind(null, true), true); + } else { + effect.run(); + } + watchHandle.pause = effect.pause.bind(effect); + watchHandle.resume = effect.resume.bind(effect); + watchHandle.stop = watchHandle; + return watchHandle; +} +function traverse(value, depth = Infinity, seen) { + if (depth <= 0 || !isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + depth--; + if (isRef(value)) { + traverse(value.value, depth, seen); + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, depth, seen); + }); + } else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, seen); + } + for (const key of Object.getOwnPropertySymbols(value)) { + if (Object.prototype.propertyIsEnumerable.call(value, key)) { + traverse(value[key], depth, seen); + } + } + } + return value; +} + +export { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch }; diff --git a/node_modules/@vue/reactivity/dist/reactivity.global.js b/node_modules/@vue/reactivity/dist/reactivity.global.js new file mode 100644 index 0000000..77c3f3f --- /dev/null +++ b/node_modules/@vue/reactivity/dist/reactivity.global.js @@ -0,0 +1,2011 @@ +/** +* @vue/reactivity v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +var VueReactivity = (function (exports) { + 'use strict'; + + /*! #__NO_SIDE_EFFECTS__ */ + // @__NO_SIDE_EFFECTS__ + function makeMap(str) { + const map = /* @__PURE__ */ Object.create(null); + for (const key of str.split(",")) map[key] = 1; + return (val) => val in map; + } + + const EMPTY_OBJ = Object.freeze({}) ; + const NOOP = () => { + }; + const extend = Object.assign; + const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } + }; + const hasOwnProperty$1 = Object.prototype.hasOwnProperty; + const hasOwn = (val, key) => hasOwnProperty$1.call(val, key); + const isArray = Array.isArray; + const isMap = (val) => toTypeString(val) === "[object Map]"; + const isSet = (val) => toTypeString(val) === "[object Set]"; + const isFunction = (val) => typeof val === "function"; + const isString = (val) => typeof val === "string"; + const isSymbol = (val) => typeof val === "symbol"; + const isObject = (val) => val !== null && typeof val === "object"; + const objectToString = Object.prototype.toString; + const toTypeString = (value) => objectToString.call(value); + const toRawType = (value) => { + return toTypeString(value).slice(8, -1); + }; + const isPlainObject = (val) => toTypeString(val) === "[object Object]"; + const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; + const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; + }; + const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); + }); + const hasChanged = (value, oldValue) => !Object.is(value, oldValue); + const def = (obj, key, value, writable = false) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + writable, + value + }); + }; + + function warn(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); + } + + let activeEffectScope; + class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal track `on` calls, allow `on` call multiple times + */ + this._on = 0; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this._isPaused = false; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + pause() { + if (this._active) { + this._isPaused = true; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].pause(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].pause(); + } + } + } + /** + * Resumes the effect scope, including all child scopes and effects. + */ + resume() { + if (this._active) { + if (this._isPaused) { + this._isPaused = false; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].resume(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].resume(); + } + } + } + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else { + warn(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + if (++this._on === 1) { + this.prevScope = activeEffectScope; + activeEffectScope = this; + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + if (this._on > 0 && --this._on === 0) { + activeEffectScope = this.prevScope; + this.prevScope = void 0; + } + } + stop(fromParent) { + if (this._active) { + this._active = false; + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + this.effects.length = 0; + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + this.cleanups.length = 0; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + this.scopes.length = 0; + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + } + } + } + function effectScope(detached) { + return new EffectScope(detached); + } + function getCurrentScope() { + return activeEffectScope; + } + function onScopeDispose(fn, failSilently = false) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else if (!failSilently) { + warn( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } + } + + let activeSub; + const EffectFlags = { + "ACTIVE": 1, + "1": "ACTIVE", + "RUNNING": 2, + "2": "RUNNING", + "TRACKING": 4, + "4": "TRACKING", + "NOTIFIED": 8, + "8": "NOTIFIED", + "DIRTY": 16, + "16": "DIRTY", + "ALLOW_RECURSE": 32, + "32": "ALLOW_RECURSE", + "PAUSED": 64, + "64": "PAUSED", + "EVALUATED": 128, + "128": "EVALUATED" + }; + const pausedQueueEffects = /* @__PURE__ */ new WeakSet(); + class ReactiveEffect { + constructor(fn) { + this.fn = fn; + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 1 | 4; + /** + * @internal + */ + this.next = void 0; + /** + * @internal + */ + this.cleanup = void 0; + this.scheduler = void 0; + if (activeEffectScope && activeEffectScope.active) { + activeEffectScope.effects.push(this); + } + } + pause() { + this.flags |= 64; + } + resume() { + if (this.flags & 64) { + this.flags &= -65; + if (pausedQueueEffects.has(this)) { + pausedQueueEffects.delete(this); + this.trigger(); + } + } + } + /** + * @internal + */ + notify() { + if (this.flags & 2 && !(this.flags & 32)) { + return; + } + if (!(this.flags & 8)) { + batch(this); + } + } + run() { + if (!(this.flags & 1)) { + return this.fn(); + } + this.flags |= 2; + cleanupEffect(this); + prepareDeps(this); + const prevEffect = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = this; + shouldTrack = true; + try { + return this.fn(); + } finally { + if (activeSub !== this) { + warn( + "Active effect was not restored correctly - this is likely a Vue internal bug." + ); + } + cleanupDeps(this); + activeSub = prevEffect; + shouldTrack = prevShouldTrack; + this.flags &= -3; + } + } + stop() { + if (this.flags & 1) { + for (let link = this.deps; link; link = link.nextDep) { + removeSub(link); + } + this.deps = this.depsTail = void 0; + cleanupEffect(this); + this.onStop && this.onStop(); + this.flags &= -2; + } + } + trigger() { + if (this.flags & 64) { + pausedQueueEffects.add(this); + } else if (this.scheduler) { + this.scheduler(); + } else { + this.runIfDirty(); + } + } + /** + * @internal + */ + runIfDirty() { + if (isDirty(this)) { + this.run(); + } + } + get dirty() { + return isDirty(this); + } + } + let batchDepth = 0; + let batchedSub; + let batchedComputed; + function batch(sub, isComputed = false) { + sub.flags |= 8; + if (isComputed) { + sub.next = batchedComputed; + batchedComputed = sub; + return; + } + sub.next = batchedSub; + batchedSub = sub; + } + function startBatch() { + batchDepth++; + } + function endBatch() { + if (--batchDepth > 0) { + return; + } + if (batchedComputed) { + let e = batchedComputed; + batchedComputed = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + e = next; + } + } + let error; + while (batchedSub) { + let e = batchedSub; + batchedSub = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + if (e.flags & 1) { + try { + ; + e.trigger(); + } catch (err) { + if (!error) error = err; + } + } + e = next; + } + } + if (error) throw error; + } + function prepareDeps(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + link.version = -1; + link.prevActiveLink = link.dep.activeLink; + link.dep.activeLink = link; + } + } + function cleanupDeps(sub) { + let head; + let tail = sub.depsTail; + let link = tail; + while (link) { + const prev = link.prevDep; + if (link.version === -1) { + if (link === tail) tail = prev; + removeSub(link); + removeDep(link); + } else { + head = link; + } + link.dep.activeLink = link.prevActiveLink; + link.prevActiveLink = void 0; + link = prev; + } + sub.deps = head; + sub.depsTail = tail; + } + function isDirty(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) { + return true; + } + } + if (sub._dirty) { + return true; + } + return false; + } + function refreshComputed(computed) { + if (computed.flags & 4 && !(computed.flags & 16)) { + return; + } + computed.flags &= -17; + if (computed.globalVersion === globalVersion) { + return; + } + computed.globalVersion = globalVersion; + if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) { + return; + } + computed.flags |= 2; + const dep = computed.dep; + const prevSub = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = computed; + shouldTrack = true; + try { + prepareDeps(computed); + const value = computed.fn(computed._value); + if (dep.version === 0 || hasChanged(value, computed._value)) { + computed.flags |= 128; + computed._value = value; + dep.version++; + } + } catch (err) { + dep.version++; + throw err; + } finally { + activeSub = prevSub; + shouldTrack = prevShouldTrack; + cleanupDeps(computed); + computed.flags &= -3; + } + } + function removeSub(link, soft = false) { + const { dep, prevSub, nextSub } = link; + if (prevSub) { + prevSub.nextSub = nextSub; + link.prevSub = void 0; + } + if (nextSub) { + nextSub.prevSub = prevSub; + link.nextSub = void 0; + } + if (dep.subsHead === link) { + dep.subsHead = nextSub; + } + if (dep.subs === link) { + dep.subs = prevSub; + if (!prevSub && dep.computed) { + dep.computed.flags &= -5; + for (let l = dep.computed.deps; l; l = l.nextDep) { + removeSub(l, true); + } + } + } + if (!soft && !--dep.sc && dep.map) { + dep.map.delete(dep.key); + } + } + function removeDep(link) { + const { prevDep, nextDep } = link; + if (prevDep) { + prevDep.nextDep = nextDep; + link.prevDep = void 0; + } + if (nextDep) { + nextDep.prevDep = prevDep; + link.nextDep = void 0; + } + } + function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const e = new ReactiveEffect(fn); + if (options) { + extend(e, options); + } + try { + e.run(); + } catch (err) { + e.stop(); + throw err; + } + const runner = e.run.bind(e); + runner.effect = e; + return runner; + } + function stop(runner) { + runner.effect.stop(); + } + let shouldTrack = true; + const trackStack = []; + function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; + } + function enableTracking() { + trackStack.push(shouldTrack); + shouldTrack = true; + } + function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; + } + function onEffectCleanup(fn, failSilently = false) { + if (activeSub instanceof ReactiveEffect) { + activeSub.cleanup = fn; + } else if (!failSilently) { + warn( + `onEffectCleanup() was called when there was no active effect to associate with.` + ); + } + } + function cleanupEffect(e) { + const { cleanup } = e; + e.cleanup = void 0; + if (cleanup) { + const prevSub = activeSub; + activeSub = void 0; + try { + cleanup(); + } finally { + activeSub = prevSub; + } + } + } + + let globalVersion = 0; + class Link { + constructor(sub, dep) { + this.sub = sub; + this.dep = dep; + this.version = dep.version; + this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; + } + } + class Dep { + // TODO isolatedDeclarations "__v_skip" + constructor(computed) { + this.computed = computed; + this.version = 0; + /** + * Link between this dep and the current active effect + */ + this.activeLink = void 0; + /** + * Doubly linked list representing the subscribing effects (tail) + */ + this.subs = void 0; + /** + * For object property deps cleanup + */ + this.map = void 0; + this.key = void 0; + /** + * Subscriber counter + */ + this.sc = 0; + /** + * @internal + */ + this.__v_skip = true; + { + this.subsHead = void 0; + } + } + track(debugInfo) { + if (!activeSub || !shouldTrack || activeSub === this.computed) { + return; + } + let link = this.activeLink; + if (link === void 0 || link.sub !== activeSub) { + link = this.activeLink = new Link(activeSub, this); + if (!activeSub.deps) { + activeSub.deps = activeSub.depsTail = link; + } else { + link.prevDep = activeSub.depsTail; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + } + addSub(link); + } else if (link.version === -1) { + link.version = this.version; + if (link.nextDep) { + const next = link.nextDep; + next.prevDep = link.prevDep; + if (link.prevDep) { + link.prevDep.nextDep = next; + } + link.prevDep = activeSub.depsTail; + link.nextDep = void 0; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + if (activeSub.deps === link) { + activeSub.deps = next; + } + } + } + if (activeSub.onTrack) { + activeSub.onTrack( + extend( + { + effect: activeSub + }, + debugInfo + ) + ); + } + return link; + } + trigger(debugInfo) { + this.version++; + globalVersion++; + this.notify(debugInfo); + } + notify(debugInfo) { + startBatch(); + try { + if (true) { + for (let head = this.subsHead; head; head = head.nextSub) { + if (head.sub.onTrigger && !(head.sub.flags & 8)) { + head.sub.onTrigger( + extend( + { + effect: head.sub + }, + debugInfo + ) + ); + } + } + } + for (let link = this.subs; link; link = link.prevSub) { + if (link.sub.notify()) { + ; + link.sub.dep.notify(); + } + } + } finally { + endBatch(); + } + } + } + function addSub(link) { + link.dep.sc++; + if (link.sub.flags & 4) { + const computed = link.dep.computed; + if (computed && !link.dep.subs) { + computed.flags |= 4 | 16; + for (let l = computed.deps; l; l = l.nextDep) { + addSub(l); + } + } + const currentTail = link.dep.subs; + if (currentTail !== link) { + link.prevSub = currentTail; + if (currentTail) currentTail.nextSub = link; + } + if (link.dep.subsHead === void 0) { + link.dep.subsHead = link; + } + link.dep.subs = link; + } + } + const targetMap = /* @__PURE__ */ new WeakMap(); + const ITERATE_KEY = Symbol( + "Object iterate" + ); + const MAP_KEY_ITERATE_KEY = Symbol( + "Map keys iterate" + ); + const ARRAY_ITERATE_KEY = Symbol( + "Array iterate" + ); + function track(target, type, key) { + if (shouldTrack && activeSub) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = new Dep()); + dep.map = depsMap; + dep.key = key; + } + { + dep.track({ + target, + type, + key + }); + } + } + } + function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + globalVersion++; + return; + } + const run = (dep) => { + if (dep) { + { + dep.trigger({ + target, + type, + key, + newValue, + oldValue, + oldTarget + }); + } + } + }; + startBatch(); + if (type === "clear") { + depsMap.forEach(run); + } else { + const targetIsArray = isArray(target); + const isArrayIndex = targetIsArray && isIntegerKey(key); + if (targetIsArray && key === "length") { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) { + run(dep); + } + }); + } else { + if (key !== void 0 || depsMap.has(void 0)) { + run(depsMap.get(key)); + } + if (isArrayIndex) { + run(depsMap.get(ARRAY_ITERATE_KEY)); + } + switch (type) { + case "add": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isArrayIndex) { + run(depsMap.get("length")); + } + break; + case "delete": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + run(depsMap.get(ITERATE_KEY)); + } + break; + } + } + } + endBatch(); + } + function getDepFromReactive(object, key) { + const depMap = targetMap.get(object); + return depMap && depMap.get(key); + } + + function reactiveReadArray(array) { + const raw = toRaw(array); + if (raw === array) return raw; + track(raw, "iterate", ARRAY_ITERATE_KEY); + return isShallow(array) ? raw : raw.map(toReactive); + } + function shallowReadArray(arr) { + track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY); + return arr; + } + const arrayInstrumentations = { + __proto__: null, + [Symbol.iterator]() { + return iterator(this, Symbol.iterator, toReactive); + }, + concat(...args) { + return reactiveReadArray(this).concat( + ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x) + ); + }, + entries() { + return iterator(this, "entries", (value) => { + value[1] = toReactive(value[1]); + return value; + }); + }, + every(fn, thisArg) { + return apply(this, "every", fn, thisArg, void 0, arguments); + }, + filter(fn, thisArg) { + return apply(this, "filter", fn, thisArg, (v) => v.map(toReactive), arguments); + }, + find(fn, thisArg) { + return apply(this, "find", fn, thisArg, toReactive, arguments); + }, + findIndex(fn, thisArg) { + return apply(this, "findIndex", fn, thisArg, void 0, arguments); + }, + findLast(fn, thisArg) { + return apply(this, "findLast", fn, thisArg, toReactive, arguments); + }, + findLastIndex(fn, thisArg) { + return apply(this, "findLastIndex", fn, thisArg, void 0, arguments); + }, + // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement + forEach(fn, thisArg) { + return apply(this, "forEach", fn, thisArg, void 0, arguments); + }, + includes(...args) { + return searchProxy(this, "includes", args); + }, + indexOf(...args) { + return searchProxy(this, "indexOf", args); + }, + join(separator) { + return reactiveReadArray(this).join(separator); + }, + // keys() iterator only reads `length`, no optimisation required + lastIndexOf(...args) { + return searchProxy(this, "lastIndexOf", args); + }, + map(fn, thisArg) { + return apply(this, "map", fn, thisArg, void 0, arguments); + }, + pop() { + return noTracking(this, "pop"); + }, + push(...args) { + return noTracking(this, "push", args); + }, + reduce(fn, ...args) { + return reduce(this, "reduce", fn, args); + }, + reduceRight(fn, ...args) { + return reduce(this, "reduceRight", fn, args); + }, + shift() { + return noTracking(this, "shift"); + }, + // slice could use ARRAY_ITERATE but also seems to beg for range tracking + some(fn, thisArg) { + return apply(this, "some", fn, thisArg, void 0, arguments); + }, + splice(...args) { + return noTracking(this, "splice", args); + }, + toReversed() { + return reactiveReadArray(this).toReversed(); + }, + toSorted(comparer) { + return reactiveReadArray(this).toSorted(comparer); + }, + toSpliced(...args) { + return reactiveReadArray(this).toSpliced(...args); + }, + unshift(...args) { + return noTracking(this, "unshift", args); + }, + values() { + return iterator(this, "values", toReactive); + } + }; + function iterator(self, method, wrapValue) { + const arr = shallowReadArray(self); + const iter = arr[method](); + if (arr !== self && !isShallow(self)) { + iter._next = iter.next; + iter.next = () => { + const result = iter._next(); + if (result.value) { + result.value = wrapValue(result.value); + } + return result; + }; + } + return iter; + } + const arrayProto = Array.prototype; + function apply(self, method, fn, thisArg, wrappedRetFn, args) { + const arr = shallowReadArray(self); + const needsWrap = arr !== self && !isShallow(self); + const methodFn = arr[method]; + if (methodFn !== arrayProto[method]) { + const result2 = methodFn.apply(self, args); + return needsWrap ? toReactive(result2) : result2; + } + let wrappedFn = fn; + if (arr !== self) { + if (needsWrap) { + wrappedFn = function(item, index) { + return fn.call(this, toReactive(item), index, self); + }; + } else if (fn.length > 2) { + wrappedFn = function(item, index) { + return fn.call(this, item, index, self); + }; + } + } + const result = methodFn.call(arr, wrappedFn, thisArg); + return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result; + } + function reduce(self, method, fn, args) { + const arr = shallowReadArray(self); + let wrappedFn = fn; + if (arr !== self) { + if (!isShallow(self)) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, toReactive(item), index, self); + }; + } else if (fn.length > 3) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, item, index, self); + }; + } + } + return arr[method](wrappedFn, ...args); + } + function searchProxy(self, method, args) { + const arr = toRaw(self); + track(arr, "iterate", ARRAY_ITERATE_KEY); + const res = arr[method](...args); + if ((res === -1 || res === false) && isProxy(args[0])) { + args[0] = toRaw(args[0]); + return arr[method](...args); + } + return res; + } + function noTracking(self, method, args = []) { + pauseTracking(); + startBatch(); + const res = toRaw(self)[method].apply(self, args); + endBatch(); + resetTracking(); + return res; + } + + const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); + const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) + ); + function hasOwnProperty(key) { + if (!isSymbol(key)) key = String(key); + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); + } + class BaseReactiveHandler { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + if (key === "__v_skip") return target["__v_skip"]; + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the receiver is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + let fn; + if (targetIsArray && (fn = arrayInstrumentations[key])) { + return fn; + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get( + target, + key, + // if this is a proxy wrapping a ref, return methods using the raw ref + // as receiver so that we don't have to call `toRaw` on the ref in all + // its class methods + isRef(target) ? target : receiver + ); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } + } + class MutableReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set( + target, + key, + value, + isRef(target) ? target : receiver + ); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } + } + class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + { + warn( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + { + warn( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + } + const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); + const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); + const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true); + const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + + const toShallow = (value) => value; + const getProto = (v) => Reflect.getPrototypeOf(v); + function createIterableMethod(method, isReadonly2, isShallow2) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; + } + function createReadonlyMethod(type) { + return function(...args) { + { + const key = args[0] ? `on key "${args[0]}" ` : ``; + warn( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; + } + function createInstrumentations(readonly, shallow) { + const instrumentations = { + get(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has } = getProto(rawTarget); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + if (has.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } + }, + get size() { + const target = this["__v_raw"]; + !readonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); + }, + has(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); + }, + forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + !readonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + } + }; + extend( + instrumentations, + readonly ? { + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear") + } : { + add(value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; + }, + set(key, value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + const oldValue = get.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; + }, + delete(key) { + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + const oldValue = get ? get.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + }, + clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = isMap(target) ? new Map(target) : new Set(target) ; + const result = target.clear(); + if (hadItems) { + trigger( + target, + "clear", + void 0, + void 0, + oldTarget + ); + } + return result; + } + } + ); + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator + ]; + iteratorMethods.forEach((method) => { + instrumentations[method] = createIterableMethod(method, readonly, shallow); + }); + return instrumentations; + } + function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = createInstrumentations(isReadonly2, shallow); + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; + } + const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) + }; + const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) + }; + const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) + }; + const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) + }; + function checkIdentityKeys(target, has, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has.call(target, rawKey)) { + const type = toRawType(target); + warn( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } + } + + const reactiveMap = /* @__PURE__ */ new WeakMap(); + const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); + const readonlyMap = /* @__PURE__ */ new WeakMap(); + const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); + function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } + } + function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value)); + } + function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); + } + function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); + } + function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); + } + function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); + } + function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + { + warn( + `value cannot be made ${isReadonly2 ? "readonly" : "reactive"}: ${String( + target + )}` + ); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; + } + function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); + } + function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); + } + function isShallow(value) { + return !!(value && value["__v_isShallow"]); + } + function isProxy(value) { + return value ? !!value["__v_raw"] : false; + } + function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; + } + function markRaw(value) { + if (!hasOwn(value, "__v_skip") && Object.isExtensible(value)) { + def(value, "__v_skip", true); + } + return value; + } + const toReactive = (value) => isObject(value) ? reactive(value) : value; + const toReadonly = (value) => isObject(value) ? readonly(value) : value; + + function isRef(r) { + return r ? r["__v_isRef"] === true : false; + } + function ref(value) { + return createRef(value, false); + } + function shallowRef(value) { + return createRef(value, true); + } + function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); + } + class RefImpl { + constructor(value, isShallow2) { + this.dep = new Dep(); + this["__v_isRef"] = true; + this["__v_isShallow"] = false; + this._rawValue = isShallow2 ? value : toRaw(value); + this._value = isShallow2 ? value : toReactive(value); + this["__v_isShallow"] = isShallow2; + } + get value() { + { + this.dep.track({ + target: this, + type: "get", + key: "value" + }); + } + return this._value; + } + set value(newValue) { + const oldValue = this._rawValue; + const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue); + newValue = useDirectValue ? newValue : toRaw(newValue); + if (hasChanged(newValue, oldValue)) { + this._rawValue = newValue; + this._value = useDirectValue ? newValue : toReactive(newValue); + { + this.dep.trigger({ + target: this, + type: "set", + key: "value", + newValue, + oldValue + }); + } + } + } + } + function triggerRef(ref2) { + if (ref2.dep) { + { + ref2.dep.trigger({ + target: ref2, + type: "set", + key: "value", + newValue: ref2._value + }); + } + } + } + function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; + } + function toValue(source) { + return isFunction(source) ? source() : unref(source); + } + const shallowUnwrapHandlers = { + get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } + }; + function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); + } + class CustomRefImpl { + constructor(factory) { + this["__v_isRef"] = true; + this._value = void 0; + const dep = this.dep = new Dep(); + const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep)); + this._get = get; + this._set = set; + } + get value() { + return this._value = this._get(); + } + set value(newVal) { + this._set(newVal); + } + } + function customRef(factory) { + return new CustomRefImpl(factory); + } + function toRefs(object) { + if (!isProxy(object)) { + warn(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; + } + class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this["__v_isRef"] = true; + this._value = void 0; + } + get value() { + const val = this._object[this._key]; + return this._value = val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } + } + class GetterRefImpl { + constructor(_getter) { + this._getter = _getter; + this["__v_isRef"] = true; + this["__v_isReadonly"] = true; + this._value = void 0; + } + get value() { + return this._value = this._getter(); + } + } + function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (isFunction(source)) { + return new GetterRefImpl(source); + } else if (isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } + } + function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); + } + + class ComputedRefImpl { + constructor(fn, setter, isSSR) { + this.fn = fn; + this.setter = setter; + /** + * @internal + */ + this._value = void 0; + /** + * @internal + */ + this.dep = new Dep(this); + /** + * @internal + */ + this.__v_isRef = true; + // TODO isolatedDeclarations "__v_isReadonly" + // A computed is also a subscriber that tracks other deps + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 16; + /** + * @internal + */ + this.globalVersion = globalVersion - 1; + /** + * @internal + */ + this.next = void 0; + // for backwards compat + this.effect = this; + this["__v_isReadonly"] = !setter; + this.isSSR = isSSR; + } + /** + * @internal + */ + notify() { + this.flags |= 16; + if (!(this.flags & 8) && // avoid infinite self recursion + activeSub !== this) { + batch(this, true); + return true; + } + } + get value() { + const link = this.dep.track({ + target: this, + type: "get", + key: "value" + }) ; + refreshComputed(this); + if (link) { + link.version = this.dep.version; + } + return this._value; + } + set value(newValue) { + if (this.setter) { + this.setter(newValue); + } else { + warn("Write operation failed: computed value is readonly"); + } + } + } + function computed(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + if (isFunction(getterOrOptions)) { + getter = getterOrOptions; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, isSSR); + if (debugOptions && !isSSR) { + cRef.onTrack = debugOptions.onTrack; + cRef.onTrigger = debugOptions.onTrigger; + } + return cRef; + } + + const TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" + }; + const TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" + }; + const ReactiveFlags = { + "SKIP": "__v_skip", + "IS_REACTIVE": "__v_isReactive", + "IS_READONLY": "__v_isReadonly", + "IS_SHALLOW": "__v_isShallow", + "RAW": "__v_raw", + "IS_REF": "__v_isRef" + }; + + const WatchErrorCodes = { + "WATCH_GETTER": 2, + "2": "WATCH_GETTER", + "WATCH_CALLBACK": 3, + "3": "WATCH_CALLBACK", + "WATCH_CLEANUP": 4, + "4": "WATCH_CLEANUP" + }; + const INITIAL_WATCHER_VALUE = {}; + const cleanupMap = /* @__PURE__ */ new WeakMap(); + let activeWatcher = void 0; + function getCurrentWatcher() { + return activeWatcher; + } + function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) { + if (owner) { + let cleanups = cleanupMap.get(owner); + if (!cleanups) cleanupMap.set(owner, cleanups = []); + cleanups.push(cleanupFn); + } else if (!failSilently) { + warn( + `onWatcherCleanup() was called when there was no active watcher to associate with.` + ); + } + } + function watch(source, cb, options = EMPTY_OBJ) { + const { immediate, deep, once, scheduler, augmentJob, call } = options; + const warnInvalidSource = (s) => { + (options.onWarn || warn)( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const reactiveGetter = (source2) => { + if (deep) return source2; + if (isShallow(source2) || deep === false || deep === 0) + return traverse(source2, 1); + return traverse(source2); + }; + let effect; + let getter; + let cleanup; + let boundCleanup; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return reactiveGetter(s); + } else if (isFunction(s)) { + return call ? call(s, 2) : s(); + } else { + warnInvalidSource(s); + } + }); + } else if (isFunction(source)) { + if (cb) { + getter = call ? () => call(source, 2) : source; + } else { + getter = () => { + if (cleanup) { + pauseTracking(); + try { + cleanup(); + } finally { + resetTracking(); + } + } + const currentEffect = activeWatcher; + activeWatcher = effect; + try { + return call ? call(source, 3, [boundCleanup]) : source(boundCleanup); + } finally { + activeWatcher = currentEffect; + } + }; + } + } else { + getter = NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + const depth = deep === true ? Infinity : deep; + getter = () => traverse(baseGetter(), depth); + } + const scope = getCurrentScope(); + const watchHandle = () => { + effect.stop(); + if (scope && scope.active) { + remove(scope.effects, effect); + } + }; + if (once && cb) { + const _cb = cb; + cb = (...args) => { + _cb(...args); + watchHandle(); + }; + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = (immediateFirstRun) => { + if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) { + if (cleanup) { + cleanup(); + } + const currentWatcher = activeWatcher; + activeWatcher = effect; + try { + const args = [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + boundCleanup + ]; + oldValue = newValue; + call ? call(cb, 3, args) : ( + // @ts-expect-error + cb(...args) + ); + } finally { + activeWatcher = currentWatcher; + } + } + } else { + effect.run(); + } + }; + if (augmentJob) { + augmentJob(job); + } + effect = new ReactiveEffect(getter); + effect.scheduler = scheduler ? () => scheduler(job, false) : job; + boundCleanup = (fn) => onWatcherCleanup(fn, false, effect); + cleanup = effect.onStop = () => { + const cleanups = cleanupMap.get(effect); + if (cleanups) { + if (call) { + call(cleanups, 4); + } else { + for (const cleanup2 of cleanups) cleanup2(); + } + cleanupMap.delete(effect); + } + }; + { + effect.onTrack = options.onTrack; + effect.onTrigger = options.onTrigger; + } + if (cb) { + if (immediate) { + job(true); + } else { + oldValue = effect.run(); + } + } else if (scheduler) { + scheduler(job.bind(null, true), true); + } else { + effect.run(); + } + watchHandle.pause = effect.pause.bind(effect); + watchHandle.resume = effect.resume.bind(effect); + watchHandle.stop = watchHandle; + return watchHandle; + } + function traverse(value, depth = Infinity, seen) { + if (depth <= 0 || !isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + depth--; + if (isRef(value)) { + traverse(value.value, depth, seen); + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, depth, seen); + }); + } else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, seen); + } + for (const key of Object.getOwnPropertySymbols(value)) { + if (Object.prototype.propertyIsEnumerable.call(value, key)) { + traverse(value[key], depth, seen); + } + } + } + return value; + } + + exports.ARRAY_ITERATE_KEY = ARRAY_ITERATE_KEY; + exports.EffectFlags = EffectFlags; + exports.EffectScope = EffectScope; + exports.ITERATE_KEY = ITERATE_KEY; + exports.MAP_KEY_ITERATE_KEY = MAP_KEY_ITERATE_KEY; + exports.ReactiveEffect = ReactiveEffect; + exports.ReactiveFlags = ReactiveFlags; + exports.TrackOpTypes = TrackOpTypes; + exports.TriggerOpTypes = TriggerOpTypes; + exports.WatchErrorCodes = WatchErrorCodes; + exports.computed = computed; + exports.customRef = customRef; + exports.effect = effect; + exports.effectScope = effectScope; + exports.enableTracking = enableTracking; + exports.getCurrentScope = getCurrentScope; + exports.getCurrentWatcher = getCurrentWatcher; + exports.isProxy = isProxy; + exports.isReactive = isReactive; + exports.isReadonly = isReadonly; + exports.isRef = isRef; + exports.isShallow = isShallow; + exports.markRaw = markRaw; + exports.onEffectCleanup = onEffectCleanup; + exports.onScopeDispose = onScopeDispose; + exports.onWatcherCleanup = onWatcherCleanup; + exports.pauseTracking = pauseTracking; + exports.proxyRefs = proxyRefs; + exports.reactive = reactive; + exports.reactiveReadArray = reactiveReadArray; + exports.readonly = readonly; + exports.ref = ref; + exports.resetTracking = resetTracking; + exports.shallowReactive = shallowReactive; + exports.shallowReadArray = shallowReadArray; + exports.shallowReadonly = shallowReadonly; + exports.shallowRef = shallowRef; + exports.stop = stop; + exports.toRaw = toRaw; + exports.toReactive = toReactive; + exports.toReadonly = toReadonly; + exports.toRef = toRef; + exports.toRefs = toRefs; + exports.toValue = toValue; + exports.track = track; + exports.traverse = traverse; + exports.trigger = trigger; + exports.triggerRef = triggerRef; + exports.unref = unref; + exports.watch = watch; + + return exports; + +})({}); diff --git a/node_modules/@vue/reactivity/dist/reactivity.global.prod.js b/node_modules/@vue/reactivity/dist/reactivity.global.prod.js new file mode 100644 index 0000000..c27ffd7 --- /dev/null +++ b/node_modules/@vue/reactivity/dist/reactivity.global.prod.js @@ -0,0 +1,5 @@ +/** +* @vue/reactivity v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/var VueReactivity=function(e){"use strict";let t,i,s,r,n,l={},o=()=>{},a=Object.assign,u=Object.prototype.hasOwnProperty,c=(e,t)=>u.call(e,t),f=Array.isArray,h=e=>"[object Map]"===v(e),p=e=>"symbol"==typeof e,d=e=>null!==e&&"object"==typeof e,_=Object.prototype.toString,v=e=>_.call(e),g=e=>"string"==typeof e&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,y=(e,t)=>!Object.is(e,t);class R{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=t,!e&&t&&(this.index=(t.scopes||(t.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){let e,t;if(this._isPaused=!0,this.scopes)for(e=0,t=this.scopes.length;e<t;e++)this.scopes[e].pause();for(e=0,t=this.effects.length;e<t;e++)this.effects[e].pause()}}resume(){if(this._active&&this._isPaused){let e,t;if(this._isPaused=!1,this.scopes)for(e=0,t=this.scopes.length;e<t;e++)this.scopes[e].resume();for(e=0,t=this.effects.length;e<t;e++)this.effects[e].resume()}}run(e){if(this._active){let i=t;try{return t=this,e()}finally{t=i}}}on(){1==++this._on&&(this.prevScope=t,t=this)}off(){this._on>0&&0==--this._on&&(t=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){let t,i;for(t=0,this._active=!1,i=this.effects.length;t<i;t++)this.effects[t].stop();for(t=0,this.effects.length=0,i=this.cleanups.length;t<i;t++)this.cleanups[t]();if(this.cleanups.length=0,this.scopes){for(t=0,i=this.scopes.length;t<i;t++)this.scopes[t].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!e){let e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.parent=void 0}}}let b=new WeakSet;class w{constructor(e){this.fn=e,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,t&&t.active&&t.effects.push(this)}pause(){this.flags|=64}resume(){64&this.flags&&(this.flags&=-65,b.has(this)&&(b.delete(this),this.trigger()))}notify(){(!(2&this.flags)||32&this.flags)&&(8&this.flags||E(this))}run(){if(!(1&this.flags))return this.fn();this.flags|=2,C(this),T(this);let e=i,t=O;i=this,O=!0;try{return this.fn()}finally{m(this),i=e,O=t,this.flags&=-3}}stop(){if(1&this.flags){for(let e=this.deps;e;e=e.nextDep)D(e);this.deps=this.depsTail=void 0,C(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){64&this.flags?b.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){A(this)&&this.run()}get dirty(){return A(this)}}let S=0;function E(e,t=!1){if(e.flags|=8,t){e.next=r,r=e;return}e.next=s,s=e}function x(){let e;if(!(--S>0)){if(r){let e=r;for(r=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}for(;s;){let t=s;for(s=void 0;t;){let i=t.next;if(t.next=void 0,t.flags&=-9,1&t.flags)try{t.trigger()}catch(t){e||(e=t)}t=i}}if(e)throw e}}function T(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function m(e){let t,i=e.depsTail,s=i;for(;s;){let e=s.prevDep;-1===s.version?(s===i&&(i=e),D(s),function(e){let{prevDep:t,nextDep:i}=e;t&&(t.nextDep=i,e.prevDep=void 0),i&&(i.prevDep=t,e.nextDep=void 0)}(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=e}e.deps=t,e.depsTail=i}function A(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(k(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function k(e){if(4&e.flags&&!(16&e.flags)||(e.flags&=-17,e.globalVersion===P)||(e.globalVersion=P,!e.isSSR&&128&e.flags&&(!e.deps&&!e._dirty||!A(e))))return;e.flags|=2;let t=e.dep,s=i,r=O;i=e,O=!0;try{T(e);let i=e.fn(e._value);(0===t.version||y(i,e._value))&&(e.flags|=128,e._value=i,t.version++)}catch(e){throw t.version++,e}finally{i=s,O=r,m(e),e.flags&=-3}}function D(e,t=!1){let{dep:i,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),i.subs===e&&(i.subs=s,!s&&i.computed)){i.computed.flags&=-5;for(let e=i.computed.deps;e;e=e.nextDep)D(e,!0)}t||--i.sc||!i.map||i.map.delete(i.key)}let O=!0,I=[];function L(){I.push(O),O=!1}function j(){let e=I.pop();O=void 0===e||e}function C(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=i;i=void 0;try{t()}finally{i=e}}}let P=0;class W{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class N{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!i||!O||i===this.computed)return;let t=this.activeLink;if(void 0===t||t.sub!==i)t=this.activeLink=new W(i,this),i.deps?(t.prevDep=i.depsTail,i.depsTail.nextDep=t,i.depsTail=t):i.deps=i.depsTail=t,function e(t){if(t.dep.sc++,4&t.sub.flags){let i=t.dep.computed;if(i&&!t.dep.subs){i.flags|=20;for(let t=i.deps;t;t=t.nextDep)e(t)}let s=t.dep.subs;s!==t&&(t.prevSub=s,s&&(s.nextSub=t)),t.dep.subs=t}}(t);else if(-1===t.version&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=i.depsTail,t.nextDep=void 0,i.depsTail.nextDep=t,i.depsTail=t,i.deps===t&&(i.deps=e)}return t}trigger(e){this.version++,P++,this.notify(e)}notify(e){S++;try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{x()}}}let V=new WeakMap,K=Symbol(""),M=Symbol(""),U=Symbol("");function H(e,t,s){if(O&&i){let t=V.get(e);t||V.set(e,t=new Map);let i=t.get(s);i||(t.set(s,i=new N),i.map=t,i.key=s),i.track()}}function Y(e,t,i,s,r,n){let l=V.get(e);if(!l)return void P++;let o=e=>{e&&e.trigger()};if(S++,"clear"===t)l.forEach(o);else{let r=f(e),n=r&&g(i);if(r&&"length"===i){let e=Number(s);l.forEach((t,i)=>{("length"===i||i===U||!p(i)&&i>=e)&&o(t)})}else switch((void 0!==i||l.has(void 0))&&o(l.get(i)),n&&o(l.get(U)),t){case"add":r?n&&o(l.get("length")):(o(l.get(K)),h(e)&&o(l.get(M)));break;case"delete":!r&&(o(l.get(K)),h(e)&&o(l.get(M)));break;case"set":h(e)&&o(l.get(K))}}x()}function G(e){let t=ek(e);return t===e?t:(H(t,"iterate",U),em(e)?t:t.map(eD))}function F(e){return H(e=ek(e),"iterate",U),e}let z={__proto__:null,[Symbol.iterator](){return B(this,Symbol.iterator,eD)},concat(...e){return G(this).concat(...e.map(e=>f(e)?G(e):e))},entries(){return B(this,"entries",e=>(e[1]=eD(e[1]),e))},every(e,t){return J(this,"every",e,t,void 0,arguments)},filter(e,t){return J(this,"filter",e,t,e=>e.map(eD),arguments)},find(e,t){return J(this,"find",e,t,eD,arguments)},findIndex(e,t){return J(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return J(this,"findLast",e,t,eD,arguments)},findLastIndex(e,t){return J(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return J(this,"forEach",e,t,void 0,arguments)},includes(...e){return X(this,"includes",e)},indexOf(...e){return X(this,"indexOf",e)},join(e){return G(this).join(e)},lastIndexOf(...e){return X(this,"lastIndexOf",e)},map(e,t){return J(this,"map",e,t,void 0,arguments)},pop(){return Z(this,"pop")},push(...e){return Z(this,"push",e)},reduce(e,...t){return Q(this,"reduce",e,t)},reduceRight(e,...t){return Q(this,"reduceRight",e,t)},shift(){return Z(this,"shift")},some(e,t){return J(this,"some",e,t,void 0,arguments)},splice(...e){return Z(this,"splice",e)},toReversed(){return G(this).toReversed()},toSorted(e){return G(this).toSorted(e)},toSpliced(...e){return G(this).toSpliced(...e)},unshift(...e){return Z(this,"unshift",e)},values(){return B(this,"values",eD)}};function B(e,t,i){let s=F(e),r=s[t]();return s===e||em(e)||(r._next=r.next,r.next=()=>{let e=r._next();return e.value&&(e.value=i(e.value)),e}),r}let q=Array.prototype;function J(e,t,i,s,r,n){let l=F(e),o=l!==e&&!em(e),a=l[t];if(a!==q[t]){let t=a.apply(e,n);return o?eD(t):t}let u=i;l!==e&&(o?u=function(t,s){return i.call(this,eD(t),s,e)}:i.length>2&&(u=function(t,s){return i.call(this,t,s,e)}));let c=a.call(l,u,s);return o&&r?r(c):c}function Q(e,t,i,s){let r=F(e),n=i;return r!==e&&(em(e)?i.length>3&&(n=function(t,s,r){return i.call(this,t,s,r,e)}):n=function(t,s,r){return i.call(this,t,eD(s),r,e)}),r[t](n,...s)}function X(e,t,i){let s=ek(e);H(s,"iterate",U);let r=s[t](...i);return(-1===r||!1===r)&&eA(i[0])?(i[0]=ek(i[0]),s[t](...i)):r}function Z(e,t,i=[]){L(),S++;let s=ek(e)[t].apply(e,i);return x(),j(),s}let $=function(e){let t=Object.create(null);for(let i of e.split(","))t[i]=1;return e=>e in t}("__proto__,__v_isRef,__isVue"),ee=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>"arguments"!==e&&"caller"!==e).map(e=>Symbol[e]).filter(p));function et(e){p(e)||(e=String(e));let t=ek(this);return H(t,"has",e),t.hasOwnProperty(e)}class ei{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,i){if("__v_skip"===t)return e.__v_skip;let s=this._isReadonly,r=this._isShallow;if("__v_isReactive"===t)return!s;if("__v_isReadonly"===t)return s;if("__v_isShallow"===t)return r;if("__v_raw"===t)return i===(s?r?eb:eR:r?ey:eg).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(i)?e:void 0;let n=f(e);if(!s){let e;if(n&&(e=z[t]))return e;if("hasOwnProperty"===t)return et}let l=Reflect.get(e,t,eI(e)?e:i);return(p(t)?ee.has(t):$(t))||(s||H(e,"get",t),r)?l:eI(l)?n&&g(t)?l:l.value:d(l)?s?eS(l):ew(l):l}}class es extends ei{constructor(e=!1){super(!1,e)}set(e,t,i,s){let r=e[t];if(!this._isShallow){let t=eT(r);if(em(i)||eT(i)||(r=ek(r),i=ek(i)),!f(e)&&eI(r)&&!eI(i))if(t)return!1;else return r.value=i,!0}let n=f(e)&&g(t)?Number(t)<e.length:c(e,t),l=Reflect.set(e,t,i,eI(e)?e:s);return e===ek(s)&&(n?y(i,r)&&Y(e,"set",t,i):Y(e,"add",t,i)),l}deleteProperty(e,t){let i=c(e,t);e[t];let s=Reflect.deleteProperty(e,t);return s&&i&&Y(e,"delete",t,void 0),s}has(e,t){let i=Reflect.has(e,t);return p(t)&&ee.has(t)||H(e,"has",t),i}ownKeys(e){return H(e,"iterate",f(e)?"length":K),Reflect.ownKeys(e)}}class er extends ei{constructor(e=!1){super(!0,e)}set(e,t){return!0}deleteProperty(e,t){return!0}}let en=new es,el=new er,eo=new es(!0),ea=new er(!0),eu=e=>e,ec=e=>Reflect.getPrototypeOf(e);function ef(e){return function(){return"delete"!==e&&("clear"===e?void 0:this)}}function eh(e,t){let i=function(e,t){let i={get(i){let s=this.__v_raw,r=ek(s),n=ek(i);e||(y(i,n)&&H(r,"get",i),H(r,"get",n));let{has:l}=ec(r),o=t?eu:e?eO:eD;return l.call(r,i)?o(s.get(i)):l.call(r,n)?o(s.get(n)):void(s!==r&&s.get(i))},get size(){let t=this.__v_raw;return e||H(ek(t),"iterate",K),Reflect.get(t,"size",t)},has(t){let i=this.__v_raw,s=ek(i),r=ek(t);return e||(y(t,r)&&H(s,"has",t),H(s,"has",r)),t===r?i.has(t):i.has(t)||i.has(r)},forEach(i,s){let r=this,n=r.__v_raw,l=ek(n),o=t?eu:e?eO:eD;return e||H(l,"iterate",K),n.forEach((e,t)=>i.call(s,o(e),o(t),r))}};return a(i,e?{add:ef("add"),set:ef("set"),delete:ef("delete"),clear:ef("clear")}:{add(e){t||em(e)||eT(e)||(e=ek(e));let i=ek(this);return ec(i).has.call(i,e)||(i.add(e),Y(i,"add",e,e)),this},set(e,i){t||em(i)||eT(i)||(i=ek(i));let s=ek(this),{has:r,get:n}=ec(s),l=r.call(s,e);l||(e=ek(e),l=r.call(s,e));let o=n.call(s,e);return s.set(e,i),l?y(i,o)&&Y(s,"set",e,i):Y(s,"add",e,i),this},delete(e){let t=ek(this),{has:i,get:s}=ec(t),r=i.call(t,e);r||(e=ek(e),r=i.call(t,e)),s&&s.call(t,e);let n=t.delete(e);return r&&Y(t,"delete",e,void 0),n},clear(){let e=ek(this),t=0!==e.size,i=e.clear();return t&&Y(e,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{i[s]=function(...i){let r=this.__v_raw,n=ek(r),l=h(n),o="entries"===s||s===Symbol.iterator&&l,a=r[s](...i),u=t?eu:e?eO:eD;return e||H(n,"iterate","keys"===s&&l?M:K),{next(){let{value:e,done:t}=a.next();return t?{value:e,done:t}:{value:o?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}),i}(e,t);return(t,s,r)=>"__v_isReactive"===s?!e:"__v_isReadonly"===s?e:"__v_raw"===s?t:Reflect.get(c(i,s)&&s in t?i:t,s,r)}let ep={get:eh(!1,!1)},ed={get:eh(!1,!0)},e_={get:eh(!0,!1)},ev={get:eh(!0,!0)},eg=new WeakMap,ey=new WeakMap,eR=new WeakMap,eb=new WeakMap;function ew(e){return eT(e)?e:eE(e,!1,en,ep,eg)}function eS(e){return eE(e,!0,el,e_,eR)}function eE(e,t,i,s,r){var n;if(!d(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;let l=(n=e).__v_skip||!Object.isExtensible(n)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(v(n).slice(8,-1));if(0===l)return e;let o=r.get(e);if(o)return o;let a=new Proxy(e,2===l?s:i);return r.set(e,a),a}function ex(e){return eT(e)?ex(e.__v_raw):!!(e&&e.__v_isReactive)}function eT(e){return!!(e&&e.__v_isReadonly)}function em(e){return!!(e&&e.__v_isShallow)}function eA(e){return!!e&&!!e.__v_raw}function ek(e){let t=e&&e.__v_raw;return t?ek(t):e}let eD=e=>d(e)?ew(e):e,eO=e=>d(e)?eS(e):e;function eI(e){return!!e&&!0===e.__v_isRef}function eL(e){return ej(e,!1)}function ej(e,t){return eI(e)?e:new eC(e,t)}class eC{constructor(e,t){this.dep=new N,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:ek(e),this._value=t?e:eD(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,i=this.__v_isShallow||em(e)||eT(e);y(e=i?e:ek(e),t)&&(this._rawValue=e,this._value=i?e:eD(e),this.dep.trigger())}}function eP(e){return eI(e)?e.value:e}let eW={get:(e,t,i)=>"__v_raw"===t?e:eP(Reflect.get(e,t,i)),set:(e,t,i,s)=>{let r=e[t];return eI(r)&&!eI(i)?(r.value=i,!0):Reflect.set(e,t,i,s)}};class eN{constructor(e){this.__v_isRef=!0,this._value=void 0;let t=this.dep=new N,{get:i,set:s}=e(t.track.bind(t),t.trigger.bind(t));this._get=i,this._set=s}get value(){return this._value=this._get()}set value(e){this._set(e)}}class eV{constructor(e,t,i){this._object=e,this._key=t,this._defaultValue=i,this.__v_isRef=!0,this._value=void 0}get value(){let e=this._object[this._key];return this._value=void 0===e?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return function(e,t){let i=V.get(e);return i&&i.get(t)}(ek(this._object),this._key)}}class eK{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function eM(e,t,i){let s=e[t];return eI(s)?s:new eV(e,t,i)}class eU{constructor(e,t,i){this.fn=e,this.setter=t,this._value=void 0,this.dep=new N(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=P-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=i}notify(){if(this.flags|=16,!(8&this.flags)&&i!==this)return E(this,!0),!0}get value(){let e=this.dep.track();return k(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}let eH={},eY=new WeakMap;function eG(e,t=!1,i=n){if(i){let t=eY.get(i);t||eY.set(i,t=[]),t.push(e)}}function eF(e,t=1/0,i){if(t<=0||!d(e)||e.__v_skip||(i=i||new Set).has(e))return e;if(i.add(e),t--,eI(e))eF(e.value,t,i);else if(f(e))for(let s=0;s<e.length;s++)eF(e[s],t,i);else if("[object Set]"===v(e)||h(e))e.forEach(e=>{eF(e,t,i)});else if("[object Object]"===v(e)){for(let s in e)eF(e[s],t,i);for(let s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&eF(e[s],t,i)}return e}return e.ARRAY_ITERATE_KEY=U,e.EffectFlags={ACTIVE:1,1:"ACTIVE",RUNNING:2,2:"RUNNING",TRACKING:4,4:"TRACKING",NOTIFIED:8,8:"NOTIFIED",DIRTY:16,16:"DIRTY",ALLOW_RECURSE:32,32:"ALLOW_RECURSE",PAUSED:64,64:"PAUSED",EVALUATED:128,128:"EVALUATED"},e.EffectScope=R,e.ITERATE_KEY=K,e.MAP_KEY_ITERATE_KEY=M,e.ReactiveEffect=w,e.ReactiveFlags={SKIP:"__v_skip",IS_REACTIVE:"__v_isReactive",IS_READONLY:"__v_isReadonly",IS_SHALLOW:"__v_isShallow",RAW:"__v_raw",IS_REF:"__v_isRef"},e.TrackOpTypes={GET:"get",HAS:"has",ITERATE:"iterate"},e.TriggerOpTypes={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"},e.WatchErrorCodes={WATCH_GETTER:2,2:"WATCH_GETTER",WATCH_CALLBACK:3,3:"WATCH_CALLBACK",WATCH_CLEANUP:4,4:"WATCH_CLEANUP"},e.computed=function(e,t,i=!1){let s,r;return"function"==typeof e?s=e:(s=e.get,r=e.set),new eU(s,r,i)},e.customRef=function(e){return new eN(e)},e.effect=function(e,t){e.effect instanceof w&&(e=e.effect.fn);let i=new w(e);t&&a(i,t);try{i.run()}catch(e){throw i.stop(),e}let s=i.run.bind(i);return s.effect=i,s},e.effectScope=function(e){return new R(e)},e.enableTracking=function(){I.push(O),O=!0},e.getCurrentScope=function(){return t},e.getCurrentWatcher=function(){return n},e.isProxy=eA,e.isReactive=ex,e.isReadonly=eT,e.isRef=eI,e.isShallow=em,e.markRaw=function(e){return!c(e,"__v_skip")&&Object.isExtensible(e)&&((e,t,i,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:i})})(e,"__v_skip",!0),e},e.onEffectCleanup=function(e,t=!1){i instanceof w&&(i.cleanup=e)},e.onScopeDispose=function(e,i=!1){t&&t.cleanups.push(e)},e.onWatcherCleanup=eG,e.pauseTracking=L,e.proxyRefs=function(e){return ex(e)?e:new Proxy(e,eW)},e.reactive=ew,e.reactiveReadArray=G,e.readonly=eS,e.ref=eL,e.resetTracking=j,e.shallowReactive=function(e){return eE(e,!1,eo,ed,ey)},e.shallowReadArray=F,e.shallowReadonly=function(e){return eE(e,!0,ea,ev,eb)},e.shallowRef=function(e){return ej(e,!0)},e.stop=function(e){e.effect.stop()},e.toRaw=ek,e.toReactive=eD,e.toReadonly=eO,e.toRef=function(e,t,i){return eI(e)?e:"function"==typeof e?new eK(e):d(e)&&arguments.length>1?eM(e,t,i):eL(e)},e.toRefs=function(e){let t=f(e)?Array(e.length):{};for(let i in e)t[i]=eM(e,i);return t},e.toValue=function(e){return"function"==typeof e?e():eP(e)},e.track=H,e.traverse=eF,e.trigger=Y,e.triggerRef=function(e){e.dep&&e.dep.trigger()},e.unref=eP,e.watch=function(e,i,s=l){let r,a,u,c,{immediate:h,deep:p,once:d,scheduler:_,augmentJob:v,call:g}=s,R=e=>p?e:em(e)||!1===p||0===p?eF(e,1):eF(e),b=!1,S=!1;if(eI(e)?(a=()=>e.value,b=em(e)):ex(e)?(a=()=>R(e),b=!0):f(e)?(S=!0,b=e.some(e=>ex(e)||em(e)),a=()=>e.map(e=>eI(e)?e.value:ex(e)?R(e):"function"==typeof e?g?g(e,2):e():void 0)):a="function"==typeof e?i?g?()=>g(e,2):e:()=>{if(u){L();try{u()}finally{j()}}let t=n;n=r;try{return g?g(e,3,[c]):e(c)}finally{n=t}}:o,i&&p){let e=a,t=!0===p?1/0:p;a=()=>eF(e(),t)}let E=t,x=()=>{r.stop(),E&&E.active&&((e,t)=>{let i=e.indexOf(t);i>-1&&e.splice(i,1)})(E.effects,r)};if(d&&i){let e=i;i=(...t)=>{e(...t),x()}}let T=S?Array(e.length).fill(eH):eH,m=e=>{if(1&r.flags&&(r.dirty||e))if(i){let e=r.run();if(p||b||(S?e.some((e,t)=>y(e,T[t])):y(e,T))){u&&u();let t=n;n=r;try{let t=[e,T===eH?void 0:S&&T[0]===eH?[]:T,c];T=e,g?g(i,3,t):i(...t)}finally{n=t}}}else r.run()};return v&&v(m),(r=new w(a)).scheduler=_?()=>_(m,!1):m,c=e=>eG(e,!1,r),u=r.onStop=()=>{let e=eY.get(r);if(e){if(g)g(e,4);else for(let t of e)t();eY.delete(r)}},i?h?m(!0):T=r.run():_?_(m.bind(null,!0),!0):r.run(),x.pause=r.pause.bind(r),x.resume=r.resume.bind(r),x.stop=x,x},e}({}); diff --git a/node_modules/@vue/reactivity/index.js b/node_modules/@vue/reactivity/index.js new file mode 100644 index 0000000..04a8ba5 --- /dev/null +++ b/node_modules/@vue/reactivity/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/reactivity.cjs.prod.js') +} else { + module.exports = require('./dist/reactivity.cjs.js') +} diff --git a/node_modules/@vue/reactivity/package.json b/node_modules/@vue/reactivity/package.json new file mode 100644 index 0000000..1c057d4 --- /dev/null +++ b/node_modules/@vue/reactivity/package.json @@ -0,0 +1,55 @@ +{ + "name": "@vue/reactivity", + "version": "3.5.18", + "description": "@vue/reactivity", + "main": "index.js", + "module": "dist/reactivity.esm-bundler.js", + "types": "dist/reactivity.d.ts", + "unpkg": "dist/reactivity.global.js", + "jsdelivr": "dist/reactivity.global.js", + "files": [ + "index.js", + "dist" + ], + "exports": { + ".": { + "types": "./dist/reactivity.d.ts", + "node": { + "production": "./dist/reactivity.cjs.prod.js", + "development": "./dist/reactivity.cjs.js", + "default": "./index.js" + }, + "module": "./dist/reactivity.esm-bundler.js", + "import": "./dist/reactivity.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, + "sideEffects": false, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/reactivity" + }, + "buildOptions": { + "name": "VueReactivity", + "formats": [ + "esm-bundler", + "esm-browser", + "cjs", + "global" + ] + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/reactivity#readme", + "dependencies": { + "@vue/shared": "3.5.18" + } +} \ No newline at end of file diff --git a/node_modules/@vue/runtime-core/LICENSE b/node_modules/@vue/runtime-core/LICENSE new file mode 100644 index 0000000..15f1f7e --- /dev/null +++ b/node_modules/@vue/runtime-core/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018-present, Yuxi (Evan) You + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@vue/runtime-core/README.md b/node_modules/@vue/runtime-core/README.md new file mode 100644 index 0000000..452ef52 --- /dev/null +++ b/node_modules/@vue/runtime-core/README.md @@ -0,0 +1,28 @@ +# @vue/runtime-core + +> This package is published only for typing and building custom renderers. It is NOT meant to be used in applications. + +For full exposed APIs, see `src/index.ts`. + +## Building a Custom Renderer + +```ts +import { createRenderer } from '@vue/runtime-core' + +const { render, createApp } = createRenderer({ + patchProp, + insert, + remove, + createElement, + // ... +}) + +// `render` is the low-level API +// `createApp` returns an app instance with configurable context shared +// by the entire app tree. +export { render, createApp } + +export * from '@vue/runtime-core' +``` + +See `@vue/runtime-dom` for how a DOM-targeting renderer is implemented. diff --git a/node_modules/@vue/runtime-core/dist/runtime-core.cjs.js b/node_modules/@vue/runtime-core/dist/runtime-core.cjs.js new file mode 100644 index 0000000..0015d5b --- /dev/null +++ b/node_modules/@vue/runtime-core/dist/runtime-core.cjs.js @@ -0,0 +1,8557 @@ +/** +* @vue/runtime-core v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var reactivity = require('@vue/reactivity'); +var shared = require('@vue/shared'); + +const stack = []; +function pushWarningContext(vnode) { + stack.push(vnode); +} +function popWarningContext() { + stack.pop(); +} +let isWarning = false; +function warn$1(msg, ...args) { + if (isWarning) return; + isWarning = true; + reactivity.pauseTracking(); + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + // eslint-disable-next-line no-restricted-syntax + msg + args.map((a) => { + var _a, _b; + return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a); + }).join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + reactivity.resetTracking(); + isWarning = false; +} +function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (shared.isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (reactivity.isRef(value)) { + value = formatProp(key, reactivity.toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (shared.isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = reactivity.toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} +function assertNumber(val, type) { + if (val === void 0) { + return; + } else if (typeof val !== "number") { + warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`); + } else if (isNaN(val)) { + warn$1(`${type} is NaN - the duration expression might be incorrect.`); + } +} + +const ErrorCodes = { + "SETUP_FUNCTION": 0, + "0": "SETUP_FUNCTION", + "RENDER_FUNCTION": 1, + "1": "RENDER_FUNCTION", + "NATIVE_EVENT_HANDLER": 5, + "5": "NATIVE_EVENT_HANDLER", + "COMPONENT_EVENT_HANDLER": 6, + "6": "COMPONENT_EVENT_HANDLER", + "VNODE_HOOK": 7, + "7": "VNODE_HOOK", + "DIRECTIVE_HOOK": 8, + "8": "DIRECTIVE_HOOK", + "TRANSITION_HOOK": 9, + "9": "TRANSITION_HOOK", + "APP_ERROR_HANDLER": 10, + "10": "APP_ERROR_HANDLER", + "APP_WARN_HANDLER": 11, + "11": "APP_WARN_HANDLER", + "FUNCTION_REF": 12, + "12": "FUNCTION_REF", + "ASYNC_COMPONENT_LOADER": 13, + "13": "ASYNC_COMPONENT_LOADER", + "SCHEDULER": 14, + "14": "SCHEDULER", + "COMPONENT_UPDATE": 15, + "15": "COMPONENT_UPDATE", + "APP_UNMOUNT_CLEANUP": 16, + "16": "APP_UNMOUNT_CLEANUP" +}; +const ErrorTypeStrings$1 = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush", + [15]: "component update", + [16]: "app unmount cleanup function" +}; +function callWithErrorHandling(fn, instance, type, args) { + try { + return args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (shared.isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && shared.isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + if (shared.isArray(fn)) { + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; + } else { + warn$1( + `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}` + ); + } +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || shared.EMPTY_OBJ; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = ErrorTypeStrings$1[type] ; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + if (errorHandler) { + reactivity.pauseTracking(); + callWithErrorHandling(errorHandler, null, 10, [ + err, + exposedInstance, + errorInfo + ]); + reactivity.resetTracking(); + return; + } + } + logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction); +} +function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) { + { + const info = ErrorTypeStrings$1[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } +} + +const queue = []; +let flushIndex = -1; +const pendingPostFlushCbs = []; +let activePostFlushCbs = null; +let postFlushIndex = 0; +const resolvedPromise = /* @__PURE__ */ Promise.resolve(); +let currentFlushPromise = null; +const RECURSION_LIMIT = 100; +function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.flags & 2) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!(job.flags & 1)) { + const jobId = getId(job); + const lastJob = queue[queue.length - 1]; + if (!lastJob || // fast path when the job id is larger than the tail + !(job.flags & 2) && jobId >= getId(lastJob)) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(jobId), 0, job); + } + job.flags |= 1; + queueFlush(); + } +} +function queueFlush() { + if (!currentFlushPromise) { + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function queuePostFlushCb(cb) { + if (!shared.isArray(cb)) { + if (activePostFlushCbs && cb.id === -1) { + activePostFlushCbs.splice(postFlushIndex + 1, 0, cb); + } else if (!(cb.flags & 1)) { + pendingPostFlushCbs.push(cb); + cb.flags |= 1; + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(instance, seen, i = flushIndex + 1) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.flags & 2) { + if (instance && cb.id !== instance.uid) { + continue; + } + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + queue.splice(i, 1); + i--; + if (cb.flags & 4) { + cb.flags &= -2; + } + cb(); + if (!(cb.flags & 4)) { + cb.flags &= -2; + } + } + } +} +function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)].sort( + (a, b) => getId(a) - getId(b) + ); + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + const cb = activePostFlushCbs[postFlushIndex]; + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + if (cb.flags & 4) { + cb.flags &= -2; + } + if (!(cb.flags & 8)) cb(); + cb.flags &= -2; + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id; +function flushJobs(seen) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + const check = (job) => checkRecursiveUpdates(seen, job) ; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && !(job.flags & 8)) { + if (check(job)) { + continue; + } + if (job.flags & 4) { + job.flags &= ~1; + } + callWithErrorHandling( + job, + job.i, + job.i ? 15 : 14 + ); + if (!(job.flags & 4)) { + job.flags &= ~1; + } + } + } + } finally { + for (; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job) { + job.flags &= -2; + } + } + flushIndex = -1; + queue.length = 0; + flushPostFlushCbs(seen); + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } +} +function checkRecursiveUpdates(seen, fn) { + const count = seen.get(fn) || 0; + if (count > RECURSION_LIMIT) { + const instance = fn.i; + const componentName = instance && getComponentName(instance.type); + handleError( + `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`, + null, + 10 + ); + return true; + } + seen.set(fn, count + 1); + return false; +} + +let isHmrUpdating = false; +const hmrDirtyComponents = /* @__PURE__ */ new Map(); +{ + shared.getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; +} +const map = /* @__PURE__ */ new Map(); +function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); +} +function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); +} +function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: /* @__PURE__ */ new Set() + }); + return true; +} +function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; +} +function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + record.initialDef.render = newRender; + [...record.instances].forEach((instance) => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + isHmrUpdating = true; + instance.update(); + isHmrUpdating = false; + }); +} +function reload(id, newComp) { + const record = map.get(id); + if (!record) return; + newComp = normalizeClassComponent(newComp); + updateComponentDef(record.initialDef, newComp); + const instances = [...record.instances]; + for (let i = 0; i < instances.length; i++) { + const instance = instances[i]; + const oldComp = normalizeClassComponent(instance.type); + let dirtyInstances = hmrDirtyComponents.get(oldComp); + if (!dirtyInstances) { + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set()); + } + dirtyInstances.add(instance); + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); + instance.appContext.optionsCache.delete(instance.type); + if (instance.ceReload) { + dirtyInstances.add(instance); + instance.ceReload(newComp.styles); + dirtyInstances.delete(instance); + } else if (instance.parent) { + queueJob(() => { + isHmrUpdating = true; + instance.parent.update(); + isHmrUpdating = false; + dirtyInstances.delete(instance); + }); + } else if (instance.appContext.reload) { + instance.appContext.reload(); + } else if (typeof window !== "undefined") { + window.location.reload(); + } else { + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); + } + if (instance.root.ce && instance !== instance.root) { + instance.root.ce._removeChildStyle(oldComp); + } + } + queuePostFlushCb(() => { + hmrDirtyComponents.clear(); + }); +} +function updateComponentDef(oldComp, newComp) { + shared.extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== "__file" && !(key in newComp)) { + delete oldComp[key]; + } + } +} +function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } catch (e) { + console.error(e); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); + } + }; +} + +let devtools$1; +let buffer = []; +let devtoolsNotInstalled = false; +function emit$1(event, ...args) { + if (devtools$1) { + devtools$1.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } +} +function setDevtoolsHook$1(hook, target) { + var _a, _b; + devtools$1 = hook; + if (devtools$1) { + devtools$1.enabled = true; + buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + // eslint-disable-next-line no-restricted-syntax + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook$1(newHook, target); + }); + setTimeout(() => { + if (!devtools$1) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3e3); + } else { + devtoolsNotInstalled = true; + buffer = []; + } +} +function devtoolsInitApp(app, version) { + emit$1("app:init" /* APP_INIT */, app, version, { + Fragment, + Text, + Comment, + Static + }); +} +function devtoolsUnmountApp(app) { + emit$1("app:unmount" /* APP_UNMOUNT */, app); +} +const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook("component:added" /* COMPONENT_ADDED */); +const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */); +const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( + "component:removed" /* COMPONENT_REMOVED */ +); +const devtoolsComponentRemoved = (component) => { + if (devtools$1 && typeof devtools$1.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !devtools$1.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } +}; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; +} +const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook("perf:start" /* PERFORMANCE_START */); +const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook("perf:end" /* PERFORMANCE_END */); +function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; +} +function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit" /* COMPONENT_EMIT */, + component.appContext.app, + component, + event, + params + ); +} + +let currentRenderingInstance = null; +let currentScopeId = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function pushScopeId(id) { + currentScopeId = id; +} +function popScopeId() { + currentScopeId = null; +} +const withScopeId = (_id) => withCtx; +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + { + devtoolsComponentUpdated(ctx); + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} + +function validateDirectiveName(name) { + if (shared.isBuiltInDirective(name)) { + warn$1("Do not use built-in directive ids as custom directive id: " + name); + } +} +function withDirectives(vnode, directives) { + if (currentRenderingInstance === null) { + warn$1(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getComponentPublicInstance(currentRenderingInstance); + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = shared.EMPTY_OBJ] = directives[i]; + if (dir) { + if (shared.isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + reactivity.traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + reactivity.pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + reactivity.resetTracking(); + } + } +} + +const TeleportEndKey = Symbol("_vte"); +const isTeleport = (type) => type.__isTeleport; +const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ""); +const isTeleportDeferred = (props) => props && (props.defer || props.defer === ""); +const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement; +const isTargetMathML = (target) => typeof MathMLElement === "function" && target instanceof MathMLElement; +const resolveTarget = (props, select) => { + const targetSelector = props && props.to; + if (shared.isString(targetSelector)) { + if (!select) { + warn$1( + `Current renderer does not support string target for Teleports. (missing querySelector renderer option)` + ); + return null; + } else { + const target = select(targetSelector); + if (!target && !isTeleportDisabled(props)) { + warn$1( + `Failed to locate Teleport target with selector "${targetSelector}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.` + ); + } + return target; + } + } else { + if (!targetSelector && !isTeleportDisabled(props)) { + warn$1(`Invalid Teleport target: ${targetSelector}`); + } + return targetSelector; + } +}; +const TeleportImpl = { + name: "Teleport", + __isTeleport: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) { + const { + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + o: { insert, querySelector, createText, createComment } + } = internals; + const disabled = isTeleportDisabled(n2.props); + let { shapeFlag, children, dynamicChildren } = n2; + if (isHmrUpdating) { + optimized = false; + dynamicChildren = null; + } + if (n1 == null) { + const placeholder = n2.el = createComment("teleport start") ; + const mainAnchor = n2.anchor = createComment("teleport end") ; + insert(placeholder, container, anchor); + insert(mainAnchor, container, anchor); + const mount = (container2, anchor2) => { + if (shapeFlag & 16) { + if (parentComponent && parentComponent.isCE) { + parentComponent.ce._teleportTarget = container2; + } + mountChildren( + children, + container2, + anchor2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const mountToTarget = () => { + const target = n2.target = resolveTarget(n2.props, querySelector); + const targetAnchor = prepareAnchor(target, n2, createText, insert); + if (target) { + if (namespace !== "svg" && isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace !== "mathml" && isTargetMathML(target)) { + namespace = "mathml"; + } + if (!disabled) { + mount(target, targetAnchor); + updateCssVars(n2, false); + } + } else if (!disabled) { + warn$1( + "Invalid Teleport target on mount:", + target, + `(${typeof target})` + ); + } + }; + if (disabled) { + mount(container, mainAnchor); + updateCssVars(n2, true); + } + if (isTeleportDeferred(n2.props)) { + n2.el.__isMounted = false; + queuePostRenderEffect(() => { + mountToTarget(); + delete n2.el.__isMounted; + }, parentSuspense); + } else { + mountToTarget(); + } + } else { + if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) { + queuePostRenderEffect(() => { + TeleportImpl.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + }, parentSuspense); + return; + } + n2.el = n1.el; + n2.targetStart = n1.targetStart; + const mainAnchor = n2.anchor = n1.anchor; + const target = n2.target = n1.target; + const targetAnchor = n2.targetAnchor = n1.targetAnchor; + const wasDisabled = isTeleportDisabled(n1.props); + const currentContainer = wasDisabled ? container : target; + const currentAnchor = wasDisabled ? mainAnchor : targetAnchor; + if (namespace === "svg" || isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace === "mathml" || isTargetMathML(target)) { + namespace = "mathml"; + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + currentContainer, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + traverseStaticChildren(n1, n2, false); + } else if (!optimized) { + patchChildren( + n1, + n2, + currentContainer, + currentAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + false + ); + } + if (disabled) { + if (!wasDisabled) { + moveTeleport( + n2, + container, + mainAnchor, + internals, + 1 + ); + } else { + if (n2.props && n1.props && n2.props.to !== n1.props.to) { + n2.props.to = n1.props.to; + } + } + } else { + if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { + const nextTarget = n2.target = resolveTarget( + n2.props, + querySelector + ); + if (nextTarget) { + moveTeleport( + n2, + nextTarget, + null, + internals, + 0 + ); + } else { + warn$1( + "Invalid Teleport target on update:", + target, + `(${typeof target})` + ); + } + } else if (wasDisabled) { + moveTeleport( + n2, + target, + targetAnchor, + internals, + 1 + ); + } + } + updateCssVars(n2, disabled); + } + }, + remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) { + const { + shapeFlag, + children, + anchor, + targetStart, + targetAnchor, + target, + props + } = vnode; + if (target) { + hostRemove(targetStart); + hostRemove(targetAnchor); + } + doRemove && hostRemove(anchor); + if (shapeFlag & 16) { + const shouldRemove = doRemove || !isTeleportDisabled(props); + for (let i = 0; i < children.length; i++) { + const child = children[i]; + unmount( + child, + parentComponent, + parentSuspense, + shouldRemove, + !!child.dynamicChildren + ); + } + } + }, + move: moveTeleport, + hydrate: hydrateTeleport +}; +function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) { + if (moveType === 0) { + insert(vnode.targetAnchor, container, parentAnchor); + } + const { el, anchor, shapeFlag, children, props } = vnode; + const isReorder = moveType === 2; + if (isReorder) { + insert(el, container, parentAnchor); + } + if (!isReorder || isTeleportDisabled(props)) { + if (shapeFlag & 16) { + for (let i = 0; i < children.length; i++) { + move( + children[i], + container, + parentAnchor, + 2 + ); + } + } + } + if (isReorder) { + insert(anchor, container, parentAnchor); + } +} +function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { + o: { nextSibling, parentNode, querySelector, insert, createText } +}, hydrateChildren) { + const target = vnode.target = resolveTarget( + vnode.props, + querySelector + ); + if (target) { + const disabled = isTeleportDisabled(vnode.props); + const targetNode = target._lpa || target.firstChild; + if (vnode.shapeFlag & 16) { + if (disabled) { + vnode.anchor = hydrateChildren( + nextSibling(node), + vnode, + parentNode(node), + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + vnode.targetStart = targetNode; + vnode.targetAnchor = targetNode && nextSibling(targetNode); + } else { + vnode.anchor = nextSibling(node); + let targetAnchor = targetNode; + while (targetAnchor) { + if (targetAnchor && targetAnchor.nodeType === 8) { + if (targetAnchor.data === "teleport start anchor") { + vnode.targetStart = targetAnchor; + } else if (targetAnchor.data === "teleport anchor") { + vnode.targetAnchor = targetAnchor; + target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); + break; + } + } + targetAnchor = nextSibling(targetAnchor); + } + if (!vnode.targetAnchor) { + prepareAnchor(target, vnode, createText, insert); + } + hydrateChildren( + targetNode && nextSibling(targetNode), + vnode, + target, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } + updateCssVars(vnode, disabled); + } + return vnode.anchor && nextSibling(vnode.anchor); +} +const Teleport = TeleportImpl; +function updateCssVars(vnode, isDisabled) { + const ctx = vnode.ctx; + if (ctx && ctx.ut) { + let node, anchor; + if (isDisabled) { + node = vnode.el; + anchor = vnode.anchor; + } else { + node = vnode.targetStart; + anchor = vnode.targetAnchor; + } + while (node && node !== anchor) { + if (node.nodeType === 1) node.setAttribute("data-v-owner", ctx.uid); + node = node.nextSibling; + } + ctx.ut(); + } +} +function prepareAnchor(target, vnode, createText, insert) { + const targetStart = vnode.targetStart = createText(""); + const targetAnchor = vnode.targetAnchor = createText(""); + targetStart[TeleportEndKey] = targetAnchor; + if (target) { + insert(targetStart, target); + insert(targetAnchor, target); + } + return targetAnchor; +} + +const leaveCbKey = Symbol("_leaveCb"); +const enterCbKey = Symbol("_enterCb"); +function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; +} +const TransitionHookValidator = [Function, Array]; +const BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator +}; +const recursiveGetSubtree = (instance) => { + const subTree = instance.subTree; + return subTree.component ? recursiveGetSubtree(subTree.component) : subTree; +}; +const BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + const child = findNonCommentChild(children); + const rawProps = reactivity.toRaw(props); + const { mode } = rawProps; + if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") { + warn$1(`invalid <transition> mode: ${mode}`); + } + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getInnerChild$1(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + let enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance, + // #11061, ensure enterHooks is fresh after clone + (hooks) => enterHooks = hooks + ); + if (innerChild.type !== Comment) { + setTransitionHooks(innerChild, enterHooks); + } + let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree); + if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) { + let leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in" && innerChild.type !== Comment) { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (!(instance.job.flags & 8)) { + instance.update(); + } + delete leavingHooks.afterLeave; + oldInnerChild = void 0; + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el[leaveCbKey] = () => { + earlyRemove(); + el[leaveCbKey] = void 0; + delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + enterHooks.delayedLeave = () => { + delayedLeave(); + delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + }; + } else { + oldInnerChild = void 0; + } + } else if (oldInnerChild) { + oldInnerChild = void 0; + } + return child; + }; + } +}; +function findNonCommentChild(children) { + let child = children[0]; + if (children.length > 1) { + let hasFound = false; + for (const c of children) { + if (c.type !== Comment) { + if (hasFound) { + warn$1( + "<transition> can only be used on a single element or component. Use <transition-group> for lists." + ); + break; + } + child = c; + hasFound = true; + } + } + } + return child; +} +const BaseTransition = BaseTransitionImpl; +function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; +} +function resolveTransitionHooks(vnode, props, state, instance, postClone) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook(hook, args); + if (shared.isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el[leaveCbKey]) { + el[leaveCbKey]( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { + leavingVNode.el[leaveCbKey](); + } + callHook(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + const done = el[enterCbKey] = (cancelled) => { + if (called) return; + called = true; + if (cancelled) { + callHook(cancelHook, [el]); + } else { + callHook(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el[enterCbKey] = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove) { + const key2 = String(vnode.key); + if (el[enterCbKey]) { + el[enterCbKey]( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove(); + } + callHook(onBeforeLeave, [el]); + let called = false; + const done = el[leaveCbKey] = (cancelled) => { + if (called) return; + called = true; + remove(); + if (cancelled) { + callHook(onLeaveCancelled, [el]); + } else { + callHook(onAfterLeave, [el]); + } + el[leaveCbKey] = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + const hooks2 = resolveTransitionHooks( + vnode2, + props, + state, + instance, + postClone + ); + if (postClone) postClone(hooks2); + return hooks2; + } + }; + return hooks; +} +function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } +} +function getInnerChild$1(vnode) { + if (!isKeepAlive(vnode)) { + if (isTeleport(vnode.type) && vnode.children) { + return findNonCommentChild(vnode.children); + } + return vnode; + } + if (vnode.component) { + return vnode.component.subTree; + } + const { shapeFlag, children } = vnode; + if (children) { + if (shapeFlag & 16) { + return children[0]; + } + if (shapeFlag & 32 && shared.isFunction(children.default)) { + return children.default(); + } + } +} +function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + vnode.transition = hooks; + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } +} +function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; +} + +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineComponent(options, extraOptions) { + return shared.isFunction(options) ? ( + // #8236: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + /* @__PURE__ */ (() => shared.extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; +} + +function useId() { + const i = getCurrentInstance(); + if (i) { + return (i.appContext.config.idPrefix || "v") + "-" + i.ids[0] + i.ids[1]++; + } else { + warn$1( + `useId() is called when there is no active component instance to be associated with.` + ); + } + return ""; +} +function markAsyncBoundary(instance) { + instance.ids = [instance.ids[0] + instance.ids[2]++ + "-", 0, 0]; +} + +const knownTemplateRefs = /* @__PURE__ */ new WeakSet(); +function useTemplateRef(key) { + const i = getCurrentInstance(); + const r = reactivity.shallowRef(null); + if (i) { + const refs = i.refs === shared.EMPTY_OBJ ? i.refs = {} : i.refs; + let desc; + if ((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) { + warn$1(`useTemplateRef('${key}') already exists.`); + } else { + Object.defineProperty(refs, key, { + enumerable: true, + get: () => r.value, + set: (val) => r.value = val + }); + } + } else { + warn$1( + `useTemplateRef() is called when there is no active component instance to be associated with.` + ); + } + const ret = reactivity.readonly(r) ; + { + knownTemplateRefs.add(ret); + } + return ret; +} + +function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { + if (shared.isArray(rawRef)) { + rawRef.forEach( + (r, i) => setRef( + r, + oldRawRef && (shared.isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), + parentSuspense, + vnode, + isUnmount + ) + ); + return; + } + if (isAsyncWrapper(vnode) && !isUnmount) { + if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) { + setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree); + } + return; + } + const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el; + const value = isUnmount ? null : refValue; + const { i: owner, r: ref } = rawRef; + if (!owner) { + warn$1( + `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.` + ); + return; + } + const oldRef = oldRawRef && oldRawRef.r; + const refs = owner.refs === shared.EMPTY_OBJ ? owner.refs = {} : owner.refs; + const setupState = owner.setupState; + const rawSetupState = reactivity.toRaw(setupState); + const canSetSetupRef = setupState === shared.EMPTY_OBJ ? () => false : (key) => { + { + if (shared.hasOwn(rawSetupState, key) && !reactivity.isRef(rawSetupState[key])) { + warn$1( + `Template ref "${key}" used on a non-ref value. It will not work in the production build.` + ); + } + if (knownTemplateRefs.has(rawSetupState[key])) { + return false; + } + } + return shared.hasOwn(rawSetupState, key); + }; + if (oldRef != null && oldRef !== ref) { + if (shared.isString(oldRef)) { + refs[oldRef] = null; + if (canSetSetupRef(oldRef)) { + setupState[oldRef] = null; + } + } else if (reactivity.isRef(oldRef)) { + oldRef.value = null; + } + } + if (shared.isFunction(ref)) { + callWithErrorHandling(ref, owner, 12, [value, refs]); + } else { + const _isString = shared.isString(ref); + const _isRef = reactivity.isRef(ref); + if (_isString || _isRef) { + const doSet = () => { + if (rawRef.f) { + const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value; + if (isUnmount) { + shared.isArray(existing) && shared.remove(existing, refValue); + } else { + if (!shared.isArray(existing)) { + if (_isString) { + refs[ref] = [refValue]; + if (canSetSetupRef(ref)) { + setupState[ref] = refs[ref]; + } + } else { + ref.value = [refValue]; + if (rawRef.k) refs[rawRef.k] = ref.value; + } + } else if (!existing.includes(refValue)) { + existing.push(refValue); + } + } + } else if (_isString) { + refs[ref] = value; + if (canSetSetupRef(ref)) { + setupState[ref] = value; + } + } else if (_isRef) { + ref.value = value; + if (rawRef.k) refs[rawRef.k] = value; + } else { + warn$1("Invalid template ref type:", ref, `(${typeof ref})`); + } + }; + if (value) { + doSet.id = -1; + queuePostRenderEffect(doSet, parentSuspense); + } else { + doSet(); + } + } else { + warn$1("Invalid template ref type:", ref, `(${typeof ref})`); + } + } +} + +let hasLoggedMismatchError = false; +const logMismatchError = () => { + if (hasLoggedMismatchError) { + return; + } + console.error("Hydration completed but contains mismatches."); + hasLoggedMismatchError = true; +}; +const isSVGContainer = (container) => container.namespaceURI.includes("svg") && container.tagName !== "foreignObject"; +const isMathMLContainer = (container) => container.namespaceURI.includes("MathML"); +const getContainerType = (container) => { + if (container.nodeType !== 1) return void 0; + if (isSVGContainer(container)) return "svg"; + if (isMathMLContainer(container)) return "mathml"; + return void 0; +}; +const isComment = (node) => node.nodeType === 8; +function createHydrationFunctions(rendererInternals) { + const { + mt: mountComponent, + p: patch, + o: { + patchProp, + createText, + nextSibling, + parentNode, + remove, + insert, + createComment + } + } = rendererInternals; + const hydrate = (vnode, container) => { + if (!container.hasChildNodes()) { + warn$1( + `Attempting to hydrate existing markup but container is empty. Performing full mount instead.` + ); + patch(null, vnode, container); + flushPostFlushCbs(); + container._vnode = vnode; + return; + } + hydrateNode(container.firstChild, vnode, null, null, null); + flushPostFlushCbs(); + container._vnode = vnode; + }; + const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => { + optimized = optimized || !!vnode.dynamicChildren; + const isFragmentStart = isComment(node) && node.data === "["; + const onMismatch = () => handleMismatch( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + isFragmentStart + ); + const { type, ref, shapeFlag, patchFlag } = vnode; + let domType = node.nodeType; + vnode.el = node; + { + shared.def(node, "__vnode", vnode, true); + shared.def(node, "__vueParentComponent", parentComponent, true); + } + if (patchFlag === -2) { + optimized = false; + vnode.dynamicChildren = null; + } + let nextNode = null; + switch (type) { + case Text: + if (domType !== 3) { + if (vnode.children === "") { + insert(vnode.el = createText(""), parentNode(node), node); + nextNode = node; + } else { + nextNode = onMismatch(); + } + } else { + if (node.data !== vnode.children) { + warn$1( + `Hydration text mismatch in`, + node.parentNode, + ` + - rendered on server: ${JSON.stringify( + node.data + )} + - expected on client: ${JSON.stringify(vnode.children)}` + ); + logMismatchError(); + node.data = vnode.children; + } + nextNode = nextSibling(node); + } + break; + case Comment: + if (isTemplateNode(node)) { + nextNode = nextSibling(node); + replaceNode( + vnode.el = node.content.firstChild, + node, + parentComponent + ); + } else if (domType !== 8 || isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = nextSibling(node); + } + break; + case Static: + if (isFragmentStart) { + node = nextSibling(node); + domType = node.nodeType; + } + if (domType === 1 || domType === 3) { + nextNode = node; + const needToAdoptContent = !vnode.children.length; + for (let i = 0; i < vnode.staticCount; i++) { + if (needToAdoptContent) + vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data; + if (i === vnode.staticCount - 1) { + vnode.anchor = nextNode; + } + nextNode = nextSibling(nextNode); + } + return isFragmentStart ? nextSibling(nextNode) : nextNode; + } else { + onMismatch(); + } + break; + case Fragment: + if (!isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = hydrateFragment( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + break; + default: + if (shapeFlag & 1) { + if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) { + nextNode = onMismatch(); + } else { + nextNode = hydrateElement( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } else if (shapeFlag & 6) { + vnode.slotScopeIds = slotScopeIds; + const container = parentNode(node); + if (isFragmentStart) { + nextNode = locateClosingAnchor(node); + } else if (isComment(node) && node.data === "teleport start") { + nextNode = locateClosingAnchor(node, node.data, "teleport end"); + } else { + nextNode = nextSibling(node); + } + mountComponent( + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + optimized + ); + if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) { + let subTree; + if (isFragmentStart) { + subTree = createVNode(Fragment); + subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild; + } else { + subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div"); + } + subTree.el = node; + vnode.component.subTree = subTree; + } + } else if (shapeFlag & 64) { + if (domType !== 8) { + nextNode = onMismatch(); + } else { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized, + rendererInternals, + hydrateChildren + ); + } + } else if (shapeFlag & 128) { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + getContainerType(parentNode(node)), + slotScopeIds, + optimized, + rendererInternals, + hydrateNode + ); + } else { + warn$1("Invalid HostVNode type:", type, `(${typeof type})`); + } + } + if (ref != null) { + setRef(ref, null, parentSuspense, vnode); + } + return nextNode; + }; + const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!vnode.dynamicChildren; + const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode; + const forcePatch = type === "input" || type === "option"; + { + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + let needCallTransitionHooks = false; + if (isTemplateNode(el)) { + needCallTransitionHooks = needTransition( + null, + // no need check parentSuspense in hydration + transition + ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear; + const content = el.content.firstChild; + if (needCallTransitionHooks) { + const cls = content.getAttribute("class"); + if (cls) content.$cls = cls; + transition.beforeEnter(content); + } + replaceNode(content, el, parentComponent); + vnode.el = el = content; + } + if (shapeFlag & 16 && // skip if element has innerHTML / textContent + !(props && (props.innerHTML || props.textContent))) { + let next = hydrateChildren( + el.firstChild, + vnode, + el, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + let hasWarned = false; + while (next) { + if (!isMismatchAllowed(el, 1 /* CHILDREN */)) { + if (!hasWarned) { + warn$1( + `Hydration children mismatch on`, + el, + ` +Server rendered element contains more child nodes than client vdom.` + ); + hasWarned = true; + } + logMismatchError(); + } + const cur = next; + next = next.nextSibling; + remove(cur); + } + } else if (shapeFlag & 8) { + let clientText = vnode.children; + if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) { + clientText = clientText.slice(1); + } + if (el.textContent !== clientText) { + if (!isMismatchAllowed(el, 0 /* TEXT */)) { + warn$1( + `Hydration text content mismatch on`, + el, + ` + - rendered on server: ${el.textContent} + - expected on client: ${vnode.children}` + ); + logMismatchError(); + } + el.textContent = vnode.children; + } + } + if (props) { + { + const isCustomElement = el.tagName.includes("-"); + for (const key in props) { + if (// #11189 skip if this node has directives that have created hooks + // as it could have mutated the DOM in any possible way + !(dirs && dirs.some((d) => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent)) { + logMismatchError(); + } + if (forcePatch && (key.endsWith("value") || key === "indeterminate") || shared.isOn(key) && !shared.isReservedProp(key) || // force hydrate v-bind with .prop modifiers + key[0] === "." || isCustomElement) { + patchProp(el, key, null, props[key], void 0, parentComponent); + } + } + } + } + let vnodeHooks; + if (vnodeHooks = props && props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHooks, parentComponent, vnode); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) { + queueEffectWithSuspense(() => { + vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + } + return el.nextSibling; + }; + const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!parentVNode.dynamicChildren; + const children = parentVNode.children; + const l = children.length; + let hasWarned = false; + for (let i = 0; i < l; i++) { + const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]); + const isText = vnode.type === Text; + if (node) { + if (isText && !optimized) { + if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) { + insert( + createText( + node.data.slice(vnode.children.length) + ), + container, + nextSibling(node) + ); + node.data = vnode.children; + } + } + node = hydrateNode( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } else if (isText && !vnode.children) { + insert(vnode.el = createText(""), container); + } else { + if (!isMismatchAllowed(container, 1 /* CHILDREN */)) { + if (!hasWarned) { + warn$1( + `Hydration children mismatch on`, + container, + ` +Server rendered element contains fewer child nodes than client vdom.` + ); + hasWarned = true; + } + logMismatchError(); + } + patch( + null, + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + } + } + return node; + }; + const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + const { slotScopeIds: fragmentSlotScopeIds } = vnode; + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + const container = parentNode(node); + const next = hydrateChildren( + nextSibling(node), + vnode, + container, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + if (next && isComment(next) && next.data === "]") { + return nextSibling(vnode.anchor = next); + } else { + logMismatchError(); + insert(vnode.anchor = createComment(`]`), container, next); + return next; + } + }; + const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => { + if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) { + warn$1( + `Hydration node mismatch: +- rendered on server:`, + node, + node.nodeType === 3 ? `(text)` : isComment(node) && node.data === "[" ? `(start of fragment)` : ``, + ` +- expected on client:`, + vnode.type + ); + logMismatchError(); + } + vnode.el = null; + if (isFragment) { + const end = locateClosingAnchor(node); + while (true) { + const next2 = nextSibling(node); + if (next2 && next2 !== end) { + remove(next2); + } else { + break; + } + } + } + const next = nextSibling(node); + const container = parentNode(node); + remove(node); + patch( + null, + vnode, + container, + next, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + if (parentComponent) { + parentComponent.vnode.el = vnode.el; + updateHOCHostEl(parentComponent, vnode.el); + } + return next; + }; + const locateClosingAnchor = (node, open = "[", close = "]") => { + let match = 0; + while (node) { + node = nextSibling(node); + if (node && isComment(node)) { + if (node.data === open) match++; + if (node.data === close) { + if (match === 0) { + return nextSibling(node); + } else { + match--; + } + } + } + } + return node; + }; + const replaceNode = (newNode, oldNode, parentComponent) => { + const parentNode2 = oldNode.parentNode; + if (parentNode2) { + parentNode2.replaceChild(newNode, oldNode); + } + let parent = parentComponent; + while (parent) { + if (parent.vnode.el === oldNode) { + parent.vnode.el = parent.subTree.el = newNode; + } + parent = parent.parent; + } + }; + const isTemplateNode = (node) => { + return node.nodeType === 1 && node.tagName === "TEMPLATE"; + }; + return [hydrate, hydrateNode]; +} +function propHasMismatch(el, key, clientValue, vnode, instance) { + let mismatchType; + let mismatchKey; + let actual; + let expected; + if (key === "class") { + if (el.$cls) { + actual = el.$cls; + delete el.$cls; + } else { + actual = el.getAttribute("class"); + } + expected = shared.normalizeClass(clientValue); + if (!isSetEqual(toClassSet(actual || ""), toClassSet(expected))) { + mismatchType = 2 /* CLASS */; + mismatchKey = `class`; + } + } else if (key === "style") { + actual = el.getAttribute("style") || ""; + expected = shared.isString(clientValue) ? clientValue : shared.stringifyStyle(shared.normalizeStyle(clientValue)); + const actualMap = toStyleMap(actual); + const expectedMap = toStyleMap(expected); + if (vnode.dirs) { + for (const { dir, value } of vnode.dirs) { + if (dir.name === "show" && !value) { + expectedMap.set("display", "none"); + } + } + } + if (instance) { + resolveCssVars(instance, vnode, expectedMap); + } + if (!isMapEqual(actualMap, expectedMap)) { + mismatchType = 3 /* STYLE */; + mismatchKey = "style"; + } + } else if (el instanceof SVGElement && shared.isKnownSvgAttr(key) || el instanceof HTMLElement && (shared.isBooleanAttr(key) || shared.isKnownHtmlAttr(key))) { + if (shared.isBooleanAttr(key)) { + actual = el.hasAttribute(key); + expected = shared.includeBooleanAttr(clientValue); + } else if (clientValue == null) { + actual = el.hasAttribute(key); + expected = false; + } else { + if (el.hasAttribute(key)) { + actual = el.getAttribute(key); + } else if (key === "value" && el.tagName === "TEXTAREA") { + actual = el.value; + } else { + actual = false; + } + expected = shared.isRenderableAttrValue(clientValue) ? String(clientValue) : false; + } + if (actual !== expected) { + mismatchType = 4 /* ATTRIBUTE */; + mismatchKey = key; + } + } + if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) { + const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}="${v}"`; + const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`; + const postSegment = ` + - rendered on server: ${format(actual)} + - expected on client: ${format(expected)} + Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead. + You should fix the source of the mismatch.`; + { + warn$1(preSegment, el, postSegment); + } + return true; + } + return false; +} +function toClassSet(str) { + return new Set(str.trim().split(/\s+/)); +} +function isSetEqual(a, b) { + if (a.size !== b.size) { + return false; + } + for (const s of a) { + if (!b.has(s)) { + return false; + } + } + return true; +} +function toStyleMap(str) { + const styleMap = /* @__PURE__ */ new Map(); + for (const item of str.split(";")) { + let [key, value] = item.split(":"); + key = key.trim(); + value = value && value.trim(); + if (key && value) { + styleMap.set(key, value); + } + } + return styleMap; +} +function isMapEqual(a, b) { + if (a.size !== b.size) { + return false; + } + for (const [key, value] of a) { + if (value !== b.get(key)) { + return false; + } + } + return true; +} +function resolveCssVars(instance, vnode, expectedMap) { + const root = instance.subTree; + if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) { + const cssVars = instance.getCssVars(); + for (const key in cssVars) { + const value = shared.normalizeCssVarValue(cssVars[key]); + expectedMap.set(`--${shared.getEscapedCssVarName(key, false)}`, value); + } + } + if (vnode === root && instance.parent) { + resolveCssVars(instance.parent, instance.vnode, expectedMap); + } +} +const allowMismatchAttr = "data-allow-mismatch"; +const MismatchTypeString = { + [0 /* TEXT */]: "text", + [1 /* CHILDREN */]: "children", + [2 /* CLASS */]: "class", + [3 /* STYLE */]: "style", + [4 /* ATTRIBUTE */]: "attribute" +}; +function isMismatchAllowed(el, allowedType) { + if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) { + while (el && !el.hasAttribute(allowMismatchAttr)) { + el = el.parentElement; + } + } + const allowedAttr = el && el.getAttribute(allowMismatchAttr); + if (allowedAttr == null) { + return false; + } else if (allowedAttr === "") { + return true; + } else { + const list = allowedAttr.split(","); + if (allowedType === 0 /* TEXT */ && list.includes("children")) { + return true; + } + return list.includes(MismatchTypeString[allowedType]); + } +} + +const requestIdleCallback = shared.getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1)); +const cancelIdleCallback = shared.getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id)); +const hydrateOnIdle = (timeout = 1e4) => (hydrate) => { + const id = requestIdleCallback(hydrate, { timeout }); + return () => cancelIdleCallback(id); +}; +function elementIsVisibleInViewport(el) { + const { top, left, bottom, right } = el.getBoundingClientRect(); + const { innerHeight, innerWidth } = window; + return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth); +} +const hydrateOnVisible = (opts) => (hydrate, forEach) => { + const ob = new IntersectionObserver((entries) => { + for (const e of entries) { + if (!e.isIntersecting) continue; + ob.disconnect(); + hydrate(); + break; + } + }, opts); + forEach((el) => { + if (!(el instanceof Element)) return; + if (elementIsVisibleInViewport(el)) { + hydrate(); + ob.disconnect(); + return false; + } + ob.observe(el); + }); + return () => ob.disconnect(); +}; +const hydrateOnMediaQuery = (query) => (hydrate) => { + if (query) { + const mql = matchMedia(query); + if (mql.matches) { + hydrate(); + } else { + mql.addEventListener("change", hydrate, { once: true }); + return () => mql.removeEventListener("change", hydrate); + } + } +}; +const hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => { + if (shared.isString(interactions)) interactions = [interactions]; + let hasHydrated = false; + const doHydrate = (e) => { + if (!hasHydrated) { + hasHydrated = true; + teardown(); + hydrate(); + e.target.dispatchEvent(new e.constructor(e.type, e)); + } + }; + const teardown = () => { + forEach((el) => { + for (const i of interactions) { + el.removeEventListener(i, doHydrate); + } + }); + }; + forEach((el) => { + for (const i of interactions) { + el.addEventListener(i, doHydrate, { once: true }); + } + }); + return teardown; +}; +function forEachElement(node, cb) { + if (isComment(node) && node.data === "[") { + let depth = 1; + let next = node.nextSibling; + while (next) { + if (next.nodeType === 1) { + const result = cb(next); + if (result === false) { + break; + } + } else if (isComment(next)) { + if (next.data === "]") { + if (--depth === 0) break; + } else if (next.data === "[") { + depth++; + } + } + next = next.nextSibling; + } + } else { + cb(node); + } +} + +const isAsyncWrapper = (i) => !!i.type.__asyncLoader; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineAsyncComponent(source) { + if (shared.isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + hydrate: hydrateStrategy, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve, reject) => { + const userRetry = () => resolve(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (!comp) { + warn$1( + `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` + ); + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + if (comp && !shared.isObject(comp) && !shared.isFunction(comp)) { + throw new Error(`Invalid async component load result: ${comp}`); + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + __asyncHydrate(el, instance, hydrate) { + let patched = false; + (instance.bu || (instance.bu = [])).push(() => patched = true); + const performHydrate = () => { + if (patched) { + { + warn$1( + `Skipping lazy hydration for component '${getComponentName(resolvedComp) || resolvedComp.__file}': it was updated before lazy hydration performed.` + ); + } + return; + } + hydrate(); + }; + const doHydrate = hydrateStrategy ? () => { + const teardown = hydrateStrategy( + performHydrate, + (cb) => forEachElement(el, cb) + ); + if (teardown) { + (instance.bum || (instance.bum = [])).push(teardown); + } + } : performHydrate; + if (resolvedComp) { + doHydrate(); + } else { + load().then(() => !instance.isUnmounted && doHydrate()); + } + }, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + markAsyncBoundary(instance); + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + ); + }; + if (suspensible && instance.suspense || isInSSRComponentSetup) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = reactivity.ref(false); + const error = reactivity.ref(); + const delayed = reactivity.ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + instance.parent.update(); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); +} +function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; +} + +const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +const KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + if (!sharedContext.renderer) { + return () => { + const children = slots.default && slots.default(); + return children && children.length === 1 ? children[0] : children; + }; + } + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + { + instance.__v_cache = cache; + } + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, namespace, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + namespace, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + shared.invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + invalidateMount(instance2.m); + invalidateMount(instance2.a); + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + shared.invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(vnode.type); + if (name && !filter(name)) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (cached && (!current || !isSameVNodeType(cached, current))) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + watch( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + if (isSuspense(instance.subTree.type)) { + queuePostRenderEffect(() => { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + }, instance.subTree.suspense); + } else { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return current = null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + { + warn$1(`KeepAlive should contain exactly one component child.`); + } + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + if (vnode.type === Comment) { + current = null; + return vnode; + } + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + vnode.shapeFlag &= -257; + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } +}; +const KeepAlive = KeepAliveImpl; +function matches(pattern, name) { + if (shared.isArray(pattern)) { + return pattern.some((p) => matches(p, name)); + } else if (shared.isString(pattern)) { + return pattern.split(",").includes(name); + } else if (shared.isRegExp(pattern)) { + pattern.lastIndex = 0; + return pattern.test(name); + } + return false; +} +function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); +} +function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); +} +function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } +} +function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + shared.remove(keepAliveRoot[type], injected); + }, target); +} +function resetShapeFlag(vnode) { + vnode.shapeFlag &= -257; + vnode.shapeFlag &= -513; +} +function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; +} + +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + reactivity.pauseTracking(); + const reset = setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + reset(); + reactivity.resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } else { + const apiName = shared.toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, "")); + warn$1( + `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` ) + ); + } +} +const createHook = (lifecycle) => (hook, target = currentInstance) => { + if (!isInSSRComponentSetup || lifecycle === "sp") { + injectHook(lifecycle, (...args) => hook(...args), target); + } +}; +const onBeforeMount = createHook("bm"); +const onMounted = createHook("m"); +const onBeforeUpdate = createHook( + "bu" +); +const onUpdated = createHook("u"); +const onBeforeUnmount = createHook( + "bum" +); +const onUnmounted = createHook("um"); +const onServerPrefetch = createHook( + "sp" +); +const onRenderTriggered = createHook("rtg"); +const onRenderTracked = createHook("rtc"); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} + +const COMPONENTS = "components"; +const DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (shared.isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + ); + if (selfName && (selfName === name || selfName === shared.camelize(name) || selfName === shared.capitalize(shared.camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + if (warnMissing && !res) { + const extra = type === COMPONENTS ? ` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; + warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } else { + warn$1( + `resolve${shared.capitalize(type.slice(0, -1))} can only be used in render() or setup().` + ); + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[shared.camelize(name)] || registry[shared.capitalize(shared.camelize(name))]); +} + +function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + const sourceIsArray = shared.isArray(source); + if (sourceIsArray || shared.isString(source)) { + const sourceIsReactiveArray = sourceIsArray && reactivity.isReactive(source); + let needsWrap = false; + let isReadonlySource = false; + if (sourceIsReactiveArray) { + needsWrap = !reactivity.isShallow(source); + isReadonlySource = reactivity.isReadonly(source); + source = reactivity.shallowReadArray(source); + } + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem( + needsWrap ? isReadonlySource ? reactivity.toReadonly(reactivity.toReactive(source[i])) : reactivity.toReactive(source[i]) : source[i], + i, + void 0, + cached && cached[i] + ); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn$1(`The v-for range expect an integer value but got ${source}.`); + } + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (shared.isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; +} + +function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (shared.isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; +} + +function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) { + if (name !== "default") props.name = name; + return openBlock(), createBlock( + Fragment, + null, + [createVNode("slot", props, fallback && fallback())], + 64 + ); + } + let slot = slots[name]; + if (slot && slot.length > 1) { + warn$1( + `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` + ); + slot = () => []; + } + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key; + const rendered = createBlock( + Fragment, + { + key: (slotKey && !shared.isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content + (!validSlotContent && fallback ? "_fb" : "") + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) return true; + if (child.type === Comment) return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} + +function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + if (!shared.isObject(obj)) { + warn$1(`v-on with no argument expects an object value.`); + return ret; + } + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : shared.toHandlerKey(key)] = obj[key]; + } + return ret; +} + +const getPublicInstance = (i) => { + if (!i) return null; + if (isStatefulComponent(i)) return getComponentPublicInstance(i); + return getPublicInstance(i.parent); +}; +const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ shared.extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => reactivity.shallowReadonly(i.props) , + $attrs: (i) => reactivity.shallowReadonly(i.attrs) , + $slots: (i) => reactivity.shallowReadonly(i.slots) , + $refs: (i) => reactivity.shallowReadonly(i.refs) , + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $host: (i) => i.ce, + $emit: (i) => i.emit, + $options: (i) => resolveMergedOptions(i) , + $forceUpdate: (i) => i.f || (i.f = () => { + queueJob(i.update); + }), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => instanceWatch.bind(i) + }) +); +const isReservedPrefix = (key) => key === "_" || key === "$"; +const hasSetupBinding = (state, key) => state !== shared.EMPTY_OBJ && !state.__isScriptSetup && shared.hasOwn(state, key); +const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + if (key === "__v_skip") { + return true; + } + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } else if (data !== shared.EMPTY_OBJ && shared.hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && shared.hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } else if (ctx !== shared.EMPTY_OBJ && shared.hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if (shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + reactivity.track(instance.attrs, "get", ""); + markAttrsAccessed(); + } else if (key === "$slots") { + reactivity.track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== shared.EMPTY_OBJ && shared.hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, shared.hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else if (currentRenderingInstance && (!shared.isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf("__v") !== 0)) { + if (data !== shared.EMPTY_OBJ && isReservedPrefix(key[0]) && shared.hasOwn(data, key)) { + warn$1( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); + } else if (instance === currentRenderingInstance) { + warn$1( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (setupState.__isScriptSetup && shared.hasOwn(setupState, key)) { + warn$1(`Cannot mutate <script setup> binding "${key}" from Options API.`); + return false; + } else if (data !== shared.EMPTY_OBJ && shared.hasOwn(data, key)) { + data[key] = value; + return true; + } else if (shared.hasOwn(instance.props, key)) { + warn$1(`Attempting to mutate prop "${key}". Props are readonly.`); + return false; + } + if (key[0] === "$" && key.slice(1) in instance) { + warn$1( + `Attempting to mutate public property "${key}". Properties starting with $ are reserved and readonly.` + ); + return false; + } else { + if (key in instance.appContext.config.globalProperties) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + value + }); + } else { + ctx[key] = value; + } + } + return true; + }, + has({ + _: { data, setupState, accessCache, ctx, appContext, propsOptions } + }, key) { + let normalizedProps; + return !!accessCache[key] || data !== shared.EMPTY_OBJ && shared.hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && shared.hasOwn(normalizedProps, key) || shared.hasOwn(ctx, key) || shared.hasOwn(publicPropertiesMap, key) || shared.hasOwn(appContext.config.globalProperties, key); + }, + defineProperty(target, key, descriptor) { + if (descriptor.get != null) { + target._.accessCache[key] = 0; + } else if (shared.hasOwn(descriptor, "value")) { + this.set(target, key, descriptor.value, null); + } + return Reflect.defineProperty(target, key, descriptor); + } +}; +{ + PublicInstanceProxyHandlers.ownKeys = (target) => { + warn$1( + `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.` + ); + return Reflect.ownKeys(target); + }; +} +const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ shared.extend({}, PublicInstanceProxyHandlers, { + get(target, key) { + if (key === Symbol.unscopables) { + return; + } + return PublicInstanceProxyHandlers.get(target, key, target); + }, + has(_, key) { + const has = key[0] !== "_" && !shared.isGloballyAllowed(key); + if (!has && PublicInstanceProxyHandlers.has(_, key)) { + warn$1( + `Property ${JSON.stringify( + key + )} should not start with _ which is a reserved prefix for Vue internals.` + ); + } + return has; + } +}); +function createDevRenderContext(instance) { + const target = {}; + Object.defineProperty(target, `_`, { + configurable: true, + enumerable: false, + get: () => instance + }); + Object.keys(publicPropertiesMap).forEach((key) => { + Object.defineProperty(target, key, { + configurable: true, + enumerable: false, + get: () => publicPropertiesMap[key](instance), + // intercepted by the proxy so no need for implementation, + // but needed to prevent set errors + set: shared.NOOP + }); + }); + return target; +} +function exposePropsOnRenderContext(instance) { + const { + ctx, + propsOptions: [propsOptions] + } = instance; + if (propsOptions) { + Object.keys(propsOptions).forEach((key) => { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => instance.props[key], + set: shared.NOOP + }); + }); + } +} +function exposeSetupStateOnRenderContext(instance) { + const { ctx, setupState } = instance; + Object.keys(reactivity.toRaw(setupState)).forEach((key) => { + if (!setupState.__isScriptSetup) { + if (isReservedPrefix(key[0])) { + warn$1( + `setup() return property ${JSON.stringify( + key + )} should not start with "$" or "_" which are reserved prefixes for Vue internals.` + ); + return; + } + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => setupState[key], + set: shared.NOOP + }); + } + }); +} + +const warnRuntimeUsage = (method) => warn$1( + `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.` +); +function defineProps() { + { + warnRuntimeUsage(`defineProps`); + } + return null; +} +function defineEmits() { + { + warnRuntimeUsage(`defineEmits`); + } + return null; +} +function defineExpose(exposed) { + { + warnRuntimeUsage(`defineExpose`); + } +} +function defineOptions(options) { + { + warnRuntimeUsage(`defineOptions`); + } +} +function defineSlots() { + { + warnRuntimeUsage(`defineSlots`); + } + return null; +} +function defineModel() { + { + warnRuntimeUsage("defineModel"); + } +} +function withDefaults(props, defaults) { + { + warnRuntimeUsage(`withDefaults`); + } + return null; +} +function useSlots() { + return getContext("useSlots").slots; +} +function useAttrs() { + return getContext("useAttrs").attrs; +} +function getContext(calledFunctionName) { + const i = getCurrentInstance(); + if (!i) { + warn$1(`${calledFunctionName}() called without active instance.`); + } + return i.setupContext || (i.setupContext = createSetupContext(i)); +} +function normalizePropsOrEmits(props) { + return shared.isArray(props) ? props.reduce( + (normalized, p) => (normalized[p] = null, normalized), + {} + ) : props; +} +function mergeDefaults(raw, defaults) { + const props = normalizePropsOrEmits(raw); + for (const key in defaults) { + if (key.startsWith("__skip")) continue; + let opt = props[key]; + if (opt) { + if (shared.isArray(opt) || shared.isFunction(opt)) { + opt = props[key] = { type: opt, default: defaults[key] }; + } else { + opt.default = defaults[key]; + } + } else if (opt === null) { + opt = props[key] = { default: defaults[key] }; + } else { + warn$1(`props default key "${key}" has no corresponding declaration.`); + } + if (opt && defaults[`__skip_${key}`]) { + opt.skipFactory = true; + } + } + return props; +} +function mergeModels(a, b) { + if (!a || !b) return a || b; + if (shared.isArray(a) && shared.isArray(b)) return a.concat(b); + return shared.extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b)); +} +function createPropsRestProxy(props, excludedKeys) { + const ret = {}; + for (const key in props) { + if (!excludedKeys.includes(key)) { + Object.defineProperty(ret, key, { + enumerable: true, + get: () => props[key] + }); + } + } + return ret; +} +function withAsyncContext(getAwaitable) { + const ctx = getCurrentInstance(); + if (!ctx) { + warn$1( + `withAsyncContext called without active current instance. This is likely a bug.` + ); + } + let awaitable = getAwaitable(); + unsetCurrentInstance(); + if (shared.isPromise(awaitable)) { + awaitable = awaitable.catch((e) => { + setCurrentInstance(ctx); + throw e; + }); + } + return [awaitable, () => setCurrentInstance(ctx)]; +} + +function createDuplicateChecker() { + const cache = /* @__PURE__ */ Object.create(null); + return (type, key) => { + if (cache[key]) { + warn$1(`${type} property "${key}" is already defined in ${cache[key]}.`); + } else { + cache[key] = type; + } + }; +} +let shouldCacheAccess = true; +function applyOptions(instance) { + const options = resolveMergedOptions(instance); + const publicThis = instance.proxy; + const ctx = instance.ctx; + shouldCacheAccess = false; + if (options.beforeCreate) { + callHook(options.beforeCreate, instance, "bc"); + } + const { + // state + data: dataOptions, + computed: computedOptions, + methods, + watch: watchOptions, + provide: provideOptions, + inject: injectOptions, + // lifecycle + created, + beforeMount, + mounted, + beforeUpdate, + updated, + activated, + deactivated, + beforeDestroy, + beforeUnmount, + destroyed, + unmounted, + render, + renderTracked, + renderTriggered, + errorCaptured, + serverPrefetch, + // public API + expose, + inheritAttrs, + // assets + components, + directives, + filters + } = options; + const checkDuplicateProperties = createDuplicateChecker() ; + { + const [propsOptions] = instance.propsOptions; + if (propsOptions) { + for (const key in propsOptions) { + checkDuplicateProperties("Props" /* PROPS */, key); + } + } + } + if (injectOptions) { + resolveInjections(injectOptions, ctx, checkDuplicateProperties); + } + if (methods) { + for (const key in methods) { + const methodHandler = methods[key]; + if (shared.isFunction(methodHandler)) { + { + Object.defineProperty(ctx, key, { + value: methodHandler.bind(publicThis), + configurable: true, + enumerable: true, + writable: true + }); + } + { + checkDuplicateProperties("Methods" /* METHODS */, key); + } + } else { + warn$1( + `Method "${key}" has type "${typeof methodHandler}" in the component definition. Did you reference the function correctly?` + ); + } + } + } + if (dataOptions) { + if (!shared.isFunction(dataOptions)) { + warn$1( + `The data option must be a function. Plain object usage is no longer supported.` + ); + } + const data = dataOptions.call(publicThis, publicThis); + if (shared.isPromise(data)) { + warn$1( + `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.` + ); + } + if (!shared.isObject(data)) { + warn$1(`data() should return an object.`); + } else { + instance.data = reactivity.reactive(data); + { + for (const key in data) { + checkDuplicateProperties("Data" /* DATA */, key); + if (!isReservedPrefix(key[0])) { + Object.defineProperty(ctx, key, { + configurable: true, + enumerable: true, + get: () => data[key], + set: shared.NOOP + }); + } + } + } + } + } + shouldCacheAccess = true; + if (computedOptions) { + for (const key in computedOptions) { + const opt = computedOptions[key]; + const get = shared.isFunction(opt) ? opt.bind(publicThis, publicThis) : shared.isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : shared.NOOP; + if (get === shared.NOOP) { + warn$1(`Computed property "${key}" has no getter.`); + } + const set = !shared.isFunction(opt) && shared.isFunction(opt.set) ? opt.set.bind(publicThis) : () => { + warn$1( + `Write operation failed: computed property "${key}" is readonly.` + ); + } ; + const c = computed({ + get, + set + }); + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => c.value, + set: (v) => c.value = v + }); + { + checkDuplicateProperties("Computed" /* COMPUTED */, key); + } + } + } + if (watchOptions) { + for (const key in watchOptions) { + createWatcher(watchOptions[key], ctx, publicThis, key); + } + } + if (provideOptions) { + const provides = shared.isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions; + Reflect.ownKeys(provides).forEach((key) => { + provide(key, provides[key]); + }); + } + if (created) { + callHook(created, instance, "c"); + } + function registerLifecycleHook(register, hook) { + if (shared.isArray(hook)) { + hook.forEach((_hook) => register(_hook.bind(publicThis))); + } else if (hook) { + register(hook.bind(publicThis)); + } + } + registerLifecycleHook(onBeforeMount, beforeMount); + registerLifecycleHook(onMounted, mounted); + registerLifecycleHook(onBeforeUpdate, beforeUpdate); + registerLifecycleHook(onUpdated, updated); + registerLifecycleHook(onActivated, activated); + registerLifecycleHook(onDeactivated, deactivated); + registerLifecycleHook(onErrorCaptured, errorCaptured); + registerLifecycleHook(onRenderTracked, renderTracked); + registerLifecycleHook(onRenderTriggered, renderTriggered); + registerLifecycleHook(onBeforeUnmount, beforeUnmount); + registerLifecycleHook(onUnmounted, unmounted); + registerLifecycleHook(onServerPrefetch, serverPrefetch); + if (shared.isArray(expose)) { + if (expose.length) { + const exposed = instance.exposed || (instance.exposed = {}); + expose.forEach((key) => { + Object.defineProperty(exposed, key, { + get: () => publicThis[key], + set: (val) => publicThis[key] = val, + enumerable: true + }); + }); + } else if (!instance.exposed) { + instance.exposed = {}; + } + } + if (render && instance.render === shared.NOOP) { + instance.render = render; + } + if (inheritAttrs != null) { + instance.inheritAttrs = inheritAttrs; + } + if (components) instance.components = components; + if (directives) instance.directives = directives; + if (serverPrefetch) { + markAsyncBoundary(instance); + } +} +function resolveInjections(injectOptions, ctx, checkDuplicateProperties = shared.NOOP) { + if (shared.isArray(injectOptions)) { + injectOptions = normalizeInject(injectOptions); + } + for (const key in injectOptions) { + const opt = injectOptions[key]; + let injected; + if (shared.isObject(opt)) { + if ("default" in opt) { + injected = inject( + opt.from || key, + opt.default, + true + ); + } else { + injected = inject(opt.from || key); + } + } else { + injected = inject(opt); + } + if (reactivity.isRef(injected)) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => injected.value, + set: (v) => injected.value = v + }); + } else { + ctx[key] = injected; + } + { + checkDuplicateProperties("Inject" /* INJECT */, key); + } + } +} +function callHook(hook, instance, type) { + callWithAsyncErrorHandling( + shared.isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy), + instance, + type + ); +} +function createWatcher(raw, ctx, publicThis, key) { + let getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; + if (shared.isString(raw)) { + const handler = ctx[raw]; + if (shared.isFunction(handler)) { + { + watch(getter, handler); + } + } else { + warn$1(`Invalid watch handler specified by key "${raw}"`, handler); + } + } else if (shared.isFunction(raw)) { + { + watch(getter, raw.bind(publicThis)); + } + } else if (shared.isObject(raw)) { + if (shared.isArray(raw)) { + raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); + } else { + const handler = shared.isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; + if (shared.isFunction(handler)) { + watch(getter, handler, raw); + } else { + warn$1(`Invalid watch handler specified by key "${raw.handler}"`, handler); + } + } + } else { + warn$1(`Invalid watch option: "${key}"`, raw); + } +} +function resolveMergedOptions(instance) { + const base = instance.type; + const { mixins, extends: extendsOptions } = base; + const { + mixins: globalMixins, + optionsCache: cache, + config: { optionMergeStrategies } + } = instance.appContext; + const cached = cache.get(base); + let resolved; + if (cached) { + resolved = cached; + } else if (!globalMixins.length && !mixins && !extendsOptions) { + { + resolved = base; + } + } else { + resolved = {}; + if (globalMixins.length) { + globalMixins.forEach( + (m) => mergeOptions(resolved, m, optionMergeStrategies, true) + ); + } + mergeOptions(resolved, base, optionMergeStrategies); + } + if (shared.isObject(base)) { + cache.set(base, resolved); + } + return resolved; +} +function mergeOptions(to, from, strats, asMixin = false) { + const { mixins, extends: extendsOptions } = from; + if (extendsOptions) { + mergeOptions(to, extendsOptions, strats, true); + } + if (mixins) { + mixins.forEach( + (m) => mergeOptions(to, m, strats, true) + ); + } + for (const key in from) { + if (asMixin && key === "expose") { + warn$1( + `"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.` + ); + } else { + const strat = internalOptionMergeStrats[key] || strats && strats[key]; + to[key] = strat ? strat(to[key], from[key]) : from[key]; + } + } + return to; +} +const internalOptionMergeStrats = { + data: mergeDataFn, + props: mergeEmitsOrPropsOptions, + emits: mergeEmitsOrPropsOptions, + // objects + methods: mergeObjectOptions, + computed: mergeObjectOptions, + // lifecycle + beforeCreate: mergeAsArray, + created: mergeAsArray, + beforeMount: mergeAsArray, + mounted: mergeAsArray, + beforeUpdate: mergeAsArray, + updated: mergeAsArray, + beforeDestroy: mergeAsArray, + beforeUnmount: mergeAsArray, + destroyed: mergeAsArray, + unmounted: mergeAsArray, + activated: mergeAsArray, + deactivated: mergeAsArray, + errorCaptured: mergeAsArray, + serverPrefetch: mergeAsArray, + // assets + components: mergeObjectOptions, + directives: mergeObjectOptions, + // watch + watch: mergeWatchOptions, + // provide / inject + provide: mergeDataFn, + inject: mergeInject +}; +function mergeDataFn(to, from) { + if (!from) { + return to; + } + if (!to) { + return from; + } + return function mergedDataFn() { + return (shared.extend)( + shared.isFunction(to) ? to.call(this, this) : to, + shared.isFunction(from) ? from.call(this, this) : from + ); + }; +} +function mergeInject(to, from) { + return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); +} +function normalizeInject(raw) { + if (shared.isArray(raw)) { + const res = {}; + for (let i = 0; i < raw.length; i++) { + res[raw[i]] = raw[i]; + } + return res; + } + return raw; +} +function mergeAsArray(to, from) { + return to ? [...new Set([].concat(to, from))] : from; +} +function mergeObjectOptions(to, from) { + return to ? shared.extend(/* @__PURE__ */ Object.create(null), to, from) : from; +} +function mergeEmitsOrPropsOptions(to, from) { + if (to) { + if (shared.isArray(to) && shared.isArray(from)) { + return [.../* @__PURE__ */ new Set([...to, ...from])]; + } + return shared.extend( + /* @__PURE__ */ Object.create(null), + normalizePropsOrEmits(to), + normalizePropsOrEmits(from != null ? from : {}) + ); + } else { + return from; + } +} +function mergeWatchOptions(to, from) { + if (!to) return from; + if (!from) return to; + const merged = shared.extend(/* @__PURE__ */ Object.create(null), to); + for (const key in from) { + merged[key] = mergeAsArray(to[key], from[key]); + } + return merged; +} + +function createAppContext() { + return { + app: null, + config: { + isNativeTag: shared.NO, + performance: false, + globalProperties: {}, + optionMergeStrategies: {}, + errorHandler: void 0, + warnHandler: void 0, + compilerOptions: {} + }, + mixins: [], + components: {}, + directives: {}, + provides: /* @__PURE__ */ Object.create(null), + optionsCache: /* @__PURE__ */ new WeakMap(), + propsCache: /* @__PURE__ */ new WeakMap(), + emitsCache: /* @__PURE__ */ new WeakMap() + }; +} +let uid$1 = 0; +function createAppAPI(render, hydrate) { + return function createApp(rootComponent, rootProps = null) { + if (!shared.isFunction(rootComponent)) { + rootComponent = shared.extend({}, rootComponent); + } + if (rootProps != null && !shared.isObject(rootProps)) { + warn$1(`root props passed to app.mount() must be an object.`); + rootProps = null; + } + const context = createAppContext(); + const installedPlugins = /* @__PURE__ */ new WeakSet(); + const pluginCleanupFns = []; + let isMounted = false; + const app = context.app = { + _uid: uid$1++, + _component: rootComponent, + _props: rootProps, + _container: null, + _context: context, + _instance: null, + version, + get config() { + return context.config; + }, + set config(v) { + { + warn$1( + `app.config cannot be replaced. Modify individual options instead.` + ); + } + }, + use(plugin, ...options) { + if (installedPlugins.has(plugin)) { + warn$1(`Plugin has already been applied to target app.`); + } else if (plugin && shared.isFunction(plugin.install)) { + installedPlugins.add(plugin); + plugin.install(app, ...options); + } else if (shared.isFunction(plugin)) { + installedPlugins.add(plugin); + plugin(app, ...options); + } else { + warn$1( + `A plugin must either be a function or an object with an "install" function.` + ); + } + return app; + }, + mixin(mixin) { + { + if (!context.mixins.includes(mixin)) { + context.mixins.push(mixin); + } else { + warn$1( + "Mixin has already been applied to target app" + (mixin.name ? `: ${mixin.name}` : "") + ); + } + } + return app; + }, + component(name, component) { + { + validateComponentName(name, context.config); + } + if (!component) { + return context.components[name]; + } + if (context.components[name]) { + warn$1(`Component "${name}" has already been registered in target app.`); + } + context.components[name] = component; + return app; + }, + directive(name, directive) { + { + validateDirectiveName(name); + } + if (!directive) { + return context.directives[name]; + } + if (context.directives[name]) { + warn$1(`Directive "${name}" has already been registered in target app.`); + } + context.directives[name] = directive; + return app; + }, + mount(rootContainer, isHydrate, namespace) { + if (!isMounted) { + if (rootContainer.__vue_app__) { + warn$1( + `There is already an app instance mounted on the host container. + If you want to mount another app on the same host container, you need to unmount the previous app by calling \`app.unmount()\` first.` + ); + } + const vnode = app._ceVNode || createVNode(rootComponent, rootProps); + vnode.appContext = context; + if (namespace === true) { + namespace = "svg"; + } else if (namespace === false) { + namespace = void 0; + } + { + context.reload = () => { + const cloned = cloneVNode(vnode); + cloned.el = null; + render(cloned, rootContainer, namespace); + }; + } + if (isHydrate && hydrate) { + hydrate(vnode, rootContainer); + } else { + render(vnode, rootContainer, namespace); + } + isMounted = true; + app._container = rootContainer; + rootContainer.__vue_app__ = app; + { + app._instance = vnode.component; + devtoolsInitApp(app, version); + } + return getComponentPublicInstance(vnode.component); + } else { + warn$1( + `App has already been mounted. +If you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \`const createMyApp = () => createApp(App)\`` + ); + } + }, + onUnmount(cleanupFn) { + if (typeof cleanupFn !== "function") { + warn$1( + `Expected function as first argument to app.onUnmount(), but got ${typeof cleanupFn}` + ); + } + pluginCleanupFns.push(cleanupFn); + }, + unmount() { + if (isMounted) { + callWithAsyncErrorHandling( + pluginCleanupFns, + app._instance, + 16 + ); + render(null, app._container); + { + app._instance = null; + devtoolsUnmountApp(app); + } + delete app._container.__vue_app__; + } else { + warn$1(`Cannot unmount an app that is not mounted.`); + } + }, + provide(key, value) { + if (key in context.provides) { + if (shared.hasOwn(context.provides, key)) { + warn$1( + `App already provides property with key "${String(key)}". It will be overwritten with the new value.` + ); + } else { + warn$1( + `App already provides property with key "${String(key)}" inherited from its parent element. It will be overwritten with the new value.` + ); + } + } + context.provides[key] = value; + return app; + }, + runWithContext(fn) { + const lastApp = currentApp; + currentApp = app; + try { + return fn(); + } finally { + currentApp = lastApp; + } + } + }; + return app; + }; +} +let currentApp = null; + +function provide(key, value) { + if (!currentInstance) { + { + warn$1(`provide() can only be used inside setup().`); + } + } else { + let provides = currentInstance.provides; + const parentProvides = currentInstance.parent && currentInstance.parent.provides; + if (parentProvides === provides) { + provides = currentInstance.provides = Object.create(parentProvides); + } + provides[key] = value; + } +} +function inject(key, defaultValue, treatDefaultAsFactory = false) { + const instance = getCurrentInstance(); + if (instance || currentApp) { + let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0; + if (provides && key in provides) { + return provides[key]; + } else if (arguments.length > 1) { + return treatDefaultAsFactory && shared.isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; + } else { + warn$1(`injection "${String(key)}" not found.`); + } + } else { + warn$1(`inject() can only be used inside setup() or functional components.`); + } +} +function hasInjectionContext() { + return !!(getCurrentInstance() || currentApp); +} + +const internalObjectProto = {}; +const createInternalObject = () => Object.create(internalObjectProto); +const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto; + +function initProps(instance, rawProps, isStateful, isSSR = false) { + const props = {}; + const attrs = createInternalObject(); + instance.propsDefaults = /* @__PURE__ */ Object.create(null); + setFullProps(instance, rawProps, props, attrs); + for (const key in instance.propsOptions[0]) { + if (!(key in props)) { + props[key] = void 0; + } + } + { + validateProps(rawProps || {}, props, instance); + } + if (isStateful) { + instance.props = isSSR ? props : reactivity.shallowReactive(props); + } else { + if (!instance.type.props) { + instance.props = attrs; + } else { + instance.props = props; + } + } + instance.attrs = attrs; +} +function isInHmrContext(instance) { + while (instance) { + if (instance.type.__hmrId) return true; + instance = instance.parent; + } +} +function updateProps(instance, rawProps, rawPrevProps, optimized) { + const { + props, + attrs, + vnode: { patchFlag } + } = instance; + const rawCurrentProps = reactivity.toRaw(props); + const [options] = instance.propsOptions; + let hasAttrsChanged = false; + if ( + // always force full diff in dev + // - #1942 if hmr is enabled with sfc component + // - vite#872 non-sfc component used by sfc component + !isInHmrContext(instance) && (optimized || patchFlag > 0) && !(patchFlag & 16) + ) { + if (patchFlag & 8) { + const propsToUpdate = instance.vnode.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + let key = propsToUpdate[i]; + if (isEmitListener(instance.emitsOptions, key)) { + continue; + } + const value = rawProps[key]; + if (options) { + if (shared.hasOwn(attrs, key)) { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } else { + const camelizedKey = shared.camelize(key); + props[camelizedKey] = resolvePropValue( + options, + rawCurrentProps, + camelizedKey, + value, + instance, + false + ); + } + } else { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + } else { + if (setFullProps(instance, rawProps, props, attrs)) { + hasAttrsChanged = true; + } + let kebabKey; + for (const key in rawCurrentProps) { + if (!rawProps || // for camelCase + !shared.hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case + // and converted to camelCase (#955) + ((kebabKey = shared.hyphenate(key)) === key || !shared.hasOwn(rawProps, kebabKey))) { + if (options) { + if (rawPrevProps && // for camelCase + (rawPrevProps[key] !== void 0 || // for kebab-case + rawPrevProps[kebabKey] !== void 0)) { + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + void 0, + instance, + true + ); + } + } else { + delete props[key]; + } + } + } + if (attrs !== rawCurrentProps) { + for (const key in attrs) { + if (!rawProps || !shared.hasOwn(rawProps, key) && true) { + delete attrs[key]; + hasAttrsChanged = true; + } + } + } + } + if (hasAttrsChanged) { + reactivity.trigger(instance.attrs, "set", ""); + } + { + validateProps(rawProps || {}, props, instance); + } +} +function setFullProps(instance, rawProps, props, attrs) { + const [options, needCastKeys] = instance.propsOptions; + let hasAttrsChanged = false; + let rawCastValues; + if (rawProps) { + for (let key in rawProps) { + if (shared.isReservedProp(key)) { + continue; + } + const value = rawProps[key]; + let camelKey; + if (options && shared.hasOwn(options, camelKey = shared.camelize(key))) { + if (!needCastKeys || !needCastKeys.includes(camelKey)) { + props[camelKey] = value; + } else { + (rawCastValues || (rawCastValues = {}))[camelKey] = value; + } + } else if (!isEmitListener(instance.emitsOptions, key)) { + if (!(key in attrs) || value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + if (needCastKeys) { + const rawCurrentProps = reactivity.toRaw(props); + const castValues = rawCastValues || shared.EMPTY_OBJ; + for (let i = 0; i < needCastKeys.length; i++) { + const key = needCastKeys[i]; + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + castValues[key], + instance, + !shared.hasOwn(castValues, key) + ); + } + } + return hasAttrsChanged; +} +function resolvePropValue(options, props, key, value, instance, isAbsent) { + const opt = options[key]; + if (opt != null) { + const hasDefault = shared.hasOwn(opt, "default"); + if (hasDefault && value === void 0) { + const defaultValue = opt.default; + if (opt.type !== Function && !opt.skipFactory && shared.isFunction(defaultValue)) { + const { propsDefaults } = instance; + if (key in propsDefaults) { + value = propsDefaults[key]; + } else { + const reset = setCurrentInstance(instance); + value = propsDefaults[key] = defaultValue.call( + null, + props + ); + reset(); + } + } else { + value = defaultValue; + } + if (instance.ce) { + instance.ce._setProp(key, value); + } + } + if (opt[0 /* shouldCast */]) { + if (isAbsent && !hasDefault) { + value = false; + } else if (opt[1 /* shouldCastTrue */] && (value === "" || value === shared.hyphenate(key))) { + value = true; + } + } + } + return value; +} +const mixinPropsCache = /* @__PURE__ */ new WeakMap(); +function normalizePropsOptions(comp, appContext, asMixin = false) { + const cache = asMixin ? mixinPropsCache : appContext.propsCache; + const cached = cache.get(comp); + if (cached) { + return cached; + } + const raw = comp.props; + const normalized = {}; + const needCastKeys = []; + let hasExtends = false; + if (!shared.isFunction(comp)) { + const extendProps = (raw2) => { + hasExtends = true; + const [props, keys] = normalizePropsOptions(raw2, appContext, true); + shared.extend(normalized, props); + if (keys) needCastKeys.push(...keys); + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendProps); + } + if (comp.extends) { + extendProps(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendProps); + } + } + if (!raw && !hasExtends) { + if (shared.isObject(comp)) { + cache.set(comp, shared.EMPTY_ARR); + } + return shared.EMPTY_ARR; + } + if (shared.isArray(raw)) { + for (let i = 0; i < raw.length; i++) { + if (!shared.isString(raw[i])) { + warn$1(`props must be strings when using array syntax.`, raw[i]); + } + const normalizedKey = shared.camelize(raw[i]); + if (validatePropName(normalizedKey)) { + normalized[normalizedKey] = shared.EMPTY_OBJ; + } + } + } else if (raw) { + if (!shared.isObject(raw)) { + warn$1(`invalid props options`, raw); + } + for (const key in raw) { + const normalizedKey = shared.camelize(key); + if (validatePropName(normalizedKey)) { + const opt = raw[key]; + const prop = normalized[normalizedKey] = shared.isArray(opt) || shared.isFunction(opt) ? { type: opt } : shared.extend({}, opt); + const propType = prop.type; + let shouldCast = false; + let shouldCastTrue = true; + if (shared.isArray(propType)) { + for (let index = 0; index < propType.length; ++index) { + const type = propType[index]; + const typeName = shared.isFunction(type) && type.name; + if (typeName === "Boolean") { + shouldCast = true; + break; + } else if (typeName === "String") { + shouldCastTrue = false; + } + } + } else { + shouldCast = shared.isFunction(propType) && propType.name === "Boolean"; + } + prop[0 /* shouldCast */] = shouldCast; + prop[1 /* shouldCastTrue */] = shouldCastTrue; + if (shouldCast || shared.hasOwn(prop, "default")) { + needCastKeys.push(normalizedKey); + } + } + } + } + const res = [normalized, needCastKeys]; + if (shared.isObject(comp)) { + cache.set(comp, res); + } + return res; +} +function validatePropName(key) { + if (key[0] !== "$" && !shared.isReservedProp(key)) { + return true; + } else { + warn$1(`Invalid prop name: "${key}" is a reserved property.`); + } + return false; +} +function getType(ctor) { + if (ctor === null) { + return "null"; + } + if (typeof ctor === "function") { + return ctor.name || ""; + } else if (typeof ctor === "object") { + const name = ctor.constructor && ctor.constructor.name; + return name || ""; + } + return ""; +} +function validateProps(rawProps, props, instance) { + const resolvedValues = reactivity.toRaw(props); + const options = instance.propsOptions[0]; + const camelizePropsKey = Object.keys(rawProps).map((key) => shared.camelize(key)); + for (const key in options) { + let opt = options[key]; + if (opt == null) continue; + validateProp( + key, + resolvedValues[key], + opt, + reactivity.shallowReadonly(resolvedValues) , + !camelizePropsKey.includes(key) + ); + } +} +function validateProp(name, value, prop, props, isAbsent) { + const { type, required, validator, skipCheck } = prop; + if (required && isAbsent) { + warn$1('Missing required prop: "' + name + '"'); + return; + } + if (value == null && !required) { + return; + } + if (type != null && type !== true && !skipCheck) { + let isValid = false; + const types = shared.isArray(type) ? type : [type]; + const expectedTypes = []; + for (let i = 0; i < types.length && !isValid; i++) { + const { valid, expectedType } = assertType(value, types[i]); + expectedTypes.push(expectedType || ""); + isValid = valid; + } + if (!isValid) { + warn$1(getInvalidTypeMessage(name, value, expectedTypes)); + return; + } + } + if (validator && !validator(value, props)) { + warn$1('Invalid prop: custom validator check failed for prop "' + name + '".'); + } +} +const isSimpleType = /* @__PURE__ */ shared.makeMap( + "String,Number,Boolean,Function,Symbol,BigInt" +); +function assertType(value, type) { + let valid; + const expectedType = getType(type); + if (expectedType === "null") { + valid = value === null; + } else if (isSimpleType(expectedType)) { + const t = typeof value; + valid = t === expectedType.toLowerCase(); + if (!valid && t === "object") { + valid = value instanceof type; + } + } else if (expectedType === "Object") { + valid = shared.isObject(value); + } else if (expectedType === "Array") { + valid = shared.isArray(value); + } else { + valid = value instanceof type; + } + return { + valid, + expectedType + }; +} +function getInvalidTypeMessage(name, value, expectedTypes) { + if (expectedTypes.length === 0) { + return `Prop type [] for prop "${name}" won't match anything. Did you mean to use type Array instead?`; + } + let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes.map(shared.capitalize).join(" | ")}`; + const expectedType = expectedTypes[0]; + const receivedType = shared.toRawType(value); + const expectedValue = styleValue(value, expectedType); + const receivedValue = styleValue(value, receivedType); + if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) { + message += ` with value ${expectedValue}`; + } + message += `, got ${receivedType} `; + if (isExplicable(receivedType)) { + message += `with value ${receivedValue}.`; + } + return message; +} +function styleValue(value, type) { + if (type === "String") { + return `"${value}"`; + } else if (type === "Number") { + return `${Number(value)}`; + } else { + return `${value}`; + } +} +function isExplicable(type) { + const explicitTypes = ["string", "number", "boolean"]; + return explicitTypes.some((elem) => type.toLowerCase() === elem); +} +function isBoolean(...args) { + return args.some((elem) => elem.toLowerCase() === "boolean"); +} + +const isInternalKey = (key) => key === "_" || key === "__" || key === "_ctx" || key === "$stable"; +const normalizeSlotValue = (value) => shared.isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)]; +const normalizeSlot = (key, rawSlot, ctx) => { + if (rawSlot._n) { + return rawSlot; + } + const normalized = withCtx((...args) => { + if (currentInstance && !(ctx === null && currentRenderingInstance) && !(ctx && ctx.root !== currentInstance.root)) { + warn$1( + `Slot "${key}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.` + ); + } + return normalizeSlotValue(rawSlot(...args)); + }, ctx); + normalized._c = false; + return normalized; +}; +const normalizeObjectSlots = (rawSlots, slots, instance) => { + const ctx = rawSlots._ctx; + for (const key in rawSlots) { + if (isInternalKey(key)) continue; + const value = rawSlots[key]; + if (shared.isFunction(value)) { + slots[key] = normalizeSlot(key, value, ctx); + } else if (value != null) { + { + warn$1( + `Non-function value encountered for slot "${key}". Prefer function slots for better performance.` + ); + } + const normalized = normalizeSlotValue(value); + slots[key] = () => normalized; + } + } +}; +const normalizeVNodeSlots = (instance, children) => { + if (!isKeepAlive(instance.vnode) && true) { + warn$1( + `Non-function value encountered for default slot. Prefer function slots for better performance.` + ); + } + const normalized = normalizeSlotValue(children); + instance.slots.default = () => normalized; +}; +const assignSlots = (slots, children, optimized) => { + for (const key in children) { + if (optimized || !isInternalKey(key)) { + slots[key] = children[key]; + } + } +}; +const initSlots = (instance, children, optimized) => { + const slots = instance.slots = createInternalObject(); + if (instance.vnode.shapeFlag & 32) { + const cacheIndexes = children.__; + if (cacheIndexes) shared.def(slots, "__", cacheIndexes, true); + const type = children._; + if (type) { + assignSlots(slots, children, optimized); + if (optimized) { + shared.def(slots, "_", type, true); + } + } else { + normalizeObjectSlots(children, slots); + } + } else if (children) { + normalizeVNodeSlots(instance, children); + } +}; +const updateSlots = (instance, children, optimized) => { + const { vnode, slots } = instance; + let needDeletionCheck = true; + let deletionComparisonTarget = shared.EMPTY_OBJ; + if (vnode.shapeFlag & 32) { + const type = children._; + if (type) { + if (isHmrUpdating) { + assignSlots(slots, children, optimized); + reactivity.trigger(instance, "set", "$slots"); + } else if (optimized && type === 1) { + needDeletionCheck = false; + } else { + assignSlots(slots, children, optimized); + } + } else { + needDeletionCheck = !children.$stable; + normalizeObjectSlots(children, slots); + } + deletionComparisonTarget = children; + } else if (children) { + normalizeVNodeSlots(instance, children); + deletionComparisonTarget = { default: 1 }; + } + if (needDeletionCheck) { + for (const key in slots) { + if (!isInternalKey(key) && deletionComparisonTarget[key] == null) { + delete slots[key]; + } + } + } +}; + +let supported; +let perf; +function startMeasure(instance, type) { + if (instance.appContext.config.performance && isSupported()) { + perf.mark(`vue-${type}-${instance.uid}`); + } + { + devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now()); + } +} +function endMeasure(instance, type) { + if (instance.appContext.config.performance && isSupported()) { + const startTag = `vue-${type}-${instance.uid}`; + const endTag = startTag + `:end`; + perf.mark(endTag); + perf.measure( + `<${formatComponentName(instance, instance.type)}> ${type}`, + startTag, + endTag + ); + perf.clearMarks(startTag); + perf.clearMarks(endTag); + } + { + devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now()); + } +} +function isSupported() { + if (supported !== void 0) { + return supported; + } + if (typeof window !== "undefined" && window.performance) { + supported = true; + perf = window.performance; + } else { + supported = false; + } + return supported; +} + +const queuePostRenderEffect = queueEffectWithSuspense ; +function createRenderer(options) { + return baseCreateRenderer(options); +} +function createHydrationRenderer(options) { + return baseCreateRenderer(options, createHydrationFunctions); +} +function baseCreateRenderer(options, createHydrationFns) { + const target = shared.getGlobalThis(); + target.__VUE__ = true; + { + setDevtoolsHook$1(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target); + } + const { + insert: hostInsert, + remove: hostRemove, + patchProp: hostPatchProp, + createElement: hostCreateElement, + createText: hostCreateText, + createComment: hostCreateComment, + setText: hostSetText, + setElementText: hostSetElementText, + parentNode: hostParentNode, + nextSibling: hostNextSibling, + setScopeId: hostSetScopeId = shared.NOOP, + insertStaticContent: hostInsertStaticContent + } = options; + const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = isHmrUpdating ? false : !!n2.dynamicChildren) => { + if (n1 === n2) { + return; + } + if (n1 && !isSameVNodeType(n1, n2)) { + anchor = getNextHostNode(n1); + unmount(n1, parentComponent, parentSuspense, true); + n1 = null; + } + if (n2.patchFlag === -2) { + optimized = false; + n2.dynamicChildren = null; + } + const { type, ref, shapeFlag } = n2; + switch (type) { + case Text: + processText(n1, n2, container, anchor); + break; + case Comment: + processCommentNode(n1, n2, container, anchor); + break; + case Static: + if (n1 == null) { + mountStaticNode(n2, container, anchor, namespace); + } else { + patchStaticNode(n1, n2, container, namespace); + } + break; + case Fragment: + processFragment( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + break; + default: + if (shapeFlag & 1) { + processElement( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 6) { + processComponent( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 64) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + } else if (shapeFlag & 128) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + } else { + warn$1("Invalid VNode type:", type, `(${typeof type})`); + } + } + if (ref != null && parentComponent) { + setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2); + } else if (ref == null && n1 && n1.ref != null) { + setRef(n1.ref, null, parentSuspense, n1, true); + } + }; + const processText = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateText(n2.children), + container, + anchor + ); + } else { + const el = n2.el = n1.el; + if (n2.children !== n1.children) { + hostSetText(el, n2.children); + } + } + }; + const processCommentNode = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateComment(n2.children || ""), + container, + anchor + ); + } else { + n2.el = n1.el; + } + }; + const mountStaticNode = (n2, container, anchor, namespace) => { + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + namespace, + n2.el, + n2.anchor + ); + }; + const patchStaticNode = (n1, n2, container, namespace) => { + if (n2.children !== n1.children) { + const anchor = hostNextSibling(n1.anchor); + removeStaticNode(n1); + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + namespace + ); + } else { + n2.el = n1.el; + n2.anchor = n1.anchor; + } + }; + const moveStaticNode = ({ el, anchor }, container, nextSibling) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostInsert(el, container, nextSibling); + el = next; + } + hostInsert(anchor, container, nextSibling); + }; + const removeStaticNode = ({ el, anchor }) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostRemove(el); + el = next; + } + hostRemove(anchor); + }; + const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + if (n2.type === "svg") { + namespace = "svg"; + } else if (n2.type === "math") { + namespace = "mathml"; + } + if (n1 == null) { + mountElement( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + patchElement( + n1, + n2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + let el; + let vnodeHook; + const { props, shapeFlag, transition, dirs } = vnode; + el = vnode.el = hostCreateElement( + vnode.type, + namespace, + props && props.is, + props + ); + if (shapeFlag & 8) { + hostSetElementText(el, vnode.children); + } else if (shapeFlag & 16) { + mountChildren( + vnode.children, + el, + null, + parentComponent, + parentSuspense, + resolveChildrenNamespace(vnode, namespace), + slotScopeIds, + optimized + ); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent); + if (props) { + for (const key in props) { + if (key !== "value" && !shared.isReservedProp(key)) { + hostPatchProp(el, key, null, props[key], namespace, parentComponent); + } + } + if ("value" in props) { + hostPatchProp(el, "value", null, props.value, namespace); + } + if (vnodeHook = props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + } + { + shared.def(el, "__vnode", vnode, true); + shared.def(el, "__vueParentComponent", parentComponent, true); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + const needCallTransitionHooks = needTransition(parentSuspense, transition); + if (needCallTransitionHooks) { + transition.beforeEnter(el); + } + hostInsert(el, container, anchor); + if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + }; + const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { + if (scopeId) { + hostSetScopeId(el, scopeId); + } + if (slotScopeIds) { + for (let i = 0; i < slotScopeIds.length; i++) { + hostSetScopeId(el, slotScopeIds[i]); + } + } + if (parentComponent) { + let subTree = parentComponent.subTree; + if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) { + subTree = filterSingleRoot(subTree.children) || subTree; + } + if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) { + const parentVNode = parentComponent.vnode; + setScopeId( + el, + parentVNode, + parentVNode.scopeId, + parentVNode.slotScopeIds, + parentComponent.parent + ); + } + } + }; + const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => { + for (let i = start; i < children.length; i++) { + const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]); + patch( + null, + child, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + const el = n2.el = n1.el; + { + el.__vnode = n2; + } + let { patchFlag, dynamicChildren, dirs } = n2; + patchFlag |= n1.patchFlag & 16; + const oldProps = n1.props || shared.EMPTY_OBJ; + const newProps = n2.props || shared.EMPTY_OBJ; + let vnodeHook; + parentComponent && toggleRecurse(parentComponent, false); + if (vnodeHook = newProps.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + } + if (dirs) { + invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate"); + } + parentComponent && toggleRecurse(parentComponent, true); + if (isHmrUpdating) { + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) { + hostSetElementText(el, ""); + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + el, + parentComponent, + parentSuspense, + resolveChildrenNamespace(n2, namespace), + slotScopeIds + ); + { + traverseStaticChildren(n1, n2); + } + } else if (!optimized) { + patchChildren( + n1, + n2, + el, + null, + parentComponent, + parentSuspense, + resolveChildrenNamespace(n2, namespace), + slotScopeIds, + false + ); + } + if (patchFlag > 0) { + if (patchFlag & 16) { + patchProps(el, oldProps, newProps, parentComponent, namespace); + } else { + if (patchFlag & 2) { + if (oldProps.class !== newProps.class) { + hostPatchProp(el, "class", null, newProps.class, namespace); + } + } + if (patchFlag & 4) { + hostPatchProp(el, "style", oldProps.style, newProps.style, namespace); + } + if (patchFlag & 8) { + const propsToUpdate = n2.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + const key = propsToUpdate[i]; + const prev = oldProps[key]; + const next = newProps[key]; + if (next !== prev || key === "value") { + hostPatchProp(el, key, prev, next, namespace, parentComponent); + } + } + } + } + if (patchFlag & 1) { + if (n1.children !== n2.children) { + hostSetElementText(el, n2.children); + } + } + } else if (!optimized && dynamicChildren == null) { + patchProps(el, oldProps, newProps, parentComponent, namespace); + } + if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated"); + }, parentSuspense); + } + }; + const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => { + for (let i = 0; i < newChildren.length; i++) { + const oldVNode = oldChildren[i]; + const newVNode = newChildren[i]; + const container = ( + // oldVNode may be an errored async setup() component inside Suspense + // which will not have a mounted element + oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent + // of the Fragment itself so it can move its children. + (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement + // which also requires the correct parent container + !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything. + oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : ( + // In other cases, the parent container is not actually used so we + // just pass the block element here to avoid a DOM parentNode call. + fallbackContainer + ) + ); + patch( + oldVNode, + newVNode, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + true + ); + } + }; + const patchProps = (el, oldProps, newProps, parentComponent, namespace) => { + if (oldProps !== newProps) { + if (oldProps !== shared.EMPTY_OBJ) { + for (const key in oldProps) { + if (!shared.isReservedProp(key) && !(key in newProps)) { + hostPatchProp( + el, + key, + oldProps[key], + null, + namespace, + parentComponent + ); + } + } + } + for (const key in newProps) { + if (shared.isReservedProp(key)) continue; + const next = newProps[key]; + const prev = oldProps[key]; + if (next !== prev && key !== "value") { + hostPatchProp(el, key, prev, next, namespace, parentComponent); + } + } + if ("value" in newProps) { + hostPatchProp(el, "value", oldProps.value, newProps.value, namespace); + } + } + }; + const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(""); + const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(""); + let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; + if ( + // #5523 dev root fragment may inherit directives + isHmrUpdating || patchFlag & 2048 + ) { + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + if (n1 == null) { + hostInsert(fragmentStartAnchor, container, anchor); + hostInsert(fragmentEndAnchor, container, anchor); + mountChildren( + // #10007 + // such fragment like `<></>` will be compiled into + // a fragment which doesn't have a children. + // In this case fallback to an empty array + n2.children || [], + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result + // of renderSlot() with no valid children + n1.dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + container, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + { + traverseStaticChildren(n1, n2); + } + } else { + patchChildren( + n1, + n2, + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + } + }; + const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + n2.slotScopeIds = slotScopeIds; + if (n1 == null) { + if (n2.shapeFlag & 512) { + parentComponent.ctx.activate( + n2, + container, + anchor, + namespace, + optimized + ); + } else { + mountComponent( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + optimized + ); + } + } else { + updateComponent(n1, n2, optimized); + } + }; + const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => { + const instance = (initialVNode.component = createComponentInstance( + initialVNode, + parentComponent, + parentSuspense + )); + if (instance.type.__hmrId) { + registerHMR(instance); + } + { + pushWarningContext(initialVNode); + startMeasure(instance, `mount`); + } + if (isKeepAlive(initialVNode)) { + instance.ctx.renderer = internals; + } + { + { + startMeasure(instance, `init`); + } + setupComponent(instance, false, optimized); + { + endMeasure(instance, `init`); + } + } + if (isHmrUpdating) initialVNode.el = null; + if (instance.asyncDep) { + parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized); + if (!initialVNode.el) { + const placeholder = instance.subTree = createVNode(Comment); + processCommentNode(null, placeholder, container, anchor); + initialVNode.placeholder = placeholder.el; + } + } else { + setupRenderEffect( + instance, + initialVNode, + container, + anchor, + parentSuspense, + namespace, + optimized + ); + } + { + popWarningContext(); + endMeasure(instance, `mount`); + } + }; + const updateComponent = (n1, n2, optimized) => { + const instance = n2.component = n1.component; + if (shouldUpdateComponent(n1, n2, optimized)) { + if (instance.asyncDep && !instance.asyncResolved) { + { + pushWarningContext(n2); + } + updateComponentPreRender(instance, n2, optimized); + { + popWarningContext(); + } + return; + } else { + instance.next = n2; + instance.update(); + } + } else { + n2.el = n1.el; + instance.vnode = n2; + } + }; + const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => { + const componentUpdateFn = () => { + if (!instance.isMounted) { + let vnodeHook; + const { el, props } = initialVNode; + const { bm, m, parent, root, type } = instance; + const isAsyncWrapperVNode = isAsyncWrapper(initialVNode); + toggleRecurse(instance, false); + if (bm) { + shared.invokeArrayFns(bm); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) { + invokeVNodeHook(vnodeHook, parent, initialVNode); + } + toggleRecurse(instance, true); + if (el && hydrateNode) { + const hydrateSubTree = () => { + { + startMeasure(instance, `render`); + } + instance.subTree = renderComponentRoot(instance); + { + endMeasure(instance, `render`); + } + { + startMeasure(instance, `hydrate`); + } + hydrateNode( + el, + instance.subTree, + instance, + parentSuspense, + null + ); + { + endMeasure(instance, `hydrate`); + } + }; + if (isAsyncWrapperVNode && type.__asyncHydrate) { + type.__asyncHydrate( + el, + instance, + hydrateSubTree + ); + } else { + hydrateSubTree(); + } + } else { + if (root.ce && // @ts-expect-error _def is private + root.ce._def.shadowRoot !== false) { + root.ce._injectChildStyle(type); + } + { + startMeasure(instance, `render`); + } + const subTree = instance.subTree = renderComponentRoot(instance); + { + endMeasure(instance, `render`); + } + { + startMeasure(instance, `patch`); + } + patch( + null, + subTree, + container, + anchor, + instance, + parentSuspense, + namespace + ); + { + endMeasure(instance, `patch`); + } + initialVNode.el = subTree.el; + } + if (m) { + queuePostRenderEffect(m, parentSuspense); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) { + const scopedInitialVNode = initialVNode; + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), + parentSuspense + ); + } + if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) { + instance.a && queuePostRenderEffect(instance.a, parentSuspense); + } + instance.isMounted = true; + { + devtoolsComponentAdded(instance); + } + initialVNode = container = anchor = null; + } else { + let { next, bu, u, parent, vnode } = instance; + { + const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance); + if (nonHydratedAsyncRoot) { + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } + nonHydratedAsyncRoot.asyncDep.then(() => { + if (!instance.isUnmounted) { + componentUpdateFn(); + } + }); + return; + } + } + let originNext = next; + let vnodeHook; + { + pushWarningContext(next || instance.vnode); + } + toggleRecurse(instance, false); + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } else { + next = vnode; + } + if (bu) { + shared.invokeArrayFns(bu); + } + if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parent, next, vnode); + } + toggleRecurse(instance, true); + { + startMeasure(instance, `render`); + } + const nextTree = renderComponentRoot(instance); + { + endMeasure(instance, `render`); + } + const prevTree = instance.subTree; + instance.subTree = nextTree; + { + startMeasure(instance, `patch`); + } + patch( + prevTree, + nextTree, + // parent may have changed if it's in a teleport + hostParentNode(prevTree.el), + // anchor may have changed if it's in a fragment + getNextHostNode(prevTree), + instance, + parentSuspense, + namespace + ); + { + endMeasure(instance, `patch`); + } + next.el = nextTree.el; + if (originNext === null) { + updateHOCHostEl(instance, nextTree.el); + } + if (u) { + queuePostRenderEffect(u, parentSuspense); + } + if (vnodeHook = next.props && next.props.onVnodeUpdated) { + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, next, vnode), + parentSuspense + ); + } + { + devtoolsComponentUpdated(instance); + } + { + popWarningContext(); + } + } + }; + instance.scope.on(); + const effect = instance.effect = new reactivity.ReactiveEffect(componentUpdateFn); + instance.scope.off(); + const update = instance.update = effect.run.bind(effect); + const job = instance.job = effect.runIfDirty.bind(effect); + job.i = instance; + job.id = instance.uid; + effect.scheduler = () => queueJob(job); + toggleRecurse(instance, true); + { + effect.onTrack = instance.rtc ? (e) => shared.invokeArrayFns(instance.rtc, e) : void 0; + effect.onTrigger = instance.rtg ? (e) => shared.invokeArrayFns(instance.rtg, e) : void 0; + } + update(); + }; + const updateComponentPreRender = (instance, nextVNode, optimized) => { + nextVNode.component = instance; + const prevProps = instance.vnode.props; + instance.vnode = nextVNode; + instance.next = null; + updateProps(instance, nextVNode.props, prevProps, optimized); + updateSlots(instance, nextVNode.children, optimized); + reactivity.pauseTracking(); + flushPreFlushCbs(instance); + reactivity.resetTracking(); + }; + const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => { + const c1 = n1 && n1.children; + const prevShapeFlag = n1 ? n1.shapeFlag : 0; + const c2 = n2.children; + const { patchFlag, shapeFlag } = n2; + if (patchFlag > 0) { + if (patchFlag & 128) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + return; + } else if (patchFlag & 256) { + patchUnkeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + return; + } + } + if (shapeFlag & 8) { + if (prevShapeFlag & 16) { + unmountChildren(c1, parentComponent, parentSuspense); + } + if (c2 !== c1) { + hostSetElementText(container, c2); + } + } else { + if (prevShapeFlag & 16) { + if (shapeFlag & 16) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + unmountChildren(c1, parentComponent, parentSuspense, true); + } + } else { + if (prevShapeFlag & 8) { + hostSetElementText(container, ""); + } + if (shapeFlag & 16) { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + } + } + }; + const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + c1 = c1 || shared.EMPTY_ARR; + c2 = c2 || shared.EMPTY_ARR; + const oldLength = c1.length; + const newLength = c2.length; + const commonLength = Math.min(oldLength, newLength); + let i; + for (i = 0; i < commonLength; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + patch( + c1[i], + nextChild, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + if (oldLength > newLength) { + unmountChildren( + c1, + parentComponent, + parentSuspense, + true, + false, + commonLength + ); + } else { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + commonLength + ); + } + }; + const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + let i = 0; + const l2 = c2.length; + let e1 = c1.length - 1; + let e2 = l2 - 1; + while (i <= e1 && i <= e2) { + const n1 = c1[i]; + const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + break; + } + i++; + } + while (i <= e1 && i <= e2) { + const n1 = c1[e1]; + const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + break; + } + e1--; + e2--; + } + if (i > e1) { + if (i <= e2) { + const nextPos = e2 + 1; + const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor; + while (i <= e2) { + patch( + null, + c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + i++; + } + } + } else if (i > e2) { + while (i <= e1) { + unmount(c1[i], parentComponent, parentSuspense, true); + i++; + } + } else { + const s1 = i; + const s2 = i; + const keyToNewIndexMap = /* @__PURE__ */ new Map(); + for (i = s2; i <= e2; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (nextChild.key != null) { + if (keyToNewIndexMap.has(nextChild.key)) { + warn$1( + `Duplicate keys found during update:`, + JSON.stringify(nextChild.key), + `Make sure keys are unique.` + ); + } + keyToNewIndexMap.set(nextChild.key, i); + } + } + let j; + let patched = 0; + const toBePatched = e2 - s2 + 1; + let moved = false; + let maxNewIndexSoFar = 0; + const newIndexToOldIndexMap = new Array(toBePatched); + for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0; + for (i = s1; i <= e1; i++) { + const prevChild = c1[i]; + if (patched >= toBePatched) { + unmount(prevChild, parentComponent, parentSuspense, true); + continue; + } + let newIndex; + if (prevChild.key != null) { + newIndex = keyToNewIndexMap.get(prevChild.key); + } else { + for (j = s2; j <= e2; j++) { + if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) { + newIndex = j; + break; + } + } + } + if (newIndex === void 0) { + unmount(prevChild, parentComponent, parentSuspense, true); + } else { + newIndexToOldIndexMap[newIndex - s2] = i + 1; + if (newIndex >= maxNewIndexSoFar) { + maxNewIndexSoFar = newIndex; + } else { + moved = true; + } + patch( + prevChild, + c2[newIndex], + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + patched++; + } + } + const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : shared.EMPTY_ARR; + j = increasingNewIndexSequence.length - 1; + for (i = toBePatched - 1; i >= 0; i--) { + const nextIndex = s2 + i; + const nextChild = c2[nextIndex]; + const anchorVNode = c2[nextIndex + 1]; + const anchor = nextIndex + 1 < l2 ? ( + // #13559, fallback to el placeholder for unresolved async component + anchorVNode.el || anchorVNode.placeholder + ) : parentAnchor; + if (newIndexToOldIndexMap[i] === 0) { + patch( + null, + nextChild, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (moved) { + if (j < 0 || i !== increasingNewIndexSequence[j]) { + move(nextChild, container, anchor, 2); + } else { + j--; + } + } + } + } + }; + const move = (vnode, container, anchor, moveType, parentSuspense = null) => { + const { el, type, transition, children, shapeFlag } = vnode; + if (shapeFlag & 6) { + move(vnode.component.subTree, container, anchor, moveType); + return; + } + if (shapeFlag & 128) { + vnode.suspense.move(container, anchor, moveType); + return; + } + if (shapeFlag & 64) { + type.move(vnode, container, anchor, internals); + return; + } + if (type === Fragment) { + hostInsert(el, container, anchor); + for (let i = 0; i < children.length; i++) { + move(children[i], container, anchor, moveType); + } + hostInsert(vnode.anchor, container, anchor); + return; + } + if (type === Static) { + moveStaticNode(vnode, container, anchor); + return; + } + const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition; + if (needTransition2) { + if (moveType === 0) { + transition.beforeEnter(el); + hostInsert(el, container, anchor); + queuePostRenderEffect(() => transition.enter(el), parentSuspense); + } else { + const { leave, delayLeave, afterLeave } = transition; + const remove2 = () => { + if (vnode.ctx.isUnmounted) { + hostRemove(el); + } else { + hostInsert(el, container, anchor); + } + }; + const performLeave = () => { + leave(el, () => { + remove2(); + afterLeave && afterLeave(); + }); + }; + if (delayLeave) { + delayLeave(el, remove2, performLeave); + } else { + performLeave(); + } + } + } else { + hostInsert(el, container, anchor); + } + }; + const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => { + const { + type, + props, + ref, + children, + dynamicChildren, + shapeFlag, + patchFlag, + dirs, + cacheIndex + } = vnode; + if (patchFlag === -2) { + optimized = false; + } + if (ref != null) { + reactivity.pauseTracking(); + setRef(ref, null, parentSuspense, vnode, true); + reactivity.resetTracking(); + } + if (cacheIndex != null) { + parentComponent.renderCache[cacheIndex] = void 0; + } + if (shapeFlag & 256) { + parentComponent.ctx.deactivate(vnode); + return; + } + const shouldInvokeDirs = shapeFlag & 1 && dirs; + const shouldInvokeVnodeHook = !isAsyncWrapper(vnode); + let vnodeHook; + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + if (shapeFlag & 6) { + unmountComponent(vnode.component, parentSuspense, doRemove); + } else { + if (shapeFlag & 128) { + vnode.suspense.unmount(parentSuspense, doRemove); + return; + } + if (shouldInvokeDirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount"); + } + if (shapeFlag & 64) { + vnode.type.remove( + vnode, + parentComponent, + parentSuspense, + internals, + doRemove + ); + } else if (dynamicChildren && // #5154 + // when v-once is used inside a block, setBlockTracking(-1) marks the + // parent block with hasOnce: true + // so that it doesn't take the fast path during unmount - otherwise + // components nested in v-once are never unmounted. + !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments + (type !== Fragment || patchFlag > 0 && patchFlag & 64)) { + unmountChildren( + dynamicChildren, + parentComponent, + parentSuspense, + false, + true + ); + } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) { + unmountChildren(children, parentComponent, parentSuspense); + } + if (doRemove) { + remove(vnode); + } + } + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted"); + }, parentSuspense); + } + }; + const remove = (vnode) => { + const { type, el, anchor, transition } = vnode; + if (type === Fragment) { + if (vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) { + vnode.children.forEach((child) => { + if (child.type === Comment) { + hostRemove(child.el); + } else { + remove(child); + } + }); + } else { + removeFragment(el, anchor); + } + return; + } + if (type === Static) { + removeStaticNode(vnode); + return; + } + const performRemove = () => { + hostRemove(el); + if (transition && !transition.persisted && transition.afterLeave) { + transition.afterLeave(); + } + }; + if (vnode.shapeFlag & 1 && transition && !transition.persisted) { + const { leave, delayLeave } = transition; + const performLeave = () => leave(el, performRemove); + if (delayLeave) { + delayLeave(vnode.el, performRemove, performLeave); + } else { + performLeave(); + } + } else { + performRemove(); + } + }; + const removeFragment = (cur, end) => { + let next; + while (cur !== end) { + next = hostNextSibling(cur); + hostRemove(cur); + cur = next; + } + hostRemove(end); + }; + const unmountComponent = (instance, parentSuspense, doRemove) => { + if (instance.type.__hmrId) { + unregisterHMR(instance); + } + const { + bum, + scope, + job, + subTree, + um, + m, + a, + parent, + slots: { __: slotCacheKeys } + } = instance; + invalidateMount(m); + invalidateMount(a); + if (bum) { + shared.invokeArrayFns(bum); + } + if (parent && shared.isArray(slotCacheKeys)) { + slotCacheKeys.forEach((v) => { + parent.renderCache[v] = void 0; + }); + } + scope.stop(); + if (job) { + job.flags |= 8; + unmount(subTree, instance, parentSuspense, doRemove); + } + if (um) { + queuePostRenderEffect(um, parentSuspense); + } + queuePostRenderEffect(() => { + instance.isUnmounted = true; + }, parentSuspense); + if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0) { + parentSuspense.resolve(); + } + } + { + devtoolsComponentRemoved(instance); + } + }; + const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => { + for (let i = start; i < children.length; i++) { + unmount(children[i], parentComponent, parentSuspense, doRemove, optimized); + } + }; + const getNextHostNode = (vnode) => { + if (vnode.shapeFlag & 6) { + return getNextHostNode(vnode.component.subTree); + } + if (vnode.shapeFlag & 128) { + return vnode.suspense.next(); + } + const el = hostNextSibling(vnode.anchor || vnode.el); + const teleportEnd = el && el[TeleportEndKey]; + return teleportEnd ? hostNextSibling(teleportEnd) : el; + }; + let isFlushing = false; + const render = (vnode, container, namespace) => { + if (vnode == null) { + if (container._vnode) { + unmount(container._vnode, null, null, true); + } + } else { + patch( + container._vnode || null, + vnode, + container, + null, + null, + null, + namespace + ); + } + container._vnode = vnode; + if (!isFlushing) { + isFlushing = true; + flushPreFlushCbs(); + flushPostFlushCbs(); + isFlushing = false; + } + }; + const internals = { + p: patch, + um: unmount, + m: move, + r: remove, + mt: mountComponent, + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + n: getNextHostNode, + o: options + }; + let hydrate; + let hydrateNode; + if (createHydrationFns) { + [hydrate, hydrateNode] = createHydrationFns( + internals + ); + } + return { + render, + hydrate, + createApp: createAppAPI(render, hydrate) + }; +} +function resolveChildrenNamespace({ type, props }, currentNamespace) { + return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace; +} +function toggleRecurse({ effect, job }, allowed) { + if (allowed) { + effect.flags |= 32; + job.flags |= 4; + } else { + effect.flags &= -33; + job.flags &= -5; + } +} +function needTransition(parentSuspense, transition) { + return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted; +} +function traverseStaticChildren(n1, n2, shallow = false) { + const ch1 = n1.children; + const ch2 = n2.children; + if (shared.isArray(ch1) && shared.isArray(ch2)) { + for (let i = 0; i < ch1.length; i++) { + const c1 = ch1[i]; + let c2 = ch2[i]; + if (c2.shapeFlag & 1 && !c2.dynamicChildren) { + if (c2.patchFlag <= 0 || c2.patchFlag === 32) { + c2 = ch2[i] = cloneIfMounted(ch2[i]); + c2.el = c1.el; + } + if (!shallow && c2.patchFlag !== -2) + traverseStaticChildren(c1, c2); + } + if (c2.type === Text) { + c2.el = c1.el; + } + if (c2.type === Comment && !c2.el) { + c2.el = c1.el; + } + { + c2.el && (c2.el.__vnode = c2); + } + } + } +} +function getSequence(arr) { + const p = arr.slice(); + const result = [0]; + let i, j, u, v, c; + const len = arr.length; + for (i = 0; i < len; i++) { + const arrI = arr[i]; + if (arrI !== 0) { + j = result[result.length - 1]; + if (arr[j] < arrI) { + p[i] = j; + result.push(i); + continue; + } + u = 0; + v = result.length - 1; + while (u < v) { + c = u + v >> 1; + if (arr[result[c]] < arrI) { + u = c + 1; + } else { + v = c; + } + } + if (arrI < arr[result[u]]) { + if (u > 0) { + p[i] = result[u - 1]; + } + result[u] = i; + } + } + } + u = result.length; + v = result[u - 1]; + while (u-- > 0) { + result[u] = v; + v = p[v]; + } + return result; +} +function locateNonHydratedAsyncRoot(instance) { + const subComponent = instance.subTree.component; + if (subComponent) { + if (subComponent.asyncDep && !subComponent.asyncResolved) { + return subComponent; + } else { + return locateNonHydratedAsyncRoot(subComponent); + } + } +} +function invalidateMount(hooks) { + if (hooks) { + for (let i = 0; i < hooks.length; i++) + hooks[i].flags |= 8; + } +} + +const ssrContextKey = Symbol.for("v-scx"); +const useSSRContext = () => { + { + const ctx = inject(ssrContextKey); + if (!ctx) { + warn$1( + `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.` + ); + } + return ctx; + } +}; + +function watchEffect(effect, options) { + return doWatch(effect, null, options); +} +function watchPostEffect(effect, options) { + return doWatch( + effect, + null, + shared.extend({}, options, { flush: "post" }) + ); +} +function watchSyncEffect(effect, options) { + return doWatch( + effect, + null, + shared.extend({}, options, { flush: "sync" }) + ); +} +function watch(source, cb, options) { + if (!shared.isFunction(cb)) { + warn$1( + `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` + ); + } + return doWatch(source, cb, options); +} +function doWatch(source, cb, options = shared.EMPTY_OBJ) { + const { immediate, deep, flush, once } = options; + if (!cb) { + if (immediate !== void 0) { + warn$1( + `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (deep !== void 0) { + warn$1( + `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (once !== void 0) { + warn$1( + `watch() "once" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + } + const baseWatchOptions = shared.extend({}, options); + baseWatchOptions.onWarn = warn$1; + const runsImmediately = cb && immediate || !cb && flush !== "post"; + let ssrCleanup; + if (isInSSRComponentSetup) { + if (flush === "sync") { + const ctx = useSSRContext(); + ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); + } else if (!runsImmediately) { + const watchStopHandle = () => { + }; + watchStopHandle.stop = shared.NOOP; + watchStopHandle.resume = shared.NOOP; + watchStopHandle.pause = shared.NOOP; + return watchStopHandle; + } + } + const instance = currentInstance; + baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args); + let isPre = false; + if (flush === "post") { + baseWatchOptions.scheduler = (job) => { + queuePostRenderEffect(job, instance && instance.suspense); + }; + } else if (flush !== "sync") { + isPre = true; + baseWatchOptions.scheduler = (job, isFirstRun) => { + if (isFirstRun) { + job(); + } else { + queueJob(job); + } + }; + } + baseWatchOptions.augmentJob = (job) => { + if (cb) { + job.flags |= 4; + } + if (isPre) { + job.flags |= 2; + if (instance) { + job.id = instance.uid; + job.i = instance; + } + } + }; + const watchHandle = reactivity.watch(source, cb, baseWatchOptions); + if (isInSSRComponentSetup) { + if (ssrCleanup) { + ssrCleanup.push(watchHandle); + } else if (runsImmediately) { + watchHandle(); + } + } + return watchHandle; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = shared.isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (shared.isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const reset = setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + reset(); + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} + +function useModel(props, name, options = shared.EMPTY_OBJ) { + const i = getCurrentInstance(); + if (!i) { + warn$1(`useModel() called without active instance.`); + return reactivity.ref(); + } + const camelizedName = shared.camelize(name); + if (!i.propsOptions[0][camelizedName]) { + warn$1(`useModel() called with prop "${name}" which is not declared.`); + return reactivity.ref(); + } + const hyphenatedName = shared.hyphenate(name); + const modifiers = getModelModifiers(props, camelizedName); + const res = reactivity.customRef((track, trigger) => { + let localValue; + let prevSetValue = shared.EMPTY_OBJ; + let prevEmittedValue; + watchSyncEffect(() => { + const propValue = props[camelizedName]; + if (shared.hasChanged(localValue, propValue)) { + localValue = propValue; + trigger(); + } + }); + return { + get() { + track(); + return options.get ? options.get(localValue) : localValue; + }, + set(value) { + const emittedValue = options.set ? options.set(value) : value; + if (!shared.hasChanged(emittedValue, localValue) && !(prevSetValue !== shared.EMPTY_OBJ && shared.hasChanged(value, prevSetValue))) { + return; + } + const rawProps = i.vnode.props; + if (!(rawProps && // check if parent has passed v-model + (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) { + localValue = value; + trigger(); + } + i.emit(`update:${name}`, emittedValue); + if (shared.hasChanged(value, emittedValue) && shared.hasChanged(value, prevSetValue) && !shared.hasChanged(emittedValue, prevEmittedValue)) { + trigger(); + } + prevSetValue = value; + prevEmittedValue = emittedValue; + } + }; + }); + res[Symbol.iterator] = () => { + let i2 = 0; + return { + next() { + if (i2 < 2) { + return { value: i2++ ? modifiers || shared.EMPTY_OBJ : res, done: false }; + } else { + return { done: true }; + } + } + }; + }; + return res; +} +const getModelModifiers = (props, modelName) => { + return modelName === "modelValue" || modelName === "model-value" ? props.modelModifiers : props[`${modelName}Modifiers`] || props[`${shared.camelize(modelName)}Modifiers`] || props[`${shared.hyphenate(modelName)}Modifiers`]; +}; + +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) return; + const props = instance.vnode.props || shared.EMPTY_OBJ; + { + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && true) { + if (!propsOptions || !(shared.toHandlerKey(shared.camelize(event)) in propsOptions)) { + warn$1( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${shared.toHandlerKey(shared.camelize(event))}" prop.` + ); + } + } else { + const validator = emitsOptions[event]; + if (shared.isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn$1( + `Invalid event arguments: event validation failed for event "${event}".` + ); + } + } + } + } + } + let args = rawArgs; + const isModelListener = event.startsWith("update:"); + const modifiers = isModelListener && getModelModifiers(props, event.slice(7)); + if (modifiers) { + if (modifiers.trim) { + args = rawArgs.map((a) => shared.isString(a) ? a.trim() : a); + } + if (modifiers.number) { + args = rawArgs.map(shared.looseToNumber); + } + } + { + devtoolsComponentEmit(instance, event, args); + } + { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[shared.toHandlerKey(lowerCaseEvent)]) { + warn$1( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${shared.hyphenate( + event + )}" instead of "${event}".` + ); + } + } + let handlerName; + let handler = props[handlerName = shared.toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = shared.toHandlerKey(shared.camelize(event))]; + if (!handler && isModelListener) { + handler = props[handlerName = shared.toHandlerKey(shared.hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (!shared.isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + shared.extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (shared.isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (shared.isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + shared.extend(normalized, raw); + } + if (shared.isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !shared.isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return shared.hasOwn(options, key[0].toLowerCase() + key.slice(1)) || shared.hasOwn(options, shared.hyphenate(key)) || shared.hasOwn(options, key); +} + +let accessedAttrs = false; +function markAttrsAccessed() { + accessedAttrs = true; +} +function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + propsOptions: [propsOptions], + slots, + attrs, + emit, + render, + renderCache, + props, + data, + setupState, + ctx, + inheritAttrs + } = instance; + const prev = setCurrentRenderingInstance(instance); + let result; + let fallthroughAttrs; + { + accessedAttrs = false; + } + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn$1( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode( + render.call( + thisProxy, + proxyToUse, + renderCache, + true ? reactivity.shallowReadonly(props) : props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render2 = Component; + if (attrs === props) { + markAttrsAccessed(); + } + result = normalizeVNode( + render2.length > 1 ? render2( + true ? reactivity.shallowReadonly(props) : props, + true ? { + get attrs() { + markAttrsAccessed(); + return reactivity.shallowReadonly(attrs); + }, + slots, + emit + } : { attrs, slots, emit } + ) : render2( + true ? reactivity.shallowReadonly(props) : props, + null + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + let setRoot = void 0; + if (result.patchFlag > 0 && result.patchFlag & 2048) { + [root, setRoot] = getChildRoot(result); + } + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(shared.isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs, false, true); + } else if (!accessedAttrs && root.type !== Comment) { + const allAttrs = Object.keys(attrs); + const eventAttrs = []; + const extraAttrs = []; + for (let i = 0, l = allAttrs.length; i < l; i++) { + const key = allAttrs[i]; + if (shared.isOn(key)) { + if (!shared.isModelListener(key)) { + eventAttrs.push(key[2].toLowerCase() + key.slice(3)); + } + } else { + extraAttrs.push(key); + } + } + if (extraAttrs.length) { + warn$1( + `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text or teleport root nodes.` + ); + } + if (eventAttrs.length) { + warn$1( + `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` + ); + } + } + } + } + if (vnode.dirs) { + if (!isElementRoot(root)) { + warn$1( + `Runtime directive used on component with non-element root node. The directives will not function as intended.` + ); + } + root = cloneVNode(root, null, false, true); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + if (!isElementRoot(root)) { + warn$1( + `Component inside <Transition> renders non-element root node that cannot be animated.` + ); + } + setTransitionHooks(root, vnode.transition); + } + if (setRoot) { + setRoot(root); + } else { + result = root; + } + setCurrentRenderingInstance(prev); + return result; +} +const getChildRoot = (vnode) => { + const rawChildren = vnode.children; + const dynamicChildren = vnode.dynamicChildren; + const childRoot = filterSingleRoot(rawChildren, false); + if (!childRoot) { + return [vnode, void 0]; + } else if (childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) { + return getChildRoot(childRoot); + } + const index = rawChildren.indexOf(childRoot); + const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; + const setRoot = (updatedRoot) => { + rawChildren[index] = updatedRoot; + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } + } + }; + return [normalizeVNode(childRoot), setRoot]; +}; +function filterSingleRoot(children, recurse = true) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + if (recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) { + return filterSingleRoot(singleRoot.children); + } + } + } + } else { + return; + } + } + return singleRoot; +} +const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || shared.isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!shared.isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +const isElementRoot = (vnode) => { + return vnode.shapeFlag & (6 | 1) || vnode.type === Comment; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if ((prevChildren || nextChildren) && isHmrUpdating) { + return true; + } + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function updateHOCHostEl({ vnode, parent }, el) { + while (parent) { + const root = parent.subTree; + if (root.suspense && root.suspense.activeBranch === vnode) { + root.el = vnode.el; + } + if (root === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } else { + break; + } + } +} + +const isSuspense = (type) => type.__isSuspense; +let suspenseId = 0; +const SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) { + n2.suspense = n1.suspense; + n2.suspense.vnode = n2; + n2.el = n1.el; + return; + } + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + normalize: normalizeSuspenseChildren +}; +const Suspense = SuspenseImpl ; +function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (shared.isFunction(eventListener)) { + eventListener(); + } +} +function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } +} +function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + if (!isHydrating) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } + } else { + suspense.pendingId = suspenseId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + if (newBranch.shapeFlag & 512) { + suspense.pendingId = newBranch.component.suspenseId; + } else { + suspense.pendingId = suspenseId++; + } + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } +} +let hasWarned = false; +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + if (!hasWarned) { + hasWarned = true; + console[console.info ? "info" : "log"]( + `<Suspense> is an experimental feature and its API will likely change.` + ); + } + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? shared.toNumber(vnode.props.timeout) : void 0; + { + assertNumber(timeout, `Suspense timeout`); + } + const initialAnchor = anchor; + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + namespace, + container, + hiddenContainer, + deps: 0, + pendingId: suspenseId++, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: !isHydrating, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + { + if (!resume && !suspense.pendingBranch) { + throw new Error( + `suspense.resolve() is called without a pending branch.` + ); + } + if (suspense.isUnmounted) { + throw new Error( + `suspense.resolve() is called on an already unmounted suspense boundary.` + ); + } + } + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + let delayEnter = false; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move( + pendingBranch, + container2, + anchor === initialAnchor ? next(activeBranch) : anchor, + 0 + ); + queuePostFlushCb(effects); + } + }; + } + if (activeBranch) { + if (parentNode(activeBranch.el) === container2) { + anchor = next(activeBranch); + } + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor && !delayEnter) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const anchor2 = next(activeBranch); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + anchor2, + parentComponent2, + null, + // fallback tree will not have suspense context + namespace2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect, optimized2) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + { + pushWarningContext(vnode2); + } + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + namespace, + optimized2 + ); + if (placeholder) { + remove(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + { + popWarningContext(); + } + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; +} +function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + // eslint-disable-next-line no-restricted-globals + document.createElement("div"), + null, + namespace, + slotScopeIds, + optimized, + rendererInternals, + true + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; +} +function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); +} +function normalizeSuspenseSlot(s) { + let block; + if (shared.isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (shared.isArray(s)) { + const singleChild = filterSingleRoot(s); + if (!singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) { + warn$1(`<Suspense> slots expect a single root node.`); + } + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; +} +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (shared.isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} +function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + let el = branch.el; + while (!el && branch.component) { + branch = branch.component.subTree; + el = branch.el; + } + vnode.el = el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } +} +function isVNodeSuspensible(vnode) { + const suspensible = vnode.props && vnode.props.suspensible; + return suspensible != null && suspensible !== false; +} + +const Fragment = Symbol.for("v-fgt"); +const Text = Symbol.for("v-txt"); +const Comment = Symbol.for("v-cmt"); +const Static = Symbol.for("v-stc"); +const blockStack = []; +let currentBlock = null; +function openBlock(disableTracking = false) { + blockStack.push(currentBlock = disableTracking ? null : []); +} +function closeBlock() { + blockStack.pop(); + currentBlock = blockStack[blockStack.length - 1] || null; +} +let isBlockTreeEnabled = 1; +function setBlockTracking(value, inVOnce = false) { + isBlockTreeEnabled += value; + if (value < 0 && currentBlock && inVOnce) { + currentBlock.hasOnce = true; + } +} +function setupBlock(vnode) { + vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || shared.EMPTY_ARR : null; + closeBlock(); + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(vnode); + } + return vnode; +} +function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) { + return setupBlock( + createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + true + ) + ); +} +function createBlock(type, props, children, patchFlag, dynamicProps) { + return setupBlock( + createVNode( + type, + props, + children, + patchFlag, + dynamicProps, + true + ) + ); +} +function isVNode(value) { + return value ? value.__v_isVNode === true : false; +} +function isSameVNodeType(n1, n2) { + if (n2.shapeFlag & 6 && n1.component) { + const dirtyInstances = hmrDirtyComponents.get(n2.type); + if (dirtyInstances && dirtyInstances.has(n1.component)) { + n1.shapeFlag &= -257; + n2.shapeFlag &= -513; + return false; + } + } + return n1.type === n2.type && n1.key === n2.key; +} +let vnodeArgsTransformer; +function transformVNodeArgs(transformer) { + vnodeArgsTransformer = transformer; +} +const createVNodeWithArgsTransform = (...args) => { + return _createVNode( + ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args + ); +}; +const normalizeKey = ({ key }) => key != null ? key : null; +const normalizeRef = ({ + ref, + ref_key, + ref_for +}) => { + if (typeof ref === "number") { + ref = "" + ref; + } + return ref != null ? shared.isString(ref) || reactivity.isRef(ref) || shared.isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null; +}; +function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) { + const vnode = { + __v_isVNode: true, + __v_skip: true, + type, + props, + key: props && normalizeKey(props), + ref: props && normalizeRef(props), + scopeId: currentScopeId, + slotScopeIds: null, + children, + component: null, + suspense: null, + ssContent: null, + ssFallback: null, + dirs: null, + transition: null, + el: null, + anchor: null, + target: null, + targetStart: null, + targetAnchor: null, + staticCount: 0, + shapeFlag, + patchFlag, + dynamicProps, + dynamicChildren: null, + appContext: null, + ctx: currentRenderingInstance + }; + if (needFullChildrenNormalization) { + normalizeChildren(vnode, children); + if (shapeFlag & 128) { + type.normalize(vnode); + } + } else if (children) { + vnode.shapeFlag |= shared.isString(children) ? 8 : 16; + } + if (vnode.key !== vnode.key) { + warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type); + } + if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself + !isBlockNode && // has current parent block + currentBlock && // presence of a patch flag indicates this node needs patching on updates. + // component nodes also should always be patched, because even if the + // component doesn't need to update, it needs to persist the instance on to + // the next vnode so that it can be properly unmounted later. + (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the + // vnode should not be considered dynamic due to handler caching. + vnode.patchFlag !== 32) { + currentBlock.push(vnode); + } + return vnode; +} +const createVNode = createVNodeWithArgsTransform ; +function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) { + if (!type || type === NULL_DYNAMIC_COMPONENT) { + if (!type) { + warn$1(`Invalid vnode type when creating vnode: ${type}.`); + } + type = Comment; + } + if (isVNode(type)) { + const cloned = cloneVNode( + type, + props, + true + /* mergeRef: true */ + ); + if (children) { + normalizeChildren(cloned, children); + } + if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) { + if (cloned.shapeFlag & 6) { + currentBlock[currentBlock.indexOf(type)] = cloned; + } else { + currentBlock.push(cloned); + } + } + cloned.patchFlag = -2; + return cloned; + } + if (isClassComponent(type)) { + type = type.__vccOpts; + } + if (props) { + props = guardReactiveProps(props); + let { class: klass, style } = props; + if (klass && !shared.isString(klass)) { + props.class = shared.normalizeClass(klass); + } + if (shared.isObject(style)) { + if (reactivity.isProxy(style) && !shared.isArray(style)) { + style = shared.extend({}, style); + } + props.style = shared.normalizeStyle(style); + } + } + const shapeFlag = shared.isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : shared.isObject(type) ? 4 : shared.isFunction(type) ? 2 : 0; + if (shapeFlag & 4 && reactivity.isProxy(type)) { + type = reactivity.toRaw(type); + warn$1( + `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`, + ` +Component that was made reactive: `, + type + ); + } + return createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + isBlockNode, + true + ); +} +function guardReactiveProps(props) { + if (!props) return null; + return reactivity.isProxy(props) || isInternalObject(props) ? shared.extend({}, props) : props; +} +function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) { + const { props, ref, patchFlag, children, transition } = vnode; + const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props; + const cloned = { + __v_isVNode: true, + __v_skip: true, + type: vnode.type, + props: mergedProps, + key: mergedProps && normalizeKey(mergedProps), + ref: extraProps && extraProps.ref ? ( + // #2078 in the case of <component :is="vnode" ref="extra"/> + // if the vnode itself already has a ref, cloneVNode will need to merge + // the refs so the single vnode can be set on multiple refs + mergeRef && ref ? shared.isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps) + ) : ref, + scopeId: vnode.scopeId, + slotScopeIds: vnode.slotScopeIds, + children: patchFlag === -1 && shared.isArray(children) ? children.map(deepCloneVNode) : children, + target: vnode.target, + targetStart: vnode.targetStart, + targetAnchor: vnode.targetAnchor, + staticCount: vnode.staticCount, + shapeFlag: vnode.shapeFlag, + // if the vnode is cloned with extra props, we can no longer assume its + // existing patch flag to be reliable and need to add the FULL_PROPS flag. + // note: preserve flag for fragments since they use the flag for children + // fast paths only. + patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag, + dynamicProps: vnode.dynamicProps, + dynamicChildren: vnode.dynamicChildren, + appContext: vnode.appContext, + dirs: vnode.dirs, + transition, + // These should technically only be non-null on mounted VNodes. However, + // they *should* be copied for kept-alive vnodes. So we just always copy + // them since them being non-null during a mount doesn't affect the logic as + // they will simply be overwritten. + component: vnode.component, + suspense: vnode.suspense, + ssContent: vnode.ssContent && cloneVNode(vnode.ssContent), + ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback), + placeholder: vnode.placeholder, + el: vnode.el, + anchor: vnode.anchor, + ctx: vnode.ctx, + ce: vnode.ce + }; + if (transition && cloneTransition) { + setTransitionHooks( + cloned, + transition.clone(cloned) + ); + } + return cloned; +} +function deepCloneVNode(vnode) { + const cloned = cloneVNode(vnode); + if (shared.isArray(vnode.children)) { + cloned.children = vnode.children.map(deepCloneVNode); + } + return cloned; +} +function createTextVNode(text = " ", flag = 0) { + return createVNode(Text, null, text, flag); +} +function createStaticVNode(content, numberOfNodes) { + const vnode = createVNode(Static, null, content); + vnode.staticCount = numberOfNodes; + return vnode; +} +function createCommentVNode(text = "", asBlock = false) { + return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text); +} +function normalizeVNode(child) { + if (child == null || typeof child === "boolean") { + return createVNode(Comment); + } else if (shared.isArray(child)) { + return createVNode( + Fragment, + null, + // #3666, avoid reference pollution when reusing vnode + child.slice() + ); + } else if (isVNode(child)) { + return cloneIfMounted(child); + } else { + return createVNode(Text, null, String(child)); + } +} +function cloneIfMounted(child) { + return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child); +} +function normalizeChildren(vnode, children) { + let type = 0; + const { shapeFlag } = vnode; + if (children == null) { + children = null; + } else if (shared.isArray(children)) { + type = 16; + } else if (typeof children === "object") { + if (shapeFlag & (1 | 64)) { + const slot = children.default; + if (slot) { + slot._c && (slot._d = false); + normalizeChildren(vnode, slot()); + slot._c && (slot._d = true); + } + return; + } else { + type = 32; + const slotFlag = children._; + if (!slotFlag && !isInternalObject(children)) { + children._ctx = currentRenderingInstance; + } else if (slotFlag === 3 && currentRenderingInstance) { + if (currentRenderingInstance.slots._ === 1) { + children._ = 1; + } else { + children._ = 2; + vnode.patchFlag |= 1024; + } + } + } + } else if (shared.isFunction(children)) { + children = { default: children, _ctx: currentRenderingInstance }; + type = 32; + } else { + children = String(children); + if (shapeFlag & 64) { + type = 16; + children = [createTextVNode(children)]; + } else { + type = 8; + } + } + vnode.children = children; + vnode.shapeFlag |= type; +} +function mergeProps(...args) { + const ret = {}; + for (let i = 0; i < args.length; i++) { + const toMerge = args[i]; + for (const key in toMerge) { + if (key === "class") { + if (ret.class !== toMerge.class) { + ret.class = shared.normalizeClass([ret.class, toMerge.class]); + } + } else if (key === "style") { + ret.style = shared.normalizeStyle([ret.style, toMerge.style]); + } else if (shared.isOn(key)) { + const existing = ret[key]; + const incoming = toMerge[key]; + if (incoming && existing !== incoming && !(shared.isArray(existing) && existing.includes(incoming))) { + ret[key] = existing ? [].concat(existing, incoming) : incoming; + } + } else if (key !== "") { + ret[key] = toMerge[key]; + } + } + } + return ret; +} +function invokeVNodeHook(hook, instance, vnode, prevVNode = null) { + callWithAsyncErrorHandling(hook, instance, 7, [ + vnode, + prevVNode + ]); +} + +const emptyAppContext = createAppContext(); +let uid = 0; +function createComponentInstance(vnode, parent, suspense) { + const type = vnode.type; + const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext; + const instance = { + uid: uid++, + vnode, + type, + parent, + appContext, + root: null, + // to be immediately set + next: null, + subTree: null, + // will be set synchronously right after creation + effect: null, + update: null, + // will be set synchronously right after creation + job: null, + scope: new reactivity.EffectScope( + true + /* detached */ + ), + render: null, + proxy: null, + exposed: null, + exposeProxy: null, + withProxy: null, + provides: parent ? parent.provides : Object.create(appContext.provides), + ids: parent ? parent.ids : ["", 0, 0], + accessCache: null, + renderCache: [], + // local resolved assets + components: null, + directives: null, + // resolved props and emits options + propsOptions: normalizePropsOptions(type, appContext), + emitsOptions: normalizeEmitsOptions(type, appContext), + // emit + emit: null, + // to be set immediately + emitted: null, + // props default value + propsDefaults: shared.EMPTY_OBJ, + // inheritAttrs + inheritAttrs: type.inheritAttrs, + // state + ctx: shared.EMPTY_OBJ, + data: shared.EMPTY_OBJ, + props: shared.EMPTY_OBJ, + attrs: shared.EMPTY_OBJ, + slots: shared.EMPTY_OBJ, + refs: shared.EMPTY_OBJ, + setupState: shared.EMPTY_OBJ, + setupContext: null, + // suspense related + suspense, + suspenseId: suspense ? suspense.pendingId : 0, + asyncDep: null, + asyncResolved: false, + // lifecycle hooks + // not using enums here because it results in computed properties + isMounted: false, + isUnmounted: false, + isDeactivated: false, + bc: null, + c: null, + bm: null, + m: null, + bu: null, + u: null, + um: null, + bum: null, + da: null, + a: null, + rtg: null, + rtc: null, + ec: null, + sp: null + }; + { + instance.ctx = createDevRenderContext(instance); + } + instance.root = parent ? parent.root : instance; + instance.emit = emit.bind(null, instance); + if (vnode.ce) { + vnode.ce(instance); + } + return instance; +} +let currentInstance = null; +const getCurrentInstance = () => currentInstance || currentRenderingInstance; +let internalSetCurrentInstance; +let setInSSRSetupState; +{ + const g = shared.getGlobalThis(); + const registerGlobalSetter = (key, setter) => { + let setters; + if (!(setters = g[key])) setters = g[key] = []; + setters.push(setter); + return (v) => { + if (setters.length > 1) setters.forEach((set) => set(v)); + else setters[0](v); + }; + }; + internalSetCurrentInstance = registerGlobalSetter( + `__VUE_INSTANCE_SETTERS__`, + (v) => currentInstance = v + ); + setInSSRSetupState = registerGlobalSetter( + `__VUE_SSR_SETTERS__`, + (v) => isInSSRComponentSetup = v + ); +} +const setCurrentInstance = (instance) => { + const prev = currentInstance; + internalSetCurrentInstance(instance); + instance.scope.on(); + return () => { + instance.scope.off(); + internalSetCurrentInstance(prev); + }; +}; +const unsetCurrentInstance = () => { + currentInstance && currentInstance.scope.off(); + internalSetCurrentInstance(null); +}; +const isBuiltInTag = /* @__PURE__ */ shared.makeMap("slot,component"); +function validateComponentName(name, { isNativeTag }) { + if (isBuiltInTag(name) || isNativeTag(name)) { + warn$1( + "Do not use built-in or reserved HTML elements as component id: " + name + ); + } +} +function isStatefulComponent(instance) { + return instance.vnode.shapeFlag & 4; +} +let isInSSRComponentSetup = false; +function setupComponent(instance, isSSR = false, optimized = false) { + isSSR && setInSSRSetupState(isSSR); + const { props, children } = instance.vnode; + const isStateful = isStatefulComponent(instance); + initProps(instance, props, isStateful, isSSR); + initSlots(instance, children, optimized || isSSR); + const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; + isSSR && setInSSRSetupState(false); + return setupResult; +} +function setupStatefulComponent(instance, isSSR) { + var _a; + const Component = instance.type; + { + if (Component.name) { + validateComponentName(Component.name, instance.appContext.config); + } + if (Component.components) { + const names = Object.keys(Component.components); + for (let i = 0; i < names.length; i++) { + validateComponentName(names[i], instance.appContext.config); + } + } + if (Component.directives) { + const names = Object.keys(Component.directives); + for (let i = 0; i < names.length; i++) { + validateDirectiveName(names[i]); + } + } + if (Component.compilerOptions && isRuntimeOnly()) { + warn$1( + `"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.` + ); + } + } + instance.accessCache = /* @__PURE__ */ Object.create(null); + instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers); + { + exposePropsOnRenderContext(instance); + } + const { setup } = Component; + if (setup) { + reactivity.pauseTracking(); + const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; + const reset = setCurrentInstance(instance); + const setupResult = callWithErrorHandling( + setup, + instance, + 0, + [ + reactivity.shallowReadonly(instance.props) , + setupContext + ] + ); + const isAsyncSetup = shared.isPromise(setupResult); + reactivity.resetTracking(); + reset(); + if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) { + markAsyncBoundary(instance); + } + if (isAsyncSetup) { + setupResult.then(unsetCurrentInstance, unsetCurrentInstance); + if (isSSR) { + return setupResult.then((resolvedResult) => { + handleSetupResult(instance, resolvedResult, isSSR); + }).catch((e) => { + handleError(e, instance, 0); + }); + } else { + instance.asyncDep = setupResult; + if (!instance.suspense) { + const name = (_a = Component.name) != null ? _a : "Anonymous"; + warn$1( + `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.` + ); + } + } + } else { + handleSetupResult(instance, setupResult, isSSR); + } + } else { + finishComponentSetup(instance, isSSR); + } +} +function handleSetupResult(instance, setupResult, isSSR) { + if (shared.isFunction(setupResult)) { + if (instance.type.__ssrInlineRender) { + instance.ssrRender = setupResult; + } else { + instance.render = setupResult; + } + } else if (shared.isObject(setupResult)) { + if (isVNode(setupResult)) { + warn$1( + `setup() should not return VNodes directly - return a render function instead.` + ); + } + { + instance.devtoolsRawSetupState = setupResult; + } + instance.setupState = reactivity.proxyRefs(setupResult); + { + exposeSetupStateOnRenderContext(instance); + } + } else if (setupResult !== void 0) { + warn$1( + `setup() should return an object. Received: ${setupResult === null ? "null" : typeof setupResult}` + ); + } + finishComponentSetup(instance, isSSR); +} +let compile; +let installWithProxy; +function registerRuntimeCompiler(_compile) { + compile = _compile; + installWithProxy = (i) => { + if (i.render._rc) { + i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers); + } + }; +} +const isRuntimeOnly = () => !compile; +function finishComponentSetup(instance, isSSR, skipOptions) { + const Component = instance.type; + if (!instance.render) { + if (!isSSR && compile && !Component.render) { + const template = Component.template || resolveMergedOptions(instance).template; + if (template) { + { + startMeasure(instance, `compile`); + } + const { isCustomElement, compilerOptions } = instance.appContext.config; + const { delimiters, compilerOptions: componentCompilerOptions } = Component; + const finalCompilerOptions = shared.extend( + shared.extend( + { + isCustomElement, + delimiters + }, + compilerOptions + ), + componentCompilerOptions + ); + Component.render = compile(template, finalCompilerOptions); + { + endMeasure(instance, `compile`); + } + } + } + instance.render = Component.render || shared.NOOP; + if (installWithProxy) { + installWithProxy(instance); + } + } + { + const reset = setCurrentInstance(instance); + reactivity.pauseTracking(); + try { + applyOptions(instance); + } finally { + reactivity.resetTracking(); + reset(); + } + } + if (!Component.render && instance.render === shared.NOOP && !isSSR) { + if (!compile && Component.template) { + warn$1( + `Component provided template option but runtime compilation is not supported in this build of Vue.` + (``) + ); + } else { + warn$1(`Component is missing template or render function: `, Component); + } + } +} +const attrsProxyHandlers = { + get(target, key) { + markAttrsAccessed(); + reactivity.track(target, "get", ""); + return target[key]; + }, + set() { + warn$1(`setupContext.attrs is readonly.`); + return false; + }, + deleteProperty() { + warn$1(`setupContext.attrs is readonly.`); + return false; + } +} ; +function getSlotsProxy(instance) { + return new Proxy(instance.slots, { + get(target, key) { + reactivity.track(instance, "get", "$slots"); + return target[key]; + } + }); +} +function createSetupContext(instance) { + const expose = (exposed) => { + { + if (instance.exposed) { + warn$1(`expose() should be called only once per setup().`); + } + if (exposed != null) { + let exposedType = typeof exposed; + if (exposedType === "object") { + if (shared.isArray(exposed)) { + exposedType = "array"; + } else if (reactivity.isRef(exposed)) { + exposedType = "ref"; + } + } + if (exposedType !== "object") { + warn$1( + `expose() should be passed a plain object, received ${exposedType}.` + ); + } + } + } + instance.exposed = exposed || {}; + }; + { + let attrsProxy; + let slotsProxy; + return Object.freeze({ + get attrs() { + return attrsProxy || (attrsProxy = new Proxy(instance.attrs, attrsProxyHandlers)); + }, + get slots() { + return slotsProxy || (slotsProxy = getSlotsProxy(instance)); + }, + get emit() { + return (event, ...args) => instance.emit(event, ...args); + }, + expose + }); + } +} +function getComponentPublicInstance(instance) { + if (instance.exposed) { + return instance.exposeProxy || (instance.exposeProxy = new Proxy(reactivity.proxyRefs(reactivity.markRaw(instance.exposed)), { + get(target, key) { + if (key in target) { + return target[key]; + } else if (key in publicPropertiesMap) { + return publicPropertiesMap[key](instance); + } + }, + has(target, key) { + return key in target || key in publicPropertiesMap; + } + })); + } else { + return instance.proxy; + } +} +const classifyRE = /(?:^|[-_])(\w)/g; +const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, ""); +function getComponentName(Component, includeInferred = true) { + return shared.isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; +} +function formatComponentName(instance, Component, isRoot = false) { + let name = getComponentName(Component); + if (!name && Component.__file) { + const match = Component.__file.match(/([^/\\]+)\.\w+$/); + if (match) { + name = match[1]; + } + } + if (!name && instance && instance.parent) { + const inferFromRegistry = (registry) => { + for (const key in registry) { + if (registry[key] === Component) { + return key; + } + } + }; + name = inferFromRegistry( + instance.components || instance.parent.type.components + ) || inferFromRegistry(instance.appContext.components); + } + return name ? classify(name) : isRoot ? `App` : `Anonymous`; +} +function isClassComponent(value) { + return shared.isFunction(value) && "__vccOpts" in value; +} + +const computed = (getterOrOptions, debugOptions) => { + const c = reactivity.computed(getterOrOptions, debugOptions, isInSSRComponentSetup); + { + const i = getCurrentInstance(); + if (i && i.appContext.config.warnRecursiveComputed) { + c._warnRecursive = true; + } + } + return c; +}; + +function h(type, propsOrChildren, children) { + const l = arguments.length; + if (l === 2) { + if (shared.isObject(propsOrChildren) && !shared.isArray(propsOrChildren)) { + if (isVNode(propsOrChildren)) { + return createVNode(type, null, [propsOrChildren]); + } + return createVNode(type, propsOrChildren); + } else { + return createVNode(type, null, propsOrChildren); + } + } else { + if (l > 3) { + children = Array.prototype.slice.call(arguments, 2); + } else if (l === 3 && isVNode(children)) { + children = [children]; + } + return createVNode(type, propsOrChildren, children); + } +} + +function initCustomFormatter() { + if (typeof window === "undefined") { + return; + } + const vueStyle = { style: "color:#3ba776" }; + const numberStyle = { style: "color:#1677ff" }; + const stringStyle = { style: "color:#f5222d" }; + const keywordStyle = { style: "color:#eb2f96" }; + const formatter = { + __vue_custom_formatter: true, + header(obj) { + if (!shared.isObject(obj)) { + return null; + } + if (obj.__isVue) { + return ["div", vueStyle, `VueInstance`]; + } else if (reactivity.isRef(obj)) { + reactivity.pauseTracking(); + const value = obj.value; + reactivity.resetTracking(); + return [ + "div", + {}, + ["span", vueStyle, genRefFlag(obj)], + "<", + formatValue(value), + `>` + ]; + } else if (reactivity.isReactive(obj)) { + return [ + "div", + {}, + ["span", vueStyle, reactivity.isShallow(obj) ? "ShallowReactive" : "Reactive"], + "<", + formatValue(obj), + `>${reactivity.isReadonly(obj) ? ` (readonly)` : ``}` + ]; + } else if (reactivity.isReadonly(obj)) { + return [ + "div", + {}, + ["span", vueStyle, reactivity.isShallow(obj) ? "ShallowReadonly" : "Readonly"], + "<", + formatValue(obj), + ">" + ]; + } + return null; + }, + hasBody(obj) { + return obj && obj.__isVue; + }, + body(obj) { + if (obj && obj.__isVue) { + return [ + "div", + {}, + ...formatInstance(obj.$) + ]; + } + } + }; + function formatInstance(instance) { + const blocks = []; + if (instance.type.props && instance.props) { + blocks.push(createInstanceBlock("props", reactivity.toRaw(instance.props))); + } + if (instance.setupState !== shared.EMPTY_OBJ) { + blocks.push(createInstanceBlock("setup", instance.setupState)); + } + if (instance.data !== shared.EMPTY_OBJ) { + blocks.push(createInstanceBlock("data", reactivity.toRaw(instance.data))); + } + const computed = extractKeys(instance, "computed"); + if (computed) { + blocks.push(createInstanceBlock("computed", computed)); + } + const injected = extractKeys(instance, "inject"); + if (injected) { + blocks.push(createInstanceBlock("injected", injected)); + } + blocks.push([ + "div", + {}, + [ + "span", + { + style: keywordStyle.style + ";opacity:0.66" + }, + "$ (internal): " + ], + ["object", { object: instance }] + ]); + return blocks; + } + function createInstanceBlock(type, target) { + target = shared.extend({}, target); + if (!Object.keys(target).length) { + return ["span", {}]; + } + return [ + "div", + { style: "line-height:1.25em;margin-bottom:0.6em" }, + [ + "div", + { + style: "color:#476582" + }, + type + ], + [ + "div", + { + style: "padding-left:1.25em" + }, + ...Object.keys(target).map((key) => { + return [ + "div", + {}, + ["span", keywordStyle, key + ": "], + formatValue(target[key], false) + ]; + }) + ] + ]; + } + function formatValue(v, asRaw = true) { + if (typeof v === "number") { + return ["span", numberStyle, v]; + } else if (typeof v === "string") { + return ["span", stringStyle, JSON.stringify(v)]; + } else if (typeof v === "boolean") { + return ["span", keywordStyle, v]; + } else if (shared.isObject(v)) { + return ["object", { object: asRaw ? reactivity.toRaw(v) : v }]; + } else { + return ["span", stringStyle, String(v)]; + } + } + function extractKeys(instance, type) { + const Comp = instance.type; + if (shared.isFunction(Comp)) { + return; + } + const extracted = {}; + for (const key in instance.ctx) { + if (isKeyOfType(Comp, key, type)) { + extracted[key] = instance.ctx[key]; + } + } + return extracted; + } + function isKeyOfType(Comp, key, type) { + const opts = Comp[type]; + if (shared.isArray(opts) && opts.includes(key) || shared.isObject(opts) && key in opts) { + return true; + } + if (Comp.extends && isKeyOfType(Comp.extends, key, type)) { + return true; + } + if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) { + return true; + } + } + function genRefFlag(v) { + if (reactivity.isShallow(v)) { + return `ShallowRef`; + } + if (v.effect) { + return `ComputedRef`; + } + return `Ref`; + } + if (window.devtoolsFormatters) { + window.devtoolsFormatters.push(formatter); + } else { + window.devtoolsFormatters = [formatter]; + } +} + +function withMemo(memo, render, cache, index) { + const cached = cache[index]; + if (cached && isMemoSame(cached, memo)) { + return cached; + } + const ret = render(); + ret.memo = memo.slice(); + ret.cacheIndex = index; + return cache[index] = ret; +} +function isMemoSame(cached, memo) { + const prev = cached.memo; + if (prev.length != memo.length) { + return false; + } + for (let i = 0; i < prev.length; i++) { + if (shared.hasChanged(prev[i], memo[i])) { + return false; + } + } + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(cached); + } + return true; +} + +const version = "3.5.18"; +const warn = warn$1 ; +const ErrorTypeStrings = ErrorTypeStrings$1 ; +const devtools = devtools$1 ; +const setDevtoolsHook = setDevtoolsHook$1 ; +const _ssrUtils = { + createComponentInstance, + setupComponent, + renderComponentRoot, + setCurrentRenderingInstance, + isVNode: isVNode, + normalizeVNode, + getComponentPublicInstance, + ensureValidVNode, + pushWarningContext, + popWarningContext +}; +const ssrUtils = _ssrUtils ; +const resolveFilter = null; +const compatUtils = null; +const DeprecationTypes = null; + +exports.EffectScope = reactivity.EffectScope; +exports.ReactiveEffect = reactivity.ReactiveEffect; +exports.TrackOpTypes = reactivity.TrackOpTypes; +exports.TriggerOpTypes = reactivity.TriggerOpTypes; +exports.customRef = reactivity.customRef; +exports.effect = reactivity.effect; +exports.effectScope = reactivity.effectScope; +exports.getCurrentScope = reactivity.getCurrentScope; +exports.getCurrentWatcher = reactivity.getCurrentWatcher; +exports.isProxy = reactivity.isProxy; +exports.isReactive = reactivity.isReactive; +exports.isReadonly = reactivity.isReadonly; +exports.isRef = reactivity.isRef; +exports.isShallow = reactivity.isShallow; +exports.markRaw = reactivity.markRaw; +exports.onScopeDispose = reactivity.onScopeDispose; +exports.onWatcherCleanup = reactivity.onWatcherCleanup; +exports.proxyRefs = reactivity.proxyRefs; +exports.reactive = reactivity.reactive; +exports.readonly = reactivity.readonly; +exports.ref = reactivity.ref; +exports.shallowReactive = reactivity.shallowReactive; +exports.shallowReadonly = reactivity.shallowReadonly; +exports.shallowRef = reactivity.shallowRef; +exports.stop = reactivity.stop; +exports.toRaw = reactivity.toRaw; +exports.toRef = reactivity.toRef; +exports.toRefs = reactivity.toRefs; +exports.toValue = reactivity.toValue; +exports.triggerRef = reactivity.triggerRef; +exports.unref = reactivity.unref; +exports.camelize = shared.camelize; +exports.capitalize = shared.capitalize; +exports.normalizeClass = shared.normalizeClass; +exports.normalizeProps = shared.normalizeProps; +exports.normalizeStyle = shared.normalizeStyle; +exports.toDisplayString = shared.toDisplayString; +exports.toHandlerKey = shared.toHandlerKey; +exports.BaseTransition = BaseTransition; +exports.BaseTransitionPropsValidators = BaseTransitionPropsValidators; +exports.Comment = Comment; +exports.DeprecationTypes = DeprecationTypes; +exports.ErrorCodes = ErrorCodes; +exports.ErrorTypeStrings = ErrorTypeStrings; +exports.Fragment = Fragment; +exports.KeepAlive = KeepAlive; +exports.Static = Static; +exports.Suspense = Suspense; +exports.Teleport = Teleport; +exports.Text = Text; +exports.assertNumber = assertNumber; +exports.callWithAsyncErrorHandling = callWithAsyncErrorHandling; +exports.callWithErrorHandling = callWithErrorHandling; +exports.cloneVNode = cloneVNode; +exports.compatUtils = compatUtils; +exports.computed = computed; +exports.createBlock = createBlock; +exports.createCommentVNode = createCommentVNode; +exports.createElementBlock = createElementBlock; +exports.createElementVNode = createBaseVNode; +exports.createHydrationRenderer = createHydrationRenderer; +exports.createPropsRestProxy = createPropsRestProxy; +exports.createRenderer = createRenderer; +exports.createSlots = createSlots; +exports.createStaticVNode = createStaticVNode; +exports.createTextVNode = createTextVNode; +exports.createVNode = createVNode; +exports.defineAsyncComponent = defineAsyncComponent; +exports.defineComponent = defineComponent; +exports.defineEmits = defineEmits; +exports.defineExpose = defineExpose; +exports.defineModel = defineModel; +exports.defineOptions = defineOptions; +exports.defineProps = defineProps; +exports.defineSlots = defineSlots; +exports.devtools = devtools; +exports.getCurrentInstance = getCurrentInstance; +exports.getTransitionRawChildren = getTransitionRawChildren; +exports.guardReactiveProps = guardReactiveProps; +exports.h = h; +exports.handleError = handleError; +exports.hasInjectionContext = hasInjectionContext; +exports.hydrateOnIdle = hydrateOnIdle; +exports.hydrateOnInteraction = hydrateOnInteraction; +exports.hydrateOnMediaQuery = hydrateOnMediaQuery; +exports.hydrateOnVisible = hydrateOnVisible; +exports.initCustomFormatter = initCustomFormatter; +exports.inject = inject; +exports.isMemoSame = isMemoSame; +exports.isRuntimeOnly = isRuntimeOnly; +exports.isVNode = isVNode; +exports.mergeDefaults = mergeDefaults; +exports.mergeModels = mergeModels; +exports.mergeProps = mergeProps; +exports.nextTick = nextTick; +exports.onActivated = onActivated; +exports.onBeforeMount = onBeforeMount; +exports.onBeforeUnmount = onBeforeUnmount; +exports.onBeforeUpdate = onBeforeUpdate; +exports.onDeactivated = onDeactivated; +exports.onErrorCaptured = onErrorCaptured; +exports.onMounted = onMounted; +exports.onRenderTracked = onRenderTracked; +exports.onRenderTriggered = onRenderTriggered; +exports.onServerPrefetch = onServerPrefetch; +exports.onUnmounted = onUnmounted; +exports.onUpdated = onUpdated; +exports.openBlock = openBlock; +exports.popScopeId = popScopeId; +exports.provide = provide; +exports.pushScopeId = pushScopeId; +exports.queuePostFlushCb = queuePostFlushCb; +exports.registerRuntimeCompiler = registerRuntimeCompiler; +exports.renderList = renderList; +exports.renderSlot = renderSlot; +exports.resolveComponent = resolveComponent; +exports.resolveDirective = resolveDirective; +exports.resolveDynamicComponent = resolveDynamicComponent; +exports.resolveFilter = resolveFilter; +exports.resolveTransitionHooks = resolveTransitionHooks; +exports.setBlockTracking = setBlockTracking; +exports.setDevtoolsHook = setDevtoolsHook; +exports.setTransitionHooks = setTransitionHooks; +exports.ssrContextKey = ssrContextKey; +exports.ssrUtils = ssrUtils; +exports.toHandlers = toHandlers; +exports.transformVNodeArgs = transformVNodeArgs; +exports.useAttrs = useAttrs; +exports.useId = useId; +exports.useModel = useModel; +exports.useSSRContext = useSSRContext; +exports.useSlots = useSlots; +exports.useTemplateRef = useTemplateRef; +exports.useTransitionState = useTransitionState; +exports.version = version; +exports.warn = warn; +exports.watch = watch; +exports.watchEffect = watchEffect; +exports.watchPostEffect = watchPostEffect; +exports.watchSyncEffect = watchSyncEffect; +exports.withAsyncContext = withAsyncContext; +exports.withCtx = withCtx; +exports.withDefaults = withDefaults; +exports.withDirectives = withDirectives; +exports.withMemo = withMemo; +exports.withScopeId = withScopeId; diff --git a/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js b/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js new file mode 100644 index 0000000..ed9f3dd --- /dev/null +++ b/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js @@ -0,0 +1,6707 @@ +/** +* @vue/runtime-core v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var reactivity = require('@vue/reactivity'); +var shared = require('@vue/shared'); + +function pushWarningContext(vnode) { +} +function popWarningContext() { +} +function assertNumber(val, type) { + return; +} + +const ErrorCodes = { + "SETUP_FUNCTION": 0, + "0": "SETUP_FUNCTION", + "RENDER_FUNCTION": 1, + "1": "RENDER_FUNCTION", + "NATIVE_EVENT_HANDLER": 5, + "5": "NATIVE_EVENT_HANDLER", + "COMPONENT_EVENT_HANDLER": 6, + "6": "COMPONENT_EVENT_HANDLER", + "VNODE_HOOK": 7, + "7": "VNODE_HOOK", + "DIRECTIVE_HOOK": 8, + "8": "DIRECTIVE_HOOK", + "TRANSITION_HOOK": 9, + "9": "TRANSITION_HOOK", + "APP_ERROR_HANDLER": 10, + "10": "APP_ERROR_HANDLER", + "APP_WARN_HANDLER": 11, + "11": "APP_WARN_HANDLER", + "FUNCTION_REF": 12, + "12": "FUNCTION_REF", + "ASYNC_COMPONENT_LOADER": 13, + "13": "ASYNC_COMPONENT_LOADER", + "SCHEDULER": 14, + "14": "SCHEDULER", + "COMPONENT_UPDATE": 15, + "15": "COMPONENT_UPDATE", + "APP_UNMOUNT_CLEANUP": 16, + "16": "APP_UNMOUNT_CLEANUP" +}; +const ErrorTypeStrings$1 = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush", + [15]: "component update", + [16]: "app unmount cleanup function" +}; +function callWithErrorHandling(fn, instance, type, args) { + try { + return args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (shared.isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && shared.isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + if (shared.isArray(fn)) { + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; + } +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || shared.EMPTY_OBJ; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = `https://vuejs.org/error-reference/#runtime-${type}`; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + if (errorHandler) { + reactivity.pauseTracking(); + callWithErrorHandling(errorHandler, null, 10, [ + err, + exposedInstance, + errorInfo + ]); + reactivity.resetTracking(); + return; + } + } + logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction); +} +function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) { + if (throwInProd) { + throw err; + } else { + console.error(err); + } +} + +const queue = []; +let flushIndex = -1; +const pendingPostFlushCbs = []; +let activePostFlushCbs = null; +let postFlushIndex = 0; +const resolvedPromise = /* @__PURE__ */ Promise.resolve(); +let currentFlushPromise = null; +function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.flags & 2) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!(job.flags & 1)) { + const jobId = getId(job); + const lastJob = queue[queue.length - 1]; + if (!lastJob || // fast path when the job id is larger than the tail + !(job.flags & 2) && jobId >= getId(lastJob)) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(jobId), 0, job); + } + job.flags |= 1; + queueFlush(); + } +} +function queueFlush() { + if (!currentFlushPromise) { + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function queuePostFlushCb(cb) { + if (!shared.isArray(cb)) { + if (activePostFlushCbs && cb.id === -1) { + activePostFlushCbs.splice(postFlushIndex + 1, 0, cb); + } else if (!(cb.flags & 1)) { + pendingPostFlushCbs.push(cb); + cb.flags |= 1; + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(instance, seen, i = flushIndex + 1) { + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.flags & 2) { + if (instance && cb.id !== instance.uid) { + continue; + } + queue.splice(i, 1); + i--; + if (cb.flags & 4) { + cb.flags &= -2; + } + cb(); + if (!(cb.flags & 4)) { + cb.flags &= -2; + } + } + } +} +function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)].sort( + (a, b) => getId(a) - getId(b) + ); + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + const cb = activePostFlushCbs[postFlushIndex]; + if (cb.flags & 4) { + cb.flags &= -2; + } + if (!(cb.flags & 8)) cb(); + cb.flags &= -2; + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id; +function flushJobs(seen) { + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && !(job.flags & 8)) { + if (false) ; + if (job.flags & 4) { + job.flags &= ~1; + } + callWithErrorHandling( + job, + job.i, + job.i ? 15 : 14 + ); + if (!(job.flags & 4)) { + job.flags &= ~1; + } + } + } + } finally { + for (; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job) { + job.flags &= -2; + } + } + flushIndex = -1; + queue.length = 0; + flushPostFlushCbs(); + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(); + } + } +} + +let currentRenderingInstance = null; +let currentScopeId = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function pushScopeId(id) { + currentScopeId = id; +} +function popScopeId() { + currentScopeId = null; +} +const withScopeId = (_id) => withCtx; +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} + +function withDirectives(vnode, directives) { + if (currentRenderingInstance === null) { + return vnode; + } + const instance = getComponentPublicInstance(currentRenderingInstance); + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = shared.EMPTY_OBJ] = directives[i]; + if (dir) { + if (shared.isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + reactivity.traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + reactivity.pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + reactivity.resetTracking(); + } + } +} + +const TeleportEndKey = Symbol("_vte"); +const isTeleport = (type) => type.__isTeleport; +const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ""); +const isTeleportDeferred = (props) => props && (props.defer || props.defer === ""); +const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement; +const isTargetMathML = (target) => typeof MathMLElement === "function" && target instanceof MathMLElement; +const resolveTarget = (props, select) => { + const targetSelector = props && props.to; + if (shared.isString(targetSelector)) { + if (!select) { + return null; + } else { + const target = select(targetSelector); + return target; + } + } else { + return targetSelector; + } +}; +const TeleportImpl = { + name: "Teleport", + __isTeleport: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) { + const { + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + o: { insert, querySelector, createText, createComment } + } = internals; + const disabled = isTeleportDisabled(n2.props); + let { shapeFlag, children, dynamicChildren } = n2; + if (n1 == null) { + const placeholder = n2.el = createText(""); + const mainAnchor = n2.anchor = createText(""); + insert(placeholder, container, anchor); + insert(mainAnchor, container, anchor); + const mount = (container2, anchor2) => { + if (shapeFlag & 16) { + if (parentComponent && parentComponent.isCE) { + parentComponent.ce._teleportTarget = container2; + } + mountChildren( + children, + container2, + anchor2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const mountToTarget = () => { + const target = n2.target = resolveTarget(n2.props, querySelector); + const targetAnchor = prepareAnchor(target, n2, createText, insert); + if (target) { + if (namespace !== "svg" && isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace !== "mathml" && isTargetMathML(target)) { + namespace = "mathml"; + } + if (!disabled) { + mount(target, targetAnchor); + updateCssVars(n2, false); + } + } + }; + if (disabled) { + mount(container, mainAnchor); + updateCssVars(n2, true); + } + if (isTeleportDeferred(n2.props)) { + n2.el.__isMounted = false; + queuePostRenderEffect(() => { + mountToTarget(); + delete n2.el.__isMounted; + }, parentSuspense); + } else { + mountToTarget(); + } + } else { + if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) { + queuePostRenderEffect(() => { + TeleportImpl.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + }, parentSuspense); + return; + } + n2.el = n1.el; + n2.targetStart = n1.targetStart; + const mainAnchor = n2.anchor = n1.anchor; + const target = n2.target = n1.target; + const targetAnchor = n2.targetAnchor = n1.targetAnchor; + const wasDisabled = isTeleportDisabled(n1.props); + const currentContainer = wasDisabled ? container : target; + const currentAnchor = wasDisabled ? mainAnchor : targetAnchor; + if (namespace === "svg" || isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace === "mathml" || isTargetMathML(target)) { + namespace = "mathml"; + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + currentContainer, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + traverseStaticChildren(n1, n2, true); + } else if (!optimized) { + patchChildren( + n1, + n2, + currentContainer, + currentAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + false + ); + } + if (disabled) { + if (!wasDisabled) { + moveTeleport( + n2, + container, + mainAnchor, + internals, + 1 + ); + } else { + if (n2.props && n1.props && n2.props.to !== n1.props.to) { + n2.props.to = n1.props.to; + } + } + } else { + if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { + const nextTarget = n2.target = resolveTarget( + n2.props, + querySelector + ); + if (nextTarget) { + moveTeleport( + n2, + nextTarget, + null, + internals, + 0 + ); + } + } else if (wasDisabled) { + moveTeleport( + n2, + target, + targetAnchor, + internals, + 1 + ); + } + } + updateCssVars(n2, disabled); + } + }, + remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) { + const { + shapeFlag, + children, + anchor, + targetStart, + targetAnchor, + target, + props + } = vnode; + if (target) { + hostRemove(targetStart); + hostRemove(targetAnchor); + } + doRemove && hostRemove(anchor); + if (shapeFlag & 16) { + const shouldRemove = doRemove || !isTeleportDisabled(props); + for (let i = 0; i < children.length; i++) { + const child = children[i]; + unmount( + child, + parentComponent, + parentSuspense, + shouldRemove, + !!child.dynamicChildren + ); + } + } + }, + move: moveTeleport, + hydrate: hydrateTeleport +}; +function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) { + if (moveType === 0) { + insert(vnode.targetAnchor, container, parentAnchor); + } + const { el, anchor, shapeFlag, children, props } = vnode; + const isReorder = moveType === 2; + if (isReorder) { + insert(el, container, parentAnchor); + } + if (!isReorder || isTeleportDisabled(props)) { + if (shapeFlag & 16) { + for (let i = 0; i < children.length; i++) { + move( + children[i], + container, + parentAnchor, + 2 + ); + } + } + } + if (isReorder) { + insert(anchor, container, parentAnchor); + } +} +function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { + o: { nextSibling, parentNode, querySelector, insert, createText } +}, hydrateChildren) { + const target = vnode.target = resolveTarget( + vnode.props, + querySelector + ); + if (target) { + const disabled = isTeleportDisabled(vnode.props); + const targetNode = target._lpa || target.firstChild; + if (vnode.shapeFlag & 16) { + if (disabled) { + vnode.anchor = hydrateChildren( + nextSibling(node), + vnode, + parentNode(node), + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + vnode.targetStart = targetNode; + vnode.targetAnchor = targetNode && nextSibling(targetNode); + } else { + vnode.anchor = nextSibling(node); + let targetAnchor = targetNode; + while (targetAnchor) { + if (targetAnchor && targetAnchor.nodeType === 8) { + if (targetAnchor.data === "teleport start anchor") { + vnode.targetStart = targetAnchor; + } else if (targetAnchor.data === "teleport anchor") { + vnode.targetAnchor = targetAnchor; + target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); + break; + } + } + targetAnchor = nextSibling(targetAnchor); + } + if (!vnode.targetAnchor) { + prepareAnchor(target, vnode, createText, insert); + } + hydrateChildren( + targetNode && nextSibling(targetNode), + vnode, + target, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } + updateCssVars(vnode, disabled); + } + return vnode.anchor && nextSibling(vnode.anchor); +} +const Teleport = TeleportImpl; +function updateCssVars(vnode, isDisabled) { + const ctx = vnode.ctx; + if (ctx && ctx.ut) { + let node, anchor; + if (isDisabled) { + node = vnode.el; + anchor = vnode.anchor; + } else { + node = vnode.targetStart; + anchor = vnode.targetAnchor; + } + while (node && node !== anchor) { + if (node.nodeType === 1) node.setAttribute("data-v-owner", ctx.uid); + node = node.nextSibling; + } + ctx.ut(); + } +} +function prepareAnchor(target, vnode, createText, insert) { + const targetStart = vnode.targetStart = createText(""); + const targetAnchor = vnode.targetAnchor = createText(""); + targetStart[TeleportEndKey] = targetAnchor; + if (target) { + insert(targetStart, target); + insert(targetAnchor, target); + } + return targetAnchor; +} + +const leaveCbKey = Symbol("_leaveCb"); +const enterCbKey = Symbol("_enterCb"); +function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; +} +const TransitionHookValidator = [Function, Array]; +const BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator +}; +const recursiveGetSubtree = (instance) => { + const subTree = instance.subTree; + return subTree.component ? recursiveGetSubtree(subTree.component) : subTree; +}; +const BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + const child = findNonCommentChild(children); + const rawProps = reactivity.toRaw(props); + const { mode } = rawProps; + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getInnerChild$1(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + let enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance, + // #11061, ensure enterHooks is fresh after clone + (hooks) => enterHooks = hooks + ); + if (innerChild.type !== Comment) { + setTransitionHooks(innerChild, enterHooks); + } + let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree); + if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) { + let leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in" && innerChild.type !== Comment) { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (!(instance.job.flags & 8)) { + instance.update(); + } + delete leavingHooks.afterLeave; + oldInnerChild = void 0; + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el[leaveCbKey] = () => { + earlyRemove(); + el[leaveCbKey] = void 0; + delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + enterHooks.delayedLeave = () => { + delayedLeave(); + delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + }; + } else { + oldInnerChild = void 0; + } + } else if (oldInnerChild) { + oldInnerChild = void 0; + } + return child; + }; + } +}; +function findNonCommentChild(children) { + let child = children[0]; + if (children.length > 1) { + for (const c of children) { + if (c.type !== Comment) { + child = c; + break; + } + } + } + return child; +} +const BaseTransition = BaseTransitionImpl; +function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; +} +function resolveTransitionHooks(vnode, props, state, instance, postClone) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook(hook, args); + if (shared.isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el[leaveCbKey]) { + el[leaveCbKey]( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { + leavingVNode.el[leaveCbKey](); + } + callHook(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + const done = el[enterCbKey] = (cancelled) => { + if (called) return; + called = true; + if (cancelled) { + callHook(cancelHook, [el]); + } else { + callHook(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el[enterCbKey] = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove) { + const key2 = String(vnode.key); + if (el[enterCbKey]) { + el[enterCbKey]( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove(); + } + callHook(onBeforeLeave, [el]); + let called = false; + const done = el[leaveCbKey] = (cancelled) => { + if (called) return; + called = true; + remove(); + if (cancelled) { + callHook(onLeaveCancelled, [el]); + } else { + callHook(onAfterLeave, [el]); + } + el[leaveCbKey] = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + const hooks2 = resolveTransitionHooks( + vnode2, + props, + state, + instance, + postClone + ); + if (postClone) postClone(hooks2); + return hooks2; + } + }; + return hooks; +} +function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } +} +function getInnerChild$1(vnode) { + if (!isKeepAlive(vnode)) { + if (isTeleport(vnode.type) && vnode.children) { + return findNonCommentChild(vnode.children); + } + return vnode; + } + if (vnode.component) { + return vnode.component.subTree; + } + const { shapeFlag, children } = vnode; + if (children) { + if (shapeFlag & 16) { + return children[0]; + } + if (shapeFlag & 32 && shared.isFunction(children.default)) { + return children.default(); + } + } +} +function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + vnode.transition = hooks; + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } +} +function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; +} + +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineComponent(options, extraOptions) { + return shared.isFunction(options) ? ( + // #8236: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + /* @__PURE__ */ (() => shared.extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; +} + +function useId() { + const i = getCurrentInstance(); + if (i) { + return (i.appContext.config.idPrefix || "v") + "-" + i.ids[0] + i.ids[1]++; + } + return ""; +} +function markAsyncBoundary(instance) { + instance.ids = [instance.ids[0] + instance.ids[2]++ + "-", 0, 0]; +} + +function useTemplateRef(key) { + const i = getCurrentInstance(); + const r = reactivity.shallowRef(null); + if (i) { + const refs = i.refs === shared.EMPTY_OBJ ? i.refs = {} : i.refs; + { + Object.defineProperty(refs, key, { + enumerable: true, + get: () => r.value, + set: (val) => r.value = val + }); + } + } + const ret = r; + return ret; +} + +function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { + if (shared.isArray(rawRef)) { + rawRef.forEach( + (r, i) => setRef( + r, + oldRawRef && (shared.isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), + parentSuspense, + vnode, + isUnmount + ) + ); + return; + } + if (isAsyncWrapper(vnode) && !isUnmount) { + if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) { + setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree); + } + return; + } + const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el; + const value = isUnmount ? null : refValue; + const { i: owner, r: ref } = rawRef; + const oldRef = oldRawRef && oldRawRef.r; + const refs = owner.refs === shared.EMPTY_OBJ ? owner.refs = {} : owner.refs; + const setupState = owner.setupState; + const rawSetupState = reactivity.toRaw(setupState); + const canSetSetupRef = setupState === shared.EMPTY_OBJ ? () => false : (key) => { + return shared.hasOwn(rawSetupState, key); + }; + if (oldRef != null && oldRef !== ref) { + if (shared.isString(oldRef)) { + refs[oldRef] = null; + if (canSetSetupRef(oldRef)) { + setupState[oldRef] = null; + } + } else if (reactivity.isRef(oldRef)) { + oldRef.value = null; + } + } + if (shared.isFunction(ref)) { + callWithErrorHandling(ref, owner, 12, [value, refs]); + } else { + const _isString = shared.isString(ref); + const _isRef = reactivity.isRef(ref); + if (_isString || _isRef) { + const doSet = () => { + if (rawRef.f) { + const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value; + if (isUnmount) { + shared.isArray(existing) && shared.remove(existing, refValue); + } else { + if (!shared.isArray(existing)) { + if (_isString) { + refs[ref] = [refValue]; + if (canSetSetupRef(ref)) { + setupState[ref] = refs[ref]; + } + } else { + ref.value = [refValue]; + if (rawRef.k) refs[rawRef.k] = ref.value; + } + } else if (!existing.includes(refValue)) { + existing.push(refValue); + } + } + } else if (_isString) { + refs[ref] = value; + if (canSetSetupRef(ref)) { + setupState[ref] = value; + } + } else if (_isRef) { + ref.value = value; + if (rawRef.k) refs[rawRef.k] = value; + } else ; + }; + if (value) { + doSet.id = -1; + queuePostRenderEffect(doSet, parentSuspense); + } else { + doSet(); + } + } + } +} + +let hasLoggedMismatchError = false; +const logMismatchError = () => { + if (hasLoggedMismatchError) { + return; + } + console.error("Hydration completed but contains mismatches."); + hasLoggedMismatchError = true; +}; +const isSVGContainer = (container) => container.namespaceURI.includes("svg") && container.tagName !== "foreignObject"; +const isMathMLContainer = (container) => container.namespaceURI.includes("MathML"); +const getContainerType = (container) => { + if (container.nodeType !== 1) return void 0; + if (isSVGContainer(container)) return "svg"; + if (isMathMLContainer(container)) return "mathml"; + return void 0; +}; +const isComment = (node) => node.nodeType === 8; +function createHydrationFunctions(rendererInternals) { + const { + mt: mountComponent, + p: patch, + o: { + patchProp, + createText, + nextSibling, + parentNode, + remove, + insert, + createComment + } + } = rendererInternals; + const hydrate = (vnode, container) => { + if (!container.hasChildNodes()) { + patch(null, vnode, container); + flushPostFlushCbs(); + container._vnode = vnode; + return; + } + hydrateNode(container.firstChild, vnode, null, null, null); + flushPostFlushCbs(); + container._vnode = vnode; + }; + const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => { + optimized = optimized || !!vnode.dynamicChildren; + const isFragmentStart = isComment(node) && node.data === "["; + const onMismatch = () => handleMismatch( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + isFragmentStart + ); + const { type, ref, shapeFlag, patchFlag } = vnode; + let domType = node.nodeType; + vnode.el = node; + if (patchFlag === -2) { + optimized = false; + vnode.dynamicChildren = null; + } + let nextNode = null; + switch (type) { + case Text: + if (domType !== 3) { + if (vnode.children === "") { + insert(vnode.el = createText(""), parentNode(node), node); + nextNode = node; + } else { + nextNode = onMismatch(); + } + } else { + if (node.data !== vnode.children) { + logMismatchError(); + node.data = vnode.children; + } + nextNode = nextSibling(node); + } + break; + case Comment: + if (isTemplateNode(node)) { + nextNode = nextSibling(node); + replaceNode( + vnode.el = node.content.firstChild, + node, + parentComponent + ); + } else if (domType !== 8 || isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = nextSibling(node); + } + break; + case Static: + if (isFragmentStart) { + node = nextSibling(node); + domType = node.nodeType; + } + if (domType === 1 || domType === 3) { + nextNode = node; + const needToAdoptContent = !vnode.children.length; + for (let i = 0; i < vnode.staticCount; i++) { + if (needToAdoptContent) + vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data; + if (i === vnode.staticCount - 1) { + vnode.anchor = nextNode; + } + nextNode = nextSibling(nextNode); + } + return isFragmentStart ? nextSibling(nextNode) : nextNode; + } else { + onMismatch(); + } + break; + case Fragment: + if (!isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = hydrateFragment( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + break; + default: + if (shapeFlag & 1) { + if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) { + nextNode = onMismatch(); + } else { + nextNode = hydrateElement( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } else if (shapeFlag & 6) { + vnode.slotScopeIds = slotScopeIds; + const container = parentNode(node); + if (isFragmentStart) { + nextNode = locateClosingAnchor(node); + } else if (isComment(node) && node.data === "teleport start") { + nextNode = locateClosingAnchor(node, node.data, "teleport end"); + } else { + nextNode = nextSibling(node); + } + mountComponent( + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + optimized + ); + if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) { + let subTree; + if (isFragmentStart) { + subTree = createVNode(Fragment); + subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild; + } else { + subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div"); + } + subTree.el = node; + vnode.component.subTree = subTree; + } + } else if (shapeFlag & 64) { + if (domType !== 8) { + nextNode = onMismatch(); + } else { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized, + rendererInternals, + hydrateChildren + ); + } + } else if (shapeFlag & 128) { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + getContainerType(parentNode(node)), + slotScopeIds, + optimized, + rendererInternals, + hydrateNode + ); + } else ; + } + if (ref != null) { + setRef(ref, null, parentSuspense, vnode); + } + return nextNode; + }; + const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!vnode.dynamicChildren; + const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode; + const forcePatch = type === "input" || type === "option"; + if (forcePatch || patchFlag !== -1) { + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + let needCallTransitionHooks = false; + if (isTemplateNode(el)) { + needCallTransitionHooks = needTransition( + null, + // no need check parentSuspense in hydration + transition + ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear; + const content = el.content.firstChild; + if (needCallTransitionHooks) { + const cls = content.getAttribute("class"); + if (cls) content.$cls = cls; + transition.beforeEnter(content); + } + replaceNode(content, el, parentComponent); + vnode.el = el = content; + } + if (shapeFlag & 16 && // skip if element has innerHTML / textContent + !(props && (props.innerHTML || props.textContent))) { + let next = hydrateChildren( + el.firstChild, + vnode, + el, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + while (next) { + if (!isMismatchAllowed(el, 1 /* CHILDREN */)) { + logMismatchError(); + } + const cur = next; + next = next.nextSibling; + remove(cur); + } + } else if (shapeFlag & 8) { + let clientText = vnode.children; + if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) { + clientText = clientText.slice(1); + } + if (el.textContent !== clientText) { + if (!isMismatchAllowed(el, 0 /* TEXT */)) { + logMismatchError(); + } + el.textContent = vnode.children; + } + } + if (props) { + if (forcePatch || !optimized || patchFlag & (16 | 32)) { + const isCustomElement = el.tagName.includes("-"); + for (const key in props) { + if (forcePatch && (key.endsWith("value") || key === "indeterminate") || shared.isOn(key) && !shared.isReservedProp(key) || // force hydrate v-bind with .prop modifiers + key[0] === "." || isCustomElement) { + patchProp(el, key, null, props[key], void 0, parentComponent); + } + } + } else if (props.onClick) { + patchProp( + el, + "onClick", + null, + props.onClick, + void 0, + parentComponent + ); + } else if (patchFlag & 4 && reactivity.isReactive(props.style)) { + for (const key in props.style) props.style[key]; + } + } + let vnodeHooks; + if (vnodeHooks = props && props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHooks, parentComponent, vnode); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) { + queueEffectWithSuspense(() => { + vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + } + return el.nextSibling; + }; + const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!parentVNode.dynamicChildren; + const children = parentVNode.children; + const l = children.length; + for (let i = 0; i < l; i++) { + const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]); + const isText = vnode.type === Text; + if (node) { + if (isText && !optimized) { + if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) { + insert( + createText( + node.data.slice(vnode.children.length) + ), + container, + nextSibling(node) + ); + node.data = vnode.children; + } + } + node = hydrateNode( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } else if (isText && !vnode.children) { + insert(vnode.el = createText(""), container); + } else { + if (!isMismatchAllowed(container, 1 /* CHILDREN */)) { + logMismatchError(); + } + patch( + null, + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + } + } + return node; + }; + const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + const { slotScopeIds: fragmentSlotScopeIds } = vnode; + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + const container = parentNode(node); + const next = hydrateChildren( + nextSibling(node), + vnode, + container, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + if (next && isComment(next) && next.data === "]") { + return nextSibling(vnode.anchor = next); + } else { + logMismatchError(); + insert(vnode.anchor = createComment(`]`), container, next); + return next; + } + }; + const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => { + if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) { + logMismatchError(); + } + vnode.el = null; + if (isFragment) { + const end = locateClosingAnchor(node); + while (true) { + const next2 = nextSibling(node); + if (next2 && next2 !== end) { + remove(next2); + } else { + break; + } + } + } + const next = nextSibling(node); + const container = parentNode(node); + remove(node); + patch( + null, + vnode, + container, + next, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + if (parentComponent) { + parentComponent.vnode.el = vnode.el; + updateHOCHostEl(parentComponent, vnode.el); + } + return next; + }; + const locateClosingAnchor = (node, open = "[", close = "]") => { + let match = 0; + while (node) { + node = nextSibling(node); + if (node && isComment(node)) { + if (node.data === open) match++; + if (node.data === close) { + if (match === 0) { + return nextSibling(node); + } else { + match--; + } + } + } + } + return node; + }; + const replaceNode = (newNode, oldNode, parentComponent) => { + const parentNode2 = oldNode.parentNode; + if (parentNode2) { + parentNode2.replaceChild(newNode, oldNode); + } + let parent = parentComponent; + while (parent) { + if (parent.vnode.el === oldNode) { + parent.vnode.el = parent.subTree.el = newNode; + } + parent = parent.parent; + } + }; + const isTemplateNode = (node) => { + return node.nodeType === 1 && node.tagName === "TEMPLATE"; + }; + return [hydrate, hydrateNode]; +} +const allowMismatchAttr = "data-allow-mismatch"; +const MismatchTypeString = { + [0 /* TEXT */]: "text", + [1 /* CHILDREN */]: "children", + [2 /* CLASS */]: "class", + [3 /* STYLE */]: "style", + [4 /* ATTRIBUTE */]: "attribute" +}; +function isMismatchAllowed(el, allowedType) { + if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) { + while (el && !el.hasAttribute(allowMismatchAttr)) { + el = el.parentElement; + } + } + const allowedAttr = el && el.getAttribute(allowMismatchAttr); + if (allowedAttr == null) { + return false; + } else if (allowedAttr === "") { + return true; + } else { + const list = allowedAttr.split(","); + if (allowedType === 0 /* TEXT */ && list.includes("children")) { + return true; + } + return list.includes(MismatchTypeString[allowedType]); + } +} + +const requestIdleCallback = shared.getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1)); +const cancelIdleCallback = shared.getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id)); +const hydrateOnIdle = (timeout = 1e4) => (hydrate) => { + const id = requestIdleCallback(hydrate, { timeout }); + return () => cancelIdleCallback(id); +}; +function elementIsVisibleInViewport(el) { + const { top, left, bottom, right } = el.getBoundingClientRect(); + const { innerHeight, innerWidth } = window; + return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth); +} +const hydrateOnVisible = (opts) => (hydrate, forEach) => { + const ob = new IntersectionObserver((entries) => { + for (const e of entries) { + if (!e.isIntersecting) continue; + ob.disconnect(); + hydrate(); + break; + } + }, opts); + forEach((el) => { + if (!(el instanceof Element)) return; + if (elementIsVisibleInViewport(el)) { + hydrate(); + ob.disconnect(); + return false; + } + ob.observe(el); + }); + return () => ob.disconnect(); +}; +const hydrateOnMediaQuery = (query) => (hydrate) => { + if (query) { + const mql = matchMedia(query); + if (mql.matches) { + hydrate(); + } else { + mql.addEventListener("change", hydrate, { once: true }); + return () => mql.removeEventListener("change", hydrate); + } + } +}; +const hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => { + if (shared.isString(interactions)) interactions = [interactions]; + let hasHydrated = false; + const doHydrate = (e) => { + if (!hasHydrated) { + hasHydrated = true; + teardown(); + hydrate(); + e.target.dispatchEvent(new e.constructor(e.type, e)); + } + }; + const teardown = () => { + forEach((el) => { + for (const i of interactions) { + el.removeEventListener(i, doHydrate); + } + }); + }; + forEach((el) => { + for (const i of interactions) { + el.addEventListener(i, doHydrate, { once: true }); + } + }); + return teardown; +}; +function forEachElement(node, cb) { + if (isComment(node) && node.data === "[") { + let depth = 1; + let next = node.nextSibling; + while (next) { + if (next.nodeType === 1) { + const result = cb(next); + if (result === false) { + break; + } + } else if (isComment(next)) { + if (next.data === "]") { + if (--depth === 0) break; + } else if (next.data === "[") { + depth++; + } + } + next = next.nextSibling; + } + } else { + cb(node); + } +} + +const isAsyncWrapper = (i) => !!i.type.__asyncLoader; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineAsyncComponent(source) { + if (shared.isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + hydrate: hydrateStrategy, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve, reject) => { + const userRetry = () => resolve(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + __asyncHydrate(el, instance, hydrate) { + let patched = false; + (instance.bu || (instance.bu = [])).push(() => patched = true); + const performHydrate = () => { + if (patched) { + return; + } + hydrate(); + }; + const doHydrate = hydrateStrategy ? () => { + const teardown = hydrateStrategy( + performHydrate, + (cb) => forEachElement(el, cb) + ); + if (teardown) { + (instance.bum || (instance.bum = [])).push(teardown); + } + } : performHydrate; + if (resolvedComp) { + doHydrate(); + } else { + load().then(() => !instance.isUnmounted && doHydrate()); + } + }, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + markAsyncBoundary(instance); + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + ); + }; + if (suspensible && instance.suspense || isInSSRComponentSetup) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = reactivity.ref(false); + const error = reactivity.ref(); + const delayed = reactivity.ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + instance.parent.update(); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); +} +function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; +} + +const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +const KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + if (!sharedContext.renderer) { + return () => { + const children = slots.default && slots.default(); + return children && children.length === 1 ? children[0] : children; + }; + } + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, namespace, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + namespace, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + shared.invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + invalidateMount(instance2.m); + invalidateMount(instance2.a); + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + shared.invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(vnode.type); + if (name && !filter(name)) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (cached && (!current || !isSameVNodeType(cached, current))) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + watch( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + if (isSuspense(instance.subTree.type)) { + queuePostRenderEffect(() => { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + }, instance.subTree.suspense); + } else { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return current = null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + if (vnode.type === Comment) { + current = null; + return vnode; + } + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + vnode.shapeFlag &= -257; + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } +}; +const KeepAlive = KeepAliveImpl; +function matches(pattern, name) { + if (shared.isArray(pattern)) { + return pattern.some((p) => matches(p, name)); + } else if (shared.isString(pattern)) { + return pattern.split(",").includes(name); + } else if (shared.isRegExp(pattern)) { + pattern.lastIndex = 0; + return pattern.test(name); + } + return false; +} +function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); +} +function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); +} +function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } +} +function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + shared.remove(keepAliveRoot[type], injected); + }, target); +} +function resetShapeFlag(vnode) { + vnode.shapeFlag &= -257; + vnode.shapeFlag &= -513; +} +function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; +} + +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + reactivity.pauseTracking(); + const reset = setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + reset(); + reactivity.resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } +} +const createHook = (lifecycle) => (hook, target = currentInstance) => { + if (!isInSSRComponentSetup || lifecycle === "sp") { + injectHook(lifecycle, (...args) => hook(...args), target); + } +}; +const onBeforeMount = createHook("bm"); +const onMounted = createHook("m"); +const onBeforeUpdate = createHook( + "bu" +); +const onUpdated = createHook("u"); +const onBeforeUnmount = createHook( + "bum" +); +const onUnmounted = createHook("um"); +const onServerPrefetch = createHook( + "sp" +); +const onRenderTriggered = createHook("rtg"); +const onRenderTracked = createHook("rtc"); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} + +const COMPONENTS = "components"; +const DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (shared.isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + ); + if (selfName && (selfName === name || selfName === shared.camelize(name) || selfName === shared.capitalize(shared.camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + return res; + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[shared.camelize(name)] || registry[shared.capitalize(shared.camelize(name))]); +} + +function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + const sourceIsArray = shared.isArray(source); + if (sourceIsArray || shared.isString(source)) { + const sourceIsReactiveArray = sourceIsArray && reactivity.isReactive(source); + let needsWrap = false; + let isReadonlySource = false; + if (sourceIsReactiveArray) { + needsWrap = !reactivity.isShallow(source); + isReadonlySource = reactivity.isReadonly(source); + source = reactivity.shallowReadArray(source); + } + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem( + needsWrap ? isReadonlySource ? reactivity.toReadonly(reactivity.toReactive(source[i])) : reactivity.toReactive(source[i]) : source[i], + i, + void 0, + cached && cached[i] + ); + } + } else if (typeof source === "number") { + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (shared.isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; +} + +function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (shared.isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; +} + +function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) { + if (name !== "default") props.name = name; + return openBlock(), createBlock( + Fragment, + null, + [createVNode("slot", props, fallback && fallback())], + 64 + ); + } + let slot = slots[name]; + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key; + const rendered = createBlock( + Fragment, + { + key: (slotKey && !shared.isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content + (!validSlotContent && fallback ? "_fb" : "") + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) return true; + if (child.type === Comment) return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} + +function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : shared.toHandlerKey(key)] = obj[key]; + } + return ret; +} + +const getPublicInstance = (i) => { + if (!i) return null; + if (isStatefulComponent(i)) return getComponentPublicInstance(i); + return getPublicInstance(i.parent); +}; +const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ shared.extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => i.props, + $attrs: (i) => i.attrs, + $slots: (i) => i.slots, + $refs: (i) => i.refs, + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $host: (i) => i.ce, + $emit: (i) => i.emit, + $options: (i) => resolveMergedOptions(i) , + $forceUpdate: (i) => i.f || (i.f = () => { + queueJob(i.update); + }), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => instanceWatch.bind(i) + }) +); +const hasSetupBinding = (state, key) => state !== shared.EMPTY_OBJ && !state.__isScriptSetup && shared.hasOwn(state, key); +const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + if (key === "__v_skip") { + return true; + } + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } else if (data !== shared.EMPTY_OBJ && shared.hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && shared.hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } else if (ctx !== shared.EMPTY_OBJ && shared.hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if (shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + reactivity.track(instance.attrs, "get", ""); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== shared.EMPTY_OBJ && shared.hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, shared.hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else ; + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (data !== shared.EMPTY_OBJ && shared.hasOwn(data, key)) { + data[key] = value; + return true; + } else if (shared.hasOwn(instance.props, key)) { + return false; + } + if (key[0] === "$" && key.slice(1) in instance) { + return false; + } else { + { + ctx[key] = value; + } + } + return true; + }, + has({ + _: { data, setupState, accessCache, ctx, appContext, propsOptions } + }, key) { + let normalizedProps; + return !!accessCache[key] || data !== shared.EMPTY_OBJ && shared.hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && shared.hasOwn(normalizedProps, key) || shared.hasOwn(ctx, key) || shared.hasOwn(publicPropertiesMap, key) || shared.hasOwn(appContext.config.globalProperties, key); + }, + defineProperty(target, key, descriptor) { + if (descriptor.get != null) { + target._.accessCache[key] = 0; + } else if (shared.hasOwn(descriptor, "value")) { + this.set(target, key, descriptor.value, null); + } + return Reflect.defineProperty(target, key, descriptor); + } +}; +const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ shared.extend({}, PublicInstanceProxyHandlers, { + get(target, key) { + if (key === Symbol.unscopables) { + return; + } + return PublicInstanceProxyHandlers.get(target, key, target); + }, + has(_, key) { + const has = key[0] !== "_" && !shared.isGloballyAllowed(key); + return has; + } +}); + +function defineProps() { + return null; +} +function defineEmits() { + return null; +} +function defineExpose(exposed) { +} +function defineOptions(options) { +} +function defineSlots() { + return null; +} +function defineModel() { +} +function withDefaults(props, defaults) { + return null; +} +function useSlots() { + return getContext().slots; +} +function useAttrs() { + return getContext().attrs; +} +function getContext(calledFunctionName) { + const i = getCurrentInstance(); + return i.setupContext || (i.setupContext = createSetupContext(i)); +} +function normalizePropsOrEmits(props) { + return shared.isArray(props) ? props.reduce( + (normalized, p) => (normalized[p] = null, normalized), + {} + ) : props; +} +function mergeDefaults(raw, defaults) { + const props = normalizePropsOrEmits(raw); + for (const key in defaults) { + if (key.startsWith("__skip")) continue; + let opt = props[key]; + if (opt) { + if (shared.isArray(opt) || shared.isFunction(opt)) { + opt = props[key] = { type: opt, default: defaults[key] }; + } else { + opt.default = defaults[key]; + } + } else if (opt === null) { + opt = props[key] = { default: defaults[key] }; + } else ; + if (opt && defaults[`__skip_${key}`]) { + opt.skipFactory = true; + } + } + return props; +} +function mergeModels(a, b) { + if (!a || !b) return a || b; + if (shared.isArray(a) && shared.isArray(b)) return a.concat(b); + return shared.extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b)); +} +function createPropsRestProxy(props, excludedKeys) { + const ret = {}; + for (const key in props) { + if (!excludedKeys.includes(key)) { + Object.defineProperty(ret, key, { + enumerable: true, + get: () => props[key] + }); + } + } + return ret; +} +function withAsyncContext(getAwaitable) { + const ctx = getCurrentInstance(); + let awaitable = getAwaitable(); + unsetCurrentInstance(); + if (shared.isPromise(awaitable)) { + awaitable = awaitable.catch((e) => { + setCurrentInstance(ctx); + throw e; + }); + } + return [awaitable, () => setCurrentInstance(ctx)]; +} + +let shouldCacheAccess = true; +function applyOptions(instance) { + const options = resolveMergedOptions(instance); + const publicThis = instance.proxy; + const ctx = instance.ctx; + shouldCacheAccess = false; + if (options.beforeCreate) { + callHook(options.beforeCreate, instance, "bc"); + } + const { + // state + data: dataOptions, + computed: computedOptions, + methods, + watch: watchOptions, + provide: provideOptions, + inject: injectOptions, + // lifecycle + created, + beforeMount, + mounted, + beforeUpdate, + updated, + activated, + deactivated, + beforeDestroy, + beforeUnmount, + destroyed, + unmounted, + render, + renderTracked, + renderTriggered, + errorCaptured, + serverPrefetch, + // public API + expose, + inheritAttrs, + // assets + components, + directives, + filters + } = options; + const checkDuplicateProperties = null; + if (injectOptions) { + resolveInjections(injectOptions, ctx, checkDuplicateProperties); + } + if (methods) { + for (const key in methods) { + const methodHandler = methods[key]; + if (shared.isFunction(methodHandler)) { + { + ctx[key] = methodHandler.bind(publicThis); + } + } + } + } + if (dataOptions) { + const data = dataOptions.call(publicThis, publicThis); + if (!shared.isObject(data)) ; else { + instance.data = reactivity.reactive(data); + } + } + shouldCacheAccess = true; + if (computedOptions) { + for (const key in computedOptions) { + const opt = computedOptions[key]; + const get = shared.isFunction(opt) ? opt.bind(publicThis, publicThis) : shared.isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : shared.NOOP; + const set = !shared.isFunction(opt) && shared.isFunction(opt.set) ? opt.set.bind(publicThis) : shared.NOOP; + const c = computed({ + get, + set + }); + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => c.value, + set: (v) => c.value = v + }); + } + } + if (watchOptions) { + for (const key in watchOptions) { + createWatcher(watchOptions[key], ctx, publicThis, key); + } + } + if (provideOptions) { + const provides = shared.isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions; + Reflect.ownKeys(provides).forEach((key) => { + provide(key, provides[key]); + }); + } + if (created) { + callHook(created, instance, "c"); + } + function registerLifecycleHook(register, hook) { + if (shared.isArray(hook)) { + hook.forEach((_hook) => register(_hook.bind(publicThis))); + } else if (hook) { + register(hook.bind(publicThis)); + } + } + registerLifecycleHook(onBeforeMount, beforeMount); + registerLifecycleHook(onMounted, mounted); + registerLifecycleHook(onBeforeUpdate, beforeUpdate); + registerLifecycleHook(onUpdated, updated); + registerLifecycleHook(onActivated, activated); + registerLifecycleHook(onDeactivated, deactivated); + registerLifecycleHook(onErrorCaptured, errorCaptured); + registerLifecycleHook(onRenderTracked, renderTracked); + registerLifecycleHook(onRenderTriggered, renderTriggered); + registerLifecycleHook(onBeforeUnmount, beforeUnmount); + registerLifecycleHook(onUnmounted, unmounted); + registerLifecycleHook(onServerPrefetch, serverPrefetch); + if (shared.isArray(expose)) { + if (expose.length) { + const exposed = instance.exposed || (instance.exposed = {}); + expose.forEach((key) => { + Object.defineProperty(exposed, key, { + get: () => publicThis[key], + set: (val) => publicThis[key] = val, + enumerable: true + }); + }); + } else if (!instance.exposed) { + instance.exposed = {}; + } + } + if (render && instance.render === shared.NOOP) { + instance.render = render; + } + if (inheritAttrs != null) { + instance.inheritAttrs = inheritAttrs; + } + if (components) instance.components = components; + if (directives) instance.directives = directives; + if (serverPrefetch) { + markAsyncBoundary(instance); + } +} +function resolveInjections(injectOptions, ctx, checkDuplicateProperties = shared.NOOP) { + if (shared.isArray(injectOptions)) { + injectOptions = normalizeInject(injectOptions); + } + for (const key in injectOptions) { + const opt = injectOptions[key]; + let injected; + if (shared.isObject(opt)) { + if ("default" in opt) { + injected = inject( + opt.from || key, + opt.default, + true + ); + } else { + injected = inject(opt.from || key); + } + } else { + injected = inject(opt); + } + if (reactivity.isRef(injected)) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => injected.value, + set: (v) => injected.value = v + }); + } else { + ctx[key] = injected; + } + } +} +function callHook(hook, instance, type) { + callWithAsyncErrorHandling( + shared.isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy), + instance, + type + ); +} +function createWatcher(raw, ctx, publicThis, key) { + let getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; + if (shared.isString(raw)) { + const handler = ctx[raw]; + if (shared.isFunction(handler)) { + { + watch(getter, handler); + } + } + } else if (shared.isFunction(raw)) { + { + watch(getter, raw.bind(publicThis)); + } + } else if (shared.isObject(raw)) { + if (shared.isArray(raw)) { + raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); + } else { + const handler = shared.isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; + if (shared.isFunction(handler)) { + watch(getter, handler, raw); + } + } + } else ; +} +function resolveMergedOptions(instance) { + const base = instance.type; + const { mixins, extends: extendsOptions } = base; + const { + mixins: globalMixins, + optionsCache: cache, + config: { optionMergeStrategies } + } = instance.appContext; + const cached = cache.get(base); + let resolved; + if (cached) { + resolved = cached; + } else if (!globalMixins.length && !mixins && !extendsOptions) { + { + resolved = base; + } + } else { + resolved = {}; + if (globalMixins.length) { + globalMixins.forEach( + (m) => mergeOptions(resolved, m, optionMergeStrategies, true) + ); + } + mergeOptions(resolved, base, optionMergeStrategies); + } + if (shared.isObject(base)) { + cache.set(base, resolved); + } + return resolved; +} +function mergeOptions(to, from, strats, asMixin = false) { + const { mixins, extends: extendsOptions } = from; + if (extendsOptions) { + mergeOptions(to, extendsOptions, strats, true); + } + if (mixins) { + mixins.forEach( + (m) => mergeOptions(to, m, strats, true) + ); + } + for (const key in from) { + if (asMixin && key === "expose") ; else { + const strat = internalOptionMergeStrats[key] || strats && strats[key]; + to[key] = strat ? strat(to[key], from[key]) : from[key]; + } + } + return to; +} +const internalOptionMergeStrats = { + data: mergeDataFn, + props: mergeEmitsOrPropsOptions, + emits: mergeEmitsOrPropsOptions, + // objects + methods: mergeObjectOptions, + computed: mergeObjectOptions, + // lifecycle + beforeCreate: mergeAsArray, + created: mergeAsArray, + beforeMount: mergeAsArray, + mounted: mergeAsArray, + beforeUpdate: mergeAsArray, + updated: mergeAsArray, + beforeDestroy: mergeAsArray, + beforeUnmount: mergeAsArray, + destroyed: mergeAsArray, + unmounted: mergeAsArray, + activated: mergeAsArray, + deactivated: mergeAsArray, + errorCaptured: mergeAsArray, + serverPrefetch: mergeAsArray, + // assets + components: mergeObjectOptions, + directives: mergeObjectOptions, + // watch + watch: mergeWatchOptions, + // provide / inject + provide: mergeDataFn, + inject: mergeInject +}; +function mergeDataFn(to, from) { + if (!from) { + return to; + } + if (!to) { + return from; + } + return function mergedDataFn() { + return (shared.extend)( + shared.isFunction(to) ? to.call(this, this) : to, + shared.isFunction(from) ? from.call(this, this) : from + ); + }; +} +function mergeInject(to, from) { + return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); +} +function normalizeInject(raw) { + if (shared.isArray(raw)) { + const res = {}; + for (let i = 0; i < raw.length; i++) { + res[raw[i]] = raw[i]; + } + return res; + } + return raw; +} +function mergeAsArray(to, from) { + return to ? [...new Set([].concat(to, from))] : from; +} +function mergeObjectOptions(to, from) { + return to ? shared.extend(/* @__PURE__ */ Object.create(null), to, from) : from; +} +function mergeEmitsOrPropsOptions(to, from) { + if (to) { + if (shared.isArray(to) && shared.isArray(from)) { + return [.../* @__PURE__ */ new Set([...to, ...from])]; + } + return shared.extend( + /* @__PURE__ */ Object.create(null), + normalizePropsOrEmits(to), + normalizePropsOrEmits(from != null ? from : {}) + ); + } else { + return from; + } +} +function mergeWatchOptions(to, from) { + if (!to) return from; + if (!from) return to; + const merged = shared.extend(/* @__PURE__ */ Object.create(null), to); + for (const key in from) { + merged[key] = mergeAsArray(to[key], from[key]); + } + return merged; +} + +function createAppContext() { + return { + app: null, + config: { + isNativeTag: shared.NO, + performance: false, + globalProperties: {}, + optionMergeStrategies: {}, + errorHandler: void 0, + warnHandler: void 0, + compilerOptions: {} + }, + mixins: [], + components: {}, + directives: {}, + provides: /* @__PURE__ */ Object.create(null), + optionsCache: /* @__PURE__ */ new WeakMap(), + propsCache: /* @__PURE__ */ new WeakMap(), + emitsCache: /* @__PURE__ */ new WeakMap() + }; +} +let uid$1 = 0; +function createAppAPI(render, hydrate) { + return function createApp(rootComponent, rootProps = null) { + if (!shared.isFunction(rootComponent)) { + rootComponent = shared.extend({}, rootComponent); + } + if (rootProps != null && !shared.isObject(rootProps)) { + rootProps = null; + } + const context = createAppContext(); + const installedPlugins = /* @__PURE__ */ new WeakSet(); + const pluginCleanupFns = []; + let isMounted = false; + const app = context.app = { + _uid: uid$1++, + _component: rootComponent, + _props: rootProps, + _container: null, + _context: context, + _instance: null, + version, + get config() { + return context.config; + }, + set config(v) { + }, + use(plugin, ...options) { + if (installedPlugins.has(plugin)) ; else if (plugin && shared.isFunction(plugin.install)) { + installedPlugins.add(plugin); + plugin.install(app, ...options); + } else if (shared.isFunction(plugin)) { + installedPlugins.add(plugin); + plugin(app, ...options); + } else ; + return app; + }, + mixin(mixin) { + { + if (!context.mixins.includes(mixin)) { + context.mixins.push(mixin); + } + } + return app; + }, + component(name, component) { + if (!component) { + return context.components[name]; + } + context.components[name] = component; + return app; + }, + directive(name, directive) { + if (!directive) { + return context.directives[name]; + } + context.directives[name] = directive; + return app; + }, + mount(rootContainer, isHydrate, namespace) { + if (!isMounted) { + const vnode = app._ceVNode || createVNode(rootComponent, rootProps); + vnode.appContext = context; + if (namespace === true) { + namespace = "svg"; + } else if (namespace === false) { + namespace = void 0; + } + if (isHydrate && hydrate) { + hydrate(vnode, rootContainer); + } else { + render(vnode, rootContainer, namespace); + } + isMounted = true; + app._container = rootContainer; + rootContainer.__vue_app__ = app; + return getComponentPublicInstance(vnode.component); + } + }, + onUnmount(cleanupFn) { + pluginCleanupFns.push(cleanupFn); + }, + unmount() { + if (isMounted) { + callWithAsyncErrorHandling( + pluginCleanupFns, + app._instance, + 16 + ); + render(null, app._container); + delete app._container.__vue_app__; + } + }, + provide(key, value) { + context.provides[key] = value; + return app; + }, + runWithContext(fn) { + const lastApp = currentApp; + currentApp = app; + try { + return fn(); + } finally { + currentApp = lastApp; + } + } + }; + return app; + }; +} +let currentApp = null; + +function provide(key, value) { + if (!currentInstance) ; else { + let provides = currentInstance.provides; + const parentProvides = currentInstance.parent && currentInstance.parent.provides; + if (parentProvides === provides) { + provides = currentInstance.provides = Object.create(parentProvides); + } + provides[key] = value; + } +} +function inject(key, defaultValue, treatDefaultAsFactory = false) { + const instance = getCurrentInstance(); + if (instance || currentApp) { + let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0; + if (provides && key in provides) { + return provides[key]; + } else if (arguments.length > 1) { + return treatDefaultAsFactory && shared.isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; + } else ; + } +} +function hasInjectionContext() { + return !!(getCurrentInstance() || currentApp); +} + +const internalObjectProto = {}; +const createInternalObject = () => Object.create(internalObjectProto); +const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto; + +function initProps(instance, rawProps, isStateful, isSSR = false) { + const props = {}; + const attrs = createInternalObject(); + instance.propsDefaults = /* @__PURE__ */ Object.create(null); + setFullProps(instance, rawProps, props, attrs); + for (const key in instance.propsOptions[0]) { + if (!(key in props)) { + props[key] = void 0; + } + } + if (isStateful) { + instance.props = isSSR ? props : reactivity.shallowReactive(props); + } else { + if (!instance.type.props) { + instance.props = attrs; + } else { + instance.props = props; + } + } + instance.attrs = attrs; +} +function updateProps(instance, rawProps, rawPrevProps, optimized) { + const { + props, + attrs, + vnode: { patchFlag } + } = instance; + const rawCurrentProps = reactivity.toRaw(props); + const [options] = instance.propsOptions; + let hasAttrsChanged = false; + if ( + // always force full diff in dev + // - #1942 if hmr is enabled with sfc component + // - vite#872 non-sfc component used by sfc component + (optimized || patchFlag > 0) && !(patchFlag & 16) + ) { + if (patchFlag & 8) { + const propsToUpdate = instance.vnode.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + let key = propsToUpdate[i]; + if (isEmitListener(instance.emitsOptions, key)) { + continue; + } + const value = rawProps[key]; + if (options) { + if (shared.hasOwn(attrs, key)) { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } else { + const camelizedKey = shared.camelize(key); + props[camelizedKey] = resolvePropValue( + options, + rawCurrentProps, + camelizedKey, + value, + instance, + false + ); + } + } else { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + } else { + if (setFullProps(instance, rawProps, props, attrs)) { + hasAttrsChanged = true; + } + let kebabKey; + for (const key in rawCurrentProps) { + if (!rawProps || // for camelCase + !shared.hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case + // and converted to camelCase (#955) + ((kebabKey = shared.hyphenate(key)) === key || !shared.hasOwn(rawProps, kebabKey))) { + if (options) { + if (rawPrevProps && // for camelCase + (rawPrevProps[key] !== void 0 || // for kebab-case + rawPrevProps[kebabKey] !== void 0)) { + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + void 0, + instance, + true + ); + } + } else { + delete props[key]; + } + } + } + if (attrs !== rawCurrentProps) { + for (const key in attrs) { + if (!rawProps || !shared.hasOwn(rawProps, key) && true) { + delete attrs[key]; + hasAttrsChanged = true; + } + } + } + } + if (hasAttrsChanged) { + reactivity.trigger(instance.attrs, "set", ""); + } +} +function setFullProps(instance, rawProps, props, attrs) { + const [options, needCastKeys] = instance.propsOptions; + let hasAttrsChanged = false; + let rawCastValues; + if (rawProps) { + for (let key in rawProps) { + if (shared.isReservedProp(key)) { + continue; + } + const value = rawProps[key]; + let camelKey; + if (options && shared.hasOwn(options, camelKey = shared.camelize(key))) { + if (!needCastKeys || !needCastKeys.includes(camelKey)) { + props[camelKey] = value; + } else { + (rawCastValues || (rawCastValues = {}))[camelKey] = value; + } + } else if (!isEmitListener(instance.emitsOptions, key)) { + if (!(key in attrs) || value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + if (needCastKeys) { + const rawCurrentProps = reactivity.toRaw(props); + const castValues = rawCastValues || shared.EMPTY_OBJ; + for (let i = 0; i < needCastKeys.length; i++) { + const key = needCastKeys[i]; + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + castValues[key], + instance, + !shared.hasOwn(castValues, key) + ); + } + } + return hasAttrsChanged; +} +function resolvePropValue(options, props, key, value, instance, isAbsent) { + const opt = options[key]; + if (opt != null) { + const hasDefault = shared.hasOwn(opt, "default"); + if (hasDefault && value === void 0) { + const defaultValue = opt.default; + if (opt.type !== Function && !opt.skipFactory && shared.isFunction(defaultValue)) { + const { propsDefaults } = instance; + if (key in propsDefaults) { + value = propsDefaults[key]; + } else { + const reset = setCurrentInstance(instance); + value = propsDefaults[key] = defaultValue.call( + null, + props + ); + reset(); + } + } else { + value = defaultValue; + } + if (instance.ce) { + instance.ce._setProp(key, value); + } + } + if (opt[0 /* shouldCast */]) { + if (isAbsent && !hasDefault) { + value = false; + } else if (opt[1 /* shouldCastTrue */] && (value === "" || value === shared.hyphenate(key))) { + value = true; + } + } + } + return value; +} +const mixinPropsCache = /* @__PURE__ */ new WeakMap(); +function normalizePropsOptions(comp, appContext, asMixin = false) { + const cache = asMixin ? mixinPropsCache : appContext.propsCache; + const cached = cache.get(comp); + if (cached) { + return cached; + } + const raw = comp.props; + const normalized = {}; + const needCastKeys = []; + let hasExtends = false; + if (!shared.isFunction(comp)) { + const extendProps = (raw2) => { + hasExtends = true; + const [props, keys] = normalizePropsOptions(raw2, appContext, true); + shared.extend(normalized, props); + if (keys) needCastKeys.push(...keys); + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendProps); + } + if (comp.extends) { + extendProps(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendProps); + } + } + if (!raw && !hasExtends) { + if (shared.isObject(comp)) { + cache.set(comp, shared.EMPTY_ARR); + } + return shared.EMPTY_ARR; + } + if (shared.isArray(raw)) { + for (let i = 0; i < raw.length; i++) { + const normalizedKey = shared.camelize(raw[i]); + if (validatePropName(normalizedKey)) { + normalized[normalizedKey] = shared.EMPTY_OBJ; + } + } + } else if (raw) { + for (const key in raw) { + const normalizedKey = shared.camelize(key); + if (validatePropName(normalizedKey)) { + const opt = raw[key]; + const prop = normalized[normalizedKey] = shared.isArray(opt) || shared.isFunction(opt) ? { type: opt } : shared.extend({}, opt); + const propType = prop.type; + let shouldCast = false; + let shouldCastTrue = true; + if (shared.isArray(propType)) { + for (let index = 0; index < propType.length; ++index) { + const type = propType[index]; + const typeName = shared.isFunction(type) && type.name; + if (typeName === "Boolean") { + shouldCast = true; + break; + } else if (typeName === "String") { + shouldCastTrue = false; + } + } + } else { + shouldCast = shared.isFunction(propType) && propType.name === "Boolean"; + } + prop[0 /* shouldCast */] = shouldCast; + prop[1 /* shouldCastTrue */] = shouldCastTrue; + if (shouldCast || shared.hasOwn(prop, "default")) { + needCastKeys.push(normalizedKey); + } + } + } + } + const res = [normalized, needCastKeys]; + if (shared.isObject(comp)) { + cache.set(comp, res); + } + return res; +} +function validatePropName(key) { + if (key[0] !== "$" && !shared.isReservedProp(key)) { + return true; + } + return false; +} + +const isInternalKey = (key) => key === "_" || key === "__" || key === "_ctx" || key === "$stable"; +const normalizeSlotValue = (value) => shared.isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)]; +const normalizeSlot = (key, rawSlot, ctx) => { + if (rawSlot._n) { + return rawSlot; + } + const normalized = withCtx((...args) => { + if (false) ; + return normalizeSlotValue(rawSlot(...args)); + }, ctx); + normalized._c = false; + return normalized; +}; +const normalizeObjectSlots = (rawSlots, slots, instance) => { + const ctx = rawSlots._ctx; + for (const key in rawSlots) { + if (isInternalKey(key)) continue; + const value = rawSlots[key]; + if (shared.isFunction(value)) { + slots[key] = normalizeSlot(key, value, ctx); + } else if (value != null) { + const normalized = normalizeSlotValue(value); + slots[key] = () => normalized; + } + } +}; +const normalizeVNodeSlots = (instance, children) => { + const normalized = normalizeSlotValue(children); + instance.slots.default = () => normalized; +}; +const assignSlots = (slots, children, optimized) => { + for (const key in children) { + if (optimized || !isInternalKey(key)) { + slots[key] = children[key]; + } + } +}; +const initSlots = (instance, children, optimized) => { + const slots = instance.slots = createInternalObject(); + if (instance.vnode.shapeFlag & 32) { + const cacheIndexes = children.__; + if (cacheIndexes) shared.def(slots, "__", cacheIndexes, true); + const type = children._; + if (type) { + assignSlots(slots, children, optimized); + if (optimized) { + shared.def(slots, "_", type, true); + } + } else { + normalizeObjectSlots(children, slots); + } + } else if (children) { + normalizeVNodeSlots(instance, children); + } +}; +const updateSlots = (instance, children, optimized) => { + const { vnode, slots } = instance; + let needDeletionCheck = true; + let deletionComparisonTarget = shared.EMPTY_OBJ; + if (vnode.shapeFlag & 32) { + const type = children._; + if (type) { + if (optimized && type === 1) { + needDeletionCheck = false; + } else { + assignSlots(slots, children, optimized); + } + } else { + needDeletionCheck = !children.$stable; + normalizeObjectSlots(children, slots); + } + deletionComparisonTarget = children; + } else if (children) { + normalizeVNodeSlots(instance, children); + deletionComparisonTarget = { default: 1 }; + } + if (needDeletionCheck) { + for (const key in slots) { + if (!isInternalKey(key) && deletionComparisonTarget[key] == null) { + delete slots[key]; + } + } + } +}; + +const queuePostRenderEffect = queueEffectWithSuspense ; +function createRenderer(options) { + return baseCreateRenderer(options); +} +function createHydrationRenderer(options) { + return baseCreateRenderer(options, createHydrationFunctions); +} +function baseCreateRenderer(options, createHydrationFns) { + const target = shared.getGlobalThis(); + target.__VUE__ = true; + const { + insert: hostInsert, + remove: hostRemove, + patchProp: hostPatchProp, + createElement: hostCreateElement, + createText: hostCreateText, + createComment: hostCreateComment, + setText: hostSetText, + setElementText: hostSetElementText, + parentNode: hostParentNode, + nextSibling: hostNextSibling, + setScopeId: hostSetScopeId = shared.NOOP, + insertStaticContent: hostInsertStaticContent + } = options; + const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!n2.dynamicChildren) => { + if (n1 === n2) { + return; + } + if (n1 && !isSameVNodeType(n1, n2)) { + anchor = getNextHostNode(n1); + unmount(n1, parentComponent, parentSuspense, true); + n1 = null; + } + if (n2.patchFlag === -2) { + optimized = false; + n2.dynamicChildren = null; + } + const { type, ref, shapeFlag } = n2; + switch (type) { + case Text: + processText(n1, n2, container, anchor); + break; + case Comment: + processCommentNode(n1, n2, container, anchor); + break; + case Static: + if (n1 == null) { + mountStaticNode(n2, container, anchor, namespace); + } + break; + case Fragment: + processFragment( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + break; + default: + if (shapeFlag & 1) { + processElement( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 6) { + processComponent( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 64) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + } else if (shapeFlag & 128) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + } else ; + } + if (ref != null && parentComponent) { + setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2); + } else if (ref == null && n1 && n1.ref != null) { + setRef(n1.ref, null, parentSuspense, n1, true); + } + }; + const processText = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateText(n2.children), + container, + anchor + ); + } else { + const el = n2.el = n1.el; + if (n2.children !== n1.children) { + hostSetText(el, n2.children); + } + } + }; + const processCommentNode = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateComment(n2.children || ""), + container, + anchor + ); + } else { + n2.el = n1.el; + } + }; + const mountStaticNode = (n2, container, anchor, namespace) => { + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + namespace, + n2.el, + n2.anchor + ); + }; + const moveStaticNode = ({ el, anchor }, container, nextSibling) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostInsert(el, container, nextSibling); + el = next; + } + hostInsert(anchor, container, nextSibling); + }; + const removeStaticNode = ({ el, anchor }) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostRemove(el); + el = next; + } + hostRemove(anchor); + }; + const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + if (n2.type === "svg") { + namespace = "svg"; + } else if (n2.type === "math") { + namespace = "mathml"; + } + if (n1 == null) { + mountElement( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + patchElement( + n1, + n2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + let el; + let vnodeHook; + const { props, shapeFlag, transition, dirs } = vnode; + el = vnode.el = hostCreateElement( + vnode.type, + namespace, + props && props.is, + props + ); + if (shapeFlag & 8) { + hostSetElementText(el, vnode.children); + } else if (shapeFlag & 16) { + mountChildren( + vnode.children, + el, + null, + parentComponent, + parentSuspense, + resolveChildrenNamespace(vnode, namespace), + slotScopeIds, + optimized + ); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent); + if (props) { + for (const key in props) { + if (key !== "value" && !shared.isReservedProp(key)) { + hostPatchProp(el, key, null, props[key], namespace, parentComponent); + } + } + if ("value" in props) { + hostPatchProp(el, "value", null, props.value, namespace); + } + if (vnodeHook = props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + const needCallTransitionHooks = needTransition(parentSuspense, transition); + if (needCallTransitionHooks) { + transition.beforeEnter(el); + } + hostInsert(el, container, anchor); + if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + }; + const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { + if (scopeId) { + hostSetScopeId(el, scopeId); + } + if (slotScopeIds) { + for (let i = 0; i < slotScopeIds.length; i++) { + hostSetScopeId(el, slotScopeIds[i]); + } + } + if (parentComponent) { + let subTree = parentComponent.subTree; + if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) { + const parentVNode = parentComponent.vnode; + setScopeId( + el, + parentVNode, + parentVNode.scopeId, + parentVNode.slotScopeIds, + parentComponent.parent + ); + } + } + }; + const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => { + for (let i = start; i < children.length; i++) { + const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]); + patch( + null, + child, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + const el = n2.el = n1.el; + let { patchFlag, dynamicChildren, dirs } = n2; + patchFlag |= n1.patchFlag & 16; + const oldProps = n1.props || shared.EMPTY_OBJ; + const newProps = n2.props || shared.EMPTY_OBJ; + let vnodeHook; + parentComponent && toggleRecurse(parentComponent, false); + if (vnodeHook = newProps.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + } + if (dirs) { + invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate"); + } + parentComponent && toggleRecurse(parentComponent, true); + if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) { + hostSetElementText(el, ""); + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + el, + parentComponent, + parentSuspense, + resolveChildrenNamespace(n2, namespace), + slotScopeIds + ); + } else if (!optimized) { + patchChildren( + n1, + n2, + el, + null, + parentComponent, + parentSuspense, + resolveChildrenNamespace(n2, namespace), + slotScopeIds, + false + ); + } + if (patchFlag > 0) { + if (patchFlag & 16) { + patchProps(el, oldProps, newProps, parentComponent, namespace); + } else { + if (patchFlag & 2) { + if (oldProps.class !== newProps.class) { + hostPatchProp(el, "class", null, newProps.class, namespace); + } + } + if (patchFlag & 4) { + hostPatchProp(el, "style", oldProps.style, newProps.style, namespace); + } + if (patchFlag & 8) { + const propsToUpdate = n2.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + const key = propsToUpdate[i]; + const prev = oldProps[key]; + const next = newProps[key]; + if (next !== prev || key === "value") { + hostPatchProp(el, key, prev, next, namespace, parentComponent); + } + } + } + } + if (patchFlag & 1) { + if (n1.children !== n2.children) { + hostSetElementText(el, n2.children); + } + } + } else if (!optimized && dynamicChildren == null) { + patchProps(el, oldProps, newProps, parentComponent, namespace); + } + if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated"); + }, parentSuspense); + } + }; + const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => { + for (let i = 0; i < newChildren.length; i++) { + const oldVNode = oldChildren[i]; + const newVNode = newChildren[i]; + const container = ( + // oldVNode may be an errored async setup() component inside Suspense + // which will not have a mounted element + oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent + // of the Fragment itself so it can move its children. + (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement + // which also requires the correct parent container + !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything. + oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : ( + // In other cases, the parent container is not actually used so we + // just pass the block element here to avoid a DOM parentNode call. + fallbackContainer + ) + ); + patch( + oldVNode, + newVNode, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + true + ); + } + }; + const patchProps = (el, oldProps, newProps, parentComponent, namespace) => { + if (oldProps !== newProps) { + if (oldProps !== shared.EMPTY_OBJ) { + for (const key in oldProps) { + if (!shared.isReservedProp(key) && !(key in newProps)) { + hostPatchProp( + el, + key, + oldProps[key], + null, + namespace, + parentComponent + ); + } + } + } + for (const key in newProps) { + if (shared.isReservedProp(key)) continue; + const next = newProps[key]; + const prev = oldProps[key]; + if (next !== prev && key !== "value") { + hostPatchProp(el, key, prev, next, namespace, parentComponent); + } + } + if ("value" in newProps) { + hostPatchProp(el, "value", oldProps.value, newProps.value, namespace); + } + } + }; + const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(""); + const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(""); + let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + if (n1 == null) { + hostInsert(fragmentStartAnchor, container, anchor); + hostInsert(fragmentEndAnchor, container, anchor); + mountChildren( + // #10007 + // such fragment like `<></>` will be compiled into + // a fragment which doesn't have a children. + // In this case fallback to an empty array + n2.children || [], + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result + // of renderSlot() with no valid children + n1.dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + container, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + if ( + // #2080 if the stable fragment has a key, it's a <template v-for> that may + // get moved around. Make sure all root level vnodes inherit el. + // #2134 or if it's a component root, it may also get moved around + // as the component is being moved. + n2.key != null || parentComponent && n2 === parentComponent.subTree + ) { + traverseStaticChildren( + n1, + n2, + true + /* shallow */ + ); + } + } else { + patchChildren( + n1, + n2, + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + } + }; + const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + n2.slotScopeIds = slotScopeIds; + if (n1 == null) { + if (n2.shapeFlag & 512) { + parentComponent.ctx.activate( + n2, + container, + anchor, + namespace, + optimized + ); + } else { + mountComponent( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + optimized + ); + } + } else { + updateComponent(n1, n2, optimized); + } + }; + const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => { + const instance = (initialVNode.component = createComponentInstance( + initialVNode, + parentComponent, + parentSuspense + )); + if (isKeepAlive(initialVNode)) { + instance.ctx.renderer = internals; + } + { + setupComponent(instance, false, optimized); + } + if (instance.asyncDep) { + parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized); + if (!initialVNode.el) { + const placeholder = instance.subTree = createVNode(Comment); + processCommentNode(null, placeholder, container, anchor); + initialVNode.placeholder = placeholder.el; + } + } else { + setupRenderEffect( + instance, + initialVNode, + container, + anchor, + parentSuspense, + namespace, + optimized + ); + } + }; + const updateComponent = (n1, n2, optimized) => { + const instance = n2.component = n1.component; + if (shouldUpdateComponent(n1, n2, optimized)) { + if (instance.asyncDep && !instance.asyncResolved) { + updateComponentPreRender(instance, n2, optimized); + return; + } else { + instance.next = n2; + instance.update(); + } + } else { + n2.el = n1.el; + instance.vnode = n2; + } + }; + const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => { + const componentUpdateFn = () => { + if (!instance.isMounted) { + let vnodeHook; + const { el, props } = initialVNode; + const { bm, m, parent, root, type } = instance; + const isAsyncWrapperVNode = isAsyncWrapper(initialVNode); + toggleRecurse(instance, false); + if (bm) { + shared.invokeArrayFns(bm); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) { + invokeVNodeHook(vnodeHook, parent, initialVNode); + } + toggleRecurse(instance, true); + if (el && hydrateNode) { + const hydrateSubTree = () => { + instance.subTree = renderComponentRoot(instance); + hydrateNode( + el, + instance.subTree, + instance, + parentSuspense, + null + ); + }; + if (isAsyncWrapperVNode && type.__asyncHydrate) { + type.__asyncHydrate( + el, + instance, + hydrateSubTree + ); + } else { + hydrateSubTree(); + } + } else { + if (root.ce && // @ts-expect-error _def is private + root.ce._def.shadowRoot !== false) { + root.ce._injectChildStyle(type); + } + const subTree = instance.subTree = renderComponentRoot(instance); + patch( + null, + subTree, + container, + anchor, + instance, + parentSuspense, + namespace + ); + initialVNode.el = subTree.el; + } + if (m) { + queuePostRenderEffect(m, parentSuspense); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) { + const scopedInitialVNode = initialVNode; + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), + parentSuspense + ); + } + if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) { + instance.a && queuePostRenderEffect(instance.a, parentSuspense); + } + instance.isMounted = true; + initialVNode = container = anchor = null; + } else { + let { next, bu, u, parent, vnode } = instance; + { + const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance); + if (nonHydratedAsyncRoot) { + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } + nonHydratedAsyncRoot.asyncDep.then(() => { + if (!instance.isUnmounted) { + componentUpdateFn(); + } + }); + return; + } + } + let originNext = next; + let vnodeHook; + toggleRecurse(instance, false); + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } else { + next = vnode; + } + if (bu) { + shared.invokeArrayFns(bu); + } + if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parent, next, vnode); + } + toggleRecurse(instance, true); + const nextTree = renderComponentRoot(instance); + const prevTree = instance.subTree; + instance.subTree = nextTree; + patch( + prevTree, + nextTree, + // parent may have changed if it's in a teleport + hostParentNode(prevTree.el), + // anchor may have changed if it's in a fragment + getNextHostNode(prevTree), + instance, + parentSuspense, + namespace + ); + next.el = nextTree.el; + if (originNext === null) { + updateHOCHostEl(instance, nextTree.el); + } + if (u) { + queuePostRenderEffect(u, parentSuspense); + } + if (vnodeHook = next.props && next.props.onVnodeUpdated) { + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, next, vnode), + parentSuspense + ); + } + } + }; + instance.scope.on(); + const effect = instance.effect = new reactivity.ReactiveEffect(componentUpdateFn); + instance.scope.off(); + const update = instance.update = effect.run.bind(effect); + const job = instance.job = effect.runIfDirty.bind(effect); + job.i = instance; + job.id = instance.uid; + effect.scheduler = () => queueJob(job); + toggleRecurse(instance, true); + update(); + }; + const updateComponentPreRender = (instance, nextVNode, optimized) => { + nextVNode.component = instance; + const prevProps = instance.vnode.props; + instance.vnode = nextVNode; + instance.next = null; + updateProps(instance, nextVNode.props, prevProps, optimized); + updateSlots(instance, nextVNode.children, optimized); + reactivity.pauseTracking(); + flushPreFlushCbs(instance); + reactivity.resetTracking(); + }; + const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => { + const c1 = n1 && n1.children; + const prevShapeFlag = n1 ? n1.shapeFlag : 0; + const c2 = n2.children; + const { patchFlag, shapeFlag } = n2; + if (patchFlag > 0) { + if (patchFlag & 128) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + return; + } else if (patchFlag & 256) { + patchUnkeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + return; + } + } + if (shapeFlag & 8) { + if (prevShapeFlag & 16) { + unmountChildren(c1, parentComponent, parentSuspense); + } + if (c2 !== c1) { + hostSetElementText(container, c2); + } + } else { + if (prevShapeFlag & 16) { + if (shapeFlag & 16) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + unmountChildren(c1, parentComponent, parentSuspense, true); + } + } else { + if (prevShapeFlag & 8) { + hostSetElementText(container, ""); + } + if (shapeFlag & 16) { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + } + } + }; + const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + c1 = c1 || shared.EMPTY_ARR; + c2 = c2 || shared.EMPTY_ARR; + const oldLength = c1.length; + const newLength = c2.length; + const commonLength = Math.min(oldLength, newLength); + let i; + for (i = 0; i < commonLength; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + patch( + c1[i], + nextChild, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + if (oldLength > newLength) { + unmountChildren( + c1, + parentComponent, + parentSuspense, + true, + false, + commonLength + ); + } else { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + commonLength + ); + } + }; + const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + let i = 0; + const l2 = c2.length; + let e1 = c1.length - 1; + let e2 = l2 - 1; + while (i <= e1 && i <= e2) { + const n1 = c1[i]; + const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + break; + } + i++; + } + while (i <= e1 && i <= e2) { + const n1 = c1[e1]; + const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + break; + } + e1--; + e2--; + } + if (i > e1) { + if (i <= e2) { + const nextPos = e2 + 1; + const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor; + while (i <= e2) { + patch( + null, + c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + i++; + } + } + } else if (i > e2) { + while (i <= e1) { + unmount(c1[i], parentComponent, parentSuspense, true); + i++; + } + } else { + const s1 = i; + const s2 = i; + const keyToNewIndexMap = /* @__PURE__ */ new Map(); + for (i = s2; i <= e2; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (nextChild.key != null) { + keyToNewIndexMap.set(nextChild.key, i); + } + } + let j; + let patched = 0; + const toBePatched = e2 - s2 + 1; + let moved = false; + let maxNewIndexSoFar = 0; + const newIndexToOldIndexMap = new Array(toBePatched); + for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0; + for (i = s1; i <= e1; i++) { + const prevChild = c1[i]; + if (patched >= toBePatched) { + unmount(prevChild, parentComponent, parentSuspense, true); + continue; + } + let newIndex; + if (prevChild.key != null) { + newIndex = keyToNewIndexMap.get(prevChild.key); + } else { + for (j = s2; j <= e2; j++) { + if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) { + newIndex = j; + break; + } + } + } + if (newIndex === void 0) { + unmount(prevChild, parentComponent, parentSuspense, true); + } else { + newIndexToOldIndexMap[newIndex - s2] = i + 1; + if (newIndex >= maxNewIndexSoFar) { + maxNewIndexSoFar = newIndex; + } else { + moved = true; + } + patch( + prevChild, + c2[newIndex], + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + patched++; + } + } + const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : shared.EMPTY_ARR; + j = increasingNewIndexSequence.length - 1; + for (i = toBePatched - 1; i >= 0; i--) { + const nextIndex = s2 + i; + const nextChild = c2[nextIndex]; + const anchorVNode = c2[nextIndex + 1]; + const anchor = nextIndex + 1 < l2 ? ( + // #13559, fallback to el placeholder for unresolved async component + anchorVNode.el || anchorVNode.placeholder + ) : parentAnchor; + if (newIndexToOldIndexMap[i] === 0) { + patch( + null, + nextChild, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (moved) { + if (j < 0 || i !== increasingNewIndexSequence[j]) { + move(nextChild, container, anchor, 2); + } else { + j--; + } + } + } + } + }; + const move = (vnode, container, anchor, moveType, parentSuspense = null) => { + const { el, type, transition, children, shapeFlag } = vnode; + if (shapeFlag & 6) { + move(vnode.component.subTree, container, anchor, moveType); + return; + } + if (shapeFlag & 128) { + vnode.suspense.move(container, anchor, moveType); + return; + } + if (shapeFlag & 64) { + type.move(vnode, container, anchor, internals); + return; + } + if (type === Fragment) { + hostInsert(el, container, anchor); + for (let i = 0; i < children.length; i++) { + move(children[i], container, anchor, moveType); + } + hostInsert(vnode.anchor, container, anchor); + return; + } + if (type === Static) { + moveStaticNode(vnode, container, anchor); + return; + } + const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition; + if (needTransition2) { + if (moveType === 0) { + transition.beforeEnter(el); + hostInsert(el, container, anchor); + queuePostRenderEffect(() => transition.enter(el), parentSuspense); + } else { + const { leave, delayLeave, afterLeave } = transition; + const remove2 = () => { + if (vnode.ctx.isUnmounted) { + hostRemove(el); + } else { + hostInsert(el, container, anchor); + } + }; + const performLeave = () => { + leave(el, () => { + remove2(); + afterLeave && afterLeave(); + }); + }; + if (delayLeave) { + delayLeave(el, remove2, performLeave); + } else { + performLeave(); + } + } + } else { + hostInsert(el, container, anchor); + } + }; + const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => { + const { + type, + props, + ref, + children, + dynamicChildren, + shapeFlag, + patchFlag, + dirs, + cacheIndex + } = vnode; + if (patchFlag === -2) { + optimized = false; + } + if (ref != null) { + reactivity.pauseTracking(); + setRef(ref, null, parentSuspense, vnode, true); + reactivity.resetTracking(); + } + if (cacheIndex != null) { + parentComponent.renderCache[cacheIndex] = void 0; + } + if (shapeFlag & 256) { + parentComponent.ctx.deactivate(vnode); + return; + } + const shouldInvokeDirs = shapeFlag & 1 && dirs; + const shouldInvokeVnodeHook = !isAsyncWrapper(vnode); + let vnodeHook; + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + if (shapeFlag & 6) { + unmountComponent(vnode.component, parentSuspense, doRemove); + } else { + if (shapeFlag & 128) { + vnode.suspense.unmount(parentSuspense, doRemove); + return; + } + if (shouldInvokeDirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount"); + } + if (shapeFlag & 64) { + vnode.type.remove( + vnode, + parentComponent, + parentSuspense, + internals, + doRemove + ); + } else if (dynamicChildren && // #5154 + // when v-once is used inside a block, setBlockTracking(-1) marks the + // parent block with hasOnce: true + // so that it doesn't take the fast path during unmount - otherwise + // components nested in v-once are never unmounted. + !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments + (type !== Fragment || patchFlag > 0 && patchFlag & 64)) { + unmountChildren( + dynamicChildren, + parentComponent, + parentSuspense, + false, + true + ); + } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) { + unmountChildren(children, parentComponent, parentSuspense); + } + if (doRemove) { + remove(vnode); + } + } + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted"); + }, parentSuspense); + } + }; + const remove = (vnode) => { + const { type, el, anchor, transition } = vnode; + if (type === Fragment) { + { + removeFragment(el, anchor); + } + return; + } + if (type === Static) { + removeStaticNode(vnode); + return; + } + const performRemove = () => { + hostRemove(el); + if (transition && !transition.persisted && transition.afterLeave) { + transition.afterLeave(); + } + }; + if (vnode.shapeFlag & 1 && transition && !transition.persisted) { + const { leave, delayLeave } = transition; + const performLeave = () => leave(el, performRemove); + if (delayLeave) { + delayLeave(vnode.el, performRemove, performLeave); + } else { + performLeave(); + } + } else { + performRemove(); + } + }; + const removeFragment = (cur, end) => { + let next; + while (cur !== end) { + next = hostNextSibling(cur); + hostRemove(cur); + cur = next; + } + hostRemove(end); + }; + const unmountComponent = (instance, parentSuspense, doRemove) => { + const { + bum, + scope, + job, + subTree, + um, + m, + a, + parent, + slots: { __: slotCacheKeys } + } = instance; + invalidateMount(m); + invalidateMount(a); + if (bum) { + shared.invokeArrayFns(bum); + } + if (parent && shared.isArray(slotCacheKeys)) { + slotCacheKeys.forEach((v) => { + parent.renderCache[v] = void 0; + }); + } + scope.stop(); + if (job) { + job.flags |= 8; + unmount(subTree, instance, parentSuspense, doRemove); + } + if (um) { + queuePostRenderEffect(um, parentSuspense); + } + queuePostRenderEffect(() => { + instance.isUnmounted = true; + }, parentSuspense); + if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0) { + parentSuspense.resolve(); + } + } + }; + const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => { + for (let i = start; i < children.length; i++) { + unmount(children[i], parentComponent, parentSuspense, doRemove, optimized); + } + }; + const getNextHostNode = (vnode) => { + if (vnode.shapeFlag & 6) { + return getNextHostNode(vnode.component.subTree); + } + if (vnode.shapeFlag & 128) { + return vnode.suspense.next(); + } + const el = hostNextSibling(vnode.anchor || vnode.el); + const teleportEnd = el && el[TeleportEndKey]; + return teleportEnd ? hostNextSibling(teleportEnd) : el; + }; + let isFlushing = false; + const render = (vnode, container, namespace) => { + if (vnode == null) { + if (container._vnode) { + unmount(container._vnode, null, null, true); + } + } else { + patch( + container._vnode || null, + vnode, + container, + null, + null, + null, + namespace + ); + } + container._vnode = vnode; + if (!isFlushing) { + isFlushing = true; + flushPreFlushCbs(); + flushPostFlushCbs(); + isFlushing = false; + } + }; + const internals = { + p: patch, + um: unmount, + m: move, + r: remove, + mt: mountComponent, + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + n: getNextHostNode, + o: options + }; + let hydrate; + let hydrateNode; + if (createHydrationFns) { + [hydrate, hydrateNode] = createHydrationFns( + internals + ); + } + return { + render, + hydrate, + createApp: createAppAPI(render, hydrate) + }; +} +function resolveChildrenNamespace({ type, props }, currentNamespace) { + return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace; +} +function toggleRecurse({ effect, job }, allowed) { + if (allowed) { + effect.flags |= 32; + job.flags |= 4; + } else { + effect.flags &= -33; + job.flags &= -5; + } +} +function needTransition(parentSuspense, transition) { + return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted; +} +function traverseStaticChildren(n1, n2, shallow = false) { + const ch1 = n1.children; + const ch2 = n2.children; + if (shared.isArray(ch1) && shared.isArray(ch2)) { + for (let i = 0; i < ch1.length; i++) { + const c1 = ch1[i]; + let c2 = ch2[i]; + if (c2.shapeFlag & 1 && !c2.dynamicChildren) { + if (c2.patchFlag <= 0 || c2.patchFlag === 32) { + c2 = ch2[i] = cloneIfMounted(ch2[i]); + c2.el = c1.el; + } + if (!shallow && c2.patchFlag !== -2) + traverseStaticChildren(c1, c2); + } + if (c2.type === Text) { + c2.el = c1.el; + } + if (c2.type === Comment && !c2.el) { + c2.el = c1.el; + } + } + } +} +function getSequence(arr) { + const p = arr.slice(); + const result = [0]; + let i, j, u, v, c; + const len = arr.length; + for (i = 0; i < len; i++) { + const arrI = arr[i]; + if (arrI !== 0) { + j = result[result.length - 1]; + if (arr[j] < arrI) { + p[i] = j; + result.push(i); + continue; + } + u = 0; + v = result.length - 1; + while (u < v) { + c = u + v >> 1; + if (arr[result[c]] < arrI) { + u = c + 1; + } else { + v = c; + } + } + if (arrI < arr[result[u]]) { + if (u > 0) { + p[i] = result[u - 1]; + } + result[u] = i; + } + } + } + u = result.length; + v = result[u - 1]; + while (u-- > 0) { + result[u] = v; + v = p[v]; + } + return result; +} +function locateNonHydratedAsyncRoot(instance) { + const subComponent = instance.subTree.component; + if (subComponent) { + if (subComponent.asyncDep && !subComponent.asyncResolved) { + return subComponent; + } else { + return locateNonHydratedAsyncRoot(subComponent); + } + } +} +function invalidateMount(hooks) { + if (hooks) { + for (let i = 0; i < hooks.length; i++) + hooks[i].flags |= 8; + } +} + +const ssrContextKey = Symbol.for("v-scx"); +const useSSRContext = () => { + { + const ctx = inject(ssrContextKey); + return ctx; + } +}; + +function watchEffect(effect, options) { + return doWatch(effect, null, options); +} +function watchPostEffect(effect, options) { + return doWatch( + effect, + null, + { flush: "post" } + ); +} +function watchSyncEffect(effect, options) { + return doWatch( + effect, + null, + { flush: "sync" } + ); +} +function watch(source, cb, options) { + return doWatch(source, cb, options); +} +function doWatch(source, cb, options = shared.EMPTY_OBJ) { + const { immediate, deep, flush, once } = options; + const baseWatchOptions = shared.extend({}, options); + const runsImmediately = cb && immediate || !cb && flush !== "post"; + let ssrCleanup; + if (isInSSRComponentSetup) { + if (flush === "sync") { + const ctx = useSSRContext(); + ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); + } else if (!runsImmediately) { + const watchStopHandle = () => { + }; + watchStopHandle.stop = shared.NOOP; + watchStopHandle.resume = shared.NOOP; + watchStopHandle.pause = shared.NOOP; + return watchStopHandle; + } + } + const instance = currentInstance; + baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args); + let isPre = false; + if (flush === "post") { + baseWatchOptions.scheduler = (job) => { + queuePostRenderEffect(job, instance && instance.suspense); + }; + } else if (flush !== "sync") { + isPre = true; + baseWatchOptions.scheduler = (job, isFirstRun) => { + if (isFirstRun) { + job(); + } else { + queueJob(job); + } + }; + } + baseWatchOptions.augmentJob = (job) => { + if (cb) { + job.flags |= 4; + } + if (isPre) { + job.flags |= 2; + if (instance) { + job.id = instance.uid; + job.i = instance; + } + } + }; + const watchHandle = reactivity.watch(source, cb, baseWatchOptions); + if (isInSSRComponentSetup) { + if (ssrCleanup) { + ssrCleanup.push(watchHandle); + } else if (runsImmediately) { + watchHandle(); + } + } + return watchHandle; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = shared.isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (shared.isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const reset = setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + reset(); + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} + +function useModel(props, name, options = shared.EMPTY_OBJ) { + const i = getCurrentInstance(); + const camelizedName = shared.camelize(name); + const hyphenatedName = shared.hyphenate(name); + const modifiers = getModelModifiers(props, camelizedName); + const res = reactivity.customRef((track, trigger) => { + let localValue; + let prevSetValue = shared.EMPTY_OBJ; + let prevEmittedValue; + watchSyncEffect(() => { + const propValue = props[camelizedName]; + if (shared.hasChanged(localValue, propValue)) { + localValue = propValue; + trigger(); + } + }); + return { + get() { + track(); + return options.get ? options.get(localValue) : localValue; + }, + set(value) { + const emittedValue = options.set ? options.set(value) : value; + if (!shared.hasChanged(emittedValue, localValue) && !(prevSetValue !== shared.EMPTY_OBJ && shared.hasChanged(value, prevSetValue))) { + return; + } + const rawProps = i.vnode.props; + if (!(rawProps && // check if parent has passed v-model + (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) { + localValue = value; + trigger(); + } + i.emit(`update:${name}`, emittedValue); + if (shared.hasChanged(value, emittedValue) && shared.hasChanged(value, prevSetValue) && !shared.hasChanged(emittedValue, prevEmittedValue)) { + trigger(); + } + prevSetValue = value; + prevEmittedValue = emittedValue; + } + }; + }); + res[Symbol.iterator] = () => { + let i2 = 0; + return { + next() { + if (i2 < 2) { + return { value: i2++ ? modifiers || shared.EMPTY_OBJ : res, done: false }; + } else { + return { done: true }; + } + } + }; + }; + return res; +} +const getModelModifiers = (props, modelName) => { + return modelName === "modelValue" || modelName === "model-value" ? props.modelModifiers : props[`${modelName}Modifiers`] || props[`${shared.camelize(modelName)}Modifiers`] || props[`${shared.hyphenate(modelName)}Modifiers`]; +}; + +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) return; + const props = instance.vnode.props || shared.EMPTY_OBJ; + let args = rawArgs; + const isModelListener = event.startsWith("update:"); + const modifiers = isModelListener && getModelModifiers(props, event.slice(7)); + if (modifiers) { + if (modifiers.trim) { + args = rawArgs.map((a) => shared.isString(a) ? a.trim() : a); + } + if (modifiers.number) { + args = rawArgs.map(shared.looseToNumber); + } + } + let handlerName; + let handler = props[handlerName = shared.toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = shared.toHandlerKey(shared.camelize(event))]; + if (!handler && isModelListener) { + handler = props[handlerName = shared.toHandlerKey(shared.hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (!shared.isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + shared.extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (shared.isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (shared.isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + shared.extend(normalized, raw); + } + if (shared.isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !shared.isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return shared.hasOwn(options, key[0].toLowerCase() + key.slice(1)) || shared.hasOwn(options, shared.hyphenate(key)) || shared.hasOwn(options, key); +} + +function markAttrsAccessed() { +} +function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + propsOptions: [propsOptions], + slots, + attrs, + emit, + render, + renderCache, + props, + data, + setupState, + ctx, + inheritAttrs + } = instance; + const prev = setCurrentRenderingInstance(instance); + let result; + let fallthroughAttrs; + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + const thisProxy = false ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode( + render.call( + thisProxy, + proxyToUse, + renderCache, + false ? shallowReadonly(props) : props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render2 = Component; + if (false) ; + result = normalizeVNode( + render2.length > 1 ? render2( + false ? shallowReadonly(props) : props, + false ? { + get attrs() { + markAttrsAccessed(); + return shallowReadonly(attrs); + }, + slots, + emit + } : { attrs, slots, emit } + ) : render2( + false ? shallowReadonly(props) : props, + null + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(shared.isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs, false, true); + } + } + } + if (vnode.dirs) { + root = cloneVNode(root, null, false, true); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + setTransitionHooks(root, vnode.transition); + } + { + result = root; + } + setCurrentRenderingInstance(prev); + return result; +} +function filterSingleRoot(children, recurse = true) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + } + } + } else { + return; + } + } + return singleRoot; +} +const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || shared.isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!shared.isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function updateHOCHostEl({ vnode, parent }, el) { + while (parent) { + const root = parent.subTree; + if (root.suspense && root.suspense.activeBranch === vnode) { + root.el = vnode.el; + } + if (root === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } else { + break; + } + } +} + +const isSuspense = (type) => type.__isSuspense; +let suspenseId = 0; +const SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) { + n2.suspense = n1.suspense; + n2.suspense.vnode = n2; + n2.el = n1.el; + return; + } + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + normalize: normalizeSuspenseChildren +}; +const Suspense = SuspenseImpl ; +function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (shared.isFunction(eventListener)) { + eventListener(); + } +} +function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } +} +function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + if (!isHydrating) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } + } else { + suspense.pendingId = suspenseId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + if (newBranch.shapeFlag & 512) { + suspense.pendingId = newBranch.component.suspenseId; + } else { + suspense.pendingId = suspenseId++; + } + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } +} +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? shared.toNumber(vnode.props.timeout) : void 0; + const initialAnchor = anchor; + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + namespace, + container, + hiddenContainer, + deps: 0, + pendingId: suspenseId++, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: !isHydrating, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + let delayEnter = false; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move( + pendingBranch, + container2, + anchor === initialAnchor ? next(activeBranch) : anchor, + 0 + ); + queuePostFlushCb(effects); + } + }; + } + if (activeBranch) { + if (parentNode(activeBranch.el) === container2) { + anchor = next(activeBranch); + } + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor && !delayEnter) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const anchor2 = next(activeBranch); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + anchor2, + parentComponent2, + null, + // fallback tree will not have suspense context + namespace2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect, optimized2) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + namespace, + optimized2 + ); + if (placeholder) { + remove(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; +} +function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + // eslint-disable-next-line no-restricted-globals + document.createElement("div"), + null, + namespace, + slotScopeIds, + optimized, + rendererInternals, + true + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; +} +function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); +} +function normalizeSuspenseSlot(s) { + let block; + if (shared.isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (shared.isArray(s)) { + const singleChild = filterSingleRoot(s); + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; +} +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (shared.isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} +function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + let el = branch.el; + while (!el && branch.component) { + branch = branch.component.subTree; + el = branch.el; + } + vnode.el = el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } +} +function isVNodeSuspensible(vnode) { + const suspensible = vnode.props && vnode.props.suspensible; + return suspensible != null && suspensible !== false; +} + +const Fragment = Symbol.for("v-fgt"); +const Text = Symbol.for("v-txt"); +const Comment = Symbol.for("v-cmt"); +const Static = Symbol.for("v-stc"); +const blockStack = []; +let currentBlock = null; +function openBlock(disableTracking = false) { + blockStack.push(currentBlock = disableTracking ? null : []); +} +function closeBlock() { + blockStack.pop(); + currentBlock = blockStack[blockStack.length - 1] || null; +} +let isBlockTreeEnabled = 1; +function setBlockTracking(value, inVOnce = false) { + isBlockTreeEnabled += value; + if (value < 0 && currentBlock && inVOnce) { + currentBlock.hasOnce = true; + } +} +function setupBlock(vnode) { + vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || shared.EMPTY_ARR : null; + closeBlock(); + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(vnode); + } + return vnode; +} +function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) { + return setupBlock( + createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + true + ) + ); +} +function createBlock(type, props, children, patchFlag, dynamicProps) { + return setupBlock( + createVNode( + type, + props, + children, + patchFlag, + dynamicProps, + true + ) + ); +} +function isVNode(value) { + return value ? value.__v_isVNode === true : false; +} +function isSameVNodeType(n1, n2) { + return n1.type === n2.type && n1.key === n2.key; +} +function transformVNodeArgs(transformer) { +} +const normalizeKey = ({ key }) => key != null ? key : null; +const normalizeRef = ({ + ref, + ref_key, + ref_for +}) => { + if (typeof ref === "number") { + ref = "" + ref; + } + return ref != null ? shared.isString(ref) || reactivity.isRef(ref) || shared.isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null; +}; +function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) { + const vnode = { + __v_isVNode: true, + __v_skip: true, + type, + props, + key: props && normalizeKey(props), + ref: props && normalizeRef(props), + scopeId: currentScopeId, + slotScopeIds: null, + children, + component: null, + suspense: null, + ssContent: null, + ssFallback: null, + dirs: null, + transition: null, + el: null, + anchor: null, + target: null, + targetStart: null, + targetAnchor: null, + staticCount: 0, + shapeFlag, + patchFlag, + dynamicProps, + dynamicChildren: null, + appContext: null, + ctx: currentRenderingInstance + }; + if (needFullChildrenNormalization) { + normalizeChildren(vnode, children); + if (shapeFlag & 128) { + type.normalize(vnode); + } + } else if (children) { + vnode.shapeFlag |= shared.isString(children) ? 8 : 16; + } + if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself + !isBlockNode && // has current parent block + currentBlock && // presence of a patch flag indicates this node needs patching on updates. + // component nodes also should always be patched, because even if the + // component doesn't need to update, it needs to persist the instance on to + // the next vnode so that it can be properly unmounted later. + (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the + // vnode should not be considered dynamic due to handler caching. + vnode.patchFlag !== 32) { + currentBlock.push(vnode); + } + return vnode; +} +const createVNode = _createVNode; +function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) { + if (!type || type === NULL_DYNAMIC_COMPONENT) { + type = Comment; + } + if (isVNode(type)) { + const cloned = cloneVNode( + type, + props, + true + /* mergeRef: true */ + ); + if (children) { + normalizeChildren(cloned, children); + } + if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) { + if (cloned.shapeFlag & 6) { + currentBlock[currentBlock.indexOf(type)] = cloned; + } else { + currentBlock.push(cloned); + } + } + cloned.patchFlag = -2; + return cloned; + } + if (isClassComponent(type)) { + type = type.__vccOpts; + } + if (props) { + props = guardReactiveProps(props); + let { class: klass, style } = props; + if (klass && !shared.isString(klass)) { + props.class = shared.normalizeClass(klass); + } + if (shared.isObject(style)) { + if (reactivity.isProxy(style) && !shared.isArray(style)) { + style = shared.extend({}, style); + } + props.style = shared.normalizeStyle(style); + } + } + const shapeFlag = shared.isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : shared.isObject(type) ? 4 : shared.isFunction(type) ? 2 : 0; + return createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + isBlockNode, + true + ); +} +function guardReactiveProps(props) { + if (!props) return null; + return reactivity.isProxy(props) || isInternalObject(props) ? shared.extend({}, props) : props; +} +function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) { + const { props, ref, patchFlag, children, transition } = vnode; + const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props; + const cloned = { + __v_isVNode: true, + __v_skip: true, + type: vnode.type, + props: mergedProps, + key: mergedProps && normalizeKey(mergedProps), + ref: extraProps && extraProps.ref ? ( + // #2078 in the case of <component :is="vnode" ref="extra"/> + // if the vnode itself already has a ref, cloneVNode will need to merge + // the refs so the single vnode can be set on multiple refs + mergeRef && ref ? shared.isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps) + ) : ref, + scopeId: vnode.scopeId, + slotScopeIds: vnode.slotScopeIds, + children: children, + target: vnode.target, + targetStart: vnode.targetStart, + targetAnchor: vnode.targetAnchor, + staticCount: vnode.staticCount, + shapeFlag: vnode.shapeFlag, + // if the vnode is cloned with extra props, we can no longer assume its + // existing patch flag to be reliable and need to add the FULL_PROPS flag. + // note: preserve flag for fragments since they use the flag for children + // fast paths only. + patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag, + dynamicProps: vnode.dynamicProps, + dynamicChildren: vnode.dynamicChildren, + appContext: vnode.appContext, + dirs: vnode.dirs, + transition, + // These should technically only be non-null on mounted VNodes. However, + // they *should* be copied for kept-alive vnodes. So we just always copy + // them since them being non-null during a mount doesn't affect the logic as + // they will simply be overwritten. + component: vnode.component, + suspense: vnode.suspense, + ssContent: vnode.ssContent && cloneVNode(vnode.ssContent), + ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback), + placeholder: vnode.placeholder, + el: vnode.el, + anchor: vnode.anchor, + ctx: vnode.ctx, + ce: vnode.ce + }; + if (transition && cloneTransition) { + setTransitionHooks( + cloned, + transition.clone(cloned) + ); + } + return cloned; +} +function createTextVNode(text = " ", flag = 0) { + return createVNode(Text, null, text, flag); +} +function createStaticVNode(content, numberOfNodes) { + const vnode = createVNode(Static, null, content); + vnode.staticCount = numberOfNodes; + return vnode; +} +function createCommentVNode(text = "", asBlock = false) { + return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text); +} +function normalizeVNode(child) { + if (child == null || typeof child === "boolean") { + return createVNode(Comment); + } else if (shared.isArray(child)) { + return createVNode( + Fragment, + null, + // #3666, avoid reference pollution when reusing vnode + child.slice() + ); + } else if (isVNode(child)) { + return cloneIfMounted(child); + } else { + return createVNode(Text, null, String(child)); + } +} +function cloneIfMounted(child) { + return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child); +} +function normalizeChildren(vnode, children) { + let type = 0; + const { shapeFlag } = vnode; + if (children == null) { + children = null; + } else if (shared.isArray(children)) { + type = 16; + } else if (typeof children === "object") { + if (shapeFlag & (1 | 64)) { + const slot = children.default; + if (slot) { + slot._c && (slot._d = false); + normalizeChildren(vnode, slot()); + slot._c && (slot._d = true); + } + return; + } else { + type = 32; + const slotFlag = children._; + if (!slotFlag && !isInternalObject(children)) { + children._ctx = currentRenderingInstance; + } else if (slotFlag === 3 && currentRenderingInstance) { + if (currentRenderingInstance.slots._ === 1) { + children._ = 1; + } else { + children._ = 2; + vnode.patchFlag |= 1024; + } + } + } + } else if (shared.isFunction(children)) { + children = { default: children, _ctx: currentRenderingInstance }; + type = 32; + } else { + children = String(children); + if (shapeFlag & 64) { + type = 16; + children = [createTextVNode(children)]; + } else { + type = 8; + } + } + vnode.children = children; + vnode.shapeFlag |= type; +} +function mergeProps(...args) { + const ret = {}; + for (let i = 0; i < args.length; i++) { + const toMerge = args[i]; + for (const key in toMerge) { + if (key === "class") { + if (ret.class !== toMerge.class) { + ret.class = shared.normalizeClass([ret.class, toMerge.class]); + } + } else if (key === "style") { + ret.style = shared.normalizeStyle([ret.style, toMerge.style]); + } else if (shared.isOn(key)) { + const existing = ret[key]; + const incoming = toMerge[key]; + if (incoming && existing !== incoming && !(shared.isArray(existing) && existing.includes(incoming))) { + ret[key] = existing ? [].concat(existing, incoming) : incoming; + } + } else if (key !== "") { + ret[key] = toMerge[key]; + } + } + } + return ret; +} +function invokeVNodeHook(hook, instance, vnode, prevVNode = null) { + callWithAsyncErrorHandling(hook, instance, 7, [ + vnode, + prevVNode + ]); +} + +const emptyAppContext = createAppContext(); +let uid = 0; +function createComponentInstance(vnode, parent, suspense) { + const type = vnode.type; + const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext; + const instance = { + uid: uid++, + vnode, + type, + parent, + appContext, + root: null, + // to be immediately set + next: null, + subTree: null, + // will be set synchronously right after creation + effect: null, + update: null, + // will be set synchronously right after creation + job: null, + scope: new reactivity.EffectScope( + true + /* detached */ + ), + render: null, + proxy: null, + exposed: null, + exposeProxy: null, + withProxy: null, + provides: parent ? parent.provides : Object.create(appContext.provides), + ids: parent ? parent.ids : ["", 0, 0], + accessCache: null, + renderCache: [], + // local resolved assets + components: null, + directives: null, + // resolved props and emits options + propsOptions: normalizePropsOptions(type, appContext), + emitsOptions: normalizeEmitsOptions(type, appContext), + // emit + emit: null, + // to be set immediately + emitted: null, + // props default value + propsDefaults: shared.EMPTY_OBJ, + // inheritAttrs + inheritAttrs: type.inheritAttrs, + // state + ctx: shared.EMPTY_OBJ, + data: shared.EMPTY_OBJ, + props: shared.EMPTY_OBJ, + attrs: shared.EMPTY_OBJ, + slots: shared.EMPTY_OBJ, + refs: shared.EMPTY_OBJ, + setupState: shared.EMPTY_OBJ, + setupContext: null, + // suspense related + suspense, + suspenseId: suspense ? suspense.pendingId : 0, + asyncDep: null, + asyncResolved: false, + // lifecycle hooks + // not using enums here because it results in computed properties + isMounted: false, + isUnmounted: false, + isDeactivated: false, + bc: null, + c: null, + bm: null, + m: null, + bu: null, + u: null, + um: null, + bum: null, + da: null, + a: null, + rtg: null, + rtc: null, + ec: null, + sp: null + }; + { + instance.ctx = { _: instance }; + } + instance.root = parent ? parent.root : instance; + instance.emit = emit.bind(null, instance); + if (vnode.ce) { + vnode.ce(instance); + } + return instance; +} +let currentInstance = null; +const getCurrentInstance = () => currentInstance || currentRenderingInstance; +let internalSetCurrentInstance; +let setInSSRSetupState; +{ + const g = shared.getGlobalThis(); + const registerGlobalSetter = (key, setter) => { + let setters; + if (!(setters = g[key])) setters = g[key] = []; + setters.push(setter); + return (v) => { + if (setters.length > 1) setters.forEach((set) => set(v)); + else setters[0](v); + }; + }; + internalSetCurrentInstance = registerGlobalSetter( + `__VUE_INSTANCE_SETTERS__`, + (v) => currentInstance = v + ); + setInSSRSetupState = registerGlobalSetter( + `__VUE_SSR_SETTERS__`, + (v) => isInSSRComponentSetup = v + ); +} +const setCurrentInstance = (instance) => { + const prev = currentInstance; + internalSetCurrentInstance(instance); + instance.scope.on(); + return () => { + instance.scope.off(); + internalSetCurrentInstance(prev); + }; +}; +const unsetCurrentInstance = () => { + currentInstance && currentInstance.scope.off(); + internalSetCurrentInstance(null); +}; +function isStatefulComponent(instance) { + return instance.vnode.shapeFlag & 4; +} +let isInSSRComponentSetup = false; +function setupComponent(instance, isSSR = false, optimized = false) { + isSSR && setInSSRSetupState(isSSR); + const { props, children } = instance.vnode; + const isStateful = isStatefulComponent(instance); + initProps(instance, props, isStateful, isSSR); + initSlots(instance, children, optimized || isSSR); + const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; + isSSR && setInSSRSetupState(false); + return setupResult; +} +function setupStatefulComponent(instance, isSSR) { + const Component = instance.type; + instance.accessCache = /* @__PURE__ */ Object.create(null); + instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers); + const { setup } = Component; + if (setup) { + reactivity.pauseTracking(); + const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; + const reset = setCurrentInstance(instance); + const setupResult = callWithErrorHandling( + setup, + instance, + 0, + [ + instance.props, + setupContext + ] + ); + const isAsyncSetup = shared.isPromise(setupResult); + reactivity.resetTracking(); + reset(); + if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) { + markAsyncBoundary(instance); + } + if (isAsyncSetup) { + setupResult.then(unsetCurrentInstance, unsetCurrentInstance); + if (isSSR) { + return setupResult.then((resolvedResult) => { + handleSetupResult(instance, resolvedResult, isSSR); + }).catch((e) => { + handleError(e, instance, 0); + }); + } else { + instance.asyncDep = setupResult; + } + } else { + handleSetupResult(instance, setupResult, isSSR); + } + } else { + finishComponentSetup(instance, isSSR); + } +} +function handleSetupResult(instance, setupResult, isSSR) { + if (shared.isFunction(setupResult)) { + if (instance.type.__ssrInlineRender) { + instance.ssrRender = setupResult; + } else { + instance.render = setupResult; + } + } else if (shared.isObject(setupResult)) { + instance.setupState = reactivity.proxyRefs(setupResult); + } else ; + finishComponentSetup(instance, isSSR); +} +let compile; +let installWithProxy; +function registerRuntimeCompiler(_compile) { + compile = _compile; + installWithProxy = (i) => { + if (i.render._rc) { + i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers); + } + }; +} +const isRuntimeOnly = () => !compile; +function finishComponentSetup(instance, isSSR, skipOptions) { + const Component = instance.type; + if (!instance.render) { + if (!isSSR && compile && !Component.render) { + const template = Component.template || resolveMergedOptions(instance).template; + if (template) { + const { isCustomElement, compilerOptions } = instance.appContext.config; + const { delimiters, compilerOptions: componentCompilerOptions } = Component; + const finalCompilerOptions = shared.extend( + shared.extend( + { + isCustomElement, + delimiters + }, + compilerOptions + ), + componentCompilerOptions + ); + Component.render = compile(template, finalCompilerOptions); + } + } + instance.render = Component.render || shared.NOOP; + if (installWithProxy) { + installWithProxy(instance); + } + } + { + const reset = setCurrentInstance(instance); + reactivity.pauseTracking(); + try { + applyOptions(instance); + } finally { + reactivity.resetTracking(); + reset(); + } + } +} +const attrsProxyHandlers = { + get(target, key) { + reactivity.track(target, "get", ""); + return target[key]; + } +}; +function createSetupContext(instance) { + const expose = (exposed) => { + instance.exposed = exposed || {}; + }; + { + return { + attrs: new Proxy(instance.attrs, attrsProxyHandlers), + slots: instance.slots, + emit: instance.emit, + expose + }; + } +} +function getComponentPublicInstance(instance) { + if (instance.exposed) { + return instance.exposeProxy || (instance.exposeProxy = new Proxy(reactivity.proxyRefs(reactivity.markRaw(instance.exposed)), { + get(target, key) { + if (key in target) { + return target[key]; + } else if (key in publicPropertiesMap) { + return publicPropertiesMap[key](instance); + } + }, + has(target, key) { + return key in target || key in publicPropertiesMap; + } + })); + } else { + return instance.proxy; + } +} +function getComponentName(Component, includeInferred = true) { + return shared.isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; +} +function isClassComponent(value) { + return shared.isFunction(value) && "__vccOpts" in value; +} + +const computed = (getterOrOptions, debugOptions) => { + const c = reactivity.computed(getterOrOptions, debugOptions, isInSSRComponentSetup); + return c; +}; + +function h(type, propsOrChildren, children) { + const l = arguments.length; + if (l === 2) { + if (shared.isObject(propsOrChildren) && !shared.isArray(propsOrChildren)) { + if (isVNode(propsOrChildren)) { + return createVNode(type, null, [propsOrChildren]); + } + return createVNode(type, propsOrChildren); + } else { + return createVNode(type, null, propsOrChildren); + } + } else { + if (l > 3) { + children = Array.prototype.slice.call(arguments, 2); + } else if (l === 3 && isVNode(children)) { + children = [children]; + } + return createVNode(type, propsOrChildren, children); + } +} + +function initCustomFormatter() { + { + return; + } +} + +function withMemo(memo, render, cache, index) { + const cached = cache[index]; + if (cached && isMemoSame(cached, memo)) { + return cached; + } + const ret = render(); + ret.memo = memo.slice(); + ret.cacheIndex = index; + return cache[index] = ret; +} +function isMemoSame(cached, memo) { + const prev = cached.memo; + if (prev.length != memo.length) { + return false; + } + for (let i = 0; i < prev.length; i++) { + if (shared.hasChanged(prev[i], memo[i])) { + return false; + } + } + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(cached); + } + return true; +} + +const version = "3.5.18"; +const warn$1 = shared.NOOP; +const ErrorTypeStrings = ErrorTypeStrings$1 ; +const devtools = void 0; +const setDevtoolsHook = shared.NOOP; +const _ssrUtils = { + createComponentInstance, + setupComponent, + renderComponentRoot, + setCurrentRenderingInstance, + isVNode: isVNode, + normalizeVNode, + getComponentPublicInstance, + ensureValidVNode, + pushWarningContext, + popWarningContext +}; +const ssrUtils = _ssrUtils ; +const resolveFilter = null; +const compatUtils = null; +const DeprecationTypes = null; + +exports.EffectScope = reactivity.EffectScope; +exports.ReactiveEffect = reactivity.ReactiveEffect; +exports.TrackOpTypes = reactivity.TrackOpTypes; +exports.TriggerOpTypes = reactivity.TriggerOpTypes; +exports.customRef = reactivity.customRef; +exports.effect = reactivity.effect; +exports.effectScope = reactivity.effectScope; +exports.getCurrentScope = reactivity.getCurrentScope; +exports.getCurrentWatcher = reactivity.getCurrentWatcher; +exports.isProxy = reactivity.isProxy; +exports.isReactive = reactivity.isReactive; +exports.isReadonly = reactivity.isReadonly; +exports.isRef = reactivity.isRef; +exports.isShallow = reactivity.isShallow; +exports.markRaw = reactivity.markRaw; +exports.onScopeDispose = reactivity.onScopeDispose; +exports.onWatcherCleanup = reactivity.onWatcherCleanup; +exports.proxyRefs = reactivity.proxyRefs; +exports.reactive = reactivity.reactive; +exports.readonly = reactivity.readonly; +exports.ref = reactivity.ref; +exports.shallowReactive = reactivity.shallowReactive; +exports.shallowReadonly = reactivity.shallowReadonly; +exports.shallowRef = reactivity.shallowRef; +exports.stop = reactivity.stop; +exports.toRaw = reactivity.toRaw; +exports.toRef = reactivity.toRef; +exports.toRefs = reactivity.toRefs; +exports.toValue = reactivity.toValue; +exports.triggerRef = reactivity.triggerRef; +exports.unref = reactivity.unref; +exports.camelize = shared.camelize; +exports.capitalize = shared.capitalize; +exports.normalizeClass = shared.normalizeClass; +exports.normalizeProps = shared.normalizeProps; +exports.normalizeStyle = shared.normalizeStyle; +exports.toDisplayString = shared.toDisplayString; +exports.toHandlerKey = shared.toHandlerKey; +exports.BaseTransition = BaseTransition; +exports.BaseTransitionPropsValidators = BaseTransitionPropsValidators; +exports.Comment = Comment; +exports.DeprecationTypes = DeprecationTypes; +exports.ErrorCodes = ErrorCodes; +exports.ErrorTypeStrings = ErrorTypeStrings; +exports.Fragment = Fragment; +exports.KeepAlive = KeepAlive; +exports.Static = Static; +exports.Suspense = Suspense; +exports.Teleport = Teleport; +exports.Text = Text; +exports.assertNumber = assertNumber; +exports.callWithAsyncErrorHandling = callWithAsyncErrorHandling; +exports.callWithErrorHandling = callWithErrorHandling; +exports.cloneVNode = cloneVNode; +exports.compatUtils = compatUtils; +exports.computed = computed; +exports.createBlock = createBlock; +exports.createCommentVNode = createCommentVNode; +exports.createElementBlock = createElementBlock; +exports.createElementVNode = createBaseVNode; +exports.createHydrationRenderer = createHydrationRenderer; +exports.createPropsRestProxy = createPropsRestProxy; +exports.createRenderer = createRenderer; +exports.createSlots = createSlots; +exports.createStaticVNode = createStaticVNode; +exports.createTextVNode = createTextVNode; +exports.createVNode = createVNode; +exports.defineAsyncComponent = defineAsyncComponent; +exports.defineComponent = defineComponent; +exports.defineEmits = defineEmits; +exports.defineExpose = defineExpose; +exports.defineModel = defineModel; +exports.defineOptions = defineOptions; +exports.defineProps = defineProps; +exports.defineSlots = defineSlots; +exports.devtools = devtools; +exports.getCurrentInstance = getCurrentInstance; +exports.getTransitionRawChildren = getTransitionRawChildren; +exports.guardReactiveProps = guardReactiveProps; +exports.h = h; +exports.handleError = handleError; +exports.hasInjectionContext = hasInjectionContext; +exports.hydrateOnIdle = hydrateOnIdle; +exports.hydrateOnInteraction = hydrateOnInteraction; +exports.hydrateOnMediaQuery = hydrateOnMediaQuery; +exports.hydrateOnVisible = hydrateOnVisible; +exports.initCustomFormatter = initCustomFormatter; +exports.inject = inject; +exports.isMemoSame = isMemoSame; +exports.isRuntimeOnly = isRuntimeOnly; +exports.isVNode = isVNode; +exports.mergeDefaults = mergeDefaults; +exports.mergeModels = mergeModels; +exports.mergeProps = mergeProps; +exports.nextTick = nextTick; +exports.onActivated = onActivated; +exports.onBeforeMount = onBeforeMount; +exports.onBeforeUnmount = onBeforeUnmount; +exports.onBeforeUpdate = onBeforeUpdate; +exports.onDeactivated = onDeactivated; +exports.onErrorCaptured = onErrorCaptured; +exports.onMounted = onMounted; +exports.onRenderTracked = onRenderTracked; +exports.onRenderTriggered = onRenderTriggered; +exports.onServerPrefetch = onServerPrefetch; +exports.onUnmounted = onUnmounted; +exports.onUpdated = onUpdated; +exports.openBlock = openBlock; +exports.popScopeId = popScopeId; +exports.provide = provide; +exports.pushScopeId = pushScopeId; +exports.queuePostFlushCb = queuePostFlushCb; +exports.registerRuntimeCompiler = registerRuntimeCompiler; +exports.renderList = renderList; +exports.renderSlot = renderSlot; +exports.resolveComponent = resolveComponent; +exports.resolveDirective = resolveDirective; +exports.resolveDynamicComponent = resolveDynamicComponent; +exports.resolveFilter = resolveFilter; +exports.resolveTransitionHooks = resolveTransitionHooks; +exports.setBlockTracking = setBlockTracking; +exports.setDevtoolsHook = setDevtoolsHook; +exports.setTransitionHooks = setTransitionHooks; +exports.ssrContextKey = ssrContextKey; +exports.ssrUtils = ssrUtils; +exports.toHandlers = toHandlers; +exports.transformVNodeArgs = transformVNodeArgs; +exports.useAttrs = useAttrs; +exports.useId = useId; +exports.useModel = useModel; +exports.useSSRContext = useSSRContext; +exports.useSlots = useSlots; +exports.useTemplateRef = useTemplateRef; +exports.useTransitionState = useTransitionState; +exports.version = version; +exports.warn = warn$1; +exports.watch = watch; +exports.watchEffect = watchEffect; +exports.watchPostEffect = watchPostEffect; +exports.watchSyncEffect = watchSyncEffect; +exports.withAsyncContext = withAsyncContext; +exports.withCtx = withCtx; +exports.withDefaults = withDefaults; +exports.withDirectives = withDirectives; +exports.withMemo = withMemo; +exports.withScopeId = withScopeId; diff --git a/node_modules/@vue/runtime-core/dist/runtime-core.d.ts b/node_modules/@vue/runtime-core/dist/runtime-core.d.ts new file mode 100644 index 0000000..d5e9b17 --- /dev/null +++ b/node_modules/@vue/runtime-core/dist/runtime-core.d.ts @@ -0,0 +1,1839 @@ +import { computed as computed$1, Ref, OnCleanup, WatchStopHandle, ShallowUnwrapRef, UnwrapNestedRefs, DebuggerEvent, ComputedGetter, WritableComputedOptions, WatchCallback, ReactiveEffect, DebuggerOptions, WatchSource, WatchHandle, ReactiveMarker, WatchEffect, ShallowRef, WatchErrorCodes, reactive } from '@vue/reactivity'; +export { ComputedGetter, ComputedRef, ComputedSetter, CustomRefFactory, DebuggerEvent, DebuggerEventExtraInfo, DebuggerOptions, DeepReadonly, EffectScheduler, EffectScope, MaybeRef, MaybeRefOrGetter, Raw, Reactive, ReactiveEffect, ReactiveEffectOptions, ReactiveEffectRunner, ReactiveFlags, Ref, ShallowReactive, ShallowRef, ShallowUnwrapRef, ToRef, ToRefs, TrackOpTypes, TriggerOpTypes, UnwrapNestedRefs, UnwrapRef, WatchCallback, WatchEffect, WatchHandle, WatchSource, WatchStopHandle, WritableComputedOptions, WritableComputedRef, customRef, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, onWatcherCleanup, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity'; +import { IfAny, Prettify, LooseRequired, UnionToIntersection, OverloadParameters, IsKeyValues } from '@vue/shared'; +export { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared'; + +export declare const computed: typeof computed$1; + +export type Slot<T extends any = any> = (...args: IfAny<T, any[], [T] | (T extends undefined ? [] : never)>) => VNode[]; +type InternalSlots = { + [name: string]: Slot | undefined; +}; +export type Slots = Readonly<InternalSlots>; +declare const SlotSymbol: unique symbol; +export type SlotsType<T extends Record<string, any> = Record<string, any>> = { + [SlotSymbol]?: T; +}; +type StrictUnwrapSlotsType<S extends SlotsType, T = NonNullable<S[typeof SlotSymbol]>> = [keyof S] extends [never] ? Slots : Readonly<T> & T; +type UnwrapSlotsType<S extends SlotsType, T = NonNullable<S[typeof SlotSymbol]>> = [keyof S] extends [never] ? Slots : Readonly<Prettify<{ + [K in keyof T]: NonNullable<T[K]> extends (...args: any[]) => any ? T[K] : Slot<T[K]>; +}>>; +type RawSlots = { + [name: string]: unknown; + $stable?: boolean; +}; + +declare enum SchedulerJobFlags { + QUEUED = 1, + PRE = 2, + /** + * Indicates whether the effect is allowed to recursively trigger itself + * when managed by the scheduler. + * + * By default, a job cannot trigger itself because some built-in method calls, + * e.g. Array.prototype.push actually performs reads as well (#1740) which + * can lead to confusing infinite loops. + * The allowed cases are component update functions and watch callbacks. + * Component update functions may update child component props, which in turn + * trigger flush: "pre" watch callbacks that mutates state that the parent + * relies on (#1801). Watch callbacks doesn't track its dependencies so if it + * triggers itself again, it's likely intentional and it is the user's + * responsibility to perform recursive state mutation that eventually + * stabilizes (#1727). + */ + ALLOW_RECURSE = 4, + DISPOSED = 8 +} +interface SchedulerJob extends Function { + id?: number; + /** + * flags can technically be undefined, but it can still be used in bitwise + * operations just like 0. + */ + flags?: SchedulerJobFlags; + /** + * Attached by renderer.ts when setting up a component's render effect + * Used to obtain component information when reporting max recursive updates. + */ + i?: ComponentInternalInstance; +} +type SchedulerJobs = SchedulerJob | SchedulerJob[]; +export declare function nextTick<T = void, R = void>(this: T, fn?: (this: T) => R): Promise<Awaited<R>>; +export declare function queuePostFlushCb(cb: SchedulerJobs): void; + +export type ComponentPropsOptions<P = Data> = ComponentObjectPropsOptions<P> | string[]; +export type ComponentObjectPropsOptions<P = Data> = { + [K in keyof P]: Prop<P[K]> | null; +}; +export type Prop<T, D = T> = PropOptions<T, D> | PropType<T>; +type DefaultFactory<T> = (props: Data) => T | null | undefined; +interface PropOptions<T = any, D = T> { + type?: PropType<T> | true | null; + required?: boolean; + default?: D | DefaultFactory<D> | null | undefined | object; + validator?(value: unknown, props: Data): boolean; +} +export type PropType<T> = PropConstructor<T> | (PropConstructor<T> | null)[]; +type PropConstructor<T = any> = { + new (...args: any[]): T & {}; +} | { + (): T; +} | PropMethod<T>; +type PropMethod<T, TConstructor = any> = [T] extends [ + ((...args: any) => any) | undefined +] ? { + new (): TConstructor; + (): T; + readonly prototype: TConstructor; +} : never; +type RequiredKeys<T> = { + [K in keyof T]: T[K] extends { + required: true; + } | { + default: any; + } | BooleanConstructor | { + type: BooleanConstructor; + } ? T[K] extends { + default: undefined | (() => undefined); + } ? never : K : never; +}[keyof T]; +type OptionalKeys<T> = Exclude<keyof T, RequiredKeys<T>>; +type DefaultKeys<T> = { + [K in keyof T]: T[K] extends { + default: any; + } | BooleanConstructor | { + type: BooleanConstructor; + } ? T[K] extends { + type: BooleanConstructor; + required: true; + } ? never : K : never; +}[keyof T]; +type InferPropType<T, NullAsAny = true> = [T] extends [null] ? NullAsAny extends true ? any : null : [T] extends [{ + type: null | true; +}] ? any : [T] extends [ObjectConstructor | { + type: ObjectConstructor; +}] ? Record<string, any> : [T] extends [BooleanConstructor | { + type: BooleanConstructor; +}] ? boolean : [T] extends [DateConstructor | { + type: DateConstructor; +}] ? Date : [T] extends [(infer U)[] | { + type: (infer U)[]; +}] ? U extends DateConstructor ? Date | InferPropType<U, false> : InferPropType<U, false> : [T] extends [Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? IfAny<V, V, D> : V : V : T; +/** + * Extract prop types from a runtime props options object. + * The extracted types are **internal** - i.e. the resolved props received by + * the component. + * - Boolean props are always present + * - Props with default values are always present + * + * To extract accepted props from the parent, use {@link ExtractPublicPropTypes}. + */ +export type ExtractPropTypes<O> = { + [K in keyof Pick<O, RequiredKeys<O>>]: O[K] extends { + default: any; + } ? Exclude<InferPropType<O[K]>, undefined> : InferPropType<O[K]>; +} & { + [K in keyof Pick<O, OptionalKeys<O>>]?: InferPropType<O[K]>; +}; +type PublicRequiredKeys<T> = { + [K in keyof T]: T[K] extends { + required: true; + } ? K : never; +}[keyof T]; +type PublicOptionalKeys<T> = Exclude<keyof T, PublicRequiredKeys<T>>; +/** + * Extract prop types from a runtime props options object. + * The extracted types are **public** - i.e. the expected props that can be + * passed to component. + */ +export type ExtractPublicPropTypes<O> = { + [K in keyof Pick<O, PublicRequiredKeys<O>>]: InferPropType<O[K]>; +} & { + [K in keyof Pick<O, PublicOptionalKeys<O>>]?: InferPropType<O[K]>; +}; +export type ExtractDefaultPropTypes<O> = O extends object ? { + [K in keyof Pick<O, DefaultKeys<O>>]: InferPropType<O[K]>; +} : {}; + +/** + * Vue `<script setup>` compiler macro for declaring component props. The + * expected argument is the same as the component `props` option. + * + * Example runtime declaration: + * ```js + * // using Array syntax + * const props = defineProps(['foo', 'bar']) + * // using Object syntax + * const props = defineProps({ + * foo: String, + * bar: { + * type: Number, + * required: true + * } + * }) + * ``` + * + * Equivalent type-based declaration: + * ```ts + * // will be compiled into equivalent runtime declarations + * const props = defineProps<{ + * foo?: string + * bar: number + * }>() + * ``` + * + * @see {@link https://vuejs.org/api/sfc-script-setup.html#defineprops-defineemits} + * + * This is only usable inside `<script setup>`, is compiled away in the + * output and should **not** be actually called at runtime. + */ +export declare function defineProps<PropNames extends string = string>(props: PropNames[]): Prettify<Readonly<{ + [key in PropNames]?: any; +}>>; +export declare function defineProps<PP extends ComponentObjectPropsOptions = ComponentObjectPropsOptions>(props: PP): Prettify<Readonly<ExtractPropTypes<PP>>>; +export declare function defineProps<TypeProps>(): DefineProps<LooseRequired<TypeProps>, BooleanKey<TypeProps>>; +export type DefineProps<T, BKeys extends keyof T> = Readonly<T> & { + readonly [K in BKeys]-?: boolean; +}; +type BooleanKey<T, K extends keyof T = keyof T> = K extends any ? [T[K]] extends [boolean | undefined] ? K : never : never; +/** + * Vue `<script setup>` compiler macro for declaring a component's emitted + * events. The expected argument is the same as the component `emits` option. + * + * Example runtime declaration: + * ```js + * const emit = defineEmits(['change', 'update']) + * ``` + * + * Example type-based declaration: + * ```ts + * const emit = defineEmits<{ + * // <eventName>: <expected arguments> + * change: [] + * update: [value: number] // named tuple syntax + * }>() + * + * emit('change') + * emit('update', 1) + * ``` + * + * This is only usable inside `<script setup>`, is compiled away in the + * output and should **not** be actually called at runtime. + * + * @see {@link https://vuejs.org/api/sfc-script-setup.html#defineprops-defineemits} + */ +export declare function defineEmits<EE extends string = string>(emitOptions: EE[]): EmitFn<EE[]>; +export declare function defineEmits<E extends EmitsOptions = EmitsOptions>(emitOptions: E): EmitFn<E>; +export declare function defineEmits<T extends ComponentTypeEmits>(): T extends (...args: any[]) => any ? T : ShortEmits<T>; +export type ComponentTypeEmits = ((...args: any[]) => any) | Record<string, any>; +type RecordToUnion<T extends Record<string, any>> = T[keyof T]; +type ShortEmits<T extends Record<string, any>> = UnionToIntersection<RecordToUnion<{ + [K in keyof T]: (evt: K, ...args: T[K]) => void; +}>>; +/** + * Vue `<script setup>` compiler macro for declaring a component's exposed + * instance properties when it is accessed by a parent component via template + * refs. + * + * `<script setup>` components are closed by default - i.e. variables inside + * the `<script setup>` scope is not exposed to parent unless explicitly exposed + * via `defineExpose`. + * + * This is only usable inside `<script setup>`, is compiled away in the + * output and should **not** be actually called at runtime. + * + * @see {@link https://vuejs.org/api/sfc-script-setup.html#defineexpose} + */ +export declare function defineExpose<Exposed extends Record<string, any> = Record<string, any>>(exposed?: Exposed): void; +/** + * Vue `<script setup>` compiler macro for declaring a component's additional + * options. This should be used only for options that cannot be expressed via + * Composition API - e.g. `inheritAttrs`. + * + * @see {@link https://vuejs.org/api/sfc-script-setup.html#defineoptions} + */ +export declare function defineOptions<RawBindings = {}, D = {}, C extends ComputedOptions = {}, M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin>(options?: ComponentOptionsBase<{}, RawBindings, D, C, M, Mixin, Extends, {}> & { + /** + * props should be defined via defineProps(). + */ + props?: never; + /** + * emits should be defined via defineEmits(). + */ + emits?: never; + /** + * expose should be defined via defineExpose(). + */ + expose?: never; + /** + * slots should be defined via defineSlots(). + */ + slots?: never; +}): void; +export declare function defineSlots<S extends Record<string, any> = Record<string, any>>(): StrictUnwrapSlotsType<SlotsType<S>>; +export type ModelRef<T, M extends PropertyKey = string, G = T, S = T> = Ref<G, S> & [ + ModelRef<T, M, G, S>, + Record<M, true | undefined> +]; +type DefineModelOptions<T = any, G = T, S = T> = { + get?: (v: T) => G; + set?: (v: S) => any; +}; +/** + * Vue `<script setup>` compiler macro for declaring a + * two-way binding prop that can be consumed via `v-model` from the parent + * component. This will declare a prop with the same name and a corresponding + * `update:propName` event. + * + * If the first argument is a string, it will be used as the prop name; + * Otherwise the prop name will default to "modelValue". In both cases, you + * can also pass an additional object which will be used as the prop's options. + * + * The returned ref behaves differently depending on whether the parent + * provided the corresponding v-model props or not: + * - If yes, the returned ref's value will always be in sync with the parent + * prop. + * - If not, the returned ref will behave like a normal local ref. + * + * @example + * ```ts + * // default model (consumed via `v-model`) + * const modelValue = defineModel<string>() + * modelValue.value = "hello" + * + * // default model with options + * const modelValue = defineModel<string>({ required: true }) + * + * // with specified name (consumed via `v-model:count`) + * const count = defineModel<number>('count') + * count.value++ + * + * // with specified name and default value + * const count = defineModel<number>('count', { default: 0 }) + * ``` + */ +export declare function defineModel<T, M extends PropertyKey = string, G = T, S = T>(options: ({ + default: any; +} | { + required: true; +}) & PropOptions<T> & DefineModelOptions<T, G, S>): ModelRef<T, M, G, S>; +export declare function defineModel<T, M extends PropertyKey = string, G = T, S = T>(options?: PropOptions<T> & DefineModelOptions<T, G, S>): ModelRef<T | undefined, M, G | undefined, S | undefined>; +export declare function defineModel<T, M extends PropertyKey = string, G = T, S = T>(name: string, options: ({ + default: any; +} | { + required: true; +}) & PropOptions<T> & DefineModelOptions<T, G, S>): ModelRef<T, M, G, S>; +export declare function defineModel<T, M extends PropertyKey = string, G = T, S = T>(name: string, options?: PropOptions<T> & DefineModelOptions<T, G, S>): ModelRef<T | undefined, M, G | undefined, S | undefined>; +type NotUndefined<T> = T extends undefined ? never : T; +type MappedOmit<T, K extends keyof any> = { + [P in keyof T as P extends K ? never : P]: T[P]; +}; +type InferDefaults<T> = { + [K in keyof T]?: InferDefault<T, T[K]>; +}; +type NativeType = null | number | string | boolean | symbol | Function; +type InferDefault<P, T> = ((props: P) => T & {}) | (T extends NativeType ? T : never); +type PropsWithDefaults<T, Defaults extends InferDefaults<T>, BKeys extends keyof T> = T extends unknown ? Readonly<MappedOmit<T, keyof Defaults>> & { + readonly [K in keyof Defaults as K extends keyof T ? K : never]-?: K extends keyof T ? Defaults[K] extends undefined ? IfAny<Defaults[K], NotUndefined<T[K]>, T[K]> : NotUndefined<T[K]> : never; +} & { + readonly [K in BKeys]-?: K extends keyof Defaults ? Defaults[K] extends undefined ? boolean | undefined : boolean : boolean; +} : never; +/** + * Vue `<script setup>` compiler macro for providing props default values when + * using type-based `defineProps` declaration. + * + * Example usage: + * ```ts + * withDefaults(defineProps<{ + * size?: number + * labels?: string[] + * }>(), { + * size: 3, + * labels: () => ['default label'] + * }) + * ``` + * + * This is only usable inside `<script setup>`, is compiled away in the output + * and should **not** be actually called at runtime. + * + * @see {@link https://vuejs.org/guide/typescript/composition-api.html#typing-component-props} + */ +export declare function withDefaults<T, BKeys extends keyof T, Defaults extends InferDefaults<T>>(props: DefineProps<T, BKeys>, defaults: Defaults): PropsWithDefaults<T, Defaults, BKeys>; +export declare function useSlots(): SetupContext['slots']; +export declare function useAttrs(): SetupContext['attrs']; + +export type ObjectEmitsOptions = Record<string, ((...args: any[]) => any) | null>; +export type EmitsOptions = ObjectEmitsOptions | string[]; +export type EmitsToProps<T extends EmitsOptions | ComponentTypeEmits> = T extends string[] ? { + [K in `on${Capitalize<T[number]>}`]?: (...args: any[]) => any; +} : T extends ObjectEmitsOptions ? { + [K in string & keyof T as `on${Capitalize<K>}`]?: (...args: T[K] extends (...args: infer P) => any ? P : T[K] extends null ? any[] : never) => any; +} : {}; +type TypeEmitsToOptions<T extends ComponentTypeEmits> = { + [K in keyof T & string]: T[K] extends [...args: infer Args] ? (...args: Args) => any : () => any; +} & (T extends (...args: any[]) => any ? ParametersToFns<OverloadParameters<T>> : {}); +type ParametersToFns<T extends any[]> = { + [K in T[0]]: IsStringLiteral<K> extends true ? (...args: T extends [e: infer E, ...args: infer P] ? K extends E ? P : never : never) => any : never; +}; +type IsStringLiteral<T> = T extends string ? string extends T ? false : true : false; +export type ShortEmitsToObject<E> = E extends Record<string, any[]> ? { + [K in keyof E]: (...args: E[K]) => any; +} : E; +export type EmitFn<Options = ObjectEmitsOptions, Event extends keyof Options = keyof Options> = Options extends Array<infer V> ? (event: V, ...args: any[]) => void : {} extends Options ? (event: string, ...args: any[]) => void : UnionToIntersection<{ + [key in Event]: Options[key] extends (...args: infer Args) => any ? (event: key, ...args: Args) => void : Options[key] extends any[] ? (event: key, ...args: Options[key]) => void : (event: key, ...args: any[]) => void; +}[Event]>; + +/** +Runtime helper for applying directives to a vnode. Example usage: + +const comp = resolveComponent('comp') +const foo = resolveDirective('foo') +const bar = resolveDirective('bar') + +return withDirectives(h(comp), [ + [foo, this.x], + [bar, this.y] +]) +*/ + +export interface DirectiveBinding<Value = any, Modifiers extends string = string, Arg extends string = string> { + instance: ComponentPublicInstance | Record<string, any> | null; + value: Value; + oldValue: Value | null; + arg?: Arg; + modifiers: DirectiveModifiers<Modifiers>; + dir: ObjectDirective<any, Value>; +} +export type DirectiveHook<HostElement = any, Prev = VNode<any, HostElement> | null, Value = any, Modifiers extends string = string, Arg extends string = string> = (el: HostElement, binding: DirectiveBinding<Value, Modifiers, Arg>, vnode: VNode<any, HostElement>, prevVNode: Prev) => void; +type SSRDirectiveHook<Value = any, Modifiers extends string = string, Arg extends string = string> = (binding: DirectiveBinding<Value, Modifiers, Arg>, vnode: VNode) => Data | undefined; +export interface ObjectDirective<HostElement = any, Value = any, Modifiers extends string = string, Arg extends string = string> { + created?: DirectiveHook<HostElement, null, Value, Modifiers, Arg>; + beforeMount?: DirectiveHook<HostElement, null, Value, Modifiers, Arg>; + mounted?: DirectiveHook<HostElement, null, Value, Modifiers, Arg>; + beforeUpdate?: DirectiveHook<HostElement, VNode<any, HostElement>, Value, Modifiers, Arg>; + updated?: DirectiveHook<HostElement, VNode<any, HostElement>, Value, Modifiers, Arg>; + beforeUnmount?: DirectiveHook<HostElement, null, Value, Modifiers, Arg>; + unmounted?: DirectiveHook<HostElement, null, Value, Modifiers, Arg>; + getSSRProps?: SSRDirectiveHook<Value, Modifiers, Arg>; + deep?: boolean; +} +export type FunctionDirective<HostElement = any, V = any, Modifiers extends string = string, Arg extends string = string> = DirectiveHook<HostElement, any, V, Modifiers, Arg>; +export type Directive<HostElement = any, Value = any, Modifiers extends string = string, Arg extends string = string> = ObjectDirective<HostElement, Value, Modifiers, Arg> | FunctionDirective<HostElement, Value, Modifiers, Arg>; +type DirectiveModifiers<K extends string = string> = Partial<Record<K, boolean>>; +export type DirectiveArguments = Array<[Directive | undefined] | [Directive | undefined, any] | [Directive | undefined, any, string] | [Directive | undefined, any, string | undefined, DirectiveModifiers]>; +/** + * Adds directives to a VNode. + */ +export declare function withDirectives<T extends VNode>(vnode: T, directives: DirectiveArguments): T; + +/** + * Custom properties added to component instances in any way and can be accessed through `this` + * + * @example + * Here is an example of adding a property `$router` to every component instance: + * ```ts + * import { createApp } from 'vue' + * import { Router, createRouter } from 'vue-router' + * + * declare module 'vue' { + * interface ComponentCustomProperties { + * $router: Router + * } + * } + * + * // effectively adding the router to every component instance + * const app = createApp({}) + * const router = createRouter() + * app.config.globalProperties.$router = router + * + * const vm = app.mount('#app') + * // we can access the router from the instance + * vm.$router.push('/') + * ``` + */ +export interface ComponentCustomProperties { +} +type IsDefaultMixinComponent<T> = T extends ComponentOptionsMixin ? ComponentOptionsMixin extends T ? true : false : false; +type MixinToOptionTypes<T> = T extends ComponentOptionsBase<infer P, infer B, infer D, infer C, infer M, infer Mixin, infer Extends, any, any, infer Defaults, any, any, any, any, any, any, any> ? OptionTypesType<P & {}, B & {}, D & {}, C & {}, M & {}, Defaults & {}> & IntersectionMixin<Mixin> & IntersectionMixin<Extends> : never; +type ExtractMixin<T> = { + Mixin: MixinToOptionTypes<T>; +}[T extends ComponentOptionsMixin ? 'Mixin' : never]; +type IntersectionMixin<T> = IsDefaultMixinComponent<T> extends true ? OptionTypesType : UnionToIntersection<ExtractMixin<T>>; +type UnwrapMixinsType<T, Type extends OptionTypesKeys> = T extends OptionTypesType ? T[Type] : never; +type EnsureNonVoid<T> = T extends void ? {} : T; +type ComponentPublicInstanceConstructor<T extends ComponentPublicInstance<Props, RawBindings, D, C, M> = ComponentPublicInstance<any>, Props = any, RawBindings = any, D = any, C extends ComputedOptions = ComputedOptions, M extends MethodOptions = MethodOptions> = { + __isFragment?: never; + __isTeleport?: never; + __isSuspense?: never; + new (...args: any[]): T; +}; +/** + * @deprecated This is no longer used internally, but exported and relied on by + * existing library types generated by vue-tsc. + */ +export type CreateComponentPublicInstance<P = {}, B = {}, D = {}, C extends ComputedOptions = {}, M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = {}, PublicProps = P, Defaults = {}, MakeDefaultsOptional extends boolean = false, I extends ComponentInjectOptions = {}, S extends SlotsType = {}, PublicMixin = IntersectionMixin<Mixin> & IntersectionMixin<Extends>, PublicP = UnwrapMixinsType<PublicMixin, 'P'> & EnsureNonVoid<P>, PublicB = UnwrapMixinsType<PublicMixin, 'B'> & EnsureNonVoid<B>, PublicD = UnwrapMixinsType<PublicMixin, 'D'> & EnsureNonVoid<D>, PublicC extends ComputedOptions = UnwrapMixinsType<PublicMixin, 'C'> & EnsureNonVoid<C>, PublicM extends MethodOptions = UnwrapMixinsType<PublicMixin, 'M'> & EnsureNonVoid<M>, PublicDefaults = UnwrapMixinsType<PublicMixin, 'Defaults'> & EnsureNonVoid<Defaults>> = ComponentPublicInstance<PublicP, PublicB, PublicD, PublicC, PublicM, E, PublicProps, PublicDefaults, MakeDefaultsOptional, ComponentOptionsBase<P, B, D, C, M, Mixin, Extends, E, string, Defaults, {}, string, S>, I, S>; +/** + * This is the same as `CreateComponentPublicInstance` but adds local components, + * global directives, exposed, and provide inference. + * It changes the arguments order so that we don't need to repeat mixin + * inference everywhere internally, but it has to be a new type to avoid + * breaking types that relies on previous arguments order (#10842) + */ +export type CreateComponentPublicInstanceWithMixins<P = {}, B = {}, D = {}, C extends ComputedOptions = {}, M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = {}, PublicProps = P, Defaults = {}, MakeDefaultsOptional extends boolean = false, I extends ComponentInjectOptions = {}, S extends SlotsType = {}, LC extends Record<string, Component> = {}, Directives extends Record<string, Directive> = {}, Exposed extends string = string, TypeRefs extends Data = {}, TypeEl extends Element = any, Provide extends ComponentProvideOptions = ComponentProvideOptions, PublicMixin = IntersectionMixin<Mixin> & IntersectionMixin<Extends>, PublicP = UnwrapMixinsType<PublicMixin, 'P'> & EnsureNonVoid<P>, PublicB = UnwrapMixinsType<PublicMixin, 'B'> & EnsureNonVoid<B>, PublicD = UnwrapMixinsType<PublicMixin, 'D'> & EnsureNonVoid<D>, PublicC extends ComputedOptions = UnwrapMixinsType<PublicMixin, 'C'> & EnsureNonVoid<C>, PublicM extends MethodOptions = UnwrapMixinsType<PublicMixin, 'M'> & EnsureNonVoid<M>, PublicDefaults = UnwrapMixinsType<PublicMixin, 'Defaults'> & EnsureNonVoid<Defaults>> = ComponentPublicInstance<PublicP, PublicB, PublicD, PublicC, PublicM, E, PublicProps, PublicDefaults, MakeDefaultsOptional, ComponentOptionsBase<P, B, D, C, M, Mixin, Extends, E, string, Defaults, {}, string, S, LC, Directives, Exposed, Provide>, I, S, Exposed, TypeRefs, TypeEl>; +type ExposedKeys<T, Exposed extends string & keyof T> = '' extends Exposed ? T : Pick<T, Exposed>; +export type ComponentPublicInstance<P = {}, // props type extracted from props option +B = {}, // raw bindings returned from setup() +D = {}, // return from data() +C extends ComputedOptions = {}, M extends MethodOptions = {}, E extends EmitsOptions = {}, PublicProps = {}, Defaults = {}, MakeDefaultsOptional extends boolean = false, Options = ComponentOptionsBase<any, any, any, any, any, any, any, any, any>, I extends ComponentInjectOptions = {}, S extends SlotsType = {}, Exposed extends string = '', TypeRefs extends Data = {}, TypeEl extends Element = any> = { + $: ComponentInternalInstance; + $data: D; + $props: MakeDefaultsOptional extends true ? Partial<Defaults> & Omit<Prettify<P> & PublicProps, keyof Defaults> : Prettify<P> & PublicProps; + $attrs: Data; + $refs: Data & TypeRefs; + $slots: UnwrapSlotsType<S>; + $root: ComponentPublicInstance | null; + $parent: ComponentPublicInstance | null; + $host: Element | null; + $emit: EmitFn<E>; + $el: TypeEl; + $options: Options & MergedComponentOptionsOverride; + $forceUpdate: () => void; + $nextTick: typeof nextTick; + $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, OnCleanup]) => any : (...args: [any, any, OnCleanup]) => any, options?: WatchOptions): WatchStopHandle; +} & ExposedKeys<IfAny<P, P, Readonly<Defaults> & Omit<P, keyof ShallowUnwrapRef<B> | keyof Defaults>> & ShallowUnwrapRef<B> & UnwrapNestedRefs<D> & ExtractComputedReturns<C> & M & ComponentCustomProperties & InjectToObject<I>, Exposed>; + +declare enum LifecycleHooks { + BEFORE_CREATE = "bc", + CREATED = "c", + BEFORE_MOUNT = "bm", + MOUNTED = "m", + BEFORE_UPDATE = "bu", + UPDATED = "u", + BEFORE_UNMOUNT = "bum", + UNMOUNTED = "um", + DEACTIVATED = "da", + ACTIVATED = "a", + RENDER_TRIGGERED = "rtg", + RENDER_TRACKED = "rtc", + ERROR_CAPTURED = "ec", + SERVER_PREFETCH = "sp" +} + +export interface SuspenseProps { + onResolve?: () => void; + onPending?: () => void; + onFallback?: () => void; + timeout?: string | number; + /** + * Allow suspense to be captured by parent suspense + * + * @default false + */ + suspensible?: boolean; +} +declare const SuspenseImpl: { + name: string; + __isSuspense: boolean; + process(n1: VNode | null, n2: VNode, container: RendererElement, anchor: RendererNode | null, parentComponent: ComponentInternalInstance | null, parentSuspense: SuspenseBoundary | null, namespace: ElementNamespace, slotScopeIds: string[] | null, optimized: boolean, rendererInternals: RendererInternals): void; + hydrate: typeof hydrateSuspense; + normalize: typeof normalizeSuspenseChildren; +}; +export declare const Suspense: { + __isSuspense: true; + new (): { + $props: VNodeProps & SuspenseProps; + $slots: { + default(): VNode[]; + fallback(): VNode[]; + }; + }; +}; +export interface SuspenseBoundary { + vnode: VNode<RendererNode, RendererElement, SuspenseProps>; + parent: SuspenseBoundary | null; + parentComponent: ComponentInternalInstance | null; + namespace: ElementNamespace; + container: RendererElement; + hiddenContainer: RendererElement; + activeBranch: VNode | null; + pendingBranch: VNode | null; + deps: number; + pendingId: number; + timeout: number; + isInFallback: boolean; + isHydrating: boolean; + isUnmounted: boolean; + effects: Function[]; + resolve(force?: boolean, sync?: boolean): void; + fallback(fallbackVNode: VNode): void; + move(container: RendererElement, anchor: RendererNode | null, type: MoveType): void; + next(): RendererNode | null; + registerDep(instance: ComponentInternalInstance, setupRenderEffect: SetupRenderEffectFn, optimized: boolean): void; + unmount(parentSuspense: SuspenseBoundary | null, doRemove?: boolean): void; +} +declare function hydrateSuspense(node: Node, vnode: VNode, parentComponent: ComponentInternalInstance | null, parentSuspense: SuspenseBoundary | null, namespace: ElementNamespace, slotScopeIds: string[] | null, optimized: boolean, rendererInternals: RendererInternals, hydrateNode: (node: Node, vnode: VNode, parentComponent: ComponentInternalInstance | null, parentSuspense: SuspenseBoundary | null, slotScopeIds: string[] | null, optimized: boolean) => Node | null): Node | null; +declare function normalizeSuspenseChildren(vnode: VNode): void; + +export type RootHydrateFunction = (vnode: VNode<Node, Element>, container: (Element | ShadowRoot) & { + _vnode?: VNode; +}) => void; + +type Hook<T = () => void> = T | T[]; +export interface BaseTransitionProps<HostElement = RendererElement> { + mode?: 'in-out' | 'out-in' | 'default'; + appear?: boolean; + persisted?: boolean; + onBeforeEnter?: Hook<(el: HostElement) => void>; + onEnter?: Hook<(el: HostElement, done: () => void) => void>; + onAfterEnter?: Hook<(el: HostElement) => void>; + onEnterCancelled?: Hook<(el: HostElement) => void>; + onBeforeLeave?: Hook<(el: HostElement) => void>; + onLeave?: Hook<(el: HostElement, done: () => void) => void>; + onAfterLeave?: Hook<(el: HostElement) => void>; + onLeaveCancelled?: Hook<(el: HostElement) => void>; + onBeforeAppear?: Hook<(el: HostElement) => void>; + onAppear?: Hook<(el: HostElement, done: () => void) => void>; + onAfterAppear?: Hook<(el: HostElement) => void>; + onAppearCancelled?: Hook<(el: HostElement) => void>; +} +export interface TransitionHooks<HostElement = RendererElement> { + mode: BaseTransitionProps['mode']; + persisted: boolean; + beforeEnter(el: HostElement): void; + enter(el: HostElement): void; + leave(el: HostElement, remove: () => void): void; + clone(vnode: VNode): TransitionHooks<HostElement>; + afterLeave?(): void; + delayLeave?(el: HostElement, earlyRemove: () => void, delayedLeave: () => void): void; + delayedLeave?(): void; +} +export interface TransitionState { + isMounted: boolean; + isLeaving: boolean; + isUnmounting: boolean; + leavingVNodes: Map<any, Record<string, VNode>>; +} +export declare function useTransitionState(): TransitionState; +export declare const BaseTransitionPropsValidators: Record<string, any>; +export declare const BaseTransition: { + new (): { + $props: BaseTransitionProps<any>; + $slots: { + default(): VNode[]; + }; + }; +}; +export declare function resolveTransitionHooks(vnode: VNode, props: BaseTransitionProps<any>, state: TransitionState, instance: ComponentInternalInstance, postClone?: (hooks: TransitionHooks) => void): TransitionHooks; +export declare function setTransitionHooks(vnode: VNode, hooks: TransitionHooks): void; +export declare function getTransitionRawChildren(children: VNode[], keepComment?: boolean, parentKey?: VNode['key']): VNode[]; + +export interface Renderer<HostElement = RendererElement> { + render: RootRenderFunction<HostElement>; + createApp: CreateAppFunction<HostElement>; +} +export interface HydrationRenderer extends Renderer<Element | ShadowRoot> { + hydrate: RootHydrateFunction; +} +export type ElementNamespace = 'svg' | 'mathml' | undefined; +export type RootRenderFunction<HostElement = RendererElement> = (vnode: VNode | null, container: HostElement, namespace?: ElementNamespace) => void; +export interface RendererOptions<HostNode = RendererNode, HostElement = RendererElement> { + patchProp(el: HostElement, key: string, prevValue: any, nextValue: any, namespace?: ElementNamespace, parentComponent?: ComponentInternalInstance | null): void; + insert(el: HostNode, parent: HostElement, anchor?: HostNode | null): void; + remove(el: HostNode): void; + createElement(type: string, namespace?: ElementNamespace, isCustomizedBuiltIn?: string, vnodeProps?: (VNodeProps & { + [key: string]: any; + }) | null): HostElement; + createText(text: string): HostNode; + createComment(text: string): HostNode; + setText(node: HostNode, text: string): void; + setElementText(node: HostElement, text: string): void; + parentNode(node: HostNode): HostElement | null; + nextSibling(node: HostNode): HostNode | null; + querySelector?(selector: string): HostElement | null; + setScopeId?(el: HostElement, id: string): void; + cloneNode?(node: HostNode): HostNode; + insertStaticContent?(content: string, parent: HostElement, anchor: HostNode | null, namespace: ElementNamespace, start?: HostNode | null, end?: HostNode | null): [HostNode, HostNode]; +} +export interface RendererNode { + [key: string | symbol]: any; +} +export interface RendererElement extends RendererNode { +} +interface RendererInternals<HostNode = RendererNode, HostElement = RendererElement> { + p: PatchFn; + um: UnmountFn; + r: RemoveFn; + m: MoveFn; + mt: MountComponentFn; + mc: MountChildrenFn; + pc: PatchChildrenFn; + pbc: PatchBlockChildrenFn; + n: NextFn; + o: RendererOptions<HostNode, HostElement>; +} +type PatchFn = (n1: VNode | null, // null means this is a mount +n2: VNode, container: RendererElement, anchor?: RendererNode | null, parentComponent?: ComponentInternalInstance | null, parentSuspense?: SuspenseBoundary | null, namespace?: ElementNamespace, slotScopeIds?: string[] | null, optimized?: boolean) => void; +type MountChildrenFn = (children: VNodeArrayChildren, container: RendererElement, anchor: RendererNode | null, parentComponent: ComponentInternalInstance | null, parentSuspense: SuspenseBoundary | null, namespace: ElementNamespace, slotScopeIds: string[] | null, optimized: boolean, start?: number) => void; +type PatchChildrenFn = (n1: VNode | null, n2: VNode, container: RendererElement, anchor: RendererNode | null, parentComponent: ComponentInternalInstance | null, parentSuspense: SuspenseBoundary | null, namespace: ElementNamespace, slotScopeIds: string[] | null, optimized: boolean) => void; +type PatchBlockChildrenFn = (oldChildren: VNode[], newChildren: VNode[], fallbackContainer: RendererElement, parentComponent: ComponentInternalInstance | null, parentSuspense: SuspenseBoundary | null, namespace: ElementNamespace, slotScopeIds: string[] | null) => void; +type MoveFn = (vnode: VNode, container: RendererElement, anchor: RendererNode | null, type: MoveType, parentSuspense?: SuspenseBoundary | null) => void; +type NextFn = (vnode: VNode) => RendererNode | null; +type UnmountFn = (vnode: VNode, parentComponent: ComponentInternalInstance | null, parentSuspense: SuspenseBoundary | null, doRemove?: boolean, optimized?: boolean) => void; +type RemoveFn = (vnode: VNode) => void; +type MountComponentFn = (initialVNode: VNode, container: RendererElement, anchor: RendererNode | null, parentComponent: ComponentInternalInstance | null, parentSuspense: SuspenseBoundary | null, namespace: ElementNamespace, optimized: boolean) => void; +type SetupRenderEffectFn = (instance: ComponentInternalInstance, initialVNode: VNode, container: RendererElement, anchor: RendererNode | null, parentSuspense: SuspenseBoundary | null, namespace: ElementNamespace, optimized: boolean) => void; +declare enum MoveType { + ENTER = 0, + LEAVE = 1, + REORDER = 2 +} +/** + * The createRenderer function accepts two generic arguments: + * HostNode and HostElement, corresponding to Node and Element types in the + * host environment. For example, for runtime-dom, HostNode would be the DOM + * `Node` interface and HostElement would be the DOM `Element` interface. + * + * Custom renderers can pass in the platform specific types like this: + * + * ``` js + * const { render, createApp } = createRenderer<Node, Element>({ + * patchProp, + * ...nodeOps + * }) + * ``` + */ +export declare function createRenderer<HostNode = RendererNode, HostElement = RendererElement>(options: RendererOptions<HostNode, HostElement>): Renderer<HostElement>; +export declare function createHydrationRenderer(options: RendererOptions<Node, Element>): HydrationRenderer; + +type MatchPattern = string | RegExp | (string | RegExp)[]; +export interface KeepAliveProps { + include?: MatchPattern; + exclude?: MatchPattern; + max?: number | string; +} +export declare const KeepAlive: { + __isKeepAlive: true; + new (): { + $props: VNodeProps & KeepAliveProps; + $slots: { + default(): VNode[]; + }; + }; +}; +export declare function onActivated(hook: Function, target?: ComponentInternalInstance | null): void; +export declare function onDeactivated(hook: Function, target?: ComponentInternalInstance | null): void; + +type CreateHook<T = any> = (hook: T, target?: ComponentInternalInstance | null) => void; +export declare const onBeforeMount: CreateHook; +export declare const onMounted: CreateHook; +export declare const onBeforeUpdate: CreateHook; +export declare const onUpdated: CreateHook; +export declare const onBeforeUnmount: CreateHook; +export declare const onUnmounted: CreateHook; +export declare const onServerPrefetch: CreateHook; +type DebuggerHook = (e: DebuggerEvent) => void; +export declare const onRenderTriggered: CreateHook<DebuggerHook>; +export declare const onRenderTracked: CreateHook<DebuggerHook>; +type ErrorCapturedHook<TError = unknown> = (err: TError, instance: ComponentPublicInstance | null, info: string) => boolean | void; +export declare function onErrorCaptured<TError = Error>(hook: ErrorCapturedHook<TError>, target?: ComponentInternalInstance | null): void; + +declare enum DeprecationTypes$1 { + GLOBAL_MOUNT = "GLOBAL_MOUNT", + GLOBAL_MOUNT_CONTAINER = "GLOBAL_MOUNT_CONTAINER", + GLOBAL_EXTEND = "GLOBAL_EXTEND", + GLOBAL_PROTOTYPE = "GLOBAL_PROTOTYPE", + GLOBAL_SET = "GLOBAL_SET", + GLOBAL_DELETE = "GLOBAL_DELETE", + GLOBAL_OBSERVABLE = "GLOBAL_OBSERVABLE", + GLOBAL_PRIVATE_UTIL = "GLOBAL_PRIVATE_UTIL", + CONFIG_SILENT = "CONFIG_SILENT", + CONFIG_DEVTOOLS = "CONFIG_DEVTOOLS", + CONFIG_KEY_CODES = "CONFIG_KEY_CODES", + CONFIG_PRODUCTION_TIP = "CONFIG_PRODUCTION_TIP", + CONFIG_IGNORED_ELEMENTS = "CONFIG_IGNORED_ELEMENTS", + CONFIG_WHITESPACE = "CONFIG_WHITESPACE", + CONFIG_OPTION_MERGE_STRATS = "CONFIG_OPTION_MERGE_STRATS", + INSTANCE_SET = "INSTANCE_SET", + INSTANCE_DELETE = "INSTANCE_DELETE", + INSTANCE_DESTROY = "INSTANCE_DESTROY", + INSTANCE_EVENT_EMITTER = "INSTANCE_EVENT_EMITTER", + INSTANCE_EVENT_HOOKS = "INSTANCE_EVENT_HOOKS", + INSTANCE_CHILDREN = "INSTANCE_CHILDREN", + INSTANCE_LISTENERS = "INSTANCE_LISTENERS", + INSTANCE_SCOPED_SLOTS = "INSTANCE_SCOPED_SLOTS", + INSTANCE_ATTRS_CLASS_STYLE = "INSTANCE_ATTRS_CLASS_STYLE", + OPTIONS_DATA_FN = "OPTIONS_DATA_FN", + OPTIONS_DATA_MERGE = "OPTIONS_DATA_MERGE", + OPTIONS_BEFORE_DESTROY = "OPTIONS_BEFORE_DESTROY", + OPTIONS_DESTROYED = "OPTIONS_DESTROYED", + WATCH_ARRAY = "WATCH_ARRAY", + PROPS_DEFAULT_THIS = "PROPS_DEFAULT_THIS", + V_ON_KEYCODE_MODIFIER = "V_ON_KEYCODE_MODIFIER", + CUSTOM_DIR = "CUSTOM_DIR", + ATTR_FALSE_VALUE = "ATTR_FALSE_VALUE", + ATTR_ENUMERATED_COERCION = "ATTR_ENUMERATED_COERCION", + TRANSITION_CLASSES = "TRANSITION_CLASSES", + TRANSITION_GROUP_ROOT = "TRANSITION_GROUP_ROOT", + COMPONENT_ASYNC = "COMPONENT_ASYNC", + COMPONENT_FUNCTIONAL = "COMPONENT_FUNCTIONAL", + COMPONENT_V_MODEL = "COMPONENT_V_MODEL", + RENDER_FUNCTION = "RENDER_FUNCTION", + FILTERS = "FILTERS", + PRIVATE_APIS = "PRIVATE_APIS" +} +type CompatConfig = Partial<Record<DeprecationTypes$1, boolean | 'suppress-warning'>> & { + MODE?: 2 | 3 | ((comp: Component | null) => 2 | 3); +}; +declare function configureCompat(config: CompatConfig): void; + +/** + * Interface for declaring custom options. + * + * @example + * ```ts + * declare module 'vue' { + * interface ComponentCustomOptions { + * beforeRouteUpdate?( + * to: Route, + * from: Route, + * next: () => void + * ): void + * } + * } + * ``` + */ +export interface ComponentCustomOptions { +} +export type RenderFunction = () => VNodeChild; +export interface ComponentOptionsBase<Props, RawBindings, D, C extends ComputedOptions, M extends MethodOptions, Mixin extends ComponentOptionsMixin, Extends extends ComponentOptionsMixin, E extends EmitsOptions, EE extends string = string, Defaults = {}, I extends ComponentInjectOptions = {}, II extends string = string, S extends SlotsType = {}, LC extends Record<string, Component> = {}, Directives extends Record<string, Directive> = {}, Exposed extends string = string, Provide extends ComponentProvideOptions = ComponentProvideOptions> extends LegacyOptions<Props, D, C, M, Mixin, Extends, I, II, Provide>, ComponentInternalOptions, ComponentCustomOptions { + setup?: (this: void, props: LooseRequired<Props & Prettify<UnwrapMixinsType<IntersectionMixin<Mixin> & IntersectionMixin<Extends>, 'P'>>>, ctx: SetupContext<E, S>) => Promise<RawBindings> | RawBindings | RenderFunction | void; + name?: string; + template?: string | object; + render?: Function; + components?: LC & Record<string, Component>; + directives?: Directives & Record<string, Directive>; + inheritAttrs?: boolean; + emits?: (E | EE[]) & ThisType<void>; + slots?: S; + expose?: Exposed[]; + serverPrefetch?(): void | Promise<any>; + compilerOptions?: RuntimeCompilerOptions; + call?: (this: unknown, ...args: unknown[]) => never; + __isFragment?: never; + __isTeleport?: never; + __isSuspense?: never; + __defaults?: Defaults; +} +/** + * Subset of compiler options that makes sense for the runtime. + */ +export interface RuntimeCompilerOptions { + isCustomElement?: (tag: string) => boolean; + whitespace?: 'preserve' | 'condense'; + comments?: boolean; + delimiters?: [string, string]; +} +export type ComponentOptions<Props = {}, RawBindings = any, D = any, C extends ComputedOptions = any, M extends MethodOptions = any, Mixin extends ComponentOptionsMixin = any, Extends extends ComponentOptionsMixin = any, E extends EmitsOptions = any, EE extends string = string, Defaults = {}, I extends ComponentInjectOptions = {}, II extends string = string, S extends SlotsType = {}, LC extends Record<string, Component> = {}, Directives extends Record<string, Directive> = {}, Exposed extends string = string, Provide extends ComponentProvideOptions = ComponentProvideOptions> = ComponentOptionsBase<Props, RawBindings, D, C, M, Mixin, Extends, E, EE, Defaults, I, II, S, LC, Directives, Exposed, Provide> & ThisType<CreateComponentPublicInstanceWithMixins<{}, RawBindings, D, C, M, Mixin, Extends, E, Readonly<Props>, Defaults, false, I, S, LC, Directives>>; +export type ComponentOptionsMixin = ComponentOptionsBase<any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>; +export type ComputedOptions = Record<string, ComputedGetter<any> | WritableComputedOptions<any>>; +export interface MethodOptions { + [key: string]: Function; +} +type ExtractComputedReturns<T extends any> = { + [key in keyof T]: T[key] extends { + get: (...args: any[]) => infer TReturn; + } ? TReturn : T[key] extends (...args: any[]) => infer TReturn ? TReturn : never; +}; +type ObjectWatchOptionItem = { + handler: WatchCallback | string; +} & WatchOptions; +type WatchOptionItem = string | WatchCallback | ObjectWatchOptionItem; +type ComponentWatchOptionItem = WatchOptionItem | WatchOptionItem[]; +type ComponentWatchOptions = Record<string, ComponentWatchOptionItem>; +export type ComponentProvideOptions = ObjectProvideOptions | Function; +type ObjectProvideOptions = Record<string | symbol, unknown>; +export type ComponentInjectOptions = string[] | ObjectInjectOptions; +type ObjectInjectOptions = Record<string | symbol, string | symbol | { + from?: string | symbol; + default?: unknown; +}>; +type InjectToObject<T extends ComponentInjectOptions> = T extends string[] ? { + [K in T[number]]?: unknown; +} : T extends ObjectInjectOptions ? { + [K in keyof T]?: unknown; +} : never; +interface LegacyOptions<Props, D, C extends ComputedOptions, M extends MethodOptions, Mixin extends ComponentOptionsMixin, Extends extends ComponentOptionsMixin, I extends ComponentInjectOptions, II extends string, Provide extends ComponentProvideOptions = ComponentProvideOptions> { + compatConfig?: CompatConfig; + [key: string]: any; + data?: (this: CreateComponentPublicInstanceWithMixins<Props, {}, {}, {}, MethodOptions, Mixin, Extends>, vm: CreateComponentPublicInstanceWithMixins<Props, {}, {}, {}, MethodOptions, Mixin, Extends>) => D; + computed?: C; + methods?: M; + watch?: ComponentWatchOptions; + provide?: Provide; + inject?: I | II[]; + filters?: Record<string, Function>; + mixins?: Mixin[]; + extends?: Extends; + beforeCreate?(): any; + created?(): any; + beforeMount?(): any; + mounted?(): any; + beforeUpdate?(): any; + updated?(): any; + activated?(): any; + deactivated?(): any; + /** @deprecated use `beforeUnmount` instead */ + beforeDestroy?(): any; + beforeUnmount?(): any; + /** @deprecated use `unmounted` instead */ + destroyed?(): any; + unmounted?(): any; + renderTracked?: DebuggerHook; + renderTriggered?: DebuggerHook; + errorCaptured?: ErrorCapturedHook; + /** + * runtime compile only + * @deprecated use `compilerOptions.delimiters` instead. + */ + delimiters?: [string, string]; + /** + * #3468 + * + * type-only, used to assist Mixin's type inference, + * typescript will try to simplify the inferred `Mixin` type, + * with the `__differentiator`, typescript won't be able to combine different mixins, + * because the `__differentiator` will be different + */ + __differentiator?: keyof D | keyof C | keyof M; +} +type MergedHook<T = () => void> = T | T[]; +type MergedComponentOptionsOverride = { + beforeCreate?: MergedHook; + created?: MergedHook; + beforeMount?: MergedHook; + mounted?: MergedHook; + beforeUpdate?: MergedHook; + updated?: MergedHook; + activated?: MergedHook; + deactivated?: MergedHook; + /** @deprecated use `beforeUnmount` instead */ + beforeDestroy?: MergedHook; + beforeUnmount?: MergedHook; + /** @deprecated use `unmounted` instead */ + destroyed?: MergedHook; + unmounted?: MergedHook; + renderTracked?: MergedHook<DebuggerHook>; + renderTriggered?: MergedHook<DebuggerHook>; + errorCaptured?: MergedHook<ErrorCapturedHook>; +}; +type OptionTypesKeys = 'P' | 'B' | 'D' | 'C' | 'M' | 'Defaults'; +type OptionTypesType<P = {}, B = {}, D = {}, C extends ComputedOptions = {}, M extends MethodOptions = {}, Defaults = {}> = { + P: P; + B: B; + D: D; + C: C; + M: M; + Defaults: Defaults; +}; +/** + * @deprecated + */ +export type ComponentOptionsWithoutProps<Props = {}, RawBindings = {}, D = {}, C extends ComputedOptions = {}, M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = {}, EE extends string = string, I extends ComponentInjectOptions = {}, II extends string = string, S extends SlotsType = {}, LC extends Record<string, Component> = {}, Directives extends Record<string, Directive> = {}, Exposed extends string = string, Provide extends ComponentProvideOptions = ComponentProvideOptions, TE extends ComponentTypeEmits = {}, ResolvedEmits extends EmitsOptions = {} extends E ? TypeEmitsToOptions<TE> : E, PE = Props & EmitsToProps<ResolvedEmits>> = ComponentOptionsBase<PE, RawBindings, D, C, M, Mixin, Extends, E, EE, {}, I, II, S, LC, Directives, Exposed, Provide> & { + props?: never; + /** + * @private for language-tools use only + */ + __typeProps?: Props; + /** + * @private for language-tools use only + */ + __typeEmits?: TE; +} & ThisType<CreateComponentPublicInstanceWithMixins<PE, RawBindings, D, C, M, Mixin, Extends, ResolvedEmits, EE, {}, false, I, S, LC, Directives, Exposed>>; +/** + * @deprecated + */ +export type ComponentOptionsWithArrayProps<PropNames extends string = string, RawBindings = {}, D = {}, C extends ComputedOptions = {}, M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = EmitsOptions, EE extends string = string, I extends ComponentInjectOptions = {}, II extends string = string, S extends SlotsType = {}, LC extends Record<string, Component> = {}, Directives extends Record<string, Directive> = {}, Exposed extends string = string, Provide extends ComponentProvideOptions = ComponentProvideOptions, Props = Prettify<Readonly<{ + [key in PropNames]?: any; +} & EmitsToProps<E>>>> = ComponentOptionsBase<Props, RawBindings, D, C, M, Mixin, Extends, E, EE, {}, I, II, S, LC, Directives, Exposed, Provide> & { + props: PropNames[]; +} & ThisType<CreateComponentPublicInstanceWithMixins<Props, RawBindings, D, C, M, Mixin, Extends, E, Props, {}, false, I, S, LC, Directives, Exposed>>; +/** + * @deprecated + */ +export type ComponentOptionsWithObjectProps<PropsOptions = ComponentObjectPropsOptions, RawBindings = {}, D = {}, C extends ComputedOptions = {}, M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = EmitsOptions, EE extends string = string, I extends ComponentInjectOptions = {}, II extends string = string, S extends SlotsType = {}, LC extends Record<string, Component> = {}, Directives extends Record<string, Directive> = {}, Exposed extends string = string, Provide extends ComponentProvideOptions = ComponentProvideOptions, Props = Prettify<Readonly<ExtractPropTypes<PropsOptions>> & Readonly<EmitsToProps<E>>>, Defaults = ExtractDefaultPropTypes<PropsOptions>> = ComponentOptionsBase<Props, RawBindings, D, C, M, Mixin, Extends, E, EE, Defaults, I, II, S, LC, Directives, Exposed, Provide> & { + props: PropsOptions & ThisType<void>; +} & ThisType<CreateComponentPublicInstanceWithMixins<Props, RawBindings, D, C, M, Mixin, Extends, E, Props, Defaults, false, I, S, LC, Directives>>; + +interface InjectionConstraint<T> { +} +export type InjectionKey<T> = symbol & InjectionConstraint<T>; +export declare function provide<T, K = InjectionKey<T> | string | number>(key: K, value: K extends InjectionKey<infer V> ? V : T): void; +export declare function inject<T>(key: InjectionKey<T> | string): T | undefined; +export declare function inject<T>(key: InjectionKey<T> | string, defaultValue: T, treatDefaultAsFactory?: false): T; +export declare function inject<T>(key: InjectionKey<T> | string, defaultValue: T | (() => T), treatDefaultAsFactory: true): T; +/** + * Returns true if `inject()` can be used without warning about being called in the wrong place (e.g. outside of + * setup()). This is used by libraries that want to use `inject()` internally without triggering a warning to the end + * user. One example is `useRoute()` in `vue-router`. + */ +export declare function hasInjectionContext(): boolean; + +export type PublicProps = VNodeProps & AllowedComponentProps & ComponentCustomProps; +type ResolveProps<PropsOrPropOptions, E extends EmitsOptions> = Readonly<PropsOrPropOptions extends ComponentPropsOptions ? ExtractPropTypes<PropsOrPropOptions> : PropsOrPropOptions> & ({} extends E ? {} : EmitsToProps<E>); +export type DefineComponent<PropsOrPropOptions = {}, RawBindings = {}, D = {}, C extends ComputedOptions = ComputedOptions, M extends MethodOptions = MethodOptions, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = {}, EE extends string = string, PP = PublicProps, Props = ResolveProps<PropsOrPropOptions, E>, Defaults = ExtractDefaultPropTypes<PropsOrPropOptions>, S extends SlotsType = {}, LC extends Record<string, Component> = {}, Directives extends Record<string, Directive> = {}, Exposed extends string = string, Provide extends ComponentProvideOptions = ComponentProvideOptions, MakeDefaultsOptional extends boolean = true, TypeRefs extends Record<string, unknown> = {}, TypeEl extends Element = any> = ComponentPublicInstanceConstructor<CreateComponentPublicInstanceWithMixins<Props, RawBindings, D, C, M, Mixin, Extends, E, PP, Defaults, MakeDefaultsOptional, {}, S, LC & GlobalComponents, Directives & GlobalDirectives, Exposed, TypeRefs, TypeEl>> & ComponentOptionsBase<Props, RawBindings, D, C, M, Mixin, Extends, E, EE, Defaults, {}, string, S, LC & GlobalComponents, Directives & GlobalDirectives, Exposed, Provide> & PP; +export type DefineSetupFnComponent<P extends Record<string, any>, E extends EmitsOptions = {}, S extends SlotsType = SlotsType, Props = P & EmitsToProps<E>, PP = PublicProps> = new (props: Props & PP) => CreateComponentPublicInstanceWithMixins<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, E, PP, {}, false, {}, S>; +type ToResolvedProps<Props, Emits extends EmitsOptions> = Readonly<Props> & Readonly<EmitsToProps<Emits>>; +export declare function defineComponent<Props extends Record<string, any>, E extends EmitsOptions = {}, EE extends string = string, S extends SlotsType = {}>(setup: (props: Props, ctx: SetupContext<E, S>) => RenderFunction | Promise<RenderFunction>, options?: Pick<ComponentOptions, 'name' | 'inheritAttrs'> & { + props?: (keyof Props)[]; + emits?: E | EE[]; + slots?: S; +}): DefineSetupFnComponent<Props, E, S>; +export declare function defineComponent<Props extends Record<string, any>, E extends EmitsOptions = {}, EE extends string = string, S extends SlotsType = {}>(setup: (props: Props, ctx: SetupContext<E, S>) => RenderFunction | Promise<RenderFunction>, options?: Pick<ComponentOptions, 'name' | 'inheritAttrs'> & { + props?: ComponentObjectPropsOptions<Props>; + emits?: E | EE[]; + slots?: S; +}): DefineSetupFnComponent<Props, E, S>; +export declare function defineComponent<TypeProps, RuntimePropsOptions extends ComponentObjectPropsOptions = ComponentObjectPropsOptions, RuntimePropsKeys extends string = string, TypeEmits extends ComponentTypeEmits = {}, RuntimeEmitsOptions extends EmitsOptions = {}, RuntimeEmitsKeys extends string = string, Data = {}, SetupBindings = {}, Computed extends ComputedOptions = {}, Methods extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, InjectOptions extends ComponentInjectOptions = {}, InjectKeys extends string = string, Slots extends SlotsType = {}, LocalComponents extends Record<string, Component> = {}, Directives extends Record<string, Directive> = {}, Exposed extends string = string, Provide extends ComponentProvideOptions = ComponentProvideOptions, ResolvedEmits extends EmitsOptions = {} extends RuntimeEmitsOptions ? TypeEmitsToOptions<TypeEmits> : RuntimeEmitsOptions, InferredProps = IsKeyValues<TypeProps> extends true ? TypeProps : string extends RuntimePropsKeys ? ComponentObjectPropsOptions extends RuntimePropsOptions ? {} : ExtractPropTypes<RuntimePropsOptions> : { + [key in RuntimePropsKeys]?: any; +}, TypeRefs extends Record<string, unknown> = {}, TypeEl extends Element = any>(options: { + props?: (RuntimePropsOptions & ThisType<void>) | RuntimePropsKeys[]; + /** + * @private for language-tools use only + */ + __typeProps?: TypeProps; + /** + * @private for language-tools use only + */ + __typeEmits?: TypeEmits; + /** + * @private for language-tools use only + */ + __typeRefs?: TypeRefs; + /** + * @private for language-tools use only + */ + __typeEl?: TypeEl; +} & ComponentOptionsBase<ToResolvedProps<InferredProps, ResolvedEmits>, SetupBindings, Data, Computed, Methods, Mixin, Extends, RuntimeEmitsOptions, RuntimeEmitsKeys, {}, // Defaults +InjectOptions, InjectKeys, Slots, LocalComponents, Directives, Exposed, Provide> & ThisType<CreateComponentPublicInstanceWithMixins<ToResolvedProps<InferredProps, ResolvedEmits>, SetupBindings, Data, Computed, Methods, Mixin, Extends, ResolvedEmits, {}, {}, false, InjectOptions, Slots, LocalComponents, Directives, Exposed>>): DefineComponent<InferredProps, SetupBindings, Data, Computed, Methods, Mixin, Extends, ResolvedEmits, RuntimeEmitsKeys, PublicProps, ToResolvedProps<InferredProps, ResolvedEmits>, ExtractDefaultPropTypes<RuntimePropsOptions>, Slots, LocalComponents, Directives, Exposed, Provide, unknown extends TypeProps ? true : false, TypeRefs, TypeEl>; + +export interface App<HostElement = any> { + version: string; + config: AppConfig; + use<Options extends unknown[]>(plugin: Plugin<Options>, ...options: NoInfer<Options>): this; + use<Options>(plugin: Plugin<Options>, options: NoInfer<Options>): this; + mixin(mixin: ComponentOptions): this; + component(name: string): Component | undefined; + component<T extends Component | DefineComponent>(name: string, component: T): this; + directive<HostElement = any, Value = any, Modifiers extends string = string, Arg extends string = string>(name: string): Directive<HostElement, Value, Modifiers, Arg> | undefined; + directive<HostElement = any, Value = any, Modifiers extends string = string, Arg extends string = string>(name: string, directive: Directive<HostElement, Value, Modifiers, Arg>): this; + mount(rootContainer: HostElement | string, + /** + * @internal + */ + isHydrate?: boolean, + /** + * @internal + */ + namespace?: boolean | ElementNamespace, + /** + * @internal + */ + vnode?: VNode): ComponentPublicInstance; + unmount(): void; + onUnmount(cb: () => void): void; + provide<T, K = InjectionKey<T> | string | number>(key: K, value: K extends InjectionKey<infer V> ? V : T): this; + /** + * Runs a function with the app as active instance. This allows using of `inject()` within the function to get access + * to variables provided via `app.provide()`. + * + * @param fn - function to run with the app as active instance + */ + runWithContext<T>(fn: () => T): T; + _uid: number; + _component: ConcreteComponent; + _props: Data | null; + _container: HostElement | null; + _context: AppContext; + _instance: ComponentInternalInstance | null; + /** + * v2 compat only + */ + filter?(name: string): Function | undefined; + filter?(name: string, filter: Function): this; +} +export type OptionMergeFunction = (to: unknown, from: unknown) => any; +export interface AppConfig { + readonly isNativeTag: (tag: string) => boolean; + performance: boolean; + optionMergeStrategies: Record<string, OptionMergeFunction>; + globalProperties: ComponentCustomProperties & Record<string, any>; + errorHandler?: (err: unknown, instance: ComponentPublicInstance | null, info: string) => void; + warnHandler?: (msg: string, instance: ComponentPublicInstance | null, trace: string) => void; + /** + * Options to pass to `@vue/compiler-dom`. + * Only supported in runtime compiler build. + */ + compilerOptions: RuntimeCompilerOptions; + /** + * @deprecated use config.compilerOptions.isCustomElement + */ + isCustomElement?: (tag: string) => boolean; + /** + * TODO document for 3.5 + * Enable warnings for computed getters that recursively trigger itself. + */ + warnRecursiveComputed?: boolean; + /** + * Whether to throw unhandled errors in production. + * Default is `false` to avoid crashing on any error (and only logs it) + * But in some cases, e.g. SSR, throwing might be more desirable. + */ + throwUnhandledErrorInProduction?: boolean; + /** + * Prefix for all useId() calls within this app + */ + idPrefix?: string; +} +export interface AppContext { + app: App; + config: AppConfig; + mixins: ComponentOptions[]; + components: Record<string, Component>; + directives: Record<string, Directive>; + provides: Record<string | symbol, any>; +} +type PluginInstallFunction<Options = any[]> = Options extends unknown[] ? (app: App, ...options: Options) => any : (app: App, options: Options) => any; +export type ObjectPlugin<Options = any[]> = { + install: PluginInstallFunction<Options>; +}; +export type FunctionPlugin<Options = any[]> = PluginInstallFunction<Options> & Partial<ObjectPlugin<Options>>; +export type Plugin<Options = any[], P extends unknown[] = Options extends unknown[] ? Options : [Options]> = FunctionPlugin<P> | ObjectPlugin<P>; +export type CreateAppFunction<HostElement> = (rootComponent: Component, rootProps?: Data | null) => App<HostElement>; + +type TeleportVNode = VNode<RendererNode, RendererElement, TeleportProps>; +export interface TeleportProps { + to: string | RendererElement | null | undefined; + disabled?: boolean; + defer?: boolean; +} +declare const TeleportImpl: { + name: string; + __isTeleport: boolean; + process(n1: TeleportVNode | null, n2: TeleportVNode, container: RendererElement, anchor: RendererNode | null, parentComponent: ComponentInternalInstance | null, parentSuspense: SuspenseBoundary | null, namespace: ElementNamespace, slotScopeIds: string[] | null, optimized: boolean, internals: RendererInternals): void; + remove(vnode: VNode, parentComponent: ComponentInternalInstance | null, parentSuspense: SuspenseBoundary | null, { um: unmount, o: { remove: hostRemove } }: RendererInternals, doRemove: boolean): void; + move: typeof moveTeleport; + hydrate: typeof hydrateTeleport; +}; +declare enum TeleportMoveTypes { + TARGET_CHANGE = 0, + TOGGLE = 1,// enable / disable + REORDER = 2 +} +declare function moveTeleport(vnode: VNode, container: RendererElement, parentAnchor: RendererNode | null, { o: { insert }, m: move }: RendererInternals, moveType?: TeleportMoveTypes): void; +declare function hydrateTeleport(node: Node, vnode: TeleportVNode, parentComponent: ComponentInternalInstance | null, parentSuspense: SuspenseBoundary | null, slotScopeIds: string[] | null, optimized: boolean, { o: { nextSibling, parentNode, querySelector, insert, createText }, }: RendererInternals<Node, Element>, hydrateChildren: (node: Node | null, vnode: VNode, container: Element, parentComponent: ComponentInternalInstance | null, parentSuspense: SuspenseBoundary | null, slotScopeIds: string[] | null, optimized: boolean) => Node | null): Node | null; +export declare const Teleport: { + __isTeleport: true; + new (): { + $props: VNodeProps & TeleportProps; + $slots: { + default(): VNode[]; + }; + }; +}; + +/** + * @private + */ +export declare function resolveComponent(name: string, maybeSelfReference?: boolean): ConcreteComponent | string; +declare const NULL_DYNAMIC_COMPONENT: unique symbol; +/** + * @private + */ +export declare function resolveDynamicComponent(component: unknown): VNodeTypes; +/** + * @private + */ +export declare function resolveDirective(name: string): Directive | undefined; + +export declare const Fragment: { + __isFragment: true; + new (): { + $props: VNodeProps; + }; +}; +export declare const Text: unique symbol; +export declare const Comment: unique symbol; +export declare const Static: unique symbol; +export type VNodeTypes = string | VNode | Component | typeof Text | typeof Static | typeof Comment | typeof Fragment | typeof Teleport | typeof TeleportImpl | typeof Suspense | typeof SuspenseImpl; +export type VNodeRef = string | Ref | ((ref: Element | ComponentPublicInstance | null, refs: Record<string, any>) => void); +type VNodeNormalizedRefAtom = { + /** + * component instance + */ + i: ComponentInternalInstance; + /** + * Actual ref + */ + r: VNodeRef; + /** + * setup ref key + */ + k?: string; + /** + * refInFor marker + */ + f?: boolean; +}; +type VNodeNormalizedRef = VNodeNormalizedRefAtom | VNodeNormalizedRefAtom[]; +type VNodeMountHook = (vnode: VNode) => void; +type VNodeUpdateHook = (vnode: VNode, oldVNode: VNode) => void; +export type VNodeProps = { + key?: PropertyKey; + ref?: VNodeRef; + ref_for?: boolean; + ref_key?: string; + onVnodeBeforeMount?: VNodeMountHook | VNodeMountHook[]; + onVnodeMounted?: VNodeMountHook | VNodeMountHook[]; + onVnodeBeforeUpdate?: VNodeUpdateHook | VNodeUpdateHook[]; + onVnodeUpdated?: VNodeUpdateHook | VNodeUpdateHook[]; + onVnodeBeforeUnmount?: VNodeMountHook | VNodeMountHook[]; + onVnodeUnmounted?: VNodeMountHook | VNodeMountHook[]; +}; +type VNodeChildAtom = VNode | string | number | boolean | null | undefined | void; +export type VNodeArrayChildren = Array<VNodeArrayChildren | VNodeChildAtom>; +export type VNodeChild = VNodeChildAtom | VNodeArrayChildren; +export type VNodeNormalizedChildren = string | VNodeArrayChildren | RawSlots | null; +export interface VNode<HostNode = RendererNode, HostElement = RendererElement, ExtraProps = { + [key: string]: any; +}> { + type: VNodeTypes; + props: (VNodeProps & ExtraProps) | null; + key: PropertyKey | null; + ref: VNodeNormalizedRef | null; + /** + * SFC only. This is assigned on vnode creation using currentScopeId + * which is set alongside currentRenderingInstance. + */ + scopeId: string | null; + children: VNodeNormalizedChildren; + component: ComponentInternalInstance | null; + dirs: DirectiveBinding[] | null; + transition: TransitionHooks<HostElement> | null; + el: HostNode | null; + placeholder: HostNode | null; + anchor: HostNode | null; + target: HostElement | null; + targetStart: HostNode | null; + targetAnchor: HostNode | null; + suspense: SuspenseBoundary | null; + shapeFlag: number; + patchFlag: number; + appContext: AppContext | null; +} +/** + * Open a block. + * This must be called before `createBlock`. It cannot be part of `createBlock` + * because the children of the block are evaluated before `createBlock` itself + * is called. The generated code typically looks like this: + * + * ```js + * function render() { + * return (openBlock(),createBlock('div', null, [...])) + * } + * ``` + * disableTracking is true when creating a v-for fragment block, since a v-for + * fragment always diffs its children. + * + * @private + */ +export declare function openBlock(disableTracking?: boolean): void; +/** + * Block tracking sometimes needs to be disabled, for example during the + * creation of a tree that needs to be cached by v-once. The compiler generates + * code like this: + * + * ``` js + * _cache[1] || ( + * setBlockTracking(-1, true), + * _cache[1] = createVNode(...), + * setBlockTracking(1), + * _cache[1] + * ) + * ``` + * + * @private + */ +export declare function setBlockTracking(value: number, inVOnce?: boolean): void; +/** + * @private + */ +export declare function createElementBlock(type: string | typeof Fragment, props?: Record<string, any> | null, children?: any, patchFlag?: number, dynamicProps?: string[], shapeFlag?: number): VNode; +/** + * Create a block root vnode. Takes the same exact arguments as `createVNode`. + * A block root keeps track of dynamic nodes within the block in the + * `dynamicChildren` array. + * + * @private + */ +export declare function createBlock(type: VNodeTypes | ClassComponent, props?: Record<string, any> | null, children?: any, patchFlag?: number, dynamicProps?: string[]): VNode; +export declare function isVNode(value: any): value is VNode; +declare let vnodeArgsTransformer: ((args: Parameters<typeof _createVNode>, instance: ComponentInternalInstance | null) => Parameters<typeof _createVNode>) | undefined; +/** + * Internal API for registering an arguments transform for createVNode + * used for creating stubs in the test-utils + * It is *internal* but needs to be exposed for test-utils to pick up proper + * typings + */ +export declare function transformVNodeArgs(transformer?: typeof vnodeArgsTransformer): void; +export declare function createBaseVNode(type: VNodeTypes | ClassComponent | typeof NULL_DYNAMIC_COMPONENT, props?: (Data & VNodeProps) | null, children?: unknown, patchFlag?: number, dynamicProps?: string[] | null, shapeFlag?: number, isBlockNode?: boolean, needFullChildrenNormalization?: boolean): VNode; + +export declare const createVNode: typeof _createVNode; +declare function _createVNode(type: VNodeTypes | ClassComponent | typeof NULL_DYNAMIC_COMPONENT, props?: (Data & VNodeProps) | null, children?: unknown, patchFlag?: number, dynamicProps?: string[] | null, isBlockNode?: boolean): VNode; +export declare function guardReactiveProps(props: (Data & VNodeProps) | null): (Data & VNodeProps) | null; +export declare function cloneVNode<T, U>(vnode: VNode<T, U>, extraProps?: (Data & VNodeProps) | null, mergeRef?: boolean, cloneTransition?: boolean): VNode<T, U>; +/** + * @private + */ +export declare function createTextVNode(text?: string, flag?: number): VNode; +/** + * @private + */ +export declare function createStaticVNode(content: string, numberOfNodes: number): VNode; +/** + * @private + */ +export declare function createCommentVNode(text?: string, asBlock?: boolean): VNode; +export declare function mergeProps(...args: (Data & VNodeProps)[]): Data; + +type Data = Record<string, unknown>; +/** + * Public utility type for extracting the instance type of a component. + * Works with all valid component definition types. This is intended to replace + * the usage of `InstanceType<typeof Comp>` which only works for + * constructor-based component definition types. + * + * @example + * ```ts + * const MyComp = { ... } + * declare const instance: ComponentInstance<typeof MyComp> + * ``` + */ +export type ComponentInstance<T> = T extends { + new (): ComponentPublicInstance; +} ? InstanceType<T> : T extends FunctionalComponent<infer Props, infer Emits> ? ComponentPublicInstance<Props, {}, {}, {}, {}, ShortEmitsToObject<Emits>> : T extends Component<infer PropsOrInstance, infer RawBindings, infer D, infer C, infer M> ? PropsOrInstance extends { + $props: unknown; +} ? PropsOrInstance : ComponentPublicInstance<unknown extends PropsOrInstance ? {} : PropsOrInstance, unknown extends RawBindings ? {} : RawBindings, unknown extends D ? {} : D, C, M> : never; +/** + * For extending allowed non-declared props on components in TSX + */ +export interface ComponentCustomProps { +} +/** + * For globally defined Directives + * Here is an example of adding a directive `VTooltip` as global directive: + * + * @example + * ```ts + * import VTooltip from 'v-tooltip' + * + * declare module '@vue/runtime-core' { + * interface GlobalDirectives { + * VTooltip + * } + * } + * ``` + */ +export interface GlobalDirectives { +} +/** + * For globally defined Components + * Here is an example of adding a component `RouterView` as global component: + * + * @example + * ```ts + * import { RouterView } from 'vue-router' + * + * declare module '@vue/runtime-core' { + * interface GlobalComponents { + * RouterView + * } + * } + * ``` + */ +export interface GlobalComponents { + Teleport: DefineComponent<TeleportProps>; + Suspense: DefineComponent<SuspenseProps>; + KeepAlive: DefineComponent<KeepAliveProps>; + BaseTransition: DefineComponent<BaseTransitionProps>; +} +/** + * Default allowed non-declared props on component in TSX + */ +export interface AllowedComponentProps { + class?: unknown; + style?: unknown; +} +interface ComponentInternalOptions { + /** + * Compat build only, for bailing out of certain compatibility behavior + */ + __isBuiltIn?: boolean; + /** + * This one should be exposed so that devtools can make use of it + */ + __file?: string; + /** + * name inferred from filename + */ + __name?: string; +} +export interface FunctionalComponent<P = {}, E extends EmitsOptions | Record<string, any[]> = {}, S extends Record<string, any> = any, EE extends EmitsOptions = ShortEmitsToObject<E>> extends ComponentInternalOptions { + (props: P & EmitsToProps<EE>, ctx: Omit<SetupContext<EE, IfAny<S, {}, SlotsType<S>>>, 'expose'>): any; + props?: ComponentPropsOptions<P>; + emits?: EE | (keyof EE)[]; + slots?: IfAny<S, Slots, SlotsType<S>>; + inheritAttrs?: boolean; + displayName?: string; + compatConfig?: CompatConfig; +} +interface ClassComponent { + new (...args: any[]): ComponentPublicInstance<any, any, any, any, any>; + __vccOpts: ComponentOptions; +} +/** + * Concrete component type matches its actual value: it's either an options + * object, or a function. Use this where the code expects to work with actual + * values, e.g. checking if its a function or not. This is mostly for internal + * implementation code. + */ +export type ConcreteComponent<Props = {}, RawBindings = any, D = any, C extends ComputedOptions = ComputedOptions, M extends MethodOptions = MethodOptions, E extends EmitsOptions | Record<string, any[]> = {}, S extends Record<string, any> = any> = ComponentOptions<Props, RawBindings, D, C, M> | FunctionalComponent<Props, E, S>; +/** + * A type used in public APIs where a component type is expected. + * The constructor type is an artificial type returned by defineComponent(). + */ +export type Component<PropsOrInstance = any, RawBindings = any, D = any, C extends ComputedOptions = ComputedOptions, M extends MethodOptions = MethodOptions, E extends EmitsOptions | Record<string, any[]> = {}, S extends Record<string, any> = any> = ConcreteComponent<PropsOrInstance, RawBindings, D, C, M, E, S> | ComponentPublicInstanceConstructor<PropsOrInstance>; + +export type SetupContext<E = EmitsOptions, S extends SlotsType = {}> = E extends any ? { + attrs: Data; + slots: UnwrapSlotsType<S>; + emit: EmitFn<E>; + expose: <Exposed extends Record<string, any> = Record<string, any>>(exposed?: Exposed) => void; +} : never; +/** + * We expose a subset of properties on the internal instance as they are + * useful for advanced external libraries and tools. + */ +export interface ComponentInternalInstance { + uid: number; + type: ConcreteComponent; + parent: ComponentInternalInstance | null; + root: ComponentInternalInstance; + appContext: AppContext; + /** + * Vnode representing this component in its parent's vdom tree + */ + vnode: VNode; + /** + * Root vnode of this component's own vdom tree + */ + subTree: VNode; + /** + * Render effect instance + */ + effect: ReactiveEffect; + /** + * Force update render effect + */ + update: () => void; + /** + * Render effect job to be passed to scheduler (checks if dirty) + */ + job: SchedulerJob; + proxy: ComponentPublicInstance | null; + exposed: Record<string, any> | null; + exposeProxy: Record<string, any> | null; + data: Data; + props: Data; + attrs: Data; + slots: InternalSlots; + refs: Data; + emit: EmitFn; + isMounted: boolean; + isUnmounted: boolean; + isDeactivated: boolean; +} +export declare const getCurrentInstance: () => ComponentInternalInstance | null; +/** + * For runtime-dom to register the compiler. + * Note the exported method uses any to avoid d.ts relying on the compiler types. + */ +export declare function registerRuntimeCompiler(_compile: any): void; +export declare const isRuntimeOnly: () => boolean; +export interface ComponentCustomElementInterface { +} + +type MaybeUndefined<T, I> = I extends true ? T | undefined : T; +type MapSources<T, Immediate> = { + [K in keyof T]: T[K] extends WatchSource<infer V> ? MaybeUndefined<V, Immediate> : T[K] extends object ? MaybeUndefined<T[K], Immediate> : never; +}; +export interface WatchEffectOptions extends DebuggerOptions { + flush?: 'pre' | 'post' | 'sync'; +} +export interface WatchOptions<Immediate = boolean> extends WatchEffectOptions { + immediate?: Immediate; + deep?: boolean | number; + once?: boolean; +} +export declare function watchEffect(effect: WatchEffect, options?: WatchEffectOptions): WatchHandle; +export declare function watchPostEffect(effect: WatchEffect, options?: DebuggerOptions): WatchHandle; +export declare function watchSyncEffect(effect: WatchEffect, options?: DebuggerOptions): WatchHandle; +export type MultiWatchSources = (WatchSource<unknown> | object)[]; +export declare function watch<T, Immediate extends Readonly<boolean> = false>(source: WatchSource<T>, cb: WatchCallback<T, MaybeUndefined<T, Immediate>>, options?: WatchOptions<Immediate>): WatchHandle; +export declare function watch<T extends Readonly<MultiWatchSources>, Immediate extends Readonly<boolean> = false>(sources: readonly [...T] | T, cb: [T] extends [ReactiveMarker] ? WatchCallback<T, MaybeUndefined<T, Immediate>> : WatchCallback<MapSources<T, false>, MapSources<T, Immediate>>, options?: WatchOptions<Immediate>): WatchHandle; +export declare function watch<T extends MultiWatchSources, Immediate extends Readonly<boolean> = false>(sources: [...T], cb: WatchCallback<MapSources<T, false>, MapSources<T, Immediate>>, options?: WatchOptions<Immediate>): WatchHandle; +export declare function watch<T extends object, Immediate extends Readonly<boolean> = false>(source: T, cb: WatchCallback<T, MaybeUndefined<T, Immediate>>, options?: WatchOptions<Immediate>): WatchHandle; + +/** + * A lazy hydration strategy for async components. + * @param hydrate - call this to perform the actual hydration. + * @param forEachElement - iterate through the root elements of the component's + * non-hydrated DOM, accounting for possible fragments. + * @returns a teardown function to be called if the async component is unmounted + * before it is hydrated. This can be used to e.g. remove DOM event + * listeners. + */ +export type HydrationStrategy = (hydrate: () => void, forEachElement: (cb: (el: Element) => any) => void) => (() => void) | void; +export type HydrationStrategyFactory<Options> = (options?: Options) => HydrationStrategy; +export declare const hydrateOnIdle: HydrationStrategyFactory<number>; +export declare const hydrateOnVisible: HydrationStrategyFactory<IntersectionObserverInit>; +export declare const hydrateOnMediaQuery: HydrationStrategyFactory<string>; +export declare const hydrateOnInteraction: HydrationStrategyFactory<keyof HTMLElementEventMap | Array<keyof HTMLElementEventMap>>; + +type AsyncComponentResolveResult<T = Component> = T | { + default: T; +}; +export type AsyncComponentLoader<T = any> = () => Promise<AsyncComponentResolveResult<T>>; +export interface AsyncComponentOptions<T = any> { + loader: AsyncComponentLoader<T>; + loadingComponent?: Component; + errorComponent?: Component; + delay?: number; + timeout?: number; + suspensible?: boolean; + hydrate?: HydrationStrategy; + onError?: (error: Error, retry: () => void, fail: () => void, attempts: number) => any; +} +/*! #__NO_SIDE_EFFECTS__ */ +export declare function defineAsyncComponent<T extends Component = { + new (): ComponentPublicInstance; +}>(source: AsyncComponentLoader<T> | AsyncComponentOptions<T>): T; + +export declare function useModel<M extends PropertyKey, T extends Record<string, any>, K extends keyof T, G = T[K], S = T[K]>(props: T, name: K, options?: DefineModelOptions<T[K], G, S>): ModelRef<T[K], M, G, S>; + +export type TemplateRef<T = unknown> = Readonly<ShallowRef<T | null>>; +export declare function useTemplateRef<T = unknown, Keys extends string = string>(key: Keys): TemplateRef<T>; + +export declare function useId(): string; + +type RawProps = VNodeProps & { + __v_isVNode?: never; + [Symbol.iterator]?: never; +} & Record<string, any>; +type RawChildren = string | number | boolean | VNode | VNodeArrayChildren | (() => any); +interface Constructor<P = any> { + __isFragment?: never; + __isTeleport?: never; + __isSuspense?: never; + new (...args: any[]): { + $props: P; + }; +} +type HTMLElementEventHandler = { + [K in keyof HTMLElementEventMap as `on${Capitalize<K>}`]?: (ev: HTMLElementEventMap[K]) => any; +}; +export declare function h<K extends keyof HTMLElementTagNameMap>(type: K, children?: RawChildren): VNode; +export declare function h<K extends keyof HTMLElementTagNameMap>(type: K, props?: (RawProps & HTMLElementEventHandler) | null, children?: RawChildren | RawSlots): VNode; +export declare function h(type: string, children?: RawChildren): VNode; +export declare function h(type: string, props?: RawProps | null, children?: RawChildren | RawSlots): VNode; +export declare function h(type: typeof Text | typeof Comment, children?: string | number | boolean): VNode; +export declare function h(type: typeof Text | typeof Comment, props?: null, children?: string | number | boolean): VNode; +export declare function h(type: typeof Fragment, children?: VNodeArrayChildren): VNode; +export declare function h(type: typeof Fragment, props?: RawProps | null, children?: VNodeArrayChildren): VNode; +export declare function h(type: typeof Teleport, props: RawProps & TeleportProps, children: RawChildren | RawSlots): VNode; +export declare function h(type: typeof Suspense, children?: RawChildren): VNode; +export declare function h(type: typeof Suspense, props?: (RawProps & SuspenseProps) | null, children?: RawChildren | RawSlots): VNode; +export declare function h<P, E extends EmitsOptions = {}, S extends Record<string, any> = any>(type: FunctionalComponent<P, any, S, any>, props?: (RawProps & P) | ({} extends P ? null : never), children?: RawChildren | IfAny<S, RawSlots, S>): VNode; +export declare function h(type: Component, children?: RawChildren): VNode; +export declare function h<P>(type: ConcreteComponent | string, children?: RawChildren): VNode; +export declare function h<P>(type: ConcreteComponent<P> | string, props?: (RawProps & P) | ({} extends P ? null : never), children?: RawChildren): VNode; +export declare function h<P>(type: Component<P>, props?: (RawProps & P) | null, children?: RawChildren | RawSlots): VNode; +export declare function h<P>(type: ComponentOptions<P>, props?: (RawProps & P) | ({} extends P ? null : never), children?: RawChildren | RawSlots): VNode; +export declare function h(type: Constructor, children?: RawChildren): VNode; +export declare function h<P>(type: Constructor<P>, props?: (RawProps & P) | ({} extends P ? null : never), children?: RawChildren | RawSlots): VNode; +export declare function h(type: DefineComponent, children?: RawChildren): VNode; +export declare function h<P>(type: DefineComponent<P>, props?: (RawProps & P) | ({} extends P ? null : never), children?: RawChildren | RawSlots): VNode; +export declare function h(type: string | Component, children?: RawChildren): VNode; +export declare function h<P>(type: string | Component<P>, props?: (RawProps & P) | ({} extends P ? null : never), children?: RawChildren | RawSlots): VNode; + +export declare const ssrContextKey: unique symbol; +export declare const useSSRContext: <T = Record<string, any>>() => T | undefined; + +declare function warn$1(msg: string, ...args: any[]): void; + +export declare enum ErrorCodes { + SETUP_FUNCTION = 0, + RENDER_FUNCTION = 1, + NATIVE_EVENT_HANDLER = 5, + COMPONENT_EVENT_HANDLER = 6, + VNODE_HOOK = 7, + DIRECTIVE_HOOK = 8, + TRANSITION_HOOK = 9, + APP_ERROR_HANDLER = 10, + APP_WARN_HANDLER = 11, + FUNCTION_REF = 12, + ASYNC_COMPONENT_LOADER = 13, + SCHEDULER = 14, + COMPONENT_UPDATE = 15, + APP_UNMOUNT_CLEANUP = 16 +} +type ErrorTypes = LifecycleHooks | ErrorCodes | WatchErrorCodes; +export declare function callWithErrorHandling(fn: Function, instance: ComponentInternalInstance | null | undefined, type: ErrorTypes, args?: unknown[]): any; +export declare function callWithAsyncErrorHandling(fn: Function | Function[], instance: ComponentInternalInstance | null, type: ErrorTypes, args?: unknown[]): any; +export declare function handleError(err: unknown, instance: ComponentInternalInstance | null | undefined, type: ErrorTypes, throwInDev?: boolean): void; + +export declare function initCustomFormatter(): void; + +interface AppRecord { + id: number; + app: App; + version: string; + types: Record<string, string | Symbol>; +} +interface DevtoolsHook { + enabled?: boolean; + emit: (event: string, ...payload: any[]) => void; + on: (event: string, handler: Function) => void; + once: (event: string, handler: Function) => void; + off: (event: string, handler: Function) => void; + appRecords: AppRecord[]; + /** + * Added at https://github.com/vuejs/devtools/commit/f2ad51eea789006ab66942e5a27c0f0986a257f9 + * Returns whether the arg was buffered or not + */ + cleanupBuffer?: (matchArg: unknown) => boolean; +} +declare function setDevtoolsHook$1(hook: DevtoolsHook, target: any): void; + +type HMRComponent = ComponentOptions | ClassComponent; +export interface HMRRuntime { + createRecord: typeof createRecord; + rerender: typeof rerender; + reload: typeof reload; +} +declare function createRecord(id: string, initialDef: HMRComponent): boolean; +declare function rerender(id: string, newRender?: Function): void; +declare function reload(id: string, newComp: HMRComponent): void; + +/** + * Set scope id when creating hoisted vnodes. + * @private compiler helper + */ +export declare function pushScopeId(id: string | null): void; +/** + * Technically we no longer need this after 3.0.8 but we need to keep the same + * API for backwards compat w/ code generated by compilers. + * @private + */ +export declare function popScopeId(): void; +/** + * Only for backwards compat + * @private + */ +export declare const withScopeId: (_id: string) => typeof withCtx; +/** + * Wrap a slot function to memoize current rendering instance + * @private compiler helper + */ +export declare function withCtx(fn: Function, ctx?: ComponentInternalInstance | null, isNonScopedSlot?: boolean): Function; + +/** + * v-for string + * @private + */ +export declare function renderList(source: string, renderItem: (value: string, index: number) => VNodeChild): VNodeChild[]; +/** + * v-for number + */ +export declare function renderList(source: number, renderItem: (value: number, index: number) => VNodeChild): VNodeChild[]; +/** + * v-for array + */ +export declare function renderList<T>(source: T[], renderItem: (value: T, index: number) => VNodeChild): VNodeChild[]; +/** + * v-for iterable + */ +export declare function renderList<T>(source: Iterable<T>, renderItem: (value: T, index: number) => VNodeChild): VNodeChild[]; +/** + * v-for object + */ +export declare function renderList<T>(source: T, renderItem: <K extends keyof T>(value: T[K], key: string, index: number) => VNodeChild): VNodeChild[]; + +/** + * For prefixing keys in v-on="obj" with "on" + * @private + */ +export declare function toHandlers(obj: Record<string, any>, preserveCaseIfNecessary?: boolean): Record<string, any>; + +/** + * Compiler runtime helper for rendering `<slot/>` + * @private + */ +export declare function renderSlot(slots: Slots, name: string, props?: Data, fallback?: () => VNodeArrayChildren, noSlotted?: boolean): VNode; + +type SSRSlot = (...args: any[]) => VNode[] | undefined; +interface CompiledSlotDescriptor { + name: string; + fn: SSRSlot; + key?: string; +} +/** + * Compiler runtime helper for creating dynamic slots object + * @private + */ +export declare function createSlots(slots: Record<string, SSRSlot>, dynamicSlots: (CompiledSlotDescriptor | CompiledSlotDescriptor[] | undefined)[]): Record<string, SSRSlot>; + +export declare function withMemo(memo: any[], render: () => VNode<any, any>, cache: any[], index: number): VNode<any, any>; +export declare function isMemoSame(cached: VNode, memo: any[]): boolean; + +export type LegacyConfig = { + /** + * @deprecated `config.silent` option has been removed + */ + silent?: boolean; + /** + * @deprecated use __VUE_PROD_DEVTOOLS__ compile-time feature flag instead + * https://github.com/vuejs/core/tree/main/packages/vue#bundler-build-feature-flags + */ + devtools?: boolean; + /** + * @deprecated use `config.isCustomElement` instead + * https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-ignoredelements-is-now-config-iscustomelement + */ + ignoredElements?: (string | RegExp)[]; + /** + * @deprecated + * https://v3-migration.vuejs.org/breaking-changes/keycode-modifiers.html + */ + keyCodes?: Record<string, number | number[]>; + /** + * @deprecated + * https://v3-migration.vuejs.org/breaking-changes/global-api.html#config-productiontip-removed + */ + productionTip?: boolean; +}; + +type LegacyPublicInstance = ComponentPublicInstance & LegacyPublicProperties; +interface LegacyPublicProperties { + $set<T extends Record<keyof any, any>, K extends keyof T>(target: T, key: K, value: T[K]): void; + $delete<T extends Record<keyof any, any>, K extends keyof T>(target: T, key: K): void; + $mount(el?: string | Element): this; + $destroy(): void; + $scopedSlots: Slots; + $on(event: string | string[], fn: Function): this; + $once(event: string, fn: Function): this; + $off(event?: string | string[], fn?: Function): this; + $children: LegacyPublicProperties[]; + $listeners: Record<string, Function | Function[]>; +} + +/** + * @deprecated the default `Vue` export has been removed in Vue 3. The type for + * the default export is provided only for migration purposes. Please use + * named imports instead - e.g. `import { createApp } from 'vue'`. + */ +export type CompatVue = Pick<App, 'version' | 'component' | 'directive'> & { + configureCompat: typeof configureCompat; + new (options?: ComponentOptions): LegacyPublicInstance; + version: string; + config: AppConfig & LegacyConfig; + nextTick: typeof nextTick; + use<Options extends unknown[]>(plugin: Plugin<Options>, ...options: Options): CompatVue; + use<Options>(plugin: Plugin<Options>, options: Options): CompatVue; + mixin(mixin: ComponentOptions): CompatVue; + component(name: string): Component | undefined; + component(name: string, component: Component): CompatVue; + directive<T = any, V = any>(name: string): Directive<T, V> | undefined; + directive<T = any, V = any>(name: string, directive: Directive<T, V>): CompatVue; + compile(template: string): RenderFunction; + /** + * @deprecated Vue 3 no longer supports extending constructors. + */ + extend: (options?: ComponentOptions) => CompatVue; + /** + * @deprecated Vue 3 no longer needs set() for adding new properties. + */ + set(target: any, key: PropertyKey, value: any): void; + /** + * @deprecated Vue 3 no longer needs delete() for property deletions. + */ + delete(target: any, key: PropertyKey): void; + /** + * @deprecated use `reactive` instead. + */ + observable: typeof reactive; + /** + * @deprecated filters have been removed from Vue 3. + */ + filter(name: string, arg?: any): null; +}; + +export declare const version: string; + +export declare const warn: typeof warn$1; + +export declare const devtools: DevtoolsHook; +export declare const setDevtoolsHook: typeof setDevtoolsHook$1; + +declare module '@vue/reactivity' { + interface RefUnwrapBailTypes { + runtimeCoreBailTypes: VNode | { + $: ComponentInternalInstance; + }; + } +} + +export declare const DeprecationTypes: typeof DeprecationTypes$1; + +export { createBaseVNode as createElementVNode, }; +export type { WatchEffectOptions as WatchOptionsBase }; +// Note: this file is auto concatenated to the end of the bundled d.ts during +// build. + +declare module '@vue/runtime-core' { + export interface GlobalComponents { + Teleport: DefineComponent<TeleportProps> + Suspense: DefineComponent<SuspenseProps> + KeepAlive: DefineComponent<KeepAliveProps> + BaseTransition: DefineComponent<BaseTransitionProps> + } +} + +// Note: this file is auto concatenated to the end of the bundled d.ts during +// build. +type _defineProps = typeof defineProps +type _defineEmits = typeof defineEmits +type _defineExpose = typeof defineExpose +type _defineOptions = typeof defineOptions +type _defineSlots = typeof defineSlots +type _defineModel = typeof defineModel +type _withDefaults = typeof withDefaults + +declare global { + const defineProps: _defineProps + const defineEmits: _defineEmits + const defineExpose: _defineExpose + const defineOptions: _defineOptions + const defineSlots: _defineSlots + const defineModel: _defineModel + const withDefaults: _withDefaults +} diff --git a/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js b/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js new file mode 100644 index 0000000..31fa1d0 --- /dev/null +++ b/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js @@ -0,0 +1,8486 @@ +/** +* @vue/runtime-core v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +import { pauseTracking, resetTracking, isRef, toRaw, traverse, shallowRef, readonly, isReactive, ref, isShallow, isReadonly, shallowReadArray, toReadonly, toReactive, shallowReadonly, track, reactive, shallowReactive, trigger, ReactiveEffect, watch as watch$1, customRef, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1 } from '@vue/reactivity'; +export { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, onWatcherCleanup, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity'; +import { isString, isFunction, EMPTY_OBJ, isPromise, isArray, NOOP, getGlobalThis, extend, isBuiltInDirective, hasOwn, remove, def, isOn, isReservedProp, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, normalizeCssVarValue, getEscapedCssVarName, isObject, isRegExp, invokeArrayFns, toHandlerKey, camelize, capitalize, isSymbol, isGloballyAllowed, NO, EMPTY_ARR, hyphenate, makeMap, toRawType, hasChanged, looseToNumber, isModelListener, toNumber } from '@vue/shared'; +export { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared'; + +const stack = []; +function pushWarningContext(vnode) { + stack.push(vnode); +} +function popWarningContext() { + stack.pop(); +} +let isWarning = false; +function warn$1(msg, ...args) { + if (isWarning) return; + isWarning = true; + pauseTracking(); + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + // eslint-disable-next-line no-restricted-syntax + msg + args.map((a) => { + var _a, _b; + return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a); + }).join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + resetTracking(); + isWarning = false; +} +function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} +function assertNumber(val, type) { + if (!!!(process.env.NODE_ENV !== "production")) return; + if (val === void 0) { + return; + } else if (typeof val !== "number") { + warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`); + } else if (isNaN(val)) { + warn$1(`${type} is NaN - the duration expression might be incorrect.`); + } +} + +const ErrorCodes = { + "SETUP_FUNCTION": 0, + "0": "SETUP_FUNCTION", + "RENDER_FUNCTION": 1, + "1": "RENDER_FUNCTION", + "NATIVE_EVENT_HANDLER": 5, + "5": "NATIVE_EVENT_HANDLER", + "COMPONENT_EVENT_HANDLER": 6, + "6": "COMPONENT_EVENT_HANDLER", + "VNODE_HOOK": 7, + "7": "VNODE_HOOK", + "DIRECTIVE_HOOK": 8, + "8": "DIRECTIVE_HOOK", + "TRANSITION_HOOK": 9, + "9": "TRANSITION_HOOK", + "APP_ERROR_HANDLER": 10, + "10": "APP_ERROR_HANDLER", + "APP_WARN_HANDLER": 11, + "11": "APP_WARN_HANDLER", + "FUNCTION_REF": 12, + "12": "FUNCTION_REF", + "ASYNC_COMPONENT_LOADER": 13, + "13": "ASYNC_COMPONENT_LOADER", + "SCHEDULER": 14, + "14": "SCHEDULER", + "COMPONENT_UPDATE": 15, + "15": "COMPONENT_UPDATE", + "APP_UNMOUNT_CLEANUP": 16, + "16": "APP_UNMOUNT_CLEANUP" +}; +const ErrorTypeStrings$1 = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush", + [15]: "component update", + [16]: "app unmount cleanup function" +}; +function callWithErrorHandling(fn, instance, type, args) { + try { + return args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + if (isArray(fn)) { + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1( + `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}` + ); + } +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = !!(process.env.NODE_ENV !== "production") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + if (errorHandler) { + pauseTracking(); + callWithErrorHandling(errorHandler, null, 10, [ + err, + exposedInstance, + errorInfo + ]); + resetTracking(); + return; + } + } + logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction); +} +function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) { + if (!!(process.env.NODE_ENV !== "production")) { + const info = ErrorTypeStrings$1[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } else if (throwInProd) { + throw err; + } else { + console.error(err); + } +} + +const queue = []; +let flushIndex = -1; +const pendingPostFlushCbs = []; +let activePostFlushCbs = null; +let postFlushIndex = 0; +const resolvedPromise = /* @__PURE__ */ Promise.resolve(); +let currentFlushPromise = null; +const RECURSION_LIMIT = 100; +function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.flags & 2) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!(job.flags & 1)) { + const jobId = getId(job); + const lastJob = queue[queue.length - 1]; + if (!lastJob || // fast path when the job id is larger than the tail + !(job.flags & 2) && jobId >= getId(lastJob)) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(jobId), 0, job); + } + job.flags |= 1; + queueFlush(); + } +} +function queueFlush() { + if (!currentFlushPromise) { + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function queuePostFlushCb(cb) { + if (!isArray(cb)) { + if (activePostFlushCbs && cb.id === -1) { + activePostFlushCbs.splice(postFlushIndex + 1, 0, cb); + } else if (!(cb.flags & 1)) { + pendingPostFlushCbs.push(cb); + cb.flags |= 1; + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(instance, seen, i = flushIndex + 1) { + if (!!(process.env.NODE_ENV !== "production")) { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.flags & 2) { + if (instance && cb.id !== instance.uid) { + continue; + } + if (!!(process.env.NODE_ENV !== "production") && checkRecursiveUpdates(seen, cb)) { + continue; + } + queue.splice(i, 1); + i--; + if (cb.flags & 4) { + cb.flags &= -2; + } + cb(); + if (!(cb.flags & 4)) { + cb.flags &= -2; + } + } + } +} +function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)].sort( + (a, b) => getId(a) - getId(b) + ); + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + if (!!(process.env.NODE_ENV !== "production")) { + seen = seen || /* @__PURE__ */ new Map(); + } + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + const cb = activePostFlushCbs[postFlushIndex]; + if (!!(process.env.NODE_ENV !== "production") && checkRecursiveUpdates(seen, cb)) { + continue; + } + if (cb.flags & 4) { + cb.flags &= -2; + } + if (!(cb.flags & 8)) cb(); + cb.flags &= -2; + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id; +function flushJobs(seen) { + if (!!(process.env.NODE_ENV !== "production")) { + seen = seen || /* @__PURE__ */ new Map(); + } + const check = !!(process.env.NODE_ENV !== "production") ? (job) => checkRecursiveUpdates(seen, job) : NOOP; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && !(job.flags & 8)) { + if (!!(process.env.NODE_ENV !== "production") && check(job)) { + continue; + } + if (job.flags & 4) { + job.flags &= ~1; + } + callWithErrorHandling( + job, + job.i, + job.i ? 15 : 14 + ); + if (!(job.flags & 4)) { + job.flags &= ~1; + } + } + } + } finally { + for (; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job) { + job.flags &= -2; + } + } + flushIndex = -1; + queue.length = 0; + flushPostFlushCbs(seen); + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } +} +function checkRecursiveUpdates(seen, fn) { + const count = seen.get(fn) || 0; + if (count > RECURSION_LIMIT) { + const instance = fn.i; + const componentName = instance && getComponentName(instance.type); + handleError( + `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`, + null, + 10 + ); + return true; + } + seen.set(fn, count + 1); + return false; +} + +let isHmrUpdating = false; +const hmrDirtyComponents = /* @__PURE__ */ new Map(); +if (!!(process.env.NODE_ENV !== "production")) { + getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; +} +const map = /* @__PURE__ */ new Map(); +function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); +} +function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); +} +function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: /* @__PURE__ */ new Set() + }); + return true; +} +function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; +} +function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + record.initialDef.render = newRender; + [...record.instances].forEach((instance) => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + isHmrUpdating = true; + instance.update(); + isHmrUpdating = false; + }); +} +function reload(id, newComp) { + const record = map.get(id); + if (!record) return; + newComp = normalizeClassComponent(newComp); + updateComponentDef(record.initialDef, newComp); + const instances = [...record.instances]; + for (let i = 0; i < instances.length; i++) { + const instance = instances[i]; + const oldComp = normalizeClassComponent(instance.type); + let dirtyInstances = hmrDirtyComponents.get(oldComp); + if (!dirtyInstances) { + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set()); + } + dirtyInstances.add(instance); + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); + instance.appContext.optionsCache.delete(instance.type); + if (instance.ceReload) { + dirtyInstances.add(instance); + instance.ceReload(newComp.styles); + dirtyInstances.delete(instance); + } else if (instance.parent) { + queueJob(() => { + isHmrUpdating = true; + instance.parent.update(); + isHmrUpdating = false; + dirtyInstances.delete(instance); + }); + } else if (instance.appContext.reload) { + instance.appContext.reload(); + } else if (typeof window !== "undefined") { + window.location.reload(); + } else { + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); + } + if (instance.root.ce && instance !== instance.root) { + instance.root.ce._removeChildStyle(oldComp); + } + } + queuePostFlushCb(() => { + hmrDirtyComponents.clear(); + }); +} +function updateComponentDef(oldComp, newComp) { + extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== "__file" && !(key in newComp)) { + delete oldComp[key]; + } + } +} +function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } catch (e) { + console.error(e); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); + } + }; +} + +let devtools$1; +let buffer = []; +let devtoolsNotInstalled = false; +function emit$1(event, ...args) { + if (devtools$1) { + devtools$1.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } +} +function setDevtoolsHook$1(hook, target) { + var _a, _b; + devtools$1 = hook; + if (devtools$1) { + devtools$1.enabled = true; + buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + // eslint-disable-next-line no-restricted-syntax + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook$1(newHook, target); + }); + setTimeout(() => { + if (!devtools$1) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3e3); + } else { + devtoolsNotInstalled = true; + buffer = []; + } +} +function devtoolsInitApp(app, version) { + emit$1("app:init" /* APP_INIT */, app, version, { + Fragment, + Text, + Comment, + Static + }); +} +function devtoolsUnmountApp(app) { + emit$1("app:unmount" /* APP_UNMOUNT */, app); +} +const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook("component:added" /* COMPONENT_ADDED */); +const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */); +const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( + "component:removed" /* COMPONENT_REMOVED */ +); +const devtoolsComponentRemoved = (component) => { + if (devtools$1 && typeof devtools$1.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !devtools$1.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } +}; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; +} +const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook("perf:start" /* PERFORMANCE_START */); +const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook("perf:end" /* PERFORMANCE_END */); +function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; +} +function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit" /* COMPONENT_EMIT */, + component.appContext.app, + component, + event, + params + ); +} + +let currentRenderingInstance = null; +let currentScopeId = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function pushScopeId(id) { + currentScopeId = id; +} +function popScopeId() { + currentScopeId = null; +} +const withScopeId = (_id) => withCtx; +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + devtoolsComponentUpdated(ctx); + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} + +function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn$1("Do not use built-in directive ids as custom directive id: " + name); + } +} +function withDirectives(vnode, directives) { + if (currentRenderingInstance === null) { + !!(process.env.NODE_ENV !== "production") && warn$1(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getComponentPublicInstance(currentRenderingInstance); + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; + if (dir) { + if (isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + resetTracking(); + } + } +} + +const TeleportEndKey = Symbol("_vte"); +const isTeleport = (type) => type.__isTeleport; +const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ""); +const isTeleportDeferred = (props) => props && (props.defer || props.defer === ""); +const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement; +const isTargetMathML = (target) => typeof MathMLElement === "function" && target instanceof MathMLElement; +const resolveTarget = (props, select) => { + const targetSelector = props && props.to; + if (isString(targetSelector)) { + if (!select) { + !!(process.env.NODE_ENV !== "production") && warn$1( + `Current renderer does not support string target for Teleports. (missing querySelector renderer option)` + ); + return null; + } else { + const target = select(targetSelector); + if (!!(process.env.NODE_ENV !== "production") && !target && !isTeleportDisabled(props)) { + warn$1( + `Failed to locate Teleport target with selector "${targetSelector}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.` + ); + } + return target; + } + } else { + if (!!(process.env.NODE_ENV !== "production") && !targetSelector && !isTeleportDisabled(props)) { + warn$1(`Invalid Teleport target: ${targetSelector}`); + } + return targetSelector; + } +}; +const TeleportImpl = { + name: "Teleport", + __isTeleport: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) { + const { + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + o: { insert, querySelector, createText, createComment } + } = internals; + const disabled = isTeleportDisabled(n2.props); + let { shapeFlag, children, dynamicChildren } = n2; + if (!!(process.env.NODE_ENV !== "production") && isHmrUpdating) { + optimized = false; + dynamicChildren = null; + } + if (n1 == null) { + const placeholder = n2.el = !!(process.env.NODE_ENV !== "production") ? createComment("teleport start") : createText(""); + const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== "production") ? createComment("teleport end") : createText(""); + insert(placeholder, container, anchor); + insert(mainAnchor, container, anchor); + const mount = (container2, anchor2) => { + if (shapeFlag & 16) { + if (parentComponent && parentComponent.isCE) { + parentComponent.ce._teleportTarget = container2; + } + mountChildren( + children, + container2, + anchor2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const mountToTarget = () => { + const target = n2.target = resolveTarget(n2.props, querySelector); + const targetAnchor = prepareAnchor(target, n2, createText, insert); + if (target) { + if (namespace !== "svg" && isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace !== "mathml" && isTargetMathML(target)) { + namespace = "mathml"; + } + if (!disabled) { + mount(target, targetAnchor); + updateCssVars(n2, false); + } + } else if (!!(process.env.NODE_ENV !== "production") && !disabled) { + warn$1( + "Invalid Teleport target on mount:", + target, + `(${typeof target})` + ); + } + }; + if (disabled) { + mount(container, mainAnchor); + updateCssVars(n2, true); + } + if (isTeleportDeferred(n2.props)) { + n2.el.__isMounted = false; + queuePostRenderEffect(() => { + mountToTarget(); + delete n2.el.__isMounted; + }, parentSuspense); + } else { + mountToTarget(); + } + } else { + if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) { + queuePostRenderEffect(() => { + TeleportImpl.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + }, parentSuspense); + return; + } + n2.el = n1.el; + n2.targetStart = n1.targetStart; + const mainAnchor = n2.anchor = n1.anchor; + const target = n2.target = n1.target; + const targetAnchor = n2.targetAnchor = n1.targetAnchor; + const wasDisabled = isTeleportDisabled(n1.props); + const currentContainer = wasDisabled ? container : target; + const currentAnchor = wasDisabled ? mainAnchor : targetAnchor; + if (namespace === "svg" || isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace === "mathml" || isTargetMathML(target)) { + namespace = "mathml"; + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + currentContainer, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + traverseStaticChildren(n1, n2, !!!(process.env.NODE_ENV !== "production")); + } else if (!optimized) { + patchChildren( + n1, + n2, + currentContainer, + currentAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + false + ); + } + if (disabled) { + if (!wasDisabled) { + moveTeleport( + n2, + container, + mainAnchor, + internals, + 1 + ); + } else { + if (n2.props && n1.props && n2.props.to !== n1.props.to) { + n2.props.to = n1.props.to; + } + } + } else { + if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { + const nextTarget = n2.target = resolveTarget( + n2.props, + querySelector + ); + if (nextTarget) { + moveTeleport( + n2, + nextTarget, + null, + internals, + 0 + ); + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1( + "Invalid Teleport target on update:", + target, + `(${typeof target})` + ); + } + } else if (wasDisabled) { + moveTeleport( + n2, + target, + targetAnchor, + internals, + 1 + ); + } + } + updateCssVars(n2, disabled); + } + }, + remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) { + const { + shapeFlag, + children, + anchor, + targetStart, + targetAnchor, + target, + props + } = vnode; + if (target) { + hostRemove(targetStart); + hostRemove(targetAnchor); + } + doRemove && hostRemove(anchor); + if (shapeFlag & 16) { + const shouldRemove = doRemove || !isTeleportDisabled(props); + for (let i = 0; i < children.length; i++) { + const child = children[i]; + unmount( + child, + parentComponent, + parentSuspense, + shouldRemove, + !!child.dynamicChildren + ); + } + } + }, + move: moveTeleport, + hydrate: hydrateTeleport +}; +function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) { + if (moveType === 0) { + insert(vnode.targetAnchor, container, parentAnchor); + } + const { el, anchor, shapeFlag, children, props } = vnode; + const isReorder = moveType === 2; + if (isReorder) { + insert(el, container, parentAnchor); + } + if (!isReorder || isTeleportDisabled(props)) { + if (shapeFlag & 16) { + for (let i = 0; i < children.length; i++) { + move( + children[i], + container, + parentAnchor, + 2 + ); + } + } + } + if (isReorder) { + insert(anchor, container, parentAnchor); + } +} +function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { + o: { nextSibling, parentNode, querySelector, insert, createText } +}, hydrateChildren) { + const target = vnode.target = resolveTarget( + vnode.props, + querySelector + ); + if (target) { + const disabled = isTeleportDisabled(vnode.props); + const targetNode = target._lpa || target.firstChild; + if (vnode.shapeFlag & 16) { + if (disabled) { + vnode.anchor = hydrateChildren( + nextSibling(node), + vnode, + parentNode(node), + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + vnode.targetStart = targetNode; + vnode.targetAnchor = targetNode && nextSibling(targetNode); + } else { + vnode.anchor = nextSibling(node); + let targetAnchor = targetNode; + while (targetAnchor) { + if (targetAnchor && targetAnchor.nodeType === 8) { + if (targetAnchor.data === "teleport start anchor") { + vnode.targetStart = targetAnchor; + } else if (targetAnchor.data === "teleport anchor") { + vnode.targetAnchor = targetAnchor; + target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); + break; + } + } + targetAnchor = nextSibling(targetAnchor); + } + if (!vnode.targetAnchor) { + prepareAnchor(target, vnode, createText, insert); + } + hydrateChildren( + targetNode && nextSibling(targetNode), + vnode, + target, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } + updateCssVars(vnode, disabled); + } + return vnode.anchor && nextSibling(vnode.anchor); +} +const Teleport = TeleportImpl; +function updateCssVars(vnode, isDisabled) { + const ctx = vnode.ctx; + if (ctx && ctx.ut) { + let node, anchor; + if (isDisabled) { + node = vnode.el; + anchor = vnode.anchor; + } else { + node = vnode.targetStart; + anchor = vnode.targetAnchor; + } + while (node && node !== anchor) { + if (node.nodeType === 1) node.setAttribute("data-v-owner", ctx.uid); + node = node.nextSibling; + } + ctx.ut(); + } +} +function prepareAnchor(target, vnode, createText, insert) { + const targetStart = vnode.targetStart = createText(""); + const targetAnchor = vnode.targetAnchor = createText(""); + targetStart[TeleportEndKey] = targetAnchor; + if (target) { + insert(targetStart, target); + insert(targetAnchor, target); + } + return targetAnchor; +} + +const leaveCbKey = Symbol("_leaveCb"); +const enterCbKey = Symbol("_enterCb"); +function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; +} +const TransitionHookValidator = [Function, Array]; +const BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator +}; +const recursiveGetSubtree = (instance) => { + const subTree = instance.subTree; + return subTree.component ? recursiveGetSubtree(subTree.component) : subTree; +}; +const BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + const child = findNonCommentChild(children); + const rawProps = toRaw(props); + const { mode } = rawProps; + if (!!(process.env.NODE_ENV !== "production") && mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") { + warn$1(`invalid <transition> mode: ${mode}`); + } + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getInnerChild$1(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + let enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance, + // #11061, ensure enterHooks is fresh after clone + (hooks) => enterHooks = hooks + ); + if (innerChild.type !== Comment) { + setTransitionHooks(innerChild, enterHooks); + } + let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree); + if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) { + let leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in" && innerChild.type !== Comment) { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (!(instance.job.flags & 8)) { + instance.update(); + } + delete leavingHooks.afterLeave; + oldInnerChild = void 0; + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el[leaveCbKey] = () => { + earlyRemove(); + el[leaveCbKey] = void 0; + delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + enterHooks.delayedLeave = () => { + delayedLeave(); + delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + }; + } else { + oldInnerChild = void 0; + } + } else if (oldInnerChild) { + oldInnerChild = void 0; + } + return child; + }; + } +}; +function findNonCommentChild(children) { + let child = children[0]; + if (children.length > 1) { + let hasFound = false; + for (const c of children) { + if (c.type !== Comment) { + if (!!(process.env.NODE_ENV !== "production") && hasFound) { + warn$1( + "<transition> can only be used on a single element or component. Use <transition-group> for lists." + ); + break; + } + child = c; + hasFound = true; + if (!!!(process.env.NODE_ENV !== "production")) break; + } + } + } + return child; +} +const BaseTransition = BaseTransitionImpl; +function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; +} +function resolveTransitionHooks(vnode, props, state, instance, postClone) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook(hook, args); + if (isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el[leaveCbKey]) { + el[leaveCbKey]( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { + leavingVNode.el[leaveCbKey](); + } + callHook(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + const done = el[enterCbKey] = (cancelled) => { + if (called) return; + called = true; + if (cancelled) { + callHook(cancelHook, [el]); + } else { + callHook(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el[enterCbKey] = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove) { + const key2 = String(vnode.key); + if (el[enterCbKey]) { + el[enterCbKey]( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove(); + } + callHook(onBeforeLeave, [el]); + let called = false; + const done = el[leaveCbKey] = (cancelled) => { + if (called) return; + called = true; + remove(); + if (cancelled) { + callHook(onLeaveCancelled, [el]); + } else { + callHook(onAfterLeave, [el]); + } + el[leaveCbKey] = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + const hooks2 = resolveTransitionHooks( + vnode2, + props, + state, + instance, + postClone + ); + if (postClone) postClone(hooks2); + return hooks2; + } + }; + return hooks; +} +function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } +} +function getInnerChild$1(vnode) { + if (!isKeepAlive(vnode)) { + if (isTeleport(vnode.type) && vnode.children) { + return findNonCommentChild(vnode.children); + } + return vnode; + } + if (vnode.component) { + return vnode.component.subTree; + } + const { shapeFlag, children } = vnode; + if (children) { + if (shapeFlag & 16) { + return children[0]; + } + if (shapeFlag & 32 && isFunction(children.default)) { + return children.default(); + } + } +} +function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + vnode.transition = hooks; + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } +} +function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; +} + +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineComponent(options, extraOptions) { + return isFunction(options) ? ( + // #8236: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; +} + +function useId() { + const i = getCurrentInstance(); + if (i) { + return (i.appContext.config.idPrefix || "v") + "-" + i.ids[0] + i.ids[1]++; + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1( + `useId() is called when there is no active component instance to be associated with.` + ); + } + return ""; +} +function markAsyncBoundary(instance) { + instance.ids = [instance.ids[0] + instance.ids[2]++ + "-", 0, 0]; +} + +const knownTemplateRefs = /* @__PURE__ */ new WeakSet(); +function useTemplateRef(key) { + const i = getCurrentInstance(); + const r = shallowRef(null); + if (i) { + const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs; + let desc; + if (!!(process.env.NODE_ENV !== "production") && (desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) { + warn$1(`useTemplateRef('${key}') already exists.`); + } else { + Object.defineProperty(refs, key, { + enumerable: true, + get: () => r.value, + set: (val) => r.value = val + }); + } + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1( + `useTemplateRef() is called when there is no active component instance to be associated with.` + ); + } + const ret = !!(process.env.NODE_ENV !== "production") ? readonly(r) : r; + if (!!(process.env.NODE_ENV !== "production")) { + knownTemplateRefs.add(ret); + } + return ret; +} + +function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { + if (isArray(rawRef)) { + rawRef.forEach( + (r, i) => setRef( + r, + oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), + parentSuspense, + vnode, + isUnmount + ) + ); + return; + } + if (isAsyncWrapper(vnode) && !isUnmount) { + if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) { + setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree); + } + return; + } + const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el; + const value = isUnmount ? null : refValue; + const { i: owner, r: ref } = rawRef; + if (!!(process.env.NODE_ENV !== "production") && !owner) { + warn$1( + `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.` + ); + return; + } + const oldRef = oldRawRef && oldRawRef.r; + const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs; + const setupState = owner.setupState; + const rawSetupState = toRaw(setupState); + const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => { + if (!!(process.env.NODE_ENV !== "production")) { + if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) { + warn$1( + `Template ref "${key}" used on a non-ref value. It will not work in the production build.` + ); + } + if (knownTemplateRefs.has(rawSetupState[key])) { + return false; + } + } + return hasOwn(rawSetupState, key); + }; + if (oldRef != null && oldRef !== ref) { + if (isString(oldRef)) { + refs[oldRef] = null; + if (canSetSetupRef(oldRef)) { + setupState[oldRef] = null; + } + } else if (isRef(oldRef)) { + oldRef.value = null; + } + } + if (isFunction(ref)) { + callWithErrorHandling(ref, owner, 12, [value, refs]); + } else { + const _isString = isString(ref); + const _isRef = isRef(ref); + if (_isString || _isRef) { + const doSet = () => { + if (rawRef.f) { + const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value; + if (isUnmount) { + isArray(existing) && remove(existing, refValue); + } else { + if (!isArray(existing)) { + if (_isString) { + refs[ref] = [refValue]; + if (canSetSetupRef(ref)) { + setupState[ref] = refs[ref]; + } + } else { + ref.value = [refValue]; + if (rawRef.k) refs[rawRef.k] = ref.value; + } + } else if (!existing.includes(refValue)) { + existing.push(refValue); + } + } + } else if (_isString) { + refs[ref] = value; + if (canSetSetupRef(ref)) { + setupState[ref] = value; + } + } else if (_isRef) { + ref.value = value; + if (rawRef.k) refs[rawRef.k] = value; + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1("Invalid template ref type:", ref, `(${typeof ref})`); + } + }; + if (value) { + doSet.id = -1; + queuePostRenderEffect(doSet, parentSuspense); + } else { + doSet(); + } + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1("Invalid template ref type:", ref, `(${typeof ref})`); + } + } +} + +let hasLoggedMismatchError = false; +const logMismatchError = () => { + if (hasLoggedMismatchError) { + return; + } + console.error("Hydration completed but contains mismatches."); + hasLoggedMismatchError = true; +}; +const isSVGContainer = (container) => container.namespaceURI.includes("svg") && container.tagName !== "foreignObject"; +const isMathMLContainer = (container) => container.namespaceURI.includes("MathML"); +const getContainerType = (container) => { + if (container.nodeType !== 1) return void 0; + if (isSVGContainer(container)) return "svg"; + if (isMathMLContainer(container)) return "mathml"; + return void 0; +}; +const isComment = (node) => node.nodeType === 8; +function createHydrationFunctions(rendererInternals) { + const { + mt: mountComponent, + p: patch, + o: { + patchProp, + createText, + nextSibling, + parentNode, + remove, + insert, + createComment + } + } = rendererInternals; + const hydrate = (vnode, container) => { + if (!container.hasChildNodes()) { + (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1( + `Attempting to hydrate existing markup but container is empty. Performing full mount instead.` + ); + patch(null, vnode, container); + flushPostFlushCbs(); + container._vnode = vnode; + return; + } + hydrateNode(container.firstChild, vnode, null, null, null); + flushPostFlushCbs(); + container._vnode = vnode; + }; + const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => { + optimized = optimized || !!vnode.dynamicChildren; + const isFragmentStart = isComment(node) && node.data === "["; + const onMismatch = () => handleMismatch( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + isFragmentStart + ); + const { type, ref, shapeFlag, patchFlag } = vnode; + let domType = node.nodeType; + vnode.el = node; + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + def(node, "__vnode", vnode, true); + def(node, "__vueParentComponent", parentComponent, true); + } + if (patchFlag === -2) { + optimized = false; + vnode.dynamicChildren = null; + } + let nextNode = null; + switch (type) { + case Text: + if (domType !== 3) { + if (vnode.children === "") { + insert(vnode.el = createText(""), parentNode(node), node); + nextNode = node; + } else { + nextNode = onMismatch(); + } + } else { + if (node.data !== vnode.children) { + (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1( + `Hydration text mismatch in`, + node.parentNode, + ` + - rendered on server: ${JSON.stringify( + node.data + )} + - expected on client: ${JSON.stringify(vnode.children)}` + ); + logMismatchError(); + node.data = vnode.children; + } + nextNode = nextSibling(node); + } + break; + case Comment: + if (isTemplateNode(node)) { + nextNode = nextSibling(node); + replaceNode( + vnode.el = node.content.firstChild, + node, + parentComponent + ); + } else if (domType !== 8 || isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = nextSibling(node); + } + break; + case Static: + if (isFragmentStart) { + node = nextSibling(node); + domType = node.nodeType; + } + if (domType === 1 || domType === 3) { + nextNode = node; + const needToAdoptContent = !vnode.children.length; + for (let i = 0; i < vnode.staticCount; i++) { + if (needToAdoptContent) + vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data; + if (i === vnode.staticCount - 1) { + vnode.anchor = nextNode; + } + nextNode = nextSibling(nextNode); + } + return isFragmentStart ? nextSibling(nextNode) : nextNode; + } else { + onMismatch(); + } + break; + case Fragment: + if (!isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = hydrateFragment( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + break; + default: + if (shapeFlag & 1) { + if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) { + nextNode = onMismatch(); + } else { + nextNode = hydrateElement( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } else if (shapeFlag & 6) { + vnode.slotScopeIds = slotScopeIds; + const container = parentNode(node); + if (isFragmentStart) { + nextNode = locateClosingAnchor(node); + } else if (isComment(node) && node.data === "teleport start") { + nextNode = locateClosingAnchor(node, node.data, "teleport end"); + } else { + nextNode = nextSibling(node); + } + mountComponent( + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + optimized + ); + if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) { + let subTree; + if (isFragmentStart) { + subTree = createVNode(Fragment); + subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild; + } else { + subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div"); + } + subTree.el = node; + vnode.component.subTree = subTree; + } + } else if (shapeFlag & 64) { + if (domType !== 8) { + nextNode = onMismatch(); + } else { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized, + rendererInternals, + hydrateChildren + ); + } + } else if (shapeFlag & 128) { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + getContainerType(parentNode(node)), + slotScopeIds, + optimized, + rendererInternals, + hydrateNode + ); + } else if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) { + warn$1("Invalid HostVNode type:", type, `(${typeof type})`); + } + } + if (ref != null) { + setRef(ref, null, parentSuspense, vnode); + } + return nextNode; + }; + const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!vnode.dynamicChildren; + const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode; + const forcePatch = type === "input" || type === "option"; + if (!!(process.env.NODE_ENV !== "production") || forcePatch || patchFlag !== -1) { + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + let needCallTransitionHooks = false; + if (isTemplateNode(el)) { + needCallTransitionHooks = needTransition( + null, + // no need check parentSuspense in hydration + transition + ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear; + const content = el.content.firstChild; + if (needCallTransitionHooks) { + const cls = content.getAttribute("class"); + if (cls) content.$cls = cls; + transition.beforeEnter(content); + } + replaceNode(content, el, parentComponent); + vnode.el = el = content; + } + if (shapeFlag & 16 && // skip if element has innerHTML / textContent + !(props && (props.innerHTML || props.textContent))) { + let next = hydrateChildren( + el.firstChild, + vnode, + el, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + let hasWarned = false; + while (next) { + if (!isMismatchAllowed(el, 1 /* CHILDREN */)) { + if ((!!(process.env.NODE_ENV !== "production") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) { + warn$1( + `Hydration children mismatch on`, + el, + ` +Server rendered element contains more child nodes than client vdom.` + ); + hasWarned = true; + } + logMismatchError(); + } + const cur = next; + next = next.nextSibling; + remove(cur); + } + } else if (shapeFlag & 8) { + let clientText = vnode.children; + if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) { + clientText = clientText.slice(1); + } + if (el.textContent !== clientText) { + if (!isMismatchAllowed(el, 0 /* TEXT */)) { + (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1( + `Hydration text content mismatch on`, + el, + ` + - rendered on server: ${el.textContent} + - expected on client: ${vnode.children}` + ); + logMismatchError(); + } + el.textContent = vnode.children; + } + } + if (props) { + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ || forcePatch || !optimized || patchFlag & (16 | 32)) { + const isCustomElement = el.tagName.includes("-"); + for (const key in props) { + if ((!!(process.env.NODE_ENV !== "production") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && // #11189 skip if this node has directives that have created hooks + // as it could have mutated the DOM in any possible way + !(dirs && dirs.some((d) => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent)) { + logMismatchError(); + } + if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers + key[0] === "." || isCustomElement) { + patchProp(el, key, null, props[key], void 0, parentComponent); + } + } + } else if (props.onClick) { + patchProp( + el, + "onClick", + null, + props.onClick, + void 0, + parentComponent + ); + } else if (patchFlag & 4 && isReactive(props.style)) { + for (const key in props.style) props.style[key]; + } + } + let vnodeHooks; + if (vnodeHooks = props && props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHooks, parentComponent, vnode); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) { + queueEffectWithSuspense(() => { + vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + } + return el.nextSibling; + }; + const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!parentVNode.dynamicChildren; + const children = parentVNode.children; + const l = children.length; + let hasWarned = false; + for (let i = 0; i < l; i++) { + const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]); + const isText = vnode.type === Text; + if (node) { + if (isText && !optimized) { + if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) { + insert( + createText( + node.data.slice(vnode.children.length) + ), + container, + nextSibling(node) + ); + node.data = vnode.children; + } + } + node = hydrateNode( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } else if (isText && !vnode.children) { + insert(vnode.el = createText(""), container); + } else { + if (!isMismatchAllowed(container, 1 /* CHILDREN */)) { + if ((!!(process.env.NODE_ENV !== "production") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) { + warn$1( + `Hydration children mismatch on`, + container, + ` +Server rendered element contains fewer child nodes than client vdom.` + ); + hasWarned = true; + } + logMismatchError(); + } + patch( + null, + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + } + } + return node; + }; + const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + const { slotScopeIds: fragmentSlotScopeIds } = vnode; + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + const container = parentNode(node); + const next = hydrateChildren( + nextSibling(node), + vnode, + container, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + if (next && isComment(next) && next.data === "]") { + return nextSibling(vnode.anchor = next); + } else { + logMismatchError(); + insert(vnode.anchor = createComment(`]`), container, next); + return next; + } + }; + const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => { + if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) { + (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1( + `Hydration node mismatch: +- rendered on server:`, + node, + node.nodeType === 3 ? `(text)` : isComment(node) && node.data === "[" ? `(start of fragment)` : ``, + ` +- expected on client:`, + vnode.type + ); + logMismatchError(); + } + vnode.el = null; + if (isFragment) { + const end = locateClosingAnchor(node); + while (true) { + const next2 = nextSibling(node); + if (next2 && next2 !== end) { + remove(next2); + } else { + break; + } + } + } + const next = nextSibling(node); + const container = parentNode(node); + remove(node); + patch( + null, + vnode, + container, + next, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + if (parentComponent) { + parentComponent.vnode.el = vnode.el; + updateHOCHostEl(parentComponent, vnode.el); + } + return next; + }; + const locateClosingAnchor = (node, open = "[", close = "]") => { + let match = 0; + while (node) { + node = nextSibling(node); + if (node && isComment(node)) { + if (node.data === open) match++; + if (node.data === close) { + if (match === 0) { + return nextSibling(node); + } else { + match--; + } + } + } + } + return node; + }; + const replaceNode = (newNode, oldNode, parentComponent) => { + const parentNode2 = oldNode.parentNode; + if (parentNode2) { + parentNode2.replaceChild(newNode, oldNode); + } + let parent = parentComponent; + while (parent) { + if (parent.vnode.el === oldNode) { + parent.vnode.el = parent.subTree.el = newNode; + } + parent = parent.parent; + } + }; + const isTemplateNode = (node) => { + return node.nodeType === 1 && node.tagName === "TEMPLATE"; + }; + return [hydrate, hydrateNode]; +} +function propHasMismatch(el, key, clientValue, vnode, instance) { + let mismatchType; + let mismatchKey; + let actual; + let expected; + if (key === "class") { + if (el.$cls) { + actual = el.$cls; + delete el.$cls; + } else { + actual = el.getAttribute("class"); + } + expected = normalizeClass(clientValue); + if (!isSetEqual(toClassSet(actual || ""), toClassSet(expected))) { + mismatchType = 2 /* CLASS */; + mismatchKey = `class`; + } + } else if (key === "style") { + actual = el.getAttribute("style") || ""; + expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue)); + const actualMap = toStyleMap(actual); + const expectedMap = toStyleMap(expected); + if (vnode.dirs) { + for (const { dir, value } of vnode.dirs) { + if (dir.name === "show" && !value) { + expectedMap.set("display", "none"); + } + } + } + if (instance) { + resolveCssVars(instance, vnode, expectedMap); + } + if (!isMapEqual(actualMap, expectedMap)) { + mismatchType = 3 /* STYLE */; + mismatchKey = "style"; + } + } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) { + if (isBooleanAttr(key)) { + actual = el.hasAttribute(key); + expected = includeBooleanAttr(clientValue); + } else if (clientValue == null) { + actual = el.hasAttribute(key); + expected = false; + } else { + if (el.hasAttribute(key)) { + actual = el.getAttribute(key); + } else if (key === "value" && el.tagName === "TEXTAREA") { + actual = el.value; + } else { + actual = false; + } + expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false; + } + if (actual !== expected) { + mismatchType = 4 /* ATTRIBUTE */; + mismatchKey = key; + } + } + if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) { + const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}="${v}"`; + const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`; + const postSegment = ` + - rendered on server: ${format(actual)} + - expected on client: ${format(expected)} + Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead. + You should fix the source of the mismatch.`; + { + warn$1(preSegment, el, postSegment); + } + return true; + } + return false; +} +function toClassSet(str) { + return new Set(str.trim().split(/\s+/)); +} +function isSetEqual(a, b) { + if (a.size !== b.size) { + return false; + } + for (const s of a) { + if (!b.has(s)) { + return false; + } + } + return true; +} +function toStyleMap(str) { + const styleMap = /* @__PURE__ */ new Map(); + for (const item of str.split(";")) { + let [key, value] = item.split(":"); + key = key.trim(); + value = value && value.trim(); + if (key && value) { + styleMap.set(key, value); + } + } + return styleMap; +} +function isMapEqual(a, b) { + if (a.size !== b.size) { + return false; + } + for (const [key, value] of a) { + if (value !== b.get(key)) { + return false; + } + } + return true; +} +function resolveCssVars(instance, vnode, expectedMap) { + const root = instance.subTree; + if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) { + const cssVars = instance.getCssVars(); + for (const key in cssVars) { + const value = normalizeCssVarValue(cssVars[key]); + expectedMap.set(`--${getEscapedCssVarName(key, false)}`, value); + } + } + if (vnode === root && instance.parent) { + resolveCssVars(instance.parent, instance.vnode, expectedMap); + } +} +const allowMismatchAttr = "data-allow-mismatch"; +const MismatchTypeString = { + [0 /* TEXT */]: "text", + [1 /* CHILDREN */]: "children", + [2 /* CLASS */]: "class", + [3 /* STYLE */]: "style", + [4 /* ATTRIBUTE */]: "attribute" +}; +function isMismatchAllowed(el, allowedType) { + if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) { + while (el && !el.hasAttribute(allowMismatchAttr)) { + el = el.parentElement; + } + } + const allowedAttr = el && el.getAttribute(allowMismatchAttr); + if (allowedAttr == null) { + return false; + } else if (allowedAttr === "") { + return true; + } else { + const list = allowedAttr.split(","); + if (allowedType === 0 /* TEXT */ && list.includes("children")) { + return true; + } + return list.includes(MismatchTypeString[allowedType]); + } +} + +const requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1)); +const cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id)); +const hydrateOnIdle = (timeout = 1e4) => (hydrate) => { + const id = requestIdleCallback(hydrate, { timeout }); + return () => cancelIdleCallback(id); +}; +function elementIsVisibleInViewport(el) { + const { top, left, bottom, right } = el.getBoundingClientRect(); + const { innerHeight, innerWidth } = window; + return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth); +} +const hydrateOnVisible = (opts) => (hydrate, forEach) => { + const ob = new IntersectionObserver((entries) => { + for (const e of entries) { + if (!e.isIntersecting) continue; + ob.disconnect(); + hydrate(); + break; + } + }, opts); + forEach((el) => { + if (!(el instanceof Element)) return; + if (elementIsVisibleInViewport(el)) { + hydrate(); + ob.disconnect(); + return false; + } + ob.observe(el); + }); + return () => ob.disconnect(); +}; +const hydrateOnMediaQuery = (query) => (hydrate) => { + if (query) { + const mql = matchMedia(query); + if (mql.matches) { + hydrate(); + } else { + mql.addEventListener("change", hydrate, { once: true }); + return () => mql.removeEventListener("change", hydrate); + } + } +}; +const hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => { + if (isString(interactions)) interactions = [interactions]; + let hasHydrated = false; + const doHydrate = (e) => { + if (!hasHydrated) { + hasHydrated = true; + teardown(); + hydrate(); + e.target.dispatchEvent(new e.constructor(e.type, e)); + } + }; + const teardown = () => { + forEach((el) => { + for (const i of interactions) { + el.removeEventListener(i, doHydrate); + } + }); + }; + forEach((el) => { + for (const i of interactions) { + el.addEventListener(i, doHydrate, { once: true }); + } + }); + return teardown; +}; +function forEachElement(node, cb) { + if (isComment(node) && node.data === "[") { + let depth = 1; + let next = node.nextSibling; + while (next) { + if (next.nodeType === 1) { + const result = cb(next); + if (result === false) { + break; + } + } else if (isComment(next)) { + if (next.data === "]") { + if (--depth === 0) break; + } else if (next.data === "[") { + depth++; + } + } + next = next.nextSibling; + } + } else { + cb(node); + } +} + +const isAsyncWrapper = (i) => !!i.type.__asyncLoader; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineAsyncComponent(source) { + if (isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + hydrate: hydrateStrategy, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve, reject) => { + const userRetry = () => resolve(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (!!(process.env.NODE_ENV !== "production") && !comp) { + warn$1( + `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` + ); + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + if (!!(process.env.NODE_ENV !== "production") && comp && !isObject(comp) && !isFunction(comp)) { + throw new Error(`Invalid async component load result: ${comp}`); + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + __asyncHydrate(el, instance, hydrate) { + let patched = false; + (instance.bu || (instance.bu = [])).push(() => patched = true); + const performHydrate = () => { + if (patched) { + if (!!(process.env.NODE_ENV !== "production")) { + warn$1( + `Skipping lazy hydration for component '${getComponentName(resolvedComp) || resolvedComp.__file}': it was updated before lazy hydration performed.` + ); + } + return; + } + hydrate(); + }; + const doHydrate = hydrateStrategy ? () => { + const teardown = hydrateStrategy( + performHydrate, + (cb) => forEachElement(el, cb) + ); + if (teardown) { + (instance.bum || (instance.bum = [])).push(teardown); + } + } : performHydrate; + if (resolvedComp) { + doHydrate(); + } else { + load().then(() => !instance.isUnmounted && doHydrate()); + } + }, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + markAsyncBoundary(instance); + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + ); + }; + if (suspensible && instance.suspense || isInSSRComponentSetup) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = ref(false); + const error = ref(); + const delayed = ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + instance.parent.update(); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); +} +function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; +} + +const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +const KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + if (!sharedContext.renderer) { + return () => { + const children = slots.default && slots.default(); + return children && children.length === 1 ? children[0] : children; + }; + } + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + instance.__v_cache = cache; + } + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, namespace, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + namespace, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + devtoolsComponentAdded(instance2); + } + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + invalidateMount(instance2.m); + invalidateMount(instance2.a); + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + devtoolsComponentAdded(instance2); + } + if (!!(process.env.NODE_ENV !== "production") && true) { + instance2.__keepAliveStorageContainer = storageContainer; + } + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(vnode.type); + if (name && !filter(name)) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (cached && (!current || !isSameVNodeType(cached, current))) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + watch( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + if (isSuspense(instance.subTree.type)) { + queuePostRenderEffect(() => { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + }, instance.subTree.suspense); + } else { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return current = null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + if (!!(process.env.NODE_ENV !== "production")) { + warn$1(`KeepAlive should contain exactly one component child.`); + } + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + if (vnode.type === Comment) { + current = null; + return vnode; + } + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + vnode.shapeFlag &= -257; + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } +}; +const KeepAlive = KeepAliveImpl; +function matches(pattern, name) { + if (isArray(pattern)) { + return pattern.some((p) => matches(p, name)); + } else if (isString(pattern)) { + return pattern.split(",").includes(name); + } else if (isRegExp(pattern)) { + pattern.lastIndex = 0; + return pattern.test(name); + } + return false; +} +function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); +} +function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); +} +function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } +} +function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + remove(keepAliveRoot[type], injected); + }, target); +} +function resetShapeFlag(vnode) { + vnode.shapeFlag &= -257; + vnode.shapeFlag &= -513; +} +function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; +} + +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + pauseTracking(); + const reset = setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + reset(); + resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } else if (!!(process.env.NODE_ENV !== "production")) { + const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, "")); + warn$1( + `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` ) + ); + } +} +const createHook = (lifecycle) => (hook, target = currentInstance) => { + if (!isInSSRComponentSetup || lifecycle === "sp") { + injectHook(lifecycle, (...args) => hook(...args), target); + } +}; +const onBeforeMount = createHook("bm"); +const onMounted = createHook("m"); +const onBeforeUpdate = createHook( + "bu" +); +const onUpdated = createHook("u"); +const onBeforeUnmount = createHook( + "bum" +); +const onUnmounted = createHook("um"); +const onServerPrefetch = createHook( + "sp" +); +const onRenderTriggered = createHook("rtg"); +const onRenderTracked = createHook("rtc"); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} + +const COMPONENTS = "components"; +const DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + ); + if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + if (!!(process.env.NODE_ENV !== "production") && warnMissing && !res) { + const extra = type === COMPONENTS ? ` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; + warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1( + `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().` + ); + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]); +} + +function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + const sourceIsArray = isArray(source); + if (sourceIsArray || isString(source)) { + const sourceIsReactiveArray = sourceIsArray && isReactive(source); + let needsWrap = false; + let isReadonlySource = false; + if (sourceIsReactiveArray) { + needsWrap = !isShallow(source); + isReadonlySource = isReadonly(source); + source = shallowReadArray(source); + } + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem( + needsWrap ? isReadonlySource ? toReadonly(toReactive(source[i])) : toReactive(source[i]) : source[i], + i, + void 0, + cached && cached[i] + ); + } + } else if (typeof source === "number") { + if (!!(process.env.NODE_ENV !== "production") && !Number.isInteger(source)) { + warn$1(`The v-for range expect an integer value but got ${source}.`); + } + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; +} + +function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; +} + +function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) { + if (name !== "default") props.name = name; + return openBlock(), createBlock( + Fragment, + null, + [createVNode("slot", props, fallback && fallback())], + 64 + ); + } + let slot = slots[name]; + if (!!(process.env.NODE_ENV !== "production") && slot && slot.length > 1) { + warn$1( + `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` + ); + slot = () => []; + } + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key; + const rendered = createBlock( + Fragment, + { + key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content + (!validSlotContent && fallback ? "_fb" : "") + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) return true; + if (child.type === Comment) return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} + +function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + if (!!(process.env.NODE_ENV !== "production") && !isObject(obj)) { + warn$1(`v-on with no argument expects an object value.`); + return ret; + } + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key]; + } + return ret; +} + +const getPublicInstance = (i) => { + if (!i) return null; + if (isStatefulComponent(i)) return getComponentPublicInstance(i); + return getPublicInstance(i.parent); +}; +const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => !!(process.env.NODE_ENV !== "production") ? shallowReadonly(i.props) : i.props, + $attrs: (i) => !!(process.env.NODE_ENV !== "production") ? shallowReadonly(i.attrs) : i.attrs, + $slots: (i) => !!(process.env.NODE_ENV !== "production") ? shallowReadonly(i.slots) : i.slots, + $refs: (i) => !!(process.env.NODE_ENV !== "production") ? shallowReadonly(i.refs) : i.refs, + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $host: (i) => i.ce, + $emit: (i) => i.emit, + $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type, + $forceUpdate: (i) => i.f || (i.f = () => { + queueJob(i.update); + }), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP + }) +); +const isReservedPrefix = (key) => key === "_" || key === "$"; +const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); +const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + if (key === "__v_skip") { + return true; + } + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (!!(process.env.NODE_ENV !== "production") && key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + track(instance.attrs, "get", ""); + !!(process.env.NODE_ENV !== "production") && markAttrsAccessed(); + } else if (!!(process.env.NODE_ENV !== "production") && key === "$slots") { + track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else if (!!(process.env.NODE_ENV !== "production") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf("__v") !== 0)) { + if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { + warn$1( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); + } else if (instance === currentRenderingInstance) { + warn$1( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (!!(process.env.NODE_ENV !== "production") && setupState.__isScriptSetup && hasOwn(setupState, key)) { + warn$1(`Cannot mutate <script setup> binding "${key}" from Options API.`); + return false; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + data[key] = value; + return true; + } else if (hasOwn(instance.props, key)) { + !!(process.env.NODE_ENV !== "production") && warn$1(`Attempting to mutate prop "${key}". Props are readonly.`); + return false; + } + if (key[0] === "$" && key.slice(1) in instance) { + !!(process.env.NODE_ENV !== "production") && warn$1( + `Attempting to mutate public property "${key}". Properties starting with $ are reserved and readonly.` + ); + return false; + } else { + if (!!(process.env.NODE_ENV !== "production") && key in instance.appContext.config.globalProperties) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + value + }); + } else { + ctx[key] = value; + } + } + return true; + }, + has({ + _: { data, setupState, accessCache, ctx, appContext, propsOptions } + }, key) { + let normalizedProps; + return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key); + }, + defineProperty(target, key, descriptor) { + if (descriptor.get != null) { + target._.accessCache[key] = 0; + } else if (hasOwn(descriptor, "value")) { + this.set(target, key, descriptor.value, null); + } + return Reflect.defineProperty(target, key, descriptor); + } +}; +if (!!(process.env.NODE_ENV !== "production") && true) { + PublicInstanceProxyHandlers.ownKeys = (target) => { + warn$1( + `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.` + ); + return Reflect.ownKeys(target); + }; +} +const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend({}, PublicInstanceProxyHandlers, { + get(target, key) { + if (key === Symbol.unscopables) { + return; + } + return PublicInstanceProxyHandlers.get(target, key, target); + }, + has(_, key) { + const has = key[0] !== "_" && !isGloballyAllowed(key); + if (!!(process.env.NODE_ENV !== "production") && !has && PublicInstanceProxyHandlers.has(_, key)) { + warn$1( + `Property ${JSON.stringify( + key + )} should not start with _ which is a reserved prefix for Vue internals.` + ); + } + return has; + } +}); +function createDevRenderContext(instance) { + const target = {}; + Object.defineProperty(target, `_`, { + configurable: true, + enumerable: false, + get: () => instance + }); + Object.keys(publicPropertiesMap).forEach((key) => { + Object.defineProperty(target, key, { + configurable: true, + enumerable: false, + get: () => publicPropertiesMap[key](instance), + // intercepted by the proxy so no need for implementation, + // but needed to prevent set errors + set: NOOP + }); + }); + return target; +} +function exposePropsOnRenderContext(instance) { + const { + ctx, + propsOptions: [propsOptions] + } = instance; + if (propsOptions) { + Object.keys(propsOptions).forEach((key) => { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => instance.props[key], + set: NOOP + }); + }); + } +} +function exposeSetupStateOnRenderContext(instance) { + const { ctx, setupState } = instance; + Object.keys(toRaw(setupState)).forEach((key) => { + if (!setupState.__isScriptSetup) { + if (isReservedPrefix(key[0])) { + warn$1( + `setup() return property ${JSON.stringify( + key + )} should not start with "$" or "_" which are reserved prefixes for Vue internals.` + ); + return; + } + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => setupState[key], + set: NOOP + }); + } + }); +} + +const warnRuntimeUsage = (method) => warn$1( + `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.` +); +function defineProps() { + if (!!(process.env.NODE_ENV !== "production")) { + warnRuntimeUsage(`defineProps`); + } + return null; +} +function defineEmits() { + if (!!(process.env.NODE_ENV !== "production")) { + warnRuntimeUsage(`defineEmits`); + } + return null; +} +function defineExpose(exposed) { + if (!!(process.env.NODE_ENV !== "production")) { + warnRuntimeUsage(`defineExpose`); + } +} +function defineOptions(options) { + if (!!(process.env.NODE_ENV !== "production")) { + warnRuntimeUsage(`defineOptions`); + } +} +function defineSlots() { + if (!!(process.env.NODE_ENV !== "production")) { + warnRuntimeUsage(`defineSlots`); + } + return null; +} +function defineModel() { + if (!!(process.env.NODE_ENV !== "production")) { + warnRuntimeUsage("defineModel"); + } +} +function withDefaults(props, defaults) { + if (!!(process.env.NODE_ENV !== "production")) { + warnRuntimeUsage(`withDefaults`); + } + return null; +} +function useSlots() { + return getContext("useSlots").slots; +} +function useAttrs() { + return getContext("useAttrs").attrs; +} +function getContext(calledFunctionName) { + const i = getCurrentInstance(); + if (!!(process.env.NODE_ENV !== "production") && !i) { + warn$1(`${calledFunctionName}() called without active instance.`); + } + return i.setupContext || (i.setupContext = createSetupContext(i)); +} +function normalizePropsOrEmits(props) { + return isArray(props) ? props.reduce( + (normalized, p) => (normalized[p] = null, normalized), + {} + ) : props; +} +function mergeDefaults(raw, defaults) { + const props = normalizePropsOrEmits(raw); + for (const key in defaults) { + if (key.startsWith("__skip")) continue; + let opt = props[key]; + if (opt) { + if (isArray(opt) || isFunction(opt)) { + opt = props[key] = { type: opt, default: defaults[key] }; + } else { + opt.default = defaults[key]; + } + } else if (opt === null) { + opt = props[key] = { default: defaults[key] }; + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1(`props default key "${key}" has no corresponding declaration.`); + } + if (opt && defaults[`__skip_${key}`]) { + opt.skipFactory = true; + } + } + return props; +} +function mergeModels(a, b) { + if (!a || !b) return a || b; + if (isArray(a) && isArray(b)) return a.concat(b); + return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b)); +} +function createPropsRestProxy(props, excludedKeys) { + const ret = {}; + for (const key in props) { + if (!excludedKeys.includes(key)) { + Object.defineProperty(ret, key, { + enumerable: true, + get: () => props[key] + }); + } + } + return ret; +} +function withAsyncContext(getAwaitable) { + const ctx = getCurrentInstance(); + if (!!(process.env.NODE_ENV !== "production") && !ctx) { + warn$1( + `withAsyncContext called without active current instance. This is likely a bug.` + ); + } + let awaitable = getAwaitable(); + unsetCurrentInstance(); + if (isPromise(awaitable)) { + awaitable = awaitable.catch((e) => { + setCurrentInstance(ctx); + throw e; + }); + } + return [awaitable, () => setCurrentInstance(ctx)]; +} + +function createDuplicateChecker() { + const cache = /* @__PURE__ */ Object.create(null); + return (type, key) => { + if (cache[key]) { + warn$1(`${type} property "${key}" is already defined in ${cache[key]}.`); + } else { + cache[key] = type; + } + }; +} +let shouldCacheAccess = true; +function applyOptions(instance) { + const options = resolveMergedOptions(instance); + const publicThis = instance.proxy; + const ctx = instance.ctx; + shouldCacheAccess = false; + if (options.beforeCreate) { + callHook(options.beforeCreate, instance, "bc"); + } + const { + // state + data: dataOptions, + computed: computedOptions, + methods, + watch: watchOptions, + provide: provideOptions, + inject: injectOptions, + // lifecycle + created, + beforeMount, + mounted, + beforeUpdate, + updated, + activated, + deactivated, + beforeDestroy, + beforeUnmount, + destroyed, + unmounted, + render, + renderTracked, + renderTriggered, + errorCaptured, + serverPrefetch, + // public API + expose, + inheritAttrs, + // assets + components, + directives, + filters + } = options; + const checkDuplicateProperties = !!(process.env.NODE_ENV !== "production") ? createDuplicateChecker() : null; + if (!!(process.env.NODE_ENV !== "production")) { + const [propsOptions] = instance.propsOptions; + if (propsOptions) { + for (const key in propsOptions) { + checkDuplicateProperties("Props" /* PROPS */, key); + } + } + } + if (injectOptions) { + resolveInjections(injectOptions, ctx, checkDuplicateProperties); + } + if (methods) { + for (const key in methods) { + const methodHandler = methods[key]; + if (isFunction(methodHandler)) { + if (!!(process.env.NODE_ENV !== "production")) { + Object.defineProperty(ctx, key, { + value: methodHandler.bind(publicThis), + configurable: true, + enumerable: true, + writable: true + }); + } else { + ctx[key] = methodHandler.bind(publicThis); + } + if (!!(process.env.NODE_ENV !== "production")) { + checkDuplicateProperties("Methods" /* METHODS */, key); + } + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1( + `Method "${key}" has type "${typeof methodHandler}" in the component definition. Did you reference the function correctly?` + ); + } + } + } + if (dataOptions) { + if (!!(process.env.NODE_ENV !== "production") && !isFunction(dataOptions)) { + warn$1( + `The data option must be a function. Plain object usage is no longer supported.` + ); + } + const data = dataOptions.call(publicThis, publicThis); + if (!!(process.env.NODE_ENV !== "production") && isPromise(data)) { + warn$1( + `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.` + ); + } + if (!isObject(data)) { + !!(process.env.NODE_ENV !== "production") && warn$1(`data() should return an object.`); + } else { + instance.data = reactive(data); + if (!!(process.env.NODE_ENV !== "production")) { + for (const key in data) { + checkDuplicateProperties("Data" /* DATA */, key); + if (!isReservedPrefix(key[0])) { + Object.defineProperty(ctx, key, { + configurable: true, + enumerable: true, + get: () => data[key], + set: NOOP + }); + } + } + } + } + } + shouldCacheAccess = true; + if (computedOptions) { + for (const key in computedOptions) { + const opt = computedOptions[key]; + const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP; + if (!!(process.env.NODE_ENV !== "production") && get === NOOP) { + warn$1(`Computed property "${key}" has no getter.`); + } + const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : !!(process.env.NODE_ENV !== "production") ? () => { + warn$1( + `Write operation failed: computed property "${key}" is readonly.` + ); + } : NOOP; + const c = computed({ + get, + set + }); + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => c.value, + set: (v) => c.value = v + }); + if (!!(process.env.NODE_ENV !== "production")) { + checkDuplicateProperties("Computed" /* COMPUTED */, key); + } + } + } + if (watchOptions) { + for (const key in watchOptions) { + createWatcher(watchOptions[key], ctx, publicThis, key); + } + } + if (provideOptions) { + const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions; + Reflect.ownKeys(provides).forEach((key) => { + provide(key, provides[key]); + }); + } + if (created) { + callHook(created, instance, "c"); + } + function registerLifecycleHook(register, hook) { + if (isArray(hook)) { + hook.forEach((_hook) => register(_hook.bind(publicThis))); + } else if (hook) { + register(hook.bind(publicThis)); + } + } + registerLifecycleHook(onBeforeMount, beforeMount); + registerLifecycleHook(onMounted, mounted); + registerLifecycleHook(onBeforeUpdate, beforeUpdate); + registerLifecycleHook(onUpdated, updated); + registerLifecycleHook(onActivated, activated); + registerLifecycleHook(onDeactivated, deactivated); + registerLifecycleHook(onErrorCaptured, errorCaptured); + registerLifecycleHook(onRenderTracked, renderTracked); + registerLifecycleHook(onRenderTriggered, renderTriggered); + registerLifecycleHook(onBeforeUnmount, beforeUnmount); + registerLifecycleHook(onUnmounted, unmounted); + registerLifecycleHook(onServerPrefetch, serverPrefetch); + if (isArray(expose)) { + if (expose.length) { + const exposed = instance.exposed || (instance.exposed = {}); + expose.forEach((key) => { + Object.defineProperty(exposed, key, { + get: () => publicThis[key], + set: (val) => publicThis[key] = val, + enumerable: true + }); + }); + } else if (!instance.exposed) { + instance.exposed = {}; + } + } + if (render && instance.render === NOOP) { + instance.render = render; + } + if (inheritAttrs != null) { + instance.inheritAttrs = inheritAttrs; + } + if (components) instance.components = components; + if (directives) instance.directives = directives; + if (serverPrefetch) { + markAsyncBoundary(instance); + } +} +function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) { + if (isArray(injectOptions)) { + injectOptions = normalizeInject(injectOptions); + } + for (const key in injectOptions) { + const opt = injectOptions[key]; + let injected; + if (isObject(opt)) { + if ("default" in opt) { + injected = inject( + opt.from || key, + opt.default, + true + ); + } else { + injected = inject(opt.from || key); + } + } else { + injected = inject(opt); + } + if (isRef(injected)) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => injected.value, + set: (v) => injected.value = v + }); + } else { + ctx[key] = injected; + } + if (!!(process.env.NODE_ENV !== "production")) { + checkDuplicateProperties("Inject" /* INJECT */, key); + } + } +} +function callHook(hook, instance, type) { + callWithAsyncErrorHandling( + isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy), + instance, + type + ); +} +function createWatcher(raw, ctx, publicThis, key) { + let getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; + if (isString(raw)) { + const handler = ctx[raw]; + if (isFunction(handler)) { + { + watch(getter, handler); + } + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1(`Invalid watch handler specified by key "${raw}"`, handler); + } + } else if (isFunction(raw)) { + { + watch(getter, raw.bind(publicThis)); + } + } else if (isObject(raw)) { + if (isArray(raw)) { + raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); + } else { + const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; + if (isFunction(handler)) { + watch(getter, handler, raw); + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1(`Invalid watch handler specified by key "${raw.handler}"`, handler); + } + } + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1(`Invalid watch option: "${key}"`, raw); + } +} +function resolveMergedOptions(instance) { + const base = instance.type; + const { mixins, extends: extendsOptions } = base; + const { + mixins: globalMixins, + optionsCache: cache, + config: { optionMergeStrategies } + } = instance.appContext; + const cached = cache.get(base); + let resolved; + if (cached) { + resolved = cached; + } else if (!globalMixins.length && !mixins && !extendsOptions) { + { + resolved = base; + } + } else { + resolved = {}; + if (globalMixins.length) { + globalMixins.forEach( + (m) => mergeOptions(resolved, m, optionMergeStrategies, true) + ); + } + mergeOptions(resolved, base, optionMergeStrategies); + } + if (isObject(base)) { + cache.set(base, resolved); + } + return resolved; +} +function mergeOptions(to, from, strats, asMixin = false) { + const { mixins, extends: extendsOptions } = from; + if (extendsOptions) { + mergeOptions(to, extendsOptions, strats, true); + } + if (mixins) { + mixins.forEach( + (m) => mergeOptions(to, m, strats, true) + ); + } + for (const key in from) { + if (asMixin && key === "expose") { + !!(process.env.NODE_ENV !== "production") && warn$1( + `"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.` + ); + } else { + const strat = internalOptionMergeStrats[key] || strats && strats[key]; + to[key] = strat ? strat(to[key], from[key]) : from[key]; + } + } + return to; +} +const internalOptionMergeStrats = { + data: mergeDataFn, + props: mergeEmitsOrPropsOptions, + emits: mergeEmitsOrPropsOptions, + // objects + methods: mergeObjectOptions, + computed: mergeObjectOptions, + // lifecycle + beforeCreate: mergeAsArray, + created: mergeAsArray, + beforeMount: mergeAsArray, + mounted: mergeAsArray, + beforeUpdate: mergeAsArray, + updated: mergeAsArray, + beforeDestroy: mergeAsArray, + beforeUnmount: mergeAsArray, + destroyed: mergeAsArray, + unmounted: mergeAsArray, + activated: mergeAsArray, + deactivated: mergeAsArray, + errorCaptured: mergeAsArray, + serverPrefetch: mergeAsArray, + // assets + components: mergeObjectOptions, + directives: mergeObjectOptions, + // watch + watch: mergeWatchOptions, + // provide / inject + provide: mergeDataFn, + inject: mergeInject +}; +function mergeDataFn(to, from) { + if (!from) { + return to; + } + if (!to) { + return from; + } + return function mergedDataFn() { + return (extend)( + isFunction(to) ? to.call(this, this) : to, + isFunction(from) ? from.call(this, this) : from + ); + }; +} +function mergeInject(to, from) { + return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); +} +function normalizeInject(raw) { + if (isArray(raw)) { + const res = {}; + for (let i = 0; i < raw.length; i++) { + res[raw[i]] = raw[i]; + } + return res; + } + return raw; +} +function mergeAsArray(to, from) { + return to ? [...new Set([].concat(to, from))] : from; +} +function mergeObjectOptions(to, from) { + return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from; +} +function mergeEmitsOrPropsOptions(to, from) { + if (to) { + if (isArray(to) && isArray(from)) { + return [.../* @__PURE__ */ new Set([...to, ...from])]; + } + return extend( + /* @__PURE__ */ Object.create(null), + normalizePropsOrEmits(to), + normalizePropsOrEmits(from != null ? from : {}) + ); + } else { + return from; + } +} +function mergeWatchOptions(to, from) { + if (!to) return from; + if (!from) return to; + const merged = extend(/* @__PURE__ */ Object.create(null), to); + for (const key in from) { + merged[key] = mergeAsArray(to[key], from[key]); + } + return merged; +} + +function createAppContext() { + return { + app: null, + config: { + isNativeTag: NO, + performance: false, + globalProperties: {}, + optionMergeStrategies: {}, + errorHandler: void 0, + warnHandler: void 0, + compilerOptions: {} + }, + mixins: [], + components: {}, + directives: {}, + provides: /* @__PURE__ */ Object.create(null), + optionsCache: /* @__PURE__ */ new WeakMap(), + propsCache: /* @__PURE__ */ new WeakMap(), + emitsCache: /* @__PURE__ */ new WeakMap() + }; +} +let uid$1 = 0; +function createAppAPI(render, hydrate) { + return function createApp(rootComponent, rootProps = null) { + if (!isFunction(rootComponent)) { + rootComponent = extend({}, rootComponent); + } + if (rootProps != null && !isObject(rootProps)) { + !!(process.env.NODE_ENV !== "production") && warn$1(`root props passed to app.mount() must be an object.`); + rootProps = null; + } + const context = createAppContext(); + const installedPlugins = /* @__PURE__ */ new WeakSet(); + const pluginCleanupFns = []; + let isMounted = false; + const app = context.app = { + _uid: uid$1++, + _component: rootComponent, + _props: rootProps, + _container: null, + _context: context, + _instance: null, + version, + get config() { + return context.config; + }, + set config(v) { + if (!!(process.env.NODE_ENV !== "production")) { + warn$1( + `app.config cannot be replaced. Modify individual options instead.` + ); + } + }, + use(plugin, ...options) { + if (installedPlugins.has(plugin)) { + !!(process.env.NODE_ENV !== "production") && warn$1(`Plugin has already been applied to target app.`); + } else if (plugin && isFunction(plugin.install)) { + installedPlugins.add(plugin); + plugin.install(app, ...options); + } else if (isFunction(plugin)) { + installedPlugins.add(plugin); + plugin(app, ...options); + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1( + `A plugin must either be a function or an object with an "install" function.` + ); + } + return app; + }, + mixin(mixin) { + if (__VUE_OPTIONS_API__) { + if (!context.mixins.includes(mixin)) { + context.mixins.push(mixin); + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1( + "Mixin has already been applied to target app" + (mixin.name ? `: ${mixin.name}` : "") + ); + } + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1("Mixins are only available in builds supporting Options API"); + } + return app; + }, + component(name, component) { + if (!!(process.env.NODE_ENV !== "production")) { + validateComponentName(name, context.config); + } + if (!component) { + return context.components[name]; + } + if (!!(process.env.NODE_ENV !== "production") && context.components[name]) { + warn$1(`Component "${name}" has already been registered in target app.`); + } + context.components[name] = component; + return app; + }, + directive(name, directive) { + if (!!(process.env.NODE_ENV !== "production")) { + validateDirectiveName(name); + } + if (!directive) { + return context.directives[name]; + } + if (!!(process.env.NODE_ENV !== "production") && context.directives[name]) { + warn$1(`Directive "${name}" has already been registered in target app.`); + } + context.directives[name] = directive; + return app; + }, + mount(rootContainer, isHydrate, namespace) { + if (!isMounted) { + if (!!(process.env.NODE_ENV !== "production") && rootContainer.__vue_app__) { + warn$1( + `There is already an app instance mounted on the host container. + If you want to mount another app on the same host container, you need to unmount the previous app by calling \`app.unmount()\` first.` + ); + } + const vnode = app._ceVNode || createVNode(rootComponent, rootProps); + vnode.appContext = context; + if (namespace === true) { + namespace = "svg"; + } else if (namespace === false) { + namespace = void 0; + } + if (!!(process.env.NODE_ENV !== "production")) { + context.reload = () => { + const cloned = cloneVNode(vnode); + cloned.el = null; + render(cloned, rootContainer, namespace); + }; + } + if (isHydrate && hydrate) { + hydrate(vnode, rootContainer); + } else { + render(vnode, rootContainer, namespace); + } + isMounted = true; + app._container = rootContainer; + rootContainer.__vue_app__ = app; + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + app._instance = vnode.component; + devtoolsInitApp(app, version); + } + return getComponentPublicInstance(vnode.component); + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1( + `App has already been mounted. +If you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \`const createMyApp = () => createApp(App)\`` + ); + } + }, + onUnmount(cleanupFn) { + if (!!(process.env.NODE_ENV !== "production") && typeof cleanupFn !== "function") { + warn$1( + `Expected function as first argument to app.onUnmount(), but got ${typeof cleanupFn}` + ); + } + pluginCleanupFns.push(cleanupFn); + }, + unmount() { + if (isMounted) { + callWithAsyncErrorHandling( + pluginCleanupFns, + app._instance, + 16 + ); + render(null, app._container); + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + app._instance = null; + devtoolsUnmountApp(app); + } + delete app._container.__vue_app__; + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1(`Cannot unmount an app that is not mounted.`); + } + }, + provide(key, value) { + if (!!(process.env.NODE_ENV !== "production") && key in context.provides) { + if (hasOwn(context.provides, key)) { + warn$1( + `App already provides property with key "${String(key)}". It will be overwritten with the new value.` + ); + } else { + warn$1( + `App already provides property with key "${String(key)}" inherited from its parent element. It will be overwritten with the new value.` + ); + } + } + context.provides[key] = value; + return app; + }, + runWithContext(fn) { + const lastApp = currentApp; + currentApp = app; + try { + return fn(); + } finally { + currentApp = lastApp; + } + } + }; + return app; + }; +} +let currentApp = null; + +function provide(key, value) { + if (!currentInstance) { + if (!!(process.env.NODE_ENV !== "production")) { + warn$1(`provide() can only be used inside setup().`); + } + } else { + let provides = currentInstance.provides; + const parentProvides = currentInstance.parent && currentInstance.parent.provides; + if (parentProvides === provides) { + provides = currentInstance.provides = Object.create(parentProvides); + } + provides[key] = value; + } +} +function inject(key, defaultValue, treatDefaultAsFactory = false) { + const instance = getCurrentInstance(); + if (instance || currentApp) { + let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0; + if (provides && key in provides) { + return provides[key]; + } else if (arguments.length > 1) { + return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1(`injection "${String(key)}" not found.`); + } + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1(`inject() can only be used inside setup() or functional components.`); + } +} +function hasInjectionContext() { + return !!(getCurrentInstance() || currentApp); +} + +const internalObjectProto = {}; +const createInternalObject = () => Object.create(internalObjectProto); +const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto; + +function initProps(instance, rawProps, isStateful, isSSR = false) { + const props = {}; + const attrs = createInternalObject(); + instance.propsDefaults = /* @__PURE__ */ Object.create(null); + setFullProps(instance, rawProps, props, attrs); + for (const key in instance.propsOptions[0]) { + if (!(key in props)) { + props[key] = void 0; + } + } + if (!!(process.env.NODE_ENV !== "production")) { + validateProps(rawProps || {}, props, instance); + } + if (isStateful) { + instance.props = isSSR ? props : shallowReactive(props); + } else { + if (!instance.type.props) { + instance.props = attrs; + } else { + instance.props = props; + } + } + instance.attrs = attrs; +} +function isInHmrContext(instance) { + while (instance) { + if (instance.type.__hmrId) return true; + instance = instance.parent; + } +} +function updateProps(instance, rawProps, rawPrevProps, optimized) { + const { + props, + attrs, + vnode: { patchFlag } + } = instance; + const rawCurrentProps = toRaw(props); + const [options] = instance.propsOptions; + let hasAttrsChanged = false; + if ( + // always force full diff in dev + // - #1942 if hmr is enabled with sfc component + // - vite#872 non-sfc component used by sfc component + !(!!(process.env.NODE_ENV !== "production") && isInHmrContext(instance)) && (optimized || patchFlag > 0) && !(patchFlag & 16) + ) { + if (patchFlag & 8) { + const propsToUpdate = instance.vnode.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + let key = propsToUpdate[i]; + if (isEmitListener(instance.emitsOptions, key)) { + continue; + } + const value = rawProps[key]; + if (options) { + if (hasOwn(attrs, key)) { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } else { + const camelizedKey = camelize(key); + props[camelizedKey] = resolvePropValue( + options, + rawCurrentProps, + camelizedKey, + value, + instance, + false + ); + } + } else { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + } else { + if (setFullProps(instance, rawProps, props, attrs)) { + hasAttrsChanged = true; + } + let kebabKey; + for (const key in rawCurrentProps) { + if (!rawProps || // for camelCase + !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case + // and converted to camelCase (#955) + ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) { + if (options) { + if (rawPrevProps && // for camelCase + (rawPrevProps[key] !== void 0 || // for kebab-case + rawPrevProps[kebabKey] !== void 0)) { + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + void 0, + instance, + true + ); + } + } else { + delete props[key]; + } + } + } + if (attrs !== rawCurrentProps) { + for (const key in attrs) { + if (!rawProps || !hasOwn(rawProps, key) && true) { + delete attrs[key]; + hasAttrsChanged = true; + } + } + } + } + if (hasAttrsChanged) { + trigger(instance.attrs, "set", ""); + } + if (!!(process.env.NODE_ENV !== "production")) { + validateProps(rawProps || {}, props, instance); + } +} +function setFullProps(instance, rawProps, props, attrs) { + const [options, needCastKeys] = instance.propsOptions; + let hasAttrsChanged = false; + let rawCastValues; + if (rawProps) { + for (let key in rawProps) { + if (isReservedProp(key)) { + continue; + } + const value = rawProps[key]; + let camelKey; + if (options && hasOwn(options, camelKey = camelize(key))) { + if (!needCastKeys || !needCastKeys.includes(camelKey)) { + props[camelKey] = value; + } else { + (rawCastValues || (rawCastValues = {}))[camelKey] = value; + } + } else if (!isEmitListener(instance.emitsOptions, key)) { + if (!(key in attrs) || value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + if (needCastKeys) { + const rawCurrentProps = toRaw(props); + const castValues = rawCastValues || EMPTY_OBJ; + for (let i = 0; i < needCastKeys.length; i++) { + const key = needCastKeys[i]; + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + castValues[key], + instance, + !hasOwn(castValues, key) + ); + } + } + return hasAttrsChanged; +} +function resolvePropValue(options, props, key, value, instance, isAbsent) { + const opt = options[key]; + if (opt != null) { + const hasDefault = hasOwn(opt, "default"); + if (hasDefault && value === void 0) { + const defaultValue = opt.default; + if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) { + const { propsDefaults } = instance; + if (key in propsDefaults) { + value = propsDefaults[key]; + } else { + const reset = setCurrentInstance(instance); + value = propsDefaults[key] = defaultValue.call( + null, + props + ); + reset(); + } + } else { + value = defaultValue; + } + if (instance.ce) { + instance.ce._setProp(key, value); + } + } + if (opt[0 /* shouldCast */]) { + if (isAbsent && !hasDefault) { + value = false; + } else if (opt[1 /* shouldCastTrue */] && (value === "" || value === hyphenate(key))) { + value = true; + } + } + } + return value; +} +const mixinPropsCache = /* @__PURE__ */ new WeakMap(); +function normalizePropsOptions(comp, appContext, asMixin = false) { + const cache = __VUE_OPTIONS_API__ && asMixin ? mixinPropsCache : appContext.propsCache; + const cached = cache.get(comp); + if (cached) { + return cached; + } + const raw = comp.props; + const normalized = {}; + const needCastKeys = []; + let hasExtends = false; + if (__VUE_OPTIONS_API__ && !isFunction(comp)) { + const extendProps = (raw2) => { + hasExtends = true; + const [props, keys] = normalizePropsOptions(raw2, appContext, true); + extend(normalized, props); + if (keys) needCastKeys.push(...keys); + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendProps); + } + if (comp.extends) { + extendProps(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendProps); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, EMPTY_ARR); + } + return EMPTY_ARR; + } + if (isArray(raw)) { + for (let i = 0; i < raw.length; i++) { + if (!!(process.env.NODE_ENV !== "production") && !isString(raw[i])) { + warn$1(`props must be strings when using array syntax.`, raw[i]); + } + const normalizedKey = camelize(raw[i]); + if (validatePropName(normalizedKey)) { + normalized[normalizedKey] = EMPTY_OBJ; + } + } + } else if (raw) { + if (!!(process.env.NODE_ENV !== "production") && !isObject(raw)) { + warn$1(`invalid props options`, raw); + } + for (const key in raw) { + const normalizedKey = camelize(key); + if (validatePropName(normalizedKey)) { + const opt = raw[key]; + const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt); + const propType = prop.type; + let shouldCast = false; + let shouldCastTrue = true; + if (isArray(propType)) { + for (let index = 0; index < propType.length; ++index) { + const type = propType[index]; + const typeName = isFunction(type) && type.name; + if (typeName === "Boolean") { + shouldCast = true; + break; + } else if (typeName === "String") { + shouldCastTrue = false; + } + } + } else { + shouldCast = isFunction(propType) && propType.name === "Boolean"; + } + prop[0 /* shouldCast */] = shouldCast; + prop[1 /* shouldCastTrue */] = shouldCastTrue; + if (shouldCast || hasOwn(prop, "default")) { + needCastKeys.push(normalizedKey); + } + } + } + } + const res = [normalized, needCastKeys]; + if (isObject(comp)) { + cache.set(comp, res); + } + return res; +} +function validatePropName(key) { + if (key[0] !== "$" && !isReservedProp(key)) { + return true; + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1(`Invalid prop name: "${key}" is a reserved property.`); + } + return false; +} +function getType(ctor) { + if (ctor === null) { + return "null"; + } + if (typeof ctor === "function") { + return ctor.name || ""; + } else if (typeof ctor === "object") { + const name = ctor.constructor && ctor.constructor.name; + return name || ""; + } + return ""; +} +function validateProps(rawProps, props, instance) { + const resolvedValues = toRaw(props); + const options = instance.propsOptions[0]; + const camelizePropsKey = Object.keys(rawProps).map((key) => camelize(key)); + for (const key in options) { + let opt = options[key]; + if (opt == null) continue; + validateProp( + key, + resolvedValues[key], + opt, + !!(process.env.NODE_ENV !== "production") ? shallowReadonly(resolvedValues) : resolvedValues, + !camelizePropsKey.includes(key) + ); + } +} +function validateProp(name, value, prop, props, isAbsent) { + const { type, required, validator, skipCheck } = prop; + if (required && isAbsent) { + warn$1('Missing required prop: "' + name + '"'); + return; + } + if (value == null && !required) { + return; + } + if (type != null && type !== true && !skipCheck) { + let isValid = false; + const types = isArray(type) ? type : [type]; + const expectedTypes = []; + for (let i = 0; i < types.length && !isValid; i++) { + const { valid, expectedType } = assertType(value, types[i]); + expectedTypes.push(expectedType || ""); + isValid = valid; + } + if (!isValid) { + warn$1(getInvalidTypeMessage(name, value, expectedTypes)); + return; + } + } + if (validator && !validator(value, props)) { + warn$1('Invalid prop: custom validator check failed for prop "' + name + '".'); + } +} +const isSimpleType = /* @__PURE__ */ makeMap( + "String,Number,Boolean,Function,Symbol,BigInt" +); +function assertType(value, type) { + let valid; + const expectedType = getType(type); + if (expectedType === "null") { + valid = value === null; + } else if (isSimpleType(expectedType)) { + const t = typeof value; + valid = t === expectedType.toLowerCase(); + if (!valid && t === "object") { + valid = value instanceof type; + } + } else if (expectedType === "Object") { + valid = isObject(value); + } else if (expectedType === "Array") { + valid = isArray(value); + } else { + valid = value instanceof type; + } + return { + valid, + expectedType + }; +} +function getInvalidTypeMessage(name, value, expectedTypes) { + if (expectedTypes.length === 0) { + return `Prop type [] for prop "${name}" won't match anything. Did you mean to use type Array instead?`; + } + let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes.map(capitalize).join(" | ")}`; + const expectedType = expectedTypes[0]; + const receivedType = toRawType(value); + const expectedValue = styleValue(value, expectedType); + const receivedValue = styleValue(value, receivedType); + if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) { + message += ` with value ${expectedValue}`; + } + message += `, got ${receivedType} `; + if (isExplicable(receivedType)) { + message += `with value ${receivedValue}.`; + } + return message; +} +function styleValue(value, type) { + if (type === "String") { + return `"${value}"`; + } else if (type === "Number") { + return `${Number(value)}`; + } else { + return `${value}`; + } +} +function isExplicable(type) { + const explicitTypes = ["string", "number", "boolean"]; + return explicitTypes.some((elem) => type.toLowerCase() === elem); +} +function isBoolean(...args) { + return args.some((elem) => elem.toLowerCase() === "boolean"); +} + +const isInternalKey = (key) => key === "_" || key === "__" || key === "_ctx" || key === "$stable"; +const normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)]; +const normalizeSlot = (key, rawSlot, ctx) => { + if (rawSlot._n) { + return rawSlot; + } + const normalized = withCtx((...args) => { + if (!!(process.env.NODE_ENV !== "production") && currentInstance && !(ctx === null && currentRenderingInstance) && !(ctx && ctx.root !== currentInstance.root)) { + warn$1( + `Slot "${key}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.` + ); + } + return normalizeSlotValue(rawSlot(...args)); + }, ctx); + normalized._c = false; + return normalized; +}; +const normalizeObjectSlots = (rawSlots, slots, instance) => { + const ctx = rawSlots._ctx; + for (const key in rawSlots) { + if (isInternalKey(key)) continue; + const value = rawSlots[key]; + if (isFunction(value)) { + slots[key] = normalizeSlot(key, value, ctx); + } else if (value != null) { + if (!!(process.env.NODE_ENV !== "production") && true) { + warn$1( + `Non-function value encountered for slot "${key}". Prefer function slots for better performance.` + ); + } + const normalized = normalizeSlotValue(value); + slots[key] = () => normalized; + } + } +}; +const normalizeVNodeSlots = (instance, children) => { + if (!!(process.env.NODE_ENV !== "production") && !isKeepAlive(instance.vnode) && true) { + warn$1( + `Non-function value encountered for default slot. Prefer function slots for better performance.` + ); + } + const normalized = normalizeSlotValue(children); + instance.slots.default = () => normalized; +}; +const assignSlots = (slots, children, optimized) => { + for (const key in children) { + if (optimized || !isInternalKey(key)) { + slots[key] = children[key]; + } + } +}; +const initSlots = (instance, children, optimized) => { + const slots = instance.slots = createInternalObject(); + if (instance.vnode.shapeFlag & 32) { + const cacheIndexes = children.__; + if (cacheIndexes) def(slots, "__", cacheIndexes, true); + const type = children._; + if (type) { + assignSlots(slots, children, optimized); + if (optimized) { + def(slots, "_", type, true); + } + } else { + normalizeObjectSlots(children, slots); + } + } else if (children) { + normalizeVNodeSlots(instance, children); + } +}; +const updateSlots = (instance, children, optimized) => { + const { vnode, slots } = instance; + let needDeletionCheck = true; + let deletionComparisonTarget = EMPTY_OBJ; + if (vnode.shapeFlag & 32) { + const type = children._; + if (type) { + if (!!(process.env.NODE_ENV !== "production") && isHmrUpdating) { + assignSlots(slots, children, optimized); + trigger(instance, "set", "$slots"); + } else if (optimized && type === 1) { + needDeletionCheck = false; + } else { + assignSlots(slots, children, optimized); + } + } else { + needDeletionCheck = !children.$stable; + normalizeObjectSlots(children, slots); + } + deletionComparisonTarget = children; + } else if (children) { + normalizeVNodeSlots(instance, children); + deletionComparisonTarget = { default: 1 }; + } + if (needDeletionCheck) { + for (const key in slots) { + if (!isInternalKey(key) && deletionComparisonTarget[key] == null) { + delete slots[key]; + } + } + } +}; + +let supported; +let perf; +function startMeasure(instance, type) { + if (instance.appContext.config.performance && isSupported()) { + perf.mark(`vue-${type}-${instance.uid}`); + } + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now()); + } +} +function endMeasure(instance, type) { + if (instance.appContext.config.performance && isSupported()) { + const startTag = `vue-${type}-${instance.uid}`; + const endTag = startTag + `:end`; + perf.mark(endTag); + perf.measure( + `<${formatComponentName(instance, instance.type)}> ${type}`, + startTag, + endTag + ); + perf.clearMarks(startTag); + perf.clearMarks(endTag); + } + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now()); + } +} +function isSupported() { + if (supported !== void 0) { + return supported; + } + if (typeof window !== "undefined" && window.performance) { + supported = true; + perf = window.performance; + } else { + supported = false; + } + return supported; +} + +function initFeatureFlags() { + const needWarn = []; + if (typeof __VUE_OPTIONS_API__ !== "boolean") { + !!(process.env.NODE_ENV !== "production") && needWarn.push(`__VUE_OPTIONS_API__`); + getGlobalThis().__VUE_OPTIONS_API__ = true; + } + if (typeof __VUE_PROD_DEVTOOLS__ !== "boolean") { + !!(process.env.NODE_ENV !== "production") && needWarn.push(`__VUE_PROD_DEVTOOLS__`); + getGlobalThis().__VUE_PROD_DEVTOOLS__ = false; + } + if (typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ !== "boolean") { + !!(process.env.NODE_ENV !== "production") && needWarn.push(`__VUE_PROD_HYDRATION_MISMATCH_DETAILS__`); + getGlobalThis().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ = false; + } + if (!!(process.env.NODE_ENV !== "production") && needWarn.length) { + const multi = needWarn.length > 1; + console.warn( + `Feature flag${multi ? `s` : ``} ${needWarn.join(", ")} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, which expects these compile-time feature flags to be globally injected via the bundler config in order to get better tree-shaking in the production bundle. + +For more details, see https://link.vuejs.org/feature-flags.` + ); + } +} + +const queuePostRenderEffect = queueEffectWithSuspense ; +function createRenderer(options) { + return baseCreateRenderer(options); +} +function createHydrationRenderer(options) { + return baseCreateRenderer(options, createHydrationFunctions); +} +function baseCreateRenderer(options, createHydrationFns) { + { + initFeatureFlags(); + } + const target = getGlobalThis(); + target.__VUE__ = true; + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + setDevtoolsHook$1(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target); + } + const { + insert: hostInsert, + remove: hostRemove, + patchProp: hostPatchProp, + createElement: hostCreateElement, + createText: hostCreateText, + createComment: hostCreateComment, + setText: hostSetText, + setElementText: hostSetElementText, + parentNode: hostParentNode, + nextSibling: hostNextSibling, + setScopeId: hostSetScopeId = NOOP, + insertStaticContent: hostInsertStaticContent + } = options; + const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!(process.env.NODE_ENV !== "production") && isHmrUpdating ? false : !!n2.dynamicChildren) => { + if (n1 === n2) { + return; + } + if (n1 && !isSameVNodeType(n1, n2)) { + anchor = getNextHostNode(n1); + unmount(n1, parentComponent, parentSuspense, true); + n1 = null; + } + if (n2.patchFlag === -2) { + optimized = false; + n2.dynamicChildren = null; + } + const { type, ref, shapeFlag } = n2; + switch (type) { + case Text: + processText(n1, n2, container, anchor); + break; + case Comment: + processCommentNode(n1, n2, container, anchor); + break; + case Static: + if (n1 == null) { + mountStaticNode(n2, container, anchor, namespace); + } else if (!!(process.env.NODE_ENV !== "production")) { + patchStaticNode(n1, n2, container, namespace); + } + break; + case Fragment: + processFragment( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + break; + default: + if (shapeFlag & 1) { + processElement( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 6) { + processComponent( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 64) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + } else if (shapeFlag & 128) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + } else if (!!(process.env.NODE_ENV !== "production")) { + warn$1("Invalid VNode type:", type, `(${typeof type})`); + } + } + if (ref != null && parentComponent) { + setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2); + } else if (ref == null && n1 && n1.ref != null) { + setRef(n1.ref, null, parentSuspense, n1, true); + } + }; + const processText = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateText(n2.children), + container, + anchor + ); + } else { + const el = n2.el = n1.el; + if (n2.children !== n1.children) { + hostSetText(el, n2.children); + } + } + }; + const processCommentNode = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateComment(n2.children || ""), + container, + anchor + ); + } else { + n2.el = n1.el; + } + }; + const mountStaticNode = (n2, container, anchor, namespace) => { + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + namespace, + n2.el, + n2.anchor + ); + }; + const patchStaticNode = (n1, n2, container, namespace) => { + if (n2.children !== n1.children) { + const anchor = hostNextSibling(n1.anchor); + removeStaticNode(n1); + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + namespace + ); + } else { + n2.el = n1.el; + n2.anchor = n1.anchor; + } + }; + const moveStaticNode = ({ el, anchor }, container, nextSibling) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostInsert(el, container, nextSibling); + el = next; + } + hostInsert(anchor, container, nextSibling); + }; + const removeStaticNode = ({ el, anchor }) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostRemove(el); + el = next; + } + hostRemove(anchor); + }; + const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + if (n2.type === "svg") { + namespace = "svg"; + } else if (n2.type === "math") { + namespace = "mathml"; + } + if (n1 == null) { + mountElement( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + patchElement( + n1, + n2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + let el; + let vnodeHook; + const { props, shapeFlag, transition, dirs } = vnode; + el = vnode.el = hostCreateElement( + vnode.type, + namespace, + props && props.is, + props + ); + if (shapeFlag & 8) { + hostSetElementText(el, vnode.children); + } else if (shapeFlag & 16) { + mountChildren( + vnode.children, + el, + null, + parentComponent, + parentSuspense, + resolveChildrenNamespace(vnode, namespace), + slotScopeIds, + optimized + ); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent); + if (props) { + for (const key in props) { + if (key !== "value" && !isReservedProp(key)) { + hostPatchProp(el, key, null, props[key], namespace, parentComponent); + } + } + if ("value" in props) { + hostPatchProp(el, "value", null, props.value, namespace); + } + if (vnodeHook = props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + } + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + def(el, "__vnode", vnode, true); + def(el, "__vueParentComponent", parentComponent, true); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + const needCallTransitionHooks = needTransition(parentSuspense, transition); + if (needCallTransitionHooks) { + transition.beforeEnter(el); + } + hostInsert(el, container, anchor); + if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + }; + const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { + if (scopeId) { + hostSetScopeId(el, scopeId); + } + if (slotScopeIds) { + for (let i = 0; i < slotScopeIds.length; i++) { + hostSetScopeId(el, slotScopeIds[i]); + } + } + if (parentComponent) { + let subTree = parentComponent.subTree; + if (!!(process.env.NODE_ENV !== "production") && subTree.patchFlag > 0 && subTree.patchFlag & 2048) { + subTree = filterSingleRoot(subTree.children) || subTree; + } + if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) { + const parentVNode = parentComponent.vnode; + setScopeId( + el, + parentVNode, + parentVNode.scopeId, + parentVNode.slotScopeIds, + parentComponent.parent + ); + } + } + }; + const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => { + for (let i = start; i < children.length; i++) { + const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]); + patch( + null, + child, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + const el = n2.el = n1.el; + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + el.__vnode = n2; + } + let { patchFlag, dynamicChildren, dirs } = n2; + patchFlag |= n1.patchFlag & 16; + const oldProps = n1.props || EMPTY_OBJ; + const newProps = n2.props || EMPTY_OBJ; + let vnodeHook; + parentComponent && toggleRecurse(parentComponent, false); + if (vnodeHook = newProps.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + } + if (dirs) { + invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate"); + } + parentComponent && toggleRecurse(parentComponent, true); + if (!!(process.env.NODE_ENV !== "production") && isHmrUpdating) { + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) { + hostSetElementText(el, ""); + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + el, + parentComponent, + parentSuspense, + resolveChildrenNamespace(n2, namespace), + slotScopeIds + ); + if (!!(process.env.NODE_ENV !== "production")) { + traverseStaticChildren(n1, n2); + } + } else if (!optimized) { + patchChildren( + n1, + n2, + el, + null, + parentComponent, + parentSuspense, + resolveChildrenNamespace(n2, namespace), + slotScopeIds, + false + ); + } + if (patchFlag > 0) { + if (patchFlag & 16) { + patchProps(el, oldProps, newProps, parentComponent, namespace); + } else { + if (patchFlag & 2) { + if (oldProps.class !== newProps.class) { + hostPatchProp(el, "class", null, newProps.class, namespace); + } + } + if (patchFlag & 4) { + hostPatchProp(el, "style", oldProps.style, newProps.style, namespace); + } + if (patchFlag & 8) { + const propsToUpdate = n2.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + const key = propsToUpdate[i]; + const prev = oldProps[key]; + const next = newProps[key]; + if (next !== prev || key === "value") { + hostPatchProp(el, key, prev, next, namespace, parentComponent); + } + } + } + } + if (patchFlag & 1) { + if (n1.children !== n2.children) { + hostSetElementText(el, n2.children); + } + } + } else if (!optimized && dynamicChildren == null) { + patchProps(el, oldProps, newProps, parentComponent, namespace); + } + if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated"); + }, parentSuspense); + } + }; + const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => { + for (let i = 0; i < newChildren.length; i++) { + const oldVNode = oldChildren[i]; + const newVNode = newChildren[i]; + const container = ( + // oldVNode may be an errored async setup() component inside Suspense + // which will not have a mounted element + oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent + // of the Fragment itself so it can move its children. + (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement + // which also requires the correct parent container + !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything. + oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : ( + // In other cases, the parent container is not actually used so we + // just pass the block element here to avoid a DOM parentNode call. + fallbackContainer + ) + ); + patch( + oldVNode, + newVNode, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + true + ); + } + }; + const patchProps = (el, oldProps, newProps, parentComponent, namespace) => { + if (oldProps !== newProps) { + if (oldProps !== EMPTY_OBJ) { + for (const key in oldProps) { + if (!isReservedProp(key) && !(key in newProps)) { + hostPatchProp( + el, + key, + oldProps[key], + null, + namespace, + parentComponent + ); + } + } + } + for (const key in newProps) { + if (isReservedProp(key)) continue; + const next = newProps[key]; + const prev = oldProps[key]; + if (next !== prev && key !== "value") { + hostPatchProp(el, key, prev, next, namespace, parentComponent); + } + } + if ("value" in newProps) { + hostPatchProp(el, "value", oldProps.value, newProps.value, namespace); + } + } + }; + const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(""); + const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(""); + let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; + if (!!(process.env.NODE_ENV !== "production") && // #5523 dev root fragment may inherit directives + (isHmrUpdating || patchFlag & 2048)) { + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + if (n1 == null) { + hostInsert(fragmentStartAnchor, container, anchor); + hostInsert(fragmentEndAnchor, container, anchor); + mountChildren( + // #10007 + // such fragment like `<></>` will be compiled into + // a fragment which doesn't have a children. + // In this case fallback to an empty array + n2.children || [], + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result + // of renderSlot() with no valid children + n1.dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + container, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + if (!!(process.env.NODE_ENV !== "production")) { + traverseStaticChildren(n1, n2); + } else if ( + // #2080 if the stable fragment has a key, it's a <template v-for> that may + // get moved around. Make sure all root level vnodes inherit el. + // #2134 or if it's a component root, it may also get moved around + // as the component is being moved. + n2.key != null || parentComponent && n2 === parentComponent.subTree + ) { + traverseStaticChildren( + n1, + n2, + true + /* shallow */ + ); + } + } else { + patchChildren( + n1, + n2, + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + } + }; + const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + n2.slotScopeIds = slotScopeIds; + if (n1 == null) { + if (n2.shapeFlag & 512) { + parentComponent.ctx.activate( + n2, + container, + anchor, + namespace, + optimized + ); + } else { + mountComponent( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + optimized + ); + } + } else { + updateComponent(n1, n2, optimized); + } + }; + const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => { + const instance = (initialVNode.component = createComponentInstance( + initialVNode, + parentComponent, + parentSuspense + )); + if (!!(process.env.NODE_ENV !== "production") && instance.type.__hmrId) { + registerHMR(instance); + } + if (!!(process.env.NODE_ENV !== "production")) { + pushWarningContext(initialVNode); + startMeasure(instance, `mount`); + } + if (isKeepAlive(initialVNode)) { + instance.ctx.renderer = internals; + } + { + if (!!(process.env.NODE_ENV !== "production")) { + startMeasure(instance, `init`); + } + setupComponent(instance, false, optimized); + if (!!(process.env.NODE_ENV !== "production")) { + endMeasure(instance, `init`); + } + } + if (!!(process.env.NODE_ENV !== "production") && isHmrUpdating) initialVNode.el = null; + if (instance.asyncDep) { + parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized); + if (!initialVNode.el) { + const placeholder = instance.subTree = createVNode(Comment); + processCommentNode(null, placeholder, container, anchor); + initialVNode.placeholder = placeholder.el; + } + } else { + setupRenderEffect( + instance, + initialVNode, + container, + anchor, + parentSuspense, + namespace, + optimized + ); + } + if (!!(process.env.NODE_ENV !== "production")) { + popWarningContext(); + endMeasure(instance, `mount`); + } + }; + const updateComponent = (n1, n2, optimized) => { + const instance = n2.component = n1.component; + if (shouldUpdateComponent(n1, n2, optimized)) { + if (instance.asyncDep && !instance.asyncResolved) { + if (!!(process.env.NODE_ENV !== "production")) { + pushWarningContext(n2); + } + updateComponentPreRender(instance, n2, optimized); + if (!!(process.env.NODE_ENV !== "production")) { + popWarningContext(); + } + return; + } else { + instance.next = n2; + instance.update(); + } + } else { + n2.el = n1.el; + instance.vnode = n2; + } + }; + const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => { + const componentUpdateFn = () => { + if (!instance.isMounted) { + let vnodeHook; + const { el, props } = initialVNode; + const { bm, m, parent, root, type } = instance; + const isAsyncWrapperVNode = isAsyncWrapper(initialVNode); + toggleRecurse(instance, false); + if (bm) { + invokeArrayFns(bm); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) { + invokeVNodeHook(vnodeHook, parent, initialVNode); + } + toggleRecurse(instance, true); + if (el && hydrateNode) { + const hydrateSubTree = () => { + if (!!(process.env.NODE_ENV !== "production")) { + startMeasure(instance, `render`); + } + instance.subTree = renderComponentRoot(instance); + if (!!(process.env.NODE_ENV !== "production")) { + endMeasure(instance, `render`); + } + if (!!(process.env.NODE_ENV !== "production")) { + startMeasure(instance, `hydrate`); + } + hydrateNode( + el, + instance.subTree, + instance, + parentSuspense, + null + ); + if (!!(process.env.NODE_ENV !== "production")) { + endMeasure(instance, `hydrate`); + } + }; + if (isAsyncWrapperVNode && type.__asyncHydrate) { + type.__asyncHydrate( + el, + instance, + hydrateSubTree + ); + } else { + hydrateSubTree(); + } + } else { + if (root.ce && // @ts-expect-error _def is private + root.ce._def.shadowRoot !== false) { + root.ce._injectChildStyle(type); + } + if (!!(process.env.NODE_ENV !== "production")) { + startMeasure(instance, `render`); + } + const subTree = instance.subTree = renderComponentRoot(instance); + if (!!(process.env.NODE_ENV !== "production")) { + endMeasure(instance, `render`); + } + if (!!(process.env.NODE_ENV !== "production")) { + startMeasure(instance, `patch`); + } + patch( + null, + subTree, + container, + anchor, + instance, + parentSuspense, + namespace + ); + if (!!(process.env.NODE_ENV !== "production")) { + endMeasure(instance, `patch`); + } + initialVNode.el = subTree.el; + } + if (m) { + queuePostRenderEffect(m, parentSuspense); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) { + const scopedInitialVNode = initialVNode; + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), + parentSuspense + ); + } + if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) { + instance.a && queuePostRenderEffect(instance.a, parentSuspense); + } + instance.isMounted = true; + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + devtoolsComponentAdded(instance); + } + initialVNode = container = anchor = null; + } else { + let { next, bu, u, parent, vnode } = instance; + { + const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance); + if (nonHydratedAsyncRoot) { + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } + nonHydratedAsyncRoot.asyncDep.then(() => { + if (!instance.isUnmounted) { + componentUpdateFn(); + } + }); + return; + } + } + let originNext = next; + let vnodeHook; + if (!!(process.env.NODE_ENV !== "production")) { + pushWarningContext(next || instance.vnode); + } + toggleRecurse(instance, false); + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } else { + next = vnode; + } + if (bu) { + invokeArrayFns(bu); + } + if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parent, next, vnode); + } + toggleRecurse(instance, true); + if (!!(process.env.NODE_ENV !== "production")) { + startMeasure(instance, `render`); + } + const nextTree = renderComponentRoot(instance); + if (!!(process.env.NODE_ENV !== "production")) { + endMeasure(instance, `render`); + } + const prevTree = instance.subTree; + instance.subTree = nextTree; + if (!!(process.env.NODE_ENV !== "production")) { + startMeasure(instance, `patch`); + } + patch( + prevTree, + nextTree, + // parent may have changed if it's in a teleport + hostParentNode(prevTree.el), + // anchor may have changed if it's in a fragment + getNextHostNode(prevTree), + instance, + parentSuspense, + namespace + ); + if (!!(process.env.NODE_ENV !== "production")) { + endMeasure(instance, `patch`); + } + next.el = nextTree.el; + if (originNext === null) { + updateHOCHostEl(instance, nextTree.el); + } + if (u) { + queuePostRenderEffect(u, parentSuspense); + } + if (vnodeHook = next.props && next.props.onVnodeUpdated) { + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, next, vnode), + parentSuspense + ); + } + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + devtoolsComponentUpdated(instance); + } + if (!!(process.env.NODE_ENV !== "production")) { + popWarningContext(); + } + } + }; + instance.scope.on(); + const effect = instance.effect = new ReactiveEffect(componentUpdateFn); + instance.scope.off(); + const update = instance.update = effect.run.bind(effect); + const job = instance.job = effect.runIfDirty.bind(effect); + job.i = instance; + job.id = instance.uid; + effect.scheduler = () => queueJob(job); + toggleRecurse(instance, true); + if (!!(process.env.NODE_ENV !== "production")) { + effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0; + effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0; + } + update(); + }; + const updateComponentPreRender = (instance, nextVNode, optimized) => { + nextVNode.component = instance; + const prevProps = instance.vnode.props; + instance.vnode = nextVNode; + instance.next = null; + updateProps(instance, nextVNode.props, prevProps, optimized); + updateSlots(instance, nextVNode.children, optimized); + pauseTracking(); + flushPreFlushCbs(instance); + resetTracking(); + }; + const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => { + const c1 = n1 && n1.children; + const prevShapeFlag = n1 ? n1.shapeFlag : 0; + const c2 = n2.children; + const { patchFlag, shapeFlag } = n2; + if (patchFlag > 0) { + if (patchFlag & 128) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + return; + } else if (patchFlag & 256) { + patchUnkeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + return; + } + } + if (shapeFlag & 8) { + if (prevShapeFlag & 16) { + unmountChildren(c1, parentComponent, parentSuspense); + } + if (c2 !== c1) { + hostSetElementText(container, c2); + } + } else { + if (prevShapeFlag & 16) { + if (shapeFlag & 16) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + unmountChildren(c1, parentComponent, parentSuspense, true); + } + } else { + if (prevShapeFlag & 8) { + hostSetElementText(container, ""); + } + if (shapeFlag & 16) { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + } + } + }; + const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + c1 = c1 || EMPTY_ARR; + c2 = c2 || EMPTY_ARR; + const oldLength = c1.length; + const newLength = c2.length; + const commonLength = Math.min(oldLength, newLength); + let i; + for (i = 0; i < commonLength; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + patch( + c1[i], + nextChild, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + if (oldLength > newLength) { + unmountChildren( + c1, + parentComponent, + parentSuspense, + true, + false, + commonLength + ); + } else { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + commonLength + ); + } + }; + const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + let i = 0; + const l2 = c2.length; + let e1 = c1.length - 1; + let e2 = l2 - 1; + while (i <= e1 && i <= e2) { + const n1 = c1[i]; + const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + break; + } + i++; + } + while (i <= e1 && i <= e2) { + const n1 = c1[e1]; + const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + break; + } + e1--; + e2--; + } + if (i > e1) { + if (i <= e2) { + const nextPos = e2 + 1; + const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor; + while (i <= e2) { + patch( + null, + c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + i++; + } + } + } else if (i > e2) { + while (i <= e1) { + unmount(c1[i], parentComponent, parentSuspense, true); + i++; + } + } else { + const s1 = i; + const s2 = i; + const keyToNewIndexMap = /* @__PURE__ */ new Map(); + for (i = s2; i <= e2; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (nextChild.key != null) { + if (!!(process.env.NODE_ENV !== "production") && keyToNewIndexMap.has(nextChild.key)) { + warn$1( + `Duplicate keys found during update:`, + JSON.stringify(nextChild.key), + `Make sure keys are unique.` + ); + } + keyToNewIndexMap.set(nextChild.key, i); + } + } + let j; + let patched = 0; + const toBePatched = e2 - s2 + 1; + let moved = false; + let maxNewIndexSoFar = 0; + const newIndexToOldIndexMap = new Array(toBePatched); + for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0; + for (i = s1; i <= e1; i++) { + const prevChild = c1[i]; + if (patched >= toBePatched) { + unmount(prevChild, parentComponent, parentSuspense, true); + continue; + } + let newIndex; + if (prevChild.key != null) { + newIndex = keyToNewIndexMap.get(prevChild.key); + } else { + for (j = s2; j <= e2; j++) { + if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) { + newIndex = j; + break; + } + } + } + if (newIndex === void 0) { + unmount(prevChild, parentComponent, parentSuspense, true); + } else { + newIndexToOldIndexMap[newIndex - s2] = i + 1; + if (newIndex >= maxNewIndexSoFar) { + maxNewIndexSoFar = newIndex; + } else { + moved = true; + } + patch( + prevChild, + c2[newIndex], + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + patched++; + } + } + const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR; + j = increasingNewIndexSequence.length - 1; + for (i = toBePatched - 1; i >= 0; i--) { + const nextIndex = s2 + i; + const nextChild = c2[nextIndex]; + const anchorVNode = c2[nextIndex + 1]; + const anchor = nextIndex + 1 < l2 ? ( + // #13559, fallback to el placeholder for unresolved async component + anchorVNode.el || anchorVNode.placeholder + ) : parentAnchor; + if (newIndexToOldIndexMap[i] === 0) { + patch( + null, + nextChild, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (moved) { + if (j < 0 || i !== increasingNewIndexSequence[j]) { + move(nextChild, container, anchor, 2); + } else { + j--; + } + } + } + } + }; + const move = (vnode, container, anchor, moveType, parentSuspense = null) => { + const { el, type, transition, children, shapeFlag } = vnode; + if (shapeFlag & 6) { + move(vnode.component.subTree, container, anchor, moveType); + return; + } + if (shapeFlag & 128) { + vnode.suspense.move(container, anchor, moveType); + return; + } + if (shapeFlag & 64) { + type.move(vnode, container, anchor, internals); + return; + } + if (type === Fragment) { + hostInsert(el, container, anchor); + for (let i = 0; i < children.length; i++) { + move(children[i], container, anchor, moveType); + } + hostInsert(vnode.anchor, container, anchor); + return; + } + if (type === Static) { + moveStaticNode(vnode, container, anchor); + return; + } + const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition; + if (needTransition2) { + if (moveType === 0) { + transition.beforeEnter(el); + hostInsert(el, container, anchor); + queuePostRenderEffect(() => transition.enter(el), parentSuspense); + } else { + const { leave, delayLeave, afterLeave } = transition; + const remove2 = () => { + if (vnode.ctx.isUnmounted) { + hostRemove(el); + } else { + hostInsert(el, container, anchor); + } + }; + const performLeave = () => { + leave(el, () => { + remove2(); + afterLeave && afterLeave(); + }); + }; + if (delayLeave) { + delayLeave(el, remove2, performLeave); + } else { + performLeave(); + } + } + } else { + hostInsert(el, container, anchor); + } + }; + const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => { + const { + type, + props, + ref, + children, + dynamicChildren, + shapeFlag, + patchFlag, + dirs, + cacheIndex + } = vnode; + if (patchFlag === -2) { + optimized = false; + } + if (ref != null) { + pauseTracking(); + setRef(ref, null, parentSuspense, vnode, true); + resetTracking(); + } + if (cacheIndex != null) { + parentComponent.renderCache[cacheIndex] = void 0; + } + if (shapeFlag & 256) { + parentComponent.ctx.deactivate(vnode); + return; + } + const shouldInvokeDirs = shapeFlag & 1 && dirs; + const shouldInvokeVnodeHook = !isAsyncWrapper(vnode); + let vnodeHook; + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + if (shapeFlag & 6) { + unmountComponent(vnode.component, parentSuspense, doRemove); + } else { + if (shapeFlag & 128) { + vnode.suspense.unmount(parentSuspense, doRemove); + return; + } + if (shouldInvokeDirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount"); + } + if (shapeFlag & 64) { + vnode.type.remove( + vnode, + parentComponent, + parentSuspense, + internals, + doRemove + ); + } else if (dynamicChildren && // #5154 + // when v-once is used inside a block, setBlockTracking(-1) marks the + // parent block with hasOnce: true + // so that it doesn't take the fast path during unmount - otherwise + // components nested in v-once are never unmounted. + !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments + (type !== Fragment || patchFlag > 0 && patchFlag & 64)) { + unmountChildren( + dynamicChildren, + parentComponent, + parentSuspense, + false, + true + ); + } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) { + unmountChildren(children, parentComponent, parentSuspense); + } + if (doRemove) { + remove(vnode); + } + } + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted"); + }, parentSuspense); + } + }; + const remove = (vnode) => { + const { type, el, anchor, transition } = vnode; + if (type === Fragment) { + if (!!(process.env.NODE_ENV !== "production") && vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) { + vnode.children.forEach((child) => { + if (child.type === Comment) { + hostRemove(child.el); + } else { + remove(child); + } + }); + } else { + removeFragment(el, anchor); + } + return; + } + if (type === Static) { + removeStaticNode(vnode); + return; + } + const performRemove = () => { + hostRemove(el); + if (transition && !transition.persisted && transition.afterLeave) { + transition.afterLeave(); + } + }; + if (vnode.shapeFlag & 1 && transition && !transition.persisted) { + const { leave, delayLeave } = transition; + const performLeave = () => leave(el, performRemove); + if (delayLeave) { + delayLeave(vnode.el, performRemove, performLeave); + } else { + performLeave(); + } + } else { + performRemove(); + } + }; + const removeFragment = (cur, end) => { + let next; + while (cur !== end) { + next = hostNextSibling(cur); + hostRemove(cur); + cur = next; + } + hostRemove(end); + }; + const unmountComponent = (instance, parentSuspense, doRemove) => { + if (!!(process.env.NODE_ENV !== "production") && instance.type.__hmrId) { + unregisterHMR(instance); + } + const { + bum, + scope, + job, + subTree, + um, + m, + a, + parent, + slots: { __: slotCacheKeys } + } = instance; + invalidateMount(m); + invalidateMount(a); + if (bum) { + invokeArrayFns(bum); + } + if (parent && isArray(slotCacheKeys)) { + slotCacheKeys.forEach((v) => { + parent.renderCache[v] = void 0; + }); + } + scope.stop(); + if (job) { + job.flags |= 8; + unmount(subTree, instance, parentSuspense, doRemove); + } + if (um) { + queuePostRenderEffect(um, parentSuspense); + } + queuePostRenderEffect(() => { + instance.isUnmounted = true; + }, parentSuspense); + if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0) { + parentSuspense.resolve(); + } + } + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + devtoolsComponentRemoved(instance); + } + }; + const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => { + for (let i = start; i < children.length; i++) { + unmount(children[i], parentComponent, parentSuspense, doRemove, optimized); + } + }; + const getNextHostNode = (vnode) => { + if (vnode.shapeFlag & 6) { + return getNextHostNode(vnode.component.subTree); + } + if (vnode.shapeFlag & 128) { + return vnode.suspense.next(); + } + const el = hostNextSibling(vnode.anchor || vnode.el); + const teleportEnd = el && el[TeleportEndKey]; + return teleportEnd ? hostNextSibling(teleportEnd) : el; + }; + let isFlushing = false; + const render = (vnode, container, namespace) => { + if (vnode == null) { + if (container._vnode) { + unmount(container._vnode, null, null, true); + } + } else { + patch( + container._vnode || null, + vnode, + container, + null, + null, + null, + namespace + ); + } + container._vnode = vnode; + if (!isFlushing) { + isFlushing = true; + flushPreFlushCbs(); + flushPostFlushCbs(); + isFlushing = false; + } + }; + const internals = { + p: patch, + um: unmount, + m: move, + r: remove, + mt: mountComponent, + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + n: getNextHostNode, + o: options + }; + let hydrate; + let hydrateNode; + if (createHydrationFns) { + [hydrate, hydrateNode] = createHydrationFns( + internals + ); + } + return { + render, + hydrate, + createApp: createAppAPI(render, hydrate) + }; +} +function resolveChildrenNamespace({ type, props }, currentNamespace) { + return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace; +} +function toggleRecurse({ effect, job }, allowed) { + if (allowed) { + effect.flags |= 32; + job.flags |= 4; + } else { + effect.flags &= -33; + job.flags &= -5; + } +} +function needTransition(parentSuspense, transition) { + return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted; +} +function traverseStaticChildren(n1, n2, shallow = false) { + const ch1 = n1.children; + const ch2 = n2.children; + if (isArray(ch1) && isArray(ch2)) { + for (let i = 0; i < ch1.length; i++) { + const c1 = ch1[i]; + let c2 = ch2[i]; + if (c2.shapeFlag & 1 && !c2.dynamicChildren) { + if (c2.patchFlag <= 0 || c2.patchFlag === 32) { + c2 = ch2[i] = cloneIfMounted(ch2[i]); + c2.el = c1.el; + } + if (!shallow && c2.patchFlag !== -2) + traverseStaticChildren(c1, c2); + } + if (c2.type === Text) { + c2.el = c1.el; + } + if (c2.type === Comment && !c2.el) { + c2.el = c1.el; + } + if (!!(process.env.NODE_ENV !== "production")) { + c2.el && (c2.el.__vnode = c2); + } + } + } +} +function getSequence(arr) { + const p = arr.slice(); + const result = [0]; + let i, j, u, v, c; + const len = arr.length; + for (i = 0; i < len; i++) { + const arrI = arr[i]; + if (arrI !== 0) { + j = result[result.length - 1]; + if (arr[j] < arrI) { + p[i] = j; + result.push(i); + continue; + } + u = 0; + v = result.length - 1; + while (u < v) { + c = u + v >> 1; + if (arr[result[c]] < arrI) { + u = c + 1; + } else { + v = c; + } + } + if (arrI < arr[result[u]]) { + if (u > 0) { + p[i] = result[u - 1]; + } + result[u] = i; + } + } + } + u = result.length; + v = result[u - 1]; + while (u-- > 0) { + result[u] = v; + v = p[v]; + } + return result; +} +function locateNonHydratedAsyncRoot(instance) { + const subComponent = instance.subTree.component; + if (subComponent) { + if (subComponent.asyncDep && !subComponent.asyncResolved) { + return subComponent; + } else { + return locateNonHydratedAsyncRoot(subComponent); + } + } +} +function invalidateMount(hooks) { + if (hooks) { + for (let i = 0; i < hooks.length; i++) + hooks[i].flags |= 8; + } +} + +const ssrContextKey = Symbol.for("v-scx"); +const useSSRContext = () => { + { + const ctx = inject(ssrContextKey); + if (!ctx) { + !!(process.env.NODE_ENV !== "production") && warn$1( + `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.` + ); + } + return ctx; + } +}; + +function watchEffect(effect, options) { + return doWatch(effect, null, options); +} +function watchPostEffect(effect, options) { + return doWatch( + effect, + null, + !!(process.env.NODE_ENV !== "production") ? extend({}, options, { flush: "post" }) : { flush: "post" } + ); +} +function watchSyncEffect(effect, options) { + return doWatch( + effect, + null, + !!(process.env.NODE_ENV !== "production") ? extend({}, options, { flush: "sync" }) : { flush: "sync" } + ); +} +function watch(source, cb, options) { + if (!!(process.env.NODE_ENV !== "production") && !isFunction(cb)) { + warn$1( + `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` + ); + } + return doWatch(source, cb, options); +} +function doWatch(source, cb, options = EMPTY_OBJ) { + const { immediate, deep, flush, once } = options; + if (!!(process.env.NODE_ENV !== "production") && !cb) { + if (immediate !== void 0) { + warn$1( + `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (deep !== void 0) { + warn$1( + `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (once !== void 0) { + warn$1( + `watch() "once" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + } + const baseWatchOptions = extend({}, options); + if (!!(process.env.NODE_ENV !== "production")) baseWatchOptions.onWarn = warn$1; + const runsImmediately = cb && immediate || !cb && flush !== "post"; + let ssrCleanup; + if (isInSSRComponentSetup) { + if (flush === "sync") { + const ctx = useSSRContext(); + ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); + } else if (!runsImmediately) { + const watchStopHandle = () => { + }; + watchStopHandle.stop = NOOP; + watchStopHandle.resume = NOOP; + watchStopHandle.pause = NOOP; + return watchStopHandle; + } + } + const instance = currentInstance; + baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args); + let isPre = false; + if (flush === "post") { + baseWatchOptions.scheduler = (job) => { + queuePostRenderEffect(job, instance && instance.suspense); + }; + } else if (flush !== "sync") { + isPre = true; + baseWatchOptions.scheduler = (job, isFirstRun) => { + if (isFirstRun) { + job(); + } else { + queueJob(job); + } + }; + } + baseWatchOptions.augmentJob = (job) => { + if (cb) { + job.flags |= 4; + } + if (isPre) { + job.flags |= 2; + if (instance) { + job.id = instance.uid; + job.i = instance; + } + } + }; + const watchHandle = watch$1(source, cb, baseWatchOptions); + if (isInSSRComponentSetup) { + if (ssrCleanup) { + ssrCleanup.push(watchHandle); + } else if (runsImmediately) { + watchHandle(); + } + } + return watchHandle; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const reset = setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + reset(); + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} + +function useModel(props, name, options = EMPTY_OBJ) { + const i = getCurrentInstance(); + if (!!(process.env.NODE_ENV !== "production") && !i) { + warn$1(`useModel() called without active instance.`); + return ref(); + } + const camelizedName = camelize(name); + if (!!(process.env.NODE_ENV !== "production") && !i.propsOptions[0][camelizedName]) { + warn$1(`useModel() called with prop "${name}" which is not declared.`); + return ref(); + } + const hyphenatedName = hyphenate(name); + const modifiers = getModelModifiers(props, camelizedName); + const res = customRef((track, trigger) => { + let localValue; + let prevSetValue = EMPTY_OBJ; + let prevEmittedValue; + watchSyncEffect(() => { + const propValue = props[camelizedName]; + if (hasChanged(localValue, propValue)) { + localValue = propValue; + trigger(); + } + }); + return { + get() { + track(); + return options.get ? options.get(localValue) : localValue; + }, + set(value) { + const emittedValue = options.set ? options.set(value) : value; + if (!hasChanged(emittedValue, localValue) && !(prevSetValue !== EMPTY_OBJ && hasChanged(value, prevSetValue))) { + return; + } + const rawProps = i.vnode.props; + if (!(rawProps && // check if parent has passed v-model + (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) { + localValue = value; + trigger(); + } + i.emit(`update:${name}`, emittedValue); + if (hasChanged(value, emittedValue) && hasChanged(value, prevSetValue) && !hasChanged(emittedValue, prevEmittedValue)) { + trigger(); + } + prevSetValue = value; + prevEmittedValue = emittedValue; + } + }; + }); + res[Symbol.iterator] = () => { + let i2 = 0; + return { + next() { + if (i2 < 2) { + return { value: i2++ ? modifiers || EMPTY_OBJ : res, done: false }; + } else { + return { done: true }; + } + } + }; + }; + return res; +} +const getModelModifiers = (props, modelName) => { + return modelName === "modelValue" || modelName === "model-value" ? props.modelModifiers : props[`${modelName}Modifiers`] || props[`${camelize(modelName)}Modifiers`] || props[`${hyphenate(modelName)}Modifiers`]; +}; + +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) return; + const props = instance.vnode.props || EMPTY_OBJ; + if (!!(process.env.NODE_ENV !== "production")) { + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && true) { + if (!propsOptions || !(toHandlerKey(camelize(event)) in propsOptions)) { + warn$1( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(camelize(event))}" prop.` + ); + } + } else { + const validator = emitsOptions[event]; + if (isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn$1( + `Invalid event arguments: event validation failed for event "${event}".` + ); + } + } + } + } + } + let args = rawArgs; + const isModelListener = event.startsWith("update:"); + const modifiers = isModelListener && getModelModifiers(props, event.slice(7)); + if (modifiers) { + if (modifiers.trim) { + args = rawArgs.map((a) => isString(a) ? a.trim() : a); + } + if (modifiers.number) { + args = rawArgs.map(looseToNumber); + } + } + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + devtoolsComponentEmit(instance, event, args); + } + if (!!(process.env.NODE_ENV !== "production")) { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { + warn$1( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate( + event + )}" instead of "${event}".` + ); + } + } + let handlerName; + let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = toHandlerKey(camelize(event))]; + if (!handler && isModelListener) { + handler = props[handlerName = toHandlerKey(hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (__VUE_OPTIONS_API__ && !isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + extend(normalized, raw); + } + if (isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key); +} + +let accessedAttrs = false; +function markAttrsAccessed() { + accessedAttrs = true; +} +function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + propsOptions: [propsOptions], + slots, + attrs, + emit, + render, + renderCache, + props, + data, + setupState, + ctx, + inheritAttrs + } = instance; + const prev = setCurrentRenderingInstance(instance); + let result; + let fallthroughAttrs; + if (!!(process.env.NODE_ENV !== "production")) { + accessedAttrs = false; + } + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + const thisProxy = !!(process.env.NODE_ENV !== "production") && setupState.__isScriptSetup ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn$1( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode( + render.call( + thisProxy, + proxyToUse, + renderCache, + !!(process.env.NODE_ENV !== "production") ? shallowReadonly(props) : props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render2 = Component; + if (!!(process.env.NODE_ENV !== "production") && attrs === props) { + markAttrsAccessed(); + } + result = normalizeVNode( + render2.length > 1 ? render2( + !!(process.env.NODE_ENV !== "production") ? shallowReadonly(props) : props, + !!(process.env.NODE_ENV !== "production") ? { + get attrs() { + markAttrsAccessed(); + return shallowReadonly(attrs); + }, + slots, + emit + } : { attrs, slots, emit } + ) : render2( + !!(process.env.NODE_ENV !== "production") ? shallowReadonly(props) : props, + null + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + let setRoot = void 0; + if (!!(process.env.NODE_ENV !== "production") && result.patchFlag > 0 && result.patchFlag & 2048) { + [root, setRoot] = getChildRoot(result); + } + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs, false, true); + } else if (!!(process.env.NODE_ENV !== "production") && !accessedAttrs && root.type !== Comment) { + const allAttrs = Object.keys(attrs); + const eventAttrs = []; + const extraAttrs = []; + for (let i = 0, l = allAttrs.length; i < l; i++) { + const key = allAttrs[i]; + if (isOn(key)) { + if (!isModelListener(key)) { + eventAttrs.push(key[2].toLowerCase() + key.slice(3)); + } + } else { + extraAttrs.push(key); + } + } + if (extraAttrs.length) { + warn$1( + `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text or teleport root nodes.` + ); + } + if (eventAttrs.length) { + warn$1( + `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` + ); + } + } + } + } + if (vnode.dirs) { + if (!!(process.env.NODE_ENV !== "production") && !isElementRoot(root)) { + warn$1( + `Runtime directive used on component with non-element root node. The directives will not function as intended.` + ); + } + root = cloneVNode(root, null, false, true); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + if (!!(process.env.NODE_ENV !== "production") && !isElementRoot(root)) { + warn$1( + `Component inside <Transition> renders non-element root node that cannot be animated.` + ); + } + setTransitionHooks(root, vnode.transition); + } + if (!!(process.env.NODE_ENV !== "production") && setRoot) { + setRoot(root); + } else { + result = root; + } + setCurrentRenderingInstance(prev); + return result; +} +const getChildRoot = (vnode) => { + const rawChildren = vnode.children; + const dynamicChildren = vnode.dynamicChildren; + const childRoot = filterSingleRoot(rawChildren, false); + if (!childRoot) { + return [vnode, void 0]; + } else if (!!(process.env.NODE_ENV !== "production") && childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) { + return getChildRoot(childRoot); + } + const index = rawChildren.indexOf(childRoot); + const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; + const setRoot = (updatedRoot) => { + rawChildren[index] = updatedRoot; + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } + } + }; + return [normalizeVNode(childRoot), setRoot]; +}; +function filterSingleRoot(children, recurse = true) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + if (!!(process.env.NODE_ENV !== "production") && recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) { + return filterSingleRoot(singleRoot.children); + } + } + } + } else { + return; + } + } + return singleRoot; +} +const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +const isElementRoot = (vnode) => { + return vnode.shapeFlag & (6 | 1) || vnode.type === Comment; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if (!!(process.env.NODE_ENV !== "production") && (prevChildren || nextChildren) && isHmrUpdating) { + return true; + } + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function updateHOCHostEl({ vnode, parent }, el) { + while (parent) { + const root = parent.subTree; + if (root.suspense && root.suspense.activeBranch === vnode) { + root.el = vnode.el; + } + if (root === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } else { + break; + } + } +} + +const isSuspense = (type) => type.__isSuspense; +let suspenseId = 0; +const SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) { + n2.suspense = n1.suspense; + n2.suspense.vnode = n2; + n2.el = n1.el; + return; + } + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + normalize: normalizeSuspenseChildren +}; +const Suspense = SuspenseImpl ; +function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (isFunction(eventListener)) { + eventListener(); + } +} +function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } +} +function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + if (!isHydrating) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } + } else { + suspense.pendingId = suspenseId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + if (newBranch.shapeFlag & 512) { + suspense.pendingId = newBranch.component.suspenseId; + } else { + suspense.pendingId = suspenseId++; + } + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } +} +let hasWarned = false; +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + if (!!(process.env.NODE_ENV !== "production") && true && !hasWarned) { + hasWarned = true; + console[console.info ? "info" : "log"]( + `<Suspense> is an experimental feature and its API will likely change.` + ); + } + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0; + if (!!(process.env.NODE_ENV !== "production")) { + assertNumber(timeout, `Suspense timeout`); + } + const initialAnchor = anchor; + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + namespace, + container, + hiddenContainer, + deps: 0, + pendingId: suspenseId++, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: !isHydrating, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + if (!!(process.env.NODE_ENV !== "production")) { + if (!resume && !suspense.pendingBranch) { + throw new Error( + `suspense.resolve() is called without a pending branch.` + ); + } + if (suspense.isUnmounted) { + throw new Error( + `suspense.resolve() is called on an already unmounted suspense boundary.` + ); + } + } + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + let delayEnter = false; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move( + pendingBranch, + container2, + anchor === initialAnchor ? next(activeBranch) : anchor, + 0 + ); + queuePostFlushCb(effects); + } + }; + } + if (activeBranch) { + if (parentNode(activeBranch.el) === container2) { + anchor = next(activeBranch); + } + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor && !delayEnter) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const anchor2 = next(activeBranch); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + anchor2, + parentComponent2, + null, + // fallback tree will not have suspense context + namespace2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect, optimized2) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + if (!!(process.env.NODE_ENV !== "production")) { + pushWarningContext(vnode2); + } + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + namespace, + optimized2 + ); + if (placeholder) { + remove(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + if (!!(process.env.NODE_ENV !== "production")) { + popWarningContext(); + } + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; +} +function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + // eslint-disable-next-line no-restricted-globals + document.createElement("div"), + null, + namespace, + slotScopeIds, + optimized, + rendererInternals, + true + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; +} +function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); +} +function normalizeSuspenseSlot(s) { + let block; + if (isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (isArray(s)) { + const singleChild = filterSingleRoot(s); + if (!!(process.env.NODE_ENV !== "production") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) { + warn$1(`<Suspense> slots expect a single root node.`); + } + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; +} +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} +function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + let el = branch.el; + while (!el && branch.component) { + branch = branch.component.subTree; + el = branch.el; + } + vnode.el = el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } +} +function isVNodeSuspensible(vnode) { + const suspensible = vnode.props && vnode.props.suspensible; + return suspensible != null && suspensible !== false; +} + +const Fragment = Symbol.for("v-fgt"); +const Text = Symbol.for("v-txt"); +const Comment = Symbol.for("v-cmt"); +const Static = Symbol.for("v-stc"); +const blockStack = []; +let currentBlock = null; +function openBlock(disableTracking = false) { + blockStack.push(currentBlock = disableTracking ? null : []); +} +function closeBlock() { + blockStack.pop(); + currentBlock = blockStack[blockStack.length - 1] || null; +} +let isBlockTreeEnabled = 1; +function setBlockTracking(value, inVOnce = false) { + isBlockTreeEnabled += value; + if (value < 0 && currentBlock && inVOnce) { + currentBlock.hasOnce = true; + } +} +function setupBlock(vnode) { + vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null; + closeBlock(); + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(vnode); + } + return vnode; +} +function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) { + return setupBlock( + createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + true + ) + ); +} +function createBlock(type, props, children, patchFlag, dynamicProps) { + return setupBlock( + createVNode( + type, + props, + children, + patchFlag, + dynamicProps, + true + ) + ); +} +function isVNode(value) { + return value ? value.__v_isVNode === true : false; +} +function isSameVNodeType(n1, n2) { + if (!!(process.env.NODE_ENV !== "production") && n2.shapeFlag & 6 && n1.component) { + const dirtyInstances = hmrDirtyComponents.get(n2.type); + if (dirtyInstances && dirtyInstances.has(n1.component)) { + n1.shapeFlag &= -257; + n2.shapeFlag &= -513; + return false; + } + } + return n1.type === n2.type && n1.key === n2.key; +} +let vnodeArgsTransformer; +function transformVNodeArgs(transformer) { + vnodeArgsTransformer = transformer; +} +const createVNodeWithArgsTransform = (...args) => { + return _createVNode( + ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args + ); +}; +const normalizeKey = ({ key }) => key != null ? key : null; +const normalizeRef = ({ + ref, + ref_key, + ref_for +}) => { + if (typeof ref === "number") { + ref = "" + ref; + } + return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null; +}; +function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) { + const vnode = { + __v_isVNode: true, + __v_skip: true, + type, + props, + key: props && normalizeKey(props), + ref: props && normalizeRef(props), + scopeId: currentScopeId, + slotScopeIds: null, + children, + component: null, + suspense: null, + ssContent: null, + ssFallback: null, + dirs: null, + transition: null, + el: null, + anchor: null, + target: null, + targetStart: null, + targetAnchor: null, + staticCount: 0, + shapeFlag, + patchFlag, + dynamicProps, + dynamicChildren: null, + appContext: null, + ctx: currentRenderingInstance + }; + if (needFullChildrenNormalization) { + normalizeChildren(vnode, children); + if (shapeFlag & 128) { + type.normalize(vnode); + } + } else if (children) { + vnode.shapeFlag |= isString(children) ? 8 : 16; + } + if (!!(process.env.NODE_ENV !== "production") && vnode.key !== vnode.key) { + warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type); + } + if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself + !isBlockNode && // has current parent block + currentBlock && // presence of a patch flag indicates this node needs patching on updates. + // component nodes also should always be patched, because even if the + // component doesn't need to update, it needs to persist the instance on to + // the next vnode so that it can be properly unmounted later. + (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the + // vnode should not be considered dynamic due to handler caching. + vnode.patchFlag !== 32) { + currentBlock.push(vnode); + } + return vnode; +} +const createVNode = !!(process.env.NODE_ENV !== "production") ? createVNodeWithArgsTransform : _createVNode; +function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) { + if (!type || type === NULL_DYNAMIC_COMPONENT) { + if (!!(process.env.NODE_ENV !== "production") && !type) { + warn$1(`Invalid vnode type when creating vnode: ${type}.`); + } + type = Comment; + } + if (isVNode(type)) { + const cloned = cloneVNode( + type, + props, + true + /* mergeRef: true */ + ); + if (children) { + normalizeChildren(cloned, children); + } + if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) { + if (cloned.shapeFlag & 6) { + currentBlock[currentBlock.indexOf(type)] = cloned; + } else { + currentBlock.push(cloned); + } + } + cloned.patchFlag = -2; + return cloned; + } + if (isClassComponent(type)) { + type = type.__vccOpts; + } + if (props) { + props = guardReactiveProps(props); + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (isObject(style)) { + if (isProxy(style) && !isArray(style)) { + style = extend({}, style); + } + props.style = normalizeStyle(style); + } + } + const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0; + if (!!(process.env.NODE_ENV !== "production") && shapeFlag & 4 && isProxy(type)) { + type = toRaw(type); + warn$1( + `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`, + ` +Component that was made reactive: `, + type + ); + } + return createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + isBlockNode, + true + ); +} +function guardReactiveProps(props) { + if (!props) return null; + return isProxy(props) || isInternalObject(props) ? extend({}, props) : props; +} +function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) { + const { props, ref, patchFlag, children, transition } = vnode; + const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props; + const cloned = { + __v_isVNode: true, + __v_skip: true, + type: vnode.type, + props: mergedProps, + key: mergedProps && normalizeKey(mergedProps), + ref: extraProps && extraProps.ref ? ( + // #2078 in the case of <component :is="vnode" ref="extra"/> + // if the vnode itself already has a ref, cloneVNode will need to merge + // the refs so the single vnode can be set on multiple refs + mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps) + ) : ref, + scopeId: vnode.scopeId, + slotScopeIds: vnode.slotScopeIds, + children: !!(process.env.NODE_ENV !== "production") && patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children, + target: vnode.target, + targetStart: vnode.targetStart, + targetAnchor: vnode.targetAnchor, + staticCount: vnode.staticCount, + shapeFlag: vnode.shapeFlag, + // if the vnode is cloned with extra props, we can no longer assume its + // existing patch flag to be reliable and need to add the FULL_PROPS flag. + // note: preserve flag for fragments since they use the flag for children + // fast paths only. + patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag, + dynamicProps: vnode.dynamicProps, + dynamicChildren: vnode.dynamicChildren, + appContext: vnode.appContext, + dirs: vnode.dirs, + transition, + // These should technically only be non-null on mounted VNodes. However, + // they *should* be copied for kept-alive vnodes. So we just always copy + // them since them being non-null during a mount doesn't affect the logic as + // they will simply be overwritten. + component: vnode.component, + suspense: vnode.suspense, + ssContent: vnode.ssContent && cloneVNode(vnode.ssContent), + ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback), + placeholder: vnode.placeholder, + el: vnode.el, + anchor: vnode.anchor, + ctx: vnode.ctx, + ce: vnode.ce + }; + if (transition && cloneTransition) { + setTransitionHooks( + cloned, + transition.clone(cloned) + ); + } + return cloned; +} +function deepCloneVNode(vnode) { + const cloned = cloneVNode(vnode); + if (isArray(vnode.children)) { + cloned.children = vnode.children.map(deepCloneVNode); + } + return cloned; +} +function createTextVNode(text = " ", flag = 0) { + return createVNode(Text, null, text, flag); +} +function createStaticVNode(content, numberOfNodes) { + const vnode = createVNode(Static, null, content); + vnode.staticCount = numberOfNodes; + return vnode; +} +function createCommentVNode(text = "", asBlock = false) { + return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text); +} +function normalizeVNode(child) { + if (child == null || typeof child === "boolean") { + return createVNode(Comment); + } else if (isArray(child)) { + return createVNode( + Fragment, + null, + // #3666, avoid reference pollution when reusing vnode + child.slice() + ); + } else if (isVNode(child)) { + return cloneIfMounted(child); + } else { + return createVNode(Text, null, String(child)); + } +} +function cloneIfMounted(child) { + return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child); +} +function normalizeChildren(vnode, children) { + let type = 0; + const { shapeFlag } = vnode; + if (children == null) { + children = null; + } else if (isArray(children)) { + type = 16; + } else if (typeof children === "object") { + if (shapeFlag & (1 | 64)) { + const slot = children.default; + if (slot) { + slot._c && (slot._d = false); + normalizeChildren(vnode, slot()); + slot._c && (slot._d = true); + } + return; + } else { + type = 32; + const slotFlag = children._; + if (!slotFlag && !isInternalObject(children)) { + children._ctx = currentRenderingInstance; + } else if (slotFlag === 3 && currentRenderingInstance) { + if (currentRenderingInstance.slots._ === 1) { + children._ = 1; + } else { + children._ = 2; + vnode.patchFlag |= 1024; + } + } + } + } else if (isFunction(children)) { + children = { default: children, _ctx: currentRenderingInstance }; + type = 32; + } else { + children = String(children); + if (shapeFlag & 64) { + type = 16; + children = [createTextVNode(children)]; + } else { + type = 8; + } + } + vnode.children = children; + vnode.shapeFlag |= type; +} +function mergeProps(...args) { + const ret = {}; + for (let i = 0; i < args.length; i++) { + const toMerge = args[i]; + for (const key in toMerge) { + if (key === "class") { + if (ret.class !== toMerge.class) { + ret.class = normalizeClass([ret.class, toMerge.class]); + } + } else if (key === "style") { + ret.style = normalizeStyle([ret.style, toMerge.style]); + } else if (isOn(key)) { + const existing = ret[key]; + const incoming = toMerge[key]; + if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) { + ret[key] = existing ? [].concat(existing, incoming) : incoming; + } + } else if (key !== "") { + ret[key] = toMerge[key]; + } + } + } + return ret; +} +function invokeVNodeHook(hook, instance, vnode, prevVNode = null) { + callWithAsyncErrorHandling(hook, instance, 7, [ + vnode, + prevVNode + ]); +} + +const emptyAppContext = createAppContext(); +let uid = 0; +function createComponentInstance(vnode, parent, suspense) { + const type = vnode.type; + const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext; + const instance = { + uid: uid++, + vnode, + type, + parent, + appContext, + root: null, + // to be immediately set + next: null, + subTree: null, + // will be set synchronously right after creation + effect: null, + update: null, + // will be set synchronously right after creation + job: null, + scope: new EffectScope( + true + /* detached */ + ), + render: null, + proxy: null, + exposed: null, + exposeProxy: null, + withProxy: null, + provides: parent ? parent.provides : Object.create(appContext.provides), + ids: parent ? parent.ids : ["", 0, 0], + accessCache: null, + renderCache: [], + // local resolved assets + components: null, + directives: null, + // resolved props and emits options + propsOptions: normalizePropsOptions(type, appContext), + emitsOptions: normalizeEmitsOptions(type, appContext), + // emit + emit: null, + // to be set immediately + emitted: null, + // props default value + propsDefaults: EMPTY_OBJ, + // inheritAttrs + inheritAttrs: type.inheritAttrs, + // state + ctx: EMPTY_OBJ, + data: EMPTY_OBJ, + props: EMPTY_OBJ, + attrs: EMPTY_OBJ, + slots: EMPTY_OBJ, + refs: EMPTY_OBJ, + setupState: EMPTY_OBJ, + setupContext: null, + // suspense related + suspense, + suspenseId: suspense ? suspense.pendingId : 0, + asyncDep: null, + asyncResolved: false, + // lifecycle hooks + // not using enums here because it results in computed properties + isMounted: false, + isUnmounted: false, + isDeactivated: false, + bc: null, + c: null, + bm: null, + m: null, + bu: null, + u: null, + um: null, + bum: null, + da: null, + a: null, + rtg: null, + rtc: null, + ec: null, + sp: null + }; + if (!!(process.env.NODE_ENV !== "production")) { + instance.ctx = createDevRenderContext(instance); + } else { + instance.ctx = { _: instance }; + } + instance.root = parent ? parent.root : instance; + instance.emit = emit.bind(null, instance); + if (vnode.ce) { + vnode.ce(instance); + } + return instance; +} +let currentInstance = null; +const getCurrentInstance = () => currentInstance || currentRenderingInstance; +let internalSetCurrentInstance; +let setInSSRSetupState; +{ + const g = getGlobalThis(); + const registerGlobalSetter = (key, setter) => { + let setters; + if (!(setters = g[key])) setters = g[key] = []; + setters.push(setter); + return (v) => { + if (setters.length > 1) setters.forEach((set) => set(v)); + else setters[0](v); + }; + }; + internalSetCurrentInstance = registerGlobalSetter( + `__VUE_INSTANCE_SETTERS__`, + (v) => currentInstance = v + ); + setInSSRSetupState = registerGlobalSetter( + `__VUE_SSR_SETTERS__`, + (v) => isInSSRComponentSetup = v + ); +} +const setCurrentInstance = (instance) => { + const prev = currentInstance; + internalSetCurrentInstance(instance); + instance.scope.on(); + return () => { + instance.scope.off(); + internalSetCurrentInstance(prev); + }; +}; +const unsetCurrentInstance = () => { + currentInstance && currentInstance.scope.off(); + internalSetCurrentInstance(null); +}; +const isBuiltInTag = /* @__PURE__ */ makeMap("slot,component"); +function validateComponentName(name, { isNativeTag }) { + if (isBuiltInTag(name) || isNativeTag(name)) { + warn$1( + "Do not use built-in or reserved HTML elements as component id: " + name + ); + } +} +function isStatefulComponent(instance) { + return instance.vnode.shapeFlag & 4; +} +let isInSSRComponentSetup = false; +function setupComponent(instance, isSSR = false, optimized = false) { + isSSR && setInSSRSetupState(isSSR); + const { props, children } = instance.vnode; + const isStateful = isStatefulComponent(instance); + initProps(instance, props, isStateful, isSSR); + initSlots(instance, children, optimized || isSSR); + const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; + isSSR && setInSSRSetupState(false); + return setupResult; +} +function setupStatefulComponent(instance, isSSR) { + var _a; + const Component = instance.type; + if (!!(process.env.NODE_ENV !== "production")) { + if (Component.name) { + validateComponentName(Component.name, instance.appContext.config); + } + if (Component.components) { + const names = Object.keys(Component.components); + for (let i = 0; i < names.length; i++) { + validateComponentName(names[i], instance.appContext.config); + } + } + if (Component.directives) { + const names = Object.keys(Component.directives); + for (let i = 0; i < names.length; i++) { + validateDirectiveName(names[i]); + } + } + if (Component.compilerOptions && isRuntimeOnly()) { + warn$1( + `"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.` + ); + } + } + instance.accessCache = /* @__PURE__ */ Object.create(null); + instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers); + if (!!(process.env.NODE_ENV !== "production")) { + exposePropsOnRenderContext(instance); + } + const { setup } = Component; + if (setup) { + pauseTracking(); + const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; + const reset = setCurrentInstance(instance); + const setupResult = callWithErrorHandling( + setup, + instance, + 0, + [ + !!(process.env.NODE_ENV !== "production") ? shallowReadonly(instance.props) : instance.props, + setupContext + ] + ); + const isAsyncSetup = isPromise(setupResult); + resetTracking(); + reset(); + if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) { + markAsyncBoundary(instance); + } + if (isAsyncSetup) { + setupResult.then(unsetCurrentInstance, unsetCurrentInstance); + if (isSSR) { + return setupResult.then((resolvedResult) => { + handleSetupResult(instance, resolvedResult, isSSR); + }).catch((e) => { + handleError(e, instance, 0); + }); + } else { + instance.asyncDep = setupResult; + if (!!(process.env.NODE_ENV !== "production") && !instance.suspense) { + const name = (_a = Component.name) != null ? _a : "Anonymous"; + warn$1( + `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.` + ); + } + } + } else { + handleSetupResult(instance, setupResult, isSSR); + } + } else { + finishComponentSetup(instance, isSSR); + } +} +function handleSetupResult(instance, setupResult, isSSR) { + if (isFunction(setupResult)) { + if (instance.type.__ssrInlineRender) { + instance.ssrRender = setupResult; + } else { + instance.render = setupResult; + } + } else if (isObject(setupResult)) { + if (!!(process.env.NODE_ENV !== "production") && isVNode(setupResult)) { + warn$1( + `setup() should not return VNodes directly - return a render function instead.` + ); + } + if (!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) { + instance.devtoolsRawSetupState = setupResult; + } + instance.setupState = proxyRefs(setupResult); + if (!!(process.env.NODE_ENV !== "production")) { + exposeSetupStateOnRenderContext(instance); + } + } else if (!!(process.env.NODE_ENV !== "production") && setupResult !== void 0) { + warn$1( + `setup() should return an object. Received: ${setupResult === null ? "null" : typeof setupResult}` + ); + } + finishComponentSetup(instance, isSSR); +} +let compile; +let installWithProxy; +function registerRuntimeCompiler(_compile) { + compile = _compile; + installWithProxy = (i) => { + if (i.render._rc) { + i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers); + } + }; +} +const isRuntimeOnly = () => !compile; +function finishComponentSetup(instance, isSSR, skipOptions) { + const Component = instance.type; + if (!instance.render) { + if (!isSSR && compile && !Component.render) { + const template = Component.template || __VUE_OPTIONS_API__ && resolveMergedOptions(instance).template; + if (template) { + if (!!(process.env.NODE_ENV !== "production")) { + startMeasure(instance, `compile`); + } + const { isCustomElement, compilerOptions } = instance.appContext.config; + const { delimiters, compilerOptions: componentCompilerOptions } = Component; + const finalCompilerOptions = extend( + extend( + { + isCustomElement, + delimiters + }, + compilerOptions + ), + componentCompilerOptions + ); + Component.render = compile(template, finalCompilerOptions); + if (!!(process.env.NODE_ENV !== "production")) { + endMeasure(instance, `compile`); + } + } + } + instance.render = Component.render || NOOP; + if (installWithProxy) { + installWithProxy(instance); + } + } + if (__VUE_OPTIONS_API__ && true) { + const reset = setCurrentInstance(instance); + pauseTracking(); + try { + applyOptions(instance); + } finally { + resetTracking(); + reset(); + } + } + if (!!(process.env.NODE_ENV !== "production") && !Component.render && instance.render === NOOP && !isSSR) { + if (!compile && Component.template) { + warn$1( + `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".` ) + ); + } else { + warn$1(`Component is missing template or render function: `, Component); + } + } +} +const attrsProxyHandlers = !!(process.env.NODE_ENV !== "production") ? { + get(target, key) { + markAttrsAccessed(); + track(target, "get", ""); + return target[key]; + }, + set() { + warn$1(`setupContext.attrs is readonly.`); + return false; + }, + deleteProperty() { + warn$1(`setupContext.attrs is readonly.`); + return false; + } +} : { + get(target, key) { + track(target, "get", ""); + return target[key]; + } +}; +function getSlotsProxy(instance) { + return new Proxy(instance.slots, { + get(target, key) { + track(instance, "get", "$slots"); + return target[key]; + } + }); +} +function createSetupContext(instance) { + const expose = (exposed) => { + if (!!(process.env.NODE_ENV !== "production")) { + if (instance.exposed) { + warn$1(`expose() should be called only once per setup().`); + } + if (exposed != null) { + let exposedType = typeof exposed; + if (exposedType === "object") { + if (isArray(exposed)) { + exposedType = "array"; + } else if (isRef(exposed)) { + exposedType = "ref"; + } + } + if (exposedType !== "object") { + warn$1( + `expose() should be passed a plain object, received ${exposedType}.` + ); + } + } + } + instance.exposed = exposed || {}; + }; + if (!!(process.env.NODE_ENV !== "production")) { + let attrsProxy; + let slotsProxy; + return Object.freeze({ + get attrs() { + return attrsProxy || (attrsProxy = new Proxy(instance.attrs, attrsProxyHandlers)); + }, + get slots() { + return slotsProxy || (slotsProxy = getSlotsProxy(instance)); + }, + get emit() { + return (event, ...args) => instance.emit(event, ...args); + }, + expose + }); + } else { + return { + attrs: new Proxy(instance.attrs, attrsProxyHandlers), + slots: instance.slots, + emit: instance.emit, + expose + }; + } +} +function getComponentPublicInstance(instance) { + if (instance.exposed) { + return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), { + get(target, key) { + if (key in target) { + return target[key]; + } else if (key in publicPropertiesMap) { + return publicPropertiesMap[key](instance); + } + }, + has(target, key) { + return key in target || key in publicPropertiesMap; + } + })); + } else { + return instance.proxy; + } +} +const classifyRE = /(?:^|[-_])(\w)/g; +const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, ""); +function getComponentName(Component, includeInferred = true) { + return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; +} +function formatComponentName(instance, Component, isRoot = false) { + let name = getComponentName(Component); + if (!name && Component.__file) { + const match = Component.__file.match(/([^/\\]+)\.\w+$/); + if (match) { + name = match[1]; + } + } + if (!name && instance && instance.parent) { + const inferFromRegistry = (registry) => { + for (const key in registry) { + if (registry[key] === Component) { + return key; + } + } + }; + name = inferFromRegistry( + instance.components || instance.parent.type.components + ) || inferFromRegistry(instance.appContext.components); + } + return name ? classify(name) : isRoot ? `App` : `Anonymous`; +} +function isClassComponent(value) { + return isFunction(value) && "__vccOpts" in value; +} + +const computed = (getterOrOptions, debugOptions) => { + const c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup); + if (!!(process.env.NODE_ENV !== "production")) { + const i = getCurrentInstance(); + if (i && i.appContext.config.warnRecursiveComputed) { + c._warnRecursive = true; + } + } + return c; +}; + +function h(type, propsOrChildren, children) { + const l = arguments.length; + if (l === 2) { + if (isObject(propsOrChildren) && !isArray(propsOrChildren)) { + if (isVNode(propsOrChildren)) { + return createVNode(type, null, [propsOrChildren]); + } + return createVNode(type, propsOrChildren); + } else { + return createVNode(type, null, propsOrChildren); + } + } else { + if (l > 3) { + children = Array.prototype.slice.call(arguments, 2); + } else if (l === 3 && isVNode(children)) { + children = [children]; + } + return createVNode(type, propsOrChildren, children); + } +} + +function initCustomFormatter() { + if (!!!(process.env.NODE_ENV !== "production") || typeof window === "undefined") { + return; + } + const vueStyle = { style: "color:#3ba776" }; + const numberStyle = { style: "color:#1677ff" }; + const stringStyle = { style: "color:#f5222d" }; + const keywordStyle = { style: "color:#eb2f96" }; + const formatter = { + __vue_custom_formatter: true, + header(obj) { + if (!isObject(obj)) { + return null; + } + if (obj.__isVue) { + return ["div", vueStyle, `VueInstance`]; + } else if (isRef(obj)) { + pauseTracking(); + const value = obj.value; + resetTracking(); + return [ + "div", + {}, + ["span", vueStyle, genRefFlag(obj)], + "<", + formatValue(value), + `>` + ]; + } else if (isReactive(obj)) { + return [ + "div", + {}, + ["span", vueStyle, isShallow(obj) ? "ShallowReactive" : "Reactive"], + "<", + formatValue(obj), + `>${isReadonly(obj) ? ` (readonly)` : ``}` + ]; + } else if (isReadonly(obj)) { + return [ + "div", + {}, + ["span", vueStyle, isShallow(obj) ? "ShallowReadonly" : "Readonly"], + "<", + formatValue(obj), + ">" + ]; + } + return null; + }, + hasBody(obj) { + return obj && obj.__isVue; + }, + body(obj) { + if (obj && obj.__isVue) { + return [ + "div", + {}, + ...formatInstance(obj.$) + ]; + } + } + }; + function formatInstance(instance) { + const blocks = []; + if (instance.type.props && instance.props) { + blocks.push(createInstanceBlock("props", toRaw(instance.props))); + } + if (instance.setupState !== EMPTY_OBJ) { + blocks.push(createInstanceBlock("setup", instance.setupState)); + } + if (instance.data !== EMPTY_OBJ) { + blocks.push(createInstanceBlock("data", toRaw(instance.data))); + } + const computed = extractKeys(instance, "computed"); + if (computed) { + blocks.push(createInstanceBlock("computed", computed)); + } + const injected = extractKeys(instance, "inject"); + if (injected) { + blocks.push(createInstanceBlock("injected", injected)); + } + blocks.push([ + "div", + {}, + [ + "span", + { + style: keywordStyle.style + ";opacity:0.66" + }, + "$ (internal): " + ], + ["object", { object: instance }] + ]); + return blocks; + } + function createInstanceBlock(type, target) { + target = extend({}, target); + if (!Object.keys(target).length) { + return ["span", {}]; + } + return [ + "div", + { style: "line-height:1.25em;margin-bottom:0.6em" }, + [ + "div", + { + style: "color:#476582" + }, + type + ], + [ + "div", + { + style: "padding-left:1.25em" + }, + ...Object.keys(target).map((key) => { + return [ + "div", + {}, + ["span", keywordStyle, key + ": "], + formatValue(target[key], false) + ]; + }) + ] + ]; + } + function formatValue(v, asRaw = true) { + if (typeof v === "number") { + return ["span", numberStyle, v]; + } else if (typeof v === "string") { + return ["span", stringStyle, JSON.stringify(v)]; + } else if (typeof v === "boolean") { + return ["span", keywordStyle, v]; + } else if (isObject(v)) { + return ["object", { object: asRaw ? toRaw(v) : v }]; + } else { + return ["span", stringStyle, String(v)]; + } + } + function extractKeys(instance, type) { + const Comp = instance.type; + if (isFunction(Comp)) { + return; + } + const extracted = {}; + for (const key in instance.ctx) { + if (isKeyOfType(Comp, key, type)) { + extracted[key] = instance.ctx[key]; + } + } + return extracted; + } + function isKeyOfType(Comp, key, type) { + const opts = Comp[type]; + if (isArray(opts) && opts.includes(key) || isObject(opts) && key in opts) { + return true; + } + if (Comp.extends && isKeyOfType(Comp.extends, key, type)) { + return true; + } + if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) { + return true; + } + } + function genRefFlag(v) { + if (isShallow(v)) { + return `ShallowRef`; + } + if (v.effect) { + return `ComputedRef`; + } + return `Ref`; + } + if (window.devtoolsFormatters) { + window.devtoolsFormatters.push(formatter); + } else { + window.devtoolsFormatters = [formatter]; + } +} + +function withMemo(memo, render, cache, index) { + const cached = cache[index]; + if (cached && isMemoSame(cached, memo)) { + return cached; + } + const ret = render(); + ret.memo = memo.slice(); + ret.cacheIndex = index; + return cache[index] = ret; +} +function isMemoSame(cached, memo) { + const prev = cached.memo; + if (prev.length != memo.length) { + return false; + } + for (let i = 0; i < prev.length; i++) { + if (hasChanged(prev[i], memo[i])) { + return false; + } + } + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(cached); + } + return true; +} + +const version = "3.5.18"; +const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP; +const ErrorTypeStrings = ErrorTypeStrings$1 ; +const devtools = !!(process.env.NODE_ENV !== "production") || true ? devtools$1 : void 0; +const setDevtoolsHook = !!(process.env.NODE_ENV !== "production") || true ? setDevtoolsHook$1 : NOOP; +const _ssrUtils = { + createComponentInstance, + setupComponent, + renderComponentRoot, + setCurrentRenderingInstance, + isVNode: isVNode, + normalizeVNode, + getComponentPublicInstance, + ensureValidVNode, + pushWarningContext, + popWarningContext +}; +const ssrUtils = _ssrUtils ; +const resolveFilter = null; +const compatUtils = null; +const DeprecationTypes = null; + +export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, Static, Suspense, Teleport, Text, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSlots, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrateOnIdle, hydrateOnInteraction, hydrateOnMediaQuery, hydrateOnVisible, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeModels, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useId, useModel, useSSRContext, useSlots, useTemplateRef, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId }; diff --git a/node_modules/@vue/runtime-core/index.js b/node_modules/@vue/runtime-core/index.js new file mode 100644 index 0000000..50c4882 --- /dev/null +++ b/node_modules/@vue/runtime-core/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/runtime-core.cjs.prod.js') +} else { + module.exports = require('./dist/runtime-core.cjs.js') +} diff --git a/node_modules/@vue/runtime-core/package.json b/node_modules/@vue/runtime-core/package.json new file mode 100644 index 0000000..06cc09b --- /dev/null +++ b/node_modules/@vue/runtime-core/package.json @@ -0,0 +1,52 @@ +{ + "name": "@vue/runtime-core", + "version": "3.5.18", + "description": "@vue/runtime-core", + "main": "index.js", + "module": "dist/runtime-core.esm-bundler.js", + "types": "dist/runtime-core.d.ts", + "files": [ + "index.js", + "dist" + ], + "exports": { + ".": { + "types": "./dist/runtime-core.d.ts", + "node": { + "production": "./dist/runtime-core.cjs.prod.js", + "development": "./dist/runtime-core.cjs.js", + "default": "./index.js" + }, + "module": "./dist/runtime-core.esm-bundler.js", + "import": "./dist/runtime-core.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, + "buildOptions": { + "name": "VueRuntimeCore", + "formats": [ + "esm-bundler", + "cjs" + ] + }, + "sideEffects": false, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/runtime-core" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-core#readme", + "dependencies": { + "@vue/shared": "3.5.18", + "@vue/reactivity": "3.5.18" + } +} \ No newline at end of file diff --git a/node_modules/@vue/runtime-dom/LICENSE b/node_modules/@vue/runtime-dom/LICENSE new file mode 100644 index 0000000..15f1f7e --- /dev/null +++ b/node_modules/@vue/runtime-dom/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018-present, Yuxi (Evan) You + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@vue/runtime-dom/README.md b/node_modules/@vue/runtime-dom/README.md new file mode 100644 index 0000000..11c373f --- /dev/null +++ b/node_modules/@vue/runtime-dom/README.md @@ -0,0 +1,13 @@ +# @vue/runtime-dom + +```js +import { h, createApp } from '@vue/runtime-dom' + +const RootComponent = { + render() { + return h('div', 'hello world') + }, +} + +createApp(RootComponent).mount('#app') +``` diff --git a/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js b/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js new file mode 100644 index 0000000..4783997 --- /dev/null +++ b/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js @@ -0,0 +1,1828 @@ +/** +* @vue/runtime-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var runtimeCore = require('@vue/runtime-core'); +var shared = require('@vue/shared'); + +let policy = void 0; +const tt = typeof window !== "undefined" && window.trustedTypes; +if (tt) { + try { + policy = /* @__PURE__ */ tt.createPolicy("vue", { + createHTML: (val) => val + }); + } catch (e) { + runtimeCore.warn(`Error creating trusted types policy: ${e}`); + } +} +const unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val; +const svgNS = "http://www.w3.org/2000/svg"; +const mathmlNS = "http://www.w3.org/1998/Math/MathML"; +const doc = typeof document !== "undefined" ? document : null; +const templateContainer = doc && /* @__PURE__ */ doc.createElement("template"); +const nodeOps = { + insert: (child, parent, anchor) => { + parent.insertBefore(child, anchor || null); + }, + remove: (child) => { + const parent = child.parentNode; + if (parent) { + parent.removeChild(child); + } + }, + createElement: (tag, namespace, is, props) => { + const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag); + if (tag === "select" && props && props.multiple != null) { + el.setAttribute("multiple", props.multiple); + } + return el; + }, + createText: (text) => doc.createTextNode(text), + createComment: (text) => doc.createComment(text), + setText: (node, text) => { + node.nodeValue = text; + }, + setElementText: (el, text) => { + el.textContent = text; + }, + parentNode: (node) => node.parentNode, + nextSibling: (node) => node.nextSibling, + querySelector: (selector) => doc.querySelector(selector), + setScopeId(el, id) { + el.setAttribute(id, ""); + }, + // __UNSAFE__ + // Reason: innerHTML. + // Static content here can only come from compiled templates. + // As long as the user only uses trusted templates, this is safe. + insertStaticContent(content, parent, anchor, namespace, start, end) { + const before = anchor ? anchor.previousSibling : parent.lastChild; + if (start && (start === end || start.nextSibling)) { + while (true) { + parent.insertBefore(start.cloneNode(true), anchor); + if (start === end || !(start = start.nextSibling)) break; + } + } else { + templateContainer.innerHTML = unsafeToTrustedHTML( + namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content + ); + const template = templateContainer.content; + if (namespace === "svg" || namespace === "mathml") { + const wrapper = template.firstChild; + while (wrapper.firstChild) { + template.appendChild(wrapper.firstChild); + } + template.removeChild(wrapper); + } + parent.insertBefore(template, anchor); + } + return [ + // first + before ? before.nextSibling : parent.firstChild, + // last + anchor ? anchor.previousSibling : parent.lastChild + ]; + } +}; + +const TRANSITION = "transition"; +const ANIMATION = "animation"; +const vtcKey = Symbol("_vtc"); +const DOMTransitionPropsValidators = { + name: String, + type: String, + css: { + type: Boolean, + default: true + }, + duration: [String, Number, Object], + enterFromClass: String, + enterActiveClass: String, + enterToClass: String, + appearFromClass: String, + appearActiveClass: String, + appearToClass: String, + leaveFromClass: String, + leaveActiveClass: String, + leaveToClass: String +}; +const TransitionPropsValidators = /* @__PURE__ */ shared.extend( + {}, + runtimeCore.BaseTransitionPropsValidators, + DOMTransitionPropsValidators +); +const decorate$1 = (t) => { + t.displayName = "Transition"; + t.props = TransitionPropsValidators; + return t; +}; +const Transition = /* @__PURE__ */ decorate$1( + (props, { slots }) => runtimeCore.h(runtimeCore.BaseTransition, resolveTransitionProps(props), slots) +); +const callHook = (hook, args = []) => { + if (shared.isArray(hook)) { + hook.forEach((h2) => h2(...args)); + } else if (hook) { + hook(...args); + } +}; +const hasExplicitCallback = (hook) => { + return hook ? shared.isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false; +}; +function resolveTransitionProps(rawProps) { + const baseProps = {}; + for (const key in rawProps) { + if (!(key in DOMTransitionPropsValidators)) { + baseProps[key] = rawProps[key]; + } + } + if (rawProps.css === false) { + return baseProps; + } + const { + name = "v", + type, + duration, + enterFromClass = `${name}-enter-from`, + enterActiveClass = `${name}-enter-active`, + enterToClass = `${name}-enter-to`, + appearFromClass = enterFromClass, + appearActiveClass = enterActiveClass, + appearToClass = enterToClass, + leaveFromClass = `${name}-leave-from`, + leaveActiveClass = `${name}-leave-active`, + leaveToClass = `${name}-leave-to` + } = rawProps; + const durations = normalizeDuration(duration); + const enterDuration = durations && durations[0]; + const leaveDuration = durations && durations[1]; + const { + onBeforeEnter, + onEnter, + onEnterCancelled, + onLeave, + onLeaveCancelled, + onBeforeAppear = onBeforeEnter, + onAppear = onEnter, + onAppearCancelled = onEnterCancelled + } = baseProps; + const finishEnter = (el, isAppear, done, isCancelled) => { + el._enterCancelled = isCancelled; + removeTransitionClass(el, isAppear ? appearToClass : enterToClass); + removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass); + done && done(); + }; + const finishLeave = (el, done) => { + el._isLeaving = false; + removeTransitionClass(el, leaveFromClass); + removeTransitionClass(el, leaveToClass); + removeTransitionClass(el, leaveActiveClass); + done && done(); + }; + const makeEnterHook = (isAppear) => { + return (el, done) => { + const hook = isAppear ? onAppear : onEnter; + const resolve = () => finishEnter(el, isAppear, done); + callHook(hook, [el, resolve]); + nextFrame(() => { + removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass); + addTransitionClass(el, isAppear ? appearToClass : enterToClass); + if (!hasExplicitCallback(hook)) { + whenTransitionEnds(el, type, enterDuration, resolve); + } + }); + }; + }; + return shared.extend(baseProps, { + onBeforeEnter(el) { + callHook(onBeforeEnter, [el]); + addTransitionClass(el, enterFromClass); + addTransitionClass(el, enterActiveClass); + }, + onBeforeAppear(el) { + callHook(onBeforeAppear, [el]); + addTransitionClass(el, appearFromClass); + addTransitionClass(el, appearActiveClass); + }, + onEnter: makeEnterHook(false), + onAppear: makeEnterHook(true), + onLeave(el, done) { + el._isLeaving = true; + const resolve = () => finishLeave(el, done); + addTransitionClass(el, leaveFromClass); + if (!el._enterCancelled) { + forceReflow(); + addTransitionClass(el, leaveActiveClass); + } else { + addTransitionClass(el, leaveActiveClass); + forceReflow(); + } + nextFrame(() => { + if (!el._isLeaving) { + return; + } + removeTransitionClass(el, leaveFromClass); + addTransitionClass(el, leaveToClass); + if (!hasExplicitCallback(onLeave)) { + whenTransitionEnds(el, type, leaveDuration, resolve); + } + }); + callHook(onLeave, [el, resolve]); + }, + onEnterCancelled(el) { + finishEnter(el, false, void 0, true); + callHook(onEnterCancelled, [el]); + }, + onAppearCancelled(el) { + finishEnter(el, true, void 0, true); + callHook(onAppearCancelled, [el]); + }, + onLeaveCancelled(el) { + finishLeave(el); + callHook(onLeaveCancelled, [el]); + } + }); +} +function normalizeDuration(duration) { + if (duration == null) { + return null; + } else if (shared.isObject(duration)) { + return [NumberOf(duration.enter), NumberOf(duration.leave)]; + } else { + const n = NumberOf(duration); + return [n, n]; + } +} +function NumberOf(val) { + const res = shared.toNumber(val); + { + runtimeCore.assertNumber(res, "<transition> explicit duration"); + } + return res; +} +function addTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.add(c)); + (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls); +} +function removeTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.remove(c)); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.delete(cls); + if (!_vtc.size) { + el[vtcKey] = void 0; + } + } +} +function nextFrame(cb) { + requestAnimationFrame(() => { + requestAnimationFrame(cb); + }); +} +let endId = 0; +function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) { + const id = el._endId = ++endId; + const resolveIfNotStale = () => { + if (id === el._endId) { + resolve(); + } + }; + if (explicitTimeout != null) { + return setTimeout(resolveIfNotStale, explicitTimeout); + } + const { type, timeout, propCount } = getTransitionInfo(el, expectedType); + if (!type) { + return resolve(); + } + const endEvent = type + "end"; + let ended = 0; + const end = () => { + el.removeEventListener(endEvent, onEnd); + resolveIfNotStale(); + }; + const onEnd = (e) => { + if (e.target === el && ++ended >= propCount) { + end(); + } + }; + setTimeout(() => { + if (ended < propCount) { + end(); + } + }, timeout + 1); + el.addEventListener(endEvent, onEnd); +} +function getTransitionInfo(el, expectedType) { + const styles = window.getComputedStyle(el); + const getStyleProperties = (key) => (styles[key] || "").split(", "); + const transitionDelays = getStyleProperties(`${TRANSITION}Delay`); + const transitionDurations = getStyleProperties(`${TRANSITION}Duration`); + const transitionTimeout = getTimeout(transitionDelays, transitionDurations); + const animationDelays = getStyleProperties(`${ANIMATION}Delay`); + const animationDurations = getStyleProperties(`${ANIMATION}Duration`); + const animationTimeout = getTimeout(animationDelays, animationDurations); + let type = null; + let timeout = 0; + let propCount = 0; + if (expectedType === TRANSITION) { + if (transitionTimeout > 0) { + type = TRANSITION; + timeout = transitionTimeout; + propCount = transitionDurations.length; + } + } else if (expectedType === ANIMATION) { + if (animationTimeout > 0) { + type = ANIMATION; + timeout = animationTimeout; + propCount = animationDurations.length; + } + } else { + timeout = Math.max(transitionTimeout, animationTimeout); + type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null; + propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0; + } + const hasTransform = type === TRANSITION && /\b(transform|all)(,|$)/.test( + getStyleProperties(`${TRANSITION}Property`).toString() + ); + return { + type, + timeout, + propCount, + hasTransform + }; +} +function getTimeout(delays, durations) { + while (delays.length < durations.length) { + delays = delays.concat(delays); + } + return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i]))); +} +function toMs(s) { + if (s === "auto") return 0; + return Number(s.slice(0, -1).replace(",", ".")) * 1e3; +} +function forceReflow() { + return document.body.offsetHeight; +} + +function patchClass(el, value, isSVG) { + const transitionClasses = el[vtcKey]; + if (transitionClasses) { + value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" "); + } + if (value == null) { + el.removeAttribute("class"); + } else if (isSVG) { + el.setAttribute("class", value); + } else { + el.className = value; + } +} + +const vShowOriginalDisplay = Symbol("_vod"); +const vShowHidden = Symbol("_vsh"); +const vShow = { + beforeMount(el, { value }, { transition }) { + el[vShowOriginalDisplay] = el.style.display === "none" ? "" : el.style.display; + if (transition && value) { + transition.beforeEnter(el); + } else { + setDisplay(el, value); + } + }, + mounted(el, { value }, { transition }) { + if (transition && value) { + transition.enter(el); + } + }, + updated(el, { value, oldValue }, { transition }) { + if (!value === !oldValue) return; + if (transition) { + if (value) { + transition.beforeEnter(el); + setDisplay(el, true); + transition.enter(el); + } else { + transition.leave(el, () => { + setDisplay(el, false); + }); + } + } else { + setDisplay(el, value); + } + }, + beforeUnmount(el, { value }) { + setDisplay(el, value); + } +}; +{ + vShow.name = "show"; +} +function setDisplay(el, value) { + el.style.display = value ? el[vShowOriginalDisplay] : "none"; + el[vShowHidden] = !value; +} +function initVShowForSSR() { + vShow.getSSRProps = ({ value }) => { + if (!value) { + return { style: { display: "none" } }; + } + }; +} + +const CSS_VAR_TEXT = Symbol("CSS_VAR_TEXT" ); +function useCssVars(getter) { + return; +} + +const displayRE = /(^|;)\s*display\s*:/; +function patchStyle(el, prev, next) { + const style = el.style; + const isCssString = shared.isString(next); + let hasControlledDisplay = false; + if (next && !isCssString) { + if (prev) { + if (!shared.isString(prev)) { + for (const key in prev) { + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } else { + for (const prevStyle of prev.split(";")) { + const key = prevStyle.slice(0, prevStyle.indexOf(":")).trim(); + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } + } + for (const key in next) { + if (key === "display") { + hasControlledDisplay = true; + } + setStyle(style, key, next[key]); + } + } else { + if (isCssString) { + if (prev !== next) { + const cssVarText = style[CSS_VAR_TEXT]; + if (cssVarText) { + next += ";" + cssVarText; + } + style.cssText = next; + hasControlledDisplay = displayRE.test(next); + } + } else if (prev) { + el.removeAttribute("style"); + } + } + if (vShowOriginalDisplay in el) { + el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : ""; + if (el[vShowHidden]) { + style.display = "none"; + } + } +} +const semicolonRE = /[^\\];\s*$/; +const importantRE = /\s*!important$/; +function setStyle(style, name, val) { + if (shared.isArray(val)) { + val.forEach((v) => setStyle(style, name, v)); + } else { + if (val == null) val = ""; + { + if (semicolonRE.test(val)) { + runtimeCore.warn( + `Unexpected semicolon at the end of '${name}' style value: '${val}'` + ); + } + } + if (name.startsWith("--")) { + style.setProperty(name, val); + } else { + const prefixed = autoPrefix(style, name); + if (importantRE.test(val)) { + style.setProperty( + shared.hyphenate(prefixed), + val.replace(importantRE, ""), + "important" + ); + } else { + style[prefixed] = val; + } + } + } +} +const prefixes = ["Webkit", "Moz", "ms"]; +const prefixCache = {}; +function autoPrefix(style, rawName) { + const cached = prefixCache[rawName]; + if (cached) { + return cached; + } + let name = runtimeCore.camelize(rawName); + if (name !== "filter" && name in style) { + return prefixCache[rawName] = name; + } + name = shared.capitalize(name); + for (let i = 0; i < prefixes.length; i++) { + const prefixed = prefixes[i] + name; + if (prefixed in style) { + return prefixCache[rawName] = prefixed; + } + } + return rawName; +} + +const xlinkNS = "http://www.w3.org/1999/xlink"; +function patchAttr(el, key, value, isSVG, instance, isBoolean = shared.isSpecialBooleanAttr(key)) { + if (isSVG && key.startsWith("xlink:")) { + if (value == null) { + el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); + } else { + el.setAttributeNS(xlinkNS, key, value); + } + } else { + if (value == null || isBoolean && !shared.includeBooleanAttr(value)) { + el.removeAttribute(key); + } else { + el.setAttribute( + key, + isBoolean ? "" : shared.isSymbol(value) ? String(value) : value + ); + } + } +} + +function patchDOMProp(el, key, value, parentComponent, attrName) { + if (key === "innerHTML" || key === "textContent") { + if (value != null) { + el[key] = key === "innerHTML" ? unsafeToTrustedHTML(value) : value; + } + return; + } + const tag = el.tagName; + if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally + !tag.includes("-")) { + const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value; + const newValue = value == null ? ( + // #11647: value should be set as empty string for null and undefined, + // but <input type="checkbox"> should be set as 'on'. + el.type === "checkbox" ? "on" : "" + ) : String(value); + if (oldValue !== newValue || !("_value" in el)) { + el.value = newValue; + } + if (value == null) { + el.removeAttribute(key); + } + el._value = value; + return; + } + let needRemove = false; + if (value === "" || value == null) { + const type = typeof el[key]; + if (type === "boolean") { + value = shared.includeBooleanAttr(value); + } else if (value == null && type === "string") { + value = ""; + needRemove = true; + } else if (type === "number") { + value = 0; + needRemove = true; + } + } + try { + el[key] = value; + } catch (e) { + if (!needRemove) { + runtimeCore.warn( + `Failed setting prop "${key}" on <${tag.toLowerCase()}>: value ${value} is invalid.`, + e + ); + } + } + needRemove && el.removeAttribute(attrName || key); +} + +function addEventListener(el, event, handler, options) { + el.addEventListener(event, handler, options); +} +function removeEventListener(el, event, handler, options) { + el.removeEventListener(event, handler, options); +} +const veiKey = Symbol("_vei"); +function patchEvent(el, rawName, prevValue, nextValue, instance = null) { + const invokers = el[veiKey] || (el[veiKey] = {}); + const existingInvoker = invokers[rawName]; + if (nextValue && existingInvoker) { + existingInvoker.value = sanitizeEventValue(nextValue, rawName) ; + } else { + const [name, options] = parseName(rawName); + if (nextValue) { + const invoker = invokers[rawName] = createInvoker( + sanitizeEventValue(nextValue, rawName) , + instance + ); + addEventListener(el, name, invoker, options); + } else if (existingInvoker) { + removeEventListener(el, name, existingInvoker, options); + invokers[rawName] = void 0; + } + } +} +const optionsModifierRE = /(?:Once|Passive|Capture)$/; +function parseName(name) { + let options; + if (optionsModifierRE.test(name)) { + options = {}; + let m; + while (m = name.match(optionsModifierRE)) { + name = name.slice(0, name.length - m[0].length); + options[m[0].toLowerCase()] = true; + } + } + const event = name[2] === ":" ? name.slice(3) : shared.hyphenate(name.slice(2)); + return [event, options]; +} +let cachedNow = 0; +const p = /* @__PURE__ */ Promise.resolve(); +const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now()); +function createInvoker(initialValue, instance) { + const invoker = (e) => { + if (!e._vts) { + e._vts = Date.now(); + } else if (e._vts <= invoker.attached) { + return; + } + runtimeCore.callWithAsyncErrorHandling( + patchStopImmediatePropagation(e, invoker.value), + instance, + 5, + [e] + ); + }; + invoker.value = initialValue; + invoker.attached = getNow(); + return invoker; +} +function sanitizeEventValue(value, propName) { + if (shared.isFunction(value) || shared.isArray(value)) { + return value; + } + runtimeCore.warn( + `Wrong type passed as event handler to ${propName} - did you forget @ or : in front of your prop? +Expected function or array of functions, received type ${typeof value}.` + ); + return shared.NOOP; +} +function patchStopImmediatePropagation(e, value) { + if (shared.isArray(value)) { + const originalStop = e.stopImmediatePropagation; + e.stopImmediatePropagation = () => { + originalStop.call(e); + e._stopped = true; + }; + return value.map( + (fn) => (e2) => !e2._stopped && fn && fn(e2) + ); + } else { + return value; + } +} + +const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter +key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123; +const patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => { + const isSVG = namespace === "svg"; + if (key === "class") { + patchClass(el, nextValue, isSVG); + } else if (key === "style") { + patchStyle(el, prevValue, nextValue); + } else if (shared.isOn(key)) { + if (!shared.isModelListener(key)) { + patchEvent(el, key, prevValue, nextValue, parentComponent); + } + } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) { + patchDOMProp(el, key, nextValue); + if (!el.tagName.includes("-") && (key === "value" || key === "checked" || key === "selected")) { + patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value"); + } + } else if ( + // #11081 force set props for possible async custom element + el._isVueCE && (/[A-Z]/.test(key) || !shared.isString(nextValue)) + ) { + patchDOMProp(el, shared.camelize(key), nextValue, parentComponent, key); + } else { + if (key === "true-value") { + el._trueValue = nextValue; + } else if (key === "false-value") { + el._falseValue = nextValue; + } + patchAttr(el, key, nextValue, isSVG); + } +}; +function shouldSetAsProp(el, key, value, isSVG) { + if (isSVG) { + if (key === "innerHTML" || key === "textContent") { + return true; + } + if (key in el && isNativeOn(key) && shared.isFunction(value)) { + return true; + } + return false; + } + if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") { + return false; + } + if (key === "form") { + return false; + } + if (key === "list" && el.tagName === "INPUT") { + return false; + } + if (key === "type" && el.tagName === "TEXTAREA") { + return false; + } + if (key === "width" || key === "height") { + const tag = el.tagName; + if (tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE") { + return false; + } + } + if (isNativeOn(key) && shared.isString(value)) { + return false; + } + return key in el; +} + +const REMOVAL = {}; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineCustomElement(options, extraOptions, _createApp) { + const Comp = runtimeCore.defineComponent(options, extraOptions); + if (shared.isPlainObject(Comp)) shared.extend(Comp, extraOptions); + class VueCustomElement extends VueElement { + constructor(initialProps) { + super(Comp, initialProps, _createApp); + } + } + VueCustomElement.def = Comp; + return VueCustomElement; +} +/*! #__NO_SIDE_EFFECTS__ */ +const defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options, extraOptions) => { + return /* @__PURE__ */ defineCustomElement(options, extraOptions, createSSRApp); +}; +const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class { +}; +class VueElement extends BaseClass { + constructor(_def, _props = {}, _createApp = createApp) { + super(); + this._def = _def; + this._props = _props; + this._createApp = _createApp; + this._isVueCE = true; + /** + * @internal + */ + this._instance = null; + /** + * @internal + */ + this._app = null; + /** + * @internal + */ + this._nonce = this._def.nonce; + this._connected = false; + this._resolved = false; + this._numberProps = null; + this._styleChildren = /* @__PURE__ */ new WeakSet(); + this._ob = null; + if (this.shadowRoot && _createApp !== createApp) { + this._root = this.shadowRoot; + } else { + if (this.shadowRoot) { + runtimeCore.warn( + `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \`defineSSRCustomElement\`.` + ); + } + if (_def.shadowRoot !== false) { + this.attachShadow({ mode: "open" }); + this._root = this.shadowRoot; + } else { + this._root = this; + } + } + } + connectedCallback() { + if (!this.isConnected) return; + if (!this.shadowRoot && !this._resolved) { + this._parseSlots(); + } + this._connected = true; + let parent = this; + while (parent = parent && (parent.parentNode || parent.host)) { + if (parent instanceof VueElement) { + this._parent = parent; + break; + } + } + if (!this._instance) { + if (this._resolved) { + this._mount(this._def); + } else { + if (parent && parent._pendingResolve) { + this._pendingResolve = parent._pendingResolve.then(() => { + this._pendingResolve = void 0; + this._resolveDef(); + }); + } else { + this._resolveDef(); + } + } + } + } + _setParent(parent = this._parent) { + if (parent) { + this._instance.parent = parent._instance; + this._inheritParentContext(parent); + } + } + _inheritParentContext(parent = this._parent) { + if (parent && this._app) { + Object.setPrototypeOf( + this._app._context.provides, + parent._instance.provides + ); + } + } + disconnectedCallback() { + this._connected = false; + runtimeCore.nextTick(() => { + if (!this._connected) { + if (this._ob) { + this._ob.disconnect(); + this._ob = null; + } + this._app && this._app.unmount(); + if (this._instance) this._instance.ce = void 0; + this._app = this._instance = null; + } + }); + } + /** + * resolve inner component definition (handle possible async component) + */ + _resolveDef() { + if (this._pendingResolve) { + return; + } + for (let i = 0; i < this.attributes.length; i++) { + this._setAttr(this.attributes[i].name); + } + this._ob = new MutationObserver((mutations) => { + for (const m of mutations) { + this._setAttr(m.attributeName); + } + }); + this._ob.observe(this, { attributes: true }); + const resolve = (def, isAsync = false) => { + this._resolved = true; + this._pendingResolve = void 0; + const { props, styles } = def; + let numberProps; + if (props && !shared.isArray(props)) { + for (const key in props) { + const opt = props[key]; + if (opt === Number || opt && opt.type === Number) { + if (key in this._props) { + this._props[key] = shared.toNumber(this._props[key]); + } + (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[shared.camelize(key)] = true; + } + } + } + this._numberProps = numberProps; + this._resolveProps(def); + if (this.shadowRoot) { + this._applyStyles(styles); + } else if (styles) { + runtimeCore.warn( + "Custom element style injection is not supported when using shadowRoot: false" + ); + } + this._mount(def); + }; + const asyncDef = this._def.__asyncLoader; + if (asyncDef) { + this._pendingResolve = asyncDef().then((def) => { + def.configureApp = this._def.configureApp; + resolve(this._def = def, true); + }); + } else { + resolve(this._def); + } + } + _mount(def) { + if (!def.name) { + def.name = "VueElement"; + } + this._app = this._createApp(def); + this._inheritParentContext(); + if (def.configureApp) { + def.configureApp(this._app); + } + this._app._ceVNode = this._createVNode(); + this._app.mount(this._root); + const exposed = this._instance && this._instance.exposed; + if (!exposed) return; + for (const key in exposed) { + if (!shared.hasOwn(this, key)) { + Object.defineProperty(this, key, { + // unwrap ref to be consistent with public instance behavior + get: () => runtimeCore.unref(exposed[key]) + }); + } else { + runtimeCore.warn(`Exposed property "${key}" already exists on custom element.`); + } + } + } + _resolveProps(def) { + const { props } = def; + const declaredPropKeys = shared.isArray(props) ? props : Object.keys(props || {}); + for (const key of Object.keys(this)) { + if (key[0] !== "_" && declaredPropKeys.includes(key)) { + this._setProp(key, this[key]); + } + } + for (const key of declaredPropKeys.map(shared.camelize)) { + Object.defineProperty(this, key, { + get() { + return this._getProp(key); + }, + set(val) { + this._setProp(key, val, true, true); + } + }); + } + } + _setAttr(key) { + if (key.startsWith("data-v-")) return; + const has = this.hasAttribute(key); + let value = has ? this.getAttribute(key) : REMOVAL; + const camelKey = shared.camelize(key); + if (has && this._numberProps && this._numberProps[camelKey]) { + value = shared.toNumber(value); + } + this._setProp(camelKey, value, false, true); + } + /** + * @internal + */ + _getProp(key) { + return this._props[key]; + } + /** + * @internal + */ + _setProp(key, val, shouldReflect = true, shouldUpdate = false) { + if (val !== this._props[key]) { + if (val === REMOVAL) { + delete this._props[key]; + } else { + this._props[key] = val; + if (key === "key" && this._app) { + this._app._ceVNode.key = val; + } + } + if (shouldUpdate && this._instance) { + this._update(); + } + if (shouldReflect) { + const ob = this._ob; + ob && ob.disconnect(); + if (val === true) { + this.setAttribute(shared.hyphenate(key), ""); + } else if (typeof val === "string" || typeof val === "number") { + this.setAttribute(shared.hyphenate(key), val + ""); + } else if (!val) { + this.removeAttribute(shared.hyphenate(key)); + } + ob && ob.observe(this, { attributes: true }); + } + } + } + _update() { + const vnode = this._createVNode(); + if (this._app) vnode.appContext = this._app._context; + render(vnode, this._root); + } + _createVNode() { + const baseProps = {}; + if (!this.shadowRoot) { + baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this); + } + const vnode = runtimeCore.createVNode(this._def, shared.extend(baseProps, this._props)); + if (!this._instance) { + vnode.ce = (instance) => { + this._instance = instance; + instance.ce = this; + instance.isCE = true; + { + instance.ceReload = (newStyles) => { + if (this._styles) { + this._styles.forEach((s) => this._root.removeChild(s)); + this._styles.length = 0; + } + this._applyStyles(newStyles); + this._instance = null; + this._update(); + }; + } + const dispatch = (event, args) => { + this.dispatchEvent( + new CustomEvent( + event, + shared.isPlainObject(args[0]) ? shared.extend({ detail: args }, args[0]) : { detail: args } + ) + ); + }; + instance.emit = (event, ...args) => { + dispatch(event, args); + if (shared.hyphenate(event) !== event) { + dispatch(shared.hyphenate(event), args); + } + }; + this._setParent(); + }; + } + return vnode; + } + _applyStyles(styles, owner) { + if (!styles) return; + if (owner) { + if (owner === this._def || this._styleChildren.has(owner)) { + return; + } + this._styleChildren.add(owner); + } + const nonce = this._nonce; + for (let i = styles.length - 1; i >= 0; i--) { + const s = document.createElement("style"); + if (nonce) s.setAttribute("nonce", nonce); + s.textContent = styles[i]; + this.shadowRoot.prepend(s); + { + if (owner) { + if (owner.__hmrId) { + if (!this._childStyles) this._childStyles = /* @__PURE__ */ new Map(); + let entry = this._childStyles.get(owner.__hmrId); + if (!entry) { + this._childStyles.set(owner.__hmrId, entry = []); + } + entry.push(s); + } + } else { + (this._styles || (this._styles = [])).push(s); + } + } + } + } + /** + * Only called when shadowRoot is false + */ + _parseSlots() { + const slots = this._slots = {}; + let n; + while (n = this.firstChild) { + const slotName = n.nodeType === 1 && n.getAttribute("slot") || "default"; + (slots[slotName] || (slots[slotName] = [])).push(n); + this.removeChild(n); + } + } + /** + * Only called when shadowRoot is false + */ + _renderSlots() { + const outlets = (this._teleportTarget || this).querySelectorAll("slot"); + const scopeId = this._instance.type.__scopeId; + for (let i = 0; i < outlets.length; i++) { + const o = outlets[i]; + const slotName = o.getAttribute("name") || "default"; + const content = this._slots[slotName]; + const parent = o.parentNode; + if (content) { + for (const n of content) { + if (scopeId && n.nodeType === 1) { + const id = scopeId + "-s"; + const walker = document.createTreeWalker(n, 1); + n.setAttribute(id, ""); + let child; + while (child = walker.nextNode()) { + child.setAttribute(id, ""); + } + } + parent.insertBefore(n, o); + } + } else { + while (o.firstChild) parent.insertBefore(o.firstChild, o); + } + parent.removeChild(o); + } + } + /** + * @internal + */ + _injectChildStyle(comp) { + this._applyStyles(comp.styles, comp); + } + /** + * @internal + */ + _removeChildStyle(comp) { + { + this._styleChildren.delete(comp); + if (this._childStyles && comp.__hmrId) { + const oldStyles = this._childStyles.get(comp.__hmrId); + if (oldStyles) { + oldStyles.forEach((s) => this._root.removeChild(s)); + oldStyles.length = 0; + } + } + } + } +} +function useHost(caller) { + const instance = runtimeCore.getCurrentInstance(); + const el = instance && instance.ce; + if (el) { + return el; + } else { + if (!instance) { + runtimeCore.warn( + `${caller || "useHost"} called without an active component instance.` + ); + } else { + runtimeCore.warn( + `${caller || "useHost"} can only be used in components defined via defineCustomElement.` + ); + } + } + return null; +} +function useShadowRoot() { + const el = useHost("useShadowRoot") ; + return el && el.shadowRoot; +} + +function useCssModule(name = "$style") { + { + const instance = runtimeCore.getCurrentInstance(); + if (!instance) { + runtimeCore.warn(`useCssModule must be called inside setup()`); + return shared.EMPTY_OBJ; + } + const modules = instance.type.__cssModules; + if (!modules) { + runtimeCore.warn(`Current instance does not have CSS modules injected.`); + return shared.EMPTY_OBJ; + } + const mod = modules[name]; + if (!mod) { + runtimeCore.warn(`Current instance does not have CSS module named "${name}".`); + return shared.EMPTY_OBJ; + } + return mod; + } +} + +const positionMap = /* @__PURE__ */ new WeakMap(); +const newPositionMap = /* @__PURE__ */ new WeakMap(); +const moveCbKey = Symbol("_moveCb"); +const enterCbKey = Symbol("_enterCb"); +const decorate = (t) => { + delete t.props.mode; + return t; +}; +const TransitionGroupImpl = /* @__PURE__ */ decorate({ + name: "TransitionGroup", + props: /* @__PURE__ */ shared.extend({}, TransitionPropsValidators, { + tag: String, + moveClass: String + }), + setup(props, { slots }) { + const instance = runtimeCore.getCurrentInstance(); + const state = runtimeCore.useTransitionState(); + let prevChildren; + let children; + runtimeCore.onUpdated(() => { + if (!prevChildren.length) { + return; + } + const moveClass = props.moveClass || `${props.name || "v"}-move`; + if (!hasCSSTransform( + prevChildren[0].el, + instance.vnode.el, + moveClass + )) { + prevChildren = []; + return; + } + prevChildren.forEach(callPendingCbs); + prevChildren.forEach(recordPosition); + const movedChildren = prevChildren.filter(applyTranslation); + forceReflow(); + movedChildren.forEach((c) => { + const el = c.el; + const style = el.style; + addTransitionClass(el, moveClass); + style.transform = style.webkitTransform = style.transitionDuration = ""; + const cb = el[moveCbKey] = (e) => { + if (e && e.target !== el) { + return; + } + if (!e || /transform$/.test(e.propertyName)) { + el.removeEventListener("transitionend", cb); + el[moveCbKey] = null; + removeTransitionClass(el, moveClass); + } + }; + el.addEventListener("transitionend", cb); + }); + prevChildren = []; + }); + return () => { + const rawProps = runtimeCore.toRaw(props); + const cssTransitionProps = resolveTransitionProps(rawProps); + let tag = rawProps.tag || runtimeCore.Fragment; + prevChildren = []; + if (children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.el && child.el instanceof Element) { + prevChildren.push(child); + runtimeCore.setTransitionHooks( + child, + runtimeCore.resolveTransitionHooks( + child, + cssTransitionProps, + state, + instance + ) + ); + positionMap.set( + child, + child.el.getBoundingClientRect() + ); + } + } + } + children = slots.default ? runtimeCore.getTransitionRawChildren(slots.default()) : []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.key != null) { + runtimeCore.setTransitionHooks( + child, + runtimeCore.resolveTransitionHooks(child, cssTransitionProps, state, instance) + ); + } else if (child.type !== runtimeCore.Text) { + runtimeCore.warn(`<TransitionGroup> children must be keyed.`); + } + } + return runtimeCore.createVNode(tag, null, children); + }; + } +}); +const TransitionGroup = TransitionGroupImpl; +function callPendingCbs(c) { + const el = c.el; + if (el[moveCbKey]) { + el[moveCbKey](); + } + if (el[enterCbKey]) { + el[enterCbKey](); + } +} +function recordPosition(c) { + newPositionMap.set(c, c.el.getBoundingClientRect()); +} +function applyTranslation(c) { + const oldPos = positionMap.get(c); + const newPos = newPositionMap.get(c); + const dx = oldPos.left - newPos.left; + const dy = oldPos.top - newPos.top; + if (dx || dy) { + const s = c.el.style; + s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`; + s.transitionDuration = "0s"; + return c; + } +} +function hasCSSTransform(el, root, moveClass) { + const clone = el.cloneNode(); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.forEach((cls) => { + cls.split(/\s+/).forEach((c) => c && clone.classList.remove(c)); + }); + } + moveClass.split(/\s+/).forEach((c) => c && clone.classList.add(c)); + clone.style.display = "none"; + const container = root.nodeType === 1 ? root : root.parentNode; + container.appendChild(clone); + const { hasTransform } = getTransitionInfo(clone); + container.removeChild(clone); + return hasTransform; +} + +const getModelAssigner = (vnode) => { + const fn = vnode.props["onUpdate:modelValue"] || false; + return shared.isArray(fn) ? (value) => shared.invokeArrayFns(fn, value) : fn; +}; +function onCompositionStart(e) { + e.target.composing = true; +} +function onCompositionEnd(e) { + const target = e.target; + if (target.composing) { + target.composing = false; + target.dispatchEvent(new Event("input")); + } +} +const assignKey = Symbol("_assign"); +const vModelText = { + created(el, { modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + const castToNumber = number || vnode.props && vnode.props.type === "number"; + addEventListener(el, lazy ? "change" : "input", (e) => { + if (e.target.composing) return; + let domValue = el.value; + if (trim) { + domValue = domValue.trim(); + } + if (castToNumber) { + domValue = shared.looseToNumber(domValue); + } + el[assignKey](domValue); + }); + if (trim) { + addEventListener(el, "change", () => { + el.value = el.value.trim(); + }); + } + if (!lazy) { + addEventListener(el, "compositionstart", onCompositionStart); + addEventListener(el, "compositionend", onCompositionEnd); + addEventListener(el, "change", onCompositionEnd); + } + }, + // set value on mounted so it's after min/max for type="range" + mounted(el, { value }) { + el.value = value == null ? "" : value; + }, + beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (el.composing) return; + const elValue = (number || el.type === "number") && !/^0\d/.test(el.value) ? shared.looseToNumber(el.value) : el.value; + const newValue = value == null ? "" : value; + if (elValue === newValue) { + return; + } + if (document.activeElement === el && el.type !== "range") { + if (lazy && value === oldValue) { + return; + } + if (trim && el.value.trim() === newValue) { + return; + } + } + el.value = newValue; + } +}; +const vModelCheckbox = { + // #4096 array checkboxes need to be deep traversed + deep: true, + created(el, _, vnode) { + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + const modelValue = el._modelValue; + const elementValue = getValue(el); + const checked = el.checked; + const assign = el[assignKey]; + if (shared.isArray(modelValue)) { + const index = shared.looseIndexOf(modelValue, elementValue); + const found = index !== -1; + if (checked && !found) { + assign(modelValue.concat(elementValue)); + } else if (!checked && found) { + const filtered = [...modelValue]; + filtered.splice(index, 1); + assign(filtered); + } + } else if (shared.isSet(modelValue)) { + const cloned = new Set(modelValue); + if (checked) { + cloned.add(elementValue); + } else { + cloned.delete(elementValue); + } + assign(cloned); + } else { + assign(getCheckboxValue(el, checked)); + } + }); + }, + // set initial checked on mount to wait for true-value/false-value + mounted: setChecked, + beforeUpdate(el, binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + setChecked(el, binding, vnode); + } +}; +function setChecked(el, { value, oldValue }, vnode) { + el._modelValue = value; + let checked; + if (shared.isArray(value)) { + checked = shared.looseIndexOf(value, vnode.props.value) > -1; + } else if (shared.isSet(value)) { + checked = value.has(vnode.props.value); + } else { + if (value === oldValue) return; + checked = shared.looseEqual(value, getCheckboxValue(el, true)); + } + if (el.checked !== checked) { + el.checked = checked; + } +} +const vModelRadio = { + created(el, { value }, vnode) { + el.checked = shared.looseEqual(value, vnode.props.value); + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + el[assignKey](getValue(el)); + }); + }, + beforeUpdate(el, { value, oldValue }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (value !== oldValue) { + el.checked = shared.looseEqual(value, vnode.props.value); + } + } +}; +const vModelSelect = { + // <select multiple> value need to be deep traversed + deep: true, + created(el, { value, modifiers: { number } }, vnode) { + const isSetModel = shared.isSet(value); + addEventListener(el, "change", () => { + const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map( + (o) => number ? shared.looseToNumber(getValue(o)) : getValue(o) + ); + el[assignKey]( + el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0] + ); + el._assigning = true; + runtimeCore.nextTick(() => { + el._assigning = false; + }); + }); + el[assignKey] = getModelAssigner(vnode); + }, + // set value in mounted & updated because <select> relies on its children + // <option>s. + mounted(el, { value }) { + setSelected(el, value); + }, + beforeUpdate(el, _binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + }, + updated(el, { value }) { + if (!el._assigning) { + setSelected(el, value); + } + } +}; +function setSelected(el, value) { + const isMultiple = el.multiple; + const isArrayValue = shared.isArray(value); + if (isMultiple && !isArrayValue && !shared.isSet(value)) { + runtimeCore.warn( + `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.` + ); + return; + } + for (let i = 0, l = el.options.length; i < l; i++) { + const option = el.options[i]; + const optionValue = getValue(option); + if (isMultiple) { + if (isArrayValue) { + const optionType = typeof optionValue; + if (optionType === "string" || optionType === "number") { + option.selected = value.some((v) => String(v) === String(optionValue)); + } else { + option.selected = shared.looseIndexOf(value, optionValue) > -1; + } + } else { + option.selected = value.has(optionValue); + } + } else if (shared.looseEqual(getValue(option), value)) { + if (el.selectedIndex !== i) el.selectedIndex = i; + return; + } + } + if (!isMultiple && el.selectedIndex !== -1) { + el.selectedIndex = -1; + } +} +function getValue(el) { + return "_value" in el ? el._value : el.value; +} +function getCheckboxValue(el, checked) { + const key = checked ? "_trueValue" : "_falseValue"; + return key in el ? el[key] : checked; +} +const vModelDynamic = { + created(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "created"); + }, + mounted(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "mounted"); + }, + beforeUpdate(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "beforeUpdate"); + }, + updated(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "updated"); + } +}; +function resolveDynamicModel(tagName, type) { + switch (tagName) { + case "SELECT": + return vModelSelect; + case "TEXTAREA": + return vModelText; + default: + switch (type) { + case "checkbox": + return vModelCheckbox; + case "radio": + return vModelRadio; + default: + return vModelText; + } + } +} +function callModelHook(el, binding, vnode, prevVNode, hook) { + const modelToUse = resolveDynamicModel( + el.tagName, + vnode.props && vnode.props.type + ); + const fn = modelToUse[hook]; + fn && fn(el, binding, vnode, prevVNode); +} +function initVModelForSSR() { + vModelText.getSSRProps = ({ value }) => ({ value }); + vModelRadio.getSSRProps = ({ value }, vnode) => { + if (vnode.props && shared.looseEqual(vnode.props.value, value)) { + return { checked: true }; + } + }; + vModelCheckbox.getSSRProps = ({ value }, vnode) => { + if (shared.isArray(value)) { + if (vnode.props && shared.looseIndexOf(value, vnode.props.value) > -1) { + return { checked: true }; + } + } else if (shared.isSet(value)) { + if (vnode.props && value.has(vnode.props.value)) { + return { checked: true }; + } + } else if (value) { + return { checked: true }; + } + }; + vModelDynamic.getSSRProps = (binding, vnode) => { + if (typeof vnode.type !== "string") { + return; + } + const modelToUse = resolveDynamicModel( + // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase + vnode.type.toUpperCase(), + vnode.props && vnode.props.type + ); + if (modelToUse.getSSRProps) { + return modelToUse.getSSRProps(binding, vnode); + } + }; +} + +const systemModifiers = ["ctrl", "shift", "alt", "meta"]; +const modifierGuards = { + stop: (e) => e.stopPropagation(), + prevent: (e) => e.preventDefault(), + self: (e) => e.target !== e.currentTarget, + ctrl: (e) => !e.ctrlKey, + shift: (e) => !e.shiftKey, + alt: (e) => !e.altKey, + meta: (e) => !e.metaKey, + left: (e) => "button" in e && e.button !== 0, + middle: (e) => "button" in e && e.button !== 1, + right: (e) => "button" in e && e.button !== 2, + exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m)) +}; +const withModifiers = (fn, modifiers) => { + const cache = fn._withMods || (fn._withMods = {}); + const cacheKey = modifiers.join("."); + return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => { + for (let i = 0; i < modifiers.length; i++) { + const guard = modifierGuards[modifiers[i]]; + if (guard && guard(event, modifiers)) return; + } + return fn(event, ...args); + }); +}; +const keyNames = { + esc: "escape", + space: " ", + up: "arrow-up", + left: "arrow-left", + right: "arrow-right", + down: "arrow-down", + delete: "backspace" +}; +const withKeys = (fn, modifiers) => { + const cache = fn._withKeys || (fn._withKeys = {}); + const cacheKey = modifiers.join("."); + return cache[cacheKey] || (cache[cacheKey] = (event) => { + if (!("key" in event)) { + return; + } + const eventKey = shared.hyphenate(event.key); + if (modifiers.some( + (k) => k === eventKey || keyNames[k] === eventKey + )) { + return fn(event); + } + }); +}; + +const rendererOptions = /* @__PURE__ */ shared.extend({ patchProp }, nodeOps); +let renderer; +let enabledHydration = false; +function ensureRenderer() { + return renderer || (renderer = runtimeCore.createRenderer(rendererOptions)); +} +function ensureHydrationRenderer() { + renderer = enabledHydration ? renderer : runtimeCore.createHydrationRenderer(rendererOptions); + enabledHydration = true; + return renderer; +} +const render = (...args) => { + ensureRenderer().render(...args); +}; +const hydrate = (...args) => { + ensureHydrationRenderer().hydrate(...args); +}; +const createApp = (...args) => { + const app = ensureRenderer().createApp(...args); + { + injectNativeTagCheck(app); + injectCompilerOptionsCheck(app); + } + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (!container) return; + const component = app._component; + if (!shared.isFunction(component) && !component.render && !component.template) { + component.template = container.innerHTML; + } + if (container.nodeType === 1) { + container.textContent = ""; + } + const proxy = mount(container, false, resolveRootNamespace(container)); + if (container instanceof Element) { + container.removeAttribute("v-cloak"); + container.setAttribute("data-v-app", ""); + } + return proxy; + }; + return app; +}; +const createSSRApp = (...args) => { + const app = ensureHydrationRenderer().createApp(...args); + { + injectNativeTagCheck(app); + injectCompilerOptionsCheck(app); + } + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (container) { + return mount(container, true, resolveRootNamespace(container)); + } + }; + return app; +}; +function resolveRootNamespace(container) { + if (container instanceof SVGElement) { + return "svg"; + } + if (typeof MathMLElement === "function" && container instanceof MathMLElement) { + return "mathml"; + } +} +function injectNativeTagCheck(app) { + Object.defineProperty(app.config, "isNativeTag", { + value: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag) || shared.isMathMLTag(tag), + writable: false + }); +} +function injectCompilerOptionsCheck(app) { + if (runtimeCore.isRuntimeOnly()) { + const isCustomElement = app.config.isCustomElement; + Object.defineProperty(app.config, "isCustomElement", { + get() { + return isCustomElement; + }, + set() { + runtimeCore.warn( + `The \`isCustomElement\` config option is deprecated. Use \`compilerOptions.isCustomElement\` instead.` + ); + } + }); + const compilerOptions = app.config.compilerOptions; + const msg = `The \`compilerOptions\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka "full build"). Since you are using the runtime-only build, \`compilerOptions\` must be passed to \`@vue/compiler-dom\` in the build setup instead. +- For vue-loader: pass it via vue-loader's \`compilerOptions\` loader option. +- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader +- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`; + Object.defineProperty(app.config, "compilerOptions", { + get() { + runtimeCore.warn(msg); + return compilerOptions; + }, + set() { + runtimeCore.warn(msg); + } + }); + } +} +function normalizeContainer(container) { + if (shared.isString(container)) { + const res = document.querySelector(container); + if (!res) { + runtimeCore.warn( + `Failed to mount app: mount target selector "${container}" returned null.` + ); + } + return res; + } + if (window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === "closed") { + runtimeCore.warn( + `mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs` + ); + } + return container; +} +let ssrDirectiveInitialized = false; +const initDirectivesForSSR = () => { + if (!ssrDirectiveInitialized) { + ssrDirectiveInitialized = true; + initVModelForSSR(); + initVShowForSSR(); + } +} ; + +exports.Transition = Transition; +exports.TransitionGroup = TransitionGroup; +exports.VueElement = VueElement; +exports.createApp = createApp; +exports.createSSRApp = createSSRApp; +exports.defineCustomElement = defineCustomElement; +exports.defineSSRCustomElement = defineSSRCustomElement; +exports.hydrate = hydrate; +exports.initDirectivesForSSR = initDirectivesForSSR; +exports.render = render; +exports.useCssModule = useCssModule; +exports.useCssVars = useCssVars; +exports.useHost = useHost; +exports.useShadowRoot = useShadowRoot; +exports.vModelCheckbox = vModelCheckbox; +exports.vModelDynamic = vModelDynamic; +exports.vModelRadio = vModelRadio; +exports.vModelSelect = vModelSelect; +exports.vModelText = vModelText; +exports.vShow = vShow; +exports.withKeys = withKeys; +exports.withModifiers = withModifiers; +Object.keys(runtimeCore).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = runtimeCore[k]; +}); diff --git a/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js b/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js new file mode 100644 index 0000000..316c0ae --- /dev/null +++ b/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js @@ -0,0 +1,1677 @@ +/** +* @vue/runtime-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var runtimeCore = require('@vue/runtime-core'); +var shared = require('@vue/shared'); + +let policy = void 0; +const tt = typeof window !== "undefined" && window.trustedTypes; +if (tt) { + try { + policy = /* @__PURE__ */ tt.createPolicy("vue", { + createHTML: (val) => val + }); + } catch (e) { + } +} +const unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val; +const svgNS = "http://www.w3.org/2000/svg"; +const mathmlNS = "http://www.w3.org/1998/Math/MathML"; +const doc = typeof document !== "undefined" ? document : null; +const templateContainer = doc && /* @__PURE__ */ doc.createElement("template"); +const nodeOps = { + insert: (child, parent, anchor) => { + parent.insertBefore(child, anchor || null); + }, + remove: (child) => { + const parent = child.parentNode; + if (parent) { + parent.removeChild(child); + } + }, + createElement: (tag, namespace, is, props) => { + const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag); + if (tag === "select" && props && props.multiple != null) { + el.setAttribute("multiple", props.multiple); + } + return el; + }, + createText: (text) => doc.createTextNode(text), + createComment: (text) => doc.createComment(text), + setText: (node, text) => { + node.nodeValue = text; + }, + setElementText: (el, text) => { + el.textContent = text; + }, + parentNode: (node) => node.parentNode, + nextSibling: (node) => node.nextSibling, + querySelector: (selector) => doc.querySelector(selector), + setScopeId(el, id) { + el.setAttribute(id, ""); + }, + // __UNSAFE__ + // Reason: innerHTML. + // Static content here can only come from compiled templates. + // As long as the user only uses trusted templates, this is safe. + insertStaticContent(content, parent, anchor, namespace, start, end) { + const before = anchor ? anchor.previousSibling : parent.lastChild; + if (start && (start === end || start.nextSibling)) { + while (true) { + parent.insertBefore(start.cloneNode(true), anchor); + if (start === end || !(start = start.nextSibling)) break; + } + } else { + templateContainer.innerHTML = unsafeToTrustedHTML( + namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content + ); + const template = templateContainer.content; + if (namespace === "svg" || namespace === "mathml") { + const wrapper = template.firstChild; + while (wrapper.firstChild) { + template.appendChild(wrapper.firstChild); + } + template.removeChild(wrapper); + } + parent.insertBefore(template, anchor); + } + return [ + // first + before ? before.nextSibling : parent.firstChild, + // last + anchor ? anchor.previousSibling : parent.lastChild + ]; + } +}; + +const TRANSITION = "transition"; +const ANIMATION = "animation"; +const vtcKey = Symbol("_vtc"); +const DOMTransitionPropsValidators = { + name: String, + type: String, + css: { + type: Boolean, + default: true + }, + duration: [String, Number, Object], + enterFromClass: String, + enterActiveClass: String, + enterToClass: String, + appearFromClass: String, + appearActiveClass: String, + appearToClass: String, + leaveFromClass: String, + leaveActiveClass: String, + leaveToClass: String +}; +const TransitionPropsValidators = /* @__PURE__ */ shared.extend( + {}, + runtimeCore.BaseTransitionPropsValidators, + DOMTransitionPropsValidators +); +const decorate$1 = (t) => { + t.displayName = "Transition"; + t.props = TransitionPropsValidators; + return t; +}; +const Transition = /* @__PURE__ */ decorate$1( + (props, { slots }) => runtimeCore.h(runtimeCore.BaseTransition, resolveTransitionProps(props), slots) +); +const callHook = (hook, args = []) => { + if (shared.isArray(hook)) { + hook.forEach((h2) => h2(...args)); + } else if (hook) { + hook(...args); + } +}; +const hasExplicitCallback = (hook) => { + return hook ? shared.isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false; +}; +function resolveTransitionProps(rawProps) { + const baseProps = {}; + for (const key in rawProps) { + if (!(key in DOMTransitionPropsValidators)) { + baseProps[key] = rawProps[key]; + } + } + if (rawProps.css === false) { + return baseProps; + } + const { + name = "v", + type, + duration, + enterFromClass = `${name}-enter-from`, + enterActiveClass = `${name}-enter-active`, + enterToClass = `${name}-enter-to`, + appearFromClass = enterFromClass, + appearActiveClass = enterActiveClass, + appearToClass = enterToClass, + leaveFromClass = `${name}-leave-from`, + leaveActiveClass = `${name}-leave-active`, + leaveToClass = `${name}-leave-to` + } = rawProps; + const durations = normalizeDuration(duration); + const enterDuration = durations && durations[0]; + const leaveDuration = durations && durations[1]; + const { + onBeforeEnter, + onEnter, + onEnterCancelled, + onLeave, + onLeaveCancelled, + onBeforeAppear = onBeforeEnter, + onAppear = onEnter, + onAppearCancelled = onEnterCancelled + } = baseProps; + const finishEnter = (el, isAppear, done, isCancelled) => { + el._enterCancelled = isCancelled; + removeTransitionClass(el, isAppear ? appearToClass : enterToClass); + removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass); + done && done(); + }; + const finishLeave = (el, done) => { + el._isLeaving = false; + removeTransitionClass(el, leaveFromClass); + removeTransitionClass(el, leaveToClass); + removeTransitionClass(el, leaveActiveClass); + done && done(); + }; + const makeEnterHook = (isAppear) => { + return (el, done) => { + const hook = isAppear ? onAppear : onEnter; + const resolve = () => finishEnter(el, isAppear, done); + callHook(hook, [el, resolve]); + nextFrame(() => { + removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass); + addTransitionClass(el, isAppear ? appearToClass : enterToClass); + if (!hasExplicitCallback(hook)) { + whenTransitionEnds(el, type, enterDuration, resolve); + } + }); + }; + }; + return shared.extend(baseProps, { + onBeforeEnter(el) { + callHook(onBeforeEnter, [el]); + addTransitionClass(el, enterFromClass); + addTransitionClass(el, enterActiveClass); + }, + onBeforeAppear(el) { + callHook(onBeforeAppear, [el]); + addTransitionClass(el, appearFromClass); + addTransitionClass(el, appearActiveClass); + }, + onEnter: makeEnterHook(false), + onAppear: makeEnterHook(true), + onLeave(el, done) { + el._isLeaving = true; + const resolve = () => finishLeave(el, done); + addTransitionClass(el, leaveFromClass); + if (!el._enterCancelled) { + forceReflow(); + addTransitionClass(el, leaveActiveClass); + } else { + addTransitionClass(el, leaveActiveClass); + forceReflow(); + } + nextFrame(() => { + if (!el._isLeaving) { + return; + } + removeTransitionClass(el, leaveFromClass); + addTransitionClass(el, leaveToClass); + if (!hasExplicitCallback(onLeave)) { + whenTransitionEnds(el, type, leaveDuration, resolve); + } + }); + callHook(onLeave, [el, resolve]); + }, + onEnterCancelled(el) { + finishEnter(el, false, void 0, true); + callHook(onEnterCancelled, [el]); + }, + onAppearCancelled(el) { + finishEnter(el, true, void 0, true); + callHook(onAppearCancelled, [el]); + }, + onLeaveCancelled(el) { + finishLeave(el); + callHook(onLeaveCancelled, [el]); + } + }); +} +function normalizeDuration(duration) { + if (duration == null) { + return null; + } else if (shared.isObject(duration)) { + return [NumberOf(duration.enter), NumberOf(duration.leave)]; + } else { + const n = NumberOf(duration); + return [n, n]; + } +} +function NumberOf(val) { + const res = shared.toNumber(val); + return res; +} +function addTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.add(c)); + (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls); +} +function removeTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.remove(c)); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.delete(cls); + if (!_vtc.size) { + el[vtcKey] = void 0; + } + } +} +function nextFrame(cb) { + requestAnimationFrame(() => { + requestAnimationFrame(cb); + }); +} +let endId = 0; +function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) { + const id = el._endId = ++endId; + const resolveIfNotStale = () => { + if (id === el._endId) { + resolve(); + } + }; + if (explicitTimeout != null) { + return setTimeout(resolveIfNotStale, explicitTimeout); + } + const { type, timeout, propCount } = getTransitionInfo(el, expectedType); + if (!type) { + return resolve(); + } + const endEvent = type + "end"; + let ended = 0; + const end = () => { + el.removeEventListener(endEvent, onEnd); + resolveIfNotStale(); + }; + const onEnd = (e) => { + if (e.target === el && ++ended >= propCount) { + end(); + } + }; + setTimeout(() => { + if (ended < propCount) { + end(); + } + }, timeout + 1); + el.addEventListener(endEvent, onEnd); +} +function getTransitionInfo(el, expectedType) { + const styles = window.getComputedStyle(el); + const getStyleProperties = (key) => (styles[key] || "").split(", "); + const transitionDelays = getStyleProperties(`${TRANSITION}Delay`); + const transitionDurations = getStyleProperties(`${TRANSITION}Duration`); + const transitionTimeout = getTimeout(transitionDelays, transitionDurations); + const animationDelays = getStyleProperties(`${ANIMATION}Delay`); + const animationDurations = getStyleProperties(`${ANIMATION}Duration`); + const animationTimeout = getTimeout(animationDelays, animationDurations); + let type = null; + let timeout = 0; + let propCount = 0; + if (expectedType === TRANSITION) { + if (transitionTimeout > 0) { + type = TRANSITION; + timeout = transitionTimeout; + propCount = transitionDurations.length; + } + } else if (expectedType === ANIMATION) { + if (animationTimeout > 0) { + type = ANIMATION; + timeout = animationTimeout; + propCount = animationDurations.length; + } + } else { + timeout = Math.max(transitionTimeout, animationTimeout); + type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null; + propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0; + } + const hasTransform = type === TRANSITION && /\b(transform|all)(,|$)/.test( + getStyleProperties(`${TRANSITION}Property`).toString() + ); + return { + type, + timeout, + propCount, + hasTransform + }; +} +function getTimeout(delays, durations) { + while (delays.length < durations.length) { + delays = delays.concat(delays); + } + return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i]))); +} +function toMs(s) { + if (s === "auto") return 0; + return Number(s.slice(0, -1).replace(",", ".")) * 1e3; +} +function forceReflow() { + return document.body.offsetHeight; +} + +function patchClass(el, value, isSVG) { + const transitionClasses = el[vtcKey]; + if (transitionClasses) { + value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" "); + } + if (value == null) { + el.removeAttribute("class"); + } else if (isSVG) { + el.setAttribute("class", value); + } else { + el.className = value; + } +} + +const vShowOriginalDisplay = Symbol("_vod"); +const vShowHidden = Symbol("_vsh"); +const vShow = { + beforeMount(el, { value }, { transition }) { + el[vShowOriginalDisplay] = el.style.display === "none" ? "" : el.style.display; + if (transition && value) { + transition.beforeEnter(el); + } else { + setDisplay(el, value); + } + }, + mounted(el, { value }, { transition }) { + if (transition && value) { + transition.enter(el); + } + }, + updated(el, { value, oldValue }, { transition }) { + if (!value === !oldValue) return; + if (transition) { + if (value) { + transition.beforeEnter(el); + setDisplay(el, true); + transition.enter(el); + } else { + transition.leave(el, () => { + setDisplay(el, false); + }); + } + } else { + setDisplay(el, value); + } + }, + beforeUnmount(el, { value }) { + setDisplay(el, value); + } +}; +function setDisplay(el, value) { + el.style.display = value ? el[vShowOriginalDisplay] : "none"; + el[vShowHidden] = !value; +} +function initVShowForSSR() { + vShow.getSSRProps = ({ value }) => { + if (!value) { + return { style: { display: "none" } }; + } + }; +} + +const CSS_VAR_TEXT = Symbol(""); +function useCssVars(getter) { + return; +} + +const displayRE = /(^|;)\s*display\s*:/; +function patchStyle(el, prev, next) { + const style = el.style; + const isCssString = shared.isString(next); + let hasControlledDisplay = false; + if (next && !isCssString) { + if (prev) { + if (!shared.isString(prev)) { + for (const key in prev) { + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } else { + for (const prevStyle of prev.split(";")) { + const key = prevStyle.slice(0, prevStyle.indexOf(":")).trim(); + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } + } + for (const key in next) { + if (key === "display") { + hasControlledDisplay = true; + } + setStyle(style, key, next[key]); + } + } else { + if (isCssString) { + if (prev !== next) { + const cssVarText = style[CSS_VAR_TEXT]; + if (cssVarText) { + next += ";" + cssVarText; + } + style.cssText = next; + hasControlledDisplay = displayRE.test(next); + } + } else if (prev) { + el.removeAttribute("style"); + } + } + if (vShowOriginalDisplay in el) { + el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : ""; + if (el[vShowHidden]) { + style.display = "none"; + } + } +} +const importantRE = /\s*!important$/; +function setStyle(style, name, val) { + if (shared.isArray(val)) { + val.forEach((v) => setStyle(style, name, v)); + } else { + if (val == null) val = ""; + if (name.startsWith("--")) { + style.setProperty(name, val); + } else { + const prefixed = autoPrefix(style, name); + if (importantRE.test(val)) { + style.setProperty( + shared.hyphenate(prefixed), + val.replace(importantRE, ""), + "important" + ); + } else { + style[prefixed] = val; + } + } + } +} +const prefixes = ["Webkit", "Moz", "ms"]; +const prefixCache = {}; +function autoPrefix(style, rawName) { + const cached = prefixCache[rawName]; + if (cached) { + return cached; + } + let name = runtimeCore.camelize(rawName); + if (name !== "filter" && name in style) { + return prefixCache[rawName] = name; + } + name = shared.capitalize(name); + for (let i = 0; i < prefixes.length; i++) { + const prefixed = prefixes[i] + name; + if (prefixed in style) { + return prefixCache[rawName] = prefixed; + } + } + return rawName; +} + +const xlinkNS = "http://www.w3.org/1999/xlink"; +function patchAttr(el, key, value, isSVG, instance, isBoolean = shared.isSpecialBooleanAttr(key)) { + if (isSVG && key.startsWith("xlink:")) { + if (value == null) { + el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); + } else { + el.setAttributeNS(xlinkNS, key, value); + } + } else { + if (value == null || isBoolean && !shared.includeBooleanAttr(value)) { + el.removeAttribute(key); + } else { + el.setAttribute( + key, + isBoolean ? "" : shared.isSymbol(value) ? String(value) : value + ); + } + } +} + +function patchDOMProp(el, key, value, parentComponent, attrName) { + if (key === "innerHTML" || key === "textContent") { + if (value != null) { + el[key] = key === "innerHTML" ? unsafeToTrustedHTML(value) : value; + } + return; + } + const tag = el.tagName; + if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally + !tag.includes("-")) { + const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value; + const newValue = value == null ? ( + // #11647: value should be set as empty string for null and undefined, + // but <input type="checkbox"> should be set as 'on'. + el.type === "checkbox" ? "on" : "" + ) : String(value); + if (oldValue !== newValue || !("_value" in el)) { + el.value = newValue; + } + if (value == null) { + el.removeAttribute(key); + } + el._value = value; + return; + } + let needRemove = false; + if (value === "" || value == null) { + const type = typeof el[key]; + if (type === "boolean") { + value = shared.includeBooleanAttr(value); + } else if (value == null && type === "string") { + value = ""; + needRemove = true; + } else if (type === "number") { + value = 0; + needRemove = true; + } + } + try { + el[key] = value; + } catch (e) { + } + needRemove && el.removeAttribute(attrName || key); +} + +function addEventListener(el, event, handler, options) { + el.addEventListener(event, handler, options); +} +function removeEventListener(el, event, handler, options) { + el.removeEventListener(event, handler, options); +} +const veiKey = Symbol("_vei"); +function patchEvent(el, rawName, prevValue, nextValue, instance = null) { + const invokers = el[veiKey] || (el[veiKey] = {}); + const existingInvoker = invokers[rawName]; + if (nextValue && existingInvoker) { + existingInvoker.value = nextValue; + } else { + const [name, options] = parseName(rawName); + if (nextValue) { + const invoker = invokers[rawName] = createInvoker( + nextValue, + instance + ); + addEventListener(el, name, invoker, options); + } else if (existingInvoker) { + removeEventListener(el, name, existingInvoker, options); + invokers[rawName] = void 0; + } + } +} +const optionsModifierRE = /(?:Once|Passive|Capture)$/; +function parseName(name) { + let options; + if (optionsModifierRE.test(name)) { + options = {}; + let m; + while (m = name.match(optionsModifierRE)) { + name = name.slice(0, name.length - m[0].length); + options[m[0].toLowerCase()] = true; + } + } + const event = name[2] === ":" ? name.slice(3) : shared.hyphenate(name.slice(2)); + return [event, options]; +} +let cachedNow = 0; +const p = /* @__PURE__ */ Promise.resolve(); +const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now()); +function createInvoker(initialValue, instance) { + const invoker = (e) => { + if (!e._vts) { + e._vts = Date.now(); + } else if (e._vts <= invoker.attached) { + return; + } + runtimeCore.callWithAsyncErrorHandling( + patchStopImmediatePropagation(e, invoker.value), + instance, + 5, + [e] + ); + }; + invoker.value = initialValue; + invoker.attached = getNow(); + return invoker; +} +function patchStopImmediatePropagation(e, value) { + if (shared.isArray(value)) { + const originalStop = e.stopImmediatePropagation; + e.stopImmediatePropagation = () => { + originalStop.call(e); + e._stopped = true; + }; + return value.map( + (fn) => (e2) => !e2._stopped && fn && fn(e2) + ); + } else { + return value; + } +} + +const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter +key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123; +const patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => { + const isSVG = namespace === "svg"; + if (key === "class") { + patchClass(el, nextValue, isSVG); + } else if (key === "style") { + patchStyle(el, prevValue, nextValue); + } else if (shared.isOn(key)) { + if (!shared.isModelListener(key)) { + patchEvent(el, key, prevValue, nextValue, parentComponent); + } + } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) { + patchDOMProp(el, key, nextValue); + if (!el.tagName.includes("-") && (key === "value" || key === "checked" || key === "selected")) { + patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value"); + } + } else if ( + // #11081 force set props for possible async custom element + el._isVueCE && (/[A-Z]/.test(key) || !shared.isString(nextValue)) + ) { + patchDOMProp(el, shared.camelize(key), nextValue, parentComponent, key); + } else { + if (key === "true-value") { + el._trueValue = nextValue; + } else if (key === "false-value") { + el._falseValue = nextValue; + } + patchAttr(el, key, nextValue, isSVG); + } +}; +function shouldSetAsProp(el, key, value, isSVG) { + if (isSVG) { + if (key === "innerHTML" || key === "textContent") { + return true; + } + if (key in el && isNativeOn(key) && shared.isFunction(value)) { + return true; + } + return false; + } + if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") { + return false; + } + if (key === "form") { + return false; + } + if (key === "list" && el.tagName === "INPUT") { + return false; + } + if (key === "type" && el.tagName === "TEXTAREA") { + return false; + } + if (key === "width" || key === "height") { + const tag = el.tagName; + if (tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE") { + return false; + } + } + if (isNativeOn(key) && shared.isString(value)) { + return false; + } + return key in el; +} + +const REMOVAL = {}; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineCustomElement(options, extraOptions, _createApp) { + const Comp = runtimeCore.defineComponent(options, extraOptions); + if (shared.isPlainObject(Comp)) shared.extend(Comp, extraOptions); + class VueCustomElement extends VueElement { + constructor(initialProps) { + super(Comp, initialProps, _createApp); + } + } + VueCustomElement.def = Comp; + return VueCustomElement; +} +/*! #__NO_SIDE_EFFECTS__ */ +const defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options, extraOptions) => { + return /* @__PURE__ */ defineCustomElement(options, extraOptions, createSSRApp); +}; +const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class { +}; +class VueElement extends BaseClass { + constructor(_def, _props = {}, _createApp = createApp) { + super(); + this._def = _def; + this._props = _props; + this._createApp = _createApp; + this._isVueCE = true; + /** + * @internal + */ + this._instance = null; + /** + * @internal + */ + this._app = null; + /** + * @internal + */ + this._nonce = this._def.nonce; + this._connected = false; + this._resolved = false; + this._numberProps = null; + this._styleChildren = /* @__PURE__ */ new WeakSet(); + this._ob = null; + if (this.shadowRoot && _createApp !== createApp) { + this._root = this.shadowRoot; + } else { + if (_def.shadowRoot !== false) { + this.attachShadow({ mode: "open" }); + this._root = this.shadowRoot; + } else { + this._root = this; + } + } + } + connectedCallback() { + if (!this.isConnected) return; + if (!this.shadowRoot && !this._resolved) { + this._parseSlots(); + } + this._connected = true; + let parent = this; + while (parent = parent && (parent.parentNode || parent.host)) { + if (parent instanceof VueElement) { + this._parent = parent; + break; + } + } + if (!this._instance) { + if (this._resolved) { + this._mount(this._def); + } else { + if (parent && parent._pendingResolve) { + this._pendingResolve = parent._pendingResolve.then(() => { + this._pendingResolve = void 0; + this._resolveDef(); + }); + } else { + this._resolveDef(); + } + } + } + } + _setParent(parent = this._parent) { + if (parent) { + this._instance.parent = parent._instance; + this._inheritParentContext(parent); + } + } + _inheritParentContext(parent = this._parent) { + if (parent && this._app) { + Object.setPrototypeOf( + this._app._context.provides, + parent._instance.provides + ); + } + } + disconnectedCallback() { + this._connected = false; + runtimeCore.nextTick(() => { + if (!this._connected) { + if (this._ob) { + this._ob.disconnect(); + this._ob = null; + } + this._app && this._app.unmount(); + if (this._instance) this._instance.ce = void 0; + this._app = this._instance = null; + } + }); + } + /** + * resolve inner component definition (handle possible async component) + */ + _resolveDef() { + if (this._pendingResolve) { + return; + } + for (let i = 0; i < this.attributes.length; i++) { + this._setAttr(this.attributes[i].name); + } + this._ob = new MutationObserver((mutations) => { + for (const m of mutations) { + this._setAttr(m.attributeName); + } + }); + this._ob.observe(this, { attributes: true }); + const resolve = (def, isAsync = false) => { + this._resolved = true; + this._pendingResolve = void 0; + const { props, styles } = def; + let numberProps; + if (props && !shared.isArray(props)) { + for (const key in props) { + const opt = props[key]; + if (opt === Number || opt && opt.type === Number) { + if (key in this._props) { + this._props[key] = shared.toNumber(this._props[key]); + } + (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[shared.camelize(key)] = true; + } + } + } + this._numberProps = numberProps; + this._resolveProps(def); + if (this.shadowRoot) { + this._applyStyles(styles); + } + this._mount(def); + }; + const asyncDef = this._def.__asyncLoader; + if (asyncDef) { + this._pendingResolve = asyncDef().then((def) => { + def.configureApp = this._def.configureApp; + resolve(this._def = def, true); + }); + } else { + resolve(this._def); + } + } + _mount(def) { + this._app = this._createApp(def); + this._inheritParentContext(); + if (def.configureApp) { + def.configureApp(this._app); + } + this._app._ceVNode = this._createVNode(); + this._app.mount(this._root); + const exposed = this._instance && this._instance.exposed; + if (!exposed) return; + for (const key in exposed) { + if (!shared.hasOwn(this, key)) { + Object.defineProperty(this, key, { + // unwrap ref to be consistent with public instance behavior + get: () => runtimeCore.unref(exposed[key]) + }); + } + } + } + _resolveProps(def) { + const { props } = def; + const declaredPropKeys = shared.isArray(props) ? props : Object.keys(props || {}); + for (const key of Object.keys(this)) { + if (key[0] !== "_" && declaredPropKeys.includes(key)) { + this._setProp(key, this[key]); + } + } + for (const key of declaredPropKeys.map(shared.camelize)) { + Object.defineProperty(this, key, { + get() { + return this._getProp(key); + }, + set(val) { + this._setProp(key, val, true, true); + } + }); + } + } + _setAttr(key) { + if (key.startsWith("data-v-")) return; + const has = this.hasAttribute(key); + let value = has ? this.getAttribute(key) : REMOVAL; + const camelKey = shared.camelize(key); + if (has && this._numberProps && this._numberProps[camelKey]) { + value = shared.toNumber(value); + } + this._setProp(camelKey, value, false, true); + } + /** + * @internal + */ + _getProp(key) { + return this._props[key]; + } + /** + * @internal + */ + _setProp(key, val, shouldReflect = true, shouldUpdate = false) { + if (val !== this._props[key]) { + if (val === REMOVAL) { + delete this._props[key]; + } else { + this._props[key] = val; + if (key === "key" && this._app) { + this._app._ceVNode.key = val; + } + } + if (shouldUpdate && this._instance) { + this._update(); + } + if (shouldReflect) { + const ob = this._ob; + ob && ob.disconnect(); + if (val === true) { + this.setAttribute(shared.hyphenate(key), ""); + } else if (typeof val === "string" || typeof val === "number") { + this.setAttribute(shared.hyphenate(key), val + ""); + } else if (!val) { + this.removeAttribute(shared.hyphenate(key)); + } + ob && ob.observe(this, { attributes: true }); + } + } + } + _update() { + const vnode = this._createVNode(); + if (this._app) vnode.appContext = this._app._context; + render(vnode, this._root); + } + _createVNode() { + const baseProps = {}; + if (!this.shadowRoot) { + baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this); + } + const vnode = runtimeCore.createVNode(this._def, shared.extend(baseProps, this._props)); + if (!this._instance) { + vnode.ce = (instance) => { + this._instance = instance; + instance.ce = this; + instance.isCE = true; + const dispatch = (event, args) => { + this.dispatchEvent( + new CustomEvent( + event, + shared.isPlainObject(args[0]) ? shared.extend({ detail: args }, args[0]) : { detail: args } + ) + ); + }; + instance.emit = (event, ...args) => { + dispatch(event, args); + if (shared.hyphenate(event) !== event) { + dispatch(shared.hyphenate(event), args); + } + }; + this._setParent(); + }; + } + return vnode; + } + _applyStyles(styles, owner) { + if (!styles) return; + if (owner) { + if (owner === this._def || this._styleChildren.has(owner)) { + return; + } + this._styleChildren.add(owner); + } + const nonce = this._nonce; + for (let i = styles.length - 1; i >= 0; i--) { + const s = document.createElement("style"); + if (nonce) s.setAttribute("nonce", nonce); + s.textContent = styles[i]; + this.shadowRoot.prepend(s); + } + } + /** + * Only called when shadowRoot is false + */ + _parseSlots() { + const slots = this._slots = {}; + let n; + while (n = this.firstChild) { + const slotName = n.nodeType === 1 && n.getAttribute("slot") || "default"; + (slots[slotName] || (slots[slotName] = [])).push(n); + this.removeChild(n); + } + } + /** + * Only called when shadowRoot is false + */ + _renderSlots() { + const outlets = (this._teleportTarget || this).querySelectorAll("slot"); + const scopeId = this._instance.type.__scopeId; + for (let i = 0; i < outlets.length; i++) { + const o = outlets[i]; + const slotName = o.getAttribute("name") || "default"; + const content = this._slots[slotName]; + const parent = o.parentNode; + if (content) { + for (const n of content) { + if (scopeId && n.nodeType === 1) { + const id = scopeId + "-s"; + const walker = document.createTreeWalker(n, 1); + n.setAttribute(id, ""); + let child; + while (child = walker.nextNode()) { + child.setAttribute(id, ""); + } + } + parent.insertBefore(n, o); + } + } else { + while (o.firstChild) parent.insertBefore(o.firstChild, o); + } + parent.removeChild(o); + } + } + /** + * @internal + */ + _injectChildStyle(comp) { + this._applyStyles(comp.styles, comp); + } + /** + * @internal + */ + _removeChildStyle(comp) { + } +} +function useHost(caller) { + const instance = runtimeCore.getCurrentInstance(); + const el = instance && instance.ce; + if (el) { + return el; + } + return null; +} +function useShadowRoot() { + const el = useHost(); + return el && el.shadowRoot; +} + +function useCssModule(name = "$style") { + { + const instance = runtimeCore.getCurrentInstance(); + if (!instance) { + return shared.EMPTY_OBJ; + } + const modules = instance.type.__cssModules; + if (!modules) { + return shared.EMPTY_OBJ; + } + const mod = modules[name]; + if (!mod) { + return shared.EMPTY_OBJ; + } + return mod; + } +} + +const positionMap = /* @__PURE__ */ new WeakMap(); +const newPositionMap = /* @__PURE__ */ new WeakMap(); +const moveCbKey = Symbol("_moveCb"); +const enterCbKey = Symbol("_enterCb"); +const decorate = (t) => { + delete t.props.mode; + return t; +}; +const TransitionGroupImpl = /* @__PURE__ */ decorate({ + name: "TransitionGroup", + props: /* @__PURE__ */ shared.extend({}, TransitionPropsValidators, { + tag: String, + moveClass: String + }), + setup(props, { slots }) { + const instance = runtimeCore.getCurrentInstance(); + const state = runtimeCore.useTransitionState(); + let prevChildren; + let children; + runtimeCore.onUpdated(() => { + if (!prevChildren.length) { + return; + } + const moveClass = props.moveClass || `${props.name || "v"}-move`; + if (!hasCSSTransform( + prevChildren[0].el, + instance.vnode.el, + moveClass + )) { + prevChildren = []; + return; + } + prevChildren.forEach(callPendingCbs); + prevChildren.forEach(recordPosition); + const movedChildren = prevChildren.filter(applyTranslation); + forceReflow(); + movedChildren.forEach((c) => { + const el = c.el; + const style = el.style; + addTransitionClass(el, moveClass); + style.transform = style.webkitTransform = style.transitionDuration = ""; + const cb = el[moveCbKey] = (e) => { + if (e && e.target !== el) { + return; + } + if (!e || /transform$/.test(e.propertyName)) { + el.removeEventListener("transitionend", cb); + el[moveCbKey] = null; + removeTransitionClass(el, moveClass); + } + }; + el.addEventListener("transitionend", cb); + }); + prevChildren = []; + }); + return () => { + const rawProps = runtimeCore.toRaw(props); + const cssTransitionProps = resolveTransitionProps(rawProps); + let tag = rawProps.tag || runtimeCore.Fragment; + prevChildren = []; + if (children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.el && child.el instanceof Element) { + prevChildren.push(child); + runtimeCore.setTransitionHooks( + child, + runtimeCore.resolveTransitionHooks( + child, + cssTransitionProps, + state, + instance + ) + ); + positionMap.set( + child, + child.el.getBoundingClientRect() + ); + } + } + } + children = slots.default ? runtimeCore.getTransitionRawChildren(slots.default()) : []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.key != null) { + runtimeCore.setTransitionHooks( + child, + runtimeCore.resolveTransitionHooks(child, cssTransitionProps, state, instance) + ); + } + } + return runtimeCore.createVNode(tag, null, children); + }; + } +}); +const TransitionGroup = TransitionGroupImpl; +function callPendingCbs(c) { + const el = c.el; + if (el[moveCbKey]) { + el[moveCbKey](); + } + if (el[enterCbKey]) { + el[enterCbKey](); + } +} +function recordPosition(c) { + newPositionMap.set(c, c.el.getBoundingClientRect()); +} +function applyTranslation(c) { + const oldPos = positionMap.get(c); + const newPos = newPositionMap.get(c); + const dx = oldPos.left - newPos.left; + const dy = oldPos.top - newPos.top; + if (dx || dy) { + const s = c.el.style; + s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`; + s.transitionDuration = "0s"; + return c; + } +} +function hasCSSTransform(el, root, moveClass) { + const clone = el.cloneNode(); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.forEach((cls) => { + cls.split(/\s+/).forEach((c) => c && clone.classList.remove(c)); + }); + } + moveClass.split(/\s+/).forEach((c) => c && clone.classList.add(c)); + clone.style.display = "none"; + const container = root.nodeType === 1 ? root : root.parentNode; + container.appendChild(clone); + const { hasTransform } = getTransitionInfo(clone); + container.removeChild(clone); + return hasTransform; +} + +const getModelAssigner = (vnode) => { + const fn = vnode.props["onUpdate:modelValue"] || false; + return shared.isArray(fn) ? (value) => shared.invokeArrayFns(fn, value) : fn; +}; +function onCompositionStart(e) { + e.target.composing = true; +} +function onCompositionEnd(e) { + const target = e.target; + if (target.composing) { + target.composing = false; + target.dispatchEvent(new Event("input")); + } +} +const assignKey = Symbol("_assign"); +const vModelText = { + created(el, { modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + const castToNumber = number || vnode.props && vnode.props.type === "number"; + addEventListener(el, lazy ? "change" : "input", (e) => { + if (e.target.composing) return; + let domValue = el.value; + if (trim) { + domValue = domValue.trim(); + } + if (castToNumber) { + domValue = shared.looseToNumber(domValue); + } + el[assignKey](domValue); + }); + if (trim) { + addEventListener(el, "change", () => { + el.value = el.value.trim(); + }); + } + if (!lazy) { + addEventListener(el, "compositionstart", onCompositionStart); + addEventListener(el, "compositionend", onCompositionEnd); + addEventListener(el, "change", onCompositionEnd); + } + }, + // set value on mounted so it's after min/max for type="range" + mounted(el, { value }) { + el.value = value == null ? "" : value; + }, + beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (el.composing) return; + const elValue = (number || el.type === "number") && !/^0\d/.test(el.value) ? shared.looseToNumber(el.value) : el.value; + const newValue = value == null ? "" : value; + if (elValue === newValue) { + return; + } + if (document.activeElement === el && el.type !== "range") { + if (lazy && value === oldValue) { + return; + } + if (trim && el.value.trim() === newValue) { + return; + } + } + el.value = newValue; + } +}; +const vModelCheckbox = { + // #4096 array checkboxes need to be deep traversed + deep: true, + created(el, _, vnode) { + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + const modelValue = el._modelValue; + const elementValue = getValue(el); + const checked = el.checked; + const assign = el[assignKey]; + if (shared.isArray(modelValue)) { + const index = shared.looseIndexOf(modelValue, elementValue); + const found = index !== -1; + if (checked && !found) { + assign(modelValue.concat(elementValue)); + } else if (!checked && found) { + const filtered = [...modelValue]; + filtered.splice(index, 1); + assign(filtered); + } + } else if (shared.isSet(modelValue)) { + const cloned = new Set(modelValue); + if (checked) { + cloned.add(elementValue); + } else { + cloned.delete(elementValue); + } + assign(cloned); + } else { + assign(getCheckboxValue(el, checked)); + } + }); + }, + // set initial checked on mount to wait for true-value/false-value + mounted: setChecked, + beforeUpdate(el, binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + setChecked(el, binding, vnode); + } +}; +function setChecked(el, { value, oldValue }, vnode) { + el._modelValue = value; + let checked; + if (shared.isArray(value)) { + checked = shared.looseIndexOf(value, vnode.props.value) > -1; + } else if (shared.isSet(value)) { + checked = value.has(vnode.props.value); + } else { + if (value === oldValue) return; + checked = shared.looseEqual(value, getCheckboxValue(el, true)); + } + if (el.checked !== checked) { + el.checked = checked; + } +} +const vModelRadio = { + created(el, { value }, vnode) { + el.checked = shared.looseEqual(value, vnode.props.value); + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + el[assignKey](getValue(el)); + }); + }, + beforeUpdate(el, { value, oldValue }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (value !== oldValue) { + el.checked = shared.looseEqual(value, vnode.props.value); + } + } +}; +const vModelSelect = { + // <select multiple> value need to be deep traversed + deep: true, + created(el, { value, modifiers: { number } }, vnode) { + const isSetModel = shared.isSet(value); + addEventListener(el, "change", () => { + const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map( + (o) => number ? shared.looseToNumber(getValue(o)) : getValue(o) + ); + el[assignKey]( + el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0] + ); + el._assigning = true; + runtimeCore.nextTick(() => { + el._assigning = false; + }); + }); + el[assignKey] = getModelAssigner(vnode); + }, + // set value in mounted & updated because <select> relies on its children + // <option>s. + mounted(el, { value }) { + setSelected(el, value); + }, + beforeUpdate(el, _binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + }, + updated(el, { value }) { + if (!el._assigning) { + setSelected(el, value); + } + } +}; +function setSelected(el, value) { + const isMultiple = el.multiple; + const isArrayValue = shared.isArray(value); + if (isMultiple && !isArrayValue && !shared.isSet(value)) { + return; + } + for (let i = 0, l = el.options.length; i < l; i++) { + const option = el.options[i]; + const optionValue = getValue(option); + if (isMultiple) { + if (isArrayValue) { + const optionType = typeof optionValue; + if (optionType === "string" || optionType === "number") { + option.selected = value.some((v) => String(v) === String(optionValue)); + } else { + option.selected = shared.looseIndexOf(value, optionValue) > -1; + } + } else { + option.selected = value.has(optionValue); + } + } else if (shared.looseEqual(getValue(option), value)) { + if (el.selectedIndex !== i) el.selectedIndex = i; + return; + } + } + if (!isMultiple && el.selectedIndex !== -1) { + el.selectedIndex = -1; + } +} +function getValue(el) { + return "_value" in el ? el._value : el.value; +} +function getCheckboxValue(el, checked) { + const key = checked ? "_trueValue" : "_falseValue"; + return key in el ? el[key] : checked; +} +const vModelDynamic = { + created(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "created"); + }, + mounted(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "mounted"); + }, + beforeUpdate(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "beforeUpdate"); + }, + updated(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "updated"); + } +}; +function resolveDynamicModel(tagName, type) { + switch (tagName) { + case "SELECT": + return vModelSelect; + case "TEXTAREA": + return vModelText; + default: + switch (type) { + case "checkbox": + return vModelCheckbox; + case "radio": + return vModelRadio; + default: + return vModelText; + } + } +} +function callModelHook(el, binding, vnode, prevVNode, hook) { + const modelToUse = resolveDynamicModel( + el.tagName, + vnode.props && vnode.props.type + ); + const fn = modelToUse[hook]; + fn && fn(el, binding, vnode, prevVNode); +} +function initVModelForSSR() { + vModelText.getSSRProps = ({ value }) => ({ value }); + vModelRadio.getSSRProps = ({ value }, vnode) => { + if (vnode.props && shared.looseEqual(vnode.props.value, value)) { + return { checked: true }; + } + }; + vModelCheckbox.getSSRProps = ({ value }, vnode) => { + if (shared.isArray(value)) { + if (vnode.props && shared.looseIndexOf(value, vnode.props.value) > -1) { + return { checked: true }; + } + } else if (shared.isSet(value)) { + if (vnode.props && value.has(vnode.props.value)) { + return { checked: true }; + } + } else if (value) { + return { checked: true }; + } + }; + vModelDynamic.getSSRProps = (binding, vnode) => { + if (typeof vnode.type !== "string") { + return; + } + const modelToUse = resolveDynamicModel( + // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase + vnode.type.toUpperCase(), + vnode.props && vnode.props.type + ); + if (modelToUse.getSSRProps) { + return modelToUse.getSSRProps(binding, vnode); + } + }; +} + +const systemModifiers = ["ctrl", "shift", "alt", "meta"]; +const modifierGuards = { + stop: (e) => e.stopPropagation(), + prevent: (e) => e.preventDefault(), + self: (e) => e.target !== e.currentTarget, + ctrl: (e) => !e.ctrlKey, + shift: (e) => !e.shiftKey, + alt: (e) => !e.altKey, + meta: (e) => !e.metaKey, + left: (e) => "button" in e && e.button !== 0, + middle: (e) => "button" in e && e.button !== 1, + right: (e) => "button" in e && e.button !== 2, + exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m)) +}; +const withModifiers = (fn, modifiers) => { + const cache = fn._withMods || (fn._withMods = {}); + const cacheKey = modifiers.join("."); + return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => { + for (let i = 0; i < modifiers.length; i++) { + const guard = modifierGuards[modifiers[i]]; + if (guard && guard(event, modifiers)) return; + } + return fn(event, ...args); + }); +}; +const keyNames = { + esc: "escape", + space: " ", + up: "arrow-up", + left: "arrow-left", + right: "arrow-right", + down: "arrow-down", + delete: "backspace" +}; +const withKeys = (fn, modifiers) => { + const cache = fn._withKeys || (fn._withKeys = {}); + const cacheKey = modifiers.join("."); + return cache[cacheKey] || (cache[cacheKey] = (event) => { + if (!("key" in event)) { + return; + } + const eventKey = shared.hyphenate(event.key); + if (modifiers.some( + (k) => k === eventKey || keyNames[k] === eventKey + )) { + return fn(event); + } + }); +}; + +const rendererOptions = /* @__PURE__ */ shared.extend({ patchProp }, nodeOps); +let renderer; +let enabledHydration = false; +function ensureRenderer() { + return renderer || (renderer = runtimeCore.createRenderer(rendererOptions)); +} +function ensureHydrationRenderer() { + renderer = enabledHydration ? renderer : runtimeCore.createHydrationRenderer(rendererOptions); + enabledHydration = true; + return renderer; +} +const render = (...args) => { + ensureRenderer().render(...args); +}; +const hydrate = (...args) => { + ensureHydrationRenderer().hydrate(...args); +}; +const createApp = (...args) => { + const app = ensureRenderer().createApp(...args); + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (!container) return; + const component = app._component; + if (!shared.isFunction(component) && !component.render && !component.template) { + component.template = container.innerHTML; + } + if (container.nodeType === 1) { + container.textContent = ""; + } + const proxy = mount(container, false, resolveRootNamespace(container)); + if (container instanceof Element) { + container.removeAttribute("v-cloak"); + container.setAttribute("data-v-app", ""); + } + return proxy; + }; + return app; +}; +const createSSRApp = (...args) => { + const app = ensureHydrationRenderer().createApp(...args); + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (container) { + return mount(container, true, resolveRootNamespace(container)); + } + }; + return app; +}; +function resolveRootNamespace(container) { + if (container instanceof SVGElement) { + return "svg"; + } + if (typeof MathMLElement === "function" && container instanceof MathMLElement) { + return "mathml"; + } +} +function normalizeContainer(container) { + if (shared.isString(container)) { + const res = document.querySelector(container); + return res; + } + return container; +} +let ssrDirectiveInitialized = false; +const initDirectivesForSSR = () => { + if (!ssrDirectiveInitialized) { + ssrDirectiveInitialized = true; + initVModelForSSR(); + initVShowForSSR(); + } +} ; + +exports.Transition = Transition; +exports.TransitionGroup = TransitionGroup; +exports.VueElement = VueElement; +exports.createApp = createApp; +exports.createSSRApp = createSSRApp; +exports.defineCustomElement = defineCustomElement; +exports.defineSSRCustomElement = defineSSRCustomElement; +exports.hydrate = hydrate; +exports.initDirectivesForSSR = initDirectivesForSSR; +exports.render = render; +exports.useCssModule = useCssModule; +exports.useCssVars = useCssVars; +exports.useHost = useHost; +exports.useShadowRoot = useShadowRoot; +exports.vModelCheckbox = vModelCheckbox; +exports.vModelDynamic = vModelDynamic; +exports.vModelRadio = vModelRadio; +exports.vModelSelect = vModelSelect; +exports.vModelText = vModelText; +exports.vShow = vShow; +exports.withKeys = withKeys; +exports.withModifiers = withModifiers; +Object.keys(runtimeCore).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = runtimeCore[k]; +}); diff --git a/node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts b/node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts new file mode 100644 index 0000000..c60462b --- /dev/null +++ b/node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts @@ -0,0 +1,1397 @@ +import { BaseTransitionProps, FunctionalComponent, ObjectDirective, Directive, SetupContext, RenderFunction, ComponentOptions, App, ComponentCustomElementInterface, ConcreteComponent, CreateAppFunction, ComponentObjectPropsOptions, EmitsOptions, ComputedOptions, MethodOptions, ComponentOptionsMixin, ComponentInjectOptions, SlotsType, Component, ComponentProvideOptions, ExtractPropTypes, EmitsToProps, ComponentOptionsBase, CreateComponentPublicInstanceWithMixins, ComponentPublicInstance, DefineComponent, VNodeRef, RootRenderFunction, RootHydrateFunction } from '@vue/runtime-core'; +export * from '@vue/runtime-core'; +import * as CSS from 'csstype'; + +declare const TRANSITION = "transition"; +declare const ANIMATION = "animation"; +type AnimationTypes = typeof TRANSITION | typeof ANIMATION; +export interface TransitionProps extends BaseTransitionProps<Element> { + name?: string; + type?: AnimationTypes; + css?: boolean; + duration?: number | { + enter: number; + leave: number; + }; + enterFromClass?: string; + enterActiveClass?: string; + enterToClass?: string; + appearFromClass?: string; + appearActiveClass?: string; + appearToClass?: string; + leaveFromClass?: string; + leaveActiveClass?: string; + leaveToClass?: string; +} +/** + * DOM Transition is a higher-order-component based on the platform-agnostic + * base Transition component, with DOM-specific logic. + */ +export declare const Transition: FunctionalComponent<TransitionProps>; + +export type TransitionGroupProps = Omit<TransitionProps, 'mode'> & { + tag?: string; + moveClass?: string; +}; +export declare const TransitionGroup: { + new (): { + $props: TransitionGroupProps; + }; +}; + +declare const vShowOriginalDisplay: unique symbol; +declare const vShowHidden: unique symbol; +interface VShowElement extends HTMLElement { + [vShowOriginalDisplay]: string; + [vShowHidden]: boolean; +} +export declare const vShow: ObjectDirective<VShowElement> & { + name?: 'show'; +}; + +declare const systemModifiers: readonly ["ctrl", "shift", "alt", "meta"]; +type SystemModifiers = (typeof systemModifiers)[number]; +type CompatModifiers = keyof typeof keyNames; +type VOnModifiers = SystemModifiers | ModifierGuards | CompatModifiers; +type ModifierGuards = 'shift' | 'ctrl' | 'alt' | 'meta' | 'left' | 'right' | 'stop' | 'prevent' | 'self' | 'middle' | 'exact'; +/** + * @private + */ +export declare const withModifiers: <T extends (event: Event, ...args: unknown[]) => any>(fn: T & { + _withMods?: { + [key: string]: T; + }; +}, modifiers: VOnModifiers[]) => T; +declare const keyNames: Record<'esc' | 'space' | 'up' | 'left' | 'right' | 'down' | 'delete', string>; +/** + * @private + */ +export declare const withKeys: <T extends (event: KeyboardEvent) => any>(fn: T & { + _withKeys?: { + [k: string]: T; + }; +}, modifiers: string[]) => T; +type VOnDirective = Directive<any, any, VOnModifiers>; + +type AssignerFn = (value: any) => void; +declare const assignKey: unique symbol; +type ModelDirective<T, Modifiers extends string = string> = ObjectDirective<T & { + [assignKey]: AssignerFn; + _assigning?: boolean; +}, any, Modifiers>; +export declare const vModelText: ModelDirective<HTMLInputElement | HTMLTextAreaElement, 'trim' | 'number' | 'lazy'>; +export declare const vModelCheckbox: ModelDirective<HTMLInputElement>; +export declare const vModelRadio: ModelDirective<HTMLInputElement>; +export declare const vModelSelect: ModelDirective<HTMLSelectElement, 'number'>; +export declare const vModelDynamic: ObjectDirective<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>; +type VModelDirective = typeof vModelText | typeof vModelCheckbox | typeof vModelSelect | typeof vModelRadio | typeof vModelDynamic; + +export type VueElementConstructor<P = {}> = { + new (initialProps?: Record<string, any>): VueElement & P; +}; +export interface CustomElementOptions { + styles?: string[]; + shadowRoot?: boolean; + nonce?: string; + configureApp?: (app: App) => void; +} +export declare function defineCustomElement<Props, RawBindings = object>(setup: (props: Props, ctx: SetupContext) => RawBindings | RenderFunction, options?: Pick<ComponentOptions, 'name' | 'inheritAttrs' | 'emits'> & CustomElementOptions & { + props?: (keyof Props)[]; +}): VueElementConstructor<Props>; +export declare function defineCustomElement<Props, RawBindings = object>(setup: (props: Props, ctx: SetupContext) => RawBindings | RenderFunction, options?: Pick<ComponentOptions, 'name' | 'inheritAttrs' | 'emits'> & CustomElementOptions & { + props?: ComponentObjectPropsOptions<Props>; +}): VueElementConstructor<Props>; +export declare function defineCustomElement<RuntimePropsOptions extends ComponentObjectPropsOptions = ComponentObjectPropsOptions, PropsKeys extends string = string, RuntimeEmitsOptions extends EmitsOptions = {}, EmitsKeys extends string = string, Data = {}, SetupBindings = {}, Computed extends ComputedOptions = {}, Methods extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, InjectOptions extends ComponentInjectOptions = {}, InjectKeys extends string = string, Slots extends SlotsType = {}, LocalComponents extends Record<string, Component> = {}, Directives extends Record<string, Directive> = {}, Exposed extends string = string, Provide extends ComponentProvideOptions = ComponentProvideOptions, InferredProps = string extends PropsKeys ? ComponentObjectPropsOptions extends RuntimePropsOptions ? {} : ExtractPropTypes<RuntimePropsOptions> : { + [key in PropsKeys]?: any; +}, ResolvedProps = InferredProps & EmitsToProps<RuntimeEmitsOptions>>(options: CustomElementOptions & { + props?: (RuntimePropsOptions & ThisType<void>) | PropsKeys[]; +} & ComponentOptionsBase<ResolvedProps, SetupBindings, Data, Computed, Methods, Mixin, Extends, RuntimeEmitsOptions, EmitsKeys, {}, // Defaults +InjectOptions, InjectKeys, Slots, LocalComponents, Directives, Exposed, Provide> & ThisType<CreateComponentPublicInstanceWithMixins<Readonly<ResolvedProps>, SetupBindings, Data, Computed, Methods, Mixin, Extends, RuntimeEmitsOptions, EmitsKeys, {}, false, InjectOptions, Slots, LocalComponents, Directives, Exposed>>, extraOptions?: CustomElementOptions): VueElementConstructor<ResolvedProps>; +export declare function defineCustomElement<T extends { + new (...args: any[]): ComponentPublicInstance<any>; +}>(options: T, extraOptions?: CustomElementOptions): VueElementConstructor<T extends DefineComponent<infer P, any, any, any> ? P : unknown>; +/*! #__NO_SIDE_EFFECTS__ */ +export declare const defineSSRCustomElement: typeof defineCustomElement; +declare const BaseClass: typeof HTMLElement; +type InnerComponentDef = ConcreteComponent & CustomElementOptions; +export declare class VueElement extends BaseClass implements ComponentCustomElementInterface { + /** + * Component def - note this may be an AsyncWrapper, and this._def will + * be overwritten by the inner component when resolved. + */ + private _def; + private _props; + private _createApp; + _isVueCE: boolean; + private _connected; + private _resolved; + private _numberProps; + private _styleChildren; + private _pendingResolve; + private _parent; + /** + * dev only + */ + private _styles?; + /** + * dev only + */ + private _childStyles?; + private _ob?; + private _slots?; + constructor( + /** + * Component def - note this may be an AsyncWrapper, and this._def will + * be overwritten by the inner component when resolved. + */ + _def: InnerComponentDef, _props?: Record<string, any>, _createApp?: CreateAppFunction<Element>); + connectedCallback(): void; + private _setParent; + private _inheritParentContext; + disconnectedCallback(): void; + /** + * resolve inner component definition (handle possible async component) + */ + private _resolveDef; + private _mount; + private _resolveProps; + protected _setAttr(key: string): void; + private _update; + private _createVNode; + private _applyStyles; + /** + * Only called when shadowRoot is false + */ + private _parseSlots; + /** + * Only called when shadowRoot is false + */ + private _renderSlots; +} +export declare function useHost(caller?: string): VueElement | null; +/** + * Retrieve the shadowRoot of the current custom element. Only usable in setup() + * of a `defineCustomElement` component. + */ +export declare function useShadowRoot(): ShadowRoot | null; + +export declare function useCssModule(name?: string): Record<string, string>; + +/** + * Runtime helper for SFC's CSS variable injection feature. + * @private + */ +export declare function useCssVars(getter: (ctx: any) => Record<string, unknown>): void; + +export interface CSSProperties extends CSS.Properties<string | number>, CSS.PropertiesHyphen<string | number> { + /** + * The index signature was removed to enable closed typing for style + * using CSSType. You're able to use type assertion or module augmentation + * to add properties or an index signature of your own. + * + * For examples and more information, visit: + * https://github.com/frenic/csstype#what-should-i-do-when-i-get-type-errors + */ + [v: `--${string}`]: string | number | undefined; +} +type Booleanish = boolean | 'true' | 'false'; +type Numberish = number | string; +export interface AriaAttributes { + /** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */ + 'aria-activedescendant'?: string; + /** Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. */ + 'aria-atomic'?: Booleanish; + /** + * Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be + * presented if they are made. + */ + 'aria-autocomplete'?: 'none' | 'inline' | 'list' | 'both'; + /** Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. */ + 'aria-busy'?: Booleanish; + /** + * Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. + * @see aria-pressed @see aria-selected. + */ + 'aria-checked'?: Booleanish | 'mixed'; + /** + * Defines the total number of columns in a table, grid, or treegrid. + * @see aria-colindex. + */ + 'aria-colcount'?: Numberish; + /** + * Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. + * @see aria-colcount @see aria-colspan. + */ + 'aria-colindex'?: Numberish; + /** + * Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. + * @see aria-colindex @see aria-rowspan. + */ + 'aria-colspan'?: Numberish; + /** + * Identifies the element (or elements) whose contents or presence are controlled by the current element. + * @see aria-owns. + */ + 'aria-controls'?: string; + /** Indicates the element that represents the current item within a container or set of related elements. */ + 'aria-current'?: Booleanish | 'page' | 'step' | 'location' | 'date' | 'time'; + /** + * Identifies the element (or elements) that describes the object. + * @see aria-labelledby + */ + 'aria-describedby'?: string; + /** + * Identifies the element that provides a detailed, extended description for the object. + * @see aria-describedby. + */ + 'aria-details'?: string; + /** + * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable. + * @see aria-hidden @see aria-readonly. + */ + 'aria-disabled'?: Booleanish; + /** + * Indicates what functions can be performed when a dragged object is released on the drop target. + * @deprecated in ARIA 1.1 + */ + 'aria-dropeffect'?: 'none' | 'copy' | 'execute' | 'link' | 'move' | 'popup'; + /** + * Identifies the element that provides an error message for the object. + * @see aria-invalid @see aria-describedby. + */ + 'aria-errormessage'?: string; + /** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */ + 'aria-expanded'?: Booleanish; + /** + * Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, + * allows assistive technology to override the general default of reading in document source order. + */ + 'aria-flowto'?: string; + /** + * Indicates an element's "grabbed" state in a drag-and-drop operation. + * @deprecated in ARIA 1.1 + */ + 'aria-grabbed'?: Booleanish; + /** Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. */ + 'aria-haspopup'?: Booleanish | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog'; + /** + * Indicates whether the element is exposed to an accessibility API. + * @see aria-disabled. + */ + 'aria-hidden'?: Booleanish; + /** + * Indicates the entered value does not conform to the format expected by the application. + * @see aria-errormessage. + */ + 'aria-invalid'?: Booleanish | 'grammar' | 'spelling'; + /** Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. */ + 'aria-keyshortcuts'?: string; + /** + * Defines a string value that labels the current element. + * @see aria-labelledby. + */ + 'aria-label'?: string; + /** + * Identifies the element (or elements) that labels the current element. + * @see aria-describedby. + */ + 'aria-labelledby'?: string; + /** Defines the hierarchical level of an element within a structure. */ + 'aria-level'?: Numberish; + /** Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. */ + 'aria-live'?: 'off' | 'assertive' | 'polite'; + /** Indicates whether an element is modal when displayed. */ + 'aria-modal'?: Booleanish; + /** Indicates whether a text box accepts multiple lines of input or only a single line. */ + 'aria-multiline'?: Booleanish; + /** Indicates that the user may select more than one item from the current selectable descendants. */ + 'aria-multiselectable'?: Booleanish; + /** Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. */ + 'aria-orientation'?: 'horizontal' | 'vertical'; + /** + * Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship + * between DOM elements where the DOM hierarchy cannot be used to represent the relationship. + * @see aria-controls. + */ + 'aria-owns'?: string; + /** + * Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. + * A hint could be a sample value or a brief description of the expected format. + */ + 'aria-placeholder'?: string; + /** + * Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. + * @see aria-setsize. + */ + 'aria-posinset'?: Numberish; + /** + * Indicates the current "pressed" state of toggle buttons. + * @see aria-checked @see aria-selected. + */ + 'aria-pressed'?: Booleanish | 'mixed'; + /** + * Indicates that the element is not editable, but is otherwise operable. + * @see aria-disabled. + */ + 'aria-readonly'?: Booleanish; + /** + * Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. + * @see aria-atomic. + */ + 'aria-relevant'?: 'additions' | 'additions removals' | 'additions text' | 'all' | 'removals' | 'removals additions' | 'removals text' | 'text' | 'text additions' | 'text removals'; + /** Indicates that user input is required on the element before a form may be submitted. */ + 'aria-required'?: Booleanish; + /** Defines a human-readable, author-localized description for the role of an element. */ + 'aria-roledescription'?: string; + /** + * Defines the total number of rows in a table, grid, or treegrid. + * @see aria-rowindex. + */ + 'aria-rowcount'?: Numberish; + /** + * Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. + * @see aria-rowcount @see aria-rowspan. + */ + 'aria-rowindex'?: Numberish; + /** + * Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. + * @see aria-rowindex @see aria-colspan. + */ + 'aria-rowspan'?: Numberish; + /** + * Indicates the current "selected" state of various widgets. + * @see aria-checked @see aria-pressed. + */ + 'aria-selected'?: Booleanish; + /** + * Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. + * @see aria-posinset. + */ + 'aria-setsize'?: Numberish; + /** Indicates if items in a table or grid are sorted in ascending or descending order. */ + 'aria-sort'?: 'none' | 'ascending' | 'descending' | 'other'; + /** Defines the maximum allowed value for a range widget. */ + 'aria-valuemax'?: Numberish; + /** Defines the minimum allowed value for a range widget. */ + 'aria-valuemin'?: Numberish; + /** + * Defines the current value for a range widget. + * @see aria-valuetext. + */ + 'aria-valuenow'?: Numberish; + /** Defines the human readable text alternative of aria-valuenow for a range widget. */ + 'aria-valuetext'?: string; +} +export type StyleValue = false | null | undefined | string | CSSProperties | Array<StyleValue>; +export interface HTMLAttributes extends AriaAttributes, EventHandlers<Events> { + innerHTML?: string; + class?: any; + style?: StyleValue; + accesskey?: string; + contenteditable?: Booleanish | 'inherit' | 'plaintext-only'; + contextmenu?: string; + dir?: string; + draggable?: Booleanish; + hidden?: Booleanish | '' | 'hidden' | 'until-found'; + id?: string; + inert?: Booleanish; + lang?: string; + placeholder?: string; + spellcheck?: Booleanish; + tabindex?: Numberish; + title?: string; + translate?: 'yes' | 'no'; + radiogroup?: string; + role?: string; + about?: string; + datatype?: string; + inlist?: any; + prefix?: string; + property?: string; + resource?: string; + typeof?: string; + vocab?: string; + autocapitalize?: string; + autocorrect?: string; + autosave?: string; + color?: string; + itemprop?: string; + itemscope?: Booleanish; + itemtype?: string; + itemid?: string; + itemref?: string; + results?: Numberish; + security?: string; + unselectable?: 'on' | 'off'; + /** + * Hints at the type of data that might be entered by the user while editing the element or its contents + * @see https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute + */ + inputmode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; + /** + * Specify that a standard HTML element should behave like a defined custom built-in element + * @see https://html.spec.whatwg.org/multipage/custom-elements.html#attr-is + */ + is?: string; +} +type HTMLAttributeReferrerPolicy = '' | 'no-referrer' | 'no-referrer-when-downgrade' | 'origin' | 'origin-when-cross-origin' | 'same-origin' | 'strict-origin' | 'strict-origin-when-cross-origin' | 'unsafe-url'; +export interface AnchorHTMLAttributes extends HTMLAttributes { + download?: any; + href?: string; + hreflang?: string; + media?: string; + ping?: string; + rel?: string; + target?: string; + type?: string; + referrerpolicy?: HTMLAttributeReferrerPolicy; +} +export interface AreaHTMLAttributes extends HTMLAttributes { + alt?: string; + coords?: string; + download?: any; + href?: string; + hreflang?: string; + media?: string; + referrerpolicy?: HTMLAttributeReferrerPolicy; + rel?: string; + shape?: string; + target?: string; +} +export interface AudioHTMLAttributes extends MediaHTMLAttributes { +} +export interface BaseHTMLAttributes extends HTMLAttributes { + href?: string; + target?: string; +} +export interface BlockquoteHTMLAttributes extends HTMLAttributes { + cite?: string; +} +export interface ButtonHTMLAttributes extends HTMLAttributes { + autofocus?: Booleanish; + disabled?: Booleanish; + form?: string; + formaction?: string; + formenctype?: string; + formmethod?: string; + formnovalidate?: Booleanish; + formtarget?: string; + name?: string; + type?: 'submit' | 'reset' | 'button'; + value?: string | ReadonlyArray<string> | number; +} +export interface CanvasHTMLAttributes extends HTMLAttributes { + height?: Numberish; + width?: Numberish; +} +export interface ColHTMLAttributes extends HTMLAttributes { + span?: Numberish; + width?: Numberish; +} +export interface ColgroupHTMLAttributes extends HTMLAttributes { + span?: Numberish; +} +export interface DataHTMLAttributes extends HTMLAttributes { + value?: string | ReadonlyArray<string> | number; +} +export interface DetailsHTMLAttributes extends HTMLAttributes { + name?: string; + open?: Booleanish; + onToggle?: (payload: ToggleEvent) => void; +} +export interface DelHTMLAttributes extends HTMLAttributes { + cite?: string; + datetime?: string; +} +export interface DialogHTMLAttributes extends HTMLAttributes { + open?: Booleanish; + onClose?: (payload: Event) => void; +} +export interface EmbedHTMLAttributes extends HTMLAttributes { + height?: Numberish; + src?: string; + type?: string; + width?: Numberish; +} +export interface FieldsetHTMLAttributes extends HTMLAttributes { + disabled?: Booleanish; + form?: string; + name?: string; +} +export interface FormHTMLAttributes extends HTMLAttributes { + acceptcharset?: string; + action?: string; + autocomplete?: string; + enctype?: string; + method?: string; + name?: string; + novalidate?: Booleanish; + target?: string; +} +export interface HtmlHTMLAttributes extends HTMLAttributes { + manifest?: string; +} +export interface IframeHTMLAttributes extends HTMLAttributes { + allow?: string; + allowfullscreen?: Booleanish; + allowtransparency?: Booleanish; + /** @deprecated */ + frameborder?: Numberish; + height?: Numberish; + loading?: 'eager' | 'lazy'; + /** @deprecated */ + marginheight?: Numberish; + /** @deprecated */ + marginwidth?: Numberish; + name?: string; + referrerpolicy?: HTMLAttributeReferrerPolicy; + sandbox?: string; + /** @deprecated */ + scrolling?: string; + seamless?: Booleanish; + src?: string; + srcdoc?: string; + width?: Numberish; +} +export interface ImgHTMLAttributes extends HTMLAttributes { + alt?: string; + crossorigin?: 'anonymous' | 'use-credentials' | ''; + decoding?: 'async' | 'auto' | 'sync'; + height?: Numberish; + loading?: 'eager' | 'lazy'; + referrerpolicy?: HTMLAttributeReferrerPolicy; + sizes?: string; + src?: string; + srcset?: string; + usemap?: string; + width?: Numberish; +} +export interface InsHTMLAttributes extends HTMLAttributes { + cite?: string; + datetime?: string; +} +export type InputTypeHTMLAttribute = 'button' | 'checkbox' | 'color' | 'date' | 'datetime-local' | 'email' | 'file' | 'hidden' | 'image' | 'month' | 'number' | 'password' | 'radio' | 'range' | 'reset' | 'search' | 'submit' | 'tel' | 'text' | 'time' | 'url' | 'week' | (string & {}); +export interface InputHTMLAttributes extends HTMLAttributes { + accept?: string; + alt?: string; + autocomplete?: string; + autofocus?: Booleanish; + capture?: boolean | 'user' | 'environment'; + checked?: Booleanish | any[] | Set<any>; + crossorigin?: string; + disabled?: Booleanish; + enterKeyHint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'; + form?: string; + formaction?: string; + formenctype?: string; + formmethod?: string; + formnovalidate?: Booleanish; + formtarget?: string; + height?: Numberish; + indeterminate?: boolean; + list?: string; + max?: Numberish; + maxlength?: Numberish; + min?: Numberish; + minlength?: Numberish; + multiple?: Booleanish; + name?: string; + pattern?: string; + placeholder?: string; + readonly?: Booleanish; + required?: Booleanish; + size?: Numberish; + src?: string; + step?: Numberish; + type?: InputTypeHTMLAttribute; + value?: any; + width?: Numberish; +} +export interface KeygenHTMLAttributes extends HTMLAttributes { + autofocus?: Booleanish; + challenge?: string; + disabled?: Booleanish; + form?: string; + keytype?: string; + keyparams?: string; + name?: string; +} +export interface LabelHTMLAttributes extends HTMLAttributes { + for?: string; + form?: string; +} +export interface LiHTMLAttributes extends HTMLAttributes { + value?: string | ReadonlyArray<string> | number; +} +export interface LinkHTMLAttributes extends HTMLAttributes { + as?: string; + crossorigin?: string; + href?: string; + hreflang?: string; + integrity?: string; + media?: string; + referrerpolicy?: HTMLAttributeReferrerPolicy; + rel?: string; + sizes?: string; + type?: string; + charset?: string; +} +export interface MapHTMLAttributes extends HTMLAttributes { + name?: string; +} +export interface MenuHTMLAttributes extends HTMLAttributes { + type?: string; +} +export interface MediaHTMLAttributes extends HTMLAttributes { + autoplay?: Booleanish; + controls?: Booleanish; + controlslist?: string; + crossorigin?: string; + loop?: Booleanish; + mediagroup?: string; + muted?: Booleanish; + playsinline?: Booleanish; + preload?: string; + src?: string; +} +export interface MetaHTMLAttributes extends HTMLAttributes { + charset?: string; + content?: string; + httpequiv?: string; + name?: string; +} +export interface MeterHTMLAttributes extends HTMLAttributes { + form?: string; + high?: Numberish; + low?: Numberish; + max?: Numberish; + min?: Numberish; + optimum?: Numberish; + value?: string | ReadonlyArray<string> | number; +} +export interface QuoteHTMLAttributes extends HTMLAttributes { + cite?: string; +} +export interface ObjectHTMLAttributes extends HTMLAttributes { + classid?: string; + data?: string; + form?: string; + height?: Numberish; + name?: string; + type?: string; + usemap?: string; + width?: Numberish; + wmode?: string; +} +export interface OlHTMLAttributes extends HTMLAttributes { + reversed?: Booleanish; + start?: Numberish; + type?: '1' | 'a' | 'A' | 'i' | 'I'; +} +export interface OptgroupHTMLAttributes extends HTMLAttributes { + disabled?: Booleanish; + label?: string; +} +export interface OptionHTMLAttributes extends HTMLAttributes { + disabled?: Booleanish; + label?: string; + selected?: Booleanish; + value?: any; +} +export interface OutputHTMLAttributes extends HTMLAttributes { + for?: string; + form?: string; + name?: string; +} +export interface ParamHTMLAttributes extends HTMLAttributes { + name?: string; + value?: string | ReadonlyArray<string> | number; +} +export interface ProgressHTMLAttributes extends HTMLAttributes { + max?: Numberish; + value?: string | ReadonlyArray<string> | number; +} +export interface ScriptHTMLAttributes extends HTMLAttributes { + async?: Booleanish; + /** @deprecated */ + charset?: string; + crossorigin?: string; + defer?: Booleanish; + integrity?: string; + nomodule?: Booleanish; + referrerpolicy?: HTMLAttributeReferrerPolicy; + nonce?: string; + src?: string; + type?: string; +} +export interface SelectHTMLAttributes extends HTMLAttributes { + autocomplete?: string; + autofocus?: Booleanish; + disabled?: Booleanish; + form?: string; + multiple?: Booleanish; + name?: string; + required?: Booleanish; + size?: Numberish; + value?: any; +} +export interface SourceHTMLAttributes extends HTMLAttributes { + media?: string; + sizes?: string; + src?: string; + srcset?: string; + type?: string; +} +export interface StyleHTMLAttributes extends HTMLAttributes { + media?: string; + nonce?: string; + scoped?: Booleanish; + type?: string; +} +export interface TableHTMLAttributes extends HTMLAttributes { + cellpadding?: Numberish; + cellspacing?: Numberish; + summary?: string; + width?: Numberish; +} +export interface TextareaHTMLAttributes extends HTMLAttributes { + autocomplete?: string; + autofocus?: Booleanish; + cols?: Numberish; + dirname?: string; + disabled?: Booleanish; + form?: string; + maxlength?: Numberish; + minlength?: Numberish; + name?: string; + placeholder?: string; + readonly?: Booleanish; + required?: Booleanish; + rows?: Numberish; + value?: string | ReadonlyArray<string> | number | null; + wrap?: string; +} +export interface TdHTMLAttributes extends HTMLAttributes { + align?: 'left' | 'center' | 'right' | 'justify' | 'char'; + colspan?: Numberish; + headers?: string; + rowspan?: Numberish; + scope?: string; + abbr?: string; + height?: Numberish; + width?: Numberish; + valign?: 'top' | 'middle' | 'bottom' | 'baseline'; +} +export interface ThHTMLAttributes extends HTMLAttributes { + align?: 'left' | 'center' | 'right' | 'justify' | 'char'; + colspan?: Numberish; + headers?: string; + rowspan?: Numberish; + scope?: string; + abbr?: string; +} +export interface TimeHTMLAttributes extends HTMLAttributes { + datetime?: string; +} +export interface TrackHTMLAttributes extends HTMLAttributes { + default?: Booleanish; + kind?: string; + label?: string; + src?: string; + srclang?: string; +} +export interface VideoHTMLAttributes extends MediaHTMLAttributes { + height?: Numberish; + playsinline?: Booleanish; + poster?: string; + width?: Numberish; + disablePictureInPicture?: Booleanish; + disableRemotePlayback?: Booleanish; +} +export interface WebViewHTMLAttributes extends HTMLAttributes { + allowfullscreen?: Booleanish; + allowpopups?: Booleanish; + autoFocus?: Booleanish; + autosize?: Booleanish; + blinkfeatures?: string; + disableblinkfeatures?: string; + disableguestresize?: Booleanish; + disablewebsecurity?: Booleanish; + guestinstance?: string; + httpreferrer?: string; + nodeintegration?: Booleanish; + partition?: string; + plugins?: Booleanish; + preload?: string; + src?: string; + useragent?: string; + webpreferences?: string; +} +export interface SVGAttributes extends AriaAttributes, EventHandlers<Events> { + innerHTML?: string; + /** + * SVG Styling Attributes + * @see https://www.w3.org/TR/SVG/styling.html#ElementSpecificStyling + */ + class?: any; + style?: StyleValue; + color?: string; + height?: Numberish; + id?: string; + lang?: string; + max?: Numberish; + media?: string; + method?: string; + min?: Numberish; + name?: string; + target?: string; + type?: string; + width?: Numberish; + role?: string; + tabindex?: Numberish; + crossOrigin?: 'anonymous' | 'use-credentials' | ''; + 'accent-height'?: Numberish; + accumulate?: 'none' | 'sum'; + additive?: 'replace' | 'sum'; + 'alignment-baseline'?: 'auto' | 'baseline' | 'before-edge' | 'text-before-edge' | 'middle' | 'central' | 'after-edge' | 'text-after-edge' | 'ideographic' | 'alphabetic' | 'hanging' | 'mathematical' | 'inherit'; + allowReorder?: 'no' | 'yes'; + alphabetic?: Numberish; + amplitude?: Numberish; + 'arabic-form'?: 'initial' | 'medial' | 'terminal' | 'isolated'; + ascent?: Numberish; + attributeName?: string; + attributeType?: string; + autoReverse?: Numberish; + azimuth?: Numberish; + baseFrequency?: Numberish; + 'baseline-shift'?: Numberish; + baseProfile?: Numberish; + bbox?: Numberish; + begin?: Numberish; + bias?: Numberish; + by?: Numberish; + calcMode?: Numberish; + 'cap-height'?: Numberish; + clip?: Numberish; + 'clip-path'?: string; + clipPathUnits?: Numberish; + 'clip-rule'?: Numberish; + 'color-interpolation'?: Numberish; + 'color-interpolation-filters'?: 'auto' | 'sRGB' | 'linearRGB' | 'inherit'; + 'color-profile'?: Numberish; + 'color-rendering'?: Numberish; + contentScriptType?: Numberish; + contentStyleType?: Numberish; + cursor?: Numberish; + cx?: Numberish; + cy?: Numberish; + d?: string; + decelerate?: Numberish; + descent?: Numberish; + diffuseConstant?: Numberish; + direction?: Numberish; + display?: Numberish; + divisor?: Numberish; + 'dominant-baseline'?: Numberish; + dur?: Numberish; + dx?: Numberish; + dy?: Numberish; + edgeMode?: Numberish; + elevation?: Numberish; + 'enable-background'?: Numberish; + end?: Numberish; + exponent?: Numberish; + externalResourcesRequired?: Numberish; + fill?: string; + 'fill-opacity'?: Numberish; + 'fill-rule'?: 'nonzero' | 'evenodd' | 'inherit'; + filter?: string; + filterRes?: Numberish; + filterUnits?: Numberish; + 'flood-color'?: Numberish; + 'flood-opacity'?: Numberish; + focusable?: Numberish; + 'font-family'?: string; + 'font-size'?: Numberish; + 'font-size-adjust'?: Numberish; + 'font-stretch'?: Numberish; + 'font-style'?: Numberish; + 'font-variant'?: Numberish; + 'font-weight'?: Numberish; + format?: Numberish; + from?: Numberish; + fx?: Numberish; + fy?: Numberish; + g1?: Numberish; + g2?: Numberish; + 'glyph-name'?: Numberish; + 'glyph-orientation-horizontal'?: Numberish; + 'glyph-orientation-vertical'?: Numberish; + glyphRef?: Numberish; + gradientTransform?: string; + gradientUnits?: string; + hanging?: Numberish; + 'horiz-adv-x'?: Numberish; + 'horiz-origin-x'?: Numberish; + href?: string; + ideographic?: Numberish; + 'image-rendering'?: Numberish; + in2?: Numberish; + in?: string; + intercept?: Numberish; + k1?: Numberish; + k2?: Numberish; + k3?: Numberish; + k4?: Numberish; + k?: Numberish; + kernelMatrix?: Numberish; + kernelUnitLength?: Numberish; + kerning?: Numberish; + keyPoints?: Numberish; + keySplines?: Numberish; + keyTimes?: Numberish; + lengthAdjust?: Numberish; + 'letter-spacing'?: Numberish; + 'lighting-color'?: Numberish; + limitingConeAngle?: Numberish; + local?: Numberish; + 'marker-end'?: string; + markerHeight?: Numberish; + 'marker-mid'?: string; + 'marker-start'?: string; + markerUnits?: Numberish; + markerWidth?: Numberish; + mask?: string; + maskContentUnits?: Numberish; + maskUnits?: Numberish; + mathematical?: Numberish; + mode?: Numberish; + numOctaves?: Numberish; + offset?: Numberish; + opacity?: Numberish; + operator?: Numberish; + order?: Numberish; + orient?: Numberish; + orientation?: Numberish; + origin?: Numberish; + overflow?: Numberish; + 'overline-position'?: Numberish; + 'overline-thickness'?: Numberish; + 'paint-order'?: Numberish; + 'panose-1'?: Numberish; + pathLength?: Numberish; + patternContentUnits?: string; + patternTransform?: Numberish; + patternUnits?: string; + 'pointer-events'?: Numberish; + points?: string; + pointsAtX?: Numberish; + pointsAtY?: Numberish; + pointsAtZ?: Numberish; + preserveAlpha?: Numberish; + preserveAspectRatio?: string; + primitiveUnits?: Numberish; + r?: Numberish; + radius?: Numberish; + refX?: Numberish; + refY?: Numberish; + renderingIntent?: Numberish; + repeatCount?: Numberish; + repeatDur?: Numberish; + requiredExtensions?: Numberish; + requiredFeatures?: Numberish; + restart?: Numberish; + result?: string; + rotate?: Numberish; + rx?: Numberish; + ry?: Numberish; + scale?: Numberish; + seed?: Numberish; + 'shape-rendering'?: Numberish; + slope?: Numberish; + spacing?: Numberish; + specularConstant?: Numberish; + specularExponent?: Numberish; + speed?: Numberish; + spreadMethod?: string; + startOffset?: Numberish; + stdDeviation?: Numberish; + stemh?: Numberish; + stemv?: Numberish; + stitchTiles?: Numberish; + 'stop-color'?: string; + 'stop-opacity'?: Numberish; + 'strikethrough-position'?: Numberish; + 'strikethrough-thickness'?: Numberish; + string?: Numberish; + stroke?: string; + 'stroke-dasharray'?: Numberish; + 'stroke-dashoffset'?: Numberish; + 'stroke-linecap'?: 'butt' | 'round' | 'square' | 'inherit'; + 'stroke-linejoin'?: 'miter' | 'round' | 'bevel' | 'inherit'; + 'stroke-miterlimit'?: Numberish; + 'stroke-opacity'?: Numberish; + 'stroke-width'?: Numberish; + surfaceScale?: Numberish; + systemLanguage?: Numberish; + tableValues?: Numberish; + targetX?: Numberish; + targetY?: Numberish; + 'text-anchor'?: string; + 'text-decoration'?: Numberish; + textLength?: Numberish; + 'text-rendering'?: Numberish; + to?: Numberish; + transform?: string; + u1?: Numberish; + u2?: Numberish; + 'underline-position'?: Numberish; + 'underline-thickness'?: Numberish; + unicode?: Numberish; + 'unicode-bidi'?: Numberish; + 'unicode-range'?: Numberish; + 'unitsPer-em'?: Numberish; + 'v-alphabetic'?: Numberish; + values?: string; + 'vector-effect'?: Numberish; + version?: string; + 'vert-adv-y'?: Numberish; + 'vert-origin-x'?: Numberish; + 'vert-origin-y'?: Numberish; + 'v-hanging'?: Numberish; + 'v-ideographic'?: Numberish; + viewBox?: string; + viewTarget?: Numberish; + visibility?: Numberish; + 'v-mathematical'?: Numberish; + widths?: Numberish; + 'word-spacing'?: Numberish; + 'writing-mode'?: Numberish; + x1?: Numberish; + x2?: Numberish; + x?: Numberish; + xChannelSelector?: string; + 'x-height'?: Numberish; + xlinkActuate?: string; + xlinkArcrole?: string; + xlinkHref?: string; + xlinkRole?: string; + xlinkShow?: string; + xlinkTitle?: string; + xlinkType?: string; + xmlns?: string; + xmlnsXlink?: string; + y1?: Numberish; + y2?: Numberish; + y?: Numberish; + yChannelSelector?: string; + z?: Numberish; + zoomAndPan?: string; +} +export interface IntrinsicElementAttributes { + a: AnchorHTMLAttributes; + abbr: HTMLAttributes; + address: HTMLAttributes; + area: AreaHTMLAttributes; + article: HTMLAttributes; + aside: HTMLAttributes; + audio: AudioHTMLAttributes; + b: HTMLAttributes; + base: BaseHTMLAttributes; + bdi: HTMLAttributes; + bdo: HTMLAttributes; + blockquote: BlockquoteHTMLAttributes; + body: HTMLAttributes; + br: HTMLAttributes; + button: ButtonHTMLAttributes; + canvas: CanvasHTMLAttributes; + caption: HTMLAttributes; + cite: HTMLAttributes; + code: HTMLAttributes; + col: ColHTMLAttributes; + colgroup: ColgroupHTMLAttributes; + data: DataHTMLAttributes; + datalist: HTMLAttributes; + dd: HTMLAttributes; + del: DelHTMLAttributes; + details: DetailsHTMLAttributes; + dfn: HTMLAttributes; + dialog: DialogHTMLAttributes; + div: HTMLAttributes; + dl: HTMLAttributes; + dt: HTMLAttributes; + em: HTMLAttributes; + embed: EmbedHTMLAttributes; + fieldset: FieldsetHTMLAttributes; + figcaption: HTMLAttributes; + figure: HTMLAttributes; + footer: HTMLAttributes; + form: FormHTMLAttributes; + h1: HTMLAttributes; + h2: HTMLAttributes; + h3: HTMLAttributes; + h4: HTMLAttributes; + h5: HTMLAttributes; + h6: HTMLAttributes; + head: HTMLAttributes; + header: HTMLAttributes; + hgroup: HTMLAttributes; + hr: HTMLAttributes; + html: HtmlHTMLAttributes; + i: HTMLAttributes; + iframe: IframeHTMLAttributes; + img: ImgHTMLAttributes; + input: InputHTMLAttributes; + ins: InsHTMLAttributes; + kbd: HTMLAttributes; + keygen: KeygenHTMLAttributes; + label: LabelHTMLAttributes; + legend: HTMLAttributes; + li: LiHTMLAttributes; + link: LinkHTMLAttributes; + main: HTMLAttributes; + map: MapHTMLAttributes; + mark: HTMLAttributes; + menu: MenuHTMLAttributes; + meta: MetaHTMLAttributes; + meter: MeterHTMLAttributes; + nav: HTMLAttributes; + noindex: HTMLAttributes; + noscript: HTMLAttributes; + object: ObjectHTMLAttributes; + ol: OlHTMLAttributes; + optgroup: OptgroupHTMLAttributes; + option: OptionHTMLAttributes; + output: OutputHTMLAttributes; + p: HTMLAttributes; + param: ParamHTMLAttributes; + picture: HTMLAttributes; + pre: HTMLAttributes; + progress: ProgressHTMLAttributes; + q: QuoteHTMLAttributes; + rp: HTMLAttributes; + rt: HTMLAttributes; + ruby: HTMLAttributes; + s: HTMLAttributes; + samp: HTMLAttributes; + script: ScriptHTMLAttributes; + section: HTMLAttributes; + select: SelectHTMLAttributes; + small: HTMLAttributes; + source: SourceHTMLAttributes; + span: HTMLAttributes; + strong: HTMLAttributes; + style: StyleHTMLAttributes; + sub: HTMLAttributes; + summary: HTMLAttributes; + sup: HTMLAttributes; + table: TableHTMLAttributes; + template: HTMLAttributes; + tbody: HTMLAttributes; + td: TdHTMLAttributes; + textarea: TextareaHTMLAttributes; + tfoot: HTMLAttributes; + th: ThHTMLAttributes; + thead: HTMLAttributes; + time: TimeHTMLAttributes; + title: HTMLAttributes; + tr: HTMLAttributes; + track: TrackHTMLAttributes; + u: HTMLAttributes; + ul: HTMLAttributes; + var: HTMLAttributes; + video: VideoHTMLAttributes; + wbr: HTMLAttributes; + webview: WebViewHTMLAttributes; + svg: SVGAttributes; + animate: SVGAttributes; + animateMotion: SVGAttributes; + animateTransform: SVGAttributes; + circle: SVGAttributes; + clipPath: SVGAttributes; + defs: SVGAttributes; + desc: SVGAttributes; + ellipse: SVGAttributes; + feBlend: SVGAttributes; + feColorMatrix: SVGAttributes; + feComponentTransfer: SVGAttributes; + feComposite: SVGAttributes; + feConvolveMatrix: SVGAttributes; + feDiffuseLighting: SVGAttributes; + feDisplacementMap: SVGAttributes; + feDistantLight: SVGAttributes; + feDropShadow: SVGAttributes; + feFlood: SVGAttributes; + feFuncA: SVGAttributes; + feFuncB: SVGAttributes; + feFuncG: SVGAttributes; + feFuncR: SVGAttributes; + feGaussianBlur: SVGAttributes; + feImage: SVGAttributes; + feMerge: SVGAttributes; + feMergeNode: SVGAttributes; + feMorphology: SVGAttributes; + feOffset: SVGAttributes; + fePointLight: SVGAttributes; + feSpecularLighting: SVGAttributes; + feSpotLight: SVGAttributes; + feTile: SVGAttributes; + feTurbulence: SVGAttributes; + filter: SVGAttributes; + foreignObject: SVGAttributes; + g: SVGAttributes; + image: SVGAttributes; + line: SVGAttributes; + linearGradient: SVGAttributes; + marker: SVGAttributes; + mask: SVGAttributes; + metadata: SVGAttributes; + mpath: SVGAttributes; + path: SVGAttributes; + pattern: SVGAttributes; + polygon: SVGAttributes; + polyline: SVGAttributes; + radialGradient: SVGAttributes; + rect: SVGAttributes; + stop: SVGAttributes; + switch: SVGAttributes; + symbol: SVGAttributes; + text: SVGAttributes; + textPath: SVGAttributes; + tspan: SVGAttributes; + use: SVGAttributes; + view: SVGAttributes; +} +export interface Events { + onCopy: ClipboardEvent; + onCut: ClipboardEvent; + onPaste: ClipboardEvent; + onCompositionend: CompositionEvent; + onCompositionstart: CompositionEvent; + onCompositionupdate: CompositionEvent; + onDrag: DragEvent; + onDragend: DragEvent; + onDragenter: DragEvent; + onDragexit: DragEvent; + onDragleave: DragEvent; + onDragover: DragEvent; + onDragstart: DragEvent; + onDrop: DragEvent; + onFocus: FocusEvent; + onFocusin: FocusEvent; + onFocusout: FocusEvent; + onBlur: FocusEvent; + onChange: Event; + onBeforeinput: Event; + onInput: Event; + onReset: Event; + onSubmit: Event; + onInvalid: Event; + onLoad: Event; + onError: Event; + onKeydown: KeyboardEvent; + onKeypress: KeyboardEvent; + onKeyup: KeyboardEvent; + onAuxclick: MouseEvent; + onClick: MouseEvent; + onContextmenu: MouseEvent; + onDblclick: MouseEvent; + onMousedown: MouseEvent; + onMouseenter: MouseEvent; + onMouseleave: MouseEvent; + onMousemove: MouseEvent; + onMouseout: MouseEvent; + onMouseover: MouseEvent; + onMouseup: MouseEvent; + onAbort: Event; + onCanplay: Event; + onCanplaythrough: Event; + onDurationchange: Event; + onEmptied: Event; + onEncrypted: Event; + onEnded: Event; + onLoadeddata: Event; + onLoadedmetadata: Event; + onLoadstart: Event; + onPause: Event; + onPlay: Event; + onPlaying: Event; + onProgress: Event; + onRatechange: Event; + onSeeked: Event; + onSeeking: Event; + onStalled: Event; + onSuspend: Event; + onTimeupdate: Event; + onVolumechange: Event; + onWaiting: Event; + onSelect: Event; + onScroll: Event; + onScrollend: Event; + onTouchcancel: TouchEvent; + onTouchend: TouchEvent; + onTouchmove: TouchEvent; + onTouchstart: TouchEvent; + onPointerdown: PointerEvent; + onPointermove: PointerEvent; + onPointerup: PointerEvent; + onPointercancel: PointerEvent; + onPointerenter: PointerEvent; + onPointerleave: PointerEvent; + onPointerover: PointerEvent; + onPointerout: PointerEvent; + onWheel: WheelEvent; + onAnimationstart: AnimationEvent; + onAnimationend: AnimationEvent; + onAnimationiteration: AnimationEvent; + onTransitionend: TransitionEvent; + onTransitionstart: TransitionEvent; +} +type EventHandlers<E> = { + [K in keyof E]?: E[K] extends (...args: any) => any ? E[K] : (payload: E[K]) => void; +}; + +export type ReservedProps = { + key?: PropertyKey; + ref?: VNodeRef; + ref_for?: boolean; + ref_key?: string; +}; +export type NativeElements = { + [K in keyof IntrinsicElementAttributes]: IntrinsicElementAttributes[K] & ReservedProps; +}; + +/** + * This is a stub implementation to prevent the need to use dom types. + * + * To enable proper types, add `"dom"` to `"lib"` in your `tsconfig.json`. + */ +type DomStub = {}; +type DomType<T> = typeof globalThis extends { + window: unknown; +} ? T : DomStub; +declare module '@vue/reactivity' { + interface RefUnwrapBailTypes { + runtimeDOMBailTypes: DomType<Node | Window>; + } +} +declare module '@vue/runtime-core' { + interface GlobalComponents { + Transition: DefineComponent<TransitionProps>; + TransitionGroup: DefineComponent<TransitionGroupProps>; + } + interface GlobalDirectives { + vShow: typeof vShow; + vOn: VOnDirective; + vBind: VModelDirective; + vIf: Directive<any, boolean>; + vOnce: Directive; + vSlot: Directive; + } +} +export declare const render: RootRenderFunction<Element | ShadowRoot>; +export declare const hydrate: RootHydrateFunction; +export declare const createApp: CreateAppFunction<Element>; +export declare const createSSRApp: CreateAppFunction<Element>; + + diff --git a/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-browser.js b/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-browser.js new file mode 100644 index 0000000..1c94124 --- /dev/null +++ b/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-browser.js @@ -0,0 +1,12441 @@ +/** +* @vue/runtime-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function makeMap(str) { + const map = /* @__PURE__ */ Object.create(null); + for (const key of str.split(",")) map[key] = 1; + return (val) => val in map; +} + +const EMPTY_OBJ = Object.freeze({}) ; +const EMPTY_ARR = Object.freeze([]) ; +const NOOP = () => { +}; +const NO = () => false; +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +const isModelListener = (key) => key.startsWith("onUpdate:"); +const extend = Object.assign; +const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +const hasOwnProperty$1 = Object.prototype.hasOwnProperty; +const hasOwn = (val, key) => hasOwnProperty$1.call(val, key); +const isArray = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isDate = (val) => toTypeString(val) === "[object Date]"; +const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +const isFunction = (val) => typeof val === "function"; +const isString = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject = (val) => val !== null && typeof val === "object"; +const isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +const objectToString = Object.prototype.toString; +const toTypeString = (value) => objectToString.call(value); +const toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +const isPlainObject = (val) => toTypeString(val) === "[object Object]"; +const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction( + (str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); + } +); +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction( + (str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; + } +); +const hasChanged = (value, oldValue) => !Object.is(value, oldValue); +const invokeArrayFns = (fns, ...arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](...arg); + } +}; +const def = (obj, key, value, writable = false) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + writable, + value + }); +}; +const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +const toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +let _globalThis; +const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; + +const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol"; +const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); + +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } +} +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function stringifyStyle(styles) { + if (!styles) return ""; + if (isString(styles)) return styles; + let ret = ""; + for (const key in styles) { + const value = styles[key]; + if (isString(value) || typeof value === "number") { + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + ret += `${normalizedKey}:${value};`; + } + } + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} +function normalizeProps(props) { + if (!props) return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} + +const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; +const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); +const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); +const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); + +const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); +const isBooleanAttr = /* @__PURE__ */ makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +const isKnownHtmlAttr = /* @__PURE__ */ makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +const isKnownSvgAttr = /* @__PURE__ */ makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); +function isRenderableAttrValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; +} + +const cssVarNameEscapeSymbolsRE = /[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g; +function getEscapedCssVarName(key, doubleEscape) { + return key.replace( + cssVarNameEscapeSymbolsRE, + (s) => `\\${s}` + ); +} + +function looseCompareArrays(a, b) { + if (a.length !== b.length) return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; +} +function looseEqual(a, b) { + if (a === b) return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} + +const isRef$1 = (val) => { + return !!(val && val["__v_isRef"] === true); +}; +const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef$1(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val); +}; +const replacer = (_key, val) => { + if (isRef$1(val)) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce( + (entries, [key, val2], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) + }; + } else if (isSymbol(val)) { + return stringifySymbol(val); + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; +const stringifySymbol = (v, i = "") => { + var _a; + return ( + // Symbol.description in es2019+ so we need to cast here to pass + // the lib: es2016 check + isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v + ); +}; + +function normalizeCssVarValue(value) { + if (value == null) { + return "initial"; + } + if (typeof value === "string") { + return value === "" ? " " : value; + } + if (typeof value !== "number" || !Number.isFinite(value)) { + { + console.warn( + "[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:", + value + ); + } + } + return String(value); +} + +function warn$2(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); +} + +let activeEffectScope; +class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal track `on` calls, allow `on` call multiple times + */ + this._on = 0; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this._isPaused = false; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + pause() { + if (this._active) { + this._isPaused = true; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].pause(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].pause(); + } + } + } + /** + * Resumes the effect scope, including all child scopes and effects. + */ + resume() { + if (this._active) { + if (this._isPaused) { + this._isPaused = false; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].resume(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].resume(); + } + } + } + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else { + warn$2(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + if (++this._on === 1) { + this.prevScope = activeEffectScope; + activeEffectScope = this; + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + if (this._on > 0 && --this._on === 0) { + activeEffectScope = this.prevScope; + this.prevScope = void 0; + } + } + stop(fromParent) { + if (this._active) { + this._active = false; + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + this.effects.length = 0; + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + this.cleanups.length = 0; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + this.scopes.length = 0; + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + } + } +} +function effectScope(detached) { + return new EffectScope(detached); +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn, failSilently = false) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else if (!failSilently) { + warn$2( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } +} + +let activeSub; +const pausedQueueEffects = /* @__PURE__ */ new WeakSet(); +class ReactiveEffect { + constructor(fn) { + this.fn = fn; + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 1 | 4; + /** + * @internal + */ + this.next = void 0; + /** + * @internal + */ + this.cleanup = void 0; + this.scheduler = void 0; + if (activeEffectScope && activeEffectScope.active) { + activeEffectScope.effects.push(this); + } + } + pause() { + this.flags |= 64; + } + resume() { + if (this.flags & 64) { + this.flags &= -65; + if (pausedQueueEffects.has(this)) { + pausedQueueEffects.delete(this); + this.trigger(); + } + } + } + /** + * @internal + */ + notify() { + if (this.flags & 2 && !(this.flags & 32)) { + return; + } + if (!(this.flags & 8)) { + batch(this); + } + } + run() { + if (!(this.flags & 1)) { + return this.fn(); + } + this.flags |= 2; + cleanupEffect(this); + prepareDeps(this); + const prevEffect = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = this; + shouldTrack = true; + try { + return this.fn(); + } finally { + if (activeSub !== this) { + warn$2( + "Active effect was not restored correctly - this is likely a Vue internal bug." + ); + } + cleanupDeps(this); + activeSub = prevEffect; + shouldTrack = prevShouldTrack; + this.flags &= -3; + } + } + stop() { + if (this.flags & 1) { + for (let link = this.deps; link; link = link.nextDep) { + removeSub(link); + } + this.deps = this.depsTail = void 0; + cleanupEffect(this); + this.onStop && this.onStop(); + this.flags &= -2; + } + } + trigger() { + if (this.flags & 64) { + pausedQueueEffects.add(this); + } else if (this.scheduler) { + this.scheduler(); + } else { + this.runIfDirty(); + } + } + /** + * @internal + */ + runIfDirty() { + if (isDirty(this)) { + this.run(); + } + } + get dirty() { + return isDirty(this); + } +} +let batchDepth = 0; +let batchedSub; +let batchedComputed; +function batch(sub, isComputed = false) { + sub.flags |= 8; + if (isComputed) { + sub.next = batchedComputed; + batchedComputed = sub; + return; + } + sub.next = batchedSub; + batchedSub = sub; +} +function startBatch() { + batchDepth++; +} +function endBatch() { + if (--batchDepth > 0) { + return; + } + if (batchedComputed) { + let e = batchedComputed; + batchedComputed = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + e = next; + } + } + let error; + while (batchedSub) { + let e = batchedSub; + batchedSub = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + if (e.flags & 1) { + try { + ; + e.trigger(); + } catch (err) { + if (!error) error = err; + } + } + e = next; + } + } + if (error) throw error; +} +function prepareDeps(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + link.version = -1; + link.prevActiveLink = link.dep.activeLink; + link.dep.activeLink = link; + } +} +function cleanupDeps(sub) { + let head; + let tail = sub.depsTail; + let link = tail; + while (link) { + const prev = link.prevDep; + if (link.version === -1) { + if (link === tail) tail = prev; + removeSub(link); + removeDep(link); + } else { + head = link; + } + link.dep.activeLink = link.prevActiveLink; + link.prevActiveLink = void 0; + link = prev; + } + sub.deps = head; + sub.depsTail = tail; +} +function isDirty(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) { + return true; + } + } + if (sub._dirty) { + return true; + } + return false; +} +function refreshComputed(computed) { + if (computed.flags & 4 && !(computed.flags & 16)) { + return; + } + computed.flags &= -17; + if (computed.globalVersion === globalVersion) { + return; + } + computed.globalVersion = globalVersion; + if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) { + return; + } + computed.flags |= 2; + const dep = computed.dep; + const prevSub = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = computed; + shouldTrack = true; + try { + prepareDeps(computed); + const value = computed.fn(computed._value); + if (dep.version === 0 || hasChanged(value, computed._value)) { + computed.flags |= 128; + computed._value = value; + dep.version++; + } + } catch (err) { + dep.version++; + throw err; + } finally { + activeSub = prevSub; + shouldTrack = prevShouldTrack; + cleanupDeps(computed); + computed.flags &= -3; + } +} +function removeSub(link, soft = false) { + const { dep, prevSub, nextSub } = link; + if (prevSub) { + prevSub.nextSub = nextSub; + link.prevSub = void 0; + } + if (nextSub) { + nextSub.prevSub = prevSub; + link.nextSub = void 0; + } + if (dep.subsHead === link) { + dep.subsHead = nextSub; + } + if (dep.subs === link) { + dep.subs = prevSub; + if (!prevSub && dep.computed) { + dep.computed.flags &= -5; + for (let l = dep.computed.deps; l; l = l.nextDep) { + removeSub(l, true); + } + } + } + if (!soft && !--dep.sc && dep.map) { + dep.map.delete(dep.key); + } +} +function removeDep(link) { + const { prevDep, nextDep } = link; + if (prevDep) { + prevDep.nextDep = nextDep; + link.prevDep = void 0; + } + if (nextDep) { + nextDep.prevDep = prevDep; + link.nextDep = void 0; + } +} +function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const e = new ReactiveEffect(fn); + if (options) { + extend(e, options); + } + try { + e.run(); + } catch (err) { + e.stop(); + throw err; + } + const runner = e.run.bind(e); + runner.effect = e; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +let shouldTrack = true; +const trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function cleanupEffect(e) { + const { cleanup } = e; + e.cleanup = void 0; + if (cleanup) { + const prevSub = activeSub; + activeSub = void 0; + try { + cleanup(); + } finally { + activeSub = prevSub; + } + } +} + +let globalVersion = 0; +class Link { + constructor(sub, dep) { + this.sub = sub; + this.dep = dep; + this.version = dep.version; + this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; + } +} +class Dep { + // TODO isolatedDeclarations "__v_skip" + constructor(computed) { + this.computed = computed; + this.version = 0; + /** + * Link between this dep and the current active effect + */ + this.activeLink = void 0; + /** + * Doubly linked list representing the subscribing effects (tail) + */ + this.subs = void 0; + /** + * For object property deps cleanup + */ + this.map = void 0; + this.key = void 0; + /** + * Subscriber counter + */ + this.sc = 0; + /** + * @internal + */ + this.__v_skip = true; + { + this.subsHead = void 0; + } + } + track(debugInfo) { + if (!activeSub || !shouldTrack || activeSub === this.computed) { + return; + } + let link = this.activeLink; + if (link === void 0 || link.sub !== activeSub) { + link = this.activeLink = new Link(activeSub, this); + if (!activeSub.deps) { + activeSub.deps = activeSub.depsTail = link; + } else { + link.prevDep = activeSub.depsTail; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + } + addSub(link); + } else if (link.version === -1) { + link.version = this.version; + if (link.nextDep) { + const next = link.nextDep; + next.prevDep = link.prevDep; + if (link.prevDep) { + link.prevDep.nextDep = next; + } + link.prevDep = activeSub.depsTail; + link.nextDep = void 0; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + if (activeSub.deps === link) { + activeSub.deps = next; + } + } + } + if (activeSub.onTrack) { + activeSub.onTrack( + extend( + { + effect: activeSub + }, + debugInfo + ) + ); + } + return link; + } + trigger(debugInfo) { + this.version++; + globalVersion++; + this.notify(debugInfo); + } + notify(debugInfo) { + startBatch(); + try { + if (true) { + for (let head = this.subsHead; head; head = head.nextSub) { + if (head.sub.onTrigger && !(head.sub.flags & 8)) { + head.sub.onTrigger( + extend( + { + effect: head.sub + }, + debugInfo + ) + ); + } + } + } + for (let link = this.subs; link; link = link.prevSub) { + if (link.sub.notify()) { + ; + link.sub.dep.notify(); + } + } + } finally { + endBatch(); + } + } +} +function addSub(link) { + link.dep.sc++; + if (link.sub.flags & 4) { + const computed = link.dep.computed; + if (computed && !link.dep.subs) { + computed.flags |= 4 | 16; + for (let l = computed.deps; l; l = l.nextDep) { + addSub(l); + } + } + const currentTail = link.dep.subs; + if (currentTail !== link) { + link.prevSub = currentTail; + if (currentTail) currentTail.nextSub = link; + } + if (link.dep.subsHead === void 0) { + link.dep.subsHead = link; + } + link.dep.subs = link; + } +} +const targetMap = /* @__PURE__ */ new WeakMap(); +const ITERATE_KEY = Symbol( + "Object iterate" +); +const MAP_KEY_ITERATE_KEY = Symbol( + "Map keys iterate" +); +const ARRAY_ITERATE_KEY = Symbol( + "Array iterate" +); +function track(target, type, key) { + if (shouldTrack && activeSub) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = new Dep()); + dep.map = depsMap; + dep.key = key; + } + { + dep.track({ + target, + type, + key + }); + } + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + globalVersion++; + return; + } + const run = (dep) => { + if (dep) { + { + dep.trigger({ + target, + type, + key, + newValue, + oldValue, + oldTarget + }); + } + } + }; + startBatch(); + if (type === "clear") { + depsMap.forEach(run); + } else { + const targetIsArray = isArray(target); + const isArrayIndex = targetIsArray && isIntegerKey(key); + if (targetIsArray && key === "length") { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) { + run(dep); + } + }); + } else { + if (key !== void 0 || depsMap.has(void 0)) { + run(depsMap.get(key)); + } + if (isArrayIndex) { + run(depsMap.get(ARRAY_ITERATE_KEY)); + } + switch (type) { + case "add": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isArrayIndex) { + run(depsMap.get("length")); + } + break; + case "delete": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + run(depsMap.get(ITERATE_KEY)); + } + break; + } + } + } + endBatch(); +} +function getDepFromReactive(object, key) { + const depMap = targetMap.get(object); + return depMap && depMap.get(key); +} + +function reactiveReadArray(array) { + const raw = toRaw(array); + if (raw === array) return raw; + track(raw, "iterate", ARRAY_ITERATE_KEY); + return isShallow(array) ? raw : raw.map(toReactive); +} +function shallowReadArray(arr) { + track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY); + return arr; +} +const arrayInstrumentations = { + __proto__: null, + [Symbol.iterator]() { + return iterator(this, Symbol.iterator, toReactive); + }, + concat(...args) { + return reactiveReadArray(this).concat( + ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x) + ); + }, + entries() { + return iterator(this, "entries", (value) => { + value[1] = toReactive(value[1]); + return value; + }); + }, + every(fn, thisArg) { + return apply(this, "every", fn, thisArg, void 0, arguments); + }, + filter(fn, thisArg) { + return apply(this, "filter", fn, thisArg, (v) => v.map(toReactive), arguments); + }, + find(fn, thisArg) { + return apply(this, "find", fn, thisArg, toReactive, arguments); + }, + findIndex(fn, thisArg) { + return apply(this, "findIndex", fn, thisArg, void 0, arguments); + }, + findLast(fn, thisArg) { + return apply(this, "findLast", fn, thisArg, toReactive, arguments); + }, + findLastIndex(fn, thisArg) { + return apply(this, "findLastIndex", fn, thisArg, void 0, arguments); + }, + // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement + forEach(fn, thisArg) { + return apply(this, "forEach", fn, thisArg, void 0, arguments); + }, + includes(...args) { + return searchProxy(this, "includes", args); + }, + indexOf(...args) { + return searchProxy(this, "indexOf", args); + }, + join(separator) { + return reactiveReadArray(this).join(separator); + }, + // keys() iterator only reads `length`, no optimisation required + lastIndexOf(...args) { + return searchProxy(this, "lastIndexOf", args); + }, + map(fn, thisArg) { + return apply(this, "map", fn, thisArg, void 0, arguments); + }, + pop() { + return noTracking(this, "pop"); + }, + push(...args) { + return noTracking(this, "push", args); + }, + reduce(fn, ...args) { + return reduce(this, "reduce", fn, args); + }, + reduceRight(fn, ...args) { + return reduce(this, "reduceRight", fn, args); + }, + shift() { + return noTracking(this, "shift"); + }, + // slice could use ARRAY_ITERATE but also seems to beg for range tracking + some(fn, thisArg) { + return apply(this, "some", fn, thisArg, void 0, arguments); + }, + splice(...args) { + return noTracking(this, "splice", args); + }, + toReversed() { + return reactiveReadArray(this).toReversed(); + }, + toSorted(comparer) { + return reactiveReadArray(this).toSorted(comparer); + }, + toSpliced(...args) { + return reactiveReadArray(this).toSpliced(...args); + }, + unshift(...args) { + return noTracking(this, "unshift", args); + }, + values() { + return iterator(this, "values", toReactive); + } +}; +function iterator(self, method, wrapValue) { + const arr = shallowReadArray(self); + const iter = arr[method](); + if (arr !== self && !isShallow(self)) { + iter._next = iter.next; + iter.next = () => { + const result = iter._next(); + if (result.value) { + result.value = wrapValue(result.value); + } + return result; + }; + } + return iter; +} +const arrayProto = Array.prototype; +function apply(self, method, fn, thisArg, wrappedRetFn, args) { + const arr = shallowReadArray(self); + const needsWrap = arr !== self && !isShallow(self); + const methodFn = arr[method]; + if (methodFn !== arrayProto[method]) { + const result2 = methodFn.apply(self, args); + return needsWrap ? toReactive(result2) : result2; + } + let wrappedFn = fn; + if (arr !== self) { + if (needsWrap) { + wrappedFn = function(item, index) { + return fn.call(this, toReactive(item), index, self); + }; + } else if (fn.length > 2) { + wrappedFn = function(item, index) { + return fn.call(this, item, index, self); + }; + } + } + const result = methodFn.call(arr, wrappedFn, thisArg); + return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result; +} +function reduce(self, method, fn, args) { + const arr = shallowReadArray(self); + let wrappedFn = fn; + if (arr !== self) { + if (!isShallow(self)) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, toReactive(item), index, self); + }; + } else if (fn.length > 3) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, item, index, self); + }; + } + } + return arr[method](wrappedFn, ...args); +} +function searchProxy(self, method, args) { + const arr = toRaw(self); + track(arr, "iterate", ARRAY_ITERATE_KEY); + const res = arr[method](...args); + if ((res === -1 || res === false) && isProxy(args[0])) { + args[0] = toRaw(args[0]); + return arr[method](...args); + } + return res; +} +function noTracking(self, method, args = []) { + pauseTracking(); + startBatch(); + const res = toRaw(self)[method].apply(self, args); + endBatch(); + resetTracking(); + return res; +} + +const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); +const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) +); +function hasOwnProperty(key) { + if (!isSymbol(key)) key = String(key); + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +class BaseReactiveHandler { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + if (key === "__v_skip") return target["__v_skip"]; + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the receiver is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + let fn; + if (targetIsArray && (fn = arrayInstrumentations[key])) { + return fn; + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get( + target, + key, + // if this is a proxy wrapping a ref, return methods using the raw ref + // as receiver so that we don't have to call `toRaw` on the ref in all + // its class methods + isRef(target) ? target : receiver + ); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +} +class MutableReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set( + target, + key, + value, + isRef(target) ? target : receiver + ); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +} +class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + { + warn$2( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + { + warn$2( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } +} +const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); +const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); +const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true); +const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + +const toShallow = (value) => value; +const getProto = (v) => Reflect.getPrototypeOf(v); +function createIterableMethod(method, isReadonly2, isShallow2) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + { + const key = args[0] ? `on key "${args[0]}" ` : ``; + warn$2( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations(readonly, shallow) { + const instrumentations = { + get(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has } = getProto(rawTarget); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + if (has.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } + }, + get size() { + const target = this["__v_raw"]; + !readonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); + }, + has(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); + }, + forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + !readonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + } + }; + extend( + instrumentations, + readonly ? { + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear") + } : { + add(value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; + }, + set(key, value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + const oldValue = get.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; + }, + delete(key) { + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + const oldValue = get ? get.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + }, + clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = isMap(target) ? new Map(target) : new Set(target) ; + const result = target.clear(); + if (hadItems) { + trigger( + target, + "clear", + void 0, + void 0, + oldTarget + ); + } + return result; + } + } + ); + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator + ]; + iteratorMethods.forEach((method) => { + instrumentations[method] = createIterableMethod(method, readonly, shallow); + }); + return instrumentations; +} +function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = createInstrumentations(isReadonly2, shallow); + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) +}; +const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) +}; +const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) +}; +const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) +}; +function checkIdentityKeys(target, has, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has.call(target, rawKey)) { + const type = toRawType(target); + warn$2( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } +} + +const reactiveMap = /* @__PURE__ */ new WeakMap(); +const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +const readonlyMap = /* @__PURE__ */ new WeakMap(); +const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + { + warn$2( + `value cannot be made ${isReadonly2 ? "readonly" : "reactive"}: ${String( + target + )}` + ); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function isProxy(value) { + return value ? !!value["__v_raw"] : false; +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + if (!hasOwn(value, "__v_skip") && Object.isExtensible(value)) { + def(value, "__v_skip", true); + } + return value; +} +const toReactive = (value) => isObject(value) ? reactive(value) : value; +const toReadonly = (value) => isObject(value) ? readonly(value) : value; + +function isRef(r) { + return r ? r["__v_isRef"] === true : false; +} +function ref(value) { + return createRef(value, false); +} +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +class RefImpl { + constructor(value, isShallow2) { + this.dep = new Dep(); + this["__v_isRef"] = true; + this["__v_isShallow"] = false; + this._rawValue = isShallow2 ? value : toRaw(value); + this._value = isShallow2 ? value : toReactive(value); + this["__v_isShallow"] = isShallow2; + } + get value() { + { + this.dep.track({ + target: this, + type: "get", + key: "value" + }); + } + return this._value; + } + set value(newValue) { + const oldValue = this._rawValue; + const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue); + newValue = useDirectValue ? newValue : toRaw(newValue); + if (hasChanged(newValue, oldValue)) { + this._rawValue = newValue; + this._value = useDirectValue ? newValue : toReactive(newValue); + { + this.dep.trigger({ + target: this, + type: "set", + key: "value", + newValue, + oldValue + }); + } + } + } +} +function triggerRef(ref2) { + if (ref2.dep) { + { + ref2.dep.trigger({ + target: ref2, + type: "set", + key: "value", + newValue: ref2._value + }); + } + } +} +function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return isFunction(source) ? source() : unref(source); +} +const shallowUnwrapHandlers = { + get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +class CustomRefImpl { + constructor(factory) { + this["__v_isRef"] = true; + this._value = void 0; + const dep = this.dep = new Dep(); + const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep)); + this._get = get; + this._set = set; + } + get value() { + return this._value = this._get(); + } + set value(newVal) { + this._set(newVal); + } +} +function customRef(factory) { + return new CustomRefImpl(factory); +} +function toRefs(object) { + if (!isProxy(object)) { + warn$2(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this["__v_isRef"] = true; + this._value = void 0; + } + get value() { + const val = this._object[this._key]; + return this._value = val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } +} +class GetterRefImpl { + constructor(_getter) { + this._getter = _getter; + this["__v_isRef"] = true; + this["__v_isReadonly"] = true; + this._value = void 0; + } + get value() { + return this._value = this._getter(); + } +} +function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (isFunction(source)) { + return new GetterRefImpl(source); + } else if (isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); +} + +class ComputedRefImpl { + constructor(fn, setter, isSSR) { + this.fn = fn; + this.setter = setter; + /** + * @internal + */ + this._value = void 0; + /** + * @internal + */ + this.dep = new Dep(this); + /** + * @internal + */ + this.__v_isRef = true; + // TODO isolatedDeclarations "__v_isReadonly" + // A computed is also a subscriber that tracks other deps + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 16; + /** + * @internal + */ + this.globalVersion = globalVersion - 1; + /** + * @internal + */ + this.next = void 0; + // for backwards compat + this.effect = this; + this["__v_isReadonly"] = !setter; + this.isSSR = isSSR; + } + /** + * @internal + */ + notify() { + this.flags |= 16; + if (!(this.flags & 8) && // avoid infinite self recursion + activeSub !== this) { + batch(this, true); + return true; + } + } + get value() { + const link = this.dep.track({ + target: this, + type: "get", + key: "value" + }) ; + refreshComputed(this); + if (link) { + link.version = this.dep.version; + } + return this._value; + } + set value(newValue) { + if (this.setter) { + this.setter(newValue); + } else { + warn$2("Write operation failed: computed value is readonly"); + } + } +} +function computed$1(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + if (isFunction(getterOrOptions)) { + getter = getterOrOptions; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, isSSR); + if (debugOptions && !isSSR) { + cRef.onTrack = debugOptions.onTrack; + cRef.onTrigger = debugOptions.onTrigger; + } + return cRef; +} + +const TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" +}; +const TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" +}; + +const INITIAL_WATCHER_VALUE = {}; +const cleanupMap = /* @__PURE__ */ new WeakMap(); +let activeWatcher = void 0; +function getCurrentWatcher() { + return activeWatcher; +} +function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) { + if (owner) { + let cleanups = cleanupMap.get(owner); + if (!cleanups) cleanupMap.set(owner, cleanups = []); + cleanups.push(cleanupFn); + } else if (!failSilently) { + warn$2( + `onWatcherCleanup() was called when there was no active watcher to associate with.` + ); + } +} +function watch$1(source, cb, options = EMPTY_OBJ) { + const { immediate, deep, once, scheduler, augmentJob, call } = options; + const warnInvalidSource = (s) => { + (options.onWarn || warn$2)( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const reactiveGetter = (source2) => { + if (deep) return source2; + if (isShallow(source2) || deep === false || deep === 0) + return traverse(source2, 1); + return traverse(source2); + }; + let effect; + let getter; + let cleanup; + let boundCleanup; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return reactiveGetter(s); + } else if (isFunction(s)) { + return call ? call(s, 2) : s(); + } else { + warnInvalidSource(s); + } + }); + } else if (isFunction(source)) { + if (cb) { + getter = call ? () => call(source, 2) : source; + } else { + getter = () => { + if (cleanup) { + pauseTracking(); + try { + cleanup(); + } finally { + resetTracking(); + } + } + const currentEffect = activeWatcher; + activeWatcher = effect; + try { + return call ? call(source, 3, [boundCleanup]) : source(boundCleanup); + } finally { + activeWatcher = currentEffect; + } + }; + } + } else { + getter = NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + const depth = deep === true ? Infinity : deep; + getter = () => traverse(baseGetter(), depth); + } + const scope = getCurrentScope(); + const watchHandle = () => { + effect.stop(); + if (scope && scope.active) { + remove(scope.effects, effect); + } + }; + if (once && cb) { + const _cb = cb; + cb = (...args) => { + _cb(...args); + watchHandle(); + }; + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = (immediateFirstRun) => { + if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) { + if (cleanup) { + cleanup(); + } + const currentWatcher = activeWatcher; + activeWatcher = effect; + try { + const args = [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + boundCleanup + ]; + oldValue = newValue; + call ? call(cb, 3, args) : ( + // @ts-expect-error + cb(...args) + ); + } finally { + activeWatcher = currentWatcher; + } + } + } else { + effect.run(); + } + }; + if (augmentJob) { + augmentJob(job); + } + effect = new ReactiveEffect(getter); + effect.scheduler = scheduler ? () => scheduler(job, false) : job; + boundCleanup = (fn) => onWatcherCleanup(fn, false, effect); + cleanup = effect.onStop = () => { + const cleanups = cleanupMap.get(effect); + if (cleanups) { + if (call) { + call(cleanups, 4); + } else { + for (const cleanup2 of cleanups) cleanup2(); + } + cleanupMap.delete(effect); + } + }; + { + effect.onTrack = options.onTrack; + effect.onTrigger = options.onTrigger; + } + if (cb) { + if (immediate) { + job(true); + } else { + oldValue = effect.run(); + } + } else if (scheduler) { + scheduler(job.bind(null, true), true); + } else { + effect.run(); + } + watchHandle.pause = effect.pause.bind(effect); + watchHandle.resume = effect.resume.bind(effect); + watchHandle.stop = watchHandle; + return watchHandle; +} +function traverse(value, depth = Infinity, seen) { + if (depth <= 0 || !isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + depth--; + if (isRef(value)) { + traverse(value.value, depth, seen); + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, depth, seen); + }); + } else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, seen); + } + for (const key of Object.getOwnPropertySymbols(value)) { + if (Object.prototype.propertyIsEnumerable.call(value, key)) { + traverse(value[key], depth, seen); + } + } + } + return value; +} + +const stack = []; +function pushWarningContext(vnode) { + stack.push(vnode); +} +function popWarningContext() { + stack.pop(); +} +let isWarning = false; +function warn$1(msg, ...args) { + if (isWarning) return; + isWarning = true; + pauseTracking(); + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + // eslint-disable-next-line no-restricted-syntax + msg + args.map((a) => { + var _a, _b; + return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a); + }).join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + resetTracking(); + isWarning = false; +} +function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} +function assertNumber(val, type) { + if (val === void 0) { + return; + } else if (typeof val !== "number") { + warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`); + } else if (isNaN(val)) { + warn$1(`${type} is NaN - the duration expression might be incorrect.`); + } +} + +const ErrorCodes = { + "SETUP_FUNCTION": 0, + "0": "SETUP_FUNCTION", + "RENDER_FUNCTION": 1, + "1": "RENDER_FUNCTION", + "NATIVE_EVENT_HANDLER": 5, + "5": "NATIVE_EVENT_HANDLER", + "COMPONENT_EVENT_HANDLER": 6, + "6": "COMPONENT_EVENT_HANDLER", + "VNODE_HOOK": 7, + "7": "VNODE_HOOK", + "DIRECTIVE_HOOK": 8, + "8": "DIRECTIVE_HOOK", + "TRANSITION_HOOK": 9, + "9": "TRANSITION_HOOK", + "APP_ERROR_HANDLER": 10, + "10": "APP_ERROR_HANDLER", + "APP_WARN_HANDLER": 11, + "11": "APP_WARN_HANDLER", + "FUNCTION_REF": 12, + "12": "FUNCTION_REF", + "ASYNC_COMPONENT_LOADER": 13, + "13": "ASYNC_COMPONENT_LOADER", + "SCHEDULER": 14, + "14": "SCHEDULER", + "COMPONENT_UPDATE": 15, + "15": "COMPONENT_UPDATE", + "APP_UNMOUNT_CLEANUP": 16, + "16": "APP_UNMOUNT_CLEANUP" +}; +const ErrorTypeStrings$1 = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush", + [15]: "component update", + [16]: "app unmount cleanup function" +}; +function callWithErrorHandling(fn, instance, type, args) { + try { + return args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + if (isArray(fn)) { + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; + } else { + warn$1( + `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}` + ); + } +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = ErrorTypeStrings$1[type] ; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + if (errorHandler) { + pauseTracking(); + callWithErrorHandling(errorHandler, null, 10, [ + err, + exposedInstance, + errorInfo + ]); + resetTracking(); + return; + } + } + logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction); +} +function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) { + { + const info = ErrorTypeStrings$1[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } +} + +const queue = []; +let flushIndex = -1; +const pendingPostFlushCbs = []; +let activePostFlushCbs = null; +let postFlushIndex = 0; +const resolvedPromise = /* @__PURE__ */ Promise.resolve(); +let currentFlushPromise = null; +const RECURSION_LIMIT = 100; +function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.flags & 2) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!(job.flags & 1)) { + const jobId = getId(job); + const lastJob = queue[queue.length - 1]; + if (!lastJob || // fast path when the job id is larger than the tail + !(job.flags & 2) && jobId >= getId(lastJob)) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(jobId), 0, job); + } + job.flags |= 1; + queueFlush(); + } +} +function queueFlush() { + if (!currentFlushPromise) { + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function queuePostFlushCb(cb) { + if (!isArray(cb)) { + if (activePostFlushCbs && cb.id === -1) { + activePostFlushCbs.splice(postFlushIndex + 1, 0, cb); + } else if (!(cb.flags & 1)) { + pendingPostFlushCbs.push(cb); + cb.flags |= 1; + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(instance, seen, i = flushIndex + 1) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.flags & 2) { + if (instance && cb.id !== instance.uid) { + continue; + } + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + queue.splice(i, 1); + i--; + if (cb.flags & 4) { + cb.flags &= -2; + } + cb(); + if (!(cb.flags & 4)) { + cb.flags &= -2; + } + } + } +} +function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)].sort( + (a, b) => getId(a) - getId(b) + ); + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + const cb = activePostFlushCbs[postFlushIndex]; + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + if (cb.flags & 4) { + cb.flags &= -2; + } + if (!(cb.flags & 8)) cb(); + cb.flags &= -2; + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id; +function flushJobs(seen) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + const check = (job) => checkRecursiveUpdates(seen, job) ; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && !(job.flags & 8)) { + if (check(job)) { + continue; + } + if (job.flags & 4) { + job.flags &= ~1; + } + callWithErrorHandling( + job, + job.i, + job.i ? 15 : 14 + ); + if (!(job.flags & 4)) { + job.flags &= ~1; + } + } + } + } finally { + for (; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job) { + job.flags &= -2; + } + } + flushIndex = -1; + queue.length = 0; + flushPostFlushCbs(seen); + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } +} +function checkRecursiveUpdates(seen, fn) { + const count = seen.get(fn) || 0; + if (count > RECURSION_LIMIT) { + const instance = fn.i; + const componentName = instance && getComponentName(instance.type); + handleError( + `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`, + null, + 10 + ); + return true; + } + seen.set(fn, count + 1); + return false; +} + +let isHmrUpdating = false; +const hmrDirtyComponents = /* @__PURE__ */ new Map(); +{ + getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; +} +const map = /* @__PURE__ */ new Map(); +function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); +} +function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); +} +function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: /* @__PURE__ */ new Set() + }); + return true; +} +function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; +} +function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + record.initialDef.render = newRender; + [...record.instances].forEach((instance) => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + isHmrUpdating = true; + instance.update(); + isHmrUpdating = false; + }); +} +function reload(id, newComp) { + const record = map.get(id); + if (!record) return; + newComp = normalizeClassComponent(newComp); + updateComponentDef(record.initialDef, newComp); + const instances = [...record.instances]; + for (let i = 0; i < instances.length; i++) { + const instance = instances[i]; + const oldComp = normalizeClassComponent(instance.type); + let dirtyInstances = hmrDirtyComponents.get(oldComp); + if (!dirtyInstances) { + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set()); + } + dirtyInstances.add(instance); + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); + instance.appContext.optionsCache.delete(instance.type); + if (instance.ceReload) { + dirtyInstances.add(instance); + instance.ceReload(newComp.styles); + dirtyInstances.delete(instance); + } else if (instance.parent) { + queueJob(() => { + isHmrUpdating = true; + instance.parent.update(); + isHmrUpdating = false; + dirtyInstances.delete(instance); + }); + } else if (instance.appContext.reload) { + instance.appContext.reload(); + } else if (typeof window !== "undefined") { + window.location.reload(); + } else { + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); + } + if (instance.root.ce && instance !== instance.root) { + instance.root.ce._removeChildStyle(oldComp); + } + } + queuePostFlushCb(() => { + hmrDirtyComponents.clear(); + }); +} +function updateComponentDef(oldComp, newComp) { + extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== "__file" && !(key in newComp)) { + delete oldComp[key]; + } + } +} +function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } catch (e) { + console.error(e); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); + } + }; +} + +let devtools$1; +let buffer = []; +let devtoolsNotInstalled = false; +function emit$1(event, ...args) { + if (devtools$1) { + devtools$1.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } +} +function setDevtoolsHook$1(hook, target) { + var _a, _b; + devtools$1 = hook; + if (devtools$1) { + devtools$1.enabled = true; + buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + // eslint-disable-next-line no-restricted-syntax + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook$1(newHook, target); + }); + setTimeout(() => { + if (!devtools$1) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3e3); + } else { + devtoolsNotInstalled = true; + buffer = []; + } +} +function devtoolsInitApp(app, version) { + emit$1("app:init" /* APP_INIT */, app, version, { + Fragment, + Text, + Comment, + Static + }); +} +function devtoolsUnmountApp(app) { + emit$1("app:unmount" /* APP_UNMOUNT */, app); +} +const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook("component:added" /* COMPONENT_ADDED */); +const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */); +const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( + "component:removed" /* COMPONENT_REMOVED */ +); +const devtoolsComponentRemoved = (component) => { + if (devtools$1 && typeof devtools$1.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !devtools$1.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } +}; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; +} +const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook("perf:start" /* PERFORMANCE_START */); +const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook("perf:end" /* PERFORMANCE_END */); +function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; +} +function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit" /* COMPONENT_EMIT */, + component.appContext.app, + component, + event, + params + ); +} + +let currentRenderingInstance = null; +let currentScopeId = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function pushScopeId(id) { + currentScopeId = id; +} +function popScopeId() { + currentScopeId = null; +} +const withScopeId = (_id) => withCtx; +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + { + devtoolsComponentUpdated(ctx); + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} + +function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn$1("Do not use built-in directive ids as custom directive id: " + name); + } +} +function withDirectives(vnode, directives) { + if (currentRenderingInstance === null) { + warn$1(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getComponentPublicInstance(currentRenderingInstance); + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; + if (dir) { + if (isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + resetTracking(); + } + } +} + +const TeleportEndKey = Symbol("_vte"); +const isTeleport = (type) => type.__isTeleport; +const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ""); +const isTeleportDeferred = (props) => props && (props.defer || props.defer === ""); +const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement; +const isTargetMathML = (target) => typeof MathMLElement === "function" && target instanceof MathMLElement; +const resolveTarget = (props, select) => { + const targetSelector = props && props.to; + if (isString(targetSelector)) { + if (!select) { + warn$1( + `Current renderer does not support string target for Teleports. (missing querySelector renderer option)` + ); + return null; + } else { + const target = select(targetSelector); + if (!target && !isTeleportDisabled(props)) { + warn$1( + `Failed to locate Teleport target with selector "${targetSelector}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.` + ); + } + return target; + } + } else { + if (!targetSelector && !isTeleportDisabled(props)) { + warn$1(`Invalid Teleport target: ${targetSelector}`); + } + return targetSelector; + } +}; +const TeleportImpl = { + name: "Teleport", + __isTeleport: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) { + const { + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + o: { insert, querySelector, createText, createComment } + } = internals; + const disabled = isTeleportDisabled(n2.props); + let { shapeFlag, children, dynamicChildren } = n2; + if (isHmrUpdating) { + optimized = false; + dynamicChildren = null; + } + if (n1 == null) { + const placeholder = n2.el = createComment("teleport start") ; + const mainAnchor = n2.anchor = createComment("teleport end") ; + insert(placeholder, container, anchor); + insert(mainAnchor, container, anchor); + const mount = (container2, anchor2) => { + if (shapeFlag & 16) { + if (parentComponent && parentComponent.isCE) { + parentComponent.ce._teleportTarget = container2; + } + mountChildren( + children, + container2, + anchor2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const mountToTarget = () => { + const target = n2.target = resolveTarget(n2.props, querySelector); + const targetAnchor = prepareAnchor(target, n2, createText, insert); + if (target) { + if (namespace !== "svg" && isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace !== "mathml" && isTargetMathML(target)) { + namespace = "mathml"; + } + if (!disabled) { + mount(target, targetAnchor); + updateCssVars(n2, false); + } + } else if (!disabled) { + warn$1( + "Invalid Teleport target on mount:", + target, + `(${typeof target})` + ); + } + }; + if (disabled) { + mount(container, mainAnchor); + updateCssVars(n2, true); + } + if (isTeleportDeferred(n2.props)) { + n2.el.__isMounted = false; + queuePostRenderEffect(() => { + mountToTarget(); + delete n2.el.__isMounted; + }, parentSuspense); + } else { + mountToTarget(); + } + } else { + if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) { + queuePostRenderEffect(() => { + TeleportImpl.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + }, parentSuspense); + return; + } + n2.el = n1.el; + n2.targetStart = n1.targetStart; + const mainAnchor = n2.anchor = n1.anchor; + const target = n2.target = n1.target; + const targetAnchor = n2.targetAnchor = n1.targetAnchor; + const wasDisabled = isTeleportDisabled(n1.props); + const currentContainer = wasDisabled ? container : target; + const currentAnchor = wasDisabled ? mainAnchor : targetAnchor; + if (namespace === "svg" || isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace === "mathml" || isTargetMathML(target)) { + namespace = "mathml"; + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + currentContainer, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + traverseStaticChildren(n1, n2, false); + } else if (!optimized) { + patchChildren( + n1, + n2, + currentContainer, + currentAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + false + ); + } + if (disabled) { + if (!wasDisabled) { + moveTeleport( + n2, + container, + mainAnchor, + internals, + 1 + ); + } else { + if (n2.props && n1.props && n2.props.to !== n1.props.to) { + n2.props.to = n1.props.to; + } + } + } else { + if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { + const nextTarget = n2.target = resolveTarget( + n2.props, + querySelector + ); + if (nextTarget) { + moveTeleport( + n2, + nextTarget, + null, + internals, + 0 + ); + } else { + warn$1( + "Invalid Teleport target on update:", + target, + `(${typeof target})` + ); + } + } else if (wasDisabled) { + moveTeleport( + n2, + target, + targetAnchor, + internals, + 1 + ); + } + } + updateCssVars(n2, disabled); + } + }, + remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) { + const { + shapeFlag, + children, + anchor, + targetStart, + targetAnchor, + target, + props + } = vnode; + if (target) { + hostRemove(targetStart); + hostRemove(targetAnchor); + } + doRemove && hostRemove(anchor); + if (shapeFlag & 16) { + const shouldRemove = doRemove || !isTeleportDisabled(props); + for (let i = 0; i < children.length; i++) { + const child = children[i]; + unmount( + child, + parentComponent, + parentSuspense, + shouldRemove, + !!child.dynamicChildren + ); + } + } + }, + move: moveTeleport, + hydrate: hydrateTeleport +}; +function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) { + if (moveType === 0) { + insert(vnode.targetAnchor, container, parentAnchor); + } + const { el, anchor, shapeFlag, children, props } = vnode; + const isReorder = moveType === 2; + if (isReorder) { + insert(el, container, parentAnchor); + } + if (!isReorder || isTeleportDisabled(props)) { + if (shapeFlag & 16) { + for (let i = 0; i < children.length; i++) { + move( + children[i], + container, + parentAnchor, + 2 + ); + } + } + } + if (isReorder) { + insert(anchor, container, parentAnchor); + } +} +function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { + o: { nextSibling, parentNode, querySelector, insert, createText } +}, hydrateChildren) { + const target = vnode.target = resolveTarget( + vnode.props, + querySelector + ); + if (target) { + const disabled = isTeleportDisabled(vnode.props); + const targetNode = target._lpa || target.firstChild; + if (vnode.shapeFlag & 16) { + if (disabled) { + vnode.anchor = hydrateChildren( + nextSibling(node), + vnode, + parentNode(node), + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + vnode.targetStart = targetNode; + vnode.targetAnchor = targetNode && nextSibling(targetNode); + } else { + vnode.anchor = nextSibling(node); + let targetAnchor = targetNode; + while (targetAnchor) { + if (targetAnchor && targetAnchor.nodeType === 8) { + if (targetAnchor.data === "teleport start anchor") { + vnode.targetStart = targetAnchor; + } else if (targetAnchor.data === "teleport anchor") { + vnode.targetAnchor = targetAnchor; + target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); + break; + } + } + targetAnchor = nextSibling(targetAnchor); + } + if (!vnode.targetAnchor) { + prepareAnchor(target, vnode, createText, insert); + } + hydrateChildren( + targetNode && nextSibling(targetNode), + vnode, + target, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } + updateCssVars(vnode, disabled); + } + return vnode.anchor && nextSibling(vnode.anchor); +} +const Teleport = TeleportImpl; +function updateCssVars(vnode, isDisabled) { + const ctx = vnode.ctx; + if (ctx && ctx.ut) { + let node, anchor; + if (isDisabled) { + node = vnode.el; + anchor = vnode.anchor; + } else { + node = vnode.targetStart; + anchor = vnode.targetAnchor; + } + while (node && node !== anchor) { + if (node.nodeType === 1) node.setAttribute("data-v-owner", ctx.uid); + node = node.nextSibling; + } + ctx.ut(); + } +} +function prepareAnchor(target, vnode, createText, insert) { + const targetStart = vnode.targetStart = createText(""); + const targetAnchor = vnode.targetAnchor = createText(""); + targetStart[TeleportEndKey] = targetAnchor; + if (target) { + insert(targetStart, target); + insert(targetAnchor, target); + } + return targetAnchor; +} + +const leaveCbKey = Symbol("_leaveCb"); +const enterCbKey$1 = Symbol("_enterCb"); +function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; +} +const TransitionHookValidator = [Function, Array]; +const BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator +}; +const recursiveGetSubtree = (instance) => { + const subTree = instance.subTree; + return subTree.component ? recursiveGetSubtree(subTree.component) : subTree; +}; +const BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + const child = findNonCommentChild(children); + const rawProps = toRaw(props); + const { mode } = rawProps; + if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") { + warn$1(`invalid <transition> mode: ${mode}`); + } + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getInnerChild$1(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + let enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance, + // #11061, ensure enterHooks is fresh after clone + (hooks) => enterHooks = hooks + ); + if (innerChild.type !== Comment) { + setTransitionHooks(innerChild, enterHooks); + } + let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree); + if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) { + let leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in" && innerChild.type !== Comment) { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (!(instance.job.flags & 8)) { + instance.update(); + } + delete leavingHooks.afterLeave; + oldInnerChild = void 0; + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el[leaveCbKey] = () => { + earlyRemove(); + el[leaveCbKey] = void 0; + delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + enterHooks.delayedLeave = () => { + delayedLeave(); + delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + }; + } else { + oldInnerChild = void 0; + } + } else if (oldInnerChild) { + oldInnerChild = void 0; + } + return child; + }; + } +}; +function findNonCommentChild(children) { + let child = children[0]; + if (children.length > 1) { + let hasFound = false; + for (const c of children) { + if (c.type !== Comment) { + if (hasFound) { + warn$1( + "<transition> can only be used on a single element or component. Use <transition-group> for lists." + ); + break; + } + child = c; + hasFound = true; + } + } + } + return child; +} +const BaseTransition = BaseTransitionImpl; +function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; +} +function resolveTransitionHooks(vnode, props, state, instance, postClone) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook(hook, args); + if (isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el[leaveCbKey]) { + el[leaveCbKey]( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { + leavingVNode.el[leaveCbKey](); + } + callHook(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + const done = el[enterCbKey$1] = (cancelled) => { + if (called) return; + called = true; + if (cancelled) { + callHook(cancelHook, [el]); + } else { + callHook(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el[enterCbKey$1] = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove) { + const key2 = String(vnode.key); + if (el[enterCbKey$1]) { + el[enterCbKey$1]( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove(); + } + callHook(onBeforeLeave, [el]); + let called = false; + const done = el[leaveCbKey] = (cancelled) => { + if (called) return; + called = true; + remove(); + if (cancelled) { + callHook(onLeaveCancelled, [el]); + } else { + callHook(onAfterLeave, [el]); + } + el[leaveCbKey] = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + const hooks2 = resolveTransitionHooks( + vnode2, + props, + state, + instance, + postClone + ); + if (postClone) postClone(hooks2); + return hooks2; + } + }; + return hooks; +} +function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } +} +function getInnerChild$1(vnode) { + if (!isKeepAlive(vnode)) { + if (isTeleport(vnode.type) && vnode.children) { + return findNonCommentChild(vnode.children); + } + return vnode; + } + if (vnode.component) { + return vnode.component.subTree; + } + const { shapeFlag, children } = vnode; + if (children) { + if (shapeFlag & 16) { + return children[0]; + } + if (shapeFlag & 32 && isFunction(children.default)) { + return children.default(); + } + } +} +function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + vnode.transition = hooks; + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } +} +function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; +} + +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineComponent(options, extraOptions) { + return isFunction(options) ? ( + // #8236: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; +} + +function useId() { + const i = getCurrentInstance(); + if (i) { + return (i.appContext.config.idPrefix || "v") + "-" + i.ids[0] + i.ids[1]++; + } else { + warn$1( + `useId() is called when there is no active component instance to be associated with.` + ); + } + return ""; +} +function markAsyncBoundary(instance) { + instance.ids = [instance.ids[0] + instance.ids[2]++ + "-", 0, 0]; +} + +const knownTemplateRefs = /* @__PURE__ */ new WeakSet(); +function useTemplateRef(key) { + const i = getCurrentInstance(); + const r = shallowRef(null); + if (i) { + const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs; + let desc; + if ((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) { + warn$1(`useTemplateRef('${key}') already exists.`); + } else { + Object.defineProperty(refs, key, { + enumerable: true, + get: () => r.value, + set: (val) => r.value = val + }); + } + } else { + warn$1( + `useTemplateRef() is called when there is no active component instance to be associated with.` + ); + } + const ret = readonly(r) ; + { + knownTemplateRefs.add(ret); + } + return ret; +} + +function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { + if (isArray(rawRef)) { + rawRef.forEach( + (r, i) => setRef( + r, + oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), + parentSuspense, + vnode, + isUnmount + ) + ); + return; + } + if (isAsyncWrapper(vnode) && !isUnmount) { + if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) { + setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree); + } + return; + } + const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el; + const value = isUnmount ? null : refValue; + const { i: owner, r: ref } = rawRef; + if (!owner) { + warn$1( + `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.` + ); + return; + } + const oldRef = oldRawRef && oldRawRef.r; + const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs; + const setupState = owner.setupState; + const rawSetupState = toRaw(setupState); + const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => { + { + if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) { + warn$1( + `Template ref "${key}" used on a non-ref value. It will not work in the production build.` + ); + } + if (knownTemplateRefs.has(rawSetupState[key])) { + return false; + } + } + return hasOwn(rawSetupState, key); + }; + if (oldRef != null && oldRef !== ref) { + if (isString(oldRef)) { + refs[oldRef] = null; + if (canSetSetupRef(oldRef)) { + setupState[oldRef] = null; + } + } else if (isRef(oldRef)) { + oldRef.value = null; + } + } + if (isFunction(ref)) { + callWithErrorHandling(ref, owner, 12, [value, refs]); + } else { + const _isString = isString(ref); + const _isRef = isRef(ref); + if (_isString || _isRef) { + const doSet = () => { + if (rawRef.f) { + const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value; + if (isUnmount) { + isArray(existing) && remove(existing, refValue); + } else { + if (!isArray(existing)) { + if (_isString) { + refs[ref] = [refValue]; + if (canSetSetupRef(ref)) { + setupState[ref] = refs[ref]; + } + } else { + ref.value = [refValue]; + if (rawRef.k) refs[rawRef.k] = ref.value; + } + } else if (!existing.includes(refValue)) { + existing.push(refValue); + } + } + } else if (_isString) { + refs[ref] = value; + if (canSetSetupRef(ref)) { + setupState[ref] = value; + } + } else if (_isRef) { + ref.value = value; + if (rawRef.k) refs[rawRef.k] = value; + } else { + warn$1("Invalid template ref type:", ref, `(${typeof ref})`); + } + }; + if (value) { + doSet.id = -1; + queuePostRenderEffect(doSet, parentSuspense); + } else { + doSet(); + } + } else { + warn$1("Invalid template ref type:", ref, `(${typeof ref})`); + } + } +} + +let hasLoggedMismatchError = false; +const logMismatchError = () => { + if (hasLoggedMismatchError) { + return; + } + console.error("Hydration completed but contains mismatches."); + hasLoggedMismatchError = true; +}; +const isSVGContainer = (container) => container.namespaceURI.includes("svg") && container.tagName !== "foreignObject"; +const isMathMLContainer = (container) => container.namespaceURI.includes("MathML"); +const getContainerType = (container) => { + if (container.nodeType !== 1) return void 0; + if (isSVGContainer(container)) return "svg"; + if (isMathMLContainer(container)) return "mathml"; + return void 0; +}; +const isComment = (node) => node.nodeType === 8; +function createHydrationFunctions(rendererInternals) { + const { + mt: mountComponent, + p: patch, + o: { + patchProp, + createText, + nextSibling, + parentNode, + remove, + insert, + createComment + } + } = rendererInternals; + const hydrate = (vnode, container) => { + if (!container.hasChildNodes()) { + warn$1( + `Attempting to hydrate existing markup but container is empty. Performing full mount instead.` + ); + patch(null, vnode, container); + flushPostFlushCbs(); + container._vnode = vnode; + return; + } + hydrateNode(container.firstChild, vnode, null, null, null); + flushPostFlushCbs(); + container._vnode = vnode; + }; + const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => { + optimized = optimized || !!vnode.dynamicChildren; + const isFragmentStart = isComment(node) && node.data === "["; + const onMismatch = () => handleMismatch( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + isFragmentStart + ); + const { type, ref, shapeFlag, patchFlag } = vnode; + let domType = node.nodeType; + vnode.el = node; + { + def(node, "__vnode", vnode, true); + def(node, "__vueParentComponent", parentComponent, true); + } + if (patchFlag === -2) { + optimized = false; + vnode.dynamicChildren = null; + } + let nextNode = null; + switch (type) { + case Text: + if (domType !== 3) { + if (vnode.children === "") { + insert(vnode.el = createText(""), parentNode(node), node); + nextNode = node; + } else { + nextNode = onMismatch(); + } + } else { + if (node.data !== vnode.children) { + warn$1( + `Hydration text mismatch in`, + node.parentNode, + ` + - rendered on server: ${JSON.stringify( + node.data + )} + - expected on client: ${JSON.stringify(vnode.children)}` + ); + logMismatchError(); + node.data = vnode.children; + } + nextNode = nextSibling(node); + } + break; + case Comment: + if (isTemplateNode(node)) { + nextNode = nextSibling(node); + replaceNode( + vnode.el = node.content.firstChild, + node, + parentComponent + ); + } else if (domType !== 8 || isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = nextSibling(node); + } + break; + case Static: + if (isFragmentStart) { + node = nextSibling(node); + domType = node.nodeType; + } + if (domType === 1 || domType === 3) { + nextNode = node; + const needToAdoptContent = !vnode.children.length; + for (let i = 0; i < vnode.staticCount; i++) { + if (needToAdoptContent) + vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data; + if (i === vnode.staticCount - 1) { + vnode.anchor = nextNode; + } + nextNode = nextSibling(nextNode); + } + return isFragmentStart ? nextSibling(nextNode) : nextNode; + } else { + onMismatch(); + } + break; + case Fragment: + if (!isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = hydrateFragment( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + break; + default: + if (shapeFlag & 1) { + if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) { + nextNode = onMismatch(); + } else { + nextNode = hydrateElement( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } else if (shapeFlag & 6) { + vnode.slotScopeIds = slotScopeIds; + const container = parentNode(node); + if (isFragmentStart) { + nextNode = locateClosingAnchor(node); + } else if (isComment(node) && node.data === "teleport start") { + nextNode = locateClosingAnchor(node, node.data, "teleport end"); + } else { + nextNode = nextSibling(node); + } + mountComponent( + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + optimized + ); + if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) { + let subTree; + if (isFragmentStart) { + subTree = createVNode(Fragment); + subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild; + } else { + subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div"); + } + subTree.el = node; + vnode.component.subTree = subTree; + } + } else if (shapeFlag & 64) { + if (domType !== 8) { + nextNode = onMismatch(); + } else { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized, + rendererInternals, + hydrateChildren + ); + } + } else if (shapeFlag & 128) { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + getContainerType(parentNode(node)), + slotScopeIds, + optimized, + rendererInternals, + hydrateNode + ); + } else { + warn$1("Invalid HostVNode type:", type, `(${typeof type})`); + } + } + if (ref != null) { + setRef(ref, null, parentSuspense, vnode); + } + return nextNode; + }; + const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!vnode.dynamicChildren; + const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode; + const forcePatch = type === "input" || type === "option"; + { + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + let needCallTransitionHooks = false; + if (isTemplateNode(el)) { + needCallTransitionHooks = needTransition( + null, + // no need check parentSuspense in hydration + transition + ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear; + const content = el.content.firstChild; + if (needCallTransitionHooks) { + const cls = content.getAttribute("class"); + if (cls) content.$cls = cls; + transition.beforeEnter(content); + } + replaceNode(content, el, parentComponent); + vnode.el = el = content; + } + if (shapeFlag & 16 && // skip if element has innerHTML / textContent + !(props && (props.innerHTML || props.textContent))) { + let next = hydrateChildren( + el.firstChild, + vnode, + el, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + let hasWarned = false; + while (next) { + if (!isMismatchAllowed(el, 1 /* CHILDREN */)) { + if (!hasWarned) { + warn$1( + `Hydration children mismatch on`, + el, + ` +Server rendered element contains more child nodes than client vdom.` + ); + hasWarned = true; + } + logMismatchError(); + } + const cur = next; + next = next.nextSibling; + remove(cur); + } + } else if (shapeFlag & 8) { + let clientText = vnode.children; + if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) { + clientText = clientText.slice(1); + } + if (el.textContent !== clientText) { + if (!isMismatchAllowed(el, 0 /* TEXT */)) { + warn$1( + `Hydration text content mismatch on`, + el, + ` + - rendered on server: ${el.textContent} + - expected on client: ${vnode.children}` + ); + logMismatchError(); + } + el.textContent = vnode.children; + } + } + if (props) { + { + const isCustomElement = el.tagName.includes("-"); + for (const key in props) { + if (// #11189 skip if this node has directives that have created hooks + // as it could have mutated the DOM in any possible way + !(dirs && dirs.some((d) => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent)) { + logMismatchError(); + } + if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers + key[0] === "." || isCustomElement) { + patchProp(el, key, null, props[key], void 0, parentComponent); + } + } + } + } + let vnodeHooks; + if (vnodeHooks = props && props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHooks, parentComponent, vnode); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) { + queueEffectWithSuspense(() => { + vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + } + return el.nextSibling; + }; + const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!parentVNode.dynamicChildren; + const children = parentVNode.children; + const l = children.length; + let hasWarned = false; + for (let i = 0; i < l; i++) { + const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]); + const isText = vnode.type === Text; + if (node) { + if (isText && !optimized) { + if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) { + insert( + createText( + node.data.slice(vnode.children.length) + ), + container, + nextSibling(node) + ); + node.data = vnode.children; + } + } + node = hydrateNode( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } else if (isText && !vnode.children) { + insert(vnode.el = createText(""), container); + } else { + if (!isMismatchAllowed(container, 1 /* CHILDREN */)) { + if (!hasWarned) { + warn$1( + `Hydration children mismatch on`, + container, + ` +Server rendered element contains fewer child nodes than client vdom.` + ); + hasWarned = true; + } + logMismatchError(); + } + patch( + null, + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + } + } + return node; + }; + const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + const { slotScopeIds: fragmentSlotScopeIds } = vnode; + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + const container = parentNode(node); + const next = hydrateChildren( + nextSibling(node), + vnode, + container, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + if (next && isComment(next) && next.data === "]") { + return nextSibling(vnode.anchor = next); + } else { + logMismatchError(); + insert(vnode.anchor = createComment(`]`), container, next); + return next; + } + }; + const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => { + if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) { + warn$1( + `Hydration node mismatch: +- rendered on server:`, + node, + node.nodeType === 3 ? `(text)` : isComment(node) && node.data === "[" ? `(start of fragment)` : ``, + ` +- expected on client:`, + vnode.type + ); + logMismatchError(); + } + vnode.el = null; + if (isFragment) { + const end = locateClosingAnchor(node); + while (true) { + const next2 = nextSibling(node); + if (next2 && next2 !== end) { + remove(next2); + } else { + break; + } + } + } + const next = nextSibling(node); + const container = parentNode(node); + remove(node); + patch( + null, + vnode, + container, + next, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + if (parentComponent) { + parentComponent.vnode.el = vnode.el; + updateHOCHostEl(parentComponent, vnode.el); + } + return next; + }; + const locateClosingAnchor = (node, open = "[", close = "]") => { + let match = 0; + while (node) { + node = nextSibling(node); + if (node && isComment(node)) { + if (node.data === open) match++; + if (node.data === close) { + if (match === 0) { + return nextSibling(node); + } else { + match--; + } + } + } + } + return node; + }; + const replaceNode = (newNode, oldNode, parentComponent) => { + const parentNode2 = oldNode.parentNode; + if (parentNode2) { + parentNode2.replaceChild(newNode, oldNode); + } + let parent = parentComponent; + while (parent) { + if (parent.vnode.el === oldNode) { + parent.vnode.el = parent.subTree.el = newNode; + } + parent = parent.parent; + } + }; + const isTemplateNode = (node) => { + return node.nodeType === 1 && node.tagName === "TEMPLATE"; + }; + return [hydrate, hydrateNode]; +} +function propHasMismatch(el, key, clientValue, vnode, instance) { + let mismatchType; + let mismatchKey; + let actual; + let expected; + if (key === "class") { + if (el.$cls) { + actual = el.$cls; + delete el.$cls; + } else { + actual = el.getAttribute("class"); + } + expected = normalizeClass(clientValue); + if (!isSetEqual(toClassSet(actual || ""), toClassSet(expected))) { + mismatchType = 2 /* CLASS */; + mismatchKey = `class`; + } + } else if (key === "style") { + actual = el.getAttribute("style") || ""; + expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue)); + const actualMap = toStyleMap(actual); + const expectedMap = toStyleMap(expected); + if (vnode.dirs) { + for (const { dir, value } of vnode.dirs) { + if (dir.name === "show" && !value) { + expectedMap.set("display", "none"); + } + } + } + if (instance) { + resolveCssVars(instance, vnode, expectedMap); + } + if (!isMapEqual(actualMap, expectedMap)) { + mismatchType = 3 /* STYLE */; + mismatchKey = "style"; + } + } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) { + if (isBooleanAttr(key)) { + actual = el.hasAttribute(key); + expected = includeBooleanAttr(clientValue); + } else if (clientValue == null) { + actual = el.hasAttribute(key); + expected = false; + } else { + if (el.hasAttribute(key)) { + actual = el.getAttribute(key); + } else if (key === "value" && el.tagName === "TEXTAREA") { + actual = el.value; + } else { + actual = false; + } + expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false; + } + if (actual !== expected) { + mismatchType = 4 /* ATTRIBUTE */; + mismatchKey = key; + } + } + if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) { + const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}="${v}"`; + const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`; + const postSegment = ` + - rendered on server: ${format(actual)} + - expected on client: ${format(expected)} + Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead. + You should fix the source of the mismatch.`; + { + warn$1(preSegment, el, postSegment); + } + return true; + } + return false; +} +function toClassSet(str) { + return new Set(str.trim().split(/\s+/)); +} +function isSetEqual(a, b) { + if (a.size !== b.size) { + return false; + } + for (const s of a) { + if (!b.has(s)) { + return false; + } + } + return true; +} +function toStyleMap(str) { + const styleMap = /* @__PURE__ */ new Map(); + for (const item of str.split(";")) { + let [key, value] = item.split(":"); + key = key.trim(); + value = value && value.trim(); + if (key && value) { + styleMap.set(key, value); + } + } + return styleMap; +} +function isMapEqual(a, b) { + if (a.size !== b.size) { + return false; + } + for (const [key, value] of a) { + if (value !== b.get(key)) { + return false; + } + } + return true; +} +function resolveCssVars(instance, vnode, expectedMap) { + const root = instance.subTree; + if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) { + const cssVars = instance.getCssVars(); + for (const key in cssVars) { + const value = normalizeCssVarValue(cssVars[key]); + expectedMap.set(`--${getEscapedCssVarName(key)}`, value); + } + } + if (vnode === root && instance.parent) { + resolveCssVars(instance.parent, instance.vnode, expectedMap); + } +} +const allowMismatchAttr = "data-allow-mismatch"; +const MismatchTypeString = { + [0 /* TEXT */]: "text", + [1 /* CHILDREN */]: "children", + [2 /* CLASS */]: "class", + [3 /* STYLE */]: "style", + [4 /* ATTRIBUTE */]: "attribute" +}; +function isMismatchAllowed(el, allowedType) { + if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) { + while (el && !el.hasAttribute(allowMismatchAttr)) { + el = el.parentElement; + } + } + const allowedAttr = el && el.getAttribute(allowMismatchAttr); + if (allowedAttr == null) { + return false; + } else if (allowedAttr === "") { + return true; + } else { + const list = allowedAttr.split(","); + if (allowedType === 0 /* TEXT */ && list.includes("children")) { + return true; + } + return list.includes(MismatchTypeString[allowedType]); + } +} + +const requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1)); +const cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id)); +const hydrateOnIdle = (timeout = 1e4) => (hydrate) => { + const id = requestIdleCallback(hydrate, { timeout }); + return () => cancelIdleCallback(id); +}; +function elementIsVisibleInViewport(el) { + const { top, left, bottom, right } = el.getBoundingClientRect(); + const { innerHeight, innerWidth } = window; + return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth); +} +const hydrateOnVisible = (opts) => (hydrate, forEach) => { + const ob = new IntersectionObserver((entries) => { + for (const e of entries) { + if (!e.isIntersecting) continue; + ob.disconnect(); + hydrate(); + break; + } + }, opts); + forEach((el) => { + if (!(el instanceof Element)) return; + if (elementIsVisibleInViewport(el)) { + hydrate(); + ob.disconnect(); + return false; + } + ob.observe(el); + }); + return () => ob.disconnect(); +}; +const hydrateOnMediaQuery = (query) => (hydrate) => { + if (query) { + const mql = matchMedia(query); + if (mql.matches) { + hydrate(); + } else { + mql.addEventListener("change", hydrate, { once: true }); + return () => mql.removeEventListener("change", hydrate); + } + } +}; +const hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => { + if (isString(interactions)) interactions = [interactions]; + let hasHydrated = false; + const doHydrate = (e) => { + if (!hasHydrated) { + hasHydrated = true; + teardown(); + hydrate(); + e.target.dispatchEvent(new e.constructor(e.type, e)); + } + }; + const teardown = () => { + forEach((el) => { + for (const i of interactions) { + el.removeEventListener(i, doHydrate); + } + }); + }; + forEach((el) => { + for (const i of interactions) { + el.addEventListener(i, doHydrate, { once: true }); + } + }); + return teardown; +}; +function forEachElement(node, cb) { + if (isComment(node) && node.data === "[") { + let depth = 1; + let next = node.nextSibling; + while (next) { + if (next.nodeType === 1) { + const result = cb(next); + if (result === false) { + break; + } + } else if (isComment(next)) { + if (next.data === "]") { + if (--depth === 0) break; + } else if (next.data === "[") { + depth++; + } + } + next = next.nextSibling; + } + } else { + cb(node); + } +} + +const isAsyncWrapper = (i) => !!i.type.__asyncLoader; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineAsyncComponent(source) { + if (isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + hydrate: hydrateStrategy, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve, reject) => { + const userRetry = () => resolve(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (!comp) { + warn$1( + `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` + ); + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + if (comp && !isObject(comp) && !isFunction(comp)) { + throw new Error(`Invalid async component load result: ${comp}`); + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + __asyncHydrate(el, instance, hydrate) { + let patched = false; + (instance.bu || (instance.bu = [])).push(() => patched = true); + const performHydrate = () => { + if (patched) { + { + warn$1( + `Skipping lazy hydration for component '${getComponentName(resolvedComp) || resolvedComp.__file}': it was updated before lazy hydration performed.` + ); + } + return; + } + hydrate(); + }; + const doHydrate = hydrateStrategy ? () => { + const teardown = hydrateStrategy( + performHydrate, + (cb) => forEachElement(el, cb) + ); + if (teardown) { + (instance.bum || (instance.bum = [])).push(teardown); + } + } : performHydrate; + if (resolvedComp) { + doHydrate(); + } else { + load().then(() => !instance.isUnmounted && doHydrate()); + } + }, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + markAsyncBoundary(instance); + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + ); + }; + if (suspensible && instance.suspense || isInSSRComponentSetup) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = ref(false); + const error = ref(); + const delayed = ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + instance.parent.update(); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); +} +function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; +} + +const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +const KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + if (!sharedContext.renderer) { + return () => { + const children = slots.default && slots.default(); + return children && children.length === 1 ? children[0] : children; + }; + } + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + { + instance.__v_cache = cache; + } + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, namespace, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + namespace, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + invalidateMount(instance2.m); + invalidateMount(instance2.a); + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + { + instance2.__keepAliveStorageContainer = storageContainer; + } + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(vnode.type); + if (name && !filter(name)) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (cached && (!current || !isSameVNodeType(cached, current))) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + watch( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + if (isSuspense(instance.subTree.type)) { + queuePostRenderEffect(() => { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + }, instance.subTree.suspense); + } else { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return current = null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + { + warn$1(`KeepAlive should contain exactly one component child.`); + } + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + if (vnode.type === Comment) { + current = null; + return vnode; + } + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + vnode.shapeFlag &= -257; + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } +}; +const KeepAlive = KeepAliveImpl; +function matches(pattern, name) { + if (isArray(pattern)) { + return pattern.some((p) => matches(p, name)); + } else if (isString(pattern)) { + return pattern.split(",").includes(name); + } else if (isRegExp(pattern)) { + pattern.lastIndex = 0; + return pattern.test(name); + } + return false; +} +function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); +} +function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); +} +function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } +} +function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + remove(keepAliveRoot[type], injected); + }, target); +} +function resetShapeFlag(vnode) { + vnode.shapeFlag &= -257; + vnode.shapeFlag &= -513; +} +function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; +} + +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + pauseTracking(); + const reset = setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + reset(); + resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } else { + const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, "")); + warn$1( + `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` ) + ); + } +} +const createHook = (lifecycle) => (hook, target = currentInstance) => { + if (!isInSSRComponentSetup || lifecycle === "sp") { + injectHook(lifecycle, (...args) => hook(...args), target); + } +}; +const onBeforeMount = createHook("bm"); +const onMounted = createHook("m"); +const onBeforeUpdate = createHook( + "bu" +); +const onUpdated = createHook("u"); +const onBeforeUnmount = createHook( + "bum" +); +const onUnmounted = createHook("um"); +const onServerPrefetch = createHook( + "sp" +); +const onRenderTriggered = createHook("rtg"); +const onRenderTracked = createHook("rtc"); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} + +const COMPONENTS = "components"; +const DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + ); + if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + if (warnMissing && !res) { + const extra = type === COMPONENTS ? ` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; + warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } else { + warn$1( + `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().` + ); + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]); +} + +function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + const sourceIsArray = isArray(source); + if (sourceIsArray || isString(source)) { + const sourceIsReactiveArray = sourceIsArray && isReactive(source); + let needsWrap = false; + let isReadonlySource = false; + if (sourceIsReactiveArray) { + needsWrap = !isShallow(source); + isReadonlySource = isReadonly(source); + source = shallowReadArray(source); + } + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem( + needsWrap ? isReadonlySource ? toReadonly(toReactive(source[i])) : toReactive(source[i]) : source[i], + i, + void 0, + cached && cached[i] + ); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn$1(`The v-for range expect an integer value but got ${source}.`); + } + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; +} + +function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; +} + +function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) { + if (name !== "default") props.name = name; + return openBlock(), createBlock( + Fragment, + null, + [createVNode("slot", props, fallback && fallback())], + 64 + ); + } + let slot = slots[name]; + if (slot && slot.length > 1) { + warn$1( + `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` + ); + slot = () => []; + } + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key; + const rendered = createBlock( + Fragment, + { + key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content + (!validSlotContent && fallback ? "_fb" : "") + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) return true; + if (child.type === Comment) return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} + +function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + if (!isObject(obj)) { + warn$1(`v-on with no argument expects an object value.`); + return ret; + } + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key]; + } + return ret; +} + +const getPublicInstance = (i) => { + if (!i) return null; + if (isStatefulComponent(i)) return getComponentPublicInstance(i); + return getPublicInstance(i.parent); +}; +const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => shallowReadonly(i.props) , + $attrs: (i) => shallowReadonly(i.attrs) , + $slots: (i) => shallowReadonly(i.slots) , + $refs: (i) => shallowReadonly(i.refs) , + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $host: (i) => i.ce, + $emit: (i) => i.emit, + $options: (i) => resolveMergedOptions(i) , + $forceUpdate: (i) => i.f || (i.f = () => { + queueJob(i.update); + }), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => instanceWatch.bind(i) + }) +); +const isReservedPrefix = (key) => key === "_" || key === "$"; +const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); +const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + if (key === "__v_skip") { + return true; + } + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if (shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + track(instance.attrs, "get", ""); + markAttrsAccessed(); + } else if (key === "$slots") { + track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf("__v") !== 0)) { + if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { + warn$1( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); + } else if (instance === currentRenderingInstance) { + warn$1( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) { + warn$1(`Cannot mutate <script setup> binding "${key}" from Options API.`); + return false; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + data[key] = value; + return true; + } else if (hasOwn(instance.props, key)) { + warn$1(`Attempting to mutate prop "${key}". Props are readonly.`); + return false; + } + if (key[0] === "$" && key.slice(1) in instance) { + warn$1( + `Attempting to mutate public property "${key}". Properties starting with $ are reserved and readonly.` + ); + return false; + } else { + if (key in instance.appContext.config.globalProperties) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + value + }); + } else { + ctx[key] = value; + } + } + return true; + }, + has({ + _: { data, setupState, accessCache, ctx, appContext, propsOptions } + }, key) { + let normalizedProps; + return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key); + }, + defineProperty(target, key, descriptor) { + if (descriptor.get != null) { + target._.accessCache[key] = 0; + } else if (hasOwn(descriptor, "value")) { + this.set(target, key, descriptor.value, null); + } + return Reflect.defineProperty(target, key, descriptor); + } +}; +{ + PublicInstanceProxyHandlers.ownKeys = (target) => { + warn$1( + `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.` + ); + return Reflect.ownKeys(target); + }; +} +const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend({}, PublicInstanceProxyHandlers, { + get(target, key) { + if (key === Symbol.unscopables) { + return; + } + return PublicInstanceProxyHandlers.get(target, key, target); + }, + has(_, key) { + const has = key[0] !== "_" && !isGloballyAllowed(key); + if (!has && PublicInstanceProxyHandlers.has(_, key)) { + warn$1( + `Property ${JSON.stringify( + key + )} should not start with _ which is a reserved prefix for Vue internals.` + ); + } + return has; + } +}); +function createDevRenderContext(instance) { + const target = {}; + Object.defineProperty(target, `_`, { + configurable: true, + enumerable: false, + get: () => instance + }); + Object.keys(publicPropertiesMap).forEach((key) => { + Object.defineProperty(target, key, { + configurable: true, + enumerable: false, + get: () => publicPropertiesMap[key](instance), + // intercepted by the proxy so no need for implementation, + // but needed to prevent set errors + set: NOOP + }); + }); + return target; +} +function exposePropsOnRenderContext(instance) { + const { + ctx, + propsOptions: [propsOptions] + } = instance; + if (propsOptions) { + Object.keys(propsOptions).forEach((key) => { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => instance.props[key], + set: NOOP + }); + }); + } +} +function exposeSetupStateOnRenderContext(instance) { + const { ctx, setupState } = instance; + Object.keys(toRaw(setupState)).forEach((key) => { + if (!setupState.__isScriptSetup) { + if (isReservedPrefix(key[0])) { + warn$1( + `setup() return property ${JSON.stringify( + key + )} should not start with "$" or "_" which are reserved prefixes for Vue internals.` + ); + return; + } + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => setupState[key], + set: NOOP + }); + } + }); +} + +const warnRuntimeUsage = (method) => warn$1( + `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.` +); +function defineProps() { + { + warnRuntimeUsage(`defineProps`); + } + return null; +} +function defineEmits() { + { + warnRuntimeUsage(`defineEmits`); + } + return null; +} +function defineExpose(exposed) { + { + warnRuntimeUsage(`defineExpose`); + } +} +function defineOptions(options) { + { + warnRuntimeUsage(`defineOptions`); + } +} +function defineSlots() { + { + warnRuntimeUsage(`defineSlots`); + } + return null; +} +function defineModel() { + { + warnRuntimeUsage("defineModel"); + } +} +function withDefaults(props, defaults) { + { + warnRuntimeUsage(`withDefaults`); + } + return null; +} +function useSlots() { + return getContext("useSlots").slots; +} +function useAttrs() { + return getContext("useAttrs").attrs; +} +function getContext(calledFunctionName) { + const i = getCurrentInstance(); + if (!i) { + warn$1(`${calledFunctionName}() called without active instance.`); + } + return i.setupContext || (i.setupContext = createSetupContext(i)); +} +function normalizePropsOrEmits(props) { + return isArray(props) ? props.reduce( + (normalized, p) => (normalized[p] = null, normalized), + {} + ) : props; +} +function mergeDefaults(raw, defaults) { + const props = normalizePropsOrEmits(raw); + for (const key in defaults) { + if (key.startsWith("__skip")) continue; + let opt = props[key]; + if (opt) { + if (isArray(opt) || isFunction(opt)) { + opt = props[key] = { type: opt, default: defaults[key] }; + } else { + opt.default = defaults[key]; + } + } else if (opt === null) { + opt = props[key] = { default: defaults[key] }; + } else { + warn$1(`props default key "${key}" has no corresponding declaration.`); + } + if (opt && defaults[`__skip_${key}`]) { + opt.skipFactory = true; + } + } + return props; +} +function mergeModels(a, b) { + if (!a || !b) return a || b; + if (isArray(a) && isArray(b)) return a.concat(b); + return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b)); +} +function createPropsRestProxy(props, excludedKeys) { + const ret = {}; + for (const key in props) { + if (!excludedKeys.includes(key)) { + Object.defineProperty(ret, key, { + enumerable: true, + get: () => props[key] + }); + } + } + return ret; +} +function withAsyncContext(getAwaitable) { + const ctx = getCurrentInstance(); + if (!ctx) { + warn$1( + `withAsyncContext called without active current instance. This is likely a bug.` + ); + } + let awaitable = getAwaitable(); + unsetCurrentInstance(); + if (isPromise(awaitable)) { + awaitable = awaitable.catch((e) => { + setCurrentInstance(ctx); + throw e; + }); + } + return [awaitable, () => setCurrentInstance(ctx)]; +} + +function createDuplicateChecker() { + const cache = /* @__PURE__ */ Object.create(null); + return (type, key) => { + if (cache[key]) { + warn$1(`${type} property "${key}" is already defined in ${cache[key]}.`); + } else { + cache[key] = type; + } + }; +} +let shouldCacheAccess = true; +function applyOptions(instance) { + const options = resolveMergedOptions(instance); + const publicThis = instance.proxy; + const ctx = instance.ctx; + shouldCacheAccess = false; + if (options.beforeCreate) { + callHook$1(options.beforeCreate, instance, "bc"); + } + const { + // state + data: dataOptions, + computed: computedOptions, + methods, + watch: watchOptions, + provide: provideOptions, + inject: injectOptions, + // lifecycle + created, + beforeMount, + mounted, + beforeUpdate, + updated, + activated, + deactivated, + beforeDestroy, + beforeUnmount, + destroyed, + unmounted, + render, + renderTracked, + renderTriggered, + errorCaptured, + serverPrefetch, + // public API + expose, + inheritAttrs, + // assets + components, + directives, + filters + } = options; + const checkDuplicateProperties = createDuplicateChecker() ; + { + const [propsOptions] = instance.propsOptions; + if (propsOptions) { + for (const key in propsOptions) { + checkDuplicateProperties("Props" /* PROPS */, key); + } + } + } + if (injectOptions) { + resolveInjections(injectOptions, ctx, checkDuplicateProperties); + } + if (methods) { + for (const key in methods) { + const methodHandler = methods[key]; + if (isFunction(methodHandler)) { + { + Object.defineProperty(ctx, key, { + value: methodHandler.bind(publicThis), + configurable: true, + enumerable: true, + writable: true + }); + } + { + checkDuplicateProperties("Methods" /* METHODS */, key); + } + } else { + warn$1( + `Method "${key}" has type "${typeof methodHandler}" in the component definition. Did you reference the function correctly?` + ); + } + } + } + if (dataOptions) { + if (!isFunction(dataOptions)) { + warn$1( + `The data option must be a function. Plain object usage is no longer supported.` + ); + } + const data = dataOptions.call(publicThis, publicThis); + if (isPromise(data)) { + warn$1( + `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.` + ); + } + if (!isObject(data)) { + warn$1(`data() should return an object.`); + } else { + instance.data = reactive(data); + { + for (const key in data) { + checkDuplicateProperties("Data" /* DATA */, key); + if (!isReservedPrefix(key[0])) { + Object.defineProperty(ctx, key, { + configurable: true, + enumerable: true, + get: () => data[key], + set: NOOP + }); + } + } + } + } + } + shouldCacheAccess = true; + if (computedOptions) { + for (const key in computedOptions) { + const opt = computedOptions[key]; + const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP; + if (get === NOOP) { + warn$1(`Computed property "${key}" has no getter.`); + } + const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : () => { + warn$1( + `Write operation failed: computed property "${key}" is readonly.` + ); + } ; + const c = computed({ + get, + set + }); + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => c.value, + set: (v) => c.value = v + }); + { + checkDuplicateProperties("Computed" /* COMPUTED */, key); + } + } + } + if (watchOptions) { + for (const key in watchOptions) { + createWatcher(watchOptions[key], ctx, publicThis, key); + } + } + if (provideOptions) { + const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions; + Reflect.ownKeys(provides).forEach((key) => { + provide(key, provides[key]); + }); + } + if (created) { + callHook$1(created, instance, "c"); + } + function registerLifecycleHook(register, hook) { + if (isArray(hook)) { + hook.forEach((_hook) => register(_hook.bind(publicThis))); + } else if (hook) { + register(hook.bind(publicThis)); + } + } + registerLifecycleHook(onBeforeMount, beforeMount); + registerLifecycleHook(onMounted, mounted); + registerLifecycleHook(onBeforeUpdate, beforeUpdate); + registerLifecycleHook(onUpdated, updated); + registerLifecycleHook(onActivated, activated); + registerLifecycleHook(onDeactivated, deactivated); + registerLifecycleHook(onErrorCaptured, errorCaptured); + registerLifecycleHook(onRenderTracked, renderTracked); + registerLifecycleHook(onRenderTriggered, renderTriggered); + registerLifecycleHook(onBeforeUnmount, beforeUnmount); + registerLifecycleHook(onUnmounted, unmounted); + registerLifecycleHook(onServerPrefetch, serverPrefetch); + if (isArray(expose)) { + if (expose.length) { + const exposed = instance.exposed || (instance.exposed = {}); + expose.forEach((key) => { + Object.defineProperty(exposed, key, { + get: () => publicThis[key], + set: (val) => publicThis[key] = val, + enumerable: true + }); + }); + } else if (!instance.exposed) { + instance.exposed = {}; + } + } + if (render && instance.render === NOOP) { + instance.render = render; + } + if (inheritAttrs != null) { + instance.inheritAttrs = inheritAttrs; + } + if (components) instance.components = components; + if (directives) instance.directives = directives; + if (serverPrefetch) { + markAsyncBoundary(instance); + } +} +function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) { + if (isArray(injectOptions)) { + injectOptions = normalizeInject(injectOptions); + } + for (const key in injectOptions) { + const opt = injectOptions[key]; + let injected; + if (isObject(opt)) { + if ("default" in opt) { + injected = inject( + opt.from || key, + opt.default, + true + ); + } else { + injected = inject(opt.from || key); + } + } else { + injected = inject(opt); + } + if (isRef(injected)) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => injected.value, + set: (v) => injected.value = v + }); + } else { + ctx[key] = injected; + } + { + checkDuplicateProperties("Inject" /* INJECT */, key); + } + } +} +function callHook$1(hook, instance, type) { + callWithAsyncErrorHandling( + isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy), + instance, + type + ); +} +function createWatcher(raw, ctx, publicThis, key) { + let getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; + if (isString(raw)) { + const handler = ctx[raw]; + if (isFunction(handler)) { + { + watch(getter, handler); + } + } else { + warn$1(`Invalid watch handler specified by key "${raw}"`, handler); + } + } else if (isFunction(raw)) { + { + watch(getter, raw.bind(publicThis)); + } + } else if (isObject(raw)) { + if (isArray(raw)) { + raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); + } else { + const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; + if (isFunction(handler)) { + watch(getter, handler, raw); + } else { + warn$1(`Invalid watch handler specified by key "${raw.handler}"`, handler); + } + } + } else { + warn$1(`Invalid watch option: "${key}"`, raw); + } +} +function resolveMergedOptions(instance) { + const base = instance.type; + const { mixins, extends: extendsOptions } = base; + const { + mixins: globalMixins, + optionsCache: cache, + config: { optionMergeStrategies } + } = instance.appContext; + const cached = cache.get(base); + let resolved; + if (cached) { + resolved = cached; + } else if (!globalMixins.length && !mixins && !extendsOptions) { + { + resolved = base; + } + } else { + resolved = {}; + if (globalMixins.length) { + globalMixins.forEach( + (m) => mergeOptions(resolved, m, optionMergeStrategies, true) + ); + } + mergeOptions(resolved, base, optionMergeStrategies); + } + if (isObject(base)) { + cache.set(base, resolved); + } + return resolved; +} +function mergeOptions(to, from, strats, asMixin = false) { + const { mixins, extends: extendsOptions } = from; + if (extendsOptions) { + mergeOptions(to, extendsOptions, strats, true); + } + if (mixins) { + mixins.forEach( + (m) => mergeOptions(to, m, strats, true) + ); + } + for (const key in from) { + if (asMixin && key === "expose") { + warn$1( + `"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.` + ); + } else { + const strat = internalOptionMergeStrats[key] || strats && strats[key]; + to[key] = strat ? strat(to[key], from[key]) : from[key]; + } + } + return to; +} +const internalOptionMergeStrats = { + data: mergeDataFn, + props: mergeEmitsOrPropsOptions, + emits: mergeEmitsOrPropsOptions, + // objects + methods: mergeObjectOptions, + computed: mergeObjectOptions, + // lifecycle + beforeCreate: mergeAsArray, + created: mergeAsArray, + beforeMount: mergeAsArray, + mounted: mergeAsArray, + beforeUpdate: mergeAsArray, + updated: mergeAsArray, + beforeDestroy: mergeAsArray, + beforeUnmount: mergeAsArray, + destroyed: mergeAsArray, + unmounted: mergeAsArray, + activated: mergeAsArray, + deactivated: mergeAsArray, + errorCaptured: mergeAsArray, + serverPrefetch: mergeAsArray, + // assets + components: mergeObjectOptions, + directives: mergeObjectOptions, + // watch + watch: mergeWatchOptions, + // provide / inject + provide: mergeDataFn, + inject: mergeInject +}; +function mergeDataFn(to, from) { + if (!from) { + return to; + } + if (!to) { + return from; + } + return function mergedDataFn() { + return (extend)( + isFunction(to) ? to.call(this, this) : to, + isFunction(from) ? from.call(this, this) : from + ); + }; +} +function mergeInject(to, from) { + return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); +} +function normalizeInject(raw) { + if (isArray(raw)) { + const res = {}; + for (let i = 0; i < raw.length; i++) { + res[raw[i]] = raw[i]; + } + return res; + } + return raw; +} +function mergeAsArray(to, from) { + return to ? [...new Set([].concat(to, from))] : from; +} +function mergeObjectOptions(to, from) { + return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from; +} +function mergeEmitsOrPropsOptions(to, from) { + if (to) { + if (isArray(to) && isArray(from)) { + return [.../* @__PURE__ */ new Set([...to, ...from])]; + } + return extend( + /* @__PURE__ */ Object.create(null), + normalizePropsOrEmits(to), + normalizePropsOrEmits(from != null ? from : {}) + ); + } else { + return from; + } +} +function mergeWatchOptions(to, from) { + if (!to) return from; + if (!from) return to; + const merged = extend(/* @__PURE__ */ Object.create(null), to); + for (const key in from) { + merged[key] = mergeAsArray(to[key], from[key]); + } + return merged; +} + +function createAppContext() { + return { + app: null, + config: { + isNativeTag: NO, + performance: false, + globalProperties: {}, + optionMergeStrategies: {}, + errorHandler: void 0, + warnHandler: void 0, + compilerOptions: {} + }, + mixins: [], + components: {}, + directives: {}, + provides: /* @__PURE__ */ Object.create(null), + optionsCache: /* @__PURE__ */ new WeakMap(), + propsCache: /* @__PURE__ */ new WeakMap(), + emitsCache: /* @__PURE__ */ new WeakMap() + }; +} +let uid$1 = 0; +function createAppAPI(render, hydrate) { + return function createApp(rootComponent, rootProps = null) { + if (!isFunction(rootComponent)) { + rootComponent = extend({}, rootComponent); + } + if (rootProps != null && !isObject(rootProps)) { + warn$1(`root props passed to app.mount() must be an object.`); + rootProps = null; + } + const context = createAppContext(); + const installedPlugins = /* @__PURE__ */ new WeakSet(); + const pluginCleanupFns = []; + let isMounted = false; + const app = context.app = { + _uid: uid$1++, + _component: rootComponent, + _props: rootProps, + _container: null, + _context: context, + _instance: null, + version, + get config() { + return context.config; + }, + set config(v) { + { + warn$1( + `app.config cannot be replaced. Modify individual options instead.` + ); + } + }, + use(plugin, ...options) { + if (installedPlugins.has(plugin)) { + warn$1(`Plugin has already been applied to target app.`); + } else if (plugin && isFunction(plugin.install)) { + installedPlugins.add(plugin); + plugin.install(app, ...options); + } else if (isFunction(plugin)) { + installedPlugins.add(plugin); + plugin(app, ...options); + } else { + warn$1( + `A plugin must either be a function or an object with an "install" function.` + ); + } + return app; + }, + mixin(mixin) { + { + if (!context.mixins.includes(mixin)) { + context.mixins.push(mixin); + } else { + warn$1( + "Mixin has already been applied to target app" + (mixin.name ? `: ${mixin.name}` : "") + ); + } + } + return app; + }, + component(name, component) { + { + validateComponentName(name, context.config); + } + if (!component) { + return context.components[name]; + } + if (context.components[name]) { + warn$1(`Component "${name}" has already been registered in target app.`); + } + context.components[name] = component; + return app; + }, + directive(name, directive) { + { + validateDirectiveName(name); + } + if (!directive) { + return context.directives[name]; + } + if (context.directives[name]) { + warn$1(`Directive "${name}" has already been registered in target app.`); + } + context.directives[name] = directive; + return app; + }, + mount(rootContainer, isHydrate, namespace) { + if (!isMounted) { + if (rootContainer.__vue_app__) { + warn$1( + `There is already an app instance mounted on the host container. + If you want to mount another app on the same host container, you need to unmount the previous app by calling \`app.unmount()\` first.` + ); + } + const vnode = app._ceVNode || createVNode(rootComponent, rootProps); + vnode.appContext = context; + if (namespace === true) { + namespace = "svg"; + } else if (namespace === false) { + namespace = void 0; + } + { + context.reload = () => { + const cloned = cloneVNode(vnode); + cloned.el = null; + render(cloned, rootContainer, namespace); + }; + } + if (isHydrate && hydrate) { + hydrate(vnode, rootContainer); + } else { + render(vnode, rootContainer, namespace); + } + isMounted = true; + app._container = rootContainer; + rootContainer.__vue_app__ = app; + { + app._instance = vnode.component; + devtoolsInitApp(app, version); + } + return getComponentPublicInstance(vnode.component); + } else { + warn$1( + `App has already been mounted. +If you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \`const createMyApp = () => createApp(App)\`` + ); + } + }, + onUnmount(cleanupFn) { + if (typeof cleanupFn !== "function") { + warn$1( + `Expected function as first argument to app.onUnmount(), but got ${typeof cleanupFn}` + ); + } + pluginCleanupFns.push(cleanupFn); + }, + unmount() { + if (isMounted) { + callWithAsyncErrorHandling( + pluginCleanupFns, + app._instance, + 16 + ); + render(null, app._container); + { + app._instance = null; + devtoolsUnmountApp(app); + } + delete app._container.__vue_app__; + } else { + warn$1(`Cannot unmount an app that is not mounted.`); + } + }, + provide(key, value) { + if (key in context.provides) { + if (hasOwn(context.provides, key)) { + warn$1( + `App already provides property with key "${String(key)}". It will be overwritten with the new value.` + ); + } else { + warn$1( + `App already provides property with key "${String(key)}" inherited from its parent element. It will be overwritten with the new value.` + ); + } + } + context.provides[key] = value; + return app; + }, + runWithContext(fn) { + const lastApp = currentApp; + currentApp = app; + try { + return fn(); + } finally { + currentApp = lastApp; + } + } + }; + return app; + }; +} +let currentApp = null; + +function provide(key, value) { + if (!currentInstance) { + { + warn$1(`provide() can only be used inside setup().`); + } + } else { + let provides = currentInstance.provides; + const parentProvides = currentInstance.parent && currentInstance.parent.provides; + if (parentProvides === provides) { + provides = currentInstance.provides = Object.create(parentProvides); + } + provides[key] = value; + } +} +function inject(key, defaultValue, treatDefaultAsFactory = false) { + const instance = getCurrentInstance(); + if (instance || currentApp) { + let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0; + if (provides && key in provides) { + return provides[key]; + } else if (arguments.length > 1) { + return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; + } else { + warn$1(`injection "${String(key)}" not found.`); + } + } else { + warn$1(`inject() can only be used inside setup() or functional components.`); + } +} +function hasInjectionContext() { + return !!(getCurrentInstance() || currentApp); +} + +const internalObjectProto = {}; +const createInternalObject = () => Object.create(internalObjectProto); +const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto; + +function initProps(instance, rawProps, isStateful, isSSR = false) { + const props = {}; + const attrs = createInternalObject(); + instance.propsDefaults = /* @__PURE__ */ Object.create(null); + setFullProps(instance, rawProps, props, attrs); + for (const key in instance.propsOptions[0]) { + if (!(key in props)) { + props[key] = void 0; + } + } + { + validateProps(rawProps || {}, props, instance); + } + if (isStateful) { + instance.props = isSSR ? props : shallowReactive(props); + } else { + if (!instance.type.props) { + instance.props = attrs; + } else { + instance.props = props; + } + } + instance.attrs = attrs; +} +function isInHmrContext(instance) { + while (instance) { + if (instance.type.__hmrId) return true; + instance = instance.parent; + } +} +function updateProps(instance, rawProps, rawPrevProps, optimized) { + const { + props, + attrs, + vnode: { patchFlag } + } = instance; + const rawCurrentProps = toRaw(props); + const [options] = instance.propsOptions; + let hasAttrsChanged = false; + if ( + // always force full diff in dev + // - #1942 if hmr is enabled with sfc component + // - vite#872 non-sfc component used by sfc component + !isInHmrContext(instance) && (optimized || patchFlag > 0) && !(patchFlag & 16) + ) { + if (patchFlag & 8) { + const propsToUpdate = instance.vnode.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + let key = propsToUpdate[i]; + if (isEmitListener(instance.emitsOptions, key)) { + continue; + } + const value = rawProps[key]; + if (options) { + if (hasOwn(attrs, key)) { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } else { + const camelizedKey = camelize(key); + props[camelizedKey] = resolvePropValue( + options, + rawCurrentProps, + camelizedKey, + value, + instance, + false + ); + } + } else { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + } else { + if (setFullProps(instance, rawProps, props, attrs)) { + hasAttrsChanged = true; + } + let kebabKey; + for (const key in rawCurrentProps) { + if (!rawProps || // for camelCase + !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case + // and converted to camelCase (#955) + ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) { + if (options) { + if (rawPrevProps && // for camelCase + (rawPrevProps[key] !== void 0 || // for kebab-case + rawPrevProps[kebabKey] !== void 0)) { + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + void 0, + instance, + true + ); + } + } else { + delete props[key]; + } + } + } + if (attrs !== rawCurrentProps) { + for (const key in attrs) { + if (!rawProps || !hasOwn(rawProps, key) && true) { + delete attrs[key]; + hasAttrsChanged = true; + } + } + } + } + if (hasAttrsChanged) { + trigger(instance.attrs, "set", ""); + } + { + validateProps(rawProps || {}, props, instance); + } +} +function setFullProps(instance, rawProps, props, attrs) { + const [options, needCastKeys] = instance.propsOptions; + let hasAttrsChanged = false; + let rawCastValues; + if (rawProps) { + for (let key in rawProps) { + if (isReservedProp(key)) { + continue; + } + const value = rawProps[key]; + let camelKey; + if (options && hasOwn(options, camelKey = camelize(key))) { + if (!needCastKeys || !needCastKeys.includes(camelKey)) { + props[camelKey] = value; + } else { + (rawCastValues || (rawCastValues = {}))[camelKey] = value; + } + } else if (!isEmitListener(instance.emitsOptions, key)) { + if (!(key in attrs) || value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + if (needCastKeys) { + const rawCurrentProps = toRaw(props); + const castValues = rawCastValues || EMPTY_OBJ; + for (let i = 0; i < needCastKeys.length; i++) { + const key = needCastKeys[i]; + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + castValues[key], + instance, + !hasOwn(castValues, key) + ); + } + } + return hasAttrsChanged; +} +function resolvePropValue(options, props, key, value, instance, isAbsent) { + const opt = options[key]; + if (opt != null) { + const hasDefault = hasOwn(opt, "default"); + if (hasDefault && value === void 0) { + const defaultValue = opt.default; + if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) { + const { propsDefaults } = instance; + if (key in propsDefaults) { + value = propsDefaults[key]; + } else { + const reset = setCurrentInstance(instance); + value = propsDefaults[key] = defaultValue.call( + null, + props + ); + reset(); + } + } else { + value = defaultValue; + } + if (instance.ce) { + instance.ce._setProp(key, value); + } + } + if (opt[0 /* shouldCast */]) { + if (isAbsent && !hasDefault) { + value = false; + } else if (opt[1 /* shouldCastTrue */] && (value === "" || value === hyphenate(key))) { + value = true; + } + } + } + return value; +} +const mixinPropsCache = /* @__PURE__ */ new WeakMap(); +function normalizePropsOptions(comp, appContext, asMixin = false) { + const cache = asMixin ? mixinPropsCache : appContext.propsCache; + const cached = cache.get(comp); + if (cached) { + return cached; + } + const raw = comp.props; + const normalized = {}; + const needCastKeys = []; + let hasExtends = false; + if (!isFunction(comp)) { + const extendProps = (raw2) => { + hasExtends = true; + const [props, keys] = normalizePropsOptions(raw2, appContext, true); + extend(normalized, props); + if (keys) needCastKeys.push(...keys); + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendProps); + } + if (comp.extends) { + extendProps(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendProps); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, EMPTY_ARR); + } + return EMPTY_ARR; + } + if (isArray(raw)) { + for (let i = 0; i < raw.length; i++) { + if (!isString(raw[i])) { + warn$1(`props must be strings when using array syntax.`, raw[i]); + } + const normalizedKey = camelize(raw[i]); + if (validatePropName(normalizedKey)) { + normalized[normalizedKey] = EMPTY_OBJ; + } + } + } else if (raw) { + if (!isObject(raw)) { + warn$1(`invalid props options`, raw); + } + for (const key in raw) { + const normalizedKey = camelize(key); + if (validatePropName(normalizedKey)) { + const opt = raw[key]; + const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt); + const propType = prop.type; + let shouldCast = false; + let shouldCastTrue = true; + if (isArray(propType)) { + for (let index = 0; index < propType.length; ++index) { + const type = propType[index]; + const typeName = isFunction(type) && type.name; + if (typeName === "Boolean") { + shouldCast = true; + break; + } else if (typeName === "String") { + shouldCastTrue = false; + } + } + } else { + shouldCast = isFunction(propType) && propType.name === "Boolean"; + } + prop[0 /* shouldCast */] = shouldCast; + prop[1 /* shouldCastTrue */] = shouldCastTrue; + if (shouldCast || hasOwn(prop, "default")) { + needCastKeys.push(normalizedKey); + } + } + } + } + const res = [normalized, needCastKeys]; + if (isObject(comp)) { + cache.set(comp, res); + } + return res; +} +function validatePropName(key) { + if (key[0] !== "$" && !isReservedProp(key)) { + return true; + } else { + warn$1(`Invalid prop name: "${key}" is a reserved property.`); + } + return false; +} +function getType(ctor) { + if (ctor === null) { + return "null"; + } + if (typeof ctor === "function") { + return ctor.name || ""; + } else if (typeof ctor === "object") { + const name = ctor.constructor && ctor.constructor.name; + return name || ""; + } + return ""; +} +function validateProps(rawProps, props, instance) { + const resolvedValues = toRaw(props); + const options = instance.propsOptions[0]; + const camelizePropsKey = Object.keys(rawProps).map((key) => camelize(key)); + for (const key in options) { + let opt = options[key]; + if (opt == null) continue; + validateProp( + key, + resolvedValues[key], + opt, + shallowReadonly(resolvedValues) , + !camelizePropsKey.includes(key) + ); + } +} +function validateProp(name, value, prop, props, isAbsent) { + const { type, required, validator, skipCheck } = prop; + if (required && isAbsent) { + warn$1('Missing required prop: "' + name + '"'); + return; + } + if (value == null && !required) { + return; + } + if (type != null && type !== true && !skipCheck) { + let isValid = false; + const types = isArray(type) ? type : [type]; + const expectedTypes = []; + for (let i = 0; i < types.length && !isValid; i++) { + const { valid, expectedType } = assertType(value, types[i]); + expectedTypes.push(expectedType || ""); + isValid = valid; + } + if (!isValid) { + warn$1(getInvalidTypeMessage(name, value, expectedTypes)); + return; + } + } + if (validator && !validator(value, props)) { + warn$1('Invalid prop: custom validator check failed for prop "' + name + '".'); + } +} +const isSimpleType = /* @__PURE__ */ makeMap( + "String,Number,Boolean,Function,Symbol,BigInt" +); +function assertType(value, type) { + let valid; + const expectedType = getType(type); + if (expectedType === "null") { + valid = value === null; + } else if (isSimpleType(expectedType)) { + const t = typeof value; + valid = t === expectedType.toLowerCase(); + if (!valid && t === "object") { + valid = value instanceof type; + } + } else if (expectedType === "Object") { + valid = isObject(value); + } else if (expectedType === "Array") { + valid = isArray(value); + } else { + valid = value instanceof type; + } + return { + valid, + expectedType + }; +} +function getInvalidTypeMessage(name, value, expectedTypes) { + if (expectedTypes.length === 0) { + return `Prop type [] for prop "${name}" won't match anything. Did you mean to use type Array instead?`; + } + let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes.map(capitalize).join(" | ")}`; + const expectedType = expectedTypes[0]; + const receivedType = toRawType(value); + const expectedValue = styleValue(value, expectedType); + const receivedValue = styleValue(value, receivedType); + if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) { + message += ` with value ${expectedValue}`; + } + message += `, got ${receivedType} `; + if (isExplicable(receivedType)) { + message += `with value ${receivedValue}.`; + } + return message; +} +function styleValue(value, type) { + if (type === "String") { + return `"${value}"`; + } else if (type === "Number") { + return `${Number(value)}`; + } else { + return `${value}`; + } +} +function isExplicable(type) { + const explicitTypes = ["string", "number", "boolean"]; + return explicitTypes.some((elem) => type.toLowerCase() === elem); +} +function isBoolean(...args) { + return args.some((elem) => elem.toLowerCase() === "boolean"); +} + +const isInternalKey = (key) => key === "_" || key === "__" || key === "_ctx" || key === "$stable"; +const normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)]; +const normalizeSlot = (key, rawSlot, ctx) => { + if (rawSlot._n) { + return rawSlot; + } + const normalized = withCtx((...args) => { + if (currentInstance && !(ctx === null && currentRenderingInstance) && !(ctx && ctx.root !== currentInstance.root)) { + warn$1( + `Slot "${key}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.` + ); + } + return normalizeSlotValue(rawSlot(...args)); + }, ctx); + normalized._c = false; + return normalized; +}; +const normalizeObjectSlots = (rawSlots, slots, instance) => { + const ctx = rawSlots._ctx; + for (const key in rawSlots) { + if (isInternalKey(key)) continue; + const value = rawSlots[key]; + if (isFunction(value)) { + slots[key] = normalizeSlot(key, value, ctx); + } else if (value != null) { + { + warn$1( + `Non-function value encountered for slot "${key}". Prefer function slots for better performance.` + ); + } + const normalized = normalizeSlotValue(value); + slots[key] = () => normalized; + } + } +}; +const normalizeVNodeSlots = (instance, children) => { + if (!isKeepAlive(instance.vnode) && true) { + warn$1( + `Non-function value encountered for default slot. Prefer function slots for better performance.` + ); + } + const normalized = normalizeSlotValue(children); + instance.slots.default = () => normalized; +}; +const assignSlots = (slots, children, optimized) => { + for (const key in children) { + if (optimized || !isInternalKey(key)) { + slots[key] = children[key]; + } + } +}; +const initSlots = (instance, children, optimized) => { + const slots = instance.slots = createInternalObject(); + if (instance.vnode.shapeFlag & 32) { + const cacheIndexes = children.__; + if (cacheIndexes) def(slots, "__", cacheIndexes, true); + const type = children._; + if (type) { + assignSlots(slots, children, optimized); + if (optimized) { + def(slots, "_", type, true); + } + } else { + normalizeObjectSlots(children, slots); + } + } else if (children) { + normalizeVNodeSlots(instance, children); + } +}; +const updateSlots = (instance, children, optimized) => { + const { vnode, slots } = instance; + let needDeletionCheck = true; + let deletionComparisonTarget = EMPTY_OBJ; + if (vnode.shapeFlag & 32) { + const type = children._; + if (type) { + if (isHmrUpdating) { + assignSlots(slots, children, optimized); + trigger(instance, "set", "$slots"); + } else if (optimized && type === 1) { + needDeletionCheck = false; + } else { + assignSlots(slots, children, optimized); + } + } else { + needDeletionCheck = !children.$stable; + normalizeObjectSlots(children, slots); + } + deletionComparisonTarget = children; + } else if (children) { + normalizeVNodeSlots(instance, children); + deletionComparisonTarget = { default: 1 }; + } + if (needDeletionCheck) { + for (const key in slots) { + if (!isInternalKey(key) && deletionComparisonTarget[key] == null) { + delete slots[key]; + } + } + } +}; + +let supported; +let perf; +function startMeasure(instance, type) { + if (instance.appContext.config.performance && isSupported()) { + perf.mark(`vue-${type}-${instance.uid}`); + } + { + devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now()); + } +} +function endMeasure(instance, type) { + if (instance.appContext.config.performance && isSupported()) { + const startTag = `vue-${type}-${instance.uid}`; + const endTag = startTag + `:end`; + perf.mark(endTag); + perf.measure( + `<${formatComponentName(instance, instance.type)}> ${type}`, + startTag, + endTag + ); + perf.clearMarks(startTag); + perf.clearMarks(endTag); + } + { + devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now()); + } +} +function isSupported() { + if (supported !== void 0) { + return supported; + } + if (typeof window !== "undefined" && window.performance) { + supported = true; + perf = window.performance; + } else { + supported = false; + } + return supported; +} + +const queuePostRenderEffect = queueEffectWithSuspense ; +function createRenderer(options) { + return baseCreateRenderer(options); +} +function createHydrationRenderer(options) { + return baseCreateRenderer(options, createHydrationFunctions); +} +function baseCreateRenderer(options, createHydrationFns) { + const target = getGlobalThis(); + target.__VUE__ = true; + { + setDevtoolsHook$1(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target); + } + const { + insert: hostInsert, + remove: hostRemove, + patchProp: hostPatchProp, + createElement: hostCreateElement, + createText: hostCreateText, + createComment: hostCreateComment, + setText: hostSetText, + setElementText: hostSetElementText, + parentNode: hostParentNode, + nextSibling: hostNextSibling, + setScopeId: hostSetScopeId = NOOP, + insertStaticContent: hostInsertStaticContent + } = options; + const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = isHmrUpdating ? false : !!n2.dynamicChildren) => { + if (n1 === n2) { + return; + } + if (n1 && !isSameVNodeType(n1, n2)) { + anchor = getNextHostNode(n1); + unmount(n1, parentComponent, parentSuspense, true); + n1 = null; + } + if (n2.patchFlag === -2) { + optimized = false; + n2.dynamicChildren = null; + } + const { type, ref, shapeFlag } = n2; + switch (type) { + case Text: + processText(n1, n2, container, anchor); + break; + case Comment: + processCommentNode(n1, n2, container, anchor); + break; + case Static: + if (n1 == null) { + mountStaticNode(n2, container, anchor, namespace); + } else { + patchStaticNode(n1, n2, container, namespace); + } + break; + case Fragment: + processFragment( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + break; + default: + if (shapeFlag & 1) { + processElement( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 6) { + processComponent( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 64) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + } else if (shapeFlag & 128) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + } else { + warn$1("Invalid VNode type:", type, `(${typeof type})`); + } + } + if (ref != null && parentComponent) { + setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2); + } else if (ref == null && n1 && n1.ref != null) { + setRef(n1.ref, null, parentSuspense, n1, true); + } + }; + const processText = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateText(n2.children), + container, + anchor + ); + } else { + const el = n2.el = n1.el; + if (n2.children !== n1.children) { + hostSetText(el, n2.children); + } + } + }; + const processCommentNode = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateComment(n2.children || ""), + container, + anchor + ); + } else { + n2.el = n1.el; + } + }; + const mountStaticNode = (n2, container, anchor, namespace) => { + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + namespace, + n2.el, + n2.anchor + ); + }; + const patchStaticNode = (n1, n2, container, namespace) => { + if (n2.children !== n1.children) { + const anchor = hostNextSibling(n1.anchor); + removeStaticNode(n1); + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + namespace + ); + } else { + n2.el = n1.el; + n2.anchor = n1.anchor; + } + }; + const moveStaticNode = ({ el, anchor }, container, nextSibling) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostInsert(el, container, nextSibling); + el = next; + } + hostInsert(anchor, container, nextSibling); + }; + const removeStaticNode = ({ el, anchor }) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostRemove(el); + el = next; + } + hostRemove(anchor); + }; + const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + if (n2.type === "svg") { + namespace = "svg"; + } else if (n2.type === "math") { + namespace = "mathml"; + } + if (n1 == null) { + mountElement( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + patchElement( + n1, + n2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + let el; + let vnodeHook; + const { props, shapeFlag, transition, dirs } = vnode; + el = vnode.el = hostCreateElement( + vnode.type, + namespace, + props && props.is, + props + ); + if (shapeFlag & 8) { + hostSetElementText(el, vnode.children); + } else if (shapeFlag & 16) { + mountChildren( + vnode.children, + el, + null, + parentComponent, + parentSuspense, + resolveChildrenNamespace(vnode, namespace), + slotScopeIds, + optimized + ); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent); + if (props) { + for (const key in props) { + if (key !== "value" && !isReservedProp(key)) { + hostPatchProp(el, key, null, props[key], namespace, parentComponent); + } + } + if ("value" in props) { + hostPatchProp(el, "value", null, props.value, namespace); + } + if (vnodeHook = props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + } + { + def(el, "__vnode", vnode, true); + def(el, "__vueParentComponent", parentComponent, true); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + const needCallTransitionHooks = needTransition(parentSuspense, transition); + if (needCallTransitionHooks) { + transition.beforeEnter(el); + } + hostInsert(el, container, anchor); + if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + }; + const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { + if (scopeId) { + hostSetScopeId(el, scopeId); + } + if (slotScopeIds) { + for (let i = 0; i < slotScopeIds.length; i++) { + hostSetScopeId(el, slotScopeIds[i]); + } + } + if (parentComponent) { + let subTree = parentComponent.subTree; + if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) { + subTree = filterSingleRoot(subTree.children) || subTree; + } + if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) { + const parentVNode = parentComponent.vnode; + setScopeId( + el, + parentVNode, + parentVNode.scopeId, + parentVNode.slotScopeIds, + parentComponent.parent + ); + } + } + }; + const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => { + for (let i = start; i < children.length; i++) { + const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]); + patch( + null, + child, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + const el = n2.el = n1.el; + { + el.__vnode = n2; + } + let { patchFlag, dynamicChildren, dirs } = n2; + patchFlag |= n1.patchFlag & 16; + const oldProps = n1.props || EMPTY_OBJ; + const newProps = n2.props || EMPTY_OBJ; + let vnodeHook; + parentComponent && toggleRecurse(parentComponent, false); + if (vnodeHook = newProps.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + } + if (dirs) { + invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate"); + } + parentComponent && toggleRecurse(parentComponent, true); + if (isHmrUpdating) { + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) { + hostSetElementText(el, ""); + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + el, + parentComponent, + parentSuspense, + resolveChildrenNamespace(n2, namespace), + slotScopeIds + ); + { + traverseStaticChildren(n1, n2); + } + } else if (!optimized) { + patchChildren( + n1, + n2, + el, + null, + parentComponent, + parentSuspense, + resolveChildrenNamespace(n2, namespace), + slotScopeIds, + false + ); + } + if (patchFlag > 0) { + if (patchFlag & 16) { + patchProps(el, oldProps, newProps, parentComponent, namespace); + } else { + if (patchFlag & 2) { + if (oldProps.class !== newProps.class) { + hostPatchProp(el, "class", null, newProps.class, namespace); + } + } + if (patchFlag & 4) { + hostPatchProp(el, "style", oldProps.style, newProps.style, namespace); + } + if (patchFlag & 8) { + const propsToUpdate = n2.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + const key = propsToUpdate[i]; + const prev = oldProps[key]; + const next = newProps[key]; + if (next !== prev || key === "value") { + hostPatchProp(el, key, prev, next, namespace, parentComponent); + } + } + } + } + if (patchFlag & 1) { + if (n1.children !== n2.children) { + hostSetElementText(el, n2.children); + } + } + } else if (!optimized && dynamicChildren == null) { + patchProps(el, oldProps, newProps, parentComponent, namespace); + } + if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated"); + }, parentSuspense); + } + }; + const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => { + for (let i = 0; i < newChildren.length; i++) { + const oldVNode = oldChildren[i]; + const newVNode = newChildren[i]; + const container = ( + // oldVNode may be an errored async setup() component inside Suspense + // which will not have a mounted element + oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent + // of the Fragment itself so it can move its children. + (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement + // which also requires the correct parent container + !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything. + oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : ( + // In other cases, the parent container is not actually used so we + // just pass the block element here to avoid a DOM parentNode call. + fallbackContainer + ) + ); + patch( + oldVNode, + newVNode, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + true + ); + } + }; + const patchProps = (el, oldProps, newProps, parentComponent, namespace) => { + if (oldProps !== newProps) { + if (oldProps !== EMPTY_OBJ) { + for (const key in oldProps) { + if (!isReservedProp(key) && !(key in newProps)) { + hostPatchProp( + el, + key, + oldProps[key], + null, + namespace, + parentComponent + ); + } + } + } + for (const key in newProps) { + if (isReservedProp(key)) continue; + const next = newProps[key]; + const prev = oldProps[key]; + if (next !== prev && key !== "value") { + hostPatchProp(el, key, prev, next, namespace, parentComponent); + } + } + if ("value" in newProps) { + hostPatchProp(el, "value", oldProps.value, newProps.value, namespace); + } + } + }; + const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(""); + const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(""); + let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; + if ( + // #5523 dev root fragment may inherit directives + isHmrUpdating || patchFlag & 2048 + ) { + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + if (n1 == null) { + hostInsert(fragmentStartAnchor, container, anchor); + hostInsert(fragmentEndAnchor, container, anchor); + mountChildren( + // #10007 + // such fragment like `<></>` will be compiled into + // a fragment which doesn't have a children. + // In this case fallback to an empty array + n2.children || [], + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result + // of renderSlot() with no valid children + n1.dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + container, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + { + traverseStaticChildren(n1, n2); + } + } else { + patchChildren( + n1, + n2, + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + } + }; + const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + n2.slotScopeIds = slotScopeIds; + if (n1 == null) { + if (n2.shapeFlag & 512) { + parentComponent.ctx.activate( + n2, + container, + anchor, + namespace, + optimized + ); + } else { + mountComponent( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + optimized + ); + } + } else { + updateComponent(n1, n2, optimized); + } + }; + const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => { + const instance = (initialVNode.component = createComponentInstance( + initialVNode, + parentComponent, + parentSuspense + )); + if (instance.type.__hmrId) { + registerHMR(instance); + } + { + pushWarningContext(initialVNode); + startMeasure(instance, `mount`); + } + if (isKeepAlive(initialVNode)) { + instance.ctx.renderer = internals; + } + { + { + startMeasure(instance, `init`); + } + setupComponent(instance, false, optimized); + { + endMeasure(instance, `init`); + } + } + if (isHmrUpdating) initialVNode.el = null; + if (instance.asyncDep) { + parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized); + if (!initialVNode.el) { + const placeholder = instance.subTree = createVNode(Comment); + processCommentNode(null, placeholder, container, anchor); + initialVNode.placeholder = placeholder.el; + } + } else { + setupRenderEffect( + instance, + initialVNode, + container, + anchor, + parentSuspense, + namespace, + optimized + ); + } + { + popWarningContext(); + endMeasure(instance, `mount`); + } + }; + const updateComponent = (n1, n2, optimized) => { + const instance = n2.component = n1.component; + if (shouldUpdateComponent(n1, n2, optimized)) { + if (instance.asyncDep && !instance.asyncResolved) { + { + pushWarningContext(n2); + } + updateComponentPreRender(instance, n2, optimized); + { + popWarningContext(); + } + return; + } else { + instance.next = n2; + instance.update(); + } + } else { + n2.el = n1.el; + instance.vnode = n2; + } + }; + const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => { + const componentUpdateFn = () => { + if (!instance.isMounted) { + let vnodeHook; + const { el, props } = initialVNode; + const { bm, m, parent, root, type } = instance; + const isAsyncWrapperVNode = isAsyncWrapper(initialVNode); + toggleRecurse(instance, false); + if (bm) { + invokeArrayFns(bm); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) { + invokeVNodeHook(vnodeHook, parent, initialVNode); + } + toggleRecurse(instance, true); + if (el && hydrateNode) { + const hydrateSubTree = () => { + { + startMeasure(instance, `render`); + } + instance.subTree = renderComponentRoot(instance); + { + endMeasure(instance, `render`); + } + { + startMeasure(instance, `hydrate`); + } + hydrateNode( + el, + instance.subTree, + instance, + parentSuspense, + null + ); + { + endMeasure(instance, `hydrate`); + } + }; + if (isAsyncWrapperVNode && type.__asyncHydrate) { + type.__asyncHydrate( + el, + instance, + hydrateSubTree + ); + } else { + hydrateSubTree(); + } + } else { + if (root.ce && // @ts-expect-error _def is private + root.ce._def.shadowRoot !== false) { + root.ce._injectChildStyle(type); + } + { + startMeasure(instance, `render`); + } + const subTree = instance.subTree = renderComponentRoot(instance); + { + endMeasure(instance, `render`); + } + { + startMeasure(instance, `patch`); + } + patch( + null, + subTree, + container, + anchor, + instance, + parentSuspense, + namespace + ); + { + endMeasure(instance, `patch`); + } + initialVNode.el = subTree.el; + } + if (m) { + queuePostRenderEffect(m, parentSuspense); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) { + const scopedInitialVNode = initialVNode; + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), + parentSuspense + ); + } + if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) { + instance.a && queuePostRenderEffect(instance.a, parentSuspense); + } + instance.isMounted = true; + { + devtoolsComponentAdded(instance); + } + initialVNode = container = anchor = null; + } else { + let { next, bu, u, parent, vnode } = instance; + { + const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance); + if (nonHydratedAsyncRoot) { + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } + nonHydratedAsyncRoot.asyncDep.then(() => { + if (!instance.isUnmounted) { + componentUpdateFn(); + } + }); + return; + } + } + let originNext = next; + let vnodeHook; + { + pushWarningContext(next || instance.vnode); + } + toggleRecurse(instance, false); + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } else { + next = vnode; + } + if (bu) { + invokeArrayFns(bu); + } + if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parent, next, vnode); + } + toggleRecurse(instance, true); + { + startMeasure(instance, `render`); + } + const nextTree = renderComponentRoot(instance); + { + endMeasure(instance, `render`); + } + const prevTree = instance.subTree; + instance.subTree = nextTree; + { + startMeasure(instance, `patch`); + } + patch( + prevTree, + nextTree, + // parent may have changed if it's in a teleport + hostParentNode(prevTree.el), + // anchor may have changed if it's in a fragment + getNextHostNode(prevTree), + instance, + parentSuspense, + namespace + ); + { + endMeasure(instance, `patch`); + } + next.el = nextTree.el; + if (originNext === null) { + updateHOCHostEl(instance, nextTree.el); + } + if (u) { + queuePostRenderEffect(u, parentSuspense); + } + if (vnodeHook = next.props && next.props.onVnodeUpdated) { + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, next, vnode), + parentSuspense + ); + } + { + devtoolsComponentUpdated(instance); + } + { + popWarningContext(); + } + } + }; + instance.scope.on(); + const effect = instance.effect = new ReactiveEffect(componentUpdateFn); + instance.scope.off(); + const update = instance.update = effect.run.bind(effect); + const job = instance.job = effect.runIfDirty.bind(effect); + job.i = instance; + job.id = instance.uid; + effect.scheduler = () => queueJob(job); + toggleRecurse(instance, true); + { + effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0; + effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0; + } + update(); + }; + const updateComponentPreRender = (instance, nextVNode, optimized) => { + nextVNode.component = instance; + const prevProps = instance.vnode.props; + instance.vnode = nextVNode; + instance.next = null; + updateProps(instance, nextVNode.props, prevProps, optimized); + updateSlots(instance, nextVNode.children, optimized); + pauseTracking(); + flushPreFlushCbs(instance); + resetTracking(); + }; + const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => { + const c1 = n1 && n1.children; + const prevShapeFlag = n1 ? n1.shapeFlag : 0; + const c2 = n2.children; + const { patchFlag, shapeFlag } = n2; + if (patchFlag > 0) { + if (patchFlag & 128) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + return; + } else if (patchFlag & 256) { + patchUnkeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + return; + } + } + if (shapeFlag & 8) { + if (prevShapeFlag & 16) { + unmountChildren(c1, parentComponent, parentSuspense); + } + if (c2 !== c1) { + hostSetElementText(container, c2); + } + } else { + if (prevShapeFlag & 16) { + if (shapeFlag & 16) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + unmountChildren(c1, parentComponent, parentSuspense, true); + } + } else { + if (prevShapeFlag & 8) { + hostSetElementText(container, ""); + } + if (shapeFlag & 16) { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + } + } + }; + const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + c1 = c1 || EMPTY_ARR; + c2 = c2 || EMPTY_ARR; + const oldLength = c1.length; + const newLength = c2.length; + const commonLength = Math.min(oldLength, newLength); + let i; + for (i = 0; i < commonLength; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + patch( + c1[i], + nextChild, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + if (oldLength > newLength) { + unmountChildren( + c1, + parentComponent, + parentSuspense, + true, + false, + commonLength + ); + } else { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + commonLength + ); + } + }; + const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + let i = 0; + const l2 = c2.length; + let e1 = c1.length - 1; + let e2 = l2 - 1; + while (i <= e1 && i <= e2) { + const n1 = c1[i]; + const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + break; + } + i++; + } + while (i <= e1 && i <= e2) { + const n1 = c1[e1]; + const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + break; + } + e1--; + e2--; + } + if (i > e1) { + if (i <= e2) { + const nextPos = e2 + 1; + const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor; + while (i <= e2) { + patch( + null, + c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + i++; + } + } + } else if (i > e2) { + while (i <= e1) { + unmount(c1[i], parentComponent, parentSuspense, true); + i++; + } + } else { + const s1 = i; + const s2 = i; + const keyToNewIndexMap = /* @__PURE__ */ new Map(); + for (i = s2; i <= e2; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (nextChild.key != null) { + if (keyToNewIndexMap.has(nextChild.key)) { + warn$1( + `Duplicate keys found during update:`, + JSON.stringify(nextChild.key), + `Make sure keys are unique.` + ); + } + keyToNewIndexMap.set(nextChild.key, i); + } + } + let j; + let patched = 0; + const toBePatched = e2 - s2 + 1; + let moved = false; + let maxNewIndexSoFar = 0; + const newIndexToOldIndexMap = new Array(toBePatched); + for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0; + for (i = s1; i <= e1; i++) { + const prevChild = c1[i]; + if (patched >= toBePatched) { + unmount(prevChild, parentComponent, parentSuspense, true); + continue; + } + let newIndex; + if (prevChild.key != null) { + newIndex = keyToNewIndexMap.get(prevChild.key); + } else { + for (j = s2; j <= e2; j++) { + if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) { + newIndex = j; + break; + } + } + } + if (newIndex === void 0) { + unmount(prevChild, parentComponent, parentSuspense, true); + } else { + newIndexToOldIndexMap[newIndex - s2] = i + 1; + if (newIndex >= maxNewIndexSoFar) { + maxNewIndexSoFar = newIndex; + } else { + moved = true; + } + patch( + prevChild, + c2[newIndex], + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + patched++; + } + } + const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR; + j = increasingNewIndexSequence.length - 1; + for (i = toBePatched - 1; i >= 0; i--) { + const nextIndex = s2 + i; + const nextChild = c2[nextIndex]; + const anchorVNode = c2[nextIndex + 1]; + const anchor = nextIndex + 1 < l2 ? ( + // #13559, fallback to el placeholder for unresolved async component + anchorVNode.el || anchorVNode.placeholder + ) : parentAnchor; + if (newIndexToOldIndexMap[i] === 0) { + patch( + null, + nextChild, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (moved) { + if (j < 0 || i !== increasingNewIndexSequence[j]) { + move(nextChild, container, anchor, 2); + } else { + j--; + } + } + } + } + }; + const move = (vnode, container, anchor, moveType, parentSuspense = null) => { + const { el, type, transition, children, shapeFlag } = vnode; + if (shapeFlag & 6) { + move(vnode.component.subTree, container, anchor, moveType); + return; + } + if (shapeFlag & 128) { + vnode.suspense.move(container, anchor, moveType); + return; + } + if (shapeFlag & 64) { + type.move(vnode, container, anchor, internals); + return; + } + if (type === Fragment) { + hostInsert(el, container, anchor); + for (let i = 0; i < children.length; i++) { + move(children[i], container, anchor, moveType); + } + hostInsert(vnode.anchor, container, anchor); + return; + } + if (type === Static) { + moveStaticNode(vnode, container, anchor); + return; + } + const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition; + if (needTransition2) { + if (moveType === 0) { + transition.beforeEnter(el); + hostInsert(el, container, anchor); + queuePostRenderEffect(() => transition.enter(el), parentSuspense); + } else { + const { leave, delayLeave, afterLeave } = transition; + const remove2 = () => { + if (vnode.ctx.isUnmounted) { + hostRemove(el); + } else { + hostInsert(el, container, anchor); + } + }; + const performLeave = () => { + leave(el, () => { + remove2(); + afterLeave && afterLeave(); + }); + }; + if (delayLeave) { + delayLeave(el, remove2, performLeave); + } else { + performLeave(); + } + } + } else { + hostInsert(el, container, anchor); + } + }; + const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => { + const { + type, + props, + ref, + children, + dynamicChildren, + shapeFlag, + patchFlag, + dirs, + cacheIndex + } = vnode; + if (patchFlag === -2) { + optimized = false; + } + if (ref != null) { + pauseTracking(); + setRef(ref, null, parentSuspense, vnode, true); + resetTracking(); + } + if (cacheIndex != null) { + parentComponent.renderCache[cacheIndex] = void 0; + } + if (shapeFlag & 256) { + parentComponent.ctx.deactivate(vnode); + return; + } + const shouldInvokeDirs = shapeFlag & 1 && dirs; + const shouldInvokeVnodeHook = !isAsyncWrapper(vnode); + let vnodeHook; + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + if (shapeFlag & 6) { + unmountComponent(vnode.component, parentSuspense, doRemove); + } else { + if (shapeFlag & 128) { + vnode.suspense.unmount(parentSuspense, doRemove); + return; + } + if (shouldInvokeDirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount"); + } + if (shapeFlag & 64) { + vnode.type.remove( + vnode, + parentComponent, + parentSuspense, + internals, + doRemove + ); + } else if (dynamicChildren && // #5154 + // when v-once is used inside a block, setBlockTracking(-1) marks the + // parent block with hasOnce: true + // so that it doesn't take the fast path during unmount - otherwise + // components nested in v-once are never unmounted. + !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments + (type !== Fragment || patchFlag > 0 && patchFlag & 64)) { + unmountChildren( + dynamicChildren, + parentComponent, + parentSuspense, + false, + true + ); + } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) { + unmountChildren(children, parentComponent, parentSuspense); + } + if (doRemove) { + remove(vnode); + } + } + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted"); + }, parentSuspense); + } + }; + const remove = (vnode) => { + const { type, el, anchor, transition } = vnode; + if (type === Fragment) { + if (vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) { + vnode.children.forEach((child) => { + if (child.type === Comment) { + hostRemove(child.el); + } else { + remove(child); + } + }); + } else { + removeFragment(el, anchor); + } + return; + } + if (type === Static) { + removeStaticNode(vnode); + return; + } + const performRemove = () => { + hostRemove(el); + if (transition && !transition.persisted && transition.afterLeave) { + transition.afterLeave(); + } + }; + if (vnode.shapeFlag & 1 && transition && !transition.persisted) { + const { leave, delayLeave } = transition; + const performLeave = () => leave(el, performRemove); + if (delayLeave) { + delayLeave(vnode.el, performRemove, performLeave); + } else { + performLeave(); + } + } else { + performRemove(); + } + }; + const removeFragment = (cur, end) => { + let next; + while (cur !== end) { + next = hostNextSibling(cur); + hostRemove(cur); + cur = next; + } + hostRemove(end); + }; + const unmountComponent = (instance, parentSuspense, doRemove) => { + if (instance.type.__hmrId) { + unregisterHMR(instance); + } + const { + bum, + scope, + job, + subTree, + um, + m, + a, + parent, + slots: { __: slotCacheKeys } + } = instance; + invalidateMount(m); + invalidateMount(a); + if (bum) { + invokeArrayFns(bum); + } + if (parent && isArray(slotCacheKeys)) { + slotCacheKeys.forEach((v) => { + parent.renderCache[v] = void 0; + }); + } + scope.stop(); + if (job) { + job.flags |= 8; + unmount(subTree, instance, parentSuspense, doRemove); + } + if (um) { + queuePostRenderEffect(um, parentSuspense); + } + queuePostRenderEffect(() => { + instance.isUnmounted = true; + }, parentSuspense); + if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0) { + parentSuspense.resolve(); + } + } + { + devtoolsComponentRemoved(instance); + } + }; + const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => { + for (let i = start; i < children.length; i++) { + unmount(children[i], parentComponent, parentSuspense, doRemove, optimized); + } + }; + const getNextHostNode = (vnode) => { + if (vnode.shapeFlag & 6) { + return getNextHostNode(vnode.component.subTree); + } + if (vnode.shapeFlag & 128) { + return vnode.suspense.next(); + } + const el = hostNextSibling(vnode.anchor || vnode.el); + const teleportEnd = el && el[TeleportEndKey]; + return teleportEnd ? hostNextSibling(teleportEnd) : el; + }; + let isFlushing = false; + const render = (vnode, container, namespace) => { + if (vnode == null) { + if (container._vnode) { + unmount(container._vnode, null, null, true); + } + } else { + patch( + container._vnode || null, + vnode, + container, + null, + null, + null, + namespace + ); + } + container._vnode = vnode; + if (!isFlushing) { + isFlushing = true; + flushPreFlushCbs(); + flushPostFlushCbs(); + isFlushing = false; + } + }; + const internals = { + p: patch, + um: unmount, + m: move, + r: remove, + mt: mountComponent, + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + n: getNextHostNode, + o: options + }; + let hydrate; + let hydrateNode; + if (createHydrationFns) { + [hydrate, hydrateNode] = createHydrationFns( + internals + ); + } + return { + render, + hydrate, + createApp: createAppAPI(render, hydrate) + }; +} +function resolveChildrenNamespace({ type, props }, currentNamespace) { + return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace; +} +function toggleRecurse({ effect, job }, allowed) { + if (allowed) { + effect.flags |= 32; + job.flags |= 4; + } else { + effect.flags &= -33; + job.flags &= -5; + } +} +function needTransition(parentSuspense, transition) { + return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted; +} +function traverseStaticChildren(n1, n2, shallow = false) { + const ch1 = n1.children; + const ch2 = n2.children; + if (isArray(ch1) && isArray(ch2)) { + for (let i = 0; i < ch1.length; i++) { + const c1 = ch1[i]; + let c2 = ch2[i]; + if (c2.shapeFlag & 1 && !c2.dynamicChildren) { + if (c2.patchFlag <= 0 || c2.patchFlag === 32) { + c2 = ch2[i] = cloneIfMounted(ch2[i]); + c2.el = c1.el; + } + if (!shallow && c2.patchFlag !== -2) + traverseStaticChildren(c1, c2); + } + if (c2.type === Text) { + c2.el = c1.el; + } + if (c2.type === Comment && !c2.el) { + c2.el = c1.el; + } + { + c2.el && (c2.el.__vnode = c2); + } + } + } +} +function getSequence(arr) { + const p = arr.slice(); + const result = [0]; + let i, j, u, v, c; + const len = arr.length; + for (i = 0; i < len; i++) { + const arrI = arr[i]; + if (arrI !== 0) { + j = result[result.length - 1]; + if (arr[j] < arrI) { + p[i] = j; + result.push(i); + continue; + } + u = 0; + v = result.length - 1; + while (u < v) { + c = u + v >> 1; + if (arr[result[c]] < arrI) { + u = c + 1; + } else { + v = c; + } + } + if (arrI < arr[result[u]]) { + if (u > 0) { + p[i] = result[u - 1]; + } + result[u] = i; + } + } + } + u = result.length; + v = result[u - 1]; + while (u-- > 0) { + result[u] = v; + v = p[v]; + } + return result; +} +function locateNonHydratedAsyncRoot(instance) { + const subComponent = instance.subTree.component; + if (subComponent) { + if (subComponent.asyncDep && !subComponent.asyncResolved) { + return subComponent; + } else { + return locateNonHydratedAsyncRoot(subComponent); + } + } +} +function invalidateMount(hooks) { + if (hooks) { + for (let i = 0; i < hooks.length; i++) + hooks[i].flags |= 8; + } +} + +const ssrContextKey = Symbol.for("v-scx"); +const useSSRContext = () => { + { + const ctx = inject(ssrContextKey); + if (!ctx) { + warn$1( + `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.` + ); + } + return ctx; + } +}; + +function watchEffect(effect, options) { + return doWatch(effect, null, options); +} +function watchPostEffect(effect, options) { + return doWatch( + effect, + null, + extend({}, options, { flush: "post" }) + ); +} +function watchSyncEffect(effect, options) { + return doWatch( + effect, + null, + extend({}, options, { flush: "sync" }) + ); +} +function watch(source, cb, options) { + if (!isFunction(cb)) { + warn$1( + `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` + ); + } + return doWatch(source, cb, options); +} +function doWatch(source, cb, options = EMPTY_OBJ) { + const { immediate, deep, flush, once } = options; + if (!cb) { + if (immediate !== void 0) { + warn$1( + `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (deep !== void 0) { + warn$1( + `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (once !== void 0) { + warn$1( + `watch() "once" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + } + const baseWatchOptions = extend({}, options); + baseWatchOptions.onWarn = warn$1; + const runsImmediately = cb && immediate || !cb && flush !== "post"; + let ssrCleanup; + if (isInSSRComponentSetup) { + if (flush === "sync") { + const ctx = useSSRContext(); + ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); + } else if (!runsImmediately) { + const watchStopHandle = () => { + }; + watchStopHandle.stop = NOOP; + watchStopHandle.resume = NOOP; + watchStopHandle.pause = NOOP; + return watchStopHandle; + } + } + const instance = currentInstance; + baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args); + let isPre = false; + if (flush === "post") { + baseWatchOptions.scheduler = (job) => { + queuePostRenderEffect(job, instance && instance.suspense); + }; + } else if (flush !== "sync") { + isPre = true; + baseWatchOptions.scheduler = (job, isFirstRun) => { + if (isFirstRun) { + job(); + } else { + queueJob(job); + } + }; + } + baseWatchOptions.augmentJob = (job) => { + if (cb) { + job.flags |= 4; + } + if (isPre) { + job.flags |= 2; + if (instance) { + job.id = instance.uid; + job.i = instance; + } + } + }; + const watchHandle = watch$1(source, cb, baseWatchOptions); + if (isInSSRComponentSetup) { + if (ssrCleanup) { + ssrCleanup.push(watchHandle); + } else if (runsImmediately) { + watchHandle(); + } + } + return watchHandle; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const reset = setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + reset(); + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} + +function useModel(props, name, options = EMPTY_OBJ) { + const i = getCurrentInstance(); + if (!i) { + warn$1(`useModel() called without active instance.`); + return ref(); + } + const camelizedName = camelize(name); + if (!i.propsOptions[0][camelizedName]) { + warn$1(`useModel() called with prop "${name}" which is not declared.`); + return ref(); + } + const hyphenatedName = hyphenate(name); + const modifiers = getModelModifiers(props, camelizedName); + const res = customRef((track, trigger) => { + let localValue; + let prevSetValue = EMPTY_OBJ; + let prevEmittedValue; + watchSyncEffect(() => { + const propValue = props[camelizedName]; + if (hasChanged(localValue, propValue)) { + localValue = propValue; + trigger(); + } + }); + return { + get() { + track(); + return options.get ? options.get(localValue) : localValue; + }, + set(value) { + const emittedValue = options.set ? options.set(value) : value; + if (!hasChanged(emittedValue, localValue) && !(prevSetValue !== EMPTY_OBJ && hasChanged(value, prevSetValue))) { + return; + } + const rawProps = i.vnode.props; + if (!(rawProps && // check if parent has passed v-model + (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) { + localValue = value; + trigger(); + } + i.emit(`update:${name}`, emittedValue); + if (hasChanged(value, emittedValue) && hasChanged(value, prevSetValue) && !hasChanged(emittedValue, prevEmittedValue)) { + trigger(); + } + prevSetValue = value; + prevEmittedValue = emittedValue; + } + }; + }); + res[Symbol.iterator] = () => { + let i2 = 0; + return { + next() { + if (i2 < 2) { + return { value: i2++ ? modifiers || EMPTY_OBJ : res, done: false }; + } else { + return { done: true }; + } + } + }; + }; + return res; +} +const getModelModifiers = (props, modelName) => { + return modelName === "modelValue" || modelName === "model-value" ? props.modelModifiers : props[`${modelName}Modifiers`] || props[`${camelize(modelName)}Modifiers`] || props[`${hyphenate(modelName)}Modifiers`]; +}; + +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) return; + const props = instance.vnode.props || EMPTY_OBJ; + { + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && true) { + if (!propsOptions || !(toHandlerKey(camelize(event)) in propsOptions)) { + warn$1( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(camelize(event))}" prop.` + ); + } + } else { + const validator = emitsOptions[event]; + if (isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn$1( + `Invalid event arguments: event validation failed for event "${event}".` + ); + } + } + } + } + } + let args = rawArgs; + const isModelListener = event.startsWith("update:"); + const modifiers = isModelListener && getModelModifiers(props, event.slice(7)); + if (modifiers) { + if (modifiers.trim) { + args = rawArgs.map((a) => isString(a) ? a.trim() : a); + } + if (modifiers.number) { + args = rawArgs.map(looseToNumber); + } + } + { + devtoolsComponentEmit(instance, event, args); + } + { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { + warn$1( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate( + event + )}" instead of "${event}".` + ); + } + } + let handlerName; + let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = toHandlerKey(camelize(event))]; + if (!handler && isModelListener) { + handler = props[handlerName = toHandlerKey(hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (!isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + extend(normalized, raw); + } + if (isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key); +} + +let accessedAttrs = false; +function markAttrsAccessed() { + accessedAttrs = true; +} +function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + propsOptions: [propsOptions], + slots, + attrs, + emit, + render, + renderCache, + props, + data, + setupState, + ctx, + inheritAttrs + } = instance; + const prev = setCurrentRenderingInstance(instance); + let result; + let fallthroughAttrs; + { + accessedAttrs = false; + } + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn$1( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode( + render.call( + thisProxy, + proxyToUse, + renderCache, + true ? shallowReadonly(props) : props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render2 = Component; + if (attrs === props) { + markAttrsAccessed(); + } + result = normalizeVNode( + render2.length > 1 ? render2( + true ? shallowReadonly(props) : props, + true ? { + get attrs() { + markAttrsAccessed(); + return shallowReadonly(attrs); + }, + slots, + emit + } : { attrs, slots, emit } + ) : render2( + true ? shallowReadonly(props) : props, + null + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + let setRoot = void 0; + if (result.patchFlag > 0 && result.patchFlag & 2048) { + [root, setRoot] = getChildRoot(result); + } + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs, false, true); + } else if (!accessedAttrs && root.type !== Comment) { + const allAttrs = Object.keys(attrs); + const eventAttrs = []; + const extraAttrs = []; + for (let i = 0, l = allAttrs.length; i < l; i++) { + const key = allAttrs[i]; + if (isOn(key)) { + if (!isModelListener(key)) { + eventAttrs.push(key[2].toLowerCase() + key.slice(3)); + } + } else { + extraAttrs.push(key); + } + } + if (extraAttrs.length) { + warn$1( + `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text or teleport root nodes.` + ); + } + if (eventAttrs.length) { + warn$1( + `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` + ); + } + } + } + } + if (vnode.dirs) { + if (!isElementRoot(root)) { + warn$1( + `Runtime directive used on component with non-element root node. The directives will not function as intended.` + ); + } + root = cloneVNode(root, null, false, true); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + if (!isElementRoot(root)) { + warn$1( + `Component inside <Transition> renders non-element root node that cannot be animated.` + ); + } + setTransitionHooks(root, vnode.transition); + } + if (setRoot) { + setRoot(root); + } else { + result = root; + } + setCurrentRenderingInstance(prev); + return result; +} +const getChildRoot = (vnode) => { + const rawChildren = vnode.children; + const dynamicChildren = vnode.dynamicChildren; + const childRoot = filterSingleRoot(rawChildren, false); + if (!childRoot) { + return [vnode, void 0]; + } else if (childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) { + return getChildRoot(childRoot); + } + const index = rawChildren.indexOf(childRoot); + const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; + const setRoot = (updatedRoot) => { + rawChildren[index] = updatedRoot; + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } + } + }; + return [normalizeVNode(childRoot), setRoot]; +}; +function filterSingleRoot(children, recurse = true) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + if (recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) { + return filterSingleRoot(singleRoot.children); + } + } + } + } else { + return; + } + } + return singleRoot; +} +const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +const isElementRoot = (vnode) => { + return vnode.shapeFlag & (6 | 1) || vnode.type === Comment; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if ((prevChildren || nextChildren) && isHmrUpdating) { + return true; + } + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function updateHOCHostEl({ vnode, parent }, el) { + while (parent) { + const root = parent.subTree; + if (root.suspense && root.suspense.activeBranch === vnode) { + root.el = vnode.el; + } + if (root === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } else { + break; + } + } +} + +const isSuspense = (type) => type.__isSuspense; +let suspenseId = 0; +const SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) { + n2.suspense = n1.suspense; + n2.suspense.vnode = n2; + n2.el = n1.el; + return; + } + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + normalize: normalizeSuspenseChildren +}; +const Suspense = SuspenseImpl ; +function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (isFunction(eventListener)) { + eventListener(); + } +} +function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } +} +function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + if (!isHydrating) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } + } else { + suspense.pendingId = suspenseId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + if (newBranch.shapeFlag & 512) { + suspense.pendingId = newBranch.component.suspenseId; + } else { + suspense.pendingId = suspenseId++; + } + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } +} +let hasWarned = false; +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + if (!hasWarned) { + hasWarned = true; + console[console.info ? "info" : "log"]( + `<Suspense> is an experimental feature and its API will likely change.` + ); + } + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0; + { + assertNumber(timeout, `Suspense timeout`); + } + const initialAnchor = anchor; + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + namespace, + container, + hiddenContainer, + deps: 0, + pendingId: suspenseId++, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: !isHydrating, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + { + if (!resume && !suspense.pendingBranch) { + throw new Error( + `suspense.resolve() is called without a pending branch.` + ); + } + if (suspense.isUnmounted) { + throw new Error( + `suspense.resolve() is called on an already unmounted suspense boundary.` + ); + } + } + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + let delayEnter = false; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move( + pendingBranch, + container2, + anchor === initialAnchor ? next(activeBranch) : anchor, + 0 + ); + queuePostFlushCb(effects); + } + }; + } + if (activeBranch) { + if (parentNode(activeBranch.el) === container2) { + anchor = next(activeBranch); + } + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor && !delayEnter) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const anchor2 = next(activeBranch); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + anchor2, + parentComponent2, + null, + // fallback tree will not have suspense context + namespace2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect, optimized2) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + { + pushWarningContext(vnode2); + } + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + namespace, + optimized2 + ); + if (placeholder) { + remove(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + { + popWarningContext(); + } + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; +} +function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + // eslint-disable-next-line no-restricted-globals + document.createElement("div"), + null, + namespace, + slotScopeIds, + optimized, + rendererInternals, + true + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; +} +function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); +} +function normalizeSuspenseSlot(s) { + let block; + if (isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (isArray(s)) { + const singleChild = filterSingleRoot(s); + if (!singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) { + warn$1(`<Suspense> slots expect a single root node.`); + } + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; +} +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} +function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + let el = branch.el; + while (!el && branch.component) { + branch = branch.component.subTree; + el = branch.el; + } + vnode.el = el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } +} +function isVNodeSuspensible(vnode) { + const suspensible = vnode.props && vnode.props.suspensible; + return suspensible != null && suspensible !== false; +} + +const Fragment = Symbol.for("v-fgt"); +const Text = Symbol.for("v-txt"); +const Comment = Symbol.for("v-cmt"); +const Static = Symbol.for("v-stc"); +const blockStack = []; +let currentBlock = null; +function openBlock(disableTracking = false) { + blockStack.push(currentBlock = disableTracking ? null : []); +} +function closeBlock() { + blockStack.pop(); + currentBlock = blockStack[blockStack.length - 1] || null; +} +let isBlockTreeEnabled = 1; +function setBlockTracking(value, inVOnce = false) { + isBlockTreeEnabled += value; + if (value < 0 && currentBlock && inVOnce) { + currentBlock.hasOnce = true; + } +} +function setupBlock(vnode) { + vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null; + closeBlock(); + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(vnode); + } + return vnode; +} +function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) { + return setupBlock( + createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + true + ) + ); +} +function createBlock(type, props, children, patchFlag, dynamicProps) { + return setupBlock( + createVNode( + type, + props, + children, + patchFlag, + dynamicProps, + true + ) + ); +} +function isVNode(value) { + return value ? value.__v_isVNode === true : false; +} +function isSameVNodeType(n1, n2) { + if (n2.shapeFlag & 6 && n1.component) { + const dirtyInstances = hmrDirtyComponents.get(n2.type); + if (dirtyInstances && dirtyInstances.has(n1.component)) { + n1.shapeFlag &= -257; + n2.shapeFlag &= -513; + return false; + } + } + return n1.type === n2.type && n1.key === n2.key; +} +let vnodeArgsTransformer; +function transformVNodeArgs(transformer) { + vnodeArgsTransformer = transformer; +} +const createVNodeWithArgsTransform = (...args) => { + return _createVNode( + ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args + ); +}; +const normalizeKey = ({ key }) => key != null ? key : null; +const normalizeRef = ({ + ref, + ref_key, + ref_for +}) => { + if (typeof ref === "number") { + ref = "" + ref; + } + return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null; +}; +function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) { + const vnode = { + __v_isVNode: true, + __v_skip: true, + type, + props, + key: props && normalizeKey(props), + ref: props && normalizeRef(props), + scopeId: currentScopeId, + slotScopeIds: null, + children, + component: null, + suspense: null, + ssContent: null, + ssFallback: null, + dirs: null, + transition: null, + el: null, + anchor: null, + target: null, + targetStart: null, + targetAnchor: null, + staticCount: 0, + shapeFlag, + patchFlag, + dynamicProps, + dynamicChildren: null, + appContext: null, + ctx: currentRenderingInstance + }; + if (needFullChildrenNormalization) { + normalizeChildren(vnode, children); + if (shapeFlag & 128) { + type.normalize(vnode); + } + } else if (children) { + vnode.shapeFlag |= isString(children) ? 8 : 16; + } + if (vnode.key !== vnode.key) { + warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type); + } + if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself + !isBlockNode && // has current parent block + currentBlock && // presence of a patch flag indicates this node needs patching on updates. + // component nodes also should always be patched, because even if the + // component doesn't need to update, it needs to persist the instance on to + // the next vnode so that it can be properly unmounted later. + (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the + // vnode should not be considered dynamic due to handler caching. + vnode.patchFlag !== 32) { + currentBlock.push(vnode); + } + return vnode; +} +const createVNode = createVNodeWithArgsTransform ; +function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) { + if (!type || type === NULL_DYNAMIC_COMPONENT) { + if (!type) { + warn$1(`Invalid vnode type when creating vnode: ${type}.`); + } + type = Comment; + } + if (isVNode(type)) { + const cloned = cloneVNode( + type, + props, + true + /* mergeRef: true */ + ); + if (children) { + normalizeChildren(cloned, children); + } + if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) { + if (cloned.shapeFlag & 6) { + currentBlock[currentBlock.indexOf(type)] = cloned; + } else { + currentBlock.push(cloned); + } + } + cloned.patchFlag = -2; + return cloned; + } + if (isClassComponent(type)) { + type = type.__vccOpts; + } + if (props) { + props = guardReactiveProps(props); + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (isObject(style)) { + if (isProxy(style) && !isArray(style)) { + style = extend({}, style); + } + props.style = normalizeStyle(style); + } + } + const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0; + if (shapeFlag & 4 && isProxy(type)) { + type = toRaw(type); + warn$1( + `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`, + ` +Component that was made reactive: `, + type + ); + } + return createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + isBlockNode, + true + ); +} +function guardReactiveProps(props) { + if (!props) return null; + return isProxy(props) || isInternalObject(props) ? extend({}, props) : props; +} +function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) { + const { props, ref, patchFlag, children, transition } = vnode; + const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props; + const cloned = { + __v_isVNode: true, + __v_skip: true, + type: vnode.type, + props: mergedProps, + key: mergedProps && normalizeKey(mergedProps), + ref: extraProps && extraProps.ref ? ( + // #2078 in the case of <component :is="vnode" ref="extra"/> + // if the vnode itself already has a ref, cloneVNode will need to merge + // the refs so the single vnode can be set on multiple refs + mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps) + ) : ref, + scopeId: vnode.scopeId, + slotScopeIds: vnode.slotScopeIds, + children: patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children, + target: vnode.target, + targetStart: vnode.targetStart, + targetAnchor: vnode.targetAnchor, + staticCount: vnode.staticCount, + shapeFlag: vnode.shapeFlag, + // if the vnode is cloned with extra props, we can no longer assume its + // existing patch flag to be reliable and need to add the FULL_PROPS flag. + // note: preserve flag for fragments since they use the flag for children + // fast paths only. + patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag, + dynamicProps: vnode.dynamicProps, + dynamicChildren: vnode.dynamicChildren, + appContext: vnode.appContext, + dirs: vnode.dirs, + transition, + // These should technically only be non-null on mounted VNodes. However, + // they *should* be copied for kept-alive vnodes. So we just always copy + // them since them being non-null during a mount doesn't affect the logic as + // they will simply be overwritten. + component: vnode.component, + suspense: vnode.suspense, + ssContent: vnode.ssContent && cloneVNode(vnode.ssContent), + ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback), + placeholder: vnode.placeholder, + el: vnode.el, + anchor: vnode.anchor, + ctx: vnode.ctx, + ce: vnode.ce + }; + if (transition && cloneTransition) { + setTransitionHooks( + cloned, + transition.clone(cloned) + ); + } + return cloned; +} +function deepCloneVNode(vnode) { + const cloned = cloneVNode(vnode); + if (isArray(vnode.children)) { + cloned.children = vnode.children.map(deepCloneVNode); + } + return cloned; +} +function createTextVNode(text = " ", flag = 0) { + return createVNode(Text, null, text, flag); +} +function createStaticVNode(content, numberOfNodes) { + const vnode = createVNode(Static, null, content); + vnode.staticCount = numberOfNodes; + return vnode; +} +function createCommentVNode(text = "", asBlock = false) { + return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text); +} +function normalizeVNode(child) { + if (child == null || typeof child === "boolean") { + return createVNode(Comment); + } else if (isArray(child)) { + return createVNode( + Fragment, + null, + // #3666, avoid reference pollution when reusing vnode + child.slice() + ); + } else if (isVNode(child)) { + return cloneIfMounted(child); + } else { + return createVNode(Text, null, String(child)); + } +} +function cloneIfMounted(child) { + return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child); +} +function normalizeChildren(vnode, children) { + let type = 0; + const { shapeFlag } = vnode; + if (children == null) { + children = null; + } else if (isArray(children)) { + type = 16; + } else if (typeof children === "object") { + if (shapeFlag & (1 | 64)) { + const slot = children.default; + if (slot) { + slot._c && (slot._d = false); + normalizeChildren(vnode, slot()); + slot._c && (slot._d = true); + } + return; + } else { + type = 32; + const slotFlag = children._; + if (!slotFlag && !isInternalObject(children)) { + children._ctx = currentRenderingInstance; + } else if (slotFlag === 3 && currentRenderingInstance) { + if (currentRenderingInstance.slots._ === 1) { + children._ = 1; + } else { + children._ = 2; + vnode.patchFlag |= 1024; + } + } + } + } else if (isFunction(children)) { + children = { default: children, _ctx: currentRenderingInstance }; + type = 32; + } else { + children = String(children); + if (shapeFlag & 64) { + type = 16; + children = [createTextVNode(children)]; + } else { + type = 8; + } + } + vnode.children = children; + vnode.shapeFlag |= type; +} +function mergeProps(...args) { + const ret = {}; + for (let i = 0; i < args.length; i++) { + const toMerge = args[i]; + for (const key in toMerge) { + if (key === "class") { + if (ret.class !== toMerge.class) { + ret.class = normalizeClass([ret.class, toMerge.class]); + } + } else if (key === "style") { + ret.style = normalizeStyle([ret.style, toMerge.style]); + } else if (isOn(key)) { + const existing = ret[key]; + const incoming = toMerge[key]; + if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) { + ret[key] = existing ? [].concat(existing, incoming) : incoming; + } + } else if (key !== "") { + ret[key] = toMerge[key]; + } + } + } + return ret; +} +function invokeVNodeHook(hook, instance, vnode, prevVNode = null) { + callWithAsyncErrorHandling(hook, instance, 7, [ + vnode, + prevVNode + ]); +} + +const emptyAppContext = createAppContext(); +let uid = 0; +function createComponentInstance(vnode, parent, suspense) { + const type = vnode.type; + const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext; + const instance = { + uid: uid++, + vnode, + type, + parent, + appContext, + root: null, + // to be immediately set + next: null, + subTree: null, + // will be set synchronously right after creation + effect: null, + update: null, + // will be set synchronously right after creation + job: null, + scope: new EffectScope( + true + /* detached */ + ), + render: null, + proxy: null, + exposed: null, + exposeProxy: null, + withProxy: null, + provides: parent ? parent.provides : Object.create(appContext.provides), + ids: parent ? parent.ids : ["", 0, 0], + accessCache: null, + renderCache: [], + // local resolved assets + components: null, + directives: null, + // resolved props and emits options + propsOptions: normalizePropsOptions(type, appContext), + emitsOptions: normalizeEmitsOptions(type, appContext), + // emit + emit: null, + // to be set immediately + emitted: null, + // props default value + propsDefaults: EMPTY_OBJ, + // inheritAttrs + inheritAttrs: type.inheritAttrs, + // state + ctx: EMPTY_OBJ, + data: EMPTY_OBJ, + props: EMPTY_OBJ, + attrs: EMPTY_OBJ, + slots: EMPTY_OBJ, + refs: EMPTY_OBJ, + setupState: EMPTY_OBJ, + setupContext: null, + // suspense related + suspense, + suspenseId: suspense ? suspense.pendingId : 0, + asyncDep: null, + asyncResolved: false, + // lifecycle hooks + // not using enums here because it results in computed properties + isMounted: false, + isUnmounted: false, + isDeactivated: false, + bc: null, + c: null, + bm: null, + m: null, + bu: null, + u: null, + um: null, + bum: null, + da: null, + a: null, + rtg: null, + rtc: null, + ec: null, + sp: null + }; + { + instance.ctx = createDevRenderContext(instance); + } + instance.root = parent ? parent.root : instance; + instance.emit = emit.bind(null, instance); + if (vnode.ce) { + vnode.ce(instance); + } + return instance; +} +let currentInstance = null; +const getCurrentInstance = () => currentInstance || currentRenderingInstance; +let internalSetCurrentInstance; +let setInSSRSetupState; +{ + const g = getGlobalThis(); + const registerGlobalSetter = (key, setter) => { + let setters; + if (!(setters = g[key])) setters = g[key] = []; + setters.push(setter); + return (v) => { + if (setters.length > 1) setters.forEach((set) => set(v)); + else setters[0](v); + }; + }; + internalSetCurrentInstance = registerGlobalSetter( + `__VUE_INSTANCE_SETTERS__`, + (v) => currentInstance = v + ); + setInSSRSetupState = registerGlobalSetter( + `__VUE_SSR_SETTERS__`, + (v) => isInSSRComponentSetup = v + ); +} +const setCurrentInstance = (instance) => { + const prev = currentInstance; + internalSetCurrentInstance(instance); + instance.scope.on(); + return () => { + instance.scope.off(); + internalSetCurrentInstance(prev); + }; +}; +const unsetCurrentInstance = () => { + currentInstance && currentInstance.scope.off(); + internalSetCurrentInstance(null); +}; +const isBuiltInTag = /* @__PURE__ */ makeMap("slot,component"); +function validateComponentName(name, { isNativeTag }) { + if (isBuiltInTag(name) || isNativeTag(name)) { + warn$1( + "Do not use built-in or reserved HTML elements as component id: " + name + ); + } +} +function isStatefulComponent(instance) { + return instance.vnode.shapeFlag & 4; +} +let isInSSRComponentSetup = false; +function setupComponent(instance, isSSR = false, optimized = false) { + isSSR && setInSSRSetupState(isSSR); + const { props, children } = instance.vnode; + const isStateful = isStatefulComponent(instance); + initProps(instance, props, isStateful, isSSR); + initSlots(instance, children, optimized || isSSR); + const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; + isSSR && setInSSRSetupState(false); + return setupResult; +} +function setupStatefulComponent(instance, isSSR) { + var _a; + const Component = instance.type; + { + if (Component.name) { + validateComponentName(Component.name, instance.appContext.config); + } + if (Component.components) { + const names = Object.keys(Component.components); + for (let i = 0; i < names.length; i++) { + validateComponentName(names[i], instance.appContext.config); + } + } + if (Component.directives) { + const names = Object.keys(Component.directives); + for (let i = 0; i < names.length; i++) { + validateDirectiveName(names[i]); + } + } + if (Component.compilerOptions && isRuntimeOnly()) { + warn$1( + `"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.` + ); + } + } + instance.accessCache = /* @__PURE__ */ Object.create(null); + instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers); + { + exposePropsOnRenderContext(instance); + } + const { setup } = Component; + if (setup) { + pauseTracking(); + const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; + const reset = setCurrentInstance(instance); + const setupResult = callWithErrorHandling( + setup, + instance, + 0, + [ + shallowReadonly(instance.props) , + setupContext + ] + ); + const isAsyncSetup = isPromise(setupResult); + resetTracking(); + reset(); + if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) { + markAsyncBoundary(instance); + } + if (isAsyncSetup) { + setupResult.then(unsetCurrentInstance, unsetCurrentInstance); + if (isSSR) { + return setupResult.then((resolvedResult) => { + handleSetupResult(instance, resolvedResult, isSSR); + }).catch((e) => { + handleError(e, instance, 0); + }); + } else { + instance.asyncDep = setupResult; + if (!instance.suspense) { + const name = (_a = Component.name) != null ? _a : "Anonymous"; + warn$1( + `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.` + ); + } + } + } else { + handleSetupResult(instance, setupResult, isSSR); + } + } else { + finishComponentSetup(instance, isSSR); + } +} +function handleSetupResult(instance, setupResult, isSSR) { + if (isFunction(setupResult)) { + if (instance.type.__ssrInlineRender) { + instance.ssrRender = setupResult; + } else { + instance.render = setupResult; + } + } else if (isObject(setupResult)) { + if (isVNode(setupResult)) { + warn$1( + `setup() should not return VNodes directly - return a render function instead.` + ); + } + { + instance.devtoolsRawSetupState = setupResult; + } + instance.setupState = proxyRefs(setupResult); + { + exposeSetupStateOnRenderContext(instance); + } + } else if (setupResult !== void 0) { + warn$1( + `setup() should return an object. Received: ${setupResult === null ? "null" : typeof setupResult}` + ); + } + finishComponentSetup(instance, isSSR); +} +let compile; +let installWithProxy; +function registerRuntimeCompiler(_compile) { + compile = _compile; + installWithProxy = (i) => { + if (i.render._rc) { + i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers); + } + }; +} +const isRuntimeOnly = () => !compile; +function finishComponentSetup(instance, isSSR, skipOptions) { + const Component = instance.type; + if (!instance.render) { + if (!isSSR && compile && !Component.render) { + const template = Component.template || resolveMergedOptions(instance).template; + if (template) { + { + startMeasure(instance, `compile`); + } + const { isCustomElement, compilerOptions } = instance.appContext.config; + const { delimiters, compilerOptions: componentCompilerOptions } = Component; + const finalCompilerOptions = extend( + extend( + { + isCustomElement, + delimiters + }, + compilerOptions + ), + componentCompilerOptions + ); + Component.render = compile(template, finalCompilerOptions); + { + endMeasure(instance, `compile`); + } + } + } + instance.render = Component.render || NOOP; + if (installWithProxy) { + installWithProxy(instance); + } + } + { + const reset = setCurrentInstance(instance); + pauseTracking(); + try { + applyOptions(instance); + } finally { + resetTracking(); + reset(); + } + } + if (!Component.render && instance.render === NOOP && !isSSR) { + if (!compile && Component.template) { + warn$1( + `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Use "vue.esm-browser.js" instead.` ) + ); + } else { + warn$1(`Component is missing template or render function: `, Component); + } + } +} +const attrsProxyHandlers = { + get(target, key) { + markAttrsAccessed(); + track(target, "get", ""); + return target[key]; + }, + set() { + warn$1(`setupContext.attrs is readonly.`); + return false; + }, + deleteProperty() { + warn$1(`setupContext.attrs is readonly.`); + return false; + } +} ; +function getSlotsProxy(instance) { + return new Proxy(instance.slots, { + get(target, key) { + track(instance, "get", "$slots"); + return target[key]; + } + }); +} +function createSetupContext(instance) { + const expose = (exposed) => { + { + if (instance.exposed) { + warn$1(`expose() should be called only once per setup().`); + } + if (exposed != null) { + let exposedType = typeof exposed; + if (exposedType === "object") { + if (isArray(exposed)) { + exposedType = "array"; + } else if (isRef(exposed)) { + exposedType = "ref"; + } + } + if (exposedType !== "object") { + warn$1( + `expose() should be passed a plain object, received ${exposedType}.` + ); + } + } + } + instance.exposed = exposed || {}; + }; + { + let attrsProxy; + let slotsProxy; + return Object.freeze({ + get attrs() { + return attrsProxy || (attrsProxy = new Proxy(instance.attrs, attrsProxyHandlers)); + }, + get slots() { + return slotsProxy || (slotsProxy = getSlotsProxy(instance)); + }, + get emit() { + return (event, ...args) => instance.emit(event, ...args); + }, + expose + }); + } +} +function getComponentPublicInstance(instance) { + if (instance.exposed) { + return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), { + get(target, key) { + if (key in target) { + return target[key]; + } else if (key in publicPropertiesMap) { + return publicPropertiesMap[key](instance); + } + }, + has(target, key) { + return key in target || key in publicPropertiesMap; + } + })); + } else { + return instance.proxy; + } +} +const classifyRE = /(?:^|[-_])(\w)/g; +const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, ""); +function getComponentName(Component, includeInferred = true) { + return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; +} +function formatComponentName(instance, Component, isRoot = false) { + let name = getComponentName(Component); + if (!name && Component.__file) { + const match = Component.__file.match(/([^/\\]+)\.\w+$/); + if (match) { + name = match[1]; + } + } + if (!name && instance && instance.parent) { + const inferFromRegistry = (registry) => { + for (const key in registry) { + if (registry[key] === Component) { + return key; + } + } + }; + name = inferFromRegistry( + instance.components || instance.parent.type.components + ) || inferFromRegistry(instance.appContext.components); + } + return name ? classify(name) : isRoot ? `App` : `Anonymous`; +} +function isClassComponent(value) { + return isFunction(value) && "__vccOpts" in value; +} + +const computed = (getterOrOptions, debugOptions) => { + const c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup); + { + const i = getCurrentInstance(); + if (i && i.appContext.config.warnRecursiveComputed) { + c._warnRecursive = true; + } + } + return c; +}; + +function h(type, propsOrChildren, children) { + const l = arguments.length; + if (l === 2) { + if (isObject(propsOrChildren) && !isArray(propsOrChildren)) { + if (isVNode(propsOrChildren)) { + return createVNode(type, null, [propsOrChildren]); + } + return createVNode(type, propsOrChildren); + } else { + return createVNode(type, null, propsOrChildren); + } + } else { + if (l > 3) { + children = Array.prototype.slice.call(arguments, 2); + } else if (l === 3 && isVNode(children)) { + children = [children]; + } + return createVNode(type, propsOrChildren, children); + } +} + +function initCustomFormatter() { + if (typeof window === "undefined") { + return; + } + const vueStyle = { style: "color:#3ba776" }; + const numberStyle = { style: "color:#1677ff" }; + const stringStyle = { style: "color:#f5222d" }; + const keywordStyle = { style: "color:#eb2f96" }; + const formatter = { + __vue_custom_formatter: true, + header(obj) { + if (!isObject(obj)) { + return null; + } + if (obj.__isVue) { + return ["div", vueStyle, `VueInstance`]; + } else if (isRef(obj)) { + pauseTracking(); + const value = obj.value; + resetTracking(); + return [ + "div", + {}, + ["span", vueStyle, genRefFlag(obj)], + "<", + formatValue(value), + `>` + ]; + } else if (isReactive(obj)) { + return [ + "div", + {}, + ["span", vueStyle, isShallow(obj) ? "ShallowReactive" : "Reactive"], + "<", + formatValue(obj), + `>${isReadonly(obj) ? ` (readonly)` : ``}` + ]; + } else if (isReadonly(obj)) { + return [ + "div", + {}, + ["span", vueStyle, isShallow(obj) ? "ShallowReadonly" : "Readonly"], + "<", + formatValue(obj), + ">" + ]; + } + return null; + }, + hasBody(obj) { + return obj && obj.__isVue; + }, + body(obj) { + if (obj && obj.__isVue) { + return [ + "div", + {}, + ...formatInstance(obj.$) + ]; + } + } + }; + function formatInstance(instance) { + const blocks = []; + if (instance.type.props && instance.props) { + blocks.push(createInstanceBlock("props", toRaw(instance.props))); + } + if (instance.setupState !== EMPTY_OBJ) { + blocks.push(createInstanceBlock("setup", instance.setupState)); + } + if (instance.data !== EMPTY_OBJ) { + blocks.push(createInstanceBlock("data", toRaw(instance.data))); + } + const computed = extractKeys(instance, "computed"); + if (computed) { + blocks.push(createInstanceBlock("computed", computed)); + } + const injected = extractKeys(instance, "inject"); + if (injected) { + blocks.push(createInstanceBlock("injected", injected)); + } + blocks.push([ + "div", + {}, + [ + "span", + { + style: keywordStyle.style + ";opacity:0.66" + }, + "$ (internal): " + ], + ["object", { object: instance }] + ]); + return blocks; + } + function createInstanceBlock(type, target) { + target = extend({}, target); + if (!Object.keys(target).length) { + return ["span", {}]; + } + return [ + "div", + { style: "line-height:1.25em;margin-bottom:0.6em" }, + [ + "div", + { + style: "color:#476582" + }, + type + ], + [ + "div", + { + style: "padding-left:1.25em" + }, + ...Object.keys(target).map((key) => { + return [ + "div", + {}, + ["span", keywordStyle, key + ": "], + formatValue(target[key], false) + ]; + }) + ] + ]; + } + function formatValue(v, asRaw = true) { + if (typeof v === "number") { + return ["span", numberStyle, v]; + } else if (typeof v === "string") { + return ["span", stringStyle, JSON.stringify(v)]; + } else if (typeof v === "boolean") { + return ["span", keywordStyle, v]; + } else if (isObject(v)) { + return ["object", { object: asRaw ? toRaw(v) : v }]; + } else { + return ["span", stringStyle, String(v)]; + } + } + function extractKeys(instance, type) { + const Comp = instance.type; + if (isFunction(Comp)) { + return; + } + const extracted = {}; + for (const key in instance.ctx) { + if (isKeyOfType(Comp, key, type)) { + extracted[key] = instance.ctx[key]; + } + } + return extracted; + } + function isKeyOfType(Comp, key, type) { + const opts = Comp[type]; + if (isArray(opts) && opts.includes(key) || isObject(opts) && key in opts) { + return true; + } + if (Comp.extends && isKeyOfType(Comp.extends, key, type)) { + return true; + } + if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) { + return true; + } + } + function genRefFlag(v) { + if (isShallow(v)) { + return `ShallowRef`; + } + if (v.effect) { + return `ComputedRef`; + } + return `Ref`; + } + if (window.devtoolsFormatters) { + window.devtoolsFormatters.push(formatter); + } else { + window.devtoolsFormatters = [formatter]; + } +} + +function withMemo(memo, render, cache, index) { + const cached = cache[index]; + if (cached && isMemoSame(cached, memo)) { + return cached; + } + const ret = render(); + ret.memo = memo.slice(); + ret.cacheIndex = index; + return cache[index] = ret; +} +function isMemoSame(cached, memo) { + const prev = cached.memo; + if (prev.length != memo.length) { + return false; + } + for (let i = 0; i < prev.length; i++) { + if (hasChanged(prev[i], memo[i])) { + return false; + } + } + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(cached); + } + return true; +} + +const version = "3.5.18"; +const warn = warn$1 ; +const ErrorTypeStrings = ErrorTypeStrings$1 ; +const devtools = devtools$1 ; +const setDevtoolsHook = setDevtoolsHook$1 ; +const _ssrUtils = { + createComponentInstance, + setupComponent, + renderComponentRoot, + setCurrentRenderingInstance, + isVNode: isVNode, + normalizeVNode, + getComponentPublicInstance, + ensureValidVNode, + pushWarningContext, + popWarningContext +}; +const ssrUtils = _ssrUtils ; +const resolveFilter = null; +const compatUtils = null; +const DeprecationTypes = null; + +let policy = void 0; +const tt = typeof window !== "undefined" && window.trustedTypes; +if (tt) { + try { + policy = /* @__PURE__ */ tt.createPolicy("vue", { + createHTML: (val) => val + }); + } catch (e) { + warn(`Error creating trusted types policy: ${e}`); + } +} +const unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val; +const svgNS = "http://www.w3.org/2000/svg"; +const mathmlNS = "http://www.w3.org/1998/Math/MathML"; +const doc = typeof document !== "undefined" ? document : null; +const templateContainer = doc && /* @__PURE__ */ doc.createElement("template"); +const nodeOps = { + insert: (child, parent, anchor) => { + parent.insertBefore(child, anchor || null); + }, + remove: (child) => { + const parent = child.parentNode; + if (parent) { + parent.removeChild(child); + } + }, + createElement: (tag, namespace, is, props) => { + const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag); + if (tag === "select" && props && props.multiple != null) { + el.setAttribute("multiple", props.multiple); + } + return el; + }, + createText: (text) => doc.createTextNode(text), + createComment: (text) => doc.createComment(text), + setText: (node, text) => { + node.nodeValue = text; + }, + setElementText: (el, text) => { + el.textContent = text; + }, + parentNode: (node) => node.parentNode, + nextSibling: (node) => node.nextSibling, + querySelector: (selector) => doc.querySelector(selector), + setScopeId(el, id) { + el.setAttribute(id, ""); + }, + // __UNSAFE__ + // Reason: innerHTML. + // Static content here can only come from compiled templates. + // As long as the user only uses trusted templates, this is safe. + insertStaticContent(content, parent, anchor, namespace, start, end) { + const before = anchor ? anchor.previousSibling : parent.lastChild; + if (start && (start === end || start.nextSibling)) { + while (true) { + parent.insertBefore(start.cloneNode(true), anchor); + if (start === end || !(start = start.nextSibling)) break; + } + } else { + templateContainer.innerHTML = unsafeToTrustedHTML( + namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content + ); + const template = templateContainer.content; + if (namespace === "svg" || namespace === "mathml") { + const wrapper = template.firstChild; + while (wrapper.firstChild) { + template.appendChild(wrapper.firstChild); + } + template.removeChild(wrapper); + } + parent.insertBefore(template, anchor); + } + return [ + // first + before ? before.nextSibling : parent.firstChild, + // last + anchor ? anchor.previousSibling : parent.lastChild + ]; + } +}; + +const TRANSITION = "transition"; +const ANIMATION = "animation"; +const vtcKey = Symbol("_vtc"); +const DOMTransitionPropsValidators = { + name: String, + type: String, + css: { + type: Boolean, + default: true + }, + duration: [String, Number, Object], + enterFromClass: String, + enterActiveClass: String, + enterToClass: String, + appearFromClass: String, + appearActiveClass: String, + appearToClass: String, + leaveFromClass: String, + leaveActiveClass: String, + leaveToClass: String +}; +const TransitionPropsValidators = /* @__PURE__ */ extend( + {}, + BaseTransitionPropsValidators, + DOMTransitionPropsValidators +); +const decorate$1 = (t) => { + t.displayName = "Transition"; + t.props = TransitionPropsValidators; + return t; +}; +const Transition = /* @__PURE__ */ decorate$1( + (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots) +); +const callHook = (hook, args = []) => { + if (isArray(hook)) { + hook.forEach((h2) => h2(...args)); + } else if (hook) { + hook(...args); + } +}; +const hasExplicitCallback = (hook) => { + return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false; +}; +function resolveTransitionProps(rawProps) { + const baseProps = {}; + for (const key in rawProps) { + if (!(key in DOMTransitionPropsValidators)) { + baseProps[key] = rawProps[key]; + } + } + if (rawProps.css === false) { + return baseProps; + } + const { + name = "v", + type, + duration, + enterFromClass = `${name}-enter-from`, + enterActiveClass = `${name}-enter-active`, + enterToClass = `${name}-enter-to`, + appearFromClass = enterFromClass, + appearActiveClass = enterActiveClass, + appearToClass = enterToClass, + leaveFromClass = `${name}-leave-from`, + leaveActiveClass = `${name}-leave-active`, + leaveToClass = `${name}-leave-to` + } = rawProps; + const durations = normalizeDuration(duration); + const enterDuration = durations && durations[0]; + const leaveDuration = durations && durations[1]; + const { + onBeforeEnter, + onEnter, + onEnterCancelled, + onLeave, + onLeaveCancelled, + onBeforeAppear = onBeforeEnter, + onAppear = onEnter, + onAppearCancelled = onEnterCancelled + } = baseProps; + const finishEnter = (el, isAppear, done, isCancelled) => { + el._enterCancelled = isCancelled; + removeTransitionClass(el, isAppear ? appearToClass : enterToClass); + removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass); + done && done(); + }; + const finishLeave = (el, done) => { + el._isLeaving = false; + removeTransitionClass(el, leaveFromClass); + removeTransitionClass(el, leaveToClass); + removeTransitionClass(el, leaveActiveClass); + done && done(); + }; + const makeEnterHook = (isAppear) => { + return (el, done) => { + const hook = isAppear ? onAppear : onEnter; + const resolve = () => finishEnter(el, isAppear, done); + callHook(hook, [el, resolve]); + nextFrame(() => { + removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass); + addTransitionClass(el, isAppear ? appearToClass : enterToClass); + if (!hasExplicitCallback(hook)) { + whenTransitionEnds(el, type, enterDuration, resolve); + } + }); + }; + }; + return extend(baseProps, { + onBeforeEnter(el) { + callHook(onBeforeEnter, [el]); + addTransitionClass(el, enterFromClass); + addTransitionClass(el, enterActiveClass); + }, + onBeforeAppear(el) { + callHook(onBeforeAppear, [el]); + addTransitionClass(el, appearFromClass); + addTransitionClass(el, appearActiveClass); + }, + onEnter: makeEnterHook(false), + onAppear: makeEnterHook(true), + onLeave(el, done) { + el._isLeaving = true; + const resolve = () => finishLeave(el, done); + addTransitionClass(el, leaveFromClass); + if (!el._enterCancelled) { + forceReflow(); + addTransitionClass(el, leaveActiveClass); + } else { + addTransitionClass(el, leaveActiveClass); + forceReflow(); + } + nextFrame(() => { + if (!el._isLeaving) { + return; + } + removeTransitionClass(el, leaveFromClass); + addTransitionClass(el, leaveToClass); + if (!hasExplicitCallback(onLeave)) { + whenTransitionEnds(el, type, leaveDuration, resolve); + } + }); + callHook(onLeave, [el, resolve]); + }, + onEnterCancelled(el) { + finishEnter(el, false, void 0, true); + callHook(onEnterCancelled, [el]); + }, + onAppearCancelled(el) { + finishEnter(el, true, void 0, true); + callHook(onAppearCancelled, [el]); + }, + onLeaveCancelled(el) { + finishLeave(el); + callHook(onLeaveCancelled, [el]); + } + }); +} +function normalizeDuration(duration) { + if (duration == null) { + return null; + } else if (isObject(duration)) { + return [NumberOf(duration.enter), NumberOf(duration.leave)]; + } else { + const n = NumberOf(duration); + return [n, n]; + } +} +function NumberOf(val) { + const res = toNumber(val); + { + assertNumber(res, "<transition> explicit duration"); + } + return res; +} +function addTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.add(c)); + (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls); +} +function removeTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.remove(c)); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.delete(cls); + if (!_vtc.size) { + el[vtcKey] = void 0; + } + } +} +function nextFrame(cb) { + requestAnimationFrame(() => { + requestAnimationFrame(cb); + }); +} +let endId = 0; +function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) { + const id = el._endId = ++endId; + const resolveIfNotStale = () => { + if (id === el._endId) { + resolve(); + } + }; + if (explicitTimeout != null) { + return setTimeout(resolveIfNotStale, explicitTimeout); + } + const { type, timeout, propCount } = getTransitionInfo(el, expectedType); + if (!type) { + return resolve(); + } + const endEvent = type + "end"; + let ended = 0; + const end = () => { + el.removeEventListener(endEvent, onEnd); + resolveIfNotStale(); + }; + const onEnd = (e) => { + if (e.target === el && ++ended >= propCount) { + end(); + } + }; + setTimeout(() => { + if (ended < propCount) { + end(); + } + }, timeout + 1); + el.addEventListener(endEvent, onEnd); +} +function getTransitionInfo(el, expectedType) { + const styles = window.getComputedStyle(el); + const getStyleProperties = (key) => (styles[key] || "").split(", "); + const transitionDelays = getStyleProperties(`${TRANSITION}Delay`); + const transitionDurations = getStyleProperties(`${TRANSITION}Duration`); + const transitionTimeout = getTimeout(transitionDelays, transitionDurations); + const animationDelays = getStyleProperties(`${ANIMATION}Delay`); + const animationDurations = getStyleProperties(`${ANIMATION}Duration`); + const animationTimeout = getTimeout(animationDelays, animationDurations); + let type = null; + let timeout = 0; + let propCount = 0; + if (expectedType === TRANSITION) { + if (transitionTimeout > 0) { + type = TRANSITION; + timeout = transitionTimeout; + propCount = transitionDurations.length; + } + } else if (expectedType === ANIMATION) { + if (animationTimeout > 0) { + type = ANIMATION; + timeout = animationTimeout; + propCount = animationDurations.length; + } + } else { + timeout = Math.max(transitionTimeout, animationTimeout); + type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null; + propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0; + } + const hasTransform = type === TRANSITION && /\b(transform|all)(,|$)/.test( + getStyleProperties(`${TRANSITION}Property`).toString() + ); + return { + type, + timeout, + propCount, + hasTransform + }; +} +function getTimeout(delays, durations) { + while (delays.length < durations.length) { + delays = delays.concat(delays); + } + return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i]))); +} +function toMs(s) { + if (s === "auto") return 0; + return Number(s.slice(0, -1).replace(",", ".")) * 1e3; +} +function forceReflow() { + return document.body.offsetHeight; +} + +function patchClass(el, value, isSVG) { + const transitionClasses = el[vtcKey]; + if (transitionClasses) { + value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" "); + } + if (value == null) { + el.removeAttribute("class"); + } else if (isSVG) { + el.setAttribute("class", value); + } else { + el.className = value; + } +} + +const vShowOriginalDisplay = Symbol("_vod"); +const vShowHidden = Symbol("_vsh"); +const vShow = { + beforeMount(el, { value }, { transition }) { + el[vShowOriginalDisplay] = el.style.display === "none" ? "" : el.style.display; + if (transition && value) { + transition.beforeEnter(el); + } else { + setDisplay(el, value); + } + }, + mounted(el, { value }, { transition }) { + if (transition && value) { + transition.enter(el); + } + }, + updated(el, { value, oldValue }, { transition }) { + if (!value === !oldValue) return; + if (transition) { + if (value) { + transition.beforeEnter(el); + setDisplay(el, true); + transition.enter(el); + } else { + transition.leave(el, () => { + setDisplay(el, false); + }); + } + } else { + setDisplay(el, value); + } + }, + beforeUnmount(el, { value }) { + setDisplay(el, value); + } +}; +{ + vShow.name = "show"; +} +function setDisplay(el, value) { + el.style.display = value ? el[vShowOriginalDisplay] : "none"; + el[vShowHidden] = !value; +} +function initVShowForSSR() { + vShow.getSSRProps = ({ value }) => { + if (!value) { + return { style: { display: "none" } }; + } + }; +} + +const CSS_VAR_TEXT = Symbol("CSS_VAR_TEXT" ); +function useCssVars(getter) { + const instance = getCurrentInstance(); + if (!instance) { + warn(`useCssVars is called without current active component instance.`); + return; + } + const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => { + Array.from( + document.querySelectorAll(`[data-v-owner="${instance.uid}"]`) + ).forEach((node) => setVarsOnNode(node, vars)); + }; + { + instance.getCssVars = () => getter(instance.proxy); + } + const setVars = () => { + const vars = getter(instance.proxy); + if (instance.ce) { + setVarsOnNode(instance.ce, vars); + } else { + setVarsOnVNode(instance.subTree, vars); + } + updateTeleports(vars); + }; + onBeforeUpdate(() => { + queuePostFlushCb(setVars); + }); + onMounted(() => { + watch(setVars, NOOP, { flush: "post" }); + const ob = new MutationObserver(setVars); + ob.observe(instance.subTree.el.parentNode, { childList: true }); + onUnmounted(() => ob.disconnect()); + }); +} +function setVarsOnVNode(vnode, vars) { + if (vnode.shapeFlag & 128) { + const suspense = vnode.suspense; + vnode = suspense.activeBranch; + if (suspense.pendingBranch && !suspense.isHydrating) { + suspense.effects.push(() => { + setVarsOnVNode(suspense.activeBranch, vars); + }); + } + } + while (vnode.component) { + vnode = vnode.component.subTree; + } + if (vnode.shapeFlag & 1 && vnode.el) { + setVarsOnNode(vnode.el, vars); + } else if (vnode.type === Fragment) { + vnode.children.forEach((c) => setVarsOnVNode(c, vars)); + } else if (vnode.type === Static) { + let { el, anchor } = vnode; + while (el) { + setVarsOnNode(el, vars); + if (el === anchor) break; + el = el.nextSibling; + } + } +} +function setVarsOnNode(el, vars) { + if (el.nodeType === 1) { + const style = el.style; + let cssText = ""; + for (const key in vars) { + const value = normalizeCssVarValue(vars[key]); + style.setProperty(`--${key}`, value); + cssText += `--${key}: ${value};`; + } + style[CSS_VAR_TEXT] = cssText; + } +} + +const displayRE = /(^|;)\s*display\s*:/; +function patchStyle(el, prev, next) { + const style = el.style; + const isCssString = isString(next); + let hasControlledDisplay = false; + if (next && !isCssString) { + if (prev) { + if (!isString(prev)) { + for (const key in prev) { + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } else { + for (const prevStyle of prev.split(";")) { + const key = prevStyle.slice(0, prevStyle.indexOf(":")).trim(); + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } + } + for (const key in next) { + if (key === "display") { + hasControlledDisplay = true; + } + setStyle(style, key, next[key]); + } + } else { + if (isCssString) { + if (prev !== next) { + const cssVarText = style[CSS_VAR_TEXT]; + if (cssVarText) { + next += ";" + cssVarText; + } + style.cssText = next; + hasControlledDisplay = displayRE.test(next); + } + } else if (prev) { + el.removeAttribute("style"); + } + } + if (vShowOriginalDisplay in el) { + el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : ""; + if (el[vShowHidden]) { + style.display = "none"; + } + } +} +const semicolonRE = /[^\\];\s*$/; +const importantRE = /\s*!important$/; +function setStyle(style, name, val) { + if (isArray(val)) { + val.forEach((v) => setStyle(style, name, v)); + } else { + if (val == null) val = ""; + { + if (semicolonRE.test(val)) { + warn( + `Unexpected semicolon at the end of '${name}' style value: '${val}'` + ); + } + } + if (name.startsWith("--")) { + style.setProperty(name, val); + } else { + const prefixed = autoPrefix(style, name); + if (importantRE.test(val)) { + style.setProperty( + hyphenate(prefixed), + val.replace(importantRE, ""), + "important" + ); + } else { + style[prefixed] = val; + } + } + } +} +const prefixes = ["Webkit", "Moz", "ms"]; +const prefixCache = {}; +function autoPrefix(style, rawName) { + const cached = prefixCache[rawName]; + if (cached) { + return cached; + } + let name = camelize(rawName); + if (name !== "filter" && name in style) { + return prefixCache[rawName] = name; + } + name = capitalize(name); + for (let i = 0; i < prefixes.length; i++) { + const prefixed = prefixes[i] + name; + if (prefixed in style) { + return prefixCache[rawName] = prefixed; + } + } + return rawName; +} + +const xlinkNS = "http://www.w3.org/1999/xlink"; +function patchAttr(el, key, value, isSVG, instance, isBoolean = isSpecialBooleanAttr(key)) { + if (isSVG && key.startsWith("xlink:")) { + if (value == null) { + el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); + } else { + el.setAttributeNS(xlinkNS, key, value); + } + } else { + if (value == null || isBoolean && !includeBooleanAttr(value)) { + el.removeAttribute(key); + } else { + el.setAttribute( + key, + isBoolean ? "" : isSymbol(value) ? String(value) : value + ); + } + } +} + +function patchDOMProp(el, key, value, parentComponent, attrName) { + if (key === "innerHTML" || key === "textContent") { + if (value != null) { + el[key] = key === "innerHTML" ? unsafeToTrustedHTML(value) : value; + } + return; + } + const tag = el.tagName; + if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally + !tag.includes("-")) { + const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value; + const newValue = value == null ? ( + // #11647: value should be set as empty string for null and undefined, + // but <input type="checkbox"> should be set as 'on'. + el.type === "checkbox" ? "on" : "" + ) : String(value); + if (oldValue !== newValue || !("_value" in el)) { + el.value = newValue; + } + if (value == null) { + el.removeAttribute(key); + } + el._value = value; + return; + } + let needRemove = false; + if (value === "" || value == null) { + const type = typeof el[key]; + if (type === "boolean") { + value = includeBooleanAttr(value); + } else if (value == null && type === "string") { + value = ""; + needRemove = true; + } else if (type === "number") { + value = 0; + needRemove = true; + } + } + try { + el[key] = value; + } catch (e) { + if (!needRemove) { + warn( + `Failed setting prop "${key}" on <${tag.toLowerCase()}>: value ${value} is invalid.`, + e + ); + } + } + needRemove && el.removeAttribute(attrName || key); +} + +function addEventListener(el, event, handler, options) { + el.addEventListener(event, handler, options); +} +function removeEventListener(el, event, handler, options) { + el.removeEventListener(event, handler, options); +} +const veiKey = Symbol("_vei"); +function patchEvent(el, rawName, prevValue, nextValue, instance = null) { + const invokers = el[veiKey] || (el[veiKey] = {}); + const existingInvoker = invokers[rawName]; + if (nextValue && existingInvoker) { + existingInvoker.value = sanitizeEventValue(nextValue, rawName) ; + } else { + const [name, options] = parseName(rawName); + if (nextValue) { + const invoker = invokers[rawName] = createInvoker( + sanitizeEventValue(nextValue, rawName) , + instance + ); + addEventListener(el, name, invoker, options); + } else if (existingInvoker) { + removeEventListener(el, name, existingInvoker, options); + invokers[rawName] = void 0; + } + } +} +const optionsModifierRE = /(?:Once|Passive|Capture)$/; +function parseName(name) { + let options; + if (optionsModifierRE.test(name)) { + options = {}; + let m; + while (m = name.match(optionsModifierRE)) { + name = name.slice(0, name.length - m[0].length); + options[m[0].toLowerCase()] = true; + } + } + const event = name[2] === ":" ? name.slice(3) : hyphenate(name.slice(2)); + return [event, options]; +} +let cachedNow = 0; +const p = /* @__PURE__ */ Promise.resolve(); +const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now()); +function createInvoker(initialValue, instance) { + const invoker = (e) => { + if (!e._vts) { + e._vts = Date.now(); + } else if (e._vts <= invoker.attached) { + return; + } + callWithAsyncErrorHandling( + patchStopImmediatePropagation(e, invoker.value), + instance, + 5, + [e] + ); + }; + invoker.value = initialValue; + invoker.attached = getNow(); + return invoker; +} +function sanitizeEventValue(value, propName) { + if (isFunction(value) || isArray(value)) { + return value; + } + warn( + `Wrong type passed as event handler to ${propName} - did you forget @ or : in front of your prop? +Expected function or array of functions, received type ${typeof value}.` + ); + return NOOP; +} +function patchStopImmediatePropagation(e, value) { + if (isArray(value)) { + const originalStop = e.stopImmediatePropagation; + e.stopImmediatePropagation = () => { + originalStop.call(e); + e._stopped = true; + }; + return value.map( + (fn) => (e2) => !e2._stopped && fn && fn(e2) + ); + } else { + return value; + } +} + +const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter +key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123; +const patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => { + const isSVG = namespace === "svg"; + if (key === "class") { + patchClass(el, nextValue, isSVG); + } else if (key === "style") { + patchStyle(el, prevValue, nextValue); + } else if (isOn(key)) { + if (!isModelListener(key)) { + patchEvent(el, key, prevValue, nextValue, parentComponent); + } + } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) { + patchDOMProp(el, key, nextValue); + if (!el.tagName.includes("-") && (key === "value" || key === "checked" || key === "selected")) { + patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value"); + } + } else if ( + // #11081 force set props for possible async custom element + el._isVueCE && (/[A-Z]/.test(key) || !isString(nextValue)) + ) { + patchDOMProp(el, camelize(key), nextValue, parentComponent, key); + } else { + if (key === "true-value") { + el._trueValue = nextValue; + } else if (key === "false-value") { + el._falseValue = nextValue; + } + patchAttr(el, key, nextValue, isSVG); + } +}; +function shouldSetAsProp(el, key, value, isSVG) { + if (isSVG) { + if (key === "innerHTML" || key === "textContent") { + return true; + } + if (key in el && isNativeOn(key) && isFunction(value)) { + return true; + } + return false; + } + if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") { + return false; + } + if (key === "form") { + return false; + } + if (key === "list" && el.tagName === "INPUT") { + return false; + } + if (key === "type" && el.tagName === "TEXTAREA") { + return false; + } + if (key === "width" || key === "height") { + const tag = el.tagName; + if (tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE") { + return false; + } + } + if (isNativeOn(key) && isString(value)) { + return false; + } + return key in el; +} + +const REMOVAL = {}; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineCustomElement(options, extraOptions, _createApp) { + const Comp = defineComponent(options, extraOptions); + if (isPlainObject(Comp)) extend(Comp, extraOptions); + class VueCustomElement extends VueElement { + constructor(initialProps) { + super(Comp, initialProps, _createApp); + } + } + VueCustomElement.def = Comp; + return VueCustomElement; +} +/*! #__NO_SIDE_EFFECTS__ */ +const defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options, extraOptions) => { + return /* @__PURE__ */ defineCustomElement(options, extraOptions, createSSRApp); +}; +const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class { +}; +class VueElement extends BaseClass { + constructor(_def, _props = {}, _createApp = createApp) { + super(); + this._def = _def; + this._props = _props; + this._createApp = _createApp; + this._isVueCE = true; + /** + * @internal + */ + this._instance = null; + /** + * @internal + */ + this._app = null; + /** + * @internal + */ + this._nonce = this._def.nonce; + this._connected = false; + this._resolved = false; + this._numberProps = null; + this._styleChildren = /* @__PURE__ */ new WeakSet(); + this._ob = null; + if (this.shadowRoot && _createApp !== createApp) { + this._root = this.shadowRoot; + } else { + if (this.shadowRoot) { + warn( + `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \`defineSSRCustomElement\`.` + ); + } + if (_def.shadowRoot !== false) { + this.attachShadow({ mode: "open" }); + this._root = this.shadowRoot; + } else { + this._root = this; + } + } + } + connectedCallback() { + if (!this.isConnected) return; + if (!this.shadowRoot && !this._resolved) { + this._parseSlots(); + } + this._connected = true; + let parent = this; + while (parent = parent && (parent.parentNode || parent.host)) { + if (parent instanceof VueElement) { + this._parent = parent; + break; + } + } + if (!this._instance) { + if (this._resolved) { + this._mount(this._def); + } else { + if (parent && parent._pendingResolve) { + this._pendingResolve = parent._pendingResolve.then(() => { + this._pendingResolve = void 0; + this._resolveDef(); + }); + } else { + this._resolveDef(); + } + } + } + } + _setParent(parent = this._parent) { + if (parent) { + this._instance.parent = parent._instance; + this._inheritParentContext(parent); + } + } + _inheritParentContext(parent = this._parent) { + if (parent && this._app) { + Object.setPrototypeOf( + this._app._context.provides, + parent._instance.provides + ); + } + } + disconnectedCallback() { + this._connected = false; + nextTick(() => { + if (!this._connected) { + if (this._ob) { + this._ob.disconnect(); + this._ob = null; + } + this._app && this._app.unmount(); + if (this._instance) this._instance.ce = void 0; + this._app = this._instance = null; + } + }); + } + /** + * resolve inner component definition (handle possible async component) + */ + _resolveDef() { + if (this._pendingResolve) { + return; + } + for (let i = 0; i < this.attributes.length; i++) { + this._setAttr(this.attributes[i].name); + } + this._ob = new MutationObserver((mutations) => { + for (const m of mutations) { + this._setAttr(m.attributeName); + } + }); + this._ob.observe(this, { attributes: true }); + const resolve = (def, isAsync = false) => { + this._resolved = true; + this._pendingResolve = void 0; + const { props, styles } = def; + let numberProps; + if (props && !isArray(props)) { + for (const key in props) { + const opt = props[key]; + if (opt === Number || opt && opt.type === Number) { + if (key in this._props) { + this._props[key] = toNumber(this._props[key]); + } + (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize(key)] = true; + } + } + } + this._numberProps = numberProps; + this._resolveProps(def); + if (this.shadowRoot) { + this._applyStyles(styles); + } else if (styles) { + warn( + "Custom element style injection is not supported when using shadowRoot: false" + ); + } + this._mount(def); + }; + const asyncDef = this._def.__asyncLoader; + if (asyncDef) { + this._pendingResolve = asyncDef().then((def) => { + def.configureApp = this._def.configureApp; + resolve(this._def = def, true); + }); + } else { + resolve(this._def); + } + } + _mount(def) { + if (!def.name) { + def.name = "VueElement"; + } + this._app = this._createApp(def); + this._inheritParentContext(); + if (def.configureApp) { + def.configureApp(this._app); + } + this._app._ceVNode = this._createVNode(); + this._app.mount(this._root); + const exposed = this._instance && this._instance.exposed; + if (!exposed) return; + for (const key in exposed) { + if (!hasOwn(this, key)) { + Object.defineProperty(this, key, { + // unwrap ref to be consistent with public instance behavior + get: () => unref(exposed[key]) + }); + } else { + warn(`Exposed property "${key}" already exists on custom element.`); + } + } + } + _resolveProps(def) { + const { props } = def; + const declaredPropKeys = isArray(props) ? props : Object.keys(props || {}); + for (const key of Object.keys(this)) { + if (key[0] !== "_" && declaredPropKeys.includes(key)) { + this._setProp(key, this[key]); + } + } + for (const key of declaredPropKeys.map(camelize)) { + Object.defineProperty(this, key, { + get() { + return this._getProp(key); + }, + set(val) { + this._setProp(key, val, true, true); + } + }); + } + } + _setAttr(key) { + if (key.startsWith("data-v-")) return; + const has = this.hasAttribute(key); + let value = has ? this.getAttribute(key) : REMOVAL; + const camelKey = camelize(key); + if (has && this._numberProps && this._numberProps[camelKey]) { + value = toNumber(value); + } + this._setProp(camelKey, value, false, true); + } + /** + * @internal + */ + _getProp(key) { + return this._props[key]; + } + /** + * @internal + */ + _setProp(key, val, shouldReflect = true, shouldUpdate = false) { + if (val !== this._props[key]) { + if (val === REMOVAL) { + delete this._props[key]; + } else { + this._props[key] = val; + if (key === "key" && this._app) { + this._app._ceVNode.key = val; + } + } + if (shouldUpdate && this._instance) { + this._update(); + } + if (shouldReflect) { + const ob = this._ob; + ob && ob.disconnect(); + if (val === true) { + this.setAttribute(hyphenate(key), ""); + } else if (typeof val === "string" || typeof val === "number") { + this.setAttribute(hyphenate(key), val + ""); + } else if (!val) { + this.removeAttribute(hyphenate(key)); + } + ob && ob.observe(this, { attributes: true }); + } + } + } + _update() { + const vnode = this._createVNode(); + if (this._app) vnode.appContext = this._app._context; + render(vnode, this._root); + } + _createVNode() { + const baseProps = {}; + if (!this.shadowRoot) { + baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this); + } + const vnode = createVNode(this._def, extend(baseProps, this._props)); + if (!this._instance) { + vnode.ce = (instance) => { + this._instance = instance; + instance.ce = this; + instance.isCE = true; + { + instance.ceReload = (newStyles) => { + if (this._styles) { + this._styles.forEach((s) => this._root.removeChild(s)); + this._styles.length = 0; + } + this._applyStyles(newStyles); + this._instance = null; + this._update(); + }; + } + const dispatch = (event, args) => { + this.dispatchEvent( + new CustomEvent( + event, + isPlainObject(args[0]) ? extend({ detail: args }, args[0]) : { detail: args } + ) + ); + }; + instance.emit = (event, ...args) => { + dispatch(event, args); + if (hyphenate(event) !== event) { + dispatch(hyphenate(event), args); + } + }; + this._setParent(); + }; + } + return vnode; + } + _applyStyles(styles, owner) { + if (!styles) return; + if (owner) { + if (owner === this._def || this._styleChildren.has(owner)) { + return; + } + this._styleChildren.add(owner); + } + const nonce = this._nonce; + for (let i = styles.length - 1; i >= 0; i--) { + const s = document.createElement("style"); + if (nonce) s.setAttribute("nonce", nonce); + s.textContent = styles[i]; + this.shadowRoot.prepend(s); + { + if (owner) { + if (owner.__hmrId) { + if (!this._childStyles) this._childStyles = /* @__PURE__ */ new Map(); + let entry = this._childStyles.get(owner.__hmrId); + if (!entry) { + this._childStyles.set(owner.__hmrId, entry = []); + } + entry.push(s); + } + } else { + (this._styles || (this._styles = [])).push(s); + } + } + } + } + /** + * Only called when shadowRoot is false + */ + _parseSlots() { + const slots = this._slots = {}; + let n; + while (n = this.firstChild) { + const slotName = n.nodeType === 1 && n.getAttribute("slot") || "default"; + (slots[slotName] || (slots[slotName] = [])).push(n); + this.removeChild(n); + } + } + /** + * Only called when shadowRoot is false + */ + _renderSlots() { + const outlets = (this._teleportTarget || this).querySelectorAll("slot"); + const scopeId = this._instance.type.__scopeId; + for (let i = 0; i < outlets.length; i++) { + const o = outlets[i]; + const slotName = o.getAttribute("name") || "default"; + const content = this._slots[slotName]; + const parent = o.parentNode; + if (content) { + for (const n of content) { + if (scopeId && n.nodeType === 1) { + const id = scopeId + "-s"; + const walker = document.createTreeWalker(n, 1); + n.setAttribute(id, ""); + let child; + while (child = walker.nextNode()) { + child.setAttribute(id, ""); + } + } + parent.insertBefore(n, o); + } + } else { + while (o.firstChild) parent.insertBefore(o.firstChild, o); + } + parent.removeChild(o); + } + } + /** + * @internal + */ + _injectChildStyle(comp) { + this._applyStyles(comp.styles, comp); + } + /** + * @internal + */ + _removeChildStyle(comp) { + { + this._styleChildren.delete(comp); + if (this._childStyles && comp.__hmrId) { + const oldStyles = this._childStyles.get(comp.__hmrId); + if (oldStyles) { + oldStyles.forEach((s) => this._root.removeChild(s)); + oldStyles.length = 0; + } + } + } + } +} +function useHost(caller) { + const instance = getCurrentInstance(); + const el = instance && instance.ce; + if (el) { + return el; + } else { + if (!instance) { + warn( + `${caller || "useHost"} called without an active component instance.` + ); + } else { + warn( + `${caller || "useHost"} can only be used in components defined via defineCustomElement.` + ); + } + } + return null; +} +function useShadowRoot() { + const el = useHost("useShadowRoot") ; + return el && el.shadowRoot; +} + +function useCssModule(name = "$style") { + { + const instance = getCurrentInstance(); + if (!instance) { + warn(`useCssModule must be called inside setup()`); + return EMPTY_OBJ; + } + const modules = instance.type.__cssModules; + if (!modules) { + warn(`Current instance does not have CSS modules injected.`); + return EMPTY_OBJ; + } + const mod = modules[name]; + if (!mod) { + warn(`Current instance does not have CSS module named "${name}".`); + return EMPTY_OBJ; + } + return mod; + } +} + +const positionMap = /* @__PURE__ */ new WeakMap(); +const newPositionMap = /* @__PURE__ */ new WeakMap(); +const moveCbKey = Symbol("_moveCb"); +const enterCbKey = Symbol("_enterCb"); +const decorate = (t) => { + delete t.props.mode; + return t; +}; +const TransitionGroupImpl = /* @__PURE__ */ decorate({ + name: "TransitionGroup", + props: /* @__PURE__ */ extend({}, TransitionPropsValidators, { + tag: String, + moveClass: String + }), + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + let prevChildren; + let children; + onUpdated(() => { + if (!prevChildren.length) { + return; + } + const moveClass = props.moveClass || `${props.name || "v"}-move`; + if (!hasCSSTransform( + prevChildren[0].el, + instance.vnode.el, + moveClass + )) { + prevChildren = []; + return; + } + prevChildren.forEach(callPendingCbs); + prevChildren.forEach(recordPosition); + const movedChildren = prevChildren.filter(applyTranslation); + forceReflow(); + movedChildren.forEach((c) => { + const el = c.el; + const style = el.style; + addTransitionClass(el, moveClass); + style.transform = style.webkitTransform = style.transitionDuration = ""; + const cb = el[moveCbKey] = (e) => { + if (e && e.target !== el) { + return; + } + if (!e || /transform$/.test(e.propertyName)) { + el.removeEventListener("transitionend", cb); + el[moveCbKey] = null; + removeTransitionClass(el, moveClass); + } + }; + el.addEventListener("transitionend", cb); + }); + prevChildren = []; + }); + return () => { + const rawProps = toRaw(props); + const cssTransitionProps = resolveTransitionProps(rawProps); + let tag = rawProps.tag || Fragment; + prevChildren = []; + if (children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.el && child.el instanceof Element) { + prevChildren.push(child); + setTransitionHooks( + child, + resolveTransitionHooks( + child, + cssTransitionProps, + state, + instance + ) + ); + positionMap.set( + child, + child.el.getBoundingClientRect() + ); + } + } + } + children = slots.default ? getTransitionRawChildren(slots.default()) : []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.key != null) { + setTransitionHooks( + child, + resolveTransitionHooks(child, cssTransitionProps, state, instance) + ); + } else if (child.type !== Text) { + warn(`<TransitionGroup> children must be keyed.`); + } + } + return createVNode(tag, null, children); + }; + } +}); +const TransitionGroup = TransitionGroupImpl; +function callPendingCbs(c) { + const el = c.el; + if (el[moveCbKey]) { + el[moveCbKey](); + } + if (el[enterCbKey]) { + el[enterCbKey](); + } +} +function recordPosition(c) { + newPositionMap.set(c, c.el.getBoundingClientRect()); +} +function applyTranslation(c) { + const oldPos = positionMap.get(c); + const newPos = newPositionMap.get(c); + const dx = oldPos.left - newPos.left; + const dy = oldPos.top - newPos.top; + if (dx || dy) { + const s = c.el.style; + s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`; + s.transitionDuration = "0s"; + return c; + } +} +function hasCSSTransform(el, root, moveClass) { + const clone = el.cloneNode(); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.forEach((cls) => { + cls.split(/\s+/).forEach((c) => c && clone.classList.remove(c)); + }); + } + moveClass.split(/\s+/).forEach((c) => c && clone.classList.add(c)); + clone.style.display = "none"; + const container = root.nodeType === 1 ? root : root.parentNode; + container.appendChild(clone); + const { hasTransform } = getTransitionInfo(clone); + container.removeChild(clone); + return hasTransform; +} + +const getModelAssigner = (vnode) => { + const fn = vnode.props["onUpdate:modelValue"] || false; + return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn; +}; +function onCompositionStart(e) { + e.target.composing = true; +} +function onCompositionEnd(e) { + const target = e.target; + if (target.composing) { + target.composing = false; + target.dispatchEvent(new Event("input")); + } +} +const assignKey = Symbol("_assign"); +const vModelText = { + created(el, { modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + const castToNumber = number || vnode.props && vnode.props.type === "number"; + addEventListener(el, lazy ? "change" : "input", (e) => { + if (e.target.composing) return; + let domValue = el.value; + if (trim) { + domValue = domValue.trim(); + } + if (castToNumber) { + domValue = looseToNumber(domValue); + } + el[assignKey](domValue); + }); + if (trim) { + addEventListener(el, "change", () => { + el.value = el.value.trim(); + }); + } + if (!lazy) { + addEventListener(el, "compositionstart", onCompositionStart); + addEventListener(el, "compositionend", onCompositionEnd); + addEventListener(el, "change", onCompositionEnd); + } + }, + // set value on mounted so it's after min/max for type="range" + mounted(el, { value }) { + el.value = value == null ? "" : value; + }, + beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (el.composing) return; + const elValue = (number || el.type === "number") && !/^0\d/.test(el.value) ? looseToNumber(el.value) : el.value; + const newValue = value == null ? "" : value; + if (elValue === newValue) { + return; + } + if (document.activeElement === el && el.type !== "range") { + if (lazy && value === oldValue) { + return; + } + if (trim && el.value.trim() === newValue) { + return; + } + } + el.value = newValue; + } +}; +const vModelCheckbox = { + // #4096 array checkboxes need to be deep traversed + deep: true, + created(el, _, vnode) { + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + const modelValue = el._modelValue; + const elementValue = getValue(el); + const checked = el.checked; + const assign = el[assignKey]; + if (isArray(modelValue)) { + const index = looseIndexOf(modelValue, elementValue); + const found = index !== -1; + if (checked && !found) { + assign(modelValue.concat(elementValue)); + } else if (!checked && found) { + const filtered = [...modelValue]; + filtered.splice(index, 1); + assign(filtered); + } + } else if (isSet(modelValue)) { + const cloned = new Set(modelValue); + if (checked) { + cloned.add(elementValue); + } else { + cloned.delete(elementValue); + } + assign(cloned); + } else { + assign(getCheckboxValue(el, checked)); + } + }); + }, + // set initial checked on mount to wait for true-value/false-value + mounted: setChecked, + beforeUpdate(el, binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + setChecked(el, binding, vnode); + } +}; +function setChecked(el, { value, oldValue }, vnode) { + el._modelValue = value; + let checked; + if (isArray(value)) { + checked = looseIndexOf(value, vnode.props.value) > -1; + } else if (isSet(value)) { + checked = value.has(vnode.props.value); + } else { + if (value === oldValue) return; + checked = looseEqual(value, getCheckboxValue(el, true)); + } + if (el.checked !== checked) { + el.checked = checked; + } +} +const vModelRadio = { + created(el, { value }, vnode) { + el.checked = looseEqual(value, vnode.props.value); + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + el[assignKey](getValue(el)); + }); + }, + beforeUpdate(el, { value, oldValue }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (value !== oldValue) { + el.checked = looseEqual(value, vnode.props.value); + } + } +}; +const vModelSelect = { + // <select multiple> value need to be deep traversed + deep: true, + created(el, { value, modifiers: { number } }, vnode) { + const isSetModel = isSet(value); + addEventListener(el, "change", () => { + const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map( + (o) => number ? looseToNumber(getValue(o)) : getValue(o) + ); + el[assignKey]( + el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0] + ); + el._assigning = true; + nextTick(() => { + el._assigning = false; + }); + }); + el[assignKey] = getModelAssigner(vnode); + }, + // set value in mounted & updated because <select> relies on its children + // <option>s. + mounted(el, { value }) { + setSelected(el, value); + }, + beforeUpdate(el, _binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + }, + updated(el, { value }) { + if (!el._assigning) { + setSelected(el, value); + } + } +}; +function setSelected(el, value) { + const isMultiple = el.multiple; + const isArrayValue = isArray(value); + if (isMultiple && !isArrayValue && !isSet(value)) { + warn( + `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.` + ); + return; + } + for (let i = 0, l = el.options.length; i < l; i++) { + const option = el.options[i]; + const optionValue = getValue(option); + if (isMultiple) { + if (isArrayValue) { + const optionType = typeof optionValue; + if (optionType === "string" || optionType === "number") { + option.selected = value.some((v) => String(v) === String(optionValue)); + } else { + option.selected = looseIndexOf(value, optionValue) > -1; + } + } else { + option.selected = value.has(optionValue); + } + } else if (looseEqual(getValue(option), value)) { + if (el.selectedIndex !== i) el.selectedIndex = i; + return; + } + } + if (!isMultiple && el.selectedIndex !== -1) { + el.selectedIndex = -1; + } +} +function getValue(el) { + return "_value" in el ? el._value : el.value; +} +function getCheckboxValue(el, checked) { + const key = checked ? "_trueValue" : "_falseValue"; + return key in el ? el[key] : checked; +} +const vModelDynamic = { + created(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "created"); + }, + mounted(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "mounted"); + }, + beforeUpdate(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "beforeUpdate"); + }, + updated(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "updated"); + } +}; +function resolveDynamicModel(tagName, type) { + switch (tagName) { + case "SELECT": + return vModelSelect; + case "TEXTAREA": + return vModelText; + default: + switch (type) { + case "checkbox": + return vModelCheckbox; + case "radio": + return vModelRadio; + default: + return vModelText; + } + } +} +function callModelHook(el, binding, vnode, prevVNode, hook) { + const modelToUse = resolveDynamicModel( + el.tagName, + vnode.props && vnode.props.type + ); + const fn = modelToUse[hook]; + fn && fn(el, binding, vnode, prevVNode); +} +function initVModelForSSR() { + vModelText.getSSRProps = ({ value }) => ({ value }); + vModelRadio.getSSRProps = ({ value }, vnode) => { + if (vnode.props && looseEqual(vnode.props.value, value)) { + return { checked: true }; + } + }; + vModelCheckbox.getSSRProps = ({ value }, vnode) => { + if (isArray(value)) { + if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) { + return { checked: true }; + } + } else if (isSet(value)) { + if (vnode.props && value.has(vnode.props.value)) { + return { checked: true }; + } + } else if (value) { + return { checked: true }; + } + }; + vModelDynamic.getSSRProps = (binding, vnode) => { + if (typeof vnode.type !== "string") { + return; + } + const modelToUse = resolveDynamicModel( + // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase + vnode.type.toUpperCase(), + vnode.props && vnode.props.type + ); + if (modelToUse.getSSRProps) { + return modelToUse.getSSRProps(binding, vnode); + } + }; +} + +const systemModifiers = ["ctrl", "shift", "alt", "meta"]; +const modifierGuards = { + stop: (e) => e.stopPropagation(), + prevent: (e) => e.preventDefault(), + self: (e) => e.target !== e.currentTarget, + ctrl: (e) => !e.ctrlKey, + shift: (e) => !e.shiftKey, + alt: (e) => !e.altKey, + meta: (e) => !e.metaKey, + left: (e) => "button" in e && e.button !== 0, + middle: (e) => "button" in e && e.button !== 1, + right: (e) => "button" in e && e.button !== 2, + exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m)) +}; +const withModifiers = (fn, modifiers) => { + const cache = fn._withMods || (fn._withMods = {}); + const cacheKey = modifiers.join("."); + return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => { + for (let i = 0; i < modifiers.length; i++) { + const guard = modifierGuards[modifiers[i]]; + if (guard && guard(event, modifiers)) return; + } + return fn(event, ...args); + }); +}; +const keyNames = { + esc: "escape", + space: " ", + up: "arrow-up", + left: "arrow-left", + right: "arrow-right", + down: "arrow-down", + delete: "backspace" +}; +const withKeys = (fn, modifiers) => { + const cache = fn._withKeys || (fn._withKeys = {}); + const cacheKey = modifiers.join("."); + return cache[cacheKey] || (cache[cacheKey] = (event) => { + if (!("key" in event)) { + return; + } + const eventKey = hyphenate(event.key); + if (modifiers.some( + (k) => k === eventKey || keyNames[k] === eventKey + )) { + return fn(event); + } + }); +}; + +const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps); +let renderer; +let enabledHydration = false; +function ensureRenderer() { + return renderer || (renderer = createRenderer(rendererOptions)); +} +function ensureHydrationRenderer() { + renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions); + enabledHydration = true; + return renderer; +} +const render = (...args) => { + ensureRenderer().render(...args); +}; +const hydrate = (...args) => { + ensureHydrationRenderer().hydrate(...args); +}; +const createApp = (...args) => { + const app = ensureRenderer().createApp(...args); + { + injectNativeTagCheck(app); + injectCompilerOptionsCheck(app); + } + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (!container) return; + const component = app._component; + if (!isFunction(component) && !component.render && !component.template) { + component.template = container.innerHTML; + } + if (container.nodeType === 1) { + container.textContent = ""; + } + const proxy = mount(container, false, resolveRootNamespace(container)); + if (container instanceof Element) { + container.removeAttribute("v-cloak"); + container.setAttribute("data-v-app", ""); + } + return proxy; + }; + return app; +}; +const createSSRApp = (...args) => { + const app = ensureHydrationRenderer().createApp(...args); + { + injectNativeTagCheck(app); + injectCompilerOptionsCheck(app); + } + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (container) { + return mount(container, true, resolveRootNamespace(container)); + } + }; + return app; +}; +function resolveRootNamespace(container) { + if (container instanceof SVGElement) { + return "svg"; + } + if (typeof MathMLElement === "function" && container instanceof MathMLElement) { + return "mathml"; + } +} +function injectNativeTagCheck(app) { + Object.defineProperty(app.config, "isNativeTag", { + value: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag), + writable: false + }); +} +function injectCompilerOptionsCheck(app) { + if (isRuntimeOnly()) { + const isCustomElement = app.config.isCustomElement; + Object.defineProperty(app.config, "isCustomElement", { + get() { + return isCustomElement; + }, + set() { + warn( + `The \`isCustomElement\` config option is deprecated. Use \`compilerOptions.isCustomElement\` instead.` + ); + } + }); + const compilerOptions = app.config.compilerOptions; + const msg = `The \`compilerOptions\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka "full build"). Since you are using the runtime-only build, \`compilerOptions\` must be passed to \`@vue/compiler-dom\` in the build setup instead. +- For vue-loader: pass it via vue-loader's \`compilerOptions\` loader option. +- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader +- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`; + Object.defineProperty(app.config, "compilerOptions", { + get() { + warn(msg); + return compilerOptions; + }, + set() { + warn(msg); + } + }); + } +} +function normalizeContainer(container) { + if (isString(container)) { + const res = document.querySelector(container); + if (!res) { + warn( + `Failed to mount app: mount target selector "${container}" returned null.` + ); + } + return res; + } + if (window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === "closed") { + warn( + `mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs` + ); + } + return container; +} +let ssrDirectiveInitialized = false; +const initDirectivesForSSR = () => { + if (!ssrDirectiveInitialized) { + ssrDirectiveInitialized = true; + initVModelForSSR(); + initVShowForSSR(); + } +} ; + +export { BaseTransition, BaseTransitionPropsValidators, Comment, DeprecationTypes, EffectScope, ErrorCodes, ErrorTypeStrings, Fragment, KeepAlive, ReactiveEffect, Static, Suspense, Teleport, Text, TrackOpTypes, Transition, TransitionGroup, TriggerOpTypes, VueElement, assertNumber, callWithAsyncErrorHandling, callWithErrorHandling, camelize, capitalize, cloneVNode, compatUtils, computed, createApp, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSSRApp, createSlots, createStaticVNode, createTextVNode, createVNode, customRef, defineAsyncComponent, defineComponent, defineCustomElement, defineEmits, defineExpose, defineModel, defineOptions, defineProps, defineSSRCustomElement, defineSlots, devtools, effect, effectScope, getCurrentInstance, getCurrentScope, getCurrentWatcher, getTransitionRawChildren, guardReactiveProps, h, handleError, hasInjectionContext, hydrate, hydrateOnIdle, hydrateOnInteraction, hydrateOnMediaQuery, hydrateOnVisible, initCustomFormatter, initDirectivesForSSR, inject, isMemoSame, isProxy, isReactive, isReadonly, isRef, isRuntimeOnly, isShallow, isVNode, markRaw, mergeDefaults, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, onWatcherCleanup, openBlock, popScopeId, provide, proxyRefs, pushScopeId, queuePostFlushCb, reactive, readonly, ref, registerRuntimeCompiler, render, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, shallowReactive, shallowReadonly, shallowRef, ssrContextKey, ssrUtils, stop, toDisplayString, toHandlerKey, toHandlers, toRaw, toRef, toRefs, toValue, transformVNodeArgs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useHost, useId, useModel, useSSRContext, useShadowRoot, useSlots, useTemplateRef, useTransitionState, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withKeys, withMemo, withModifiers, withScopeId }; diff --git a/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-browser.prod.js b/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-browser.prod.js new file mode 100644 index 0000000..6421ff9 --- /dev/null +++ b/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-browser.prod.js @@ -0,0 +1,6 @@ +/** +* @vue/runtime-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/var e,t;let n,l,r,i,s,o,a,u,c,f,p,d;function h(e){let t=Object.create(null);for(let n of e.split(","))t[n]=1;return e=>e in t}let g={},m=[],_=()=>{},y=()=>!1,b=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&(e.charCodeAt(2)>122||97>e.charCodeAt(2)),S=e=>e.startsWith("onUpdate:"),C=Object.assign,x=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},E=Object.prototype.hasOwnProperty,w=(e,t)=>E.call(e,t),k=Array.isArray,T=e=>"[object Map]"===D(e),A=e=>"[object Set]"===D(e),R=e=>"[object Date]"===D(e),O=e=>"function"==typeof e,N=e=>"string"==typeof e,P=e=>"symbol"==typeof e,M=e=>null!==e&&"object"==typeof e,I=e=>(M(e)||O(e))&&O(e.then)&&O(e.catch),L=Object.prototype.toString,D=e=>L.call(e),F=e=>"[object Object]"===D(e),V=e=>N(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,U=h(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),j=e=>{let t=Object.create(null);return n=>t[n]||(t[n]=e(n))},B=/-(\w)/g,$=j(e=>e.replace(B,(e,t)=>t?t.toUpperCase():"")),H=/\B([A-Z])/g,W=j(e=>e.replace(H,"-$1").toLowerCase()),K=j(e=>e.charAt(0).toUpperCase()+e.slice(1)),z=j(e=>e?`on${K(e)}`:""),q=(e,t)=>!Object.is(e,t),G=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},J=(e,t,n,l=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:l,value:n})},X=e=>{let t=parseFloat(e);return isNaN(t)?e:t},Z=e=>{let t=N(e)?Number(e):NaN;return isNaN(t)?e:t},Y=()=>n||(n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{}),Q=h("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol");function ee(e){if(k(e)){let t={};for(let n=0;n<e.length;n++){let l=e[n],r=N(l)?function(e){let t={};return e.replace(el,"").split(et).forEach(e=>{if(e){let n=e.split(en);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}(l):ee(l);if(r)for(let e in r)t[e]=r[e]}return t}if(N(e)||M(e))return e}let et=/;(?![^(]*\))/g,en=/:([^]+)/,el=/\/\*[^]*?\*\//g;function er(e){let t="";if(N(e))t=e;else if(k(e))for(let n=0;n<e.length;n++){let l=er(e[n]);l&&(t+=l+" ")}else if(M(e))for(let n in e)e[n]&&(t+=n+" ");return t.trim()}function ei(e){if(!e)return null;let{class:t,style:n}=e;return t&&!N(t)&&(e.class=er(t)),n&&(e.style=ee(n)),e}let es=h("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function eo(e,t){if(e===t)return!0;let n=R(e),l=R(t);if(n||l)return!!n&&!!l&&e.getTime()===t.getTime();if(n=P(e),l=P(t),n||l)return e===t;if(n=k(e),l=k(t),n||l)return!!n&&!!l&&function(e,t){if(e.length!==t.length)return!1;let n=!0;for(let l=0;n&&l<e.length;l++)n=eo(e[l],t[l]);return n}(e,t);if(n=M(e),l=M(t),n||l){if(!n||!l||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e){let l=e.hasOwnProperty(n),r=t.hasOwnProperty(n);if(l&&!r||!l&&r||!eo(e[n],t[n]))return!1}}return String(e)===String(t)}function ea(e,t){return e.findIndex(e=>eo(e,t))}let eu=e=>!!(e&&!0===e.__v_isRef),ec=e=>N(e)?e:null==e?"":k(e)||M(e)&&(e.toString===L||!O(e.toString))?eu(e)?ec(e.value):JSON.stringify(e,ef,2):String(e),ef=(e,t)=>{if(eu(t))return ef(e,t.value);if(T(t))return{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],l)=>(e[ep(t,l)+" =>"]=n,e),{})};if(A(t))return{[`Set(${t.size})`]:[...t.values()].map(e=>ep(e))};if(P(t))return ep(t);if(M(t)&&!k(t)&&!F(t))return String(t);return t},ep=(e,t="")=>{var n;return P(e)?`Symbol(${null!=(n=e.description)?n:t})`:e};class ed{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=l,!e&&l&&(this.index=(l.scopes||(l.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){let e,t;if(this._isPaused=!0,this.scopes)for(e=0,t=this.scopes.length;e<t;e++)this.scopes[e].pause();for(e=0,t=this.effects.length;e<t;e++)this.effects[e].pause()}}resume(){if(this._active&&this._isPaused){let e,t;if(this._isPaused=!1,this.scopes)for(e=0,t=this.scopes.length;e<t;e++)this.scopes[e].resume();for(e=0,t=this.effects.length;e<t;e++)this.effects[e].resume()}}run(e){if(this._active){let t=l;try{return l=this,e()}finally{l=t}}}on(){1==++this._on&&(this.prevScope=l,l=this)}off(){this._on>0&&0==--this._on&&(l=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){let t,n;for(t=0,this._active=!1,n=this.effects.length;t<n;t++)this.effects[t].stop();for(t=0,this.effects.length=0,n=this.cleanups.length;t<n;t++)this.cleanups[t]();if(this.cleanups.length=0,this.scopes){for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!e){let e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.parent=void 0}}}function eh(e){return new ed(e)}function eg(){return l}function ev(e,t=!1){l&&l.cleanups.push(e)}let em=new WeakSet;class e_{constructor(e){this.fn=e,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,l&&l.active&&l.effects.push(this)}pause(){this.flags|=64}resume(){64&this.flags&&(this.flags&=-65,em.has(this)&&(em.delete(this),this.trigger()))}notify(){(!(2&this.flags)||32&this.flags)&&(8&this.flags||eb(this))}run(){if(!(1&this.flags))return this.fn();this.flags|=2,eM(this),eC(this);let e=r,t=eR;r=this,eR=!0;try{return this.fn()}finally{ex(this),r=e,eR=t,this.flags&=-3}}stop(){if(1&this.flags){for(let e=this.deps;e;e=e.nextDep)ek(e);this.deps=this.depsTail=void 0,eM(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){64&this.flags?em.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){eE(this)&&this.run()}get dirty(){return eE(this)}}let ey=0;function eb(e,t=!1){if(e.flags|=8,t){e.next=s,s=e;return}e.next=i,i=e}function eS(){let e;if(!(--ey>0)){if(s){let e=s;for(s=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}for(;i;){let t=i;for(i=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,1&t.flags)try{t.trigger()}catch(t){e||(e=t)}t=n}}if(e)throw e}}function eC(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function ex(e){let t,n=e.depsTail,l=n;for(;l;){let e=l.prevDep;-1===l.version?(l===n&&(n=e),ek(l),function(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}(l)):t=l,l.dep.activeLink=l.prevActiveLink,l.prevActiveLink=void 0,l=e}e.deps=t,e.depsTail=n}function eE(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ew(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ew(e){if(4&e.flags&&!(16&e.flags)||(e.flags&=-17,e.globalVersion===eI)||(e.globalVersion=eI,!e.isSSR&&128&e.flags&&(!e.deps&&!e._dirty||!eE(e))))return;e.flags|=2;let t=e.dep,n=r,l=eR;r=e,eR=!0;try{eC(e);let n=e.fn(e._value);(0===t.version||q(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{r=n,eR=l,ex(e),e.flags&=-3}}function ek(e,t=!1){let{dep:n,prevSub:l,nextSub:r}=e;if(l&&(l.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=l,e.nextSub=void 0),n.subs===e&&(n.subs=l,!l&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)ek(e,!0)}t||--n.sc||!n.map||n.map.delete(n.key)}function eT(e,t){e.effect instanceof e_&&(e=e.effect.fn);let n=new e_(e);t&&C(n,t);try{n.run()}catch(e){throw n.stop(),e}let l=n.run.bind(n);return l.effect=n,l}function eA(e){e.effect.stop()}let eR=!0,eO=[];function eN(){eO.push(eR),eR=!1}function eP(){let e=eO.pop();eR=void 0===e||e}function eM(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=r;r=void 0;try{t()}finally{r=e}}}let eI=0;class eL{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class eD{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!r||!eR||r===this.computed)return;let t=this.activeLink;if(void 0===t||t.sub!==r)t=this.activeLink=new eL(r,this),r.deps?(t.prevDep=r.depsTail,r.depsTail.nextDep=t,r.depsTail=t):r.deps=r.depsTail=t,function e(t){if(t.dep.sc++,4&t.sub.flags){let n=t.dep.computed;if(n&&!t.dep.subs){n.flags|=20;for(let t=n.deps;t;t=t.nextDep)e(t)}let l=t.dep.subs;l!==t&&(t.prevSub=l,l&&(l.nextSub=t)),t.dep.subs=t}}(t);else if(-1===t.version&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=r.depsTail,t.nextDep=void 0,r.depsTail.nextDep=t,r.depsTail=t,r.deps===t&&(r.deps=e)}return t}trigger(e){this.version++,eI++,this.notify(e)}notify(e){ey++;try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{eS()}}}let eF=new WeakMap,eV=Symbol(""),eU=Symbol(""),ej=Symbol("");function eB(e,t,n){if(eR&&r){let t=eF.get(e);t||eF.set(e,t=new Map);let l=t.get(n);l||(t.set(n,l=new eD),l.map=t,l.key=n),l.track()}}function e$(e,t,n,l,r,i){let s=eF.get(e);if(!s)return void eI++;let o=e=>{e&&e.trigger()};if(ey++,"clear"===t)s.forEach(o);else{let r=k(e),i=r&&V(n);if(r&&"length"===n){let e=Number(l);s.forEach((t,n)=>{("length"===n||n===ej||!P(n)&&n>=e)&&o(t)})}else switch((void 0!==n||s.has(void 0))&&o(s.get(n)),i&&o(s.get(ej)),t){case"add":r?i&&o(s.get("length")):(o(s.get(eV)),T(e)&&o(s.get(eU)));break;case"delete":!r&&(o(s.get(eV)),T(e)&&o(s.get(eU)));break;case"set":T(e)&&o(s.get(eV))}}eS()}function eH(e){let t=ty(e);return t===e?t:(eB(t,"iterate",ej),tm(e)?t:t.map(tS))}function eW(e){return eB(e=ty(e),"iterate",ej),e}let eK={__proto__:null,[Symbol.iterator](){return ez(this,Symbol.iterator,tS)},concat(...e){return eH(this).concat(...e.map(e=>k(e)?eH(e):e))},entries(){return ez(this,"entries",e=>(e[1]=tS(e[1]),e))},every(e,t){return eG(this,"every",e,t,void 0,arguments)},filter(e,t){return eG(this,"filter",e,t,e=>e.map(tS),arguments)},find(e,t){return eG(this,"find",e,t,tS,arguments)},findIndex(e,t){return eG(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return eG(this,"findLast",e,t,tS,arguments)},findLastIndex(e,t){return eG(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return eG(this,"forEach",e,t,void 0,arguments)},includes(...e){return eX(this,"includes",e)},indexOf(...e){return eX(this,"indexOf",e)},join(e){return eH(this).join(e)},lastIndexOf(...e){return eX(this,"lastIndexOf",e)},map(e,t){return eG(this,"map",e,t,void 0,arguments)},pop(){return eZ(this,"pop")},push(...e){return eZ(this,"push",e)},reduce(e,...t){return eJ(this,"reduce",e,t)},reduceRight(e,...t){return eJ(this,"reduceRight",e,t)},shift(){return eZ(this,"shift")},some(e,t){return eG(this,"some",e,t,void 0,arguments)},splice(...e){return eZ(this,"splice",e)},toReversed(){return eH(this).toReversed()},toSorted(e){return eH(this).toSorted(e)},toSpliced(...e){return eH(this).toSpliced(...e)},unshift(...e){return eZ(this,"unshift",e)},values(){return ez(this,"values",tS)}};function ez(e,t,n){let l=eW(e),r=l[t]();return l===e||tm(e)||(r._next=r.next,r.next=()=>{let e=r._next();return e.value&&(e.value=n(e.value)),e}),r}let eq=Array.prototype;function eG(e,t,n,l,r,i){let s=eW(e),o=s!==e&&!tm(e),a=s[t];if(a!==eq[t]){let t=a.apply(e,i);return o?tS(t):t}let u=n;s!==e&&(o?u=function(t,l){return n.call(this,tS(t),l,e)}:n.length>2&&(u=function(t,l){return n.call(this,t,l,e)}));let c=a.call(s,u,l);return o&&r?r(c):c}function eJ(e,t,n,l){let r=eW(e),i=n;return r!==e&&(tm(e)?n.length>3&&(i=function(t,l,r){return n.call(this,t,l,r,e)}):i=function(t,l,r){return n.call(this,t,tS(l),r,e)}),r[t](i,...l)}function eX(e,t,n){let l=ty(e);eB(l,"iterate",ej);let r=l[t](...n);return(-1===r||!1===r)&&t_(n[0])?(n[0]=ty(n[0]),l[t](...n)):r}function eZ(e,t,n=[]){eN(),ey++;let l=ty(e)[t].apply(e,n);return eS(),eP(),l}let eY=h("__proto__,__v_isRef,__isVue"),eQ=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>"arguments"!==e&&"caller"!==e).map(e=>Symbol[e]).filter(P));function e0(e){P(e)||(e=String(e));let t=ty(this);return eB(t,"has",e),t.hasOwnProperty(e)}class e1{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if("__v_skip"===t)return e.__v_skip;let l=this._isReadonly,r=this._isShallow;if("__v_isReactive"===t)return!l;if("__v_isReadonly"===t)return l;if("__v_isShallow"===t)return r;if("__v_raw"===t)return n===(l?r?tu:ta:r?to:ts).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let i=k(e);if(!l){let e;if(i&&(e=eK[t]))return e;if("hasOwnProperty"===t)return e0}let s=Reflect.get(e,t,tx(e)?e:n);return(P(t)?eQ.has(t):eY(t))||(l||eB(e,"get",t),r)?s:tx(s)?i&&V(t)?s:s.value:M(s)?l?tp(s):tc(s):s}}class e2 extends e1{constructor(e=!1){super(!1,e)}set(e,t,n,l){let r=e[t];if(!this._isShallow){let t=tv(r);if(tm(n)||tv(n)||(r=ty(r),n=ty(n)),!k(e)&&tx(r)&&!tx(n))if(t)return!1;else return r.value=n,!0}let i=k(e)&&V(t)?Number(t)<e.length:w(e,t),s=Reflect.set(e,t,n,tx(e)?e:l);return e===ty(l)&&(i?q(n,r)&&e$(e,"set",t,n):e$(e,"add",t,n)),s}deleteProperty(e,t){let n=w(e,t);e[t];let l=Reflect.deleteProperty(e,t);return l&&n&&e$(e,"delete",t,void 0),l}has(e,t){let n=Reflect.has(e,t);return P(t)&&eQ.has(t)||eB(e,"has",t),n}ownKeys(e){return eB(e,"iterate",k(e)?"length":eV),Reflect.ownKeys(e)}}class e6 extends e1{constructor(e=!1){super(!0,e)}set(e,t){return!0}deleteProperty(e,t){return!0}}let e8=new e2,e4=new e6,e3=new e2(!0),e5=new e6(!0),e9=e=>e,e7=e=>Reflect.getPrototypeOf(e);function te(e){return function(){return"delete"!==e&&("clear"===e?void 0:this)}}function tt(e,t){let n=function(e,t){let n={get(n){let l=this.__v_raw,r=ty(l),i=ty(n);e||(q(n,i)&&eB(r,"get",n),eB(r,"get",i));let{has:s}=e7(r),o=t?e9:e?tC:tS;return s.call(r,n)?o(l.get(n)):s.call(r,i)?o(l.get(i)):void(l!==r&&l.get(n))},get size(){let t=this.__v_raw;return e||eB(ty(t),"iterate",eV),Reflect.get(t,"size",t)},has(t){let n=this.__v_raw,l=ty(n),r=ty(t);return e||(q(t,r)&&eB(l,"has",t),eB(l,"has",r)),t===r?n.has(t):n.has(t)||n.has(r)},forEach(n,l){let r=this,i=r.__v_raw,s=ty(i),o=t?e9:e?tC:tS;return e||eB(s,"iterate",eV),i.forEach((e,t)=>n.call(l,o(e),o(t),r))}};return C(n,e?{add:te("add"),set:te("set"),delete:te("delete"),clear:te("clear")}:{add(e){t||tm(e)||tv(e)||(e=ty(e));let n=ty(this);return e7(n).has.call(n,e)||(n.add(e),e$(n,"add",e,e)),this},set(e,n){t||tm(n)||tv(n)||(n=ty(n));let l=ty(this),{has:r,get:i}=e7(l),s=r.call(l,e);s||(e=ty(e),s=r.call(l,e));let o=i.call(l,e);return l.set(e,n),s?q(n,o)&&e$(l,"set",e,n):e$(l,"add",e,n),this},delete(e){let t=ty(this),{has:n,get:l}=e7(t),r=n.call(t,e);r||(e=ty(e),r=n.call(t,e)),l&&l.call(t,e);let i=t.delete(e);return r&&e$(t,"delete",e,void 0),i},clear(){let e=ty(this),t=0!==e.size,n=e.clear();return t&&e$(e,"clear",void 0,void 0),n}}),["keys","values","entries",Symbol.iterator].forEach(l=>{n[l]=function(...n){let r=this.__v_raw,i=ty(r),s=T(i),o="entries"===l||l===Symbol.iterator&&s,a=r[l](...n),u=t?e9:e?tC:tS;return e||eB(i,"iterate","keys"===l&&s?eU:eV),{next(){let{value:e,done:t}=a.next();return t?{value:e,done:t}:{value:o?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}),n}(e,t);return(t,l,r)=>"__v_isReactive"===l?!e:"__v_isReadonly"===l?e:"__v_raw"===l?t:Reflect.get(w(n,l)&&l in t?n:t,l,r)}let tn={get:tt(!1,!1)},tl={get:tt(!1,!0)},tr={get:tt(!0,!1)},ti={get:tt(!0,!0)},ts=new WeakMap,to=new WeakMap,ta=new WeakMap,tu=new WeakMap;function tc(e){return tv(e)?e:th(e,!1,e8,tn,ts)}function tf(e){return th(e,!1,e3,tl,to)}function tp(e){return th(e,!0,e4,tr,ta)}function td(e){return th(e,!0,e5,ti,tu)}function th(e,t,n,l,r){var i;if(!M(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;let s=(i=e).__v_skip||!Object.isExtensible(i)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(D(i).slice(8,-1));if(0===s)return e;let o=r.get(e);if(o)return o;let a=new Proxy(e,2===s?l:n);return r.set(e,a),a}function tg(e){return tv(e)?tg(e.__v_raw):!!(e&&e.__v_isReactive)}function tv(e){return!!(e&&e.__v_isReadonly)}function tm(e){return!!(e&&e.__v_isShallow)}function t_(e){return!!e&&!!e.__v_raw}function ty(e){let t=e&&e.__v_raw;return t?ty(t):e}function tb(e){return!w(e,"__v_skip")&&Object.isExtensible(e)&&J(e,"__v_skip",!0),e}let tS=e=>M(e)?tc(e):e,tC=e=>M(e)?tp(e):e;function tx(e){return!!e&&!0===e.__v_isRef}function tE(e){return tk(e,!1)}function tw(e){return tk(e,!0)}function tk(e,t){return tx(e)?e:new tT(e,t)}class tT{constructor(e,t){this.dep=new eD,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:ty(e),this._value=t?e:tS(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||tm(e)||tv(e);q(e=n?e:ty(e),t)&&(this._rawValue=e,this._value=n?e:tS(e),this.dep.trigger())}}function tA(e){e.dep&&e.dep.trigger()}function tR(e){return tx(e)?e.value:e}function tO(e){return O(e)?e():tR(e)}let tN={get:(e,t,n)=>"__v_raw"===t?e:tR(Reflect.get(e,t,n)),set:(e,t,n,l)=>{let r=e[t];return tx(r)&&!tx(n)?(r.value=n,!0):Reflect.set(e,t,n,l)}};function tP(e){return tg(e)?e:new Proxy(e,tN)}class tM{constructor(e){this.__v_isRef=!0,this._value=void 0;let t=this.dep=new eD,{get:n,set:l}=e(t.track.bind(t),t.trigger.bind(t));this._get=n,this._set=l}get value(){return this._value=this._get()}set value(e){this._set(e)}}function tI(e){return new tM(e)}function tL(e){let t=k(e)?Array(e.length):{};for(let n in e)t[n]=tU(e,n);return t}class tD{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0}get value(){let e=this._object[this._key];return this._value=void 0===e?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return function(e,t){let n=eF.get(e);return n&&n.get(t)}(ty(this._object),this._key)}}class tF{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function tV(e,t,n){return tx(e)?e:O(e)?new tF(e):M(e)&&arguments.length>1?tU(e,t,n):tE(e)}function tU(e,t,n){let l=e[t];return tx(l)?l:new tD(e,t,n)}class tj{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new eD(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=eI-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(8&this.flags)&&r!==this)return eb(this,!0),!0}get value(){let e=this.dep.track();return ew(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}let tB={GET:"get",HAS:"has",ITERATE:"iterate"},t$={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"},tH={},tW=new WeakMap;function tK(){return p}function tz(e,t=!1,n=p){if(n){let t=tW.get(n);t||tW.set(n,t=[]),t.push(e)}}function tq(e,t=1/0,n){if(t<=0||!M(e)||e.__v_skip||(n=n||new Set).has(e))return e;if(n.add(e),t--,tx(e))tq(e.value,t,n);else if(k(e))for(let l=0;l<e.length;l++)tq(e[l],t,n);else if(A(e)||T(e))e.forEach(e=>{tq(e,t,n)});else if(F(e)){for(let l in e)tq(e[l],t,n);for(let l of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,l)&&tq(e[l],t,n)}return e}function tG(e,t){}let tJ={SETUP_FUNCTION:0,0:"SETUP_FUNCTION",RENDER_FUNCTION:1,1:"RENDER_FUNCTION",NATIVE_EVENT_HANDLER:5,5:"NATIVE_EVENT_HANDLER",COMPONENT_EVENT_HANDLER:6,6:"COMPONENT_EVENT_HANDLER",VNODE_HOOK:7,7:"VNODE_HOOK",DIRECTIVE_HOOK:8,8:"DIRECTIVE_HOOK",TRANSITION_HOOK:9,9:"TRANSITION_HOOK",APP_ERROR_HANDLER:10,10:"APP_ERROR_HANDLER",APP_WARN_HANDLER:11,11:"APP_WARN_HANDLER",FUNCTION_REF:12,12:"FUNCTION_REF",ASYNC_COMPONENT_LOADER:13,13:"ASYNC_COMPONENT_LOADER",SCHEDULER:14,14:"SCHEDULER",COMPONENT_UPDATE:15,15:"COMPONENT_UPDATE",APP_UNMOUNT_CLEANUP:16,16:"APP_UNMOUNT_CLEANUP"};function tX(e,t,n,l){try{return l?e(...l):e()}catch(e){tY(e,t,n)}}function tZ(e,t,n,l){if(O(e)){let r=tX(e,t,n,l);return r&&I(r)&&r.catch(e=>{tY(e,t,n)}),r}if(k(e)){let r=[];for(let i=0;i<e.length;i++)r.push(tZ(e[i],t,n,l));return r}}function tY(e,t,n,l=!0){let r=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:s}=t&&t.appContext.config||g;if(t){let l=t.parent,r=t.proxy,s=`https://vuejs.org/error-reference/#runtime-${n}`;for(;l;){let t=l.ec;if(t){for(let n=0;n<t.length;n++)if(!1===t[n](e,r,s))return}l=l.parent}if(i){eN(),tX(i,null,10,[e,r,s]),eP();return}}!function(e,t,n,l=!0,r=!1){if(r)throw e;console.error(e)}(e,0,0,l,s)}let tQ=[],t0=-1,t1=[],t2=null,t6=0,t8=Promise.resolve(),t4=null;function t3(e){let t=t4||t8;return e?t.then(this?e.bind(this):e):t}function t5(e){if(!(1&e.flags)){let t=nn(e),n=tQ[tQ.length-1];!n||!(2&e.flags)&&t>=nn(n)?tQ.push(e):tQ.splice(function(e){let t=t0+1,n=tQ.length;for(;t<n;){let l=t+n>>>1,r=tQ[l],i=nn(r);i<e||i===e&&2&r.flags?t=l+1:n=l}return t}(t),0,e),e.flags|=1,t9()}}function t9(){t4||(t4=t8.then(function e(t){try{for(t0=0;t0<tQ.length;t0++){let e=tQ[t0];e&&!(8&e.flags)&&(4&e.flags&&(e.flags&=-2),tX(e,e.i,e.i?15:14),4&e.flags||(e.flags&=-2))}}finally{for(;t0<tQ.length;t0++){let e=tQ[t0];e&&(e.flags&=-2)}t0=-1,tQ.length=0,nt(),t4=null,(tQ.length||t1.length)&&e()}}))}function t7(e){k(e)?t1.push(...e):t2&&-1===e.id?t2.splice(t6+1,0,e):1&e.flags||(t1.push(e),e.flags|=1),t9()}function ne(e,t,n=t0+1){for(;n<tQ.length;n++){let t=tQ[n];if(t&&2&t.flags){if(e&&t.id!==e.uid)continue;tQ.splice(n,1),n--,4&t.flags&&(t.flags&=-2),t(),4&t.flags||(t.flags&=-2)}}}function nt(e){if(t1.length){let e=[...new Set(t1)].sort((e,t)=>nn(e)-nn(t));if(t1.length=0,t2)return void t2.push(...e);for(t6=0,t2=e;t6<t2.length;t6++){let e=t2[t6];4&e.flags&&(e.flags&=-2),8&e.flags||e(),e.flags&=-2}t2=null,t6=0}}let nn=e=>null==e.id?2&e.flags?-1:1/0:e.id,nl=null,nr=null;function ni(e){let t=nl;return nl=e,nr=e&&e.type.__scopeId||null,t}function ns(e){nr=e}function no(){nr=null}let na=e=>nu;function nu(e,t=nl,n){if(!t||e._n)return e;let l=(...n)=>{let r;l._d&&r2(-1);let i=ni(t);try{r=e(...n)}finally{ni(i),l._d&&r2(1)}return r};return l._n=!0,l._c=!0,l._d=!0,l}function nc(e,t){if(null===nl)return e;let n=iN(nl),l=e.dirs||(e.dirs=[]);for(let e=0;e<t.length;e++){let[r,i,s,o=g]=t[e];r&&(O(r)&&(r={mounted:r,updated:r}),r.deep&&tq(i),l.push({dir:r,instance:n,value:i,oldValue:void 0,arg:s,modifiers:o}))}return e}function nf(e,t,n,l){let r=e.dirs,i=t&&t.dirs;for(let s=0;s<r.length;s++){let o=r[s];i&&(o.oldValue=i[s].value);let a=o.dir[l];a&&(eN(),tZ(a,n,8,[e.el,o,e,t]),eP())}}let np=Symbol("_vte"),nd=e=>e&&(e.disabled||""===e.disabled),nh=e=>e&&(e.defer||""===e.defer),ng=e=>"undefined"!=typeof SVGElement&&e instanceof SVGElement,nv=e=>"function"==typeof MathMLElement&&e instanceof MathMLElement,nm=(e,t)=>{let n=e&&e.to;return N(n)?t?t(n):null:n},n_={name:"Teleport",__isTeleport:!0,process(e,t,n,l,r,i,s,o,a,u){let{mc:c,pc:f,pbc:p,o:{insert:d,querySelector:h,createText:g,createComment:m}}=u,_=nd(t.props),{shapeFlag:y,children:b,dynamicChildren:S}=t;if(null==e){let e=t.el=g(""),u=t.anchor=g("");d(e,n,l),d(u,n,l);let f=(e,t)=>{16&y&&(r&&r.isCE&&(r.ce._teleportTarget=e),c(b,e,t,r,i,s,o,a))},p=()=>{let e=t.target=nm(t.props,h),n=nC(e,t,g,d);e&&("svg"!==s&&ng(e)?s="svg":"mathml"!==s&&nv(e)&&(s="mathml"),_||(f(e,n),nS(t,!1)))};_&&(f(n,u),nS(t,!0)),nh(t.props)?(t.el.__isMounted=!1,rp(()=>{p(),delete t.el.__isMounted},i)):p()}else{if(nh(t.props)&&!1===e.el.__isMounted)return void rp(()=>{n_.process(e,t,n,l,r,i,s,o,a,u)},i);t.el=e.el,t.targetStart=e.targetStart;let c=t.anchor=e.anchor,d=t.target=e.target,g=t.targetAnchor=e.targetAnchor,m=nd(e.props),y=m?n:d,b=m?c:g;if("svg"===s||ng(d)?s="svg":("mathml"===s||nv(d))&&(s="mathml"),S?(p(e.dynamicChildren,S,y,r,i,s,o),ry(e,t,!0)):a||f(e,t,y,b,r,i,s,o,!1),_)m?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ny(t,n,c,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){let e=t.target=nm(t.props,h);e&&ny(t,e,null,u,0)}else m&&ny(t,d,g,u,1);nS(t,_)}},remove(e,t,n,{um:l,o:{remove:r}},i){let{shapeFlag:s,children:o,anchor:a,targetStart:u,targetAnchor:c,target:f,props:p}=e;if(f&&(r(u),r(c)),i&&r(a),16&s){let e=i||!nd(p);for(let r=0;r<o.length;r++){let i=o[r];l(i,t,n,e,!!i.dynamicChildren)}}},move:ny,hydrate:function(e,t,n,l,r,i,{o:{nextSibling:s,parentNode:o,querySelector:a,insert:u,createText:c}},f){let p=t.target=nm(t.props,a);if(p){let a=nd(t.props),d=p._lpa||p.firstChild;if(16&t.shapeFlag)if(a)t.anchor=f(s(e),t,o(e),n,l,r,i),t.targetStart=d,t.targetAnchor=d&&s(d);else{t.anchor=s(e);let o=d;for(;o;){if(o&&8===o.nodeType){if("teleport start anchor"===o.data)t.targetStart=o;else if("teleport anchor"===o.data){t.targetAnchor=o,p._lpa=t.targetAnchor&&s(t.targetAnchor);break}}o=s(o)}t.targetAnchor||nC(p,t,c,u),f(d&&s(d),t,p,n,l,r,i)}nS(t,a)}return t.anchor&&s(t.anchor)}};function ny(e,t,n,{o:{insert:l},m:r},i=2){0===i&&l(e.targetAnchor,t,n);let{el:s,anchor:o,shapeFlag:a,children:u,props:c}=e,f=2===i;if(f&&l(s,t,n),(!f||nd(c))&&16&a)for(let e=0;e<u.length;e++)r(u[e],t,n,2);f&&l(o,t,n)}let nb=n_;function nS(e,t){let n=e.ctx;if(n&&n.ut){let l,r;for(t?(l=e.el,r=e.anchor):(l=e.targetStart,r=e.targetAnchor);l&&l!==r;)1===l.nodeType&&l.setAttribute("data-v-owner",n.uid),l=l.nextSibling;n.ut()}}function nC(e,t,n,l){let r=t.targetStart=n(""),i=t.targetAnchor=n("");return r[np]=i,e&&(l(r,e),l(i,e)),i}let nx=Symbol("_leaveCb"),nE=Symbol("_enterCb");function nw(){let e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return ls(()=>{e.isMounted=!0}),lu(()=>{e.isUnmounting=!0}),e}let nk=[Function,Array],nT={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:nk,onEnter:nk,onAfterEnter:nk,onEnterCancelled:nk,onBeforeLeave:nk,onLeave:nk,onAfterLeave:nk,onLeaveCancelled:nk,onBeforeAppear:nk,onAppear:nk,onAfterAppear:nk,onAppearCancelled:nk},nA=e=>{let t=e.subTree;return t.component?nA(t.component):t};function nR(e){let t=e[0];if(e.length>1){for(let n of e)if(n.type!==rJ){t=n;break}}return t}let nO={name:"BaseTransition",props:nT,setup(e,{slots:t}){let n=iy(),l=nw();return()=>{let r=t.default&&nD(t.default(),!0);if(!r||!r.length)return;let i=nR(r),s=ty(e),{mode:o}=s;if(l.isLeaving)return nM(i);let a=nI(i);if(!a)return nM(i);let u=nP(a,s,l,n,e=>u=e);a.type!==rJ&&nL(a,u);let c=n.subTree&&nI(n.subTree);if(c&&c.type!==rJ&&!r5(a,c)&&nA(n).type!==rJ){let e=nP(c,s,l,n);if(nL(c,e),"out-in"===o&&a.type!==rJ)return l.isLeaving=!0,e.afterLeave=()=>{l.isLeaving=!1,8&n.job.flags||n.update(),delete e.afterLeave,c=void 0},nM(i);"in-out"===o&&a.type!==rJ?e.delayLeave=(e,t,n)=>{nN(l,c)[String(c.key)]=c,e[nx]=()=>{t(),e[nx]=void 0,delete u.delayedLeave,c=void 0},u.delayedLeave=()=>{n(),delete u.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return i}}};function nN(e,t){let{leavingVNodes:n}=e,l=n.get(t.type);return l||(l=Object.create(null),n.set(t.type,l)),l}function nP(e,t,n,l,r){let{appear:i,mode:s,persisted:o=!1,onBeforeEnter:a,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:p,onLeave:d,onAfterLeave:h,onLeaveCancelled:g,onBeforeAppear:m,onAppear:_,onAfterAppear:y,onAppearCancelled:b}=t,S=String(e.key),C=nN(n,e),x=(e,t)=>{e&&tZ(e,l,9,t)},E=(e,t)=>{let n=t[1];x(e,t),k(e)?e.every(e=>e.length<=1)&&n():e.length<=1&&n()},w={mode:s,persisted:o,beforeEnter(t){let l=a;if(!n.isMounted)if(!i)return;else l=m||a;t[nx]&&t[nx](!0);let r=C[S];r&&r5(e,r)&&r.el[nx]&&r.el[nx](),x(l,[t])},enter(e){let t=u,l=c,r=f;if(!n.isMounted)if(!i)return;else t=_||u,l=y||c,r=b||f;let s=!1,o=e[nE]=t=>{s||(s=!0,t?x(r,[e]):x(l,[e]),w.delayedLeave&&w.delayedLeave(),e[nE]=void 0)};t?E(t,[e,o]):o()},leave(t,l){let r=String(e.key);if(t[nE]&&t[nE](!0),n.isUnmounting)return l();x(p,[t]);let i=!1,s=t[nx]=n=>{i||(i=!0,l(),n?x(g,[t]):x(h,[t]),t[nx]=void 0,C[r]===e&&delete C[r])};C[r]=e,d?E(d,[t,s]):s()},clone(e){let i=nP(e,t,n,l,r);return r&&r(i),i}};return w}function nM(e){if(n4(e))return(e=ii(e)).children=null,e}function nI(e){if(!n4(e))return e.type.__isTeleport&&e.children?nR(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:n}=e;if(n){if(16&t)return n[0];if(32&t&&O(n.default))return n.default()}}function nL(e,t){6&e.shapeFlag&&e.component?(e.transition=t,nL(e.component.subTree,t)):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function nD(e,t=!1,n){let l=[],r=0;for(let i=0;i<e.length;i++){let s=e[i],o=null==n?s.key:String(n)+String(null!=s.key?s.key:i);s.type===rq?(128&s.patchFlag&&r++,l=l.concat(nD(s.children,t,o))):(t||s.type!==rJ)&&l.push(null!=o?ii(s,{key:o}):s)}if(r>1)for(let e=0;e<l.length;e++)l[e].patchFlag=-2;return l}function nF(e,t){return O(e)?C({name:e.name},t,{setup:e}):e}function nV(){let e=iy();return e?(e.appContext.config.idPrefix||"v")+"-"+e.ids[0]+e.ids[1]++:""}function nU(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function nj(e){let t=iy(),n=tw(null);return t&&Object.defineProperty(t.refs===g?t.refs={}:t.refs,e,{enumerable:!0,get:()=>n.value,set:e=>n.value=e}),n}function nB(e,t,n,l,r=!1){if(k(e))return void e.forEach((e,i)=>nB(e,t&&(k(t)?t[i]:t),n,l,r));if(n2(l)&&!r){512&l.shapeFlag&&l.type.__asyncResolved&&l.component.subTree.component&&nB(e,t,n,l.component.subTree);return}let i=4&l.shapeFlag?iN(l.component):l.el,s=r?null:i,{i:o,r:a}=e,u=t&&t.r,c=o.refs===g?o.refs={}:o.refs,f=o.setupState,p=ty(f),d=f===g?()=>!1:e=>w(p,e);if(null!=u&&u!==a&&(N(u)?(c[u]=null,d(u)&&(f[u]=null)):tx(u)&&(u.value=null)),O(a))tX(a,o,12,[s,c]);else{let t=N(a),l=tx(a);if(t||l){let o=()=>{if(e.f){let n=t?d(a)?f[a]:c[a]:a.value;r?k(n)&&x(n,i):k(n)?n.includes(i)||n.push(i):t?(c[a]=[i],d(a)&&(f[a]=c[a])):(a.value=[i],e.k&&(c[e.k]=a.value))}else t?(c[a]=s,d(a)&&(f[a]=s)):l&&(a.value=s,e.k&&(c[e.k]=s))};s?(o.id=-1,rp(o,n)):o()}}}let n$=!1,nH=()=>{n$||(console.error("Hydration completed but contains mismatches."),n$=!0)},nW=e=>{if(1===e.nodeType){if(e.namespaceURI.includes("svg")&&"foreignObject"!==e.tagName)return"svg";if(e.namespaceURI.includes("MathML"))return"mathml"}},nK=e=>8===e.nodeType;function nz(e){let{mt:t,p:n,o:{patchProp:l,createText:r,nextSibling:i,parentNode:s,remove:o,insert:a,createComment:u}}=e,c=(n,l,o,u,y,b=!1)=>{b=b||!!l.dynamicChildren;let S=nK(n)&&"["===n.data,C=()=>h(n,l,o,u,y,S),{type:x,ref:E,shapeFlag:w,patchFlag:k}=l,T=n.nodeType;l.el=n,-2===k&&(b=!1,l.dynamicChildren=null);let A=null;switch(x){case rG:3!==T?""===l.children?(a(l.el=r(""),s(n),n),A=n):A=C():(n.data!==l.children&&(nH(),n.data=l.children),A=i(n));break;case rJ:_(n)?(A=i(n),m(l.el=n.content.firstChild,n,o)):A=8!==T||S?C():i(n);break;case rX:if(S&&(T=(n=i(n)).nodeType),1===T||3===T){A=n;let e=!l.children.length;for(let t=0;t<l.staticCount;t++)e&&(l.children+=1===A.nodeType?A.outerHTML:A.data),t===l.staticCount-1&&(l.anchor=A),A=i(A);return S?i(A):A}C();break;case rq:A=S?d(n,l,o,u,y,b):C();break;default:if(1&w)A=1===T&&l.type.toLowerCase()===n.tagName.toLowerCase()||_(n)?f(n,l,o,u,y,b):C();else if(6&w){l.slotScopeIds=y;let e=s(n);if(A=S?g(n):nK(n)&&"teleport start"===n.data?g(n,n.data,"teleport end"):i(n),t(l,e,null,o,u,nW(e),b),n2(l)&&!l.type.__asyncResolved){let t;S?(t=il(rq)).anchor=A?A.previousSibling:e.lastChild:t=3===n.nodeType?is(""):il("div"),t.el=n,l.component.subTree=t}}else 64&w?A=8!==T?C():l.type.hydrate(n,l,o,u,y,b,e,p):128&w&&(A=l.type.hydrate(n,l,o,u,nW(s(n)),y,b,e,c))}return null!=E&&nB(E,null,u,l),A},f=(e,t,n,r,i,s)=>{s=s||!!t.dynamicChildren;let{type:a,props:u,patchFlag:c,shapeFlag:f,dirs:d,transition:h}=t,g="input"===a||"option"===a;if(g||-1!==c){let a;d&&nf(t,null,n,"created");let y=!1;if(_(e)){y=r_(null,h)&&n&&n.vnode.props&&n.vnode.props.appear;let l=e.content.firstChild;if(y){let e=l.getAttribute("class");e&&(l.$cls=e),h.beforeEnter(l)}m(l,e,n),t.el=e=l}if(16&f&&!(u&&(u.innerHTML||u.textContent))){let l=p(e.firstChild,t,e,n,r,i,s);for(;l;){nJ(e,1)||nH();let t=l;l=l.nextSibling,o(t)}}else if(8&f){let n=t.children;` +`===n[0]&&("PRE"===e.tagName||"TEXTAREA"===e.tagName)&&(n=n.slice(1)),e.textContent!==n&&(nJ(e,0)||nH(),e.textContent=t.children)}if(u){if(g||!s||48&c){let t=e.tagName.includes("-");for(let r in u)(g&&(r.endsWith("value")||"indeterminate"===r)||b(r)&&!U(r)||"."===r[0]||t)&&l(e,r,null,u[r],void 0,n)}else if(u.onClick)l(e,"onClick",null,u.onClick,void 0,n);else if(4&c&&tg(u.style))for(let e in u.style)u.style[e]}(a=u&&u.onVnodeBeforeMount)&&ih(a,n,t),d&&nf(t,null,n,"beforeMount"),((a=u&&u.onVnodeMounted)||d||y)&&rK(()=>{a&&ih(a,n,t),y&&h.enter(e),d&&nf(t,null,n,"mounted")},r)}return e.nextSibling},p=(e,t,l,s,o,u,f)=>{f=f||!!t.dynamicChildren;let p=t.children,d=p.length;for(let t=0;t<d;t++){let h=f?p[t]:p[t]=iu(p[t]),g=h.type===rG;e?(g&&!f&&t+1<d&&iu(p[t+1]).type===rG&&(a(r(e.data.slice(h.children.length)),l,i(e)),e.data=h.children),e=c(e,h,s,o,u,f)):g&&!h.children?a(h.el=r(""),l):(nJ(l,1)||nH(),n(null,h,l,null,s,o,nW(l),u))}return e},d=(e,t,n,l,r,o)=>{let{slotScopeIds:c}=t;c&&(r=r?r.concat(c):c);let f=s(e),d=p(i(e),t,f,n,l,r,o);return d&&nK(d)&&"]"===d.data?i(t.anchor=d):(nH(),a(t.anchor=u("]"),f,d),d)},h=(e,t,l,r,a,u)=>{if(nJ(e.parentElement,1)||nH(),t.el=null,u){let t=g(e);for(;;){let n=i(e);if(n&&n!==t)o(n);else break}}let c=i(e),f=s(e);return o(e),n(null,t,f,c,l,r,nW(f),a),l&&(l.vnode.el=t.el,rV(l,t.el)),c},g=(e,t="[",n="]")=>{let l=0;for(;e;)if((e=i(e))&&nK(e)&&(e.data===t&&l++,e.data===n))if(0===l)return i(e);else l--;return e},m=(e,t,n)=>{let l=t.parentNode;l&&l.replaceChild(e,t);let r=n;for(;r;)r.vnode.el===t&&(r.vnode.el=r.subTree.el=e),r=r.parent},_=e=>1===e.nodeType&&"TEMPLATE"===e.tagName;return[(e,t)=>{if(!t.hasChildNodes()){n(null,e,t),nt(),t._vnode=e;return}c(t.firstChild,e,null,null,null),nt(),t._vnode=e},c]}let nq="data-allow-mismatch",nG={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function nJ(e,t){if(0===t||1===t)for(;e&&!e.hasAttribute(nq);)e=e.parentElement;let n=e&&e.getAttribute(nq);if(null==n)return!1;{if(""===n)return!0;let e=n.split(",");return!!(0===t&&e.includes("children"))||e.includes(nG[t])}}let nX=Y().requestIdleCallback||(e=>setTimeout(e,1)),nZ=Y().cancelIdleCallback||(e=>clearTimeout(e)),nY=(e=1e4)=>t=>{let n=nX(t,{timeout:e});return()=>nZ(n)},nQ=e=>(t,n)=>{let l=new IntersectionObserver(e=>{for(let n of e)if(n.isIntersecting){l.disconnect(),t();break}},e);return n(e=>{if(e instanceof Element){if(function(e){let{top:t,left:n,bottom:l,right:r}=e.getBoundingClientRect(),{innerHeight:i,innerWidth:s}=window;return(t>0&&t<i||l>0&&l<i)&&(n>0&&n<s||r>0&&r<s)}(e))return t(),l.disconnect(),!1;l.observe(e)}}),()=>l.disconnect()},n0=e=>t=>{if(e){let n=matchMedia(e);if(!n.matches)return n.addEventListener("change",t,{once:!0}),()=>n.removeEventListener("change",t);t()}},n1=(e=[])=>(t,n)=>{N(e)&&(e=[e]);let l=!1,r=e=>{l||(l=!0,i(),t(),e.target.dispatchEvent(new e.constructor(e.type,e)))},i=()=>{n(t=>{for(let n of e)t.removeEventListener(n,r)})};return n(t=>{for(let n of e)t.addEventListener(n,r,{once:!0})}),i},n2=e=>!!e.type.__asyncLoader;function n6(e){let t;O(e)&&(e={loader:e});let{loader:n,loadingComponent:l,errorComponent:r,delay:i=200,hydrate:s,timeout:o,suspensible:a=!0,onError:u}=e,c=null,f=0,p=()=>{let e;return c||(e=c=n().catch(e=>{if(e=e instanceof Error?e:Error(String(e)),u)return new Promise((t,n)=>{u(e,()=>t((f++,c=null,p())),()=>n(e),f+1)});throw e}).then(n=>e!==c&&c?c:(n&&(n.__esModule||"Module"===n[Symbol.toStringTag])&&(n=n.default),t=n,n)))};return nF({name:"AsyncComponentWrapper",__asyncLoader:p,__asyncHydrate(e,n,l){let r=!1;(n.bu||(n.bu=[])).push(()=>r=!0);let i=()=>{r||l()},o=s?()=>{let t=s(i,t=>(function(e,t){if(nK(e)&&"["===e.data){let n=1,l=e.nextSibling;for(;l;){if(1===l.nodeType){if(!1===t(l))break}else if(nK(l))if("]"===l.data){if(0==--n)break}else"["===l.data&&n++;l=l.nextSibling}}else t(e)})(e,t));t&&(n.bum||(n.bum=[])).push(t)}:i;t?o():p().then(()=>!n.isUnmounted&&o())},get __asyncResolved(){return t},setup(){let e=i_;if(nU(e),t)return()=>n8(t,e);let n=t=>{c=null,tY(t,e,13,!r)};if(a&&e.suspense||ix)return p().then(t=>()=>n8(t,e)).catch(e=>(n(e),()=>r?il(r,{error:e}):null));let s=tE(!1),u=tE(),f=tE(!!i);return i&&setTimeout(()=>{f.value=!1},i),null!=o&&setTimeout(()=>{if(!s.value&&!u.value){let e=Error(`Async component timed out after ${o}ms.`);n(e),u.value=e}},o),p().then(()=>{s.value=!0,e.parent&&n4(e.parent.vnode)&&e.parent.update()}).catch(e=>{n(e),u.value=e}),()=>s.value&&t?n8(t,e):u.value&&r?il(r,{error:u.value}):l&&!f.value?il(l):void 0}})}function n8(e,t){let{ref:n,props:l,children:r,ce:i}=t.vnode,s=il(e,l,r);return s.ref=n,s.ce=i,delete t.vnode.ce,s}let n4=e=>e.type.__isKeepAlive,n3={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){let n=iy(),l=n.ctx;if(!l.renderer)return()=>{let e=t.default&&t.default();return e&&1===e.length?e[0]:e};let r=new Map,i=new Set,s=null,o=n.suspense,{renderer:{p:a,m:u,um:c,o:{createElement:f}}}=l,p=f("div");function d(e){lt(e),c(e,n,o,!0)}function h(e){r.forEach((t,n)=>{let l=iP(t.type);l&&!e(l)&&g(n)})}function g(e){let t=r.get(e);!t||s&&r5(t,s)?s&<(s):d(t),r.delete(e),i.delete(e)}l.activate=(e,t,n,l,r)=>{let i=e.component;u(e,t,n,0,o),a(i.vnode,e,t,n,i,o,l,e.slotScopeIds,r),rp(()=>{i.isDeactivated=!1,i.a&&G(i.a);let t=e.props&&e.props.onVnodeMounted;t&&ih(t,i.parent,e)},o)},l.deactivate=e=>{let t=e.component;rb(t.m),rb(t.a),u(e,p,null,1,o),rp(()=>{t.da&&G(t.da);let n=e.props&&e.props.onVnodeUnmounted;n&&ih(n,t.parent,e),t.isDeactivated=!0},o)},rk(()=>[e.include,e.exclude],([e,t])=>{e&&h(t=>n5(e,t)),t&&h(e=>!n5(t,e))},{flush:"post",deep:!0});let m=null,_=()=>{null!=m&&(rU(n.subTree.type)?rp(()=>{r.set(m,ln(n.subTree))},n.subTree.suspense):r.set(m,ln(n.subTree)))};return ls(_),la(_),lu(()=>{r.forEach(e=>{let{subTree:t,suspense:l}=n,r=ln(t);if(e.type===r.type&&e.key===r.key){lt(r);let e=r.component.da;e&&rp(e,l);return}d(e)})}),()=>{if(m=null,!t.default)return s=null;let n=t.default(),l=n[0];if(n.length>1)return s=null,n;if(!r3(l)||!(4&l.shapeFlag)&&!(128&l.shapeFlag))return s=null,l;let o=ln(l);if(o.type===rJ)return s=null,o;let a=o.type,u=iP(n2(o)?o.type.__asyncResolved||{}:a),{include:c,exclude:f,max:p}=e;if(c&&(!u||!n5(c,u))||f&&u&&n5(f,u))return o.shapeFlag&=-257,s=o,l;let d=null==o.key?a:o.key,h=r.get(d);return o.el&&(o=ii(o),128&l.shapeFlag&&(l.ssContent=o)),m=d,h?(o.el=h.el,o.component=h.component,o.transition&&nL(o,o.transition),o.shapeFlag|=512,i.delete(d),i.add(d)):(i.add(d),p&&i.size>parseInt(p,10)&&g(i.values().next().value)),o.shapeFlag|=256,s=o,rU(l.type)?l:o}}};function n5(e,t){return k(e)?e.some(e=>n5(e,t)):N(e)?e.split(",").includes(t):"[object RegExp]"===D(e)&&(e.lastIndex=0,e.test(t))}function n9(e,t){le(e,"a",t)}function n7(e,t){le(e,"da",t)}function le(e,t,n=i_){let l=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(ll(t,l,n),n){let e=n.parent;for(;e&&e.parent;)n4(e.parent.vnode)&&function(e,t,n,l){let r=ll(t,e,l,!0);lc(()=>{x(l[t],r)},n)}(l,t,n,e),e=e.parent}}function lt(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function ln(e){return 128&e.shapeFlag?e.ssContent:e}function ll(e,t,n=i_,l=!1){if(n){let r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...l)=>{eN();let r=ib(n),i=tZ(t,n,e,l);return r(),eP(),i});return l?r.unshift(i):r.push(i),i}}let lr=e=>(t,n=i_)=>{ix&&"sp"!==e||ll(e,(...e)=>t(...e),n)},li=lr("bm"),ls=lr("m"),lo=lr("bu"),la=lr("u"),lu=lr("bum"),lc=lr("um"),lf=lr("sp"),lp=lr("rtg"),ld=lr("rtc");function lh(e,t=i_){ll("ec",e,t)}let lg="components";function lv(e,t){return lb(lg,e,!0,t)||e}let lm=Symbol.for("v-ndc");function l_(e){return N(e)?lb(lg,e,!1)||e:e||lm}function ly(e){return lb("directives",e)}function lb(e,t,n=!0,l=!1){let r=nl||i_;if(r){let n=r.type;if(e===lg){let e=iP(n,!1);if(e&&(e===t||e===$(t)||e===K($(t))))return n}let i=lS(r[e]||n[e],t)||lS(r.appContext[e],t);return!i&&l?n:i}}function lS(e,t){return e&&(e[t]||e[$(t)]||e[K($(t))])}function lC(e,t,n,l){let r,i=n&&n[l],s=k(e);if(s||N(e)){let n=s&&tg(e),l=!1,o=!1;n&&(l=!tm(e),o=tv(e),e=eW(e)),r=Array(e.length);for(let n=0,s=e.length;n<s;n++)r[n]=t(l?o?tC(tS(e[n])):tS(e[n]):e[n],n,void 0,i&&i[n])}else if("number"==typeof e){r=Array(e);for(let n=0;n<e;n++)r[n]=t(n+1,n,void 0,i&&i[n])}else if(M(e))if(e[Symbol.iterator])r=Array.from(e,(e,n)=>t(e,n,void 0,i&&i[n]));else{let n=Object.keys(e);r=Array(n.length);for(let l=0,s=n.length;l<s;l++){let s=n[l];r[l]=t(e[s],s,l,i&&i[l])}}else r=[];return n&&(n[l]=r),r}function lx(e,t){for(let n=0;n<t.length;n++){let l=t[n];if(k(l))for(let t=0;t<l.length;t++)e[l[t].name]=l[t].fn;else l&&(e[l.name]=l.key?(...e)=>{let t=l.fn(...e);return t&&(t.key=l.key),t}:l.fn)}return e}function lE(e,t,n={},l,r){if(nl.ce||nl.parent&&n2(nl.parent)&&nl.parent.ce)return"default"!==t&&(n.name=t),rQ(),r4(rq,null,[il("slot",n,l&&l())],64);let i=e[t];i&&i._c&&(i._d=!1),rQ();let s=i&&lw(i(n)),o=n.key||s&&s.key,a=r4(rq,{key:(o&&!P(o)?o:`_${t}`)+(!s&&l?"_fb":"")},s||(l?l():[]),s&&1===e._?64:-2);return!r&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),i&&i._c&&(i._d=!0),a}function lw(e){return e.some(e=>!r3(e)||e.type!==rJ&&(e.type!==rq||!!lw(e.children)))?e:null}function lk(e,t){let n={};for(let l in e)n[t&&/[A-Z]/.test(l)?`on:${l}`:z(l)]=e[l];return n}let lT=e=>e?iC(e)?iN(e):lT(e.parent):null,lA=C(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>lT(e.parent),$root:e=>lT(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>lJ(e),$forceUpdate:e=>e.f||(e.f=()=>{t5(e.update)}),$nextTick:e=>e.n||(e.n=t3.bind(e.proxy)),$watch:e=>rA.bind(e)}),lR=(e,t)=>e!==g&&!e.__isScriptSetup&&w(e,t),lO={get({_:e},t){let n,l,r;if("__v_skip"===t)return!0;let{ctx:i,setupState:s,data:o,props:a,accessCache:u,type:c,appContext:f}=e;if("$"!==t[0]){let l=u[t];if(void 0!==l)switch(l){case 1:return s[t];case 2:return o[t];case 4:return i[t];case 3:return a[t]}else{if(lR(s,t))return u[t]=1,s[t];if(o!==g&&w(o,t))return u[t]=2,o[t];if((n=e.propsOptions[0])&&w(n,t))return u[t]=3,a[t];if(i!==g&&w(i,t))return u[t]=4,i[t];lq&&(u[t]=0)}}let p=lA[t];return p?("$attrs"===t&&eB(e.attrs,"get",""),p(e)):(l=c.__cssModules)&&(l=l[t])?l:i!==g&&w(i,t)?(u[t]=4,i[t]):w(r=f.config.globalProperties,t)?r[t]:void 0},set({_:e},t,n){let{data:l,setupState:r,ctx:i}=e;return lR(r,t)?(r[t]=n,!0):l!==g&&w(l,t)?(l[t]=n,!0):!w(e.props,t)&&!("$"===t[0]&&t.slice(1)in e)&&(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:l,appContext:r,propsOptions:i}},s){let o;return!!n[s]||e!==g&&w(e,s)||lR(t,s)||(o=i[0])&&w(o,s)||w(l,s)||w(lA,s)||w(r.config.globalProperties,s)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:w(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},lN=C({},lO,{get(e,t){if(t!==Symbol.unscopables)return lO.get(e,t,e)},has:(e,t)=>"_"!==t[0]&&!Q(t)});function lP(){return null}function lM(){return null}function lI(e){}function lL(e){}function lD(){return null}function lF(){}function lV(e,t){return null}function lU(){return lB().slots}function lj(){return lB().attrs}function lB(e){let t=iy();return t.setupContext||(t.setupContext=iO(t))}function l$(e){return k(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}function lH(e,t){let n=l$(e);for(let e in t){if(e.startsWith("__skip"))continue;let l=n[e];l?k(l)||O(l)?l=n[e]={type:l,default:t[e]}:l.default=t[e]:null===l&&(l=n[e]={default:t[e]}),l&&t[`__skip_${e}`]&&(l.skipFactory=!0)}return n}function lW(e,t){return e&&t?k(e)&&k(t)?e.concat(t):C({},l$(e),l$(t)):e||t}function lK(e,t){let n={};for(let l in e)t.includes(l)||Object.defineProperty(n,l,{enumerable:!0,get:()=>e[l]});return n}function lz(e){let t=iy(),n=e();return iS(),I(n)&&(n=n.catch(e=>{throw ib(t),e})),[n,()=>ib(t)]}let lq=!0;function lG(e,t,n){tZ(k(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function lJ(e){let t,n=e.type,{mixins:l,extends:r}=n,{mixins:i,optionsCache:s,config:{optionMergeStrategies:o}}=e.appContext,a=s.get(n);return a?t=a:i.length||l||r?(t={},i.length&&i.forEach(e=>lX(t,e,o,!0)),lX(t,n,o)):t=n,M(n)&&s.set(n,t),t}function lX(e,t,n,l=!1){let{mixins:r,extends:i}=t;for(let s in i&&lX(e,i,n,!0),r&&r.forEach(t=>lX(e,t,n,!0)),t)if(l&&"expose"===s);else{let l=lZ[s]||n&&n[s];e[s]=l?l(e[s],t[s]):t[s]}return e}let lZ={data:lY,props:l2,emits:l2,methods:l1,computed:l1,beforeCreate:l0,created:l0,beforeMount:l0,mounted:l0,beforeUpdate:l0,updated:l0,beforeDestroy:l0,beforeUnmount:l0,destroyed:l0,unmounted:l0,activated:l0,deactivated:l0,errorCaptured:l0,serverPrefetch:l0,components:l1,directives:l1,watch:function(e,t){if(!e)return t;if(!t)return e;let n=C(Object.create(null),e);for(let l in t)n[l]=l0(e[l],t[l]);return n},provide:lY,inject:function(e,t){return l1(lQ(e),lQ(t))}};function lY(e,t){return t?e?function(){return C(O(e)?e.call(this,this):e,O(t)?t.call(this,this):t)}:t:e}function lQ(e){if(k(e)){let t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function l0(e,t){return e?[...new Set([].concat(e,t))]:t}function l1(e,t){return e?C(Object.create(null),e,t):t}function l2(e,t){return e?k(e)&&k(t)?[...new Set([...e,...t])]:C(Object.create(null),l$(e),l$(null!=t?t:{})):t}function l6(){return{app:null,config:{isNativeTag:y,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let l8=0,l4=null;function l3(e,t){if(i_){let n=i_.provides,l=i_.parent&&i_.parent.provides;l===n&&(n=i_.provides=Object.create(l)),n[e]=t}}function l5(e,t,n=!1){let l=iy();if(l||l4){let r=l4?l4._context.provides:l?null==l.parent||l.ce?l.vnode.appContext&&l.vnode.appContext.provides:l.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return n&&O(t)?t.call(l&&l.proxy):t}}function l9(){return!!(iy()||l4)}let l7={},re=()=>Object.create(l7),rt=e=>Object.getPrototypeOf(e)===l7;function rn(e,t,n,l){let r,[i,s]=e.propsOptions,o=!1;if(t)for(let a in t){let u;if(U(a))continue;let c=t[a];i&&w(i,u=$(a))?s&&s.includes(u)?(r||(r={}))[u]=c:n[u]=c:rM(e.emitsOptions,a)||a in l&&c===l[a]||(l[a]=c,o=!0)}if(s){let t=ty(n),l=r||g;for(let r=0;r<s.length;r++){let o=s[r];n[o]=rl(i,t,o,l[o],e,!w(l,o))}}return o}function rl(e,t,n,l,r,i){let s=e[n];if(null!=s){let e=w(s,"default");if(e&&void 0===l){let e=s.default;if(s.type!==Function&&!s.skipFactory&&O(e)){let{propsDefaults:i}=r;if(n in i)l=i[n];else{let s=ib(r);l=i[n]=e.call(null,t),s()}}else l=e;r.ce&&r.ce._setProp(n,l)}s[0]&&(i&&!e?l=!1:s[1]&&(""===l||l===W(n))&&(l=!0))}return l}let rr=new WeakMap;function ri(e){return!("$"===e[0]||U(e))}let rs=e=>"_"===e||"__"===e||"_ctx"===e||"$stable"===e,ro=e=>k(e)?e.map(iu):[iu(e)],ra=(e,t,n)=>{if(t._n)return t;let l=nu((...e)=>ro(t(...e)),n);return l._c=!1,l},ru=(e,t,n)=>{let l=e._ctx;for(let n in e){if(rs(n))continue;let r=e[n];if(O(r))t[n]=ra(n,r,l);else if(null!=r){let e=ro(r);t[n]=()=>e}}},rc=(e,t)=>{let n=ro(t);e.slots.default=()=>n},rf=(e,t,n)=>{for(let l in t)(n||!rs(l))&&(e[l]=t[l])},rp=rK;function rd(e){return rg(e)}function rh(e){return rg(e,nz)}function rg(e,t){var n;let l,r;Y().__VUE__=!0;let{insert:i,remove:s,patchProp:o,createElement:a,createText:u,createComment:c,setText:f,setElementText:p,parentNode:d,nextSibling:h,setScopeId:y=_,insertStaticContent:b}=e,S=(e,t,n,l=null,r=null,i=null,s,o=null,a=!!t.dynamicChildren)=>{if(e===t)return;e&&!r5(e,t)&&(l=el(e),Z(e,r,i,!0),e=null),-2===t.patchFlag&&(a=!1,t.dynamicChildren=null);let{type:u,ref:c,shapeFlag:f}=t;switch(u){case rG:x(e,t,n,l);break;case rJ:E(e,t,n,l);break;case rX:null==e&&T(t,n,l,s);break;case rq:F(e,t,n,l,r,i,s,o,a);break;default:1&f?A(e,t,n,l,r,i,s,o,a):6&f?V(e,t,n,l,r,i,s,o,a):64&f?u.process(e,t,n,l,r,i,s,o,a,es):128&f&&u.process(e,t,n,l,r,i,s,o,a,es)}null!=c&&r?nB(c,e&&e.ref,i,t||e,!t):null==c&&e&&null!=e.ref&&nB(e.ref,null,i,e,!0)},x=(e,t,n,l)=>{if(null==e)i(t.el=u(t.children),n,l);else{let n=t.el=e.el;t.children!==e.children&&f(n,t.children)}},E=(e,t,n,l)=>{null==e?i(t.el=c(t.children||""),n,l):t.el=e.el},T=(e,t,n,l)=>{[e.el,e.anchor]=b(e.children,t,n,l,e.el,e.anchor)},A=(e,t,n,l,r,i,s,o,a)=>{"svg"===t.type?s="svg":"math"===t.type&&(s="mathml"),null==e?R(t,n,l,r,i,s,o,a):I(e,t,r,i,s,o,a)},R=(e,t,n,l,r,s,u,c)=>{let f,d,{props:h,shapeFlag:g,transition:m,dirs:_}=e;if(f=e.el=a(e.type,s,h&&h.is,h),8&g?p(f,e.children):16&g&&P(e.children,f,null,l,r,rv(e,s),u,c),_&&nf(e,null,l,"created"),N(f,e,e.scopeId,u,l),h){for(let e in h)"value"===e||U(e)||o(f,e,null,h[e],s,l);"value"in h&&o(f,"value",null,h.value,s),(d=h.onVnodeBeforeMount)&&ih(d,l,e)}_&&nf(e,null,l,"beforeMount");let y=r_(r,m);y&&m.beforeEnter(f),i(f,t,n),((d=h&&h.onVnodeMounted)||y||_)&&rp(()=>{d&&ih(d,l,e),y&&m.enter(f),_&&nf(e,null,l,"mounted")},r)},N=(e,t,n,l,r)=>{if(n&&y(e,n),l)for(let t=0;t<l.length;t++)y(e,l[t]);if(r){let n=r.subTree;if(t===n||rU(n.type)&&(n.ssContent===t||n.ssFallback===t)){let t=r.vnode;N(e,t,t.scopeId,t.slotScopeIds,r.parent)}}},P=(e,t,n,l,r,i,s,o,a=0)=>{for(let u=a;u<e.length;u++)S(null,e[u]=o?ic(e[u]):iu(e[u]),t,n,l,r,i,s,o)},I=(e,t,n,l,r,i,s)=>{let a,u=t.el=e.el,{patchFlag:c,dynamicChildren:f,dirs:d}=t;c|=16&e.patchFlag;let h=e.props||g,m=t.props||g;if(n&&rm(n,!1),(a=m.onVnodeBeforeUpdate)&&ih(a,n,t,e),d&&nf(t,e,n,"beforeUpdate"),n&&rm(n,!0),(h.innerHTML&&null==m.innerHTML||h.textContent&&null==m.textContent)&&p(u,""),f?L(e.dynamicChildren,f,u,n,l,rv(t,r),i):s||z(e,t,u,null,n,l,rv(t,r),i,!1),c>0){if(16&c)D(u,h,m,n,r);else if(2&c&&h.class!==m.class&&o(u,"class",null,m.class,r),4&c&&o(u,"style",h.style,m.style,r),8&c){let e=t.dynamicProps;for(let t=0;t<e.length;t++){let l=e[t],i=h[l],s=m[l];(s!==i||"value"===l)&&o(u,l,i,s,r,n)}}1&c&&e.children!==t.children&&p(u,t.children)}else s||null!=f||D(u,h,m,n,r);((a=m.onVnodeUpdated)||d)&&rp(()=>{a&&ih(a,n,t,e),d&&nf(t,e,n,"updated")},l)},L=(e,t,n,l,r,i,s)=>{for(let o=0;o<t.length;o++){let a=e[o],u=t[o],c=a.el&&(a.type===rq||!r5(a,u)||198&a.shapeFlag)?d(a.el):n;S(a,u,c,null,l,r,i,s,!0)}},D=(e,t,n,l,r)=>{if(t!==n){if(t!==g)for(let i in t)U(i)||i in n||o(e,i,t[i],null,r,l);for(let i in n){if(U(i))continue;let s=n[i],a=t[i];s!==a&&"value"!==i&&o(e,i,a,s,r,l)}"value"in n&&o(e,"value",t.value,n.value,r)}},F=(e,t,n,l,r,s,o,a,c)=>{let f=t.el=e?e.el:u(""),p=t.anchor=e?e.anchor:u(""),{patchFlag:d,dynamicChildren:h,slotScopeIds:g}=t;g&&(a=a?a.concat(g):g),null==e?(i(f,n,l),i(p,n,l),P(t.children||[],n,p,r,s,o,a,c)):d>0&&64&d&&h&&e.dynamicChildren?(L(e.dynamicChildren,h,n,r,s,o,a),(null!=t.key||r&&t===r.subTree)&&ry(e,t,!0)):z(e,t,n,p,r,s,o,a,c)},V=(e,t,n,l,r,i,s,o,a)=>{t.slotScopeIds=o,null==e?512&t.shapeFlag?r.ctx.activate(t,n,l,s,a):j(t,n,l,r,i,s,a):B(e,t,a)},j=(e,t,n,l,r,i,s)=>{let o=e.component=im(e,l,r);if(n4(e)&&(o.ctx.renderer=es),iE(o,!1,s),o.asyncDep){if(r&&r.registerDep(o,H,s),!e.el){let l=o.subTree=il(rJ);E(null,l,t,n),e.placeholder=l.el}}else H(o,e,t,n,r,i,s)},B=(e,t,n)=>{let l=t.component=e.component;if(function(e,t,n){let{props:l,children:r,component:i}=e,{props:s,children:o,patchFlag:a}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(!n||!(a>=0))return(!!r||!!o)&&(!o||!o.$stable)||l!==s&&(l?!s||rF(l,s,u):!!s);if(1024&a)return!0;if(16&a)return l?rF(l,s,u):!!s;if(8&a){let e=t.dynamicProps;for(let t=0;t<e.length;t++){let n=e[t];if(s[n]!==l[n]&&!rM(u,n))return!0}}return!1}(e,t,n))if(l.asyncDep&&!l.asyncResolved)return void K(l,t,n);else l.next=t,l.update();else t.el=e.el,l.vnode=t},H=(e,t,n,l,i,s,o)=>{let a=()=>{if(e.isMounted){let t,{next:n,bu:l,u:r,parent:u,vnode:c}=e;{let t=function e(t){let n=t.subTree.component;if(n)if(n.asyncDep&&!n.asyncResolved)return n;else return e(n)}(e);if(t){n&&(n.el=c.el,K(e,n,o)),t.asyncDep.then(()=>{e.isUnmounted||a()});return}}let f=n;rm(e,!1),n?(n.el=c.el,K(e,n,o)):n=c,l&&G(l),(t=n.props&&n.props.onVnodeBeforeUpdate)&&ih(t,u,n,c),rm(e,!0);let p=rI(e),h=e.subTree;e.subTree=p,S(h,p,d(h.el),el(h),e,i,s),n.el=p.el,null===f&&rV(e,p.el),r&&rp(r,i),(t=n.props&&n.props.onVnodeUpdated)&&rp(()=>ih(t,u,n,c),i)}else{let o,{el:a,props:u}=t,{bm:c,m:f,parent:p,root:d,type:h}=e,g=n2(t);if(rm(e,!1),c&&G(c),!g&&(o=u&&u.onVnodeBeforeMount)&&ih(o,p,t),rm(e,!0),a&&r){let t=()=>{e.subTree=rI(e),r(a,e.subTree,e,i,null)};g&&h.__asyncHydrate?h.__asyncHydrate(a,e,t):t()}else{d.ce&&!1!==d.ce._def.shadowRoot&&d.ce._injectChildStyle(h);let r=e.subTree=rI(e);S(null,r,n,l,e,i,s),t.el=r.el}if(f&&rp(f,i),!g&&(o=u&&u.onVnodeMounted)){let e=t;rp(()=>ih(o,p,e),i)}(256&t.shapeFlag||p&&n2(p.vnode)&&256&p.vnode.shapeFlag)&&e.a&&rp(e.a,i),e.isMounted=!0,t=n=l=null}};e.scope.on();let u=e.effect=new e_(a);e.scope.off();let c=e.update=u.run.bind(u),f=e.job=u.runIfDirty.bind(u);f.i=e,f.id=e.uid,u.scheduler=()=>t5(f),rm(e,!0),c()},K=(e,t,n)=>{t.component=e;let l=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,l){let{props:r,attrs:i,vnode:{patchFlag:s}}=e,o=ty(r),[a]=e.propsOptions,u=!1;if((l||s>0)&&!(16&s)){if(8&s){let n=e.vnode.dynamicProps;for(let l=0;l<n.length;l++){let s=n[l];if(rM(e.emitsOptions,s))continue;let c=t[s];if(a)if(w(i,s))c!==i[s]&&(i[s]=c,u=!0);else{let t=$(s);r[t]=rl(a,o,t,c,e,!1)}else c!==i[s]&&(i[s]=c,u=!0)}}}else{let l;for(let s in rn(e,t,r,i)&&(u=!0),o)t&&(w(t,s)||(l=W(s))!==s&&w(t,l))||(a?n&&(void 0!==n[s]||void 0!==n[l])&&(r[s]=rl(a,o,s,void 0,e,!0)):delete r[s]);if(i!==o)for(let e in i)t&&w(t,e)||(delete i[e],u=!0)}u&&e$(e.attrs,"set","")}(e,t.props,l,n),((e,t,n)=>{let{vnode:l,slots:r}=e,i=!0,s=g;if(32&l.shapeFlag){let e=t._;e?n&&1===e?i=!1:rf(r,t,n):(i=!t.$stable,ru(t,r)),s=t}else t&&(rc(e,t),s={default:1});if(i)for(let e in r)rs(e)||null!=s[e]||delete r[e]})(e,t.children,n),eN(),ne(e),eP()},z=(e,t,n,l,r,i,s,o,a=!1)=>{let u=e&&e.children,c=e?e.shapeFlag:0,f=t.children,{patchFlag:d,shapeFlag:h}=t;if(d>0){if(128&d)return void J(u,f,n,l,r,i,s,o,a);else if(256&d)return void q(u,f,n,l,r,i,s,o,a)}8&h?(16&c&&en(u,r,i),f!==u&&p(n,f)):16&c?16&h?J(u,f,n,l,r,i,s,o,a):en(u,r,i,!0):(8&c&&p(n,""),16&h&&P(f,n,l,r,i,s,o,a))},q=(e,t,n,l,r,i,s,o,a)=>{let u;e=e||m,t=t||m;let c=e.length,f=t.length,p=Math.min(c,f);for(u=0;u<p;u++){let l=t[u]=a?ic(t[u]):iu(t[u]);S(e[u],l,n,null,r,i,s,o,a)}c>f?en(e,r,i,!0,!1,p):P(t,n,l,r,i,s,o,a,p)},J=(e,t,n,l,r,i,s,o,a)=>{let u=0,c=t.length,f=e.length-1,p=c-1;for(;u<=f&&u<=p;){let l=e[u],c=t[u]=a?ic(t[u]):iu(t[u]);if(r5(l,c))S(l,c,n,null,r,i,s,o,a);else break;u++}for(;u<=f&&u<=p;){let l=e[f],u=t[p]=a?ic(t[p]):iu(t[p]);if(r5(l,u))S(l,u,n,null,r,i,s,o,a);else break;f--,p--}if(u>f){if(u<=p){let e=p+1,f=e<c?t[e].el:l;for(;u<=p;)S(null,t[u]=a?ic(t[u]):iu(t[u]),n,f,r,i,s,o,a),u++}}else if(u>p)for(;u<=f;)Z(e[u],r,i,!0),u++;else{let d,h=u,g=u,_=new Map;for(u=g;u<=p;u++){let e=t[u]=a?ic(t[u]):iu(t[u]);null!=e.key&&_.set(e.key,u)}let y=0,b=p-g+1,C=!1,x=0,E=Array(b);for(u=0;u<b;u++)E[u]=0;for(u=h;u<=f;u++){let l,c=e[u];if(y>=b){Z(c,r,i,!0);continue}if(null!=c.key)l=_.get(c.key);else for(d=g;d<=p;d++)if(0===E[d-g]&&r5(c,t[d])){l=d;break}void 0===l?Z(c,r,i,!0):(E[l-g]=u+1,l>=x?x=l:C=!0,S(c,t[l],n,null,r,i,s,o,a),y++)}let w=C?function(e){let t,n,l,r,i,s=e.slice(),o=[0],a=e.length;for(t=0;t<a;t++){let a=e[t];if(0!==a){if(e[n=o[o.length-1]]<a){s[t]=n,o.push(t);continue}for(l=0,r=o.length-1;l<r;)e[o[i=l+r>>1]]<a?l=i+1:r=i;a<e[o[l]]&&(l>0&&(s[t]=o[l-1]),o[l]=t)}}for(l=o.length,r=o[l-1];l-- >0;)o[l]=r,r=s[r];return o}(E):m;for(d=w.length-1,u=b-1;u>=0;u--){let e=g+u,f=t[e],p=t[e+1],h=e+1<c?p.el||p.placeholder:l;0===E[u]?S(null,f,n,h,r,i,s,o,a):C&&(d<0||u!==w[d]?X(f,n,h,2):d--)}}},X=(e,t,n,l,r=null)=>{let{el:o,type:a,transition:u,children:c,shapeFlag:f}=e;if(6&f)return void X(e.component.subTree,t,n,l);if(128&f)return void e.suspense.move(t,n,l);if(64&f)return void a.move(e,t,n,es);if(a===rq){i(o,t,n);for(let e=0;e<c.length;e++)X(c[e],t,n,l);i(e.anchor,t,n);return}if(a===rX)return void(({el:e,anchor:t},n,l)=>{let r;for(;e&&e!==t;)r=h(e),i(e,n,l),e=r;i(t,n,l)})(e,t,n);if(2!==l&&1&f&&u)if(0===l)u.beforeEnter(o),i(o,t,n),rp(()=>u.enter(o),r);else{let{leave:l,delayLeave:r,afterLeave:a}=u,c=()=>{e.ctx.isUnmounted?s(o):i(o,t,n)},f=()=>{l(o,()=>{c(),a&&a()})};r?r(o,c,f):f()}else i(o,t,n)},Z=(e,t,n,l=!1,r=!1)=>{let i,{type:s,props:o,ref:a,children:u,dynamicChildren:c,shapeFlag:f,patchFlag:p,dirs:d,cacheIndex:h}=e;if(-2===p&&(r=!1),null!=a&&(eN(),nB(a,null,n,e,!0),eP()),null!=h&&(t.renderCache[h]=void 0),256&f)return void t.ctx.deactivate(e);let g=1&f&&d,m=!n2(e);if(m&&(i=o&&o.onVnodeBeforeUnmount)&&ih(i,t,e),6&f)et(e.component,n,l);else{if(128&f)return void e.suspense.unmount(n,l);g&&nf(e,null,t,"beforeUnmount"),64&f?e.type.remove(e,t,n,es,l):c&&!c.hasOnce&&(s!==rq||p>0&&64&p)?en(c,t,n,!1,!0):(s===rq&&384&p||!r&&16&f)&&en(u,t,n),l&&Q(e)}(m&&(i=o&&o.onVnodeUnmounted)||g)&&rp(()=>{i&&ih(i,t,e),g&&nf(e,null,t,"unmounted")},n)},Q=e=>{let{type:t,el:n,anchor:l,transition:r}=e;if(t===rq)return void ee(n,l);if(t===rX)return void(({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=h(e),s(e),e=n;s(t)})(e);let i=()=>{s(n),r&&!r.persisted&&r.afterLeave&&r.afterLeave()};if(1&e.shapeFlag&&r&&!r.persisted){let{leave:t,delayLeave:l}=r,s=()=>t(n,i);l?l(e.el,i,s):s()}else i()},ee=(e,t)=>{let n;for(;e!==t;)n=h(e),s(e),e=n;s(t)},et=(e,t,n)=>{let{bum:l,scope:r,job:i,subTree:s,um:o,m:a,a:u,parent:c,slots:{__:f}}=e;rb(a),rb(u),l&&G(l),c&&k(f)&&f.forEach(e=>{c.renderCache[e]=void 0}),r.stop(),i&&(i.flags|=8,Z(s,e,t,n)),o&&rp(o,t),rp(()=>{e.isUnmounted=!0},t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},en=(e,t,n,l=!1,r=!1,i=0)=>{for(let s=i;s<e.length;s++)Z(e[s],t,n,l,r)},el=e=>{if(6&e.shapeFlag)return el(e.component.subTree);if(128&e.shapeFlag)return e.suspense.next();let t=h(e.anchor||e.el),n=t&&t[np];return n?h(n):t},er=!1,ei=(e,t,n)=>{null==e?t._vnode&&Z(t._vnode,null,null,!0):S(t._vnode||null,e,t,null,null,null,n),t._vnode=e,er||(er=!0,ne(),nt(),er=!1)},es={p:S,um:Z,m:X,r:Q,mt:j,mc:P,pc:z,pbc:L,n:el,o:e};return t&&([l,r]=t(es)),{render:ei,hydrate:l,createApp:(n=l,function(e,t=null){O(e)||(e=C({},e)),null==t||M(t)||(t=null);let l=l6(),r=new WeakSet,i=[],s=!1,o=l.app={_uid:l8++,_component:e,_props:t,_container:null,_context:l,_instance:null,version:iV,get config(){return l.config},set config(v){},use:(e,...t)=>(r.has(e)||(e&&O(e.install)?(r.add(e),e.install(o,...t)):O(e)&&(r.add(e),e(o,...t))),o),mixin:e=>(l.mixins.includes(e)||l.mixins.push(e),o),component:(e,t)=>t?(l.components[e]=t,o):l.components[e],directive:(e,t)=>t?(l.directives[e]=t,o):l.directives[e],mount(r,i,a){if(!s){let u=o._ceVNode||il(e,t);return u.appContext=l,!0===a?a="svg":!1===a&&(a=void 0),i&&n?n(u,r):ei(u,r,a),s=!0,o._container=r,r.__vue_app__=o,iN(u.component)}},onUnmount(e){i.push(e)},unmount(){s&&(tZ(i,o._instance,16),ei(null,o._container),delete o._container.__vue_app__)},provide:(e,t)=>(l.provides[e]=t,o),runWithContext(e){let t=l4;l4=o;try{return e()}finally{l4=t}}};return o})}}function rv({type:e,props:t},n){return"svg"===n&&"foreignObject"===e||"mathml"===n&&"annotation-xml"===e&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function rm({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function r_(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ry(e,t,n=!1){let l=e.children,r=t.children;if(k(l)&&k(r))for(let e=0;e<l.length;e++){let t=l[e],i=r[e];1&i.shapeFlag&&!i.dynamicChildren&&((i.patchFlag<=0||32===i.patchFlag)&&((i=r[e]=ic(r[e])).el=t.el),n||-2===i.patchFlag||ry(t,i)),i.type===rG&&(i.el=t.el),i.type!==rJ||i.el||(i.el=t.el)}}function rb(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}let rS=Symbol.for("v-scx"),rC=()=>l5(rS);function rx(e,t){return rT(e,null,t)}function rE(e,t){return rT(e,null,{flush:"post"})}function rw(e,t){return rT(e,null,{flush:"sync"})}function rk(e,t,n){return rT(e,t,n)}function rT(e,t,n=g){let l,{immediate:r,deep:i,flush:s,once:o}=n,a=C({},n),u=t&&r||!t&&"post"!==s;if(ix){if("sync"===s){let e=rC();l=e.__watcherHandles||(e.__watcherHandles=[])}else if(!u){let e=()=>{};return e.stop=_,e.resume=_,e.pause=_,e}}let c=i_;a.call=(e,t,n)=>tZ(e,c,t,n);let f=!1;"post"===s?a.scheduler=e=>{rp(e,c&&c.suspense)}:"sync"!==s&&(f=!0,a.scheduler=(e,t)=>{t?e():t5(e)}),a.augmentJob=e=>{t&&(e.flags|=4),f&&(e.flags|=2,c&&(e.id=c.uid,e.i=c))};let d=function(e,t,n=g){let l,r,i,s,{immediate:o,deep:a,once:u,scheduler:c,augmentJob:f,call:d}=n,h=e=>a?e:tm(e)||!1===a||0===a?tq(e,1):tq(e),m=!1,y=!1;if(tx(e)?(r=()=>e.value,m=tm(e)):tg(e)?(r=()=>h(e),m=!0):k(e)?(y=!0,m=e.some(e=>tg(e)||tm(e)),r=()=>e.map(e=>tx(e)?e.value:tg(e)?h(e):O(e)?d?d(e,2):e():void 0)):r=O(e)?t?d?()=>d(e,2):e:()=>{if(i){eN();try{i()}finally{eP()}}let t=p;p=l;try{return d?d(e,3,[s]):e(s)}finally{p=t}}:_,t&&a){let e=r,t=!0===a?1/0:a;r=()=>tq(e(),t)}let b=eg(),S=()=>{l.stop(),b&&b.active&&x(b.effects,l)};if(u&&t){let e=t;t=(...t)=>{e(...t),S()}}let C=y?Array(e.length).fill(tH):tH,E=e=>{if(1&l.flags&&(l.dirty||e))if(t){let e=l.run();if(a||m||(y?e.some((e,t)=>q(e,C[t])):q(e,C))){i&&i();let n=p;p=l;try{let n=[e,C===tH?void 0:y&&C[0]===tH?[]:C,s];C=e,d?d(t,3,n):t(...n)}finally{p=n}}}else l.run()};return f&&f(E),(l=new e_(r)).scheduler=c?()=>c(E,!1):E,s=e=>tz(e,!1,l),i=l.onStop=()=>{let e=tW.get(l);if(e){if(d)d(e,4);else for(let t of e)t();tW.delete(l)}},t?o?E(!0):C=l.run():c?c(E.bind(null,!0),!0):l.run(),S.pause=l.pause.bind(l),S.resume=l.resume.bind(l),S.stop=S,S}(e,t,a);return ix&&(l?l.push(d):u&&d()),d}function rA(e,t,n){let l,r=this.proxy,i=N(e)?e.includes(".")?rR(r,e):()=>r[e]:e.bind(r,r);O(t)?l=t:(l=t.handler,n=t);let s=ib(this),o=rT(i,l.bind(r),n);return s(),o}function rR(e,t){let n=t.split(".");return()=>{let t=e;for(let e=0;e<n.length&&t;e++)t=t[n[e]];return t}}function rO(e,t,n=g){let l=iy(),r=$(t),i=W(t),s=rN(e,r),o=tI((s,o)=>{let a,u,c=g;return rw(()=>{let t=e[r];q(a,t)&&(a=t,o())}),{get:()=>(s(),n.get?n.get(a):a),set(e){let s=n.set?n.set(e):e;if(!q(s,a)&&!(c!==g&&q(e,c)))return;let f=l.vnode.props;f&&(t in f||r in f||i in f)&&(`onUpdate:${t}`in f||`onUpdate:${r}`in f||`onUpdate:${i}`in f)||(a=e,o()),l.emit(`update:${t}`,s),q(e,s)&&q(e,c)&&!q(s,u)&&o(),c=e,u=s}}});return o[Symbol.iterator]=()=>{let e=0;return{next:()=>e<2?{value:e++?s||g:o,done:!1}:{done:!0}}},o}let rN=(e,t)=>"modelValue"===t||"model-value"===t?e.modelModifiers:e[`${t}Modifiers`]||e[`${$(t)}Modifiers`]||e[`${W(t)}Modifiers`];function rP(e,t,...n){let l;if(e.isUnmounted)return;let r=e.vnode.props||g,i=n,s=t.startsWith("update:"),o=s&&rN(r,t.slice(7));o&&(o.trim&&(i=n.map(e=>N(e)?e.trim():e)),o.number&&(i=n.map(X)));let a=r[l=z(t)]||r[l=z($(t))];!a&&s&&(a=r[l=z(W(t))]),a&&tZ(a,e,6,i);let u=r[l+"Once"];if(u){if(e.emitted){if(e.emitted[l])return}else e.emitted={};e.emitted[l]=!0,tZ(u,e,6,i)}}function rM(e,t){return!!e&&!!b(t)&&(w(e,(t=t.slice(2).replace(/Once$/,""))[0].toLowerCase()+t.slice(1))||w(e,W(t))||w(e,t))}function rI(e){let t,n,{type:l,vnode:r,proxy:i,withProxy:s,propsOptions:[o],slots:a,attrs:u,emit:c,render:f,renderCache:p,props:d,data:h,setupState:g,ctx:m,inheritAttrs:_}=e,y=ni(e);try{if(4&r.shapeFlag){let e=s||i;t=iu(f.call(e,e,p,d,g,h,m)),n=u}else t=iu(l.length>1?l(d,{attrs:u,slots:a,emit:c}):l(d,null)),n=l.props?u:rL(u)}catch(n){rZ.length=0,tY(n,e,1),t=il(rJ)}let b=t;if(n&&!1!==_){let e=Object.keys(n),{shapeFlag:t}=b;e.length&&7&t&&(o&&e.some(S)&&(n=rD(n,o)),b=ii(b,n,!1,!0))}return r.dirs&&((b=ii(b,null,!1,!0)).dirs=b.dirs?b.dirs.concat(r.dirs):r.dirs),r.transition&&nL(b,r.transition),t=b,ni(y),t}let rL=e=>{let t;for(let n in e)("class"===n||"style"===n||b(n))&&((t||(t={}))[n]=e[n]);return t},rD=(e,t)=>{let n={};for(let l in e)S(l)&&l.slice(9)in t||(n[l]=e[l]);return n};function rF(e,t,n){let l=Object.keys(t);if(l.length!==Object.keys(e).length)return!0;for(let r=0;r<l.length;r++){let i=l[r];if(t[i]!==e[i]&&!rM(n,i))return!0}return!1}function rV({vnode:e,parent:t},n){for(;t;){let l=t.subTree;if(l.suspense&&l.suspense.activeBranch===e&&(l.el=e.el),l===e)(e=t.vnode).el=n,t=t.parent;else break}}let rU=e=>e.__isSuspense,rj=0,rB={name:"Suspense",__isSuspense:!0,process(e,t,n,l,r,i,s,o,a,u){if(null==e){var c=t,f=n,p=l,d=r,h=i,g=s,m=o,_=a,y=u;let{p:e,o:{createElement:b}}=y,S=b("div"),C=c.suspense=rH(c,h,d,f,S,p,g,m,_,y);e(null,C.pendingBranch=c.ssContent,S,null,d,C,g,m),C.deps>0?(r$(c,"onPending"),r$(c,"onFallback"),e(null,c.ssFallback,f,p,d,null,g,m),rz(C,c.ssFallback)):C.resolve(!1,!0)}else{if(i&&i.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}!function(e,t,n,l,r,i,s,o,{p:a,um:u,o:{createElement:c}}){let f=t.suspense=e.suspense;f.vnode=t,t.el=e.el;let p=t.ssContent,d=t.ssFallback,{activeBranch:h,pendingBranch:g,isInFallback:m,isHydrating:_}=f;if(g)f.pendingBranch=p,r5(p,g)?(a(g,p,f.hiddenContainer,null,r,f,i,s,o),f.deps<=0?f.resolve():m&&!_&&(a(h,d,n,l,r,null,i,s,o),rz(f,d))):(f.pendingId=rj++,_?(f.isHydrating=!1,f.activeBranch=g):u(g,r,f),f.deps=0,f.effects.length=0,f.hiddenContainer=c("div"),m?(a(null,p,f.hiddenContainer,null,r,f,i,s,o),f.deps<=0?f.resolve():(a(h,d,n,l,r,null,i,s,o),rz(f,d))):h&&r5(p,h)?(a(h,p,n,l,r,f,i,s,o),f.resolve(!0)):(a(null,p,f.hiddenContainer,null,r,f,i,s,o),f.deps<=0&&f.resolve()));else if(h&&r5(p,h))a(h,p,n,l,r,f,i,s,o),rz(f,p);else if(r$(t,"onPending"),f.pendingBranch=p,512&p.shapeFlag?f.pendingId=p.component.suspenseId:f.pendingId=rj++,a(null,p,f.hiddenContainer,null,r,f,i,s,o),f.deps<=0)f.resolve();else{let{timeout:e,pendingId:t}=f;e>0?setTimeout(()=>{f.pendingId===t&&f.fallback(d)},e):0===e&&f.fallback(d)}}(e,t,n,l,r,s,o,a,u)}},hydrate:function(e,t,n,l,r,i,s,o,a){let u=t.suspense=rH(t,l,n,e.parentNode,document.createElement("div"),null,r,i,s,o,!0),c=a(e,u.pendingBranch=t.ssContent,n,u,i,s);return 0===u.deps&&u.resolve(!1,!0),c},normalize:function(e){let{shapeFlag:t,children:n}=e,l=32&t;e.ssContent=rW(l?n.default:n),e.ssFallback=l?rW(n.fallback):il(rJ)}};function r$(e,t){let n=e.props&&e.props[t];O(n)&&n()}function rH(e,t,n,l,r,i,s,o,a,u,c=!1){let f,{p:p,m:d,um:h,n:g,o:{parentNode:m,remove:_}}=u,y=function(e){let t=e.props&&e.props.suspensible;return null!=t&&!1!==t}(e);y&&t&&t.pendingBranch&&(f=t.pendingId,t.deps++);let b=e.props?Z(e.props.timeout):void 0,S=i,C={vnode:e,parent:t,parentComponent:n,namespace:s,container:l,hiddenContainer:r,deps:0,pendingId:rj++,timeout:"number"==typeof b?b:-1,activeBranch:null,pendingBranch:null,isInFallback:!c,isHydrating:c,isUnmounted:!1,effects:[],resolve(e=!1,n=!1){let{vnode:l,activeBranch:r,pendingBranch:s,pendingId:o,effects:a,parentComponent:u,container:c}=C,p=!1;C.isHydrating?C.isHydrating=!1:!e&&((p=r&&s.transition&&"out-in"===s.transition.mode)&&(r.transition.afterLeave=()=>{o===C.pendingId&&(d(s,c,i===S?g(r):i,0),t7(a))}),r&&(m(r.el)===c&&(i=g(r)),h(r,u,C,!0)),p||d(s,c,i,0)),rz(C,s),C.pendingBranch=null,C.isInFallback=!1;let _=C.parent,b=!1;for(;_;){if(_.pendingBranch){_.effects.push(...a),b=!0;break}_=_.parent}b||p||t7(a),C.effects=[],y&&t&&t.pendingBranch&&f===t.pendingId&&(t.deps--,0!==t.deps||n||t.resolve()),r$(l,"onResolve")},fallback(e){if(!C.pendingBranch)return;let{vnode:t,activeBranch:n,parentComponent:l,container:r,namespace:i}=C;r$(t,"onFallback");let s=g(n),u=()=>{C.isInFallback&&(p(null,e,r,s,l,null,i,o,a),rz(C,e))},c=e.transition&&"out-in"===e.transition.mode;c&&(n.transition.afterLeave=u),C.isInFallback=!0,h(n,l,null,!0),c||u()},move(e,t,n){C.activeBranch&&d(C.activeBranch,e,t,n),C.container=e},next:()=>C.activeBranch&&g(C.activeBranch),registerDep(e,t,n){let l=!!C.pendingBranch;l&&C.deps++;let r=e.vnode.el;e.asyncDep.catch(t=>{tY(t,e,0)}).then(i=>{if(e.isUnmounted||C.isUnmounted||C.pendingId!==e.suspenseId)return;e.asyncResolved=!0;let{vnode:o}=e;iw(e,i,!1),r&&(o.el=r);let a=!r&&e.subTree.el;t(e,o,m(r||e.subTree.el),r?null:g(e.subTree),C,s,n),a&&_(a),rV(e,o.el),l&&0==--C.deps&&C.resolve()})},unmount(e,t){C.isUnmounted=!0,C.activeBranch&&h(C.activeBranch,n,e,t),C.pendingBranch&&h(C.pendingBranch,n,e,t)}};return C}function rW(e){let t;if(O(e)){let n=r1&&e._c;n&&(e._d=!1,rQ()),e=e(),n&&(e._d=!0,t=rY,r0())}return k(e)&&(e=function(e,t=!0){let n;for(let t=0;t<e.length;t++){let l=e[t];if(!r3(l))return;if(l.type!==rJ||"v-if"===l.children)if(n)return;else n=l}return n}(e)),e=iu(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(t=>t!==e)),e}function rK(e,t){t&&t.pendingBranch?k(e)?t.effects.push(...e):t.effects.push(e):t7(e)}function rz(e,t){e.activeBranch=t;let{vnode:n,parentComponent:l}=e,r=t.el;for(;!r&&t.component;)r=(t=t.component.subTree).el;n.el=r,l&&l.subTree===n&&(l.vnode.el=r,rV(l,r))}let rq=Symbol.for("v-fgt"),rG=Symbol.for("v-txt"),rJ=Symbol.for("v-cmt"),rX=Symbol.for("v-stc"),rZ=[],rY=null;function rQ(e=!1){rZ.push(rY=e?null:[])}function r0(){rZ.pop(),rY=rZ[rZ.length-1]||null}let r1=1;function r2(e,t=!1){r1+=e,e<0&&rY&&t&&(rY.hasOnce=!0)}function r6(e){return e.dynamicChildren=r1>0?rY||m:null,r0(),r1>0&&rY&&rY.push(e),e}function r8(e,t,n,l,r,i){return r6(it(e,t,n,l,r,i,!0))}function r4(e,t,n,l,r){return r6(il(e,t,n,l,r,!0))}function r3(e){return!!e&&!0===e.__v_isVNode}function r5(e,t){return e.type===t.type&&e.key===t.key}function r9(e){}let r7=({key:e})=>null!=e?e:null,ie=({ref:e,ref_key:t,ref_for:n})=>("number"==typeof e&&(e=""+e),null!=e?N(e)||tx(e)||O(e)?{i:nl,r:e,k:t,f:!!n}:e:null);function it(e,t=null,n=null,l=0,r=null,i=+(e!==rq),s=!1,o=!1){let a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&r7(t),ref:t&&ie(t),scopeId:nr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:l,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:nl};return o?(ip(a,n),128&i&&e.normalize(a)):n&&(a.shapeFlag|=N(n)?8:16),r1>0&&!s&&rY&&(a.patchFlag>0||6&i)&&32!==a.patchFlag&&rY.push(a),a}let il=function(e,t=null,n=null,l=0,r=null,i=!1){var s;if(e&&e!==lm||(e=rJ),r3(e)){let l=ii(e,t,!0);return n&&ip(l,n),r1>0&&!i&&rY&&(6&l.shapeFlag?rY[rY.indexOf(e)]=l:rY.push(l)),l.patchFlag=-2,l}if(O(s=e)&&"__vccOpts"in s&&(e=e.__vccOpts),t){let{class:e,style:n}=t=ir(t);e&&!N(e)&&(t.class=er(e)),M(n)&&(t_(n)&&!k(n)&&(n=C({},n)),t.style=ee(n))}let o=N(e)?1:rU(e)?128:e.__isTeleport?64:M(e)?4:2*!!O(e);return it(e,t,n,l,r,o,i,!0)};function ir(e){return e?t_(e)||rt(e)?C({},e):e:null}function ii(e,t,n=!1,l=!1){let{props:r,ref:i,patchFlag:s,children:o,transition:a}=e,u=t?id(r||{},t):r,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&r7(u),ref:t&&t.ref?n&&i?k(i)?i.concat(ie(t)):[i,ie(t)]:ie(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==rq?-1===s?16:16|s:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ii(e.ssContent),ssFallback:e.ssFallback&&ii(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&l&&nL(c,a.clone(c)),c}function is(e=" ",t=0){return il(rG,null,e,t)}function io(e,t){let n=il(rX,null,e);return n.staticCount=t,n}function ia(e="",t=!1){return t?(rQ(),r4(rJ,null,e)):il(rJ,null,e)}function iu(e){return null==e||"boolean"==typeof e?il(rJ):k(e)?il(rq,null,e.slice()):r3(e)?ic(e):il(rG,null,String(e))}function ic(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:ii(e)}function ip(e,t){let n=0,{shapeFlag:l}=e;if(null==t)t=null;else if(k(t))n=16;else if("object"==typeof t)if(65&l){let n=t.default;n&&(n._c&&(n._d=!1),ip(e,n()),n._c&&(n._d=!0));return}else{n=32;let l=t._;l||rt(t)?3===l&&nl&&(1===nl.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=nl}else O(t)?(t={default:t,_ctx:nl},n=32):(t=String(t),64&l?(n=16,t=[is(t)]):n=8);e.children=t,e.shapeFlag|=n}function id(...e){let t={};for(let n=0;n<e.length;n++){let l=e[n];for(let e in l)if("class"===e)t.class!==l.class&&(t.class=er([t.class,l.class]));else if("style"===e)t.style=ee([t.style,l.style]);else if(b(e)){let n=t[e],r=l[e];r&&n!==r&&!(k(n)&&n.includes(r))&&(t[e]=n?[].concat(n,r):r)}else""!==e&&(t[e]=l[e])}return t}function ih(e,t,n,l=null){tZ(e,t,7,[n,l])}let ig=l6(),iv=0;function im(e,t,n){let l=e.type,r=(t?t.appContext:e.appContext)||ig,i={uid:iv++,vnode:e,type:l,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new ed(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:function e(t,n,l=!1){let r=l?rr:n.propsCache,i=r.get(t);if(i)return i;let s=t.props,o={},a=[],u=!1;if(!O(t)){let r=t=>{u=!0;let[l,r]=e(t,n,!0);C(o,l),r&&a.push(...r)};!l&&n.mixins.length&&n.mixins.forEach(r),t.extends&&r(t.extends),t.mixins&&t.mixins.forEach(r)}if(!s&&!u)return M(t)&&r.set(t,m),m;if(k(s))for(let e=0;e<s.length;e++){let t=$(s[e]);ri(t)&&(o[t]=g)}else if(s)for(let e in s){let t=$(e);if(ri(t)){let n=s[e],l=o[t]=k(n)||O(n)?{type:n}:C({},n),r=l.type,i=!1,u=!0;if(k(r))for(let e=0;e<r.length;++e){let t=r[e],n=O(t)&&t.name;if("Boolean"===n){i=!0;break}"String"===n&&(u=!1)}else i=O(r)&&"Boolean"===r.name;l[0]=i,l[1]=u,(i||w(l,"default"))&&a.push(t)}}let c=[o,a];return M(t)&&r.set(t,c),c}(l,r),emitsOptions:function e(t,n,l=!1){let r=n.emitsCache,i=r.get(t);if(void 0!==i)return i;let s=t.emits,o={},a=!1;if(!O(t)){let r=t=>{let l=e(t,n,!0);l&&(a=!0,C(o,l))};!l&&n.mixins.length&&n.mixins.forEach(r),t.extends&&r(t.extends),t.mixins&&t.mixins.forEach(r)}return s||a?(k(s)?s.forEach(e=>o[e]=null):C(o,s),M(t)&&r.set(t,o),o):(M(t)&&r.set(t,null),null)}(l,r),emit:null,emitted:null,propsDefaults:g,inheritAttrs:l.inheritAttrs,ctx:g,data:g,props:g,attrs:g,slots:g,refs:g,setupState:g,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=rP.bind(null,i),e.ce&&e.ce(i),i}let i_=null,iy=()=>i_||nl;{let e=Y(),t=(t,n)=>{let l;return(l=e[t])||(l=e[t]=[]),l.push(n),e=>{l.length>1?l.forEach(t=>t(e)):l[0](e)}};o=t("__VUE_INSTANCE_SETTERS__",e=>i_=e),a=t("__VUE_SSR_SETTERS__",e=>ix=e)}let ib=e=>{let t=i_;return o(e),e.scope.on(),()=>{e.scope.off(),o(t)}},iS=()=>{i_&&i_.scope.off(),o(null)};function iC(e){return 4&e.vnode.shapeFlag}let ix=!1;function iE(e,t=!1,n=!1){t&&a(t);let{props:l,children:r}=e.vnode,i=iC(e);!function(e,t,n,l=!1){let r={},i=re();for(let n in e.propsDefaults=Object.create(null),rn(e,t,r,i),e.propsOptions[0])n in r||(r[n]=void 0);n?e.props=l?r:tf(r):e.type.props?e.props=r:e.props=i,e.attrs=i}(e,l,i,t),((e,t,n)=>{let l=e.slots=re();if(32&e.vnode.shapeFlag){let e=t.__;e&&J(l,"__",e,!0);let r=t._;r?(rf(l,t,n),n&&J(l,"_",r,!0)):ru(t,l)}else t&&rc(e,t)})(e,r,n||t);let s=i?function(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,lO);let{setup:l}=n;if(l){eN();let n=e.setupContext=l.length>1?iO(e):null,r=ib(e),i=tX(l,e,0,[e.props,n]),s=I(i);if(eP(),r(),(s||e.sp)&&!n2(e)&&nU(e),s){if(i.then(iS,iS),t)return i.then(n=>{iw(e,n,t)}).catch(t=>{tY(t,e,0)});e.asyncDep=i}else iw(e,i,t)}else iA(e,t)}(e,t):void 0;return t&&a(!1),s}function iw(e,t,n){O(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:M(t)&&(e.setupState=tP(t)),iA(e,n)}function ik(e){u=e,c=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,lN))}}let iT=()=>!u;function iA(e,t,n){let l=e.type;if(!e.render){if(!t&&u&&!l.render){let t=l.template||lJ(e).template;if(t){let{isCustomElement:n,compilerOptions:r}=e.appContext.config,{delimiters:i,compilerOptions:s}=l,o=C(C({isCustomElement:n,delimiters:i},r),s);l.render=u(t,o)}}e.render=l.render||_,c&&c(e)}{let t=ib(e);eN();try{!function(e){let t=lJ(e),n=e.proxy,l=e.ctx;lq=!1,t.beforeCreate&&lG(t.beforeCreate,e,"bc");let{data:r,computed:i,methods:s,watch:o,provide:a,inject:u,created:c,beforeMount:f,mounted:p,beforeUpdate:d,updated:h,activated:g,deactivated:m,beforeDestroy:y,beforeUnmount:b,destroyed:S,unmounted:C,render:x,renderTracked:E,renderTriggered:w,errorCaptured:T,serverPrefetch:A,expose:R,inheritAttrs:P,components:I,directives:L,filters:D}=t;if(u&&function(e,t,n=_){for(let n in k(e)&&(e=lQ(e)),e){let l,r=e[n];tx(l=M(r)?"default"in r?l5(r.from||n,r.default,!0):l5(r.from||n):l5(r))?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>l.value,set:e=>l.value=e}):t[n]=l}}(u,l,null),s)for(let e in s){let t=s[e];O(t)&&(l[e]=t.bind(n))}if(r){let t=r.call(n,n);M(t)&&(e.data=tc(t))}if(lq=!0,i)for(let e in i){let t=i[e],r=O(t)?t.bind(n,n):O(t.get)?t.get.bind(n,n):_,s=iM({get:r,set:!O(t)&&O(t.set)?t.set.bind(n):_});Object.defineProperty(l,e,{enumerable:!0,configurable:!0,get:()=>s.value,set:e=>s.value=e})}if(o)for(let e in o)!function e(t,n,l,r){let i=r.includes(".")?rR(l,r):()=>l[r];if(N(t)){let e=n[t];O(e)&&rk(i,e)}else if(O(t))rk(i,t.bind(l));else if(M(t))if(k(t))t.forEach(t=>e(t,n,l,r));else{let e=O(t.handler)?t.handler.bind(l):n[t.handler];O(e)&&rk(i,e,t)}}(o[e],l,n,e);if(a){let e=O(a)?a.call(n):a;Reflect.ownKeys(e).forEach(t=>{l3(t,e[t])})}function F(e,t){k(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(c&&lG(c,e,"c"),F(li,f),F(ls,p),F(lo,d),F(la,h),F(n9,g),F(n7,m),F(lh,T),F(ld,E),F(lp,w),F(lu,b),F(lc,C),F(lf,A),k(R))if(R.length){let t=e.exposed||(e.exposed={});R.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||(e.exposed={});x&&e.render===_&&(e.render=x),null!=P&&(e.inheritAttrs=P),I&&(e.components=I),L&&(e.directives=L),A&&nU(e)}(e)}finally{eP(),t()}}}let iR={get:(e,t)=>(eB(e,"get",""),e[t])};function iO(e){return{attrs:new Proxy(e.attrs,iR),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function iN(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(tP(tb(e.exposed)),{get:(t,n)=>n in t?t[n]:n in lA?lA[n](e):void 0,has:(e,t)=>t in e||t in lA})):e.proxy}function iP(e,t=!0){return O(e)?e.displayName||e.name:e.name||t&&e.__name}let iM=(e,t)=>(function(e,t,n=!1){let l,r;return O(e)?l=e:(l=e.get,r=e.set),new tj(l,r,n)})(e,0,ix);function iI(e,t,n){let l=arguments.length;return 2!==l?(l>3?n=Array.prototype.slice.call(arguments,2):3===l&&r3(n)&&(n=[n]),il(e,t,n)):!M(t)||k(t)?il(e,null,t):r3(t)?il(e,null,[t]):il(e,t)}function iL(){}function iD(e,t,n,l){let r=n[l];if(r&&iF(r,e))return r;let i=t();return i.memo=e.slice(),i.cacheIndex=l,n[l]=i}function iF(e,t){let n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e<n.length;e++)if(q(n[e],t[e]))return!1;return r1>0&&rY&&rY.push(e),!0}let iV="3.5.18",iU=_,ij=null,iB=void 0,i$=_,iH={createComponentInstance:im,setupComponent:iE,renderComponentRoot:rI,setCurrentRenderingInstance:ni,isVNode:r3,normalizeVNode:iu,getComponentPublicInstance:iN,ensureValidVNode:lw,pushWarningContext:function(e){},popWarningContext:function(){}},iW=null,iK=null,iz=null,iq="undefined"!=typeof window&&window.trustedTypes;if(iq)try{d=iq.createPolicy("vue",{createHTML:e=>e})}catch(e){}let iG=d?e=>d.createHTML(e):e=>e,iJ="undefined"!=typeof document?document:null,iX=iJ&&iJ.createElement("template"),iZ="transition",iY="animation",iQ=Symbol("_vtc"),i0={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},i1=C({},nT,i0),i2=((e=(e,{slots:t})=>iI(nO,i4(e),t)).displayName="Transition",e.props=i1,e),i6=(e,t=[])=>{k(e)?e.forEach(e=>e(...t)):e&&e(...t)},i8=e=>!!e&&(k(e)?e.some(e=>e.length>1):e.length>1);function i4(e){let t={};for(let n in e)n in i0||(t[n]=e[n]);if(!1===e.css)return t;let{name:n="v",type:l,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:o=`${n}-enter-to`,appearFromClass:a=i,appearActiveClass:u=s,appearToClass:c=o,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:d=`${n}-leave-to`}=e,h=function(e){if(null==e)return null;{if(M(e))return[function(e){return Z(e)}(e.enter),function(e){return Z(e)}(e.leave)];let t=function(e){return Z(e)}(e);return[t,t]}}(r),g=h&&h[0],m=h&&h[1],{onBeforeEnter:_,onEnter:y,onEnterCancelled:b,onLeave:S,onLeaveCancelled:x,onBeforeAppear:E=_,onAppear:w=y,onAppearCancelled:k=b}=t,T=(e,t,n,l)=>{e._enterCancelled=l,i5(e,t?c:o),i5(e,t?u:s),n&&n()},A=(e,t)=>{e._isLeaving=!1,i5(e,f),i5(e,d),i5(e,p),t&&t()},R=e=>(t,n)=>{let r=e?w:y,s=()=>T(t,e,n);i6(r,[t,s]),i9(()=>{i5(t,e?a:i),i3(t,e?c:o),i8(r)||se(t,l,g,s)})};return C(t,{onBeforeEnter(e){i6(_,[e]),i3(e,i),i3(e,s)},onBeforeAppear(e){i6(E,[e]),i3(e,a),i3(e,u)},onEnter:R(!1),onAppear:R(!0),onLeave(e,t){e._isLeaving=!0;let n=()=>A(e,t);i3(e,f),e._enterCancelled?(i3(e,p),sr()):(sr(),i3(e,p)),i9(()=>{e._isLeaving&&(i5(e,f),i3(e,d),i8(S)||se(e,l,m,n))}),i6(S,[e,n])},onEnterCancelled(e){T(e,!1,void 0,!0),i6(b,[e])},onAppearCancelled(e){T(e,!0,void 0,!0),i6(k,[e])},onLeaveCancelled(e){A(e),i6(x,[e])}})}function i3(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[iQ]||(e[iQ]=new Set)).add(t)}function i5(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));let n=e[iQ];n&&(n.delete(t),n.size||(e[iQ]=void 0))}function i9(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let i7=0;function se(e,t,n,l){let r=e._endId=++i7,i=()=>{r===e._endId&&l()};if(null!=n)return setTimeout(i,n);let{type:s,timeout:o,propCount:a}=st(e,t);if(!s)return l();let u=s+"end",c=0,f=()=>{e.removeEventListener(u,p),i()},p=t=>{t.target===e&&++c>=a&&f()};setTimeout(()=>{c<a&&f()},o+1),e.addEventListener(u,p)}function st(e,t){let n=window.getComputedStyle(e),l=e=>(n[e]||"").split(", "),r=l(`${iZ}Delay`),i=l(`${iZ}Duration`),s=sn(r,i),o=l(`${iY}Delay`),a=l(`${iY}Duration`),u=sn(o,a),c=null,f=0,p=0;t===iZ?s>0&&(c=iZ,f=s,p=i.length):t===iY?u>0&&(c=iY,f=u,p=a.length):p=(c=(f=Math.max(s,u))>0?s>u?iZ:iY:null)?c===iZ?i.length:a.length:0;let d=c===iZ&&/\b(transform|all)(,|$)/.test(l(`${iZ}Property`).toString());return{type:c,timeout:f,propCount:p,hasTransform:d}}function sn(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((t,n)=>sl(t)+sl(e[n])))}function sl(e){return"auto"===e?0:1e3*Number(e.slice(0,-1).replace(",","."))}function sr(){return document.body.offsetHeight}let si=Symbol("_vod"),ss=Symbol("_vsh"),so={beforeMount(e,{value:t},{transition:n}){e[si]="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):sa(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:l}){!t!=!n&&(l?t?(l.beforeEnter(e),sa(e,!0),l.enter(e)):l.leave(e,()=>{sa(e,!1)}):sa(e,t))},beforeUnmount(e,{value:t}){sa(e,t)}};function sa(e,t){e.style.display=t?e[si]:"none",e[ss]=!t}let su=Symbol("");function sc(e){let t=iy();if(!t)return;let n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(e=>sf(e,n))},l=()=>{let l=e(t.proxy);t.ce?sf(t.ce,l):function e(t,n){if(128&t.shapeFlag){let l=t.suspense;t=l.activeBranch,l.pendingBranch&&!l.isHydrating&&l.effects.push(()=>{e(l.activeBranch,n)})}for(;t.component;)t=t.component.subTree;if(1&t.shapeFlag&&t.el)sf(t.el,n);else if(t.type===rq)t.children.forEach(t=>e(t,n));else if(t.type===rX){let{el:e,anchor:l}=t;for(;e&&(sf(e,n),e!==l);)e=e.nextSibling}}(t.subTree,l),n(l)};lo(()=>{t7(l)}),ls(()=>{rk(l,_,{flush:"post"});let e=new MutationObserver(l);e.observe(t.subTree.el.parentNode,{childList:!0}),lc(()=>e.disconnect())})}function sf(e,t){if(1===e.nodeType){let l=e.style,r="";for(let e in t){var n;let i=null==(n=t[e])?"initial":"string"==typeof n?""===n?" ":n:String(n);l.setProperty(`--${e}`,i),r+=`--${e}: ${i};`}l[su]=r}}let sp=/(^|;)\s*display\s*:/,sd=/\s*!important$/;function sh(e,t,n){if(k(n))n.forEach(n=>sh(e,t,n));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{let l=function(e,t){let n=sv[t];if(n)return n;let l=$(t);if("filter"!==l&&l in e)return sv[t]=l;l=K(l);for(let n=0;n<sg.length;n++){let r=sg[n]+l;if(r in e)return sv[t]=r}return t}(e,t);sd.test(n)?e.setProperty(W(l),n.replace(sd,""),"important"):e[l]=n}}let sg=["Webkit","Moz","ms"],sv={},sm="http://www.w3.org/1999/xlink";function s_(e,t,n,l,r,i=es(t)){if(l&&t.startsWith("xlink:"))null==n?e.removeAttributeNS(sm,t.slice(6,t.length)):e.setAttributeNS(sm,t,n);else null==n||i&&!(n||""===n)?e.removeAttribute(t):e.setAttribute(t,i?"":P(n)?String(n):n)}function sy(e,t,n,l,r){if("innerHTML"===t||"textContent"===t){null!=n&&(e[t]="innerHTML"===t?iG(n):n);return}let i=e.tagName;if("value"===t&&"PROGRESS"!==i&&!i.includes("-")){let l="OPTION"===i?e.getAttribute("value")||"":e.value,r=null==n?"checkbox"===e.type?"on":"":String(n);l===r&&"_value"in e||(e.value=r),null==n&&e.removeAttribute(t),e._value=n;return}let s=!1;if(""===n||null==n){let l=typeof e[t];if("boolean"===l){var o;n=!!(o=n)||""===o}else null==n&&"string"===l?(n="",s=!0):"number"===l&&(n=0,s=!0)}try{e[t]=n}catch(e){}s&&e.removeAttribute(r||t)}function sb(e,t,n,l){e.addEventListener(t,n,l)}let sS=Symbol("_vei"),sC=/(?:Once|Passive|Capture)$/,sx=0,sE=Promise.resolve(),sw=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)>96&&123>e.charCodeAt(2),sk={};function sT(e,t,n){let l=nF(e,t);F(l)&&C(l,t);class r extends sO{constructor(e){super(l,e,n)}}return r.def=l,r}let sA=(e,t)=>sT(e,t,or),sR="undefined"!=typeof HTMLElement?HTMLElement:class{};class sO extends sR{constructor(e,t={},n=ol){super(),this._def=e,this._props=t,this._createApp=n,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._ob=null,this.shadowRoot&&n!==ol?this._root=this.shadowRoot:!1!==e.shadowRoot?(this.attachShadow({mode:"open"}),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;this.shadowRoot||this._resolved||this._parseSlots(),this._connected=!0;let e=this;for(;e=e&&(e.parentNode||e.host);)if(e instanceof sO){this._parent=e;break}this._instance||(this._resolved?this._mount(this._def):e&&e._pendingResolve?this._pendingResolve=e._pendingResolve.then(()=>{this._pendingResolve=void 0,this._resolveDef()}):this._resolveDef())}_setParent(e=this._parent){e&&(this._instance.parent=e._instance,this._inheritParentContext(e))}_inheritParentContext(e=this._parent){e&&this._app&&Object.setPrototypeOf(this._app._context.provides,e._instance.provides)}disconnectedCallback(){this._connected=!1,t3(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null)})}_resolveDef(){if(this._pendingResolve)return;for(let e=0;e<this.attributes.length;e++)this._setAttr(this.attributes[e].name);this._ob=new MutationObserver(e=>{for(let t of e)this._setAttr(t.attributeName)}),this._ob.observe(this,{attributes:!0});let e=(e,t=!1)=>{let n;this._resolved=!0,this._pendingResolve=void 0;let{props:l,styles:r}=e;if(l&&!k(l))for(let e in l){let t=l[e];(t===Number||t&&t.type===Number)&&(e in this._props&&(this._props[e]=Z(this._props[e])),(n||(n=Object.create(null)))[$(e)]=!0)}this._numberProps=n,this._resolveProps(e),this.shadowRoot&&this._applyStyles(r),this._mount(e)},t=this._def.__asyncLoader;t?this._pendingResolve=t().then(t=>{t.configureApp=this._def.configureApp,e(this._def=t,!0)}):e(this._def)}_mount(e){this._app=this._createApp(e),this._inheritParentContext(),e.configureApp&&e.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);let t=this._instance&&this._instance.exposed;if(t)for(let e in t)w(this,e)||Object.defineProperty(this,e,{get:()=>tR(t[e])})}_resolveProps(e){let{props:t}=e,n=k(t)?t:Object.keys(t||{});for(let e of Object.keys(this))"_"!==e[0]&&n.includes(e)&&this._setProp(e,this[e]);for(let e of n.map($))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t,!0,!0)}})}_setAttr(e){if(e.startsWith("data-v-"))return;let t=this.hasAttribute(e),n=t?this.getAttribute(e):sk,l=$(e);t&&this._numberProps&&this._numberProps[l]&&(n=Z(n)),this._setProp(l,n,!1,!0)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,l=!1){if(t!==this._props[e]&&(t===sk?delete this._props[e]:(this._props[e]=t,"key"===e&&this._app&&(this._app._ceVNode.key=t)),l&&this._instance&&this._update(),n)){let n=this._ob;n&&n.disconnect(),!0===t?this.setAttribute(W(e),""):"string"==typeof t||"number"==typeof t?this.setAttribute(W(e),t+""):t||this.removeAttribute(W(e)),n&&n.observe(this,{attributes:!0})}}_update(){let e=this._createVNode();this._app&&(e.appContext=this._app._context),ot(e,this._root)}_createVNode(){let e={};this.shadowRoot||(e.onVnodeMounted=e.onVnodeUpdated=this._renderSlots.bind(this));let t=il(this._def,C(e,this._props));return this._instance||(t.ce=e=>{this._instance=e,e.ce=this,e.isCE=!0;let t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,F(t[0])?C({detail:t},t[0]):{detail:t}))};e.emit=(e,...n)=>{t(e,n),W(e)!==e&&t(W(e),n)},this._setParent()}),t}_applyStyles(e,t){if(!e)return;if(t){if(t===this._def||this._styleChildren.has(t))return;this._styleChildren.add(t)}let n=this._nonce;for(let t=e.length-1;t>=0;t--){let l=document.createElement("style");n&&l.setAttribute("nonce",n),l.textContent=e[t],this.shadowRoot.prepend(l)}}_parseSlots(){let e,t=this._slots={};for(;e=this.firstChild;){let n=1===e.nodeType&&e.getAttribute("slot")||"default";(t[n]||(t[n]=[])).push(e),this.removeChild(e)}}_renderSlots(){let e=(this._teleportTarget||this).querySelectorAll("slot"),t=this._instance.type.__scopeId;for(let n=0;n<e.length;n++){let l=e[n],r=l.getAttribute("name")||"default",i=this._slots[r],s=l.parentNode;if(i)for(let e of i){if(t&&1===e.nodeType){let n,l=t+"-s",r=document.createTreeWalker(e,1);for(e.setAttribute(l,"");n=r.nextNode();)n.setAttribute(l,"")}s.insertBefore(e,l)}else for(;l.firstChild;)s.insertBefore(l.firstChild,l);s.removeChild(l)}}_injectChildStyle(e){this._applyStyles(e.styles,e)}_removeChildStyle(e){}}function sN(e){let t=iy(),n=t&&t.ce;return n||null}function sP(){let e=sN();return e&&e.shadowRoot}function sM(e="$style"){{let t=iy();if(!t)return g;let n=t.type.__cssModules;if(!n)return g;let l=n[e];return l||g}}let sI=new WeakMap,sL=new WeakMap,sD=Symbol("_moveCb"),sF=Symbol("_enterCb"),sV=(t={name:"TransitionGroup",props:C({},i1,{tag:String,moveClass:String}),setup(e,{slots:t}){let n,l,r=iy(),i=nw();return la(()=>{if(!n.length)return;let t=e.moveClass||`${e.name||"v"}-move`;if(!function(e,t,n){let l=e.cloneNode(),r=e[iQ];r&&r.forEach(e=>{e.split(/\s+/).forEach(e=>e&&l.classList.remove(e))}),n.split(/\s+/).forEach(e=>e&&l.classList.add(e)),l.style.display="none";let i=1===t.nodeType?t:t.parentNode;i.appendChild(l);let{hasTransform:s}=st(l);return i.removeChild(l),s}(n[0].el,r.vnode.el,t)){n=[];return}n.forEach(sU),n.forEach(sj);let l=n.filter(sB);sr(),l.forEach(e=>{let n=e.el,l=n.style;i3(n,t),l.transform=l.webkitTransform=l.transitionDuration="";let r=n[sD]=e=>{(!e||e.target===n)&&(!e||/transform$/.test(e.propertyName))&&(n.removeEventListener("transitionend",r),n[sD]=null,i5(n,t))};n.addEventListener("transitionend",r)}),n=[]}),()=>{let s=ty(e),o=i4(s),a=s.tag||rq;if(n=[],l)for(let e=0;e<l.length;e++){let t=l[e];t.el&&t.el instanceof Element&&(n.push(t),nL(t,nP(t,o,i,r)),sI.set(t,t.el.getBoundingClientRect()))}l=t.default?nD(t.default()):[];for(let e=0;e<l.length;e++){let t=l[e];null!=t.key&&nL(t,nP(t,o,i,r))}return il(a,null,l)}}},delete t.props.mode,t);function sU(e){let t=e.el;t[sD]&&t[sD](),t[sF]&&t[sF]()}function sj(e){sL.set(e,e.el.getBoundingClientRect())}function sB(e){let t=sI.get(e),n=sL.get(e),l=t.left-n.left,r=t.top-n.top;if(l||r){let t=e.el.style;return t.transform=t.webkitTransform=`translate(${l}px,${r}px)`,t.transitionDuration="0s",e}}let s$=e=>{let t=e.props["onUpdate:modelValue"]||!1;return k(t)?e=>G(t,e):t};function sH(e){e.target.composing=!0}function sW(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}let sK=Symbol("_assign"),sz={created(e,{modifiers:{lazy:t,trim:n,number:l}},r){e[sK]=s$(r);let i=l||r.props&&"number"===r.props.type;sb(e,t?"change":"input",t=>{if(t.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=X(l)),e[sK](l)}),n&&sb(e,"change",()=>{e.value=e.value.trim()}),t||(sb(e,"compositionstart",sH),sb(e,"compositionend",sW),sb(e,"change",sW))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:l,trim:r,number:i}},s){if(e[sK]=s$(s),e.composing)return;let o=(i||"number"===e.type)&&!/^0\d/.test(e.value)?X(e.value):e.value,a=null==t?"":t;if(o!==a){if(document.activeElement===e&&"range"!==e.type&&(l&&t===n||r&&e.value.trim()===a))return;e.value=a}}},sq={deep:!0,created(e,t,n){e[sK]=s$(n),sb(e,"change",()=>{let t=e._modelValue,n=sY(e),l=e.checked,r=e[sK];if(k(t)){let e=ea(t,n),i=-1!==e;if(l&&!i)r(t.concat(n));else if(!l&&i){let n=[...t];n.splice(e,1),r(n)}}else if(A(t)){let e=new Set(t);l?e.add(n):e.delete(n),r(e)}else r(sQ(e,l))})},mounted:sG,beforeUpdate(e,t,n){e[sK]=s$(n),sG(e,t,n)}};function sG(e,{value:t,oldValue:n},l){let r;if(e._modelValue=t,k(t))r=ea(t,l.props.value)>-1;else if(A(t))r=t.has(l.props.value);else{if(t===n)return;r=eo(t,sQ(e,!0))}e.checked!==r&&(e.checked=r)}let sJ={created(e,{value:t},n){e.checked=eo(t,n.props.value),e[sK]=s$(n),sb(e,"change",()=>{e[sK](sY(e))})},beforeUpdate(e,{value:t,oldValue:n},l){e[sK]=s$(l),t!==n&&(e.checked=eo(t,l.props.value))}},sX={deep:!0,created(e,{value:t,modifiers:{number:n}},l){let r=A(t);sb(e,"change",()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>n?X(sY(e)):sY(e));e[sK](e.multiple?r?new Set(t):t:t[0]),e._assigning=!0,t3(()=>{e._assigning=!1})}),e[sK]=s$(l)},mounted(e,{value:t}){sZ(e,t)},beforeUpdate(e,t,n){e[sK]=s$(n)},updated(e,{value:t}){e._assigning||sZ(e,t)}};function sZ(e,t){let n=e.multiple,l=k(t);if(!n||l||A(t)){for(let r=0,i=e.options.length;r<i;r++){let i=e.options[r],s=sY(i);if(n)if(l){let e=typeof s;"string"===e||"number"===e?i.selected=t.some(e=>String(e)===String(s)):i.selected=ea(t,s)>-1}else i.selected=t.has(s);else if(eo(sY(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}n||-1===e.selectedIndex||(e.selectedIndex=-1)}}function sY(e){return"_value"in e?e._value:e.value}function sQ(e,t){let n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}let s0={created(e,t,n){s2(e,t,n,null,"created")},mounted(e,t,n){s2(e,t,n,null,"mounted")},beforeUpdate(e,t,n,l){s2(e,t,n,l,"beforeUpdate")},updated(e,t,n,l){s2(e,t,n,l,"updated")}};function s1(e,t){switch(e){case"SELECT":return sX;case"TEXTAREA":return sz;default:switch(t){case"checkbox":return sq;case"radio":return sJ;default:return sz}}}function s2(e,t,n,l,r){let i=s1(e.tagName,n.props&&n.props.type)[r];i&&i(e,t,n,l)}let s6=["ctrl","shift","alt","meta"],s8={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>s6.some(n=>e[`${n}Key`]&&!t.includes(n))},s4=(e,t)=>{let n=e._withMods||(e._withMods={}),l=t.join(".");return n[l]||(n[l]=(n,...l)=>{for(let e=0;e<t.length;e++){let l=s8[t[e]];if(l&&l(n,t))return}return e(n,...l)})},s3={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},s5=(e,t)=>{let n=e._withKeys||(e._withKeys={}),l=t.join(".");return n[l]||(n[l]=n=>{if(!("key"in n))return;let l=W(n.key);if(t.some(e=>e===l||s3[e]===l))return e(n)})},s9=C({patchProp:(e,t,n,l,r,i)=>{let s="svg"===r;if("class"===t){var o=l;let t=e[iQ];t&&(o=(o?[o,...t]:[...t]).join(" ")),null==o?e.removeAttribute("class"):s?e.setAttribute("class",o):e.className=o}else"style"===t?function(e,t,n){let l=e.style,r=N(n),i=!1;if(n&&!r){if(t)if(N(t))for(let e of t.split(";")){let t=e.slice(0,e.indexOf(":")).trim();null==n[t]&&sh(l,t,"")}else for(let e in t)null==n[e]&&sh(l,e,"");for(let e in n)"display"===e&&(i=!0),sh(l,e,n[e])}else if(r){if(t!==n){let e=l[su];e&&(n+=";"+e),l.cssText=n,i=sp.test(n)}}else t&&e.removeAttribute("style");si in e&&(e[si]=i?l.display:"",e[ss]&&(l.display="none"))}(e,n,l):b(t)?S(t)||function(e,t,n,l,r=null){let i=e[sS]||(e[sS]={}),s=i[t];if(l&&s)s.value=l;else{let[n,o]=function(e){let t;if(sC.test(e)){let n;for(t={};n=e.match(sC);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[":"===e[2]?e.slice(3):W(e.slice(2)),t]}(t);if(l)sb(e,n,i[t]=function(e,t){let n=e=>{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();tZ(function(e,t){if(!k(t))return t;{let n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(e=>t=>!t._stopped&&e&&e(t))}}(e,n.value),t,5,[e])};return n.value=e,n.attached=sx||(sE.then(()=>sx=0),sx=Date.now()),n}(l,r),o);else s&&(e.removeEventListener(n,s,o),i[t]=void 0)}}(e,t,0,l,i):("."===t[0]?(t=t.slice(1),0):"^"===t[0]?(t=t.slice(1),1):!function(e,t,n,l){if(l)return!!("innerHTML"===t||"textContent"===t||t in e&&sw(t)&&O(n));if("spellcheck"===t||"draggable"===t||"translate"===t||"autocorrect"===t||"form"===t||"list"===t&&"INPUT"===e.tagName||"type"===t&&"TEXTAREA"===e.tagName)return!1;if("width"===t||"height"===t){let t=e.tagName;if("IMG"===t||"VIDEO"===t||"CANVAS"===t||"SOURCE"===t)return!1}return!(sw(t)&&N(n))&&t in e}(e,t,l,s))?e._isVueCE&&(/[A-Z]/.test(t)||!N(l))?sy(e,$(t),l,i,t):("true-value"===t?e._trueValue=l:"false-value"===t&&(e._falseValue=l),s_(e,t,l,s)):(sy(e,t,l),e.tagName.includes("-")||"value"!==t&&"checked"!==t&&"selected"!==t||s_(e,t,l,s,i,"value"!==t))}},{insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,l)=>{let r="svg"===t?iJ.createElementNS("http://www.w3.org/2000/svg",e):"mathml"===t?iJ.createElementNS("http://www.w3.org/1998/Math/MathML",e):n?iJ.createElement(e,{is:n}):iJ.createElement(e);return"select"===e&&l&&null!=l.multiple&&r.setAttribute("multiple",l.multiple),r},createText:e=>iJ.createTextNode(e),createComment:e=>iJ.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>iJ.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,l,r,i){let s=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),r!==i&&(r=r.nextSibling););else{iX.innerHTML=iG("svg"===l?`<svg>${e}</svg>`:"mathml"===l?`<math>${e}</math>`:e);let r=iX.content;if("svg"===l||"mathml"===l){let e=r.firstChild;for(;e.firstChild;)r.appendChild(e.firstChild);r.removeChild(e)}t.insertBefore(r,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}}),s7=!1;function oe(){return f=s7?f:rh(s9),s7=!0,f}let ot=(...e)=>{(f||(f=rd(s9))).render(...e)},on=(...e)=>{oe().hydrate(...e)},ol=(...e)=>{let t=(f||(f=rd(s9))).createApp(...e),{mount:n}=t;return t.mount=e=>{let l=os(e);if(!l)return;let r=t._component;O(r)||r.render||r.template||(r.template=l.innerHTML),1===l.nodeType&&(l.textContent="");let i=n(l,!1,oi(l));return l instanceof Element&&(l.removeAttribute("v-cloak"),l.setAttribute("data-v-app","")),i},t},or=(...e)=>{let t=oe().createApp(...e),{mount:n}=t;return t.mount=e=>{let t=os(e);if(t)return n(t,!0,oi(t))},t};function oi(e){return e instanceof SVGElement?"svg":"function"==typeof MathMLElement&&e instanceof MathMLElement?"mathml":void 0}function os(e){return N(e)?document.querySelector(e):e}let oo=!1,oa=()=>{oo||(oo=!0,sz.getSSRProps=({value:e})=>({value:e}),sJ.getSSRProps=({value:e},t)=>{if(t.props&&eo(t.props.value,e))return{checked:!0}},sq.getSSRProps=({value:e},t)=>{if(k(e)){if(t.props&&ea(e,t.props.value)>-1)return{checked:!0}}else if(A(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}},s0.getSSRProps=(e,t)=>{if("string"!=typeof t.type)return;let n=s1(t.type.toUpperCase(),t.props&&t.props.type);if(n.getSSRProps)return n.getSSRProps(e,t)},so.getSSRProps=({value:e})=>{if(!e)return{style:{display:"none"}}})};export{nO as BaseTransition,nT as BaseTransitionPropsValidators,rJ as Comment,iz as DeprecationTypes,ed as EffectScope,tJ as ErrorCodes,ij as ErrorTypeStrings,rq as Fragment,n3 as KeepAlive,e_ as ReactiveEffect,rX as Static,rB as Suspense,nb as Teleport,rG as Text,tB as TrackOpTypes,i2 as Transition,sV as TransitionGroup,t$ as TriggerOpTypes,sO as VueElement,tG as assertNumber,tZ as callWithAsyncErrorHandling,tX as callWithErrorHandling,$ as camelize,K as capitalize,ii as cloneVNode,iK as compatUtils,iM as computed,ol as createApp,r4 as createBlock,ia as createCommentVNode,r8 as createElementBlock,it as createElementVNode,rh as createHydrationRenderer,lK as createPropsRestProxy,rd as createRenderer,or as createSSRApp,lx as createSlots,io as createStaticVNode,is as createTextVNode,il as createVNode,tI as customRef,n6 as defineAsyncComponent,nF as defineComponent,sT as defineCustomElement,lM as defineEmits,lI as defineExpose,lF as defineModel,lL as defineOptions,lP as defineProps,sA as defineSSRCustomElement,lD as defineSlots,iB as devtools,eT as effect,eh as effectScope,iy as getCurrentInstance,eg as getCurrentScope,tK as getCurrentWatcher,nD as getTransitionRawChildren,ir as guardReactiveProps,iI as h,tY as handleError,l9 as hasInjectionContext,on as hydrate,nY as hydrateOnIdle,n1 as hydrateOnInteraction,n0 as hydrateOnMediaQuery,nQ as hydrateOnVisible,iL as initCustomFormatter,oa as initDirectivesForSSR,l5 as inject,iF as isMemoSame,t_ as isProxy,tg as isReactive,tv as isReadonly,tx as isRef,iT as isRuntimeOnly,tm as isShallow,r3 as isVNode,tb as markRaw,lH as mergeDefaults,lW as mergeModels,id as mergeProps,t3 as nextTick,er as normalizeClass,ei as normalizeProps,ee as normalizeStyle,n9 as onActivated,li as onBeforeMount,lu as onBeforeUnmount,lo as onBeforeUpdate,n7 as onDeactivated,lh as onErrorCaptured,ls as onMounted,ld as onRenderTracked,lp as onRenderTriggered,ev as onScopeDispose,lf as onServerPrefetch,lc as onUnmounted,la as onUpdated,tz as onWatcherCleanup,rQ as openBlock,no as popScopeId,l3 as provide,tP as proxyRefs,ns as pushScopeId,t7 as queuePostFlushCb,tc as reactive,tp as readonly,tE as ref,ik as registerRuntimeCompiler,ot as render,lC as renderList,lE as renderSlot,lv as resolveComponent,ly as resolveDirective,l_ as resolveDynamicComponent,iW as resolveFilter,nP as resolveTransitionHooks,r2 as setBlockTracking,i$ as setDevtoolsHook,nL as setTransitionHooks,tf as shallowReactive,td as shallowReadonly,tw as shallowRef,rS as ssrContextKey,iH as ssrUtils,eA as stop,ec as toDisplayString,z as toHandlerKey,lk as toHandlers,ty as toRaw,tV as toRef,tL as toRefs,tO as toValue,r9 as transformVNodeArgs,tA as triggerRef,tR as unref,lj as useAttrs,sM as useCssModule,sc as useCssVars,sN as useHost,nV as useId,rO as useModel,rC as useSSRContext,sP as useShadowRoot,lU as useSlots,nj as useTemplateRef,nw as useTransitionState,sq as vModelCheckbox,s0 as vModelDynamic,sJ as vModelRadio,sX as vModelSelect,sz as vModelText,so as vShow,iV as version,iU as warn,rk as watch,rx as watchEffect,rE as watchPostEffect,rw as watchSyncEffect,lz as withAsyncContext,nu as withCtx,lV as withDefaults,nc as withDirectives,s5 as withKeys,iD as withMemo,s4 as withModifiers,na as withScopeId}; diff --git a/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js b/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js new file mode 100644 index 0000000..6e51096 --- /dev/null +++ b/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js @@ -0,0 +1,1869 @@ +/** +* @vue/runtime-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +import { warn, BaseTransitionPropsValidators, h, BaseTransition, assertNumber, getCurrentInstance, onBeforeUpdate, queuePostFlushCb, onMounted, watch, onUnmounted, Fragment, Static, camelize, callWithAsyncErrorHandling, defineComponent, nextTick, unref, createVNode, useTransitionState, onUpdated, toRaw, getTransitionRawChildren, setTransitionHooks, resolveTransitionHooks, Text, createRenderer, createHydrationRenderer, isRuntimeOnly } from '@vue/runtime-core'; +export * from '@vue/runtime-core'; +import { extend, isObject, toNumber, isArray, NOOP, normalizeCssVarValue, isString, hyphenate, capitalize, isSpecialBooleanAttr, includeBooleanAttr, isSymbol, isFunction, isOn, isModelListener, camelize as camelize$1, isPlainObject, hasOwn, EMPTY_OBJ, looseToNumber, looseIndexOf, isSet, looseEqual, invokeArrayFns, isHTMLTag, isSVGTag, isMathMLTag } from '@vue/shared'; + +let policy = void 0; +const tt = typeof window !== "undefined" && window.trustedTypes; +if (tt) { + try { + policy = /* @__PURE__ */ tt.createPolicy("vue", { + createHTML: (val) => val + }); + } catch (e) { + !!(process.env.NODE_ENV !== "production") && warn(`Error creating trusted types policy: ${e}`); + } +} +const unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val; +const svgNS = "http://www.w3.org/2000/svg"; +const mathmlNS = "http://www.w3.org/1998/Math/MathML"; +const doc = typeof document !== "undefined" ? document : null; +const templateContainer = doc && /* @__PURE__ */ doc.createElement("template"); +const nodeOps = { + insert: (child, parent, anchor) => { + parent.insertBefore(child, anchor || null); + }, + remove: (child) => { + const parent = child.parentNode; + if (parent) { + parent.removeChild(child); + } + }, + createElement: (tag, namespace, is, props) => { + const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag); + if (tag === "select" && props && props.multiple != null) { + el.setAttribute("multiple", props.multiple); + } + return el; + }, + createText: (text) => doc.createTextNode(text), + createComment: (text) => doc.createComment(text), + setText: (node, text) => { + node.nodeValue = text; + }, + setElementText: (el, text) => { + el.textContent = text; + }, + parentNode: (node) => node.parentNode, + nextSibling: (node) => node.nextSibling, + querySelector: (selector) => doc.querySelector(selector), + setScopeId(el, id) { + el.setAttribute(id, ""); + }, + // __UNSAFE__ + // Reason: innerHTML. + // Static content here can only come from compiled templates. + // As long as the user only uses trusted templates, this is safe. + insertStaticContent(content, parent, anchor, namespace, start, end) { + const before = anchor ? anchor.previousSibling : parent.lastChild; + if (start && (start === end || start.nextSibling)) { + while (true) { + parent.insertBefore(start.cloneNode(true), anchor); + if (start === end || !(start = start.nextSibling)) break; + } + } else { + templateContainer.innerHTML = unsafeToTrustedHTML( + namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content + ); + const template = templateContainer.content; + if (namespace === "svg" || namespace === "mathml") { + const wrapper = template.firstChild; + while (wrapper.firstChild) { + template.appendChild(wrapper.firstChild); + } + template.removeChild(wrapper); + } + parent.insertBefore(template, anchor); + } + return [ + // first + before ? before.nextSibling : parent.firstChild, + // last + anchor ? anchor.previousSibling : parent.lastChild + ]; + } +}; + +const TRANSITION = "transition"; +const ANIMATION = "animation"; +const vtcKey = Symbol("_vtc"); +const DOMTransitionPropsValidators = { + name: String, + type: String, + css: { + type: Boolean, + default: true + }, + duration: [String, Number, Object], + enterFromClass: String, + enterActiveClass: String, + enterToClass: String, + appearFromClass: String, + appearActiveClass: String, + appearToClass: String, + leaveFromClass: String, + leaveActiveClass: String, + leaveToClass: String +}; +const TransitionPropsValidators = /* @__PURE__ */ extend( + {}, + BaseTransitionPropsValidators, + DOMTransitionPropsValidators +); +const decorate$1 = (t) => { + t.displayName = "Transition"; + t.props = TransitionPropsValidators; + return t; +}; +const Transition = /* @__PURE__ */ decorate$1( + (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots) +); +const callHook = (hook, args = []) => { + if (isArray(hook)) { + hook.forEach((h2) => h2(...args)); + } else if (hook) { + hook(...args); + } +}; +const hasExplicitCallback = (hook) => { + return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false; +}; +function resolveTransitionProps(rawProps) { + const baseProps = {}; + for (const key in rawProps) { + if (!(key in DOMTransitionPropsValidators)) { + baseProps[key] = rawProps[key]; + } + } + if (rawProps.css === false) { + return baseProps; + } + const { + name = "v", + type, + duration, + enterFromClass = `${name}-enter-from`, + enterActiveClass = `${name}-enter-active`, + enterToClass = `${name}-enter-to`, + appearFromClass = enterFromClass, + appearActiveClass = enterActiveClass, + appearToClass = enterToClass, + leaveFromClass = `${name}-leave-from`, + leaveActiveClass = `${name}-leave-active`, + leaveToClass = `${name}-leave-to` + } = rawProps; + const durations = normalizeDuration(duration); + const enterDuration = durations && durations[0]; + const leaveDuration = durations && durations[1]; + const { + onBeforeEnter, + onEnter, + onEnterCancelled, + onLeave, + onLeaveCancelled, + onBeforeAppear = onBeforeEnter, + onAppear = onEnter, + onAppearCancelled = onEnterCancelled + } = baseProps; + const finishEnter = (el, isAppear, done, isCancelled) => { + el._enterCancelled = isCancelled; + removeTransitionClass(el, isAppear ? appearToClass : enterToClass); + removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass); + done && done(); + }; + const finishLeave = (el, done) => { + el._isLeaving = false; + removeTransitionClass(el, leaveFromClass); + removeTransitionClass(el, leaveToClass); + removeTransitionClass(el, leaveActiveClass); + done && done(); + }; + const makeEnterHook = (isAppear) => { + return (el, done) => { + const hook = isAppear ? onAppear : onEnter; + const resolve = () => finishEnter(el, isAppear, done); + callHook(hook, [el, resolve]); + nextFrame(() => { + removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass); + addTransitionClass(el, isAppear ? appearToClass : enterToClass); + if (!hasExplicitCallback(hook)) { + whenTransitionEnds(el, type, enterDuration, resolve); + } + }); + }; + }; + return extend(baseProps, { + onBeforeEnter(el) { + callHook(onBeforeEnter, [el]); + addTransitionClass(el, enterFromClass); + addTransitionClass(el, enterActiveClass); + }, + onBeforeAppear(el) { + callHook(onBeforeAppear, [el]); + addTransitionClass(el, appearFromClass); + addTransitionClass(el, appearActiveClass); + }, + onEnter: makeEnterHook(false), + onAppear: makeEnterHook(true), + onLeave(el, done) { + el._isLeaving = true; + const resolve = () => finishLeave(el, done); + addTransitionClass(el, leaveFromClass); + if (!el._enterCancelled) { + forceReflow(); + addTransitionClass(el, leaveActiveClass); + } else { + addTransitionClass(el, leaveActiveClass); + forceReflow(); + } + nextFrame(() => { + if (!el._isLeaving) { + return; + } + removeTransitionClass(el, leaveFromClass); + addTransitionClass(el, leaveToClass); + if (!hasExplicitCallback(onLeave)) { + whenTransitionEnds(el, type, leaveDuration, resolve); + } + }); + callHook(onLeave, [el, resolve]); + }, + onEnterCancelled(el) { + finishEnter(el, false, void 0, true); + callHook(onEnterCancelled, [el]); + }, + onAppearCancelled(el) { + finishEnter(el, true, void 0, true); + callHook(onAppearCancelled, [el]); + }, + onLeaveCancelled(el) { + finishLeave(el); + callHook(onLeaveCancelled, [el]); + } + }); +} +function normalizeDuration(duration) { + if (duration == null) { + return null; + } else if (isObject(duration)) { + return [NumberOf(duration.enter), NumberOf(duration.leave)]; + } else { + const n = NumberOf(duration); + return [n, n]; + } +} +function NumberOf(val) { + const res = toNumber(val); + if (!!(process.env.NODE_ENV !== "production")) { + assertNumber(res, "<transition> explicit duration"); + } + return res; +} +function addTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.add(c)); + (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls); +} +function removeTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.remove(c)); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.delete(cls); + if (!_vtc.size) { + el[vtcKey] = void 0; + } + } +} +function nextFrame(cb) { + requestAnimationFrame(() => { + requestAnimationFrame(cb); + }); +} +let endId = 0; +function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) { + const id = el._endId = ++endId; + const resolveIfNotStale = () => { + if (id === el._endId) { + resolve(); + } + }; + if (explicitTimeout != null) { + return setTimeout(resolveIfNotStale, explicitTimeout); + } + const { type, timeout, propCount } = getTransitionInfo(el, expectedType); + if (!type) { + return resolve(); + } + const endEvent = type + "end"; + let ended = 0; + const end = () => { + el.removeEventListener(endEvent, onEnd); + resolveIfNotStale(); + }; + const onEnd = (e) => { + if (e.target === el && ++ended >= propCount) { + end(); + } + }; + setTimeout(() => { + if (ended < propCount) { + end(); + } + }, timeout + 1); + el.addEventListener(endEvent, onEnd); +} +function getTransitionInfo(el, expectedType) { + const styles = window.getComputedStyle(el); + const getStyleProperties = (key) => (styles[key] || "").split(", "); + const transitionDelays = getStyleProperties(`${TRANSITION}Delay`); + const transitionDurations = getStyleProperties(`${TRANSITION}Duration`); + const transitionTimeout = getTimeout(transitionDelays, transitionDurations); + const animationDelays = getStyleProperties(`${ANIMATION}Delay`); + const animationDurations = getStyleProperties(`${ANIMATION}Duration`); + const animationTimeout = getTimeout(animationDelays, animationDurations); + let type = null; + let timeout = 0; + let propCount = 0; + if (expectedType === TRANSITION) { + if (transitionTimeout > 0) { + type = TRANSITION; + timeout = transitionTimeout; + propCount = transitionDurations.length; + } + } else if (expectedType === ANIMATION) { + if (animationTimeout > 0) { + type = ANIMATION; + timeout = animationTimeout; + propCount = animationDurations.length; + } + } else { + timeout = Math.max(transitionTimeout, animationTimeout); + type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null; + propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0; + } + const hasTransform = type === TRANSITION && /\b(transform|all)(,|$)/.test( + getStyleProperties(`${TRANSITION}Property`).toString() + ); + return { + type, + timeout, + propCount, + hasTransform + }; +} +function getTimeout(delays, durations) { + while (delays.length < durations.length) { + delays = delays.concat(delays); + } + return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i]))); +} +function toMs(s) { + if (s === "auto") return 0; + return Number(s.slice(0, -1).replace(",", ".")) * 1e3; +} +function forceReflow() { + return document.body.offsetHeight; +} + +function patchClass(el, value, isSVG) { + const transitionClasses = el[vtcKey]; + if (transitionClasses) { + value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" "); + } + if (value == null) { + el.removeAttribute("class"); + } else if (isSVG) { + el.setAttribute("class", value); + } else { + el.className = value; + } +} + +const vShowOriginalDisplay = Symbol("_vod"); +const vShowHidden = Symbol("_vsh"); +const vShow = { + beforeMount(el, { value }, { transition }) { + el[vShowOriginalDisplay] = el.style.display === "none" ? "" : el.style.display; + if (transition && value) { + transition.beforeEnter(el); + } else { + setDisplay(el, value); + } + }, + mounted(el, { value }, { transition }) { + if (transition && value) { + transition.enter(el); + } + }, + updated(el, { value, oldValue }, { transition }) { + if (!value === !oldValue) return; + if (transition) { + if (value) { + transition.beforeEnter(el); + setDisplay(el, true); + transition.enter(el); + } else { + transition.leave(el, () => { + setDisplay(el, false); + }); + } + } else { + setDisplay(el, value); + } + }, + beforeUnmount(el, { value }) { + setDisplay(el, value); + } +}; +if (!!(process.env.NODE_ENV !== "production")) { + vShow.name = "show"; +} +function setDisplay(el, value) { + el.style.display = value ? el[vShowOriginalDisplay] : "none"; + el[vShowHidden] = !value; +} +function initVShowForSSR() { + vShow.getSSRProps = ({ value }) => { + if (!value) { + return { style: { display: "none" } }; + } + }; +} + +const CSS_VAR_TEXT = Symbol(!!(process.env.NODE_ENV !== "production") ? "CSS_VAR_TEXT" : ""); +function useCssVars(getter) { + const instance = getCurrentInstance(); + if (!instance) { + !!(process.env.NODE_ENV !== "production") && warn(`useCssVars is called without current active component instance.`); + return; + } + const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => { + Array.from( + document.querySelectorAll(`[data-v-owner="${instance.uid}"]`) + ).forEach((node) => setVarsOnNode(node, vars)); + }; + if (!!(process.env.NODE_ENV !== "production")) { + instance.getCssVars = () => getter(instance.proxy); + } + const setVars = () => { + const vars = getter(instance.proxy); + if (instance.ce) { + setVarsOnNode(instance.ce, vars); + } else { + setVarsOnVNode(instance.subTree, vars); + } + updateTeleports(vars); + }; + onBeforeUpdate(() => { + queuePostFlushCb(setVars); + }); + onMounted(() => { + watch(setVars, NOOP, { flush: "post" }); + const ob = new MutationObserver(setVars); + ob.observe(instance.subTree.el.parentNode, { childList: true }); + onUnmounted(() => ob.disconnect()); + }); +} +function setVarsOnVNode(vnode, vars) { + if (vnode.shapeFlag & 128) { + const suspense = vnode.suspense; + vnode = suspense.activeBranch; + if (suspense.pendingBranch && !suspense.isHydrating) { + suspense.effects.push(() => { + setVarsOnVNode(suspense.activeBranch, vars); + }); + } + } + while (vnode.component) { + vnode = vnode.component.subTree; + } + if (vnode.shapeFlag & 1 && vnode.el) { + setVarsOnNode(vnode.el, vars); + } else if (vnode.type === Fragment) { + vnode.children.forEach((c) => setVarsOnVNode(c, vars)); + } else if (vnode.type === Static) { + let { el, anchor } = vnode; + while (el) { + setVarsOnNode(el, vars); + if (el === anchor) break; + el = el.nextSibling; + } + } +} +function setVarsOnNode(el, vars) { + if (el.nodeType === 1) { + const style = el.style; + let cssText = ""; + for (const key in vars) { + const value = normalizeCssVarValue(vars[key]); + style.setProperty(`--${key}`, value); + cssText += `--${key}: ${value};`; + } + style[CSS_VAR_TEXT] = cssText; + } +} + +const displayRE = /(^|;)\s*display\s*:/; +function patchStyle(el, prev, next) { + const style = el.style; + const isCssString = isString(next); + let hasControlledDisplay = false; + if (next && !isCssString) { + if (prev) { + if (!isString(prev)) { + for (const key in prev) { + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } else { + for (const prevStyle of prev.split(";")) { + const key = prevStyle.slice(0, prevStyle.indexOf(":")).trim(); + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } + } + for (const key in next) { + if (key === "display") { + hasControlledDisplay = true; + } + setStyle(style, key, next[key]); + } + } else { + if (isCssString) { + if (prev !== next) { + const cssVarText = style[CSS_VAR_TEXT]; + if (cssVarText) { + next += ";" + cssVarText; + } + style.cssText = next; + hasControlledDisplay = displayRE.test(next); + } + } else if (prev) { + el.removeAttribute("style"); + } + } + if (vShowOriginalDisplay in el) { + el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : ""; + if (el[vShowHidden]) { + style.display = "none"; + } + } +} +const semicolonRE = /[^\\];\s*$/; +const importantRE = /\s*!important$/; +function setStyle(style, name, val) { + if (isArray(val)) { + val.forEach((v) => setStyle(style, name, v)); + } else { + if (val == null) val = ""; + if (!!(process.env.NODE_ENV !== "production")) { + if (semicolonRE.test(val)) { + warn( + `Unexpected semicolon at the end of '${name}' style value: '${val}'` + ); + } + } + if (name.startsWith("--")) { + style.setProperty(name, val); + } else { + const prefixed = autoPrefix(style, name); + if (importantRE.test(val)) { + style.setProperty( + hyphenate(prefixed), + val.replace(importantRE, ""), + "important" + ); + } else { + style[prefixed] = val; + } + } + } +} +const prefixes = ["Webkit", "Moz", "ms"]; +const prefixCache = {}; +function autoPrefix(style, rawName) { + const cached = prefixCache[rawName]; + if (cached) { + return cached; + } + let name = camelize(rawName); + if (name !== "filter" && name in style) { + return prefixCache[rawName] = name; + } + name = capitalize(name); + for (let i = 0; i < prefixes.length; i++) { + const prefixed = prefixes[i] + name; + if (prefixed in style) { + return prefixCache[rawName] = prefixed; + } + } + return rawName; +} + +const xlinkNS = "http://www.w3.org/1999/xlink"; +function patchAttr(el, key, value, isSVG, instance, isBoolean = isSpecialBooleanAttr(key)) { + if (isSVG && key.startsWith("xlink:")) { + if (value == null) { + el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); + } else { + el.setAttributeNS(xlinkNS, key, value); + } + } else { + if (value == null || isBoolean && !includeBooleanAttr(value)) { + el.removeAttribute(key); + } else { + el.setAttribute( + key, + isBoolean ? "" : isSymbol(value) ? String(value) : value + ); + } + } +} + +function patchDOMProp(el, key, value, parentComponent, attrName) { + if (key === "innerHTML" || key === "textContent") { + if (value != null) { + el[key] = key === "innerHTML" ? unsafeToTrustedHTML(value) : value; + } + return; + } + const tag = el.tagName; + if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally + !tag.includes("-")) { + const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value; + const newValue = value == null ? ( + // #11647: value should be set as empty string for null and undefined, + // but <input type="checkbox"> should be set as 'on'. + el.type === "checkbox" ? "on" : "" + ) : String(value); + if (oldValue !== newValue || !("_value" in el)) { + el.value = newValue; + } + if (value == null) { + el.removeAttribute(key); + } + el._value = value; + return; + } + let needRemove = false; + if (value === "" || value == null) { + const type = typeof el[key]; + if (type === "boolean") { + value = includeBooleanAttr(value); + } else if (value == null && type === "string") { + value = ""; + needRemove = true; + } else if (type === "number") { + value = 0; + needRemove = true; + } + } + try { + el[key] = value; + } catch (e) { + if (!!(process.env.NODE_ENV !== "production") && !needRemove) { + warn( + `Failed setting prop "${key}" on <${tag.toLowerCase()}>: value ${value} is invalid.`, + e + ); + } + } + needRemove && el.removeAttribute(attrName || key); +} + +function addEventListener(el, event, handler, options) { + el.addEventListener(event, handler, options); +} +function removeEventListener(el, event, handler, options) { + el.removeEventListener(event, handler, options); +} +const veiKey = Symbol("_vei"); +function patchEvent(el, rawName, prevValue, nextValue, instance = null) { + const invokers = el[veiKey] || (el[veiKey] = {}); + const existingInvoker = invokers[rawName]; + if (nextValue && existingInvoker) { + existingInvoker.value = !!(process.env.NODE_ENV !== "production") ? sanitizeEventValue(nextValue, rawName) : nextValue; + } else { + const [name, options] = parseName(rawName); + if (nextValue) { + const invoker = invokers[rawName] = createInvoker( + !!(process.env.NODE_ENV !== "production") ? sanitizeEventValue(nextValue, rawName) : nextValue, + instance + ); + addEventListener(el, name, invoker, options); + } else if (existingInvoker) { + removeEventListener(el, name, existingInvoker, options); + invokers[rawName] = void 0; + } + } +} +const optionsModifierRE = /(?:Once|Passive|Capture)$/; +function parseName(name) { + let options; + if (optionsModifierRE.test(name)) { + options = {}; + let m; + while (m = name.match(optionsModifierRE)) { + name = name.slice(0, name.length - m[0].length); + options[m[0].toLowerCase()] = true; + } + } + const event = name[2] === ":" ? name.slice(3) : hyphenate(name.slice(2)); + return [event, options]; +} +let cachedNow = 0; +const p = /* @__PURE__ */ Promise.resolve(); +const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now()); +function createInvoker(initialValue, instance) { + const invoker = (e) => { + if (!e._vts) { + e._vts = Date.now(); + } else if (e._vts <= invoker.attached) { + return; + } + callWithAsyncErrorHandling( + patchStopImmediatePropagation(e, invoker.value), + instance, + 5, + [e] + ); + }; + invoker.value = initialValue; + invoker.attached = getNow(); + return invoker; +} +function sanitizeEventValue(value, propName) { + if (isFunction(value) || isArray(value)) { + return value; + } + warn( + `Wrong type passed as event handler to ${propName} - did you forget @ or : in front of your prop? +Expected function or array of functions, received type ${typeof value}.` + ); + return NOOP; +} +function patchStopImmediatePropagation(e, value) { + if (isArray(value)) { + const originalStop = e.stopImmediatePropagation; + e.stopImmediatePropagation = () => { + originalStop.call(e); + e._stopped = true; + }; + return value.map( + (fn) => (e2) => !e2._stopped && fn && fn(e2) + ); + } else { + return value; + } +} + +const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter +key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123; +const patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => { + const isSVG = namespace === "svg"; + if (key === "class") { + patchClass(el, nextValue, isSVG); + } else if (key === "style") { + patchStyle(el, prevValue, nextValue); + } else if (isOn(key)) { + if (!isModelListener(key)) { + patchEvent(el, key, prevValue, nextValue, parentComponent); + } + } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) { + patchDOMProp(el, key, nextValue); + if (!el.tagName.includes("-") && (key === "value" || key === "checked" || key === "selected")) { + patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value"); + } + } else if ( + // #11081 force set props for possible async custom element + el._isVueCE && (/[A-Z]/.test(key) || !isString(nextValue)) + ) { + patchDOMProp(el, camelize$1(key), nextValue, parentComponent, key); + } else { + if (key === "true-value") { + el._trueValue = nextValue; + } else if (key === "false-value") { + el._falseValue = nextValue; + } + patchAttr(el, key, nextValue, isSVG); + } +}; +function shouldSetAsProp(el, key, value, isSVG) { + if (isSVG) { + if (key === "innerHTML" || key === "textContent") { + return true; + } + if (key in el && isNativeOn(key) && isFunction(value)) { + return true; + } + return false; + } + if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") { + return false; + } + if (key === "form") { + return false; + } + if (key === "list" && el.tagName === "INPUT") { + return false; + } + if (key === "type" && el.tagName === "TEXTAREA") { + return false; + } + if (key === "width" || key === "height") { + const tag = el.tagName; + if (tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE") { + return false; + } + } + if (isNativeOn(key) && isString(value)) { + return false; + } + return key in el; +} + +const REMOVAL = {}; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineCustomElement(options, extraOptions, _createApp) { + const Comp = defineComponent(options, extraOptions); + if (isPlainObject(Comp)) extend(Comp, extraOptions); + class VueCustomElement extends VueElement { + constructor(initialProps) { + super(Comp, initialProps, _createApp); + } + } + VueCustomElement.def = Comp; + return VueCustomElement; +} +/*! #__NO_SIDE_EFFECTS__ */ +const defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options, extraOptions) => { + return /* @__PURE__ */ defineCustomElement(options, extraOptions, createSSRApp); +}; +const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class { +}; +class VueElement extends BaseClass { + constructor(_def, _props = {}, _createApp = createApp) { + super(); + this._def = _def; + this._props = _props; + this._createApp = _createApp; + this._isVueCE = true; + /** + * @internal + */ + this._instance = null; + /** + * @internal + */ + this._app = null; + /** + * @internal + */ + this._nonce = this._def.nonce; + this._connected = false; + this._resolved = false; + this._numberProps = null; + this._styleChildren = /* @__PURE__ */ new WeakSet(); + this._ob = null; + if (this.shadowRoot && _createApp !== createApp) { + this._root = this.shadowRoot; + } else { + if (!!(process.env.NODE_ENV !== "production") && this.shadowRoot) { + warn( + `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \`defineSSRCustomElement\`.` + ); + } + if (_def.shadowRoot !== false) { + this.attachShadow({ mode: "open" }); + this._root = this.shadowRoot; + } else { + this._root = this; + } + } + } + connectedCallback() { + if (!this.isConnected) return; + if (!this.shadowRoot && !this._resolved) { + this._parseSlots(); + } + this._connected = true; + let parent = this; + while (parent = parent && (parent.parentNode || parent.host)) { + if (parent instanceof VueElement) { + this._parent = parent; + break; + } + } + if (!this._instance) { + if (this._resolved) { + this._mount(this._def); + } else { + if (parent && parent._pendingResolve) { + this._pendingResolve = parent._pendingResolve.then(() => { + this._pendingResolve = void 0; + this._resolveDef(); + }); + } else { + this._resolveDef(); + } + } + } + } + _setParent(parent = this._parent) { + if (parent) { + this._instance.parent = parent._instance; + this._inheritParentContext(parent); + } + } + _inheritParentContext(parent = this._parent) { + if (parent && this._app) { + Object.setPrototypeOf( + this._app._context.provides, + parent._instance.provides + ); + } + } + disconnectedCallback() { + this._connected = false; + nextTick(() => { + if (!this._connected) { + if (this._ob) { + this._ob.disconnect(); + this._ob = null; + } + this._app && this._app.unmount(); + if (this._instance) this._instance.ce = void 0; + this._app = this._instance = null; + } + }); + } + /** + * resolve inner component definition (handle possible async component) + */ + _resolveDef() { + if (this._pendingResolve) { + return; + } + for (let i = 0; i < this.attributes.length; i++) { + this._setAttr(this.attributes[i].name); + } + this._ob = new MutationObserver((mutations) => { + for (const m of mutations) { + this._setAttr(m.attributeName); + } + }); + this._ob.observe(this, { attributes: true }); + const resolve = (def, isAsync = false) => { + this._resolved = true; + this._pendingResolve = void 0; + const { props, styles } = def; + let numberProps; + if (props && !isArray(props)) { + for (const key in props) { + const opt = props[key]; + if (opt === Number || opt && opt.type === Number) { + if (key in this._props) { + this._props[key] = toNumber(this._props[key]); + } + (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize$1(key)] = true; + } + } + } + this._numberProps = numberProps; + this._resolveProps(def); + if (this.shadowRoot) { + this._applyStyles(styles); + } else if (!!(process.env.NODE_ENV !== "production") && styles) { + warn( + "Custom element style injection is not supported when using shadowRoot: false" + ); + } + this._mount(def); + }; + const asyncDef = this._def.__asyncLoader; + if (asyncDef) { + this._pendingResolve = asyncDef().then((def) => { + def.configureApp = this._def.configureApp; + resolve(this._def = def, true); + }); + } else { + resolve(this._def); + } + } + _mount(def) { + if ((!!(process.env.NODE_ENV !== "production") || __VUE_PROD_DEVTOOLS__) && !def.name) { + def.name = "VueElement"; + } + this._app = this._createApp(def); + this._inheritParentContext(); + if (def.configureApp) { + def.configureApp(this._app); + } + this._app._ceVNode = this._createVNode(); + this._app.mount(this._root); + const exposed = this._instance && this._instance.exposed; + if (!exposed) return; + for (const key in exposed) { + if (!hasOwn(this, key)) { + Object.defineProperty(this, key, { + // unwrap ref to be consistent with public instance behavior + get: () => unref(exposed[key]) + }); + } else if (!!(process.env.NODE_ENV !== "production")) { + warn(`Exposed property "${key}" already exists on custom element.`); + } + } + } + _resolveProps(def) { + const { props } = def; + const declaredPropKeys = isArray(props) ? props : Object.keys(props || {}); + for (const key of Object.keys(this)) { + if (key[0] !== "_" && declaredPropKeys.includes(key)) { + this._setProp(key, this[key]); + } + } + for (const key of declaredPropKeys.map(camelize$1)) { + Object.defineProperty(this, key, { + get() { + return this._getProp(key); + }, + set(val) { + this._setProp(key, val, true, true); + } + }); + } + } + _setAttr(key) { + if (key.startsWith("data-v-")) return; + const has = this.hasAttribute(key); + let value = has ? this.getAttribute(key) : REMOVAL; + const camelKey = camelize$1(key); + if (has && this._numberProps && this._numberProps[camelKey]) { + value = toNumber(value); + } + this._setProp(camelKey, value, false, true); + } + /** + * @internal + */ + _getProp(key) { + return this._props[key]; + } + /** + * @internal + */ + _setProp(key, val, shouldReflect = true, shouldUpdate = false) { + if (val !== this._props[key]) { + if (val === REMOVAL) { + delete this._props[key]; + } else { + this._props[key] = val; + if (key === "key" && this._app) { + this._app._ceVNode.key = val; + } + } + if (shouldUpdate && this._instance) { + this._update(); + } + if (shouldReflect) { + const ob = this._ob; + ob && ob.disconnect(); + if (val === true) { + this.setAttribute(hyphenate(key), ""); + } else if (typeof val === "string" || typeof val === "number") { + this.setAttribute(hyphenate(key), val + ""); + } else if (!val) { + this.removeAttribute(hyphenate(key)); + } + ob && ob.observe(this, { attributes: true }); + } + } + } + _update() { + const vnode = this._createVNode(); + if (this._app) vnode.appContext = this._app._context; + render(vnode, this._root); + } + _createVNode() { + const baseProps = {}; + if (!this.shadowRoot) { + baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this); + } + const vnode = createVNode(this._def, extend(baseProps, this._props)); + if (!this._instance) { + vnode.ce = (instance) => { + this._instance = instance; + instance.ce = this; + instance.isCE = true; + if (!!(process.env.NODE_ENV !== "production")) { + instance.ceReload = (newStyles) => { + if (this._styles) { + this._styles.forEach((s) => this._root.removeChild(s)); + this._styles.length = 0; + } + this._applyStyles(newStyles); + this._instance = null; + this._update(); + }; + } + const dispatch = (event, args) => { + this.dispatchEvent( + new CustomEvent( + event, + isPlainObject(args[0]) ? extend({ detail: args }, args[0]) : { detail: args } + ) + ); + }; + instance.emit = (event, ...args) => { + dispatch(event, args); + if (hyphenate(event) !== event) { + dispatch(hyphenate(event), args); + } + }; + this._setParent(); + }; + } + return vnode; + } + _applyStyles(styles, owner) { + if (!styles) return; + if (owner) { + if (owner === this._def || this._styleChildren.has(owner)) { + return; + } + this._styleChildren.add(owner); + } + const nonce = this._nonce; + for (let i = styles.length - 1; i >= 0; i--) { + const s = document.createElement("style"); + if (nonce) s.setAttribute("nonce", nonce); + s.textContent = styles[i]; + this.shadowRoot.prepend(s); + if (!!(process.env.NODE_ENV !== "production")) { + if (owner) { + if (owner.__hmrId) { + if (!this._childStyles) this._childStyles = /* @__PURE__ */ new Map(); + let entry = this._childStyles.get(owner.__hmrId); + if (!entry) { + this._childStyles.set(owner.__hmrId, entry = []); + } + entry.push(s); + } + } else { + (this._styles || (this._styles = [])).push(s); + } + } + } + } + /** + * Only called when shadowRoot is false + */ + _parseSlots() { + const slots = this._slots = {}; + let n; + while (n = this.firstChild) { + const slotName = n.nodeType === 1 && n.getAttribute("slot") || "default"; + (slots[slotName] || (slots[slotName] = [])).push(n); + this.removeChild(n); + } + } + /** + * Only called when shadowRoot is false + */ + _renderSlots() { + const outlets = (this._teleportTarget || this).querySelectorAll("slot"); + const scopeId = this._instance.type.__scopeId; + for (let i = 0; i < outlets.length; i++) { + const o = outlets[i]; + const slotName = o.getAttribute("name") || "default"; + const content = this._slots[slotName]; + const parent = o.parentNode; + if (content) { + for (const n of content) { + if (scopeId && n.nodeType === 1) { + const id = scopeId + "-s"; + const walker = document.createTreeWalker(n, 1); + n.setAttribute(id, ""); + let child; + while (child = walker.nextNode()) { + child.setAttribute(id, ""); + } + } + parent.insertBefore(n, o); + } + } else { + while (o.firstChild) parent.insertBefore(o.firstChild, o); + } + parent.removeChild(o); + } + } + /** + * @internal + */ + _injectChildStyle(comp) { + this._applyStyles(comp.styles, comp); + } + /** + * @internal + */ + _removeChildStyle(comp) { + if (!!(process.env.NODE_ENV !== "production")) { + this._styleChildren.delete(comp); + if (this._childStyles && comp.__hmrId) { + const oldStyles = this._childStyles.get(comp.__hmrId); + if (oldStyles) { + oldStyles.forEach((s) => this._root.removeChild(s)); + oldStyles.length = 0; + } + } + } + } +} +function useHost(caller) { + const instance = getCurrentInstance(); + const el = instance && instance.ce; + if (el) { + return el; + } else if (!!(process.env.NODE_ENV !== "production")) { + if (!instance) { + warn( + `${caller || "useHost"} called without an active component instance.` + ); + } else { + warn( + `${caller || "useHost"} can only be used in components defined via defineCustomElement.` + ); + } + } + return null; +} +function useShadowRoot() { + const el = !!(process.env.NODE_ENV !== "production") ? useHost("useShadowRoot") : useHost(); + return el && el.shadowRoot; +} + +function useCssModule(name = "$style") { + { + const instance = getCurrentInstance(); + if (!instance) { + !!(process.env.NODE_ENV !== "production") && warn(`useCssModule must be called inside setup()`); + return EMPTY_OBJ; + } + const modules = instance.type.__cssModules; + if (!modules) { + !!(process.env.NODE_ENV !== "production") && warn(`Current instance does not have CSS modules injected.`); + return EMPTY_OBJ; + } + const mod = modules[name]; + if (!mod) { + !!(process.env.NODE_ENV !== "production") && warn(`Current instance does not have CSS module named "${name}".`); + return EMPTY_OBJ; + } + return mod; + } +} + +const positionMap = /* @__PURE__ */ new WeakMap(); +const newPositionMap = /* @__PURE__ */ new WeakMap(); +const moveCbKey = Symbol("_moveCb"); +const enterCbKey = Symbol("_enterCb"); +const decorate = (t) => { + delete t.props.mode; + return t; +}; +const TransitionGroupImpl = /* @__PURE__ */ decorate({ + name: "TransitionGroup", + props: /* @__PURE__ */ extend({}, TransitionPropsValidators, { + tag: String, + moveClass: String + }), + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + let prevChildren; + let children; + onUpdated(() => { + if (!prevChildren.length) { + return; + } + const moveClass = props.moveClass || `${props.name || "v"}-move`; + if (!hasCSSTransform( + prevChildren[0].el, + instance.vnode.el, + moveClass + )) { + prevChildren = []; + return; + } + prevChildren.forEach(callPendingCbs); + prevChildren.forEach(recordPosition); + const movedChildren = prevChildren.filter(applyTranslation); + forceReflow(); + movedChildren.forEach((c) => { + const el = c.el; + const style = el.style; + addTransitionClass(el, moveClass); + style.transform = style.webkitTransform = style.transitionDuration = ""; + const cb = el[moveCbKey] = (e) => { + if (e && e.target !== el) { + return; + } + if (!e || /transform$/.test(e.propertyName)) { + el.removeEventListener("transitionend", cb); + el[moveCbKey] = null; + removeTransitionClass(el, moveClass); + } + }; + el.addEventListener("transitionend", cb); + }); + prevChildren = []; + }); + return () => { + const rawProps = toRaw(props); + const cssTransitionProps = resolveTransitionProps(rawProps); + let tag = rawProps.tag || Fragment; + prevChildren = []; + if (children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.el && child.el instanceof Element) { + prevChildren.push(child); + setTransitionHooks( + child, + resolveTransitionHooks( + child, + cssTransitionProps, + state, + instance + ) + ); + positionMap.set( + child, + child.el.getBoundingClientRect() + ); + } + } + } + children = slots.default ? getTransitionRawChildren(slots.default()) : []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.key != null) { + setTransitionHooks( + child, + resolveTransitionHooks(child, cssTransitionProps, state, instance) + ); + } else if (!!(process.env.NODE_ENV !== "production") && child.type !== Text) { + warn(`<TransitionGroup> children must be keyed.`); + } + } + return createVNode(tag, null, children); + }; + } +}); +const TransitionGroup = TransitionGroupImpl; +function callPendingCbs(c) { + const el = c.el; + if (el[moveCbKey]) { + el[moveCbKey](); + } + if (el[enterCbKey]) { + el[enterCbKey](); + } +} +function recordPosition(c) { + newPositionMap.set(c, c.el.getBoundingClientRect()); +} +function applyTranslation(c) { + const oldPos = positionMap.get(c); + const newPos = newPositionMap.get(c); + const dx = oldPos.left - newPos.left; + const dy = oldPos.top - newPos.top; + if (dx || dy) { + const s = c.el.style; + s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`; + s.transitionDuration = "0s"; + return c; + } +} +function hasCSSTransform(el, root, moveClass) { + const clone = el.cloneNode(); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.forEach((cls) => { + cls.split(/\s+/).forEach((c) => c && clone.classList.remove(c)); + }); + } + moveClass.split(/\s+/).forEach((c) => c && clone.classList.add(c)); + clone.style.display = "none"; + const container = root.nodeType === 1 ? root : root.parentNode; + container.appendChild(clone); + const { hasTransform } = getTransitionInfo(clone); + container.removeChild(clone); + return hasTransform; +} + +const getModelAssigner = (vnode) => { + const fn = vnode.props["onUpdate:modelValue"] || false; + return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn; +}; +function onCompositionStart(e) { + e.target.composing = true; +} +function onCompositionEnd(e) { + const target = e.target; + if (target.composing) { + target.composing = false; + target.dispatchEvent(new Event("input")); + } +} +const assignKey = Symbol("_assign"); +const vModelText = { + created(el, { modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + const castToNumber = number || vnode.props && vnode.props.type === "number"; + addEventListener(el, lazy ? "change" : "input", (e) => { + if (e.target.composing) return; + let domValue = el.value; + if (trim) { + domValue = domValue.trim(); + } + if (castToNumber) { + domValue = looseToNumber(domValue); + } + el[assignKey](domValue); + }); + if (trim) { + addEventListener(el, "change", () => { + el.value = el.value.trim(); + }); + } + if (!lazy) { + addEventListener(el, "compositionstart", onCompositionStart); + addEventListener(el, "compositionend", onCompositionEnd); + addEventListener(el, "change", onCompositionEnd); + } + }, + // set value on mounted so it's after min/max for type="range" + mounted(el, { value }) { + el.value = value == null ? "" : value; + }, + beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (el.composing) return; + const elValue = (number || el.type === "number") && !/^0\d/.test(el.value) ? looseToNumber(el.value) : el.value; + const newValue = value == null ? "" : value; + if (elValue === newValue) { + return; + } + if (document.activeElement === el && el.type !== "range") { + if (lazy && value === oldValue) { + return; + } + if (trim && el.value.trim() === newValue) { + return; + } + } + el.value = newValue; + } +}; +const vModelCheckbox = { + // #4096 array checkboxes need to be deep traversed + deep: true, + created(el, _, vnode) { + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + const modelValue = el._modelValue; + const elementValue = getValue(el); + const checked = el.checked; + const assign = el[assignKey]; + if (isArray(modelValue)) { + const index = looseIndexOf(modelValue, elementValue); + const found = index !== -1; + if (checked && !found) { + assign(modelValue.concat(elementValue)); + } else if (!checked && found) { + const filtered = [...modelValue]; + filtered.splice(index, 1); + assign(filtered); + } + } else if (isSet(modelValue)) { + const cloned = new Set(modelValue); + if (checked) { + cloned.add(elementValue); + } else { + cloned.delete(elementValue); + } + assign(cloned); + } else { + assign(getCheckboxValue(el, checked)); + } + }); + }, + // set initial checked on mount to wait for true-value/false-value + mounted: setChecked, + beforeUpdate(el, binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + setChecked(el, binding, vnode); + } +}; +function setChecked(el, { value, oldValue }, vnode) { + el._modelValue = value; + let checked; + if (isArray(value)) { + checked = looseIndexOf(value, vnode.props.value) > -1; + } else if (isSet(value)) { + checked = value.has(vnode.props.value); + } else { + if (value === oldValue) return; + checked = looseEqual(value, getCheckboxValue(el, true)); + } + if (el.checked !== checked) { + el.checked = checked; + } +} +const vModelRadio = { + created(el, { value }, vnode) { + el.checked = looseEqual(value, vnode.props.value); + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + el[assignKey](getValue(el)); + }); + }, + beforeUpdate(el, { value, oldValue }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (value !== oldValue) { + el.checked = looseEqual(value, vnode.props.value); + } + } +}; +const vModelSelect = { + // <select multiple> value need to be deep traversed + deep: true, + created(el, { value, modifiers: { number } }, vnode) { + const isSetModel = isSet(value); + addEventListener(el, "change", () => { + const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map( + (o) => number ? looseToNumber(getValue(o)) : getValue(o) + ); + el[assignKey]( + el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0] + ); + el._assigning = true; + nextTick(() => { + el._assigning = false; + }); + }); + el[assignKey] = getModelAssigner(vnode); + }, + // set value in mounted & updated because <select> relies on its children + // <option>s. + mounted(el, { value }) { + setSelected(el, value); + }, + beforeUpdate(el, _binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + }, + updated(el, { value }) { + if (!el._assigning) { + setSelected(el, value); + } + } +}; +function setSelected(el, value) { + const isMultiple = el.multiple; + const isArrayValue = isArray(value); + if (isMultiple && !isArrayValue && !isSet(value)) { + !!(process.env.NODE_ENV !== "production") && warn( + `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.` + ); + return; + } + for (let i = 0, l = el.options.length; i < l; i++) { + const option = el.options[i]; + const optionValue = getValue(option); + if (isMultiple) { + if (isArrayValue) { + const optionType = typeof optionValue; + if (optionType === "string" || optionType === "number") { + option.selected = value.some((v) => String(v) === String(optionValue)); + } else { + option.selected = looseIndexOf(value, optionValue) > -1; + } + } else { + option.selected = value.has(optionValue); + } + } else if (looseEqual(getValue(option), value)) { + if (el.selectedIndex !== i) el.selectedIndex = i; + return; + } + } + if (!isMultiple && el.selectedIndex !== -1) { + el.selectedIndex = -1; + } +} +function getValue(el) { + return "_value" in el ? el._value : el.value; +} +function getCheckboxValue(el, checked) { + const key = checked ? "_trueValue" : "_falseValue"; + return key in el ? el[key] : checked; +} +const vModelDynamic = { + created(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "created"); + }, + mounted(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "mounted"); + }, + beforeUpdate(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "beforeUpdate"); + }, + updated(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "updated"); + } +}; +function resolveDynamicModel(tagName, type) { + switch (tagName) { + case "SELECT": + return vModelSelect; + case "TEXTAREA": + return vModelText; + default: + switch (type) { + case "checkbox": + return vModelCheckbox; + case "radio": + return vModelRadio; + default: + return vModelText; + } + } +} +function callModelHook(el, binding, vnode, prevVNode, hook) { + const modelToUse = resolveDynamicModel( + el.tagName, + vnode.props && vnode.props.type + ); + const fn = modelToUse[hook]; + fn && fn(el, binding, vnode, prevVNode); +} +function initVModelForSSR() { + vModelText.getSSRProps = ({ value }) => ({ value }); + vModelRadio.getSSRProps = ({ value }, vnode) => { + if (vnode.props && looseEqual(vnode.props.value, value)) { + return { checked: true }; + } + }; + vModelCheckbox.getSSRProps = ({ value }, vnode) => { + if (isArray(value)) { + if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) { + return { checked: true }; + } + } else if (isSet(value)) { + if (vnode.props && value.has(vnode.props.value)) { + return { checked: true }; + } + } else if (value) { + return { checked: true }; + } + }; + vModelDynamic.getSSRProps = (binding, vnode) => { + if (typeof vnode.type !== "string") { + return; + } + const modelToUse = resolveDynamicModel( + // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase + vnode.type.toUpperCase(), + vnode.props && vnode.props.type + ); + if (modelToUse.getSSRProps) { + return modelToUse.getSSRProps(binding, vnode); + } + }; +} + +const systemModifiers = ["ctrl", "shift", "alt", "meta"]; +const modifierGuards = { + stop: (e) => e.stopPropagation(), + prevent: (e) => e.preventDefault(), + self: (e) => e.target !== e.currentTarget, + ctrl: (e) => !e.ctrlKey, + shift: (e) => !e.shiftKey, + alt: (e) => !e.altKey, + meta: (e) => !e.metaKey, + left: (e) => "button" in e && e.button !== 0, + middle: (e) => "button" in e && e.button !== 1, + right: (e) => "button" in e && e.button !== 2, + exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m)) +}; +const withModifiers = (fn, modifiers) => { + const cache = fn._withMods || (fn._withMods = {}); + const cacheKey = modifiers.join("."); + return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => { + for (let i = 0; i < modifiers.length; i++) { + const guard = modifierGuards[modifiers[i]]; + if (guard && guard(event, modifiers)) return; + } + return fn(event, ...args); + }); +}; +const keyNames = { + esc: "escape", + space: " ", + up: "arrow-up", + left: "arrow-left", + right: "arrow-right", + down: "arrow-down", + delete: "backspace" +}; +const withKeys = (fn, modifiers) => { + const cache = fn._withKeys || (fn._withKeys = {}); + const cacheKey = modifiers.join("."); + return cache[cacheKey] || (cache[cacheKey] = (event) => { + if (!("key" in event)) { + return; + } + const eventKey = hyphenate(event.key); + if (modifiers.some( + (k) => k === eventKey || keyNames[k] === eventKey + )) { + return fn(event); + } + }); +}; + +const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps); +let renderer; +let enabledHydration = false; +function ensureRenderer() { + return renderer || (renderer = createRenderer(rendererOptions)); +} +function ensureHydrationRenderer() { + renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions); + enabledHydration = true; + return renderer; +} +const render = (...args) => { + ensureRenderer().render(...args); +}; +const hydrate = (...args) => { + ensureHydrationRenderer().hydrate(...args); +}; +const createApp = (...args) => { + const app = ensureRenderer().createApp(...args); + if (!!(process.env.NODE_ENV !== "production")) { + injectNativeTagCheck(app); + injectCompilerOptionsCheck(app); + } + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (!container) return; + const component = app._component; + if (!isFunction(component) && !component.render && !component.template) { + component.template = container.innerHTML; + } + if (container.nodeType === 1) { + container.textContent = ""; + } + const proxy = mount(container, false, resolveRootNamespace(container)); + if (container instanceof Element) { + container.removeAttribute("v-cloak"); + container.setAttribute("data-v-app", ""); + } + return proxy; + }; + return app; +}; +const createSSRApp = (...args) => { + const app = ensureHydrationRenderer().createApp(...args); + if (!!(process.env.NODE_ENV !== "production")) { + injectNativeTagCheck(app); + injectCompilerOptionsCheck(app); + } + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (container) { + return mount(container, true, resolveRootNamespace(container)); + } + }; + return app; +}; +function resolveRootNamespace(container) { + if (container instanceof SVGElement) { + return "svg"; + } + if (typeof MathMLElement === "function" && container instanceof MathMLElement) { + return "mathml"; + } +} +function injectNativeTagCheck(app) { + Object.defineProperty(app.config, "isNativeTag", { + value: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag), + writable: false + }); +} +function injectCompilerOptionsCheck(app) { + if (isRuntimeOnly()) { + const isCustomElement = app.config.isCustomElement; + Object.defineProperty(app.config, "isCustomElement", { + get() { + return isCustomElement; + }, + set() { + warn( + `The \`isCustomElement\` config option is deprecated. Use \`compilerOptions.isCustomElement\` instead.` + ); + } + }); + const compilerOptions = app.config.compilerOptions; + const msg = `The \`compilerOptions\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka "full build"). Since you are using the runtime-only build, \`compilerOptions\` must be passed to \`@vue/compiler-dom\` in the build setup instead. +- For vue-loader: pass it via vue-loader's \`compilerOptions\` loader option. +- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader +- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`; + Object.defineProperty(app.config, "compilerOptions", { + get() { + warn(msg); + return compilerOptions; + }, + set() { + warn(msg); + } + }); + } +} +function normalizeContainer(container) { + if (isString(container)) { + const res = document.querySelector(container); + if (!!(process.env.NODE_ENV !== "production") && !res) { + warn( + `Failed to mount app: mount target selector "${container}" returned null.` + ); + } + return res; + } + if (!!(process.env.NODE_ENV !== "production") && window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === "closed") { + warn( + `mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs` + ); + } + return container; +} +let ssrDirectiveInitialized = false; +const initDirectivesForSSR = () => { + if (!ssrDirectiveInitialized) { + ssrDirectiveInitialized = true; + initVModelForSSR(); + initVShowForSSR(); + } +} ; + +export { Transition, TransitionGroup, VueElement, createApp, createSSRApp, defineCustomElement, defineSSRCustomElement, hydrate, initDirectivesForSSR, render, useCssModule, useCssVars, useHost, useShadowRoot, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, withKeys, withModifiers }; diff --git a/node_modules/@vue/runtime-dom/dist/runtime-dom.global.js b/node_modules/@vue/runtime-dom/dist/runtime-dom.global.js new file mode 100644 index 0000000..4bb4b76 --- /dev/null +++ b/node_modules/@vue/runtime-dom/dist/runtime-dom.global.js @@ -0,0 +1,12492 @@ +/** +* @vue/runtime-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +var VueRuntimeDOM = (function (exports) { + 'use strict'; + + /*! #__NO_SIDE_EFFECTS__ */ + // @__NO_SIDE_EFFECTS__ + function makeMap(str) { + const map = /* @__PURE__ */ Object.create(null); + for (const key of str.split(",")) map[key] = 1; + return (val) => val in map; + } + + const EMPTY_OBJ = Object.freeze({}) ; + const EMPTY_ARR = Object.freeze([]) ; + const NOOP = () => { + }; + const NO = () => false; + const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter + (key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); + const isModelListener = (key) => key.startsWith("onUpdate:"); + const extend = Object.assign; + const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } + }; + const hasOwnProperty$1 = Object.prototype.hasOwnProperty; + const hasOwn = (val, key) => hasOwnProperty$1.call(val, key); + const isArray = Array.isArray; + const isMap = (val) => toTypeString(val) === "[object Map]"; + const isSet = (val) => toTypeString(val) === "[object Set]"; + const isDate = (val) => toTypeString(val) === "[object Date]"; + const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; + const isFunction = (val) => typeof val === "function"; + const isString = (val) => typeof val === "string"; + const isSymbol = (val) => typeof val === "symbol"; + const isObject = (val) => val !== null && typeof val === "object"; + const isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); + }; + const objectToString = Object.prototype.toString; + const toTypeString = (value) => objectToString.call(value); + const toRawType = (value) => { + return toTypeString(value).slice(8, -1); + }; + const isPlainObject = (val) => toTypeString(val) === "[object Object]"; + const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; + const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" + ); + const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" + ); + const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; + }; + const camelizeRE = /-(\w)/g; + const camelize = cacheStringFunction( + (str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); + } + ); + const hyphenateRE = /\B([A-Z])/g; + const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() + ); + const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); + }); + const toHandlerKey = cacheStringFunction( + (str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; + } + ); + const hasChanged = (value, oldValue) => !Object.is(value, oldValue); + const invokeArrayFns = (fns, ...arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](...arg); + } + }; + const def = (obj, key, value, writable = false) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + writable, + value + }); + }; + const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; + }; + const toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; + }; + let _globalThis; + const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); + }; + + const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol"; + const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); + + function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } + } + const listDelimiterRE = /;(?![^(]*\))/g; + const propertyDelimiterRE = /:([^]+)/; + const styleCommentRE = /\/\*[^]*?\*\//g; + function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; + } + function stringifyStyle(styles) { + if (!styles) return ""; + if (isString(styles)) return styles; + let ret = ""; + for (const key in styles) { + const value = styles[key]; + if (isString(value) || typeof value === "number") { + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + ret += `${normalizedKey}:${value};`; + } + } + return ret; + } + function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); + } + function normalizeProps(props) { + if (!props) return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; + } + + const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; + const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; + const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; + const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); + const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); + const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); + + const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; + const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); + const isBooleanAttr = /* @__PURE__ */ makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` + ); + function includeBooleanAttr(value) { + return !!value || value === ""; + } + const isKnownHtmlAttr = /* @__PURE__ */ makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` + ); + const isKnownSvgAttr = /* @__PURE__ */ makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` + ); + function isRenderableAttrValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; + } + + const cssVarNameEscapeSymbolsRE = /[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g; + function getEscapedCssVarName(key, doubleEscape) { + return key.replace( + cssVarNameEscapeSymbolsRE, + (s) => `\\${s}` + ); + } + + function looseCompareArrays(a, b) { + if (a.length !== b.length) return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; + } + function looseEqual(a, b) { + if (a === b) return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); + } + function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); + } + + const isRef$1 = (val) => { + return !!(val && val["__v_isRef"] === true); + }; + const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef$1(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val); + }; + const replacer = (_key, val) => { + if (isRef$1(val)) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce( + (entries, [key, val2], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) + }; + } else if (isSymbol(val)) { + return stringifySymbol(val); + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; + }; + const stringifySymbol = (v, i = "") => { + var _a; + return ( + // Symbol.description in es2019+ so we need to cast here to pass + // the lib: es2016 check + isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v + ); + }; + + function normalizeCssVarValue(value) { + if (value == null) { + return "initial"; + } + if (typeof value === "string") { + return value === "" ? " " : value; + } + if (typeof value !== "number" || !Number.isFinite(value)) { + { + console.warn( + "[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:", + value + ); + } + } + return String(value); + } + + function warn$2(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); + } + + let activeEffectScope; + class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal track `on` calls, allow `on` call multiple times + */ + this._on = 0; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this._isPaused = false; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + pause() { + if (this._active) { + this._isPaused = true; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].pause(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].pause(); + } + } + } + /** + * Resumes the effect scope, including all child scopes and effects. + */ + resume() { + if (this._active) { + if (this._isPaused) { + this._isPaused = false; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].resume(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].resume(); + } + } + } + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else { + warn$2(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + if (++this._on === 1) { + this.prevScope = activeEffectScope; + activeEffectScope = this; + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + if (this._on > 0 && --this._on === 0) { + activeEffectScope = this.prevScope; + this.prevScope = void 0; + } + } + stop(fromParent) { + if (this._active) { + this._active = false; + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + this.effects.length = 0; + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + this.cleanups.length = 0; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + this.scopes.length = 0; + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + } + } + } + function effectScope(detached) { + return new EffectScope(detached); + } + function getCurrentScope() { + return activeEffectScope; + } + function onScopeDispose(fn, failSilently = false) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else if (!failSilently) { + warn$2( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } + } + + let activeSub; + const pausedQueueEffects = /* @__PURE__ */ new WeakSet(); + class ReactiveEffect { + constructor(fn) { + this.fn = fn; + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 1 | 4; + /** + * @internal + */ + this.next = void 0; + /** + * @internal + */ + this.cleanup = void 0; + this.scheduler = void 0; + if (activeEffectScope && activeEffectScope.active) { + activeEffectScope.effects.push(this); + } + } + pause() { + this.flags |= 64; + } + resume() { + if (this.flags & 64) { + this.flags &= -65; + if (pausedQueueEffects.has(this)) { + pausedQueueEffects.delete(this); + this.trigger(); + } + } + } + /** + * @internal + */ + notify() { + if (this.flags & 2 && !(this.flags & 32)) { + return; + } + if (!(this.flags & 8)) { + batch(this); + } + } + run() { + if (!(this.flags & 1)) { + return this.fn(); + } + this.flags |= 2; + cleanupEffect(this); + prepareDeps(this); + const prevEffect = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = this; + shouldTrack = true; + try { + return this.fn(); + } finally { + if (activeSub !== this) { + warn$2( + "Active effect was not restored correctly - this is likely a Vue internal bug." + ); + } + cleanupDeps(this); + activeSub = prevEffect; + shouldTrack = prevShouldTrack; + this.flags &= -3; + } + } + stop() { + if (this.flags & 1) { + for (let link = this.deps; link; link = link.nextDep) { + removeSub(link); + } + this.deps = this.depsTail = void 0; + cleanupEffect(this); + this.onStop && this.onStop(); + this.flags &= -2; + } + } + trigger() { + if (this.flags & 64) { + pausedQueueEffects.add(this); + } else if (this.scheduler) { + this.scheduler(); + } else { + this.runIfDirty(); + } + } + /** + * @internal + */ + runIfDirty() { + if (isDirty(this)) { + this.run(); + } + } + get dirty() { + return isDirty(this); + } + } + let batchDepth = 0; + let batchedSub; + let batchedComputed; + function batch(sub, isComputed = false) { + sub.flags |= 8; + if (isComputed) { + sub.next = batchedComputed; + batchedComputed = sub; + return; + } + sub.next = batchedSub; + batchedSub = sub; + } + function startBatch() { + batchDepth++; + } + function endBatch() { + if (--batchDepth > 0) { + return; + } + if (batchedComputed) { + let e = batchedComputed; + batchedComputed = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + e = next; + } + } + let error; + while (batchedSub) { + let e = batchedSub; + batchedSub = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + if (e.flags & 1) { + try { + ; + e.trigger(); + } catch (err) { + if (!error) error = err; + } + } + e = next; + } + } + if (error) throw error; + } + function prepareDeps(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + link.version = -1; + link.prevActiveLink = link.dep.activeLink; + link.dep.activeLink = link; + } + } + function cleanupDeps(sub) { + let head; + let tail = sub.depsTail; + let link = tail; + while (link) { + const prev = link.prevDep; + if (link.version === -1) { + if (link === tail) tail = prev; + removeSub(link); + removeDep(link); + } else { + head = link; + } + link.dep.activeLink = link.prevActiveLink; + link.prevActiveLink = void 0; + link = prev; + } + sub.deps = head; + sub.depsTail = tail; + } + function isDirty(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) { + return true; + } + } + if (sub._dirty) { + return true; + } + return false; + } + function refreshComputed(computed) { + if (computed.flags & 4 && !(computed.flags & 16)) { + return; + } + computed.flags &= -17; + if (computed.globalVersion === globalVersion) { + return; + } + computed.globalVersion = globalVersion; + if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) { + return; + } + computed.flags |= 2; + const dep = computed.dep; + const prevSub = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = computed; + shouldTrack = true; + try { + prepareDeps(computed); + const value = computed.fn(computed._value); + if (dep.version === 0 || hasChanged(value, computed._value)) { + computed.flags |= 128; + computed._value = value; + dep.version++; + } + } catch (err) { + dep.version++; + throw err; + } finally { + activeSub = prevSub; + shouldTrack = prevShouldTrack; + cleanupDeps(computed); + computed.flags &= -3; + } + } + function removeSub(link, soft = false) { + const { dep, prevSub, nextSub } = link; + if (prevSub) { + prevSub.nextSub = nextSub; + link.prevSub = void 0; + } + if (nextSub) { + nextSub.prevSub = prevSub; + link.nextSub = void 0; + } + if (dep.subsHead === link) { + dep.subsHead = nextSub; + } + if (dep.subs === link) { + dep.subs = prevSub; + if (!prevSub && dep.computed) { + dep.computed.flags &= -5; + for (let l = dep.computed.deps; l; l = l.nextDep) { + removeSub(l, true); + } + } + } + if (!soft && !--dep.sc && dep.map) { + dep.map.delete(dep.key); + } + } + function removeDep(link) { + const { prevDep, nextDep } = link; + if (prevDep) { + prevDep.nextDep = nextDep; + link.prevDep = void 0; + } + if (nextDep) { + nextDep.prevDep = prevDep; + link.nextDep = void 0; + } + } + function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const e = new ReactiveEffect(fn); + if (options) { + extend(e, options); + } + try { + e.run(); + } catch (err) { + e.stop(); + throw err; + } + const runner = e.run.bind(e); + runner.effect = e; + return runner; + } + function stop(runner) { + runner.effect.stop(); + } + let shouldTrack = true; + const trackStack = []; + function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; + } + function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; + } + function cleanupEffect(e) { + const { cleanup } = e; + e.cleanup = void 0; + if (cleanup) { + const prevSub = activeSub; + activeSub = void 0; + try { + cleanup(); + } finally { + activeSub = prevSub; + } + } + } + + let globalVersion = 0; + class Link { + constructor(sub, dep) { + this.sub = sub; + this.dep = dep; + this.version = dep.version; + this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; + } + } + class Dep { + // TODO isolatedDeclarations "__v_skip" + constructor(computed) { + this.computed = computed; + this.version = 0; + /** + * Link between this dep and the current active effect + */ + this.activeLink = void 0; + /** + * Doubly linked list representing the subscribing effects (tail) + */ + this.subs = void 0; + /** + * For object property deps cleanup + */ + this.map = void 0; + this.key = void 0; + /** + * Subscriber counter + */ + this.sc = 0; + /** + * @internal + */ + this.__v_skip = true; + { + this.subsHead = void 0; + } + } + track(debugInfo) { + if (!activeSub || !shouldTrack || activeSub === this.computed) { + return; + } + let link = this.activeLink; + if (link === void 0 || link.sub !== activeSub) { + link = this.activeLink = new Link(activeSub, this); + if (!activeSub.deps) { + activeSub.deps = activeSub.depsTail = link; + } else { + link.prevDep = activeSub.depsTail; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + } + addSub(link); + } else if (link.version === -1) { + link.version = this.version; + if (link.nextDep) { + const next = link.nextDep; + next.prevDep = link.prevDep; + if (link.prevDep) { + link.prevDep.nextDep = next; + } + link.prevDep = activeSub.depsTail; + link.nextDep = void 0; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + if (activeSub.deps === link) { + activeSub.deps = next; + } + } + } + if (activeSub.onTrack) { + activeSub.onTrack( + extend( + { + effect: activeSub + }, + debugInfo + ) + ); + } + return link; + } + trigger(debugInfo) { + this.version++; + globalVersion++; + this.notify(debugInfo); + } + notify(debugInfo) { + startBatch(); + try { + if (true) { + for (let head = this.subsHead; head; head = head.nextSub) { + if (head.sub.onTrigger && !(head.sub.flags & 8)) { + head.sub.onTrigger( + extend( + { + effect: head.sub + }, + debugInfo + ) + ); + } + } + } + for (let link = this.subs; link; link = link.prevSub) { + if (link.sub.notify()) { + ; + link.sub.dep.notify(); + } + } + } finally { + endBatch(); + } + } + } + function addSub(link) { + link.dep.sc++; + if (link.sub.flags & 4) { + const computed = link.dep.computed; + if (computed && !link.dep.subs) { + computed.flags |= 4 | 16; + for (let l = computed.deps; l; l = l.nextDep) { + addSub(l); + } + } + const currentTail = link.dep.subs; + if (currentTail !== link) { + link.prevSub = currentTail; + if (currentTail) currentTail.nextSub = link; + } + if (link.dep.subsHead === void 0) { + link.dep.subsHead = link; + } + link.dep.subs = link; + } + } + const targetMap = /* @__PURE__ */ new WeakMap(); + const ITERATE_KEY = Symbol( + "Object iterate" + ); + const MAP_KEY_ITERATE_KEY = Symbol( + "Map keys iterate" + ); + const ARRAY_ITERATE_KEY = Symbol( + "Array iterate" + ); + function track(target, type, key) { + if (shouldTrack && activeSub) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = new Dep()); + dep.map = depsMap; + dep.key = key; + } + { + dep.track({ + target, + type, + key + }); + } + } + } + function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + globalVersion++; + return; + } + const run = (dep) => { + if (dep) { + { + dep.trigger({ + target, + type, + key, + newValue, + oldValue, + oldTarget + }); + } + } + }; + startBatch(); + if (type === "clear") { + depsMap.forEach(run); + } else { + const targetIsArray = isArray(target); + const isArrayIndex = targetIsArray && isIntegerKey(key); + if (targetIsArray && key === "length") { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) { + run(dep); + } + }); + } else { + if (key !== void 0 || depsMap.has(void 0)) { + run(depsMap.get(key)); + } + if (isArrayIndex) { + run(depsMap.get(ARRAY_ITERATE_KEY)); + } + switch (type) { + case "add": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isArrayIndex) { + run(depsMap.get("length")); + } + break; + case "delete": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + run(depsMap.get(ITERATE_KEY)); + } + break; + } + } + } + endBatch(); + } + function getDepFromReactive(object, key) { + const depMap = targetMap.get(object); + return depMap && depMap.get(key); + } + + function reactiveReadArray(array) { + const raw = toRaw(array); + if (raw === array) return raw; + track(raw, "iterate", ARRAY_ITERATE_KEY); + return isShallow(array) ? raw : raw.map(toReactive); + } + function shallowReadArray(arr) { + track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY); + return arr; + } + const arrayInstrumentations = { + __proto__: null, + [Symbol.iterator]() { + return iterator(this, Symbol.iterator, toReactive); + }, + concat(...args) { + return reactiveReadArray(this).concat( + ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x) + ); + }, + entries() { + return iterator(this, "entries", (value) => { + value[1] = toReactive(value[1]); + return value; + }); + }, + every(fn, thisArg) { + return apply(this, "every", fn, thisArg, void 0, arguments); + }, + filter(fn, thisArg) { + return apply(this, "filter", fn, thisArg, (v) => v.map(toReactive), arguments); + }, + find(fn, thisArg) { + return apply(this, "find", fn, thisArg, toReactive, arguments); + }, + findIndex(fn, thisArg) { + return apply(this, "findIndex", fn, thisArg, void 0, arguments); + }, + findLast(fn, thisArg) { + return apply(this, "findLast", fn, thisArg, toReactive, arguments); + }, + findLastIndex(fn, thisArg) { + return apply(this, "findLastIndex", fn, thisArg, void 0, arguments); + }, + // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement + forEach(fn, thisArg) { + return apply(this, "forEach", fn, thisArg, void 0, arguments); + }, + includes(...args) { + return searchProxy(this, "includes", args); + }, + indexOf(...args) { + return searchProxy(this, "indexOf", args); + }, + join(separator) { + return reactiveReadArray(this).join(separator); + }, + // keys() iterator only reads `length`, no optimisation required + lastIndexOf(...args) { + return searchProxy(this, "lastIndexOf", args); + }, + map(fn, thisArg) { + return apply(this, "map", fn, thisArg, void 0, arguments); + }, + pop() { + return noTracking(this, "pop"); + }, + push(...args) { + return noTracking(this, "push", args); + }, + reduce(fn, ...args) { + return reduce(this, "reduce", fn, args); + }, + reduceRight(fn, ...args) { + return reduce(this, "reduceRight", fn, args); + }, + shift() { + return noTracking(this, "shift"); + }, + // slice could use ARRAY_ITERATE but also seems to beg for range tracking + some(fn, thisArg) { + return apply(this, "some", fn, thisArg, void 0, arguments); + }, + splice(...args) { + return noTracking(this, "splice", args); + }, + toReversed() { + return reactiveReadArray(this).toReversed(); + }, + toSorted(comparer) { + return reactiveReadArray(this).toSorted(comparer); + }, + toSpliced(...args) { + return reactiveReadArray(this).toSpliced(...args); + }, + unshift(...args) { + return noTracking(this, "unshift", args); + }, + values() { + return iterator(this, "values", toReactive); + } + }; + function iterator(self, method, wrapValue) { + const arr = shallowReadArray(self); + const iter = arr[method](); + if (arr !== self && !isShallow(self)) { + iter._next = iter.next; + iter.next = () => { + const result = iter._next(); + if (result.value) { + result.value = wrapValue(result.value); + } + return result; + }; + } + return iter; + } + const arrayProto = Array.prototype; + function apply(self, method, fn, thisArg, wrappedRetFn, args) { + const arr = shallowReadArray(self); + const needsWrap = arr !== self && !isShallow(self); + const methodFn = arr[method]; + if (methodFn !== arrayProto[method]) { + const result2 = methodFn.apply(self, args); + return needsWrap ? toReactive(result2) : result2; + } + let wrappedFn = fn; + if (arr !== self) { + if (needsWrap) { + wrappedFn = function(item, index) { + return fn.call(this, toReactive(item), index, self); + }; + } else if (fn.length > 2) { + wrappedFn = function(item, index) { + return fn.call(this, item, index, self); + }; + } + } + const result = methodFn.call(arr, wrappedFn, thisArg); + return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result; + } + function reduce(self, method, fn, args) { + const arr = shallowReadArray(self); + let wrappedFn = fn; + if (arr !== self) { + if (!isShallow(self)) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, toReactive(item), index, self); + }; + } else if (fn.length > 3) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, item, index, self); + }; + } + } + return arr[method](wrappedFn, ...args); + } + function searchProxy(self, method, args) { + const arr = toRaw(self); + track(arr, "iterate", ARRAY_ITERATE_KEY); + const res = arr[method](...args); + if ((res === -1 || res === false) && isProxy(args[0])) { + args[0] = toRaw(args[0]); + return arr[method](...args); + } + return res; + } + function noTracking(self, method, args = []) { + pauseTracking(); + startBatch(); + const res = toRaw(self)[method].apply(self, args); + endBatch(); + resetTracking(); + return res; + } + + const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); + const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) + ); + function hasOwnProperty(key) { + if (!isSymbol(key)) key = String(key); + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); + } + class BaseReactiveHandler { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + if (key === "__v_skip") return target["__v_skip"]; + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the receiver is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + let fn; + if (targetIsArray && (fn = arrayInstrumentations[key])) { + return fn; + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get( + target, + key, + // if this is a proxy wrapping a ref, return methods using the raw ref + // as receiver so that we don't have to call `toRaw` on the ref in all + // its class methods + isRef(target) ? target : receiver + ); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } + } + class MutableReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set( + target, + key, + value, + isRef(target) ? target : receiver + ); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } + } + class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + { + warn$2( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + { + warn$2( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + } + const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); + const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); + const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true); + const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + + const toShallow = (value) => value; + const getProto = (v) => Reflect.getPrototypeOf(v); + function createIterableMethod(method, isReadonly2, isShallow2) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; + } + function createReadonlyMethod(type) { + return function(...args) { + { + const key = args[0] ? `on key "${args[0]}" ` : ``; + warn$2( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; + } + function createInstrumentations(readonly, shallow) { + const instrumentations = { + get(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has } = getProto(rawTarget); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + if (has.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } + }, + get size() { + const target = this["__v_raw"]; + !readonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); + }, + has(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); + }, + forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + !readonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + } + }; + extend( + instrumentations, + readonly ? { + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear") + } : { + add(value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; + }, + set(key, value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + const oldValue = get.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; + }, + delete(key) { + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + const oldValue = get ? get.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + }, + clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = isMap(target) ? new Map(target) : new Set(target) ; + const result = target.clear(); + if (hadItems) { + trigger( + target, + "clear", + void 0, + void 0, + oldTarget + ); + } + return result; + } + } + ); + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator + ]; + iteratorMethods.forEach((method) => { + instrumentations[method] = createIterableMethod(method, readonly, shallow); + }); + return instrumentations; + } + function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = createInstrumentations(isReadonly2, shallow); + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; + } + const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) + }; + const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) + }; + const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) + }; + const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) + }; + function checkIdentityKeys(target, has, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has.call(target, rawKey)) { + const type = toRawType(target); + warn$2( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } + } + + const reactiveMap = /* @__PURE__ */ new WeakMap(); + const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); + const readonlyMap = /* @__PURE__ */ new WeakMap(); + const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); + function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } + } + function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value)); + } + function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); + } + function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); + } + function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); + } + function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); + } + function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + { + warn$2( + `value cannot be made ${isReadonly2 ? "readonly" : "reactive"}: ${String( + target + )}` + ); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; + } + function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); + } + function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); + } + function isShallow(value) { + return !!(value && value["__v_isShallow"]); + } + function isProxy(value) { + return value ? !!value["__v_raw"] : false; + } + function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; + } + function markRaw(value) { + if (!hasOwn(value, "__v_skip") && Object.isExtensible(value)) { + def(value, "__v_skip", true); + } + return value; + } + const toReactive = (value) => isObject(value) ? reactive(value) : value; + const toReadonly = (value) => isObject(value) ? readonly(value) : value; + + function isRef(r) { + return r ? r["__v_isRef"] === true : false; + } + function ref(value) { + return createRef(value, false); + } + function shallowRef(value) { + return createRef(value, true); + } + function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); + } + class RefImpl { + constructor(value, isShallow2) { + this.dep = new Dep(); + this["__v_isRef"] = true; + this["__v_isShallow"] = false; + this._rawValue = isShallow2 ? value : toRaw(value); + this._value = isShallow2 ? value : toReactive(value); + this["__v_isShallow"] = isShallow2; + } + get value() { + { + this.dep.track({ + target: this, + type: "get", + key: "value" + }); + } + return this._value; + } + set value(newValue) { + const oldValue = this._rawValue; + const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue); + newValue = useDirectValue ? newValue : toRaw(newValue); + if (hasChanged(newValue, oldValue)) { + this._rawValue = newValue; + this._value = useDirectValue ? newValue : toReactive(newValue); + { + this.dep.trigger({ + target: this, + type: "set", + key: "value", + newValue, + oldValue + }); + } + } + } + } + function triggerRef(ref2) { + if (ref2.dep) { + { + ref2.dep.trigger({ + target: ref2, + type: "set", + key: "value", + newValue: ref2._value + }); + } + } + } + function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; + } + function toValue(source) { + return isFunction(source) ? source() : unref(source); + } + const shallowUnwrapHandlers = { + get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } + }; + function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); + } + class CustomRefImpl { + constructor(factory) { + this["__v_isRef"] = true; + this._value = void 0; + const dep = this.dep = new Dep(); + const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep)); + this._get = get; + this._set = set; + } + get value() { + return this._value = this._get(); + } + set value(newVal) { + this._set(newVal); + } + } + function customRef(factory) { + return new CustomRefImpl(factory); + } + function toRefs(object) { + if (!isProxy(object)) { + warn$2(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; + } + class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this["__v_isRef"] = true; + this._value = void 0; + } + get value() { + const val = this._object[this._key]; + return this._value = val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } + } + class GetterRefImpl { + constructor(_getter) { + this._getter = _getter; + this["__v_isRef"] = true; + this["__v_isReadonly"] = true; + this._value = void 0; + } + get value() { + return this._value = this._getter(); + } + } + function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (isFunction(source)) { + return new GetterRefImpl(source); + } else if (isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } + } + function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); + } + + class ComputedRefImpl { + constructor(fn, setter, isSSR) { + this.fn = fn; + this.setter = setter; + /** + * @internal + */ + this._value = void 0; + /** + * @internal + */ + this.dep = new Dep(this); + /** + * @internal + */ + this.__v_isRef = true; + // TODO isolatedDeclarations "__v_isReadonly" + // A computed is also a subscriber that tracks other deps + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 16; + /** + * @internal + */ + this.globalVersion = globalVersion - 1; + /** + * @internal + */ + this.next = void 0; + // for backwards compat + this.effect = this; + this["__v_isReadonly"] = !setter; + this.isSSR = isSSR; + } + /** + * @internal + */ + notify() { + this.flags |= 16; + if (!(this.flags & 8) && // avoid infinite self recursion + activeSub !== this) { + batch(this, true); + return true; + } + } + get value() { + const link = this.dep.track({ + target: this, + type: "get", + key: "value" + }) ; + refreshComputed(this); + if (link) { + link.version = this.dep.version; + } + return this._value; + } + set value(newValue) { + if (this.setter) { + this.setter(newValue); + } else { + warn$2("Write operation failed: computed value is readonly"); + } + } + } + function computed$1(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + if (isFunction(getterOrOptions)) { + getter = getterOrOptions; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, isSSR); + if (debugOptions && !isSSR) { + cRef.onTrack = debugOptions.onTrack; + cRef.onTrigger = debugOptions.onTrigger; + } + return cRef; + } + + const TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" + }; + const TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" + }; + + const INITIAL_WATCHER_VALUE = {}; + const cleanupMap = /* @__PURE__ */ new WeakMap(); + let activeWatcher = void 0; + function getCurrentWatcher() { + return activeWatcher; + } + function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) { + if (owner) { + let cleanups = cleanupMap.get(owner); + if (!cleanups) cleanupMap.set(owner, cleanups = []); + cleanups.push(cleanupFn); + } else if (!failSilently) { + warn$2( + `onWatcherCleanup() was called when there was no active watcher to associate with.` + ); + } + } + function watch$1(source, cb, options = EMPTY_OBJ) { + const { immediate, deep, once, scheduler, augmentJob, call } = options; + const warnInvalidSource = (s) => { + (options.onWarn || warn$2)( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const reactiveGetter = (source2) => { + if (deep) return source2; + if (isShallow(source2) || deep === false || deep === 0) + return traverse(source2, 1); + return traverse(source2); + }; + let effect; + let getter; + let cleanup; + let boundCleanup; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return reactiveGetter(s); + } else if (isFunction(s)) { + return call ? call(s, 2) : s(); + } else { + warnInvalidSource(s); + } + }); + } else if (isFunction(source)) { + if (cb) { + getter = call ? () => call(source, 2) : source; + } else { + getter = () => { + if (cleanup) { + pauseTracking(); + try { + cleanup(); + } finally { + resetTracking(); + } + } + const currentEffect = activeWatcher; + activeWatcher = effect; + try { + return call ? call(source, 3, [boundCleanup]) : source(boundCleanup); + } finally { + activeWatcher = currentEffect; + } + }; + } + } else { + getter = NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + const depth = deep === true ? Infinity : deep; + getter = () => traverse(baseGetter(), depth); + } + const scope = getCurrentScope(); + const watchHandle = () => { + effect.stop(); + if (scope && scope.active) { + remove(scope.effects, effect); + } + }; + if (once && cb) { + const _cb = cb; + cb = (...args) => { + _cb(...args); + watchHandle(); + }; + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = (immediateFirstRun) => { + if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) { + if (cleanup) { + cleanup(); + } + const currentWatcher = activeWatcher; + activeWatcher = effect; + try { + const args = [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + boundCleanup + ]; + oldValue = newValue; + call ? call(cb, 3, args) : ( + // @ts-expect-error + cb(...args) + ); + } finally { + activeWatcher = currentWatcher; + } + } + } else { + effect.run(); + } + }; + if (augmentJob) { + augmentJob(job); + } + effect = new ReactiveEffect(getter); + effect.scheduler = scheduler ? () => scheduler(job, false) : job; + boundCleanup = (fn) => onWatcherCleanup(fn, false, effect); + cleanup = effect.onStop = () => { + const cleanups = cleanupMap.get(effect); + if (cleanups) { + if (call) { + call(cleanups, 4); + } else { + for (const cleanup2 of cleanups) cleanup2(); + } + cleanupMap.delete(effect); + } + }; + { + effect.onTrack = options.onTrack; + effect.onTrigger = options.onTrigger; + } + if (cb) { + if (immediate) { + job(true); + } else { + oldValue = effect.run(); + } + } else if (scheduler) { + scheduler(job.bind(null, true), true); + } else { + effect.run(); + } + watchHandle.pause = effect.pause.bind(effect); + watchHandle.resume = effect.resume.bind(effect); + watchHandle.stop = watchHandle; + return watchHandle; + } + function traverse(value, depth = Infinity, seen) { + if (depth <= 0 || !isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + depth--; + if (isRef(value)) { + traverse(value.value, depth, seen); + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, depth, seen); + }); + } else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, seen); + } + for (const key of Object.getOwnPropertySymbols(value)) { + if (Object.prototype.propertyIsEnumerable.call(value, key)) { + traverse(value[key], depth, seen); + } + } + } + return value; + } + + const stack = []; + function pushWarningContext(vnode) { + stack.push(vnode); + } + function popWarningContext() { + stack.pop(); + } + let isWarning = false; + function warn$1(msg, ...args) { + if (isWarning) return; + isWarning = true; + pauseTracking(); + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + // eslint-disable-next-line no-restricted-syntax + msg + args.map((a) => { + var _a, _b; + return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a); + }).join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + resetTracking(); + isWarning = false; + } + function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; + } + function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; + } + function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; + } + function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; + } + function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } + } + function assertNumber(val, type) { + if (val === void 0) { + return; + } else if (typeof val !== "number") { + warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`); + } else if (isNaN(val)) { + warn$1(`${type} is NaN - the duration expression might be incorrect.`); + } + } + + const ErrorCodes = { + "SETUP_FUNCTION": 0, + "0": "SETUP_FUNCTION", + "RENDER_FUNCTION": 1, + "1": "RENDER_FUNCTION", + "NATIVE_EVENT_HANDLER": 5, + "5": "NATIVE_EVENT_HANDLER", + "COMPONENT_EVENT_HANDLER": 6, + "6": "COMPONENT_EVENT_HANDLER", + "VNODE_HOOK": 7, + "7": "VNODE_HOOK", + "DIRECTIVE_HOOK": 8, + "8": "DIRECTIVE_HOOK", + "TRANSITION_HOOK": 9, + "9": "TRANSITION_HOOK", + "APP_ERROR_HANDLER": 10, + "10": "APP_ERROR_HANDLER", + "APP_WARN_HANDLER": 11, + "11": "APP_WARN_HANDLER", + "FUNCTION_REF": 12, + "12": "FUNCTION_REF", + "ASYNC_COMPONENT_LOADER": 13, + "13": "ASYNC_COMPONENT_LOADER", + "SCHEDULER": 14, + "14": "SCHEDULER", + "COMPONENT_UPDATE": 15, + "15": "COMPONENT_UPDATE", + "APP_UNMOUNT_CLEANUP": 16, + "16": "APP_UNMOUNT_CLEANUP" + }; + const ErrorTypeStrings$1 = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush", + [15]: "component update", + [16]: "app unmount cleanup function" + }; + function callWithErrorHandling(fn, instance, type, args) { + try { + return args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } + } + function callWithAsyncErrorHandling(fn, instance, type, args) { + if (isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + if (isArray(fn)) { + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; + } else { + warn$1( + `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}` + ); + } + } + function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = ErrorTypeStrings$1[type] ; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + if (errorHandler) { + pauseTracking(); + callWithErrorHandling(errorHandler, null, 10, [ + err, + exposedInstance, + errorInfo + ]); + resetTracking(); + return; + } + } + logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction); + } + function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) { + { + const info = ErrorTypeStrings$1[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } + } + + const queue = []; + let flushIndex = -1; + const pendingPostFlushCbs = []; + let activePostFlushCbs = null; + let postFlushIndex = 0; + const resolvedPromise = /* @__PURE__ */ Promise.resolve(); + let currentFlushPromise = null; + const RECURSION_LIMIT = 100; + function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; + } + function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.flags & 2) { + start = middle + 1; + } else { + end = middle; + } + } + return start; + } + function queueJob(job) { + if (!(job.flags & 1)) { + const jobId = getId(job); + const lastJob = queue[queue.length - 1]; + if (!lastJob || // fast path when the job id is larger than the tail + !(job.flags & 2) && jobId >= getId(lastJob)) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(jobId), 0, job); + } + job.flags |= 1; + queueFlush(); + } + } + function queueFlush() { + if (!currentFlushPromise) { + currentFlushPromise = resolvedPromise.then(flushJobs); + } + } + function queuePostFlushCb(cb) { + if (!isArray(cb)) { + if (activePostFlushCbs && cb.id === -1) { + activePostFlushCbs.splice(postFlushIndex + 1, 0, cb); + } else if (!(cb.flags & 1)) { + pendingPostFlushCbs.push(cb); + cb.flags |= 1; + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); + } + function flushPreFlushCbs(instance, seen, i = flushIndex + 1) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.flags & 2) { + if (instance && cb.id !== instance.uid) { + continue; + } + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + queue.splice(i, 1); + i--; + if (cb.flags & 4) { + cb.flags &= -2; + } + cb(); + if (!(cb.flags & 4)) { + cb.flags &= -2; + } + } + } + } + function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)].sort( + (a, b) => getId(a) - getId(b) + ); + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + const cb = activePostFlushCbs[postFlushIndex]; + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + if (cb.flags & 4) { + cb.flags &= -2; + } + if (!(cb.flags & 8)) cb(); + cb.flags &= -2; + } + activePostFlushCbs = null; + postFlushIndex = 0; + } + } + const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id; + function flushJobs(seen) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + const check = (job) => checkRecursiveUpdates(seen, job) ; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && !(job.flags & 8)) { + if (check(job)) { + continue; + } + if (job.flags & 4) { + job.flags &= ~1; + } + callWithErrorHandling( + job, + job.i, + job.i ? 15 : 14 + ); + if (!(job.flags & 4)) { + job.flags &= ~1; + } + } + } + } finally { + for (; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job) { + job.flags &= -2; + } + } + flushIndex = -1; + queue.length = 0; + flushPostFlushCbs(seen); + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } + } + function checkRecursiveUpdates(seen, fn) { + const count = seen.get(fn) || 0; + if (count > RECURSION_LIMIT) { + const instance = fn.i; + const componentName = instance && getComponentName(instance.type); + handleError( + `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`, + null, + 10 + ); + return true; + } + seen.set(fn, count + 1); + return false; + } + + let isHmrUpdating = false; + const hmrDirtyComponents = /* @__PURE__ */ new Map(); + { + getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; + } + const map = /* @__PURE__ */ new Map(); + function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); + } + function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); + } + function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: /* @__PURE__ */ new Set() + }); + return true; + } + function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; + } + function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + record.initialDef.render = newRender; + [...record.instances].forEach((instance) => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + isHmrUpdating = true; + instance.update(); + isHmrUpdating = false; + }); + } + function reload(id, newComp) { + const record = map.get(id); + if (!record) return; + newComp = normalizeClassComponent(newComp); + updateComponentDef(record.initialDef, newComp); + const instances = [...record.instances]; + for (let i = 0; i < instances.length; i++) { + const instance = instances[i]; + const oldComp = normalizeClassComponent(instance.type); + let dirtyInstances = hmrDirtyComponents.get(oldComp); + if (!dirtyInstances) { + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set()); + } + dirtyInstances.add(instance); + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); + instance.appContext.optionsCache.delete(instance.type); + if (instance.ceReload) { + dirtyInstances.add(instance); + instance.ceReload(newComp.styles); + dirtyInstances.delete(instance); + } else if (instance.parent) { + queueJob(() => { + isHmrUpdating = true; + instance.parent.update(); + isHmrUpdating = false; + dirtyInstances.delete(instance); + }); + } else if (instance.appContext.reload) { + instance.appContext.reload(); + } else if (typeof window !== "undefined") { + window.location.reload(); + } else { + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); + } + if (instance.root.ce && instance !== instance.root) { + instance.root.ce._removeChildStyle(oldComp); + } + } + queuePostFlushCb(() => { + hmrDirtyComponents.clear(); + }); + } + function updateComponentDef(oldComp, newComp) { + extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== "__file" && !(key in newComp)) { + delete oldComp[key]; + } + } + } + function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } catch (e) { + console.error(e); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); + } + }; + } + + let devtools$1; + let buffer = []; + let devtoolsNotInstalled = false; + function emit$1(event, ...args) { + if (devtools$1) { + devtools$1.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } + } + function setDevtoolsHook$1(hook, target) { + var _a, _b; + devtools$1 = hook; + if (devtools$1) { + devtools$1.enabled = true; + buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + // eslint-disable-next-line no-restricted-syntax + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook$1(newHook, target); + }); + setTimeout(() => { + if (!devtools$1) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3e3); + } else { + devtoolsNotInstalled = true; + buffer = []; + } + } + function devtoolsInitApp(app, version) { + emit$1("app:init" /* APP_INIT */, app, version, { + Fragment, + Text, + Comment, + Static + }); + } + function devtoolsUnmountApp(app) { + emit$1("app:unmount" /* APP_UNMOUNT */, app); + } + const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook("component:added" /* COMPONENT_ADDED */); + const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */); + const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( + "component:removed" /* COMPONENT_REMOVED */ + ); + const devtoolsComponentRemoved = (component) => { + if (devtools$1 && typeof devtools$1.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !devtools$1.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } + }; + /*! #__NO_SIDE_EFFECTS__ */ + // @__NO_SIDE_EFFECTS__ + function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; + } + const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook("perf:start" /* PERFORMANCE_START */); + const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook("perf:end" /* PERFORMANCE_END */); + function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; + } + function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit" /* COMPONENT_EMIT */, + component.appContext.app, + component, + event, + params + ); + } + + let currentRenderingInstance = null; + let currentScopeId = null; + function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; + } + function pushScopeId(id) { + currentScopeId = id; + } + function popScopeId() { + currentScopeId = null; + } + const withScopeId = (_id) => withCtx; + function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + { + devtoolsComponentUpdated(ctx); + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; + } + + function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn$1("Do not use built-in directive ids as custom directive id: " + name); + } + } + function withDirectives(vnode, directives) { + if (currentRenderingInstance === null) { + warn$1(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getComponentPublicInstance(currentRenderingInstance); + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; + if (dir) { + if (isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; + } + function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + resetTracking(); + } + } + } + + const TeleportEndKey = Symbol("_vte"); + const isTeleport = (type) => type.__isTeleport; + const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ""); + const isTeleportDeferred = (props) => props && (props.defer || props.defer === ""); + const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement; + const isTargetMathML = (target) => typeof MathMLElement === "function" && target instanceof MathMLElement; + const resolveTarget = (props, select) => { + const targetSelector = props && props.to; + if (isString(targetSelector)) { + if (!select) { + warn$1( + `Current renderer does not support string target for Teleports. (missing querySelector renderer option)` + ); + return null; + } else { + const target = select(targetSelector); + if (!target && !isTeleportDisabled(props)) { + warn$1( + `Failed to locate Teleport target with selector "${targetSelector}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.` + ); + } + return target; + } + } else { + if (!targetSelector && !isTeleportDisabled(props)) { + warn$1(`Invalid Teleport target: ${targetSelector}`); + } + return targetSelector; + } + }; + const TeleportImpl = { + name: "Teleport", + __isTeleport: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) { + const { + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + o: { insert, querySelector, createText, createComment } + } = internals; + const disabled = isTeleportDisabled(n2.props); + let { shapeFlag, children, dynamicChildren } = n2; + if (isHmrUpdating) { + optimized = false; + dynamicChildren = null; + } + if (n1 == null) { + const placeholder = n2.el = createComment("teleport start") ; + const mainAnchor = n2.anchor = createComment("teleport end") ; + insert(placeholder, container, anchor); + insert(mainAnchor, container, anchor); + const mount = (container2, anchor2) => { + if (shapeFlag & 16) { + if (parentComponent && parentComponent.isCE) { + parentComponent.ce._teleportTarget = container2; + } + mountChildren( + children, + container2, + anchor2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const mountToTarget = () => { + const target = n2.target = resolveTarget(n2.props, querySelector); + const targetAnchor = prepareAnchor(target, n2, createText, insert); + if (target) { + if (namespace !== "svg" && isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace !== "mathml" && isTargetMathML(target)) { + namespace = "mathml"; + } + if (!disabled) { + mount(target, targetAnchor); + updateCssVars(n2, false); + } + } else if (!disabled) { + warn$1( + "Invalid Teleport target on mount:", + target, + `(${typeof target})` + ); + } + }; + if (disabled) { + mount(container, mainAnchor); + updateCssVars(n2, true); + } + if (isTeleportDeferred(n2.props)) { + n2.el.__isMounted = false; + queuePostRenderEffect(() => { + mountToTarget(); + delete n2.el.__isMounted; + }, parentSuspense); + } else { + mountToTarget(); + } + } else { + if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) { + queuePostRenderEffect(() => { + TeleportImpl.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + }, parentSuspense); + return; + } + n2.el = n1.el; + n2.targetStart = n1.targetStart; + const mainAnchor = n2.anchor = n1.anchor; + const target = n2.target = n1.target; + const targetAnchor = n2.targetAnchor = n1.targetAnchor; + const wasDisabled = isTeleportDisabled(n1.props); + const currentContainer = wasDisabled ? container : target; + const currentAnchor = wasDisabled ? mainAnchor : targetAnchor; + if (namespace === "svg" || isTargetSVG(target)) { + namespace = "svg"; + } else if (namespace === "mathml" || isTargetMathML(target)) { + namespace = "mathml"; + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + currentContainer, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + traverseStaticChildren(n1, n2, false); + } else if (!optimized) { + patchChildren( + n1, + n2, + currentContainer, + currentAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + false + ); + } + if (disabled) { + if (!wasDisabled) { + moveTeleport( + n2, + container, + mainAnchor, + internals, + 1 + ); + } else { + if (n2.props && n1.props && n2.props.to !== n1.props.to) { + n2.props.to = n1.props.to; + } + } + } else { + if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { + const nextTarget = n2.target = resolveTarget( + n2.props, + querySelector + ); + if (nextTarget) { + moveTeleport( + n2, + nextTarget, + null, + internals, + 0 + ); + } else { + warn$1( + "Invalid Teleport target on update:", + target, + `(${typeof target})` + ); + } + } else if (wasDisabled) { + moveTeleport( + n2, + target, + targetAnchor, + internals, + 1 + ); + } + } + updateCssVars(n2, disabled); + } + }, + remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) { + const { + shapeFlag, + children, + anchor, + targetStart, + targetAnchor, + target, + props + } = vnode; + if (target) { + hostRemove(targetStart); + hostRemove(targetAnchor); + } + doRemove && hostRemove(anchor); + if (shapeFlag & 16) { + const shouldRemove = doRemove || !isTeleportDisabled(props); + for (let i = 0; i < children.length; i++) { + const child = children[i]; + unmount( + child, + parentComponent, + parentSuspense, + shouldRemove, + !!child.dynamicChildren + ); + } + } + }, + move: moveTeleport, + hydrate: hydrateTeleport + }; + function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) { + if (moveType === 0) { + insert(vnode.targetAnchor, container, parentAnchor); + } + const { el, anchor, shapeFlag, children, props } = vnode; + const isReorder = moveType === 2; + if (isReorder) { + insert(el, container, parentAnchor); + } + if (!isReorder || isTeleportDisabled(props)) { + if (shapeFlag & 16) { + for (let i = 0; i < children.length; i++) { + move( + children[i], + container, + parentAnchor, + 2 + ); + } + } + } + if (isReorder) { + insert(anchor, container, parentAnchor); + } + } + function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { + o: { nextSibling, parentNode, querySelector, insert, createText } + }, hydrateChildren) { + const target = vnode.target = resolveTarget( + vnode.props, + querySelector + ); + if (target) { + const disabled = isTeleportDisabled(vnode.props); + const targetNode = target._lpa || target.firstChild; + if (vnode.shapeFlag & 16) { + if (disabled) { + vnode.anchor = hydrateChildren( + nextSibling(node), + vnode, + parentNode(node), + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + vnode.targetStart = targetNode; + vnode.targetAnchor = targetNode && nextSibling(targetNode); + } else { + vnode.anchor = nextSibling(node); + let targetAnchor = targetNode; + while (targetAnchor) { + if (targetAnchor && targetAnchor.nodeType === 8) { + if (targetAnchor.data === "teleport start anchor") { + vnode.targetStart = targetAnchor; + } else if (targetAnchor.data === "teleport anchor") { + vnode.targetAnchor = targetAnchor; + target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); + break; + } + } + targetAnchor = nextSibling(targetAnchor); + } + if (!vnode.targetAnchor) { + prepareAnchor(target, vnode, createText, insert); + } + hydrateChildren( + targetNode && nextSibling(targetNode), + vnode, + target, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } + updateCssVars(vnode, disabled); + } + return vnode.anchor && nextSibling(vnode.anchor); + } + const Teleport = TeleportImpl; + function updateCssVars(vnode, isDisabled) { + const ctx = vnode.ctx; + if (ctx && ctx.ut) { + let node, anchor; + if (isDisabled) { + node = vnode.el; + anchor = vnode.anchor; + } else { + node = vnode.targetStart; + anchor = vnode.targetAnchor; + } + while (node && node !== anchor) { + if (node.nodeType === 1) node.setAttribute("data-v-owner", ctx.uid); + node = node.nextSibling; + } + ctx.ut(); + } + } + function prepareAnchor(target, vnode, createText, insert) { + const targetStart = vnode.targetStart = createText(""); + const targetAnchor = vnode.targetAnchor = createText(""); + targetStart[TeleportEndKey] = targetAnchor; + if (target) { + insert(targetStart, target); + insert(targetAnchor, target); + } + return targetAnchor; + } + + const leaveCbKey = Symbol("_leaveCb"); + const enterCbKey$1 = Symbol("_enterCb"); + function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; + } + const TransitionHookValidator = [Function, Array]; + const BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator + }; + const recursiveGetSubtree = (instance) => { + const subTree = instance.subTree; + return subTree.component ? recursiveGetSubtree(subTree.component) : subTree; + }; + const BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + const child = findNonCommentChild(children); + const rawProps = toRaw(props); + const { mode } = rawProps; + if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") { + warn$1(`invalid <transition> mode: ${mode}`); + } + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getInnerChild$1(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + let enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance, + // #11061, ensure enterHooks is fresh after clone + (hooks) => enterHooks = hooks + ); + if (innerChild.type !== Comment) { + setTransitionHooks(innerChild, enterHooks); + } + let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree); + if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) { + let leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in" && innerChild.type !== Comment) { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (!(instance.job.flags & 8)) { + instance.update(); + } + delete leavingHooks.afterLeave; + oldInnerChild = void 0; + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el[leaveCbKey] = () => { + earlyRemove(); + el[leaveCbKey] = void 0; + delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + enterHooks.delayedLeave = () => { + delayedLeave(); + delete enterHooks.delayedLeave; + oldInnerChild = void 0; + }; + }; + } else { + oldInnerChild = void 0; + } + } else if (oldInnerChild) { + oldInnerChild = void 0; + } + return child; + }; + } + }; + function findNonCommentChild(children) { + let child = children[0]; + if (children.length > 1) { + let hasFound = false; + for (const c of children) { + if (c.type !== Comment) { + if (hasFound) { + warn$1( + "<transition> can only be used on a single element or component. Use <transition-group> for lists." + ); + break; + } + child = c; + hasFound = true; + } + } + } + return child; + } + const BaseTransition = BaseTransitionImpl; + function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; + } + function resolveTransitionHooks(vnode, props, state, instance, postClone) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook(hook, args); + if (isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el[leaveCbKey]) { + el[leaveCbKey]( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { + leavingVNode.el[leaveCbKey](); + } + callHook(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + const done = el[enterCbKey$1] = (cancelled) => { + if (called) return; + called = true; + if (cancelled) { + callHook(cancelHook, [el]); + } else { + callHook(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el[enterCbKey$1] = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove) { + const key2 = String(vnode.key); + if (el[enterCbKey$1]) { + el[enterCbKey$1]( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove(); + } + callHook(onBeforeLeave, [el]); + let called = false; + const done = el[leaveCbKey] = (cancelled) => { + if (called) return; + called = true; + remove(); + if (cancelled) { + callHook(onLeaveCancelled, [el]); + } else { + callHook(onAfterLeave, [el]); + } + el[leaveCbKey] = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + const hooks2 = resolveTransitionHooks( + vnode2, + props, + state, + instance, + postClone + ); + if (postClone) postClone(hooks2); + return hooks2; + } + }; + return hooks; + } + function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } + } + function getInnerChild$1(vnode) { + if (!isKeepAlive(vnode)) { + if (isTeleport(vnode.type) && vnode.children) { + return findNonCommentChild(vnode.children); + } + return vnode; + } + if (vnode.component) { + return vnode.component.subTree; + } + const { shapeFlag, children } = vnode; + if (children) { + if (shapeFlag & 16) { + return children[0]; + } + if (shapeFlag & 32 && isFunction(children.default)) { + return children.default(); + } + } + } + function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + vnode.transition = hooks; + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } + } + function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; + } + + /*! #__NO_SIDE_EFFECTS__ */ + // @__NO_SIDE_EFFECTS__ + function defineComponent(options, extraOptions) { + return isFunction(options) ? ( + // #8236: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; + } + + function useId() { + const i = getCurrentInstance(); + if (i) { + return (i.appContext.config.idPrefix || "v") + "-" + i.ids[0] + i.ids[1]++; + } else { + warn$1( + `useId() is called when there is no active component instance to be associated with.` + ); + } + return ""; + } + function markAsyncBoundary(instance) { + instance.ids = [instance.ids[0] + instance.ids[2]++ + "-", 0, 0]; + } + + const knownTemplateRefs = /* @__PURE__ */ new WeakSet(); + function useTemplateRef(key) { + const i = getCurrentInstance(); + const r = shallowRef(null); + if (i) { + const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs; + let desc; + if ((desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) { + warn$1(`useTemplateRef('${key}') already exists.`); + } else { + Object.defineProperty(refs, key, { + enumerable: true, + get: () => r.value, + set: (val) => r.value = val + }); + } + } else { + warn$1( + `useTemplateRef() is called when there is no active component instance to be associated with.` + ); + } + const ret = readonly(r) ; + { + knownTemplateRefs.add(ret); + } + return ret; + } + + function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { + if (isArray(rawRef)) { + rawRef.forEach( + (r, i) => setRef( + r, + oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), + parentSuspense, + vnode, + isUnmount + ) + ); + return; + } + if (isAsyncWrapper(vnode) && !isUnmount) { + if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) { + setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree); + } + return; + } + const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el; + const value = isUnmount ? null : refValue; + const { i: owner, r: ref } = rawRef; + if (!owner) { + warn$1( + `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.` + ); + return; + } + const oldRef = oldRawRef && oldRawRef.r; + const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs; + const setupState = owner.setupState; + const rawSetupState = toRaw(setupState); + const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => { + { + if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) { + warn$1( + `Template ref "${key}" used on a non-ref value. It will not work in the production build.` + ); + } + if (knownTemplateRefs.has(rawSetupState[key])) { + return false; + } + } + return hasOwn(rawSetupState, key); + }; + if (oldRef != null && oldRef !== ref) { + if (isString(oldRef)) { + refs[oldRef] = null; + if (canSetSetupRef(oldRef)) { + setupState[oldRef] = null; + } + } else if (isRef(oldRef)) { + oldRef.value = null; + } + } + if (isFunction(ref)) { + callWithErrorHandling(ref, owner, 12, [value, refs]); + } else { + const _isString = isString(ref); + const _isRef = isRef(ref); + if (_isString || _isRef) { + const doSet = () => { + if (rawRef.f) { + const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value; + if (isUnmount) { + isArray(existing) && remove(existing, refValue); + } else { + if (!isArray(existing)) { + if (_isString) { + refs[ref] = [refValue]; + if (canSetSetupRef(ref)) { + setupState[ref] = refs[ref]; + } + } else { + ref.value = [refValue]; + if (rawRef.k) refs[rawRef.k] = ref.value; + } + } else if (!existing.includes(refValue)) { + existing.push(refValue); + } + } + } else if (_isString) { + refs[ref] = value; + if (canSetSetupRef(ref)) { + setupState[ref] = value; + } + } else if (_isRef) { + ref.value = value; + if (rawRef.k) refs[rawRef.k] = value; + } else { + warn$1("Invalid template ref type:", ref, `(${typeof ref})`); + } + }; + if (value) { + doSet.id = -1; + queuePostRenderEffect(doSet, parentSuspense); + } else { + doSet(); + } + } else { + warn$1("Invalid template ref type:", ref, `(${typeof ref})`); + } + } + } + + let hasLoggedMismatchError = false; + const logMismatchError = () => { + if (hasLoggedMismatchError) { + return; + } + console.error("Hydration completed but contains mismatches."); + hasLoggedMismatchError = true; + }; + const isSVGContainer = (container) => container.namespaceURI.includes("svg") && container.tagName !== "foreignObject"; + const isMathMLContainer = (container) => container.namespaceURI.includes("MathML"); + const getContainerType = (container) => { + if (container.nodeType !== 1) return void 0; + if (isSVGContainer(container)) return "svg"; + if (isMathMLContainer(container)) return "mathml"; + return void 0; + }; + const isComment = (node) => node.nodeType === 8; + function createHydrationFunctions(rendererInternals) { + const { + mt: mountComponent, + p: patch, + o: { + patchProp, + createText, + nextSibling, + parentNode, + remove, + insert, + createComment + } + } = rendererInternals; + const hydrate = (vnode, container) => { + if (!container.hasChildNodes()) { + warn$1( + `Attempting to hydrate existing markup but container is empty. Performing full mount instead.` + ); + patch(null, vnode, container); + flushPostFlushCbs(); + container._vnode = vnode; + return; + } + hydrateNode(container.firstChild, vnode, null, null, null); + flushPostFlushCbs(); + container._vnode = vnode; + }; + const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => { + optimized = optimized || !!vnode.dynamicChildren; + const isFragmentStart = isComment(node) && node.data === "["; + const onMismatch = () => handleMismatch( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + isFragmentStart + ); + const { type, ref, shapeFlag, patchFlag } = vnode; + let domType = node.nodeType; + vnode.el = node; + { + def(node, "__vnode", vnode, true); + def(node, "__vueParentComponent", parentComponent, true); + } + if (patchFlag === -2) { + optimized = false; + vnode.dynamicChildren = null; + } + let nextNode = null; + switch (type) { + case Text: + if (domType !== 3) { + if (vnode.children === "") { + insert(vnode.el = createText(""), parentNode(node), node); + nextNode = node; + } else { + nextNode = onMismatch(); + } + } else { + if (node.data !== vnode.children) { + warn$1( + `Hydration text mismatch in`, + node.parentNode, + ` + - rendered on server: ${JSON.stringify( + node.data + )} + - expected on client: ${JSON.stringify(vnode.children)}` + ); + logMismatchError(); + node.data = vnode.children; + } + nextNode = nextSibling(node); + } + break; + case Comment: + if (isTemplateNode(node)) { + nextNode = nextSibling(node); + replaceNode( + vnode.el = node.content.firstChild, + node, + parentComponent + ); + } else if (domType !== 8 || isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = nextSibling(node); + } + break; + case Static: + if (isFragmentStart) { + node = nextSibling(node); + domType = node.nodeType; + } + if (domType === 1 || domType === 3) { + nextNode = node; + const needToAdoptContent = !vnode.children.length; + for (let i = 0; i < vnode.staticCount; i++) { + if (needToAdoptContent) + vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data; + if (i === vnode.staticCount - 1) { + vnode.anchor = nextNode; + } + nextNode = nextSibling(nextNode); + } + return isFragmentStart ? nextSibling(nextNode) : nextNode; + } else { + onMismatch(); + } + break; + case Fragment: + if (!isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = hydrateFragment( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + break; + default: + if (shapeFlag & 1) { + if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) { + nextNode = onMismatch(); + } else { + nextNode = hydrateElement( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } else if (shapeFlag & 6) { + vnode.slotScopeIds = slotScopeIds; + const container = parentNode(node); + if (isFragmentStart) { + nextNode = locateClosingAnchor(node); + } else if (isComment(node) && node.data === "teleport start") { + nextNode = locateClosingAnchor(node, node.data, "teleport end"); + } else { + nextNode = nextSibling(node); + } + mountComponent( + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + optimized + ); + if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) { + let subTree; + if (isFragmentStart) { + subTree = createVNode(Fragment); + subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild; + } else { + subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div"); + } + subTree.el = node; + vnode.component.subTree = subTree; + } + } else if (shapeFlag & 64) { + if (domType !== 8) { + nextNode = onMismatch(); + } else { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized, + rendererInternals, + hydrateChildren + ); + } + } else if (shapeFlag & 128) { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + getContainerType(parentNode(node)), + slotScopeIds, + optimized, + rendererInternals, + hydrateNode + ); + } else { + warn$1("Invalid HostVNode type:", type, `(${typeof type})`); + } + } + if (ref != null) { + setRef(ref, null, parentSuspense, vnode); + } + return nextNode; + }; + const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!vnode.dynamicChildren; + const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode; + const forcePatch = type === "input" || type === "option"; + { + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + let needCallTransitionHooks = false; + if (isTemplateNode(el)) { + needCallTransitionHooks = needTransition( + null, + // no need check parentSuspense in hydration + transition + ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear; + const content = el.content.firstChild; + if (needCallTransitionHooks) { + const cls = content.getAttribute("class"); + if (cls) content.$cls = cls; + transition.beforeEnter(content); + } + replaceNode(content, el, parentComponent); + vnode.el = el = content; + } + if (shapeFlag & 16 && // skip if element has innerHTML / textContent + !(props && (props.innerHTML || props.textContent))) { + let next = hydrateChildren( + el.firstChild, + vnode, + el, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + let hasWarned = false; + while (next) { + if (!isMismatchAllowed(el, 1 /* CHILDREN */)) { + if (!hasWarned) { + warn$1( + `Hydration children mismatch on`, + el, + ` +Server rendered element contains more child nodes than client vdom.` + ); + hasWarned = true; + } + logMismatchError(); + } + const cur = next; + next = next.nextSibling; + remove(cur); + } + } else if (shapeFlag & 8) { + let clientText = vnode.children; + if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) { + clientText = clientText.slice(1); + } + if (el.textContent !== clientText) { + if (!isMismatchAllowed(el, 0 /* TEXT */)) { + warn$1( + `Hydration text content mismatch on`, + el, + ` + - rendered on server: ${el.textContent} + - expected on client: ${vnode.children}` + ); + logMismatchError(); + } + el.textContent = vnode.children; + } + } + if (props) { + { + const isCustomElement = el.tagName.includes("-"); + for (const key in props) { + if (// #11189 skip if this node has directives that have created hooks + // as it could have mutated the DOM in any possible way + !(dirs && dirs.some((d) => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent)) { + logMismatchError(); + } + if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers + key[0] === "." || isCustomElement) { + patchProp(el, key, null, props[key], void 0, parentComponent); + } + } + } + } + let vnodeHooks; + if (vnodeHooks = props && props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHooks, parentComponent, vnode); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) { + queueEffectWithSuspense(() => { + vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + } + return el.nextSibling; + }; + const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!parentVNode.dynamicChildren; + const children = parentVNode.children; + const l = children.length; + let hasWarned = false; + for (let i = 0; i < l; i++) { + const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]); + const isText = vnode.type === Text; + if (node) { + if (isText && !optimized) { + if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) { + insert( + createText( + node.data.slice(vnode.children.length) + ), + container, + nextSibling(node) + ); + node.data = vnode.children; + } + } + node = hydrateNode( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } else if (isText && !vnode.children) { + insert(vnode.el = createText(""), container); + } else { + if (!isMismatchAllowed(container, 1 /* CHILDREN */)) { + if (!hasWarned) { + warn$1( + `Hydration children mismatch on`, + container, + ` +Server rendered element contains fewer child nodes than client vdom.` + ); + hasWarned = true; + } + logMismatchError(); + } + patch( + null, + vnode, + container, + null, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + } + } + return node; + }; + const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + const { slotScopeIds: fragmentSlotScopeIds } = vnode; + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + const container = parentNode(node); + const next = hydrateChildren( + nextSibling(node), + vnode, + container, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + if (next && isComment(next) && next.data === "]") { + return nextSibling(vnode.anchor = next); + } else { + logMismatchError(); + insert(vnode.anchor = createComment(`]`), container, next); + return next; + } + }; + const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => { + if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) { + warn$1( + `Hydration node mismatch: +- rendered on server:`, + node, + node.nodeType === 3 ? `(text)` : isComment(node) && node.data === "[" ? `(start of fragment)` : ``, + ` +- expected on client:`, + vnode.type + ); + logMismatchError(); + } + vnode.el = null; + if (isFragment) { + const end = locateClosingAnchor(node); + while (true) { + const next2 = nextSibling(node); + if (next2 && next2 !== end) { + remove(next2); + } else { + break; + } + } + } + const next = nextSibling(node); + const container = parentNode(node); + remove(node); + patch( + null, + vnode, + container, + next, + parentComponent, + parentSuspense, + getContainerType(container), + slotScopeIds + ); + if (parentComponent) { + parentComponent.vnode.el = vnode.el; + updateHOCHostEl(parentComponent, vnode.el); + } + return next; + }; + const locateClosingAnchor = (node, open = "[", close = "]") => { + let match = 0; + while (node) { + node = nextSibling(node); + if (node && isComment(node)) { + if (node.data === open) match++; + if (node.data === close) { + if (match === 0) { + return nextSibling(node); + } else { + match--; + } + } + } + } + return node; + }; + const replaceNode = (newNode, oldNode, parentComponent) => { + const parentNode2 = oldNode.parentNode; + if (parentNode2) { + parentNode2.replaceChild(newNode, oldNode); + } + let parent = parentComponent; + while (parent) { + if (parent.vnode.el === oldNode) { + parent.vnode.el = parent.subTree.el = newNode; + } + parent = parent.parent; + } + }; + const isTemplateNode = (node) => { + return node.nodeType === 1 && node.tagName === "TEMPLATE"; + }; + return [hydrate, hydrateNode]; + } + function propHasMismatch(el, key, clientValue, vnode, instance) { + let mismatchType; + let mismatchKey; + let actual; + let expected; + if (key === "class") { + if (el.$cls) { + actual = el.$cls; + delete el.$cls; + } else { + actual = el.getAttribute("class"); + } + expected = normalizeClass(clientValue); + if (!isSetEqual(toClassSet(actual || ""), toClassSet(expected))) { + mismatchType = 2 /* CLASS */; + mismatchKey = `class`; + } + } else if (key === "style") { + actual = el.getAttribute("style") || ""; + expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue)); + const actualMap = toStyleMap(actual); + const expectedMap = toStyleMap(expected); + if (vnode.dirs) { + for (const { dir, value } of vnode.dirs) { + if (dir.name === "show" && !value) { + expectedMap.set("display", "none"); + } + } + } + if (instance) { + resolveCssVars(instance, vnode, expectedMap); + } + if (!isMapEqual(actualMap, expectedMap)) { + mismatchType = 3 /* STYLE */; + mismatchKey = "style"; + } + } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) { + if (isBooleanAttr(key)) { + actual = el.hasAttribute(key); + expected = includeBooleanAttr(clientValue); + } else if (clientValue == null) { + actual = el.hasAttribute(key); + expected = false; + } else { + if (el.hasAttribute(key)) { + actual = el.getAttribute(key); + } else if (key === "value" && el.tagName === "TEXTAREA") { + actual = el.value; + } else { + actual = false; + } + expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false; + } + if (actual !== expected) { + mismatchType = 4 /* ATTRIBUTE */; + mismatchKey = key; + } + } + if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) { + const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}="${v}"`; + const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`; + const postSegment = ` + - rendered on server: ${format(actual)} + - expected on client: ${format(expected)} + Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead. + You should fix the source of the mismatch.`; + { + warn$1(preSegment, el, postSegment); + } + return true; + } + return false; + } + function toClassSet(str) { + return new Set(str.trim().split(/\s+/)); + } + function isSetEqual(a, b) { + if (a.size !== b.size) { + return false; + } + for (const s of a) { + if (!b.has(s)) { + return false; + } + } + return true; + } + function toStyleMap(str) { + const styleMap = /* @__PURE__ */ new Map(); + for (const item of str.split(";")) { + let [key, value] = item.split(":"); + key = key.trim(); + value = value && value.trim(); + if (key && value) { + styleMap.set(key, value); + } + } + return styleMap; + } + function isMapEqual(a, b) { + if (a.size !== b.size) { + return false; + } + for (const [key, value] of a) { + if (value !== b.get(key)) { + return false; + } + } + return true; + } + function resolveCssVars(instance, vnode, expectedMap) { + const root = instance.subTree; + if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) { + const cssVars = instance.getCssVars(); + for (const key in cssVars) { + const value = normalizeCssVarValue(cssVars[key]); + expectedMap.set(`--${getEscapedCssVarName(key)}`, value); + } + } + if (vnode === root && instance.parent) { + resolveCssVars(instance.parent, instance.vnode, expectedMap); + } + } + const allowMismatchAttr = "data-allow-mismatch"; + const MismatchTypeString = { + [0 /* TEXT */]: "text", + [1 /* CHILDREN */]: "children", + [2 /* CLASS */]: "class", + [3 /* STYLE */]: "style", + [4 /* ATTRIBUTE */]: "attribute" + }; + function isMismatchAllowed(el, allowedType) { + if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) { + while (el && !el.hasAttribute(allowMismatchAttr)) { + el = el.parentElement; + } + } + const allowedAttr = el && el.getAttribute(allowMismatchAttr); + if (allowedAttr == null) { + return false; + } else if (allowedAttr === "") { + return true; + } else { + const list = allowedAttr.split(","); + if (allowedType === 0 /* TEXT */ && list.includes("children")) { + return true; + } + return list.includes(MismatchTypeString[allowedType]); + } + } + + const requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1)); + const cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id)); + const hydrateOnIdle = (timeout = 1e4) => (hydrate) => { + const id = requestIdleCallback(hydrate, { timeout }); + return () => cancelIdleCallback(id); + }; + function elementIsVisibleInViewport(el) { + const { top, left, bottom, right } = el.getBoundingClientRect(); + const { innerHeight, innerWidth } = window; + return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth); + } + const hydrateOnVisible = (opts) => (hydrate, forEach) => { + const ob = new IntersectionObserver((entries) => { + for (const e of entries) { + if (!e.isIntersecting) continue; + ob.disconnect(); + hydrate(); + break; + } + }, opts); + forEach((el) => { + if (!(el instanceof Element)) return; + if (elementIsVisibleInViewport(el)) { + hydrate(); + ob.disconnect(); + return false; + } + ob.observe(el); + }); + return () => ob.disconnect(); + }; + const hydrateOnMediaQuery = (query) => (hydrate) => { + if (query) { + const mql = matchMedia(query); + if (mql.matches) { + hydrate(); + } else { + mql.addEventListener("change", hydrate, { once: true }); + return () => mql.removeEventListener("change", hydrate); + } + } + }; + const hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => { + if (isString(interactions)) interactions = [interactions]; + let hasHydrated = false; + const doHydrate = (e) => { + if (!hasHydrated) { + hasHydrated = true; + teardown(); + hydrate(); + e.target.dispatchEvent(new e.constructor(e.type, e)); + } + }; + const teardown = () => { + forEach((el) => { + for (const i of interactions) { + el.removeEventListener(i, doHydrate); + } + }); + }; + forEach((el) => { + for (const i of interactions) { + el.addEventListener(i, doHydrate, { once: true }); + } + }); + return teardown; + }; + function forEachElement(node, cb) { + if (isComment(node) && node.data === "[") { + let depth = 1; + let next = node.nextSibling; + while (next) { + if (next.nodeType === 1) { + const result = cb(next); + if (result === false) { + break; + } + } else if (isComment(next)) { + if (next.data === "]") { + if (--depth === 0) break; + } else if (next.data === "[") { + depth++; + } + } + next = next.nextSibling; + } + } else { + cb(node); + } + } + + const isAsyncWrapper = (i) => !!i.type.__asyncLoader; + /*! #__NO_SIDE_EFFECTS__ */ + // @__NO_SIDE_EFFECTS__ + function defineAsyncComponent(source) { + if (isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + hydrate: hydrateStrategy, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve, reject) => { + const userRetry = () => resolve(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (!comp) { + warn$1( + `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` + ); + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + if (comp && !isObject(comp) && !isFunction(comp)) { + throw new Error(`Invalid async component load result: ${comp}`); + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + __asyncHydrate(el, instance, hydrate) { + let patched = false; + (instance.bu || (instance.bu = [])).push(() => patched = true); + const performHydrate = () => { + if (patched) { + { + warn$1( + `Skipping lazy hydration for component '${getComponentName(resolvedComp) || resolvedComp.__file}': it was updated before lazy hydration performed.` + ); + } + return; + } + hydrate(); + }; + const doHydrate = hydrateStrategy ? () => { + const teardown = hydrateStrategy( + performHydrate, + (cb) => forEachElement(el, cb) + ); + if (teardown) { + (instance.bum || (instance.bum = [])).push(teardown); + } + } : performHydrate; + if (resolvedComp) { + doHydrate(); + } else { + load().then(() => !instance.isUnmounted && doHydrate()); + } + }, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + markAsyncBoundary(instance); + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + ); + }; + if (suspensible && instance.suspense || false) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = ref(false); + const error = ref(); + const delayed = ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + instance.parent.update(); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); + } + function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; + } + + const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; + const KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + { + instance.__v_cache = cache; + } + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, namespace, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + namespace, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + invalidateMount(instance2.m); + invalidateMount(instance2.a); + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + { + instance2.__keepAliveStorageContainer = storageContainer; + } + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(vnode.type); + if (name && !filter(name)) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (cached && (!current || !isSameVNodeType(cached, current))) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + watch( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + if (isSuspense(instance.subTree.type)) { + queuePostRenderEffect(() => { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + }, instance.subTree.suspense); + } else { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return current = null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + { + warn$1(`KeepAlive should contain exactly one component child.`); + } + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + if (vnode.type === Comment) { + current = null; + return vnode; + } + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + vnode.shapeFlag &= -257; + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } + }; + const KeepAlive = KeepAliveImpl; + function matches(pattern, name) { + if (isArray(pattern)) { + return pattern.some((p) => matches(p, name)); + } else if (isString(pattern)) { + return pattern.split(",").includes(name); + } else if (isRegExp(pattern)) { + pattern.lastIndex = 0; + return pattern.test(name); + } + return false; + } + function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); + } + function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); + } + function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } + } + function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + remove(keepAliveRoot[type], injected); + }, target); + } + function resetShapeFlag(vnode) { + vnode.shapeFlag &= -257; + vnode.shapeFlag &= -513; + } + function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; + } + + function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + pauseTracking(); + const reset = setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + reset(); + resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } else { + const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, "")); + warn$1( + `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` ) + ); + } + } + const createHook = (lifecycle) => (hook, target = currentInstance) => { + if (!isInSSRComponentSetup || lifecycle === "sp") { + injectHook(lifecycle, (...args) => hook(...args), target); + } + }; + const onBeforeMount = createHook("bm"); + const onMounted = createHook("m"); + const onBeforeUpdate = createHook( + "bu" + ); + const onUpdated = createHook("u"); + const onBeforeUnmount = createHook( + "bum" + ); + const onUnmounted = createHook("um"); + const onServerPrefetch = createHook( + "sp" + ); + const onRenderTriggered = createHook("rtg"); + const onRenderTracked = createHook("rtc"); + function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); + } + + const COMPONENTS = "components"; + const DIRECTIVES = "directives"; + function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; + } + const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); + function resolveDynamicComponent(component) { + if (isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } + } + function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); + } + function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + ); + if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + if (warnMissing && !res) { + const extra = type === COMPONENTS ? ` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; + warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } else { + warn$1( + `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().` + ); + } + } + function resolve(registry, name) { + return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]); + } + + function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + const sourceIsArray = isArray(source); + if (sourceIsArray || isString(source)) { + const sourceIsReactiveArray = sourceIsArray && isReactive(source); + let needsWrap = false; + let isReadonlySource = false; + if (sourceIsReactiveArray) { + needsWrap = !isShallow(source); + isReadonlySource = isReadonly(source); + source = shallowReadArray(source); + } + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem( + needsWrap ? isReadonlySource ? toReadonly(toReactive(source[i])) : toReactive(source[i]) : source[i], + i, + void 0, + cached && cached[i] + ); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn$1(`The v-for range expect an integer value but got ${source}.`); + } + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; + } + + function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; + } + + function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) { + if (name !== "default") props.name = name; + return openBlock(), createBlock( + Fragment, + null, + [createVNode("slot", props, fallback && fallback())], + 64 + ); + } + let slot = slots[name]; + if (slot && slot.length > 1) { + warn$1( + `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` + ); + slot = () => []; + } + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key; + const rendered = createBlock( + Fragment, + { + key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content + (!validSlotContent && fallback ? "_fb" : "") + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; + } + function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) return true; + if (child.type === Comment) return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; + } + + function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + if (!isObject(obj)) { + warn$1(`v-on with no argument expects an object value.`); + return ret; + } + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key]; + } + return ret; + } + + const getPublicInstance = (i) => { + if (!i) return null; + if (isStatefulComponent(i)) return getComponentPublicInstance(i); + return getPublicInstance(i.parent); + }; + const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => shallowReadonly(i.props) , + $attrs: (i) => shallowReadonly(i.attrs) , + $slots: (i) => shallowReadonly(i.slots) , + $refs: (i) => shallowReadonly(i.refs) , + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $host: (i) => i.ce, + $emit: (i) => i.emit, + $options: (i) => resolveMergedOptions(i) , + $forceUpdate: (i) => i.f || (i.f = () => { + queueJob(i.update); + }), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => instanceWatch.bind(i) + }) + ); + const isReservedPrefix = (key) => key === "_" || key === "$"; + const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); + const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + if (key === "__v_skip") { + return true; + } + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if (shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + track(instance.attrs, "get", ""); + markAttrsAccessed(); + } else if (key === "$slots") { + track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf("__v") !== 0)) { + if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { + warn$1( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); + } else if (instance === currentRenderingInstance) { + warn$1( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) { + warn$1(`Cannot mutate <script setup> binding "${key}" from Options API.`); + return false; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + data[key] = value; + return true; + } else if (hasOwn(instance.props, key)) { + warn$1(`Attempting to mutate prop "${key}". Props are readonly.`); + return false; + } + if (key[0] === "$" && key.slice(1) in instance) { + warn$1( + `Attempting to mutate public property "${key}". Properties starting with $ are reserved and readonly.` + ); + return false; + } else { + if (key in instance.appContext.config.globalProperties) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + value + }); + } else { + ctx[key] = value; + } + } + return true; + }, + has({ + _: { data, setupState, accessCache, ctx, appContext, propsOptions } + }, key) { + let normalizedProps; + return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key); + }, + defineProperty(target, key, descriptor) { + if (descriptor.get != null) { + target._.accessCache[key] = 0; + } else if (hasOwn(descriptor, "value")) { + this.set(target, key, descriptor.value, null); + } + return Reflect.defineProperty(target, key, descriptor); + } + }; + { + PublicInstanceProxyHandlers.ownKeys = (target) => { + warn$1( + `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.` + ); + return Reflect.ownKeys(target); + }; + } + const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend({}, PublicInstanceProxyHandlers, { + get(target, key) { + if (key === Symbol.unscopables) { + return; + } + return PublicInstanceProxyHandlers.get(target, key, target); + }, + has(_, key) { + const has = key[0] !== "_" && !isGloballyAllowed(key); + if (!has && PublicInstanceProxyHandlers.has(_, key)) { + warn$1( + `Property ${JSON.stringify( + key + )} should not start with _ which is a reserved prefix for Vue internals.` + ); + } + return has; + } + }); + function createDevRenderContext(instance) { + const target = {}; + Object.defineProperty(target, `_`, { + configurable: true, + enumerable: false, + get: () => instance + }); + Object.keys(publicPropertiesMap).forEach((key) => { + Object.defineProperty(target, key, { + configurable: true, + enumerable: false, + get: () => publicPropertiesMap[key](instance), + // intercepted by the proxy so no need for implementation, + // but needed to prevent set errors + set: NOOP + }); + }); + return target; + } + function exposePropsOnRenderContext(instance) { + const { + ctx, + propsOptions: [propsOptions] + } = instance; + if (propsOptions) { + Object.keys(propsOptions).forEach((key) => { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => instance.props[key], + set: NOOP + }); + }); + } + } + function exposeSetupStateOnRenderContext(instance) { + const { ctx, setupState } = instance; + Object.keys(toRaw(setupState)).forEach((key) => { + if (!setupState.__isScriptSetup) { + if (isReservedPrefix(key[0])) { + warn$1( + `setup() return property ${JSON.stringify( + key + )} should not start with "$" or "_" which are reserved prefixes for Vue internals.` + ); + return; + } + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => setupState[key], + set: NOOP + }); + } + }); + } + + const warnRuntimeUsage = (method) => warn$1( + `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.` + ); + function defineProps() { + { + warnRuntimeUsage(`defineProps`); + } + return null; + } + function defineEmits() { + { + warnRuntimeUsage(`defineEmits`); + } + return null; + } + function defineExpose(exposed) { + { + warnRuntimeUsage(`defineExpose`); + } + } + function defineOptions(options) { + { + warnRuntimeUsage(`defineOptions`); + } + } + function defineSlots() { + { + warnRuntimeUsage(`defineSlots`); + } + return null; + } + function defineModel() { + { + warnRuntimeUsage("defineModel"); + } + } + function withDefaults(props, defaults) { + { + warnRuntimeUsage(`withDefaults`); + } + return null; + } + function useSlots() { + return getContext("useSlots").slots; + } + function useAttrs() { + return getContext("useAttrs").attrs; + } + function getContext(calledFunctionName) { + const i = getCurrentInstance(); + if (!i) { + warn$1(`${calledFunctionName}() called without active instance.`); + } + return i.setupContext || (i.setupContext = createSetupContext(i)); + } + function normalizePropsOrEmits(props) { + return isArray(props) ? props.reduce( + (normalized, p) => (normalized[p] = null, normalized), + {} + ) : props; + } + function mergeDefaults(raw, defaults) { + const props = normalizePropsOrEmits(raw); + for (const key in defaults) { + if (key.startsWith("__skip")) continue; + let opt = props[key]; + if (opt) { + if (isArray(opt) || isFunction(opt)) { + opt = props[key] = { type: opt, default: defaults[key] }; + } else { + opt.default = defaults[key]; + } + } else if (opt === null) { + opt = props[key] = { default: defaults[key] }; + } else { + warn$1(`props default key "${key}" has no corresponding declaration.`); + } + if (opt && defaults[`__skip_${key}`]) { + opt.skipFactory = true; + } + } + return props; + } + function mergeModels(a, b) { + if (!a || !b) return a || b; + if (isArray(a) && isArray(b)) return a.concat(b); + return extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b)); + } + function createPropsRestProxy(props, excludedKeys) { + const ret = {}; + for (const key in props) { + if (!excludedKeys.includes(key)) { + Object.defineProperty(ret, key, { + enumerable: true, + get: () => props[key] + }); + } + } + return ret; + } + function withAsyncContext(getAwaitable) { + const ctx = getCurrentInstance(); + if (!ctx) { + warn$1( + `withAsyncContext called without active current instance. This is likely a bug.` + ); + } + let awaitable = getAwaitable(); + unsetCurrentInstance(); + if (isPromise(awaitable)) { + awaitable = awaitable.catch((e) => { + setCurrentInstance(ctx); + throw e; + }); + } + return [awaitable, () => setCurrentInstance(ctx)]; + } + + function createDuplicateChecker() { + const cache = /* @__PURE__ */ Object.create(null); + return (type, key) => { + if (cache[key]) { + warn$1(`${type} property "${key}" is already defined in ${cache[key]}.`); + } else { + cache[key] = type; + } + }; + } + let shouldCacheAccess = true; + function applyOptions(instance) { + const options = resolveMergedOptions(instance); + const publicThis = instance.proxy; + const ctx = instance.ctx; + shouldCacheAccess = false; + if (options.beforeCreate) { + callHook$1(options.beforeCreate, instance, "bc"); + } + const { + // state + data: dataOptions, + computed: computedOptions, + methods, + watch: watchOptions, + provide: provideOptions, + inject: injectOptions, + // lifecycle + created, + beforeMount, + mounted, + beforeUpdate, + updated, + activated, + deactivated, + beforeDestroy, + beforeUnmount, + destroyed, + unmounted, + render, + renderTracked, + renderTriggered, + errorCaptured, + serverPrefetch, + // public API + expose, + inheritAttrs, + // assets + components, + directives, + filters + } = options; + const checkDuplicateProperties = createDuplicateChecker() ; + { + const [propsOptions] = instance.propsOptions; + if (propsOptions) { + for (const key in propsOptions) { + checkDuplicateProperties("Props" /* PROPS */, key); + } + } + } + if (injectOptions) { + resolveInjections(injectOptions, ctx, checkDuplicateProperties); + } + if (methods) { + for (const key in methods) { + const methodHandler = methods[key]; + if (isFunction(methodHandler)) { + { + Object.defineProperty(ctx, key, { + value: methodHandler.bind(publicThis), + configurable: true, + enumerable: true, + writable: true + }); + } + { + checkDuplicateProperties("Methods" /* METHODS */, key); + } + } else { + warn$1( + `Method "${key}" has type "${typeof methodHandler}" in the component definition. Did you reference the function correctly?` + ); + } + } + } + if (dataOptions) { + if (!isFunction(dataOptions)) { + warn$1( + `The data option must be a function. Plain object usage is no longer supported.` + ); + } + const data = dataOptions.call(publicThis, publicThis); + if (isPromise(data)) { + warn$1( + `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.` + ); + } + if (!isObject(data)) { + warn$1(`data() should return an object.`); + } else { + instance.data = reactive(data); + { + for (const key in data) { + checkDuplicateProperties("Data" /* DATA */, key); + if (!isReservedPrefix(key[0])) { + Object.defineProperty(ctx, key, { + configurable: true, + enumerable: true, + get: () => data[key], + set: NOOP + }); + } + } + } + } + } + shouldCacheAccess = true; + if (computedOptions) { + for (const key in computedOptions) { + const opt = computedOptions[key]; + const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP; + if (get === NOOP) { + warn$1(`Computed property "${key}" has no getter.`); + } + const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : () => { + warn$1( + `Write operation failed: computed property "${key}" is readonly.` + ); + } ; + const c = computed({ + get, + set + }); + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => c.value, + set: (v) => c.value = v + }); + { + checkDuplicateProperties("Computed" /* COMPUTED */, key); + } + } + } + if (watchOptions) { + for (const key in watchOptions) { + createWatcher(watchOptions[key], ctx, publicThis, key); + } + } + if (provideOptions) { + const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions; + Reflect.ownKeys(provides).forEach((key) => { + provide(key, provides[key]); + }); + } + if (created) { + callHook$1(created, instance, "c"); + } + function registerLifecycleHook(register, hook) { + if (isArray(hook)) { + hook.forEach((_hook) => register(_hook.bind(publicThis))); + } else if (hook) { + register(hook.bind(publicThis)); + } + } + registerLifecycleHook(onBeforeMount, beforeMount); + registerLifecycleHook(onMounted, mounted); + registerLifecycleHook(onBeforeUpdate, beforeUpdate); + registerLifecycleHook(onUpdated, updated); + registerLifecycleHook(onActivated, activated); + registerLifecycleHook(onDeactivated, deactivated); + registerLifecycleHook(onErrorCaptured, errorCaptured); + registerLifecycleHook(onRenderTracked, renderTracked); + registerLifecycleHook(onRenderTriggered, renderTriggered); + registerLifecycleHook(onBeforeUnmount, beforeUnmount); + registerLifecycleHook(onUnmounted, unmounted); + registerLifecycleHook(onServerPrefetch, serverPrefetch); + if (isArray(expose)) { + if (expose.length) { + const exposed = instance.exposed || (instance.exposed = {}); + expose.forEach((key) => { + Object.defineProperty(exposed, key, { + get: () => publicThis[key], + set: (val) => publicThis[key] = val, + enumerable: true + }); + }); + } else if (!instance.exposed) { + instance.exposed = {}; + } + } + if (render && instance.render === NOOP) { + instance.render = render; + } + if (inheritAttrs != null) { + instance.inheritAttrs = inheritAttrs; + } + if (components) instance.components = components; + if (directives) instance.directives = directives; + } + function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) { + if (isArray(injectOptions)) { + injectOptions = normalizeInject(injectOptions); + } + for (const key in injectOptions) { + const opt = injectOptions[key]; + let injected; + if (isObject(opt)) { + if ("default" in opt) { + injected = inject( + opt.from || key, + opt.default, + true + ); + } else { + injected = inject(opt.from || key); + } + } else { + injected = inject(opt); + } + if (isRef(injected)) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => injected.value, + set: (v) => injected.value = v + }); + } else { + ctx[key] = injected; + } + { + checkDuplicateProperties("Inject" /* INJECT */, key); + } + } + } + function callHook$1(hook, instance, type) { + callWithAsyncErrorHandling( + isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy), + instance, + type + ); + } + function createWatcher(raw, ctx, publicThis, key) { + let getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; + if (isString(raw)) { + const handler = ctx[raw]; + if (isFunction(handler)) { + { + watch(getter, handler); + } + } else { + warn$1(`Invalid watch handler specified by key "${raw}"`, handler); + } + } else if (isFunction(raw)) { + { + watch(getter, raw.bind(publicThis)); + } + } else if (isObject(raw)) { + if (isArray(raw)) { + raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); + } else { + const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; + if (isFunction(handler)) { + watch(getter, handler, raw); + } else { + warn$1(`Invalid watch handler specified by key "${raw.handler}"`, handler); + } + } + } else { + warn$1(`Invalid watch option: "${key}"`, raw); + } + } + function resolveMergedOptions(instance) { + const base = instance.type; + const { mixins, extends: extendsOptions } = base; + const { + mixins: globalMixins, + optionsCache: cache, + config: { optionMergeStrategies } + } = instance.appContext; + const cached = cache.get(base); + let resolved; + if (cached) { + resolved = cached; + } else if (!globalMixins.length && !mixins && !extendsOptions) { + { + resolved = base; + } + } else { + resolved = {}; + if (globalMixins.length) { + globalMixins.forEach( + (m) => mergeOptions(resolved, m, optionMergeStrategies, true) + ); + } + mergeOptions(resolved, base, optionMergeStrategies); + } + if (isObject(base)) { + cache.set(base, resolved); + } + return resolved; + } + function mergeOptions(to, from, strats, asMixin = false) { + const { mixins, extends: extendsOptions } = from; + if (extendsOptions) { + mergeOptions(to, extendsOptions, strats, true); + } + if (mixins) { + mixins.forEach( + (m) => mergeOptions(to, m, strats, true) + ); + } + for (const key in from) { + if (asMixin && key === "expose") { + warn$1( + `"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.` + ); + } else { + const strat = internalOptionMergeStrats[key] || strats && strats[key]; + to[key] = strat ? strat(to[key], from[key]) : from[key]; + } + } + return to; + } + const internalOptionMergeStrats = { + data: mergeDataFn, + props: mergeEmitsOrPropsOptions, + emits: mergeEmitsOrPropsOptions, + // objects + methods: mergeObjectOptions, + computed: mergeObjectOptions, + // lifecycle + beforeCreate: mergeAsArray, + created: mergeAsArray, + beforeMount: mergeAsArray, + mounted: mergeAsArray, + beforeUpdate: mergeAsArray, + updated: mergeAsArray, + beforeDestroy: mergeAsArray, + beforeUnmount: mergeAsArray, + destroyed: mergeAsArray, + unmounted: mergeAsArray, + activated: mergeAsArray, + deactivated: mergeAsArray, + errorCaptured: mergeAsArray, + serverPrefetch: mergeAsArray, + // assets + components: mergeObjectOptions, + directives: mergeObjectOptions, + // watch + watch: mergeWatchOptions, + // provide / inject + provide: mergeDataFn, + inject: mergeInject + }; + function mergeDataFn(to, from) { + if (!from) { + return to; + } + if (!to) { + return from; + } + return function mergedDataFn() { + return (extend)( + isFunction(to) ? to.call(this, this) : to, + isFunction(from) ? from.call(this, this) : from + ); + }; + } + function mergeInject(to, from) { + return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); + } + function normalizeInject(raw) { + if (isArray(raw)) { + const res = {}; + for (let i = 0; i < raw.length; i++) { + res[raw[i]] = raw[i]; + } + return res; + } + return raw; + } + function mergeAsArray(to, from) { + return to ? [...new Set([].concat(to, from))] : from; + } + function mergeObjectOptions(to, from) { + return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from; + } + function mergeEmitsOrPropsOptions(to, from) { + if (to) { + if (isArray(to) && isArray(from)) { + return [.../* @__PURE__ */ new Set([...to, ...from])]; + } + return extend( + /* @__PURE__ */ Object.create(null), + normalizePropsOrEmits(to), + normalizePropsOrEmits(from != null ? from : {}) + ); + } else { + return from; + } + } + function mergeWatchOptions(to, from) { + if (!to) return from; + if (!from) return to; + const merged = extend(/* @__PURE__ */ Object.create(null), to); + for (const key in from) { + merged[key] = mergeAsArray(to[key], from[key]); + } + return merged; + } + + function createAppContext() { + return { + app: null, + config: { + isNativeTag: NO, + performance: false, + globalProperties: {}, + optionMergeStrategies: {}, + errorHandler: void 0, + warnHandler: void 0, + compilerOptions: {} + }, + mixins: [], + components: {}, + directives: {}, + provides: /* @__PURE__ */ Object.create(null), + optionsCache: /* @__PURE__ */ new WeakMap(), + propsCache: /* @__PURE__ */ new WeakMap(), + emitsCache: /* @__PURE__ */ new WeakMap() + }; + } + let uid$1 = 0; + function createAppAPI(render, hydrate) { + return function createApp(rootComponent, rootProps = null) { + if (!isFunction(rootComponent)) { + rootComponent = extend({}, rootComponent); + } + if (rootProps != null && !isObject(rootProps)) { + warn$1(`root props passed to app.mount() must be an object.`); + rootProps = null; + } + const context = createAppContext(); + const installedPlugins = /* @__PURE__ */ new WeakSet(); + const pluginCleanupFns = []; + let isMounted = false; + const app = context.app = { + _uid: uid$1++, + _component: rootComponent, + _props: rootProps, + _container: null, + _context: context, + _instance: null, + version, + get config() { + return context.config; + }, + set config(v) { + { + warn$1( + `app.config cannot be replaced. Modify individual options instead.` + ); + } + }, + use(plugin, ...options) { + if (installedPlugins.has(plugin)) { + warn$1(`Plugin has already been applied to target app.`); + } else if (plugin && isFunction(plugin.install)) { + installedPlugins.add(plugin); + plugin.install(app, ...options); + } else if (isFunction(plugin)) { + installedPlugins.add(plugin); + plugin(app, ...options); + } else { + warn$1( + `A plugin must either be a function or an object with an "install" function.` + ); + } + return app; + }, + mixin(mixin) { + { + if (!context.mixins.includes(mixin)) { + context.mixins.push(mixin); + } else { + warn$1( + "Mixin has already been applied to target app" + (mixin.name ? `: ${mixin.name}` : "") + ); + } + } + return app; + }, + component(name, component) { + { + validateComponentName(name, context.config); + } + if (!component) { + return context.components[name]; + } + if (context.components[name]) { + warn$1(`Component "${name}" has already been registered in target app.`); + } + context.components[name] = component; + return app; + }, + directive(name, directive) { + { + validateDirectiveName(name); + } + if (!directive) { + return context.directives[name]; + } + if (context.directives[name]) { + warn$1(`Directive "${name}" has already been registered in target app.`); + } + context.directives[name] = directive; + return app; + }, + mount(rootContainer, isHydrate, namespace) { + if (!isMounted) { + if (rootContainer.__vue_app__) { + warn$1( + `There is already an app instance mounted on the host container. + If you want to mount another app on the same host container, you need to unmount the previous app by calling \`app.unmount()\` first.` + ); + } + const vnode = app._ceVNode || createVNode(rootComponent, rootProps); + vnode.appContext = context; + if (namespace === true) { + namespace = "svg"; + } else if (namespace === false) { + namespace = void 0; + } + { + context.reload = () => { + const cloned = cloneVNode(vnode); + cloned.el = null; + render(cloned, rootContainer, namespace); + }; + } + if (isHydrate && hydrate) { + hydrate(vnode, rootContainer); + } else { + render(vnode, rootContainer, namespace); + } + isMounted = true; + app._container = rootContainer; + rootContainer.__vue_app__ = app; + { + app._instance = vnode.component; + devtoolsInitApp(app, version); + } + return getComponentPublicInstance(vnode.component); + } else { + warn$1( + `App has already been mounted. +If you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \`const createMyApp = () => createApp(App)\`` + ); + } + }, + onUnmount(cleanupFn) { + if (typeof cleanupFn !== "function") { + warn$1( + `Expected function as first argument to app.onUnmount(), but got ${typeof cleanupFn}` + ); + } + pluginCleanupFns.push(cleanupFn); + }, + unmount() { + if (isMounted) { + callWithAsyncErrorHandling( + pluginCleanupFns, + app._instance, + 16 + ); + render(null, app._container); + { + app._instance = null; + devtoolsUnmountApp(app); + } + delete app._container.__vue_app__; + } else { + warn$1(`Cannot unmount an app that is not mounted.`); + } + }, + provide(key, value) { + if (key in context.provides) { + if (hasOwn(context.provides, key)) { + warn$1( + `App already provides property with key "${String(key)}". It will be overwritten with the new value.` + ); + } else { + warn$1( + `App already provides property with key "${String(key)}" inherited from its parent element. It will be overwritten with the new value.` + ); + } + } + context.provides[key] = value; + return app; + }, + runWithContext(fn) { + const lastApp = currentApp; + currentApp = app; + try { + return fn(); + } finally { + currentApp = lastApp; + } + } + }; + return app; + }; + } + let currentApp = null; + + function provide(key, value) { + if (!currentInstance) { + { + warn$1(`provide() can only be used inside setup().`); + } + } else { + let provides = currentInstance.provides; + const parentProvides = currentInstance.parent && currentInstance.parent.provides; + if (parentProvides === provides) { + provides = currentInstance.provides = Object.create(parentProvides); + } + provides[key] = value; + } + } + function inject(key, defaultValue, treatDefaultAsFactory = false) { + const instance = getCurrentInstance(); + if (instance || currentApp) { + let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0; + if (provides && key in provides) { + return provides[key]; + } else if (arguments.length > 1) { + return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; + } else { + warn$1(`injection "${String(key)}" not found.`); + } + } else { + warn$1(`inject() can only be used inside setup() or functional components.`); + } + } + function hasInjectionContext() { + return !!(getCurrentInstance() || currentApp); + } + + const internalObjectProto = {}; + const createInternalObject = () => Object.create(internalObjectProto); + const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto; + + function initProps(instance, rawProps, isStateful, isSSR = false) { + const props = {}; + const attrs = createInternalObject(); + instance.propsDefaults = /* @__PURE__ */ Object.create(null); + setFullProps(instance, rawProps, props, attrs); + for (const key in instance.propsOptions[0]) { + if (!(key in props)) { + props[key] = void 0; + } + } + { + validateProps(rawProps || {}, props, instance); + } + if (isStateful) { + instance.props = isSSR ? props : shallowReactive(props); + } else { + if (!instance.type.props) { + instance.props = attrs; + } else { + instance.props = props; + } + } + instance.attrs = attrs; + } + function isInHmrContext(instance) { + while (instance) { + if (instance.type.__hmrId) return true; + instance = instance.parent; + } + } + function updateProps(instance, rawProps, rawPrevProps, optimized) { + const { + props, + attrs, + vnode: { patchFlag } + } = instance; + const rawCurrentProps = toRaw(props); + const [options] = instance.propsOptions; + let hasAttrsChanged = false; + if ( + // always force full diff in dev + // - #1942 if hmr is enabled with sfc component + // - vite#872 non-sfc component used by sfc component + !isInHmrContext(instance) && (optimized || patchFlag > 0) && !(patchFlag & 16) + ) { + if (patchFlag & 8) { + const propsToUpdate = instance.vnode.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + let key = propsToUpdate[i]; + if (isEmitListener(instance.emitsOptions, key)) { + continue; + } + const value = rawProps[key]; + if (options) { + if (hasOwn(attrs, key)) { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } else { + const camelizedKey = camelize(key); + props[camelizedKey] = resolvePropValue( + options, + rawCurrentProps, + camelizedKey, + value, + instance, + false + ); + } + } else { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + } else { + if (setFullProps(instance, rawProps, props, attrs)) { + hasAttrsChanged = true; + } + let kebabKey; + for (const key in rawCurrentProps) { + if (!rawProps || // for camelCase + !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case + // and converted to camelCase (#955) + ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) { + if (options) { + if (rawPrevProps && // for camelCase + (rawPrevProps[key] !== void 0 || // for kebab-case + rawPrevProps[kebabKey] !== void 0)) { + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + void 0, + instance, + true + ); + } + } else { + delete props[key]; + } + } + } + if (attrs !== rawCurrentProps) { + for (const key in attrs) { + if (!rawProps || !hasOwn(rawProps, key) && true) { + delete attrs[key]; + hasAttrsChanged = true; + } + } + } + } + if (hasAttrsChanged) { + trigger(instance.attrs, "set", ""); + } + { + validateProps(rawProps || {}, props, instance); + } + } + function setFullProps(instance, rawProps, props, attrs) { + const [options, needCastKeys] = instance.propsOptions; + let hasAttrsChanged = false; + let rawCastValues; + if (rawProps) { + for (let key in rawProps) { + if (isReservedProp(key)) { + continue; + } + const value = rawProps[key]; + let camelKey; + if (options && hasOwn(options, camelKey = camelize(key))) { + if (!needCastKeys || !needCastKeys.includes(camelKey)) { + props[camelKey] = value; + } else { + (rawCastValues || (rawCastValues = {}))[camelKey] = value; + } + } else if (!isEmitListener(instance.emitsOptions, key)) { + if (!(key in attrs) || value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + if (needCastKeys) { + const rawCurrentProps = toRaw(props); + const castValues = rawCastValues || EMPTY_OBJ; + for (let i = 0; i < needCastKeys.length; i++) { + const key = needCastKeys[i]; + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + castValues[key], + instance, + !hasOwn(castValues, key) + ); + } + } + return hasAttrsChanged; + } + function resolvePropValue(options, props, key, value, instance, isAbsent) { + const opt = options[key]; + if (opt != null) { + const hasDefault = hasOwn(opt, "default"); + if (hasDefault && value === void 0) { + const defaultValue = opt.default; + if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) { + const { propsDefaults } = instance; + if (key in propsDefaults) { + value = propsDefaults[key]; + } else { + const reset = setCurrentInstance(instance); + value = propsDefaults[key] = defaultValue.call( + null, + props + ); + reset(); + } + } else { + value = defaultValue; + } + if (instance.ce) { + instance.ce._setProp(key, value); + } + } + if (opt[0 /* shouldCast */]) { + if (isAbsent && !hasDefault) { + value = false; + } else if (opt[1 /* shouldCastTrue */] && (value === "" || value === hyphenate(key))) { + value = true; + } + } + } + return value; + } + const mixinPropsCache = /* @__PURE__ */ new WeakMap(); + function normalizePropsOptions(comp, appContext, asMixin = false) { + const cache = asMixin ? mixinPropsCache : appContext.propsCache; + const cached = cache.get(comp); + if (cached) { + return cached; + } + const raw = comp.props; + const normalized = {}; + const needCastKeys = []; + let hasExtends = false; + if (!isFunction(comp)) { + const extendProps = (raw2) => { + hasExtends = true; + const [props, keys] = normalizePropsOptions(raw2, appContext, true); + extend(normalized, props); + if (keys) needCastKeys.push(...keys); + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendProps); + } + if (comp.extends) { + extendProps(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendProps); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, EMPTY_ARR); + } + return EMPTY_ARR; + } + if (isArray(raw)) { + for (let i = 0; i < raw.length; i++) { + if (!isString(raw[i])) { + warn$1(`props must be strings when using array syntax.`, raw[i]); + } + const normalizedKey = camelize(raw[i]); + if (validatePropName(normalizedKey)) { + normalized[normalizedKey] = EMPTY_OBJ; + } + } + } else if (raw) { + if (!isObject(raw)) { + warn$1(`invalid props options`, raw); + } + for (const key in raw) { + const normalizedKey = camelize(key); + if (validatePropName(normalizedKey)) { + const opt = raw[key]; + const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt); + const propType = prop.type; + let shouldCast = false; + let shouldCastTrue = true; + if (isArray(propType)) { + for (let index = 0; index < propType.length; ++index) { + const type = propType[index]; + const typeName = isFunction(type) && type.name; + if (typeName === "Boolean") { + shouldCast = true; + break; + } else if (typeName === "String") { + shouldCastTrue = false; + } + } + } else { + shouldCast = isFunction(propType) && propType.name === "Boolean"; + } + prop[0 /* shouldCast */] = shouldCast; + prop[1 /* shouldCastTrue */] = shouldCastTrue; + if (shouldCast || hasOwn(prop, "default")) { + needCastKeys.push(normalizedKey); + } + } + } + } + const res = [normalized, needCastKeys]; + if (isObject(comp)) { + cache.set(comp, res); + } + return res; + } + function validatePropName(key) { + if (key[0] !== "$" && !isReservedProp(key)) { + return true; + } else { + warn$1(`Invalid prop name: "${key}" is a reserved property.`); + } + return false; + } + function getType(ctor) { + if (ctor === null) { + return "null"; + } + if (typeof ctor === "function") { + return ctor.name || ""; + } else if (typeof ctor === "object") { + const name = ctor.constructor && ctor.constructor.name; + return name || ""; + } + return ""; + } + function validateProps(rawProps, props, instance) { + const resolvedValues = toRaw(props); + const options = instance.propsOptions[0]; + const camelizePropsKey = Object.keys(rawProps).map((key) => camelize(key)); + for (const key in options) { + let opt = options[key]; + if (opt == null) continue; + validateProp( + key, + resolvedValues[key], + opt, + shallowReadonly(resolvedValues) , + !camelizePropsKey.includes(key) + ); + } + } + function validateProp(name, value, prop, props, isAbsent) { + const { type, required, validator, skipCheck } = prop; + if (required && isAbsent) { + warn$1('Missing required prop: "' + name + '"'); + return; + } + if (value == null && !required) { + return; + } + if (type != null && type !== true && !skipCheck) { + let isValid = false; + const types = isArray(type) ? type : [type]; + const expectedTypes = []; + for (let i = 0; i < types.length && !isValid; i++) { + const { valid, expectedType } = assertType(value, types[i]); + expectedTypes.push(expectedType || ""); + isValid = valid; + } + if (!isValid) { + warn$1(getInvalidTypeMessage(name, value, expectedTypes)); + return; + } + } + if (validator && !validator(value, props)) { + warn$1('Invalid prop: custom validator check failed for prop "' + name + '".'); + } + } + const isSimpleType = /* @__PURE__ */ makeMap( + "String,Number,Boolean,Function,Symbol,BigInt" + ); + function assertType(value, type) { + let valid; + const expectedType = getType(type); + if (expectedType === "null") { + valid = value === null; + } else if (isSimpleType(expectedType)) { + const t = typeof value; + valid = t === expectedType.toLowerCase(); + if (!valid && t === "object") { + valid = value instanceof type; + } + } else if (expectedType === "Object") { + valid = isObject(value); + } else if (expectedType === "Array") { + valid = isArray(value); + } else { + valid = value instanceof type; + } + return { + valid, + expectedType + }; + } + function getInvalidTypeMessage(name, value, expectedTypes) { + if (expectedTypes.length === 0) { + return `Prop type [] for prop "${name}" won't match anything. Did you mean to use type Array instead?`; + } + let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes.map(capitalize).join(" | ")}`; + const expectedType = expectedTypes[0]; + const receivedType = toRawType(value); + const expectedValue = styleValue(value, expectedType); + const receivedValue = styleValue(value, receivedType); + if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) { + message += ` with value ${expectedValue}`; + } + message += `, got ${receivedType} `; + if (isExplicable(receivedType)) { + message += `with value ${receivedValue}.`; + } + return message; + } + function styleValue(value, type) { + if (type === "String") { + return `"${value}"`; + } else if (type === "Number") { + return `${Number(value)}`; + } else { + return `${value}`; + } + } + function isExplicable(type) { + const explicitTypes = ["string", "number", "boolean"]; + return explicitTypes.some((elem) => type.toLowerCase() === elem); + } + function isBoolean(...args) { + return args.some((elem) => elem.toLowerCase() === "boolean"); + } + + const isInternalKey = (key) => key === "_" || key === "__" || key === "_ctx" || key === "$stable"; + const normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)]; + const normalizeSlot = (key, rawSlot, ctx) => { + if (rawSlot._n) { + return rawSlot; + } + const normalized = withCtx((...args) => { + if (currentInstance && !(ctx === null && currentRenderingInstance) && !(ctx && ctx.root !== currentInstance.root)) { + warn$1( + `Slot "${key}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.` + ); + } + return normalizeSlotValue(rawSlot(...args)); + }, ctx); + normalized._c = false; + return normalized; + }; + const normalizeObjectSlots = (rawSlots, slots, instance) => { + const ctx = rawSlots._ctx; + for (const key in rawSlots) { + if (isInternalKey(key)) continue; + const value = rawSlots[key]; + if (isFunction(value)) { + slots[key] = normalizeSlot(key, value, ctx); + } else if (value != null) { + { + warn$1( + `Non-function value encountered for slot "${key}". Prefer function slots for better performance.` + ); + } + const normalized = normalizeSlotValue(value); + slots[key] = () => normalized; + } + } + }; + const normalizeVNodeSlots = (instance, children) => { + if (!isKeepAlive(instance.vnode) && true) { + warn$1( + `Non-function value encountered for default slot. Prefer function slots for better performance.` + ); + } + const normalized = normalizeSlotValue(children); + instance.slots.default = () => normalized; + }; + const assignSlots = (slots, children, optimized) => { + for (const key in children) { + if (optimized || !isInternalKey(key)) { + slots[key] = children[key]; + } + } + }; + const initSlots = (instance, children, optimized) => { + const slots = instance.slots = createInternalObject(); + if (instance.vnode.shapeFlag & 32) { + const cacheIndexes = children.__; + if (cacheIndexes) def(slots, "__", cacheIndexes, true); + const type = children._; + if (type) { + assignSlots(slots, children, optimized); + if (optimized) { + def(slots, "_", type, true); + } + } else { + normalizeObjectSlots(children, slots); + } + } else if (children) { + normalizeVNodeSlots(instance, children); + } + }; + const updateSlots = (instance, children, optimized) => { + const { vnode, slots } = instance; + let needDeletionCheck = true; + let deletionComparisonTarget = EMPTY_OBJ; + if (vnode.shapeFlag & 32) { + const type = children._; + if (type) { + if (isHmrUpdating) { + assignSlots(slots, children, optimized); + trigger(instance, "set", "$slots"); + } else if (optimized && type === 1) { + needDeletionCheck = false; + } else { + assignSlots(slots, children, optimized); + } + } else { + needDeletionCheck = !children.$stable; + normalizeObjectSlots(children, slots); + } + deletionComparisonTarget = children; + } else if (children) { + normalizeVNodeSlots(instance, children); + deletionComparisonTarget = { default: 1 }; + } + if (needDeletionCheck) { + for (const key in slots) { + if (!isInternalKey(key) && deletionComparisonTarget[key] == null) { + delete slots[key]; + } + } + } + }; + + let supported; + let perf; + function startMeasure(instance, type) { + if (instance.appContext.config.performance && isSupported()) { + perf.mark(`vue-${type}-${instance.uid}`); + } + { + devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now()); + } + } + function endMeasure(instance, type) { + if (instance.appContext.config.performance && isSupported()) { + const startTag = `vue-${type}-${instance.uid}`; + const endTag = startTag + `:end`; + perf.mark(endTag); + perf.measure( + `<${formatComponentName(instance, instance.type)}> ${type}`, + startTag, + endTag + ); + perf.clearMarks(startTag); + perf.clearMarks(endTag); + } + { + devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now()); + } + } + function isSupported() { + if (supported !== void 0) { + return supported; + } + if (typeof window !== "undefined" && window.performance) { + supported = true; + perf = window.performance; + } else { + supported = false; + } + return supported; + } + + const queuePostRenderEffect = queueEffectWithSuspense ; + function createRenderer(options) { + return baseCreateRenderer(options); + } + function createHydrationRenderer(options) { + return baseCreateRenderer(options, createHydrationFunctions); + } + function baseCreateRenderer(options, createHydrationFns) { + const target = getGlobalThis(); + target.__VUE__ = true; + { + setDevtoolsHook$1(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target); + } + const { + insert: hostInsert, + remove: hostRemove, + patchProp: hostPatchProp, + createElement: hostCreateElement, + createText: hostCreateText, + createComment: hostCreateComment, + setText: hostSetText, + setElementText: hostSetElementText, + parentNode: hostParentNode, + nextSibling: hostNextSibling, + setScopeId: hostSetScopeId = NOOP, + insertStaticContent: hostInsertStaticContent + } = options; + const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = isHmrUpdating ? false : !!n2.dynamicChildren) => { + if (n1 === n2) { + return; + } + if (n1 && !isSameVNodeType(n1, n2)) { + anchor = getNextHostNode(n1); + unmount(n1, parentComponent, parentSuspense, true); + n1 = null; + } + if (n2.patchFlag === -2) { + optimized = false; + n2.dynamicChildren = null; + } + const { type, ref, shapeFlag } = n2; + switch (type) { + case Text: + processText(n1, n2, container, anchor); + break; + case Comment: + processCommentNode(n1, n2, container, anchor); + break; + case Static: + if (n1 == null) { + mountStaticNode(n2, container, anchor, namespace); + } else { + patchStaticNode(n1, n2, container, namespace); + } + break; + case Fragment: + processFragment( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + break; + default: + if (shapeFlag & 1) { + processElement( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 6) { + processComponent( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 64) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + } else if (shapeFlag & 128) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + } else { + warn$1("Invalid VNode type:", type, `(${typeof type})`); + } + } + if (ref != null && parentComponent) { + setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2); + } else if (ref == null && n1 && n1.ref != null) { + setRef(n1.ref, null, parentSuspense, n1, true); + } + }; + const processText = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateText(n2.children), + container, + anchor + ); + } else { + const el = n2.el = n1.el; + if (n2.children !== n1.children) { + hostSetText(el, n2.children); + } + } + }; + const processCommentNode = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateComment(n2.children || ""), + container, + anchor + ); + } else { + n2.el = n1.el; + } + }; + const mountStaticNode = (n2, container, anchor, namespace) => { + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + namespace, + n2.el, + n2.anchor + ); + }; + const patchStaticNode = (n1, n2, container, namespace) => { + if (n2.children !== n1.children) { + const anchor = hostNextSibling(n1.anchor); + removeStaticNode(n1); + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + namespace + ); + } else { + n2.el = n1.el; + n2.anchor = n1.anchor; + } + }; + const moveStaticNode = ({ el, anchor }, container, nextSibling) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostInsert(el, container, nextSibling); + el = next; + } + hostInsert(anchor, container, nextSibling); + }; + const removeStaticNode = ({ el, anchor }) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostRemove(el); + el = next; + } + hostRemove(anchor); + }; + const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + if (n2.type === "svg") { + namespace = "svg"; + } else if (n2.type === "math") { + namespace = "mathml"; + } + if (n1 == null) { + mountElement( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + patchElement( + n1, + n2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + let el; + let vnodeHook; + const { props, shapeFlag, transition, dirs } = vnode; + el = vnode.el = hostCreateElement( + vnode.type, + namespace, + props && props.is, + props + ); + if (shapeFlag & 8) { + hostSetElementText(el, vnode.children); + } else if (shapeFlag & 16) { + mountChildren( + vnode.children, + el, + null, + parentComponent, + parentSuspense, + resolveChildrenNamespace(vnode, namespace), + slotScopeIds, + optimized + ); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent); + if (props) { + for (const key in props) { + if (key !== "value" && !isReservedProp(key)) { + hostPatchProp(el, key, null, props[key], namespace, parentComponent); + } + } + if ("value" in props) { + hostPatchProp(el, "value", null, props.value, namespace); + } + if (vnodeHook = props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + } + { + def(el, "__vnode", vnode, true); + def(el, "__vueParentComponent", parentComponent, true); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + const needCallTransitionHooks = needTransition(parentSuspense, transition); + if (needCallTransitionHooks) { + transition.beforeEnter(el); + } + hostInsert(el, container, anchor); + if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + }; + const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { + if (scopeId) { + hostSetScopeId(el, scopeId); + } + if (slotScopeIds) { + for (let i = 0; i < slotScopeIds.length; i++) { + hostSetScopeId(el, slotScopeIds[i]); + } + } + if (parentComponent) { + let subTree = parentComponent.subTree; + if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) { + subTree = filterSingleRoot(subTree.children) || subTree; + } + if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) { + const parentVNode = parentComponent.vnode; + setScopeId( + el, + parentVNode, + parentVNode.scopeId, + parentVNode.slotScopeIds, + parentComponent.parent + ); + } + } + }; + const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => { + for (let i = start; i < children.length; i++) { + const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]); + patch( + null, + child, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + const el = n2.el = n1.el; + { + el.__vnode = n2; + } + let { patchFlag, dynamicChildren, dirs } = n2; + patchFlag |= n1.patchFlag & 16; + const oldProps = n1.props || EMPTY_OBJ; + const newProps = n2.props || EMPTY_OBJ; + let vnodeHook; + parentComponent && toggleRecurse(parentComponent, false); + if (vnodeHook = newProps.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + } + if (dirs) { + invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate"); + } + parentComponent && toggleRecurse(parentComponent, true); + if (isHmrUpdating) { + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) { + hostSetElementText(el, ""); + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + el, + parentComponent, + parentSuspense, + resolveChildrenNamespace(n2, namespace), + slotScopeIds + ); + { + traverseStaticChildren(n1, n2); + } + } else if (!optimized) { + patchChildren( + n1, + n2, + el, + null, + parentComponent, + parentSuspense, + resolveChildrenNamespace(n2, namespace), + slotScopeIds, + false + ); + } + if (patchFlag > 0) { + if (patchFlag & 16) { + patchProps(el, oldProps, newProps, parentComponent, namespace); + } else { + if (patchFlag & 2) { + if (oldProps.class !== newProps.class) { + hostPatchProp(el, "class", null, newProps.class, namespace); + } + } + if (patchFlag & 4) { + hostPatchProp(el, "style", oldProps.style, newProps.style, namespace); + } + if (patchFlag & 8) { + const propsToUpdate = n2.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + const key = propsToUpdate[i]; + const prev = oldProps[key]; + const next = newProps[key]; + if (next !== prev || key === "value") { + hostPatchProp(el, key, prev, next, namespace, parentComponent); + } + } + } + } + if (patchFlag & 1) { + if (n1.children !== n2.children) { + hostSetElementText(el, n2.children); + } + } + } else if (!optimized && dynamicChildren == null) { + patchProps(el, oldProps, newProps, parentComponent, namespace); + } + if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated"); + }, parentSuspense); + } + }; + const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => { + for (let i = 0; i < newChildren.length; i++) { + const oldVNode = oldChildren[i]; + const newVNode = newChildren[i]; + const container = ( + // oldVNode may be an errored async setup() component inside Suspense + // which will not have a mounted element + oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent + // of the Fragment itself so it can move its children. + (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement + // which also requires the correct parent container + !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything. + oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : ( + // In other cases, the parent container is not actually used so we + // just pass the block element here to avoid a DOM parentNode call. + fallbackContainer + ) + ); + patch( + oldVNode, + newVNode, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + true + ); + } + }; + const patchProps = (el, oldProps, newProps, parentComponent, namespace) => { + if (oldProps !== newProps) { + if (oldProps !== EMPTY_OBJ) { + for (const key in oldProps) { + if (!isReservedProp(key) && !(key in newProps)) { + hostPatchProp( + el, + key, + oldProps[key], + null, + namespace, + parentComponent + ); + } + } + } + for (const key in newProps) { + if (isReservedProp(key)) continue; + const next = newProps[key]; + const prev = oldProps[key]; + if (next !== prev && key !== "value") { + hostPatchProp(el, key, prev, next, namespace, parentComponent); + } + } + if ("value" in newProps) { + hostPatchProp(el, "value", oldProps.value, newProps.value, namespace); + } + } + }; + const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(""); + const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(""); + let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; + if ( + // #5523 dev root fragment may inherit directives + isHmrUpdating || patchFlag & 2048 + ) { + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + if (n1 == null) { + hostInsert(fragmentStartAnchor, container, anchor); + hostInsert(fragmentEndAnchor, container, anchor); + mountChildren( + // #10007 + // such fragment like `<></>` will be compiled into + // a fragment which doesn't have a children. + // In this case fallback to an empty array + n2.children || [], + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result + // of renderSlot() with no valid children + n1.dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + container, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + { + traverseStaticChildren(n1, n2); + } + } else { + patchChildren( + n1, + n2, + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + } + }; + const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + n2.slotScopeIds = slotScopeIds; + if (n1 == null) { + if (n2.shapeFlag & 512) { + parentComponent.ctx.activate( + n2, + container, + anchor, + namespace, + optimized + ); + } else { + mountComponent( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + optimized + ); + } + } else { + updateComponent(n1, n2, optimized); + } + }; + const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => { + const instance = (initialVNode.component = createComponentInstance( + initialVNode, + parentComponent, + parentSuspense + )); + if (instance.type.__hmrId) { + registerHMR(instance); + } + { + pushWarningContext(initialVNode); + startMeasure(instance, `mount`); + } + if (isKeepAlive(initialVNode)) { + instance.ctx.renderer = internals; + } + { + { + startMeasure(instance, `init`); + } + setupComponent(instance, false, optimized); + { + endMeasure(instance, `init`); + } + } + if (isHmrUpdating) initialVNode.el = null; + if (instance.asyncDep) { + parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized); + if (!initialVNode.el) { + const placeholder = instance.subTree = createVNode(Comment); + processCommentNode(null, placeholder, container, anchor); + initialVNode.placeholder = placeholder.el; + } + } else { + setupRenderEffect( + instance, + initialVNode, + container, + anchor, + parentSuspense, + namespace, + optimized + ); + } + { + popWarningContext(); + endMeasure(instance, `mount`); + } + }; + const updateComponent = (n1, n2, optimized) => { + const instance = n2.component = n1.component; + if (shouldUpdateComponent(n1, n2, optimized)) { + if (instance.asyncDep && !instance.asyncResolved) { + { + pushWarningContext(n2); + } + updateComponentPreRender(instance, n2, optimized); + { + popWarningContext(); + } + return; + } else { + instance.next = n2; + instance.update(); + } + } else { + n2.el = n1.el; + instance.vnode = n2; + } + }; + const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => { + const componentUpdateFn = () => { + if (!instance.isMounted) { + let vnodeHook; + const { el, props } = initialVNode; + const { bm, m, parent, root, type } = instance; + const isAsyncWrapperVNode = isAsyncWrapper(initialVNode); + toggleRecurse(instance, false); + if (bm) { + invokeArrayFns(bm); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) { + invokeVNodeHook(vnodeHook, parent, initialVNode); + } + toggleRecurse(instance, true); + if (el && hydrateNode) { + const hydrateSubTree = () => { + { + startMeasure(instance, `render`); + } + instance.subTree = renderComponentRoot(instance); + { + endMeasure(instance, `render`); + } + { + startMeasure(instance, `hydrate`); + } + hydrateNode( + el, + instance.subTree, + instance, + parentSuspense, + null + ); + { + endMeasure(instance, `hydrate`); + } + }; + if (isAsyncWrapperVNode && type.__asyncHydrate) { + type.__asyncHydrate( + el, + instance, + hydrateSubTree + ); + } else { + hydrateSubTree(); + } + } else { + if (root.ce && // @ts-expect-error _def is private + root.ce._def.shadowRoot !== false) { + root.ce._injectChildStyle(type); + } + { + startMeasure(instance, `render`); + } + const subTree = instance.subTree = renderComponentRoot(instance); + { + endMeasure(instance, `render`); + } + { + startMeasure(instance, `patch`); + } + patch( + null, + subTree, + container, + anchor, + instance, + parentSuspense, + namespace + ); + { + endMeasure(instance, `patch`); + } + initialVNode.el = subTree.el; + } + if (m) { + queuePostRenderEffect(m, parentSuspense); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) { + const scopedInitialVNode = initialVNode; + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), + parentSuspense + ); + } + if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) { + instance.a && queuePostRenderEffect(instance.a, parentSuspense); + } + instance.isMounted = true; + { + devtoolsComponentAdded(instance); + } + initialVNode = container = anchor = null; + } else { + let { next, bu, u, parent, vnode } = instance; + { + const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance); + if (nonHydratedAsyncRoot) { + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } + nonHydratedAsyncRoot.asyncDep.then(() => { + if (!instance.isUnmounted) { + componentUpdateFn(); + } + }); + return; + } + } + let originNext = next; + let vnodeHook; + { + pushWarningContext(next || instance.vnode); + } + toggleRecurse(instance, false); + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } else { + next = vnode; + } + if (bu) { + invokeArrayFns(bu); + } + if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parent, next, vnode); + } + toggleRecurse(instance, true); + { + startMeasure(instance, `render`); + } + const nextTree = renderComponentRoot(instance); + { + endMeasure(instance, `render`); + } + const prevTree = instance.subTree; + instance.subTree = nextTree; + { + startMeasure(instance, `patch`); + } + patch( + prevTree, + nextTree, + // parent may have changed if it's in a teleport + hostParentNode(prevTree.el), + // anchor may have changed if it's in a fragment + getNextHostNode(prevTree), + instance, + parentSuspense, + namespace + ); + { + endMeasure(instance, `patch`); + } + next.el = nextTree.el; + if (originNext === null) { + updateHOCHostEl(instance, nextTree.el); + } + if (u) { + queuePostRenderEffect(u, parentSuspense); + } + if (vnodeHook = next.props && next.props.onVnodeUpdated) { + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, next, vnode), + parentSuspense + ); + } + { + devtoolsComponentUpdated(instance); + } + { + popWarningContext(); + } + } + }; + instance.scope.on(); + const effect = instance.effect = new ReactiveEffect(componentUpdateFn); + instance.scope.off(); + const update = instance.update = effect.run.bind(effect); + const job = instance.job = effect.runIfDirty.bind(effect); + job.i = instance; + job.id = instance.uid; + effect.scheduler = () => queueJob(job); + toggleRecurse(instance, true); + { + effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0; + effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0; + } + update(); + }; + const updateComponentPreRender = (instance, nextVNode, optimized) => { + nextVNode.component = instance; + const prevProps = instance.vnode.props; + instance.vnode = nextVNode; + instance.next = null; + updateProps(instance, nextVNode.props, prevProps, optimized); + updateSlots(instance, nextVNode.children, optimized); + pauseTracking(); + flushPreFlushCbs(instance); + resetTracking(); + }; + const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => { + const c1 = n1 && n1.children; + const prevShapeFlag = n1 ? n1.shapeFlag : 0; + const c2 = n2.children; + const { patchFlag, shapeFlag } = n2; + if (patchFlag > 0) { + if (patchFlag & 128) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + return; + } else if (patchFlag & 256) { + patchUnkeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + return; + } + } + if (shapeFlag & 8) { + if (prevShapeFlag & 16) { + unmountChildren(c1, parentComponent, parentSuspense); + } + if (c2 !== c1) { + hostSetElementText(container, c2); + } + } else { + if (prevShapeFlag & 16) { + if (shapeFlag & 16) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + unmountChildren(c1, parentComponent, parentSuspense, true); + } + } else { + if (prevShapeFlag & 8) { + hostSetElementText(container, ""); + } + if (shapeFlag & 16) { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + } + } + }; + const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + c1 = c1 || EMPTY_ARR; + c2 = c2 || EMPTY_ARR; + const oldLength = c1.length; + const newLength = c2.length; + const commonLength = Math.min(oldLength, newLength); + let i; + for (i = 0; i < commonLength; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + patch( + c1[i], + nextChild, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + if (oldLength > newLength) { + unmountChildren( + c1, + parentComponent, + parentSuspense, + true, + false, + commonLength + ); + } else { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + commonLength + ); + } + }; + const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + let i = 0; + const l2 = c2.length; + let e1 = c1.length - 1; + let e2 = l2 - 1; + while (i <= e1 && i <= e2) { + const n1 = c1[i]; + const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + break; + } + i++; + } + while (i <= e1 && i <= e2) { + const n1 = c1[e1]; + const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + break; + } + e1--; + e2--; + } + if (i > e1) { + if (i <= e2) { + const nextPos = e2 + 1; + const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor; + while (i <= e2) { + patch( + null, + c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + i++; + } + } + } else if (i > e2) { + while (i <= e1) { + unmount(c1[i], parentComponent, parentSuspense, true); + i++; + } + } else { + const s1 = i; + const s2 = i; + const keyToNewIndexMap = /* @__PURE__ */ new Map(); + for (i = s2; i <= e2; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (nextChild.key != null) { + if (keyToNewIndexMap.has(nextChild.key)) { + warn$1( + `Duplicate keys found during update:`, + JSON.stringify(nextChild.key), + `Make sure keys are unique.` + ); + } + keyToNewIndexMap.set(nextChild.key, i); + } + } + let j; + let patched = 0; + const toBePatched = e2 - s2 + 1; + let moved = false; + let maxNewIndexSoFar = 0; + const newIndexToOldIndexMap = new Array(toBePatched); + for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0; + for (i = s1; i <= e1; i++) { + const prevChild = c1[i]; + if (patched >= toBePatched) { + unmount(prevChild, parentComponent, parentSuspense, true); + continue; + } + let newIndex; + if (prevChild.key != null) { + newIndex = keyToNewIndexMap.get(prevChild.key); + } else { + for (j = s2; j <= e2; j++) { + if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) { + newIndex = j; + break; + } + } + } + if (newIndex === void 0) { + unmount(prevChild, parentComponent, parentSuspense, true); + } else { + newIndexToOldIndexMap[newIndex - s2] = i + 1; + if (newIndex >= maxNewIndexSoFar) { + maxNewIndexSoFar = newIndex; + } else { + moved = true; + } + patch( + prevChild, + c2[newIndex], + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + patched++; + } + } + const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR; + j = increasingNewIndexSequence.length - 1; + for (i = toBePatched - 1; i >= 0; i--) { + const nextIndex = s2 + i; + const nextChild = c2[nextIndex]; + const anchorVNode = c2[nextIndex + 1]; + const anchor = nextIndex + 1 < l2 ? ( + // #13559, fallback to el placeholder for unresolved async component + anchorVNode.el || anchorVNode.placeholder + ) : parentAnchor; + if (newIndexToOldIndexMap[i] === 0) { + patch( + null, + nextChild, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (moved) { + if (j < 0 || i !== increasingNewIndexSequence[j]) { + move(nextChild, container, anchor, 2); + } else { + j--; + } + } + } + } + }; + const move = (vnode, container, anchor, moveType, parentSuspense = null) => { + const { el, type, transition, children, shapeFlag } = vnode; + if (shapeFlag & 6) { + move(vnode.component.subTree, container, anchor, moveType); + return; + } + if (shapeFlag & 128) { + vnode.suspense.move(container, anchor, moveType); + return; + } + if (shapeFlag & 64) { + type.move(vnode, container, anchor, internals); + return; + } + if (type === Fragment) { + hostInsert(el, container, anchor); + for (let i = 0; i < children.length; i++) { + move(children[i], container, anchor, moveType); + } + hostInsert(vnode.anchor, container, anchor); + return; + } + if (type === Static) { + moveStaticNode(vnode, container, anchor); + return; + } + const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition; + if (needTransition2) { + if (moveType === 0) { + transition.beforeEnter(el); + hostInsert(el, container, anchor); + queuePostRenderEffect(() => transition.enter(el), parentSuspense); + } else { + const { leave, delayLeave, afterLeave } = transition; + const remove2 = () => { + if (vnode.ctx.isUnmounted) { + hostRemove(el); + } else { + hostInsert(el, container, anchor); + } + }; + const performLeave = () => { + leave(el, () => { + remove2(); + afterLeave && afterLeave(); + }); + }; + if (delayLeave) { + delayLeave(el, remove2, performLeave); + } else { + performLeave(); + } + } + } else { + hostInsert(el, container, anchor); + } + }; + const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => { + const { + type, + props, + ref, + children, + dynamicChildren, + shapeFlag, + patchFlag, + dirs, + cacheIndex + } = vnode; + if (patchFlag === -2) { + optimized = false; + } + if (ref != null) { + pauseTracking(); + setRef(ref, null, parentSuspense, vnode, true); + resetTracking(); + } + if (cacheIndex != null) { + parentComponent.renderCache[cacheIndex] = void 0; + } + if (shapeFlag & 256) { + parentComponent.ctx.deactivate(vnode); + return; + } + const shouldInvokeDirs = shapeFlag & 1 && dirs; + const shouldInvokeVnodeHook = !isAsyncWrapper(vnode); + let vnodeHook; + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + if (shapeFlag & 6) { + unmountComponent(vnode.component, parentSuspense, doRemove); + } else { + if (shapeFlag & 128) { + vnode.suspense.unmount(parentSuspense, doRemove); + return; + } + if (shouldInvokeDirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount"); + } + if (shapeFlag & 64) { + vnode.type.remove( + vnode, + parentComponent, + parentSuspense, + internals, + doRemove + ); + } else if (dynamicChildren && // #5154 + // when v-once is used inside a block, setBlockTracking(-1) marks the + // parent block with hasOnce: true + // so that it doesn't take the fast path during unmount - otherwise + // components nested in v-once are never unmounted. + !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments + (type !== Fragment || patchFlag > 0 && patchFlag & 64)) { + unmountChildren( + dynamicChildren, + parentComponent, + parentSuspense, + false, + true + ); + } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) { + unmountChildren(children, parentComponent, parentSuspense); + } + if (doRemove) { + remove(vnode); + } + } + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted"); + }, parentSuspense); + } + }; + const remove = (vnode) => { + const { type, el, anchor, transition } = vnode; + if (type === Fragment) { + if (vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) { + vnode.children.forEach((child) => { + if (child.type === Comment) { + hostRemove(child.el); + } else { + remove(child); + } + }); + } else { + removeFragment(el, anchor); + } + return; + } + if (type === Static) { + removeStaticNode(vnode); + return; + } + const performRemove = () => { + hostRemove(el); + if (transition && !transition.persisted && transition.afterLeave) { + transition.afterLeave(); + } + }; + if (vnode.shapeFlag & 1 && transition && !transition.persisted) { + const { leave, delayLeave } = transition; + const performLeave = () => leave(el, performRemove); + if (delayLeave) { + delayLeave(vnode.el, performRemove, performLeave); + } else { + performLeave(); + } + } else { + performRemove(); + } + }; + const removeFragment = (cur, end) => { + let next; + while (cur !== end) { + next = hostNextSibling(cur); + hostRemove(cur); + cur = next; + } + hostRemove(end); + }; + const unmountComponent = (instance, parentSuspense, doRemove) => { + if (instance.type.__hmrId) { + unregisterHMR(instance); + } + const { + bum, + scope, + job, + subTree, + um, + m, + a, + parent, + slots: { __: slotCacheKeys } + } = instance; + invalidateMount(m); + invalidateMount(a); + if (bum) { + invokeArrayFns(bum); + } + if (parent && isArray(slotCacheKeys)) { + slotCacheKeys.forEach((v) => { + parent.renderCache[v] = void 0; + }); + } + scope.stop(); + if (job) { + job.flags |= 8; + unmount(subTree, instance, parentSuspense, doRemove); + } + if (um) { + queuePostRenderEffect(um, parentSuspense); + } + queuePostRenderEffect(() => { + instance.isUnmounted = true; + }, parentSuspense); + if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0) { + parentSuspense.resolve(); + } + } + { + devtoolsComponentRemoved(instance); + } + }; + const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => { + for (let i = start; i < children.length; i++) { + unmount(children[i], parentComponent, parentSuspense, doRemove, optimized); + } + }; + const getNextHostNode = (vnode) => { + if (vnode.shapeFlag & 6) { + return getNextHostNode(vnode.component.subTree); + } + if (vnode.shapeFlag & 128) { + return vnode.suspense.next(); + } + const el = hostNextSibling(vnode.anchor || vnode.el); + const teleportEnd = el && el[TeleportEndKey]; + return teleportEnd ? hostNextSibling(teleportEnd) : el; + }; + let isFlushing = false; + const render = (vnode, container, namespace) => { + if (vnode == null) { + if (container._vnode) { + unmount(container._vnode, null, null, true); + } + } else { + patch( + container._vnode || null, + vnode, + container, + null, + null, + null, + namespace + ); + } + container._vnode = vnode; + if (!isFlushing) { + isFlushing = true; + flushPreFlushCbs(); + flushPostFlushCbs(); + isFlushing = false; + } + }; + const internals = { + p: patch, + um: unmount, + m: move, + r: remove, + mt: mountComponent, + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + n: getNextHostNode, + o: options + }; + let hydrate; + let hydrateNode; + if (createHydrationFns) { + [hydrate, hydrateNode] = createHydrationFns( + internals + ); + } + return { + render, + hydrate, + createApp: createAppAPI(render, hydrate) + }; + } + function resolveChildrenNamespace({ type, props }, currentNamespace) { + return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace; + } + function toggleRecurse({ effect, job }, allowed) { + if (allowed) { + effect.flags |= 32; + job.flags |= 4; + } else { + effect.flags &= -33; + job.flags &= -5; + } + } + function needTransition(parentSuspense, transition) { + return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted; + } + function traverseStaticChildren(n1, n2, shallow = false) { + const ch1 = n1.children; + const ch2 = n2.children; + if (isArray(ch1) && isArray(ch2)) { + for (let i = 0; i < ch1.length; i++) { + const c1 = ch1[i]; + let c2 = ch2[i]; + if (c2.shapeFlag & 1 && !c2.dynamicChildren) { + if (c2.patchFlag <= 0 || c2.patchFlag === 32) { + c2 = ch2[i] = cloneIfMounted(ch2[i]); + c2.el = c1.el; + } + if (!shallow && c2.patchFlag !== -2) + traverseStaticChildren(c1, c2); + } + if (c2.type === Text) { + c2.el = c1.el; + } + if (c2.type === Comment && !c2.el) { + c2.el = c1.el; + } + { + c2.el && (c2.el.__vnode = c2); + } + } + } + } + function getSequence(arr) { + const p = arr.slice(); + const result = [0]; + let i, j, u, v, c; + const len = arr.length; + for (i = 0; i < len; i++) { + const arrI = arr[i]; + if (arrI !== 0) { + j = result[result.length - 1]; + if (arr[j] < arrI) { + p[i] = j; + result.push(i); + continue; + } + u = 0; + v = result.length - 1; + while (u < v) { + c = u + v >> 1; + if (arr[result[c]] < arrI) { + u = c + 1; + } else { + v = c; + } + } + if (arrI < arr[result[u]]) { + if (u > 0) { + p[i] = result[u - 1]; + } + result[u] = i; + } + } + } + u = result.length; + v = result[u - 1]; + while (u-- > 0) { + result[u] = v; + v = p[v]; + } + return result; + } + function locateNonHydratedAsyncRoot(instance) { + const subComponent = instance.subTree.component; + if (subComponent) { + if (subComponent.asyncDep && !subComponent.asyncResolved) { + return subComponent; + } else { + return locateNonHydratedAsyncRoot(subComponent); + } + } + } + function invalidateMount(hooks) { + if (hooks) { + for (let i = 0; i < hooks.length; i++) + hooks[i].flags |= 8; + } + } + + const ssrContextKey = Symbol.for("v-scx"); + const useSSRContext = () => { + { + warn$1(`useSSRContext() is not supported in the global build.`); + } + }; + + function watchEffect(effect, options) { + return doWatch(effect, null, options); + } + function watchPostEffect(effect, options) { + return doWatch( + effect, + null, + extend({}, options, { flush: "post" }) + ); + } + function watchSyncEffect(effect, options) { + return doWatch( + effect, + null, + extend({}, options, { flush: "sync" }) + ); + } + function watch(source, cb, options) { + if (!isFunction(cb)) { + warn$1( + `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` + ); + } + return doWatch(source, cb, options); + } + function doWatch(source, cb, options = EMPTY_OBJ) { + const { immediate, deep, flush, once } = options; + if (!cb) { + if (immediate !== void 0) { + warn$1( + `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (deep !== void 0) { + warn$1( + `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (once !== void 0) { + warn$1( + `watch() "once" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + } + const baseWatchOptions = extend({}, options); + baseWatchOptions.onWarn = warn$1; + const instance = currentInstance; + baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args); + let isPre = false; + if (flush === "post") { + baseWatchOptions.scheduler = (job) => { + queuePostRenderEffect(job, instance && instance.suspense); + }; + } else if (flush !== "sync") { + isPre = true; + baseWatchOptions.scheduler = (job, isFirstRun) => { + if (isFirstRun) { + job(); + } else { + queueJob(job); + } + }; + } + baseWatchOptions.augmentJob = (job) => { + if (cb) { + job.flags |= 4; + } + if (isPre) { + job.flags |= 2; + if (instance) { + job.id = instance.uid; + job.i = instance; + } + } + }; + const watchHandle = watch$1(source, cb, baseWatchOptions); + return watchHandle; + } + function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const reset = setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + reset(); + return res; + } + function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; + } + + function useModel(props, name, options = EMPTY_OBJ) { + const i = getCurrentInstance(); + if (!i) { + warn$1(`useModel() called without active instance.`); + return ref(); + } + const camelizedName = camelize(name); + if (!i.propsOptions[0][camelizedName]) { + warn$1(`useModel() called with prop "${name}" which is not declared.`); + return ref(); + } + const hyphenatedName = hyphenate(name); + const modifiers = getModelModifiers(props, camelizedName); + const res = customRef((track, trigger) => { + let localValue; + let prevSetValue = EMPTY_OBJ; + let prevEmittedValue; + watchSyncEffect(() => { + const propValue = props[camelizedName]; + if (hasChanged(localValue, propValue)) { + localValue = propValue; + trigger(); + } + }); + return { + get() { + track(); + return options.get ? options.get(localValue) : localValue; + }, + set(value) { + const emittedValue = options.set ? options.set(value) : value; + if (!hasChanged(emittedValue, localValue) && !(prevSetValue !== EMPTY_OBJ && hasChanged(value, prevSetValue))) { + return; + } + const rawProps = i.vnode.props; + if (!(rawProps && // check if parent has passed v-model + (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) { + localValue = value; + trigger(); + } + i.emit(`update:${name}`, emittedValue); + if (hasChanged(value, emittedValue) && hasChanged(value, prevSetValue) && !hasChanged(emittedValue, prevEmittedValue)) { + trigger(); + } + prevSetValue = value; + prevEmittedValue = emittedValue; + } + }; + }); + res[Symbol.iterator] = () => { + let i2 = 0; + return { + next() { + if (i2 < 2) { + return { value: i2++ ? modifiers || EMPTY_OBJ : res, done: false }; + } else { + return { done: true }; + } + } + }; + }; + return res; + } + const getModelModifiers = (props, modelName) => { + return modelName === "modelValue" || modelName === "model-value" ? props.modelModifiers : props[`${modelName}Modifiers`] || props[`${camelize(modelName)}Modifiers`] || props[`${hyphenate(modelName)}Modifiers`]; + }; + + function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) return; + const props = instance.vnode.props || EMPTY_OBJ; + { + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && true) { + if (!propsOptions || !(toHandlerKey(camelize(event)) in propsOptions)) { + warn$1( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(camelize(event))}" prop.` + ); + } + } else { + const validator = emitsOptions[event]; + if (isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn$1( + `Invalid event arguments: event validation failed for event "${event}".` + ); + } + } + } + } + } + let args = rawArgs; + const isModelListener = event.startsWith("update:"); + const modifiers = isModelListener && getModelModifiers(props, event.slice(7)); + if (modifiers) { + if (modifiers.trim) { + args = rawArgs.map((a) => isString(a) ? a.trim() : a); + } + if (modifiers.number) { + args = rawArgs.map(looseToNumber); + } + } + { + devtoolsComponentEmit(instance, event, args); + } + { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { + warn$1( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate( + event + )}" instead of "${event}".` + ); + } + } + let handlerName; + let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = toHandlerKey(camelize(event))]; + if (!handler && isModelListener) { + handler = props[handlerName = toHandlerKey(hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } + } + function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (!isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + extend(normalized, raw); + } + if (isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; + } + function isEmitListener(options, key) { + if (!options || !isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key); + } + + let accessedAttrs = false; + function markAttrsAccessed() { + accessedAttrs = true; + } + function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + propsOptions: [propsOptions], + slots, + attrs, + emit, + render, + renderCache, + props, + data, + setupState, + ctx, + inheritAttrs + } = instance; + const prev = setCurrentRenderingInstance(instance); + let result; + let fallthroughAttrs; + { + accessedAttrs = false; + } + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn$1( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode( + render.call( + thisProxy, + proxyToUse, + renderCache, + true ? shallowReadonly(props) : props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render2 = Component; + if (attrs === props) { + markAttrsAccessed(); + } + result = normalizeVNode( + render2.length > 1 ? render2( + true ? shallowReadonly(props) : props, + true ? { + get attrs() { + markAttrsAccessed(); + return shallowReadonly(attrs); + }, + slots, + emit + } : { attrs, slots, emit } + ) : render2( + true ? shallowReadonly(props) : props, + null + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + let setRoot = void 0; + if (result.patchFlag > 0 && result.patchFlag & 2048) { + [root, setRoot] = getChildRoot(result); + } + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs, false, true); + } else if (!accessedAttrs && root.type !== Comment) { + const allAttrs = Object.keys(attrs); + const eventAttrs = []; + const extraAttrs = []; + for (let i = 0, l = allAttrs.length; i < l; i++) { + const key = allAttrs[i]; + if (isOn(key)) { + if (!isModelListener(key)) { + eventAttrs.push(key[2].toLowerCase() + key.slice(3)); + } + } else { + extraAttrs.push(key); + } + } + if (extraAttrs.length) { + warn$1( + `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text or teleport root nodes.` + ); + } + if (eventAttrs.length) { + warn$1( + `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` + ); + } + } + } + } + if (vnode.dirs) { + if (!isElementRoot(root)) { + warn$1( + `Runtime directive used on component with non-element root node. The directives will not function as intended.` + ); + } + root = cloneVNode(root, null, false, true); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + if (!isElementRoot(root)) { + warn$1( + `Component inside <Transition> renders non-element root node that cannot be animated.` + ); + } + setTransitionHooks(root, vnode.transition); + } + if (setRoot) { + setRoot(root); + } else { + result = root; + } + setCurrentRenderingInstance(prev); + return result; + } + const getChildRoot = (vnode) => { + const rawChildren = vnode.children; + const dynamicChildren = vnode.dynamicChildren; + const childRoot = filterSingleRoot(rawChildren, false); + if (!childRoot) { + return [vnode, void 0]; + } else if (childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) { + return getChildRoot(childRoot); + } + const index = rawChildren.indexOf(childRoot); + const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; + const setRoot = (updatedRoot) => { + rawChildren[index] = updatedRoot; + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } + } + }; + return [normalizeVNode(childRoot), setRoot]; + }; + function filterSingleRoot(children, recurse = true) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + if (recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) { + return filterSingleRoot(singleRoot.children); + } + } + } + } else { + return; + } + } + return singleRoot; + } + const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; + }; + const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; + }; + const isElementRoot = (vnode) => { + return vnode.shapeFlag & (6 | 1) || vnode.type === Comment; + }; + function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if ((prevChildren || nextChildren) && isHmrUpdating) { + return true; + } + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; + } + function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; + } + function updateHOCHostEl({ vnode, parent }, el) { + while (parent) { + const root = parent.subTree; + if (root.suspense && root.suspense.activeBranch === vnode) { + root.el = vnode.el; + } + if (root === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } else { + break; + } + } + } + + const isSuspense = (type) => type.__isSuspense; + let suspenseId = 0; + const SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) { + n2.suspense = n1.suspense; + n2.suspense.vnode = n2; + n2.el = n1.el; + return; + } + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + normalize: normalizeSuspenseChildren + }; + const Suspense = SuspenseImpl ; + function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (isFunction(eventListener)) { + eventListener(); + } + } + function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } + } + function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + if (!isHydrating) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } + } else { + suspense.pendingId = suspenseId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + if (newBranch.shapeFlag & 512) { + suspense.pendingId = newBranch.component.suspenseId; + } else { + suspense.pendingId = suspenseId++; + } + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } + } + let hasWarned = false; + function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + if (!hasWarned) { + hasWarned = true; + console[console.info ? "info" : "log"]( + `<Suspense> is an experimental feature and its API will likely change.` + ); + } + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0; + { + assertNumber(timeout, `Suspense timeout`); + } + const initialAnchor = anchor; + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + namespace, + container, + hiddenContainer, + deps: 0, + pendingId: suspenseId++, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: !isHydrating, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + { + if (!resume && !suspense.pendingBranch) { + throw new Error( + `suspense.resolve() is called without a pending branch.` + ); + } + if (suspense.isUnmounted) { + throw new Error( + `suspense.resolve() is called on an already unmounted suspense boundary.` + ); + } + } + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + let delayEnter = false; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move( + pendingBranch, + container2, + anchor === initialAnchor ? next(activeBranch) : anchor, + 0 + ); + queuePostFlushCb(effects); + } + }; + } + if (activeBranch) { + if (parentNode(activeBranch.el) === container2) { + anchor = next(activeBranch); + } + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor && !delayEnter) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const anchor2 = next(activeBranch); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + anchor2, + parentComponent2, + null, + // fallback tree will not have suspense context + namespace2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect, optimized2) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + { + pushWarningContext(vnode2); + } + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + namespace, + optimized2 + ); + if (placeholder) { + remove(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + { + popWarningContext(); + } + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; + } + function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + // eslint-disable-next-line no-restricted-globals + document.createElement("div"), + null, + namespace, + slotScopeIds, + optimized, + rendererInternals, + true + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; + } + function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); + } + function normalizeSuspenseSlot(s) { + let block; + if (isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (isArray(s)) { + const singleChild = filterSingleRoot(s); + if (!singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) { + warn$1(`<Suspense> slots expect a single root node.`); + } + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; + } + function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } + } + function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + let el = branch.el; + while (!el && branch.component) { + branch = branch.component.subTree; + el = branch.el; + } + vnode.el = el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } + } + function isVNodeSuspensible(vnode) { + const suspensible = vnode.props && vnode.props.suspensible; + return suspensible != null && suspensible !== false; + } + + const Fragment = Symbol.for("v-fgt"); + const Text = Symbol.for("v-txt"); + const Comment = Symbol.for("v-cmt"); + const Static = Symbol.for("v-stc"); + const blockStack = []; + let currentBlock = null; + function openBlock(disableTracking = false) { + blockStack.push(currentBlock = disableTracking ? null : []); + } + function closeBlock() { + blockStack.pop(); + currentBlock = blockStack[blockStack.length - 1] || null; + } + let isBlockTreeEnabled = 1; + function setBlockTracking(value, inVOnce = false) { + isBlockTreeEnabled += value; + if (value < 0 && currentBlock && inVOnce) { + currentBlock.hasOnce = true; + } + } + function setupBlock(vnode) { + vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null; + closeBlock(); + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(vnode); + } + return vnode; + } + function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) { + return setupBlock( + createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + true + ) + ); + } + function createBlock(type, props, children, patchFlag, dynamicProps) { + return setupBlock( + createVNode( + type, + props, + children, + patchFlag, + dynamicProps, + true + ) + ); + } + function isVNode(value) { + return value ? value.__v_isVNode === true : false; + } + function isSameVNodeType(n1, n2) { + if (n2.shapeFlag & 6 && n1.component) { + const dirtyInstances = hmrDirtyComponents.get(n2.type); + if (dirtyInstances && dirtyInstances.has(n1.component)) { + n1.shapeFlag &= -257; + n2.shapeFlag &= -513; + return false; + } + } + return n1.type === n2.type && n1.key === n2.key; + } + let vnodeArgsTransformer; + function transformVNodeArgs(transformer) { + vnodeArgsTransformer = transformer; + } + const createVNodeWithArgsTransform = (...args) => { + return _createVNode( + ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args + ); + }; + const normalizeKey = ({ key }) => key != null ? key : null; + const normalizeRef = ({ + ref, + ref_key, + ref_for + }) => { + if (typeof ref === "number") { + ref = "" + ref; + } + return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null; + }; + function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) { + const vnode = { + __v_isVNode: true, + __v_skip: true, + type, + props, + key: props && normalizeKey(props), + ref: props && normalizeRef(props), + scopeId: currentScopeId, + slotScopeIds: null, + children, + component: null, + suspense: null, + ssContent: null, + ssFallback: null, + dirs: null, + transition: null, + el: null, + anchor: null, + target: null, + targetStart: null, + targetAnchor: null, + staticCount: 0, + shapeFlag, + patchFlag, + dynamicProps, + dynamicChildren: null, + appContext: null, + ctx: currentRenderingInstance + }; + if (needFullChildrenNormalization) { + normalizeChildren(vnode, children); + if (shapeFlag & 128) { + type.normalize(vnode); + } + } else if (children) { + vnode.shapeFlag |= isString(children) ? 8 : 16; + } + if (vnode.key !== vnode.key) { + warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type); + } + if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself + !isBlockNode && // has current parent block + currentBlock && // presence of a patch flag indicates this node needs patching on updates. + // component nodes also should always be patched, because even if the + // component doesn't need to update, it needs to persist the instance on to + // the next vnode so that it can be properly unmounted later. + (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the + // vnode should not be considered dynamic due to handler caching. + vnode.patchFlag !== 32) { + currentBlock.push(vnode); + } + return vnode; + } + const createVNode = createVNodeWithArgsTransform ; + function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) { + if (!type || type === NULL_DYNAMIC_COMPONENT) { + if (!type) { + warn$1(`Invalid vnode type when creating vnode: ${type}.`); + } + type = Comment; + } + if (isVNode(type)) { + const cloned = cloneVNode( + type, + props, + true + /* mergeRef: true */ + ); + if (children) { + normalizeChildren(cloned, children); + } + if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) { + if (cloned.shapeFlag & 6) { + currentBlock[currentBlock.indexOf(type)] = cloned; + } else { + currentBlock.push(cloned); + } + } + cloned.patchFlag = -2; + return cloned; + } + if (isClassComponent(type)) { + type = type.__vccOpts; + } + if (props) { + props = guardReactiveProps(props); + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (isObject(style)) { + if (isProxy(style) && !isArray(style)) { + style = extend({}, style); + } + props.style = normalizeStyle(style); + } + } + const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0; + if (shapeFlag & 4 && isProxy(type)) { + type = toRaw(type); + warn$1( + `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`, + ` +Component that was made reactive: `, + type + ); + } + return createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + isBlockNode, + true + ); + } + function guardReactiveProps(props) { + if (!props) return null; + return isProxy(props) || isInternalObject(props) ? extend({}, props) : props; + } + function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) { + const { props, ref, patchFlag, children, transition } = vnode; + const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props; + const cloned = { + __v_isVNode: true, + __v_skip: true, + type: vnode.type, + props: mergedProps, + key: mergedProps && normalizeKey(mergedProps), + ref: extraProps && extraProps.ref ? ( + // #2078 in the case of <component :is="vnode" ref="extra"/> + // if the vnode itself already has a ref, cloneVNode will need to merge + // the refs so the single vnode can be set on multiple refs + mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps) + ) : ref, + scopeId: vnode.scopeId, + slotScopeIds: vnode.slotScopeIds, + children: patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children, + target: vnode.target, + targetStart: vnode.targetStart, + targetAnchor: vnode.targetAnchor, + staticCount: vnode.staticCount, + shapeFlag: vnode.shapeFlag, + // if the vnode is cloned with extra props, we can no longer assume its + // existing patch flag to be reliable and need to add the FULL_PROPS flag. + // note: preserve flag for fragments since they use the flag for children + // fast paths only. + patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag, + dynamicProps: vnode.dynamicProps, + dynamicChildren: vnode.dynamicChildren, + appContext: vnode.appContext, + dirs: vnode.dirs, + transition, + // These should technically only be non-null on mounted VNodes. However, + // they *should* be copied for kept-alive vnodes. So we just always copy + // them since them being non-null during a mount doesn't affect the logic as + // they will simply be overwritten. + component: vnode.component, + suspense: vnode.suspense, + ssContent: vnode.ssContent && cloneVNode(vnode.ssContent), + ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback), + placeholder: vnode.placeholder, + el: vnode.el, + anchor: vnode.anchor, + ctx: vnode.ctx, + ce: vnode.ce + }; + if (transition && cloneTransition) { + setTransitionHooks( + cloned, + transition.clone(cloned) + ); + } + return cloned; + } + function deepCloneVNode(vnode) { + const cloned = cloneVNode(vnode); + if (isArray(vnode.children)) { + cloned.children = vnode.children.map(deepCloneVNode); + } + return cloned; + } + function createTextVNode(text = " ", flag = 0) { + return createVNode(Text, null, text, flag); + } + function createStaticVNode(content, numberOfNodes) { + const vnode = createVNode(Static, null, content); + vnode.staticCount = numberOfNodes; + return vnode; + } + function createCommentVNode(text = "", asBlock = false) { + return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text); + } + function normalizeVNode(child) { + if (child == null || typeof child === "boolean") { + return createVNode(Comment); + } else if (isArray(child)) { + return createVNode( + Fragment, + null, + // #3666, avoid reference pollution when reusing vnode + child.slice() + ); + } else if (isVNode(child)) { + return cloneIfMounted(child); + } else { + return createVNode(Text, null, String(child)); + } + } + function cloneIfMounted(child) { + return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child); + } + function normalizeChildren(vnode, children) { + let type = 0; + const { shapeFlag } = vnode; + if (children == null) { + children = null; + } else if (isArray(children)) { + type = 16; + } else if (typeof children === "object") { + if (shapeFlag & (1 | 64)) { + const slot = children.default; + if (slot) { + slot._c && (slot._d = false); + normalizeChildren(vnode, slot()); + slot._c && (slot._d = true); + } + return; + } else { + type = 32; + const slotFlag = children._; + if (!slotFlag && !isInternalObject(children)) { + children._ctx = currentRenderingInstance; + } else if (slotFlag === 3 && currentRenderingInstance) { + if (currentRenderingInstance.slots._ === 1) { + children._ = 1; + } else { + children._ = 2; + vnode.patchFlag |= 1024; + } + } + } + } else if (isFunction(children)) { + children = { default: children, _ctx: currentRenderingInstance }; + type = 32; + } else { + children = String(children); + if (shapeFlag & 64) { + type = 16; + children = [createTextVNode(children)]; + } else { + type = 8; + } + } + vnode.children = children; + vnode.shapeFlag |= type; + } + function mergeProps(...args) { + const ret = {}; + for (let i = 0; i < args.length; i++) { + const toMerge = args[i]; + for (const key in toMerge) { + if (key === "class") { + if (ret.class !== toMerge.class) { + ret.class = normalizeClass([ret.class, toMerge.class]); + } + } else if (key === "style") { + ret.style = normalizeStyle([ret.style, toMerge.style]); + } else if (isOn(key)) { + const existing = ret[key]; + const incoming = toMerge[key]; + if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) { + ret[key] = existing ? [].concat(existing, incoming) : incoming; + } + } else if (key !== "") { + ret[key] = toMerge[key]; + } + } + } + return ret; + } + function invokeVNodeHook(hook, instance, vnode, prevVNode = null) { + callWithAsyncErrorHandling(hook, instance, 7, [ + vnode, + prevVNode + ]); + } + + const emptyAppContext = createAppContext(); + let uid = 0; + function createComponentInstance(vnode, parent, suspense) { + const type = vnode.type; + const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext; + const instance = { + uid: uid++, + vnode, + type, + parent, + appContext, + root: null, + // to be immediately set + next: null, + subTree: null, + // will be set synchronously right after creation + effect: null, + update: null, + // will be set synchronously right after creation + job: null, + scope: new EffectScope( + true + /* detached */ + ), + render: null, + proxy: null, + exposed: null, + exposeProxy: null, + withProxy: null, + provides: parent ? parent.provides : Object.create(appContext.provides), + ids: parent ? parent.ids : ["", 0, 0], + accessCache: null, + renderCache: [], + // local resolved assets + components: null, + directives: null, + // resolved props and emits options + propsOptions: normalizePropsOptions(type, appContext), + emitsOptions: normalizeEmitsOptions(type, appContext), + // emit + emit: null, + // to be set immediately + emitted: null, + // props default value + propsDefaults: EMPTY_OBJ, + // inheritAttrs + inheritAttrs: type.inheritAttrs, + // state + ctx: EMPTY_OBJ, + data: EMPTY_OBJ, + props: EMPTY_OBJ, + attrs: EMPTY_OBJ, + slots: EMPTY_OBJ, + refs: EMPTY_OBJ, + setupState: EMPTY_OBJ, + setupContext: null, + // suspense related + suspense, + suspenseId: suspense ? suspense.pendingId : 0, + asyncDep: null, + asyncResolved: false, + // lifecycle hooks + // not using enums here because it results in computed properties + isMounted: false, + isUnmounted: false, + isDeactivated: false, + bc: null, + c: null, + bm: null, + m: null, + bu: null, + u: null, + um: null, + bum: null, + da: null, + a: null, + rtg: null, + rtc: null, + ec: null, + sp: null + }; + { + instance.ctx = createDevRenderContext(instance); + } + instance.root = parent ? parent.root : instance; + instance.emit = emit.bind(null, instance); + if (vnode.ce) { + vnode.ce(instance); + } + return instance; + } + let currentInstance = null; + const getCurrentInstance = () => currentInstance || currentRenderingInstance; + let internalSetCurrentInstance; + let setInSSRSetupState; + { + internalSetCurrentInstance = (i) => { + currentInstance = i; + }; + setInSSRSetupState = (v) => { + isInSSRComponentSetup = v; + }; + } + const setCurrentInstance = (instance) => { + const prev = currentInstance; + internalSetCurrentInstance(instance); + instance.scope.on(); + return () => { + instance.scope.off(); + internalSetCurrentInstance(prev); + }; + }; + const unsetCurrentInstance = () => { + currentInstance && currentInstance.scope.off(); + internalSetCurrentInstance(null); + }; + const isBuiltInTag = /* @__PURE__ */ makeMap("slot,component"); + function validateComponentName(name, { isNativeTag }) { + if (isBuiltInTag(name) || isNativeTag(name)) { + warn$1( + "Do not use built-in or reserved HTML elements as component id: " + name + ); + } + } + function isStatefulComponent(instance) { + return instance.vnode.shapeFlag & 4; + } + let isInSSRComponentSetup = false; + function setupComponent(instance, isSSR = false, optimized = false) { + isSSR && setInSSRSetupState(isSSR); + const { props, children } = instance.vnode; + const isStateful = isStatefulComponent(instance); + initProps(instance, props, isStateful, isSSR); + initSlots(instance, children, optimized || isSSR); + const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; + isSSR && setInSSRSetupState(false); + return setupResult; + } + function setupStatefulComponent(instance, isSSR) { + var _a; + const Component = instance.type; + { + if (Component.name) { + validateComponentName(Component.name, instance.appContext.config); + } + if (Component.components) { + const names = Object.keys(Component.components); + for (let i = 0; i < names.length; i++) { + validateComponentName(names[i], instance.appContext.config); + } + } + if (Component.directives) { + const names = Object.keys(Component.directives); + for (let i = 0; i < names.length; i++) { + validateDirectiveName(names[i]); + } + } + if (Component.compilerOptions && isRuntimeOnly()) { + warn$1( + `"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.` + ); + } + } + instance.accessCache = /* @__PURE__ */ Object.create(null); + instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers); + { + exposePropsOnRenderContext(instance); + } + const { setup } = Component; + if (setup) { + pauseTracking(); + const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; + const reset = setCurrentInstance(instance); + const setupResult = callWithErrorHandling( + setup, + instance, + 0, + [ + shallowReadonly(instance.props) , + setupContext + ] + ); + const isAsyncSetup = isPromise(setupResult); + resetTracking(); + reset(); + if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) { + markAsyncBoundary(instance); + } + if (isAsyncSetup) { + setupResult.then(unsetCurrentInstance, unsetCurrentInstance); + if (isSSR) { + return setupResult.then((resolvedResult) => { + handleSetupResult(instance, resolvedResult, isSSR); + }).catch((e) => { + handleError(e, instance, 0); + }); + } else { + instance.asyncDep = setupResult; + if (!instance.suspense) { + const name = (_a = Component.name) != null ? _a : "Anonymous"; + warn$1( + `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.` + ); + } + } + } else { + handleSetupResult(instance, setupResult, isSSR); + } + } else { + finishComponentSetup(instance, isSSR); + } + } + function handleSetupResult(instance, setupResult, isSSR) { + if (isFunction(setupResult)) { + { + instance.render = setupResult; + } + } else if (isObject(setupResult)) { + if (isVNode(setupResult)) { + warn$1( + `setup() should not return VNodes directly - return a render function instead.` + ); + } + { + instance.devtoolsRawSetupState = setupResult; + } + instance.setupState = proxyRefs(setupResult); + { + exposeSetupStateOnRenderContext(instance); + } + } else if (setupResult !== void 0) { + warn$1( + `setup() should return an object. Received: ${setupResult === null ? "null" : typeof setupResult}` + ); + } + finishComponentSetup(instance, isSSR); + } + let compile; + let installWithProxy; + function registerRuntimeCompiler(_compile) { + compile = _compile; + installWithProxy = (i) => { + if (i.render._rc) { + i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers); + } + }; + } + const isRuntimeOnly = () => !compile; + function finishComponentSetup(instance, isSSR, skipOptions) { + const Component = instance.type; + if (!instance.render) { + if (!isSSR && compile && !Component.render) { + const template = Component.template || resolveMergedOptions(instance).template; + if (template) { + { + startMeasure(instance, `compile`); + } + const { isCustomElement, compilerOptions } = instance.appContext.config; + const { delimiters, compilerOptions: componentCompilerOptions } = Component; + const finalCompilerOptions = extend( + extend( + { + isCustomElement, + delimiters + }, + compilerOptions + ), + componentCompilerOptions + ); + Component.render = compile(template, finalCompilerOptions); + { + endMeasure(instance, `compile`); + } + } + } + instance.render = Component.render || NOOP; + if (installWithProxy) { + installWithProxy(instance); + } + } + { + const reset = setCurrentInstance(instance); + pauseTracking(); + try { + applyOptions(instance); + } finally { + resetTracking(); + reset(); + } + } + if (!Component.render && instance.render === NOOP && !isSSR) { + if (!compile && Component.template) { + warn$1( + `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Use "vue.global.js" instead.` ) + ); + } else { + warn$1(`Component is missing template or render function: `, Component); + } + } + } + const attrsProxyHandlers = { + get(target, key) { + markAttrsAccessed(); + track(target, "get", ""); + return target[key]; + }, + set() { + warn$1(`setupContext.attrs is readonly.`); + return false; + }, + deleteProperty() { + warn$1(`setupContext.attrs is readonly.`); + return false; + } + } ; + function getSlotsProxy(instance) { + return new Proxy(instance.slots, { + get(target, key) { + track(instance, "get", "$slots"); + return target[key]; + } + }); + } + function createSetupContext(instance) { + const expose = (exposed) => { + { + if (instance.exposed) { + warn$1(`expose() should be called only once per setup().`); + } + if (exposed != null) { + let exposedType = typeof exposed; + if (exposedType === "object") { + if (isArray(exposed)) { + exposedType = "array"; + } else if (isRef(exposed)) { + exposedType = "ref"; + } + } + if (exposedType !== "object") { + warn$1( + `expose() should be passed a plain object, received ${exposedType}.` + ); + } + } + } + instance.exposed = exposed || {}; + }; + { + let attrsProxy; + let slotsProxy; + return Object.freeze({ + get attrs() { + return attrsProxy || (attrsProxy = new Proxy(instance.attrs, attrsProxyHandlers)); + }, + get slots() { + return slotsProxy || (slotsProxy = getSlotsProxy(instance)); + }, + get emit() { + return (event, ...args) => instance.emit(event, ...args); + }, + expose + }); + } + } + function getComponentPublicInstance(instance) { + if (instance.exposed) { + return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), { + get(target, key) { + if (key in target) { + return target[key]; + } else if (key in publicPropertiesMap) { + return publicPropertiesMap[key](instance); + } + }, + has(target, key) { + return key in target || key in publicPropertiesMap; + } + })); + } else { + return instance.proxy; + } + } + const classifyRE = /(?:^|[-_])(\w)/g; + const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, ""); + function getComponentName(Component, includeInferred = true) { + return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; + } + function formatComponentName(instance, Component, isRoot = false) { + let name = getComponentName(Component); + if (!name && Component.__file) { + const match = Component.__file.match(/([^/\\]+)\.\w+$/); + if (match) { + name = match[1]; + } + } + if (!name && instance && instance.parent) { + const inferFromRegistry = (registry) => { + for (const key in registry) { + if (registry[key] === Component) { + return key; + } + } + }; + name = inferFromRegistry( + instance.components || instance.parent.type.components + ) || inferFromRegistry(instance.appContext.components); + } + return name ? classify(name) : isRoot ? `App` : `Anonymous`; + } + function isClassComponent(value) { + return isFunction(value) && "__vccOpts" in value; + } + + const computed = (getterOrOptions, debugOptions) => { + const c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup); + { + const i = getCurrentInstance(); + if (i && i.appContext.config.warnRecursiveComputed) { + c._warnRecursive = true; + } + } + return c; + }; + + function h(type, propsOrChildren, children) { + const l = arguments.length; + if (l === 2) { + if (isObject(propsOrChildren) && !isArray(propsOrChildren)) { + if (isVNode(propsOrChildren)) { + return createVNode(type, null, [propsOrChildren]); + } + return createVNode(type, propsOrChildren); + } else { + return createVNode(type, null, propsOrChildren); + } + } else { + if (l > 3) { + children = Array.prototype.slice.call(arguments, 2); + } else if (l === 3 && isVNode(children)) { + children = [children]; + } + return createVNode(type, propsOrChildren, children); + } + } + + function initCustomFormatter() { + if (typeof window === "undefined") { + return; + } + const vueStyle = { style: "color:#3ba776" }; + const numberStyle = { style: "color:#1677ff" }; + const stringStyle = { style: "color:#f5222d" }; + const keywordStyle = { style: "color:#eb2f96" }; + const formatter = { + __vue_custom_formatter: true, + header(obj) { + if (!isObject(obj)) { + return null; + } + if (obj.__isVue) { + return ["div", vueStyle, `VueInstance`]; + } else if (isRef(obj)) { + pauseTracking(); + const value = obj.value; + resetTracking(); + return [ + "div", + {}, + ["span", vueStyle, genRefFlag(obj)], + "<", + formatValue(value), + `>` + ]; + } else if (isReactive(obj)) { + return [ + "div", + {}, + ["span", vueStyle, isShallow(obj) ? "ShallowReactive" : "Reactive"], + "<", + formatValue(obj), + `>${isReadonly(obj) ? ` (readonly)` : ``}` + ]; + } else if (isReadonly(obj)) { + return [ + "div", + {}, + ["span", vueStyle, isShallow(obj) ? "ShallowReadonly" : "Readonly"], + "<", + formatValue(obj), + ">" + ]; + } + return null; + }, + hasBody(obj) { + return obj && obj.__isVue; + }, + body(obj) { + if (obj && obj.__isVue) { + return [ + "div", + {}, + ...formatInstance(obj.$) + ]; + } + } + }; + function formatInstance(instance) { + const blocks = []; + if (instance.type.props && instance.props) { + blocks.push(createInstanceBlock("props", toRaw(instance.props))); + } + if (instance.setupState !== EMPTY_OBJ) { + blocks.push(createInstanceBlock("setup", instance.setupState)); + } + if (instance.data !== EMPTY_OBJ) { + blocks.push(createInstanceBlock("data", toRaw(instance.data))); + } + const computed = extractKeys(instance, "computed"); + if (computed) { + blocks.push(createInstanceBlock("computed", computed)); + } + const injected = extractKeys(instance, "inject"); + if (injected) { + blocks.push(createInstanceBlock("injected", injected)); + } + blocks.push([ + "div", + {}, + [ + "span", + { + style: keywordStyle.style + ";opacity:0.66" + }, + "$ (internal): " + ], + ["object", { object: instance }] + ]); + return blocks; + } + function createInstanceBlock(type, target) { + target = extend({}, target); + if (!Object.keys(target).length) { + return ["span", {}]; + } + return [ + "div", + { style: "line-height:1.25em;margin-bottom:0.6em" }, + [ + "div", + { + style: "color:#476582" + }, + type + ], + [ + "div", + { + style: "padding-left:1.25em" + }, + ...Object.keys(target).map((key) => { + return [ + "div", + {}, + ["span", keywordStyle, key + ": "], + formatValue(target[key], false) + ]; + }) + ] + ]; + } + function formatValue(v, asRaw = true) { + if (typeof v === "number") { + return ["span", numberStyle, v]; + } else if (typeof v === "string") { + return ["span", stringStyle, JSON.stringify(v)]; + } else if (typeof v === "boolean") { + return ["span", keywordStyle, v]; + } else if (isObject(v)) { + return ["object", { object: asRaw ? toRaw(v) : v }]; + } else { + return ["span", stringStyle, String(v)]; + } + } + function extractKeys(instance, type) { + const Comp = instance.type; + if (isFunction(Comp)) { + return; + } + const extracted = {}; + for (const key in instance.ctx) { + if (isKeyOfType(Comp, key, type)) { + extracted[key] = instance.ctx[key]; + } + } + return extracted; + } + function isKeyOfType(Comp, key, type) { + const opts = Comp[type]; + if (isArray(opts) && opts.includes(key) || isObject(opts) && key in opts) { + return true; + } + if (Comp.extends && isKeyOfType(Comp.extends, key, type)) { + return true; + } + if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) { + return true; + } + } + function genRefFlag(v) { + if (isShallow(v)) { + return `ShallowRef`; + } + if (v.effect) { + return `ComputedRef`; + } + return `Ref`; + } + if (window.devtoolsFormatters) { + window.devtoolsFormatters.push(formatter); + } else { + window.devtoolsFormatters = [formatter]; + } + } + + function withMemo(memo, render, cache, index) { + const cached = cache[index]; + if (cached && isMemoSame(cached, memo)) { + return cached; + } + const ret = render(); + ret.memo = memo.slice(); + ret.cacheIndex = index; + return cache[index] = ret; + } + function isMemoSame(cached, memo) { + const prev = cached.memo; + if (prev.length != memo.length) { + return false; + } + for (let i = 0; i < prev.length; i++) { + if (hasChanged(prev[i], memo[i])) { + return false; + } + } + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(cached); + } + return true; + } + + const version = "3.5.18"; + const warn = warn$1 ; + const ErrorTypeStrings = ErrorTypeStrings$1 ; + const devtools = devtools$1 ; + const setDevtoolsHook = setDevtoolsHook$1 ; + const ssrUtils = null; + const resolveFilter = null; + const compatUtils = null; + const DeprecationTypes = null; + + let policy = void 0; + const tt = typeof window !== "undefined" && window.trustedTypes; + if (tt) { + try { + policy = /* @__PURE__ */ tt.createPolicy("vue", { + createHTML: (val) => val + }); + } catch (e) { + warn(`Error creating trusted types policy: ${e}`); + } + } + const unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val; + const svgNS = "http://www.w3.org/2000/svg"; + const mathmlNS = "http://www.w3.org/1998/Math/MathML"; + const doc = typeof document !== "undefined" ? document : null; + const templateContainer = doc && /* @__PURE__ */ doc.createElement("template"); + const nodeOps = { + insert: (child, parent, anchor) => { + parent.insertBefore(child, anchor || null); + }, + remove: (child) => { + const parent = child.parentNode; + if (parent) { + parent.removeChild(child); + } + }, + createElement: (tag, namespace, is, props) => { + const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag); + if (tag === "select" && props && props.multiple != null) { + el.setAttribute("multiple", props.multiple); + } + return el; + }, + createText: (text) => doc.createTextNode(text), + createComment: (text) => doc.createComment(text), + setText: (node, text) => { + node.nodeValue = text; + }, + setElementText: (el, text) => { + el.textContent = text; + }, + parentNode: (node) => node.parentNode, + nextSibling: (node) => node.nextSibling, + querySelector: (selector) => doc.querySelector(selector), + setScopeId(el, id) { + el.setAttribute(id, ""); + }, + // __UNSAFE__ + // Reason: innerHTML. + // Static content here can only come from compiled templates. + // As long as the user only uses trusted templates, this is safe. + insertStaticContent(content, parent, anchor, namespace, start, end) { + const before = anchor ? anchor.previousSibling : parent.lastChild; + if (start && (start === end || start.nextSibling)) { + while (true) { + parent.insertBefore(start.cloneNode(true), anchor); + if (start === end || !(start = start.nextSibling)) break; + } + } else { + templateContainer.innerHTML = unsafeToTrustedHTML( + namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content + ); + const template = templateContainer.content; + if (namespace === "svg" || namespace === "mathml") { + const wrapper = template.firstChild; + while (wrapper.firstChild) { + template.appendChild(wrapper.firstChild); + } + template.removeChild(wrapper); + } + parent.insertBefore(template, anchor); + } + return [ + // first + before ? before.nextSibling : parent.firstChild, + // last + anchor ? anchor.previousSibling : parent.lastChild + ]; + } + }; + + const TRANSITION = "transition"; + const ANIMATION = "animation"; + const vtcKey = Symbol("_vtc"); + const DOMTransitionPropsValidators = { + name: String, + type: String, + css: { + type: Boolean, + default: true + }, + duration: [String, Number, Object], + enterFromClass: String, + enterActiveClass: String, + enterToClass: String, + appearFromClass: String, + appearActiveClass: String, + appearToClass: String, + leaveFromClass: String, + leaveActiveClass: String, + leaveToClass: String + }; + const TransitionPropsValidators = /* @__PURE__ */ extend( + {}, + BaseTransitionPropsValidators, + DOMTransitionPropsValidators + ); + const decorate$1 = (t) => { + t.displayName = "Transition"; + t.props = TransitionPropsValidators; + return t; + }; + const Transition = /* @__PURE__ */ decorate$1( + (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots) + ); + const callHook = (hook, args = []) => { + if (isArray(hook)) { + hook.forEach((h2) => h2(...args)); + } else if (hook) { + hook(...args); + } + }; + const hasExplicitCallback = (hook) => { + return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false; + }; + function resolveTransitionProps(rawProps) { + const baseProps = {}; + for (const key in rawProps) { + if (!(key in DOMTransitionPropsValidators)) { + baseProps[key] = rawProps[key]; + } + } + if (rawProps.css === false) { + return baseProps; + } + const { + name = "v", + type, + duration, + enterFromClass = `${name}-enter-from`, + enterActiveClass = `${name}-enter-active`, + enterToClass = `${name}-enter-to`, + appearFromClass = enterFromClass, + appearActiveClass = enterActiveClass, + appearToClass = enterToClass, + leaveFromClass = `${name}-leave-from`, + leaveActiveClass = `${name}-leave-active`, + leaveToClass = `${name}-leave-to` + } = rawProps; + const durations = normalizeDuration(duration); + const enterDuration = durations && durations[0]; + const leaveDuration = durations && durations[1]; + const { + onBeforeEnter, + onEnter, + onEnterCancelled, + onLeave, + onLeaveCancelled, + onBeforeAppear = onBeforeEnter, + onAppear = onEnter, + onAppearCancelled = onEnterCancelled + } = baseProps; + const finishEnter = (el, isAppear, done, isCancelled) => { + el._enterCancelled = isCancelled; + removeTransitionClass(el, isAppear ? appearToClass : enterToClass); + removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass); + done && done(); + }; + const finishLeave = (el, done) => { + el._isLeaving = false; + removeTransitionClass(el, leaveFromClass); + removeTransitionClass(el, leaveToClass); + removeTransitionClass(el, leaveActiveClass); + done && done(); + }; + const makeEnterHook = (isAppear) => { + return (el, done) => { + const hook = isAppear ? onAppear : onEnter; + const resolve = () => finishEnter(el, isAppear, done); + callHook(hook, [el, resolve]); + nextFrame(() => { + removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass); + addTransitionClass(el, isAppear ? appearToClass : enterToClass); + if (!hasExplicitCallback(hook)) { + whenTransitionEnds(el, type, enterDuration, resolve); + } + }); + }; + }; + return extend(baseProps, { + onBeforeEnter(el) { + callHook(onBeforeEnter, [el]); + addTransitionClass(el, enterFromClass); + addTransitionClass(el, enterActiveClass); + }, + onBeforeAppear(el) { + callHook(onBeforeAppear, [el]); + addTransitionClass(el, appearFromClass); + addTransitionClass(el, appearActiveClass); + }, + onEnter: makeEnterHook(false), + onAppear: makeEnterHook(true), + onLeave(el, done) { + el._isLeaving = true; + const resolve = () => finishLeave(el, done); + addTransitionClass(el, leaveFromClass); + if (!el._enterCancelled) { + forceReflow(); + addTransitionClass(el, leaveActiveClass); + } else { + addTransitionClass(el, leaveActiveClass); + forceReflow(); + } + nextFrame(() => { + if (!el._isLeaving) { + return; + } + removeTransitionClass(el, leaveFromClass); + addTransitionClass(el, leaveToClass); + if (!hasExplicitCallback(onLeave)) { + whenTransitionEnds(el, type, leaveDuration, resolve); + } + }); + callHook(onLeave, [el, resolve]); + }, + onEnterCancelled(el) { + finishEnter(el, false, void 0, true); + callHook(onEnterCancelled, [el]); + }, + onAppearCancelled(el) { + finishEnter(el, true, void 0, true); + callHook(onAppearCancelled, [el]); + }, + onLeaveCancelled(el) { + finishLeave(el); + callHook(onLeaveCancelled, [el]); + } + }); + } + function normalizeDuration(duration) { + if (duration == null) { + return null; + } else if (isObject(duration)) { + return [NumberOf(duration.enter), NumberOf(duration.leave)]; + } else { + const n = NumberOf(duration); + return [n, n]; + } + } + function NumberOf(val) { + const res = toNumber(val); + { + assertNumber(res, "<transition> explicit duration"); + } + return res; + } + function addTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.add(c)); + (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls); + } + function removeTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.remove(c)); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.delete(cls); + if (!_vtc.size) { + el[vtcKey] = void 0; + } + } + } + function nextFrame(cb) { + requestAnimationFrame(() => { + requestAnimationFrame(cb); + }); + } + let endId = 0; + function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) { + const id = el._endId = ++endId; + const resolveIfNotStale = () => { + if (id === el._endId) { + resolve(); + } + }; + if (explicitTimeout != null) { + return setTimeout(resolveIfNotStale, explicitTimeout); + } + const { type, timeout, propCount } = getTransitionInfo(el, expectedType); + if (!type) { + return resolve(); + } + const endEvent = type + "end"; + let ended = 0; + const end = () => { + el.removeEventListener(endEvent, onEnd); + resolveIfNotStale(); + }; + const onEnd = (e) => { + if (e.target === el && ++ended >= propCount) { + end(); + } + }; + setTimeout(() => { + if (ended < propCount) { + end(); + } + }, timeout + 1); + el.addEventListener(endEvent, onEnd); + } + function getTransitionInfo(el, expectedType) { + const styles = window.getComputedStyle(el); + const getStyleProperties = (key) => (styles[key] || "").split(", "); + const transitionDelays = getStyleProperties(`${TRANSITION}Delay`); + const transitionDurations = getStyleProperties(`${TRANSITION}Duration`); + const transitionTimeout = getTimeout(transitionDelays, transitionDurations); + const animationDelays = getStyleProperties(`${ANIMATION}Delay`); + const animationDurations = getStyleProperties(`${ANIMATION}Duration`); + const animationTimeout = getTimeout(animationDelays, animationDurations); + let type = null; + let timeout = 0; + let propCount = 0; + if (expectedType === TRANSITION) { + if (transitionTimeout > 0) { + type = TRANSITION; + timeout = transitionTimeout; + propCount = transitionDurations.length; + } + } else if (expectedType === ANIMATION) { + if (animationTimeout > 0) { + type = ANIMATION; + timeout = animationTimeout; + propCount = animationDurations.length; + } + } else { + timeout = Math.max(transitionTimeout, animationTimeout); + type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null; + propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0; + } + const hasTransform = type === TRANSITION && /\b(transform|all)(,|$)/.test( + getStyleProperties(`${TRANSITION}Property`).toString() + ); + return { + type, + timeout, + propCount, + hasTransform + }; + } + function getTimeout(delays, durations) { + while (delays.length < durations.length) { + delays = delays.concat(delays); + } + return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i]))); + } + function toMs(s) { + if (s === "auto") return 0; + return Number(s.slice(0, -1).replace(",", ".")) * 1e3; + } + function forceReflow() { + return document.body.offsetHeight; + } + + function patchClass(el, value, isSVG) { + const transitionClasses = el[vtcKey]; + if (transitionClasses) { + value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" "); + } + if (value == null) { + el.removeAttribute("class"); + } else if (isSVG) { + el.setAttribute("class", value); + } else { + el.className = value; + } + } + + const vShowOriginalDisplay = Symbol("_vod"); + const vShowHidden = Symbol("_vsh"); + const vShow = { + beforeMount(el, { value }, { transition }) { + el[vShowOriginalDisplay] = el.style.display === "none" ? "" : el.style.display; + if (transition && value) { + transition.beforeEnter(el); + } else { + setDisplay(el, value); + } + }, + mounted(el, { value }, { transition }) { + if (transition && value) { + transition.enter(el); + } + }, + updated(el, { value, oldValue }, { transition }) { + if (!value === !oldValue) return; + if (transition) { + if (value) { + transition.beforeEnter(el); + setDisplay(el, true); + transition.enter(el); + } else { + transition.leave(el, () => { + setDisplay(el, false); + }); + } + } else { + setDisplay(el, value); + } + }, + beforeUnmount(el, { value }) { + setDisplay(el, value); + } + }; + { + vShow.name = "show"; + } + function setDisplay(el, value) { + el.style.display = value ? el[vShowOriginalDisplay] : "none"; + el[vShowHidden] = !value; + } + + const CSS_VAR_TEXT = Symbol("CSS_VAR_TEXT" ); + function useCssVars(getter) { + const instance = getCurrentInstance(); + if (!instance) { + warn(`useCssVars is called without current active component instance.`); + return; + } + const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => { + Array.from( + document.querySelectorAll(`[data-v-owner="${instance.uid}"]`) + ).forEach((node) => setVarsOnNode(node, vars)); + }; + { + instance.getCssVars = () => getter(instance.proxy); + } + const setVars = () => { + const vars = getter(instance.proxy); + if (instance.ce) { + setVarsOnNode(instance.ce, vars); + } else { + setVarsOnVNode(instance.subTree, vars); + } + updateTeleports(vars); + }; + onBeforeUpdate(() => { + queuePostFlushCb(setVars); + }); + onMounted(() => { + watch(setVars, NOOP, { flush: "post" }); + const ob = new MutationObserver(setVars); + ob.observe(instance.subTree.el.parentNode, { childList: true }); + onUnmounted(() => ob.disconnect()); + }); + } + function setVarsOnVNode(vnode, vars) { + if (vnode.shapeFlag & 128) { + const suspense = vnode.suspense; + vnode = suspense.activeBranch; + if (suspense.pendingBranch && !suspense.isHydrating) { + suspense.effects.push(() => { + setVarsOnVNode(suspense.activeBranch, vars); + }); + } + } + while (vnode.component) { + vnode = vnode.component.subTree; + } + if (vnode.shapeFlag & 1 && vnode.el) { + setVarsOnNode(vnode.el, vars); + } else if (vnode.type === Fragment) { + vnode.children.forEach((c) => setVarsOnVNode(c, vars)); + } else if (vnode.type === Static) { + let { el, anchor } = vnode; + while (el) { + setVarsOnNode(el, vars); + if (el === anchor) break; + el = el.nextSibling; + } + } + } + function setVarsOnNode(el, vars) { + if (el.nodeType === 1) { + const style = el.style; + let cssText = ""; + for (const key in vars) { + const value = normalizeCssVarValue(vars[key]); + style.setProperty(`--${key}`, value); + cssText += `--${key}: ${value};`; + } + style[CSS_VAR_TEXT] = cssText; + } + } + + const displayRE = /(^|;)\s*display\s*:/; + function patchStyle(el, prev, next) { + const style = el.style; + const isCssString = isString(next); + let hasControlledDisplay = false; + if (next && !isCssString) { + if (prev) { + if (!isString(prev)) { + for (const key in prev) { + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } else { + for (const prevStyle of prev.split(";")) { + const key = prevStyle.slice(0, prevStyle.indexOf(":")).trim(); + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } + } + for (const key in next) { + if (key === "display") { + hasControlledDisplay = true; + } + setStyle(style, key, next[key]); + } + } else { + if (isCssString) { + if (prev !== next) { + const cssVarText = style[CSS_VAR_TEXT]; + if (cssVarText) { + next += ";" + cssVarText; + } + style.cssText = next; + hasControlledDisplay = displayRE.test(next); + } + } else if (prev) { + el.removeAttribute("style"); + } + } + if (vShowOriginalDisplay in el) { + el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : ""; + if (el[vShowHidden]) { + style.display = "none"; + } + } + } + const semicolonRE = /[^\\];\s*$/; + const importantRE = /\s*!important$/; + function setStyle(style, name, val) { + if (isArray(val)) { + val.forEach((v) => setStyle(style, name, v)); + } else { + if (val == null) val = ""; + { + if (semicolonRE.test(val)) { + warn( + `Unexpected semicolon at the end of '${name}' style value: '${val}'` + ); + } + } + if (name.startsWith("--")) { + style.setProperty(name, val); + } else { + const prefixed = autoPrefix(style, name); + if (importantRE.test(val)) { + style.setProperty( + hyphenate(prefixed), + val.replace(importantRE, ""), + "important" + ); + } else { + style[prefixed] = val; + } + } + } + } + const prefixes = ["Webkit", "Moz", "ms"]; + const prefixCache = {}; + function autoPrefix(style, rawName) { + const cached = prefixCache[rawName]; + if (cached) { + return cached; + } + let name = camelize(rawName); + if (name !== "filter" && name in style) { + return prefixCache[rawName] = name; + } + name = capitalize(name); + for (let i = 0; i < prefixes.length; i++) { + const prefixed = prefixes[i] + name; + if (prefixed in style) { + return prefixCache[rawName] = prefixed; + } + } + return rawName; + } + + const xlinkNS = "http://www.w3.org/1999/xlink"; + function patchAttr(el, key, value, isSVG, instance, isBoolean = isSpecialBooleanAttr(key)) { + if (isSVG && key.startsWith("xlink:")) { + if (value == null) { + el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); + } else { + el.setAttributeNS(xlinkNS, key, value); + } + } else { + if (value == null || isBoolean && !includeBooleanAttr(value)) { + el.removeAttribute(key); + } else { + el.setAttribute( + key, + isBoolean ? "" : isSymbol(value) ? String(value) : value + ); + } + } + } + + function patchDOMProp(el, key, value, parentComponent, attrName) { + if (key === "innerHTML" || key === "textContent") { + if (value != null) { + el[key] = key === "innerHTML" ? unsafeToTrustedHTML(value) : value; + } + return; + } + const tag = el.tagName; + if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally + !tag.includes("-")) { + const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value; + const newValue = value == null ? ( + // #11647: value should be set as empty string for null and undefined, + // but <input type="checkbox"> should be set as 'on'. + el.type === "checkbox" ? "on" : "" + ) : String(value); + if (oldValue !== newValue || !("_value" in el)) { + el.value = newValue; + } + if (value == null) { + el.removeAttribute(key); + } + el._value = value; + return; + } + let needRemove = false; + if (value === "" || value == null) { + const type = typeof el[key]; + if (type === "boolean") { + value = includeBooleanAttr(value); + } else if (value == null && type === "string") { + value = ""; + needRemove = true; + } else if (type === "number") { + value = 0; + needRemove = true; + } + } + try { + el[key] = value; + } catch (e) { + if (!needRemove) { + warn( + `Failed setting prop "${key}" on <${tag.toLowerCase()}>: value ${value} is invalid.`, + e + ); + } + } + needRemove && el.removeAttribute(attrName || key); + } + + function addEventListener(el, event, handler, options) { + el.addEventListener(event, handler, options); + } + function removeEventListener(el, event, handler, options) { + el.removeEventListener(event, handler, options); + } + const veiKey = Symbol("_vei"); + function patchEvent(el, rawName, prevValue, nextValue, instance = null) { + const invokers = el[veiKey] || (el[veiKey] = {}); + const existingInvoker = invokers[rawName]; + if (nextValue && existingInvoker) { + existingInvoker.value = sanitizeEventValue(nextValue, rawName) ; + } else { + const [name, options] = parseName(rawName); + if (nextValue) { + const invoker = invokers[rawName] = createInvoker( + sanitizeEventValue(nextValue, rawName) , + instance + ); + addEventListener(el, name, invoker, options); + } else if (existingInvoker) { + removeEventListener(el, name, existingInvoker, options); + invokers[rawName] = void 0; + } + } + } + const optionsModifierRE = /(?:Once|Passive|Capture)$/; + function parseName(name) { + let options; + if (optionsModifierRE.test(name)) { + options = {}; + let m; + while (m = name.match(optionsModifierRE)) { + name = name.slice(0, name.length - m[0].length); + options[m[0].toLowerCase()] = true; + } + } + const event = name[2] === ":" ? name.slice(3) : hyphenate(name.slice(2)); + return [event, options]; + } + let cachedNow = 0; + const p = /* @__PURE__ */ Promise.resolve(); + const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now()); + function createInvoker(initialValue, instance) { + const invoker = (e) => { + if (!e._vts) { + e._vts = Date.now(); + } else if (e._vts <= invoker.attached) { + return; + } + callWithAsyncErrorHandling( + patchStopImmediatePropagation(e, invoker.value), + instance, + 5, + [e] + ); + }; + invoker.value = initialValue; + invoker.attached = getNow(); + return invoker; + } + function sanitizeEventValue(value, propName) { + if (isFunction(value) || isArray(value)) { + return value; + } + warn( + `Wrong type passed as event handler to ${propName} - did you forget @ or : in front of your prop? +Expected function or array of functions, received type ${typeof value}.` + ); + return NOOP; + } + function patchStopImmediatePropagation(e, value) { + if (isArray(value)) { + const originalStop = e.stopImmediatePropagation; + e.stopImmediatePropagation = () => { + originalStop.call(e); + e._stopped = true; + }; + return value.map( + (fn) => (e2) => !e2._stopped && fn && fn(e2) + ); + } else { + return value; + } + } + + const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter + key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123; + const patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => { + const isSVG = namespace === "svg"; + if (key === "class") { + patchClass(el, nextValue, isSVG); + } else if (key === "style") { + patchStyle(el, prevValue, nextValue); + } else if (isOn(key)) { + if (!isModelListener(key)) { + patchEvent(el, key, prevValue, nextValue, parentComponent); + } + } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) { + patchDOMProp(el, key, nextValue); + if (!el.tagName.includes("-") && (key === "value" || key === "checked" || key === "selected")) { + patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value"); + } + } else if ( + // #11081 force set props for possible async custom element + el._isVueCE && (/[A-Z]/.test(key) || !isString(nextValue)) + ) { + patchDOMProp(el, camelize(key), nextValue, parentComponent, key); + } else { + if (key === "true-value") { + el._trueValue = nextValue; + } else if (key === "false-value") { + el._falseValue = nextValue; + } + patchAttr(el, key, nextValue, isSVG); + } + }; + function shouldSetAsProp(el, key, value, isSVG) { + if (isSVG) { + if (key === "innerHTML" || key === "textContent") { + return true; + } + if (key in el && isNativeOn(key) && isFunction(value)) { + return true; + } + return false; + } + if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") { + return false; + } + if (key === "form") { + return false; + } + if (key === "list" && el.tagName === "INPUT") { + return false; + } + if (key === "type" && el.tagName === "TEXTAREA") { + return false; + } + if (key === "width" || key === "height") { + const tag = el.tagName; + if (tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE") { + return false; + } + } + if (isNativeOn(key) && isString(value)) { + return false; + } + return key in el; + } + + const REMOVAL = {}; + /*! #__NO_SIDE_EFFECTS__ */ + // @__NO_SIDE_EFFECTS__ + function defineCustomElement(options, extraOptions, _createApp) { + const Comp = defineComponent(options, extraOptions); + if (isPlainObject(Comp)) extend(Comp, extraOptions); + class VueCustomElement extends VueElement { + constructor(initialProps) { + super(Comp, initialProps, _createApp); + } + } + VueCustomElement.def = Comp; + return VueCustomElement; + } + /*! #__NO_SIDE_EFFECTS__ */ + const defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options, extraOptions) => { + return /* @__PURE__ */ defineCustomElement(options, extraOptions, createSSRApp); + }; + const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class { + }; + class VueElement extends BaseClass { + constructor(_def, _props = {}, _createApp = createApp) { + super(); + this._def = _def; + this._props = _props; + this._createApp = _createApp; + this._isVueCE = true; + /** + * @internal + */ + this._instance = null; + /** + * @internal + */ + this._app = null; + /** + * @internal + */ + this._nonce = this._def.nonce; + this._connected = false; + this._resolved = false; + this._numberProps = null; + this._styleChildren = /* @__PURE__ */ new WeakSet(); + this._ob = null; + if (this.shadowRoot && _createApp !== createApp) { + this._root = this.shadowRoot; + } else { + if (this.shadowRoot) { + warn( + `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \`defineSSRCustomElement\`.` + ); + } + if (_def.shadowRoot !== false) { + this.attachShadow({ mode: "open" }); + this._root = this.shadowRoot; + } else { + this._root = this; + } + } + } + connectedCallback() { + if (!this.isConnected) return; + if (!this.shadowRoot && !this._resolved) { + this._parseSlots(); + } + this._connected = true; + let parent = this; + while (parent = parent && (parent.parentNode || parent.host)) { + if (parent instanceof VueElement) { + this._parent = parent; + break; + } + } + if (!this._instance) { + if (this._resolved) { + this._mount(this._def); + } else { + if (parent && parent._pendingResolve) { + this._pendingResolve = parent._pendingResolve.then(() => { + this._pendingResolve = void 0; + this._resolveDef(); + }); + } else { + this._resolveDef(); + } + } + } + } + _setParent(parent = this._parent) { + if (parent) { + this._instance.parent = parent._instance; + this._inheritParentContext(parent); + } + } + _inheritParentContext(parent = this._parent) { + if (parent && this._app) { + Object.setPrototypeOf( + this._app._context.provides, + parent._instance.provides + ); + } + } + disconnectedCallback() { + this._connected = false; + nextTick(() => { + if (!this._connected) { + if (this._ob) { + this._ob.disconnect(); + this._ob = null; + } + this._app && this._app.unmount(); + if (this._instance) this._instance.ce = void 0; + this._app = this._instance = null; + } + }); + } + /** + * resolve inner component definition (handle possible async component) + */ + _resolveDef() { + if (this._pendingResolve) { + return; + } + for (let i = 0; i < this.attributes.length; i++) { + this._setAttr(this.attributes[i].name); + } + this._ob = new MutationObserver((mutations) => { + for (const m of mutations) { + this._setAttr(m.attributeName); + } + }); + this._ob.observe(this, { attributes: true }); + const resolve = (def, isAsync = false) => { + this._resolved = true; + this._pendingResolve = void 0; + const { props, styles } = def; + let numberProps; + if (props && !isArray(props)) { + for (const key in props) { + const opt = props[key]; + if (opt === Number || opt && opt.type === Number) { + if (key in this._props) { + this._props[key] = toNumber(this._props[key]); + } + (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize(key)] = true; + } + } + } + this._numberProps = numberProps; + this._resolveProps(def); + if (this.shadowRoot) { + this._applyStyles(styles); + } else if (styles) { + warn( + "Custom element style injection is not supported when using shadowRoot: false" + ); + } + this._mount(def); + }; + const asyncDef = this._def.__asyncLoader; + if (asyncDef) { + this._pendingResolve = asyncDef().then((def) => { + def.configureApp = this._def.configureApp; + resolve(this._def = def, true); + }); + } else { + resolve(this._def); + } + } + _mount(def) { + if (!def.name) { + def.name = "VueElement"; + } + this._app = this._createApp(def); + this._inheritParentContext(); + if (def.configureApp) { + def.configureApp(this._app); + } + this._app._ceVNode = this._createVNode(); + this._app.mount(this._root); + const exposed = this._instance && this._instance.exposed; + if (!exposed) return; + for (const key in exposed) { + if (!hasOwn(this, key)) { + Object.defineProperty(this, key, { + // unwrap ref to be consistent with public instance behavior + get: () => unref(exposed[key]) + }); + } else { + warn(`Exposed property "${key}" already exists on custom element.`); + } + } + } + _resolveProps(def) { + const { props } = def; + const declaredPropKeys = isArray(props) ? props : Object.keys(props || {}); + for (const key of Object.keys(this)) { + if (key[0] !== "_" && declaredPropKeys.includes(key)) { + this._setProp(key, this[key]); + } + } + for (const key of declaredPropKeys.map(camelize)) { + Object.defineProperty(this, key, { + get() { + return this._getProp(key); + }, + set(val) { + this._setProp(key, val, true, true); + } + }); + } + } + _setAttr(key) { + if (key.startsWith("data-v-")) return; + const has = this.hasAttribute(key); + let value = has ? this.getAttribute(key) : REMOVAL; + const camelKey = camelize(key); + if (has && this._numberProps && this._numberProps[camelKey]) { + value = toNumber(value); + } + this._setProp(camelKey, value, false, true); + } + /** + * @internal + */ + _getProp(key) { + return this._props[key]; + } + /** + * @internal + */ + _setProp(key, val, shouldReflect = true, shouldUpdate = false) { + if (val !== this._props[key]) { + if (val === REMOVAL) { + delete this._props[key]; + } else { + this._props[key] = val; + if (key === "key" && this._app) { + this._app._ceVNode.key = val; + } + } + if (shouldUpdate && this._instance) { + this._update(); + } + if (shouldReflect) { + const ob = this._ob; + ob && ob.disconnect(); + if (val === true) { + this.setAttribute(hyphenate(key), ""); + } else if (typeof val === "string" || typeof val === "number") { + this.setAttribute(hyphenate(key), val + ""); + } else if (!val) { + this.removeAttribute(hyphenate(key)); + } + ob && ob.observe(this, { attributes: true }); + } + } + } + _update() { + const vnode = this._createVNode(); + if (this._app) vnode.appContext = this._app._context; + render(vnode, this._root); + } + _createVNode() { + const baseProps = {}; + if (!this.shadowRoot) { + baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this); + } + const vnode = createVNode(this._def, extend(baseProps, this._props)); + if (!this._instance) { + vnode.ce = (instance) => { + this._instance = instance; + instance.ce = this; + instance.isCE = true; + { + instance.ceReload = (newStyles) => { + if (this._styles) { + this._styles.forEach((s) => this._root.removeChild(s)); + this._styles.length = 0; + } + this._applyStyles(newStyles); + this._instance = null; + this._update(); + }; + } + const dispatch = (event, args) => { + this.dispatchEvent( + new CustomEvent( + event, + isPlainObject(args[0]) ? extend({ detail: args }, args[0]) : { detail: args } + ) + ); + }; + instance.emit = (event, ...args) => { + dispatch(event, args); + if (hyphenate(event) !== event) { + dispatch(hyphenate(event), args); + } + }; + this._setParent(); + }; + } + return vnode; + } + _applyStyles(styles, owner) { + if (!styles) return; + if (owner) { + if (owner === this._def || this._styleChildren.has(owner)) { + return; + } + this._styleChildren.add(owner); + } + const nonce = this._nonce; + for (let i = styles.length - 1; i >= 0; i--) { + const s = document.createElement("style"); + if (nonce) s.setAttribute("nonce", nonce); + s.textContent = styles[i]; + this.shadowRoot.prepend(s); + { + if (owner) { + if (owner.__hmrId) { + if (!this._childStyles) this._childStyles = /* @__PURE__ */ new Map(); + let entry = this._childStyles.get(owner.__hmrId); + if (!entry) { + this._childStyles.set(owner.__hmrId, entry = []); + } + entry.push(s); + } + } else { + (this._styles || (this._styles = [])).push(s); + } + } + } + } + /** + * Only called when shadowRoot is false + */ + _parseSlots() { + const slots = this._slots = {}; + let n; + while (n = this.firstChild) { + const slotName = n.nodeType === 1 && n.getAttribute("slot") || "default"; + (slots[slotName] || (slots[slotName] = [])).push(n); + this.removeChild(n); + } + } + /** + * Only called when shadowRoot is false + */ + _renderSlots() { + const outlets = (this._teleportTarget || this).querySelectorAll("slot"); + const scopeId = this._instance.type.__scopeId; + for (let i = 0; i < outlets.length; i++) { + const o = outlets[i]; + const slotName = o.getAttribute("name") || "default"; + const content = this._slots[slotName]; + const parent = o.parentNode; + if (content) { + for (const n of content) { + if (scopeId && n.nodeType === 1) { + const id = scopeId + "-s"; + const walker = document.createTreeWalker(n, 1); + n.setAttribute(id, ""); + let child; + while (child = walker.nextNode()) { + child.setAttribute(id, ""); + } + } + parent.insertBefore(n, o); + } + } else { + while (o.firstChild) parent.insertBefore(o.firstChild, o); + } + parent.removeChild(o); + } + } + /** + * @internal + */ + _injectChildStyle(comp) { + this._applyStyles(comp.styles, comp); + } + /** + * @internal + */ + _removeChildStyle(comp) { + { + this._styleChildren.delete(comp); + if (this._childStyles && comp.__hmrId) { + const oldStyles = this._childStyles.get(comp.__hmrId); + if (oldStyles) { + oldStyles.forEach((s) => this._root.removeChild(s)); + oldStyles.length = 0; + } + } + } + } + } + function useHost(caller) { + const instance = getCurrentInstance(); + const el = instance && instance.ce; + if (el) { + return el; + } else { + if (!instance) { + warn( + `${caller || "useHost"} called without an active component instance.` + ); + } else { + warn( + `${caller || "useHost"} can only be used in components defined via defineCustomElement.` + ); + } + } + return null; + } + function useShadowRoot() { + const el = useHost("useShadowRoot") ; + return el && el.shadowRoot; + } + + function useCssModule(name = "$style") { + { + { + warn(`useCssModule() is not supported in the global build.`); + } + return EMPTY_OBJ; + } + } + + const positionMap = /* @__PURE__ */ new WeakMap(); + const newPositionMap = /* @__PURE__ */ new WeakMap(); + const moveCbKey = Symbol("_moveCb"); + const enterCbKey = Symbol("_enterCb"); + const decorate = (t) => { + delete t.props.mode; + return t; + }; + const TransitionGroupImpl = /* @__PURE__ */ decorate({ + name: "TransitionGroup", + props: /* @__PURE__ */ extend({}, TransitionPropsValidators, { + tag: String, + moveClass: String + }), + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + let prevChildren; + let children; + onUpdated(() => { + if (!prevChildren.length) { + return; + } + const moveClass = props.moveClass || `${props.name || "v"}-move`; + if (!hasCSSTransform( + prevChildren[0].el, + instance.vnode.el, + moveClass + )) { + prevChildren = []; + return; + } + prevChildren.forEach(callPendingCbs); + prevChildren.forEach(recordPosition); + const movedChildren = prevChildren.filter(applyTranslation); + forceReflow(); + movedChildren.forEach((c) => { + const el = c.el; + const style = el.style; + addTransitionClass(el, moveClass); + style.transform = style.webkitTransform = style.transitionDuration = ""; + const cb = el[moveCbKey] = (e) => { + if (e && e.target !== el) { + return; + } + if (!e || /transform$/.test(e.propertyName)) { + el.removeEventListener("transitionend", cb); + el[moveCbKey] = null; + removeTransitionClass(el, moveClass); + } + }; + el.addEventListener("transitionend", cb); + }); + prevChildren = []; + }); + return () => { + const rawProps = toRaw(props); + const cssTransitionProps = resolveTransitionProps(rawProps); + let tag = rawProps.tag || Fragment; + prevChildren = []; + if (children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.el && child.el instanceof Element) { + prevChildren.push(child); + setTransitionHooks( + child, + resolveTransitionHooks( + child, + cssTransitionProps, + state, + instance + ) + ); + positionMap.set( + child, + child.el.getBoundingClientRect() + ); + } + } + } + children = slots.default ? getTransitionRawChildren(slots.default()) : []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.key != null) { + setTransitionHooks( + child, + resolveTransitionHooks(child, cssTransitionProps, state, instance) + ); + } else if (child.type !== Text) { + warn(`<TransitionGroup> children must be keyed.`); + } + } + return createVNode(tag, null, children); + }; + } + }); + const TransitionGroup = TransitionGroupImpl; + function callPendingCbs(c) { + const el = c.el; + if (el[moveCbKey]) { + el[moveCbKey](); + } + if (el[enterCbKey]) { + el[enterCbKey](); + } + } + function recordPosition(c) { + newPositionMap.set(c, c.el.getBoundingClientRect()); + } + function applyTranslation(c) { + const oldPos = positionMap.get(c); + const newPos = newPositionMap.get(c); + const dx = oldPos.left - newPos.left; + const dy = oldPos.top - newPos.top; + if (dx || dy) { + const s = c.el.style; + s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`; + s.transitionDuration = "0s"; + return c; + } + } + function hasCSSTransform(el, root, moveClass) { + const clone = el.cloneNode(); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.forEach((cls) => { + cls.split(/\s+/).forEach((c) => c && clone.classList.remove(c)); + }); + } + moveClass.split(/\s+/).forEach((c) => c && clone.classList.add(c)); + clone.style.display = "none"; + const container = root.nodeType === 1 ? root : root.parentNode; + container.appendChild(clone); + const { hasTransform } = getTransitionInfo(clone); + container.removeChild(clone); + return hasTransform; + } + + const getModelAssigner = (vnode) => { + const fn = vnode.props["onUpdate:modelValue"] || false; + return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn; + }; + function onCompositionStart(e) { + e.target.composing = true; + } + function onCompositionEnd(e) { + const target = e.target; + if (target.composing) { + target.composing = false; + target.dispatchEvent(new Event("input")); + } + } + const assignKey = Symbol("_assign"); + const vModelText = { + created(el, { modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + const castToNumber = number || vnode.props && vnode.props.type === "number"; + addEventListener(el, lazy ? "change" : "input", (e) => { + if (e.target.composing) return; + let domValue = el.value; + if (trim) { + domValue = domValue.trim(); + } + if (castToNumber) { + domValue = looseToNumber(domValue); + } + el[assignKey](domValue); + }); + if (trim) { + addEventListener(el, "change", () => { + el.value = el.value.trim(); + }); + } + if (!lazy) { + addEventListener(el, "compositionstart", onCompositionStart); + addEventListener(el, "compositionend", onCompositionEnd); + addEventListener(el, "change", onCompositionEnd); + } + }, + // set value on mounted so it's after min/max for type="range" + mounted(el, { value }) { + el.value = value == null ? "" : value; + }, + beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (el.composing) return; + const elValue = (number || el.type === "number") && !/^0\d/.test(el.value) ? looseToNumber(el.value) : el.value; + const newValue = value == null ? "" : value; + if (elValue === newValue) { + return; + } + if (document.activeElement === el && el.type !== "range") { + if (lazy && value === oldValue) { + return; + } + if (trim && el.value.trim() === newValue) { + return; + } + } + el.value = newValue; + } + }; + const vModelCheckbox = { + // #4096 array checkboxes need to be deep traversed + deep: true, + created(el, _, vnode) { + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + const modelValue = el._modelValue; + const elementValue = getValue(el); + const checked = el.checked; + const assign = el[assignKey]; + if (isArray(modelValue)) { + const index = looseIndexOf(modelValue, elementValue); + const found = index !== -1; + if (checked && !found) { + assign(modelValue.concat(elementValue)); + } else if (!checked && found) { + const filtered = [...modelValue]; + filtered.splice(index, 1); + assign(filtered); + } + } else if (isSet(modelValue)) { + const cloned = new Set(modelValue); + if (checked) { + cloned.add(elementValue); + } else { + cloned.delete(elementValue); + } + assign(cloned); + } else { + assign(getCheckboxValue(el, checked)); + } + }); + }, + // set initial checked on mount to wait for true-value/false-value + mounted: setChecked, + beforeUpdate(el, binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + setChecked(el, binding, vnode); + } + }; + function setChecked(el, { value, oldValue }, vnode) { + el._modelValue = value; + let checked; + if (isArray(value)) { + checked = looseIndexOf(value, vnode.props.value) > -1; + } else if (isSet(value)) { + checked = value.has(vnode.props.value); + } else { + if (value === oldValue) return; + checked = looseEqual(value, getCheckboxValue(el, true)); + } + if (el.checked !== checked) { + el.checked = checked; + } + } + const vModelRadio = { + created(el, { value }, vnode) { + el.checked = looseEqual(value, vnode.props.value); + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + el[assignKey](getValue(el)); + }); + }, + beforeUpdate(el, { value, oldValue }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (value !== oldValue) { + el.checked = looseEqual(value, vnode.props.value); + } + } + }; + const vModelSelect = { + // <select multiple> value need to be deep traversed + deep: true, + created(el, { value, modifiers: { number } }, vnode) { + const isSetModel = isSet(value); + addEventListener(el, "change", () => { + const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map( + (o) => number ? looseToNumber(getValue(o)) : getValue(o) + ); + el[assignKey]( + el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0] + ); + el._assigning = true; + nextTick(() => { + el._assigning = false; + }); + }); + el[assignKey] = getModelAssigner(vnode); + }, + // set value in mounted & updated because <select> relies on its children + // <option>s. + mounted(el, { value }) { + setSelected(el, value); + }, + beforeUpdate(el, _binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + }, + updated(el, { value }) { + if (!el._assigning) { + setSelected(el, value); + } + } + }; + function setSelected(el, value) { + const isMultiple = el.multiple; + const isArrayValue = isArray(value); + if (isMultiple && !isArrayValue && !isSet(value)) { + warn( + `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.` + ); + return; + } + for (let i = 0, l = el.options.length; i < l; i++) { + const option = el.options[i]; + const optionValue = getValue(option); + if (isMultiple) { + if (isArrayValue) { + const optionType = typeof optionValue; + if (optionType === "string" || optionType === "number") { + option.selected = value.some((v) => String(v) === String(optionValue)); + } else { + option.selected = looseIndexOf(value, optionValue) > -1; + } + } else { + option.selected = value.has(optionValue); + } + } else if (looseEqual(getValue(option), value)) { + if (el.selectedIndex !== i) el.selectedIndex = i; + return; + } + } + if (!isMultiple && el.selectedIndex !== -1) { + el.selectedIndex = -1; + } + } + function getValue(el) { + return "_value" in el ? el._value : el.value; + } + function getCheckboxValue(el, checked) { + const key = checked ? "_trueValue" : "_falseValue"; + return key in el ? el[key] : checked; + } + const vModelDynamic = { + created(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "created"); + }, + mounted(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "mounted"); + }, + beforeUpdate(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "beforeUpdate"); + }, + updated(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "updated"); + } + }; + function resolveDynamicModel(tagName, type) { + switch (tagName) { + case "SELECT": + return vModelSelect; + case "TEXTAREA": + return vModelText; + default: + switch (type) { + case "checkbox": + return vModelCheckbox; + case "radio": + return vModelRadio; + default: + return vModelText; + } + } + } + function callModelHook(el, binding, vnode, prevVNode, hook) { + const modelToUse = resolveDynamicModel( + el.tagName, + vnode.props && vnode.props.type + ); + const fn = modelToUse[hook]; + fn && fn(el, binding, vnode, prevVNode); + } + + const systemModifiers = ["ctrl", "shift", "alt", "meta"]; + const modifierGuards = { + stop: (e) => e.stopPropagation(), + prevent: (e) => e.preventDefault(), + self: (e) => e.target !== e.currentTarget, + ctrl: (e) => !e.ctrlKey, + shift: (e) => !e.shiftKey, + alt: (e) => !e.altKey, + meta: (e) => !e.metaKey, + left: (e) => "button" in e && e.button !== 0, + middle: (e) => "button" in e && e.button !== 1, + right: (e) => "button" in e && e.button !== 2, + exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m)) + }; + const withModifiers = (fn, modifiers) => { + const cache = fn._withMods || (fn._withMods = {}); + const cacheKey = modifiers.join("."); + return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => { + for (let i = 0; i < modifiers.length; i++) { + const guard = modifierGuards[modifiers[i]]; + if (guard && guard(event, modifiers)) return; + } + return fn(event, ...args); + }); + }; + const keyNames = { + esc: "escape", + space: " ", + up: "arrow-up", + left: "arrow-left", + right: "arrow-right", + down: "arrow-down", + delete: "backspace" + }; + const withKeys = (fn, modifiers) => { + const cache = fn._withKeys || (fn._withKeys = {}); + const cacheKey = modifiers.join("."); + return cache[cacheKey] || (cache[cacheKey] = (event) => { + if (!("key" in event)) { + return; + } + const eventKey = hyphenate(event.key); + if (modifiers.some( + (k) => k === eventKey || keyNames[k] === eventKey + )) { + return fn(event); + } + }); + }; + + const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps); + let renderer; + let enabledHydration = false; + function ensureRenderer() { + return renderer || (renderer = createRenderer(rendererOptions)); + } + function ensureHydrationRenderer() { + renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions); + enabledHydration = true; + return renderer; + } + const render = (...args) => { + ensureRenderer().render(...args); + }; + const hydrate = (...args) => { + ensureHydrationRenderer().hydrate(...args); + }; + const createApp = (...args) => { + const app = ensureRenderer().createApp(...args); + { + injectNativeTagCheck(app); + injectCompilerOptionsCheck(app); + } + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (!container) return; + const component = app._component; + if (!isFunction(component) && !component.render && !component.template) { + component.template = container.innerHTML; + } + if (container.nodeType === 1) { + container.textContent = ""; + } + const proxy = mount(container, false, resolveRootNamespace(container)); + if (container instanceof Element) { + container.removeAttribute("v-cloak"); + container.setAttribute("data-v-app", ""); + } + return proxy; + }; + return app; + }; + const createSSRApp = (...args) => { + const app = ensureHydrationRenderer().createApp(...args); + { + injectNativeTagCheck(app); + injectCompilerOptionsCheck(app); + } + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (container) { + return mount(container, true, resolveRootNamespace(container)); + } + }; + return app; + }; + function resolveRootNamespace(container) { + if (container instanceof SVGElement) { + return "svg"; + } + if (typeof MathMLElement === "function" && container instanceof MathMLElement) { + return "mathml"; + } + } + function injectNativeTagCheck(app) { + Object.defineProperty(app.config, "isNativeTag", { + value: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag), + writable: false + }); + } + function injectCompilerOptionsCheck(app) { + if (isRuntimeOnly()) { + const isCustomElement = app.config.isCustomElement; + Object.defineProperty(app.config, "isCustomElement", { + get() { + return isCustomElement; + }, + set() { + warn( + `The \`isCustomElement\` config option is deprecated. Use \`compilerOptions.isCustomElement\` instead.` + ); + } + }); + const compilerOptions = app.config.compilerOptions; + const msg = `The \`compilerOptions\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka "full build"). Since you are using the runtime-only build, \`compilerOptions\` must be passed to \`@vue/compiler-dom\` in the build setup instead. +- For vue-loader: pass it via vue-loader's \`compilerOptions\` loader option. +- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader +- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`; + Object.defineProperty(app.config, "compilerOptions", { + get() { + warn(msg); + return compilerOptions; + }, + set() { + warn(msg); + } + }); + } + } + function normalizeContainer(container) { + if (isString(container)) { + const res = document.querySelector(container); + if (!res) { + warn( + `Failed to mount app: mount target selector "${container}" returned null.` + ); + } + return res; + } + if (window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === "closed") { + warn( + `mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs` + ); + } + return container; + } + const initDirectivesForSSR = NOOP; + + exports.BaseTransition = BaseTransition; + exports.BaseTransitionPropsValidators = BaseTransitionPropsValidators; + exports.Comment = Comment; + exports.DeprecationTypes = DeprecationTypes; + exports.EffectScope = EffectScope; + exports.ErrorCodes = ErrorCodes; + exports.ErrorTypeStrings = ErrorTypeStrings; + exports.Fragment = Fragment; + exports.KeepAlive = KeepAlive; + exports.ReactiveEffect = ReactiveEffect; + exports.Static = Static; + exports.Suspense = Suspense; + exports.Teleport = Teleport; + exports.Text = Text; + exports.TrackOpTypes = TrackOpTypes; + exports.Transition = Transition; + exports.TransitionGroup = TransitionGroup; + exports.TriggerOpTypes = TriggerOpTypes; + exports.VueElement = VueElement; + exports.assertNumber = assertNumber; + exports.callWithAsyncErrorHandling = callWithAsyncErrorHandling; + exports.callWithErrorHandling = callWithErrorHandling; + exports.camelize = camelize; + exports.capitalize = capitalize; + exports.cloneVNode = cloneVNode; + exports.compatUtils = compatUtils; + exports.computed = computed; + exports.createApp = createApp; + exports.createBlock = createBlock; + exports.createCommentVNode = createCommentVNode; + exports.createElementBlock = createElementBlock; + exports.createElementVNode = createBaseVNode; + exports.createHydrationRenderer = createHydrationRenderer; + exports.createPropsRestProxy = createPropsRestProxy; + exports.createRenderer = createRenderer; + exports.createSSRApp = createSSRApp; + exports.createSlots = createSlots; + exports.createStaticVNode = createStaticVNode; + exports.createTextVNode = createTextVNode; + exports.createVNode = createVNode; + exports.customRef = customRef; + exports.defineAsyncComponent = defineAsyncComponent; + exports.defineComponent = defineComponent; + exports.defineCustomElement = defineCustomElement; + exports.defineEmits = defineEmits; + exports.defineExpose = defineExpose; + exports.defineModel = defineModel; + exports.defineOptions = defineOptions; + exports.defineProps = defineProps; + exports.defineSSRCustomElement = defineSSRCustomElement; + exports.defineSlots = defineSlots; + exports.devtools = devtools; + exports.effect = effect; + exports.effectScope = effectScope; + exports.getCurrentInstance = getCurrentInstance; + exports.getCurrentScope = getCurrentScope; + exports.getCurrentWatcher = getCurrentWatcher; + exports.getTransitionRawChildren = getTransitionRawChildren; + exports.guardReactiveProps = guardReactiveProps; + exports.h = h; + exports.handleError = handleError; + exports.hasInjectionContext = hasInjectionContext; + exports.hydrate = hydrate; + exports.hydrateOnIdle = hydrateOnIdle; + exports.hydrateOnInteraction = hydrateOnInteraction; + exports.hydrateOnMediaQuery = hydrateOnMediaQuery; + exports.hydrateOnVisible = hydrateOnVisible; + exports.initCustomFormatter = initCustomFormatter; + exports.initDirectivesForSSR = initDirectivesForSSR; + exports.inject = inject; + exports.isMemoSame = isMemoSame; + exports.isProxy = isProxy; + exports.isReactive = isReactive; + exports.isReadonly = isReadonly; + exports.isRef = isRef; + exports.isRuntimeOnly = isRuntimeOnly; + exports.isShallow = isShallow; + exports.isVNode = isVNode; + exports.markRaw = markRaw; + exports.mergeDefaults = mergeDefaults; + exports.mergeModels = mergeModels; + exports.mergeProps = mergeProps; + exports.nextTick = nextTick; + exports.normalizeClass = normalizeClass; + exports.normalizeProps = normalizeProps; + exports.normalizeStyle = normalizeStyle; + exports.onActivated = onActivated; + exports.onBeforeMount = onBeforeMount; + exports.onBeforeUnmount = onBeforeUnmount; + exports.onBeforeUpdate = onBeforeUpdate; + exports.onDeactivated = onDeactivated; + exports.onErrorCaptured = onErrorCaptured; + exports.onMounted = onMounted; + exports.onRenderTracked = onRenderTracked; + exports.onRenderTriggered = onRenderTriggered; + exports.onScopeDispose = onScopeDispose; + exports.onServerPrefetch = onServerPrefetch; + exports.onUnmounted = onUnmounted; + exports.onUpdated = onUpdated; + exports.onWatcherCleanup = onWatcherCleanup; + exports.openBlock = openBlock; + exports.popScopeId = popScopeId; + exports.provide = provide; + exports.proxyRefs = proxyRefs; + exports.pushScopeId = pushScopeId; + exports.queuePostFlushCb = queuePostFlushCb; + exports.reactive = reactive; + exports.readonly = readonly; + exports.ref = ref; + exports.registerRuntimeCompiler = registerRuntimeCompiler; + exports.render = render; + exports.renderList = renderList; + exports.renderSlot = renderSlot; + exports.resolveComponent = resolveComponent; + exports.resolveDirective = resolveDirective; + exports.resolveDynamicComponent = resolveDynamicComponent; + exports.resolveFilter = resolveFilter; + exports.resolveTransitionHooks = resolveTransitionHooks; + exports.setBlockTracking = setBlockTracking; + exports.setDevtoolsHook = setDevtoolsHook; + exports.setTransitionHooks = setTransitionHooks; + exports.shallowReactive = shallowReactive; + exports.shallowReadonly = shallowReadonly; + exports.shallowRef = shallowRef; + exports.ssrContextKey = ssrContextKey; + exports.ssrUtils = ssrUtils; + exports.stop = stop; + exports.toDisplayString = toDisplayString; + exports.toHandlerKey = toHandlerKey; + exports.toHandlers = toHandlers; + exports.toRaw = toRaw; + exports.toRef = toRef; + exports.toRefs = toRefs; + exports.toValue = toValue; + exports.transformVNodeArgs = transformVNodeArgs; + exports.triggerRef = triggerRef; + exports.unref = unref; + exports.useAttrs = useAttrs; + exports.useCssModule = useCssModule; + exports.useCssVars = useCssVars; + exports.useHost = useHost; + exports.useId = useId; + exports.useModel = useModel; + exports.useSSRContext = useSSRContext; + exports.useShadowRoot = useShadowRoot; + exports.useSlots = useSlots; + exports.useTemplateRef = useTemplateRef; + exports.useTransitionState = useTransitionState; + exports.vModelCheckbox = vModelCheckbox; + exports.vModelDynamic = vModelDynamic; + exports.vModelRadio = vModelRadio; + exports.vModelSelect = vModelSelect; + exports.vModelText = vModelText; + exports.vShow = vShow; + exports.version = version; + exports.warn = warn; + exports.watch = watch; + exports.watchEffect = watchEffect; + exports.watchPostEffect = watchPostEffect; + exports.watchSyncEffect = watchSyncEffect; + exports.withAsyncContext = withAsyncContext; + exports.withCtx = withCtx; + exports.withDefaults = withDefaults; + exports.withDirectives = withDirectives; + exports.withKeys = withKeys; + exports.withMemo = withMemo; + exports.withModifiers = withModifiers; + exports.withScopeId = withScopeId; + + return exports; + +})({}); diff --git a/node_modules/@vue/runtime-dom/dist/runtime-dom.global.prod.js b/node_modules/@vue/runtime-dom/dist/runtime-dom.global.prod.js new file mode 100644 index 0000000..6411904 --- /dev/null +++ b/node_modules/@vue/runtime-dom/dist/runtime-dom.global.prod.js @@ -0,0 +1,6 @@ +/** +* @vue/runtime-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/var VueRuntimeDOM=function(e){"use strict";var t,n;let l,r,i,s,o,a,u,c,f,p,d,h;function g(e){let t=Object.create(null);for(let n of e.split(","))t[n]=1;return e=>e in t}let m={},_=[],y=()=>{},b=()=>!1,S=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&(e.charCodeAt(2)>122||97>e.charCodeAt(2)),C=e=>e.startsWith("onUpdate:"),x=Object.assign,w=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},E=Object.prototype.hasOwnProperty,k=(e,t)=>E.call(e,t),T=Array.isArray,A=e=>"[object Map]"===F(e),R=e=>"[object Set]"===F(e),O=e=>"[object Date]"===F(e),N=e=>"function"==typeof e,P=e=>"string"==typeof e,M=e=>"symbol"==typeof e,I=e=>null!==e&&"object"==typeof e,L=e=>(I(e)||N(e))&&N(e.then)&&N(e.catch),D=Object.prototype.toString,F=e=>D.call(e),V=e=>"[object Object]"===F(e),U=e=>P(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,j=g(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),B=e=>{let t=Object.create(null);return n=>t[n]||(t[n]=e(n))},$=/-(\w)/g,H=B(e=>e.replace($,(e,t)=>t?t.toUpperCase():"")),W=/\B([A-Z])/g,K=B(e=>e.replace(W,"-$1").toLowerCase()),z=B(e=>e.charAt(0).toUpperCase()+e.slice(1)),q=B(e=>e?`on${z(e)}`:""),G=(e,t)=>!Object.is(e,t),J=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},X=(e,t,n,l=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:l,value:n})},Z=e=>{let t=parseFloat(e);return isNaN(t)?e:t},Y=e=>{let t=P(e)?Number(e):NaN;return isNaN(t)?e:t},Q=()=>l||(l="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{}),ee=g("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol");function et(e){if(T(e)){let t={};for(let n=0;n<e.length;n++){let l=e[n],r=P(l)?function(e){let t={};return e.replace(er,"").split(en).forEach(e=>{if(e){let n=e.split(el);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}(l):et(l);if(r)for(let e in r)t[e]=r[e]}return t}if(P(e)||I(e))return e}let en=/;(?![^(]*\))/g,el=/:([^]+)/,er=/\/\*[^]*?\*\//g;function ei(e){let t="";if(P(e))t=e;else if(T(e))for(let n=0;n<e.length;n++){let l=ei(e[n]);l&&(t+=l+" ")}else if(I(e))for(let n in e)e[n]&&(t+=n+" ");return t.trim()}let es=g("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function eo(e,t){if(e===t)return!0;let n=O(e),l=O(t);if(n||l)return!!n&&!!l&&e.getTime()===t.getTime();if(n=M(e),l=M(t),n||l)return e===t;if(n=T(e),l=T(t),n||l)return!!n&&!!l&&function(e,t){if(e.length!==t.length)return!1;let n=!0;for(let l=0;n&&l<e.length;l++)n=eo(e[l],t[l]);return n}(e,t);if(n=I(e),l=I(t),n||l){if(!n||!l||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e){let l=e.hasOwnProperty(n),r=t.hasOwnProperty(n);if(l&&!r||!l&&r||!eo(e[n],t[n]))return!1}}return String(e)===String(t)}function ea(e,t){return e.findIndex(e=>eo(e,t))}let eu=e=>!!(e&&!0===e.__v_isRef),ec=e=>P(e)?e:null==e?"":T(e)||I(e)&&(e.toString===D||!N(e.toString))?eu(e)?ec(e.value):JSON.stringify(e,ef,2):String(e),ef=(e,t)=>{if(eu(t))return ef(e,t.value);if(A(t))return{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],l)=>(e[ep(t,l)+" =>"]=n,e),{})};if(R(t))return{[`Set(${t.size})`]:[...t.values()].map(e=>ep(e))};if(M(t))return ep(t);if(I(t)&&!T(t)&&!V(t))return String(t);return t},ep=(e,t="")=>{var n;return M(e)?`Symbol(${null!=(n=e.description)?n:t})`:e};class ed{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=r,!e&&r&&(this.index=(r.scopes||(r.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){let e,t;if(this._isPaused=!0,this.scopes)for(e=0,t=this.scopes.length;e<t;e++)this.scopes[e].pause();for(e=0,t=this.effects.length;e<t;e++)this.effects[e].pause()}}resume(){if(this._active&&this._isPaused){let e,t;if(this._isPaused=!1,this.scopes)for(e=0,t=this.scopes.length;e<t;e++)this.scopes[e].resume();for(e=0,t=this.effects.length;e<t;e++)this.effects[e].resume()}}run(e){if(this._active){let t=r;try{return r=this,e()}finally{r=t}}}on(){1==++this._on&&(this.prevScope=r,r=this)}off(){this._on>0&&0==--this._on&&(r=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){let t,n;for(t=0,this._active=!1,n=this.effects.length;t<n;t++)this.effects[t].stop();for(t=0,this.effects.length=0,n=this.cleanups.length;t<n;t++)this.cleanups[t]();if(this.cleanups.length=0,this.scopes){for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!e){let e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.parent=void 0}}}let eh=new WeakSet;class ev{constructor(e){this.fn=e,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,r&&r.active&&r.effects.push(this)}pause(){this.flags|=64}resume(){64&this.flags&&(this.flags&=-65,eh.has(this)&&(eh.delete(this),this.trigger()))}notify(){(!(2&this.flags)||32&this.flags)&&(8&this.flags||em(this))}run(){if(!(1&this.flags))return this.fn();this.flags|=2,eA(this),ey(this);let e=i,t=ew;i=this,ew=!0;try{return this.fn()}finally{eb(this),i=e,ew=t,this.flags&=-3}}stop(){if(1&this.flags){for(let e=this.deps;e;e=e.nextDep)ex(e);this.deps=this.depsTail=void 0,eA(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){64&this.flags?eh.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){eS(this)&&this.run()}get dirty(){return eS(this)}}let eg=0;function em(e,t=!1){if(e.flags|=8,t){e.next=o,o=e;return}e.next=s,s=e}function e_(){let e;if(!(--eg>0)){if(o){let e=o;for(o=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}for(;s;){let t=s;for(s=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,1&t.flags)try{t.trigger()}catch(t){e||(e=t)}t=n}}if(e)throw e}}function ey(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function eb(e){let t,n=e.depsTail,l=n;for(;l;){let e=l.prevDep;-1===l.version?(l===n&&(n=e),ex(l),function(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}(l)):t=l,l.dep.activeLink=l.prevActiveLink,l.prevActiveLink=void 0,l=e}e.deps=t,e.depsTail=n}function eS(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(eC(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function eC(e){if(4&e.flags&&!(16&e.flags)||(e.flags&=-17,e.globalVersion===eR)||(e.globalVersion=eR,!e.isSSR&&128&e.flags&&(!e.deps&&!e._dirty||!eS(e))))return;e.flags|=2;let t=e.dep,n=i,l=ew;i=e,ew=!0;try{ey(e);let n=e.fn(e._value);(0===t.version||G(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{i=n,ew=l,eb(e),e.flags&=-3}}function ex(e,t=!1){let{dep:n,prevSub:l,nextSub:r}=e;if(l&&(l.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=l,e.nextSub=void 0),n.subs===e&&(n.subs=l,!l&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)ex(e,!0)}t||--n.sc||!n.map||n.map.delete(n.key)}let ew=!0,eE=[];function ek(){eE.push(ew),ew=!1}function eT(){let e=eE.pop();ew=void 0===e||e}function eA(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=i;i=void 0;try{t()}finally{i=e}}}let eR=0;class eO{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class eN{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!i||!ew||i===this.computed)return;let t=this.activeLink;if(void 0===t||t.sub!==i)t=this.activeLink=new eO(i,this),i.deps?(t.prevDep=i.depsTail,i.depsTail.nextDep=t,i.depsTail=t):i.deps=i.depsTail=t,function e(t){if(t.dep.sc++,4&t.sub.flags){let n=t.dep.computed;if(n&&!t.dep.subs){n.flags|=20;for(let t=n.deps;t;t=t.nextDep)e(t)}let l=t.dep.subs;l!==t&&(t.prevSub=l,l&&(l.nextSub=t)),t.dep.subs=t}}(t);else if(-1===t.version&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=i.depsTail,t.nextDep=void 0,i.depsTail.nextDep=t,i.depsTail=t,i.deps===t&&(i.deps=e)}return t}trigger(e){this.version++,eR++,this.notify(e)}notify(e){eg++;try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{e_()}}}let eP=new WeakMap,eM=Symbol(""),eI=Symbol(""),eL=Symbol("");function eD(e,t,n){if(ew&&i){let t=eP.get(e);t||eP.set(e,t=new Map);let l=t.get(n);l||(t.set(n,l=new eN),l.map=t,l.key=n),l.track()}}function eF(e,t,n,l,r,i){let s=eP.get(e);if(!s)return void eR++;let o=e=>{e&&e.trigger()};if(eg++,"clear"===t)s.forEach(o);else{let r=T(e),i=r&&U(n);if(r&&"length"===n){let e=Number(l);s.forEach((t,n)=>{("length"===n||n===eL||!M(n)&&n>=e)&&o(t)})}else switch((void 0!==n||s.has(void 0))&&o(s.get(n)),i&&o(s.get(eL)),t){case"add":r?i&&o(s.get("length")):(o(s.get(eM)),A(e)&&o(s.get(eI)));break;case"delete":!r&&(o(s.get(eM)),A(e)&&o(s.get(eI)));break;case"set":A(e)&&o(s.get(eM))}}e_()}function eV(e){let t=td(e);return t===e?t:(eD(t,"iterate",eL),tf(e)?t:t.map(tv))}function eU(e){return eD(e=td(e),"iterate",eL),e}let ej={__proto__:null,[Symbol.iterator](){return eB(this,Symbol.iterator,tv)},concat(...e){return eV(this).concat(...e.map(e=>T(e)?eV(e):e))},entries(){return eB(this,"entries",e=>(e[1]=tv(e[1]),e))},every(e,t){return eH(this,"every",e,t,void 0,arguments)},filter(e,t){return eH(this,"filter",e,t,e=>e.map(tv),arguments)},find(e,t){return eH(this,"find",e,t,tv,arguments)},findIndex(e,t){return eH(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return eH(this,"findLast",e,t,tv,arguments)},findLastIndex(e,t){return eH(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return eH(this,"forEach",e,t,void 0,arguments)},includes(...e){return eK(this,"includes",e)},indexOf(...e){return eK(this,"indexOf",e)},join(e){return eV(this).join(e)},lastIndexOf(...e){return eK(this,"lastIndexOf",e)},map(e,t){return eH(this,"map",e,t,void 0,arguments)},pop(){return ez(this,"pop")},push(...e){return ez(this,"push",e)},reduce(e,...t){return eW(this,"reduce",e,t)},reduceRight(e,...t){return eW(this,"reduceRight",e,t)},shift(){return ez(this,"shift")},some(e,t){return eH(this,"some",e,t,void 0,arguments)},splice(...e){return ez(this,"splice",e)},toReversed(){return eV(this).toReversed()},toSorted(e){return eV(this).toSorted(e)},toSpliced(...e){return eV(this).toSpliced(...e)},unshift(...e){return ez(this,"unshift",e)},values(){return eB(this,"values",tv)}};function eB(e,t,n){let l=eU(e),r=l[t]();return l===e||tf(e)||(r._next=r.next,r.next=()=>{let e=r._next();return e.value&&(e.value=n(e.value)),e}),r}let e$=Array.prototype;function eH(e,t,n,l,r,i){let s=eU(e),o=s!==e&&!tf(e),a=s[t];if(a!==e$[t]){let t=a.apply(e,i);return o?tv(t):t}let u=n;s!==e&&(o?u=function(t,l){return n.call(this,tv(t),l,e)}:n.length>2&&(u=function(t,l){return n.call(this,t,l,e)}));let c=a.call(s,u,l);return o&&r?r(c):c}function eW(e,t,n,l){let r=eU(e),i=n;return r!==e&&(tf(e)?n.length>3&&(i=function(t,l,r){return n.call(this,t,l,r,e)}):i=function(t,l,r){return n.call(this,t,tv(l),r,e)}),r[t](i,...l)}function eK(e,t,n){let l=td(e);eD(l,"iterate",eL);let r=l[t](...n);return(-1===r||!1===r)&&tp(n[0])?(n[0]=td(n[0]),l[t](...n)):r}function ez(e,t,n=[]){ek(),eg++;let l=td(e)[t].apply(e,n);return e_(),eT(),l}let eq=g("__proto__,__v_isRef,__isVue"),eG=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>"arguments"!==e&&"caller"!==e).map(e=>Symbol[e]).filter(M));function eJ(e){M(e)||(e=String(e));let t=td(this);return eD(t,"has",e),t.hasOwnProperty(e)}class eX{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if("__v_skip"===t)return e.__v_skip;let l=this._isReadonly,r=this._isShallow;if("__v_isReactive"===t)return!l;if("__v_isReadonly"===t)return l;if("__v_isShallow"===t)return r;if("__v_raw"===t)return n===(l?r?tr:tl:r?tn:tt).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let i=T(e);if(!l){let e;if(i&&(e=ej[t]))return e;if("hasOwnProperty"===t)return eJ}let s=Reflect.get(e,t,tm(e)?e:n);return(M(t)?eG.has(t):eq(t))||(l||eD(e,"get",t),r)?s:tm(s)?i&&U(t)?s:s.value:I(s)?l?to(s):ti(s):s}}class eZ extends eX{constructor(e=!1){super(!1,e)}set(e,t,n,l){let r=e[t];if(!this._isShallow){let t=tc(r);if(tf(n)||tc(n)||(r=td(r),n=td(n)),!T(e)&&tm(r)&&!tm(n))if(t)return!1;else return r.value=n,!0}let i=T(e)&&U(t)?Number(t)<e.length:k(e,t),s=Reflect.set(e,t,n,tm(e)?e:l);return e===td(l)&&(i?G(n,r)&&eF(e,"set",t,n):eF(e,"add",t,n)),s}deleteProperty(e,t){let n=k(e,t);e[t];let l=Reflect.deleteProperty(e,t);return l&&n&&eF(e,"delete",t,void 0),l}has(e,t){let n=Reflect.has(e,t);return M(t)&&eG.has(t)||eD(e,"has",t),n}ownKeys(e){return eD(e,"iterate",T(e)?"length":eM),Reflect.ownKeys(e)}}class eY extends eX{constructor(e=!1){super(!0,e)}set(e,t){return!0}deleteProperty(e,t){return!0}}let eQ=new eZ,e0=new eY,e1=new eZ(!0),e2=new eY(!0),e6=e=>e,e8=e=>Reflect.getPrototypeOf(e);function e4(e){return function(){return"delete"!==e&&("clear"===e?void 0:this)}}function e3(e,t){let n=function(e,t){let n={get(n){let l=this.__v_raw,r=td(l),i=td(n);e||(G(n,i)&&eD(r,"get",n),eD(r,"get",i));let{has:s}=e8(r),o=t?e6:e?tg:tv;return s.call(r,n)?o(l.get(n)):s.call(r,i)?o(l.get(i)):void(l!==r&&l.get(n))},get size(){let t=this.__v_raw;return e||eD(td(t),"iterate",eM),Reflect.get(t,"size",t)},has(t){let n=this.__v_raw,l=td(n),r=td(t);return e||(G(t,r)&&eD(l,"has",t),eD(l,"has",r)),t===r?n.has(t):n.has(t)||n.has(r)},forEach(n,l){let r=this,i=r.__v_raw,s=td(i),o=t?e6:e?tg:tv;return e||eD(s,"iterate",eM),i.forEach((e,t)=>n.call(l,o(e),o(t),r))}};return x(n,e?{add:e4("add"),set:e4("set"),delete:e4("delete"),clear:e4("clear")}:{add(e){t||tf(e)||tc(e)||(e=td(e));let n=td(this);return e8(n).has.call(n,e)||(n.add(e),eF(n,"add",e,e)),this},set(e,n){t||tf(n)||tc(n)||(n=td(n));let l=td(this),{has:r,get:i}=e8(l),s=r.call(l,e);s||(e=td(e),s=r.call(l,e));let o=i.call(l,e);return l.set(e,n),s?G(n,o)&&eF(l,"set",e,n):eF(l,"add",e,n),this},delete(e){let t=td(this),{has:n,get:l}=e8(t),r=n.call(t,e);r||(e=td(e),r=n.call(t,e)),l&&l.call(t,e);let i=t.delete(e);return r&&eF(t,"delete",e,void 0),i},clear(){let e=td(this),t=0!==e.size,n=e.clear();return t&&eF(e,"clear",void 0,void 0),n}}),["keys","values","entries",Symbol.iterator].forEach(l=>{n[l]=function(...n){let r=this.__v_raw,i=td(r),s=A(i),o="entries"===l||l===Symbol.iterator&&s,a=r[l](...n),u=t?e6:e?tg:tv;return e||eD(i,"iterate","keys"===l&&s?eI:eM),{next(){let{value:e,done:t}=a.next();return t?{value:e,done:t}:{value:o?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}),n}(e,t);return(t,l,r)=>"__v_isReactive"===l?!e:"__v_isReadonly"===l?e:"__v_raw"===l?t:Reflect.get(k(n,l)&&l in t?n:t,l,r)}let e5={get:e3(!1,!1)},e9={get:e3(!1,!0)},e7={get:e3(!0,!1)},te={get:e3(!0,!0)},tt=new WeakMap,tn=new WeakMap,tl=new WeakMap,tr=new WeakMap;function ti(e){return tc(e)?e:ta(e,!1,eQ,e5,tt)}function ts(e){return ta(e,!1,e1,e9,tn)}function to(e){return ta(e,!0,e0,e7,tl)}function ta(e,t,n,l,r){var i;if(!I(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;let s=(i=e).__v_skip||!Object.isExtensible(i)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(F(i).slice(8,-1));if(0===s)return e;let o=r.get(e);if(o)return o;let a=new Proxy(e,2===s?l:n);return r.set(e,a),a}function tu(e){return tc(e)?tu(e.__v_raw):!!(e&&e.__v_isReactive)}function tc(e){return!!(e&&e.__v_isReadonly)}function tf(e){return!!(e&&e.__v_isShallow)}function tp(e){return!!e&&!!e.__v_raw}function td(e){let t=e&&e.__v_raw;return t?td(t):e}function th(e){return!k(e,"__v_skip")&&Object.isExtensible(e)&&X(e,"__v_skip",!0),e}let tv=e=>I(e)?ti(e):e,tg=e=>I(e)?to(e):e;function tm(e){return!!e&&!0===e.__v_isRef}function t_(e){return tb(e,!1)}function ty(e){return tb(e,!0)}function tb(e,t){return tm(e)?e:new tS(e,t)}class tS{constructor(e,t){this.dep=new eN,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:td(e),this._value=t?e:tv(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||tf(e)||tc(e);G(e=n?e:td(e),t)&&(this._rawValue=e,this._value=n?e:tv(e),this.dep.trigger())}}function tC(e){return tm(e)?e.value:e}let tx={get:(e,t,n)=>"__v_raw"===t?e:tC(Reflect.get(e,t,n)),set:(e,t,n,l)=>{let r=e[t];return tm(r)&&!tm(n)?(r.value=n,!0):Reflect.set(e,t,n,l)}};function tw(e){return tu(e)?e:new Proxy(e,tx)}class tE{constructor(e){this.__v_isRef=!0,this._value=void 0;let t=this.dep=new eN,{get:n,set:l}=e(t.track.bind(t),t.trigger.bind(t));this._get=n,this._set=l}get value(){return this._value=this._get()}set value(e){this._set(e)}}function tk(e){return new tE(e)}class tT{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0}get value(){let e=this._object[this._key];return this._value=void 0===e?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return function(e,t){let n=eP.get(e);return n&&n.get(t)}(td(this._object),this._key)}}class tA{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function tR(e,t,n){let l=e[t];return tm(l)?l:new tT(e,t,n)}class tO{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new eN(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=eR-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(8&this.flags)&&i!==this)return em(this,!0),!0}get value(){let e=this.dep.track();return eC(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}let tN={},tP=new WeakMap;function tM(e,t=!1,n=d){if(n){let t=tP.get(n);t||tP.set(n,t=[]),t.push(e)}}function tI(e,t=1/0,n){if(t<=0||!I(e)||e.__v_skip||(n=n||new Set).has(e))return e;if(n.add(e),t--,tm(e))tI(e.value,t,n);else if(T(e))for(let l=0;l<e.length;l++)tI(e[l],t,n);else if(R(e)||A(e))e.forEach(e=>{tI(e,t,n)});else if(V(e)){for(let l in e)tI(e[l],t,n);for(let l of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,l)&&tI(e[l],t,n)}return e}function tL(e,t,n,l){try{return l?e(...l):e()}catch(e){tF(e,t,n)}}function tD(e,t,n,l){if(N(e)){let r=tL(e,t,n,l);return r&&L(r)&&r.catch(e=>{tF(e,t,n)}),r}if(T(e)){let r=[];for(let i=0;i<e.length;i++)r.push(tD(e[i],t,n,l));return r}}function tF(e,t,n,l=!0){let r=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:s}=t&&t.appContext.config||m;if(t){let l=t.parent,r=t.proxy,s=`https://vuejs.org/error-reference/#runtime-${n}`;for(;l;){let t=l.ec;if(t){for(let n=0;n<t.length;n++)if(!1===t[n](e,r,s))return}l=l.parent}if(i){ek(),tL(i,null,10,[e,r,s]),eT();return}}!function(e,t,n,l=!0,r=!1){if(r)throw e;console.error(e)}(e,0,0,l,s)}let tV=[],tU=-1,tj=[],tB=null,t$=0,tH=Promise.resolve(),tW=null;function tK(e){let t=tW||tH;return e?t.then(this?e.bind(this):e):t}function tz(e){if(!(1&e.flags)){let t=tZ(e),n=tV[tV.length-1];!n||!(2&e.flags)&&t>=tZ(n)?tV.push(e):tV.splice(function(e){let t=tU+1,n=tV.length;for(;t<n;){let l=t+n>>>1,r=tV[l],i=tZ(r);i<e||i===e&&2&r.flags?t=l+1:n=l}return t}(t),0,e),e.flags|=1,tq()}}function tq(){tW||(tW=tH.then(function e(t){try{for(tU=0;tU<tV.length;tU++){let e=tV[tU];e&&!(8&e.flags)&&(4&e.flags&&(e.flags&=-2),tL(e,e.i,e.i?15:14),4&e.flags||(e.flags&=-2))}}finally{for(;tU<tV.length;tU++){let e=tV[tU];e&&(e.flags&=-2)}tU=-1,tV.length=0,tX(),tW=null,(tV.length||tj.length)&&e()}}))}function tG(e){T(e)?tj.push(...e):tB&&-1===e.id?tB.splice(t$+1,0,e):1&e.flags||(tj.push(e),e.flags|=1),tq()}function tJ(e,t,n=tU+1){for(;n<tV.length;n++){let t=tV[n];if(t&&2&t.flags){if(e&&t.id!==e.uid)continue;tV.splice(n,1),n--,4&t.flags&&(t.flags&=-2),t(),4&t.flags||(t.flags&=-2)}}}function tX(e){if(tj.length){let e=[...new Set(tj)].sort((e,t)=>tZ(e)-tZ(t));if(tj.length=0,tB)return void tB.push(...e);for(t$=0,tB=e;t$<tB.length;t$++){let e=tB[t$];4&e.flags&&(e.flags&=-2),8&e.flags||e(),e.flags&=-2}tB=null,t$=0}}let tZ=e=>null==e.id?2&e.flags?-1:1/0:e.id,tY=null,tQ=null;function t0(e){let t=tY;return tY=e,tQ=e&&e.type.__scopeId||null,t}function t1(e,t=tY,n){if(!t||e._n)return e;let l=(...n)=>{let r;l._d&&l7(-1);let i=t0(t);try{r=e(...n)}finally{t0(i),l._d&&l7(1)}return r};return l._n=!0,l._c=!0,l._d=!0,l}function t2(e,t,n,l){let r=e.dirs,i=t&&t.dirs;for(let s=0;s<r.length;s++){let o=r[s];i&&(o.oldValue=i[s].value);let a=o.dir[l];a&&(ek(),tD(a,n,8,[e.el,o,e,t]),eT())}}let t6=Symbol("_vte"),t8=e=>e&&(e.disabled||""===e.disabled),t4=e=>e&&(e.defer||""===e.defer),t3=e=>"undefined"!=typeof SVGElement&&e instanceof SVGElement,t5=e=>"function"==typeof MathMLElement&&e instanceof MathMLElement,t9=(e,t)=>{let n=e&&e.to;return P(n)?t?t(n):null:n},t7={name:"Teleport",__isTeleport:!0,process(e,t,n,l,r,i,s,o,a,u){let{mc:c,pc:f,pbc:p,o:{insert:d,querySelector:h,createText:g,createComment:m}}=u,_=t8(t.props),{shapeFlag:y,children:b,dynamicChildren:S}=t;if(null==e){let e=t.el=g(""),u=t.anchor=g("");d(e,n,l),d(u,n,l);let f=(e,t)=>{16&y&&(r&&r.isCE&&(r.ce._teleportTarget=e),c(b,e,t,r,i,s,o,a))},p=()=>{let e=t.target=t9(t.props,h),n=nn(e,t,g,d);e&&("svg"!==s&&t3(e)?s="svg":"mathml"!==s&&t5(e)&&(s="mathml"),_||(f(e,n),nt(t,!1)))};_&&(f(n,u),nt(t,!0)),t4(t.props)?(t.el.__isMounted=!1,lk(()=>{p(),delete t.el.__isMounted},i)):p()}else{if(t4(t.props)&&!1===e.el.__isMounted)return void lk(()=>{t7.process(e,t,n,l,r,i,s,o,a,u)},i);t.el=e.el,t.targetStart=e.targetStart;let c=t.anchor=e.anchor,d=t.target=e.target,g=t.targetAnchor=e.targetAnchor,m=t8(e.props),y=m?n:d,b=m?c:g;if("svg"===s||t3(d)?s="svg":("mathml"===s||t5(d))&&(s="mathml"),S?(p(e.dynamicChildren,S,y,r,i,s,o),lP(e,t,!0)):a||f(e,t,y,b,r,i,s,o,!1),_)m?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ne(t,n,c,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){let e=t.target=t9(t.props,h);e&&ne(t,e,null,u,0)}else m&&ne(t,d,g,u,1);nt(t,_)}},remove(e,t,n,{um:l,o:{remove:r}},i){let{shapeFlag:s,children:o,anchor:a,targetStart:u,targetAnchor:c,target:f,props:p}=e;if(f&&(r(u),r(c)),i&&r(a),16&s){let e=i||!t8(p);for(let r=0;r<o.length;r++){let i=o[r];l(i,t,n,e,!!i.dynamicChildren)}}},move:ne,hydrate:function(e,t,n,l,r,i,{o:{nextSibling:s,parentNode:o,querySelector:a,insert:u,createText:c}},f){let p=t.target=t9(t.props,a);if(p){let a=t8(t.props),d=p._lpa||p.firstChild;if(16&t.shapeFlag)if(a)t.anchor=f(s(e),t,o(e),n,l,r,i),t.targetStart=d,t.targetAnchor=d&&s(d);else{t.anchor=s(e);let o=d;for(;o;){if(o&&8===o.nodeType){if("teleport start anchor"===o.data)t.targetStart=o;else if("teleport anchor"===o.data){t.targetAnchor=o,p._lpa=t.targetAnchor&&s(t.targetAnchor);break}}o=s(o)}t.targetAnchor||nn(p,t,c,u),f(d&&s(d),t,p,n,l,r,i)}nt(t,a)}return t.anchor&&s(t.anchor)}};function ne(e,t,n,{o:{insert:l},m:r},i=2){0===i&&l(e.targetAnchor,t,n);let{el:s,anchor:o,shapeFlag:a,children:u,props:c}=e,f=2===i;if(f&&l(s,t,n),(!f||t8(c))&&16&a)for(let e=0;e<u.length;e++)r(u[e],t,n,2);f&&l(o,t,n)}function nt(e,t){let n=e.ctx;if(n&&n.ut){let l,r;for(t?(l=e.el,r=e.anchor):(l=e.targetStart,r=e.targetAnchor);l&&l!==r;)1===l.nodeType&&l.setAttribute("data-v-owner",n.uid),l=l.nextSibling;n.ut()}}function nn(e,t,n,l){let r=t.targetStart=n(""),i=t.targetAnchor=n("");return r[t6]=i,e&&(l(r,e),l(i,e)),i}let nl=Symbol("_leaveCb"),nr=Symbol("_enterCb");function ni(){let e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return n$(()=>{e.isMounted=!0}),nK(()=>{e.isUnmounting=!0}),e}let ns=[Function,Array],no={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ns,onEnter:ns,onAfterEnter:ns,onEnterCancelled:ns,onBeforeLeave:ns,onLeave:ns,onAfterLeave:ns,onLeaveCancelled:ns,onBeforeAppear:ns,onAppear:ns,onAfterAppear:ns,onAppearCancelled:ns},na=e=>{let t=e.subTree;return t.component?na(t.component):t};function nu(e){let t=e[0];if(e.length>1){for(let n of e)if(n.type!==l2){t=n;break}}return t}let nc={name:"BaseTransition",props:no,setup(e,{slots:t}){let n=ry(),l=ni();return()=>{let r=t.default&&ng(t.default(),!0);if(!r||!r.length)return;let i=nu(r),s=td(e),{mode:o}=s;if(l.isLeaving)return nd(i);let a=nh(i);if(!a)return nd(i);let u=np(a,s,l,n,e=>u=e);a.type!==l2&&nv(a,u);let c=n.subTree&&nh(n.subTree);if(c&&c.type!==l2&&!rl(a,c)&&na(n).type!==l2){let e=np(c,s,l,n);if(nv(c,e),"out-in"===o&&a.type!==l2)return l.isLeaving=!0,e.afterLeave=()=>{l.isLeaving=!1,8&n.job.flags||n.update(),delete e.afterLeave,c=void 0},nd(i);"in-out"===o&&a.type!==l2?e.delayLeave=(e,t,n)=>{nf(l,c)[String(c.key)]=c,e[nl]=()=>{t(),e[nl]=void 0,delete u.delayedLeave,c=void 0},u.delayedLeave=()=>{n(),delete u.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return i}}};function nf(e,t){let{leavingVNodes:n}=e,l=n.get(t.type);return l||(l=Object.create(null),n.set(t.type,l)),l}function np(e,t,n,l,r){let{appear:i,mode:s,persisted:o=!1,onBeforeEnter:a,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:p,onLeave:d,onAfterLeave:h,onLeaveCancelled:g,onBeforeAppear:m,onAppear:_,onAfterAppear:y,onAppearCancelled:b}=t,S=String(e.key),C=nf(n,e),x=(e,t)=>{e&&tD(e,l,9,t)},w=(e,t)=>{let n=t[1];x(e,t),T(e)?e.every(e=>e.length<=1)&&n():e.length<=1&&n()},E={mode:s,persisted:o,beforeEnter(t){let l=a;if(!n.isMounted)if(!i)return;else l=m||a;t[nl]&&t[nl](!0);let r=C[S];r&&rl(e,r)&&r.el[nl]&&r.el[nl](),x(l,[t])},enter(e){let t=u,l=c,r=f;if(!n.isMounted)if(!i)return;else t=_||u,l=y||c,r=b||f;let s=!1,o=e[nr]=t=>{s||(s=!0,t?x(r,[e]):x(l,[e]),E.delayedLeave&&E.delayedLeave(),e[nr]=void 0)};t?w(t,[e,o]):o()},leave(t,l){let r=String(e.key);if(t[nr]&&t[nr](!0),n.isUnmounting)return l();x(p,[t]);let i=!1,s=t[nl]=n=>{i||(i=!0,l(),n?x(g,[t]):x(h,[t]),t[nl]=void 0,C[r]===e&&delete C[r])};C[r]=e,d?w(d,[t,s]):s()},clone(e){let i=np(e,t,n,l,r);return r&&r(i),i}};return E}function nd(e){if(nP(e))return(e=ru(e)).children=null,e}function nh(e){if(!nP(e))return e.type.__isTeleport&&e.children?nu(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:n}=e;if(n){if(16&t)return n[0];if(32&t&&N(n.default))return n.default()}}function nv(e,t){6&e.shapeFlag&&e.component?(e.transition=t,nv(e.component.subTree,t)):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ng(e,t=!1,n){let l=[],r=0;for(let i=0;i<e.length;i++){let s=e[i],o=null==n?s.key:String(n)+String(null!=s.key?s.key:i);s.type===l0?(128&s.patchFlag&&r++,l=l.concat(ng(s.children,t,o))):(t||s.type!==l2)&&l.push(null!=o?ru(s,{key:o}):s)}if(r>1)for(let e=0;e<l.length;e++)l[e].patchFlag=-2;return l}function nm(e,t){return N(e)?x({name:e.name},t,{setup:e}):e}function n_(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function ny(e,t,n,l,r=!1){if(T(e))return void e.forEach((e,i)=>ny(e,t&&(T(t)?t[i]:t),n,l,r));if(nO(l)&&!r){512&l.shapeFlag&&l.type.__asyncResolved&&l.component.subTree.component&&ny(e,t,n,l.component.subTree);return}let i=4&l.shapeFlag?rA(l.component):l.el,s=r?null:i,{i:o,r:a}=e,u=t&&t.r,c=o.refs===m?o.refs={}:o.refs,f=o.setupState,p=td(f),d=f===m?()=>!1:e=>k(p,e);if(null!=u&&u!==a&&(P(u)?(c[u]=null,d(u)&&(f[u]=null)):tm(u)&&(u.value=null)),N(a))tL(a,o,12,[s,c]);else{let t=P(a),l=tm(a);if(t||l){let o=()=>{if(e.f){let n=t?d(a)?f[a]:c[a]:a.value;r?T(n)&&w(n,i):T(n)?n.includes(i)||n.push(i):t?(c[a]=[i],d(a)&&(f[a]=c[a])):(a.value=[i],e.k&&(c[e.k]=a.value))}else t?(c[a]=s,d(a)&&(f[a]=s)):l&&(a.value=s,e.k&&(c[e.k]=s))};s?(o.id=-1,lk(o,n)):o()}}}let nb=!1,nS=()=>{nb||(console.error("Hydration completed but contains mismatches."),nb=!0)},nC=e=>{if(1===e.nodeType){if(e.namespaceURI.includes("svg")&&"foreignObject"!==e.tagName)return"svg";if(e.namespaceURI.includes("MathML"))return"mathml"}},nx=e=>8===e.nodeType;function nw(e){let{mt:t,p:n,o:{patchProp:l,createText:r,nextSibling:i,parentNode:s,remove:o,insert:a,createComment:u}}=e,c=(n,l,o,u,y,b=!1)=>{b=b||!!l.dynamicChildren;let S=nx(n)&&"["===n.data,C=()=>h(n,l,o,u,y,S),{type:x,ref:w,shapeFlag:E,patchFlag:k}=l,T=n.nodeType;l.el=n,-2===k&&(b=!1,l.dynamicChildren=null);let A=null;switch(x){case l1:3!==T?""===l.children?(a(l.el=r(""),s(n),n),A=n):A=C():(n.data!==l.children&&(nS(),n.data=l.children),A=i(n));break;case l2:_(n)?(A=i(n),m(l.el=n.content.firstChild,n,o)):A=8!==T||S?C():i(n);break;case l6:if(S&&(T=(n=i(n)).nodeType),1===T||3===T){A=n;let e=!l.children.length;for(let t=0;t<l.staticCount;t++)e&&(l.children+=1===A.nodeType?A.outerHTML:A.data),t===l.staticCount-1&&(l.anchor=A),A=i(A);return S?i(A):A}C();break;case l0:A=S?d(n,l,o,u,y,b):C();break;default:if(1&E)A=1===T&&l.type.toLowerCase()===n.tagName.toLowerCase()||_(n)?f(n,l,o,u,y,b):C();else if(6&E){l.slotScopeIds=y;let e=s(n);if(A=S?g(n):nx(n)&&"teleport start"===n.data?g(n,n.data,"teleport end"):i(n),t(l,e,null,o,u,nC(e),b),nO(l)&&!l.type.__asyncResolved){let t;S?(t=ro(l0)).anchor=A?A.previousSibling:e.lastChild:t=3===n.nodeType?rc(""):ro("div"),t.el=n,l.component.subTree=t}}else 64&E?A=8!==T?C():l.type.hydrate(n,l,o,u,y,b,e,p):128&E&&(A=l.type.hydrate(n,l,o,u,nC(s(n)),y,b,e,c))}return null!=w&&ny(w,null,u,l),A},f=(e,t,n,r,i,s)=>{s=s||!!t.dynamicChildren;let{type:a,props:u,patchFlag:c,shapeFlag:f,dirs:d,transition:h}=t,g="input"===a||"option"===a;if(g||-1!==c){let a;d&&t2(t,null,n,"created");let y=!1;if(_(e)){y=lN(null,h)&&n&&n.vnode.props&&n.vnode.props.appear;let l=e.content.firstChild;if(y){let e=l.getAttribute("class");e&&(l.$cls=e),h.beforeEnter(l)}m(l,e,n),t.el=e=l}if(16&f&&!(u&&(u.innerHTML||u.textContent))){let l=p(e.firstChild,t,e,n,r,i,s);for(;l;){nT(e,1)||nS();let t=l;l=l.nextSibling,o(t)}}else if(8&f){let n=t.children;` +`===n[0]&&("PRE"===e.tagName||"TEXTAREA"===e.tagName)&&(n=n.slice(1)),e.textContent!==n&&(nT(e,0)||nS(),e.textContent=t.children)}if(u){if(g||!s||48&c){let t=e.tagName.includes("-");for(let r in u)(g&&(r.endsWith("value")||"indeterminate"===r)||S(r)&&!j(r)||"."===r[0]||t)&&l(e,r,null,u[r],void 0,n)}else if(u.onClick)l(e,"onClick",null,u.onClick,void 0,n);else if(4&c&&tu(u.style))for(let e in u.style)u.style[e]}(a=u&&u.onVnodeBeforeMount)&&rv(a,n,t),d&&t2(t,null,n,"beforeMount"),((a=u&&u.onVnodeMounted)||d||y)&&lY(()=>{a&&rv(a,n,t),y&&h.enter(e),d&&t2(t,null,n,"mounted")},r)}return e.nextSibling},p=(e,t,l,s,o,u,f)=>{f=f||!!t.dynamicChildren;let p=t.children,d=p.length;for(let t=0;t<d;t++){let h=f?p[t]:p[t]=rf(p[t]),g=h.type===l1;e?(g&&!f&&t+1<d&&rf(p[t+1]).type===l1&&(a(r(e.data.slice(h.children.length)),l,i(e)),e.data=h.children),e=c(e,h,s,o,u,f)):g&&!h.children?a(h.el=r(""),l):(nT(l,1)||nS(),n(null,h,l,null,s,o,nC(l),u))}return e},d=(e,t,n,l,r,o)=>{let{slotScopeIds:c}=t;c&&(r=r?r.concat(c):c);let f=s(e),d=p(i(e),t,f,n,l,r,o);return d&&nx(d)&&"]"===d.data?i(t.anchor=d):(nS(),a(t.anchor=u("]"),f,d),d)},h=(e,t,l,r,a,u)=>{if(nT(e.parentElement,1)||nS(),t.el=null,u){let t=g(e);for(;;){let n=i(e);if(n&&n!==t)o(n);else break}}let c=i(e),f=s(e);return o(e),n(null,t,f,c,l,r,nC(f),a),l&&(l.vnode.el=t.el,lz(l,t.el)),c},g=(e,t="[",n="]")=>{let l=0;for(;e;)if((e=i(e))&&nx(e)&&(e.data===t&&l++,e.data===n))if(0===l)return i(e);else l--;return e},m=(e,t,n)=>{let l=t.parentNode;l&&l.replaceChild(e,t);let r=n;for(;r;)r.vnode.el===t&&(r.vnode.el=r.subTree.el=e),r=r.parent},_=e=>1===e.nodeType&&"TEMPLATE"===e.tagName;return[(e,t)=>{if(!t.hasChildNodes()){n(null,e,t),tX(),t._vnode=e;return}c(t.firstChild,e,null,null,null),tX(),t._vnode=e},c]}let nE="data-allow-mismatch",nk={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function nT(e,t){if(0===t||1===t)for(;e&&!e.hasAttribute(nE);)e=e.parentElement;let n=e&&e.getAttribute(nE);if(null==n)return!1;{if(""===n)return!0;let e=n.split(",");return!!(0===t&&e.includes("children"))||e.includes(nk[t])}}let nA=Q().requestIdleCallback||(e=>setTimeout(e,1)),nR=Q().cancelIdleCallback||(e=>clearTimeout(e)),nO=e=>!!e.type.__asyncLoader;function nN(e,t){let{ref:n,props:l,children:r,ce:i}=t.vnode,s=ro(e,l,r);return s.ref=n,s.ce=i,delete t.vnode.ce,s}let nP=e=>e.type.__isKeepAlive;function nM(e,t){return T(e)?e.some(e=>nM(e,t)):P(e)?e.split(",").includes(t):"[object RegExp]"===F(e)&&(e.lastIndex=0,e.test(t))}function nI(e,t){nD(e,"a",t)}function nL(e,t){nD(e,"da",t)}function nD(e,t,n=r_){let l=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(nU(t,l,n),n){let e=n.parent;for(;e&&e.parent;)nP(e.parent.vnode)&&function(e,t,n,l){let r=nU(t,e,l,!0);nz(()=>{w(l[t],r)},n)}(l,t,n,e),e=e.parent}}function nF(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function nV(e){return 128&e.shapeFlag?e.ssContent:e}function nU(e,t,n=r_,l=!1){if(n){let r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...l)=>{ek();let r=rb(n),i=tD(t,n,e,l);return r(),eT(),i});return l?r.unshift(i):r.push(i),i}}let nj=e=>(t,n=r_)=>{rx&&"sp"!==e||nU(e,(...e)=>t(...e),n)},nB=nj("bm"),n$=nj("m"),nH=nj("bu"),nW=nj("u"),nK=nj("bum"),nz=nj("um"),nq=nj("sp"),nG=nj("rtg"),nJ=nj("rtc");function nX(e,t=r_){nU("ec",e,t)}let nZ="components",nY=Symbol.for("v-ndc");function nQ(e,t,n=!0,l=!1){let r=tY||r_;if(r){let n=r.type;if(e===nZ){let e=rR(n,!1);if(e&&(e===t||e===H(t)||e===z(H(t))))return n}let i=n0(r[e]||n[e],t)||n0(r.appContext[e],t);return!i&&l?n:i}}function n0(e,t){return e&&(e[t]||e[H(t)]||e[z(H(t))])}let n1=e=>e?rC(e)?rA(e):n1(e.parent):null,n2=x(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>n1(e.parent),$root:e=>n1(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>le(e),$forceUpdate:e=>e.f||(e.f=()=>{tz(e.update)}),$nextTick:e=>e.n||(e.n=tK.bind(e.proxy)),$watch:e=>lF.bind(e)}),n6=(e,t)=>e!==m&&!e.__isScriptSetup&&k(e,t),n8={get({_:e},t){let n,l,r;if("__v_skip"===t)return!0;let{ctx:i,setupState:s,data:o,props:a,accessCache:u,type:c,appContext:f}=e;if("$"!==t[0]){let l=u[t];if(void 0!==l)switch(l){case 1:return s[t];case 2:return o[t];case 4:return i[t];case 3:return a[t]}else{if(n6(s,t))return u[t]=1,s[t];if(o!==m&&k(o,t))return u[t]=2,o[t];if((n=e.propsOptions[0])&&k(n,t))return u[t]=3,a[t];if(i!==m&&k(i,t))return u[t]=4,i[t];n9&&(u[t]=0)}}let p=n2[t];return p?("$attrs"===t&&eD(e.attrs,"get",""),p(e)):(l=c.__cssModules)&&(l=l[t])?l:i!==m&&k(i,t)?(u[t]=4,i[t]):k(r=f.config.globalProperties,t)?r[t]:void 0},set({_:e},t,n){let{data:l,setupState:r,ctx:i}=e;return n6(r,t)?(r[t]=n,!0):l!==m&&k(l,t)?(l[t]=n,!0):!k(e.props,t)&&!("$"===t[0]&&t.slice(1)in e)&&(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:l,appContext:r,propsOptions:i}},s){let o;return!!n[s]||e!==m&&k(e,s)||n6(t,s)||(o=i[0])&&k(o,s)||k(l,s)||k(n2,s)||k(r.config.globalProperties,s)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:k(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},n4=x({},n8,{get(e,t){if(t!==Symbol.unscopables)return n8.get(e,t,e)},has:(e,t)=>"_"!==t[0]&&!ee(t)});function n3(e){let t=ry();return t.setupContext||(t.setupContext=rT(t))}function n5(e){return T(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}let n9=!0;function n7(e,t,n){tD(T(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function le(e){let t,n=e.type,{mixins:l,extends:r}=n,{mixins:i,optionsCache:s,config:{optionMergeStrategies:o}}=e.appContext,a=s.get(n);return a?t=a:i.length||l||r?(t={},i.length&&i.forEach(e=>lt(t,e,o,!0)),lt(t,n,o)):t=n,I(n)&&s.set(n,t),t}function lt(e,t,n,l=!1){let{mixins:r,extends:i}=t;for(let s in i&<(e,i,n,!0),r&&r.forEach(t=>lt(e,t,n,!0)),t)if(l&&"expose"===s);else{let l=ln[s]||n&&n[s];e[s]=l?l(e[s],t[s]):t[s]}return e}let ln={data:ll,props:lo,emits:lo,methods:ls,computed:ls,beforeCreate:li,created:li,beforeMount:li,mounted:li,beforeUpdate:li,updated:li,beforeDestroy:li,beforeUnmount:li,destroyed:li,unmounted:li,activated:li,deactivated:li,errorCaptured:li,serverPrefetch:li,components:ls,directives:ls,watch:function(e,t){if(!e)return t;if(!t)return e;let n=x(Object.create(null),e);for(let l in t)n[l]=li(e[l],t[l]);return n},provide:ll,inject:function(e,t){return ls(lr(e),lr(t))}};function ll(e,t){return t?e?function(){return x(N(e)?e.call(this,this):e,N(t)?t.call(this,this):t)}:t:e}function lr(e){if(T(e)){let t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function li(e,t){return e?[...new Set([].concat(e,t))]:t}function ls(e,t){return e?x(Object.create(null),e,t):t}function lo(e,t){return e?T(e)&&T(t)?[...new Set([...e,...t])]:x(Object.create(null),n5(e),n5(null!=t?t:{})):t}function la(){return{app:null,config:{isNativeTag:b,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let lu=0,lc=null;function lf(e,t){if(r_){let n=r_.provides,l=r_.parent&&r_.parent.provides;l===n&&(n=r_.provides=Object.create(l)),n[e]=t}}function lp(e,t,n=!1){let l=ry();if(l||lc){let r=lc?lc._context.provides:l?null==l.parent||l.ce?l.vnode.appContext&&l.vnode.appContext.provides:l.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return n&&N(t)?t.call(l&&l.proxy):t}}let ld={},lh=()=>Object.create(ld),lv=e=>Object.getPrototypeOf(e)===ld;function lg(e,t,n,l){let r,[i,s]=e.propsOptions,o=!1;if(t)for(let a in t){let u;if(j(a))continue;let c=t[a];i&&k(i,u=H(a))?s&&s.includes(u)?(r||(r={}))[u]=c:n[u]=c:lB(e.emitsOptions,a)||a in l&&c===l[a]||(l[a]=c,o=!0)}if(s){let t=td(n),l=r||m;for(let r=0;r<s.length;r++){let o=s[r];n[o]=lm(i,t,o,l[o],e,!k(l,o))}}return o}function lm(e,t,n,l,r,i){let s=e[n];if(null!=s){let e=k(s,"default");if(e&&void 0===l){let e=s.default;if(s.type!==Function&&!s.skipFactory&&N(e)){let{propsDefaults:i}=r;if(n in i)l=i[n];else{let s=rb(r);l=i[n]=e.call(null,t),s()}}else l=e;r.ce&&r.ce._setProp(n,l)}s[0]&&(i&&!e?l=!1:s[1]&&(""===l||l===K(n))&&(l=!0))}return l}let l_=new WeakMap;function ly(e){return!("$"===e[0]||j(e))}let lb=e=>"_"===e||"__"===e||"_ctx"===e||"$stable"===e,lS=e=>T(e)?e.map(rf):[rf(e)],lC=(e,t,n)=>{if(t._n)return t;let l=t1((...e)=>lS(t(...e)),n);return l._c=!1,l},lx=(e,t,n)=>{let l=e._ctx;for(let n in e){if(lb(n))continue;let r=e[n];if(N(r))t[n]=lC(n,r,l);else if(null!=r){let e=lS(r);t[n]=()=>e}}},lw=(e,t)=>{let n=lS(t);e.slots.default=()=>n},lE=(e,t,n)=>{for(let l in t)(n||!lb(l))&&(e[l]=t[l])},lk=lY;function lT(e){return lA(e,nw)}function lA(e,t){var n;let l,r;Q().__VUE__=!0;let{insert:i,remove:s,patchProp:o,createElement:a,createText:c,createComment:f,setText:p,setElementText:d,parentNode:h,nextSibling:g,setScopeId:b=y,insertStaticContent:S}=e,C=(e,t,n,l=null,r=null,i=null,s,o=null,a=!!t.dynamicChildren)=>{if(e===t)return;e&&!rl(e,t)&&(l=es(e),et(e,r,i,!0),e=null),-2===t.patchFlag&&(a=!1,t.dynamicChildren=null);let{type:u,ref:c,shapeFlag:f}=t;switch(u){case l1:w(e,t,n,l);break;case l2:E(e,t,n,l);break;case l6:null==e&&A(t,n,l,s);break;case l0:U(e,t,n,l,r,i,s,o,a);break;default:1&f?R(e,t,n,l,r,i,s,o,a):6&f?B(e,t,n,l,r,i,s,o,a):64&f?u.process(e,t,n,l,r,i,s,o,a,eu):128&f&&u.process(e,t,n,l,r,i,s,o,a,eu)}null!=c&&r?ny(c,e&&e.ref,i,t||e,!t):null==c&&e&&null!=e.ref&&ny(e.ref,null,i,e,!0)},w=(e,t,n,l)=>{if(null==e)i(t.el=c(t.children),n,l);else{let n=t.el=e.el;t.children!==e.children&&p(n,t.children)}},E=(e,t,n,l)=>{null==e?i(t.el=f(t.children||""),n,l):t.el=e.el},A=(e,t,n,l)=>{[e.el,e.anchor]=S(e.children,t,n,l,e.el,e.anchor)},R=(e,t,n,l,r,i,s,o,a)=>{"svg"===t.type?s="svg":"math"===t.type&&(s="mathml"),null==e?O(t,n,l,r,i,s,o,a):D(e,t,r,i,s,o,a)},O=(e,t,n,l,r,s,u,c)=>{let f,p,{props:h,shapeFlag:g,transition:m,dirs:_}=e;if(f=e.el=a(e.type,s,h&&h.is,h),8&g?d(f,e.children):16&g&&M(e.children,f,null,l,r,lR(e,s),u,c),_&&t2(e,null,l,"created"),P(f,e,e.scopeId,u,l),h){for(let e in h)"value"===e||j(e)||o(f,e,null,h[e],s,l);"value"in h&&o(f,"value",null,h.value,s),(p=h.onVnodeBeforeMount)&&rv(p,l,e)}_&&t2(e,null,l,"beforeMount");let y=lN(r,m);y&&m.beforeEnter(f),i(f,t,n),((p=h&&h.onVnodeMounted)||y||_)&&lk(()=>{p&&rv(p,l,e),y&&m.enter(f),_&&t2(e,null,l,"mounted")},r)},P=(e,t,n,l,r)=>{if(n&&b(e,n),l)for(let t=0;t<l.length;t++)b(e,l[t]);if(r){let n=r.subTree;if(t===n||lq(n.type)&&(n.ssContent===t||n.ssFallback===t)){let t=r.vnode;P(e,t,t.scopeId,t.slotScopeIds,r.parent)}}},M=(e,t,n,l,r,i,s,o,a=0)=>{for(let u=a;u<e.length;u++)C(null,e[u]=o?rp(e[u]):rf(e[u]),t,n,l,r,i,s,o)},D=(e,t,n,l,r,i,s)=>{let a,u=t.el=e.el,{patchFlag:c,dynamicChildren:f,dirs:p}=t;c|=16&e.patchFlag;let h=e.props||m,g=t.props||m;if(n&&lO(n,!1),(a=g.onVnodeBeforeUpdate)&&rv(a,n,t,e),p&&t2(t,e,n,"beforeUpdate"),n&&lO(n,!0),(h.innerHTML&&null==g.innerHTML||h.textContent&&null==g.textContent)&&d(u,""),f?F(e.dynamicChildren,f,u,n,l,lR(t,r),i):s||G(e,t,u,null,n,l,lR(t,r),i,!1),c>0){if(16&c)V(u,h,g,n,r);else if(2&c&&h.class!==g.class&&o(u,"class",null,g.class,r),4&c&&o(u,"style",h.style,g.style,r),8&c){let e=t.dynamicProps;for(let t=0;t<e.length;t++){let l=e[t],i=h[l],s=g[l];(s!==i||"value"===l)&&o(u,l,i,s,r,n)}}1&c&&e.children!==t.children&&d(u,t.children)}else s||null!=f||V(u,h,g,n,r);((a=g.onVnodeUpdated)||p)&&lk(()=>{a&&rv(a,n,t,e),p&&t2(t,e,n,"updated")},l)},F=(e,t,n,l,r,i,s)=>{for(let o=0;o<t.length;o++){let a=e[o],u=t[o],c=a.el&&(a.type===l0||!rl(a,u)||198&a.shapeFlag)?h(a.el):n;C(a,u,c,null,l,r,i,s,!0)}},V=(e,t,n,l,r)=>{if(t!==n){if(t!==m)for(let i in t)j(i)||i in n||o(e,i,t[i],null,r,l);for(let i in n){if(j(i))continue;let s=n[i],a=t[i];s!==a&&"value"!==i&&o(e,i,a,s,r,l)}"value"in n&&o(e,"value",t.value,n.value,r)}},U=(e,t,n,l,r,s,o,a,u)=>{let f=t.el=e?e.el:c(""),p=t.anchor=e?e.anchor:c(""),{patchFlag:d,dynamicChildren:h,slotScopeIds:g}=t;g&&(a=a?a.concat(g):g),null==e?(i(f,n,l),i(p,n,l),M(t.children||[],n,p,r,s,o,a,u)):d>0&&64&d&&h&&e.dynamicChildren?(F(e.dynamicChildren,h,n,r,s,o,a),(null!=t.key||r&&t===r.subTree)&&lP(e,t,!0)):G(e,t,n,p,r,s,o,a,u)},B=(e,t,n,l,r,i,s,o,a)=>{t.slotScopeIds=o,null==e?512&t.shapeFlag?r.ctx.activate(t,n,l,s,a):$(t,n,l,r,i,s,a):W(e,t,a)},$=(e,t,n,l,r,i,s)=>{let o=e.component=function(e,t,n){let l=e.type,r=(t?t.appContext:e.appContext)||rg,i={uid:rm++,vnode:e,type:l,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new ed(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:function e(t,n,l=!1){let r=l?l_:n.propsCache,i=r.get(t);if(i)return i;let s=t.props,o={},a=[],u=!1;if(!N(t)){let r=t=>{u=!0;let[l,r]=e(t,n,!0);x(o,l),r&&a.push(...r)};!l&&n.mixins.length&&n.mixins.forEach(r),t.extends&&r(t.extends),t.mixins&&t.mixins.forEach(r)}if(!s&&!u)return I(t)&&r.set(t,_),_;if(T(s))for(let e=0;e<s.length;e++){let t=H(s[e]);ly(t)&&(o[t]=m)}else if(s)for(let e in s){let t=H(e);if(ly(t)){let n=s[e],l=o[t]=T(n)||N(n)?{type:n}:x({},n),r=l.type,i=!1,u=!0;if(T(r))for(let e=0;e<r.length;++e){let t=r[e],n=N(t)&&t.name;if("Boolean"===n){i=!0;break}"String"===n&&(u=!1)}else i=N(r)&&"Boolean"===r.name;l[0]=i,l[1]=u,(i||k(l,"default"))&&a.push(t)}}let c=[o,a];return I(t)&&r.set(t,c),c}(l,r),emitsOptions:function e(t,n,l=!1){let r=n.emitsCache,i=r.get(t);if(void 0!==i)return i;let s=t.emits,o={},a=!1;if(!N(t)){let r=t=>{let l=e(t,n,!0);l&&(a=!0,x(o,l))};!l&&n.mixins.length&&n.mixins.forEach(r),t.extends&&r(t.extends),t.mixins&&t.mixins.forEach(r)}return s||a?(T(s)?s.forEach(e=>o[e]=null):x(o,s),I(t)&&r.set(t,o),o):(I(t)&&r.set(t,null),null)}(l,r),emit:null,emitted:null,propsDefaults:m,inheritAttrs:l.inheritAttrs,ctx:m,data:m,props:m,attrs:m,slots:m,refs:m,setupState:m,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=lj.bind(null,i),e.ce&&e.ce(i),i}(e,l,r);if(nP(e)&&(o.ctx.renderer=eu),function(e,t=!1,n=!1){t&&u(t);let{props:l,children:r}=e.vnode,i=rC(e);!function(e,t,n,l=!1){let r={},i=lh();for(let n in e.propsDefaults=Object.create(null),lg(e,t,r,i),e.propsOptions[0])n in r||(r[n]=void 0);n?e.props=l?r:ts(r):e.type.props?e.props=r:e.props=i,e.attrs=i}(e,l,i,t),((e,t,n)=>{let l=e.slots=lh();if(32&e.vnode.shapeFlag){let e=t.__;e&&X(l,"__",e,!0);let r=t._;r?(lE(l,t,n),n&&X(l,"_",r,!0)):lx(t,l)}else t&&lw(e,t)})(e,r,n||t),i&&function(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,n8);let{setup:l}=n;if(l){ek();let n=e.setupContext=l.length>1?rT(e):null,r=rb(e),i=tL(l,e,0,[e.props,n]),s=L(i);if(eT(),r(),(s||e.sp)&&!nO(e)&&n_(e),s){if(i.then(rS,rS),t)return i.then(n=>{rw(e,n,t)}).catch(t=>{tF(t,e,0)});e.asyncDep=i}else rw(e,i,t)}else rE(e,t)}(e,t),t&&u(!1)}(o,!1,s),o.asyncDep){if(r&&r.registerDep(o,z,s),!e.el){let l=o.subTree=ro(l2);E(null,l,t,n),e.placeholder=l.el}}else z(o,e,t,n,r,i,s)},W=(e,t,n)=>{let l=t.component=e.component;if(function(e,t,n){let{props:l,children:r,component:i}=e,{props:s,children:o,patchFlag:a}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(!n||!(a>=0))return(!!r||!!o)&&(!o||!o.$stable)||l!==s&&(l?!s||lK(l,s,u):!!s);if(1024&a)return!0;if(16&a)return l?lK(l,s,u):!!s;if(8&a){let e=t.dynamicProps;for(let t=0;t<e.length;t++){let n=e[t];if(s[n]!==l[n]&&!lB(u,n))return!0}}return!1}(e,t,n))if(l.asyncDep&&!l.asyncResolved)return void q(l,t,n);else l.next=t,l.update();else t.el=e.el,l.vnode=t},z=(e,t,n,l,i,s,o)=>{let a=()=>{if(e.isMounted){let t,{next:n,bu:l,u:r,parent:u,vnode:c}=e;{let t=function e(t){let n=t.subTree.component;if(n)if(n.asyncDep&&!n.asyncResolved)return n;else return e(n)}(e);if(t){n&&(n.el=c.el,q(e,n,o)),t.asyncDep.then(()=>{e.isUnmounted||a()});return}}let f=n;lO(e,!1),n?(n.el=c.el,q(e,n,o)):n=c,l&&J(l),(t=n.props&&n.props.onVnodeBeforeUpdate)&&rv(t,u,n,c),lO(e,!0);let p=l$(e),d=e.subTree;e.subTree=p,C(d,p,h(d.el),es(d),e,i,s),n.el=p.el,null===f&&lz(e,p.el),r&&lk(r,i),(t=n.props&&n.props.onVnodeUpdated)&&lk(()=>rv(t,u,n,c),i)}else{let o,{el:a,props:u}=t,{bm:c,m:f,parent:p,root:d,type:h}=e,g=nO(t);if(lO(e,!1),c&&J(c),!g&&(o=u&&u.onVnodeBeforeMount)&&rv(o,p,t),lO(e,!0),a&&r){let t=()=>{e.subTree=l$(e),r(a,e.subTree,e,i,null)};g&&h.__asyncHydrate?h.__asyncHydrate(a,e,t):t()}else{d.ce&&!1!==d.ce._def.shadowRoot&&d.ce._injectChildStyle(h);let r=e.subTree=l$(e);C(null,r,n,l,e,i,s),t.el=r.el}if(f&&lk(f,i),!g&&(o=u&&u.onVnodeMounted)){let e=t;lk(()=>rv(o,p,e),i)}(256&t.shapeFlag||p&&nO(p.vnode)&&256&p.vnode.shapeFlag)&&e.a&&lk(e.a,i),e.isMounted=!0,t=n=l=null}};e.scope.on();let u=e.effect=new ev(a);e.scope.off();let c=e.update=u.run.bind(u),f=e.job=u.runIfDirty.bind(u);f.i=e,f.id=e.uid,u.scheduler=()=>tz(f),lO(e,!0),c()},q=(e,t,n)=>{t.component=e;let l=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,l){let{props:r,attrs:i,vnode:{patchFlag:s}}=e,o=td(r),[a]=e.propsOptions,u=!1;if((l||s>0)&&!(16&s)){if(8&s){let n=e.vnode.dynamicProps;for(let l=0;l<n.length;l++){let s=n[l];if(lB(e.emitsOptions,s))continue;let c=t[s];if(a)if(k(i,s))c!==i[s]&&(i[s]=c,u=!0);else{let t=H(s);r[t]=lm(a,o,t,c,e,!1)}else c!==i[s]&&(i[s]=c,u=!0)}}}else{let l;for(let s in lg(e,t,r,i)&&(u=!0),o)t&&(k(t,s)||(l=K(s))!==s&&k(t,l))||(a?n&&(void 0!==n[s]||void 0!==n[l])&&(r[s]=lm(a,o,s,void 0,e,!0)):delete r[s]);if(i!==o)for(let e in i)t&&k(t,e)||(delete i[e],u=!0)}u&&eF(e.attrs,"set","")}(e,t.props,l,n),((e,t,n)=>{let{vnode:l,slots:r}=e,i=!0,s=m;if(32&l.shapeFlag){let e=t._;e?n&&1===e?i=!1:lE(r,t,n):(i=!t.$stable,lx(t,r)),s=t}else t&&(lw(e,t),s={default:1});if(i)for(let e in r)lb(e)||null!=s[e]||delete r[e]})(e,t.children,n),ek(),tJ(e),eT()},G=(e,t,n,l,r,i,s,o,a=!1)=>{let u=e&&e.children,c=e?e.shapeFlag:0,f=t.children,{patchFlag:p,shapeFlag:h}=t;if(p>0){if(128&p)return void Y(u,f,n,l,r,i,s,o,a);else if(256&p)return void Z(u,f,n,l,r,i,s,o,a)}8&h?(16&c&&ei(u,r,i),f!==u&&d(n,f)):16&c?16&h?Y(u,f,n,l,r,i,s,o,a):ei(u,r,i,!0):(8&c&&d(n,""),16&h&&M(f,n,l,r,i,s,o,a))},Z=(e,t,n,l,r,i,s,o,a)=>{let u;e=e||_,t=t||_;let c=e.length,f=t.length,p=Math.min(c,f);for(u=0;u<p;u++){let l=t[u]=a?rp(t[u]):rf(t[u]);C(e[u],l,n,null,r,i,s,o,a)}c>f?ei(e,r,i,!0,!1,p):M(t,n,l,r,i,s,o,a,p)},Y=(e,t,n,l,r,i,s,o,a)=>{let u=0,c=t.length,f=e.length-1,p=c-1;for(;u<=f&&u<=p;){let l=e[u],c=t[u]=a?rp(t[u]):rf(t[u]);if(rl(l,c))C(l,c,n,null,r,i,s,o,a);else break;u++}for(;u<=f&&u<=p;){let l=e[f],u=t[p]=a?rp(t[p]):rf(t[p]);if(rl(l,u))C(l,u,n,null,r,i,s,o,a);else break;f--,p--}if(u>f){if(u<=p){let e=p+1,f=e<c?t[e].el:l;for(;u<=p;)C(null,t[u]=a?rp(t[u]):rf(t[u]),n,f,r,i,s,o,a),u++}}else if(u>p)for(;u<=f;)et(e[u],r,i,!0),u++;else{let d,h=u,g=u,m=new Map;for(u=g;u<=p;u++){let e=t[u]=a?rp(t[u]):rf(t[u]);null!=e.key&&m.set(e.key,u)}let y=0,b=p-g+1,S=!1,x=0,w=Array(b);for(u=0;u<b;u++)w[u]=0;for(u=h;u<=f;u++){let l,c=e[u];if(y>=b){et(c,r,i,!0);continue}if(null!=c.key)l=m.get(c.key);else for(d=g;d<=p;d++)if(0===w[d-g]&&rl(c,t[d])){l=d;break}void 0===l?et(c,r,i,!0):(w[l-g]=u+1,l>=x?x=l:S=!0,C(c,t[l],n,null,r,i,s,o,a),y++)}let E=S?function(e){let t,n,l,r,i,s=e.slice(),o=[0],a=e.length;for(t=0;t<a;t++){let a=e[t];if(0!==a){if(e[n=o[o.length-1]]<a){s[t]=n,o.push(t);continue}for(l=0,r=o.length-1;l<r;)e[o[i=l+r>>1]]<a?l=i+1:r=i;a<e[o[l]]&&(l>0&&(s[t]=o[l-1]),o[l]=t)}}for(l=o.length,r=o[l-1];l-- >0;)o[l]=r,r=s[r];return o}(w):_;for(d=E.length-1,u=b-1;u>=0;u--){let e=g+u,f=t[e],p=t[e+1],h=e+1<c?p.el||p.placeholder:l;0===w[u]?C(null,f,n,h,r,i,s,o,a):S&&(d<0||u!==E[d]?ee(f,n,h,2):d--)}}},ee=(e,t,n,l,r=null)=>{let{el:o,type:a,transition:u,children:c,shapeFlag:f}=e;if(6&f)return void ee(e.component.subTree,t,n,l);if(128&f)return void e.suspense.move(t,n,l);if(64&f)return void a.move(e,t,n,eu);if(a===l0){i(o,t,n);for(let e=0;e<c.length;e++)ee(c[e],t,n,l);i(e.anchor,t,n);return}if(a===l6)return void(({el:e,anchor:t},n,l)=>{let r;for(;e&&e!==t;)r=g(e),i(e,n,l),e=r;i(t,n,l)})(e,t,n);if(2!==l&&1&f&&u)if(0===l)u.beforeEnter(o),i(o,t,n),lk(()=>u.enter(o),r);else{let{leave:l,delayLeave:r,afterLeave:a}=u,c=()=>{e.ctx.isUnmounted?s(o):i(o,t,n)},f=()=>{l(o,()=>{c(),a&&a()})};r?r(o,c,f):f()}else i(o,t,n)},et=(e,t,n,l=!1,r=!1)=>{let i,{type:s,props:o,ref:a,children:u,dynamicChildren:c,shapeFlag:f,patchFlag:p,dirs:d,cacheIndex:h}=e;if(-2===p&&(r=!1),null!=a&&(ek(),ny(a,null,n,e,!0),eT()),null!=h&&(t.renderCache[h]=void 0),256&f)return void t.ctx.deactivate(e);let g=1&f&&d,m=!nO(e);if(m&&(i=o&&o.onVnodeBeforeUnmount)&&rv(i,t,e),6&f)er(e.component,n,l);else{if(128&f)return void e.suspense.unmount(n,l);g&&t2(e,null,t,"beforeUnmount"),64&f?e.type.remove(e,t,n,eu,l):c&&!c.hasOnce&&(s!==l0||p>0&&64&p)?ei(c,t,n,!1,!0):(s===l0&&384&p||!r&&16&f)&&ei(u,t,n),l&&en(e)}(m&&(i=o&&o.onVnodeUnmounted)||g)&&lk(()=>{i&&rv(i,t,e),g&&t2(e,null,t,"unmounted")},n)},en=e=>{let{type:t,el:n,anchor:l,transition:r}=e;if(t===l0)return void el(n,l);if(t===l6)return void(({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=g(e),s(e),e=n;s(t)})(e);let i=()=>{s(n),r&&!r.persisted&&r.afterLeave&&r.afterLeave()};if(1&e.shapeFlag&&r&&!r.persisted){let{leave:t,delayLeave:l}=r,s=()=>t(n,i);l?l(e.el,i,s):s()}else i()},el=(e,t)=>{let n;for(;e!==t;)n=g(e),s(e),e=n;s(t)},er=(e,t,n)=>{let{bum:l,scope:r,job:i,subTree:s,um:o,m:a,a:u,parent:c,slots:{__:f}}=e;lM(a),lM(u),l&&J(l),c&&T(f)&&f.forEach(e=>{c.renderCache[e]=void 0}),r.stop(),i&&(i.flags|=8,et(s,e,t,n)),o&&lk(o,t),lk(()=>{e.isUnmounted=!0},t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},ei=(e,t,n,l=!1,r=!1,i=0)=>{for(let s=i;s<e.length;s++)et(e[s],t,n,l,r)},es=e=>{if(6&e.shapeFlag)return es(e.component.subTree);if(128&e.shapeFlag)return e.suspense.next();let t=g(e.anchor||e.el),n=t&&t[t6];return n?g(n):t},eo=!1,ea=(e,t,n)=>{null==e?t._vnode&&et(t._vnode,null,null,!0):C(t._vnode||null,e,t,null,null,null,n),t._vnode=e,eo||(eo=!0,tJ(),tX(),eo=!1)},eu={p:C,um:et,m:ee,r:en,mt:$,mc:M,pc:G,pbc:F,n:es,o:e};return t&&([l,r]=t(eu)),{render:ea,hydrate:l,createApp:(n=l,function(e,t=null){N(e)||(e=x({},e)),null==t||I(t)||(t=null);let l=la(),r=new WeakSet,i=[],s=!1,o=l.app={_uid:lu++,_component:e,_props:t,_container:null,_context:l,_instance:null,version:rM,get config(){return l.config},set config(v){},use:(e,...t)=>(r.has(e)||(e&&N(e.install)?(r.add(e),e.install(o,...t)):N(e)&&(r.add(e),e(o,...t))),o),mixin:e=>(l.mixins.includes(e)||l.mixins.push(e),o),component:(e,t)=>t?(l.components[e]=t,o):l.components[e],directive:(e,t)=>t?(l.directives[e]=t,o):l.directives[e],mount(r,i,a){if(!s){let u=o._ceVNode||ro(e,t);return u.appContext=l,!0===a?a="svg":!1===a&&(a=void 0),i&&n?n(u,r):ea(u,r,a),s=!0,o._container=r,r.__vue_app__=o,rA(u.component)}},onUnmount(e){i.push(e)},unmount(){s&&(tD(i,o._instance,16),ea(null,o._container),delete o._container.__vue_app__)},provide:(e,t)=>(l.provides[e]=t,o),runWithContext(e){let t=lc;lc=o;try{return e()}finally{lc=t}}};return o})}}function lR({type:e,props:t},n){return"svg"===n&&"foreignObject"===e||"mathml"===n&&"annotation-xml"===e&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function lO({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function lN(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function lP(e,t,n=!1){let l=e.children,r=t.children;if(T(l)&&T(r))for(let e=0;e<l.length;e++){let t=l[e],i=r[e];1&i.shapeFlag&&!i.dynamicChildren&&((i.patchFlag<=0||32===i.patchFlag)&&((i=r[e]=rp(r[e])).el=t.el),n||-2===i.patchFlag||lP(t,i)),i.type===l1&&(i.el=t.el),i.type!==l2||i.el||(i.el=t.el)}}function lM(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}let lI=Symbol.for("v-scx");function lL(e,t){return lD(e,null,{flush:"sync"})}function lD(e,t,n=m){let{immediate:l,deep:i,flush:s,once:o}=n,a=x({},n),u=r_;a.call=(e,t,n)=>tD(e,u,t,n);let c=!1;return"post"===s?a.scheduler=e=>{lk(e,u&&u.suspense)}:"sync"!==s&&(c=!0,a.scheduler=(e,t)=>{t?e():tz(e)}),a.augmentJob=e=>{t&&(e.flags|=4),c&&(e.flags|=2,u&&(e.id=u.uid,e.i=u))},function(e,t,n=m){let l,i,s,o,{immediate:a,deep:u,once:c,scheduler:f,augmentJob:p,call:h}=n,g=e=>u?e:tf(e)||!1===u||0===u?tI(e,1):tI(e),_=!1,b=!1;if(tm(e)?(i=()=>e.value,_=tf(e)):tu(e)?(i=()=>g(e),_=!0):T(e)?(b=!0,_=e.some(e=>tu(e)||tf(e)),i=()=>e.map(e=>tm(e)?e.value:tu(e)?g(e):N(e)?h?h(e,2):e():void 0)):i=N(e)?t?h?()=>h(e,2):e:()=>{if(s){ek();try{s()}finally{eT()}}let t=d;d=l;try{return h?h(e,3,[o]):e(o)}finally{d=t}}:y,t&&u){let e=i,t=!0===u?1/0:u;i=()=>tI(e(),t)}let S=r,C=()=>{l.stop(),S&&S.active&&w(S.effects,l)};if(c&&t){let e=t;t=(...t)=>{e(...t),C()}}let x=b?Array(e.length).fill(tN):tN,E=e=>{if(1&l.flags&&(l.dirty||e))if(t){let e=l.run();if(u||_||(b?e.some((e,t)=>G(e,x[t])):G(e,x))){s&&s();let n=d;d=l;try{let n=[e,x===tN?void 0:b&&x[0]===tN?[]:x,o];x=e,h?h(t,3,n):t(...n)}finally{d=n}}}else l.run()};return p&&p(E),(l=new ev(i)).scheduler=f?()=>f(E,!1):E,o=e=>tM(e,!1,l),s=l.onStop=()=>{let e=tP.get(l);if(e){if(h)h(e,4);else for(let t of e)t();tP.delete(l)}},t?a?E(!0):x=l.run():f?f(E.bind(null,!0),!0):l.run(),C.pause=l.pause.bind(l),C.resume=l.resume.bind(l),C.stop=C,C}(e,t,a)}function lF(e,t,n){let l,r=this.proxy,i=P(e)?e.includes(".")?lV(r,e):()=>r[e]:e.bind(r,r);N(t)?l=t:(l=t.handler,n=t);let s=rb(this),o=lD(i,l.bind(r),n);return s(),o}function lV(e,t){let n=t.split(".");return()=>{let t=e;for(let e=0;e<n.length&&t;e++)t=t[n[e]];return t}}let lU=(e,t)=>"modelValue"===t||"model-value"===t?e.modelModifiers:e[`${t}Modifiers`]||e[`${H(t)}Modifiers`]||e[`${K(t)}Modifiers`];function lj(e,t,...n){let l;if(e.isUnmounted)return;let r=e.vnode.props||m,i=n,s=t.startsWith("update:"),o=s&&lU(r,t.slice(7));o&&(o.trim&&(i=n.map(e=>P(e)?e.trim():e)),o.number&&(i=n.map(Z)));let a=r[l=q(t)]||r[l=q(H(t))];!a&&s&&(a=r[l=q(K(t))]),a&&tD(a,e,6,i);let u=r[l+"Once"];if(u){if(e.emitted){if(e.emitted[l])return}else e.emitted={};e.emitted[l]=!0,tD(u,e,6,i)}}function lB(e,t){return!!e&&!!S(t)&&(k(e,(t=t.slice(2).replace(/Once$/,""))[0].toLowerCase()+t.slice(1))||k(e,K(t))||k(e,t))}function l$(e){let t,n,{type:l,vnode:r,proxy:i,withProxy:s,propsOptions:[o],slots:a,attrs:u,emit:c,render:f,renderCache:p,props:d,data:h,setupState:g,ctx:m,inheritAttrs:_}=e,y=t0(e);try{if(4&r.shapeFlag){let e=s||i;t=rf(f.call(e,e,p,d,g,h,m)),n=u}else t=rf(l.length>1?l(d,{attrs:u,slots:a,emit:c}):l(d,null)),n=l.props?u:lH(u)}catch(n){l8.length=0,tF(n,e,1),t=ro(l2)}let b=t;if(n&&!1!==_){let e=Object.keys(n),{shapeFlag:t}=b;e.length&&7&t&&(o&&e.some(C)&&(n=lW(n,o)),b=ru(b,n,!1,!0))}return r.dirs&&((b=ru(b,null,!1,!0)).dirs=b.dirs?b.dirs.concat(r.dirs):r.dirs),r.transition&&nv(b,r.transition),t=b,t0(y),t}let lH=e=>{let t;for(let n in e)("class"===n||"style"===n||S(n))&&((t||(t={}))[n]=e[n]);return t},lW=(e,t)=>{let n={};for(let l in e)C(l)&&l.slice(9)in t||(n[l]=e[l]);return n};function lK(e,t,n){let l=Object.keys(t);if(l.length!==Object.keys(e).length)return!0;for(let r=0;r<l.length;r++){let i=l[r];if(t[i]!==e[i]&&!lB(n,i))return!0}return!1}function lz({vnode:e,parent:t},n){for(;t;){let l=t.subTree;if(l.suspense&&l.suspense.activeBranch===e&&(l.el=e.el),l===e)(e=t.vnode).el=n,t=t.parent;else break}}let lq=e=>e.__isSuspense,lG=0;function lJ(e,t){let n=e.props&&e.props[t];N(n)&&n()}function lX(e,t,n,l,r,i,s,o,a,u,c=!1){let f,{p:p,m:d,um:h,n:g,o:{parentNode:m,remove:_}}=u,y=function(e){let t=e.props&&e.props.suspensible;return null!=t&&!1!==t}(e);y&&t&&t.pendingBranch&&(f=t.pendingId,t.deps++);let b=e.props?Y(e.props.timeout):void 0,S=i,C={vnode:e,parent:t,parentComponent:n,namespace:s,container:l,hiddenContainer:r,deps:0,pendingId:lG++,timeout:"number"==typeof b?b:-1,activeBranch:null,pendingBranch:null,isInFallback:!c,isHydrating:c,isUnmounted:!1,effects:[],resolve(e=!1,n=!1){let{vnode:l,activeBranch:r,pendingBranch:s,pendingId:o,effects:a,parentComponent:u,container:c}=C,p=!1;C.isHydrating?C.isHydrating=!1:!e&&((p=r&&s.transition&&"out-in"===s.transition.mode)&&(r.transition.afterLeave=()=>{o===C.pendingId&&(d(s,c,i===S?g(r):i,0),tG(a))}),r&&(m(r.el)===c&&(i=g(r)),h(r,u,C,!0)),p||d(s,c,i,0)),lQ(C,s),C.pendingBranch=null,C.isInFallback=!1;let _=C.parent,b=!1;for(;_;){if(_.pendingBranch){_.effects.push(...a),b=!0;break}_=_.parent}b||p||tG(a),C.effects=[],y&&t&&t.pendingBranch&&f===t.pendingId&&(t.deps--,0!==t.deps||n||t.resolve()),lJ(l,"onResolve")},fallback(e){if(!C.pendingBranch)return;let{vnode:t,activeBranch:n,parentComponent:l,container:r,namespace:i}=C;lJ(t,"onFallback");let s=g(n),u=()=>{C.isInFallback&&(p(null,e,r,s,l,null,i,o,a),lQ(C,e))},c=e.transition&&"out-in"===e.transition.mode;c&&(n.transition.afterLeave=u),C.isInFallback=!0,h(n,l,null,!0),c||u()},move(e,t,n){C.activeBranch&&d(C.activeBranch,e,t,n),C.container=e},next:()=>C.activeBranch&&g(C.activeBranch),registerDep(e,t,n){let l=!!C.pendingBranch;l&&C.deps++;let r=e.vnode.el;e.asyncDep.catch(t=>{tF(t,e,0)}).then(i=>{if(e.isUnmounted||C.isUnmounted||C.pendingId!==e.suspenseId)return;e.asyncResolved=!0;let{vnode:o}=e;rw(e,i,!1),r&&(o.el=r);let a=!r&&e.subTree.el;t(e,o,m(r||e.subTree.el),r?null:g(e.subTree),C,s,n),a&&_(a),lz(e,o.el),l&&0==--C.deps&&C.resolve()})},unmount(e,t){C.isUnmounted=!0,C.activeBranch&&h(C.activeBranch,n,e,t),C.pendingBranch&&h(C.pendingBranch,n,e,t)}};return C}function lZ(e){let t;if(N(e)){let n=l9&&e._c;n&&(e._d=!1,l3()),e=e(),n&&(e._d=!0,t=l4,l5())}return T(e)&&(e=function(e,t=!0){let n;for(let t=0;t<e.length;t++){let l=e[t];if(!rn(l))return;if(l.type!==l2||"v-if"===l.children)if(n)return;else n=l}return n}(e)),e=rf(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(t=>t!==e)),e}function lY(e,t){t&&t.pendingBranch?T(e)?t.effects.push(...e):t.effects.push(e):tG(e)}function lQ(e,t){e.activeBranch=t;let{vnode:n,parentComponent:l}=e,r=t.el;for(;!r&&t.component;)r=(t=t.component.subTree).el;n.el=r,l&&l.subTree===n&&(l.vnode.el=r,lz(l,r))}let l0=Symbol.for("v-fgt"),l1=Symbol.for("v-txt"),l2=Symbol.for("v-cmt"),l6=Symbol.for("v-stc"),l8=[],l4=null;function l3(e=!1){l8.push(l4=e?null:[])}function l5(){l8.pop(),l4=l8[l8.length-1]||null}let l9=1;function l7(e,t=!1){l9+=e,e<0&&l4&&t&&(l4.hasOnce=!0)}function re(e){return e.dynamicChildren=l9>0?l4||_:null,l5(),l9>0&&l4&&l4.push(e),e}function rt(e,t,n,l,r){return re(ro(e,t,n,l,r,!0))}function rn(e){return!!e&&!0===e.__v_isVNode}function rl(e,t){return e.type===t.type&&e.key===t.key}let rr=({key:e})=>null!=e?e:null,ri=({ref:e,ref_key:t,ref_for:n})=>("number"==typeof e&&(e=""+e),null!=e?P(e)||tm(e)||N(e)?{i:tY,r:e,k:t,f:!!n}:e:null);function rs(e,t=null,n=null,l=0,r=null,i=+(e!==l0),s=!1,o=!1){let a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&rr(t),ref:t&&ri(t),scopeId:tQ,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:l,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:tY};return o?(rd(a,n),128&i&&e.normalize(a)):n&&(a.shapeFlag|=P(n)?8:16),l9>0&&!s&&l4&&(a.patchFlag>0||6&i)&&32!==a.patchFlag&&l4.push(a),a}let ro=function(e,t=null,n=null,l=0,r=null,i=!1){var s;if(e&&e!==nY||(e=l2),rn(e)){let l=ru(e,t,!0);return n&&rd(l,n),l9>0&&!i&&l4&&(6&l.shapeFlag?l4[l4.indexOf(e)]=l:l4.push(l)),l.patchFlag=-2,l}if(N(s=e)&&"__vccOpts"in s&&(e=e.__vccOpts),t){let{class:e,style:n}=t=ra(t);e&&!P(e)&&(t.class=ei(e)),I(n)&&(tp(n)&&!T(n)&&(n=x({},n)),t.style=et(n))}let o=P(e)?1:lq(e)?128:e.__isTeleport?64:I(e)?4:2*!!N(e);return rs(e,t,n,l,r,o,i,!0)};function ra(e){return e?tp(e)||lv(e)?x({},e):e:null}function ru(e,t,n=!1,l=!1){let{props:r,ref:i,patchFlag:s,children:o,transition:a}=e,u=t?rh(r||{},t):r,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&rr(u),ref:t&&t.ref?n&&i?T(i)?i.concat(ri(t)):[i,ri(t)]:ri(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==l0?-1===s?16:16|s:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ru(e.ssContent),ssFallback:e.ssFallback&&ru(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&l&&nv(c,a.clone(c)),c}function rc(e=" ",t=0){return ro(l1,null,e,t)}function rf(e){return null==e||"boolean"==typeof e?ro(l2):T(e)?ro(l0,null,e.slice()):rn(e)?rp(e):ro(l1,null,String(e))}function rp(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:ru(e)}function rd(e,t){let n=0,{shapeFlag:l}=e;if(null==t)t=null;else if(T(t))n=16;else if("object"==typeof t)if(65&l){let n=t.default;n&&(n._c&&(n._d=!1),rd(e,n()),n._c&&(n._d=!0));return}else{n=32;let l=t._;l||lv(t)?3===l&&tY&&(1===tY.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=tY}else N(t)?(t={default:t,_ctx:tY},n=32):(t=String(t),64&l?(n=16,t=[rc(t)]):n=8);e.children=t,e.shapeFlag|=n}function rh(...e){let t={};for(let n=0;n<e.length;n++){let l=e[n];for(let e in l)if("class"===e)t.class!==l.class&&(t.class=ei([t.class,l.class]));else if("style"===e)t.style=et([t.style,l.style]);else if(S(e)){let n=t[e],r=l[e];r&&n!==r&&!(T(n)&&n.includes(r))&&(t[e]=n?[].concat(n,r):r)}else""!==e&&(t[e]=l[e])}return t}function rv(e,t,n,l=null){tD(e,t,7,[n,l])}let rg=la(),rm=0,r_=null,ry=()=>r_||tY;a=e=>{r_=e},u=e=>{rx=e};let rb=e=>{let t=r_;return a(e),e.scope.on(),()=>{e.scope.off(),a(t)}},rS=()=>{r_&&r_.scope.off(),a(null)};function rC(e){return 4&e.vnode.shapeFlag}let rx=!1;function rw(e,t,n){N(t)?e.render=t:I(t)&&(e.setupState=tw(t)),rE(e,n)}function rE(e,t,n){let l=e.type;if(!e.render){if(!t&&c&&!l.render){let t=l.template||le(e).template;if(t){let{isCustomElement:n,compilerOptions:r}=e.appContext.config,{delimiters:i,compilerOptions:s}=l,o=x(x({isCustomElement:n,delimiters:i},r),s);l.render=c(t,o)}}e.render=l.render||y,f&&f(e)}{let t=rb(e);ek();try{!function(e){let t=le(e),n=e.proxy,l=e.ctx;n9=!1,t.beforeCreate&&n7(t.beforeCreate,e,"bc");let{data:r,computed:i,methods:s,watch:o,provide:a,inject:u,created:c,beforeMount:f,mounted:p,beforeUpdate:d,updated:h,activated:g,deactivated:m,beforeDestroy:_,beforeUnmount:b,destroyed:S,unmounted:C,render:x,renderTracked:w,renderTriggered:E,errorCaptured:k,serverPrefetch:A,expose:R,inheritAttrs:O,components:M,directives:L,filters:D}=t;if(u&&function(e,t,n=y){for(let n in T(e)&&(e=lr(e)),e){let l,r=e[n];tm(l=I(r)?"default"in r?lp(r.from||n,r.default,!0):lp(r.from||n):lp(r))?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>l.value,set:e=>l.value=e}):t[n]=l}}(u,l,null),s)for(let e in s){let t=s[e];N(t)&&(l[e]=t.bind(n))}if(r){let t=r.call(n,n);I(t)&&(e.data=ti(t))}if(n9=!0,i)for(let e in i){let t=i[e],r=N(t)?t.bind(n,n):N(t.get)?t.get.bind(n,n):y,s=rO({get:r,set:!N(t)&&N(t.set)?t.set.bind(n):y});Object.defineProperty(l,e,{enumerable:!0,configurable:!0,get:()=>s.value,set:e=>s.value=e})}if(o)for(let e in o)!function e(t,n,l,r){var i,s,o,a,u,c,f;let p=r.includes(".")?lV(l,r):()=>l[r];if(P(t)){let e=n[t];N(e)&&(i=p,s=e,lD(i,s,void 0))}else if(N(t)){o=p,a=t.bind(l),lD(o,a,void 0)}else if(I(t))if(T(t))t.forEach(t=>e(t,n,l,r));else{let e=N(t.handler)?t.handler.bind(l):n[t.handler];N(e)&&(u=p,c=e,f=t,lD(u,c,f))}}(o[e],l,n,e);if(a){let e=N(a)?a.call(n):a;Reflect.ownKeys(e).forEach(t=>{lf(t,e[t])})}function F(e,t){T(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(c&&n7(c,e,"c"),F(nB,f),F(n$,p),F(nH,d),F(nW,h),F(nI,g),F(nL,m),F(nX,k),F(nJ,w),F(nG,E),F(nK,b),F(nz,C),F(nq,A),T(R))if(R.length){let t=e.exposed||(e.exposed={});R.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||(e.exposed={});x&&e.render===y&&(e.render=x),null!=O&&(e.inheritAttrs=O),M&&(e.components=M),L&&(e.directives=L)}(e)}finally{eT(),t()}}}let rk={get:(e,t)=>(eD(e,"get",""),e[t])};function rT(e){return{attrs:new Proxy(e.attrs,rk),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function rA(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(tw(th(e.exposed)),{get:(t,n)=>n in t?t[n]:n in n2?n2[n](e):void 0,has:(e,t)=>t in e||t in n2})):e.proxy}function rR(e,t=!0){return N(e)?e.displayName||e.name:e.name||t&&e.__name}let rO=(e,t)=>(function(e,t,n=!1){let l,r;return N(e)?l=e:(l=e.get,r=e.set),new tO(l,r,n)})(e,0,rx);function rN(e,t,n){let l=arguments.length;return 2!==l?(l>3?n=Array.prototype.slice.call(arguments,2):3===l&&rn(n)&&(n=[n]),ro(e,t,n)):!I(t)||T(t)?ro(e,null,t):rn(t)?ro(e,null,[t]):ro(e,t)}function rP(e,t){let n=e.memo;if(n.length!=t.length)return!1;for(let e=0;e<n.length;e++)if(G(n[e],t[e]))return!1;return l9>0&&l4&&l4.push(e),!0}let rM="3.5.18",rI="undefined"!=typeof window&&window.trustedTypes;if(rI)try{h=rI.createPolicy("vue",{createHTML:e=>e})}catch(e){}let rL=h?e=>h.createHTML(e):e=>e,rD="undefined"!=typeof document?document:null,rF=rD&&rD.createElement("template"),rV="transition",rU="animation",rj=Symbol("_vtc"),rB={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},r$=x({},no,rB),rH=((t=(e,{slots:t})=>rN(nc,rz(e),t)).displayName="Transition",t.props=r$,t),rW=(e,t=[])=>{T(e)?e.forEach(e=>e(...t)):e&&e(...t)},rK=e=>!!e&&(T(e)?e.some(e=>e.length>1):e.length>1);function rz(e){let t={};for(let n in e)n in rB||(t[n]=e[n]);if(!1===e.css)return t;let{name:n="v",type:l,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:o=`${n}-enter-to`,appearFromClass:a=i,appearActiveClass:u=s,appearToClass:c=o,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:d=`${n}-leave-to`}=e,h=function(e){if(null==e)return null;{if(I(e))return[function(e){return Y(e)}(e.enter),function(e){return Y(e)}(e.leave)];let t=function(e){return Y(e)}(e);return[t,t]}}(r),g=h&&h[0],m=h&&h[1],{onBeforeEnter:_,onEnter:y,onEnterCancelled:b,onLeave:S,onLeaveCancelled:C,onBeforeAppear:w=_,onAppear:E=y,onAppearCancelled:k=b}=t,T=(e,t,n,l)=>{e._enterCancelled=l,rG(e,t?c:o),rG(e,t?u:s),n&&n()},A=(e,t)=>{e._isLeaving=!1,rG(e,f),rG(e,d),rG(e,p),t&&t()},R=e=>(t,n)=>{let r=e?E:y,s=()=>T(t,e,n);rW(r,[t,s]),rJ(()=>{rG(t,e?a:i),rq(t,e?c:o),rK(r)||rZ(t,l,g,s)})};return x(t,{onBeforeEnter(e){rW(_,[e]),rq(e,i),rq(e,s)},onBeforeAppear(e){rW(w,[e]),rq(e,a),rq(e,u)},onEnter:R(!1),onAppear:R(!0),onLeave(e,t){e._isLeaving=!0;let n=()=>A(e,t);rq(e,f),e._enterCancelled?(rq(e,p),r1()):(r1(),rq(e,p)),rJ(()=>{e._isLeaving&&(rG(e,f),rq(e,d),rK(S)||rZ(e,l,m,n))}),rW(S,[e,n])},onEnterCancelled(e){T(e,!1,void 0,!0),rW(b,[e])},onAppearCancelled(e){T(e,!0,void 0,!0),rW(k,[e])},onLeaveCancelled(e){A(e),rW(C,[e])}})}function rq(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[rj]||(e[rj]=new Set)).add(t)}function rG(e,t){t.split(/\s+/).forEach(t=>t&&e.classList.remove(t));let n=e[rj];n&&(n.delete(t),n.size||(e[rj]=void 0))}function rJ(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let rX=0;function rZ(e,t,n,l){let r=e._endId=++rX,i=()=>{r===e._endId&&l()};if(null!=n)return setTimeout(i,n);let{type:s,timeout:o,propCount:a}=rY(e,t);if(!s)return l();let u=s+"end",c=0,f=()=>{e.removeEventListener(u,p),i()},p=t=>{t.target===e&&++c>=a&&f()};setTimeout(()=>{c<a&&f()},o+1),e.addEventListener(u,p)}function rY(e,t){let n=window.getComputedStyle(e),l=e=>(n[e]||"").split(", "),r=l(`${rV}Delay`),i=l(`${rV}Duration`),s=rQ(r,i),o=l(`${rU}Delay`),a=l(`${rU}Duration`),u=rQ(o,a),c=null,f=0,p=0;t===rV?s>0&&(c=rV,f=s,p=i.length):t===rU?u>0&&(c=rU,f=u,p=a.length):p=(c=(f=Math.max(s,u))>0?s>u?rV:rU:null)?c===rV?i.length:a.length:0;let d=c===rV&&/\b(transform|all)(,|$)/.test(l(`${rV}Property`).toString());return{type:c,timeout:f,propCount:p,hasTransform:d}}function rQ(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((t,n)=>r0(t)+r0(e[n])))}function r0(e){return"auto"===e?0:1e3*Number(e.slice(0,-1).replace(",","."))}function r1(){return document.body.offsetHeight}let r2=Symbol("_vod"),r6=Symbol("_vsh");function r8(e,t){e.style.display=t?e[r2]:"none",e[r6]=!t}let r4=Symbol("");function r3(e,t){if(1===e.nodeType){let l=e.style,r="";for(let e in t){var n;let i=null==(n=t[e])?"initial":"string"==typeof n?""===n?" ":n:String(n);l.setProperty(`--${e}`,i),r+=`--${e}: ${i};`}l[r4]=r}}let r5=/(^|;)\s*display\s*:/,r9=/\s*!important$/;function r7(e,t,n){if(T(n))n.forEach(n=>r7(e,t,n));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{let l=function(e,t){let n=it[t];if(n)return n;let l=H(t);if("filter"!==l&&l in e)return it[t]=l;l=z(l);for(let n=0;n<ie.length;n++){let r=ie[n]+l;if(r in e)return it[t]=r}return t}(e,t);r9.test(n)?e.setProperty(K(l),n.replace(r9,""),"important"):e[l]=n}}let ie=["Webkit","Moz","ms"],it={},il="http://www.w3.org/1999/xlink";function ir(e,t,n,l,r,i=es(t)){if(l&&t.startsWith("xlink:"))null==n?e.removeAttributeNS(il,t.slice(6,t.length)):e.setAttributeNS(il,t,n);else null==n||i&&!(n||""===n)?e.removeAttribute(t):e.setAttribute(t,i?"":M(n)?String(n):n)}function ii(e,t,n,l,r){if("innerHTML"===t||"textContent"===t){null!=n&&(e[t]="innerHTML"===t?rL(n):n);return}let i=e.tagName;if("value"===t&&"PROGRESS"!==i&&!i.includes("-")){let l="OPTION"===i?e.getAttribute("value")||"":e.value,r=null==n?"checkbox"===e.type?"on":"":String(n);l===r&&"_value"in e||(e.value=r),null==n&&e.removeAttribute(t),e._value=n;return}let s=!1;if(""===n||null==n){let l=typeof e[t];if("boolean"===l){var o;n=!!(o=n)||""===o}else null==n&&"string"===l?(n="",s=!0):"number"===l&&(n=0,s=!0)}try{e[t]=n}catch(e){}s&&e.removeAttribute(r||t)}function is(e,t,n,l){e.addEventListener(t,n,l)}let io=Symbol("_vei"),ia=/(?:Once|Passive|Capture)$/,iu=0,ic=Promise.resolve(),ip=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)>96&&123>e.charCodeAt(2),id={};function ih(e,t,n){let l=nm(e,t);V(l)&&x(l,t);class r extends ig{constructor(e){super(l,e,n)}}return r.def=l,r}let iv="undefined"!=typeof HTMLElement?HTMLElement:class{};class ig extends iv{constructor(e,t={},n=iz){super(),this._def=e,this._props=t,this._createApp=n,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._ob=null,this.shadowRoot&&n!==iz?this._root=this.shadowRoot:!1!==e.shadowRoot?(this.attachShadow({mode:"open"}),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;this.shadowRoot||this._resolved||this._parseSlots(),this._connected=!0;let e=this;for(;e=e&&(e.parentNode||e.host);)if(e instanceof ig){this._parent=e;break}this._instance||(this._resolved?this._mount(this._def):e&&e._pendingResolve?this._pendingResolve=e._pendingResolve.then(()=>{this._pendingResolve=void 0,this._resolveDef()}):this._resolveDef())}_setParent(e=this._parent){e&&(this._instance.parent=e._instance,this._inheritParentContext(e))}_inheritParentContext(e=this._parent){e&&this._app&&Object.setPrototypeOf(this._app._context.provides,e._instance.provides)}disconnectedCallback(){this._connected=!1,tK(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null)})}_resolveDef(){if(this._pendingResolve)return;for(let e=0;e<this.attributes.length;e++)this._setAttr(this.attributes[e].name);this._ob=new MutationObserver(e=>{for(let t of e)this._setAttr(t.attributeName)}),this._ob.observe(this,{attributes:!0});let e=(e,t=!1)=>{let n;this._resolved=!0,this._pendingResolve=void 0;let{props:l,styles:r}=e;if(l&&!T(l))for(let e in l){let t=l[e];(t===Number||t&&t.type===Number)&&(e in this._props&&(this._props[e]=Y(this._props[e])),(n||(n=Object.create(null)))[H(e)]=!0)}this._numberProps=n,this._resolveProps(e),this.shadowRoot&&this._applyStyles(r),this._mount(e)},t=this._def.__asyncLoader;t?this._pendingResolve=t().then(t=>{t.configureApp=this._def.configureApp,e(this._def=t,!0)}):e(this._def)}_mount(e){this._app=this._createApp(e),this._inheritParentContext(),e.configureApp&&e.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);let t=this._instance&&this._instance.exposed;if(t)for(let e in t)k(this,e)||Object.defineProperty(this,e,{get:()=>tC(t[e])})}_resolveProps(e){let{props:t}=e,n=T(t)?t:Object.keys(t||{});for(let e of Object.keys(this))"_"!==e[0]&&n.includes(e)&&this._setProp(e,this[e]);for(let e of n.map(H))Object.defineProperty(this,e,{get(){return this._getProp(e)},set(t){this._setProp(e,t,!0,!0)}})}_setAttr(e){if(e.startsWith("data-v-"))return;let t=this.hasAttribute(e),n=t?this.getAttribute(e):id,l=H(e);t&&this._numberProps&&this._numberProps[l]&&(n=Y(n)),this._setProp(l,n,!1,!0)}_getProp(e){return this._props[e]}_setProp(e,t,n=!0,l=!1){if(t!==this._props[e]&&(t===id?delete this._props[e]:(this._props[e]=t,"key"===e&&this._app&&(this._app._ceVNode.key=t)),l&&this._instance&&this._update(),n)){let n=this._ob;n&&n.disconnect(),!0===t?this.setAttribute(K(e),""):"string"==typeof t||"number"==typeof t?this.setAttribute(K(e),t+""):t||this.removeAttribute(K(e)),n&&n.observe(this,{attributes:!0})}}_update(){let e=this._createVNode();this._app&&(e.appContext=this._app._context),iK(e,this._root)}_createVNode(){let e={};this.shadowRoot||(e.onVnodeMounted=e.onVnodeUpdated=this._renderSlots.bind(this));let t=ro(this._def,x(e,this._props));return this._instance||(t.ce=e=>{this._instance=e,e.ce=this,e.isCE=!0;let t=(e,t)=>{this.dispatchEvent(new CustomEvent(e,V(t[0])?x({detail:t},t[0]):{detail:t}))};e.emit=(e,...n)=>{t(e,n),K(e)!==e&&t(K(e),n)},this._setParent()}),t}_applyStyles(e,t){if(!e)return;if(t){if(t===this._def||this._styleChildren.has(t))return;this._styleChildren.add(t)}let n=this._nonce;for(let t=e.length-1;t>=0;t--){let l=document.createElement("style");n&&l.setAttribute("nonce",n),l.textContent=e[t],this.shadowRoot.prepend(l)}}_parseSlots(){let e,t=this._slots={};for(;e=this.firstChild;){let n=1===e.nodeType&&e.getAttribute("slot")||"default";(t[n]||(t[n]=[])).push(e),this.removeChild(e)}}_renderSlots(){let e=(this._teleportTarget||this).querySelectorAll("slot"),t=this._instance.type.__scopeId;for(let n=0;n<e.length;n++){let l=e[n],r=l.getAttribute("name")||"default",i=this._slots[r],s=l.parentNode;if(i)for(let e of i){if(t&&1===e.nodeType){let n,l=t+"-s",r=document.createTreeWalker(e,1);for(e.setAttribute(l,"");n=r.nextNode();)n.setAttribute(l,"")}s.insertBefore(e,l)}else for(;l.firstChild;)s.insertBefore(l.firstChild,l);s.removeChild(l)}}_injectChildStyle(e){this._applyStyles(e.styles,e)}_removeChildStyle(e){}}function im(e){let t=ry(),n=t&&t.ce;return n||null}let i_=new WeakMap,iy=new WeakMap,ib=Symbol("_moveCb"),iS=Symbol("_enterCb"),iC=(n={name:"TransitionGroup",props:x({},r$,{tag:String,moveClass:String}),setup(e,{slots:t}){let n,l,r=ry(),i=ni();return nW(()=>{if(!n.length)return;let t=e.moveClass||`${e.name||"v"}-move`;if(!function(e,t,n){let l=e.cloneNode(),r=e[rj];r&&r.forEach(e=>{e.split(/\s+/).forEach(e=>e&&l.classList.remove(e))}),n.split(/\s+/).forEach(e=>e&&l.classList.add(e)),l.style.display="none";let i=1===t.nodeType?t:t.parentNode;i.appendChild(l);let{hasTransform:s}=rY(l);return i.removeChild(l),s}(n[0].el,r.vnode.el,t)){n=[];return}n.forEach(ix),n.forEach(iw);let l=n.filter(iE);r1(),l.forEach(e=>{let n=e.el,l=n.style;rq(n,t),l.transform=l.webkitTransform=l.transitionDuration="";let r=n[ib]=e=>{(!e||e.target===n)&&(!e||/transform$/.test(e.propertyName))&&(n.removeEventListener("transitionend",r),n[ib]=null,rG(n,t))};n.addEventListener("transitionend",r)}),n=[]}),()=>{let s=td(e),o=rz(s),a=s.tag||l0;if(n=[],l)for(let e=0;e<l.length;e++){let t=l[e];t.el&&t.el instanceof Element&&(n.push(t),nv(t,np(t,o,i,r)),i_.set(t,t.el.getBoundingClientRect()))}l=t.default?ng(t.default()):[];for(let e=0;e<l.length;e++){let t=l[e];null!=t.key&&nv(t,np(t,o,i,r))}return ro(a,null,l)}}},delete n.props.mode,n);function ix(e){let t=e.el;t[ib]&&t[ib](),t[iS]&&t[iS]()}function iw(e){iy.set(e,e.el.getBoundingClientRect())}function iE(e){let t=i_.get(e),n=iy.get(e),l=t.left-n.left,r=t.top-n.top;if(l||r){let t=e.el.style;return t.transform=t.webkitTransform=`translate(${l}px,${r}px)`,t.transitionDuration="0s",e}}let ik=e=>{let t=e.props["onUpdate:modelValue"]||!1;return T(t)?e=>J(t,e):t};function iT(e){e.target.composing=!0}function iA(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}let iR=Symbol("_assign"),iO={created(e,{modifiers:{lazy:t,trim:n,number:l}},r){e[iR]=ik(r);let i=l||r.props&&"number"===r.props.type;is(e,t?"change":"input",t=>{if(t.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=Z(l)),e[iR](l)}),n&&is(e,"change",()=>{e.value=e.value.trim()}),t||(is(e,"compositionstart",iT),is(e,"compositionend",iA),is(e,"change",iA))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:l,trim:r,number:i}},s){if(e[iR]=ik(s),e.composing)return;let o=(i||"number"===e.type)&&!/^0\d/.test(e.value)?Z(e.value):e.value,a=null==t?"":t;if(o!==a){if(document.activeElement===e&&"range"!==e.type&&(l&&t===n||r&&e.value.trim()===a))return;e.value=a}}},iN={deep:!0,created(e,t,n){e[iR]=ik(n),is(e,"change",()=>{let t=e._modelValue,n=iD(e),l=e.checked,r=e[iR];if(T(t)){let e=ea(t,n),i=-1!==e;if(l&&!i)r(t.concat(n));else if(!l&&i){let n=[...t];n.splice(e,1),r(n)}}else if(R(t)){let e=new Set(t);l?e.add(n):e.delete(n),r(e)}else r(iF(e,l))})},mounted:iP,beforeUpdate(e,t,n){e[iR]=ik(n),iP(e,t,n)}};function iP(e,{value:t,oldValue:n},l){let r;if(e._modelValue=t,T(t))r=ea(t,l.props.value)>-1;else if(R(t))r=t.has(l.props.value);else{if(t===n)return;r=eo(t,iF(e,!0))}e.checked!==r&&(e.checked=r)}let iM={created(e,{value:t},n){e.checked=eo(t,n.props.value),e[iR]=ik(n),is(e,"change",()=>{e[iR](iD(e))})},beforeUpdate(e,{value:t,oldValue:n},l){e[iR]=ik(l),t!==n&&(e.checked=eo(t,l.props.value))}},iI={deep:!0,created(e,{value:t,modifiers:{number:n}},l){let r=R(t);is(e,"change",()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>n?Z(iD(e)):iD(e));e[iR](e.multiple?r?new Set(t):t:t[0]),e._assigning=!0,tK(()=>{e._assigning=!1})}),e[iR]=ik(l)},mounted(e,{value:t}){iL(e,t)},beforeUpdate(e,t,n){e[iR]=ik(n)},updated(e,{value:t}){e._assigning||iL(e,t)}};function iL(e,t){let n=e.multiple,l=T(t);if(!n||l||R(t)){for(let r=0,i=e.options.length;r<i;r++){let i=e.options[r],s=iD(i);if(n)if(l){let e=typeof s;"string"===e||"number"===e?i.selected=t.some(e=>String(e)===String(s)):i.selected=ea(t,s)>-1}else i.selected=t.has(s);else if(eo(iD(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}n||-1===e.selectedIndex||(e.selectedIndex=-1)}}function iD(e){return"_value"in e?e._value:e.value}function iF(e,t){let n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}function iV(e,t,n,l,r){let i=function(e,t){switch(e){case"SELECT":return iI;case"TEXTAREA":return iO;default:switch(t){case"checkbox":return iN;case"radio":return iM;default:return iO}}}(e.tagName,n.props&&n.props.type)[r];i&&i(e,t,n,l)}let iU=["ctrl","shift","alt","meta"],ij={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>iU.some(n=>e[`${n}Key`]&&!t.includes(n))},iB={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},i$=x({patchProp:(e,t,n,l,r,i)=>{let s="svg"===r;if("class"===t){var o=l;let t=e[rj];t&&(o=(o?[o,...t]:[...t]).join(" ")),null==o?e.removeAttribute("class"):s?e.setAttribute("class",o):e.className=o}else"style"===t?function(e,t,n){let l=e.style,r=P(n),i=!1;if(n&&!r){if(t)if(P(t))for(let e of t.split(";")){let t=e.slice(0,e.indexOf(":")).trim();null==n[t]&&r7(l,t,"")}else for(let e in t)null==n[e]&&r7(l,e,"");for(let e in n)"display"===e&&(i=!0),r7(l,e,n[e])}else if(r){if(t!==n){let e=l[r4];e&&(n+=";"+e),l.cssText=n,i=r5.test(n)}}else t&&e.removeAttribute("style");r2 in e&&(e[r2]=i?l.display:"",e[r6]&&(l.display="none"))}(e,n,l):S(t)?C(t)||function(e,t,n,l,r=null){let i=e[io]||(e[io]={}),s=i[t];if(l&&s)s.value=l;else{let[n,o]=function(e){let t;if(ia.test(e)){let n;for(t={};n=e.match(ia);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[":"===e[2]?e.slice(3):K(e.slice(2)),t]}(t);if(l)is(e,n,i[t]=function(e,t){let n=e=>{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();tD(function(e,t){if(!T(t))return t;{let n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(e=>t=>!t._stopped&&e&&e(t))}}(e,n.value),t,5,[e])};return n.value=e,n.attached=iu||(ic.then(()=>iu=0),iu=Date.now()),n}(l,r),o);else s&&(e.removeEventListener(n,s,o),i[t]=void 0)}}(e,t,0,l,i):("."===t[0]?(t=t.slice(1),0):"^"===t[0]?(t=t.slice(1),1):!function(e,t,n,l){if(l)return!!("innerHTML"===t||"textContent"===t||t in e&&ip(t)&&N(n));if("spellcheck"===t||"draggable"===t||"translate"===t||"autocorrect"===t||"form"===t||"list"===t&&"INPUT"===e.tagName||"type"===t&&"TEXTAREA"===e.tagName)return!1;if("width"===t||"height"===t){let t=e.tagName;if("IMG"===t||"VIDEO"===t||"CANVAS"===t||"SOURCE"===t)return!1}return!(ip(t)&&P(n))&&t in e}(e,t,l,s))?e._isVueCE&&(/[A-Z]/.test(t)||!P(l))?ii(e,H(t),l,i,t):("true-value"===t?e._trueValue=l:"false-value"===t&&(e._falseValue=l),ir(e,t,l,s)):(ii(e,t,l),e.tagName.includes("-")||"value"!==t&&"checked"!==t&&"selected"!==t||ir(e,t,l,s,i,"value"!==t))}},{insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,l)=>{let r="svg"===t?rD.createElementNS("http://www.w3.org/2000/svg",e):"mathml"===t?rD.createElementNS("http://www.w3.org/1998/Math/MathML",e):n?rD.createElement(e,{is:n}):rD.createElement(e);return"select"===e&&l&&null!=l.multiple&&r.setAttribute("multiple",l.multiple),r},createText:e=>rD.createTextNode(e),createComment:e=>rD.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>rD.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,l,r,i){let s=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),r!==i&&(r=r.nextSibling););else{rF.innerHTML=rL("svg"===l?`<svg>${e}</svg>`:"mathml"===l?`<math>${e}</math>`:e);let r=rF.content;if("svg"===l||"mathml"===l){let e=r.firstChild;for(;e.firstChild;)r.appendChild(e.firstChild);r.removeChild(e)}t.insertBefore(r,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}}),iH=!1;function iW(){return p=iH?p:lT(i$),iH=!0,p}let iK=(...e)=>{(p||(p=lA(i$))).render(...e)},iz=(...e)=>{let t=(p||(p=lA(i$))).createApp(...e),{mount:n}=t;return t.mount=e=>{let l=iJ(e);if(!l)return;let r=t._component;N(r)||r.render||r.template||(r.template=l.innerHTML),1===l.nodeType&&(l.textContent="");let i=n(l,!1,iG(l));return l instanceof Element&&(l.removeAttribute("v-cloak"),l.setAttribute("data-v-app","")),i},t},iq=(...e)=>{let t=iW().createApp(...e),{mount:n}=t;return t.mount=e=>{let t=iJ(e);if(t)return n(t,!0,iG(t))},t};function iG(e){return e instanceof SVGElement?"svg":"function"==typeof MathMLElement&&e instanceof MathMLElement?"mathml":void 0}function iJ(e){return P(e)?document.querySelector(e):e}return e.BaseTransition=nc,e.BaseTransitionPropsValidators=no,e.Comment=l2,e.DeprecationTypes=null,e.EffectScope=ed,e.ErrorCodes={SETUP_FUNCTION:0,0:"SETUP_FUNCTION",RENDER_FUNCTION:1,1:"RENDER_FUNCTION",NATIVE_EVENT_HANDLER:5,5:"NATIVE_EVENT_HANDLER",COMPONENT_EVENT_HANDLER:6,6:"COMPONENT_EVENT_HANDLER",VNODE_HOOK:7,7:"VNODE_HOOK",DIRECTIVE_HOOK:8,8:"DIRECTIVE_HOOK",TRANSITION_HOOK:9,9:"TRANSITION_HOOK",APP_ERROR_HANDLER:10,10:"APP_ERROR_HANDLER",APP_WARN_HANDLER:11,11:"APP_WARN_HANDLER",FUNCTION_REF:12,12:"FUNCTION_REF",ASYNC_COMPONENT_LOADER:13,13:"ASYNC_COMPONENT_LOADER",SCHEDULER:14,14:"SCHEDULER",COMPONENT_UPDATE:15,15:"COMPONENT_UPDATE",APP_UNMOUNT_CLEANUP:16,16:"APP_UNMOUNT_CLEANUP"},e.ErrorTypeStrings=null,e.Fragment=l0,e.KeepAlive={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){let n=ry(),l=n.ctx,r=new Map,i=new Set,s=null,o=n.suspense,{renderer:{p:a,m:u,um:c,o:{createElement:f}}}=l,p=f("div");function d(e){nF(e),c(e,n,o,!0)}function h(e){r.forEach((t,n)=>{let l=rR(t.type);l&&!e(l)&&g(n)})}function g(e){let t=r.get(e);!t||s&&rl(t,s)?s&&nF(s):d(t),r.delete(e),i.delete(e)}l.activate=(e,t,n,l,r)=>{let i=e.component;u(e,t,n,0,o),a(i.vnode,e,t,n,i,o,l,e.slotScopeIds,r),lk(()=>{i.isDeactivated=!1,i.a&&J(i.a);let t=e.props&&e.props.onVnodeMounted;t&&rv(t,i.parent,e)},o)},l.deactivate=e=>{let t=e.component;lM(t.m),lM(t.a),u(e,p,null,1,o),lk(()=>{t.da&&J(t.da);let n=e.props&&e.props.onVnodeUnmounted;n&&rv(n,t.parent,e),t.isDeactivated=!0},o)},lD(()=>[e.include,e.exclude],([e,t])=>{e&&h(t=>nM(e,t)),t&&h(e=>!nM(t,e))},{flush:"post",deep:!0});let m=null,_=()=>{null!=m&&(lq(n.subTree.type)?lk(()=>{r.set(m,nV(n.subTree))},n.subTree.suspense):r.set(m,nV(n.subTree)))};return n$(_),nW(_),nK(()=>{r.forEach(e=>{let{subTree:t,suspense:l}=n,r=nV(t);if(e.type===r.type&&e.key===r.key){nF(r);let e=r.component.da;e&&lk(e,l);return}d(e)})}),()=>{if(m=null,!t.default)return s=null;let n=t.default(),l=n[0];if(n.length>1)return s=null,n;if(!rn(l)||!(4&l.shapeFlag)&&!(128&l.shapeFlag))return s=null,l;let o=nV(l);if(o.type===l2)return s=null,o;let a=o.type,u=rR(nO(o)?o.type.__asyncResolved||{}:a),{include:c,exclude:f,max:p}=e;if(c&&(!u||!nM(c,u))||f&&u&&nM(f,u))return o.shapeFlag&=-257,s=o,l;let d=null==o.key?a:o.key,h=r.get(d);return o.el&&(o=ru(o),128&l.shapeFlag&&(l.ssContent=o)),m=d,h?(o.el=h.el,o.component=h.component,o.transition&&nv(o,o.transition),o.shapeFlag|=512,i.delete(d),i.add(d)):(i.add(d),p&&i.size>parseInt(p,10)&&g(i.values().next().value)),o.shapeFlag|=256,s=o,lq(l.type)?l:o}}},e.ReactiveEffect=ev,e.Static=l6,e.Suspense={name:"Suspense",__isSuspense:!0,process(e,t,n,l,r,i,s,o,a,u){if(null==e){var c=t,f=n,p=l,d=r,h=i,g=s,m=o,_=a,y=u;let{p:e,o:{createElement:b}}=y,S=b("div"),C=c.suspense=lX(c,h,d,f,S,p,g,m,_,y);e(null,C.pendingBranch=c.ssContent,S,null,d,C,g,m),C.deps>0?(lJ(c,"onPending"),lJ(c,"onFallback"),e(null,c.ssFallback,f,p,d,null,g,m),lQ(C,c.ssFallback)):C.resolve(!1,!0)}else{if(i&&i.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}!function(e,t,n,l,r,i,s,o,{p:a,um:u,o:{createElement:c}}){let f=t.suspense=e.suspense;f.vnode=t,t.el=e.el;let p=t.ssContent,d=t.ssFallback,{activeBranch:h,pendingBranch:g,isInFallback:m,isHydrating:_}=f;if(g)f.pendingBranch=p,rl(p,g)?(a(g,p,f.hiddenContainer,null,r,f,i,s,o),f.deps<=0?f.resolve():m&&!_&&(a(h,d,n,l,r,null,i,s,o),lQ(f,d))):(f.pendingId=lG++,_?(f.isHydrating=!1,f.activeBranch=g):u(g,r,f),f.deps=0,f.effects.length=0,f.hiddenContainer=c("div"),m?(a(null,p,f.hiddenContainer,null,r,f,i,s,o),f.deps<=0?f.resolve():(a(h,d,n,l,r,null,i,s,o),lQ(f,d))):h&&rl(p,h)?(a(h,p,n,l,r,f,i,s,o),f.resolve(!0)):(a(null,p,f.hiddenContainer,null,r,f,i,s,o),f.deps<=0&&f.resolve()));else if(h&&rl(p,h))a(h,p,n,l,r,f,i,s,o),lQ(f,p);else if(lJ(t,"onPending"),f.pendingBranch=p,512&p.shapeFlag?f.pendingId=p.component.suspenseId:f.pendingId=lG++,a(null,p,f.hiddenContainer,null,r,f,i,s,o),f.deps<=0)f.resolve();else{let{timeout:e,pendingId:t}=f;e>0?setTimeout(()=>{f.pendingId===t&&f.fallback(d)},e):0===e&&f.fallback(d)}}(e,t,n,l,r,s,o,a,u)}},hydrate:function(e,t,n,l,r,i,s,o,a){let u=t.suspense=lX(t,l,n,e.parentNode,document.createElement("div"),null,r,i,s,o,!0),c=a(e,u.pendingBranch=t.ssContent,n,u,i,s);return 0===u.deps&&u.resolve(!1,!0),c},normalize:function(e){let{shapeFlag:t,children:n}=e,l=32&t;e.ssContent=lZ(l?n.default:n),e.ssFallback=l?lZ(n.fallback):ro(l2)}},e.Teleport=t7,e.Text=l1,e.TrackOpTypes={GET:"get",HAS:"has",ITERATE:"iterate"},e.Transition=rH,e.TransitionGroup=iC,e.TriggerOpTypes={SET:"set",ADD:"add",DELETE:"delete",CLEAR:"clear"},e.VueElement=ig,e.assertNumber=function(e,t){},e.callWithAsyncErrorHandling=tD,e.callWithErrorHandling=tL,e.camelize=H,e.capitalize=z,e.cloneVNode=ru,e.compatUtils=null,e.computed=rO,e.createApp=iz,e.createBlock=rt,e.createCommentVNode=function(e="",t=!1){return t?(l3(),rt(l2,null,e)):ro(l2,null,e)},e.createElementBlock=function(e,t,n,l,r,i){return re(rs(e,t,n,l,r,i,!0))},e.createElementVNode=rs,e.createHydrationRenderer=lT,e.createPropsRestProxy=function(e,t){let n={};for(let l in e)t.includes(l)||Object.defineProperty(n,l,{enumerable:!0,get:()=>e[l]});return n},e.createRenderer=function(e){return lA(e)},e.createSSRApp=iq,e.createSlots=function(e,t){for(let n=0;n<t.length;n++){let l=t[n];if(T(l))for(let t=0;t<l.length;t++)e[l[t].name]=l[t].fn;else l&&(e[l.name]=l.key?(...e)=>{let t=l.fn(...e);return t&&(t.key=l.key),t}:l.fn)}return e},e.createStaticVNode=function(e,t){let n=ro(l6,null,e);return n.staticCount=t,n},e.createTextVNode=rc,e.createVNode=ro,e.customRef=tk,e.defineAsyncComponent=function(e){let t;N(e)&&(e={loader:e});let{loader:n,loadingComponent:l,errorComponent:r,delay:i=200,hydrate:s,timeout:o,suspensible:a=!0,onError:u}=e,c=null,f=0,p=()=>{let e;return c||(e=c=n().catch(e=>{if(e=e instanceof Error?e:Error(String(e)),u)return new Promise((t,n)=>{u(e,()=>t((f++,c=null,p())),()=>n(e),f+1)});throw e}).then(n=>e!==c&&c?c:(n&&(n.__esModule||"Module"===n[Symbol.toStringTag])&&(n=n.default),t=n,n)))};return nm({name:"AsyncComponentWrapper",__asyncLoader:p,__asyncHydrate(e,n,l){let r=!1;(n.bu||(n.bu=[])).push(()=>r=!0);let i=()=>{r||l()},o=s?()=>{let t=s(i,t=>(function(e,t){if(nx(e)&&"["===e.data){let n=1,l=e.nextSibling;for(;l;){if(1===l.nodeType){if(!1===t(l))break}else if(nx(l))if("]"===l.data){if(0==--n)break}else"["===l.data&&n++;l=l.nextSibling}}else t(e)})(e,t));t&&(n.bum||(n.bum=[])).push(t)}:i;t?o():p().then(()=>!n.isUnmounted&&o())},get __asyncResolved(){return t},setup(){let e=r_;if(n_(e),t)return()=>nN(t,e);let n=t=>{c=null,tF(t,e,13,!r)};if(a&&e.suspense)return p().then(t=>()=>nN(t,e)).catch(e=>(n(e),()=>r?ro(r,{error:e}):null));let s=t_(!1),u=t_(),f=t_(!!i);return i&&setTimeout(()=>{f.value=!1},i),null!=o&&setTimeout(()=>{if(!s.value&&!u.value){let e=Error(`Async component timed out after ${o}ms.`);n(e),u.value=e}},o),p().then(()=>{s.value=!0,e.parent&&nP(e.parent.vnode)&&e.parent.update()}).catch(e=>{n(e),u.value=e}),()=>s.value&&t?nN(t,e):u.value&&r?ro(r,{error:u.value}):l&&!f.value?ro(l):void 0}})},e.defineComponent=nm,e.defineCustomElement=ih,e.defineEmits=function(){return null},e.defineExpose=function(e){},e.defineModel=function(){},e.defineOptions=function(e){},e.defineProps=function(){return null},e.defineSSRCustomElement=(e,t)=>ih(e,t,iq),e.defineSlots=function(){return null},e.devtools=void 0,e.effect=function(e,t){e.effect instanceof ev&&(e=e.effect.fn);let n=new ev(e);t&&x(n,t);try{n.run()}catch(e){throw n.stop(),e}let l=n.run.bind(n);return l.effect=n,l},e.effectScope=function(e){return new ed(e)},e.getCurrentInstance=ry,e.getCurrentScope=function(){return r},e.getCurrentWatcher=function(){return d},e.getTransitionRawChildren=ng,e.guardReactiveProps=ra,e.h=rN,e.handleError=tF,e.hasInjectionContext=function(){return!!(ry()||lc)},e.hydrate=(...e)=>{iW().hydrate(...e)},e.hydrateOnIdle=(e=1e4)=>t=>{let n=nA(t,{timeout:e});return()=>nR(n)},e.hydrateOnInteraction=(e=[])=>(t,n)=>{P(e)&&(e=[e]);let l=!1,r=e=>{l||(l=!0,i(),t(),e.target.dispatchEvent(new e.constructor(e.type,e)))},i=()=>{n(t=>{for(let n of e)t.removeEventListener(n,r)})};return n(t=>{for(let n of e)t.addEventListener(n,r,{once:!0})}),i},e.hydrateOnMediaQuery=e=>t=>{if(e){let n=matchMedia(e);if(!n.matches)return n.addEventListener("change",t,{once:!0}),()=>n.removeEventListener("change",t);t()}},e.hydrateOnVisible=e=>(t,n)=>{let l=new IntersectionObserver(e=>{for(let n of e)if(n.isIntersecting){l.disconnect(),t();break}},e);return n(e=>{if(e instanceof Element){if(function(e){let{top:t,left:n,bottom:l,right:r}=e.getBoundingClientRect(),{innerHeight:i,innerWidth:s}=window;return(t>0&&t<i||l>0&&l<i)&&(n>0&&n<s||r>0&&r<s)}(e))return t(),l.disconnect(),!1;l.observe(e)}}),()=>l.disconnect()},e.initCustomFormatter=function(){},e.initDirectivesForSSR=y,e.inject=lp,e.isMemoSame=rP,e.isProxy=tp,e.isReactive=tu,e.isReadonly=tc,e.isRef=tm,e.isRuntimeOnly=()=>!c,e.isShallow=tf,e.isVNode=rn,e.markRaw=th,e.mergeDefaults=function(e,t){let n=n5(e);for(let e in t){if(e.startsWith("__skip"))continue;let l=n[e];l?T(l)||N(l)?l=n[e]={type:l,default:t[e]}:l.default=t[e]:null===l&&(l=n[e]={default:t[e]}),l&&t[`__skip_${e}`]&&(l.skipFactory=!0)}return n},e.mergeModels=function(e,t){return e&&t?T(e)&&T(t)?e.concat(t):x({},n5(e),n5(t)):e||t},e.mergeProps=rh,e.nextTick=tK,e.normalizeClass=ei,e.normalizeProps=function(e){if(!e)return null;let{class:t,style:n}=e;return t&&!P(t)&&(e.class=ei(t)),n&&(e.style=et(n)),e},e.normalizeStyle=et,e.onActivated=nI,e.onBeforeMount=nB,e.onBeforeUnmount=nK,e.onBeforeUpdate=nH,e.onDeactivated=nL,e.onErrorCaptured=nX,e.onMounted=n$,e.onRenderTracked=nJ,e.onRenderTriggered=nG,e.onScopeDispose=function(e,t=!1){r&&r.cleanups.push(e)},e.onServerPrefetch=nq,e.onUnmounted=nz,e.onUpdated=nW,e.onWatcherCleanup=tM,e.openBlock=l3,e.popScopeId=function(){tQ=null},e.provide=lf,e.proxyRefs=tw,e.pushScopeId=function(e){tQ=e},e.queuePostFlushCb=tG,e.reactive=ti,e.readonly=to,e.ref=t_,e.registerRuntimeCompiler=function(e){c=e,f=e=>{e.render._rc&&(e.withProxy=new Proxy(e.ctx,n4))}},e.render=iK,e.renderList=function(e,t,n,l){let r,i=n&&n[l],s=T(e);if(s||P(e)){let n=s&&tu(e),l=!1,o=!1;n&&(l=!tf(e),o=tc(e),e=eU(e)),r=Array(e.length);for(let n=0,s=e.length;n<s;n++)r[n]=t(l?o?tg(tv(e[n])):tv(e[n]):e[n],n,void 0,i&&i[n])}else if("number"==typeof e){r=Array(e);for(let n=0;n<e;n++)r[n]=t(n+1,n,void 0,i&&i[n])}else if(I(e))if(e[Symbol.iterator])r=Array.from(e,(e,n)=>t(e,n,void 0,i&&i[n]));else{let n=Object.keys(e);r=Array(n.length);for(let l=0,s=n.length;l<s;l++){let s=n[l];r[l]=t(e[s],s,l,i&&i[l])}}else r=[];return n&&(n[l]=r),r},e.renderSlot=function(e,t,n={},l,r){if(tY.ce||tY.parent&&nO(tY.parent)&&tY.parent.ce)return"default"!==t&&(n.name=t),l3(),rt(l0,null,[ro("slot",n,l&&l())],64);let i=e[t];i&&i._c&&(i._d=!1),l3();let s=i&&function e(t){return t.some(t=>!rn(t)||t.type!==l2&&(t.type!==l0||!!e(t.children)))?t:null}(i(n)),o=n.key||s&&s.key,a=rt(l0,{key:(o&&!M(o)?o:`_${t}`)+(!s&&l?"_fb":"")},s||(l?l():[]),s&&1===e._?64:-2);return!r&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),i&&i._c&&(i._d=!0),a},e.resolveComponent=function(e,t){return nQ(nZ,e,!0,t)||e},e.resolveDirective=function(e){return nQ("directives",e)},e.resolveDynamicComponent=function(e){return P(e)?nQ(nZ,e,!1)||e:e||nY},e.resolveFilter=null,e.resolveTransitionHooks=np,e.setBlockTracking=l7,e.setDevtoolsHook=y,e.setTransitionHooks=nv,e.shallowReactive=ts,e.shallowReadonly=function(e){return ta(e,!0,e2,te,tr)},e.shallowRef=ty,e.ssrContextKey=lI,e.ssrUtils=null,e.stop=function(e){e.effect.stop()},e.toDisplayString=ec,e.toHandlerKey=q,e.toHandlers=function(e,t){let n={};for(let l in e)n[t&&/[A-Z]/.test(l)?`on:${l}`:q(l)]=e[l];return n},e.toRaw=td,e.toRef=function(e,t,n){return tm(e)?e:N(e)?new tA(e):I(e)&&arguments.length>1?tR(e,t,n):t_(e)},e.toRefs=function(e){let t=T(e)?Array(e.length):{};for(let n in e)t[n]=tR(e,n);return t},e.toValue=function(e){return N(e)?e():tC(e)},e.transformVNodeArgs=function(e){},e.triggerRef=function(e){e.dep&&e.dep.trigger()},e.unref=tC,e.useAttrs=function(){return n3().attrs},e.useCssModule=function(e="$style"){return m},e.useCssVars=function(e){let t=ry();if(!t)return;let n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(e=>r3(e,n))},l=()=>{let l=e(t.proxy);t.ce?r3(t.ce,l):function e(t,n){if(128&t.shapeFlag){let l=t.suspense;t=l.activeBranch,l.pendingBranch&&!l.isHydrating&&l.effects.push(()=>{e(l.activeBranch,n)})}for(;t.component;)t=t.component.subTree;if(1&t.shapeFlag&&t.el)r3(t.el,n);else if(t.type===l0)t.children.forEach(t=>e(t,n));else if(t.type===l6){let{el:e,anchor:l}=t;for(;e&&(r3(e,n),e!==l);)e=e.nextSibling}}(t.subTree,l),n(l)};nH(()=>{tG(l)}),n$(()=>{lD(l,y,{flush:"post"});let e=new MutationObserver(l);e.observe(t.subTree.el.parentNode,{childList:!0}),nz(()=>e.disconnect())})},e.useHost=im,e.useId=function(){let e=ry();return e?(e.appContext.config.idPrefix||"v")+"-"+e.ids[0]+e.ids[1]++:""},e.useModel=function(e,t,n=m){let l=ry(),r=H(t),i=K(t),s=lU(e,r),o=tk((s,o)=>{let a,u,c=m;return lL(()=>{let t=e[r];G(a,t)&&(a=t,o())}),{get:()=>(s(),n.get?n.get(a):a),set(e){let s=n.set?n.set(e):e;if(!G(s,a)&&!(c!==m&&G(e,c)))return;let f=l.vnode.props;f&&(t in f||r in f||i in f)&&(`onUpdate:${t}`in f||`onUpdate:${r}`in f||`onUpdate:${i}`in f)||(a=e,o()),l.emit(`update:${t}`,s),G(e,s)&&G(e,c)&&!G(s,u)&&o(),c=e,u=s}}});return o[Symbol.iterator]=()=>{let e=0;return{next:()=>e<2?{value:e++?s||m:o,done:!1}:{done:!0}}},o},e.useSSRContext=()=>{},e.useShadowRoot=function(){let e=im();return e&&e.shadowRoot},e.useSlots=function(){return n3().slots},e.useTemplateRef=function(e){let t=ry(),n=ty(null);return t&&Object.defineProperty(t.refs===m?t.refs={}:t.refs,e,{enumerable:!0,get:()=>n.value,set:e=>n.value=e}),n},e.useTransitionState=ni,e.vModelCheckbox=iN,e.vModelDynamic={created(e,t,n){iV(e,t,n,null,"created")},mounted(e,t,n){iV(e,t,n,null,"mounted")},beforeUpdate(e,t,n,l){iV(e,t,n,l,"beforeUpdate")},updated(e,t,n,l){iV(e,t,n,l,"updated")}},e.vModelRadio=iM,e.vModelSelect=iI,e.vModelText=iO,e.vShow={beforeMount(e,{value:t},{transition:n}){e[r2]="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):r8(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:l}){!t!=!n&&(l?t?(l.beforeEnter(e),r8(e,!0),l.enter(e)):l.leave(e,()=>{r8(e,!1)}):r8(e,t))},beforeUnmount(e,{value:t}){r8(e,t)}},e.version=rM,e.warn=y,e.watch=function(e,t,n){return lD(e,t,n)},e.watchEffect=function(e,t){return lD(e,null,t)},e.watchPostEffect=function(e,t){return lD(e,null,{flush:"post"})},e.watchSyncEffect=lL,e.withAsyncContext=function(e){let t=ry(),n=e();return rS(),L(n)&&(n=n.catch(e=>{throw rb(t),e})),[n,()=>rb(t)]},e.withCtx=t1,e.withDefaults=function(e,t){return null},e.withDirectives=function(e,t){if(null===tY)return e;let n=rA(tY),l=e.dirs||(e.dirs=[]);for(let e=0;e<t.length;e++){let[r,i,s,o=m]=t[e];r&&(N(r)&&(r={mounted:r,updated:r}),r.deep&&tI(i),l.push({dir:r,instance:n,value:i,oldValue:void 0,arg:s,modifiers:o}))}return e},e.withKeys=(e,t)=>{let n=e._withKeys||(e._withKeys={}),l=t.join(".");return n[l]||(n[l]=n=>{if(!("key"in n))return;let l=K(n.key);if(t.some(e=>e===l||iB[e]===l))return e(n)})},e.withMemo=function(e,t,n,l){let r=n[l];if(r&&rP(r,e))return r;let i=t();return i.memo=e.slice(),i.cacheIndex=l,n[l]=i},e.withModifiers=(e,t)=>{let n=e._withMods||(e._withMods={}),l=t.join(".");return n[l]||(n[l]=(n,...l)=>{for(let e=0;e<t.length;e++){let l=ij[t[e]];if(l&&l(n,t))return}return e(n,...l)})},e.withScopeId=e=>t1,e}({}); diff --git a/node_modules/@vue/runtime-dom/index.js b/node_modules/@vue/runtime-dom/index.js new file mode 100644 index 0000000..cdc29b2 --- /dev/null +++ b/node_modules/@vue/runtime-dom/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/runtime-dom.cjs.prod.js') +} else { + module.exports = require('./dist/runtime-dom.cjs.js') +} diff --git a/node_modules/@vue/runtime-dom/package.json b/node_modules/@vue/runtime-dom/package.json new file mode 100644 index 0000000..0acdd2e --- /dev/null +++ b/node_modules/@vue/runtime-dom/package.json @@ -0,0 +1,60 @@ +{ + "name": "@vue/runtime-dom", + "version": "3.5.18", + "description": "@vue/runtime-dom", + "main": "index.js", + "module": "dist/runtime-dom.esm-bundler.js", + "types": "dist/runtime-dom.d.ts", + "unpkg": "dist/runtime-dom.global.js", + "files": [ + "index.js", + "dist" + ], + "exports": { + ".": { + "types": "./dist/runtime-dom.d.ts", + "node": { + "production": "./dist/runtime-dom.cjs.prod.js", + "development": "./dist/runtime-dom.cjs.js", + "default": "./index.js" + }, + "module": "./dist/runtime-dom.esm-bundler.js", + "import": "./dist/runtime-dom.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, + "sideEffects": false, + "buildOptions": { + "name": "VueRuntimeDOM", + "formats": [ + "esm-bundler", + "esm-browser", + "cjs", + "global" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/runtime-dom" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-dom#readme", + "dependencies": { + "csstype": "^3.1.3", + "@vue/shared": "3.5.18", + "@vue/runtime-core": "3.5.18", + "@vue/reactivity": "3.5.18" + }, + "devDependencies": { + "@types/trusted-types": "^2.0.7" + } +} \ No newline at end of file diff --git a/node_modules/@vue/server-renderer/LICENSE b/node_modules/@vue/server-renderer/LICENSE new file mode 100644 index 0000000..15f1f7e --- /dev/null +++ b/node_modules/@vue/server-renderer/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018-present, Yuxi (Evan) You + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@vue/server-renderer/README.md b/node_modules/@vue/server-renderer/README.md new file mode 100644 index 0000000..55323e4 --- /dev/null +++ b/node_modules/@vue/server-renderer/README.md @@ -0,0 +1,178 @@ +# @vue/server-renderer + +**Note: as of 3.2.13+, this package is included as a dependency of the main `vue` package and can be accessed as `vue/server-renderer`. This means you no longer need to explicitly install this package and ensure its version match that of `vue`'s. Just use the `vue/server-renderer` deep import instead.** + +## Basic API + +### `renderToString` + +**Signature** + +```ts +function renderToString( + input: App | VNode, + context?: SSRContext, +): Promise<string> +``` + +**Usage** + +```js +const { createSSRApp } = require('vue') +const { renderToString } = require('@vue/server-renderer') + +const app = createSSRApp({ + data: () => ({ msg: 'hello' }), + template: `<div>{{ msg }}</div>`, +}) + +;(async () => { + const html = await renderToString(app) + console.log(html) +})() +``` + +### Handling Teleports + +If the rendered app contains teleports, the teleported content will not be part of the rendered string. Instead, they are exposed under the `teleports` property of the ssr context object: + +```js +const ctx = {} +const html = await renderToString(app, ctx) + +console.log(ctx.teleports) // { '#teleported': 'teleported content' } +``` + +## Streaming API + +### `renderToNodeStream` + +Renders input as a [Node.js Readable stream](https://nodejs.org/api/stream.html#stream_class_stream_readable). + +**Signature** + +```ts +function renderToNodeStream(input: App | VNode, context?: SSRContext): Readable +``` + +**Usage** + +```js +// inside a Node.js http handler +renderToNodeStream(app).pipe(res) +``` + +**Note:** This method is not supported in the ESM build of `@vue/server-renderer`, which is decoupled from Node.js environments. Use `pipeToNodeWritable` instead. + +### `pipeToNodeWritable` + +Render and pipe to an existing [Node.js Writable stream](https://nodejs.org/api/stream.html#stream_writable_streams) instance. + +**Signature** + +```ts +function pipeToNodeWritable( + input: App | VNode, + context: SSRContext = {}, + writable: Writable, +): void +``` + +**Usage** + +```js +// inside a Node.js http handler +pipeToNodeWritable(app, {}, res) +``` + +### `renderToWebStream` + +Renders input as a [Web ReadableStream](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API). + +**Signature** + +```ts +function renderToWebStream( + input: App | VNode, + context?: SSRContext, +): ReadableStream +``` + +**Usage** + +```js +// inside an environment with ReadableStream support +return new Response(renderToWebStream(app)) +``` + +**Note:** in environments that do not expose `ReadableStream` constructor in the global scope, `pipeToWebWritable` should be used instead. + +### `pipeToWebWritable` + +Render and pipe to an existing [Web WritableStream](https://developer.mozilla.org/en-US/docs/Web/API/WritableStream) instance. + +**Signature** + +```ts +function pipeToWebWritable( + input: App | VNode, + context: SSRContext = {}, + writable: WritableStream, +): void +``` + +**Usage** + +This is typically used in combination with [`TransformStream`](https://developer.mozilla.org/en-US/docs/Web/API/TransformStream): + +```js +// TransformStream is available in environments such as CloudFlare workers. +// in Node.js, TransformStream needs to be explicitly imported from 'stream/web' +const { readable, writable } = new TransformStream() +pipeToWebWritable(app, {}, writable) + +return new Response(readable) +``` + +### `renderToSimpleStream` + +Renders input in streaming mode using a simple readable interface. + +**Signature** + +```ts +function renderToSimpleStream( + input: App | VNode, + context: SSRContext, + options: SimpleReadable, +): SimpleReadable + +interface SimpleReadable { + push(content: string | null): void + destroy(err: any): void +} +``` + +**Usage** + +```js +let res = '' + +renderToSimpleStream( + app, + {}, + { + push(chunk) { + if (chunk === null) { + // done + console(`render complete: ${res}`) + } else { + res += chunk + } + }, + destroy(err) { + // error encountered + }, + }, +) +``` diff --git a/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js b/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js new file mode 100644 index 0000000..275ad57 --- /dev/null +++ b/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js @@ -0,0 +1,1151 @@ +/** +* @vue/server-renderer v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var Vue = require('vue'); +var shared = require('@vue/shared'); +var compilerSsr = require('@vue/compiler-ssr'); + +function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + for (var k in e) { + n[k] = e[k]; + } + } + n.default = e; + return Object.freeze(n); +} + +var Vue__namespace = /*#__PURE__*/_interopNamespaceDefault(Vue); + +const shouldIgnoreProp = /* @__PURE__ */ shared.makeMap( + `,key,ref,innerHTML,textContent,ref_key,ref_for` +); +function ssrRenderAttrs(props, tag) { + let ret = ""; + for (const key in props) { + if (shouldIgnoreProp(key) || shared.isOn(key) || tag === "textarea" && key === "value") { + continue; + } + const value = props[key]; + if (key === "class") { + ret += ` class="${ssrRenderClass(value)}"`; + } else if (key === "style") { + ret += ` style="${ssrRenderStyle(value)}"`; + } else if (key === "className") { + ret += ` class="${String(value)}"`; + } else { + ret += ssrRenderDynamicAttr(key, value, tag); + } + } + return ret; +} +function ssrRenderDynamicAttr(key, value, tag) { + if (!shared.isRenderableAttrValue(value)) { + return ``; + } + const attrKey = tag && (tag.indexOf("-") > 0 || shared.isSVGTag(tag)) ? key : shared.propsToAttrMap[key] || key.toLowerCase(); + if (shared.isBooleanAttr(attrKey)) { + return shared.includeBooleanAttr(value) ? ` ${attrKey}` : ``; + } else if (shared.isSSRSafeAttrName(attrKey)) { + return value === "" ? ` ${attrKey}` : ` ${attrKey}="${shared.escapeHtml(value)}"`; + } else { + console.warn( + `[@vue/server-renderer] Skipped rendering unsafe attribute name: ${attrKey}` + ); + return ``; + } +} +function ssrRenderAttr(key, value) { + if (!shared.isRenderableAttrValue(value)) { + return ``; + } + return ` ${key}="${shared.escapeHtml(value)}"`; +} +function ssrRenderClass(raw) { + return shared.escapeHtml(shared.normalizeClass(raw)); +} +function ssrRenderStyle(raw) { + if (!raw) { + return ""; + } + if (shared.isString(raw)) { + return shared.escapeHtml(raw); + } + const styles = shared.normalizeStyle(ssrResetCssVars(raw)); + return shared.escapeHtml(shared.stringifyStyle(styles)); +} +function ssrResetCssVars(raw) { + if (!shared.isArray(raw) && shared.isObject(raw)) { + const res = {}; + for (const key in raw) { + if (key.startsWith(":--")) { + res[key.slice(1)] = shared.normalizeCssVarValue(raw[key]); + } else { + res[key] = raw[key]; + } + } + return res; + } + return raw; +} + +function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) { + return renderComponentVNode( + Vue.createVNode(comp, props, children), + parentComponent, + slotScopeId + ); +} + +const { ensureValidVNode } = Vue.ssrUtils; +function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) { + push(`<!--[-->`); + ssrRenderSlotInner( + slots, + slotName, + slotProps, + fallbackRenderFn, + push, + parentComponent, + slotScopeId + ); + push(`<!--]-->`); +} +function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) { + const slotFn = slots[slotName]; + if (slotFn) { + const slotBuffer = []; + const bufferedPush = (item) => { + slotBuffer.push(item); + }; + const ret = slotFn( + slotProps, + bufferedPush, + parentComponent, + slotScopeId ? " " + slotScopeId : "" + ); + if (shared.isArray(ret)) { + const validSlotContent = ensureValidVNode(ret); + if (validSlotContent) { + renderVNodeChildren( + push, + validSlotContent, + parentComponent, + slotScopeId + ); + } else if (fallbackRenderFn) { + fallbackRenderFn(); + } else if (transition) { + push(`<!---->`); + } + } else { + let isEmptySlot = true; + if (transition) { + isEmptySlot = false; + } else { + for (let i = 0; i < slotBuffer.length; i++) { + if (!isComment(slotBuffer[i])) { + isEmptySlot = false; + break; + } + } + } + if (isEmptySlot) { + if (fallbackRenderFn) { + fallbackRenderFn(); + } + } else { + let start = 0; + let end = slotBuffer.length; + if (transition && slotBuffer[0] === "<!--[-->" && slotBuffer[end - 1] === "<!--]-->") { + start++; + end--; + } + if (start < end) { + for (let i = start; i < end; i++) { + push(slotBuffer[i]); + } + } else if (transition) { + push(`<!---->`); + } + } + } + } else if (fallbackRenderFn) { + fallbackRenderFn(); + } else if (transition) { + push(`<!---->`); + } +} +const commentTestRE = /^<!--[\s\S]*-->$/; +const commentRE = /<!--[^]*?-->/gm; +function isComment(item) { + if (typeof item !== "string" || !commentTestRE.test(item)) return false; + if (item.length <= 8) return true; + return !item.replace(commentRE, "").trim(); +} + +function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) { + parentPush("<!--teleport start-->"); + const context = parentComponent.appContext.provides[Vue.ssrContextKey]; + const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {}); + const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []); + const bufferIndex = targetBuffer.length; + let teleportContent; + if (disabled) { + contentRenderFn(parentPush); + teleportContent = `<!--teleport start anchor--><!--teleport anchor-->`; + } else { + const { getBuffer, push } = createBuffer(); + push(`<!--teleport start anchor-->`); + contentRenderFn(push); + push(`<!--teleport anchor-->`); + teleportContent = getBuffer(); + } + targetBuffer.splice(bufferIndex, 0, teleportContent); + parentPush("<!--teleport end-->"); +} + +function ssrInterpolate(value) { + return shared.escapeHtml(shared.toDisplayString(value)); +} + +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} + +function isRef(r) { + return r ? r["__v_isRef"] === true : false; +} + +const stack = []; +function pushWarningContext$1(vnode) { + stack.push(vnode); +} +function popWarningContext$1() { + stack.pop(); +} +let isWarning = false; +function warn$1(msg, ...args) { + if (isWarning) return; + isWarning = true; + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + // eslint-disable-next-line no-restricted-syntax + msg + args.map((a) => { + var _a, _b; + return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a); + }).join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + isWarning = false; +} +function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (shared.isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (shared.isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} + +const ErrorTypeStrings = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush", + [15]: "component update", + [16]: "app unmount cleanup function" +}; +function callWithErrorHandling(fn, instance, type, args) { + try { + return args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || shared.EMPTY_OBJ; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = ErrorTypeStrings[type] ; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + if (errorHandler) { + callWithErrorHandling(errorHandler, null, 10, [ + err, + exposedInstance, + errorInfo + ]); + return; + } + } + logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction); +} +function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) { + { + const info = ErrorTypeStrings[type]; + if (contextVNode) { + pushWarningContext$1(contextVNode); + } + warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext$1(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } +} + +{ + const g = shared.getGlobalThis(); + const registerGlobalSetter = (key, setter) => { + let setters; + if (!(setters = g[key])) setters = g[key] = []; + setters.push(setter); + return (v) => { + if (setters.length > 1) setters.forEach((set) => set(v)); + else setters[0](v); + }; + }; + registerGlobalSetter( + `__VUE_INSTANCE_SETTERS__`, + (v) => v + ); + registerGlobalSetter( + `__VUE_SSR_SETTERS__`, + (v) => v + ); +} +const classifyRE = /(?:^|[-_])(\w)/g; +const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, ""); +function getComponentName(Component, includeInferred = true) { + return shared.isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; +} +function formatComponentName(instance, Component, isRoot = false) { + let name = getComponentName(Component); + if (!name && Component.__file) { + const match = Component.__file.match(/([^/\\]+)\.\w+$/); + if (match) { + name = match[1]; + } + } + if (!name && instance && instance.parent) { + const inferFromRegistry = (registry) => { + for (const key in registry) { + if (registry[key] === Component) { + return key; + } + } + }; + name = inferFromRegistry( + instance.components || instance.parent.type.components + ) || inferFromRegistry(instance.appContext.components); + } + return name ? classify(name) : isRoot ? `App` : `Anonymous`; +} + +const warn = warn$1 ; + +function ssrRenderList(source, renderItem) { + if (shared.isArray(source) || shared.isString(source)) { + for (let i = 0, l = source.length; i < l; i++) { + renderItem(source[i], i); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn(`The v-for range expect an integer value but got ${source}.`); + return; + } + for (let i = 0; i < source; i++) { + renderItem(i + 1, i); + } + } else if (shared.isObject(source)) { + if (source[Symbol.iterator]) { + const arr = Array.from(source); + for (let i = 0, l = arr.length; i < l; i++) { + renderItem(arr[i], i); + } + } else { + const keys = Object.keys(source); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + renderItem(source[key], key, i); + } + } + } +} + +async function ssrRenderSuspense(push, { default: renderContent }) { + if (renderContent) { + renderContent(); + } else { + push(`<!---->`); + } +} + +function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) { + if (typeof dir !== "function" && dir.getSSRProps) { + return dir.getSSRProps( + { + dir, + instance: Vue.ssrUtils.getComponentPublicInstance(instance.$), + value, + oldValue: void 0, + arg, + modifiers + }, + null + ) || {}; + } + return {}; +} + +const ssrLooseEqual = shared.looseEqual; +function ssrLooseContain(arr, value) { + return shared.looseIndexOf(arr, value) > -1; +} +function ssrRenderDynamicModel(type, model, value) { + switch (type) { + case "radio": + return shared.looseEqual(model, value) ? " checked" : ""; + case "checkbox": + return (shared.isArray(model) ? ssrLooseContain(model, value) : model) ? " checked" : ""; + default: + return ssrRenderAttr("value", model); + } +} +function ssrGetDynamicModelProps(existingProps = {}, model) { + const { type, value } = existingProps; + switch (type) { + case "radio": + return shared.looseEqual(model, value) ? { checked: true } : null; + case "checkbox": + return (shared.isArray(model) ? ssrLooseContain(model, value) : model) ? { checked: true } : null; + default: + return { value: model }; + } +} + +var helpers = /*#__PURE__*/Object.freeze({ + __proto__: null, + ssrGetDirectiveProps: ssrGetDirectiveProps, + ssrGetDynamicModelProps: ssrGetDynamicModelProps, + ssrIncludeBooleanAttr: shared.includeBooleanAttr, + ssrInterpolate: ssrInterpolate, + ssrLooseContain: ssrLooseContain, + ssrLooseEqual: ssrLooseEqual, + ssrRenderAttr: ssrRenderAttr, + ssrRenderAttrs: ssrRenderAttrs, + ssrRenderClass: ssrRenderClass, + ssrRenderComponent: ssrRenderComponent, + ssrRenderDynamicAttr: ssrRenderDynamicAttr, + ssrRenderDynamicModel: ssrRenderDynamicModel, + ssrRenderList: ssrRenderList, + ssrRenderSlot: ssrRenderSlot, + ssrRenderSlotInner: ssrRenderSlotInner, + ssrRenderStyle: ssrRenderStyle, + ssrRenderSuspense: ssrRenderSuspense, + ssrRenderTeleport: ssrRenderTeleport, + ssrRenderVNode: renderVNode +}); + +const compileCache = /* @__PURE__ */ Object.create(null); +function ssrCompile(template, instance) { + const Component = instance.type; + const { isCustomElement, compilerOptions } = instance.appContext.config; + const { delimiters, compilerOptions: componentCompilerOptions } = Component; + const finalCompilerOptions = shared.extend( + shared.extend( + { + isCustomElement, + delimiters + }, + compilerOptions + ), + componentCompilerOptions + ); + finalCompilerOptions.isCustomElement = finalCompilerOptions.isCustomElement || shared.NO; + finalCompilerOptions.isNativeTag = finalCompilerOptions.isNativeTag || shared.NO; + const cacheKey = JSON.stringify( + { + template, + compilerOptions: finalCompilerOptions + }, + (key, value) => { + return shared.isFunction(value) ? value.toString() : value; + } + ); + const cached = compileCache[cacheKey]; + if (cached) { + return cached; + } + finalCompilerOptions.onError = (err) => { + { + const message = `[@vue/server-renderer] Template compilation error: ${err.message}`; + const codeFrame = err.loc && shared.generateCodeFrame( + template, + err.loc.start.offset, + err.loc.end.offset + ); + Vue.warn(codeFrame ? `${message} +${codeFrame}` : message); + } + }; + const { code } = compilerSsr.compile(template, finalCompilerOptions); + const requireMap = { + vue: Vue__namespace, + "vue/server-renderer": helpers + }; + const fakeRequire = (id) => requireMap[id]; + return compileCache[cacheKey] = Function("require", code)(fakeRequire); +} + +const { + createComponentInstance, + setCurrentRenderingInstance, + setupComponent, + renderComponentRoot, + normalizeVNode, + pushWarningContext, + popWarningContext +} = Vue.ssrUtils; +function createBuffer() { + let appendable = false; + const buffer = []; + return { + getBuffer() { + return buffer; + }, + push(item) { + const isStringItem = shared.isString(item); + if (appendable && isStringItem) { + buffer[buffer.length - 1] += item; + return; + } + buffer.push(item); + appendable = isStringItem; + if (shared.isPromise(item) || shared.isArray(item) && item.hasAsync) { + buffer.hasAsync = true; + } + } + }; +} +function renderComponentVNode(vnode, parentComponent = null, slotScopeId) { + const instance = vnode.component = createComponentInstance( + vnode, + parentComponent, + null + ); + pushWarningContext(vnode); + const res = setupComponent( + instance, + true + /* isSSR */ + ); + popWarningContext(); + const hasAsyncSetup = shared.isPromise(res); + let prefetches = instance.sp; + if (hasAsyncSetup || prefetches) { + const p = Promise.resolve(res).then(() => { + if (hasAsyncSetup) prefetches = instance.sp; + if (prefetches) { + return Promise.all( + prefetches.map((prefetch) => prefetch.call(instance.proxy)) + ); + } + }).catch(shared.NOOP); + return p.then(() => renderComponentSubTree(instance, slotScopeId)); + } else { + return renderComponentSubTree(instance, slotScopeId); + } +} +function renderComponentSubTree(instance, slotScopeId) { + pushWarningContext(instance.vnode); + const comp = instance.type; + const { getBuffer, push } = createBuffer(); + if (shared.isFunction(comp)) { + let root = renderComponentRoot(instance); + if (!comp.props) { + for (const key in instance.attrs) { + if (key.startsWith(`data-v-`)) { + (root.props || (root.props = {}))[key] = ``; + } + } + } + renderVNode(push, instance.subTree = root, instance, slotScopeId); + } else { + if ((!instance.render || instance.render === shared.NOOP) && !instance.ssrRender && !comp.ssrRender && shared.isString(comp.template)) { + comp.ssrRender = ssrCompile(comp.template, instance); + } + const ssrRender = instance.ssrRender || comp.ssrRender; + if (ssrRender) { + let attrs = instance.inheritAttrs !== false ? instance.attrs : void 0; + let hasCloned = false; + let cur = instance; + while (true) { + const scopeId = cur.vnode.scopeId; + if (scopeId) { + if (!hasCloned) { + attrs = { ...attrs }; + hasCloned = true; + } + attrs[scopeId] = ""; + } + const parent = cur.parent; + if (parent && parent.subTree && parent.subTree === cur.vnode) { + cur = parent; + } else { + break; + } + } + if (slotScopeId) { + if (!hasCloned) attrs = { ...attrs }; + const slotScopeIdList = slotScopeId.trim().split(" "); + for (let i = 0; i < slotScopeIdList.length; i++) { + attrs[slotScopeIdList[i]] = ""; + } + } + const prev = setCurrentRenderingInstance(instance); + try { + ssrRender( + instance.proxy, + push, + instance, + attrs, + // compiler-optimized bindings + instance.props, + instance.setupState, + instance.data, + instance.ctx + ); + } finally { + setCurrentRenderingInstance(prev); + } + } else if (instance.render && instance.render !== shared.NOOP) { + renderVNode( + push, + instance.subTree = renderComponentRoot(instance), + instance, + slotScopeId + ); + } else { + const componentName = comp.name || comp.__file || `<Anonymous>`; + Vue.warn(`Component ${componentName} is missing template or render function.`); + push(`<!---->`); + } + } + popWarningContext(); + return getBuffer(); +} +function renderVNode(push, vnode, parentComponent, slotScopeId) { + const { type, shapeFlag, children, dirs, props } = vnode; + if (dirs) { + vnode.props = applySSRDirectives(vnode, props, dirs); + } + switch (type) { + case Vue.Text: + push(shared.escapeHtml(children)); + break; + case Vue.Comment: + push( + children ? `<!--${shared.escapeHtmlComment(children)}-->` : `<!---->` + ); + break; + case Vue.Static: + push(children); + break; + case Vue.Fragment: + if (vnode.slotScopeIds) { + slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" "); + } + push(`<!--[-->`); + renderVNodeChildren( + push, + children, + parentComponent, + slotScopeId + ); + push(`<!--]-->`); + break; + default: + if (shapeFlag & 1) { + renderElementVNode(push, vnode, parentComponent, slotScopeId); + } else if (shapeFlag & 6) { + push(renderComponentVNode(vnode, parentComponent, slotScopeId)); + } else if (shapeFlag & 64) { + renderTeleportVNode(push, vnode, parentComponent, slotScopeId); + } else if (shapeFlag & 128) { + renderVNode(push, vnode.ssContent, parentComponent, slotScopeId); + } else { + Vue.warn( + "[@vue/server-renderer] Invalid VNode type:", + type, + `(${typeof type})` + ); + } + } +} +function renderVNodeChildren(push, children, parentComponent, slotScopeId) { + for (let i = 0; i < children.length; i++) { + renderVNode(push, normalizeVNode(children[i]), parentComponent, slotScopeId); + } +} +function renderElementVNode(push, vnode, parentComponent, slotScopeId) { + const tag = vnode.type; + let { props, children, shapeFlag, scopeId } = vnode; + let openTag = `<${tag}`; + if (props) { + openTag += ssrRenderAttrs(props, tag); + } + if (scopeId) { + openTag += ` ${scopeId}`; + } + let curParent = parentComponent; + let curVnode = vnode; + while (curParent && curVnode === curParent.subTree) { + curVnode = curParent.vnode; + if (curVnode.scopeId) { + openTag += ` ${curVnode.scopeId}`; + } + curParent = curParent.parent; + } + if (slotScopeId) { + openTag += ` ${slotScopeId}`; + } + push(openTag + `>`); + if (!shared.isVoidTag(tag)) { + let hasChildrenOverride = false; + if (props) { + if (props.innerHTML) { + hasChildrenOverride = true; + push(props.innerHTML); + } else if (props.textContent) { + hasChildrenOverride = true; + push(shared.escapeHtml(props.textContent)); + } else if (tag === "textarea" && props.value) { + hasChildrenOverride = true; + push(shared.escapeHtml(props.value)); + } + } + if (!hasChildrenOverride) { + if (shapeFlag & 8) { + push(shared.escapeHtml(children)); + } else if (shapeFlag & 16) { + renderVNodeChildren( + push, + children, + parentComponent, + slotScopeId + ); + } + } + push(`</${tag}>`); + } +} +function applySSRDirectives(vnode, rawProps, dirs) { + const toMerge = []; + for (let i = 0; i < dirs.length; i++) { + const binding = dirs[i]; + const { + dir: { getSSRProps } + } = binding; + if (getSSRProps) { + const props = getSSRProps(binding, vnode); + if (props) toMerge.push(props); + } + } + return Vue.mergeProps(rawProps || {}, ...toMerge); +} +function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) { + const target = vnode.props && vnode.props.to; + const disabled = vnode.props && vnode.props.disabled; + if (!target) { + if (!disabled) { + Vue.warn(`[@vue/server-renderer] Teleport is missing target prop.`); + } + return []; + } + if (!shared.isString(target)) { + Vue.warn( + `[@vue/server-renderer] Teleport target must be a query selector string.` + ); + return []; + } + ssrRenderTeleport( + push, + (push2) => { + renderVNodeChildren( + push2, + vnode.children, + parentComponent, + slotScopeId + ); + }, + target, + disabled || disabled === "", + parentComponent + ); +} + +const { isVNode: isVNode$1 } = Vue.ssrUtils; +function nestedUnrollBuffer(buffer, parentRet, startIndex) { + if (!buffer.hasAsync) { + return parentRet + unrollBufferSync$1(buffer); + } + let ret = parentRet; + for (let i = startIndex; i < buffer.length; i += 1) { + const item = buffer[i]; + if (shared.isString(item)) { + ret += item; + continue; + } + if (shared.isPromise(item)) { + return item.then((nestedItem) => { + buffer[i] = nestedItem; + return nestedUnrollBuffer(buffer, ret, i); + }); + } + const result = nestedUnrollBuffer(item, ret, 0); + if (shared.isPromise(result)) { + return result.then((nestedItem) => { + buffer[i] = nestedItem; + return nestedUnrollBuffer(buffer, "", i); + }); + } + ret = result; + } + return ret; +} +function unrollBuffer$1(buffer) { + return nestedUnrollBuffer(buffer, "", 0); +} +function unrollBufferSync$1(buffer) { + let ret = ""; + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isString(item)) { + ret += item; + } else { + ret += unrollBufferSync$1(item); + } + } + return ret; +} +async function renderToString(input, context = {}) { + if (isVNode$1(input)) { + return renderToString(Vue.createApp({ render: () => input }), context); + } + const vnode = Vue.createVNode(input._component, input._props); + vnode.appContext = input._context; + input.provide(Vue.ssrContextKey, context); + const buffer = await renderComponentVNode(vnode); + const result = await unrollBuffer$1(buffer); + await resolveTeleports(context); + if (context.__watcherHandles) { + for (const unwatch of context.__watcherHandles) { + unwatch(); + } + } + return result; +} +async function resolveTeleports(context) { + if (context.__teleportBuffers) { + context.teleports = context.teleports || {}; + for (const key in context.__teleportBuffers) { + context.teleports[key] = await unrollBuffer$1( + await Promise.all([context.__teleportBuffers[key]]) + ); + } + } +} + +const { isVNode } = Vue.ssrUtils; +async function unrollBuffer(buffer, stream) { + if (buffer.hasAsync) { + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isPromise(item)) { + item = await item; + } + if (shared.isString(item)) { + stream.push(item); + } else { + await unrollBuffer(item, stream); + } + } + } else { + unrollBufferSync(buffer, stream); + } +} +function unrollBufferSync(buffer, stream) { + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isString(item)) { + stream.push(item); + } else { + unrollBufferSync(item, stream); + } + } +} +function renderToSimpleStream(input, context, stream) { + if (isVNode(input)) { + return renderToSimpleStream( + Vue.createApp({ render: () => input }), + context, + stream + ); + } + const vnode = Vue.createVNode(input._component, input._props); + vnode.appContext = input._context; + input.provide(Vue.ssrContextKey, context); + Promise.resolve(renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => { + if (context.__watcherHandles) { + for (const unwatch of context.__watcherHandles) { + unwatch(); + } + } + }).then(() => stream.push(null)).catch((error) => { + stream.destroy(error); + }); + return stream; +} +function renderToStream(input, context = {}) { + console.warn( + `[@vue/server-renderer] renderToStream is deprecated - use renderToNodeStream instead.` + ); + return renderToNodeStream(input, context); +} +function renderToNodeStream(input, context = {}) { + const stream = new (require("node:stream")).Readable({ read() { + } }) ; + if (!stream) { + throw new Error( + `ESM build of renderToStream() does not support renderToNodeStream(). Use pipeToNodeWritable() with an existing Node.js Writable stream instance instead.` + ); + } + return renderToSimpleStream(input, context, stream); +} +function pipeToNodeWritable(input, context = {}, writable) { + renderToSimpleStream(input, context, { + push(content) { + if (content != null) { + writable.write(content); + } else { + writable.end(); + } + }, + destroy(err) { + writable.destroy(err); + } + }); +} +function renderToWebStream(input, context = {}) { + if (typeof ReadableStream !== "function") { + throw new Error( + `ReadableStream constructor is not available in the global scope. If the target environment does support web streams, consider using pipeToWebWritable() with an existing WritableStream instance instead.` + ); + } + const encoder = new TextEncoder(); + let cancelled = false; + return new ReadableStream({ + start(controller) { + renderToSimpleStream(input, context, { + push(content) { + if (cancelled) return; + if (content != null) { + controller.enqueue(encoder.encode(content)); + } else { + controller.close(); + } + }, + destroy(err) { + controller.error(err); + } + }); + }, + cancel() { + cancelled = true; + } + }); +} +function pipeToWebWritable(input, context = {}, writable) { + const writer = writable.getWriter(); + const encoder = new TextEncoder(); + let hasReady = false; + try { + hasReady = shared.isPromise(writer.ready); + } catch (e) { + } + renderToSimpleStream(input, context, { + async push(content) { + if (hasReady) { + await writer.ready; + } + if (content != null) { + return writer.write(encoder.encode(content)); + } else { + return writer.close(); + } + }, + destroy(err) { + console.log(err); + writer.close(); + } + }); +} + +Vue.initDirectivesForSSR(); + +exports.ssrIncludeBooleanAttr = shared.includeBooleanAttr; +exports.pipeToNodeWritable = pipeToNodeWritable; +exports.pipeToWebWritable = pipeToWebWritable; +exports.renderToNodeStream = renderToNodeStream; +exports.renderToSimpleStream = renderToSimpleStream; +exports.renderToStream = renderToStream; +exports.renderToString = renderToString; +exports.renderToWebStream = renderToWebStream; +exports.ssrGetDirectiveProps = ssrGetDirectiveProps; +exports.ssrGetDynamicModelProps = ssrGetDynamicModelProps; +exports.ssrInterpolate = ssrInterpolate; +exports.ssrLooseContain = ssrLooseContain; +exports.ssrLooseEqual = ssrLooseEqual; +exports.ssrRenderAttr = ssrRenderAttr; +exports.ssrRenderAttrs = ssrRenderAttrs; +exports.ssrRenderClass = ssrRenderClass; +exports.ssrRenderComponent = ssrRenderComponent; +exports.ssrRenderDynamicAttr = ssrRenderDynamicAttr; +exports.ssrRenderDynamicModel = ssrRenderDynamicModel; +exports.ssrRenderList = ssrRenderList; +exports.ssrRenderSlot = ssrRenderSlot; +exports.ssrRenderSlotInner = ssrRenderSlotInner; +exports.ssrRenderStyle = ssrRenderStyle; +exports.ssrRenderSuspense = ssrRenderSuspense; +exports.ssrRenderTeleport = ssrRenderTeleport; +exports.ssrRenderVNode = renderVNode; diff --git a/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js b/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js new file mode 100644 index 0000000..0f880b4 --- /dev/null +++ b/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js @@ -0,0 +1,879 @@ +/** +* @vue/server-renderer v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var Vue = require('vue'); +var shared = require('@vue/shared'); +var compilerSsr = require('@vue/compiler-ssr'); + +function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + for (var k in e) { + n[k] = e[k]; + } + } + n.default = e; + return Object.freeze(n); +} + +var Vue__namespace = /*#__PURE__*/_interopNamespaceDefault(Vue); + +const shouldIgnoreProp = /* @__PURE__ */ shared.makeMap( + `,key,ref,innerHTML,textContent,ref_key,ref_for` +); +function ssrRenderAttrs(props, tag) { + let ret = ""; + for (const key in props) { + if (shouldIgnoreProp(key) || shared.isOn(key) || tag === "textarea" && key === "value") { + continue; + } + const value = props[key]; + if (key === "class") { + ret += ` class="${ssrRenderClass(value)}"`; + } else if (key === "style") { + ret += ` style="${ssrRenderStyle(value)}"`; + } else if (key === "className") { + ret += ` class="${String(value)}"`; + } else { + ret += ssrRenderDynamicAttr(key, value, tag); + } + } + return ret; +} +function ssrRenderDynamicAttr(key, value, tag) { + if (!shared.isRenderableAttrValue(value)) { + return ``; + } + const attrKey = tag && (tag.indexOf("-") > 0 || shared.isSVGTag(tag)) ? key : shared.propsToAttrMap[key] || key.toLowerCase(); + if (shared.isBooleanAttr(attrKey)) { + return shared.includeBooleanAttr(value) ? ` ${attrKey}` : ``; + } else if (shared.isSSRSafeAttrName(attrKey)) { + return value === "" ? ` ${attrKey}` : ` ${attrKey}="${shared.escapeHtml(value)}"`; + } else { + console.warn( + `[@vue/server-renderer] Skipped rendering unsafe attribute name: ${attrKey}` + ); + return ``; + } +} +function ssrRenderAttr(key, value) { + if (!shared.isRenderableAttrValue(value)) { + return ``; + } + return ` ${key}="${shared.escapeHtml(value)}"`; +} +function ssrRenderClass(raw) { + return shared.escapeHtml(shared.normalizeClass(raw)); +} +function ssrRenderStyle(raw) { + if (!raw) { + return ""; + } + if (shared.isString(raw)) { + return shared.escapeHtml(raw); + } + const styles = shared.normalizeStyle(ssrResetCssVars(raw)); + return shared.escapeHtml(shared.stringifyStyle(styles)); +} +function ssrResetCssVars(raw) { + if (!shared.isArray(raw) && shared.isObject(raw)) { + const res = {}; + for (const key in raw) { + if (key.startsWith(":--")) { + res[key.slice(1)] = shared.normalizeCssVarValue(raw[key]); + } else { + res[key] = raw[key]; + } + } + return res; + } + return raw; +} + +function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) { + return renderComponentVNode( + Vue.createVNode(comp, props, children), + parentComponent, + slotScopeId + ); +} + +const { ensureValidVNode } = Vue.ssrUtils; +function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) { + push(`<!--[-->`); + ssrRenderSlotInner( + slots, + slotName, + slotProps, + fallbackRenderFn, + push, + parentComponent, + slotScopeId + ); + push(`<!--]-->`); +} +function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) { + const slotFn = slots[slotName]; + if (slotFn) { + const slotBuffer = []; + const bufferedPush = (item) => { + slotBuffer.push(item); + }; + const ret = slotFn( + slotProps, + bufferedPush, + parentComponent, + slotScopeId ? " " + slotScopeId : "" + ); + if (shared.isArray(ret)) { + const validSlotContent = ensureValidVNode(ret); + if (validSlotContent) { + renderVNodeChildren( + push, + validSlotContent, + parentComponent, + slotScopeId + ); + } else if (fallbackRenderFn) { + fallbackRenderFn(); + } else if (transition) { + push(`<!---->`); + } + } else { + let isEmptySlot = true; + if (transition) { + isEmptySlot = false; + } else { + for (let i = 0; i < slotBuffer.length; i++) { + if (!isComment(slotBuffer[i])) { + isEmptySlot = false; + break; + } + } + } + if (isEmptySlot) { + if (fallbackRenderFn) { + fallbackRenderFn(); + } + } else { + let start = 0; + let end = slotBuffer.length; + if (transition && slotBuffer[0] === "<!--[-->" && slotBuffer[end - 1] === "<!--]-->") { + start++; + end--; + } + if (start < end) { + for (let i = start; i < end; i++) { + push(slotBuffer[i]); + } + } else if (transition) { + push(`<!---->`); + } + } + } + } else if (fallbackRenderFn) { + fallbackRenderFn(); + } else if (transition) { + push(`<!---->`); + } +} +const commentTestRE = /^<!--[\s\S]*-->$/; +const commentRE = /<!--[^]*?-->/gm; +function isComment(item) { + if (typeof item !== "string" || !commentTestRE.test(item)) return false; + if (item.length <= 8) return true; + return !item.replace(commentRE, "").trim(); +} + +function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) { + parentPush("<!--teleport start-->"); + const context = parentComponent.appContext.provides[Vue.ssrContextKey]; + const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {}); + const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []); + const bufferIndex = targetBuffer.length; + let teleportContent; + if (disabled) { + contentRenderFn(parentPush); + teleportContent = `<!--teleport start anchor--><!--teleport anchor-->`; + } else { + const { getBuffer, push } = createBuffer(); + push(`<!--teleport start anchor-->`); + contentRenderFn(push); + push(`<!--teleport anchor-->`); + teleportContent = getBuffer(); + } + targetBuffer.splice(bufferIndex, 0, teleportContent); + parentPush("<!--teleport end-->"); +} + +function ssrInterpolate(value) { + return shared.escapeHtml(shared.toDisplayString(value)); +} + +function ssrRenderList(source, renderItem) { + if (shared.isArray(source) || shared.isString(source)) { + for (let i = 0, l = source.length; i < l; i++) { + renderItem(source[i], i); + } + } else if (typeof source === "number") { + for (let i = 0; i < source; i++) { + renderItem(i + 1, i); + } + } else if (shared.isObject(source)) { + if (source[Symbol.iterator]) { + const arr = Array.from(source); + for (let i = 0, l = arr.length; i < l; i++) { + renderItem(arr[i], i); + } + } else { + const keys = Object.keys(source); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + renderItem(source[key], key, i); + } + } + } +} + +async function ssrRenderSuspense(push, { default: renderContent }) { + if (renderContent) { + renderContent(); + } else { + push(`<!---->`); + } +} + +function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) { + if (typeof dir !== "function" && dir.getSSRProps) { + return dir.getSSRProps( + { + dir, + instance: Vue.ssrUtils.getComponentPublicInstance(instance.$), + value, + oldValue: void 0, + arg, + modifiers + }, + null + ) || {}; + } + return {}; +} + +const ssrLooseEqual = shared.looseEqual; +function ssrLooseContain(arr, value) { + return shared.looseIndexOf(arr, value) > -1; +} +function ssrRenderDynamicModel(type, model, value) { + switch (type) { + case "radio": + return shared.looseEqual(model, value) ? " checked" : ""; + case "checkbox": + return (shared.isArray(model) ? ssrLooseContain(model, value) : model) ? " checked" : ""; + default: + return ssrRenderAttr("value", model); + } +} +function ssrGetDynamicModelProps(existingProps = {}, model) { + const { type, value } = existingProps; + switch (type) { + case "radio": + return shared.looseEqual(model, value) ? { checked: true } : null; + case "checkbox": + return (shared.isArray(model) ? ssrLooseContain(model, value) : model) ? { checked: true } : null; + default: + return { value: model }; + } +} + +var helpers = /*#__PURE__*/Object.freeze({ + __proto__: null, + ssrGetDirectiveProps: ssrGetDirectiveProps, + ssrGetDynamicModelProps: ssrGetDynamicModelProps, + ssrIncludeBooleanAttr: shared.includeBooleanAttr, + ssrInterpolate: ssrInterpolate, + ssrLooseContain: ssrLooseContain, + ssrLooseEqual: ssrLooseEqual, + ssrRenderAttr: ssrRenderAttr, + ssrRenderAttrs: ssrRenderAttrs, + ssrRenderClass: ssrRenderClass, + ssrRenderComponent: ssrRenderComponent, + ssrRenderDynamicAttr: ssrRenderDynamicAttr, + ssrRenderDynamicModel: ssrRenderDynamicModel, + ssrRenderList: ssrRenderList, + ssrRenderSlot: ssrRenderSlot, + ssrRenderSlotInner: ssrRenderSlotInner, + ssrRenderStyle: ssrRenderStyle, + ssrRenderSuspense: ssrRenderSuspense, + ssrRenderTeleport: ssrRenderTeleport, + ssrRenderVNode: renderVNode +}); + +const compileCache = /* @__PURE__ */ Object.create(null); +function ssrCompile(template, instance) { + const Component = instance.type; + const { isCustomElement, compilerOptions } = instance.appContext.config; + const { delimiters, compilerOptions: componentCompilerOptions } = Component; + const finalCompilerOptions = shared.extend( + shared.extend( + { + isCustomElement, + delimiters + }, + compilerOptions + ), + componentCompilerOptions + ); + finalCompilerOptions.isCustomElement = finalCompilerOptions.isCustomElement || shared.NO; + finalCompilerOptions.isNativeTag = finalCompilerOptions.isNativeTag || shared.NO; + const cacheKey = JSON.stringify( + { + template, + compilerOptions: finalCompilerOptions + }, + (key, value) => { + return shared.isFunction(value) ? value.toString() : value; + } + ); + const cached = compileCache[cacheKey]; + if (cached) { + return cached; + } + finalCompilerOptions.onError = (err) => { + { + throw err; + } + }; + const { code } = compilerSsr.compile(template, finalCompilerOptions); + const requireMap = { + vue: Vue__namespace, + "vue/server-renderer": helpers + }; + const fakeRequire = (id) => requireMap[id]; + return compileCache[cacheKey] = Function("require", code)(fakeRequire); +} + +const { + createComponentInstance, + setCurrentRenderingInstance, + setupComponent, + renderComponentRoot, + normalizeVNode, + pushWarningContext, + popWarningContext +} = Vue.ssrUtils; +function createBuffer() { + let appendable = false; + const buffer = []; + return { + getBuffer() { + return buffer; + }, + push(item) { + const isStringItem = shared.isString(item); + if (appendable && isStringItem) { + buffer[buffer.length - 1] += item; + return; + } + buffer.push(item); + appendable = isStringItem; + if (shared.isPromise(item) || shared.isArray(item) && item.hasAsync) { + buffer.hasAsync = true; + } + } + }; +} +function renderComponentVNode(vnode, parentComponent = null, slotScopeId) { + const instance = vnode.component = createComponentInstance( + vnode, + parentComponent, + null + ); + const res = setupComponent( + instance, + true + /* isSSR */ + ); + const hasAsyncSetup = shared.isPromise(res); + let prefetches = instance.sp; + if (hasAsyncSetup || prefetches) { + const p = Promise.resolve(res).then(() => { + if (hasAsyncSetup) prefetches = instance.sp; + if (prefetches) { + return Promise.all( + prefetches.map((prefetch) => prefetch.call(instance.proxy)) + ); + } + }).catch(shared.NOOP); + return p.then(() => renderComponentSubTree(instance, slotScopeId)); + } else { + return renderComponentSubTree(instance, slotScopeId); + } +} +function renderComponentSubTree(instance, slotScopeId) { + const comp = instance.type; + const { getBuffer, push } = createBuffer(); + if (shared.isFunction(comp)) { + let root = renderComponentRoot(instance); + if (!comp.props) { + for (const key in instance.attrs) { + if (key.startsWith(`data-v-`)) { + (root.props || (root.props = {}))[key] = ``; + } + } + } + renderVNode(push, instance.subTree = root, instance, slotScopeId); + } else { + if ((!instance.render || instance.render === shared.NOOP) && !instance.ssrRender && !comp.ssrRender && shared.isString(comp.template)) { + comp.ssrRender = ssrCompile(comp.template, instance); + } + const ssrRender = instance.ssrRender || comp.ssrRender; + if (ssrRender) { + let attrs = instance.inheritAttrs !== false ? instance.attrs : void 0; + let hasCloned = false; + let cur = instance; + while (true) { + const scopeId = cur.vnode.scopeId; + if (scopeId) { + if (!hasCloned) { + attrs = { ...attrs }; + hasCloned = true; + } + attrs[scopeId] = ""; + } + const parent = cur.parent; + if (parent && parent.subTree && parent.subTree === cur.vnode) { + cur = parent; + } else { + break; + } + } + if (slotScopeId) { + if (!hasCloned) attrs = { ...attrs }; + const slotScopeIdList = slotScopeId.trim().split(" "); + for (let i = 0; i < slotScopeIdList.length; i++) { + attrs[slotScopeIdList[i]] = ""; + } + } + const prev = setCurrentRenderingInstance(instance); + try { + ssrRender( + instance.proxy, + push, + instance, + attrs, + // compiler-optimized bindings + instance.props, + instance.setupState, + instance.data, + instance.ctx + ); + } finally { + setCurrentRenderingInstance(prev); + } + } else if (instance.render && instance.render !== shared.NOOP) { + renderVNode( + push, + instance.subTree = renderComponentRoot(instance), + instance, + slotScopeId + ); + } else { + const componentName = comp.name || comp.__file || `<Anonymous>`; + Vue.warn(`Component ${componentName} is missing template or render function.`); + push(`<!---->`); + } + } + return getBuffer(); +} +function renderVNode(push, vnode, parentComponent, slotScopeId) { + const { type, shapeFlag, children, dirs, props } = vnode; + if (dirs) { + vnode.props = applySSRDirectives(vnode, props, dirs); + } + switch (type) { + case Vue.Text: + push(shared.escapeHtml(children)); + break; + case Vue.Comment: + push( + children ? `<!--${shared.escapeHtmlComment(children)}-->` : `<!---->` + ); + break; + case Vue.Static: + push(children); + break; + case Vue.Fragment: + if (vnode.slotScopeIds) { + slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" "); + } + push(`<!--[-->`); + renderVNodeChildren( + push, + children, + parentComponent, + slotScopeId + ); + push(`<!--]-->`); + break; + default: + if (shapeFlag & 1) { + renderElementVNode(push, vnode, parentComponent, slotScopeId); + } else if (shapeFlag & 6) { + push(renderComponentVNode(vnode, parentComponent, slotScopeId)); + } else if (shapeFlag & 64) { + renderTeleportVNode(push, vnode, parentComponent, slotScopeId); + } else if (shapeFlag & 128) { + renderVNode(push, vnode.ssContent, parentComponent, slotScopeId); + } else { + Vue.warn( + "[@vue/server-renderer] Invalid VNode type:", + type, + `(${typeof type})` + ); + } + } +} +function renderVNodeChildren(push, children, parentComponent, slotScopeId) { + for (let i = 0; i < children.length; i++) { + renderVNode(push, normalizeVNode(children[i]), parentComponent, slotScopeId); + } +} +function renderElementVNode(push, vnode, parentComponent, slotScopeId) { + const tag = vnode.type; + let { props, children, shapeFlag, scopeId } = vnode; + let openTag = `<${tag}`; + if (props) { + openTag += ssrRenderAttrs(props, tag); + } + if (scopeId) { + openTag += ` ${scopeId}`; + } + let curParent = parentComponent; + let curVnode = vnode; + while (curParent && curVnode === curParent.subTree) { + curVnode = curParent.vnode; + if (curVnode.scopeId) { + openTag += ` ${curVnode.scopeId}`; + } + curParent = curParent.parent; + } + if (slotScopeId) { + openTag += ` ${slotScopeId}`; + } + push(openTag + `>`); + if (!shared.isVoidTag(tag)) { + let hasChildrenOverride = false; + if (props) { + if (props.innerHTML) { + hasChildrenOverride = true; + push(props.innerHTML); + } else if (props.textContent) { + hasChildrenOverride = true; + push(shared.escapeHtml(props.textContent)); + } else if (tag === "textarea" && props.value) { + hasChildrenOverride = true; + push(shared.escapeHtml(props.value)); + } + } + if (!hasChildrenOverride) { + if (shapeFlag & 8) { + push(shared.escapeHtml(children)); + } else if (shapeFlag & 16) { + renderVNodeChildren( + push, + children, + parentComponent, + slotScopeId + ); + } + } + push(`</${tag}>`); + } +} +function applySSRDirectives(vnode, rawProps, dirs) { + const toMerge = []; + for (let i = 0; i < dirs.length; i++) { + const binding = dirs[i]; + const { + dir: { getSSRProps } + } = binding; + if (getSSRProps) { + const props = getSSRProps(binding, vnode); + if (props) toMerge.push(props); + } + } + return Vue.mergeProps(rawProps || {}, ...toMerge); +} +function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) { + const target = vnode.props && vnode.props.to; + const disabled = vnode.props && vnode.props.disabled; + if (!target) { + if (!disabled) { + Vue.warn(`[@vue/server-renderer] Teleport is missing target prop.`); + } + return []; + } + if (!shared.isString(target)) { + Vue.warn( + `[@vue/server-renderer] Teleport target must be a query selector string.` + ); + return []; + } + ssrRenderTeleport( + push, + (push2) => { + renderVNodeChildren( + push2, + vnode.children, + parentComponent, + slotScopeId + ); + }, + target, + disabled || disabled === "", + parentComponent + ); +} + +const { isVNode: isVNode$1 } = Vue.ssrUtils; +function nestedUnrollBuffer(buffer, parentRet, startIndex) { + if (!buffer.hasAsync) { + return parentRet + unrollBufferSync$1(buffer); + } + let ret = parentRet; + for (let i = startIndex; i < buffer.length; i += 1) { + const item = buffer[i]; + if (shared.isString(item)) { + ret += item; + continue; + } + if (shared.isPromise(item)) { + return item.then((nestedItem) => { + buffer[i] = nestedItem; + return nestedUnrollBuffer(buffer, ret, i); + }); + } + const result = nestedUnrollBuffer(item, ret, 0); + if (shared.isPromise(result)) { + return result.then((nestedItem) => { + buffer[i] = nestedItem; + return nestedUnrollBuffer(buffer, "", i); + }); + } + ret = result; + } + return ret; +} +function unrollBuffer$1(buffer) { + return nestedUnrollBuffer(buffer, "", 0); +} +function unrollBufferSync$1(buffer) { + let ret = ""; + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isString(item)) { + ret += item; + } else { + ret += unrollBufferSync$1(item); + } + } + return ret; +} +async function renderToString(input, context = {}) { + if (isVNode$1(input)) { + return renderToString(Vue.createApp({ render: () => input }), context); + } + const vnode = Vue.createVNode(input._component, input._props); + vnode.appContext = input._context; + input.provide(Vue.ssrContextKey, context); + const buffer = await renderComponentVNode(vnode); + const result = await unrollBuffer$1(buffer); + await resolveTeleports(context); + if (context.__watcherHandles) { + for (const unwatch of context.__watcherHandles) { + unwatch(); + } + } + return result; +} +async function resolveTeleports(context) { + if (context.__teleportBuffers) { + context.teleports = context.teleports || {}; + for (const key in context.__teleportBuffers) { + context.teleports[key] = await unrollBuffer$1( + await Promise.all([context.__teleportBuffers[key]]) + ); + } + } +} + +const { isVNode } = Vue.ssrUtils; +async function unrollBuffer(buffer, stream) { + if (buffer.hasAsync) { + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isPromise(item)) { + item = await item; + } + if (shared.isString(item)) { + stream.push(item); + } else { + await unrollBuffer(item, stream); + } + } + } else { + unrollBufferSync(buffer, stream); + } +} +function unrollBufferSync(buffer, stream) { + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isString(item)) { + stream.push(item); + } else { + unrollBufferSync(item, stream); + } + } +} +function renderToSimpleStream(input, context, stream) { + if (isVNode(input)) { + return renderToSimpleStream( + Vue.createApp({ render: () => input }), + context, + stream + ); + } + const vnode = Vue.createVNode(input._component, input._props); + vnode.appContext = input._context; + input.provide(Vue.ssrContextKey, context); + Promise.resolve(renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => { + if (context.__watcherHandles) { + for (const unwatch of context.__watcherHandles) { + unwatch(); + } + } + }).then(() => stream.push(null)).catch((error) => { + stream.destroy(error); + }); + return stream; +} +function renderToStream(input, context = {}) { + console.warn( + `[@vue/server-renderer] renderToStream is deprecated - use renderToNodeStream instead.` + ); + return renderToNodeStream(input, context); +} +function renderToNodeStream(input, context = {}) { + const stream = new (require("node:stream")).Readable({ read() { + } }) ; + if (!stream) { + throw new Error( + `ESM build of renderToStream() does not support renderToNodeStream(). Use pipeToNodeWritable() with an existing Node.js Writable stream instance instead.` + ); + } + return renderToSimpleStream(input, context, stream); +} +function pipeToNodeWritable(input, context = {}, writable) { + renderToSimpleStream(input, context, { + push(content) { + if (content != null) { + writable.write(content); + } else { + writable.end(); + } + }, + destroy(err) { + writable.destroy(err); + } + }); +} +function renderToWebStream(input, context = {}) { + if (typeof ReadableStream !== "function") { + throw new Error( + `ReadableStream constructor is not available in the global scope. If the target environment does support web streams, consider using pipeToWebWritable() with an existing WritableStream instance instead.` + ); + } + const encoder = new TextEncoder(); + let cancelled = false; + return new ReadableStream({ + start(controller) { + renderToSimpleStream(input, context, { + push(content) { + if (cancelled) return; + if (content != null) { + controller.enqueue(encoder.encode(content)); + } else { + controller.close(); + } + }, + destroy(err) { + controller.error(err); + } + }); + }, + cancel() { + cancelled = true; + } + }); +} +function pipeToWebWritable(input, context = {}, writable) { + const writer = writable.getWriter(); + const encoder = new TextEncoder(); + let hasReady = false; + try { + hasReady = shared.isPromise(writer.ready); + } catch (e) { + } + renderToSimpleStream(input, context, { + async push(content) { + if (hasReady) { + await writer.ready; + } + if (content != null) { + return writer.write(encoder.encode(content)); + } else { + return writer.close(); + } + }, + destroy(err) { + console.log(err); + writer.close(); + } + }); +} + +Vue.initDirectivesForSSR(); + +exports.ssrIncludeBooleanAttr = shared.includeBooleanAttr; +exports.pipeToNodeWritable = pipeToNodeWritable; +exports.pipeToWebWritable = pipeToWebWritable; +exports.renderToNodeStream = renderToNodeStream; +exports.renderToSimpleStream = renderToSimpleStream; +exports.renderToStream = renderToStream; +exports.renderToString = renderToString; +exports.renderToWebStream = renderToWebStream; +exports.ssrGetDirectiveProps = ssrGetDirectiveProps; +exports.ssrGetDynamicModelProps = ssrGetDynamicModelProps; +exports.ssrInterpolate = ssrInterpolate; +exports.ssrLooseContain = ssrLooseContain; +exports.ssrLooseEqual = ssrLooseEqual; +exports.ssrRenderAttr = ssrRenderAttr; +exports.ssrRenderAttrs = ssrRenderAttrs; +exports.ssrRenderClass = ssrRenderClass; +exports.ssrRenderComponent = ssrRenderComponent; +exports.ssrRenderDynamicAttr = ssrRenderDynamicAttr; +exports.ssrRenderDynamicModel = ssrRenderDynamicModel; +exports.ssrRenderList = ssrRenderList; +exports.ssrRenderSlot = ssrRenderSlot; +exports.ssrRenderSlotInner = ssrRenderSlotInner; +exports.ssrRenderStyle = ssrRenderStyle; +exports.ssrRenderSuspense = ssrRenderSuspense; +exports.ssrRenderTeleport = ssrRenderTeleport; +exports.ssrRenderVNode = renderVNode; diff --git a/node_modules/@vue/server-renderer/dist/server-renderer.d.ts b/node_modules/@vue/server-renderer/dist/server-renderer.d.ts new file mode 100644 index 0000000..40f9ccc --- /dev/null +++ b/node_modules/@vue/server-renderer/dist/server-renderer.d.ts @@ -0,0 +1,65 @@ +import { VNode, ComponentInternalInstance, App, Slots, Component, ComponentPublicInstance, Directive } from 'vue'; +import { Readable, Writable } from 'node:stream'; +export { includeBooleanAttr as ssrIncludeBooleanAttr } from '@vue/shared'; + +type SSRBuffer = SSRBufferItem[] & { + hasAsync?: boolean; +}; +type SSRBufferItem = string | SSRBuffer | Promise<SSRBuffer>; +type PushFn = (item: SSRBufferItem) => void; +type Props = Record<string, unknown>; +export type SSRContext = { + [key: string]: any; + teleports?: Record<string, string>; +}; +export declare function renderVNode(push: PushFn, vnode: VNode, parentComponent: ComponentInternalInstance, slotScopeId?: string): void; + +export declare function renderToString(input: App | VNode, context?: SSRContext): Promise<string>; + +export interface SimpleReadable { + push(chunk: string | null): void; + destroy(err: any): void; +} +export declare function renderToSimpleStream<T extends SimpleReadable>(input: App | VNode, context: SSRContext, stream: T): T; +/** + * @deprecated + */ +export declare function renderToStream(input: App | VNode, context?: SSRContext): Readable; +export declare function renderToNodeStream(input: App | VNode, context?: SSRContext): Readable; +export declare function pipeToNodeWritable(input: App | VNode, context: SSRContext | undefined, writable: Writable): void; +export declare function renderToWebStream(input: App | VNode, context?: SSRContext): ReadableStream; +export declare function pipeToWebWritable(input: App | VNode, context: SSRContext | undefined, writable: WritableStream): void; + +type SSRSlots = Record<string, SSRSlot>; +type SSRSlot = (props: Props, push: PushFn, parentComponent: ComponentInternalInstance | null, scopeId: string | null) => void; +export declare function ssrRenderSlot(slots: Slots | SSRSlots, slotName: string, slotProps: Props, fallbackRenderFn: (() => void) | null, push: PushFn, parentComponent: ComponentInternalInstance, slotScopeId?: string): void; +export declare function ssrRenderSlotInner(slots: Slots | SSRSlots, slotName: string, slotProps: Props, fallbackRenderFn: (() => void) | null, push: PushFn, parentComponent: ComponentInternalInstance, slotScopeId?: string, transition?: boolean): void; + +export declare function ssrRenderComponent(comp: Component, props?: Props | null, children?: Slots | SSRSlots | null, parentComponent?: ComponentInternalInstance | null, slotScopeId?: string): SSRBuffer | Promise<SSRBuffer>; + +export declare function ssrRenderTeleport(parentPush: PushFn, contentRenderFn: (push: PushFn) => void, target: string, disabled: boolean, parentComponent: ComponentInternalInstance): void; + +export declare function ssrRenderAttrs(props: Record<string, unknown>, tag?: string): string; +export declare function ssrRenderDynamicAttr(key: string, value: unknown, tag?: string): string; +export declare function ssrRenderAttr(key: string, value: unknown): string; +export declare function ssrRenderClass(raw: unknown): string; +export declare function ssrRenderStyle(raw: unknown): string; + +export declare function ssrInterpolate(value: unknown): string; + +export declare function ssrRenderList(source: unknown, renderItem: (value: unknown, key: string | number, index?: number) => void): void; + +export declare function ssrRenderSuspense(push: PushFn, { default: renderContent }: Record<string, (() => void) | undefined>): Promise<void>; + +export declare function ssrGetDirectiveProps(instance: ComponentPublicInstance, dir: Directive, value?: any, arg?: string, modifiers?: Record<string, boolean>): Record<string, any>; + +export declare const ssrLooseEqual: (a: unknown, b: unknown) => boolean; +export declare function ssrLooseContain(arr: unknown[], value: unknown): boolean; +export declare function ssrRenderDynamicModel(type: unknown, model: unknown, value: unknown): string; +export declare function ssrGetDynamicModelProps(existingProps: any, model: unknown): { + checked: true; +} | { + value: any; +} | null; + +export { renderVNode as ssrRenderVNode }; diff --git a/node_modules/@vue/server-renderer/dist/server-renderer.esm-browser.js b/node_modules/@vue/server-renderer/dist/server-renderer.esm-browser.js new file mode 100644 index 0000000..f6e9881 --- /dev/null +++ b/node_modules/@vue/server-renderer/dist/server-renderer.esm-browser.js @@ -0,0 +1,8468 @@ +/** +* @vue/server-renderer v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function makeMap(str) { + const map = /* @__PURE__ */ Object.create(null); + for (const key of str.split(",")) map[key] = 1; + return (val) => val in map; +} + +const EMPTY_OBJ = Object.freeze({}) ; +const EMPTY_ARR = Object.freeze([]) ; +const NOOP = () => { +}; +const NO = () => false; +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +const isModelListener = (key) => key.startsWith("onUpdate:"); +const extend = Object.assign; +const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +const hasOwnProperty$1 = Object.prototype.hasOwnProperty; +const hasOwn = (val, key) => hasOwnProperty$1.call(val, key); +const isArray = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isDate = (val) => toTypeString(val) === "[object Date]"; +const isFunction = (val) => typeof val === "function"; +const isString = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject = (val) => val !== null && typeof val === "object"; +const isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +const objectToString = Object.prototype.toString; +const toTypeString = (value) => objectToString.call(value); +const toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +const isPlainObject = (val) => toTypeString(val) === "[object Object]"; +const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction( + (str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); + } +); +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction( + (str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; + } +); +const hasChanged = (value, oldValue) => !Object.is(value, oldValue); +const invokeArrayFns = (fns, ...arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](...arg); + } +}; +const def = (obj, key, value, writable = false) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + writable, + value + }); +}; +const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +let _globalThis; +const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; + +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } +} +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function stringifyStyle(styles) { + if (!styles) return ""; + if (isString(styles)) return styles; + let ret = ""; + for (const key in styles) { + const value = styles[key]; + if (isString(value) || typeof value === "number") { + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + ret += `${normalizedKey}:${value};`; + } + } + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} + +const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; +const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); +const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); +const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); +const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + +const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); +const isBooleanAttr = /* @__PURE__ */ makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/; +const attrValidationCache = {}; +function isSSRSafeAttrName(name) { + if (attrValidationCache.hasOwnProperty(name)) { + return attrValidationCache[name]; + } + const isUnsafe = unsafeAttrCharRE.test(name); + if (isUnsafe) { + console.error(`unsafe attribute name: ${name}`); + } + return attrValidationCache[name] = !isUnsafe; +} +const propsToAttrMap = { + acceptCharset: "accept-charset", + className: "class", + htmlFor: "for", + httpEquiv: "http-equiv" +}; +function isRenderableAttrValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; +} + +const escapeRE = /["'&<>]/; +function escapeHtml(string) { + const str = "" + string; + const match = escapeRE.exec(str); + if (!match) { + return str; + } + let html = ""; + let escaped; + let index; + let lastIndex = 0; + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + escaped = """; + break; + case 38: + escaped = "&"; + break; + case 39: + escaped = "'"; + break; + case 60: + escaped = "<"; + break; + case 62: + escaped = ">"; + break; + default: + continue; + } + if (lastIndex !== index) { + html += str.slice(lastIndex, index); + } + lastIndex = index + 1; + html += escaped; + } + return lastIndex !== index ? html + str.slice(lastIndex, index) : html; +} +const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g; +function escapeHtmlComment(src) { + return src.replace(commentStripRE, ""); +} + +function looseCompareArrays(a, b) { + if (a.length !== b.length) return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; +} +function looseEqual(a, b) { + if (a === b) return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} + +const isRef$1 = (val) => { + return !!(val && val["__v_isRef"] === true); +}; +const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef$1(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val); +}; +const replacer = (_key, val) => { + if (isRef$1(val)) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce( + (entries, [key, val2], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) + }; + } else if (isSymbol(val)) { + return stringifySymbol(val); + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; +const stringifySymbol = (v, i = "") => { + var _a; + return ( + // Symbol.description in es2019+ so we need to cast here to pass + // the lib: es2016 check + isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v + ); +}; + +function normalizeCssVarValue(value) { + if (value == null) { + return "initial"; + } + if (typeof value === "string") { + return value === "" ? " " : value; + } + if (typeof value !== "number" || !Number.isFinite(value)) { + { + console.warn( + "[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:", + value + ); + } + } + return String(value); +} + +function warn$2(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); +} + +let activeEffectScope; +class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal track `on` calls, allow `on` call multiple times + */ + this._on = 0; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this._isPaused = false; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + pause() { + if (this._active) { + this._isPaused = true; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].pause(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].pause(); + } + } + } + /** + * Resumes the effect scope, including all child scopes and effects. + */ + resume() { + if (this._active) { + if (this._isPaused) { + this._isPaused = false; + let i, l; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].resume(); + } + } + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].resume(); + } + } + } + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else { + warn$2(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + if (++this._on === 1) { + this.prevScope = activeEffectScope; + activeEffectScope = this; + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + if (this._on > 0 && --this._on === 0) { + activeEffectScope = this.prevScope; + this.prevScope = void 0; + } + } + stop(fromParent) { + if (this._active) { + this._active = false; + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + this.effects.length = 0; + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + this.cleanups.length = 0; + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + this.scopes.length = 0; + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + } + } +} +function getCurrentScope() { + return activeEffectScope; +} + +let activeSub; +const pausedQueueEffects = /* @__PURE__ */ new WeakSet(); +class ReactiveEffect { + constructor(fn) { + this.fn = fn; + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 1 | 4; + /** + * @internal + */ + this.next = void 0; + /** + * @internal + */ + this.cleanup = void 0; + this.scheduler = void 0; + if (activeEffectScope && activeEffectScope.active) { + activeEffectScope.effects.push(this); + } + } + pause() { + this.flags |= 64; + } + resume() { + if (this.flags & 64) { + this.flags &= -65; + if (pausedQueueEffects.has(this)) { + pausedQueueEffects.delete(this); + this.trigger(); + } + } + } + /** + * @internal + */ + notify() { + if (this.flags & 2 && !(this.flags & 32)) { + return; + } + if (!(this.flags & 8)) { + batch(this); + } + } + run() { + if (!(this.flags & 1)) { + return this.fn(); + } + this.flags |= 2; + cleanupEffect(this); + prepareDeps(this); + const prevEffect = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = this; + shouldTrack = true; + try { + return this.fn(); + } finally { + if (activeSub !== this) { + warn$2( + "Active effect was not restored correctly - this is likely a Vue internal bug." + ); + } + cleanupDeps(this); + activeSub = prevEffect; + shouldTrack = prevShouldTrack; + this.flags &= -3; + } + } + stop() { + if (this.flags & 1) { + for (let link = this.deps; link; link = link.nextDep) { + removeSub(link); + } + this.deps = this.depsTail = void 0; + cleanupEffect(this); + this.onStop && this.onStop(); + this.flags &= -2; + } + } + trigger() { + if (this.flags & 64) { + pausedQueueEffects.add(this); + } else if (this.scheduler) { + this.scheduler(); + } else { + this.runIfDirty(); + } + } + /** + * @internal + */ + runIfDirty() { + if (isDirty(this)) { + this.run(); + } + } + get dirty() { + return isDirty(this); + } +} +let batchDepth = 0; +let batchedSub; +let batchedComputed; +function batch(sub, isComputed = false) { + sub.flags |= 8; + if (isComputed) { + sub.next = batchedComputed; + batchedComputed = sub; + return; + } + sub.next = batchedSub; + batchedSub = sub; +} +function startBatch() { + batchDepth++; +} +function endBatch() { + if (--batchDepth > 0) { + return; + } + if (batchedComputed) { + let e = batchedComputed; + batchedComputed = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + e = next; + } + } + let error; + while (batchedSub) { + let e = batchedSub; + batchedSub = void 0; + while (e) { + const next = e.next; + e.next = void 0; + e.flags &= -9; + if (e.flags & 1) { + try { + ; + e.trigger(); + } catch (err) { + if (!error) error = err; + } + } + e = next; + } + } + if (error) throw error; +} +function prepareDeps(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + link.version = -1; + link.prevActiveLink = link.dep.activeLink; + link.dep.activeLink = link; + } +} +function cleanupDeps(sub) { + let head; + let tail = sub.depsTail; + let link = tail; + while (link) { + const prev = link.prevDep; + if (link.version === -1) { + if (link === tail) tail = prev; + removeSub(link); + removeDep(link); + } else { + head = link; + } + link.dep.activeLink = link.prevActiveLink; + link.prevActiveLink = void 0; + link = prev; + } + sub.deps = head; + sub.depsTail = tail; +} +function isDirty(sub) { + for (let link = sub.deps; link; link = link.nextDep) { + if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) { + return true; + } + } + if (sub._dirty) { + return true; + } + return false; +} +function refreshComputed(computed) { + if (computed.flags & 4 && !(computed.flags & 16)) { + return; + } + computed.flags &= -17; + if (computed.globalVersion === globalVersion) { + return; + } + computed.globalVersion = globalVersion; + if (!computed.isSSR && computed.flags & 128 && (!computed.deps && !computed._dirty || !isDirty(computed))) { + return; + } + computed.flags |= 2; + const dep = computed.dep; + const prevSub = activeSub; + const prevShouldTrack = shouldTrack; + activeSub = computed; + shouldTrack = true; + try { + prepareDeps(computed); + const value = computed.fn(computed._value); + if (dep.version === 0 || hasChanged(value, computed._value)) { + computed.flags |= 128; + computed._value = value; + dep.version++; + } + } catch (err) { + dep.version++; + throw err; + } finally { + activeSub = prevSub; + shouldTrack = prevShouldTrack; + cleanupDeps(computed); + computed.flags &= -3; + } +} +function removeSub(link, soft = false) { + const { dep, prevSub, nextSub } = link; + if (prevSub) { + prevSub.nextSub = nextSub; + link.prevSub = void 0; + } + if (nextSub) { + nextSub.prevSub = prevSub; + link.nextSub = void 0; + } + if (dep.subsHead === link) { + dep.subsHead = nextSub; + } + if (dep.subs === link) { + dep.subs = prevSub; + if (!prevSub && dep.computed) { + dep.computed.flags &= -5; + for (let l = dep.computed.deps; l; l = l.nextDep) { + removeSub(l, true); + } + } + } + if (!soft && !--dep.sc && dep.map) { + dep.map.delete(dep.key); + } +} +function removeDep(link) { + const { prevDep, nextDep } = link; + if (prevDep) { + prevDep.nextDep = nextDep; + link.prevDep = void 0; + } + if (nextDep) { + nextDep.prevDep = prevDep; + link.nextDep = void 0; + } +} +let shouldTrack = true; +const trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function cleanupEffect(e) { + const { cleanup } = e; + e.cleanup = void 0; + if (cleanup) { + const prevSub = activeSub; + activeSub = void 0; + try { + cleanup(); + } finally { + activeSub = prevSub; + } + } +} + +let globalVersion = 0; +class Link { + constructor(sub, dep) { + this.sub = sub; + this.dep = dep; + this.version = dep.version; + this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; + } +} +class Dep { + // TODO isolatedDeclarations "__v_skip" + constructor(computed) { + this.computed = computed; + this.version = 0; + /** + * Link between this dep and the current active effect + */ + this.activeLink = void 0; + /** + * Doubly linked list representing the subscribing effects (tail) + */ + this.subs = void 0; + /** + * For object property deps cleanup + */ + this.map = void 0; + this.key = void 0; + /** + * Subscriber counter + */ + this.sc = 0; + /** + * @internal + */ + this.__v_skip = true; + { + this.subsHead = void 0; + } + } + track(debugInfo) { + if (!activeSub || !shouldTrack || activeSub === this.computed) { + return; + } + let link = this.activeLink; + if (link === void 0 || link.sub !== activeSub) { + link = this.activeLink = new Link(activeSub, this); + if (!activeSub.deps) { + activeSub.deps = activeSub.depsTail = link; + } else { + link.prevDep = activeSub.depsTail; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + } + addSub(link); + } else if (link.version === -1) { + link.version = this.version; + if (link.nextDep) { + const next = link.nextDep; + next.prevDep = link.prevDep; + if (link.prevDep) { + link.prevDep.nextDep = next; + } + link.prevDep = activeSub.depsTail; + link.nextDep = void 0; + activeSub.depsTail.nextDep = link; + activeSub.depsTail = link; + if (activeSub.deps === link) { + activeSub.deps = next; + } + } + } + if (activeSub.onTrack) { + activeSub.onTrack( + extend( + { + effect: activeSub + }, + debugInfo + ) + ); + } + return link; + } + trigger(debugInfo) { + this.version++; + globalVersion++; + this.notify(debugInfo); + } + notify(debugInfo) { + startBatch(); + try { + if (true) { + for (let head = this.subsHead; head; head = head.nextSub) { + if (head.sub.onTrigger && !(head.sub.flags & 8)) { + head.sub.onTrigger( + extend( + { + effect: head.sub + }, + debugInfo + ) + ); + } + } + } + for (let link = this.subs; link; link = link.prevSub) { + if (link.sub.notify()) { + ; + link.sub.dep.notify(); + } + } + } finally { + endBatch(); + } + } +} +function addSub(link) { + link.dep.sc++; + if (link.sub.flags & 4) { + const computed = link.dep.computed; + if (computed && !link.dep.subs) { + computed.flags |= 4 | 16; + for (let l = computed.deps; l; l = l.nextDep) { + addSub(l); + } + } + const currentTail = link.dep.subs; + if (currentTail !== link) { + link.prevSub = currentTail; + if (currentTail) currentTail.nextSub = link; + } + if (link.dep.subsHead === void 0) { + link.dep.subsHead = link; + } + link.dep.subs = link; + } +} +const targetMap = /* @__PURE__ */ new WeakMap(); +const ITERATE_KEY = Symbol( + "Object iterate" +); +const MAP_KEY_ITERATE_KEY = Symbol( + "Map keys iterate" +); +const ARRAY_ITERATE_KEY = Symbol( + "Array iterate" +); +function track(target, type, key) { + if (shouldTrack && activeSub) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = new Dep()); + dep.map = depsMap; + dep.key = key; + } + { + dep.track({ + target, + type, + key + }); + } + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + globalVersion++; + return; + } + const run = (dep) => { + if (dep) { + { + dep.trigger({ + target, + type, + key, + newValue, + oldValue, + oldTarget + }); + } + } + }; + startBatch(); + if (type === "clear") { + depsMap.forEach(run); + } else { + const targetIsArray = isArray(target); + const isArrayIndex = targetIsArray && isIntegerKey(key); + if (targetIsArray && key === "length") { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) { + run(dep); + } + }); + } else { + if (key !== void 0 || depsMap.has(void 0)) { + run(depsMap.get(key)); + } + if (isArrayIndex) { + run(depsMap.get(ARRAY_ITERATE_KEY)); + } + switch (type) { + case "add": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isArrayIndex) { + run(depsMap.get("length")); + } + break; + case "delete": + if (!targetIsArray) { + run(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + run(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + run(depsMap.get(ITERATE_KEY)); + } + break; + } + } + } + endBatch(); +} + +function reactiveReadArray(array) { + const raw = toRaw(array); + if (raw === array) return raw; + track(raw, "iterate", ARRAY_ITERATE_KEY); + return isShallow(array) ? raw : raw.map(toReactive); +} +function shallowReadArray(arr) { + track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY); + return arr; +} +const arrayInstrumentations = { + __proto__: null, + [Symbol.iterator]() { + return iterator(this, Symbol.iterator, toReactive); + }, + concat(...args) { + return reactiveReadArray(this).concat( + ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x) + ); + }, + entries() { + return iterator(this, "entries", (value) => { + value[1] = toReactive(value[1]); + return value; + }); + }, + every(fn, thisArg) { + return apply(this, "every", fn, thisArg, void 0, arguments); + }, + filter(fn, thisArg) { + return apply(this, "filter", fn, thisArg, (v) => v.map(toReactive), arguments); + }, + find(fn, thisArg) { + return apply(this, "find", fn, thisArg, toReactive, arguments); + }, + findIndex(fn, thisArg) { + return apply(this, "findIndex", fn, thisArg, void 0, arguments); + }, + findLast(fn, thisArg) { + return apply(this, "findLast", fn, thisArg, toReactive, arguments); + }, + findLastIndex(fn, thisArg) { + return apply(this, "findLastIndex", fn, thisArg, void 0, arguments); + }, + // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement + forEach(fn, thisArg) { + return apply(this, "forEach", fn, thisArg, void 0, arguments); + }, + includes(...args) { + return searchProxy(this, "includes", args); + }, + indexOf(...args) { + return searchProxy(this, "indexOf", args); + }, + join(separator) { + return reactiveReadArray(this).join(separator); + }, + // keys() iterator only reads `length`, no optimisation required + lastIndexOf(...args) { + return searchProxy(this, "lastIndexOf", args); + }, + map(fn, thisArg) { + return apply(this, "map", fn, thisArg, void 0, arguments); + }, + pop() { + return noTracking(this, "pop"); + }, + push(...args) { + return noTracking(this, "push", args); + }, + reduce(fn, ...args) { + return reduce(this, "reduce", fn, args); + }, + reduceRight(fn, ...args) { + return reduce(this, "reduceRight", fn, args); + }, + shift() { + return noTracking(this, "shift"); + }, + // slice could use ARRAY_ITERATE but also seems to beg for range tracking + some(fn, thisArg) { + return apply(this, "some", fn, thisArg, void 0, arguments); + }, + splice(...args) { + return noTracking(this, "splice", args); + }, + toReversed() { + return reactiveReadArray(this).toReversed(); + }, + toSorted(comparer) { + return reactiveReadArray(this).toSorted(comparer); + }, + toSpliced(...args) { + return reactiveReadArray(this).toSpliced(...args); + }, + unshift(...args) { + return noTracking(this, "unshift", args); + }, + values() { + return iterator(this, "values", toReactive); + } +}; +function iterator(self, method, wrapValue) { + const arr = shallowReadArray(self); + const iter = arr[method](); + if (arr !== self && !isShallow(self)) { + iter._next = iter.next; + iter.next = () => { + const result = iter._next(); + if (result.value) { + result.value = wrapValue(result.value); + } + return result; + }; + } + return iter; +} +const arrayProto = Array.prototype; +function apply(self, method, fn, thisArg, wrappedRetFn, args) { + const arr = shallowReadArray(self); + const needsWrap = arr !== self && !isShallow(self); + const methodFn = arr[method]; + if (methodFn !== arrayProto[method]) { + const result2 = methodFn.apply(self, args); + return needsWrap ? toReactive(result2) : result2; + } + let wrappedFn = fn; + if (arr !== self) { + if (needsWrap) { + wrappedFn = function(item, index) { + return fn.call(this, toReactive(item), index, self); + }; + } else if (fn.length > 2) { + wrappedFn = function(item, index) { + return fn.call(this, item, index, self); + }; + } + } + const result = methodFn.call(arr, wrappedFn, thisArg); + return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result; +} +function reduce(self, method, fn, args) { + const arr = shallowReadArray(self); + let wrappedFn = fn; + if (arr !== self) { + if (!isShallow(self)) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, toReactive(item), index, self); + }; + } else if (fn.length > 3) { + wrappedFn = function(acc, item, index) { + return fn.call(this, acc, item, index, self); + }; + } + } + return arr[method](wrappedFn, ...args); +} +function searchProxy(self, method, args) { + const arr = toRaw(self); + track(arr, "iterate", ARRAY_ITERATE_KEY); + const res = arr[method](...args); + if ((res === -1 || res === false) && isProxy(args[0])) { + args[0] = toRaw(args[0]); + return arr[method](...args); + } + return res; +} +function noTracking(self, method, args = []) { + pauseTracking(); + startBatch(); + const res = toRaw(self)[method].apply(self, args); + endBatch(); + resetTracking(); + return res; +} + +const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); +const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) +); +function hasOwnProperty(key) { + if (!isSymbol(key)) key = String(key); + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +class BaseReactiveHandler { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + if (key === "__v_skip") return target["__v_skip"]; + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the receiver is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + let fn; + if (targetIsArray && (fn = arrayInstrumentations[key])) { + return fn; + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get( + target, + key, + // if this is a proxy wrapping a ref, return methods using the raw ref + // as receiver so that we don't have to call `toRaw` on the ref in all + // its class methods + isRef(target) ? target : receiver + ); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +} +class MutableReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set( + target, + key, + value, + isRef(target) ? target : receiver + ); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +} +class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + { + warn$2( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + { + warn$2( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } +} +const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); +const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); +const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true); +const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + +const toShallow = (value) => value; +const getProto = (v) => Reflect.getPrototypeOf(v); +function createIterableMethod(method, isReadonly2, isShallow2) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; + !isReadonly2 && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + { + const key = args[0] ? `on key "${args[0]}" ` : ``; + warn$2( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations(readonly, shallow) { + const instrumentations = { + get(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has } = getProto(rawTarget); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + if (has.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } + }, + get size() { + const target = this["__v_raw"]; + !readonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); + }, + has(key) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!readonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); + }, + forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive; + !readonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + } + }; + extend( + instrumentations, + readonly ? { + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear") + } : { + add(value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; + }, + set(key, value) { + if (!shallow && !isShallow(value) && !isReadonly(value)) { + value = toRaw(value); + } + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + const oldValue = get.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; + }, + delete(key) { + const target = toRaw(this); + const { has, get } = getProto(target); + let hadKey = has.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has.call(target, key); + } else { + checkIdentityKeys(target, has, key); + } + const oldValue = get ? get.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + }, + clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = isMap(target) ? new Map(target) : new Set(target) ; + const result = target.clear(); + if (hadItems) { + trigger( + target, + "clear", + void 0, + void 0, + oldTarget + ); + } + return result; + } + } + ); + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator + ]; + iteratorMethods.forEach((method) => { + instrumentations[method] = createIterableMethod(method, readonly, shallow); + }); + return instrumentations; +} +function createInstrumentationGetter(isReadonly2, shallow) { + const instrumentations = createInstrumentations(isReadonly2, shallow); + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) +}; +const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) +}; +const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) +}; +const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) +}; +function checkIdentityKeys(target, has, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has.call(target, rawKey)) { + const type = toRawType(target); + warn$2( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } +} + +const reactiveMap = /* @__PURE__ */ new WeakMap(); +const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +const readonlyMap = /* @__PURE__ */ new WeakMap(); +const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + { + warn$2( + `value cannot be made ${isReadonly2 ? "readonly" : "reactive"}: ${String( + target + )}` + ); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function isProxy(value) { + return value ? !!value["__v_raw"] : false; +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + if (!hasOwn(value, "__v_skip") && Object.isExtensible(value)) { + def(value, "__v_skip", true); + } + return value; +} +const toReactive = (value) => isObject(value) ? reactive(value) : value; +const toReadonly = (value) => isObject(value) ? readonly(value) : value; + +function isRef(r) { + return r ? r["__v_isRef"] === true : false; +} +function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; +} +const shallowUnwrapHandlers = { + get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} + +class ComputedRefImpl { + constructor(fn, setter, isSSR) { + this.fn = fn; + this.setter = setter; + /** + * @internal + */ + this._value = void 0; + /** + * @internal + */ + this.dep = new Dep(this); + /** + * @internal + */ + this.__v_isRef = true; + // TODO isolatedDeclarations "__v_isReadonly" + // A computed is also a subscriber that tracks other deps + /** + * @internal + */ + this.deps = void 0; + /** + * @internal + */ + this.depsTail = void 0; + /** + * @internal + */ + this.flags = 16; + /** + * @internal + */ + this.globalVersion = globalVersion - 1; + /** + * @internal + */ + this.next = void 0; + // for backwards compat + this.effect = this; + this["__v_isReadonly"] = !setter; + this.isSSR = isSSR; + } + /** + * @internal + */ + notify() { + this.flags |= 16; + if (!(this.flags & 8) && // avoid infinite self recursion + activeSub !== this) { + batch(this, true); + return true; + } + } + get value() { + const link = this.dep.track({ + target: this, + type: "get", + key: "value" + }) ; + refreshComputed(this); + if (link) { + link.version = this.dep.version; + } + return this._value; + } + set value(newValue) { + if (this.setter) { + this.setter(newValue); + } else { + warn$2("Write operation failed: computed value is readonly"); + } + } +} +function computed$1(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + if (isFunction(getterOrOptions)) { + getter = getterOrOptions; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, isSSR); + return cRef; +} + +const INITIAL_WATCHER_VALUE = {}; +const cleanupMap = /* @__PURE__ */ new WeakMap(); +let activeWatcher = void 0; +function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) { + if (owner) { + let cleanups = cleanupMap.get(owner); + if (!cleanups) cleanupMap.set(owner, cleanups = []); + cleanups.push(cleanupFn); + } else if (!failSilently) { + warn$2( + `onWatcherCleanup() was called when there was no active watcher to associate with.` + ); + } +} +function watch$1(source, cb, options = EMPTY_OBJ) { + const { immediate, deep, once, scheduler, augmentJob, call } = options; + const warnInvalidSource = (s) => { + (options.onWarn || warn$2)( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const reactiveGetter = (source2) => { + if (deep) return source2; + if (isShallow(source2) || deep === false || deep === 0) + return traverse(source2, 1); + return traverse(source2); + }; + let effect; + let getter; + let cleanup; + let boundCleanup; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return reactiveGetter(s); + } else if (isFunction(s)) { + return call ? call(s, 2) : s(); + } else { + warnInvalidSource(s); + } + }); + } else if (isFunction(source)) { + if (cb) { + getter = call ? () => call(source, 2) : source; + } else { + getter = () => { + if (cleanup) { + pauseTracking(); + try { + cleanup(); + } finally { + resetTracking(); + } + } + const currentEffect = activeWatcher; + activeWatcher = effect; + try { + return call ? call(source, 3, [boundCleanup]) : source(boundCleanup); + } finally { + activeWatcher = currentEffect; + } + }; + } + } else { + getter = NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + const depth = deep === true ? Infinity : deep; + getter = () => traverse(baseGetter(), depth); + } + const scope = getCurrentScope(); + const watchHandle = () => { + effect.stop(); + if (scope && scope.active) { + remove(scope.effects, effect); + } + }; + if (once && cb) { + const _cb = cb; + cb = (...args) => { + _cb(...args); + watchHandle(); + }; + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = (immediateFirstRun) => { + if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) { + if (cleanup) { + cleanup(); + } + const currentWatcher = activeWatcher; + activeWatcher = effect; + try { + const args = [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + boundCleanup + ]; + oldValue = newValue; + call ? call(cb, 3, args) : ( + // @ts-expect-error + cb(...args) + ); + } finally { + activeWatcher = currentWatcher; + } + } + } else { + effect.run(); + } + }; + if (augmentJob) { + augmentJob(job); + } + effect = new ReactiveEffect(getter); + effect.scheduler = scheduler ? () => scheduler(job, false) : job; + boundCleanup = (fn) => onWatcherCleanup(fn, false, effect); + cleanup = effect.onStop = () => { + const cleanups = cleanupMap.get(effect); + if (cleanups) { + if (call) { + call(cleanups, 4); + } else { + for (const cleanup2 of cleanups) cleanup2(); + } + cleanupMap.delete(effect); + } + }; + { + effect.onTrack = options.onTrack; + effect.onTrigger = options.onTrigger; + } + if (cb) { + if (immediate) { + job(true); + } else { + oldValue = effect.run(); + } + } else if (scheduler) { + scheduler(job.bind(null, true), true); + } else { + effect.run(); + } + watchHandle.pause = effect.pause.bind(effect); + watchHandle.resume = effect.resume.bind(effect); + watchHandle.stop = watchHandle; + return watchHandle; +} +function traverse(value, depth = Infinity, seen) { + if (depth <= 0 || !isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + depth--; + if (isRef(value)) { + traverse(value.value, depth, seen); + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, depth, seen); + }); + } else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, seen); + } + for (const key of Object.getOwnPropertySymbols(value)) { + if (Object.prototype.propertyIsEnumerable.call(value, key)) { + traverse(value[key], depth, seen); + } + } + } + return value; +} + +const stack = []; +function pushWarningContext$1(vnode) { + stack.push(vnode); +} +function popWarningContext$1() { + stack.pop(); +} +let isWarning = false; +function warn$1(msg, ...args) { + if (isWarning) return; + isWarning = true; + pauseTracking(); + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + // eslint-disable-next-line no-restricted-syntax + msg + args.map((a) => { + var _a, _b; + return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a); + }).join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + resetTracking(); + isWarning = false; +} +function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} + +const ErrorTypeStrings = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush", + [15]: "component update", + [16]: "app unmount cleanup function" +}; +function callWithErrorHandling(fn, instance, type, args) { + try { + return args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + if (isArray(fn)) { + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; + } else { + warn$1( + `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}` + ); + } +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = ErrorTypeStrings[type] ; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + if (errorHandler) { + pauseTracking(); + callWithErrorHandling(errorHandler, null, 10, [ + err, + exposedInstance, + errorInfo + ]); + resetTracking(); + return; + } + } + logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction); +} +function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) { + { + const info = ErrorTypeStrings[type]; + if (contextVNode) { + pushWarningContext$1(contextVNode); + } + warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext$1(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } +} + +const queue = []; +let flushIndex = -1; +const pendingPostFlushCbs = []; +let activePostFlushCbs = null; +let postFlushIndex = 0; +const resolvedPromise = /* @__PURE__ */ Promise.resolve(); +let currentFlushPromise = null; +const RECURSION_LIMIT = 100; +function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.flags & 2) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!(job.flags & 1)) { + const jobId = getId(job); + const lastJob = queue[queue.length - 1]; + if (!lastJob || // fast path when the job id is larger than the tail + !(job.flags & 2) && jobId >= getId(lastJob)) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(jobId), 0, job); + } + job.flags |= 1; + queueFlush(); + } +} +function queueFlush() { + if (!currentFlushPromise) { + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function queuePostFlushCb(cb) { + if (!isArray(cb)) { + if (activePostFlushCbs && cb.id === -1) { + activePostFlushCbs.splice(postFlushIndex + 1, 0, cb); + } else if (!(cb.flags & 1)) { + pendingPostFlushCbs.push(cb); + cb.flags |= 1; + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(instance, seen, i = flushIndex + 1) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.flags & 2) { + if (instance && cb.id !== instance.uid) { + continue; + } + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + queue.splice(i, 1); + i--; + if (cb.flags & 4) { + cb.flags &= -2; + } + cb(); + if (!(cb.flags & 4)) { + cb.flags &= -2; + } + } + } +} +function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)].sort( + (a, b) => getId(a) - getId(b) + ); + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + const cb = activePostFlushCbs[postFlushIndex]; + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + if (cb.flags & 4) { + cb.flags &= -2; + } + if (!(cb.flags & 8)) cb(); + cb.flags &= -2; + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id; +function flushJobs(seen) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + const check = (job) => checkRecursiveUpdates(seen, job) ; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && !(job.flags & 8)) { + if (check(job)) { + continue; + } + if (job.flags & 4) { + job.flags &= ~1; + } + callWithErrorHandling( + job, + job.i, + job.i ? 15 : 14 + ); + if (!(job.flags & 4)) { + job.flags &= ~1; + } + } + } + } finally { + for (; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job) { + job.flags &= -2; + } + } + flushIndex = -1; + queue.length = 0; + flushPostFlushCbs(seen); + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } +} +function checkRecursiveUpdates(seen, fn) { + const count = seen.get(fn) || 0; + if (count > RECURSION_LIMIT) { + const instance = fn.i; + const componentName = instance && getComponentName(instance.type); + handleError( + `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`, + null, + 10 + ); + return true; + } + seen.set(fn, count + 1); + return false; +} + +let isHmrUpdating = false; +const hmrDirtyComponents = /* @__PURE__ */ new Map(); +{ + getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; +} +const map = /* @__PURE__ */ new Map(); +function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); +} +function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); +} +function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: /* @__PURE__ */ new Set() + }); + return true; +} +function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; +} +function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + record.initialDef.render = newRender; + [...record.instances].forEach((instance) => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + isHmrUpdating = true; + instance.update(); + isHmrUpdating = false; + }); +} +function reload(id, newComp) { + const record = map.get(id); + if (!record) return; + newComp = normalizeClassComponent(newComp); + updateComponentDef(record.initialDef, newComp); + const instances = [...record.instances]; + for (let i = 0; i < instances.length; i++) { + const instance = instances[i]; + const oldComp = normalizeClassComponent(instance.type); + let dirtyInstances = hmrDirtyComponents.get(oldComp); + if (!dirtyInstances) { + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set()); + } + dirtyInstances.add(instance); + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); + instance.appContext.optionsCache.delete(instance.type); + if (instance.ceReload) { + dirtyInstances.add(instance); + instance.ceReload(newComp.styles); + dirtyInstances.delete(instance); + } else if (instance.parent) { + queueJob(() => { + isHmrUpdating = true; + instance.parent.update(); + isHmrUpdating = false; + dirtyInstances.delete(instance); + }); + } else if (instance.appContext.reload) { + instance.appContext.reload(); + } else if (typeof window !== "undefined") { + window.location.reload(); + } else { + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); + } + if (instance.root.ce && instance !== instance.root) { + instance.root.ce._removeChildStyle(oldComp); + } + } + queuePostFlushCb(() => { + hmrDirtyComponents.clear(); + }); +} +function updateComponentDef(oldComp, newComp) { + extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== "__file" && !(key in newComp)) { + delete oldComp[key]; + } + } +} +function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } catch (e) { + console.error(e); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); + } + }; +} + +let devtools; +let buffer = []; +let devtoolsNotInstalled = false; +function emit$1(event, ...args) { + if (devtools) { + devtools.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } +} +function setDevtoolsHook(hook, target) { + var _a, _b; + devtools = hook; + if (devtools) { + devtools.enabled = true; + buffer.forEach(({ event, args }) => devtools.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + // eslint-disable-next-line no-restricted-syntax + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook(newHook, target); + }); + setTimeout(() => { + if (!devtools) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3e3); + } else { + devtoolsNotInstalled = true; + buffer = []; + } +} +function devtoolsInitApp(app, version) { + emit$1("app:init" /* APP_INIT */, app, version, { + Fragment, + Text, + Comment, + Static + }); +} +function devtoolsUnmountApp(app) { + emit$1("app:unmount" /* APP_UNMOUNT */, app); +} +const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook("component:added" /* COMPONENT_ADDED */); +const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */); +const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( + "component:removed" /* COMPONENT_REMOVED */ +); +const devtoolsComponentRemoved = (component) => { + if (devtools && typeof devtools.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !devtools.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } +}; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; +} +const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook("perf:start" /* PERFORMANCE_START */); +const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook("perf:end" /* PERFORMANCE_END */); +function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; +} +function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit" /* COMPONENT_EMIT */, + component.appContext.app, + component, + event, + params + ); +} + +let currentRenderingInstance = null; +let currentScopeId = null; +function setCurrentRenderingInstance$1(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance$1(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance$1(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + { + devtoolsComponentUpdated(ctx); + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} + +function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn$1("Do not use built-in directive ids as custom directive id: " + name); + } +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + resetTracking(); + } + } +} + +const TeleportEndKey = Symbol("_vte"); +const isTeleport = (type) => type.__isTeleport; + +function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + vnode.transition = hooks; + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } +} + +function markAsyncBoundary(instance) { + instance.ids = [instance.ids[0] + instance.ids[2]++ + "-", 0, 0]; +} + +const knownTemplateRefs = /* @__PURE__ */ new WeakSet(); + +function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { + if (isArray(rawRef)) { + rawRef.forEach( + (r, i) => setRef( + r, + oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), + parentSuspense, + vnode, + isUnmount + ) + ); + return; + } + if (isAsyncWrapper(vnode) && !isUnmount) { + if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) { + setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree); + } + return; + } + const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el; + const value = isUnmount ? null : refValue; + const { i: owner, r: ref } = rawRef; + if (!owner) { + warn$1( + `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.` + ); + return; + } + const oldRef = oldRawRef && oldRawRef.r; + const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs; + const setupState = owner.setupState; + const rawSetupState = toRaw(setupState); + const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => { + { + if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) { + warn$1( + `Template ref "${key}" used on a non-ref value. It will not work in the production build.` + ); + } + if (knownTemplateRefs.has(rawSetupState[key])) { + return false; + } + } + return hasOwn(rawSetupState, key); + }; + if (oldRef != null && oldRef !== ref) { + if (isString(oldRef)) { + refs[oldRef] = null; + if (canSetSetupRef(oldRef)) { + setupState[oldRef] = null; + } + } else if (isRef(oldRef)) { + oldRef.value = null; + } + } + if (isFunction(ref)) { + callWithErrorHandling(ref, owner, 12, [value, refs]); + } else { + const _isString = isString(ref); + const _isRef = isRef(ref); + if (_isString || _isRef) { + const doSet = () => { + if (rawRef.f) { + const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value; + if (isUnmount) { + isArray(existing) && remove(existing, refValue); + } else { + if (!isArray(existing)) { + if (_isString) { + refs[ref] = [refValue]; + if (canSetSetupRef(ref)) { + setupState[ref] = refs[ref]; + } + } else { + ref.value = [refValue]; + if (rawRef.k) refs[rawRef.k] = ref.value; + } + } else if (!existing.includes(refValue)) { + existing.push(refValue); + } + } + } else if (_isString) { + refs[ref] = value; + if (canSetSetupRef(ref)) { + setupState[ref] = value; + } + } else if (_isRef) { + ref.value = value; + if (rawRef.k) refs[rawRef.k] = value; + } else { + warn$1("Invalid template ref type:", ref, `(${typeof ref})`); + } + }; + if (value) { + doSet.id = -1; + queuePostRenderEffect(doSet, parentSuspense); + } else { + doSet(); + } + } else { + warn$1("Invalid template ref type:", ref, `(${typeof ref})`); + } + } +} + +const isAsyncWrapper = (i) => !!i.type.__asyncLoader; + +const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); +} +function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); +} +function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } +} +function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + remove(keepAliveRoot[type], injected); + }, target); +} + +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + pauseTracking(); + const reset = setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + reset(); + resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } else { + const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, "")); + warn$1( + `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` ) + ); + } +} +const createHook = (lifecycle) => (hook, target = currentInstance) => { + if (!isInSSRComponentSetup || lifecycle === "sp") { + injectHook(lifecycle, (...args) => hook(...args), target); + } +}; +const onBeforeMount = createHook("bm"); +const onMounted = createHook("m"); +const onBeforeUpdate = createHook( + "bu" +); +const onUpdated = createHook("u"); +const onBeforeUnmount = createHook( + "bum" +); +const onUnmounted = createHook("um"); +const onServerPrefetch = createHook( + "sp" +); +const onRenderTriggered = createHook("rtg"); +const onRenderTracked = createHook("rtc"); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} + +const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); + +function ensureValidVNode$1(vnodes) { + return vnodes.some((child) => { + if (!isVNode$2(child)) return true; + if (child.type === Comment) return false; + if (child.type === Fragment && !ensureValidVNode$1(child.children)) + return false; + return true; + }) ? vnodes : null; +} + +const getPublicInstance = (i) => { + if (!i) return null; + if (isStatefulComponent(i)) return getComponentPublicInstance(i); + return getPublicInstance(i.parent); +}; +const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => shallowReadonly(i.props) , + $attrs: (i) => shallowReadonly(i.attrs) , + $slots: (i) => shallowReadonly(i.slots) , + $refs: (i) => shallowReadonly(i.refs) , + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $host: (i) => i.ce, + $emit: (i) => i.emit, + $options: (i) => resolveMergedOptions(i) , + $forceUpdate: (i) => i.f || (i.f = () => { + queueJob(i.update); + }), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => instanceWatch.bind(i) + }) +); +const isReservedPrefix = (key) => key === "_" || key === "$"; +const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); +const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + if (key === "__v_skip") { + return true; + } + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if (shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + track(instance.attrs, "get", ""); + markAttrsAccessed(); + } else if (key === "$slots") { + track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf("__v") !== 0)) { + if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { + warn$1( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); + } else if (instance === currentRenderingInstance) { + warn$1( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) { + warn$1(`Cannot mutate <script setup> binding "${key}" from Options API.`); + return false; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + data[key] = value; + return true; + } else if (hasOwn(instance.props, key)) { + warn$1(`Attempting to mutate prop "${key}". Props are readonly.`); + return false; + } + if (key[0] === "$" && key.slice(1) in instance) { + warn$1( + `Attempting to mutate public property "${key}". Properties starting with $ are reserved and readonly.` + ); + return false; + } else { + if (key in instance.appContext.config.globalProperties) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + value + }); + } else { + ctx[key] = value; + } + } + return true; + }, + has({ + _: { data, setupState, accessCache, ctx, appContext, propsOptions } + }, key) { + let normalizedProps; + return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key); + }, + defineProperty(target, key, descriptor) { + if (descriptor.get != null) { + target._.accessCache[key] = 0; + } else if (hasOwn(descriptor, "value")) { + this.set(target, key, descriptor.value, null); + } + return Reflect.defineProperty(target, key, descriptor); + } +}; +{ + PublicInstanceProxyHandlers.ownKeys = (target) => { + warn$1( + `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.` + ); + return Reflect.ownKeys(target); + }; +} +function createDevRenderContext(instance) { + const target = {}; + Object.defineProperty(target, `_`, { + configurable: true, + enumerable: false, + get: () => instance + }); + Object.keys(publicPropertiesMap).forEach((key) => { + Object.defineProperty(target, key, { + configurable: true, + enumerable: false, + get: () => publicPropertiesMap[key](instance), + // intercepted by the proxy so no need for implementation, + // but needed to prevent set errors + set: NOOP + }); + }); + return target; +} +function exposePropsOnRenderContext(instance) { + const { + ctx, + propsOptions: [propsOptions] + } = instance; + if (propsOptions) { + Object.keys(propsOptions).forEach((key) => { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => instance.props[key], + set: NOOP + }); + }); + } +} +function exposeSetupStateOnRenderContext(instance) { + const { ctx, setupState } = instance; + Object.keys(toRaw(setupState)).forEach((key) => { + if (!setupState.__isScriptSetup) { + if (isReservedPrefix(key[0])) { + warn$1( + `setup() return property ${JSON.stringify( + key + )} should not start with "$" or "_" which are reserved prefixes for Vue internals.` + ); + return; + } + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => setupState[key], + set: NOOP + }); + } + }); +} + +function normalizePropsOrEmits(props) { + return isArray(props) ? props.reduce( + (normalized, p) => (normalized[p] = null, normalized), + {} + ) : props; +} + +function createDuplicateChecker() { + const cache = /* @__PURE__ */ Object.create(null); + return (type, key) => { + if (cache[key]) { + warn$1(`${type} property "${key}" is already defined in ${cache[key]}.`); + } else { + cache[key] = type; + } + }; +} +let shouldCacheAccess = true; +function applyOptions(instance) { + const options = resolveMergedOptions(instance); + const publicThis = instance.proxy; + const ctx = instance.ctx; + shouldCacheAccess = false; + if (options.beforeCreate) { + callHook(options.beforeCreate, instance, "bc"); + } + const { + // state + data: dataOptions, + computed: computedOptions, + methods, + watch: watchOptions, + provide: provideOptions, + inject: injectOptions, + // lifecycle + created, + beforeMount, + mounted, + beforeUpdate, + updated, + activated, + deactivated, + beforeDestroy, + beforeUnmount, + destroyed, + unmounted, + render, + renderTracked, + renderTriggered, + errorCaptured, + serverPrefetch, + // public API + expose, + inheritAttrs, + // assets + components, + directives, + filters + } = options; + const checkDuplicateProperties = createDuplicateChecker() ; + { + const [propsOptions] = instance.propsOptions; + if (propsOptions) { + for (const key in propsOptions) { + checkDuplicateProperties("Props" /* PROPS */, key); + } + } + } + if (injectOptions) { + resolveInjections(injectOptions, ctx, checkDuplicateProperties); + } + if (methods) { + for (const key in methods) { + const methodHandler = methods[key]; + if (isFunction(methodHandler)) { + { + Object.defineProperty(ctx, key, { + value: methodHandler.bind(publicThis), + configurable: true, + enumerable: true, + writable: true + }); + } + { + checkDuplicateProperties("Methods" /* METHODS */, key); + } + } else { + warn$1( + `Method "${key}" has type "${typeof methodHandler}" in the component definition. Did you reference the function correctly?` + ); + } + } + } + if (dataOptions) { + if (!isFunction(dataOptions)) { + warn$1( + `The data option must be a function. Plain object usage is no longer supported.` + ); + } + const data = dataOptions.call(publicThis, publicThis); + if (isPromise(data)) { + warn$1( + `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.` + ); + } + if (!isObject(data)) { + warn$1(`data() should return an object.`); + } else { + instance.data = reactive(data); + { + for (const key in data) { + checkDuplicateProperties("Data" /* DATA */, key); + if (!isReservedPrefix(key[0])) { + Object.defineProperty(ctx, key, { + configurable: true, + enumerable: true, + get: () => data[key], + set: NOOP + }); + } + } + } + } + } + shouldCacheAccess = true; + if (computedOptions) { + for (const key in computedOptions) { + const opt = computedOptions[key]; + const get = isFunction(opt) ? opt.bind(publicThis, publicThis) : isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP; + if (get === NOOP) { + warn$1(`Computed property "${key}" has no getter.`); + } + const set = !isFunction(opt) && isFunction(opt.set) ? opt.set.bind(publicThis) : () => { + warn$1( + `Write operation failed: computed property "${key}" is readonly.` + ); + } ; + const c = computed({ + get, + set + }); + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => c.value, + set: (v) => c.value = v + }); + { + checkDuplicateProperties("Computed" /* COMPUTED */, key); + } + } + } + if (watchOptions) { + for (const key in watchOptions) { + createWatcher(watchOptions[key], ctx, publicThis, key); + } + } + if (provideOptions) { + const provides = isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions; + Reflect.ownKeys(provides).forEach((key) => { + provide(key, provides[key]); + }); + } + if (created) { + callHook(created, instance, "c"); + } + function registerLifecycleHook(register, hook) { + if (isArray(hook)) { + hook.forEach((_hook) => register(_hook.bind(publicThis))); + } else if (hook) { + register(hook.bind(publicThis)); + } + } + registerLifecycleHook(onBeforeMount, beforeMount); + registerLifecycleHook(onMounted, mounted); + registerLifecycleHook(onBeforeUpdate, beforeUpdate); + registerLifecycleHook(onUpdated, updated); + registerLifecycleHook(onActivated, activated); + registerLifecycleHook(onDeactivated, deactivated); + registerLifecycleHook(onErrorCaptured, errorCaptured); + registerLifecycleHook(onRenderTracked, renderTracked); + registerLifecycleHook(onRenderTriggered, renderTriggered); + registerLifecycleHook(onBeforeUnmount, beforeUnmount); + registerLifecycleHook(onUnmounted, unmounted); + registerLifecycleHook(onServerPrefetch, serverPrefetch); + if (isArray(expose)) { + if (expose.length) { + const exposed = instance.exposed || (instance.exposed = {}); + expose.forEach((key) => { + Object.defineProperty(exposed, key, { + get: () => publicThis[key], + set: (val) => publicThis[key] = val, + enumerable: true + }); + }); + } else if (!instance.exposed) { + instance.exposed = {}; + } + } + if (render && instance.render === NOOP) { + instance.render = render; + } + if (inheritAttrs != null) { + instance.inheritAttrs = inheritAttrs; + } + if (components) instance.components = components; + if (directives) instance.directives = directives; + if (serverPrefetch) { + markAsyncBoundary(instance); + } +} +function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) { + if (isArray(injectOptions)) { + injectOptions = normalizeInject(injectOptions); + } + for (const key in injectOptions) { + const opt = injectOptions[key]; + let injected; + if (isObject(opt)) { + if ("default" in opt) { + injected = inject( + opt.from || key, + opt.default, + true + ); + } else { + injected = inject(opt.from || key); + } + } else { + injected = inject(opt); + } + if (isRef(injected)) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => injected.value, + set: (v) => injected.value = v + }); + } else { + ctx[key] = injected; + } + { + checkDuplicateProperties("Inject" /* INJECT */, key); + } + } +} +function callHook(hook, instance, type) { + callWithAsyncErrorHandling( + isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy), + instance, + type + ); +} +function createWatcher(raw, ctx, publicThis, key) { + let getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; + if (isString(raw)) { + const handler = ctx[raw]; + if (isFunction(handler)) { + { + watch(getter, handler); + } + } else { + warn$1(`Invalid watch handler specified by key "${raw}"`, handler); + } + } else if (isFunction(raw)) { + { + watch(getter, raw.bind(publicThis)); + } + } else if (isObject(raw)) { + if (isArray(raw)) { + raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); + } else { + const handler = isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; + if (isFunction(handler)) { + watch(getter, handler, raw); + } else { + warn$1(`Invalid watch handler specified by key "${raw.handler}"`, handler); + } + } + } else { + warn$1(`Invalid watch option: "${key}"`, raw); + } +} +function resolveMergedOptions(instance) { + const base = instance.type; + const { mixins, extends: extendsOptions } = base; + const { + mixins: globalMixins, + optionsCache: cache, + config: { optionMergeStrategies } + } = instance.appContext; + const cached = cache.get(base); + let resolved; + if (cached) { + resolved = cached; + } else if (!globalMixins.length && !mixins && !extendsOptions) { + { + resolved = base; + } + } else { + resolved = {}; + if (globalMixins.length) { + globalMixins.forEach( + (m) => mergeOptions(resolved, m, optionMergeStrategies, true) + ); + } + mergeOptions(resolved, base, optionMergeStrategies); + } + if (isObject(base)) { + cache.set(base, resolved); + } + return resolved; +} +function mergeOptions(to, from, strats, asMixin = false) { + const { mixins, extends: extendsOptions } = from; + if (extendsOptions) { + mergeOptions(to, extendsOptions, strats, true); + } + if (mixins) { + mixins.forEach( + (m) => mergeOptions(to, m, strats, true) + ); + } + for (const key in from) { + if (asMixin && key === "expose") { + warn$1( + `"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.` + ); + } else { + const strat = internalOptionMergeStrats[key] || strats && strats[key]; + to[key] = strat ? strat(to[key], from[key]) : from[key]; + } + } + return to; +} +const internalOptionMergeStrats = { + data: mergeDataFn, + props: mergeEmitsOrPropsOptions, + emits: mergeEmitsOrPropsOptions, + // objects + methods: mergeObjectOptions, + computed: mergeObjectOptions, + // lifecycle + beforeCreate: mergeAsArray, + created: mergeAsArray, + beforeMount: mergeAsArray, + mounted: mergeAsArray, + beforeUpdate: mergeAsArray, + updated: mergeAsArray, + beforeDestroy: mergeAsArray, + beforeUnmount: mergeAsArray, + destroyed: mergeAsArray, + unmounted: mergeAsArray, + activated: mergeAsArray, + deactivated: mergeAsArray, + errorCaptured: mergeAsArray, + serverPrefetch: mergeAsArray, + // assets + components: mergeObjectOptions, + directives: mergeObjectOptions, + // watch + watch: mergeWatchOptions, + // provide / inject + provide: mergeDataFn, + inject: mergeInject +}; +function mergeDataFn(to, from) { + if (!from) { + return to; + } + if (!to) { + return from; + } + return function mergedDataFn() { + return (extend)( + isFunction(to) ? to.call(this, this) : to, + isFunction(from) ? from.call(this, this) : from + ); + }; +} +function mergeInject(to, from) { + return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); +} +function normalizeInject(raw) { + if (isArray(raw)) { + const res = {}; + for (let i = 0; i < raw.length; i++) { + res[raw[i]] = raw[i]; + } + return res; + } + return raw; +} +function mergeAsArray(to, from) { + return to ? [...new Set([].concat(to, from))] : from; +} +function mergeObjectOptions(to, from) { + return to ? extend(/* @__PURE__ */ Object.create(null), to, from) : from; +} +function mergeEmitsOrPropsOptions(to, from) { + if (to) { + if (isArray(to) && isArray(from)) { + return [.../* @__PURE__ */ new Set([...to, ...from])]; + } + return extend( + /* @__PURE__ */ Object.create(null), + normalizePropsOrEmits(to), + normalizePropsOrEmits(from != null ? from : {}) + ); + } else { + return from; + } +} +function mergeWatchOptions(to, from) { + if (!to) return from; + if (!from) return to; + const merged = extend(/* @__PURE__ */ Object.create(null), to); + for (const key in from) { + merged[key] = mergeAsArray(to[key], from[key]); + } + return merged; +} + +function createAppContext() { + return { + app: null, + config: { + isNativeTag: NO, + performance: false, + globalProperties: {}, + optionMergeStrategies: {}, + errorHandler: void 0, + warnHandler: void 0, + compilerOptions: {} + }, + mixins: [], + components: {}, + directives: {}, + provides: /* @__PURE__ */ Object.create(null), + optionsCache: /* @__PURE__ */ new WeakMap(), + propsCache: /* @__PURE__ */ new WeakMap(), + emitsCache: /* @__PURE__ */ new WeakMap() + }; +} +let uid$1 = 0; +function createAppAPI(render, hydrate) { + return function createApp(rootComponent, rootProps = null) { + if (!isFunction(rootComponent)) { + rootComponent = extend({}, rootComponent); + } + if (rootProps != null && !isObject(rootProps)) { + warn$1(`root props passed to app.mount() must be an object.`); + rootProps = null; + } + const context = createAppContext(); + const installedPlugins = /* @__PURE__ */ new WeakSet(); + const pluginCleanupFns = []; + let isMounted = false; + const app = context.app = { + _uid: uid$1++, + _component: rootComponent, + _props: rootProps, + _container: null, + _context: context, + _instance: null, + version, + get config() { + return context.config; + }, + set config(v) { + { + warn$1( + `app.config cannot be replaced. Modify individual options instead.` + ); + } + }, + use(plugin, ...options) { + if (installedPlugins.has(plugin)) { + warn$1(`Plugin has already been applied to target app.`); + } else if (plugin && isFunction(plugin.install)) { + installedPlugins.add(plugin); + plugin.install(app, ...options); + } else if (isFunction(plugin)) { + installedPlugins.add(plugin); + plugin(app, ...options); + } else { + warn$1( + `A plugin must either be a function or an object with an "install" function.` + ); + } + return app; + }, + mixin(mixin) { + { + if (!context.mixins.includes(mixin)) { + context.mixins.push(mixin); + } else { + warn$1( + "Mixin has already been applied to target app" + (mixin.name ? `: ${mixin.name}` : "") + ); + } + } + return app; + }, + component(name, component) { + { + validateComponentName(name, context.config); + } + if (!component) { + return context.components[name]; + } + if (context.components[name]) { + warn$1(`Component "${name}" has already been registered in target app.`); + } + context.components[name] = component; + return app; + }, + directive(name, directive) { + { + validateDirectiveName(name); + } + if (!directive) { + return context.directives[name]; + } + if (context.directives[name]) { + warn$1(`Directive "${name}" has already been registered in target app.`); + } + context.directives[name] = directive; + return app; + }, + mount(rootContainer, isHydrate, namespace) { + if (!isMounted) { + if (rootContainer.__vue_app__) { + warn$1( + `There is already an app instance mounted on the host container. + If you want to mount another app on the same host container, you need to unmount the previous app by calling \`app.unmount()\` first.` + ); + } + const vnode = app._ceVNode || createVNode(rootComponent, rootProps); + vnode.appContext = context; + if (namespace === true) { + namespace = "svg"; + } else if (namespace === false) { + namespace = void 0; + } + { + context.reload = () => { + const cloned = cloneVNode(vnode); + cloned.el = null; + render(cloned, rootContainer, namespace); + }; + } + { + render(vnode, rootContainer, namespace); + } + isMounted = true; + app._container = rootContainer; + rootContainer.__vue_app__ = app; + { + app._instance = vnode.component; + devtoolsInitApp(app, version); + } + return getComponentPublicInstance(vnode.component); + } else { + warn$1( + `App has already been mounted. +If you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \`const createMyApp = () => createApp(App)\`` + ); + } + }, + onUnmount(cleanupFn) { + if (typeof cleanupFn !== "function") { + warn$1( + `Expected function as first argument to app.onUnmount(), but got ${typeof cleanupFn}` + ); + } + pluginCleanupFns.push(cleanupFn); + }, + unmount() { + if (isMounted) { + callWithAsyncErrorHandling( + pluginCleanupFns, + app._instance, + 16 + ); + render(null, app._container); + { + app._instance = null; + devtoolsUnmountApp(app); + } + delete app._container.__vue_app__; + } else { + warn$1(`Cannot unmount an app that is not mounted.`); + } + }, + provide(key, value) { + if (key in context.provides) { + if (hasOwn(context.provides, key)) { + warn$1( + `App already provides property with key "${String(key)}". It will be overwritten with the new value.` + ); + } else { + warn$1( + `App already provides property with key "${String(key)}" inherited from its parent element. It will be overwritten with the new value.` + ); + } + } + context.provides[key] = value; + return app; + }, + runWithContext(fn) { + const lastApp = currentApp; + currentApp = app; + try { + return fn(); + } finally { + currentApp = lastApp; + } + } + }; + return app; + }; +} +let currentApp = null; + +function provide(key, value) { + if (!currentInstance) { + { + warn$1(`provide() can only be used inside setup().`); + } + } else { + let provides = currentInstance.provides; + const parentProvides = currentInstance.parent && currentInstance.parent.provides; + if (parentProvides === provides) { + provides = currentInstance.provides = Object.create(parentProvides); + } + provides[key] = value; + } +} +function inject(key, defaultValue, treatDefaultAsFactory = false) { + const instance = getCurrentInstance(); + if (instance || currentApp) { + let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0; + if (provides && key in provides) { + return provides[key]; + } else if (arguments.length > 1) { + return treatDefaultAsFactory && isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; + } else { + warn$1(`injection "${String(key)}" not found.`); + } + } else { + warn$1(`inject() can only be used inside setup() or functional components.`); + } +} + +const internalObjectProto = {}; +const createInternalObject = () => Object.create(internalObjectProto); +const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto; + +function initProps(instance, rawProps, isStateful, isSSR = false) { + const props = {}; + const attrs = createInternalObject(); + instance.propsDefaults = /* @__PURE__ */ Object.create(null); + setFullProps(instance, rawProps, props, attrs); + for (const key in instance.propsOptions[0]) { + if (!(key in props)) { + props[key] = void 0; + } + } + { + validateProps(rawProps || {}, props, instance); + } + if (isStateful) { + instance.props = isSSR ? props : shallowReactive(props); + } else { + if (!instance.type.props) { + instance.props = attrs; + } else { + instance.props = props; + } + } + instance.attrs = attrs; +} +function isInHmrContext(instance) { + while (instance) { + if (instance.type.__hmrId) return true; + instance = instance.parent; + } +} +function updateProps(instance, rawProps, rawPrevProps, optimized) { + const { + props, + attrs, + vnode: { patchFlag } + } = instance; + const rawCurrentProps = toRaw(props); + const [options] = instance.propsOptions; + let hasAttrsChanged = false; + if ( + // always force full diff in dev + // - #1942 if hmr is enabled with sfc component + // - vite#872 non-sfc component used by sfc component + !isInHmrContext(instance) && (optimized || patchFlag > 0) && !(patchFlag & 16) + ) { + if (patchFlag & 8) { + const propsToUpdate = instance.vnode.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + let key = propsToUpdate[i]; + if (isEmitListener(instance.emitsOptions, key)) { + continue; + } + const value = rawProps[key]; + if (options) { + if (hasOwn(attrs, key)) { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } else { + const camelizedKey = camelize(key); + props[camelizedKey] = resolvePropValue( + options, + rawCurrentProps, + camelizedKey, + value, + instance, + false + ); + } + } else { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + } else { + if (setFullProps(instance, rawProps, props, attrs)) { + hasAttrsChanged = true; + } + let kebabKey; + for (const key in rawCurrentProps) { + if (!rawProps || // for camelCase + !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case + // and converted to camelCase (#955) + ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) { + if (options) { + if (rawPrevProps && // for camelCase + (rawPrevProps[key] !== void 0 || // for kebab-case + rawPrevProps[kebabKey] !== void 0)) { + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + void 0, + instance, + true + ); + } + } else { + delete props[key]; + } + } + } + if (attrs !== rawCurrentProps) { + for (const key in attrs) { + if (!rawProps || !hasOwn(rawProps, key) && true) { + delete attrs[key]; + hasAttrsChanged = true; + } + } + } + } + if (hasAttrsChanged) { + trigger(instance.attrs, "set", ""); + } + { + validateProps(rawProps || {}, props, instance); + } +} +function setFullProps(instance, rawProps, props, attrs) { + const [options, needCastKeys] = instance.propsOptions; + let hasAttrsChanged = false; + let rawCastValues; + if (rawProps) { + for (let key in rawProps) { + if (isReservedProp(key)) { + continue; + } + const value = rawProps[key]; + let camelKey; + if (options && hasOwn(options, camelKey = camelize(key))) { + if (!needCastKeys || !needCastKeys.includes(camelKey)) { + props[camelKey] = value; + } else { + (rawCastValues || (rawCastValues = {}))[camelKey] = value; + } + } else if (!isEmitListener(instance.emitsOptions, key)) { + if (!(key in attrs) || value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + if (needCastKeys) { + const rawCurrentProps = toRaw(props); + const castValues = rawCastValues || EMPTY_OBJ; + for (let i = 0; i < needCastKeys.length; i++) { + const key = needCastKeys[i]; + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + castValues[key], + instance, + !hasOwn(castValues, key) + ); + } + } + return hasAttrsChanged; +} +function resolvePropValue(options, props, key, value, instance, isAbsent) { + const opt = options[key]; + if (opt != null) { + const hasDefault = hasOwn(opt, "default"); + if (hasDefault && value === void 0) { + const defaultValue = opt.default; + if (opt.type !== Function && !opt.skipFactory && isFunction(defaultValue)) { + const { propsDefaults } = instance; + if (key in propsDefaults) { + value = propsDefaults[key]; + } else { + const reset = setCurrentInstance(instance); + value = propsDefaults[key] = defaultValue.call( + null, + props + ); + reset(); + } + } else { + value = defaultValue; + } + if (instance.ce) { + instance.ce._setProp(key, value); + } + } + if (opt[0 /* shouldCast */]) { + if (isAbsent && !hasDefault) { + value = false; + } else if (opt[1 /* shouldCastTrue */] && (value === "" || value === hyphenate(key))) { + value = true; + } + } + } + return value; +} +const mixinPropsCache = /* @__PURE__ */ new WeakMap(); +function normalizePropsOptions(comp, appContext, asMixin = false) { + const cache = asMixin ? mixinPropsCache : appContext.propsCache; + const cached = cache.get(comp); + if (cached) { + return cached; + } + const raw = comp.props; + const normalized = {}; + const needCastKeys = []; + let hasExtends = false; + if (!isFunction(comp)) { + const extendProps = (raw2) => { + hasExtends = true; + const [props, keys] = normalizePropsOptions(raw2, appContext, true); + extend(normalized, props); + if (keys) needCastKeys.push(...keys); + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendProps); + } + if (comp.extends) { + extendProps(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendProps); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, EMPTY_ARR); + } + return EMPTY_ARR; + } + if (isArray(raw)) { + for (let i = 0; i < raw.length; i++) { + if (!isString(raw[i])) { + warn$1(`props must be strings when using array syntax.`, raw[i]); + } + const normalizedKey = camelize(raw[i]); + if (validatePropName(normalizedKey)) { + normalized[normalizedKey] = EMPTY_OBJ; + } + } + } else if (raw) { + if (!isObject(raw)) { + warn$1(`invalid props options`, raw); + } + for (const key in raw) { + const normalizedKey = camelize(key); + if (validatePropName(normalizedKey)) { + const opt = raw[key]; + const prop = normalized[normalizedKey] = isArray(opt) || isFunction(opt) ? { type: opt } : extend({}, opt); + const propType = prop.type; + let shouldCast = false; + let shouldCastTrue = true; + if (isArray(propType)) { + for (let index = 0; index < propType.length; ++index) { + const type = propType[index]; + const typeName = isFunction(type) && type.name; + if (typeName === "Boolean") { + shouldCast = true; + break; + } else if (typeName === "String") { + shouldCastTrue = false; + } + } + } else { + shouldCast = isFunction(propType) && propType.name === "Boolean"; + } + prop[0 /* shouldCast */] = shouldCast; + prop[1 /* shouldCastTrue */] = shouldCastTrue; + if (shouldCast || hasOwn(prop, "default")) { + needCastKeys.push(normalizedKey); + } + } + } + } + const res = [normalized, needCastKeys]; + if (isObject(comp)) { + cache.set(comp, res); + } + return res; +} +function validatePropName(key) { + if (key[0] !== "$" && !isReservedProp(key)) { + return true; + } else { + warn$1(`Invalid prop name: "${key}" is a reserved property.`); + } + return false; +} +function getType(ctor) { + if (ctor === null) { + return "null"; + } + if (typeof ctor === "function") { + return ctor.name || ""; + } else if (typeof ctor === "object") { + const name = ctor.constructor && ctor.constructor.name; + return name || ""; + } + return ""; +} +function validateProps(rawProps, props, instance) { + const resolvedValues = toRaw(props); + const options = instance.propsOptions[0]; + const camelizePropsKey = Object.keys(rawProps).map((key) => camelize(key)); + for (const key in options) { + let opt = options[key]; + if (opt == null) continue; + validateProp( + key, + resolvedValues[key], + opt, + shallowReadonly(resolvedValues) , + !camelizePropsKey.includes(key) + ); + } +} +function validateProp(name, value, prop, props, isAbsent) { + const { type, required, validator, skipCheck } = prop; + if (required && isAbsent) { + warn$1('Missing required prop: "' + name + '"'); + return; + } + if (value == null && !required) { + return; + } + if (type != null && type !== true && !skipCheck) { + let isValid = false; + const types = isArray(type) ? type : [type]; + const expectedTypes = []; + for (let i = 0; i < types.length && !isValid; i++) { + const { valid, expectedType } = assertType(value, types[i]); + expectedTypes.push(expectedType || ""); + isValid = valid; + } + if (!isValid) { + warn$1(getInvalidTypeMessage(name, value, expectedTypes)); + return; + } + } + if (validator && !validator(value, props)) { + warn$1('Invalid prop: custom validator check failed for prop "' + name + '".'); + } +} +const isSimpleType = /* @__PURE__ */ makeMap( + "String,Number,Boolean,Function,Symbol,BigInt" +); +function assertType(value, type) { + let valid; + const expectedType = getType(type); + if (expectedType === "null") { + valid = value === null; + } else if (isSimpleType(expectedType)) { + const t = typeof value; + valid = t === expectedType.toLowerCase(); + if (!valid && t === "object") { + valid = value instanceof type; + } + } else if (expectedType === "Object") { + valid = isObject(value); + } else if (expectedType === "Array") { + valid = isArray(value); + } else { + valid = value instanceof type; + } + return { + valid, + expectedType + }; +} +function getInvalidTypeMessage(name, value, expectedTypes) { + if (expectedTypes.length === 0) { + return `Prop type [] for prop "${name}" won't match anything. Did you mean to use type Array instead?`; + } + let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes.map(capitalize).join(" | ")}`; + const expectedType = expectedTypes[0]; + const receivedType = toRawType(value); + const expectedValue = styleValue(value, expectedType); + const receivedValue = styleValue(value, receivedType); + if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) { + message += ` with value ${expectedValue}`; + } + message += `, got ${receivedType} `; + if (isExplicable(receivedType)) { + message += `with value ${receivedValue}.`; + } + return message; +} +function styleValue(value, type) { + if (type === "String") { + return `"${value}"`; + } else if (type === "Number") { + return `${Number(value)}`; + } else { + return `${value}`; + } +} +function isExplicable(type) { + const explicitTypes = ["string", "number", "boolean"]; + return explicitTypes.some((elem) => type.toLowerCase() === elem); +} +function isBoolean(...args) { + return args.some((elem) => elem.toLowerCase() === "boolean"); +} + +const isInternalKey = (key) => key === "_" || key === "__" || key === "_ctx" || key === "$stable"; +const normalizeSlotValue = (value) => isArray(value) ? value.map(normalizeVNode$1) : [normalizeVNode$1(value)]; +const normalizeSlot = (key, rawSlot, ctx) => { + if (rawSlot._n) { + return rawSlot; + } + const normalized = withCtx((...args) => { + if (currentInstance && !(ctx === null && currentRenderingInstance) && !(ctx && ctx.root !== currentInstance.root)) { + warn$1( + `Slot "${key}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.` + ); + } + return normalizeSlotValue(rawSlot(...args)); + }, ctx); + normalized._c = false; + return normalized; +}; +const normalizeObjectSlots = (rawSlots, slots, instance) => { + const ctx = rawSlots._ctx; + for (const key in rawSlots) { + if (isInternalKey(key)) continue; + const value = rawSlots[key]; + if (isFunction(value)) { + slots[key] = normalizeSlot(key, value, ctx); + } else if (value != null) { + { + warn$1( + `Non-function value encountered for slot "${key}". Prefer function slots for better performance.` + ); + } + const normalized = normalizeSlotValue(value); + slots[key] = () => normalized; + } + } +}; +const normalizeVNodeSlots = (instance, children) => { + if (!isKeepAlive(instance.vnode) && true) { + warn$1( + `Non-function value encountered for default slot. Prefer function slots for better performance.` + ); + } + const normalized = normalizeSlotValue(children); + instance.slots.default = () => normalized; +}; +const assignSlots = (slots, children, optimized) => { + for (const key in children) { + if (optimized || !isInternalKey(key)) { + slots[key] = children[key]; + } + } +}; +const initSlots = (instance, children, optimized) => { + const slots = instance.slots = createInternalObject(); + if (instance.vnode.shapeFlag & 32) { + const cacheIndexes = children.__; + if (cacheIndexes) def(slots, "__", cacheIndexes, true); + const type = children._; + if (type) { + assignSlots(slots, children, optimized); + if (optimized) { + def(slots, "_", type, true); + } + } else { + normalizeObjectSlots(children, slots); + } + } else if (children) { + normalizeVNodeSlots(instance, children); + } +}; +const updateSlots = (instance, children, optimized) => { + const { vnode, slots } = instance; + let needDeletionCheck = true; + let deletionComparisonTarget = EMPTY_OBJ; + if (vnode.shapeFlag & 32) { + const type = children._; + if (type) { + if (isHmrUpdating) { + assignSlots(slots, children, optimized); + trigger(instance, "set", "$slots"); + } else if (optimized && type === 1) { + needDeletionCheck = false; + } else { + assignSlots(slots, children, optimized); + } + } else { + needDeletionCheck = !children.$stable; + normalizeObjectSlots(children, slots); + } + deletionComparisonTarget = children; + } else if (children) { + normalizeVNodeSlots(instance, children); + deletionComparisonTarget = { default: 1 }; + } + if (needDeletionCheck) { + for (const key in slots) { + if (!isInternalKey(key) && deletionComparisonTarget[key] == null) { + delete slots[key]; + } + } + } +}; + +let supported; +let perf; +function startMeasure(instance, type) { + if (instance.appContext.config.performance && isSupported()) { + perf.mark(`vue-${type}-${instance.uid}`); + } + { + devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now()); + } +} +function endMeasure(instance, type) { + if (instance.appContext.config.performance && isSupported()) { + const startTag = `vue-${type}-${instance.uid}`; + const endTag = startTag + `:end`; + perf.mark(endTag); + perf.measure( + `<${formatComponentName(instance, instance.type)}> ${type}`, + startTag, + endTag + ); + perf.clearMarks(startTag); + perf.clearMarks(endTag); + } + { + devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now()); + } +} +function isSupported() { + if (supported !== void 0) { + return supported; + } + if (typeof window !== "undefined" && window.performance) { + supported = true; + perf = window.performance; + } else { + supported = false; + } + return supported; +} + +const queuePostRenderEffect = queueEffectWithSuspense ; +function createRenderer(options) { + return baseCreateRenderer(options); +} +function baseCreateRenderer(options, createHydrationFns) { + const target = getGlobalThis(); + target.__VUE__ = true; + { + setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target); + } + const { + insert: hostInsert, + remove: hostRemove, + patchProp: hostPatchProp, + createElement: hostCreateElement, + createText: hostCreateText, + createComment: hostCreateComment, + setText: hostSetText, + setElementText: hostSetElementText, + parentNode: hostParentNode, + nextSibling: hostNextSibling, + setScopeId: hostSetScopeId = NOOP, + insertStaticContent: hostInsertStaticContent + } = options; + const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = isHmrUpdating ? false : !!n2.dynamicChildren) => { + if (n1 === n2) { + return; + } + if (n1 && !isSameVNodeType(n1, n2)) { + anchor = getNextHostNode(n1); + unmount(n1, parentComponent, parentSuspense, true); + n1 = null; + } + if (n2.patchFlag === -2) { + optimized = false; + n2.dynamicChildren = null; + } + const { type, ref, shapeFlag } = n2; + switch (type) { + case Text: + processText(n1, n2, container, anchor); + break; + case Comment: + processCommentNode(n1, n2, container, anchor); + break; + case Static: + if (n1 == null) { + mountStaticNode(n2, container, anchor, namespace); + } else { + patchStaticNode(n1, n2, container, namespace); + } + break; + case Fragment: + processFragment( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + break; + default: + if (shapeFlag & 1) { + processElement( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 6) { + processComponent( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 64) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + } else if (shapeFlag & 128) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + internals + ); + } else { + warn$1("Invalid VNode type:", type, `(${typeof type})`); + } + } + if (ref != null && parentComponent) { + setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2); + } else if (ref == null && n1 && n1.ref != null) { + setRef(n1.ref, null, parentSuspense, n1, true); + } + }; + const processText = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateText(n2.children), + container, + anchor + ); + } else { + const el = n2.el = n1.el; + if (n2.children !== n1.children) { + hostSetText(el, n2.children); + } + } + }; + const processCommentNode = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateComment(n2.children || ""), + container, + anchor + ); + } else { + n2.el = n1.el; + } + }; + const mountStaticNode = (n2, container, anchor, namespace) => { + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + namespace, + n2.el, + n2.anchor + ); + }; + const patchStaticNode = (n1, n2, container, namespace) => { + if (n2.children !== n1.children) { + const anchor = hostNextSibling(n1.anchor); + removeStaticNode(n1); + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + namespace + ); + } else { + n2.el = n1.el; + n2.anchor = n1.anchor; + } + }; + const moveStaticNode = ({ el, anchor }, container, nextSibling) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostInsert(el, container, nextSibling); + el = next; + } + hostInsert(anchor, container, nextSibling); + }; + const removeStaticNode = ({ el, anchor }) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostRemove(el); + el = next; + } + hostRemove(anchor); + }; + const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + if (n2.type === "svg") { + namespace = "svg"; + } else if (n2.type === "math") { + namespace = "mathml"; + } + if (n1 == null) { + mountElement( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + patchElement( + n1, + n2, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + let el; + let vnodeHook; + const { props, shapeFlag, transition, dirs } = vnode; + el = vnode.el = hostCreateElement( + vnode.type, + namespace, + props && props.is, + props + ); + if (shapeFlag & 8) { + hostSetElementText(el, vnode.children); + } else if (shapeFlag & 16) { + mountChildren( + vnode.children, + el, + null, + parentComponent, + parentSuspense, + resolveChildrenNamespace(vnode, namespace), + slotScopeIds, + optimized + ); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent); + if (props) { + for (const key in props) { + if (key !== "value" && !isReservedProp(key)) { + hostPatchProp(el, key, null, props[key], namespace, parentComponent); + } + } + if ("value" in props) { + hostPatchProp(el, "value", null, props.value, namespace); + } + if (vnodeHook = props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + } + { + def(el, "__vnode", vnode, true); + def(el, "__vueParentComponent", parentComponent, true); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + const needCallTransitionHooks = needTransition(parentSuspense, transition); + if (needCallTransitionHooks) { + transition.beforeEnter(el); + } + hostInsert(el, container, anchor); + if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + }; + const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { + if (scopeId) { + hostSetScopeId(el, scopeId); + } + if (slotScopeIds) { + for (let i = 0; i < slotScopeIds.length; i++) { + hostSetScopeId(el, slotScopeIds[i]); + } + } + if (parentComponent) { + let subTree = parentComponent.subTree; + if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) { + subTree = filterSingleRoot(subTree.children) || subTree; + } + if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) { + const parentVNode = parentComponent.vnode; + setScopeId( + el, + parentVNode, + parentVNode.scopeId, + parentVNode.slotScopeIds, + parentComponent.parent + ); + } + } + }; + const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => { + for (let i = start; i < children.length; i++) { + const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode$1(children[i]); + patch( + null, + child, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + }; + const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + const el = n2.el = n1.el; + { + el.__vnode = n2; + } + let { patchFlag, dynamicChildren, dirs } = n2; + patchFlag |= n1.patchFlag & 16; + const oldProps = n1.props || EMPTY_OBJ; + const newProps = n2.props || EMPTY_OBJ; + let vnodeHook; + parentComponent && toggleRecurse(parentComponent, false); + if (vnodeHook = newProps.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + } + if (dirs) { + invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate"); + } + parentComponent && toggleRecurse(parentComponent, true); + if (isHmrUpdating) { + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) { + hostSetElementText(el, ""); + } + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + el, + parentComponent, + parentSuspense, + resolveChildrenNamespace(n2, namespace), + slotScopeIds + ); + { + traverseStaticChildren(n1, n2); + } + } else if (!optimized) { + patchChildren( + n1, + n2, + el, + null, + parentComponent, + parentSuspense, + resolveChildrenNamespace(n2, namespace), + slotScopeIds, + false + ); + } + if (patchFlag > 0) { + if (patchFlag & 16) { + patchProps(el, oldProps, newProps, parentComponent, namespace); + } else { + if (patchFlag & 2) { + if (oldProps.class !== newProps.class) { + hostPatchProp(el, "class", null, newProps.class, namespace); + } + } + if (patchFlag & 4) { + hostPatchProp(el, "style", oldProps.style, newProps.style, namespace); + } + if (patchFlag & 8) { + const propsToUpdate = n2.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + const key = propsToUpdate[i]; + const prev = oldProps[key]; + const next = newProps[key]; + if (next !== prev || key === "value") { + hostPatchProp(el, key, prev, next, namespace, parentComponent); + } + } + } + } + if (patchFlag & 1) { + if (n1.children !== n2.children) { + hostSetElementText(el, n2.children); + } + } + } else if (!optimized && dynamicChildren == null) { + patchProps(el, oldProps, newProps, parentComponent, namespace); + } + if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated"); + }, parentSuspense); + } + }; + const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => { + for (let i = 0; i < newChildren.length; i++) { + const oldVNode = oldChildren[i]; + const newVNode = newChildren[i]; + const container = ( + // oldVNode may be an errored async setup() component inside Suspense + // which will not have a mounted element + oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent + // of the Fragment itself so it can move its children. + (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement + // which also requires the correct parent container + !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything. + oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : ( + // In other cases, the parent container is not actually used so we + // just pass the block element here to avoid a DOM parentNode call. + fallbackContainer + ) + ); + patch( + oldVNode, + newVNode, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + true + ); + } + }; + const patchProps = (el, oldProps, newProps, parentComponent, namespace) => { + if (oldProps !== newProps) { + if (oldProps !== EMPTY_OBJ) { + for (const key in oldProps) { + if (!isReservedProp(key) && !(key in newProps)) { + hostPatchProp( + el, + key, + oldProps[key], + null, + namespace, + parentComponent + ); + } + } + } + for (const key in newProps) { + if (isReservedProp(key)) continue; + const next = newProps[key]; + const prev = oldProps[key]; + if (next !== prev && key !== "value") { + hostPatchProp(el, key, prev, next, namespace, parentComponent); + } + } + if ("value" in newProps) { + hostPatchProp(el, "value", oldProps.value, newProps.value, namespace); + } + } + }; + const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(""); + const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(""); + let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; + if ( + // #5523 dev root fragment may inherit directives + isHmrUpdating || patchFlag & 2048 + ) { + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + if (n1 == null) { + hostInsert(fragmentStartAnchor, container, anchor); + hostInsert(fragmentEndAnchor, container, anchor); + mountChildren( + // #10007 + // such fragment like `<></>` will be compiled into + // a fragment which doesn't have a children. + // In this case fallback to an empty array + n2.children || [], + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result + // of renderSlot() with no valid children + n1.dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + container, + parentComponent, + parentSuspense, + namespace, + slotScopeIds + ); + { + traverseStaticChildren(n1, n2); + } + } else { + patchChildren( + n1, + n2, + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + } + }; + const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + n2.slotScopeIds = slotScopeIds; + if (n1 == null) { + if (n2.shapeFlag & 512) { + parentComponent.ctx.activate( + n2, + container, + anchor, + namespace, + optimized + ); + } else { + mountComponent( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + optimized + ); + } + } else { + updateComponent(n1, n2, optimized); + } + }; + const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => { + const instance = (initialVNode.component = createComponentInstance$1( + initialVNode, + parentComponent, + parentSuspense + )); + if (instance.type.__hmrId) { + registerHMR(instance); + } + { + pushWarningContext$1(initialVNode); + startMeasure(instance, `mount`); + } + if (isKeepAlive(initialVNode)) { + instance.ctx.renderer = internals; + } + { + { + startMeasure(instance, `init`); + } + setupComponent$1(instance, false, optimized); + { + endMeasure(instance, `init`); + } + } + if (isHmrUpdating) initialVNode.el = null; + if (instance.asyncDep) { + parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized); + if (!initialVNode.el) { + const placeholder = instance.subTree = createVNode(Comment); + processCommentNode(null, placeholder, container, anchor); + initialVNode.placeholder = placeholder.el; + } + } else { + setupRenderEffect( + instance, + initialVNode, + container, + anchor, + parentSuspense, + namespace, + optimized + ); + } + { + popWarningContext$1(); + endMeasure(instance, `mount`); + } + }; + const updateComponent = (n1, n2, optimized) => { + const instance = n2.component = n1.component; + if (shouldUpdateComponent(n1, n2, optimized)) { + if (instance.asyncDep && !instance.asyncResolved) { + { + pushWarningContext$1(n2); + } + updateComponentPreRender(instance, n2, optimized); + { + popWarningContext$1(); + } + return; + } else { + instance.next = n2; + instance.update(); + } + } else { + n2.el = n1.el; + instance.vnode = n2; + } + }; + const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => { + const componentUpdateFn = () => { + if (!instance.isMounted) { + let vnodeHook; + const { el, props } = initialVNode; + const { bm, m, parent, root, type } = instance; + const isAsyncWrapperVNode = isAsyncWrapper(initialVNode); + toggleRecurse(instance, false); + if (bm) { + invokeArrayFns(bm); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) { + invokeVNodeHook(vnodeHook, parent, initialVNode); + } + toggleRecurse(instance, true); + { + if (root.ce && // @ts-expect-error _def is private + root.ce._def.shadowRoot !== false) { + root.ce._injectChildStyle(type); + } + { + startMeasure(instance, `render`); + } + const subTree = instance.subTree = renderComponentRoot$1(instance); + { + endMeasure(instance, `render`); + } + { + startMeasure(instance, `patch`); + } + patch( + null, + subTree, + container, + anchor, + instance, + parentSuspense, + namespace + ); + { + endMeasure(instance, `patch`); + } + initialVNode.el = subTree.el; + } + if (m) { + queuePostRenderEffect(m, parentSuspense); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) { + const scopedInitialVNode = initialVNode; + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), + parentSuspense + ); + } + if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) { + instance.a && queuePostRenderEffect(instance.a, parentSuspense); + } + instance.isMounted = true; + { + devtoolsComponentAdded(instance); + } + initialVNode = container = anchor = null; + } else { + let { next, bu, u, parent, vnode } = instance; + { + const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance); + if (nonHydratedAsyncRoot) { + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } + nonHydratedAsyncRoot.asyncDep.then(() => { + if (!instance.isUnmounted) { + componentUpdateFn(); + } + }); + return; + } + } + let originNext = next; + let vnodeHook; + { + pushWarningContext$1(next || instance.vnode); + } + toggleRecurse(instance, false); + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } else { + next = vnode; + } + if (bu) { + invokeArrayFns(bu); + } + if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parent, next, vnode); + } + toggleRecurse(instance, true); + { + startMeasure(instance, `render`); + } + const nextTree = renderComponentRoot$1(instance); + { + endMeasure(instance, `render`); + } + const prevTree = instance.subTree; + instance.subTree = nextTree; + { + startMeasure(instance, `patch`); + } + patch( + prevTree, + nextTree, + // parent may have changed if it's in a teleport + hostParentNode(prevTree.el), + // anchor may have changed if it's in a fragment + getNextHostNode(prevTree), + instance, + parentSuspense, + namespace + ); + { + endMeasure(instance, `patch`); + } + next.el = nextTree.el; + if (originNext === null) { + updateHOCHostEl(instance, nextTree.el); + } + if (u) { + queuePostRenderEffect(u, parentSuspense); + } + if (vnodeHook = next.props && next.props.onVnodeUpdated) { + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, next, vnode), + parentSuspense + ); + } + { + devtoolsComponentUpdated(instance); + } + { + popWarningContext$1(); + } + } + }; + instance.scope.on(); + const effect = instance.effect = new ReactiveEffect(componentUpdateFn); + instance.scope.off(); + const update = instance.update = effect.run.bind(effect); + const job = instance.job = effect.runIfDirty.bind(effect); + job.i = instance; + job.id = instance.uid; + effect.scheduler = () => queueJob(job); + toggleRecurse(instance, true); + { + effect.onTrack = instance.rtc ? (e) => invokeArrayFns(instance.rtc, e) : void 0; + effect.onTrigger = instance.rtg ? (e) => invokeArrayFns(instance.rtg, e) : void 0; + } + update(); + }; + const updateComponentPreRender = (instance, nextVNode, optimized) => { + nextVNode.component = instance; + const prevProps = instance.vnode.props; + instance.vnode = nextVNode; + instance.next = null; + updateProps(instance, nextVNode.props, prevProps, optimized); + updateSlots(instance, nextVNode.children, optimized); + pauseTracking(); + flushPreFlushCbs(instance); + resetTracking(); + }; + const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => { + const c1 = n1 && n1.children; + const prevShapeFlag = n1 ? n1.shapeFlag : 0; + const c2 = n2.children; + const { patchFlag, shapeFlag } = n2; + if (patchFlag > 0) { + if (patchFlag & 128) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + return; + } else if (patchFlag & 256) { + patchUnkeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + return; + } + } + if (shapeFlag & 8) { + if (prevShapeFlag & 16) { + unmountChildren(c1, parentComponent, parentSuspense); + } + if (c2 !== c1) { + hostSetElementText(container, c2); + } + } else { + if (prevShapeFlag & 16) { + if (shapeFlag & 16) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + unmountChildren(c1, parentComponent, parentSuspense, true); + } + } else { + if (prevShapeFlag & 8) { + hostSetElementText(container, ""); + } + if (shapeFlag & 16) { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + } + } + }; + const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + c1 = c1 || EMPTY_ARR; + c2 = c2 || EMPTY_ARR; + const oldLength = c1.length; + const newLength = c2.length; + const commonLength = Math.min(oldLength, newLength); + let i; + for (i = 0; i < commonLength; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode$1(c2[i]); + patch( + c1[i], + nextChild, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } + if (oldLength > newLength) { + unmountChildren( + c1, + parentComponent, + parentSuspense, + true, + false, + commonLength + ); + } else { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + commonLength + ); + } + }; + const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { + let i = 0; + const l2 = c2.length; + let e1 = c1.length - 1; + let e2 = l2 - 1; + while (i <= e1 && i <= e2) { + const n1 = c1[i]; + const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode$1(c2[i]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + break; + } + i++; + } + while (i <= e1 && i <= e2) { + const n1 = c1[e1]; + const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode$1(c2[e2]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else { + break; + } + e1--; + e2--; + } + if (i > e1) { + if (i <= e2) { + const nextPos = e2 + 1; + const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor; + while (i <= e2) { + patch( + null, + c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode$1(c2[i]), + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + i++; + } + } + } else if (i > e2) { + while (i <= e1) { + unmount(c1[i], parentComponent, parentSuspense, true); + i++; + } + } else { + const s1 = i; + const s2 = i; + const keyToNewIndexMap = /* @__PURE__ */ new Map(); + for (i = s2; i <= e2; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode$1(c2[i]); + if (nextChild.key != null) { + if (keyToNewIndexMap.has(nextChild.key)) { + warn$1( + `Duplicate keys found during update:`, + JSON.stringify(nextChild.key), + `Make sure keys are unique.` + ); + } + keyToNewIndexMap.set(nextChild.key, i); + } + } + let j; + let patched = 0; + const toBePatched = e2 - s2 + 1; + let moved = false; + let maxNewIndexSoFar = 0; + const newIndexToOldIndexMap = new Array(toBePatched); + for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0; + for (i = s1; i <= e1; i++) { + const prevChild = c1[i]; + if (patched >= toBePatched) { + unmount(prevChild, parentComponent, parentSuspense, true); + continue; + } + let newIndex; + if (prevChild.key != null) { + newIndex = keyToNewIndexMap.get(prevChild.key); + } else { + for (j = s2; j <= e2; j++) { + if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) { + newIndex = j; + break; + } + } + } + if (newIndex === void 0) { + unmount(prevChild, parentComponent, parentSuspense, true); + } else { + newIndexToOldIndexMap[newIndex - s2] = i + 1; + if (newIndex >= maxNewIndexSoFar) { + maxNewIndexSoFar = newIndex; + } else { + moved = true; + } + patch( + prevChild, + c2[newIndex], + container, + null, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + patched++; + } + } + const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR; + j = increasingNewIndexSequence.length - 1; + for (i = toBePatched - 1; i >= 0; i--) { + const nextIndex = s2 + i; + const nextChild = c2[nextIndex]; + const anchorVNode = c2[nextIndex + 1]; + const anchor = nextIndex + 1 < l2 ? ( + // #13559, fallback to el placeholder for unresolved async component + anchorVNode.el || anchorVNode.placeholder + ) : parentAnchor; + if (newIndexToOldIndexMap[i] === 0) { + patch( + null, + nextChild, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized + ); + } else if (moved) { + if (j < 0 || i !== increasingNewIndexSequence[j]) { + move(nextChild, container, anchor, 2); + } else { + j--; + } + } + } + } + }; + const move = (vnode, container, anchor, moveType, parentSuspense = null) => { + const { el, type, transition, children, shapeFlag } = vnode; + if (shapeFlag & 6) { + move(vnode.component.subTree, container, anchor, moveType); + return; + } + if (shapeFlag & 128) { + vnode.suspense.move(container, anchor, moveType); + return; + } + if (shapeFlag & 64) { + type.move(vnode, container, anchor, internals); + return; + } + if (type === Fragment) { + hostInsert(el, container, anchor); + for (let i = 0; i < children.length; i++) { + move(children[i], container, anchor, moveType); + } + hostInsert(vnode.anchor, container, anchor); + return; + } + if (type === Static) { + moveStaticNode(vnode, container, anchor); + return; + } + const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition; + if (needTransition2) { + if (moveType === 0) { + transition.beforeEnter(el); + hostInsert(el, container, anchor); + queuePostRenderEffect(() => transition.enter(el), parentSuspense); + } else { + const { leave, delayLeave, afterLeave } = transition; + const remove2 = () => { + if (vnode.ctx.isUnmounted) { + hostRemove(el); + } else { + hostInsert(el, container, anchor); + } + }; + const performLeave = () => { + leave(el, () => { + remove2(); + afterLeave && afterLeave(); + }); + }; + if (delayLeave) { + delayLeave(el, remove2, performLeave); + } else { + performLeave(); + } + } + } else { + hostInsert(el, container, anchor); + } + }; + const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => { + const { + type, + props, + ref, + children, + dynamicChildren, + shapeFlag, + patchFlag, + dirs, + cacheIndex + } = vnode; + if (patchFlag === -2) { + optimized = false; + } + if (ref != null) { + pauseTracking(); + setRef(ref, null, parentSuspense, vnode, true); + resetTracking(); + } + if (cacheIndex != null) { + parentComponent.renderCache[cacheIndex] = void 0; + } + if (shapeFlag & 256) { + parentComponent.ctx.deactivate(vnode); + return; + } + const shouldInvokeDirs = shapeFlag & 1 && dirs; + const shouldInvokeVnodeHook = !isAsyncWrapper(vnode); + let vnodeHook; + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + if (shapeFlag & 6) { + unmountComponent(vnode.component, parentSuspense, doRemove); + } else { + if (shapeFlag & 128) { + vnode.suspense.unmount(parentSuspense, doRemove); + return; + } + if (shouldInvokeDirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount"); + } + if (shapeFlag & 64) { + vnode.type.remove( + vnode, + parentComponent, + parentSuspense, + internals, + doRemove + ); + } else if (dynamicChildren && // #5154 + // when v-once is used inside a block, setBlockTracking(-1) marks the + // parent block with hasOnce: true + // so that it doesn't take the fast path during unmount - otherwise + // components nested in v-once are never unmounted. + !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments + (type !== Fragment || patchFlag > 0 && patchFlag & 64)) { + unmountChildren( + dynamicChildren, + parentComponent, + parentSuspense, + false, + true + ); + } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) { + unmountChildren(children, parentComponent, parentSuspense); + } + if (doRemove) { + remove(vnode); + } + } + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted"); + }, parentSuspense); + } + }; + const remove = (vnode) => { + const { type, el, anchor, transition } = vnode; + if (type === Fragment) { + if (vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) { + vnode.children.forEach((child) => { + if (child.type === Comment) { + hostRemove(child.el); + } else { + remove(child); + } + }); + } else { + removeFragment(el, anchor); + } + return; + } + if (type === Static) { + removeStaticNode(vnode); + return; + } + const performRemove = () => { + hostRemove(el); + if (transition && !transition.persisted && transition.afterLeave) { + transition.afterLeave(); + } + }; + if (vnode.shapeFlag & 1 && transition && !transition.persisted) { + const { leave, delayLeave } = transition; + const performLeave = () => leave(el, performRemove); + if (delayLeave) { + delayLeave(vnode.el, performRemove, performLeave); + } else { + performLeave(); + } + } else { + performRemove(); + } + }; + const removeFragment = (cur, end) => { + let next; + while (cur !== end) { + next = hostNextSibling(cur); + hostRemove(cur); + cur = next; + } + hostRemove(end); + }; + const unmountComponent = (instance, parentSuspense, doRemove) => { + if (instance.type.__hmrId) { + unregisterHMR(instance); + } + const { + bum, + scope, + job, + subTree, + um, + m, + a, + parent, + slots: { __: slotCacheKeys } + } = instance; + invalidateMount(m); + invalidateMount(a); + if (bum) { + invokeArrayFns(bum); + } + if (parent && isArray(slotCacheKeys)) { + slotCacheKeys.forEach((v) => { + parent.renderCache[v] = void 0; + }); + } + scope.stop(); + if (job) { + job.flags |= 8; + unmount(subTree, instance, parentSuspense, doRemove); + } + if (um) { + queuePostRenderEffect(um, parentSuspense); + } + queuePostRenderEffect(() => { + instance.isUnmounted = true; + }, parentSuspense); + if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0) { + parentSuspense.resolve(); + } + } + { + devtoolsComponentRemoved(instance); + } + }; + const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => { + for (let i = start; i < children.length; i++) { + unmount(children[i], parentComponent, parentSuspense, doRemove, optimized); + } + }; + const getNextHostNode = (vnode) => { + if (vnode.shapeFlag & 6) { + return getNextHostNode(vnode.component.subTree); + } + if (vnode.shapeFlag & 128) { + return vnode.suspense.next(); + } + const el = hostNextSibling(vnode.anchor || vnode.el); + const teleportEnd = el && el[TeleportEndKey]; + return teleportEnd ? hostNextSibling(teleportEnd) : el; + }; + let isFlushing = false; + const render = (vnode, container, namespace) => { + if (vnode == null) { + if (container._vnode) { + unmount(container._vnode, null, null, true); + } + } else { + patch( + container._vnode || null, + vnode, + container, + null, + null, + null, + namespace + ); + } + container._vnode = vnode; + if (!isFlushing) { + isFlushing = true; + flushPreFlushCbs(); + flushPostFlushCbs(); + isFlushing = false; + } + }; + const internals = { + p: patch, + um: unmount, + m: move, + r: remove, + mt: mountComponent, + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + n: getNextHostNode, + o: options + }; + let hydrate; + return { + render, + hydrate, + createApp: createAppAPI(render) + }; +} +function resolveChildrenNamespace({ type, props }, currentNamespace) { + return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace; +} +function toggleRecurse({ effect, job }, allowed) { + if (allowed) { + effect.flags |= 32; + job.flags |= 4; + } else { + effect.flags &= -33; + job.flags &= -5; + } +} +function needTransition(parentSuspense, transition) { + return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted; +} +function traverseStaticChildren(n1, n2, shallow = false) { + const ch1 = n1.children; + const ch2 = n2.children; + if (isArray(ch1) && isArray(ch2)) { + for (let i = 0; i < ch1.length; i++) { + const c1 = ch1[i]; + let c2 = ch2[i]; + if (c2.shapeFlag & 1 && !c2.dynamicChildren) { + if (c2.patchFlag <= 0 || c2.patchFlag === 32) { + c2 = ch2[i] = cloneIfMounted(ch2[i]); + c2.el = c1.el; + } + if (!shallow && c2.patchFlag !== -2) + traverseStaticChildren(c1, c2); + } + if (c2.type === Text) { + c2.el = c1.el; + } + if (c2.type === Comment && !c2.el) { + c2.el = c1.el; + } + { + c2.el && (c2.el.__vnode = c2); + } + } + } +} +function getSequence(arr) { + const p = arr.slice(); + const result = [0]; + let i, j, u, v, c; + const len = arr.length; + for (i = 0; i < len; i++) { + const arrI = arr[i]; + if (arrI !== 0) { + j = result[result.length - 1]; + if (arr[j] < arrI) { + p[i] = j; + result.push(i); + continue; + } + u = 0; + v = result.length - 1; + while (u < v) { + c = u + v >> 1; + if (arr[result[c]] < arrI) { + u = c + 1; + } else { + v = c; + } + } + if (arrI < arr[result[u]]) { + if (u > 0) { + p[i] = result[u - 1]; + } + result[u] = i; + } + } + } + u = result.length; + v = result[u - 1]; + while (u-- > 0) { + result[u] = v; + v = p[v]; + } + return result; +} +function locateNonHydratedAsyncRoot(instance) { + const subComponent = instance.subTree.component; + if (subComponent) { + if (subComponent.asyncDep && !subComponent.asyncResolved) { + return subComponent; + } else { + return locateNonHydratedAsyncRoot(subComponent); + } + } +} +function invalidateMount(hooks) { + if (hooks) { + for (let i = 0; i < hooks.length; i++) + hooks[i].flags |= 8; + } +} + +const ssrContextKey = Symbol.for("v-scx"); +const useSSRContext = () => { + { + const ctx = inject(ssrContextKey); + if (!ctx) { + warn$1( + `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.` + ); + } + return ctx; + } +}; + +function watch(source, cb, options) { + if (!isFunction(cb)) { + warn$1( + `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` + ); + } + return doWatch(source, cb, options); +} +function doWatch(source, cb, options = EMPTY_OBJ) { + const { immediate, deep, flush, once } = options; + if (!cb) { + if (immediate !== void 0) { + warn$1( + `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (deep !== void 0) { + warn$1( + `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (once !== void 0) { + warn$1( + `watch() "once" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + } + const baseWatchOptions = extend({}, options); + baseWatchOptions.onWarn = warn$1; + const runsImmediately = cb && immediate || !cb && flush !== "post"; + let ssrCleanup; + if (isInSSRComponentSetup) { + if (flush === "sync") { + const ctx = useSSRContext(); + ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); + } else if (!runsImmediately) { + const watchStopHandle = () => { + }; + watchStopHandle.stop = NOOP; + watchStopHandle.resume = NOOP; + watchStopHandle.pause = NOOP; + return watchStopHandle; + } + } + const instance = currentInstance; + baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args); + let isPre = false; + if (flush === "post") { + baseWatchOptions.scheduler = (job) => { + queuePostRenderEffect(job, instance && instance.suspense); + }; + } else if (flush !== "sync") { + isPre = true; + baseWatchOptions.scheduler = (job, isFirstRun) => { + if (isFirstRun) { + job(); + } else { + queueJob(job); + } + }; + } + baseWatchOptions.augmentJob = (job) => { + if (cb) { + job.flags |= 4; + } + if (isPre) { + job.flags |= 2; + if (instance) { + job.id = instance.uid; + job.i = instance; + } + } + }; + const watchHandle = watch$1(source, cb, baseWatchOptions); + if (isInSSRComponentSetup) { + if (ssrCleanup) { + ssrCleanup.push(watchHandle); + } else if (runsImmediately) { + watchHandle(); + } + } + return watchHandle; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const reset = setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + reset(); + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} + +const getModelModifiers = (props, modelName) => { + return modelName === "modelValue" || modelName === "model-value" ? props.modelModifiers : props[`${modelName}Modifiers`] || props[`${camelize(modelName)}Modifiers`] || props[`${hyphenate(modelName)}Modifiers`]; +}; + +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) return; + const props = instance.vnode.props || EMPTY_OBJ; + { + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && true) { + if (!propsOptions || !(toHandlerKey(camelize(event)) in propsOptions)) { + warn$1( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(camelize(event))}" prop.` + ); + } + } else { + const validator = emitsOptions[event]; + if (isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn$1( + `Invalid event arguments: event validation failed for event "${event}".` + ); + } + } + } + } + } + let args = rawArgs; + const isModelListener = event.startsWith("update:"); + const modifiers = isModelListener && getModelModifiers(props, event.slice(7)); + if (modifiers) { + if (modifiers.trim) { + args = rawArgs.map((a) => isString(a) ? a.trim() : a); + } + if (modifiers.number) { + args = rawArgs.map(looseToNumber); + } + } + { + devtoolsComponentEmit(instance, event, args); + } + { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { + warn$1( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate( + event + )}" instead of "${event}".` + ); + } + } + let handlerName; + let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = toHandlerKey(camelize(event))]; + if (!handler && isModelListener) { + handler = props[handlerName = toHandlerKey(hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (!isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + extend(normalized, raw); + } + if (isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key); +} + +let accessedAttrs = false; +function markAttrsAccessed() { + accessedAttrs = true; +} +function renderComponentRoot$1(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + propsOptions: [propsOptions], + slots, + attrs, + emit, + render, + renderCache, + props, + data, + setupState, + ctx, + inheritAttrs + } = instance; + const prev = setCurrentRenderingInstance$1(instance); + let result; + let fallthroughAttrs; + { + accessedAttrs = false; + } + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn$1( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode$1( + render.call( + thisProxy, + proxyToUse, + renderCache, + true ? shallowReadonly(props) : props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render2 = Component; + if (attrs === props) { + markAttrsAccessed(); + } + result = normalizeVNode$1( + render2.length > 1 ? render2( + true ? shallowReadonly(props) : props, + true ? { + get attrs() { + markAttrsAccessed(); + return shallowReadonly(attrs); + }, + slots, + emit + } : { attrs, slots, emit } + ) : render2( + true ? shallowReadonly(props) : props, + null + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + let setRoot = void 0; + if (result.patchFlag > 0 && result.patchFlag & 2048) { + [root, setRoot] = getChildRoot(result); + } + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs, false, true); + } else if (!accessedAttrs && root.type !== Comment) { + const allAttrs = Object.keys(attrs); + const eventAttrs = []; + const extraAttrs = []; + for (let i = 0, l = allAttrs.length; i < l; i++) { + const key = allAttrs[i]; + if (isOn(key)) { + if (!isModelListener(key)) { + eventAttrs.push(key[2].toLowerCase() + key.slice(3)); + } + } else { + extraAttrs.push(key); + } + } + if (extraAttrs.length) { + warn$1( + `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text or teleport root nodes.` + ); + } + if (eventAttrs.length) { + warn$1( + `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` + ); + } + } + } + } + if (vnode.dirs) { + if (!isElementRoot(root)) { + warn$1( + `Runtime directive used on component with non-element root node. The directives will not function as intended.` + ); + } + root = cloneVNode(root, null, false, true); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + if (!isElementRoot(root)) { + warn$1( + `Component inside <Transition> renders non-element root node that cannot be animated.` + ); + } + setTransitionHooks(root, vnode.transition); + } + if (setRoot) { + setRoot(root); + } else { + result = root; + } + setCurrentRenderingInstance$1(prev); + return result; +} +const getChildRoot = (vnode) => { + const rawChildren = vnode.children; + const dynamicChildren = vnode.dynamicChildren; + const childRoot = filterSingleRoot(rawChildren, false); + if (!childRoot) { + return [vnode, void 0]; + } else if (childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) { + return getChildRoot(childRoot); + } + const index = rawChildren.indexOf(childRoot); + const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; + const setRoot = (updatedRoot) => { + rawChildren[index] = updatedRoot; + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } + } + }; + return [normalizeVNode$1(childRoot), setRoot]; +}; +function filterSingleRoot(children, recurse = true) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode$2(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + if (recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) { + return filterSingleRoot(singleRoot.children); + } + } + } + } else { + return; + } + } + return singleRoot; +} +const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +const isElementRoot = (vnode) => { + return vnode.shapeFlag & (6 | 1) || vnode.type === Comment; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if ((prevChildren || nextChildren) && isHmrUpdating) { + return true; + } + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function updateHOCHostEl({ vnode, parent }, el) { + while (parent) { + const root = parent.subTree; + if (root.suspense && root.suspense.activeBranch === vnode) { + root.el = vnode.el; + } + if (root === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } else { + break; + } + } +} + +const isSuspense = (type) => type.__isSuspense; +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} + +const Fragment = Symbol.for("v-fgt"); +const Text = Symbol.for("v-txt"); +const Comment = Symbol.for("v-cmt"); +const Static = Symbol.for("v-stc"); +let currentBlock = null; +let isBlockTreeEnabled = 1; +function setBlockTracking(value, inVOnce = false) { + isBlockTreeEnabled += value; + if (value < 0 && currentBlock && inVOnce) { + currentBlock.hasOnce = true; + } +} +function isVNode$2(value) { + return value ? value.__v_isVNode === true : false; +} +function isSameVNodeType(n1, n2) { + if (n2.shapeFlag & 6 && n1.component) { + const dirtyInstances = hmrDirtyComponents.get(n2.type); + if (dirtyInstances && dirtyInstances.has(n1.component)) { + n1.shapeFlag &= -257; + n2.shapeFlag &= -513; + return false; + } + } + return n1.type === n2.type && n1.key === n2.key; +} +const createVNodeWithArgsTransform = (...args) => { + return _createVNode( + ...args + ); +}; +const normalizeKey = ({ key }) => key != null ? key : null; +const normalizeRef = ({ + ref, + ref_key, + ref_for +}) => { + if (typeof ref === "number") { + ref = "" + ref; + } + return ref != null ? isString(ref) || isRef(ref) || isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null; +}; +function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) { + const vnode = { + __v_isVNode: true, + __v_skip: true, + type, + props, + key: props && normalizeKey(props), + ref: props && normalizeRef(props), + scopeId: currentScopeId, + slotScopeIds: null, + children, + component: null, + suspense: null, + ssContent: null, + ssFallback: null, + dirs: null, + transition: null, + el: null, + anchor: null, + target: null, + targetStart: null, + targetAnchor: null, + staticCount: 0, + shapeFlag, + patchFlag, + dynamicProps, + dynamicChildren: null, + appContext: null, + ctx: currentRenderingInstance + }; + if (needFullChildrenNormalization) { + normalizeChildren(vnode, children); + if (shapeFlag & 128) { + type.normalize(vnode); + } + } else if (children) { + vnode.shapeFlag |= isString(children) ? 8 : 16; + } + if (vnode.key !== vnode.key) { + warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type); + } + if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself + !isBlockNode && // has current parent block + currentBlock && // presence of a patch flag indicates this node needs patching on updates. + // component nodes also should always be patched, because even if the + // component doesn't need to update, it needs to persist the instance on to + // the next vnode so that it can be properly unmounted later. + (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the + // vnode should not be considered dynamic due to handler caching. + vnode.patchFlag !== 32) { + currentBlock.push(vnode); + } + return vnode; +} +const createVNode = createVNodeWithArgsTransform ; +function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) { + if (!type || type === NULL_DYNAMIC_COMPONENT) { + if (!type) { + warn$1(`Invalid vnode type when creating vnode: ${type}.`); + } + type = Comment; + } + if (isVNode$2(type)) { + const cloned = cloneVNode( + type, + props, + true + /* mergeRef: true */ + ); + if (children) { + normalizeChildren(cloned, children); + } + if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) { + if (cloned.shapeFlag & 6) { + currentBlock[currentBlock.indexOf(type)] = cloned; + } else { + currentBlock.push(cloned); + } + } + cloned.patchFlag = -2; + return cloned; + } + if (isClassComponent(type)) { + type = type.__vccOpts; + } + if (props) { + props = guardReactiveProps(props); + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (isObject(style)) { + if (isProxy(style) && !isArray(style)) { + style = extend({}, style); + } + props.style = normalizeStyle(style); + } + } + const shapeFlag = isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject(type) ? 4 : isFunction(type) ? 2 : 0; + if (shapeFlag & 4 && isProxy(type)) { + type = toRaw(type); + warn$1( + `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`, + ` +Component that was made reactive: `, + type + ); + } + return createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + isBlockNode, + true + ); +} +function guardReactiveProps(props) { + if (!props) return null; + return isProxy(props) || isInternalObject(props) ? extend({}, props) : props; +} +function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) { + const { props, ref, patchFlag, children, transition } = vnode; + const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props; + const cloned = { + __v_isVNode: true, + __v_skip: true, + type: vnode.type, + props: mergedProps, + key: mergedProps && normalizeKey(mergedProps), + ref: extraProps && extraProps.ref ? ( + // #2078 in the case of <component :is="vnode" ref="extra"/> + // if the vnode itself already has a ref, cloneVNode will need to merge + // the refs so the single vnode can be set on multiple refs + mergeRef && ref ? isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps) + ) : ref, + scopeId: vnode.scopeId, + slotScopeIds: vnode.slotScopeIds, + children: patchFlag === -1 && isArray(children) ? children.map(deepCloneVNode) : children, + target: vnode.target, + targetStart: vnode.targetStart, + targetAnchor: vnode.targetAnchor, + staticCount: vnode.staticCount, + shapeFlag: vnode.shapeFlag, + // if the vnode is cloned with extra props, we can no longer assume its + // existing patch flag to be reliable and need to add the FULL_PROPS flag. + // note: preserve flag for fragments since they use the flag for children + // fast paths only. + patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag, + dynamicProps: vnode.dynamicProps, + dynamicChildren: vnode.dynamicChildren, + appContext: vnode.appContext, + dirs: vnode.dirs, + transition, + // These should technically only be non-null on mounted VNodes. However, + // they *should* be copied for kept-alive vnodes. So we just always copy + // them since them being non-null during a mount doesn't affect the logic as + // they will simply be overwritten. + component: vnode.component, + suspense: vnode.suspense, + ssContent: vnode.ssContent && cloneVNode(vnode.ssContent), + ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback), + placeholder: vnode.placeholder, + el: vnode.el, + anchor: vnode.anchor, + ctx: vnode.ctx, + ce: vnode.ce + }; + if (transition && cloneTransition) { + setTransitionHooks( + cloned, + transition.clone(cloned) + ); + } + return cloned; +} +function deepCloneVNode(vnode) { + const cloned = cloneVNode(vnode); + if (isArray(vnode.children)) { + cloned.children = vnode.children.map(deepCloneVNode); + } + return cloned; +} +function createTextVNode(text = " ", flag = 0) { + return createVNode(Text, null, text, flag); +} +function normalizeVNode$1(child) { + if (child == null || typeof child === "boolean") { + return createVNode(Comment); + } else if (isArray(child)) { + return createVNode( + Fragment, + null, + // #3666, avoid reference pollution when reusing vnode + child.slice() + ); + } else if (isVNode$2(child)) { + return cloneIfMounted(child); + } else { + return createVNode(Text, null, String(child)); + } +} +function cloneIfMounted(child) { + return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child); +} +function normalizeChildren(vnode, children) { + let type = 0; + const { shapeFlag } = vnode; + if (children == null) { + children = null; + } else if (isArray(children)) { + type = 16; + } else if (typeof children === "object") { + if (shapeFlag & (1 | 64)) { + const slot = children.default; + if (slot) { + slot._c && (slot._d = false); + normalizeChildren(vnode, slot()); + slot._c && (slot._d = true); + } + return; + } else { + type = 32; + const slotFlag = children._; + if (!slotFlag && !isInternalObject(children)) { + children._ctx = currentRenderingInstance; + } else if (slotFlag === 3 && currentRenderingInstance) { + if (currentRenderingInstance.slots._ === 1) { + children._ = 1; + } else { + children._ = 2; + vnode.patchFlag |= 1024; + } + } + } + } else if (isFunction(children)) { + children = { default: children, _ctx: currentRenderingInstance }; + type = 32; + } else { + children = String(children); + if (shapeFlag & 64) { + type = 16; + children = [createTextVNode(children)]; + } else { + type = 8; + } + } + vnode.children = children; + vnode.shapeFlag |= type; +} +function mergeProps(...args) { + const ret = {}; + for (let i = 0; i < args.length; i++) { + const toMerge = args[i]; + for (const key in toMerge) { + if (key === "class") { + if (ret.class !== toMerge.class) { + ret.class = normalizeClass([ret.class, toMerge.class]); + } + } else if (key === "style") { + ret.style = normalizeStyle([ret.style, toMerge.style]); + } else if (isOn(key)) { + const existing = ret[key]; + const incoming = toMerge[key]; + if (incoming && existing !== incoming && !(isArray(existing) && existing.includes(incoming))) { + ret[key] = existing ? [].concat(existing, incoming) : incoming; + } + } else if (key !== "") { + ret[key] = toMerge[key]; + } + } + } + return ret; +} +function invokeVNodeHook(hook, instance, vnode, prevVNode = null) { + callWithAsyncErrorHandling(hook, instance, 7, [ + vnode, + prevVNode + ]); +} + +const emptyAppContext = createAppContext(); +let uid = 0; +function createComponentInstance$1(vnode, parent, suspense) { + const type = vnode.type; + const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext; + const instance = { + uid: uid++, + vnode, + type, + parent, + appContext, + root: null, + // to be immediately set + next: null, + subTree: null, + // will be set synchronously right after creation + effect: null, + update: null, + // will be set synchronously right after creation + job: null, + scope: new EffectScope( + true + /* detached */ + ), + render: null, + proxy: null, + exposed: null, + exposeProxy: null, + withProxy: null, + provides: parent ? parent.provides : Object.create(appContext.provides), + ids: parent ? parent.ids : ["", 0, 0], + accessCache: null, + renderCache: [], + // local resolved assets + components: null, + directives: null, + // resolved props and emits options + propsOptions: normalizePropsOptions(type, appContext), + emitsOptions: normalizeEmitsOptions(type, appContext), + // emit + emit: null, + // to be set immediately + emitted: null, + // props default value + propsDefaults: EMPTY_OBJ, + // inheritAttrs + inheritAttrs: type.inheritAttrs, + // state + ctx: EMPTY_OBJ, + data: EMPTY_OBJ, + props: EMPTY_OBJ, + attrs: EMPTY_OBJ, + slots: EMPTY_OBJ, + refs: EMPTY_OBJ, + setupState: EMPTY_OBJ, + setupContext: null, + // suspense related + suspense, + suspenseId: suspense ? suspense.pendingId : 0, + asyncDep: null, + asyncResolved: false, + // lifecycle hooks + // not using enums here because it results in computed properties + isMounted: false, + isUnmounted: false, + isDeactivated: false, + bc: null, + c: null, + bm: null, + m: null, + bu: null, + u: null, + um: null, + bum: null, + da: null, + a: null, + rtg: null, + rtc: null, + ec: null, + sp: null + }; + { + instance.ctx = createDevRenderContext(instance); + } + instance.root = parent ? parent.root : instance; + instance.emit = emit.bind(null, instance); + if (vnode.ce) { + vnode.ce(instance); + } + return instance; +} +let currentInstance = null; +const getCurrentInstance = () => currentInstance || currentRenderingInstance; +let internalSetCurrentInstance; +let setInSSRSetupState; +{ + const g = getGlobalThis(); + const registerGlobalSetter = (key, setter) => { + let setters; + if (!(setters = g[key])) setters = g[key] = []; + setters.push(setter); + return (v) => { + if (setters.length > 1) setters.forEach((set) => set(v)); + else setters[0](v); + }; + }; + internalSetCurrentInstance = registerGlobalSetter( + `__VUE_INSTANCE_SETTERS__`, + (v) => currentInstance = v + ); + setInSSRSetupState = registerGlobalSetter( + `__VUE_SSR_SETTERS__`, + (v) => isInSSRComponentSetup = v + ); +} +const setCurrentInstance = (instance) => { + const prev = currentInstance; + internalSetCurrentInstance(instance); + instance.scope.on(); + return () => { + instance.scope.off(); + internalSetCurrentInstance(prev); + }; +}; +const unsetCurrentInstance = () => { + currentInstance && currentInstance.scope.off(); + internalSetCurrentInstance(null); +}; +const isBuiltInTag = /* @__PURE__ */ makeMap("slot,component"); +function validateComponentName(name, { isNativeTag }) { + if (isBuiltInTag(name) || isNativeTag(name)) { + warn$1( + "Do not use built-in or reserved HTML elements as component id: " + name + ); + } +} +function isStatefulComponent(instance) { + return instance.vnode.shapeFlag & 4; +} +let isInSSRComponentSetup = false; +function setupComponent$1(instance, isSSR = false, optimized = false) { + isSSR && setInSSRSetupState(isSSR); + const { props, children } = instance.vnode; + const isStateful = isStatefulComponent(instance); + initProps(instance, props, isStateful, isSSR); + initSlots(instance, children, optimized || isSSR); + const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; + isSSR && setInSSRSetupState(false); + return setupResult; +} +function setupStatefulComponent(instance, isSSR) { + var _a; + const Component = instance.type; + { + if (Component.name) { + validateComponentName(Component.name, instance.appContext.config); + } + if (Component.components) { + const names = Object.keys(Component.components); + for (let i = 0; i < names.length; i++) { + validateComponentName(names[i], instance.appContext.config); + } + } + if (Component.directives) { + const names = Object.keys(Component.directives); + for (let i = 0; i < names.length; i++) { + validateDirectiveName(names[i]); + } + } + if (Component.compilerOptions && isRuntimeOnly()) { + warn$1( + `"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.` + ); + } + } + instance.accessCache = /* @__PURE__ */ Object.create(null); + instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers); + { + exposePropsOnRenderContext(instance); + } + const { setup } = Component; + if (setup) { + pauseTracking(); + const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; + const reset = setCurrentInstance(instance); + const setupResult = callWithErrorHandling( + setup, + instance, + 0, + [ + shallowReadonly(instance.props) , + setupContext + ] + ); + const isAsyncSetup = isPromise(setupResult); + resetTracking(); + reset(); + if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) { + markAsyncBoundary(instance); + } + if (isAsyncSetup) { + setupResult.then(unsetCurrentInstance, unsetCurrentInstance); + if (isSSR) { + return setupResult.then((resolvedResult) => { + handleSetupResult(instance, resolvedResult, isSSR); + }).catch((e) => { + handleError(e, instance, 0); + }); + } else { + instance.asyncDep = setupResult; + if (!instance.suspense) { + const name = (_a = Component.name) != null ? _a : "Anonymous"; + warn$1( + `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.` + ); + } + } + } else { + handleSetupResult(instance, setupResult, isSSR); + } + } else { + finishComponentSetup(instance, isSSR); + } +} +function handleSetupResult(instance, setupResult, isSSR) { + if (isFunction(setupResult)) { + if (instance.type.__ssrInlineRender) { + instance.ssrRender = setupResult; + } else { + instance.render = setupResult; + } + } else if (isObject(setupResult)) { + if (isVNode$2(setupResult)) { + warn$1( + `setup() should not return VNodes directly - return a render function instead.` + ); + } + { + instance.devtoolsRawSetupState = setupResult; + } + instance.setupState = proxyRefs(setupResult); + { + exposeSetupStateOnRenderContext(instance); + } + } else if (setupResult !== void 0) { + warn$1( + `setup() should return an object. Received: ${setupResult === null ? "null" : typeof setupResult}` + ); + } + finishComponentSetup(instance, isSSR); +} +const isRuntimeOnly = () => true; +function finishComponentSetup(instance, isSSR, skipOptions) { + const Component = instance.type; + if (!instance.render) { + instance.render = Component.render || NOOP; + } + { + const reset = setCurrentInstance(instance); + pauseTracking(); + try { + applyOptions(instance); + } finally { + resetTracking(); + reset(); + } + } + if (!Component.render && instance.render === NOOP && !isSSR) { + if (Component.template) { + warn$1( + `Component provided template option but runtime compilation is not supported in this build of Vue.` + (` Use "vue.esm-browser.js" instead.` ) + ); + } else { + warn$1(`Component is missing template or render function: `, Component); + } + } +} +const attrsProxyHandlers = { + get(target, key) { + markAttrsAccessed(); + track(target, "get", ""); + return target[key]; + }, + set() { + warn$1(`setupContext.attrs is readonly.`); + return false; + }, + deleteProperty() { + warn$1(`setupContext.attrs is readonly.`); + return false; + } +} ; +function getSlotsProxy(instance) { + return new Proxy(instance.slots, { + get(target, key) { + track(instance, "get", "$slots"); + return target[key]; + } + }); +} +function createSetupContext(instance) { + const expose = (exposed) => { + { + if (instance.exposed) { + warn$1(`expose() should be called only once per setup().`); + } + if (exposed != null) { + let exposedType = typeof exposed; + if (exposedType === "object") { + if (isArray(exposed)) { + exposedType = "array"; + } else if (isRef(exposed)) { + exposedType = "ref"; + } + } + if (exposedType !== "object") { + warn$1( + `expose() should be passed a plain object, received ${exposedType}.` + ); + } + } + } + instance.exposed = exposed || {}; + }; + { + let attrsProxy; + let slotsProxy; + return Object.freeze({ + get attrs() { + return attrsProxy || (attrsProxy = new Proxy(instance.attrs, attrsProxyHandlers)); + }, + get slots() { + return slotsProxy || (slotsProxy = getSlotsProxy(instance)); + }, + get emit() { + return (event, ...args) => instance.emit(event, ...args); + }, + expose + }); + } +} +function getComponentPublicInstance(instance) { + if (instance.exposed) { + return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), { + get(target, key) { + if (key in target) { + return target[key]; + } else if (key in publicPropertiesMap) { + return publicPropertiesMap[key](instance); + } + }, + has(target, key) { + return key in target || key in publicPropertiesMap; + } + })); + } else { + return instance.proxy; + } +} +const classifyRE = /(?:^|[-_])(\w)/g; +const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, ""); +function getComponentName(Component, includeInferred = true) { + return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; +} +function formatComponentName(instance, Component, isRoot = false) { + let name = getComponentName(Component); + if (!name && Component.__file) { + const match = Component.__file.match(/([^/\\]+)\.\w+$/); + if (match) { + name = match[1]; + } + } + if (!name && instance && instance.parent) { + const inferFromRegistry = (registry) => { + for (const key in registry) { + if (registry[key] === Component) { + return key; + } + } + }; + name = inferFromRegistry( + instance.components || instance.parent.type.components + ) || inferFromRegistry(instance.appContext.components); + } + return name ? classify(name) : isRoot ? `App` : `Anonymous`; +} +function isClassComponent(value) { + return isFunction(value) && "__vccOpts" in value; +} + +const computed = (getterOrOptions, debugOptions) => { + const c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup); + { + const i = getCurrentInstance(); + if (i && i.appContext.config.warnRecursiveComputed) { + c._warnRecursive = true; + } + } + return c; +}; + +const version = "3.5.18"; +const warn = warn$1 ; +const _ssrUtils = { + createComponentInstance: createComponentInstance$1, + setupComponent: setupComponent$1, + renderComponentRoot: renderComponentRoot$1, + setCurrentRenderingInstance: setCurrentRenderingInstance$1, + isVNode: isVNode$2, + normalizeVNode: normalizeVNode$1, + getComponentPublicInstance, + ensureValidVNode: ensureValidVNode$1, + pushWarningContext: pushWarningContext$1, + popWarningContext: popWarningContext$1 +}; +const ssrUtils = _ssrUtils ; + +let policy = void 0; +const tt = typeof window !== "undefined" && window.trustedTypes; +if (tt) { + try { + policy = /* @__PURE__ */ tt.createPolicy("vue", { + createHTML: (val) => val + }); + } catch (e) { + warn(`Error creating trusted types policy: ${e}`); + } +} +const unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val; +const svgNS = "http://www.w3.org/2000/svg"; +const mathmlNS = "http://www.w3.org/1998/Math/MathML"; +const doc = typeof document !== "undefined" ? document : null; +const templateContainer = doc && /* @__PURE__ */ doc.createElement("template"); +const nodeOps = { + insert: (child, parent, anchor) => { + parent.insertBefore(child, anchor || null); + }, + remove: (child) => { + const parent = child.parentNode; + if (parent) { + parent.removeChild(child); + } + }, + createElement: (tag, namespace, is, props) => { + const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag); + if (tag === "select" && props && props.multiple != null) { + el.setAttribute("multiple", props.multiple); + } + return el; + }, + createText: (text) => doc.createTextNode(text), + createComment: (text) => doc.createComment(text), + setText: (node, text) => { + node.nodeValue = text; + }, + setElementText: (el, text) => { + el.textContent = text; + }, + parentNode: (node) => node.parentNode, + nextSibling: (node) => node.nextSibling, + querySelector: (selector) => doc.querySelector(selector), + setScopeId(el, id) { + el.setAttribute(id, ""); + }, + // __UNSAFE__ + // Reason: innerHTML. + // Static content here can only come from compiled templates. + // As long as the user only uses trusted templates, this is safe. + insertStaticContent(content, parent, anchor, namespace, start, end) { + const before = anchor ? anchor.previousSibling : parent.lastChild; + if (start && (start === end || start.nextSibling)) { + while (true) { + parent.insertBefore(start.cloneNode(true), anchor); + if (start === end || !(start = start.nextSibling)) break; + } + } else { + templateContainer.innerHTML = unsafeToTrustedHTML( + namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content + ); + const template = templateContainer.content; + if (namespace === "svg" || namespace === "mathml") { + const wrapper = template.firstChild; + while (wrapper.firstChild) { + template.appendChild(wrapper.firstChild); + } + template.removeChild(wrapper); + } + parent.insertBefore(template, anchor); + } + return [ + // first + before ? before.nextSibling : parent.firstChild, + // last + anchor ? anchor.previousSibling : parent.lastChild + ]; + } +}; + +const vtcKey = Symbol("_vtc"); + +function patchClass(el, value, isSVG) { + const transitionClasses = el[vtcKey]; + if (transitionClasses) { + value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" "); + } + if (value == null) { + el.removeAttribute("class"); + } else if (isSVG) { + el.setAttribute("class", value); + } else { + el.className = value; + } +} + +const vShowOriginalDisplay = Symbol("_vod"); +const vShowHidden = Symbol("_vsh"); + +const CSS_VAR_TEXT = Symbol("CSS_VAR_TEXT" ); + +const displayRE = /(^|;)\s*display\s*:/; +function patchStyle(el, prev, next) { + const style = el.style; + const isCssString = isString(next); + let hasControlledDisplay = false; + if (next && !isCssString) { + if (prev) { + if (!isString(prev)) { + for (const key in prev) { + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } else { + for (const prevStyle of prev.split(";")) { + const key = prevStyle.slice(0, prevStyle.indexOf(":")).trim(); + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } + } + for (const key in next) { + if (key === "display") { + hasControlledDisplay = true; + } + setStyle(style, key, next[key]); + } + } else { + if (isCssString) { + if (prev !== next) { + const cssVarText = style[CSS_VAR_TEXT]; + if (cssVarText) { + next += ";" + cssVarText; + } + style.cssText = next; + hasControlledDisplay = displayRE.test(next); + } + } else if (prev) { + el.removeAttribute("style"); + } + } + if (vShowOriginalDisplay in el) { + el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : ""; + if (el[vShowHidden]) { + style.display = "none"; + } + } +} +const semicolonRE = /[^\\];\s*$/; +const importantRE = /\s*!important$/; +function setStyle(style, name, val) { + if (isArray(val)) { + val.forEach((v) => setStyle(style, name, v)); + } else { + if (val == null) val = ""; + { + if (semicolonRE.test(val)) { + warn( + `Unexpected semicolon at the end of '${name}' style value: '${val}'` + ); + } + } + if (name.startsWith("--")) { + style.setProperty(name, val); + } else { + const prefixed = autoPrefix(style, name); + if (importantRE.test(val)) { + style.setProperty( + hyphenate(prefixed), + val.replace(importantRE, ""), + "important" + ); + } else { + style[prefixed] = val; + } + } + } +} +const prefixes = ["Webkit", "Moz", "ms"]; +const prefixCache = {}; +function autoPrefix(style, rawName) { + const cached = prefixCache[rawName]; + if (cached) { + return cached; + } + let name = camelize(rawName); + if (name !== "filter" && name in style) { + return prefixCache[rawName] = name; + } + name = capitalize(name); + for (let i = 0; i < prefixes.length; i++) { + const prefixed = prefixes[i] + name; + if (prefixed in style) { + return prefixCache[rawName] = prefixed; + } + } + return rawName; +} + +const xlinkNS = "http://www.w3.org/1999/xlink"; +function patchAttr(el, key, value, isSVG, instance, isBoolean = isSpecialBooleanAttr(key)) { + if (isSVG && key.startsWith("xlink:")) { + if (value == null) { + el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); + } else { + el.setAttributeNS(xlinkNS, key, value); + } + } else { + if (value == null || isBoolean && !includeBooleanAttr(value)) { + el.removeAttribute(key); + } else { + el.setAttribute( + key, + isBoolean ? "" : isSymbol(value) ? String(value) : value + ); + } + } +} + +function patchDOMProp(el, key, value, parentComponent, attrName) { + if (key === "innerHTML" || key === "textContent") { + if (value != null) { + el[key] = key === "innerHTML" ? unsafeToTrustedHTML(value) : value; + } + return; + } + const tag = el.tagName; + if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally + !tag.includes("-")) { + const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value; + const newValue = value == null ? ( + // #11647: value should be set as empty string for null and undefined, + // but <input type="checkbox"> should be set as 'on'. + el.type === "checkbox" ? "on" : "" + ) : String(value); + if (oldValue !== newValue || !("_value" in el)) { + el.value = newValue; + } + if (value == null) { + el.removeAttribute(key); + } + el._value = value; + return; + } + let needRemove = false; + if (value === "" || value == null) { + const type = typeof el[key]; + if (type === "boolean") { + value = includeBooleanAttr(value); + } else if (value == null && type === "string") { + value = ""; + needRemove = true; + } else if (type === "number") { + value = 0; + needRemove = true; + } + } + try { + el[key] = value; + } catch (e) { + if (!needRemove) { + warn( + `Failed setting prop "${key}" on <${tag.toLowerCase()}>: value ${value} is invalid.`, + e + ); + } + } + needRemove && el.removeAttribute(attrName || key); +} + +function addEventListener(el, event, handler, options) { + el.addEventListener(event, handler, options); +} +function removeEventListener(el, event, handler, options) { + el.removeEventListener(event, handler, options); +} +const veiKey = Symbol("_vei"); +function patchEvent(el, rawName, prevValue, nextValue, instance = null) { + const invokers = el[veiKey] || (el[veiKey] = {}); + const existingInvoker = invokers[rawName]; + if (nextValue && existingInvoker) { + existingInvoker.value = sanitizeEventValue(nextValue, rawName) ; + } else { + const [name, options] = parseName(rawName); + if (nextValue) { + const invoker = invokers[rawName] = createInvoker( + sanitizeEventValue(nextValue, rawName) , + instance + ); + addEventListener(el, name, invoker, options); + } else if (existingInvoker) { + removeEventListener(el, name, existingInvoker, options); + invokers[rawName] = void 0; + } + } +} +const optionsModifierRE = /(?:Once|Passive|Capture)$/; +function parseName(name) { + let options; + if (optionsModifierRE.test(name)) { + options = {}; + let m; + while (m = name.match(optionsModifierRE)) { + name = name.slice(0, name.length - m[0].length); + options[m[0].toLowerCase()] = true; + } + } + const event = name[2] === ":" ? name.slice(3) : hyphenate(name.slice(2)); + return [event, options]; +} +let cachedNow = 0; +const p = /* @__PURE__ */ Promise.resolve(); +const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now()); +function createInvoker(initialValue, instance) { + const invoker = (e) => { + if (!e._vts) { + e._vts = Date.now(); + } else if (e._vts <= invoker.attached) { + return; + } + callWithAsyncErrorHandling( + patchStopImmediatePropagation(e, invoker.value), + instance, + 5, + [e] + ); + }; + invoker.value = initialValue; + invoker.attached = getNow(); + return invoker; +} +function sanitizeEventValue(value, propName) { + if (isFunction(value) || isArray(value)) { + return value; + } + warn( + `Wrong type passed as event handler to ${propName} - did you forget @ or : in front of your prop? +Expected function or array of functions, received type ${typeof value}.` + ); + return NOOP; +} +function patchStopImmediatePropagation(e, value) { + if (isArray(value)) { + const originalStop = e.stopImmediatePropagation; + e.stopImmediatePropagation = () => { + originalStop.call(e); + e._stopped = true; + }; + return value.map( + (fn) => (e2) => !e2._stopped && fn && fn(e2) + ); + } else { + return value; + } +} + +const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter +key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123; +const patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => { + const isSVG = namespace === "svg"; + if (key === "class") { + patchClass(el, nextValue, isSVG); + } else if (key === "style") { + patchStyle(el, prevValue, nextValue); + } else if (isOn(key)) { + if (!isModelListener(key)) { + patchEvent(el, key, prevValue, nextValue, parentComponent); + } + } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) { + patchDOMProp(el, key, nextValue); + if (!el.tagName.includes("-") && (key === "value" || key === "checked" || key === "selected")) { + patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value"); + } + } else if ( + // #11081 force set props for possible async custom element + el._isVueCE && (/[A-Z]/.test(key) || !isString(nextValue)) + ) { + patchDOMProp(el, camelize(key), nextValue, parentComponent, key); + } else { + if (key === "true-value") { + el._trueValue = nextValue; + } else if (key === "false-value") { + el._falseValue = nextValue; + } + patchAttr(el, key, nextValue, isSVG); + } +}; +function shouldSetAsProp(el, key, value, isSVG) { + if (isSVG) { + if (key === "innerHTML" || key === "textContent") { + return true; + } + if (key in el && isNativeOn(key) && isFunction(value)) { + return true; + } + return false; + } + if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") { + return false; + } + if (key === "form") { + return false; + } + if (key === "list" && el.tagName === "INPUT") { + return false; + } + if (key === "type" && el.tagName === "TEXTAREA") { + return false; + } + if (key === "width" || key === "height") { + const tag = el.tagName; + if (tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE") { + return false; + } + } + if (isNativeOn(key) && isString(value)) { + return false; + } + return key in el; +} + +const vModelText = { + }; +const vModelCheckbox = { + }; +const vModelRadio = { + }; +function initVModelForSSR() { + vModelText.getSSRProps = ({ value }) => ({ value }); + vModelRadio.getSSRProps = ({ value }, vnode) => { + if (vnode.props && looseEqual(vnode.props.value, value)) { + return { checked: true }; + } + }; + vModelCheckbox.getSSRProps = ({ value }, vnode) => { + if (isArray(value)) { + if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) { + return { checked: true }; + } + } else if (isSet(value)) { + if (vnode.props && value.has(vnode.props.value)) { + return { checked: true }; + } + } else if (value) { + return { checked: true }; + } + }; +} + +const rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps); +let renderer; +function ensureRenderer() { + return renderer || (renderer = createRenderer(rendererOptions)); +} +const createApp = (...args) => { + const app = ensureRenderer().createApp(...args); + { + injectNativeTagCheck(app); + injectCompilerOptionsCheck(app); + } + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (!container) return; + const component = app._component; + if (!isFunction(component) && !component.render && !component.template) { + component.template = container.innerHTML; + } + if (container.nodeType === 1) { + container.textContent = ""; + } + const proxy = mount(container, false, resolveRootNamespace(container)); + if (container instanceof Element) { + container.removeAttribute("v-cloak"); + container.setAttribute("data-v-app", ""); + } + return proxy; + }; + return app; +}; +function resolveRootNamespace(container) { + if (container instanceof SVGElement) { + return "svg"; + } + if (typeof MathMLElement === "function" && container instanceof MathMLElement) { + return "mathml"; + } +} +function injectNativeTagCheck(app) { + Object.defineProperty(app.config, "isNativeTag", { + value: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag), + writable: false + }); +} +function injectCompilerOptionsCheck(app) { + { + const isCustomElement = app.config.isCustomElement; + Object.defineProperty(app.config, "isCustomElement", { + get() { + return isCustomElement; + }, + set() { + warn( + `The \`isCustomElement\` config option is deprecated. Use \`compilerOptions.isCustomElement\` instead.` + ); + } + }); + const compilerOptions = app.config.compilerOptions; + const msg = `The \`compilerOptions\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka "full build"). Since you are using the runtime-only build, \`compilerOptions\` must be passed to \`@vue/compiler-dom\` in the build setup instead. +- For vue-loader: pass it via vue-loader's \`compilerOptions\` loader option. +- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader +- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`; + Object.defineProperty(app.config, "compilerOptions", { + get() { + warn(msg); + return compilerOptions; + }, + set() { + warn(msg); + } + }); + } +} +function normalizeContainer(container) { + if (isString(container)) { + const res = document.querySelector(container); + if (!res) { + warn( + `Failed to mount app: mount target selector "${container}" returned null.` + ); + } + return res; + } + if (window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === "closed") { + warn( + `mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs` + ); + } + return container; +} +let ssrDirectiveInitialized = false; +const initDirectivesForSSR = () => { + if (!ssrDirectiveInitialized) { + ssrDirectiveInitialized = true; + initVModelForSSR(); + } +} ; + +const shouldIgnoreProp = /* @__PURE__ */ makeMap( + `,key,ref,innerHTML,textContent,ref_key,ref_for` +); +function ssrRenderAttrs(props, tag) { + let ret = ""; + for (const key in props) { + if (shouldIgnoreProp(key) || isOn(key) || tag === "textarea" && key === "value") { + continue; + } + const value = props[key]; + if (key === "class") { + ret += ` class="${ssrRenderClass(value)}"`; + } else if (key === "style") { + ret += ` style="${ssrRenderStyle(value)}"`; + } else if (key === "className") { + ret += ` class="${String(value)}"`; + } else { + ret += ssrRenderDynamicAttr(key, value, tag); + } + } + return ret; +} +function ssrRenderDynamicAttr(key, value, tag) { + if (!isRenderableAttrValue(value)) { + return ``; + } + const attrKey = tag && (tag.indexOf("-") > 0 || isSVGTag(tag)) ? key : propsToAttrMap[key] || key.toLowerCase(); + if (isBooleanAttr(attrKey)) { + return includeBooleanAttr(value) ? ` ${attrKey}` : ``; + } else if (isSSRSafeAttrName(attrKey)) { + return value === "" ? ` ${attrKey}` : ` ${attrKey}="${escapeHtml(value)}"`; + } else { + console.warn( + `[@vue/server-renderer] Skipped rendering unsafe attribute name: ${attrKey}` + ); + return ``; + } +} +function ssrRenderAttr(key, value) { + if (!isRenderableAttrValue(value)) { + return ``; + } + return ` ${key}="${escapeHtml(value)}"`; +} +function ssrRenderClass(raw) { + return escapeHtml(normalizeClass(raw)); +} +function ssrRenderStyle(raw) { + if (!raw) { + return ""; + } + if (isString(raw)) { + return escapeHtml(raw); + } + const styles = normalizeStyle(ssrResetCssVars(raw)); + return escapeHtml(stringifyStyle(styles)); +} +function ssrResetCssVars(raw) { + if (!isArray(raw) && isObject(raw)) { + const res = {}; + for (const key in raw) { + if (key.startsWith(":--")) { + res[key.slice(1)] = normalizeCssVarValue(raw[key]); + } else { + res[key] = raw[key]; + } + } + return res; + } + return raw; +} + +function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) { + return renderComponentVNode( + createVNode(comp, props, children), + parentComponent, + slotScopeId + ); +} + +const { ensureValidVNode } = ssrUtils; +function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) { + push(`<!--[-->`); + ssrRenderSlotInner( + slots, + slotName, + slotProps, + fallbackRenderFn, + push, + parentComponent, + slotScopeId + ); + push(`<!--]-->`); +} +function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) { + const slotFn = slots[slotName]; + if (slotFn) { + const slotBuffer = []; + const bufferedPush = (item) => { + slotBuffer.push(item); + }; + const ret = slotFn( + slotProps, + bufferedPush, + parentComponent, + slotScopeId ? " " + slotScopeId : "" + ); + if (isArray(ret)) { + const validSlotContent = ensureValidVNode(ret); + if (validSlotContent) { + renderVNodeChildren( + push, + validSlotContent, + parentComponent, + slotScopeId + ); + } else if (fallbackRenderFn) { + fallbackRenderFn(); + } else if (transition) { + push(`<!---->`); + } + } else { + let isEmptySlot = true; + if (transition) { + isEmptySlot = false; + } else { + for (let i = 0; i < slotBuffer.length; i++) { + if (!isComment(slotBuffer[i])) { + isEmptySlot = false; + break; + } + } + } + if (isEmptySlot) { + if (fallbackRenderFn) { + fallbackRenderFn(); + } + } else { + let start = 0; + let end = slotBuffer.length; + if (transition && slotBuffer[0] === "<!--[-->" && slotBuffer[end - 1] === "<!--]-->") { + start++; + end--; + } + if (start < end) { + for (let i = start; i < end; i++) { + push(slotBuffer[i]); + } + } else if (transition) { + push(`<!---->`); + } + } + } + } else if (fallbackRenderFn) { + fallbackRenderFn(); + } else if (transition) { + push(`<!---->`); + } +} +const commentTestRE = /^<!--[\s\S]*-->$/; +const commentRE = /<!--[^]*?-->/gm; +function isComment(item) { + if (typeof item !== "string" || !commentTestRE.test(item)) return false; + if (item.length <= 8) return true; + return !item.replace(commentRE, "").trim(); +} + +function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) { + parentPush("<!--teleport start-->"); + const context = parentComponent.appContext.provides[ssrContextKey]; + const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {}); + const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []); + const bufferIndex = targetBuffer.length; + let teleportContent; + if (disabled) { + contentRenderFn(parentPush); + teleportContent = `<!--teleport start anchor--><!--teleport anchor-->`; + } else { + const { getBuffer, push } = createBuffer(); + push(`<!--teleport start anchor-->`); + contentRenderFn(push); + push(`<!--teleport anchor-->`); + teleportContent = getBuffer(); + } + targetBuffer.splice(bufferIndex, 0, teleportContent); + parentPush("<!--teleport end-->"); +} + +function ssrInterpolate(value) { + return escapeHtml(toDisplayString(value)); +} + +function ssrRenderList(source, renderItem) { + if (isArray(source) || isString(source)) { + for (let i = 0, l = source.length; i < l; i++) { + renderItem(source[i], i); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn(`The v-for range expect an integer value but got ${source}.`); + return; + } + for (let i = 0; i < source; i++) { + renderItem(i + 1, i); + } + } else if (isObject(source)) { + if (source[Symbol.iterator]) { + const arr = Array.from(source); + for (let i = 0, l = arr.length; i < l; i++) { + renderItem(arr[i], i); + } + } else { + const keys = Object.keys(source); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + renderItem(source[key], key, i); + } + } + } +} + +async function ssrRenderSuspense(push, { default: renderContent }) { + if (renderContent) { + renderContent(); + } else { + push(`<!---->`); + } +} + +function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) { + if (typeof dir !== "function" && dir.getSSRProps) { + return dir.getSSRProps( + { + dir, + instance: ssrUtils.getComponentPublicInstance(instance.$), + value, + oldValue: void 0, + arg, + modifiers + }, + null + ) || {}; + } + return {}; +} + +const ssrLooseEqual = looseEqual; +function ssrLooseContain(arr, value) { + return looseIndexOf(arr, value) > -1; +} +function ssrRenderDynamicModel(type, model, value) { + switch (type) { + case "radio": + return looseEqual(model, value) ? " checked" : ""; + case "checkbox": + return (isArray(model) ? ssrLooseContain(model, value) : model) ? " checked" : ""; + default: + return ssrRenderAttr("value", model); + } +} +function ssrGetDynamicModelProps(existingProps = {}, model) { + const { type, value } = existingProps; + switch (type) { + case "radio": + return looseEqual(model, value) ? { checked: true } : null; + case "checkbox": + return (isArray(model) ? ssrLooseContain(model, value) : model) ? { checked: true } : null; + default: + return { value: model }; + } +} + +function ssrCompile(template, instance) { + { + throw new Error( + `On-the-fly template compilation is not supported in the ESM build of @vue/server-renderer. All templates must be pre-compiled into render functions.` + ); + } +} + +const { + createComponentInstance, + setCurrentRenderingInstance, + setupComponent, + renderComponentRoot, + normalizeVNode, + pushWarningContext, + popWarningContext +} = ssrUtils; +function createBuffer() { + let appendable = false; + const buffer = []; + return { + getBuffer() { + return buffer; + }, + push(item) { + const isStringItem = isString(item); + if (appendable && isStringItem) { + buffer[buffer.length - 1] += item; + return; + } + buffer.push(item); + appendable = isStringItem; + if (isPromise(item) || isArray(item) && item.hasAsync) { + buffer.hasAsync = true; + } + } + }; +} +function renderComponentVNode(vnode, parentComponent = null, slotScopeId) { + const instance = vnode.component = createComponentInstance( + vnode, + parentComponent, + null + ); + pushWarningContext(vnode); + const res = setupComponent( + instance, + true + /* isSSR */ + ); + popWarningContext(); + const hasAsyncSetup = isPromise(res); + let prefetches = instance.sp; + if (hasAsyncSetup || prefetches) { + const p = Promise.resolve(res).then(() => { + if (hasAsyncSetup) prefetches = instance.sp; + if (prefetches) { + return Promise.all( + prefetches.map((prefetch) => prefetch.call(instance.proxy)) + ); + } + }).catch(NOOP); + return p.then(() => renderComponentSubTree(instance, slotScopeId)); + } else { + return renderComponentSubTree(instance, slotScopeId); + } +} +function renderComponentSubTree(instance, slotScopeId) { + pushWarningContext(instance.vnode); + const comp = instance.type; + const { getBuffer, push } = createBuffer(); + if (isFunction(comp)) { + let root = renderComponentRoot(instance); + if (!comp.props) { + for (const key in instance.attrs) { + if (key.startsWith(`data-v-`)) { + (root.props || (root.props = {}))[key] = ``; + } + } + } + renderVNode(push, instance.subTree = root, instance, slotScopeId); + } else { + if ((!instance.render || instance.render === NOOP) && !instance.ssrRender && !comp.ssrRender && isString(comp.template)) { + comp.ssrRender = ssrCompile(comp.template); + } + const ssrRender = instance.ssrRender || comp.ssrRender; + if (ssrRender) { + let attrs = instance.inheritAttrs !== false ? instance.attrs : void 0; + let hasCloned = false; + let cur = instance; + while (true) { + const scopeId = cur.vnode.scopeId; + if (scopeId) { + if (!hasCloned) { + attrs = { ...attrs }; + hasCloned = true; + } + attrs[scopeId] = ""; + } + const parent = cur.parent; + if (parent && parent.subTree && parent.subTree === cur.vnode) { + cur = parent; + } else { + break; + } + } + if (slotScopeId) { + if (!hasCloned) attrs = { ...attrs }; + const slotScopeIdList = slotScopeId.trim().split(" "); + for (let i = 0; i < slotScopeIdList.length; i++) { + attrs[slotScopeIdList[i]] = ""; + } + } + const prev = setCurrentRenderingInstance(instance); + try { + ssrRender( + instance.proxy, + push, + instance, + attrs, + // compiler-optimized bindings + instance.props, + instance.setupState, + instance.data, + instance.ctx + ); + } finally { + setCurrentRenderingInstance(prev); + } + } else if (instance.render && instance.render !== NOOP) { + renderVNode( + push, + instance.subTree = renderComponentRoot(instance), + instance, + slotScopeId + ); + } else { + const componentName = comp.name || comp.__file || `<Anonymous>`; + warn(`Component ${componentName} is missing template or render function.`); + push(`<!---->`); + } + } + popWarningContext(); + return getBuffer(); +} +function renderVNode(push, vnode, parentComponent, slotScopeId) { + const { type, shapeFlag, children, dirs, props } = vnode; + if (dirs) { + vnode.props = applySSRDirectives(vnode, props, dirs); + } + switch (type) { + case Text: + push(escapeHtml(children)); + break; + case Comment: + push( + children ? `<!--${escapeHtmlComment(children)}-->` : `<!---->` + ); + break; + case Static: + push(children); + break; + case Fragment: + if (vnode.slotScopeIds) { + slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" "); + } + push(`<!--[-->`); + renderVNodeChildren( + push, + children, + parentComponent, + slotScopeId + ); + push(`<!--]-->`); + break; + default: + if (shapeFlag & 1) { + renderElementVNode(push, vnode, parentComponent, slotScopeId); + } else if (shapeFlag & 6) { + push(renderComponentVNode(vnode, parentComponent, slotScopeId)); + } else if (shapeFlag & 64) { + renderTeleportVNode(push, vnode, parentComponent, slotScopeId); + } else if (shapeFlag & 128) { + renderVNode(push, vnode.ssContent, parentComponent, slotScopeId); + } else { + warn( + "[@vue/server-renderer] Invalid VNode type:", + type, + `(${typeof type})` + ); + } + } +} +function renderVNodeChildren(push, children, parentComponent, slotScopeId) { + for (let i = 0; i < children.length; i++) { + renderVNode(push, normalizeVNode(children[i]), parentComponent, slotScopeId); + } +} +function renderElementVNode(push, vnode, parentComponent, slotScopeId) { + const tag = vnode.type; + let { props, children, shapeFlag, scopeId } = vnode; + let openTag = `<${tag}`; + if (props) { + openTag += ssrRenderAttrs(props, tag); + } + if (scopeId) { + openTag += ` ${scopeId}`; + } + let curParent = parentComponent; + let curVnode = vnode; + while (curParent && curVnode === curParent.subTree) { + curVnode = curParent.vnode; + if (curVnode.scopeId) { + openTag += ` ${curVnode.scopeId}`; + } + curParent = curParent.parent; + } + if (slotScopeId) { + openTag += ` ${slotScopeId}`; + } + push(openTag + `>`); + if (!isVoidTag(tag)) { + let hasChildrenOverride = false; + if (props) { + if (props.innerHTML) { + hasChildrenOverride = true; + push(props.innerHTML); + } else if (props.textContent) { + hasChildrenOverride = true; + push(escapeHtml(props.textContent)); + } else if (tag === "textarea" && props.value) { + hasChildrenOverride = true; + push(escapeHtml(props.value)); + } + } + if (!hasChildrenOverride) { + if (shapeFlag & 8) { + push(escapeHtml(children)); + } else if (shapeFlag & 16) { + renderVNodeChildren( + push, + children, + parentComponent, + slotScopeId + ); + } + } + push(`</${tag}>`); + } +} +function applySSRDirectives(vnode, rawProps, dirs) { + const toMerge = []; + for (let i = 0; i < dirs.length; i++) { + const binding = dirs[i]; + const { + dir: { getSSRProps } + } = binding; + if (getSSRProps) { + const props = getSSRProps(binding, vnode); + if (props) toMerge.push(props); + } + } + return mergeProps(rawProps || {}, ...toMerge); +} +function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) { + const target = vnode.props && vnode.props.to; + const disabled = vnode.props && vnode.props.disabled; + if (!target) { + if (!disabled) { + warn(`[@vue/server-renderer] Teleport is missing target prop.`); + } + return []; + } + if (!isString(target)) { + warn( + `[@vue/server-renderer] Teleport target must be a query selector string.` + ); + return []; + } + ssrRenderTeleport( + push, + (push2) => { + renderVNodeChildren( + push2, + vnode.children, + parentComponent, + slotScopeId + ); + }, + target, + disabled || disabled === "", + parentComponent + ); +} + +const { isVNode: isVNode$1 } = ssrUtils; +function nestedUnrollBuffer(buffer, parentRet, startIndex) { + if (!buffer.hasAsync) { + return parentRet + unrollBufferSync$1(buffer); + } + let ret = parentRet; + for (let i = startIndex; i < buffer.length; i += 1) { + const item = buffer[i]; + if (isString(item)) { + ret += item; + continue; + } + if (isPromise(item)) { + return item.then((nestedItem) => { + buffer[i] = nestedItem; + return nestedUnrollBuffer(buffer, ret, i); + }); + } + const result = nestedUnrollBuffer(item, ret, 0); + if (isPromise(result)) { + return result.then((nestedItem) => { + buffer[i] = nestedItem; + return nestedUnrollBuffer(buffer, "", i); + }); + } + ret = result; + } + return ret; +} +function unrollBuffer$1(buffer) { + return nestedUnrollBuffer(buffer, "", 0); +} +function unrollBufferSync$1(buffer) { + let ret = ""; + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (isString(item)) { + ret += item; + } else { + ret += unrollBufferSync$1(item); + } + } + return ret; +} +async function renderToString(input, context = {}) { + if (isVNode$1(input)) { + return renderToString(createApp({ render: () => input }), context); + } + const vnode = createVNode(input._component, input._props); + vnode.appContext = input._context; + input.provide(ssrContextKey, context); + const buffer = await renderComponentVNode(vnode); + const result = await unrollBuffer$1(buffer); + await resolveTeleports(context); + if (context.__watcherHandles) { + for (const unwatch of context.__watcherHandles) { + unwatch(); + } + } + return result; +} +async function resolveTeleports(context) { + if (context.__teleportBuffers) { + context.teleports = context.teleports || {}; + for (const key in context.__teleportBuffers) { + context.teleports[key] = await unrollBuffer$1( + await Promise.all([context.__teleportBuffers[key]]) + ); + } + } +} + +const { isVNode } = ssrUtils; +async function unrollBuffer(buffer, stream) { + if (buffer.hasAsync) { + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (isPromise(item)) { + item = await item; + } + if (isString(item)) { + stream.push(item); + } else { + await unrollBuffer(item, stream); + } + } + } else { + unrollBufferSync(buffer, stream); + } +} +function unrollBufferSync(buffer, stream) { + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (isString(item)) { + stream.push(item); + } else { + unrollBufferSync(item, stream); + } + } +} +function renderToSimpleStream(input, context, stream) { + if (isVNode(input)) { + return renderToSimpleStream( + createApp({ render: () => input }), + context, + stream + ); + } + const vnode = createVNode(input._component, input._props); + vnode.appContext = input._context; + input.provide(ssrContextKey, context); + Promise.resolve(renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => { + if (context.__watcherHandles) { + for (const unwatch of context.__watcherHandles) { + unwatch(); + } + } + }).then(() => stream.push(null)).catch((error) => { + stream.destroy(error); + }); + return stream; +} +function renderToStream(input, context = {}) { + console.warn( + `[@vue/server-renderer] renderToStream is deprecated - use renderToNodeStream instead.` + ); + return renderToNodeStream(input, context); +} +function renderToNodeStream(input, context = {}) { + { + throw new Error( + `ESM build of renderToStream() does not support renderToNodeStream(). Use pipeToNodeWritable() with an existing Node.js Writable stream instance instead.` + ); + } +} +function pipeToNodeWritable(input, context = {}, writable) { + renderToSimpleStream(input, context, { + push(content) { + if (content != null) { + writable.write(content); + } else { + writable.end(); + } + }, + destroy(err) { + writable.destroy(err); + } + }); +} +function renderToWebStream(input, context = {}) { + if (typeof ReadableStream !== "function") { + throw new Error( + `ReadableStream constructor is not available in the global scope. If the target environment does support web streams, consider using pipeToWebWritable() with an existing WritableStream instance instead.` + ); + } + const encoder = new TextEncoder(); + let cancelled = false; + return new ReadableStream({ + start(controller) { + renderToSimpleStream(input, context, { + push(content) { + if (cancelled) return; + if (content != null) { + controller.enqueue(encoder.encode(content)); + } else { + controller.close(); + } + }, + destroy(err) { + controller.error(err); + } + }); + }, + cancel() { + cancelled = true; + } + }); +} +function pipeToWebWritable(input, context = {}, writable) { + const writer = writable.getWriter(); + const encoder = new TextEncoder(); + let hasReady = false; + try { + hasReady = isPromise(writer.ready); + } catch (e) { + } + renderToSimpleStream(input, context, { + async push(content) { + if (hasReady) { + await writer.ready; + } + if (content != null) { + return writer.write(encoder.encode(content)); + } else { + return writer.close(); + } + }, + destroy(err) { + console.log(err); + writer.close(); + } + }); +} + +initDirectivesForSSR(); + +export { pipeToNodeWritable, pipeToWebWritable, renderToNodeStream, renderToSimpleStream, renderToStream, renderToString, renderToWebStream, ssrGetDirectiveProps, ssrGetDynamicModelProps, includeBooleanAttr as ssrIncludeBooleanAttr, ssrInterpolate, ssrLooseContain, ssrLooseEqual, ssrRenderAttr, ssrRenderAttrs, ssrRenderClass, ssrRenderComponent, ssrRenderDynamicAttr, ssrRenderDynamicModel, ssrRenderList, ssrRenderSlot, ssrRenderSlotInner, ssrRenderStyle, ssrRenderSuspense, ssrRenderTeleport, renderVNode as ssrRenderVNode }; diff --git a/node_modules/@vue/server-renderer/dist/server-renderer.esm-browser.prod.js b/node_modules/@vue/server-renderer/dist/server-renderer.esm-browser.prod.js new file mode 100644 index 0000000..31b0b18 --- /dev/null +++ b/node_modules/@vue/server-renderer/dist/server-renderer.esm-browser.prod.js @@ -0,0 +1,5 @@ +/** +* @vue/server-renderer v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let e,t,n,l,r,i,s,o,a,u;function c(e){let t=Object.create(null);for(let n of e.split(","))t[n]=1;return e=>e in t}let f={},p=[],d=()=>{},h=()=>!1,g=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&(e.charCodeAt(2)>122||97>e.charCodeAt(2)),m=e=>e.startsWith("onUpdate:"),_=Object.assign,y=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},b=Object.prototype.hasOwnProperty,x=(e,t)=>b.call(e,t),S=Array.isArray,w=e=>"[object Map]"===A(e),k=e=>"[object Set]"===A(e),C=e=>"[object Date]"===A(e),T=e=>"function"==typeof e,O=e=>"string"==typeof e,R=e=>"symbol"==typeof e,P=e=>null!==e&&"object"==typeof e,E=e=>(P(e)||T(e))&&T(e.then)&&T(e.catch),M=Object.prototype.toString,A=e=>M.call(e),$=e=>"[object Object]"===A(e),j=e=>O(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,D=c(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),I=e=>{let t=Object.create(null);return n=>t[n]||(t[n]=e(n))},N=/-(\w)/g,F=I(e=>e.replace(N,(e,t)=>t?t.toUpperCase():"")),L=/\B([A-Z])/g,V=I(e=>e.replace(L,"-$1").toLowerCase()),W=I(e=>e.charAt(0).toUpperCase()+e.slice(1)),U=I(e=>e?`on${W(e)}`:""),B=(e,t)=>!Object.is(e,t),H=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},q=(e,t,n,l=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:l,value:n})},G=e=>{let t=parseFloat(e);return isNaN(t)?e:t},z=()=>e||(e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{});function K(e){if(S(e)){let t={};for(let n=0;n<e.length;n++){let l=e[n],r=O(l)?function(e){let t={};return e.replace(X,"").split(J).forEach(e=>{if(e){let n=e.split(Z);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}(l):K(l);if(r)for(let e in r)t[e]=r[e]}return t}if(O(e)||P(e))return e}let J=/;(?![^(]*\))/g,Z=/:([^]+)/,X=/\/\*[^]*?\*\//g;function Q(e){let t="";if(O(e))t=e;else if(S(e))for(let n=0;n<e.length;n++){let l=Q(e[n]);l&&(t+=l+" ")}else if(P(e))for(let n in e)e[n]&&(t+=n+" ");return t.trim()}let Y=c("svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"),ee=c("area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"),et="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",en=c(et),el=c(et+",async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected");function er(e){return!!e||""===e}let ei=/[>/="'\u0009\u000a\u000c\u0020]/,es={},eo={acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"};function ea(e){if(null==e)return!1;let t=typeof e;return"string"===t||"number"===t||"boolean"===t}let eu=/["'&<>]/;function ec(e){let t,n,l=""+e,r=eu.exec(l);if(!r)return l;let i="",s=0;for(n=r.index;n<l.length;n++){switch(l.charCodeAt(n)){case 34:t=""";break;case 38:t="&";break;case 39:t="'";break;case 60:t="<";break;case 62:t=">";break;default:continue}s!==n&&(i+=l.slice(s,n)),s=n+1,i+=t}return s!==n?i+l.slice(s,n):i}let ef=/^-?>|<!--|-->|--!>|<!-$/g;function ep(e,t){if(e===t)return!0;let n=C(e),l=C(t);if(n||l)return!!n&&!!l&&e.getTime()===t.getTime();if(n=R(e),l=R(t),n||l)return e===t;if(n=S(e),l=S(t),n||l)return!!n&&!!l&&function(e,t){if(e.length!==t.length)return!1;let n=!0;for(let l=0;n&&l<e.length;l++)n=ep(e[l],t[l]);return n}(e,t);if(n=P(e),l=P(t),n||l){if(!n||!l||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e){let l=e.hasOwnProperty(n),r=t.hasOwnProperty(n);if(l&&!r||!l&&r||!ep(e[n],t[n]))return!1}}return String(e)===String(t)}function ed(e,t){return e.findIndex(e=>ep(e,t))}let eh=e=>!!(e&&!0===e.__v_isRef),ev=e=>O(e)?e:null==e?"":S(e)||P(e)&&(e.toString===M||!T(e.toString))?eh(e)?ev(e.value):JSON.stringify(e,eg,2):String(e),eg=(e,t)=>{if(eh(t))return eg(e,t.value);if(w(t))return{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],l)=>(e[em(t,l)+" =>"]=n,e),{})};if(k(t))return{[`Set(${t.size})`]:[...t.values()].map(e=>em(e))};if(R(t))return em(t);if(P(t)&&!S(t)&&!$(t))return String(t);return t},em=(e,t="")=>{var n;return R(e)?`Symbol(${null!=(n=e.description)?n:t})`:e};class e_{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=t,!e&&t&&(this.index=(t.scopes||(t.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){let e,t;if(this._isPaused=!0,this.scopes)for(e=0,t=this.scopes.length;e<t;e++)this.scopes[e].pause();for(e=0,t=this.effects.length;e<t;e++)this.effects[e].pause()}}resume(){if(this._active&&this._isPaused){let e,t;if(this._isPaused=!1,this.scopes)for(e=0,t=this.scopes.length;e<t;e++)this.scopes[e].resume();for(e=0,t=this.effects.length;e<t;e++)this.effects[e].resume()}}run(e){if(this._active){let n=t;try{return t=this,e()}finally{t=n}}}on(){1==++this._on&&(this.prevScope=t,t=this)}off(){this._on>0&&0==--this._on&&(t=this.prevScope,this.prevScope=void 0)}stop(e){if(this._active){let t,n;for(t=0,this._active=!1,n=this.effects.length;t<n;t++)this.effects[t].stop();for(t=0,this.effects.length=0,n=this.cleanups.length;t<n;t++)this.cleanups[t]();if(this.cleanups.length=0,this.scopes){for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!e){let e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.parent=void 0}}}let ey=new WeakSet;class eb{constructor(e){this.fn=e,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,t&&t.active&&t.effects.push(this)}pause(){this.flags|=64}resume(){64&this.flags&&(this.flags&=-65,ey.has(this)&&(ey.delete(this),this.trigger()))}notify(){(!(2&this.flags)||32&this.flags)&&(8&this.flags||eS(this))}run(){if(!(1&this.flags))return this.fn();this.flags|=2,e$(this),ek(this);let e=n,t=eP;n=this,eP=!0;try{return this.fn()}finally{eC(this),n=e,eP=t,this.flags&=-3}}stop(){if(1&this.flags){for(let e=this.deps;e;e=e.nextDep)eR(e);this.deps=this.depsTail=void 0,e$(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){64&this.flags?ey.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){eT(this)&&this.run()}get dirty(){return eT(this)}}let ex=0;function eS(e,t=!1){if(e.flags|=8,t){e.next=r,r=e;return}e.next=l,l=e}function ew(){let e;if(!(--ex>0)){if(r){let e=r;for(r=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}for(;l;){let t=l;for(l=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,1&t.flags)try{t.trigger()}catch(t){e||(e=t)}t=n}}if(e)throw e}}function ek(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function eC(e){let t,n=e.depsTail,l=n;for(;l;){let e=l.prevDep;-1===l.version?(l===n&&(n=e),eR(l),function(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}(l)):t=l,l.dep.activeLink=l.prevActiveLink,l.prevActiveLink=void 0,l=e}e.deps=t,e.depsTail=n}function eT(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(eO(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function eO(e){if(4&e.flags&&!(16&e.flags)||(e.flags&=-17,e.globalVersion===ej)||(e.globalVersion=ej,!e.isSSR&&128&e.flags&&(!e.deps&&!e._dirty||!eT(e))))return;e.flags|=2;let t=e.dep,l=n,r=eP;n=e,eP=!0;try{ek(e);let n=e.fn(e._value);(0===t.version||B(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{n=l,eP=r,eC(e),e.flags&=-3}}function eR(e,t=!1){let{dep:n,prevSub:l,nextSub:r}=e;if(l&&(l.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=l,e.nextSub=void 0),n.subs===e&&(n.subs=l,!l&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)eR(e,!0)}t||--n.sc||!n.map||n.map.delete(n.key)}let eP=!0,eE=[];function eM(){eE.push(eP),eP=!1}function eA(){let e=eE.pop();eP=void 0===e||e}function e$(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=n;n=void 0;try{t()}finally{n=e}}}let ej=0;class eD{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class eI{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!n||!eP||n===this.computed)return;let t=this.activeLink;if(void 0===t||t.sub!==n)t=this.activeLink=new eD(n,this),n.deps?(t.prevDep=n.depsTail,n.depsTail.nextDep=t,n.depsTail=t):n.deps=n.depsTail=t,function e(t){if(t.dep.sc++,4&t.sub.flags){let n=t.dep.computed;if(n&&!t.dep.subs){n.flags|=20;for(let t=n.deps;t;t=t.nextDep)e(t)}let l=t.dep.subs;l!==t&&(t.prevSub=l,l&&(l.nextSub=t)),t.dep.subs=t}}(t);else if(-1===t.version&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=n.depsTail,t.nextDep=void 0,n.depsTail.nextDep=t,n.depsTail=t,n.deps===t&&(n.deps=e)}return t}trigger(e){this.version++,ej++,this.notify(e)}notify(e){ex++;try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{ew()}}}let eN=new WeakMap,eF=Symbol(""),eL=Symbol(""),eV=Symbol("");function eW(e,t,l){if(eP&&n){let t=eN.get(e);t||eN.set(e,t=new Map);let n=t.get(l);n||(t.set(l,n=new eI),n.map=t,n.key=l),n.track()}}function eU(e,t,n,l,r,i){let s=eN.get(e);if(!s)return void ej++;let o=e=>{e&&e.trigger()};if(ex++,"clear"===t)s.forEach(o);else{let r=S(e),i=r&&j(n);if(r&&"length"===n){let e=Number(l);s.forEach((t,n)=>{("length"===n||n===eV||!R(n)&&n>=e)&&o(t)})}else switch((void 0!==n||s.has(void 0))&&o(s.get(n)),i&&o(s.get(eV)),t){case"add":r?i&&o(s.get("length")):(o(s.get(eF)),w(e)&&o(s.get(eL)));break;case"delete":!r&&(o(s.get(eF)),w(e)&&o(s.get(eL)));break;case"set":w(e)&&o(s.get(eF))}}ew()}function eB(e){let t=th(e);return t===e?t:(eW(t,"iterate",eV),tp(e)?t:t.map(tv))}function eH(e){return eW(e=th(e),"iterate",eV),e}let eq={__proto__:null,[Symbol.iterator](){return eG(this,Symbol.iterator,tv)},concat(...e){return eB(this).concat(...e.map(e=>S(e)?eB(e):e))},entries(){return eG(this,"entries",e=>(e[1]=tv(e[1]),e))},every(e,t){return eK(this,"every",e,t,void 0,arguments)},filter(e,t){return eK(this,"filter",e,t,e=>e.map(tv),arguments)},find(e,t){return eK(this,"find",e,t,tv,arguments)},findIndex(e,t){return eK(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return eK(this,"findLast",e,t,tv,arguments)},findLastIndex(e,t){return eK(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return eK(this,"forEach",e,t,void 0,arguments)},includes(...e){return eZ(this,"includes",e)},indexOf(...e){return eZ(this,"indexOf",e)},join(e){return eB(this).join(e)},lastIndexOf(...e){return eZ(this,"lastIndexOf",e)},map(e,t){return eK(this,"map",e,t,void 0,arguments)},pop(){return eX(this,"pop")},push(...e){return eX(this,"push",e)},reduce(e,...t){return eJ(this,"reduce",e,t)},reduceRight(e,...t){return eJ(this,"reduceRight",e,t)},shift(){return eX(this,"shift")},some(e,t){return eK(this,"some",e,t,void 0,arguments)},splice(...e){return eX(this,"splice",e)},toReversed(){return eB(this).toReversed()},toSorted(e){return eB(this).toSorted(e)},toSpliced(...e){return eB(this).toSpliced(...e)},unshift(...e){return eX(this,"unshift",e)},values(){return eG(this,"values",tv)}};function eG(e,t,n){let l=eH(e),r=l[t]();return l===e||tp(e)||(r._next=r.next,r.next=()=>{let e=r._next();return e.value&&(e.value=n(e.value)),e}),r}let ez=Array.prototype;function eK(e,t,n,l,r,i){let s=eH(e),o=s!==e&&!tp(e),a=s[t];if(a!==ez[t]){let t=a.apply(e,i);return o?tv(t):t}let u=n;s!==e&&(o?u=function(t,l){return n.call(this,tv(t),l,e)}:n.length>2&&(u=function(t,l){return n.call(this,t,l,e)}));let c=a.call(s,u,l);return o&&r?r(c):c}function eJ(e,t,n,l){let r=eH(e),i=n;return r!==e&&(tp(e)?n.length>3&&(i=function(t,l,r){return n.call(this,t,l,r,e)}):i=function(t,l,r){return n.call(this,t,tv(l),r,e)}),r[t](i,...l)}function eZ(e,t,n){let l=th(e);eW(l,"iterate",eV);let r=l[t](...n);return(-1===r||!1===r)&&td(n[0])?(n[0]=th(n[0]),l[t](...n)):r}function eX(e,t,n=[]){eM(),ex++;let l=th(e)[t].apply(e,n);return ew(),eA(),l}let eQ=c("__proto__,__v_isRef,__isVue"),eY=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>"arguments"!==e&&"caller"!==e).map(e=>Symbol[e]).filter(R));function e0(e){R(e)||(e=String(e));let t=th(this);return eW(t,"has",e),t.hasOwnProperty(e)}class e1{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if("__v_skip"===t)return e.__v_skip;let l=this._isReadonly,r=this._isShallow;if("__v_isReactive"===t)return!l;if("__v_isReadonly"===t)return l;if("__v_isShallow"===t)return r;if("__v_raw"===t)return n===(l?r?ts:ti:r?tr:tl).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let i=S(e);if(!l){let e;if(i&&(e=eq[t]))return e;if("hasOwnProperty"===t)return e0}let s=Reflect.get(e,t,tm(e)?e:n);return(R(t)?eY.has(t):eQ(t))||(l||eW(e,"get",t),r)?s:tm(s)?i&&j(t)?s:s.value:P(s)?l?ta(s):to(s):s}}class e2 extends e1{constructor(e=!1){super(!1,e)}set(e,t,n,l){let r=e[t];if(!this._isShallow){let t=tf(r);if(tp(n)||tf(n)||(r=th(r),n=th(n)),!S(e)&&tm(r)&&!tm(n))if(t)return!1;else return r.value=n,!0}let i=S(e)&&j(t)?Number(t)<e.length:x(e,t),s=Reflect.set(e,t,n,tm(e)?e:l);return e===th(l)&&(i?B(n,r)&&eU(e,"set",t,n):eU(e,"add",t,n)),s}deleteProperty(e,t){let n=x(e,t);e[t];let l=Reflect.deleteProperty(e,t);return l&&n&&eU(e,"delete",t,void 0),l}has(e,t){let n=Reflect.has(e,t);return R(t)&&eY.has(t)||eW(e,"has",t),n}ownKeys(e){return eW(e,"iterate",S(e)?"length":eF),Reflect.ownKeys(e)}}let e6=new e2,e8=new class extends e1{constructor(e=!1){super(!0,e)}set(e,t){return!0}deleteProperty(e,t){return!0}},e4=new e2(!0),e3=e=>e,e5=e=>Reflect.getPrototypeOf(e);function e9(e){return function(){return"delete"!==e&&("clear"===e?void 0:this)}}function e7(e,t){let n=function(e,t){let n={get(n){let l=this.__v_raw,r=th(l),i=th(n);e||(B(n,i)&&eW(r,"get",n),eW(r,"get",i));let{has:s}=e5(r),o=t?e3:e?tg:tv;return s.call(r,n)?o(l.get(n)):s.call(r,i)?o(l.get(i)):void(l!==r&&l.get(n))},get size(){let t=this.__v_raw;return e||eW(th(t),"iterate",eF),Reflect.get(t,"size",t)},has(t){let n=this.__v_raw,l=th(n),r=th(t);return e||(B(t,r)&&eW(l,"has",t),eW(l,"has",r)),t===r?n.has(t):n.has(t)||n.has(r)},forEach(n,l){let r=this,i=r.__v_raw,s=th(i),o=t?e3:e?tg:tv;return e||eW(s,"iterate",eF),i.forEach((e,t)=>n.call(l,o(e),o(t),r))}};return _(n,e?{add:e9("add"),set:e9("set"),delete:e9("delete"),clear:e9("clear")}:{add(e){t||tp(e)||tf(e)||(e=th(e));let n=th(this);return e5(n).has.call(n,e)||(n.add(e),eU(n,"add",e,e)),this},set(e,n){t||tp(n)||tf(n)||(n=th(n));let l=th(this),{has:r,get:i}=e5(l),s=r.call(l,e);s||(e=th(e),s=r.call(l,e));let o=i.call(l,e);return l.set(e,n),s?B(n,o)&&eU(l,"set",e,n):eU(l,"add",e,n),this},delete(e){let t=th(this),{has:n,get:l}=e5(t),r=n.call(t,e);r||(e=th(e),r=n.call(t,e)),l&&l.call(t,e);let i=t.delete(e);return r&&eU(t,"delete",e,void 0),i},clear(){let e=th(this),t=0!==e.size,n=e.clear();return t&&eU(e,"clear",void 0,void 0),n}}),["keys","values","entries",Symbol.iterator].forEach(l=>{n[l]=function(...n){let r=this.__v_raw,i=th(r),s=w(i),o="entries"===l||l===Symbol.iterator&&s,a=r[l](...n),u=t?e3:e?tg:tv;return e||eW(i,"iterate","keys"===l&&s?eL:eF),{next(){let{value:e,done:t}=a.next();return t?{value:e,done:t}:{value:o?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}),n}(e,t);return(t,l,r)=>"__v_isReactive"===l?!e:"__v_isReadonly"===l?e:"__v_raw"===l?t:Reflect.get(x(n,l)&&l in t?n:t,l,r)}let te={get:e7(!1,!1)},tt={get:e7(!1,!0)},tn={get:e7(!0,!1)},tl=new WeakMap,tr=new WeakMap,ti=new WeakMap,ts=new WeakMap;function to(e){return tf(e)?e:tu(e,!1,e6,te,tl)}function ta(e){return tu(e,!0,e8,tn,ti)}function tu(e,t,n,l,r){var i;if(!P(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;let s=(i=e).__v_skip||!Object.isExtensible(i)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}(A(i).slice(8,-1));if(0===s)return e;let o=r.get(e);if(o)return o;let a=new Proxy(e,2===s?l:n);return r.set(e,a),a}function tc(e){return tf(e)?tc(e.__v_raw):!!(e&&e.__v_isReactive)}function tf(e){return!!(e&&e.__v_isReadonly)}function tp(e){return!!(e&&e.__v_isShallow)}function td(e){return!!e&&!!e.__v_raw}function th(e){let t=e&&e.__v_raw;return t?th(t):e}let tv=e=>P(e)?to(e):e,tg=e=>P(e)?ta(e):e;function tm(e){return!!e&&!0===e.__v_isRef}let t_={get:(e,t,n)=>{var l;return"__v_raw"===t?e:tm(l=Reflect.get(e,t,n))?l.value:l},set:(e,t,n,l)=>{let r=e[t];return tm(r)&&!tm(n)?(r.value=n,!0):Reflect.set(e,t,n,l)}};function ty(e){return tc(e)?e:new Proxy(e,t_)}class tb{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new eI(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=ej-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(8&this.flags)&&n!==this)return eS(this,!0),!0}get value(){let e=this.dep.track();return eO(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}let tx={},tS=new WeakMap;function tw(e,t=1/0,n){if(t<=0||!P(e)||e.__v_skip||(n=n||new Set).has(e))return e;if(n.add(e),t--,tm(e))tw(e.value,t,n);else if(S(e))for(let l=0;l<e.length;l++)tw(e[l],t,n);else if(k(e)||w(e))e.forEach(e=>{tw(e,t,n)});else if($(e)){for(let l in e)tw(e[l],t,n);for(let l of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,l)&&tw(e[l],t,n)}return e}function tk(e,t,n,l){try{return l?e(...l):e()}catch(e){tT(e,t,n)}}function tC(e,t,n,l){if(T(e)){let r=tk(e,t,n,l);return r&&E(r)&&r.catch(e=>{tT(e,t,n)}),r}if(S(e)){let r=[];for(let i=0;i<e.length;i++)r.push(tC(e[i],t,n,l));return r}}function tT(e,t,n,l=!0){let r=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:s}=t&&t.appContext.config||f;if(t){let l=t.parent,r=t.proxy,s=`https://vuejs.org/error-reference/#runtime-${n}`;for(;l;){let t=l.ec;if(t){for(let n=0;n<t.length;n++)if(!1===t[n](e,r,s))return}l=l.parent}if(i){eM(),tk(i,null,10,[e,r,s]),eA();return}}!function(e,t,n,l=!0,r=!1){if(r)throw e;console.error(e)}(e,0,0,l,s)}let tO=[],tR=-1,tP=[],tE=null,tM=0,tA=Promise.resolve(),t$=null;function tj(e){let t=t$||tA;return e?t.then(this?e.bind(this):e):t}function tD(e){if(!(1&e.flags)){let t=tL(e),n=tO[tO.length-1];!n||!(2&e.flags)&&t>=tL(n)?tO.push(e):tO.splice(function(e){let t=tR+1,n=tO.length;for(;t<n;){let l=t+n>>>1,r=tO[l],i=tL(r);i<e||i===e&&2&r.flags?t=l+1:n=l}return t}(t),0,e),e.flags|=1,tI()}}function tI(){t$||(t$=tA.then(function e(t){try{for(tR=0;tR<tO.length;tR++){let e=tO[tR];e&&!(8&e.flags)&&(4&e.flags&&(e.flags&=-2),tk(e,e.i,e.i?15:14),4&e.flags||(e.flags&=-2))}}finally{for(;tR<tO.length;tR++){let e=tO[tR];e&&(e.flags&=-2)}tR=-1,tO.length=0,tF(),t$=null,(tO.length||tP.length)&&e()}}))}function tN(e,t,n=tR+1){for(;n<tO.length;n++){let t=tO[n];if(t&&2&t.flags){if(e&&t.id!==e.uid)continue;tO.splice(n,1),n--,4&t.flags&&(t.flags&=-2),t(),4&t.flags||(t.flags&=-2)}}}function tF(e){if(tP.length){let e=[...new Set(tP)].sort((e,t)=>tL(e)-tL(t));if(tP.length=0,tE)return void tE.push(...e);for(tM=0,tE=e;tM<tE.length;tM++){let e=tE[tM];4&e.flags&&(e.flags&=-2),8&e.flags||e(),e.flags&=-2}tE=null,tM=0}}let tL=e=>null==e.id?2&e.flags?-1:1/0:e.id,tV=null,tW=null;function tU(e){let t=tV;return tV=e,tW=e&&e.type.__scopeId||null,t}function tB(e,t,n,l){let r=e.dirs,i=t&&t.dirs;for(let s=0;s<r.length;s++){let o=r[s];i&&(o.oldValue=i[s].value);let a=o.dir[l];a&&(eM(),tC(a,n,8,[e.el,o,e,t]),eA())}}let tH=Symbol("_vte");function tq(e,t){6&e.shapeFlag&&e.component?(e.transition=t,tq(e.component.subTree,t)):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function tG(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function tz(e,t,n,l,r=!1){if(S(e))return void e.forEach((e,i)=>tz(e,t&&(S(t)?t[i]:t),n,l,r));if(tK(l)&&!r){512&l.shapeFlag&&l.type.__asyncResolved&&l.component.subTree.component&&tz(e,t,n,l.component.subTree);return}let i=4&l.shapeFlag?lh(l.component):l.el,s=r?null:i,{i:o,r:a}=e,u=t&&t.r,c=o.refs===f?o.refs={}:o.refs,p=o.setupState,d=th(p),h=p===f?()=>!1:e=>x(d,e);if(null!=u&&u!==a&&(O(u)?(c[u]=null,h(u)&&(p[u]=null)):tm(u)&&(u.value=null)),T(a))tk(a,o,12,[s,c]);else{let t=O(a),l=tm(a);if(t||l){let o=()=>{if(e.f){let n=t?h(a)?p[a]:c[a]:a.value;r?S(n)&&y(n,i):S(n)?n.includes(i)||n.push(i):t?(c[a]=[i],h(a)&&(p[a]=c[a])):(a.value=[i],e.k&&(c[e.k]=a.value))}else t?(c[a]=s,h(a)&&(p[a]=s)):l&&(a.value=s,e.k&&(c[e.k]=s))};s?(o.id=-1,nj(o,n)):o()}}}let tK=e=>!!e.type.__asyncLoader,tJ=e=>e.type.__isKeepAlive;function tZ(e,t){tQ(e,"a",t)}function tX(e,t){tQ(e,"da",t)}function tQ(e,t,n=lr){let l=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(tY(t,l,n),n){let e=n.parent;for(;e&&e.parent;)tJ(e.parent.vnode)&&function(e,t,n,l){let r=tY(t,e,l,!0);t3(()=>{y(l[t],r)},n)}(l,t,n,e),e=e.parent}}function tY(e,t,n=lr,l=!1){if(n){let r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...l)=>{eM();let r=ls(n),i=tC(t,n,e,l);return r(),eA(),i});return l?r.unshift(i):r.push(i),i}}let t0=e=>(t,n=lr)=>{lu&&"sp"!==e||tY(e,(...e)=>t(...e),n)},t1=t0("bm"),t2=t0("m"),t6=t0("bu"),t8=t0("u"),t4=t0("bum"),t3=t0("um"),t5=t0("sp"),t9=t0("rtg"),t7=t0("rtc");function ne(e,t=lr){tY("ec",e,t)}let nt=Symbol.for("v-ndc"),nn=e=>e?la(e)?lh(e):nn(e.parent):null,nl=_(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>nn(e.parent),$root:e=>nn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>nu(e),$forceUpdate:e=>e.f||(e.f=()=>{tD(e.update)}),$nextTick:e=>e.n||(e.n=tj.bind(e.proxy)),$watch:e=>nV.bind(e)}),nr=(e,t)=>e!==f&&!e.__isScriptSetup&&x(e,t),ni={get({_:e},t){let n,l,r;if("__v_skip"===t)return!0;let{ctx:i,setupState:s,data:o,props:a,accessCache:u,type:c,appContext:p}=e;if("$"!==t[0]){let l=u[t];if(void 0!==l)switch(l){case 1:return s[t];case 2:return o[t];case 4:return i[t];case 3:return a[t]}else{if(nr(s,t))return u[t]=1,s[t];if(o!==f&&x(o,t))return u[t]=2,o[t];if((n=e.propsOptions[0])&&x(n,t))return u[t]=3,a[t];if(i!==f&&x(i,t))return u[t]=4,i[t];no&&(u[t]=0)}}let d=nl[t];return d?("$attrs"===t&&eW(e.attrs,"get",""),d(e)):(l=c.__cssModules)&&(l=l[t])?l:i!==f&&x(i,t)?(u[t]=4,i[t]):x(r=p.config.globalProperties,t)?r[t]:void 0},set({_:e},t,n){let{data:l,setupState:r,ctx:i}=e;return nr(r,t)?(r[t]=n,!0):l!==f&&x(l,t)?(l[t]=n,!0):!x(e.props,t)&&!("$"===t[0]&&t.slice(1)in e)&&(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:l,appContext:r,propsOptions:i}},s){let o;return!!n[s]||e!==f&&x(e,s)||nr(t,s)||(o=i[0])&&x(o,s)||x(l,s)||x(nl,s)||x(r.config.globalProperties,s)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:x(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ns(e){return S(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}let no=!0;function na(e,t,n){tC(S(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function nu(e){let t,n=e.type,{mixins:l,extends:r}=n,{mixins:i,optionsCache:s,config:{optionMergeStrategies:o}}=e.appContext,a=s.get(n);return a?t=a:i.length||l||r?(t={},i.length&&i.forEach(e=>nc(t,e,o,!0)),nc(t,n,o)):t=n,P(n)&&s.set(n,t),t}function nc(e,t,n,l=!1){let{mixins:r,extends:i}=t;for(let s in i&&nc(e,i,n,!0),r&&r.forEach(t=>nc(e,t,n,!0)),t)if(l&&"expose"===s);else{let l=nf[s]||n&&n[s];e[s]=l?l(e[s],t[s]):t[s]}return e}let nf={data:np,props:ng,emits:ng,methods:nv,computed:nv,beforeCreate:nh,created:nh,beforeMount:nh,mounted:nh,beforeUpdate:nh,updated:nh,beforeDestroy:nh,beforeUnmount:nh,destroyed:nh,unmounted:nh,activated:nh,deactivated:nh,errorCaptured:nh,serverPrefetch:nh,components:nv,directives:nv,watch:function(e,t){if(!e)return t;if(!t)return e;let n=_(Object.create(null),e);for(let l in t)n[l]=nh(e[l],t[l]);return n},provide:np,inject:function(e,t){return nv(nd(e),nd(t))}};function np(e,t){return t?e?function(){return _(T(e)?e.call(this,this):e,T(t)?t.call(this,this):t)}:t:e}function nd(e){if(S(e)){let t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function nh(e,t){return e?[...new Set([].concat(e,t))]:t}function nv(e,t){return e?_(Object.create(null),e,t):t}function ng(e,t){return e?S(e)&&S(t)?[...new Set([...e,...t])]:_(Object.create(null),ns(e),ns(null!=t?t:{})):t}function nm(){return{app:null,config:{isNativeTag:h,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let n_=0,ny=null;function nb(e,t,n=!1){let l=li();if(l||ny){let r=ny?ny._context.provides:l?null==l.parent||l.ce?l.vnode.appContext&&l.vnode.appContext.provides:l.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return n&&T(t)?t.call(l&&l.proxy):t}}let nx={},nS=()=>Object.create(nx),nw=e=>Object.getPrototypeOf(e)===nx;function nk(e,t,n,l){let r,[i,s]=e.propsOptions,o=!1;if(t)for(let a in t){let u;if(D(a))continue;let c=t[a];i&&x(i,u=F(a))?s&&s.includes(u)?(r||(r={}))[u]=c:n[u]=c:nB(e.emitsOptions,a)||a in l&&c===l[a]||(l[a]=c,o=!0)}if(s){let t=th(n),l=r||f;for(let r=0;r<s.length;r++){let o=s[r];n[o]=nC(i,t,o,l[o],e,!x(l,o))}}return o}function nC(e,t,n,l,r,i){let s=e[n];if(null!=s){let e=x(s,"default");if(e&&void 0===l){let e=s.default;if(s.type!==Function&&!s.skipFactory&&T(e)){let{propsDefaults:i}=r;if(n in i)l=i[n];else{let s=ls(r);l=i[n]=e.call(null,t),s()}}else l=e;r.ce&&r.ce._setProp(n,l)}s[0]&&(i&&!e?l=!1:s[1]&&(""===l||l===V(n))&&(l=!0))}return l}let nT=new WeakMap;function nO(e){return!("$"===e[0]||D(e))}let nR=e=>"_"===e||"__"===e||"_ctx"===e||"$stable"===e,nP=e=>S(e)?e.map(n3):[n3(e)],nE=(e,t,n)=>{if(t._n)return t;let l=function(e,t=tV,n){if(!t||e._n)return e;let l=(...n)=>{let r;l._d&&nY(-1);let i=tU(t);try{r=e(...n)}finally{tU(i),l._d&&nY(1)}return r};return l._n=!0,l._c=!0,l._d=!0,l}((...e)=>nP(t(...e)),n);return l._c=!1,l},nM=(e,t,n)=>{let l=e._ctx;for(let n in e){if(nR(n))continue;let r=e[n];if(T(r))t[n]=nE(n,r,l);else if(null!=r){let e=nP(r);t[n]=()=>e}}},nA=(e,t)=>{let n=nP(t);e.slots.default=()=>n},n$=(e,t,n)=>{for(let l in t)(n||!nR(l))&&(e[l]=t[l])},nj=function(e,t){if(t&&t.pendingBranch)S(e)?t.effects.push(...e):t.effects.push(e);else S(e)?tP.push(...e):tE&&-1===e.id?tE.splice(tM+1,0,e):1&e.flags||(tP.push(e),e.flags|=1),tI()};function nD({type:e,props:t},n){return"svg"===n&&"foreignObject"===e||"mathml"===n&&"annotation-xml"===e&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function nI({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function nN(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}let nF=Symbol.for("v-scx");function nL(e,n,l=f){let r,{immediate:i,deep:s,flush:o,once:u}=l,c=_({},l),p=n&&i||!n&&"post"!==o;if(lu){if("sync"===o){let e=nb(nF);r=e.__watcherHandles||(e.__watcherHandles=[])}else if(!p){let e=()=>{};return e.stop=d,e.resume=d,e.pause=d,e}}let h=lr;c.call=(e,t,n)=>tC(e,h,t,n);let g=!1;"post"===o?c.scheduler=e=>{nj(e,h&&h.suspense)}:"sync"!==o&&(g=!0,c.scheduler=(e,t)=>{t?e():tD(e)}),c.augmentJob=e=>{n&&(e.flags|=4),g&&(e.flags|=2,h&&(e.id=h.uid,e.i=h))};let m=function(e,n,l=f){let r,i,s,o,{immediate:u,deep:c,once:p,scheduler:h,augmentJob:g,call:m}=l,_=e=>c?e:tp(e)||!1===c||0===c?tw(e,1):tw(e),b=!1,x=!1;if(tm(e)?(i=()=>e.value,b=tp(e)):tc(e)?(i=()=>_(e),b=!0):S(e)?(x=!0,b=e.some(e=>tc(e)||tp(e)),i=()=>e.map(e=>tm(e)?e.value:tc(e)?_(e):T(e)?m?m(e,2):e():void 0)):i=T(e)?n?m?()=>m(e,2):e:()=>{if(s){eM();try{s()}finally{eA()}}let t=a;a=r;try{return m?m(e,3,[o]):e(o)}finally{a=t}}:d,n&&c){let e=i,t=!0===c?1/0:c;i=()=>tw(e(),t)}let w=t,k=()=>{r.stop(),w&&w.active&&y(w.effects,r)};if(p&&n){let e=n;n=(...t)=>{e(...t),k()}}let C=x?Array(e.length).fill(tx):tx,O=e=>{if(1&r.flags&&(r.dirty||e))if(n){let e=r.run();if(c||b||(x?e.some((e,t)=>B(e,C[t])):B(e,C))){s&&s();let t=a;a=r;try{let t=[e,C===tx?void 0:x&&C[0]===tx?[]:C,o];C=e,m?m(n,3,t):n(...t)}finally{a=t}}}else r.run()};return g&&g(O),(r=new eb(i)).scheduler=h?()=>h(O,!1):O,o=e=>(function(e,t=!1,n=a){if(n){let t=tS.get(n);t||tS.set(n,t=[]),t.push(e)}})(e,!1,r),s=r.onStop=()=>{let e=tS.get(r);if(e){if(m)m(e,4);else for(let t of e)t();tS.delete(r)}},n?u?O(!0):C=r.run():h?h(O.bind(null,!0),!0):r.run(),k.pause=r.pause.bind(r),k.resume=r.resume.bind(r),k.stop=k,k}(e,n,c);return lu&&(r?r.push(m):p&&m()),m}function nV(e,t,n){let l,r=this.proxy,i=O(e)?e.includes(".")?nW(r,e):()=>r[e]:e.bind(r,r);T(t)?l=t:(l=t.handler,n=t);let s=ls(this),o=nL(i,l.bind(r),n);return s(),o}function nW(e,t){let n=t.split(".");return()=>{let t=e;for(let e=0;e<n.length&&t;e++)t=t[n[e]];return t}}function nU(e,t,...n){let l,r;if(e.isUnmounted)return;let i=e.vnode.props||f,s=n,o=t.startsWith("update:"),a=o&&("modelValue"===(r=t.slice(7))||"model-value"===r?i.modelModifiers:i[`${r}Modifiers`]||i[`${F(r)}Modifiers`]||i[`${V(r)}Modifiers`]);a&&(a.trim&&(s=n.map(e=>O(e)?e.trim():e)),a.number&&(s=n.map(G)));let u=i[l=U(t)]||i[l=U(F(t))];!u&&o&&(u=i[l=U(V(t))]),u&&tC(u,e,6,s);let c=i[l+"Once"];if(c){if(e.emitted){if(e.emitted[l])return}else e.emitted={};e.emitted[l]=!0,tC(c,e,6,s)}}function nB(e,t){return!!e&&!!g(t)&&(x(e,(t=t.slice(2).replace(/Once$/,""))[0].toLowerCase()+t.slice(1))||x(e,V(t))||x(e,t))}function nH(e){let t,n,{type:l,vnode:r,proxy:i,withProxy:s,propsOptions:[o],slots:a,attrs:u,emit:c,render:f,renderCache:p,props:d,data:h,setupState:g,ctx:_,inheritAttrs:y}=e,b=tU(e);try{if(4&r.shapeFlag){let e=s||i;t=n3(f.call(e,e,p,d,g,h,_)),n=u}else t=n3(l.length>1?l(d,{attrs:u,slots:a,emit:c}):l(d,null)),n=l.props?u:nq(u)}catch(n){tT(n,e,1),t=n8(nZ)}let x=t;if(n&&!1!==y){let e=Object.keys(n),{shapeFlag:t}=x;e.length&&7&t&&(o&&e.some(m)&&(n=nG(n,o)),x=n4(x,n,!1,!0))}return r.dirs&&((x=n4(x,null,!1,!0)).dirs=x.dirs?x.dirs.concat(r.dirs):r.dirs),r.transition&&tq(x,r.transition),t=x,tU(b),t}let nq=e=>{let t;for(let n in e)("class"===n||"style"===n||g(n))&&((t||(t={}))[n]=e[n]);return t},nG=(e,t)=>{let n={};for(let l in e)m(l)&&l.slice(9)in t||(n[l]=e[l]);return n};function nz(e,t,n){let l=Object.keys(t);if(l.length!==Object.keys(e).length)return!0;for(let r=0;r<l.length;r++){let i=l[r];if(t[i]!==e[i]&&!nB(n,i))return!0}return!1}let nK=Symbol.for("v-fgt"),nJ=Symbol.for("v-txt"),nZ=Symbol.for("v-cmt"),nX=Symbol.for("v-stc"),nQ=1;function nY(e,t=!1){nQ+=e}function n0(e){return!!e&&!0===e.__v_isVNode}function n1(e,t){return e.type===t.type&&e.key===t.key}let n2=({key:e})=>null!=e?e:null,n6=({ref:e,ref_key:t,ref_for:n})=>("number"==typeof e&&(e=""+e),null!=e?O(e)||tm(e)||T(e)?{i:tV,r:e,k:t,f:!!n}:e:null),n8=function(e,t=null,n=null,l=0,r=null,i=!1){var s,o;if(e&&e!==nt||(e=nZ),n0(e)){let l=n4(e,t,!0);return n&&n9(l,n),nQ>0,l.patchFlag=-2,l}if(T(s=e)&&"__vccOpts"in s&&(e=e.__vccOpts),t){let{class:e,style:n}=t=(o=t)?td(o)||nw(o)?_({},o):o:null;e&&!O(e)&&(t.class=Q(e)),P(n)&&(td(n)&&!S(n)&&(n=_({},n)),t.style=K(n))}let a=O(e)?1:e.__isSuspense?128:e.__isTeleport?64:P(e)?4:2*!!T(e);return function(e,t=null,n=null,l=0,r=null,i=+(e!==nK),s=!1,o=!1){let a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&n2(t),ref:t&&n6(t),scopeId:tW,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:l,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:tV};return o?(n9(a,n),128&i&&e.normalize(a)):n&&(a.shapeFlag|=O(n)?8:16),nQ>0,a}(e,t,n,l,r,a,i,!0)};function n4(e,t,n=!1,l=!1){let{props:r,ref:i,patchFlag:s,children:o,transition:a}=e,u=t?n7(r||{},t):r,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&n2(u),ref:t&&t.ref?n&&i?S(i)?i.concat(n6(t)):[i,n6(t)]:n6(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==nK?-1===s?16:16|s:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&n4(e.ssContent),ssFallback:e.ssFallback&&n4(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&l&&tq(c,a.clone(c)),c}function n3(e){return null==e||"boolean"==typeof e?n8(nZ):S(e)?n8(nK,null,e.slice()):n0(e)?n5(e):n8(nJ,null,String(e))}function n5(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:n4(e)}function n9(e,t){let n=0,{shapeFlag:l}=e;if(null==t)t=null;else if(S(t))n=16;else if("object"==typeof t)if(65&l){let n=t.default;n&&(n._c&&(n._d=!1),n9(e,n()),n._c&&(n._d=!0));return}else{n=32;let l=t._;l||nw(t)?3===l&&tV&&(1===tV.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=tV}else T(t)?(t={default:t,_ctx:tV},n=32):(t=String(t),64&l?(n=16,t=[function(e=" ",t=0){return n8(nJ,null,e,t)}(t)]):n=8);e.children=t,e.shapeFlag|=n}function n7(...e){let t={};for(let n=0;n<e.length;n++){let l=e[n];for(let e in l)if("class"===e)t.class!==l.class&&(t.class=Q([t.class,l.class]));else if("style"===e)t.style=K([t.style,l.style]);else if(g(e)){let n=t[e],r=l[e];r&&n!==r&&!(S(n)&&n.includes(r))&&(t[e]=n?[].concat(n,r):r)}else""!==e&&(t[e]=l[e])}return t}function le(e,t,n,l=null){tC(e,t,7,[n,l])}let lt=nm(),ln=0;function ll(e,t,n){let l=e.type,r=(t?t.appContext:e.appContext)||lt,i={uid:ln++,vnode:e,type:l,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new e_(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:function e(t,n,l=!1){let r=l?nT:n.propsCache,i=r.get(t);if(i)return i;let s=t.props,o={},a=[],u=!1;if(!T(t)){let r=t=>{u=!0;let[l,r]=e(t,n,!0);_(o,l),r&&a.push(...r)};!l&&n.mixins.length&&n.mixins.forEach(r),t.extends&&r(t.extends),t.mixins&&t.mixins.forEach(r)}if(!s&&!u)return P(t)&&r.set(t,p),p;if(S(s))for(let e=0;e<s.length;e++){let t=F(s[e]);nO(t)&&(o[t]=f)}else if(s)for(let e in s){let t=F(e);if(nO(t)){let n=s[e],l=o[t]=S(n)||T(n)?{type:n}:_({},n),r=l.type,i=!1,u=!0;if(S(r))for(let e=0;e<r.length;++e){let t=r[e],n=T(t)&&t.name;if("Boolean"===n){i=!0;break}"String"===n&&(u=!1)}else i=T(r)&&"Boolean"===r.name;l[0]=i,l[1]=u,(i||x(l,"default"))&&a.push(t)}}let c=[o,a];return P(t)&&r.set(t,c),c}(l,r),emitsOptions:function e(t,n,l=!1){let r=n.emitsCache,i=r.get(t);if(void 0!==i)return i;let s=t.emits,o={},a=!1;if(!T(t)){let r=t=>{let l=e(t,n,!0);l&&(a=!0,_(o,l))};!l&&n.mixins.length&&n.mixins.forEach(r),t.extends&&r(t.extends),t.mixins&&t.mixins.forEach(r)}return s||a?(S(s)?s.forEach(e=>o[e]=null):_(o,s),P(t)&&r.set(t,o),o):(P(t)&&r.set(t,null),null)}(l,r),emit:null,emitted:null,propsDefaults:f,inheritAttrs:l.inheritAttrs,ctx:f,data:f,props:f,attrs:f,slots:f,refs:f,setupState:f,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=nU.bind(null,i),e.ce&&e.ce(i),i}let lr=null,li=()=>lr||tV;{let e=z(),t=(t,n)=>{let l;return(l=e[t])||(l=e[t]=[]),l.push(n),e=>{l.length>1?l.forEach(t=>t(e)):l[0](e)}};i=t("__VUE_INSTANCE_SETTERS__",e=>lr=e),s=t("__VUE_SSR_SETTERS__",e=>lu=e)}let ls=e=>{let t=lr;return i(e),e.scope.on(),()=>{e.scope.off(),i(t)}},lo=()=>{lr&&lr.scope.off(),i(null)};function la(e){return 4&e.vnode.shapeFlag}let lu=!1;function lc(e,t=!1,n=!1){t&&s(t);let{props:l,children:r}=e.vnode,i=la(e);!function(e,t,n,l=!1){let r={},i=nS();for(let n in e.propsDefaults=Object.create(null),nk(e,t,r,i),e.propsOptions[0])n in r||(r[n]=void 0);n?e.props=l?r:tu(r,!1,e4,tt,tr):e.type.props?e.props=r:e.props=i,e.attrs=i}(e,l,i,t),((e,t,n)=>{let l=e.slots=nS();if(32&e.vnode.shapeFlag){let e=t.__;e&&q(l,"__",e,!0);let r=t._;r?(n$(l,t,n),n&&q(l,"_",r,!0)):nM(t,l)}else t&&nA(e,t)})(e,r,n||t);let o=i?function(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,ni);let{setup:l}=n;if(l){var r;eM();let n=e.setupContext=l.length>1?{attrs:new Proxy((r=e).attrs,ld),slots:r.slots,emit:r.emit,expose:e=>{r.exposed=e||{}}}:null,i=ls(e),s=tk(l,e,0,[e.props,n]),o=E(s);if(eA(),i(),(o||e.sp)&&!tK(e)&&tG(e),o){if(s.then(lo,lo),t)return s.then(t=>{lf(e,t)}).catch(t=>{tT(t,e,0)});e.asyncDep=s}else lf(e,s)}else lp(e)}(e,t):void 0;return t&&s(!1),o}function lf(e,t,n){T(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:P(t)&&(e.setupState=ty(t)),lp(e)}function lp(e,t,n){let l=e.type;e.render||(e.render=l.render||d);{let t=ls(e);eM();try{!function(e){let t=nu(e),n=e.proxy,l=e.ctx;no=!1,t.beforeCreate&&na(t.beforeCreate,e,"bc");let{data:r,computed:i,methods:s,watch:o,provide:a,inject:u,created:c,beforeMount:f,mounted:p,beforeUpdate:h,updated:g,activated:m,deactivated:_,beforeDestroy:y,beforeUnmount:b,destroyed:x,unmounted:w,render:k,renderTracked:C,renderTriggered:R,errorCaptured:E,serverPrefetch:M,expose:A,inheritAttrs:$,components:j,directives:D,filters:I}=t;if(u&&function(e,t,n=d){for(let n in S(e)&&(e=nd(e)),e){let l,r=e[n];tm(l=P(r)?"default"in r?nb(r.from||n,r.default,!0):nb(r.from||n):nb(r))?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>l.value,set:e=>l.value=e}):t[n]=l}}(u,l,null),s)for(let e in s){let t=s[e];T(t)&&(l[e]=t.bind(n))}if(r){let t=r.call(n,n);P(t)&&(e.data=to(t))}if(no=!0,i)for(let e in i){let t=i[e],r=T(t)?t.bind(n,n):T(t.get)?t.get.bind(n,n):d,s=lv({get:r,set:!T(t)&&T(t.set)?t.set.bind(n):d});Object.defineProperty(l,e,{enumerable:!0,configurable:!0,get:()=>s.value,set:e=>s.value=e})}if(o)for(let e in o)!function e(t,n,l,r){var i,s,o,a,u,c,f;let p=r.includes(".")?nW(l,r):()=>l[r];if(O(t)){let e=n[t];T(e)&&(i=p,s=e,nL(i,s,void 0))}else if(T(t)){o=p,a=t.bind(l),nL(o,a,void 0)}else if(P(t))if(S(t))t.forEach(t=>e(t,n,l,r));else{let e=T(t.handler)?t.handler.bind(l):n[t.handler];T(e)&&(u=p,c=e,f=t,nL(u,c,f))}}(o[e],l,n,e);if(a){let e=T(a)?a.call(n):a;Reflect.ownKeys(e).forEach(t=>{var n=t,l=e[t];if(lr){let e=lr.provides,t=lr.parent&&lr.parent.provides;t===e&&(e=lr.provides=Object.create(t)),e[n]=l}})}function N(e,t){S(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(c&&na(c,e,"c"),N(t1,f),N(t2,p),N(t6,h),N(t8,g),N(tZ,m),N(tX,_),N(ne,E),N(t7,C),N(t9,R),N(t4,b),N(t3,w),N(t5,M),S(A))if(A.length){let t=e.exposed||(e.exposed={});A.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||(e.exposed={});k&&e.render===d&&(e.render=k),null!=$&&(e.inheritAttrs=$),j&&(e.components=j),D&&(e.directives=D),M&&tG(e)}(e)}finally{eA(),t()}}}let ld={get:(e,t)=>(eW(e,"get",""),e[t])};function lh(e){var t;return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ty((!x(t=e.exposed,"__v_skip")&&Object.isExtensible(t)&&q(t,"__v_skip",!0),t)),{get:(t,n)=>n in t?t[n]:n in nl?nl[n](e):void 0,has:(e,t)=>t in e||t in nl})):e.proxy}let lv=(e,t)=>(function(e,t,n=!1){let l,r;return T(e)?l=e:(l=e.get,r=e.set),new tb(l,r,n)})(e,0,lu),lg={createComponentInstance:ll,setupComponent:lc,renderComponentRoot:nH,setCurrentRenderingInstance:tU,isVNode:n0,normalizeVNode:n3,getComponentPublicInstance:lh,ensureValidVNode:function e(t){return t.some(t=>!n0(t)||t.type!==nZ&&(t.type!==nK||!!e(t.children)))?t:null},pushWarningContext:function(e){},popWarningContext:function(){}},lm="undefined"!=typeof window&&window.trustedTypes;if(lm)try{u=lm.createPolicy("vue",{createHTML:e=>e})}catch(e){}let l_=u?e=>u.createHTML(e):e=>e,ly="undefined"!=typeof document?document:null,lb=ly&&ly.createElement("template"),lx=Symbol("_vtc"),lS=Symbol("_vod"),lw=Symbol("_vsh"),lk=Symbol(""),lC=/(^|;)\s*display\s*:/,lT=/\s*!important$/;function lO(e,t,n){if(S(n))n.forEach(n=>lO(e,t,n));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{let l=function(e,t){let n=lP[t];if(n)return n;let l=F(t);if("filter"!==l&&l in e)return lP[t]=l;l=W(l);for(let n=0;n<lR.length;n++){let r=lR[n]+l;if(r in e)return lP[t]=r}return t}(e,t);lT.test(n)?e.setProperty(V(l),n.replace(lT,""),"important"):e[l]=n}}let lR=["Webkit","Moz","ms"],lP={},lE="http://www.w3.org/1999/xlink";function lM(e,t,n,l,r,i=en(t)){l&&t.startsWith("xlink:")?null==n?e.removeAttributeNS(lE,t.slice(6,t.length)):e.setAttributeNS(lE,t,n):null==n||i&&!er(n)?e.removeAttribute(t):e.setAttribute(t,i?"":R(n)?String(n):n)}function lA(e,t,n,l,r){if("innerHTML"===t||"textContent"===t){null!=n&&(e[t]="innerHTML"===t?l_(n):n);return}let i=e.tagName;if("value"===t&&"PROGRESS"!==i&&!i.includes("-")){let l="OPTION"===i?e.getAttribute("value")||"":e.value,r=null==n?"checkbox"===e.type?"on":"":String(n);l===r&&"_value"in e||(e.value=r),null==n&&e.removeAttribute(t),e._value=n;return}let s=!1;if(""===n||null==n){let l=typeof e[t];"boolean"===l?n=er(n):null==n&&"string"===l?(n="",s=!0):"number"===l&&(n=0,s=!0)}try{e[t]=n}catch(e){}s&&e.removeAttribute(r||t)}let l$=Symbol("_vei"),lj=/(?:Once|Passive|Capture)$/,lD=0,lI=Promise.resolve(),lN=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)>96&&123>e.charCodeAt(2),lF=_({patchProp:(e,t,n,l,r,i)=>{let s="svg"===r;if("class"===t){var o=l;let t=e[lx];t&&(o=(o?[o,...t]:[...t]).join(" ")),null==o?e.removeAttribute("class"):s?e.setAttribute("class",o):e.className=o}else"style"===t?function(e,t,n){let l=e.style,r=O(n),i=!1;if(n&&!r){if(t)if(O(t))for(let e of t.split(";")){let t=e.slice(0,e.indexOf(":")).trim();null==n[t]&&lO(l,t,"")}else for(let e in t)null==n[e]&&lO(l,e,"");for(let e in n)"display"===e&&(i=!0),lO(l,e,n[e])}else if(r){if(t!==n){let e=l[lk];e&&(n+=";"+e),l.cssText=n,i=lC.test(n)}}else t&&e.removeAttribute("style");lS in e&&(e[lS]=i?l.display:"",e[lw]&&(l.display="none"))}(e,n,l):g(t)?m(t)||function(e,t,n,l,r=null){let i=e[l$]||(e[l$]={}),s=i[t];if(l&&s)s.value=l;else{let[n,o]=function(e){let t;if(lj.test(e)){let n;for(t={};n=e.match(lj);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[":"===e[2]?e.slice(3):V(e.slice(2)),t]}(t);if(l){let s=i[t]=function(e,t){let n=e=>{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();tC(function(e,t){if(!S(t))return t;{let n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(e=>t=>!t._stopped&&e&&e(t))}}(e,n.value),t,5,[e])};return n.value=e,n.attached=lD||(lI.then(()=>lD=0),lD=Date.now()),n}(l,r);e.addEventListener(n,s,o)}else s&&(e.removeEventListener(n,s,o),i[t]=void 0)}}(e,t,0,l,i):("."===t[0]?(t=t.slice(1),0):"^"===t[0]?(t=t.slice(1),1):!function(e,t,n,l){if(l)return!!("innerHTML"===t||"textContent"===t||t in e&&lN(t)&&T(n));if("spellcheck"===t||"draggable"===t||"translate"===t||"autocorrect"===t||"form"===t||"list"===t&&"INPUT"===e.tagName||"type"===t&&"TEXTAREA"===e.tagName)return!1;if("width"===t||"height"===t){let t=e.tagName;if("IMG"===t||"VIDEO"===t||"CANVAS"===t||"SOURCE"===t)return!1}return!(lN(t)&&O(n))&&t in e}(e,t,l,s))?e._isVueCE&&(/[A-Z]/.test(t)||!O(l))?lA(e,F(t),l,i,t):("true-value"===t?e._trueValue=l:"false-value"===t&&(e._falseValue=l),lM(e,t,l,s)):(lA(e,t,l),e.tagName.includes("-")||"value"!==t&&"checked"!==t&&"selected"!==t||lM(e,t,l,s,i,"value"!==t))}},{insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,l)=>{let r="svg"===t?ly.createElementNS("http://www.w3.org/2000/svg",e):"mathml"===t?ly.createElementNS("http://www.w3.org/1998/Math/MathML",e):n?ly.createElement(e,{is:n}):ly.createElement(e);return"select"===e&&l&&null!=l.multiple&&r.setAttribute("multiple",l.multiple),r},createText:e=>ly.createTextNode(e),createComment:e=>ly.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ly.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,l,r,i){let s=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),r!==i&&(r=r.nextSibling););else{lb.innerHTML=l_("svg"===l?`<svg>${e}</svg>`:"mathml"===l?`<math>${e}</math>`:e);let r=lb.content;if("svg"===l||"mathml"===l){let e=r.firstChild;for(;e.firstChild;)r.appendChild(e.firstChild);r.removeChild(e)}t.insertBefore(r,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}}),lL=(...e)=>{let t=(o||(o=function(e,t){let n;z().__VUE__=!0;let{insert:l,remove:r,patchProp:i,createElement:s,createText:o,createComment:a,setText:u,setElementText:c,parentNode:h,nextSibling:g,setScopeId:m=d,insertStaticContent:y}=e,b=(e,t,n,l=null,r=null,i=null,s,o=null,a=!!t.dynamicChildren)=>{if(e===t)return;e&&!n1(e,t)&&(l=et(e),Z(e,r,i,!0),e=null),-2===t.patchFlag&&(a=!1,t.dynamicChildren=null);let{type:u,ref:c,shapeFlag:f}=t;switch(u){case nJ:w(e,t,n,l);break;case nZ:k(e,t,n,l);break;case nX:null==e&&C(t,n,l,s);break;case nK:I(e,t,n,l,r,i,s,o,a);break;default:1&f?O(e,t,n,l,r,i,s,o,a):6&f?N(e,t,n,l,r,i,s,o,a):64&f?u.process(e,t,n,l,r,i,s,o,a,er):128&f&&u.process(e,t,n,l,r,i,s,o,a,er)}null!=c&&r?tz(c,e&&e.ref,i,t||e,!t):null==c&&e&&null!=e.ref&&tz(e.ref,null,i,e,!0)},w=(e,t,n,r)=>{if(null==e)l(t.el=o(t.children),n,r);else{let n=t.el=e.el;t.children!==e.children&&u(n,t.children)}},k=(e,t,n,r)=>{null==e?l(t.el=a(t.children||""),n,r):t.el=e.el},C=(e,t,n,l)=>{[e.el,e.anchor]=y(e.children,t,n,l,e.el,e.anchor)},O=(e,t,n,l,r,i,s,o,a)=>{"svg"===t.type?s="svg":"math"===t.type&&(s="mathml"),null==e?R(t,n,l,r,i,s,o,a):A(e,t,r,i,s,o,a)},R=(e,t,n,r,o,a,u,f)=>{var p,d;let h,g,{props:m,shapeFlag:_,transition:y,dirs:b}=e;if(h=e.el=s(e.type,a,m&&m.is,m),8&_?c(h,e.children):16&_&&M(e.children,h,null,r,o,nD(e,a),u,f),b&&tB(e,null,r,"created"),E(h,e,e.scopeId,u,r),m){for(let e in m)"value"===e||D(e)||i(h,e,null,m[e],a,r);"value"in m&&i(h,"value",null,m.value,a),(g=m.onVnodeBeforeMount)&&le(g,r,e)}b&&tB(e,null,r,"beforeMount");let x=(p=o,d=y,(!p||p&&!p.pendingBranch)&&d&&!d.persisted);x&&y.beforeEnter(h),l(h,t,n),((g=m&&m.onVnodeMounted)||x||b)&&nj(()=>{g&&le(g,r,e),x&&y.enter(h),b&&tB(e,null,r,"mounted")},o)},E=(e,t,n,l,r)=>{if(n&&m(e,n),l)for(let t=0;t<l.length;t++)m(e,l[t]);if(r){let n=r.subTree;if(t===n||n.type.__isSuspense&&(n.ssContent===t||n.ssFallback===t)){let t=r.vnode;E(e,t,t.scopeId,t.slotScopeIds,r.parent)}}},M=(e,t,n,l,r,i,s,o,a=0)=>{for(let u=a;u<e.length;u++)b(null,e[u]=o?n5(e[u]):n3(e[u]),t,n,l,r,i,s,o)},A=(e,t,n,l,r,s,o)=>{let a,u=t.el=e.el,{patchFlag:p,dynamicChildren:d,dirs:h}=t;p|=16&e.patchFlag;let g=e.props||f,m=t.props||f;if(n&&nI(n,!1),(a=m.onVnodeBeforeUpdate)&&le(a,n,t,e),h&&tB(t,e,n,"beforeUpdate"),n&&nI(n,!0),(g.innerHTML&&null==m.innerHTML||g.textContent&&null==m.textContent)&&c(u,""),d?$(e.dynamicChildren,d,u,n,l,nD(t,r),s):o||q(e,t,u,null,n,l,nD(t,r),s,!1),p>0){if(16&p)j(u,g,m,n,r);else if(2&p&&g.class!==m.class&&i(u,"class",null,m.class,r),4&p&&i(u,"style",g.style,m.style,r),8&p){let e=t.dynamicProps;for(let t=0;t<e.length;t++){let l=e[t],s=g[l],o=m[l];(o!==s||"value"===l)&&i(u,l,s,o,r,n)}}1&p&&e.children!==t.children&&c(u,t.children)}else o||null!=d||j(u,g,m,n,r);((a=m.onVnodeUpdated)||h)&&nj(()=>{a&&le(a,n,t,e),h&&tB(t,e,n,"updated")},l)},$=(e,t,n,l,r,i,s)=>{for(let o=0;o<t.length;o++){let a=e[o],u=t[o],c=a.el&&(a.type===nK||!n1(a,u)||198&a.shapeFlag)?h(a.el):n;b(a,u,c,null,l,r,i,s,!0)}},j=(e,t,n,l,r)=>{if(t!==n){if(t!==f)for(let s in t)D(s)||s in n||i(e,s,t[s],null,r,l);for(let s in n){if(D(s))continue;let o=n[s],a=t[s];o!==a&&"value"!==s&&i(e,s,a,o,r,l)}"value"in n&&i(e,"value",t.value,n.value,r)}},I=(e,t,n,r,i,s,a,u,c)=>{let f=t.el=e?e.el:o(""),p=t.anchor=e?e.anchor:o(""),{patchFlag:d,dynamicChildren:h,slotScopeIds:g}=t;g&&(u=u?u.concat(g):g),null==e?(l(f,n,r),l(p,n,r),M(t.children||[],n,p,i,s,a,u,c)):d>0&&64&d&&h&&e.dynamicChildren?($(e.dynamicChildren,h,n,i,s,a,u),(null!=t.key||i&&t===i.subTree)&&function e(t,n,l=!1){let r=t.children,i=n.children;if(S(r)&&S(i))for(let t=0;t<r.length;t++){let n=r[t],s=i[t];1&s.shapeFlag&&!s.dynamicChildren&&((s.patchFlag<=0||32===s.patchFlag)&&((s=i[t]=n5(i[t])).el=n.el),l||-2===s.patchFlag||e(n,s)),s.type===nJ&&(s.el=n.el),s.type!==nZ||s.el||(s.el=n.el)}}(e,t,!0)):q(e,t,n,p,i,s,a,u,c)},N=(e,t,n,l,r,i,s,o,a)=>{t.slotScopeIds=o,null==e?512&t.shapeFlag?r.ctx.activate(t,n,l,s,a):L(t,n,l,r,i,s,a):W(e,t,a)},L=(e,t,n,l,r,i,s)=>{let o=e.component=ll(e,l,r);if(tJ(e)&&(o.ctx.renderer=er),lc(o,!1,s),o.asyncDep){if(r&&r.registerDep(o,U,s),!e.el){let l=o.subTree=n8(nZ);k(null,l,t,n),e.placeholder=l.el}}else U(o,e,t,n,r,i,s)},W=(e,t,n)=>{let l=t.component=e.component;if(function(e,t,n){let{props:l,children:r,component:i}=e,{props:s,children:o,patchFlag:a}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(!n||!(a>=0))return(!!r||!!o)&&(!o||!o.$stable)||l!==s&&(l?!s||nz(l,s,u):!!s);if(1024&a)return!0;if(16&a)return l?nz(l,s,u):!!s;if(8&a){let e=t.dynamicProps;for(let t=0;t<e.length;t++){let n=e[t];if(s[n]!==l[n]&&!nB(u,n))return!0}}return!1}(e,t,n))if(l.asyncDep&&!l.asyncResolved)return void B(l,t,n);else l.next=t,l.update();else t.el=e.el,l.vnode=t},U=(e,t,n,l,r,i,s)=>{let o=()=>{if(e.isMounted){let t,{next:n,bu:l,u:a,parent:u,vnode:c}=e;{let t=function e(t){let n=t.subTree.component;if(n)if(n.asyncDep&&!n.asyncResolved)return n;else return e(n)}(e);if(t){n&&(n.el=c.el,B(e,n,s)),t.asyncDep.then(()=>{e.isUnmounted||o()});return}}let f=n;nI(e,!1),n?(n.el=c.el,B(e,n,s)):n=c,l&&H(l),(t=n.props&&n.props.onVnodeBeforeUpdate)&&le(t,u,n,c),nI(e,!0);let p=nH(e),d=e.subTree;e.subTree=p,b(d,p,h(d.el),et(d),e,r,i),n.el=p.el,null===f&&function({vnode:e,parent:t},n){for(;t;){let l=t.subTree;if(l.suspense&&l.suspense.activeBranch===e&&(l.el=e.el),l===e)(e=t.vnode).el=n,t=t.parent;else break}}(e,p.el),a&&nj(a,r),(t=n.props&&n.props.onVnodeUpdated)&&nj(()=>le(t,u,n,c),r)}else{let s,{el:o,props:a}=t,{bm:u,m:c,parent:f,root:p,type:d}=e,h=tK(t);nI(e,!1),u&&H(u),!h&&(s=a&&a.onVnodeBeforeMount)&&le(s,f,t),nI(e,!0);{p.ce&&!1!==p.ce._def.shadowRoot&&p.ce._injectChildStyle(d);let s=e.subTree=nH(e);b(null,s,n,l,e,r,i),t.el=s.el}if(c&&nj(c,r),!h&&(s=a&&a.onVnodeMounted)){let e=t;nj(()=>le(s,f,e),r)}(256&t.shapeFlag||f&&tK(f.vnode)&&256&f.vnode.shapeFlag)&&e.a&&nj(e.a,r),e.isMounted=!0,t=n=l=null}};e.scope.on();let a=e.effect=new eb(o);e.scope.off();let u=e.update=a.run.bind(a),c=e.job=a.runIfDirty.bind(a);c.i=e,c.id=e.uid,a.scheduler=()=>tD(c),nI(e,!0),u()},B=(e,t,n)=>{t.component=e;let l=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,l){let{props:r,attrs:i,vnode:{patchFlag:s}}=e,o=th(r),[a]=e.propsOptions,u=!1;if((l||s>0)&&!(16&s)){if(8&s){let n=e.vnode.dynamicProps;for(let l=0;l<n.length;l++){let s=n[l];if(nB(e.emitsOptions,s))continue;let c=t[s];if(a)if(x(i,s))c!==i[s]&&(i[s]=c,u=!0);else{let t=F(s);r[t]=nC(a,o,t,c,e,!1)}else c!==i[s]&&(i[s]=c,u=!0)}}}else{let l;for(let s in nk(e,t,r,i)&&(u=!0),o)t&&(x(t,s)||(l=V(s))!==s&&x(t,l))||(a?n&&(void 0!==n[s]||void 0!==n[l])&&(r[s]=nC(a,o,s,void 0,e,!0)):delete r[s]);if(i!==o)for(let e in i)t&&x(t,e)||(delete i[e],u=!0)}u&&eU(e.attrs,"set","")}(e,t.props,l,n),((e,t,n)=>{let{vnode:l,slots:r}=e,i=!0,s=f;if(32&l.shapeFlag){let e=t._;e?n&&1===e?i=!1:n$(r,t,n):(i=!t.$stable,nM(t,r)),s=t}else t&&(nA(e,t),s={default:1});if(i)for(let e in r)nR(e)||null!=s[e]||delete r[e]})(e,t.children,n),eM(),tN(e),eA()},q=(e,t,n,l,r,i,s,o,a=!1)=>{let u=e&&e.children,f=e?e.shapeFlag:0,p=t.children,{patchFlag:d,shapeFlag:h}=t;if(d>0){if(128&d)return void K(u,p,n,l,r,i,s,o,a);else if(256&d)return void G(u,p,n,l,r,i,s,o,a)}8&h?(16&f&&ee(u,r,i),p!==u&&c(n,p)):16&f?16&h?K(u,p,n,l,r,i,s,o,a):ee(u,r,i,!0):(8&f&&c(n,""),16&h&&M(p,n,l,r,i,s,o,a))},G=(e,t,n,l,r,i,s,o,a)=>{let u;e=e||p,t=t||p;let c=e.length,f=t.length,d=Math.min(c,f);for(u=0;u<d;u++){let l=t[u]=a?n5(t[u]):n3(t[u]);b(e[u],l,n,null,r,i,s,o,a)}c>f?ee(e,r,i,!0,!1,d):M(t,n,l,r,i,s,o,a,d)},K=(e,t,n,l,r,i,s,o,a)=>{let u=0,c=t.length,f=e.length-1,d=c-1;for(;u<=f&&u<=d;){let l=e[u],c=t[u]=a?n5(t[u]):n3(t[u]);if(n1(l,c))b(l,c,n,null,r,i,s,o,a);else break;u++}for(;u<=f&&u<=d;){let l=e[f],u=t[d]=a?n5(t[d]):n3(t[d]);if(n1(l,u))b(l,u,n,null,r,i,s,o,a);else break;f--,d--}if(u>f){if(u<=d){let e=d+1,f=e<c?t[e].el:l;for(;u<=d;)b(null,t[u]=a?n5(t[u]):n3(t[u]),n,f,r,i,s,o,a),u++}}else if(u>d)for(;u<=f;)Z(e[u],r,i,!0),u++;else{let h,g=u,m=u,_=new Map;for(u=m;u<=d;u++){let e=t[u]=a?n5(t[u]):n3(t[u]);null!=e.key&&_.set(e.key,u)}let y=0,x=d-m+1,S=!1,w=0,k=Array(x);for(u=0;u<x;u++)k[u]=0;for(u=g;u<=f;u++){let l,c=e[u];if(y>=x){Z(c,r,i,!0);continue}if(null!=c.key)l=_.get(c.key);else for(h=m;h<=d;h++)if(0===k[h-m]&&n1(c,t[h])){l=h;break}void 0===l?Z(c,r,i,!0):(k[l-m]=u+1,l>=w?w=l:S=!0,b(c,t[l],n,null,r,i,s,o,a),y++)}let C=S?function(e){let t,n,l,r,i,s=e.slice(),o=[0],a=e.length;for(t=0;t<a;t++){let a=e[t];if(0!==a){if(e[n=o[o.length-1]]<a){s[t]=n,o.push(t);continue}for(l=0,r=o.length-1;l<r;)e[o[i=l+r>>1]]<a?l=i+1:r=i;a<e[o[l]]&&(l>0&&(s[t]=o[l-1]),o[l]=t)}}for(l=o.length,r=o[l-1];l-- >0;)o[l]=r,r=s[r];return o}(k):p;for(h=C.length-1,u=x-1;u>=0;u--){let e=m+u,f=t[e],p=t[e+1],d=e+1<c?p.el||p.placeholder:l;0===k[u]?b(null,f,n,d,r,i,s,o,a):S&&(h<0||u!==C[h]?J(f,n,d,2):h--)}}},J=(e,t,n,i,s=null)=>{let{el:o,type:a,transition:u,children:c,shapeFlag:f}=e;if(6&f)return void J(e.component.subTree,t,n,i);if(128&f)return void e.suspense.move(t,n,i);if(64&f)return void a.move(e,t,n,er);if(a===nK){l(o,t,n);for(let e=0;e<c.length;e++)J(c[e],t,n,i);l(e.anchor,t,n);return}if(a===nX)return void(({el:e,anchor:t},n,r)=>{let i;for(;e&&e!==t;)i=g(e),l(e,n,r),e=i;l(t,n,r)})(e,t,n);if(2!==i&&1&f&&u)if(0===i)u.beforeEnter(o),l(o,t,n),nj(()=>u.enter(o),s);else{let{leave:i,delayLeave:s,afterLeave:a}=u,c=()=>{e.ctx.isUnmounted?r(o):l(o,t,n)},f=()=>{i(o,()=>{c(),a&&a()})};s?s(o,c,f):f()}else l(o,t,n)},Z=(e,t,n,l=!1,r=!1)=>{let i,{type:s,props:o,ref:a,children:u,dynamicChildren:c,shapeFlag:f,patchFlag:p,dirs:d,cacheIndex:h}=e;if(-2===p&&(r=!1),null!=a&&(eM(),tz(a,null,n,e,!0),eA()),null!=h&&(t.renderCache[h]=void 0),256&f)return void t.ctx.deactivate(e);let g=1&f&&d,m=!tK(e);if(m&&(i=o&&o.onVnodeBeforeUnmount)&&le(i,t,e),6&f)Y(e.component,n,l);else{if(128&f)return void e.suspense.unmount(n,l);g&&tB(e,null,t,"beforeUnmount"),64&f?e.type.remove(e,t,n,er,l):c&&!c.hasOnce&&(s!==nK||p>0&&64&p)?ee(c,t,n,!1,!0):(s===nK&&384&p||!r&&16&f)&&ee(u,t,n),l&&X(e)}(m&&(i=o&&o.onVnodeUnmounted)||g)&&nj(()=>{i&&le(i,t,e),g&&tB(e,null,t,"unmounted")},n)},X=e=>{let{type:t,el:n,anchor:l,transition:i}=e;if(t===nK)return void Q(n,l);if(t===nX)return void(({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=g(e),r(e),e=n;r(t)})(e);let s=()=>{r(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(1&e.shapeFlag&&i&&!i.persisted){let{leave:t,delayLeave:l}=i,r=()=>t(n,s);l?l(e.el,s,r):r()}else s()},Q=(e,t)=>{let n;for(;e!==t;)n=g(e),r(e),e=n;r(t)},Y=(e,t,n)=>{let{bum:l,scope:r,job:i,subTree:s,um:o,m:a,a:u,parent:c,slots:{__:f}}=e;nN(a),nN(u),l&&H(l),c&&S(f)&&f.forEach(e=>{c.renderCache[e]=void 0}),r.stop(),i&&(i.flags|=8,Z(s,e,t,n)),o&&nj(o,t),nj(()=>{e.isUnmounted=!0},t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},ee=(e,t,n,l=!1,r=!1,i=0)=>{for(let s=i;s<e.length;s++)Z(e[s],t,n,l,r)},et=e=>{if(6&e.shapeFlag)return et(e.component.subTree);if(128&e.shapeFlag)return e.suspense.next();let t=g(e.anchor||e.el),n=t&&t[tH];return n?g(n):t},en=!1,el=(e,t,n)=>{null==e?t._vnode&&Z(t._vnode,null,null,!0):b(t._vnode||null,e,t,null,null,null,n),t._vnode=e,en||(en=!0,tN(),tF(),en=!1)},er={p:b,um:Z,m:J,r:X,mt:L,mc:M,pc:q,pbc:$,n:et,o:e};return{render:el,hydrate:n,createApp:function(e,t=null){T(e)||(e=_({},e)),null==t||P(t)||(t=null);let n=nm(),l=new WeakSet,r=[],i=!1,s=n.app={_uid:n_++,_component:e,_props:t,_container:null,_context:n,_instance:null,version:"3.5.18",get config(){return n.config},set config(v){},use:(e,...t)=>(l.has(e)||(e&&T(e.install)?(l.add(e),e.install(s,...t)):T(e)&&(l.add(e),e(s,...t))),s),mixin:e=>(n.mixins.includes(e)||n.mixins.push(e),s),component:(e,t)=>t?(n.components[e]=t,s):n.components[e],directive:(e,t)=>t?(n.directives[e]=t,s):n.directives[e],mount(l,r,o){if(!i){let r=s._ceVNode||n8(e,t);return r.appContext=n,!0===o?o="svg":!1===o&&(o=void 0),el(r,l,o),i=!0,s._container=l,l.__vue_app__=s,lh(r.component)}},onUnmount(e){r.push(e)},unmount(){i&&(tC(r,s._instance,16),el(null,s._container),delete s._container.__vue_app__)},provide:(e,t)=>(n.provides[e]=t,s),runWithContext(e){let t=ny;ny=s;try{return e()}finally{ny=t}}};return s}}}(lF))).createApp(...e),{mount:n}=t;return t.mount=e=>{var l,r;let i=O(l=e)?document.querySelector(l):l;if(!i)return;let s=t._component;T(s)||s.render||s.template||(s.template=i.innerHTML),1===i.nodeType&&(i.textContent="");let o=n(i,!1,(r=i)instanceof SVGElement?"svg":"function"==typeof MathMLElement&&r instanceof MathMLElement?"mathml":void 0);return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),o},t},lV=!1,lW=c(",key,ref,innerHTML,textContent,ref_key,ref_for");function lU(e,t){let n="";for(let l in e){if(lW(l)||g(l)||"textarea"===t&&"value"===l)continue;let r=e[l];"class"===l?n+=` class="${lq(r)}"`:"style"===l?n+=` style="${lG(r)}"`:"className"===l?n+=` class="${String(r)}"`:n+=lB(l,r,t)}return n}function lB(e,t,n){if(!ea(t))return"";let l=n&&(n.indexOf("-")>0||Y(n))?e:eo[e]||e.toLowerCase();return el(l)?er(t)?` ${l}`:"":!function(e){if(es.hasOwnProperty(e))return es[e];let t=ei.test(e);return t&&console.error(`unsafe attribute name: ${e}`),es[e]=!t}(l)?(console.warn(`[@vue/server-renderer] Skipped rendering unsafe attribute name: ${l}`),""):""===t?` ${l}`:` ${l}="${ec(t)}"`}function lH(e,t){return ea(t)?` ${e}="${ec(t)}"`:""}function lq(e){return ec(Q(e))}function lG(e){return e?O(e)?ec(e):ec(function(e){if(!e)return"";if(O(e))return e;let t="";for(let n in e){let l=e[n];if(O(l)||"number"==typeof l){let e=n.startsWith("--")?n:V(n);t+=`${e}:${l};`}}return t}(K(function(e){if(!S(e)&&P(e)){let n={};for(let l in e)if(l.startsWith(":--")){var t;n[l.slice(1)]=null==(t=e[l])?"initial":"string"==typeof t?""===t?" ":t:String(t)}else n[l]=e[l];return n}return e}(e)))):""}function lz(e,t=null,n=null,l=null,r){return rr(n8(e,t,n),l,r)}let{ensureValidVNode:lK}=lg;function lJ(e,t,n,l,r,i,s){r("\x3c!--[--\x3e"),lZ(e,t,n,l,r,i,s),r("\x3c!--]--\x3e")}function lZ(e,t,n,l,r,i,s,o){let a=e[t];if(a){let e=[],t=a(n,t=>{e.push(t)},i,s?" "+s:"");if(S(t)){let e=lK(t);e?ro(r,e,i,s):l?l():o&&r("\x3c!----\x3e")}else{let t=!0;if(o)t=!1;else for(let n=0;n<e.length;n++){var u;if(!("string"==typeof(u=e[n])&&lX.test(u)&&(u.length<=8||!u.replace(lQ,"").trim()))){t=!1;break}}if(t)l&&l();else{let t=0,n=e.length;if(o&&"\x3c!--[--\x3e"===e[0]&&"\x3c!--]--\x3e"===e[n-1]&&(t++,n--),t<n)for(let l=t;l<n;l++)r(e[l]);else o&&r("\x3c!----\x3e")}}}else l?l():o&&r("\x3c!----\x3e")}let lX=/^<!--[\s\S]*-->$/,lQ=/<!--[^]*?-->/gm;function lY(e,t,n,l,r){let i;e("\x3c!--teleport start--\x3e");let s=r.appContext.provides[nF],o=s.__teleportBuffers||(s.__teleportBuffers={}),a=o[n]||(o[n]=[]),u=a.length;if(l)t(e),i="\x3c!--teleport start anchor--\x3e\x3c!--teleport anchor--\x3e";else{let{getBuffer:e,push:n}=rl();n("\x3c!--teleport start anchor--\x3e"),t(n),n("\x3c!--teleport anchor--\x3e"),i=e()}a.splice(u,0,i),e("\x3c!--teleport end--\x3e")}function l0(e){return ec(ev(e))}function l1(e,t){if(S(e)||O(e))for(let n=0,l=e.length;n<l;n++)t(e[n],n);else if("number"==typeof e)for(let n=0;n<e;n++)t(n+1,n);else if(P(e))if(e[Symbol.iterator]){let n=Array.from(e);for(let e=0,l=n.length;e<l;e++)t(n[e],e)}else{let n=Object.keys(e);for(let l=0,r=n.length;l<r;l++){let r=n[l];t(e[r],r,l)}}}async function l2(e,{default:t}){t?t():e("\x3c!----\x3e")}function l6(e,t,n,l,r={}){return"function"!=typeof t&&t.getSSRProps&&t.getSSRProps({dir:t,instance:lg.getComponentPublicInstance(e.$),value:n,oldValue:void 0,arg:l,modifiers:r},null)||{}}let l8=ep;function l4(e,t){return ed(e,t)>-1}function l3(e,t,n){switch(e){case"radio":return ep(t,n)?" checked":"";case"checkbox":return(S(t)?l4(t,n):t)?" checked":"";default:return lH("value",t)}}function l5(e={},t){let{type:n,value:l}=e;switch(n){case"radio":return ep(t,l)?{checked:!0}:null;case"checkbox":return(S(t)?l4(t,l):t)?{checked:!0}:null;default:return{value:t}}}let{createComponentInstance:l9,setCurrentRenderingInstance:l7,setupComponent:re,renderComponentRoot:rt,normalizeVNode:rn}=lg;function rl(){let e=!1,t=[];return{getBuffer:()=>t,push(n){let l=O(n);if(e&&l){t[t.length-1]+=n;return}t.push(n),e=l,(E(n)||S(n)&&n.hasAsync)&&(t.hasAsync=!0)}}}function rr(e,t=null,n){let l=e.component=l9(e,t,null),r=re(l,!0),i=E(r),s=l.sp;return i||s?Promise.resolve(r).then(()=>{if(i&&(s=l.sp),s)return Promise.all(s.map(e=>e.call(l.proxy)))}).catch(d).then(()=>ri(l,n)):ri(l,n)}function ri(e,t){let n=e.type,{getBuffer:l,push:r}=rl();if(T(n)){let l=rt(e);if(!n.props)for(let t in e.attrs)t.startsWith("data-v-")&&((l.props||(l.props={}))[t]="");rs(r,e.subTree=l,e,t)}else{(!e.render||e.render===d)&&!e.ssrRender&&!n.ssrRender&&O(n.template)&&(n.ssrRender=function(e,t){throw Error("On-the-fly template compilation is not supported in the ESM build of @vue/server-renderer. All templates must be pre-compiled into render functions.")}(n.template));let l=e.ssrRender||n.ssrRender;if(l){let n=!1!==e.inheritAttrs?e.attrs:void 0,i=!1,s=e;for(;;){let e=s.vnode.scopeId;e&&(i||(n={...n},i=!0),n[e]="");let t=s.parent;if(t&&t.subTree&&t.subTree===s.vnode)s=t;else break}if(t){i||(n={...n});let e=t.trim().split(" ");for(let t=0;t<e.length;t++)n[e[t]]=""}let o=l7(e);try{l(e.proxy,r,e,n,e.props,e.setupState,e.data,e.ctx)}finally{l7(o)}}else e.render&&e.render!==d?rs(r,e.subTree=rt(e),e,t):(n.name||n.__file,r("\x3c!----\x3e"))}return l()}function rs(e,t,n,l){let{type:r,shapeFlag:i,children:s,dirs:o,props:a}=t;switch(o&&(t.props=function(e,t,n){let l=[];for(let t=0;t<n.length;t++){let r=n[t],{dir:{getSSRProps:i}}=r;if(i){let t=i(r,e);t&&l.push(t)}}return n7(t||{},...l)}(t,a,o)),r){case nJ:e(ec(s));break;case nZ:e(s?`<!--${s.replace(ef,"")}-->`:"\x3c!----\x3e");break;case nX:e(s);break;case nK:t.slotScopeIds&&(l=(l?l+" ":"")+t.slotScopeIds.join(" ")),e("\x3c!--[--\x3e"),ro(e,s,n,l),e("\x3c!--]--\x3e");break;default:1&i?function(e,t,n,l){let r=t.type,{props:i,children:s,shapeFlag:o,scopeId:a}=t,u=`<${r}`;i&&(u+=lU(i,r)),a&&(u+=` ${a}`);let c=n,f=t;for(;c&&f===c.subTree;)(f=c.vnode).scopeId&&(u+=` ${f.scopeId}`),c=c.parent;if(l&&(u+=` ${l}`),e(u+">"),!ee(r)){let t=!1;i&&(i.innerHTML?(t=!0,e(i.innerHTML)):i.textContent?(t=!0,e(ec(i.textContent))):"textarea"===r&&i.value&&(t=!0,e(ec(i.value)))),!t&&(8&o?e(ec(s)):16&o&&ro(e,s,n,l)),e(`</${r}>`)}}(e,t,n,l):6&i?e(rr(t,n,l)):64&i?function(e,t,n,l){let r=t.props&&t.props.to,i=t.props&&t.props.disabled;if(r&&O(r))lY(e,e=>{ro(e,t.children,n,l)},r,i||""===i,n)}(e,t,n,l):128&i&&rs(e,t.ssContent,n,l)}}function ro(e,t,n,l){for(let r=0;r<t.length;r++)rs(e,rn(t[r]),n,l)}let{isVNode:ra}=lg;function ru(e){return function e(t,n,l){if(!t.hasAsync)return n+function e(t){let n="";for(let l=0;l<t.length;l++){let r=t[l];O(r)?n+=r:n+=e(r)}return n}(t);let r=n;for(let n=l;n<t.length;n+=1){let l=t[n];if(O(l)){r+=l;continue}if(E(l))return l.then(l=>(t[n]=l,e(t,r,n)));let i=e(l,r,0);if(E(i))return i.then(l=>(t[n]=l,e(t,"",n)));r=i}return r}(e,"",0)}async function rc(e,t={}){if(ra(e))return rc(lL({render:()=>e}),t);let n=n8(e._component,e._props);n.appContext=e._context,e.provide(nF,t);let l=await rr(n),r=await ru(l);if(await rf(t),t.__watcherHandles)for(let e of t.__watcherHandles)e();return r}async function rf(e){if(e.__teleportBuffers)for(let t in e.teleports=e.teleports||{},e.__teleportBuffers)e.teleports[t]=await ru(await Promise.all([e.__teleportBuffers[t]]))}let{isVNode:rp}=lg;async function rd(e,t){if(e.hasAsync)for(let n=0;n<e.length;n++){let l=e[n];E(l)&&(l=await l),O(l)?t.push(l):await rd(l,t)}else!function e(t,n){for(let l=0;l<t.length;l++){let r=t[l];O(r)?n.push(r):e(r,n)}}(e,t)}function rh(e,t,n){if(rp(e))return rh(lL({render:()=>e}),t,n);let l=n8(e._component,e._props);return l.appContext=e._context,e.provide(nF,t),Promise.resolve(rr(l)).then(e=>rd(e,n)).then(()=>rf(t)).then(()=>{if(t.__watcherHandles)for(let e of t.__watcherHandles)e()}).then(()=>n.push(null)).catch(e=>{n.destroy(e)}),n}function rv(e,t={}){return console.warn("[@vue/server-renderer] renderToStream is deprecated - use renderToNodeStream instead."),rg(e,t)}function rg(e,t={}){throw Error("ESM build of renderToStream() does not support renderToNodeStream(). Use pipeToNodeWritable() with an existing Node.js Writable stream instance instead.")}function rm(e,t={},n){rh(e,t,{push(e){null!=e?n.write(e):n.end()},destroy(e){n.destroy(e)}})}function r_(e,t={}){if("function"!=typeof ReadableStream)throw Error("ReadableStream constructor is not available in the global scope. If the target environment does support web streams, consider using pipeToWebWritable() with an existing WritableStream instance instead.");let n=new TextEncoder,l=!1;return new ReadableStream({start(r){rh(e,t,{push(e){l||(null!=e?r.enqueue(n.encode(e)):r.close())},destroy(e){r.error(e)}})},cancel(){l=!0}})}function ry(e,t={},n){let l=n.getWriter(),r=new TextEncoder,i=!1;try{i=E(l.ready)}catch(e){}rh(e,t,{push:async e=>(i&&await l.ready,null!=e)?l.write(r.encode(e)):l.close(),destroy(e){console.log(e),l.close()}})}lV||(lV=!0,({value:e},t)=>{if(S(e)){if(t.props&&ed(e,t.props.value)>-1)return{checked:!0}}else if(k(e)){if(t.props&&e.has(t.props.value))return{checked:!0}}else if(e)return{checked:!0}});export{rm as pipeToNodeWritable,ry as pipeToWebWritable,rg as renderToNodeStream,rh as renderToSimpleStream,rv as renderToStream,rc as renderToString,r_ as renderToWebStream,l6 as ssrGetDirectiveProps,l5 as ssrGetDynamicModelProps,er as ssrIncludeBooleanAttr,l0 as ssrInterpolate,l4 as ssrLooseContain,l8 as ssrLooseEqual,lH as ssrRenderAttr,lU as ssrRenderAttrs,lq as ssrRenderClass,lz as ssrRenderComponent,lB as ssrRenderDynamicAttr,l3 as ssrRenderDynamicModel,l1 as ssrRenderList,lJ as ssrRenderSlot,lZ as ssrRenderSlotInner,lG as ssrRenderStyle,l2 as ssrRenderSuspense,lY as ssrRenderTeleport,rs as ssrRenderVNode}; diff --git a/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js b/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js new file mode 100644 index 0000000..2f55783 --- /dev/null +++ b/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js @@ -0,0 +1,1088 @@ +/** +* @vue/server-renderer v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +import { createVNode, ssrUtils, ssrContextKey, warn as warn$2, Fragment, Static, Comment, Text, mergeProps, createApp, initDirectivesForSSR } from 'vue'; +import { makeMap, isOn, isRenderableAttrValue, isSVGTag, propsToAttrMap, isBooleanAttr, includeBooleanAttr, isSSRSafeAttrName, escapeHtml, normalizeClass, isString, normalizeStyle, stringifyStyle, isArray, isObject, normalizeCssVarValue, toDisplayString, isFunction, EMPTY_OBJ, getGlobalThis, NOOP, looseEqual, looseIndexOf, escapeHtmlComment, isPromise, isVoidTag } from '@vue/shared'; +export { includeBooleanAttr as ssrIncludeBooleanAttr } from '@vue/shared'; + +const shouldIgnoreProp = /* @__PURE__ */ makeMap( + `,key,ref,innerHTML,textContent,ref_key,ref_for` +); +function ssrRenderAttrs(props, tag) { + let ret = ""; + for (const key in props) { + if (shouldIgnoreProp(key) || isOn(key) || tag === "textarea" && key === "value") { + continue; + } + const value = props[key]; + if (key === "class") { + ret += ` class="${ssrRenderClass(value)}"`; + } else if (key === "style") { + ret += ` style="${ssrRenderStyle(value)}"`; + } else if (key === "className") { + ret += ` class="${String(value)}"`; + } else { + ret += ssrRenderDynamicAttr(key, value, tag); + } + } + return ret; +} +function ssrRenderDynamicAttr(key, value, tag) { + if (!isRenderableAttrValue(value)) { + return ``; + } + const attrKey = tag && (tag.indexOf("-") > 0 || isSVGTag(tag)) ? key : propsToAttrMap[key] || key.toLowerCase(); + if (isBooleanAttr(attrKey)) { + return includeBooleanAttr(value) ? ` ${attrKey}` : ``; + } else if (isSSRSafeAttrName(attrKey)) { + return value === "" ? ` ${attrKey}` : ` ${attrKey}="${escapeHtml(value)}"`; + } else { + console.warn( + `[@vue/server-renderer] Skipped rendering unsafe attribute name: ${attrKey}` + ); + return ``; + } +} +function ssrRenderAttr(key, value) { + if (!isRenderableAttrValue(value)) { + return ``; + } + return ` ${key}="${escapeHtml(value)}"`; +} +function ssrRenderClass(raw) { + return escapeHtml(normalizeClass(raw)); +} +function ssrRenderStyle(raw) { + if (!raw) { + return ""; + } + if (isString(raw)) { + return escapeHtml(raw); + } + const styles = normalizeStyle(ssrResetCssVars(raw)); + return escapeHtml(stringifyStyle(styles)); +} +function ssrResetCssVars(raw) { + if (!isArray(raw) && isObject(raw)) { + const res = {}; + for (const key in raw) { + if (key.startsWith(":--")) { + res[key.slice(1)] = normalizeCssVarValue(raw[key]); + } else { + res[key] = raw[key]; + } + } + return res; + } + return raw; +} + +function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) { + return renderComponentVNode( + createVNode(comp, props, children), + parentComponent, + slotScopeId + ); +} + +const { ensureValidVNode } = ssrUtils; +function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) { + push(`<!--[-->`); + ssrRenderSlotInner( + slots, + slotName, + slotProps, + fallbackRenderFn, + push, + parentComponent, + slotScopeId + ); + push(`<!--]-->`); +} +function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) { + const slotFn = slots[slotName]; + if (slotFn) { + const slotBuffer = []; + const bufferedPush = (item) => { + slotBuffer.push(item); + }; + const ret = slotFn( + slotProps, + bufferedPush, + parentComponent, + slotScopeId ? " " + slotScopeId : "" + ); + if (isArray(ret)) { + const validSlotContent = ensureValidVNode(ret); + if (validSlotContent) { + renderVNodeChildren( + push, + validSlotContent, + parentComponent, + slotScopeId + ); + } else if (fallbackRenderFn) { + fallbackRenderFn(); + } else if (transition) { + push(`<!---->`); + } + } else { + let isEmptySlot = true; + if (transition) { + isEmptySlot = false; + } else { + for (let i = 0; i < slotBuffer.length; i++) { + if (!isComment(slotBuffer[i])) { + isEmptySlot = false; + break; + } + } + } + if (isEmptySlot) { + if (fallbackRenderFn) { + fallbackRenderFn(); + } + } else { + let start = 0; + let end = slotBuffer.length; + if (transition && slotBuffer[0] === "<!--[-->" && slotBuffer[end - 1] === "<!--]-->") { + start++; + end--; + } + if (start < end) { + for (let i = start; i < end; i++) { + push(slotBuffer[i]); + } + } else if (transition) { + push(`<!---->`); + } + } + } + } else if (fallbackRenderFn) { + fallbackRenderFn(); + } else if (transition) { + push(`<!---->`); + } +} +const commentTestRE = /^<!--[\s\S]*-->$/; +const commentRE = /<!--[^]*?-->/gm; +function isComment(item) { + if (typeof item !== "string" || !commentTestRE.test(item)) return false; + if (item.length <= 8) return true; + return !item.replace(commentRE, "").trim(); +} + +function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) { + parentPush("<!--teleport start-->"); + const context = parentComponent.appContext.provides[ssrContextKey]; + const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {}); + const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []); + const bufferIndex = targetBuffer.length; + let teleportContent; + if (disabled) { + contentRenderFn(parentPush); + teleportContent = `<!--teleport start anchor--><!--teleport anchor-->`; + } else { + const { getBuffer, push } = createBuffer(); + push(`<!--teleport start anchor-->`); + contentRenderFn(push); + push(`<!--teleport anchor-->`); + teleportContent = getBuffer(); + } + targetBuffer.splice(bufferIndex, 0, teleportContent); + parentPush("<!--teleport end-->"); +} + +function ssrInterpolate(value) { + return escapeHtml(toDisplayString(value)); +} + +function isProxy(value) { + return value ? !!value["__v_raw"] : false; +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} + +function isRef(r) { + return r ? r["__v_isRef"] === true : false; +} + +const stack = []; +function pushWarningContext$1(vnode) { + stack.push(vnode); +} +function popWarningContext$1() { + stack.pop(); +} +let isWarning = false; +function warn$1(msg, ...args) { + if (isWarning) return; + isWarning = true; + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + // eslint-disable-next-line no-restricted-syntax + msg + args.map((a) => { + var _a, _b; + return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a); + }).join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + isWarning = false; +} +function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} + +const ErrorTypeStrings = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush", + [15]: "component update", + [16]: "app unmount cleanup function" +}; +function callWithErrorHandling(fn, instance, type, args) { + try { + return args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = !!(process.env.NODE_ENV !== "production") ? ErrorTypeStrings[type] : `https://vuejs.org/error-reference/#runtime-${type}`; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + if (errorHandler) { + callWithErrorHandling(errorHandler, null, 10, [ + err, + exposedInstance, + errorInfo + ]); + return; + } + } + logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction); +} +function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) { + if (!!(process.env.NODE_ENV !== "production")) { + const info = ErrorTypeStrings[type]; + if (contextVNode) { + pushWarningContext$1(contextVNode); + } + warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext$1(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } else if (throwInProd) { + throw err; + } else { + console.error(err); + } +} + +let devtools; +let buffer = []; +function setDevtoolsHook(hook, target) { + var _a, _b; + devtools = hook; + if (devtools) { + devtools.enabled = true; + buffer.forEach(({ event, args }) => devtools.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + // eslint-disable-next-line no-restricted-syntax + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook(newHook, target); + }); + setTimeout(() => { + if (!devtools) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + buffer = []; + } + }, 3e3); + } else { + buffer = []; + } +} + +{ + const g = getGlobalThis(); + const registerGlobalSetter = (key, setter) => { + let setters; + if (!(setters = g[key])) setters = g[key] = []; + setters.push(setter); + return (v) => { + if (setters.length > 1) setters.forEach((set) => set(v)); + else setters[0](v); + }; + }; + registerGlobalSetter( + `__VUE_INSTANCE_SETTERS__`, + (v) => v + ); + registerGlobalSetter( + `__VUE_SSR_SETTERS__`, + (v) => v + ); +} +!!(process.env.NODE_ENV !== "production") ? { + } : { + }; +const classifyRE = /(?:^|[-_])(\w)/g; +const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, ""); +function getComponentName(Component, includeInferred = true) { + return isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; +} +function formatComponentName(instance, Component, isRoot = false) { + let name = getComponentName(Component); + if (!name && Component.__file) { + const match = Component.__file.match(/([^/\\]+)\.\w+$/); + if (match) { + name = match[1]; + } + } + if (!name && instance && instance.parent) { + const inferFromRegistry = (registry) => { + for (const key in registry) { + if (registry[key] === Component) { + return key; + } + } + }; + name = inferFromRegistry( + instance.components || instance.parent.type.components + ) || inferFromRegistry(instance.appContext.components); + } + return name ? classify(name) : isRoot ? `App` : `Anonymous`; +} +function isClassComponent(value) { + return isFunction(value) && "__vccOpts" in value; +} + +const warn = !!(process.env.NODE_ENV !== "production") ? warn$1 : NOOP; +!!(process.env.NODE_ENV !== "production") || true ? devtools : void 0; +!!(process.env.NODE_ENV !== "production") || true ? setDevtoolsHook : NOOP; + +function ssrRenderList(source, renderItem) { + if (isArray(source) || isString(source)) { + for (let i = 0, l = source.length; i < l; i++) { + renderItem(source[i], i); + } + } else if (typeof source === "number") { + if (!!(process.env.NODE_ENV !== "production") && !Number.isInteger(source)) { + warn(`The v-for range expect an integer value but got ${source}.`); + return; + } + for (let i = 0; i < source; i++) { + renderItem(i + 1, i); + } + } else if (isObject(source)) { + if (source[Symbol.iterator]) { + const arr = Array.from(source); + for (let i = 0, l = arr.length; i < l; i++) { + renderItem(arr[i], i); + } + } else { + const keys = Object.keys(source); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + renderItem(source[key], key, i); + } + } + } +} + +async function ssrRenderSuspense(push, { default: renderContent }) { + if (renderContent) { + renderContent(); + } else { + push(`<!---->`); + } +} + +function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) { + if (typeof dir !== "function" && dir.getSSRProps) { + return dir.getSSRProps( + { + dir, + instance: ssrUtils.getComponentPublicInstance(instance.$), + value, + oldValue: void 0, + arg, + modifiers + }, + null + ) || {}; + } + return {}; +} + +const ssrLooseEqual = looseEqual; +function ssrLooseContain(arr, value) { + return looseIndexOf(arr, value) > -1; +} +function ssrRenderDynamicModel(type, model, value) { + switch (type) { + case "radio": + return looseEqual(model, value) ? " checked" : ""; + case "checkbox": + return (isArray(model) ? ssrLooseContain(model, value) : model) ? " checked" : ""; + default: + return ssrRenderAttr("value", model); + } +} +function ssrGetDynamicModelProps(existingProps = {}, model) { + const { type, value } = existingProps; + switch (type) { + case "radio": + return looseEqual(model, value) ? { checked: true } : null; + case "checkbox": + return (isArray(model) ? ssrLooseContain(model, value) : model) ? { checked: true } : null; + default: + return { value: model }; + } +} + +function ssrCompile(template, instance) { + { + throw new Error( + `On-the-fly template compilation is not supported in the ESM build of @vue/server-renderer. All templates must be pre-compiled into render functions.` + ); + } +} + +const { + createComponentInstance, + setCurrentRenderingInstance, + setupComponent, + renderComponentRoot, + normalizeVNode, + pushWarningContext, + popWarningContext +} = ssrUtils; +function createBuffer() { + let appendable = false; + const buffer = []; + return { + getBuffer() { + return buffer; + }, + push(item) { + const isStringItem = isString(item); + if (appendable && isStringItem) { + buffer[buffer.length - 1] += item; + return; + } + buffer.push(item); + appendable = isStringItem; + if (isPromise(item) || isArray(item) && item.hasAsync) { + buffer.hasAsync = true; + } + } + }; +} +function renderComponentVNode(vnode, parentComponent = null, slotScopeId) { + const instance = vnode.component = createComponentInstance( + vnode, + parentComponent, + null + ); + if (!!(process.env.NODE_ENV !== "production")) pushWarningContext(vnode); + const res = setupComponent( + instance, + true + /* isSSR */ + ); + if (!!(process.env.NODE_ENV !== "production")) popWarningContext(); + const hasAsyncSetup = isPromise(res); + let prefetches = instance.sp; + if (hasAsyncSetup || prefetches) { + const p = Promise.resolve(res).then(() => { + if (hasAsyncSetup) prefetches = instance.sp; + if (prefetches) { + return Promise.all( + prefetches.map((prefetch) => prefetch.call(instance.proxy)) + ); + } + }).catch(NOOP); + return p.then(() => renderComponentSubTree(instance, slotScopeId)); + } else { + return renderComponentSubTree(instance, slotScopeId); + } +} +function renderComponentSubTree(instance, slotScopeId) { + if (!!(process.env.NODE_ENV !== "production")) pushWarningContext(instance.vnode); + const comp = instance.type; + const { getBuffer, push } = createBuffer(); + if (isFunction(comp)) { + let root = renderComponentRoot(instance); + if (!comp.props) { + for (const key in instance.attrs) { + if (key.startsWith(`data-v-`)) { + (root.props || (root.props = {}))[key] = ``; + } + } + } + renderVNode(push, instance.subTree = root, instance, slotScopeId); + } else { + if ((!instance.render || instance.render === NOOP) && !instance.ssrRender && !comp.ssrRender && isString(comp.template)) { + comp.ssrRender = ssrCompile(comp.template); + } + const ssrRender = instance.ssrRender || comp.ssrRender; + if (ssrRender) { + let attrs = instance.inheritAttrs !== false ? instance.attrs : void 0; + let hasCloned = false; + let cur = instance; + while (true) { + const scopeId = cur.vnode.scopeId; + if (scopeId) { + if (!hasCloned) { + attrs = { ...attrs }; + hasCloned = true; + } + attrs[scopeId] = ""; + } + const parent = cur.parent; + if (parent && parent.subTree && parent.subTree === cur.vnode) { + cur = parent; + } else { + break; + } + } + if (slotScopeId) { + if (!hasCloned) attrs = { ...attrs }; + const slotScopeIdList = slotScopeId.trim().split(" "); + for (let i = 0; i < slotScopeIdList.length; i++) { + attrs[slotScopeIdList[i]] = ""; + } + } + const prev = setCurrentRenderingInstance(instance); + try { + ssrRender( + instance.proxy, + push, + instance, + attrs, + // compiler-optimized bindings + instance.props, + instance.setupState, + instance.data, + instance.ctx + ); + } finally { + setCurrentRenderingInstance(prev); + } + } else if (instance.render && instance.render !== NOOP) { + renderVNode( + push, + instance.subTree = renderComponentRoot(instance), + instance, + slotScopeId + ); + } else { + const componentName = comp.name || comp.__file || `<Anonymous>`; + warn$2(`Component ${componentName} is missing template or render function.`); + push(`<!---->`); + } + } + if (!!(process.env.NODE_ENV !== "production")) popWarningContext(); + return getBuffer(); +} +function renderVNode(push, vnode, parentComponent, slotScopeId) { + const { type, shapeFlag, children, dirs, props } = vnode; + if (dirs) { + vnode.props = applySSRDirectives(vnode, props, dirs); + } + switch (type) { + case Text: + push(escapeHtml(children)); + break; + case Comment: + push( + children ? `<!--${escapeHtmlComment(children)}-->` : `<!---->` + ); + break; + case Static: + push(children); + break; + case Fragment: + if (vnode.slotScopeIds) { + slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" "); + } + push(`<!--[-->`); + renderVNodeChildren( + push, + children, + parentComponent, + slotScopeId + ); + push(`<!--]-->`); + break; + default: + if (shapeFlag & 1) { + renderElementVNode(push, vnode, parentComponent, slotScopeId); + } else if (shapeFlag & 6) { + push(renderComponentVNode(vnode, parentComponent, slotScopeId)); + } else if (shapeFlag & 64) { + renderTeleportVNode(push, vnode, parentComponent, slotScopeId); + } else if (shapeFlag & 128) { + renderVNode(push, vnode.ssContent, parentComponent, slotScopeId); + } else { + warn$2( + "[@vue/server-renderer] Invalid VNode type:", + type, + `(${typeof type})` + ); + } + } +} +function renderVNodeChildren(push, children, parentComponent, slotScopeId) { + for (let i = 0; i < children.length; i++) { + renderVNode(push, normalizeVNode(children[i]), parentComponent, slotScopeId); + } +} +function renderElementVNode(push, vnode, parentComponent, slotScopeId) { + const tag = vnode.type; + let { props, children, shapeFlag, scopeId } = vnode; + let openTag = `<${tag}`; + if (props) { + openTag += ssrRenderAttrs(props, tag); + } + if (scopeId) { + openTag += ` ${scopeId}`; + } + let curParent = parentComponent; + let curVnode = vnode; + while (curParent && curVnode === curParent.subTree) { + curVnode = curParent.vnode; + if (curVnode.scopeId) { + openTag += ` ${curVnode.scopeId}`; + } + curParent = curParent.parent; + } + if (slotScopeId) { + openTag += ` ${slotScopeId}`; + } + push(openTag + `>`); + if (!isVoidTag(tag)) { + let hasChildrenOverride = false; + if (props) { + if (props.innerHTML) { + hasChildrenOverride = true; + push(props.innerHTML); + } else if (props.textContent) { + hasChildrenOverride = true; + push(escapeHtml(props.textContent)); + } else if (tag === "textarea" && props.value) { + hasChildrenOverride = true; + push(escapeHtml(props.value)); + } + } + if (!hasChildrenOverride) { + if (shapeFlag & 8) { + push(escapeHtml(children)); + } else if (shapeFlag & 16) { + renderVNodeChildren( + push, + children, + parentComponent, + slotScopeId + ); + } + } + push(`</${tag}>`); + } +} +function applySSRDirectives(vnode, rawProps, dirs) { + const toMerge = []; + for (let i = 0; i < dirs.length; i++) { + const binding = dirs[i]; + const { + dir: { getSSRProps } + } = binding; + if (getSSRProps) { + const props = getSSRProps(binding, vnode); + if (props) toMerge.push(props); + } + } + return mergeProps(rawProps || {}, ...toMerge); +} +function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) { + const target = vnode.props && vnode.props.to; + const disabled = vnode.props && vnode.props.disabled; + if (!target) { + if (!disabled) { + warn$2(`[@vue/server-renderer] Teleport is missing target prop.`); + } + return []; + } + if (!isString(target)) { + warn$2( + `[@vue/server-renderer] Teleport target must be a query selector string.` + ); + return []; + } + ssrRenderTeleport( + push, + (push2) => { + renderVNodeChildren( + push2, + vnode.children, + parentComponent, + slotScopeId + ); + }, + target, + disabled || disabled === "", + parentComponent + ); +} + +const { isVNode: isVNode$1 } = ssrUtils; +function nestedUnrollBuffer(buffer, parentRet, startIndex) { + if (!buffer.hasAsync) { + return parentRet + unrollBufferSync$1(buffer); + } + let ret = parentRet; + for (let i = startIndex; i < buffer.length; i += 1) { + const item = buffer[i]; + if (isString(item)) { + ret += item; + continue; + } + if (isPromise(item)) { + return item.then((nestedItem) => { + buffer[i] = nestedItem; + return nestedUnrollBuffer(buffer, ret, i); + }); + } + const result = nestedUnrollBuffer(item, ret, 0); + if (isPromise(result)) { + return result.then((nestedItem) => { + buffer[i] = nestedItem; + return nestedUnrollBuffer(buffer, "", i); + }); + } + ret = result; + } + return ret; +} +function unrollBuffer$1(buffer) { + return nestedUnrollBuffer(buffer, "", 0); +} +function unrollBufferSync$1(buffer) { + let ret = ""; + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (isString(item)) { + ret += item; + } else { + ret += unrollBufferSync$1(item); + } + } + return ret; +} +async function renderToString(input, context = {}) { + if (isVNode$1(input)) { + return renderToString(createApp({ render: () => input }), context); + } + const vnode = createVNode(input._component, input._props); + vnode.appContext = input._context; + input.provide(ssrContextKey, context); + const buffer = await renderComponentVNode(vnode); + const result = await unrollBuffer$1(buffer); + await resolveTeleports(context); + if (context.__watcherHandles) { + for (const unwatch of context.__watcherHandles) { + unwatch(); + } + } + return result; +} +async function resolveTeleports(context) { + if (context.__teleportBuffers) { + context.teleports = context.teleports || {}; + for (const key in context.__teleportBuffers) { + context.teleports[key] = await unrollBuffer$1( + await Promise.all([context.__teleportBuffers[key]]) + ); + } + } +} + +const { isVNode } = ssrUtils; +async function unrollBuffer(buffer, stream) { + if (buffer.hasAsync) { + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (isPromise(item)) { + item = await item; + } + if (isString(item)) { + stream.push(item); + } else { + await unrollBuffer(item, stream); + } + } + } else { + unrollBufferSync(buffer, stream); + } +} +function unrollBufferSync(buffer, stream) { + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (isString(item)) { + stream.push(item); + } else { + unrollBufferSync(item, stream); + } + } +} +function renderToSimpleStream(input, context, stream) { + if (isVNode(input)) { + return renderToSimpleStream( + createApp({ render: () => input }), + context, + stream + ); + } + const vnode = createVNode(input._component, input._props); + vnode.appContext = input._context; + input.provide(ssrContextKey, context); + Promise.resolve(renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => { + if (context.__watcherHandles) { + for (const unwatch of context.__watcherHandles) { + unwatch(); + } + } + }).then(() => stream.push(null)).catch((error) => { + stream.destroy(error); + }); + return stream; +} +function renderToStream(input, context = {}) { + console.warn( + `[@vue/server-renderer] renderToStream is deprecated - use renderToNodeStream instead.` + ); + return renderToNodeStream(input, context); +} +function renderToNodeStream(input, context = {}) { + { + throw new Error( + `ESM build of renderToStream() does not support renderToNodeStream(). Use pipeToNodeWritable() with an existing Node.js Writable stream instance instead.` + ); + } +} +function pipeToNodeWritable(input, context = {}, writable) { + renderToSimpleStream(input, context, { + push(content) { + if (content != null) { + writable.write(content); + } else { + writable.end(); + } + }, + destroy(err) { + writable.destroy(err); + } + }); +} +function renderToWebStream(input, context = {}) { + if (typeof ReadableStream !== "function") { + throw new Error( + `ReadableStream constructor is not available in the global scope. If the target environment does support web streams, consider using pipeToWebWritable() with an existing WritableStream instance instead.` + ); + } + const encoder = new TextEncoder(); + let cancelled = false; + return new ReadableStream({ + start(controller) { + renderToSimpleStream(input, context, { + push(content) { + if (cancelled) return; + if (content != null) { + controller.enqueue(encoder.encode(content)); + } else { + controller.close(); + } + }, + destroy(err) { + controller.error(err); + } + }); + }, + cancel() { + cancelled = true; + } + }); +} +function pipeToWebWritable(input, context = {}, writable) { + const writer = writable.getWriter(); + const encoder = new TextEncoder(); + let hasReady = false; + try { + hasReady = isPromise(writer.ready); + } catch (e) { + } + renderToSimpleStream(input, context, { + async push(content) { + if (hasReady) { + await writer.ready; + } + if (content != null) { + return writer.write(encoder.encode(content)); + } else { + return writer.close(); + } + }, + destroy(err) { + console.log(err); + writer.close(); + } + }); +} + +initDirectivesForSSR(); + +export { pipeToNodeWritable, pipeToWebWritable, renderToNodeStream, renderToSimpleStream, renderToStream, renderToString, renderToWebStream, ssrGetDirectiveProps, ssrGetDynamicModelProps, ssrInterpolate, ssrLooseContain, ssrLooseEqual, ssrRenderAttr, ssrRenderAttrs, ssrRenderClass, ssrRenderComponent, ssrRenderDynamicAttr, ssrRenderDynamicModel, ssrRenderList, ssrRenderSlot, ssrRenderSlotInner, ssrRenderStyle, ssrRenderSuspense, ssrRenderTeleport, renderVNode as ssrRenderVNode }; diff --git a/node_modules/@vue/server-renderer/index.js b/node_modules/@vue/server-renderer/index.js new file mode 100644 index 0000000..f5a3d90 --- /dev/null +++ b/node_modules/@vue/server-renderer/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/server-renderer.cjs.prod.js') +} else { + module.exports = require('./dist/server-renderer.cjs.js') +} diff --git a/node_modules/@vue/server-renderer/package.json b/node_modules/@vue/server-renderer/package.json new file mode 100644 index 0000000..8af30d2 --- /dev/null +++ b/node_modules/@vue/server-renderer/package.json @@ -0,0 +1,55 @@ +{ + "name": "@vue/server-renderer", + "version": "3.5.18", + "description": "@vue/server-renderer", + "main": "index.js", + "module": "dist/server-renderer.esm-bundler.js", + "types": "dist/server-renderer.d.ts", + "files": [ + "index.js", + "dist" + ], + "exports": { + ".": { + "types": "./dist/server-renderer.d.ts", + "node": { + "production": "./dist/server-renderer.cjs.prod.js", + "development": "./dist/server-renderer.cjs.js", + "default": "./index.js" + }, + "module": "./dist/server-renderer.esm-bundler.js", + "import": "./dist/server-renderer.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, + "buildOptions": { + "name": "VueServerRenderer", + "formats": [ + "esm-bundler", + "esm-browser", + "cjs" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/server-renderer" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/server-renderer#readme", + "peerDependencies": { + "vue": "3.5.18" + }, + "dependencies": { + "@vue/shared": "3.5.18", + "@vue/compiler-ssr": "3.5.18" + } +} \ No newline at end of file diff --git a/node_modules/@vue/shared/LICENSE b/node_modules/@vue/shared/LICENSE new file mode 100644 index 0000000..15f1f7e --- /dev/null +++ b/node_modules/@vue/shared/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018-present, Yuxi (Evan) You + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@vue/shared/README.md b/node_modules/@vue/shared/README.md new file mode 100644 index 0000000..1d01f2f --- /dev/null +++ b/node_modules/@vue/shared/README.md @@ -0,0 +1,3 @@ +# @vue/shared + +Internal utility functions and constants shared across `@vue` packages. diff --git a/node_modules/@vue/shared/dist/shared.cjs.js b/node_modules/@vue/shared/dist/shared.cjs.js new file mode 100644 index 0000000..e9cef51 --- /dev/null +++ b/node_modules/@vue/shared/dist/shared.cjs.js @@ -0,0 +1,613 @@ +/** +* @vue/shared v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function makeMap(str) { + const map = /* @__PURE__ */ Object.create(null); + for (const key of str.split(",")) map[key] = 1; + return (val) => val in map; +} + +const EMPTY_OBJ = Object.freeze({}) ; +const EMPTY_ARR = Object.freeze([]) ; +const NOOP = () => { +}; +const NO = () => false; +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +const isModelListener = (key) => key.startsWith("onUpdate:"); +const extend = Object.assign; +const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +const hasOwnProperty = Object.prototype.hasOwnProperty; +const hasOwn = (val, key) => hasOwnProperty.call(val, key); +const isArray = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isDate = (val) => toTypeString(val) === "[object Date]"; +const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +const isFunction = (val) => typeof val === "function"; +const isString = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject = (val) => val !== null && typeof val === "object"; +const isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +const objectToString = Object.prototype.toString; +const toTypeString = (value) => objectToString.call(value); +const toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +const isPlainObject = (val) => toTypeString(val) === "[object Object]"; +const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction( + (str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); + } +); +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction( + (str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; + } +); +const hasChanged = (value, oldValue) => !Object.is(value, oldValue); +const invokeArrayFns = (fns, ...arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](...arg); + } +}; +const def = (obj, key, value, writable = false) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + writable, + value + }); +}; +const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +const toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +let _globalThis; +const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; +const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/; +function genPropsAccessExp(name) { + return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`; +} +function genCacheKey(source, options) { + return source + JSON.stringify( + options, + (_, val) => typeof val === "function" ? val.toString() : val + ); +} + +const PatchFlags = { + "TEXT": 1, + "1": "TEXT", + "CLASS": 2, + "2": "CLASS", + "STYLE": 4, + "4": "STYLE", + "PROPS": 8, + "8": "PROPS", + "FULL_PROPS": 16, + "16": "FULL_PROPS", + "NEED_HYDRATION": 32, + "32": "NEED_HYDRATION", + "STABLE_FRAGMENT": 64, + "64": "STABLE_FRAGMENT", + "KEYED_FRAGMENT": 128, + "128": "KEYED_FRAGMENT", + "UNKEYED_FRAGMENT": 256, + "256": "UNKEYED_FRAGMENT", + "NEED_PATCH": 512, + "512": "NEED_PATCH", + "DYNAMIC_SLOTS": 1024, + "1024": "DYNAMIC_SLOTS", + "DEV_ROOT_FRAGMENT": 2048, + "2048": "DEV_ROOT_FRAGMENT", + "CACHED": -1, + "-1": "CACHED", + "BAIL": -2, + "-2": "BAIL" +}; +const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `NEED_HYDRATION`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `CACHED`, + [-2]: `BAIL` +}; + +const ShapeFlags = { + "ELEMENT": 1, + "1": "ELEMENT", + "FUNCTIONAL_COMPONENT": 2, + "2": "FUNCTIONAL_COMPONENT", + "STATEFUL_COMPONENT": 4, + "4": "STATEFUL_COMPONENT", + "TEXT_CHILDREN": 8, + "8": "TEXT_CHILDREN", + "ARRAY_CHILDREN": 16, + "16": "ARRAY_CHILDREN", + "SLOTS_CHILDREN": 32, + "32": "SLOTS_CHILDREN", + "TELEPORT": 64, + "64": "TELEPORT", + "SUSPENSE": 128, + "128": "SUSPENSE", + "COMPONENT_SHOULD_KEEP_ALIVE": 256, + "256": "COMPONENT_SHOULD_KEEP_ALIVE", + "COMPONENT_KEPT_ALIVE": 512, + "512": "COMPONENT_KEPT_ALIVE", + "COMPONENT": 6, + "6": "COMPONENT" +}; + +const SlotFlags = { + "STABLE": 1, + "1": "STABLE", + "DYNAMIC": 2, + "2": "DYNAMIC", + "FORWARDED": 3, + "3": "FORWARDED" +}; +const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" +}; + +const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol"; +const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); +const isGloballyWhitelisted = isGloballyAllowed; + +const range = 2; +function generateCodeFrame(source, start = 0, end = source.length) { + start = Math.max(0, Math.min(start, source.length)); + end = Math.max(0, Math.min(end, source.length)); + if (start > end) return ""; + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); +} + +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } +} +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function stringifyStyle(styles) { + if (!styles) return ""; + if (isString(styles)) return styles; + let ret = ""; + for (const key in styles) { + const value = styles[key]; + if (isString(value) || typeof value === "number") { + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + ret += `${normalizedKey}:${value};`; + } + } + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} +function normalizeProps(props) { + if (!props) return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} + +const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; +const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); +const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); +const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); +const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + +const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); +const isBooleanAttr = /* @__PURE__ */ makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/; +const attrValidationCache = {}; +function isSSRSafeAttrName(name) { + if (attrValidationCache.hasOwnProperty(name)) { + return attrValidationCache[name]; + } + const isUnsafe = unsafeAttrCharRE.test(name); + if (isUnsafe) { + console.error(`unsafe attribute name: ${name}`); + } + return attrValidationCache[name] = !isUnsafe; +} +const propsToAttrMap = { + acceptCharset: "accept-charset", + className: "class", + htmlFor: "for", + httpEquiv: "http-equiv" +}; +const isKnownHtmlAttr = /* @__PURE__ */ makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +const isKnownSvgAttr = /* @__PURE__ */ makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); +const isKnownMathMLAttr = /* @__PURE__ */ makeMap( + `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns` +); +function isRenderableAttrValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; +} + +const escapeRE = /["'&<>]/; +function escapeHtml(string) { + const str = "" + string; + const match = escapeRE.exec(str); + if (!match) { + return str; + } + let html = ""; + let escaped; + let index; + let lastIndex = 0; + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + escaped = """; + break; + case 38: + escaped = "&"; + break; + case 39: + escaped = "'"; + break; + case 60: + escaped = "<"; + break; + case 62: + escaped = ">"; + break; + default: + continue; + } + if (lastIndex !== index) { + html += str.slice(lastIndex, index); + } + lastIndex = index + 1; + html += escaped; + } + return lastIndex !== index ? html + str.slice(lastIndex, index) : html; +} +const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g; +function escapeHtmlComment(src) { + return src.replace(commentStripRE, ""); +} +const cssVarNameEscapeSymbolsRE = /[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g; +function getEscapedCssVarName(key, doubleEscape) { + return key.replace( + cssVarNameEscapeSymbolsRE, + (s) => doubleEscape ? s === '"' ? '\\\\\\"' : `\\\\${s}` : `\\${s}` + ); +} + +function looseCompareArrays(a, b) { + if (a.length !== b.length) return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; +} +function looseEqual(a, b) { + if (a === b) return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} + +const isRef = (val) => { + return !!(val && val["__v_isRef"] === true); +}; +const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val); +}; +const replacer = (_key, val) => { + if (isRef(val)) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce( + (entries, [key, val2], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) + }; + } else if (isSymbol(val)) { + return stringifySymbol(val); + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; +const stringifySymbol = (v, i = "") => { + var _a; + return ( + // Symbol.description in es2019+ so we need to cast here to pass + // the lib: es2016 check + isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v + ); +}; + +function normalizeCssVarValue(value) { + if (value == null) { + return "initial"; + } + if (typeof value === "string") { + return value === "" ? " " : value; + } + if (typeof value !== "number" || !Number.isFinite(value)) { + { + console.warn( + "[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:", + value + ); + } + } + return String(value); +} + +exports.EMPTY_ARR = EMPTY_ARR; +exports.EMPTY_OBJ = EMPTY_OBJ; +exports.NO = NO; +exports.NOOP = NOOP; +exports.PatchFlagNames = PatchFlagNames; +exports.PatchFlags = PatchFlags; +exports.ShapeFlags = ShapeFlags; +exports.SlotFlags = SlotFlags; +exports.camelize = camelize; +exports.capitalize = capitalize; +exports.cssVarNameEscapeSymbolsRE = cssVarNameEscapeSymbolsRE; +exports.def = def; +exports.escapeHtml = escapeHtml; +exports.escapeHtmlComment = escapeHtmlComment; +exports.extend = extend; +exports.genCacheKey = genCacheKey; +exports.genPropsAccessExp = genPropsAccessExp; +exports.generateCodeFrame = generateCodeFrame; +exports.getEscapedCssVarName = getEscapedCssVarName; +exports.getGlobalThis = getGlobalThis; +exports.hasChanged = hasChanged; +exports.hasOwn = hasOwn; +exports.hyphenate = hyphenate; +exports.includeBooleanAttr = includeBooleanAttr; +exports.invokeArrayFns = invokeArrayFns; +exports.isArray = isArray; +exports.isBooleanAttr = isBooleanAttr; +exports.isBuiltInDirective = isBuiltInDirective; +exports.isDate = isDate; +exports.isFunction = isFunction; +exports.isGloballyAllowed = isGloballyAllowed; +exports.isGloballyWhitelisted = isGloballyWhitelisted; +exports.isHTMLTag = isHTMLTag; +exports.isIntegerKey = isIntegerKey; +exports.isKnownHtmlAttr = isKnownHtmlAttr; +exports.isKnownMathMLAttr = isKnownMathMLAttr; +exports.isKnownSvgAttr = isKnownSvgAttr; +exports.isMap = isMap; +exports.isMathMLTag = isMathMLTag; +exports.isModelListener = isModelListener; +exports.isObject = isObject; +exports.isOn = isOn; +exports.isPlainObject = isPlainObject; +exports.isPromise = isPromise; +exports.isRegExp = isRegExp; +exports.isRenderableAttrValue = isRenderableAttrValue; +exports.isReservedProp = isReservedProp; +exports.isSSRSafeAttrName = isSSRSafeAttrName; +exports.isSVGTag = isSVGTag; +exports.isSet = isSet; +exports.isSpecialBooleanAttr = isSpecialBooleanAttr; +exports.isString = isString; +exports.isSymbol = isSymbol; +exports.isVoidTag = isVoidTag; +exports.looseEqual = looseEqual; +exports.looseIndexOf = looseIndexOf; +exports.looseToNumber = looseToNumber; +exports.makeMap = makeMap; +exports.normalizeClass = normalizeClass; +exports.normalizeCssVarValue = normalizeCssVarValue; +exports.normalizeProps = normalizeProps; +exports.normalizeStyle = normalizeStyle; +exports.objectToString = objectToString; +exports.parseStringStyle = parseStringStyle; +exports.propsToAttrMap = propsToAttrMap; +exports.remove = remove; +exports.slotFlagsText = slotFlagsText; +exports.stringifyStyle = stringifyStyle; +exports.toDisplayString = toDisplayString; +exports.toHandlerKey = toHandlerKey; +exports.toNumber = toNumber; +exports.toRawType = toRawType; +exports.toTypeString = toTypeString; diff --git a/node_modules/@vue/shared/dist/shared.cjs.prod.js b/node_modules/@vue/shared/dist/shared.cjs.prod.js new file mode 100644 index 0000000..2db5858 --- /dev/null +++ b/node_modules/@vue/shared/dist/shared.cjs.prod.js @@ -0,0 +1,605 @@ +/** +* @vue/shared v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function makeMap(str) { + const map = /* @__PURE__ */ Object.create(null); + for (const key of str.split(",")) map[key] = 1; + return (val) => val in map; +} + +const EMPTY_OBJ = {}; +const EMPTY_ARR = []; +const NOOP = () => { +}; +const NO = () => false; +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +const isModelListener = (key) => key.startsWith("onUpdate:"); +const extend = Object.assign; +const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +const hasOwnProperty = Object.prototype.hasOwnProperty; +const hasOwn = (val, key) => hasOwnProperty.call(val, key); +const isArray = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isDate = (val) => toTypeString(val) === "[object Date]"; +const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +const isFunction = (val) => typeof val === "function"; +const isString = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject = (val) => val !== null && typeof val === "object"; +const isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +const objectToString = Object.prototype.toString; +const toTypeString = (value) => objectToString.call(value); +const toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +const isPlainObject = (val) => toTypeString(val) === "[object Object]"; +const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction( + (str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); + } +); +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction( + (str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; + } +); +const hasChanged = (value, oldValue) => !Object.is(value, oldValue); +const invokeArrayFns = (fns, ...arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](...arg); + } +}; +const def = (obj, key, value, writable = false) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + writable, + value + }); +}; +const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +const toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +let _globalThis; +const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; +const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/; +function genPropsAccessExp(name) { + return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`; +} +function genCacheKey(source, options) { + return source + JSON.stringify( + options, + (_, val) => typeof val === "function" ? val.toString() : val + ); +} + +const PatchFlags = { + "TEXT": 1, + "1": "TEXT", + "CLASS": 2, + "2": "CLASS", + "STYLE": 4, + "4": "STYLE", + "PROPS": 8, + "8": "PROPS", + "FULL_PROPS": 16, + "16": "FULL_PROPS", + "NEED_HYDRATION": 32, + "32": "NEED_HYDRATION", + "STABLE_FRAGMENT": 64, + "64": "STABLE_FRAGMENT", + "KEYED_FRAGMENT": 128, + "128": "KEYED_FRAGMENT", + "UNKEYED_FRAGMENT": 256, + "256": "UNKEYED_FRAGMENT", + "NEED_PATCH": 512, + "512": "NEED_PATCH", + "DYNAMIC_SLOTS": 1024, + "1024": "DYNAMIC_SLOTS", + "DEV_ROOT_FRAGMENT": 2048, + "2048": "DEV_ROOT_FRAGMENT", + "CACHED": -1, + "-1": "CACHED", + "BAIL": -2, + "-2": "BAIL" +}; +const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `NEED_HYDRATION`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `CACHED`, + [-2]: `BAIL` +}; + +const ShapeFlags = { + "ELEMENT": 1, + "1": "ELEMENT", + "FUNCTIONAL_COMPONENT": 2, + "2": "FUNCTIONAL_COMPONENT", + "STATEFUL_COMPONENT": 4, + "4": "STATEFUL_COMPONENT", + "TEXT_CHILDREN": 8, + "8": "TEXT_CHILDREN", + "ARRAY_CHILDREN": 16, + "16": "ARRAY_CHILDREN", + "SLOTS_CHILDREN": 32, + "32": "SLOTS_CHILDREN", + "TELEPORT": 64, + "64": "TELEPORT", + "SUSPENSE": 128, + "128": "SUSPENSE", + "COMPONENT_SHOULD_KEEP_ALIVE": 256, + "256": "COMPONENT_SHOULD_KEEP_ALIVE", + "COMPONENT_KEPT_ALIVE": 512, + "512": "COMPONENT_KEPT_ALIVE", + "COMPONENT": 6, + "6": "COMPONENT" +}; + +const SlotFlags = { + "STABLE": 1, + "1": "STABLE", + "DYNAMIC": 2, + "2": "DYNAMIC", + "FORWARDED": 3, + "3": "FORWARDED" +}; +const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" +}; + +const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol"; +const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); +const isGloballyWhitelisted = isGloballyAllowed; + +const range = 2; +function generateCodeFrame(source, start = 0, end = source.length) { + start = Math.max(0, Math.min(start, source.length)); + end = Math.max(0, Math.min(end, source.length)); + if (start > end) return ""; + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); +} + +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } +} +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function stringifyStyle(styles) { + if (!styles) return ""; + if (isString(styles)) return styles; + let ret = ""; + for (const key in styles) { + const value = styles[key]; + if (isString(value) || typeof value === "number") { + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + ret += `${normalizedKey}:${value};`; + } + } + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} +function normalizeProps(props) { + if (!props) return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} + +const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; +const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); +const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); +const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); +const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + +const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); +const isBooleanAttr = /* @__PURE__ */ makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/; +const attrValidationCache = {}; +function isSSRSafeAttrName(name) { + if (attrValidationCache.hasOwnProperty(name)) { + return attrValidationCache[name]; + } + const isUnsafe = unsafeAttrCharRE.test(name); + if (isUnsafe) { + console.error(`unsafe attribute name: ${name}`); + } + return attrValidationCache[name] = !isUnsafe; +} +const propsToAttrMap = { + acceptCharset: "accept-charset", + className: "class", + htmlFor: "for", + httpEquiv: "http-equiv" +}; +const isKnownHtmlAttr = /* @__PURE__ */ makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +const isKnownSvgAttr = /* @__PURE__ */ makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); +const isKnownMathMLAttr = /* @__PURE__ */ makeMap( + `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns` +); +function isRenderableAttrValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; +} + +const escapeRE = /["'&<>]/; +function escapeHtml(string) { + const str = "" + string; + const match = escapeRE.exec(str); + if (!match) { + return str; + } + let html = ""; + let escaped; + let index; + let lastIndex = 0; + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + escaped = """; + break; + case 38: + escaped = "&"; + break; + case 39: + escaped = "'"; + break; + case 60: + escaped = "<"; + break; + case 62: + escaped = ">"; + break; + default: + continue; + } + if (lastIndex !== index) { + html += str.slice(lastIndex, index); + } + lastIndex = index + 1; + html += escaped; + } + return lastIndex !== index ? html + str.slice(lastIndex, index) : html; +} +const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g; +function escapeHtmlComment(src) { + return src.replace(commentStripRE, ""); +} +const cssVarNameEscapeSymbolsRE = /[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g; +function getEscapedCssVarName(key, doubleEscape) { + return key.replace( + cssVarNameEscapeSymbolsRE, + (s) => doubleEscape ? s === '"' ? '\\\\\\"' : `\\\\${s}` : `\\${s}` + ); +} + +function looseCompareArrays(a, b) { + if (a.length !== b.length) return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; +} +function looseEqual(a, b) { + if (a === b) return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} + +const isRef = (val) => { + return !!(val && val["__v_isRef"] === true); +}; +const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val); +}; +const replacer = (_key, val) => { + if (isRef(val)) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce( + (entries, [key, val2], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) + }; + } else if (isSymbol(val)) { + return stringifySymbol(val); + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; +const stringifySymbol = (v, i = "") => { + var _a; + return ( + // Symbol.description in es2019+ so we need to cast here to pass + // the lib: es2016 check + isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v + ); +}; + +function normalizeCssVarValue(value) { + if (value == null) { + return "initial"; + } + if (typeof value === "string") { + return value === "" ? " " : value; + } + return String(value); +} + +exports.EMPTY_ARR = EMPTY_ARR; +exports.EMPTY_OBJ = EMPTY_OBJ; +exports.NO = NO; +exports.NOOP = NOOP; +exports.PatchFlagNames = PatchFlagNames; +exports.PatchFlags = PatchFlags; +exports.ShapeFlags = ShapeFlags; +exports.SlotFlags = SlotFlags; +exports.camelize = camelize; +exports.capitalize = capitalize; +exports.cssVarNameEscapeSymbolsRE = cssVarNameEscapeSymbolsRE; +exports.def = def; +exports.escapeHtml = escapeHtml; +exports.escapeHtmlComment = escapeHtmlComment; +exports.extend = extend; +exports.genCacheKey = genCacheKey; +exports.genPropsAccessExp = genPropsAccessExp; +exports.generateCodeFrame = generateCodeFrame; +exports.getEscapedCssVarName = getEscapedCssVarName; +exports.getGlobalThis = getGlobalThis; +exports.hasChanged = hasChanged; +exports.hasOwn = hasOwn; +exports.hyphenate = hyphenate; +exports.includeBooleanAttr = includeBooleanAttr; +exports.invokeArrayFns = invokeArrayFns; +exports.isArray = isArray; +exports.isBooleanAttr = isBooleanAttr; +exports.isBuiltInDirective = isBuiltInDirective; +exports.isDate = isDate; +exports.isFunction = isFunction; +exports.isGloballyAllowed = isGloballyAllowed; +exports.isGloballyWhitelisted = isGloballyWhitelisted; +exports.isHTMLTag = isHTMLTag; +exports.isIntegerKey = isIntegerKey; +exports.isKnownHtmlAttr = isKnownHtmlAttr; +exports.isKnownMathMLAttr = isKnownMathMLAttr; +exports.isKnownSvgAttr = isKnownSvgAttr; +exports.isMap = isMap; +exports.isMathMLTag = isMathMLTag; +exports.isModelListener = isModelListener; +exports.isObject = isObject; +exports.isOn = isOn; +exports.isPlainObject = isPlainObject; +exports.isPromise = isPromise; +exports.isRegExp = isRegExp; +exports.isRenderableAttrValue = isRenderableAttrValue; +exports.isReservedProp = isReservedProp; +exports.isSSRSafeAttrName = isSSRSafeAttrName; +exports.isSVGTag = isSVGTag; +exports.isSet = isSet; +exports.isSpecialBooleanAttr = isSpecialBooleanAttr; +exports.isString = isString; +exports.isSymbol = isSymbol; +exports.isVoidTag = isVoidTag; +exports.looseEqual = looseEqual; +exports.looseIndexOf = looseIndexOf; +exports.looseToNumber = looseToNumber; +exports.makeMap = makeMap; +exports.normalizeClass = normalizeClass; +exports.normalizeCssVarValue = normalizeCssVarValue; +exports.normalizeProps = normalizeProps; +exports.normalizeStyle = normalizeStyle; +exports.objectToString = objectToString; +exports.parseStringStyle = parseStringStyle; +exports.propsToAttrMap = propsToAttrMap; +exports.remove = remove; +exports.slotFlagsText = slotFlagsText; +exports.stringifyStyle = stringifyStyle; +exports.toDisplayString = toDisplayString; +exports.toHandlerKey = toHandlerKey; +exports.toNumber = toNumber; +exports.toRawType = toRawType; +exports.toTypeString = toTypeString; diff --git a/node_modules/@vue/shared/dist/shared.d.ts b/node_modules/@vue/shared/dist/shared.d.ts new file mode 100644 index 0000000..e1cc6ec --- /dev/null +++ b/node_modules/@vue/shared/dist/shared.d.ts @@ -0,0 +1,335 @@ +/** + * Make a map and return a function for checking if a key + * is in that map. + * IMPORTANT: all calls of this function must be prefixed with + * \/\*#\_\_PURE\_\_\*\/ + * So that rollup can tree-shake them if necessary. + */ +/*! #__NO_SIDE_EFFECTS__ */ +export declare function makeMap(str: string): (key: string) => boolean; + +export declare const EMPTY_OBJ: { + readonly [key: string]: any; +}; +export declare const EMPTY_ARR: readonly never[]; +export declare const NOOP: () => void; +/** + * Always return false. + */ +export declare const NO: () => boolean; +export declare const isOn: (key: string) => boolean; +export declare const isModelListener: (key: string) => key is `onUpdate:${string}`; +export declare const extend: typeof Object.assign; +export declare const remove: <T>(arr: T[], el: T) => void; +export declare const hasOwn: (val: object, key: string | symbol) => key is keyof typeof val; +export declare const isArray: typeof Array.isArray; +export declare const isMap: (val: unknown) => val is Map<any, any>; +export declare const isSet: (val: unknown) => val is Set<any>; +export declare const isDate: (val: unknown) => val is Date; +export declare const isRegExp: (val: unknown) => val is RegExp; +export declare const isFunction: (val: unknown) => val is Function; +export declare const isString: (val: unknown) => val is string; +export declare const isSymbol: (val: unknown) => val is symbol; +export declare const isObject: (val: unknown) => val is Record<any, any>; +export declare const isPromise: <T = any>(val: unknown) => val is Promise<T>; +export declare const objectToString: typeof Object.prototype.toString; +export declare const toTypeString: (value: unknown) => string; +export declare const toRawType: (value: unknown) => string; +export declare const isPlainObject: (val: unknown) => val is object; +export declare const isIntegerKey: (key: unknown) => boolean; +export declare const isReservedProp: (key: string) => boolean; +export declare const isBuiltInDirective: (key: string) => boolean; +/** + * @private + */ +export declare const camelize: (str: string) => string; +/** + * @private + */ +export declare const hyphenate: (str: string) => string; +/** + * @private + */ +export declare const capitalize: <T extends string>(str: T) => Capitalize<T>; +/** + * @private + */ +export declare const toHandlerKey: <T extends string>(str: T) => T extends '' ? '' : `on${Capitalize<T>}`; +export declare const hasChanged: (value: any, oldValue: any) => boolean; +export declare const invokeArrayFns: (fns: Function[], ...arg: any[]) => void; +export declare const def: (obj: object, key: string | symbol, value: any, writable?: boolean) => void; +/** + * "123-foo" will be parsed to 123 + * This is used for the .number modifier in v-model + */ +export declare const looseToNumber: (val: any) => any; +/** + * Only concerns number-like strings + * "123-foo" will be returned as-is + */ +export declare const toNumber: (val: any) => any; +export declare const getGlobalThis: () => any; +export declare function genPropsAccessExp(name: string): string; +export declare function genCacheKey(source: string, options: any): string; + +/** + * Patch flags are optimization hints generated by the compiler. + * when a block with dynamicChildren is encountered during diff, the algorithm + * enters "optimized mode". In this mode, we know that the vdom is produced by + * a render function generated by the compiler, so the algorithm only needs to + * handle updates explicitly marked by these patch flags. + * + * Patch flags can be combined using the | bitwise operator and can be checked + * using the & operator, e.g. + * + * ```js + * const flag = TEXT | CLASS + * if (flag & TEXT) { ... } + * ``` + * + * Check the `patchElement` function in '../../runtime-core/src/renderer.ts' to see how the + * flags are handled during diff. + */ +export declare enum PatchFlags { + /** + * Indicates an element with dynamic textContent (children fast path) + */ + TEXT = 1, + /** + * Indicates an element with dynamic class binding. + */ + CLASS = 2, + /** + * Indicates an element with dynamic style + * The compiler pre-compiles static string styles into static objects + * + detects and hoists inline static objects + * e.g. `style="color: red"` and `:style="{ color: 'red' }"` both get hoisted + * as: + * ```js + * const style = { color: 'red' } + * render() { return e('div', { style }) } + * ``` + */ + STYLE = 4, + /** + * Indicates an element that has non-class/style dynamic props. + * Can also be on a component that has any dynamic props (includes + * class/style). when this flag is present, the vnode also has a dynamicProps + * array that contains the keys of the props that may change so the runtime + * can diff them faster (without having to worry about removed props) + */ + PROPS = 8, + /** + * Indicates an element with props with dynamic keys. When keys change, a full + * diff is always needed to remove the old key. This flag is mutually + * exclusive with CLASS, STYLE and PROPS. + */ + FULL_PROPS = 16, + /** + * Indicates an element that requires props hydration + * (but not necessarily patching) + * e.g. event listeners & v-bind with prop modifier + */ + NEED_HYDRATION = 32, + /** + * Indicates a fragment whose children order doesn't change. + */ + STABLE_FRAGMENT = 64, + /** + * Indicates a fragment with keyed or partially keyed children + */ + KEYED_FRAGMENT = 128, + /** + * Indicates a fragment with unkeyed children. + */ + UNKEYED_FRAGMENT = 256, + /** + * Indicates an element that only needs non-props patching, e.g. ref or + * directives (onVnodeXXX hooks). since every patched vnode checks for refs + * and onVnodeXXX hooks, it simply marks the vnode so that a parent block + * will track it. + */ + NEED_PATCH = 512, + /** + * Indicates a component with dynamic slots (e.g. slot that references a v-for + * iterated value, or dynamic slot names). + * Components with this flag are always force updated. + */ + DYNAMIC_SLOTS = 1024, + /** + * Indicates a fragment that was created only because the user has placed + * comments at the root level of a template. This is a dev-only flag since + * comments are stripped in production. + */ + DEV_ROOT_FRAGMENT = 2048, + /** + * SPECIAL FLAGS ------------------------------------------------------------- + * Special flags are negative integers. They are never matched against using + * bitwise operators (bitwise matching should only happen in branches where + * patchFlag > 0), and are mutually exclusive. When checking for a special + * flag, simply check patchFlag === FLAG. + */ + /** + * Indicates a cached static vnode. This is also a hint for hydration to skip + * the entire sub tree since static content never needs to be updated. + */ + CACHED = -1, + /** + * A special flag that indicates that the diffing algorithm should bail out + * of optimized mode. For example, on block fragments created by renderSlot() + * when encountering non-compiler generated slots (i.e. manually written + * render functions, which should always be fully diffed) + * OR manually cloneVNodes + */ + BAIL = -2 +} +/** + * dev only flag -> name mapping + */ +export declare const PatchFlagNames: Record<PatchFlags, string>; + +export declare enum ShapeFlags { + ELEMENT = 1, + FUNCTIONAL_COMPONENT = 2, + STATEFUL_COMPONENT = 4, + TEXT_CHILDREN = 8, + ARRAY_CHILDREN = 16, + SLOTS_CHILDREN = 32, + TELEPORT = 64, + SUSPENSE = 128, + COMPONENT_SHOULD_KEEP_ALIVE = 256, + COMPONENT_KEPT_ALIVE = 512, + COMPONENT = 6 +} + +export declare enum SlotFlags { + /** + * Stable slots that only reference slot props or context state. The slot + * can fully capture its own dependencies so when passed down the parent won't + * need to force the child to update. + */ + STABLE = 1, + /** + * Slots that reference scope variables (v-for or an outer slot prop), or + * has conditional structure (v-if, v-for). The parent will need to force + * the child to update because the slot does not fully capture its dependencies. + */ + DYNAMIC = 2, + /** + * `<slot/>` being forwarded into a child component. Whether the parent needs + * to update the child is dependent on what kind of slots the parent itself + * received. This has to be refined at runtime, when the child's vnode + * is being created (in `normalizeChildren`) + */ + FORWARDED = 3 +} +/** + * Dev only + */ +export declare const slotFlagsText: Record<SlotFlags, string>; + +export declare const isGloballyAllowed: (key: string) => boolean; +/** @deprecated use `isGloballyAllowed` instead */ +export declare const isGloballyWhitelisted: (key: string) => boolean; + +export declare function generateCodeFrame(source: string, start?: number, end?: number): string; + +export type NormalizedStyle = Record<string, string | number>; +export declare function normalizeStyle(value: unknown): NormalizedStyle | string | undefined; +export declare function parseStringStyle(cssText: string): NormalizedStyle; +export declare function stringifyStyle(styles: NormalizedStyle | string | undefined): string; +export declare function normalizeClass(value: unknown): string; +export declare function normalizeProps(props: Record<string, any> | null): Record<string, any> | null; + +/** + * Compiler only. + * Do NOT use in runtime code paths unless behind `__DEV__` flag. + */ +export declare const isHTMLTag: (key: string) => boolean; +/** + * Compiler only. + * Do NOT use in runtime code paths unless behind `__DEV__` flag. + */ +export declare const isSVGTag: (key: string) => boolean; +/** + * Compiler only. + * Do NOT use in runtime code paths unless behind `__DEV__` flag. + */ +export declare const isMathMLTag: (key: string) => boolean; +/** + * Compiler only. + * Do NOT use in runtime code paths unless behind `__DEV__` flag. + */ +export declare const isVoidTag: (key: string) => boolean; + +export declare const isSpecialBooleanAttr: (key: string) => boolean; +/** + * The full list is needed during SSR to produce the correct initial markup. + */ +export declare const isBooleanAttr: (key: string) => boolean; +/** + * Boolean attributes should be included if the value is truthy or ''. + * e.g. `<select multiple>` compiles to `{ multiple: '' }` + */ +export declare function includeBooleanAttr(value: unknown): boolean; +export declare function isSSRSafeAttrName(name: string): boolean; +export declare const propsToAttrMap: Record<string, string | undefined>; +/** + * Known attributes, this is used for stringification of runtime static nodes + * so that we don't stringify bindings that cannot be set from HTML. + * Don't also forget to allow `data-*` and `aria-*`! + * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes + */ +export declare const isKnownHtmlAttr: (key: string) => boolean; +/** + * Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute + */ +export declare const isKnownSvgAttr: (key: string) => boolean; +/** + * Generated from https://developer.mozilla.org/en-US/docs/Web/MathML/Attribute + */ +export declare const isKnownMathMLAttr: (key: string) => boolean; +/** + * Shared between server-renderer and runtime-core hydration logic + */ +export declare function isRenderableAttrValue(value: unknown): boolean; + +export declare function escapeHtml(string: unknown): string; +export declare function escapeHtmlComment(src: string): string; +export declare const cssVarNameEscapeSymbolsRE: RegExp; +export declare function getEscapedCssVarName(key: string, doubleEscape: boolean): string; + +export declare function looseEqual(a: any, b: any): boolean; +export declare function looseIndexOf(arr: any[], val: any): number; + +/** + * For converting {{ interpolation }} values to displayed strings. + * @private + */ +export declare const toDisplayString: (val: unknown) => string; + +export type Prettify<T> = { + [K in keyof T]: T[K]; +} & {}; +export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; +export type LooseRequired<T> = { + [P in keyof (T & Required<T>)]: T[P]; +}; +export type IfAny<T, Y, N> = 0 extends 1 & T ? Y : N; +export type IsKeyValues<T, K = string> = IfAny<T, false, T extends object ? (keyof T extends K ? true : false) : false>; +/** + * Utility for extracting the parameters from a function overload (for typed emits) + * https://github.com/microsoft/TypeScript/issues/32164#issuecomment-1146737709 + */ +export type OverloadParameters<T extends (...args: any[]) => any> = Parameters<OverloadUnion<T>>; +type OverloadProps<TOverload> = Pick<TOverload, keyof TOverload>; +type OverloadUnionRecursive<TOverload, TPartialOverload = unknown> = TOverload extends (...args: infer TArgs) => infer TReturn ? TPartialOverload extends TOverload ? never : OverloadUnionRecursive<TPartialOverload & TOverload, TPartialOverload & ((...args: TArgs) => TReturn) & OverloadProps<TOverload>> | ((...args: TArgs) => TReturn) : never; +type OverloadUnion<TOverload extends (...args: any[]) => any> = Exclude<OverloadUnionRecursive<(() => never) & TOverload>, TOverload extends () => never ? never : () => never>; + +/** + * Normalize CSS var value created by `v-bind` in `<style>` block + * See https://github.com/vuejs/core/pull/12461#issuecomment-2495804664 + */ +export declare function normalizeCssVarValue(value: unknown): string; + + diff --git a/node_modules/@vue/shared/dist/shared.esm-bundler.js b/node_modules/@vue/shared/dist/shared.esm-bundler.js new file mode 100644 index 0000000..ae4886d --- /dev/null +++ b/node_modules/@vue/shared/dist/shared.esm-bundler.js @@ -0,0 +1,537 @@ +/** +* @vue/shared v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function makeMap(str) { + const map = /* @__PURE__ */ Object.create(null); + for (const key of str.split(",")) map[key] = 1; + return (val) => val in map; +} + +const EMPTY_OBJ = !!(process.env.NODE_ENV !== "production") ? Object.freeze({}) : {}; +const EMPTY_ARR = !!(process.env.NODE_ENV !== "production") ? Object.freeze([]) : []; +const NOOP = () => { +}; +const NO = () => false; +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +const isModelListener = (key) => key.startsWith("onUpdate:"); +const extend = Object.assign; +const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +const hasOwnProperty = Object.prototype.hasOwnProperty; +const hasOwn = (val, key) => hasOwnProperty.call(val, key); +const isArray = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isDate = (val) => toTypeString(val) === "[object Date]"; +const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +const isFunction = (val) => typeof val === "function"; +const isString = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject = (val) => val !== null && typeof val === "object"; +const isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +const objectToString = Object.prototype.toString; +const toTypeString = (value) => objectToString.call(value); +const toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +const isPlainObject = (val) => toTypeString(val) === "[object Object]"; +const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction( + (str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); + } +); +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction( + (str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; + } +); +const hasChanged = (value, oldValue) => !Object.is(value, oldValue); +const invokeArrayFns = (fns, ...arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](...arg); + } +}; +const def = (obj, key, value, writable = false) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + writable, + value + }); +}; +const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +const toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +let _globalThis; +const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; +const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/; +function genPropsAccessExp(name) { + return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`; +} +function genCacheKey(source, options) { + return source + JSON.stringify( + options, + (_, val) => typeof val === "function" ? val.toString() : val + ); +} + +const PatchFlags = { + "TEXT": 1, + "1": "TEXT", + "CLASS": 2, + "2": "CLASS", + "STYLE": 4, + "4": "STYLE", + "PROPS": 8, + "8": "PROPS", + "FULL_PROPS": 16, + "16": "FULL_PROPS", + "NEED_HYDRATION": 32, + "32": "NEED_HYDRATION", + "STABLE_FRAGMENT": 64, + "64": "STABLE_FRAGMENT", + "KEYED_FRAGMENT": 128, + "128": "KEYED_FRAGMENT", + "UNKEYED_FRAGMENT": 256, + "256": "UNKEYED_FRAGMENT", + "NEED_PATCH": 512, + "512": "NEED_PATCH", + "DYNAMIC_SLOTS": 1024, + "1024": "DYNAMIC_SLOTS", + "DEV_ROOT_FRAGMENT": 2048, + "2048": "DEV_ROOT_FRAGMENT", + "CACHED": -1, + "-1": "CACHED", + "BAIL": -2, + "-2": "BAIL" +}; +const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `NEED_HYDRATION`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `CACHED`, + [-2]: `BAIL` +}; + +const ShapeFlags = { + "ELEMENT": 1, + "1": "ELEMENT", + "FUNCTIONAL_COMPONENT": 2, + "2": "FUNCTIONAL_COMPONENT", + "STATEFUL_COMPONENT": 4, + "4": "STATEFUL_COMPONENT", + "TEXT_CHILDREN": 8, + "8": "TEXT_CHILDREN", + "ARRAY_CHILDREN": 16, + "16": "ARRAY_CHILDREN", + "SLOTS_CHILDREN": 32, + "32": "SLOTS_CHILDREN", + "TELEPORT": 64, + "64": "TELEPORT", + "SUSPENSE": 128, + "128": "SUSPENSE", + "COMPONENT_SHOULD_KEEP_ALIVE": 256, + "256": "COMPONENT_SHOULD_KEEP_ALIVE", + "COMPONENT_KEPT_ALIVE": 512, + "512": "COMPONENT_KEPT_ALIVE", + "COMPONENT": 6, + "6": "COMPONENT" +}; + +const SlotFlags = { + "STABLE": 1, + "1": "STABLE", + "DYNAMIC": 2, + "2": "DYNAMIC", + "FORWARDED": 3, + "3": "FORWARDED" +}; +const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" +}; + +const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol"; +const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); +const isGloballyWhitelisted = isGloballyAllowed; + +const range = 2; +function generateCodeFrame(source, start = 0, end = source.length) { + start = Math.max(0, Math.min(start, source.length)); + end = Math.max(0, Math.min(end, source.length)); + if (start > end) return ""; + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); +} + +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } +} +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function stringifyStyle(styles) { + if (!styles) return ""; + if (isString(styles)) return styles; + let ret = ""; + for (const key in styles) { + const value = styles[key]; + if (isString(value) || typeof value === "number") { + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + ret += `${normalizedKey}:${value};`; + } + } + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} +function normalizeProps(props) { + if (!props) return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} + +const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; +const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); +const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); +const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); +const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + +const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); +const isBooleanAttr = /* @__PURE__ */ makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/; +const attrValidationCache = {}; +function isSSRSafeAttrName(name) { + if (attrValidationCache.hasOwnProperty(name)) { + return attrValidationCache[name]; + } + const isUnsafe = unsafeAttrCharRE.test(name); + if (isUnsafe) { + console.error(`unsafe attribute name: ${name}`); + } + return attrValidationCache[name] = !isUnsafe; +} +const propsToAttrMap = { + acceptCharset: "accept-charset", + className: "class", + htmlFor: "for", + httpEquiv: "http-equiv" +}; +const isKnownHtmlAttr = /* @__PURE__ */ makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +const isKnownSvgAttr = /* @__PURE__ */ makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); +const isKnownMathMLAttr = /* @__PURE__ */ makeMap( + `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns` +); +function isRenderableAttrValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; +} + +const escapeRE = /["'&<>]/; +function escapeHtml(string) { + const str = "" + string; + const match = escapeRE.exec(str); + if (!match) { + return str; + } + let html = ""; + let escaped; + let index; + let lastIndex = 0; + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + escaped = """; + break; + case 38: + escaped = "&"; + break; + case 39: + escaped = "'"; + break; + case 60: + escaped = "<"; + break; + case 62: + escaped = ">"; + break; + default: + continue; + } + if (lastIndex !== index) { + html += str.slice(lastIndex, index); + } + lastIndex = index + 1; + html += escaped; + } + return lastIndex !== index ? html + str.slice(lastIndex, index) : html; +} +const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g; +function escapeHtmlComment(src) { + return src.replace(commentStripRE, ""); +} +const cssVarNameEscapeSymbolsRE = /[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g; +function getEscapedCssVarName(key, doubleEscape) { + return key.replace( + cssVarNameEscapeSymbolsRE, + (s) => doubleEscape ? s === '"' ? '\\\\\\"' : `\\\\${s}` : `\\${s}` + ); +} + +function looseCompareArrays(a, b) { + if (a.length !== b.length) return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; +} +function looseEqual(a, b) { + if (a === b) return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} + +const isRef = (val) => { + return !!(val && val["__v_isRef"] === true); +}; +const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val); +}; +const replacer = (_key, val) => { + if (isRef(val)) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce( + (entries, [key, val2], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) + }; + } else if (isSymbol(val)) { + return stringifySymbol(val); + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; +const stringifySymbol = (v, i = "") => { + var _a; + return ( + // Symbol.description in es2019+ so we need to cast here to pass + // the lib: es2016 check + isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v + ); +}; + +function normalizeCssVarValue(value) { + if (value == null) { + return "initial"; + } + if (typeof value === "string") { + return value === "" ? " " : value; + } + if (typeof value !== "number" || !Number.isFinite(value)) { + if (!!(process.env.NODE_ENV !== "production")) { + console.warn( + "[Vue warn] Invalid value used for CSS binding. Expected a string or a finite number but received:", + value + ); + } + } + return String(value); +} + +export { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, cssVarNameEscapeSymbolsRE, def, escapeHtml, escapeHtmlComment, extend, genCacheKey, genPropsAccessExp, generateCodeFrame, getEscapedCssVarName, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownMathMLAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeCssVarValue, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString }; diff --git a/node_modules/@vue/shared/index.js b/node_modules/@vue/shared/index.js new file mode 100644 index 0000000..a2ee43e --- /dev/null +++ b/node_modules/@vue/shared/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/shared.cjs.prod.js') +} else { + module.exports = require('./dist/shared.cjs.js') +} diff --git a/node_modules/@vue/shared/package.json b/node_modules/@vue/shared/package.json new file mode 100644 index 0000000..3196e71 --- /dev/null +++ b/node_modules/@vue/shared/package.json @@ -0,0 +1,47 @@ +{ + "name": "@vue/shared", + "version": "3.5.18", + "description": "internal utils shared across @vue packages", + "main": "index.js", + "module": "dist/shared.esm-bundler.js", + "types": "dist/shared.d.ts", + "files": [ + "index.js", + "dist" + ], + "exports": { + ".": { + "types": "./dist/shared.d.ts", + "node": { + "production": "./dist/shared.cjs.prod.js", + "development": "./dist/shared.cjs.js", + "default": "./index.js" + }, + "module": "./dist/shared.esm-bundler.js", + "import": "./dist/shared.esm-bundler.js", + "require": "./index.js" + }, + "./*": "./*" + }, + "sideEffects": false, + "buildOptions": { + "formats": [ + "esm-bundler", + "cjs" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/shared" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/shared#readme" +} \ No newline at end of file diff --git a/node_modules/address/LICENSE.txt b/node_modules/address/LICENSE.txt new file mode 100644 index 0000000..0fee3ce --- /dev/null +++ b/node_modules/address/LICENSE.txt @@ -0,0 +1,22 @@ +This software is licensed under the MIT License. + +Copyright (C) 2013 - 2014 fengmk2 <fengmk2@gmail.com> +Copyright (C) 2015 - present node-modules and other contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/address/README.md b/node_modules/address/README.md new file mode 100644 index 0000000..f108b82 --- /dev/null +++ b/node_modules/address/README.md @@ -0,0 +1,93 @@ +address +======= + +[![NPM version][npm-image]][npm-url] +[![Node.js CI](https://github.com/node-modules/address/actions/workflows/nodejs.yml/badge.svg)](https://github.com/node-modules/address/actions/workflows/nodejs.yml) +[![Test coverage][coveralls-image]][coveralls-url] +[![npm download][download-image]][download-url] + +[npm-image]: https://img.shields.io/npm/v/address.svg?style=flat-square +[npm-url]: https://npmjs.org/package/address +[coveralls-image]: https://img.shields.io/coveralls/node-modules/address.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/node-modules/address?branch=master +[download-image]: https://img.shields.io/npm/dm/address.svg?style=flat-square +[download-url]: https://npmjs.org/package/address + +Get current machine IP, MAC and DNS servers. + +DNS servers receive from `/etc/resolv.conf`. + +## Install + +```bash +$ npm install address +``` + +## Usage + +Get IP is sync and get MAC is async for now. + +```js +const address = require('address'); + +// default interface 'eth' on linux, 'en' on osx. +address.ip(); // '192.168.0.2' +address.ipv6(); // 'fe80::7aca:39ff:feb0:e67d' +address.mac(function (err, addr) { + console.log(addr); // '78:ca:39:b0:e6:7d' +}); + +// local loopback +address.ip('lo'); // '127.0.0.1' + +// vboxnet MAC +address.mac('vboxnet', function (err, addr) { + console.log(addr); // '0a:00:27:00:00:00' +}); +``` + +### Get all addresses: IPv4, IPv6 and MAC + +```js +address((err, addrs) => { + console.log(addrs.ip, addrs.ipv6, addrs.mac); + // '192.168.0.2', 'fe80::7aca:39ff:feb0:e67d', '78:ca:39:b0:e6:7d' +}); + +address('vboxnet', (err, addrs) => { + console.log(addrs.ip, addrs.ipv6, addrs.mac); + // '192.168.56.1', null, '0a:00:27:00:00:00' +}); +``` + +### Get an interface info with family + +```js +address.interface('IPv4', 'eth1'); +// { address: '192.168.1.1', family: 'IPv4', mac: '78:ca:39:b0:e6:7d' } +``` + +### Get DNS servers + +```js +address.dns((err, addrs) => { + console.log(addrs); + // ['10.13.2.1', '10.13.2.6'] +}); +``` + +## License + +[MIT](LICENSE.txt) + +<!-- GITCONTRIBUTOR_START --> + +## Contributors + +|[<img src="https://avatars.githubusercontent.com/u/156269?v=4" width="100px;"/><br/><sub><b>fengmk2</b></sub>](https://github.com/fengmk2)<br/>|[<img src="https://avatars.githubusercontent.com/u/1147375?v=4" width="100px;"/><br/><sub><b>alsotang</b></sub>](https://github.com/alsotang)<br/>|[<img src="https://avatars.githubusercontent.com/u/10237910?v=4" width="100px;"/><br/><sub><b>jkelleyrtp</b></sub>](https://github.com/jkelleyrtp)<br/>|[<img src="https://avatars.githubusercontent.com/u/1409643?v=4" width="100px;"/><br/><sub><b>mariodu</b></sub>](https://github.com/mariodu)<br/>|[<img src="https://avatars.githubusercontent.com/u/11351322?v=4" width="100px;"/><br/><sub><b>mathieutu</b></sub>](https://github.com/mathieutu)<br/>|[<img src="https://avatars.githubusercontent.com/u/2139038?v=4" width="100px;"/><br/><sub><b>zhangyuheng</b></sub>](https://github.com/zhangyuheng)<br/>| +| :---: | :---: | :---: | :---: | :---: | :---: | +[<img src="https://avatars.githubusercontent.com/u/1400114?v=4" width="100px;"/><br/><sub><b>coolme200</b></sub>](https://github.com/coolme200)<br/>|[<img src="https://avatars.githubusercontent.com/u/5856440?v=4" width="100px;"/><br/><sub><b>whxaxes</b></sub>](https://github.com/whxaxes)<br/> + +This project follows the git-contributor [spec](https://github.com/xudafeng/git-contributor), auto updated at `Tue Sep 13 2022 09:09:11 GMT+0800`. + +<!-- GITCONTRIBUTOR_END --> diff --git a/node_modules/address/lib/address.d.ts b/node_modules/address/lib/address.d.ts new file mode 100644 index 0000000..be66ed0 --- /dev/null +++ b/node_modules/address/lib/address.d.ts @@ -0,0 +1,28 @@ +export = address; + +declare interface Address { + ip: string; + ipv6: string; + mac: string; +} + +declare type AddressCallback = (err: Error, addr: Address) => void; +declare type MacCallback = (err: Error, addr: string) => void; +declare type DnsCallback = (err: Error, servers: string[]) => void; + +declare function address(interfaceName: string, callback: AddressCallback): void; +declare function address(callback: AddressCallback): void; + +declare namespace address { + const MAC_IP_RE: RegExp; + const MAC_RE: RegExp; + + function dns(filepath: string, callback: DnsCallback): void; + function dns(callback: DnsCallback): void; + + function ip(interfaceName?: string): any; + function ipv6(interfaceName?: string): any; + + function mac(interfaceName: string, callback: MacCallback): void; + function mac(callback: MacCallback): void; +} diff --git a/node_modules/address/lib/address.js b/node_modules/address/lib/address.js new file mode 100644 index 0000000..d4e5ebc --- /dev/null +++ b/node_modules/address/lib/address.js @@ -0,0 +1,263 @@ +'use strict'; + +var os = require('os'); +var fs = require('fs'); +var child = require('child_process'); + +var DEFAULT_RESOLV_FILE = '/etc/resolv.conf'; + +function getInterfaceName() { + var val = 'eth'; + var platform = os.platform(); + if (platform === 'darwin') { + val = 'en'; + } else if (platform === 'win32') { + val = null; + } + return val; +} + +function getIfconfigCMD() { + if (os.platform() === 'win32') { + return 'ipconfig/all'; + } + return '/sbin/ifconfig'; +} + +// typeof os.networkInterfaces family is a number (v18.0.0) +// types: 'IPv4' | 'IPv6' => 4 | 6 +// @see https://github.com/nodejs/node/issues/42861 +function matchName(actualFamily, expectedFamily) { + if (expectedFamily === 'IPv4') { + return actualFamily === 'IPv4' || actualFamily === 4; + } + if (expectedFamily === 'IPv6') { + return actualFamily === 'IPv6' || actualFamily === 6; + } + return actualFamily === expectedFamily; +} + +/** + * Get all addresses. + * + * @param {String} [interfaceName] interface name, default is 'eth' on linux, 'en' on mac os. + * @param {Function(err, addr)} callback + * - {Object} addr { + * - {String} ip + * - {String} ipv6 + * - {String} mac + * } + */ +function address(interfaceName, callback) { + if (typeof interfaceName === 'function') { + callback = interfaceName; + interfaceName = null; + } + + var addr = { + ip: address.ip(interfaceName), + ipv6: address.ipv6(interfaceName), + mac: null + }; + address.mac(interfaceName, function (err, mac) { + if (mac) { + addr.mac = mac; + } + callback(err, addr); + }); +} + +address.interface = function (family, name) { + var interfaces = os.networkInterfaces(); + var noName = !name; + name = name || getInterfaceName(); + family = family || 'IPv4'; + for (var i = -1; i < 8; i++) { + var interfaceName = name + (i >= 0 ? i : ''); // support 'lo' and 'lo0' + var items = interfaces[interfaceName]; + if (items) { + for (var j = 0; j < items.length; j++) { + var item = items[j]; + if (matchName(item.family, family)) { + return item; + } + } + } + } + + if (noName) { + // filter all loopback or local addresses + for (var k in interfaces) { + var items = interfaces[k]; + for (var i = 0; i < items.length; i++) { + var item = items[i]; + // all 127 addresses are local and should be ignored + if (matchName(item.family, family) && !item.address.startsWith('127.')) { + return item; + } + } + } + } + return; +}; + +/** + * Get current machine IPv4 + * + * @param {String} [interfaceName] interface name, default is 'eth' on linux, 'en' on mac os. + * @return {String} IP address + */ +address.ip = function (interfaceName) { + var item = address.interface('IPv4', interfaceName); + return item && item.address; +}; + +/** + * Get current machine IPv6 + * + * @param {String} [interfaceName] interface name, default is 'eth' on linux, 'en' on mac os. + * @return {String} IP address + */ +address.ipv6 = function (interfaceName) { + var item = address.interface('IPv6', interfaceName); + return item && item.address; +}; + +// osx start line 'en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500' +// linux start line 'eth0 Link encap:Ethernet HWaddr 00:16:3E:00:0A:29 ' +var MAC_OSX_START_LINE = /^(\w+)\:\s+flags=/; +var MAC_LINUX_START_LINE = /^(\w+)\s{2,}link encap:\w+/i; + +// ether 78:ca:39:b0:e6:7d +// HWaddr 00:16:3E:00:0A:29 +var MAC_RE = address.MAC_RE = /(?:ether|HWaddr)\s+((?:[a-z0-9]{2}\:){5}[a-z0-9]{2})/i; + +// osx: inet 192.168.2.104 netmask 0xffffff00 broadcast 192.168.2.255 +// linux: inet addr:10.125.5.202 Bcast:10.125.15.255 Mask:255.255.240.0 +var MAC_IP_RE = address.MAC_IP_RE = /inet\s(?:addr\:)?(\d+\.\d+\.\d+\.\d+)/; + +function getMAC(content, interfaceName, matchIP) { + var lines = content.split('\n'); + for (var i = 0; i < lines.length; i++) { + var line = lines[i].trimRight(); + var m = MAC_OSX_START_LINE.exec(line) || MAC_LINUX_START_LINE.exec(line); + if (!m) { + continue; + } + + // check interface name + var name = m[1]; + if (name.indexOf(interfaceName) !== 0) { + continue; + } + + var ip = null; + var mac = null; + var match = MAC_RE.exec(line); + if (match) { + mac = match[1]; + } + + i++; + while (true) { + line = lines[i]; + if (!line || MAC_OSX_START_LINE.exec(line) || MAC_LINUX_START_LINE.exec(line)) { + i--; + break; // hit next interface, handle next interface + } + if (!mac) { + match = MAC_RE.exec(line); + if (match) { + mac = match[1]; + } + } + + if (!ip) { + match = MAC_IP_RE.exec(line); + if (match) { + ip = match[1]; + } + } + + i++; + } + + if (ip === matchIP) { + return mac; + } + } +} + +/** + * Get current machine MAC address + * + * @param {String} [interfaceName] interface name, default is 'eth' on linux, 'en' on mac os. + * @param {Function(err, address)} callback + */ +address.mac = function (interfaceName, callback) { + if (typeof interfaceName === 'function') { + callback = interfaceName; + interfaceName = null; + } + interfaceName = interfaceName || getInterfaceName(); + var item = address.interface('IPv4', interfaceName); + if (!item) { + return callback(); + } + + // https://github.com/nodejs/node/issues/13581 + // bug in node 7.x and <= 8.4.0 + if (!process.env.CI && (item.mac === 'ff:00:00:00:00:00' || item.mac === '00:00:00:00:00:00')) { + // wrong address, ignore it + item.mac = ''; + } + + if (item.mac) { + return callback(null, item.mac); + } + + child.exec(getIfconfigCMD(), {timeout: 5000}, function (err, stdout, stderr) { + if (err || !stdout) { + return callback(err); + } + + var mac = getMAC(stdout || '', interfaceName, item.address); + callback(null, mac); + }); +}; + +// nameserver 172.24.102.254 +var DNS_SERVER_RE = /^nameserver\s+(\d+\.\d+\.\d+\.\d+)$/i; + +/** + * Get DNS servers. + * + * @param {String} [filepath] resolv config file path. default is '/etc/resolv.conf'. + * @param {Function(err, servers)} callback + */ +address.dns = function (filepath, callback) { + if (typeof filepath === 'function') { + callback = filepath; + filepath = null; + } + filepath = filepath || DEFAULT_RESOLV_FILE; + fs.readFile(filepath, 'utf8', function (err, content) { + if (err) { + return callback(err); + } + var servers = []; + content = content || ''; + var lines = content.split('\n'); + for (var i = 0; i < lines.length; i++) { + var line = lines[i].trim(); + var m = DNS_SERVER_RE.exec(line); + if (m) { + servers.push(m[1]); + } + } + + callback(null, servers); + }); +}; + +module.exports = address; diff --git a/node_modules/address/package.json b/node_modules/address/package.json new file mode 100644 index 0000000..1d9b814 --- /dev/null +++ b/node_modules/address/package.json @@ -0,0 +1,42 @@ +{ + "name": "address", + "version": "1.2.2", + "description": "Get current machine IP, MAC and DNS servers.", + "main": "lib/address.js", + "types": "lib/address.d.ts", + "files": [ + "lib" + ], + "scripts": { + "lint": "eslint test", + "test": "egg-bin test", + "ci": "egg-bin cov", + "contributors": "git-contributor" + }, + "dependencies": {}, + "devDependencies": { + "@types/node": "14", + "egg-bin": "^5.6.1", + "eslint": "^8.30.0", + "eslint-config-egg": "^12.1.0", + "git-contributor": "^1.1.0", + "mm": "*", + "runscript": "^1.4.0", + "typescript": "4" + }, + "repository": { + "type": "git", + "url": "git://github.com/node-modules/address.git" + }, + "keywords": [ + "address", + "ip", + "ipv4", + "mac" + ], + "engines": { + "node": ">= 10.0.0" + }, + "author": "fengmk2 <fengmk2@gmail.com>", + "license": "MIT" +} diff --git a/node_modules/agentkeepalive/History.md b/node_modules/agentkeepalive/History.md new file mode 100644 index 0000000..32037e9 --- /dev/null +++ b/node_modules/agentkeepalive/History.md @@ -0,0 +1,179 @@ + +3.5.3 / 2024-05-08 +================== + +**fixes** + * [[`d1e789f`](http://github.com/node-modules/agentkeepalive/commit/d1e789fa83c9e636514ea297876c82d7968496cc)] - fix: use Object.assign (#117) (fengmk2 <<suqian.yf@antgroup.com>>) + +**others** + * [[`1b8393d`](http://github.com/node-modules/agentkeepalive/commit/1b8393ddd9896b14e5c68cef71d01548c41d9f2a)] - chore: add latest-3 tag (fengmk2 <<fengmk2@gmail.com>>) + +3.5.2 / 2018-10-19 +================== + +**fixes** + * [[`5751fc1`](http://github.com/node-modules/agentkeepalive/commit/5751fc1180ed6544602c681ffbd08ca66a0cb12c)] - fix: sockLen being miscalculated when removing sockets (#60) (Ehden Sinai <<cixel@users.noreply.github.com>>) + +3.5.1 / 2018-07-31 +================== + +**fixes** + * [[`495f1ab`](http://github.com/node-modules/agentkeepalive/commit/495f1ab625d43945d72f68096b97db723d4f0657)] - fix: add the lost npm files (#66) (Henry Zhuang <<zhuanghengfei@gmail.com>>) + +3.5.0 / 2018-07-31 +================== + +**features** + * [[`16f5aea`](http://github.com/node-modules/agentkeepalive/commit/16f5aeadfda57f1c602652f1472a63cc83cd05bf)] - feat: add typing define. (#65) (Henry Zhuang <<zhuanghengfei@gmail.com>>) + +**others** + * [[`28fa062`](http://github.com/node-modules/agentkeepalive/commit/28fa06246fb5103f88ebeeb8563757a9078b8157)] - docs: add "per host" to description of maxFreeSockets (tony-gutierrez <<tony.gutierrez@bluefletch.com>>) + * [[`7df2577`](http://github.com/node-modules/agentkeepalive/commit/7df25774f00a1031ca4daad2878a17e0539072a2)] - test: run test on node 10 (#63) (fengmk2 <<fengmk2@gmail.com>>) + +3.4.1 / 2018-03-08 +================== + +**fixes** + * [[`4d3a3b1`](http://github.com/node-modules/agentkeepalive/commit/4d3a3b1f7b16595febbbd39eeed72b2663549014)] - fix: Handle ipv6 addresses in host-header correctly with TLS (#53) (Mattias Holmlund <<u376@m1.holmlund.se>>) + +**others** + * [[`55a7a5c`](http://github.com/node-modules/agentkeepalive/commit/55a7a5cd33e97f9a8370083dcb041c5552f10ac9)] - test: stop timer after test end (fengmk2 <<fengmk2@gmail.com>>) + +3.4.0 / 2018-02-27 +================== + +**features** + * [[`bc7cadb`](http://github.com/node-modules/agentkeepalive/commit/bc7cadb30ecd2071e2b341ac53ae1a2b8155c43d)] - feat: use socket custom freeSocketKeepAliveTimeout first (#59) (fengmk2 <<fengmk2@gmail.com>>) + +**others** + * [[`138eda8`](http://github.com/node-modules/agentkeepalive/commit/138eda81e10b632aaa87bea0cb66d8667124c4e8)] - doc: fix `keepAliveMsecs` params description (#55) (Hongcai Deng <<admin@dhchouse.com>>) + +3.3.0 / 2017-06-20 +================== + + * feat: add statusChanged getter (#51) + * chore: format License + +3.2.0 / 2017-06-10 +================== + + * feat: add expiring active sockets + * test: add node 8 (#49) + +3.1.0 / 2017-02-20 +================== + + * feat: timeout support humanize ms (#48) + +3.0.0 / 2016-12-20 +================== + + * fix: emit agent socket close event + * test: add remove excess calls to removeSocket + * test: use egg-ci + * test: refactor test with eslint rules + * feat: merge _http_agent.js from 7.2.1 + +2.2.0 / 2016-06-26 +================== + + * feat: Add browser shim (noop) for isomorphic use. (#39) + * chore: add security check badge + +2.1.1 / 2016-04-06 +================== + + * https: fix ssl socket leak when keepalive is used + * chore: remove circle ci image + +2.1.0 / 2016-04-02 +================== + + * fix: opened sockets number overflow maxSockets + +2.0.5 / 2016-03-16 +================== + + * fix: pick _evictSession to httpsAgent + +2.0.4 / 2016-03-13 +================== + + * test: add Circle ci + * test: add appveyor ci build + * refactor: make sure only one error listener + * chore: use codecov + * fix: handle idle socket error + * test: run on more node versions + +2.0.3 / 2015-08-03 +================== + + * fix: add default error handler to avoid Unhandled error event throw + +2.0.2 / 2015-04-25 +================== + + * fix: remove socket from freeSockets on 'timeout' (@pmalouin) + +2.0.1 / 2015-04-19 +================== + + * fix: add timeoutSocketCount to getCurrentStatus() + * feat(getCurrentStatus): add getCurrentStatus + +2.0.0 / 2015-04-01 +================== + + * fix: socket.destroyed always be undefined on 0.10.x + * Make it compatible with node v0.10.x (@lattmann) + +1.2.1 / 2015-03-23 +================== + + * patch from iojs: don't overwrite servername option + * patch commits from joyent/node + * add max sockets test case + * add nagle algorithm delayed link + +1.2.0 / 2014-09-02 +================== + + * allow set keepAliveTimeout = 0 + * support timeout on working socket. fixed #6 + +1.1.0 / 2014-08-28 +================== + + * add some socket counter for deep monitor + +1.0.0 / 2014-08-13 +================== + + * update _http_agent, only support 0.11+, only support node 0.11.0+ + +0.2.2 / 2013-11-19 +================== + + * support node 0.8 and node 0.10 + +0.2.1 / 2013-11-08 +================== + + * fix socket does not timeout bug, it will hang on life, must use 0.2.x on node 0.11 + +0.2.0 / 2013-11-06 +================== + + * use keepalive agent on node 0.11+ impl + +0.1.5 / 2013-06-24 +================== + + * support coveralls + * add node 0.10 test + * add 0.8.22 original https.js + * add original http.js module to diff + * update jscover + * mv pem to fixtures + * add https agent usage diff --git a/node_modules/agentkeepalive/README.md b/node_modules/agentkeepalive/README.md new file mode 100644 index 0000000..8231458 --- /dev/null +++ b/node_modules/agentkeepalive/README.md @@ -0,0 +1,248 @@ +# agentkeepalive + +[![NPM version][npm-image]][npm-url] +[![build status][travis-image]][travis-url] +[![Appveyor status][appveyor-image]][appveyor-url] +[![Test coverage][codecov-image]][codecov-url] +[![David deps][david-image]][david-url] +[![Known Vulnerabilities][snyk-image]][snyk-url] +[![npm download][download-image]][download-url] + +[npm-image]: https://img.shields.io/npm/v/agentkeepalive.svg?style=flat +[npm-url]: https://npmjs.org/package/agentkeepalive +[travis-image]: https://img.shields.io/travis/node-modules/agentkeepalive.svg?style=flat +[travis-url]: https://travis-ci.org/node-modules/agentkeepalive +[appveyor-image]: https://ci.appveyor.com/api/projects/status/k7ct4s47di6m5uy2?svg=true +[appveyor-url]: https://ci.appveyor.com/project/fengmk2/agentkeepalive +[codecov-image]: https://codecov.io/gh/node-modules/agentkeepalive/branch/master/graph/badge.svg +[codecov-url]: https://codecov.io/gh/node-modules/agentkeepalive +[david-image]: https://img.shields.io/david/node-modules/agentkeepalive.svg?style=flat +[david-url]: https://david-dm.org/node-modules/agentkeepalive +[snyk-image]: https://snyk.io/test/npm/agentkeepalive/badge.svg?style=flat-square +[snyk-url]: https://snyk.io/test/npm/agentkeepalive +[download-image]: https://img.shields.io/npm/dm/agentkeepalive.svg?style=flat-square +[download-url]: https://npmjs.org/package/agentkeepalive + +The Node.js's missing `keep alive` `http.Agent`. Support `http` and `https`. + +## What's different from original `http.Agent`? + +- `keepAlive=true` by default +- Disable Nagle's algorithm: `socket.setNoDelay(true)` +- Add free socket timeout: avoid long time inactivity socket leak in the free-sockets queue. +- Add active socket timeout: avoid long time inactivity socket leak in the active-sockets queue. + +## Install + +```bash +$ npm install agentkeepalive --save +``` + +## new Agent([options]) + +* `options` {Object} Set of configurable options to set on the agent. + Can have the following fields: + * `keepAlive` {Boolean} Keep sockets around in a pool to be used by + other requests in the future. Default = `true`. + * `keepAliveMsecs` {Number} When using the keepAlive option, specifies the initial delay + for TCP Keep-Alive packets. Ignored when the keepAlive option is false or undefined. Defaults to 1000. + Default = `1000`. Only relevant if `keepAlive` is set to `true`. + * `freeSocketKeepAliveTimeout`: {Number} Sets the free socket to timeout + after `freeSocketKeepAliveTimeout` milliseconds of inactivity on the free socket. + Default is `15000`. + Only relevant if `keepAlive` is set to `true`. + * `timeout`: {Number} Sets the working socket to timeout + after `timeout` milliseconds of inactivity on the working socket. + Default is `freeSocketKeepAliveTimeout * 2`. + * `maxSockets` {Number} Maximum number of sockets to allow per + host. Default = `Infinity`. + * `maxFreeSockets` {Number} Maximum number of sockets (per host) to leave open + in a free state. Only relevant if `keepAlive` is set to `true`. + Default = `256`. + * `socketActiveTTL` {Number} Sets the socket active time to live, even if it's in use. + If not setted the behaviour continues the same (the socket will be released only when free) + Default = `null`. + +## Usage + +```js +const http = require('http'); +const Agent = require('agentkeepalive'); + +const keepaliveAgent = new Agent({ + maxSockets: 100, + maxFreeSockets: 10, + timeout: 60000, + freeSocketKeepAliveTimeout: 30000, // free socket keepalive for 30 seconds +}); + +const options = { + host: 'cnodejs.org', + port: 80, + path: '/', + method: 'GET', + agent: keepaliveAgent, +}; + +const req = http.request(options, res => { + console.log('STATUS: ' + res.statusCode); + console.log('HEADERS: ' + JSON.stringify(res.headers)); + res.setEncoding('utf8'); + res.on('data', function (chunk) { + console.log('BODY: ' + chunk); + }); +}); +req.on('error', e => { + console.log('problem with request: ' + e.message); +}); +req.end(); + +setTimeout(() => { + if (keepaliveAgent.statusChanged) { + console.log('[%s] agent status changed: %j', Date(), keepaliveAgent.getCurrentStatus()); + } +}, 2000); + +``` + +### `getter agent.statusChanged` + +counters have change or not after last checkpoint. + +### `agent.getCurrentStatus()` + +`agent.getCurrentStatus()` will return a object to show the status of this agent: + +```js +{ + createSocketCount: 10, + closeSocketCount: 5, + timeoutSocketCount: 0, + requestCount: 5, + freeSockets: { 'localhost:57479:': 3 }, + sockets: { 'localhost:57479:': 5 }, + requests: {} +} +``` + +### Support `https` + +```js +const https = require('https'); +const HttpsAgent = require('agentkeepalive').HttpsAgent; + +const keepaliveAgent = new HttpsAgent(); +// https://www.google.com/search?q=nodejs&sugexp=chrome,mod=12&sourceid=chrome&ie=UTF-8 +const options = { + host: 'www.google.com', + port: 443, + path: '/search?q=nodejs&sugexp=chrome,mod=12&sourceid=chrome&ie=UTF-8', + method: 'GET', + agent: keepaliveAgent, +}; + +const req = https.request(options, res => { + console.log('STATUS: ' + res.statusCode); + console.log('HEADERS: ' + JSON.stringify(res.headers)); + res.setEncoding('utf8'); + res.on('data', chunk => { + console.log('BODY: ' + chunk); + }); +}); + +req.on('error', e => { + console.log('problem with request: ' + e.message); +}); +req.end(); + +setTimeout(() => { + console.log('agent status: %j', keepaliveAgent.getCurrentStatus()); +}, 2000); +``` + +## [Benchmark](https://github.com/node-modules/agentkeepalive/tree/master/benchmark) + +run the benchmark: + +```bash +cd benchmark +sh start.sh +``` + +Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz + +node@v0.8.9 + +50 maxSockets, 60 concurrent, 1000 requests per concurrent, 5ms delay + +Keep alive agent (30 seconds): + +```js +Transactions: 60000 hits +Availability: 100.00 % +Elapsed time: 29.70 secs +Data transferred: 14.88 MB +Response time: 0.03 secs +Transaction rate: 2020.20 trans/sec +Throughput: 0.50 MB/sec +Concurrency: 59.84 +Successful transactions: 60000 +Failed transactions: 0 +Longest transaction: 0.15 +Shortest transaction: 0.01 +``` + +Normal agent: + +```js +Transactions: 60000 hits +Availability: 100.00 % +Elapsed time: 46.53 secs +Data transferred: 14.88 MB +Response time: 0.05 secs +Transaction rate: 1289.49 trans/sec +Throughput: 0.32 MB/sec +Concurrency: 59.81 +Successful transactions: 60000 +Failed transactions: 0 +Longest transaction: 0.45 +Shortest transaction: 0.00 +``` + +Socket created: + +``` +[proxy.js:120000] keepalive, 50 created, 60000 requestFinished, 1200 req/socket, 0 requests, 0 sockets, 0 unusedSockets, 50 timeout +{" <10ms":662," <15ms":17825," <20ms":20552," <30ms":17646," <40ms":2315," <50ms":567," <100ms":377," <150ms":56," <200ms":0," >=200ms+":0} +---------------------------------------------------------------- +[proxy.js:120000] normal , 53866 created, 84260 requestFinished, 1.56 req/socket, 0 requests, 0 sockets +{" <10ms":75," <15ms":1112," <20ms":10947," <30ms":32130," <40ms":8228," <50ms":3002," <100ms":4274," <150ms":181," <200ms":18," >=200ms+":33} +``` + +## License + +``` +(The MIT License) + +Copyright(c) node-modules and other contributors. +Copyright(c) 2012 - 2015 fengmk2 <fengmk2@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` diff --git a/node_modules/agentkeepalive/browser.js b/node_modules/agentkeepalive/browser.js new file mode 100644 index 0000000..29c9398 --- /dev/null +++ b/node_modules/agentkeepalive/browser.js @@ -0,0 +1,5 @@ +module.exports = noop; +module.exports.HttpsAgent = noop; + +// Noop function for browser since native api's don't use agents. +function noop () {} diff --git a/node_modules/agentkeepalive/index.d.ts b/node_modules/agentkeepalive/index.d.ts new file mode 100644 index 0000000..c11636f --- /dev/null +++ b/node_modules/agentkeepalive/index.d.ts @@ -0,0 +1,43 @@ +declare module "agentkeepalive" { + import * as http from 'http'; + import * as https from 'https'; + + interface AgentStatus { + createSocketCount: number, + createSocketErrorCount: number, + closeSocketCount: number, + errorSocketCount: number, + timeoutSocketCount: number, + requestCount: number, + freeSockets: object, + sockets: object, + requests: object, + } + + interface HttpOptions extends http.AgentOptions { + freeSocketKeepAliveTimeout?: number; + timeout?: number; + socketActiveTTL?: number; + } + + interface HttpsOptions extends https.AgentOptions { + freeSocketKeepAliveTimeout?: number; + timeout?: number; + socketActiveTTL?: number; + } + + class internal extends http.Agent { + constructor(opts?: HttpOptions); + readonly statusChanged: boolean; + createSocket(req: http.IncomingMessage, options: http.RequestOptions, cb: Function): void; + getCurrentStatus(): AgentStatus; + } + + namespace internal { + export class HttpsAgent extends internal { + constructor(opts?: HttpsOptions); + } + } + + export = internal; +} diff --git a/node_modules/agentkeepalive/index.js b/node_modules/agentkeepalive/index.js new file mode 100644 index 0000000..6138131 --- /dev/null +++ b/node_modules/agentkeepalive/index.js @@ -0,0 +1,4 @@ +'use strict'; + +module.exports = require('./lib/agent'); +module.exports.HttpsAgent = require('./lib/https_agent'); diff --git a/node_modules/agentkeepalive/lib/_http_agent.js b/node_modules/agentkeepalive/lib/_http_agent.js new file mode 100644 index 0000000..c9fd1ac --- /dev/null +++ b/node_modules/agentkeepalive/lib/_http_agent.js @@ -0,0 +1,416 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// patch from https://github.com/nodejs/node/blob/v7.2.1/lib/_http_agent.js + +'use strict'; + +const net = require('net'); +const util = require('util'); +const EventEmitter = require('events'); +const debug = util.debuglog('http'); + +// New Agent code. + +// The largest departure from the previous implementation is that +// an Agent instance holds connections for a variable number of host:ports. +// Surprisingly, this is still API compatible as far as third parties are +// concerned. The only code that really notices the difference is the +// request object. + +// Another departure is that all code related to HTTP parsing is in +// ClientRequest.onSocket(). The Agent is now *strictly* +// concerned with managing a connection pool. + +function Agent(options) { + if (!(this instanceof Agent)) + return new Agent(options); + + EventEmitter.call(this); + + var self = this; + + self.defaultPort = 80; + self.protocol = 'http:'; + + self.options = Object.assign({}, options); + + // don't confuse net and make it think that we're connecting to a pipe + self.options.path = null; + self.requests = {}; + self.sockets = {}; + self.freeSockets = {}; + self.keepAliveMsecs = self.options.keepAliveMsecs || 1000; + self.keepAlive = self.options.keepAlive || false; + self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets; + self.maxFreeSockets = self.options.maxFreeSockets || 256; + + // [patch start] + // free keep-alive socket timeout. By default free socket do not have a timeout. + self.freeSocketKeepAliveTimeout = self.options.freeSocketKeepAliveTimeout || 0; + // working socket timeout. By default working socket do not have a timeout. + self.timeout = self.options.timeout || 0; + // the socket active time to live, even if it's in use + this.socketActiveTTL = this.options.socketActiveTTL || null; + // [patch end] + + self.on('free', function(socket, options) { + var name = self.getName(options); + debug('agent.on(free)', name); + + if (socket.writable && + self.requests[name] && self.requests[name].length) { + // [patch start] + debug('continue handle next request'); + // [patch end] + self.requests[name].shift().onSocket(socket); + if (self.requests[name].length === 0) { + // don't leak + delete self.requests[name]; + } + } else { + // If there are no pending requests, then put it in + // the freeSockets pool, but only if we're allowed to do so. + var req = socket._httpMessage; + if (req && + req.shouldKeepAlive && + socket.writable && + self.keepAlive) { + var freeSockets = self.freeSockets[name]; + var freeLen = freeSockets ? freeSockets.length : 0; + var count = freeLen; + if (self.sockets[name]) + count += self.sockets[name].length; + + if (count > self.maxSockets || freeLen >= self.maxFreeSockets) { + socket.destroy(); + } else { + freeSockets = freeSockets || []; + self.freeSockets[name] = freeSockets; + socket.setKeepAlive(true, self.keepAliveMsecs); + socket.unref(); + socket._httpMessage = null; + self.removeSocket(socket, options); + freeSockets.push(socket); + + // [patch start] + // Add a default error handler to avoid Unhandled 'error' event throw on idle socket + // https://github.com/node-modules/agentkeepalive/issues/25 + // https://github.com/nodejs/node/pull/4482 (fixed in >= 4.4.0 and >= 5.4.0) + if (socket.listeners('error').length === 0) { + socket.once('error', freeSocketErrorListener); + } + // set free keepalive timer + // try to use socket custom freeSocketKeepAliveTimeout first + const freeSocketKeepAliveTimeout = socket.freeSocketKeepAliveTimeout || self.freeSocketKeepAliveTimeout; + socket.setTimeout(freeSocketKeepAliveTimeout); + debug(`push to free socket queue and wait for ${freeSocketKeepAliveTimeout}ms`); + // [patch end] + } + } else { + socket.destroy(); + } + } + }); +} + +util.inherits(Agent, EventEmitter); +exports.Agent = Agent; + +// [patch start] +function freeSocketErrorListener(err) { + var socket = this; + debug('SOCKET ERROR on FREE socket:', err.message, err.stack); + socket.destroy(); + socket.emit('agentRemove'); +} +// [patch end] + +Agent.defaultMaxSockets = Infinity; + +Agent.prototype.createConnection = net.createConnection; + +// Get the key for a given set of request options +Agent.prototype.getName = function getName(options) { + var name = options.host || 'localhost'; + + name += ':'; + if (options.port) + name += options.port; + + name += ':'; + if (options.localAddress) + name += options.localAddress; + + // Pacify parallel/test-http-agent-getname by only appending + // the ':' when options.family is set. + if (options.family === 4 || options.family === 6) + name += ':' + options.family; + + return name; +}; + +// [patch start] +function handleSocketCreation(req) { + return function(err, newSocket) { + if (err) { + process.nextTick(function() { + req.emit('error', err); + }); + return; + } + req.onSocket(newSocket); + } +} +// [patch end] + +Agent.prototype.addRequest = function addRequest(req, options, port/*legacy*/, + localAddress/*legacy*/) { + // Legacy API: addRequest(req, host, port, localAddress) + if (typeof options === 'string') { + options = { + host: options, + port, + localAddress + }; + } + + options = Object.assign({}, options); + options = Object.assign(options, this.options); + + if (!options.servername) + options.servername = calculateServerName(options, req); + + var name = this.getName(options); + if (!this.sockets[name]) { + this.sockets[name] = []; + } + + var freeLen = this.freeSockets[name] ? this.freeSockets[name].length : 0; + var sockLen = freeLen + this.sockets[name].length; + + if (freeLen) { + // we have a free socket, so use that. + var socket = this.freeSockets[name].shift(); + debug('have free socket'); + + // [patch start] + // remove free socket error event handler + socket.removeListener('error', freeSocketErrorListener); + // restart the default timer + socket.setTimeout(this.timeout); + + if (this.socketActiveTTL && Date.now() - socket.createdTime > this.socketActiveTTL) { + debug(`socket ${socket.createdTime} expired`); + socket.destroy(); + return this.createSocket(req, options, handleSocketCreation(req)); + } + // [patch end] + + // don't leak + if (!this.freeSockets[name].length) + delete this.freeSockets[name]; + + socket.ref(); + req.onSocket(socket); + this.sockets[name].push(socket); + } else if (sockLen < this.maxSockets) { + debug('call onSocket', sockLen, freeLen); + // If we are under maxSockets create a new one. + // [patch start] + this.createSocket(req, options, handleSocketCreation(req)); + // [patch end] + } else { + debug('wait for socket'); + // We are over limit so we'll add it to the queue. + if (!this.requests[name]) { + this.requests[name] = []; + } + this.requests[name].push(req); + } +}; + +Agent.prototype.createSocket = function createSocket(req, options, cb) { + var self = this; + options = Object.assign({}, options); + options = Object.assign(options, self.options); + + if (!options.servername) + options.servername = calculateServerName(options, req); + + var name = self.getName(options); + options._agentKey = name; + + debug('createConnection', name, options); + options.encoding = null; + var called = false; + const newSocket = self.createConnection(options, oncreate); + // [patch start] + if (newSocket) { + oncreate(null, Object.assign(newSocket, { createdTime: Date.now() })); + } + // [patch end] + function oncreate(err, s) { + if (called) + return; + called = true; + if (err) + return cb(err); + if (!self.sockets[name]) { + self.sockets[name] = []; + } + self.sockets[name].push(s); + debug('sockets', name, self.sockets[name].length); + + function onFree() { + self.emit('free', s, options); + } + s.on('free', onFree); + + function onClose(err) { + debug('CLIENT socket onClose'); + // This is the only place where sockets get removed from the Agent. + // If you want to remove a socket from the pool, just close it. + // All socket errors end in a close event anyway. + self.removeSocket(s, options); + + // [patch start] + self.emit('close'); + // [patch end] + } + s.on('close', onClose); + + // [patch start] + // start socket timeout handler + function onTimeout() { + debug('CLIENT socket onTimeout'); + s.destroy(); + // Remove it from freeSockets immediately to prevent new requests from being sent through this socket. + self.removeSocket(s, options); + self.emit('timeout'); + } + s.on('timeout', onTimeout); + // set the default timer + s.setTimeout(self.timeout); + // [patch end] + + function onRemove() { + // We need this function for cases like HTTP 'upgrade' + // (defined by WebSockets) where we need to remove a socket from the + // pool because it'll be locked up indefinitely + debug('CLIENT socket onRemove'); + self.removeSocket(s, options); + s.removeListener('close', onClose); + s.removeListener('free', onFree); + s.removeListener('agentRemove', onRemove); + + // [patch start] + // remove socket timeout handler + s.setTimeout(0, onTimeout); + // [patch end] + } + s.on('agentRemove', onRemove); + cb(null, s); + } +}; + +function calculateServerName(options, req) { + let servername = options.host; + const hostHeader = req.getHeader('host'); + if (hostHeader) { + // abc => abc + // abc:123 => abc + // [::1] => ::1 + // [::1]:123 => ::1 + if (hostHeader.startsWith('[')) { + const index = hostHeader.indexOf(']'); + if (index === -1) { + // Leading '[', but no ']'. Need to do something... + servername = hostHeader; + } else { + servername = hostHeader.substr(1, index - 1); + } + } else { + servername = hostHeader.split(':', 1)[0]; + } + } + return servername; +} + +Agent.prototype.removeSocket = function removeSocket(s, options) { + var name = this.getName(options); + debug('removeSocket', name, 'writable:', s.writable); + var sets = [this.sockets]; + + // If the socket was destroyed, remove it from the free buffers too. + if (!s.writable) + sets.push(this.freeSockets); + + for (var sk = 0; sk < sets.length; sk++) { + var sockets = sets[sk]; + + if (sockets[name]) { + var index = sockets[name].indexOf(s); + if (index !== -1) { + sockets[name].splice(index, 1); + // Don't leak + if (sockets[name].length === 0) + delete sockets[name]; + } + } + } + + // [patch start] + var freeLen = this.freeSockets[name] ? this.freeSockets[name].length : 0; + var sockLen = freeLen + (this.sockets[name] ? this.sockets[name].length : 0); + // [patch end] + + if (this.requests[name] && this.requests[name].length && sockLen < this.maxSockets) { + debug('removeSocket, have a request, make a socket'); + var req = this.requests[name][0]; + // If we have pending requests and a socket gets closed make a new one + this.createSocket(req, options, function(err, newSocket) { + if (err) { + process.nextTick(function() { + req.emit('error', err); + }); + return; + } + newSocket.emit('free'); + }); + } +}; + +Agent.prototype.destroy = function destroy() { + var sets = [this.freeSockets, this.sockets]; + for (var s = 0; s < sets.length; s++) { + var set = sets[s]; + var keys = Object.keys(set); + for (var v = 0; v < keys.length; v++) { + var setName = set[keys[v]]; + for (var n = 0; n < setName.length; n++) { + setName[n].destroy(); + } + } + } +}; + +exports.globalAgent = new Agent(); diff --git a/node_modules/agentkeepalive/lib/agent.js b/node_modules/agentkeepalive/lib/agent.js new file mode 100644 index 0000000..a51ad59 --- /dev/null +++ b/node_modules/agentkeepalive/lib/agent.js @@ -0,0 +1,133 @@ +/** + * refer: + * * @atimb "Real keep-alive HTTP agent": https://gist.github.com/2963672 + * * https://github.com/joyent/node/blob/master/lib/http.js + * * https://github.com/joyent/node/blob/master/lib/https.js + * * https://github.com/joyent/node/blob/master/lib/_http_agent.js + */ + +'use strict'; + +const OriginalAgent = require('./_http_agent').Agent; +const ms = require('humanize-ms'); + +class Agent extends OriginalAgent { + constructor(options) { + options = options || {}; + options.keepAlive = options.keepAlive !== false; + // default is keep-alive and 15s free socket timeout + if (options.freeSocketKeepAliveTimeout === undefined) { + options.freeSocketKeepAliveTimeout = 15000; + } + // Legacy API: keepAliveTimeout should be rename to `freeSocketKeepAliveTimeout` + if (options.keepAliveTimeout) { + options.freeSocketKeepAliveTimeout = options.keepAliveTimeout; + } + options.freeSocketKeepAliveTimeout = ms(options.freeSocketKeepAliveTimeout); + + // Sets the socket to timeout after timeout milliseconds of inactivity on the socket. + // By default is double free socket keepalive timeout. + if (options.timeout === undefined) { + options.timeout = options.freeSocketKeepAliveTimeout * 2; + // make sure socket default inactivity timeout >= 30s + if (options.timeout < 30000) { + options.timeout = 30000; + } + } + options.timeout = ms(options.timeout); + + super(options); + + this.createSocketCount = 0; + this.createSocketCountLastCheck = 0; + + this.createSocketErrorCount = 0; + this.createSocketErrorCountLastCheck = 0; + + this.closeSocketCount = 0; + this.closeSocketCountLastCheck = 0; + + // socket error event count + this.errorSocketCount = 0; + this.errorSocketCountLastCheck = 0; + + this.requestCount = 0; + this.requestCountLastCheck = 0; + + this.timeoutSocketCount = 0; + this.timeoutSocketCountLastCheck = 0; + + this.on('free', s => { + this.requestCount++; + // last enter free queue timestamp + s.lastFreeTime = Date.now(); + }); + this.on('timeout', () => { + this.timeoutSocketCount++; + }); + this.on('close', () => { + this.closeSocketCount++; + }); + this.on('error', () => { + this.errorSocketCount++; + }); + } + + createSocket(req, options, cb) { + super.createSocket(req, options, (err, socket) => { + if (err) { + this.createSocketErrorCount++; + return cb(err); + } + if (this.keepAlive) { + // Disable Nagle's algorithm: http://blog.caustik.com/2012/04/08/scaling-node-js-to-100k-concurrent-connections/ + // https://fengmk2.com/benchmark/nagle-algorithm-delayed-ack-mock.html + socket.setNoDelay(true); + } + this.createSocketCount++; + cb(null, socket); + }); + } + + get statusChanged() { + const changed = this.createSocketCount !== this.createSocketCountLastCheck || + this.createSocketErrorCount !== this.createSocketErrorCountLastCheck || + this.closeSocketCount !== this.closeSocketCountLastCheck || + this.errorSocketCount !== this.errorSocketCountLastCheck || + this.timeoutSocketCount !== this.timeoutSocketCountLastCheck || + this.requestCount !== this.requestCountLastCheck; + if (changed) { + this.createSocketCountLastCheck = this.createSocketCount; + this.createSocketErrorCountLastCheck = this.createSocketErrorCount; + this.closeSocketCountLastCheck = this.closeSocketCount; + this.errorSocketCountLastCheck = this.errorSocketCount; + this.timeoutSocketCountLastCheck = this.timeoutSocketCount; + this.requestCountLastCheck = this.requestCount; + } + return changed; + } + + getCurrentStatus() { + return { + createSocketCount: this.createSocketCount, + createSocketErrorCount: this.createSocketErrorCount, + closeSocketCount: this.closeSocketCount, + errorSocketCount: this.errorSocketCount, + timeoutSocketCount: this.timeoutSocketCount, + requestCount: this.requestCount, + freeSockets: inspect(this.freeSockets), + sockets: inspect(this.sockets), + requests: inspect(this.requests), + }; + } +} + +module.exports = Agent; + +function inspect(obj) { + const res = {}; + for (const key in obj) { + res[key] = obj[key].length; + } + return res; +} diff --git a/node_modules/agentkeepalive/lib/https_agent.js b/node_modules/agentkeepalive/lib/https_agent.js new file mode 100644 index 0000000..e6d58a3 --- /dev/null +++ b/node_modules/agentkeepalive/lib/https_agent.js @@ -0,0 +1,42 @@ +/** + * Https Agent base on custom http agent + */ + +'use strict'; + +const https = require('https'); +const HttpAgent = require('./agent'); +const OriginalHttpsAgent = https.Agent; + +class HttpsAgent extends HttpAgent { + constructor(options) { + super(options); + + this.defaultPort = 443; + this.protocol = 'https:'; + this.maxCachedSessions = this.options.maxCachedSessions; + if (this.maxCachedSessions === undefined) { + this.maxCachedSessions = 100; + } + + this._sessionCache = { + map: {}, + list: [], + }; + } +} + +[ + 'createConnection', + 'getName', + '_getSession', + '_cacheSession', + // https://github.com/nodejs/node/pull/4982 + '_evictSession', +].forEach(function(method) { + if (typeof OriginalHttpsAgent.prototype[method] === 'function') { + HttpsAgent.prototype[method] = OriginalHttpsAgent.prototype[method]; + } +}); + +module.exports = HttpsAgent; diff --git a/node_modules/agentkeepalive/package.json b/node_modules/agentkeepalive/package.json new file mode 100644 index 0000000..cc09d13 --- /dev/null +++ b/node_modules/agentkeepalive/package.json @@ -0,0 +1,50 @@ +{ + "name": "agentkeepalive", + "version": "3.5.3", + "description": "Missing keepalive http.Agent", + "main": "index.js", + "browser": "browser.js", + "files": [ + "index.js", + "index.d.ts", + "browser.js", + "lib" + ], + "scripts": { + "test": "egg-bin test", + "cov": "egg-bin cov", + "ci": "npm run lint && npm run cov", + "lint": "eslint lib test index.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/node-modules/agentkeepalive.git" + }, + "bugs": { + "url": "https://github.com/node-modules/agentkeepalive/issues" + }, + "keywords": [ + "http", + "https", + "agent", + "keepalive", + "agentkeepalive" + ], + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "devDependencies": { + "egg-bin": "^1.11.1", + "eslint": "^4.19.1", + "eslint-config-egg": "^6.0.0", + "pedding": "^1.1.0" + }, + "engines": { + "node": ">= 4.0.0" + }, + "publishConfig": { + "tag": "latest-3" + }, + "author": "fengmk2 <fengmk2@gmail.com> (https://fengmk2.com)", + "license": "MIT" +} diff --git a/node_modules/ali-oss/LICENSE b/node_modules/ali-oss/LICENSE new file mode 100644 index 0000000..2d81ba2 --- /dev/null +++ b/node_modules/ali-oss/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) ali-sdk and other contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/ali-oss/README.md b/node_modules/ali-oss/README.md new file mode 100644 index 0000000..096637b --- /dev/null +++ b/node_modules/ali-oss/README.md @@ -0,0 +1,4888 @@ +# oss-js-sdk + +[![NPM version][npm-image]][npm-url] +[![build status][travis-image]][travis-url] +[![coverage][cov-image]][cov-url] +[![David deps][david-image]][david-url] + +[npm-image]: https://img.shields.io/npm/v/ali-oss.svg?style=flat-square +[npm-url]: https://npmjs.org/package/ali-oss +[travis-image]: https://img.shields.io/travis/ali-sdk/ali-oss/master.svg?style=flat-square +[travis-url]: https://travis-ci.org/ali-sdk/ali-oss.svg?branch=master +[cov-image]: http://codecov.io/github/ali-sdk/ali-oss/coverage.svg?branch=master +[cov-url]: http://codecov.io/github/ali-sdk/ali-oss?branch=master +[david-image]: https://img.shields.io/david/ali-sdk/ali-oss.svg?style=flat-square +[david-url]: https://david-dm.org/ali-sdk/ali-oss + +aliyun OSS(Object Storage Service) js client for Node and Browser env. + +`NOTE`: For SDK `5.X` document, please go to [5.X README.md](https://github.com/ali-sdk/ali-oss/blob/5.x/README.md) + +## Install + +```bash +npm install ali-oss --save +``` + +## Compatibility + +### Node + +Node.js >= 8.0.0 required. You can use 4.x in Node.js < 8. + +### Browser + +- IE >= 10 & Edge +- Major versions of Chrome/Firefox/Safari +- Major versions of Android/iOS/WP + +`Note`: + +- For Lower browsers you can refer to [PostObject](https://help.aliyun.com/document_detail/31988.html), if you want to see more practices ,please refer to [Web Post](https://help.aliyun.com/document_detail/31923.html) + +### QA + +Please log in to the official website and contact technical support. + +## License + +[MIT](LICENSE) + +# OSS Usage + +OSS, Object Storage Service. Equal to well known Amazon [S3](http://aws.amazon.com/s3/). + +All operation use es7 async/await to implement. All api is async function. + +## Summary + +- [Node Usage](#node-usage) +- [Browser Usage](#browser-usage) +- [Data Regions](#data-regions) +- [Create Account](#create-account) +- [Create A Bucket Instance](#create-a-bucket-instance) + - [oss(options)](#ossoptions) +- [Bucket Operations](#bucket-operations) + + - Base + - [.listBuckets(query[, options])](#listbucketsquery-options) + - [.putBucket(name[, options])](#putbucketname-options) + - [.useBucket(name)](#usebucketname) + - [.deleteBucket(name[, options])](#deletebucketname-options) + - [.getBucketInfo(name)](#getbucketinfoname) + - [.getBucketStat(name)](#getbucketstatname) + - [.getBucketLocation(name)](#getbucketlocationname) + - ACL + - [.putBucketACL(name, acl[, options])](#putbucketaclname-acl-options) + - [.getBucketACL(name[, options])](#getbucketaclname-options) + - Logging + - [.putBucketLogging(name, prefix[, options])](#putbucketloggingname-prefix-options) + - [.getBucketLogging(name[, options])](#getbucketloggingname-options) + - [.deleteBucketLogging(name[, options])](#deletebucketloggingname-options) + - Website + - [.putBucketWebsite(name, config[, options])](#putbucketwebsitename-config-options) + - [.getBucketWebsite(name[, options])](#getbucketwebsitename-options) + - [.deleteBucketWebsite(name, region[, options])](#deletebucketwebsitename-options) + - Referer + - [.putBucketReferer(name, allowEmpty, referers[, options])](#putbucketreferername-allowempty-referers-options) + - [.getBucketReferer(name[, options])](#getbucketreferername-options) + - [.deleteBucketReferer(name[, options])](#deletebucketreferername-options) + - Lifecycle + - [.putBucketLifecycle(name, rules[, options])](#putbucketlifecyclename-rules-options) + - [.getBucketLifecycle(name[, options])](#getbucketlifecyclename-options) + - [.deleteBucketLifecycle(name[, options])](#deletebucketlifecyclename-options) + - CORS + - [.putBucketCORS(name, rules[, options])](#putbucketcorsname-rules-options) + - [.getBucketCORS(name[, options])](#getbucketcorsname-options) + - [.deleteBucketCORS(name[, options])](#deletebucketcorsname-options) + - RequestPayment + - [.getBucketRequestPayment(bucketName[, options])](#getbucketrequestpaymentbucketname-options) + - [.putBucketRequestPayment(bucketName, payer[, options])](#putBucketRequestpaymentbucketname-payer-options) + - BucketEncryption + - [.putBucketEncryption(name[, rules])](#putbucketencryptionname-rules) + - [.getBucketEncryption(name)](#getbucketencryptionname) + - [.deleteBucketEncryption(name)](#deletebucketencryptionname) + - tagging + - [.putBucketTags(name, tag[, options])](#putBucketTagsname-tag-options) + - [.getBucketTags(name, [, options])](#getBucketTagsname-options) + - [.deleteBucketTags(name, [, options])](#deleteBucketTagsname-options) + - policy + - [.putBucketPolicy(name, policy[, options])](#putBucketPolicyname-policy-options) + - [.getBucketPolicy(name, [, options])](#getBucketPolicyname-options) + - [.deleteBucketPolicy(name, [, options])](#deleteBucketPolicyname-options) + - versioning + - [.getBucketVersioning(name, [, options])](#getBucketVersioningname-options) + - [.putBucketVersioning(name, status[, options])](#putBucketVersioningname-status-options) + - inventory + - [.getBucketInventory(name, inventoryId[, options])](#getBucketInventoryname-inventoryid-options) + - [.putBucketInventory(name, inventory[, options])](#putBucketInventoryname-inventory-options) + - [.deleteBucketInventory(name, inventoryId[, options])](#deleteBucketInventoryname-inventoryid-options) + - [.listBucketInventory(name, [, options])](#listBucketInventoryname-options) + - worm + - [.abortBucketWorm(name[, options])](#abortBucketWormname-options) + - [.completeBucketWorm(name, wormId[, options])](#completeBucketWormname-wormId-options) + - [.extendBucketWorm(name, wormId, days[, options])](#extendBucketWormname-wormId-days-options) + - [.getBucketWorm(name[, options])](#getBucketWormname-options) + - [.initiateBucketWorm(name, days[, options])](#initiateBucketWormname-days-options) + +- [Object Operations](#object-operations) + - [.list(query[, options])](#listquery-options) + - [.listV2(query[, options])](#listV2query-options) + - [.getBucketVersions(query[, options])](#getBucketVersionsquery-options) + - [.put(name, file[, options])](#putname-file-options) + - [.putStream(name, stream[, options])](#putstreamname-stream-options) + - [.append(name, file[, options])](#appendname-file-options) + - [.getObjectUrl(name[, baseUrl])](#getobjecturlname-baseurl) + - [.generateObjectUrl(name[, baseUrl])](#generateobjecturlname-baseurl) + - [.head(name[, options])](#headname-options) + - [.getObjectMeta(name[, options])](#getobjectmetaname-options) + - [.get(name[, file, options])](#getname-file-options) + - [.getStream(name[, options])](#getstreamname-options) + - [.delete(name[, options])](#deletename-options) + - [.copy(name, sourceName[, sourceBucket, options])](#copyname-sourcename-sourcebucket-options) + - [.putMeta(name, meta[, options])](#putmetaname-meta-options) + - [.deleteMulti(names[, options])](#deletemultinames-options) + - [.signatureUrl(name[, options, strictObjectNameValidation])](#signatureurlname-options-strictobjectnamevalidation) + - [.asyncSignatureUrl(name[, options, strictObjectNameValidation])](#asyncsignatureurlname-options-strictobjectnamevalidation) + - [.signatureUrlV4(method, expires[, request, objectName, additionalHeaders])](#signatureurlv4method-expires-request-objectname-additionalheaders) + - [.putACL(name, acl[, options])](#putaclname-acl-options) + - [.getACL(name[, options])](#getaclname-options) + - [.restore(name[, options])](#restorename-options) + - [.putSymlink(name, targetName[, options])](#putsymlinkname-targetname-options) + - [.getSymlink(name[, options])](#getsymlinkname-options) + - [.initMultipartUpload(name[, options])](#initmultipartuploadname-options) + - [.uploadPart(name, uploadId, partNo, file, start, end[, options])](#uploadpartname-uploadid-partno-file-start-end-options) + - [.uploadPartCopy(name, uploadId, partNo, range, sourceData[, options])](#uploadpartcopyname-uploadid-partno-range-sourcedata-options) + - [.completeMultipartUpload(name, uploadId, parts[, options])](#completemultipartuploadname-uploadid-parts-options) + - [.multipartUpload(name, file[, options])](#multipartuploadname-file-options) + - [.multipartUploadCopy(name, sourceData[, options])](#multipartuploadcopyname-sourcedata-options) + - [.listParts(name, uploadId[, query, options])](#listpartsname-uploadid-query-options) + - [.listUploads(query[, options])](#listuploadsquery-options) + - [.abortMultipartUpload(name, uploadId[, options])](#abortmultipartuploadname-uploadid-options) + - [.calculatePostSignature(policy)](#calculatePostSignaturepolicy) + - [.signPostObjectPolicyV4(policy, date)](#signpostobjectpolicyv4policy-date) + - [.getObjectTagging(name, [, options])](#getObjectTaggingname-options) + - [.putObjectTagging(name, tag[, options])](#putObjectTaggingname-tag-options) + - [.deleteObjectTagging(name, [, options])](#deleteObjectTaggingname-options) +- [RTMP Operations](#rtmp-operations) + - [.putChannel(id, conf[, options])](#putchannelid-conf-options) + - [.getChannel(id[, options])](#getchannelid-options) + - [.deleteChannel(id[, options])](#deletechannelid-options) + - [.putChannelStatus(id, status[, options])](#putchannelstatusid-status-options) + - [.getChannelStatus(id[, options])](#getchannelstatusid-options) + - [.listChannels(query[, options])](#listchannelsquery-options) + - [.getChannelHistory(id[, options])](#getchannelhistoryid-options) + - [.createVod(id, name, time[, options])](#createvodid-name-time-options) + - [.getRtmpUrl(channelId[, options])](#getrtmpurlchannelid-options) +- [Create A Image Service Instance](#create-a-image-service-instance) + - [oss.ImageClient(options)](#ossimageclientoptions) +- [Image Operations](#image-operations) + - [imgClient.get(name, file[, options])](#imgclientgetname-file-options) + - [imgClient.getStream(name[, options])](#imgclientgetstreamname-options) + - [imgClient.getExif(name[, options])](#imgclientgetexifname-options) + - [imgClient.getInfo(name[, options])](#imgclientgetinfoname-options) + - [imgClient.putStyle(name, style[, options])](#imgclientputstylename-style-options) + - [imgClient.getStyle(name[, options])](#imgclientgetstylename-options) + - [imgClient.listStyle([options])](#imgclientliststyleoptions) + - [imgClient.deleteStyle(name[, options])](#imgclientdeletestylename-options) + - [imgClient.signatureUrl(name)](#imgclientsignatureurlname) +- [Known Errors](#known-errors) + +## Node Usage + +### Compatibility + +- Node: >= 8.0.0 + +### Basic usage + +1.install SDK using npm + +``` +npm install ali-oss --save +``` + +2.for example: + +```js +const OSS = require('ali-oss'); +const store = new OSS({ + region: '<oss region>', + accessKeyId: '<Your accessKeyId>', + accessKeySecret: '<Your accessKeySecret>', + bucket: '<Your bucket name>' +}); +``` + +## Browser Usage + +You can use most of the functionalities of `ali-oss` in browser with +some exceptions: + +- put object with streaming: no chunked encoding, we use multipart + upload instead +- get object to local file: we cannot manipulate file system in + browser, we provide signed object url for downloading needs +- bucket operations(listBuckets, putBucketLogging, etc) will fail: OSS + server currently do not support CORS requests for bucket operations + (will probably be fixed later) + +### Compatibility + +- IE >= 10 & Edge +- Major versions of Chrome/Firefox/Safari +- Major versions of Android/iOS/WP + > Note: Because some browsers do not support promises, you need to introduce promise compatible libraries.<br> + > For example: IE10 and IE11 need to introduce a promise-polyfill. + +### Setup + +#### Bucket setup + +As browser-side javascript involves CORS operations. You need to setup +your bucket CORS rules to allow CORS operations: + +- set allowed origins to '\*' +- allowed methods to 'PUT, GET, POST, DELETE, HEAD' +- set allowed headers to '\*' +- expose 'ETag' in expose headers + +#### STS setup + +As we don't want to expose the accessKeyId/accessKeySecret in the +browser, a [common practice][oss-sts] is to use STS to grant temporary +access. + +### Basic usage + +Include the sdk lib in the `<script>` tag and you have `OSS` available +for creating client. + +```html +// x.x.x The specific version number represented // we recommend introducing offline resources, because the usability of +online resources depends on the stability of the cdn server. +<!-- Introducing online resources --> +<script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-x.x.x.min.js"></script> +<!-- Introducing offline resources --> +<script src="./aliyun-oss-sdk-x.x.x.min.js"></script> + +<script type="text/javascript"> + const store = new OSS({ + region: 'oss-cn-hangzhou', + accessKeyId: '<access-key-id>', + accessKeySecret: '<access-key-secret>', + bucket: '<bucket-name>', + stsToken: '<security-token>' + }); + + store + .list() + .then(result => { + console.log('objects: %j', result.objects); + return store.put('my-obj', new OSS.Buffer('hello world')); + }) + .then(result => { + console.log('put result: %j', result); + return store.get('my-obj'); + }) + .then(result => { + console.log('get result: %j', result.content.toString()); + }); +</script> +``` + +The full sample can be found [here][browser-sample]. + +### How to build + +```bash +npm run build-dist +``` + +And see the build artifacts under `dist/`. + +## Data Regions + +[OSS current data regions](https://help.aliyun.com/document_detail/31837.html). + +| region | country | city | endpoint | internal endpoint | +| ------------------ | --------- | -------------- | ------------------------------- | ---------------------------------------- | +| oss-cn-hangzhou | China | HangZhou | oss-cn-hangzhou.aliyuncs.com | oss-cn-hangzhou-internal.aliyuncs.com | +| oss-cn-shanghai | China | ShangHai | oss-cn-shanghai.aliyuncs.com | oss-cn-shanghai-internal.aliyuncs.com | +| oss-cn-qingdao | China | QingDao | oss-cn-qingdao.aliyuncs.com | oss-cn-qingdao-internal.aliyuncs.com | +| oss-cn-beijing | China | BeiJing | oss-cn-beijing.aliyuncs.com | oss-cn-beijing-internal.aliyuncs.com | +| oss-cn-shenzhen | China | ShenZhen | oss-cn-shenzhen.aliyuncs.com | oss-cn-shenzhen-internal.aliyuncs.com | +| oss-cn-hongkong | China | HongKong | oss-cn-hongkong.aliyuncs.com | oss-cn-hongkong-internal.aliyuncs.com | +| oss-us-west-1 | US | Silicon Valley | oss-us-west-1.aliyuncs.com | oss-us-west-1-internal.aliyuncs.com | +| oss-ap-southeast-1 | Singapore | Singapore | oss-ap-southeast-1.aliyuncs.com | oss-ap-southeast-1-internal.aliyuncs.com | + +## Create Account + +Go to [OSS website](http://www.aliyun.com/product/oss/?lang=en), create a new account for new user. + +After account created, you can create the OSS instance and get the `accessKeyId` and `accessKeySecret`. + +## Create A Bucket Instance + +Each OSS instance required `accessKeyId`, `accessKeySecret` and `bucket`. + +## oss(options) + +Create a Bucket store instance. + +options: + +- accessKeyId {String} access key you create on aliyun console website +- accessKeySecret {String} access secret you create +- [stsToken] {String} used by temporary authorization, detail [see](https://www.alibabacloud.com/help/doc-detail/32077.htm) +- [refreshSTSToken] {Function} used by auto set `stsToken`、`accessKeyId`、`accessKeySecret` when sts info expires. return value must be object contains `stsToken`、`accessKeyId`、`accessKeySecret` +- [refreshSTSTokenInterval] {number} use time (ms) of refresh STSToken interval it should be less than sts info expire interval, default is 300000ms(5min) +- [bucket] {String} the default bucket you want to access + If you don't have any bucket, please use `putBucket()` create one first. +- [endpoint] {String} oss region domain. It takes priority over `region`. Set as extranet domain name, intranet domain name, accelerated domain name, etc. according to different needs. please see [endpoints](https://www.alibabacloud.com/help/doc-detail/31837.htm) +- [region] {String} the bucket data region location, please see [Data Regions](#data-regions), + default is `oss-cn-hangzhou`. +- [internal] {Boolean} access OSS with aliyun internal network or not, default is `false`. + If your servers are running on aliyun too, you can set `true` to save a lot of money. +- [secure] {Boolean} instruct OSS client to use HTTPS (secure: true) or HTTP (secure: false) protocol. +- [timeout] {String|Number} instance level timeout for all operations, default is `60s`. +- [cname] {Boolean}, default false, access oss with custom domain name. if true, you can fill `endpoint` field with your custom domain name, +- [isRequestPay] {Boolean}, default false, whether request payer function of the bucket is open, if true, will send headers `'x-oss-request-payer': 'requester'` to oss server. + the details you can see [requestPay](https://help.aliyun.com/document_detail/91337.htm) +- [useFetch] {Boolean}, default false, it just work in Browser, if true,it means upload object with + `fetch` mode ,else `XMLHttpRequest` +- [enableProxy] {Boolean}, Enable proxy request, default is false. **_NOTE:_** When enabling proxy request, please ensure that proxy-agent is installed. +- [proxy] {String | Object}, proxy agent uri or options, default is null. +- [retryMax] {Number}, used by auto retry send request count when request error is net error or timeout. **_NOTE:_** Not support `put` with stream, `putStream`, `append` with stream because the stream can only be consumed once +- [maxSockets] {Number} Maximum number of sockets to allow per host. Default is infinity +- [authorizationV4] {Boolean} Use V4 signature. Default is false. +- [cloudBoxId] {String} the CloudBox ID you want to access. When configuring this option, please set the endpoint option to the CloudBox endpoint and set the authorizationV4 option to true. + +example: + +1. basic usage + +```js +const OSS = require('ali-oss'); + +const store = new OSS({ + accessKeyId: 'your access key', + accessKeySecret: 'your access secret', + bucket: 'your bucket name', + region: 'oss-cn-hangzhou' +}); +``` + +2. use accelerate endpoint + +- Global accelerate endpoint: oss-accelerate.aliyuncs.com +- Accelerate endpoint of regions outside mainland China: oss-accelerate-overseas.aliyuncs.com + +```js +const OSS = require('ali-oss'); + +const store = new OSS({ + accessKeyId: 'your access key', + accessKeySecret: 'your access secret', + bucket: 'your bucket name', + endpoint: 'oss-accelerate.aliyuncs.com' +}); +``` + +3. use custom domain + +```js +const OSS = require('ali-oss'); + +const store = new OSS({ + accessKeyId: 'your access key', + accessKeySecret: 'your access secret', + cname: true, + endpoint: 'your custome domain' +}); +``` + +4. use STS and refreshSTSToken + +```js +const OSS = require('ali-oss'); + +const store = new OSS({ + accessKeyId: 'your STS key', + accessKeySecret: 'your STS secret', + stsToken: 'your STS token', + refreshSTSToken: async () => { + const info = await fetch('you sts server'); + return { + accessKeyId: info.accessKeyId, + accessKeySecret: info.accessKeySecret, + stsToken: info.stsToken + }; + }, + refreshSTSTokenInterval: 300000 +}); +``` + +5. retry request with stream + +```js +for (let i = 0; i <= store.options.retryMax; i++) { + try { + const result = await store.putStream('<example-object>', fs.createReadStream('<example-path>')); + console.log(result); + break; // break if success + } catch (e) { + console.log(e); + } +} +``` + +6. use V4 signature, and use optional additionalHeaders option which type is a string array, and the values inside need to be included in the header. + +```js +const OSS = require('ali-oss'); + +const store = new OSS({ + accessKeyId: 'your access key', + accessKeySecret: 'your access secret', + bucket: 'your bucket name', + region: 'oss-cn-hangzhou', + authorizationV4: true +}); + +try { + const bucketInfo = await store.getBucketInfo('your bucket name'); + console.log(bucketInfo); +} catch (e) { + console.log(e); +} + +try { + const putObjectResult = await store.put('your bucket name', 'your object name', { + headers: { + // The headers of this request + header1: 'value1', + header2: 'value2' + }, + // The keys of the request headers that need to be calculated into the V4 signature. Please ensure that these additional headers are included in the request headers. + additionalHeaders: ['additional header1', 'additional header2'] + }); + console.log(putObjectResult); +} catch (e) { + console.log(e); +} +``` + +## Bucket Operations + +### .listBuckets(query[, options]) + +List buckets in this account. + +parameters: + +- [query] {Object} query parameters, default is `null` + - [prefix] {String} search buckets using `prefix` key + - [marker] {String} search start from `marker`, including `marker` key + - [max-keys] {String|Number} max buckets, default is `100`, limit to `1000` +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return buckets list on `buckets` properties. + +- buckets {Array<BucketMeta>} bucket meta info list + Each `BucketMeta` will contains blow properties: + - name {String} bucket name + - region {String} bucket store data region, e.g.: `oss-cn-hangzhou-a` + - creationDate {String} bucket create GMT date, e.g.: `2015-02-19T08:39:44.000Z` + - storageClass {String} e.g.: `Standard`, `IA`, `Archive` +- owner {Object} object owner, including `id` and `displayName` +- isTruncated {Boolean} truncate or not +- nextMarker {String} next marker string +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- List top 10 buckets + +```js +store + .listBuckets({ + 'max-keys': 10 + }) + .then(result => { + console.log(result); + }); +``` + +### .putBucket(name[, options]) + +Create a new bucket. + +parameters: + +- name {String} bucket name + If bucket exists and not belong to current account, will throw BucketAlreadyExistsError. + If bucket not exists, will create a new bucket and set it's ACL. +- [options] {Object} optional parameters + - [acl] {String} include `private`,`public-read`,`public-read-write` + - [storageClass] {String} the storage type include (Standard,IA,Archive) + - [dataRedundancyType] {String} default `LRS`, include `LRS`,`ZRS` + - [timeout] {Number} the operation timeout + +Success will return the bucket name on `bucket` properties. + +- bucket {String} bucket name +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- Create a bucket name `helloworld` location on HongKong + +```js +store.putBucket('helloworld').then(result => { + // use it by default + store.useBucket('helloworld'); +}); +``` + +- Create a bucket name `helloworld` location on HongKong StorageClass `Archive` + +```js +await store.putBucket('helloworld', { StorageClass: 'Archive' }); +// use it by default +store.useBucket('helloworld'); +``` + +### .deleteBucket(name[, options]) + +Delete an empty bucket. + +parameters: + +- name {String} bucket name + If bucket is not empty, will throw BucketNotEmptyError. + If bucket is not exists, will throw NoSuchBucketError. +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- Delete the exists 'helloworld' bucket on 'oss-cn-hongkong' + +```js +store.deleteBucket('helloworld').then(result => {}); +``` + +### .useBucket(name) + +Use the bucket. + +parameters: + +- name {String} bucket name + +example: + +- Use `helloworld` as the default bucket + +```js +store.useBucket('helloworld'); +``` + +### .getBucketInfo(name) + +Get bucket information,include CreationDate、ExtranetEndpoint、IntranetEndpoint、Location、Name、StorageClass、 +Owner、AccessControlList、Versioning + +parameters: + +- name {String} bucket name + +example: + +- Use `helloworld` as the default bucket + +```js +store.getBucketInfo('helloworld').then(res => { + console.log(res.bucket); +}); +``` + +### .getBucketStat(name) + +Call the GetBucketStat interface to get the storage capacity of the specified storage space (Bucket) and the number of files (Object). + +Calling this interface requires the oss:GetBucketStat permission. +The data obtained by calling this interface is not real-time data and may be delayed for more than an hour. +The point in time of the stored information obtained by calling this interface is not guaranteed to be up-to-date, i.e. the LastModifiedTime field returned by a later call to this interface may be smaller than the LastModifiedTime field returned by a previous call to this interface. + +parameters: + +- name {String} bucket name + +Success will return: + +- stat {Object} container for the BucketStat structure: + + - Storage {String} the total storage capacity of the Bucket, in bytes. + - ObjectCount {String} total number of Objects in the Bucket。 + - MultipartUploadCount {String} the number of Multipart Uploads in the Bucket that have been initialized but not yet completed (Complete) or not yet aborted (Abort). + - LiveChannelCount {String} the number of Live Channels in the Bucket. + - LastModifiedTime {String} the point in time, in timestamps, when the storage information was retrieved. + - StandardStorage {String} the amount of storage of the standard storage type, in bytes. + - StandardObjectCount {String} the number of objects of the standard storage type. + - InfrequentAccessStorage {String} the amount of billed storage for the low-frequency storage type, in bytes. + - InfrequentAccessRealStorage {String} the actual storage amount of the low-frequency storage type, in bytes. + - InfrequentAccessObjectCount {String} the number of Objects of the low-frequency storage type. + - ArchiveStorage {String} the amount of billed storage for the archive storage type, in bytes. + - ArchiveRealStorage {String} the actual storage amount of the archive storage type, in bytes. + - ArchiveObjectCount {String} the number of objects of the archive storage type. + - ColdArchiveStorage {String} the amount of billed storage for the cold archive storage type, in bytes. + - ColdArchiveRealStorage {String} the actual storage amount in bytes for the cold archive storage type. + - ColdArchiveObjectCount {String} the number of objects of the cold archive storage type. + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- If you don't fill in the name, the default is the bucket defined during initialization. + +```js +store.getBucketStat().then(res => console.log(res)); +``` + +### .getBucketLocation(name) + +Get bucket location + +parameters: + +- name {String} bucket name + +example: + +- Use `helloworld` as the default bucket + +```js +store.getBucketLocation('helloworld').then(res => { + console.log(res.location); +}); +``` + +--- + +### .putBucketACL(name, acl[, options]) + +Update the bucket ACL. + +parameters: + +- name {String} bucket name +- acl {String} access control list, current available: `public-read-write`, `public-read` and `private` +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- Set bucket `helloworld` to `public-read-write` + +```js +store.putBucketACL('helloworld', 'public-read-write').then(result => {}); +``` + +### .getBucketACL(name[, options]) + +Get the bucket ACL. + +parameters: + +- name {String} bucket name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- acl {String} acl settiongs string +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- Get bucket `helloworld` + +```js +store.getBucketACL('helloworld').then(result => { + console.log(result.acl); +}); +``` + +--- + +### .putBucketLogging(name, prefix[, options]) + +Update the bucket logging settings. +Log file will create every one hour and name format: `<prefix><bucket>-YYYY-mm-DD-HH-MM-SS-UniqueString`. + +parameters: + +- name {String} bucket name +- [prefix] {String} prefix path name to store the log files +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- Enable bucket `helloworld` logging and save with prefix `logs/` + +```js +store.putBucketLogging('helloworld', 'logs/').then(result => {}); +``` + +### .getBucketLogging(name[, options]) + +Get the bucket logging settings. + +parameters: + +- name {String} bucket name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- enable {Boolean} enable logging or not +- prefix {String} prefix path name to store the log files, maybe `null` +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- Get bucket `helloworld` logging settings + +```js +store.getBucketLogging('helloworld').then(result => { + console.log(result.enable, result.prefix); +}); +``` + +### .deleteBucketLogging(name[, options]) + +Delete the bucket logging settings. + +parameters: + +- name {String} bucket name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +--- + +### .putBucketWebsite(name, config[, options]) + +Set the bucket as a static website. + +parameters: + +- name {String} bucket name +- config {Object} website config, contains blow properties: + - index {String} default page, e.g.: `index.html` + - [error] {String} error page, e.g.: 'error.html' + - [supportSubDir] {String} default vaule false + - [type] {String} default value 0 + - [routingRules] {Array} RoutingRules +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +```js +store + .putBucketWebsite('hello', { + index: 'index.html' + }) + .then(result => {}); +``` + +### .getBucketWebsite(name[, options]) + +Get the bucket website config. + +parameters: + +- name {String} bucket name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- index {String} index page +- error {String} error page, maybe `null` +- supportSubDir {String} +- type {String} +- routingRules {Array} +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +### .deleteBucketWebsite(name[, options]) + +Delete the bucket website config. + +parameters: + +- name {String} bucket name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +--- + +### .putBucketReferer(name, allowEmpty, referers[, options]) + +Set the bucket request `Referer` white list. + +parameters: + +- name {String} bucket name +- allowEmpty {Boolean} allow empty request referer or not +- referers {Array<String>} `Referer` white list, e.g.: + ```js + ['https://npm.taobao.org', 'http://cnpmjs.org']; + ``` +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +```js +store.putBucketReferer('hello', false, ['https://npm.taobao.org', 'http://cnpmjs.org']).then(result => {}); +``` + +### .getBucketReferer(name[, options]) + +Get the bucket request `Referer` white list. + +parameters: + +- name {String} bucket name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- allowEmpty {Boolean} allow empty request referer or not +- referers {Array<String>} `Referer` white list +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +### .deleteBucketReferer(name[, options]) + +Delete the bucket request `Referer` white list. + +parameters: + +- name {String} bucket name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +--- + +### .putBucketLifecycle(name, rules[, options]) + +Set the bucket object lifecycle. + +parameters: + +- name {String} bucket name +- rules {Array<Rule>} rule config list, each `Rule` will contains blow properties: + - [id] {String} rule id, if not set, OSS will auto create it with random string. + - prefix {String} store prefix + - status {String} rule status, allow values: `Enabled` or `Disabled` + - [expiration] {Object} specifies the expiration attribute of the lifecycle rules for the object. + - [days] {Number|String} expire after the `days` + - [createdBeforeDate] {String} expire date, e.g.: `2022-10-11T00:00:00.000Z` + - [expiredObjectDeleteMarker] {String} value `true` + `createdBeforeDate` and `days` and `expiredObjectDeleteMarker` must have one. + - [abortMultipartUpload] {Object} Specifies the expiration attribute of the multipart upload tasks that are not complete. + - [days] {Number|String} expire after the `days` + - [createdBeforeDate] {String} expire date, e.g.: `2022-10-11T00:00:00.000Z` + `createdBeforeDate` and `days` must have one. + - [transition] {Object} Specifies the time when an object is converted to the IA or archive storage class during a valid life cycle. + - storageClass {String} Specifies the storage class that objects that conform to the rule are converted into. allow values: `IA` or `Archive` or `ColdArchive` or `DeepColdArchive` + - [days] {Number|String} expire after the `days` + - [createdBeforeDate] {String} expire date, e.g.: `2022-10-11T00:00:00.000Z` + `createdBeforeDate` and `days` must have one. + - [noncurrentVersionTransition] {Object} Specifies the time when an object is converted to the IA or archive storage class during a valid life cycle. + - storageClass {String} Specifies the storage class that history objects that conform to the rule are converted into. allow values: `IA` or `Archive` or `ColdArchive` or `DeepColdArchive` + - noncurrentDays {String} expire after the `noncurrentDays` + `expiration`、 `abortMultipartUpload`、 `transition`、 `noncurrentVersionTransition` must have one. + - [noncurrentVersionExpiration] {Object} specifies the expiration attribute of the lifecycle rules for the history object. + - noncurrentDays {String} expire after the `noncurrentDays` + - [tag] {Object} Specifies the object tag applicable to a rule. Multiple tags are supported. + - key {String} Indicates the tag key. + - value {String} Indicates the tag value. + `tag` cannot be used with `abortMultipartUpload` +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +```js +store + .putBucketLifecycle('hello', [ + { + id: 'delete after one day', + prefix: 'logs/', + status: 'Enabled', + days: 1 + }, + { + prefix: 'logs2/', + status: 'Disabled', + date: '2022-10-11T00:00:00.000Z' + } + ]) + .then(result => {}); +``` + +example: for history with noncurrentVersionExpiration + +```js +const result = await store.putBucketLifecycle(bucket, [ + { + id: 'expiration1', + prefix: 'logs/', + status: 'Enabled', + expiration: { + days: '1' + }, + noncurrentVersionExpiration: { + noncurrentDays: '1' + } + } +]); +console.log(result); +``` + +example: for history with expiredObjectDeleteMarker + +```js +const result = await store.putBucketLifecycle(bucket, [ + { + id: 'expiration1', + prefix: 'logs/', + status: 'Enabled', + expiration: { + expiredObjectDeleteMarker: 'true' + }, + noncurrentVersionExpiration: { + noncurrentDays: '1' + } + } +]); +console.log(result); +``` + +example: for history with noncurrentVersionTransition + +```js +const result = await store.putBucketLifecycle(bucket, [ + { + id: 'expiration1', + prefix: 'logs/', + status: 'Enabled', + noncurrentVersionTransition: { + noncurrentDays: '10', + storageClass: 'IA' + } + } +]); +console.log(result); +``` + +### .getBucketLifecycle(name[, options]) + +Get the bucket object lifecycle. + +parameters: + +- name {String} bucket name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- rules {Array<Rule>} the lifecycle rule list +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +### .deleteBucketLifecycle(name[, options]) + +Delete the bucket object lifecycle. + +parameters: + +- name {String} bucket name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +--- + +### .putBucketCORS(name, rules[, options]) + +Set CORS rules of the bucket object + +parameters: + +- name {String} bucket name +- rules {Array<Rule>} rule config list, each `Rule` will contains below properties: + - allowedOrigin {String/Array} configure for Access-Control-Allow-Origin header + - allowedMethod {String/Array} configure for Access-Control-Allow-Methods header + - [allowedHeader] {String/Array} configure for Access-Control-Allow-Headers header + - [exposeHeader] {String/Array} configure for Access-Control-Expose-Headers header + - [maxAgeSeconds] {String} configure for Access-Control-Max-Age header +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +```js +store + .putBucketCORS('hello', [ + { + allowedOrigin: '*', + allowedMethod: ['GET', 'HEAD'] + } + ]) + .then(result => {}); +``` + +### .getBucketCORS(name[, options]) + +Get CORS rules of the bucket object. + +parameters: + +- name {String} bucket name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- rules {Array<Rule>} the CORS rule list +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +### .deleteBucketCORS(name[, options]) + +Delete CORS rules of the bucket object. + +parameters: + +- name {String} bucket name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +### .getBucketRequestPayment(bucketName[, options]) + +get RequestPayment value of the bucket object. + +parameters: + +- bucketName {String} bucket name +- [options] {Object} optional parameters + +Success will return: + +- status {Number} response status +- payer {String} payer, BucketOwner or Requester +- res {Object} response info, including + - data {Buffer} xml + +--- + +### .putBucketRequestPayment(bucketName, payer[, options]) + +put RequestPayment value of the bucket object. + +parameters: + +- bucketName {String} +- payer {String} payer +- [options] {Object} optional parameters + +Success will return: + +- status {Number} response status +- res {Object} response info + +--- + +### .putBucketEncryption(name, rules) + +put BucketEncryption value of the bucket object. + +parameters: + +- name {String} bucket name +- [rules] {Object} parameters + - SSEAlgorithm {String} encryption type, expect AES256 or KMS + - {KMSMasterKeyID} {String} needed when encryption type is KMS + +Success will return: + +- status {Number} response status +- res {Object} response info + +--- + +### .getBucketEncryption(name) + +get BucketEncryption rule value of the bucket object. + +parameters: + +- name {String} bucket name + +Success will return: + +- status {Number} response status +- res {Object} response info +- encryption {Object} rules + - SSEAlgorithm {String} encryption type, AES256 or KMS + - {KMSMasterKeyID} {String} will be return when encryption type is KMS + +--- + +### .deleteBucketEncryption(name) + +delete BucketEncryption rule value of the bucket object. + +parameters: + +- name {String} bucket name + +Success will return: + +- status {Number} response status +- res {Object} response info + +--- + +### .putBucketTags(name, tag[, options]) + +Adds tags for a bucket or modify the tags for a bucket. + +parameters: + +- name {String} the object name +- tag {Object} tag, eg. `{var1: value1,var2:value2}` +- [options] {Object} optional args + +Success will return: + +- status {Number} response status +- res {Object} response info + +--- + +### .getBucketTags(name[, options]) + +Obtains the tags for a bucket. + +parameters: + +- name {String} the object name +- [options] {Object} optional args + +Success will return: + +- tag {Object} the tag of object +- res {Object} response info + +--- + +### .deleteBucketTags(name[, options]) + +Deletes the tags added for a bucket. + +parameters: + +- name {String} the object name +- [options] {Object} optional args + +Success will return: + +- status {Number} response status +- res {Object} response info + +--- + +### .putBucketPolicy(name, policy[, options]) + +Adds or modify policy for a bucket. + +parameters: + +- name {String} the bucket name +- policy {Object} bucket policy +- [options] {Object} optional args + +Success will return: + +- status {Number} response status +- res {Object} response info + +example: + +```js +const policy = { + Version: '1', + Statement: [ + { + Action: ['oss:PutObject', 'oss:GetObject'], + Effect: 'Deny', + Principal: ['1234567890'], + Resource: ['acs:oss:*:1234567890:*/*'] + } + ] +}; +const result = await store.putBucketPolicy(bucket, policy); +console.log(result); +``` + +--- + +### .getBucketPolicy(name[, options]) + +Obtains the policy for a bucket. + +parameters: + +- name {String} the bucket name +- [options] {Object} optional args + +Success will return: + +- policy {Object} the policy of bucket, if not exist, the value is null +- res {Object} response info +- status {Number} response status + +--- + +### .deleteBucketPolicy(name[, options]) + +Deletes the policy added for a bucket. + +parameters: + +- name {String} the bucket name +- [options] {Object} optional args + +Success will return: + +- status {Number} response status +- res {Object} response info + +--- + +### .getBucketVersioning(name[, options]) + +Obtains the version status of an object + +parameters: + +- name {String} the bucket name +- [options] {Object} optional args + +Success will return: + +- status {Number} response status +- versionStatus {String | undefined} version status, `Suspended` or `Enabled`. default value: `undefined` +- res {Object} response info + +--- + +### .putBucketVersioning(name, status[, options]) + +set the version status of an object + +parameters: + +- name {String} the bucket name +- status {String} version status, allow values: `Enabled` or `Suspended` +- [options] {Object} optional args + +Success will return: + +- status {Number} response status +- res {Object} response info + +--- + +### .getBucketInventory(name, inventoryId[, options]) + +get bucket inventory by inventory-id + +parameters: + +- name {String} the bucket name +- inventoryId {String} inventory-id +- [options] {Object} optional args + +Success will return: + +- inventory {Inventory} +- status {Number} response status +- res {Object} response info + +```js +async function getBucketInventoryById() { + try { + const result = await store.getBucketInventory('bucket', 'inventoryid'); + console.log(result.inventory); + } catch (err) { + console.log(err); + } +} + +getBucketInventoryById(); +``` + +### putBucketInventory(name, inventory[, options]) + +set bucket inventory + +parameters: + +- name {String} the bucket name +- inventory {Inventory} inventory config +- [options] {Object} optional args + +Success will return: + +- status {Number} response status +- res {Object} response info + +```ts +type Field = + 'Size | LastModifiedDate | ETag | StorageClass | IsMultipartUploaded | EncryptionStatus | ObjectAcl | TaggingCount | ObjectType | Crc64'; +interface Inventory { + id: string; + isEnabled: true | false; + prefix?: string; + OSSBucketDestination: { + format: 'CSV'; + accountId: string; + rolename: string; + bucket: string; + prefix?: string; + encryption?: + | { 'SSE-OSS': '' } + | { + 'SSE-KMS': { + keyId: string; + }; + }; + }; + frequency: 'Daily' | 'Weekly'; + includedObjectVersions: 'Current' | 'All'; + optionalFields?: { + field?: Field[]; + }; +} +``` + +```js +const inventory = { + id: 'default', + isEnabled: false, // `true` | `false` + prefix: 'ttt', // filter prefix + OSSBucketDestination: { + format: 'CSV', + accountId: '1817184078010220', + rolename: 'AliyunOSSRole', + bucket: 'your bucket', + prefix: 'test' + //encryption: {'SSE-OSS': ''}, + /* + encryption: { + 'SSE-KMS': { + keyId: 'test-kms-id'; + };, + */ + }, + frequency: 'Daily', // `WEEKLY` | `Daily` + includedObjectVersions: 'All', // `All` | `Current` + optionalFields: { + field: [ + 'Size', + 'LastModifiedDate', + 'ETag', + 'StorageClass', + 'IsMultipartUploaded', + 'EncryptionStatus', + 'ObjectAcl', + 'TaggingCount', + 'ObjectType', + 'Crc64' + ] + } +}; + +async function putInventory() { + const bucket = 'Your Bucket Name'; + try { + await store.putBucketInventory(bucket, inventory); + } catch (err) { + console.log(err); + } +} + +putInventory(); +``` + +### deleteBucketInventory(name, inventoryId[, options]) + +delete bucket inventory by inventory-id + +parameters: + +- name {String} the bucket name +- inventoryId {String} inventory-id +- [options] {Object} optional args + +Success will return: + +- status {Number} response status +- res {Object} response info + +### listBucketInventory(name[, options]) + +list bucket inventory + +parameters: + +- name {String} the bucket name +- [options] {Object} optional args + - continuationToken used by search next page + +Success will return: + +- status {Number} response status +- res {Object} response info + +example: + +```js +async function listBucketInventory() { + const bucket = 'Your Bucket Name'; + let nextContinuationToken; + // list all inventory of the bucket + do { + const result = await store.listBucketInventory(bucket, nextContinuationToken); + console.log(result.inventoryList); + nextContinuationToken = result.nextContinuationToken; + } while (nextContinuationToken); +} + +listBucketInventory(); +``` + +### .abortBucketWorm(name[, options]) + +used to delete an unlocked retention policy. + +parameters: + +- name {String} the bucket name +- [options] {Object} optional args + +Success will return: + +- status {Number} response status +- res {Object} response info + +--- + +### .completeBucketWorm(name, wormId[, options]) + +used to lock a retention policy. + +parameters: + +- name {String} the bucket name +- wormId {String} worm id +- [options] {Object} optional args + +Success will return: + +- status {Number} response status +- res {Object} response info + +--- + +### .extendBucketWorm(name, wormId, days[, options]) + +used to extend the retention period of objects in a bucket whose retention policy is locked. + +parameters: + +- name {String} the bucket name +- wormId {String} worm id +- days {String | Number} retention days +- [options] {Object} optional args + +Success will return: + +- status {Number} response status +- res {Object} response info + +--- + +### .getBucketWorm(name[, options]) + +used to query the retention policy information of the specified bucket. + +parameters: + +- name {String} the bucket name +- [options] {Object} optional args + +Success will return: + +- wormId {String} worm id +- state {String} `Locked` or `InProgress` +- days {String} retention days +- creationDate {String} +- status {Number} response status +- res {Object} response info + +--- + +### .initiateBucketWorm(name, days[, options]) + +create a retention policy. + +parameters: + +- name {String} the bucket name +- days {String | Number}} set retention days +- [options] {Object} optional args + +Success will return: + +- wormId {String} worm id +- status {Number} response status +- res {Object} response info + +--- + +## Object Operations + +All operations function return Promise, except `signatureUrl`. + +### .put(name, file[, options]) + +Add an object to the bucket. + +parameters: + +- name {String} object name store on OSS +- file {String|Buffer|ReadStream|File(only support Browser)|Blob(only support Browser)} object local path, content buffer or ReadStream content instance use in Node, Blob and html5 File +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout (ms) + - [mime] {String} custom mime, will send with `Content-Type` entity header + - [meta] {Object} user meta, will send with `x-oss-meta-` prefix string + e.g.: `{ uid: 123, pid: 110 }` + - [callback] {Object} The callback parameter is composed of a JSON string encoded in Base64,detail [see](https://www.alibabacloud.com/help/doc-detail/31989.htm)<br> + - url {String} After a file is uploaded successfully, the OSS sends a callback request to this URL. + - [host] {String} The host header value for initiating callback requests. + - body {String} The value of the request body when a callback is initiated, for example, `key=${key}&etag=${etag}&my_var=${x:my_var}`. + - [contentType] {String} The Content-Type of the callback requests initiatiated, It supports application/x-www-form-urlencoded and application/json, and the former is the default value. + - [callbackSNI] {Boolean} Specifies whether OSS sends Server Name Indication (SNI) to the origin address specified by callbackUrl when a callback request is initiated from the client. + - [customValue] {Object} Custom parameters are a map of key-values<br> + e.g.: + ```js + var customValue = { var1: 'value1', var2: 'value2' }; + ``` + - [headers] {Object} extra headers + - 'Cache-Control' cache control for download, e.g.: `Cache-Control: public, no-cache` + - 'Content-Disposition' object name for download, e.g.: `Content-Disposition: somename` + - 'Content-Encoding' object content encoding for download, e.g.: `Content-Encoding: gzip` + - 'Expires' expires time for download, an absolute date and time. e.g.: `Tue, 08 Dec 2020 13:49:43 GMT` + - See more: [PutObject](https://help.aliyun.com/document_detail/31978.html#title-yxe-96d-x61) + - [disabledMD5] {Boolean} default true, it just work in Browser. if false,it means that MD5 is automatically calculated for uploaded files. **_NOTE:_** Synchronous computing tasks will block the main process + +Success will return the object information. + +object: + +- name {String} object name +- data {Object} callback server response data, sdk use JSON.parse() return +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- Add an object through local file path + +```js +const filepath = '/home/ossdemo/demo.txt'; +store.put('ossdemo/demo.txt', filepath).then((result) => { + console.log(result); +}); + +// { +// name: 'ossdemo/demo.txt', +// res: { +// status: 200, +// headers: { +// date: 'Tue, 17 Feb 2015 13:28:17 GMT', +// 'content-length': '0', +// connection: 'close', +// etag: '"BF7A03DA01440845BC5D487B369BC168"', +// server: 'AliyunOSS', +// 'x-oss-request-id': '54E341F1707AA0275E829244' +// }, +// size: 0, +// rt: 92 +// } +// } +``` + +- Add an object through content buffer + +```js +store.put('ossdemo/buffer', Buffer.from('foo content')).then((result) => { + console.log(result); +}); + +// { +// name: 'ossdemo/buffer', +// url: 'http://demo.oss-cn-hangzhou.aliyuncs.com/ossdemo/buffer', +// res: { +// status: 200, +// headers: { +// date: 'Tue, 17 Feb 2015 13:28:17 GMT', +// 'content-length': '0', +// connection: 'close', +// etag: '"xxx"', +// server: 'AliyunOSS', +// 'x-oss-request-id': '54E341F1707AA0275E829243' +// }, +// size: 0, +// rt: 92 +// } +// } +``` + +- Add an object through readstream + +```js +const filepath = '/home/ossdemo/demo.txt'; +store.put('ossdemo/readstream.txt', fs.createReadStream(filepath)).then((result) => { + console.log(result); +}); + +// { +// name: 'ossdemo/readstream.txt', +// url: 'http://demo.oss-cn-hangzhou.aliyuncs.com/ossdemo/readstream.txt', +// res: { +// status: 200, +// headers: { +// date: 'Tue, 17 Feb 2015 13:28:17 GMT', +// 'content-length': '0', +// connection: 'close', +// etag: '"BF7A03DA01440845BC5D487B369BC168"', +// server: 'AliyunOSS', +// 'x-oss-request-id': '54E341F1707AA0275E829242' +// }, +// size: 0, +// rt: 92 +// } +// } +``` + +### .putStream(name, stream[, options]) + +Add a stream object to the bucket. + +parameters: + +- name {String} object name store on OSS +- stream {ReadStream} object ReadStream content instance +- [options] {Object} optional parameters + - [contentLength] {Number} the stream length, `chunked encoding` will be used if absent + - [timeout] {Number} the operation timeout + - [mime] {String} custom mime, will send with `Content-Type` entity header + - [meta] {Object} user meta, will send with `x-oss-meta-` prefix string + e.g.: `{ uid: 123, pid: 110 }` + - [callback] {Object} The callback parameter is composed of a JSON string encoded in Base64,detail [see](https://www.alibabacloud.com/help/doc-detail/31989.htm)<br> + - url {String} After a file is uploaded successfully, the OSS sends a callback request to this URL. + - [host] {String} The host header value for initiating callback requests. + - body {String} The value of the request body when a callback is initiated, for example, key=${key}&etag=${etag}&my_var=${x:my_var}. + - [contentType] {String} The Content-Type of the callback requests initiatiated, It supports application/x-www-form-urlencoded and application/json, and the former is the default value. + - [callbackSNI] {Boolean} Specifies whether OSS sends Server Name Indication (SNI) to the origin address specified by callbackUrl when a callback request is initiated from the client. + - [customValue] {Object} Custom parameters are a map of key-values<br> + e.g.: + ```js + var customValue = { var1: 'value1', var2: 'value2' }; + ``` + - [headers] {Object} extra headers, detail see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html) + - 'Cache-Control' cache control for download, e.g.: `Cache-Control: public, no-cache` + - 'Content-Disposition' object name for download, e.g.: `Content-Disposition: somename` + - 'Content-Encoding' object content encoding for download, e.g.: `Content-Encoding: gzip` + - 'Expires' expires time for download, an absolute date and time. e.g.: `Tue, 08 Dec 2020 13:49:43 GMT` + +Success will return the object information. + +object: + +- name {String} object name +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- Add an object through readstream + +```js +const filepath = '/home/ossdemo/demo.txt'; +store.putStream('ossdemo/readstream.txt', fs.createReadStream(filepath)).then((result) => { + console.log(result); +}); + +// { +// name: 'ossdemo/readstream.txt', +// url: 'http://demo.oss-cn-hangzhou.aliyuncs.com/ossdemo/readstream.txt', +// res: { +// status: 200, +// headers: { +// date: 'Tue, 17 Feb 2015 13:28:17 GMT', +// 'content-length': '0', +// connection: 'close', +// etag: '"BF7A03DA01440845BC5D487B369BC168"', +// server: 'AliyunOSS', +// 'x-oss-request-id': '54E341F1707AA0275E829242' +// }, +// size: 0, +// rt: 92 +// } +// } +``` + +### .append(name, file[, options]) + +Append an object to the bucket, it's almost same as put, but it can add content to existing object rather than override it. + +All parameters are same as put except for options.position + +- name {String} object name store on OSS +- file {String|Buffer|ReadStream} object local path, content buffer or ReadStream content instance +- [options] {Object} optional parameters + - [position] {String} specify the position which is the content length of the latest object + - [timeout] {Number} the operation timeout + - [mime] {String} custom mime, will send with `Content-Type` entity header + - [meta] {Object} user meta, will send with `x-oss-meta-` prefix string + e.g.: `{ uid: 123, pid: 110 }` + - [headers] {Object} extra headers, detail see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html) + - 'Cache-Control' cache control for download, e.g.: `Cache-Control: public, no-cache` + - 'Content-Disposition' object name for download, e.g.: `Content-Disposition: somename` + - 'Content-Encoding' object content encoding for download, e.g.: `Content-Encoding: gzip` + - 'Expires' expires time for download, an absolute date and time. e.g.: `Tue, 08 Dec 2020 13:49:43 GMT` + +object: + +- name {String} object name +- url {String} the url of oss +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) +- nextAppendPosition {String} the next position(The browser needs to set cross domain and expose the x-oss-next-append-position header) + +example: + +```js +let object = await store.append('ossdemo/buffer', Buffer.from('foo')); + +// append content to the existing object +object = await store.append('ossdemo/buffer', Buffer.from('bar'), { + position: object.nextAppendPosition +}); +``` + +### .getObjectUrl(name[, baseUrl]) + +Get the Object url. +If provide `baseUrl`, will use `baseUrl` instead the default `endpoint`. + +e.g.: + +```js +const cdnUrl = store.getObjectUrl('foo/bar.jpg', 'https://mycdn.domian.com'); +// cdnUrl should be `https://mycdn.domian.com/foo/bar.jpg` +``` + +### .generateObjectUrl(name[, baseUrl]) + +Get the Object url. +If provide `baseUrl`, will use `baseUrl` instead the default `bucket and endpoint `. +Suggest use generateObjectUrl instead of getObjectUrl. + +e.g.: + +```js +const url = store.generateObjectUrl('foo/bar.jpg'); +// cdnUrl should be `https://${bucketname}.${endpotint}foo/bar.jpg` + +const cdnUrl = store.generateObjectUrl('foo/bar.jpg', 'https://mycdn.domian.com'); +// cdnUrl should be `https://mycdn.domian.com/foo/bar.jpg` +``` + +### .head(name[, options]) + +Head an object and get the meta info. + +parameters: + +- name {String} object name store on OSS +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + - [versionId] {String} the version id of history object + - [headers] {Object} extra headers, detail see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html) + - 'If-Modified-Since' object modified after this time will return 200 and object meta, + otherwise return 304 not modified + - 'If-Unmodified-Since' object modified before this time will return 200 and object meta, + otherwise throw PreconditionFailedError + - 'If-Match' object etag equal this will return 200 and object meta, + otherwise throw PreconditionFailedError + - 'If-None-Match' object etag not equal this will return 200 and object meta, + otherwise return 304 not modified + +Success will return the object's meta information. + +object: + +- status {Number} response status, maybe 200 or 304 +- meta {Object} object user meta, if not set on `put()`, will return null. + If return status 304, meta will be null too +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - [x-oss-version-id] return in multiversion + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- Head an exists object and get user meta + +```js +await this.store.put('ossdemo/head-meta', Buffer.from('foo'), { + meta: { + uid: 1, + path: 'foo/demo.txt' + } +}); +const object = await this.store.head('ossdemo/head-meta'); +console.log(object); + +// { +// status: 200, +// meta: { +// uid: '1', +// path: 'foo/demo.txt' +// }, +// res: { ... } +// } +``` + +- Head a not exists object + +```js +const object = await this.store.head('ossdemo/head-meta'); +// will throw NoSuchKeyError +``` + +### .getObjectMeta(name[, options]) + +Get an object meta info include ETag、Size、LastModified and so on, not return object content. + +parameters: + +- name {String} object name store on OSS +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + - [versionId] {String} the version id of history object + +Success will return the object's meta information. + +object: + +- status {Number} response status +- res {Object} response info, including + - headers {Object} response headers + +example: + +- Head an exists object and get object meta info + +```js +await this.store.put('ossdemo/object-meta', Buffer.from('foo')); +const object = await this.store.getObjectMeta('ossdemo/object-meta'); +console.log(object); + +// { +// status: 200, +// res: { ... } +// } +``` + +### .get(name[, file, options]) + +Get an object from the bucket. + +parameters: + +- name {String} object name store on OSS +- [file] {String|WriteStream|Object} file path or WriteStream instance to store the content + If `file` is null or ignore this parameter, function will return info contains `content` property. + If `file` is Object, it will be treated as options. +- [options] {Object} optional parameters + - [versionId] {String} the version id of history object + - [timeout] {Number} the operation timeout + - [process] {String} image process params, will send with `x-oss-process` + e.g.: `{process: 'image/resize,w_200'}` + - [responseCacheControl] {String} default `no-cache`, (only support Browser). response-cache-control, will response with HTTP Header `Cache-Control` + - [headers] {Object} extra headers, detail see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html) + - 'Range' get specifying range bytes content, e.g.: `Range: bytes=0-9` + - 'If-Modified-Since' object modified after this time will return 200 and object meta, + otherwise return 304 not modified + - 'If-Unmodified-Since' object modified before this time will return 200 and object meta, + otherwise throw PreconditionFailedError + - 'If-Match' object etag equal this will return 200 and object meta, + otherwise throw PreconditionFailedError + - 'If-None-Match' object etag not equal this will return 200 and object meta, + otherwise return 304 not modified + +Success will return the info contains response. + +object: + +- [content] {Buffer} file content buffer if `file` parameter is null or ignore +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +If object not exists, will throw NoSuchKeyError. + +example: + +- Get an exists object and store it to the local file + +```js +const filepath = '/home/ossdemo/demo.txt'; +await store.get('ossdemo/demo.txt', filepath); +``` + +\_ Store object to a writestream + +```js +await store.get('ossdemo/demo.txt', somestream); +``` + +- Get an object content buffer + +```js +const result = await store.get('ossdemo/demo.txt'); +console.log(Buffer.isBuffer(result.content)); +``` + +- Get a processed image and store it to the local file + +```js +const filepath = '/home/ossdemo/demo.png'; +await store.get('ossdemo/demo.png', filepath, { process: 'image/resize,w_200' }); +``` + +- Get a not exists object + +```js +const filepath = '/home/ossdemo/demo.txt'; +await store.get('ossdemo/not-exists-demo.txt', filepath); +// will throw NoSuchKeyError +``` + +- Get a historic version object + +```js +const filepath = '/home/ossdemo/demo.txt'; +const versionId = 'versionId string'; +await store.get('ossdemo/not-exists-demo.txt', filepath, { + versionId +}); +``` + +- If `file` is Object, it will be treated as options. + +```js +const versionId = 'versionId string'; +await store.get('ossdemo/not-exists-demo.txt', { versionId }); +``` + +### .getStream(name[, options]) + +Get an object read stream. + +parameters: + +- name {String} object name store on OSS +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + - [process] {String} image process params, will send with `x-oss-process` + - [headers] {Object} extra headers + - 'If-Modified-Since' object modified after this time will return 200 and object meta, + otherwise return 304 not modified + - 'If-Unmodified-Since' object modified before this time will return 200 and object meta, + otherwise throw PreconditionFailedError + - 'If-Match' object etag equal this will return 200 and object meta, + otherwise throw PreconditionFailedError + - 'If-None-Match' object etag not equal this will return 200 and object meta, + otherwise return 304 not modified + +Success will return the stream instance and response info. + +object: + +- stream {ReadStream} readable stream instance. If response status is not `200`, stream will be `null`. +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +If object not exists, will throw NoSuchKeyError. + +example: + +- Get an exists object stream + +```js +const result = await store.getStream('ossdemo/demo.txt'); +result.stream.pipe(fs.createWriteStream('some file.txt')); +``` + +### .delete(name[, options]) + +Delete an object from the bucket. + +parameters: + +- name {String} object name store on OSS +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + - [versionId] {String} the version id of history object + +Success will return the info contains response. + +object: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +If delete object not exists, will also delete success. + +example: + +- Delete an exists object + +```js +await store.delete('ossdemo/someobject'); +``` + +- Delete a not exists object + +```js +await store.delete('ossdemo/some-not-exists-object'); +``` + +- Delete a history object or deleteMarker + +```js +const versionId = 'versionId'; +await store.delete('ossdemo/some-not-exists-object', { versionId }); +``` + +### .copy(name, sourceName[, sourceBucket, options]) + +Copy an object from `sourceName` to `name`. + +parameters: + +- name {String} object name store on OSS +- sourceName {String} source object name +- [sourceBucket] {String} source Bucket. if doesn't exist,`sourceBucket` is same bucket. +- [options] {Object} optional parameters + - [versionId] {String} the version id of history object + - [timeout] {Number} the operation timeout + - [meta] {Object} user meta, will send with `x-oss-meta-` prefix string + e.g.: `{ uid: 123, pid: 110 }` + If the `meta` set, will override the source object meta. + - [headers] {Object} extra headers + - 'If-Match' do copy if source object etag equal this, + otherwise throw PreconditionFailedError + - 'If-None-Match' do copy if source object etag not equal this, + otherwise throw PreconditionFailedError + - 'If-Modified-Since' do copy if source object modified after this time, + otherwise throw PreconditionFailedError + - 'If-Unmodified-Since' do copy if source object modified before this time, + otherwise throw PreconditionFailedError + - See more: [CopyObject](https://help.aliyun.com/document_detail/31979.html?#title-tzy-vxc-ncx) + +Success will return the copy result in `data` property. + +object: + +- data {Object} copy result + - lastModified {String} object last modified GMT string + - etag {String} object etag contains `"`, e.g.: `"5B3C1A2E053D763E1B002CC607C5A0FE"` +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +If source object not exists, will throw NoSuchKeyError. + +example: + +- Copy same bucket object + +```js +store.copy('newName', 'oldName').then(result => { + console.log(result); +}); +``` + +- Copy other bucket object + +```js +store.copy('logo.png', 'logo.png', 'other-bucket').then(result => { + console.log(result); +}); +``` + +- Copy historic object + +```js +const versionId = 'your verisonId'; +store.copy('logo.png', 'logo.png', 'other-bucket', { versionId }).then(result => { + console.log(result); +}); +``` + +### .putMeta(name, meta[, options]) + +Set an exists object meta. + +parameters: + +- name {String} object name store on OSS +- meta {Object} user meta, will send with `x-oss-meta-` prefix string + e.g.: `{ uid: 123, pid: 110 }` + If `meta: null`, will clean up the exists meta +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return the putMeta result in `data` property. + +- data {Object} copy result + - lastModified {String} object last modified GMT date, e.g.: `2015-02-19T08:39:44.000Z` + - etag {String} object etag contains `"`, e.g.: `"5B3C1A2E053D763E1B002CC607C5A0FE"` +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +If object not exists, will throw NoSuchKeyError. + +example: + +- Update exists object meta + +```js +const result = await store.putMeta('ossdemo.txt', { + uid: 1, + pid: 'p123' +}); +console.log(result); +``` + +- Clean up object meta + +```js +await store.putMeta('ossdemo.txt', null); +``` + +### .deleteMulti(names[, options]) + +Delete multi objects in one request. + +parameters: + +- names {Array<Object>} object names, max 1000 objects in once. + - key {String} object name + - [versionId] {String} the version id of history object or deleteMarker +- [options] {Object} optional parameters + - [quiet] {Boolean} quiet mode or verbose mode, default is `false`, verbose mode + quiet mode: if all objects delete succes, return emtpy response. + otherwise return delete error object results. + verbose mode: return all object delete results. + - [timeout] {Number} the operation timeout + +Success will return delete success objects in `deleted` property. + +- [deleted] {Array<Object>} deleted object or deleteMarker info list + - [Key] {String} object name + - [VersionId] {String} object versionId + - [DeleteMarker] {String} generate or delete marker + - [DeleteMarkerVersionId] {String} marker versionId +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- Delete multi objects in quiet mode + +```js +const result = await store.deleteMulti(['obj1', 'obj2', 'obj3'], { + quiet: true +}); +``` + +- Delete multi objects in verbose mode + +```js +const result = await store.deleteMulti(['obj1', 'obj2', 'obj3']); +``` + +- Delete multi objects in multiversion + +```js +const obj1 = { + key: 'key1', + versionId: 'versionId1' +}; +const obj2 = { + key: 'key2', + versionId: 'versionId2' +}; +const result = await store.deleteMulti([obj1, obj2]); +``` + +### .list(query[, options]) + +List objects in the bucket. + +parameters: + +- [query] {Object} query parameters, default is `null` + - [prefix] {String} search object using `prefix` key + - [marker] {String} search start from `marker`, including `marker` key + - [delimiter] {String} delimiter search scope + e.g. `/` only search current dir, not including subdir + - [max-keys] {String|Number} max objects, default is `100`, limit to `1000` +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return objects list on `objects` properties. + +- objects {Array<ObjectMeta>} object meta info list + Each `ObjectMeta` will contains blow properties: + - name {String} object name on oss + - lastModified {String} object last modified GMT date, e.g.: `2015-02-19T08:39:44.000Z` + - etag {String} object etag contains `"`, e.g.: `"5B3C1A2E053D763E1B002CC607C5A0FE"` + - type {String} object type, e.g.: `Normal` + - size {Number} object size, e.g.: `344606` + - storageClass {String} storage class type, e.g.: `Standard` + - owner {Object} object owner, including `id` and `displayName` + - restoreInfo {Object|undefined} The restoration status of the object + - ongoingRequest {Boolean} Whether the restoration is ongoing + - expireDate {Date|undefined} The time before which the restored object can be read +- prefixes {Array<String>} prefix list +- isTruncated {Boolean} truncate or not +- nextMarker {String} next marker string +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- List top 10 objects + +```js +const result = await store.list(); +console.log(result.objects); +``` + +- List `fun/` dir including subdirs objects + +```js +const result = await store.list({ + prefix: 'fun/' +}); +console.log(result.objects); +``` + +- List `fun/` dir objects, not including subdirs + +```js +const result = await store.list({ + prefix: 'fun/', + delimiter: '/' +}); +console.log(result.objects); +``` + +### .listV2(query[, options]) + +List objects in the bucket.(recommended) + +parameters: + +- [query] {Object} query parameters, default is `null` + - [prefix] {String} search object using `prefix` key + - [continuation-token] (continuationToken) {String} search start from `continuationToken`, including `continuationToken` key + - [delimiter] {String} delimiter search scope + e.g. `/` only search current dir, not including subdir + - [max-keys] {String|Number} max objects, default is `100`, limit to `1000` + - [start-after] {String} specifies the Start-after value from which to start the list. The names of objects are returned in alphabetical order. + - [fetch-owner] {Boolean} specifies whether to include the owner information in the response. +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return objects list on `objects` properties. + +- objects {Array<ObjectMeta>} object meta info list + Each `ObjectMeta` will contains blow properties: + - name {String} object name on oss + - url {String} resource url + - lastModified {String} object last modified GMT date, e.g.: `2015-02-19T08:39:44.000Z` + - etag {String} object etag contains `"`, e.g.: `"5B3C1A2E053D763E1B002CC607C5A0FE"` + - type {String} object type, e.g.: `Normal` + - size {Number} object size, e.g.: `344606` + - storageClass {String} storage class type, e.g.: `Standard` + - owner {Object|null} object owner, including `id` and `displayName` + - restoreInfo {Object|undefined} The restoration status of the object + - ongoingRequest {Boolean} Whether the restoration is ongoing + - expireDate {Date|undefined} The time before which the restored object can be read +- prefixes {Array<String>} prefix list +- isTruncated {Boolean} truncate or not +- nextContinuationToken {String} next continuation-token string +- keyCount {Number} The number of keys returned for this request. If Delimiter is specified, KeyCount is the sum of the elements in Key and CommonPrefixes. +- res {Object} response info, including + + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +- List top 10 objects + +```js +const result = await store.listV2({ + 'max-keys': 10 +}); +console.log(result.objects); +``` + +- List `fun/` dir including subdirs objects + +```js +const result = await store.listV2({ + prefix: 'fun/' +}); +console.log(result.objects); +``` + +- List `fun/` dir objects, not including subdirs + +```js +const result = await store.listV2({ + prefix: 'fun/', + delimiter: '/' +}); +console.log(result.objects); +``` + +- List `a/` dir objects, after `a/b` and not include `a/b` + +```js +const result = await store.listV2({ + delimiter: '/', + prefix: 'a/', + 'start-after': 'a/b' +}); +console.log(result.objects); +``` + +### .getBucketVersions(query[, options]) + +List the version information of all objects in the bucket, including the delete marker (Delete Marker). + +parameters: + +- [query] {Object} query parameters, default is `null` + - [prefix] {String} search object using `prefix` key + - [versionIdMarker] {String} set the result to return from the version ID marker of the key marker object and sort by the versions + - [keyMarker] {String} search start from `keyMarker`, including `keyMarker` key + - [encodingType] {String} specifies that the returned content is encoded, and specifies the type of encoding + - [delimiter] {String} delimiter search scope + e.g. `/` only search current dir, not including subdir + - [maxKeys] {String|Number} max objects, default is `100`, limit to `1000` +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return objects list on `objects` properties. + +- objects {Array<ObjectMeta>} object meta info list + Each `ObjectMeta` will contains blow properties: + - name {String} object name on oss + - lastModified {String} object last modified GMT date, e.g.: `2015-02-19T08:39:44.000Z` + - etag {String} object etag contains `"`, e.g.: `"5B3C1A2E053D763E1B002CC607C5A0FE"` + - type {String} object type, e.g.: `Normal` + - size {Number} object size, e.g.: `344606` + - isLatest {Boolean} + - versionId {String} object versionId + - storageClass {String} storage class type, e.g.: `Standard` + - owner {Object} object owner, including `id` and `displayName` + - restoreInfo {Object|undefined} The restoration status of the object + - ongoingRequest {Boolean} Whether the restoration is ongoing + - expireDate {Date|undefined} The time before which the restored object can be read +- deleteMarker {Array<ObjectDeleteMarker>} object delete marker info list + Each `ObjectDeleteMarker` + - name {String} object name on oss + - lastModified {String} object last modified GMT date, e.g.: `2015-02-19T08:39:44.000Z` + - versionId {String} object versionId +- isTruncated {Boolean} truncate or not +- nextKeyMarker (nextMarker) {String} next marker string +- nextVersionIdMarker (NextVersionIdMarker) {String} next version ID marker string +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- View all versions of objects and deleteMarker of bucket + +```js +const result = await store.getBucketVersions(); +console.log(result.objects); +console.log(result.deleteMarker); +``` + +- List from key-marker + +```js +const result = await store.getBucketVersions({ + keyMarker: 'keyMarker' +}); +console.log(result.objects); +``` + +- List from the version-id-marker of key-marker + +```js +const result = await store.getBucketVersions({ + versionIdMarker: 'versionIdMarker', + keyMarker: 'keyMarker' +}); +console.log(result.objects); +console.log(result.deleteMarker); +``` + +### .signatureUrl(name[, options, strictObjectNameValidation]) + +Create a signature url for download or upload object. When you put object with signatureUrl ,you need to pass `Content-Type`.Please look at the example. + +parameters: + +- name {String} object name store on OSS +- [options] {Object} optional parameters + - [expires] {Number} after expires seconds, the url will become invalid, default is `1800` + - [method] {String} the HTTP method, default is 'GET' + - [Content-Type] {String} set the request content type + - [process] {String} image process params, will send with `x-oss-process` + e.g.: `{process: 'image/resize,w_200'}` + - [trafficLimit] {Number} traffic limit, range: `819200`~`838860800`. + - [subResource] {Object} additional signature parameters in url. + - [response] {Object} set the response headers for download + - [content-type] {String} set the response content type + - [content-disposition] {String} set the response content disposition + - [cache-control] {String} set the response cache control + - See more: <https://help.aliyun.com/document_detail/31980.html> + - [callback] {Object} set the callback for the operation + - url {String} set the url for callback + - [host] {String} set the host for callback + - body {String} set the body for callback + - [contentType] {String} set the type for body + - [callbackSNI] {Boolean} Specifies whether OSS sends Server Name Indication (SNI) to the origin address specified by callbackUrl when a callback request is initiated from the client + - [customValue] {Object} set the custom value for callback,eg. {var1: value1,var2:value2} +- [strictObjectNameValidation] {boolean} the flag of verifying object name strictly, default is true + +Success will return signature url. + +example: + +- Get signature url for object + +```js +const url = store.signatureUrl('ossdemo.txt'); +console.log(url); +// -------------------------------------------------- +const url = store.signatureUrl('ossdemo.txt', { + expires: 3600, + method: 'PUT' +}); +console.log(url); + +// put object with signatureUrl +// ------------------------------------------------- + +const url = store.signatureUrl('ossdemo.txt', { + expires: 3600, + method: 'PUT', + 'Content-Type': 'text/plain; charset=UTF-8' +}); +console.log(url); + +// -------------------------------------------------- +const url = store.signatureUrl( + 'ossdemo.txt', + { + expires: 3600, + response: { + 'content-type': 'text/custom', + 'content-disposition': 'attachment' + } + }, + false +); +console.log(url); + +// put operation +``` + +- Get a signature url for a processed image + +```js +const url = store.signatureUrl('ossdemo.png', { + process: 'image/resize,w_200' +}); +console.log(url); +// -------------------------------------------------- +const url = store.signatureUrl('ossdemo.png', { + expires: 3600, + process: 'image/resize,w_200' +}); +console.log(url); +``` + +### .asyncSignatureUrl(name[, options, strictObjectNameValidation]) + +Basically the same as signatureUrl, if refreshSTSToken is configured asyncSignatureUrl will refresh stsToken + +parameters: + +- name {String} object name store on OSS +- [options] {Object} optional parameters + - [expires] {Number} after expires seconds, the url will become invalid, default is `1800` + - [method] {String} the HTTP method, default is 'GET' + - [Content-Type] {String} set the request content type + - [process] {String} image process params, will send with `x-oss-process` + e.g.: `{process: 'image/resize,w_200'}` + - [trafficLimit] {Number} traffic limit, range: `819200`~`838860800`. + - [subResource] {Object} additional signature parameters in url. + - [response] {Object} set the response headers for download + - [content-type] {String} set the response content type + - [content-disposition] {String} set the response content disposition + - [cache-control] {String} set the response cache control + - See more: <https://help.aliyun.com/document_detail/31980.html> + - [callback] {Object} set the callback for the operation + - url {String} set the url for callback + - [host] {String} set the host for callback + - body {String} set the body for callback + - [contentType] {String} set the type for body + - [callbackSNI] {Boolean} Specifies whether OSS sends Server Name Indication (SNI) to the origin address specified by callbackUrl when a callback request is initiated from the client + - [customValue] {Object} set the custom value for callback,eg. {var1: value1,var2:value2} +- [strictObjectNameValidation] {boolean} the flag of verifying object name strictly, default is true + +Success will return signature url. + +example: + +- Get signature url for object + +```js +const url = await store.asyncSignatureUrl('ossdemo.txt'); +console.log(url); +// -------------------------------------------------- +const url = await store.asyncSignatureUrl('ossdemo.txt', { + expires: 3600, + method: 'PUT' +}); +console.log(url); +// put object with signatureUrl +// ------------------------------------------------- +const url = await store.asyncSignatureUrl('ossdemo.txt', { + expires: 3600, + method: 'PUT', + 'Content-Type': 'text/plain; charset=UTF-8' +}); +console.log(url); +// -------------------------------------------------- +const url = await store.asyncSignatureUrl( + 'ossdemo.txt', + { + expires: 3600, + response: { + 'content-type': 'text/custom', + 'content-disposition': 'attachment' + } + }, + false +); +console.log(url); +// put operation +``` + +- Get a signature url for a processed image + +```js +const url = await store.asyncSignatureUrl('ossdemo.png', { + process: 'image/resize,w_200' +}); +console.log(url); +// -------------------------------------------------- +const url = await store.asyncSignatureUrl('ossdemo.png', { + expires: 3600, + process: 'image/resize,w_200' +}); +console.log(url); +``` + +### .signatureUrlV4(method, expires[, request, objectName, additionalHeaders]) + +Generate a signed URL for V4 of an OSS resource and share the URL to allow authorized third-party users to access the resource. + +parameters: + +- method {string} the HTTP method +- expires {number} the signed URL will expire after the set number of seconds +- [request] {Object} optional request parameters + - [headers] {Object} headers of http requests, please make sure these request headers are set during the actual request + - [queries] {Object} queries of the signed URL, please ensure that if the query only has key, the value is set to null +- [objectName] {string} object name +- [additionalHeaders] {string[]} the keys of the request headers that need to be calculated into the V4 signature, please ensure that these additional headers are included in the request headers + +Success will return signature url. + +example: + +```js +// GetObject +const getObjectUrl = await store.signatureUrlV4('GET', 60, undefined, 'your obejct name'); +console.log(getObjectUrl); +// -------------------------------------------------- +const getObjectUrl = await store.signatureUrlV4( + 'GET', + 60, + { + headers: { + 'Cache-Control': 'no-cache' + }, + queries: { + versionId: 'version ID of your object' + } + }, + 'your obejct name', + ['Cache-Control'] +); +console.log(getObjectUrl); + +// ------------------------------------------------- +// PutObject +const putObejctUrl = await store.signatureUrlV4('PUT', 60, undefined, 'your obejct name'); +console.log(putObejctUrl); +// -------------------------------------------------- +const putObejctUrl = await store.signatureUrlV4( + 'PUT', + 60, + { + headers: { + 'Content-Type': 'text/plain', + 'Content-MD5': 'xxx', + 'Content-Length': 1 + } + }, + 'your obejct name', + ['Content-Length'] +); +console.log(putObejctUrl); +``` + +### .putACL(name, acl[, options]) + +Set object's ACL. + +parameters: + +- name {String} object name +- acl {String} acl (private/public-read/public-read-write) +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + - [versionId] {String} the version id of history object + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- Set an object's ACL + +```js +await store.putACL('ossdemo.txt', 'public-read'); +``` + +- Set an history object's ACL + +```js +const versionId = 'object versionId'; +await store.putACL('ossdemo.txt', 'public-read', { + versionId +}); +``` + +### .getACL(name[, options]) + +Get object's ACL. + +parameters: + +- name {String} object name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + - [versionId] {String} the version id of history object + +Success will return: + +- acl {String} acl settiongs string +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- Get an object's ACL + +```js +const result = await store.getACL('ossdemo.txt'); +console.log(result.acl); +``` + +- Get an history object's ACL + +```js +const versionId = 'object versionId'; +const result = await store.getACL('ossdemo.txt', { versionId }); +console.log(result.acl); +``` + +### .restore(name[, options]) + +Restore Object. + +parameters: + +- name {String} object name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + - [versionId] {String} the version id of history object + - [type] {String} the default type is Archive + - [Days] {number} The duration within which the object remains in the restored state. The default value is 2. + - [JobParameters] {string} The container that stores the restoration priority. This parameter is valid only when you restore Cold Archive or Deep Cold Archive objects. The default value is Standard. + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +- Restore an Archive object + +```js +const result = await store.restore('ossdemo.txt'); +console.log(result.status); +``` + +- Restore a Cold Archive object + +```js +const result = await store.restore('ossdemo.txt', { type: 'ColdArchive' }); +console.log(result.status); +``` + +- Restore a Cold Archive object with Days + +```js +const result = await store.restore('ossdemo.txt', { type: 'ColdArchive', Days: 2 }); +console.log(result.status); +``` + +- Restore a Cold Archive object with Days and JobParameters +```js +const result = await store.restore('ossdemo.txt', { type: 'ColdArchive', Days: 2, JobParameters: 'Standard' }); +console.log(result.status); +``` + +- Restore a Deep Cold Archive object + +```js +const result = await store.restore('ossdemo.txt', { type: 'DeepColdArchive' }); +console.log(result.status); +``` + +- Restore a Deep Cold Archive object with Days + +```js +const result = await store.restore('ossdemo.txt', { type: 'DeepColdArchive', Days: 2 }); +console.log(result.status); +``` + +- Restore a Deep Cold Archive object with Days and JobParameters + +```js +const result = await store.restore('ossdemo.txt', { type: 'DeepColdArchive', Days: 2, JobParameters: 'Standard' }); +console.log(result.status); +``` + +- Restore an history object + +```js +const versionId = 'object versionId'; +const result = await store.restore('ossdemo.txt', { versionId }); +console.log(result.status); +``` + +### .putSymlink(name, targetName[, options]) + +PutSymlink + +parameters: + +- name {String} object name +- targetName {String} target object name +- [options] {Object} optional parameters + + - [storageClass] {String} the storage type include (Standard,IA,Archive) + - [meta] {Object} user meta, will send with `x-oss-meta-` prefix string + - [headers] {Object} extra headers, detail see [PutSymlink](https://help.aliyun.com/document_detail/45126.html#title-x71-l2b-7i8) + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +```js +const options = { + storageClass: 'IA', + meta: { + uid: '1', + slus: 'test.html' + } +}; +const result = await store.putSymlink('ossdemo.txt', 'targetName', options); +console.log(result.res); +``` + +putSymlink multiversion + +```js +const options = { + storageClass: 'IA', + meta: { + uid: '1', + slus: 'test.html' + } +}; +const result = await store.putSymlink('ossdemo.txt', 'targetName', options); +console.log(result.res.headers['x-oss-version-id']); +``` + +### .getSymlink(name[, options]) + +GetSymlink + +parameters: + +- name {String} object name +- [options] {Object} optional parameters +- [versionId] {String} the version id of history object + +Success will return + +- targetName {String} target object name +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +example: + +```js +const result = await store.getSymlink('ossdemo.txt'); +console.log(result.targetName); +``` + +for history object + +```js +const versionId = 'object versionId'; +const result = await store.getSymlink('ossdemo.txt', { versionId }); +console.log(result.targetName); +``` + +### .initMultipartUpload(name[, options]) + +Before transmitting data in the Multipart Upload mode, +you must call the Initiate Multipart Upload interface to notify the OSS to initiate a Multipart Upload event. +The Initiate Multipart Upload interface returns a globally unique Upload ID created by the OSS server to identify this Multipart Upload event. + +parameters: + +- name {String} object name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + - [mime] Mime file type e.g.: application/octet-stream + - [meta] {Object} user meta, will send with `x-oss-meta-` prefix string + - [headers] {Object} extra headers + - 'Cache-Control' cache control for download, e.g.: `Cache-Control: public, no-cache` + - 'Content-Disposition' object name for download, e.g.: `Content-Disposition: somename` + - 'Content-Encoding' object content encoding for download, e.g.: `Content-Encoding: gzip` + - 'Expires' expires time for download, an absolute date and time. e.g.: `Tue, 08 Dec 2020 13:49:43 GMT` + - [x-oss-server-side-encryption] + Specify the server-side encryption algorithm used to upload each part of this object,Type: string, Valid value: AES256 `x-oss-server-side-encryption: AES256`<br> + if use in browser you should be set cors expose header x-oss-server-side-encryption + - See more: [InitiateMultipartUpload](https://help.aliyun.com/document_detail/31992.html?#title-wh0-a2h-rur) + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - [x-oss-server-side-encryption] if set request header x-oss-server-side-encryption, will return + - size {Number} response size + - rt {Number} request total use time (ms) +- bucket {String} bucket name +- name {String} object name store on OSS +- uploadId {String} upload id, use for uploadPart, completeMultipart + +example: + +```js +const result = await store.initMultipartUpload('object'); +console.log(result); +``` + +### .uploadPart(name, uploadId, partNo, file, start, end[, options]) + +After initiating a Multipart Upload event, you can upload data in parts based on the specified object name and Upload ID. + +parameters: + +- name {String} object name +- uploadId {String} get by initMultipartUpload api +- partNo {Number} range is 1-10000, If this range is exceeded, OSS returns the InvalidArgument's error code. +- file {File|String} is File or FileName, the whole file<br> + Multipart Upload requires that the size of any Part other than the last Part is greater than 100KB. <br> + In Node you can use File or FileName, but in browser you only can use File. +- start {Number} part start bytes e.g: 102400 +- end {Number} part end bytes e.g: 204800 +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) +- name {String} object name store on OSS +- etag {String} object etag contains ", e.g.: "5B3C1A2E053D763E1B002CC607C5A0FE" + +example: + +```js + const name = 'object'; + const result = await store.initMultipartUpload(name); + const uploadId = result.uploadId; + const file; //the data you want to upload, is a File or FileName(only in node) + //if file part is 10 + const partSize = 100 * 1024; + const fileSize = 10 * partSize;//you need to calculate + const dones = []; + for (let i = 1; i <= 10; i++) { + const start = partSize * (i -1); + const end = Math.min(start + partSize, fileSize); + const part = await store.uploadPart(name, uploadId, i, file, start, end); + dones.push({ + number: i, + etag: part.etag + }); + console.log(part); + } + + //end need to call completeMultipartUpload api +``` + +### .uploadPartCopy(name, uploadId, partNo, range, sourceData[, options]) + +Using Upload Part Copy, you can copy data from an existing object and upload a part of the data. +When copying a file larger than 1 GB, you must use the Upload Part Copy method. If you want to copy a file smaller than 1 GB, see Copy Object. + +parameters: + +- name {String} object name +- uploadId {String} get by initMultipartUpload api +- partNo {Number} range is 1-10000, If this range is exceeded, OSS returns the InvalidArgument's error code. +- range {String} Multipart Upload requires that the size of any Part other than the last Part is greater than 100KB, range value like `0-102400` +- sourceData {Object} + - sourceKey {String} the source object name + - sourceBucketName {String} the source bucket name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + - [versionId] {String} the version id of history object + - [headers] {Object} The following request header is used for the source objects specified by x-oss-copy-source. + - [x-oss-copy-source-if-match] default none<br> + If the ETAG value of the source object is equal to the ETAG value provided by the user, the system performs the Copy Object operation; otherwise, the system returns the 412 Precondition Failed message. + - [x-oss-copy-source-if-none-match] default none<br> + If the source object has not been modified since the time specified by the user, the system performs the Copy Object operation; otherwise, the system returns the 412 Precondition Failed message. + - [x-oss-copy-source-if-unmodified-since] default none<br> + If the time specified by the received parameter is the same as or later than the modification time of the file, the system transfers the file normally, and returns 200 OK; otherwise, the system returns 412 Precondition Failed. + - [x-oss-copy-source-if-modified-since] default none<br> + If the source object has been modified since the time specified by the user, the system performs the Copy Object operation; otherwise, the system returns the 412 Precondition Failed message. + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) +- name {String} object name store on OSS +- etag {String} object etag contains ", e.g.: "5B3C1A2E053D763E1B002CC607C5A0FE" + +example: + +```js +const name = 'object'; +const result = await store.initMultipartUpload(name); + +const partSize = 100 * 1024; //100kb +//if file part is 10 +for (let i = 1; i <= 10; i++) { + const start = partSize * (i - 1); + const end = Math.min(start + partSize, fileSize); + const range = start + '-' + (end - 1); + const part = await store.uploadPartCopy(name, result.uploadId, i, range, { + sourceKey: 'sourceKey', + sourceBucketName: 'sourceBucketName' + }); + console.log(part); +} + +//end need complete api +``` + +- use history object to uploadPartCopy + +```js +const versionId = 'object versionId'; +const name = 'object'; +const result = await store.initMultipartUpload(name); +const partSize = 100 * 1024; //100kb +//if file part is 10 +for (let i = 1; i <= 10; i++) { + const start = partSize * (i - 1); + const end = Math.min(start + partSize, fileSize); + const range = start + '-' + (end - 1); + const part = await store.uploadPartCopy( + name, + result.uploadId, + i, + range, + { + sourceKey: 'sourceKey', + sourceBucketName: 'sourceBucketName' + }, + { + versionId + } + ); + console.log(part); +} + +//end need complete api +``` + +### .completeMultipartUpload(name, uploadId, parts[, options]) + +After uploading all data parts, you must call the Complete Multipart Upload API to complete Multipart Upload for the entire file. + +parameters: + +- name {String} object name +- uploadId {String} get by initMultipartUpload api +- parts {Array} more part {Object} from uploadPartCopy, , each in the structure: + - number {Number} partNo + - etag {String} object etag contains ", e.g.: "5B3C1A2E053D763E1B002CC607C5A0FE" +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + - [callback] {Object} The callback parameter is composed of a JSON string encoded in Base64,detail [see](https://www.alibabacloud.com/help/doc-detail/31989.htm)<br> + - url {String} After a file is uploaded successfully, the OSS sends a callback request to this URL. + - [host] {String} The host header value for initiating callback requests. + - body {String} The value of the request body when a callback is initiated, for example, key=${key}&etag=${etag}&my_var=${x:my_var}. + - [contentType] {String} The Content-Type of the callback requests initiatiated, It supports application/x-www-form-urlencoded and application/json, and the former is the default value. + - [callbackSNI] {Boolean} Specifies whether OSS sends Server Name Indication (SNI) to the origin address specified by callbackUrl when a callback request is initiated from the client. + - [customValue] {Object} Custom parameters are a map of key-values<br> + e.g.: + ```js + var customValue = { var1: 'value1', var2: 'value2' }; + ``` + - [headers] {Object} extra headers, detail see [CompleteMultipartUpload](https://help.aliyun.com/document_detail/31995.html?#title-nan-5y3-rjd) + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) +- bucket {String} bucket name +- name {String} object name store on OSS +- etag {String} object etag contains ", e.g.: "5B3C1A2E053D763E1B002CC607C5A0FE" +- data {Object} callback server response data , sdk use JSON.parse() return + +example: + +```js + + //init multipart + const name = 'object'; + const result = await store.initMultipartUpload(name); + + //upload part + const file; //the data you want to upload, this example size is 10 * 100 * 1024 + const fileSize;//you need to calculate + const partSize = 100 * 1024;//100kb + const done = []; + //if file part is 10 + for (let i = 1; i <= 10; i++) { + const start = partSize * (i -1); + const end = Math.min(start + partSize, fileSize); + const data = file.slice(start, end); + const part = store.uploadPart(name, result.uploadId, i, data, 0, data.length); + console.log(part); + done.push({ + number: i, + etag: part.res.headers.etag + }); + } + + //complete + const completeData = await store.completeMultipartUpload(name, result.uploadId, done); + console.log(completeData); +``` + +### .multipartUpload(name, file[, options]) + +Upload file with [OSS multipart][oss-multipart].<br> +this function contains initMultipartUpload, uploadPart, completeMultipartUpload. +When you use multipartUpload api,if you encounter problems with ConnectionTimeoutError, you should handle ConnectionTimeoutError in your business code. How to resolve ConnectionTimeoutError, you can decrease `partSize` size 、 Increase `timeout` 、Retry request , +or give tips in your business code; + +parameters: + +- name {String} object name +- file {String|File(only support Browser)|Blob(only support Browser)|Buffer} file path or HTML5 Web File or web Blob or content buffer +- [options] {Object} optional args + - [parallel] {Number} the number of parts to be uploaded in parallel + - [partSize] {Number} the suggested size for each part, default `1024 * 1024`(1MB), minimum `100 * 1024`(100KB) + - [progress] {Function} function | async | Promise, the progress callback called after each + successful upload of one part, it will be given three parameters: + (percentage {Number}, checkpoint {Object}, res {Object}) + - [checkpoint] {Object} the checkpoint to resume upload, if this is + provided, it will continue the upload from where interrupted, + otherwise a new multipart upload will be created. + - file {File} The file object selected by the user, if the browser is restarted, it needs the user to manually trigger the settings + - name {String} object key + - fileSize {Number} file size + - partSize {Number} part size + - uploadId {String} upload id + - doneParts {Array} An array of pieces that have been completed, including the object structure as follows + - number {Number} part number + - etag {String} part etag + - [meta] {Object} user meta, will send with `x-oss-meta-` prefix string + - [mime] {String} custom mime , will send with `Content-Type` entity header + - [callback] {Object} The callback parameter is composed of a JSON string encoded in Base64,detail [see](https://www.alibabacloud.com/help/doc-detail/31989.htm)<br> + - url {String} After a file is uploaded successfully, the OSS sends a callback request to this URL. + - [host] {String} The host header value for initiating callback requests. + - body {String} The value of the request body when a callback is initiated, for example, key=${key}&etag=${etag}&my_var=${x:my_var}. + - [contentType] {String} The Content-Type of the callback requests initiatiated, It supports application/x-www-form-urlencoded and application/json, and the former is the default value. + - [callbackSNI] {Boolean} Specifies whether OSS sends Server Name Indication (SNI) to the origin address specified by callbackUrl when a callback request is initiated from the client. + - [customValue] {Object} Custom parameters are a map of key-values<br> + e.g.: + ```js + var customValue = { var1: 'value1', var2: 'value2' }; + ``` + - [headers] {Object} extra headers, detail see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html) + - 'Cache-Control' cache control for download, e.g.: `Cache-Control: public, no-cache` + - 'Content-Disposition' object name for download, e.g.: `Content-Disposition: somename` + - 'Content-Encoding' object content encoding for download, e.g.: `Content-Encoding: gzip` + - 'Expires' expires time for download, an absolute date and time. e.g.: `Tue, 08 Dec 2020 13:49:43 GMT` + - **NOTE**: Some headers are [disabled in browser][disabled-browser-headers] + - [timeout] {Number} Milliseconds before a request is considered to be timed out + - [disabledMD5] {Boolean} default true, it just work in Browser. if false,it means that MD5 is automatically calculated for uploaded files. **_NOTE:_** Synchronous computing tasks will block the main process + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) +- bucket {String} bucket name +- name name {String} object name store on OSS +- etag {String} object etag contains ", e.g.: "5B3C1A2E053D763E1B002CC607C5A0FE" +- data {Object} callback server response data, sdk use JSON.parse() return + +example: + +- Upload using multipart + +```js +const result = await store.multipartUpload('object', '/tmp/file'); +let savedCpt; +console.log(result); + +const result = await store.multipartUpload('object', '/tmp/file', { + parallel: 4, + partSize: 1024 * 1024, + progress: function (p, cpt, res) { + console.log(p); + savedCpt = cpt; + console.log(cpt); + console.log(res.headers['x-oss-request-id']); + } +}); + +const result = await store.multipartUpload('object', '/tmp/file', { + checkpoint: savedCpt, + progress: function (p, cpt, res) { + //progress is generator + console.log(p); + console.log(cpt); + console.log(res.headers['x-oss-request-id']); + } +}); +``` + +- multipartUpload progress example + +```js +//async function +async function asyncProgress(p, cpt, res) { + console.log(p); + console.log(cpt); + console.log(res.headers['x-oss-request-id']); +} + +const result1 = await store.multipartUpload('object', '/tmp/file', { + progress: asyncProgress +}); + +//function +function progress(p, cpt, res) { + console.log(p); + console.log(cpt); + console.log(res.headers['x-oss-request-id']); +} + +const result2 = await store.multipartUpload('object', '/tmp/file', { + progress: progress +}); +``` + +- multipartUpload with abort + +> tips: abort multipartUpload support on node and browser + +```js +//start upload +let abortCheckpoint; +store.multipartUpload('object', '/tmp/file', { + progress: function (p, cpt, res) { + abortCheckpoint = cpt; + } +}).then(res => { + // do something +}).catch(err => { + //if abort will catch abort event + if (err.name === 'abort') { + // handle abort + console.log('error: ', err.message) + } +}); + +// abort +store.abortMultipartUpload(abortCheckpoint.name, abortCheckpoint.uploadId); +``` + +- multipartUpload with cancel + +> tips: cancel multipartUpload support on node and browser + +```js +//start upload +try { + const result = await store.multipartUpload('object', '/tmp/file', { + checkpoint: savedCpt, + progress: function (p, cpt, res) { + console.log(p); + console.log(cpt); + console.log(res.headers['x-oss-request-id']); + } + }); +} catch (err) { + //if cancel will catch cancel event + if (store.isCancel()) { + //do something + } +} + +//the other event to cancel, for example: click event +//to cancel upload must use the same client instance +store.cancel(); +``` + +- multipartUpload with capture `ConnectionTimeoutError` error + +```js +//start upload +try { + const result = await store.multipartUpload('object', '/tmp/file', { + checkpoint: savedCpt, + progress: function (p, cpt, res) { + console.log(p); + console.log(cpt); + console.log(res.headers['x-oss-request-id']); + } + }); +} catch (err) { + if (err.code === 'ConnectionTimeoutError') { + console.log('Woops,Woops ,timeout error!!!'); + // do ConnectionTimeoutError operation + } +} +``` + +### .multipartUploadCopy(name, sourceData[, options]) + +Copy file with [OSS multipart][oss-multipart]. <br> +this function contains head, initMultipartUpload, uploadPartCopy, completeMultipartUpload.<br> +When copying a file larger than 1 GB, you should use the Upload Part Copy method. If you want to copy a file smaller than 1 GB, see Copy Object. + +parameters: + +- name {String} object name +- file {String|File} file path or HTML5 Web File +- [options] {Object} optional args + - [timeout] {Number} Milliseconds before a request is considered to be timed out + - [parallel] {Number} the number of parts to be uploaded in parallel + - [partSize] {Number} the suggested size for each part, defalut `1024 * 1024`(1MB), minimum `100 * 1024`(100KB) + - [versionId] {String} the version id of history object + - [progress] {Function} function | async | Promise, the progress callback called after each + successful upload of one part, it will be given three parameters: + (percentage {Number}, checkpoint {Object}, res {Object}) + - [checkpoint] {Object} the checkpoint to resume upload, if this is + provided, it will continue the upload from where interrupted, + otherwise a new multipart upload will be created. + - [headers] {Object} extra headers, detail see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html) + - 'Cache-Control' cache control for download, e.g.: `Cache-Control: public, no-cache` + - 'Content-Disposition' object name for download, e.g.: `Content-Disposition: somename` + - 'Content-Encoding' object content encoding for download, e.g.: `Content-Encoding: gzip` + - 'Expires' expires time for download, an absolute date and time. e.g.: `Tue, 08 Dec 2020 13:49:43 GMT` + - **NOTE**: Some headers are [disabled in browser][disabled-browser-headers] + - [copyheaders] {Object} only uploadPartCopy api used, detail [see](https://www.alibabacloud.com/help/doc-detail/31994.htm) + - [x-oss-copy-source-if-match] only uploadPartCopy api used, default none<br> + If the ETAG value of the source object is equal to the ETAG value provided by the user, the system performs the Copy Object operation; otherwise, the system returns the 412 Precondition Failed message. + - [x-oss-copy-source-if-none-match] only uploadPartCopy api used, default none<br> + If the source object has not been modified since the time specified by the user, the system performs the Copy Object operation; otherwise, the system returns the 412 Precondition Failed message. + - [x-oss-copy-source-if-unmodified-since] only uploadPartCopy api used, default none<br> + If the time specified by the received parameter is the same as or later than the modification time of the file, the system transfers the file normally, and returns 200 OK; otherwise, the system returns 412 Precondition Failed. + - [x-oss-copy-source-if-modified-since] only uploadPartCopy api used, default none<br> + If the source object has been modified since the time specified by the user, the system performs the Copy Object operation; otherwise, the system returns the 412 Precondition Failed message. + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) +- bucket {String} bucket name +- name name {String} object name store on OSS +- etag {String} object etag contains ", e.g.: "5B3C1A2E053D763E1B002CC607C5A0FE" + +example: + +- Copy using multipart + +```js +const result = await store.multipartUploadCopy('object', { + sourceKey: 'sourceKey', + sourceBucketName: 'sourceBucketName' +}); +let savedCpt; +console.log(result); + +const result = await store.multipartUploadCopy( + 'object', + { + sourceKey: 'sourceKey', + sourceBucketName: 'sourceBucketName' + }, + { + parallel: 4, + partSize: 1024 * 1024, + progress: function (p, cpt, res) { + console.log(p); + savedCpt = cpt; + console.log(cpt); + console.log(res.headers['x-oss-request-id']); + } + } +); + +console.log(result); + +const result = await store.multipartUploadCopy( + 'object', + { + sourceKey: 'sourceKey', + sourceBucketName: 'sourceBucketName' + }, + { + checkpoint: savedCpt, + progress: function (p, cpt, res) { + console.log(p); + console.log(cpt); + console.log(res.headers['x-oss-request-id']); + } + } +); + +console.log(result); +``` + +- multipartUploadCopy with abort + +```js +// start upload +let abortCheckpoint; +store.multipartUploadCopy('object', { + sourceKey: 'sourceKey', + sourceBucketName: 'sourceBucketName' + }, { + progress: function (p, cpt, res) { + abortCheckpoint = cpt; + } +}).then(res => { + // do something +}).catch(err => { + //if abort will catch abort event + if (err.name === 'abort') { + // handle abort + console.log('error: ', err.message) + } +}); + +// the other event to abort, for example: click event +// to abort upload must use the same client instance +store.abortMultipartUpload(abortCheckpoint.name, abortCheckpoint.uploadId); +``` + +- multipartUploadCopy with cancel + +```js +//start upload +try { + const result = await store.multipartUploadCopy( + 'object', + { + sourceKey: 'sourceKey', + sourceBucketName: 'sourceBucketName' + }, + { + checkpoint: savedCpt, + progress: function (p, cpt, res) { + console.log(p); + console.log(cpt); + console.log(res.headers['x-oss-request-id']); + } + } + ); +} catch (err) { + //if cancel will catch cancel event + if (store.isCancel()) { + //do something + } +} + +//the other event to cancel, for example: click event +//to cancel upload must use the same client instance +store.cancel(); +``` + +- multipartUploadCopy with versionId + +```js +const versionId = 'object versionId'; +//start upload +const result = await store.multipartUploadCopy( + 'object', + { + sourceKey: 'sourceKey', + sourceBucketName: 'sourceBucketName' + }, + { + checkpoint: savedCpt, + progress: function (p, cpt, res) { + console.log(p); + console.log(cpt); + console.log(res.headers['x-oss-request-id']); + }, + versionId + } +); +``` + +### .listParts(name, uploadId[, query, options]) + +The ListParts command can be used to list all successfully uploaded parts mapped to a specific upload ID, i.e.: those not completed and not +aborted. + +parameters: + +- name {String} object key +- uploadId {String} upload ID from initMultipartUpload api +- [query] {Object} query parameters + - [max-parts] {Number} The maximum part number in the response of the OSS. default value: 1000. + - [part-number-marker] {Number} Starting position of a specific list. A part is listed only when the part number is greater than the value of this parameter. + - [encoding-type] {String} Specify the encoding of the returned content and the encoding type. Optional value: url +- [options] {Object} optional args + - [timeout] {Number} the operation timeout + +Success will return: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) +- uploadId {String} upload ID +- bucket {String} Specify the bucket name. +- name {String} object name +- PartNumberMarker {Number} Starting position of the part numbers in the listing result. +- nextPartNumberMarker {Number} If not all results are returned this time, the response request includes the NextPartNumberMarker element to indicate the value of PartNumberMarker in the next request. +- maxParts {Number} upload ID +- isTruncated {Boolean} Whether the returned result list for List Parts is truncated. The “true” indicates that not all results are returned; “false” indicates that all results are returned. +- parts {Array} The container that saves part information, each in the structure: + - PartNumber {Number} Part number. + - LastModified {Date} Time when a part is uploaded. + - ETag {String} ETag value in the content of the uploaded part. + - Size {Number} Size of the uploaded part. + +example: + +- List uploaded part + +```js +const result = await store.listParts('objcet', 'uploadId', { + 'max-parts': 1000 +}); +console.log(result); +``` + +### .listUploads(query[, options]) + +List on-going multipart uploads, i.e.: those not completed and not +aborted. + +parameters: + +- query {Object} query parameters + - [prefix] {String} the object key prefix + - [max-uploads] {Number} the max uploads to return + - [key-marker] {String} the object key marker, if `upload-id-marker` + is not provided, return uploads with `key > marker`, otherwise + return uploads with `key >= marker && uploadId > id-marker` + - [upload-id-marker] {String} the upload id marker, must be used + **WITH** `key-marker` +- [options] {Object} optional args + - [timeout] {Number} the operation timeout + +example: + +- List on-going multipart uploads + +```js +const result = await store.listUploads({ + 'max-uploads': 100, + 'key-marker': 'my-object', + 'upload-id-marker': 'upload-id' +}); +console.log(result); +``` + +### .abortMultipartUpload(name, uploadId[, options]) + +Abort a multipart upload for object. + +parameters: + +- name {String} the object name +- uploadId {String} the upload id +- [options] {Object} optional args + - [timeout] {Number} the operation timeout + +example: + +- Abort a multipart upload + +```js +const result = await store.abortMultipartUpload('object', 'upload-id'); +console.log(result); +``` + +### .calculatePostSignature(policy) + +get postObject params + +parameters: + +- policy {JSON or Object} policy must contain expiration and conditions. + +Success will return postObject Api params. + +Object: + +- OSSAccessKeyId {String} +- Signature {String} +- policy {Object} response info + +### .signPostObjectPolicyV4(policy, date) + +Get a V4 signature of the PostObject request. + +parameters: + +- policy {string | Object} The policy form field in a PostObject request is used to specify the expiration time and conditions of the PostObject request that you initiate to upload an object by using an HTML form. The value of the policy form field is a JSON string or an object. +- date {Date} The time when the request was initiated. + +Success will return a V4 signature of the PostObject request. + +example: + +```js +const axios = require('axios'); +const dateFormat = require('dateformat'); +const FormData = require('form-data'); +const { getCredential } = require('ali-oss/lib/common/signUtils'); +const { getStandardRegion } = require('ali-oss/lib/common/utils/getStandardRegion'); +const { policy2Str } = require('ali-oss/lib/common/utils/policy2Str'); +const OSS = require('ali-oss'); + +const client = new OSS({ + accessKeyId: 'yourAccessKeyId', + accessKeySecret: 'yourAccessKeySecret', + stsToken: 'yourSecurityToken', + bucket: 'yourBucket', + region: 'oss-cn-hangzhou' +}); +const name = 'yourObjectName'; +const formData = new FormData(); +formData.append('key', name); +formData.append('Content-Type', 'yourObjectContentType'); +// your object cache control +formData.append('Cache-Control', 'max-age=30'); +const url = client.generateObjectUrl(name).replace(name, ''); +const date = new Date(); +// The expiration parameter specifies the expiration time of the request. +const expirationDate = new Date(date); +expirationDate.setMinutes(date.getMinutes() + 1); +// The time must follow the ISO 8601 standard +const formattedDate = dateFormat(date, "UTC:yyyymmdd'T'HHMMss'Z'"); +const credential = getCredential(formattedDate.split('T')[0], getStandardRegion(client.options.region), client.options.accessKeyId); +formData.append('x-oss-date', formattedDate); +formData.append('x-oss-credential', credential); +formData.append('x-oss-signature-version', 'OSS4-HMAC-SHA256'); +const policy = { + expiration: expirationDate.toISOString(), + conditions: [ + { bucket: client.options.bucket }, + {'x-oss-credential': credential}, + {'x-oss-date': formattedDate}, + {'x-oss-signature-version': 'OSS4-HMAC-SHA256'}, + ['content-length-range', 1, 10], + ['eq', '$success_action_status', '200'], + ['starts-with', '$key', 'yourObjectName'], + ['in', '$content-type', ['image/jpg', 'text/plain']], + ['not-in', '$cache-control', ['no-cache']] + ] +}; + +if (client.options.stsToken) { + policy.conditions.push({'x-oss-security-token': client.options.stsToken}); + formData.append('x-oss-security-token', client.options.stsToken); +} + +const signature = client.signPostObjectPolicyV4(policy, date); +formData.append('policy', Buffer.from(policy2Str(policy), 'utf8').toString('base64')); +formData.append('x-oss-signature', signature); +formData.append('success_action_status', '200'); +formData.append('file', 'yourFileContent'); + +axios.post(url, formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } +}).then((result) => { + console.log(result.status); +}).catch((e) => { + console.log(e); +}); +``` + +### .getObjectTagging(name[, options]) + +Obtains the tags of an object. + +parameters: + +- name {String} the object name +- [options] {Object} optional args + - [versionId] {String} the version id of history object + +Success will return the channel information. + +object: + +- tag {Object} the tag of object +- res {Object} response info + +### .putObjectTagging(name, tag[, options]) + +Configures or updates the tags of an object. + +parameters: + +- name {String} the object name +- tag {Object} tag, eg. `{var1: value1,var2:value2}` +- [options] {Object} optional args + - [versionId] {String} the version id of history object + +Success will return the channel information. + +object: + +- status {Number} response status +- res {Object} response info + +### .deleteObjectTagging(name[, options]) + +Deletes the tag of a specified object. + +parameters: + +- name {String} the object name +- tag {Object} tag, eg. `{var1: value1,var2:value2}` +- [options] {Object} optional args + - [versionId] {String} the version id of history object + +Success will return the channel information. + +object: + +- status {Number} response status +- res {Object} response info + +### .processObjectSave(sourceObject, targetObject, process[, targetBucket]) + +Persistency indicates that images are asynchronously stored in the specified Bucket + +parameters: + +- sourceObject {String} source object name +- targetObject {String} target object name +- process {String} process string +- [targetBucket] {String} target bucket + +Success will return the channel information. + +object: + +- status {Number} response status +- res {Object} response info + +```js +const sourceObject = 'a.png'; +const targetObject = 'b.png'; +const process = 'image/watermark,text_aGVsbG8g5Zu+54mH5pyN5Yqh77yB,color_ff6a00'; + +await this.store.processObjectSave(sourceObject, targetObject, process); +``` + +## RTMP Operations + +All operations function is [async], except `getRtmpUrl`. + +async function format: `async functionName(...)`. + +### .putChannel(id, conf[, options]) + +Create a live channel. + +parameters: + +- id {String} the channel id +- conf {Object} the channel config + - [Description] {String} the channel description + - [Status] {String} the channel status: 'enabled' or 'disabled' + - [Target] {Object} + - [Type] {String} the data type for the channel, only 'HLS' is supported now + - [FragDuration] {Number} duration of a 'ts' segment + - [FragCount] {Number} the number of 'ts' segments in a 'm3u8' + - [PlaylistName] {String} the 'm3u8' name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return the channel information. + +object: + +- publishUrls {Array} the publish urls +- playUrls {Array} the play urls +- res {Object} response info + +example: + +- Create a live channel + +```js +const cid = 'my-channel'; +const conf = { + Description: 'this is channel 1', + Status: 'enabled', + Target: { + Type: 'HLS', + FragDuration: '10', + FragCount: '5', + PlaylistName: 'playlist.m3u8' + } +}; + +const r = await this.store.putChannel(cid, conf); +console.log(r); +``` + +### .getChannel(id[, options]) + +Get live channel info. + +parameters: + +- id {String} the channel id +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return the channel information. + +object: + +- data {Object} channel info, same as conf in [.putChannel](#putchannelid-conf-options) +- res {Object} response info + +example: + +- Get live channel info + +```js +const cid = 'my-channel'; + +const r = await this.store.getChannel(cid); +console.log(r); +``` + +### .deleteChannel(id[, options]) + +Delete a live channel. + +parameters: + +- id {String} the channel id +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return the response infomation. + +object: + +- res {Object} response info + +example: + +- Delete a live channel + +```js +const cid = 'my-channel'; + +const r = await this.store.deleteChannel(cid); +console.log(r); +``` + +### .putChannelStatus(id, status[, options]) + +Change the live channel status. + +parameters: + +- id {String} the channel id +- status {String} the status: 'enabled' or 'disabled' +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return the response information. + +object: + +- res {Object} response info + +example: + +- Disable a live channel + +```js +const cid = 'my-channel'; + +const r = await this.store.putChannelStatus(cid, 'disabled'); +console.log(r); +``` + +### .getChannelStatus(id[, options]) + +Get the live channel status. + +parameters: + +- id {String} the channel id +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return the channel status information. + +object: + +- data {Object} + - Status {String} the channel status: 'Live' or 'Idle' + - [ConnectedTime] {String} the connected time of rtmp pushing + - [RemoteAddr] {String} the remote addr of rtmp pushing + - [Video] {Object} the video parameters (Width/Height/FrameRate/Bandwidth/Codec) + - [Audio] {Object} the audio parameters (Bandwidth/SampleRate/Codec) +- res {Object} response info + +example: + +- Get a live channel status + +```js +const cid = 'my-channel'; + +const r = await this.store.getChannelStatus(cid); +console.log(r); + +// { Status: 'Live', +// ConnectedTime: '2016-04-12T11:51:03.000Z', +// RemoteAddr: '42.120.74.98:53931', +// Video: +// { Width: '672', +// Height: '378', +// FrameRate: '29', +// Bandwidth: '60951', +// Codec: 'H264' }, +// Audio: { Bandwidth: '5959', SampleRate: '22050', Codec: 'AAC' } +// } +``` + +### .listChannels(query[, options]) + +List channels. + +parameters: + +- query {Object} parameters for list + - prefix {String}: the channel id prefix (returns channels with this prefix) + - marker {String}: the channle id marker (returns channels after this id) + - max-keys {Number}: max number of channels to return +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return the channel list. + +object: + +- channels {Array} the channels, each in the structure: + - Name {String} the channel id + - Description {String} the channel description + - Status {String} the channel status + - LastModified {String} the last modification time of the channel + - PublishUrls {Array} the publish urls for the channel + - PlayUrls {Array} the play urls for the channel +- nextMarker: result.data.NextMarker || null, +- isTruncated: result.data.IsTruncated === 'true' +- res {Object} response info + +example: + +- List live channels + +```js +const r = await this.store.listChannels({ + prefix: 'my-channel', + 'max-keys': 3 +}); +console.log(r); +``` + +### .getChannelHistory(id[, options]) + +Get the live channel history. + +parameters: + +- id {String} the channel id +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return the history information. + +object: + +- records {Object} the pushing records, each in the structure: + - StartTime {String} the start time + - EndTime {String} the end time + - RemoteAddr {String} the remote addr +- res {Object} response info + +example: + +- Get the live channel history + +```js +const cid = 'my-channel'; + +const r = await this.store.getChannelHistory(cid); +console.log(r); +``` + +### .createVod(id, name, time[, options]) + +Create a VOD playlist for the channel. + +parameters: + +- id {String} the channel id +- name {String} the playlist name +- time {Object} the duration time + - startTime {Number} the start time in epoch seconds + - endTime {Number} the end time in epoch seconds +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return the response information. + +object: + +- res {Object} response info + +example: + +- Create a vod playlist of a live channel + +```js +const cid = 'my-channel'; + +const r = await this.store.createVod(cid, 're-play', { + startTime: 1460464870, + endTime: 1460465877 +}); +console.log(r); +``` + +### .getRtmpUrl(channelId[, options]) + +Get signatured rtmp url for publishing. + +parameters: + +- channelId {String} the channel id +- [options] {Object} optional parameters + - [expires] {Number} the expire time in seconds of the url + - [params] {Object} the additional paramters for url, e.g.: {playlistName: 'play.m3u8'} + - [timeout] {Number} the operation timeout + +Success will return the rtmp url. + +example: + +- Get a rtmp url. + +```js +const cid = 'my-channel'; + +const url = this.store.getRtmpUrl(this.cid, { + params: { + playlistName: 'play.m3u8' + }, + expires: 3600 +}); +console.log(url); +// rtmp://ossliveshow.oss-cn-hangzhou.aliyuncs.com/live/tl-channel?OSSAccessKeyId=T0cqQWBk2ThfRS6m&Expires=1460466188&Signature=%2BnzTtpyxUWDuQn924jdS6b51vT8%3D +``` + +## Create A Image Service Instance + +Each Image Service instance required `accessKeyId`, `accessKeySecret`, `bucket` and `imageHost`. + +### oss.ImageClient(options) + +Create a Image service instance. + +options: + +- imageHost {String} your image service domain that binding to a OSS bucket +- accessKeyId {String} access key you create on aliyun console website +- accessKeySecret {String} access secret you create +- bucket {String} the default bucket you want to access + If you don't have any bucket, please use `putBucket()` create one first. +- [region] {String} the bucket data region location, please see [Data Regions](#data-regions), + default is `oss-cn-hangzhou` + Current available: `oss-cn-hangzhou`, `oss-cn-qingdao`, `oss-cn-beijing`, `oss-cn-hongkong` and `oss-cn-shenzhen` +- [internal] {Boolean} access OSS with aliyun internal network or not, default is `false` + If your servers are running on aliyun too, you can set `true` to save lot of money. +- [timeout] {String|Number} instance level timeout for all operations, default is `60s` + +example: + +```js +const oss = require('ali-oss'); + +const imgClient = oss.ImageClient({ + accessKeyId: 'your access key', + accessKeySecret: 'your access secret', + bucket: 'my_image_bucket', + imageHost: 'thumbnail.myimageservice.com' +}); +``` + +## Image Operations + +All operations function is [async], except `imgClient.signatureUrl`. + +async function format: `async functionName(...)`. + +### imgClient.get(name, file[, options]) + +Get an image from the image channel. + +parameters: + +- name {String} image object name with operation style store on OSS +- [file] {String|WriteStream} file path or WriteStream instance to store the image + If `file` is null or ignore this parameter, function will return info contains `content` property. +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + - [headers] {Object} extra headers, detail see [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616.html) + - 'If-Modified-Since' object modified after this time will return 200 and object meta, + otherwise return 304 not modified + - 'If-Unmodified-Since' object modified before this time will return 200 and object meta, + otherwise throw PreconditionFailedError + - 'If-Match' object etag equal this will return 200 and object meta, + otherwise throw PreconditionFailedError + - 'If-None-Match' object etag not equal this will return 200 and object meta, + otherwise return 304 not modified + +Success will return the info contains response. + +object: + +- [content] {Buffer} file content buffer if `file` parameter is null or ignore +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +If object not exists, will throw NoSuchKeyError. + +example: + +- Get an exists image with a style and store it to the local file + +```js +const imagepath = '/home/ossdemo/demo.jpg'; +await imgClient.get('ossdemo/demo.jpg@200w_200h', filepath); +``` + +\_ Store image to a writestream + +```js +await imgClient.get('ossdemo/demo.jpg@200w_200h', somestream); +``` + +- Get an image content buffer + +```js +const result = await imgClient.get('ossdemo/demo.jpg@200w_200h'); +console.log(Buffer.isBuffer(result.content)); +``` + +- Get a not exists object or a not image object + +```js +const imagepath = '/home/ossdemo/demo.jpg'; +await imgClient.get('ossdemo/not-exists-demo.jpg@200w_200h', filepath); +// will throw NoSuchKeyError +``` + +### imgClient.getStream(name[, options]) + +Get an image read stream. + +parameters: + +- name {String} image object name with operation style store on OSS +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + - [headers] {Object} extra headers + - 'If-Modified-Since' object modified after this time will return 200 and object meta, + otherwise return 304 not modified + - 'If-Unmodified-Since' object modified before this time will return 200 and object meta, + otherwise throw PreconditionFailedError + - 'If-Match' object etag equal this will return 200 and object meta, + otherwise throw PreconditionFailedError + - 'If-None-Match' object etag not equal this will return 200 and object meta, + otherwise return 304 not modified + +Success will return the stream instance and response info. + +object: + +- stream {ReadStream} readable stream instance. If response status is not `200`, stream will be `null`. +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) + +If object not exists, will throw NoSuchKeyError. + +example: + +- Get an exists image object stream + +```js +const result = await imgClient.getStream('ossdemo/demo.jpg@200w_200h'); +result.stream.pipe(fs.createWriteStream('some demo.jpg')); +``` + +### imgClient.getExif(name[, options]) + +Get a image exif info by image object name from the image channel. + +parameters: + +- name {String} image object name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return the info contains response. + +object: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) +- data {Object} image exif object + +If object don't have exif, will throw 400 BadRequest. + +example: + +```js +const result = await imgClient.getExif('demo.jpg'); +// resut: +// { +// res: { +// status: 200, +// statusCode: 200, +// headers: { +// server: "Tengine", +// content - type: "application/json", +// content - length: "148", +// connection: "keep-alive", +// date: "Tue, 31 Mar 2015 11:06:32 GMT", +// "last-modified": "Mon, 30 Mar 2015 10:46:35 GMT" +// }, +// size: 148, +// aborted: false, +// rt: 461, +// keepAliveSocket: false +// }, +// data: { +// FileSize: 343683, +// ImageHeight: 1200, +// ImageWidth: 1600, +// Orientation: 1 +// } +// } +``` + +### imgClient.getInfo(name[, options]) + +Get a image info and exif info by image object name from the image channel. + +parameters: + +- name {String} image object name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return the info contains response. + +object: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) +- data {Object} image exif object + +example: + +```js +const result = await imgClient.getInfo('demo.jpg'); +// resut: +// { +// res: { +// status: 200, +// statusCode: 200, +// headers: { +// server: "Tengine", +// content - type: "application/json", +// content - length: "148", +// connection: "keep-alive", +// date: "Tue, 31 Mar 2015 11:06:32 GMT", +// "last-modified": "Mon, 30 Mar 2015 10:46:35 GMT" +// }, +// size: 148, +// aborted: false, +// rt: 461, +// keepAliveSocket: false +// }, +// data: { +// FileSize: 343683, +// Format: "jpg", +// ImageHeight: 1200, +// ImageWidth: 1600, +// Orientation: 1 +// } +// } +``` + +### imgClient.putStyle(name, style[, options]) + +// TODO + +### imgClient.getStyle(name[, options]) + +Get a style by name from the image channel. + +parameters: + +- name {String} image style name +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return the info contains response. + +object: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) +- data {Object} styles object + - Name {String} style name + - Content {String} style content + - CreateTime {String} style create time + - LastModifyTime {String} style last modify time + +example: + +```js +const result = await imgClient.getStyle('400'); +// resut: +// { +// res: { +// status: 200, +// statusCode: 200, +// headers: { +// server: "Tengine", +// content - type: "application/xml", +// content - length: "234", +// connection: "keep-alive", +// date: "Tue, 31 Mar 2015 10:58:20 GMT" +// }, +// size: 234, +// aborted: false, +// rt: 398, +// keepAliveSocket: false +// }, +// data: { +// Name: "400", +// Content: "400w_90Q_1x.jpg", +// CreateTime: "Thu, 19 Mar 2015 08:34:21 GMT", +// LastModifyTime: "Thu, 19 Mar 2015 08:34:21 GMT" +// } +// } +``` + +### imgClient.listStyle([options]) + +Get all styles from the image channel. + +parameters: + +- [options] {Object} optional parameters + - [timeout] {Number} the operation timeout + +Success will return the info contains response. + +object: + +- res {Object} response info, including + - status {Number} response status + - headers {Object} response headers + - size {Number} response size + - rt {Number} request total use time (ms) +- data {Array} styles array, a style object: + - Name {String} style name + - Content {String} style content + - CreateTime {String} style create time + - LastModifyTime {String} style last modify time + +example: + +```js +const result = await imgClient.listStyle(); +// resut: +// { +// res: { +// status: 200, +// statusCode: 200, +// headers: { +// server: "Tengine", +// content - type: "application/xml", +// content - length: "913", +// connection: "keep-alive", +// date: "Tue, 31 Mar 2015 10:47:32 GMT" +// }, +// size: 913, +// aborted: false, +// rt: 1911, +// keepAliveSocket: false +// }, +// data: [{ +// Name: "200-200", +// Content: "0e_200w_200h_0c_0i_0o_90Q_1x.jpg", +// CreateTime: "Thu, 19 Mar 2015 08:28:08 GMT", +// LastModifyTime: "Thu, 19 Mar 2015 08:28:08 GMT" +// }, { +// Name: "800", +// Content: "800w_90Q_1x.jpg", +// CreateTime: "Thu, 19 Mar 2015 08:29:15 GMT", +// LastModifyTime: "Thu, 19 Mar 2015 08:29:15 GMT" +// }, { +// Name: "400", +// Content: "400w_90Q_1x.jpg", +// CreateTime: "Thu, 19 Mar 2015 08:34:21 GMT", +// LastModifyTime: "Thu, 19 Mar 2015 08:34:21 GMT" +// }, { +// Name: "600", +// Content: "600w_90Q_1x.jpg", +// CreateTime: "Thu, 19 Mar 2015 08:35:02 GMT", +// LastModifyTime: "Thu, 19 Mar 2015 08:35:02 GMT" +// }] +// } +``` + +### imgClient.deleteStyle(name[, options]) + +// TODO + +### imgClient.signatureUrl(name) + +Create a signature url for directly download. + +parameters: + +- name {String} image object name with operation style store on OSS +- [options] {Object} optional parameters + - [expires] {Number} after expires seconds, the url will become invalid, default is `1800` + - [timeout] {Number} the operation timeout + +Success will return full signature url. + +example: + +```js +const url = imgClient.signatureUrl('name'); +``` + +## Cluster Mode + +Cluster mode now only support object operations. + +```js +const Cluster = require('ali-oss').ClusterClient; + +const client = Cluster({ + cluster: [ + { + host: 'host1', + accessKeyId: 'id1', + accessKeySecret: 'secret1' + }, + { + host: 'host2', + accessKeyId: 'id2', + accessKeySecret: 'secret2' + } + ], + schedule: 'masterSlave' //default is `roundRobin` +}); + +// listen error event to logging error +client.on('error', function (err) { + console.error(err.stack); +}); + +// client init ready +client.ready(function () { + console.log('cluster client init ready, go ahead!'); +}); +``` + +### Get Methods + +Will choose an alive client by schedule(`masterSlave` or `roundRobin`). + +- `client.get()` +- `client.head()` +- `client.getStream()` +- `client.list()` +- `client.signatureUrl()` +- `client.chooseAvailable()` - choose an available client by schedule. +- `client.getACL()` + +### Put Methods + +Will put to all clients. + +- `client.put()` +- `client.putStream()` +- `client.delete()` +- `client.deleteMulti()` +- `client.copy()` +- `client.putMeta()` +- `client.putACL()` +- `client.restore()` + +## Known Errors + +Each error return by OSS server will contains these properties: + +- name {String} error name +- message {String} error message +- requestId {String} uuid for this request, if you meet some unhandled problem, + you can send this request id to OSS engineer to find out what's happend. +- hostId {String} OSS cluster name for this request + +### ResponseTimeoutError + +The default timeout is 60 seconds. Please set the timeout as needed. The timeout unit is milliseconds. + +```javascript +client.get('example.txt', { timeout: 60000 * 2 }); + +client.get('example.txt', { headers: { Range: `bytes=0-${1024 * 1024 * 100}` } }); // Download the first 100MB +``` + +### ConnectionTimeoutError + +The network link timed out. Please check the network status. If there is no problem with the network, please reduce the partSize or increase the timeout. + +```javascript +const client = new OSS({ ak, sk, retryMax: 10 }); + +client.multipartUpload('example.txt', { timeout: 60000 * 2 }); + +client.multipartUpload('example.txt', { partSize: 1024 * 512 }); // partSize 512KB +``` + +### The following table lists the OSS error codes: + +[More code info](https://help.aliyun.com/knowledge_detail/32005.html) + +| name | code | status | message | message in Chinese | +| ---------------------------------------- | ----------------------------------- | ------ | ------------------------------------------------ | -------------------------------------- | +| AccessDeniedError | AccessDenied | 403 | Access Denied | 拒绝访问 | +| BucketAlreadyExistsError | BucketAlreadyExists | 409 | Bucket already exists | Bucket 已经存在 | +| BucketNotEmptyError | BucketNotEmpty | 409 | Bucket is not empty | Bucket 不为空 | +| RestoreAlreadyInProgressError | RestoreAlreadyInProgress | 409 | The restore operation is in progress. | restore 操作正在进行中 | +| OperationNotSupportedError | OperationNotSupported | 400 | The operation is not supported for this resource | 该资源暂不支持restore操作 | +| EntityTooLargeError | EntityTooLarge | 400 | Entity too large | 实体过大 | +| EntityTooSmallError | EntityTooSmall | 400 | Entity too small | 实体过小 | +| FileGroupTooLargeError | FileGroupTooLarge | 400 | File group too large | 文件组过大 | +| InvalidLinkNameError | InvalidLinkName | 400 | Link name can't be the same as the object name | Object Link 与指向的 Object 同名 | +| LinkPartNotExistError | LinkPartNotExist | 400 | Can't link to not exists object | Object Link 中指向的 Object 不存在 | +| ObjectLinkTooLargeError | ObjectLinkTooLarge | 400 | Too many links to this object | Object Link 中 Object 个数过多 | +| FieldItemTooLongError | FieldItemTooLong | 400 | Post form fields items too large | Post 请求中表单域过大 | +| FilePartInterityError | FilePartInterity | 400 | File part has changed | 文件 Part 已改变 | +| FilePartNotExistError | FilePartNotExist | 400 | File part not exists | 文件 Part 不存在 | +| FilePartStaleError | FilePartStale | 400 | File part stale | 文件 Part 过时 | +| IncorrectNumberOfFilesInPOSTRequestError | IncorrectNumberOfFilesInPOSTRequest | 400 | Post request contains invalid number of files | Post 请求中文件个数非法 | +| InvalidArgumentError | InvalidArgument | 400 | Invalid format argument | 参数格式错误 | +| InvalidAccessKeyIdError | InvalidAccessKeyId | 400 | Access key id not exists | Access Key ID 不存在 | +| InvalidBucketNameError | InvalidBucketName | 400 | Invalid bucket name | 无效的 Bucket 名字 | +| InvalidDigestError | InvalidDigest | 400 | Invalid digest | 无效的摘要 | +| InvalidEncryptionAlgorithmError | InvalidEncryptionAlgorithm | 400 | Invalid encryption algorithm | 指定的熵编码加密算法错误 | +| InvalidObjectNameError | InvalidObjectName | 400 | Invalid object name | 无效的 Object 名字 | +| InvalidPartError | InvalidPart | 400 | Invalid part | 无效的 Part | +| InvalidPartOrderError | InvalidPartOrder | 400 | Invalid part order | 无效的 part 顺序 | +| InvalidPolicyDocumentError | InvalidPolicyDocument | 400 | Invalid policy document | 无效的 Policy 文档 | +| InvalidTargetBucketForLoggingError | InvalidTargetBucketForLogging | 400 | Invalid bucket on logging operation | Logging 操作中有无效的目标 bucket | +| InternalError | Internal | 500 | OSS server internal error | OSS 内部发生错误 | +| MalformedXMLError | MalformedXML | 400 | Malformed XML format | XML 格式非法 | +| MalformedPOSTRequestError | MalformedPOSTRequest | 400 | Invalid post body format | Post 请求的 body 格式非法 | +| MaxPOSTPreDataLengthExceededError | MaxPOSTPreDataLengthExceeded | 400 | Post extra data too large | Post 请求上传文件内容之外的 body 过大 | +| MethodNotAllowedError | MethodNotAllowed | 405 | Not allowed method | 不支持的方法 | +| MissingArgumentError | MissingArgument | 411 | Missing argument | 缺少参数 | +| MissingContentLengthError | MissingContentLength | 411 | Missing `Content-Length` header | 缺少内容长度 | +| NoSuchBucketError | NoSuchBucket | 404 | Bucket not exists | Bucket 不存在 | +| NoSuchKeyError | NoSuchKey | 404 | Object not exists | 文件不存在 | +| NoSuchUploadError | NoSuchUpload | 404 | Multipart upload id not exists | Multipart Upload ID 不存在 | +| NotImplementedError | NotImplemented | 501 | Not implemented | 无法处理的方法 | +| PreconditionFailedError | PreconditionFailed | 412 | Pre condition failed | 预处理错误 | +| RequestTimeTooSkewedError | RequestTimeTooSkewed | 403 | Request time exceeds 15 minutes to server time | 发起请求的时间和服务器时间超出 15 分钟 | +| RequestTimeoutError | RequestTimeout | 400 | Request timeout | 请求超时 | +| RequestIsNotMultiPartContentError | RequestIsNotMultiPartContent | 400 | Invalid post content-type | Post 请求 content-type 非法 | +| SignatureDoesNotMatchError | SignatureDoesNotMatch | 403 | Invalid signature | 签名错误 | +| TooManyBucketsError | TooManyBuckets | 400 | Too many buckets on this user | 用户的 Bucket 数目超过限制 | +| RequestError | RequestError | -1 | network error | 网络出现中断或异常 | +| ConnectionTimeoutError | ConnectionTimeoutError | -2 | request connect timeout | 请求连接超时 | +| SecurityTokenExpiredError | SecurityTokenExpired | 403 | sts Security Token Expired | sts Security Token 超时失效 | + +[generator]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function* +[oss-sts]: https://help.aliyun.com/document_detail/oss/practice/ram_guide.html +[browser-sample]: https://github.com/rockuw/oss-in-browser +[oss-multipart]: https://help.aliyun.com/document_detail/31992.html +[disabled-browser-headers]: https://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method diff --git a/node_modules/ali-oss/dist/aliyun-oss-sdk.js b/node_modules/ali-oss/dist/aliyun-oss-sdk.js new file mode 100644 index 0000000..93c2323 --- /dev/null +++ b/node_modules/ali-oss/dist/aliyun-oss-sdk.js @@ -0,0 +1,44130 @@ +// Aliyun OSS SDK for JavaScript v6.23.0 +// Copyright Aliyun.com, Inc. or its affiliates. All Rights Reserved. +// License at https://github.com/ali-sdk/ali-oss/blob/master/LICENSE +(function(global){(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.OSS = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ +"use strict"; + +var OSS = require('./browser/client'); +OSS.Buffer = require('buffer').Buffer; +OSS.urllib = require('../shims/xhr'); +OSS.version = require('./browser/version').version; +module.exports = OSS; + +},{"../shims/xhr":546,"./browser/client":3,"./browser/version":6,"buffer":103}],2:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.regexp.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.object.keys.js"); +require("core-js/modules/es.array.slice.js"); +var assert = require('assert'); +var _require = require('../common/utils/checkBucketName'), + _checkBucketName = _require.checkBucketName; +var proto = exports; +function isArray(arr) { + if (Array.isArray) return Array.isArray(arr); + return Object.prototype.toString.call(arr) === '[object Array]'; +} +function toArray(obj) { + if (!obj) return []; + if (isArray(obj)) return obj; + return [obj]; +} + +/** + * Bucket opertaions + */ + +// TODO: OSS server currently do not support CORS requests for bucket operations +// proto.listBuckets = function* listBuckets(query, options) { +// // prefix, marker, max-keys +// var result = yield this.request({ +// method: 'GET', +// query: query, +// timeout: options && options.timeout, +// ctx: options && options.ctx, +// }); +// +// if (result.status === 200) { +// var data = yield this.parseXML(result.data); +// var buckets = data.Buckets || null; +// if (buckets) { +// if (buckets.Bucket) { +// buckets = buckets.Bucket; +// } +// if (!isArray(buckets)) { +// buckets = [buckets]; +// } +// buckets = buckets.map(function (item) { +// return { +// name: item.Name, +// region: item.Location, +// creationDate: item.CreationDate, +// }; +// }); +// } +// return { +// buckets: buckets, +// owner: { +// id: data.Owner.ID, +// displayName: data.Owner.DisplayName, +// }, +// isTruncated: data.IsTruncated === 'true', +// nextMarker: data.NextMarker || null, +// res: result.res +// }; +// } +// +// throw yield this.requestError(result); +// }; + +proto.useBucket = function useBucket(name) { + _checkBucketName(name); + this.options.bucket = name; + return this; +}; +proto.setBucket = function useBucket(name) { + _checkBucketName(name); + this.options.bucket = name; + return this; +}; +proto.getBucket = function getBucket() { + return this.options.bucket; +}; +proto.deleteBucket = /*#__PURE__*/function () { + var _deleteBucket = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, options) { + var params, result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + params = this._bucketRequestParams('DELETE', name, '', options); + _context.next = 3; + return this.request(params); + case 3: + result = _context.sent; + if (!(result.status === 200 || result.status === 204)) { + _context.next = 6; + break; + } + return _context.abrupt("return", { + res: result.res + }); + case 6: + _context.next = 8; + return this.requestError(result); + case 8: + throw _context.sent; + case 9: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function deleteBucket(_x, _x2) { + return _deleteBucket.apply(this, arguments); + } + return deleteBucket; +}(); + +// acl + +proto.putBucketACL = /*#__PURE__*/function () { + var _putBucketACL = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(name, acl, options) { + var params, result; + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + params = this._bucketRequestParams('PUT', name, 'acl', options); + params.headers = { + 'x-oss-acl': acl + }; + params.successStatuses = [200]; + _context2.next = 5; + return this.request(params); + case 5: + result = _context2.sent; + return _context2.abrupt("return", { + bucket: result.headers.location && result.headers.location.substring(1) || null, + res: result.res + }); + case 7: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + function putBucketACL(_x3, _x4, _x5) { + return _putBucketACL.apply(this, arguments); + } + return putBucketACL; +}(); +proto.getBucketACL = /*#__PURE__*/function () { + var _getBucketACL = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(name, options) { + var params, result; + return _regenerator.default.wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + params = this._bucketRequestParams('GET', name, 'acl', options); + params.successStatuses = [200]; + params.xmlResponse = true; + _context3.next = 5; + return this.request(params); + case 5: + result = _context3.sent; + return _context3.abrupt("return", { + acl: result.data.AccessControlList.Grant, + owner: { + id: result.data.Owner.ID, + displayName: result.data.Owner.DisplayName + }, + res: result.res + }); + case 7: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + function getBucketACL(_x6, _x7) { + return _getBucketACL.apply(this, arguments); + } + return getBucketACL; +}(); + +// logging + +proto.putBucketLogging = /*#__PURE__*/function () { + var _putBucketLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(name, prefix, options) { + var params, xml, result; + return _regenerator.default.wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + params = this._bucketRequestParams('PUT', name, 'logging', options); + xml = '<?xml version="1.0" encoding="UTF-8"?>\n<BucketLoggingStatus>\n<LoggingEnabled>\n<TargetBucket>'.concat(name, "</TargetBucket>\n"); + if (prefix) { + xml += "<TargetPrefix>".concat(prefix, "</TargetPrefix>\n"); + } + xml += '</LoggingEnabled>\n</BucketLoggingStatus>'; + params.content = xml; + params.mime = 'xml'; + params.successStatuses = [200]; + _context4.next = 9; + return this.request(params); + case 9: + result = _context4.sent; + return _context4.abrupt("return", { + res: result.res + }); + case 11: + case "end": + return _context4.stop(); + } + }, _callee4, this); + })); + function putBucketLogging(_x8, _x9, _x10) { + return _putBucketLogging.apply(this, arguments); + } + return putBucketLogging; +}(); +proto.getBucketLogging = /*#__PURE__*/function () { + var _getBucketLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(name, options) { + var params, result, enable; + return _regenerator.default.wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + params = this._bucketRequestParams('GET', name, 'logging', options); + params.successStatuses = [200]; + params.xmlResponse = true; + _context5.next = 5; + return this.request(params); + case 5: + result = _context5.sent; + enable = result.data.LoggingEnabled; + return _context5.abrupt("return", { + enable: !!enable, + prefix: enable && enable.TargetPrefix || null, + res: result.res + }); + case 8: + case "end": + return _context5.stop(); + } + }, _callee5, this); + })); + function getBucketLogging(_x11, _x12) { + return _getBucketLogging.apply(this, arguments); + } + return getBucketLogging; +}(); +proto.deleteBucketLogging = /*#__PURE__*/function () { + var _deleteBucketLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(name, options) { + var params, result; + return _regenerator.default.wrap(function _callee6$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + params = this._bucketRequestParams('DELETE', name, 'logging', options); + params.successStatuses = [204, 200]; + _context6.next = 4; + return this.request(params); + case 4: + result = _context6.sent; + return _context6.abrupt("return", { + res: result.res + }); + case 6: + case "end": + return _context6.stop(); + } + }, _callee6, this); + })); + function deleteBucketLogging(_x13, _x14) { + return _deleteBucketLogging.apply(this, arguments); + } + return deleteBucketLogging; +}(); +proto.putBucketCORS = /*#__PURE__*/function () { + var _putBucketCORS = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(name, rules, options) { + var params, xml, parseOrigin, parseMethod, parseHeader, parseExposeHeader, i, l, rule, result; + return _regenerator.default.wrap(function _callee7$(_context7) { + while (1) switch (_context7.prev = _context7.next) { + case 0: + rules = rules || []; + assert(rules.length, 'rules is required'); + rules.forEach(function (rule) { + assert(rule.allowedOrigin, 'allowedOrigin is required'); + assert(rule.allowedMethod, 'allowedMethod is required'); + }); + params = this._bucketRequestParams('PUT', name, 'cors', options); + xml = '<?xml version="1.0" encoding="UTF-8"?>\n<CORSConfiguration>'; + parseOrigin = function parseOrigin(val) { + xml += "<AllowedOrigin>".concat(val, "</AllowedOrigin>"); + }; + parseMethod = function parseMethod(val) { + xml += "<AllowedMethod>".concat(val, "</AllowedMethod>"); + }; + parseHeader = function parseHeader(val) { + xml += "<AllowedHeader>".concat(val, "</AllowedHeader>"); + }; + parseExposeHeader = function parseExposeHeader(val) { + xml += "<ExposeHeader>".concat(val, "</ExposeHeader>"); + }; + for (i = 0, l = rules.length; i < l; i++) { + rule = rules[i]; + xml += '<CORSRule>'; + toArray(rule.allowedOrigin).forEach(parseOrigin); + toArray(rule.allowedMethod).forEach(parseMethod); + toArray(rule.allowedHeader).forEach(parseHeader); + toArray(rule.exposeHeader).forEach(parseExposeHeader); + if (rule.maxAgeSeconds) { + xml += "<MaxAgeSeconds>".concat(rule.maxAgeSeconds, "</MaxAgeSeconds>"); + } + xml += '</CORSRule>'; + } + xml += '</CORSConfiguration>'; + params.content = xml; + params.mime = 'xml'; + params.successStatuses = [200]; + _context7.next = 16; + return this.request(params); + case 16: + result = _context7.sent; + return _context7.abrupt("return", { + res: result.res + }); + case 18: + case "end": + return _context7.stop(); + } + }, _callee7, this); + })); + function putBucketCORS(_x15, _x16, _x17) { + return _putBucketCORS.apply(this, arguments); + } + return putBucketCORS; +}(); +proto.getBucketCORS = /*#__PURE__*/function () { + var _getBucketCORS = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(name, options) { + var params, result, rules, CORSRule; + return _regenerator.default.wrap(function _callee8$(_context8) { + while (1) switch (_context8.prev = _context8.next) { + case 0: + params = this._bucketRequestParams('GET', name, 'cors', options); + params.successStatuses = [200]; + params.xmlResponse = true; + _context8.next = 5; + return this.request(params); + case 5: + result = _context8.sent; + rules = []; + if (result.data && result.data.CORSRule) { + CORSRule = result.data.CORSRule; + if (!isArray(CORSRule)) CORSRule = [CORSRule]; + CORSRule.forEach(function (rule) { + var r = {}; + Object.keys(rule).forEach(function (key) { + r[key.slice(0, 1).toLowerCase() + key.slice(1, key.length)] = rule[key]; + }); + rules.push(r); + }); + } + return _context8.abrupt("return", { + rules: rules, + res: result.res + }); + case 9: + case "end": + return _context8.stop(); + } + }, _callee8, this); + })); + function getBucketCORS(_x18, _x19) { + return _getBucketCORS.apply(this, arguments); + } + return getBucketCORS; +}(); +proto.deleteBucketCORS = /*#__PURE__*/function () { + var _deleteBucketCORS = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(name, options) { + var params, result; + return _regenerator.default.wrap(function _callee9$(_context9) { + while (1) switch (_context9.prev = _context9.next) { + case 0: + params = this._bucketRequestParams('DELETE', name, 'cors', options); + params.successStatuses = [204]; + _context9.next = 4; + return this.request(params); + case 4: + result = _context9.sent; + return _context9.abrupt("return", { + res: result.res + }); + case 6: + case "end": + return _context9.stop(); + } + }, _callee9, this); + })); + function deleteBucketCORS(_x20, _x21) { + return _deleteBucketCORS.apply(this, arguments); + } + return deleteBucketCORS; +}(); + +// referer + +proto.putBucketReferer = /*#__PURE__*/function () { + var _putBucketReferer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(name, allowEmpty, referers, options) { + var params, xml, i, result; + return _regenerator.default.wrap(function _callee10$(_context10) { + while (1) switch (_context10.prev = _context10.next) { + case 0: + params = this._bucketRequestParams('PUT', name, 'referer', options); + xml = '<?xml version="1.0" encoding="UTF-8"?>\n<RefererConfiguration>\n'; + xml += " <AllowEmptyReferer>".concat(allowEmpty ? 'true' : 'false', "</AllowEmptyReferer>\n"); + if (referers && referers.length > 0) { + xml += ' <RefererList>\n'; + for (i = 0; i < referers.length; i++) { + xml += " <Referer>".concat(referers[i], "</Referer>\n"); + } + xml += ' </RefererList>\n'; + } else { + xml += ' <RefererList />\n'; + } + xml += '</RefererConfiguration>'; + params.content = xml; + params.mime = 'xml'; + params.successStatuses = [200]; + _context10.next = 10; + return this.request(params); + case 10: + result = _context10.sent; + return _context10.abrupt("return", { + res: result.res + }); + case 12: + case "end": + return _context10.stop(); + } + }, _callee10, this); + })); + function putBucketReferer(_x22, _x23, _x24, _x25) { + return _putBucketReferer.apply(this, arguments); + } + return putBucketReferer; +}(); +proto.getBucketReferer = /*#__PURE__*/function () { + var _getBucketReferer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(name, options) { + var params, result, referers; + return _regenerator.default.wrap(function _callee11$(_context11) { + while (1) switch (_context11.prev = _context11.next) { + case 0: + params = this._bucketRequestParams('GET', name, 'referer', options); + params.successStatuses = [200]; + params.xmlResponse = true; + _context11.next = 5; + return this.request(params); + case 5: + result = _context11.sent; + referers = result.data.RefererList.Referer || null; + if (referers) { + if (!isArray(referers)) { + referers = [referers]; + } + } + return _context11.abrupt("return", { + allowEmpty: result.data.AllowEmptyReferer === 'true', + referers: referers, + res: result.res + }); + case 9: + case "end": + return _context11.stop(); + } + }, _callee11, this); + })); + function getBucketReferer(_x26, _x27) { + return _getBucketReferer.apply(this, arguments); + } + return getBucketReferer; +}(); +proto.deleteBucketReferer = /*#__PURE__*/function () { + var _deleteBucketReferer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(name, options) { + return _regenerator.default.wrap(function _callee12$(_context12) { + while (1) switch (_context12.prev = _context12.next) { + case 0: + _context12.next = 2; + return this.putBucketReferer(name, true, null, options); + case 2: + return _context12.abrupt("return", _context12.sent); + case 3: + case "end": + return _context12.stop(); + } + }, _callee12, this); + })); + function deleteBucketReferer(_x28, _x29) { + return _deleteBucketReferer.apply(this, arguments); + } + return deleteBucketReferer; +}(); + +// private apis + +proto._bucketRequestParams = function _bucketRequestParams(method, bucket, subres, options) { + return { + method: method, + bucket: bucket, + subres: subres, + additionalHeaders: options && options.additionalHeaders, + timeout: options && options.timeout, + ctx: options && options.ctx + }; +}; + +},{"../common/utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"assert":95,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/web.dom-collections.for-each.js":380}],3:[function(require,module,exports){ +(function (Buffer,process){(function (){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +require("core-js/modules/es.function.name.js"); +require("core-js/modules/es.object.assign.js"); +require("core-js/modules/es.array.includes.js"); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.replace.js"); +require("core-js/modules/es.array.concat.js"); +require("core-js/modules/es.symbol.js"); +require("core-js/modules/es.symbol.description.js"); +require("core-js/modules/es.array.slice.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.promise.js"); +require("core-js/modules/es.regexp.to-string.js"); +var debug = require('debug')('ali-oss'); +var xml = require('xml2js'); +var AgentKeepalive = require('agentkeepalive'); +var merge = require('merge-descriptors'); +var platform = require('platform'); +var utility = require('utility'); +var urllib = require('urllib'); +var pkg = require('./version'); +var bowser = require('bowser'); +var signUtils = require('../common/signUtils'); +var _initOptions = require('../common/client/initOptions'); +var _require = require('../common/utils/createRequest'), + createRequest = _require.createRequest; +var _require2 = require('../common/utils/encoder'), + encoder = _require2.encoder; +var _require3 = require('../common/client/getReqUrl'), + getReqUrl = _require3.getReqUrl; +var _require4 = require('../common/utils/setSTSToken'), + setSTSToken = _require4.setSTSToken; +var _require5 = require('../common/utils/retry'), + retry = _require5.retry; +var _require6 = require('../common/utils/isFunction'), + isFunction = _require6.isFunction; +var _require7 = require('../common/utils/getStandardRegion'), + getStandardRegion = _require7.getStandardRegion; +var globalHttpAgent = new AgentKeepalive(); +function _unSupportBrowserTip() { + var name = platform.name, + version = platform.version; + if (name && name.toLowerCase && name.toLowerCase() === 'ie' && version.split('.')[0] < 10) { + // eslint-disable-next-line no-console + console.warn('ali-oss does not support the current browser'); + } +} +// check local web protocol,if https secure default set true , if http secure default set false +function isHttpsWebProtocol() { + // for web worker not use window.location. + // eslint-disable-next-line no-restricted-globals + return location && location.protocol === 'https:'; +} +function Client(options, ctx) { + _unSupportBrowserTip(); + if (!(this instanceof Client)) { + return new Client(options, ctx); + } + if (options && options.inited) { + this.options = options; + } else { + this.options = Client.initOptions(options); + } + this.options.cancelFlag = false; // cancel flag: if true need to be cancelled, default false + + // support custom agent and urllib client + if (this.options.urllib) { + this.urllib = this.options.urllib; + } else { + this.urllib = urllib; + this.agent = this.options.agent || globalHttpAgent; + } + this.ctx = ctx; + this.userAgent = this._getUserAgent(); + this.stsTokenFreshTime = new Date(); + + // record the time difference between client and server + this.options.amendTimeSkewed = 0; +} + +/** + * Expose `Client` + */ + +module.exports = Client; +Client.initOptions = function initOptions(options) { + if (!options.stsToken) { + console.warn('Please use STS Token for safety, see more details at https://help.aliyun.com/document_detail/32077.html'); + } + var opts = Object.assign({ + secure: isHttpsWebProtocol(), + // for browser compatibility disable fetch. + useFetch: false + }, options); + return _initOptions(opts); +}; + +/** + * prototype + */ + +var proto = Client.prototype; + +// mount debug on proto +proto.debug = debug; + +/** + * Object operations + */ +merge(proto, require('./object')); +/** + * Bucket operations + */ +merge(proto, require('./bucket')); +merge(proto, require('../common/bucket/getBucketWebsite')); +merge(proto, require('../common/bucket/putBucketWebsite')); +merge(proto, require('../common/bucket/deleteBucketWebsite')); + +// lifecycle +merge(proto, require('../common/bucket/getBucketLifecycle')); +merge(proto, require('../common/bucket/putBucketLifecycle')); +merge(proto, require('../common/bucket/deleteBucketLifecycle')); + +// multiversion +merge(proto, require('../common/bucket/putBucketVersioning')); +merge(proto, require('../common/bucket/getBucketVersioning')); + +// inventory +merge(proto, require('../common/bucket/getBucketInventory')); +merge(proto, require('../common/bucket/deleteBucketInventory')); +merge(proto, require('../common/bucket/listBucketInventory')); +merge(proto, require('../common/bucket/putBucketInventory')); + +// worm +merge(proto, require('../common/bucket/abortBucketWorm')); +merge(proto, require('../common/bucket/completeBucketWorm')); +merge(proto, require('../common/bucket/extendBucketWorm')); +merge(proto, require('../common/bucket/getBucketWorm')); +merge(proto, require('../common/bucket/initiateBucketWorm')); + +// multipart upload +merge(proto, require('./managed-upload')); +/** + * common multipart-copy support node and browser + */ +merge(proto, require('../common/multipart-copy')); +/** + * Multipart operations + */ +merge(proto, require('../common/multipart')); + +/** + * Common module parallel + */ +merge(proto, require('../common/parallel')); + +/** + * get OSS signature + * @param {String} stringToSign + * @return {String} the signature + */ +proto.signature = function signature(stringToSign) { + this.debug('authorization stringToSign: %s', stringToSign, 'info'); + return signUtils.computeSignature(this.options.accessKeySecret, stringToSign, this.options.headerEncoding); +}; +proto._getReqUrl = getReqUrl; + +/** + * get author header + * + * "Authorization: OSS " + Access Key Id + ":" + Signature + * + * Signature = base64(hmac-sha1(Access Key Secret + "\n" + * + VERB + "\n" + * + CONTENT-MD5 + "\n" + * + CONTENT-TYPE + "\n" + * + DATE + "\n" + * + CanonicalizedOSSHeaders + * + CanonicalizedResource)) + * + * @param {String} method + * @param {String} resource + * @param {Object} header + * @return {String} + * + * @api private + */ + +proto.authorization = function authorization(method, resource, subres, headers) { + var stringToSign = signUtils.buildCanonicalString(method.toUpperCase(), resource, { + headers: headers, + parameters: subres + }); + return signUtils.authorization(this.options.accessKeyId, this.options.accessKeySecret, stringToSign, this.options.headerEncoding); +}; + +/** + * get authorization header v4 + * + * @param {string} method + * @param {Object} requestParams + * @param {Object} requestParams.headers + * @param {(string|string[]|Object)} [requestParams.queries] + * @param {string} [bucketName] + * @param {string} [objectName] + * @param {string[]} [additionalHeaders] + * @return {string} + * + * @api private + */ +proto.authorizationV4 = function authorizationV4(method, requestParams, bucketName, objectName, additionalHeaders) { + return signUtils.authorizationV4(this.options.accessKeyId, this.options.accessKeySecret, getStandardRegion(this.options.region), method, requestParams, bucketName, objectName, additionalHeaders, this.options.headerEncoding); +}; + +/** + * request oss server + * @param {Object} params + * - {String} object + * - {String} bucket + * - {Object} [headers] + * - {Object} [query] + * - {Buffer} [content] + * - {Stream} [stream] + * - {Stream} [writeStream] + * - {String} [mime] + * - {Boolean} [xmlResponse] + * - {Boolean} [customResponse] + * - {Number} [timeout] + * - {Object} [ctx] request context, default is `this.ctx` + * + * @api private + */ + +proto.request = /*#__PURE__*/function () { + var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(params) { + var _this = this; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (!this.options.retryMax) { + _context.next = 6; + break; + } + _context.next = 3; + return retry(request.bind(this), this.options.retryMax, { + errorHandler: function errorHandler(err) { + var _errHandle = function _errHandle(_err) { + if (params.stream) return false; + var statusErr = [-1, -2].includes(_err.status); + var requestErrorRetryHandle = _this.options.requestErrorRetryHandle || function () { + return true; + }; + return statusErr && requestErrorRetryHandle(_err); + }; + if (_errHandle(err)) return true; + return false; + } + })(params); + case 3: + return _context.abrupt("return", _context.sent); + case 6: + return _context.abrupt("return", request.call(this, params)); + case 7: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + return function (_x) { + return _ref.apply(this, arguments); + }; +}(); +function request(_x2) { + return _request.apply(this, arguments); +} +function _request() { + _request = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(params) { + var reqParams, result, reqErr, useStream, err, parseData; + return _regenerator.default.wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + if (!(this.options.stsToken && isFunction(this.options.refreshSTSToken))) { + _context4.next = 3; + break; + } + _context4.next = 3; + return setSTSToken.call(this); + case 3: + reqParams = createRequest.call(this, params); + if (!this.options.useFetch) { + reqParams.params.mode = 'disable-fetch'; + } + useStream = !!params.stream; + _context4.prev = 6; + _context4.next = 9; + return this.urllib.request(reqParams.url, reqParams.params); + case 9: + result = _context4.sent; + this.debug('response %s %s, got %s, headers: %j', params.method, reqParams.url, result.status, result.headers, 'info'); + _context4.next = 16; + break; + case 13: + _context4.prev = 13; + _context4.t0 = _context4["catch"](6); + reqErr = _context4.t0; + case 16: + if (!(result && params.successStatuses && params.successStatuses.indexOf(result.status) === -1)) { + _context4.next = 28; + break; + } + _context4.next = 19; + return this.requestError(result); + case 19: + err = _context4.sent; + if (!(err.code === 'RequestTimeTooSkewed' && !useStream)) { + _context4.next = 25; + break; + } + this.options.amendTimeSkewed = +new Date(err.serverTime) - new Date(); + _context4.next = 24; + return this.request(params); + case 24: + return _context4.abrupt("return", _context4.sent); + case 25: + err.params = params; + _context4.next = 32; + break; + case 28: + if (!reqErr) { + _context4.next = 32; + break; + } + _context4.next = 31; + return this.requestError(reqErr); + case 31: + err = _context4.sent; + case 32: + if (!err) { + _context4.next = 34; + break; + } + throw err; + case 34: + if (!params.xmlResponse) { + _context4.next = 39; + break; + } + _context4.next = 37; + return this.parseXML(result.data); + case 37: + parseData = _context4.sent; + result.data = parseData; + case 39: + return _context4.abrupt("return", result); + case 40: + case "end": + return _context4.stop(); + } + }, _callee4, this, [[6, 13]]); + })); + return _request.apply(this, arguments); +} +proto._getResource = function _getResource(params) { + var resource = '/'; + if (params.bucket) resource += "".concat(params.bucket, "/"); + if (params.object) resource += encoder(params.object, this.options.headerEncoding); + return resource; +}; +proto._escape = function _escape(name) { + return utility.encodeURIComponent(name).replace(/%2F/g, '/'); +}; + +/* + * Get User-Agent for browser & node.js + * @example + * aliyun-sdk-nodejs/4.1.2 Node.js 5.3.0 on Darwin 64-bit + * aliyun-sdk-js/4.1.2 Safari 9.0 on Apple iPhone(iOS 9.2.1) + * aliyun-sdk-js/4.1.2 Chrome 43.0.2357.134 32-bit on Windows Server 2008 R2 / 7 64-bit + */ + +proto._getUserAgent = function _getUserAgent() { + var agent = process && process.browser ? 'js' : 'nodejs'; + var sdk = "aliyun-sdk-".concat(agent, "/").concat(pkg.version); + var plat = platform.description; + if (!plat && process) { + plat = "Node.js ".concat(process.version.slice(1), " on ").concat(process.platform, " ").concat(process.arch); + } + return this._checkUserAgent("".concat(sdk, " ").concat(plat)); +}; +proto._checkUserAgent = function _checkUserAgent(ua) { + var userAgent = ua.replace(/\u03b1/, 'alpha').replace(/\u03b2/, 'beta'); + return userAgent; +}; + +/* + * Check Browser And Version + * @param {String} [name] browser name: like IE, Chrome, Firefox + * @param {String} [version] browser major version: like 10(IE 10.x), 55(Chrome 55.x), 50(Firefox 50.x) + * @return {Bool} true or false + * @api private + */ + +proto.checkBrowserAndVersion = function checkBrowserAndVersion(name, version) { + return bowser.name === name && bowser.version.split('.')[0] === version; +}; + +/** + * thunkify xml.parseString + * @param {String|Buffer} str + * + * @api private + */ + +proto.parseXML = function parseXMLThunk(str) { + return new Promise(function (resolve, reject) { + if (Buffer.isBuffer(str)) { + str = str.toString(); + } + xml.parseString(str, { + explicitRoot: false, + explicitArray: false + }, function (err, result) { + if (err) { + reject(err); + } else { + resolve(result); + } + }); + }); +}; + +/** + * generater a request error with request response + * @param {Object} result + * + * @api private + */ + +proto.requestError = /*#__PURE__*/function () { + var _requestError = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(result) { + var _this2 = this; + var err, setError, ossErr, message, _message; + return _regenerator.default.wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + err = null; + setError = /*#__PURE__*/function () { + var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(message) { + var info, msg; + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.prev = 0; + _context2.next = 3; + return _this2.parseXML(message); + case 3: + _context2.t0 = _context2.sent; + if (_context2.t0) { + _context2.next = 6; + break; + } + _context2.t0 = {}; + case 6: + info = _context2.t0; + _context2.next = 16; + break; + case 9: + _context2.prev = 9; + _context2.t1 = _context2["catch"](0); + _this2.debug(message, 'error'); + _context2.t1.message += "\nraw xml: ".concat(message); + _context2.t1.status = result.status; + _context2.t1.requestId = result.headers && result.headers['x-oss-request-id']; + return _context2.abrupt("return", _context2.t1); + case 16: + msg = info.Message || "unknow request error, status: ".concat(result.status); + if (info.Condition) { + msg += " (condition: ".concat(info.Condition, ")"); + } + err = new Error(msg); + err.name = info.Code ? "".concat(info.Code, "Error") : 'UnknownError'; + err.status = result.status; + err.code = info.Code; + err.ecCode = info.EC; + err.requestId = info.RequestId; + err.hostId = info.HostId; + err.serverTime = info.ServerTime; + return _context2.abrupt("return", err); + case 27: + case "end": + return _context2.stop(); + } + }, _callee2, null, [[0, 9]]); + })); + return function setError(_x4) { + return _ref2.apply(this, arguments); + }; + }(); + if (!(!result.data || !result.data.length)) { + _context3.next = 38; + break; + } + if (!(result.status === -1 || result.status === -2)) { + _context3.next = 10; + break; + } + // -1 is net error , -2 is timeout + err = new Error(result.message); + err.name = result.name; + err.status = result.status; + err.code = result.name; + _context3.next = 36; + break; + case 10: + if (!(result.status === 404)) { + _context3.next = 17; + break; + } + err = new Error('Object not exists'); + err.name = 'NoSuchKeyError'; + err.status = 404; + err.code = 'NoSuchKey'; + _context3.next = 34; + break; + case 17: + if (!(result.status === 412)) { + _context3.next = 24; + break; + } + err = new Error('Pre condition failed'); + err.name = 'PreconditionFailedError'; + err.status = 412; + err.code = 'PreconditionFailed'; + _context3.next = 34; + break; + case 24: + err = new Error("Unknow error, status: ".concat(result.status)); + err.name = 'UnknownError'; + err.status = result.status; + err.res = result; + ossErr = result.headers && result.headers['x-oss-err']; + if (!ossErr) { + _context3.next = 34; + break; + } + message = atob(ossErr); + _context3.next = 33; + return setError(message); + case 33: + err = _context3.sent; + case 34: + err.requestId = result.headers && result.headers['x-oss-request-id']; + err.host = ''; + case 36: + _context3.next = 43; + break; + case 38: + _message = String(result.data); + this.debug('request response error data: %s', _message, 'error'); + _context3.next = 42; + return setError(_message); + case 42: + err = _context3.sent; + case 43: + this.debug('generate error %j', err, 'error'); + return _context3.abrupt("return", err); + case 45: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + function requestError(_x3) { + return _requestError.apply(this, arguments); + } + return requestError; +}(); + +}).call(this)}).call(this,{"isBuffer":require("../../node_modules/is-buffer/index.js")},require('_process')) +},{"../../node_modules/is-buffer/index.js":409,"../common/bucket/abortBucketWorm":7,"../common/bucket/completeBucketWorm":8,"../common/bucket/deleteBucketInventory":9,"../common/bucket/deleteBucketLifecycle":10,"../common/bucket/deleteBucketWebsite":11,"../common/bucket/extendBucketWorm":12,"../common/bucket/getBucketInventory":13,"../common/bucket/getBucketLifecycle":14,"../common/bucket/getBucketVersioning":15,"../common/bucket/getBucketWebsite":16,"../common/bucket/getBucketWorm":17,"../common/bucket/initiateBucketWorm":18,"../common/bucket/listBucketInventory":19,"../common/bucket/putBucketInventory":20,"../common/bucket/putBucketLifecycle":21,"../common/bucket/putBucketVersioning":22,"../common/bucket/putBucketWebsite":23,"../common/client/getReqUrl":25,"../common/client/initOptions":26,"../common/multipart":30,"../common/multipart-copy":29,"../common/parallel":51,"../common/signUtils":52,"../common/utils/createRequest":58,"../common/utils/encoder":62,"../common/utils/getStandardRegion":65,"../common/utils/isFunction":72,"../common/utils/retry":80,"../common/utils/setSTSToken":82,"./bucket":2,"./managed-upload":4,"./object":5,"./version":6,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"_process":538,"agentkeepalive":94,"bowser":101,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.includes.js":315,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.function.name.js":322,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.replace.js":345,"core-js/modules/es.symbol.description.js":351,"core-js/modules/es.symbol.js":354,"debug":536,"merge-descriptors":428,"platform":440,"urllib":546,"utility":545,"xml2js":496}],4:[function(require,module,exports){ +(function (Buffer){(function (){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.function.name.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.promise.js"); +require("core-js/modules/es.array.from.js"); +require("core-js/modules/es.string.iterator.js"); +require("core-js/modules/es.array.map.js"); +require("core-js/modules/es.array.filter.js"); +require("core-js/modules/es.array.find.js"); +require("core-js/modules/es.array.concat.js"); +require("core-js/modules/es.regexp.to-string.js"); +require("core-js/modules/es.array.slice.js"); +require("core-js/modules/es.array.iterator.js"); +require("core-js/modules/es.array-buffer.slice.js"); +require("core-js/modules/es.typed-array.uint8-array.js"); +require("core-js/modules/es.typed-array.copy-within.js"); +require("core-js/modules/es.typed-array.every.js"); +require("core-js/modules/es.typed-array.fill.js"); +require("core-js/modules/es.typed-array.filter.js"); +require("core-js/modules/es.typed-array.find.js"); +require("core-js/modules/es.typed-array.find-index.js"); +require("core-js/modules/es.typed-array.for-each.js"); +require("core-js/modules/es.typed-array.includes.js"); +require("core-js/modules/es.typed-array.index-of.js"); +require("core-js/modules/es.typed-array.iterator.js"); +require("core-js/modules/es.typed-array.join.js"); +require("core-js/modules/es.typed-array.last-index-of.js"); +require("core-js/modules/es.typed-array.map.js"); +require("core-js/modules/es.typed-array.reduce.js"); +require("core-js/modules/es.typed-array.reduce-right.js"); +require("core-js/modules/es.typed-array.reverse.js"); +require("core-js/modules/es.typed-array.set.js"); +require("core-js/modules/es.typed-array.slice.js"); +require("core-js/modules/es.typed-array.some.js"); +require("core-js/modules/es.typed-array.sort.js"); +require("core-js/modules/es.typed-array.subarray.js"); +require("core-js/modules/es.typed-array.to-locale-string.js"); +require("core-js/modules/es.typed-array.to-string.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +// var debug = require('debug')('ali-oss:multipart'); +var util = require('util'); +var path = require('path'); +var mime = require('mime'); +var copy = require('copy-to'); +var _require = require('../common/utils/isBlob'), + isBlob = _require.isBlob; +var _require2 = require('../common/utils/isFile'), + isFile = _require2.isFile; +var _require3 = require('../common/utils/isBuffer'), + isBuffer = _require3.isBuffer; +var proto = exports; + +/** + * Multipart operations + */ + +/** + * Upload a file to OSS using multipart uploads + * @param {String} name + * @param {String|File|Buffer} file + * @param {Object} options + * {Object} [options.callback] The callback parameter is composed of a JSON string encoded in Base64 + * {String} options.callback.url the OSS sends a callback request to this URL + * {String} [options.callback.host] The host header value for initiating callback requests + * {String} options.callback.body The value of the request body when a callback is initiated + * {String} [options.callback.contentType] The Content-Type of the callback requests initiated + * {Boolean} [options.callback.callbackSNI] Whether OSS sends SNI to the origin address specified by callbackUrl when a callback request is initiated from the client + * {Object} [options.callback.customValue] Custom parameters are a map of key-values, e.g: + * customValue = { + * key1: 'value1', + * key2: 'value2' + * } + */ +proto.multipartUpload = /*#__PURE__*/function () { + var _multipartUpload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, file) { + var options, + minPartSize, + fileSize, + result, + ret, + initResult, + uploadId, + partSize, + checkpoint, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {}; + this.resetCancelFlag(); + options.disabledMD5 = options.disabledMD5 === undefined ? true : !!options.disabledMD5; + if (!(options.checkpoint && options.checkpoint.uploadId)) { + _context.next = 8; + break; + } + if (file && isFile(file)) options.checkpoint.file = file; + _context.next = 7; + return this._resumeMultipart(options.checkpoint, options); + case 7: + return _context.abrupt("return", _context.sent); + case 8: + minPartSize = 100 * 1024; + if (!options.mime) { + if (isFile(file)) { + options.mime = mime.getType(path.extname(file.name)); + } else if (isBlob(file)) { + options.mime = file.type; + } else if (isBuffer(file)) { + options.mime = ''; + } else { + options.mime = mime.getType(path.extname(file)); + } + } + options.headers = options.headers || {}; + this._convertMetaToHeaders(options.meta, options.headers); + _context.next = 14; + return this._getFileSize(file); + case 14: + fileSize = _context.sent; + if (!(fileSize < minPartSize)) { + _context.next = 26; + break; + } + options.contentLength = fileSize; + _context.next = 19; + return this.put(name, file, options); + case 19: + result = _context.sent; + if (!(options && options.progress)) { + _context.next = 23; + break; + } + _context.next = 23; + return options.progress(1); + case 23: + ret = { + res: result.res, + bucket: this.options.bucket, + name: name, + etag: result.res.headers.etag + }; + if (options.headers && options.headers['x-oss-callback'] || options.callback) { + ret.data = result.data; + } + return _context.abrupt("return", ret); + case 26: + if (!(options.partSize && !(parseInt(options.partSize, 10) === options.partSize))) { + _context.next = 28; + break; + } + throw new Error('partSize must be int number'); + case 28: + if (!(options.partSize && options.partSize < minPartSize)) { + _context.next = 30; + break; + } + throw new Error("partSize must not be smaller than ".concat(minPartSize)); + case 30: + _context.next = 32; + return this.initMultipartUpload(name, options); + case 32: + initResult = _context.sent; + uploadId = initResult.uploadId; + partSize = this._getPartSize(fileSize, options.partSize); + checkpoint = { + file: file, + name: name, + fileSize: fileSize, + partSize: partSize, + uploadId: uploadId, + doneParts: [] + }; + if (!(options && options.progress)) { + _context.next = 39; + break; + } + _context.next = 39; + return options.progress(0, checkpoint, initResult.res); + case 39: + _context.next = 41; + return this._resumeMultipart(checkpoint, options); + case 41: + return _context.abrupt("return", _context.sent); + case 42: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function multipartUpload(_x, _x2) { + return _multipartUpload.apply(this, arguments); + } + return multipartUpload; +}(); + +/* + * Resume multipart upload from checkpoint. The checkpoint will be + * updated after each successful part upload. + * @param {Object} checkpoint the checkpoint + * @param {Object} options + */ +proto._resumeMultipart = /*#__PURE__*/function () { + var _resumeMultipart2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(checkpoint, options) { + var that, file, fileSize, partSize, uploadId, doneParts, name, internalDoneParts, partOffs, numParts, multipartFinish, uploadPartJob, all, done, todo, defaultParallel, parallel, jobErr, abortEvent; + return _regenerator.default.wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + that = this; + if (!this.isCancel()) { + _context3.next = 3; + break; + } + throw this._makeCancelEvent(); + case 3: + file = checkpoint.file, fileSize = checkpoint.fileSize, partSize = checkpoint.partSize, uploadId = checkpoint.uploadId, doneParts = checkpoint.doneParts, name = checkpoint.name; + internalDoneParts = []; + if (doneParts.length > 0) { + copy(doneParts).to(internalDoneParts); + } + partOffs = this._divideParts(fileSize, partSize); + numParts = partOffs.length; + multipartFinish = false; + uploadPartJob = function uploadPartJob(self, partNo) { + // eslint-disable-next-line no-async-promise-executor + return new Promise( /*#__PURE__*/function () { + var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(resolve, reject) { + var pi, content, data, result, tempErr; + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + _context2.prev = 0; + if (self.isCancel()) { + _context2.next = 29; + break; + } + pi = partOffs[partNo - 1]; + _context2.next = 5; + return self._createBuffer(file, pi.start, pi.end); + case 5: + content = _context2.sent; + data = { + content: content, + size: pi.end - pi.start + }; + _context2.prev = 7; + _context2.next = 10; + return self._uploadPart(name, uploadId, partNo, data, options); + case 10: + result = _context2.sent; + _context2.next = 18; + break; + case 13: + _context2.prev = 13; + _context2.t0 = _context2["catch"](7); + if (!(_context2.t0.status === 404)) { + _context2.next = 17; + break; + } + throw self._makeAbortEvent(); + case 17: + throw _context2.t0; + case 18: + if (!(!self.isCancel() && !multipartFinish)) { + _context2.next = 26; + break; + } + checkpoint.doneParts.push({ + number: partNo, + etag: result.res.headers.etag + }); + if (!options.progress) { + _context2.next = 23; + break; + } + _context2.next = 23; + return options.progress(doneParts.length / (numParts + 1), checkpoint, result.res); + case 23: + resolve({ + number: partNo, + etag: result.res.headers.etag + }); + _context2.next = 27; + break; + case 26: + resolve(); + case 27: + _context2.next = 30; + break; + case 29: + resolve(); + case 30: + _context2.next = 41; + break; + case 32: + _context2.prev = 32; + _context2.t1 = _context2["catch"](0); + tempErr = new Error(); + tempErr.name = _context2.t1.name; + tempErr.message = _context2.t1.message; + tempErr.stack = _context2.t1.stack; + tempErr.partNum = partNo; + copy(_context2.t1).to(tempErr); + reject(tempErr); + case 41: + case "end": + return _context2.stop(); + } + }, _callee2, null, [[0, 32], [7, 13]]); + })); + return function (_x5, _x6) { + return _ref.apply(this, arguments); + }; + }()); + }; + all = Array.from(new Array(numParts), function (x, i) { + return i + 1; + }); + done = internalDoneParts.map(function (p) { + return p.number; + }); + todo = all.filter(function (p) { + return done.indexOf(p) < 0; + }); + defaultParallel = 5; + parallel = options.parallel || defaultParallel; // upload in parallel + _context3.next = 17; + return this._parallel(todo, parallel, function (value) { + return new Promise(function (resolve, reject) { + uploadPartJob(that, value).then(function (result) { + if (result) { + internalDoneParts.push(result); + } + resolve(); + }).catch(function (err) { + reject(err); + }); + }); + }); + case 17: + jobErr = _context3.sent; + multipartFinish = true; + abortEvent = jobErr.find(function (err) { + return err.name === 'abort'; + }); + if (!abortEvent) { + _context3.next = 22; + break; + } + throw abortEvent; + case 22: + if (!this.isCancel()) { + _context3.next = 25; + break; + } + uploadPartJob = null; + throw this._makeCancelEvent(); + case 25: + if (!(jobErr && jobErr.length > 0)) { + _context3.next = 28; + break; + } + jobErr[0].message = "Failed to upload some parts with error: ".concat(jobErr[0].toString(), " part_num: ").concat(jobErr[0].partNum); + throw jobErr[0]; + case 28: + _context3.next = 30; + return this.completeMultipartUpload(name, uploadId, internalDoneParts, options); + case 30: + return _context3.abrupt("return", _context3.sent); + case 31: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + function _resumeMultipart(_x3, _x4) { + return _resumeMultipart2.apply(this, arguments); + } + return _resumeMultipart; +}(); + +/** + * Get file size + */ +proto._getFileSize = /*#__PURE__*/function () { + var _getFileSize2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(file) { + return _regenerator.default.wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + if (!isBuffer(file)) { + _context4.next = 4; + break; + } + return _context4.abrupt("return", file.length); + case 4: + if (!(isBlob(file) || isFile(file))) { + _context4.next = 6; + break; + } + return _context4.abrupt("return", file.size); + case 6: + throw new Error('_getFileSize requires Buffer/File/Blob.'); + case 7: + case "end": + return _context4.stop(); + } + }, _callee4); + })); + function _getFileSize(_x7) { + return _getFileSize2.apply(this, arguments); + } + return _getFileSize; +}(); + +/* + * Readable stream for Web File + */ +var _require4 = require('stream'), + Readable = _require4.Readable; +function WebFileReadStream(file, options) { + if (!(this instanceof WebFileReadStream)) { + return new WebFileReadStream(file, options); + } + Readable.call(this, options); + this.file = file; + this.reader = new FileReader(); + this.start = 0; + this.finish = false; + this.fileBuffer = null; +} +util.inherits(WebFileReadStream, Readable); +WebFileReadStream.prototype.readFileAndPush = function readFileAndPush(size) { + if (this.fileBuffer) { + var pushRet = true; + while (pushRet && this.fileBuffer && this.start < this.fileBuffer.length) { + var start = this.start; + var end = start + size; + end = end > this.fileBuffer.length ? this.fileBuffer.length : end; + this.start = end; + pushRet = this.push(this.fileBuffer.slice(start, end)); + } + } +}; +WebFileReadStream.prototype._read = function _read(size) { + if (this.file && this.start >= this.file.size || this.fileBuffer && this.start >= this.fileBuffer.length || this.finish || this.start === 0 && !this.file) { + if (!this.finish) { + this.fileBuffer = null; + this.finish = true; + } + this.push(null); + return; + } + var defaultReadSize = 16 * 1024; + size = size || defaultReadSize; + var that = this; + this.reader.onload = function onload(e) { + that.fileBuffer = Buffer.from(new Uint8Array(e.target.result)); + that.file = null; + that.readFileAndPush(size); + }; + if (this.start === 0) { + this.reader.readAsArrayBuffer(this.file); + } else { + this.readFileAndPush(size); + } +}; +function getBuffer(file) { + // Some browsers do not support Blob.prototype.arrayBuffer, such as IE + if (file.arrayBuffer) return file.arrayBuffer(); + return new Promise(function (resolve, reject) { + var reader = new FileReader(); + reader.onload = function (e) { + resolve(e.target.result); + }; + reader.onerror = function (e) { + reject(e); + }; + reader.readAsArrayBuffer(file); + }); +} +proto._createBuffer = /*#__PURE__*/function () { + var _createBuffer2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(file, start, end) { + var _file, fileContent; + return _regenerator.default.wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + if (!(isBlob(file) || isFile(file))) { + _context5.next = 8; + break; + } + _file = file.slice(start, end); + _context5.next = 4; + return getBuffer(_file); + case 4: + fileContent = _context5.sent; + return _context5.abrupt("return", Buffer.from(fileContent)); + case 8: + if (!isBuffer(file)) { + _context5.next = 12; + break; + } + return _context5.abrupt("return", file.subarray(start, end)); + case 12: + throw new Error('_createBuffer requires File/Blob/Buffer.'); + case 13: + case "end": + return _context5.stop(); + } + }, _callee5); + })); + function _createBuffer(_x8, _x9, _x10) { + return _createBuffer2.apply(this, arguments); + } + return _createBuffer; +}(); +proto._getPartSize = function _getPartSize(fileSize, partSize) { + var maxNumParts = 10 * 1000; + var defaultPartSize = 1 * 1024 * 1024; + if (!partSize) partSize = defaultPartSize; + var safeSize = Math.ceil(fileSize / maxNumParts); + if (partSize < safeSize) { + partSize = safeSize; + console.warn("partSize has been set to ".concat(partSize, ", because the partSize you provided causes partNumber to be greater than 10,000")); + } + return partSize; +}; +proto._divideParts = function _divideParts(fileSize, partSize) { + var numParts = Math.ceil(fileSize / partSize); + var partOffs = []; + for (var i = 0; i < numParts; i++) { + var start = partSize * i; + var end = Math.min(start + partSize, fileSize); + partOffs.push({ + start: start, + end: end + }); + } + return partOffs; +}; + +}).call(this)}).call(this,require("buffer").Buffer) +},{"../common/utils/isBlob":68,"../common/utils/isBuffer":69,"../common/utils/isFile":71,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"buffer":103,"copy-to":107,"core-js/modules/es.array-buffer.slice.js":309,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.filter.js":312,"core-js/modules/es.array.find.js":313,"core-js/modules/es.array.from.js":314,"core-js/modules/es.array.iterator.js":316,"core-js/modules/es.array.map.js":318,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.function.name.js":322,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.iterator.js":343,"core-js/modules/es.typed-array.copy-within.js":356,"core-js/modules/es.typed-array.every.js":357,"core-js/modules/es.typed-array.fill.js":358,"core-js/modules/es.typed-array.filter.js":359,"core-js/modules/es.typed-array.find-index.js":360,"core-js/modules/es.typed-array.find.js":361,"core-js/modules/es.typed-array.for-each.js":362,"core-js/modules/es.typed-array.includes.js":363,"core-js/modules/es.typed-array.index-of.js":364,"core-js/modules/es.typed-array.iterator.js":365,"core-js/modules/es.typed-array.join.js":366,"core-js/modules/es.typed-array.last-index-of.js":367,"core-js/modules/es.typed-array.map.js":368,"core-js/modules/es.typed-array.reduce-right.js":369,"core-js/modules/es.typed-array.reduce.js":370,"core-js/modules/es.typed-array.reverse.js":371,"core-js/modules/es.typed-array.set.js":372,"core-js/modules/es.typed-array.slice.js":373,"core-js/modules/es.typed-array.some.js":374,"core-js/modules/es.typed-array.sort.js":375,"core-js/modules/es.typed-array.subarray.js":376,"core-js/modules/es.typed-array.to-locale-string.js":377,"core-js/modules/es.typed-array.to-string.js":378,"core-js/modules/es.typed-array.uint8-array.js":379,"mime":430,"path":439,"stream":468,"util":489}],5:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +require("core-js/modules/es.function.name.js"); +require("core-js/modules/es.object.keys.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.regexp.to-string.js"); +require("core-js/modules/es.array.map.js"); +require("core-js/modules/es.number.constructor.js"); +require("core-js/modules/es.object.assign.js"); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.replace.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.promise.js"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +// const debug = require('debug')('ali-oss:object'); +var fs = require('fs'); +var copy = require('copy-to'); +var path = require('path'); +var mime = require('mime'); +var callback = require('../common/callback'); +var merge = require('merge-descriptors'); +var _require = require('../common/utils/isBlob'), + isBlob = _require.isBlob; +var _require2 = require('../common/utils/isFile'), + isFile = _require2.isFile; +var _require3 = require('../common/utils/isBuffer'), + isBuffer = _require3.isBuffer; +var _require4 = require('../common/utils/obj2xml'), + obj2xml = _require4.obj2xml; +var _require5 = require('../common/utils/parseRestoreInfo'), + parseRestoreInfo = _require5.parseRestoreInfo; + +// var assert = require('assert'); + +var proto = exports; + +/** + * Object operations + */ + +/** + * append an object from String(file path)/Buffer/ReadableStream + * @param {String} name the object key + * @param {Mixed} file String(file path)/Buffer/ReadableStream + * @param {Object} options + * @return {Object} + */ +proto.append = /*#__PURE__*/function () { + var _append = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, file, options) { + var result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = options || {}; + if (options.position === undefined) options.position = '0'; + options.subres = { + append: '', + position: options.position + }; + options.method = 'POST'; + _context.next = 6; + return this.put(name, file, options); + case 6: + result = _context.sent; + result.nextAppendPosition = result.res.headers['x-oss-next-append-position']; + return _context.abrupt("return", result); + case 9: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function append(_x, _x2, _x3) { + return _append.apply(this, arguments); + } + return append; +}(); + +/** + * put an object from String(file path)/Buffer/ReadableStream + * @param {String} name the object key + * @param {Mixed} file String(file path)/Buffer/ReadableStream + * @param {Object} options + * {Object} [options.callback] The callback parameter is composed of a JSON string encoded in Base64 + * {String} options.callback.url the OSS sends a callback request to this URL + * {String} [options.callback.host] The host header value for initiating callback requests + * {String} options.callback.body The value of the request body when a callback is initiated + * {String} [options.callback.contentType] The Content-Type of the callback requests initiated + * {Boolean} [options.callback.callbackSNI] Whether OSS sends SNI to the origin address specified by callbackUrl when a callback request is initiated from the client + * {Object} [options.callback.customValue] Custom parameters are a map of key-values, e.g: + * customValue = { + * key1: 'value1', + * key2: 'value2' + * } + * @return {Object} + */ +proto.put = /*#__PURE__*/function () { + var _put = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(name, file, options) { + var content, method, params, result, ret; + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + options = options || {}; + options.disabledMD5 = options.disabledMD5 === undefined ? true : !!options.disabledMD5; + options.headers = options.headers || {}; + name = this._objectName(name); + if (!isBuffer(file)) { + _context2.next = 8; + break; + } + content = file; + _context2.next = 19; + break; + case 8: + if (!(isBlob(file) || isFile(file))) { + _context2.next = 18; + break; + } + if (!options.mime) { + if (isFile(file)) { + options.mime = mime.getType(path.extname(file.name)); + } else { + options.mime = file.type; + } + } + _context2.next = 12; + return this._createBuffer(file, 0, file.size); + case 12: + content = _context2.sent; + _context2.next = 15; + return this._getFileSize(file); + case 15: + options.contentLength = _context2.sent; + _context2.next = 19; + break; + case 18: + throw new TypeError('Must provide Buffer/Blob/File for put.'); + case 19: + this._convertMetaToHeaders(options.meta, options.headers); + method = options.method || 'PUT'; + params = this._objectRequestParams(method, name, options); + callback.encodeCallback(params, options); + params.mime = options.mime; + params.disabledMD5 = options.disabledMD5; + params.content = content; + params.successStatuses = [200]; + _context2.next = 29; + return this.request(params); + case 29: + result = _context2.sent; + ret = { + name: name, + url: this._objectUrl(name), + res: result.res + }; + if (params.headers && params.headers['x-oss-callback']) { + ret.data = JSON.parse(result.data.toString()); + } + return _context2.abrupt("return", ret); + case 33: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + function put(_x4, _x5, _x6) { + return _put.apply(this, arguments); + } + return put; +}(); + +/** + * put an object from ReadableStream. If `options.contentLength` is + * not provided, chunked encoding is used. + * @param {String} name the object key + * @param {Readable} stream the ReadableStream + * @param {Object} options + * @return {Object} + */ +proto.putStream = /*#__PURE__*/function () { + var _putStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(name, stream, options) { + var method, params, result, ret; + return _regenerator.default.wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + options = options || {}; + options.headers = options.headers || {}; + name = this._objectName(name); + if (options.contentLength) { + options.headers['Content-Length'] = options.contentLength; + } else { + options.headers['Transfer-Encoding'] = 'chunked'; + } + this._convertMetaToHeaders(options.meta, options.headers); + method = options.method || 'PUT'; + params = this._objectRequestParams(method, name, options); + callback.encodeCallback(params, options); + params.mime = options.mime; + params.stream = stream; + params.successStatuses = [200]; + _context3.next = 13; + return this.request(params); + case 13: + result = _context3.sent; + ret = { + name: name, + url: this._objectUrl(name), + res: result.res + }; + if (params.headers && params.headers['x-oss-callback']) { + ret.data = JSON.parse(result.data.toString()); + } + return _context3.abrupt("return", ret); + case 17: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + function putStream(_x7, _x8, _x9) { + return _putStream.apply(this, arguments); + } + return putStream; +}(); +merge(proto, require('../common/object/copyObject')); +merge(proto, require('../common/object/getObjectTagging')); +merge(proto, require('../common/object/putObjectTagging')); +merge(proto, require('../common/object/deleteObjectTagging')); +merge(proto, require('../common/image')); +merge(proto, require('../common/object/getBucketVersions')); +merge(proto, require('../common/object/getACL')); +merge(proto, require('../common/object/putACL')); +merge(proto, require('../common/object/head')); +merge(proto, require('../common/object/delete')); +merge(proto, require('../common/object/get')); +merge(proto, require('../common/object/putSymlink')); +merge(proto, require('../common/object/getSymlink')); +merge(proto, require('../common/object/deleteMulti')); +merge(proto, require('../common/object/getObjectMeta')); +merge(proto, require('../common/object/getObjectUrl')); +merge(proto, require('../common/object/generateObjectUrl')); +merge(proto, require('../common/object/signatureUrl')); +merge(proto, require('../common/object/asyncSignatureUrl')); +merge(proto, require('../common/object/signatureUrlV4')); +merge(proto, require('../common/object/signPostObjectPolicyV4')); +proto.putMeta = /*#__PURE__*/function () { + var _putMeta = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(name, meta, options) { + var copyResult; + return _regenerator.default.wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return this.copy(name, name, { + meta: meta || {}, + timeout: options && options.timeout, + ctx: options && options.ctx + }); + case 2: + copyResult = _context4.sent; + return _context4.abrupt("return", copyResult); + case 4: + case "end": + return _context4.stop(); + } + }, _callee4, this); + })); + function putMeta(_x10, _x11, _x12) { + return _putMeta.apply(this, arguments); + } + return putMeta; +}(); +proto.list = /*#__PURE__*/function () { + var _list = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(query, options) { + var params, result, objects, that, prefixes; + return _regenerator.default.wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + // prefix, marker, max-keys, delimiter + params = this._objectRequestParams('GET', '', options); + params.query = query; + params.xmlResponse = true; + params.successStatuses = [200]; + _context5.next = 6; + return this.request(params); + case 6: + result = _context5.sent; + objects = result.data.Contents || []; + that = this; + if (objects) { + if (!Array.isArray(objects)) { + objects = [objects]; + } + objects = objects.map(function (obj) { + return { + name: obj.Key, + url: that._objectUrl(obj.Key), + lastModified: obj.LastModified, + etag: obj.ETag, + type: obj.Type, + size: Number(obj.Size), + storageClass: obj.StorageClass, + owner: { + id: obj.Owner.ID, + displayName: obj.Owner.DisplayName + }, + restoreInfo: parseRestoreInfo(obj.RestoreInfo) + }; + }); + } + prefixes = result.data.CommonPrefixes || null; + if (prefixes) { + if (!Array.isArray(prefixes)) { + prefixes = [prefixes]; + } + prefixes = prefixes.map(function (item) { + return item.Prefix; + }); + } + return _context5.abrupt("return", { + res: result.res, + objects: objects, + prefixes: prefixes, + nextMarker: result.data.NextMarker || null, + isTruncated: result.data.IsTruncated === 'true' + }); + case 13: + case "end": + return _context5.stop(); + } + }, _callee5, this); + })); + function list(_x13, _x14) { + return _list.apply(this, arguments); + } + return list; +}(); +proto.listV2 = /*#__PURE__*/function () { + var _listV = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(query) { + var options, + continuation_token, + params, + result, + objects, + that, + prefixes, + _args6 = arguments; + return _regenerator.default.wrap(function _callee6$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + options = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {}; + continuation_token = query['continuation-token'] || query.continuationToken; + if (continuation_token) { + options.subres = Object.assign({ + 'continuation-token': continuation_token + }, options.subres); + } + params = this._objectRequestParams('GET', '', options); + params.query = Object.assign({ + 'list-type': 2 + }, query); + delete params.query['continuation-token']; + delete params.query.continuationToken; + params.xmlResponse = true; + params.successStatuses = [200]; + _context6.next = 11; + return this.request(params); + case 11: + result = _context6.sent; + objects = result.data.Contents || []; + that = this; + if (objects) { + if (!Array.isArray(objects)) { + objects = [objects]; + } + objects = objects.map(function (obj) { + var owner = null; + if (obj.Owner) { + owner = { + id: obj.Owner.ID, + displayName: obj.Owner.DisplayName + }; + } + return { + name: obj.Key, + url: that._objectUrl(obj.Key), + lastModified: obj.LastModified, + etag: obj.ETag, + type: obj.Type, + size: Number(obj.Size), + storageClass: obj.StorageClass, + owner: owner, + restoreInfo: parseRestoreInfo(obj.RestoreInfo) + }; + }); + } + prefixes = result.data.CommonPrefixes || null; + if (prefixes) { + if (!Array.isArray(prefixes)) { + prefixes = [prefixes]; + } + prefixes = prefixes.map(function (item) { + return item.Prefix; + }); + } + return _context6.abrupt("return", { + res: result.res, + objects: objects, + prefixes: prefixes, + isTruncated: result.data.IsTruncated === 'true', + keyCount: +result.data.KeyCount, + continuationToken: result.data.ContinuationToken || null, + nextContinuationToken: result.data.NextContinuationToken || null + }); + case 18: + case "end": + return _context6.stop(); + } + }, _callee6, this); + })); + function listV2(_x15) { + return _listV.apply(this, arguments); + } + return listV2; +}(); + +/** + * Restore Object + * @param {String} name the object key + * @param {Object} options + * @returns {{res}} + */ +proto.restore = /*#__PURE__*/function () { + var _restore = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(name) { + var options, + params, + paramsXMLObj, + result, + _args7 = arguments; + return _regenerator.default.wrap(function _callee7$(_context7) { + while (1) switch (_context7.prev = _context7.next) { + case 0: + options = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : { + type: 'Archive' + }; + options = options || {}; + options.subres = Object.assign({ + restore: '' + }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + params = this._objectRequestParams('POST', name, options); + paramsXMLObj = { + RestoreRequest: { + Days: options.Days ? options.Days : 2 + } + }; + if (options.type === 'ColdArchive' || options.type === 'DeepColdArchive') { + paramsXMLObj.RestoreRequest.JobParameters = { + Tier: options.JobParameters ? options.JobParameters : 'Standard' + }; + } + params.content = obj2xml(paramsXMLObj, { + headers: true + }); + params.mime = 'xml'; + params.successStatuses = [202]; + _context7.next = 12; + return this.request(params); + case 12: + result = _context7.sent; + return _context7.abrupt("return", { + res: result.res + }); + case 14: + case "end": + return _context7.stop(); + } + }, _callee7, this); + })); + function restore(_x16) { + return _restore.apply(this, arguments); + } + return restore; +}(); +proto._objectUrl = function _objectUrl(name) { + return this._getReqUrl({ + bucket: this.options.bucket, + object: name + }); +}; + +/** + * generator request params + * @return {Object} params + * + * @api private + */ + +proto._objectRequestParams = function _objectRequestParams(method, name, options) { + if (!this.options.bucket && !this.options.cname) { + throw new Error('Please create a bucket first'); + } + options = options || {}; + name = this._objectName(name); + var params = { + object: name, + bucket: this.options.bucket, + method: method, + subres: options && options.subres, + additionalHeaders: options && options.additionalHeaders, + timeout: options && options.timeout, + ctx: options && options.ctx + }; + if (options.headers) { + params.headers = {}; + copy(options.headers).to(params.headers); + } + return params; +}; +proto._objectName = function _objectName(name) { + return name.replace(/^\/+/, ''); +}; +proto._convertMetaToHeaders = function _convertMetaToHeaders(meta, headers) { + if (!meta) { + return; + } + Object.keys(meta).forEach(function (k) { + headers["x-oss-meta-".concat(k)] = meta[k]; + }); +}; +proto._deleteFileSafe = function _deleteFileSafe(filepath) { + var _this = this; + return new Promise(function (resolve) { + fs.exists(filepath, function (exists) { + if (!exists) { + resolve(); + } else { + fs.unlink(filepath, function (err) { + if (err) { + _this.debug('unlink %j error: %s', filepath, err, 'error'); + } + resolve(); + }); + } + }); + }); +}; + +},{"../common/callback":24,"../common/image":27,"../common/object/asyncSignatureUrl":31,"../common/object/copyObject":32,"../common/object/delete":33,"../common/object/deleteMulti":34,"../common/object/deleteObjectTagging":35,"../common/object/generateObjectUrl":36,"../common/object/get":37,"../common/object/getACL":38,"../common/object/getBucketVersions":39,"../common/object/getObjectMeta":40,"../common/object/getObjectTagging":41,"../common/object/getObjectUrl":42,"../common/object/getSymlink":43,"../common/object/head":44,"../common/object/putACL":45,"../common/object/putObjectTagging":46,"../common/object/putSymlink":47,"../common/object/signPostObjectPolicyV4":48,"../common/object/signatureUrl":49,"../common/object/signatureUrlV4":50,"../common/utils/isBlob":68,"../common/utils/isBuffer":69,"../common/utils/isFile":71,"../common/utils/obj2xml":76,"../common/utils/parseRestoreInfo":78,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"copy-to":107,"core-js/modules/es.array.map.js":318,"core-js/modules/es.function.name.js":322,"core-js/modules/es.number.constructor.js":324,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.replace.js":345,"core-js/modules/web.dom-collections.for-each.js":380,"fs":102,"merge-descriptors":428,"mime":430,"path":439}],6:[function(require,module,exports){ +"use strict"; + +exports.version = '6.23.0'; + +},{}],7:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.abortBucketWorm = void 0; +var checkBucketName_1 = require("../utils/checkBucketName"); +function abortBucketWorm(_x, _x2) { + return _abortBucketWorm.apply(this, arguments); +} +function _abortBucketWorm() { + _abortBucketWorm = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, options) { + var params, result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + checkBucketName_1.checkBucketName(name); + params = this._bucketRequestParams('DELETE', name, 'worm', options); + _context.next = 4; + return this.request(params); + case 4: + result = _context.sent; + return _context.abrupt("return", { + res: result.res, + status: result.status + }); + case 6: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + return _abortBucketWorm.apply(this, arguments); +} +exports.abortBucketWorm = abortBucketWorm; + +},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],8:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.completeBucketWorm = void 0; +var checkBucketName_1 = require("../utils/checkBucketName"); +function completeBucketWorm(_x, _x2, _x3) { + return _completeBucketWorm.apply(this, arguments); +} +function _completeBucketWorm() { + _completeBucketWorm = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, wormId, options) { + var params, result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + checkBucketName_1.checkBucketName(name); + params = this._bucketRequestParams('POST', name, { + wormId: wormId + }, options); + _context.next = 4; + return this.request(params); + case 4: + result = _context.sent; + return _context.abrupt("return", { + res: result.res, + status: result.status + }); + case 6: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + return _completeBucketWorm.apply(this, arguments); +} +exports.completeBucketWorm = completeBucketWorm; + +},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],9:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.deleteBucketInventory = void 0; +var checkBucketName_1 = require("../utils/checkBucketName"); +/** + * deleteBucketInventory + * @param {String} bucketName - bucket name + * @param {String} inventoryId + * @param {Object} options + */ +function deleteBucketInventory(_x, _x2) { + return _deleteBucketInventory.apply(this, arguments); +} +function _deleteBucketInventory() { + _deleteBucketInventory = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(bucketName, inventoryId) { + var options, + subres, + params, + result, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {}; + subres = Object.assign({ + inventory: '', + inventoryId: inventoryId + }, options.subres); + checkBucketName_1.checkBucketName(bucketName); + params = this._bucketRequestParams('DELETE', bucketName, subres, options); + params.successStatuses = [204]; + _context.next = 7; + return this.request(params); + case 7: + result = _context.sent; + return _context.abrupt("return", { + status: result.status, + res: result.res + }); + case 9: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + return _deleteBucketInventory.apply(this, arguments); +} +exports.deleteBucketInventory = deleteBucketInventory; + +},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],10:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var _require = require('../utils/checkBucketName'), + _checkBucketName = _require.checkBucketName; +var proto = exports; +proto.deleteBucketLifecycle = /*#__PURE__*/function () { + var _deleteBucketLifecycle = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, options) { + var params, result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _checkBucketName(name); + params = this._bucketRequestParams('DELETE', name, 'lifecycle', options); + params.successStatuses = [204]; + _context.next = 5; + return this.request(params); + case 5: + result = _context.sent; + return _context.abrupt("return", { + res: result.res + }); + case 7: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function deleteBucketLifecycle(_x, _x2) { + return _deleteBucketLifecycle.apply(this, arguments); + } + return deleteBucketLifecycle; +}(); + +},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],11:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var _require = require('../utils/checkBucketName'), + _checkBucketName = _require.checkBucketName; +var proto = exports; +proto.deleteBucketWebsite = /*#__PURE__*/function () { + var _deleteBucketWebsite = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, options) { + var params, result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _checkBucketName(name); + params = this._bucketRequestParams('DELETE', name, 'website', options); + params.successStatuses = [204]; + _context.next = 5; + return this.request(params); + case 5: + result = _context.sent; + return _context.abrupt("return", { + res: result.res + }); + case 7: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function deleteBucketWebsite(_x, _x2) { + return _deleteBucketWebsite.apply(this, arguments); + } + return deleteBucketWebsite; +}(); + +},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],12:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.extendBucketWorm = void 0; +var checkBucketName_1 = require("../utils/checkBucketName"); +var obj2xml_1 = require("../utils/obj2xml"); +function extendBucketWorm(_x, _x2, _x3, _x4) { + return _extendBucketWorm.apply(this, arguments); +} +function _extendBucketWorm() { + _extendBucketWorm = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, wormId, days, options) { + var params, paramlXMLObJ, result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + checkBucketName_1.checkBucketName(name); + params = this._bucketRequestParams('POST', name, { + wormExtend: '', + wormId: wormId + }, options); + paramlXMLObJ = { + ExtendWormConfiguration: { + RetentionPeriodInDays: days + } + }; + params.mime = 'xml'; + params.content = obj2xml_1.obj2xml(paramlXMLObJ, { + headers: true + }); + params.successStatuses = [200]; + _context.next = 8; + return this.request(params); + case 8: + result = _context.sent; + return _context.abrupt("return", { + res: result.res, + status: result.status + }); + case 10: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + return _extendBucketWorm.apply(this, arguments); +} +exports.extendBucketWorm = extendBucketWorm; + +},{"../utils/checkBucketName":53,"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],13:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getBucketInventory = void 0; +var checkBucketName_1 = require("../utils/checkBucketName"); +var formatInventoryConfig_1 = require("../utils/formatInventoryConfig"); +/** + * getBucketInventory + * @param {String} bucketName - bucket name + * @param {String} inventoryId + * @param {Object} options + */ +function getBucketInventory(_x, _x2) { + return _getBucketInventory.apply(this, arguments); +} +function _getBucketInventory() { + _getBucketInventory = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(bucketName, inventoryId) { + var options, + subres, + params, + result, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {}; + subres = Object.assign({ + inventory: '', + inventoryId: inventoryId + }, options.subres); + checkBucketName_1.checkBucketName(bucketName); + params = this._bucketRequestParams('GET', bucketName, subres, options); + params.successStatuses = [200]; + params.xmlResponse = true; + _context.next = 8; + return this.request(params); + case 8: + result = _context.sent; + return _context.abrupt("return", { + status: result.status, + res: result.res, + inventory: formatInventoryConfig_1.formatInventoryConfig(result.data) + }); + case 10: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + return _getBucketInventory.apply(this, arguments); +} +exports.getBucketInventory = getBucketInventory; + +},{"../utils/checkBucketName":53,"../utils/formatInventoryConfig":63,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],14:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.array.map.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var _require = require('../utils/checkBucketName'), + _checkBucketName = _require.checkBucketName; +var _require2 = require('../utils/isArray'), + isArray = _require2.isArray; +var _require3 = require('../utils/formatObjKey'), + formatObjKey = _require3.formatObjKey; +var proto = exports; +proto.getBucketLifecycle = /*#__PURE__*/function () { + var _getBucketLifecycle = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, options) { + var params, result, rules; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _checkBucketName(name); + params = this._bucketRequestParams('GET', name, 'lifecycle', options); + params.successStatuses = [200]; + params.xmlResponse = true; + _context.next = 6; + return this.request(params); + case 6: + result = _context.sent; + rules = result.data.Rule || null; + if (rules) { + if (!isArray(rules)) { + rules = [rules]; + } + rules = rules.map(function (_) { + if (_.ID) { + _.id = _.ID; + delete _.ID; + } + if (_.Tag && !isArray(_.Tag)) { + _.Tag = [_.Tag]; + } + return formatObjKey(_, 'firstLowerCase'); + }); + } + return _context.abrupt("return", { + rules: rules, + res: result.res + }); + case 10: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function getBucketLifecycle(_x, _x2) { + return _getBucketLifecycle.apply(this, arguments); + } + return getBucketLifecycle; +}(); + +},{"../utils/checkBucketName":53,"../utils/formatObjKey":64,"../utils/isArray":67,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.map.js":318}],15:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var _require = require('../utils/checkBucketName'), + _checkBucketName = _require.checkBucketName; +var proto = exports; +/** + * getBucketVersioning + * @param {String} bucketName - bucket name + */ + +proto.getBucketVersioning = /*#__PURE__*/function () { + var _getBucketVersioning = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(bucketName, options) { + var params, result, versionStatus; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _checkBucketName(bucketName); + params = this._bucketRequestParams('GET', bucketName, 'versioning', options); + params.xmlResponse = true; + params.successStatuses = [200]; + _context.next = 6; + return this.request(params); + case 6: + result = _context.sent; + versionStatus = result.data.Status; + return _context.abrupt("return", { + status: result.status, + versionStatus: versionStatus, + res: result.res + }); + case 9: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function getBucketVersioning(_x, _x2) { + return _getBucketVersioning.apply(this, arguments); + } + return getBucketVersioning; +}(); + +},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],16:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var _require = require('../utils/checkBucketName'), + _checkBucketName = _require.checkBucketName; +var _require2 = require('../utils/isObject'), + isObject = _require2.isObject; +var proto = exports; +proto.getBucketWebsite = /*#__PURE__*/function () { + var _getBucketWebsite = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, options) { + var params, result, routingRules; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _checkBucketName(name); + params = this._bucketRequestParams('GET', name, 'website', options); + params.successStatuses = [200]; + params.xmlResponse = true; + _context.next = 6; + return this.request(params); + case 6: + result = _context.sent; + routingRules = []; + if (result.data.RoutingRules && result.data.RoutingRules.RoutingRule) { + if (isObject(result.data.RoutingRules.RoutingRule)) { + routingRules = [result.data.RoutingRules.RoutingRule]; + } else { + routingRules = result.data.RoutingRules.RoutingRule; + } + } + return _context.abrupt("return", { + index: result.data.IndexDocument && result.data.IndexDocument.Suffix || '', + supportSubDir: result.data.IndexDocument && result.data.IndexDocument.SupportSubDir || 'false', + type: result.data.IndexDocument && result.data.IndexDocument.Type, + routingRules: routingRules, + error: result.data.ErrorDocument && result.data.ErrorDocument.Key || null, + res: result.res + }); + case 10: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function getBucketWebsite(_x, _x2) { + return _getBucketWebsite.apply(this, arguments); + } + return getBucketWebsite; +}(); + +},{"../utils/checkBucketName":53,"../utils/isObject":74,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],17:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getBucketWorm = void 0; +var checkBucketName_1 = require("../utils/checkBucketName"); +var dataFix_1 = require("../utils/dataFix"); +function getBucketWorm(_x, _x2) { + return _getBucketWorm.apply(this, arguments); +} +function _getBucketWorm() { + _getBucketWorm = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, options) { + var params, result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + checkBucketName_1.checkBucketName(name); + params = this._bucketRequestParams('GET', name, 'worm', options); + params.successStatuses = [200]; + params.xmlResponse = true; + _context.next = 6; + return this.request(params); + case 6: + result = _context.sent; + dataFix_1.dataFix(result.data, { + lowerFirst: true, + rename: { + RetentionPeriodInDays: 'days' + } + }); + return _context.abrupt("return", Object.assign(Object.assign({}, result.data), { + res: result.res, + status: result.status + })); + case 9: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + return _getBucketWorm.apply(this, arguments); +} +exports.getBucketWorm = getBucketWorm; + +},{"../utils/checkBucketName":53,"../utils/dataFix":59,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],18:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.initiateBucketWorm = void 0; +var obj2xml_1 = require("../utils/obj2xml"); +var checkBucketName_1 = require("../utils/checkBucketName"); +function initiateBucketWorm(_x, _x2, _x3) { + return _initiateBucketWorm.apply(this, arguments); +} +function _initiateBucketWorm() { + _initiateBucketWorm = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, days, options) { + var params, paramlXMLObJ, result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + checkBucketName_1.checkBucketName(name); + params = this._bucketRequestParams('POST', name, 'worm', options); + paramlXMLObJ = { + InitiateWormConfiguration: { + RetentionPeriodInDays: days + } + }; + params.mime = 'xml'; + params.content = obj2xml_1.obj2xml(paramlXMLObJ, { + headers: true + }); + params.successStatuses = [200]; + _context.next = 8; + return this.request(params); + case 8: + result = _context.sent; + return _context.abrupt("return", { + res: result.res, + wormId: result.res.headers['x-oss-worm-id'], + status: result.status + }); + case 10: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + return _initiateBucketWorm.apply(this, arguments); +} +exports.initiateBucketWorm = initiateBucketWorm; + +},{"../utils/checkBucketName":53,"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],19:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.listBucketInventory = void 0; +var checkBucketName_1 = require("../utils/checkBucketName"); +var formatInventoryConfig_1 = require("../utils/formatInventoryConfig"); +/** + * listBucketInventory + * @param {String} bucketName - bucket name + * @param {String} inventoryId + * @param {Object} options + */ +function listBucketInventory(_x) { + return _listBucketInventory.apply(this, arguments); +} +function _listBucketInventory() { + _listBucketInventory = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(bucketName) { + var options, + continuationToken, + subres, + params, + result, + data, + res, + status, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + continuationToken = options.continuationToken; + subres = Object.assign({ + inventory: '' + }, continuationToken && { + 'continuation-token': continuationToken + }, options.subres); + checkBucketName_1.checkBucketName(bucketName); + params = this._bucketRequestParams('GET', bucketName, subres, options); + params.successStatuses = [200]; + params.xmlResponse = true; + _context.next = 9; + return this.request(params); + case 9: + result = _context.sent; + data = result.data, res = result.res, status = result.status; + return _context.abrupt("return", { + isTruncated: data.IsTruncated === 'true', + nextContinuationToken: data.NextContinuationToken, + inventoryList: formatInventoryConfig_1.formatInventoryConfig(data.InventoryConfiguration, true), + status: status, + res: res + }); + case 12: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + return _listBucketInventory.apply(this, arguments); +} +exports.listBucketInventory = listBucketInventory; + +},{"../utils/checkBucketName":53,"../utils/formatInventoryConfig":63,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],20:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +require("core-js/modules/es.array.concat.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.putBucketInventory = void 0; +var checkBucketName_1 = require("../utils/checkBucketName"); +var obj2xml_1 = require("../utils/obj2xml"); +/** + * putBucketInventory + * @param {String} bucketName - bucket name + * @param {Inventory} inventory + * @param {Object} options + */ +function putBucketInventory(_x, _x2) { + return _putBucketInventory.apply(this, arguments); +} +function _putBucketInventory() { + _putBucketInventory = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(bucketName, inventory) { + var options, + subres, + OSSBucketDestination, + optionalFields, + includedObjectVersions, + destinationBucketPrefix, + rolePrefix, + paramXMLObj, + paramXML, + params, + result, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {}; + subres = Object.assign({ + inventory: '', + inventoryId: inventory.id + }, options.subres); + checkBucketName_1.checkBucketName(bucketName); + OSSBucketDestination = inventory.OSSBucketDestination, optionalFields = inventory.optionalFields, includedObjectVersions = inventory.includedObjectVersions; + destinationBucketPrefix = 'acs:oss:::'; + rolePrefix = "acs:ram::".concat(OSSBucketDestination.accountId, ":role/"); + paramXMLObj = { + InventoryConfiguration: { + Id: inventory.id, + IsEnabled: inventory.isEnabled, + Filter: { + Prefix: inventory.prefix || '' + }, + Destination: { + OSSBucketDestination: { + Format: OSSBucketDestination.format, + AccountId: OSSBucketDestination.accountId, + RoleArn: "".concat(rolePrefix).concat(OSSBucketDestination.rolename), + Bucket: "".concat(destinationBucketPrefix).concat(OSSBucketDestination.bucket), + Prefix: OSSBucketDestination.prefix || '', + Encryption: OSSBucketDestination.encryption || '' + } + }, + Schedule: { + Frequency: inventory.frequency + }, + IncludedObjectVersions: includedObjectVersions, + OptionalFields: { + Field: (optionalFields === null || optionalFields === void 0 ? void 0 : optionalFields.field) || [] + } + } + }; + paramXML = obj2xml_1.obj2xml(paramXMLObj, { + headers: true, + firstUpperCase: true + }); + params = this._bucketRequestParams('PUT', bucketName, subres, options); + params.successStatuses = [200]; + params.mime = 'xml'; + params.content = paramXML; + _context.next = 14; + return this.request(params); + case 14: + result = _context.sent; + return _context.abrupt("return", { + status: result.status, + res: result.res + }); + case 16: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + return _putBucketInventory.apply(this, arguments); +} +exports.putBucketInventory = putBucketInventory; + +},{"../utils/checkBucketName":53,"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.object.assign.js":325}],21:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.array.includes.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +/* eslint-disable no-use-before-define */ +var _require = require('../utils/checkBucketName'), + _checkBucketName = _require.checkBucketName; +var _require2 = require('../utils/isArray'), + isArray = _require2.isArray; +var _require3 = require('../utils/deepCopy'), + deepCopy = _require3.deepCopy; +var _require4 = require('../utils/isObject'), + isObject = _require4.isObject; +var _require5 = require('../utils/obj2xml'), + obj2xml = _require5.obj2xml; +var _require6 = require('../utils/checkObjectTag'), + checkObjectTag = _require6.checkObjectTag; +var _require7 = require('../utils/getStrBytesCount'), + getStrBytesCount = _require7.getStrBytesCount; +var proto = exports; +proto.putBucketLifecycle = /*#__PURE__*/function () { + var _putBucketLifecycle = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, rules, options) { + var params, Rule, paramXMLObj, paramXML, result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + _checkBucketName(name); + if (isArray(rules)) { + _context.next = 3; + break; + } + throw new Error('rules must be Array'); + case 3: + params = this._bucketRequestParams('PUT', name, 'lifecycle', options); + Rule = []; + paramXMLObj = { + LifecycleConfiguration: { + Rule: Rule + } + }; + rules.forEach(function (_) { + defaultDaysAndDate2Expiration(_); // todo delete, 兼容旧版本 + checkRule(_); + if (_.id) { + _.ID = _.id; + delete _.id; + } + Rule.push(_); + }); + paramXML = obj2xml(paramXMLObj, { + headers: true, + firstUpperCase: true + }); + params.content = paramXML; + params.mime = 'xml'; + params.successStatuses = [200]; + _context.next = 13; + return this.request(params); + case 13: + result = _context.sent; + return _context.abrupt("return", { + res: result.res + }); + case 15: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function putBucketLifecycle(_x, _x2, _x3) { + return _putBucketLifecycle.apply(this, arguments); + } + return putBucketLifecycle; +}(); + +// todo delete, 兼容旧版本 +function defaultDaysAndDate2Expiration(obj) { + if (obj.days) { + obj.expiration = { + days: obj.days + }; + } + if (obj.date) { + obj.expiration = { + createdBeforeDate: obj.date + }; + } +} +function checkDaysAndDate(obj, key) { + var days = obj.days, + createdBeforeDate = obj.createdBeforeDate; + if (!days && !createdBeforeDate) { + throw new Error("".concat(key, " must includes days or createdBeforeDate")); + } else if (days && (isArray(days) || !/^[1-9][0-9]*$/.test(days))) { + throw new Error('days must be a positive integer'); + } else if (createdBeforeDate && !/\d{4}-\d{2}-\d{2}T00:00:00.000Z/.test(createdBeforeDate)) { + throw new Error('createdBeforeDate must be date and conform to iso8601 format'); + } +} +function checkNoncurrentDays(obj, key) { + var noncurrentDays = obj.noncurrentDays; + if (!noncurrentDays) { + throw new Error("".concat(key, " must includes noncurrentDays")); + } else if (noncurrentDays && (isArray(noncurrentDays) || !/^[1-9][0-9]*$/.test(noncurrentDays))) { + throw new Error('noncurrentDays must be a positive integer'); + } +} +function handleCheckTag(tag) { + if (!isArray(tag) && !isObject(tag)) { + throw new Error('tag must be Object or Array'); + } + tag = isObject(tag) ? [tag] : tag; + var tagObj = {}; + var tagClone = deepCopy(tag); + tagClone.forEach(function (v) { + tagObj[v.key] = v.value; + }); + checkObjectTag(tagObj); +} +function checkStorageClass(storageClass) { + if (!['IA', 'Archive', 'ColdArchive', 'DeepColdArchive'].includes(storageClass)) throw new Error("StorageClass must be IA or Archive or ColdArchive or DeepColdArchive"); +} +function checkRule(rule) { + if (rule.id && getStrBytesCount(rule.id) > 255) throw new Error('ID is composed of 255 bytes at most'); + if (rule.prefix === undefined) throw new Error('Rule must includes prefix'); + if (!['Enabled', 'Disabled'].includes(rule.status)) throw new Error('Status must be Enabled or Disabled'); + if (!rule.expiration && !rule.noncurrentVersionExpiration && !rule.abortMultipartUpload && !rule.transition && !rule.noncurrentVersionTransition) { + throw new Error('Rule must includes expiration or noncurrentVersionExpiration or abortMultipartUpload or transition or noncurrentVersionTransition'); + } + if (rule.transition) { + checkStorageClass(rule.transition.storageClass); + checkDaysAndDate(rule.transition, 'Transition'); + } + if (rule.expiration) { + if (!rule.expiration.expiredObjectDeleteMarker) { + checkDaysAndDate(rule.expiration, 'Expiration'); + } else if (rule.expiration.days || rule.expiration.createdBeforeDate) { + throw new Error('expiredObjectDeleteMarker cannot be used with days or createdBeforeDate'); + } + } + if (rule.abortMultipartUpload) { + checkDaysAndDate(rule.abortMultipartUpload, 'AbortMultipartUpload'); + } + if (rule.noncurrentVersionTransition) { + checkStorageClass(rule.noncurrentVersionTransition.storageClass); + checkNoncurrentDays(rule.noncurrentVersionTransition, 'NoncurrentVersionTransition'); + } + if (rule.noncurrentVersionExpiration) { + checkNoncurrentDays(rule.noncurrentVersionExpiration, 'NoncurrentVersionExpiration'); + } + if (rule.tag) { + if (rule.abortMultipartUpload) { + throw new Error('Tag cannot be used with abortMultipartUpload'); + } + handleCheckTag(rule.tag); + } +} + +},{"../utils/checkBucketName":53,"../utils/checkObjectTag":56,"../utils/deepCopy":60,"../utils/getStrBytesCount":66,"../utils/isArray":67,"../utils/isObject":74,"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.includes.js":315,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/web.dom-collections.for-each.js":380}],22:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.array.includes.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var _require = require('../utils/checkBucketName'), + _checkBucketName = _require.checkBucketName; +var _require2 = require('../utils/obj2xml'), + obj2xml = _require2.obj2xml; +var proto = exports; +/** + * putBucketVersioning + * @param {String} name - bucket name + * @param {String} status + * @param {Object} options + */ + +proto.putBucketVersioning = /*#__PURE__*/function () { + var _putBucketVersioning = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, status) { + var options, + params, + paramXMLObj, + result, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {}; + _checkBucketName(name); + if (['Enabled', 'Suspended'].includes(status)) { + _context.next = 4; + break; + } + throw new Error('status must be Enabled or Suspended'); + case 4: + params = this._bucketRequestParams('PUT', name, 'versioning', options); + paramXMLObj = { + VersioningConfiguration: { + Status: status + } + }; + params.mime = 'xml'; + params.content = obj2xml(paramXMLObj, { + headers: true + }); + _context.next = 10; + return this.request(params); + case 10: + result = _context.sent; + return _context.abrupt("return", { + res: result.res, + status: result.status + }); + case 12: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function putBucketVersioning(_x, _x2) { + return _putBucketVersioning.apply(this, arguments); + } + return putBucketVersioning; +}(); + +},{"../utils/checkBucketName":53,"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.includes.js":315}],23:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var _require = require('../utils/checkBucketName'), + _checkBucketName = _require.checkBucketName; +var _require2 = require('../utils/obj2xml'), + obj2xml = _require2.obj2xml; +var _require3 = require('../utils/isArray'), + isArray = _require3.isArray; +var proto = exports; +proto.putBucketWebsite = /*#__PURE__*/function () { + var _putBucketWebsite = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name) { + var config, + options, + params, + IndexDocument, + WebsiteConfiguration, + website, + result, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + config = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + options = _args.length > 2 ? _args[2] : undefined; + _checkBucketName(name); + params = this._bucketRequestParams('PUT', name, 'website', options); + IndexDocument = { + Suffix: config.index || 'index.html' + }; + WebsiteConfiguration = { + IndexDocument: IndexDocument + }; + website = { + WebsiteConfiguration: WebsiteConfiguration + }; + if (config.supportSubDir) { + IndexDocument.SupportSubDir = config.supportSubDir; + } + if (config.type) { + IndexDocument.Type = config.type; + } + if (config.error) { + WebsiteConfiguration.ErrorDocument = { + Key: config.error + }; + } + if (!(config.routingRules !== undefined)) { + _context.next = 14; + break; + } + if (isArray(config.routingRules)) { + _context.next = 13; + break; + } + throw new Error('RoutingRules must be Array'); + case 13: + WebsiteConfiguration.RoutingRules = { + RoutingRule: config.routingRules + }; + case 14: + website = obj2xml(website); + params.content = website; + params.mime = 'xml'; + params.successStatuses = [200]; + _context.next = 20; + return this.request(params); + case 20: + result = _context.sent; + return _context.abrupt("return", { + res: result.res + }); + case 22: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function putBucketWebsite(_x) { + return _putBucketWebsite.apply(this, arguments); + } + return putBucketWebsite; +}(); + +},{"../utils/checkBucketName":53,"../utils/isArray":67,"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],24:[function(require,module,exports){ +(function (Buffer){(function (){ +"use strict"; + +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.regexp.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.object.keys.js"); +exports.encodeCallback = function encodeCallback(reqParams, options) { + reqParams.headers = reqParams.headers || {}; + if (!Object.prototype.hasOwnProperty.call(reqParams.headers, 'x-oss-callback')) { + if (options.callback) { + var json = { + callbackUrl: encodeURI(options.callback.url), + callbackBody: options.callback.body + }; + if (options.callback.host) { + json.callbackHost = options.callback.host; + } + if (options.callback.contentType) { + json.callbackBodyType = options.callback.contentType; + } + if (options.callback.callbackSNI) { + json.callbackSNI = options.callback.callbackSNI; + } + var callback = Buffer.from(JSON.stringify(json)).toString('base64'); + reqParams.headers['x-oss-callback'] = callback; + if (options.callback.customValue) { + var callbackVar = {}; + Object.keys(options.callback.customValue).forEach(function (key) { + callbackVar["x:".concat(key)] = options.callback.customValue[key].toString(); + }); + reqParams.headers['x-oss-callback-var'] = Buffer.from(JSON.stringify(callbackVar)).toString('base64'); + } + } + } +}; + +}).call(this)}).call(this,require("buffer").Buffer) +},{"buffer":103,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/web.dom-collections.for-each.js":380}],25:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.array.concat.js"); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.replace.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +var __importDefault = void 0 && (void 0).__importDefault || function (mod) { + return mod && mod.__esModule ? mod : { + "default": mod + }; +}; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getReqUrl = void 0; +var copy_to_1 = __importDefault(require("copy-to")); +var url_1 = __importDefault(require("url")); +var merge_descriptors_1 = __importDefault(require("merge-descriptors")); +var is_type_of_1 = __importDefault(require("is-type-of")); +var isIP_1 = require("../utils/isIP"); +var checkConfigValid_1 = require("../utils/checkConfigValid"); +function getReqUrl(params) { + var ep = {}; + var isCname = this.options.cname; + checkConfigValid_1.checkConfigValid(this.options.endpoint, 'endpoint'); + copy_to_1.default(this.options.endpoint, false).to(ep); + if (params.bucket && !isCname && !isIP_1.isIP(ep.hostname) && !this.options.sldEnable) { + ep.host = "".concat(params.bucket, ".").concat(ep.host); + } + var resourcePath = '/'; + if (params.bucket && this.options.sldEnable) { + resourcePath += "".concat(params.bucket, "/"); + } + if (params.object) { + // Preserve '/' in result url + resourcePath += this._escape(params.object).replace(/\+/g, '%2B'); + } + ep.pathname = resourcePath; + var query = {}; + if (params.query) { + merge_descriptors_1.default(query, params.query); + } + if (params.subres) { + var subresAsQuery = {}; + if (is_type_of_1.default.string(params.subres)) { + subresAsQuery[params.subres] = ''; + } else if (is_type_of_1.default.array(params.subres)) { + params.subres.forEach(function (k) { + subresAsQuery[k] = ''; + }); + } else { + subresAsQuery = params.subres; + } + merge_descriptors_1.default(query, subresAsQuery); + } + ep.query = query; + return url_1.default.format(ep); +} +exports.getReqUrl = getReqUrl; + +},{"../utils/checkConfigValid":54,"../utils/isIP":73,"copy-to":107,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.replace.js":345,"core-js/modules/web.dom-collections.for-each.js":380,"is-type-of":537,"merge-descriptors":428,"url":543}],26:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.array.concat.js"); +require("core-js/modules/es.object.assign.js"); +require("core-js/modules/es.string.trim.js"); +var ms = require('humanize-ms'); +var urlutil = require('url'); +var _require = require('../utils/checkBucketName'), + _checkBucketName = _require.checkBucketName; +var _require2 = require('../utils/setRegion'), + setRegion = _require2.setRegion; +var _require3 = require('../utils/checkConfigValid'), + checkConfigValid = _require3.checkConfigValid; +function setEndpoint(endpoint, secure) { + checkConfigValid(endpoint, 'endpoint'); + var url = urlutil.parse(endpoint); + if (!url.protocol) { + url = urlutil.parse("http".concat(secure ? 's' : '', "://").concat(endpoint)); + } + if (url.protocol !== 'http:' && url.protocol !== 'https:') { + throw new Error('Endpoint protocol must be http or https.'); + } + return url; +} +module.exports = function (options) { + if (!options || !options.accessKeyId || !options.accessKeySecret) { + throw new Error('require accessKeyId, accessKeySecret'); + } + if (options.stsToken && !options.refreshSTSToken && !options.refreshSTSTokenInterval) { + console.warn("It's recommended to set 'refreshSTSToken' and 'refreshSTSTokenInterval' to refresh" + ' stsToken、accessKeyId、accessKeySecret automatically when sts token has expired'); + } + if (options.bucket) { + _checkBucketName(options.bucket); + } + var opts = Object.assign({ + region: 'oss-cn-hangzhou', + internal: false, + secure: false, + timeout: 60000, + bucket: null, + endpoint: null, + cname: false, + isRequestPay: false, + sldEnable: false, + headerEncoding: 'utf-8', + refreshSTSToken: null, + refreshSTSTokenInterval: 60000 * 5, + retryMax: 0, + authorizationV4: false // 启用v4签名,默认关闭 + }, options); + opts.accessKeyId = opts.accessKeyId.trim(); + opts.accessKeySecret = opts.accessKeySecret.trim(); + if (opts.timeout) { + opts.timeout = ms(opts.timeout); + } + if (opts.endpoint) { + opts.endpoint = setEndpoint(opts.endpoint, opts.secure); + } else if (opts.region) { + opts.endpoint = setRegion(opts.region, opts.internal, opts.secure); + } else { + throw new Error('require options.endpoint or options.region'); + } + opts.inited = true; + return opts; +}; + +},{"../utils/checkBucketName":53,"../utils/checkConfigValid":54,"../utils/setRegion":81,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.string.trim.js":349,"humanize-ms":399,"url":543}],27:[function(require,module,exports){ +"use strict"; + +var merge = require('merge-descriptors'); +var proto = exports; +merge(proto, require('./processObjectSave')); + +},{"./processObjectSave":28,"merge-descriptors":428}],28:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.array.concat.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +/* eslint-disable no-use-before-define */ +var _require = require('../utils/checkBucketName'), + _checkBucketName = _require.checkBucketName; +var querystring = require('querystring'); +var _require2 = require('js-base64'), + str2Base64 = _require2.Base64.encode; +var proto = exports; +proto.processObjectSave = /*#__PURE__*/function () { + var _processObjectSave = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(sourceObject, targetObject, process, targetBucket) { + var params, bucketParam, content, result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + checkArgs(sourceObject, 'sourceObject'); + checkArgs(targetObject, 'targetObject'); + checkArgs(process, 'process'); + targetObject = this._objectName(targetObject); + if (targetBucket) { + _checkBucketName(targetBucket); + } + params = this._objectRequestParams('POST', sourceObject, { + subres: 'x-oss-process' + }); + bucketParam = targetBucket ? ",b_".concat(str2Base64(targetBucket)) : ''; + targetObject = str2Base64(targetObject); + content = { + 'x-oss-process': "".concat(process, "|sys/saveas,o_").concat(targetObject).concat(bucketParam) + }; + params.content = querystring.stringify(content); + _context.next = 12; + return this.request(params); + case 12: + result = _context.sent; + return _context.abrupt("return", { + res: result.res, + status: result.res.status + }); + case 14: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function processObjectSave(_x, _x2, _x3, _x4) { + return _processObjectSave.apply(this, arguments); + } + return processObjectSave; +}(); +function checkArgs(name, key) { + if (!name) { + throw new Error("".concat(key, " is required")); + } + if (typeof name !== 'string') { + throw new Error("".concat(key, " must be String")); + } +} + +},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.concat.js":310,"js-base64":413,"querystring":451}],29:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.array.concat.js"); +require("core-js/modules/es.function.name.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.promise.js"); +require("core-js/modules/es.array.from.js"); +require("core-js/modules/es.string.iterator.js"); +require("core-js/modules/es.array.map.js"); +require("core-js/modules/es.array.filter.js"); +require("core-js/modules/es.array.find.js"); +require("core-js/modules/es.regexp.to-string.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +/* eslint-disable no-async-promise-executor */ + +var debug = require('debug')('ali-oss:multipart-copy'); +var copy = require('copy-to'); +var proto = exports; + +/** + * Upload a part copy in a multipart from the source bucket/object + * used with initMultipartUpload and completeMultipartUpload. + * @param {String} name copy object name + * @param {String} uploadId the upload id + * @param {Number} partNo the part number + * @param {String} range like 0-102400 part size need to copy + * @param {Object} sourceData + * {String} sourceData.sourceKey the source object name + * {String} sourceData.sourceBucketName the source bucket name + * @param {Object} options + */ +/* eslint max-len: [0] */ +proto.uploadPartCopy = /*#__PURE__*/function () { + var _uploadPartCopy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, uploadId, partNo, range, sourceData) { + var options, + versionId, + copySource, + params, + result, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 5 && _args[5] !== undefined ? _args[5] : {}; + options.headers = options.headers || {}; + versionId = options.versionId || options.subres && options.subres.versionId || null; + if (versionId) { + copySource = "/".concat(sourceData.sourceBucketName, "/").concat(encodeURIComponent(sourceData.sourceKey), "?versionId=").concat(versionId); + } else { + copySource = "/".concat(sourceData.sourceBucketName, "/").concat(encodeURIComponent(sourceData.sourceKey)); + } + options.headers['x-oss-copy-source'] = copySource; + if (range) { + options.headers['x-oss-copy-source-range'] = "bytes=".concat(range); + } + options.subres = { + partNumber: partNo, + uploadId: uploadId + }; + params = this._objectRequestParams('PUT', name, options); + params.mime = options.mime; + params.successStatuses = [200]; + _context.next = 12; + return this.request(params); + case 12: + result = _context.sent; + return _context.abrupt("return", { + name: name, + etag: result.res.headers.etag, + res: result.res + }); + case 14: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function uploadPartCopy(_x, _x2, _x3, _x4, _x5) { + return _uploadPartCopy.apply(this, arguments); + } + return uploadPartCopy; +}(); + +/** + * @param {String} name copy object name + * @param {Object} sourceData + * {String} sourceData.sourceKey the source object name + * {String} sourceData.sourceBucketName the source bucket name + * {Number} sourceData.startOffset data copy start byte offset, e.g: 0 + * {Number} sourceData.endOffset data copy end byte offset, e.g: 102400 + * @param {Object} options + * {Number} options.partSize + */ +proto.multipartUploadCopy = /*#__PURE__*/function () { + var _multipartUploadCopy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(name, sourceData) { + var options, + _options$versionId, + versionId, + metaOpt, + objectMeta, + fileSize, + minPartSize, + copySize, + init, + uploadId, + partSize, + checkpoint, + _args2 = arguments; + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + options = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : {}; + this.resetCancelFlag(); + _options$versionId = options.versionId, versionId = _options$versionId === void 0 ? null : _options$versionId; + metaOpt = { + versionId: versionId + }; + _context2.next = 6; + return this._getObjectMeta(sourceData.sourceBucketName, sourceData.sourceKey, metaOpt); + case 6: + objectMeta = _context2.sent; + fileSize = objectMeta.res.headers['content-length']; + sourceData.startOffset = sourceData.startOffset || 0; + sourceData.endOffset = sourceData.endOffset || fileSize; + if (!(options.checkpoint && options.checkpoint.uploadId)) { + _context2.next = 14; + break; + } + _context2.next = 13; + return this._resumeMultipartCopy(options.checkpoint, sourceData, options); + case 13: + return _context2.abrupt("return", _context2.sent); + case 14: + minPartSize = 100 * 1024; + copySize = sourceData.endOffset - sourceData.startOffset; + if (!(copySize < minPartSize)) { + _context2.next = 18; + break; + } + throw new Error("copySize must not be smaller than ".concat(minPartSize)); + case 18: + if (!(options.partSize && options.partSize < minPartSize)) { + _context2.next = 20; + break; + } + throw new Error("partSize must not be smaller than ".concat(minPartSize)); + case 20: + _context2.next = 22; + return this.initMultipartUpload(name, options); + case 22: + init = _context2.sent; + uploadId = init.uploadId; + partSize = this._getPartSize(copySize, options.partSize); + checkpoint = { + name: name, + copySize: copySize, + partSize: partSize, + uploadId: uploadId, + doneParts: [] + }; + if (!(options && options.progress)) { + _context2.next = 29; + break; + } + _context2.next = 29; + return options.progress(0, checkpoint, init.res); + case 29: + _context2.next = 31; + return this._resumeMultipartCopy(checkpoint, sourceData, options); + case 31: + return _context2.abrupt("return", _context2.sent); + case 32: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + function multipartUploadCopy(_x6, _x7) { + return _multipartUploadCopy.apply(this, arguments); + } + return multipartUploadCopy; +}(); + +/* + * Resume multipart copy from checkpoint. The checkpoint will be + * updated after each successful part copy. + * @param {Object} checkpoint the checkpoint + * @param {Object} options + */ +proto._resumeMultipartCopy = /*#__PURE__*/function () { + var _resumeMultipartCopy2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(checkpoint, sourceData, options) { + var _options$versionId2, versionId, metaOpt, copySize, partSize, uploadId, doneParts, name, partOffs, numParts, uploadPartCopyOptions, uploadPartJob, all, done, todo, defaultParallel, parallel, i, errors, abortEvent, err; + return _regenerator.default.wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + if (!this.isCancel()) { + _context4.next = 2; + break; + } + throw this._makeCancelEvent(); + case 2: + _options$versionId2 = options.versionId, versionId = _options$versionId2 === void 0 ? null : _options$versionId2; + metaOpt = { + versionId: versionId + }; + copySize = checkpoint.copySize, partSize = checkpoint.partSize, uploadId = checkpoint.uploadId, doneParts = checkpoint.doneParts, name = checkpoint.name; + partOffs = this._divideMultipartCopyParts(copySize, partSize, sourceData.startOffset); + numParts = partOffs.length; + uploadPartCopyOptions = { + headers: {} + }; + if (options.copyheaders) { + copy(options.copyheaders).to(uploadPartCopyOptions.headers); + } + if (versionId) { + copy(metaOpt).to(uploadPartCopyOptions); + } + uploadPartJob = function uploadPartJob(self, partNo, source) { + return new Promise( /*#__PURE__*/function () { + var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(resolve, reject) { + var pi, range, result; + return _regenerator.default.wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + _context3.prev = 0; + if (self.isCancel()) { + _context3.next = 22; + break; + } + pi = partOffs[partNo - 1]; + range = "".concat(pi.start, "-").concat(pi.end - 1); + _context3.prev = 4; + _context3.next = 7; + return self.uploadPartCopy(name, uploadId, partNo, range, source, uploadPartCopyOptions); + case 7: + result = _context3.sent; + _context3.next = 15; + break; + case 10: + _context3.prev = 10; + _context3.t0 = _context3["catch"](4); + if (!(_context3.t0.status === 404)) { + _context3.next = 14; + break; + } + throw self._makeAbortEvent(); + case 14: + throw _context3.t0; + case 15: + if (self.isCancel()) { + _context3.next = 22; + break; + } + debug("content-range ".concat(result.res.headers['content-range'])); + doneParts.push({ + number: partNo, + etag: result.res.headers.etag + }); + checkpoint.doneParts = doneParts; + if (!(options && options.progress)) { + _context3.next = 22; + break; + } + _context3.next = 22; + return options.progress(doneParts.length / numParts, checkpoint, result.res); + case 22: + resolve(); + _context3.next = 29; + break; + case 25: + _context3.prev = 25; + _context3.t1 = _context3["catch"](0); + _context3.t1.partNum = partNo; + reject(_context3.t1); + case 29: + case "end": + return _context3.stop(); + } + }, _callee3, null, [[0, 25], [4, 10]]); + })); + return function (_x11, _x12) { + return _ref.apply(this, arguments); + }; + }()); + }; + all = Array.from(new Array(numParts), function (x, i) { + return i + 1; + }); + done = doneParts.map(function (p) { + return p.number; + }); + todo = all.filter(function (p) { + return done.indexOf(p) < 0; + }); + defaultParallel = 5; + parallel = options.parallel || defaultParallel; + if (!(this.checkBrowserAndVersion('Internet Explorer', '10') || parallel === 1)) { + _context4.next = 28; + break; + } + i = 0; + case 18: + if (!(i < todo.length)) { + _context4.next = 26; + break; + } + if (!this.isCancel()) { + _context4.next = 21; + break; + } + throw this._makeCancelEvent(); + case 21: + _context4.next = 23; + return uploadPartJob(this, todo[i], sourceData); + case 23: + i++; + _context4.next = 18; + break; + case 26: + _context4.next = 40; + break; + case 28: + _context4.next = 30; + return this._parallelNode(todo, parallel, uploadPartJob, sourceData); + case 30: + errors = _context4.sent; + abortEvent = errors.find(function (err) { + return err.name === 'abort'; + }); + if (!abortEvent) { + _context4.next = 34; + break; + } + throw abortEvent; + case 34: + if (!this.isCancel()) { + _context4.next = 36; + break; + } + throw this._makeCancelEvent(); + case 36: + if (!(errors && errors.length > 0)) { + _context4.next = 40; + break; + } + err = errors[0]; + err.message = "Failed to copy some parts with error: ".concat(err.toString(), " part_num: ").concat(err.partNum); + throw err; + case 40: + _context4.next = 42; + return this.completeMultipartUpload(name, uploadId, doneParts, options); + case 42: + return _context4.abrupt("return", _context4.sent); + case 43: + case "end": + return _context4.stop(); + } + }, _callee4, this); + })); + function _resumeMultipartCopy(_x8, _x9, _x10) { + return _resumeMultipartCopy2.apply(this, arguments); + } + return _resumeMultipartCopy; +}(); +proto._divideMultipartCopyParts = function _divideMultipartCopyParts(fileSize, partSize, startOffset) { + var numParts = Math.ceil(fileSize / partSize); + var partOffs = []; + for (var i = 0; i < numParts; i++) { + var start = partSize * i + startOffset; + var end = Math.min(start + partSize, fileSize + startOffset); + partOffs.push({ + start: start, + end: end + }); + } + return partOffs; +}; + +/** + * Get Object Meta + * @param {String} bucket bucket name + * @param {String} name object name + * @param {Object} options + */ +proto._getObjectMeta = /*#__PURE__*/function () { + var _getObjectMeta2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(bucket, name, options) { + var currentBucket, data; + return _regenerator.default.wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + currentBucket = this.getBucket(); + this.setBucket(bucket); + _context5.next = 4; + return this.head(name, options); + case 4: + data = _context5.sent; + this.setBucket(currentBucket); + return _context5.abrupt("return", data); + case 7: + case "end": + return _context5.stop(); + } + }, _callee5, this); + })); + function _getObjectMeta(_x13, _x14, _x15) { + return _getObjectMeta2.apply(this, arguments); + } + return _getObjectMeta; +}(); + +},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"copy-to":107,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.filter.js":312,"core-js/modules/es.array.find.js":313,"core-js/modules/es.array.from.js":314,"core-js/modules/es.array.map.js":318,"core-js/modules/es.function.name.js":322,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.iterator.js":343,"debug":536}],30:[function(require,module,exports){ +(function (process){(function (){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.array.map.js"); +require("core-js/modules/es.array.filter.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.array.sort.js"); +require("core-js/modules/es.array.concat.js"); +require("core-js/modules/es.object.keys.js"); +require("core-js/modules/es.regexp.to-string.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var copy = require('copy-to'); +var callback = require('./callback'); +var _require = require('./utils/deepCopy'), + deepCopyWith = _require.deepCopyWith; +var _require2 = require('./utils/isBuffer'), + isBuffer = _require2.isBuffer; +var _require3 = require('./utils/omit'), + omit = _require3.omit; +var proto = exports; + +/** + * List the on-going multipart uploads + * https://help.aliyun.com/document_detail/31997.html + * @param {Object} options + * @return {Array} the multipart uploads + */ +proto.listUploads = /*#__PURE__*/function () { + var _listUploads = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(query, options) { + var opt, params, result, uploads; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = options || {}; + opt = {}; + copy(options).to(opt); + opt.subres = 'uploads'; + params = this._objectRequestParams('GET', '', opt); + params.query = query; + params.xmlResponse = true; + params.successStatuses = [200]; + _context.next = 10; + return this.request(params); + case 10: + result = _context.sent; + uploads = result.data.Upload || []; + if (!Array.isArray(uploads)) { + uploads = [uploads]; + } + uploads = uploads.map(function (up) { + return { + name: up.Key, + uploadId: up.UploadId, + initiated: up.Initiated + }; + }); + return _context.abrupt("return", { + res: result.res, + uploads: uploads, + bucket: result.data.Bucket, + nextKeyMarker: result.data.NextKeyMarker, + nextUploadIdMarker: result.data.NextUploadIdMarker, + isTruncated: result.data.IsTruncated === 'true' + }); + case 15: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function listUploads(_x, _x2) { + return _listUploads.apply(this, arguments); + } + return listUploads; +}(); + +/** + * List the done uploadPart parts + * @param {String} name object name + * @param {String} uploadId multipart upload id + * @param {Object} query + * {Number} query.max-parts The maximum part number in the response of the OSS. Default value: 1000 + * {Number} query.part-number-marker Starting position of a specific list. + * {String} query.encoding-type Specify the encoding of the returned content and the encoding type. + * @param {Object} options + * @return {Object} result + */ +proto.listParts = /*#__PURE__*/function () { + var _listParts = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(name, uploadId, query, options) { + var opt, params, result; + return _regenerator.default.wrap(function _callee2$(_context2) { + while (1) switch (_context2.prev = _context2.next) { + case 0: + options = options || {}; + opt = {}; + copy(options).to(opt); + opt.subres = { + uploadId: uploadId + }; + params = this._objectRequestParams('GET', name, opt); + params.query = query; + params.xmlResponse = true; + params.successStatuses = [200]; + _context2.next = 10; + return this.request(params); + case 10: + result = _context2.sent; + return _context2.abrupt("return", { + res: result.res, + uploadId: result.data.UploadId, + bucket: result.data.Bucket, + name: result.data.Key, + partNumberMarker: result.data.PartNumberMarker, + nextPartNumberMarker: result.data.NextPartNumberMarker, + maxParts: result.data.MaxParts, + isTruncated: result.data.IsTruncated, + parts: result.data.Part || [] + }); + case 12: + case "end": + return _context2.stop(); + } + }, _callee2, this); + })); + function listParts(_x3, _x4, _x5, _x6) { + return _listParts.apply(this, arguments); + } + return listParts; +}(); + +/** + * Abort a multipart upload transaction + * @param {String} name the object name + * @param {String} uploadId the upload id + * @param {Object} options + */ +proto.abortMultipartUpload = /*#__PURE__*/function () { + var _abortMultipartUpload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(name, uploadId, options) { + var opt, params, result; + return _regenerator.default.wrap(function _callee3$(_context3) { + while (1) switch (_context3.prev = _context3.next) { + case 0: + this._stop(); + options = options || {}; + opt = {}; + copy(options).to(opt); + opt.subres = { + uploadId: uploadId + }; + params = this._objectRequestParams('DELETE', name, opt); + params.successStatuses = [204]; + _context3.next = 9; + return this.request(params); + case 9: + result = _context3.sent; + return _context3.abrupt("return", { + res: result.res + }); + case 11: + case "end": + return _context3.stop(); + } + }, _callee3, this); + })); + function abortMultipartUpload(_x7, _x8, _x9) { + return _abortMultipartUpload.apply(this, arguments); + } + return abortMultipartUpload; +}(); + +/** + * Initiate a multipart upload transaction + * @param {String} name the object name + * @param {Object} options + * @return {String} upload id + */ +proto.initMultipartUpload = /*#__PURE__*/function () { + var _initMultipartUpload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(name, options) { + var opt, params, result; + return _regenerator.default.wrap(function _callee4$(_context4) { + while (1) switch (_context4.prev = _context4.next) { + case 0: + options = options || {}; + opt = {}; + copy(options).to(opt); + opt.headers = opt.headers || {}; + this._convertMetaToHeaders(options.meta, opt.headers); + opt.subres = 'uploads'; + params = this._objectRequestParams('POST', name, opt); + params.mime = options.mime; + params.xmlResponse = true; + params.successStatuses = [200]; + _context4.next = 12; + return this.request(params); + case 12: + result = _context4.sent; + return _context4.abrupt("return", { + res: result.res, + bucket: result.data.Bucket, + name: result.data.Key, + uploadId: result.data.UploadId + }); + case 14: + case "end": + return _context4.stop(); + } + }, _callee4, this); + })); + function initMultipartUpload(_x10, _x11) { + return _initMultipartUpload.apply(this, arguments); + } + return initMultipartUpload; +}(); + +/** + * Upload a part in a multipart upload transaction + * @param {String} name the object name + * @param {String} uploadId the upload id + * @param {Integer} partNo the part number + * @param {File} file upload File, whole File + * @param {Integer} start part start bytes e.g: 102400 + * @param {Integer} end part end bytes e.g: 204800 + * @param {Object} options + */ +proto.uploadPart = /*#__PURE__*/function () { + var _uploadPart2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(name, uploadId, partNo, file, start, end, options) { + var data, isBrowserEnv; + return _regenerator.default.wrap(function _callee5$(_context5) { + while (1) switch (_context5.prev = _context5.next) { + case 0: + data = { + size: end - start + }; + isBrowserEnv = process && process.browser; + if (!isBrowserEnv) { + _context5.next = 8; + break; + } + _context5.next = 5; + return this._createBuffer(file, start, end); + case 5: + data.content = _context5.sent; + _context5.next = 11; + break; + case 8: + _context5.next = 10; + return this._createStream(file, start, end); + case 10: + data.stream = _context5.sent; + case 11: + _context5.next = 13; + return this._uploadPart(name, uploadId, partNo, data, options); + case 13: + return _context5.abrupt("return", _context5.sent); + case 14: + case "end": + return _context5.stop(); + } + }, _callee5, this); + })); + function uploadPart(_x12, _x13, _x14, _x15, _x16, _x17, _x18) { + return _uploadPart2.apply(this, arguments); + } + return uploadPart; +}(); + +/** + * Complete a multipart upload transaction + * @param {String} name the object name + * @param {String} uploadId the upload id + * @param {Array} parts the uploaded parts, each in the structure: + * {Integer} number partNo + * {String} etag part etag uploadPartCopy result.res.header.etag + * @param {Object} options + * {Object} [options.callback] The callback parameter is composed of a JSON string encoded in Base64 + * {String} options.callback.url the OSS sends a callback request to this URL + * {String} [options.callback.host] The host header value for initiating callback requests + * {String} options.callback.body The value of the request body when a callback is initiated + * {String} [options.callback.contentType] The Content-Type of the callback requests initiated + * {Boolean} [options.callback.callbackSNI] Whether OSS sends SNI to the origin address specified by callbackUrl when a callback request is initiated from the client + * {Object} [options.callback.customValue] Custom parameters are a map of key-values, e.g: + * customValue = { + * key1: 'value1', + * key2: 'value2' + * } + */ +proto.completeMultipartUpload = /*#__PURE__*/function () { + var _completeMultipartUpload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(name, uploadId, parts, options) { + var completeParts, xml, i, p, opt, params, result, ret; + return _regenerator.default.wrap(function _callee6$(_context6) { + while (1) switch (_context6.prev = _context6.next) { + case 0: + completeParts = parts.concat().sort(function (a, b) { + return a.number - b.number; + }).filter(function (item, index, arr) { + return !index || item.number !== arr[index - 1].number; + }); + xml = '<?xml version="1.0" encoding="UTF-8"?>\n<CompleteMultipartUpload>\n'; + for (i = 0; i < completeParts.length; i++) { + p = completeParts[i]; + xml += '<Part>\n'; + xml += "<PartNumber>".concat(p.number, "</PartNumber>\n"); + xml += "<ETag>".concat(p.etag, "</ETag>\n"); + xml += '</Part>\n'; + } + xml += '</CompleteMultipartUpload>'; + options = options || {}; + opt = {}; + opt = deepCopyWith(options, function (_) { + if (isBuffer(_)) return null; + }); + opt.subres = { + uploadId: uploadId + }; + opt.headers = omit(opt.headers, ['x-oss-server-side-encryption', 'x-oss-storage-class']); + params = this._objectRequestParams('POST', name, opt); + callback.encodeCallback(params, opt); + params.mime = 'xml'; + params.content = xml; + if (!(params.headers && params.headers['x-oss-callback'])) { + params.xmlResponse = true; + } + params.successStatuses = [200]; + _context6.next = 17; + return this.request(params); + case 17: + result = _context6.sent; + if (!options.progress) { + _context6.next = 21; + break; + } + _context6.next = 21; + return options.progress(1, null, result.res); + case 21: + ret = { + res: result.res, + bucket: params.bucket, + name: name, + etag: result.res.headers.etag + }; + if (params.headers && params.headers['x-oss-callback']) { + ret.data = JSON.parse(result.data.toString()); + } + return _context6.abrupt("return", ret); + case 24: + case "end": + return _context6.stop(); + } + }, _callee6, this); + })); + function completeMultipartUpload(_x19, _x20, _x21, _x22) { + return _completeMultipartUpload.apply(this, arguments); + } + return completeMultipartUpload; +}(); + +/** + * Upload a part in a multipart upload transaction + * @param {String} name the object name + * @param {String} uploadId the upload id + * @param {Integer} partNo the part number + * @param {Object} data the body data + * @param {Object} options + */ +proto._uploadPart = /*#__PURE__*/function () { + var _uploadPart3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(name, uploadId, partNo, data, options) { + var opt, params, isBrowserEnv, result; + return _regenerator.default.wrap(function _callee7$(_context7) { + while (1) switch (_context7.prev = _context7.next) { + case 0: + options = options || {}; + opt = {}; + copy(options).to(opt); + opt.headers = opt.headers || {}; + opt.headers['Content-Length'] = data.size; + + // Uploading shards does not require x-oss headers. + opt.headers = omit(opt.headers, ['x-oss-server-side-encryption', 'x-oss-storage-class']); + opt.subres = { + partNumber: partNo, + uploadId: uploadId + }; + params = this._objectRequestParams('PUT', name, opt); + params.mime = opt.mime; + isBrowserEnv = process && process.browser; + isBrowserEnv ? params.content = data.content : params.stream = data.stream; + params.successStatuses = [200]; + params.disabledMD5 = options.disabledMD5; + _context7.next = 15; + return this.request(params); + case 15: + result = _context7.sent; + if (result.res.headers.etag) { + _context7.next = 18; + break; + } + throw new Error('Please set the etag of expose-headers in OSS \n https://help.aliyun.com/document_detail/32069.html'); + case 18: + if (data.stream) { + data.stream = null; + params.stream = null; + } + return _context7.abrupt("return", { + name: name, + etag: result.res.headers.etag, + res: result.res + }); + case 20: + case "end": + return _context7.stop(); + } + }, _callee7, this); + })); + function _uploadPart(_x23, _x24, _x25, _x26, _x27) { + return _uploadPart3.apply(this, arguments); + } + return _uploadPart; +}(); + +}).call(this)}).call(this,require('_process')) +},{"./callback":24,"./utils/deepCopy":60,"./utils/isBuffer":69,"./utils/omit":77,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"_process":538,"copy-to":107,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.filter.js":312,"core-js/modules/es.array.map.js":318,"core-js/modules/es.array.sort.js":320,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339}],31:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.regexp.exec.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var urlutil = require('url'); +var utility = require('utility'); +var copy = require('copy-to'); +var signHelper = require('../../common/signUtils'); +var _require = require('../utils/isIP'), + isIP = _require.isIP; +var _require2 = require('../utils/setSTSToken'), + setSTSToken = _require2.setSTSToken; +var _require3 = require('../utils/isFunction'), + isFunction = _require3.isFunction; +var proto = exports; + +/** + * asyncSignatureUrl + * @param {String} name object name + * @param {Object} options options + * @param {boolean} [strictObjectNameValidation=true] the flag of verifying object name strictly + */ +proto.asyncSignatureUrl = /*#__PURE__*/function () { + var _asyncSignatureUrl = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, options) { + var strictObjectNameValidation, + expires, + params, + resource, + signRes, + url, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + strictObjectNameValidation = _args.length > 2 && _args[2] !== undefined ? _args[2] : true; + if (!isIP(this.options.endpoint.hostname)) { + _context.next = 3; + break; + } + throw new Error('can not get the object URL when endpoint is IP'); + case 3: + if (!(strictObjectNameValidation && /^\?/.test(name))) { + _context.next = 5; + break; + } + throw new Error("Invalid object name ".concat(name)); + case 5: + options = options || {}; + name = this._objectName(name); + options.method = options.method || 'GET'; + expires = utility.timestamp() + (options.expires || 1800); + params = { + bucket: this.options.bucket, + object: name + }; + resource = this._getResource(params); + if (!(this.options.stsToken && isFunction(this.options.refreshSTSToken))) { + _context.next = 14; + break; + } + _context.next = 14; + return setSTSToken.call(this); + case 14: + if (this.options.stsToken) { + options['security-token'] = this.options.stsToken; + } + signRes = signHelper._signatureForURL(this.options.accessKeySecret, options, resource, expires); + url = urlutil.parse(this._getReqUrl(params)); + url.query = { + OSSAccessKeyId: this.options.accessKeyId, + Expires: expires, + Signature: signRes.Signature + }; + copy(signRes.subResource).to(url.query); + return _context.abrupt("return", url.format()); + case 20: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function asyncSignatureUrl(_x, _x2) { + return _asyncSignatureUrl.apply(this, arguments); + } + return asyncSignatureUrl; +}(); + +},{"../../common/signUtils":52,"../utils/isFunction":72,"../utils/isIP":73,"../utils/setSTSToken":82,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"copy-to":107,"core-js/modules/es.regexp.exec.js":338,"url":543,"utility":545}],32:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.object.keys.js"); +require("core-js/modules/es.array.find.js"); +require("core-js/modules/es.array.includes.js"); +require("core-js/modules/es.array.concat.js"); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.replace.js"); +var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var _require = require('../utils/checkBucketName'), + _checkBucketName = _require.checkBucketName; +var proto = exports; +var REPLACE_HEDERS = ['content-type', 'content-encoding', 'content-language', 'content-disposition', 'cache-control', 'expires']; +proto.copy = /*#__PURE__*/function () { + var _copy = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, sourceName, bucketName, options) { + var params, result, data; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if ((0, _typeof2.default)(bucketName) === 'object') { + options = bucketName; // 兼容旧版本,旧版本第三个参数为options + } + options = options || {}; + options.headers = options.headers || {}; + Object.keys(options.headers).forEach(function (key) { + options.headers["x-oss-copy-source-".concat(key.toLowerCase())] = options.headers[key]; + }); + if (options.meta || Object.keys(options.headers).find(function (_) { + return REPLACE_HEDERS.includes(_.toLowerCase()); + })) { + options.headers['x-oss-metadata-directive'] = 'REPLACE'; + } + this._convertMetaToHeaders(options.meta, options.headers); + sourceName = this._getSourceName(sourceName, bucketName); + if (options.versionId) { + sourceName = "".concat(sourceName, "?versionId=").concat(options.versionId); + } + options.headers['x-oss-copy-source'] = sourceName; + params = this._objectRequestParams('PUT', name, options); + params.xmlResponse = true; + params.successStatuses = [200, 304]; + _context.next = 14; + return this.request(params); + case 14: + result = _context.sent; + data = result.data; + if (data) { + data = { + etag: data.ETag, + lastModified: data.LastModified + }; + } + return _context.abrupt("return", { + data: data, + res: result.res + }); + case 18: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function copy(_x, _x2, _x3, _x4) { + return _copy.apply(this, arguments); + } + return copy; +}(); + +// todo delete +proto._getSourceName = function _getSourceName(sourceName, bucketName) { + if (typeof bucketName === 'string') { + sourceName = this._objectName(sourceName); + } else if (sourceName[0] !== '/') { + bucketName = this.options.bucket; + } else { + bucketName = sourceName.replace(/\/(.+?)(\/.*)/, '$1'); + sourceName = sourceName.replace(/(\/.+?\/)(.*)/, '$2'); + } + _checkBucketName(bucketName); + sourceName = encodeURIComponent(sourceName); + sourceName = "/".concat(bucketName, "/").concat(sourceName); + return sourceName; +}; + +},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/typeof":91,"@babel/runtime/regenerator":93,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.find.js":313,"core-js/modules/es.array.includes.js":315,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.replace.js":345,"core-js/modules/web.dom-collections.for-each.js":380}],33:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var proto = exports; +/** + * delete + * @param {String} name - object name + * @param {Object} options + * @param {{res}} + */ + +proto.delete = /*#__PURE__*/function () { + var _delete2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name) { + var options, + params, + result, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + options.subres = Object.assign({}, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + params = this._objectRequestParams('DELETE', name, options); + params.successStatuses = [204]; + _context.next = 7; + return this.request(params); + case 7: + result = _context.sent; + return _context.abrupt("return", { + res: result.res + }); + case 9: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function _delete(_x) { + return _delete2.apply(this, arguments); + } + return _delete; +}(); + +},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],34:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +/* eslint-disable object-curly-newline */ +var utility = require('utility'); +var _require = require('../utils/obj2xml'), + obj2xml = _require.obj2xml; +var proto = exports; +proto.deleteMulti = /*#__PURE__*/function () { + var _deleteMulti = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(names) { + var options, + objects, + i, + object, + _names$i, + key, + versionId, + paramXMLObj, + paramXML, + params, + result, + r, + deleted, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + objects = []; + if (!(!names || !names.length)) { + _context.next = 4; + break; + } + throw new Error('names is required'); + case 4: + for (i = 0; i < names.length; i++) { + object = {}; + if (typeof names[i] === 'string') { + object.Key = utility.escape(this._objectName(names[i])); + } else { + _names$i = names[i], key = _names$i.key, versionId = _names$i.versionId; + object.Key = utility.escape(this._objectName(key)); + object.VersionId = versionId; + } + objects.push(object); + } + paramXMLObj = { + Delete: { + Quiet: !!options.quiet, + Object: objects + } + }; + paramXML = obj2xml(paramXMLObj, { + headers: true + }); + options.subres = Object.assign({ + delete: '' + }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + params = this._objectRequestParams('POST', '', options); + params.mime = 'xml'; + params.content = paramXML; + params.xmlResponse = true; + params.successStatuses = [200]; + _context.next = 16; + return this.request(params); + case 16: + result = _context.sent; + r = result.data; + deleted = r && r.Deleted || null; + if (deleted) { + if (!Array.isArray(deleted)) { + deleted = [deleted]; + } + } + return _context.abrupt("return", { + res: result.res, + deleted: deleted || [] + }); + case 21: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function deleteMulti(_x) { + return _deleteMulti.apply(this, arguments); + } + return deleteMulti; +}(); + +},{"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325,"utility":545}],35:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var proto = exports; +/** + * deleteObjectTagging + * @param {String} name - object name + * @param {Object} options + */ + +proto.deleteObjectTagging = /*#__PURE__*/function () { + var _deleteObjectTagging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name) { + var options, + params, + result, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + options.subres = Object.assign({ + tagging: '' + }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + name = this._objectName(name); + params = this._objectRequestParams('DELETE', name, options); + params.successStatuses = [204]; + _context.next = 8; + return this.request(params); + case 8: + result = _context.sent; + return _context.abrupt("return", { + status: result.status, + res: result.res + }); + case 10: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function deleteObjectTagging(_x) { + return _deleteObjectTagging.apply(this, arguments); + } + return deleteObjectTagging; +}(); + +},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],36:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.array.concat.js"); +var urlutil = require('url'); +var _require = require('../utils/isIP'), + isIP = _require.isIP; +var proto = exports; + +/** + * Get Object url by name + * @param {String} name - object name + * @param {String} [baseUrl] - If provide `baseUrl`, will use `baseUrl` instead the default `endpoint and bucket`. + * @return {String} object url include bucket + */ +proto.generateObjectUrl = function generateObjectUrl(name, baseUrl) { + if (isIP(this.options.endpoint.hostname)) { + throw new Error('can not get the object URL when endpoint is IP'); + } + if (!baseUrl) { + baseUrl = this.options.endpoint.format(); + var copyUrl = urlutil.parse(baseUrl); + var bucket = this.options.bucket; + copyUrl.hostname = "".concat(bucket, ".").concat(copyUrl.hostname); + copyUrl.host = "".concat(bucket, ".").concat(copyUrl.host); + baseUrl = copyUrl.format(); + } else if (baseUrl[baseUrl.length - 1] !== '/') { + baseUrl += '/'; + } + return baseUrl + this._escape(this._objectName(name)); +}; + +},{"../utils/isIP":73,"core-js/modules/es.array.concat.js":310,"url":543}],37:[function(require,module,exports){ +(function (process){(function (){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var fs = require('fs'); +var is = require('is-type-of'); +var _require = require('../utils/isObject'), + isObject = _require.isObject; +var proto = exports; +/** + * get + * @param {String} name - object name + * @param {String | Stream | Object} file - file path or file stream or options + * @param {Object} options + * @param {{res}} + */ +proto.get = /*#__PURE__*/function () { + var _get = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, file) { + var options, + writeStream, + needDestroy, + isBrowserEnv, + responseCacheControl, + defaultSubresOptions, + result, + params, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {}; + writeStream = null; + needDestroy = false; + if (is.writableStream(file)) { + writeStream = file; + } else if (is.string(file)) { + writeStream = fs.createWriteStream(file); + needDestroy = true; + } else if (isObject(file)) { + // get(name, options) + options = file; + } + options = options || {}; + isBrowserEnv = process && process.browser; + responseCacheControl = options.responseCacheControl === null ? '' : 'no-cache'; + defaultSubresOptions = isBrowserEnv && responseCacheControl ? { + 'response-cache-control': responseCacheControl + } : {}; + options.subres = Object.assign(defaultSubresOptions, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + if (options.process) { + options.subres['x-oss-process'] = options.process; + } + _context.prev = 11; + params = this._objectRequestParams('GET', name, options); + params.writeStream = writeStream; + params.successStatuses = [200, 206, 304]; + _context.next = 17; + return this.request(params); + case 17: + result = _context.sent; + if (needDestroy) { + writeStream.destroy(); + } + _context.next = 28; + break; + case 21: + _context.prev = 21; + _context.t0 = _context["catch"](11); + if (!needDestroy) { + _context.next = 27; + break; + } + writeStream.destroy(); + // should delete the exists file before throw error + _context.next = 27; + return this._deleteFileSafe(file); + case 27: + throw _context.t0; + case 28: + return _context.abrupt("return", { + res: result.res, + content: result.data + }); + case 29: + case "end": + return _context.stop(); + } + }, _callee, this, [[11, 21]]); + })); + function get(_x, _x2) { + return _get.apply(this, arguments); + } + return get; +}(); + +}).call(this)}).call(this,require('_process')) +},{"../utils/isObject":74,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"_process":538,"core-js/modules/es.object.assign.js":325,"fs":102,"is-type-of":537}],38:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var proto = exports; + +/* + * Get object's ACL + * @param {String} name the object key + * @param {Object} options + * @return {Object} + */ +proto.getACL = /*#__PURE__*/function () { + var _getACL = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name) { + var options, + params, + result, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + options.subres = Object.assign({ + acl: '' + }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + name = this._objectName(name); + params = this._objectRequestParams('GET', name, options); + params.successStatuses = [200]; + params.xmlResponse = true; + _context.next = 9; + return this.request(params); + case 9: + result = _context.sent; + return _context.abrupt("return", { + acl: result.data.AccessControlList.Grant, + owner: { + id: result.data.Owner.ID, + displayName: result.data.Owner.DisplayName + }, + res: result.res + }); + case 11: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function getACL(_x) { + return _getACL.apply(this, arguments); + } + return getACL; +}(); + +},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],39:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.replace.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.object.keys.js"); +require("core-js/modules/es.object.assign.js"); +require("core-js/modules/es.array.map.js"); +require("core-js/modules/es.number.constructor.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +/* eslint-disable no-use-before-define */ +var proto = exports; +var _require = require('../utils/isObject'), + isObject = _require.isObject; +var _require2 = require('../utils/isArray'), + isArray = _require2.isArray; +var _require3 = require('../utils/parseRestoreInfo'), + parseRestoreInfo = _require3.parseRestoreInfo; +proto.getBucketVersions = getBucketVersions; +proto.listObjectVersions = getBucketVersions; +function getBucketVersions() { + return _getBucketVersions.apply(this, arguments); +} +function _getBucketVersions() { + _getBucketVersions = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + var query, + options, + params, + result, + objects, + deleteMarker, + that, + prefixes, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + query = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}; + options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + if (!(query.versionIdMarker && query.keyMarker === undefined)) { + _context.next = 4; + break; + } + throw new Error('A version-id marker cannot be specified without a key marker'); + case 4: + options.subres = Object.assign({ + versions: '' + }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + params = this._objectRequestParams('GET', '', options); + params.xmlResponse = true; + params.successStatuses = [200]; + params.query = formatQuery(query); + _context.next = 12; + return this.request(params); + case 12: + result = _context.sent; + objects = result.data.Version || []; + deleteMarker = result.data.DeleteMarker || []; + that = this; + if (objects) { + if (!Array.isArray(objects)) { + objects = [objects]; + } + objects = objects.map(function (obj) { + return { + name: obj.Key, + url: that._objectUrl(obj.Key), + lastModified: obj.LastModified, + isLatest: obj.IsLatest === 'true', + versionId: obj.VersionId, + etag: obj.ETag, + type: obj.Type, + size: Number(obj.Size), + storageClass: obj.StorageClass, + owner: { + id: obj.Owner.ID, + displayName: obj.Owner.DisplayName + }, + restoreInfo: parseRestoreInfo(obj.RestoreInfo) + }; + }); + } + if (deleteMarker) { + if (!isArray(deleteMarker)) { + deleteMarker = [deleteMarker]; + } + deleteMarker = deleteMarker.map(function (obj) { + return { + name: obj.Key, + lastModified: obj.LastModified, + versionId: obj.VersionId, + owner: { + id: obj.Owner.ID, + displayName: obj.Owner.DisplayName + } + }; + }); + } + prefixes = result.data.CommonPrefixes || null; + if (prefixes) { + if (!isArray(prefixes)) { + prefixes = [prefixes]; + } + prefixes = prefixes.map(function (item) { + return item.Prefix; + }); + } + return _context.abrupt("return", { + res: result.res, + objects: objects, + deleteMarker: deleteMarker, + prefixes: prefixes, + // attirbute of legacy error + nextMarker: result.data.NextKeyMarker || null, + // attirbute of legacy error + NextVersionIdMarker: result.data.NextVersionIdMarker || null, + nextKeyMarker: result.data.NextKeyMarker || null, + nextVersionIdMarker: result.data.NextVersionIdMarker || null, + isTruncated: result.data.IsTruncated === 'true' + }); + case 21: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + return _getBucketVersions.apply(this, arguments); +} +function camel2Line(name) { + return name.replace(/([A-Z])/g, '-$1').toLowerCase(); +} +function formatQuery() { + var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var obj = {}; + if (isObject(query)) { + Object.keys(query).forEach(function (key) { + obj[camel2Line(key)] = query[key]; + }); + } + return obj; +} + +},{"../utils/isArray":67,"../utils/isObject":74,"../utils/parseRestoreInfo":78,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.map.js":318,"core-js/modules/es.number.constructor.js":324,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.replace.js":345,"core-js/modules/web.dom-collections.for-each.js":380}],40:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var proto = exports; +/** + * getObjectMeta + * @param {String} name - object name + * @param {Object} options + * @param {{res}} + */ + +proto.getObjectMeta = /*#__PURE__*/function () { + var _getObjectMeta = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, options) { + var params, result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = options || {}; + name = this._objectName(name); + options.subres = Object.assign({ + objectMeta: '' + }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + params = this._objectRequestParams('HEAD', name, options); + params.successStatuses = [200]; + _context.next = 8; + return this.request(params); + case 8: + result = _context.sent; + return _context.abrupt("return", { + status: result.status, + res: result.res + }); + case 10: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function getObjectMeta(_x, _x2) { + return _getObjectMeta.apply(this, arguments); + } + return getObjectMeta; +}(); + +},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],41:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var proto = exports; +var _require = require('../utils/isObject'), + isObject = _require.isObject; +/** + * getObjectTagging + * @param {String} name - object name + * @param {Object} options + * @return {Object} + */ + +proto.getObjectTagging = /*#__PURE__*/function () { + var _getObjectTagging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name) { + var options, + params, + result, + Tagging, + Tag, + tag, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + options.subres = Object.assign({ + tagging: '' + }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + name = this._objectName(name); + params = this._objectRequestParams('GET', name, options); + params.successStatuses = [200]; + _context.next = 8; + return this.request(params); + case 8: + result = _context.sent; + _context.next = 11; + return this.parseXML(result.data); + case 11: + Tagging = _context.sent; + Tag = Tagging.TagSet.Tag; + Tag = Tag && isObject(Tag) ? [Tag] : Tag || []; + tag = {}; + Tag.forEach(function (item) { + tag[item.Key] = item.Value; + }); + return _context.abrupt("return", { + status: result.status, + res: result.res, + tag: tag + }); + case 17: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function getObjectTagging(_x) { + return _getObjectTagging.apply(this, arguments); + } + return getObjectTagging; +}(); + +},{"../utils/isObject":74,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.to-string.js":329,"core-js/modules/web.dom-collections.for-each.js":380}],42:[function(require,module,exports){ +"use strict"; + +var _require = require('../utils/isIP'), + isIP = _require.isIP; +var proto = exports; +/** + * Get Object url by name + * @param {String} name - object name + * @param {String} [baseUrl] - If provide `baseUrl`, + * will use `baseUrl` instead the default `endpoint`. + * @return {String} object url + */ +proto.getObjectUrl = function getObjectUrl(name, baseUrl) { + if (isIP(this.options.endpoint.hostname)) { + throw new Error('can not get the object URL when endpoint is IP'); + } + if (!baseUrl) { + baseUrl = this.options.endpoint.format(); + } else if (baseUrl[baseUrl.length - 1] !== '/') { + baseUrl += '/'; + } + return baseUrl + this._escape(this._objectName(name)); +}; + +},{"../utils/isIP":73}],43:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var proto = exports; +/** + * getSymlink + * @param {String} name - object name + * @param {Object} options + * @param {{res}} + */ + +proto.getSymlink = /*#__PURE__*/function () { + var _getSymlink = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name) { + var options, + params, + result, + target, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + options.subres = Object.assign({ + symlink: '' + }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + name = this._objectName(name); + params = this._objectRequestParams('GET', name, options); + params.successStatuses = [200]; + _context.next = 8; + return this.request(params); + case 8: + result = _context.sent; + target = result.res.headers['x-oss-symlink-target']; + return _context.abrupt("return", { + targetName: decodeURIComponent(target), + res: result.res + }); + case 11: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function getSymlink(_x) { + return _getSymlink.apply(this, arguments); + } + return getSymlink; +}(); + +},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],44:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.object.keys.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var _require = require('../utils/checkEnv'), + checkEnv = _require.checkEnv; +var proto = exports; +/** + * head + * @param {String} name - object name + * @param {Object} options + * @param {{res}} + */ + +proto.head = /*#__PURE__*/function () { + var _head = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name) { + var options, + params, + result, + data, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; + checkEnv('Because HeadObject has gzip enabled, head cannot get the file size correctly. If you need to get the file size, please use getObjectMeta'); + options.subres = Object.assign({}, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + params = this._objectRequestParams('HEAD', name, options); + params.successStatuses = [200, 304]; + _context.next = 8; + return this.request(params); + case 8: + result = _context.sent; + data = { + meta: null, + res: result.res, + status: result.status + }; + if (result.status === 200) { + Object.keys(result.headers).forEach(function (k) { + if (k.indexOf('x-oss-meta-') === 0) { + if (!data.meta) { + data.meta = {}; + } + data.meta[k.substring(11)] = result.headers[k]; + } + }); + } + return _context.abrupt("return", data); + case 12: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function head(_x) { + return _head.apply(this, arguments); + } + return head; +}(); + +},{"../utils/checkEnv":55,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/web.dom-collections.for-each.js":380}],45:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var proto = exports; + +/* + * Set object's ACL + * @param {String} name the object key + * @param {String} acl the object ACL + * @param {Object} options + */ +proto.putACL = /*#__PURE__*/function () { + var _putACL = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, acl, options) { + var params, result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = options || {}; + options.subres = Object.assign({ + acl: '' + }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + options.headers = options.headers || {}; + options.headers['x-oss-object-acl'] = acl; + name = this._objectName(name); + params = this._objectRequestParams('PUT', name, options); + params.successStatuses = [200]; + _context.next = 10; + return this.request(params); + case 10: + result = _context.sent; + return _context.abrupt("return", { + res: result.res + }); + case 12: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function putACL(_x, _x2, _x3) { + return _putACL.apply(this, arguments); + } + return putACL; +}(); + +},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],46:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +require("core-js/modules/es.array.map.js"); +require("core-js/modules/es.object.keys.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var _require = require('../utils/obj2xml'), + obj2xml = _require.obj2xml; +var _require2 = require('../utils/checkObjectTag'), + checkObjectTag = _require2.checkObjectTag; +var proto = exports; +/** + * putObjectTagging + * @param {String} name - object name + * @param {Object} tag - object tag, eg: `{a: "1", b: "2"}` + * @param {Object} options + */ + +proto.putObjectTagging = /*#__PURE__*/function () { + var _putObjectTagging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, tag) { + var options, + params, + paramXMLObj, + result, + _args = arguments; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {}; + checkObjectTag(tag); + options.subres = Object.assign({ + tagging: '' + }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + name = this._objectName(name); + params = this._objectRequestParams('PUT', name, options); + params.successStatuses = [200]; + tag = Object.keys(tag).map(function (key) { + return { + Key: key, + Value: tag[key] + }; + }); + paramXMLObj = { + Tagging: { + TagSet: { + Tag: tag + } + } + }; + params.mime = 'xml'; + params.content = obj2xml(paramXMLObj); + _context.next = 13; + return this.request(params); + case 13: + result = _context.sent; + return _context.abrupt("return", { + res: result.res, + status: result.status + }); + case 15: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function putObjectTagging(_x, _x2) { + return _putObjectTagging.apply(this, arguments); + } + return putObjectTagging; +}(); + +},{"../utils/checkObjectTag":56,"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.map.js":318,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.keys.js":328}],47:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var proto = exports; +/** + * putSymlink + * @param {String} name - object name + * @param {String} targetName - target name + * @param {Object} options + * @param {{res}} + */ + +proto.putSymlink = /*#__PURE__*/function () { + var _putSymlink = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(name, targetName, options) { + var params, result; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + options = options || {}; + options.headers = options.headers || {}; + targetName = this._escape(this._objectName(targetName)); + this._convertMetaToHeaders(options.meta, options.headers); + options.headers['x-oss-symlink-target'] = targetName; + options.subres = Object.assign({ + symlink: '' + }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + if (options.storageClass) { + options.headers['x-oss-storage-class'] = options.storageClass; + } + name = this._objectName(name); + params = this._objectRequestParams('PUT', name, options); + params.successStatuses = [200]; + _context.next = 13; + return this.request(params); + case 13: + result = _context.sent; + return _context.abrupt("return", { + res: result.res + }); + case 15: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function putSymlink(_x, _x2, _x3) { + return _putSymlink.apply(this, arguments); + } + return putSymlink; +}(); + +},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],48:[function(require,module,exports){ +(function (Buffer){(function (){ +"use strict"; + +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.regexp.to-string.js"); +var __importDefault = void 0 && (void 0).__importDefault || function (mod) { + return mod && mod.__esModule ? mod : { + "default": mod + }; +}; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.signPostObjectPolicyV4 = void 0; +var dateformat_1 = __importDefault(require("dateformat")); +var getStandardRegion_1 = require("../utils/getStandardRegion"); +var policy2Str_1 = require("../utils/policy2Str"); +var signUtils_1 = require("../signUtils"); +function signPostObjectPolicyV4(policy, date) { + var policyStr = Buffer.from(policy2Str_1.policy2Str(policy), 'utf8').toString('base64'); + var formattedDate = dateformat_1.default(date, "UTC:yyyymmdd'T'HHMMss'Z'"); + var onlyDate = formattedDate.split('T')[0]; + var signature = signUtils_1.getSignatureV4(this.options.accessKeySecret, onlyDate, getStandardRegion_1.getStandardRegion(this.options.region), policyStr); + return signature; +} +exports.signPostObjectPolicyV4 = signPostObjectPolicyV4; + +}).call(this)}).call(this,require("buffer").Buffer) +},{"../signUtils":52,"../utils/getStandardRegion":65,"../utils/policy2Str":79,"buffer":103,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339,"dateformat":383}],49:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.regexp.exec.js"); +var urlutil = require('url'); +var utility = require('utility'); +var copy = require('copy-to'); +var signHelper = require('../../common/signUtils'); +var _require = require('../utils/isIP'), + isIP = _require.isIP; +var proto = exports; + +/** + * signatureUrl + * @deprecated will be deprecated in 7.x + * @param {String} name object name + * @param {Object} options options + * @param {boolean} [strictObjectNameValidation=true] the flag of verifying object name strictly + */ +proto.signatureUrl = function signatureUrl(name, options) { + var strictObjectNameValidation = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + if (isIP(this.options.endpoint.hostname)) { + throw new Error('can not get the object URL when endpoint is IP'); + } + if (strictObjectNameValidation && /^\?/.test(name)) { + throw new Error("Invalid object name ".concat(name)); + } + options = options || {}; + name = this._objectName(name); + options.method = options.method || 'GET'; + var expires = utility.timestamp() + (options.expires || 1800); + var params = { + bucket: this.options.bucket, + object: name + }; + var resource = this._getResource(params); + if (this.options.stsToken) { + options['security-token'] = this.options.stsToken; + } + var signRes = signHelper._signatureForURL(this.options.accessKeySecret, options, resource, expires); + var url = urlutil.parse(this._getReqUrl(params)); + url.query = { + OSSAccessKeyId: this.options.accessKeyId, + Expires: expires, + Signature: signRes.Signature + }; + copy(signRes.subResource).to(url.query); + return url.format(); +}; + +},{"../../common/signUtils":52,"../utils/isIP":73,"copy-to":107,"core-js/modules/es.regexp.exec.js":338,"url":543,"utility":545}],50:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.assign.js"); +require("core-js/modules/es.array.join.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var dateFormat = require('dateformat'); +var urlUtil = require('url'); +var signHelper = require('../../common/signUtils'); +var _require = require('../utils/setSTSToken'), + setSTSToken = _require.setSTSToken; +var _require2 = require('../utils/isFunction'), + isFunction = _require2.isFunction; +var _require3 = require('../utils/getStandardRegion'), + getStandardRegion = _require3.getStandardRegion; +var proto = exports; + +/** + * signatureUrlV4 + * + * @param {string} method + * @param {number} expires + * @param {Object} [request] + * @param {Object} [request.headers] + * @param {Object} [request.queries] + * @param {string} [objectName] + * @param {string[]} [additionalHeaders] + */ +proto.signatureUrlV4 = /*#__PURE__*/function () { + var _signatureUrlV = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(method, expires, request, objectName, additionalHeaders) { + var cloudBoxId, product, signRegion, headers, queries, date, formattedDate, onlyDate, fixedAdditionalHeaders, canonicalRequest, stringToSign, signedUrl; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + cloudBoxId = this.options.cloudBoxId; + product = signHelper.getProduct(cloudBoxId); + signRegion = signHelper.getSignRegion(getStandardRegion(this.options.region), cloudBoxId); + headers = request && request.headers || {}; + queries = Object.assign({}, request && request.queries || {}); + date = new Date(); + formattedDate = dateFormat(date, "UTC:yyyymmdd'T'HHMMss'Z'"); + onlyDate = formattedDate.split('T')[0]; + fixedAdditionalHeaders = signHelper.fixAdditionalHeaders(additionalHeaders); + if (fixedAdditionalHeaders.length > 0) { + queries['x-oss-additional-headers'] = fixedAdditionalHeaders.join(';'); + } + queries['x-oss-credential'] = signHelper.getCredential(onlyDate, signRegion, this.options.accessKeyId, product); + queries['x-oss-date'] = formattedDate; + queries['x-oss-expires'] = expires; + queries['x-oss-signature-version'] = 'OSS4-HMAC-SHA256'; + if (!(this.options.stsToken && isFunction(this.options.refreshSTSToken))) { + _context.next = 17; + break; + } + _context.next = 17; + return setSTSToken.call(this); + case 17: + if (this.options.stsToken) { + queries['x-oss-security-token'] = this.options.stsToken; + } + canonicalRequest = signHelper.getCanonicalRequest(method, { + headers: headers, + queries: queries + }, this.options.bucket, objectName, fixedAdditionalHeaders); + stringToSign = signHelper.getStringToSign(signRegion, formattedDate, canonicalRequest, product); + queries['x-oss-signature'] = signHelper.getSignatureV4(this.options.accessKeySecret, onlyDate, signRegion, stringToSign, product); + signedUrl = urlUtil.parse(this._getReqUrl({ + bucket: this.options.bucket, + object: objectName + })); + signedUrl.query = Object.assign({}, queries); + return _context.abrupt("return", signedUrl.format()); + case 24: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + function signatureUrlV4(_x, _x2, _x3, _x4, _x5) { + return _signatureUrlV.apply(this, arguments); + } + return signatureUrlV4; +}(); + +},{"../../common/signUtils":52,"../utils/getStandardRegion":65,"../utils/isFunction":72,"../utils/setSTSToken":82,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.join.js":317,"core-js/modules/es.object.assign.js":325,"dateformat":383,"url":543}],51:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.array.iterator.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.promise.js"); +require("core-js/modules/es.string.iterator.js"); +require("core-js/modules/web.dom-collections.iterator.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.function.name.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +var _require = require('./utils/isArray'), + isArray = _require.isArray; +var proto = exports; +proto._parallelNode = /*#__PURE__*/function () { + var _parallelNode2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(todo, parallel, fn, sourceData) { + var that, jobErr, jobs, tempBatch, remainder, batch, taskIndex, i; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + that = this; // upload in parallel + jobErr = []; + jobs = []; + tempBatch = todo.length / parallel; + remainder = todo.length % parallel; + batch = remainder === 0 ? tempBatch : (todo.length - remainder) / parallel + 1; + taskIndex = 1; + i = 0; + case 8: + if (!(i < todo.length)) { + _context.next = 26; + break; + } + if (!that.isCancel()) { + _context.next = 11; + break; + } + return _context.abrupt("break", 26); + case 11: + if (sourceData) { + jobs.push(fn(that, todo[i], sourceData)); + } else { + jobs.push(fn(that, todo[i])); + } + if (!(jobs.length === parallel || taskIndex === batch && i === todo.length - 1)) { + _context.next = 23; + break; + } + _context.prev = 13; + taskIndex += 1; + /* eslint no-await-in-loop: [0] */ + _context.next = 17; + return Promise.all(jobs); + case 17: + _context.next = 22; + break; + case 19: + _context.prev = 19; + _context.t0 = _context["catch"](13); + jobErr.push(_context.t0); + case 22: + jobs = []; + case 23: + i++; + _context.next = 8; + break; + case 26: + return _context.abrupt("return", jobErr); + case 27: + case "end": + return _context.stop(); + } + }, _callee, this, [[13, 19]]); + })); + function _parallelNode(_x, _x2, _x3, _x4) { + return _parallelNode2.apply(this, arguments); + } + return _parallelNode; +}(); +proto._parallel = function _parallel(todo, parallel, jobPromise) { + var that = this; + return new Promise(function (resolve) { + var _jobErr = []; + if (parallel <= 0 || !todo) { + resolve(_jobErr); + return; + } + function onlyOnce(fn) { + return function () { + if (fn === null) throw new Error('Callback was already called.'); + var callFn = fn; + fn = null; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + callFn.apply(this, args); + }; + } + function createArrayIterator(coll) { + var i = -1; + var len = coll.length; + return function next() { + return ++i < len && !that.isCancel() ? { + value: coll[i], + key: i + } : null; + }; + } + var nextElem = createArrayIterator(todo); + var done = false; + var running = 0; + var looping = false; + function iterateeCallback(err) { + running -= 1; + if (err) { + done = true; + _jobErr.push(err); + resolve(_jobErr); + } else if (done && running <= 0) { + done = true; + resolve(_jobErr); + } else if (!looping) { + /* eslint no-use-before-define: [0] */ + if (that.isCancel()) { + resolve(_jobErr); + } else { + replenish(); + } + } + } + function iteratee(value, callback) { + jobPromise(value).then(function (result) { + callback(null, result); + }).catch(function (err) { + callback(err); + }); + } + function replenish() { + looping = true; + while (running < parallel && !done && !that.isCancel()) { + var elem = nextElem(); + if (elem === null || _jobErr.length > 0) { + done = true; + if (running <= 0) { + resolve(_jobErr); + } + return; + } + running += 1; + iteratee(elem.value, onlyOnce(iterateeCallback)); + } + looping = false; + } + replenish(); + }); +}; + +/** + * cancel operation, now can use with multipartUpload + * @param {Object} abort + * {String} anort.name object key + * {String} anort.uploadId upload id + * {String} anort.options timeout + */ +proto.cancel = function cancel(abort) { + this.options.cancelFlag = true; + if (isArray(this.multipartUploadStreams)) { + this.multipartUploadStreams.forEach(function (_) { + if (_.destroyed === false) { + var err = { + name: 'cancel', + message: 'cancel' + }; + _.destroy(err); + } + }); + } + this.multipartUploadStreams = []; + if (abort) { + this.abortMultipartUpload(abort.name, abort.uploadId, abort.options); + } +}; +proto.isCancel = function isCancel() { + return this.options.cancelFlag; +}; +proto.resetCancelFlag = function resetCancelFlag() { + this.options.cancelFlag = false; +}; +proto._stop = function _stop() { + this.options.cancelFlag = true; +}; + +// cancel is not error , so create an object +proto._makeCancelEvent = function _makeCancelEvent() { + var cancelEvent = { + status: 0, + name: 'cancel' + }; + return cancelEvent; +}; + +// abort is not error , so create an object +proto._makeAbortEvent = function _makeAbortEvent() { + var abortEvent = { + status: 0, + name: 'abort', + message: 'upload task has been abort' + }; + return abortEvent; +}; + +},{"./utils/isArray":67,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.iterator.js":316,"core-js/modules/es.function.name.js":322,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.string.iterator.js":343,"core-js/modules/web.dom-collections.for-each.js":380,"core-js/modules/web.dom-collections.iterator.js":381}],52:[function(require,module,exports){ +(function (Buffer){(function (){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); +require("core-js/modules/es.string.trim.js"); +require("core-js/modules/es.array.sort.js"); +require("core-js/modules/es.array.join.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.object.keys.js"); +require("core-js/modules/es.array.concat.js"); +require("core-js/modules/es.array.filter.js"); +require("core-js/modules/es.array.iterator.js"); +require("core-js/modules/es.set.js"); +require("core-js/modules/es.string.iterator.js"); +require("core-js/modules/web.dom-collections.iterator.js"); +require("core-js/modules/es.array.map.js"); +require("core-js/modules/es.string.starts-with.js"); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.replace.js"); +require("core-js/modules/es.object.entries.js"); +require("core-js/modules/es.regexp.to-string.js"); +var crypto = require('./../../shims/crypto/crypto.js'); +var is = require('is-type-of'); +var qs = require('qs'); +var _require = require('./utils/lowercaseKeyHeader'), + lowercaseKeyHeader = _require.lowercaseKeyHeader; +var _require2 = require('./utils/encodeString'), + encodeString = _require2.encodeString; + +/** + * + * @param {string} [cloudBoxId] + * @return {string} + */ +exports.getProduct = function getProduct(cloudBoxId) { + if (cloudBoxId === undefined) return 'oss'; + return 'oss-cloudbox'; +}; +/** + * + * @param {string} region + * @param {string} [cloudBoxId] + * @return {string} + */ +exports.getSignRegion = function getSignRegion(region, cloudBoxId) { + if (cloudBoxId === undefined) return region; + return cloudBoxId; +}; + +/** + * + * @param {String} resourcePath + * @param {Object} parameters + * @return + */ +exports.buildCanonicalizedResource = function buildCanonicalizedResource(resourcePath, parameters) { + var canonicalizedResource = "".concat(resourcePath); + var separatorString = '?'; + if (is.string(parameters) && parameters.trim() !== '') { + canonicalizedResource += separatorString + parameters; + } else if (is.array(parameters)) { + parameters.sort(); + canonicalizedResource += separatorString + parameters.join('&'); + } else if (parameters) { + var processFunc = function processFunc(key) { + canonicalizedResource += separatorString + key; + if (parameters[key] || parameters[key] === 0) { + canonicalizedResource += "=".concat(parameters[key]); + } + separatorString = '&'; + }; + Object.keys(parameters).sort().forEach(processFunc); + } + return canonicalizedResource; +}; + +/** + * @param {String} method + * @param {String} resourcePath + * @param {Object} request + * @param {String} expires + * @return {String} canonicalString + */ +exports.buildCanonicalString = function canonicalString(method, resourcePath, request, expires) { + request = request || {}; + var headers = lowercaseKeyHeader(request.headers); + var OSS_PREFIX = 'x-oss-'; + var ossHeaders = []; + var headersToSign = {}; + var signContent = [method.toUpperCase(), headers['content-md5'] || '', headers['content-type'], expires || headers['x-oss-date']]; + Object.keys(headers).forEach(function (key) { + var lowerKey = key.toLowerCase(); + if (lowerKey.indexOf(OSS_PREFIX) === 0) { + headersToSign[lowerKey] = String(headers[key]).trim(); + } + }); + Object.keys(headersToSign).sort().forEach(function (key) { + ossHeaders.push("".concat(key, ":").concat(headersToSign[key])); + }); + signContent = signContent.concat(ossHeaders); + signContent.push(this.buildCanonicalizedResource(resourcePath, request.parameters)); + return signContent.join('\n'); +}; + +/** + * @param {String} accessKeySecret + * @param {String} canonicalString + */ +exports.computeSignature = function computeSignature(accessKeySecret, canonicalString) { + var headerEncoding = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'utf-8'; + var signature = crypto.createHmac('sha1', accessKeySecret); + return signature.update(Buffer.from(canonicalString, headerEncoding)).digest('base64'); +}; + +/** + * @param {String} accessKeyId + * @param {String} accessKeySecret + * @param {String} canonicalString + */ +exports.authorization = function authorization(accessKeyId, accessKeySecret, canonicalString, headerEncoding) { + return "OSS ".concat(accessKeyId, ":").concat(this.computeSignature(accessKeySecret, canonicalString, headerEncoding)); +}; + +/** + * @param {string[]} [additionalHeaders] + * @returns {string[]} + */ +exports.fixAdditionalHeaders = function (additionalHeaders) { + if (!additionalHeaders) { + return []; + } + var OSS_PREFIX = 'x-oss-'; + return (0, _toConsumableArray2.default)(new Set(additionalHeaders.map(function (v) { + return v.toLowerCase(); + }))).filter(function (v) { + return v !== 'content-type' && v !== 'content-md5' && !v.startsWith(OSS_PREFIX); + }).sort(); +}; + +/** + * @param {string} method + * @param {Object} request + * @param {Object} request.headers + * @param {Object} [request.queries] + * @param {string} [bucketName] + * @param {string} [objectName] + * @param {string[]} [additionalHeaders] additional headers after deduplication, lowercase and sorting + * @returns {string} + */ +exports.getCanonicalRequest = function getCanonicalRequest(method, request, bucketName, objectName, additionalHeaders) { + var headers = lowercaseKeyHeader(request.headers); + var queries = request.queries || {}; + var OSS_PREFIX = 'x-oss-'; + if (objectName && !bucketName) { + throw Error('Please ensure that bucketName is passed into getCanonicalRequest.'); + } + var signContent = [method.toUpperCase(), + // HTTP Verb + encodeString("/".concat(bucketName ? "".concat(bucketName, "/") : '').concat(objectName || '')).replace(/%2F/g, '/') // Canonical URI + ]; + + // Canonical Query String + signContent.push(qs.stringify(queries, { + encoder: encodeString, + sort: function sort(a, b) { + return a.localeCompare(b); + }, + strictNullHandling: true + })); + + // Canonical Headers + if (additionalHeaders) { + additionalHeaders.forEach(function (v) { + if (!Object.prototype.hasOwnProperty.call(headers, v)) { + throw Error("Can't find additional header ".concat(v, " in request headers.")); + } + }); + } + var tempHeaders = new Set(additionalHeaders); + Object.keys(headers).forEach(function (v) { + if (v === 'content-type' || v === 'content-md5' || v.startsWith(OSS_PREFIX)) { + tempHeaders.add(v); + } + }); + var canonicalHeaders = "".concat((0, _toConsumableArray2.default)(tempHeaders).sort().map(function (v) { + return "".concat(v, ":").concat(is.string(headers[v]) ? headers[v].trim() : headers[v], "\n"); + }).join('')); + signContent.push(canonicalHeaders); + + // Additional Headers + if (additionalHeaders && additionalHeaders.length > 0) { + signContent.push(additionalHeaders.join(';')); + } else { + signContent.push(''); + } + + // Hashed Payload + signContent.push(headers['x-oss-content-sha256'] || 'UNSIGNED-PAYLOAD'); + return signContent.join('\n'); +}; + +/** + * @param {string} date yyyymmdd + * @param {string} region Standard region, e.g. cn-hangzhou + * @param {string} [accessKeyId] Access Key ID + * @param {string} [product] Product name, default is oss + * @returns {string} + */ +exports.getCredential = function getCredential(date, region, accessKeyId) { + var product = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'oss'; + var tempCredential = "".concat(date, "/").concat(region, "/").concat(product, "/aliyun_v4_request"); + if (accessKeyId) { + return "".concat(accessKeyId, "/").concat(tempCredential); + } + return tempCredential; +}; + +/** + * @param {string} region Standard region, e.g. cn-hangzhou + * @param {string} date ISO8601 UTC:yyyymmdd'T'HHMMss'Z' + * @param {string} canonicalRequest + * @param {string} [product] + * @returns {string} + */ +exports.getStringToSign = function getStringToSign(region, date, canonicalRequest) { + var product = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'oss'; + var stringToSign = ['OSS4-HMAC-SHA256', date, + // TimeStamp + this.getCredential(date.split('T')[0], region, undefined, product), + // Scope + crypto.createHash('sha256').update(canonicalRequest).digest('hex') // Hashed Canonical Request + ]; + return stringToSign.join('\n'); +}; + +/** + * @param {String} accessKeySecret + * @param {string} date yyyymmdd + * @param {string} region Standard region, e.g. cn-hangzhou + * @param {string} stringToSign + * @param {string} [product] + * @returns {string} + */ +exports.getSignatureV4 = function getSignatureV4(accessKeySecret, date, region, stringToSign) { + var product = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'oss'; + var signingDate = crypto.createHmac('sha256', "aliyun_v4".concat(accessKeySecret)).update(date).digest(); + var signingRegion = crypto.createHmac('sha256', signingDate).update(region).digest(); + var signingOss = crypto.createHmac('sha256', signingRegion).update(product).digest(); + var signingKey = crypto.createHmac('sha256', signingOss).update('aliyun_v4_request').digest(); + var signatureValue = crypto.createHmac('sha256', signingKey).update(stringToSign).digest('hex'); + return signatureValue; +}; + +/** + * @param {String} accessKeyId + * @param {String} accessKeySecret + * @param {string} region Standard region, e.g. cn-hangzhou + * @param {string} method + * @param {Object} request + * @param {Object} request.headers + * @param {Object} [request.queries] + * @param {string} [bucketName] + * @param {string} [objectName] + * @param {string[]} [additionalHeaders] + * @param {string} [headerEncoding='utf-8'] + * @param {string} [cloudBoxId] + * @returns {string} + */ +exports.authorizationV4 = function authorizationV4(accessKeyId, accessKeySecret, region, method, request, bucketName, objectName, additionalHeaders) { + var headerEncoding = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 'utf-8'; + var cloudBoxId = arguments.length > 9 ? arguments[9] : undefined; + var product = this.getProduct(cloudBoxId); + var fixedAdditionalHeaders = this.fixAdditionalHeaders(additionalHeaders); + var fixedHeaders = {}; + Object.entries(request.headers).forEach(function (v) { + fixedHeaders[v[0]] = is.string(v[1]) ? Buffer.from(v[1], headerEncoding).toString() : v[1]; + }); + var date = fixedHeaders['x-oss-date'] || request.queries && request.queries['x-oss-date']; + var canonicalRequest = this.getCanonicalRequest(method, { + headers: fixedHeaders, + queries: request.queries + }, bucketName, objectName, fixedAdditionalHeaders); + var stringToSign = this.getStringToSign(region, date, canonicalRequest, product); + var onlyDate = date.split('T')[0]; + var signatureValue = this.getSignatureV4(accessKeySecret, onlyDate, region, stringToSign, product); + var additionalHeadersValue = fixedAdditionalHeaders.length > 0 ? "AdditionalHeaders=".concat(fixedAdditionalHeaders.join(';'), ",") : ''; + return "OSS4-HMAC-SHA256 Credential=".concat(this.getCredential(onlyDate, region, accessKeyId, product), ",").concat(additionalHeadersValue, "Signature=").concat(signatureValue); +}; + +/** + * + * @param {String} accessKeySecret + * @param {Object} options + * @param {String} resource + * @param {Number} expires + */ +exports._signatureForURL = function _signatureForURL(accessKeySecret) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var resource = arguments.length > 2 ? arguments[2] : undefined; + var expires = arguments.length > 3 ? arguments[3] : undefined; + var headerEncoding = arguments.length > 4 ? arguments[4] : undefined; + var headers = {}; + var _options$subResource = options.subResource, + subResource = _options$subResource === void 0 ? {} : _options$subResource; + if (options.process) { + var processKeyword = 'x-oss-process'; + subResource[processKeyword] = options.process; + } + if (options.trafficLimit) { + var trafficLimitKey = 'x-oss-traffic-limit'; + subResource[trafficLimitKey] = options.trafficLimit; + } + if (options.response) { + Object.keys(options.response).forEach(function (k) { + var key = "response-".concat(k.toLowerCase()); + subResource[key] = options.response[k]; + }); + } + Object.keys(options).forEach(function (key) { + var lowerKey = key.toLowerCase(); + var value = options[key]; + if (lowerKey.indexOf('x-oss-') === 0) { + headers[lowerKey] = value; + } else if (lowerKey.indexOf('content-md5') === 0) { + headers[key] = value; + } else if (lowerKey.indexOf('content-type') === 0) { + headers[key] = value; + } + }); + if (Object.prototype.hasOwnProperty.call(options, 'security-token')) { + subResource['security-token'] = options['security-token']; + } + if (Object.prototype.hasOwnProperty.call(options, 'callback')) { + var json = { + callbackUrl: encodeURI(options.callback.url), + callbackBody: options.callback.body + }; + if (options.callback.host) { + json.callbackHost = options.callback.host; + } + if (options.callback.contentType) { + json.callbackBodyType = options.callback.contentType; + } + if (options.callback.callbackSNI) { + json.callbackSNI = options.callback.callbackSNI; + } + subResource.callback = Buffer.from(JSON.stringify(json)).toString('base64'); + if (options.callback.customValue) { + var callbackVar = {}; + Object.keys(options.callback.customValue).forEach(function (key) { + callbackVar["x:".concat(key)] = options.callback.customValue[key]; + }); + subResource['callback-var'] = Buffer.from(JSON.stringify(callbackVar)).toString('base64'); + } + } + var canonicalString = this.buildCanonicalString(options.method, resource, { + headers: headers, + parameters: subResource + }, expires.toString()); + return { + Signature: this.computeSignature(accessKeySecret, canonicalString, headerEncoding), + subResource: subResource + }; +}; + +}).call(this)}).call(this,require("buffer").Buffer) +},{"./../../shims/crypto/crypto.js":531,"./utils/encodeString":61,"./utils/lowercaseKeyHeader":75,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/toConsumableArray":90,"buffer":103,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.filter.js":312,"core-js/modules/es.array.iterator.js":316,"core-js/modules/es.array.join.js":317,"core-js/modules/es.array.map.js":318,"core-js/modules/es.array.sort.js":320,"core-js/modules/es.object.entries.js":326,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.set.js":341,"core-js/modules/es.string.iterator.js":343,"core-js/modules/es.string.replace.js":345,"core-js/modules/es.string.starts-with.js":348,"core-js/modules/es.string.trim.js":349,"core-js/modules/web.dom-collections.for-each.js":380,"core-js/modules/web.dom-collections.iterator.js":381,"is-type-of":537,"qs":445}],53:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.regexp.exec.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.checkBucketName = void 0; +exports.checkBucketName = function (name) { + var createBucket = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var bucketRegex = createBucket ? /^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/ : /^[a-z0-9_][a-z0-9-_]{1,61}[a-z0-9_]$/; + if (!bucketRegex.test(name)) { + throw new Error('The bucket must be conform to the specifications'); + } +}; + +},{"core-js/modules/es.regexp.exec.js":338}],54:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.regexp.exec.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.checkConfigValid = void 0; +var checkConfigMap = { + endpoint: checkEndpoint, + region: /^[a-zA-Z0-9\-_]+$/ +}; +function checkEndpoint(endpoint) { + if (typeof endpoint === 'string') { + return /^[a-zA-Z0-9._:/-]+$/.test(endpoint); + } else if (endpoint.host) { + return /^[a-zA-Z0-9._:/-]+$/.test(endpoint.host); + } + return false; +} +exports.checkConfigValid = function (conf, key) { + if (checkConfigMap[key]) { + var isConfigValid = true; + if (checkConfigMap[key] instanceof Function) { + isConfigValid = checkConfigMap[key](conf); + } else { + isConfigValid = checkConfigMap[key].test(conf); + } + if (!isConfigValid) { + throw new Error("The ".concat(key, " must be conform to the specifications")); + } + } +}; + +},{"core-js/modules/es.regexp.exec.js":338}],55:[function(require,module,exports){ +(function (process){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.checkEnv = void 0; +function checkEnv(msg) { + if (process.browser) { + console.warn(msg); + } +} +exports.checkEnv = checkEnv; + +}).call(this)}).call(this,require('_process')) +},{"_process":538}],56:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.array.concat.js"); +require("core-js/modules/es.object.entries.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.checkObjectTag = void 0; +var _require = require('./checkValid'), + checkValid = _require.checkValid; +var _require2 = require('./isObject'), + isObject = _require2.isObject; +var commonRules = [{ + validator: function validator(value) { + if (typeof value !== 'string') { + throw new Error('the key and value of the tag must be String'); + } + } +}, { + pattern: /^[a-zA-Z0-9 +-=._:/]+$/, + msg: 'tag can contain letters, numbers, spaces, and the following symbols: plus sign (+), hyphen (-), equal sign (=), period (.), underscore (_), colon (:), and forward slash (/)' +}]; +var rules = { + key: [].concat(commonRules, [{ + pattern: /^.{1,128}$/, + msg: 'tag key can be a maximum of 128 bytes in length' + }]), + value: [].concat(commonRules, [{ + pattern: /^.{0,256}$/, + msg: 'tag value can be a maximum of 256 bytes in length' + }]) +}; +function checkObjectTag(tag) { + if (!isObject(tag)) { + throw new Error('tag must be Object'); + } + var entries = Object.entries(tag); + if (entries.length > 10) { + throw new Error('maximum of 10 tags for a object'); + } + var rulesIndexKey = ['key', 'value']; + entries.forEach(function (keyValue) { + keyValue.forEach(function (item, index) { + checkValid(item, rules[rulesIndexKey[index]]); + }); + }); +} +exports.checkObjectTag = checkObjectTag; + +},{"./checkValid":57,"./isObject":74,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.object.entries.js":326,"core-js/modules/es.object.to-string.js":329,"core-js/modules/web.dom-collections.for-each.js":380}],57:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.regexp.exec.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.checkValid = void 0; +function checkValid(_value, _rules) { + _rules.forEach(function (rule) { + if (rule.validator) { + rule.validator(_value); + } else if (rule.pattern && !rule.pattern.test(_value)) { + throw new Error(rule.msg); + } + }); +} +exports.checkValid = checkValid; + +},{"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/web.dom-collections.for-each.js":380}],58:[function(require,module,exports){ +(function (Buffer){(function (){ +"use strict"; + +require("core-js/modules/es.array.includes.js"); +require("core-js/modules/es.string.includes.js"); +require("core-js/modules/es.object.assign.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.object.entries.js"); +require("core-js/modules/es.array.concat.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.createRequest = void 0; +var crypto = require('./../../../shims/crypto/crypto.js'); +var debug = require('debug')('ali-oss'); +var _isString = require('lodash/isString'); +var _isArray = require('lodash/isArray'); +var _isObject = require('lodash/isObject'); +var mime = require('mime'); +var dateFormat = require('dateformat'); +var copy = require('copy-to'); +var path = require('path'); +var _require = require('./encoder'), + encoder = _require.encoder; +var _require2 = require('./isIP'), + isIP = _require2.isIP; +var _require3 = require('./setRegion'), + setRegion = _require3.setRegion; +var _require4 = require('../client/getReqUrl'), + getReqUrl = _require4.getReqUrl; +var _require5 = require('./isDingTalk'), + isDingTalk = _require5.isDingTalk; +function getHeader(headers, name) { + return headers[name] || headers[name.toLowerCase()]; +} +function delHeader(headers, name) { + delete headers[name]; + delete headers[name.toLowerCase()]; +} +function createRequest(params) { + var date = new Date(); + if (this.options.amendTimeSkewed) { + date = +new Date() + this.options.amendTimeSkewed; + } + var headers = { + 'x-oss-date': dateFormat(date, this.options.authorizationV4 ? "UTC:yyyymmdd'T'HHMMss'Z'" : "UTC:ddd, dd mmm yyyy HH:MM:ss 'GMT'") + }; + if (this.options.authorizationV4) { + headers['x-oss-content-sha256'] = 'UNSIGNED-PAYLOAD'; + } + if (typeof window !== 'undefined') { + headers['x-oss-user-agent'] = this.userAgent; + } + if (this.userAgent.includes('nodejs')) { + headers['User-Agent'] = this.userAgent; + } + if (this.options.isRequestPay) { + Object.assign(headers, { + 'x-oss-request-payer': 'requester' + }); + } + if (this.options.stsToken) { + headers['x-oss-security-token'] = this.options.stsToken; + } + copy(params.headers).to(headers); + if (!getHeader(headers, 'Content-Type')) { + if (params.mime && params.mime.indexOf('/') > 0) { + headers['Content-Type'] = params.mime; + } else if (isDingTalk()) { + headers['Content-Type'] = 'application/octet-stream'; + } else { + headers['Content-Type'] = mime.getType(params.mime || path.extname(params.object || '')); + } + } + if (!getHeader(headers, 'Content-Type')) { + delHeader(headers, 'Content-Type'); + } + if (params.content) { + if (!params.disabledMD5) { + if (!params.headers || !params.headers['Content-MD5']) { + headers['Content-MD5'] = crypto.createHash('md5').update(Buffer.from(params.content, 'utf8')).digest('base64'); + } else { + headers['Content-MD5'] = params.headers['Content-MD5']; + } + } + if (!headers['Content-Length']) { + headers['Content-Length'] = params.content.length; + } + } + var hasOwnProperty = Object.prototype.hasOwnProperty; + for (var k in headers) { + if (headers[k] && hasOwnProperty.call(headers, k)) { + headers[k] = encoder(String(headers[k]), this.options.headerEncoding); + } + } + var queries = {}; + if (_isString(params.subres)) { + queries[params.subres] = null; + } else if (_isArray(params.subres)) { + params.subres.forEach(function (v) { + queries[v] = null; + }); + } else if (_isObject(params.subres)) { + Object.entries(params.subres).forEach(function (v) { + queries[v[0]] = v[1] === '' ? null : v[1]; + }); + } + if (_isObject(params.query)) { + Object.entries(params.query).forEach(function (v) { + queries[v[0]] = v[1]; + }); + } + headers.authorization = this.options.authorizationV4 ? this.authorizationV4(params.method, { + headers: headers, + queries: queries + }, params.bucket, params.object, params.additionalHeaders) : this.authorization(params.method, this._getResource(params), params.subres, headers, this.options.headerEncoding); + // const url = this._getReqUrl(params); + if (isIP(this.options.endpoint.hostname)) { + var _this$options = this.options, + region = _this$options.region, + internal = _this$options.internal, + secure = _this$options.secure; + var hostInfo = setRegion(region, internal, secure); + headers.host = "".concat(params.bucket, ".").concat(hostInfo.host); + } + var url = getReqUrl.bind(this)(params); + debug('request %s %s, with headers %j, !!stream: %s', params.method, url, headers, !!params.stream); + var timeout = params.timeout || this.options.timeout; + var reqParams = { + method: params.method, + content: params.content, + stream: params.stream, + headers: headers, + timeout: timeout, + writeStream: params.writeStream, + customResponse: params.customResponse, + ctx: params.ctx || this.ctx + }; + if (this.agent) { + reqParams.agent = this.agent; + } + if (this.httpsAgent) { + reqParams.httpsAgent = this.httpsAgent; + } + reqParams.enableProxy = !!this.options.enableProxy; + reqParams.proxy = this.options.proxy ? this.options.proxy : null; + return { + url: url, + params: reqParams + }; +} +exports.createRequest = createRequest; + +}).call(this)}).call(this,require("buffer").Buffer) +},{"../client/getReqUrl":25,"./../../../shims/crypto/crypto.js":531,"./encoder":62,"./isDingTalk":70,"./isIP":73,"./setRegion":81,"buffer":103,"copy-to":107,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.includes.js":315,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.entries.js":326,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.string.includes.js":342,"core-js/modules/web.dom-collections.for-each.js":380,"dateformat":383,"debug":536,"lodash/isArray":422,"lodash/isObject":423,"lodash/isString":425,"mime":430,"path":439}],59:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.object.entries.js"); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.replace.js"); +require("core-js/modules/es.array.includes.js"); +require("core-js/modules/es.object.keys.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.dataFix = void 0; +var isObject_1 = require("./isObject"); +var TRUE = ['true', 'TRUE', '1', 1]; +var FALSE = ['false', 'FALSE', '0', 0]; +function dataFix(o, conf, finalKill) { + if (!isObject_1.isObject(o)) return; + var _conf$remove = conf.remove, + remove = _conf$remove === void 0 ? [] : _conf$remove, + _conf$rename = conf.rename, + rename = _conf$rename === void 0 ? {} : _conf$rename, + _conf$camel = conf.camel, + camel = _conf$camel === void 0 ? [] : _conf$camel, + _conf$bool = conf.bool, + bool = _conf$bool === void 0 ? [] : _conf$bool, + _conf$lowerFirst = conf.lowerFirst, + lowerFirst = _conf$lowerFirst === void 0 ? false : _conf$lowerFirst; + // 删除不需要的数据 + remove.forEach(function (v) { + return delete o[v]; + }); + // 重命名 + Object.entries(rename).forEach(function (v) { + if (!o[v[0]]) return; + if (o[v[1]]) return; + o[v[1]] = o[v[0]]; + delete o[v[0]]; + }); + // 驼峰化 + camel.forEach(function (v) { + if (!o[v]) return; + var afterKey = v.replace(/^(.)/, function ($0) { + return $0.toLowerCase(); + }).replace(/-(\w)/g, function (_, $1) { + return $1.toUpperCase(); + }); + if (o[afterKey]) return; + o[afterKey] = o[v]; + // todo 暂时兼容以前数据,不做删除 + // delete o[v]; + }); + // 转换值为布尔值 + bool.forEach(function (v) { + o[v] = fixBool(o[v]); + }); + // finalKill + if (typeof finalKill === 'function') { + finalKill(o); + } + // 首字母转小写 + fixLowerFirst(o, lowerFirst); + return dataFix; +} +exports.dataFix = dataFix; +function fixBool(value) { + if (!value) return false; + if (TRUE.includes(value)) return true; + return FALSE.includes(value) ? false : value; +} +function fixLowerFirst(o, lowerFirst) { + if (lowerFirst) { + Object.keys(o).forEach(function (key) { + var lowerK = key.replace(/^\w/, function (match) { + return match.toLowerCase(); + }); + if (typeof o[lowerK] === 'undefined') { + o[lowerK] = o[key]; + delete o[key]; + } + }); + } +} + +},{"./isObject":74,"core-js/modules/es.array.includes.js":315,"core-js/modules/es.object.entries.js":326,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.replace.js":345,"core-js/modules/web.dom-collections.for-each.js":380}],60:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +require("core-js/modules/es.array.slice.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.object.keys.js"); +var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.deepCopyWith = exports.deepCopy = void 0; +var isBuffer_1 = require("./isBuffer"); +exports.deepCopy = function (obj) { + if (obj === null || (0, _typeof2.default)(obj) !== 'object') { + return obj; + } + if (isBuffer_1.isBuffer(obj)) { + return obj.slice(); + } + var copy = Array.isArray(obj) ? [] : {}; + Object.keys(obj).forEach(function (key) { + copy[key] = exports.deepCopy(obj[key]); + }); + return copy; +}; +exports.deepCopyWith = function (obj, customizer) { + function deepCopyWithHelper(value, innerKey, innerObject) { + var result = customizer(value, innerKey, innerObject); + if (result !== undefined) return result; + if (value === null || (0, _typeof2.default)(value) !== 'object') { + return value; + } + if (isBuffer_1.isBuffer(value)) { + return value.slice(); + } + var copy = Array.isArray(value) ? [] : {}; + Object.keys(value).forEach(function (k) { + copy[k] = deepCopyWithHelper(value[k], k, value); + }); + return copy; + } + if (customizer) { + return deepCopyWithHelper(obj, '', null); + } else { + return exports.deepCopy(obj); + } +}; + +},{"./isBuffer":69,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/typeof":91,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/web.dom-collections.for-each.js":380}],61:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.replace.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.regexp.to-string.js"); +var __importDefault = void 0 && (void 0).__importDefault || function (mod) { + return mod && mod.__esModule ? mod : { + "default": mod + }; +}; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.encodeString = void 0; +var toString_1 = __importDefault(require("lodash/toString")); +function encodeString(str) { + var tempStr = toString_1.default(str); + return encodeURIComponent(tempStr).replace(/[!'()*]/g, function (c) { + return "%".concat(c.charCodeAt(0).toString(16).toUpperCase()); + }); +} +exports.encodeString = encodeString; + +},{"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.replace.js":345,"lodash/toString":427}],62:[function(require,module,exports){ +(function (Buffer){(function (){ +"use strict"; + +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.regexp.to-string.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.encoder = void 0; +function encoder(str) { + var encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'utf-8'; + if (encoding === 'utf-8') return str; + return Buffer.from(str).toString('latin1'); +} +exports.encoder = encoder; + +}).call(this)}).call(this,require("buffer").Buffer) +},{"buffer":103,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339}],63:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.array.map.js"); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.replace.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.formatInventoryConfig = void 0; +var dataFix_1 = require("../utils/dataFix"); +var isObject_1 = require("../utils/isObject"); +var isArray_1 = require("../utils/isArray"); +var formatObjKey_1 = require("../utils/formatObjKey"); +function formatInventoryConfig(inventoryConfig) { + var toArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + if (toArray && isObject_1.isObject(inventoryConfig)) inventoryConfig = [inventoryConfig]; + if (isArray_1.isArray(inventoryConfig)) { + inventoryConfig = inventoryConfig.map(formatFn); + } else { + inventoryConfig = formatFn(inventoryConfig); + } + return inventoryConfig; +} +exports.formatInventoryConfig = formatInventoryConfig; +function formatFn(_) { + dataFix_1.dataFix(_, { + bool: ['IsEnabled'] + }, function (conf) { + var _a, _b; + // prefix + conf.prefix = conf.Filter.Prefix; + delete conf.Filter; + // OSSBucketDestination + conf.OSSBucketDestination = conf.Destination.OSSBucketDestination; + // OSSBucketDestination.rolename + conf.OSSBucketDestination.rolename = conf.OSSBucketDestination.RoleArn.replace(/.*\//, ''); + delete conf.OSSBucketDestination.RoleArn; + // OSSBucketDestination.bucket + conf.OSSBucketDestination.bucket = conf.OSSBucketDestination.Bucket.replace(/.*:::/, ''); + delete conf.OSSBucketDestination.Bucket; + delete conf.Destination; + // frequency + conf.frequency = conf.Schedule.Frequency; + delete conf.Schedule.Frequency; + // optionalFields + if (((_a = conf === null || conf === void 0 ? void 0 : conf.OptionalFields) === null || _a === void 0 ? void 0 : _a.Field) && !isArray_1.isArray((_b = conf.OptionalFields) === null || _b === void 0 ? void 0 : _b.Field)) conf.OptionalFields.Field = [conf.OptionalFields.Field]; + }); + // firstLowerCase + _ = formatObjKey_1.formatObjKey(_, 'firstLowerCase', { + exclude: ['OSSBucketDestination', 'SSE-OSS', 'SSE-KMS'] + }); + return _; +} + +},{"../utils/dataFix":59,"../utils/formatObjKey":64,"../utils/isArray":67,"../utils/isObject":74,"core-js/modules/es.array.map.js":318,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.replace.js":345}],64:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.object.keys.js"); +require("core-js/modules/es.array.includes.js"); +require("core-js/modules/es.string.includes.js"); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.replace.js"); +var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.formatObjKey = void 0; +function formatObjKey(obj, type, options) { + if (obj === null || (0, _typeof2.default)(obj) !== 'object') { + return obj; + } + var o; + if (Array.isArray(obj)) { + o = []; + for (var i = 0; i < obj.length; i++) { + o.push(formatObjKey(obj[i], type, options)); + } + } else { + o = {}; + Object.keys(obj).forEach(function (key) { + o[handelFormat(key, type, options)] = formatObjKey(obj[key], type, options); + }); + } + return o; +} +exports.formatObjKey = formatObjKey; +function handelFormat(key, type, options) { + if (options && options.exclude && options.exclude.includes(key)) return key; + if (type === 'firstUpperCase') { + key = key.replace(/^./, function (_) { + return _.toUpperCase(); + }); + } else if (type === 'firstLowerCase') { + key = key.replace(/^./, function (_) { + return _.toLowerCase(); + }); + } + return key; +} + +},{"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/typeof":91,"core-js/modules/es.array.includes.js":315,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.includes.js":342,"core-js/modules/es.string.replace.js":345,"core-js/modules/web.dom-collections.for-each.js":380}],65:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.replace.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getStandardRegion = void 0; +function getStandardRegion(str) { + return str.replace(/^oss-/g, ''); +} +exports.getStandardRegion = getStandardRegion; + +},{"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.replace.js":345}],66:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.regexp.exec.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getStrBytesCount = void 0; +function getStrBytesCount(str) { + var bytesCount = 0; + for (var i = 0; i < str.length; i++) { + var c = str.charAt(i); + if (/^[\u00-\uff]$/.test(c)) { + bytesCount += 1; + } else { + bytesCount += 2; + } + } + return bytesCount; +} +exports.getStrBytesCount = getStrBytesCount; + +},{"core-js/modules/es.regexp.exec.js":338}],67:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.regexp.to-string.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isArray = void 0; +exports.isArray = function (obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; +}; + +},{"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339}],68:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isBlob = void 0; +function isBlob(blob) { + return typeof Blob !== 'undefined' && blob instanceof Blob; +} +exports.isBlob = isBlob; + +},{}],69:[function(require,module,exports){ +(function (Buffer){(function (){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isBuffer = void 0; +function isBuffer(obj) { + return Buffer.isBuffer(obj); +} +exports.isBuffer = isBuffer; + +}).call(this)}).call(this,{"isBuffer":require("../../../node_modules/is-buffer/index.js")}) +},{"../../../node_modules/is-buffer/index.js":409}],70:[function(require,module,exports){ +(function (process){(function (){ +"use strict"; + +require("core-js/modules/es.array.includes.js"); +require("core-js/modules/es.string.includes.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isDingTalk = void 0; +function isDingTalk() { + if (process.browser && window.navigator.userAgent.toLowerCase().includes('aliapp(dingtalk')) { + return true; + } + return false; +} +exports.isDingTalk = isDingTalk; + +}).call(this)}).call(this,require('_process')) +},{"_process":538,"core-js/modules/es.array.includes.js":315,"core-js/modules/es.string.includes.js":342}],71:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isFile = void 0; +exports.isFile = function (obj) { + return typeof File !== 'undefined' && obj instanceof File; +}; + +},{}],72:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isFunction = void 0; +exports.isFunction = function (v) { + return typeof v === 'function'; +}; + +},{}],73:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.regexp.exec.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isIP = void 0; +// it provide commont methods for node and browser , we will add more solutions later in this file +/** + * Judge isIP include ipv4 or ipv6 + * @param {String} options + * @return {Array} the multipart uploads + */ +exports.isIP = function (host) { + var ipv4Regex = /^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$/; + var ipv6Regex = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/; + return ipv4Regex.test(host) || ipv6Regex.test(host); +}; + +},{"core-js/modules/es.regexp.exec.js":338}],74:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.regexp.to-string.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isObject = void 0; +exports.isObject = function (obj) { + return Object.prototype.toString.call(obj) === '[object Object]'; +}; + +},{"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339}],75:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.object.keys.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.lowercaseKeyHeader = void 0; +var isObject_1 = require("./isObject"); +function lowercaseKeyHeader(headers) { + var lowercaseHeader = {}; + if (isObject_1.isObject(headers)) { + Object.keys(headers).forEach(function (key) { + lowercaseHeader[key.toLowerCase()] = headers[key]; + }); + } + return lowercaseHeader; +} +exports.lowercaseKeyHeader = lowercaseKeyHeader; + +},{"./isObject":74,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/web.dom-collections.for-each.js":380}],76:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.replace.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.regexp.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.object.keys.js"); +require("core-js/modules/es.array.concat.js"); +require("core-js/modules/es.array.join.js"); +require("core-js/modules/es.array.map.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.obj2xml = void 0; +var formatObjKey_1 = require("./formatObjKey"); +function type(params) { + return Object.prototype.toString.call(params).replace(/(.*? |])/g, '').toLowerCase(); +} +function obj2xml(obj, options) { + var s = ''; + if (options && options.headers) { + s = '<?xml version="1.0" encoding="UTF-8"?>\n'; + } + if (options && options.firstUpperCase) { + obj = formatObjKey_1.formatObjKey(obj, 'firstUpperCase'); + } + if (type(obj) === 'object') { + Object.keys(obj).forEach(function (key) { + // filter undefined or null + if (type(obj[key]) !== 'undefined' && type(obj[key]) !== 'null') { + if (type(obj[key]) === 'string' || type(obj[key]) === 'number') { + s += "<".concat(key, ">").concat(obj[key], "</").concat(key, ">"); + } else if (type(obj[key]) === 'object') { + s += "<".concat(key, ">").concat(obj2xml(obj[key]), "</").concat(key, ">"); + } else if (type(obj[key]) === 'array') { + s += obj[key].map(function (keyChild) { + return "<".concat(key, ">").concat(obj2xml(keyChild), "</").concat(key, ">"); + }).join(''); + } else { + s += "<".concat(key, ">").concat(obj[key].toString(), "</").concat(key, ">"); + } + } + }); + } else { + s += obj.toString(); + } + return s; +} +exports.obj2xml = obj2xml; + +},{"./formatObjKey":64,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.join.js":317,"core-js/modules/es.array.map.js":318,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.replace.js":345,"core-js/modules/web.dom-collections.for-each.js":380}],77:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.array.slice.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.regexp.to-string.js"); +require("core-js/modules/es.function.name.js"); +require("core-js/modules/es.array.from.js"); +require("core-js/modules/es.string.iterator.js"); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.symbol.js"); +require("core-js/modules/es.symbol.description.js"); +require("core-js/modules/es.symbol.iterator.js"); +require("core-js/modules/es.array.iterator.js"); +require("core-js/modules/web.dom-collections.iterator.js"); +require("core-js/modules/es.object.assign.js"); +function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.omit = void 0; +function omit(originalObject, keysToOmit) { + var cloneObject = Object.assign({}, originalObject); + var _iterator = _createForOfIteratorHelper(keysToOmit), + _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var path = _step.value; + delete cloneObject[path]; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + return cloneObject; +} +exports.omit = omit; + +},{"core-js/modules/es.array.from.js":314,"core-js/modules/es.array.iterator.js":316,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.function.name.js":322,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.iterator.js":343,"core-js/modules/es.symbol.description.js":351,"core-js/modules/es.symbol.iterator.js":353,"core-js/modules/es.symbol.js":354,"core-js/modules/web.dom-collections.iterator.js":381}],78:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.array.includes.js"); +require("core-js/modules/es.string.includes.js"); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.match.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.parseRestoreInfo = void 0; +exports.parseRestoreInfo = function (originalRestoreInfo) { + var tempRestoreInfo; + if (originalRestoreInfo) { + tempRestoreInfo = { + ongoingRequest: originalRestoreInfo.includes('true') + }; + if (!tempRestoreInfo.ongoingRequest) { + var matchArray = originalRestoreInfo.match(/expiry-date="(.*)"/); + if (matchArray && matchArray[1]) { + tempRestoreInfo.expiryDate = new Date(matchArray[1]); + } + } + } + return tempRestoreInfo; +}; + +},{"core-js/modules/es.array.includes.js":315,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.includes.js":342,"core-js/modules/es.string.match.js":344}],79:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.object.keys.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.policy2Str = void 0; +function policy2Str(policy) { + var policyStr; + if (policy) { + if (typeof policy === 'string') { + try { + policyStr = JSON.stringify(JSON.parse(policy)); + } catch (err) { + throw new Error("Policy string is not a valid JSON: ".concat(err.message)); + } + } else { + policyStr = JSON.stringify(policy); + } + } + return policyStr; +} +exports.policy2Str = policy2Str; + +},{"core-js/modules/es.object.keys.js":328}],80:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.promise.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.retry = void 0; +function retry(func, retryMax) { + var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var retryNum = 0; + var _config$retryDelay = config.retryDelay, + retryDelay = _config$retryDelay === void 0 ? 500 : _config$retryDelay, + _config$errorHandler = config.errorHandler, + errorHandler = _config$errorHandler === void 0 ? function () { + return true; + } : _config$errorHandler; + var funcR = function funcR() { + for (var _len = arguments.length, arg = new Array(_len), _key = 0; _key < _len; _key++) { + arg[_key] = arguments[_key]; + } + return new Promise(function (resolve, reject) { + func.apply(void 0, arg).then(function (result) { + retryNum = 0; + resolve(result); + }).catch(function (err) { + if (retryNum < retryMax && errorHandler(err)) { + retryNum++; + setTimeout(function () { + resolve(funcR.apply(void 0, arg)); + }, retryDelay); + } else { + retryNum = 0; + reject(err); + } + }); + }); + }; + return funcR; +} +exports.retry = retry; + +},{"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333}],81:[function(require,module,exports){ +"use strict"; + +var __importDefault = void 0 && (void 0).__importDefault || function (mod) { + return mod && mod.__esModule ? mod : { + "default": mod + }; +}; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.setRegion = void 0; +var url_1 = __importDefault(require("url")); +var checkConfigValid_1 = require("./checkConfigValid"); +function setRegion(region) { + var internal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var secure = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + checkConfigValid_1.checkConfigValid(region, 'region'); + var protocol = secure ? 'https://' : 'http://'; + var suffix = internal ? '-internal.aliyuncs.com' : '.aliyuncs.com'; + var prefix = 'vpc100-oss-cn-'; + // aliyun VPC region: https://help.aliyun.com/knowledge_detail/38740.html + if (region.substr(0, prefix.length) === prefix) { + suffix = '.aliyuncs.com'; + } + return url_1.default.parse(protocol + region + suffix); +} +exports.setRegion = setRegion; + +},{"./checkConfigValid":54,"url":543}],82:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); +require("core-js/modules/es.object.keys.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.array.find.js"); +require("core-js/modules/es.object.assign.js"); +var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.checkCredentials = exports.setSTSToken = void 0; +var formatObjKey_1 = require("./formatObjKey"); +function setSTSToken() { + return _setSTSToken.apply(this, arguments); +} +function _setSTSToken() { + _setSTSToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { + var now, credentials; + return _regenerator.default.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (!this.options) this.options = {}; + now = new Date(); + if (!this.stsTokenFreshTime) { + _context.next = 14; + break; + } + if (!(+now - this.stsTokenFreshTime >= this.options.refreshSTSTokenInterval)) { + _context.next = 12; + break; + } + this.stsTokenFreshTime = now; + _context.next = 7; + return this.options.refreshSTSToken(); + case 7: + credentials = _context.sent; + credentials = formatObjKey_1.formatObjKey(credentials, 'firstLowerCase'); + if (credentials.securityToken) { + credentials.stsToken = credentials.securityToken; + } + checkCredentials(credentials); + Object.assign(this.options, credentials); + case 12: + _context.next = 15; + break; + case 14: + this.stsTokenFreshTime = now; + case 15: + return _context.abrupt("return", null); + case 16: + case "end": + return _context.stop(); + } + }, _callee, this); + })); + return _setSTSToken.apply(this, arguments); +} +exports.setSTSToken = setSTSToken; +function checkCredentials(obj) { + var stsTokenKey = ['accessKeySecret', 'accessKeyId', 'stsToken']; + var objKeys = Object.keys(obj); + stsTokenKey.forEach(function (_) { + if (!objKeys.find(function (key) { + return key === _; + })) { + throw Error("refreshSTSToken must return contains ".concat(_)); + } + }); +} +exports.checkCredentials = checkCredentials; + +},{"./formatObjKey":64,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.find.js":313,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329}],83:[function(require,module,exports){ +function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; +} +module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; +},{}],84:[function(require,module,exports){ +var arrayLikeToArray = require("./arrayLikeToArray.js"); +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return arrayLikeToArray(arr); +} +module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; +},{"./arrayLikeToArray.js":83}],85:[function(require,module,exports){ +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } +} +function _asyncToGenerator(fn) { + return function () { + var self = this, + args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + _next(undefined); + }); + }; +} +module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; +},{}],86:[function(require,module,exports){ +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} +module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; +},{}],87:[function(require,module,exports){ +function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); +} +module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; +},{}],88:[function(require,module,exports){ +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); +} +module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports; +},{}],89:[function(require,module,exports){ +var _typeof = require("./typeof.js")["default"]; +function _regeneratorRuntime() { + "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ + module.exports = _regeneratorRuntime = function _regeneratorRuntime() { + return e; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + var t, + e = {}, + r = Object.prototype, + n = r.hasOwnProperty, + o = Object.defineProperty || function (t, e, r) { + t[e] = r.value; + }, + i = "function" == typeof Symbol ? Symbol : {}, + a = i.iterator || "@@iterator", + c = i.asyncIterator || "@@asyncIterator", + u = i.toStringTag || "@@toStringTag"; + function define(t, e, r) { + return Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }), t[e]; + } + try { + define({}, ""); + } catch (t) { + define = function define(t, e, r) { + return t[e] = r; + }; + } + function wrap(t, e, r, n) { + var i = e && e.prototype instanceof Generator ? e : Generator, + a = Object.create(i.prototype), + c = new Context(n || []); + return o(a, "_invoke", { + value: makeInvokeMethod(t, r, c) + }), a; + } + function tryCatch(t, e, r) { + try { + return { + type: "normal", + arg: t.call(e, r) + }; + } catch (t) { + return { + type: "throw", + arg: t + }; + } + } + e.wrap = wrap; + var h = "suspendedStart", + l = "suspendedYield", + f = "executing", + s = "completed", + y = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + var p = {}; + define(p, a, function () { + return this; + }); + var d = Object.getPrototypeOf, + v = d && d(d(values([]))); + v && v !== r && n.call(v, a) && (p = v); + var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); + function defineIteratorMethods(t) { + ["next", "throw", "return"].forEach(function (e) { + define(t, e, function (t) { + return this._invoke(e, t); + }); + }); + } + function AsyncIterator(t, e) { + function invoke(r, o, i, a) { + var c = tryCatch(t[r], t, o); + if ("throw" !== c.type) { + var u = c.arg, + h = u.value; + return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { + invoke("next", t, i, a); + }, function (t) { + invoke("throw", t, i, a); + }) : e.resolve(h).then(function (t) { + u.value = t, i(u); + }, function (t) { + return invoke("throw", t, i, a); + }); + } + a(c.arg); + } + var r; + o(this, "_invoke", { + value: function value(t, n) { + function callInvokeWithMethodAndArg() { + return new e(function (e, r) { + invoke(t, n, e, r); + }); + } + return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + }); + } + function makeInvokeMethod(e, r, n) { + var o = h; + return function (i, a) { + if (o === f) throw new Error("Generator is already running"); + if (o === s) { + if ("throw" === i) throw a; + return { + value: t, + done: !0 + }; + } + for (n.method = i, n.arg = a;;) { + var c = n.delegate; + if (c) { + var u = maybeInvokeDelegate(c, n); + if (u) { + if (u === y) continue; + return u; + } + } + if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { + if (o === h) throw o = s, n.arg; + n.dispatchException(n.arg); + } else "return" === n.method && n.abrupt("return", n.arg); + o = f; + var p = tryCatch(e, r, n); + if ("normal" === p.type) { + if (o = n.done ? s : l, p.arg === y) continue; + return { + value: p.arg, + done: n.done + }; + } + "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); + } + }; + } + function maybeInvokeDelegate(e, r) { + var n = r.method, + o = e.iterator[n]; + if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; + var i = tryCatch(o, e.iterator, r.arg); + if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; + var a = i.arg; + return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); + } + function pushTryEntry(t) { + var e = { + tryLoc: t[0] + }; + 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); + } + function resetTryEntry(t) { + var e = t.completion || {}; + e.type = "normal", delete e.arg, t.completion = e; + } + function Context(t) { + this.tryEntries = [{ + tryLoc: "root" + }], t.forEach(pushTryEntry, this), this.reset(!0); + } + function values(e) { + if (e || "" === e) { + var r = e[a]; + if (r) return r.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) { + var o = -1, + i = function next() { + for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; + return next.value = t, next.done = !0, next; + }; + return i.next = i; + } + } + throw new TypeError(_typeof(e) + " is not iterable"); + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { + value: GeneratorFunctionPrototype, + configurable: !0 + }), o(GeneratorFunctionPrototype, "constructor", { + value: GeneratorFunction, + configurable: !0 + }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { + var e = "function" == typeof t && t.constructor; + return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); + }, e.mark = function (t) { + return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; + }, e.awrap = function (t) { + return { + __await: t + }; + }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { + return this; + }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { + void 0 === i && (i = Promise); + var a = new AsyncIterator(wrap(t, r, n, o), i); + return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { + return t.done ? t.value : a.next(); + }); + }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { + return this; + }), define(g, "toString", function () { + return "[object Generator]"; + }), e.keys = function (t) { + var e = Object(t), + r = []; + for (var n in e) r.push(n); + return r.reverse(), function next() { + for (; r.length;) { + var t = r.pop(); + if (t in e) return next.value = t, next.done = !1, next; + } + return next.done = !0, next; + }; + }, e.values = values, Context.prototype = { + constructor: Context, + reset: function reset(e) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); + }, + stop: function stop() { + this.done = !0; + var t = this.tryEntries[0].completion; + if ("throw" === t.type) throw t.arg; + return this.rval; + }, + dispatchException: function dispatchException(e) { + if (this.done) throw e; + var r = this; + function handle(n, o) { + return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; + } + for (var o = this.tryEntries.length - 1; o >= 0; --o) { + var i = this.tryEntries[o], + a = i.completion; + if ("root" === i.tryLoc) return handle("end"); + if (i.tryLoc <= this.prev) { + var c = n.call(i, "catchLoc"), + u = n.call(i, "finallyLoc"); + if (c && u) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } else if (c) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + } else { + if (!u) throw new Error("try statement without catch or finally"); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } + } + } + }, + abrupt: function abrupt(t, e) { + for (var r = this.tryEntries.length - 1; r >= 0; --r) { + var o = this.tryEntries[r]; + if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { + var i = o; + break; + } + } + i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); + var a = i ? i.completion : {}; + return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); + }, + complete: function complete(t, e) { + if ("throw" === t.type) throw t.arg; + return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; + }, + finish: function finish(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; + } + }, + "catch": function _catch(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.tryLoc === t) { + var n = r.completion; + if ("throw" === n.type) { + var o = n.arg; + resetTryEntry(r); + } + return o; + } + } + throw new Error("illegal catch attempt"); + }, + delegateYield: function delegateYield(e, r, n) { + return this.delegate = { + iterator: values(e), + resultName: r, + nextLoc: n + }, "next" === this.method && (this.arg = t), y; + } + }, e; +} +module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports; +},{"./typeof.js":91}],90:[function(require,module,exports){ +var arrayWithoutHoles = require("./arrayWithoutHoles.js"); +var iterableToArray = require("./iterableToArray.js"); +var unsupportedIterableToArray = require("./unsupportedIterableToArray.js"); +var nonIterableSpread = require("./nonIterableSpread.js"); +function _toConsumableArray(arr) { + return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread(); +} +module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports; +},{"./arrayWithoutHoles.js":84,"./iterableToArray.js":87,"./nonIterableSpread.js":88,"./unsupportedIterableToArray.js":92}],91:[function(require,module,exports){ +function _typeof(o) { + "@babel/helpers - typeof"; + + return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o); +} +module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; +},{}],92:[function(require,module,exports){ +var arrayLikeToArray = require("./arrayLikeToArray.js"); +function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen); +} +module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; +},{"./arrayLikeToArray.js":83}],93:[function(require,module,exports){ +// TODO(Babel 8): Remove this file. + +var runtime = require("../helpers/regeneratorRuntime")(); +module.exports = runtime; + +// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736= +try { + regeneratorRuntime = runtime; +} catch (accidentalStrictMode) { + if (typeof globalThis === "object") { + globalThis.regeneratorRuntime = runtime; + } else { + Function("r", "regeneratorRuntime = r")(runtime); + } +} + +},{"../helpers/regeneratorRuntime":89}],94:[function(require,module,exports){ +module.exports = noop; +module.exports.HttpsAgent = noop; + +// Noop function for browser since native api's don't use agents. +function noop () {} + +},{}],95:[function(require,module,exports){ +(function (global){(function (){ +'use strict'; + +var objectAssign = require('object.assign/polyfill')(); + +// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js +// original notice: + +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> + * @license MIT + */ +function compare(a, b) { + if (a === b) { + return 0; + } + + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break; + } + } + + if (x < y) { + return -1; + } + if (y < x) { + return 1; + } + return 0; +} +function isBuffer(b) { + if (global.Buffer && typeof global.Buffer.isBuffer === 'function') { + return global.Buffer.isBuffer(b); + } + return !!(b != null && b._isBuffer); +} + +// based on node assert, original notice: +// NB: The URL to the CommonJS spec is kept just for tradition. +// node-assert has evolved a lot since then, both in API and behavior. + +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +var util = require('util/'); +var hasOwn = Object.prototype.hasOwnProperty; +var pSlice = Array.prototype.slice; +var functionsHaveNames = (function () { + return function foo() {}.name === 'foo'; +}()); +function pToString (obj) { + return Object.prototype.toString.call(obj); +} +function isView(arrbuf) { + if (isBuffer(arrbuf)) { + return false; + } + if (typeof global.ArrayBuffer !== 'function') { + return false; + } + if (typeof ArrayBuffer.isView === 'function') { + return ArrayBuffer.isView(arrbuf); + } + if (!arrbuf) { + return false; + } + if (arrbuf instanceof DataView) { + return true; + } + if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) { + return true; + } + return false; +} +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +var assert = module.exports = ok; + +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) + +var regex = /\s*function\s+([^\(\s]*)\s*/; +// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js +function getName(func) { + if (!util.isFunction(func)) { + return; + } + if (functionsHaveNames) { + return func.name; + } + var str = func.toString(); + var match = str.match(regex); + return match && match[1]; +} +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = getName(stackStartFunction); + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; + } + } +}; + +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function truncate(s, n) { + if (typeof s === 'string') { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} +function inspect(something) { + if (functionsHaveNames || !util.isFunction(something)) { + return util.inspect(something); + } + var rawname = getName(something); + var name = rawname ? ': ' + rawname : ''; + return '[Function' + name + ']'; +} +function getMessage(self) { + return truncate(inspect(self.actual), 128) + ' ' + + self.operator + ' ' + + truncate(inspect(self.expected), 128); +} + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual); + } +}; + +function _deepEqual(actual, expected, strict, memos) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + } else if (isBuffer(actual) && isBuffer(expected)) { + return compare(actual, expected) === 0; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if ((actual === null || typeof actual !== 'object') && + (expected === null || typeof expected !== 'object')) { + return strict ? actual === expected : actual == expected; + + // If both values are instances of typed arrays, wrap their underlying + // ArrayBuffers in a Buffer each to increase performance + // This optimization requires the arrays to have the same type as checked by + // Object.prototype.toString (aka pToString). Never perform binary + // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their + // bit patterns are not identical. + } else if (isView(actual) && isView(expected) && + pToString(actual) === pToString(expected) && + !(actual instanceof Float32Array || + actual instanceof Float64Array)) { + return compare(new Uint8Array(actual.buffer), + new Uint8Array(expected.buffer)) === 0; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else if (isBuffer(actual) !== isBuffer(expected)) { + return false; + } else { + memos = memos || {actual: [], expected: []}; + + var actualIndex = memos.actual.indexOf(actual); + if (actualIndex !== -1) { + if (actualIndex === memos.expected.indexOf(expected)) { + return true; + } + } + + memos.actual.push(actual); + memos.expected.push(expected); + + return objEquiv(actual, expected, strict, memos); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b, strict, actualVisitedObjects) { + if (a === null || a === undefined || b === null || b === undefined) + return false; + // if one is a primitive, the other must be same + if (util.isPrimitive(a) || util.isPrimitive(b)) + return a === b; + if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) + return false; + var aIsArgs = isArguments(a); + var bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b, strict); + } + var ka = objectKeys(a); + var kb = objectKeys(b); + var key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length !== kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] !== kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) + return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +assert.notDeepStrictEqual = notDeepStrictEqual; +function notDeepStrictEqual(actual, expected, message) { + if (_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual); + } +} + + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } + + try { + if (actual instanceof expected) { + return true; + } + } catch (e) { + // Ignore. The instanceof check doesn't work for arrow functions. + } + + if (Error.isPrototypeOf(expected)) { + return false; + } + + return expected.call({}, actual) === true; +} + +function _tryBlock(block) { + var error; + try { + block(); + } catch (e) { + error = e; + } + return error; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (typeof block !== 'function') { + throw new TypeError('"block" argument must be a function'); + } + + if (typeof expected === 'string') { + message = expected; + expected = null; + } + + actual = _tryBlock(block); + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + var userProvidedMessage = typeof message === 'string'; + var isUnwantedException = !shouldThrow && util.isError(actual); + var isUnexpectedException = !shouldThrow && actual && !expected; + + if ((isUnwantedException && + userProvidedMessage && + expectedException(actual, expected)) || + isUnexpectedException) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws(true, block, error, message); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { + _throws(false, block, error, message); +}; + +assert.ifError = function(err) { if (err) throw err; }; + +// Expose a strict only variant of assert +function strict(value, message) { + if (!value) fail(value, true, message, '==', strict); +} +assert.strict = objectAssign(strict, assert, { + equal: assert.strictEqual, + deepEqual: assert.deepStrictEqual, + notEqual: assert.notStrictEqual, + notDeepEqual: assert.notDeepStrictEqual +}); +assert.strict.strict = assert.strict; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"object.assign/polyfill":438,"util/":98}],96:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],97:[function(require,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],98:[function(require,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":97,"_process":538,"inherits":96}],99:[function(require,module,exports){ +(function (global){(function (){ +'use strict'; + +var possibleNames = [ + 'BigInt64Array', + 'BigUint64Array', + 'Float32Array', + 'Float64Array', + 'Int16Array', + 'Int32Array', + 'Int8Array', + 'Uint16Array', + 'Uint32Array', + 'Uint8Array', + 'Uint8ClampedArray' +]; + +var g = typeof globalThis === 'undefined' ? global : globalThis; + +module.exports = function availableTypedArrays() { + var out = []; + for (var i = 0; i < possibleNames.length; i++) { + if (typeof g[possibleNames[i]] === 'function') { + out[out.length] = possibleNames[i]; + } + } + return out; +}; + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],100:[function(require,module,exports){ +'use strict' + +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray + +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} + +// Support decoding URL-safe base64 strings, as Node.js does. +// See: https://en.wikipedia.org/wiki/Base64#URL_applications +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 + +function getLens (b64) { + var len = b64.length + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('=') + if (validLen === -1) validLen = len + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4) + + return [validLen, placeHoldersLen] +} + +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function toByteArray (b64) { + var tmp + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) + + var curByte = 0 + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen + + var i + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)] + arr[curByte++] = (tmp >> 16) & 0xFF + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ) + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1] + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ) + } + + return parts.join('') +} + +},{}],101:[function(require,module,exports){ +/*! + * Bowser - a browser detector + * https://github.com/ded/bowser + * MIT License | (c) Dustin Diaz 2015 + */ + +!function (root, name, definition) { + if (typeof module != 'undefined' && module.exports) module.exports = definition() + else if (typeof define == 'function' && define.amd) define(name, definition) + else root[name] = definition() +}(this, 'bowser', function () { + /** + * See useragents.js for examples of navigator.userAgent + */ + + var t = true + + function detect(ua) { + + function getFirstMatch(regex) { + var match = ua.match(regex); + return (match && match.length > 1 && match[1]) || ''; + } + + function getSecondMatch(regex) { + var match = ua.match(regex); + return (match && match.length > 1 && match[2]) || ''; + } + + var iosdevice = getFirstMatch(/(ipod|iphone|ipad)/i).toLowerCase() + , likeAndroid = /like android/i.test(ua) + , android = !likeAndroid && /android/i.test(ua) + , nexusMobile = /nexus\s*[0-6]\s*/i.test(ua) + , nexusTablet = !nexusMobile && /nexus\s*[0-9]+/i.test(ua) + , chromeos = /CrOS/.test(ua) + , silk = /silk/i.test(ua) + , sailfish = /sailfish/i.test(ua) + , tizen = /tizen/i.test(ua) + , webos = /(web|hpw)(o|0)s/i.test(ua) + , windowsphone = /windows phone/i.test(ua) + , samsungBrowser = /SamsungBrowser/i.test(ua) + , windows = !windowsphone && /windows/i.test(ua) + , mac = !iosdevice && !silk && /macintosh/i.test(ua) + , linux = !android && !sailfish && !tizen && !webos && /linux/i.test(ua) + , edgeVersion = getSecondMatch(/edg([ea]|ios)\/(\d+(\.\d+)?)/i) + , versionIdentifier = getFirstMatch(/version\/(\d+(\.\d+)?)/i) + , tablet = /tablet/i.test(ua) && !/tablet pc/i.test(ua) + , mobile = !tablet && /[^-]mobi/i.test(ua) + , xbox = /xbox/i.test(ua) + , result + + if (/opera/i.test(ua)) { + // an old Opera + result = { + name: 'Opera' + , opera: t + , version: versionIdentifier || getFirstMatch(/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i) + } + } else if (/opr\/|opios/i.test(ua)) { + // a new Opera + result = { + name: 'Opera' + , opera: t + , version: getFirstMatch(/(?:opr|opios)[\s\/](\d+(\.\d+)?)/i) || versionIdentifier + } + } + else if (/SamsungBrowser/i.test(ua)) { + result = { + name: 'Samsung Internet for Android' + , samsungBrowser: t + , version: versionIdentifier || getFirstMatch(/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i) + } + } + else if (/Whale/i.test(ua)) { + result = { + name: 'NAVER Whale browser' + , whale: t + , version: getFirstMatch(/(?:whale)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/MZBrowser/i.test(ua)) { + result = { + name: 'MZ Browser' + , mzbrowser: t + , version: getFirstMatch(/(?:MZBrowser)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/coast/i.test(ua)) { + result = { + name: 'Opera Coast' + , coast: t + , version: versionIdentifier || getFirstMatch(/(?:coast)[\s\/](\d+(\.\d+)?)/i) + } + } + else if (/focus/i.test(ua)) { + result = { + name: 'Focus' + , focus: t + , version: getFirstMatch(/(?:focus)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/yabrowser/i.test(ua)) { + result = { + name: 'Yandex Browser' + , yandexbrowser: t + , version: versionIdentifier || getFirstMatch(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i) + } + } + else if (/ucbrowser/i.test(ua)) { + result = { + name: 'UC Browser' + , ucbrowser: t + , version: getFirstMatch(/(?:ucbrowser)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/mxios/i.test(ua)) { + result = { + name: 'Maxthon' + , maxthon: t + , version: getFirstMatch(/(?:mxios)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/epiphany/i.test(ua)) { + result = { + name: 'Epiphany' + , epiphany: t + , version: getFirstMatch(/(?:epiphany)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/puffin/i.test(ua)) { + result = { + name: 'Puffin' + , puffin: t + , version: getFirstMatch(/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i) + } + } + else if (/sleipnir/i.test(ua)) { + result = { + name: 'Sleipnir' + , sleipnir: t + , version: getFirstMatch(/(?:sleipnir)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/k-meleon/i.test(ua)) { + result = { + name: 'K-Meleon' + , kMeleon: t + , version: getFirstMatch(/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (windowsphone) { + result = { + name: 'Windows Phone' + , osname: 'Windows Phone' + , windowsphone: t + } + if (edgeVersion) { + result.msedge = t + result.version = edgeVersion + } + else { + result.msie = t + result.version = getFirstMatch(/iemobile\/(\d+(\.\d+)?)/i) + } + } + else if (/msie|trident/i.test(ua)) { + result = { + name: 'Internet Explorer' + , msie: t + , version: getFirstMatch(/(?:msie |rv:)(\d+(\.\d+)?)/i) + } + } else if (chromeos) { + result = { + name: 'Chrome' + , osname: 'Chrome OS' + , chromeos: t + , chromeBook: t + , chrome: t + , version: getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i) + } + } else if (/edg([ea]|ios)/i.test(ua)) { + result = { + name: 'Microsoft Edge' + , msedge: t + , version: edgeVersion + } + } + else if (/vivaldi/i.test(ua)) { + result = { + name: 'Vivaldi' + , vivaldi: t + , version: getFirstMatch(/vivaldi\/(\d+(\.\d+)?)/i) || versionIdentifier + } + } + else if (sailfish) { + result = { + name: 'Sailfish' + , osname: 'Sailfish OS' + , sailfish: t + , version: getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i) + } + } + else if (/seamonkey\//i.test(ua)) { + result = { + name: 'SeaMonkey' + , seamonkey: t + , version: getFirstMatch(/seamonkey\/(\d+(\.\d+)?)/i) + } + } + else if (/firefox|iceweasel|fxios/i.test(ua)) { + result = { + name: 'Firefox' + , firefox: t + , version: getFirstMatch(/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i) + } + if (/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(ua)) { + result.firefoxos = t + result.osname = 'Firefox OS' + } + } + else if (silk) { + result = { + name: 'Amazon Silk' + , silk: t + , version : getFirstMatch(/silk\/(\d+(\.\d+)?)/i) + } + } + else if (/phantom/i.test(ua)) { + result = { + name: 'PhantomJS' + , phantom: t + , version: getFirstMatch(/phantomjs\/(\d+(\.\d+)?)/i) + } + } + else if (/slimerjs/i.test(ua)) { + result = { + name: 'SlimerJS' + , slimer: t + , version: getFirstMatch(/slimerjs\/(\d+(\.\d+)?)/i) + } + } + else if (/blackberry|\bbb\d+/i.test(ua) || /rim\stablet/i.test(ua)) { + result = { + name: 'BlackBerry' + , osname: 'BlackBerry OS' + , blackberry: t + , version: versionIdentifier || getFirstMatch(/blackberry[\d]+\/(\d+(\.\d+)?)/i) + } + } + else if (webos) { + result = { + name: 'WebOS' + , osname: 'WebOS' + , webos: t + , version: versionIdentifier || getFirstMatch(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i) + }; + /touchpad\//i.test(ua) && (result.touchpad = t) + } + else if (/bada/i.test(ua)) { + result = { + name: 'Bada' + , osname: 'Bada' + , bada: t + , version: getFirstMatch(/dolfin\/(\d+(\.\d+)?)/i) + }; + } + else if (tizen) { + result = { + name: 'Tizen' + , osname: 'Tizen' + , tizen: t + , version: getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i) || versionIdentifier + }; + } + else if (/qupzilla/i.test(ua)) { + result = { + name: 'QupZilla' + , qupzilla: t + , version: getFirstMatch(/(?:qupzilla)[\s\/](\d+(?:\.\d+)+)/i) || versionIdentifier + } + } + else if (/chromium/i.test(ua)) { + result = { + name: 'Chromium' + , chromium: t + , version: getFirstMatch(/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i) || versionIdentifier + } + } + else if (/chrome|crios|crmo/i.test(ua)) { + result = { + name: 'Chrome' + , chrome: t + , version: getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i) + } + } + else if (android) { + result = { + name: 'Android' + , version: versionIdentifier + } + } + else if (/safari|applewebkit/i.test(ua)) { + result = { + name: 'Safari' + , safari: t + } + if (versionIdentifier) { + result.version = versionIdentifier + } + } + else if (iosdevice) { + result = { + name : iosdevice == 'iphone' ? 'iPhone' : iosdevice == 'ipad' ? 'iPad' : 'iPod' + } + // WTF: version is not part of user agent in web apps + if (versionIdentifier) { + result.version = versionIdentifier + } + } + else if(/googlebot/i.test(ua)) { + result = { + name: 'Googlebot' + , googlebot: t + , version: getFirstMatch(/googlebot\/(\d+(\.\d+))/i) || versionIdentifier + } + } + else { + result = { + name: getFirstMatch(/^(.*)\/(.*) /), + version: getSecondMatch(/^(.*)\/(.*) /) + }; + } + + // set webkit or gecko flag for browsers based on these engines + if (!result.msedge && /(apple)?webkit/i.test(ua)) { + if (/(apple)?webkit\/537\.36/i.test(ua)) { + result.name = result.name || "Blink" + result.blink = t + } else { + result.name = result.name || "Webkit" + result.webkit = t + } + if (!result.version && versionIdentifier) { + result.version = versionIdentifier + } + } else if (!result.opera && /gecko\//i.test(ua)) { + result.name = result.name || "Gecko" + result.gecko = t + result.version = result.version || getFirstMatch(/gecko\/(\d+(\.\d+)?)/i) + } + + // set OS flags for platforms that have multiple browsers + if (!result.windowsphone && (android || result.silk)) { + result.android = t + result.osname = 'Android' + } else if (!result.windowsphone && iosdevice) { + result[iosdevice] = t + result.ios = t + result.osname = 'iOS' + } else if (mac) { + result.mac = t + result.osname = 'macOS' + } else if (xbox) { + result.xbox = t + result.osname = 'Xbox' + } else if (windows) { + result.windows = t + result.osname = 'Windows' + } else if (linux) { + result.linux = t + result.osname = 'Linux' + } + + function getWindowsVersion (s) { + switch (s) { + case 'NT': return 'NT' + case 'XP': return 'XP' + case 'NT 5.0': return '2000' + case 'NT 5.1': return 'XP' + case 'NT 5.2': return '2003' + case 'NT 6.0': return 'Vista' + case 'NT 6.1': return '7' + case 'NT 6.2': return '8' + case 'NT 6.3': return '8.1' + case 'NT 10.0': return '10' + default: return undefined + } + } + + // OS version extraction + var osVersion = ''; + if (result.windows) { + osVersion = getWindowsVersion(getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i)) + } else if (result.windowsphone) { + osVersion = getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i); + } else if (result.mac) { + osVersion = getFirstMatch(/Mac OS X (\d+([_\.\s]\d+)*)/i); + osVersion = osVersion.replace(/[_\s]/g, '.'); + } else if (iosdevice) { + osVersion = getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i); + osVersion = osVersion.replace(/[_\s]/g, '.'); + } else if (android) { + osVersion = getFirstMatch(/android[ \/-](\d+(\.\d+)*)/i); + } else if (result.webos) { + osVersion = getFirstMatch(/(?:web|hpw)os\/(\d+(\.\d+)*)/i); + } else if (result.blackberry) { + osVersion = getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i); + } else if (result.bada) { + osVersion = getFirstMatch(/bada\/(\d+(\.\d+)*)/i); + } else if (result.tizen) { + osVersion = getFirstMatch(/tizen[\/\s](\d+(\.\d+)*)/i); + } + if (osVersion) { + result.osversion = osVersion; + } + + // device type extraction + var osMajorVersion = !result.windows && osVersion.split('.')[0]; + if ( + tablet + || nexusTablet + || iosdevice == 'ipad' + || (android && (osMajorVersion == 3 || (osMajorVersion >= 4 && !mobile))) + || result.silk + ) { + result.tablet = t + } else if ( + mobile + || iosdevice == 'iphone' + || iosdevice == 'ipod' + || android + || nexusMobile + || result.blackberry + || result.webos + || result.bada + ) { + result.mobile = t + } + + // Graded Browser Support + // http://developer.yahoo.com/yui/articles/gbs + if (result.msedge || + (result.msie && result.version >= 10) || + (result.yandexbrowser && result.version >= 15) || + (result.vivaldi && result.version >= 1.0) || + (result.chrome && result.version >= 20) || + (result.samsungBrowser && result.version >= 4) || + (result.whale && compareVersions([result.version, '1.0']) === 1) || + (result.mzbrowser && compareVersions([result.version, '6.0']) === 1) || + (result.focus && compareVersions([result.version, '1.0']) === 1) || + (result.firefox && result.version >= 20.0) || + (result.safari && result.version >= 6) || + (result.opera && result.version >= 10.0) || + (result.ios && result.osversion && result.osversion.split(".")[0] >= 6) || + (result.blackberry && result.version >= 10.1) + || (result.chromium && result.version >= 20) + ) { + result.a = t; + } + else if ((result.msie && result.version < 10) || + (result.chrome && result.version < 20) || + (result.firefox && result.version < 20.0) || + (result.safari && result.version < 6) || + (result.opera && result.version < 10.0) || + (result.ios && result.osversion && result.osversion.split(".")[0] < 6) + || (result.chromium && result.version < 20) + ) { + result.c = t + } else result.x = t + + return result + } + + var bowser = detect(typeof navigator !== 'undefined' ? navigator.userAgent || '' : '') + + bowser.test = function (browserList) { + for (var i = 0; i < browserList.length; ++i) { + var browserItem = browserList[i]; + if (typeof browserItem=== 'string') { + if (browserItem in bowser) { + return true; + } + } + } + return false; + } + + /** + * Get version precisions count + * + * @example + * getVersionPrecision("1.10.3") // 3 + * + * @param {string} version + * @return {number} + */ + function getVersionPrecision(version) { + return version.split(".").length; + } + + /** + * Array::map polyfill + * + * @param {Array} arr + * @param {Function} iterator + * @return {Array} + */ + function map(arr, iterator) { + var result = [], i; + if (Array.prototype.map) { + return Array.prototype.map.call(arr, iterator); + } + for (i = 0; i < arr.length; i++) { + result.push(iterator(arr[i])); + } + return result; + } + + /** + * Calculate browser version weight + * + * @example + * compareVersions(['1.10.2.1', '1.8.2.1.90']) // 1 + * compareVersions(['1.010.2.1', '1.09.2.1.90']); // 1 + * compareVersions(['1.10.2.1', '1.10.2.1']); // 0 + * compareVersions(['1.10.2.1', '1.0800.2']); // -1 + * + * @param {Array<String>} versions versions to compare + * @return {Number} comparison result + */ + function compareVersions(versions) { + // 1) get common precision for both versions, for example for "10.0" and "9" it should be 2 + var precision = Math.max(getVersionPrecision(versions[0]), getVersionPrecision(versions[1])); + var chunks = map(versions, function (version) { + var delta = precision - getVersionPrecision(version); + + // 2) "9" -> "9.0" (for precision = 2) + version = version + new Array(delta + 1).join(".0"); + + // 3) "9.0" -> ["000000000"", "000000009"] + return map(version.split("."), function (chunk) { + return new Array(20 - chunk.length).join("0") + chunk; + }).reverse(); + }); + + // iterate in reverse order by reversed chunks array + while (--precision >= 0) { + // 4) compare: "000000009" > "000000010" = false (but "9" > "10" = true) + if (chunks[0][precision] > chunks[1][precision]) { + return 1; + } + else if (chunks[0][precision] === chunks[1][precision]) { + if (precision === 0) { + // all version chunks are same + return 0; + } + } + else { + return -1; + } + } + } + + /** + * Check if browser is unsupported + * + * @example + * bowser.isUnsupportedBrowser({ + * msie: "10", + * firefox: "23", + * chrome: "29", + * safari: "5.1", + * opera: "16", + * phantom: "534" + * }); + * + * @param {Object} minVersions map of minimal version to browser + * @param {Boolean} [strictMode = false] flag to return false if browser wasn't found in map + * @param {String} [ua] user agent string + * @return {Boolean} + */ + function isUnsupportedBrowser(minVersions, strictMode, ua) { + var _bowser = bowser; + + // make strictMode param optional with ua param usage + if (typeof strictMode === 'string') { + ua = strictMode; + strictMode = void(0); + } + + if (strictMode === void(0)) { + strictMode = false; + } + if (ua) { + _bowser = detect(ua); + } + + var version = "" + _bowser.version; + for (var browser in minVersions) { + if (minVersions.hasOwnProperty(browser)) { + if (_bowser[browser]) { + if (typeof minVersions[browser] !== 'string') { + throw new Error('Browser version in the minVersion map should be a string: ' + browser + ': ' + String(minVersions)); + } + + // browser version and min supported version. + return compareVersions([version, minVersions[browser]]) < 0; + } + } + } + + return strictMode; // not found + } + + /** + * Check if browser is supported + * + * @param {Object} minVersions map of minimal version to browser + * @param {Boolean} [strictMode = false] flag to return false if browser wasn't found in map + * @param {String} [ua] user agent string + * @return {Boolean} + */ + function check(minVersions, strictMode, ua) { + return !isUnsupportedBrowser(minVersions, strictMode, ua); + } + + bowser.isUnsupportedBrowser = isUnsupportedBrowser; + bowser.compareVersions = compareVersions; + bowser.check = check; + + /* + * Set our detect method to the main bowser object so we can + * reuse it to test other user agents. + * This is needed to implement future tests. + */ + bowser._detect = detect; + + /* + * Set our detect public method to the main bowser object + * This is needed to implement bowser in server side + */ + bowser.detect = detect; + return bowser +}); + +},{}],102:[function(require,module,exports){ + +},{}],103:[function(require,module,exports){ +(function (Buffer){(function (){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh <https://feross.org> + * @license MIT + */ +/* eslint-disable no-proto */ + +'use strict' + +var base64 = require('base64-js') +var ieee754 = require('ieee754') + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +var K_MAX_LENGTH = 0x7fffffff +exports.kMaxLength = K_MAX_LENGTH + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Print warning and recommend using `buffer` v4.x which has an Object + * implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * We report that the browser does not support typed arrays if the are not subclassable + * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` + * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support + * for __proto__ and has a buggy typed array implementation. + */ +Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() + +if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && + typeof console.error === 'function') { + console.error( + 'This browser lacks typed array (Uint8Array) support which is required by ' + + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' + ) +} + +function typedArraySupport () { + // Can typed array instances can be augmented? + try { + var arr = new Uint8Array(1) + arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } } + return arr.foo() === 42 + } catch (e) { + return false + } +} + +Object.defineProperty(Buffer.prototype, 'parent', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.buffer + } +}) + +Object.defineProperty(Buffer.prototype, 'offset', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.byteOffset + } +}) + +function createBuffer (length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"') + } + // Return an augmented `Uint8Array` instance + var buf = new Uint8Array(length) + buf.__proto__ = Buffer.prototype + return buf +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ) + } + return allocUnsafe(arg) + } + return from(arg, encodingOrOffset, length) +} + +// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 +if (typeof Symbol !== 'undefined' && Symbol.species != null && + Buffer[Symbol.species] === Buffer) { + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true, + enumerable: false, + writable: false + }) +} + +Buffer.poolSize = 8192 // not used by this implementation + +function from (value, encodingOrOffset, length) { + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + if (ArrayBuffer.isView(value)) { + return fromArrayLike(value) + } + + if (value == null) { + throw TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) + } + + if (isInstance(value, ArrayBuffer) || + (value && isInstance(value.buffer, ArrayBuffer))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'number') { + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ) + } + + var valueOf = value.valueOf && value.valueOf() + if (valueOf != null && valueOf !== value) { + return Buffer.from(valueOf, encodingOrOffset, length) + } + + var b = fromObject(value) + if (b) return b + + if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && + typeof value[Symbol.toPrimitive] === 'function') { + return Buffer.from( + value[Symbol.toPrimitive]('string'), encodingOrOffset, length + ) + } + + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length) +} + +// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: +// https://github.com/feross/buffer/pull/148 +Buffer.prototype.__proto__ = Uint8Array.prototype +Buffer.__proto__ = Uint8Array + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be of type number') + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } +} + +function alloc (size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(size).fill(fill, encoding) + : createBuffer(size).fill(fill) + } + return createBuffer(size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(size, fill, encoding) +} + +function allocUnsafe (size) { + assertSize(size) + return createBuffer(size < 0 ? 0 : checked(size) | 0) +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(size) +} + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + + var length = byteLength(string, encoding) | 0 + var buf = createBuffer(length) + + var actual = buf.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + buf = buf.slice(0, actual) + } + + return buf +} + +function fromArrayLike (array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + var buf = createBuffer(length) + for (var i = 0; i < length; i += 1) { + buf[i] = array[i] & 255 + } + return buf +} + +function fromArrayBuffer (array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds') + } + + var buf + if (byteOffset === undefined && length === undefined) { + buf = new Uint8Array(array) + } else if (length === undefined) { + buf = new Uint8Array(array, byteOffset) + } else { + buf = new Uint8Array(array, byteOffset, length) + } + + // Return an augmented `Uint8Array` instance + buf.__proto__ = Buffer.prototype + return buf +} + +function fromObject (obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + var buf = createBuffer(len) + + if (buf.length === 0) { + return buf + } + + obj.copy(buf, 0, 0, len) + return buf + } + + if (obj.length !== undefined) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { + return createBuffer(0) + } + return fromArrayLike(obj) + } + + if (obj.type === 'Buffer' && Array.isArray(obj.data)) { + return fromArrayLike(obj.data) + } +} + +function checked (length) { + // Note: cannot use `length < K_MAX_LENGTH` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= K_MAX_LENGTH) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return b != null && b._isBuffer === true && + b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false +} + +Buffer.compare = function compare (a, b) { + if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) + if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ) + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (isInstance(buf, Uint8Array)) { + buf = Buffer.from(buf) + } + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + + 'Received type ' + typeof string + ) + } + + var len = string.length + var mustMatch = (arguments.length > 2 && arguments[2] === true) + if (!mustMatch && len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 + } + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) +// to detect a Buffer instance. It's not possible to use `instanceof Buffer` +// reliably in a browserify context because there could be multiple different +// copies of the 'buffer' package in use. This method works even for Buffer +// instances that were created from another copy of the `buffer` package. +// See: https://github.com/feross/buffer/issues/154 +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.toLocaleString = Buffer.prototype.toString + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() + if (this.length > max) str += ' ... ' + return '<Buffer ' + str + '>' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer.from(target, target.offset, target.byteLength) + } + if (!Buffer.isBuffer(target)) { + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. ' + + 'Received type ' + (typeof target) + ) + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (numberIsNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + var strLen = string.length + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (numberIsNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset >>> 0 + if (isFinite(length)) { + length = length >>> 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf = this.subarray(start, end) + // Return an augmented `Uint8Array` instance + newBuf.__proto__ = Buffer.prototype + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('Index out of range') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + + if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { + // Use built-in when available, missing from IE11 + this.copyWithin(targetStart, start, end) + } else if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (var i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if ((encoding === 'utf8' && code < 128) || + encoding === 'latin1') { + // Fast path: If `val` fits into a single byte, use that numeric value. + val = code + } + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : Buffer.from(val, encoding) + var len = bytes.length + if (len === 0) { + throw new TypeError('The value "' + val + + '" is invalid for argument "value"') + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node takes equal signs as end of the Base64 encoding + str = str.split('=')[0] + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = str.trim().replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass +// the `instanceof` check but they should be treated as of that type. +// See: https://github.com/feross/buffer/issues/166 +function isInstance (obj, type) { + return obj instanceof type || + (obj != null && obj.constructor != null && obj.constructor.name != null && + obj.constructor.name === type.name) +} +function numberIsNaN (obj) { + // For IE11 support + return obj !== obj // eslint-disable-line no-self-compare +} + +}).call(this)}).call(this,require("buffer").Buffer) +},{"base64-js":100,"buffer":103,"ieee754":400}],104:[function(require,module,exports){ +module.exports = { + "100": "Continue", + "101": "Switching Protocols", + "102": "Processing", + "200": "OK", + "201": "Created", + "202": "Accepted", + "203": "Non-Authoritative Information", + "204": "No Content", + "205": "Reset Content", + "206": "Partial Content", + "207": "Multi-Status", + "208": "Already Reported", + "226": "IM Used", + "300": "Multiple Choices", + "301": "Moved Permanently", + "302": "Found", + "303": "See Other", + "304": "Not Modified", + "305": "Use Proxy", + "307": "Temporary Redirect", + "308": "Permanent Redirect", + "400": "Bad Request", + "401": "Unauthorized", + "402": "Payment Required", + "403": "Forbidden", + "404": "Not Found", + "405": "Method Not Allowed", + "406": "Not Acceptable", + "407": "Proxy Authentication Required", + "408": "Request Timeout", + "409": "Conflict", + "410": "Gone", + "411": "Length Required", + "412": "Precondition Failed", + "413": "Payload Too Large", + "414": "URI Too Long", + "415": "Unsupported Media Type", + "416": "Range Not Satisfiable", + "417": "Expectation Failed", + "418": "I'm a teapot", + "421": "Misdirected Request", + "422": "Unprocessable Entity", + "423": "Locked", + "424": "Failed Dependency", + "425": "Unordered Collection", + "426": "Upgrade Required", + "428": "Precondition Required", + "429": "Too Many Requests", + "431": "Request Header Fields Too Large", + "451": "Unavailable For Legal Reasons", + "500": "Internal Server Error", + "501": "Not Implemented", + "502": "Bad Gateway", + "503": "Service Unavailable", + "504": "Gateway Timeout", + "505": "HTTP Version Not Supported", + "506": "Variant Also Negotiates", + "507": "Insufficient Storage", + "508": "Loop Detected", + "509": "Bandwidth Limit Exceeded", + "510": "Not Extended", + "511": "Network Authentication Required" +} + +},{}],105:[function(require,module,exports){ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var callBind = require('./'); + +var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf')); + +module.exports = function callBoundIntrinsic(name, allowMissing) { + var intrinsic = GetIntrinsic(name, !!allowMissing); + if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { + return callBind(intrinsic); + } + return intrinsic; +}; + +},{"./":106,"get-intrinsic":390}],106:[function(require,module,exports){ +'use strict'; + +var bind = require('function-bind'); +var GetIntrinsic = require('get-intrinsic'); +var setFunctionLength = require('set-function-length'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $apply = GetIntrinsic('%Function.prototype.apply%'); +var $call = GetIntrinsic('%Function.prototype.call%'); +var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply); + +var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); +var $max = GetIntrinsic('%Math.max%'); + +if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + } catch (e) { + // IE 8 has a broken defineProperty + $defineProperty = null; + } +} + +module.exports = function callBind(originalFunction) { + if (typeof originalFunction !== 'function') { + throw new $TypeError('a function is required'); + } + var func = $reflectApply(bind, $call, arguments); + return setFunctionLength( + func, + 1 + $max(0, originalFunction.length - (arguments.length - 1)), + true + ); +}; + +var applyBind = function applyBind() { + return $reflectApply(bind, $apply, arguments); +}; + +if ($defineProperty) { + $defineProperty(module.exports, 'apply', { value: applyBind }); +} else { + module.exports.apply = applyBind; +} + +},{"function-bind":389,"get-intrinsic":390,"set-function-length":466}],107:[function(require,module,exports){ +/*! + * copy-to - index.js + * Copyright(c) 2014 dead_horse <dead_horse@qq.com> + * MIT Licensed + */ + +'use strict'; + +/** + * slice() reference. + */ + +var slice = Array.prototype.slice; + +/** + * Expose copy + * + * ``` + * copy({foo: 'nar', hello: 'copy'}).to({hello: 'world'}); + * copy({foo: 'nar', hello: 'copy'}).toCover({hello: 'world'}); + * ``` + * + * @param {Object} src + * @return {Copy} + */ + +module.exports = Copy; + + +/** + * Copy + * @param {Object} src + * @param {Boolean} withAccess + */ + +function Copy(src, withAccess) { + if (!(this instanceof Copy)) return new Copy(src, withAccess); + this.src = src; + this._withAccess = withAccess; +} + +/** + * copy properties include getter and setter + * @param {[type]} val [description] + * @return {[type]} [description] + */ + +Copy.prototype.withAccess = function (w) { + this._withAccess = w !== false; + return this; +}; + +/** + * pick keys in src + * + * @api: public + */ + +Copy.prototype.pick = function(keys) { + if (!Array.isArray(keys)) { + keys = slice.call(arguments); + } + if (keys.length) { + this.keys = keys; + } + return this; +}; + +/** + * copy src to target, + * do not cover any property target has + * @param {Object} to + * + * @api: public + */ + +Copy.prototype.to = function(to) { + to = to || {}; + + if (!this.src) return to; + var keys = this.keys || Object.keys(this.src); + + if (!this._withAccess) { + for (var i = 0; i < keys.length; i++) { + key = keys[i]; + if (to[key] !== undefined) continue; + to[key] = this.src[key]; + } + return to; + } + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!notDefined(to, key)) continue; + var getter = this.src.__lookupGetter__(key); + var setter = this.src.__lookupSetter__(key); + if (getter) to.__defineGetter__(key, getter); + if (setter) to.__defineSetter__(key, setter); + + if (!getter && !setter) { + to[key] = this.src[key]; + } + } + return to; +}; + +/** + * copy src to target, + * override any property target has + * @param {Object} to + * + * @api: public + */ + +Copy.prototype.toCover = function(to) { + var keys = this.keys || Object.keys(this.src); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + delete to[key]; + var getter = this.src.__lookupGetter__(key); + var setter = this.src.__lookupSetter__(key); + if (getter) to.__defineGetter__(key, getter); + if (setter) to.__defineSetter__(key, setter); + + if (!getter && !setter) { + to[key] = this.src[key]; + } + } +}; + +Copy.prototype.override = Copy.prototype.toCover; + +/** + * append another object to src + * @param {Obj} obj + * @return {Copy} + */ + +Copy.prototype.and = function (obj) { + var src = {}; + this.to(src); + this.src = obj; + this.to(src); + this.src = src; + + return this; +}; + +/** + * check obj[key] if not defiend + * @param {Object} obj + * @param {String} key + * @return {Boolean} + */ + +function notDefined(obj, key) { + return obj[key] === undefined + && obj.__lookupGetter__(key) === undefined + && obj.__lookupSetter__(key) === undefined; +} + +},{}],108:[function(require,module,exports){ +'use strict'; +var isCallable = require('../internals/is-callable'); +var tryToString = require('../internals/try-to-string'); + +var $TypeError = TypeError; + +// `Assert: IsCallable(argument) is true` +module.exports = function (argument) { + if (isCallable(argument)) return argument; + throw new $TypeError(tryToString(argument) + ' is not a function'); +}; + +},{"../internals/is-callable":203,"../internals/try-to-string":293}],109:[function(require,module,exports){ +'use strict'; +var isConstructor = require('../internals/is-constructor'); +var tryToString = require('../internals/try-to-string'); + +var $TypeError = TypeError; + +// `Assert: IsConstructor(argument) is true` +module.exports = function (argument) { + if (isConstructor(argument)) return argument; + throw new $TypeError(tryToString(argument) + ' is not a constructor'); +}; + +},{"../internals/is-constructor":204,"../internals/try-to-string":293}],110:[function(require,module,exports){ +'use strict'; +var isPossiblePrototype = require('../internals/is-possible-prototype'); + +var $String = String; +var $TypeError = TypeError; + +module.exports = function (argument) { + if (isPossiblePrototype(argument)) return argument; + throw new $TypeError("Can't set " + $String(argument) + ' as a prototype'); +}; + +},{"../internals/is-possible-prototype":209}],111:[function(require,module,exports){ +'use strict'; +var wellKnownSymbol = require('../internals/well-known-symbol'); +var create = require('../internals/object-create'); +var defineProperty = require('../internals/object-define-property').f; + +var UNSCOPABLES = wellKnownSymbol('unscopables'); +var ArrayPrototype = Array.prototype; + +// Array.prototype[@@unscopables] +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +if (ArrayPrototype[UNSCOPABLES] === undefined) { + defineProperty(ArrayPrototype, UNSCOPABLES, { + configurable: true, + value: create(null) + }); +} + +// add a key to Array.prototype[@@unscopables] +module.exports = function (key) { + ArrayPrototype[UNSCOPABLES][key] = true; +}; + +},{"../internals/object-create":229,"../internals/object-define-property":231,"../internals/well-known-symbol":306}],112:[function(require,module,exports){ +'use strict'; +var charAt = require('../internals/string-multibyte').charAt; + +// `AdvanceStringIndex` abstract operation +// https://tc39.es/ecma262/#sec-advancestringindex +module.exports = function (S, index, unicode) { + return index + (unicode ? charAt(S, index).length : 1); +}; + +},{"../internals/string-multibyte":271}],113:[function(require,module,exports){ +'use strict'; +var isPrototypeOf = require('../internals/object-is-prototype-of'); + +var $TypeError = TypeError; + +module.exports = function (it, Prototype) { + if (isPrototypeOf(Prototype, it)) return it; + throw new $TypeError('Incorrect invocation'); +}; + +},{"../internals/object-is-prototype-of":238}],114:[function(require,module,exports){ +'use strict'; +var isObject = require('../internals/is-object'); + +var $String = String; +var $TypeError = TypeError; + +// `Assert: Type(argument) is Object` +module.exports = function (argument) { + if (isObject(argument)) return argument; + throw new $TypeError($String(argument) + ' is not an object'); +}; + +},{"../internals/is-object":208}],115:[function(require,module,exports){ +'use strict'; +// eslint-disable-next-line es/no-typed-arrays -- safe +module.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined'; + +},{}],116:[function(require,module,exports){ +'use strict'; +// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it +var fails = require('../internals/fails'); + +module.exports = fails(function () { + if (typeof ArrayBuffer == 'function') { + var buffer = new ArrayBuffer(8); + // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe + if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 }); + } +}); + +},{"../internals/fails":171}],117:[function(require,module,exports){ +'use strict'; +var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection'); +var DESCRIPTORS = require('../internals/descriptors'); +var global = require('../internals/global'); +var isCallable = require('../internals/is-callable'); +var isObject = require('../internals/is-object'); +var hasOwn = require('../internals/has-own-property'); +var classof = require('../internals/classof'); +var tryToString = require('../internals/try-to-string'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var defineBuiltIn = require('../internals/define-built-in'); +var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); +var isPrototypeOf = require('../internals/object-is-prototype-of'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var setPrototypeOf = require('../internals/object-set-prototype-of'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var uid = require('../internals/uid'); +var InternalStateModule = require('../internals/internal-state'); + +var enforceInternalState = InternalStateModule.enforce; +var getInternalState = InternalStateModule.get; +var Int8Array = global.Int8Array; +var Int8ArrayPrototype = Int8Array && Int8Array.prototype; +var Uint8ClampedArray = global.Uint8ClampedArray; +var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype; +var TypedArray = Int8Array && getPrototypeOf(Int8Array); +var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype); +var ObjectPrototype = Object.prototype; +var TypeError = global.TypeError; + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG'); +var TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor'; +// Fixing native typed arrays in Opera Presto crashes the browser, see #595 +var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera'; +var TYPED_ARRAY_TAG_REQUIRED = false; +var NAME, Constructor, Prototype; + +var TypedArrayConstructorsList = { + Int8Array: 1, + Uint8Array: 1, + Uint8ClampedArray: 1, + Int16Array: 2, + Uint16Array: 2, + Int32Array: 4, + Uint32Array: 4, + Float32Array: 4, + Float64Array: 8 +}; + +var BigIntArrayConstructorsList = { + BigInt64Array: 8, + BigUint64Array: 8 +}; + +var isView = function isView(it) { + if (!isObject(it)) return false; + var klass = classof(it); + return klass === 'DataView' + || hasOwn(TypedArrayConstructorsList, klass) + || hasOwn(BigIntArrayConstructorsList, klass); +}; + +var getTypedArrayConstructor = function (it) { + var proto = getPrototypeOf(it); + if (!isObject(proto)) return; + var state = getInternalState(proto); + return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto); +}; + +var isTypedArray = function (it) { + if (!isObject(it)) return false; + var klass = classof(it); + return hasOwn(TypedArrayConstructorsList, klass) + || hasOwn(BigIntArrayConstructorsList, klass); +}; + +var aTypedArray = function (it) { + if (isTypedArray(it)) return it; + throw new TypeError('Target is not a typed array'); +}; + +var aTypedArrayConstructor = function (C) { + if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C; + throw new TypeError(tryToString(C) + ' is not a typed array constructor'); +}; + +var exportTypedArrayMethod = function (KEY, property, forced, options) { + if (!DESCRIPTORS) return; + if (forced) for (var ARRAY in TypedArrayConstructorsList) { + var TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try { + delete TypedArrayConstructor.prototype[KEY]; + } catch (error) { + // old WebKit bug - some methods are non-configurable + try { + TypedArrayConstructor.prototype[KEY] = property; + } catch (error2) { /* empty */ } + } + } + if (!TypedArrayPrototype[KEY] || forced) { + defineBuiltIn(TypedArrayPrototype, KEY, forced ? property + : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options); + } +}; + +var exportTypedArrayStaticMethod = function (KEY, property, forced) { + var ARRAY, TypedArrayConstructor; + if (!DESCRIPTORS) return; + if (setPrototypeOf) { + if (forced) for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try { + delete TypedArrayConstructor[KEY]; + } catch (error) { /* empty */ } + } + if (!TypedArray[KEY] || forced) { + // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable + try { + return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property); + } catch (error) { /* empty */ } + } else return; + } + for (ARRAY in TypedArrayConstructorsList) { + TypedArrayConstructor = global[ARRAY]; + if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) { + defineBuiltIn(TypedArrayConstructor, KEY, property); + } + } +}; + +for (NAME in TypedArrayConstructorsList) { + Constructor = global[NAME]; + Prototype = Constructor && Constructor.prototype; + if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; + else NATIVE_ARRAY_BUFFER_VIEWS = false; +} + +for (NAME in BigIntArrayConstructorsList) { + Constructor = global[NAME]; + Prototype = Constructor && Constructor.prototype; + if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor; +} + +// WebKit bug - typed arrays constructors prototype is Object.prototype +if (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) { + // eslint-disable-next-line no-shadow -- safe + TypedArray = function TypedArray() { + throw new TypeError('Incorrect invocation'); + }; + if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) { + if (global[NAME]) setPrototypeOf(global[NAME], TypedArray); + } +} + +if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) { + TypedArrayPrototype = TypedArray.prototype; + if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) { + if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype); + } +} + +// WebKit bug - one more object in Uint8ClampedArray prototype chain +if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) { + setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype); +} + +if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) { + TYPED_ARRAY_TAG_REQUIRED = true; + defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, { + configurable: true, + get: function () { + return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined; + } + }); + for (NAME in TypedArrayConstructorsList) if (global[NAME]) { + createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME); + } +} + +module.exports = { + NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS, + TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG, + aTypedArray: aTypedArray, + aTypedArrayConstructor: aTypedArrayConstructor, + exportTypedArrayMethod: exportTypedArrayMethod, + exportTypedArrayStaticMethod: exportTypedArrayStaticMethod, + getTypedArrayConstructor: getTypedArrayConstructor, + isView: isView, + isTypedArray: isTypedArray, + TypedArray: TypedArray, + TypedArrayPrototype: TypedArrayPrototype +}; + +},{"../internals/array-buffer-basic-detection":115,"../internals/classof":138,"../internals/create-non-enumerable-property":145,"../internals/define-built-in":149,"../internals/define-built-in-accessor":148,"../internals/descriptors":153,"../internals/global":188,"../internals/has-own-property":189,"../internals/internal-state":199,"../internals/is-callable":203,"../internals/is-object":208,"../internals/object-get-prototype-of":236,"../internals/object-is-prototype-of":238,"../internals/object-set-prototype-of":242,"../internals/try-to-string":293,"../internals/uid":299,"../internals/well-known-symbol":306}],118:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var uncurryThis = require('../internals/function-uncurry-this'); +var DESCRIPTORS = require('../internals/descriptors'); +var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection'); +var FunctionName = require('../internals/function-name'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); +var defineBuiltIns = require('../internals/define-built-ins'); +var fails = require('../internals/fails'); +var anInstance = require('../internals/an-instance'); +var toIntegerOrInfinity = require('../internals/to-integer-or-infinity'); +var toLength = require('../internals/to-length'); +var toIndex = require('../internals/to-index'); +var fround = require('../internals/math-fround'); +var IEEE754 = require('../internals/ieee754'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var setPrototypeOf = require('../internals/object-set-prototype-of'); +var arrayFill = require('../internals/array-fill'); +var arraySlice = require('../internals/array-slice'); +var inheritIfRequired = require('../internals/inherit-if-required'); +var copyConstructorProperties = require('../internals/copy-constructor-properties'); +var setToStringTag = require('../internals/set-to-string-tag'); +var InternalStateModule = require('../internals/internal-state'); + +var PROPER_FUNCTION_NAME = FunctionName.PROPER; +var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; +var ARRAY_BUFFER = 'ArrayBuffer'; +var DATA_VIEW = 'DataView'; +var PROTOTYPE = 'prototype'; +var WRONG_LENGTH = 'Wrong length'; +var WRONG_INDEX = 'Wrong index'; +var getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER); +var getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW); +var setInternalState = InternalStateModule.set; +var NativeArrayBuffer = global[ARRAY_BUFFER]; +var $ArrayBuffer = NativeArrayBuffer; +var ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE]; +var $DataView = global[DATA_VIEW]; +var DataViewPrototype = $DataView && $DataView[PROTOTYPE]; +var ObjectPrototype = Object.prototype; +var Array = global.Array; +var RangeError = global.RangeError; +var fill = uncurryThis(arrayFill); +var reverse = uncurryThis([].reverse); + +var packIEEE754 = IEEE754.pack; +var unpackIEEE754 = IEEE754.unpack; + +var packInt8 = function (number) { + return [number & 0xFF]; +}; + +var packInt16 = function (number) { + return [number & 0xFF, number >> 8 & 0xFF]; +}; + +var packInt32 = function (number) { + return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF]; +}; + +var unpackInt32 = function (buffer) { + return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0]; +}; + +var packFloat32 = function (number) { + return packIEEE754(fround(number), 23, 4); +}; + +var packFloat64 = function (number) { + return packIEEE754(number, 52, 8); +}; + +var addGetter = function (Constructor, key, getInternalState) { + defineBuiltInAccessor(Constructor[PROTOTYPE], key, { + configurable: true, + get: function () { + return getInternalState(this)[key]; + } + }); +}; + +var get = function (view, count, index, isLittleEndian) { + var store = getInternalDataViewState(view); + var intIndex = toIndex(index); + var boolIsLittleEndian = !!isLittleEndian; + if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX); + var bytes = store.bytes; + var start = intIndex + store.byteOffset; + var pack = arraySlice(bytes, start, start + count); + return boolIsLittleEndian ? pack : reverse(pack); +}; + +var set = function (view, count, index, conversion, value, isLittleEndian) { + var store = getInternalDataViewState(view); + var intIndex = toIndex(index); + var pack = conversion(+value); + var boolIsLittleEndian = !!isLittleEndian; + if (intIndex + count > store.byteLength) throw new RangeError(WRONG_INDEX); + var bytes = store.bytes; + var start = intIndex + store.byteOffset; + for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1]; +}; + +if (!NATIVE_ARRAY_BUFFER) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, ArrayBufferPrototype); + var byteLength = toIndex(length); + setInternalState(this, { + type: ARRAY_BUFFER, + bytes: fill(Array(byteLength), 0), + byteLength: byteLength + }); + if (!DESCRIPTORS) { + this.byteLength = byteLength; + this.detached = false; + } + }; + + ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE]; + + $DataView = function DataView(buffer, byteOffset, byteLength) { + anInstance(this, DataViewPrototype); + anInstance(buffer, ArrayBufferPrototype); + var bufferState = getInternalArrayBufferState(buffer); + var bufferLength = bufferState.byteLength; + var offset = toIntegerOrInfinity(byteOffset); + if (offset < 0 || offset > bufferLength) throw new RangeError('Wrong offset'); + byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength); + if (offset + byteLength > bufferLength) throw new RangeError(WRONG_LENGTH); + setInternalState(this, { + type: DATA_VIEW, + buffer: buffer, + byteLength: byteLength, + byteOffset: offset, + bytes: bufferState.bytes + }); + if (!DESCRIPTORS) { + this.buffer = buffer; + this.byteLength = byteLength; + this.byteOffset = offset; + } + }; + + DataViewPrototype = $DataView[PROTOTYPE]; + + if (DESCRIPTORS) { + addGetter($ArrayBuffer, 'byteLength', getInternalArrayBufferState); + addGetter($DataView, 'buffer', getInternalDataViewState); + addGetter($DataView, 'byteLength', getInternalDataViewState); + addGetter($DataView, 'byteOffset', getInternalDataViewState); + } + + defineBuiltIns(DataViewPrototype, { + getInt8: function getInt8(byteOffset) { + return get(this, 1, byteOffset)[0] << 24 >> 24; + }, + getUint8: function getUint8(byteOffset) { + return get(this, 1, byteOffset)[0]; + }, + getInt16: function getInt16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false); + return (bytes[1] << 8 | bytes[0]) << 16 >> 16; + }, + getUint16: function getUint16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false); + return bytes[1] << 8 | bytes[0]; + }, + getInt32: function getInt32(byteOffset /* , littleEndian */) { + return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)); + }, + getUint32: function getUint32(byteOffset /* , littleEndian */) { + return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0; + }, + getFloat32: function getFloat32(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23); + }, + getFloat64: function getFloat64(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52); + }, + setInt8: function setInt8(byteOffset, value) { + set(this, 1, byteOffset, packInt8, value); + }, + setUint8: function setUint8(byteOffset, value) { + set(this, 1, byteOffset, packInt8, value); + }, + setInt16: function setInt16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false); + }, + setUint16: function setUint16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false); + }, + setInt32: function setInt32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false); + }, + setUint32: function setUint32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false); + }, + setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false); + }, + setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { + set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false); + } + }); +} else { + var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER; + /* eslint-disable no-new -- required for testing */ + if (!fails(function () { + NativeArrayBuffer(1); + }) || !fails(function () { + new NativeArrayBuffer(-1); + }) || fails(function () { + new NativeArrayBuffer(); + new NativeArrayBuffer(1.5); + new NativeArrayBuffer(NaN); + return NativeArrayBuffer.length !== 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME; + })) { + /* eslint-enable no-new -- required for testing */ + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, ArrayBufferPrototype); + return inheritIfRequired(new NativeArrayBuffer(toIndex(length)), this, $ArrayBuffer); + }; + + $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype; + + ArrayBufferPrototype.constructor = $ArrayBuffer; + + copyConstructorProperties($ArrayBuffer, NativeArrayBuffer); + } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) { + createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER); + } + + // WebKit bug - the same parent prototype for typed arrays and data view + if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) { + setPrototypeOf(DataViewPrototype, ObjectPrototype); + } + + // iOS Safari 7.x bug + var testView = new $DataView(new $ArrayBuffer(2)); + var $setInt8 = uncurryThis(DataViewPrototype.setInt8); + testView.setInt8(0, 2147483648); + testView.setInt8(1, 2147483649); + if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, { + setInt8: function setInt8(byteOffset, value) { + $setInt8(this, byteOffset, value << 24 >> 24); + }, + setUint8: function setUint8(byteOffset, value) { + $setInt8(this, byteOffset, value << 24 >> 24); + } + }, { unsafe: true }); +} + +setToStringTag($ArrayBuffer, ARRAY_BUFFER); +setToStringTag($DataView, DATA_VIEW); + +module.exports = { + ArrayBuffer: $ArrayBuffer, + DataView: $DataView +}; + +},{"../internals/an-instance":113,"../internals/array-buffer-basic-detection":115,"../internals/array-fill":120,"../internals/array-slice":131,"../internals/copy-constructor-properties":141,"../internals/create-non-enumerable-property":145,"../internals/define-built-in-accessor":148,"../internals/define-built-ins":150,"../internals/descriptors":153,"../internals/fails":171,"../internals/function-name":178,"../internals/function-uncurry-this":181,"../internals/global":188,"../internals/ieee754":194,"../internals/inherit-if-required":196,"../internals/internal-state":199,"../internals/math-fround":222,"../internals/object-get-prototype-of":236,"../internals/object-set-prototype-of":242,"../internals/set-to-string-tag":266,"../internals/to-index":281,"../internals/to-integer-or-infinity":283,"../internals/to-length":284}],119:[function(require,module,exports){ +'use strict'; +var toObject = require('../internals/to-object'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var lengthOfArrayLike = require('../internals/length-of-array-like'); +var deletePropertyOrThrow = require('../internals/delete-property-or-throw'); + +var min = Math.min; + +// `Array.prototype.copyWithin` method implementation +// https://tc39.es/ecma262/#sec-array.prototype.copywithin +// eslint-disable-next-line es/no-array-prototype-copywithin -- safe +module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) { + var O = toObject(this); + var len = lengthOfArrayLike(O); + var to = toAbsoluteIndex(target, len); + var from = toAbsoluteIndex(start, len); + var end = arguments.length > 2 ? arguments[2] : undefined; + var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); + var inc = 1; + if (from < to && to < from + count) { + inc = -1; + from += count - 1; + to += count - 1; + } + while (count-- > 0) { + if (from in O) O[to] = O[from]; + else deletePropertyOrThrow(O, to); + to += inc; + from += inc; + } return O; +}; + +},{"../internals/delete-property-or-throw":152,"../internals/length-of-array-like":219,"../internals/to-absolute-index":279,"../internals/to-object":285}],120:[function(require,module,exports){ +'use strict'; +var toObject = require('../internals/to-object'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var lengthOfArrayLike = require('../internals/length-of-array-like'); + +// `Array.prototype.fill` method implementation +// https://tc39.es/ecma262/#sec-array.prototype.fill +module.exports = function fill(value /* , start = 0, end = @length */) { + var O = toObject(this); + var length = lengthOfArrayLike(O); + var argumentsLength = arguments.length; + var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length); + var end = argumentsLength > 2 ? arguments[2] : undefined; + var endPos = end === undefined ? length : toAbsoluteIndex(end, length); + while (endPos > index) O[index++] = value; + return O; +}; + +},{"../internals/length-of-array-like":219,"../internals/to-absolute-index":279,"../internals/to-object":285}],121:[function(require,module,exports){ +'use strict'; +var $forEach = require('../internals/array-iteration').forEach; +var arrayMethodIsStrict = require('../internals/array-method-is-strict'); + +var STRICT_METHOD = arrayMethodIsStrict('forEach'); + +// `Array.prototype.forEach` method implementation +// https://tc39.es/ecma262/#sec-array.prototype.foreach +module.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) { + return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); +// eslint-disable-next-line es/no-array-prototype-foreach -- safe +} : [].forEach; + +},{"../internals/array-iteration":125,"../internals/array-method-is-strict":128}],122:[function(require,module,exports){ +'use strict'; +var lengthOfArrayLike = require('../internals/length-of-array-like'); + +module.exports = function (Constructor, list, $length) { + var index = 0; + var length = arguments.length > 2 ? $length : lengthOfArrayLike(list); + var result = new Constructor(length); + while (length > index) result[index] = list[index++]; + return result; +}; + +},{"../internals/length-of-array-like":219}],123:[function(require,module,exports){ +'use strict'; +var bind = require('../internals/function-bind-context'); +var call = require('../internals/function-call'); +var toObject = require('../internals/to-object'); +var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing'); +var isArrayIteratorMethod = require('../internals/is-array-iterator-method'); +var isConstructor = require('../internals/is-constructor'); +var lengthOfArrayLike = require('../internals/length-of-array-like'); +var createProperty = require('../internals/create-property'); +var getIterator = require('../internals/get-iterator'); +var getIteratorMethod = require('../internals/get-iterator-method'); + +var $Array = Array; + +// `Array.from` method implementation +// https://tc39.es/ecma262/#sec-array.from +module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject(arrayLike); + var IS_CONSTRUCTOR = isConstructor(this); + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined); + var iteratorMethod = getIteratorMethod(O); + var index = 0; + var length, result, step, iterator, next, value; + // if the target is not iterable or it's an array with the default iterator - use a simple case + if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) { + iterator = getIterator(O, iteratorMethod); + next = iterator.next; + result = IS_CONSTRUCTOR ? new this() : []; + for (;!(step = call(next, iterator)).done; index++) { + value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value; + createProperty(result, index, value); + } + } else { + length = lengthOfArrayLike(O); + result = IS_CONSTRUCTOR ? new this(length) : $Array(length); + for (;length > index; index++) { + value = mapping ? mapfn(O[index], index) : O[index]; + createProperty(result, index, value); + } + } + result.length = index; + return result; +}; + +},{"../internals/call-with-safe-iteration-closing":135,"../internals/create-property":147,"../internals/function-bind-context":175,"../internals/function-call":177,"../internals/get-iterator":184,"../internals/get-iterator-method":183,"../internals/is-array-iterator-method":200,"../internals/is-constructor":204,"../internals/length-of-array-like":219,"../internals/to-object":285}],124:[function(require,module,exports){ +'use strict'; +var toIndexedObject = require('../internals/to-indexed-object'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var lengthOfArrayLike = require('../internals/length-of-array-like'); + +// `Array.prototype.{ indexOf, includes }` methods implementation +var createMethod = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = lengthOfArrayLike(O); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare -- NaN check + if (IS_INCLUDES && el !== el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare -- NaN check + if (value !== value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + +module.exports = { + // `Array.prototype.includes` method + // https://tc39.es/ecma262/#sec-array.prototype.includes + includes: createMethod(true), + // `Array.prototype.indexOf` method + // https://tc39.es/ecma262/#sec-array.prototype.indexof + indexOf: createMethod(false) +}; + +},{"../internals/length-of-array-like":219,"../internals/to-absolute-index":279,"../internals/to-indexed-object":282}],125:[function(require,module,exports){ +'use strict'; +var bind = require('../internals/function-bind-context'); +var uncurryThis = require('../internals/function-uncurry-this'); +var IndexedObject = require('../internals/indexed-object'); +var toObject = require('../internals/to-object'); +var lengthOfArrayLike = require('../internals/length-of-array-like'); +var arraySpeciesCreate = require('../internals/array-species-create'); + +var push = uncurryThis([].push); + +// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation +var createMethod = function (TYPE) { + var IS_MAP = TYPE === 1; + var IS_FILTER = TYPE === 2; + var IS_SOME = TYPE === 3; + var IS_EVERY = TYPE === 4; + var IS_FIND_INDEX = TYPE === 6; + var IS_FILTER_REJECT = TYPE === 7; + var NO_HOLES = TYPE === 5 || IS_FIND_INDEX; + return function ($this, callbackfn, that, specificCreate) { + var O = toObject($this); + var self = IndexedObject(O); + var length = lengthOfArrayLike(self); + var boundFunction = bind(callbackfn, that); + var index = 0; + var create = specificCreate || arraySpeciesCreate; + var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined; + var value, result; + for (;length > index; index++) if (NO_HOLES || index in self) { + value = self[index]; + result = boundFunction(value, index, O); + if (TYPE) { + if (IS_MAP) target[index] = result; // map + else if (result) switch (TYPE) { + case 3: return true; // some + case 5: return value; // find + case 6: return index; // findIndex + case 2: push(target, value); // filter + } else switch (TYPE) { + case 4: return false; // every + case 7: push(target, value); // filterReject + } + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; + }; +}; + +module.exports = { + // `Array.prototype.forEach` method + // https://tc39.es/ecma262/#sec-array.prototype.foreach + forEach: createMethod(0), + // `Array.prototype.map` method + // https://tc39.es/ecma262/#sec-array.prototype.map + map: createMethod(1), + // `Array.prototype.filter` method + // https://tc39.es/ecma262/#sec-array.prototype.filter + filter: createMethod(2), + // `Array.prototype.some` method + // https://tc39.es/ecma262/#sec-array.prototype.some + some: createMethod(3), + // `Array.prototype.every` method + // https://tc39.es/ecma262/#sec-array.prototype.every + every: createMethod(4), + // `Array.prototype.find` method + // https://tc39.es/ecma262/#sec-array.prototype.find + find: createMethod(5), + // `Array.prototype.findIndex` method + // https://tc39.es/ecma262/#sec-array.prototype.findIndex + findIndex: createMethod(6), + // `Array.prototype.filterReject` method + // https://github.com/tc39/proposal-array-filtering + filterReject: createMethod(7) +}; + +},{"../internals/array-species-create":134,"../internals/function-bind-context":175,"../internals/function-uncurry-this":181,"../internals/indexed-object":195,"../internals/length-of-array-like":219,"../internals/to-object":285}],126:[function(require,module,exports){ +'use strict'; +/* eslint-disable es/no-array-prototype-lastindexof -- safe */ +var apply = require('../internals/function-apply'); +var toIndexedObject = require('../internals/to-indexed-object'); +var toIntegerOrInfinity = require('../internals/to-integer-or-infinity'); +var lengthOfArrayLike = require('../internals/length-of-array-like'); +var arrayMethodIsStrict = require('../internals/array-method-is-strict'); + +var min = Math.min; +var $lastIndexOf = [].lastIndexOf; +var NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0; +var STRICT_METHOD = arrayMethodIsStrict('lastIndexOf'); +var FORCED = NEGATIVE_ZERO || !STRICT_METHOD; + +// `Array.prototype.lastIndexOf` method implementation +// https://tc39.es/ecma262/#sec-array.prototype.lastindexof +module.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) { + // convert -0 to +0 + if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0; + var O = toIndexedObject(this); + var length = lengthOfArrayLike(O); + var index = length - 1; + if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1])); + if (index < 0) index = length + index; + for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0; + return -1; +} : $lastIndexOf; + +},{"../internals/array-method-is-strict":128,"../internals/function-apply":174,"../internals/length-of-array-like":219,"../internals/to-indexed-object":282,"../internals/to-integer-or-infinity":283}],127:[function(require,module,exports){ +'use strict'; +var fails = require('../internals/fails'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var V8_VERSION = require('../internals/engine-v8-version'); + +var SPECIES = wellKnownSymbol('species'); + +module.exports = function (METHOD_NAME) { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/677 + return V8_VERSION >= 51 || !fails(function () { + var array = []; + var constructor = array.constructor = {}; + constructor[SPECIES] = function () { + return { foo: 1 }; + }; + return array[METHOD_NAME](Boolean).foo !== 1; + }); +}; + +},{"../internals/engine-v8-version":167,"../internals/fails":171,"../internals/well-known-symbol":306}],128:[function(require,module,exports){ +'use strict'; +var fails = require('../internals/fails'); + +module.exports = function (METHOD_NAME, argument) { + var method = [][METHOD_NAME]; + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call -- required for testing + method.call(null, argument || function () { return 1; }, 1); + }); +}; + +},{"../internals/fails":171}],129:[function(require,module,exports){ +'use strict'; +var aCallable = require('../internals/a-callable'); +var toObject = require('../internals/to-object'); +var IndexedObject = require('../internals/indexed-object'); +var lengthOfArrayLike = require('../internals/length-of-array-like'); + +var $TypeError = TypeError; + +// `Array.prototype.{ reduce, reduceRight }` methods implementation +var createMethod = function (IS_RIGHT) { + return function (that, callbackfn, argumentsLength, memo) { + var O = toObject(that); + var self = IndexedObject(O); + var length = lengthOfArrayLike(O); + aCallable(callbackfn); + var index = IS_RIGHT ? length - 1 : 0; + var i = IS_RIGHT ? -1 : 1; + if (argumentsLength < 2) while (true) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (IS_RIGHT ? index < 0 : length <= index) { + throw new $TypeError('Reduce of empty array with no initial value'); + } + } + for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; + }; +}; + +module.exports = { + // `Array.prototype.reduce` method + // https://tc39.es/ecma262/#sec-array.prototype.reduce + left: createMethod(false), + // `Array.prototype.reduceRight` method + // https://tc39.es/ecma262/#sec-array.prototype.reduceright + right: createMethod(true) +}; + +},{"../internals/a-callable":108,"../internals/indexed-object":195,"../internals/length-of-array-like":219,"../internals/to-object":285}],130:[function(require,module,exports){ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var isArray = require('../internals/is-array'); + +var $TypeError = TypeError; +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// Safari < 13 does not throw an error in this case +var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () { + // makes no sense without proper strict mode support + if (this !== undefined) return true; + try { + // eslint-disable-next-line es/no-object-defineproperty -- safe + Object.defineProperty([], 'length', { writable: false }).length = 1; + } catch (error) { + return error instanceof TypeError; + } +}(); + +module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) { + if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) { + throw new $TypeError('Cannot set read only .length'); + } return O.length = length; +} : function (O, length) { + return O.length = length; +}; + +},{"../internals/descriptors":153,"../internals/is-array":201}],131:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); + +module.exports = uncurryThis([].slice); + +},{"../internals/function-uncurry-this":181}],132:[function(require,module,exports){ +'use strict'; +var arraySlice = require('../internals/array-slice'); + +var floor = Math.floor; + +var sort = function (array, comparefn) { + var length = array.length; + + if (length < 8) { + // insertion sort + var i = 1; + var element, j; + + while (i < length) { + j = i; + element = array[i]; + while (j && comparefn(array[j - 1], element) > 0) { + array[j] = array[--j]; + } + if (j !== i++) array[j] = element; + } + } else { + // merge sort + var middle = floor(length / 2); + var left = sort(arraySlice(array, 0, middle), comparefn); + var right = sort(arraySlice(array, middle), comparefn); + var llength = left.length; + var rlength = right.length; + var lindex = 0; + var rindex = 0; + + while (lindex < llength || rindex < rlength) { + array[lindex + rindex] = (lindex < llength && rindex < rlength) + ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++] + : lindex < llength ? left[lindex++] : right[rindex++]; + } + } + + return array; +}; + +module.exports = sort; + +},{"../internals/array-slice":131}],133:[function(require,module,exports){ +'use strict'; +var isArray = require('../internals/is-array'); +var isConstructor = require('../internals/is-constructor'); +var isObject = require('../internals/is-object'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var SPECIES = wellKnownSymbol('species'); +var $Array = Array; + +// a part of `ArraySpeciesCreate` abstract operation +// https://tc39.es/ecma262/#sec-arrayspeciescreate +module.exports = function (originalArray) { + var C; + if (isArray(originalArray)) { + C = originalArray.constructor; + // cross-realm fallback + if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined; + else if (isObject(C)) { + C = C[SPECIES]; + if (C === null) C = undefined; + } + } return C === undefined ? $Array : C; +}; + +},{"../internals/is-array":201,"../internals/is-constructor":204,"../internals/is-object":208,"../internals/well-known-symbol":306}],134:[function(require,module,exports){ +'use strict'; +var arraySpeciesConstructor = require('../internals/array-species-constructor'); + +// `ArraySpeciesCreate` abstract operation +// https://tc39.es/ecma262/#sec-arrayspeciescreate +module.exports = function (originalArray, length) { + return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length); +}; + +},{"../internals/array-species-constructor":133}],135:[function(require,module,exports){ +'use strict'; +var anObject = require('../internals/an-object'); +var iteratorClose = require('../internals/iterator-close'); + +// call something on iterator step with safe closing on error +module.exports = function (iterator, fn, value, ENTRIES) { + try { + return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); + } catch (error) { + iteratorClose(iterator, 'throw', error); + } +}; + +},{"../internals/an-object":114,"../internals/iterator-close":214}],136:[function(require,module,exports){ +'use strict'; +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var ITERATOR = wellKnownSymbol('iterator'); +var SAFE_CLOSING = false; + +try { + var called = 0; + var iteratorWithReturn = { + next: function () { + return { done: !!called++ }; + }, + 'return': function () { + SAFE_CLOSING = true; + } + }; + iteratorWithReturn[ITERATOR] = function () { + return this; + }; + // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing + Array.from(iteratorWithReturn, function () { throw 2; }); +} catch (error) { /* empty */ } + +module.exports = function (exec, SKIP_CLOSING) { + try { + if (!SKIP_CLOSING && !SAFE_CLOSING) return false; + } catch (error) { return false; } // workaround of old WebKit + `eval` bug + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR] = function () { + return { + next: function () { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { /* empty */ } + return ITERATION_SUPPORT; +}; + +},{"../internals/well-known-symbol":306}],137:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); + +var toString = uncurryThis({}.toString); +var stringSlice = uncurryThis(''.slice); + +module.exports = function (it) { + return stringSlice(toString(it), 8, -1); +}; + +},{"../internals/function-uncurry-this":181}],138:[function(require,module,exports){ +'use strict'; +var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support'); +var isCallable = require('../internals/is-callable'); +var classofRaw = require('../internals/classof-raw'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var $Object = Object; + +// ES3 wrong here +var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (error) { /* empty */ } +}; + +// getting tag from ES6+ `Object.prototype.toString` +module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag + // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw(O) + // ES3 arguments fallback + : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result; +}; + +},{"../internals/classof-raw":137,"../internals/is-callable":203,"../internals/to-string-tag-support":290,"../internals/well-known-symbol":306}],139:[function(require,module,exports){ +'use strict'; +var create = require('../internals/object-create'); +var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); +var defineBuiltIns = require('../internals/define-built-ins'); +var bind = require('../internals/function-bind-context'); +var anInstance = require('../internals/an-instance'); +var isNullOrUndefined = require('../internals/is-null-or-undefined'); +var iterate = require('../internals/iterate'); +var defineIterator = require('../internals/iterator-define'); +var createIterResultObject = require('../internals/create-iter-result-object'); +var setSpecies = require('../internals/set-species'); +var DESCRIPTORS = require('../internals/descriptors'); +var fastKey = require('../internals/internal-metadata').fastKey; +var InternalStateModule = require('../internals/internal-state'); + +var setInternalState = InternalStateModule.set; +var internalStateGetterFor = InternalStateModule.getterFor; + +module.exports = { + getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { + var Constructor = wrapper(function (that, iterable) { + anInstance(that, Prototype); + setInternalState(that, { + type: CONSTRUCTOR_NAME, + index: create(null), + first: undefined, + last: undefined, + size: 0 + }); + if (!DESCRIPTORS) that.size = 0; + if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP }); + }); + + var Prototype = Constructor.prototype; + + var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); + + var define = function (that, key, value) { + var state = getInternalState(that); + var entry = getEntry(that, key); + var previous, index; + // change existing entry + if (entry) { + entry.value = value; + // create new entry + } else { + state.last = entry = { + index: index = fastKey(key, true), + key: key, + value: value, + previous: previous = state.last, + next: undefined, + removed: false + }; + if (!state.first) state.first = entry; + if (previous) previous.next = entry; + if (DESCRIPTORS) state.size++; + else that.size++; + // add to index + if (index !== 'F') state.index[index] = entry; + } return that; + }; + + var getEntry = function (that, key) { + var state = getInternalState(that); + // fast case + var index = fastKey(key); + var entry; + if (index !== 'F') return state.index[index]; + // frozen object case + for (entry = state.first; entry; entry = entry.next) { + if (entry.key === key) return entry; + } + }; + + defineBuiltIns(Prototype, { + // `{ Map, Set }.prototype.clear()` methods + // https://tc39.es/ecma262/#sec-map.prototype.clear + // https://tc39.es/ecma262/#sec-set.prototype.clear + clear: function clear() { + var that = this; + var state = getInternalState(that); + var entry = state.first; + while (entry) { + entry.removed = true; + if (entry.previous) entry.previous = entry.previous.next = undefined; + entry = entry.next; + } + state.first = state.last = undefined; + state.index = create(null); + if (DESCRIPTORS) state.size = 0; + else that.size = 0; + }, + // `{ Map, Set }.prototype.delete(key)` methods + // https://tc39.es/ecma262/#sec-map.prototype.delete + // https://tc39.es/ecma262/#sec-set.prototype.delete + 'delete': function (key) { + var that = this; + var state = getInternalState(that); + var entry = getEntry(that, key); + if (entry) { + var next = entry.next; + var prev = entry.previous; + delete state.index[entry.index]; + entry.removed = true; + if (prev) prev.next = next; + if (next) next.previous = prev; + if (state.first === entry) state.first = next; + if (state.last === entry) state.last = prev; + if (DESCRIPTORS) state.size--; + else that.size--; + } return !!entry; + }, + // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods + // https://tc39.es/ecma262/#sec-map.prototype.foreach + // https://tc39.es/ecma262/#sec-set.prototype.foreach + forEach: function forEach(callbackfn /* , that = undefined */) { + var state = getInternalState(this); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined); + var entry; + while (entry = entry ? entry.next : state.first) { + boundFunction(entry.value, entry.key, this); + // revert to the last existing entry + while (entry && entry.removed) entry = entry.previous; + } + }, + // `{ Map, Set}.prototype.has(key)` methods + // https://tc39.es/ecma262/#sec-map.prototype.has + // https://tc39.es/ecma262/#sec-set.prototype.has + has: function has(key) { + return !!getEntry(this, key); + } + }); + + defineBuiltIns(Prototype, IS_MAP ? { + // `Map.prototype.get(key)` method + // https://tc39.es/ecma262/#sec-map.prototype.get + get: function get(key) { + var entry = getEntry(this, key); + return entry && entry.value; + }, + // `Map.prototype.set(key, value)` method + // https://tc39.es/ecma262/#sec-map.prototype.set + set: function set(key, value) { + return define(this, key === 0 ? 0 : key, value); + } + } : { + // `Set.prototype.add(value)` method + // https://tc39.es/ecma262/#sec-set.prototype.add + add: function add(value) { + return define(this, value = value === 0 ? 0 : value, value); + } + }); + if (DESCRIPTORS) defineBuiltInAccessor(Prototype, 'size', { + configurable: true, + get: function () { + return getInternalState(this).size; + } + }); + return Constructor; + }, + setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) { + var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; + var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME); + var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME); + // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods + // https://tc39.es/ecma262/#sec-map.prototype.entries + // https://tc39.es/ecma262/#sec-map.prototype.keys + // https://tc39.es/ecma262/#sec-map.prototype.values + // https://tc39.es/ecma262/#sec-map.prototype-@@iterator + // https://tc39.es/ecma262/#sec-set.prototype.entries + // https://tc39.es/ecma262/#sec-set.prototype.keys + // https://tc39.es/ecma262/#sec-set.prototype.values + // https://tc39.es/ecma262/#sec-set.prototype-@@iterator + defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) { + setInternalState(this, { + type: ITERATOR_NAME, + target: iterated, + state: getInternalCollectionState(iterated), + kind: kind, + last: undefined + }); + }, function () { + var state = getInternalIteratorState(this); + var kind = state.kind; + var entry = state.last; + // revert to the last existing entry + while (entry && entry.removed) entry = entry.previous; + // get next entry + if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { + // or finish the iteration + state.target = undefined; + return createIterResultObject(undefined, true); + } + // return step by kind + if (kind === 'keys') return createIterResultObject(entry.key, false); + if (kind === 'values') return createIterResultObject(entry.value, false); + return createIterResultObject([entry.key, entry.value], false); + }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); + + // `{ Map, Set }.prototype[@@species]` accessors + // https://tc39.es/ecma262/#sec-get-map-@@species + // https://tc39.es/ecma262/#sec-get-set-@@species + setSpecies(CONSTRUCTOR_NAME); + } +}; + +},{"../internals/an-instance":113,"../internals/create-iter-result-object":144,"../internals/define-built-in-accessor":148,"../internals/define-built-ins":150,"../internals/descriptors":153,"../internals/function-bind-context":175,"../internals/internal-metadata":198,"../internals/internal-state":199,"../internals/is-null-or-undefined":207,"../internals/iterate":213,"../internals/iterator-define":216,"../internals/object-create":229,"../internals/set-species":265}],140:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var global = require('../internals/global'); +var uncurryThis = require('../internals/function-uncurry-this'); +var isForced = require('../internals/is-forced'); +var defineBuiltIn = require('../internals/define-built-in'); +var InternalMetadataModule = require('../internals/internal-metadata'); +var iterate = require('../internals/iterate'); +var anInstance = require('../internals/an-instance'); +var isCallable = require('../internals/is-callable'); +var isNullOrUndefined = require('../internals/is-null-or-undefined'); +var isObject = require('../internals/is-object'); +var fails = require('../internals/fails'); +var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration'); +var setToStringTag = require('../internals/set-to-string-tag'); +var inheritIfRequired = require('../internals/inherit-if-required'); + +module.exports = function (CONSTRUCTOR_NAME, wrapper, common) { + var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1; + var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1; + var ADDER = IS_MAP ? 'set' : 'add'; + var NativeConstructor = global[CONSTRUCTOR_NAME]; + var NativePrototype = NativeConstructor && NativeConstructor.prototype; + var Constructor = NativeConstructor; + var exported = {}; + + var fixMethod = function (KEY) { + var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]); + defineBuiltIn(NativePrototype, KEY, + KEY === 'add' ? function add(value) { + uncurriedNativeMethod(this, value === 0 ? 0 : value); + return this; + } : KEY === 'delete' ? function (key) { + return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : KEY === 'get' ? function get(key) { + return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : KEY === 'has' ? function has(key) { + return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key); + } : function set(key, value) { + uncurriedNativeMethod(this, key === 0 ? 0 : key, value); + return this; + } + ); + }; + + var REPLACE = isForced( + CONSTRUCTOR_NAME, + !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () { + new NativeConstructor().entries().next(); + })) + ); + + if (REPLACE) { + // create collection constructor + Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); + InternalMetadataModule.enable(); + } else if (isForced(CONSTRUCTOR_NAME, true)) { + var instance = new Constructor(); + // early implementations not supports chaining + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) !== instance; + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); + // most early implementations doesn't supports iterables, most modern - not close it correctly + // eslint-disable-next-line no-new -- required for testing + var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); }); + // for early implementations -0 and +0 not the same + var BUGGY_ZERO = !IS_WEAK && fails(function () { + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new NativeConstructor(); + var index = 5; + while (index--) $instance[ADDER](index, index); + return !$instance.has(-0); + }); + + if (!ACCEPT_ITERABLES) { + Constructor = wrapper(function (dummy, iterable) { + anInstance(dummy, NativePrototype); + var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); + if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP }); + return that; + }); + Constructor.prototype = NativePrototype; + NativePrototype.constructor = Constructor; + } + + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + + if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); + + // weak collections should not contains .clear method + if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear; + } + + exported[CONSTRUCTOR_NAME] = Constructor; + $({ global: true, constructor: true, forced: Constructor !== NativeConstructor }, exported); + + setToStringTag(Constructor, CONSTRUCTOR_NAME); + + if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); + + return Constructor; +}; + +},{"../internals/an-instance":113,"../internals/check-correctness-of-iteration":136,"../internals/define-built-in":149,"../internals/export":170,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/global":188,"../internals/inherit-if-required":196,"../internals/internal-metadata":198,"../internals/is-callable":203,"../internals/is-forced":205,"../internals/is-null-or-undefined":207,"../internals/is-object":208,"../internals/iterate":213,"../internals/set-to-string-tag":266}],141:[function(require,module,exports){ +'use strict'; +var hasOwn = require('../internals/has-own-property'); +var ownKeys = require('../internals/own-keys'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); +var definePropertyModule = require('../internals/object-define-property'); + +module.exports = function (target, source, exceptions) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { + defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } + } +}; + +},{"../internals/has-own-property":189,"../internals/object-define-property":231,"../internals/object-get-own-property-descriptor":232,"../internals/own-keys":246}],142:[function(require,module,exports){ +'use strict'; +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var MATCH = wellKnownSymbol('match'); + +module.exports = function (METHOD_NAME) { + var regexp = /./; + try { + '/./'[METHOD_NAME](regexp); + } catch (error1) { + try { + regexp[MATCH] = false; + return '/./'[METHOD_NAME](regexp); + } catch (error2) { /* empty */ } + } return false; +}; + +},{"../internals/well-known-symbol":306}],143:[function(require,module,exports){ +'use strict'; +var fails = require('../internals/fails'); + +module.exports = !fails(function () { + function F() { /* empty */ } + F.prototype.constructor = null; + // eslint-disable-next-line es/no-object-getprototypeof -- required for testing + return Object.getPrototypeOf(new F()) !== F.prototype; +}); + +},{"../internals/fails":171}],144:[function(require,module,exports){ +'use strict'; +// `CreateIterResultObject` abstract operation +// https://tc39.es/ecma262/#sec-createiterresultobject +module.exports = function (value, done) { + return { value: value, done: done }; +}; + +},{}],145:[function(require,module,exports){ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var definePropertyModule = require('../internals/object-define-property'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); + +module.exports = DESCRIPTORS ? function (object, key, value) { + return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + +},{"../internals/create-property-descriptor":146,"../internals/descriptors":153,"../internals/object-define-property":231}],146:[function(require,module,exports){ +'use strict'; +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + +},{}],147:[function(require,module,exports){ +'use strict'; +var toPropertyKey = require('../internals/to-property-key'); +var definePropertyModule = require('../internals/object-define-property'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); + +module.exports = function (object, key, value) { + var propertyKey = toPropertyKey(key); + if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); + else object[propertyKey] = value; +}; + +},{"../internals/create-property-descriptor":146,"../internals/object-define-property":231,"../internals/to-property-key":289}],148:[function(require,module,exports){ +'use strict'; +var makeBuiltIn = require('../internals/make-built-in'); +var defineProperty = require('../internals/object-define-property'); + +module.exports = function (target, name, descriptor) { + if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true }); + if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true }); + return defineProperty.f(target, name, descriptor); +}; + +},{"../internals/make-built-in":220,"../internals/object-define-property":231}],149:[function(require,module,exports){ +'use strict'; +var isCallable = require('../internals/is-callable'); +var definePropertyModule = require('../internals/object-define-property'); +var makeBuiltIn = require('../internals/make-built-in'); +var defineGlobalProperty = require('../internals/define-global-property'); + +module.exports = function (O, key, value, options) { + if (!options) options = {}; + var simple = options.enumerable; + var name = options.name !== undefined ? options.name : key; + if (isCallable(value)) makeBuiltIn(value, name, options); + if (options.global) { + if (simple) O[key] = value; + else defineGlobalProperty(key, value); + } else { + try { + if (!options.unsafe) delete O[key]; + else if (O[key]) simple = true; + } catch (error) { /* empty */ } + if (simple) O[key] = value; + else definePropertyModule.f(O, key, { + value: value, + enumerable: false, + configurable: !options.nonConfigurable, + writable: !options.nonWritable + }); + } return O; +}; + +},{"../internals/define-global-property":151,"../internals/is-callable":203,"../internals/make-built-in":220,"../internals/object-define-property":231}],150:[function(require,module,exports){ +'use strict'; +var defineBuiltIn = require('../internals/define-built-in'); + +module.exports = function (target, src, options) { + for (var key in src) defineBuiltIn(target, key, src[key], options); + return target; +}; + +},{"../internals/define-built-in":149}],151:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); + +// eslint-disable-next-line es/no-object-defineproperty -- safe +var defineProperty = Object.defineProperty; + +module.exports = function (key, value) { + try { + defineProperty(global, key, { value: value, configurable: true, writable: true }); + } catch (error) { + global[key] = value; + } return value; +}; + +},{"../internals/global":188}],152:[function(require,module,exports){ +'use strict'; +var tryToString = require('../internals/try-to-string'); + +var $TypeError = TypeError; + +module.exports = function (O, P) { + if (!delete O[P]) throw new $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O)); +}; + +},{"../internals/try-to-string":293}],153:[function(require,module,exports){ +'use strict'; +var fails = require('../internals/fails'); + +// Detect IE8's incomplete defineProperty implementation +module.exports = !fails(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; +}); + +},{"../internals/fails":171}],154:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var isObject = require('../internals/is-object'); + +var document = global.document; +// typeof document.createElement is 'object' in old IE +var EXISTS = isObject(document) && isObject(document.createElement); + +module.exports = function (it) { + return EXISTS ? document.createElement(it) : {}; +}; + +},{"../internals/global":188,"../internals/is-object":208}],155:[function(require,module,exports){ +'use strict'; +var $TypeError = TypeError; +var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 + +module.exports = function (it) { + if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded'); + return it; +}; + +},{}],156:[function(require,module,exports){ +'use strict'; +// iterable DOM collections +// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods +module.exports = { + CSSRuleList: 0, + CSSStyleDeclaration: 0, + CSSValueList: 0, + ClientRectList: 0, + DOMRectList: 0, + DOMStringList: 0, + DOMTokenList: 1, + DataTransferItemList: 0, + FileList: 0, + HTMLAllCollection: 0, + HTMLCollection: 0, + HTMLFormElement: 0, + HTMLSelectElement: 0, + MediaList: 0, + MimeTypeArray: 0, + NamedNodeMap: 0, + NodeList: 1, + PaintRequestList: 0, + Plugin: 0, + PluginArray: 0, + SVGLengthList: 0, + SVGNumberList: 0, + SVGPathSegList: 0, + SVGPointList: 0, + SVGStringList: 0, + SVGTransformList: 0, + SourceBufferList: 0, + StyleSheetList: 0, + TextTrackCueList: 0, + TextTrackList: 0, + TouchList: 0 +}; + +},{}],157:[function(require,module,exports){ +'use strict'; +// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList` +var documentCreateElement = require('../internals/document-create-element'); + +var classList = documentCreateElement('span').classList; +var DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype; + +module.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype; + +},{"../internals/document-create-element":154}],158:[function(require,module,exports){ +'use strict'; +var userAgent = require('../internals/engine-user-agent'); + +var firefox = userAgent.match(/firefox\/(\d+)/i); + +module.exports = !!firefox && +firefox[1]; + +},{"../internals/engine-user-agent":166}],159:[function(require,module,exports){ +'use strict'; +var IS_DENO = require('../internals/engine-is-deno'); +var IS_NODE = require('../internals/engine-is-node'); + +module.exports = !IS_DENO && !IS_NODE + && typeof window == 'object' + && typeof document == 'object'; + +},{"../internals/engine-is-deno":160,"../internals/engine-is-node":164}],160:[function(require,module,exports){ +'use strict'; +/* global Deno -- Deno case */ +module.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object'; + +},{}],161:[function(require,module,exports){ +'use strict'; +var UA = require('../internals/engine-user-agent'); + +module.exports = /MSIE|Trident/.test(UA); + +},{"../internals/engine-user-agent":166}],162:[function(require,module,exports){ +'use strict'; +var userAgent = require('../internals/engine-user-agent'); + +module.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined'; + +},{"../internals/engine-user-agent":166}],163:[function(require,module,exports){ +'use strict'; +var userAgent = require('../internals/engine-user-agent'); + +// eslint-disable-next-line redos/no-vulnerable -- safe +module.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent); + +},{"../internals/engine-user-agent":166}],164:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var classof = require('../internals/classof-raw'); + +module.exports = classof(global.process) === 'process'; + +},{"../internals/classof-raw":137,"../internals/global":188}],165:[function(require,module,exports){ +'use strict'; +var userAgent = require('../internals/engine-user-agent'); + +module.exports = /web0s(?!.*chrome)/i.test(userAgent); + +},{"../internals/engine-user-agent":166}],166:[function(require,module,exports){ +'use strict'; +module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || ''; + +},{}],167:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var userAgent = require('../internals/engine-user-agent'); + +var process = global.process; +var Deno = global.Deno; +var versions = process && process.versions || Deno && Deno.version; +var v8 = versions && versions.v8; +var match, version; + +if (v8) { + match = v8.split('.'); + // in old Chrome, versions of V8 isn't V8 = Chrome / 10 + // but their correct versions are not interesting for us + version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); +} + +// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` +// so check `userAgent` even if `.v8` exists, but 0 +if (!version && userAgent) { + match = userAgent.match(/Edge\/(\d+)/); + if (!match || match[1] >= 74) { + match = userAgent.match(/Chrome\/(\d+)/); + if (match) version = +match[1]; + } +} + +module.exports = version; + +},{"../internals/engine-user-agent":166,"../internals/global":188}],168:[function(require,module,exports){ +'use strict'; +var userAgent = require('../internals/engine-user-agent'); + +var webkit = userAgent.match(/AppleWebKit\/(\d+)\./); + +module.exports = !!webkit && +webkit[1]; + +},{"../internals/engine-user-agent":166}],169:[function(require,module,exports){ +'use strict'; +// IE8- don't enum bug keys +module.exports = [ + 'constructor', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'toLocaleString', + 'toString', + 'valueOf' +]; + +},{}],170:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var defineBuiltIn = require('../internals/define-built-in'); +var defineGlobalProperty = require('../internals/define-global-property'); +var copyConstructorProperties = require('../internals/copy-constructor-properties'); +var isForced = require('../internals/is-forced'); + +/* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.dontCallGetSet - prevent calling a getter on target + options.name - the .name of the function if it does not match the key +*/ +module.exports = function (options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global; + } else if (STATIC) { + target = global[TARGET] || defineGlobalProperty(TARGET, {}); + } else { + target = (global[TARGET] || {}).prototype; + } + if (target) for (key in source) { + sourceProperty = source[key]; + if (options.dontCallGetSet) { + descriptor = getOwnPropertyDescriptor(target, key); + targetProperty = descriptor && descriptor.value; + } else targetProperty = target[key]; + FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); + // contained in target + if (!FORCED && targetProperty !== undefined) { + if (typeof sourceProperty == typeof targetProperty) continue; + copyConstructorProperties(sourceProperty, targetProperty); + } + // add a flag to not completely full polyfills + if (options.sham || (targetProperty && targetProperty.sham)) { + createNonEnumerableProperty(sourceProperty, 'sham', true); + } + defineBuiltIn(target, key, sourceProperty, options); + } +}; + +},{"../internals/copy-constructor-properties":141,"../internals/create-non-enumerable-property":145,"../internals/define-built-in":149,"../internals/define-global-property":151,"../internals/global":188,"../internals/is-forced":205,"../internals/object-get-own-property-descriptor":232}],171:[function(require,module,exports){ +'use strict'; +module.exports = function (exec) { + try { + return !!exec(); + } catch (error) { + return true; + } +}; + +},{}],172:[function(require,module,exports){ +'use strict'; +// TODO: Remove from `core-js@4` since it's moved to entry points +require('../modules/es.regexp.exec'); +var uncurryThis = require('../internals/function-uncurry-this-clause'); +var defineBuiltIn = require('../internals/define-built-in'); +var regexpExec = require('../internals/regexp-exec'); +var fails = require('../internals/fails'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); + +var SPECIES = wellKnownSymbol('species'); +var RegExpPrototype = RegExp.prototype; + +module.exports = function (KEY, exec, FORCED, SHAM) { + var SYMBOL = wellKnownSymbol(KEY); + + var DELEGATES_TO_SYMBOL = !fails(function () { + // String methods call symbol-named RegEp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) !== 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + + if (KEY === 'split') { + // We can't use real regex here since it causes deoptimization + // and serious performance degradation in V8 + // https://github.com/zloirock/core-js/issues/306 + re = {}; + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES] = function () { return re; }; + re.flags = ''; + re[SYMBOL] = /./[SYMBOL]; + } + + re.exec = function () { + execCalled = true; + return null; + }; + + re[SYMBOL](''); + return !execCalled; + }); + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + FORCED + ) { + var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]); + var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { + var uncurriedNativeMethod = uncurryThis(nativeMethod); + var $exec = regexp.exec; + if ($exec === regexpExec || $exec === RegExpPrototype.exec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) }; + } + return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) }; + } + return { done: false }; + }); + + defineBuiltIn(String.prototype, KEY, methods[0]); + defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]); + } + + if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true); +}; + +},{"../internals/create-non-enumerable-property":145,"../internals/define-built-in":149,"../internals/fails":171,"../internals/function-uncurry-this-clause":180,"../internals/regexp-exec":256,"../internals/well-known-symbol":306,"../modules/es.regexp.exec":338}],173:[function(require,module,exports){ +'use strict'; +var fails = require('../internals/fails'); + +module.exports = !fails(function () { + // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing + return Object.isExtensible(Object.preventExtensions({})); +}); + +},{"../internals/fails":171}],174:[function(require,module,exports){ +'use strict'; +var NATIVE_BIND = require('../internals/function-bind-native'); + +var FunctionPrototype = Function.prototype; +var apply = FunctionPrototype.apply; +var call = FunctionPrototype.call; + +// eslint-disable-next-line es/no-reflect -- safe +module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () { + return call.apply(apply, arguments); +}); + +},{"../internals/function-bind-native":176}],175:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this-clause'); +var aCallable = require('../internals/a-callable'); +var NATIVE_BIND = require('../internals/function-bind-native'); + +var bind = uncurryThis(uncurryThis.bind); + +// optional / simple context binding +module.exports = function (fn, that) { + aCallable(fn); + return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; + +},{"../internals/a-callable":108,"../internals/function-bind-native":176,"../internals/function-uncurry-this-clause":180}],176:[function(require,module,exports){ +'use strict'; +var fails = require('../internals/fails'); + +module.exports = !fails(function () { + // eslint-disable-next-line es/no-function-prototype-bind -- safe + var test = (function () { /* empty */ }).bind(); + // eslint-disable-next-line no-prototype-builtins -- safe + return typeof test != 'function' || test.hasOwnProperty('prototype'); +}); + +},{"../internals/fails":171}],177:[function(require,module,exports){ +'use strict'; +var NATIVE_BIND = require('../internals/function-bind-native'); + +var call = Function.prototype.call; + +module.exports = NATIVE_BIND ? call.bind(call) : function () { + return call.apply(call, arguments); +}; + +},{"../internals/function-bind-native":176}],178:[function(require,module,exports){ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var hasOwn = require('../internals/has-own-property'); + +var FunctionPrototype = Function.prototype; +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; + +var EXISTS = hasOwn(FunctionPrototype, 'name'); +// additional protection from minified / mangled / dropped function names +var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; +var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable)); + +module.exports = { + EXISTS: EXISTS, + PROPER: PROPER, + CONFIGURABLE: CONFIGURABLE +}; + +},{"../internals/descriptors":153,"../internals/has-own-property":189}],179:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); +var aCallable = require('../internals/a-callable'); + +module.exports = function (object, key, method) { + try { + // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe + return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method])); + } catch (error) { /* empty */ } +}; + +},{"../internals/a-callable":108,"../internals/function-uncurry-this":181}],180:[function(require,module,exports){ +'use strict'; +var classofRaw = require('../internals/classof-raw'); +var uncurryThis = require('../internals/function-uncurry-this'); + +module.exports = function (fn) { + // Nashorn bug: + // https://github.com/zloirock/core-js/issues/1128 + // https://github.com/zloirock/core-js/issues/1130 + if (classofRaw(fn) === 'Function') return uncurryThis(fn); +}; + +},{"../internals/classof-raw":137,"../internals/function-uncurry-this":181}],181:[function(require,module,exports){ +'use strict'; +var NATIVE_BIND = require('../internals/function-bind-native'); + +var FunctionPrototype = Function.prototype; +var call = FunctionPrototype.call; +var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call); + +module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) { + return function () { + return call.apply(fn, arguments); + }; +}; + +},{"../internals/function-bind-native":176}],182:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var isCallable = require('../internals/is-callable'); + +var aFunction = function (argument) { + return isCallable(argument) ? argument : undefined; +}; + +module.exports = function (namespace, method) { + return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method]; +}; + +},{"../internals/global":188,"../internals/is-callable":203}],183:[function(require,module,exports){ +'use strict'; +var classof = require('../internals/classof'); +var getMethod = require('../internals/get-method'); +var isNullOrUndefined = require('../internals/is-null-or-undefined'); +var Iterators = require('../internals/iterators'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var ITERATOR = wellKnownSymbol('iterator'); + +module.exports = function (it) { + if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR) + || getMethod(it, '@@iterator') + || Iterators[classof(it)]; +}; + +},{"../internals/classof":138,"../internals/get-method":186,"../internals/is-null-or-undefined":207,"../internals/iterators":218,"../internals/well-known-symbol":306}],184:[function(require,module,exports){ +'use strict'; +var call = require('../internals/function-call'); +var aCallable = require('../internals/a-callable'); +var anObject = require('../internals/an-object'); +var tryToString = require('../internals/try-to-string'); +var getIteratorMethod = require('../internals/get-iterator-method'); + +var $TypeError = TypeError; + +module.exports = function (argument, usingIterator) { + var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator; + if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument)); + throw new $TypeError(tryToString(argument) + ' is not iterable'); +}; + +},{"../internals/a-callable":108,"../internals/an-object":114,"../internals/function-call":177,"../internals/get-iterator-method":183,"../internals/try-to-string":293}],185:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); +var isArray = require('../internals/is-array'); +var isCallable = require('../internals/is-callable'); +var classof = require('../internals/classof-raw'); +var toString = require('../internals/to-string'); + +var push = uncurryThis([].push); + +module.exports = function (replacer) { + if (isCallable(replacer)) return replacer; + if (!isArray(replacer)) return; + var rawLength = replacer.length; + var keys = []; + for (var i = 0; i < rawLength; i++) { + var element = replacer[i]; + if (typeof element == 'string') push(keys, element); + else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element)); + } + var keysLength = keys.length; + var root = true; + return function (key, value) { + if (root) { + root = false; + return value; + } + if (isArray(this)) return value; + for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value; + }; +}; + +},{"../internals/classof-raw":137,"../internals/function-uncurry-this":181,"../internals/is-array":201,"../internals/is-callable":203,"../internals/to-string":291}],186:[function(require,module,exports){ +'use strict'; +var aCallable = require('../internals/a-callable'); +var isNullOrUndefined = require('../internals/is-null-or-undefined'); + +// `GetMethod` abstract operation +// https://tc39.es/ecma262/#sec-getmethod +module.exports = function (V, P) { + var func = V[P]; + return isNullOrUndefined(func) ? undefined : aCallable(func); +}; + +},{"../internals/a-callable":108,"../internals/is-null-or-undefined":207}],187:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); +var toObject = require('../internals/to-object'); + +var floor = Math.floor; +var charAt = uncurryThis(''.charAt); +var replace = uncurryThis(''.replace); +var stringSlice = uncurryThis(''.slice); +// eslint-disable-next-line redos/no-vulnerable -- safe +var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g; +var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g; + +// `GetSubstitution` abstract operation +// https://tc39.es/ecma262/#sec-getsubstitution +module.exports = function (matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = toObject(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return replace(replacement, symbols, function (match, ch) { + var capture; + switch (charAt(ch, 0)) { + case '$': return '$'; + case '&': return matched; + case '`': return stringSlice(str, 0, position); + case "'": return stringSlice(str, tailPos); + case '<': + capture = namedCaptures[stringSlice(ch, 1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) return match; + if (n > m) { + var f = floor(n / 10); + if (f === 0) return match; + if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1); + return match; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); +}; + +},{"../internals/function-uncurry-this":181,"../internals/to-object":285}],188:[function(require,module,exports){ +(function (global){(function (){ +'use strict'; +var check = function (it) { + return it && it.Math === Math && it; +}; + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +module.exports = + // eslint-disable-next-line es/no-global-this -- safe + check(typeof globalThis == 'object' && globalThis) || + check(typeof window == 'object' && window) || + // eslint-disable-next-line no-restricted-globals -- safe + check(typeof self == 'object' && self) || + check(typeof global == 'object' && global) || + check(typeof this == 'object' && this) || + // eslint-disable-next-line no-new-func -- fallback + (function () { return this; })() || Function('return this')(); + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],189:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); +var toObject = require('../internals/to-object'); + +var hasOwnProperty = uncurryThis({}.hasOwnProperty); + +// `HasOwnProperty` abstract operation +// https://tc39.es/ecma262/#sec-hasownproperty +// eslint-disable-next-line es/no-object-hasown -- safe +module.exports = Object.hasOwn || function hasOwn(it, key) { + return hasOwnProperty(toObject(it), key); +}; + +},{"../internals/function-uncurry-this":181,"../internals/to-object":285}],190:[function(require,module,exports){ +'use strict'; +module.exports = {}; + +},{}],191:[function(require,module,exports){ +'use strict'; +module.exports = function (a, b) { + try { + // eslint-disable-next-line no-console -- safe + arguments.length === 1 ? console.error(a) : console.error(a, b); + } catch (error) { /* empty */ } +}; + +},{}],192:[function(require,module,exports){ +'use strict'; +var getBuiltIn = require('../internals/get-built-in'); + +module.exports = getBuiltIn('document', 'documentElement'); + +},{"../internals/get-built-in":182}],193:[function(require,module,exports){ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var fails = require('../internals/fails'); +var createElement = require('../internals/document-create-element'); + +// Thanks to IE8 for its funny defineProperty +module.exports = !DESCRIPTORS && !fails(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty(createElement('div'), 'a', { + get: function () { return 7; } + }).a !== 7; +}); + +},{"../internals/descriptors":153,"../internals/document-create-element":154,"../internals/fails":171}],194:[function(require,module,exports){ +'use strict'; +// IEEE754 conversions based on https://github.com/feross/ieee754 +var $Array = Array; +var abs = Math.abs; +var pow = Math.pow; +var floor = Math.floor; +var log = Math.log; +var LN2 = Math.LN2; + +var pack = function (number, mantissaLength, bytes) { + var buffer = $Array(bytes); + var exponentLength = bytes * 8 - mantissaLength - 1; + var eMax = (1 << exponentLength) - 1; + var eBias = eMax >> 1; + var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0; + var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0; + var index = 0; + var exponent, mantissa, c; + number = abs(number); + // eslint-disable-next-line no-self-compare -- NaN check + if (number !== number || number === Infinity) { + // eslint-disable-next-line no-self-compare -- NaN check + mantissa = number !== number ? 1 : 0; + exponent = eMax; + } else { + exponent = floor(log(number) / LN2); + c = pow(2, -exponent); + if (number * c < 1) { + exponent--; + c *= 2; + } + if (exponent + eBias >= 1) { + number += rt / c; + } else { + number += rt * pow(2, 1 - eBias); + } + if (number * c >= 2) { + exponent++; + c /= 2; + } + if (exponent + eBias >= eMax) { + mantissa = 0; + exponent = eMax; + } else if (exponent + eBias >= 1) { + mantissa = (number * c - 1) * pow(2, mantissaLength); + exponent += eBias; + } else { + mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength); + exponent = 0; + } + } + while (mantissaLength >= 8) { + buffer[index++] = mantissa & 255; + mantissa /= 256; + mantissaLength -= 8; + } + exponent = exponent << mantissaLength | mantissa; + exponentLength += mantissaLength; + while (exponentLength > 0) { + buffer[index++] = exponent & 255; + exponent /= 256; + exponentLength -= 8; + } + buffer[--index] |= sign * 128; + return buffer; +}; + +var unpack = function (buffer, mantissaLength) { + var bytes = buffer.length; + var exponentLength = bytes * 8 - mantissaLength - 1; + var eMax = (1 << exponentLength) - 1; + var eBias = eMax >> 1; + var nBits = exponentLength - 7; + var index = bytes - 1; + var sign = buffer[index--]; + var exponent = sign & 127; + var mantissa; + sign >>= 7; + while (nBits > 0) { + exponent = exponent * 256 + buffer[index--]; + nBits -= 8; + } + mantissa = exponent & (1 << -nBits) - 1; + exponent >>= -nBits; + nBits += mantissaLength; + while (nBits > 0) { + mantissa = mantissa * 256 + buffer[index--]; + nBits -= 8; + } + if (exponent === 0) { + exponent = 1 - eBias; + } else if (exponent === eMax) { + return mantissa ? NaN : sign ? -Infinity : Infinity; + } else { + mantissa += pow(2, mantissaLength); + exponent -= eBias; + } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength); +}; + +module.exports = { + pack: pack, + unpack: unpack +}; + +},{}],195:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); +var fails = require('../internals/fails'); +var classof = require('../internals/classof-raw'); + +var $Object = Object; +var split = uncurryThis(''.split); + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +module.exports = fails(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins -- safe + return !$Object('z').propertyIsEnumerable(0); +}) ? function (it) { + return classof(it) === 'String' ? split(it, '') : $Object(it); +} : $Object; + +},{"../internals/classof-raw":137,"../internals/fails":171,"../internals/function-uncurry-this":181}],196:[function(require,module,exports){ +'use strict'; +var isCallable = require('../internals/is-callable'); +var isObject = require('../internals/is-object'); +var setPrototypeOf = require('../internals/object-set-prototype-of'); + +// makes subclassing work correct for wrapped built-ins +module.exports = function ($this, dummy, Wrapper) { + var NewTarget, NewTargetPrototype; + if ( + // it can work only with native `setPrototypeOf` + setPrototypeOf && + // we haven't completely correct pre-ES6 way for getting `new.target`, so use this + isCallable(NewTarget = dummy.constructor) && + NewTarget !== Wrapper && + isObject(NewTargetPrototype = NewTarget.prototype) && + NewTargetPrototype !== Wrapper.prototype + ) setPrototypeOf($this, NewTargetPrototype); + return $this; +}; + +},{"../internals/is-callable":203,"../internals/is-object":208,"../internals/object-set-prototype-of":242}],197:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); +var isCallable = require('../internals/is-callable'); +var store = require('../internals/shared-store'); + +var functionToString = uncurryThis(Function.toString); + +// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper +if (!isCallable(store.inspectSource)) { + store.inspectSource = function (it) { + return functionToString(it); + }; +} + +module.exports = store.inspectSource; + +},{"../internals/function-uncurry-this":181,"../internals/is-callable":203,"../internals/shared-store":268}],198:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var uncurryThis = require('../internals/function-uncurry-this'); +var hiddenKeys = require('../internals/hidden-keys'); +var isObject = require('../internals/is-object'); +var hasOwn = require('../internals/has-own-property'); +var defineProperty = require('../internals/object-define-property').f; +var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names'); +var getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external'); +var isExtensible = require('../internals/object-is-extensible'); +var uid = require('../internals/uid'); +var FREEZING = require('../internals/freezing'); + +var REQUIRED = false; +var METADATA = uid('meta'); +var id = 0; + +var setMetadata = function (it) { + defineProperty(it, METADATA, { value: { + objectID: 'O' + id++, // object ID + weakData: {} // weak collections IDs + } }); +}; + +var fastKey = function (it, create) { + // return a primitive with prefix + if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!hasOwn(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return 'F'; + // not necessary to add metadata + if (!create) return 'E'; + // add missing metadata + setMetadata(it); + // return object ID + } return it[METADATA].objectID; +}; + +var getWeakData = function (it, create) { + if (!hasOwn(it, METADATA)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return true; + // not necessary to add metadata + if (!create) return false; + // add missing metadata + setMetadata(it); + // return the store of weak collections IDs + } return it[METADATA].weakData; +}; + +// add metadata on freeze-family methods calling +var onFreeze = function (it) { + if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it); + return it; +}; + +var enable = function () { + meta.enable = function () { /* empty */ }; + REQUIRED = true; + var getOwnPropertyNames = getOwnPropertyNamesModule.f; + var splice = uncurryThis([].splice); + var test = {}; + test[METADATA] = 1; + + // prevent exposing of metadata key + if (getOwnPropertyNames(test).length) { + getOwnPropertyNamesModule.f = function (it) { + var result = getOwnPropertyNames(it); + for (var i = 0, length = result.length; i < length; i++) { + if (result[i] === METADATA) { + splice(result, i, 1); + break; + } + } return result; + }; + + $({ target: 'Object', stat: true, forced: true }, { + getOwnPropertyNames: getOwnPropertyNamesExternalModule.f + }); + } +}; + +var meta = module.exports = { + enable: enable, + fastKey: fastKey, + getWeakData: getWeakData, + onFreeze: onFreeze +}; + +hiddenKeys[METADATA] = true; + +},{"../internals/export":170,"../internals/freezing":173,"../internals/function-uncurry-this":181,"../internals/has-own-property":189,"../internals/hidden-keys":190,"../internals/is-object":208,"../internals/object-define-property":231,"../internals/object-get-own-property-names":234,"../internals/object-get-own-property-names-external":233,"../internals/object-is-extensible":237,"../internals/uid":299}],199:[function(require,module,exports){ +'use strict'; +var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection'); +var global = require('../internals/global'); +var isObject = require('../internals/is-object'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var hasOwn = require('../internals/has-own-property'); +var shared = require('../internals/shared-store'); +var sharedKey = require('../internals/shared-key'); +var hiddenKeys = require('../internals/hidden-keys'); + +var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; +var TypeError = global.TypeError; +var WeakMap = global.WeakMap; +var set, get, has; + +var enforce = function (it) { + return has(it) ? get(it) : set(it, {}); +}; + +var getterFor = function (TYPE) { + return function (it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw new TypeError('Incompatible receiver, ' + TYPE + ' required'); + } return state; + }; +}; + +if (NATIVE_WEAK_MAP || shared.state) { + var store = shared.state || (shared.state = new WeakMap()); + /* eslint-disable no-self-assign -- prototype methods protection */ + store.get = store.get; + store.has = store.has; + store.set = store.set; + /* eslint-enable no-self-assign -- prototype methods protection */ + set = function (it, metadata) { + if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + store.set(it, metadata); + return metadata; + }; + get = function (it) { + return store.get(it) || {}; + }; + has = function (it) { + return store.has(it); + }; +} else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + set = function (it, metadata) { + if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); + metadata.facade = it; + createNonEnumerableProperty(it, STATE, metadata); + return metadata; + }; + get = function (it) { + return hasOwn(it, STATE) ? it[STATE] : {}; + }; + has = function (it) { + return hasOwn(it, STATE); + }; +} + +module.exports = { + set: set, + get: get, + has: has, + enforce: enforce, + getterFor: getterFor +}; + +},{"../internals/create-non-enumerable-property":145,"../internals/global":188,"../internals/has-own-property":189,"../internals/hidden-keys":190,"../internals/is-object":208,"../internals/shared-key":267,"../internals/shared-store":268,"../internals/weak-map-basic-detection":303}],200:[function(require,module,exports){ +'use strict'; +var wellKnownSymbol = require('../internals/well-known-symbol'); +var Iterators = require('../internals/iterators'); + +var ITERATOR = wellKnownSymbol('iterator'); +var ArrayPrototype = Array.prototype; + +// check on default Array iterator +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); +}; + +},{"../internals/iterators":218,"../internals/well-known-symbol":306}],201:[function(require,module,exports){ +'use strict'; +var classof = require('../internals/classof-raw'); + +// `IsArray` abstract operation +// https://tc39.es/ecma262/#sec-isarray +// eslint-disable-next-line es/no-array-isarray -- safe +module.exports = Array.isArray || function isArray(argument) { + return classof(argument) === 'Array'; +}; + +},{"../internals/classof-raw":137}],202:[function(require,module,exports){ +'use strict'; +var classof = require('../internals/classof'); + +module.exports = function (it) { + var klass = classof(it); + return klass === 'BigInt64Array' || klass === 'BigUint64Array'; +}; + +},{"../internals/classof":138}],203:[function(require,module,exports){ +'use strict'; +// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot +var documentAll = typeof document == 'object' && document.all; + +// `IsCallable` abstract operation +// https://tc39.es/ecma262/#sec-iscallable +// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing +module.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { + return typeof argument == 'function' || argument === documentAll; +} : function (argument) { + return typeof argument == 'function'; +}; + +},{}],204:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); +var fails = require('../internals/fails'); +var isCallable = require('../internals/is-callable'); +var classof = require('../internals/classof'); +var getBuiltIn = require('../internals/get-built-in'); +var inspectSource = require('../internals/inspect-source'); + +var noop = function () { /* empty */ }; +var empty = []; +var construct = getBuiltIn('Reflect', 'construct'); +var constructorRegExp = /^\s*(?:class|function)\b/; +var exec = uncurryThis(constructorRegExp.exec); +var INCORRECT_TO_STRING = !constructorRegExp.test(noop); + +var isConstructorModern = function isConstructor(argument) { + if (!isCallable(argument)) return false; + try { + construct(noop, empty, argument); + return true; + } catch (error) { + return false; + } +}; + +var isConstructorLegacy = function isConstructor(argument) { + if (!isCallable(argument)) return false; + switch (classof(argument)) { + case 'AsyncFunction': + case 'GeneratorFunction': + case 'AsyncGeneratorFunction': return false; + } + try { + // we can't check .prototype since constructors produced by .bind haven't it + // `Function#toString` throws on some built-it function in some legacy engines + // (for example, `DOMQuad` and similar in FF41-) + return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument)); + } catch (error) { + return true; + } +}; + +isConstructorLegacy.sham = true; + +// `IsConstructor` abstract operation +// https://tc39.es/ecma262/#sec-isconstructor +module.exports = !construct || fails(function () { + var called; + return isConstructorModern(isConstructorModern.call) + || !isConstructorModern(Object) + || !isConstructorModern(function () { called = true; }) + || called; +}) ? isConstructorLegacy : isConstructorModern; + +},{"../internals/classof":138,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/get-built-in":182,"../internals/inspect-source":197,"../internals/is-callable":203}],205:[function(require,module,exports){ +'use strict'; +var fails = require('../internals/fails'); +var isCallable = require('../internals/is-callable'); + +var replacement = /#|\.prototype\./; + +var isForced = function (feature, detection) { + var value = data[normalize(feature)]; + return value === POLYFILL ? true + : value === NATIVE ? false + : isCallable(detection) ? fails(detection) + : !!detection; +}; + +var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); +}; + +var data = isForced.data = {}; +var NATIVE = isForced.NATIVE = 'N'; +var POLYFILL = isForced.POLYFILL = 'P'; + +module.exports = isForced; + +},{"../internals/fails":171,"../internals/is-callable":203}],206:[function(require,module,exports){ +'use strict'; +var isObject = require('../internals/is-object'); + +var floor = Math.floor; + +// `IsIntegralNumber` abstract operation +// https://tc39.es/ecma262/#sec-isintegralnumber +// eslint-disable-next-line es/no-number-isinteger -- safe +module.exports = Number.isInteger || function isInteger(it) { + return !isObject(it) && isFinite(it) && floor(it) === it; +}; + +},{"../internals/is-object":208}],207:[function(require,module,exports){ +'use strict'; +// we can't use just `it == null` since of `document.all` special case +// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec +module.exports = function (it) { + return it === null || it === undefined; +}; + +},{}],208:[function(require,module,exports){ +'use strict'; +var isCallable = require('../internals/is-callable'); + +module.exports = function (it) { + return typeof it == 'object' ? it !== null : isCallable(it); +}; + +},{"../internals/is-callable":203}],209:[function(require,module,exports){ +'use strict'; +var isObject = require('../internals/is-object'); + +module.exports = function (argument) { + return isObject(argument) || argument === null; +}; + +},{"../internals/is-object":208}],210:[function(require,module,exports){ +'use strict'; +module.exports = false; + +},{}],211:[function(require,module,exports){ +'use strict'; +var isObject = require('../internals/is-object'); +var classof = require('../internals/classof-raw'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var MATCH = wellKnownSymbol('match'); + +// `IsRegExp` abstract operation +// https://tc39.es/ecma262/#sec-isregexp +module.exports = function (it) { + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp'); +}; + +},{"../internals/classof-raw":137,"../internals/is-object":208,"../internals/well-known-symbol":306}],212:[function(require,module,exports){ +'use strict'; +var getBuiltIn = require('../internals/get-built-in'); +var isCallable = require('../internals/is-callable'); +var isPrototypeOf = require('../internals/object-is-prototype-of'); +var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid'); + +var $Object = Object; + +module.exports = USE_SYMBOL_AS_UID ? function (it) { + return typeof it == 'symbol'; +} : function (it) { + var $Symbol = getBuiltIn('Symbol'); + return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it)); +}; + +},{"../internals/get-built-in":182,"../internals/is-callable":203,"../internals/object-is-prototype-of":238,"../internals/use-symbol-as-uid":300}],213:[function(require,module,exports){ +'use strict'; +var bind = require('../internals/function-bind-context'); +var call = require('../internals/function-call'); +var anObject = require('../internals/an-object'); +var tryToString = require('../internals/try-to-string'); +var isArrayIteratorMethod = require('../internals/is-array-iterator-method'); +var lengthOfArrayLike = require('../internals/length-of-array-like'); +var isPrototypeOf = require('../internals/object-is-prototype-of'); +var getIterator = require('../internals/get-iterator'); +var getIteratorMethod = require('../internals/get-iterator-method'); +var iteratorClose = require('../internals/iterator-close'); + +var $TypeError = TypeError; + +var Result = function (stopped, result) { + this.stopped = stopped; + this.result = result; +}; + +var ResultPrototype = Result.prototype; + +module.exports = function (iterable, unboundFunction, options) { + var that = options && options.that; + var AS_ENTRIES = !!(options && options.AS_ENTRIES); + var IS_RECORD = !!(options && options.IS_RECORD); + var IS_ITERATOR = !!(options && options.IS_ITERATOR); + var INTERRUPTED = !!(options && options.INTERRUPTED); + var fn = bind(unboundFunction, that); + var iterator, iterFn, index, length, result, next, step; + + var stop = function (condition) { + if (iterator) iteratorClose(iterator, 'normal', condition); + return new Result(true, condition); + }; + + var callFn = function (value) { + if (AS_ENTRIES) { + anObject(value); + return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]); + } return INTERRUPTED ? fn(value, stop) : fn(value); + }; + + if (IS_RECORD) { + iterator = iterable.iterator; + } else if (IS_ITERATOR) { + iterator = iterable; + } else { + iterFn = getIteratorMethod(iterable); + if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable'); + // optimisation for array iterators + if (isArrayIteratorMethod(iterFn)) { + for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) { + result = callFn(iterable[index]); + if (result && isPrototypeOf(ResultPrototype, result)) return result; + } return new Result(false); + } + iterator = getIterator(iterable, iterFn); + } + + next = IS_RECORD ? iterable.next : iterator.next; + while (!(step = call(next, iterator)).done) { + try { + result = callFn(step.value); + } catch (error) { + iteratorClose(iterator, 'throw', error); + } + if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result; + } return new Result(false); +}; + +},{"../internals/an-object":114,"../internals/function-bind-context":175,"../internals/function-call":177,"../internals/get-iterator":184,"../internals/get-iterator-method":183,"../internals/is-array-iterator-method":200,"../internals/iterator-close":214,"../internals/length-of-array-like":219,"../internals/object-is-prototype-of":238,"../internals/try-to-string":293}],214:[function(require,module,exports){ +'use strict'; +var call = require('../internals/function-call'); +var anObject = require('../internals/an-object'); +var getMethod = require('../internals/get-method'); + +module.exports = function (iterator, kind, value) { + var innerResult, innerError; + anObject(iterator); + try { + innerResult = getMethod(iterator, 'return'); + if (!innerResult) { + if (kind === 'throw') throw value; + return value; + } + innerResult = call(innerResult, iterator); + } catch (error) { + innerError = true; + innerResult = error; + } + if (kind === 'throw') throw value; + if (innerError) throw innerResult; + anObject(innerResult); + return value; +}; + +},{"../internals/an-object":114,"../internals/function-call":177,"../internals/get-method":186}],215:[function(require,module,exports){ +'use strict'; +var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype; +var create = require('../internals/object-create'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); +var setToStringTag = require('../internals/set-to-string-tag'); +var Iterators = require('../internals/iterators'); + +var returnThis = function () { return this; }; + +module.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) { + var TO_STRING_TAG = NAME + ' Iterator'; + IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); + Iterators[TO_STRING_TAG] = returnThis; + return IteratorConstructor; +}; + +},{"../internals/create-property-descriptor":146,"../internals/iterators":218,"../internals/iterators-core":217,"../internals/object-create":229,"../internals/set-to-string-tag":266}],216:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var call = require('../internals/function-call'); +var IS_PURE = require('../internals/is-pure'); +var FunctionName = require('../internals/function-name'); +var isCallable = require('../internals/is-callable'); +var createIteratorConstructor = require('../internals/iterator-create-constructor'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var setPrototypeOf = require('../internals/object-set-prototype-of'); +var setToStringTag = require('../internals/set-to-string-tag'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var defineBuiltIn = require('../internals/define-built-in'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var Iterators = require('../internals/iterators'); +var IteratorsCore = require('../internals/iterators-core'); + +var PROPER_FUNCTION_NAME = FunctionName.PROPER; +var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE; +var IteratorPrototype = IteratorsCore.IteratorPrototype; +var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; +var ITERATOR = wellKnownSymbol('iterator'); +var KEYS = 'keys'; +var VALUES = 'values'; +var ENTRIES = 'entries'; + +var returnThis = function () { return this; }; + +module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + + var getIterationMethod = function (KIND) { + if (KIND === DEFAULT && defaultIterator) return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND]; + + switch (KIND) { + case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; + case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; + case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; + } + + return function () { return new IteratorConstructor(this); }; + }; + + var TO_STRING_TAG = NAME + ' Iterator'; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR] + || IterablePrototype['@@iterator'] + || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + + // fix native + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); + if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf) { + setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); + } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) { + defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis); + } + } + // Set @@toStringTag to native iterators + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); + if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; + } + } + + // fix Array.prototype.{ values, @@iterator }.name in V8 / FF + if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) { + if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) { + createNonEnumerableProperty(IterablePrototype, 'name', VALUES); + } else { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { return call(nativeIterator, this); }; + } + } + + // export additional methods + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + defineBuiltIn(IterablePrototype, KEY, methods[KEY]); + } + } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + + // define iterator + if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { + defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT }); + } + Iterators[NAME] = defaultIterator; + + return methods; +}; + +},{"../internals/create-non-enumerable-property":145,"../internals/define-built-in":149,"../internals/export":170,"../internals/function-call":177,"../internals/function-name":178,"../internals/is-callable":203,"../internals/is-pure":210,"../internals/iterator-create-constructor":215,"../internals/iterators":218,"../internals/iterators-core":217,"../internals/object-get-prototype-of":236,"../internals/object-set-prototype-of":242,"../internals/set-to-string-tag":266,"../internals/well-known-symbol":306}],217:[function(require,module,exports){ +'use strict'; +var fails = require('../internals/fails'); +var isCallable = require('../internals/is-callable'); +var isObject = require('../internals/is-object'); +var create = require('../internals/object-create'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var defineBuiltIn = require('../internals/define-built-in'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var IS_PURE = require('../internals/is-pure'); + +var ITERATOR = wellKnownSymbol('iterator'); +var BUGGY_SAFARI_ITERATORS = false; + +// `%IteratorPrototype%` object +// https://tc39.es/ecma262/#sec-%iteratorprototype%-object +var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; + +/* eslint-disable es/no-array-prototype-keys -- safe */ +if ([].keys) { + arrayIterator = [].keys(); + // Safari 8 has buggy iterators w/o `next` + if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; + } +} + +var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () { + var test = {}; + // FF44- legacy iterators case + return IteratorPrototype[ITERATOR].call(test) !== test; +}); + +if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {}; +else if (IS_PURE) IteratorPrototype = create(IteratorPrototype); + +// `%IteratorPrototype%[@@iterator]()` method +// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator +if (!isCallable(IteratorPrototype[ITERATOR])) { + defineBuiltIn(IteratorPrototype, ITERATOR, function () { + return this; + }); +} + +module.exports = { + IteratorPrototype: IteratorPrototype, + BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS +}; + +},{"../internals/define-built-in":149,"../internals/fails":171,"../internals/is-callable":203,"../internals/is-object":208,"../internals/is-pure":210,"../internals/object-create":229,"../internals/object-get-prototype-of":236,"../internals/well-known-symbol":306}],218:[function(require,module,exports){ +arguments[4][190][0].apply(exports,arguments) +},{"dup":190}],219:[function(require,module,exports){ +'use strict'; +var toLength = require('../internals/to-length'); + +// `LengthOfArrayLike` abstract operation +// https://tc39.es/ecma262/#sec-lengthofarraylike +module.exports = function (obj) { + return toLength(obj.length); +}; + +},{"../internals/to-length":284}],220:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); +var fails = require('../internals/fails'); +var isCallable = require('../internals/is-callable'); +var hasOwn = require('../internals/has-own-property'); +var DESCRIPTORS = require('../internals/descriptors'); +var CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE; +var inspectSource = require('../internals/inspect-source'); +var InternalStateModule = require('../internals/internal-state'); + +var enforceInternalState = InternalStateModule.enforce; +var getInternalState = InternalStateModule.get; +var $String = String; +// eslint-disable-next-line es/no-object-defineproperty -- safe +var defineProperty = Object.defineProperty; +var stringSlice = uncurryThis(''.slice); +var replace = uncurryThis(''.replace); +var join = uncurryThis([].join); + +var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () { + return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; +}); + +var TEMPLATE = String(String).split('String'); + +var makeBuiltIn = module.exports = function (value, name, options) { + if (stringSlice($String(name), 0, 7) === 'Symbol(') { + name = '[' + replace($String(name), /^Symbol\(([^)]*)\)/, '$1') + ']'; + } + if (options && options.getter) name = 'get ' + name; + if (options && options.setter) name = 'set ' + name; + if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { + if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true }); + else value.name = name; + } + if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) { + defineProperty(value, 'length', { value: options.arity }); + } + try { + if (options && hasOwn(options, 'constructor') && options.constructor) { + if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false }); + // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable + } else if (value.prototype) value.prototype = undefined; + } catch (error) { /* empty */ } + var state = enforceInternalState(value); + if (!hasOwn(state, 'source')) { + state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); + } return value; +}; + +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +// eslint-disable-next-line no-extend-native -- required +Function.prototype.toString = makeBuiltIn(function toString() { + return isCallable(this) && getInternalState(this).source || inspectSource(this); +}, 'toString'); + +},{"../internals/descriptors":153,"../internals/fails":171,"../internals/function-name":178,"../internals/function-uncurry-this":181,"../internals/has-own-property":189,"../internals/inspect-source":197,"../internals/internal-state":199,"../internals/is-callable":203}],221:[function(require,module,exports){ +'use strict'; +var sign = require('../internals/math-sign'); + +var abs = Math.abs; + +var EPSILON = 2.220446049250313e-16; // Number.EPSILON +var INVERSE_EPSILON = 1 / EPSILON; + +var roundTiesToEven = function (n) { + return n + INVERSE_EPSILON - INVERSE_EPSILON; +}; + +module.exports = function (x, FLOAT_EPSILON, FLOAT_MAX_VALUE, FLOAT_MIN_VALUE) { + var n = +x; + var absolute = abs(n); + var s = sign(n); + if (absolute < FLOAT_MIN_VALUE) return s * roundTiesToEven(absolute / FLOAT_MIN_VALUE / FLOAT_EPSILON) * FLOAT_MIN_VALUE * FLOAT_EPSILON; + var a = (1 + FLOAT_EPSILON / EPSILON) * absolute; + var result = a - (a - absolute); + // eslint-disable-next-line no-self-compare -- NaN check + if (result > FLOAT_MAX_VALUE || result !== result) return s * Infinity; + return s * result; +}; + +},{"../internals/math-sign":223}],222:[function(require,module,exports){ +'use strict'; +var floatRound = require('../internals/math-float-round'); + +var FLOAT32_EPSILON = 1.1920928955078125e-7; // 2 ** -23; +var FLOAT32_MAX_VALUE = 3.4028234663852886e+38; // 2 ** 128 - 2 ** 104 +var FLOAT32_MIN_VALUE = 1.1754943508222875e-38; // 2 ** -126; + +// `Math.fround` method implementation +// https://tc39.es/ecma262/#sec-math.fround +// eslint-disable-next-line es/no-math-fround -- safe +module.exports = Math.fround || function fround(x) { + return floatRound(x, FLOAT32_EPSILON, FLOAT32_MAX_VALUE, FLOAT32_MIN_VALUE); +}; + +},{"../internals/math-float-round":221}],223:[function(require,module,exports){ +'use strict'; +// `Math.sign` method implementation +// https://tc39.es/ecma262/#sec-math.sign +// eslint-disable-next-line es/no-math-sign -- safe +module.exports = Math.sign || function sign(x) { + var n = +x; + // eslint-disable-next-line no-self-compare -- NaN check + return n === 0 || n !== n ? n : n < 0 ? -1 : 1; +}; + +},{}],224:[function(require,module,exports){ +'use strict'; +var ceil = Math.ceil; +var floor = Math.floor; + +// `Math.trunc` method +// https://tc39.es/ecma262/#sec-math.trunc +// eslint-disable-next-line es/no-math-trunc -- safe +module.exports = Math.trunc || function trunc(x) { + var n = +x; + return (n > 0 ? floor : ceil)(n); +}; + +},{}],225:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var safeGetBuiltIn = require('../internals/safe-get-built-in'); +var bind = require('../internals/function-bind-context'); +var macrotask = require('../internals/task').set; +var Queue = require('../internals/queue'); +var IS_IOS = require('../internals/engine-is-ios'); +var IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble'); +var IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit'); +var IS_NODE = require('../internals/engine-is-node'); + +var MutationObserver = global.MutationObserver || global.WebKitMutationObserver; +var document = global.document; +var process = global.process; +var Promise = global.Promise; +var microtask = safeGetBuiltIn('queueMicrotask'); +var notify, toggle, node, promise, then; + +// modern engines have queueMicrotask method +if (!microtask) { + var queue = new Queue(); + + var flush = function () { + var parent, fn; + if (IS_NODE && (parent = process.domain)) parent.exit(); + while (fn = queue.get()) try { + fn(); + } catch (error) { + if (queue.head) notify(); + throw error; + } + if (parent) parent.enter(); + }; + + // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 + // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898 + if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) { + toggle = true; + node = document.createTextNode(''); + new MutationObserver(flush).observe(node, { characterData: true }); + notify = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + promise = Promise.resolve(undefined); + // workaround of WebKit ~ iOS Safari 10.1 bug + promise.constructor = Promise; + then = bind(promise.then, promise); + notify = function () { + then(flush); + }; + // Node.js without promises + } else if (IS_NODE) { + notify = function () { + process.nextTick(flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessage + // - onreadystatechange + // - setTimeout + } else { + // `webpack` dev server bug on IE global methods - use bind(fn, global) + macrotask = bind(macrotask, global); + notify = function () { + macrotask(flush); + }; + } + + microtask = function (fn) { + if (!queue.head) notify(); + queue.add(fn); + }; +} + +module.exports = microtask; + +},{"../internals/engine-is-ios":163,"../internals/engine-is-ios-pebble":162,"../internals/engine-is-node":164,"../internals/engine-is-webos-webkit":165,"../internals/function-bind-context":175,"../internals/global":188,"../internals/queue":254,"../internals/safe-get-built-in":263,"../internals/task":277}],226:[function(require,module,exports){ +'use strict'; +var aCallable = require('../internals/a-callable'); + +var $TypeError = TypeError; + +var PromiseCapability = function (C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aCallable(resolve); + this.reject = aCallable(reject); +}; + +// `NewPromiseCapability` abstract operation +// https://tc39.es/ecma262/#sec-newpromisecapability +module.exports.f = function (C) { + return new PromiseCapability(C); +}; + +},{"../internals/a-callable":108}],227:[function(require,module,exports){ +'use strict'; +var isRegExp = require('../internals/is-regexp'); + +var $TypeError = TypeError; + +module.exports = function (it) { + if (isRegExp(it)) { + throw new $TypeError("The method doesn't accept regular expressions"); + } return it; +}; + +},{"../internals/is-regexp":211}],228:[function(require,module,exports){ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var uncurryThis = require('../internals/function-uncurry-this'); +var call = require('../internals/function-call'); +var fails = require('../internals/fails'); +var objectKeys = require('../internals/object-keys'); +var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols'); +var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable'); +var toObject = require('../internals/to-object'); +var IndexedObject = require('../internals/indexed-object'); + +// eslint-disable-next-line es/no-object-assign -- safe +var $assign = Object.assign; +// eslint-disable-next-line es/no-object-defineproperty -- required for testing +var defineProperty = Object.defineProperty; +var concat = uncurryThis([].concat); + +// `Object.assign` method +// https://tc39.es/ecma262/#sec-object.assign +module.exports = !$assign || fails(function () { + // should have correct order of operations (Edge bug) + if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', { + enumerable: true, + get: function () { + defineProperty(this, 'b', { + value: 3, + enumerable: false + }); + } + }), { b: 2 })).b !== 1) return true; + // should work with symbols and should have deterministic property order (V8 bug) + var A = {}; + var B = {}; + // eslint-disable-next-line es/no-symbol -- safe + var symbol = Symbol('assign detection'); + var alphabet = 'abcdefghijklmnopqrst'; + A[symbol] = 7; + alphabet.split('').forEach(function (chr) { B[chr] = chr; }); + return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet; +}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` + var T = toObject(target); + var argumentsLength = arguments.length; + var index = 1; + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + var propertyIsEnumerable = propertyIsEnumerableModule.f; + while (argumentsLength > index) { + var S = IndexedObject(arguments[index++]); + var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) { + key = keys[j++]; + if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key]; + } + } return T; +} : $assign; + +},{"../internals/descriptors":153,"../internals/fails":171,"../internals/function-call":177,"../internals/function-uncurry-this":181,"../internals/indexed-object":195,"../internals/object-get-own-property-symbols":235,"../internals/object-keys":240,"../internals/object-property-is-enumerable":241,"../internals/to-object":285}],229:[function(require,module,exports){ +'use strict'; +/* global ActiveXObject -- old IE, WSH */ +var anObject = require('../internals/an-object'); +var definePropertiesModule = require('../internals/object-define-properties'); +var enumBugKeys = require('../internals/enum-bug-keys'); +var hiddenKeys = require('../internals/hidden-keys'); +var html = require('../internals/html'); +var documentCreateElement = require('../internals/document-create-element'); +var sharedKey = require('../internals/shared-key'); + +var GT = '>'; +var LT = '<'; +var PROTOTYPE = 'prototype'; +var SCRIPT = 'script'; +var IE_PROTO = sharedKey('IE_PROTO'); + +var EmptyConstructor = function () { /* empty */ }; + +var scriptTag = function (content) { + return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; +}; + +// Create object with fake `null` prototype: use ActiveX Object with cleared prototype +var NullProtoObjectViaActiveX = function (activeXDocument) { + activeXDocument.write(scriptTag('')); + activeXDocument.close(); + var temp = activeXDocument.parentWindow.Object; + activeXDocument = null; // avoid memory leak + return temp; +}; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var NullProtoObjectViaIFrame = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = documentCreateElement('iframe'); + var JS = 'java' + SCRIPT + ':'; + var iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + // https://github.com/zloirock/core-js/issues/475 + iframe.src = String(JS); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(scriptTag('document.F=Object')); + iframeDocument.close(); + return iframeDocument.F; +}; + +// Check for document.domain and active x support +// No need to use active x approach when document.domain is not set +// see https://github.com/es-shims/es5-shim/issues/150 +// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 +// avoid IE GC bug +var activeXDocument; +var NullProtoObject = function () { + try { + activeXDocument = new ActiveXObject('htmlfile'); + } catch (error) { /* ignore */ } + NullProtoObject = typeof document != 'undefined' + ? document.domain && activeXDocument + ? NullProtoObjectViaActiveX(activeXDocument) // old IE + : NullProtoObjectViaIFrame() + : NullProtoObjectViaActiveX(activeXDocument); // WSH + var length = enumBugKeys.length; + while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; + return NullProtoObject(); +}; + +hiddenKeys[IE_PROTO] = true; + +// `Object.create` method +// https://tc39.es/ecma262/#sec-object.create +// eslint-disable-next-line es/no-object-create -- safe +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + EmptyConstructor[PROTOTYPE] = anObject(O); + result = new EmptyConstructor(); + EmptyConstructor[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = NullProtoObject(); + return Properties === undefined ? result : definePropertiesModule.f(result, Properties); +}; + +},{"../internals/an-object":114,"../internals/document-create-element":154,"../internals/enum-bug-keys":169,"../internals/hidden-keys":190,"../internals/html":192,"../internals/object-define-properties":230,"../internals/shared-key":267}],230:[function(require,module,exports){ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug'); +var definePropertyModule = require('../internals/object-define-property'); +var anObject = require('../internals/an-object'); +var toIndexedObject = require('../internals/to-indexed-object'); +var objectKeys = require('../internals/object-keys'); + +// `Object.defineProperties` method +// https://tc39.es/ecma262/#sec-object.defineproperties +// eslint-disable-next-line es/no-object-defineproperties -- safe +exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var props = toIndexedObject(Properties); + var keys = objectKeys(Properties); + var length = keys.length; + var index = 0; + var key; + while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); + return O; +}; + +},{"../internals/an-object":114,"../internals/descriptors":153,"../internals/object-define-property":231,"../internals/object-keys":240,"../internals/to-indexed-object":282,"../internals/v8-prototype-define-bug":301}],231:[function(require,module,exports){ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var IE8_DOM_DEFINE = require('../internals/ie8-dom-define'); +var V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug'); +var anObject = require('../internals/an-object'); +var toPropertyKey = require('../internals/to-property-key'); + +var $TypeError = TypeError; +// eslint-disable-next-line es/no-object-defineproperty -- safe +var $defineProperty = Object.defineProperty; +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; +var ENUMERABLE = 'enumerable'; +var CONFIGURABLE = 'configurable'; +var WRITABLE = 'writable'; + +// `Object.defineProperty` method +// https://tc39.es/ecma262/#sec-object.defineproperty +exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { + var current = $getOwnPropertyDescriptor(O, P); + if (current && current[WRITABLE]) { + O[P] = Attributes.value; + Attributes = { + configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], + enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], + writable: false + }; + } + } return $defineProperty(O, P, Attributes); +} : $defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPropertyKey(P); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return $defineProperty(O, P, Attributes); + } catch (error) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + +},{"../internals/an-object":114,"../internals/descriptors":153,"../internals/ie8-dom-define":193,"../internals/to-property-key":289,"../internals/v8-prototype-define-bug":301}],232:[function(require,module,exports){ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var call = require('../internals/function-call'); +var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); +var toIndexedObject = require('../internals/to-indexed-object'); +var toPropertyKey = require('../internals/to-property-key'); +var hasOwn = require('../internals/has-own-property'); +var IE8_DOM_DEFINE = require('../internals/ie8-dom-define'); + +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// `Object.getOwnPropertyDescriptor` method +// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor +exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPropertyKey(P); + if (IE8_DOM_DEFINE) try { + return $getOwnPropertyDescriptor(O, P); + } catch (error) { /* empty */ } + if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); +}; + +},{"../internals/create-property-descriptor":146,"../internals/descriptors":153,"../internals/function-call":177,"../internals/has-own-property":189,"../internals/ie8-dom-define":193,"../internals/object-property-is-enumerable":241,"../internals/to-indexed-object":282,"../internals/to-property-key":289}],233:[function(require,module,exports){ +'use strict'; +/* eslint-disable es/no-object-getownpropertynames -- safe */ +var classof = require('../internals/classof-raw'); +var toIndexedObject = require('../internals/to-indexed-object'); +var $getOwnPropertyNames = require('../internals/object-get-own-property-names').f; +var arraySlice = require('../internals/array-slice'); + +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function (it) { + try { + return $getOwnPropertyNames(it); + } catch (error) { + return arraySlice(windowNames); + } +}; + +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +module.exports.f = function getOwnPropertyNames(it) { + return windowNames && classof(it) === 'Window' + ? getWindowNames(it) + : $getOwnPropertyNames(toIndexedObject(it)); +}; + +},{"../internals/array-slice":131,"../internals/classof-raw":137,"../internals/object-get-own-property-names":234,"../internals/to-indexed-object":282}],234:[function(require,module,exports){ +'use strict'; +var internalObjectKeys = require('../internals/object-keys-internal'); +var enumBugKeys = require('../internals/enum-bug-keys'); + +var hiddenKeys = enumBugKeys.concat('length', 'prototype'); + +// `Object.getOwnPropertyNames` method +// https://tc39.es/ecma262/#sec-object.getownpropertynames +// eslint-disable-next-line es/no-object-getownpropertynames -- safe +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); +}; + +},{"../internals/enum-bug-keys":169,"../internals/object-keys-internal":239}],235:[function(require,module,exports){ +'use strict'; +// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe +exports.f = Object.getOwnPropertySymbols; + +},{}],236:[function(require,module,exports){ +'use strict'; +var hasOwn = require('../internals/has-own-property'); +var isCallable = require('../internals/is-callable'); +var toObject = require('../internals/to-object'); +var sharedKey = require('../internals/shared-key'); +var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter'); + +var IE_PROTO = sharedKey('IE_PROTO'); +var $Object = Object; +var ObjectPrototype = $Object.prototype; + +// `Object.getPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.getprototypeof +// eslint-disable-next-line es/no-object-getprototypeof -- safe +module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) { + var object = toObject(O); + if (hasOwn(object, IE_PROTO)) return object[IE_PROTO]; + var constructor = object.constructor; + if (isCallable(constructor) && object instanceof constructor) { + return constructor.prototype; + } return object instanceof $Object ? ObjectPrototype : null; +}; + +},{"../internals/correct-prototype-getter":143,"../internals/has-own-property":189,"../internals/is-callable":203,"../internals/shared-key":267,"../internals/to-object":285}],237:[function(require,module,exports){ +'use strict'; +var fails = require('../internals/fails'); +var isObject = require('../internals/is-object'); +var classof = require('../internals/classof-raw'); +var ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible'); + +// eslint-disable-next-line es/no-object-isextensible -- safe +var $isExtensible = Object.isExtensible; +var FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); }); + +// `Object.isExtensible` method +// https://tc39.es/ecma262/#sec-object.isextensible +module.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) { + if (!isObject(it)) return false; + if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) === 'ArrayBuffer') return false; + return $isExtensible ? $isExtensible(it) : true; +} : $isExtensible; + +},{"../internals/array-buffer-non-extensible":116,"../internals/classof-raw":137,"../internals/fails":171,"../internals/is-object":208}],238:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); + +module.exports = uncurryThis({}.isPrototypeOf); + +},{"../internals/function-uncurry-this":181}],239:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); +var hasOwn = require('../internals/has-own-property'); +var toIndexedObject = require('../internals/to-indexed-object'); +var indexOf = require('../internals/array-includes').indexOf; +var hiddenKeys = require('../internals/hidden-keys'); + +var push = uncurryThis([].push); + +module.exports = function (object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); + // Don't enum bug & hidden keys + while (names.length > i) if (hasOwn(O, key = names[i++])) { + ~indexOf(result, key) || push(result, key); + } + return result; +}; + +},{"../internals/array-includes":124,"../internals/function-uncurry-this":181,"../internals/has-own-property":189,"../internals/hidden-keys":190,"../internals/to-indexed-object":282}],240:[function(require,module,exports){ +'use strict'; +var internalObjectKeys = require('../internals/object-keys-internal'); +var enumBugKeys = require('../internals/enum-bug-keys'); + +// `Object.keys` method +// https://tc39.es/ecma262/#sec-object.keys +// eslint-disable-next-line es/no-object-keys -- safe +module.exports = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys); +}; + +},{"../internals/enum-bug-keys":169,"../internals/object-keys-internal":239}],241:[function(require,module,exports){ +'use strict'; +var $propertyIsEnumerable = {}.propertyIsEnumerable; +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// Nashorn ~ JDK8 bug +var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); + +// `Object.prototype.propertyIsEnumerable` method implementation +// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable +exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; +} : $propertyIsEnumerable; + +},{}],242:[function(require,module,exports){ +'use strict'; +/* eslint-disable no-proto -- safe */ +var uncurryThisAccessor = require('../internals/function-uncurry-this-accessor'); +var anObject = require('../internals/an-object'); +var aPossiblePrototype = require('../internals/a-possible-prototype'); + +// `Object.setPrototypeOf` method +// https://tc39.es/ecma262/#sec-object.setprototypeof +// Works with __proto__ only. Old v8 can't work with null proto objects. +// eslint-disable-next-line es/no-object-setprototypeof -- safe +module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { + var CORRECT_SETTER = false; + var test = {}; + var setter; + try { + setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set'); + setter(test, []); + CORRECT_SETTER = test instanceof Array; + } catch (error) { /* empty */ } + return function setPrototypeOf(O, proto) { + anObject(O); + aPossiblePrototype(proto); + if (CORRECT_SETTER) setter(O, proto); + else O.__proto__ = proto; + return O; + }; +}() : undefined); + +},{"../internals/a-possible-prototype":110,"../internals/an-object":114,"../internals/function-uncurry-this-accessor":179}],243:[function(require,module,exports){ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var fails = require('../internals/fails'); +var uncurryThis = require('../internals/function-uncurry-this'); +var objectGetPrototypeOf = require('../internals/object-get-prototype-of'); +var objectKeys = require('../internals/object-keys'); +var toIndexedObject = require('../internals/to-indexed-object'); +var $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f; + +var propertyIsEnumerable = uncurryThis($propertyIsEnumerable); +var push = uncurryThis([].push); + +// in some IE versions, `propertyIsEnumerable` returns incorrect result on integer keys +// of `null` prototype objects +var IE_BUG = DESCRIPTORS && fails(function () { + // eslint-disable-next-line es/no-object-create -- safe + var O = Object.create(null); + O[2] = 2; + return !propertyIsEnumerable(O, 2); +}); + +// `Object.{ entries, values }` methods implementation +var createMethod = function (TO_ENTRIES) { + return function (it) { + var O = toIndexedObject(it); + var keys = objectKeys(O); + var IE_WORKAROUND = IE_BUG && objectGetPrototypeOf(O) === null; + var length = keys.length; + var i = 0; + var result = []; + var key; + while (length > i) { + key = keys[i++]; + if (!DESCRIPTORS || (IE_WORKAROUND ? key in O : propertyIsEnumerable(O, key))) { + push(result, TO_ENTRIES ? [key, O[key]] : O[key]); + } + } + return result; + }; +}; + +module.exports = { + // `Object.entries` method + // https://tc39.es/ecma262/#sec-object.entries + entries: createMethod(true), + // `Object.values` method + // https://tc39.es/ecma262/#sec-object.values + values: createMethod(false) +}; + +},{"../internals/descriptors":153,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/object-get-prototype-of":236,"../internals/object-keys":240,"../internals/object-property-is-enumerable":241,"../internals/to-indexed-object":282}],244:[function(require,module,exports){ +'use strict'; +var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support'); +var classof = require('../internals/classof'); + +// `Object.prototype.toString` method implementation +// https://tc39.es/ecma262/#sec-object.prototype.tostring +module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() { + return '[object ' + classof(this) + ']'; +}; + +},{"../internals/classof":138,"../internals/to-string-tag-support":290}],245:[function(require,module,exports){ +'use strict'; +var call = require('../internals/function-call'); +var isCallable = require('../internals/is-callable'); +var isObject = require('../internals/is-object'); + +var $TypeError = TypeError; + +// `OrdinaryToPrimitive` abstract operation +// https://tc39.es/ecma262/#sec-ordinarytoprimitive +module.exports = function (input, pref) { + var fn, val; + if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; + if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val; + if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; + throw new $TypeError("Can't convert object to primitive value"); +}; + +},{"../internals/function-call":177,"../internals/is-callable":203,"../internals/is-object":208}],246:[function(require,module,exports){ +'use strict'; +var getBuiltIn = require('../internals/get-built-in'); +var uncurryThis = require('../internals/function-uncurry-this'); +var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names'); +var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols'); +var anObject = require('../internals/an-object'); + +var concat = uncurryThis([].concat); + +// all object keys, includes non-enumerable and symbols +module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; +}; + +},{"../internals/an-object":114,"../internals/function-uncurry-this":181,"../internals/get-built-in":182,"../internals/object-get-own-property-names":234,"../internals/object-get-own-property-symbols":235}],247:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); + +module.exports = global; + +},{"../internals/global":188}],248:[function(require,module,exports){ +'use strict'; +module.exports = function (exec) { + try { + return { error: false, value: exec() }; + } catch (error) { + return { error: true, value: error }; + } +}; + +},{}],249:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var NativePromiseConstructor = require('../internals/promise-native-constructor'); +var isCallable = require('../internals/is-callable'); +var isForced = require('../internals/is-forced'); +var inspectSource = require('../internals/inspect-source'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var IS_BROWSER = require('../internals/engine-is-browser'); +var IS_DENO = require('../internals/engine-is-deno'); +var IS_PURE = require('../internals/is-pure'); +var V8_VERSION = require('../internals/engine-v8-version'); + +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; +var SPECIES = wellKnownSymbol('species'); +var SUBCLASSING = false; +var NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent); + +var FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () { + var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor); + var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor); + // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // We can't detect it synchronously, so just check versions + if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true; + // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution + if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true; + // We can't use @@species feature detection in V8 since it causes + // deoptimization and performance degradation + // https://github.com/zloirock/core-js/issues/679 + if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) { + // Detect correctness of subclassing with @@species support + var promise = new NativePromiseConstructor(function (resolve) { resolve(1); }); + var FakePromise = function (exec) { + exec(function () { /* empty */ }, function () { /* empty */ }); + }; + var constructor = promise.constructor = {}; + constructor[SPECIES] = FakePromise; + SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise; + if (!SUBCLASSING) return true; + // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test + } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT; +}); + +module.exports = { + CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR, + REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT, + SUBCLASSING: SUBCLASSING +}; + +},{"../internals/engine-is-browser":159,"../internals/engine-is-deno":160,"../internals/engine-v8-version":167,"../internals/global":188,"../internals/inspect-source":197,"../internals/is-callable":203,"../internals/is-forced":205,"../internals/is-pure":210,"../internals/promise-native-constructor":250,"../internals/well-known-symbol":306}],250:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); + +module.exports = global.Promise; + +},{"../internals/global":188}],251:[function(require,module,exports){ +'use strict'; +var anObject = require('../internals/an-object'); +var isObject = require('../internals/is-object'); +var newPromiseCapability = require('../internals/new-promise-capability'); + +module.exports = function (C, x) { + anObject(C); + if (isObject(x) && x.constructor === C) return x; + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; +}; + +},{"../internals/an-object":114,"../internals/is-object":208,"../internals/new-promise-capability":226}],252:[function(require,module,exports){ +'use strict'; +var NativePromiseConstructor = require('../internals/promise-native-constructor'); +var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration'); +var FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR; + +module.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) { + NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ }); +}); + +},{"../internals/check-correctness-of-iteration":136,"../internals/promise-constructor-detection":249,"../internals/promise-native-constructor":250}],253:[function(require,module,exports){ +'use strict'; +var defineProperty = require('../internals/object-define-property').f; + +module.exports = function (Target, Source, key) { + key in Target || defineProperty(Target, key, { + configurable: true, + get: function () { return Source[key]; }, + set: function (it) { Source[key] = it; } + }); +}; + +},{"../internals/object-define-property":231}],254:[function(require,module,exports){ +'use strict'; +var Queue = function () { + this.head = null; + this.tail = null; +}; + +Queue.prototype = { + add: function (item) { + var entry = { item: item, next: null }; + var tail = this.tail; + if (tail) tail.next = entry; + else this.head = entry; + this.tail = entry; + }, + get: function () { + var entry = this.head; + if (entry) { + var next = this.head = entry.next; + if (next === null) this.tail = null; + return entry.item; + } + } +}; + +module.exports = Queue; + +},{}],255:[function(require,module,exports){ +'use strict'; +var call = require('../internals/function-call'); +var anObject = require('../internals/an-object'); +var isCallable = require('../internals/is-callable'); +var classof = require('../internals/classof-raw'); +var regexpExec = require('../internals/regexp-exec'); + +var $TypeError = TypeError; + +// `RegExpExec` abstract operation +// https://tc39.es/ecma262/#sec-regexpexec +module.exports = function (R, S) { + var exec = R.exec; + if (isCallable(exec)) { + var result = call(exec, R, S); + if (result !== null) anObject(result); + return result; + } + if (classof(R) === 'RegExp') return call(regexpExec, R, S); + throw new $TypeError('RegExp#exec called on incompatible receiver'); +}; + +},{"../internals/an-object":114,"../internals/classof-raw":137,"../internals/function-call":177,"../internals/is-callable":203,"../internals/regexp-exec":256}],256:[function(require,module,exports){ +'use strict'; +/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */ +/* eslint-disable regexp/no-useless-quantifier -- testing */ +var call = require('../internals/function-call'); +var uncurryThis = require('../internals/function-uncurry-this'); +var toString = require('../internals/to-string'); +var regexpFlags = require('../internals/regexp-flags'); +var stickyHelpers = require('../internals/regexp-sticky-helpers'); +var shared = require('../internals/shared'); +var create = require('../internals/object-create'); +var getInternalState = require('../internals/internal-state').get; +var UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all'); +var UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg'); + +var nativeReplace = shared('native-string-replace', String.prototype.replace); +var nativeExec = RegExp.prototype.exec; +var patchedExec = nativeExec; +var charAt = uncurryThis(''.charAt); +var indexOf = uncurryThis(''.indexOf); +var replace = uncurryThis(''.replace); +var stringSlice = uncurryThis(''.slice); + +var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/; + var re2 = /b*/g; + call(nativeExec, re1, 'a'); + call(nativeExec, re2, 'a'); + return re1.lastIndex !== 0 || re2.lastIndex !== 0; +})(); + +var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET; + +// nonparticipating capturing group, copied from es5-shim's String#split patch. +var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; + +var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG; + +if (PATCH) { + patchedExec = function exec(string) { + var re = this; + var state = getInternalState(re); + var str = toString(string); + var raw = state.raw; + var result, reCopy, lastIndex, match, i, object, group; + + if (raw) { + raw.lastIndex = re.lastIndex; + result = call(patchedExec, raw, str); + re.lastIndex = raw.lastIndex; + return result; + } + + var groups = state.groups; + var sticky = UNSUPPORTED_Y && re.sticky; + var flags = call(regexpFlags, re); + var source = re.source; + var charsAdded = 0; + var strCopy = str; + + if (sticky) { + flags = replace(flags, 'y', ''); + if (indexOf(flags, 'g') === -1) { + flags += 'g'; + } + + strCopy = stringSlice(str, re.lastIndex); + // Support anchored sticky behavior. + if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\n')) { + source = '(?: ' + source + ')'; + strCopy = ' ' + strCopy; + charsAdded++; + } + // ^(? + rx + ) is needed, in combination with some str slicing, to + // simulate the 'y' flag. + reCopy = new RegExp('^(?:' + source + ')', flags); + } + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + source + '$(?!\\s)', flags); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; + + match = call(nativeExec, sticky ? reCopy : re, strCopy); + + if (sticky) { + if (match) { + match.input = stringSlice(match.input, charsAdded); + match[0] = stringSlice(match[0], charsAdded); + match.index = re.lastIndex; + re.lastIndex += match[0].length; + } else re.lastIndex = 0; + } else if (UPDATES_LAST_INDEX_WRONG && match) { + re.lastIndex = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/ + call(nativeReplace, match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + if (match && groups) { + match.groups = object = create(null); + for (i = 0; i < groups.length; i++) { + group = groups[i]; + object[group[0]] = match[group[1]]; + } + } + + return match; + }; +} + +module.exports = patchedExec; + +},{"../internals/function-call":177,"../internals/function-uncurry-this":181,"../internals/internal-state":199,"../internals/object-create":229,"../internals/regexp-flags":257,"../internals/regexp-sticky-helpers":259,"../internals/regexp-unsupported-dot-all":260,"../internals/regexp-unsupported-ncg":261,"../internals/shared":269,"../internals/to-string":291}],257:[function(require,module,exports){ +'use strict'; +var anObject = require('../internals/an-object'); + +// `RegExp.prototype.flags` getter implementation +// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags +module.exports = function () { + var that = anObject(this); + var result = ''; + if (that.hasIndices) result += 'd'; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.dotAll) result += 's'; + if (that.unicode) result += 'u'; + if (that.unicodeSets) result += 'v'; + if (that.sticky) result += 'y'; + return result; +}; + +},{"../internals/an-object":114}],258:[function(require,module,exports){ +'use strict'; +var call = require('../internals/function-call'); +var hasOwn = require('../internals/has-own-property'); +var isPrototypeOf = require('../internals/object-is-prototype-of'); +var regExpFlags = require('../internals/regexp-flags'); + +var RegExpPrototype = RegExp.prototype; + +module.exports = function (R) { + var flags = R.flags; + return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R) + ? call(regExpFlags, R) : flags; +}; + +},{"../internals/function-call":177,"../internals/has-own-property":189,"../internals/object-is-prototype-of":238,"../internals/regexp-flags":257}],259:[function(require,module,exports){ +'use strict'; +var fails = require('../internals/fails'); +var global = require('../internals/global'); + +// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError +var $RegExp = global.RegExp; + +var UNSUPPORTED_Y = fails(function () { + var re = $RegExp('a', 'y'); + re.lastIndex = 2; + return re.exec('abcd') !== null; +}); + +// UC Browser bug +// https://github.com/zloirock/core-js/issues/1008 +var MISSED_STICKY = UNSUPPORTED_Y || fails(function () { + return !$RegExp('a', 'y').sticky; +}); + +var BROKEN_CARET = UNSUPPORTED_Y || fails(function () { + // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 + var re = $RegExp('^r', 'gy'); + re.lastIndex = 2; + return re.exec('str') !== null; +}); + +module.exports = { + BROKEN_CARET: BROKEN_CARET, + MISSED_STICKY: MISSED_STICKY, + UNSUPPORTED_Y: UNSUPPORTED_Y +}; + +},{"../internals/fails":171,"../internals/global":188}],260:[function(require,module,exports){ +'use strict'; +var fails = require('../internals/fails'); +var global = require('../internals/global'); + +// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError +var $RegExp = global.RegExp; + +module.exports = fails(function () { + var re = $RegExp('.', 's'); + return !(re.dotAll && re.test('\n') && re.flags === 's'); +}); + +},{"../internals/fails":171,"../internals/global":188}],261:[function(require,module,exports){ +'use strict'; +var fails = require('../internals/fails'); +var global = require('../internals/global'); + +// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError +var $RegExp = global.RegExp; + +module.exports = fails(function () { + var re = $RegExp('(?<a>b)', 'g'); + return re.exec('b').groups.a !== 'b' || + 'b'.replace(re, '$<a>c') !== 'bc'; +}); + +},{"../internals/fails":171,"../internals/global":188}],262:[function(require,module,exports){ +'use strict'; +var isNullOrUndefined = require('../internals/is-null-or-undefined'); + +var $TypeError = TypeError; + +// `RequireObjectCoercible` abstract operation +// https://tc39.es/ecma262/#sec-requireobjectcoercible +module.exports = function (it) { + if (isNullOrUndefined(it)) throw new $TypeError("Can't call method on " + it); + return it; +}; + +},{"../internals/is-null-or-undefined":207}],263:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var DESCRIPTORS = require('../internals/descriptors'); + +// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + +// Avoid NodeJS experimental warning +module.exports = function (name) { + if (!DESCRIPTORS) return global[name]; + var descriptor = getOwnPropertyDescriptor(global, name); + return descriptor && descriptor.value; +}; + +},{"../internals/descriptors":153,"../internals/global":188}],264:[function(require,module,exports){ +'use strict'; +// `SameValue` abstract operation +// https://tc39.es/ecma262/#sec-samevalue +// eslint-disable-next-line es/no-object-is -- safe +module.exports = Object.is || function is(x, y) { + // eslint-disable-next-line no-self-compare -- NaN check + return x === y ? x !== 0 || 1 / x === 1 / y : x !== x && y !== y; +}; + +},{}],265:[function(require,module,exports){ +'use strict'; +var getBuiltIn = require('../internals/get-built-in'); +var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var DESCRIPTORS = require('../internals/descriptors'); + +var SPECIES = wellKnownSymbol('species'); + +module.exports = function (CONSTRUCTOR_NAME) { + var Constructor = getBuiltIn(CONSTRUCTOR_NAME); + + if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { + defineBuiltInAccessor(Constructor, SPECIES, { + configurable: true, + get: function () { return this; } + }); + } +}; + +},{"../internals/define-built-in-accessor":148,"../internals/descriptors":153,"../internals/get-built-in":182,"../internals/well-known-symbol":306}],266:[function(require,module,exports){ +'use strict'; +var defineProperty = require('../internals/object-define-property').f; +var hasOwn = require('../internals/has-own-property'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + +module.exports = function (target, TAG, STATIC) { + if (target && !STATIC) target = target.prototype; + if (target && !hasOwn(target, TO_STRING_TAG)) { + defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG }); + } +}; + +},{"../internals/has-own-property":189,"../internals/object-define-property":231,"../internals/well-known-symbol":306}],267:[function(require,module,exports){ +'use strict'; +var shared = require('../internals/shared'); +var uid = require('../internals/uid'); + +var keys = shared('keys'); + +module.exports = function (key) { + return keys[key] || (keys[key] = uid(key)); +}; + +},{"../internals/shared":269,"../internals/uid":299}],268:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var defineGlobalProperty = require('../internals/define-global-property'); + +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || defineGlobalProperty(SHARED, {}); + +module.exports = store; + +},{"../internals/define-global-property":151,"../internals/global":188}],269:[function(require,module,exports){ +'use strict'; +var IS_PURE = require('../internals/is-pure'); +var store = require('../internals/shared-store'); + +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: '3.35.0', + mode: IS_PURE ? 'pure' : 'global', + copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)', + license: 'https://github.com/zloirock/core-js/blob/v3.35.0/LICENSE', + source: 'https://github.com/zloirock/core-js' +}); + +},{"../internals/is-pure":210,"../internals/shared-store":268}],270:[function(require,module,exports){ +'use strict'; +var anObject = require('../internals/an-object'); +var aConstructor = require('../internals/a-constructor'); +var isNullOrUndefined = require('../internals/is-null-or-undefined'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var SPECIES = wellKnownSymbol('species'); + +// `SpeciesConstructor` abstract operation +// https://tc39.es/ecma262/#sec-speciesconstructor +module.exports = function (O, defaultConstructor) { + var C = anObject(O).constructor; + var S; + return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S); +}; + +},{"../internals/a-constructor":109,"../internals/an-object":114,"../internals/is-null-or-undefined":207,"../internals/well-known-symbol":306}],271:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); +var toIntegerOrInfinity = require('../internals/to-integer-or-infinity'); +var toString = require('../internals/to-string'); +var requireObjectCoercible = require('../internals/require-object-coercible'); + +var charAt = uncurryThis(''.charAt); +var charCodeAt = uncurryThis(''.charCodeAt); +var stringSlice = uncurryThis(''.slice); + +var createMethod = function (CONVERT_TO_STRING) { + return function ($this, pos) { + var S = toString(requireObjectCoercible($this)); + var position = toIntegerOrInfinity(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = charCodeAt(S, position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size + || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF + ? CONVERT_TO_STRING + ? charAt(S, position) + : first + : CONVERT_TO_STRING + ? stringSlice(S, position, position + 2) + : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + }; +}; + +module.exports = { + // `String.prototype.codePointAt` method + // https://tc39.es/ecma262/#sec-string.prototype.codepointat + codeAt: createMethod(false), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: createMethod(true) +}; + +},{"../internals/function-uncurry-this":181,"../internals/require-object-coercible":262,"../internals/to-integer-or-infinity":283,"../internals/to-string":291}],272:[function(require,module,exports){ +'use strict'; +var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER; +var fails = require('../internals/fails'); +var whitespaces = require('../internals/whitespaces'); + +var non = '\u200B\u0085\u180E'; + +// check that a method works with the correct list +// of whitespaces and has a correct name +module.exports = function (METHOD_NAME) { + return fails(function () { + return !!whitespaces[METHOD_NAME]() + || non[METHOD_NAME]() !== non + || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME); + }); +}; + +},{"../internals/fails":171,"../internals/function-name":178,"../internals/whitespaces":307}],273:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var toString = require('../internals/to-string'); +var whitespaces = require('../internals/whitespaces'); + +var replace = uncurryThis(''.replace); +var ltrim = RegExp('^[' + whitespaces + ']+'); +var rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$'); + +// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation +var createMethod = function (TYPE) { + return function ($this) { + var string = toString(requireObjectCoercible($this)); + if (TYPE & 1) string = replace(string, ltrim, ''); + if (TYPE & 2) string = replace(string, rtrim, '$1'); + return string; + }; +}; + +module.exports = { + // `String.prototype.{ trimLeft, trimStart }` methods + // https://tc39.es/ecma262/#sec-string.prototype.trimstart + start: createMethod(1), + // `String.prototype.{ trimRight, trimEnd }` methods + // https://tc39.es/ecma262/#sec-string.prototype.trimend + end: createMethod(2), + // `String.prototype.trim` method + // https://tc39.es/ecma262/#sec-string.prototype.trim + trim: createMethod(3) +}; + +},{"../internals/function-uncurry-this":181,"../internals/require-object-coercible":262,"../internals/to-string":291,"../internals/whitespaces":307}],274:[function(require,module,exports){ +'use strict'; +/* eslint-disable es/no-symbol -- required for testing */ +var V8_VERSION = require('../internals/engine-v8-version'); +var fails = require('../internals/fails'); +var global = require('../internals/global'); + +var $String = global.String; + +// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing +module.exports = !!Object.getOwnPropertySymbols && !fails(function () { + var symbol = Symbol('symbol detection'); + // Chrome 38 Symbol has incorrect toString conversion + // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances + // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, + // of course, fail. + return !$String(symbol) || !(Object(symbol) instanceof Symbol) || + // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances + !Symbol.sham && V8_VERSION && V8_VERSION < 41; +}); + +},{"../internals/engine-v8-version":167,"../internals/fails":171,"../internals/global":188}],275:[function(require,module,exports){ +'use strict'; +var call = require('../internals/function-call'); +var getBuiltIn = require('../internals/get-built-in'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var defineBuiltIn = require('../internals/define-built-in'); + +module.exports = function () { + var Symbol = getBuiltIn('Symbol'); + var SymbolPrototype = Symbol && Symbol.prototype; + var valueOf = SymbolPrototype && SymbolPrototype.valueOf; + var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); + + if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) { + // `Symbol.prototype[@@toPrimitive]` method + // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive + // eslint-disable-next-line no-unused-vars -- required for .length + defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) { + return call(valueOf, this); + }, { arity: 1 }); + } +}; + +},{"../internals/define-built-in":149,"../internals/function-call":177,"../internals/get-built-in":182,"../internals/well-known-symbol":306}],276:[function(require,module,exports){ +'use strict'; +var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection'); + +/* eslint-disable es/no-symbol -- safe */ +module.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor; + +},{"../internals/symbol-constructor-detection":274}],277:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var apply = require('../internals/function-apply'); +var bind = require('../internals/function-bind-context'); +var isCallable = require('../internals/is-callable'); +var hasOwn = require('../internals/has-own-property'); +var fails = require('../internals/fails'); +var html = require('../internals/html'); +var arraySlice = require('../internals/array-slice'); +var createElement = require('../internals/document-create-element'); +var validateArgumentsLength = require('../internals/validate-arguments-length'); +var IS_IOS = require('../internals/engine-is-ios'); +var IS_NODE = require('../internals/engine-is-node'); + +var set = global.setImmediate; +var clear = global.clearImmediate; +var process = global.process; +var Dispatch = global.Dispatch; +var Function = global.Function; +var MessageChannel = global.MessageChannel; +var String = global.String; +var counter = 0; +var queue = {}; +var ONREADYSTATECHANGE = 'onreadystatechange'; +var $location, defer, channel, port; + +fails(function () { + // Deno throws a ReferenceError on `location` access without `--location` flag + $location = global.location; +}); + +var run = function (id) { + if (hasOwn(queue, id)) { + var fn = queue[id]; + delete queue[id]; + fn(); + } +}; + +var runner = function (id) { + return function () { + run(id); + }; +}; + +var eventListener = function (event) { + run(event.data); +}; + +var globalPostMessageDefer = function (id) { + // old engines have not location.origin + global.postMessage(String(id), $location.protocol + '//' + $location.host); +}; + +// Node.js 0.9+ & IE10+ has setImmediate, otherwise: +if (!set || !clear) { + set = function setImmediate(handler) { + validateArgumentsLength(arguments.length, 1); + var fn = isCallable(handler) ? handler : Function(handler); + var args = arraySlice(arguments, 1); + queue[++counter] = function () { + apply(fn, undefined, args); + }; + defer(counter); + return counter; + }; + clear = function clearImmediate(id) { + delete queue[id]; + }; + // Node.js 0.8- + if (IS_NODE) { + defer = function (id) { + process.nextTick(runner(id)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(runner(id)); + }; + // Browsers with MessageChannel, includes WebWorkers + // except iOS - https://github.com/zloirock/core-js/issues/624 + } else if (MessageChannel && !IS_IOS) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = eventListener; + defer = bind(port.postMessage, port); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if ( + global.addEventListener && + isCallable(global.postMessage) && + !global.importScripts && + $location && $location.protocol !== 'file:' && + !fails(globalPostMessageDefer) + ) { + defer = globalPostMessageDefer; + global.addEventListener('message', eventListener, false); + // IE8- + } else if (ONREADYSTATECHANGE in createElement('script')) { + defer = function (id) { + html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(runner(id), 0); + }; + } +} + +module.exports = { + set: set, + clear: clear +}; + +},{"../internals/array-slice":131,"../internals/document-create-element":154,"../internals/engine-is-ios":163,"../internals/engine-is-node":164,"../internals/fails":171,"../internals/function-apply":174,"../internals/function-bind-context":175,"../internals/global":188,"../internals/has-own-property":189,"../internals/html":192,"../internals/is-callable":203,"../internals/validate-arguments-length":302}],278:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); + +// `thisNumberValue` abstract operation +// https://tc39.es/ecma262/#sec-thisnumbervalue +module.exports = uncurryThis(1.0.valueOf); + +},{"../internals/function-uncurry-this":181}],279:[function(require,module,exports){ +'use strict'; +var toIntegerOrInfinity = require('../internals/to-integer-or-infinity'); + +var max = Math.max; +var min = Math.min; + +// Helper for a popular repeating case of the spec: +// Let integer be ? ToInteger(index). +// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). +module.exports = function (index, length) { + var integer = toIntegerOrInfinity(index); + return integer < 0 ? max(integer + length, 0) : min(integer, length); +}; + +},{"../internals/to-integer-or-infinity":283}],280:[function(require,module,exports){ +'use strict'; +var toPrimitive = require('../internals/to-primitive'); + +var $TypeError = TypeError; + +// `ToBigInt` abstract operation +// https://tc39.es/ecma262/#sec-tobigint +module.exports = function (argument) { + var prim = toPrimitive(argument, 'number'); + if (typeof prim == 'number') throw new $TypeError("Can't convert number to bigint"); + // eslint-disable-next-line es/no-bigint -- safe + return BigInt(prim); +}; + +},{"../internals/to-primitive":288}],281:[function(require,module,exports){ +'use strict'; +var toIntegerOrInfinity = require('../internals/to-integer-or-infinity'); +var toLength = require('../internals/to-length'); + +var $RangeError = RangeError; + +// `ToIndex` abstract operation +// https://tc39.es/ecma262/#sec-toindex +module.exports = function (it) { + if (it === undefined) return 0; + var number = toIntegerOrInfinity(it); + var length = toLength(number); + if (number !== length) throw new $RangeError('Wrong length or index'); + return length; +}; + +},{"../internals/to-integer-or-infinity":283,"../internals/to-length":284}],282:[function(require,module,exports){ +'use strict'; +// toObject with fallback for non-array-like ES3 strings +var IndexedObject = require('../internals/indexed-object'); +var requireObjectCoercible = require('../internals/require-object-coercible'); + +module.exports = function (it) { + return IndexedObject(requireObjectCoercible(it)); +}; + +},{"../internals/indexed-object":195,"../internals/require-object-coercible":262}],283:[function(require,module,exports){ +'use strict'; +var trunc = require('../internals/math-trunc'); + +// `ToIntegerOrInfinity` abstract operation +// https://tc39.es/ecma262/#sec-tointegerorinfinity +module.exports = function (argument) { + var number = +argument; + // eslint-disable-next-line no-self-compare -- NaN check + return number !== number || number === 0 ? 0 : trunc(number); +}; + +},{"../internals/math-trunc":224}],284:[function(require,module,exports){ +'use strict'; +var toIntegerOrInfinity = require('../internals/to-integer-or-infinity'); + +var min = Math.min; + +// `ToLength` abstract operation +// https://tc39.es/ecma262/#sec-tolength +module.exports = function (argument) { + return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 +}; + +},{"../internals/to-integer-or-infinity":283}],285:[function(require,module,exports){ +'use strict'; +var requireObjectCoercible = require('../internals/require-object-coercible'); + +var $Object = Object; + +// `ToObject` abstract operation +// https://tc39.es/ecma262/#sec-toobject +module.exports = function (argument) { + return $Object(requireObjectCoercible(argument)); +}; + +},{"../internals/require-object-coercible":262}],286:[function(require,module,exports){ +'use strict'; +var toPositiveInteger = require('../internals/to-positive-integer'); + +var $RangeError = RangeError; + +module.exports = function (it, BYTES) { + var offset = toPositiveInteger(it); + if (offset % BYTES) throw new $RangeError('Wrong offset'); + return offset; +}; + +},{"../internals/to-positive-integer":287}],287:[function(require,module,exports){ +'use strict'; +var toIntegerOrInfinity = require('../internals/to-integer-or-infinity'); + +var $RangeError = RangeError; + +module.exports = function (it) { + var result = toIntegerOrInfinity(it); + if (result < 0) throw new $RangeError("The argument can't be less than 0"); + return result; +}; + +},{"../internals/to-integer-or-infinity":283}],288:[function(require,module,exports){ +'use strict'; +var call = require('../internals/function-call'); +var isObject = require('../internals/is-object'); +var isSymbol = require('../internals/is-symbol'); +var getMethod = require('../internals/get-method'); +var ordinaryToPrimitive = require('../internals/ordinary-to-primitive'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var $TypeError = TypeError; +var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); + +// `ToPrimitive` abstract operation +// https://tc39.es/ecma262/#sec-toprimitive +module.exports = function (input, pref) { + if (!isObject(input) || isSymbol(input)) return input; + var exoticToPrim = getMethod(input, TO_PRIMITIVE); + var result; + if (exoticToPrim) { + if (pref === undefined) pref = 'default'; + result = call(exoticToPrim, input, pref); + if (!isObject(result) || isSymbol(result)) return result; + throw new $TypeError("Can't convert object to primitive value"); + } + if (pref === undefined) pref = 'number'; + return ordinaryToPrimitive(input, pref); +}; + +},{"../internals/function-call":177,"../internals/get-method":186,"../internals/is-object":208,"../internals/is-symbol":212,"../internals/ordinary-to-primitive":245,"../internals/well-known-symbol":306}],289:[function(require,module,exports){ +'use strict'; +var toPrimitive = require('../internals/to-primitive'); +var isSymbol = require('../internals/is-symbol'); + +// `ToPropertyKey` abstract operation +// https://tc39.es/ecma262/#sec-topropertykey +module.exports = function (argument) { + var key = toPrimitive(argument, 'string'); + return isSymbol(key) ? key : key + ''; +}; + +},{"../internals/is-symbol":212,"../internals/to-primitive":288}],290:[function(require,module,exports){ +'use strict'; +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var test = {}; + +test[TO_STRING_TAG] = 'z'; + +module.exports = String(test) === '[object z]'; + +},{"../internals/well-known-symbol":306}],291:[function(require,module,exports){ +'use strict'; +var classof = require('../internals/classof'); + +var $String = String; + +module.exports = function (argument) { + if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string'); + return $String(argument); +}; + +},{"../internals/classof":138}],292:[function(require,module,exports){ +'use strict'; +var round = Math.round; + +module.exports = function (it) { + var value = round(it); + return value < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF; +}; + +},{}],293:[function(require,module,exports){ +'use strict'; +var $String = String; + +module.exports = function (argument) { + try { + return $String(argument); + } catch (error) { + return 'Object'; + } +}; + +},{}],294:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var global = require('../internals/global'); +var call = require('../internals/function-call'); +var DESCRIPTORS = require('../internals/descriptors'); +var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers'); +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var ArrayBufferModule = require('../internals/array-buffer'); +var anInstance = require('../internals/an-instance'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var isIntegralNumber = require('../internals/is-integral-number'); +var toLength = require('../internals/to-length'); +var toIndex = require('../internals/to-index'); +var toOffset = require('../internals/to-offset'); +var toUint8Clamped = require('../internals/to-uint8-clamped'); +var toPropertyKey = require('../internals/to-property-key'); +var hasOwn = require('../internals/has-own-property'); +var classof = require('../internals/classof'); +var isObject = require('../internals/is-object'); +var isSymbol = require('../internals/is-symbol'); +var create = require('../internals/object-create'); +var isPrototypeOf = require('../internals/object-is-prototype-of'); +var setPrototypeOf = require('../internals/object-set-prototype-of'); +var getOwnPropertyNames = require('../internals/object-get-own-property-names').f; +var typedArrayFrom = require('../internals/typed-array-from'); +var forEach = require('../internals/array-iteration').forEach; +var setSpecies = require('../internals/set-species'); +var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); +var definePropertyModule = require('../internals/object-define-property'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); +var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list'); +var InternalStateModule = require('../internals/internal-state'); +var inheritIfRequired = require('../internals/inherit-if-required'); + +var getInternalState = InternalStateModule.get; +var setInternalState = InternalStateModule.set; +var enforceInternalState = InternalStateModule.enforce; +var nativeDefineProperty = definePropertyModule.f; +var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; +var RangeError = global.RangeError; +var ArrayBuffer = ArrayBufferModule.ArrayBuffer; +var ArrayBufferPrototype = ArrayBuffer.prototype; +var DataView = ArrayBufferModule.DataView; +var NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS; +var TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG; +var TypedArray = ArrayBufferViewCore.TypedArray; +var TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype; +var isTypedArray = ArrayBufferViewCore.isTypedArray; +var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'; +var WRONG_LENGTH = 'Wrong length'; + +var addGetter = function (it, key) { + defineBuiltInAccessor(it, key, { + configurable: true, + get: function () { + return getInternalState(this)[key]; + } + }); +}; + +var isArrayBuffer = function (it) { + var klass; + return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) === 'ArrayBuffer' || klass === 'SharedArrayBuffer'; +}; + +var isTypedArrayIndex = function (target, key) { + return isTypedArray(target) + && !isSymbol(key) + && key in target + && isIntegralNumber(+key) + && key >= 0; +}; + +var wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) { + key = toPropertyKey(key); + return isTypedArrayIndex(target, key) + ? createPropertyDescriptor(2, target[key]) + : nativeGetOwnPropertyDescriptor(target, key); +}; + +var wrappedDefineProperty = function defineProperty(target, key, descriptor) { + key = toPropertyKey(key); + if (isTypedArrayIndex(target, key) + && isObject(descriptor) + && hasOwn(descriptor, 'value') + && !hasOwn(descriptor, 'get') + && !hasOwn(descriptor, 'set') + // TODO: add validation descriptor w/o calling accessors + && !descriptor.configurable + && (!hasOwn(descriptor, 'writable') || descriptor.writable) + && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable) + ) { + target[key] = descriptor.value; + return target; + } return nativeDefineProperty(target, key, descriptor); +}; + +if (DESCRIPTORS) { + if (!NATIVE_ARRAY_BUFFER_VIEWS) { + getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor; + definePropertyModule.f = wrappedDefineProperty; + addGetter(TypedArrayPrototype, 'buffer'); + addGetter(TypedArrayPrototype, 'byteOffset'); + addGetter(TypedArrayPrototype, 'byteLength'); + addGetter(TypedArrayPrototype, 'length'); + } + + $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, { + getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor, + defineProperty: wrappedDefineProperty + }); + + module.exports = function (TYPE, wrapper, CLAMPED) { + var BYTES = TYPE.match(/\d+/)[0] / 8; + var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array'; + var GETTER = 'get' + TYPE; + var SETTER = 'set' + TYPE; + var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME]; + var TypedArrayConstructor = NativeTypedArrayConstructor; + var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype; + var exported = {}; + + var getter = function (that, index) { + var data = getInternalState(that); + return data.view[GETTER](index * BYTES + data.byteOffset, true); + }; + + var setter = function (that, index, value) { + var data = getInternalState(that); + data.view[SETTER](index * BYTES + data.byteOffset, CLAMPED ? toUint8Clamped(value) : value, true); + }; + + var addElement = function (that, index) { + nativeDefineProperty(that, index, { + get: function () { + return getter(this, index); + }, + set: function (value) { + return setter(this, index, value); + }, + enumerable: true + }); + }; + + if (!NATIVE_ARRAY_BUFFER_VIEWS) { + TypedArrayConstructor = wrapper(function (that, data, offset, $length) { + anInstance(that, TypedArrayConstructorPrototype); + var index = 0; + var byteOffset = 0; + var buffer, byteLength, length; + if (!isObject(data)) { + length = toIndex(data); + byteLength = length * BYTES; + buffer = new ArrayBuffer(byteLength); + } else if (isArrayBuffer(data)) { + buffer = data; + byteOffset = toOffset(offset, BYTES); + var $len = data.byteLength; + if ($length === undefined) { + if ($len % BYTES) throw new RangeError(WRONG_LENGTH); + byteLength = $len - byteOffset; + if (byteLength < 0) throw new RangeError(WRONG_LENGTH); + } else { + byteLength = toLength($length) * BYTES; + if (byteLength + byteOffset > $len) throw new RangeError(WRONG_LENGTH); + } + length = byteLength / BYTES; + } else if (isTypedArray(data)) { + return arrayFromConstructorAndList(TypedArrayConstructor, data); + } else { + return call(typedArrayFrom, TypedArrayConstructor, data); + } + setInternalState(that, { + buffer: buffer, + byteOffset: byteOffset, + byteLength: byteLength, + length: length, + view: new DataView(buffer) + }); + while (index < length) addElement(that, index++); + }); + + if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray); + TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype); + } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) { + TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) { + anInstance(dummy, TypedArrayConstructorPrototype); + return inheritIfRequired(function () { + if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data)); + if (isArrayBuffer(data)) return $length !== undefined + ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length) + : typedArrayOffset !== undefined + ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES)) + : new NativeTypedArrayConstructor(data); + if (isTypedArray(data)) return arrayFromConstructorAndList(TypedArrayConstructor, data); + return call(typedArrayFrom, TypedArrayConstructor, data); + }(), dummy, TypedArrayConstructor); + }); + + if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray); + forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) { + if (!(key in TypedArrayConstructor)) { + createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]); + } + }); + TypedArrayConstructor.prototype = TypedArrayConstructorPrototype; + } + + if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor); + } + + enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor; + + if (TYPED_ARRAY_TAG) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME); + } + + var FORCED = TypedArrayConstructor !== NativeTypedArrayConstructor; + + exported[CONSTRUCTOR_NAME] = TypedArrayConstructor; + + $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported); + + if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) { + createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES); + } + + if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) { + createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES); + } + + setSpecies(CONSTRUCTOR_NAME); + }; +} else module.exports = function () { /* empty */ }; + +},{"../internals/an-instance":113,"../internals/array-buffer":118,"../internals/array-buffer-view-core":117,"../internals/array-from-constructor-and-list":122,"../internals/array-iteration":125,"../internals/classof":138,"../internals/create-non-enumerable-property":145,"../internals/create-property-descriptor":146,"../internals/define-built-in-accessor":148,"../internals/descriptors":153,"../internals/export":170,"../internals/function-call":177,"../internals/global":188,"../internals/has-own-property":189,"../internals/inherit-if-required":196,"../internals/internal-state":199,"../internals/is-integral-number":206,"../internals/is-object":208,"../internals/is-symbol":212,"../internals/object-create":229,"../internals/object-define-property":231,"../internals/object-get-own-property-descriptor":232,"../internals/object-get-own-property-names":234,"../internals/object-is-prototype-of":238,"../internals/object-set-prototype-of":242,"../internals/set-species":265,"../internals/to-index":281,"../internals/to-length":284,"../internals/to-offset":286,"../internals/to-property-key":289,"../internals/to-uint8-clamped":292,"../internals/typed-array-constructors-require-wrappers":295,"../internals/typed-array-from":297}],295:[function(require,module,exports){ +'use strict'; +/* eslint-disable no-new -- required for testing */ +var global = require('../internals/global'); +var fails = require('../internals/fails'); +var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration'); +var NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS; + +var ArrayBuffer = global.ArrayBuffer; +var Int8Array = global.Int8Array; + +module.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () { + Int8Array(1); +}) || !fails(function () { + new Int8Array(-1); +}) || !checkCorrectnessOfIteration(function (iterable) { + new Int8Array(); + new Int8Array(null); + new Int8Array(1.5); + new Int8Array(iterable); +}, true) || fails(function () { + // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill + return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1; +}); + +},{"../internals/array-buffer-view-core":117,"../internals/check-correctness-of-iteration":136,"../internals/fails":171,"../internals/global":188}],296:[function(require,module,exports){ +'use strict'; +var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list'); +var typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor'); + +module.exports = function (instance, list) { + return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list); +}; + +},{"../internals/array-from-constructor-and-list":122,"../internals/typed-array-species-constructor":298}],297:[function(require,module,exports){ +'use strict'; +var bind = require('../internals/function-bind-context'); +var call = require('../internals/function-call'); +var aConstructor = require('../internals/a-constructor'); +var toObject = require('../internals/to-object'); +var lengthOfArrayLike = require('../internals/length-of-array-like'); +var getIterator = require('../internals/get-iterator'); +var getIteratorMethod = require('../internals/get-iterator-method'); +var isArrayIteratorMethod = require('../internals/is-array-iterator-method'); +var isBigIntArray = require('../internals/is-big-int-array'); +var aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor; +var toBigInt = require('../internals/to-big-int'); + +module.exports = function from(source /* , mapfn, thisArg */) { + var C = aConstructor(this); + var O = toObject(source); + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var iteratorMethod = getIteratorMethod(O); + var i, length, result, thisIsBigIntArray, value, step, iterator, next; + if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) { + iterator = getIterator(O, iteratorMethod); + next = iterator.next; + O = []; + while (!(step = call(next, iterator)).done) { + O.push(step.value); + } + } + if (mapping && argumentsLength > 2) { + mapfn = bind(mapfn, arguments[2]); + } + length = lengthOfArrayLike(O); + result = new (aTypedArrayConstructor(C))(length); + thisIsBigIntArray = isBigIntArray(result); + for (i = 0; length > i; i++) { + value = mapping ? mapfn(O[i], i) : O[i]; + // FF30- typed arrays doesn't properly convert objects to typed array values + result[i] = thisIsBigIntArray ? toBigInt(value) : +value; + } + return result; +}; + +},{"../internals/a-constructor":109,"../internals/array-buffer-view-core":117,"../internals/function-bind-context":175,"../internals/function-call":177,"../internals/get-iterator":184,"../internals/get-iterator-method":183,"../internals/is-array-iterator-method":200,"../internals/is-big-int-array":202,"../internals/length-of-array-like":219,"../internals/to-big-int":280,"../internals/to-object":285}],298:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var speciesConstructor = require('../internals/species-constructor'); + +var aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor; +var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor; + +// a part of `TypedArraySpeciesCreate` abstract operation +// https://tc39.es/ecma262/#typedarray-species-create +module.exports = function (originalArray) { + return aTypedArrayConstructor(speciesConstructor(originalArray, getTypedArrayConstructor(originalArray))); +}; + +},{"../internals/array-buffer-view-core":117,"../internals/species-constructor":270}],299:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); + +var id = 0; +var postfix = Math.random(); +var toString = uncurryThis(1.0.toString); + +module.exports = function (key) { + return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36); +}; + +},{"../internals/function-uncurry-this":181}],300:[function(require,module,exports){ +'use strict'; +/* eslint-disable es/no-symbol -- required for testing */ +var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection'); + +module.exports = NATIVE_SYMBOL + && !Symbol.sham + && typeof Symbol.iterator == 'symbol'; + +},{"../internals/symbol-constructor-detection":274}],301:[function(require,module,exports){ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var fails = require('../internals/fails'); + +// V8 ~ Chrome 36- +// https://bugs.chromium.org/p/v8/issues/detail?id=3334 +module.exports = DESCRIPTORS && fails(function () { + // eslint-disable-next-line es/no-object-defineproperty -- required for testing + return Object.defineProperty(function () { /* empty */ }, 'prototype', { + value: 42, + writable: false + }).prototype !== 42; +}); + +},{"../internals/descriptors":153,"../internals/fails":171}],302:[function(require,module,exports){ +'use strict'; +var $TypeError = TypeError; + +module.exports = function (passed, required) { + if (passed < required) throw new $TypeError('Not enough arguments'); + return passed; +}; + +},{}],303:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var isCallable = require('../internals/is-callable'); + +var WeakMap = global.WeakMap; + +module.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap)); + +},{"../internals/global":188,"../internals/is-callable":203}],304:[function(require,module,exports){ +'use strict'; +var path = require('../internals/path'); +var hasOwn = require('../internals/has-own-property'); +var wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped'); +var defineProperty = require('../internals/object-define-property').f; + +module.exports = function (NAME) { + var Symbol = path.Symbol || (path.Symbol = {}); + if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, { + value: wrappedWellKnownSymbolModule.f(NAME) + }); +}; + +},{"../internals/has-own-property":189,"../internals/object-define-property":231,"../internals/path":247,"../internals/well-known-symbol-wrapped":305}],305:[function(require,module,exports){ +'use strict'; +var wellKnownSymbol = require('../internals/well-known-symbol'); + +exports.f = wellKnownSymbol; + +},{"../internals/well-known-symbol":306}],306:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var shared = require('../internals/shared'); +var hasOwn = require('../internals/has-own-property'); +var uid = require('../internals/uid'); +var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection'); +var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid'); + +var Symbol = global.Symbol; +var WellKnownSymbolsStore = shared('wks'); +var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid; + +module.exports = function (name) { + if (!hasOwn(WellKnownSymbolsStore, name)) { + WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name) + ? Symbol[name] + : createWellKnownSymbol('Symbol.' + name); + } return WellKnownSymbolsStore[name]; +}; + +},{"../internals/global":188,"../internals/has-own-property":189,"../internals/shared":269,"../internals/symbol-constructor-detection":274,"../internals/uid":299,"../internals/use-symbol-as-uid":300}],307:[function(require,module,exports){ +'use strict'; +// a string of all valid unicode whitespaces +module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' + + '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; + +},{}],308:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var global = require('../internals/global'); +var arrayBufferModule = require('../internals/array-buffer'); +var setSpecies = require('../internals/set-species'); + +var ARRAY_BUFFER = 'ArrayBuffer'; +var ArrayBuffer = arrayBufferModule[ARRAY_BUFFER]; +var NativeArrayBuffer = global[ARRAY_BUFFER]; + +// `ArrayBuffer` constructor +// https://tc39.es/ecma262/#sec-arraybuffer-constructor +$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, { + ArrayBuffer: ArrayBuffer +}); + +setSpecies(ARRAY_BUFFER); + +},{"../internals/array-buffer":118,"../internals/export":170,"../internals/global":188,"../internals/set-species":265}],309:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var uncurryThis = require('../internals/function-uncurry-this-clause'); +var fails = require('../internals/fails'); +var ArrayBufferModule = require('../internals/array-buffer'); +var anObject = require('../internals/an-object'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var toLength = require('../internals/to-length'); +var speciesConstructor = require('../internals/species-constructor'); + +var ArrayBuffer = ArrayBufferModule.ArrayBuffer; +var DataView = ArrayBufferModule.DataView; +var DataViewPrototype = DataView.prototype; +var nativeArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice); +var getUint8 = uncurryThis(DataViewPrototype.getUint8); +var setUint8 = uncurryThis(DataViewPrototype.setUint8); + +var INCORRECT_SLICE = fails(function () { + return !new ArrayBuffer(2).slice(1, undefined).byteLength; +}); + +// `ArrayBuffer.prototype.slice` method +// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice +$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, { + slice: function slice(start, end) { + if (nativeArrayBufferSlice && end === undefined) { + return nativeArrayBufferSlice(anObject(this), start); // FF fix + } + var length = anObject(this).byteLength; + var first = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first)); + var viewSource = new DataView(this); + var viewTarget = new DataView(result); + var index = 0; + while (first < fin) { + setUint8(viewTarget, index++, getUint8(viewSource, first++)); + } return result; + } +}); + +},{"../internals/an-object":114,"../internals/array-buffer":118,"../internals/export":170,"../internals/fails":171,"../internals/function-uncurry-this-clause":180,"../internals/species-constructor":270,"../internals/to-absolute-index":279,"../internals/to-length":284}],310:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var isArray = require('../internals/is-array'); +var isObject = require('../internals/is-object'); +var toObject = require('../internals/to-object'); +var lengthOfArrayLike = require('../internals/length-of-array-like'); +var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer'); +var createProperty = require('../internals/create-property'); +var arraySpeciesCreate = require('../internals/array-species-create'); +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var V8_VERSION = require('../internals/engine-v8-version'); + +var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); + +// We can't use this feature detection in V8 since it causes +// deoptimization and serious performance degradation +// https://github.com/zloirock/core-js/issues/679 +var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () { + var array = []; + array[IS_CONCAT_SPREADABLE] = false; + return array.concat()[0] !== array; +}); + +var isConcatSpreadable = function (O) { + if (!isObject(O)) return false; + var spreadable = O[IS_CONCAT_SPREADABLE]; + return spreadable !== undefined ? !!spreadable : isArray(O); +}; + +var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat'); + +// `Array.prototype.concat` method +// https://tc39.es/ecma262/#sec-array.prototype.concat +// with adding support of @@isConcatSpreadable and @@species +$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + concat: function concat(arg) { + var O = toObject(this); + var A = arraySpeciesCreate(O, 0); + var n = 0; + var i, k, length, len, E; + for (i = -1, length = arguments.length; i < length; i++) { + E = i === -1 ? O : arguments[i]; + if (isConcatSpreadable(E)) { + len = lengthOfArrayLike(E); + doesNotExceedSafeInteger(n + len); + for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); + } else { + doesNotExceedSafeInteger(n + 1); + createProperty(A, n++, E); + } + } + A.length = n; + return A; + } +}); + +},{"../internals/array-method-has-species-support":127,"../internals/array-species-create":134,"../internals/create-property":147,"../internals/does-not-exceed-safe-integer":155,"../internals/engine-v8-version":167,"../internals/export":170,"../internals/fails":171,"../internals/is-array":201,"../internals/is-object":208,"../internals/length-of-array-like":219,"../internals/to-object":285,"../internals/well-known-symbol":306}],311:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var fill = require('../internals/array-fill'); +var addToUnscopables = require('../internals/add-to-unscopables'); + +// `Array.prototype.fill` method +// https://tc39.es/ecma262/#sec-array.prototype.fill +$({ target: 'Array', proto: true }, { + fill: fill +}); + +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('fill'); + +},{"../internals/add-to-unscopables":111,"../internals/array-fill":120,"../internals/export":170}],312:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var $filter = require('../internals/array-iteration').filter; +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter'); + +// `Array.prototype.filter` method +// https://tc39.es/ecma262/#sec-array.prototype.filter +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +},{"../internals/array-iteration":125,"../internals/array-method-has-species-support":127,"../internals/export":170}],313:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var $find = require('../internals/array-iteration').find; +var addToUnscopables = require('../internals/add-to-unscopables'); + +var FIND = 'find'; +var SKIPS_HOLES = true; + +// Shouldn't skip holes +// eslint-disable-next-line es/no-array-prototype-find -- testing +if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); + +// `Array.prototype.find` method +// https://tc39.es/ecma262/#sec-array.prototype.find +$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { + find: function find(callbackfn /* , that = undefined */) { + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables(FIND); + +},{"../internals/add-to-unscopables":111,"../internals/array-iteration":125,"../internals/export":170}],314:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var from = require('../internals/array-from'); +var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration'); + +var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) { + // eslint-disable-next-line es/no-array-from -- required for testing + Array.from(iterable); +}); + +// `Array.from` method +// https://tc39.es/ecma262/#sec-array.from +$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, { + from: from +}); + +},{"../internals/array-from":123,"../internals/check-correctness-of-iteration":136,"../internals/export":170}],315:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var $includes = require('../internals/array-includes').includes; +var fails = require('../internals/fails'); +var addToUnscopables = require('../internals/add-to-unscopables'); + +// FF99+ bug +var BROKEN_ON_SPARSE = fails(function () { + // eslint-disable-next-line es/no-array-prototype-includes -- detection + return !Array(1).includes(); +}); + +// `Array.prototype.includes` method +// https://tc39.es/ecma262/#sec-array.prototype.includes +$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, { + includes: function includes(el /* , fromIndex = 0 */) { + return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('includes'); + +},{"../internals/add-to-unscopables":111,"../internals/array-includes":124,"../internals/export":170,"../internals/fails":171}],316:[function(require,module,exports){ +'use strict'; +var toIndexedObject = require('../internals/to-indexed-object'); +var addToUnscopables = require('../internals/add-to-unscopables'); +var Iterators = require('../internals/iterators'); +var InternalStateModule = require('../internals/internal-state'); +var defineProperty = require('../internals/object-define-property').f; +var defineIterator = require('../internals/iterator-define'); +var createIterResultObject = require('../internals/create-iter-result-object'); +var IS_PURE = require('../internals/is-pure'); +var DESCRIPTORS = require('../internals/descriptors'); + +var ARRAY_ITERATOR = 'Array Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); + +// `Array.prototype.entries` method +// https://tc39.es/ecma262/#sec-array.prototype.entries +// `Array.prototype.keys` method +// https://tc39.es/ecma262/#sec-array.prototype.keys +// `Array.prototype.values` method +// https://tc39.es/ecma262/#sec-array.prototype.values +// `Array.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-array.prototype-@@iterator +// `CreateArrayIterator` internal method +// https://tc39.es/ecma262/#sec-createarrayiterator +module.exports = defineIterator(Array, 'Array', function (iterated, kind) { + setInternalState(this, { + type: ARRAY_ITERATOR, + target: toIndexedObject(iterated), // target + index: 0, // next index + kind: kind // kind + }); +// `%ArrayIteratorPrototype%.next` method +// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next +}, function () { + var state = getInternalState(this); + var target = state.target; + var index = state.index++; + if (!target || index >= target.length) { + state.target = undefined; + return createIterResultObject(undefined, true); + } + switch (state.kind) { + case 'keys': return createIterResultObject(index, false); + case 'values': return createIterResultObject(target[index], false); + } return createIterResultObject([index, target[index]], false); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% +// https://tc39.es/ecma262/#sec-createunmappedargumentsobject +// https://tc39.es/ecma262/#sec-createmappedargumentsobject +var values = Iterators.Arguments = Iterators.Array; + +// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + +// V8 ~ Chrome 45- bug +if (!IS_PURE && DESCRIPTORS && values.name !== 'values') try { + defineProperty(values, 'name', { value: 'values' }); +} catch (error) { /* empty */ } + +},{"../internals/add-to-unscopables":111,"../internals/create-iter-result-object":144,"../internals/descriptors":153,"../internals/internal-state":199,"../internals/is-pure":210,"../internals/iterator-define":216,"../internals/iterators":218,"../internals/object-define-property":231,"../internals/to-indexed-object":282}],317:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var uncurryThis = require('../internals/function-uncurry-this'); +var IndexedObject = require('../internals/indexed-object'); +var toIndexedObject = require('../internals/to-indexed-object'); +var arrayMethodIsStrict = require('../internals/array-method-is-strict'); + +var nativeJoin = uncurryThis([].join); + +var ES3_STRINGS = IndexedObject !== Object; +var FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ','); + +// `Array.prototype.join` method +// https://tc39.es/ecma262/#sec-array.prototype.join +$({ target: 'Array', proto: true, forced: FORCED }, { + join: function join(separator) { + return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator); + } +}); + +},{"../internals/array-method-is-strict":128,"../internals/export":170,"../internals/function-uncurry-this":181,"../internals/indexed-object":195,"../internals/to-indexed-object":282}],318:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var $map = require('../internals/array-iteration').map; +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map'); + +// `Array.prototype.map` method +// https://tc39.es/ecma262/#sec-array.prototype.map +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + map: function map(callbackfn /* , thisArg */) { + return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +},{"../internals/array-iteration":125,"../internals/array-method-has-species-support":127,"../internals/export":170}],319:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var isArray = require('../internals/is-array'); +var isConstructor = require('../internals/is-constructor'); +var isObject = require('../internals/is-object'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var lengthOfArrayLike = require('../internals/length-of-array-like'); +var toIndexedObject = require('../internals/to-indexed-object'); +var createProperty = require('../internals/create-property'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); +var nativeSlice = require('../internals/array-slice'); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice'); + +var SPECIES = wellKnownSymbol('species'); +var $Array = Array; +var max = Math.max; + +// `Array.prototype.slice` method +// https://tc39.es/ecma262/#sec-array.prototype.slice +// fallback for not array-like ES3 strings and DOM objects +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + slice: function slice(start, end) { + var O = toIndexedObject(this); + var length = lengthOfArrayLike(O); + var k = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible + var Constructor, result, n; + if (isArray(O)) { + Constructor = O.constructor; + // cross-realm fallback + if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) { + Constructor = undefined; + } else if (isObject(Constructor)) { + Constructor = Constructor[SPECIES]; + if (Constructor === null) Constructor = undefined; + } + if (Constructor === $Array || Constructor === undefined) { + return nativeSlice(O, k, fin); + } + } + result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0)); + for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]); + result.length = n; + return result; + } +}); + +},{"../internals/array-method-has-species-support":127,"../internals/array-slice":131,"../internals/create-property":147,"../internals/export":170,"../internals/is-array":201,"../internals/is-constructor":204,"../internals/is-object":208,"../internals/length-of-array-like":219,"../internals/to-absolute-index":279,"../internals/to-indexed-object":282,"../internals/well-known-symbol":306}],320:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var uncurryThis = require('../internals/function-uncurry-this'); +var aCallable = require('../internals/a-callable'); +var toObject = require('../internals/to-object'); +var lengthOfArrayLike = require('../internals/length-of-array-like'); +var deletePropertyOrThrow = require('../internals/delete-property-or-throw'); +var toString = require('../internals/to-string'); +var fails = require('../internals/fails'); +var internalSort = require('../internals/array-sort'); +var arrayMethodIsStrict = require('../internals/array-method-is-strict'); +var FF = require('../internals/engine-ff-version'); +var IE_OR_EDGE = require('../internals/engine-is-ie-or-edge'); +var V8 = require('../internals/engine-v8-version'); +var WEBKIT = require('../internals/engine-webkit-version'); + +var test = []; +var nativeSort = uncurryThis(test.sort); +var push = uncurryThis(test.push); + +// IE8- +var FAILS_ON_UNDEFINED = fails(function () { + test.sort(undefined); +}); +// V8 bug +var FAILS_ON_NULL = fails(function () { + test.sort(null); +}); +// Old WebKit +var STRICT_METHOD = arrayMethodIsStrict('sort'); + +var STABLE_SORT = !fails(function () { + // feature detection can be too slow, so check engines versions + if (V8) return V8 < 70; + if (FF && FF > 3) return; + if (IE_OR_EDGE) return true; + if (WEBKIT) return WEBKIT < 603; + + var result = ''; + var code, chr, value, index; + + // generate an array with more 512 elements (Chakra and old V8 fails only in this case) + for (code = 65; code < 76; code++) { + chr = String.fromCharCode(code); + + switch (code) { + case 66: case 69: case 70: case 72: value = 3; break; + case 68: case 71: value = 4; break; + default: value = 2; + } + + for (index = 0; index < 47; index++) { + test.push({ k: chr + index, v: value }); + } + } + + test.sort(function (a, b) { return b.v - a.v; }); + + for (index = 0; index < test.length; index++) { + chr = test[index].k.charAt(0); + if (result.charAt(result.length - 1) !== chr) result += chr; + } + + return result !== 'DGBEFHACIJK'; +}); + +var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT; + +var getSortCompare = function (comparefn) { + return function (x, y) { + if (y === undefined) return -1; + if (x === undefined) return 1; + if (comparefn !== undefined) return +comparefn(x, y) || 0; + return toString(x) > toString(y) ? 1 : -1; + }; +}; + +// `Array.prototype.sort` method +// https://tc39.es/ecma262/#sec-array.prototype.sort +$({ target: 'Array', proto: true, forced: FORCED }, { + sort: function sort(comparefn) { + if (comparefn !== undefined) aCallable(comparefn); + + var array = toObject(this); + + if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn); + + var items = []; + var arrayLength = lengthOfArrayLike(array); + var itemsLength, index; + + for (index = 0; index < arrayLength; index++) { + if (index in array) push(items, array[index]); + } + + internalSort(items, getSortCompare(comparefn)); + + itemsLength = lengthOfArrayLike(items); + index = 0; + + while (index < itemsLength) array[index] = items[index++]; + while (index < arrayLength) deletePropertyOrThrow(array, index++); + + return array; + } +}); + +},{"../internals/a-callable":108,"../internals/array-method-is-strict":128,"../internals/array-sort":132,"../internals/delete-property-or-throw":152,"../internals/engine-ff-version":158,"../internals/engine-is-ie-or-edge":161,"../internals/engine-v8-version":167,"../internals/engine-webkit-version":168,"../internals/export":170,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/length-of-array-like":219,"../internals/to-object":285,"../internals/to-string":291}],321:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var toObject = require('../internals/to-object'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var toIntegerOrInfinity = require('../internals/to-integer-or-infinity'); +var lengthOfArrayLike = require('../internals/length-of-array-like'); +var setArrayLength = require('../internals/array-set-length'); +var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer'); +var arraySpeciesCreate = require('../internals/array-species-create'); +var createProperty = require('../internals/create-property'); +var deletePropertyOrThrow = require('../internals/delete-property-or-throw'); +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice'); + +var max = Math.max; +var min = Math.min; + +// `Array.prototype.splice` method +// https://tc39.es/ecma262/#sec-array.prototype.splice +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, { + splice: function splice(start, deleteCount /* , ...items */) { + var O = toObject(this); + var len = lengthOfArrayLike(O); + var actualStart = toAbsoluteIndex(start, len); + var argumentsLength = arguments.length; + var insertCount, actualDeleteCount, A, k, from, to; + if (argumentsLength === 0) { + insertCount = actualDeleteCount = 0; + } else if (argumentsLength === 1) { + insertCount = 0; + actualDeleteCount = len - actualStart; + } else { + insertCount = argumentsLength - 2; + actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart); + } + doesNotExceedSafeInteger(len + insertCount - actualDeleteCount); + A = arraySpeciesCreate(O, actualDeleteCount); + for (k = 0; k < actualDeleteCount; k++) { + from = actualStart + k; + if (from in O) createProperty(A, k, O[from]); + } + A.length = actualDeleteCount; + if (insertCount < actualDeleteCount) { + for (k = actualStart; k < len - actualDeleteCount; k++) { + from = k + actualDeleteCount; + to = k + insertCount; + if (from in O) O[to] = O[from]; + else deletePropertyOrThrow(O, to); + } + for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1); + } else if (insertCount > actualDeleteCount) { + for (k = len - actualDeleteCount; k > actualStart; k--) { + from = k + actualDeleteCount - 1; + to = k + insertCount - 1; + if (from in O) O[to] = O[from]; + else deletePropertyOrThrow(O, to); + } + } + for (k = 0; k < insertCount; k++) { + O[k + actualStart] = arguments[k + 2]; + } + setArrayLength(O, len - actualDeleteCount + insertCount); + return A; + } +}); + +},{"../internals/array-method-has-species-support":127,"../internals/array-set-length":130,"../internals/array-species-create":134,"../internals/create-property":147,"../internals/delete-property-or-throw":152,"../internals/does-not-exceed-safe-integer":155,"../internals/export":170,"../internals/length-of-array-like":219,"../internals/to-absolute-index":279,"../internals/to-integer-or-infinity":283,"../internals/to-object":285}],322:[function(require,module,exports){ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS; +var uncurryThis = require('../internals/function-uncurry-this'); +var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); + +var FunctionPrototype = Function.prototype; +var functionToString = uncurryThis(FunctionPrototype.toString); +var nameRE = /function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/; +var regExpExec = uncurryThis(nameRE.exec); +var NAME = 'name'; + +// Function instances `.name` property +// https://tc39.es/ecma262/#sec-function-instances-name +if (DESCRIPTORS && !FUNCTION_NAME_EXISTS) { + defineBuiltInAccessor(FunctionPrototype, NAME, { + configurable: true, + get: function () { + try { + return regExpExec(nameRE, functionToString(this))[1]; + } catch (error) { + return ''; + } + } + }); +} + +},{"../internals/define-built-in-accessor":148,"../internals/descriptors":153,"../internals/function-name":178,"../internals/function-uncurry-this":181}],323:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var getBuiltIn = require('../internals/get-built-in'); +var apply = require('../internals/function-apply'); +var call = require('../internals/function-call'); +var uncurryThis = require('../internals/function-uncurry-this'); +var fails = require('../internals/fails'); +var isCallable = require('../internals/is-callable'); +var isSymbol = require('../internals/is-symbol'); +var arraySlice = require('../internals/array-slice'); +var getReplacerFunction = require('../internals/get-json-replacer-function'); +var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection'); + +var $String = String; +var $stringify = getBuiltIn('JSON', 'stringify'); +var exec = uncurryThis(/./.exec); +var charAt = uncurryThis(''.charAt); +var charCodeAt = uncurryThis(''.charCodeAt); +var replace = uncurryThis(''.replace); +var numberToString = uncurryThis(1.0.toString); + +var tester = /[\uD800-\uDFFF]/g; +var low = /^[\uD800-\uDBFF]$/; +var hi = /^[\uDC00-\uDFFF]$/; + +var WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () { + var symbol = getBuiltIn('Symbol')('stringify detection'); + // MS Edge converts symbol values to JSON as {} + return $stringify([symbol]) !== '[null]' + // WebKit converts symbol values to JSON as null + || $stringify({ a: symbol }) !== '{}' + // V8 throws on boxed symbols + || $stringify(Object(symbol)) !== '{}'; +}); + +// https://github.com/tc39/proposal-well-formed-stringify +var ILL_FORMED_UNICODE = fails(function () { + return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"' + || $stringify('\uDEAD') !== '"\\udead"'; +}); + +var stringifyWithSymbolsFix = function (it, replacer) { + var args = arraySlice(arguments); + var $replacer = getReplacerFunction(replacer); + if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined + args[1] = function (key, value) { + // some old implementations (like WebKit) could pass numbers as keys + if (isCallable($replacer)) value = call($replacer, this, $String(key), value); + if (!isSymbol(value)) return value; + }; + return apply($stringify, null, args); +}; + +var fixIllFormed = function (match, offset, string) { + var prev = charAt(string, offset - 1); + var next = charAt(string, offset + 1); + if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) { + return '\\u' + numberToString(charCodeAt(match, 0), 16); + } return match; +}; + +if ($stringify) { + // `JSON.stringify` method + // https://tc39.es/ecma262/#sec-json.stringify + $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, { + // eslint-disable-next-line no-unused-vars -- required for `.length` + stringify: function stringify(it, replacer, space) { + var args = arraySlice(arguments); + var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args); + return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result; + } + }); +} + +},{"../internals/array-slice":131,"../internals/export":170,"../internals/fails":171,"../internals/function-apply":174,"../internals/function-call":177,"../internals/function-uncurry-this":181,"../internals/get-built-in":182,"../internals/get-json-replacer-function":185,"../internals/is-callable":203,"../internals/is-symbol":212,"../internals/symbol-constructor-detection":274}],324:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var DESCRIPTORS = require('../internals/descriptors'); +var global = require('../internals/global'); +var path = require('../internals/path'); +var uncurryThis = require('../internals/function-uncurry-this'); +var isForced = require('../internals/is-forced'); +var hasOwn = require('../internals/has-own-property'); +var inheritIfRequired = require('../internals/inherit-if-required'); +var isPrototypeOf = require('../internals/object-is-prototype-of'); +var isSymbol = require('../internals/is-symbol'); +var toPrimitive = require('../internals/to-primitive'); +var fails = require('../internals/fails'); +var getOwnPropertyNames = require('../internals/object-get-own-property-names').f; +var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; +var defineProperty = require('../internals/object-define-property').f; +var thisNumberValue = require('../internals/this-number-value'); +var trim = require('../internals/string-trim').trim; + +var NUMBER = 'Number'; +var NativeNumber = global[NUMBER]; +var PureNumberNamespace = path[NUMBER]; +var NumberPrototype = NativeNumber.prototype; +var TypeError = global.TypeError; +var stringSlice = uncurryThis(''.slice); +var charCodeAt = uncurryThis(''.charCodeAt); + +// `ToNumeric` abstract operation +// https://tc39.es/ecma262/#sec-tonumeric +var toNumeric = function (value) { + var primValue = toPrimitive(value, 'number'); + return typeof primValue == 'bigint' ? primValue : toNumber(primValue); +}; + +// `ToNumber` abstract operation +// https://tc39.es/ecma262/#sec-tonumber +var toNumber = function (argument) { + var it = toPrimitive(argument, 'number'); + var first, third, radix, maxCode, digits, length, index, code; + if (isSymbol(it)) throw new TypeError('Cannot convert a Symbol value to a number'); + if (typeof it == 'string' && it.length > 2) { + it = trim(it); + first = charCodeAt(it, 0); + if (first === 43 || first === 45) { + third = charCodeAt(it, 2); + if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix + } else if (first === 48) { + switch (charCodeAt(it, 1)) { + // fast equal of /^0b[01]+$/i + case 66: + case 98: + radix = 2; + maxCode = 49; + break; + // fast equal of /^0o[0-7]+$/i + case 79: + case 111: + radix = 8; + maxCode = 55; + break; + default: + return +it; + } + digits = stringSlice(it, 2); + length = digits.length; + for (index = 0; index < length; index++) { + code = charCodeAt(digits, index); + // parseInt parses a string to a first unavailable symbol + // but ToNumber should return NaN if a string contains unavailable symbols + if (code < 48 || code > maxCode) return NaN; + } return parseInt(digits, radix); + } + } return +it; +}; + +var FORCED = isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1')); + +var calledWithNew = function (dummy) { + // includes check on 1..constructor(foo) case + return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); }); +}; + +// `Number` constructor +// https://tc39.es/ecma262/#sec-number-constructor +var NumberWrapper = function Number(value) { + var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value)); + return calledWithNew(this) ? inheritIfRequired(Object(n), this, NumberWrapper) : n; +}; + +NumberWrapper.prototype = NumberPrototype; +if (FORCED && !IS_PURE) NumberPrototype.constructor = NumberWrapper; + +$({ global: true, constructor: true, wrap: true, forced: FORCED }, { + Number: NumberWrapper +}); + +// Use `internal/copy-constructor-properties` helper in `core-js@4` +var copyConstructorProperties = function (target, source) { + for (var keys = DESCRIPTORS ? getOwnPropertyNames(source) : ( + // ES3: + 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + + // ES2015 (in case, if modules with ES2015 Number statics required before): + 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' + + // ESNext + 'fromString,range' + ).split(','), j = 0, key; keys.length > j; j++) { + if (hasOwn(source, key = keys[j]) && !hasOwn(target, key)) { + defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } + } +}; + +if (IS_PURE && PureNumberNamespace) copyConstructorProperties(path[NUMBER], PureNumberNamespace); +if (FORCED || IS_PURE) copyConstructorProperties(path[NUMBER], NativeNumber); + +},{"../internals/descriptors":153,"../internals/export":170,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/global":188,"../internals/has-own-property":189,"../internals/inherit-if-required":196,"../internals/is-forced":205,"../internals/is-pure":210,"../internals/is-symbol":212,"../internals/object-define-property":231,"../internals/object-get-own-property-descriptor":232,"../internals/object-get-own-property-names":234,"../internals/object-is-prototype-of":238,"../internals/path":247,"../internals/string-trim":273,"../internals/this-number-value":278,"../internals/to-primitive":288}],325:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var assign = require('../internals/object-assign'); + +// `Object.assign` method +// https://tc39.es/ecma262/#sec-object.assign +// eslint-disable-next-line es/no-object-assign -- required for testing +$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, { + assign: assign +}); + +},{"../internals/export":170,"../internals/object-assign":228}],326:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var $entries = require('../internals/object-to-array').entries; + +// `Object.entries` method +// https://tc39.es/ecma262/#sec-object.entries +$({ target: 'Object', stat: true }, { + entries: function entries(O) { + return $entries(O); + } +}); + +},{"../internals/export":170,"../internals/object-to-array":243}],327:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection'); +var fails = require('../internals/fails'); +var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols'); +var toObject = require('../internals/to-object'); + +// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives +// https://bugs.chromium.org/p/v8/issues/detail?id=3443 +var FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); }); + +// `Object.getOwnPropertySymbols` method +// https://tc39.es/ecma262/#sec-object.getownpropertysymbols +$({ target: 'Object', stat: true, forced: FORCED }, { + getOwnPropertySymbols: function getOwnPropertySymbols(it) { + var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : []; + } +}); + +},{"../internals/export":170,"../internals/fails":171,"../internals/object-get-own-property-symbols":235,"../internals/symbol-constructor-detection":274,"../internals/to-object":285}],328:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var toObject = require('../internals/to-object'); +var nativeKeys = require('../internals/object-keys'); +var fails = require('../internals/fails'); + +var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); }); + +// `Object.keys` method +// https://tc39.es/ecma262/#sec-object.keys +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + keys: function keys(it) { + return nativeKeys(toObject(it)); + } +}); + +},{"../internals/export":170,"../internals/fails":171,"../internals/object-keys":240,"../internals/to-object":285}],329:[function(require,module,exports){ +'use strict'; +var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support'); +var defineBuiltIn = require('../internals/define-built-in'); +var toString = require('../internals/object-to-string'); + +// `Object.prototype.toString` method +// https://tc39.es/ecma262/#sec-object.prototype.tostring +if (!TO_STRING_TAG_SUPPORT) { + defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true }); +} + +},{"../internals/define-built-in":149,"../internals/object-to-string":244,"../internals/to-string-tag-support":290}],330:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var call = require('../internals/function-call'); +var aCallable = require('../internals/a-callable'); +var newPromiseCapabilityModule = require('../internals/new-promise-capability'); +var perform = require('../internals/perform'); +var iterate = require('../internals/iterate'); +var PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration'); + +// `Promise.all` method +// https://tc39.es/ecma262/#sec-promise.all +$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, { + all: function all(iterable) { + var C = this; + var capability = newPromiseCapabilityModule.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aCallable(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + remaining++; + call($promiseResolve, C, promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); + +},{"../internals/a-callable":108,"../internals/export":170,"../internals/function-call":177,"../internals/iterate":213,"../internals/new-promise-capability":226,"../internals/perform":248,"../internals/promise-statics-incorrect-iteration":252}],331:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR; +var NativePromiseConstructor = require('../internals/promise-native-constructor'); +var getBuiltIn = require('../internals/get-built-in'); +var isCallable = require('../internals/is-callable'); +var defineBuiltIn = require('../internals/define-built-in'); + +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; + +// `Promise.prototype.catch` method +// https://tc39.es/ecma262/#sec-promise.prototype.catch +$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, { + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } +}); + +// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then` +if (!IS_PURE && isCallable(NativePromiseConstructor)) { + var method = getBuiltIn('Promise').prototype['catch']; + if (NativePromisePrototype['catch'] !== method) { + defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true }); + } +} + +},{"../internals/define-built-in":149,"../internals/export":170,"../internals/get-built-in":182,"../internals/is-callable":203,"../internals/is-pure":210,"../internals/promise-constructor-detection":249,"../internals/promise-native-constructor":250}],332:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var IS_NODE = require('../internals/engine-is-node'); +var global = require('../internals/global'); +var call = require('../internals/function-call'); +var defineBuiltIn = require('../internals/define-built-in'); +var setPrototypeOf = require('../internals/object-set-prototype-of'); +var setToStringTag = require('../internals/set-to-string-tag'); +var setSpecies = require('../internals/set-species'); +var aCallable = require('../internals/a-callable'); +var isCallable = require('../internals/is-callable'); +var isObject = require('../internals/is-object'); +var anInstance = require('../internals/an-instance'); +var speciesConstructor = require('../internals/species-constructor'); +var task = require('../internals/task').set; +var microtask = require('../internals/microtask'); +var hostReportErrors = require('../internals/host-report-errors'); +var perform = require('../internals/perform'); +var Queue = require('../internals/queue'); +var InternalStateModule = require('../internals/internal-state'); +var NativePromiseConstructor = require('../internals/promise-native-constructor'); +var PromiseConstructorDetection = require('../internals/promise-constructor-detection'); +var newPromiseCapabilityModule = require('../internals/new-promise-capability'); + +var PROMISE = 'Promise'; +var FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR; +var NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT; +var NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING; +var getInternalPromiseState = InternalStateModule.getterFor(PROMISE); +var setInternalState = InternalStateModule.set; +var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype; +var PromiseConstructor = NativePromiseConstructor; +var PromisePrototype = NativePromisePrototype; +var TypeError = global.TypeError; +var document = global.document; +var process = global.process; +var newPromiseCapability = newPromiseCapabilityModule.f; +var newGenericPromiseCapability = newPromiseCapability; + +var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent); +var UNHANDLED_REJECTION = 'unhandledrejection'; +var REJECTION_HANDLED = 'rejectionhandled'; +var PENDING = 0; +var FULFILLED = 1; +var REJECTED = 2; +var HANDLED = 1; +var UNHANDLED = 2; + +var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; + +// helpers +var isThenable = function (it) { + var then; + return isObject(it) && isCallable(then = it.then) ? then : false; +}; + +var callReaction = function (reaction, state) { + var value = state.value; + var ok = state.state === FULFILLED; + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (state.rejection === UNHANDLED) onHandleUnhandled(state); + state.rejection = HANDLED; + } + if (handler === true) result = value; + else { + if (domain) domain.enter(); + result = handler(value); // can throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(new TypeError('Promise-chain cycle')); + } else if (then = isThenable(result)) { + call(then, result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (error) { + if (domain && !exited) domain.exit(); + reject(error); + } +}; + +var notify = function (state, isReject) { + if (state.notified) return; + state.notified = true; + microtask(function () { + var reactions = state.reactions; + var reaction; + while (reaction = reactions.get()) { + callReaction(reaction, state); + } + state.notified = false; + if (isReject && !state.rejection) onUnhandled(state); + }); +}; + +var dispatchEvent = function (name, promise, reason) { + var event, handler; + if (DISPATCH_EVENT) { + event = document.createEvent('Event'); + event.promise = promise; + event.reason = reason; + event.initEvent(name, false, true); + global.dispatchEvent(event); + } else event = { promise: promise, reason: reason }; + if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event); + else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); +}; + +var onUnhandled = function (state) { + call(task, global, function () { + var promise = state.facade; + var value = state.value; + var IS_UNHANDLED = isUnhandled(state); + var result; + if (IS_UNHANDLED) { + result = perform(function () { + if (IS_NODE) { + process.emit('unhandledRejection', value, promise); + } else dispatchEvent(UNHANDLED_REJECTION, promise, value); + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; + if (result.error) throw result.value; + } + }); +}; + +var isUnhandled = function (state) { + return state.rejection !== HANDLED && !state.parent; +}; + +var onHandleUnhandled = function (state) { + call(task, global, function () { + var promise = state.facade; + if (IS_NODE) { + process.emit('rejectionHandled', promise); + } else dispatchEvent(REJECTION_HANDLED, promise, state.value); + }); +}; + +var bind = function (fn, state, unwrap) { + return function (value) { + fn(state, value, unwrap); + }; +}; + +var internalReject = function (state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + state.value = value; + state.state = REJECTED; + notify(state, true); +}; + +var internalResolve = function (state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + try { + if (state.facade === value) throw new TypeError("Promise can't be resolved itself"); + var then = isThenable(value); + if (then) { + microtask(function () { + var wrapper = { done: false }; + try { + call(then, value, + bind(internalResolve, wrapper, state), + bind(internalReject, wrapper, state) + ); + } catch (error) { + internalReject(wrapper, error, state); + } + }); + } else { + state.value = value; + state.state = FULFILLED; + notify(state, false); + } + } catch (error) { + internalReject({ done: false }, error, state); + } +}; + +// constructor polyfill +if (FORCED_PROMISE_CONSTRUCTOR) { + // 25.4.3.1 Promise(executor) + PromiseConstructor = function Promise(executor) { + anInstance(this, PromisePrototype); + aCallable(executor); + call(Internal, this); + var state = getInternalPromiseState(this); + try { + executor(bind(internalResolve, state), bind(internalReject, state)); + } catch (error) { + internalReject(state, error); + } + }; + + PromisePrototype = PromiseConstructor.prototype; + + // eslint-disable-next-line no-unused-vars -- required for `.length` + Internal = function Promise(executor) { + setInternalState(this, { + type: PROMISE, + done: false, + notified: false, + parent: false, + reactions: new Queue(), + rejection: false, + state: PENDING, + value: undefined + }); + }; + + // `Promise.prototype.then` method + // https://tc39.es/ecma262/#sec-promise.prototype.then + Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) { + var state = getInternalPromiseState(this); + var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor)); + state.parent = true; + reaction.ok = isCallable(onFulfilled) ? onFulfilled : true; + reaction.fail = isCallable(onRejected) && onRejected; + reaction.domain = IS_NODE ? process.domain : undefined; + if (state.state === PENDING) state.reactions.add(reaction); + else microtask(function () { + callReaction(reaction, state); + }); + return reaction.promise; + }); + + OwnPromiseCapability = function () { + var promise = new Internal(); + var state = getInternalPromiseState(promise); + this.promise = promise; + this.resolve = bind(internalResolve, state); + this.reject = bind(internalReject, state); + }; + + newPromiseCapabilityModule.f = newPromiseCapability = function (C) { + return C === PromiseConstructor || C === PromiseWrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; + + if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) { + nativeThen = NativePromisePrototype.then; + + if (!NATIVE_PROMISE_SUBCLASSING) { + // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs + defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) { + var that = this; + return new PromiseConstructor(function (resolve, reject) { + call(nativeThen, that, resolve, reject); + }).then(onFulfilled, onRejected); + // https://github.com/zloirock/core-js/issues/640 + }, { unsafe: true }); + } + + // make `.constructor === Promise` work for native promise-based APIs + try { + delete NativePromisePrototype.constructor; + } catch (error) { /* empty */ } + + // make `instanceof Promise` work for native promise-based APIs + if (setPrototypeOf) { + setPrototypeOf(NativePromisePrototype, PromisePrototype); + } + } +} + +$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, { + Promise: PromiseConstructor +}); + +setToStringTag(PromiseConstructor, PROMISE, false, true); +setSpecies(PROMISE); + +},{"../internals/a-callable":108,"../internals/an-instance":113,"../internals/define-built-in":149,"../internals/engine-is-node":164,"../internals/export":170,"../internals/function-call":177,"../internals/global":188,"../internals/host-report-errors":191,"../internals/internal-state":199,"../internals/is-callable":203,"../internals/is-object":208,"../internals/is-pure":210,"../internals/microtask":225,"../internals/new-promise-capability":226,"../internals/object-set-prototype-of":242,"../internals/perform":248,"../internals/promise-constructor-detection":249,"../internals/promise-native-constructor":250,"../internals/queue":254,"../internals/set-species":265,"../internals/set-to-string-tag":266,"../internals/species-constructor":270,"../internals/task":277}],333:[function(require,module,exports){ +'use strict'; +// TODO: Remove this module from `core-js@4` since it's split to modules listed below +require('../modules/es.promise.constructor'); +require('../modules/es.promise.all'); +require('../modules/es.promise.catch'); +require('../modules/es.promise.race'); +require('../modules/es.promise.reject'); +require('../modules/es.promise.resolve'); + +},{"../modules/es.promise.all":330,"../modules/es.promise.catch":331,"../modules/es.promise.constructor":332,"../modules/es.promise.race":334,"../modules/es.promise.reject":335,"../modules/es.promise.resolve":336}],334:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var call = require('../internals/function-call'); +var aCallable = require('../internals/a-callable'); +var newPromiseCapabilityModule = require('../internals/new-promise-capability'); +var perform = require('../internals/perform'); +var iterate = require('../internals/iterate'); +var PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration'); + +// `Promise.race` method +// https://tc39.es/ecma262/#sec-promise.race +$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, { + race: function race(iterable) { + var C = this; + var capability = newPromiseCapabilityModule.f(C); + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aCallable(C.resolve); + iterate(iterable, function (promise) { + call($promiseResolve, C, promise).then(capability.resolve, reject); + }); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); + +},{"../internals/a-callable":108,"../internals/export":170,"../internals/function-call":177,"../internals/iterate":213,"../internals/new-promise-capability":226,"../internals/perform":248,"../internals/promise-statics-incorrect-iteration":252}],335:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var newPromiseCapabilityModule = require('../internals/new-promise-capability'); +var FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR; + +// `Promise.reject` method +// https://tc39.es/ecma262/#sec-promise.reject +$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, { + reject: function reject(r) { + var capability = newPromiseCapabilityModule.f(this); + var capabilityReject = capability.reject; + capabilityReject(r); + return capability.promise; + } +}); + +},{"../internals/export":170,"../internals/new-promise-capability":226,"../internals/promise-constructor-detection":249}],336:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var getBuiltIn = require('../internals/get-built-in'); +var IS_PURE = require('../internals/is-pure'); +var NativePromiseConstructor = require('../internals/promise-native-constructor'); +var FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR; +var promiseResolve = require('../internals/promise-resolve'); + +var PromiseConstructorWrapper = getBuiltIn('Promise'); +var CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR; + +// `Promise.resolve` method +// https://tc39.es/ecma262/#sec-promise.resolve +$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, { + resolve: function resolve(x) { + return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x); + } +}); + +},{"../internals/export":170,"../internals/get-built-in":182,"../internals/is-pure":210,"../internals/promise-constructor-detection":249,"../internals/promise-native-constructor":250,"../internals/promise-resolve":251}],337:[function(require,module,exports){ +'use strict'; +var DESCRIPTORS = require('../internals/descriptors'); +var global = require('../internals/global'); +var uncurryThis = require('../internals/function-uncurry-this'); +var isForced = require('../internals/is-forced'); +var inheritIfRequired = require('../internals/inherit-if-required'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var create = require('../internals/object-create'); +var getOwnPropertyNames = require('../internals/object-get-own-property-names').f; +var isPrototypeOf = require('../internals/object-is-prototype-of'); +var isRegExp = require('../internals/is-regexp'); +var toString = require('../internals/to-string'); +var getRegExpFlags = require('../internals/regexp-get-flags'); +var stickyHelpers = require('../internals/regexp-sticky-helpers'); +var proxyAccessor = require('../internals/proxy-accessor'); +var defineBuiltIn = require('../internals/define-built-in'); +var fails = require('../internals/fails'); +var hasOwn = require('../internals/has-own-property'); +var enforceInternalState = require('../internals/internal-state').enforce; +var setSpecies = require('../internals/set-species'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all'); +var UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg'); + +var MATCH = wellKnownSymbol('match'); +var NativeRegExp = global.RegExp; +var RegExpPrototype = NativeRegExp.prototype; +var SyntaxError = global.SyntaxError; +var exec = uncurryThis(RegExpPrototype.exec); +var charAt = uncurryThis(''.charAt); +var replace = uncurryThis(''.replace); +var stringIndexOf = uncurryThis(''.indexOf); +var stringSlice = uncurryThis(''.slice); +// TODO: Use only proper RegExpIdentifierName +var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/; +var re1 = /a/g; +var re2 = /a/g; + +// "new" should create a new object, old webkit bug +var CORRECT_NEW = new NativeRegExp(re1) !== re1; + +var MISSED_STICKY = stickyHelpers.MISSED_STICKY; +var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y; + +var BASE_FORCED = DESCRIPTORS && + (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () { + re2[MATCH] = false; + // RegExp constructor can alter flags and IsRegExp works correct with @@match + return NativeRegExp(re1) !== re1 || NativeRegExp(re2) === re2 || String(NativeRegExp(re1, 'i')) !== '/a/i'; + })); + +var handleDotAll = function (string) { + var length = string.length; + var index = 0; + var result = ''; + var brackets = false; + var chr; + for (; index <= length; index++) { + chr = charAt(string, index); + if (chr === '\\') { + result += chr + charAt(string, ++index); + continue; + } + if (!brackets && chr === '.') { + result += '[\\s\\S]'; + } else { + if (chr === '[') { + brackets = true; + } else if (chr === ']') { + brackets = false; + } result += chr; + } + } return result; +}; + +var handleNCG = function (string) { + var length = string.length; + var index = 0; + var result = ''; + var named = []; + var names = create(null); + var brackets = false; + var ncg = false; + var groupid = 0; + var groupname = ''; + var chr; + for (; index <= length; index++) { + chr = charAt(string, index); + if (chr === '\\') { + chr += charAt(string, ++index); + } else if (chr === ']') { + brackets = false; + } else if (!brackets) switch (true) { + case chr === '[': + brackets = true; + break; + case chr === '(': + if (exec(IS_NCG, stringSlice(string, index + 1))) { + index += 2; + ncg = true; + } + result += chr; + groupid++; + continue; + case chr === '>' && ncg: + if (groupname === '' || hasOwn(names, groupname)) { + throw new SyntaxError('Invalid capture group name'); + } + names[groupname] = true; + named[named.length] = [groupname, groupid]; + ncg = false; + groupname = ''; + continue; + } + if (ncg) groupname += chr; + else result += chr; + } return [result, named]; +}; + +// `RegExp` constructor +// https://tc39.es/ecma262/#sec-regexp-constructor +if (isForced('RegExp', BASE_FORCED)) { + var RegExpWrapper = function RegExp(pattern, flags) { + var thisIsRegExp = isPrototypeOf(RegExpPrototype, this); + var patternIsRegExp = isRegExp(pattern); + var flagsAreUndefined = flags === undefined; + var groups = []; + var rawPattern = pattern; + var rawFlags, dotAll, sticky, handled, result, state; + + if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) { + return pattern; + } + + if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) { + pattern = pattern.source; + if (flagsAreUndefined) flags = getRegExpFlags(rawPattern); + } + + pattern = pattern === undefined ? '' : toString(pattern); + flags = flags === undefined ? '' : toString(flags); + rawPattern = pattern; + + if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) { + dotAll = !!flags && stringIndexOf(flags, 's') > -1; + if (dotAll) flags = replace(flags, /s/g, ''); + } + + rawFlags = flags; + + if (MISSED_STICKY && 'sticky' in re1) { + sticky = !!flags && stringIndexOf(flags, 'y') > -1; + if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, ''); + } + + if (UNSUPPORTED_NCG) { + handled = handleNCG(pattern); + pattern = handled[0]; + groups = handled[1]; + } + + result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper); + + if (dotAll || sticky || groups.length) { + state = enforceInternalState(result); + if (dotAll) { + state.dotAll = true; + state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags); + } + if (sticky) state.sticky = true; + if (groups.length) state.groups = groups; + } + + if (pattern !== rawPattern) try { + // fails in old engines, but we have no alternatives for unsupported regex syntax + createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern); + } catch (error) { /* empty */ } + + return result; + }; + + for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) { + proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]); + } + + RegExpPrototype.constructor = RegExpWrapper; + RegExpWrapper.prototype = RegExpPrototype; + defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true }); +} + +// https://tc39.es/ecma262/#sec-get-regexp-@@species +setSpecies('RegExp'); + +},{"../internals/create-non-enumerable-property":145,"../internals/define-built-in":149,"../internals/descriptors":153,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/global":188,"../internals/has-own-property":189,"../internals/inherit-if-required":196,"../internals/internal-state":199,"../internals/is-forced":205,"../internals/is-regexp":211,"../internals/object-create":229,"../internals/object-get-own-property-names":234,"../internals/object-is-prototype-of":238,"../internals/proxy-accessor":253,"../internals/regexp-get-flags":258,"../internals/regexp-sticky-helpers":259,"../internals/regexp-unsupported-dot-all":260,"../internals/regexp-unsupported-ncg":261,"../internals/set-species":265,"../internals/to-string":291,"../internals/well-known-symbol":306}],338:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var exec = require('../internals/regexp-exec'); + +// `RegExp.prototype.exec` method +// https://tc39.es/ecma262/#sec-regexp.prototype.exec +$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { + exec: exec +}); + +},{"../internals/export":170,"../internals/regexp-exec":256}],339:[function(require,module,exports){ +'use strict'; +var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER; +var defineBuiltIn = require('../internals/define-built-in'); +var anObject = require('../internals/an-object'); +var $toString = require('../internals/to-string'); +var fails = require('../internals/fails'); +var getRegExpFlags = require('../internals/regexp-get-flags'); + +var TO_STRING = 'toString'; +var RegExpPrototype = RegExp.prototype; +var nativeToString = RegExpPrototype[TO_STRING]; + +var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; }); +// FF44- RegExp#toString has a wrong name +var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING; + +// `RegExp.prototype.toString` method +// https://tc39.es/ecma262/#sec-regexp.prototype.tostring +if (NOT_GENERIC || INCORRECT_NAME) { + defineBuiltIn(RegExpPrototype, TO_STRING, function toString() { + var R = anObject(this); + var pattern = $toString(R.source); + var flags = $toString(getRegExpFlags(R)); + return '/' + pattern + '/' + flags; + }, { unsafe: true }); +} + +},{"../internals/an-object":114,"../internals/define-built-in":149,"../internals/fails":171,"../internals/function-name":178,"../internals/regexp-get-flags":258,"../internals/to-string":291}],340:[function(require,module,exports){ +'use strict'; +var collection = require('../internals/collection'); +var collectionStrong = require('../internals/collection-strong'); + +// `Set` constructor +// https://tc39.es/ecma262/#sec-set-objects +collection('Set', function (init) { + return function Set() { return init(this, arguments.length ? arguments[0] : undefined); }; +}, collectionStrong); + +},{"../internals/collection":140,"../internals/collection-strong":139}],341:[function(require,module,exports){ +'use strict'; +// TODO: Remove this module from `core-js@4` since it's replaced to module below +require('../modules/es.set.constructor'); + +},{"../modules/es.set.constructor":340}],342:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var uncurryThis = require('../internals/function-uncurry-this'); +var notARegExp = require('../internals/not-a-regexp'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var toString = require('../internals/to-string'); +var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic'); + +var stringIndexOf = uncurryThis(''.indexOf); + +// `String.prototype.includes` method +// https://tc39.es/ecma262/#sec-string.prototype.includes +$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, { + includes: function includes(searchString /* , position = 0 */) { + return !!~stringIndexOf( + toString(requireObjectCoercible(this)), + toString(notARegExp(searchString)), + arguments.length > 1 ? arguments[1] : undefined + ); + } +}); + +},{"../internals/correct-is-regexp-logic":142,"../internals/export":170,"../internals/function-uncurry-this":181,"../internals/not-a-regexp":227,"../internals/require-object-coercible":262,"../internals/to-string":291}],343:[function(require,module,exports){ +'use strict'; +var charAt = require('../internals/string-multibyte').charAt; +var toString = require('../internals/to-string'); +var InternalStateModule = require('../internals/internal-state'); +var defineIterator = require('../internals/iterator-define'); +var createIterResultObject = require('../internals/create-iter-result-object'); + +var STRING_ITERATOR = 'String Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + +// `String.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-string.prototype-@@iterator +defineIterator(String, 'String', function (iterated) { + setInternalState(this, { + type: STRING_ITERATOR, + string: toString(iterated), + index: 0 + }); +// `%StringIteratorPrototype%.next` method +// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next +}, function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return createIterResultObject(undefined, true); + point = charAt(string, index); + state.index += point.length; + return createIterResultObject(point, false); +}); + +},{"../internals/create-iter-result-object":144,"../internals/internal-state":199,"../internals/iterator-define":216,"../internals/string-multibyte":271,"../internals/to-string":291}],344:[function(require,module,exports){ +'use strict'; +var call = require('../internals/function-call'); +var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic'); +var anObject = require('../internals/an-object'); +var isNullOrUndefined = require('../internals/is-null-or-undefined'); +var toLength = require('../internals/to-length'); +var toString = require('../internals/to-string'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var getMethod = require('../internals/get-method'); +var advanceStringIndex = require('../internals/advance-string-index'); +var regExpExec = require('../internals/regexp-exec-abstract'); + +// @@match logic +fixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) { + return [ + // `String.prototype.match` method + // https://tc39.es/ecma262/#sec-string.prototype.match + function match(regexp) { + var O = requireObjectCoercible(this); + var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH); + return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O)); + }, + // `RegExp.prototype[@@match]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@match + function (string) { + var rx = anObject(this); + var S = toString(string); + var res = maybeCallNative(nativeMatch, rx, S); + + if (res.done) return res.value; + + if (!rx.global) return regExpExec(rx, S); + + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + var A = []; + var n = 0; + var result; + while ((result = regExpExec(rx, S)) !== null) { + var matchStr = toString(result[0]); + A[n] = matchStr; + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + n++; + } + return n === 0 ? null : A; + } + ]; +}); + +},{"../internals/advance-string-index":112,"../internals/an-object":114,"../internals/fix-regexp-well-known-symbol-logic":172,"../internals/function-call":177,"../internals/get-method":186,"../internals/is-null-or-undefined":207,"../internals/regexp-exec-abstract":255,"../internals/require-object-coercible":262,"../internals/to-length":284,"../internals/to-string":291}],345:[function(require,module,exports){ +'use strict'; +var apply = require('../internals/function-apply'); +var call = require('../internals/function-call'); +var uncurryThis = require('../internals/function-uncurry-this'); +var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic'); +var fails = require('../internals/fails'); +var anObject = require('../internals/an-object'); +var isCallable = require('../internals/is-callable'); +var isNullOrUndefined = require('../internals/is-null-or-undefined'); +var toIntegerOrInfinity = require('../internals/to-integer-or-infinity'); +var toLength = require('../internals/to-length'); +var toString = require('../internals/to-string'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var advanceStringIndex = require('../internals/advance-string-index'); +var getMethod = require('../internals/get-method'); +var getSubstitution = require('../internals/get-substitution'); +var regExpExec = require('../internals/regexp-exec-abstract'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var REPLACE = wellKnownSymbol('replace'); +var max = Math.max; +var min = Math.min; +var concat = uncurryThis([].concat); +var push = uncurryThis([].push); +var stringIndexOf = uncurryThis(''.indexOf); +var stringSlice = uncurryThis(''.slice); + +var maybeToString = function (it) { + return it === undefined ? it : String(it); +}; + +// IE <= 11 replaces $0 with the whole match, as if it was $& +// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 +var REPLACE_KEEPS_$0 = (function () { + // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing + return 'a'.replace(/./, '$0') === '$0'; +})(); + +// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string +var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () { + if (/./[REPLACE]) { + return /./[REPLACE]('a', '$0') === ''; + } + return false; +})(); + +var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive + return ''.replace(re, '$<a>') !== '7'; +}); + +// @@replace logic +fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) { + var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; + + return [ + // `String.prototype.replace` method + // https://tc39.es/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = requireObjectCoercible(this); + var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE); + return replacer + ? call(replacer, searchValue, O, replaceValue) + : call(nativeReplace, toString(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace + function (string, replaceValue) { + var rx = anObject(this); + var S = toString(string); + + if ( + typeof replaceValue == 'string' && + stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 && + stringIndexOf(replaceValue, '$<') === -1 + ) { + var res = maybeCallNative(nativeReplace, rx, S, replaceValue); + if (res.done) return res.value; + } + + var functionalReplace = isCallable(replaceValue); + if (!functionalReplace) replaceValue = toString(replaceValue); + + var global = rx.global; + var fullUnicode; + if (global) { + fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + + var results = []; + var result; + while (true) { + result = regExpExec(rx, S); + if (result === null) break; + + push(results, result); + if (!global) break; + + var matchStr = toString(result[0]); + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + } + + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + + var matched = toString(result[0]); + var position = max(min(toIntegerOrInfinity(result.index), S.length), 0); + var captures = []; + var replacement; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j])); + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = concat([matched], captures, position, S); + if (namedCaptures !== undefined) push(replacerArgs, namedCaptures); + replacement = toString(apply(replaceValue, undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + + return accumulatedResult + stringSlice(S, nextSourcePosition); + } + ]; +}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE); + +},{"../internals/advance-string-index":112,"../internals/an-object":114,"../internals/fails":171,"../internals/fix-regexp-well-known-symbol-logic":172,"../internals/function-apply":174,"../internals/function-call":177,"../internals/function-uncurry-this":181,"../internals/get-method":186,"../internals/get-substitution":187,"../internals/is-callable":203,"../internals/is-null-or-undefined":207,"../internals/regexp-exec-abstract":255,"../internals/require-object-coercible":262,"../internals/to-integer-or-infinity":283,"../internals/to-length":284,"../internals/to-string":291,"../internals/well-known-symbol":306}],346:[function(require,module,exports){ +'use strict'; +var call = require('../internals/function-call'); +var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic'); +var anObject = require('../internals/an-object'); +var isNullOrUndefined = require('../internals/is-null-or-undefined'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var sameValue = require('../internals/same-value'); +var toString = require('../internals/to-string'); +var getMethod = require('../internals/get-method'); +var regExpExec = require('../internals/regexp-exec-abstract'); + +// @@search logic +fixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) { + return [ + // `String.prototype.search` method + // https://tc39.es/ecma262/#sec-string.prototype.search + function search(regexp) { + var O = requireObjectCoercible(this); + var searcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH); + return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O)); + }, + // `RegExp.prototype[@@search]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@search + function (string) { + var rx = anObject(this); + var S = toString(string); + var res = maybeCallNative(nativeSearch, rx, S); + + if (res.done) return res.value; + + var previousLastIndex = rx.lastIndex; + if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; + var result = regExpExec(rx, S); + if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; + return result === null ? -1 : result.index; + } + ]; +}); + +},{"../internals/an-object":114,"../internals/fix-regexp-well-known-symbol-logic":172,"../internals/function-call":177,"../internals/get-method":186,"../internals/is-null-or-undefined":207,"../internals/regexp-exec-abstract":255,"../internals/require-object-coercible":262,"../internals/same-value":264,"../internals/to-string":291}],347:[function(require,module,exports){ +'use strict'; +var apply = require('../internals/function-apply'); +var call = require('../internals/function-call'); +var uncurryThis = require('../internals/function-uncurry-this'); +var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic'); +var anObject = require('../internals/an-object'); +var isNullOrUndefined = require('../internals/is-null-or-undefined'); +var isRegExp = require('../internals/is-regexp'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var speciesConstructor = require('../internals/species-constructor'); +var advanceStringIndex = require('../internals/advance-string-index'); +var toLength = require('../internals/to-length'); +var toString = require('../internals/to-string'); +var getMethod = require('../internals/get-method'); +var arraySlice = require('../internals/array-slice'); +var callRegExpExec = require('../internals/regexp-exec-abstract'); +var regexpExec = require('../internals/regexp-exec'); +var stickyHelpers = require('../internals/regexp-sticky-helpers'); +var fails = require('../internals/fails'); + +var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y; +var MAX_UINT32 = 0xFFFFFFFF; +var min = Math.min; +var $push = [].push; +var exec = uncurryThis(/./.exec); +var push = uncurryThis($push); +var stringSlice = uncurryThis(''.slice); + +// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec +// Weex JS has frozen built-in prototypes, so use try / catch wrapper +var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { + // eslint-disable-next-line regexp/no-empty-group -- required for testing + var re = /(?:)/; + var originalExec = re.exec; + re.exec = function () { return originalExec.apply(this, arguments); }; + var result = 'ab'.split(re); + return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; +}); + +// @@split logic +fixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) { + var internalSplit; + if ( + 'abbc'.split(/(b)*/)[1] === 'c' || + // eslint-disable-next-line regexp/no-empty-group -- required for testing + 'test'.split(/(?:)/, -1).length !== 4 || + 'ab'.split(/(?:ab)*/).length !== 2 || + '.'.split(/(.?)(.?)/).length !== 4 || + // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing + '.'.split(/()()/).length > 1 || + ''.split(/.?/).length + ) { + // based on es5-shim implementation, need to rework it + internalSplit = function (separator, limit) { + var string = toString(requireObjectCoercible(this)); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (separator === undefined) return [string]; + // If `separator` is not a regex, use native split + if (!isRegExp(separator)) { + return call(nativeSplit, string, separator, lim); + } + var output = []; + var flags = (separator.ignoreCase ? 'i' : '') + + (separator.multiline ? 'm' : '') + + (separator.unicode ? 'u' : '') + + (separator.sticky ? 'y' : ''); + var lastLastIndex = 0; + // Make `global` and avoid `lastIndex` issues by working with a copy + var separatorCopy = new RegExp(separator.source, flags + 'g'); + var match, lastIndex, lastLength; + while (match = call(regexpExec, separatorCopy, string)) { + lastIndex = separatorCopy.lastIndex; + if (lastIndex > lastLastIndex) { + push(output, stringSlice(string, lastLastIndex, match.index)); + if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1)); + lastLength = match[0].length; + lastLastIndex = lastIndex; + if (output.length >= lim) break; + } + if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop + } + if (lastLastIndex === string.length) { + if (lastLength || !exec(separatorCopy, '')) push(output, ''); + } else push(output, stringSlice(string, lastLastIndex)); + return output.length > lim ? arraySlice(output, 0, lim) : output; + }; + // Chakra, V8 + } else if ('0'.split(undefined, 0).length) { + internalSplit = function (separator, limit) { + return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit); + }; + } else internalSplit = nativeSplit; + + return [ + // `String.prototype.split` method + // https://tc39.es/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = requireObjectCoercible(this); + var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT); + return splitter + ? call(splitter, separator, O, limit) + : call(internalSplit, toString(O), separator, limit); + }, + // `RegExp.prototype[@@split]` method + // https://tc39.es/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (string, limit) { + var rx = anObject(this); + var S = toString(string); + var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit); + + if (res.done) return res.value; + + var C = speciesConstructor(rx, RegExp); + + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + + (rx.multiline ? 'm' : '') + + (rx.unicode ? 'u' : '') + + (UNSUPPORTED_Y ? 'g' : 'y'); + + // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; + var p = 0; + var q = 0; + var A = []; + while (q < S.length) { + splitter.lastIndex = UNSUPPORTED_Y ? 0 : q; + var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S); + var e; + if ( + z === null || + (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p + ) { + q = advanceStringIndex(S, q, unicodeMatching); + } else { + push(A, stringSlice(S, p, q)); + if (A.length === lim) return A; + for (var i = 1; i <= z.length - 1; i++) { + push(A, z[i]); + if (A.length === lim) return A; + } + q = p = e; + } + } + push(A, stringSlice(S, p)); + return A; + } + ]; +}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y); + +},{"../internals/advance-string-index":112,"../internals/an-object":114,"../internals/array-slice":131,"../internals/fails":171,"../internals/fix-regexp-well-known-symbol-logic":172,"../internals/function-apply":174,"../internals/function-call":177,"../internals/function-uncurry-this":181,"../internals/get-method":186,"../internals/is-null-or-undefined":207,"../internals/is-regexp":211,"../internals/regexp-exec":256,"../internals/regexp-exec-abstract":255,"../internals/regexp-sticky-helpers":259,"../internals/require-object-coercible":262,"../internals/species-constructor":270,"../internals/to-length":284,"../internals/to-string":291}],348:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var uncurryThis = require('../internals/function-uncurry-this-clause'); +var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; +var toLength = require('../internals/to-length'); +var toString = require('../internals/to-string'); +var notARegExp = require('../internals/not-a-regexp'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic'); +var IS_PURE = require('../internals/is-pure'); + +var stringSlice = uncurryThis(''.slice); +var min = Math.min; + +var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith'); +// https://github.com/zloirock/core-js/pull/702 +var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () { + var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith'); + return descriptor && !descriptor.writable; +}(); + +// `String.prototype.startsWith` method +// https://tc39.es/ecma262/#sec-string.prototype.startswith +$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, { + startsWith: function startsWith(searchString /* , position = 0 */) { + var that = toString(requireObjectCoercible(this)); + notARegExp(searchString); + var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); + var search = toString(searchString); + return stringSlice(that, index, index + search.length) === search; + } +}); + +},{"../internals/correct-is-regexp-logic":142,"../internals/export":170,"../internals/function-uncurry-this-clause":180,"../internals/is-pure":210,"../internals/not-a-regexp":227,"../internals/object-get-own-property-descriptor":232,"../internals/require-object-coercible":262,"../internals/to-length":284,"../internals/to-string":291}],349:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var $trim = require('../internals/string-trim').trim; +var forcedStringTrimMethod = require('../internals/string-trim-forced'); + +// `String.prototype.trim` method +// https://tc39.es/ecma262/#sec-string.prototype.trim +$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, { + trim: function trim() { + return $trim(this); + } +}); + +},{"../internals/export":170,"../internals/string-trim":273,"../internals/string-trim-forced":272}],350:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var global = require('../internals/global'); +var call = require('../internals/function-call'); +var uncurryThis = require('../internals/function-uncurry-this'); +var IS_PURE = require('../internals/is-pure'); +var DESCRIPTORS = require('../internals/descriptors'); +var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection'); +var fails = require('../internals/fails'); +var hasOwn = require('../internals/has-own-property'); +var isPrototypeOf = require('../internals/object-is-prototype-of'); +var anObject = require('../internals/an-object'); +var toIndexedObject = require('../internals/to-indexed-object'); +var toPropertyKey = require('../internals/to-property-key'); +var $toString = require('../internals/to-string'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); +var nativeObjectCreate = require('../internals/object-create'); +var objectKeys = require('../internals/object-keys'); +var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names'); +var getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external'); +var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); +var definePropertyModule = require('../internals/object-define-property'); +var definePropertiesModule = require('../internals/object-define-properties'); +var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable'); +var defineBuiltIn = require('../internals/define-built-in'); +var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); +var shared = require('../internals/shared'); +var sharedKey = require('../internals/shared-key'); +var hiddenKeys = require('../internals/hidden-keys'); +var uid = require('../internals/uid'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped'); +var defineWellKnownSymbol = require('../internals/well-known-symbol-define'); +var defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive'); +var setToStringTag = require('../internals/set-to-string-tag'); +var InternalStateModule = require('../internals/internal-state'); +var $forEach = require('../internals/array-iteration').forEach; + +var HIDDEN = sharedKey('hidden'); +var SYMBOL = 'Symbol'; +var PROTOTYPE = 'prototype'; + +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(SYMBOL); + +var ObjectPrototype = Object[PROTOTYPE]; +var $Symbol = global.Symbol; +var SymbolPrototype = $Symbol && $Symbol[PROTOTYPE]; +var RangeError = global.RangeError; +var TypeError = global.TypeError; +var QObject = global.QObject; +var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; +var nativeDefineProperty = definePropertyModule.f; +var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f; +var nativePropertyIsEnumerable = propertyIsEnumerableModule.f; +var push = uncurryThis([].push); + +var AllSymbols = shared('symbols'); +var ObjectPrototypeSymbols = shared('op-symbols'); +var WellKnownSymbolsStore = shared('wks'); + +// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 +var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; + +// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 +var fallbackDefineProperty = function (O, P, Attributes) { + var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P); + if (ObjectPrototypeDescriptor) delete ObjectPrototype[P]; + nativeDefineProperty(O, P, Attributes); + if (ObjectPrototypeDescriptor && O !== ObjectPrototype) { + nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor); + } +}; + +var setSymbolDescriptor = DESCRIPTORS && fails(function () { + return nativeObjectCreate(nativeDefineProperty({}, 'a', { + get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; } + })).a !== 7; +}) ? fallbackDefineProperty : nativeDefineProperty; + +var wrap = function (tag, description) { + var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype); + setInternalState(symbol, { + type: SYMBOL, + tag: tag, + description: description + }); + if (!DESCRIPTORS) symbol.description = description; + return symbol; +}; + +var $defineProperty = function defineProperty(O, P, Attributes) { + if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes); + anObject(O); + var key = toPropertyKey(P); + anObject(Attributes); + if (hasOwn(AllSymbols, key)) { + if (!Attributes.enumerable) { + if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, nativeObjectCreate(null))); + O[HIDDEN][key] = true; + } else { + if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; + Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) }); + } return setSymbolDescriptor(O, key, Attributes); + } return nativeDefineProperty(O, key, Attributes); +}; + +var $defineProperties = function defineProperties(O, Properties) { + anObject(O); + var properties = toIndexedObject(Properties); + var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); + $forEach(keys, function (key) { + if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]); + }); + return O; +}; + +var $create = function create(O, Properties) { + return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties); +}; + +var $propertyIsEnumerable = function propertyIsEnumerable(V) { + var P = toPropertyKey(V); + var enumerable = call(nativePropertyIsEnumerable, this, P); + if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false; + return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P] + ? enumerable : true; +}; + +var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { + var it = toIndexedObject(O); + var key = toPropertyKey(P); + if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return; + var descriptor = nativeGetOwnPropertyDescriptor(it, key); + if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) { + descriptor.enumerable = true; + } + return descriptor; +}; + +var $getOwnPropertyNames = function getOwnPropertyNames(O) { + var names = nativeGetOwnPropertyNames(toIndexedObject(O)); + var result = []; + $forEach(names, function (key) { + if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key); + }); + return result; +}; + +var $getOwnPropertySymbols = function (O) { + var IS_OBJECT_PROTOTYPE = O === ObjectPrototype; + var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); + var result = []; + $forEach(names, function (key) { + if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) { + push(result, AllSymbols[key]); + } + }); + return result; +}; + +// `Symbol` constructor +// https://tc39.es/ecma262/#sec-symbol-constructor +if (!NATIVE_SYMBOL) { + $Symbol = function Symbol() { + if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor'); + var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]); + var tag = uid(description); + var setter = function (value) { + var $this = this === undefined ? global : this; + if ($this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value); + if (hasOwn($this, HIDDEN) && hasOwn($this[HIDDEN], tag)) $this[HIDDEN][tag] = false; + var descriptor = createPropertyDescriptor(1, value); + try { + setSymbolDescriptor($this, tag, descriptor); + } catch (error) { + if (!(error instanceof RangeError)) throw error; + fallbackDefineProperty($this, tag, descriptor); + } + }; + if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter }); + return wrap(tag, description); + }; + + SymbolPrototype = $Symbol[PROTOTYPE]; + + defineBuiltIn(SymbolPrototype, 'toString', function toString() { + return getInternalState(this).tag; + }); + + defineBuiltIn($Symbol, 'withoutSetter', function (description) { + return wrap(uid(description), description); + }); + + propertyIsEnumerableModule.f = $propertyIsEnumerable; + definePropertyModule.f = $defineProperty; + definePropertiesModule.f = $defineProperties; + getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor; + getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames; + getOwnPropertySymbolsModule.f = $getOwnPropertySymbols; + + wrappedWellKnownSymbolModule.f = function (name) { + return wrap(wellKnownSymbol(name), name); + }; + + if (DESCRIPTORS) { + // https://github.com/tc39/proposal-Symbol-description + defineBuiltInAccessor(SymbolPrototype, 'description', { + configurable: true, + get: function description() { + return getInternalState(this).description; + } + }); + if (!IS_PURE) { + defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); + } + } +} + +$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, { + Symbol: $Symbol +}); + +$forEach(objectKeys(WellKnownSymbolsStore), function (name) { + defineWellKnownSymbol(name); +}); + +$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, { + useSetter: function () { USE_SETTER = true; }, + useSimple: function () { USE_SETTER = false; } +}); + +$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, { + // `Object.create` method + // https://tc39.es/ecma262/#sec-object.create + create: $create, + // `Object.defineProperty` method + // https://tc39.es/ecma262/#sec-object.defineproperty + defineProperty: $defineProperty, + // `Object.defineProperties` method + // https://tc39.es/ecma262/#sec-object.defineproperties + defineProperties: $defineProperties, + // `Object.getOwnPropertyDescriptor` method + // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors + getOwnPropertyDescriptor: $getOwnPropertyDescriptor +}); + +$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, { + // `Object.getOwnPropertyNames` method + // https://tc39.es/ecma262/#sec-object.getownpropertynames + getOwnPropertyNames: $getOwnPropertyNames +}); + +// `Symbol.prototype[@@toPrimitive]` method +// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive +defineSymbolToPrimitive(); + +// `Symbol.prototype[@@toStringTag]` property +// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag +setToStringTag($Symbol, SYMBOL); + +hiddenKeys[HIDDEN] = true; + +},{"../internals/an-object":114,"../internals/array-iteration":125,"../internals/create-property-descriptor":146,"../internals/define-built-in":149,"../internals/define-built-in-accessor":148,"../internals/descriptors":153,"../internals/export":170,"../internals/fails":171,"../internals/function-call":177,"../internals/function-uncurry-this":181,"../internals/global":188,"../internals/has-own-property":189,"../internals/hidden-keys":190,"../internals/internal-state":199,"../internals/is-pure":210,"../internals/object-create":229,"../internals/object-define-properties":230,"../internals/object-define-property":231,"../internals/object-get-own-property-descriptor":232,"../internals/object-get-own-property-names":234,"../internals/object-get-own-property-names-external":233,"../internals/object-get-own-property-symbols":235,"../internals/object-is-prototype-of":238,"../internals/object-keys":240,"../internals/object-property-is-enumerable":241,"../internals/set-to-string-tag":266,"../internals/shared":269,"../internals/shared-key":267,"../internals/symbol-constructor-detection":274,"../internals/symbol-define-to-primitive":275,"../internals/to-indexed-object":282,"../internals/to-property-key":289,"../internals/to-string":291,"../internals/uid":299,"../internals/well-known-symbol":306,"../internals/well-known-symbol-define":304,"../internals/well-known-symbol-wrapped":305}],351:[function(require,module,exports){ +// `Symbol.prototype.description` getter +// https://tc39.es/ecma262/#sec-symbol.prototype.description +'use strict'; +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var global = require('../internals/global'); +var uncurryThis = require('../internals/function-uncurry-this'); +var hasOwn = require('../internals/has-own-property'); +var isCallable = require('../internals/is-callable'); +var isPrototypeOf = require('../internals/object-is-prototype-of'); +var toString = require('../internals/to-string'); +var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); +var copyConstructorProperties = require('../internals/copy-constructor-properties'); + +var NativeSymbol = global.Symbol; +var SymbolPrototype = NativeSymbol && NativeSymbol.prototype; + +if (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) || + // Safari 12 bug + NativeSymbol().description !== undefined +)) { + var EmptyStringDescriptionStore = {}; + // wrap Symbol constructor for correct work with undefined description + var SymbolWrapper = function Symbol() { + var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]); + var result = isPrototypeOf(SymbolPrototype, this) + ? new NativeSymbol(description) + // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)' + : description === undefined ? NativeSymbol() : NativeSymbol(description); + if (description === '') EmptyStringDescriptionStore[result] = true; + return result; + }; + + copyConstructorProperties(SymbolWrapper, NativeSymbol); + SymbolWrapper.prototype = SymbolPrototype; + SymbolPrototype.constructor = SymbolWrapper; + + var NATIVE_SYMBOL = String(NativeSymbol('description detection')) === 'Symbol(description detection)'; + var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf); + var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString); + var regexp = /^Symbol\((.*)\)[^)]+$/; + var replace = uncurryThis(''.replace); + var stringSlice = uncurryThis(''.slice); + + defineBuiltInAccessor(SymbolPrototype, 'description', { + configurable: true, + get: function description() { + var symbol = thisSymbolValue(this); + if (hasOwn(EmptyStringDescriptionStore, symbol)) return ''; + var string = symbolDescriptiveString(symbol); + var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1'); + return desc === '' ? undefined : desc; + } + }); + + $({ global: true, constructor: true, forced: true }, { + Symbol: SymbolWrapper + }); +} + +},{"../internals/copy-constructor-properties":141,"../internals/define-built-in-accessor":148,"../internals/descriptors":153,"../internals/export":170,"../internals/function-uncurry-this":181,"../internals/global":188,"../internals/has-own-property":189,"../internals/is-callable":203,"../internals/object-is-prototype-of":238,"../internals/to-string":291}],352:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var getBuiltIn = require('../internals/get-built-in'); +var hasOwn = require('../internals/has-own-property'); +var toString = require('../internals/to-string'); +var shared = require('../internals/shared'); +var NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection'); + +var StringToSymbolRegistry = shared('string-to-symbol-registry'); +var SymbolToStringRegistry = shared('symbol-to-string-registry'); + +// `Symbol.for` method +// https://tc39.es/ecma262/#sec-symbol.for +$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, { + 'for': function (key) { + var string = toString(key); + if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; + var symbol = getBuiltIn('Symbol')(string); + StringToSymbolRegistry[string] = symbol; + SymbolToStringRegistry[symbol] = string; + return symbol; + } +}); + +},{"../internals/export":170,"../internals/get-built-in":182,"../internals/has-own-property":189,"../internals/shared":269,"../internals/symbol-registry-detection":276,"../internals/to-string":291}],353:[function(require,module,exports){ +'use strict'; +var defineWellKnownSymbol = require('../internals/well-known-symbol-define'); + +// `Symbol.iterator` well-known symbol +// https://tc39.es/ecma262/#sec-symbol.iterator +defineWellKnownSymbol('iterator'); + +},{"../internals/well-known-symbol-define":304}],354:[function(require,module,exports){ +'use strict'; +// TODO: Remove this module from `core-js@4` since it's split to modules listed below +require('../modules/es.symbol.constructor'); +require('../modules/es.symbol.for'); +require('../modules/es.symbol.key-for'); +require('../modules/es.json.stringify'); +require('../modules/es.object.get-own-property-symbols'); + +},{"../modules/es.json.stringify":323,"../modules/es.object.get-own-property-symbols":327,"../modules/es.symbol.constructor":350,"../modules/es.symbol.for":352,"../modules/es.symbol.key-for":355}],355:[function(require,module,exports){ +'use strict'; +var $ = require('../internals/export'); +var hasOwn = require('../internals/has-own-property'); +var isSymbol = require('../internals/is-symbol'); +var tryToString = require('../internals/try-to-string'); +var shared = require('../internals/shared'); +var NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection'); + +var SymbolToStringRegistry = shared('symbol-to-string-registry'); + +// `Symbol.keyFor` method +// https://tc39.es/ecma262/#sec-symbol.keyfor +$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, { + keyFor: function keyFor(sym) { + if (!isSymbol(sym)) throw new TypeError(tryToString(sym) + ' is not a symbol'); + if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; + } +}); + +},{"../internals/export":170,"../internals/has-own-property":189,"../internals/is-symbol":212,"../internals/shared":269,"../internals/symbol-registry-detection":276,"../internals/try-to-string":293}],356:[function(require,module,exports){ +'use strict'; +var uncurryThis = require('../internals/function-uncurry-this'); +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $ArrayCopyWithin = require('../internals/array-copy-within'); + +var u$ArrayCopyWithin = uncurryThis($ArrayCopyWithin); +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.copyWithin` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin +exportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) { + return u$ArrayCopyWithin(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/array-copy-within":119,"../internals/function-uncurry-this":181}],357:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $every = require('../internals/array-iteration').every; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.every` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every +exportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) { + return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/array-iteration":125}],358:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $fill = require('../internals/array-fill'); +var toBigInt = require('../internals/to-big-int'); +var classof = require('../internals/classof'); +var call = require('../internals/function-call'); +var uncurryThis = require('../internals/function-uncurry-this'); +var fails = require('../internals/fails'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var slice = uncurryThis(''.slice); + +// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18 +var CONVERSION_BUG = fails(function () { + var count = 0; + // eslint-disable-next-line es/no-typed-arrays -- safe + new Int8Array(2).fill({ valueOf: function () { return count++; } }); + return count !== 1; +}); + +// `%TypedArray%.prototype.fill` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill +exportTypedArrayMethod('fill', function fill(value /* , start, end */) { + var length = arguments.length; + aTypedArray(this); + var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value; + return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined); +}, CONVERSION_BUG); + +},{"../internals/array-buffer-view-core":117,"../internals/array-fill":120,"../internals/classof":138,"../internals/fails":171,"../internals/function-call":177,"../internals/function-uncurry-this":181,"../internals/to-big-int":280}],359:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $filter = require('../internals/array-iteration').filter; +var fromSpeciesAndList = require('../internals/typed-array-from-species-and-list'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.filter` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter +exportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) { + var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + return fromSpeciesAndList(this, list); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/array-iteration":125,"../internals/typed-array-from-species-and-list":296}],360:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $findIndex = require('../internals/array-iteration').findIndex; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.findIndex` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex +exportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) { + return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/array-iteration":125}],361:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $find = require('../internals/array-iteration').find; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.find` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find +exportTypedArrayMethod('find', function find(predicate /* , thisArg */) { + return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/array-iteration":125}],362:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $forEach = require('../internals/array-iteration').forEach; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.forEach` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach +exportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) { + $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/array-iteration":125}],363:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $includes = require('../internals/array-includes').includes; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.includes` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes +exportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) { + return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/array-includes":124}],364:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $indexOf = require('../internals/array-includes').indexOf; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.indexOf` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof +exportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) { + return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/array-includes":124}],365:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var fails = require('../internals/fails'); +var uncurryThis = require('../internals/function-uncurry-this'); +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var ArrayIterators = require('../modules/es.array.iterator'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var ITERATOR = wellKnownSymbol('iterator'); +var Uint8Array = global.Uint8Array; +var arrayValues = uncurryThis(ArrayIterators.values); +var arrayKeys = uncurryThis(ArrayIterators.keys); +var arrayEntries = uncurryThis(ArrayIterators.entries); +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var TypedArrayPrototype = Uint8Array && Uint8Array.prototype; + +var GENERIC = !fails(function () { + TypedArrayPrototype[ITERATOR].call([1]); +}); + +var ITERATOR_IS_VALUES = !!TypedArrayPrototype + && TypedArrayPrototype.values + && TypedArrayPrototype[ITERATOR] === TypedArrayPrototype.values + && TypedArrayPrototype.values.name === 'values'; + +var typedArrayValues = function values() { + return arrayValues(aTypedArray(this)); +}; + +// `%TypedArray%.prototype.entries` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries +exportTypedArrayMethod('entries', function entries() { + return arrayEntries(aTypedArray(this)); +}, GENERIC); +// `%TypedArray%.prototype.keys` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys +exportTypedArrayMethod('keys', function keys() { + return arrayKeys(aTypedArray(this)); +}, GENERIC); +// `%TypedArray%.prototype.values` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values +exportTypedArrayMethod('values', typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' }); +// `%TypedArray%.prototype[@@iterator]` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator +exportTypedArrayMethod(ITERATOR, typedArrayValues, GENERIC || !ITERATOR_IS_VALUES, { name: 'values' }); + +},{"../internals/array-buffer-view-core":117,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/global":188,"../internals/well-known-symbol":306,"../modules/es.array.iterator":316}],366:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var uncurryThis = require('../internals/function-uncurry-this'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var $join = uncurryThis([].join); + +// `%TypedArray%.prototype.join` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join +exportTypedArrayMethod('join', function join(separator) { + return $join(aTypedArray(this), separator); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/function-uncurry-this":181}],367:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var apply = require('../internals/function-apply'); +var $lastIndexOf = require('../internals/array-last-index-of'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.lastIndexOf` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof +exportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) { + var length = arguments.length; + return apply($lastIndexOf, aTypedArray(this), length > 1 ? [searchElement, arguments[1]] : [searchElement]); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/array-last-index-of":126,"../internals/function-apply":174}],368:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $map = require('../internals/array-iteration').map; +var typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.map` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map +exportTypedArrayMethod('map', function map(mapfn /* , thisArg */) { + return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) { + return new (typedArraySpeciesConstructor(O))(length); + }); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/array-iteration":125,"../internals/typed-array-species-constructor":298}],369:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $reduceRight = require('../internals/array-reduce').right; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.reduceRight` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright +exportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) { + var length = arguments.length; + return $reduceRight(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/array-reduce":129}],370:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $reduce = require('../internals/array-reduce').left; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.reduce` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce +exportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) { + var length = arguments.length; + return $reduce(aTypedArray(this), callbackfn, length, length > 1 ? arguments[1] : undefined); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/array-reduce":129}],371:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var floor = Math.floor; + +// `%TypedArray%.prototype.reverse` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse +exportTypedArrayMethod('reverse', function reverse() { + var that = this; + var length = aTypedArray(that).length; + var middle = floor(length / 2); + var index = 0; + var value; + while (index < middle) { + value = that[index]; + that[index++] = that[--length]; + that[length] = value; + } return that; +}); + +},{"../internals/array-buffer-view-core":117}],372:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var call = require('../internals/function-call'); +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var lengthOfArrayLike = require('../internals/length-of-array-like'); +var toOffset = require('../internals/to-offset'); +var toIndexedObject = require('../internals/to-object'); +var fails = require('../internals/fails'); + +var RangeError = global.RangeError; +var Int8Array = global.Int8Array; +var Int8ArrayPrototype = Int8Array && Int8Array.prototype; +var $set = Int8ArrayPrototype && Int8ArrayPrototype.set; +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +var WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () { + // eslint-disable-next-line es/no-typed-arrays -- required for testing + var array = new Uint8ClampedArray(2); + call($set, array, { length: 1, 0: 3 }, 1); + return array[1] !== 3; +}); + +// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other +var TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () { + var array = new Int8Array(2); + array.set(1); + array.set('2', 1); + return array[0] !== 0 || array[1] !== 2; +}); + +// `%TypedArray%.prototype.set` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set +exportTypedArrayMethod('set', function set(arrayLike /* , offset */) { + aTypedArray(this); + var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1); + var src = toIndexedObject(arrayLike); + if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset); + var length = this.length; + var len = lengthOfArrayLike(src); + var index = 0; + if (len + offset > length) throw new RangeError('Wrong length'); + while (index < len) this[offset + index] = src[index++]; +}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG); + +},{"../internals/array-buffer-view-core":117,"../internals/fails":171,"../internals/function-call":177,"../internals/global":188,"../internals/length-of-array-like":219,"../internals/to-object":285,"../internals/to-offset":286}],373:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor'); +var fails = require('../internals/fails'); +var arraySlice = require('../internals/array-slice'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +var FORCED = fails(function () { + // eslint-disable-next-line es/no-typed-arrays -- required for testing + new Int8Array(1).slice(); +}); + +// `%TypedArray%.prototype.slice` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice +exportTypedArrayMethod('slice', function slice(start, end) { + var list = arraySlice(aTypedArray(this), start, end); + var C = typedArraySpeciesConstructor(this); + var index = 0; + var length = list.length; + var result = new C(length); + while (length > index) result[index] = list[index++]; + return result; +}, FORCED); + +},{"../internals/array-buffer-view-core":117,"../internals/array-slice":131,"../internals/fails":171,"../internals/typed-array-species-constructor":298}],374:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var $some = require('../internals/array-iteration').some; + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.some` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some +exportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) { + return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/array-iteration":125}],375:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var uncurryThis = require('../internals/function-uncurry-this-clause'); +var fails = require('../internals/fails'); +var aCallable = require('../internals/a-callable'); +var internalSort = require('../internals/array-sort'); +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var FF = require('../internals/engine-ff-version'); +var IE_OR_EDGE = require('../internals/engine-is-ie-or-edge'); +var V8 = require('../internals/engine-v8-version'); +var WEBKIT = require('../internals/engine-webkit-version'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var Uint16Array = global.Uint16Array; +var nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort); + +// WebKit +var ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () { + nativeSort(new Uint16Array(2), null); +}) && fails(function () { + nativeSort(new Uint16Array(2), {}); +})); + +var STABLE_SORT = !!nativeSort && !fails(function () { + // feature detection can be too slow, so check engines versions + if (V8) return V8 < 74; + if (FF) return FF < 67; + if (IE_OR_EDGE) return true; + if (WEBKIT) return WEBKIT < 602; + + var array = new Uint16Array(516); + var expected = Array(516); + var index, mod; + + for (index = 0; index < 516; index++) { + mod = index % 4; + array[index] = 515 - index; + expected[index] = index - 2 * mod + 3; + } + + nativeSort(array, function (a, b) { + return (a / 4 | 0) - (b / 4 | 0); + }); + + for (index = 0; index < 516; index++) { + if (array[index] !== expected[index]) return true; + } +}); + +var getSortCompare = function (comparefn) { + return function (x, y) { + if (comparefn !== undefined) return +comparefn(x, y) || 0; + // eslint-disable-next-line no-self-compare -- NaN check + if (y !== y) return -1; + // eslint-disable-next-line no-self-compare -- NaN check + if (x !== x) return 1; + if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1; + return x > y; + }; +}; + +// `%TypedArray%.prototype.sort` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort +exportTypedArrayMethod('sort', function sort(comparefn) { + if (comparefn !== undefined) aCallable(comparefn); + if (STABLE_SORT) return nativeSort(this, comparefn); + + return internalSort(aTypedArray(this), getSortCompare(comparefn)); +}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS); + +},{"../internals/a-callable":108,"../internals/array-buffer-view-core":117,"../internals/array-sort":132,"../internals/engine-ff-version":158,"../internals/engine-is-ie-or-edge":161,"../internals/engine-v8-version":167,"../internals/engine-webkit-version":168,"../internals/fails":171,"../internals/function-uncurry-this-clause":180,"../internals/global":188}],376:[function(require,module,exports){ +'use strict'; +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var toLength = require('../internals/to-length'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor'); + +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; + +// `%TypedArray%.prototype.subarray` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray +exportTypedArrayMethod('subarray', function subarray(begin, end) { + var O = aTypedArray(this); + var length = O.length; + var beginIndex = toAbsoluteIndex(begin, length); + var C = typedArraySpeciesConstructor(O); + return new C( + O.buffer, + O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT, + toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex) + ); +}); + +},{"../internals/array-buffer-view-core":117,"../internals/to-absolute-index":279,"../internals/to-length":284,"../internals/typed-array-species-constructor":298}],377:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var apply = require('../internals/function-apply'); +var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); +var fails = require('../internals/fails'); +var arraySlice = require('../internals/array-slice'); + +var Int8Array = global.Int8Array; +var aTypedArray = ArrayBufferViewCore.aTypedArray; +var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod; +var $toLocaleString = [].toLocaleString; + +// iOS Safari 6.x fails here +var TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () { + $toLocaleString.call(new Int8Array(1)); +}); + +var FORCED = fails(function () { + return [1, 2].toLocaleString() !== new Int8Array([1, 2]).toLocaleString(); +}) || !fails(function () { + Int8Array.prototype.toLocaleString.call([1, 2]); +}); + +// `%TypedArray%.prototype.toLocaleString` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring +exportTypedArrayMethod('toLocaleString', function toLocaleString() { + return apply( + $toLocaleString, + TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this), + arraySlice(arguments) + ); +}, FORCED); + +},{"../internals/array-buffer-view-core":117,"../internals/array-slice":131,"../internals/fails":171,"../internals/function-apply":174,"../internals/global":188}],378:[function(require,module,exports){ +'use strict'; +var exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod; +var fails = require('../internals/fails'); +var global = require('../internals/global'); +var uncurryThis = require('../internals/function-uncurry-this'); + +var Uint8Array = global.Uint8Array; +var Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {}; +var arrayToString = [].toString; +var join = uncurryThis([].join); + +if (fails(function () { arrayToString.call({}); })) { + arrayToString = function toString() { + return join(this); + }; +} + +var IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString !== arrayToString; + +// `%TypedArray%.prototype.toString` method +// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring +exportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD); + +},{"../internals/array-buffer-view-core":117,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/global":188}],379:[function(require,module,exports){ +'use strict'; +var createTypedArrayConstructor = require('../internals/typed-array-constructor'); + +// `Uint8Array` constructor +// https://tc39.es/ecma262/#sec-typedarray-objects +createTypedArrayConstructor('Uint8', function (init) { + return function Uint8Array(data, byteOffset, length) { + return init(this, data, byteOffset, length); + }; +}); + +},{"../internals/typed-array-constructor":294}],380:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var DOMIterables = require('../internals/dom-iterables'); +var DOMTokenListPrototype = require('../internals/dom-token-list-prototype'); +var forEach = require('../internals/array-for-each'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); + +var handlePrototype = function (CollectionPrototype) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { + createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach); + } catch (error) { + CollectionPrototype.forEach = forEach; + } +}; + +for (var COLLECTION_NAME in DOMIterables) { + if (DOMIterables[COLLECTION_NAME]) { + handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype); + } +} + +handlePrototype(DOMTokenListPrototype); + +},{"../internals/array-for-each":121,"../internals/create-non-enumerable-property":145,"../internals/dom-iterables":156,"../internals/dom-token-list-prototype":157,"../internals/global":188}],381:[function(require,module,exports){ +'use strict'; +var global = require('../internals/global'); +var DOMIterables = require('../internals/dom-iterables'); +var DOMTokenListPrototype = require('../internals/dom-token-list-prototype'); +var ArrayIteratorMethods = require('../modules/es.array.iterator'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var setToStringTag = require('../internals/set-to-string-tag'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var ITERATOR = wellKnownSymbol('iterator'); +var ArrayValues = ArrayIteratorMethods.values; + +var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) { + if (CollectionPrototype) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype[ITERATOR] !== ArrayValues) try { + createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues); + } catch (error) { + CollectionPrototype[ITERATOR] = ArrayValues; + } + setToStringTag(CollectionPrototype, COLLECTION_NAME, true); + if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) { + // some Chrome versions have non-configurable methods on DOMTokenList + if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try { + createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]); + } catch (error) { + CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]; + } + } + } +}; + +for (var COLLECTION_NAME in DOMIterables) { + handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME); +} + +handlePrototype(DOMTokenListPrototype, 'DOMTokenList'); + +},{"../internals/create-non-enumerable-property":145,"../internals/dom-iterables":156,"../internals/dom-token-list-prototype":157,"../internals/global":188,"../internals/set-to-string-tag":266,"../internals/well-known-symbol":306,"../modules/es.array.iterator":316}],382:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. + +function isArray(arg) { + if (Array.isArray) { + return Array.isArray(arg); + } + return objectToString(arg) === '[object Array]'; +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('buffer').Buffer.isBuffer; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + +},{"buffer":103}],383:[function(require,module,exports){ +/* + * Date Format 1.2.3 + * (c) 2007-2009 Steven Levithan <stevenlevithan.com> + * MIT license + * + * Includes enhancements by Scott Trenda <scott.trenda.net> + * and Kris Kowal <cixar.com/~kris.kowal/> + * + * Accepts a date, a mask, or a date and a mask. + * Returns a formatted version of the given date. + * The date defaults to the current date/time. + * The mask defaults to dateFormat.masks.default. + */ + +(function(global) { + 'use strict'; + + var dateFormat = (function() { + var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|'[^']*'|'[^']*'/g; + var timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g; + var timezoneClip = /[^-+\dA-Z]/g; + + // Regexes and supporting functions are cached through closure + return function (date, mask, utc, gmt) { + + // You can't provide utc if you skip other args (use the 'UTC:' mask prefix) + if (arguments.length === 1 && kindOf(date) === 'string' && !/\d/.test(date)) { + mask = date; + date = undefined; + } + + date = date || new Date; + + if(!(date instanceof Date)) { + date = new Date(date); + } + + if (isNaN(date)) { + throw TypeError('Invalid date'); + } + + mask = String(dateFormat.masks[mask] || mask || dateFormat.masks['default']); + + // Allow setting the utc/gmt argument via the mask + var maskSlice = mask.slice(0, 4); + if (maskSlice === 'UTC:' || maskSlice === 'GMT:') { + mask = mask.slice(4); + utc = true; + if (maskSlice === 'GMT:') { + gmt = true; + } + } + + var _ = utc ? 'getUTC' : 'get'; + var d = date[_ + 'Date'](); + var D = date[_ + 'Day'](); + var m = date[_ + 'Month'](); + var y = date[_ + 'FullYear'](); + var H = date[_ + 'Hours'](); + var M = date[_ + 'Minutes'](); + var s = date[_ + 'Seconds'](); + var L = date[_ + 'Milliseconds'](); + var o = utc ? 0 : date.getTimezoneOffset(); + var W = getWeek(date); + var N = getDayOfWeek(date); + var flags = { + d: d, + dd: pad(d), + ddd: dateFormat.i18n.dayNames[D], + dddd: dateFormat.i18n.dayNames[D + 7], + m: m + 1, + mm: pad(m + 1), + mmm: dateFormat.i18n.monthNames[m], + mmmm: dateFormat.i18n.monthNames[m + 12], + yy: String(y).slice(2), + yyyy: y, + h: H % 12 || 12, + hh: pad(H % 12 || 12), + H: H, + HH: pad(H), + M: M, + MM: pad(M), + s: s, + ss: pad(s), + l: pad(L, 3), + L: pad(Math.round(L / 10)), + t: H < 12 ? 'a' : 'p', + tt: H < 12 ? 'am' : 'pm', + T: H < 12 ? 'A' : 'P', + TT: H < 12 ? 'AM' : 'PM', + Z: gmt ? 'GMT' : utc ? 'UTC' : (String(date).match(timezone) || ['']).pop().replace(timezoneClip, ''), + o: (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), + S: ['th', 'st', 'nd', 'rd'][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10], + W: W, + N: N + }; + + return mask.replace(token, function (match) { + if (match in flags) { + return flags[match]; + } + return match.slice(1, match.length - 1); + }); + }; + })(); + + dateFormat.masks = { + 'default': 'ddd mmm dd yyyy HH:MM:ss', + 'shortDate': 'm/d/yy', + 'mediumDate': 'mmm d, yyyy', + 'longDate': 'mmmm d, yyyy', + 'fullDate': 'dddd, mmmm d, yyyy', + 'shortTime': 'h:MM TT', + 'mediumTime': 'h:MM:ss TT', + 'longTime': 'h:MM:ss TT Z', + 'isoDate': 'yyyy-mm-dd', + 'isoTime': 'HH:MM:ss', + 'isoDateTime': 'yyyy-mm-dd\'T\'HH:MM:sso', + 'isoUtcDateTime': 'UTC:yyyy-mm-dd\'T\'HH:MM:ss\'Z\'', + 'expiresHeaderFormat': 'ddd, dd mmm yyyy HH:MM:ss Z' + }; + + // Internationalization strings + dateFormat.i18n = { + dayNames: [ + 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', + 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' + ], + monthNames: [ + 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', + 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' + ] + }; + +function pad(val, len) { + val = String(val); + len = len || 2; + while (val.length < len) { + val = '0' + val; + } + return val; +} + +/** + * Get the ISO 8601 week number + * Based on comments from + * http://techblog.procurios.nl/k/n618/news/view/33796/14863/Calculate-ISO-8601-week-and-year-in-javascript.html + * + * @param {Object} `date` + * @return {Number} + */ +function getWeek(date) { + // Remove time components of date + var targetThursday = new Date(date.getFullYear(), date.getMonth(), date.getDate()); + + // Change date to Thursday same week + targetThursday.setDate(targetThursday.getDate() - ((targetThursday.getDay() + 6) % 7) + 3); + + // Take January 4th as it is always in week 1 (see ISO 8601) + var firstThursday = new Date(targetThursday.getFullYear(), 0, 4); + + // Change date to Thursday same week + firstThursday.setDate(firstThursday.getDate() - ((firstThursday.getDay() + 6) % 7) + 3); + + // Check if daylight-saving-time-switch occurred and correct for it + var ds = targetThursday.getTimezoneOffset() - firstThursday.getTimezoneOffset(); + targetThursday.setHours(targetThursday.getHours() - ds); + + // Number of weeks between target Thursday and first Thursday + var weekDiff = (targetThursday - firstThursday) / (86400000*7); + return 1 + Math.floor(weekDiff); +} + +/** + * Get ISO-8601 numeric representation of the day of the week + * 1 (for Monday) through 7 (for Sunday) + * + * @param {Object} `date` + * @return {Number} + */ +function getDayOfWeek(date) { + var dow = date.getDay(); + if(dow === 0) { + dow = 7; + } + return dow; +} + +/** + * kind-of shortcut + * @param {*} val + * @return {String} + */ +function kindOf(val) { + if (val === null) { + return 'null'; + } + + if (val === undefined) { + return 'undefined'; + } + + if (typeof val !== 'object') { + return typeof val; + } + + if (Array.isArray(val)) { + return 'array'; + } + + return {}.toString.call(val) + .slice(8, -1).toLowerCase(); +}; + + + + if (typeof define === 'function' && define.amd) { + define(function () { + return dateFormat; + }); + } else if (typeof exports === 'object') { + module.exports = dateFormat; + } else { + global.dateFormat = dateFormat; + } +})(this); + +},{}],384:[function(require,module,exports){ +'use strict'; + +var hasPropertyDescriptors = require('has-property-descriptors')(); + +var GetIntrinsic = require('get-intrinsic'); + +var $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true); +if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + } catch (e) { + // IE 8 has a broken defineProperty + $defineProperty = false; + } +} + +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var gopd = require('gopd'); + +/** @type {(obj: Record<PropertyKey, unknown>, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */ +module.exports = function defineDataProperty( + obj, + property, + value +) { + if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) { + throw new $TypeError('`obj` must be an object or a function`'); + } + if (typeof property !== 'string' && typeof property !== 'symbol') { + throw new $TypeError('`property` must be a string or a symbol`'); + } + if (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) { + throw new $TypeError('`nonEnumerable`, if provided, must be a boolean or null'); + } + if (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) { + throw new $TypeError('`nonWritable`, if provided, must be a boolean or null'); + } + if (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) { + throw new $TypeError('`nonConfigurable`, if provided, must be a boolean or null'); + } + if (arguments.length > 6 && typeof arguments[6] !== 'boolean') { + throw new $TypeError('`loose`, if provided, must be a boolean'); + } + + var nonEnumerable = arguments.length > 3 ? arguments[3] : null; + var nonWritable = arguments.length > 4 ? arguments[4] : null; + var nonConfigurable = arguments.length > 5 ? arguments[5] : null; + var loose = arguments.length > 6 ? arguments[6] : false; + + /* @type {false | TypedPropertyDescriptor<unknown>} */ + var desc = !!gopd && gopd(obj, property); + + if ($defineProperty) { + $defineProperty(obj, property, { + configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable, + enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable, + value: value, + writable: nonWritable === null && desc ? desc.writable : !nonWritable + }); + } else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) { + // must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable + obj[property] = value; // eslint-disable-line no-param-reassign + } else { + throw new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.'); + } +}; + +},{"get-intrinsic":390,"gopd":391,"has-property-descriptors":392}],385:[function(require,module,exports){ +/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */ + +'use strict'; + +/** + * Module variables. + * @private + */ + +var matchHtmlRegExp = /["'&<>]/; + +/** + * Module exports. + * @public + */ + +module.exports = escapeHtml; + +/** + * Escape special characters in the given string of html. + * + * @param {string} string The string to escape for inserting into HTML + * @return {string} + * @public + */ + +function escapeHtml(string) { + var str = '' + string; + var match = matchHtmlRegExp.exec(str); + + if (!match) { + return str; + } + + var escape; + var html = ''; + var index = 0; + var lastIndex = 0; + + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: // " + escape = '"'; + break; + case 38: // & + escape = '&'; + break; + case 39: // ' + escape = '''; + break; + case 60: // < + escape = '<'; + break; + case 62: // > + escape = '>'; + break; + default: + continue; + } + + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + + lastIndex = index + 1; + html += escape; + } + + return lastIndex !== index + ? html + str.substring(lastIndex, index) + : html; +} + +},{}],386:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +var R = typeof Reflect === 'object' ? Reflect : null +var ReflectApply = R && typeof R.apply === 'function' + ? R.apply + : function ReflectApply(target, receiver, args) { + return Function.prototype.apply.call(target, receiver, args); + } + +var ReflectOwnKeys +if (R && typeof R.ownKeys === 'function') { + ReflectOwnKeys = R.ownKeys +} else if (Object.getOwnPropertySymbols) { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target) + .concat(Object.getOwnPropertySymbols(target)); + }; +} else { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target); + }; +} + +function ProcessEmitWarning(warning) { + if (console && console.warn) console.warn(warning); +} + +var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { + return value !== value; +} + +function EventEmitter() { + EventEmitter.init.call(this); +} +module.exports = EventEmitter; +module.exports.once = once; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._eventsCount = 0; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +var defaultMaxListeners = 10; + +function checkListener(listener) { + if (typeof listener !== 'function') { + throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); + } +} + +Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { + throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); + } + defaultMaxListeners = arg; + } +}); + +EventEmitter.init = function() { + + if (this._events === undefined || + this._events === Object.getPrototypeOf(this)._events) { + this._events = Object.create(null); + this._eventsCount = 0; + } + + this._maxListeners = this._maxListeners || undefined; +}; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { + throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); + } + this._maxListeners = n; + return this; +}; + +function _getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter.defaultMaxListeners; + return that._maxListeners; +} + +EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return _getMaxListeners(this); +}; + +EventEmitter.prototype.emit = function emit(type) { + var args = []; + for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); + var doError = (type === 'error'); + + var events = this._events; + if (events !== undefined) + doError = (doError && events.error === undefined); + else if (!doError) + return false; + + // If there is no 'error' event listener then throw. + if (doError) { + var er; + if (args.length > 0) + er = args[0]; + if (er instanceof Error) { + // Note: The comments on the `throw` lines are intentional, they show + // up in Node's output if this results in an unhandled exception. + throw er; // Unhandled 'error' event + } + // At least give some kind of context to the user + var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); + err.context = er; + throw err; // Unhandled 'error' event + } + + var handler = events[type]; + + if (handler === undefined) + return false; + + if (typeof handler === 'function') { + ReflectApply(handler, this, args); + } else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + ReflectApply(listeners[i], this, args); + } + + return true; +}; + +function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + + checkListener(listener); + + events = target._events; + if (events === undefined) { + events = target._events = Object.create(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener !== undefined) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); + + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } + + if (existing === undefined) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = + prepend ? [listener, existing] : [existing, listener]; + // If we've already got an array, just append. + } else if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + + // Check for listener leak + m = _getMaxListeners(target); + if (m > 0 && existing.length > m && !existing.warned) { + existing.warned = true; + // No error code for this since it is a Warning + // eslint-disable-next-line no-restricted-syntax + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' ' + String(type) + ' listeners ' + + 'added. Use emitter.setMaxListeners() to ' + + 'increase limit'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + ProcessEmitWarning(w); + } + } + + return target; +} + +EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; + +function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + if (arguments.length === 0) + return this.listener.call(this.target); + return this.listener.apply(this.target, arguments); + } +} + +function _onceWrap(target, type, listener) { + var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; + var wrapped = onceWrapper.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; +} + +EventEmitter.prototype.once = function once(type, listener) { + checkListener(listener); + this.on(type, _onceWrap(this, type, listener)); + return this; +}; + +EventEmitter.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + checkListener(listener); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; + +// Emits a 'removeListener' event if and only if the listener was removed. +EventEmitter.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; + + checkListener(listener); + + events = this._events; + if (events === undefined) + return this; + + list = events[type]; + if (list === undefined) + return this; + + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } + + if (position < 0) + return this; + + if (position === 0) + list.shift(); + else { + spliceOne(list, position); + } + + if (list.length === 1) + events[type] = list[0]; + + if (events.removeListener !== undefined) + this.emit('removeListener', type, originalListener || listener); + } + + return this; + }; + +EventEmitter.prototype.off = EventEmitter.prototype.removeListener; + +EventEmitter.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events, i; + + events = this._events; + if (events === undefined) + return this; + + // not listening for removeListener, no need to emit + if (events.removeListener === undefined) { + if (arguments.length === 0) { + this._events = Object.create(null); + this._eventsCount = 0; + } else if (events[type] !== undefined) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else + delete events[type]; + } + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = Object.keys(events); + var key; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = Object.create(null); + this._eventsCount = 0; + return this; + } + + listeners = events[type]; + + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners !== undefined) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } + + return this; + }; + +function _listeners(target, type, unwrap) { + var events = target._events; + + if (events === undefined) + return []; + + var evlistener = events[type]; + if (evlistener === undefined) + return []; + + if (typeof evlistener === 'function') + return unwrap ? [evlistener.listener || evlistener] : [evlistener]; + + return unwrap ? + unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); +} + +EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); +}; + +EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); +}; + +EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } +}; + +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { + var events = this._events; + + if (events !== undefined) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener !== undefined) { + return evlistener.length; + } + } + + return 0; +} + +EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; +}; + +function arrayClone(arr, n) { + var copy = new Array(n); + for (var i = 0; i < n; ++i) + copy[i] = arr[i]; + return copy; +} + +function spliceOne(list, index) { + for (; index + 1 < list.length; index++) + list[index] = list[index + 1]; + list.pop(); +} + +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; +} + +function once(emitter, name) { + return new Promise(function (resolve, reject) { + function errorListener(err) { + emitter.removeListener(name, resolver); + reject(err); + } + + function resolver() { + if (typeof emitter.removeListener === 'function') { + emitter.removeListener('error', errorListener); + } + resolve([].slice.call(arguments)); + }; + + eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); + if (name !== 'error') { + addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); + } + }); +} + +function addErrorHandlerIfEventEmitter(emitter, handler, flags) { + if (typeof emitter.on === 'function') { + eventTargetAgnosticAddListener(emitter, 'error', handler, flags); + } +} + +function eventTargetAgnosticAddListener(emitter, name, listener, flags) { + if (typeof emitter.on === 'function') { + if (flags.once) { + emitter.once(name, listener); + } else { + emitter.on(name, listener); + } + } else if (typeof emitter.addEventListener === 'function') { + // EventTarget does not have `error` event semantics like Node + // EventEmitters, we do not listen for `error` events here. + emitter.addEventListener(name, function wrapListener(arg) { + // IE does not have builtin `{ once: true }` support so we + // have to do it manually. + if (flags.once) { + emitter.removeEventListener(name, wrapListener); + } + listener(arg); + }); + } else { + throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); + } +} + +},{}],387:[function(require,module,exports){ +'use strict'; + +var isCallable = require('is-callable'); + +var toStr = Object.prototype.toString; +var hasOwnProperty = Object.prototype.hasOwnProperty; + +var forEachArray = function forEachArray(array, iterator, receiver) { + for (var i = 0, len = array.length; i < len; i++) { + if (hasOwnProperty.call(array, i)) { + if (receiver == null) { + iterator(array[i], i, array); + } else { + iterator.call(receiver, array[i], i, array); + } + } + } +}; + +var forEachString = function forEachString(string, iterator, receiver) { + for (var i = 0, len = string.length; i < len; i++) { + // no such thing as a sparse string. + if (receiver == null) { + iterator(string.charAt(i), i, string); + } else { + iterator.call(receiver, string.charAt(i), i, string); + } + } +}; + +var forEachObject = function forEachObject(object, iterator, receiver) { + for (var k in object) { + if (hasOwnProperty.call(object, k)) { + if (receiver == null) { + iterator(object[k], k, object); + } else { + iterator.call(receiver, object[k], k, object); + } + } + } +}; + +var forEach = function forEach(list, iterator, thisArg) { + if (!isCallable(iterator)) { + throw new TypeError('iterator must be a function'); + } + + var receiver; + if (arguments.length >= 3) { + receiver = thisArg; + } + + if (toStr.call(list) === '[object Array]') { + forEachArray(list, iterator, receiver); + } else if (typeof list === 'string') { + forEachString(list, iterator, receiver); + } else { + forEachObject(list, iterator, receiver); + } +}; + +module.exports = forEach; + +},{"is-callable":410}],388:[function(require,module,exports){ +'use strict'; + +/* eslint no-invalid-this: 1 */ + +var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; +var toStr = Object.prototype.toString; +var max = Math.max; +var funcType = '[object Function]'; + +var concatty = function concatty(a, b) { + var arr = []; + + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + + return arr; +}; + +var slicy = function slicy(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; +}; + +var joiny = function (arr, joiner) { + var str = ''; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; +}; + +module.exports = function bind(that) { + var target = this; + if (typeof target !== 'function' || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slicy(arguments, 1); + + var bound; + var binder = function () { + if (this instanceof bound) { + var result = target.apply( + this, + concatty(args, arguments) + ); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply( + that, + concatty(args, arguments) + ); + + }; + + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = '$' + i; + } + + bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); + + if (target.prototype) { + var Empty = function Empty() {}; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + + return bound; +}; + +},{}],389:[function(require,module,exports){ +'use strict'; + +var implementation = require('./implementation'); + +module.exports = Function.prototype.bind || implementation; + +},{"./implementation":388}],390:[function(require,module,exports){ +'use strict'; + +var undefined; + +var $SyntaxError = SyntaxError; +var $Function = Function; +var $TypeError = TypeError; + +// eslint-disable-next-line consistent-return +var getEvalledConstructor = function (expressionSyntax) { + try { + return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')(); + } catch (e) {} +}; + +var $gOPD = Object.getOwnPropertyDescriptor; +if ($gOPD) { + try { + $gOPD({}, ''); + } catch (e) { + $gOPD = null; // this is IE 8, which has a broken gOPD + } +} + +var throwTypeError = function () { + throw new $TypeError(); +}; +var ThrowTypeError = $gOPD + ? (function () { + try { + // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties + arguments.callee; // IE 8 does not throw here + return throwTypeError; + } catch (calleeThrows) { + try { + // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') + return $gOPD(arguments, 'callee').get; + } catch (gOPDthrows) { + return throwTypeError; + } + } + }()) + : throwTypeError; + +var hasSymbols = require('has-symbols')(); +var hasProto = require('has-proto')(); + +var getProto = Object.getPrototypeOf || ( + hasProto + ? function (x) { return x.__proto__; } // eslint-disable-line no-proto + : null +); + +var needsEval = {}; + +var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array); + +var INTRINSICS = { + '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError, + '%Array%': Array, + '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer, + '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined, + '%AsyncFromSyncIteratorPrototype%': undefined, + '%AsyncFunction%': needsEval, + '%AsyncGenerator%': needsEval, + '%AsyncGeneratorFunction%': needsEval, + '%AsyncIteratorPrototype%': needsEval, + '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics, + '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt, + '%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array, + '%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array, + '%Boolean%': Boolean, + '%DataView%': typeof DataView === 'undefined' ? undefined : DataView, + '%Date%': Date, + '%decodeURI%': decodeURI, + '%decodeURIComponent%': decodeURIComponent, + '%encodeURI%': encodeURI, + '%encodeURIComponent%': encodeURIComponent, + '%Error%': Error, + '%eval%': eval, // eslint-disable-line no-eval + '%EvalError%': EvalError, + '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array, + '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array, + '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry, + '%Function%': $Function, + '%GeneratorFunction%': needsEval, + '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array, + '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array, + '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array, + '%isFinite%': isFinite, + '%isNaN%': isNaN, + '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined, + '%JSON%': typeof JSON === 'object' ? JSON : undefined, + '%Map%': typeof Map === 'undefined' ? undefined : Map, + '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()), + '%Math%': Math, + '%Number%': Number, + '%Object%': Object, + '%parseFloat%': parseFloat, + '%parseInt%': parseInt, + '%Promise%': typeof Promise === 'undefined' ? undefined : Promise, + '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy, + '%RangeError%': RangeError, + '%ReferenceError%': ReferenceError, + '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect, + '%RegExp%': RegExp, + '%Set%': typeof Set === 'undefined' ? undefined : Set, + '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()), + '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer, + '%String%': String, + '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined, + '%Symbol%': hasSymbols ? Symbol : undefined, + '%SyntaxError%': $SyntaxError, + '%ThrowTypeError%': ThrowTypeError, + '%TypedArray%': TypedArray, + '%TypeError%': $TypeError, + '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array, + '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray, + '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array, + '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array, + '%URIError%': URIError, + '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap, + '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef, + '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet +}; + +if (getProto) { + try { + null.error; // eslint-disable-line no-unused-expressions + } catch (e) { + // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229 + var errorProto = getProto(getProto(e)); + INTRINSICS['%Error.prototype%'] = errorProto; + } +} + +var doEval = function doEval(name) { + var value; + if (name === '%AsyncFunction%') { + value = getEvalledConstructor('async function () {}'); + } else if (name === '%GeneratorFunction%') { + value = getEvalledConstructor('function* () {}'); + } else if (name === '%AsyncGeneratorFunction%') { + value = getEvalledConstructor('async function* () {}'); + } else if (name === '%AsyncGenerator%') { + var fn = doEval('%AsyncGeneratorFunction%'); + if (fn) { + value = fn.prototype; + } + } else if (name === '%AsyncIteratorPrototype%') { + var gen = doEval('%AsyncGenerator%'); + if (gen && getProto) { + value = getProto(gen.prototype); + } + } + + INTRINSICS[name] = value; + + return value; +}; + +var LEGACY_ALIASES = { + '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], + '%ArrayPrototype%': ['Array', 'prototype'], + '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], + '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'], + '%ArrayProto_keys%': ['Array', 'prototype', 'keys'], + '%ArrayProto_values%': ['Array', 'prototype', 'values'], + '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'], + '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'], + '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'], + '%BooleanPrototype%': ['Boolean', 'prototype'], + '%DataViewPrototype%': ['DataView', 'prototype'], + '%DatePrototype%': ['Date', 'prototype'], + '%ErrorPrototype%': ['Error', 'prototype'], + '%EvalErrorPrototype%': ['EvalError', 'prototype'], + '%Float32ArrayPrototype%': ['Float32Array', 'prototype'], + '%Float64ArrayPrototype%': ['Float64Array', 'prototype'], + '%FunctionPrototype%': ['Function', 'prototype'], + '%Generator%': ['GeneratorFunction', 'prototype'], + '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'], + '%Int8ArrayPrototype%': ['Int8Array', 'prototype'], + '%Int16ArrayPrototype%': ['Int16Array', 'prototype'], + '%Int32ArrayPrototype%': ['Int32Array', 'prototype'], + '%JSONParse%': ['JSON', 'parse'], + '%JSONStringify%': ['JSON', 'stringify'], + '%MapPrototype%': ['Map', 'prototype'], + '%NumberPrototype%': ['Number', 'prototype'], + '%ObjectPrototype%': ['Object', 'prototype'], + '%ObjProto_toString%': ['Object', 'prototype', 'toString'], + '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'], + '%PromisePrototype%': ['Promise', 'prototype'], + '%PromiseProto_then%': ['Promise', 'prototype', 'then'], + '%Promise_all%': ['Promise', 'all'], + '%Promise_reject%': ['Promise', 'reject'], + '%Promise_resolve%': ['Promise', 'resolve'], + '%RangeErrorPrototype%': ['RangeError', 'prototype'], + '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'], + '%RegExpPrototype%': ['RegExp', 'prototype'], + '%SetPrototype%': ['Set', 'prototype'], + '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'], + '%StringPrototype%': ['String', 'prototype'], + '%SymbolPrototype%': ['Symbol', 'prototype'], + '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'], + '%TypedArrayPrototype%': ['TypedArray', 'prototype'], + '%TypeErrorPrototype%': ['TypeError', 'prototype'], + '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'], + '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'], + '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'], + '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'], + '%URIErrorPrototype%': ['URIError', 'prototype'], + '%WeakMapPrototype%': ['WeakMap', 'prototype'], + '%WeakSetPrototype%': ['WeakSet', 'prototype'] +}; + +var bind = require('function-bind'); +var hasOwn = require('hasown'); +var $concat = bind.call(Function.call, Array.prototype.concat); +var $spliceApply = bind.call(Function.apply, Array.prototype.splice); +var $replace = bind.call(Function.call, String.prototype.replace); +var $strSlice = bind.call(Function.call, String.prototype.slice); +var $exec = bind.call(Function.call, RegExp.prototype.exec); + +/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ +var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; +var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ +var stringToPath = function stringToPath(string) { + var first = $strSlice(string, 0, 1); + var last = $strSlice(string, -1); + if (first === '%' && last !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); + } else if (last === '%' && first !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); + } + var result = []; + $replace(string, rePropName, function (match, number, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; + }); + return result; +}; +/* end adaptation */ + +var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { + var intrinsicName = name; + var alias; + if (hasOwn(LEGACY_ALIASES, intrinsicName)) { + alias = LEGACY_ALIASES[intrinsicName]; + intrinsicName = '%' + alias[0] + '%'; + } + + if (hasOwn(INTRINSICS, intrinsicName)) { + var value = INTRINSICS[intrinsicName]; + if (value === needsEval) { + value = doEval(intrinsicName); + } + if (typeof value === 'undefined' && !allowMissing) { + throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); + } + + return { + alias: alias, + name: intrinsicName, + value: value + }; + } + + throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); +}; + +module.exports = function GetIntrinsic(name, allowMissing) { + if (typeof name !== 'string' || name.length === 0) { + throw new $TypeError('intrinsic name must be a non-empty string'); + } + if (arguments.length > 1 && typeof allowMissing !== 'boolean') { + throw new $TypeError('"allowMissing" argument must be a boolean'); + } + + if ($exec(/^%?[^%]*%?$/, name) === null) { + throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name'); + } + var parts = stringToPath(name); + var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; + + var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); + var intrinsicRealName = intrinsic.name; + var value = intrinsic.value; + var skipFurtherCaching = false; + + var alias = intrinsic.alias; + if (alias) { + intrinsicBaseName = alias[0]; + $spliceApply(parts, $concat([0, 1], alias)); + } + + for (var i = 1, isOwn = true; i < parts.length; i += 1) { + var part = parts[i]; + var first = $strSlice(part, 0, 1); + var last = $strSlice(part, -1); + if ( + ( + (first === '"' || first === "'" || first === '`') + || (last === '"' || last === "'" || last === '`') + ) + && first !== last + ) { + throw new $SyntaxError('property names with quotes must have matching quotes'); + } + if (part === 'constructor' || !isOwn) { + skipFurtherCaching = true; + } + + intrinsicBaseName += '.' + part; + intrinsicRealName = '%' + intrinsicBaseName + '%'; + + if (hasOwn(INTRINSICS, intrinsicRealName)) { + value = INTRINSICS[intrinsicRealName]; + } else if (value != null) { + if (!(part in value)) { + if (!allowMissing) { + throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); + } + return void undefined; + } + if ($gOPD && (i + 1) >= parts.length) { + var desc = $gOPD(value, part); + isOwn = !!desc; + + // By convention, when a data property is converted to an accessor + // property to emulate a data property that does not suffer from + // the override mistake, that accessor's getter is marked with + // an `originalValue` property. Here, when we detect this, we + // uphold the illusion by pretending to see that original data + // property, i.e., returning the value rather than the getter + // itself. + if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { + value = desc.get; + } else { + value = value[part]; + } + } else { + isOwn = hasOwn(value, part); + value = value[part]; + } + + if (isOwn && !skipFurtherCaching) { + INTRINSICS[intrinsicRealName] = value; + } + } + } + return value; +}; + +},{"function-bind":389,"has-proto":393,"has-symbols":394,"hasown":397}],391:[function(require,module,exports){ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true); + +if ($gOPD) { + try { + $gOPD([], 'length'); + } catch (e) { + // IE 8 has a broken gOPD + $gOPD = null; + } +} + +module.exports = $gOPD; + +},{"get-intrinsic":390}],392:[function(require,module,exports){ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); + +var hasPropertyDescriptors = function hasPropertyDescriptors() { + if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + return true; + } catch (e) { + // IE 8 has a broken defineProperty + return false; + } + } + return false; +}; + +hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() { + // node v0.6 has a bug where array lengths can be Set but not Defined + if (!hasPropertyDescriptors()) { + return null; + } + try { + return $defineProperty([], 'length', { value: 1 }).length !== 1; + } catch (e) { + // In Firefox 4-22, defining length on an array throws an exception. + return true; + } +}; + +module.exports = hasPropertyDescriptors; + +},{"get-intrinsic":390}],393:[function(require,module,exports){ +'use strict'; + +var test = { + foo: {} +}; + +var $Object = Object; + +module.exports = function hasProto() { + return { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object); +}; + +},{}],394:[function(require,module,exports){ +'use strict'; + +var origSymbol = typeof Symbol !== 'undefined' && Symbol; +var hasSymbolSham = require('./shams'); + +module.exports = function hasNativeSymbols() { + if (typeof origSymbol !== 'function') { return false; } + if (typeof Symbol !== 'function') { return false; } + if (typeof origSymbol('foo') !== 'symbol') { return false; } + if (typeof Symbol('bar') !== 'symbol') { return false; } + + return hasSymbolSham(); +}; + +},{"./shams":395}],395:[function(require,module,exports){ +'use strict'; + +/* eslint complexity: [2, 18], max-statements: [2, 33] */ +module.exports = function hasSymbols() { + if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } + if (typeof Symbol.iterator === 'symbol') { return true; } + + var obj = {}; + var sym = Symbol('test'); + var symObj = Object(sym); + if (typeof sym === 'string') { return false; } + + if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } + if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } + + // temp disabled per https://github.com/ljharb/object.assign/issues/17 + // if (sym instanceof Symbol) { return false; } + // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 + // if (!(symObj instanceof Symbol)) { return false; } + + // if (typeof Symbol.prototype.toString !== 'function') { return false; } + // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } + + var symVal = 42; + obj[sym] = symVal; + for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop + if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } + + if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } + + var syms = Object.getOwnPropertySymbols(obj); + if (syms.length !== 1 || syms[0] !== sym) { return false; } + + if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } + + if (typeof Object.getOwnPropertyDescriptor === 'function') { + var descriptor = Object.getOwnPropertyDescriptor(obj, sym); + if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } + } + + return true; +}; + +},{}],396:[function(require,module,exports){ +'use strict'; + +var hasSymbols = require('has-symbols/shams'); + +module.exports = function hasToStringTagShams() { + return hasSymbols() && !!Symbol.toStringTag; +}; + +},{"has-symbols/shams":395}],397:[function(require,module,exports){ +'use strict'; + +var call = Function.prototype.call; +var $hasOwn = Object.prototype.hasOwnProperty; +var bind = require('function-bind'); + +/** @type {(o: {}, p: PropertyKey) => p is keyof o} */ +module.exports = bind.call(call, $hasOwn); + +},{"function-bind":389}],398:[function(require,module,exports){ +var http = require('http') +var url = require('url') + +var https = module.exports + +for (var key in http) { + if (http.hasOwnProperty(key)) https[key] = http[key] +} + +https.request = function (params, cb) { + params = validateParams(params) + return http.request.call(this, params, cb) +} + +https.get = function (params, cb) { + params = validateParams(params) + return http.get.call(this, params, cb) +} + +function validateParams (params) { + if (typeof params === 'string') { + params = url.parse(params) + } + if (!params.protocol) { + params.protocol = 'https:' + } + if (params.protocol !== 'https:') { + throw new Error('Protocol "' + params.protocol + '" not supported. Expected "https:"') + } + return params +} + +},{"http":539,"url":543}],399:[function(require,module,exports){ +/*! + * humanize-ms - index.js + * Copyright(c) 2014 dead_horse <dead_horse@qq.com> + * MIT Licensed + */ + +'use strict'; + +/** + * Module dependencies. + */ + +var util = require('util'); +var ms = require('ms'); + +module.exports = function (t) { + if (typeof t === 'number') return t; + var r = ms(t); + if (r === undefined) { + var err = new Error(util.format('humanize-ms(%j) result undefined', t)); + console.warn(err.stack); + } + return r; +}; + +},{"ms":432,"util":489}],400:[function(require,module,exports){ +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + +},{}],401:[function(require,module,exports){ +'use strict'; +var types = [ + require('./nextTick'), + require('./queueMicrotask'), + require('./mutation.js'), + require('./messageChannel'), + require('./stateChange'), + require('./timeout') +]; +var draining; +var currentQueue; +var queueIndex = -1; +var queue = []; +var scheduled = false; +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + nextTick(); + } +} + +//named nextTick for less confusing stack traces +function nextTick() { + if (draining) { + return; + } + scheduled = false; + draining = true; + var len = queue.length; + var timeout = setTimeout(cleanUpNextTick); + while (len) { + currentQueue = queue; + queue = []; + while (currentQueue && ++queueIndex < len) { + currentQueue[queueIndex].run(); + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + queueIndex = -1; + draining = false; + clearTimeout(timeout); +} +var scheduleDrain; +var i = -1; +var len = types.length; +while (++i < len) { + if (types[i] && types[i].test && types[i].test()) { + scheduleDrain = types[i].install(nextTick); + break; + } +} +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + var fun = this.fun; + var array = this.array; + switch (array.length) { + case 0: + return fun(); + case 1: + return fun(array[0]); + case 2: + return fun(array[0], array[1]); + case 3: + return fun(array[0], array[1], array[2]); + default: + return fun.apply(null, array); + } + +}; +module.exports = immediate; +function immediate(task) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(task, args)); + if (!scheduled && !draining) { + scheduled = true; + scheduleDrain(); + } +} + +},{"./messageChannel":402,"./mutation.js":403,"./nextTick":102,"./queueMicrotask":404,"./stateChange":405,"./timeout":406}],402:[function(require,module,exports){ +(function (global){(function (){ +'use strict'; + +exports.test = function () { + if (global.setImmediate) { + // we can only get here in IE10 + // which doesn't handel postMessage well + return false; + } + return typeof global.MessageChannel !== 'undefined'; +}; + +exports.install = function (func) { + var channel = new global.MessageChannel(); + channel.port1.onmessage = func; + return function () { + channel.port2.postMessage(0); + }; +}; +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],403:[function(require,module,exports){ +(function (global){(function (){ +'use strict'; +//based off rsvp https://github.com/tildeio/rsvp.js +//license https://github.com/tildeio/rsvp.js/blob/master/LICENSE +//https://github.com/tildeio/rsvp.js/blob/master/lib/rsvp/asap.js + +var Mutation = global.MutationObserver || global.WebKitMutationObserver; + +exports.test = function () { + return Mutation; +}; + +exports.install = function (handle) { + var called = 0; + var observer = new Mutation(handle); + var element = global.document.createTextNode(''); + observer.observe(element, { + characterData: true + }); + return function () { + element.data = (called = ++called % 2); + }; +}; +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],404:[function(require,module,exports){ +(function (global){(function (){ +'use strict'; +exports.test = function () { + return typeof global.queueMicrotask === 'function'; +}; + +exports.install = function (func) { + return function () { + global.queueMicrotask(func); + }; +}; + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],405:[function(require,module,exports){ +(function (global){(function (){ +'use strict'; + +exports.test = function () { + return 'document' in global && 'onreadystatechange' in global.document.createElement('script'); +}; + +exports.install = function (handle) { + return function () { + + // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted + // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called. + var scriptEl = global.document.createElement('script'); + scriptEl.onreadystatechange = function () { + handle(); + + scriptEl.onreadystatechange = null; + scriptEl.parentNode.removeChild(scriptEl); + scriptEl = null; + }; + global.document.documentElement.appendChild(scriptEl); + + return handle; + }; +}; +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],406:[function(require,module,exports){ +'use strict'; +exports.test = function () { + return true; +}; + +exports.install = function (t) { + return function () { + setTimeout(t, 0); + }; +}; +},{}],407:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } + } +} + +},{}],408:[function(require,module,exports){ +'use strict'; + +var hasToStringTag = require('has-tostringtag/shams')(); +var callBound = require('call-bind/callBound'); + +var $toString = callBound('Object.prototype.toString'); + +var isStandardArguments = function isArguments(value) { + if (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) { + return false; + } + return $toString(value) === '[object Arguments]'; +}; + +var isLegacyArguments = function isArguments(value) { + if (isStandardArguments(value)) { + return true; + } + return value !== null && + typeof value === 'object' && + typeof value.length === 'number' && + value.length >= 0 && + $toString(value) !== '[object Array]' && + $toString(value.callee) === '[object Function]'; +}; + +var supportsStandardArguments = (function () { + return isStandardArguments(arguments); +}()); + +isStandardArguments.isLegacyArguments = isLegacyArguments; // for tests + +module.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments; + +},{"call-bind/callBound":105,"has-tostringtag/shams":396}],409:[function(require,module,exports){ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <https://feross.org> + * @license MIT + */ + +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +module.exports = function (obj) { + return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) +} + +function isBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) +} + +},{}],410:[function(require,module,exports){ +'use strict'; + +var fnToStr = Function.prototype.toString; +var reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply; +var badArrayLike; +var isCallableMarker; +if (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') { + try { + badArrayLike = Object.defineProperty({}, 'length', { + get: function () { + throw isCallableMarker; + } + }); + isCallableMarker = {}; + // eslint-disable-next-line no-throw-literal + reflectApply(function () { throw 42; }, null, badArrayLike); + } catch (_) { + if (_ !== isCallableMarker) { + reflectApply = null; + } + } +} else { + reflectApply = null; +} + +var constructorRegex = /^\s*class\b/; +var isES6ClassFn = function isES6ClassFunction(value) { + try { + var fnStr = fnToStr.call(value); + return constructorRegex.test(fnStr); + } catch (e) { + return false; // not a function + } +}; + +var tryFunctionObject = function tryFunctionToStr(value) { + try { + if (isES6ClassFn(value)) { return false; } + fnToStr.call(value); + return true; + } catch (e) { + return false; + } +}; +var toStr = Object.prototype.toString; +var objectClass = '[object Object]'; +var fnClass = '[object Function]'; +var genClass = '[object GeneratorFunction]'; +var ddaClass = '[object HTMLAllCollection]'; // IE 11 +var ddaClass2 = '[object HTML document.all class]'; +var ddaClass3 = '[object HTMLCollection]'; // IE 9-10 +var hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag` + +var isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing + +var isDDA = function isDocumentDotAll() { return false; }; +if (typeof document === 'object') { + // Firefox 3 canonicalizes DDA to undefined when it's not accessed directly + var all = document.all; + if (toStr.call(all) === toStr.call(document.all)) { + isDDA = function isDocumentDotAll(value) { + /* globals document: false */ + // in IE 6-8, typeof document.all is "object" and it's truthy + if ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) { + try { + var str = toStr.call(value); + return ( + str === ddaClass + || str === ddaClass2 + || str === ddaClass3 // opera 12.16 + || str === objectClass // IE 6-8 + ) && value('') == null; // eslint-disable-line eqeqeq + } catch (e) { /**/ } + } + return false; + }; + } +} + +module.exports = reflectApply + ? function isCallable(value) { + if (isDDA(value)) { return true; } + if (!value) { return false; } + if (typeof value !== 'function' && typeof value !== 'object') { return false; } + try { + reflectApply(value, null, badArrayLike); + } catch (e) { + if (e !== isCallableMarker) { return false; } + } + return !isES6ClassFn(value) && tryFunctionObject(value); + } + : function isCallable(value) { + if (isDDA(value)) { return true; } + if (!value) { return false; } + if (typeof value !== 'function' && typeof value !== 'object') { return false; } + if (hasToStringTag) { return tryFunctionObject(value); } + if (isES6ClassFn(value)) { return false; } + var strClass = toStr.call(value); + if (strClass !== fnClass && strClass !== genClass && !(/^\[object HTML/).test(strClass)) { return false; } + return tryFunctionObject(value); + }; + +},{}],411:[function(require,module,exports){ +'use strict'; + +var toStr = Object.prototype.toString; +var fnToStr = Function.prototype.toString; +var isFnRegex = /^\s*(?:function)?\*/; +var hasToStringTag = require('has-tostringtag/shams')(); +var getProto = Object.getPrototypeOf; +var getGeneratorFunc = function () { // eslint-disable-line consistent-return + if (!hasToStringTag) { + return false; + } + try { + return Function('return function*() {}')(); + } catch (e) { + } +}; +var GeneratorFunction; + +module.exports = function isGeneratorFunction(fn) { + if (typeof fn !== 'function') { + return false; + } + if (isFnRegex.test(fnToStr.call(fn))) { + return true; + } + if (!hasToStringTag) { + var str = toStr.call(fn); + return str === '[object GeneratorFunction]'; + } + if (!getProto) { + return false; + } + if (typeof GeneratorFunction === 'undefined') { + var generatorFunc = getGeneratorFunc(); + GeneratorFunction = generatorFunc ? getProto(generatorFunc) : false; + } + return getProto(fn) === GeneratorFunction; +}; + +},{"has-tostringtag/shams":396}],412:[function(require,module,exports){ +'use strict'; + +var whichTypedArray = require('which-typed-array'); + +module.exports = function isTypedArray(value) { + return !!whichTypedArray(value); +}; + +},{"which-typed-array":490}],413:[function(require,module,exports){ +(function (global){(function (){ +/* + * base64.js + * + * Licensed under the BSD 3-Clause License. + * http://opensource.org/licenses/BSD-3-Clause + * + * References: + * http://en.wikipedia.org/wiki/Base64 + */ +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + ? module.exports = factory(global) + : typeof define === 'function' && define.amd + ? define(factory) : factory(global) +}(( + typeof self !== 'undefined' ? self + : typeof window !== 'undefined' ? window + : typeof global !== 'undefined' ? global +: this +), function(global) { + 'use strict'; + // existing version for noConflict() + global = global || {}; + var _Base64 = global.Base64; + var version = "2.6.4"; + // constants + var b64chars + = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + var b64tab = function(bin) { + var t = {}; + for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i; + return t; + }(b64chars); + var fromCharCode = String.fromCharCode; + // encoder stuff + var cb_utob = function(c) { + if (c.length < 2) { + var cc = c.charCodeAt(0); + return cc < 0x80 ? c + : cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6)) + + fromCharCode(0x80 | (cc & 0x3f))) + : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) + + fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) + + fromCharCode(0x80 | ( cc & 0x3f))); + } else { + var cc = 0x10000 + + (c.charCodeAt(0) - 0xD800) * 0x400 + + (c.charCodeAt(1) - 0xDC00); + return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07)) + + fromCharCode(0x80 | ((cc >>> 12) & 0x3f)) + + fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) + + fromCharCode(0x80 | ( cc & 0x3f))); + } + }; + var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; + var utob = function(u) { + return u.replace(re_utob, cb_utob); + }; + var cb_encode = function(ccc) { + var padlen = [0, 2, 1][ccc.length % 3], + ord = ccc.charCodeAt(0) << 16 + | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) + | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)), + chars = [ + b64chars.charAt( ord >>> 18), + b64chars.charAt((ord >>> 12) & 63), + padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63), + padlen >= 1 ? '=' : b64chars.charAt(ord & 63) + ]; + return chars.join(''); + }; + var btoa = global.btoa && typeof global.btoa == 'function' + ? function(b){ return global.btoa(b) } : function(b) { + if (b.match(/[^\x00-\xFF]/)) throw new RangeError( + 'The string contains invalid characters.' + ); + return b.replace(/[\s\S]{1,3}/g, cb_encode); + }; + var _encode = function(u) { + return btoa(utob(String(u))); + }; + var mkUriSafe = function (b64) { + return b64.replace(/[+\/]/g, function(m0) { + return m0 == '+' ? '-' : '_'; + }).replace(/=/g, ''); + }; + var encode = function(u, urisafe) { + return urisafe ? mkUriSafe(_encode(u)) : _encode(u); + }; + var encodeURI = function(u) { return encode(u, true) }; + var fromUint8Array; + if (global.Uint8Array) fromUint8Array = function(a, urisafe) { + // return btoa(fromCharCode.apply(null, a)); + var b64 = ''; + for (var i = 0, l = a.length; i < l; i += 3) { + var a0 = a[i], a1 = a[i+1], a2 = a[i+2]; + var ord = a0 << 16 | a1 << 8 | a2; + b64 += b64chars.charAt( ord >>> 18) + + b64chars.charAt((ord >>> 12) & 63) + + ( typeof a1 != 'undefined' + ? b64chars.charAt((ord >>> 6) & 63) : '=') + + ( typeof a2 != 'undefined' + ? b64chars.charAt( ord & 63) : '='); + } + return urisafe ? mkUriSafe(b64) : b64; + }; + // decoder stuff + var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; + var cb_btou = function(cccc) { + switch(cccc.length) { + case 4: + var cp = ((0x07 & cccc.charCodeAt(0)) << 18) + | ((0x3f & cccc.charCodeAt(1)) << 12) + | ((0x3f & cccc.charCodeAt(2)) << 6) + | (0x3f & cccc.charCodeAt(3)), + offset = cp - 0x10000; + return (fromCharCode((offset >>> 10) + 0xD800) + + fromCharCode((offset & 0x3FF) + 0xDC00)); + case 3: + return fromCharCode( + ((0x0f & cccc.charCodeAt(0)) << 12) + | ((0x3f & cccc.charCodeAt(1)) << 6) + | (0x3f & cccc.charCodeAt(2)) + ); + default: + return fromCharCode( + ((0x1f & cccc.charCodeAt(0)) << 6) + | (0x3f & cccc.charCodeAt(1)) + ); + } + }; + var btou = function(b) { + return b.replace(re_btou, cb_btou); + }; + var cb_decode = function(cccc) { + var len = cccc.length, + padlen = len % 4, + n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0) + | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0) + | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0) + | (len > 3 ? b64tab[cccc.charAt(3)] : 0), + chars = [ + fromCharCode( n >>> 16), + fromCharCode((n >>> 8) & 0xff), + fromCharCode( n & 0xff) + ]; + chars.length -= [0, 0, 2, 1][padlen]; + return chars.join(''); + }; + var _atob = global.atob && typeof global.atob == 'function' + ? function(a){ return global.atob(a) } : function(a){ + return a.replace(/\S{1,4}/g, cb_decode); + }; + var atob = function(a) { + return _atob(String(a).replace(/[^A-Za-z0-9\+\/]/g, '')); + }; + var _decode = function(a) { return btou(_atob(a)) }; + var _fromURI = function(a) { + return String(a).replace(/[-_]/g, function(m0) { + return m0 == '-' ? '+' : '/' + }).replace(/[^A-Za-z0-9\+\/]/g, ''); + }; + var decode = function(a){ + return _decode(_fromURI(a)); + }; + var toUint8Array; + if (global.Uint8Array) toUint8Array = function(a) { + return Uint8Array.from(atob(_fromURI(a)), function(c) { + return c.charCodeAt(0); + }); + }; + var noConflict = function() { + var Base64 = global.Base64; + global.Base64 = _Base64; + return Base64; + }; + // export Base64 + global.Base64 = { + VERSION: version, + atob: atob, + btoa: btoa, + fromBase64: decode, + toBase64: encode, + utob: utob, + encode: encode, + encodeURI: encodeURI, + btou: btou, + decode: decode, + noConflict: noConflict, + fromUint8Array: fromUint8Array, + toUint8Array: toUint8Array + }; + // if ES5 is available, make Base64.extendString() available + if (typeof Object.defineProperty === 'function') { + var noEnum = function(v){ + return {value:v,enumerable:false,writable:true,configurable:true}; + }; + global.Base64.extendString = function () { + Object.defineProperty( + String.prototype, 'fromBase64', noEnum(function () { + return decode(this) + })); + Object.defineProperty( + String.prototype, 'toBase64', noEnum(function (urisafe) { + return encode(this, urisafe) + })); + Object.defineProperty( + String.prototype, 'toBase64URI', noEnum(function () { + return encode(this, true) + })); + }; + } + // + // export Base64 to the namespace + // + if (global['Meteor']) { // Meteor.js + Base64 = global.Base64; + } + // module.exports and AMD are mutually exclusive. + // module.exports has precedence. + if (typeof module !== 'undefined' && module.exports) { + module.exports.Base64 = global.Base64; + } + else if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([], function(){ return global.Base64 }); + } + // that's it! + return {Base64: global.Base64} +})); + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],414:[function(require,module,exports){ +var root = require('./_root'); + +/** Built-in value references. */ +var Symbol = root.Symbol; + +module.exports = Symbol; + +},{"./_root":421}],415:[function(require,module,exports){ +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} + +module.exports = arrayMap; + +},{}],416:[function(require,module,exports){ +var Symbol = require('./_Symbol'), + getRawTag = require('./_getRawTag'), + objectToString = require('./_objectToString'); + +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); +} + +module.exports = baseGetTag; + +},{"./_Symbol":414,"./_getRawTag":419,"./_objectToString":420}],417:[function(require,module,exports){ +var Symbol = require('./_Symbol'), + arrayMap = require('./_arrayMap'), + isArray = require('./isArray'), + isSymbol = require('./isSymbol'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +module.exports = baseToString; + +},{"./_Symbol":414,"./_arrayMap":415,"./isArray":422,"./isSymbol":426}],418:[function(require,module,exports){ +(function (global){(function (){ +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +module.exports = freeGlobal; + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],419:[function(require,module,exports){ +var Symbol = require('./_Symbol'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; +} + +module.exports = getRawTag; + +},{"./_Symbol":414}],420:[function(require,module,exports){ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} + +module.exports = objectToString; + +},{}],421:[function(require,module,exports){ +var freeGlobal = require('./_freeGlobal'); + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +module.exports = root; + +},{"./_freeGlobal":418}],422:[function(require,module,exports){ +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +module.exports = isArray; + +},{}],423:[function(require,module,exports){ +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} + +module.exports = isObject; + +},{}],424:[function(require,module,exports){ +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} + +module.exports = isObjectLike; + +},{}],425:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isArray = require('./isArray'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var stringTag = '[object String]'; + +/** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ +function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); +} + +module.exports = isString; + +},{"./_baseGetTag":416,"./isArray":422,"./isObjectLike":424}],426:[function(require,module,exports){ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); +} + +module.exports = isSymbol; + +},{"./_baseGetTag":416,"./isObjectLike":424}],427:[function(require,module,exports){ +var baseToString = require('./_baseToString'); + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} + +module.exports = toString; + +},{"./_baseToString":417}],428:[function(require,module,exports){ +/*! + * merge-descriptors + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = merge + +/** + * Module variables. + * @private + */ + +var hasOwnProperty = Object.prototype.hasOwnProperty + +/** + * Merge the property descriptors of `src` into `dest` + * + * @param {object} dest Object to add descriptors to + * @param {object} src Object to clone descriptors from + * @param {boolean} [redefine=true] Redefine `dest` properties with `src` properties + * @returns {object} Reference to dest + * @public + */ + +function merge (dest, src, redefine) { + if (!dest) { + throw new TypeError('argument dest is required') + } + + if (!src) { + throw new TypeError('argument src is required') + } + + if (redefine === undefined) { + // Default to true + redefine = true + } + + Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName (name) { + if (!redefine && hasOwnProperty.call(dest, name)) { + // Skip descriptor + return + } + + // Copy descriptor + var descriptor = Object.getOwnPropertyDescriptor(src, name) + Object.defineProperty(dest, name, descriptor) + }) + + return dest +} + +},{}],429:[function(require,module,exports){ +'use strict'; + +/** + * @param typeMap [Object] Map of MIME type -> Array[extensions] + * @param ... + */ +require("core-js/modules/es.array.map.js"); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.replace.js"); +require("core-js/modules/es.regexp.constructor.js"); +require("core-js/modules/es.regexp.to-string.js"); +function Mime() { + this._types = Object.create(null); + this._extensions = Object.create(null); + for (var i = 0; i < arguments.length; i++) { + this.define(arguments[i]); + } + this.define = this.define.bind(this); + this.getType = this.getType.bind(this); + this.getExtension = this.getExtension.bind(this); +} + +/** + * Define mimetype -> extension mappings. Each key is a mime-type that maps + * to an array of extensions associated with the type. The first extension is + * used as the default extension for the type. + * + * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); + * + * If a type declares an extension that has already been defined, an error will + * be thrown. To suppress this error and force the extension to be associated + * with the new type, pass `force`=true. Alternatively, you may prefix the + * extension with "*" to map the type to extension, without mapping the + * extension to the type. + * + * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']}); + * + * + * @param map (Object) type definitions + * @param force (Boolean) if true, force overriding of existing definitions + */ +Mime.prototype.define = function (typeMap, force) { + for (var type in typeMap) { + var extensions = typeMap[type].map(function (t) { + return t.toLowerCase(); + }); + type = type.toLowerCase(); + for (var i = 0; i < extensions.length; i++) { + var ext = extensions[i]; + + // '*' prefix = not the preferred type for this extension. So fixup the + // extension, and skip it. + if (ext[0] === '*') { + continue; + } + if (!force && ext in this._types) { + throw new Error('Attempt to change mapping for "' + ext + '" extension from "' + this._types[ext] + '" to "' + type + '". Pass `force=true` to allow this, otherwise remove "' + ext + '" from the list of extensions for "' + type + '".'); + } + this._types[ext] = type; + } + + // Use first extension as default + if (force || !this._extensions[type]) { + var _ext = extensions[0]; + this._extensions[type] = _ext[0] !== '*' ? _ext : _ext.substr(1); + } + } +}; + +/** + * Lookup a mime type based on extension + */ +Mime.prototype.getType = function (path) { + path = String(path); + var last = path.replace(/^.*[/\\]/, '').toLowerCase(); + var ext = last.replace(/^.*\./, '').toLowerCase(); + var hasPath = last.length < path.length; + var hasDot = ext.length < last.length - 1; + return (hasDot || !hasPath) && this._types[ext] || null; +}; + +/** + * Return file extension associated with a mime type + */ +Mime.prototype.getExtension = function (type) { + type = /^\s*([^;\s]*)/.test(type) && RegExp.$1; + return type && this._extensions[type.toLowerCase()] || null; +}; +module.exports = Mime; + +},{"core-js/modules/es.array.map.js":318,"core-js/modules/es.regexp.constructor.js":337,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.replace.js":345}],430:[function(require,module,exports){ +'use strict'; + +var Mime = require('./Mime'); +module.exports = new Mime(require('./types/standard')); + +},{"./Mime":429,"./types/standard":431}],431:[function(require,module,exports){ +"use strict"; + +module.exports = { + "application/andrew-inset": ["ez"], + "application/applixware": ["aw"], + "application/atom+xml": ["atom"], + "application/atomcat+xml": ["atomcat"], + "application/atomdeleted+xml": ["atomdeleted"], + "application/atomsvc+xml": ["atomsvc"], + "application/atsc-dwd+xml": ["dwd"], + "application/atsc-held+xml": ["held"], + "application/atsc-rsat+xml": ["rsat"], + "application/bdoc": ["bdoc"], + "application/calendar+xml": ["xcs"], + "application/ccxml+xml": ["ccxml"], + "application/cdfx+xml": ["cdfx"], + "application/cdmi-capability": ["cdmia"], + "application/cdmi-container": ["cdmic"], + "application/cdmi-domain": ["cdmid"], + "application/cdmi-object": ["cdmio"], + "application/cdmi-queue": ["cdmiq"], + "application/cu-seeme": ["cu"], + "application/dash+xml": ["mpd"], + "application/davmount+xml": ["davmount"], + "application/docbook+xml": ["dbk"], + "application/dssc+der": ["dssc"], + "application/dssc+xml": ["xdssc"], + "application/ecmascript": ["es", "ecma"], + "application/emma+xml": ["emma"], + "application/emotionml+xml": ["emotionml"], + "application/epub+zip": ["epub"], + "application/exi": ["exi"], + "application/express": ["exp"], + "application/fdt+xml": ["fdt"], + "application/font-tdpfr": ["pfr"], + "application/geo+json": ["geojson"], + "application/gml+xml": ["gml"], + "application/gpx+xml": ["gpx"], + "application/gxf": ["gxf"], + "application/gzip": ["gz"], + "application/hjson": ["hjson"], + "application/hyperstudio": ["stk"], + "application/inkml+xml": ["ink", "inkml"], + "application/ipfix": ["ipfix"], + "application/its+xml": ["its"], + "application/java-archive": ["jar", "war", "ear"], + "application/java-serialized-object": ["ser"], + "application/java-vm": ["class"], + "application/javascript": ["js", "mjs"], + "application/json": ["json", "map"], + "application/json5": ["json5"], + "application/jsonml+json": ["jsonml"], + "application/ld+json": ["jsonld"], + "application/lgr+xml": ["lgr"], + "application/lost+xml": ["lostxml"], + "application/mac-binhex40": ["hqx"], + "application/mac-compactpro": ["cpt"], + "application/mads+xml": ["mads"], + "application/manifest+json": ["webmanifest"], + "application/marc": ["mrc"], + "application/marcxml+xml": ["mrcx"], + "application/mathematica": ["ma", "nb", "mb"], + "application/mathml+xml": ["mathml"], + "application/mbox": ["mbox"], + "application/mediaservercontrol+xml": ["mscml"], + "application/metalink+xml": ["metalink"], + "application/metalink4+xml": ["meta4"], + "application/mets+xml": ["mets"], + "application/mmt-aei+xml": ["maei"], + "application/mmt-usd+xml": ["musd"], + "application/mods+xml": ["mods"], + "application/mp21": ["m21", "mp21"], + "application/mp4": ["mp4s", "m4p"], + "application/msword": ["doc", "dot"], + "application/mxf": ["mxf"], + "application/n-quads": ["nq"], + "application/n-triples": ["nt"], + "application/node": ["cjs"], + "application/octet-stream": ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"], + "application/oda": ["oda"], + "application/oebps-package+xml": ["opf"], + "application/ogg": ["ogx"], + "application/omdoc+xml": ["omdoc"], + "application/onenote": ["onetoc", "onetoc2", "onetmp", "onepkg"], + "application/oxps": ["oxps"], + "application/p2p-overlay+xml": ["relo"], + "application/patch-ops-error+xml": ["xer"], + "application/pdf": ["pdf"], + "application/pgp-encrypted": ["pgp"], + "application/pgp-signature": ["asc", "sig"], + "application/pics-rules": ["prf"], + "application/pkcs10": ["p10"], + "application/pkcs7-mime": ["p7m", "p7c"], + "application/pkcs7-signature": ["p7s"], + "application/pkcs8": ["p8"], + "application/pkix-attr-cert": ["ac"], + "application/pkix-cert": ["cer"], + "application/pkix-crl": ["crl"], + "application/pkix-pkipath": ["pkipath"], + "application/pkixcmp": ["pki"], + "application/pls+xml": ["pls"], + "application/postscript": ["ai", "eps", "ps"], + "application/provenance+xml": ["provx"], + "application/pskc+xml": ["pskcxml"], + "application/raml+yaml": ["raml"], + "application/rdf+xml": ["rdf", "owl"], + "application/reginfo+xml": ["rif"], + "application/relax-ng-compact-syntax": ["rnc"], + "application/resource-lists+xml": ["rl"], + "application/resource-lists-diff+xml": ["rld"], + "application/rls-services+xml": ["rs"], + "application/route-apd+xml": ["rapd"], + "application/route-s-tsid+xml": ["sls"], + "application/route-usd+xml": ["rusd"], + "application/rpki-ghostbusters": ["gbr"], + "application/rpki-manifest": ["mft"], + "application/rpki-roa": ["roa"], + "application/rsd+xml": ["rsd"], + "application/rss+xml": ["rss"], + "application/rtf": ["rtf"], + "application/sbml+xml": ["sbml"], + "application/scvp-cv-request": ["scq"], + "application/scvp-cv-response": ["scs"], + "application/scvp-vp-request": ["spq"], + "application/scvp-vp-response": ["spp"], + "application/sdp": ["sdp"], + "application/senml+xml": ["senmlx"], + "application/sensml+xml": ["sensmlx"], + "application/set-payment-initiation": ["setpay"], + "application/set-registration-initiation": ["setreg"], + "application/shf+xml": ["shf"], + "application/sieve": ["siv", "sieve"], + "application/smil+xml": ["smi", "smil"], + "application/sparql-query": ["rq"], + "application/sparql-results+xml": ["srx"], + "application/srgs": ["gram"], + "application/srgs+xml": ["grxml"], + "application/sru+xml": ["sru"], + "application/ssdl+xml": ["ssdl"], + "application/ssml+xml": ["ssml"], + "application/swid+xml": ["swidtag"], + "application/tei+xml": ["tei", "teicorpus"], + "application/thraud+xml": ["tfi"], + "application/timestamped-data": ["tsd"], + "application/toml": ["toml"], + "application/trig": ["trig"], + "application/ttml+xml": ["ttml"], + "application/ubjson": ["ubj"], + "application/urc-ressheet+xml": ["rsheet"], + "application/urc-targetdesc+xml": ["td"], + "application/voicexml+xml": ["vxml"], + "application/wasm": ["wasm"], + "application/widget": ["wgt"], + "application/winhlp": ["hlp"], + "application/wsdl+xml": ["wsdl"], + "application/wspolicy+xml": ["wspolicy"], + "application/xaml+xml": ["xaml"], + "application/xcap-att+xml": ["xav"], + "application/xcap-caps+xml": ["xca"], + "application/xcap-diff+xml": ["xdf"], + "application/xcap-el+xml": ["xel"], + "application/xcap-ns+xml": ["xns"], + "application/xenc+xml": ["xenc"], + "application/xhtml+xml": ["xhtml", "xht"], + "application/xliff+xml": ["xlf"], + "application/xml": ["xml", "xsl", "xsd", "rng"], + "application/xml-dtd": ["dtd"], + "application/xop+xml": ["xop"], + "application/xproc+xml": ["xpl"], + "application/xslt+xml": ["*xsl", "xslt"], + "application/xspf+xml": ["xspf"], + "application/xv+xml": ["mxml", "xhvml", "xvml", "xvm"], + "application/yang": ["yang"], + "application/yin+xml": ["yin"], + "application/zip": ["zip"], + "audio/3gpp": ["*3gpp"], + "audio/adpcm": ["adp"], + "audio/amr": ["amr"], + "audio/basic": ["au", "snd"], + "audio/midi": ["mid", "midi", "kar", "rmi"], + "audio/mobile-xmf": ["mxmf"], + "audio/mp3": ["*mp3"], + "audio/mp4": ["m4a", "mp4a"], + "audio/mpeg": ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"], + "audio/ogg": ["oga", "ogg", "spx", "opus"], + "audio/s3m": ["s3m"], + "audio/silk": ["sil"], + "audio/wav": ["wav"], + "audio/wave": ["*wav"], + "audio/webm": ["weba"], + "audio/xm": ["xm"], + "font/collection": ["ttc"], + "font/otf": ["otf"], + "font/ttf": ["ttf"], + "font/woff": ["woff"], + "font/woff2": ["woff2"], + "image/aces": ["exr"], + "image/apng": ["apng"], + "image/avif": ["avif"], + "image/bmp": ["bmp"], + "image/cgm": ["cgm"], + "image/dicom-rle": ["drle"], + "image/emf": ["emf"], + "image/fits": ["fits"], + "image/g3fax": ["g3"], + "image/gif": ["gif"], + "image/heic": ["heic"], + "image/heic-sequence": ["heics"], + "image/heif": ["heif"], + "image/heif-sequence": ["heifs"], + "image/hej2k": ["hej2"], + "image/hsj2": ["hsj2"], + "image/ief": ["ief"], + "image/jls": ["jls"], + "image/jp2": ["jp2", "jpg2"], + "image/jpeg": ["jpeg", "jpg", "jpe"], + "image/jph": ["jph"], + "image/jphc": ["jhc"], + "image/jpm": ["jpm"], + "image/jpx": ["jpx", "jpf"], + "image/jxr": ["jxr"], + "image/jxra": ["jxra"], + "image/jxrs": ["jxrs"], + "image/jxs": ["jxs"], + "image/jxsc": ["jxsc"], + "image/jxsi": ["jxsi"], + "image/jxss": ["jxss"], + "image/ktx": ["ktx"], + "image/ktx2": ["ktx2"], + "image/png": ["png"], + "image/sgi": ["sgi"], + "image/svg+xml": ["svg", "svgz"], + "image/t38": ["t38"], + "image/tiff": ["tif", "tiff"], + "image/tiff-fx": ["tfx"], + "image/webp": ["webp"], + "image/wmf": ["wmf"], + "message/disposition-notification": ["disposition-notification"], + "message/global": ["u8msg"], + "message/global-delivery-status": ["u8dsn"], + "message/global-disposition-notification": ["u8mdn"], + "message/global-headers": ["u8hdr"], + "message/rfc822": ["eml", "mime"], + "model/3mf": ["3mf"], + "model/gltf+json": ["gltf"], + "model/gltf-binary": ["glb"], + "model/iges": ["igs", "iges"], + "model/mesh": ["msh", "mesh", "silo"], + "model/mtl": ["mtl"], + "model/obj": ["obj"], + "model/step+xml": ["stpx"], + "model/step+zip": ["stpz"], + "model/step-xml+zip": ["stpxz"], + "model/stl": ["stl"], + "model/vrml": ["wrl", "vrml"], + "model/x3d+binary": ["*x3db", "x3dbz"], + "model/x3d+fastinfoset": ["x3db"], + "model/x3d+vrml": ["*x3dv", "x3dvz"], + "model/x3d+xml": ["x3d", "x3dz"], + "model/x3d-vrml": ["x3dv"], + "text/cache-manifest": ["appcache", "manifest"], + "text/calendar": ["ics", "ifb"], + "text/coffeescript": ["coffee", "litcoffee"], + "text/css": ["css"], + "text/csv": ["csv"], + "text/html": ["html", "htm", "shtml"], + "text/jade": ["jade"], + "text/jsx": ["jsx"], + "text/less": ["less"], + "text/markdown": ["markdown", "md"], + "text/mathml": ["mml"], + "text/mdx": ["mdx"], + "text/n3": ["n3"], + "text/plain": ["txt", "text", "conf", "def", "list", "log", "in", "ini"], + "text/richtext": ["rtx"], + "text/rtf": ["*rtf"], + "text/sgml": ["sgml", "sgm"], + "text/shex": ["shex"], + "text/slim": ["slim", "slm"], + "text/spdx": ["spdx"], + "text/stylus": ["stylus", "styl"], + "text/tab-separated-values": ["tsv"], + "text/troff": ["t", "tr", "roff", "man", "me", "ms"], + "text/turtle": ["ttl"], + "text/uri-list": ["uri", "uris", "urls"], + "text/vcard": ["vcard"], + "text/vtt": ["vtt"], + "text/xml": ["*xml"], + "text/yaml": ["yaml", "yml"], + "video/3gpp": ["3gp", "3gpp"], + "video/3gpp2": ["3g2"], + "video/h261": ["h261"], + "video/h263": ["h263"], + "video/h264": ["h264"], + "video/iso.segment": ["m4s"], + "video/jpeg": ["jpgv"], + "video/jpm": ["*jpm", "jpgm"], + "video/mj2": ["mj2", "mjp2"], + "video/mp2t": ["ts"], + "video/mp4": ["mp4", "mp4v", "mpg4"], + "video/mpeg": ["mpeg", "mpg", "mpe", "m1v", "m2v"], + "video/ogg": ["ogv"], + "video/quicktime": ["qt", "mov"], + "video/webm": ["webm"] +}; + +},{}],432:[function(require,module,exports){ +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} + +},{}],433:[function(require,module,exports){ +(function (global){(function (){ +var hasMap = typeof Map === 'function' && Map.prototype; +var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null; +var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null; +var mapForEach = hasMap && Map.prototype.forEach; +var hasSet = typeof Set === 'function' && Set.prototype; +var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null; +var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null; +var setForEach = hasSet && Set.prototype.forEach; +var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype; +var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; +var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype; +var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; +var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype; +var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; +var booleanValueOf = Boolean.prototype.valueOf; +var objectToString = Object.prototype.toString; +var functionToString = Function.prototype.toString; +var $match = String.prototype.match; +var $slice = String.prototype.slice; +var $replace = String.prototype.replace; +var $toUpperCase = String.prototype.toUpperCase; +var $toLowerCase = String.prototype.toLowerCase; +var $test = RegExp.prototype.test; +var $concat = Array.prototype.concat; +var $join = Array.prototype.join; +var $arrSlice = Array.prototype.slice; +var $floor = Math.floor; +var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null; +var gOPS = Object.getOwnPropertySymbols; +var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null; +var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object'; +// ie, `has-tostringtag/shams +var toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol') + ? Symbol.toStringTag + : null; +var isEnumerable = Object.prototype.propertyIsEnumerable; + +var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ( + [].__proto__ === Array.prototype // eslint-disable-line no-proto + ? function (O) { + return O.__proto__; // eslint-disable-line no-proto + } + : null +); + +function addNumericSeparator(num, str) { + if ( + num === Infinity + || num === -Infinity + || num !== num + || (num && num > -1000 && num < 1000) + || $test.call(/e/, str) + ) { + return str; + } + var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; + if (typeof num === 'number') { + var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num) + if (int !== num) { + var intStr = String(int); + var dec = $slice.call(str, intStr.length + 1); + return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, ''); + } + } + return $replace.call(str, sepRegex, '$&_'); +} + +var utilInspect = require('./util.inspect'); +var inspectCustom = utilInspect.custom; +var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; + +module.exports = function inspect_(obj, options, depth, seen) { + var opts = options || {}; + + if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) { + throw new TypeError('option "quoteStyle" must be "single" or "double"'); + } + if ( + has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number' + ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity + : opts.maxStringLength !== null + ) + ) { + throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); + } + var customInspect = has(opts, 'customInspect') ? opts.customInspect : true; + if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') { + throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`'); + } + + if ( + has(opts, 'indent') + && opts.indent !== null + && opts.indent !== '\t' + && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0) + ) { + throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); + } + if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') { + throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); + } + var numericSeparator = opts.numericSeparator; + + if (typeof obj === 'undefined') { + return 'undefined'; + } + if (obj === null) { + return 'null'; + } + if (typeof obj === 'boolean') { + return obj ? 'true' : 'false'; + } + + if (typeof obj === 'string') { + return inspectString(obj, opts); + } + if (typeof obj === 'number') { + if (obj === 0) { + return Infinity / obj > 0 ? '0' : '-0'; + } + var str = String(obj); + return numericSeparator ? addNumericSeparator(obj, str) : str; + } + if (typeof obj === 'bigint') { + var bigIntStr = String(obj) + 'n'; + return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; + } + + var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth; + if (typeof depth === 'undefined') { depth = 0; } + if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') { + return isArray(obj) ? '[Array]' : '[Object]'; + } + + var indent = getIndent(opts, depth); + + if (typeof seen === 'undefined') { + seen = []; + } else if (indexOf(seen, obj) >= 0) { + return '[Circular]'; + } + + function inspect(value, from, noIndent) { + if (from) { + seen = $arrSlice.call(seen); + seen.push(from); + } + if (noIndent) { + var newOpts = { + depth: opts.depth + }; + if (has(opts, 'quoteStyle')) { + newOpts.quoteStyle = opts.quoteStyle; + } + return inspect_(value, newOpts, depth + 1, seen); + } + return inspect_(value, opts, depth + 1, seen); + } + + if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable + var name = nameOf(obj); + var keys = arrObjKeys(obj, inspect); + return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : ''); + } + if (isSymbol(obj)) { + var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj); + return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString; + } + if (isElement(obj)) { + var s = '<' + $toLowerCase.call(String(obj.nodeName)); + var attrs = obj.attributes || []; + for (var i = 0; i < attrs.length; i++) { + s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts); + } + s += '>'; + if (obj.childNodes && obj.childNodes.length) { s += '...'; } + s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>'; + return s; + } + if (isArray(obj)) { + if (obj.length === 0) { return '[]'; } + var xs = arrObjKeys(obj, inspect); + if (indent && !singleLineValues(xs)) { + return '[' + indentedJoin(xs, indent) + ']'; + } + return '[ ' + $join.call(xs, ', ') + ' ]'; + } + if (isError(obj)) { + var parts = arrObjKeys(obj, inspect); + if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) { + return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }'; + } + if (parts.length === 0) { return '[' + String(obj) + ']'; } + return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }'; + } + if (typeof obj === 'object' && customInspect) { + if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) { + return utilInspect(obj, { depth: maxDepth - depth }); + } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') { + return obj.inspect(); + } + } + if (isMap(obj)) { + var mapParts = []; + if (mapForEach) { + mapForEach.call(obj, function (value, key) { + mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj)); + }); + } + return collectionOf('Map', mapSize.call(obj), mapParts, indent); + } + if (isSet(obj)) { + var setParts = []; + if (setForEach) { + setForEach.call(obj, function (value) { + setParts.push(inspect(value, obj)); + }); + } + return collectionOf('Set', setSize.call(obj), setParts, indent); + } + if (isWeakMap(obj)) { + return weakCollectionOf('WeakMap'); + } + if (isWeakSet(obj)) { + return weakCollectionOf('WeakSet'); + } + if (isWeakRef(obj)) { + return weakCollectionOf('WeakRef'); + } + if (isNumber(obj)) { + return markBoxed(inspect(Number(obj))); + } + if (isBigInt(obj)) { + return markBoxed(inspect(bigIntValueOf.call(obj))); + } + if (isBoolean(obj)) { + return markBoxed(booleanValueOf.call(obj)); + } + if (isString(obj)) { + return markBoxed(inspect(String(obj))); + } + // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other + /* eslint-env browser */ + if (typeof window !== 'undefined' && obj === window) { + return '{ [object Window] }'; + } + if (obj === global) { + return '{ [object globalThis] }'; + } + if (!isDate(obj) && !isRegExp(obj)) { + var ys = arrObjKeys(obj, inspect); + var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; + var protoTag = obj instanceof Object ? '' : 'null prototype'; + var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : ''; + var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : ''; + var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : ''); + if (ys.length === 0) { return tag + '{}'; } + if (indent) { + return tag + '{' + indentedJoin(ys, indent) + '}'; + } + return tag + '{ ' + $join.call(ys, ', ') + ' }'; + } + return String(obj); +}; + +function wrapQuotes(s, defaultStyle, opts) { + var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '"' : "'"; + return quoteChar + s + quoteChar; +} + +function quote(s) { + return $replace.call(String(s), /"/g, '"'); +} + +function isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } +function isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } +function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } +function isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } +function isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } +function isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } +function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } + +// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives +function isSymbol(obj) { + if (hasShammedSymbols) { + return obj && typeof obj === 'object' && obj instanceof Symbol; + } + if (typeof obj === 'symbol') { + return true; + } + if (!obj || typeof obj !== 'object' || !symToString) { + return false; + } + try { + symToString.call(obj); + return true; + } catch (e) {} + return false; +} + +function isBigInt(obj) { + if (!obj || typeof obj !== 'object' || !bigIntValueOf) { + return false; + } + try { + bigIntValueOf.call(obj); + return true; + } catch (e) {} + return false; +} + +var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; }; +function has(obj, key) { + return hasOwn.call(obj, key); +} + +function toStr(obj) { + return objectToString.call(obj); +} + +function nameOf(f) { + if (f.name) { return f.name; } + var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); + if (m) { return m[1]; } + return null; +} + +function indexOf(xs, x) { + if (xs.indexOf) { return xs.indexOf(x); } + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) { return i; } + } + return -1; +} + +function isMap(x) { + if (!mapSize || !x || typeof x !== 'object') { + return false; + } + try { + mapSize.call(x); + try { + setSize.call(x); + } catch (s) { + return true; + } + return x instanceof Map; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakMap(x) { + if (!weakMapHas || !x || typeof x !== 'object') { + return false; + } + try { + weakMapHas.call(x, weakMapHas); + try { + weakSetHas.call(x, weakSetHas); + } catch (s) { + return true; + } + return x instanceof WeakMap; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakRef(x) { + if (!weakRefDeref || !x || typeof x !== 'object') { + return false; + } + try { + weakRefDeref.call(x); + return true; + } catch (e) {} + return false; +} + +function isSet(x) { + if (!setSize || !x || typeof x !== 'object') { + return false; + } + try { + setSize.call(x); + try { + mapSize.call(x); + } catch (m) { + return true; + } + return x instanceof Set; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakSet(x) { + if (!weakSetHas || !x || typeof x !== 'object') { + return false; + } + try { + weakSetHas.call(x, weakSetHas); + try { + weakMapHas.call(x, weakMapHas); + } catch (s) { + return true; + } + return x instanceof WeakSet; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isElement(x) { + if (!x || typeof x !== 'object') { return false; } + if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) { + return true; + } + return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function'; +} + +function inspectString(str, opts) { + if (str.length > opts.maxStringLength) { + var remaining = str.length - opts.maxStringLength; + var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : ''); + return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; + } + // eslint-disable-next-line no-control-regex + var s = $replace.call($replace.call(str, /(['\\])/g, '\\$1'), /[\x00-\x1f]/g, lowbyte); + return wrapQuotes(s, 'single', opts); +} + +function lowbyte(c) { + var n = c.charCodeAt(0); + var x = { + 8: 'b', + 9: 't', + 10: 'n', + 12: 'f', + 13: 'r' + }[n]; + if (x) { return '\\' + x; } + return '\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16)); +} + +function markBoxed(str) { + return 'Object(' + str + ')'; +} + +function weakCollectionOf(type) { + return type + ' { ? }'; +} + +function collectionOf(type, size, entries, indent) { + var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', '); + return type + ' (' + size + ') {' + joinedEntries + '}'; +} + +function singleLineValues(xs) { + for (var i = 0; i < xs.length; i++) { + if (indexOf(xs[i], '\n') >= 0) { + return false; + } + } + return true; +} + +function getIndent(opts, depth) { + var baseIndent; + if (opts.indent === '\t') { + baseIndent = '\t'; + } else if (typeof opts.indent === 'number' && opts.indent > 0) { + baseIndent = $join.call(Array(opts.indent + 1), ' '); + } else { + return null; + } + return { + base: baseIndent, + prev: $join.call(Array(depth + 1), baseIndent) + }; +} + +function indentedJoin(xs, indent) { + if (xs.length === 0) { return ''; } + var lineJoiner = '\n' + indent.prev + indent.base; + return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\n' + indent.prev; +} + +function arrObjKeys(obj, inspect) { + var isArr = isArray(obj); + var xs = []; + if (isArr) { + xs.length = obj.length; + for (var i = 0; i < obj.length; i++) { + xs[i] = has(obj, i) ? inspect(obj[i], obj) : ''; + } + } + var syms = typeof gOPS === 'function' ? gOPS(obj) : []; + var symMap; + if (hasShammedSymbols) { + symMap = {}; + for (var k = 0; k < syms.length; k++) { + symMap['$' + syms[k]] = syms[k]; + } + } + + for (var key in obj) { // eslint-disable-line no-restricted-syntax + if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue + if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue + if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) { + // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section + continue; // eslint-disable-line no-restricted-syntax, no-continue + } else if ($test.call(/[^\w$]/, key)) { + xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); + } else { + xs.push(key + ': ' + inspect(obj[key], obj)); + } + } + if (typeof gOPS === 'function') { + for (var j = 0; j < syms.length; j++) { + if (isEnumerable.call(obj, syms[j])) { + xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj)); + } + } + } + return xs; +} + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./util.inspect":102}],434:[function(require,module,exports){ +'use strict'; + +var keysShim; +if (!Object.keys) { + // modified from https://github.com/es-shims/es5-shim + var has = Object.prototype.hasOwnProperty; + var toStr = Object.prototype.toString; + var isArgs = require('./isArguments'); // eslint-disable-line global-require + var isEnumerable = Object.prototype.propertyIsEnumerable; + var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString'); + var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype'); + var dontEnums = [ + 'toString', + 'toLocaleString', + 'valueOf', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'constructor' + ]; + var equalsConstructorPrototype = function (o) { + var ctor = o.constructor; + return ctor && ctor.prototype === o; + }; + var excludedKeys = { + $applicationCache: true, + $console: true, + $external: true, + $frame: true, + $frameElement: true, + $frames: true, + $innerHeight: true, + $innerWidth: true, + $onmozfullscreenchange: true, + $onmozfullscreenerror: true, + $outerHeight: true, + $outerWidth: true, + $pageXOffset: true, + $pageYOffset: true, + $parent: true, + $scrollLeft: true, + $scrollTop: true, + $scrollX: true, + $scrollY: true, + $self: true, + $webkitIndexedDB: true, + $webkitStorageInfo: true, + $window: true + }; + var hasAutomationEqualityBug = (function () { + /* global window */ + if (typeof window === 'undefined') { return false; } + for (var k in window) { + try { + if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') { + try { + equalsConstructorPrototype(window[k]); + } catch (e) { + return true; + } + } + } catch (e) { + return true; + } + } + return false; + }()); + var equalsConstructorPrototypeIfNotBuggy = function (o) { + /* global window */ + if (typeof window === 'undefined' || !hasAutomationEqualityBug) { + return equalsConstructorPrototype(o); + } + try { + return equalsConstructorPrototype(o); + } catch (e) { + return false; + } + }; + + keysShim = function keys(object) { + var isObject = object !== null && typeof object === 'object'; + var isFunction = toStr.call(object) === '[object Function]'; + var isArguments = isArgs(object); + var isString = isObject && toStr.call(object) === '[object String]'; + var theKeys = []; + + if (!isObject && !isFunction && !isArguments) { + throw new TypeError('Object.keys called on a non-object'); + } + + var skipProto = hasProtoEnumBug && isFunction; + if (isString && object.length > 0 && !has.call(object, 0)) { + for (var i = 0; i < object.length; ++i) { + theKeys.push(String(i)); + } + } + + if (isArguments && object.length > 0) { + for (var j = 0; j < object.length; ++j) { + theKeys.push(String(j)); + } + } else { + for (var name in object) { + if (!(skipProto && name === 'prototype') && has.call(object, name)) { + theKeys.push(String(name)); + } + } + } + + if (hasDontEnumBug) { + var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object); + + for (var k = 0; k < dontEnums.length; ++k) { + if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) { + theKeys.push(dontEnums[k]); + } + } + } + return theKeys; + }; +} +module.exports = keysShim; + +},{"./isArguments":436}],435:[function(require,module,exports){ +'use strict'; + +var slice = Array.prototype.slice; +var isArgs = require('./isArguments'); + +var origKeys = Object.keys; +var keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation'); + +var originalKeys = Object.keys; + +keysShim.shim = function shimObjectKeys() { + if (Object.keys) { + var keysWorksWithArguments = (function () { + // Safari 5.0 bug + var args = Object.keys(arguments); + return args && args.length === arguments.length; + }(1, 2)); + if (!keysWorksWithArguments) { + Object.keys = function keys(object) { // eslint-disable-line func-name-matching + if (isArgs(object)) { + return originalKeys(slice.call(object)); + } + return originalKeys(object); + }; + } + } else { + Object.keys = keysShim; + } + return Object.keys || keysShim; +}; + +module.exports = keysShim; + +},{"./implementation":434,"./isArguments":436}],436:[function(require,module,exports){ +'use strict'; + +var toStr = Object.prototype.toString; + +module.exports = function isArguments(value) { + var str = toStr.call(value); + var isArgs = str === '[object Arguments]'; + if (!isArgs) { + isArgs = str !== '[object Array]' && + value !== null && + typeof value === 'object' && + typeof value.length === 'number' && + value.length >= 0 && + toStr.call(value.callee) === '[object Function]'; + } + return isArgs; +}; + +},{}],437:[function(require,module,exports){ +'use strict'; + +// modified from https://github.com/es-shims/es6-shim +var objectKeys = require('object-keys'); +var hasSymbols = require('has-symbols/shams')(); +var callBound = require('call-bind/callBound'); +var toObject = Object; +var $push = callBound('Array.prototype.push'); +var $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable'); +var originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null; + +// eslint-disable-next-line no-unused-vars +module.exports = function assign(target, source1) { + if (target == null) { throw new TypeError('target must be an object'); } + var to = toObject(target); // step 1 + if (arguments.length === 1) { + return to; // step 2 + } + for (var s = 1; s < arguments.length; ++s) { + var from = toObject(arguments[s]); // step 3.a.i + + // step 3.a.ii: + var keys = objectKeys(from); + var getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols); + if (getSymbols) { + var syms = getSymbols(from); + for (var j = 0; j < syms.length; ++j) { + var key = syms[j]; + if ($propIsEnumerable(from, key)) { + $push(keys, key); + } + } + } + + // step 3.a.iii: + for (var i = 0; i < keys.length; ++i) { + var nextKey = keys[i]; + if ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2 + var propValue = from[nextKey]; // step 3.a.iii.2.a + to[nextKey] = propValue; // step 3.a.iii.2.b + } + } + } + + return to; // step 4 +}; + +},{"call-bind/callBound":105,"has-symbols/shams":395,"object-keys":435}],438:[function(require,module,exports){ +'use strict'; + +var implementation = require('./implementation'); + +var lacksProperEnumerationOrder = function () { + if (!Object.assign) { + return false; + } + /* + * v8, specifically in node 4.x, has a bug with incorrect property enumeration order + * note: this does not detect the bug unless there's 20 characters + */ + var str = 'abcdefghijklmnopqrst'; + var letters = str.split(''); + var map = {}; + for (var i = 0; i < letters.length; ++i) { + map[letters[i]] = letters[i]; + } + var obj = Object.assign({}, map); + var actual = ''; + for (var k in obj) { + actual += k; + } + return str !== actual; +}; + +var assignHasPendingExceptions = function () { + if (!Object.assign || !Object.preventExtensions) { + return false; + } + /* + * Firefox 37 still has "pending exception" logic in its Object.assign implementation, + * which is 72% slower than our shim, and Firefox 40's native implementation. + */ + var thrower = Object.preventExtensions({ 1: 2 }); + try { + Object.assign(thrower, 'xy'); + } catch (e) { + return thrower[1] === 'y'; + } + return false; +}; + +module.exports = function getPolyfill() { + if (!Object.assign) { + return implementation; + } + if (lacksProperEnumerationOrder()) { + return implementation; + } + if (assignHasPendingExceptions()) { + return implementation; + } + return Object.assign; +}; + +},{"./implementation":437}],439:[function(require,module,exports){ +(function (process){(function (){ +// 'path' module extracted from Node.js v8.11.1 (only the posix part) +// transplited with Babel + +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +function assertPath(path) { + if (typeof path !== 'string') { + throw new TypeError('Path must be a string. Received ' + JSON.stringify(path)); + } +} + +// Resolves . and .. elements in a path with directory names +function normalizeStringPosix(path, allowAboveRoot) { + var res = ''; + var lastSegmentLength = 0; + var lastSlash = -1; + var dots = 0; + var code; + for (var i = 0; i <= path.length; ++i) { + if (i < path.length) + code = path.charCodeAt(i); + else if (code === 47 /*/*/) + break; + else + code = 47 /*/*/; + if (code === 47 /*/*/) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) { + if (res.length > 2) { + var lastSlashIndex = res.lastIndexOf('/'); + if (lastSlashIndex !== res.length - 1) { + if (lastSlashIndex === -1) { + res = ''; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf('/'); + } + lastSlash = i; + dots = 0; + continue; + } + } else if (res.length === 2 || res.length === 1) { + res = ''; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) + res += '/..'; + else + res = '..'; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) + res += '/' + path.slice(lastSlash + 1, i); + else + res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === 46 /*.*/ && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} + +function _format(sep, pathObject) { + var dir = pathObject.dir || pathObject.root; + var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || ''); + if (!dir) { + return base; + } + if (dir === pathObject.root) { + return dir + base; + } + return dir + sep + base; +} + +var posix = { + // path.resolve([from ...], to) + resolve: function resolve() { + var resolvedPath = ''; + var resolvedAbsolute = false; + var cwd; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path; + if (i >= 0) + path = arguments[i]; + else { + if (cwd === undefined) + cwd = process.cwd(); + path = cwd; + } + + assertPath(path); + + // Skip empty entries + if (path.length === 0) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute); + + if (resolvedAbsolute) { + if (resolvedPath.length > 0) + return '/' + resolvedPath; + else + return '/'; + } else if (resolvedPath.length > 0) { + return resolvedPath; + } else { + return '.'; + } + }, + + normalize: function normalize(path) { + assertPath(path); + + if (path.length === 0) return '.'; + + var isAbsolute = path.charCodeAt(0) === 47 /*/*/; + var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/; + + // Normalize the path + path = normalizeStringPosix(path, !isAbsolute); + + if (path.length === 0 && !isAbsolute) path = '.'; + if (path.length > 0 && trailingSeparator) path += '/'; + + if (isAbsolute) return '/' + path; + return path; + }, + + isAbsolute: function isAbsolute(path) { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === 47 /*/*/; + }, + + join: function join() { + if (arguments.length === 0) + return '.'; + var joined; + for (var i = 0; i < arguments.length; ++i) { + var arg = arguments[i]; + assertPath(arg); + if (arg.length > 0) { + if (joined === undefined) + joined = arg; + else + joined += '/' + arg; + } + } + if (joined === undefined) + return '.'; + return posix.normalize(joined); + }, + + relative: function relative(from, to) { + assertPath(from); + assertPath(to); + + if (from === to) return ''; + + from = posix.resolve(from); + to = posix.resolve(to); + + if (from === to) return ''; + + // Trim any leading backslashes + var fromStart = 1; + for (; fromStart < from.length; ++fromStart) { + if (from.charCodeAt(fromStart) !== 47 /*/*/) + break; + } + var fromEnd = from.length; + var fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + var toStart = 1; + for (; toStart < to.length; ++toStart) { + if (to.charCodeAt(toStart) !== 47 /*/*/) + break; + } + var toEnd = to.length; + var toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + var length = fromLen < toLen ? fromLen : toLen; + var lastCommonSep = -1; + var i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === 47 /*/*/) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === 47 /*/*/) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + var fromCode = from.charCodeAt(fromStart + i); + var toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) + break; + else if (fromCode === 47 /*/*/) + lastCommonSep = i; + } + + var out = ''; + // Generate the relative path based on the path difference between `to` + // and `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) { + if (out.length === 0) + out += '..'; + else + out += '/..'; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) + return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === 47 /*/*/) + ++toStart; + return to.slice(toStart); + } + }, + + _makeLong: function _makeLong(path) { + return path; + }, + + dirname: function dirname(path) { + assertPath(path); + if (path.length === 0) return '.'; + var code = path.charCodeAt(0); + var hasRoot = code === 47 /*/*/; + var end = -1; + var matchedSlash = true; + for (var i = path.length - 1; i >= 1; --i) { + code = path.charCodeAt(i); + if (code === 47 /*/*/) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? '/' : '.'; + if (hasRoot && end === 1) return '//'; + return path.slice(0, end); + }, + + basename: function basename(path, ext) { + if (ext !== undefined && typeof ext !== 'string') throw new TypeError('"ext" argument must be a string'); + assertPath(path); + + var start = 0; + var end = -1; + var matchedSlash = true; + var i; + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ''; + var extIdx = ext.length - 1; + var firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + var code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ''; + return path.slice(start, end); + } + }, + + extname: function extname(path) { + assertPath(path); + var startDot = -1; + var startPart = 0; + var end = -1; + var matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + var preDotState = 0; + for (var i = path.length - 1; i >= 0; --i) { + var code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === 46 /*.*/) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) + startDot = i; + else if (preDotState !== 1) + preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if (startDot === -1 || end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ''; + } + return path.slice(startDot, end); + }, + + format: function format(pathObject) { + if (pathObject === null || typeof pathObject !== 'object') { + throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject); + } + return _format('/', pathObject); + }, + + parse: function parse(path) { + assertPath(path); + + var ret = { root: '', dir: '', base: '', ext: '', name: '' }; + if (path.length === 0) return ret; + var code = path.charCodeAt(0); + var isAbsolute = code === 47 /*/*/; + var start; + if (isAbsolute) { + ret.root = '/'; + start = 1; + } else { + start = 0; + } + var startDot = -1; + var startPart = 0; + var end = -1; + var matchedSlash = true; + var i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + var preDotState = 0; + + // Get non-dir info + for (; i >= start; --i) { + code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === 46 /*.*/) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if (startDot === -1 || end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end); + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + + if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/'; + + return ret; + }, + + sep: '/', + delimiter: ':', + win32: null, + posix: null +}; + +posix.posix = posix; + +module.exports = posix; + +}).call(this)}).call(this,require('_process')) +},{"_process":538}],440:[function(require,module,exports){ +(function (global){(function (){ +/*! + * Platform.js v1.3.6 + * Copyright 2014-2020 Benjamin Tan + * Copyright 2011-2013 John-David Dalton + * Available under MIT license + */ +;(function() { + 'use strict'; + + /** Used to determine if values are of the language type `Object`. */ + var objectTypes = { + 'function': true, + 'object': true + }; + + /** Used as a reference to the global object. */ + var root = (objectTypes[typeof window] && window) || this; + + /** Backup possible global object. */ + var oldRoot = root; + + /** Detect free variable `exports`. */ + var freeExports = objectTypes[typeof exports] && exports; + + /** Detect free variable `module`. */ + var freeModule = objectTypes[typeof module] && module && !module.nodeType && module; + + /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */ + var freeGlobal = freeExports && freeModule && typeof global == 'object' && global; + if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) { + root = freeGlobal; + } + + /** + * Used as the maximum length of an array-like object. + * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength) + * for more details. + */ + var maxSafeInteger = Math.pow(2, 53) - 1; + + /** Regular expression to detect Opera. */ + var reOpera = /\bOpera/; + + /** Possible global object. */ + var thisBinding = this; + + /** Used for native method references. */ + var objectProto = Object.prototype; + + /** Used to check for own properties of an object. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to resolve the internal `[[Class]]` of values. */ + var toString = objectProto.toString; + + /*--------------------------------------------------------------------------*/ + + /** + * Capitalizes a string value. + * + * @private + * @param {string} string The string to capitalize. + * @returns {string} The capitalized string. + */ + function capitalize(string) { + string = String(string); + return string.charAt(0).toUpperCase() + string.slice(1); + } + + /** + * A utility function to clean up the OS name. + * + * @private + * @param {string} os The OS name to clean up. + * @param {string} [pattern] A `RegExp` pattern matching the OS name. + * @param {string} [label] A label for the OS. + */ + function cleanupOS(os, pattern, label) { + // Platform tokens are defined at: + // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx + // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx + var data = { + '10.0': '10', + '6.4': '10 Technical Preview', + '6.3': '8.1', + '6.2': '8', + '6.1': 'Server 2008 R2 / 7', + '6.0': 'Server 2008 / Vista', + '5.2': 'Server 2003 / XP 64-bit', + '5.1': 'XP', + '5.01': '2000 SP1', + '5.0': '2000', + '4.0': 'NT', + '4.90': 'ME' + }; + // Detect Windows version from platform tokens. + if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) && + (data = data[/[\d.]+$/.exec(os)])) { + os = 'Windows ' + data; + } + // Correct character case and cleanup string. + os = String(os); + + if (pattern && label) { + os = os.replace(RegExp(pattern, 'i'), label); + } + + os = format( + os.replace(/ ce$/i, ' CE') + .replace(/\bhpw/i, 'web') + .replace(/\bMacintosh\b/, 'Mac OS') + .replace(/_PowerPC\b/i, ' OS') + .replace(/\b(OS X) [^ \d]+/i, '$1') + .replace(/\bMac (OS X)\b/, '$1') + .replace(/\/(\d)/, ' $1') + .replace(/_/g, '.') + .replace(/(?: BePC|[ .]*fc[ \d.]+)$/i, '') + .replace(/\bx86\.64\b/gi, 'x86_64') + .replace(/\b(Windows Phone) OS\b/, '$1') + .replace(/\b(Chrome OS \w+) [\d.]+\b/, '$1') + .split(' on ')[0] + ); + + return os; + } + + /** + * An iteration utility for arrays and objects. + * + * @private + * @param {Array|Object} object The object to iterate over. + * @param {Function} callback The function called per iteration. + */ + function each(object, callback) { + var index = -1, + length = object ? object.length : 0; + + if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) { + while (++index < length) { + callback(object[index], index, object); + } + } else { + forOwn(object, callback); + } + } + + /** + * Trim and conditionally capitalize string values. + * + * @private + * @param {string} string The string to format. + * @returns {string} The formatted string. + */ + function format(string) { + string = trim(string); + return /^(?:webOS|i(?:OS|P))/.test(string) + ? string + : capitalize(string); + } + + /** + * Iterates over an object's own properties, executing the `callback` for each. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} callback The function executed per own property. + */ + function forOwn(object, callback) { + for (var key in object) { + if (hasOwnProperty.call(object, key)) { + callback(object[key], key, object); + } + } + } + + /** + * Gets the internal `[[Class]]` of a value. + * + * @private + * @param {*} value The value. + * @returns {string} The `[[Class]]`. + */ + function getClassOf(value) { + return value == null + ? capitalize(value) + : toString.call(value).slice(8, -1); + } + + /** + * Host objects can return type values that are different from their actual + * data type. The objects we are concerned with usually return non-primitive + * types of "object", "function", or "unknown". + * + * @private + * @param {*} object The owner of the property. + * @param {string} property The property to check. + * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`. + */ + function isHostType(object, property) { + var type = object != null ? typeof object[property] : 'number'; + return !/^(?:boolean|number|string|undefined)$/.test(type) && + (type == 'object' ? !!object[property] : true); + } + + /** + * Prepares a string for use in a `RegExp` by making hyphens and spaces optional. + * + * @private + * @param {string} string The string to qualify. + * @returns {string} The qualified string. + */ + function qualify(string) { + return String(string).replace(/([ -])(?!$)/g, '$1?'); + } + + /** + * A bare-bones `Array#reduce` like utility function. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function called per iteration. + * @returns {*} The accumulated result. + */ + function reduce(array, callback) { + var accumulator = null; + each(array, function(value, index) { + accumulator = callback(accumulator, value, index, array); + }); + return accumulator; + } + + /** + * Removes leading and trailing whitespace from a string. + * + * @private + * @param {string} string The string to trim. + * @returns {string} The trimmed string. + */ + function trim(string) { + return String(string).replace(/^ +| +$/g, ''); + } + + /*--------------------------------------------------------------------------*/ + + /** + * Creates a new platform object. + * + * @memberOf platform + * @param {Object|string} [ua=navigator.userAgent] The user agent string or + * context object. + * @returns {Object} A platform object. + */ + function parse(ua) { + + /** The environment context object. */ + var context = root; + + /** Used to flag when a custom context is provided. */ + var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String'; + + // Juggle arguments. + if (isCustomContext) { + context = ua; + ua = null; + } + + /** Browser navigator object. */ + var nav = context.navigator || {}; + + /** Browser user agent string. */ + var userAgent = nav.userAgent || ''; + + ua || (ua = userAgent); + + /** Used to flag when `thisBinding` is the [ModuleScope]. */ + var isModuleScope = isCustomContext || thisBinding == oldRoot; + + /** Used to detect if browser is like Chrome. */ + var likeChrome = isCustomContext + ? !!nav.likeChrome + : /\bChrome\b/.test(ua) && !/internal|\n/i.test(toString.toString()); + + /** Internal `[[Class]]` value shortcuts. */ + var objectClass = 'Object', + airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject', + enviroClass = isCustomContext ? objectClass : 'Environment', + javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java), + phantomClass = isCustomContext ? objectClass : 'RuntimeObject'; + + /** Detect Java environments. */ + var java = /\bJava/.test(javaClass) && context.java; + + /** Detect Rhino. */ + var rhino = java && getClassOf(context.environment) == enviroClass; + + /** A character to represent alpha. */ + var alpha = java ? 'a' : '\u03b1'; + + /** A character to represent beta. */ + var beta = java ? 'b' : '\u03b2'; + + /** Browser document object. */ + var doc = context.document || {}; + + /** + * Detect Opera browser (Presto-based). + * http://www.howtocreate.co.uk/operaStuff/operaObject.html + * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini + */ + var opera = context.operamini || context.opera; + + /** Opera `[[Class]]`. */ + var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera)) + ? operaClass + : (opera = null); + + /*------------------------------------------------------------------------*/ + + /** Temporary variable used over the script's lifetime. */ + var data; + + /** The CPU architecture. */ + var arch = ua; + + /** Platform description array. */ + var description = []; + + /** Platform alpha/beta indicator. */ + var prerelease = null; + + /** A flag to indicate that environment features should be used to resolve the platform. */ + var useFeatures = ua == userAgent; + + /** The browser/environment version. */ + var version = useFeatures && opera && typeof opera.version == 'function' && opera.version(); + + /** A flag to indicate if the OS ends with "/ Version" */ + var isSpecialCasedOS; + + /* Detectable layout engines (order is important). */ + var layout = getLayout([ + { 'label': 'EdgeHTML', 'pattern': 'Edge' }, + 'Trident', + { 'label': 'WebKit', 'pattern': 'AppleWebKit' }, + 'iCab', + 'Presto', + 'NetFront', + 'Tasman', + 'KHTML', + 'Gecko' + ]); + + /* Detectable browser names (order is important). */ + var name = getName([ + 'Adobe AIR', + 'Arora', + 'Avant Browser', + 'Breach', + 'Camino', + 'Electron', + 'Epiphany', + 'Fennec', + 'Flock', + 'Galeon', + 'GreenBrowser', + 'iCab', + 'Iceweasel', + 'K-Meleon', + 'Konqueror', + 'Lunascape', + 'Maxthon', + { 'label': 'Microsoft Edge', 'pattern': '(?:Edge|Edg|EdgA|EdgiOS)' }, + 'Midori', + 'Nook Browser', + 'PaleMoon', + 'PhantomJS', + 'Raven', + 'Rekonq', + 'RockMelt', + { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' }, + 'SeaMonkey', + { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' }, + 'Sleipnir', + 'SlimBrowser', + { 'label': 'SRWare Iron', 'pattern': 'Iron' }, + 'Sunrise', + 'Swiftfox', + 'Vivaldi', + 'Waterfox', + 'WebPositive', + { 'label': 'Yandex Browser', 'pattern': 'YaBrowser' }, + { 'label': 'UC Browser', 'pattern': 'UCBrowser' }, + 'Opera Mini', + { 'label': 'Opera Mini', 'pattern': 'OPiOS' }, + 'Opera', + { 'label': 'Opera', 'pattern': 'OPR' }, + 'Chromium', + 'Chrome', + { 'label': 'Chrome', 'pattern': '(?:HeadlessChrome)' }, + { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' }, + { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' }, + { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' }, + { 'label': 'IE', 'pattern': 'IEMobile' }, + { 'label': 'IE', 'pattern': 'MSIE' }, + 'Safari' + ]); + + /* Detectable products (order is important). */ + var product = getProduct([ + { 'label': 'BlackBerry', 'pattern': 'BB10' }, + 'BlackBerry', + { 'label': 'Galaxy S', 'pattern': 'GT-I9000' }, + { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' }, + { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' }, + { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' }, + { 'label': 'Galaxy S5', 'pattern': 'SM-G900' }, + { 'label': 'Galaxy S6', 'pattern': 'SM-G920' }, + { 'label': 'Galaxy S6 Edge', 'pattern': 'SM-G925' }, + { 'label': 'Galaxy S7', 'pattern': 'SM-G930' }, + { 'label': 'Galaxy S7 Edge', 'pattern': 'SM-G935' }, + 'Google TV', + 'Lumia', + 'iPad', + 'iPod', + 'iPhone', + 'Kindle', + { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' }, + 'Nexus', + 'Nook', + 'PlayBook', + 'PlayStation Vita', + 'PlayStation', + 'TouchPad', + 'Transformer', + { 'label': 'Wii U', 'pattern': 'WiiU' }, + 'Wii', + 'Xbox One', + { 'label': 'Xbox 360', 'pattern': 'Xbox' }, + 'Xoom' + ]); + + /* Detectable manufacturers. */ + var manufacturer = getManufacturer({ + 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 }, + 'Alcatel': {}, + 'Archos': {}, + 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 }, + 'Asus': { 'Transformer': 1 }, + 'Barnes & Noble': { 'Nook': 1 }, + 'BlackBerry': { 'PlayBook': 1 }, + 'Google': { 'Google TV': 1, 'Nexus': 1 }, + 'HP': { 'TouchPad': 1 }, + 'HTC': {}, + 'Huawei': {}, + 'Lenovo': {}, + 'LG': {}, + 'Microsoft': { 'Xbox': 1, 'Xbox One': 1 }, + 'Motorola': { 'Xoom': 1 }, + 'Nintendo': { 'Wii U': 1, 'Wii': 1 }, + 'Nokia': { 'Lumia': 1 }, + 'Oppo': {}, + 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 }, + 'Sony': { 'PlayStation': 1, 'PlayStation Vita': 1 }, + 'Xiaomi': { 'Mi': 1, 'Redmi': 1 } + }); + + /* Detectable operating systems (order is important). */ + var os = getOS([ + 'Windows Phone', + 'KaiOS', + 'Android', + 'CentOS', + { 'label': 'Chrome OS', 'pattern': 'CrOS' }, + 'Debian', + { 'label': 'DragonFly BSD', 'pattern': 'DragonFly' }, + 'Fedora', + 'FreeBSD', + 'Gentoo', + 'Haiku', + 'Kubuntu', + 'Linux Mint', + 'OpenBSD', + 'Red Hat', + 'SuSE', + 'Ubuntu', + 'Xubuntu', + 'Cygwin', + 'Symbian OS', + 'hpwOS', + 'webOS ', + 'webOS', + 'Tablet OS', + 'Tizen', + 'Linux', + 'Mac OS X', + 'Macintosh', + 'Mac', + 'Windows 98;', + 'Windows ' + ]); + + /*------------------------------------------------------------------------*/ + + /** + * Picks the layout engine from an array of guesses. + * + * @private + * @param {Array} guesses An array of guesses. + * @returns {null|string} The detected layout engine. + */ + function getLayout(guesses) { + return reduce(guesses, function(result, guess) { + return result || RegExp('\\b' + ( + guess.pattern || qualify(guess) + ) + '\\b', 'i').exec(ua) && (guess.label || guess); + }); + } + + /** + * Picks the manufacturer from an array of guesses. + * + * @private + * @param {Array} guesses An object of guesses. + * @returns {null|string} The detected manufacturer. + */ + function getManufacturer(guesses) { + return reduce(guesses, function(result, value, key) { + // Lookup the manufacturer by product or scan the UA for the manufacturer. + return result || ( + value[product] || + value[/^[a-z]+(?: +[a-z]+\b)*/i.exec(product)] || + RegExp('\\b' + qualify(key) + '(?:\\b|\\w*\\d)', 'i').exec(ua) + ) && key; + }); + } + + /** + * Picks the browser name from an array of guesses. + * + * @private + * @param {Array} guesses An array of guesses. + * @returns {null|string} The detected browser name. + */ + function getName(guesses) { + return reduce(guesses, function(result, guess) { + return result || RegExp('\\b' + ( + guess.pattern || qualify(guess) + ) + '\\b', 'i').exec(ua) && (guess.label || guess); + }); + } + + /** + * Picks the OS name from an array of guesses. + * + * @private + * @param {Array} guesses An array of guesses. + * @returns {null|string} The detected OS name. + */ + function getOS(guesses) { + return reduce(guesses, function(result, guess) { + var pattern = guess.pattern || qualify(guess); + if (!result && (result = + RegExp('\\b' + pattern + '(?:/[\\d.]+|[ \\w.]*)', 'i').exec(ua) + )) { + result = cleanupOS(result, pattern, guess.label || guess); + } + return result; + }); + } + + /** + * Picks the product name from an array of guesses. + * + * @private + * @param {Array} guesses An array of guesses. + * @returns {null|string} The detected product name. + */ + function getProduct(guesses) { + return reduce(guesses, function(result, guess) { + var pattern = guess.pattern || qualify(guess); + if (!result && (result = + RegExp('\\b' + pattern + ' *\\d+[.\\w_]*', 'i').exec(ua) || + RegExp('\\b' + pattern + ' *\\w+-[\\w]*', 'i').exec(ua) || + RegExp('\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)', 'i').exec(ua) + )) { + // Split by forward slash and append product version if needed. + if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\d.]+/.test(result[0])) { + result[0] += ' ' + result[1]; + } + // Correct character case and cleanup string. + guess = guess.label || guess; + result = format(result[0] + .replace(RegExp(pattern, 'i'), guess) + .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ') + .replace(RegExp('(' + guess + ')[-_.]?(\\w)', 'i'), '$1 $2')); + } + return result; + }); + } + + /** + * Resolves the version using an array of UA patterns. + * + * @private + * @param {Array} patterns An array of UA patterns. + * @returns {null|string} The detected version. + */ + function getVersion(patterns) { + return reduce(patterns, function(result, pattern) { + return result || (RegExp(pattern + + '(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null; + }); + } + + /** + * Returns `platform.description` when the platform object is coerced to a string. + * + * @name toString + * @memberOf platform + * @returns {string} Returns `platform.description` if available, else an empty string. + */ + function toStringPlatform() { + return this.description || ''; + } + + /*------------------------------------------------------------------------*/ + + // Convert layout to an array so we can add extra details. + layout && (layout = [layout]); + + // Detect Android products. + // Browsers on Android devices typically provide their product IDS after "Android;" + // up to "Build" or ") AppleWebKit". + // Example: + // "Mozilla/5.0 (Linux; Android 8.1.0; Moto G (5) Plus) AppleWebKit/537.36 + // (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36" + if (/\bAndroid\b/.test(os) && !product && + (data = /\bAndroid[^;]*;(.*?)(?:Build|\) AppleWebKit)\b/i.exec(ua))) { + product = trim(data[1]) + // Replace any language codes (eg. "en-US"). + .replace(/^[a-z]{2}-[a-z]{2};\s*/i, '') + || null; + } + // Detect product names that contain their manufacturer's name. + if (manufacturer && !product) { + product = getProduct([manufacturer]); + } else if (manufacturer && product) { + product = product + .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.\\s]', 'i'), manufacturer + ' ') + .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.]?(\\w)', 'i'), manufacturer + ' $2'); + } + // Clean up Google TV. + if ((data = /\bGoogle TV\b/.exec(product))) { + product = data[0]; + } + // Detect simulators. + if (/\bSimulator\b/i.test(ua)) { + product = (product ? product + ' ' : '') + 'Simulator'; + } + // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS. + if (name == 'Opera Mini' && /\bOPiOS\b/.test(ua)) { + description.push('running in Turbo/Uncompressed mode'); + } + // Detect IE Mobile 11. + if (name == 'IE' && /\blike iPhone OS\b/.test(ua)) { + data = parse(ua.replace(/like iPhone OS/, '')); + manufacturer = data.manufacturer; + product = data.product; + } + // Detect iOS. + else if (/^iP/.test(product)) { + name || (name = 'Safari'); + os = 'iOS' + ((data = / OS ([\d_]+)/i.exec(ua)) + ? ' ' + data[1].replace(/_/g, '.') + : ''); + } + // Detect Kubuntu. + else if (name == 'Konqueror' && /^Linux\b/i.test(os)) { + os = 'Kubuntu'; + } + // Detect Android browsers. + else if ((manufacturer && manufacturer != 'Google' && + ((/Chrome/.test(name) && !/\bMobile Safari\b/i.test(ua)) || /\bVita\b/.test(product))) || + (/\bAndroid\b/.test(os) && /^Chrome/.test(name) && /\bVersion\//i.test(ua))) { + name = 'Android Browser'; + os = /\bAndroid\b/.test(os) ? os : 'Android'; + } + // Detect Silk desktop/accelerated modes. + else if (name == 'Silk') { + if (!/\bMobi/i.test(ua)) { + os = 'Android'; + description.unshift('desktop mode'); + } + if (/Accelerated *= *true/i.test(ua)) { + description.unshift('accelerated'); + } + } + // Detect UC Browser speed mode. + else if (name == 'UC Browser' && /\bUCWEB\b/.test(ua)) { + description.push('speed mode'); + } + // Detect PaleMoon identifying as Firefox. + else if (name == 'PaleMoon' && (data = /\bFirefox\/([\d.]+)\b/.exec(ua))) { + description.push('identifying as Firefox ' + data[1]); + } + // Detect Firefox OS and products running Firefox. + else if (name == 'Firefox' && (data = /\b(Mobile|Tablet|TV)\b/i.exec(ua))) { + os || (os = 'Firefox OS'); + product || (product = data[1]); + } + // Detect false positives for Firefox/Safari. + else if (!name || (data = !/\bMinefield\b/i.test(ua) && /\b(?:Firefox|Safari)\b/.exec(name))) { + // Escape the `/` for Firefox 1. + if (name && !product && /[\/,]|^[^(]+?\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) { + // Clear name of false positives. + name = null; + } + // Reassign a generic name. + if ((data = product || manufacturer || os) && + (product || manufacturer || /\b(?:Android|Symbian OS|Tablet OS|webOS)\b/.test(os))) { + name = /[a-z]+(?: Hat)?/i.exec(/\bAndroid\b/.test(os) ? os : data) + ' Browser'; + } + } + // Add Chrome version to description for Electron. + else if (name == 'Electron' && (data = (/\bChrome\/([\d.]+)\b/.exec(ua) || 0)[1])) { + description.push('Chromium ' + data); + } + // Detect non-Opera (Presto-based) versions (order is important). + if (!version) { + version = getVersion([ + '(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\d.]+$)|UCBrowser|YaBrowser)', + 'Version', + qualify(name), + '(?:Firefox|Minefield|NetFront)' + ]); + } + // Detect stubborn layout engines. + if ((data = + layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' || + /\bOpera\b/.test(name) && (/\bOPR\b/.test(ua) ? 'Blink' : 'Presto') || + /\b(?:Midori|Nook|Safari)\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' || + !layout && /\bMSIE\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') || + layout == 'WebKit' && /\bPlayStation\b(?! Vita\b)/i.test(name) && 'NetFront' + )) { + layout = [data]; + } + // Detect Windows Phone 7 desktop mode. + if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(ua) || 0)[1])) { + name += ' Mobile'; + os = 'Windows Phone ' + (/\+$/.test(data) ? data : data + '.x'); + description.unshift('desktop mode'); + } + // Detect Windows Phone 8.x desktop mode. + else if (/\bWPDesktop\b/i.test(ua)) { + name = 'IE Mobile'; + os = 'Windows Phone 8.x'; + description.unshift('desktop mode'); + version || (version = (/\brv:([\d.]+)/.exec(ua) || 0)[1]); + } + // Detect IE 11 identifying as other browsers. + else if (name != 'IE' && layout == 'Trident' && (data = /\brv:([\d.]+)/.exec(ua))) { + if (name) { + description.push('identifying as ' + name + (version ? ' ' + version : '')); + } + name = 'IE'; + version = data[1]; + } + // Leverage environment features. + if (useFeatures) { + // Detect server-side environments. + // Rhino has a global function while others have a global object. + if (isHostType(context, 'global')) { + if (java) { + data = java.lang.System; + arch = data.getProperty('os.arch'); + os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version'); + } + if (rhino) { + try { + version = context.require('ringo/engine').version.join('.'); + name = 'RingoJS'; + } catch(e) { + if ((data = context.system) && data.global.system == context.system) { + name = 'Narwhal'; + os || (os = data[0].os || null); + } + } + if (!name) { + name = 'Rhino'; + } + } + else if ( + typeof context.process == 'object' && !context.process.browser && + (data = context.process) + ) { + if (typeof data.versions == 'object') { + if (typeof data.versions.electron == 'string') { + description.push('Node ' + data.versions.node); + name = 'Electron'; + version = data.versions.electron; + } else if (typeof data.versions.nw == 'string') { + description.push('Chromium ' + version, 'Node ' + data.versions.node); + name = 'NW.js'; + version = data.versions.nw; + } + } + if (!name) { + name = 'Node.js'; + arch = data.arch; + os = data.platform; + version = /[\d.]+/.exec(data.version); + version = version ? version[0] : null; + } + } + } + // Detect Adobe AIR. + else if (getClassOf((data = context.runtime)) == airRuntimeClass) { + name = 'Adobe AIR'; + os = data.flash.system.Capabilities.os; + } + // Detect PhantomJS. + else if (getClassOf((data = context.phantom)) == phantomClass) { + name = 'PhantomJS'; + version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch); + } + // Detect IE compatibility modes. + else if (typeof doc.documentMode == 'number' && (data = /\bTrident\/(\d+)/i.exec(ua))) { + // We're in compatibility mode when the Trident version + 4 doesn't + // equal the document mode. + version = [version, doc.documentMode]; + if ((data = +data[1] + 4) != version[1]) { + description.push('IE ' + version[1] + ' mode'); + layout && (layout[1] = ''); + version[1] = data; + } + version = name == 'IE' ? String(version[1].toFixed(1)) : version[0]; + } + // Detect IE 11 masking as other browsers. + else if (typeof doc.documentMode == 'number' && /^(?:Chrome|Firefox)\b/.test(name)) { + description.push('masking as ' + name + ' ' + version); + name = 'IE'; + version = '11.0'; + layout = ['Trident']; + os = 'Windows'; + } + os = os && format(os); + } + // Detect prerelease phases. + if (version && (data = + /(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(version) || + /(?:alpha|beta)(?: ?\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) || + /\bMinefield\b/i.test(ua) && 'a' + )) { + prerelease = /b/i.test(data) ? 'beta' : 'alpha'; + version = version.replace(RegExp(data + '\\+?$'), '') + + (prerelease == 'beta' ? beta : alpha) + (/\d+\+?/.exec(data) || ''); + } + // Detect Firefox Mobile. + if (name == 'Fennec' || name == 'Firefox' && /\b(?:Android|Firefox OS|KaiOS)\b/.test(os)) { + name = 'Firefox Mobile'; + } + // Obscure Maxthon's unreliable version. + else if (name == 'Maxthon' && version) { + version = version.replace(/\.[\d.]+/, '.x'); + } + // Detect Xbox 360 and Xbox One. + else if (/\bXbox\b/i.test(product)) { + if (product == 'Xbox 360') { + os = null; + } + if (product == 'Xbox 360' && /\bIEMobile\b/.test(ua)) { + description.unshift('mobile mode'); + } + } + // Add mobile postfix. + else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) && + (os == 'Windows CE' || /Mobi/i.test(ua))) { + name += ' Mobile'; + } + // Detect IE platform preview. + else if (name == 'IE' && useFeatures) { + try { + if (context.external === null) { + description.unshift('platform preview'); + } + } catch(e) { + description.unshift('embedded'); + } + } + // Detect BlackBerry OS version. + // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp + else if ((/\bBlackBerry\b/.test(product) || /\bBB10\b/.test(ua)) && (data = + (RegExp(product.replace(/ +/g, ' *') + '/([.\\d]+)', 'i').exec(ua) || 0)[1] || + version + )) { + data = [data, /BB10/.test(ua)]; + os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0]; + version = null; + } + // Detect Opera identifying/masking itself as another browser. + // http://www.opera.com/support/kb/view/843/ + else if (this != forOwn && product != 'Wii' && ( + (useFeatures && opera) || + (/Opera/.test(name) && /\b(?:MSIE|Firefox)\b/i.test(ua)) || + (name == 'Firefox' && /\bOS X (?:\d+\.){2,}/.test(os)) || + (name == 'IE' && ( + (os && !/^Win/.test(os) && version > 5.5) || + /\bWindows XP\b/.test(os) && version > 8 || + version == 8 && !/\bTrident\b/.test(ua) + )) + ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) { + // When "identifying", the UA contains both Opera and the other browser's name. + data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : ''); + if (reOpera.test(name)) { + if (/\bIE\b/.test(data) && os == 'Mac OS') { + os = null; + } + data = 'identify' + data; + } + // When "masking", the UA contains only the other browser's name. + else { + data = 'mask' + data; + if (operaClass) { + name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2')); + } else { + name = 'Opera'; + } + if (/\bIE\b/.test(data)) { + os = null; + } + if (!useFeatures) { + version = null; + } + } + layout = ['Presto']; + description.push(data); + } + // Detect WebKit Nightly and approximate Chrome/Safari versions. + if ((data = (/\bAppleWebKit\/([\d.]+\+?)/i.exec(ua) || 0)[1])) { + // Correct build number for numeric comparison. + // (e.g. "532.5" becomes "532.05") + data = [parseFloat(data.replace(/\.(\d)$/, '.0$1')), data]; + // Nightly builds are postfixed with a "+". + if (name == 'Safari' && data[1].slice(-1) == '+') { + name = 'WebKit Nightly'; + prerelease = 'alpha'; + version = data[1].slice(0, -1); + } + // Clear incorrect browser versions. + else if (version == data[1] || + version == (data[2] = (/\bSafari\/([\d.]+\+?)/i.exec(ua) || 0)[1])) { + version = null; + } + // Use the full Chrome version when available. + data[1] = (/\b(?:Headless)?Chrome\/([\d.]+)/i.exec(ua) || 0)[1]; + // Detect Blink layout engine. + if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') { + layout = ['Blink']; + } + // Detect JavaScriptCore. + // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi + if (!useFeatures || (!likeChrome && !data[1])) { + layout && (layout[1] = 'like Safari'); + data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : data < 602 ? 9 : data < 604 ? 10 : data < 606 ? 11 : data < 608 ? 12 : '12'); + } else { + layout && (layout[1] = 'like Chrome'); + data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28'); + } + // Add the postfix of ".x" or "+" for approximate versions. + layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+')); + // Obscure version for some Safari 1-2 releases. + if (name == 'Safari' && (!version || parseInt(version) > 45)) { + version = data; + } else if (name == 'Chrome' && /\bHeadlessChrome/i.test(ua)) { + description.unshift('headless'); + } + } + // Detect Opera desktop modes. + if (name == 'Opera' && (data = /\bzbov|zvav$/.exec(os))) { + name += ' '; + description.unshift('desktop mode'); + if (data == 'zvav') { + name += 'Mini'; + version = null; + } else { + name += 'Mobile'; + } + os = os.replace(RegExp(' *' + data + '$'), ''); + } + // Detect Chrome desktop mode. + else if (name == 'Safari' && /\bChrome\b/.exec(layout && layout[1])) { + description.unshift('desktop mode'); + name = 'Chrome Mobile'; + version = null; + + if (/\bOS X\b/.test(os)) { + manufacturer = 'Apple'; + os = 'iOS 4.3+'; + } else { + os = null; + } + } + // Newer versions of SRWare Iron uses the Chrome tag to indicate its version number. + else if (/\bSRWare Iron\b/.test(name) && !version) { + version = getVersion('Chrome'); + } + // Strip incorrect OS versions. + if (version && version.indexOf((data = /[\d.]+$/.exec(os))) == 0 && + ua.indexOf('/' + data + '-') > -1) { + os = trim(os.replace(data, '')); + } + // Ensure OS does not include the browser name. + if (os && os.indexOf(name) != -1 && !RegExp(name + ' OS').test(os)) { + os = os.replace(RegExp(' *' + qualify(name) + ' *'), ''); + } + // Add layout engine. + if (layout && !/\b(?:Avant|Nook)\b/.test(name) && ( + /Browser|Lunascape|Maxthon/.test(name) || + name != 'Safari' && /^iOS/.test(os) && /\bSafari\b/.test(layout[1]) || + /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(name) && layout[1])) { + // Don't add layout details to description if they are falsey. + (data = layout[layout.length - 1]) && description.push(data); + } + // Combine contextual information. + if (description.length) { + description = ['(' + description.join('; ') + ')']; + } + // Append manufacturer to description. + if (manufacturer && product && product.indexOf(manufacturer) < 0) { + description.push('on ' + manufacturer); + } + // Append product to description. + if (product) { + description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product); + } + // Parse the OS into an object. + if (os) { + data = / ([\d.+]+)$/.exec(os); + isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/'; + os = { + 'architecture': 32, + 'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os, + 'version': data ? data[1] : null, + 'toString': function() { + var version = this.version; + return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : ''); + } + }; + } + // Add browser/OS architecture. + if ((data = /\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(arch)) && !/\bi686\b/i.test(arch)) { + if (os) { + os.architecture = 64; + os.family = os.family.replace(RegExp(' *' + data), ''); + } + if ( + name && (/\bWOW64\b/i.test(ua) || + (useFeatures && /\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\bWin64; x64\b/i.test(ua))) + ) { + description.unshift('32-bit'); + } + } + // Chrome 39 and above on OS X is always 64-bit. + else if ( + os && /^OS X/.test(os.family) && + name == 'Chrome' && parseFloat(version) >= 39 + ) { + os.architecture = 64; + } + + ua || (ua = null); + + /*------------------------------------------------------------------------*/ + + /** + * The platform object. + * + * @name platform + * @type Object + */ + var platform = {}; + + /** + * The platform description. + * + * @memberOf platform + * @type string|null + */ + platform.description = ua; + + /** + * The name of the browser's layout engine. + * + * The list of common layout engines include: + * "Blink", "EdgeHTML", "Gecko", "Trident" and "WebKit" + * + * @memberOf platform + * @type string|null + */ + platform.layout = layout && layout[0]; + + /** + * The name of the product's manufacturer. + * + * The list of manufacturers include: + * "Apple", "Archos", "Amazon", "Asus", "Barnes & Noble", "BlackBerry", + * "Google", "HP", "HTC", "LG", "Microsoft", "Motorola", "Nintendo", + * "Nokia", "Samsung" and "Sony" + * + * @memberOf platform + * @type string|null + */ + platform.manufacturer = manufacturer; + + /** + * The name of the browser/environment. + * + * The list of common browser names include: + * "Chrome", "Electron", "Firefox", "Firefox for iOS", "IE", + * "Microsoft Edge", "PhantomJS", "Safari", "SeaMonkey", "Silk", + * "Opera Mini" and "Opera" + * + * Mobile versions of some browsers have "Mobile" appended to their name: + * eg. "Chrome Mobile", "Firefox Mobile", "IE Mobile" and "Opera Mobile" + * + * @memberOf platform + * @type string|null + */ + platform.name = name; + + /** + * The alpha/beta release indicator. + * + * @memberOf platform + * @type string|null + */ + platform.prerelease = prerelease; + + /** + * The name of the product hosting the browser. + * + * The list of common products include: + * + * "BlackBerry", "Galaxy S4", "Lumia", "iPad", "iPod", "iPhone", "Kindle", + * "Kindle Fire", "Nexus", "Nook", "PlayBook", "TouchPad" and "Transformer" + * + * @memberOf platform + * @type string|null + */ + platform.product = product; + + /** + * The browser's user agent string. + * + * @memberOf platform + * @type string|null + */ + platform.ua = ua; + + /** + * The browser/environment version. + * + * @memberOf platform + * @type string|null + */ + platform.version = name && version; + + /** + * The name of the operating system. + * + * @memberOf platform + * @type Object + */ + platform.os = os || { + + /** + * The CPU architecture the OS is built for. + * + * @memberOf platform.os + * @type number|null + */ + 'architecture': null, + + /** + * The family of the OS. + * + * Common values include: + * "Windows", "Windows Server 2008 R2 / 7", "Windows Server 2008 / Vista", + * "Windows XP", "OS X", "Linux", "Ubuntu", "Debian", "Fedora", "Red Hat", + * "SuSE", "Android", "iOS" and "Windows Phone" + * + * @memberOf platform.os + * @type string|null + */ + 'family': null, + + /** + * The version of the OS. + * + * @memberOf platform.os + * @type string|null + */ + 'version': null, + + /** + * Returns the OS string. + * + * @memberOf platform.os + * @returns {string} The OS string. + */ + 'toString': function() { return 'null'; } + }; + + platform.parse = parse; + platform.toString = toStringPlatform; + + if (platform.version) { + description.unshift(version); + } + if (platform.name) { + description.unshift(name); + } + if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) { + description.push(product ? '(' + os + ')' : 'on ' + os); + } + if (description.length) { + platform.description = description.join(' '); + } + return platform; + } + + /*--------------------------------------------------------------------------*/ + + // Export platform. + var platform = parse(); + + // Some AMD build optimizers, like r.js, check for condition patterns like the following: + if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) { + // Expose platform on the global object to prevent errors when platform is + // loaded by a script tag in the presence of an AMD loader. + // See http://requirejs.org/docs/errors.html#mismatch for more details. + root.platform = platform; + + // Define as an anonymous module so platform can be aliased through path mapping. + define(function() { + return platform; + }); + } + // Check for `exports` after `define` in case a build optimizer adds an `exports` object. + else if (freeExports && freeModule) { + // Export for CommonJS support. + forOwn(platform, function(value, key) { + freeExports[key] = value; + }); + } + else { + // Export to the global object. + root.platform = platform; + } +}.call(this)); + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],441:[function(require,module,exports){ +(function (process){(function (){ +'use strict'; + +if (typeof process === 'undefined' || + !process.version || + process.version.indexOf('v0.') === 0 || + process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { + module.exports = { nextTick: nextTick }; +} else { + module.exports = process +} + +function nextTick(fn, arg1, arg2, arg3) { + if (typeof fn !== 'function') { + throw new TypeError('"callback" argument must be a function'); + } + var len = arguments.length; + var args, i; + switch (len) { + case 0: + case 1: + return process.nextTick(fn); + case 2: + return process.nextTick(function afterTickOne() { + fn.call(null, arg1); + }); + case 3: + return process.nextTick(function afterTickTwo() { + fn.call(null, arg1, arg2); + }); + case 4: + return process.nextTick(function afterTickThree() { + fn.call(null, arg1, arg2, arg3); + }); + default: + args = new Array(len - 1); + i = 0; + while (i < args.length) { + args[i++] = arguments[i]; + } + return process.nextTick(function afterTick() { + fn.apply(null, args); + }); + } +} + + +}).call(this)}).call(this,require('_process')) +},{"_process":538}],442:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // 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 + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // 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. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],443:[function(require,module,exports){ +(function (global){(function (){ +/*! https://mths.be/punycode v1.4.1 by @mathias */ +;(function(root) { + + /** Detect free variables */ + var freeExports = typeof exports == 'object' && exports && + !exports.nodeType && exports; + var freeModule = typeof module == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof global == 'object' && global; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + /** + * The `punycode` object. + * @name punycode + * @type Object + */ + var punycode, + + /** Highest positive signed 32-bit float value */ + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + /** Bootstring parameters */ + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + /** Regular expressions */ + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + /** Error messages */ + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + /** Convenience shortcuts */ + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + /** Temporary variable */ + key; + + /*--------------------------------------------------------------------------*/ + + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error(type) { + throw new RangeError(errors[type]); + } + + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see <https://mathiasbynens.be/notes/javascript-encoding> + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + function decode(input) { + // Don't use UCS-2 + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + /** Cached calculation results */ + baseMinusT; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); + + // Cache the length + inputLength = input.length; + + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; + + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + /*--------------------------------------------------------------------------*/ + + /** Define the public API */ + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '1.4.1', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see <https://mathiasbynens.be/notes/javascript-encoding> + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + /** Expose `punycode` */ + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + typeof define == 'function' && + typeof define.amd == 'object' && + define.amd + ) { + define('punycode', function() { + return punycode; + }); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { + // in Node.js, io.js, or RingoJS v0.8.0+ + freeModule.exports = punycode; + } else { + // in Narwhal or RingoJS v0.7.0- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { + // in Rhino or a web browser + root.punycode = punycode; + } + +}(this)); + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],444:[function(require,module,exports){ +'use strict'; + +var replace = String.prototype.replace; +var percentTwenties = /%20/g; + +var Format = { + RFC1738: 'RFC1738', + RFC3986: 'RFC3986' +}; + +module.exports = { + 'default': Format.RFC3986, + formatters: { + RFC1738: function (value) { + return replace.call(value, percentTwenties, '+'); + }, + RFC3986: function (value) { + return String(value); + } + }, + RFC1738: Format.RFC1738, + RFC3986: Format.RFC3986 +}; + +},{}],445:[function(require,module,exports){ +'use strict'; + +var stringify = require('./stringify'); +var parse = require('./parse'); +var formats = require('./formats'); + +module.exports = { + formats: formats, + parse: parse, + stringify: stringify +}; + +},{"./formats":444,"./parse":446,"./stringify":447}],446:[function(require,module,exports){ +'use strict'; + +var utils = require('./utils'); + +var has = Object.prototype.hasOwnProperty; +var isArray = Array.isArray; + +var defaults = { + allowDots: false, + allowPrototypes: false, + allowSparse: false, + arrayLimit: 20, + charset: 'utf-8', + charsetSentinel: false, + comma: false, + decoder: utils.decode, + delimiter: '&', + depth: 5, + ignoreQueryPrefix: false, + interpretNumericEntities: false, + parameterLimit: 1000, + parseArrays: true, + plainObjects: false, + strictNullHandling: false +}; + +var interpretNumericEntities = function (str) { + return str.replace(/&#(\d+);/g, function ($0, numberStr) { + return String.fromCharCode(parseInt(numberStr, 10)); + }); +}; + +var parseArrayValue = function (val, options) { + if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) { + return val.split(','); + } + + return val; +}; + +// This is what browsers will submit when the ✓ character occurs in an +// application/x-www-form-urlencoded body and the encoding of the page containing +// the form is iso-8859-1, or when the submitted form has an accept-charset +// attribute of iso-8859-1. Presumably also with other charsets that do not contain +// the ✓ character, such as us-ascii. +var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') + +// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded. +var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') + +var parseValues = function parseQueryStringValues(str, options) { + var obj = { __proto__: null }; + + var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; + var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; + var parts = cleanStr.split(options.delimiter, limit); + var skipIndex = -1; // Keep track of where the utf8 sentinel was found + var i; + + var charset = options.charset; + if (options.charsetSentinel) { + for (i = 0; i < parts.length; ++i) { + if (parts[i].indexOf('utf8=') === 0) { + if (parts[i] === charsetSentinel) { + charset = 'utf-8'; + } else if (parts[i] === isoSentinel) { + charset = 'iso-8859-1'; + } + skipIndex = i; + i = parts.length; // The eslint settings do not allow break; + } + } + } + + for (i = 0; i < parts.length; ++i) { + if (i === skipIndex) { + continue; + } + var part = parts[i]; + + var bracketEqualsPos = part.indexOf(']='); + var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; + + var key, val; + if (pos === -1) { + key = options.decoder(part, defaults.decoder, charset, 'key'); + val = options.strictNullHandling ? null : ''; + } else { + key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); + val = utils.maybeMap( + parseArrayValue(part.slice(pos + 1), options), + function (encodedVal) { + return options.decoder(encodedVal, defaults.decoder, charset, 'value'); + } + ); + } + + if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { + val = interpretNumericEntities(val); + } + + if (part.indexOf('[]=') > -1) { + val = isArray(val) ? [val] : val; + } + + if (has.call(obj, key)) { + obj[key] = utils.combine(obj[key], val); + } else { + obj[key] = val; + } + } + + return obj; +}; + +var parseObject = function (chain, val, options, valuesParsed) { + var leaf = valuesParsed ? val : parseArrayValue(val, options); + + for (var i = chain.length - 1; i >= 0; --i) { + var obj; + var root = chain[i]; + + if (root === '[]' && options.parseArrays) { + obj = [].concat(leaf); + } else { + obj = options.plainObjects ? Object.create(null) : {}; + var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; + var index = parseInt(cleanRoot, 10); + if (!options.parseArrays && cleanRoot === '') { + obj = { 0: leaf }; + } else if ( + !isNaN(index) + && root !== cleanRoot + && String(index) === cleanRoot + && index >= 0 + && (options.parseArrays && index <= options.arrayLimit) + ) { + obj = []; + obj[index] = leaf; + } else if (cleanRoot !== '__proto__') { + obj[cleanRoot] = leaf; + } + } + + leaf = obj; + } + + return leaf; +}; + +var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { + if (!givenKey) { + return; + } + + // Transform dot notation to bracket notation + var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; + + // The regex chunks + + var brackets = /(\[[^[\]]*])/; + var child = /(\[[^[\]]*])/g; + + // Get the parent + + var segment = options.depth > 0 && brackets.exec(key); + var parent = segment ? key.slice(0, segment.index) : key; + + // Stash the parent if it exists + + var keys = []; + if (parent) { + // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties + if (!options.plainObjects && has.call(Object.prototype, parent)) { + if (!options.allowPrototypes) { + return; + } + } + + keys.push(parent); + } + + // Loop through children appending to the array until we hit depth + + var i = 0; + while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { + i += 1; + if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { + if (!options.allowPrototypes) { + return; + } + } + keys.push(segment[1]); + } + + // If there's a remainder, just add whatever is left + + if (segment) { + keys.push('[' + key.slice(segment.index) + ']'); + } + + return parseObject(keys, val, options, valuesParsed); +}; + +var normalizeParseOptions = function normalizeParseOptions(opts) { + if (!opts) { + return defaults; + } + + if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') { + throw new TypeError('Decoder has to be a function.'); + } + + if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { + throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); + } + var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; + + return { + allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, + allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, + allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse, + arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, + charset: charset, + charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, + comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, + decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, + delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, + // eslint-disable-next-line no-implicit-coercion, no-extra-parens + depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, + ignoreQueryPrefix: opts.ignoreQueryPrefix === true, + interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, + parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, + parseArrays: opts.parseArrays !== false, + plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, + strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling + }; +}; + +module.exports = function (str, opts) { + var options = normalizeParseOptions(opts); + + if (str === '' || str === null || typeof str === 'undefined') { + return options.plainObjects ? Object.create(null) : {}; + } + + var tempObj = typeof str === 'string' ? parseValues(str, options) : str; + var obj = options.plainObjects ? Object.create(null) : {}; + + // Iterate over the keys and setup the new object + + var keys = Object.keys(tempObj); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string'); + obj = utils.merge(obj, newObj, options); + } + + if (options.allowSparse === true) { + return obj; + } + + return utils.compact(obj); +}; + +},{"./utils":448}],447:[function(require,module,exports){ +'use strict'; + +var getSideChannel = require('side-channel'); +var utils = require('./utils'); +var formats = require('./formats'); +var has = Object.prototype.hasOwnProperty; + +var arrayPrefixGenerators = { + brackets: function brackets(prefix) { + return prefix + '[]'; + }, + comma: 'comma', + indices: function indices(prefix, key) { + return prefix + '[' + key + ']'; + }, + repeat: function repeat(prefix) { + return prefix; + } +}; + +var isArray = Array.isArray; +var push = Array.prototype.push; +var pushToArray = function (arr, valueOrArray) { + push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); +}; + +var toISO = Date.prototype.toISOString; + +var defaultFormat = formats['default']; +var defaults = { + addQueryPrefix: false, + allowDots: false, + charset: 'utf-8', + charsetSentinel: false, + delimiter: '&', + encode: true, + encoder: utils.encode, + encodeValuesOnly: false, + format: defaultFormat, + formatter: formats.formatters[defaultFormat], + // deprecated + indices: false, + serializeDate: function serializeDate(date) { + return toISO.call(date); + }, + skipNulls: false, + strictNullHandling: false +}; + +var isNonNullishPrimitive = function isNonNullishPrimitive(v) { + return typeof v === 'string' + || typeof v === 'number' + || typeof v === 'boolean' + || typeof v === 'symbol' + || typeof v === 'bigint'; +}; + +var sentinel = {}; + +var stringify = function stringify( + object, + prefix, + generateArrayPrefix, + commaRoundTrip, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + format, + formatter, + encodeValuesOnly, + charset, + sideChannel +) { + var obj = object; + + var tmpSc = sideChannel; + var step = 0; + var findFlag = false; + while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) { + // Where object last appeared in the ref tree + var pos = tmpSc.get(object); + step += 1; + if (typeof pos !== 'undefined') { + if (pos === step) { + throw new RangeError('Cyclic object value'); + } else { + findFlag = true; // Break while + } + } + if (typeof tmpSc.get(sentinel) === 'undefined') { + step = 0; + } + } + + if (typeof filter === 'function') { + obj = filter(prefix, obj); + } else if (obj instanceof Date) { + obj = serializeDate(obj); + } else if (generateArrayPrefix === 'comma' && isArray(obj)) { + obj = utils.maybeMap(obj, function (value) { + if (value instanceof Date) { + return serializeDate(value); + } + return value; + }); + } + + if (obj === null) { + if (strictNullHandling) { + return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix; + } + + obj = ''; + } + + if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { + if (encoder) { + var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format); + return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))]; + } + return [formatter(prefix) + '=' + formatter(String(obj))]; + } + + var values = []; + + if (typeof obj === 'undefined') { + return values; + } + + var objKeys; + if (generateArrayPrefix === 'comma' && isArray(obj)) { + // we need to join elements in + if (encodeValuesOnly && encoder) { + obj = utils.maybeMap(obj, encoder); + } + objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }]; + } else if (isArray(filter)) { + objKeys = filter; + } else { + var keys = Object.keys(obj); + objKeys = sort ? keys.sort(sort) : keys; + } + + var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix; + + for (var j = 0; j < objKeys.length; ++j) { + var key = objKeys[j]; + var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key]; + + if (skipNulls && value === null) { + continue; + } + + var keyPrefix = isArray(obj) + ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix + : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']'); + + sideChannel.set(object, step); + var valueSideChannel = getSideChannel(); + valueSideChannel.set(sentinel, sideChannel); + pushToArray(values, stringify( + value, + keyPrefix, + generateArrayPrefix, + commaRoundTrip, + strictNullHandling, + skipNulls, + generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder, + filter, + sort, + allowDots, + serializeDate, + format, + formatter, + encodeValuesOnly, + charset, + valueSideChannel + )); + } + + return values; +}; + +var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { + if (!opts) { + return defaults; + } + + if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') { + throw new TypeError('Encoder has to be a function.'); + } + + var charset = opts.charset || defaults.charset; + if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { + throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); + } + + var format = formats['default']; + if (typeof opts.format !== 'undefined') { + if (!has.call(formats.formatters, opts.format)) { + throw new TypeError('Unknown format option provided.'); + } + format = opts.format; + } + var formatter = formats.formatters[format]; + + var filter = defaults.filter; + if (typeof opts.filter === 'function' || isArray(opts.filter)) { + filter = opts.filter; + } + + return { + addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix, + allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, + charset: charset, + charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, + delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter, + encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode, + encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder, + encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly, + filter: filter, + format: format, + formatter: formatter, + serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate, + skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls, + sort: typeof opts.sort === 'function' ? opts.sort : null, + strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling + }; +}; + +module.exports = function (object, opts) { + var obj = object; + var options = normalizeStringifyOptions(opts); + + var objKeys; + var filter; + + if (typeof options.filter === 'function') { + filter = options.filter; + obj = filter('', obj); + } else if (isArray(options.filter)) { + filter = options.filter; + objKeys = filter; + } + + var keys = []; + + if (typeof obj !== 'object' || obj === null) { + return ''; + } + + var arrayFormat; + if (opts && opts.arrayFormat in arrayPrefixGenerators) { + arrayFormat = opts.arrayFormat; + } else if (opts && 'indices' in opts) { + arrayFormat = opts.indices ? 'indices' : 'repeat'; + } else { + arrayFormat = 'indices'; + } + + var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; + if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') { + throw new TypeError('`commaRoundTrip` must be a boolean, or absent'); + } + var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip; + + if (!objKeys) { + objKeys = Object.keys(obj); + } + + if (options.sort) { + objKeys.sort(options.sort); + } + + var sideChannel = getSideChannel(); + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + + if (options.skipNulls && obj[key] === null) { + continue; + } + pushToArray(keys, stringify( + obj[key], + key, + generateArrayPrefix, + commaRoundTrip, + options.strictNullHandling, + options.skipNulls, + options.encode ? options.encoder : null, + options.filter, + options.sort, + options.allowDots, + options.serializeDate, + options.format, + options.formatter, + options.encodeValuesOnly, + options.charset, + sideChannel + )); + } + + var joined = keys.join(options.delimiter); + var prefix = options.addQueryPrefix === true ? '?' : ''; + + if (options.charsetSentinel) { + if (options.charset === 'iso-8859-1') { + // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark + prefix += 'utf8=%26%2310003%3B&'; + } else { + // encodeURIComponent('✓') + prefix += 'utf8=%E2%9C%93&'; + } + } + + return joined.length > 0 ? prefix + joined : ''; +}; + +},{"./formats":444,"./utils":448,"side-channel":467}],448:[function(require,module,exports){ +'use strict'; + +var formats = require('./formats'); + +var has = Object.prototype.hasOwnProperty; +var isArray = Array.isArray; + +var hexTable = (function () { + var array = []; + for (var i = 0; i < 256; ++i) { + array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); + } + + return array; +}()); + +var compactQueue = function compactQueue(queue) { + while (queue.length > 1) { + var item = queue.pop(); + var obj = item.obj[item.prop]; + + if (isArray(obj)) { + var compacted = []; + + for (var j = 0; j < obj.length; ++j) { + if (typeof obj[j] !== 'undefined') { + compacted.push(obj[j]); + } + } + + item.obj[item.prop] = compacted; + } + } +}; + +var arrayToObject = function arrayToObject(source, options) { + var obj = options && options.plainObjects ? Object.create(null) : {}; + for (var i = 0; i < source.length; ++i) { + if (typeof source[i] !== 'undefined') { + obj[i] = source[i]; + } + } + + return obj; +}; + +var merge = function merge(target, source, options) { + /* eslint no-param-reassign: 0 */ + if (!source) { + return target; + } + + if (typeof source !== 'object') { + if (isArray(target)) { + target.push(source); + } else if (target && typeof target === 'object') { + if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) { + target[source] = true; + } + } else { + return [target, source]; + } + + return target; + } + + if (!target || typeof target !== 'object') { + return [target].concat(source); + } + + var mergeTarget = target; + if (isArray(target) && !isArray(source)) { + mergeTarget = arrayToObject(target, options); + } + + if (isArray(target) && isArray(source)) { + source.forEach(function (item, i) { + if (has.call(target, i)) { + var targetItem = target[i]; + if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') { + target[i] = merge(targetItem, item, options); + } else { + target.push(item); + } + } else { + target[i] = item; + } + }); + return target; + } + + return Object.keys(source).reduce(function (acc, key) { + var value = source[key]; + + if (has.call(acc, key)) { + acc[key] = merge(acc[key], value, options); + } else { + acc[key] = value; + } + return acc; + }, mergeTarget); +}; + +var assign = function assignSingleSource(target, source) { + return Object.keys(source).reduce(function (acc, key) { + acc[key] = source[key]; + return acc; + }, target); +}; + +var decode = function (str, decoder, charset) { + var strWithoutPlus = str.replace(/\+/g, ' '); + if (charset === 'iso-8859-1') { + // unescape never throws, no try...catch needed: + return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); + } + // utf-8 + try { + return decodeURIComponent(strWithoutPlus); + } catch (e) { + return strWithoutPlus; + } +}; + +var encode = function encode(str, defaultEncoder, charset, kind, format) { + // This code was originally written by Brian White (mscdex) for the io.js core querystring library. + // It has been adapted here for stricter adherence to RFC 3986 + if (str.length === 0) { + return str; + } + + var string = str; + if (typeof str === 'symbol') { + string = Symbol.prototype.toString.call(str); + } else if (typeof str !== 'string') { + string = String(str); + } + + if (charset === 'iso-8859-1') { + return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) { + return '%26%23' + parseInt($0.slice(2), 16) + '%3B'; + }); + } + + var out = ''; + for (var i = 0; i < string.length; ++i) { + var c = string.charCodeAt(i); + + if ( + c === 0x2D // - + || c === 0x2E // . + || c === 0x5F // _ + || c === 0x7E // ~ + || (c >= 0x30 && c <= 0x39) // 0-9 + || (c >= 0x41 && c <= 0x5A) // a-z + || (c >= 0x61 && c <= 0x7A) // A-Z + || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) + ) { + out += string.charAt(i); + continue; + } + + if (c < 0x80) { + out = out + hexTable[c]; + continue; + } + + if (c < 0x800) { + out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } + + if (c < 0xD800 || c >= 0xE000) { + out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } + + i += 1; + c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); + /* eslint operator-linebreak: [2, "before"] */ + out += hexTable[0xF0 | (c >> 18)] + + hexTable[0x80 | ((c >> 12) & 0x3F)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; + } + + return out; +}; + +var compact = function compact(value) { + var queue = [{ obj: { o: value }, prop: 'o' }]; + var refs = []; + + for (var i = 0; i < queue.length; ++i) { + var item = queue[i]; + var obj = item.obj[item.prop]; + + var keys = Object.keys(obj); + for (var j = 0; j < keys.length; ++j) { + var key = keys[j]; + var val = obj[key]; + if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { + queue.push({ obj: obj, prop: key }); + refs.push(val); + } + } + } + + compactQueue(queue); + + return value; +}; + +var isRegExp = function isRegExp(obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; +}; + +var isBuffer = function isBuffer(obj) { + if (!obj || typeof obj !== 'object') { + return false; + } + + return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); +}; + +var combine = function combine(a, b) { + return [].concat(a, b); +}; + +var maybeMap = function maybeMap(val, fn) { + if (isArray(val)) { + var mapped = []; + for (var i = 0; i < val.length; i += 1) { + mapped.push(fn(val[i])); + } + return mapped; + } + return fn(val); +}; + +module.exports = { + arrayToObject: arrayToObject, + assign: assign, + combine: combine, + compact: compact, + decode: decode, + encode: encode, + isBuffer: isBuffer, + isRegExp: isRegExp, + maybeMap: maybeMap, + merge: merge +}; + +},{"./formats":444}],449:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +// If obj.hasOwnProperty has been overridden, then calling +// obj.hasOwnProperty(prop) will break. +// See: https://github.com/joyent/node/issues/1707 +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +module.exports = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + // maxKeys <= 0 means that we should not limit keys count + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +},{}],450:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } +}; + +module.exports = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return map(objectKeys(obj), function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (isArray(obj[k])) { + return map(obj[k], function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +function map (xs, f) { + if (xs.map) return xs.map(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + res.push(f(xs[i], i)); + } + return res; +} + +var objectKeys = Object.keys || function (obj) { + var res = []; + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); + } + return res; +}; + +},{}],451:[function(require,module,exports){ +'use strict'; + +exports.decode = exports.parse = require('./decode'); +exports.encode = exports.stringify = require('./encode'); + +},{"./decode":449,"./encode":450}],452:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + +'use strict'; + +/*<replacement>*/ + +var pna = require('process-nextick-args'); +/*</replacement>*/ + +/*<replacement>*/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/*</replacement>*/ + +module.exports = Duplex; + +/*<replacement>*/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/*</replacement>*/ + +var Readable = require('./_stream_readable'); +var Writable = require('./_stream_writable'); + +util.inherits(Duplex, Readable); + +{ + // avoid scope creep, the keys array can then be collected + var keys = objectKeys(Writable.prototype); + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) this.readable = false; + + if (options && options.writable === false) this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + + this.once('end', onend); +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + pna.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); + +Duplex.prototype._destroy = function (err, cb) { + this.push(null); + this.end(); + + pna.nextTick(cb, err); +}; +},{"./_stream_readable":454,"./_stream_writable":456,"core-util-is":382,"inherits":407,"process-nextick-args":441}],453:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + +'use strict'; + +module.exports = PassThrough; + +var Transform = require('./_stream_transform'); + +/*<replacement>*/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/*</replacement>*/ + +util.inherits(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; +},{"./_stream_transform":455,"core-util-is":382,"inherits":407}],454:[function(require,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +/*<replacement>*/ + +var pna = require('process-nextick-args'); +/*</replacement>*/ + +module.exports = Readable; + +/*<replacement>*/ +var isArray = require('isarray'); +/*</replacement>*/ + +/*<replacement>*/ +var Duplex; +/*</replacement>*/ + +Readable.ReadableState = ReadableState; + +/*<replacement>*/ +var EE = require('events').EventEmitter; + +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; +}; +/*</replacement>*/ + +/*<replacement>*/ +var Stream = require('./internal/streams/stream'); +/*</replacement>*/ + +/*<replacement>*/ + +var Buffer = require('safe-buffer').Buffer; +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/*</replacement>*/ + +/*<replacement>*/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/*</replacement>*/ + +/*<replacement>*/ +var debugUtil = require('util'); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; +} +/*</replacement>*/ + +var BufferList = require('./internal/streams/BufferList'); +var destroyImpl = require('./internal/streams/destroy'); +var StringDecoder; + +util.inherits(Readable, Stream); + +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var readableHwm = options.readableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + + // has it been destroyed + this.destroyed = false; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); + + if (!(this instanceof Readable)) return new Readable(options); + + this._readableState = new ReadableState(options, this); + + // legacy + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined) { + return false; + } + return this._readableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + } +}); + +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; +Readable.prototype._destroy = function (err, cb) { + this.push(null); + cb(err); +}; + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + var state = stream._readableState; + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); + } else if (state.ended) { + stream.emit('error', new Error('stream.push() after EOF')); + } else { + state.reading = false; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + } + } + + return needMoreData(state); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + + if (state.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} + +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; + +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; + +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; +} + +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + + return ret; +}; + +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); + } +} + +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + pna.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('_read() is not implemented')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); + + dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + + cleanedUp = true; + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + // If the user pushes more data while we're writing to dest then we'll end up + // in ondata again. However, we only want to increase awaitDrain once because + // dest will only emit one 'drain' event for the multiple writes. + // => Introduce a guard on increasing awaitDrain. + var increasedAwaitDrain = false; + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + increasedAwaitDrain = false; + var ret = dest.write(chunk); + if (false === ret && !increasedAwaitDrain) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + increasedAwaitDrain = true; + } + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } + + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { hasUnpiped: false }; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + + if (!dest) dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { hasUnpiped: false }); + }return this; + } + + // try to find the right one. + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + + dest.emit('unpipe', this, unpipeInfo); + + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + + if (ev === 'data') { + // Start flowing on next tick if stream isn't explicitly paused + if (this._readableState.flowing !== false) this.resume(); + } else if (ev === 'readable') { + var state = this._readableState; + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.emittedReadable = false; + if (!state.reading) { + pna.nextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this); + } + } + } + + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); + } + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + pna.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); + } + + state.resumeScheduled = false; + state.awaitDrain = 0; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null) {} +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } + + // proxy certain important events. + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + this._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._readableState.highWaterMark; + } +}); + +// exposed for testing purposes only. +Readable._fromList = fromList; + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = fromListPartial(n, state.buffer, state.decoder); + } + + return ret; +} + +// Extracts only enough buffered data to satisfy the amount requested. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromListPartial(n, list, hasStrings) { + var ret; + if (n < list.head.data.length) { + // slice is the same for buffers and strings + ret = list.head.data.slice(0, n); + list.head.data = list.head.data.slice(n); + } else if (n === list.head.data.length) { + // first chunk is a perfect match + ret = list.shift(); + } else { + // result spans more than one buffer + ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); + } + return ret; +} + +// Copies a specified amount of characters from the list of buffered data +// chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBufferString(n, list) { + var p = list.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +// Copies a specified amount of bytes from the list of buffered data chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBuffer(n, list) { + var ret = Buffer.allocUnsafe(n); + var p = list.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + + if (!state.endEmitted) { + state.ended = true; + pna.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} +}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./_stream_duplex":452,"./internal/streams/BufferList":457,"./internal/streams/destroy":458,"./internal/streams/stream":459,"_process":538,"core-util-is":382,"events":386,"inherits":407,"isarray":460,"process-nextick-args":441,"safe-buffer":461,"string_decoder/":462,"util":102}],455:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + +'use strict'; + +module.exports = Transform; + +var Duplex = require('./_stream_duplex'); + +/*<replacement>*/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/*</replacement>*/ + +util.inherits(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + + var cb = ts.writecb; + + if (!cb) { + return this.emit('error', new Error('write callback called multiple times')); + } + + ts.writechunk = null; + ts.writecb = null; + + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + + cb(er); + + var rs = this._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + + Duplex.call(this, options); + + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + + if (typeof options.flush === 'function') this._flush = options.flush; + } + + // When the writable side finishes, then flush out anything remaining. + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function') { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('_transform() is not implemented'); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + var _this2 = this; + + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + _this2.emit('close'); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); + + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); + + if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); + + return stream.push(null); +} +},{"./_stream_duplex":452,"core-util-is":382,"inherits":407}],456:[function(require,module,exports){ +(function (process,global,setImmediate){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + +'use strict'; + +/*<replacement>*/ + +var pna = require('process-nextick-args'); +/*</replacement>*/ + +module.exports = Writable; + +/* <replacement> */ +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} + +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* </replacement> */ + +/*<replacement>*/ +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; +/*</replacement>*/ + +/*<replacement>*/ +var Duplex; +/*</replacement>*/ + +Writable.WritableState = WritableState; + +/*<replacement>*/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/*</replacement>*/ + +/*<replacement>*/ +var internalUtil = { + deprecate: require('util-deprecate') +}; +/*</replacement>*/ + +/*<replacement>*/ +var Stream = require('./internal/streams/stream'); +/*</replacement>*/ + +/*<replacement>*/ + +var Buffer = require('safe-buffer').Buffer; +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/*</replacement>*/ + +var destroyImpl = require('./internal/streams/destroy'); + +util.inherits(Writable, Stream); + +function nop() {} + +function WritableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var writableHwm = options.writableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // if _final has been called + this.finalCalled = false; + + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // has it been destroyed + this.destroyed = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + + this.bufferedRequest = null; + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; + + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); + +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. +var realHasInstance; +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function (object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function (object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); + + // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { + return new Writable(options); + } + + this._writableState = new WritableState(options, this); + + // legacy. + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + + if (typeof options.writev === 'function') this._writev = options.writev; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); +}; + +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + pna.nextTick(cb, er); +} + +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; + + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + if (er) { + stream.emit('error', er); + pna.nextTick(cb, er); + valid = false; + } + return valid; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + + if (typeof cb !== 'function') cb = nop; + + if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + + return ret; +}; + +Writable.prototype.cork = function () { + var state = this._writableState; + + state.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + var len = state.objectMode ? 1 : chunk.length; + + state.length += len; + + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + pna.nextTick(cb, er); + // this can emit finish, and it will always happen + // after error + pna.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + // this can emit finish, but finish must + // always follow error + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + + onwriteStateUpdate(state); + + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + /*<replacement>*/ + asyncWrite(afterWrite, stream, state, finished, cb); + /*</replacement>*/ + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; + + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('_write() is not implemented')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending) endWritable(this, state, cb); +}; + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + if (err) { + stream.emit('error', err); + } + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function') { + state.pendingcb++; + state.finalCalled = true; + pna.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + prefinish(stream, state); + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + } + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + + // reuse the free corkReq. + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + get: function () { + if (this._writableState === undefined) { + return false; + } + return this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._writableState.destroyed = value; + } +}); + +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; +Writable.prototype._destroy = function (err, cb) { + this.end(); + cb(err); +}; +}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate) +},{"./_stream_duplex":452,"./internal/streams/destroy":458,"./internal/streams/stream":459,"_process":538,"core-util-is":382,"inherits":407,"process-nextick-args":441,"safe-buffer":461,"timers":484,"util-deprecate":486}],457:[function(require,module,exports){ +'use strict'; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Buffer = require('safe-buffer').Buffer; +var util = require('util'); + +function copyBuffer(src, target, offset) { + src.copy(target, offset); +} + +module.exports = function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + BufferList.prototype.push = function push(v) { + var entry = { data: v, next: null }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + }; + + BufferList.prototype.unshift = function unshift(v) { + var entry = { data: v, next: this.head }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + }; + + BufferList.prototype.shift = function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + }; + + BufferList.prototype.clear = function clear() { + this.head = this.tail = null; + this.length = 0; + }; + + BufferList.prototype.join = function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) { + ret += s + p.data; + }return ret; + }; + + BufferList.prototype.concat = function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + return ret; + }; + + return BufferList; +}(); + +if (util && util.inspect && util.inspect.custom) { + module.exports.prototype[util.inspect.custom] = function () { + var obj = util.inspect({ length: this.length }); + return this.constructor.name + ' ' + obj; + }; +} +},{"safe-buffer":461,"util":102}],458:[function(require,module,exports){ +'use strict'; + +/*<replacement>*/ + +var pna = require('process-nextick-args'); +/*</replacement>*/ + +// undocumented cb() API, needed for core, not for public API +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + pna.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + pna.nextTick(emitErrorNT, this, err); + } + } + + return this; + } + + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + if (this._readableState) { + this._readableState.destroyed = true; + } + + // if this is a duplex stream mark the writable part as destroyed as well + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + pna.nextTick(emitErrorNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + pna.nextTick(emitErrorNT, _this, err); + } + } else if (cb) { + cb(err); + } + }); + + return this; +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy +}; +},{"process-nextick-args":441}],459:[function(require,module,exports){ +module.exports = require('events').EventEmitter; + +},{"events":386}],460:[function(require,module,exports){ +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + +},{}],461:[function(require,module,exports){ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + +},{"buffer":103}],462:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +/*<replacement>*/ + +var Buffer = require('safe-buffer').Buffer; +/*</replacement>*/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} +},{"safe-buffer":461}],463:[function(require,module,exports){ +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = exports; +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); + +},{"./lib/_stream_duplex.js":452,"./lib/_stream_passthrough.js":453,"./lib/_stream_readable.js":454,"./lib/_stream_transform.js":455,"./lib/_stream_writable.js":456}],464:[function(require,module,exports){ +/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.prototype = Object.create(Buffer.prototype) + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + +},{"buffer":103}],465:[function(require,module,exports){ +(function (Buffer){(function (){ +;(function (sax) { // wrapper for non-node envs + sax.parser = function (strict, opt) { return new SAXParser(strict, opt) } + sax.SAXParser = SAXParser + sax.SAXStream = SAXStream + sax.createStream = createStream + + // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns. + // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)), + // since that's the earliest that a buffer overrun could occur. This way, checks are + // as rare as required, but as often as necessary to ensure never crossing this bound. + // Furthermore, buffers are only tested at most once per write(), so passing a very + // large string into write() might have undesirable effects, but this is manageable by + // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme + // edge case, result in creating at most one complete copy of the string passed in. + // Set to Infinity to have unlimited buffers. + sax.MAX_BUFFER_LENGTH = 64 * 1024 + + var buffers = [ + 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype', + 'procInstName', 'procInstBody', 'entity', 'attribName', + 'attribValue', 'cdata', 'script' + ] + + sax.EVENTS = [ + 'text', + 'processinginstruction', + 'sgmldeclaration', + 'doctype', + 'comment', + 'opentagstart', + 'attribute', + 'opentag', + 'closetag', + 'opencdata', + 'cdata', + 'closecdata', + 'error', + 'end', + 'ready', + 'script', + 'opennamespace', + 'closenamespace' + ] + + function SAXParser (strict, opt) { + if (!(this instanceof SAXParser)) { + return new SAXParser(strict, opt) + } + + var parser = this + clearBuffers(parser) + parser.q = parser.c = '' + parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH + parser.opt = opt || {} + parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags + parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase' + parser.tags = [] + parser.closed = parser.closedRoot = parser.sawRoot = false + parser.tag = parser.error = null + parser.strict = !!strict + parser.noscript = !!(strict || parser.opt.noscript) + parser.state = S.BEGIN + parser.strictEntities = parser.opt.strictEntities + parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES) + parser.attribList = [] + + // namespaces form a prototype chain. + // it always points at the current tag, + // which protos to its parent tag. + if (parser.opt.xmlns) { + parser.ns = Object.create(rootNS) + } + + // mostly just for error reporting + parser.trackPosition = parser.opt.position !== false + if (parser.trackPosition) { + parser.position = parser.line = parser.column = 0 + } + emit(parser, 'onready') + } + + if (!Object.create) { + Object.create = function (o) { + function F () {} + F.prototype = o + var newf = new F() + return newf + } + } + + if (!Object.keys) { + Object.keys = function (o) { + var a = [] + for (var i in o) if (o.hasOwnProperty(i)) a.push(i) + return a + } + } + + function checkBufferLength (parser) { + var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10) + var maxActual = 0 + for (var i = 0, l = buffers.length; i < l; i++) { + var len = parser[buffers[i]].length + if (len > maxAllowed) { + // Text/cdata nodes can get big, and since they're buffered, + // we can get here under normal conditions. + // Avoid issues by emitting the text node now, + // so at least it won't get any bigger. + switch (buffers[i]) { + case 'textNode': + closeText(parser) + break + + case 'cdata': + emitNode(parser, 'oncdata', parser.cdata) + parser.cdata = '' + break + + case 'script': + emitNode(parser, 'onscript', parser.script) + parser.script = '' + break + + default: + error(parser, 'Max buffer length exceeded: ' + buffers[i]) + } + } + maxActual = Math.max(maxActual, len) + } + // schedule the next check for the earliest possible buffer overrun. + var m = sax.MAX_BUFFER_LENGTH - maxActual + parser.bufferCheckPosition = m + parser.position + } + + function clearBuffers (parser) { + for (var i = 0, l = buffers.length; i < l; i++) { + parser[buffers[i]] = '' + } + } + + function flushBuffers (parser) { + closeText(parser) + if (parser.cdata !== '') { + emitNode(parser, 'oncdata', parser.cdata) + parser.cdata = '' + } + if (parser.script !== '') { + emitNode(parser, 'onscript', parser.script) + parser.script = '' + } + } + + SAXParser.prototype = { + end: function () { end(this) }, + write: write, + resume: function () { this.error = null; return this }, + close: function () { return this.write(null) }, + flush: function () { flushBuffers(this) } + } + + var Stream + try { + Stream = require('stream').Stream + } catch (ex) { + Stream = function () {} + } + if (!Stream) Stream = function () {} + + var streamWraps = sax.EVENTS.filter(function (ev) { + return ev !== 'error' && ev !== 'end' + }) + + function createStream (strict, opt) { + return new SAXStream(strict, opt) + } + + function SAXStream (strict, opt) { + if (!(this instanceof SAXStream)) { + return new SAXStream(strict, opt) + } + + Stream.apply(this) + + this._parser = new SAXParser(strict, opt) + this.writable = true + this.readable = true + + var me = this + + this._parser.onend = function () { + me.emit('end') + } + + this._parser.onerror = function (er) { + me.emit('error', er) + + // if didn't throw, then means error was handled. + // go ahead and clear error, so we can write again. + me._parser.error = null + } + + this._decoder = null + + streamWraps.forEach(function (ev) { + Object.defineProperty(me, 'on' + ev, { + get: function () { + return me._parser['on' + ev] + }, + set: function (h) { + if (!h) { + me.removeAllListeners(ev) + me._parser['on' + ev] = h + return h + } + me.on(ev, h) + }, + enumerable: true, + configurable: false + }) + }) + } + + SAXStream.prototype = Object.create(Stream.prototype, { + constructor: { + value: SAXStream + } + }) + + SAXStream.prototype.write = function (data) { + if (typeof Buffer === 'function' && + typeof Buffer.isBuffer === 'function' && + Buffer.isBuffer(data)) { + if (!this._decoder) { + var SD = require('string_decoder').StringDecoder + this._decoder = new SD('utf8') + } + data = this._decoder.write(data) + } + + this._parser.write(data.toString()) + this.emit('data', data) + return true + } + + SAXStream.prototype.end = function (chunk) { + if (chunk && chunk.length) { + this.write(chunk) + } + this._parser.end() + return true + } + + SAXStream.prototype.on = function (ev, handler) { + var me = this + if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) { + me._parser['on' + ev] = function () { + var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments) + args.splice(0, 0, ev) + me.emit.apply(me, args) + } + } + + return Stream.prototype.on.call(me, ev, handler) + } + + // this really needs to be replaced with character classes. + // XML allows all manner of ridiculous numbers and digits. + var CDATA = '[CDATA[' + var DOCTYPE = 'DOCTYPE' + var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace' + var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/' + var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE } + + // http://www.w3.org/TR/REC-xml/#NT-NameStartChar + // This implementation works on strings, a single character at a time + // as such, it cannot ever support astral-plane characters (10000-EFFFF) + // without a significant breaking change to either this parser, or the + // JavaScript language. Implementation of an emoji-capable xml parser + // is left as an exercise for the reader. + 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]/ + + 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-]/ + + 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]/ + 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-]/ + + function isWhitespace (c) { + return c === ' ' || c === '\n' || c === '\r' || c === '\t' + } + + function isQuote (c) { + return c === '"' || c === '\'' + } + + function isAttribEnd (c) { + return c === '>' || isWhitespace(c) + } + + function isMatch (regex, c) { + return regex.test(c) + } + + function notMatch (regex, c) { + return !isMatch(regex, c) + } + + var S = 0 + sax.STATE = { + BEGIN: S++, // leading byte order mark or whitespace + BEGIN_WHITESPACE: S++, // leading whitespace + TEXT: S++, // general stuff + TEXT_ENTITY: S++, // & and such. + OPEN_WAKA: S++, // < + SGML_DECL: S++, // <!BLARG + SGML_DECL_QUOTED: S++, // <!BLARG foo "bar + DOCTYPE: S++, // <!DOCTYPE + DOCTYPE_QUOTED: S++, // <!DOCTYPE "//blah + DOCTYPE_DTD: S++, // <!DOCTYPE "//blah" [ ... + DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE "//blah" [ "foo + COMMENT_STARTING: S++, // <!- + COMMENT: S++, // <!-- + COMMENT_ENDING: S++, // <!-- blah - + COMMENT_ENDED: S++, // <!-- blah -- + CDATA: S++, // <![CDATA[ something + CDATA_ENDING: S++, // ] + CDATA_ENDING_2: S++, // ]] + PROC_INST: S++, // <?hi + PROC_INST_BODY: S++, // <?hi there + PROC_INST_ENDING: S++, // <?hi "there" ? + OPEN_TAG: S++, // <strong + OPEN_TAG_SLASH: S++, // <strong / + ATTRIB: S++, // <a + ATTRIB_NAME: S++, // <a foo + ATTRIB_NAME_SAW_WHITE: S++, // <a foo _ + ATTRIB_VALUE: S++, // <a foo= + ATTRIB_VALUE_QUOTED: S++, // <a foo="bar + ATTRIB_VALUE_CLOSED: S++, // <a foo="bar" + ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar + ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=""" + ATTRIB_VALUE_ENTITY_U: S++, // <foo bar=" + CLOSE_TAG: S++, // </a + CLOSE_TAG_SAW_WHITE: S++, // </a > + SCRIPT: S++, // <script> ... + SCRIPT_ENDING: S++ // <script> ... < + } + + sax.XML_ENTITIES = { + 'amp': '&', + 'gt': '>', + 'lt': '<', + 'quot': '"', + 'apos': "'" + } + + sax.ENTITIES = { + 'amp': '&', + 'gt': '>', + 'lt': '<', + 'quot': '"', + 'apos': "'", + 'AElig': 198, + 'Aacute': 193, + 'Acirc': 194, + 'Agrave': 192, + 'Aring': 197, + 'Atilde': 195, + 'Auml': 196, + 'Ccedil': 199, + 'ETH': 208, + 'Eacute': 201, + 'Ecirc': 202, + 'Egrave': 200, + 'Euml': 203, + 'Iacute': 205, + 'Icirc': 206, + 'Igrave': 204, + 'Iuml': 207, + 'Ntilde': 209, + 'Oacute': 211, + 'Ocirc': 212, + 'Ograve': 210, + 'Oslash': 216, + 'Otilde': 213, + 'Ouml': 214, + 'THORN': 222, + 'Uacute': 218, + 'Ucirc': 219, + 'Ugrave': 217, + 'Uuml': 220, + 'Yacute': 221, + 'aacute': 225, + 'acirc': 226, + 'aelig': 230, + 'agrave': 224, + 'aring': 229, + 'atilde': 227, + 'auml': 228, + 'ccedil': 231, + 'eacute': 233, + 'ecirc': 234, + 'egrave': 232, + 'eth': 240, + 'euml': 235, + 'iacute': 237, + 'icirc': 238, + 'igrave': 236, + 'iuml': 239, + 'ntilde': 241, + 'oacute': 243, + 'ocirc': 244, + 'ograve': 242, + 'oslash': 248, + 'otilde': 245, + 'ouml': 246, + 'szlig': 223, + 'thorn': 254, + 'uacute': 250, + 'ucirc': 251, + 'ugrave': 249, + 'uuml': 252, + 'yacute': 253, + 'yuml': 255, + 'copy': 169, + 'reg': 174, + 'nbsp': 160, + 'iexcl': 161, + 'cent': 162, + 'pound': 163, + 'curren': 164, + 'yen': 165, + 'brvbar': 166, + 'sect': 167, + 'uml': 168, + 'ordf': 170, + 'laquo': 171, + 'not': 172, + 'shy': 173, + 'macr': 175, + 'deg': 176, + 'plusmn': 177, + 'sup1': 185, + 'sup2': 178, + 'sup3': 179, + 'acute': 180, + 'micro': 181, + 'para': 182, + 'middot': 183, + 'cedil': 184, + 'ordm': 186, + 'raquo': 187, + 'frac14': 188, + 'frac12': 189, + 'frac34': 190, + 'iquest': 191, + 'times': 215, + 'divide': 247, + 'OElig': 338, + 'oelig': 339, + 'Scaron': 352, + 'scaron': 353, + 'Yuml': 376, + 'fnof': 402, + 'circ': 710, + 'tilde': 732, + '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, + '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, + '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, + 'bull': 8226, + 'hellip': 8230, + 'permil': 8240, + 'prime': 8242, + 'Prime': 8243, + 'lsaquo': 8249, + 'rsaquo': 8250, + 'oline': 8254, + 'frasl': 8260, + 'euro': 8364, + 'image': 8465, + 'weierp': 8472, + 'real': 8476, + '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, + '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 + } + + Object.keys(sax.ENTITIES).forEach(function (key) { + var e = sax.ENTITIES[key] + var s = typeof e === 'number' ? String.fromCharCode(e) : e + sax.ENTITIES[key] = s + }) + + for (var s in sax.STATE) { + sax.STATE[sax.STATE[s]] = s + } + + // shorthand + S = sax.STATE + + function emit (parser, event, data) { + parser[event] && parser[event](data) + } + + function emitNode (parser, nodeType, data) { + if (parser.textNode) closeText(parser) + emit(parser, nodeType, data) + } + + function closeText (parser) { + parser.textNode = textopts(parser.opt, parser.textNode) + if (parser.textNode) emit(parser, 'ontext', parser.textNode) + parser.textNode = '' + } + + function textopts (opt, text) { + if (opt.trim) text = text.trim() + if (opt.normalize) text = text.replace(/\s+/g, ' ') + return text + } + + function error (parser, er) { + closeText(parser) + if (parser.trackPosition) { + er += '\nLine: ' + parser.line + + '\nColumn: ' + parser.column + + '\nChar: ' + parser.c + } + er = new Error(er) + parser.error = er + emit(parser, 'onerror', er) + return parser + } + + function end (parser) { + if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag') + if ((parser.state !== S.BEGIN) && + (parser.state !== S.BEGIN_WHITESPACE) && + (parser.state !== S.TEXT)) { + error(parser, 'Unexpected end') + } + closeText(parser) + parser.c = '' + parser.closed = true + emit(parser, 'onend') + SAXParser.call(parser, parser.strict, parser.opt) + return parser + } + + function strictFail (parser, message) { + if (typeof parser !== 'object' || !(parser instanceof SAXParser)) { + throw new Error('bad call to strictFail') + } + if (parser.strict) { + error(parser, message) + } + } + + function newTag (parser) { + if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]() + var parent = parser.tags[parser.tags.length - 1] || parser + var tag = parser.tag = { name: parser.tagName, attributes: {} } + + // will be overridden if tag contails an xmlns="foo" or xmlns:foo="bar" + if (parser.opt.xmlns) { + tag.ns = parent.ns + } + parser.attribList.length = 0 + emitNode(parser, 'onopentagstart', tag) + } + + function qname (name, attribute) { + var i = name.indexOf(':') + var qualName = i < 0 ? [ '', name ] : name.split(':') + var prefix = qualName[0] + var local = qualName[1] + + // <x "xmlns"="http://foo"> + if (attribute && name === 'xmlns') { + prefix = 'xmlns' + local = '' + } + + return { prefix: prefix, local: local } + } + + function attrib (parser) { + if (!parser.strict) { + parser.attribName = parser.attribName[parser.looseCase]() + } + + if (parser.attribList.indexOf(parser.attribName) !== -1 || + parser.tag.attributes.hasOwnProperty(parser.attribName)) { + parser.attribName = parser.attribValue = '' + return + } + + if (parser.opt.xmlns) { + var qn = qname(parser.attribName, true) + var prefix = qn.prefix + var local = qn.local + + if (prefix === 'xmlns') { + // namespace binding attribute. push the binding into scope + if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) { + strictFail(parser, + 'xml: prefix must be bound to ' + XML_NAMESPACE + '\n' + + 'Actual: ' + parser.attribValue) + } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) { + strictFail(parser, + 'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\n' + + 'Actual: ' + parser.attribValue) + } else { + var tag = parser.tag + var parent = parser.tags[parser.tags.length - 1] || parser + if (tag.ns === parent.ns) { + tag.ns = Object.create(parent.ns) + } + tag.ns[local] = parser.attribValue + } + } + + // defer onattribute events until all attributes have been seen + // so any new bindings can take effect. preserve attribute order + // so deferred events can be emitted in document order + parser.attribList.push([parser.attribName, parser.attribValue]) + } else { + // in non-xmlns mode, we can emit the event right away + parser.tag.attributes[parser.attribName] = parser.attribValue + emitNode(parser, 'onattribute', { + name: parser.attribName, + value: parser.attribValue + }) + } + + parser.attribName = parser.attribValue = '' + } + + function openTag (parser, selfClosing) { + if (parser.opt.xmlns) { + // emit namespace binding events + var tag = parser.tag + + // add namespace info to tag + var qn = qname(parser.tagName) + tag.prefix = qn.prefix + tag.local = qn.local + tag.uri = tag.ns[qn.prefix] || '' + + if (tag.prefix && !tag.uri) { + strictFail(parser, 'Unbound namespace prefix: ' + + JSON.stringify(parser.tagName)) + tag.uri = qn.prefix + } + + var parent = parser.tags[parser.tags.length - 1] || parser + if (tag.ns && parent.ns !== tag.ns) { + Object.keys(tag.ns).forEach(function (p) { + emitNode(parser, 'onopennamespace', { + prefix: p, + uri: tag.ns[p] + }) + }) + } + + // handle deferred onattribute events + // Note: do not apply default ns to attributes: + // http://www.w3.org/TR/REC-xml-names/#defaulting + for (var i = 0, l = parser.attribList.length; i < l; i++) { + var nv = parser.attribList[i] + var name = nv[0] + var value = nv[1] + var qualName = qname(name, true) + var prefix = qualName.prefix + var local = qualName.local + var uri = prefix === '' ? '' : (tag.ns[prefix] || '') + var a = { + name: name, + value: value, + prefix: prefix, + local: local, + uri: uri + } + + // if there's any attributes with an undefined namespace, + // then fail on them now. + if (prefix && prefix !== 'xmlns' && !uri) { + strictFail(parser, 'Unbound namespace prefix: ' + + JSON.stringify(prefix)) + a.uri = prefix + } + parser.tag.attributes[name] = a + emitNode(parser, 'onattribute', a) + } + parser.attribList.length = 0 + } + + parser.tag.isSelfClosing = !!selfClosing + + // process the tag + parser.sawRoot = true + parser.tags.push(parser.tag) + emitNode(parser, 'onopentag', parser.tag) + if (!selfClosing) { + // special case for <script> in non-strict mode. + if (!parser.noscript && parser.tagName.toLowerCase() === 'script') { + parser.state = S.SCRIPT + } else { + parser.state = S.TEXT + } + parser.tag = null + parser.tagName = '' + } + parser.attribName = parser.attribValue = '' + parser.attribList.length = 0 + } + + function closeTag (parser) { + if (!parser.tagName) { + strictFail(parser, 'Weird empty close tag.') + parser.textNode += '</>' + parser.state = S.TEXT + return + } + + if (parser.script) { + if (parser.tagName !== 'script') { + parser.script += '</' + parser.tagName + '>' + parser.tagName = '' + parser.state = S.SCRIPT + return + } + emitNode(parser, 'onscript', parser.script) + parser.script = '' + } + + // first make sure that the closing tag actually exists. + // <a><b></c></b></a> will close everything, otherwise. + var t = parser.tags.length + var tagName = parser.tagName + if (!parser.strict) { + tagName = tagName[parser.looseCase]() + } + var closeTo = tagName + while (t--) { + var close = parser.tags[t] + if (close.name !== closeTo) { + // fail the first time in strict mode + strictFail(parser, 'Unexpected close tag') + } else { + break + } + } + + // didn't find it. we already failed for strict, so just abort. + if (t < 0) { + strictFail(parser, 'Unmatched closing tag: ' + parser.tagName) + parser.textNode += '</' + parser.tagName + '>' + parser.state = S.TEXT + return + } + parser.tagName = tagName + var s = parser.tags.length + while (s-- > t) { + var tag = parser.tag = parser.tags.pop() + parser.tagName = parser.tag.name + emitNode(parser, 'onclosetag', parser.tagName) + + var x = {} + for (var i in tag.ns) { + x[i] = tag.ns[i] + } + + var parent = parser.tags[parser.tags.length - 1] || parser + if (parser.opt.xmlns && tag.ns !== parent.ns) { + // remove namespace bindings introduced by tag + Object.keys(tag.ns).forEach(function (p) { + var n = tag.ns[p] + emitNode(parser, 'onclosenamespace', { prefix: p, uri: n }) + }) + } + } + if (t === 0) parser.closedRoot = true + parser.tagName = parser.attribValue = parser.attribName = '' + parser.attribList.length = 0 + parser.state = S.TEXT + } + + function parseEntity (parser) { + var entity = parser.entity + var entityLC = entity.toLowerCase() + var num + var numStr = '' + + if (parser.ENTITIES[entity]) { + return parser.ENTITIES[entity] + } + if (parser.ENTITIES[entityLC]) { + return parser.ENTITIES[entityLC] + } + entity = entityLC + if (entity.charAt(0) === '#') { + if (entity.charAt(1) === 'x') { + entity = entity.slice(2) + num = parseInt(entity, 16) + numStr = num.toString(16) + } else { + entity = entity.slice(1) + num = parseInt(entity, 10) + numStr = num.toString(10) + } + } + entity = entity.replace(/^0+/, '') + if (isNaN(num) || numStr.toLowerCase() !== entity) { + strictFail(parser, 'Invalid character entity') + return '&' + parser.entity + ';' + } + + return String.fromCodePoint(num) + } + + function beginWhiteSpace (parser, c) { + if (c === '<') { + parser.state = S.OPEN_WAKA + parser.startTagPosition = parser.position + } else if (!isWhitespace(c)) { + // have to process this as a text node. + // weird, but happens. + strictFail(parser, 'Non-whitespace before first tag.') + parser.textNode = c + parser.state = S.TEXT + } + } + + function charAt (chunk, i) { + var result = '' + if (i < chunk.length) { + result = chunk.charAt(i) + } + return result + } + + function write (chunk) { + var parser = this + if (this.error) { + throw this.error + } + if (parser.closed) { + return error(parser, + 'Cannot write after close. Assign an onready handler.') + } + if (chunk === null) { + return end(parser) + } + if (typeof chunk === 'object') { + chunk = chunk.toString() + } + var i = 0 + var c = '' + while (true) { + c = charAt(chunk, i++) + parser.c = c + + if (!c) { + break + } + + if (parser.trackPosition) { + parser.position++ + if (c === '\n') { + parser.line++ + parser.column = 0 + } else { + parser.column++ + } + } + + switch (parser.state) { + case S.BEGIN: + parser.state = S.BEGIN_WHITESPACE + if (c === '\uFEFF') { + continue + } + beginWhiteSpace(parser, c) + continue + + case S.BEGIN_WHITESPACE: + beginWhiteSpace(parser, c) + continue + + case S.TEXT: + if (parser.sawRoot && !parser.closedRoot) { + var starti = i - 1 + while (c && c !== '<' && c !== '&') { + c = charAt(chunk, i++) + if (c && parser.trackPosition) { + parser.position++ + if (c === '\n') { + parser.line++ + parser.column = 0 + } else { + parser.column++ + } + } + } + parser.textNode += chunk.substring(starti, i - 1) + } + if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) { + parser.state = S.OPEN_WAKA + parser.startTagPosition = parser.position + } else { + if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) { + strictFail(parser, 'Text data outside of root node.') + } + if (c === '&') { + parser.state = S.TEXT_ENTITY + } else { + parser.textNode += c + } + } + continue + + case S.SCRIPT: + // only non-strict + if (c === '<') { + parser.state = S.SCRIPT_ENDING + } else { + parser.script += c + } + continue + + case S.SCRIPT_ENDING: + if (c === '/') { + parser.state = S.CLOSE_TAG + } else { + parser.script += '<' + c + parser.state = S.SCRIPT + } + continue + + case S.OPEN_WAKA: + // either a /, ?, !, or text is coming next. + if (c === '!') { + parser.state = S.SGML_DECL + parser.sgmlDecl = '' + } else if (isWhitespace(c)) { + // wait for it... + } else if (isMatch(nameStart, c)) { + parser.state = S.OPEN_TAG + parser.tagName = c + } else if (c === '/') { + parser.state = S.CLOSE_TAG + parser.tagName = '' + } else if (c === '?') { + parser.state = S.PROC_INST + parser.procInstName = parser.procInstBody = '' + } else { + strictFail(parser, 'Unencoded <') + // if there was some whitespace, then add that in. + if (parser.startTagPosition + 1 < parser.position) { + var pad = parser.position - parser.startTagPosition + c = new Array(pad).join(' ') + c + } + parser.textNode += '<' + c + parser.state = S.TEXT + } + continue + + case S.SGML_DECL: + if ((parser.sgmlDecl + c).toUpperCase() === CDATA) { + emitNode(parser, 'onopencdata') + parser.state = S.CDATA + parser.sgmlDecl = '' + parser.cdata = '' + } else if (parser.sgmlDecl + c === '--') { + parser.state = S.COMMENT + parser.comment = '' + parser.sgmlDecl = '' + } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) { + parser.state = S.DOCTYPE + if (parser.doctype || parser.sawRoot) { + strictFail(parser, + 'Inappropriately located doctype declaration') + } + parser.doctype = '' + parser.sgmlDecl = '' + } else if (c === '>') { + emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl) + parser.sgmlDecl = '' + parser.state = S.TEXT + } else if (isQuote(c)) { + parser.state = S.SGML_DECL_QUOTED + parser.sgmlDecl += c + } else { + parser.sgmlDecl += c + } + continue + + case S.SGML_DECL_QUOTED: + if (c === parser.q) { + parser.state = S.SGML_DECL + parser.q = '' + } + parser.sgmlDecl += c + continue + + case S.DOCTYPE: + if (c === '>') { + parser.state = S.TEXT + emitNode(parser, 'ondoctype', parser.doctype) + parser.doctype = true // just remember that we saw it. + } else { + parser.doctype += c + if (c === '[') { + parser.state = S.DOCTYPE_DTD + } else if (isQuote(c)) { + parser.state = S.DOCTYPE_QUOTED + parser.q = c + } + } + continue + + case S.DOCTYPE_QUOTED: + parser.doctype += c + if (c === parser.q) { + parser.q = '' + parser.state = S.DOCTYPE + } + continue + + case S.DOCTYPE_DTD: + parser.doctype += c + if (c === ']') { + parser.state = S.DOCTYPE + } else if (isQuote(c)) { + parser.state = S.DOCTYPE_DTD_QUOTED + parser.q = c + } + continue + + case S.DOCTYPE_DTD_QUOTED: + parser.doctype += c + if (c === parser.q) { + parser.state = S.DOCTYPE_DTD + parser.q = '' + } + continue + + case S.COMMENT: + if (c === '-') { + parser.state = S.COMMENT_ENDING + } else { + parser.comment += c + } + continue + + case S.COMMENT_ENDING: + if (c === '-') { + parser.state = S.COMMENT_ENDED + parser.comment = textopts(parser.opt, parser.comment) + if (parser.comment) { + emitNode(parser, 'oncomment', parser.comment) + } + parser.comment = '' + } else { + parser.comment += '-' + c + parser.state = S.COMMENT + } + continue + + case S.COMMENT_ENDED: + if (c !== '>') { + strictFail(parser, 'Malformed comment') + // allow <!-- blah -- bloo --> in non-strict mode, + // which is a comment of " blah -- bloo " + parser.comment += '--' + c + parser.state = S.COMMENT + } else { + parser.state = S.TEXT + } + continue + + case S.CDATA: + if (c === ']') { + parser.state = S.CDATA_ENDING + } else { + parser.cdata += c + } + continue + + case S.CDATA_ENDING: + if (c === ']') { + parser.state = S.CDATA_ENDING_2 + } else { + parser.cdata += ']' + c + parser.state = S.CDATA + } + continue + + case S.CDATA_ENDING_2: + if (c === '>') { + if (parser.cdata) { + emitNode(parser, 'oncdata', parser.cdata) + } + emitNode(parser, 'onclosecdata') + parser.cdata = '' + parser.state = S.TEXT + } else if (c === ']') { + parser.cdata += ']' + } else { + parser.cdata += ']]' + c + parser.state = S.CDATA + } + continue + + case S.PROC_INST: + if (c === '?') { + parser.state = S.PROC_INST_ENDING + } else if (isWhitespace(c)) { + parser.state = S.PROC_INST_BODY + } else { + parser.procInstName += c + } + continue + + case S.PROC_INST_BODY: + if (!parser.procInstBody && isWhitespace(c)) { + continue + } else if (c === '?') { + parser.state = S.PROC_INST_ENDING + } else { + parser.procInstBody += c + } + continue + + case S.PROC_INST_ENDING: + if (c === '>') { + emitNode(parser, 'onprocessinginstruction', { + name: parser.procInstName, + body: parser.procInstBody + }) + parser.procInstName = parser.procInstBody = '' + parser.state = S.TEXT + } else { + parser.procInstBody += '?' + c + parser.state = S.PROC_INST_BODY + } + continue + + case S.OPEN_TAG: + if (isMatch(nameBody, c)) { + parser.tagName += c + } else { + newTag(parser) + if (c === '>') { + openTag(parser) + } else if (c === '/') { + parser.state = S.OPEN_TAG_SLASH + } else { + if (!isWhitespace(c)) { + strictFail(parser, 'Invalid character in tag name') + } + parser.state = S.ATTRIB + } + } + continue + + case S.OPEN_TAG_SLASH: + if (c === '>') { + openTag(parser, true) + closeTag(parser) + } else { + strictFail(parser, 'Forward-slash in opening tag not followed by >') + parser.state = S.ATTRIB + } + continue + + case S.ATTRIB: + // haven't read the attribute name yet. + if (isWhitespace(c)) { + continue + } else if (c === '>') { + openTag(parser) + } else if (c === '/') { + parser.state = S.OPEN_TAG_SLASH + } else if (isMatch(nameStart, c)) { + parser.attribName = c + parser.attribValue = '' + parser.state = S.ATTRIB_NAME + } else { + strictFail(parser, 'Invalid attribute name') + } + continue + + case S.ATTRIB_NAME: + if (c === '=') { + parser.state = S.ATTRIB_VALUE + } else if (c === '>') { + strictFail(parser, 'Attribute without value') + parser.attribValue = parser.attribName + attrib(parser) + openTag(parser) + } else if (isWhitespace(c)) { + parser.state = S.ATTRIB_NAME_SAW_WHITE + } else if (isMatch(nameBody, c)) { + parser.attribName += c + } else { + strictFail(parser, 'Invalid attribute name') + } + continue + + case S.ATTRIB_NAME_SAW_WHITE: + if (c === '=') { + parser.state = S.ATTRIB_VALUE + } else if (isWhitespace(c)) { + continue + } else { + strictFail(parser, 'Attribute without value') + parser.tag.attributes[parser.attribName] = '' + parser.attribValue = '' + emitNode(parser, 'onattribute', { + name: parser.attribName, + value: '' + }) + parser.attribName = '' + if (c === '>') { + openTag(parser) + } else if (isMatch(nameStart, c)) { + parser.attribName = c + parser.state = S.ATTRIB_NAME + } else { + strictFail(parser, 'Invalid attribute name') + parser.state = S.ATTRIB + } + } + continue + + case S.ATTRIB_VALUE: + if (isWhitespace(c)) { + continue + } else if (isQuote(c)) { + parser.q = c + parser.state = S.ATTRIB_VALUE_QUOTED + } else { + strictFail(parser, 'Unquoted attribute value') + parser.state = S.ATTRIB_VALUE_UNQUOTED + parser.attribValue = c + } + continue + + case S.ATTRIB_VALUE_QUOTED: + if (c !== parser.q) { + if (c === '&') { + parser.state = S.ATTRIB_VALUE_ENTITY_Q + } else { + parser.attribValue += c + } + continue + } + attrib(parser) + parser.q = '' + parser.state = S.ATTRIB_VALUE_CLOSED + continue + + case S.ATTRIB_VALUE_CLOSED: + if (isWhitespace(c)) { + parser.state = S.ATTRIB + } else if (c === '>') { + openTag(parser) + } else if (c === '/') { + parser.state = S.OPEN_TAG_SLASH + } else if (isMatch(nameStart, c)) { + strictFail(parser, 'No whitespace between attributes') + parser.attribName = c + parser.attribValue = '' + parser.state = S.ATTRIB_NAME + } else { + strictFail(parser, 'Invalid attribute name') + } + continue + + case S.ATTRIB_VALUE_UNQUOTED: + if (!isAttribEnd(c)) { + if (c === '&') { + parser.state = S.ATTRIB_VALUE_ENTITY_U + } else { + parser.attribValue += c + } + continue + } + attrib(parser) + if (c === '>') { + openTag(parser) + } else { + parser.state = S.ATTRIB + } + continue + + case S.CLOSE_TAG: + if (!parser.tagName) { + if (isWhitespace(c)) { + continue + } else if (notMatch(nameStart, c)) { + if (parser.script) { + parser.script += '</' + c + parser.state = S.SCRIPT + } else { + strictFail(parser, 'Invalid tagname in closing tag.') + } + } else { + parser.tagName = c + } + } else if (c === '>') { + closeTag(parser) + } else if (isMatch(nameBody, c)) { + parser.tagName += c + } else if (parser.script) { + parser.script += '</' + parser.tagName + parser.tagName = '' + parser.state = S.SCRIPT + } else { + if (!isWhitespace(c)) { + strictFail(parser, 'Invalid tagname in closing tag') + } + parser.state = S.CLOSE_TAG_SAW_WHITE + } + continue + + case S.CLOSE_TAG_SAW_WHITE: + if (isWhitespace(c)) { + continue + } + if (c === '>') { + closeTag(parser) + } else { + strictFail(parser, 'Invalid characters in closing tag') + } + continue + + case S.TEXT_ENTITY: + case S.ATTRIB_VALUE_ENTITY_Q: + case S.ATTRIB_VALUE_ENTITY_U: + var returnState + var buffer + switch (parser.state) { + case S.TEXT_ENTITY: + returnState = S.TEXT + buffer = 'textNode' + break + + case S.ATTRIB_VALUE_ENTITY_Q: + returnState = S.ATTRIB_VALUE_QUOTED + buffer = 'attribValue' + break + + case S.ATTRIB_VALUE_ENTITY_U: + returnState = S.ATTRIB_VALUE_UNQUOTED + buffer = 'attribValue' + break + } + + if (c === ';') { + if (parser.opt.unparsedEntities) { + var parsedEntity = parseEntity(parser) + parser.entity = '' + parser.state = returnState + parser.write(parsedEntity) + } else { + parser[buffer] += parseEntity(parser) + parser.entity = '' + parser.state = returnState + } + } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) { + parser.entity += c + } else { + strictFail(parser, 'Invalid character in entity name') + parser[buffer] += '&' + parser.entity + c + parser.entity = '' + parser.state = returnState + } + + continue + + default: /* istanbul ignore next */ { + throw new Error(parser, 'Unknown state: ' + parser.state) + } + } + } // while + + if (parser.position >= parser.bufferCheckPosition) { + checkBufferLength(parser) + } + return parser + } + + /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */ + /* istanbul ignore next */ + if (!String.fromCodePoint) { + (function () { + var stringFromCharCode = String.fromCharCode + var floor = Math.floor + var fromCodePoint = function () { + var MAX_SIZE = 0x4000 + var codeUnits = [] + var highSurrogate + var lowSurrogate + var index = -1 + var length = arguments.length + if (!length) { + return '' + } + var result = '' + while (++index < length) { + var codePoint = Number(arguments[index]) + if ( + !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity` + codePoint < 0 || // not a valid Unicode code point + codePoint > 0x10FFFF || // not a valid Unicode code point + floor(codePoint) !== codePoint // not an integer + ) { + throw RangeError('Invalid code point: ' + codePoint) + } + if (codePoint <= 0xFFFF) { // BMP code point + codeUnits.push(codePoint) + } else { // Astral code point; split in surrogate halves + // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + codePoint -= 0x10000 + highSurrogate = (codePoint >> 10) + 0xD800 + lowSurrogate = (codePoint % 0x400) + 0xDC00 + codeUnits.push(highSurrogate, lowSurrogate) + } + if (index + 1 === length || codeUnits.length > MAX_SIZE) { + result += stringFromCharCode.apply(null, codeUnits) + codeUnits.length = 0 + } + } + return result + } + /* istanbul ignore next */ + if (Object.defineProperty) { + Object.defineProperty(String, 'fromCodePoint', { + value: fromCodePoint, + configurable: true, + writable: true + }) + } else { + String.fromCodePoint = fromCodePoint + } + }()) + } +})(typeof exports === 'undefined' ? this.sax = {} : exports) + +}).call(this)}).call(this,require("buffer").Buffer) +},{"buffer":103,"stream":468,"string_decoder":483}],466:[function(require,module,exports){ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); +var define = require('define-data-property'); +var hasDescriptors = require('has-property-descriptors')(); +var gOPD = require('gopd'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $floor = GetIntrinsic('%Math.floor%'); + +/** @typedef {(...args: unknown[]) => unknown} Func */ + +/** @type {<T extends Func = Func>(fn: T, length: number, loose?: boolean) => T} */ +module.exports = function setFunctionLength(fn, length) { + if (typeof fn !== 'function') { + throw new $TypeError('`fn` is not a function'); + } + if (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) { + throw new $TypeError('`length` must be a positive 32-bit integer'); + } + + var loose = arguments.length > 2 && !!arguments[2]; + + var functionLengthIsConfigurable = true; + var functionLengthIsWritable = true; + if ('length' in fn && gOPD) { + var desc = gOPD(fn, 'length'); + if (desc && !desc.configurable) { + functionLengthIsConfigurable = false; + } + if (desc && !desc.writable) { + functionLengthIsWritable = false; + } + } + + if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) { + if (hasDescriptors) { + define(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true); + } else { + define(/** @type {Parameters<define>[0]} */ (fn), 'length', length); + } + } + return fn; +}; + +},{"define-data-property":384,"get-intrinsic":390,"gopd":391,"has-property-descriptors":392}],467:[function(require,module,exports){ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); +var callBound = require('call-bind/callBound'); +var inspect = require('object-inspect'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $WeakMap = GetIntrinsic('%WeakMap%', true); +var $Map = GetIntrinsic('%Map%', true); + +var $weakMapGet = callBound('WeakMap.prototype.get', true); +var $weakMapSet = callBound('WeakMap.prototype.set', true); +var $weakMapHas = callBound('WeakMap.prototype.has', true); +var $mapGet = callBound('Map.prototype.get', true); +var $mapSet = callBound('Map.prototype.set', true); +var $mapHas = callBound('Map.prototype.has', true); + +/* + * This function traverses the list returning the node corresponding to the + * given key. + * + * That node is also moved to the head of the list, so that if it's accessed + * again we don't need to traverse the whole list. By doing so, all the recently + * used nodes can be accessed relatively quickly. + */ +var listGetNode = function (list, key) { // eslint-disable-line consistent-return + for (var prev = list, curr; (curr = prev.next) !== null; prev = curr) { + if (curr.key === key) { + prev.next = curr.next; + curr.next = list.next; + list.next = curr; // eslint-disable-line no-param-reassign + return curr; + } + } +}; + +var listGet = function (objects, key) { + var node = listGetNode(objects, key); + return node && node.value; +}; +var listSet = function (objects, key, value) { + var node = listGetNode(objects, key); + if (node) { + node.value = value; + } else { + // Prepend the new node to the beginning of the list + objects.next = { // eslint-disable-line no-param-reassign + key: key, + next: objects.next, + value: value + }; + } +}; +var listHas = function (objects, key) { + return !!listGetNode(objects, key); +}; + +module.exports = function getSideChannel() { + var $wm; + var $m; + var $o; + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + get: function (key) { // eslint-disable-line consistent-return + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapGet($wm, key); + } + } else if ($Map) { + if ($m) { + return $mapGet($m, key); + } + } else { + if ($o) { // eslint-disable-line no-lonely-if + return listGet($o, key); + } + } + }, + has: function (key) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapHas($wm, key); + } + } else if ($Map) { + if ($m) { + return $mapHas($m, key); + } + } else { + if ($o) { // eslint-disable-line no-lonely-if + return listHas($o, key); + } + } + return false; + }, + set: function (key, value) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if (!$wm) { + $wm = new $WeakMap(); + } + $weakMapSet($wm, key, value); + } else if ($Map) { + if (!$m) { + $m = new $Map(); + } + $mapSet($m, key, value); + } else { + if (!$o) { + /* + * Initialize the linked list as an empty node, so that we don't have + * to special-case handling of the first node: we can always refer to + * it as (previous node).next, instead of something like (list).head + */ + $o = { key: {}, next: null }; + } + listSet($o, key, value); + } + } + }; + return channel; +}; + +},{"call-bind/callBound":105,"get-intrinsic":390,"object-inspect":433}],468:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +module.exports = Stream; + +var EE = require('events').EventEmitter; +var inherits = require('inherits'); + +inherits(Stream, EE); +Stream.Readable = require('readable-stream/lib/_stream_readable.js'); +Stream.Writable = require('readable-stream/lib/_stream_writable.js'); +Stream.Duplex = require('readable-stream/lib/_stream_duplex.js'); +Stream.Transform = require('readable-stream/lib/_stream_transform.js'); +Stream.PassThrough = require('readable-stream/lib/_stream_passthrough.js'); +Stream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js') +Stream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js') + +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; + + + +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. + +function Stream() { + EE.call(this); +} + +Stream.prototype.pipe = function(dest, options) { + var source = this; + + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } + } + + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } + + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } + + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; + + dest.end(); + } + + + function onclose() { + if (didOnEnd) return; + didOnEnd = true; + + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } + + source.on('error', onerror); + dest.on('error', onerror); + + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + + source.removeListener('end', onend); + source.removeListener('close', onclose); + + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + + dest.removeListener('close', cleanup); + } + + source.on('end', cleanup); + source.on('close', cleanup); + + dest.on('close', cleanup); + + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; + +},{"events":386,"inherits":407,"readable-stream/lib/_stream_duplex.js":470,"readable-stream/lib/_stream_passthrough.js":471,"readable-stream/lib/_stream_readable.js":472,"readable-stream/lib/_stream_transform.js":473,"readable-stream/lib/_stream_writable.js":474,"readable-stream/lib/internal/streams/end-of-stream.js":478,"readable-stream/lib/internal/streams/pipeline.js":480}],469:[function(require,module,exports){ +'use strict'; + +function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } + +var codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error; + } + + function getMessage(arg1, arg2, arg3) { + if (typeof message === 'string') { + return message; + } else { + return message(arg1, arg2, arg3); + } + } + + var NodeError = + /*#__PURE__*/ + function (_Base) { + _inheritsLoose(NodeError, _Base); + + function NodeError(arg1, arg2, arg3) { + return _Base.call(this, getMessage(arg1, arg2, arg3)) || this; + } + + return NodeError; + }(Base); + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + codes[code] = NodeError; +} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js + + +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + var len = expected.length; + expected = expected.map(function (i) { + return String(i); + }); + + if (len > 2) { + return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; + } else if (len === 2) { + return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); + } else { + return "of ".concat(thing, " ").concat(expected[0]); + } + } else { + return "of ".concat(thing, " ").concat(String(expected)); + } +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + + +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + + +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + + return str.substring(this_len - search.length, this_len) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes + + +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"'; +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + var determiner; + + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + var msg; + + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } else { + var type = includes(name, '.') ? 'property' : 'argument'; + msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } + + msg += ". Received type ".concat(typeof actual); + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented'; +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg; +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); +module.exports.codes = codes; + +},{}],470:[function(require,module,exports){ +(function (process){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + +'use strict'; + +/*<replacement>*/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) keys.push(key); + return keys; +}; +/*</replacement>*/ + +module.exports = Duplex; +var Readable = require('./_stream_readable'); +var Writable = require('./_stream_writable'); +require('inherits')(Duplex, Readable); +{ + // Allow the keys array to be GC'ed. + var keys = objectKeys(Writable.prototype); + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + Readable.call(this, options); + Writable.call(this, options); + this.allowHalfOpen = true; + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once('end', onend); + } + } +} +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); +Object.defineProperty(Duplex.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +Object.defineProperty(Duplex.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); + +// the no-half-open enforcer +function onend() { + // If the writable side ended, then we're ok. + if (this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + process.nextTick(onEndNT, this); +} +function onEndNT(self) { + self.end(); +} +Object.defineProperty(Duplex.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); +}).call(this)}).call(this,require('_process')) +},{"./_stream_readable":472,"./_stream_writable":474,"_process":538,"inherits":407}],471:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + +'use strict'; + +module.exports = PassThrough; +var Transform = require('./_stream_transform'); +require('inherits')(PassThrough, Transform); +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + Transform.call(this, options); +} +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; +},{"./_stream_transform":473,"inherits":407}],472:[function(require,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +module.exports = Readable; + +/*<replacement>*/ +var Duplex; +/*</replacement>*/ + +Readable.ReadableState = ReadableState; + +/*<replacement>*/ +var EE = require('events').EventEmitter; +var EElistenerCount = function EElistenerCount(emitter, type) { + return emitter.listeners(type).length; +}; +/*</replacement>*/ + +/*<replacement>*/ +var Stream = require('./internal/streams/stream'); +/*</replacement>*/ + +var Buffer = require('buffer').Buffer; +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/*<replacement>*/ +var debugUtil = require('util'); +var debug; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function debug() {}; +} +/*</replacement>*/ + +var BufferList = require('./internal/streams/buffer_list'); +var destroyImpl = require('./internal/streams/destroy'); +var _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; +var _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; + +// Lazy loaded to improve the startup performance. +var StringDecoder; +var createReadableStreamAsyncIterator; +var from; +require('inherits')(Readable, Stream); +var errorOrDestroy = destroyImpl.errorOrDestroy; +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} +function ReadableState(options, stream, isDuplex) { + Duplex = Duplex || require('./_stream_duplex'); + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); + + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + this.paused = true; + + // Should close be emitted on destroy. Defaults to true. + this.emitClose = options.emitClose !== false; + + // Should .destroy() be called after 'end' (and potentially 'finish') + this.autoDestroy = !!options.autoDestroy; + + // has it been destroyed + this.destroyed = false; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); + if (!(this instanceof Readable)) return new Readable(options); + + // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 + var isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); + + // legacy + this.readable = true; + if (options) { + if (typeof options.read === 'function') this._read = options.read; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + Stream.call(this); +} +Object.defineProperty(Readable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined) { + return false; + } + return this._readableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + } +}); +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; +Readable.prototype._destroy = function (err, cb) { + cb(err); +}; + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug('readableAddChunk', chunk); + var state = stream._readableState; + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { + errorOrDestroy(stream, er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + if (addToFront) { + if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); + } else if (state.ended) { + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed) { + return false; + } else { + state.reading = false; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + maybeReadMore(stream, state); + } + } + + // We can push more data if we are below the highWaterMark. + // Also, if we have no data yet, we can stand some more bytes. + // This is to work around cases where hwm=0, such as the repl. + return !state.ended && (state.length < state.highWaterMark || state.length === 0); +} +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + state.awaitDrain = 0; + stream.emit('data', chunk); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + if (state.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state); +} +function chunkInvalid(state, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); + } + return er; +} +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; + +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; + // If setEncoding(null), decoder.encoding equals utf8 + this._readableState.encoding = this._readableState.decoder.encoding; + + // Iterate over current buffer to convert already stored Buffers: + var p = this._readableState.buffer.head; + var content = ''; + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + this._readableState.buffer.clear(); + if (content !== '') this._readableState.buffer.push(content); + this._readableState.length = content.length; + return this; +}; + +// Don't raise the hwm > 1GB +var MAX_HWM = 0x40000000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; +} + +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + if (ret === null) { + state.needReadable = state.length <= state.highWaterMark; + n = 0; + } else { + state.length -= n; + state.awaitDrain = 0; + } + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } + if (ret !== null) this.emit('data', ret); + return ret; +}; +function onEofChunk(stream, state) { + debug('onEofChunk'); + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + if (state.sync) { + // if we are sync, wait until next tick to emit the data. + // Otherwise we risk emitting data in the flow() + // the readable code triggers during a read() call + emitReadable(stream); + } else { + // emit 'readable' now to make sure it gets picked up. + state.needReadable = false; + if (!state.emittedReadable) { + state.emittedReadable = true; + emitReadable_(stream); + } + } +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + debug('emitReadable', state.needReadable, state.emittedReadable); + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } +} +function emitReadable_(stream) { + var state = stream._readableState; + debug('emitReadable_', state.destroyed, state.length, state.ended); + if (!state.destroyed && (state.length || state.ended)) { + stream.emit('readable'); + state.emittedReadable = false; + } + + // The stream needs another readable event if + // 1. It is not flowing, as the flow mechanism will take + // care of it. + // 2. It is not ended. + // 3. It is below the highWaterMark, so we can schedule + // another readable later. + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); +} + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(maybeReadMore_, stream, state); + } +} +function maybeReadMore_(stream, state) { + // Attempt to read more data if we should. + // + // The conditions for reading more data are (one of): + // - Not enough data buffered (state.length < state.highWaterMark). The loop + // is responsible for filling the buffer with enough data if such data + // is available. If highWaterMark is 0 and we are not in the flowing mode + // we should _not_ attempt to buffer any extra data. We'll get more data + // when the stream consumer calls read() instead. + // - No data in the buffer, and the stream is in flowing mode. In this mode + // the loop below is responsible for ensuring read() is called. Failing to + // call read here would abort the flow and there's no other mechanism for + // continuing the flow if the stream consumer has just subscribed to the + // 'data' event. + // + // In addition to the above conditions to keep reading data, the following + // conditions prevent the data from being read: + // - The stream has ended (state.ended). + // - There is already a pending 'read' operation (state.reading). This is a + // case where the the stream has called the implementation defined _read() + // method, but they are processing the call asynchronously and have _not_ + // called push() with new data. In this case we skip performing more + // read()s. The execution ends in this method again after the _read() ends + // up calling push() with more data. + while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { + var len = state.length; + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); +}; +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); + dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + function onend() { + debug('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + cleanedUp = true; + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + debug('dest.write', ret); + if (ret === false) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + } + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); + } + + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + return dest; +}; +function pipeOnDrain(src) { + return function pipeOnDrainFunctionResult() { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { + hasUnpiped: false + }; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + if (!dest) dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, { + hasUnpiped: false + }); + return this; + } + + // try to find the right one. + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + dest.emit('unpipe', this, unpipeInfo); + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + var state = this._readableState; + if (ev === 'data') { + // update readableListening so that resume() may be a no-op + // a few lines down. This is needed to support once('readable'). + state.readableListening = this.listenerCount('readable') > 0; + + // Try start flowing on next tick if stream isn't explicitly paused + if (state.flowing !== false) this.resume(); + } else if (ev === 'readable') { + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.flowing = false; + state.emittedReadable = false; + debug('on readable', state.length, state.reading); + if (state.length) { + emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; +Readable.prototype.removeListener = function (ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + if (ev === 'readable') { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + return res; +}; +Readable.prototype.removeAllListeners = function (ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + if (ev === 'readable' || ev === undefined) { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + return res; +}; +function updateReadableListening(self) { + var state = self._readableState; + state.readableListening = self.listenerCount('readable') > 0; + if (state.resumeScheduled && !state.paused) { + // flowing needs to be set to true now, otherwise + // the upcoming resume will not flow. + state.flowing = true; + + // crude way to check if we should resume + } else if (self.listenerCount('data') > 0) { + self.resume(); + } +} +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + // we flow only if there is no one listening + // for readable, but we still have to call + // resume() + state.flowing = !state.readableListening; + resume(this, state); + } + state.paused = false; + return this; +}; +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(resume_, stream, state); + } +} +function resume_(stream, state) { + debug('resume', state.reading); + if (!state.reading) { + stream.read(0); + } + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (this._readableState.flowing !== false) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + this._readableState.paused = true; + return this; +}; +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null); +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var _this = this; + var state = this._readableState; + var paused = false; + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + _this.push(null); + }); + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + var ret = _this.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function methodWrap(method) { + return function methodWrapReturnFunction() { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } + + // proxy certain important events. + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + this._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + return this; +}; +if (typeof Symbol === 'function') { + Readable.prototype[Symbol.asyncIterator] = function () { + if (createReadableStreamAsyncIterator === undefined) { + createReadableStreamAsyncIterator = require('./internal/streams/async_iterator'); + } + return createReadableStreamAsyncIterator(this); + }; +} +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.highWaterMark; + } +}); +Object.defineProperty(Readable.prototype, 'readableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } +}); +Object.defineProperty(Readable.prototype, 'readableFlowing', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } +}); + +// exposed for testing purposes only. +Readable._fromList = fromList; +Object.defineProperty(Readable.prototype, 'readableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } +}); + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = state.buffer.consume(n, state.decoder); + } + return ret; +} +function endReadable(stream) { + var state = stream._readableState; + debug('endReadable', state.endEmitted); + if (!state.endEmitted) { + state.ended = true; + process.nextTick(endReadableNT, state, stream); + } +} +function endReadableNT(state, stream) { + debug('endReadableNT', state.endEmitted, state.length); + + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the writable side is ready for autoDestroy as well + var wState = stream._writableState; + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } + } +} +if (typeof Symbol === 'function') { + Readable.from = function (iterable, opts) { + if (from === undefined) { + from = require('./internal/streams/from'); + } + return from(Readable, iterable, opts); + }; +} +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} +}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../errors":469,"./_stream_duplex":470,"./internal/streams/async_iterator":475,"./internal/streams/buffer_list":476,"./internal/streams/destroy":477,"./internal/streams/from":479,"./internal/streams/state":481,"./internal/streams/stream":482,"_process":538,"buffer":103,"events":386,"inherits":407,"string_decoder/":483,"util":102}],473:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + +'use strict'; + +module.exports = Transform; +var _require$codes = require('../errors').codes, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; +var Duplex = require('./_stream_duplex'); +require('inherits')(Transform, Duplex); +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + var cb = ts.writecb; + if (cb === null) { + return this.emit('error', new ERR_MULTIPLE_CALLBACK()); + } + ts.writechunk = null; + ts.writecb = null; + if (data != null) + // single equals check for both `null` and `undefined` + this.push(data); + cb(er); + var rs = this._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + Duplex.call(this, options); + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + if (typeof options.flush === 'function') this._flush = options.flush; + } + + // When the writable side finishes, then flush out anything remaining. + this.on('prefinish', prefinish); +} +function prefinish() { + var _this = this; + if (typeof this._flush === 'function' && !this._readableState.destroyed) { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); +}; +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; + if (ts.writechunk !== null && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; +Transform.prototype._destroy = function (err, cb) { + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + }); +}; +function done(stream, er, data) { + if (er) return stream.emit('error', er); + if (data != null) + // single equals check for both `null` and `undefined` + stream.push(data); + + // TODO(BridgeAR): Write a test for these two error cases + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); + return stream.push(null); +} +},{"../errors":469,"./_stream_duplex":470,"inherits":407}],474:[function(require,module,exports){ +(function (process,global){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + +'use strict'; + +module.exports = Writable; + +/* <replacement> */ +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} + +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; + this.next = null; + this.entry = null; + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* </replacement> */ + +/*<replacement>*/ +var Duplex; +/*</replacement>*/ + +Writable.WritableState = WritableState; + +/*<replacement>*/ +var internalUtil = { + deprecate: require('util-deprecate') +}; +/*</replacement>*/ + +/*<replacement>*/ +var Stream = require('./internal/streams/stream'); +/*</replacement>*/ + +var Buffer = require('buffer').Buffer; +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} +var destroyImpl = require('./internal/streams/destroy'); +var _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; +var _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; +var errorOrDestroy = destroyImpl.errorOrDestroy; +require('inherits')(Writable, Stream); +function nop() {} +function WritableState(options, stream, isDuplex) { + Duplex = Duplex || require('./_stream_duplex'); + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream, + // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); + + // if _final has been called + this.finalCalled = false; + + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // has it been destroyed + this.destroyed = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + this.bufferedRequest = null; + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; + + // Should close be emitted on destroy. Defaults to true. + this.emitClose = options.emitClose !== false; + + // Should .destroy() be called after 'finish' (and potentially 'end') + this.autoDestroy = !!options.autoDestroy; + + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function writableStateBufferGetter() { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); + +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. +var realHasInstance; +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function value(object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function realHasInstance(object) { + return object instanceof this; + }; +} +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); + + // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + + // Checking for a Stream.Duplex instance is faster here instead of inside + // the WritableState constructor, at least with V8 6.5 + var isDuplex = this instanceof Duplex; + if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); + this._writableState = new WritableState(options, this, isDuplex); + + // legacy. + this.writable = true; + if (options) { + if (typeof options.write === 'function') this._write = options.write; + if (typeof options.writev === 'function') this._writev = options.writev; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + if (typeof options.final === 'function') this._final = options.final; + } + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); +}; +function writeAfterEnd(stream, cb) { + var er = new ERR_STREAM_WRITE_AFTER_END(); + // TODO: defer error events consistently everywhere, not just the cb + errorOrDestroy(stream, er); + process.nextTick(cb, er); +} + +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. +function validChunk(stream, state, chunk, cb) { + var er; + if (chunk === null) { + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== 'string' && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); + } + if (er) { + errorOrDestroy(stream, er); + process.nextTick(cb, er); + return false; + } + return true; +} +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + var isBuf = !state.objectMode && _isUint8Array(chunk); + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (typeof cb !== 'function') cb = nop; + if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + return ret; +}; +Writable.prototype.cork = function () { + this._writableState.corked++; +}; +Writable.prototype.uncork = function () { + var state = this._writableState; + if (state.corked) { + state.corked--; + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; +Object.defineProperty(Writable.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + return chunk; +} +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + var len = state.objectMode ? 1 : chunk.length; + state.length += len; + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + return ret; +} +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + process.nextTick(cb, er); + // this can emit finish, and it will always happen + // after error + process.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + // this can emit finish, but finish must + // always follow error + finishMaybe(stream, state); + } +} +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); + onwriteStateUpdate(state); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state) || stream.destroyed; + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + if (sync) { + process.nextTick(afterWrite, stream, state, finished, cb); + } else { + afterWrite(stream, state, finished, cb); + } + } +} +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + if (entry === null) state.lastBufferedRequest = null; + } + state.bufferedRequest = entry; + state.bufferProcessing = false; +} +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); +}; +Writable.prototype._writev = null; +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending) endWritable(this, state, cb); + return this; +}; +Object.defineProperty(Writable.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + if (err) { + errorOrDestroy(stream, err); + } + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function' && !state.destroyed) { + state.pendingcb++; + state.finalCalled = true; + process.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + prefinish(stream, state); + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + if (state.autoDestroy) { + // In case of duplex streams we need a way to detect + // if the readable side is ready for autoDestroy as well + var rState = stream._readableState; + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } + } + } + return need; +} +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) process.nextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + + // reuse the free corkReq. + state.corkedRequestsFree.next = corkReq; +} +Object.defineProperty(Writable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._writableState === undefined) { + return false; + } + return this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._writableState.destroyed = value; + } +}); +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; +Writable.prototype._destroy = function (err, cb) { + cb(err); +}; +}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../errors":469,"./_stream_duplex":470,"./internal/streams/destroy":477,"./internal/streams/state":481,"./internal/streams/stream":482,"_process":538,"buffer":103,"inherits":407,"util-deprecate":486}],475:[function(require,module,exports){ +(function (process){(function (){ +'use strict'; + +var _Object$setPrototypeO; +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +var finished = require('./end-of-stream'); +var kLastResolve = Symbol('lastResolve'); +var kLastReject = Symbol('lastReject'); +var kError = Symbol('error'); +var kEnded = Symbol('ended'); +var kLastPromise = Symbol('lastPromise'); +var kHandlePromise = Symbol('handlePromise'); +var kStream = Symbol('stream'); +function createIterResult(value, done) { + return { + value: value, + done: done + }; +} +function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + if (resolve !== null) { + var data = iter[kStream].read(); + // we defer if data is null + // we can be expecting either 'end' or + // 'error' + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } +} +function onReadable(iter) { + // we wait for the next tick, because it might + // emit an error with process.nextTick + process.nextTick(readAndResolve, iter); +} +function wrapForNext(lastPromise, iter) { + return function (resolve, reject) { + lastPromise.then(function () { + if (iter[kEnded]) { + resolve(createIterResult(undefined, true)); + return; + } + iter[kHandlePromise](resolve, reject); + }, reject); + }; +} +var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + next: function next() { + var _this = this; + // if we have detected an error in the meanwhile + // reject straight away + var error = this[kError]; + if (error !== null) { + return Promise.reject(error); + } + if (this[kEnded]) { + return Promise.resolve(createIterResult(undefined, true)); + } + if (this[kStream].destroyed) { + // We need to defer via nextTick because if .destroy(err) is + // called, the error will be emitted via nextTick, and + // we cannot guarantee that there is no error lingering around + // waiting to be emitted. + return new Promise(function (resolve, reject) { + process.nextTick(function () { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(undefined, true)); + } + }); + }); + } + + // if we have multiple next() calls + // we will wait for the previous Promise to finish + // this logic is optimized to support for await loops, + // where next() is only called once at a time + var lastPromise = this[kLastPromise]; + var promise; + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + // fast path needed to support multiple this.push() + // without triggering the next() queue + var data = this[kStream].read(); + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + promise = new Promise(this[kHandlePromise]); + } + this[kLastPromise] = promise; + return promise; + } +}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { + return this; +}), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise(function (resolve, reject) { + _this2[kStream].destroy(null, function (err) { + if (err) { + reject(err); + return; + } + resolve(createIterResult(undefined, true)); + }); + }); +}), _Object$setPrototypeO), AsyncIteratorPrototype); +var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { + var _Object$create; + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function (err) { + if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + var reject = iterator[kLastReject]; + // reject if we are waiting for data in the Promise + // returned by next() and store the error + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err); + } + iterator[kError] = err; + return; + } + var resolve = iterator[kLastResolve]; + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(undefined, true)); + } + iterator[kEnded] = true; + }); + stream.on('readable', onReadable.bind(null, iterator)); + return iterator; +}; +module.exports = createReadableStreamAsyncIterator; +}).call(this)}).call(this,require('_process')) +},{"./end-of-stream":478,"_process":538}],476:[function(require,module,exports){ +'use strict'; + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _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, _toPropertyKey(descriptor.key), descriptor); } } +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +var _require = require('buffer'), + Buffer = _require.Buffer; +var _require2 = require('util'), + inspect = _require2.inspect; +var custom = inspect && inspect.custom || 'inspect'; +function copyBuffer(src, target, offset) { + Buffer.prototype.copy.call(src, target, offset); +} +module.exports = /*#__PURE__*/function () { + function BufferList() { + _classCallCheck(this, BufferList); + this.head = null; + this.tail = null; + this.length = 0; + } + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + } + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; + } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) ret += s + p.data; + return ret; + } + }, { + key: "concat", + value: function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + return ret; + } + + // Consumes a specified amount of bytes or characters from the buffered data. + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + return ret; + } + }, { + key: "first", + value: function first() { + return this.head.data; + } + + // Consumes a specified amount of characters from the buffered data. + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + this.length -= c; + return ret; + } + + // Consumes a specified amount of bytes from the buffered data. + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + this.length -= c; + return ret; + } + + // Make sure the linked list only shows the minimal necessary information. + }, { + key: custom, + value: function value(_, options) { + return inspect(this, _objectSpread(_objectSpread({}, options), {}, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } + }]); + return BufferList; +}(); +},{"buffer":103,"util":102}],477:[function(require,module,exports){ +(function (process){(function (){ +'use strict'; + +// undocumented cb() API, needed for core, not for public API +function destroy(err, cb) { + var _this = this; + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err); + } + } + return this; + } + + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + if (this._readableState) { + this._readableState.destroyed = true; + } + + // if this is a duplex stream mark the writable part as destroyed as well + if (this._writableState) { + this._writableState.destroyed = true; + } + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err); + } else { + process.nextTick(emitCloseNT, _this); + } + } else if (cb) { + process.nextTick(emitCloseNT, _this); + cb(err); + } else { + process.nextTick(emitCloseNT, _this); + } + }); + return this; +} +function emitErrorAndCloseNT(self, err) { + emitErrorNT(self, err); + emitCloseNT(self); +} +function emitCloseNT(self) { + if (self._writableState && !self._writableState.emitClose) return; + if (self._readableState && !self._readableState.emitClose) return; + self.emit('close'); +} +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} +function emitErrorNT(self, err) { + self.emit('error', err); +} +function errorOrDestroy(stream, err) { + // We have tests that rely on errors being emitted + // in the same tick, so changing this is semver major. + // For now when you opt-in to autoDestroy we allow + // the error to be emitted nextTick. In a future + // semver major update we should change the default to this. + + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); +} +module.exports = { + destroy: destroy, + undestroy: undestroy, + errorOrDestroy: errorOrDestroy +}; +}).call(this)}).call(this,require('_process')) +},{"_process":538}],478:[function(require,module,exports){ +// Ported from https://github.com/mafintosh/end-of-stream with +// permission from the author, Mathias Buus (@mafintosh). + +'use strict'; + +var ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE; +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + callback.apply(this, args); + }; +} +function noop() {} +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} +function eos(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + callback = once(callback || noop); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + var onlegacyfinish = function onlegacyfinish() { + if (!stream.writable) onfinish(); + }; + var writableEnded = stream._writableState && stream._writableState.finished; + var onfinish = function onfinish() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + var readableEnded = stream._readableState && stream._readableState.endEmitted; + var onend = function onend() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + var onerror = function onerror(err) { + callback.call(stream, err); + }; + var onclose = function onclose() { + var err; + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + }; + var onrequest = function onrequest() { + stream.req.on('finish', onfinish); + }; + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest();else stream.on('request', onrequest); + } else if (writable && !stream._writableState) { + // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + return function () { + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +} +module.exports = eos; +},{"../../../errors":469}],479:[function(require,module,exports){ +module.exports = function () { + throw new Error('Readable.from is not available in the browser') +}; + +},{}],480:[function(require,module,exports){ +// Ported from https://github.com/mafintosh/pump with +// permission from the author, Mathias Buus (@mafintosh). + +'use strict'; + +var eos; +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; +} +var _require$codes = require('../../../errors').codes, + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; +function noop(err) { + // Rethrow the error if it exists to avoid swallowing it + if (err) throw err; +} +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} +function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on('close', function () { + closed = true; + }); + if (eos === undefined) eos = require('./end-of-stream'); + eos(stream, { + readable: reading, + writable: writing + }, function (err) { + if (err) return callback(err); + closed = true; + callback(); + }); + var destroyed = false; + return function (err) { + if (closed) return; + if (destroyed) return; + destroyed = true; + + // request.destroy just do .end - .abort is what we want + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === 'function') return stream.destroy(); + callback(err || new ERR_STREAM_DESTROYED('pipe')); + }; +} +function call(fn) { + fn(); +} +function pipe(from, to) { + return from.pipe(to); +} +function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== 'function') return noop; + return streams.pop(); +} +function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + if (streams.length < 2) { + throw new ERR_MISSING_ARGS('streams'); + } + var error; + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err; + if (err) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error); + }); + }); + return streams.reduce(pipe); +} +module.exports = pipeline; +},{"../../../errors":469,"./end-of-stream":478}],481:[function(require,module,exports){ +'use strict'; + +var ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE; +function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; +} +function getHighWaterMark(state, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name = isDuplex ? duplexKey : 'highWaterMark'; + throw new ERR_INVALID_OPT_VALUE(name, hwm); + } + return Math.floor(hwm); + } + + // Default value + return state.objectMode ? 16 : 16 * 1024; +} +module.exports = { + getHighWaterMark: getHighWaterMark +}; +},{"../../../errors":469}],482:[function(require,module,exports){ +arguments[4][459][0].apply(exports,arguments) +},{"dup":459,"events":386}],483:[function(require,module,exports){ +arguments[4][462][0].apply(exports,arguments) +},{"dup":462,"safe-buffer":464}],484:[function(require,module,exports){ +(function (setImmediate,clearImmediate){(function (){ +var nextTick = require('process/browser.js').nextTick; +var apply = Function.prototype.apply; +var slice = Array.prototype.slice; +var immediateIds = {}; +var nextImmediateId = 0; + +// DOM APIs, for completeness + +exports.setTimeout = function() { + return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); +}; +exports.setInterval = function() { + return new Timeout(apply.call(setInterval, window, arguments), clearInterval); +}; +exports.clearTimeout = +exports.clearInterval = function(timeout) { timeout.close(); }; + +function Timeout(id, clearFn) { + this._id = id; + this._clearFn = clearFn; +} +Timeout.prototype.unref = Timeout.prototype.ref = function() {}; +Timeout.prototype.close = function() { + this._clearFn.call(window, this._id); +}; + +// Does not start the time, just sets up the members needed. +exports.enroll = function(item, msecs) { + clearTimeout(item._idleTimeoutId); + item._idleTimeout = msecs; +}; + +exports.unenroll = function(item) { + clearTimeout(item._idleTimeoutId); + item._idleTimeout = -1; +}; + +exports._unrefActive = exports.active = function(item) { + clearTimeout(item._idleTimeoutId); + + var msecs = item._idleTimeout; + if (msecs >= 0) { + item._idleTimeoutId = setTimeout(function onTimeout() { + if (item._onTimeout) + item._onTimeout(); + }, msecs); + } +}; + +// That's not how node.js implements it but the exposed api is the same. +exports.setImmediate = typeof setImmediate === "function" ? setImmediate : function(fn) { + var id = nextImmediateId++; + var args = arguments.length < 2 ? false : slice.call(arguments, 1); + + immediateIds[id] = true; + + nextTick(function onNextTick() { + if (immediateIds[id]) { + // fn.call() is faster so we optimize for the common use-case + // @see http://jsperf.com/call-apply-segu + if (args) { + fn.apply(null, args); + } else { + fn.call(null); + } + // Prevent ids from leaking + exports.clearImmediate(id); + } + }); + + return id; +}; + +exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) { + delete immediateIds[id]; +}; +}).call(this)}).call(this,require("timers").setImmediate,require("timers").clearImmediate) +},{"process/browser.js":442,"timers":484}],485:[function(require,module,exports){ +var Buffer = require('buffer').Buffer + +module.exports = function (buf) { + // If the buffer is backed by a Uint8Array, a faster version will work + if (buf instanceof Uint8Array) { + // If the buffer isn't a subarray, return the underlying ArrayBuffer + if (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) { + return buf.buffer + } else if (typeof buf.buffer.slice === 'function') { + // Otherwise we need to get a proper copy + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength) + } + } + + if (Buffer.isBuffer(buf)) { + // This is the slow version that will work with any Buffer + // implementation (even in old browsers) + var arrayCopy = new Uint8Array(buf.length) + var len = buf.length + for (var i = 0; i < len; i++) { + arrayCopy[i] = buf[i] + } + return arrayCopy.buffer + } else { + throw new Error('Argument must be a Buffer') + } +} + +},{"buffer":103}],486:[function(require,module,exports){ +(function (global){(function (){ + +/** + * Module exports. + */ + +module.exports = deprecate; + +/** + * Mark that a method should not be used. + * Returns a modified function which warns once by default. + * + * If `localStorage.noDeprecation = true` is set, then it is a no-op. + * + * If `localStorage.throwDeprecation = true` is set, then deprecated functions + * will throw an Error when invoked. + * + * If `localStorage.traceDeprecation = true` is set, then deprecated functions + * will invoke `console.trace()` instead of `console.error()`. + * + * @param {Function} fn - the function to deprecate + * @param {String} msg - the string to print to the console when `fn` is invoked + * @returns {Function} a new "deprecated" version of `fn` + * @api public + */ + +function deprecate (fn, msg) { + if (config('noDeprecation')) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (config('throwDeprecation')) { + throw new Error(msg); + } else if (config('traceDeprecation')) { + console.trace(msg); + } else { + console.warn(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +} + +/** + * Checks `localStorage` for boolean values for the given `name`. + * + * @param {String} name + * @returns {Boolean} + * @api private + */ + +function config (name) { + // accessing global.localStorage can trigger a DOMException in sandboxed iframes + try { + if (!global.localStorage) return false; + } catch (_) { + return false; + } + var val = global.localStorage[name]; + if (null == val) return false; + return String(val).toLowerCase() === 'true'; +} + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],487:[function(require,module,exports){ +arguments[4][97][0].apply(exports,arguments) +},{"dup":97}],488:[function(require,module,exports){ +// Currently in sync with Node.js lib/internal/util/types.js +// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9 + +'use strict'; + +var isArgumentsObject = require('is-arguments'); +var isGeneratorFunction = require('is-generator-function'); +var whichTypedArray = require('which-typed-array'); +var isTypedArray = require('is-typed-array'); + +function uncurryThis(f) { + return f.call.bind(f); +} + +var BigIntSupported = typeof BigInt !== 'undefined'; +var SymbolSupported = typeof Symbol !== 'undefined'; + +var ObjectToString = uncurryThis(Object.prototype.toString); + +var numberValue = uncurryThis(Number.prototype.valueOf); +var stringValue = uncurryThis(String.prototype.valueOf); +var booleanValue = uncurryThis(Boolean.prototype.valueOf); + +if (BigIntSupported) { + var bigIntValue = uncurryThis(BigInt.prototype.valueOf); +} + +if (SymbolSupported) { + var symbolValue = uncurryThis(Symbol.prototype.valueOf); +} + +function checkBoxedPrimitive(value, prototypeValueOf) { + if (typeof value !== 'object') { + return false; + } + try { + prototypeValueOf(value); + return true; + } catch(e) { + return false; + } +} + +exports.isArgumentsObject = isArgumentsObject; +exports.isGeneratorFunction = isGeneratorFunction; +exports.isTypedArray = isTypedArray; + +// Taken from here and modified for better browser support +// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js +function isPromise(input) { + return ( + ( + typeof Promise !== 'undefined' && + input instanceof Promise + ) || + ( + input !== null && + typeof input === 'object' && + typeof input.then === 'function' && + typeof input.catch === 'function' + ) + ); +} +exports.isPromise = isPromise; + +function isArrayBufferView(value) { + if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { + return ArrayBuffer.isView(value); + } + + return ( + isTypedArray(value) || + isDataView(value) + ); +} +exports.isArrayBufferView = isArrayBufferView; + + +function isUint8Array(value) { + return whichTypedArray(value) === 'Uint8Array'; +} +exports.isUint8Array = isUint8Array; + +function isUint8ClampedArray(value) { + return whichTypedArray(value) === 'Uint8ClampedArray'; +} +exports.isUint8ClampedArray = isUint8ClampedArray; + +function isUint16Array(value) { + return whichTypedArray(value) === 'Uint16Array'; +} +exports.isUint16Array = isUint16Array; + +function isUint32Array(value) { + return whichTypedArray(value) === 'Uint32Array'; +} +exports.isUint32Array = isUint32Array; + +function isInt8Array(value) { + return whichTypedArray(value) === 'Int8Array'; +} +exports.isInt8Array = isInt8Array; + +function isInt16Array(value) { + return whichTypedArray(value) === 'Int16Array'; +} +exports.isInt16Array = isInt16Array; + +function isInt32Array(value) { + return whichTypedArray(value) === 'Int32Array'; +} +exports.isInt32Array = isInt32Array; + +function isFloat32Array(value) { + return whichTypedArray(value) === 'Float32Array'; +} +exports.isFloat32Array = isFloat32Array; + +function isFloat64Array(value) { + return whichTypedArray(value) === 'Float64Array'; +} +exports.isFloat64Array = isFloat64Array; + +function isBigInt64Array(value) { + return whichTypedArray(value) === 'BigInt64Array'; +} +exports.isBigInt64Array = isBigInt64Array; + +function isBigUint64Array(value) { + return whichTypedArray(value) === 'BigUint64Array'; +} +exports.isBigUint64Array = isBigUint64Array; + +function isMapToString(value) { + return ObjectToString(value) === '[object Map]'; +} +isMapToString.working = ( + typeof Map !== 'undefined' && + isMapToString(new Map()) +); + +function isMap(value) { + if (typeof Map === 'undefined') { + return false; + } + + return isMapToString.working + ? isMapToString(value) + : value instanceof Map; +} +exports.isMap = isMap; + +function isSetToString(value) { + return ObjectToString(value) === '[object Set]'; +} +isSetToString.working = ( + typeof Set !== 'undefined' && + isSetToString(new Set()) +); +function isSet(value) { + if (typeof Set === 'undefined') { + return false; + } + + return isSetToString.working + ? isSetToString(value) + : value instanceof Set; +} +exports.isSet = isSet; + +function isWeakMapToString(value) { + return ObjectToString(value) === '[object WeakMap]'; +} +isWeakMapToString.working = ( + typeof WeakMap !== 'undefined' && + isWeakMapToString(new WeakMap()) +); +function isWeakMap(value) { + if (typeof WeakMap === 'undefined') { + return false; + } + + return isWeakMapToString.working + ? isWeakMapToString(value) + : value instanceof WeakMap; +} +exports.isWeakMap = isWeakMap; + +function isWeakSetToString(value) { + return ObjectToString(value) === '[object WeakSet]'; +} +isWeakSetToString.working = ( + typeof WeakSet !== 'undefined' && + isWeakSetToString(new WeakSet()) +); +function isWeakSet(value) { + return isWeakSetToString(value); +} +exports.isWeakSet = isWeakSet; + +function isArrayBufferToString(value) { + return ObjectToString(value) === '[object ArrayBuffer]'; +} +isArrayBufferToString.working = ( + typeof ArrayBuffer !== 'undefined' && + isArrayBufferToString(new ArrayBuffer()) +); +function isArrayBuffer(value) { + if (typeof ArrayBuffer === 'undefined') { + return false; + } + + return isArrayBufferToString.working + ? isArrayBufferToString(value) + : value instanceof ArrayBuffer; +} +exports.isArrayBuffer = isArrayBuffer; + +function isDataViewToString(value) { + return ObjectToString(value) === '[object DataView]'; +} +isDataViewToString.working = ( + typeof ArrayBuffer !== 'undefined' && + typeof DataView !== 'undefined' && + isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1)) +); +function isDataView(value) { + if (typeof DataView === 'undefined') { + return false; + } + + return isDataViewToString.working + ? isDataViewToString(value) + : value instanceof DataView; +} +exports.isDataView = isDataView; + +// Store a copy of SharedArrayBuffer in case it's deleted elsewhere +var SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined; +function isSharedArrayBufferToString(value) { + return ObjectToString(value) === '[object SharedArrayBuffer]'; +} +function isSharedArrayBuffer(value) { + if (typeof SharedArrayBufferCopy === 'undefined') { + return false; + } + + if (typeof isSharedArrayBufferToString.working === 'undefined') { + isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy()); + } + + return isSharedArrayBufferToString.working + ? isSharedArrayBufferToString(value) + : value instanceof SharedArrayBufferCopy; +} +exports.isSharedArrayBuffer = isSharedArrayBuffer; + +function isAsyncFunction(value) { + return ObjectToString(value) === '[object AsyncFunction]'; +} +exports.isAsyncFunction = isAsyncFunction; + +function isMapIterator(value) { + return ObjectToString(value) === '[object Map Iterator]'; +} +exports.isMapIterator = isMapIterator; + +function isSetIterator(value) { + return ObjectToString(value) === '[object Set Iterator]'; +} +exports.isSetIterator = isSetIterator; + +function isGeneratorObject(value) { + return ObjectToString(value) === '[object Generator]'; +} +exports.isGeneratorObject = isGeneratorObject; + +function isWebAssemblyCompiledModule(value) { + return ObjectToString(value) === '[object WebAssembly.Module]'; +} +exports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule; + +function isNumberObject(value) { + return checkBoxedPrimitive(value, numberValue); +} +exports.isNumberObject = isNumberObject; + +function isStringObject(value) { + return checkBoxedPrimitive(value, stringValue); +} +exports.isStringObject = isStringObject; + +function isBooleanObject(value) { + return checkBoxedPrimitive(value, booleanValue); +} +exports.isBooleanObject = isBooleanObject; + +function isBigIntObject(value) { + return BigIntSupported && checkBoxedPrimitive(value, bigIntValue); +} +exports.isBigIntObject = isBigIntObject; + +function isSymbolObject(value) { + return SymbolSupported && checkBoxedPrimitive(value, symbolValue); +} +exports.isSymbolObject = isSymbolObject; + +function isBoxedPrimitive(value) { + return ( + isNumberObject(value) || + isStringObject(value) || + isBooleanObject(value) || + isBigIntObject(value) || + isSymbolObject(value) + ); +} +exports.isBoxedPrimitive = isBoxedPrimitive; + +function isAnyArrayBuffer(value) { + return typeof Uint8Array !== 'undefined' && ( + isArrayBuffer(value) || + isSharedArrayBuffer(value) + ); +} +exports.isAnyArrayBuffer = isAnyArrayBuffer; + +['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) { + Object.defineProperty(exports, method, { + enumerable: false, + value: function() { + throw new Error(method + ' is not supported in userland'); + } + }); +}); + +},{"is-arguments":408,"is-generator-function":411,"is-typed-array":412,"which-typed-array":490}],489:[function(require,module,exports){ +(function (process){(function (){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || + function getOwnPropertyDescriptors(obj) { + var keys = Object.keys(obj); + var descriptors = {}; + for (var i = 0; i < keys.length; i++) { + descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]); + } + return descriptors; + }; + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + if (typeof process !== 'undefined' && process.noDeprecation === true) { + return fn; + } + + // Allow for deprecating things in the process of starting up. + if (typeof process === 'undefined') { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnvRegex = /^$/; + +if (process.env.NODE_DEBUG) { + var debugEnv = process.env.NODE_DEBUG; + debugEnv = debugEnv.replace(/[|\\{}()[\]^$+?.]/g, '\\$&') + .replace(/\*/g, '.*') + .replace(/,/g, '$|^') + .toUpperCase(); + debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i'); +} +exports.debuglog = function(set) { + set = set.toUpperCase(); + if (!debugs[set]) { + if (debugEnvRegex.test(set)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').slice(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.slice(1, -1); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +exports.types = require('./support/types'); + +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; +exports.types.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; +exports.types.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; +exports.types.isNativeError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +var kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined; + +exports.promisify = function promisify(original) { + if (typeof original !== 'function') + throw new TypeError('The "original" argument must be of type Function'); + + if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) { + var fn = original[kCustomPromisifiedSymbol]; + if (typeof fn !== 'function') { + throw new TypeError('The "util.promisify.custom" argument must be of type Function'); + } + Object.defineProperty(fn, kCustomPromisifiedSymbol, { + value: fn, enumerable: false, writable: false, configurable: true + }); + return fn; + } + + function fn() { + var promiseResolve, promiseReject; + var promise = new Promise(function (resolve, reject) { + promiseResolve = resolve; + promiseReject = reject; + }); + + var args = []; + for (var i = 0; i < arguments.length; i++) { + args.push(arguments[i]); + } + args.push(function (err, value) { + if (err) { + promiseReject(err); + } else { + promiseResolve(value); + } + }); + + try { + original.apply(this, args); + } catch (err) { + promiseReject(err); + } + + return promise; + } + + Object.setPrototypeOf(fn, Object.getPrototypeOf(original)); + + if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, { + value: fn, enumerable: false, writable: false, configurable: true + }); + return Object.defineProperties( + fn, + getOwnPropertyDescriptors(original) + ); +} + +exports.promisify.custom = kCustomPromisifiedSymbol + +function callbackifyOnRejected(reason, cb) { + // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M). + // Because `null` is a special error value in callbacks which means "no error + // occurred", we error-wrap so the callback consumer can distinguish between + // "the promise rejected with null" or "the promise fulfilled with undefined". + if (!reason) { + var newReason = new Error('Promise was rejected with a falsy value'); + newReason.reason = reason; + reason = newReason; + } + return cb(reason); +} + +function callbackify(original) { + if (typeof original !== 'function') { + throw new TypeError('The "original" argument must be of type Function'); + } + + // We DO NOT return the promise as it gives the user a false sense that + // the promise is actually somehow related to the callback's execution + // and that the callback throwing will reject the promise. + function callbackified() { + var args = []; + for (var i = 0; i < arguments.length; i++) { + args.push(arguments[i]); + } + + var maybeCb = args.pop(); + if (typeof maybeCb !== 'function') { + throw new TypeError('The last argument must be of type Function'); + } + var self = this; + var cb = function() { + return maybeCb.apply(self, arguments); + }; + // In true node style we process the callback on `nextTick` with all the + // implications (stack, `uncaughtException`, `async_hooks`) + original.apply(this, args) + .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) }, + function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) }); + } + + Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original)); + Object.defineProperties(callbackified, + getOwnPropertyDescriptors(original)); + return callbackified; +} +exports.callbackify = callbackify; + +}).call(this)}).call(this,require('_process')) +},{"./support/isBuffer":487,"./support/types":488,"_process":538,"inherits":407}],490:[function(require,module,exports){ +(function (global){(function (){ +'use strict'; + +var forEach = require('for-each'); +var availableTypedArrays = require('available-typed-arrays'); +var callBind = require('call-bind'); +var callBound = require('call-bind/callBound'); +var gOPD = require('gopd'); + +var $toString = callBound('Object.prototype.toString'); +var hasToStringTag = require('has-tostringtag/shams')(); + +var g = typeof globalThis === 'undefined' ? global : globalThis; +var typedArrays = availableTypedArrays(); + +var $slice = callBound('String.prototype.slice'); +var getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof'); + +var $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) { + for (var i = 0; i < array.length; i += 1) { + if (array[i] === value) { + return i; + } + } + return -1; +}; +var cache = { __proto__: null }; +if (hasToStringTag && gOPD && getPrototypeOf) { + forEach(typedArrays, function (typedArray) { + var arr = new g[typedArray](); + if (Symbol.toStringTag in arr) { + var proto = getPrototypeOf(arr); + var descriptor = gOPD(proto, Symbol.toStringTag); + if (!descriptor) { + var superProto = getPrototypeOf(proto); + descriptor = gOPD(superProto, Symbol.toStringTag); + } + cache['$' + typedArray] = callBind(descriptor.get); + } + }); +} else { + forEach(typedArrays, function (typedArray) { + var arr = new g[typedArray](); + var fn = arr.slice || arr.set; + if (fn) { + cache['$' + typedArray] = callBind(fn); + } + }); +} + +var tryTypedArrays = function tryAllTypedArrays(value) { + var found = false; + forEach(cache, function (getter, typedArray) { + if (!found) { + try { + if ('$' + getter(value) === typedArray) { + found = $slice(typedArray, 1); + } + } catch (e) { /**/ } + } + }); + return found; +}; + +var trySlices = function tryAllSlices(value) { + var found = false; + forEach(cache, function (getter, name) { + if (!found) { + try { + getter(value); + found = $slice(name, 1); + } catch (e) { /**/ } + } + }); + return found; +}; + +module.exports = function whichTypedArray(value) { + if (!value || typeof value !== 'object') { return false; } + if (!hasToStringTag) { + var tag = $slice($toString(value), 8, -1); + if ($indexOf(typedArrays, tag) > -1) { + return tag; + } + if (tag !== 'Object') { + return false; + } + // node < 0.6 hits here on real Typed Arrays + return trySlices(value); + } + if (!gOPD) { return null; } // unknown engine + return tryTypedArrays(value); +}; + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"available-typed-arrays":99,"call-bind":106,"call-bind/callBound":105,"for-each":387,"gopd":391,"has-tostringtag/shams":396}],491:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + "use strict"; + exports.stripBOM = function(str) { + if (str[0] === '\uFEFF') { + return str.substring(1); + } else { + return str; + } + }; + +}).call(this); + +},{}],492:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + "use strict"; + var builder, defaults, escapeCDATA, requiresCDATA, wrapCDATA, + hasProp = {}.hasOwnProperty; + + builder = require('xmlbuilder'); + + defaults = require('./defaults').defaults; + + requiresCDATA = function(entry) { + return typeof entry === "string" && (entry.indexOf('&') >= 0 || entry.indexOf('>') >= 0 || entry.indexOf('<') >= 0); + }; + + wrapCDATA = function(entry) { + return "<![CDATA[" + (escapeCDATA(entry)) + "]]>"; + }; + + escapeCDATA = function(entry) { + return entry.replace(']]>', ']]]]><![CDATA[>'); + }; + + exports.Builder = (function() { + function Builder(opts) { + var key, ref, value; + this.options = {}; + ref = defaults["0.2"]; + for (key in ref) { + if (!hasProp.call(ref, key)) continue; + value = ref[key]; + this.options[key] = value; + } + for (key in opts) { + if (!hasProp.call(opts, key)) continue; + value = opts[key]; + this.options[key] = value; + } + } + + Builder.prototype.buildObject = function(rootObj) { + var attrkey, charkey, render, rootElement, rootName; + attrkey = this.options.attrkey; + charkey = this.options.charkey; + if ((Object.keys(rootObj).length === 1) && (this.options.rootName === defaults['0.2'].rootName)) { + rootName = Object.keys(rootObj)[0]; + rootObj = rootObj[rootName]; + } else { + rootName = this.options.rootName; + } + render = (function(_this) { + return function(element, obj) { + var attr, child, entry, index, key, value; + if (typeof obj !== 'object') { + if (_this.options.cdata && requiresCDATA(obj)) { + element.raw(wrapCDATA(obj)); + } else { + element.txt(obj); + } + } else if (Array.isArray(obj)) { + for (index in obj) { + if (!hasProp.call(obj, index)) continue; + child = obj[index]; + for (key in child) { + entry = child[key]; + element = render(element.ele(key), entry).up(); + } + } + } else { + for (key in obj) { + if (!hasProp.call(obj, key)) continue; + child = obj[key]; + if (key === attrkey) { + if (typeof child === "object") { + for (attr in child) { + value = child[attr]; + element = element.att(attr, value); + } + } + } else if (key === charkey) { + if (_this.options.cdata && requiresCDATA(child)) { + element = element.raw(wrapCDATA(child)); + } else { + element = element.txt(child); + } + } else if (Array.isArray(child)) { + for (index in child) { + if (!hasProp.call(child, index)) continue; + entry = child[index]; + if (typeof entry === 'string') { + if (_this.options.cdata && requiresCDATA(entry)) { + element = element.ele(key).raw(wrapCDATA(entry)).up(); + } else { + element = element.ele(key, entry).up(); + } + } else { + element = render(element.ele(key), entry).up(); + } + } + } else if (typeof child === "object") { + element = render(element.ele(key), child).up(); + } else { + if (typeof child === 'string' && _this.options.cdata && requiresCDATA(child)) { + element = element.ele(key).raw(wrapCDATA(child)).up(); + } else { + if (child == null) { + child = ''; + } + element = element.ele(key, child.toString()).up(); + } + } + } + } + return element; + }; + })(this); + rootElement = builder.create(rootName, this.options.xmldec, this.options.doctype, { + headless: this.options.headless, + allowSurrogateChars: this.options.allowSurrogateChars + }); + return render(rootElement, rootObj).end(this.options.renderOpts); + }; + + return Builder; + + })(); + +}).call(this); + +},{"./defaults":493,"xmlbuilder":529}],493:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + exports.defaults = { + "0.1": { + explicitCharkey: false, + trim: true, + normalize: true, + normalizeTags: false, + attrkey: "@", + charkey: "#", + explicitArray: false, + ignoreAttrs: false, + mergeAttrs: false, + explicitRoot: false, + validator: null, + xmlns: false, + explicitChildren: false, + childkey: '@@', + charsAsChildren: false, + includeWhiteChars: false, + async: false, + strict: true, + attrNameProcessors: null, + attrValueProcessors: null, + tagNameProcessors: null, + valueProcessors: null, + emptyTag: '' + }, + "0.2": { + explicitCharkey: false, + trim: false, + normalize: false, + normalizeTags: false, + attrkey: "$", + charkey: "_", + explicitArray: true, + ignoreAttrs: false, + mergeAttrs: false, + explicitRoot: true, + validator: null, + xmlns: false, + explicitChildren: false, + preserveChildrenOrder: false, + childkey: '$$', + charsAsChildren: false, + includeWhiteChars: false, + async: false, + strict: true, + attrNameProcessors: null, + attrValueProcessors: null, + tagNameProcessors: null, + valueProcessors: null, + rootName: 'root', + xmldec: { + 'version': '1.0', + 'encoding': 'UTF-8', + 'standalone': true + }, + doctype: null, + renderOpts: { + 'pretty': true, + 'indent': ' ', + 'newline': '\n' + }, + headless: false, + chunkSize: 10000, + emptyTag: '', + cdata: false + } + }; + +}).call(this); + +},{}],494:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + "use strict"; + var bom, defaults, defineProperty, events, isEmpty, processItem, processors, sax, setImmediate, + bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + sax = require('sax'); + + events = require('events'); + + bom = require('./bom'); + + processors = require('./processors'); + + setImmediate = require('timers').setImmediate; + + defaults = require('./defaults').defaults; + + isEmpty = function(thing) { + return typeof thing === "object" && (thing != null) && Object.keys(thing).length === 0; + }; + + processItem = function(processors, item, key) { + var i, len, process; + for (i = 0, len = processors.length; i < len; i++) { + process = processors[i]; + item = process(item, key); + } + return item; + }; + + defineProperty = function(obj, key, value) { + var descriptor; + descriptor = Object.create(null); + descriptor.value = value; + descriptor.writable = true; + descriptor.enumerable = true; + descriptor.configurable = true; + return Object.defineProperty(obj, key, descriptor); + }; + + exports.Parser = (function(superClass) { + extend(Parser, superClass); + + function Parser(opts) { + this.parseStringPromise = bind(this.parseStringPromise, this); + this.parseString = bind(this.parseString, this); + this.reset = bind(this.reset, this); + this.assignOrPush = bind(this.assignOrPush, this); + this.processAsync = bind(this.processAsync, this); + var key, ref, value; + if (!(this instanceof exports.Parser)) { + return new exports.Parser(opts); + } + this.options = {}; + ref = defaults["0.2"]; + for (key in ref) { + if (!hasProp.call(ref, key)) continue; + value = ref[key]; + this.options[key] = value; + } + for (key in opts) { + if (!hasProp.call(opts, key)) continue; + value = opts[key]; + this.options[key] = value; + } + if (this.options.xmlns) { + this.options.xmlnskey = this.options.attrkey + "ns"; + } + if (this.options.normalizeTags) { + if (!this.options.tagNameProcessors) { + this.options.tagNameProcessors = []; + } + this.options.tagNameProcessors.unshift(processors.normalize); + } + this.reset(); + } + + Parser.prototype.processAsync = function() { + var chunk, err; + try { + if (this.remaining.length <= this.options.chunkSize) { + chunk = this.remaining; + this.remaining = ''; + this.saxParser = this.saxParser.write(chunk); + return this.saxParser.close(); + } else { + chunk = this.remaining.substr(0, this.options.chunkSize); + this.remaining = this.remaining.substr(this.options.chunkSize, this.remaining.length); + this.saxParser = this.saxParser.write(chunk); + return setImmediate(this.processAsync); + } + } catch (error1) { + err = error1; + if (!this.saxParser.errThrown) { + this.saxParser.errThrown = true; + return this.emit(err); + } + } + }; + + Parser.prototype.assignOrPush = function(obj, key, newValue) { + if (!(key in obj)) { + if (!this.options.explicitArray) { + return defineProperty(obj, key, newValue); + } else { + return defineProperty(obj, key, [newValue]); + } + } else { + if (!(obj[key] instanceof Array)) { + defineProperty(obj, key, [obj[key]]); + } + return obj[key].push(newValue); + } + }; + + Parser.prototype.reset = function() { + var attrkey, charkey, ontext, stack; + this.removeAllListeners(); + this.saxParser = sax.parser(this.options.strict, { + trim: false, + normalize: false, + xmlns: this.options.xmlns + }); + this.saxParser.errThrown = false; + this.saxParser.onerror = (function(_this) { + return function(error) { + _this.saxParser.resume(); + if (!_this.saxParser.errThrown) { + _this.saxParser.errThrown = true; + return _this.emit("error", error); + } + }; + })(this); + this.saxParser.onend = (function(_this) { + return function() { + if (!_this.saxParser.ended) { + _this.saxParser.ended = true; + return _this.emit("end", _this.resultObject); + } + }; + })(this); + this.saxParser.ended = false; + this.EXPLICIT_CHARKEY = this.options.explicitCharkey; + this.resultObject = null; + stack = []; + attrkey = this.options.attrkey; + charkey = this.options.charkey; + this.saxParser.onopentag = (function(_this) { + return function(node) { + var key, newValue, obj, processedKey, ref; + obj = {}; + obj[charkey] = ""; + if (!_this.options.ignoreAttrs) { + ref = node.attributes; + for (key in ref) { + if (!hasProp.call(ref, key)) continue; + if (!(attrkey in obj) && !_this.options.mergeAttrs) { + obj[attrkey] = {}; + } + newValue = _this.options.attrValueProcessors ? processItem(_this.options.attrValueProcessors, node.attributes[key], key) : node.attributes[key]; + processedKey = _this.options.attrNameProcessors ? processItem(_this.options.attrNameProcessors, key) : key; + if (_this.options.mergeAttrs) { + _this.assignOrPush(obj, processedKey, newValue); + } else { + defineProperty(obj[attrkey], processedKey, newValue); + } + } + } + obj["#name"] = _this.options.tagNameProcessors ? processItem(_this.options.tagNameProcessors, node.name) : node.name; + if (_this.options.xmlns) { + obj[_this.options.xmlnskey] = { + uri: node.uri, + local: node.local + }; + } + return stack.push(obj); + }; + })(this); + this.saxParser.onclosetag = (function(_this) { + return function() { + var cdata, emptyStr, key, node, nodeName, obj, objClone, old, s, xpath; + obj = stack.pop(); + nodeName = obj["#name"]; + if (!_this.options.explicitChildren || !_this.options.preserveChildrenOrder) { + delete obj["#name"]; + } + if (obj.cdata === true) { + cdata = obj.cdata; + delete obj.cdata; + } + s = stack[stack.length - 1]; + if (obj[charkey].match(/^\s*$/) && !cdata) { + emptyStr = obj[charkey]; + delete obj[charkey]; + } else { + if (_this.options.trim) { + obj[charkey] = obj[charkey].trim(); + } + if (_this.options.normalize) { + obj[charkey] = obj[charkey].replace(/\s{2,}/g, " ").trim(); + } + obj[charkey] = _this.options.valueProcessors ? processItem(_this.options.valueProcessors, obj[charkey], nodeName) : obj[charkey]; + if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) { + obj = obj[charkey]; + } + } + if (isEmpty(obj)) { + if (typeof _this.options.emptyTag === 'function') { + obj = _this.options.emptyTag(); + } else { + obj = _this.options.emptyTag !== '' ? _this.options.emptyTag : emptyStr; + } + } + if (_this.options.validator != null) { + xpath = "/" + ((function() { + var i, len, results; + results = []; + for (i = 0, len = stack.length; i < len; i++) { + node = stack[i]; + results.push(node["#name"]); + } + return results; + })()).concat(nodeName).join("/"); + (function() { + var err; + try { + return obj = _this.options.validator(xpath, s && s[nodeName], obj); + } catch (error1) { + err = error1; + return _this.emit("error", err); + } + })(); + } + if (_this.options.explicitChildren && !_this.options.mergeAttrs && typeof obj === 'object') { + if (!_this.options.preserveChildrenOrder) { + node = {}; + if (_this.options.attrkey in obj) { + node[_this.options.attrkey] = obj[_this.options.attrkey]; + delete obj[_this.options.attrkey]; + } + if (!_this.options.charsAsChildren && _this.options.charkey in obj) { + node[_this.options.charkey] = obj[_this.options.charkey]; + delete obj[_this.options.charkey]; + } + if (Object.getOwnPropertyNames(obj).length > 0) { + node[_this.options.childkey] = obj; + } + obj = node; + } else if (s) { + s[_this.options.childkey] = s[_this.options.childkey] || []; + objClone = {}; + for (key in obj) { + if (!hasProp.call(obj, key)) continue; + defineProperty(objClone, key, obj[key]); + } + s[_this.options.childkey].push(objClone); + delete obj["#name"]; + if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) { + obj = obj[charkey]; + } + } + } + if (stack.length > 0) { + return _this.assignOrPush(s, nodeName, obj); + } else { + if (_this.options.explicitRoot) { + old = obj; + obj = {}; + defineProperty(obj, nodeName, old); + } + _this.resultObject = obj; + _this.saxParser.ended = true; + return _this.emit("end", _this.resultObject); + } + }; + })(this); + ontext = (function(_this) { + return function(text) { + var charChild, s; + s = stack[stack.length - 1]; + if (s) { + s[charkey] += text; + if (_this.options.explicitChildren && _this.options.preserveChildrenOrder && _this.options.charsAsChildren && (_this.options.includeWhiteChars || text.replace(/\\n/g, '').trim() !== '')) { + s[_this.options.childkey] = s[_this.options.childkey] || []; + charChild = { + '#name': '__text__' + }; + charChild[charkey] = text; + if (_this.options.normalize) { + charChild[charkey] = charChild[charkey].replace(/\s{2,}/g, " ").trim(); + } + s[_this.options.childkey].push(charChild); + } + return s; + } + }; + })(this); + this.saxParser.ontext = ontext; + return this.saxParser.oncdata = (function(_this) { + return function(text) { + var s; + s = ontext(text); + if (s) { + return s.cdata = true; + } + }; + })(this); + }; + + Parser.prototype.parseString = function(str, cb) { + var err; + if ((cb != null) && typeof cb === "function") { + this.on("end", function(result) { + this.reset(); + return cb(null, result); + }); + this.on("error", function(err) { + this.reset(); + return cb(err); + }); + } + try { + str = str.toString(); + if (str.trim() === '') { + this.emit("end", null); + return true; + } + str = bom.stripBOM(str); + if (this.options.async) { + this.remaining = str; + setImmediate(this.processAsync); + return this.saxParser; + } + return this.saxParser.write(str).close(); + } catch (error1) { + err = error1; + if (!(this.saxParser.errThrown || this.saxParser.ended)) { + this.emit('error', err); + return this.saxParser.errThrown = true; + } else if (this.saxParser.ended) { + throw err; + } + } + }; + + Parser.prototype.parseStringPromise = function(str) { + return new Promise((function(_this) { + return function(resolve, reject) { + return _this.parseString(str, function(err, value) { + if (err) { + return reject(err); + } else { + return resolve(value); + } + }); + }; + })(this)); + }; + + return Parser; + + })(events); + + exports.parseString = function(str, a, b) { + var cb, options, parser; + if (b != null) { + if (typeof b === 'function') { + cb = b; + } + if (typeof a === 'object') { + options = a; + } + } else { + if (typeof a === 'function') { + cb = a; + } + options = {}; + } + parser = new exports.Parser(options); + return parser.parseString(str, cb); + }; + + exports.parseStringPromise = function(str, a) { + var options, parser; + if (typeof a === 'object') { + options = a; + } + parser = new exports.Parser(options); + return parser.parseStringPromise(str); + }; + +}).call(this); + +},{"./bom":491,"./defaults":493,"./processors":495,"events":386,"sax":465,"timers":484}],495:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + "use strict"; + var prefixMatch; + + prefixMatch = new RegExp(/(?!xmlns)^.*:/); + + exports.normalize = function(str) { + return str.toLowerCase(); + }; + + exports.firstCharLowerCase = function(str) { + return str.charAt(0).toLowerCase() + str.slice(1); + }; + + exports.stripPrefix = function(str) { + return str.replace(prefixMatch, ''); + }; + + exports.parseNumbers = function(str) { + if (!isNaN(str)) { + str = str % 1 === 0 ? parseInt(str, 10) : parseFloat(str); + } + return str; + }; + + exports.parseBooleans = function(str) { + if (/^(?:true|false)$/i.test(str)) { + str = str.toLowerCase() === 'true'; + } + return str; + }; + +}).call(this); + +},{}],496:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + "use strict"; + var builder, defaults, parser, processors, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + defaults = require('./defaults'); + + builder = require('./builder'); + + parser = require('./parser'); + + processors = require('./processors'); + + exports.defaults = defaults.defaults; + + exports.processors = processors; + + exports.ValidationError = (function(superClass) { + extend(ValidationError, superClass); + + function ValidationError(message) { + this.message = message; + } + + return ValidationError; + + })(Error); + + exports.Builder = builder.Builder; + + exports.Parser = parser.Parser; + + exports.parseString = parser.parseString; + + exports.parseStringPromise = parser.parseStringPromise; + +}).call(this); + +},{"./builder":492,"./defaults":493,"./parser":494,"./processors":495}],497:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + module.exports = { + Disconnected: 1, + Preceding: 2, + Following: 4, + Contains: 8, + ContainedBy: 16, + ImplementationSpecific: 32 + }; + +}).call(this); + +},{}],498:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + module.exports = { + Element: 1, + Attribute: 2, + Text: 3, + CData: 4, + EntityReference: 5, + EntityDeclaration: 6, + ProcessingInstruction: 7, + Comment: 8, + Document: 9, + DocType: 10, + DocumentFragment: 11, + NotationDeclaration: 12, + Declaration: 201, + Raw: 202, + AttributeDeclaration: 203, + ElementDeclaration: 204, + Dummy: 205 + }; + +}).call(this); + +},{}],499:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var assign, getValue, isArray, isEmpty, isFunction, isObject, isPlainObject, + slice = [].slice, + hasProp = {}.hasOwnProperty; + + assign = function() { + var i, key, len, source, sources, target; + target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : []; + if (isFunction(Object.assign)) { + Object.assign.apply(null, arguments); + } else { + for (i = 0, len = sources.length; i < len; i++) { + source = sources[i]; + if (source != null) { + for (key in source) { + if (!hasProp.call(source, key)) continue; + target[key] = source[key]; + } + } + } + } + return target; + }; + + isFunction = function(val) { + return !!val && Object.prototype.toString.call(val) === '[object Function]'; + }; + + isObject = function(val) { + var ref; + return !!val && ((ref = typeof val) === 'function' || ref === 'object'); + }; + + isArray = function(val) { + if (isFunction(Array.isArray)) { + return Array.isArray(val); + } else { + return Object.prototype.toString.call(val) === '[object Array]'; + } + }; + + isEmpty = function(val) { + var key; + if (isArray(val)) { + return !val.length; + } else { + for (key in val) { + if (!hasProp.call(val, key)) continue; + return false; + } + return true; + } + }; + + isPlainObject = function(val) { + var ctor, proto; + return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object)); + }; + + getValue = function(obj) { + if (isFunction(obj.valueOf)) { + return obj.valueOf(); + } else { + return obj; + } + }; + + module.exports.assign = assign; + + module.exports.isFunction = isFunction; + + module.exports.isObject = isObject; + + module.exports.isArray = isArray; + + module.exports.isEmpty = isEmpty; + + module.exports.isPlainObject = isPlainObject; + + module.exports.getValue = getValue; + +}).call(this); + +},{}],500:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + module.exports = { + None: 0, + OpenTag: 1, + InsideTag: 2, + CloseTag: 3 + }; + +}).call(this); + +},{}],501:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLAttribute, XMLNode; + + NodeType = require('./NodeType'); + + XMLNode = require('./XMLNode'); + + module.exports = XMLAttribute = (function() { + function XMLAttribute(parent, name, value) { + this.parent = parent; + if (this.parent) { + this.options = this.parent.options; + this.stringify = this.parent.stringify; + } + if (name == null) { + throw new Error("Missing attribute name. " + this.debugInfo(name)); + } + this.name = this.stringify.name(name); + this.value = this.stringify.attValue(value); + this.type = NodeType.Attribute; + this.isId = false; + this.schemaTypeInfo = null; + } + + Object.defineProperty(XMLAttribute.prototype, 'nodeType', { + get: function() { + return this.type; + } + }); + + Object.defineProperty(XMLAttribute.prototype, 'ownerElement', { + get: function() { + return this.parent; + } + }); + + Object.defineProperty(XMLAttribute.prototype, 'textContent', { + get: function() { + return this.value; + }, + set: function(value) { + return this.value = value || ''; + } + }); + + Object.defineProperty(XMLAttribute.prototype, 'namespaceURI', { + get: function() { + return ''; + } + }); + + Object.defineProperty(XMLAttribute.prototype, 'prefix', { + get: function() { + return ''; + } + }); + + Object.defineProperty(XMLAttribute.prototype, 'localName', { + get: function() { + return this.name; + } + }); + + Object.defineProperty(XMLAttribute.prototype, 'specified', { + get: function() { + return true; + } + }); + + XMLAttribute.prototype.clone = function() { + return Object.create(this); + }; + + XMLAttribute.prototype.toString = function(options) { + return this.options.writer.attribute(this, this.options.writer.filterOptions(options)); + }; + + XMLAttribute.prototype.debugInfo = function(name) { + name = name || this.name; + if (name == null) { + return "parent: <" + this.parent.name + ">"; + } else { + return "attribute: {" + name + "}, parent: <" + this.parent.name + ">"; + } + }; + + XMLAttribute.prototype.isEqualNode = function(node) { + if (node.namespaceURI !== this.namespaceURI) { + return false; + } + if (node.prefix !== this.prefix) { + return false; + } + if (node.localName !== this.localName) { + return false; + } + if (node.value !== this.value) { + return false; + } + return true; + }; + + return XMLAttribute; + + })(); + +}).call(this); + +},{"./NodeType":498,"./XMLNode":520}],502:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLCData, XMLCharacterData, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + NodeType = require('./NodeType'); + + XMLCharacterData = require('./XMLCharacterData'); + + module.exports = XMLCData = (function(superClass) { + extend(XMLCData, superClass); + + function XMLCData(parent, text) { + XMLCData.__super__.constructor.call(this, parent); + if (text == null) { + throw new Error("Missing CDATA text. " + this.debugInfo()); + } + this.name = "#cdata-section"; + this.type = NodeType.CData; + this.value = this.stringify.cdata(text); + } + + XMLCData.prototype.clone = function() { + return Object.create(this); + }; + + XMLCData.prototype.toString = function(options) { + return this.options.writer.cdata(this, this.options.writer.filterOptions(options)); + }; + + return XMLCData; + + })(XMLCharacterData); + +}).call(this); + +},{"./NodeType":498,"./XMLCharacterData":503}],503:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var XMLCharacterData, XMLNode, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + XMLNode = require('./XMLNode'); + + module.exports = XMLCharacterData = (function(superClass) { + extend(XMLCharacterData, superClass); + + function XMLCharacterData(parent) { + XMLCharacterData.__super__.constructor.call(this, parent); + this.value = ''; + } + + Object.defineProperty(XMLCharacterData.prototype, 'data', { + get: function() { + return this.value; + }, + set: function(value) { + return this.value = value || ''; + } + }); + + Object.defineProperty(XMLCharacterData.prototype, 'length', { + get: function() { + return this.value.length; + } + }); + + Object.defineProperty(XMLCharacterData.prototype, 'textContent', { + get: function() { + return this.value; + }, + set: function(value) { + return this.value = value || ''; + } + }); + + XMLCharacterData.prototype.clone = function() { + return Object.create(this); + }; + + XMLCharacterData.prototype.substringData = function(offset, count) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLCharacterData.prototype.appendData = function(arg) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLCharacterData.prototype.insertData = function(offset, arg) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLCharacterData.prototype.deleteData = function(offset, count) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLCharacterData.prototype.replaceData = function(offset, count, arg) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLCharacterData.prototype.isEqualNode = function(node) { + if (!XMLCharacterData.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) { + return false; + } + if (node.data !== this.data) { + return false; + } + return true; + }; + + return XMLCharacterData; + + })(XMLNode); + +}).call(this); + +},{"./XMLNode":520}],504:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLCharacterData, XMLComment, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + NodeType = require('./NodeType'); + + XMLCharacterData = require('./XMLCharacterData'); + + module.exports = XMLComment = (function(superClass) { + extend(XMLComment, superClass); + + function XMLComment(parent, text) { + XMLComment.__super__.constructor.call(this, parent); + if (text == null) { + throw new Error("Missing comment text. " + this.debugInfo()); + } + this.name = "#comment"; + this.type = NodeType.Comment; + this.value = this.stringify.comment(text); + } + + XMLComment.prototype.clone = function() { + return Object.create(this); + }; + + XMLComment.prototype.toString = function(options) { + return this.options.writer.comment(this, this.options.writer.filterOptions(options)); + }; + + return XMLComment; + + })(XMLCharacterData); + +}).call(this); + +},{"./NodeType":498,"./XMLCharacterData":503}],505:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var XMLDOMConfiguration, XMLDOMErrorHandler, XMLDOMStringList; + + XMLDOMErrorHandler = require('./XMLDOMErrorHandler'); + + XMLDOMStringList = require('./XMLDOMStringList'); + + module.exports = XMLDOMConfiguration = (function() { + function XMLDOMConfiguration() { + var clonedSelf; + this.defaultParams = { + "canonical-form": false, + "cdata-sections": false, + "comments": false, + "datatype-normalization": false, + "element-content-whitespace": true, + "entities": true, + "error-handler": new XMLDOMErrorHandler(), + "infoset": true, + "validate-if-schema": false, + "namespaces": true, + "namespace-declarations": true, + "normalize-characters": false, + "schema-location": '', + "schema-type": '', + "split-cdata-sections": true, + "validate": false, + "well-formed": true + }; + this.params = clonedSelf = Object.create(this.defaultParams); + } + + Object.defineProperty(XMLDOMConfiguration.prototype, 'parameterNames', { + get: function() { + return new XMLDOMStringList(Object.keys(this.defaultParams)); + } + }); + + XMLDOMConfiguration.prototype.getParameter = function(name) { + if (this.params.hasOwnProperty(name)) { + return this.params[name]; + } else { + return null; + } + }; + + XMLDOMConfiguration.prototype.canSetParameter = function(name, value) { + return true; + }; + + XMLDOMConfiguration.prototype.setParameter = function(name, value) { + if (value != null) { + return this.params[name] = value; + } else { + return delete this.params[name]; + } + }; + + return XMLDOMConfiguration; + + })(); + +}).call(this); + +},{"./XMLDOMErrorHandler":506,"./XMLDOMStringList":508}],506:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var XMLDOMErrorHandler; + + module.exports = XMLDOMErrorHandler = (function() { + function XMLDOMErrorHandler() {} + + XMLDOMErrorHandler.prototype.handleError = function(error) { + throw new Error(error); + }; + + return XMLDOMErrorHandler; + + })(); + +}).call(this); + +},{}],507:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var XMLDOMImplementation; + + module.exports = XMLDOMImplementation = (function() { + function XMLDOMImplementation() {} + + XMLDOMImplementation.prototype.hasFeature = function(feature, version) { + return true; + }; + + XMLDOMImplementation.prototype.createDocumentType = function(qualifiedName, publicId, systemId) { + throw new Error("This DOM method is not implemented."); + }; + + XMLDOMImplementation.prototype.createDocument = function(namespaceURI, qualifiedName, doctype) { + throw new Error("This DOM method is not implemented."); + }; + + XMLDOMImplementation.prototype.createHTMLDocument = function(title) { + throw new Error("This DOM method is not implemented."); + }; + + XMLDOMImplementation.prototype.getFeature = function(feature, version) { + throw new Error("This DOM method is not implemented."); + }; + + return XMLDOMImplementation; + + })(); + +}).call(this); + +},{}],508:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var XMLDOMStringList; + + module.exports = XMLDOMStringList = (function() { + function XMLDOMStringList(arr) { + this.arr = arr || []; + } + + Object.defineProperty(XMLDOMStringList.prototype, 'length', { + get: function() { + return this.arr.length; + } + }); + + XMLDOMStringList.prototype.item = function(index) { + return this.arr[index] || null; + }; + + XMLDOMStringList.prototype.contains = function(str) { + return this.arr.indexOf(str) !== -1; + }; + + return XMLDOMStringList; + + })(); + +}).call(this); + +},{}],509:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLDTDAttList, XMLNode, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + XMLNode = require('./XMLNode'); + + NodeType = require('./NodeType'); + + module.exports = XMLDTDAttList = (function(superClass) { + extend(XMLDTDAttList, superClass); + + function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) { + XMLDTDAttList.__super__.constructor.call(this, parent); + if (elementName == null) { + throw new Error("Missing DTD element name. " + this.debugInfo()); + } + if (attributeName == null) { + throw new Error("Missing DTD attribute name. " + this.debugInfo(elementName)); + } + if (!attributeType) { + throw new Error("Missing DTD attribute type. " + this.debugInfo(elementName)); + } + if (!defaultValueType) { + throw new Error("Missing DTD attribute default. " + this.debugInfo(elementName)); + } + if (defaultValueType.indexOf('#') !== 0) { + defaultValueType = '#' + defaultValueType; + } + if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) { + throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT. " + this.debugInfo(elementName)); + } + if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) { + throw new Error("Default value only applies to #FIXED or #DEFAULT. " + this.debugInfo(elementName)); + } + this.elementName = this.stringify.name(elementName); + this.type = NodeType.AttributeDeclaration; + this.attributeName = this.stringify.name(attributeName); + this.attributeType = this.stringify.dtdAttType(attributeType); + if (defaultValue) { + this.defaultValue = this.stringify.dtdAttDefault(defaultValue); + } + this.defaultValueType = defaultValueType; + } + + XMLDTDAttList.prototype.toString = function(options) { + return this.options.writer.dtdAttList(this, this.options.writer.filterOptions(options)); + }; + + return XMLDTDAttList; + + })(XMLNode); + +}).call(this); + +},{"./NodeType":498,"./XMLNode":520}],510:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLDTDElement, XMLNode, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + XMLNode = require('./XMLNode'); + + NodeType = require('./NodeType'); + + module.exports = XMLDTDElement = (function(superClass) { + extend(XMLDTDElement, superClass); + + function XMLDTDElement(parent, name, value) { + XMLDTDElement.__super__.constructor.call(this, parent); + if (name == null) { + throw new Error("Missing DTD element name. " + this.debugInfo()); + } + if (!value) { + value = '(#PCDATA)'; + } + if (Array.isArray(value)) { + value = '(' + value.join(',') + ')'; + } + this.name = this.stringify.name(name); + this.type = NodeType.ElementDeclaration; + this.value = this.stringify.dtdElementValue(value); + } + + XMLDTDElement.prototype.toString = function(options) { + return this.options.writer.dtdElement(this, this.options.writer.filterOptions(options)); + }; + + return XMLDTDElement; + + })(XMLNode); + +}).call(this); + +},{"./NodeType":498,"./XMLNode":520}],511:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLDTDEntity, XMLNode, isObject, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + isObject = require('./Utility').isObject; + + XMLNode = require('./XMLNode'); + + NodeType = require('./NodeType'); + + module.exports = XMLDTDEntity = (function(superClass) { + extend(XMLDTDEntity, superClass); + + function XMLDTDEntity(parent, pe, name, value) { + XMLDTDEntity.__super__.constructor.call(this, parent); + if (name == null) { + throw new Error("Missing DTD entity name. " + this.debugInfo(name)); + } + if (value == null) { + throw new Error("Missing DTD entity value. " + this.debugInfo(name)); + } + this.pe = !!pe; + this.name = this.stringify.name(name); + this.type = NodeType.EntityDeclaration; + if (!isObject(value)) { + this.value = this.stringify.dtdEntityValue(value); + this.internal = true; + } else { + if (!value.pubID && !value.sysID) { + throw new Error("Public and/or system identifiers are required for an external entity. " + this.debugInfo(name)); + } + if (value.pubID && !value.sysID) { + throw new Error("System identifier is required for a public external entity. " + this.debugInfo(name)); + } + this.internal = false; + if (value.pubID != null) { + this.pubID = this.stringify.dtdPubID(value.pubID); + } + if (value.sysID != null) { + this.sysID = this.stringify.dtdSysID(value.sysID); + } + if (value.nData != null) { + this.nData = this.stringify.dtdNData(value.nData); + } + if (this.pe && this.nData) { + throw new Error("Notation declaration is not allowed in a parameter entity. " + this.debugInfo(name)); + } + } + } + + Object.defineProperty(XMLDTDEntity.prototype, 'publicId', { + get: function() { + return this.pubID; + } + }); + + Object.defineProperty(XMLDTDEntity.prototype, 'systemId', { + get: function() { + return this.sysID; + } + }); + + Object.defineProperty(XMLDTDEntity.prototype, 'notationName', { + get: function() { + return this.nData || null; + } + }); + + Object.defineProperty(XMLDTDEntity.prototype, 'inputEncoding', { + get: function() { + return null; + } + }); + + Object.defineProperty(XMLDTDEntity.prototype, 'xmlEncoding', { + get: function() { + return null; + } + }); + + Object.defineProperty(XMLDTDEntity.prototype, 'xmlVersion', { + get: function() { + return null; + } + }); + + XMLDTDEntity.prototype.toString = function(options) { + return this.options.writer.dtdEntity(this, this.options.writer.filterOptions(options)); + }; + + return XMLDTDEntity; + + })(XMLNode); + +}).call(this); + +},{"./NodeType":498,"./Utility":499,"./XMLNode":520}],512:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLDTDNotation, XMLNode, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + XMLNode = require('./XMLNode'); + + NodeType = require('./NodeType'); + + module.exports = XMLDTDNotation = (function(superClass) { + extend(XMLDTDNotation, superClass); + + function XMLDTDNotation(parent, name, value) { + XMLDTDNotation.__super__.constructor.call(this, parent); + if (name == null) { + throw new Error("Missing DTD notation name. " + this.debugInfo(name)); + } + if (!value.pubID && !value.sysID) { + throw new Error("Public or system identifiers are required for an external entity. " + this.debugInfo(name)); + } + this.name = this.stringify.name(name); + this.type = NodeType.NotationDeclaration; + if (value.pubID != null) { + this.pubID = this.stringify.dtdPubID(value.pubID); + } + if (value.sysID != null) { + this.sysID = this.stringify.dtdSysID(value.sysID); + } + } + + Object.defineProperty(XMLDTDNotation.prototype, 'publicId', { + get: function() { + return this.pubID; + } + }); + + Object.defineProperty(XMLDTDNotation.prototype, 'systemId', { + get: function() { + return this.sysID; + } + }); + + XMLDTDNotation.prototype.toString = function(options) { + return this.options.writer.dtdNotation(this, this.options.writer.filterOptions(options)); + }; + + return XMLDTDNotation; + + })(XMLNode); + +}).call(this); + +},{"./NodeType":498,"./XMLNode":520}],513:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLDeclaration, XMLNode, isObject, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + isObject = require('./Utility').isObject; + + XMLNode = require('./XMLNode'); + + NodeType = require('./NodeType'); + + module.exports = XMLDeclaration = (function(superClass) { + extend(XMLDeclaration, superClass); + + function XMLDeclaration(parent, version, encoding, standalone) { + var ref; + XMLDeclaration.__super__.constructor.call(this, parent); + if (isObject(version)) { + ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone; + } + if (!version) { + version = '1.0'; + } + this.type = NodeType.Declaration; + this.version = this.stringify.xmlVersion(version); + if (encoding != null) { + this.encoding = this.stringify.xmlEncoding(encoding); + } + if (standalone != null) { + this.standalone = this.stringify.xmlStandalone(standalone); + } + } + + XMLDeclaration.prototype.toString = function(options) { + return this.options.writer.declaration(this, this.options.writer.filterOptions(options)); + }; + + return XMLDeclaration; + + })(XMLNode); + +}).call(this); + +},{"./NodeType":498,"./Utility":499,"./XMLNode":520}],514:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNamedNodeMap, XMLNode, isObject, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + isObject = require('./Utility').isObject; + + XMLNode = require('./XMLNode'); + + NodeType = require('./NodeType'); + + XMLDTDAttList = require('./XMLDTDAttList'); + + XMLDTDEntity = require('./XMLDTDEntity'); + + XMLDTDElement = require('./XMLDTDElement'); + + XMLDTDNotation = require('./XMLDTDNotation'); + + XMLNamedNodeMap = require('./XMLNamedNodeMap'); + + module.exports = XMLDocType = (function(superClass) { + extend(XMLDocType, superClass); + + function XMLDocType(parent, pubID, sysID) { + var child, i, len, ref, ref1, ref2; + XMLDocType.__super__.constructor.call(this, parent); + this.type = NodeType.DocType; + if (parent.children) { + ref = parent.children; + for (i = 0, len = ref.length; i < len; i++) { + child = ref[i]; + if (child.type === NodeType.Element) { + this.name = child.name; + break; + } + } + } + this.documentObject = parent; + if (isObject(pubID)) { + ref1 = pubID, pubID = ref1.pubID, sysID = ref1.sysID; + } + if (sysID == null) { + ref2 = [pubID, sysID], sysID = ref2[0], pubID = ref2[1]; + } + if (pubID != null) { + this.pubID = this.stringify.dtdPubID(pubID); + } + if (sysID != null) { + this.sysID = this.stringify.dtdSysID(sysID); + } + } + + Object.defineProperty(XMLDocType.prototype, 'entities', { + get: function() { + var child, i, len, nodes, ref; + nodes = {}; + ref = this.children; + for (i = 0, len = ref.length; i < len; i++) { + child = ref[i]; + if ((child.type === NodeType.EntityDeclaration) && !child.pe) { + nodes[child.name] = child; + } + } + return new XMLNamedNodeMap(nodes); + } + }); + + Object.defineProperty(XMLDocType.prototype, 'notations', { + get: function() { + var child, i, len, nodes, ref; + nodes = {}; + ref = this.children; + for (i = 0, len = ref.length; i < len; i++) { + child = ref[i]; + if (child.type === NodeType.NotationDeclaration) { + nodes[child.name] = child; + } + } + return new XMLNamedNodeMap(nodes); + } + }); + + Object.defineProperty(XMLDocType.prototype, 'publicId', { + get: function() { + return this.pubID; + } + }); + + Object.defineProperty(XMLDocType.prototype, 'systemId', { + get: function() { + return this.sysID; + } + }); + + Object.defineProperty(XMLDocType.prototype, 'internalSubset', { + get: function() { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + } + }); + + XMLDocType.prototype.element = function(name, value) { + var child; + child = new XMLDTDElement(this, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { + var child; + child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.entity = function(name, value) { + var child; + child = new XMLDTDEntity(this, false, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.pEntity = function(name, value) { + var child; + child = new XMLDTDEntity(this, true, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.notation = function(name, value) { + var child; + child = new XMLDTDNotation(this, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.toString = function(options) { + return this.options.writer.docType(this, this.options.writer.filterOptions(options)); + }; + + XMLDocType.prototype.ele = function(name, value) { + return this.element(name, value); + }; + + XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { + return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue); + }; + + XMLDocType.prototype.ent = function(name, value) { + return this.entity(name, value); + }; + + XMLDocType.prototype.pent = function(name, value) { + return this.pEntity(name, value); + }; + + XMLDocType.prototype.not = function(name, value) { + return this.notation(name, value); + }; + + XMLDocType.prototype.up = function() { + return this.root() || this.documentObject; + }; + + XMLDocType.prototype.isEqualNode = function(node) { + if (!XMLDocType.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) { + return false; + } + if (node.name !== this.name) { + return false; + } + if (node.publicId !== this.publicId) { + return false; + } + if (node.systemId !== this.systemId) { + return false; + } + return true; + }; + + return XMLDocType; + + })(XMLNode); + +}).call(this); + +},{"./NodeType":498,"./Utility":499,"./XMLDTDAttList":509,"./XMLDTDElement":510,"./XMLDTDEntity":511,"./XMLDTDNotation":512,"./XMLNamedNodeMap":519,"./XMLNode":520}],515:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLDOMConfiguration, XMLDOMImplementation, XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + isPlainObject = require('./Utility').isPlainObject; + + XMLDOMImplementation = require('./XMLDOMImplementation'); + + XMLDOMConfiguration = require('./XMLDOMConfiguration'); + + XMLNode = require('./XMLNode'); + + NodeType = require('./NodeType'); + + XMLStringifier = require('./XMLStringifier'); + + XMLStringWriter = require('./XMLStringWriter'); + + module.exports = XMLDocument = (function(superClass) { + extend(XMLDocument, superClass); + + function XMLDocument(options) { + XMLDocument.__super__.constructor.call(this, null); + this.name = "#document"; + this.type = NodeType.Document; + this.documentURI = null; + this.domConfig = new XMLDOMConfiguration(); + options || (options = {}); + if (!options.writer) { + options.writer = new XMLStringWriter(); + } + this.options = options; + this.stringify = new XMLStringifier(options); + } + + Object.defineProperty(XMLDocument.prototype, 'implementation', { + value: new XMLDOMImplementation() + }); + + Object.defineProperty(XMLDocument.prototype, 'doctype', { + get: function() { + var child, i, len, ref; + ref = this.children; + for (i = 0, len = ref.length; i < len; i++) { + child = ref[i]; + if (child.type === NodeType.DocType) { + return child; + } + } + return null; + } + }); + + Object.defineProperty(XMLDocument.prototype, 'documentElement', { + get: function() { + return this.rootObject || null; + } + }); + + Object.defineProperty(XMLDocument.prototype, 'inputEncoding', { + get: function() { + return null; + } + }); + + Object.defineProperty(XMLDocument.prototype, 'strictErrorChecking', { + get: function() { + return false; + } + }); + + Object.defineProperty(XMLDocument.prototype, 'xmlEncoding', { + get: function() { + if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) { + return this.children[0].encoding; + } else { + return null; + } + } + }); + + Object.defineProperty(XMLDocument.prototype, 'xmlStandalone', { + get: function() { + if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) { + return this.children[0].standalone === 'yes'; + } else { + return false; + } + } + }); + + Object.defineProperty(XMLDocument.prototype, 'xmlVersion', { + get: function() { + if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) { + return this.children[0].version; + } else { + return "1.0"; + } + } + }); + + Object.defineProperty(XMLDocument.prototype, 'URL', { + get: function() { + return this.documentURI; + } + }); + + Object.defineProperty(XMLDocument.prototype, 'origin', { + get: function() { + return null; + } + }); + + Object.defineProperty(XMLDocument.prototype, 'compatMode', { + get: function() { + return null; + } + }); + + Object.defineProperty(XMLDocument.prototype, 'characterSet', { + get: function() { + return null; + } + }); + + Object.defineProperty(XMLDocument.prototype, 'contentType', { + get: function() { + return null; + } + }); + + XMLDocument.prototype.end = function(writer) { + var writerOptions; + writerOptions = {}; + if (!writer) { + writer = this.options.writer; + } else if (isPlainObject(writer)) { + writerOptions = writer; + writer = this.options.writer; + } + return writer.document(this, writer.filterOptions(writerOptions)); + }; + + XMLDocument.prototype.toString = function(options) { + return this.options.writer.document(this, this.options.writer.filterOptions(options)); + }; + + XMLDocument.prototype.createElement = function(tagName) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.createDocumentFragment = function() { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.createTextNode = function(data) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.createComment = function(data) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.createCDATASection = function(data) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.createProcessingInstruction = function(target, data) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.createAttribute = function(name) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.createEntityReference = function(name) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.getElementsByTagName = function(tagname) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.importNode = function(importedNode, deep) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.createElementNS = function(namespaceURI, qualifiedName) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.createAttributeNS = function(namespaceURI, qualifiedName) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.getElementsByTagNameNS = function(namespaceURI, localName) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.getElementById = function(elementId) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.adoptNode = function(source) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.normalizeDocument = function() { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.renameNode = function(node, namespaceURI, qualifiedName) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.getElementsByClassName = function(classNames) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.createEvent = function(eventInterface) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.createRange = function() { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.createNodeIterator = function(root, whatToShow, filter) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLDocument.prototype.createTreeWalker = function(root, whatToShow, filter) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + return XMLDocument; + + })(XMLNode); + +}).call(this); + +},{"./NodeType":498,"./Utility":499,"./XMLDOMConfiguration":505,"./XMLDOMImplementation":507,"./XMLNode":520,"./XMLStringWriter":525,"./XMLStringifier":526}],516:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, WriterState, XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocument, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, getValue, isFunction, isObject, isPlainObject, ref, + hasProp = {}.hasOwnProperty; + + ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject, getValue = ref.getValue; + + NodeType = require('./NodeType'); + + XMLDocument = require('./XMLDocument'); + + XMLElement = require('./XMLElement'); + + XMLCData = require('./XMLCData'); + + XMLComment = require('./XMLComment'); + + XMLRaw = require('./XMLRaw'); + + XMLText = require('./XMLText'); + + XMLProcessingInstruction = require('./XMLProcessingInstruction'); + + XMLDeclaration = require('./XMLDeclaration'); + + XMLDocType = require('./XMLDocType'); + + XMLDTDAttList = require('./XMLDTDAttList'); + + XMLDTDEntity = require('./XMLDTDEntity'); + + XMLDTDElement = require('./XMLDTDElement'); + + XMLDTDNotation = require('./XMLDTDNotation'); + + XMLAttribute = require('./XMLAttribute'); + + XMLStringifier = require('./XMLStringifier'); + + XMLStringWriter = require('./XMLStringWriter'); + + WriterState = require('./WriterState'); + + module.exports = XMLDocumentCB = (function() { + function XMLDocumentCB(options, onData, onEnd) { + var writerOptions; + this.name = "?xml"; + this.type = NodeType.Document; + options || (options = {}); + writerOptions = {}; + if (!options.writer) { + options.writer = new XMLStringWriter(); + } else if (isPlainObject(options.writer)) { + writerOptions = options.writer; + options.writer = new XMLStringWriter(); + } + this.options = options; + this.writer = options.writer; + this.writerOptions = this.writer.filterOptions(writerOptions); + this.stringify = new XMLStringifier(options); + this.onDataCallback = onData || function() {}; + this.onEndCallback = onEnd || function() {}; + this.currentNode = null; + this.currentLevel = -1; + this.openTags = {}; + this.documentStarted = false; + this.documentCompleted = false; + this.root = null; + } + + XMLDocumentCB.prototype.createChildNode = function(node) { + var att, attName, attributes, child, i, len, ref1, ref2; + switch (node.type) { + case NodeType.CData: + this.cdata(node.value); + break; + case NodeType.Comment: + this.comment(node.value); + break; + case NodeType.Element: + attributes = {}; + ref1 = node.attribs; + for (attName in ref1) { + if (!hasProp.call(ref1, attName)) continue; + att = ref1[attName]; + attributes[attName] = att.value; + } + this.node(node.name, attributes); + break; + case NodeType.Dummy: + this.dummy(); + break; + case NodeType.Raw: + this.raw(node.value); + break; + case NodeType.Text: + this.text(node.value); + break; + case NodeType.ProcessingInstruction: + this.instruction(node.target, node.value); + break; + default: + throw new Error("This XML node type is not supported in a JS object: " + node.constructor.name); + } + ref2 = node.children; + for (i = 0, len = ref2.length; i < len; i++) { + child = ref2[i]; + this.createChildNode(child); + if (child.type === NodeType.Element) { + this.up(); + } + } + return this; + }; + + XMLDocumentCB.prototype.dummy = function() { + return this; + }; + + XMLDocumentCB.prototype.node = function(name, attributes, text) { + var ref1; + if (name == null) { + throw new Error("Missing node name."); + } + if (this.root && this.currentLevel === -1) { + throw new Error("Document can only have one root node. " + this.debugInfo(name)); + } + this.openCurrent(); + name = getValue(name); + if (attributes == null) { + attributes = {}; + } + attributes = getValue(attributes); + if (!isObject(attributes)) { + ref1 = [attributes, text], text = ref1[0], attributes = ref1[1]; + } + this.currentNode = new XMLElement(this, name, attributes); + this.currentNode.children = false; + this.currentLevel++; + this.openTags[this.currentLevel] = this.currentNode; + if (text != null) { + this.text(text); + } + return this; + }; + + XMLDocumentCB.prototype.element = function(name, attributes, text) { + var child, i, len, oldValidationFlag, ref1, root; + if (this.currentNode && this.currentNode.type === NodeType.DocType) { + this.dtdElement.apply(this, arguments); + } else { + if (Array.isArray(name) || isObject(name) || isFunction(name)) { + oldValidationFlag = this.options.noValidation; + this.options.noValidation = true; + root = new XMLDocument(this.options).element('TEMP_ROOT'); + root.element(name); + this.options.noValidation = oldValidationFlag; + ref1 = root.children; + for (i = 0, len = ref1.length; i < len; i++) { + child = ref1[i]; + this.createChildNode(child); + if (child.type === NodeType.Element) { + this.up(); + } + } + } else { + this.node(name, attributes, text); + } + } + return this; + }; + + XMLDocumentCB.prototype.attribute = function(name, value) { + var attName, attValue; + if (!this.currentNode || this.currentNode.children) { + throw new Error("att() can only be used immediately after an ele() call in callback mode. " + this.debugInfo(name)); + } + if (name != null) { + name = getValue(name); + } + if (isObject(name)) { + for (attName in name) { + if (!hasProp.call(name, attName)) continue; + attValue = name[attName]; + this.attribute(attName, attValue); + } + } else { + if (isFunction(value)) { + value = value.apply(); + } + if (this.options.keepNullAttributes && (value == null)) { + this.currentNode.attribs[name] = new XMLAttribute(this, name, ""); + } else if (value != null) { + this.currentNode.attribs[name] = new XMLAttribute(this, name, value); + } + } + return this; + }; + + XMLDocumentCB.prototype.text = function(value) { + var node; + this.openCurrent(); + node = new XMLText(this, value); + this.onData(this.writer.text(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1); + return this; + }; + + XMLDocumentCB.prototype.cdata = function(value) { + var node; + this.openCurrent(); + node = new XMLCData(this, value); + this.onData(this.writer.cdata(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1); + return this; + }; + + XMLDocumentCB.prototype.comment = function(value) { + var node; + this.openCurrent(); + node = new XMLComment(this, value); + this.onData(this.writer.comment(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1); + return this; + }; + + XMLDocumentCB.prototype.raw = function(value) { + var node; + this.openCurrent(); + node = new XMLRaw(this, value); + this.onData(this.writer.raw(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1); + return this; + }; + + XMLDocumentCB.prototype.instruction = function(target, value) { + var i, insTarget, insValue, len, node; + this.openCurrent(); + if (target != null) { + target = getValue(target); + } + if (value != null) { + value = getValue(value); + } + if (Array.isArray(target)) { + for (i = 0, len = target.length; i < len; i++) { + insTarget = target[i]; + this.instruction(insTarget); + } + } else if (isObject(target)) { + for (insTarget in target) { + if (!hasProp.call(target, insTarget)) continue; + insValue = target[insTarget]; + this.instruction(insTarget, insValue); + } + } else { + if (isFunction(value)) { + value = value.apply(); + } + node = new XMLProcessingInstruction(this, target, value); + this.onData(this.writer.processingInstruction(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1); + } + return this; + }; + + XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) { + var node; + this.openCurrent(); + if (this.documentStarted) { + throw new Error("declaration() must be the first node."); + } + node = new XMLDeclaration(this, version, encoding, standalone); + this.onData(this.writer.declaration(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1); + return this; + }; + + XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) { + this.openCurrent(); + if (root == null) { + throw new Error("Missing root node name."); + } + if (this.root) { + throw new Error("dtd() must come before the root node."); + } + this.currentNode = new XMLDocType(this, pubID, sysID); + this.currentNode.rootNodeName = root; + this.currentNode.children = false; + this.currentLevel++; + this.openTags[this.currentLevel] = this.currentNode; + return this; + }; + + XMLDocumentCB.prototype.dtdElement = function(name, value) { + var node; + this.openCurrent(); + node = new XMLDTDElement(this, name, value); + this.onData(this.writer.dtdElement(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1); + return this; + }; + + XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { + var node; + this.openCurrent(); + node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue); + this.onData(this.writer.dtdAttList(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1); + return this; + }; + + XMLDocumentCB.prototype.entity = function(name, value) { + var node; + this.openCurrent(); + node = new XMLDTDEntity(this, false, name, value); + this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1); + return this; + }; + + XMLDocumentCB.prototype.pEntity = function(name, value) { + var node; + this.openCurrent(); + node = new XMLDTDEntity(this, true, name, value); + this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1); + return this; + }; + + XMLDocumentCB.prototype.notation = function(name, value) { + var node; + this.openCurrent(); + node = new XMLDTDNotation(this, name, value); + this.onData(this.writer.dtdNotation(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1); + return this; + }; + + XMLDocumentCB.prototype.up = function() { + if (this.currentLevel < 0) { + throw new Error("The document node has no parent."); + } + if (this.currentNode) { + if (this.currentNode.children) { + this.closeNode(this.currentNode); + } else { + this.openNode(this.currentNode); + } + this.currentNode = null; + } else { + this.closeNode(this.openTags[this.currentLevel]); + } + delete this.openTags[this.currentLevel]; + this.currentLevel--; + return this; + }; + + XMLDocumentCB.prototype.end = function() { + while (this.currentLevel >= 0) { + this.up(); + } + return this.onEnd(); + }; + + XMLDocumentCB.prototype.openCurrent = function() { + if (this.currentNode) { + this.currentNode.children = true; + return this.openNode(this.currentNode); + } + }; + + XMLDocumentCB.prototype.openNode = function(node) { + var att, chunk, name, ref1; + if (!node.isOpen) { + if (!this.root && this.currentLevel === 0 && node.type === NodeType.Element) { + this.root = node; + } + chunk = ''; + if (node.type === NodeType.Element) { + this.writerOptions.state = WriterState.OpenTag; + chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<' + node.name; + ref1 = node.attribs; + for (name in ref1) { + if (!hasProp.call(ref1, name)) continue; + att = ref1[name]; + chunk += this.writer.attribute(att, this.writerOptions, this.currentLevel); + } + chunk += (node.children ? '>' : '/>') + this.writer.endline(node, this.writerOptions, this.currentLevel); + this.writerOptions.state = WriterState.InsideTag; + } else { + this.writerOptions.state = WriterState.OpenTag; + chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<!DOCTYPE ' + node.rootNodeName; + if (node.pubID && node.sysID) { + chunk += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"'; + } else if (node.sysID) { + chunk += ' SYSTEM "' + node.sysID + '"'; + } + if (node.children) { + chunk += ' ['; + this.writerOptions.state = WriterState.InsideTag; + } else { + this.writerOptions.state = WriterState.CloseTag; + chunk += '>'; + } + chunk += this.writer.endline(node, this.writerOptions, this.currentLevel); + } + this.onData(chunk, this.currentLevel); + return node.isOpen = true; + } + }; + + XMLDocumentCB.prototype.closeNode = function(node) { + var chunk; + if (!node.isClosed) { + chunk = ''; + this.writerOptions.state = WriterState.CloseTag; + if (node.type === NodeType.Element) { + chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '</' + node.name + '>' + this.writer.endline(node, this.writerOptions, this.currentLevel); + } else { + chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + ']>' + this.writer.endline(node, this.writerOptions, this.currentLevel); + } + this.writerOptions.state = WriterState.None; + this.onData(chunk, this.currentLevel); + return node.isClosed = true; + } + }; + + XMLDocumentCB.prototype.onData = function(chunk, level) { + this.documentStarted = true; + return this.onDataCallback(chunk, level + 1); + }; + + XMLDocumentCB.prototype.onEnd = function() { + this.documentCompleted = true; + return this.onEndCallback(); + }; + + XMLDocumentCB.prototype.debugInfo = function(name) { + if (name == null) { + return ""; + } else { + return "node: <" + name + ">"; + } + }; + + XMLDocumentCB.prototype.ele = function() { + return this.element.apply(this, arguments); + }; + + XMLDocumentCB.prototype.nod = function(name, attributes, text) { + return this.node(name, attributes, text); + }; + + XMLDocumentCB.prototype.txt = function(value) { + return this.text(value); + }; + + XMLDocumentCB.prototype.dat = function(value) { + return this.cdata(value); + }; + + XMLDocumentCB.prototype.com = function(value) { + return this.comment(value); + }; + + XMLDocumentCB.prototype.ins = function(target, value) { + return this.instruction(target, value); + }; + + XMLDocumentCB.prototype.dec = function(version, encoding, standalone) { + return this.declaration(version, encoding, standalone); + }; + + XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) { + return this.doctype(root, pubID, sysID); + }; + + XMLDocumentCB.prototype.e = function(name, attributes, text) { + return this.element(name, attributes, text); + }; + + XMLDocumentCB.prototype.n = function(name, attributes, text) { + return this.node(name, attributes, text); + }; + + XMLDocumentCB.prototype.t = function(value) { + return this.text(value); + }; + + XMLDocumentCB.prototype.d = function(value) { + return this.cdata(value); + }; + + XMLDocumentCB.prototype.c = function(value) { + return this.comment(value); + }; + + XMLDocumentCB.prototype.r = function(value) { + return this.raw(value); + }; + + XMLDocumentCB.prototype.i = function(target, value) { + return this.instruction(target, value); + }; + + XMLDocumentCB.prototype.att = function() { + if (this.currentNode && this.currentNode.type === NodeType.DocType) { + return this.attList.apply(this, arguments); + } else { + return this.attribute.apply(this, arguments); + } + }; + + XMLDocumentCB.prototype.a = function() { + if (this.currentNode && this.currentNode.type === NodeType.DocType) { + return this.attList.apply(this, arguments); + } else { + return this.attribute.apply(this, arguments); + } + }; + + XMLDocumentCB.prototype.ent = function(name, value) { + return this.entity(name, value); + }; + + XMLDocumentCB.prototype.pent = function(name, value) { + return this.pEntity(name, value); + }; + + XMLDocumentCB.prototype.not = function(name, value) { + return this.notation(name, value); + }; + + return XMLDocumentCB; + + })(); + +}).call(this); + +},{"./NodeType":498,"./Utility":499,"./WriterState":500,"./XMLAttribute":501,"./XMLCData":502,"./XMLComment":504,"./XMLDTDAttList":509,"./XMLDTDElement":510,"./XMLDTDEntity":511,"./XMLDTDNotation":512,"./XMLDeclaration":513,"./XMLDocType":514,"./XMLDocument":515,"./XMLElement":518,"./XMLProcessingInstruction":522,"./XMLRaw":523,"./XMLStringWriter":525,"./XMLStringifier":526,"./XMLText":527}],517:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLDummy, XMLNode, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + XMLNode = require('./XMLNode'); + + NodeType = require('./NodeType'); + + module.exports = XMLDummy = (function(superClass) { + extend(XMLDummy, superClass); + + function XMLDummy(parent) { + XMLDummy.__super__.constructor.call(this, parent); + this.type = NodeType.Dummy; + } + + XMLDummy.prototype.clone = function() { + return Object.create(this); + }; + + XMLDummy.prototype.toString = function(options) { + return ''; + }; + + return XMLDummy; + + })(XMLNode); + +}).call(this); + +},{"./NodeType":498,"./XMLNode":520}],518:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLAttribute, XMLElement, XMLNamedNodeMap, XMLNode, getValue, isFunction, isObject, ref, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, getValue = ref.getValue; + + XMLNode = require('./XMLNode'); + + NodeType = require('./NodeType'); + + XMLAttribute = require('./XMLAttribute'); + + XMLNamedNodeMap = require('./XMLNamedNodeMap'); + + module.exports = XMLElement = (function(superClass) { + extend(XMLElement, superClass); + + function XMLElement(parent, name, attributes) { + var child, j, len, ref1; + XMLElement.__super__.constructor.call(this, parent); + if (name == null) { + throw new Error("Missing element name. " + this.debugInfo()); + } + this.name = this.stringify.name(name); + this.type = NodeType.Element; + this.attribs = {}; + this.schemaTypeInfo = null; + if (attributes != null) { + this.attribute(attributes); + } + if (parent.type === NodeType.Document) { + this.isRoot = true; + this.documentObject = parent; + parent.rootObject = this; + if (parent.children) { + ref1 = parent.children; + for (j = 0, len = ref1.length; j < len; j++) { + child = ref1[j]; + if (child.type === NodeType.DocType) { + child.name = this.name; + break; + } + } + } + } + } + + Object.defineProperty(XMLElement.prototype, 'tagName', { + get: function() { + return this.name; + } + }); + + Object.defineProperty(XMLElement.prototype, 'namespaceURI', { + get: function() { + return ''; + } + }); + + Object.defineProperty(XMLElement.prototype, 'prefix', { + get: function() { + return ''; + } + }); + + Object.defineProperty(XMLElement.prototype, 'localName', { + get: function() { + return this.name; + } + }); + + Object.defineProperty(XMLElement.prototype, 'id', { + get: function() { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + } + }); + + Object.defineProperty(XMLElement.prototype, 'className', { + get: function() { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + } + }); + + Object.defineProperty(XMLElement.prototype, 'classList', { + get: function() { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + } + }); + + Object.defineProperty(XMLElement.prototype, 'attributes', { + get: function() { + if (!this.attributeMap || !this.attributeMap.nodes) { + this.attributeMap = new XMLNamedNodeMap(this.attribs); + } + return this.attributeMap; + } + }); + + XMLElement.prototype.clone = function() { + var att, attName, clonedSelf, ref1; + clonedSelf = Object.create(this); + if (clonedSelf.isRoot) { + clonedSelf.documentObject = null; + } + clonedSelf.attribs = {}; + ref1 = this.attribs; + for (attName in ref1) { + if (!hasProp.call(ref1, attName)) continue; + att = ref1[attName]; + clonedSelf.attribs[attName] = att.clone(); + } + clonedSelf.children = []; + this.children.forEach(function(child) { + var clonedChild; + clonedChild = child.clone(); + clonedChild.parent = clonedSelf; + return clonedSelf.children.push(clonedChild); + }); + return clonedSelf; + }; + + XMLElement.prototype.attribute = function(name, value) { + var attName, attValue; + if (name != null) { + name = getValue(name); + } + if (isObject(name)) { + for (attName in name) { + if (!hasProp.call(name, attName)) continue; + attValue = name[attName]; + this.attribute(attName, attValue); + } + } else { + if (isFunction(value)) { + value = value.apply(); + } + if (this.options.keepNullAttributes && (value == null)) { + this.attribs[name] = new XMLAttribute(this, name, ""); + } else if (value != null) { + this.attribs[name] = new XMLAttribute(this, name, value); + } + } + return this; + }; + + XMLElement.prototype.removeAttribute = function(name) { + var attName, j, len; + if (name == null) { + throw new Error("Missing attribute name. " + this.debugInfo()); + } + name = getValue(name); + if (Array.isArray(name)) { + for (j = 0, len = name.length; j < len; j++) { + attName = name[j]; + delete this.attribs[attName]; + } + } else { + delete this.attribs[name]; + } + return this; + }; + + XMLElement.prototype.toString = function(options) { + return this.options.writer.element(this, this.options.writer.filterOptions(options)); + }; + + XMLElement.prototype.att = function(name, value) { + return this.attribute(name, value); + }; + + XMLElement.prototype.a = function(name, value) { + return this.attribute(name, value); + }; + + XMLElement.prototype.getAttribute = function(name) { + if (this.attribs.hasOwnProperty(name)) { + return this.attribs[name].value; + } else { + return null; + } + }; + + XMLElement.prototype.setAttribute = function(name, value) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.getAttributeNode = function(name) { + if (this.attribs.hasOwnProperty(name)) { + return this.attribs[name]; + } else { + return null; + } + }; + + XMLElement.prototype.setAttributeNode = function(newAttr) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.removeAttributeNode = function(oldAttr) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.getElementsByTagName = function(name) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.getAttributeNS = function(namespaceURI, localName) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.setAttributeNS = function(namespaceURI, qualifiedName, value) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.removeAttributeNS = function(namespaceURI, localName) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.getAttributeNodeNS = function(namespaceURI, localName) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.setAttributeNodeNS = function(newAttr) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.hasAttribute = function(name) { + return this.attribs.hasOwnProperty(name); + }; + + XMLElement.prototype.hasAttributeNS = function(namespaceURI, localName) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.setIdAttribute = function(name, isId) { + if (this.attribs.hasOwnProperty(name)) { + return this.attribs[name].isId; + } else { + return isId; + } + }; + + XMLElement.prototype.setIdAttributeNS = function(namespaceURI, localName, isId) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.setIdAttributeNode = function(idAttr, isId) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.getElementsByTagName = function(tagname) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.getElementsByClassName = function(classNames) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLElement.prototype.isEqualNode = function(node) { + var i, j, ref1; + if (!XMLElement.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) { + return false; + } + if (node.namespaceURI !== this.namespaceURI) { + return false; + } + if (node.prefix !== this.prefix) { + return false; + } + if (node.localName !== this.localName) { + return false; + } + if (node.attribs.length !== this.attribs.length) { + return false; + } + for (i = j = 0, ref1 = this.attribs.length - 1; 0 <= ref1 ? j <= ref1 : j >= ref1; i = 0 <= ref1 ? ++j : --j) { + if (!this.attribs[i].isEqualNode(node.attribs[i])) { + return false; + } + } + return true; + }; + + return XMLElement; + + })(XMLNode); + +}).call(this); + +},{"./NodeType":498,"./Utility":499,"./XMLAttribute":501,"./XMLNamedNodeMap":519,"./XMLNode":520}],519:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var XMLNamedNodeMap; + + module.exports = XMLNamedNodeMap = (function() { + function XMLNamedNodeMap(nodes) { + this.nodes = nodes; + } + + Object.defineProperty(XMLNamedNodeMap.prototype, 'length', { + get: function() { + return Object.keys(this.nodes).length || 0; + } + }); + + XMLNamedNodeMap.prototype.clone = function() { + return this.nodes = null; + }; + + XMLNamedNodeMap.prototype.getNamedItem = function(name) { + return this.nodes[name]; + }; + + XMLNamedNodeMap.prototype.setNamedItem = function(node) { + var oldNode; + oldNode = this.nodes[node.nodeName]; + this.nodes[node.nodeName] = node; + return oldNode || null; + }; + + XMLNamedNodeMap.prototype.removeNamedItem = function(name) { + var oldNode; + oldNode = this.nodes[name]; + delete this.nodes[name]; + return oldNode || null; + }; + + XMLNamedNodeMap.prototype.item = function(index) { + return this.nodes[Object.keys(this.nodes)[index]] || null; + }; + + XMLNamedNodeMap.prototype.getNamedItemNS = function(namespaceURI, localName) { + throw new Error("This DOM method is not implemented."); + }; + + XMLNamedNodeMap.prototype.setNamedItemNS = function(node) { + throw new Error("This DOM method is not implemented."); + }; + + XMLNamedNodeMap.prototype.removeNamedItemNS = function(namespaceURI, localName) { + throw new Error("This DOM method is not implemented."); + }; + + return XMLNamedNodeMap; + + })(); + +}).call(this); + +},{}],520:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var DocumentPosition, NodeType, XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLNamedNodeMap, XMLNode, XMLNodeList, XMLProcessingInstruction, XMLRaw, XMLText, getValue, isEmpty, isFunction, isObject, ref1, + hasProp = {}.hasOwnProperty; + + ref1 = require('./Utility'), isObject = ref1.isObject, isFunction = ref1.isFunction, isEmpty = ref1.isEmpty, getValue = ref1.getValue; + + XMLElement = null; + + XMLCData = null; + + XMLComment = null; + + XMLDeclaration = null; + + XMLDocType = null; + + XMLRaw = null; + + XMLText = null; + + XMLProcessingInstruction = null; + + XMLDummy = null; + + NodeType = null; + + XMLNodeList = null; + + XMLNamedNodeMap = null; + + DocumentPosition = null; + + module.exports = XMLNode = (function() { + function XMLNode(parent1) { + this.parent = parent1; + if (this.parent) { + this.options = this.parent.options; + this.stringify = this.parent.stringify; + } + this.value = null; + this.children = []; + this.baseURI = null; + if (!XMLElement) { + XMLElement = require('./XMLElement'); + XMLCData = require('./XMLCData'); + XMLComment = require('./XMLComment'); + XMLDeclaration = require('./XMLDeclaration'); + XMLDocType = require('./XMLDocType'); + XMLRaw = require('./XMLRaw'); + XMLText = require('./XMLText'); + XMLProcessingInstruction = require('./XMLProcessingInstruction'); + XMLDummy = require('./XMLDummy'); + NodeType = require('./NodeType'); + XMLNodeList = require('./XMLNodeList'); + XMLNamedNodeMap = require('./XMLNamedNodeMap'); + DocumentPosition = require('./DocumentPosition'); + } + } + + Object.defineProperty(XMLNode.prototype, 'nodeName', { + get: function() { + return this.name; + } + }); + + Object.defineProperty(XMLNode.prototype, 'nodeType', { + get: function() { + return this.type; + } + }); + + Object.defineProperty(XMLNode.prototype, 'nodeValue', { + get: function() { + return this.value; + } + }); + + Object.defineProperty(XMLNode.prototype, 'parentNode', { + get: function() { + return this.parent; + } + }); + + Object.defineProperty(XMLNode.prototype, 'childNodes', { + get: function() { + if (!this.childNodeList || !this.childNodeList.nodes) { + this.childNodeList = new XMLNodeList(this.children); + } + return this.childNodeList; + } + }); + + Object.defineProperty(XMLNode.prototype, 'firstChild', { + get: function() { + return this.children[0] || null; + } + }); + + Object.defineProperty(XMLNode.prototype, 'lastChild', { + get: function() { + return this.children[this.children.length - 1] || null; + } + }); + + Object.defineProperty(XMLNode.prototype, 'previousSibling', { + get: function() { + var i; + i = this.parent.children.indexOf(this); + return this.parent.children[i - 1] || null; + } + }); + + Object.defineProperty(XMLNode.prototype, 'nextSibling', { + get: function() { + var i; + i = this.parent.children.indexOf(this); + return this.parent.children[i + 1] || null; + } + }); + + Object.defineProperty(XMLNode.prototype, 'ownerDocument', { + get: function() { + return this.document() || null; + } + }); + + Object.defineProperty(XMLNode.prototype, 'textContent', { + get: function() { + var child, j, len, ref2, str; + if (this.nodeType === NodeType.Element || this.nodeType === NodeType.DocumentFragment) { + str = ''; + ref2 = this.children; + for (j = 0, len = ref2.length; j < len; j++) { + child = ref2[j]; + if (child.textContent) { + str += child.textContent; + } + } + return str; + } else { + return null; + } + }, + set: function(value) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + } + }); + + XMLNode.prototype.setParent = function(parent) { + var child, j, len, ref2, results; + this.parent = parent; + if (parent) { + this.options = parent.options; + this.stringify = parent.stringify; + } + ref2 = this.children; + results = []; + for (j = 0, len = ref2.length; j < len; j++) { + child = ref2[j]; + results.push(child.setParent(this)); + } + return results; + }; + + XMLNode.prototype.element = function(name, attributes, text) { + var childNode, item, j, k, key, lastChild, len, len1, ref2, ref3, val; + lastChild = null; + if (attributes === null && (text == null)) { + ref2 = [{}, null], attributes = ref2[0], text = ref2[1]; + } + if (attributes == null) { + attributes = {}; + } + attributes = getValue(attributes); + if (!isObject(attributes)) { + ref3 = [attributes, text], text = ref3[0], attributes = ref3[1]; + } + if (name != null) { + name = getValue(name); + } + if (Array.isArray(name)) { + for (j = 0, len = name.length; j < len; j++) { + item = name[j]; + lastChild = this.element(item); + } + } else if (isFunction(name)) { + lastChild = this.element(name.apply()); + } else if (isObject(name)) { + for (key in name) { + if (!hasProp.call(name, key)) continue; + val = name[key]; + if (isFunction(val)) { + val = val.apply(); + } + if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) { + lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val); + } else if (!this.options.separateArrayItems && Array.isArray(val) && isEmpty(val)) { + lastChild = this.dummy(); + } else if (isObject(val) && isEmpty(val)) { + lastChild = this.element(key); + } else if (!this.options.keepNullNodes && (val == null)) { + lastChild = this.dummy(); + } else if (!this.options.separateArrayItems && Array.isArray(val)) { + for (k = 0, len1 = val.length; k < len1; k++) { + item = val[k]; + childNode = {}; + childNode[key] = item; + lastChild = this.element(childNode); + } + } else if (isObject(val)) { + if (!this.options.ignoreDecorators && this.stringify.convertTextKey && key.indexOf(this.stringify.convertTextKey) === 0) { + lastChild = this.element(val); + } else { + lastChild = this.element(key); + lastChild.element(val); + } + } else { + lastChild = this.element(key, val); + } + } + } else if (!this.options.keepNullNodes && text === null) { + lastChild = this.dummy(); + } else { + if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) { + lastChild = this.text(text); + } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) { + lastChild = this.cdata(text); + } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) { + lastChild = this.comment(text); + } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) { + lastChild = this.raw(text); + } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) { + lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text); + } else { + lastChild = this.node(name, attributes, text); + } + } + if (lastChild == null) { + throw new Error("Could not create any elements with: " + name + ". " + this.debugInfo()); + } + return lastChild; + }; + + XMLNode.prototype.insertBefore = function(name, attributes, text) { + var child, i, newChild, refChild, removed; + if (name != null ? name.type : void 0) { + newChild = name; + refChild = attributes; + newChild.setParent(this); + if (refChild) { + i = children.indexOf(refChild); + removed = children.splice(i); + children.push(newChild); + Array.prototype.push.apply(children, removed); + } else { + children.push(newChild); + } + return newChild; + } else { + if (this.isRoot) { + throw new Error("Cannot insert elements at root level. " + this.debugInfo(name)); + } + i = this.parent.children.indexOf(this); + removed = this.parent.children.splice(i); + child = this.parent.element(name, attributes, text); + Array.prototype.push.apply(this.parent.children, removed); + return child; + } + }; + + XMLNode.prototype.insertAfter = function(name, attributes, text) { + var child, i, removed; + if (this.isRoot) { + throw new Error("Cannot insert elements at root level. " + this.debugInfo(name)); + } + i = this.parent.children.indexOf(this); + removed = this.parent.children.splice(i + 1); + child = this.parent.element(name, attributes, text); + Array.prototype.push.apply(this.parent.children, removed); + return child; + }; + + XMLNode.prototype.remove = function() { + var i, ref2; + if (this.isRoot) { + throw new Error("Cannot remove the root element. " + this.debugInfo()); + } + i = this.parent.children.indexOf(this); + [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref2 = [])), ref2; + return this.parent; + }; + + XMLNode.prototype.node = function(name, attributes, text) { + var child, ref2; + if (name != null) { + name = getValue(name); + } + attributes || (attributes = {}); + attributes = getValue(attributes); + if (!isObject(attributes)) { + ref2 = [attributes, text], text = ref2[0], attributes = ref2[1]; + } + child = new XMLElement(this, name, attributes); + if (text != null) { + child.text(text); + } + this.children.push(child); + return child; + }; + + XMLNode.prototype.text = function(value) { + var child; + if (isObject(value)) { + this.element(value); + } + child = new XMLText(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.cdata = function(value) { + var child; + child = new XMLCData(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.comment = function(value) { + var child; + child = new XMLComment(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.commentBefore = function(value) { + var child, i, removed; + i = this.parent.children.indexOf(this); + removed = this.parent.children.splice(i); + child = this.parent.comment(value); + Array.prototype.push.apply(this.parent.children, removed); + return this; + }; + + XMLNode.prototype.commentAfter = function(value) { + var child, i, removed; + i = this.parent.children.indexOf(this); + removed = this.parent.children.splice(i + 1); + child = this.parent.comment(value); + Array.prototype.push.apply(this.parent.children, removed); + return this; + }; + + XMLNode.prototype.raw = function(value) { + var child; + child = new XMLRaw(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.dummy = function() { + var child; + child = new XMLDummy(this); + return child; + }; + + XMLNode.prototype.instruction = function(target, value) { + var insTarget, insValue, instruction, j, len; + if (target != null) { + target = getValue(target); + } + if (value != null) { + value = getValue(value); + } + if (Array.isArray(target)) { + for (j = 0, len = target.length; j < len; j++) { + insTarget = target[j]; + this.instruction(insTarget); + } + } else if (isObject(target)) { + for (insTarget in target) { + if (!hasProp.call(target, insTarget)) continue; + insValue = target[insTarget]; + this.instruction(insTarget, insValue); + } + } else { + if (isFunction(value)) { + value = value.apply(); + } + instruction = new XMLProcessingInstruction(this, target, value); + this.children.push(instruction); + } + return this; + }; + + XMLNode.prototype.instructionBefore = function(target, value) { + var child, i, removed; + i = this.parent.children.indexOf(this); + removed = this.parent.children.splice(i); + child = this.parent.instruction(target, value); + Array.prototype.push.apply(this.parent.children, removed); + return this; + }; + + XMLNode.prototype.instructionAfter = function(target, value) { + var child, i, removed; + i = this.parent.children.indexOf(this); + removed = this.parent.children.splice(i + 1); + child = this.parent.instruction(target, value); + Array.prototype.push.apply(this.parent.children, removed); + return this; + }; + + XMLNode.prototype.declaration = function(version, encoding, standalone) { + var doc, xmldec; + doc = this.document(); + xmldec = new XMLDeclaration(doc, version, encoding, standalone); + if (doc.children.length === 0) { + doc.children.unshift(xmldec); + } else if (doc.children[0].type === NodeType.Declaration) { + doc.children[0] = xmldec; + } else { + doc.children.unshift(xmldec); + } + return doc.root() || doc; + }; + + XMLNode.prototype.dtd = function(pubID, sysID) { + var child, doc, doctype, i, j, k, len, len1, ref2, ref3; + doc = this.document(); + doctype = new XMLDocType(doc, pubID, sysID); + ref2 = doc.children; + for (i = j = 0, len = ref2.length; j < len; i = ++j) { + child = ref2[i]; + if (child.type === NodeType.DocType) { + doc.children[i] = doctype; + return doctype; + } + } + ref3 = doc.children; + for (i = k = 0, len1 = ref3.length; k < len1; i = ++k) { + child = ref3[i]; + if (child.isRoot) { + doc.children.splice(i, 0, doctype); + return doctype; + } + } + doc.children.push(doctype); + return doctype; + }; + + XMLNode.prototype.up = function() { + if (this.isRoot) { + throw new Error("The root node has no parent. Use doc() if you need to get the document object."); + } + return this.parent; + }; + + XMLNode.prototype.root = function() { + var node; + node = this; + while (node) { + if (node.type === NodeType.Document) { + return node.rootObject; + } else if (node.isRoot) { + return node; + } else { + node = node.parent; + } + } + }; + + XMLNode.prototype.document = function() { + var node; + node = this; + while (node) { + if (node.type === NodeType.Document) { + return node; + } else { + node = node.parent; + } + } + }; + + XMLNode.prototype.end = function(options) { + return this.document().end(options); + }; + + XMLNode.prototype.prev = function() { + var i; + i = this.parent.children.indexOf(this); + if (i < 1) { + throw new Error("Already at the first node. " + this.debugInfo()); + } + return this.parent.children[i - 1]; + }; + + XMLNode.prototype.next = function() { + var i; + i = this.parent.children.indexOf(this); + if (i === -1 || i === this.parent.children.length - 1) { + throw new Error("Already at the last node. " + this.debugInfo()); + } + return this.parent.children[i + 1]; + }; + + XMLNode.prototype.importDocument = function(doc) { + var clonedRoot; + clonedRoot = doc.root().clone(); + clonedRoot.parent = this; + clonedRoot.isRoot = false; + this.children.push(clonedRoot); + return this; + }; + + XMLNode.prototype.debugInfo = function(name) { + var ref2, ref3; + name = name || this.name; + if ((name == null) && !((ref2 = this.parent) != null ? ref2.name : void 0)) { + return ""; + } else if (name == null) { + return "parent: <" + this.parent.name + ">"; + } else if (!((ref3 = this.parent) != null ? ref3.name : void 0)) { + return "node: <" + name + ">"; + } else { + return "node: <" + name + ">, parent: <" + this.parent.name + ">"; + } + }; + + XMLNode.prototype.ele = function(name, attributes, text) { + return this.element(name, attributes, text); + }; + + XMLNode.prototype.nod = function(name, attributes, text) { + return this.node(name, attributes, text); + }; + + XMLNode.prototype.txt = function(value) { + return this.text(value); + }; + + XMLNode.prototype.dat = function(value) { + return this.cdata(value); + }; + + XMLNode.prototype.com = function(value) { + return this.comment(value); + }; + + XMLNode.prototype.ins = function(target, value) { + return this.instruction(target, value); + }; + + XMLNode.prototype.doc = function() { + return this.document(); + }; + + XMLNode.prototype.dec = function(version, encoding, standalone) { + return this.declaration(version, encoding, standalone); + }; + + XMLNode.prototype.e = function(name, attributes, text) { + return this.element(name, attributes, text); + }; + + XMLNode.prototype.n = function(name, attributes, text) { + return this.node(name, attributes, text); + }; + + XMLNode.prototype.t = function(value) { + return this.text(value); + }; + + XMLNode.prototype.d = function(value) { + return this.cdata(value); + }; + + XMLNode.prototype.c = function(value) { + return this.comment(value); + }; + + XMLNode.prototype.r = function(value) { + return this.raw(value); + }; + + XMLNode.prototype.i = function(target, value) { + return this.instruction(target, value); + }; + + XMLNode.prototype.u = function() { + return this.up(); + }; + + XMLNode.prototype.importXMLBuilder = function(doc) { + return this.importDocument(doc); + }; + + XMLNode.prototype.replaceChild = function(newChild, oldChild) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLNode.prototype.removeChild = function(oldChild) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLNode.prototype.appendChild = function(newChild) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLNode.prototype.hasChildNodes = function() { + return this.children.length !== 0; + }; + + XMLNode.prototype.cloneNode = function(deep) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLNode.prototype.normalize = function() { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLNode.prototype.isSupported = function(feature, version) { + return true; + }; + + XMLNode.prototype.hasAttributes = function() { + return this.attribs.length !== 0; + }; + + XMLNode.prototype.compareDocumentPosition = function(other) { + var ref, res; + ref = this; + if (ref === other) { + return 0; + } else if (this.document() !== other.document()) { + res = DocumentPosition.Disconnected | DocumentPosition.ImplementationSpecific; + if (Math.random() < 0.5) { + res |= DocumentPosition.Preceding; + } else { + res |= DocumentPosition.Following; + } + return res; + } else if (ref.isAncestor(other)) { + return DocumentPosition.Contains | DocumentPosition.Preceding; + } else if (ref.isDescendant(other)) { + return DocumentPosition.Contains | DocumentPosition.Following; + } else if (ref.isPreceding(other)) { + return DocumentPosition.Preceding; + } else { + return DocumentPosition.Following; + } + }; + + XMLNode.prototype.isSameNode = function(other) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLNode.prototype.lookupPrefix = function(namespaceURI) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLNode.prototype.isDefaultNamespace = function(namespaceURI) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLNode.prototype.lookupNamespaceURI = function(prefix) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLNode.prototype.isEqualNode = function(node) { + var i, j, ref2; + if (node.nodeType !== this.nodeType) { + return false; + } + if (node.children.length !== this.children.length) { + return false; + } + for (i = j = 0, ref2 = this.children.length - 1; 0 <= ref2 ? j <= ref2 : j >= ref2; i = 0 <= ref2 ? ++j : --j) { + if (!this.children[i].isEqualNode(node.children[i])) { + return false; + } + } + return true; + }; + + XMLNode.prototype.getFeature = function(feature, version) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLNode.prototype.setUserData = function(key, data, handler) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLNode.prototype.getUserData = function(key) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLNode.prototype.contains = function(other) { + if (!other) { + return false; + } + return other === this || this.isDescendant(other); + }; + + XMLNode.prototype.isDescendant = function(node) { + var child, isDescendantChild, j, len, ref2; + ref2 = this.children; + for (j = 0, len = ref2.length; j < len; j++) { + child = ref2[j]; + if (node === child) { + return true; + } + isDescendantChild = child.isDescendant(node); + if (isDescendantChild) { + return true; + } + } + return false; + }; + + XMLNode.prototype.isAncestor = function(node) { + return node.isDescendant(this); + }; + + XMLNode.prototype.isPreceding = function(node) { + var nodePos, thisPos; + nodePos = this.treePosition(node); + thisPos = this.treePosition(this); + if (nodePos === -1 || thisPos === -1) { + return false; + } else { + return nodePos < thisPos; + } + }; + + XMLNode.prototype.isFollowing = function(node) { + var nodePos, thisPos; + nodePos = this.treePosition(node); + thisPos = this.treePosition(this); + if (nodePos === -1 || thisPos === -1) { + return false; + } else { + return nodePos > thisPos; + } + }; + + XMLNode.prototype.treePosition = function(node) { + var found, pos; + pos = 0; + found = false; + this.foreachTreeNode(this.document(), function(childNode) { + pos++; + if (!found && childNode === node) { + return found = true; + } + }); + if (found) { + return pos; + } else { + return -1; + } + }; + + XMLNode.prototype.foreachTreeNode = function(node, func) { + var child, j, len, ref2, res; + node || (node = this.document()); + ref2 = node.children; + for (j = 0, len = ref2.length; j < len; j++) { + child = ref2[j]; + if (res = func(child)) { + return res; + } else { + res = this.foreachTreeNode(child, func); + if (res) { + return res; + } + } + } + }; + + return XMLNode; + + })(); + +}).call(this); + +},{"./DocumentPosition":497,"./NodeType":498,"./Utility":499,"./XMLCData":502,"./XMLComment":504,"./XMLDeclaration":513,"./XMLDocType":514,"./XMLDummy":517,"./XMLElement":518,"./XMLNamedNodeMap":519,"./XMLNodeList":521,"./XMLProcessingInstruction":522,"./XMLRaw":523,"./XMLText":527}],521:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var XMLNodeList; + + module.exports = XMLNodeList = (function() { + function XMLNodeList(nodes) { + this.nodes = nodes; + } + + Object.defineProperty(XMLNodeList.prototype, 'length', { + get: function() { + return this.nodes.length || 0; + } + }); + + XMLNodeList.prototype.clone = function() { + return this.nodes = null; + }; + + XMLNodeList.prototype.item = function(index) { + return this.nodes[index] || null; + }; + + return XMLNodeList; + + })(); + +}).call(this); + +},{}],522:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLCharacterData, XMLProcessingInstruction, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + NodeType = require('./NodeType'); + + XMLCharacterData = require('./XMLCharacterData'); + + module.exports = XMLProcessingInstruction = (function(superClass) { + extend(XMLProcessingInstruction, superClass); + + function XMLProcessingInstruction(parent, target, value) { + XMLProcessingInstruction.__super__.constructor.call(this, parent); + if (target == null) { + throw new Error("Missing instruction target. " + this.debugInfo()); + } + this.type = NodeType.ProcessingInstruction; + this.target = this.stringify.insTarget(target); + this.name = this.target; + if (value) { + this.value = this.stringify.insValue(value); + } + } + + XMLProcessingInstruction.prototype.clone = function() { + return Object.create(this); + }; + + XMLProcessingInstruction.prototype.toString = function(options) { + return this.options.writer.processingInstruction(this, this.options.writer.filterOptions(options)); + }; + + XMLProcessingInstruction.prototype.isEqualNode = function(node) { + if (!XMLProcessingInstruction.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) { + return false; + } + if (node.target !== this.target) { + return false; + } + return true; + }; + + return XMLProcessingInstruction; + + })(XMLCharacterData); + +}).call(this); + +},{"./NodeType":498,"./XMLCharacterData":503}],523:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLNode, XMLRaw, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + NodeType = require('./NodeType'); + + XMLNode = require('./XMLNode'); + + module.exports = XMLRaw = (function(superClass) { + extend(XMLRaw, superClass); + + function XMLRaw(parent, text) { + XMLRaw.__super__.constructor.call(this, parent); + if (text == null) { + throw new Error("Missing raw text. " + this.debugInfo()); + } + this.type = NodeType.Raw; + this.value = this.stringify.raw(text); + } + + XMLRaw.prototype.clone = function() { + return Object.create(this); + }; + + XMLRaw.prototype.toString = function(options) { + return this.options.writer.raw(this, this.options.writer.filterOptions(options)); + }; + + return XMLRaw; + + })(XMLNode); + +}).call(this); + +},{"./NodeType":498,"./XMLNode":520}],524:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, WriterState, XMLStreamWriter, XMLWriterBase, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + NodeType = require('./NodeType'); + + XMLWriterBase = require('./XMLWriterBase'); + + WriterState = require('./WriterState'); + + module.exports = XMLStreamWriter = (function(superClass) { + extend(XMLStreamWriter, superClass); + + function XMLStreamWriter(stream, options) { + this.stream = stream; + XMLStreamWriter.__super__.constructor.call(this, options); + } + + XMLStreamWriter.prototype.endline = function(node, options, level) { + if (node.isLastRootNode && options.state === WriterState.CloseTag) { + return ''; + } else { + return XMLStreamWriter.__super__.endline.call(this, node, options, level); + } + }; + + XMLStreamWriter.prototype.document = function(doc, options) { + var child, i, j, k, len, len1, ref, ref1, results; + ref = doc.children; + for (i = j = 0, len = ref.length; j < len; i = ++j) { + child = ref[i]; + child.isLastRootNode = i === doc.children.length - 1; + } + options = this.filterOptions(options); + ref1 = doc.children; + results = []; + for (k = 0, len1 = ref1.length; k < len1; k++) { + child = ref1[k]; + results.push(this.writeChildNode(child, options, 0)); + } + return results; + }; + + XMLStreamWriter.prototype.attribute = function(att, options, level) { + return this.stream.write(XMLStreamWriter.__super__.attribute.call(this, att, options, level)); + }; + + XMLStreamWriter.prototype.cdata = function(node, options, level) { + return this.stream.write(XMLStreamWriter.__super__.cdata.call(this, node, options, level)); + }; + + XMLStreamWriter.prototype.comment = function(node, options, level) { + return this.stream.write(XMLStreamWriter.__super__.comment.call(this, node, options, level)); + }; + + XMLStreamWriter.prototype.declaration = function(node, options, level) { + return this.stream.write(XMLStreamWriter.__super__.declaration.call(this, node, options, level)); + }; + + XMLStreamWriter.prototype.docType = function(node, options, level) { + var child, j, len, ref; + level || (level = 0); + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + this.stream.write(this.indent(node, options, level)); + this.stream.write('<!DOCTYPE ' + node.root().name); + if (node.pubID && node.sysID) { + this.stream.write(' PUBLIC "' + node.pubID + '" "' + node.sysID + '"'); + } else if (node.sysID) { + this.stream.write(' SYSTEM "' + node.sysID + '"'); + } + if (node.children.length > 0) { + this.stream.write(' ['); + this.stream.write(this.endline(node, options, level)); + options.state = WriterState.InsideTag; + ref = node.children; + for (j = 0, len = ref.length; j < len; j++) { + child = ref[j]; + this.writeChildNode(child, options, level + 1); + } + options.state = WriterState.CloseTag; + this.stream.write(']'); + } + options.state = WriterState.CloseTag; + this.stream.write(options.spaceBeforeSlash + '>'); + this.stream.write(this.endline(node, options, level)); + options.state = WriterState.None; + return this.closeNode(node, options, level); + }; + + XMLStreamWriter.prototype.element = function(node, options, level) { + var att, child, childNodeCount, firstChildNode, j, len, name, prettySuppressed, ref, ref1; + level || (level = 0); + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + this.stream.write(this.indent(node, options, level) + '<' + node.name); + ref = node.attribs; + for (name in ref) { + if (!hasProp.call(ref, name)) continue; + att = ref[name]; + this.attribute(att, options, level); + } + childNodeCount = node.children.length; + firstChildNode = childNodeCount === 0 ? null : node.children[0]; + if (childNodeCount === 0 || node.children.every(function(e) { + return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === ''; + })) { + if (options.allowEmpty) { + this.stream.write('>'); + options.state = WriterState.CloseTag; + this.stream.write('</' + node.name + '>'); + } else { + options.state = WriterState.CloseTag; + this.stream.write(options.spaceBeforeSlash + '/>'); + } + } else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) { + this.stream.write('>'); + options.state = WriterState.InsideTag; + options.suppressPrettyCount++; + prettySuppressed = true; + this.writeChildNode(firstChildNode, options, level + 1); + options.suppressPrettyCount--; + prettySuppressed = false; + options.state = WriterState.CloseTag; + this.stream.write('</' + node.name + '>'); + } else { + this.stream.write('>' + this.endline(node, options, level)); + options.state = WriterState.InsideTag; + ref1 = node.children; + for (j = 0, len = ref1.length; j < len; j++) { + child = ref1[j]; + this.writeChildNode(child, options, level + 1); + } + options.state = WriterState.CloseTag; + this.stream.write(this.indent(node, options, level) + '</' + node.name + '>'); + } + this.stream.write(this.endline(node, options, level)); + options.state = WriterState.None; + return this.closeNode(node, options, level); + }; + + XMLStreamWriter.prototype.processingInstruction = function(node, options, level) { + return this.stream.write(XMLStreamWriter.__super__.processingInstruction.call(this, node, options, level)); + }; + + XMLStreamWriter.prototype.raw = function(node, options, level) { + return this.stream.write(XMLStreamWriter.__super__.raw.call(this, node, options, level)); + }; + + XMLStreamWriter.prototype.text = function(node, options, level) { + return this.stream.write(XMLStreamWriter.__super__.text.call(this, node, options, level)); + }; + + XMLStreamWriter.prototype.dtdAttList = function(node, options, level) { + return this.stream.write(XMLStreamWriter.__super__.dtdAttList.call(this, node, options, level)); + }; + + XMLStreamWriter.prototype.dtdElement = function(node, options, level) { + return this.stream.write(XMLStreamWriter.__super__.dtdElement.call(this, node, options, level)); + }; + + XMLStreamWriter.prototype.dtdEntity = function(node, options, level) { + return this.stream.write(XMLStreamWriter.__super__.dtdEntity.call(this, node, options, level)); + }; + + XMLStreamWriter.prototype.dtdNotation = function(node, options, level) { + return this.stream.write(XMLStreamWriter.__super__.dtdNotation.call(this, node, options, level)); + }; + + return XMLStreamWriter; + + })(XMLWriterBase); + +}).call(this); + +},{"./NodeType":498,"./WriterState":500,"./XMLWriterBase":528}],525:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var XMLStringWriter, XMLWriterBase, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + XMLWriterBase = require('./XMLWriterBase'); + + module.exports = XMLStringWriter = (function(superClass) { + extend(XMLStringWriter, superClass); + + function XMLStringWriter(options) { + XMLStringWriter.__super__.constructor.call(this, options); + } + + XMLStringWriter.prototype.document = function(doc, options) { + var child, i, len, r, ref; + options = this.filterOptions(options); + r = ''; + ref = doc.children; + for (i = 0, len = ref.length; i < len; i++) { + child = ref[i]; + r += this.writeChildNode(child, options, 0); + } + if (options.pretty && r.slice(-options.newline.length) === options.newline) { + r = r.slice(0, -options.newline.length); + } + return r; + }; + + return XMLStringWriter; + + })(XMLWriterBase); + +}).call(this); + +},{"./XMLWriterBase":528}],526:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var XMLStringifier, + bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + hasProp = {}.hasOwnProperty; + + module.exports = XMLStringifier = (function() { + function XMLStringifier(options) { + this.assertLegalName = bind(this.assertLegalName, this); + this.assertLegalChar = bind(this.assertLegalChar, this); + var key, ref, value; + options || (options = {}); + this.options = options; + if (!this.options.version) { + this.options.version = '1.0'; + } + ref = options.stringify || {}; + for (key in ref) { + if (!hasProp.call(ref, key)) continue; + value = ref[key]; + this[key] = value; + } + } + + XMLStringifier.prototype.name = function(val) { + if (this.options.noValidation) { + return val; + } + return this.assertLegalName('' + val || ''); + }; + + XMLStringifier.prototype.text = function(val) { + if (this.options.noValidation) { + return val; + } + return this.assertLegalChar(this.textEscape('' + val || '')); + }; + + XMLStringifier.prototype.cdata = function(val) { + if (this.options.noValidation) { + return val; + } + val = '' + val || ''; + val = val.replace(']]>', ']]]]><![CDATA[>'); + return this.assertLegalChar(val); + }; + + XMLStringifier.prototype.comment = function(val) { + if (this.options.noValidation) { + return val; + } + val = '' + val || ''; + if (val.match(/--/)) { + throw new Error("Comment text cannot contain double-hypen: " + val); + } + return this.assertLegalChar(val); + }; + + XMLStringifier.prototype.raw = function(val) { + if (this.options.noValidation) { + return val; + } + return '' + val || ''; + }; + + XMLStringifier.prototype.attValue = function(val) { + if (this.options.noValidation) { + return val; + } + return this.assertLegalChar(this.attEscape(val = '' + val || '')); + }; + + XMLStringifier.prototype.insTarget = function(val) { + if (this.options.noValidation) { + return val; + } + return this.assertLegalChar('' + val || ''); + }; + + XMLStringifier.prototype.insValue = function(val) { + if (this.options.noValidation) { + return val; + } + val = '' + val || ''; + if (val.match(/\?>/)) { + throw new Error("Invalid processing instruction value: " + val); + } + return this.assertLegalChar(val); + }; + + XMLStringifier.prototype.xmlVersion = function(val) { + if (this.options.noValidation) { + return val; + } + val = '' + val || ''; + if (!val.match(/1\.[0-9]+/)) { + throw new Error("Invalid version number: " + val); + } + return val; + }; + + XMLStringifier.prototype.xmlEncoding = function(val) { + if (this.options.noValidation) { + return val; + } + val = '' + val || ''; + if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) { + throw new Error("Invalid encoding: " + val); + } + return this.assertLegalChar(val); + }; + + XMLStringifier.prototype.xmlStandalone = function(val) { + if (this.options.noValidation) { + return val; + } + if (val) { + return "yes"; + } else { + return "no"; + } + }; + + XMLStringifier.prototype.dtdPubID = function(val) { + if (this.options.noValidation) { + return val; + } + return this.assertLegalChar('' + val || ''); + }; + + XMLStringifier.prototype.dtdSysID = function(val) { + if (this.options.noValidation) { + return val; + } + return this.assertLegalChar('' + val || ''); + }; + + XMLStringifier.prototype.dtdElementValue = function(val) { + if (this.options.noValidation) { + return val; + } + return this.assertLegalChar('' + val || ''); + }; + + XMLStringifier.prototype.dtdAttType = function(val) { + if (this.options.noValidation) { + return val; + } + return this.assertLegalChar('' + val || ''); + }; + + XMLStringifier.prototype.dtdAttDefault = function(val) { + if (this.options.noValidation) { + return val; + } + return this.assertLegalChar('' + val || ''); + }; + + XMLStringifier.prototype.dtdEntityValue = function(val) { + if (this.options.noValidation) { + return val; + } + return this.assertLegalChar('' + val || ''); + }; + + XMLStringifier.prototype.dtdNData = function(val) { + if (this.options.noValidation) { + return val; + } + return this.assertLegalChar('' + val || ''); + }; + + XMLStringifier.prototype.convertAttKey = '@'; + + XMLStringifier.prototype.convertPIKey = '?'; + + XMLStringifier.prototype.convertTextKey = '#text'; + + XMLStringifier.prototype.convertCDataKey = '#cdata'; + + XMLStringifier.prototype.convertCommentKey = '#comment'; + + XMLStringifier.prototype.convertRawKey = '#raw'; + + XMLStringifier.prototype.assertLegalChar = function(str) { + var regex, res; + if (this.options.noValidation) { + return str; + } + regex = ''; + if (this.options.version === '1.0') { + regex = /[\0-\x08\x0B\f\x0E-\x1F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; + if (res = str.match(regex)) { + throw new Error("Invalid character in string: " + str + " at index " + res.index); + } + } else if (this.options.version === '1.1') { + regex = /[\0\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; + if (res = str.match(regex)) { + throw new Error("Invalid character in string: " + str + " at index " + res.index); + } + } + return str; + }; + + XMLStringifier.prototype.assertLegalName = function(str) { + var regex; + if (this.options.noValidation) { + return str; + } + this.assertLegalChar(str); + regex = /^([:A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])([\x2D\.0-:A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])*$/; + if (!str.match(regex)) { + throw new Error("Invalid character in name"); + } + return str; + }; + + XMLStringifier.prototype.textEscape = function(str) { + var ampregex; + if (this.options.noValidation) { + return str; + } + ampregex = this.options.noDoubleEncoding ? /(?!&\S+;)&/g : /&/g; + return str.replace(ampregex, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\r/g, ' '); + }; + + XMLStringifier.prototype.attEscape = function(str) { + var ampregex; + if (this.options.noValidation) { + return str; + } + ampregex = this.options.noDoubleEncoding ? /(?!&\S+;)&/g : /&/g; + return str.replace(ampregex, '&').replace(/</g, '<').replace(/"/g, '"').replace(/\t/g, ' ').replace(/\n/g, ' ').replace(/\r/g, ' '); + }; + + return XMLStringifier; + + })(); + +}).call(this); + +},{}],527:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, XMLCharacterData, XMLText, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + NodeType = require('./NodeType'); + + XMLCharacterData = require('./XMLCharacterData'); + + module.exports = XMLText = (function(superClass) { + extend(XMLText, superClass); + + function XMLText(parent, text) { + XMLText.__super__.constructor.call(this, parent); + if (text == null) { + throw new Error("Missing element text. " + this.debugInfo()); + } + this.name = "#text"; + this.type = NodeType.Text; + this.value = this.stringify.text(text); + } + + Object.defineProperty(XMLText.prototype, 'isElementContentWhitespace', { + get: function() { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + } + }); + + Object.defineProperty(XMLText.prototype, 'wholeText', { + get: function() { + var next, prev, str; + str = ''; + prev = this.previousSibling; + while (prev) { + str = prev.data + str; + prev = prev.previousSibling; + } + str += this.data; + next = this.nextSibling; + while (next) { + str = str + next.data; + next = next.nextSibling; + } + return str; + } + }); + + XMLText.prototype.clone = function() { + return Object.create(this); + }; + + XMLText.prototype.toString = function(options) { + return this.options.writer.text(this, this.options.writer.filterOptions(options)); + }; + + XMLText.prototype.splitText = function(offset) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + XMLText.prototype.replaceWholeText = function(content) { + throw new Error("This DOM method is not implemented." + this.debugInfo()); + }; + + return XMLText; + + })(XMLCharacterData); + +}).call(this); + +},{"./NodeType":498,"./XMLCharacterData":503}],528:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, WriterState, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLProcessingInstruction, XMLRaw, XMLText, XMLWriterBase, assign, + hasProp = {}.hasOwnProperty; + + assign = require('./Utility').assign; + + NodeType = require('./NodeType'); + + XMLDeclaration = require('./XMLDeclaration'); + + XMLDocType = require('./XMLDocType'); + + XMLCData = require('./XMLCData'); + + XMLComment = require('./XMLComment'); + + XMLElement = require('./XMLElement'); + + XMLRaw = require('./XMLRaw'); + + XMLText = require('./XMLText'); + + XMLProcessingInstruction = require('./XMLProcessingInstruction'); + + XMLDummy = require('./XMLDummy'); + + XMLDTDAttList = require('./XMLDTDAttList'); + + XMLDTDElement = require('./XMLDTDElement'); + + XMLDTDEntity = require('./XMLDTDEntity'); + + XMLDTDNotation = require('./XMLDTDNotation'); + + WriterState = require('./WriterState'); + + module.exports = XMLWriterBase = (function() { + function XMLWriterBase(options) { + var key, ref, value; + options || (options = {}); + this.options = options; + ref = options.writer || {}; + for (key in ref) { + if (!hasProp.call(ref, key)) continue; + value = ref[key]; + this["_" + key] = this[key]; + this[key] = value; + } + } + + XMLWriterBase.prototype.filterOptions = function(options) { + var filteredOptions, ref, ref1, ref2, ref3, ref4, ref5, ref6; + options || (options = {}); + options = assign({}, this.options, options); + filteredOptions = { + writer: this + }; + filteredOptions.pretty = options.pretty || false; + filteredOptions.allowEmpty = options.allowEmpty || false; + filteredOptions.indent = (ref = options.indent) != null ? ref : ' '; + filteredOptions.newline = (ref1 = options.newline) != null ? ref1 : '\n'; + filteredOptions.offset = (ref2 = options.offset) != null ? ref2 : 0; + filteredOptions.dontPrettyTextNodes = (ref3 = (ref4 = options.dontPrettyTextNodes) != null ? ref4 : options.dontprettytextnodes) != null ? ref3 : 0; + filteredOptions.spaceBeforeSlash = (ref5 = (ref6 = options.spaceBeforeSlash) != null ? ref6 : options.spacebeforeslash) != null ? ref5 : ''; + if (filteredOptions.spaceBeforeSlash === true) { + filteredOptions.spaceBeforeSlash = ' '; + } + filteredOptions.suppressPrettyCount = 0; + filteredOptions.user = {}; + filteredOptions.state = WriterState.None; + return filteredOptions; + }; + + XMLWriterBase.prototype.indent = function(node, options, level) { + var indentLevel; + if (!options.pretty || options.suppressPrettyCount) { + return ''; + } else if (options.pretty) { + indentLevel = (level || 0) + options.offset + 1; + if (indentLevel > 0) { + return new Array(indentLevel).join(options.indent); + } + } + return ''; + }; + + XMLWriterBase.prototype.endline = function(node, options, level) { + if (!options.pretty || options.suppressPrettyCount) { + return ''; + } else { + return options.newline; + } + }; + + XMLWriterBase.prototype.attribute = function(att, options, level) { + var r; + this.openAttribute(att, options, level); + r = ' ' + att.name + '="' + att.value + '"'; + this.closeAttribute(att, options, level); + return r; + }; + + XMLWriterBase.prototype.cdata = function(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + '<![CDATA['; + options.state = WriterState.InsideTag; + r += node.value; + options.state = WriterState.CloseTag; + r += ']]>' + this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + }; + + XMLWriterBase.prototype.comment = function(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + '<!-- '; + options.state = WriterState.InsideTag; + r += node.value; + options.state = WriterState.CloseTag; + r += ' -->' + this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + }; + + XMLWriterBase.prototype.declaration = function(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + '<?xml'; + options.state = WriterState.InsideTag; + r += ' version="' + node.version + '"'; + if (node.encoding != null) { + r += ' encoding="' + node.encoding + '"'; + } + if (node.standalone != null) { + r += ' standalone="' + node.standalone + '"'; + } + options.state = WriterState.CloseTag; + r += options.spaceBeforeSlash + '?>'; + r += this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + }; + + XMLWriterBase.prototype.docType = function(node, options, level) { + var child, i, len, r, ref; + level || (level = 0); + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level); + r += '<!DOCTYPE ' + node.root().name; + if (node.pubID && node.sysID) { + r += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"'; + } else if (node.sysID) { + r += ' SYSTEM "' + node.sysID + '"'; + } + if (node.children.length > 0) { + r += ' ['; + r += this.endline(node, options, level); + options.state = WriterState.InsideTag; + ref = node.children; + for (i = 0, len = ref.length; i < len; i++) { + child = ref[i]; + r += this.writeChildNode(child, options, level + 1); + } + options.state = WriterState.CloseTag; + r += ']'; + } + options.state = WriterState.CloseTag; + r += options.spaceBeforeSlash + '>'; + r += this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + }; + + XMLWriterBase.prototype.element = function(node, options, level) { + var att, child, childNodeCount, firstChildNode, i, j, len, len1, name, prettySuppressed, r, ref, ref1, ref2; + level || (level = 0); + prettySuppressed = false; + r = ''; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r += this.indent(node, options, level) + '<' + node.name; + ref = node.attribs; + for (name in ref) { + if (!hasProp.call(ref, name)) continue; + att = ref[name]; + r += this.attribute(att, options, level); + } + childNodeCount = node.children.length; + firstChildNode = childNodeCount === 0 ? null : node.children[0]; + if (childNodeCount === 0 || node.children.every(function(e) { + return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === ''; + })) { + if (options.allowEmpty) { + r += '>'; + options.state = WriterState.CloseTag; + r += '</' + node.name + '>' + this.endline(node, options, level); + } else { + options.state = WriterState.CloseTag; + r += options.spaceBeforeSlash + '/>' + this.endline(node, options, level); + } + } else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) { + r += '>'; + options.state = WriterState.InsideTag; + options.suppressPrettyCount++; + prettySuppressed = true; + r += this.writeChildNode(firstChildNode, options, level + 1); + options.suppressPrettyCount--; + prettySuppressed = false; + options.state = WriterState.CloseTag; + r += '</' + node.name + '>' + this.endline(node, options, level); + } else { + if (options.dontPrettyTextNodes) { + ref1 = node.children; + for (i = 0, len = ref1.length; i < len; i++) { + child = ref1[i]; + if ((child.type === NodeType.Text || child.type === NodeType.Raw) && (child.value != null)) { + options.suppressPrettyCount++; + prettySuppressed = true; + break; + } + } + } + r += '>' + this.endline(node, options, level); + options.state = WriterState.InsideTag; + ref2 = node.children; + for (j = 0, len1 = ref2.length; j < len1; j++) { + child = ref2[j]; + r += this.writeChildNode(child, options, level + 1); + } + options.state = WriterState.CloseTag; + r += this.indent(node, options, level) + '</' + node.name + '>'; + if (prettySuppressed) { + options.suppressPrettyCount--; + } + r += this.endline(node, options, level); + options.state = WriterState.None; + } + this.closeNode(node, options, level); + return r; + }; + + XMLWriterBase.prototype.writeChildNode = function(node, options, level) { + switch (node.type) { + case NodeType.CData: + return this.cdata(node, options, level); + case NodeType.Comment: + return this.comment(node, options, level); + case NodeType.Element: + return this.element(node, options, level); + case NodeType.Raw: + return this.raw(node, options, level); + case NodeType.Text: + return this.text(node, options, level); + case NodeType.ProcessingInstruction: + return this.processingInstruction(node, options, level); + case NodeType.Dummy: + return ''; + case NodeType.Declaration: + return this.declaration(node, options, level); + case NodeType.DocType: + return this.docType(node, options, level); + case NodeType.AttributeDeclaration: + return this.dtdAttList(node, options, level); + case NodeType.ElementDeclaration: + return this.dtdElement(node, options, level); + case NodeType.EntityDeclaration: + return this.dtdEntity(node, options, level); + case NodeType.NotationDeclaration: + return this.dtdNotation(node, options, level); + default: + throw new Error("Unknown XML node type: " + node.constructor.name); + } + }; + + XMLWriterBase.prototype.processingInstruction = function(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + '<?'; + options.state = WriterState.InsideTag; + r += node.target; + if (node.value) { + r += ' ' + node.value; + } + options.state = WriterState.CloseTag; + r += options.spaceBeforeSlash + '?>'; + r += this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + }; + + XMLWriterBase.prototype.raw = function(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level); + options.state = WriterState.InsideTag; + r += node.value; + options.state = WriterState.CloseTag; + r += this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + }; + + XMLWriterBase.prototype.text = function(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level); + options.state = WriterState.InsideTag; + r += node.value; + options.state = WriterState.CloseTag; + r += this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + }; + + XMLWriterBase.prototype.dtdAttList = function(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + '<!ATTLIST'; + options.state = WriterState.InsideTag; + r += ' ' + node.elementName + ' ' + node.attributeName + ' ' + node.attributeType; + if (node.defaultValueType !== '#DEFAULT') { + r += ' ' + node.defaultValueType; + } + if (node.defaultValue) { + r += ' "' + node.defaultValue + '"'; + } + options.state = WriterState.CloseTag; + r += options.spaceBeforeSlash + '>' + this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + }; + + XMLWriterBase.prototype.dtdElement = function(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + '<!ELEMENT'; + options.state = WriterState.InsideTag; + r += ' ' + node.name + ' ' + node.value; + options.state = WriterState.CloseTag; + r += options.spaceBeforeSlash + '>' + this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + }; + + XMLWriterBase.prototype.dtdEntity = function(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + '<!ENTITY'; + options.state = WriterState.InsideTag; + if (node.pe) { + r += ' %'; + } + r += ' ' + node.name; + if (node.value) { + r += ' "' + node.value + '"'; + } else { + if (node.pubID && node.sysID) { + r += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"'; + } else if (node.sysID) { + r += ' SYSTEM "' + node.sysID + '"'; + } + if (node.nData) { + r += ' NDATA ' + node.nData; + } + } + options.state = WriterState.CloseTag; + r += options.spaceBeforeSlash + '>' + this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + }; + + XMLWriterBase.prototype.dtdNotation = function(node, options, level) { + var r; + this.openNode(node, options, level); + options.state = WriterState.OpenTag; + r = this.indent(node, options, level) + '<!NOTATION'; + options.state = WriterState.InsideTag; + r += ' ' + node.name; + if (node.pubID && node.sysID) { + r += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"'; + } else if (node.pubID) { + r += ' PUBLIC "' + node.pubID + '"'; + } else if (node.sysID) { + r += ' SYSTEM "' + node.sysID + '"'; + } + options.state = WriterState.CloseTag; + r += options.spaceBeforeSlash + '>' + this.endline(node, options, level); + options.state = WriterState.None; + this.closeNode(node, options, level); + return r; + }; + + XMLWriterBase.prototype.openNode = function(node, options, level) {}; + + XMLWriterBase.prototype.closeNode = function(node, options, level) {}; + + XMLWriterBase.prototype.openAttribute = function(att, options, level) {}; + + XMLWriterBase.prototype.closeAttribute = function(att, options, level) {}; + + return XMLWriterBase; + + })(); + +}).call(this); + +},{"./NodeType":498,"./Utility":499,"./WriterState":500,"./XMLCData":502,"./XMLComment":504,"./XMLDTDAttList":509,"./XMLDTDElement":510,"./XMLDTDEntity":511,"./XMLDTDNotation":512,"./XMLDeclaration":513,"./XMLDocType":514,"./XMLDummy":517,"./XMLElement":518,"./XMLProcessingInstruction":522,"./XMLRaw":523,"./XMLText":527}],529:[function(require,module,exports){ +// Generated by CoffeeScript 1.12.7 +(function() { + var NodeType, WriterState, XMLDOMImplementation, XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref; + + ref = require('./Utility'), assign = ref.assign, isFunction = ref.isFunction; + + XMLDOMImplementation = require('./XMLDOMImplementation'); + + XMLDocument = require('./XMLDocument'); + + XMLDocumentCB = require('./XMLDocumentCB'); + + XMLStringWriter = require('./XMLStringWriter'); + + XMLStreamWriter = require('./XMLStreamWriter'); + + NodeType = require('./NodeType'); + + WriterState = require('./WriterState'); + + module.exports.create = function(name, xmldec, doctype, options) { + var doc, root; + if (name == null) { + throw new Error("Root element needs a name."); + } + options = assign({}, xmldec, doctype, options); + doc = new XMLDocument(options); + root = doc.element(name); + if (!options.headless) { + doc.declaration(options); + if ((options.pubID != null) || (options.sysID != null)) { + doc.dtd(options); + } + } + return root; + }; + + module.exports.begin = function(options, onData, onEnd) { + var ref1; + if (isFunction(options)) { + ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1]; + options = {}; + } + if (onData) { + return new XMLDocumentCB(options, onData, onEnd); + } else { + return new XMLDocument(options); + } + }; + + module.exports.stringWriter = function(options) { + return new XMLStringWriter(options); + }; + + module.exports.streamWriter = function(stream, options) { + return new XMLStreamWriter(stream, options); + }; + + module.exports.implementation = new XMLDOMImplementation(); + + module.exports.nodeType = NodeType; + + module.exports.writerState = WriterState; + +}).call(this); + +},{"./NodeType":498,"./Utility":499,"./WriterState":500,"./XMLDOMImplementation":507,"./XMLDocument":515,"./XMLDocumentCB":516,"./XMLStreamWriter":524,"./XMLStringWriter":525}],530:[function(require,module,exports){ +module.exports = extend + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +function extend() { + var target = {} + + for (var i = 0; i < arguments.length; i++) { + var source = arguments[i] + + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } + + return target +} + +},{}],531:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.array.fill.js"); +require("core-js/modules/es.array.concat.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.regexp.to-string.js"); +require("core-js/modules/es.array.join.js"); +require("core-js/modules/es.array.slice.js"); +var Buffer = require('buffer').Buffer; +var sha = require('./sha'); +var sha256 = require('./sha256'); +var md5 = require('./md5'); +var algorithms = { + sha1: sha, + sha256: sha256, + md5: md5 +}; +var blocksize = 64; +var zeroBuffer = Buffer.alloc(blocksize); +zeroBuffer.fill(0); +function hmac(fn, key, data) { + if (!Buffer.isBuffer(key)) key = Buffer.from(key); + if (!Buffer.isBuffer(data)) data = Buffer.from(data); + if (key.length > blocksize) { + key = fn(key); + } else if (key.length < blocksize) { + key = Buffer.concat([key, zeroBuffer], blocksize); + } + var ipad = Buffer.alloc(blocksize), + opad = Buffer.alloc(blocksize); + for (var i = 0; i < blocksize; i++) { + ipad[i] = key[i] ^ 0x36; + opad[i] = key[i] ^ 0x5c; + } + var hash = fn(Buffer.concat([ipad, data])); + return fn(Buffer.concat([opad, hash])); +} +function hash(alg, key) { + alg = alg || 'sha1'; + var fn = algorithms[alg]; + var bufs = []; + var length = 0; + if (!fn) error('algorithm:', alg, 'is not yet supported'); + return { + update: function update(data) { + if (!Buffer.isBuffer(data)) data = Buffer.from(data); + bufs.push(data); + length += data.length; + return this; + }, + digest: function digest(enc) { + var buf = Buffer.concat(bufs); + var r = key ? hmac(fn, key, buf) : fn(buf); + bufs = null; + return enc ? r.toString(enc) : r; + } + }; +} +function error() { + var m = [].slice.call(arguments).join(' '); + throw new Error([m, 'we accept pull requests', 'http://github.com/dominictarr/crypto-browserify'].join('\n')); +} +exports.createHash = function (alg) { + return hash(alg); +}; +exports.createHmac = function (alg, key) { + return hash(alg, key); +}; +exports.createCredentials = function () { + error('sorry,createCredentials is not implemented yet'); +}; +exports.createCipher = function () { + error('sorry,createCipher is not implemented yet'); +}; +exports.createCipheriv = function () { + error('sorry,createCipheriv is not implemented yet'); +}; +exports.createDecipher = function () { + error('sorry,createDecipher is not implemented yet'); +}; +exports.createDecipheriv = function () { + error('sorry,createDecipheriv is not implemented yet'); +}; +exports.createSign = function () { + error('sorry,createSign is not implemented yet'); +}; +exports.createVerify = function () { + error('sorry,createVerify is not implemented yet'); +}; +exports.createDiffieHellman = function () { + error('sorry,createDiffieHellman is not implemented yet'); +}; +exports.pbkdf2 = function () { + error('sorry,pbkdf2 is not implemented yet'); +}; + +},{"./md5":533,"./sha":534,"./sha256":535,"buffer":103,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.fill.js":311,"core-js/modules/es.array.join.js":317,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339}],532:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.array.fill.js"); +require("core-js/modules/es.array.concat.js"); +var Buffer = require('buffer').Buffer; +var intSize = 4; +var zeroBuffer = Buffer.alloc(intSize); +zeroBuffer.fill(0); +var chrsz = 8; +function toArray(buf, bigEndian) { + if (buf.length % intSize !== 0) { + var len = buf.length + (intSize - buf.length % intSize); + buf = Buffer.concat([buf, zeroBuffer], len); + } + var arr = []; + var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE; + for (var i = 0; i < buf.length; i += intSize) { + arr.push(fn.call(buf, i)); + } + return arr; +} +function toBuffer(arr, size, bigEndian) { + var buf = Buffer.alloc(size); + var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE; + for (var i = 0; i < arr.length; i++) { + fn.call(buf, arr[i], i * 4, true); + } + return buf; +} +function hash(buf, fn, hashSize, bigEndian) { + if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf); + var arr = fn(toArray(buf, bigEndian), buf.length * chrsz); + return toBuffer(arr, hashSize, bigEndian); +} +module.exports = { + hash: hash +}; + +},{"buffer":103,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.fill.js":311}],533:[function(require,module,exports){ +"use strict"; + +/* + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +var helpers = require('./helpers'); + +/* + * Perform a simple self-test to see if the VM is working + */ +function md5_vm_test() { + return hex_md5('abc') == '900150983cd24fb0d6963f7d28e17f72'; +} + +/* + * Calculate the MD5 of an array of little-endian words, and a bit length + */ +function core_md5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << len % 32; + x[(len + 64 >>> 9 << 4) + 14] = len; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + for (var i = 0; i < x.length; i += 16) { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936); + d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5_ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329); + a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302); + a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734); + a = md5_hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222); + c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651); + a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844); + d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551); + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + } + return Array(a, b, c, d); +} + +/* + * These functions implement the four basic operations the algorithm uses. + */ +function md5_cmn(q, a, b, x, s, t) { + return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b); +} +function md5_ff(a, b, c, d, x, s, t) { + return md5_cmn(b & c | ~b & d, a, b, x, s, t); +} +function md5_gg(a, b, c, d, x, s, t) { + return md5_cmn(b & d | c & ~d, a, b, x, s, t); +} +function md5_hh(a, b, c, d, x, s, t) { + return md5_cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5_ii(a, b, c, d, x, s, t) { + return md5_cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return msw << 16 | lsw & 0xffff; +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function bit_rol(num, cnt) { + return num << cnt | num >>> 32 - cnt; +} +module.exports = function md5(buf) { + return helpers.hash(buf, core_md5, 16); +}; + +},{"./helpers":532}],534:[function(require,module,exports){ +"use strict"; + +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS PUB 180-1 + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ + +var helpers = require('./helpers'); + +/* + * Calculate the SHA-1 of an array of big-endian words, and a bit length + */ +function core_sha1(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << 24 - len % 32; + x[(len + 64 >> 9 << 4) + 15] = len; + var w = Array(80); + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + var e = -1009589776; + for (var i = 0; i < x.length; i += 16) { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + var olde = e; + for (var j = 0; j < 80; j++) { + if (j < 16) w[j] = x[i + j];else w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); + var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j))); + e = d; + d = c; + c = rol(b, 30); + b = a; + a = t; + } + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + e = safe_add(e, olde); + } + return Array(a, b, c, d, e); +} + +/* + * Perform the appropriate triplet combination function for the current + * iteration + */ +function sha1_ft(t, b, c, d) { + if (t < 20) return b & c | ~b & d; + if (t < 40) return b ^ c ^ d; + if (t < 60) return b & c | b & d | c & d; + return b ^ c ^ d; +} + +/* + * Determine the appropriate additive constant for the current iteration + */ +function sha1_kt(t) { + return t < 20 ? 1518500249 : t < 40 ? 1859775393 : t < 60 ? -1894007588 : -899497514; +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return msw << 16 | lsw & 0xffff; +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function rol(num, cnt) { + return num << cnt | num >>> 32 - cnt; +} +module.exports = function sha1(buf) { + return helpers.hash(buf, core_sha1, 20, true); +}; + +},{"./helpers":532}],535:[function(require,module,exports){ +"use strict"; + +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ + +var helpers = require('./helpers'); +var safe_add = function safe_add(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return msw << 16 | lsw & 0xffff; +}; +var S = function S(X, n) { + return X >>> n | X << 32 - n; +}; +var R = function R(X, n) { + return X >>> n; +}; +var Ch = function Ch(x, y, z) { + return x & y ^ ~x & z; +}; +var Maj = function Maj(x, y, z) { + return x & y ^ x & z ^ y & z; +}; +var Sigma0256 = function Sigma0256(x) { + return S(x, 2) ^ S(x, 13) ^ S(x, 22); +}; +var Sigma1256 = function Sigma1256(x) { + return S(x, 6) ^ S(x, 11) ^ S(x, 25); +}; +var Gamma0256 = function Gamma0256(x) { + return S(x, 7) ^ S(x, 18) ^ R(x, 3); +}; +var Gamma1256 = function Gamma1256(x) { + return S(x, 17) ^ S(x, 19) ^ R(x, 10); +}; +var core_sha256 = function core_sha256(m, l) { + var K = new Array(0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0xfc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x6ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2); + var HASH = new Array(0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19); + var W = new Array(64); + var a, b, c, d, e, f, g, h, i, j; + var T1, T2; + /* append padding */ + m[l >> 5] |= 0x80 << 24 - l % 32; + m[(l + 64 >> 9 << 4) + 15] = l; + for (var i = 0; i < m.length; i += 16) { + a = HASH[0]; + b = HASH[1]; + c = HASH[2]; + d = HASH[3]; + e = HASH[4]; + f = HASH[5]; + g = HASH[6]; + h = HASH[7]; + for (var j = 0; j < 64; j++) { + if (j < 16) { + W[j] = m[j + i]; + } else { + W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]); + } + T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]); + T2 = safe_add(Sigma0256(a), Maj(a, b, c)); + h = g; + g = f; + f = e; + e = safe_add(d, T1); + d = c; + c = b; + b = a; + a = safe_add(T1, T2); + } + HASH[0] = safe_add(a, HASH[0]); + HASH[1] = safe_add(b, HASH[1]); + HASH[2] = safe_add(c, HASH[2]); + HASH[3] = safe_add(d, HASH[3]); + HASH[4] = safe_add(e, HASH[4]); + HASH[5] = safe_add(f, HASH[5]); + HASH[6] = safe_add(g, HASH[6]); + HASH[7] = safe_add(h, HASH[7]); + } + return HASH; +}; +module.exports = function sha256(buf) { + return helpers.hash(buf, core_sha256, 32, true); +}; + +},{"./helpers":532}],536:[function(require,module,exports){ +"use strict"; + +module.exports = function () { + return function () {}; +}; + +},{}],537:[function(require,module,exports){ +(function (Buffer){(function (){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); +var _require = require('stream'), + Stream = _require.Stream; +var _require2 = require('../lib/common/utils/isArray'), + isArray = _require2.isArray; +module.exports.string = function isString(obj) { + return typeof obj === 'string'; +}; +module.exports.array = isArray; +module.exports.buffer = Buffer.isBuffer; +function isStream(obj) { + return obj instanceof Stream; +} +module.exports.writableStream = function isWritableStream(obj) { + return isStream(obj) && typeof obj._write === 'function' && (0, _typeof2.default)(obj._writableState) === 'object'; +}; + +}).call(this)}).call(this,{"isBuffer":require("../node_modules/is-buffer/index.js")}) +},{"../lib/common/utils/isArray":67,"../node_modules/is-buffer/index.js":409,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/typeof":91,"stream":468}],538:[function(require,module,exports){ +"use strict"; + +var immediate = require('immediate'); +var process = module.exports = {}; +process.nextTick = immediate; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; +function noop() {} +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; +process.listeners = function (name) { + return []; +}; +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; +process.cwd = function () { + return '/'; +}; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function () { + return 0; +}; + +},{"immediate":401}],539:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.search.js"); +//"version": "2.8.2", +var ClientRequest = require('./lib/request'); +var response = require('./lib/response'); +var extend = require('xtend'); +var statusCodes = require('builtin-status-codes'); +var url = require('url'); +var http = exports; +http.request = function (opts, cb) { + if (typeof opts === 'string') opts = url.parse(opts);else opts = extend(opts); + + // Normally, the page is loaded from http or https, so not specifying a protocol + // will result in a (valid) protocol-relative url. However, this won't work if + // the protocol is something else, like 'file:' + var defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''; + var protocol = opts.protocol || defaultProtocol; + var host = opts.hostname || opts.host; + var port = opts.port; + var path = opts.path || '/'; + + // Necessary for IPv6 addresses + if (host && host.indexOf(':') !== -1) host = '[' + host + ']'; + + // This may be a relative url. The browser should always be able to interpret it correctly. + opts.url = (host ? protocol + '//' + host : '') + (port ? ':' + port : '') + path; + opts.method = (opts.method || 'GET').toUpperCase(); + opts.headers = opts.headers || {}; + + // Also valid opts.auth, opts.mode + + var req = new ClientRequest(opts); + if (cb) req.on('response', cb); + return req; +}; +http.get = function get(opts, cb) { + var req = http.request(opts, cb); + req.end(); + return req; +}; +http.ClientRequest = ClientRequest; +http.IncomingMessage = response.IncomingMessage; +http.Agent = function () {}; +http.Agent.defaultMaxSockets = 4; +http.globalAgent = new http.Agent(); +http.STATUS_CODES = statusCodes; +http.METHODS = ['CHECKOUT', 'CONNECT', 'COPY', 'DELETE', 'GET', 'HEAD', 'LOCK', 'M-SEARCH', 'MERGE', 'MKACTIVITY', 'MKCOL', 'MOVE', 'NOTIFY', 'OPTIONS', 'PATCH', 'POST', 'PROPFIND', 'PROPPATCH', 'PURGE', 'PUT', 'REPORT', 'SEARCH', 'SUBSCRIBE', 'TRACE', 'UNLOCK', 'UNSUBSCRIBE']; + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./lib/request":541,"./lib/response":542,"builtin-status-codes":104,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.search.js":346,"url":543,"xtend":530}],540:[function(require,module,exports){ +(function (global){(function (){ +"use strict"; + +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.promise.js"); +require("core-js/modules/es.array-buffer.constructor.js"); +require("core-js/modules/es.array-buffer.slice.js"); +require("core-js/modules/es.array.slice.js"); +exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream); +exports.writableStream = isFunction(global.WritableStream); +exports.abortController = isFunction(global.AbortController); +exports.blobConstructor = false; +try { + new Blob([new ArrayBuffer(1)]); + exports.blobConstructor = true; +} catch (e) {} + +// The xhr request to example.com may violate some restrictive CSP configurations, +// so if we're running in a browser that supports `fetch`, avoid calling getXHR() +// and assume support for certain features below. +var xhr; +function getXHR() { + // Cache the xhr value + if (xhr !== undefined) return xhr; + if (global.XMLHttpRequest) { + xhr = new global.XMLHttpRequest(); + // If XDomainRequest is available (ie only, where xhr might not work + // cross domain), use the page location. Otherwise use example.com + // Note: this doesn't actually make an http request. + try { + xhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com'); + } catch (e) { + xhr = null; + } + } else { + // Service workers don't have XHR + xhr = null; + } + return xhr; +} +function checkTypeSupport(type) { + var xhr = getXHR(); + if (!xhr) return false; + try { + xhr.responseType = type; + return xhr.responseType === type; + } catch (e) {} + return false; +} + +// For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'. +// Safari 7.1 appears to have fixed this bug. +var haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined'; +var haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice); + +// If fetch is supported, then arraybuffer will be supported too. Skip calling +// checkTypeSupport(), since that calls getXHR(). +exports.arraybuffer = exports.fetch || haveArrayBuffer && checkTypeSupport('arraybuffer'); + +// These next two tests unavoidably show warnings in Chrome. Since fetch will always +// be used if it's available, just return false for these to avoid the warnings. +exports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream'); +exports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer && checkTypeSupport('moz-chunked-arraybuffer'); + +// If fetch is supported, then overrideMimeType will be supported too. Skip calling +// getXHR(). +exports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false); +exports.vbArray = isFunction(global.VBArray); +function isFunction(value) { + return typeof value === 'function'; +} +xhr = null; // Help gc + +}).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"core-js/modules/es.array-buffer.constructor.js":308,"core-js/modules/es.array-buffer.slice.js":309,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333}],541:[function(require,module,exports){ +(function (process,global,Buffer){(function (){ +"use strict"; + +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.regexp.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.object.keys.js"); +require("core-js/modules/es.array.concat.js"); +require("core-js/modules/es.array.map.js"); +require("core-js/modules/es.function.name.js"); +require("core-js/modules/es.promise.js"); +var capability = require('./capability'); +var inherits = require('inherits'); +var response = require('./response'); +var stream = require('readable-stream'); +var toArrayBuffer = require('to-arraybuffer'); +var IncomingMessage = response.IncomingMessage; +var rStates = response.readyStates; +function decideMode(preferBinary, useFetch) { + if (capability.fetch && useFetch) { + return 'fetch'; + } else if (capability.mozchunkedarraybuffer) { + return 'moz-chunked-arraybuffer'; + } else if (capability.msstream) { + return 'ms-stream'; + } else if (capability.arraybuffer && preferBinary) { + return 'arraybuffer'; + } else if (capability.vbArray && preferBinary) { + return 'text:vbarray'; + } else { + return 'text'; + } +} +var ClientRequest = module.exports = function (opts) { + var self = this; + stream.Writable.call(self); + self._opts = opts; + self._body = []; + self._headers = {}; + if (opts.auth) self.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64')); + Object.keys(opts.headers).forEach(function (name) { + self.setHeader(name, opts.headers[name]); + }); + var preferBinary; + var useFetch = true; + if (opts.mode === 'disable-fetch' || 'requestTimeout' in opts && !capability.abortController) { + // If the use of XHR should be preferred. Not typically needed. + useFetch = false; + preferBinary = true; + } else if (opts.mode === 'prefer-streaming') { + // If streaming is a high priority but binary compatibility and + // the accuracy of the 'content-type' header aren't + preferBinary = false; + } else if (opts.mode === 'allow-wrong-content-type') { + // If streaming is more important than preserving the 'content-type' header + preferBinary = !capability.overrideMimeType; + } else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') { + // Use binary if text streaming may corrupt data or the content-type header, or for speed + preferBinary = true; + } else { + throw new Error('Invalid value for opts.mode'); + } + self._mode = decideMode(preferBinary, useFetch); + self._fetchTimer = null; + self.on('finish', function () { + self._onFinish(); + }); +}; +inherits(ClientRequest, stream.Writable); +ClientRequest.prototype.setHeader = function (name, value) { + var self = this; + var lowerName = name.toLowerCase(); + // This check is not necessary, but it prevents warnings from browsers about setting unsafe + // headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but + // http-browserify did it, so I will too. + if (unsafeHeaders.indexOf(lowerName) !== -1) return; + self._headers[lowerName] = { + name: name, + value: value + }; +}; +ClientRequest.prototype.getHeader = function (name) { + var header = this._headers[name.toLowerCase()]; + if (header) return header.value; + return null; +}; +ClientRequest.prototype.removeHeader = function (name) { + var self = this; + delete self._headers[name.toLowerCase()]; +}; +ClientRequest.prototype._onFinish = function () { + var self = this; + if (self._destroyed) return; + var opts = self._opts; + var headersObj = self._headers; + var body = null; + if (opts.method !== 'GET' && opts.method !== 'HEAD') { + if (capability.arraybuffer) { + body = toArrayBuffer(Buffer.concat(self._body)); + } else if (capability.blobConstructor) { + body = new global.Blob(self._body.map(function (buffer) { + return toArrayBuffer(buffer); + }), { + type: (headersObj['content-type'] || {}).value || '' + }); + } else { + // get utf8 string + body = Buffer.concat(self._body).toString(); + } + } + + // create flattened list of headers + var headersList = []; + Object.keys(headersObj).forEach(function (keyName) { + var name = headersObj[keyName].name; + var value = headersObj[keyName].value; + if (Array.isArray(value)) { + value.forEach(function (v) { + headersList.push([name, v]); + }); + } else { + headersList.push([name, value]); + } + }); + if (self._mode === 'fetch') { + var signal = null; + var fetchTimer = null; + if (capability.abortController) { + var controller = new AbortController(); + signal = controller.signal; + self._fetchAbortController = controller; + if ('requestTimeout' in opts && opts.requestTimeout !== 0) { + self._fetchTimer = global.setTimeout(function () { + self.emit('requestTimeout'); + if (self._fetchAbortController) self._fetchAbortController.abort(); + }, opts.requestTimeout); + } + } + global.fetch(self._opts.url, { + method: self._opts.method, + headers: headersList, + body: body || undefined, + mode: 'cors', + credentials: opts.withCredentials ? 'include' : 'same-origin', + signal: signal + }).then(function (response) { + self._fetchResponse = response; + self._connect(); + }, function (reason) { + global.clearTimeout(self._fetchTimer); + if (!self._destroyed) self.emit('error', reason); + }); + } else { + var xhr = self._xhr = new global.XMLHttpRequest(); + try { + xhr.open(self._opts.method, self._opts.url, true); + } catch (err) { + process.nextTick(function () { + self.emit('error', err); + }); + return; + } + + // Can't set responseType on really old browsers + if ('responseType' in xhr) xhr.responseType = self._mode.split(':')[0]; + if ('withCredentials' in xhr) xhr.withCredentials = !!opts.withCredentials; + if (self._mode === 'text' && 'overrideMimeType' in xhr) xhr.overrideMimeType('text/plain; charset=x-user-defined'); + if ('requestTimeout' in opts) { + xhr.timeout = opts.requestTimeout; + xhr.ontimeout = function () { + self.emit('requestTimeout'); + }; + } + headersList.forEach(function (header) { + xhr.setRequestHeader(header[0], header[1]); + }); + self._response = null; + xhr.onreadystatechange = function () { + switch (xhr.readyState) { + case rStates.LOADING: + case rStates.DONE: + self._onXHRProgress(); + break; + } + }; + // Necessary for streaming in Firefox, since xhr.response is ONLY defined + // in onprogress, not in onreadystatechange with xhr.readyState = 3 + if (self._mode === 'moz-chunked-arraybuffer') { + xhr.onprogress = function () { + self._onXHRProgress(); + }; + } + xhr.onerror = function () { + if (self._destroyed) return; + self.emit('error', new Error('XHR error')); + }; + try { + xhr.send(body); + } catch (err) { + process.nextTick(function () { + self.emit('error', err); + }); + return; + } + } +}; + +/** + * Checks if xhr.status is readable and non-zero, indicating no error. + * Even though the spec says it should be available in readyState 3, + * accessing it throws an exception in IE8 + */ +function statusValid(xhr) { + try { + var status = xhr.status; + return status !== null && status !== 0; + } catch (e) { + return false; + } +} +ClientRequest.prototype._onXHRProgress = function () { + var self = this; + if (!statusValid(self._xhr) || self._destroyed) return; + if (!self._response) self._connect(); + self._response._onXHRProgress(); +}; +ClientRequest.prototype._connect = function () { + var self = this; + if (self._destroyed) return; + self._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._fetchTimer); + self._response.on('error', function (err) { + self.emit('error', err); + }); + self.emit('response', self._response); +}; +ClientRequest.prototype._write = function (chunk, encoding, cb) { + var self = this; + self._body.push(chunk); + cb(); +}; +ClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () { + var self = this; + self._destroyed = true; + global.clearTimeout(self._fetchTimer); + if (self._response) self._response._destroyed = true; + if (self._xhr) self._xhr.abort();else if (self._fetchAbortController) self._fetchAbortController.abort(); +}; +ClientRequest.prototype.end = function (data, encoding, cb) { + var self = this; + if (typeof data === 'function') { + cb = data; + data = undefined; + } + stream.Writable.prototype.end.call(self, data, encoding, cb); +}; +ClientRequest.prototype.flushHeaders = function () {}; +ClientRequest.prototype.setTimeout = function () {}; +ClientRequest.prototype.setNoDelay = function () {}; +ClientRequest.prototype.setSocketKeepAlive = function () {}; + +// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method +var unsafeHeaders = ['accept-charset', 'accept-encoding', 'access-control-request-headers', 'access-control-request-method', 'connection', 'content-length', 'cookie', 'cookie2', 'date', 'dnt', 'expect', 'host', 'keep-alive', 'origin', 'referer', 'te', 'trailer', 'transfer-encoding', 'upgrade', 'user-agent', 'via']; + +}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) +},{"./capability":540,"./response":542,"_process":538,"buffer":103,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.map.js":318,"core-js/modules/es.function.name.js":322,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/web.dom-collections.for-each.js":380,"inherits":407,"readable-stream":463,"to-arraybuffer":485}],542:[function(require,module,exports){ +(function (process,global,Buffer){(function (){ +"use strict"; + +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/web.dom-collections.for-each.js"); +require("core-js/modules/es.promise.js"); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.split.js"); +require("core-js/modules/es.string.match.js"); +require("core-js/modules/es.array.iterator.js"); +require("core-js/modules/es.array-buffer.slice.js"); +require("core-js/modules/es.typed-array.uint8-array.js"); +require("core-js/modules/es.typed-array.copy-within.js"); +require("core-js/modules/es.typed-array.every.js"); +require("core-js/modules/es.typed-array.fill.js"); +require("core-js/modules/es.typed-array.filter.js"); +require("core-js/modules/es.typed-array.find.js"); +require("core-js/modules/es.typed-array.find-index.js"); +require("core-js/modules/es.typed-array.for-each.js"); +require("core-js/modules/es.typed-array.includes.js"); +require("core-js/modules/es.typed-array.index-of.js"); +require("core-js/modules/es.typed-array.iterator.js"); +require("core-js/modules/es.typed-array.join.js"); +require("core-js/modules/es.typed-array.last-index-of.js"); +require("core-js/modules/es.typed-array.map.js"); +require("core-js/modules/es.typed-array.reduce.js"); +require("core-js/modules/es.typed-array.reduce-right.js"); +require("core-js/modules/es.typed-array.reverse.js"); +require("core-js/modules/es.typed-array.set.js"); +require("core-js/modules/es.typed-array.slice.js"); +require("core-js/modules/es.typed-array.some.js"); +require("core-js/modules/es.typed-array.sort.js"); +require("core-js/modules/es.typed-array.subarray.js"); +require("core-js/modules/es.typed-array.to-locale-string.js"); +require("core-js/modules/es.typed-array.to-string.js"); +require("core-js/modules/es.array.slice.js"); +var capability = require('./capability'); +var inherits = require('inherits'); +var stream = require('readable-stream'); +var rStates = exports.readyStates = { + UNSENT: 0, + OPENED: 1, + HEADERS_RECEIVED: 2, + LOADING: 3, + DONE: 4 +}; +var IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, fetchTimer) { + var self = this; + stream.Readable.call(self); + self._mode = mode; + self.headers = {}; + self.rawHeaders = []; + self.trailers = {}; + self.rawTrailers = []; + + // Fake the 'close' event, but only once 'end' fires + self.on('end', function () { + // The nextTick is necessary to prevent the 'request' module from causing an infinite loop + process.nextTick(function () { + self.emit('close'); + }); + }); + if (mode === 'fetch') { + var read = function read() { + reader.read().then(function (result) { + if (self._destroyed) return; + if (result.done) { + global.clearTimeout(fetchTimer); + self.push(null); + return; + } + self.push(new Buffer(result.value)); + read(); + }).catch(function (err) { + global.clearTimeout(fetchTimer); + if (!self._destroyed) self.emit('error', err); + }); + }; + self._fetchResponse = response; + self.url = response.url; + self.statusCode = response.status; + self.statusMessage = response.statusText; + response.headers.forEach(function (header, key) { + self.headers[key.toLowerCase()] = header; + self.rawHeaders.push(key, header); + }); + if (capability.writableStream) { + var writable = new WritableStream({ + write: function write(chunk) { + return new Promise(function (resolve, reject) { + if (self._destroyed) { + reject(); + } else if (self.push(new Buffer(chunk))) { + resolve(); + } else { + self._resumeFetch = resolve; + } + }); + }, + close: function close() { + global.clearTimeout(fetchTimer); + if (!self._destroyed) self.push(null); + }, + abort: function abort(err) { + if (!self._destroyed) self.emit('error', err); + } + }); + try { + response.body.pipeTo(writable).catch(function (err) { + global.clearTimeout(fetchTimer); + if (!self._destroyed) self.emit('error', err); + }); + return; + } catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this + } + // fallback for when writableStream or pipeTo aren't available + var reader = response.body.getReader(); + read(); + } else { + self._xhr = xhr; + self._pos = 0; + self.url = xhr.responseURL; + self.statusCode = xhr.status; + self.statusMessage = xhr.statusText; + var headers = xhr.getAllResponseHeaders().split(/\r?\n/); + headers.forEach(function (header) { + var matches = header.match(/^([^:]+):\s*(.*)/); + if (matches) { + var key = matches[1].toLowerCase(); + if (key === 'set-cookie') { + if (self.headers[key] === undefined) { + self.headers[key] = []; + } + self.headers[key].push(matches[2]); + } else if (self.headers[key] !== undefined) { + self.headers[key] += ', ' + matches[2]; + } else { + self.headers[key] = matches[2]; + } + self.rawHeaders.push(matches[1], matches[2]); + } + }); + self._charset = 'x-user-defined'; + if (!capability.overrideMimeType) { + var mimeType = self.rawHeaders['mime-type']; + if (mimeType) { + var charsetMatch = mimeType.match(/;\s*charset=([^;])(;|$)/); + if (charsetMatch) { + self._charset = charsetMatch[1].toLowerCase(); + } + } + if (!self._charset) self._charset = 'utf-8'; // best guess + } + } +}; +inherits(IncomingMessage, stream.Readable); +IncomingMessage.prototype._read = function () { + var self = this; + var resolve = self._resumeFetch; + if (resolve) { + self._resumeFetch = null; + resolve(); + } +}; +IncomingMessage.prototype._onXHRProgress = function () { + var self = this; + var xhr = self._xhr; + var response = null; + switch (self._mode) { + case 'text:vbarray': + // For IE9 + if (xhr.readyState !== rStates.DONE) break; + try { + // This fails in IE8 + response = new global.VBArray(xhr.responseBody).toArray(); + } catch (e) {} + if (response !== null) { + self.push(new Buffer(response)); + break; + } + // Falls through in IE8 + case 'text': + try { + // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4 + response = xhr.responseText; + } catch (e) { + self._mode = 'text:vbarray'; + break; + } + if (response.length > self._pos) { + var newData = response.substr(self._pos); + if (self._charset === 'x-user-defined') { + var buffer = new Buffer(newData.length); + for (var i = 0; i < newData.length; i++) buffer[i] = newData.charCodeAt(i) & 0xff; + self.push(buffer); + } else { + self.push(newData, self._charset); + } + self._pos = response.length; + } + break; + case 'arraybuffer': + if (xhr.readyState !== rStates.DONE || !xhr.response) break; + response = xhr.response; + self.push(new Buffer(new Uint8Array(response))); + break; + case 'moz-chunked-arraybuffer': + // take whole + response = xhr.response; + if (xhr.readyState !== rStates.LOADING || !response) break; + self.push(new Buffer(new Uint8Array(response))); + break; + case 'ms-stream': + response = xhr.response; + if (xhr.readyState !== rStates.LOADING) break; + var reader = new global.MSStreamReader(); + reader.onprogress = function () { + if (reader.result.byteLength > self._pos) { + self.push(new Buffer(new Uint8Array(reader.result.slice(self._pos)))); + self._pos = reader.result.byteLength; + } + }; + reader.onload = function () { + self.push(null); + }; + // reader.onerror = ??? // TODO: this + reader.readAsArrayBuffer(response); + break; + } + + // The ms-stream case handles end separately in reader.onload() + if (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') { + self.push(null); + } +}; + +}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) +},{"./capability":540,"_process":538,"buffer":103,"core-js/modules/es.array-buffer.slice.js":309,"core-js/modules/es.array.iterator.js":316,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.match.js":344,"core-js/modules/es.string.split.js":347,"core-js/modules/es.typed-array.copy-within.js":356,"core-js/modules/es.typed-array.every.js":357,"core-js/modules/es.typed-array.fill.js":358,"core-js/modules/es.typed-array.filter.js":359,"core-js/modules/es.typed-array.find-index.js":360,"core-js/modules/es.typed-array.find.js":361,"core-js/modules/es.typed-array.for-each.js":362,"core-js/modules/es.typed-array.includes.js":363,"core-js/modules/es.typed-array.index-of.js":364,"core-js/modules/es.typed-array.iterator.js":365,"core-js/modules/es.typed-array.join.js":366,"core-js/modules/es.typed-array.last-index-of.js":367,"core-js/modules/es.typed-array.map.js":368,"core-js/modules/es.typed-array.reduce-right.js":369,"core-js/modules/es.typed-array.reduce.js":370,"core-js/modules/es.typed-array.reverse.js":371,"core-js/modules/es.typed-array.set.js":372,"core-js/modules/es.typed-array.slice.js":373,"core-js/modules/es.typed-array.some.js":374,"core-js/modules/es.typed-array.sort.js":375,"core-js/modules/es.typed-array.subarray.js":376,"core-js/modules/es.typed-array.to-locale-string.js":377,"core-js/modules/es.typed-array.to-string.js":378,"core-js/modules/es.typed-array.uint8-array.js":379,"core-js/modules/web.dom-collections.for-each.js":380,"inherits":407,"readable-stream":463}],543:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.string.search.js"); +require("core-js/modules/es.array.concat.js"); +require("core-js/modules/es.string.split.js"); +require("core-js/modules/es.string.replace.js"); +require("core-js/modules/es.array.join.js"); +require("core-js/modules/es.string.trim.js"); +require("core-js/modules/es.string.match.js"); +require("core-js/modules/es.array.slice.js"); +require("core-js/modules/es.object.keys.js"); +require("core-js/modules/es.array.splice.js"); +var punycode = require('punycode'); +var util = require('./util'); +exports.parse = urlParse; +exports.resolve = urlResolve; +exports.resolveObject = urlResolveObject; +exports.format = urlFormat; +exports.Url = Url; +function Url() { + this.protocol = null; + this.slashes = null; + this.auth = null; + this.host = null; + this.port = null; + this.hostname = null; + this.hash = null; + this.search = null; + this.query = null; + this.pathname = null; + this.path = null; + this.href = null; +} + +// Reference: RFC 3986, RFC 1808, RFC 2396 + +// define these here so at least they only have to be +// compiled once on the first module load. +var protocolPattern = /^([a-z0-9.+-]+:)/i, + portPattern = /:[0-9]*$/, + // Special case for a simple path URL + simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, + // RFC 2396: characters reserved for delimiting URLs. + // We actually just auto-escape these. + delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], + // RFC 2396: characters not allowed for various reasons. + unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), + // Allowed by RFCs, but cause of XSS attacks. Always escape these. + autoEscape = ["'"].concat(unwise), + // Characters that are never ever allowed in a hostname. + // Note that any invalid chars are also handled, but these + // are the ones that are *expected* to be seen, so we fast-path + // them. + nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), + hostEndingChars = ['/', '?', '#'], + hostnameMaxLen = 255, + hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, + // protocols that can allow "unsafe" and "unwise" chars. + unsafeProtocol = { + javascript: true, + 'javascript:': true + }, + // protocols that never have a hostname. + hostlessProtocol = { + javascript: true, + 'javascript:': true + }, + // protocols that always contain a // bit. + slashedProtocol = { + http: true, + https: true, + ftp: true, + gopher: true, + file: true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }, + querystring = require('querystring'); +function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && util.isObject(url) && url instanceof Url) return url; + var u = new Url(); + u.parse(url, parseQueryString, slashesDenoteHost); + return u; +} +Url.prototype.parse = function (url, parseQueryString, slashesDenoteHost) { + if (!util.isString(url)) { + throw new TypeError("Parameter 'url' must be a string, not " + (0, _typeof2.default)(url)); + } + + // Copy chrome, IE, opera backslash-handling behavior. + // Back slashes before the query string get converted to forward slashes + // See: https://code.google.com/p/chromium/issues/detail?id=25916 + var queryIndex = url.indexOf('?'), + splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#', + uSplit = url.split(splitter), + slashRegex = /\\/g; + uSplit[0] = uSplit[0].replace(slashRegex, '/'); + url = uSplit.join(splitter); + var rest = url; + + // trim before proceeding. + // This is to support parse stuff like " http://foo.com \n" + rest = rest.trim(); + if (!slashesDenoteHost && url.split('#').length === 1) { + // Try fast path regexp + var simplePath = simplePathPattern.exec(rest); + if (simplePath) { + this.path = rest; + this.href = rest; + this.pathname = simplePath[1]; + if (simplePath[2]) { + this.search = simplePath[2]; + if (parseQueryString) { + this.query = querystring.parse(this.search.substr(1)); + } else { + this.query = this.search.substr(1); + } + } else if (parseQueryString) { + this.search = ''; + this.query = {}; + } + return this; + } + } + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + // figure out if it's got a host + // user@server is *always* interpreted as a hostname, and url + // resolution will treat //foo/bar as host=foo,path=bar because that's + // how the browser resolves relative URLs. + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) { + // there's a hostname. + // the first instance of /, ?, ;, or # ends the host. + // + // If there is an @ in the hostname, then non-host chars *are* allowed + // to the left of the last @ sign, unless some host-ending character + // comes *before* the @-sign. + // URLs are obnoxious. + // + // ex: + // http://a@b@c/ => user:a@b host:c + // http://a@b?@c => user:a host:c path:/?@c + + // v0.12 TODO(isaacs): This is not quite how Chrome does things. + // Review our test case against browsers more comprehensively. + + // find the first instance of any hostEndingChars + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec; + } + + // at this point, either we have an explicit point where the + // auth portion cannot go past, or the last @ char is the decider. + var auth, atSign; + if (hostEnd === -1) { + // atSign can be anywhere. + atSign = rest.lastIndexOf('@'); + } else { + // atSign must be in auth portion. + // http://a@b/c@d => host:b auth:a path:/c@d + atSign = rest.lastIndexOf('@', hostEnd); + } + + // Now we have a portion which is definitely the auth. + // Pull that off. + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + // the host is the remaining to the left of the first non-host char + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec; + } + // if we still have not hit it, then the entire thing is a host. + if (hostEnd === -1) hostEnd = rest.length; + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + // pull out port. + this.parseHost(); + + // we've indicated that there is a hostname, + // so even if it's empty, it has to be present. + this.hostname = this.hostname || ''; + + // if hostname begins with [ and ends with ] + // assume that it's an IPv6 address. + var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']'; + + // validate a little. + if (!ipv6Hostname) { + var hostparts = this.hostname.split('.'); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) continue; + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + // we replace non-ASCII char with a temporary placeholder + // we need this to make sure size of hostname is not + // broken by replacing non-ASCII by nothing + newpart += 'x'; + } else { + newpart += part[j]; + } + } + // we test again with ASCII char only + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; + } + } + } + } + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + // hostnames are always lower case. + this.hostname = this.hostname.toLowerCase(); + } + if (!ipv6Hostname) { + // IDNA Support: Returns a punycoded representation of "domain". + // It only converts parts of the domain name that + // have non-ASCII characters, i.e. it doesn't matter if + // you call it with a domain that already is ASCII-only. + this.hostname = punycode.toASCII(this.hostname); + } + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + // strip [ and ] from the hostname + // the host field still retains them, though + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + // now rest is set to the post-host stuff. + // chop off any delim chars. + if (!unsafeProtocol[lowerProto]) { + // First, make 100% sure that any "autoEscape" chars get + // escaped, even if encodeURIComponent doesn't think they + // need to be. + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + if (rest.indexOf(ae) === -1) continue; + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + // chop off from the tail first. + var hash = rest.indexOf('#'); + if (hash !== -1) { + // got a fragment string. + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + // no query string, but parseQueryString still requested + this.search = ''; + this.query = {}; + } + if (rest) this.pathname = rest; + if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) { + this.pathname = '/'; + } + + //to support http.request + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + // finally, reconstruct the href based on what has been validated. + this.href = this.format(); + return this; +}; + +// format a parsed object into a url string +function urlFormat(obj) { + // ensure it's an object, and not a string url. + // If it's an obj, this is a no-op. + // this way, you can call url_format() on strings + // to clean up potentially wonky urls. + if (util.isString(obj)) obj = urlParse(obj); + if (!(obj instanceof Url)) return Url.prototype.format.call(obj); + return obj.format(); +} +Url.prototype.format = function () { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } + if (this.query && util.isObject(this.query) && Object.keys(this.query).length) { + query = querystring.stringify(this.query); + } + var search = this.search || query && '?' + query || ''; + if (protocol && protocol.substr(-1) !== ':') protocol += ':'; + + // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. + // unless they had them to begin with. + if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; + } else if (!host) { + host = ''; + } + if (hash && hash.charAt(0) !== '#') hash = '#' + hash; + if (search && search.charAt(0) !== '?') search = '?' + search; + pathname = pathname.replace(/[?#]/g, function (match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + return protocol + host + pathname + search + hash; +}; +function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); +} +Url.prototype.resolve = function (relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); +}; +function urlResolveObject(source, relative) { + if (!source) return relative; + return urlParse(source, false, true).resolveObject(relative); +} +Url.prototype.resolveObject = function (relative) { + if (util.isString(relative)) { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + var result = new Url(); + var tkeys = Object.keys(this); + for (var tk = 0; tk < tkeys.length; tk++) { + var tkey = tkeys[tk]; + result[tkey] = this[tkey]; + } + + // hash is always overridden, no matter what. + // even href="" will remove it. + result.hash = relative.hash; + + // if the relative url is empty, then there's nothing left to do here. + if (relative.href === '') { + result.href = result.format(); + return result; + } + + // hrefs like //foo/bar always cut to the protocol. + if (relative.slashes && !relative.protocol) { + // take everything except the protocol from relative + var rkeys = Object.keys(relative); + for (var rk = 0; rk < rkeys.length; rk++) { + var rkey = rkeys[rk]; + if (rkey !== 'protocol') result[rkey] = relative[rkey]; + } + + //urlParse appends trailing / to urls like http://www.example.com + if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) { + result.path = result.pathname = '/'; + } + result.href = result.format(); + return result; + } + if (relative.protocol && relative.protocol !== result.protocol) { + // if it's a known url protocol, then changing + // the protocol does weird things + // first, if it's not file:, then we MUST have a host, + // and if there was a path + // to begin with, then we MUST have a path. + // if it is file:, then the host is dropped, + // because that's known to be hostless. + // anything else is assumed to be absolute. + if (!slashedProtocol[relative.protocol]) { + var keys = Object.keys(relative); + for (var v = 0; v < keys.length; v++) { + var k = keys[v]; + result[k] = relative[k]; + } + result.href = result.format(); + return result; + } + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())); + if (!relative.host) relative.host = ''; + if (!relative.hostname) relative.hostname = ''; + if (relPath[0] !== '') relPath.unshift(''); + if (relPath.length < 2) relPath.unshift(''); + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + // to support http.request + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/', + isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/', + mustEndAbs = isRelAbs || isSourceAbs || result.host && relative.pathname, + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + relPath = relative.pathname && relative.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + // if the url is a non-slashed url, then relative + // links like ../.. should be able + // to crawl up to the hostname, as well. This is strange. + // result.protocol has already been set by now. + // Later on, put the first path part into the host field. + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') srcPath[0] = result.host;else srcPath.unshift(result.host); + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') relPath[0] = relative.host;else relPath.unshift(relative.host); + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + if (isRelAbs) { + // it's absolute. + result.host = relative.host || relative.host === '' ? relative.host : result.host; + result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + // fall through to the dot-handling below. + } else if (relPath.length) { + // it's relative + // throw away the existing file, and take the new path instead. + if (!srcPath) srcPath = []; + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (!util.isNullOrUndefined(relative.search)) { + // just pull out the search. + // like href='?foo'. + // Put this after the other two cases because it simplifies the booleans + if (psychotic) { + result.hostname = result.host = srcPath.shift(); + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + result.search = relative.search; + result.query = relative.query; + //to support http.request + if (!util.isNull(result.pathname) || !util.isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + if (!srcPath.length) { + // no path at all. easy. + // we've already handled the other stuff above. + result.pathname = null; + //to support http.request + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + // if a url ENDs in . or .., then it must get a trailing slash. + // however, if it ends in anything else non-slashy, + // then it must NOT get a trailing slash. + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === ''; + + // strip single dots, resolve double dots to parent dir + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last === '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + if (hasTrailingSlash && srcPath.join('/').substr(-1) !== '/') { + srcPath.push(''); + } + var isAbsolute = srcPath[0] === '' || srcPath[0] && srcPath[0].charAt(0) === '/'; + + // put the host back + if (psychotic) { + result.hostname = result.host = isAbsolute ? '' : srcPath.length ? srcPath.shift() : ''; + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + mustEndAbs = mustEndAbs || result.host && srcPath.length; + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + if (!srcPath.length) { + result.pathname = null; + result.path = null; + } else { + result.pathname = srcPath.join('/'); + } + + //to support request.http + if (!util.isNull(result.pathname) || !util.isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; +}; +Url.prototype.parseHost = function () { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) this.hostname = host; +}; + +},{"./util":544,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/typeof":91,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.join.js":317,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.array.splice.js":321,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.match.js":344,"core-js/modules/es.string.replace.js":345,"core-js/modules/es.string.search.js":346,"core-js/modules/es.string.split.js":347,"core-js/modules/es.string.trim.js":349,"punycode":443,"querystring":451}],544:[function(require,module,exports){ +'use strict'; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); +module.exports = { + isString: function isString(arg) { + return typeof arg === 'string'; + }, + isObject: function isObject(arg) { + return (0, _typeof2.default)(arg) === 'object' && arg !== null; + }, + isNull: function isNull(arg) { + return arg === null; + }, + isNullOrUndefined: function isNullOrUndefined(arg) { + return arg == null; + } +}; + +},{"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/typeof":91}],545:[function(require,module,exports){ +"use strict"; + +require("core-js/modules/es.number.constructor.js"); +// copy from https://github.com/node-modules/utility for browser + +exports.encodeURIComponent = function (text) { + try { + return encodeURIComponent(text); + } catch (e) { + return text; + } +}; +exports.escape = require('escape-html'); +exports.timestamp = function timestamp(t) { + if (t) { + var v = t; + if (typeof v === 'string') { + v = Number(v); + } + if (String(t).length === 10) { + v *= 1000; + } + return new Date(v); + } + return Math.round(Date.now() / 1000); +}; + +},{"core-js/modules/es.number.constructor.js":324,"escape-html":385}],546:[function(require,module,exports){ +(function (process,Buffer){(function (){ +'use strict'; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); +var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); +require("core-js/modules/es.string.trim.js"); +require("core-js/modules/es.object.to-string.js"); +require("core-js/modules/es.promise.js"); +require("core-js/modules/es.regexp.exec.js"); +require("core-js/modules/es.function.name.js"); +require("core-js/modules/es.array.concat.js"); +var util = require('util'); +var urlutil = require('url'); +var http = require('http'); +var https = require('https'); +var debug = require('debug')('urllib'); +var ms = require('humanize-ms'); +var REQUEST_ID = 0; +var MAX_VALUE = Math.pow(2, 31) - 10; +var PROTO_RE = /^https?:\/\//i; +function getAgent(agent, defaultAgent) { + return agent === undefined ? defaultAgent : agent; +} +function parseContentType(str) { + if (!str) { + return ''; + } + return str.split(';')[0].trim().toLowerCase(); +} +function makeCallback(resolve, reject) { + return function (err, data, res) { + if (err) { + return reject(err); + } + resolve({ + data: data, + status: res.statusCode, + headers: res.headers, + res: res + }); + }; +} + +// exports.TIMEOUT = ms('5s'); +exports.TIMEOUTS = [ms('300s'), ms('300s')]; +var TEXT_DATA_TYPES = ['json', 'text']; +exports.request = function request(url, args, callback) { + // request(url, callback) + if (arguments.length === 2 && typeof args === 'function') { + callback = args; + args = null; + } + if (typeof callback === 'function') { + return exports.requestWithCallback(url, args, callback); + } + return new Promise(function (resolve, reject) { + exports.requestWithCallback(url, args, makeCallback(resolve, reject)); + }); +}; +exports.requestWithCallback = function requestWithCallback(url, args, callback) { + if (!url || typeof url !== 'string' && (0, _typeof2.default)(url) !== 'object') { + var msg = util.format('expect request url to be a string or a http request options, but got' + ' %j', url); + throw new Error(msg); + } + if (arguments.length === 2 && typeof args === 'function') { + callback = args; + args = null; + } + args = args || {}; + if (REQUEST_ID >= MAX_VALUE) { + REQUEST_ID = 0; + } + var reqId = ++REQUEST_ID; + args.requestUrls = args.requestUrls || []; + var reqMeta = { + requestId: reqId, + url: url, + args: args, + ctx: args.ctx + }; + if (args.emitter) { + args.emitter.emit('request', reqMeta); + } + args.timeout = args.timeout || exports.TIMEOUTS; + args.maxRedirects = args.maxRedirects || 10; + args.streaming = args.streaming || args.customResponse; + var requestStartTime = Date.now(); + var parsedUrl; + if (typeof url === 'string') { + if (!PROTO_RE.test(url)) { + // Support `request('www.server.com')` + url = 'https://' + url; + } + parsedUrl = urlutil.parse(url); + } else { + parsedUrl = url; + } + var method = (args.type || args.method || parsedUrl.method || 'GET').toUpperCase(); + var port = parsedUrl.port || 80; + var httplib = http; + var agent = getAgent(args.agent, exports.agent); + var fixJSONCtlChars = args.fixJSONCtlChars; + if (parsedUrl.protocol === 'https:') { + httplib = https; + agent = getAgent(args.httpsAgent, exports.httpsAgent); + if (!parsedUrl.port) { + port = 443; + } + } + + // request through proxy tunnel + // var proxyTunnelAgent = detectProxyAgent(parsedUrl, args); + // if (proxyTunnelAgent) { + // agent = proxyTunnelAgent; + // } + + var options = { + host: parsedUrl.hostname || parsedUrl.host || 'localhost', + path: parsedUrl.path || '/', + method: method, + port: port, + agent: agent, + headers: args.headers || {}, + // default is dns.lookup + // https://github.com/nodejs/node/blob/master/lib/net.js#L986 + // custom dnslookup require node >= 4.0.0 + // https://github.com/nodejs/node/blob/archived-io.js-v0.12/lib/net.js#L952 + lookup: args.lookup + }; + if (Array.isArray(args.timeout)) { + options.requestTimeout = args.timeout[args.timeout.length - 1]; + } else if (typeof args.timeout !== 'undefined') { + options.requestTimeout = args.timeout; + } + + // const sslNames = [ + // 'pfx', + // 'key', + // 'passphrase', + // 'cert', + // 'ca', + // 'ciphers', + // 'rejectUnauthorized', + // 'secureProtocol', + // 'secureOptions', + // ]; + // for (let i = 0; i < sslNames.length; i++) { + // const name = sslNames[i]; + // if (args.hasOwnProperty(name)) { + // options[name] = args[name]; + // } + // } + + // don't check ssl + // if (options.rejectUnauthorized === false && !options.hasOwnProperty('secureOptions')) { + // options.secureOptions = require('constants').SSL_OP_NO_TLSv1_2; + // } + + var auth = args.auth || parsedUrl.auth; + if (auth) { + options.auth = auth; + } + + // content undefined data 有值 + var body = args.content || args.data; + var dataAsQueryString = method === 'GET' || method === 'HEAD' || args.dataAsQueryString; + if (!args.content) { + if (body && !(typeof body === 'string' || Buffer.isBuffer(body))) { + if (dataAsQueryString) { + // read: GET, HEAD, use query string + body = args.nestedQuerystring ? qs.stringify(body) : querystring.stringify(body); + } else { + var contentType = options.headers['Content-Type'] || options.headers['content-type']; + // auto add application/x-www-form-urlencoded when using urlencode form request + if (!contentType) { + if (args.contentType === 'json') { + contentType = 'application/json'; + } else { + contentType = 'application/x-www-form-urlencoded'; + } + options.headers['Content-Type'] = contentType; + } + if (parseContentType(contentType) === 'application/json') { + body = JSON.stringify(body); + } else { + // 'application/x-www-form-urlencoded' + body = args.nestedQuerystring ? qs.stringify(body) : querystring.stringify(body); + } + } + } + } + + // if it's a GET or HEAD request, data should be sent as query string + if (dataAsQueryString && body) { + options.path += (parsedUrl.query ? '&' : '?') + body; + body = null; + } + var requestSize = 0; + if (body) { + var length = body.length; + if (!Buffer.isBuffer(body)) { + length = Buffer.byteLength(body); + } + requestSize = options.headers['Content-Length'] = length; + } + if (args.dataType === 'json') { + options.headers.Accept = 'application/json'; + } + if (typeof args.beforeRequest === 'function') { + // you can use this hook to change every thing. + args.beforeRequest(options); + } + var connectTimer = null; + var responseTimer = null; + var __err = null; + var connected = false; // socket connected or not + var keepAliveSocket = false; // request with keepalive socket + var responseSize = 0; + var statusCode = -1; + var responseAborted = false; + var remoteAddress = ''; + var remotePort = ''; + var timing = null; + if (args.timing) { + timing = { + // socket assigned + queuing: 0, + // dns lookup time + dnslookup: 0, + // socket connected + connected: 0, + // request sent + requestSent: 0, + // Time to first byte (TTFB) + waiting: 0, + contentDownload: 0 + }; + } + function cancelConnectTimer() { + if (connectTimer) { + clearTimeout(connectTimer); + connectTimer = null; + } + } + function cancelResponseTimer() { + if (responseTimer) { + clearTimeout(responseTimer); + responseTimer = null; + } + } + function done(err, data, res) { + cancelResponseTimer(); + if (!callback) { + console.warn('[urllib:warn] [%s] [%s] [worker:%s] %s %s callback twice!!!', Date(), reqId, process.pid, options.method, url); + // https://github.com/node-modules/urllib/pull/30 + if (err) { + console.warn('[urllib:warn] [%s] [%s] [worker:%s] %s: %s\nstack: %s', Date(), reqId, process.pid, err.name, err.message, err.stack); + } + return; + } + var cb = callback; + callback = null; + var headers = {}; + if (res) { + statusCode = res.statusCode; + headers = res.headers; + } + + // handle digest auth + // if (statusCode === 401 && headers['www-authenticate'] + // && (!args.headers || !args.headers.Authorization) && args.digestAuth) { + // const authenticate = headers['www-authenticate']; + // if (authenticate.indexOf('Digest ') >= 0) { + // debug('Request#%d %s: got digest auth header WWW-Authenticate: %s', reqId, url, authenticate); + // args.headers = args.headers || {}; + // args.headers.Authorization = digestAuthHeader(options.method, options.path, authenticate, args.digestAuth); + // debug('Request#%d %s: auth with digest header: %s', reqId, url, args.headers.Authorization); + // if (res.headers['set-cookie']) { + // args.headers.Cookie = res.headers['set-cookie'].join(';'); + // } + // return exports.requestWithCallback(url, args, cb); + // } + // } + + var requestUseTime = Date.now() - requestStartTime; + if (timing) { + timing.contentDownload = requestUseTime; + } + debug('[%sms] done, %s bytes HTTP %s %s %s %s, keepAliveSocket: %s, timing: %j', requestUseTime, responseSize, statusCode, options.method, options.host, options.path, keepAliveSocket, timing); + var response = { + status: statusCode, + statusCode: statusCode, + headers: headers, + size: responseSize, + aborted: responseAborted, + rt: requestUseTime, + keepAliveSocket: keepAliveSocket, + data: data, + requestUrls: args.requestUrls, + timing: timing, + remoteAddress: remoteAddress, + remotePort: remotePort + }; + if (err) { + var agentStatus = ''; + if (agent && typeof agent.getCurrentStatus === 'function') { + // add current agent status to error message for logging and debug + agentStatus = ', agent status: ' + JSON.stringify(agent.getCurrentStatus()); + } + err.message += ', ' + options.method + ' ' + url + ' ' + statusCode + ' (connected: ' + connected + ', keepalive socket: ' + keepAliveSocket + agentStatus + ')' + '\nheaders: ' + JSON.stringify(headers); + err.data = data; + err.path = options.path; + err.status = statusCode; + err.headers = headers; + err.res = response; + } + cb(err, data, args.streaming ? res : response); + if (args.emitter) { + // keep to use the same reqMeta object on request event before + reqMeta.url = url; + reqMeta.socket = req && req.connection; + reqMeta.options = options; + reqMeta.size = requestSize; + args.emitter.emit('response', { + requestId: reqId, + error: err, + ctx: args.ctx, + req: reqMeta, + res: response + }); + } + } + function handleRedirect(res) { + var err = null; + if (args.followRedirect && statuses.redirect[res.statusCode]) { + // handle redirect + args._followRedirectCount = (args._followRedirectCount || 0) + 1; + var location = res.headers.location; + if (!location) { + err = new Error('Got statusCode ' + res.statusCode + ' but cannot resolve next location from headers'); + err.name = 'FollowRedirectError'; + } else if (args._followRedirectCount > args.maxRedirects) { + err = new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + url); + err.name = 'MaxRedirectError'; + } else { + var newUrl = args.formatRedirectUrl ? args.formatRedirectUrl(url, location) : urlutil.resolve(url, location); + debug('Request#%d %s: `redirected` from %s to %s', reqId, options.path, url, newUrl); + // make sure timer stop + cancelResponseTimer(); + // should clean up headers.Host on `location: http://other-domain/url` + if (args.headers && args.headers.Host && PROTO_RE.test(location)) { + args.headers.Host = null; + } + // avoid done will be execute in the future change. + var cb = callback; + callback = null; + exports.requestWithCallback(newUrl, args, cb); + return { + redirect: true, + error: null + }; + } + } + return { + redirect: false, + error: err + }; + } + if (args.gzip) { + if (!options.headers['Accept-Encoding'] && !options.headers['accept-encoding']) { + options.headers['Accept-Encoding'] = 'gzip'; + } + } + function decodeContent(res, body, cb) { + var encoding = res.headers['content-encoding']; + // if (body.length === 0) { + // return cb(null, body, encoding); + // } + + // if (!encoding || encoding.toLowerCase() !== 'gzip') { + return cb(null, body, encoding); + // } + + // debug('gunzip %d length body', body.length); + // zlib.gunzip(body, cb); + } + var writeStream = args.writeStream; + debug('Request#%d %s %s with headers %j, options.path: %s', reqId, method, url, options.headers, options.path); + args.requestUrls.push(url); + function onResponse(res) { + if (timing) { + timing.waiting = Date.now() - requestStartTime; + } + debug('Request#%d %s `req response` event emit: status %d, headers: %j', reqId, url, res.statusCode, res.headers); + if (args.streaming) { + var result = handleRedirect(res); + if (result.redirect) { + res.resume(); + return; + } + if (result.error) { + res.resume(); + return done(result.error, null, res); + } + return done(null, null, res); + } + res.on('close', function () { + debug('Request#%d %s: `res close` event emit, total size %d', reqId, url, responseSize); + }); + res.on('error', function () { + debug('Request#%d %s: `res error` event emit, total size %d', reqId, url, responseSize); + }); + res.on('aborted', function () { + responseAborted = true; + debug('Request#%d %s: `res aborted` event emit, total size %d', reqId, url, responseSize); + }); + if (writeStream) { + // If there's a writable stream to recieve the response data, just pipe the + // response stream to that writable stream and call the callback when it has + // finished writing. + // + // NOTE that when the response stream `res` emits an 'end' event it just + // means that it has finished piping data to another stream. In the + // meanwhile that writable stream may still writing data to the disk until + // it emits a 'close' event. + // + // That means that we should not apply callback until the 'close' of the + // writable stream is emited. + // + // See also: + // - https://github.com/TBEDP/urllib/commit/959ac3365821e0e028c231a5e8efca6af410eabb + // - http://nodejs.org/api/stream.html#stream_event_end + // - http://nodejs.org/api/stream.html#stream_event_close_1 + var _result = handleRedirect(res); + if (_result.redirect) { + res.resume(); + return; + } + if (_result.error) { + res.resume(); + // end ths stream first + writeStream.end(); + return done(_result.error, null, res); + } + // you can set consumeWriteStream false that only wait response end + if (args.consumeWriteStream === false) { + res.on('end', done.bind(null, null, null, res)); + } else { + // node 0.10, 0.12: only emit res aborted, writeStream close not fired + // if (isNode010 || isNode012) { + // first([ + // [ writeStream, 'close' ], + // [ res, 'aborted' ], + // ], function(_, stream, event) { + // debug('Request#%d %s: writeStream or res %s event emitted', reqId, url, event); + // done(__err || null, null, res); + // }); + if (false) {} else { + writeStream.on('close', function () { + debug('Request#%d %s: writeStream close event emitted', reqId, url); + done(__err || null, null, res); + }); + } + } + return res.pipe(writeStream); + } + + // Otherwise, just concat those buffers. + // + // NOTE that the `chunk` is not a String but a Buffer. It means that if + // you simply concat two chunk with `+` you're actually converting both + // Buffers into Strings before concating them. It'll cause problems when + // dealing with multi-byte characters. + // + // The solution is to store each chunk in an array and concat them with + // 'buffer-concat' when all chunks is recieved. + // + // See also: + // http://cnodejs.org/topic/4faf65852e8fb5bc65113403 + + var chunks = []; + res.on('data', function (chunk) { + debug('Request#%d %s: `res data` event emit, size %d', reqId, url, chunk.length); + responseSize += chunk.length; + chunks.push(chunk); + }); + res.on('end', function () { + var body = Buffer.concat(chunks, responseSize); + debug('Request#%d %s: `res end` event emit, total size %d, _dumped: %s', reqId, url, responseSize, res._dumped); + if (__err) { + // req.abort() after `res data` event emit. + return done(__err, body, res); + } + var result = handleRedirect(res); + if (result.error) { + return done(result.error, body, res); + } + if (result.redirect) { + return; + } + decodeContent(res, body, function (err, data, encoding) { + if (err) { + return done(err, body, res); + } + // if body not decode, dont touch it + if (!encoding && TEXT_DATA_TYPES.indexOf(args.dataType) >= 0) { + // try to decode charset + try { + data = decodeBodyByCharset(data, res); + } catch (e) { + debug('decodeBodyByCharset error: %s', e); + // if error, dont touch it + return done(null, data, res); + } + if (args.dataType === 'json') { + if (responseSize === 0) { + data = null; + } else { + var r = parseJSON(data, fixJSONCtlChars); + if (r.error) { + err = r.error; + } else { + data = r.data; + } + } + } + } + if (responseAborted) { + // err = new Error('Remote socket was terminated before `response.end()` was called'); + // err.name = 'RemoteSocketClosedError'; + debug('Request#%d %s: Remote socket was terminated before `response.end()` was called', reqId, url); + } + done(err, data, res); + }); + }); + } + var connectTimeout, responseTimeout; + if (Array.isArray(args.timeout)) { + connectTimeout = ms(args.timeout[0]); + responseTimeout = ms(args.timeout[1]); + } else { + // set both timeout equal + connectTimeout = responseTimeout = ms(args.timeout); + } + debug('ConnectTimeout: %d, ResponseTimeout: %d', connectTimeout, responseTimeout); + function startConnectTimer() { + debug('Connect timer ticking, timeout: %d', connectTimeout); + connectTimer = setTimeout(function () { + connectTimer = null; + if (statusCode === -1) { + statusCode = -2; + } + var msg = 'Connect timeout for ' + connectTimeout + 'ms'; + var errorName = 'ConnectionTimeoutError'; + if (!req.socket) { + errorName = 'SocketAssignTimeoutError'; + msg += ', working sockets is full'; + } + __err = new Error(msg); + __err.name = errorName; + __err.requestId = reqId; + debug('ConnectTimeout: Request#%d %s %s: %s, connected: %s', reqId, url, __err.name, msg, connected); + abortRequest(); + }, connectTimeout); + } + function startResposneTimer() { + debug('Response timer ticking, timeout: %d', responseTimeout); + responseTimer = setTimeout(function () { + responseTimer = null; + var msg = 'Response timeout for ' + responseTimeout + 'ms'; + var errorName = 'ResponseTimeoutError'; + __err = new Error(msg); + __err.name = errorName; + __err.requestId = reqId; + debug('ResponseTimeout: Request#%d %s %s: %s, connected: %s', reqId, url, __err.name, msg, connected); + abortRequest(); + }, responseTimeout); + } + var req; + // request headers checker will throw error + options.mode = args.mode ? args.mode : ''; + try { + req = httplib.request(options, onResponse); + } catch (err) { + return done(err); + } + + // environment detection: browser or nodejs + if (typeof window === 'undefined') { + // start connect timer just after `request` return, and just in nodejs environment + startConnectTimer(); + } else { + req.on('requestTimeout', function () { + if (statusCode === -1) { + statusCode = -2; + } + var msg = 'Connect timeout for ' + connectTimeout + 'ms'; + var errorName = 'ConnectionTimeoutError'; + __err = new Error(msg); + __err.name = errorName; + __err.requestId = reqId; + abortRequest(); + }); + } + function abortRequest() { + debug('Request#%d %s abort, connected: %s', reqId, url, connected); + // it wont case error event when req haven't been assigned a socket yet. + if (!req.socket) { + __err.noSocket = true; + done(__err); + } + req.abort(); + } + if (timing) { + // request sent + req.on('finish', function () { + timing.requestSent = Date.now() - requestStartTime; + }); + } + req.once('socket', function (socket) { + if (timing) { + // socket queuing time + timing.queuing = Date.now() - requestStartTime; + } + + // https://github.com/nodejs/node/blob/master/lib/net.js#L377 + // https://github.com/nodejs/node/blob/v0.10.40-release/lib/net.js#L352 + // should use socket.socket on 0.10.x + // if (isNode010 && socket.socket) { + // socket = socket.socket; + // } + + var readyState = socket.readyState; + if (readyState === 'opening') { + socket.once('lookup', function (err, ip, addressType) { + debug('Request#%d %s lookup: %s, %s, %s', reqId, url, err, ip, addressType); + if (timing) { + timing.dnslookup = Date.now() - requestStartTime; + } + if (ip) { + remoteAddress = ip; + } + }); + socket.once('connect', function () { + if (timing) { + // socket connected + timing.connected = Date.now() - requestStartTime; + } + + // cancel socket timer at first and start tick for TTFB + cancelConnectTimer(); + startResposneTimer(); + debug('Request#%d %s new socket connected', reqId, url); + connected = true; + if (!remoteAddress) { + remoteAddress = socket.remoteAddress; + } + remotePort = socket.remotePort; + }); + return; + } + debug('Request#%d %s reuse socket connected, readyState: %s', reqId, url, readyState); + connected = true; + keepAliveSocket = true; + if (!remoteAddress) { + remoteAddress = socket.remoteAddress; + } + remotePort = socket.remotePort; + + // reuse socket, timer should be canceled. + cancelConnectTimer(); + startResposneTimer(); + }); + req.on('error', function (err) { + //TypeError for browser fetch api, Error for browser xmlhttprequest api + if (err.name === 'Error' || err.name === 'TypeError') { + err.name = connected ? 'ResponseError' : 'RequestError'; + } + err.message += ' (req "error")'; + debug('Request#%d %s `req error` event emit, %s: %s', reqId, url, err.name, err.message); + done(__err || err); + }); + if (writeStream) { + writeStream.once('error', function (err) { + err.message += ' (writeStream "error")'; + __err = err; + debug('Request#%d %s `writeStream error` event emit, %s: %s', reqId, url, err.name, err.message); + abortRequest(); + }); + } + if (args.stream) { + args.stream.pipe(req); + args.stream.once('error', function (err) { + err.message += ' (stream "error")'; + __err = err; + debug('Request#%d %s `readStream error` event emit, %s: %s', reqId, url, err.name, err.message); + abortRequest(); + }); + } else { + req.end(body); + } + req.requestId = reqId; + return req; +}; + +}).call(this)}).call(this,require('_process'),require("buffer").Buffer) +},{"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/typeof":91,"_process":538,"buffer":103,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.function.name.js":322,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.trim.js":349,"debug":536,"http":539,"https":398,"humanize-ms":399,"url":543,"util":489}]},{},[1])(1) +}); +})(window) diff --git a/node_modules/ali-oss/dist/aliyun-oss-sdk.min.js b/node_modules/ali-oss/dist/aliyun-oss-sdk.min.js new file mode 100644 index 0000000..2b888e6 --- /dev/null +++ b/node_modules/ali-oss/dist/aliyun-oss-sdk.min.js @@ -0,0 +1,4 @@ +// Aliyun OSS SDK for JavaScript v6.23.0 +// Copyright Aliyun.com, Inc. or its affiliates. All Rights Reserved. +// License at https://github.com/ali-sdk/ali-oss/blob/master/LICENSE +(function(global){!function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).OSS=e()}(function(){return function n(i,o,s){function a(t,e){if(!o[t]){if(!i[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(c)return c(t,!0);throw(e=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",e}r=o[t]={exports:{}},i[t][0].call(r.exports,function(e){return a(i[t][1][e]||e)},r,r.exports,n,i,o,s)}return o[t].exports}for(var c="function"==typeof require&&require,e=0;e<s.length;e++)a(s[e]);return a}({1:[function(e,t,r){"use strict";var n=e("./browser/client");n.Buffer=e("buffer").Buffer,n.urllib=e("../shims/xhr"),n.version=e("./browser/version").version,t.exports=n},{"../shims/xhr":546,"./browser/client":3,"./browser/version":6,buffer:103}],2:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),d=n(e("@babel/runtime/regenerator")),o=n(e("@babel/runtime/helpers/asyncToGenerator")),h=(e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.regexp.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.object.keys.js"),e("core-js/modules/es.array.slice.js"),e("assert")),i=e("../common/utils/checkBucketName").checkBucketName,n=r;function s(e){return Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)}function y(e){return e?s(e)?e:[e]:[]}n.useBucket=function(e){return i(e),this.options.bucket=e,this},n.setBucket=function(e){return i(e),this.options.bucket=e,this},n.getBucket=function(){return this.options.bucket},n.deleteBucket=function(){var r=(0,o.default)(d.default.mark(function e(t,r){var n,i;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=this._bucketRequestParams("DELETE",t,"",r),e.next=3,this.request(n);case 3:if(200===(i=e.sent).status||204===i.status)return e.abrupt("return",{res:i.res});e.next=6;break;case 6:return e.next=8,this.requestError(i);case 8:throw e.sent;case 9:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}(),n.putBucketACL=function(){var n=(0,o.default)(d.default.mark(function e(t,r,n){var i;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(i=this._bucketRequestParams("PUT",t,"acl",n)).headers={"x-oss-acl":r},i.successStatuses=[200],e.next=5,this.request(i);case 5:return i=e.sent,e.abrupt("return",{bucket:i.headers.location&&i.headers.location.substring(1)||null,res:i.res});case 7:case"end":return e.stop()}},e,this)}));return function(e,t,r){return n.apply(this,arguments)}}(),n.getBucketACL=function(){var r=(0,o.default)(d.default.mark(function e(t,r){var n;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(n=this._bucketRequestParams("GET",t,"acl",r)).successStatuses=[200],n.xmlResponse=!0,e.next=5,this.request(n);case 5:return n=e.sent,e.abrupt("return",{acl:n.data.AccessControlList.Grant,owner:{id:n.data.Owner.ID,displayName:n.data.Owner.DisplayName},res:n.res});case 7:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}(),n.putBucketLogging=function(){var n=(0,o.default)(d.default.mark(function e(t,r,n){var i,o;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=this._bucketRequestParams("PUT",t,"logging",n),o='<?xml version="1.0" encoding="UTF-8"?>\n<BucketLoggingStatus>\n<LoggingEnabled>\n<TargetBucket>'.concat(t,"</TargetBucket>\n"),r&&(o+="<TargetPrefix>".concat(r,"</TargetPrefix>\n")),o+="</LoggingEnabled>\n</BucketLoggingStatus>",i.content=o,i.mime="xml",i.successStatuses=[200],e.next=9,this.request(i);case 9:return o=e.sent,e.abrupt("return",{res:o.res});case 11:case"end":return e.stop()}},e,this)}));return function(e,t,r){return n.apply(this,arguments)}}(),n.getBucketLogging=function(){var r=(0,o.default)(d.default.mark(function e(t,r){var n,i;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(n=this._bucketRequestParams("GET",t,"logging",r)).successStatuses=[200],n.xmlResponse=!0,e.next=5,this.request(n);case 5:return n=e.sent,i=n.data.LoggingEnabled,e.abrupt("return",{enable:!!i,prefix:i&&i.TargetPrefix||null,res:n.res});case 8:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}(),n.deleteBucketLogging=function(){var r=(0,o.default)(d.default.mark(function e(t,r){var n;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(n=this._bucketRequestParams("DELETE",t,"logging",r)).successStatuses=[204,200],e.next=4,this.request(n);case 4:return n=e.sent,e.abrupt("return",{res:n.res});case 6:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}(),n.putBucketCORS=function(){var n=(0,o.default)(d.default.mark(function e(t,r,n){var i,o,s,a,c,u,l,f,p;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:for(h((r=r||[]).length,"rules is required"),r.forEach(function(e){h(e.allowedOrigin,"allowedOrigin is required"),h(e.allowedMethod,"allowedMethod is required")}),p=this._bucketRequestParams("PUT",t,"cors",n),i='<?xml version="1.0" encoding="UTF-8"?>\n<CORSConfiguration>',o=function(e){i+="<AllowedOrigin>".concat(e,"</AllowedOrigin>")},s=function(e){i+="<AllowedMethod>".concat(e,"</AllowedMethod>")},a=function(e){i+="<AllowedHeader>".concat(e,"</AllowedHeader>")},c=function(e){i+="<ExposeHeader>".concat(e,"</ExposeHeader>")},u=0,l=r.length;u<l;u++)f=r[u],i+="<CORSRule>",y(f.allowedOrigin).forEach(o),y(f.allowedMethod).forEach(s),y(f.allowedHeader).forEach(a),y(f.exposeHeader).forEach(c),f.maxAgeSeconds&&(i+="<MaxAgeSeconds>".concat(f.maxAgeSeconds,"</MaxAgeSeconds>")),i+="</CORSRule>";return i+="</CORSConfiguration>",p.content=i,p.mime="xml",p.successStatuses=[200],e.next=16,this.request(p);case 16:return p=e.sent,e.abrupt("return",{res:p.res});case 18:case"end":return e.stop()}},e,this)}));return function(e,t,r){return n.apply(this,arguments)}}(),n.getBucketCORS=function(){var r=(0,o.default)(d.default.mark(function e(t,r){var n,i,o;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(n=this._bucketRequestParams("GET",t,"cors",r)).successStatuses=[200],n.xmlResponse=!0,e.next=5,this.request(n);case 5:return n=e.sent,i=[],n.data&&n.data.CORSRule&&(o=s(o=n.data.CORSRule)?o:[o]).forEach(function(t){var r={};Object.keys(t).forEach(function(e){r[e.slice(0,1).toLowerCase()+e.slice(1,e.length)]=t[e]}),i.push(r)}),e.abrupt("return",{rules:i,res:n.res});case 9:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}(),n.deleteBucketCORS=function(){var r=(0,o.default)(d.default.mark(function e(t,r){var n;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(n=this._bucketRequestParams("DELETE",t,"cors",r)).successStatuses=[204],e.next=4,this.request(n);case 4:return n=e.sent,e.abrupt("return",{res:n.res});case 6:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}(),n.putBucketReferer=function(){var i=(0,o.default)(d.default.mark(function e(t,r,n,i){var o,s,a;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=this._bucketRequestParams("PUT",t,"referer",i),o='<?xml version="1.0" encoding="UTF-8"?>\n<RefererConfiguration>\n',o+=" <AllowEmptyReferer>".concat(r?"true":"false","</AllowEmptyReferer>\n"),n&&0<n.length){for(o+=" <RefererList>\n",s=0;s<n.length;s++)o+=" <Referer>".concat(n[s],"</Referer>\n");o+=" </RefererList>\n"}else o+=" <RefererList />\n";return o+="</RefererConfiguration>",a.content=o,a.mime="xml",a.successStatuses=[200],e.next=10,this.request(a);case 10:return a=e.sent,e.abrupt("return",{res:a.res});case 12:case"end":return e.stop()}},e,this)}));return function(e,t,r,n){return i.apply(this,arguments)}}(),n.getBucketReferer=function(){var r=(0,o.default)(d.default.mark(function e(t,r){var n,i;return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(n=this._bucketRequestParams("GET",t,"referer",r)).successStatuses=[200],n.xmlResponse=!0,e.next=5,this.request(n);case 5:return n=e.sent,(i=n.data.RefererList.Referer||null)&&!s(i)&&(i=[i]),e.abrupt("return",{allowEmpty:"true"===n.data.AllowEmptyReferer,referers:i,res:n.res});case 9:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}(),n.deleteBucketReferer=function(){var r=(0,o.default)(d.default.mark(function e(t,r){return d.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.putBucketReferer(t,!0,null,r);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}(),n._bucketRequestParams=function(e,t,r,n){return{method:e,bucket:t,subres:r,additionalHeaders:n&&n.additionalHeaders,timeout:n&&n.timeout,ctx:n&&n.ctx}}},{"../common/utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,assert:95,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/web.dom-collections.for-each.js":380}],3:[function(T,E,e){!function(k,_){!function(){"use strict";var e=T("@babel/runtime/helpers/interopRequireDefault"),c=e(T("@babel/runtime/regenerator")),n=e(T("@babel/runtime/helpers/asyncToGenerator")),e=(T("core-js/modules/es.function.name.js"),T("core-js/modules/es.object.assign.js"),T("core-js/modules/es.array.includes.js"),T("core-js/modules/es.regexp.exec.js"),T("core-js/modules/es.string.replace.js"),T("core-js/modules/es.array.concat.js"),T("core-js/modules/es.symbol.js"),T("core-js/modules/es.symbol.description.js"),T("core-js/modules/es.array.slice.js"),T("core-js/modules/es.object.to-string.js"),T("core-js/modules/es.promise.js"),T("core-js/modules/es.regexp.to-string.js"),T("debug")("ali-oss")),t=T("xml2js"),r=T("agentkeepalive"),i=T("merge-descriptors"),o=T("platform"),s=T("utility"),a=T("urllib"),u=T("./version"),l=T("bowser"),f=T("../common/signUtils"),p=T("../common/client/initOptions"),d=T("../common/utils/createRequest").createRequest,h=T("../common/utils/encoder").encoder,y=T("../common/client/getReqUrl").getReqUrl,m=T("../common/utils/setSTSToken").setSTSToken,b=T("../common/utils/retry").retry,g=T("../common/utils/isFunction").isFunction,v=T("../common/utils/getStandardRegion").getStandardRegion,j=new r;function w(e,t){var r,n;if(r=o.name,n=o.version,r&&r.toLowerCase&&"ie"===r.toLowerCase()&&n.split(".")[0]<10&&console.warn("ali-oss does not support the current browser"),!(this instanceof w))return new w(e,t);e&&e.inited?this.options=e:this.options=w.initOptions(e),this.options.cancelFlag=!1,this.options.urllib?this.urllib=this.options.urllib:(this.urllib=a,this.agent=this.options.agent||j),this.ctx=t,this.userAgent=this._getUserAgent(),this.stsTokenFreshTime=new Date,this.options.amendTimeSkewed=0}(E.exports=w).initOptions=function(e){e.stsToken||console.warn("Please use STS Token for safety, see more details at https://help.aliyun.com/document_detail/32077.html");e=Object.assign({secure:location&&"https:"===location.protocol,useFetch:!1},e);return p(e)};r=w.prototype;function x(e){return S.apply(this,arguments)}function S(){return(S=(0,n.default)(c.default.mark(function e(t){var r,n,i,o,s,a;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.options.stsToken&&g(this.options.refreshSTSToken))return e.next=3,m.call(this);e.next=3;break;case 3:return r=d.call(this,t),this.options.useFetch||(r.params.mode="disable-fetch"),o=!!t.stream,e.prev=6,e.next=9,this.urllib.request(r.url,r.params);case 9:n=e.sent,this.debug("response %s %s, got %s, headers: %j",t.method,r.url,n.status,n.headers,"info"),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(6),i=e.t0;case 16:if(n&&t.successStatuses&&-1===t.successStatuses.indexOf(n.status))return e.next=19,this.requestError(n);e.next=28;break;case 19:if("RequestTimeTooSkewed"!==(s=e.sent).code||o){e.next=25;break}return this.options.amendTimeSkewed=+new Date(s.serverTime)-new Date,e.next=24,this.request(t);case 24:return e.abrupt("return",e.sent);case 25:s.params=t,e.next=32;break;case 28:if(i)return e.next=31,this.requestError(i);e.next=32;break;case 31:s=e.sent;case 32:if(s)throw s;e.next=34;break;case 34:if(t.xmlResponse)return e.next=37,this.parseXML(n.data);e.next=39;break;case 37:a=e.sent,n.data=a;case 39:return e.abrupt("return",n);case 40:case"end":return e.stop()}},e,this,[[6,13]])}))).apply(this,arguments)}r.debug=e,i(r,T("./object")),i(r,T("./bucket")),i(r,T("../common/bucket/getBucketWebsite")),i(r,T("../common/bucket/putBucketWebsite")),i(r,T("../common/bucket/deleteBucketWebsite")),i(r,T("../common/bucket/getBucketLifecycle")),i(r,T("../common/bucket/putBucketLifecycle")),i(r,T("../common/bucket/deleteBucketLifecycle")),i(r,T("../common/bucket/putBucketVersioning")),i(r,T("../common/bucket/getBucketVersioning")),i(r,T("../common/bucket/getBucketInventory")),i(r,T("../common/bucket/deleteBucketInventory")),i(r,T("../common/bucket/listBucketInventory")),i(r,T("../common/bucket/putBucketInventory")),i(r,T("../common/bucket/abortBucketWorm")),i(r,T("../common/bucket/completeBucketWorm")),i(r,T("../common/bucket/extendBucketWorm")),i(r,T("../common/bucket/getBucketWorm")),i(r,T("../common/bucket/initiateBucketWorm")),i(r,T("./managed-upload")),i(r,T("../common/multipart-copy")),i(r,T("../common/multipart")),i(r,T("../common/parallel")),r.signature=function(e){return this.debug("authorization stringToSign: %s",e,"info"),f.computeSignature(this.options.accessKeySecret,e,this.options.headerEncoding)},r._getReqUrl=y,r.authorization=function(e,t,r,n){e=f.buildCanonicalString(e.toUpperCase(),t,{headers:n,parameters:r});return f.authorization(this.options.accessKeyId,this.options.accessKeySecret,e,this.options.headerEncoding)},r.authorizationV4=function(e,t,r,n,i){return f.authorizationV4(this.options.accessKeyId,this.options.accessKeySecret,v(this.options.region),e,t,r,n,i,this.options.headerEncoding)},r.request=function(){var t=(0,n.default)(c.default.mark(function e(n){var i=this;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.options.retryMax)return e.next=3,b(x.bind(this),this.options.retryMax,{errorHandler:function(e){var t,r;return e=e,!(n.stream||(t=[-1,-2].includes(e.status),r=i.options.requestErrorRetryHandle||function(){return!0},!t)||!r(e))}})(n);e.next=6;break;case 3:return e.abrupt("return",e.sent);case 6:return e.abrupt("return",x.call(this,n));case 7:case"end":return e.stop()}},e,this)}));return function(e){return t.apply(this,arguments)}}(),r._getResource=function(e){var t="/";return e.bucket&&(t+="".concat(e.bucket,"/")),e.object&&(t+=h(e.object,this.options.headerEncoding)),t},r._escape=function(e){return s.encodeURIComponent(e).replace(/%2F/g,"/")},r._getUserAgent=function(){var e=_&&_.browser?"js":"nodejs",e="aliyun-sdk-".concat(e,"/").concat(u.version),t=o.description;return!t&&_&&(t="Node.js ".concat(_.version.slice(1)," on ").concat(_.platform," ").concat(_.arch)),this._checkUserAgent("".concat(e," ").concat(t))},r._checkUserAgent=function(e){return e.replace(/\u03b1/,"alpha").replace(/\u03b2/,"beta")},r.checkBrowserAndVersion=function(e,t){return l.name===e&&l.version.split(".")[0]===t},r.parseXML=function(e){return new Promise(function(r,n){k.isBuffer(e)&&(e=e.toString()),t.parseString(e,{explicitRoot:!1,explicitArray:!1},function(e,t){e?n(e):r(t)})})},r.requestError=function(){var t=(0,n.default)(c.default.mark(function e(i){var o,t,r,s=this;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:o=null,t=function(){var t=(0,n.default)(c.default.mark(function e(t){var r,n;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,s.parseXML(t);case 3:if(e.t0=e.sent,e.t0){e.next=6;break}e.t0={};case 6:r=e.t0,e.next=16;break;case 9:return e.prev=9,e.t1=e.catch(0),s.debug(t,"error"),e.t1.message+="\nraw xml: ".concat(t),e.t1.status=i.status,e.t1.requestId=i.headers&&i.headers["x-oss-request-id"],e.abrupt("return",e.t1);case 16:return n=r.Message||"unknow request error, status: ".concat(i.status),r.Condition&&(n+=" (condition: ".concat(r.Condition,")")),(o=new Error(n)).name=r.Code?"".concat(r.Code,"Error"):"UnknownError",o.status=i.status,o.code=r.Code,o.ecCode=r.EC,o.requestId=r.RequestId,o.hostId=r.HostId,o.serverTime=r.ServerTime,e.abrupt("return",o);case 27:case"end":return e.stop()}},e,null,[[0,9]])}));return function(e){return t.apply(this,arguments)}}(),i.data&&i.data.length?e.next=38:-1!==i.status&&-2!==i.status?e.next=10:((o=new Error(i.message)).name=i.name,o.status=i.status,o.code=i.name,e.next=36);break;case 10:404!==i.status?e.next=17:((o=new Error("Object not exists")).name="NoSuchKeyError",o.status=404,o.code="NoSuchKey",e.next=34);break;case 17:412!==i.status?e.next=24:((o=new Error("Pre condition failed")).name="PreconditionFailedError",o.status=412,o.code="PreconditionFailed",e.next=34);break;case 24:if((o=new Error("Unknow error, status: ".concat(i.status))).name="UnknownError",o.status=i.status,o.res=i,r=i.headers&&i.headers["x-oss-err"])return r=atob(r),e.next=33,t(r);e.next=34;break;case 33:o=e.sent;case 34:o.requestId=i.headers&&i.headers["x-oss-request-id"],o.host="";case 36:e.next=43;break;case 38:return r=String(i.data),this.debug("request response error data: %s",r,"error"),e.next=42,t(r);case 42:o=e.sent;case 43:return this.debug("generate error %j",o,"error"),e.abrupt("return",o);case 45:case"end":return e.stop()}},e,this)}));return function(e){return t.apply(this,arguments)}}()}.call(this)}.call(this,{isBuffer:T("../../node_modules/is-buffer/index.js")},T("_process"))},{"../../node_modules/is-buffer/index.js":409,"../common/bucket/abortBucketWorm":7,"../common/bucket/completeBucketWorm":8,"../common/bucket/deleteBucketInventory":9,"../common/bucket/deleteBucketLifecycle":10,"../common/bucket/deleteBucketWebsite":11,"../common/bucket/extendBucketWorm":12,"../common/bucket/getBucketInventory":13,"../common/bucket/getBucketLifecycle":14,"../common/bucket/getBucketVersioning":15,"../common/bucket/getBucketWebsite":16,"../common/bucket/getBucketWorm":17,"../common/bucket/initiateBucketWorm":18,"../common/bucket/listBucketInventory":19,"../common/bucket/putBucketInventory":20,"../common/bucket/putBucketLifecycle":21,"../common/bucket/putBucketVersioning":22,"../common/bucket/putBucketWebsite":23,"../common/client/getReqUrl":25,"../common/client/initOptions":26,"../common/multipart":30,"../common/multipart-copy":29,"../common/parallel":51,"../common/signUtils":52,"../common/utils/createRequest":58,"../common/utils/encoder":62,"../common/utils/getStandardRegion":65,"../common/utils/isFunction":72,"../common/utils/retry":80,"../common/utils/setSTSToken":82,"./bucket":2,"./managed-upload":4,"./object":5,"./version":6,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,_process:538,agentkeepalive:94,bowser:101,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.includes.js":315,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.function.name.js":322,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.replace.js":345,"core-js/modules/es.symbol.description.js":351,"core-js/modules/es.symbol.js":354,debug:536,"merge-descriptors":428,platform:440,urllib:546,utility:545,xml2js:496}],4:[function(i,e,o){!function(s){!function(){"use strict";var e=i("@babel/runtime/helpers/interopRequireDefault"),b=e(i("@babel/runtime/regenerator")),g=(i("core-js/modules/es.function.name.js"),i("core-js/modules/es.object.to-string.js"),i("core-js/modules/es.promise.js"),i("core-js/modules/es.array.from.js"),i("core-js/modules/es.string.iterator.js"),i("core-js/modules/es.array.map.js"),i("core-js/modules/es.array.filter.js"),i("core-js/modules/es.array.find.js"),i("core-js/modules/es.array.concat.js"),i("core-js/modules/es.regexp.to-string.js"),i("core-js/modules/es.array.slice.js"),i("core-js/modules/es.array.iterator.js"),i("core-js/modules/es.array-buffer.slice.js"),i("core-js/modules/es.typed-array.uint8-array.js"),i("core-js/modules/es.typed-array.copy-within.js"),i("core-js/modules/es.typed-array.every.js"),i("core-js/modules/es.typed-array.fill.js"),i("core-js/modules/es.typed-array.filter.js"),i("core-js/modules/es.typed-array.find.js"),i("core-js/modules/es.typed-array.find-index.js"),i("core-js/modules/es.typed-array.for-each.js"),i("core-js/modules/es.typed-array.includes.js"),i("core-js/modules/es.typed-array.index-of.js"),i("core-js/modules/es.typed-array.iterator.js"),i("core-js/modules/es.typed-array.join.js"),i("core-js/modules/es.typed-array.last-index-of.js"),i("core-js/modules/es.typed-array.map.js"),i("core-js/modules/es.typed-array.reduce.js"),i("core-js/modules/es.typed-array.reduce-right.js"),i("core-js/modules/es.typed-array.reverse.js"),i("core-js/modules/es.typed-array.set.js"),i("core-js/modules/es.typed-array.slice.js"),i("core-js/modules/es.typed-array.some.js"),i("core-js/modules/es.typed-array.sort.js"),i("core-js/modules/es.typed-array.subarray.js"),i("core-js/modules/es.typed-array.to-locale-string.js"),i("core-js/modules/es.typed-array.to-string.js"),e(i("@babel/runtime/helpers/asyncToGenerator"))),e=i("util"),f=i("path"),p=i("mime"),v=i("copy-to"),d=i("../common/utils/isBlob").isBlob,h=i("../common/utils/isFile").isFile,y=i("../common/utils/isBuffer").isBuffer,t=o;t.multipartUpload=function(){var r=(0,g.default)(b.default.mark(function e(t,r){var n,i,o,s,a,c,u,l=arguments;return b.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=2<l.length&&void 0!==l[2]?l[2]:{},this.resetCancelFlag(),n.disabledMD5=void 0===n.disabledMD5||!!n.disabledMD5,n.checkpoint&&n.checkpoint.uploadId)return r&&h(r)&&(n.checkpoint.file=r),e.next=7,this._resumeMultipart(n.checkpoint,n);e.next=8;break;case 7:return e.abrupt("return",e.sent);case 8:return i=102400,n.mime||(h(r)?n.mime=p.getType(f.extname(r.name)):d(r)?n.mime=r.type:y(r)?n.mime="":n.mime=p.getType(f.extname(r))),n.headers=n.headers||{},this._convertMetaToHeaders(n.meta,n.headers),e.next=14,this._getFileSize(r);case 14:if((o=e.sent)<i)return n.contentLength=o,e.next=19,this.put(t,r,n);e.next=26;break;case 19:if(s=e.sent,n&&n.progress)return e.next=23,n.progress(1);e.next=23;break;case 23:return a={res:s.res,bucket:this.options.bucket,name:t,etag:s.res.headers.etag},(n.headers&&n.headers["x-oss-callback"]||n.callback)&&(a.data=s.data),e.abrupt("return",a);case 26:if(n.partSize&&parseInt(n.partSize,10)!==n.partSize)throw new Error("partSize must be int number");e.next=28;break;case 28:if(n.partSize&&n.partSize<i)throw new Error("partSize must not be smaller than ".concat(i));e.next=30;break;case 30:return e.next=32,this.initMultipartUpload(t,n);case 32:if(a=e.sent,c=a.uploadId,u=this._getPartSize(o,n.partSize),u={file:r,name:t,fileSize:o,partSize:u,uploadId:c,doneParts:[]},n&&n.progress)return e.next=39,n.progress(0,u,a.res);e.next=39;break;case 39:return e.next=41,this._resumeMultipart(u,n);case 41:return e.abrupt("return",e.sent);case 42:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}(),t._resumeMultipart=function(){var r=(0,g.default)(b.default.mark(function e(c,u){var n,l,f,p,d,i,h,y,m,o,t,r,s,a;return b.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((n=this).isCancel())throw this._makeCancelEvent();e.next=3;break;case 3:return l=c.file,r=c.fileSize,a=c.partSize,f=c.uploadId,p=c.doneParts,d=c.name,i=[],0<p.length&&v(p).to(i),h=this._divideParts(r,a),y=h.length,m=!1,o=function(s,a){return new Promise(function(){var r=(0,g.default)(b.default.mark(function e(t,r){var n,i,o;return b.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,s.isCancel()){e.next=29;break}return n=h[a-1],e.next=5,s._createBuffer(l,n.start,n.end);case 5:return o=e.sent,o={content:o,size:n.end-n.start},e.prev=7,e.next=10,s._uploadPart(d,f,a,o,u);case 10:i=e.sent,e.next=18;break;case 13:if(e.prev=13,e.t0=e.catch(7),404===e.t0.status)throw s._makeAbortEvent();e.next=17;break;case 17:throw e.t0;case 18:if(s.isCancel()||m)e.next=26;else{if(c.doneParts.push({number:a,etag:i.res.headers.etag}),u.progress)return e.next=23,u.progress(p.length/(y+1),c,i.res);e.next=23}break;case 23:t({number:a,etag:i.res.headers.etag}),e.next=27;break;case 26:t();case 27:e.next=30;break;case 29:t();case 30:e.next=41;break;case 32:e.prev=32,e.t1=e.catch(0),(o=new Error).name=e.t1.name,o.message=e.t1.message,o.stack=e.t1.stack,o.partNum=a,v(e.t1).to(o),r(o);case 41:case"end":return e.stop()}},e,null,[[0,32],[7,13]])}));return function(e,t){return r.apply(this,arguments)}}())},r=Array.from(new Array(y),function(e,t){return t+1}),t=i.map(function(e){return e.number}),a=r.filter(function(e){return t.indexOf(e)<0}),r=u.parallel||5,e.next=17,this._parallel(a,r,function(e){return new Promise(function(t,r){o(n,e).then(function(e){e&&i.push(e),t()}).catch(function(e){r(e)})})});case 17:if(s=e.sent,m=!0,a=s.find(function(e){return"abort"===e.name}))throw a;e.next=22;break;case 22:if(this.isCancel())throw o=null,this._makeCancelEvent();e.next=25;break;case 25:if(s&&0<s.length)throw s[0].message="Failed to upload some parts with error: ".concat(s[0].toString()," part_num: ").concat(s[0].partNum),s[0];e.next=28;break;case 28:return e.next=30,this.completeMultipartUpload(d,f,i,u);case 30:return e.abrupt("return",e.sent);case 31:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}(),t._getFileSize=function(){var t=(0,g.default)(b.default.mark(function e(t){return b.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(y(t))return e.abrupt("return",t.length);e.next=4;break;case 4:if(d(t)||h(t))return e.abrupt("return",t.size);e.next=6;break;case 6:throw new Error("_getFileSize requires Buffer/File/Blob.");case 7:case"end":return e.stop()}},e)}));return function(e){return t.apply(this,arguments)}}();var r=i("stream").Readable;function n(e,t){if(!(this instanceof n))return new n(e,t);r.call(this,t),this.file=e,this.reader=new FileReader,this.start=0,this.finish=!1,this.fileBuffer=null}e.inherits(n,r),n.prototype.readFileAndPush=function(e){if(this.fileBuffer)for(var t=!0;t&&this.fileBuffer&&this.start<this.fileBuffer.length;){var r=this.start,n=(n=r+e)>this.fileBuffer.length?this.fileBuffer.length:n;this.start=n,t=this.push(this.fileBuffer.slice(r,n))}},n.prototype._read=function(t){var r;this.file&&this.start>=this.file.size||this.fileBuffer&&this.start>=this.fileBuffer.length||this.finish||0===this.start&&!this.file?(this.finish||(this.fileBuffer=null,this.finish=!0),this.push(null)):(t=t||16384,r=this,this.reader.onload=function(e){r.fileBuffer=s.from(new Uint8Array(e.target.result)),r.file=null,r.readFileAndPush(t)},0===this.start?this.reader.readAsArrayBuffer(this.file):this.readFileAndPush(t))},t._createBuffer=function(){var n=(0,g.default)(b.default.mark(function e(t,r,i){var o;return b.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!d(t)&&!h(t)){e.next=8;break}o=t.slice(r,i),e.next=4;var n=o;return n.arrayBuffer?n.arrayBuffer():new Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e)},e.readAsArrayBuffer(n)});case 4:return o=e.sent,e.abrupt("return",s.from(o));case 8:if(y(t))return e.abrupt("return",t.subarray(r,i));e.next=12;break;case 12:throw new Error("_createBuffer requires File/Blob/Buffer.");case 13:case"end":return e.stop()}},e)}));return function(e,t,r){return n.apply(this,arguments)}}(),t._getPartSize=function(e,t){t=t||1048576;e=Math.ceil(e/1e4);return t<e&&(t=e,console.warn("partSize has been set to ".concat(t,", because the partSize you provided causes partNumber to be greater than 10,000"))),t},t._divideParts=function(e,t){for(var r=Math.ceil(e/t),n=[],i=0;i<r;i++){var o=t*i,s=Math.min(o+t,e);n.push({start:o,end:s})}return n}}.call(this)}.call(this,i("buffer").Buffer)},{"../common/utils/isBlob":68,"../common/utils/isBuffer":69,"../common/utils/isFile":71,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,buffer:103,"copy-to":107,"core-js/modules/es.array-buffer.slice.js":309,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.filter.js":312,"core-js/modules/es.array.find.js":313,"core-js/modules/es.array.from.js":314,"core-js/modules/es.array.iterator.js":316,"core-js/modules/es.array.map.js":318,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.function.name.js":322,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.iterator.js":343,"core-js/modules/es.typed-array.copy-within.js":356,"core-js/modules/es.typed-array.every.js":357,"core-js/modules/es.typed-array.fill.js":358,"core-js/modules/es.typed-array.filter.js":359,"core-js/modules/es.typed-array.find-index.js":360,"core-js/modules/es.typed-array.find.js":361,"core-js/modules/es.typed-array.for-each.js":362,"core-js/modules/es.typed-array.includes.js":363,"core-js/modules/es.typed-array.index-of.js":364,"core-js/modules/es.typed-array.iterator.js":365,"core-js/modules/es.typed-array.join.js":366,"core-js/modules/es.typed-array.last-index-of.js":367,"core-js/modules/es.typed-array.map.js":368,"core-js/modules/es.typed-array.reduce-right.js":369,"core-js/modules/es.typed-array.reduce.js":370,"core-js/modules/es.typed-array.reverse.js":371,"core-js/modules/es.typed-array.set.js":372,"core-js/modules/es.typed-array.slice.js":373,"core-js/modules/es.typed-array.some.js":374,"core-js/modules/es.typed-array.sort.js":375,"core-js/modules/es.typed-array.subarray.js":376,"core-js/modules/es.typed-array.to-locale-string.js":377,"core-js/modules/es.typed-array.to-string.js":378,"core-js/modules/es.typed-array.uint8-array.js":379,mime:430,path:439,stream:468,util:489}],5:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),c=(e("core-js/modules/es.function.name.js"),e("core-js/modules/es.object.keys.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.regexp.to-string.js"),e("core-js/modules/es.array.map.js"),e("core-js/modules/es.number.constructor.js"),e("core-js/modules/es.object.assign.js"),e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.string.replace.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.promise.js"),n(e("@babel/runtime/regenerator"))),i=n(e("@babel/runtime/helpers/asyncToGenerator")),o=e("fs"),s=e("copy-to"),u=e("path"),l=e("mime"),f=e("../common/callback"),n=e("merge-descriptors"),p=e("../common/utils/isBlob").isBlob,d=e("../common/utils/isFile").isFile,h=e("../common/utils/isBuffer").isBuffer,a=e("../common/utils/obj2xml").obj2xml,y=e("../common/utils/parseRestoreInfo").parseRestoreInfo;r.append=function(){var n=(0,i.default)(c.default.mark(function e(t,r,n){var i;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===(n=n||{}).position&&(n.position="0"),n.subres={append:"",position:n.position},n.method="POST",e.next=6,this.put(t,r,n);case 6:return(i=e.sent).nextAppendPosition=i.res.headers["x-oss-next-append-position"],e.abrupt("return",i);case 9:case"end":return e.stop()}},e,this)}));return function(e,t,r){return n.apply(this,arguments)}}(),r.put=function(){var n=(0,i.default)(c.default.mark(function e(t,r,n){var i,o,s,a;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:(n=n||{}).disabledMD5=void 0===n.disabledMD5||!!n.disabledMD5,n.headers=n.headers||{},t=this._objectName(t),h(r)?(i=r,e.next=19):e.next=8;break;case 8:if(p(r)||d(r))return n.mime||(d(r)?n.mime=l.getType(u.extname(r.name)):n.mime=r.type),e.next=12,this._createBuffer(r,0,r.size);e.next=18;break;case 12:return i=e.sent,e.next=15,this._getFileSize(r);case 15:n.contentLength=e.sent,e.next=19;break;case 18:throw new TypeError("Must provide Buffer/Blob/File for put.");case 19:return this._convertMetaToHeaders(n.meta,n.headers),o=n.method||"PUT",o=this._objectRequestParams(o,t,n),f.encodeCallback(o,n),o.mime=n.mime,o.disabledMD5=n.disabledMD5,o.content=i,o.successStatuses=[200],e.next=29,this.request(o);case 29:return s=e.sent,a={name:t,url:this._objectUrl(t),res:s.res},o.headers&&o.headers["x-oss-callback"]&&(a.data=JSON.parse(s.data.toString())),e.abrupt("return",a);case 33:case"end":return e.stop()}},e,this)}));return function(e,t,r){return n.apply(this,arguments)}}(),r.putStream=function(){var n=(0,i.default)(c.default.mark(function e(t,r,n){var i,o,s;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(n=n||{}).headers=n.headers||{},t=this._objectName(t),n.contentLength?n.headers["Content-Length"]=n.contentLength:n.headers["Transfer-Encoding"]="chunked",this._convertMetaToHeaders(n.meta,n.headers),i=n.method||"PUT",i=this._objectRequestParams(i,t,n),f.encodeCallback(i,n),i.mime=n.mime,i.stream=r,i.successStatuses=[200],e.next=13,this.request(i);case 13:return o=e.sent,s={name:t,url:this._objectUrl(t),res:o.res},i.headers&&i.headers["x-oss-callback"]&&(s.data=JSON.parse(o.data.toString())),e.abrupt("return",s);case 17:case"end":return e.stop()}},e,this)}));return function(e,t,r){return n.apply(this,arguments)}}(),n(r,e("../common/object/copyObject")),n(r,e("../common/object/getObjectTagging")),n(r,e("../common/object/putObjectTagging")),n(r,e("../common/object/deleteObjectTagging")),n(r,e("../common/image")),n(r,e("../common/object/getBucketVersions")),n(r,e("../common/object/getACL")),n(r,e("../common/object/putACL")),n(r,e("../common/object/head")),n(r,e("../common/object/delete")),n(r,e("../common/object/get")),n(r,e("../common/object/putSymlink")),n(r,e("../common/object/getSymlink")),n(r,e("../common/object/deleteMulti")),n(r,e("../common/object/getObjectMeta")),n(r,e("../common/object/getObjectUrl")),n(r,e("../common/object/generateObjectUrl")),n(r,e("../common/object/signatureUrl")),n(r,e("../common/object/asyncSignatureUrl")),n(r,e("../common/object/signatureUrlV4")),n(r,e("../common/object/signPostObjectPolicyV4")),r.putMeta=function(){var n=(0,i.default)(c.default.mark(function e(t,r,n){var i;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.copy(t,t,{meta:r||{},timeout:n&&n.timeout,ctx:n&&n.ctx});case 2:return i=e.sent,e.abrupt("return",i);case 4:case"end":return e.stop()}},e,this)}));return function(e,t,r){return n.apply(this,arguments)}}(),r.list=function(){var r=(0,i.default)(c.default.mark(function e(t,r){var n,i,o,s;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(n=this._objectRequestParams("GET","",r)).query=t,n.xmlResponse=!0,n.successStatuses=[200],e.next=6,this.request(n);case 6:return n=e.sent,i=n.data.Contents||[],o=this,i=i&&(i=Array.isArray(i)?i:[i]).map(function(e){return{name:e.Key,url:o._objectUrl(e.Key),lastModified:e.LastModified,etag:e.ETag,type:e.Type,size:Number(e.Size),storageClass:e.StorageClass,owner:{id:e.Owner.ID,displayName:e.Owner.DisplayName},restoreInfo:y(e.RestoreInfo)}}),s=(s=n.data.CommonPrefixes||null)&&(s=Array.isArray(s)?s:[s]).map(function(e){return e.Prefix}),e.abrupt("return",{res:n.res,objects:i,prefixes:s,nextMarker:n.data.NextMarker||null,isTruncated:"true"===n.data.IsTruncated});case 13:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}(),r.listV2=function(){var t=(0,i.default)(c.default.mark(function e(t){var r,n,i,o,s=arguments;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=1<s.length&&void 0!==s[1]?s[1]:{},(n=t["continuation-token"]||t.continuationToken)&&(r.subres=Object.assign({"continuation-token":n},r.subres)),(n=this._objectRequestParams("GET","",r)).query=Object.assign({"list-type":2},t),delete n.query["continuation-token"],delete n.query.continuationToken,n.xmlResponse=!0,n.successStatuses=[200],e.next=11,this.request(n);case 11:return r=e.sent,n=r.data.Contents||[],i=this,n=n&&(n=Array.isArray(n)?n:[n]).map(function(e){var t=null;return e.Owner&&(t={id:e.Owner.ID,displayName:e.Owner.DisplayName}),{name:e.Key,url:i._objectUrl(e.Key),lastModified:e.LastModified,etag:e.ETag,type:e.Type,size:Number(e.Size),storageClass:e.StorageClass,owner:t,restoreInfo:y(e.RestoreInfo)}}),o=(o=r.data.CommonPrefixes||null)&&(o=Array.isArray(o)?o:[o]).map(function(e){return e.Prefix}),e.abrupt("return",{res:r.res,objects:n,prefixes:o,isTruncated:"true"===r.data.IsTruncated,keyCount:+r.data.KeyCount,continuationToken:r.data.ContinuationToken||null,nextContinuationToken:r.data.NextContinuationToken||null});case 18:case"end":return e.stop()}},e,this)}));return function(e){return t.apply(this,arguments)}}(),r.restore=function(){var t=(0,i.default)(c.default.mark(function e(t){var r,n,i,o=arguments;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(i=(i=1<o.length&&void 0!==o[1]?o[1]:{type:"Archive"})||{}).subres=Object.assign({restore:""},i.subres),i.versionId&&(i.subres.versionId=i.versionId),r=this._objectRequestParams("POST",t,i),n={RestoreRequest:{Days:i.Days||2}},"ColdArchive"!==i.type&&"DeepColdArchive"!==i.type||(n.RestoreRequest.JobParameters={Tier:i.JobParameters||"Standard"}),r.content=a(n,{headers:!0}),r.mime="xml",r.successStatuses=[202],e.next=12,this.request(r);case 12:return i=e.sent,e.abrupt("return",{res:i.res});case 14:case"end":return e.stop()}},e,this)}));return function(e){return t.apply(this,arguments)}}(),r._objectUrl=function(e){return this._getReqUrl({bucket:this.options.bucket,object:e})},r._objectRequestParams=function(e,t,r){if(!this.options.bucket&&!this.options.cname)throw new Error("Please create a bucket first");r=r||{};t={object:t=this._objectName(t),bucket:this.options.bucket,method:e,subres:r&&r.subres,additionalHeaders:r&&r.additionalHeaders,timeout:r&&r.timeout,ctx:r&&r.ctx};return r.headers&&(t.headers={},s(r.headers).to(t.headers)),t},r._objectName=function(e){return e.replace(/^\/+/,"")},r._convertMetaToHeaders=function(t,r){t&&Object.keys(t).forEach(function(e){r["x-oss-meta-".concat(e)]=t[e]})},r._deleteFileSafe=function(r){var n=this;return new Promise(function(t){o.exists(r,function(e){e?o.unlink(r,function(e){e&&n.debug("unlink %j error: %s",r,e,"error"),t()}):t()})})}},{"../common/callback":24,"../common/image":27,"../common/object/asyncSignatureUrl":31,"../common/object/copyObject":32,"../common/object/delete":33,"../common/object/deleteMulti":34,"../common/object/deleteObjectTagging":35,"../common/object/generateObjectUrl":36,"../common/object/get":37,"../common/object/getACL":38,"../common/object/getBucketVersions":39,"../common/object/getObjectMeta":40,"../common/object/getObjectTagging":41,"../common/object/getObjectUrl":42,"../common/object/getSymlink":43,"../common/object/head":44,"../common/object/putACL":45,"../common/object/putObjectTagging":46,"../common/object/putSymlink":47,"../common/object/signPostObjectPolicyV4":48,"../common/object/signatureUrl":49,"../common/object/signatureUrlV4":50,"../common/utils/isBlob":68,"../common/utils/isBuffer":69,"../common/utils/isFile":71,"../common/utils/obj2xml":76,"../common/utils/parseRestoreInfo":78,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"copy-to":107,"core-js/modules/es.array.map.js":318,"core-js/modules/es.function.name.js":322,"core-js/modules/es.number.constructor.js":324,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.replace.js":345,"core-js/modules/web.dom-collections.for-each.js":380,fs:102,"merge-descriptors":428,mime:430,path:439}],6:[function(e,t,r){"use strict";r.version="6.23.0"},{}],7:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),i=n(e("@babel/runtime/regenerator")),o=n(e("@babel/runtime/helpers/asyncToGenerator")),s=(Object.defineProperty(r,"__esModule",{value:!0}),r.abortBucketWorm=void 0,e("../utils/checkBucketName"));function a(){return(a=(0,o.default)(i.default.mark(function e(t,r){var n;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s.checkBucketName(t),n=this._bucketRequestParams("DELETE",t,"worm",r),e.next=4,this.request(n);case 4:return n=e.sent,e.abrupt("return",{res:n.res,status:n.status});case 6:case"end":return e.stop()}},e,this)}))).apply(this,arguments)}r.abortBucketWorm=function(e,t){return a.apply(this,arguments)}},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],8:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),o=n(e("@babel/runtime/regenerator")),i=n(e("@babel/runtime/helpers/asyncToGenerator")),s=(Object.defineProperty(r,"__esModule",{value:!0}),r.completeBucketWorm=void 0,e("../utils/checkBucketName"));function a(){return(a=(0,i.default)(o.default.mark(function e(t,r,n){var i;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s.checkBucketName(t),i=this._bucketRequestParams("POST",t,{wormId:r},n),e.next=4,this.request(i);case 4:return i=e.sent,e.abrupt("return",{res:i.res,status:i.status});case 6:case"end":return e.stop()}},e,this)}))).apply(this,arguments)}r.completeBucketWorm=function(e,t,r){return a.apply(this,arguments)}},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],9:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),s=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.object.assign.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),a=(Object.defineProperty(r,"__esModule",{value:!0}),r.deleteBucketInventory=void 0,e("../utils/checkBucketName"));function o(){return(o=(0,i.default)(s.default.mark(function e(t,r){var n,i,o=arguments;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=2<o.length&&void 0!==o[2]?o[2]:{},n=Object.assign({inventory:"",inventoryId:r},i.subres),a.checkBucketName(t),(n=this._bucketRequestParams("DELETE",t,n,i)).successStatuses=[204],e.next=7,this.request(n);case 7:return i=e.sent,e.abrupt("return",{status:i.status,res:i.res});case 9:case"end":return e.stop()}},e,this)}))).apply(this,arguments)}r.deleteBucketInventory=function(e,t){return o.apply(this,arguments)}},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],10:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),i=n(e("@babel/runtime/regenerator")),o=n(e("@babel/runtime/helpers/asyncToGenerator")),s=e("../utils/checkBucketName").checkBucketName;r.deleteBucketLifecycle=function(){var r=(0,o.default)(i.default.mark(function e(t,r){var n;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s(t),(n=this._bucketRequestParams("DELETE",t,"lifecycle",r)).successStatuses=[204],e.next=5,this.request(n);case 5:return n=e.sent,e.abrupt("return",{res:n.res});case 7:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],11:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),i=n(e("@babel/runtime/regenerator")),o=n(e("@babel/runtime/helpers/asyncToGenerator")),s=e("../utils/checkBucketName").checkBucketName;r.deleteBucketWebsite=function(){var r=(0,o.default)(i.default.mark(function e(t,r){var n;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s(t),(n=this._bucketRequestParams("DELETE",t,"website",r)).successStatuses=[204],e.next=5,this.request(n);case 5:return n=e.sent,e.abrupt("return",{res:n.res});case 7:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],12:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),a=n(e("@babel/runtime/regenerator")),i=n(e("@babel/runtime/helpers/asyncToGenerator")),c=(Object.defineProperty(r,"__esModule",{value:!0}),r.extendBucketWorm=void 0,e("../utils/checkBucketName")),u=e("../utils/obj2xml");function o(){return(o=(0,i.default)(a.default.mark(function e(t,r,n,i){var o,s;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return c.checkBucketName(t),o=this._bucketRequestParams("POST",t,{wormExtend:"",wormId:r},i),s={ExtendWormConfiguration:{RetentionPeriodInDays:n}},o.mime="xml",o.content=u.obj2xml(s,{headers:!0}),o.successStatuses=[200],e.next=8,this.request(o);case 8:return s=e.sent,e.abrupt("return",{res:s.res,status:s.status});case 10:case"end":return e.stop()}},e,this)}))).apply(this,arguments)}r.extendBucketWorm=function(e,t,r,n){return o.apply(this,arguments)}},{"../utils/checkBucketName":53,"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],13:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),s=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.object.assign.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),a=(Object.defineProperty(r,"__esModule",{value:!0}),r.getBucketInventory=void 0,e("../utils/checkBucketName")),c=e("../utils/formatInventoryConfig");function o(){return(o=(0,i.default)(s.default.mark(function e(t,r){var n,i,o=arguments;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=2<o.length&&void 0!==o[2]?o[2]:{},n=Object.assign({inventory:"",inventoryId:r},i.subres),a.checkBucketName(t),(n=this._bucketRequestParams("GET",t,n,i)).successStatuses=[200],n.xmlResponse=!0,e.next=8,this.request(n);case 8:return i=e.sent,e.abrupt("return",{status:i.status,res:i.res,inventory:c.formatInventoryConfig(i.data)});case 10:case"end":return e.stop()}},e,this)}))).apply(this,arguments)}r.getBucketInventory=function(e,t){return o.apply(this,arguments)}},{"../utils/checkBucketName":53,"../utils/formatInventoryConfig":63,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],14:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),o=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.array.map.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),s=e("../utils/checkBucketName").checkBucketName,a=e("../utils/isArray").isArray,c=e("../utils/formatObjKey").formatObjKey;r.getBucketLifecycle=function(){var r=(0,i.default)(o.default.mark(function e(t,r){var n,i;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s(t),(n=this._bucketRequestParams("GET",t,"lifecycle",r)).successStatuses=[200],n.xmlResponse=!0,e.next=6,this.request(n);case 6:return n=e.sent,i=(i=n.data.Rule||null)&&(i=a(i)?i:[i]).map(function(e){return e.ID&&(e.id=e.ID,delete e.ID),e.Tag&&!a(e.Tag)&&(e.Tag=[e.Tag]),c(e,"firstLowerCase")}),e.abrupt("return",{rules:i,res:n.res});case 10:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()},{"../utils/checkBucketName":53,"../utils/formatObjKey":64,"../utils/isArray":67,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.map.js":318}],15:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),o=n(e("@babel/runtime/regenerator")),i=n(e("@babel/runtime/helpers/asyncToGenerator")),s=e("../utils/checkBucketName").checkBucketName;r.getBucketVersioning=function(){var r=(0,i.default)(o.default.mark(function e(t,r){var n,i;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s(t),(n=this._bucketRequestParams("GET",t,"versioning",r)).xmlResponse=!0,n.successStatuses=[200],e.next=6,this.request(n);case 6:return n=e.sent,i=n.data.Status,e.abrupt("return",{status:n.status,versionStatus:i,res:n.res});case 9:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],16:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),o=n(e("@babel/runtime/regenerator")),i=n(e("@babel/runtime/helpers/asyncToGenerator")),s=e("../utils/checkBucketName").checkBucketName,a=e("../utils/isObject").isObject;r.getBucketWebsite=function(){var r=(0,i.default)(o.default.mark(function e(t,r){var n,i;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s(t),(n=this._bucketRequestParams("GET",t,"website",r)).successStatuses=[200],n.xmlResponse=!0,e.next=6,this.request(n);case 6:return n=e.sent,i=[],n.data.RoutingRules&&n.data.RoutingRules.RoutingRule&&(i=a(n.data.RoutingRules.RoutingRule)?[n.data.RoutingRules.RoutingRule]:n.data.RoutingRules.RoutingRule),e.abrupt("return",{index:n.data.IndexDocument&&n.data.IndexDocument.Suffix||"",supportSubDir:n.data.IndexDocument&&n.data.IndexDocument.SupportSubDir||"false",type:n.data.IndexDocument&&n.data.IndexDocument.Type,routingRules:i,error:n.data.ErrorDocument&&n.data.ErrorDocument.Key||null,res:n.res});case 10:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()},{"../utils/checkBucketName":53,"../utils/isObject":74,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],17:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),i=n(e("@babel/runtime/regenerator")),o=(e("core-js/modules/es.object.assign.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),s=(Object.defineProperty(r,"__esModule",{value:!0}),r.getBucketWorm=void 0,e("../utils/checkBucketName")),a=e("../utils/dataFix");function c(){return(c=(0,o.default)(i.default.mark(function e(t,r){var n;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s.checkBucketName(t),(n=this._bucketRequestParams("GET",t,"worm",r)).successStatuses=[200],n.xmlResponse=!0,e.next=6,this.request(n);case 6:return n=e.sent,a.dataFix(n.data,{lowerFirst:!0,rename:{RetentionPeriodInDays:"days"}}),e.abrupt("return",Object.assign(Object.assign({},n.data),{res:n.res,status:n.status}));case 9:case"end":return e.stop()}},e,this)}))).apply(this,arguments)}r.getBucketWorm=function(e,t){return c.apply(this,arguments)}},{"../utils/checkBucketName":53,"../utils/dataFix":59,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],18:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),s=n(e("@babel/runtime/regenerator")),i=n(e("@babel/runtime/helpers/asyncToGenerator")),a=(Object.defineProperty(r,"__esModule",{value:!0}),r.initiateBucketWorm=void 0,e("../utils/obj2xml")),c=e("../utils/checkBucketName");function o(){return(o=(0,i.default)(s.default.mark(function e(t,r,n){var i,o;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return c.checkBucketName(t),i=this._bucketRequestParams("POST",t,"worm",n),o={InitiateWormConfiguration:{RetentionPeriodInDays:r}},i.mime="xml",i.content=a.obj2xml(o,{headers:!0}),i.successStatuses=[200],e.next=8,this.request(i);case 8:return o=e.sent,e.abrupt("return",{res:o.res,wormId:o.res.headers["x-oss-worm-id"],status:o.status});case 10:case"end":return e.stop()}},e,this)}))).apply(this,arguments)}r.initiateBucketWorm=function(e,t,r){return o.apply(this,arguments)}},{"../utils/checkBucketName":53,"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],19:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),a=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.object.assign.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),c=(Object.defineProperty(r,"__esModule",{value:!0}),r.listBucketInventory=void 0,e("../utils/checkBucketName")),u=e("../utils/formatInventoryConfig");function o(){return(o=(0,i.default)(a.default.mark(function e(t){var r,n,i,o,s=arguments;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=(r=1<s.length&&void 0!==s[1]?s[1]:{}).continuationToken,n=Object.assign({inventory:""},n&&{"continuation-token":n},r.subres),c.checkBucketName(t),(n=this._bucketRequestParams("GET",t,n,r)).successStatuses=[200],n.xmlResponse=!0,e.next=9,this.request(n);case 9:return r=e.sent,n=r.data,i=r.res,o=r.status,e.abrupt("return",{isTruncated:"true"===n.IsTruncated,nextContinuationToken:n.NextContinuationToken,inventoryList:u.formatInventoryConfig(n.InventoryConfiguration,!0),status:o,res:i});case 12:case"end":return e.stop()}},e,this)}))).apply(this,arguments)}r.listBucketInventory=function(e){return o.apply(this,arguments)}},{"../utils/checkBucketName":53,"../utils/formatInventoryConfig":63,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],20:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),l=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.object.assign.js"),e("core-js/modules/es.array.concat.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),f=(Object.defineProperty(r,"__esModule",{value:!0}),r.putBucketInventory=void 0,e("../utils/checkBucketName")),p=e("../utils/obj2xml");function o(){return(o=(0,i.default)(l.default.mark(function e(t,r){var n,i,o,s,a,c,u=arguments;return l.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=2<u.length&&void 0!==u[2]?u[2]:{},i=Object.assign({inventory:"",inventoryId:r.id},n.subres),f.checkBucketName(t),s=r.OSSBucketDestination,c=r.optionalFields,a=r.includedObjectVersions,o="acs:ram::".concat(s.accountId,":role/"),o={InventoryConfiguration:{Id:r.id,IsEnabled:r.isEnabled,Filter:{Prefix:r.prefix||""},Destination:{OSSBucketDestination:{Format:s.format,AccountId:s.accountId,RoleArn:"".concat(o).concat(s.rolename),Bucket:"".concat("acs:oss:::").concat(s.bucket),Prefix:s.prefix||"",Encryption:s.encryption||""}},Schedule:{Frequency:r.frequency},IncludedObjectVersions:a,OptionalFields:{Field:(null==c?void 0:c.field)||[]}}},s=p.obj2xml(o,{headers:!0,firstUpperCase:!0}),(a=this._bucketRequestParams("PUT",t,i,n)).successStatuses=[200],a.mime="xml",a.content=s,e.next=14,this.request(a);case 14:return c=e.sent,e.abrupt("return",{status:c.status,res:c.res});case 16:case"end":return e.stop()}},e,this)}))).apply(this,arguments)}r.putBucketInventory=function(e,t){return o.apply(this,arguments)}},{"../utils/checkBucketName":53,"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.object.assign.js":325}],21:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),a=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.object.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.array.includes.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),c=e("../utils/checkBucketName").checkBucketName,u=e("../utils/isArray").isArray,l=e("../utils/deepCopy").deepCopy,f=e("../utils/isObject").isObject,p=e("../utils/obj2xml").obj2xml,d=e("../utils/checkObjectTag").checkObjectTag,h=e("../utils/getStrBytesCount").getStrBytesCount;function y(e,t){var r=e.days,e=e.createdBeforeDate;if(!r&&!e)throw new Error("".concat(t," must includes days or createdBeforeDate"));if(r&&(u(r)||!/^[1-9][0-9]*$/.test(r)))throw new Error("days must be a positive integer");if(e&&!/\d{4}-\d{2}-\d{2}T00:00:00.000Z/.test(e))throw new Error("createdBeforeDate must be date and conform to iso8601 format")}function m(e,t){e=e.noncurrentDays;if(!e)throw new Error("".concat(t," must includes noncurrentDays"));if(u(e)||!/^[1-9][0-9]*$/.test(e))throw new Error("noncurrentDays must be a positive integer")}function b(e){if(!["IA","Archive","ColdArchive","DeepColdArchive"].includes(e))throw new Error("StorageClass must be IA or Archive or ColdArchive or DeepColdArchive")}r.putBucketLifecycle=function(){var n=(0,i.default)(a.default.mark(function e(t,r,n){var i,o,s;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(c(t),u(r)){e.next=3;break}throw new Error("rules must be Array");case 3:return i=this._bucketRequestParams("PUT",t,"lifecycle",n),s={LifecycleConfiguration:{Rule:o=[]}},r.forEach(function(e){var t=e,t=(t.days&&(t.expiration={days:t.days}),t.date&&(t.expiration={createdBeforeDate:t.date}),e);if(t.id&&255<h(t.id))throw new Error("ID is composed of 255 bytes at most");if(void 0===t.prefix)throw new Error("Rule must includes prefix");if(!["Enabled","Disabled"].includes(t.status))throw new Error("Status must be Enabled or Disabled");if(!(t.expiration||t.noncurrentVersionExpiration||t.abortMultipartUpload||t.transition||t.noncurrentVersionTransition))throw new Error("Rule must includes expiration or noncurrentVersionExpiration or abortMultipartUpload or transition or noncurrentVersionTransition");if(t.transition&&(b(t.transition.storageClass),y(t.transition,"Transition")),t.expiration)if(t.expiration.expiredObjectDeleteMarker){if(t.expiration.days||t.expiration.createdBeforeDate)throw new Error("expiredObjectDeleteMarker cannot be used with days or createdBeforeDate")}else y(t.expiration,"Expiration");if(t.abortMultipartUpload&&y(t.abortMultipartUpload,"AbortMultipartUpload"),t.noncurrentVersionTransition&&(b(t.noncurrentVersionTransition.storageClass),m(t.noncurrentVersionTransition,"NoncurrentVersionTransition")),t.noncurrentVersionExpiration&&m(t.noncurrentVersionExpiration,"NoncurrentVersionExpiration"),t.tag){if(t.abortMultipartUpload)throw new Error("Tag cannot be used with abortMultipartUpload");!function(e){if(!u(e)&&!f(e))throw new Error("tag must be Object or Array");e=f(e)?[e]:e;var t={};l(e).forEach(function(e){t[e.key]=e.value}),d(t)}(t.tag)}e.id&&(e.ID=e.id,delete e.id),o.push(e)}),s=p(s,{headers:!0,firstUpperCase:!0}),i.content=s,i.mime="xml",i.successStatuses=[200],e.next=13,this.request(i);case 13:return s=e.sent,e.abrupt("return",{res:s.res});case 15:case"end":return e.stop()}},e,this)}));return function(e,t,r){return n.apply(this,arguments)}}()},{"../utils/checkBucketName":53,"../utils/checkObjectTag":56,"../utils/deepCopy":60,"../utils/getStrBytesCount":66,"../utils/isArray":67,"../utils/isObject":74,"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.includes.js":315,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/web.dom-collections.for-each.js":380}],22:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),a=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.array.includes.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),c=e("../utils/checkBucketName").checkBucketName,u=e("../utils/obj2xml").obj2xml;r.putBucketVersioning=function(){var r=(0,i.default)(a.default.mark(function e(t,r){var n,i,o,s=arguments;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=2<s.length&&void 0!==s[2]?s[2]:{},c(t),["Enabled","Suspended"].includes(r)){e.next=4;break}throw new Error("status must be Enabled or Suspended");case 4:return i=this._bucketRequestParams("PUT",t,"versioning",n),o={VersioningConfiguration:{Status:r}},i.mime="xml",i.content=u(o,{headers:!0}),e.next=10,this.request(i);case 10:return o=e.sent,e.abrupt("return",{res:o.res,status:o.status});case 12:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()},{"../utils/checkBucketName":53,"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.includes.js":315}],23:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),c=n(e("@babel/runtime/regenerator")),i=n(e("@babel/runtime/helpers/asyncToGenerator")),u=e("../utils/checkBucketName").checkBucketName,l=e("../utils/obj2xml").obj2xml,f=e("../utils/isArray").isArray;r.putBucketWebsite=function(){var t=(0,i.default)(c.default.mark(function e(t){var r,n,i,o,s,a=arguments;return c.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=1<a.length&&void 0!==a[1]?a[1]:{},n=2<a.length?a[2]:void 0,u(t),n=this._bucketRequestParams("PUT",t,"website",n),s={Suffix:r.index||"index.html"},o={WebsiteConfiguration:i={IndexDocument:s}},r.supportSubDir&&(s.SupportSubDir=r.supportSubDir),r.type&&(s.Type=r.type),r.error&&(i.ErrorDocument={Key:r.error}),void 0===r.routingRules){e.next=14;break}if(f(r.routingRules)){e.next=13;break}throw new Error("RoutingRules must be Array");case 13:i.RoutingRules={RoutingRule:r.routingRules};case 14:return o=l(o),n.content=o,n.mime="xml",n.successStatuses=[200],e.next=20,this.request(n);case 20:return s=e.sent,e.abrupt("return",{res:s.res});case 22:case"end":return e.stop()}},e,this)}));return function(e){return t.apply(this,arguments)}}()},{"../utils/checkBucketName":53,"../utils/isArray":67,"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93}],24:[function(e,t,r){!function(i){!function(){"use strict";e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.regexp.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.object.keys.js"),r.encodeCallback=function(e,t){var r,n;e.headers=e.headers||{},Object.prototype.hasOwnProperty.call(e.headers,"x-oss-callback")||t.callback&&(r={callbackUrl:encodeURI(t.callback.url),callbackBody:t.callback.body},t.callback.host&&(r.callbackHost=t.callback.host),t.callback.contentType&&(r.callbackBodyType=t.callback.contentType),t.callback.callbackSNI&&(r.callbackSNI=t.callback.callbackSNI),r=i.from(JSON.stringify(r)).toString("base64"),e.headers["x-oss-callback"]=r,t.callback.customValue)&&(n={},Object.keys(t.callback.customValue).forEach(function(e){n["x:".concat(e)]=t.callback.customValue[e].toString()}),e.headers["x-oss-callback-var"]=i.from(JSON.stringify(n)).toString("base64"))}}.call(this)}.call(this,e("buffer").Buffer)},{buffer:103,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/web.dom-collections.for-each.js":380}],25:[function(e,t,r){"use strict";e("core-js/modules/es.array.concat.js"),e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.string.replace.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js");var n=function(e){return e&&e.__esModule?e:{default:e}},i=(Object.defineProperty(r,"__esModule",{value:!0}),r.getReqUrl=void 0,n(e("copy-to"))),o=n(e("url")),s=n(e("merge-descriptors")),a=n(e("is-type-of")),c=e("../utils/isIP"),u=e("../utils/checkConfigValid");r.getReqUrl=function(e){var t,r={},n=this.options.cname,n=(u.checkConfigValid(this.options.endpoint,"endpoint"),i.default(this.options.endpoint,!1).to(r),!e.bucket||n||c.isIP(r.hostname)||this.options.sldEnable||(r.host="".concat(e.bucket,".").concat(r.host)),"/"),n=(e.bucket&&this.options.sldEnable&&(n+="".concat(e.bucket,"/")),e.object&&(n+=this._escape(e.object).replace(/\+/g,"%2B")),r.pathname=n,{});return e.query&&s.default(n,e.query),e.subres&&(t={},a.default.string(e.subres)?t[e.subres]="":a.default.array(e.subres)?e.subres.forEach(function(e){t[e]=""}):t=e.subres,s.default(n,t)),r.query=n,o.default.format(r)}},{"../utils/checkConfigValid":54,"../utils/isIP":73,"copy-to":107,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.replace.js":345,"core-js/modules/web.dom-collections.for-each.js":380,"is-type-of":537,"merge-descriptors":428,url:543}],26:[function(e,t,r){"use strict";e("core-js/modules/es.array.concat.js"),e("core-js/modules/es.object.assign.js"),e("core-js/modules/es.string.trim.js");var n=e("humanize-ms"),i=e("url"),o=e("../utils/checkBucketName").checkBucketName,s=e("../utils/setRegion").setRegion,a=e("../utils/checkConfigValid").checkConfigValid;t.exports=function(e){if(!e||!e.accessKeyId||!e.accessKeySecret)throw new Error("require accessKeyId, accessKeySecret");!e.stsToken||e.refreshSTSToken||e.refreshSTSTokenInterval||console.warn("It's recommended to set 'refreshSTSToken' and 'refreshSTSTokenInterval' to refresh stsToken\u3001accessKeyId\u3001accessKeySecret automatically when sts token has expired"),e.bucket&&o(e.bucket);e=Object.assign({region:"oss-cn-hangzhou",internal:!1,secure:!1,timeout:6e4,bucket:null,endpoint:null,cname:!1,isRequestPay:!1,sldEnable:!1,headerEncoding:"utf-8",refreshSTSToken:null,refreshSTSTokenInterval:3e5,retryMax:0,authorizationV4:!1},e);if(e.accessKeyId=e.accessKeyId.trim(),e.accessKeySecret=e.accessKeySecret.trim(),e.timeout&&(e.timeout=n(e.timeout)),e.endpoint)e.endpoint=function(e,t){a(e,"endpoint");var r=i.parse(e);if("http:"!==(r=r.protocol?r:i.parse("http".concat(t?"s":"","://").concat(e))).protocol&&"https:"!==r.protocol)throw new Error("Endpoint protocol must be http or https.");return r}(e.endpoint,e.secure);else{if(!e.region)throw new Error("require options.endpoint or options.region");e.endpoint=s(e.region,e.internal,e.secure)}return e.inited=!0,e}},{"../utils/checkBucketName":53,"../utils/checkConfigValid":54,"../utils/setRegion":81,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.string.trim.js":349,"humanize-ms":399,url:543}],27:[function(e,t,r){"use strict";e("merge-descriptors")(r,e("./processObjectSave"))},{"./processObjectSave":28,"merge-descriptors":428}],28:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),a=n(e("@babel/runtime/regenerator")),o=(e("core-js/modules/es.array.concat.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),c=e("../utils/checkBucketName").checkBucketName,u=e("querystring"),l=e("js-base64").Base64.encode;function f(e,t){if(!e)throw new Error("".concat(t," is required"));if("string"!=typeof e)throw new Error("".concat(t," must be String"))}r.processObjectSave=function(){var i=(0,o.default)(a.default.mark(function e(t,r,n,i){var o,s;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return f(t,"sourceObject"),f(r,"targetObject"),f(n,"process"),r=this._objectName(r),i&&c(i),o=this._objectRequestParams("POST",t,{subres:"x-oss-process"}),s=i?",b_".concat(l(i)):"",r=l(r),s={"x-oss-process":"".concat(n,"|sys/saveas,o_").concat(r).concat(s)},o.content=u.stringify(s),e.next=12,this.request(o);case 12:return s=e.sent,e.abrupt("return",{res:s.res,status:s.res.status});case 14:case"end":return e.stop()}},e,this)}));return function(e,t,r,n){return i.apply(this,arguments)}}()},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.concat.js":310,"js-base64":413,querystring:451}],29:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),b=n(e("@babel/runtime/regenerator")),g=(e("core-js/modules/es.array.concat.js"),e("core-js/modules/es.function.name.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.promise.js"),e("core-js/modules/es.array.from.js"),e("core-js/modules/es.string.iterator.js"),e("core-js/modules/es.array.map.js"),e("core-js/modules/es.array.filter.js"),e("core-js/modules/es.array.find.js"),e("core-js/modules/es.regexp.to-string.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),v=e("debug")("ali-oss:multipart-copy"),j=e("copy-to"),n=r;n.uploadPartCopy=function(){var o=(0,g.default)(b.default.mark(function e(t,r,n,i,o){var s,a,c=arguments;return b.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(a=5<c.length&&void 0!==c[5]?c[5]:{}).headers=a.headers||{},s=a.versionId||a.subres&&a.subres.versionId||null,s=s?"/".concat(o.sourceBucketName,"/").concat(encodeURIComponent(o.sourceKey),"?versionId=").concat(s):"/".concat(o.sourceBucketName,"/").concat(encodeURIComponent(o.sourceKey)),a.headers["x-oss-copy-source"]=s,i&&(a.headers["x-oss-copy-source-range"]="bytes=".concat(i)),a.subres={partNumber:n,uploadId:r},(s=this._objectRequestParams("PUT",t,a)).mime=a.mime,s.successStatuses=[200],e.next=12,this.request(s);case 12:return a=e.sent,e.abrupt("return",{name:t,etag:a.res.headers.etag,res:a.res});case 14:case"end":return e.stop()}},e,this)}));return function(e,t,r,n,i){return o.apply(this,arguments)}}(),n.multipartUploadCopy=function(){var r=(0,g.default)(b.default.mark(function e(t,r){var n,i,o,s,a,c,u,l=arguments;return b.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=2<l.length&&void 0!==l[2]?l[2]:{},this.resetCancelFlag(),i=n.versionId,i={versionId:void 0===i?null:i},e.next=6,this._getObjectMeta(r.sourceBucketName,r.sourceKey,i);case 6:if(i=e.sent,a=i.res.headers["content-length"],r.startOffset=r.startOffset||0,r.endOffset=r.endOffset||a,n.checkpoint&&n.checkpoint.uploadId)return e.next=13,this._resumeMultipartCopy(n.checkpoint,r,n);e.next=14;break;case 13:return e.abrupt("return",e.sent);case 14:if(o=102400,(s=r.endOffset-r.startOffset)<o)throw new Error("copySize must not be smaller than ".concat(o));e.next=18;break;case 18:if(n.partSize&&n.partSize<o)throw new Error("partSize must not be smaller than ".concat(o));e.next=20;break;case 20:return e.next=22,this.initMultipartUpload(t,n);case 22:if(a=e.sent,c=a.uploadId,u=this._getPartSize(s,n.partSize),u={name:t,copySize:s,partSize:u,uploadId:c,doneParts:[]},n&&n.progress)return e.next=29,n.progress(0,u,a.res);e.next=29;break;case 29:return e.next=31,this._resumeMultipartCopy(u,r,n);case 31:return e.abrupt("return",e.sent);case 32:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}(),n._resumeMultipartCopy=function(){var n=(0,g.default)(b.default.mark(function e(c,t,u){var l,f,p,d,h,y,r,n,i,o,s,a,m;return b.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isCancel())throw this._makeCancelEvent();e.next=2;break;case 2:if(i=u.versionId,o={versionId:i=void 0===i?null:i},r=c.copySize,s=c.partSize,l=c.uploadId,f=c.doneParts,p=c.name,d=this._divideMultipartCopyParts(r,s,t.startOffset),h=d.length,y={headers:{}},u.copyheaders&&j(u.copyheaders).to(y.headers),i&&j(o).to(y),r=function(o,s,a){return new Promise(function(){var r=(0,g.default)(b.default.mark(function e(t,r){var n,i;return b.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,o.isCancel()){e.next=22;break}return n=d[s-1],n="".concat(n.start,"-").concat(n.end-1),e.prev=4,e.next=7,o.uploadPartCopy(p,l,s,n,a,y);case 7:i=e.sent,e.next=15;break;case 10:if(e.prev=10,e.t0=e.catch(4),404===e.t0.status)throw o._makeAbortEvent();e.next=14;break;case 14:throw e.t0;case 15:if(o.isCancel());else if(v("content-range ".concat(i.res.headers["content-range"])),f.push({number:s,etag:i.res.headers.etag}),c.doneParts=f,u&&u.progress)return e.next=22,u.progress(f.length/h,c,i.res);e.next=22;break;case 22:t(),e.next=29;break;case 25:e.prev=25,e.t1=e.catch(0),e.t1.partNum=s,r(e.t1);case 29:case"end":return e.stop()}},e,null,[[0,25],[4,10]])}));return function(e,t){return r.apply(this,arguments)}}())},s=Array.from(new Array(h),function(e,t){return t+1}),n=f.map(function(e){return e.number}),i=s.filter(function(e){return n.indexOf(e)<0}),o=u.parallel||5,!this.checkBrowserAndVersion("Internet Explorer","10")&&1!==o){e.next=28;break}s=0;case 18:if(s<i.length){if(this.isCancel())throw this._makeCancelEvent();e.next=21}else e.next=26;break;case 21:return e.next=23,r(this,i[s],t);case 23:s++,e.next=18;break;case 26:e.next=40;break;case 28:return e.next=30,this._parallelNode(i,o,r,t);case 30:if(a=e.sent,m=a.find(function(e){return"abort"===e.name}))throw m;e.next=34;break;case 34:if(this.isCancel())throw this._makeCancelEvent();e.next=36;break;case 36:if(a&&0<a.length)throw(m=a[0]).message="Failed to copy some parts with error: ".concat(m.toString()," part_num: ").concat(m.partNum),m;e.next=40;break;case 40:return e.next=42,this.completeMultipartUpload(p,l,f,u);case 42:return e.abrupt("return",e.sent);case 43:case"end":return e.stop()}},e,this)}));return function(e,t,r){return n.apply(this,arguments)}}(),n._divideMultipartCopyParts=function(e,t,r){for(var n=Math.ceil(e/t),i=[],o=0;o<n;o++){var s=t*o+r,a=Math.min(s+t,e+r);i.push({start:s,end:a})}return i},n._getObjectMeta=function(){var n=(0,g.default)(b.default.mark(function e(t,r,n){var i,o;return b.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=this.getBucket(),this.setBucket(t),e.next=4,this.head(r,n);case 4:return o=e.sent,this.setBucket(i),e.abrupt("return",o);case 7:case"end":return e.stop()}},e,this)}));return function(e,t,r){return n.apply(this,arguments)}}()},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"copy-to":107,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.filter.js":312,"core-js/modules/es.array.find.js":313,"core-js/modules/es.array.from.js":314,"core-js/modules/es.array.map.js":318,"core-js/modules/es.function.name.js":322,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.iterator.js":343,debug:536}],30:[function(r,e,n){!function(l){!function(){"use strict";var e=r("@babel/runtime/helpers/interopRequireDefault"),p=e(r("@babel/runtime/regenerator")),t=(r("core-js/modules/es.array.map.js"),r("core-js/modules/es.array.filter.js"),r("core-js/modules/es.object.to-string.js"),r("core-js/modules/es.array.sort.js"),r("core-js/modules/es.array.concat.js"),r("core-js/modules/es.object.keys.js"),r("core-js/modules/es.regexp.to-string.js"),e(r("@babel/runtime/helpers/asyncToGenerator"))),u=r("copy-to"),d=r("./callback"),h=r("./utils/deepCopy").deepCopyWith,y=r("./utils/isBuffer").isBuffer,m=r("./utils/omit").omit,e=n;e.listUploads=function(){var r=(0,t.default)(p.default.mark(function e(t,r){var n,i;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n={},u(r=r||{}).to(n),n.subres="uploads",(n=this._objectRequestParams("GET","",n)).query=t,n.xmlResponse=!0,n.successStatuses=[200],e.next=10,this.request(n);case 10:return n=e.sent,i=n.data.Upload||[],i=(i=Array.isArray(i)?i:[i]).map(function(e){return{name:e.Key,uploadId:e.UploadId,initiated:e.Initiated}}),e.abrupt("return",{res:n.res,uploads:i,bucket:n.data.Bucket,nextKeyMarker:n.data.NextKeyMarker,nextUploadIdMarker:n.data.NextUploadIdMarker,isTruncated:"true"===n.data.IsTruncated});case 15:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}(),e.listParts=function(){var i=(0,t.default)(p.default.mark(function e(t,r,n,i){var o;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o={},u(i=i||{}).to(o),o.subres={uploadId:r},(o=this._objectRequestParams("GET",t,o)).query=n,o.xmlResponse=!0,o.successStatuses=[200],e.next=10,this.request(o);case 10:return o=e.sent,e.abrupt("return",{res:o.res,uploadId:o.data.UploadId,bucket:o.data.Bucket,name:o.data.Key,partNumberMarker:o.data.PartNumberMarker,nextPartNumberMarker:o.data.NextPartNumberMarker,maxParts:o.data.MaxParts,isTruncated:o.data.IsTruncated,parts:o.data.Part||[]});case 12:case"end":return e.stop()}},e,this)}));return function(e,t,r,n){return i.apply(this,arguments)}}(),e.abortMultipartUpload=function(){var n=(0,t.default)(p.default.mark(function e(t,r,n){var i;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this._stop(),i={},u(n=n||{}).to(i),i.subres={uploadId:r},(i=this._objectRequestParams("DELETE",t,i)).successStatuses=[204],e.next=9,this.request(i);case 9:return i=e.sent,e.abrupt("return",{res:i.res});case 11:case"end":return e.stop()}},e,this)}));return function(e,t,r){return n.apply(this,arguments)}}(),e.initMultipartUpload=function(){var r=(0,t.default)(p.default.mark(function e(t,r){var n;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n={},u(r=r||{}).to(n),n.headers=n.headers||{},this._convertMetaToHeaders(r.meta,n.headers),n.subres="uploads",(n=this._objectRequestParams("POST",t,n)).mime=r.mime,n.xmlResponse=!0,n.successStatuses=[200],e.next=12,this.request(n);case 12:return n=e.sent,e.abrupt("return",{res:n.res,bucket:n.data.Bucket,name:n.data.Key,uploadId:n.data.UploadId});case 14:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}(),e.uploadPart=function(){var a=(0,t.default)(p.default.mark(function e(t,r,n,i,o,s,a){var c;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(c={size:s-o},l&&l.browser)return e.next=5,this._createBuffer(i,o,s);e.next=8;break;case 5:c.content=e.sent,e.next=11;break;case 8:return e.next=10,this._createStream(i,o,s);case 10:c.stream=e.sent;case 11:return e.next=13,this._uploadPart(t,r,n,c,a);case 13:return e.abrupt("return",e.sent);case 14:case"end":return e.stop()}},e,this)}));return function(e,t,r,n,i,o,s){return a.apply(this,arguments)}}(),e.completeMultipartUpload=function(){var i=(0,t.default)(p.default.mark(function e(t,r,n,i){var o,s,a,c,u,l,f;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:for(o=n.concat().sort(function(e,t){return e.number-t.number}).filter(function(e,t,r){return!t||e.number!==r[t-1].number}),s='<?xml version="1.0" encoding="UTF-8"?>\n<CompleteMultipartUpload>\n',a=0;a<o.length;a++)c=o[a],s=(s=(s+="<Part>\n")+"<PartNumber>".concat(c.number,"</PartNumber>\n"))+"<ETag>".concat(c.etag,"</ETag>\n")+"</Part>\n";return s+="</CompleteMultipartUpload>",f={},(f=h(i=i||{},function(e){if(y(e))return null})).subres={uploadId:r},f.headers=m(f.headers,["x-oss-server-side-encryption","x-oss-storage-class"]),u=this._objectRequestParams("POST",t,f),d.encodeCallback(u,f),u.mime="xml",u.content=s,u.headers&&u.headers["x-oss-callback"]||(u.xmlResponse=!0),u.successStatuses=[200],e.next=17,this.request(u);case 17:if(l=e.sent,i.progress)return e.next=21,i.progress(1,null,l.res);e.next=21;break;case 21:return f={res:l.res,bucket:u.bucket,name:t,etag:l.res.headers.etag},u.headers&&u.headers["x-oss-callback"]&&(f.data=JSON.parse(l.data.toString())),e.abrupt("return",f);case 24:case"end":return e.stop()}},e,this)}));return function(e,t,r,n){return i.apply(this,arguments)}}(),e._uploadPart=function(){var o=(0,t.default)(p.default.mark(function e(t,r,n,i,o){var s,a,c;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s={},u(o=o||{}).to(s),s.headers=s.headers||{},s.headers["Content-Length"]=i.size,s.headers=m(s.headers,["x-oss-server-side-encryption","x-oss-storage-class"]),s.subres={partNumber:n,uploadId:r},(a=this._objectRequestParams("PUT",t,s)).mime=s.mime,l&&l.browser?a.content=i.content:a.stream=i.stream,a.successStatuses=[200],a.disabledMD5=o.disabledMD5,e.next=15,this.request(a);case 15:if((c=e.sent).res.headers.etag){e.next=18;break}throw new Error("Please set the etag of expose-headers in OSS \n https://help.aliyun.com/document_detail/32069.html");case 18:return i.stream&&(i.stream=null,a.stream=null),e.abrupt("return",{name:t,etag:c.res.headers.etag,res:c.res});case 20:case"end":return e.stop()}},e,this)}));return function(e,t,r,n,i){return o.apply(this,arguments)}}()}.call(this)}.call(this,r("_process"))},{"./callback":24,"./utils/deepCopy":60,"./utils/isBuffer":69,"./utils/omit":77,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,_process:538,"copy-to":107,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.filter.js":312,"core-js/modules/es.array.map.js":318,"core-js/modules/es.array.sort.js":320,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339}],31:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),l=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.regexp.exec.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),f=e("url"),p=e("utility"),d=e("copy-to"),h=e("../../common/signUtils"),y=e("../utils/isIP").isIP,m=e("../utils/setSTSToken").setSTSToken,b=e("../utils/isFunction").isFunction;r.asyncSignatureUrl=function(){var r=(0,i.default)(l.default.mark(function e(t,r){var n,i,o,s,a,c,u=arguments;return l.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=!(2<u.length&&void 0!==u[2])||u[2],y(this.options.endpoint.hostname))throw new Error("can not get the object URL when endpoint is IP");e.next=3;break;case 3:if(n&&/^\?/.test(t))throw new Error("Invalid object name ".concat(t));e.next=5;break;case 5:if(r=r||{},t=this._objectName(t),r.method=r.method||"GET",i=p.timestamp()+(r.expires||1800),o={bucket:this.options.bucket,object:t},s=this._getResource(o),this.options.stsToken&&b(this.options.refreshSTSToken))return e.next=14,m.call(this);e.next=14;break;case 14:return this.options.stsToken&&(r["security-token"]=this.options.stsToken),a=h._signatureForURL(this.options.accessKeySecret,r,s,i),(c=f.parse(this._getReqUrl(o))).query={OSSAccessKeyId:this.options.accessKeyId,Expires:i,Signature:a.Signature},d(a.subResource).to(c.query),e.abrupt("return",c.format());case 20:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()},{"../../common/signUtils":52,"../utils/isFunction":72,"../utils/isIP":73,"../utils/setSTSToken":82,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"copy-to":107,"core-js/modules/es.regexp.exec.js":338,url:543,utility:545}],32:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),a=n(e("@babel/runtime/regenerator")),c=(e("core-js/modules/es.object.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.object.keys.js"),e("core-js/modules/es.array.find.js"),e("core-js/modules/es.array.includes.js"),e("core-js/modules/es.array.concat.js"),e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.string.replace.js"),n(e("@babel/runtime/helpers/typeof"))),o=n(e("@babel/runtime/helpers/asyncToGenerator")),i=e("../utils/checkBucketName").checkBucketName,n=r,u=["content-type","content-encoding","content-language","content-disposition","cache-control","expires"];n.copy=function(){var i=(0,o.default)(a.default.mark(function e(t,r,n,i){var o,s;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(i=(i="object"===(0,c.default)(n)?n:i)||{}).headers=i.headers||{},Object.keys(i.headers).forEach(function(e){i.headers["x-oss-copy-source-".concat(e.toLowerCase())]=i.headers[e]}),(i.meta||Object.keys(i.headers).find(function(e){return u.includes(e.toLowerCase())}))&&(i.headers["x-oss-metadata-directive"]="REPLACE"),this._convertMetaToHeaders(i.meta,i.headers),r=this._getSourceName(r,n),i.versionId&&(r="".concat(r,"?versionId=").concat(i.versionId)),i.headers["x-oss-copy-source"]=r,(o=this._objectRequestParams("PUT",t,i)).xmlResponse=!0,o.successStatuses=[200,304],e.next=14,this.request(o);case 14:return o=e.sent,s=(s=o.data)&&{etag:s.ETag,lastModified:s.LastModified},e.abrupt("return",{data:s,res:o.res});case 18:case"end":return e.stop()}},e,this)}));return function(e,t,r,n){return i.apply(this,arguments)}}(),n._getSourceName=function(e,t){return"string"==typeof t?e=this._objectName(e):"/"!==e[0]?t=this.options.bucket:(t=e.replace(/\/(.+?)(\/.*)/,"$1"),e=e.replace(/(\/.+?\/)(.*)/,"$2")),i(t),e=encodeURIComponent(e),e="/".concat(t,"/").concat(e)}},{"../utils/checkBucketName":53,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/typeof":91,"@babel/runtime/regenerator":93,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.find.js":313,"core-js/modules/es.array.includes.js":315,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.replace.js":345,"core-js/modules/web.dom-collections.for-each.js":380}],33:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),i=n(e("@babel/runtime/regenerator")),o=(e("core-js/modules/es.object.assign.js"),n(e("@babel/runtime/helpers/asyncToGenerator")));r.delete=function(){var t=(0,o.default)(i.default.mark(function e(t){var r,n=arguments;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(r=1<n.length&&void 0!==n[1]?n[1]:{}).subres=Object.assign({},r.subres),r.versionId&&(r.subres.versionId=r.versionId),(r=this._objectRequestParams("DELETE",t,r)).successStatuses=[204],e.next=7,this.request(r);case 7:return r=e.sent,e.abrupt("return",{res:r.res});case 9:case"end":return e.stop()}},e,this)}));return function(e){return t.apply(this,arguments)}}()},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],34:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),p=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.object.assign.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),d=e("utility"),h=e("../utils/obj2xml").obj2xml;r.deleteMulti=function(){var t=(0,i.default)(p.default.mark(function e(t){var r,n,i,o,s,a,c,u,l,f=arguments;return p.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=1<f.length&&void 0!==f[1]?f[1]:{},n=[],t&&t.length){e.next=4;break}throw new Error("names is required");case 4:for(i=0;i<t.length;i++)o={},"string"==typeof t[i]?o.Key=d.escape(this._objectName(t[i])):(a=t[i],s=a.key,a=a.versionId,o.Key=d.escape(this._objectName(s)),o.VersionId=a),n.push(o);return c={Delete:{Quiet:!!r.quiet,Object:n}},c=h(c,{headers:!0}),r.subres=Object.assign({delete:""},r.subres),r.versionId&&(r.subres.versionId=r.versionId),(u=this._objectRequestParams("POST","",r)).mime="xml",u.content=c,u.xmlResponse=!0,u.successStatuses=[200],e.next=16,this.request(u);case 16:return c=e.sent,u=c.data,(l=u&&u.Deleted||null)&&!Array.isArray(l)&&(l=[l]),e.abrupt("return",{res:c.res,deleted:l||[]});case 21:case"end":return e.stop()}},e,this)}));return function(e){return t.apply(this,arguments)}}()},{"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325,utility:545}],35:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),i=n(e("@babel/runtime/regenerator")),o=(e("core-js/modules/es.object.assign.js"),n(e("@babel/runtime/helpers/asyncToGenerator")));r.deleteObjectTagging=function(){var t=(0,o.default)(i.default.mark(function e(t){var r,n=arguments;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(r=1<n.length&&void 0!==n[1]?n[1]:{}).subres=Object.assign({tagging:""},r.subres),r.versionId&&(r.subres.versionId=r.versionId),t=this._objectName(t),(r=this._objectRequestParams("DELETE",t,r)).successStatuses=[204],e.next=8,this.request(r);case 8:return r=e.sent,e.abrupt("return",{status:r.status,res:r.res});case 10:case"end":return e.stop()}},e,this)}));return function(e){return t.apply(this,arguments)}}()},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],36:[function(e,t,r){"use strict";e("core-js/modules/es.array.concat.js");var i=e("url"),o=e("../utils/isIP").isIP;r.generateObjectUrl=function(e,t){if(o(this.options.endpoint.hostname))throw new Error("can not get the object URL when endpoint is IP");var r,n;return t?"/"!==t[t.length-1]&&(t+="/"):(t=this.options.endpoint.format(),r=i.parse(t),n=this.options.bucket,r.hostname="".concat(n,".").concat(r.hostname),r.host="".concat(n,".").concat(r.host),t=r.format()),t+this._escape(this._objectName(e))}},{"../utils/isIP":73,"core-js/modules/es.array.concat.js":310,url:543}],37:[function(r,e,n){!function(h){!function(){"use strict";var e=r("@babel/runtime/helpers/interopRequireDefault"),l=e(r("@babel/runtime/regenerator")),t=(r("core-js/modules/es.object.assign.js"),e(r("@babel/runtime/helpers/asyncToGenerator"))),f=r("fs"),p=r("is-type-of"),d=r("../utils/isObject").isObject;n.get=function(){var r=(0,t.default)(l.default.mark(function e(t,r){var n,i,o,s,a,c,u=arguments;return l.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=2<u.length&&void 0!==u[2]?u[2]:{},i=null,o=!1,p.writableStream(r)?i=r:p.string(r)?(i=f.createWriteStream(r),o=!0):d(r)&&(n=r),n=n||{},s=h&&h.browser,c=null===n.responseCacheControl?"":"no-cache",s=s&&c?{"response-cache-control":c}:{},n.subres=Object.assign(s,n.subres),n.versionId&&(n.subres.versionId=n.versionId),n.process&&(n.subres["x-oss-process"]=n.process),e.prev=11,(c=this._objectRequestParams("GET",t,n)).writeStream=i,c.successStatuses=[200,206,304],e.next=17,this.request(c);case 17:a=e.sent,o&&i.destroy(),e.next=28;break;case 21:if(e.prev=21,e.t0=e.catch(11),o)return i.destroy(),e.next=27,this._deleteFileSafe(r);e.next=27;break;case 27:throw e.t0;case 28:return e.abrupt("return",{res:a.res,content:a.data});case 29:case"end":return e.stop()}},e,this,[[11,21]])}));return function(e,t){return r.apply(this,arguments)}}()}.call(this)}.call(this,r("_process"))},{"../utils/isObject":74,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,_process:538,"core-js/modules/es.object.assign.js":325,fs:102,"is-type-of":537}],38:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),i=n(e("@babel/runtime/regenerator")),o=(e("core-js/modules/es.object.assign.js"),n(e("@babel/runtime/helpers/asyncToGenerator")));r.getACL=function(){var t=(0,o.default)(i.default.mark(function e(t){var r,n=arguments;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(r=1<n.length&&void 0!==n[1]?n[1]:{}).subres=Object.assign({acl:""},r.subres),r.versionId&&(r.subres.versionId=r.versionId),t=this._objectName(t),(r=this._objectRequestParams("GET",t,r)).successStatuses=[200],r.xmlResponse=!0,e.next=9,this.request(r);case 9:return r=e.sent,e.abrupt("return",{acl:r.data.AccessControlList.Grant,owner:{id:r.data.Owner.ID,displayName:r.data.Owner.DisplayName},res:r.res});case 11:case"end":return e.stop()}},e,this)}));return function(e){return t.apply(this,arguments)}}()},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],39:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),u=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.string.replace.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.object.keys.js"),e("core-js/modules/es.object.assign.js"),e("core-js/modules/es.array.map.js"),e("core-js/modules/es.number.constructor.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),n=r,l=e("../utils/isObject").isObject,f=e("../utils/isArray").isArray,p=e("../utils/parseRestoreInfo").parseRestoreInfo;function o(){return s.apply(this,arguments)}function s(){return(s=(0,i.default)(u.default.mark(function e(){var t,r,n,i,o,s,a,c=arguments;return u.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=0<c.length&&void 0!==c[0]?c[0]:{},r=1<c.length&&void 0!==c[1]?c[1]:{},t.versionIdMarker&&void 0===t.keyMarker)throw new Error("A version-id marker cannot be specified without a key marker");e.next=4;break;case 4:return r.subres=Object.assign({versions:""},r.subres),r.versionId&&(r.subres.versionId=r.versionId),(n=this._objectRequestParams("GET","",r)).xmlResponse=!0,n.successStatuses=[200],n.query=function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},r={};l(t)&&Object.keys(t).forEach(function(e){r[e.replace(/([A-Z])/g,"-$1").toLowerCase()]=t[e]});return r}(t),e.next=12,this.request(n);case 12:return n=e.sent,i=n.data.Version||[],o=n.data.DeleteMarker||[],s=this,i=i&&(i=Array.isArray(i)?i:[i]).map(function(e){return{name:e.Key,url:s._objectUrl(e.Key),lastModified:e.LastModified,isLatest:"true"===e.IsLatest,versionId:e.VersionId,etag:e.ETag,type:e.Type,size:Number(e.Size),storageClass:e.StorageClass,owner:{id:e.Owner.ID,displayName:e.Owner.DisplayName},restoreInfo:p(e.RestoreInfo)}}),o=o&&(o=f(o)?o:[o]).map(function(e){return{name:e.Key,lastModified:e.LastModified,versionId:e.VersionId,owner:{id:e.Owner.ID,displayName:e.Owner.DisplayName}}}),a=(a=n.data.CommonPrefixes||null)&&(a=f(a)?a:[a]).map(function(e){return e.Prefix}),e.abrupt("return",{res:n.res,objects:i,deleteMarker:o,prefixes:a,nextMarker:n.data.NextKeyMarker||null,NextVersionIdMarker:n.data.NextVersionIdMarker||null,nextKeyMarker:n.data.NextKeyMarker||null,nextVersionIdMarker:n.data.NextVersionIdMarker||null,isTruncated:"true"===n.data.IsTruncated});case 21:case"end":return e.stop()}},e,this)}))).apply(this,arguments)}n.getBucketVersions=o,n.listObjectVersions=o},{"../utils/isArray":67,"../utils/isObject":74,"../utils/parseRestoreInfo":78,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.map.js":318,"core-js/modules/es.number.constructor.js":324,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.replace.js":345,"core-js/modules/web.dom-collections.for-each.js":380}],40:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),i=n(e("@babel/runtime/regenerator")),o=(e("core-js/modules/es.object.assign.js"),n(e("@babel/runtime/helpers/asyncToGenerator")));r.getObjectMeta=function(){var r=(0,o.default)(i.default.mark(function e(t,r){var n;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=r||{},t=this._objectName(t),r.subres=Object.assign({objectMeta:""},r.subres),r.versionId&&(r.subres.versionId=r.versionId),(n=this._objectRequestParams("HEAD",t,r)).successStatuses=[200],e.next=8,this.request(n);case 8:return n=e.sent,e.abrupt("return",{status:n.status,res:n.res});case 10:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],41:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),a=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.object.assign.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),n=r,c=e("../utils/isObject").isObject;n.getObjectTagging=function(){var t=(0,i.default)(a.default.mark(function e(t){var r,n,i,o,s=arguments;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(n=1<s.length&&void 0!==s[1]?s[1]:{}).subres=Object.assign({tagging:""},n.subres),n.versionId&&(n.subres.versionId=n.versionId),t=this._objectName(t),(n=this._objectRequestParams("GET",t,n)).successStatuses=[200],e.next=8,this.request(n);case 8:return r=e.sent,e.next=11,this.parseXML(r.data);case 11:return n=e.sent,i=(i=n.TagSet.Tag)&&c(i)?[i]:i||[],o={},i.forEach(function(e){o[e.Key]=e.Value}),e.abrupt("return",{status:r.status,res:r.res,tag:o});case 17:case"end":return e.stop()}},e,this)}));return function(e){return t.apply(this,arguments)}}()},{"../utils/isObject":74,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.to-string.js":329,"core-js/modules/web.dom-collections.for-each.js":380}],42:[function(e,t,r){"use strict";var n=e("../utils/isIP").isIP;r.getObjectUrl=function(e,t){if(n(this.options.endpoint.hostname))throw new Error("can not get the object URL when endpoint is IP");return t?"/"!==t[t.length-1]&&(t+="/"):t=this.options.endpoint.format(),t+this._escape(this._objectName(e))}},{"../utils/isIP":73}],43:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),o=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.object.assign.js"),n(e("@babel/runtime/helpers/asyncToGenerator")));r.getSymlink=function(){var t=(0,i.default)(o.default.mark(function e(t){var r,n,i=arguments;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(r=1<i.length&&void 0!==i[1]?i[1]:{}).subres=Object.assign({symlink:""},r.subres),r.versionId&&(r.subres.versionId=r.versionId),t=this._objectName(t),(r=this._objectRequestParams("GET",t,r)).successStatuses=[200],e.next=8,this.request(r);case 8:return r=e.sent,n=r.res.headers["x-oss-symlink-target"],e.abrupt("return",{targetName:decodeURIComponent(n),res:r.res});case 11:case"end":return e.stop()}},e,this)}));return function(e){return t.apply(this,arguments)}}()},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],44:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),s=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.object.assign.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.object.keys.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),a=e("../utils/checkEnv").checkEnv;r.head=function(){var t=(0,i.default)(s.default.mark(function e(t){var r,n,i,o=arguments;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=1<o.length&&void 0!==o[1]?o[1]:{},a("Because HeadObject has gzip enabled, head cannot get the file size correctly. If you need to get the file size, please use getObjectMeta"),r.subres=Object.assign({},r.subres),r.versionId&&(r.subres.versionId=r.versionId),(r=this._objectRequestParams("HEAD",t,r)).successStatuses=[200,304],e.next=8,this.request(r);case 8:return n=e.sent,i={meta:null,res:n.res,status:n.status},200===n.status&&Object.keys(n.headers).forEach(function(e){0===e.indexOf("x-oss-meta-")&&(i.meta||(i.meta={}),i.meta[e.substring(11)]=n.headers[e])}),e.abrupt("return",i);case 12:case"end":return e.stop()}},e,this)}));return function(e){return t.apply(this,arguments)}}()},{"../utils/checkEnv":55,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/web.dom-collections.for-each.js":380}],45:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),o=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.object.assign.js"),n(e("@babel/runtime/helpers/asyncToGenerator")));r.putACL=function(){var n=(0,i.default)(o.default.mark(function e(t,r,n){var i;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(n=n||{}).subres=Object.assign({acl:""},n.subres),n.versionId&&(n.subres.versionId=n.versionId),n.headers=n.headers||{},n.headers["x-oss-object-acl"]=r,t=this._objectName(t),(i=this._objectRequestParams("PUT",t,n)).successStatuses=[200],e.next=10,this.request(i);case 10:return i=e.sent,e.abrupt("return",{res:i.res});case 12:case"end":return e.stop()}},e,this)}));return function(e,t,r){return n.apply(this,arguments)}}()},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],46:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),s=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.object.assign.js"),e("core-js/modules/es.array.map.js"),e("core-js/modules/es.object.keys.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),a=e("../utils/obj2xml").obj2xml,c=e("../utils/checkObjectTag").checkObjectTag;r.putObjectTagging=function(){var r=(0,i.default)(s.default.mark(function e(t,r){var n,i,o=arguments;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=2<o.length&&void 0!==o[2]?o[2]:{},c(r),n.subres=Object.assign({tagging:""},n.subres),n.versionId&&(n.subres.versionId=n.versionId),t=this._objectName(t),(n=this._objectRequestParams("PUT",t,n)).successStatuses=[200],r=Object.keys(r).map(function(e){return{Key:e,Value:r[e]}}),i={Tagging:{TagSet:{Tag:r}}},n.mime="xml",n.content=a(i),e.next=13,this.request(n);case 13:return i=e.sent,e.abrupt("return",{res:i.res,status:i.status});case 15:case"end":return e.stop()}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()},{"../utils/checkObjectTag":56,"../utils/obj2xml":76,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.map.js":318,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.keys.js":328}],47:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),o=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.object.assign.js"),n(e("@babel/runtime/helpers/asyncToGenerator")));r.putSymlink=function(){var n=(0,i.default)(o.default.mark(function e(t,r,n){var i;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(n=n||{}).headers=n.headers||{},r=this._escape(this._objectName(r)),this._convertMetaToHeaders(n.meta,n.headers),n.headers["x-oss-symlink-target"]=r,n.subres=Object.assign({symlink:""},n.subres),n.versionId&&(n.subres.versionId=n.versionId),n.storageClass&&(n.headers["x-oss-storage-class"]=n.storageClass),t=this._objectName(t),(i=this._objectRequestParams("PUT",t,n)).successStatuses=[200],e.next=13,this.request(i);case 13:return i=e.sent,e.abrupt("return",{res:i.res});case 15:case"end":return e.stop()}},e,this)}));return function(e,t,r){return n.apply(this,arguments)}}()},{"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.object.assign.js":325}],48:[function(t,e,a){!function(s){!function(){"use strict";t("core-js/modules/es.object.to-string.js"),t("core-js/modules/es.regexp.to-string.js");var e=function(e){return e&&e.__esModule?e:{default:e}},r=(Object.defineProperty(a,"__esModule",{value:!0}),a.signPostObjectPolicyV4=void 0,e(t("dateformat"))),n=t("../utils/getStandardRegion"),i=t("../utils/policy2Str"),o=t("../signUtils");a.signPostObjectPolicyV4=function(e,t){return e=s.from(i.policy2Str(e),"utf8").toString("base64"),t=r.default(t,"UTC:yyyymmdd'T'HHMMss'Z'").split("T")[0],o.getSignatureV4(this.options.accessKeySecret,t,n.getStandardRegion(this.options.region),e)}}.call(this)}.call(this,t("buffer").Buffer)},{"../signUtils":52,"../utils/getStandardRegion":65,"../utils/policy2Str":79,buffer:103,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339,dateformat:383}],49:[function(e,t,r){"use strict";e("core-js/modules/es.regexp.exec.js");var i=e("url"),o=e("utility"),s=e("copy-to"),a=e("../../common/signUtils"),c=e("../utils/isIP").isIP;r.signatureUrl=function(e,t){var r=!(2<arguments.length&&void 0!==arguments[2])||arguments[2];if(c(this.options.endpoint.hostname))throw new Error("can not get the object URL when endpoint is IP");if(r&&/^\?/.test(e))throw new Error("Invalid object name ".concat(e));t=t||{},e=this._objectName(e),t.method=t.method||"GET";var r=o.timestamp()+(t.expires||1800),e={bucket:this.options.bucket,object:e},n=this._getResource(e),t=(this.options.stsToken&&(t["security-token"]=this.options.stsToken),a._signatureForURL(this.options.accessKeySecret,t,n,r)),n=i.parse(this._getReqUrl(e));return n.query={OSSAccessKeyId:this.options.accessKeyId,Expires:r,Signature:t.Signature},s(t.subResource).to(n.query),n.format()}},{"../../common/signUtils":52,"../utils/isIP":73,"copy-to":107,"core-js/modules/es.regexp.exec.js":338,url:543,utility:545}],50:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),h=n(e("@babel/runtime/regenerator")),i=(e("core-js/modules/es.object.assign.js"),e("core-js/modules/es.array.join.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),y=e("dateformat"),m=e("url"),b=e("../../common/signUtils"),g=e("../utils/setSTSToken").setSTSToken,v=e("../utils/isFunction").isFunction,j=e("../utils/getStandardRegion").getStandardRegion;r.signatureUrlV4=function(){var o=(0,i.default)(h.default.mark(function e(t,r,n,i,o){var s,a,c,u,l,f,p,d;return h.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=this.options.cloudBoxId,s=b.getProduct(a),a=b.getSignRegion(j(this.options.region),a),c=n&&n.headers||{},u=Object.assign({},n&&n.queries||{}),l=new Date,l=y(l,"UTC:yyyymmdd'T'HHMMss'Z'"),f=l.split("T")[0],0<(p=b.fixAdditionalHeaders(o)).length&&(u["x-oss-additional-headers"]=p.join(";")),u["x-oss-credential"]=b.getCredential(f,a,this.options.accessKeyId,s),u["x-oss-date"]=l,u["x-oss-expires"]=r,u["x-oss-signature-version"]="OSS4-HMAC-SHA256",this.options.stsToken&&v(this.options.refreshSTSToken))return e.next=17,g.call(this);e.next=17;break;case 17:return this.options.stsToken&&(u["x-oss-security-token"]=this.options.stsToken),d=b.getCanonicalRequest(t,{headers:c,queries:u},this.options.bucket,i,p),d=b.getStringToSign(a,l,d,s),u["x-oss-signature"]=b.getSignatureV4(this.options.accessKeySecret,f,a,d,s),(d=m.parse(this._getReqUrl({bucket:this.options.bucket,object:i}))).query=Object.assign({},u),e.abrupt("return",d.format());case 24:case"end":return e.stop()}},e,this)}));return function(e,t,r,n,i){return o.apply(this,arguments)}}()},{"../../common/signUtils":52,"../utils/getStandardRegion":65,"../utils/isFunction":72,"../utils/setSTSToken":82,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.join.js":317,"core-js/modules/es.object.assign.js":325,dateformat:383,url:543}],51:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),f=n(e("@babel/runtime/regenerator")),o=(e("core-js/modules/es.array.iterator.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.promise.js"),e("core-js/modules/es.string.iterator.js"),e("core-js/modules/web.dom-collections.iterator.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.function.name.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),i=e("./utils/isArray").isArray,n=r;n._parallelNode=function(){var i=(0,o.default)(f.default.mark(function e(t,r,n,i){var o,s,a,c,u,l;return f.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:o=this,s=[],a=[],c=t.length/r,u=t.length%r,c=0==u?c:(t.length-u)/r+1,u=1,l=0;case 8:if(l<t.length){if(o.isCancel())return e.abrupt("break",26);e.next=11}else e.next=26;break;case 11:if(i?a.push(n(o,t[l],i)):a.push(n(o,t[l])),a.length===r||u===c&&l===t.length-1)return e.prev=13,u+=1,e.next=17,Promise.all(a);e.next=23;break;case 17:e.next=22;break;case 19:e.prev=19,e.t0=e.catch(13),s.push(e.t0);case 22:a=[];case 23:l++,e.next=8;break;case 26:return e.abrupt("return",s);case 27:case"end":return e.stop()}},e,this,[[13,19]])}));return function(e,t,r,n){return i.apply(this,arguments)}}(),n._parallel=function(f,p,d){var h=this;return new Promise(function(t){var r,e,n,i,o,s,a,c=[];function u(e){--s,e?(o=!0,c.push(e),t(c)):o&&s<=0?(o=!0,t(c)):a||(h.isCancel()?t(c):l())}function l(){for(a=!0;s<p&&!o&&!h.isCancel();){var e=r();if(null===e||0<c.length)return o=!0,void(s<=0&&t(c));s+=1,!function(e,t){d(e).then(function(e){t(null,e)}).catch(function(e){t(e)})}(e.value,function(i){return function(){if(null===i)throw new Error("Callback was already called.");var e=i;i=null;for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];e.apply(this,r)}}(u))}a=!1}p<=0||!f?t(c):(n=-1,i=(e=f).length,s=0,a=o=!(r=function(){return++n<i&&!h.isCancel()?{value:e[n],key:n}:null}),l())})},n.cancel=function(e){this.options.cancelFlag=!0,i(this.multipartUploadStreams)&&this.multipartUploadStreams.forEach(function(e){!1===e.destroyed&&e.destroy({name:"cancel",message:"cancel"})}),this.multipartUploadStreams=[],e&&this.abortMultipartUpload(e.name,e.uploadId,e.options)},n.isCancel=function(){return this.options.cancelFlag},n.resetCancelFlag=function(){this.options.cancelFlag=!1},n._stop=function(){this.options.cancelFlag=!0},n._makeCancelEvent=function(){return{status:0,name:"cancel"}},n._makeAbortEvent=function(){return{status:0,name:"abort",message:"upload task has been abort"}}},{"./utils/isArray":67,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.iterator.js":316,"core-js/modules/es.function.name.js":322,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.string.iterator.js":343,"core-js/modules/web.dom-collections.for-each.js":380,"core-js/modules/web.dom-collections.iterator.js":381}],52:[function(e,t,r){!function(d){!function(){"use strict";var a=e("@babel/runtime/helpers/interopRequireDefault")(e("@babel/runtime/helpers/toConsumableArray")),o=(e("core-js/modules/es.string.trim.js"),e("core-js/modules/es.array.sort.js"),e("core-js/modules/es.array.join.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.object.keys.js"),e("core-js/modules/es.array.concat.js"),e("core-js/modules/es.array.filter.js"),e("core-js/modules/es.array.iterator.js"),e("core-js/modules/es.set.js"),e("core-js/modules/es.string.iterator.js"),e("core-js/modules/web.dom-collections.iterator.js"),e("core-js/modules/es.array.map.js"),e("core-js/modules/es.string.starts-with.js"),e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.string.replace.js"),e("core-js/modules/es.object.entries.js"),e("core-js/modules/es.regexp.to-string.js"),e("./../../shims/crypto/crypto.js")),p=e("is-type-of"),c=e("qs"),u=e("./utils/lowercaseKeyHeader").lowercaseKeyHeader,l=e("./utils/encodeString").encodeString;r.getProduct=function(e){return void 0===e?"oss":"oss-cloudbox"},r.getSignRegion=function(e,t){return void 0===t?e:t},r.buildCanonicalizedResource=function(e,t){var r="".concat(e),n="?";return p.string(t)&&""!==t.trim()?r+=n+t:p.array(t)?(t.sort(),r+=n+t.join("&")):t&&Object.keys(t).sort().forEach(function(e){r+=n+e,!t[e]&&0!==t[e]||(r+="=".concat(t[e])),n="&"}),r},r.buildCanonicalString=function(e,t,r,n){var i=u((r=r||{}).headers),o=[],s={},e=[e.toUpperCase(),i["content-md5"]||"",i["content-type"],n||i["x-oss-date"]];return Object.keys(i).forEach(function(e){var t=e.toLowerCase();0===t.indexOf("x-oss-")&&(s[t]=String(i[e]).trim())}),Object.keys(s).sort().forEach(function(e){o.push("".concat(e,":").concat(s[e]))}),(e=e.concat(o)).push(this.buildCanonicalizedResource(t,r.parameters)),e.join("\n")},r.computeSignature=function(e,t){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:"utf-8";return o.createHmac("sha1",e).update(d.from(t,r)).digest("base64")},r.authorization=function(e,t,r,n){return"OSS ".concat(e,":").concat(this.computeSignature(t,r,n))},r.fixAdditionalHeaders=function(e){return e?(0,a.default)(new Set(e.map(function(e){return e.toLowerCase()}))).filter(function(e){return"content-type"!==e&&"content-md5"!==e&&!e.startsWith("x-oss-")}).sort():[]},r.getCanonicalRequest=function(e,t,r,n,i){var o=u(t.headers),t=t.queries||{};if(n&&!r)throw Error("Please ensure that bucketName is passed into getCanonicalRequest.");var e=[e.toUpperCase(),l("/".concat(r?"".concat(r,"/"):"").concat(n||"")).replace(/%2F/g,"/")],s=(e.push(c.stringify(t,{encoder:l,sort:function(e,t){return e.localeCompare(t)},strictNullHandling:!0})),i&&i.forEach(function(e){if(!Object.prototype.hasOwnProperty.call(o,e))throw Error("Can't find additional header ".concat(e," in request headers."))}),new Set(i)),r=(Object.keys(o).forEach(function(e){"content-type"!==e&&"content-md5"!==e&&!e.startsWith("x-oss-")||s.add(e)}),"".concat((0,a.default)(s).sort().map(function(e){return"".concat(e,":").concat(p.string(o[e])?o[e].trim():o[e],"\n")}).join("")));return e.push(r),i&&0<i.length?e.push(i.join(";")):e.push(""),e.push(o["x-oss-content-sha256"]||"UNSIGNED-PAYLOAD"),e.join("\n")},r.getCredential=function(e,t,r){var n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:"oss",e="".concat(e,"/").concat(t,"/").concat(n,"/aliyun_v4_request");return r?"".concat(r,"/").concat(e):e},r.getStringToSign=function(e,t,r){var n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:"oss";return["OSS4-HMAC-SHA256",t,this.getCredential(t.split("T")[0],e,void 0,n),o.createHash("sha256").update(r).digest("hex")].join("\n")},r.getSignatureV4=function(e,t,r,n){var i=4<arguments.length&&void 0!==arguments[4]?arguments[4]:"oss",e=o.createHmac("sha256","aliyun_v4".concat(e)).update(t).digest(),t=o.createHmac("sha256",e).update(r).digest(),e=o.createHmac("sha256",t).update(i).digest(),r=o.createHmac("sha256",e).update("aliyun_v4_request").digest();return o.createHmac("sha256",r).update(n).digest("hex")},r.authorizationV4=function(e,t,r,n,i,o,s,a){var c=8<arguments.length&&void 0!==arguments[8]?arguments[8]:"utf-8",u=this.getProduct(9<arguments.length?arguments[9]:void 0),a=this.fixAdditionalHeaders(a),l={},f=(Object.entries(i.headers).forEach(function(e){l[e[0]]=p.string(e[1])?d.from(e[1],c).toString():e[1]}),l["x-oss-date"]||i.queries&&i.queries["x-oss-date"]),n=this.getCanonicalRequest(n,{headers:l,queries:i.queries},o,s,a),i=this.getStringToSign(r,f,n,u),o=f.split("T")[0],s=this.getSignatureV4(t,o,r,i,u),n=0<a.length?"AdditionalHeaders=".concat(a.join(";"),","):"";return"OSS4-HMAC-SHA256 Credential=".concat(this.getCredential(o,r,e,u),",").concat(n,"Signature=").concat(s)},r._signatureForURL=function(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0,o=4<arguments.length?arguments[4]:void 0,s={},a=n.subResource,c=void 0===a?{}:a,a=(n.process&&(c["x-oss-process"]=n.process),n.trafficLimit&&(c["x-oss-traffic-limit"]=n.trafficLimit),n.response&&Object.keys(n.response).forEach(function(e){var t="response-".concat(e.toLowerCase());c[t]=n.response[e]}),Object.keys(n).forEach(function(e){var t=e.toLowerCase(),r=n[e];0===t.indexOf("x-oss-")?s[t]=r:0!==t.indexOf("content-md5")&&0!==t.indexOf("content-type")||(s[e]=r)}),Object.prototype.hasOwnProperty.call(n,"security-token")&&(c["security-token"]=n["security-token"]),Object.prototype.hasOwnProperty.call(n,"callback")&&(a={callbackUrl:encodeURI(n.callback.url),callbackBody:n.callback.body},n.callback.host&&(a.callbackHost=n.callback.host),n.callback.contentType&&(a.callbackBodyType=n.callback.contentType),n.callback.callbackSNI&&(a.callbackSNI=n.callback.callbackSNI),c.callback=d.from(JSON.stringify(a)).toString("base64"),n.callback.customValue)&&(t={},Object.keys(n.callback.customValue).forEach(function(e){t["x:".concat(e)]=n.callback.customValue[e]}),c["callback-var"]=d.from(JSON.stringify(t)).toString("base64")),this.buildCanonicalString(n.method,r,{headers:s,parameters:c},i.toString()));return{Signature:this.computeSignature(e,a,o),subResource:c}}}.call(this)}.call(this,e("buffer").Buffer)},{"./../../shims/crypto/crypto.js":531,"./utils/encodeString":61,"./utils/lowercaseKeyHeader":75,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/toConsumableArray":90,buffer:103,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.filter.js":312,"core-js/modules/es.array.iterator.js":316,"core-js/modules/es.array.join.js":317,"core-js/modules/es.array.map.js":318,"core-js/modules/es.array.sort.js":320,"core-js/modules/es.object.entries.js":326,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.set.js":341,"core-js/modules/es.string.iterator.js":343,"core-js/modules/es.string.replace.js":345,"core-js/modules/es.string.starts-with.js":348,"core-js/modules/es.string.trim.js":349,"core-js/modules/web.dom-collections.for-each.js":380,"core-js/modules/web.dom-collections.iterator.js":381,"is-type-of":537,qs:445}],53:[function(e,t,r){"use strict";e("core-js/modules/es.regexp.exec.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.checkBucketName=void 0,r.checkBucketName=function(e){if(!(1<arguments.length&&void 0!==arguments[1]&&arguments[1]?/^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/:/^[a-z0-9_][a-z0-9-_]{1,61}[a-z0-9_]$/).test(e))throw new Error("The bucket must be conform to the specifications")}},{"core-js/modules/es.regexp.exec.js":338}],54:[function(e,t,r){"use strict";e("core-js/modules/es.regexp.exec.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.checkConfigValid=void 0;var n={endpoint:function(e){{if("string"==typeof e)return/^[a-zA-Z0-9._:/-]+$/.test(e);if(e.host)return/^[a-zA-Z0-9._:/-]+$/.test(e.host)}return!1},region:/^[a-zA-Z0-9\-_]+$/};r.checkConfigValid=function(e,t){if(n[t])if(!(n[t]instanceof Function?n[t](e):n[t].test(e)))throw new Error("The ".concat(t," must be conform to the specifications"))}},{"core-js/modules/es.regexp.exec.js":338}],55:[function(e,t,r){!function(t){!function(){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.checkEnv=void 0,r.checkEnv=function(e){t.browser&&console.warn(e)}}.call(this)}.call(this,e("_process"))},{_process:538}],56:[function(e,t,r){"use strict";e("core-js/modules/es.array.concat.js"),e("core-js/modules/es.object.entries.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.checkObjectTag=void 0;var n=e("./checkValid").checkValid,i=e("./isObject").isObject,e=[{validator:function(e){if("string"!=typeof e)throw new Error("the key and value of the tag must be String")}},{pattern:/^[a-zA-Z0-9 +-=._:/]+$/,msg:"tag can contain letters, numbers, spaces, and the following symbols: plus sign (+), hyphen (-), equal sign (=), period (.), underscore (_), colon (:), and forward slash (/)"}],o={key:[].concat(e,[{pattern:/^.{1,128}$/,msg:"tag key can be a maximum of 128 bytes in length"}]),value:[].concat(e,[{pattern:/^.{0,256}$/,msg:"tag value can be a maximum of 256 bytes in length"}])};r.checkObjectTag=function(e){if(!i(e))throw new Error("tag must be Object");if(10<(e=Object.entries(e)).length)throw new Error("maximum of 10 tags for a object");var r=["key","value"];e.forEach(function(e){e.forEach(function(e,t){n(e,o[r[t]])})})}},{"./checkValid":57,"./isObject":74,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.object.entries.js":326,"core-js/modules/es.object.to-string.js":329,"core-js/modules/web.dom-collections.for-each.js":380}],57:[function(e,t,r){"use strict";e("core-js/modules/es.object.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.regexp.exec.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.checkValid=void 0,r.checkValid=function(t,e){e.forEach(function(e){if(e.validator)e.validator(t);else if(e.pattern&&!e.pattern.test(t))throw new Error(e.msg)})}},{"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/web.dom-collections.for-each.js":380}],58:[function(e,t,r){!function(S){!function(){"use strict";e("core-js/modules/es.array.includes.js"),e("core-js/modules/es.string.includes.js"),e("core-js/modules/es.object.assign.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.object.entries.js"),e("core-js/modules/es.array.concat.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.createRequest=void 0;var c=e("./../../../shims/crypto/crypto.js"),u=e("debug")("ali-oss"),l=e("lodash/isString"),f=e("lodash/isArray"),p=e("lodash/isObject"),d=e("mime"),h=e("dateformat"),y=e("copy-to"),m=e("path"),b=e("./encoder").encoder,g=e("./isIP").isIP,v=e("./setRegion").setRegion,j=e("../client/getReqUrl").getReqUrl,w=e("./isDingTalk").isDingTalk;function x(e,t){return e[t]||e[t.toLowerCase()]}r.createRequest=function(e){var t,r=new Date,n=(this.options.amendTimeSkewed&&(r=+new Date+this.options.amendTimeSkewed),{"x-oss-date":h(r,this.options.authorizationV4?"UTC:yyyymmdd'T'HHMMss'Z'":"UTC:ddd, dd mmm yyyy HH:MM:ss 'GMT'")}),i=(this.options.authorizationV4&&(n["x-oss-content-sha256"]="UNSIGNED-PAYLOAD"),"undefined"!=typeof window&&(n["x-oss-user-agent"]=this.userAgent),this.userAgent.includes("nodejs")&&(n["User-Agent"]=this.userAgent),this.options.isRequestPay&&Object.assign(n,{"x-oss-request-payer":"requester"}),this.options.stsToken&&(n["x-oss-security-token"]=this.options.stsToken),y(e.headers).to(n),x(n,"Content-Type")||(e.mime&&0<e.mime.indexOf("/")?n["Content-Type"]=e.mime:w()?n["Content-Type"]="application/octet-stream":n["Content-Type"]=d.getType(e.mime||m.extname(e.object||""))),x(n,"Content-Type")||(delete(r=n)[o="Content-Type"],delete r[o.toLowerCase()]),e.content&&(e.disabledMD5||(e.headers&&e.headers["Content-MD5"]?n["Content-MD5"]=e.headers["Content-MD5"]:n["Content-MD5"]=c.createHash("md5").update(S.from(e.content,"utf8")).digest("base64")),n["Content-Length"]||(n["Content-Length"]=e.content.length)),Object.prototype.hasOwnProperty);for(t in n)n[t]&&i.call(n,t)&&(n[t]=b(String(n[t]),this.options.headerEncoding));var o,s={},r=(l(e.subres)?s[e.subres]=null:f(e.subres)?e.subres.forEach(function(e){s[e]=null}):p(e.subres)&&Object.entries(e.subres).forEach(function(e){s[e[0]]=""===e[1]?null:e[1]}),p(e.query)&&Object.entries(e.query).forEach(function(e){s[e[0]]=e[1]}),n.authorization=this.options.authorizationV4?this.authorizationV4(e.method,{headers:n,queries:s},e.bucket,e.object,e.additionalHeaders):this.authorization(e.method,this._getResource(e),e.subres,n,this.options.headerEncoding),g(this.options.endpoint.hostname)&&(o=(r=this.options).region,a=r.internal,r=r.secure,a=v(o,a,r),n.host="".concat(e.bucket,".").concat(a.host)),j.bind(this)(e)),a=(u("request %s %s, with headers %j, !!stream: %s",e.method,r,n,!!e.stream),e.timeout||this.options.timeout),a={method:e.method,content:e.content,stream:e.stream,headers:n,timeout:a,writeStream:e.writeStream,customResponse:e.customResponse,ctx:e.ctx||this.ctx};return this.agent&&(a.agent=this.agent),this.httpsAgent&&(a.httpsAgent=this.httpsAgent),a.enableProxy=!!this.options.enableProxy,a.proxy=this.options.proxy||null,{url:r,params:a}}}.call(this)}.call(this,e("buffer").Buffer)},{"../client/getReqUrl":25,"./../../../shims/crypto/crypto.js":531,"./encoder":62,"./isDingTalk":70,"./isIP":73,"./setRegion":81,buffer:103,"copy-to":107,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.includes.js":315,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.entries.js":326,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.string.includes.js":342,"core-js/modules/web.dom-collections.for-each.js":380,dateformat:383,debug:536,"lodash/isArray":422,"lodash/isObject":423,"lodash/isString":425,mime:430,path:439}],59:[function(e,t,r){"use strict";e("core-js/modules/es.object.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.object.entries.js"),e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.string.replace.js"),e("core-js/modules/es.array.includes.js"),e("core-js/modules/es.object.keys.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.dataFix=void 0;var u=e("./isObject"),l=["true","TRUE","1",1],f=["false","FALSE","0",0];r.dataFix=function e(r,t,n){var i,o,s,a,c;if(u.isObject(r))return i=t.remove,o=void 0===(o=t.rename)?{}:o,s=void 0===(s=t.camel)?[]:s,a=void 0===(a=t.bool)?[]:a,t=t.lowerFirst,t=void 0!==t&&t,(void 0===i?[]:i).forEach(function(e){return delete r[e]}),Object.entries(o).forEach(function(e){r[e[0]]&&!r[e[1]]&&(r[e[1]]=r[e[0]],delete r[e[0]])}),s.forEach(function(e){var t;r[e]&&(t=e.replace(/^(.)/,function(e){return e.toLowerCase()}).replace(/-(\w)/g,function(e,t){return t.toUpperCase()}),r[t]||(r[t]=r[e]))}),a.forEach(function(e){r[e]=!!(e=r[e])&&(!!l.includes(e)||!f.includes(e)&&e)}),"function"==typeof n&&n(r),c=r,t&&Object.keys(c).forEach(function(e){var t=e.replace(/^\w/,function(e){return e.toLowerCase()});void 0===c[t]&&(c[t]=c[e],delete c[e])}),e}},{"./isObject":74,"core-js/modules/es.array.includes.js":315,"core-js/modules/es.object.entries.js":326,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.replace.js":345,"core-js/modules/web.dom-collections.for-each.js":380}],60:[function(e,t,n){"use strict";var r=e("@babel/runtime/helpers/interopRequireDefault"),s=(e("core-js/modules/es.array.slice.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.object.keys.js"),r(e("@babel/runtime/helpers/typeof"))),a=(Object.defineProperty(n,"__esModule",{value:!0}),n.deepCopyWith=n.deepCopy=void 0,e("./isBuffer"));n.deepCopy=function(t){var r;return null===t||"object"!==(0,s.default)(t)?t:a.isBuffer(t)?t.slice():(r=Array.isArray(t)?[]:{},Object.keys(t).forEach(function(e){r[e]=n.deepCopy(t[e])}),r)},n.deepCopyWith=function(e,o){return o?function t(r,e,n){var i,e=o(r,e,n);return void 0!==e?e:null===r||"object"!==(0,s.default)(r)?r:a.isBuffer(r)?r.slice():(i=Array.isArray(r)?[]:{},Object.keys(r).forEach(function(e){i[e]=t(r[e],e,r)}),i)}(e,"",null):n.deepCopy(e)}},{"./isBuffer":69,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/typeof":91,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/web.dom-collections.for-each.js":380}],61:[function(e,t,r){"use strict";e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.string.replace.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.regexp.to-string.js");var n=function(e){return e&&e.__esModule?e:{default:e}},i=(Object.defineProperty(r,"__esModule",{value:!0}),r.encodeString=void 0,n(e("lodash/toString")));r.encodeString=function(e){return e=i.default(e),encodeURIComponent(e).replace(/[!'()*]/g,function(e){return"%".concat(e.charCodeAt(0).toString(16).toUpperCase())})}},{"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.replace.js":345,"lodash/toString":427}],62:[function(e,t,r){!function(t){!function(){"use strict";e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.regexp.to-string.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.encoder=void 0,r.encoder=function(e){return"utf-8"===(1<arguments.length&&void 0!==arguments[1]?arguments[1]:"utf-8")?e:t.from(e).toString("latin1")}}.call(this)}.call(this,e("buffer").Buffer)},{buffer:103,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339}],63:[function(e,t,r){"use strict";e("core-js/modules/es.array.map.js"),e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.string.replace.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.formatInventoryConfig=void 0;var n=e("../utils/dataFix"),i=e("../utils/isObject"),o=e("../utils/isArray"),s=e("../utils/formatObjKey");function a(e){return n.dataFix(e,{bool:["IsEnabled"]},function(e){var t;e.prefix=e.Filter.Prefix,delete e.Filter,e.OSSBucketDestination=e.Destination.OSSBucketDestination,e.OSSBucketDestination.rolename=e.OSSBucketDestination.RoleArn.replace(/.*\//,""),delete e.OSSBucketDestination.RoleArn,e.OSSBucketDestination.bucket=e.OSSBucketDestination.Bucket.replace(/.*:::/,""),delete e.OSSBucketDestination.Bucket,delete e.Destination,e.frequency=e.Schedule.Frequency,delete e.Schedule.Frequency,null!=(t=null==e?void 0:e.OptionalFields)&&t.Field&&!o.isArray(null==(t=e.OptionalFields)?void 0:t.Field)&&(e.OptionalFields.Field=[e.OptionalFields.Field])}),e=s.formatObjKey(e,"firstLowerCase",{exclude:["OSSBucketDestination","SSE-OSS","SSE-KMS"]})}r.formatInventoryConfig=function(e){return 1<arguments.length&&void 0!==arguments[1]&&arguments[1]&&i.isObject(e)&&(e=[e]),e=o.isArray(e)?e.map(a):a(e)}},{"../utils/dataFix":59,"../utils/formatObjKey":64,"../utils/isArray":67,"../utils/isObject":74,"core-js/modules/es.array.map.js":318,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.replace.js":345}],64:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),u=(e("core-js/modules/es.object.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.object.keys.js"),e("core-js/modules/es.array.includes.js"),e("core-js/modules/es.string.includes.js"),e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.string.replace.js"),n(e("@babel/runtime/helpers/typeof")));Object.defineProperty(r,"__esModule",{value:!0}),r.formatObjKey=void 0,r.formatObjKey=function i(o,s,a){if(null===o||"object"!==(0,u.default)(o))return o;if(Array.isArray(o))for(var c=[],e=0;e<o.length;e++)c.push(i(o[e],s,a));else c={},Object.keys(o).forEach(function(e){var t,r,n;c[t=e,r=s,(n=a)&&n.exclude&&n.exclude.includes(t)||("firstUpperCase"===r?t=t.replace(/^./,function(e){return e.toUpperCase()}):"firstLowerCase"===r&&(t=t.replace(/^./,function(e){return e.toLowerCase()}))),t]=i(o[e],s,a)});return c}},{"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/typeof":91,"core-js/modules/es.array.includes.js":315,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.includes.js":342,"core-js/modules/es.string.replace.js":345,"core-js/modules/web.dom-collections.for-each.js":380}],65:[function(e,t,r){"use strict";e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.string.replace.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.getStandardRegion=void 0,r.getStandardRegion=function(e){return e.replace(/^oss-/g,"")}},{"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.replace.js":345}],66:[function(e,t,r){"use strict";e("core-js/modules/es.regexp.exec.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.getStrBytesCount=void 0,r.getStrBytesCount=function(e){for(var t=0,r=0;r<e.length;r++){var n=e.charAt(r);/^[\u00-\uff]$/.test(n)?t+=1:t+=2}return t}},{"core-js/modules/es.regexp.exec.js":338}],67:[function(e,t,r){"use strict";e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.regexp.to-string.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.isArray=void 0,r.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339}],68:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.isBlob=void 0,r.isBlob=function(e){return"undefined"!=typeof Blob&&e instanceof Blob}},{}],69:[function(e,t,r){!function(t){!function(){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.isBuffer=void 0,r.isBuffer=function(e){return t.isBuffer(e)}}.call(this)}.call(this,{isBuffer:e("../../../node_modules/is-buffer/index.js")})},{"../../../node_modules/is-buffer/index.js":409}],70:[function(t,e,r){!function(e){!function(){"use strict";t("core-js/modules/es.array.includes.js"),t("core-js/modules/es.string.includes.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.isDingTalk=void 0,r.isDingTalk=function(){return!(!e.browser||!window.navigator.userAgent.toLowerCase().includes("aliapp(dingtalk"))}}.call(this)}.call(this,t("_process"))},{_process:538,"core-js/modules/es.array.includes.js":315,"core-js/modules/es.string.includes.js":342}],71:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.isFile=void 0,r.isFile=function(e){return"undefined"!=typeof File&&e instanceof File}},{}],72:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.isFunction=void 0,r.isFunction=function(e){return"function"==typeof e}},{}],73:[function(e,t,r){"use strict";e("core-js/modules/es.regexp.exec.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.isIP=void 0,r.isIP=function(e){return/^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$/.test(e)||/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/.test(e)}},{"core-js/modules/es.regexp.exec.js":338}],74:[function(e,t,r){"use strict";e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.regexp.to-string.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.isObject=void 0,r.isObject=function(e){return"[object Object]"===Object.prototype.toString.call(e)}},{"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339}],75:[function(e,t,r){"use strict";e("core-js/modules/es.object.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.object.keys.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.lowercaseKeyHeader=void 0;var n=e("./isObject");r.lowercaseKeyHeader=function(t){var r={};return n.isObject(t)&&Object.keys(t).forEach(function(e){r[e.toLowerCase()]=t[e]}),r}},{"./isObject":74,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/web.dom-collections.for-each.js":380}],76:[function(e,t,r){"use strict";e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.string.replace.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.regexp.to-string.js"),e("core-js/modules/web.dom-collections.for-each.js"),e("core-js/modules/es.object.keys.js"),e("core-js/modules/es.array.concat.js"),e("core-js/modules/es.array.join.js"),e("core-js/modules/es.array.map.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.obj2xml=void 0;var i=e("./formatObjKey");function o(e){return Object.prototype.toString.call(e).replace(/(.*? |])/g,"").toLowerCase()}r.obj2xml=function r(e,t){var n="";return t&&t.headers&&(n='<?xml version="1.0" encoding="UTF-8"?>\n'),"object"===o(e=t&&t.firstUpperCase?i.formatObjKey(e,"firstUpperCase"):e)?Object.keys(e).forEach(function(t){"undefined"!==o(e[t])&&"null"!==o(e[t])&&("string"===o(e[t])||"number"===o(e[t])?n+="<".concat(t,">").concat(e[t],"</").concat(t,">"):"object"===o(e[t])?n+="<".concat(t,">").concat(r(e[t]),"</").concat(t,">"):"array"===o(e[t])?n+=e[t].map(function(e){return"<".concat(t,">").concat(r(e),"</").concat(t,">")}).join(""):n+="<".concat(t,">").concat(e[t].toString(),"</").concat(t,">"))}):n+=e.toString(),n}},{"./formatObjKey":64,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.join.js":317,"core-js/modules/es.array.map.js":318,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.replace.js":345,"core-js/modules/web.dom-collections.for-each.js":380}],77:[function(e,t,r){"use strict";function o(e,t){var r,n,i,o,s="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(s)return n=!(r=!0),{s:function(){s=s.call(e)},n:function(){var e=s.next();return r=e.done,e},e:function(e){n=!0,i=e},f:function(){try{r||null==s.return||s.return()}finally{if(n)throw i}}};if(Array.isArray(e)||(s=function(e,t){var r;if(e)return"string"==typeof e?a(e,t):"Map"===(r="Object"===(r=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:r)||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(e,t):void 0}(e))||t&&e&&"number"==typeof e.length)return s&&(e=s),o=0,{s:t=function(){},n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:t};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}e("core-js/modules/es.array.slice.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.regexp.to-string.js"),e("core-js/modules/es.function.name.js"),e("core-js/modules/es.array.from.js"),e("core-js/modules/es.string.iterator.js"),e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.symbol.js"),e("core-js/modules/es.symbol.description.js"),e("core-js/modules/es.symbol.iterator.js"),e("core-js/modules/es.array.iterator.js"),e("core-js/modules/web.dom-collections.iterator.js"),e("core-js/modules/es.object.assign.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.omit=void 0,r.omit=function(e,t){var r,n=Object.assign({},e),i=o(t);try{for(i.s();!(r=i.n()).done;)delete n[r.value]}catch(e){i.e(e)}finally{i.f()}return n}},{"core-js/modules/es.array.from.js":314,"core-js/modules/es.array.iterator.js":316,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.function.name.js":322,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.iterator.js":343,"core-js/modules/es.symbol.description.js":351,"core-js/modules/es.symbol.iterator.js":353,"core-js/modules/es.symbol.js":354,"core-js/modules/web.dom-collections.iterator.js":381}],78:[function(e,t,r){"use strict";e("core-js/modules/es.array.includes.js"),e("core-js/modules/es.string.includes.js"),e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.string.match.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.parseRestoreInfo=void 0,r.parseRestoreInfo=function(e){var t;return e&&!(t={ongoingRequest:e.includes("true")}).ongoingRequest&&(e=e.match(/expiry-date="(.*)"/))&&e[1]&&(t.expiryDate=new Date(e[1])),t}},{"core-js/modules/es.array.includes.js":315,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.includes.js":342,"core-js/modules/es.string.match.js":344}],79:[function(e,t,r){"use strict";e("core-js/modules/es.object.keys.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.policy2Str=void 0,r.policy2Str=function(e){var t;if(e)if("string"==typeof e)try{t=JSON.stringify(JSON.parse(e))}catch(e){throw new Error("Policy string is not a valid JSON: ".concat(e.message))}else t=JSON.stringify(e);return t}},{"core-js/modules/es.object.keys.js":328}],80:[function(e,t,r){"use strict";e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.promise.js"),Object.defineProperty(r,"__esModule",{value:!0}),r.retry=void 0,r.retry=function(o,s){var e=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},a=0,t=e.retryDelay,c=void 0===t?500:t,u=void 0===(t=e.errorHandler)?function(){return!0}:t;return function n(){for(var e=arguments.length,i=new Array(e),t=0;t<e;t++)i[t]=arguments[t];return new Promise(function(t,r){o.apply(void 0,i).then(function(e){a=0,t(e)}).catch(function(e){a<s&&u(e)?(a++,setTimeout(function(){t(n.apply(void 0,i))},c)):(a=0,r(e))})})}}},{"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333}],81:[function(e,t,r){"use strict";var n=function(e){return e&&e.__esModule?e:{default:e}},i=(Object.defineProperty(r,"__esModule",{value:!0}),r.setRegion=void 0,n(e("url"))),o=e("./checkConfigValid");r.setRegion=function(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],r=2<arguments.length&&void 0!==arguments[2]&&arguments[2],r=(o.checkConfigValid(e,"region"),r?"https://":"http://"),t=t?"-internal.aliyuncs.com":".aliyuncs.com",n="vpc100-oss-cn-";return e.substr(0,n.length)===n&&(t=".aliyuncs.com"),i.default.parse(r+e+t)}},{"./checkConfigValid":54,url:543}],82:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),i=n(e("@babel/runtime/regenerator")),o=(e("core-js/modules/es.object.keys.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.array.find.js"),e("core-js/modules/es.object.assign.js"),n(e("@babel/runtime/helpers/asyncToGenerator"))),s=(Object.defineProperty(r,"__esModule",{value:!0}),r.checkCredentials=r.setSTSToken=void 0,e("./formatObjKey"));function a(){return(a=(0,o.default)(i.default.mark(function e(){var t,r;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.options||(this.options={}),t=new Date,this.stsTokenFreshTime){if(+t-this.stsTokenFreshTime>=this.options.refreshSTSTokenInterval)return this.stsTokenFreshTime=t,e.next=7,this.options.refreshSTSToken();e.next=12}else e.next=14;break;case 7:r=e.sent,(r=s.formatObjKey(r,"firstLowerCase")).securityToken&&(r.stsToken=r.securityToken),c(r),Object.assign(this.options,r);case 12:e.next=15;break;case 14:this.stsTokenFreshTime=t;case 15:return e.abrupt("return",null);case 16:case"end":return e.stop()}},e,this)}))).apply(this,arguments)}function c(e){var r=Object.keys(e);["accessKeySecret","accessKeyId","stsToken"].forEach(function(t){if(!r.find(function(e){return e===t}))throw Error("refreshSTSToken must return contains ".concat(t))})}r.setSTSToken=function(){return a.apply(this,arguments)},r.checkCredentials=c},{"./formatObjKey":64,"@babel/runtime/helpers/asyncToGenerator":85,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/regenerator":93,"core-js/modules/es.array.find.js":313,"core-js/modules/es.object.assign.js":325,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329}],83:[function(e,t,r){t.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n},t.exports.__esModule=!0,t.exports.default=t.exports},{}],84:[function(e,t,r){var n=e("./arrayLikeToArray.js");t.exports=function(e){if(Array.isArray(e))return n(e)},t.exports.__esModule=!0,t.exports.default=t.exports},{"./arrayLikeToArray.js":83}],85:[function(e,t,r){function c(e,t,r,n,i,o,s){try{var a=e[o](s),c=a.value}catch(e){return void r(e)}a.done?t(c):Promise.resolve(c).then(n,i)}t.exports=function(a){return function(){var e=this,s=arguments;return new Promise(function(t,r){var n=a.apply(e,s);function i(e){c(n,t,r,i,o,"next",e)}function o(e){c(n,t,r,i,o,"throw",e)}i(void 0)})}},t.exports.__esModule=!0,t.exports.default=t.exports},{}],86:[function(e,t,r){t.exports=function(e){return e&&e.__esModule?e:{default:e}},t.exports.__esModule=!0,t.exports.default=t.exports},{}],87:[function(e,t,r){t.exports=function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)},t.exports.__esModule=!0,t.exports.default=t.exports},{}],88:[function(e,t,r){t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.__esModule=!0,t.exports.default=t.exports},{}],89:[function(e,O,t){var A=e("./typeof.js").default;function r(){"use strict";O.exports=function(){return s},O.exports.__esModule=!0,O.exports.default=O.exports;var c,s={},e=Object.prototype,u=e.hasOwnProperty,l=Object.defineProperty||function(e,t,r){e[t]=r.value},t="function"==typeof Symbol?Symbol:{},n=t.iterator||"@@iterator",r=t.asyncIterator||"@@asyncIterator",i=t.toStringTag||"@@toStringTag";function o(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{o({},"")}catch(c){o=function(e,t,r){return e[t]=r}}function a(e,t,r,n){var i,o,s,a,t=t&&t.prototype instanceof b?t:b,t=Object.create(t.prototype),n=new T(n||[]);return l(t,"_invoke",{value:(i=e,o=r,s=n,a=p,function(e,t){if(a===h)throw new Error("Generator is already running");if(a===y){if("throw"===e)throw t;return{value:c,done:!0}}for(s.method=e,s.arg=t;;){var r=s.delegate;if(r){r=function e(t,r){var n=r.method,i=t.iterator[n];if(i===c)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=c,e(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;n=f(i,t.iterator,r.arg);if("throw"===n.type)return r.method="throw",r.arg=n.arg,r.delegate=null,m;i=n.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=c),r.delegate=null,m):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}(r,s);if(r){if(r===m)continue;return r}}if("next"===s.method)s.sent=s._sent=s.arg;else if("throw"===s.method){if(a===p)throw a=y,s.arg;s.dispatchException(s.arg)}else"return"===s.method&&s.abrupt("return",s.arg);a=h;r=f(i,o,s);if("normal"===r.type){if(a=s.done?y:d,r.arg===m)continue;return{value:r.arg,done:s.done}}"throw"===r.type&&(a=y,s.method="throw",s.arg=r.arg)}})}),t}function f(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}s.wrap=a;var p="suspendedStart",d="suspendedYield",h="executing",y="completed",m={};function b(){}function g(){}function v(){}var t={},j=(o(t,n,function(){return this}),Object.getPrototypeOf),j=j&&j(j(E([]))),w=(j&&j!==e&&u.call(j,n)&&(t=j),v.prototype=b.prototype=Object.create(t));function x(e){["next","throw","return"].forEach(function(t){o(e,t,function(e){return this._invoke(t,e)})})}function S(s,a){var t;l(this,"_invoke",{value:function(r,n){function e(){return new a(function(e,t){!function t(e,r,n,i){var o,e=f(s[e],s,r);if("throw"!==e.type)return(r=(o=e.arg).value)&&"object"==A(r)&&u.call(r,"__await")?a.resolve(r.__await).then(function(e){t("next",e,n,i)},function(e){t("throw",e,n,i)}):a.resolve(r).then(function(e){o.value=e,n(o)},function(e){return t("throw",e,n,i)});i(e.arg)}(r,n,e,t)})}return t=t?t.then(e,e):e()}})}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function _(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function E(t){if(t||""===t){var r,e=t[n];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return r=-1,(e=function e(){for(;++r<t.length;)if(u.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=c,e.done=!0,e}).next=e}throw new TypeError(A(t)+" is not iterable")}return l(w,"constructor",{value:g.prototype=v,configurable:!0}),l(v,"constructor",{value:g,configurable:!0}),g.displayName=o(v,i,"GeneratorFunction"),s.isGeneratorFunction=function(e){e="function"==typeof e&&e.constructor;return!!e&&(e===g||"GeneratorFunction"===(e.displayName||e.name))},s.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,v):(e.__proto__=v,o(e,i,"GeneratorFunction")),e.prototype=Object.create(w),e},s.awrap=function(e){return{__await:e}},x(S.prototype),o(S.prototype,r,function(){return this}),s.AsyncIterator=S,s.async=function(e,t,r,n,i){void 0===i&&(i=Promise);var o=new S(a(e,t,r,n),i);return s.isGeneratorFunction(t)?o:o.next().then(function(e){return e.done?e.value:o.next()})},x(w),o(w,i,"Generator"),o(w,n,function(){return this}),o(w,"toString",function(){return"[object Generator]"}),s.keys=function(e){var t,r=Object(e),n=[];for(t in r)n.push(t);return n.reverse(),function e(){for(;n.length;){var t=n.pop();if(t in r)return e.value=t,e.done=!1,e}return e.done=!0,e}},s.values=E,T.prototype={constructor:T,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=c,this.done=!1,this.delegate=null,this.method="next",this.arg=c,this.tryEntries.forEach(_),!e)for(var t in this)"t"===t.charAt(0)&&u.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=c)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var n=this;function e(e,t){return o.type="throw",o.arg=r,n.next=e,t&&(n.method="next",n.arg=c),!!t}for(var t=this.tryEntries.length-1;0<=t;--t){var i=this.tryEntries[t],o=i.completion;if("root"===i.tryLoc)return e("end");if(i.tryLoc<=this.prev){var s=u.call(i,"catchLoc"),a=u.call(i,"finallyLoc");if(s&&a){if(this.prev<i.catchLoc)return e(i.catchLoc,!0);if(this.prev<i.finallyLoc)return e(i.finallyLoc)}else if(s){if(this.prev<i.catchLoc)return e(i.catchLoc,!0)}else{if(!a)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return e(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;0<=r;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&u.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var i=n;break}}var o=(i=i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc?null:i)?i.completion:{};return o.type=e,o.arg=t,i?(this.method="next",this.next=i.finallyLoc,m):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),m},finish:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),_(r),m}},catch:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var r,n,i=this.tryEntries[t];if(i.tryLoc===e)return"throw"===(r=i.completion).type&&(n=r.arg,_(i)),n}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:E(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=c),m}},s}O.exports=r,O.exports.__esModule=!0,O.exports.default=O.exports},{"./typeof.js":91}],90:[function(e,t,r){var n=e("./arrayWithoutHoles.js"),i=e("./iterableToArray.js"),o=e("./unsupportedIterableToArray.js"),s=e("./nonIterableSpread.js");t.exports=function(e){return n(e)||i(e)||o(e)||s()},t.exports.__esModule=!0,t.exports.default=t.exports},{"./arrayWithoutHoles.js":84,"./iterableToArray.js":87,"./nonIterableSpread.js":88,"./unsupportedIterableToArray.js":92}],91:[function(e,t,r){function n(e){return t.exports=n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t.exports.__esModule=!0,t.exports.default=t.exports,n(e)}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports},{}],92:[function(e,t,r){var n=e("./arrayLikeToArray.js");t.exports=function(e,t){var r;if(e)return"string"==typeof e?n(e,t):"Map"===(r="Object"===(r=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:r)||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0},t.exports.__esModule=!0,t.exports.default=t.exports},{"./arrayLikeToArray.js":83}],93:[function(t,e,r){t=t("../helpers/regeneratorRuntime")();e.exports=t;try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},{"../helpers/regeneratorRuntime":89}],94:[function(e,t,r){function n(){}t.exports=n,t.exports.HttpsAgent=n},{}],95:[function(x,S,e){!function(p){!function(){"use strict";var e=x("object.assign/polyfill")();function d(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,o=Math.min(r,n);i<o;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return r<n?-1:n<r?1:0}function h(e){return p.Buffer&&"function"==typeof p.Buffer.isBuffer?p.Buffer.isBuffer(e):!(null==e||!e._isBuffer)}var y=x("util/"),n=Object.prototype.hasOwnProperty,m=Array.prototype.slice,t="foo"===function(){}.name;function b(e){return Object.prototype.toString.call(e)}function g(e){return!h(e)&&"function"==typeof p.ArrayBuffer&&("function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&(e instanceof DataView||!!(e.buffer&&e.buffer instanceof ArrayBuffer)))}var o=S.exports=u,r=/\s*function\s+([^\(\s]*)\s*/;function i(e){if(y.isFunction(e))return t?e.name:(e=e.toString().match(r))&&e[1]}function s(e,t){return"string"!=typeof e||e.length<t?e:e.slice(0,t)}function a(e){return t||!y.isFunction(e)?y.inspect(e):"[Function"+((e=i(e))?": "+e:"")+"]"}function c(e,t,r,n,i){throw new o.AssertionError({message:r,actual:e,expected:t,operator:n,stackStartFunction:i})}function u(e,t){e||c(e,!0,t,"==",o.ok)}function v(e,t,r,n){if(e===t)return!0;if(h(e)&&h(t))return 0===d(e,t);if(y.isDate(e)&&y.isDate(t))return e.getTime()===t.getTime();if(y.isRegExp(e)&&y.isRegExp(t))return e.source===t.source&&e.global===t.global&&e.multiline===t.multiline&&e.lastIndex===t.lastIndex&&e.ignoreCase===t.ignoreCase;if(null!==e&&"object"==typeof e||null!==t&&"object"==typeof t){if(g(e)&&g(t)&&b(e)===b(t)&&!(e instanceof Float32Array||e instanceof Float64Array))return 0===d(new Uint8Array(e.buffer),new Uint8Array(t.buffer));if(h(e)!==h(t))return!1;var i=(n=n||{actual:[],expected:[]}).actual.indexOf(e);if(-1===i||i!==n.expected.indexOf(t)){n.actual.push(e),n.expected.push(t);var o=e,s=t,a=r,c=n;if(null==o||null==s)return!1;if(y.isPrimitive(o)||y.isPrimitive(s))return o===s;if(a&&Object.getPrototypeOf(o)!==Object.getPrototypeOf(s))return!1;i=j(o),n=j(s);if(i&&!n||!i&&n)return!1;if(i)return o=m.call(o),s=m.call(s),v(o,s,a);var u,l,f=w(o),p=w(s);if(f.length!==p.length)return!1;for(f.sort(),p.sort(),l=f.length-1;0<=l;l--)if(f[l]!==p[l])return!1;for(l=f.length-1;0<=l;l--)if(u=f[l],!v(o[u],s[u],a,c))return!1}return!0}return r?e===t:e==t}function j(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function l(e,t){if(e&&t){if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return 1}catch(e){}return Error.isPrototypeOf(t)?void 0:!0===t.call({},e)}}function f(e,t,r,n){if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(n=r,r=null),t=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),e&&!t&&c(t,r,"Missing expected exception"+n);var i="string"==typeof n,o=!e&&t&&!r;if((!e&&y.isError(t)&&i&&l(t,r)||o)&&c(t,r,"Got unwanted exception"+n),e&&t&&r&&!l(t,r)||!e&&t)throw t}o.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=s(a((r=this).actual),128)+" "+r.operator+" "+s(a(r.expected),128),this.generatedMessage=!0);var t,r=e.stackStartFunction||c;Error.captureStackTrace?Error.captureStackTrace(this,r):(e=new Error).stack&&(e=e.stack,t=i(r),0<=(t=e.indexOf("\n"+t))&&(t=e.indexOf("\n",t+1),e=e.substring(t+1)),this.stack=e)},y.inherits(o.AssertionError,Error),o.fail=c,o.ok=u,o.equal=function(e,t,r){e!=t&&c(e,t,r,"==",o.equal)},o.notEqual=function(e,t,r){e==t&&c(e,t,r,"!=",o.notEqual)},o.deepEqual=function(e,t,r){v(e,t,!1)||c(e,t,r,"deepEqual",o.deepEqual)},o.deepStrictEqual=function(e,t,r){v(e,t,!0)||c(e,t,r,"deepStrictEqual",o.deepStrictEqual)},o.notDeepEqual=function(e,t,r){v(e,t,!1)&&c(e,t,r,"notDeepEqual",o.notDeepEqual)},o.notDeepStrictEqual=function e(t,r,n){v(t,r,!0)&&c(t,r,n,"notDeepStrictEqual",e)},o.strictEqual=function(e,t,r){e!==t&&c(e,t,r,"===",o.strictEqual)},o.notStrictEqual=function(e,t,r){e===t&&c(e,t,r,"!==",o.notStrictEqual)},o.throws=function(e,t,r){f(!0,e,t,r)},o.doesNotThrow=function(e,t,r){f(!1,e,t,r)},o.ifError=function(e){if(e)throw e},o.strict=e(function e(t,r){t||c(t,!0,r,"==",e)},o,{equal:o.strictEqual,deepEqual:o.deepStrictEqual,notEqual:o.notStrictEqual,notDeepEqual:o.notDeepStrictEqual}),o.strict.strict=o.strict;var w=Object.keys||function(e){var t,r=[];for(t in e)n.call(e,t)&&r.push(t);return r}}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"object.assign/polyfill":438,"util/":98}],96:[function(e,t,r){"function"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;function r(){}r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},{}],97:[function(e,t,r){t.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},{}],98:[function(T,e,E){!function(k,_){!function(){var e,a=/%[sdj%]/g,n=(E.format=function(e){if(!b(e)){for(var t=[],r=0;r<arguments.length;r++)t.push(c(arguments[r]));return t.join(" ")}for(var r=1,n=arguments,i=n.length,o=String(e).replace(a,function(e){if("%%"===e)return"%";if(i<=r)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}}),s=n[r];r<i;s=n[++r])y(s)||!u(s)?o+=" "+s:o+=" "+c(s);return o},E.deprecate=function(e,t){var r;return g(_.process)?function(){return E.deprecate(e,t).apply(this,arguments)}:!0===k.noDeprecation?e:(r=!1,function(){if(!r){if(k.throwDeprecation)throw new Error(t);k.traceDeprecation?console.trace(t):console.error(t),r=!0}return e.apply(this,arguments)})},{});function c(e,t){var r={seen:[],stylize:o};return 3<=arguments.length&&(r.depth=arguments[2]),4<=arguments.length&&(r.colors=arguments[3]),h(t)?r.showHidden=t:t&&E._extend(r,t),g(r.showHidden)&&(r.showHidden=!1),g(r.depth)&&(r.depth=2),g(r.colors)&&(r.colors=!1),g(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=i),l(r,e,r.depth)}function i(e,t){t=c.styles[t];return t?"\x1b["+c.colors[t][0]+"m"+e+"\x1b["+c.colors[t][1]+"m":e}function o(e,t){return e}function l(t,r,n){if(t.customInspect&&r&&x(r.inspect)&&r.inspect!==E.inspect&&(!r.constructor||r.constructor.prototype!==r))return b(e=r.inspect(n,t))?e:l(t,e,n);var e=function(e,t){if(g(t))return e.stylize("undefined","undefined");{var r;if(b(t))return r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'",e.stylize(r,"string")}return m(t)?e.stylize(""+t,"number"):h(t)?e.stylize(""+t,"boolean"):y(t)?e.stylize("null","null"):void 0}(t,r);if(e)return e;var i,e=Object.keys(r),o=(i={},e.forEach(function(e,t){i[e]=!0}),i);if(t.showHidden&&(e=Object.getOwnPropertyNames(r)),w(r)&&(0<=e.indexOf("message")||0<=e.indexOf("description")))return f(r);if(0===e.length){if(x(r))return s=r.name?": "+r.name:"",t.stylize("[Function"+s+"]","special");if(v(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(j(r))return t.stylize(Date.prototype.toString.call(r),"date");if(w(r))return f(r)}var s="",a=!1,c=["{","}"];if(d(r)&&(a=!0,c=["[","]"]),x(r)&&(s=" [Function"+(r.name?": "+r.name:"")+"]"),v(r)&&(s=" "+RegExp.prototype.toString.call(r)),j(r)&&(s=" "+Date.prototype.toUTCString.call(r)),w(r)&&(s=" "+f(r)),0===e.length&&(!a||0==r.length))return c[0]+s+c[1];if(n<0)return v(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special");t.seen.push(r),u=a?function(t,r,n,i,e){for(var o=[],s=0,a=r.length;s<a;++s)S(r,String(s))?o.push(p(t,r,n,i,String(s),!0)):o.push("");return e.forEach(function(e){e.match(/^\d+$/)||o.push(p(t,r,n,i,e,!0))}),o}(t,r,n,o,e):e.map(function(e){return p(t,r,n,o,e,a)}),t.seen.pop();var u;return 60<u.reduce(function(e,t){return 0<=t.indexOf("\n")&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)?c[0]+(""===s?"":s+"\n ")+" "+u.join(",\n ")+" "+c[1]:c[0]+s+" "+u.join(", ")+" "+c[1]}function f(e){return"["+Error.prototype.toString.call(e)+"]"}function p(e,t,r,n,i,o){var s,a,t=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]};if(t.get?a=t.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):t.set&&(a=e.stylize("[Setter]","special")),S(n,i)||(s="["+i+"]"),a||(e.seen.indexOf(t.value)<0?-1<(a=y(r)?l(e,t.value,null):l(e,t.value,r-1)).indexOf("\n")&&(a=o?a.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+a.split("\n").map(function(e){return" "+e}).join("\n")):a=e.stylize("[Circular]","special")),g(s)){if(o&&i.match(/^\d+$/))return a;s=(s=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),e.stylize(s,"string"))}return s+": "+a}function d(e){return Array.isArray(e)}function h(e){return"boolean"==typeof e}function y(e){return null===e}function m(e){return"number"==typeof e}function b(e){return"string"==typeof e}function g(e){return void 0===e}function v(e){return u(e)&&"[object RegExp]"===t(e)}function u(e){return"object"==typeof e&&null!==e}function j(e){return u(e)&&"[object Date]"===t(e)}function w(e){return u(e)&&("[object Error]"===t(e)||e instanceof Error)}function x(e){return"function"==typeof e}function t(e){return Object.prototype.toString.call(e)}function r(e){return e<10?"0"+e.toString(10):e.toString(10)}E.debuglog=function(t){var r;return g(e)&&(e=k.env.NODE_DEBUG||""),t=t.toUpperCase(),n[t]||(new RegExp("\\b"+t+"\\b","i").test(e)?(r=k.pid,n[t]=function(){var e=E.format.apply(E,arguments);console.error("%s %d: %s",t,r,e)}):n[t]=function(){}),n[t]},(E.inspect=c).colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},c.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},E.isArray=d,E.isBoolean=h,E.isNull=y,E.isNullOrUndefined=function(e){return null==e},E.isNumber=m,E.isString=b,E.isSymbol=function(e){return"symbol"==typeof e},E.isUndefined=g,E.isRegExp=v,E.isObject=u,E.isDate=j,E.isError=w,E.isFunction=x,E.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},E.isBuffer=T("./support/isBuffer");var s=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function S(e,t){return Object.prototype.hasOwnProperty.call(e,t)}E.log=function(){var e,t;console.log("%s - %s",(e=new Date,t=[r(e.getHours()),r(e.getMinutes()),r(e.getSeconds())].join(":"),[e.getDate(),s[e.getMonth()],t].join(" ")),E.format.apply(E,arguments))},E.inherits=T("inherits"),E._extend=function(e,t){if(t&&u(t))for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}.call(this)}.call(this,T("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":97,_process:538,inherits:96}],99:[function(e,t,r){!function(e){!function(){"use strict";var r=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],n="undefined"==typeof globalThis?e:globalThis;t.exports=function(){for(var e=[],t=0;t<r.length;t++)"function"==typeof n[r[t]]&&(e[e.length]=r[t]);return e}}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],100:[function(e,t,r){"use strict";r.byteLength=function(e){var e=l(e),t=e[0],e=e[1];return 3*(t+e)/4-e},r.toByteArray=function(e){var t,r,n=l(e),i=n[0],n=n[1],o=new u(function(e,t){return 3*(e+t)/4-t}(i,n)),s=0,a=0<n?i-4:i;for(r=0;r<a;r+=4)t=c[e.charCodeAt(r)]<<18|c[e.charCodeAt(r+1)]<<12|c[e.charCodeAt(r+2)]<<6|c[e.charCodeAt(r+3)],o[s++]=t>>16&255,o[s++]=t>>8&255,o[s++]=255&t;2===n&&(t=c[e.charCodeAt(r)]<<2|c[e.charCodeAt(r+1)]>>4,o[s++]=255&t);1===n&&(t=c[e.charCodeAt(r)]<<10|c[e.charCodeAt(r+1)]<<4|c[e.charCodeAt(r+2)]>>2,o[s++]=t>>8&255,o[s++]=255&t);return o},r.fromByteArray=function(e){for(var t,r=e.length,n=r%3,i=[],o=0,s=r-n;o<s;o+=16383)i.push(function(e,t,r){for(var n,i=[],o=t;o<r;o+=3)n=(e[o]<<16&16711680)+(e[o+1]<<8&65280)+(255&e[o+2]),i.push(function(e){return a[e>>18&63]+a[e>>12&63]+a[e>>6&63]+a[63&e]}(n));return i.join("")}(e,o,s<o+16383?s:o+16383));1==n?(t=e[r-1],i.push(a[t>>2]+a[t<<4&63]+"==")):2==n&&(t=(e[r-2]<<8)+e[r-1],i.push(a[t>>10]+a[t>>4&63]+a[t<<2&63]+"="));return i.join("")};for(var a=[],c=[],u="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,o=n.length;i<o;++i)a[i]=n[i],c[n.charCodeAt(i)]=i;function l(e){var t=e.length;if(0<t%4)throw new Error("Invalid string. Length must be a multiple of 4");e=e.indexOf("="),t=(e=-1===e?t:e)===t?0:4-e%4;return[e,t]}c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63},{}],101:[function(e,t,r){var n,i;n=this,i=function(){function s(t){function e(e){e=t.match(e);return e&&1<e.length&&e[1]||""}function r(e){e=t.match(e);return e&&1<e.length&&e[2]||""}var n,i=e(/(ipod|iphone|ipad)/i).toLowerCase(),o=!/like android/i.test(t)&&/android/i.test(t),s=/nexus\s*[0-6]\s*/i.test(t),a=!s&&/nexus\s*[0-9]+/i.test(t),c=/CrOS/.test(t),u=/silk/i.test(t),l=/sailfish/i.test(t),f=/tizen/i.test(t),p=/(web|hpw)(o|0)s/i.test(t),d=/windows phone/i.test(t),h=(/SamsungBrowser/i.test(t),!d&&/windows/i.test(t)),y=!i&&!u&&/macintosh/i.test(t),m=!o&&!l&&!f&&!p&&/linux/i.test(t),b=r(/edg([ea]|ios)\/(\d+(\.\d+)?)/i),g=e(/version\/(\d+(\.\d+)?)/i),v=/tablet/i.test(t)&&!/tablet pc/i.test(t),j=!v&&/[^-]mobi/i.test(t),w=/xbox/i.test(t);/opera/i.test(t)?n={name:"Opera",opera:!0,version:g||e(/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i)}:/opr\/|opios/i.test(t)?n={name:"Opera",opera:!0,version:e(/(?:opr|opios)[\s\/](\d+(\.\d+)?)/i)||g}:/SamsungBrowser/i.test(t)?n={name:"Samsung Internet for Android",samsungBrowser:!0,version:g||e(/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i)}:/Whale/i.test(t)?n={name:"NAVER Whale browser",whale:!0,version:e(/(?:whale)[\s\/](\d+(?:\.\d+)+)/i)}:/MZBrowser/i.test(t)?n={name:"MZ Browser",mzbrowser:!0,version:e(/(?:MZBrowser)[\s\/](\d+(?:\.\d+)+)/i)}:/coast/i.test(t)?n={name:"Opera Coast",coast:!0,version:g||e(/(?:coast)[\s\/](\d+(\.\d+)?)/i)}:/focus/i.test(t)?n={name:"Focus",focus:!0,version:e(/(?:focus)[\s\/](\d+(?:\.\d+)+)/i)}:/yabrowser/i.test(t)?n={name:"Yandex Browser",yandexbrowser:!0,version:g||e(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i)}:/ucbrowser/i.test(t)?n={name:"UC Browser",ucbrowser:!0,version:e(/(?:ucbrowser)[\s\/](\d+(?:\.\d+)+)/i)}:/mxios/i.test(t)?n={name:"Maxthon",maxthon:!0,version:e(/(?:mxios)[\s\/](\d+(?:\.\d+)+)/i)}:/epiphany/i.test(t)?n={name:"Epiphany",epiphany:!0,version:e(/(?:epiphany)[\s\/](\d+(?:\.\d+)+)/i)}:/puffin/i.test(t)?n={name:"Puffin",puffin:!0,version:e(/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i)}:/sleipnir/i.test(t)?n={name:"Sleipnir",sleipnir:!0,version:e(/(?:sleipnir)[\s\/](\d+(?:\.\d+)+)/i)}:/k-meleon/i.test(t)?n={name:"K-Meleon",kMeleon:!0,version:e(/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i)}:d?(n={name:"Windows Phone",osname:"Windows Phone",windowsphone:!0},b?(n.msedge=!0,n.version=b):(n.msie=!0,n.version=e(/iemobile\/(\d+(\.\d+)?)/i))):/msie|trident/i.test(t)?n={name:"Internet Explorer",msie:!0,version:e(/(?:msie |rv:)(\d+(\.\d+)?)/i)}:c?n={name:"Chrome",osname:"Chrome OS",chromeos:!0,chromeBook:!0,chrome:!0,version:e(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?n={name:"Microsoft Edge",msedge:!0,version:b}:/vivaldi/i.test(t)?n={name:"Vivaldi",vivaldi:!0,version:e(/vivaldi\/(\d+(\.\d+)?)/i)||g}:l?n={name:"Sailfish",osname:"Sailfish OS",sailfish:!0,version:e(/sailfish\s?browser\/(\d+(\.\d+)?)/i)}:/seamonkey\//i.test(t)?n={name:"SeaMonkey",seamonkey:!0,version:e(/seamonkey\/(\d+(\.\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(n={name:"Firefox",firefox:!0,version:e(/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i)},/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(t)&&(n.firefoxos=!0,n.osname="Firefox OS")):u?n={name:"Amazon Silk",silk:!0,version:e(/silk\/(\d+(\.\d+)?)/i)}:/phantom/i.test(t)?n={name:"PhantomJS",phantom:!0,version:e(/phantomjs\/(\d+(\.\d+)?)/i)}:/slimerjs/i.test(t)?n={name:"SlimerJS",slimer:!0,version:e(/slimerjs\/(\d+(\.\d+)?)/i)}:/blackberry|\bbb\d+/i.test(t)||/rim\stablet/i.test(t)?n={name:"BlackBerry",osname:"BlackBerry OS",blackberry:!0,version:g||e(/blackberry[\d]+\/(\d+(\.\d+)?)/i)}:p?(n={name:"WebOS",osname:"WebOS",webos:!0,version:g||e(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i)},/touchpad\//i.test(t)&&(n.touchpad=!0)):/bada/i.test(t)?n={name:"Bada",osname:"Bada",bada:!0,version:e(/dolfin\/(\d+(\.\d+)?)/i)}:f?n={name:"Tizen",osname:"Tizen",tizen:!0,version:e(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i)||g}:/qupzilla/i.test(t)?n={name:"QupZilla",qupzilla:!0,version:e(/(?:qupzilla)[\s\/](\d+(?:\.\d+)+)/i)||g}:/chromium/i.test(t)?n={name:"Chromium",chromium:!0,version:e(/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i)||g}:/chrome|crios|crmo/i.test(t)?n={name:"Chrome",chrome:!0,version:e(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:o?n={name:"Android",version:g}:/safari|applewebkit/i.test(t)?(n={name:"Safari",safari:!0},g&&(n.version=g)):i?(n={name:"iphone"==i?"iPhone":"ipad"==i?"iPad":"iPod"},g&&(n.version=g)):n=/googlebot/i.test(t)?{name:"Googlebot",googlebot:!0,version:e(/googlebot\/(\d+(\.\d+))/i)||g}:{name:e(/^(.*)\/(.*) /),version:r(/^(.*)\/(.*) /)},!n.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\/537\.36/i.test(t)?(n.name=n.name||"Blink",n.blink=!0):(n.name=n.name||"Webkit",n.webkit=!0),!n.version&&g&&(n.version=g)):!n.opera&&/gecko\//i.test(t)&&(n.name=n.name||"Gecko",n.gecko=!0,n.version=n.version||e(/gecko\/(\d+(\.\d+)?)/i)),n.windowsphone||!o&&!n.silk?!n.windowsphone&&i?(n[i]=!0,n.ios=!0,n.osname="iOS"):y?(n.mac=!0,n.osname="macOS"):w?(n.xbox=!0,n.osname="Xbox"):h?(n.windows=!0,n.osname="Windows"):m&&(n.linux=!0,n.osname="Linux"):(n.android=!0,n.osname="Android");d="",n.windows?d=function(e){switch(e){case"NT":return"NT";case"XP":return"XP";case"NT 5.0":return"2000";case"NT 5.1":return"XP";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}}(e(/Windows ((NT|XP)( \d\d?.\d)?)/i)):n.windowsphone?d=e(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i):n.mac?d=(d=e(/Mac OS X (\d+([_\.\s]\d+)*)/i)).replace(/[_\s]/g,"."):i?d=(d=e(/os (\d+([_\s]\d+)*) like mac os x/i)).replace(/[_\s]/g,"."):o?d=e(/android[ \/-](\d+(\.\d+)*)/i):n.webos?d=e(/(?:web|hpw)os\/(\d+(\.\d+)*)/i):n.blackberry?d=e(/rim\stablet\sos\s(\d+(\.\d+)*)/i):n.bada?d=e(/bada\/(\d+(\.\d+)*)/i):n.tizen&&(d=e(/tizen[\/\s](\d+(\.\d+)*)/i)),d&&(n.osversion=d),c=!n.windows&&d.split(".")[0];return v||a||"ipad"==i||o&&(3==c||4<=c&&!j)||n.silk?n.tablet=!0:(j||"iphone"==i||"ipod"==i||o||s||n.blackberry||n.webos||n.bada)&&(n.mobile=!0),n.msedge||n.msie&&10<=n.version||n.yandexbrowser&&15<=n.version||n.vivaldi&&1<=n.version||n.chrome&&20<=n.version||n.samsungBrowser&&4<=n.version||n.whale&&1===x([n.version,"1.0"])||n.mzbrowser&&1===x([n.version,"6.0"])||n.focus&&1===x([n.version,"1.0"])||n.firefox&&20<=n.version||n.safari&&6<=n.version||n.opera&&10<=n.version||n.ios&&n.osversion&&6<=n.osversion.split(".")[0]||n.blackberry&&10.1<=n.version||n.chromium&&20<=n.version?n.a=!0:n.msie&&n.version<10||n.chrome&&n.version<20||n.firefox&&n.version<20||n.safari&&n.version<6||n.opera&&n.version<10||n.ios&&n.osversion&&n.osversion.split(".")[0]<6||n.chromium&&n.version<20?n.c=!0:n.x=!0,n}var a=s("undefined"!=typeof navigator&&navigator.userAgent||"");function n(e){return e.split(".").length}function i(e,t){var r,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r++)n.push(t(e[r]));return n}function x(e){for(var r=Math.max(n(e[0]),n(e[1])),t=i(e,function(e){var t=r-n(e);return i((e+=new Array(1+t).join(".0")).split("."),function(e){return new Array(20-e.length).join("0")+e}).reverse()});0<=--r;){if(t[0][r]>t[1][r])return 1;if(t[0][r]!==t[1][r])return-1;if(0===r)return 0}}function o(e,t,r){var n,i=a,o=("string"==typeof t&&(r=t,t=void 0),void 0===t&&(t=!1),""+(i=r?s(r):i).version);for(n in e)if(e.hasOwnProperty(n)&&i[n]){if("string"!=typeof e[n])throw new Error("Browser version in the minVersion map should be a string: "+n+": "+String(e));return x([o,e[n]])<0}return t}return a.test=function(e){for(var t=0;t<e.length;++t){var r=e[t];if("string"==typeof r&&r in a)return!0}return!1},a.isUnsupportedBrowser=o,a.compareVersions=x,a.check=function(e,t,r){return!o(e,t,r)},a._detect=s,a.detect=s,a},void 0!==t&&t.exports?t.exports=i():n.bowser=i()},{}],102:[function(e,t,r){},{}],103:[function(D,e,R){!function(e){!function(){"use strict";var k=D("base64-js"),o=D("ieee754"),t=(R.Buffer=f,R.SlowBuffer=function(e){+e!=e&&(e=0);return f.alloc(+e)},R.INSPECT_MAX_BYTES=50,2147483647);function c(e){if(t<e)throw new RangeError('The value "'+e+'" is invalid for option "size"');e=new Uint8Array(e);return e.__proto__=f.prototype,e}function f(e,t,r){if("number"!=typeof e)return n(e,t,r);if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return s(e)}function n(e,t,r){if("string"==typeof e){var n=e,i=t;if(f.isEncoding(i="string"==typeof i&&""!==i?i:"utf8"))return o=0|p(n,i),s=c(o),s=(n=s.write(n,i))!==o?s.slice(0,n):s;throw new TypeError("Unknown encoding: "+i)}if(ArrayBuffer.isView(e))return u(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(A(e,ArrayBuffer)||e&&A(e.buffer,ArrayBuffer)){var o=e,n=t,s=r;if(n<0||o.byteLength<n)throw new RangeError('"offset" is outside of buffer bounds');if(o.byteLength<n+(s||0))throw new RangeError('"length" is outside of buffer bounds');return(o=void 0===n&&void 0===s?new Uint8Array(o):void 0===s?new Uint8Array(o,n):new Uint8Array(o,n,s)).__proto__=f.prototype,o}if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');i=e.valueOf&&e.valueOf();if(null!=i&&i!==e)return f.from(i,t,r);var a=function(e){{var t,r;if(f.isBuffer(e))return t=0|l(e.length),0!==(r=c(t)).length&&e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||I(e.length)?c(0):u(e);if("Buffer"===e.type&&Array.isArray(e.data))return u(e.data)}(e);if(a)return a;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return f.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function i(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function s(e){return i(e),c(e<0?0:0|l(e))}function u(e){for(var t=e.length<0?0:0|l(e.length),r=c(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function l(e){if(t<=e)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+t.toString(16)+" bytes");return 0|e}function p(e,t){if(f.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||A(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=2<arguments.length&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return T(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return E(e).length;default:if(i)return n?-1:T(e).length;t=(""+t).toLowerCase(),i=!0}}function r(e,t,r){var n,i=!1;if((t=void 0===t||t<0?0:t)>this.length)return"";if((r=void 0===r||r>this.length?this.length:r)<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e=e||"utf8";;)switch(e){case"hex":var o=this,s=t,a=r,c=o.length;(!a||a<0||c<a)&&(a=c);for(var u="",l=s=!s||s<0?0:s;l<a;++l)u+=function(e){return e<16?"0"+e.toString(16):e.toString(16)}(o[l]);return u;case"utf8":case"utf-8":return _(this,t,r);case"ascii":var f=this,c=t,p=r,d="";p=Math.min(f.length,p);for(var h=c;h<p;++h)d+=String.fromCharCode(127&f[h]);return d;case"latin1":case"binary":var y=this,s=t,m=r,b="";m=Math.min(y.length,m);for(var g=s;g<m;++g)b+=String.fromCharCode(y[g]);return b;case"base64":return v=this,n=r,0===(j=t)&&n===v.length?k.fromByteArray(v):k.fromByteArray(v.slice(j,n));case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":for(var v=t,j=r,w=this.slice(v,j),x="",S=0;S<w.length;S+=2)x+=String.fromCharCode(w[S]+256*w[S+1]);return x;default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}function a(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function d(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):2147483647<r?r=2147483647:r<-2147483648&&(r=-2147483648),(r=(r=I(r=+r)?i?0:e.length-1:r)<0?e.length+r:r)>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=f.from(t,n)),f.isBuffer(t))return 0===t.length?-1:h(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?(i?Uint8Array.prototype.indexOf:Uint8Array.prototype.lastIndexOf).call(e,t,r):h(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function h(e,t,r,n,i){var o=1,s=e.length,a=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;s/=o=2,a/=2,r/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i)for(var u=-1,l=r;l<s;l++)if(c(e,l)===c(t,-1===u?0:l-u)){if(l-(u=-1===u?l:u)+1===a)return u*o}else-1!==u&&(l-=l-u),u=-1;else for(l=r=s<r+a?s-a:r;0<=l;l--){for(var f=!0,p=0;p<a;p++)if(c(e,l+p)!==c(t,p)){f=!1;break}if(f)return l}return-1}function m(e,t,r,n){return O(function(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,n)}function b(e,t,r,n){return O(function(e,t){for(var r,n,i=[],o=0;o<e.length&&!((t-=2)<0);++o)r=e.charCodeAt(o),n=r>>8,i.push(r%256),i.push(n);return i}(t,e.length-r),e,r,n)}function _(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i<r;){var o,s,a,c,u=e[i],l=null,f=239<u?4:223<u?3:191<u?2:1;if(i+f<=r)switch(f){case 1:u<128&&(l=u);break;case 2:128==(192&(o=e[i+1]))&&127<(c=(31&u)<<6|63&o)&&(l=c);break;case 3:o=e[i+1],s=e[i+2],128==(192&o)&&128==(192&s)&&2047<(c=(15&u)<<12|(63&o)<<6|63&s)&&(c<55296||57343<c)&&(l=c);break;case 4:o=e[i+1],s=e[i+2],a=e[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&65535<(c=(15&u)<<18|(63&o)<<12|(63&s)<<6|63&a)&&c<1114112&&(l=c)}null===l?(l=65533,f=1):65535<l&&(n.push((l-=65536)>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=f}var p=n,d=p.length;if(d<=g)return String.fromCharCode.apply(String,p);for(var h="",y=0;y<d;)h+=String.fromCharCode.apply(String,p.slice(y,y+=g));return h}R.kMaxLength=t,(f.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}())||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(f.prototype,"parent",{enumerable:!0,get:function(){if(f.isBuffer(this))return this.buffer}}),Object.defineProperty(f.prototype,"offset",{enumerable:!0,get:function(){if(f.isBuffer(this))return this.byteOffset}}),"undefined"!=typeof Symbol&&null!=Symbol.species&&f[Symbol.species]===f&&Object.defineProperty(f,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),f.poolSize=8192,f.from=n,f.prototype.__proto__=Uint8Array.prototype,f.__proto__=Uint8Array,f.alloc=function(e,t,r){return t=t,r=r,i(e=e),!(e<=0)&&void 0!==t?"string"==typeof r?c(e).fill(t,r):c(e).fill(t):c(e)},f.allocUnsafe=s,f.allocUnsafeSlow=s,f.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==f.prototype},f.compare=function(e,t){if(A(e,Uint8Array)&&(e=f.from(e,e.offset,e.byteLength)),A(t,Uint8Array)&&(t=f.from(t,t.offset,t.byteLength)),!f.isBuffer(e)||!f.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,i=0,o=Math.min(r,n);i<o;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return r<n?-1:n<r?1:0},f.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},f.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return f.alloc(0);if(void 0===t)for(i=t=0;i<e.length;++i)t+=e[i].length;for(var r=f.allocUnsafe(t),n=0,i=0;i<e.length;++i){var o=e[i];if(A(o,Uint8Array)&&(o=f.from(o)),!f.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(r,n),n+=o.length}return r},f.byteLength=p,f.prototype._isBuffer=!0,f.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)a(this,t,t+1);return this},f.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)a(this,t,t+3),a(this,t+1,t+2);return this},f.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)a(this,t,t+7),a(this,t+1,t+6),a(this,t+2,t+5),a(this,t+3,t+4);return this},f.prototype.toLocaleString=f.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?_(this,0,e):r.apply(this,arguments)},f.prototype.equals=function(e){if(f.isBuffer(e))return this===e||0===f.compare(this,e);throw new TypeError("Argument must be a Buffer")},f.prototype.inspect=function(){var e="",t=R.INSPECT_MAX_BYTES,e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim();return this.length>t&&(e+=" ... "),"<Buffer "+e+">"},f.prototype.compare=function(e,t,r,n,i){if(A(e,Uint8Array)&&(e=f.from(e,e.offset,e.byteLength)),!f.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),(t=void 0===t?0:t)<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(i<=n&&r<=t)return 0;if(i<=n)return-1;if(r<=t)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0),a=Math.min(o,s),c=this.slice(n,i),u=e.slice(t,r),l=0;l<a;++l)if(c[l]!==u[l]){o=c[l],s=u[l];break}return o<s?-1:s<o?1:0},f.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},f.prototype.indexOf=function(e,t,r){return d(this,e,t,r,!0)},f.prototype.lastIndexOf=function(e,t,r){return d(this,e,t,r,!1)},f.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||i<r)&&(r=i),0<e.length&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n=n||"utf8";for(var o,s,a,c=!1;;)switch(n){case"hex":var u=this,l=e,f=t,p=r,d=(f=Number(f)||0,u.length-f);(!p||d<(p=Number(p)))&&(p=d),(d=l.length)/2<p&&(p=d/2);for(var h=0;h<p;++h){var y=parseInt(l.substr(2*h,2),16);if(I(y))return h;u[f+h]=y}return h;case"utf8":case"utf-8":return d=t,a=r,O(T(e,(s=this).length-d),s,d,a);case"ascii":return m(this,e,t,r);case"latin1":case"binary":return m(this,e,t,r);case"base64":return s=this,a=t,o=r,O(E(e),s,a,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return b(this,e,t,r);default:if(c)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),c=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var g=4096;function y(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(r<e+t)throw new RangeError("Trying to access beyond buffer length")}function v(e,t,r,n,i,o){if(!f.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(i<t||t<o)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function j(e,t,r,n){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function w(e,t,r,n,i){return t=+t,r>>>=0,i||j(e,0,r,4),o.write(e,t,r,n,23,4),r+4}function x(e,t,r,n,i){return t=+t,r>>>=0,i||j(e,0,r,8),o.write(e,t,r,n,52,8),r+8}f.prototype.slice=function(e,t){var r=this.length,r=((e=~~e)<0?(e+=r)<0&&(e=0):r<e&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):r<t&&(t=r),t<e&&(t=e),this.subarray(e,t));return r.__proto__=f.prototype,r},f.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||y(e,t,this.length);for(var n=this[e],i=1,o=0;++o<t&&(i*=256);)n+=this[e+o]*i;return n},f.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||y(e,t,this.length);for(var n=this[e+--t],i=1;0<t&&(i*=256);)n+=this[e+--t]*i;return n},f.prototype.readUInt8=function(e,t){return e>>>=0,t||y(e,1,this.length),this[e]},f.prototype.readUInt16LE=function(e,t){return e>>>=0,t||y(e,2,this.length),this[e]|this[e+1]<<8},f.prototype.readUInt16BE=function(e,t){return e>>>=0,t||y(e,2,this.length),this[e]<<8|this[e+1]},f.prototype.readUInt32LE=function(e,t){return e>>>=0,t||y(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},f.prototype.readUInt32BE=function(e,t){return e>>>=0,t||y(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},f.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||y(e,t,this.length);for(var n=this[e],i=1,o=0;++o<t&&(i*=256);)n+=this[e+o]*i;return(i*=128)<=n&&(n-=Math.pow(2,8*t)),n},f.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||y(e,t,this.length);for(var n=t,i=1,o=this[e+--n];0<n&&(i*=256);)o+=this[e+--n]*i;return(i*=128)<=o&&(o-=Math.pow(2,8*t)),o},f.prototype.readInt8=function(e,t){return e>>>=0,t||y(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},f.prototype.readInt16LE=function(e,t){e>>>=0,t||y(e,2,this.length);t=this[e]|this[e+1]<<8;return 32768&t?4294901760|t:t},f.prototype.readInt16BE=function(e,t){e>>>=0,t||y(e,2,this.length);t=this[e+1]|this[e]<<8;return 32768&t?4294901760|t:t},f.prototype.readInt32LE=function(e,t){return e>>>=0,t||y(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},f.prototype.readInt32BE=function(e,t){return e>>>=0,t||y(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},f.prototype.readFloatLE=function(e,t){return e>>>=0,t||y(e,4,this.length),o.read(this,e,!0,23,4)},f.prototype.readFloatBE=function(e,t){return e>>>=0,t||y(e,4,this.length),o.read(this,e,!1,23,4)},f.prototype.readDoubleLE=function(e,t){return e>>>=0,t||y(e,8,this.length),o.read(this,e,!0,52,8)},f.prototype.readDoubleBE=function(e,t){return e>>>=0,t||y(e,8,this.length),o.read(this,e,!1,52,8)},f.prototype.writeUIntLE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||v(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o<r&&(i*=256);)this[t+o]=e/i&255;return t+r},f.prototype.writeUIntBE=function(e,t,r,n){e=+e,t>>>=0,r>>>=0,n||v(this,e,t,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[t+i]=255&e;0<=--i&&(o*=256);)this[t+i]=e/o&255;return t+r},f.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||v(this,e,t,1,255,0),this[t]=255&e,t+1},f.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||v(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||v(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||v(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},f.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||v(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeIntLE=function(e,t,r,n){e=+e,t>>>=0,n||v(this,e,t,r,(n=Math.pow(2,8*r-1))-1,-n);var i=0,o=1,s=0;for(this[t]=255&e;++i<r&&(o*=256);)e<0&&0===s&&0!==this[t+i-1]&&(s=1),this[t+i]=(e/o>>0)-s&255;return t+r},f.prototype.writeIntBE=function(e,t,r,n){e=+e,t>>>=0,n||v(this,e,t,r,(n=Math.pow(2,8*r-1))-1,-n);var i=r-1,o=1,s=0;for(this[t+i]=255&e;0<=--i&&(o*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/o>>0)-s&255;return t+r},f.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||v(this,e,t,1,127,-128),this[t]=255&(e=e<0?255+e+1:e),t+1},f.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||v(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},f.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||v(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},f.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||v(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},f.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||v(this,e,t,4,2147483647,-2147483648),this[t]=(e=e<0?4294967295+e+1:e)>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},f.prototype.writeFloatLE=function(e,t,r){return w(this,e,t,!0,r)},f.prototype.writeFloatBE=function(e,t,r){return w(this,e,t,!1,r)},f.prototype.writeDoubleLE=function(e,t,r){return x(this,e,t,!0,r)},f.prototype.writeDoubleBE=function(e,t,r){return x(this,e,t,!1,r)},f.prototype.copy=function(e,t,r,n){if(!f.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r=r||0,n||0===n||(n=this.length),t>=e.length&&(t=e.length),(n=0<n&&n<r?r:n)===r)return 0;if(0===e.length||0===this.length)return 0;if((t=t||0)<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length);var i=(n=e.length-t<n-r?e.length-t+r:n)-r;if(this===e&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(t,r,n);else if(this===e&&r<t&&t<n)for(var o=i-1;0<=o;--o)e[o+t]=this[o+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return i},f.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!f.isEncoding(n))throw new TypeError("Unknown encoding: "+n);var i;1===e.length&&(i=e.charCodeAt(0),"utf8"===n&&i<128||"latin1"===n)&&(e=i)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");var o;if(!(r<=t))if(t>>>=0,r=void 0===r?this.length:r>>>0,"number"==typeof(e=e||0))for(o=t;o<r;++o)this[o]=e;else{var s=f.isBuffer(e)?e:f.from(e,n),a=s.length;if(0===a)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(o=0;o<r-t;++o)this[o+t]=s[o%a]}return this};var S=/[^+/0-9A-Za-z-_]/g;function T(e,t){t=t||1/0;for(var r,n=e.length,i=null,o=[],s=0;s<n;++s){if(55295<(r=e.charCodeAt(s))&&r<57344){if(!i){if(56319<r){-1<(t-=3)&&o.push(239,191,189);continue}if(s+1===n){-1<(t-=3)&&o.push(239,191,189);continue}i=r;continue}if(r<56320){-1<(t-=3)&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&-1<(t-=3)&&o.push(239,191,189);if(i=null,r<128){if(--t<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function E(e){return k.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(S,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function O(e,t,r,n){for(var i=0;i<n&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function A(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function I(e){return e!=e}}.call(this)}.call(this,D("buffer").Buffer)},{"base64-js":100,buffer:103,ieee754:400}],104:[function(e,t,r){t.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},{}],105:[function(e,t,r){"use strict";var n=e("get-intrinsic"),i=e("./"),o=i(n("String.prototype.indexOf"));t.exports=function(e,t){t=n(e,!!t);return"function"==typeof t&&-1<o(e,".prototype.")?i(t):t}},{"./":106,"get-intrinsic":390}],106:[function(t,e,r){"use strict";var n=t("function-bind"),i=t("get-intrinsic"),o=t("set-function-length"),s=i("%TypeError%"),a=i("%Function.prototype.apply%"),c=i("%Function.prototype.call%"),u=i("%Reflect.apply%",!0)||n.call(c,a),t=i("%Object.defineProperty%",!0),l=i("%Math.max%");if(t)try{t({},"a",{value:1})}catch(e){t=null}e.exports=function(e){if("function"!=typeof e)throw new s("a function is required");var t=u(n,c,arguments);return o(t,1+l(0,e.length-(arguments.length-1)),!0)};function f(){return u(n,a,arguments)}t?t(e.exports,"apply",{value:f}):e.exports.apply=f},{"function-bind":389,"get-intrinsic":390,"set-function-length":466}],107:[function(e,t,r){"use strict";var n=Array.prototype.slice;function i(e,t){if(!(this instanceof i))return new i(e,t);this.src=e,this._withAccess=t}(t.exports=i).prototype.withAccess=function(e){return this._withAccess=!1!==e,this},i.prototype.pick=function(e){return(e=Array.isArray(e)?e:n.call(arguments)).length&&(this.keys=e),this},i.prototype.to=function(e){if(e=e||{},this.src){var t=this.keys||Object.keys(this.src);if(this._withAccess)for(o=0;o<t.length;o++){var r,n,i=t[o];void 0===(r=e)[n=i]&&void 0===r.__lookupGetter__(n)&&void 0===r.__lookupSetter__(n)&&(r=this.src.__lookupGetter__(i),n=this.src.__lookupSetter__(i),r&&e.__defineGetter__(i,r),n&&e.__defineSetter__(i,n),r||n||(e[i]=this.src[i]))}else for(var o=0;o<t.length;o++)void 0===e[i=t[o]]&&(e[i]=this.src[i])}return e},i.prototype.override=i.prototype.toCover=function(e){for(var t=this.keys||Object.keys(this.src),r=0;r<t.length;r++){var n=t[r],i=(delete e[n],this.src.__lookupGetter__(n)),o=this.src.__lookupSetter__(n);i&&e.__defineGetter__(n,i),o&&e.__defineSetter__(n,o),i||o||(e[n]=this.src[n])}},i.prototype.and=function(e){var t={};return this.to(t),this.src=e,this.to(t),this.src=t,this}},{}],108:[function(e,t,r){"use strict";var n=e("../internals/is-callable"),i=e("../internals/try-to-string"),o=TypeError;t.exports=function(e){if(n(e))return e;throw new o(i(e)+" is not a function")}},{"../internals/is-callable":203,"../internals/try-to-string":293}],109:[function(e,t,r){"use strict";var n=e("../internals/is-constructor"),i=e("../internals/try-to-string"),o=TypeError;t.exports=function(e){if(n(e))return e;throw new o(i(e)+" is not a constructor")}},{"../internals/is-constructor":204,"../internals/try-to-string":293}],110:[function(e,t,r){"use strict";var n=e("../internals/is-possible-prototype"),i=String,o=TypeError;t.exports=function(e){if(n(e))return e;throw new o("Can't set "+i(e)+" as a prototype")}},{"../internals/is-possible-prototype":209}],111:[function(e,t,r){"use strict";var n=e("../internals/well-known-symbol"),i=e("../internals/object-create"),e=e("../internals/object-define-property").f,o=n("unscopables"),s=Array.prototype;void 0===s[o]&&e(s,o,{configurable:!0,value:i(null)}),t.exports=function(e){s[o][e]=!0}},{"../internals/object-create":229,"../internals/object-define-property":231,"../internals/well-known-symbol":306}],112:[function(e,t,r){"use strict";var n=e("../internals/string-multibyte").charAt;t.exports=function(e,t,r){return t+(r?n(e,t).length:1)}},{"../internals/string-multibyte":271}],113:[function(e,t,r){"use strict";var n=e("../internals/object-is-prototype-of"),i=TypeError;t.exports=function(e,t){if(n(t,e))return e;throw new i("Incorrect invocation")}},{"../internals/object-is-prototype-of":238}],114:[function(e,t,r){"use strict";var n=e("../internals/is-object"),i=String,o=TypeError;t.exports=function(e){if(n(e))return e;throw new o(i(e)+" is not an object")}},{"../internals/is-object":208}],115:[function(e,t,r){"use strict";t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},{}],116:[function(e,t,r){"use strict";e=e("../internals/fails");t.exports=e(function(){var e;"function"==typeof ArrayBuffer&&(e=new ArrayBuffer(8),Object.isExtensible(e))&&Object.defineProperty(e,"a",{value:8})})},{"../internals/fails":171}],117:[function(e,t,P){"use strict";function r(e){var t,e=v(e);if(f(e))return(t=k(e))&&p(t,D)?t[D]:r(e)}function n(e){return!!f(e)&&(e=d(e),p(C,e)||p(M,e))}var i,o,s,a=e("../internals/array-buffer-basic-detection"),c=e("../internals/descriptors"),u=e("../internals/global"),l=e("../internals/is-callable"),f=e("../internals/is-object"),p=e("../internals/has-own-property"),d=e("../internals/classof"),h=e("../internals/try-to-string"),y=e("../internals/create-non-enumerable-property"),m=e("../internals/define-built-in"),b=e("../internals/define-built-in-accessor"),g=e("../internals/object-is-prototype-of"),v=e("../internals/object-get-prototype-of"),j=e("../internals/object-set-prototype-of"),w=e("../internals/well-known-symbol"),x=e("../internals/uid"),e=e("../internals/internal-state"),S=e.enforce,k=e.get,e=u.Int8Array,_=e&&e.prototype,T=u.Uint8ClampedArray,T=T&&T.prototype,E=e&&v(e),O=_&&v(_),e=Object.prototype,A=u.TypeError,w=w("toStringTag"),I=x("TYPED_ARRAY_TAG"),D="TypedArrayConstructor",R=a&&!!j&&"Opera"!==d(u.opera),x=!1,C={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},M={BigInt64Array:8,BigUint64Array:8};for(i in C)(s=(o=u[i])&&o.prototype)?S(s)[D]=o:R=!1;for(i in M)(s=(o=u[i])&&o.prototype)&&(S(s)[D]=o);if((!R||!l(E)||E===Function.prototype)&&(E=function(){throw new A("Incorrect invocation")},R))for(i in C)u[i]&&j(u[i],E);if((!R||!O||O===e)&&(O=E.prototype,R))for(i in C)u[i]&&j(u[i].prototype,O);if(R&&v(T)!==O&&j(T,O),c&&!p(O,w))for(i in b(O,w,{configurable:x=!0,get:function(){return f(this)?this[I]:void 0}}),C)u[i]&&y(u[i],I,i);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:R,TYPED_ARRAY_TAG:x&&I,aTypedArray:function(e){if(n(e))return e;throw new A("Target is not a typed array")},aTypedArrayConstructor:function(e){if(!l(e)||j&&!g(E,e))throw new A(h(e)+" is not a typed array constructor");return e},exportTypedArrayMethod:function(t,r,e,n){if(c){if(e)for(var i in C){i=u[i];if(i&&p(i.prototype,t))try{delete i.prototype[t]}catch(e){try{i.prototype[t]=r}catch(e){}}}O[t]&&!e||m(O,t,!e&&R&&_[t]||r,n)}},exportTypedArrayStaticMethod:function(e,t,r){var n,i;if(c){if(j){if(r)for(n in C)if((i=u[n])&&p(i,e))try{delete i[e]}catch(e){}if(E[e]&&!r)return;try{return m(E,e,!r&&R&&E[e]||t)}catch(e){}}for(n in C)!(i=u[n])||i[e]&&!r||m(i,e,t)}},getTypedArrayConstructor:r,isView:function(e){return!!f(e)&&("DataView"===(e=d(e))||p(C,e)||p(M,e))},isTypedArray:n,TypedArray:E,TypedArrayPrototype:O}},{"../internals/array-buffer-basic-detection":115,"../internals/classof":138,"../internals/create-non-enumerable-property":145,"../internals/define-built-in":149,"../internals/define-built-in-accessor":148,"../internals/descriptors":153,"../internals/global":188,"../internals/has-own-property":189,"../internals/internal-state":199,"../internals/is-callable":203,"../internals/is-object":208,"../internals/object-get-prototype-of":236,"../internals/object-is-prototype-of":238,"../internals/object-set-prototype-of":242,"../internals/try-to-string":293,"../internals/uid":299,"../internals/well-known-symbol":306}],118:[function(e,N,L){"use strict";function r(e){return[255&e]}function n(e){return[255&e,e>>8&255]}function i(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function t(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]}function B(e){return M(z(e),23,4)}function q(e){return M(e,52,8)}function o(e,t,r){W(e[k],t,{configurable:!0,get:function(){return r(this)[t]}})}function s(e,t,r,n){if(e=E(e),r=b(r),n=!!n,r+t>e.byteLength)throw new C(_);var i=e.bytes,r=r+e.byteOffset,e=K(i,r,r+t);return n?e:ee(e)}function a(e,t,r,n,i,o){var e=E(e),r=b(r),s=n(+i),a=!!o;if(r+t>e.byteLength)throw new C(_);for(var c=e.bytes,u=r+e.byteOffset,l=0;l<t;l++)c[u+l]=s[a?l:t-l-1]}var c,u,l=e("../internals/global"),f=e("../internals/function-uncurry-this"),p=e("../internals/descriptors"),F=e("../internals/array-buffer-basic-detection"),d=e("../internals/function-name"),U=e("../internals/create-non-enumerable-property"),W=e("../internals/define-built-in-accessor"),h=e("../internals/define-built-ins"),y=e("../internals/fails"),m=e("../internals/an-instance"),G=e("../internals/to-integer-or-infinity"),V=e("../internals/to-length"),b=e("../internals/to-index"),z=e("../internals/math-fround"),g=e("../internals/ieee754"),X=e("../internals/object-get-prototype-of"),v=e("../internals/object-set-prototype-of"),H=e("../internals/array-fill"),K=e("../internals/array-slice"),$=e("../internals/inherit-if-required"),Y=e("../internals/copy-constructor-properties"),j=e("../internals/set-to-string-tag"),e=e("../internals/internal-state"),J=d.PROPER,w=d.CONFIGURABLE,x="ArrayBuffer",S="DataView",k="prototype",_="Wrong index",T=e.getterFor(x),E=e.getterFor(S),O=e.set,A=l[x],I=A,D=I&&I[k],d=l[S],R=d&&d[k],e=Object.prototype,Z=l.Array,C=l.RangeError,Q=f(H),ee=f([].reverse),M=g.pack,P=g.unpack;F?(c=J&&A.name!==x,y(function(){A(1)})&&y(function(){new A(-1)})&&!y(function(){return new A,new A(1.5),new A(NaN),1!==A.length||c&&!w})?c&&w&&U(A,"name",x):Y(((I=function(e){return m(this,D),$(new A(b(e)),this,I)})[k]=D).constructor=I,A),v&&X(R)!==e&&v(R,e),l=new d(new I(2)),u=f(R.setInt8),l.setInt8(0,2147483648),l.setInt8(1,2147483649),!l.getInt8(0)&&l.getInt8(1)||h(R,{setInt8:function(e,t){u(this,e,t<<24>>24)},setUint8:function(e,t){u(this,e,t<<24>>24)}},{unsafe:!0})):(D=(I=function(e){m(this,D);e=b(e);O(this,{type:x,bytes:Q(Z(e),0),byteLength:e}),p||(this.byteLength=e,this.detached=!1)})[k],R=(d=function(e,t,r){m(this,R),m(e,D);var n=T(e),i=n.byteLength,t=G(t);if(t<0||i<t)throw new C("Wrong offset");if(i<t+(r=void 0===r?i-t:V(r)))throw new C("Wrong length");O(this,{type:S,buffer:e,byteLength:r,byteOffset:t,bytes:n.bytes}),p||(this.buffer=e,this.byteLength=r,this.byteOffset=t)})[k],p&&(o(I,"byteLength",T),o(d,"buffer",E),o(d,"byteLength",E),o(d,"byteOffset",E)),h(R,{getInt8:function(e){return s(this,1,e)[0]<<24>>24},getUint8:function(e){return s(this,1,e)[0]},getInt16:function(e){e=s(this,2,e,1<arguments.length&&arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(e){e=s(this,2,e,1<arguments.length&&arguments[1]);return e[1]<<8|e[0]},getInt32:function(e){return t(s(this,4,e,1<arguments.length&&arguments[1]))},getUint32:function(e){return t(s(this,4,e,1<arguments.length&&arguments[1]))>>>0},getFloat32:function(e){return P(s(this,4,e,1<arguments.length&&arguments[1]),23)},getFloat64:function(e){return P(s(this,8,e,1<arguments.length&&arguments[1]),52)},setInt8:function(e,t){a(this,1,e,r,t)},setUint8:function(e,t){a(this,1,e,r,t)},setInt16:function(e,t){a(this,2,e,n,t,2<arguments.length&&arguments[2])},setUint16:function(e,t){a(this,2,e,n,t,2<arguments.length&&arguments[2])},setInt32:function(e,t){a(this,4,e,i,t,2<arguments.length&&arguments[2])},setUint32:function(e,t){a(this,4,e,i,t,2<arguments.length&&arguments[2])},setFloat32:function(e,t){a(this,4,e,B,t,2<arguments.length&&arguments[2])},setFloat64:function(e,t){a(this,8,e,q,t,2<arguments.length&&arguments[2])}})),j(I,x),j(d,S),N.exports={ArrayBuffer:I,DataView:d}},{"../internals/an-instance":113,"../internals/array-buffer-basic-detection":115,"../internals/array-fill":120,"../internals/array-slice":131,"../internals/copy-constructor-properties":141,"../internals/create-non-enumerable-property":145,"../internals/define-built-in-accessor":148,"../internals/define-built-ins":150,"../internals/descriptors":153,"../internals/fails":171,"../internals/function-name":178,"../internals/function-uncurry-this":181,"../internals/global":188,"../internals/ieee754":194,"../internals/inherit-if-required":196,"../internals/internal-state":199,"../internals/math-fround":222,"../internals/object-get-prototype-of":236,"../internals/object-set-prototype-of":242,"../internals/set-to-string-tag":266,"../internals/to-index":281,"../internals/to-integer-or-infinity":283,"../internals/to-length":284}],119:[function(e,t,r){"use strict";var c=e("../internals/to-object"),u=e("../internals/to-absolute-index"),l=e("../internals/length-of-array-like"),f=e("../internals/delete-property-or-throw"),p=Math.min;t.exports=[].copyWithin||function(e,t){var r=c(this),n=l(r),i=u(e,n),o=u(t,n),e=2<arguments.length?arguments[2]:void 0,s=p((void 0===e?n:u(e,n))-o,n-i),a=1;for(o<i&&i<o+s&&(a=-1,o+=s-1,i+=s-1);0<s--;)o in r?r[i]=r[o]:f(r,i),i+=a,o+=a;return r}},{"../internals/delete-property-or-throw":152,"../internals/length-of-array-like":219,"../internals/to-absolute-index":279,"../internals/to-object":285}],120:[function(e,t,r){"use strict";var s=e("../internals/to-object"),a=e("../internals/to-absolute-index"),c=e("../internals/length-of-array-like");t.exports=function(e){for(var t=s(this),r=c(t),n=arguments.length,i=a(1<n?arguments[1]:void 0,r),n=2<n?arguments[2]:void 0,o=void 0===n?r:a(n,r);i<o;)t[i++]=e;return t}},{"../internals/length-of-array-like":219,"../internals/to-absolute-index":279,"../internals/to-object":285}],121:[function(e,t,r){"use strict";var n=e("../internals/array-iteration").forEach,e=e("../internals/array-method-is-strict")("forEach");t.exports=e?[].forEach:function(e){return n(this,e,1<arguments.length?arguments[1]:void 0)}},{"../internals/array-iteration":125,"../internals/array-method-is-strict":128}],122:[function(e,t,r){"use strict";var s=e("../internals/length-of-array-like");t.exports=function(e,t,r){for(var n=0,i=2<arguments.length?r:s(t),o=new e(i);n<i;)o[n]=t[n++];return o}},{"../internals/length-of-array-like":219}],123:[function(e,t,r){"use strict";var p=e("../internals/function-bind-context"),d=e("../internals/function-call"),h=e("../internals/to-object"),y=e("../internals/call-with-safe-iteration-closing"),m=e("../internals/is-array-iterator-method"),b=e("../internals/is-constructor"),g=e("../internals/length-of-array-like"),v=e("../internals/create-property"),j=e("../internals/get-iterator"),w=e("../internals/get-iterator-method"),x=Array;t.exports=function(e){var t,r,n,i,o,s,a=h(e),e=b(this),c=arguments.length,u=1<c?arguments[1]:void 0,l=void 0!==u,c=(l&&(u=p(u,2<c?arguments[2]:void 0)),w(a)),f=0;if(!c||this===x&&m(c))for(t=g(a),r=e?new this(t):x(t);f<t;f++)s=l?u(a[f],f):a[f],v(r,f,s);else for(o=(i=j(a,c)).next,r=e?new this:[];!(n=d(o,i)).done;f++)s=l?y(i,u,[n.value,f],!0):n.value,v(r,f,s);return r.length=f,r}},{"../internals/call-with-safe-iteration-closing":135,"../internals/create-property":147,"../internals/function-bind-context":175,"../internals/function-call":177,"../internals/get-iterator":184,"../internals/get-iterator-method":183,"../internals/is-array-iterator-method":200,"../internals/is-constructor":204,"../internals/length-of-array-like":219,"../internals/to-object":285}],124:[function(e,t,r){"use strict";function n(a){return function(e,t,r){var n,i=c(e),o=l(i),s=u(r,o);if(a&&t!=t){for(;s<o;)if((n=i[s++])!=n)return!0}else for(;s<o;s++)if((a||s in i)&&i[s]===t)return a||s||0;return!a&&-1}}var c=e("../internals/to-indexed-object"),u=e("../internals/to-absolute-index"),l=e("../internals/length-of-array-like");t.exports={includes:n(!0),indexOf:n(!1)}},{"../internals/length-of-array-like":219,"../internals/to-absolute-index":279,"../internals/to-indexed-object":282}],125:[function(e,t,r){"use strict";function n(p){var d=1===p,h=2===p,y=3===p,m=4===p,b=6===p,g=7===p,v=5===p||b;return function(e,t,r,n){for(var i,o,s=x(e),a=w(s),c=S(a),u=j(t,r),l=0,t=n||k,f=d?t(e,c):h||g?t(e,0):void 0;l<c;l++)if((v||l in a)&&(o=u(i=a[l],l,s),p))if(d)f[l]=o;else if(o)switch(p){case 3:return!0;case 5:return i;case 6:return l;case 2:_(f,i)}else switch(p){case 4:return!1;case 7:_(f,i)}return b?-1:y||m?m:f}}var j=e("../internals/function-bind-context"),i=e("../internals/function-uncurry-this"),w=e("../internals/indexed-object"),x=e("../internals/to-object"),S=e("../internals/length-of-array-like"),k=e("../internals/array-species-create"),_=i([].push);t.exports={forEach:n(0),map:n(1),filter:n(2),some:n(3),every:n(4),find:n(5),findIndex:n(6),filterReject:n(7)}},{"../internals/array-species-create":134,"../internals/function-bind-context":175,"../internals/function-uncurry-this":181,"../internals/indexed-object":195,"../internals/length-of-array-like":219,"../internals/to-object":285}],126:[function(e,t,r){"use strict";var i=e("../internals/function-apply"),o=e("../internals/to-indexed-object"),s=e("../internals/to-integer-or-infinity"),a=e("../internals/length-of-array-like"),e=e("../internals/array-method-is-strict"),c=Math.min,u=[].lastIndexOf,l=!!u&&1/[1].lastIndexOf(1,-0)<0,e=e("lastIndexOf");t.exports=l||!e?function(e){if(l)return i(u,this,arguments)||0;var t=o(this),r=a(t),n=r-1;for((n=1<arguments.length?c(n,s(arguments[1])):n)<0&&(n=r+n);0<=n;n--)if(n in t&&t[n]===e)return n||0;return-1}:u},{"../internals/array-method-is-strict":128,"../internals/function-apply":174,"../internals/length-of-array-like":219,"../internals/to-indexed-object":282,"../internals/to-integer-or-infinity":283}],127:[function(e,t,r){"use strict";var n=e("../internals/fails"),i=e("../internals/well-known-symbol"),o=e("../internals/engine-v8-version"),s=i("species");t.exports=function(t){return 51<=o||!n(function(){var e=[];return(e.constructor={})[s]=function(){return{foo:1}},1!==e[t](Boolean).foo})}},{"../internals/engine-v8-version":167,"../internals/fails":171,"../internals/well-known-symbol":306}],128:[function(e,t,r){"use strict";var n=e("../internals/fails");t.exports=function(e,t){var r=[][e];return!!r&&n(function(){r.call(null,t||function(){return 1},1)})}},{"../internals/fails":171}],129:[function(e,t,r){"use strict";function n(u){return function(e,t,r,n){var i=f(e),o=p(i),s=d(i),a=(l(t),u?s-1:0),c=u?-1:1;if(r<2)for(;;){if(a in o){n=o[a],a+=c;break}if(a+=c,u?a<0:s<=a)throw new h("Reduce of empty array with no initial value")}for(;u?0<=a:a<s;a+=c)a in o&&(n=t(n,o[a],a,i));return n}}var l=e("../internals/a-callable"),f=e("../internals/to-object"),p=e("../internals/indexed-object"),d=e("../internals/length-of-array-like"),h=TypeError;t.exports={left:n(!1),right:n(!0)}},{"../internals/a-callable":108,"../internals/indexed-object":195,"../internals/length-of-array-like":219,"../internals/to-object":285}],130:[function(e,t,r){"use strict";var n=e("../internals/descriptors"),i=e("../internals/is-array"),o=TypeError,s=Object.getOwnPropertyDescriptor,e=n&&!function(){if(void 0!==this)return 1;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();t.exports=e?function(e,t){if(i(e)&&!s(e,"length").writable)throw new o("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},{"../internals/descriptors":153,"../internals/is-array":201}],131:[function(e,t,r){"use strict";e=e("../internals/function-uncurry-this");t.exports=e([].slice)},{"../internals/function-uncurry-this":181}],132:[function(e,t,r){"use strict";function d(e,t){var r=e.length;if(r<8)for(var n,i,o=1;o<r;){for(n=e[i=o];i&&0<t(e[i-1],n);)e[i]=e[--i];i!==o++&&(e[i]=n)}else for(var s=y(r/2),a=d(h(e,0,s),t),c=d(h(e,s),t),u=a.length,l=c.length,f=0,p=0;f<u||p<l;)e[f+p]=f<u&&p<l?t(a[f],c[p])<=0?a[f++]:c[p++]:f<u?a[f++]:c[p++];return e}var h=e("../internals/array-slice"),y=Math.floor;t.exports=d},{"../internals/array-slice":131}],133:[function(e,t,r){"use strict";var n=e("../internals/is-array"),i=e("../internals/is-constructor"),o=e("../internals/is-object"),s=e("../internals/well-known-symbol")("species"),a=Array;t.exports=function(e){var t;return void 0===(t=n(e)&&(t=e.constructor,i(t)&&(t===a||n(t.prototype))||o(t)&&null===(t=t[s]))?void 0:t)?a:t}},{"../internals/is-array":201,"../internals/is-constructor":204,"../internals/is-object":208,"../internals/well-known-symbol":306}],134:[function(e,t,r){"use strict";var n=e("../internals/array-species-constructor");t.exports=function(e,t){return new(n(e))(0===t?0:t)}},{"../internals/array-species-constructor":133}],135:[function(e,t,r){"use strict";var i=e("../internals/an-object"),o=e("../internals/iterator-close");t.exports=function(t,e,r,n){try{return n?e(i(r)[0],r[1]):e(r)}catch(e){o(t,"throw",e)}}},{"../internals/an-object":114,"../internals/iterator-close":214}],136:[function(e,t,r){"use strict";var i=e("../internals/well-known-symbol")("iterator"),o=!1;try{var n=0,s={next:function(){return{done:!!n++}},return:function(){o=!0}};s[i]=function(){return this},Array.from(s,function(){throw 2})}catch(e){}t.exports=function(e,t){try{if(!t&&!o)return!1}catch(e){return!1}var r=!1;try{var n={};n[i]=function(){return{next:function(){return{done:r=!0}}}},e(n)}catch(e){}return r}},{"../internals/well-known-symbol":306}],137:[function(e,t,r){"use strict";var e=e("../internals/function-uncurry-this"),n=e({}.toString),i=e("".slice);t.exports=function(e){return i(n(e),8,-1)}},{"../internals/function-uncurry-this":181}],138:[function(e,t,r){"use strict";var n=e("../internals/to-string-tag-support"),i=e("../internals/is-callable"),o=e("../internals/classof-raw"),s=e("../internals/well-known-symbol")("toStringTag"),a=Object,c="Arguments"===o(function(){return arguments}());t.exports=n?o:function(e){var t;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(t=function(e,t){try{return e[t]}catch(e){}}(e=a(e),s))?t:c?o(e):"Object"===(t=o(e))&&i(e.callee)?"Arguments":t}},{"../internals/classof-raw":137,"../internals/is-callable":203,"../internals/to-string-tag-support":290,"../internals/well-known-symbol":306}],139:[function(e,t,r){"use strict";var u=e("../internals/object-create"),l=e("../internals/define-built-in-accessor"),f=e("../internals/define-built-ins"),p=e("../internals/function-bind-context"),d=e("../internals/an-instance"),h=e("../internals/is-null-or-undefined"),y=e("../internals/iterate"),s=e("../internals/iterator-define"),a=e("../internals/create-iter-result-object"),c=e("../internals/set-species"),m=e("../internals/descriptors"),b=e("../internals/internal-metadata").fastKey,e=e("../internals/internal-state"),g=e.set,v=e.getterFor;t.exports={getConstructor:function(e,r,n,i){function o(e,t,r){var n,i=c(e),o=s(e,t);return o?o.value=r:(i.last=o={index:n=b(t,!0),key:t,value:r,previous:t=i.last,next:void 0,removed:!1},i.first||(i.first=o),t&&(t.next=o),m?i.size++:e.size++,"F"!==n&&(i.index[n]=o)),e}function s(e,t){var r,e=c(e),n=b(t);if("F"!==n)return e.index[n];for(r=e.first;r;r=r.next)if(r.key===t)return r}var e=e(function(e,t){d(e,a),g(e,{type:r,index:u(null),first:void 0,last:void 0,size:0}),m||(e.size=0),h(t)||y(t,e[i],{that:e,AS_ENTRIES:n})}),a=e.prototype,c=v(r);return f(a,{clear:function(){for(var e=c(this),t=e.first;t;)t.removed=!0,t.previous&&(t.previous=t.previous.next=void 0),t=t.next;e.first=e.last=void 0,e.index=u(null),m?e.size=0:this.size=0},delete:function(e){var t,r,n=c(this),e=s(this,e);return e&&(t=e.next,r=e.previous,delete n.index[e.index],e.removed=!0,r&&(r.next=t),t&&(t.previous=r),n.first===e&&(n.first=t),n.last===e&&(n.last=r),m?n.size--:this.size--),!!e},forEach:function(e){for(var t,r=c(this),n=p(e,1<arguments.length?arguments[1]:void 0);t=t?t.next:r.first;)for(n(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!s(this,e)}}),f(a,n?{get:function(e){e=s(this,e);return e&&e.value},set:function(e,t){return o(this,0===e?0:e,t)}}:{add:function(e){return o(this,e=0===e?0:e,e)}}),m&&l(a,"size",{configurable:!0,get:function(){return c(this).size}}),e},setStrong:function(e,t,r){var n=t+" Iterator",i=v(t),o=v(n);s(e,t,function(e,t){g(this,{type:n,target:e,state:i(e),kind:t,last:void 0})},function(){for(var e=o(this),t=e.kind,r=e.last;r&&r.removed;)r=r.previous;return e.target&&(e.last=r=r?r.next:e.state.first)?a("keys"===t?r.key:"values"===t?r.value:[r.key,r.value],!1):(e.target=void 0,a(void 0,!0))},r?"entries":"values",!r,!0),c(t)}}},{"../internals/an-instance":113,"../internals/create-iter-result-object":144,"../internals/define-built-in-accessor":148,"../internals/define-built-ins":150,"../internals/descriptors":153,"../internals/function-bind-context":175,"../internals/internal-metadata":198,"../internals/internal-state":199,"../internals/is-null-or-undefined":207,"../internals/iterate":213,"../internals/iterator-define":216,"../internals/object-create":229,"../internals/set-species":265}],140:[function(e,t,r){"use strict";var m=e("../internals/export"),b=e("../internals/global"),g=e("../internals/function-uncurry-this"),v=e("../internals/is-forced"),j=e("../internals/define-built-in"),w=e("../internals/internal-metadata"),x=e("../internals/iterate"),S=e("../internals/an-instance"),k=e("../internals/is-callable"),_=e("../internals/is-null-or-undefined"),T=e("../internals/is-object"),E=e("../internals/fails"),O=e("../internals/check-correctness-of-iteration"),A=e("../internals/set-to-string-tag"),I=e("../internals/inherit-if-required");t.exports=function(e,t,r){function n(e){var r=g(d[e]);j(d,e,"add"===e?function(e){return r(this,0===e?0:e),this}:"delete"===e?function(e){return!(l&&!T(e))&&r(this,0===e?0:e)}:"get"===e?function(e){return l&&!T(e)?void 0:r(this,0===e?0:e)}:"has"===e?function(e){return!(l&&!T(e))&&r(this,0===e?0:e)}:function(e,t){return r(this,0===e?0:e,t),this})}var i,o,s,a,c,u=-1!==e.indexOf("Map"),l=-1!==e.indexOf("Weak"),f=u?"set":"add",p=b[e],d=p&&p.prototype,h=p,y={};return v(e,!k(p)||!(l||d.forEach&&!E(function(){(new p).entries().next()})))?(h=r.getConstructor(t,e,u,f),w.enable()):v(e,!0)&&(o=(i=new h)[f](l?{}:-0,1)!==i,s=E(function(){i.has(1)}),a=O(function(e){new p(e)}),c=!l&&E(function(){for(var e=new p,t=5;t--;)e[f](t,t);return!e.has(-0)}),a||(((h=t(function(e,t){S(e,d);e=I(new p,e,h);return _(t)||x(t,e[f],{that:e,AS_ENTRIES:u}),e})).prototype=d).constructor=h),(s||c)&&(n("delete"),n("has"),u)&&n("get"),(c||o)&&n(f),l)&&d.clear&&delete d.clear,m({global:!0,constructor:!0,forced:(y[e]=h)!==p},y),A(h,e),l||r.setStrong(h,e,u),h}},{"../internals/an-instance":113,"../internals/check-correctness-of-iteration":136,"../internals/define-built-in":149,"../internals/export":170,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/global":188,"../internals/inherit-if-required":196,"../internals/internal-metadata":198,"../internals/is-callable":203,"../internals/is-forced":205,"../internals/is-null-or-undefined":207,"../internals/is-object":208,"../internals/iterate":213,"../internals/set-to-string-tag":266}],141:[function(e,t,r){"use strict";var c=e("../internals/has-own-property"),u=e("../internals/own-keys"),l=e("../internals/object-get-own-property-descriptor"),f=e("../internals/object-define-property");t.exports=function(e,t,r){for(var n=u(t),i=f.f,o=l.f,s=0;s<n.length;s++){var a=n[s];c(e,a)||r&&c(r,a)||i(e,a,o(t,a))}}},{"../internals/has-own-property":189,"../internals/object-define-property":231,"../internals/object-get-own-property-descriptor":232,"../internals/own-keys":246}],142:[function(e,t,r){"use strict";var n=e("../internals/well-known-symbol")("match");t.exports=function(t){var r=/./;try{"/./"[t](r)}catch(e){try{return r[n]=!1,"/./"[t](r)}catch(e){}}return!1}},{"../internals/well-known-symbol":306}],143:[function(e,t,r){"use strict";e=e("../internals/fails");t.exports=!e(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})},{"../internals/fails":171}],144:[function(e,t,r){"use strict";t.exports=function(e,t){return{value:e,done:t}}},{}],145:[function(e,t,r){"use strict";var n=e("../internals/descriptors"),i=e("../internals/object-define-property"),o=e("../internals/create-property-descriptor");t.exports=n?function(e,t,r){return i.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},{"../internals/create-property-descriptor":146,"../internals/descriptors":153,"../internals/object-define-property":231}],146:[function(e,t,r){"use strict";t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],147:[function(e,t,r){"use strict";var n=e("../internals/to-property-key"),i=e("../internals/object-define-property"),o=e("../internals/create-property-descriptor");t.exports=function(e,t,r){t=n(t);t in e?i.f(e,t,o(0,r)):e[t]=r}},{"../internals/create-property-descriptor":146,"../internals/object-define-property":231,"../internals/to-property-key":289}],148:[function(e,t,r){"use strict";var n=e("../internals/make-built-in"),i=e("../internals/object-define-property");t.exports=function(e,t,r){return r.get&&n(r.get,t,{getter:!0}),r.set&&n(r.set,t,{setter:!0}),i.f(e,t,r)}},{"../internals/make-built-in":220,"../internals/object-define-property":231}],149:[function(e,t,r){"use strict";var s=e("../internals/is-callable"),a=e("../internals/object-define-property"),c=e("../internals/make-built-in"),u=e("../internals/define-global-property");t.exports=function(e,t,r,n){var i=(n=n||{}).enumerable,o=void 0!==n.name?n.name:t;if(s(r)&&c(r,o,n),n.global)i?e[t]=r:u(t,r);else{try{n.unsafe?e[t]&&(i=!0):delete e[t]}catch(e){}i?e[t]=r:a.f(e,t,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return e}},{"../internals/define-global-property":151,"../internals/is-callable":203,"../internals/make-built-in":220,"../internals/object-define-property":231}],150:[function(e,t,r){"use strict";var i=e("../internals/define-built-in");t.exports=function(e,t,r){for(var n in t)i(e,n,t[n],r);return e}},{"../internals/define-built-in":149}],151:[function(e,t,r){"use strict";var n=e("../internals/global"),i=Object.defineProperty;t.exports=function(t,r){try{i(n,t,{value:r,configurable:!0,writable:!0})}catch(e){n[t]=r}return r}},{"../internals/global":188}],152:[function(e,t,r){"use strict";var n=e("../internals/try-to-string"),i=TypeError;t.exports=function(e,t){if(!delete e[t])throw new i("Cannot delete property "+n(t)+" of "+n(e))}},{"../internals/try-to-string":293}],153:[function(e,t,r){"use strict";e=e("../internals/fails");t.exports=!e(function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]})},{"../internals/fails":171}],154:[function(e,t,r){"use strict";var n=e("../internals/global"),e=e("../internals/is-object"),i=n.document,o=e(i)&&e(i.createElement);t.exports=function(e){return o?i.createElement(e):{}}},{"../internals/global":188,"../internals/is-object":208}],155:[function(e,t,r){"use strict";var n=TypeError;t.exports=function(e){if(9007199254740991<e)throw n("Maximum allowed index exceeded");return e}},{}],156:[function(e,t,r){"use strict";t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},{}],157:[function(e,t,r){"use strict";e=e("../internals/document-create-element")("span").classList,e=e&&e.constructor&&e.constructor.prototype;t.exports=e===Object.prototype?void 0:e},{"../internals/document-create-element":154}],158:[function(e,t,r){"use strict";e=e("../internals/engine-user-agent").match(/firefox\/(\d+)/i);t.exports=!!e&&+e[1]},{"../internals/engine-user-agent":166}],159:[function(e,t,r){"use strict";var n=e("../internals/engine-is-deno"),e=e("../internals/engine-is-node");t.exports=!n&&!e&&"object"==typeof window&&"object"==typeof document},{"../internals/engine-is-deno":160,"../internals/engine-is-node":164}],160:[function(e,t,r){"use strict";t.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version},{}],161:[function(e,t,r){"use strict";e=e("../internals/engine-user-agent");t.exports=/MSIE|Trident/.test(e)},{"../internals/engine-user-agent":166}],162:[function(e,t,r){"use strict";e=e("../internals/engine-user-agent");t.exports=/ipad|iphone|ipod/i.test(e)&&"undefined"!=typeof Pebble},{"../internals/engine-user-agent":166}],163:[function(e,t,r){"use strict";e=e("../internals/engine-user-agent");t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(e)},{"../internals/engine-user-agent":166}],164:[function(e,t,r){"use strict";var n=e("../internals/global"),e=e("../internals/classof-raw");t.exports="process"===e(n.process)},{"../internals/classof-raw":137,"../internals/global":188}],165:[function(e,t,r){"use strict";e=e("../internals/engine-user-agent");t.exports=/web0s(?!.*chrome)/i.test(e)},{"../internals/engine-user-agent":166}],166:[function(e,t,r){"use strict";t.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},{}],167:[function(e,t,r){"use strict";var n,i,o=e("../internals/global"),e=e("../internals/engine-user-agent"),s=o.process,o=o.Deno,s=s&&s.versions||o&&o.version,o=s&&s.v8;!(i=o?0<(n=o.split("."))[0]&&n[0]<4?1:+(n[0]+n[1]):i)&&e&&(!(n=e.match(/Edge\/(\d+)/))||74<=n[1])&&(n=e.match(/Chrome\/(\d+)/))&&(i=+n[1]),t.exports=i},{"../internals/engine-user-agent":166,"../internals/global":188}],168:[function(e,t,r){"use strict";e=e("../internals/engine-user-agent").match(/AppleWebKit\/(\d+)\./);t.exports=!!e&&+e[1]},{"../internals/engine-user-agent":166}],169:[function(e,t,r){"use strict";t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},{}],170:[function(e,t,r){"use strict";var u=e("../internals/global"),l=e("../internals/object-get-own-property-descriptor").f,f=e("../internals/create-non-enumerable-property"),p=e("../internals/define-built-in"),d=e("../internals/define-global-property"),h=e("../internals/copy-constructor-properties"),y=e("../internals/is-forced");t.exports=function(e,t){var r,n,i,o=e.target,s=e.global,a=e.stat,c=s?u:a?u[o]||d(o,{}):(u[o]||{}).prototype;if(c)for(r in t){if(n=t[r],i=e.dontCallGetSet?(i=l(c,r))&&i.value:c[r],!y(s?r:o+(a?".":"#")+r,e.forced)&&void 0!==i){if(typeof n==typeof i)continue;h(n,i)}(e.sham||i&&i.sham)&&f(n,"sham",!0),p(c,r,n,e)}}},{"../internals/copy-constructor-properties":141,"../internals/create-non-enumerable-property":145,"../internals/define-built-in":149,"../internals/define-global-property":151,"../internals/global":188,"../internals/is-forced":205,"../internals/object-get-own-property-descriptor":232}],171:[function(e,t,r){"use strict";t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],172:[function(e,t,r){"use strict";e("../modules/es.regexp.exec");var c=e("../internals/function-uncurry-this-clause"),u=e("../internals/define-built-in"),l=e("../internals/regexp-exec"),f=e("../internals/fails"),p=e("../internals/well-known-symbol"),d=e("../internals/create-non-enumerable-property"),h=p("species"),y=RegExp.prototype;t.exports=function(r,e,t,n){var s,i=p(r),a=!f(function(){var e={};return e[i]=function(){return 7},7!==""[r](e)}),o=a&&!f(function(){var e=!1,t=/a/;return"split"===r&&((t={constructor:{}}).constructor[h]=function(){return t},t.flags="",t[i]=/./[i]),t.exec=function(){return e=!0,null},t[i](""),!e});a&&o&&!t||(s=c(/./[i]),o=e(i,""[r],function(e,t,r,n,i){var e=c(e),o=t.exec;return o===l||o===y.exec?a&&!i?{done:!0,value:s(t,r,n)}:{done:!0,value:e(r,t,n)}:{done:!1}}),u(String.prototype,r,o[0]),u(y,i,o[1])),n&&d(y[i],"sham",!0)}},{"../internals/create-non-enumerable-property":145,"../internals/define-built-in":149,"../internals/fails":171,"../internals/function-uncurry-this-clause":180,"../internals/regexp-exec":256,"../internals/well-known-symbol":306,"../modules/es.regexp.exec":338}],173:[function(e,t,r){"use strict";e=e("../internals/fails");t.exports=!e(function(){return Object.isExtensible(Object.preventExtensions({}))})},{"../internals/fails":171}],174:[function(e,t,r){"use strict";var e=e("../internals/function-bind-native"),n=Function.prototype,i=n.apply,o=n.call;t.exports="object"==typeof Reflect&&Reflect.apply||(e?o.bind(i):function(){return o.apply(i,arguments)})},{"../internals/function-bind-native":176}],175:[function(e,t,r){"use strict";var n=e("../internals/function-uncurry-this-clause"),i=e("../internals/a-callable"),o=e("../internals/function-bind-native"),s=n(n.bind);t.exports=function(e,t){return i(e),void 0===t?e:o?s(e,t):function(){return e.apply(t,arguments)}}},{"../internals/a-callable":108,"../internals/function-bind-native":176,"../internals/function-uncurry-this-clause":180}],176:[function(e,t,r){"use strict";e=e("../internals/fails");t.exports=!e(function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})},{"../internals/fails":171}],177:[function(e,t,r){"use strict";var e=e("../internals/function-bind-native"),n=Function.prototype.call;t.exports=e?n.bind(n):function(){return n.apply(n,arguments)}},{"../internals/function-bind-native":176}],178:[function(e,t,r){"use strict";var n=e("../internals/descriptors"),e=e("../internals/has-own-property"),i=Function.prototype,o=n&&Object.getOwnPropertyDescriptor,e=e(i,"name"),s=e&&"something"===function(){}.name,n=e&&(!n||o(i,"name").configurable);t.exports={EXISTS:e,PROPER:s,CONFIGURABLE:n}},{"../internals/descriptors":153,"../internals/has-own-property":189}],179:[function(e,t,r){"use strict";var n=e("../internals/function-uncurry-this"),i=e("../internals/a-callable");t.exports=function(e,t,r){try{return n(i(Object.getOwnPropertyDescriptor(e,t)[r]))}catch(e){}}},{"../internals/a-callable":108,"../internals/function-uncurry-this":181}],180:[function(e,t,r){"use strict";var n=e("../internals/classof-raw"),i=e("../internals/function-uncurry-this");t.exports=function(e){if("Function"===n(e))return i(e)}},{"../internals/classof-raw":137,"../internals/function-uncurry-this":181}],181:[function(e,t,r){"use strict";var e=e("../internals/function-bind-native"),n=Function.prototype,i=n.call,n=e&&n.bind.bind(i,i);t.exports=e?n:function(e){return function(){return i.apply(e,arguments)}}},{"../internals/function-bind-native":176}],182:[function(e,t,r){"use strict";var n=e("../internals/global"),i=e("../internals/is-callable");t.exports=function(e,t){return arguments.length<2?(r=n[e],i(r)?r:void 0):n[e]&&n[e][t];var r}},{"../internals/global":188,"../internals/is-callable":203}],183:[function(e,t,r){"use strict";var n=e("../internals/classof"),i=e("../internals/get-method"),o=e("../internals/is-null-or-undefined"),s=e("../internals/iterators"),a=e("../internals/well-known-symbol")("iterator");t.exports=function(e){if(!o(e))return i(e,a)||i(e,"@@iterator")||s[n(e)]}},{"../internals/classof":138,"../internals/get-method":186,"../internals/is-null-or-undefined":207,"../internals/iterators":218,"../internals/well-known-symbol":306}],184:[function(e,t,r){"use strict";var n=e("../internals/function-call"),i=e("../internals/a-callable"),o=e("../internals/an-object"),s=e("../internals/try-to-string"),a=e("../internals/get-iterator-method"),c=TypeError;t.exports=function(e,t){t=arguments.length<2?a(e):t;if(i(t))return o(n(t,e));throw new c(s(e)+" is not iterable")}},{"../internals/a-callable":108,"../internals/an-object":114,"../internals/function-call":177,"../internals/get-iterator-method":183,"../internals/try-to-string":293}],185:[function(e,t,r){"use strict";var n=e("../internals/function-uncurry-this"),a=e("../internals/is-array"),c=e("../internals/is-callable"),u=e("../internals/classof-raw"),l=e("../internals/to-string"),f=n([].push);t.exports=function(e){if(c(e))return e;if(a(e)){for(var t=e.length,n=[],r=0;r<t;r++){var i=e[r];"string"==typeof i?f(n,i):"number"!=typeof i&&"Number"!==u(i)&&"String"!==u(i)||f(n,l(i))}var o=n.length,s=!0;return function(e,t){if(s)return s=!1,t;if(a(this))return t;for(var r=0;r<o;r++)if(n[r]===e)return t}}}},{"../internals/classof-raw":137,"../internals/function-uncurry-this":181,"../internals/is-array":201,"../internals/is-callable":203,"../internals/to-string":291}],186:[function(e,t,r){"use strict";var n=e("../internals/a-callable"),i=e("../internals/is-null-or-undefined");t.exports=function(e,t){e=e[t];return i(e)?void 0:n(e)}},{"../internals/a-callable":108,"../internals/is-null-or-undefined":207}],187:[function(e,t,r){"use strict";var n=e("../internals/function-uncurry-this"),i=e("../internals/to-object"),p=Math.floor,d=n("".charAt),h=n("".replace),y=n("".slice),m=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,b=/\$([$&'`]|\d{1,2})/g;t.exports=function(o,s,a,c,u,e){var l=a+o.length,f=c.length,t=b;return void 0!==u&&(u=i(u),t=m),h(e,t,function(e,t){var r;switch(d(t,0)){case"$":return"$";case"&":return o;case"`":return y(s,0,a);case"'":return y(s,l);case"<":r=u[y(t,1,-1)];break;default:var n,i=+t;if(0==i)return e;if(f<i)return 0!==(n=p(i/10))&&n<=f?void 0===c[n-1]?d(t,1):c[n-1]+d(t,1):e;r=c[i-1]}return void 0===r?"":r})}},{"../internals/function-uncurry-this":181,"../internals/to-object":285}],188:[function(e,r,t){!function(t){!function(){"use strict";function e(e){return e&&e.Math===Math&&e}r.exports=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof t&&t)||e("object"==typeof this&&this)||function(){return this}()||Function("return this")()}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],189:[function(e,t,r){"use strict";var n=e("../internals/function-uncurry-this"),i=e("../internals/to-object"),o=n({}.hasOwnProperty);t.exports=Object.hasOwn||function(e,t){return o(i(e),t)}},{"../internals/function-uncurry-this":181,"../internals/to-object":285}],190:[function(e,t,r){"use strict";t.exports={}},{}],191:[function(e,t,r){"use strict";t.exports=function(e,t){try{1===arguments.length?console.error(e):console.error(e,t)}catch(e){}}},{}],192:[function(e,t,r){"use strict";e=e("../internals/get-built-in");t.exports=e("document","documentElement")},{"../internals/get-built-in":182}],193:[function(e,t,r){"use strict";var n=e("../internals/descriptors"),i=e("../internals/fails"),o=e("../internals/document-create-element");t.exports=!n&&!i(function(){return 7!==Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a})},{"../internals/descriptors":153,"../internals/document-create-element":154,"../internals/fails":171}],194:[function(e,t,r){"use strict";var p=Array,d=Math.abs,h=Math.pow,y=Math.floor,m=Math.log,b=Math.LN2;t.exports={pack:function(e,t,r){var n,i,o,s=p(r),a=8*r-t-1,r=(1<<a)-1,c=r>>1,u=23===t?h(2,-24)-h(2,-77):0,l=e<0||0===e&&1/e<0?1:0,f=0;for((e=d(e))!=e||e===1/0?(i=e!=e?1:0,n=r):(n=y(m(e)/b),e*(o=h(2,-n))<1&&(n--,o*=2),2<=(e+=1<=n+c?u/o:u*h(2,1-c))*o&&(n++,o/=2),r<=n+c?(i=0,n=r):1<=n+c?(i=(e*o-1)*h(2,t),n+=c):(i=e*h(2,c-1)*h(2,t),n=0));8<=t;)s[f++]=255&i,i/=256,t-=8;for(n=n<<t|i,a+=t;0<a;)s[f++]=255&n,n/=256,a-=8;return s[--f]|=128*l,s},unpack:function(e,t){var r,n=e.length,i=8*n-t-1,o=(1<<i)-1,s=o>>1,a=i-7,c=n-1,i=e[c--],u=127&i;for(i>>=7;0<a;)u=256*u+e[c--],a-=8;for(r=u&(1<<-a)-1,u>>=-a,a+=t;0<a;)r=256*r+e[c--],a-=8;if(0===u)u=1-s;else{if(u===o)return r?NaN:i?-1/0:1/0;r+=h(2,t),u-=s}return(i?-1:1)*r*h(2,u-t)}}},{}],195:[function(e,t,r){"use strict";var n=e("../internals/function-uncurry-this"),i=e("../internals/fails"),o=e("../internals/classof-raw"),s=Object,a=n("".split);t.exports=i(function(){return!s("z").propertyIsEnumerable(0)})?function(e){return"String"===o(e)?a(e,""):s(e)}:s},{"../internals/classof-raw":137,"../internals/fails":171,"../internals/function-uncurry-this":181}],196:[function(e,t,r){"use strict";var n=e("../internals/is-callable"),i=e("../internals/is-object"),o=e("../internals/object-set-prototype-of");t.exports=function(e,t,r){return o&&n(t=t.constructor)&&t!==r&&i(t=t.prototype)&&t!==r.prototype&&o(e,t),e}},{"../internals/is-callable":203,"../internals/is-object":208,"../internals/object-set-prototype-of":242}],197:[function(e,t,r){"use strict";var n=e("../internals/function-uncurry-this"),i=e("../internals/is-callable"),e=e("../internals/shared-store"),o=n(Function.toString);i(e.inspectSource)||(e.inspectSource=function(e){return o(e)}),t.exports=e.inspectSource},{"../internals/function-uncurry-this":181,"../internals/is-callable":203,"../internals/shared-store":268}],198:[function(e,t,r){"use strict";function n(e){u(e,m,{value:{objectID:"O"+b++,weakData:{}}})}var s=e("../internals/export"),a=e("../internals/function-uncurry-this"),i=e("../internals/hidden-keys"),o=e("../internals/is-object"),c=e("../internals/has-own-property"),u=e("../internals/object-define-property").f,l=e("../internals/object-get-own-property-names"),f=e("../internals/object-get-own-property-names-external"),p=e("../internals/object-is-extensible"),d=e("../internals/uid"),h=e("../internals/freezing"),y=!1,m=d("meta"),b=0,g=t.exports={enable:function(){g.enable=function(){},y=!0;var i=l.f,o=a([].splice),e={};e[m]=1,i(e).length&&(l.f=function(e){for(var t=i(e),r=0,n=t.length;r<n;r++)if(t[r]===m){o(t,r,1);break}return t},s({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:f.f}))},fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!c(e,m)){if(!p(e))return"F";if(!t)return"E";n(e)}return e[m].objectID},getWeakData:function(e,t){if(!c(e,m)){if(!p(e))return!0;if(!t)return!1;n(e)}return e[m].weakData},onFreeze:function(e){return h&&y&&p(e)&&!c(e,m)&&n(e),e}};i[m]=!0},{"../internals/export":170,"../internals/freezing":173,"../internals/function-uncurry-this":181,"../internals/has-own-property":189,"../internals/hidden-keys":190,"../internals/is-object":208,"../internals/object-define-property":231,"../internals/object-get-own-property-names":234,"../internals/object-get-own-property-names-external":233,"../internals/object-is-extensible":237,"../internals/uid":299}],199:[function(e,t,r){"use strict";var n,i,o,s,a=e("../internals/weak-map-basic-detection"),c=e("../internals/global"),u=e("../internals/is-object"),l=e("../internals/create-non-enumerable-property"),f=e("../internals/has-own-property"),p=e("../internals/shared-store"),d=e("../internals/shared-key"),e=e("../internals/hidden-keys"),h="Object already initialized",y=c.TypeError,c=c.WeakMap,m=a||p.state?((o=p.state||(p.state=new c)).get=o.get,o.has=o.has,o.set=o.set,n=function(e,t){if(o.has(e))throw new y(h);return t.facade=e,o.set(e,t),t},i=function(e){return o.get(e)||{}},function(e){return o.has(e)}):(e[s=d("state")]=!0,n=function(e,t){if(f(e,s))throw new y(h);return t.facade=e,l(e,s,t),t},i=function(e){return f(e,s)?e[s]:{}},function(e){return f(e,s)});t.exports={set:n,get:i,has:m,enforce:function(e){return m(e)?i(e):n(e,{})},getterFor:function(t){return function(e){if(u(e)&&(e=i(e)).type===t)return e;throw new y("Incompatible receiver, "+t+" required")}}}},{"../internals/create-non-enumerable-property":145,"../internals/global":188,"../internals/has-own-property":189,"../internals/hidden-keys":190,"../internals/is-object":208,"../internals/shared-key":267,"../internals/shared-store":268,"../internals/weak-map-basic-detection":303}],200:[function(e,t,r){"use strict";var n=e("../internals/well-known-symbol"),i=e("../internals/iterators"),o=n("iterator"),s=Array.prototype;t.exports=function(e){return void 0!==e&&(i.Array===e||s[o]===e)}},{"../internals/iterators":218,"../internals/well-known-symbol":306}],201:[function(e,t,r){"use strict";var n=e("../internals/classof-raw");t.exports=Array.isArray||function(e){return"Array"===n(e)}},{"../internals/classof-raw":137}],202:[function(e,t,r){"use strict";var n=e("../internals/classof");t.exports=function(e){e=n(e);return"BigInt64Array"===e||"BigUint64Array"===e}},{"../internals/classof":138}],203:[function(e,t,r){"use strict";var n="object"==typeof document&&document.all;t.exports=void 0===n&&void 0!==n?function(e){return"function"==typeof e||e===n}:function(e){return"function"==typeof e}},{}],204:[function(e,t,r){"use strict";function n(){}function i(e){if(!c(e))return!1;try{return d(n,p,e),!0}catch(e){return!1}}function o(e){if(!c(e))return!1;switch(u(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return m||!!y(h,f(e))}catch(e){return!0}}var s=e("../internals/function-uncurry-this"),a=e("../internals/fails"),c=e("../internals/is-callable"),u=e("../internals/classof"),l=e("../internals/get-built-in"),f=e("../internals/inspect-source"),p=[],d=l("Reflect","construct"),h=/^\s*(?:class|function)\b/,y=s(h.exec),m=!h.test(n);o.sham=!0,t.exports=!d||a(function(){var e;return i(i.call)||!i(Object)||!i(function(){e=!0})||e})?o:i},{"../internals/classof":138,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/get-built-in":182,"../internals/inspect-source":197,"../internals/is-callable":203}],205:[function(e,t,r){"use strict";function n(e,t){return(e=c[a(e)])===l||e!==u&&(o(t)?i(t):!!t)}var i=e("../internals/fails"),o=e("../internals/is-callable"),s=/#|\.prototype\./,a=n.normalize=function(e){return String(e).replace(s,".").toLowerCase()},c=n.data={},u=n.NATIVE="N",l=n.POLYFILL="P";t.exports=n},{"../internals/fails":171,"../internals/is-callable":203}],206:[function(e,t,r){"use strict";var n=e("../internals/is-object"),i=Math.floor;t.exports=Number.isInteger||function(e){return!n(e)&&isFinite(e)&&i(e)===e}},{"../internals/is-object":208}],207:[function(e,t,r){"use strict";t.exports=function(e){return null==e}},{}],208:[function(e,t,r){"use strict";var n=e("../internals/is-callable");t.exports=function(e){return"object"==typeof e?null!==e:n(e)}},{"../internals/is-callable":203}],209:[function(e,t,r){"use strict";var n=e("../internals/is-object");t.exports=function(e){return n(e)||null===e}},{"../internals/is-object":208}],210:[function(e,t,r){"use strict";t.exports=!1},{}],211:[function(e,t,r){"use strict";var n=e("../internals/is-object"),i=e("../internals/classof-raw"),o=e("../internals/well-known-symbol")("match");t.exports=function(e){var t;return n(e)&&(void 0!==(t=e[o])?!!t:"RegExp"===i(e))}},{"../internals/classof-raw":137,"../internals/is-object":208,"../internals/well-known-symbol":306}],212:[function(e,t,r){"use strict";var n=e("../internals/get-built-in"),i=e("../internals/is-callable"),o=e("../internals/object-is-prototype-of"),e=e("../internals/use-symbol-as-uid"),s=Object;t.exports=e?function(e){return"symbol"==typeof e}:function(e){var t=n("Symbol");return i(t)&&o(t.prototype,s(e))}},{"../internals/get-built-in":182,"../internals/is-callable":203,"../internals/object-is-prototype-of":238,"../internals/use-symbol-as-uid":300}],213:[function(e,t,r){"use strict";function b(e,t){this.stopped=e,this.result=t}var g=e("../internals/function-bind-context"),v=e("../internals/function-call"),j=e("../internals/an-object"),w=e("../internals/try-to-string"),x=e("../internals/is-array-iterator-method"),S=e("../internals/length-of-array-like"),k=e("../internals/object-is-prototype-of"),_=e("../internals/get-iterator"),T=e("../internals/get-iterator-method"),E=e("../internals/iterator-close"),O=TypeError,A=b.prototype;t.exports=function(e,t,r){function n(e){return o&&E(o,"normal",e),new b(!0,e)}function i(e){return p?(j(e),y?m(e[0],e[1],n):m(e[0],e[1])):y?m(e,n):m(e)}var o,s,a,c,u,l,f=r&&r.that,p=!(!r||!r.AS_ENTRIES),d=!(!r||!r.IS_RECORD),h=!(!r||!r.IS_ITERATOR),y=!(!r||!r.INTERRUPTED),m=g(t,f);if(d)o=e.iterator;else if(h)o=e;else{if(!(r=T(e)))throw new O(w(e)+" is not iterable");if(x(r)){for(s=0,a=S(e);s<a;s++)if((c=i(e[s]))&&k(A,c))return c;return new b(!1)}o=_(e,r)}for(u=(d?e:o).next;!(l=v(u,o)).done;){try{c=i(l.value)}catch(e){E(o,"throw",e)}if("object"==typeof c&&c&&k(A,c))return c}return new b(!1)}},{"../internals/an-object":114,"../internals/function-bind-context":175,"../internals/function-call":177,"../internals/get-iterator":184,"../internals/get-iterator-method":183,"../internals/is-array-iterator-method":200,"../internals/iterator-close":214,"../internals/length-of-array-like":219,"../internals/object-is-prototype-of":238,"../internals/try-to-string":293}],214:[function(e,t,r){"use strict";var o=e("../internals/function-call"),s=e("../internals/an-object"),a=e("../internals/get-method");t.exports=function(e,t,r){var n,i;s(e);try{if(!(n=a(e,"return"))){if("throw"===t)throw r;return r}n=o(n,e)}catch(e){i=!0,n=e}if("throw"===t)throw r;if(i)throw n;return s(n),r}},{"../internals/an-object":114,"../internals/function-call":177,"../internals/get-method":186}],215:[function(e,t,r){"use strict";function i(){return this}var o=e("../internals/iterators-core").IteratorPrototype,s=e("../internals/object-create"),a=e("../internals/create-property-descriptor"),c=e("../internals/set-to-string-tag"),u=e("../internals/iterators");t.exports=function(e,t,r,n){t+=" Iterator";return e.prototype=s(o,{next:a(+!n,r)}),c(e,t,!1,!0),u[t]=i,e}},{"../internals/create-property-descriptor":146,"../internals/iterators":218,"../internals/iterators-core":217,"../internals/object-create":229,"../internals/set-to-string-tag":266}],216:[function(e,t,r){"use strict";function y(){return this}var m=e("../internals/export"),b=e("../internals/function-call"),g=e("../internals/is-pure"),n=e("../internals/function-name"),v=e("../internals/is-callable"),j=e("../internals/iterator-create-constructor"),w=e("../internals/object-get-prototype-of"),x=e("../internals/object-set-prototype-of"),S=e("../internals/set-to-string-tag"),k=e("../internals/create-non-enumerable-property"),_=e("../internals/define-built-in"),i=e("../internals/well-known-symbol"),T=e("../internals/iterators"),e=e("../internals/iterators-core"),E=n.PROPER,O=n.CONFIGURABLE,A=e.IteratorPrototype,I=e.BUGGY_SAFARI_ITERATORS,D=i("iterator"),R="values";t.exports=function(e,t,r,n,i,o,s){j(r,t,n);function a(e){if(e===i&&d)return d;if(!I&&e&&e in f)return f[e];switch(e){case"keys":case R:case"entries":return function(){return new r(this,e)}}return function(){return new r(this)}}var c,u,n=t+" Iterator",l=!1,f=e.prototype,p=f[D]||f["@@iterator"]||i&&f[i],d=!I&&p||a(i),h="Array"===t&&f.entries||p;if(h&&(h=w(h.call(new e)))!==Object.prototype&&h.next&&(g||w(h)===A||(x?x(h,A):v(h[D])||_(h,D,y)),S(h,n,!0,!0),g)&&(T[n]=y),E&&i===R&&p&&p.name!==R&&(!g&&O?k(f,"name",R):(l=!0,d=function(){return b(p,this)})),i)if(c={values:a(R),keys:o?d:a("keys"),entries:a("entries")},s)for(u in c)!I&&!l&&u in f||_(f,u,c[u]);else m({target:t,proto:!0,forced:I||l},c);return g&&!s||f[D]===d||_(f,D,d,{name:i}),T[t]=d,c}},{"../internals/create-non-enumerable-property":145,"../internals/define-built-in":149,"../internals/export":170,"../internals/function-call":177,"../internals/function-name":178,"../internals/is-callable":203,"../internals/is-pure":210,"../internals/iterator-create-constructor":215,"../internals/iterators":218,"../internals/iterators-core":217,"../internals/object-get-prototype-of":236,"../internals/object-set-prototype-of":242,"../internals/set-to-string-tag":266,"../internals/well-known-symbol":306}],217:[function(e,t,r){"use strict";var n,i,o=e("../internals/fails"),s=e("../internals/is-callable"),a=e("../internals/is-object"),c=e("../internals/object-create"),u=e("../internals/object-get-prototype-of"),l=e("../internals/define-built-in"),f=e("../internals/well-known-symbol"),e=e("../internals/is-pure"),p=f("iterator"),f=!1;[].keys&&("next"in(i=[].keys())?(u=u(u(i)))!==Object.prototype&&(n=u):f=!0),!a(n)||o(function(){var e={};return n[p].call(e)!==e})?n={}:e&&(n=c(n)),s(n[p])||l(n,p,function(){return this}),t.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:f}},{"../internals/define-built-in":149,"../internals/fails":171,"../internals/is-callable":203,"../internals/is-object":208,"../internals/is-pure":210,"../internals/object-create":229,"../internals/object-get-prototype-of":236,"../internals/well-known-symbol":306}],218:[function(e,t,r){arguments[4][190][0].apply(r,arguments)},{dup:190}],219:[function(e,t,r){"use strict";var n=e("../internals/to-length");t.exports=function(e){return n(e.length)}},{"../internals/to-length":284}],220:[function(e,t,r){"use strict";var n=e("../internals/function-uncurry-this"),i=e("../internals/fails"),o=e("../internals/is-callable"),s=e("../internals/has-own-property"),a=e("../internals/descriptors"),c=e("../internals/function-name").CONFIGURABLE,u=e("../internals/inspect-source"),e=e("../internals/internal-state"),l=e.enforce,f=e.get,p=String,d=Object.defineProperty,h=n("".slice),y=n("".replace),m=n([].join),b=a&&!i(function(){return 8!==d(function(){},"length",{value:8}).length}),g=String(String).split("String"),e=t.exports=function(e,t,r){"Symbol("===h(p(t),0,7)&&(t="["+y(p(t),/^Symbol\(([^)]*)\)/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!s(e,"name")||c&&e.name!==t)&&(a?d(e,"name",{value:t,configurable:!0}):e.name=t),b&&r&&s(r,"arity")&&e.length!==r.arity&&d(e,"length",{value:r.arity});try{r&&s(r,"constructor")&&r.constructor?a&&d(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}r=l(e);return s(r,"source")||(r.source=m(g,"string"==typeof t?t:"")),e};Function.prototype.toString=e(function(){return o(this)&&f(this).source||u(this)},"toString")},{"../internals/descriptors":153,"../internals/fails":171,"../internals/function-name":178,"../internals/function-uncurry-this":181,"../internals/has-own-property":189,"../internals/inspect-source":197,"../internals/internal-state":199,"../internals/is-callable":203}],221:[function(e,t,r){"use strict";var o=e("../internals/math-sign"),s=Math.abs,a=2220446049250313e-31,c=1/a;t.exports=function(e,t,r,n){var e=+e,i=s(e),e=o(e);return i<n?e*(i/n/t+c-c)*n*t:r<(r=(n=(1+t/a)*i)-(n-i))||r!=r?e*(1/0):e*r}},{"../internals/math-sign":223}],222:[function(e,t,r){"use strict";var n=e("../internals/math-float-round");t.exports=Math.fround||function(e){return n(e,1.1920928955078125e-7,34028234663852886e22,11754943508222875e-54)}},{"../internals/math-float-round":221}],223:[function(e,t,r){"use strict";t.exports=Math.sign||function(e){e=+e;return 0==e||e!=e?e:e<0?-1:1}},{}],224:[function(e,t,r){"use strict";var n=Math.ceil,i=Math.floor;t.exports=Math.trunc||function(e){e=+e;return(0<e?i:n)(e)}},{}],225:[function(e,t,r){"use strict";var n,i,o,s,a,c,u=e("../internals/global"),l=e("../internals/safe-get-built-in"),f=e("../internals/function-bind-context"),p=e("../internals/task").set,d=e("../internals/queue"),h=e("../internals/engine-is-ios"),y=e("../internals/engine-is-ios-pebble"),m=e("../internals/engine-is-webos-webkit"),b=e("../internals/engine-is-node"),e=u.MutationObserver||u.WebKitMutationObserver,g=u.document,v=u.process,j=u.Promise,l=l("queueMicrotask");l||(s=new d,a=function(){var e,t;for(b&&(e=v.domain)&&e.exit();t=s.get();)try{t()}catch(e){throw s.head&&c(),e}e&&e.enter()},c=h||b||m||!e||!g?!y&&j&&j.resolve?((d=j.resolve(void 0)).constructor=j,o=f(d.then,d),function(){o(a)}):b?function(){v.nextTick(a)}:(p=f(p,u),function(){p(a)}):(n=!0,i=g.createTextNode(""),new e(a).observe(i,{characterData:!0}),function(){i.data=n=!n}),l=function(e){s.head||c(),s.add(e)}),t.exports=l},{"../internals/engine-is-ios":163,"../internals/engine-is-ios-pebble":162,"../internals/engine-is-node":164,"../internals/engine-is-webos-webkit":165,"../internals/function-bind-context":175,"../internals/global":188,"../internals/queue":254,"../internals/safe-get-built-in":263,"../internals/task":277}],226:[function(e,t,r){"use strict";function n(e){var r,n;this.promise=new e(function(e,t){if(void 0!==r||void 0!==n)throw new o("Bad Promise constructor");r=e,n=t}),this.resolve=i(r),this.reject=i(n)}var i=e("../internals/a-callable"),o=TypeError;t.exports.f=function(e){return new n(e)}},{"../internals/a-callable":108}],227:[function(e,t,r){"use strict";var n=e("../internals/is-regexp"),i=TypeError;t.exports=function(e){if(n(e))throw new i("The method doesn't accept regular expressions");return e}},{"../internals/is-regexp":211}],228:[function(e,t,r){"use strict";var p=e("../internals/descriptors"),n=e("../internals/function-uncurry-this"),d=e("../internals/function-call"),i=e("../internals/fails"),h=e("../internals/object-keys"),y=e("../internals/object-get-own-property-symbols"),m=e("../internals/object-property-is-enumerable"),b=e("../internals/to-object"),g=e("../internals/indexed-object"),o=Object.assign,s=Object.defineProperty,v=n([].concat);t.exports=!o||i(function(){var e,t,r,n;return!(!p||1===o({b:1},o(s({},"a",{enumerable:!0,get:function(){s(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)||(t={},n="abcdefghijklmnopqrst",(e={})[r=Symbol("assign detection")]=7,n.split("").forEach(function(e){t[e]=e}),7!==o({},e)[r])||h(o({},t)).join("")!==n})?function(e,t){for(var r=b(e),n=arguments.length,i=1,o=y.f,s=m.f;i<n;)for(var a,c=g(arguments[i++]),u=o?v(h(c),o(c)):h(c),l=u.length,f=0;f<l;)a=u[f++],p&&!d(s,c,a)||(r[a]=c[a]);return r}:o},{"../internals/descriptors":153,"../internals/fails":171,"../internals/function-call":177,"../internals/function-uncurry-this":181,"../internals/indexed-object":195,"../internals/object-get-own-property-symbols":235,"../internals/object-keys":240,"../internals/object-property-is-enumerable":241,"../internals/to-object":285}],229:[function(e,t,r){"use strict";function n(){}function i(e){e.write(y("")),e.close();var t=e.parentWindow.Object;return e=null,t}var o,s=e("../internals/an-object"),a=e("../internals/object-define-properties"),c=e("../internals/enum-bug-keys"),u=e("../internals/hidden-keys"),l=e("../internals/html"),f=e("../internals/document-create-element"),e=e("../internals/shared-key"),p="prototype",d="script",h=e("IE_PROTO"),y=function(e){return"<"+d+">"+e+"</"+d+">"},m=function(){try{o=new ActiveXObject("htmlfile")}catch(e){}m="undefined"==typeof document||document.domain&&o?i(o):(e=f("iframe"),t="java"+d+":",e.style.display="none",l.appendChild(e),e.src=String(t),(t=e.contentWindow.document).open(),t.write(y("document.F=Object")),t.close(),t.F);for(var e,t,r=c.length;r--;)delete m[p][c[r]];return m()};u[h]=!0,t.exports=Object.create||function(e,t){var r;return null!==e?(n[p]=s(e),r=new n,n[p]=null,r[h]=e):r=m(),void 0===t?r:a.f(r,t)}},{"../internals/an-object":114,"../internals/document-create-element":154,"../internals/enum-bug-keys":169,"../internals/hidden-keys":190,"../internals/html":192,"../internals/object-define-properties":230,"../internals/shared-key":267}],230:[function(e,t,r){"use strict";var n=e("../internals/descriptors"),i=e("../internals/v8-prototype-define-bug"),a=e("../internals/object-define-property"),c=e("../internals/an-object"),u=e("../internals/to-indexed-object"),l=e("../internals/object-keys");r.f=n&&!i?Object.defineProperties:function(e,t){c(e);for(var r,n=u(t),i=l(t),o=i.length,s=0;s<o;)a.f(e,r=i[s++],n[r]);return e}},{"../internals/an-object":114,"../internals/descriptors":153,"../internals/object-define-property":231,"../internals/object-keys":240,"../internals/to-indexed-object":282,"../internals/v8-prototype-define-bug":301}],231:[function(e,t,r){"use strict";var n=e("../internals/descriptors"),i=e("../internals/ie8-dom-define"),o=e("../internals/v8-prototype-define-bug"),s=e("../internals/an-object"),a=e("../internals/to-property-key"),c=TypeError,u=Object.defineProperty,l=Object.getOwnPropertyDescriptor,f="enumerable",p="configurable",d="writable";r.f=n?o?function(e,t,r){var n;return s(e),t=a(t),s(r),"function"==typeof e&&"prototype"===t&&"value"in r&&d in r&&!r[d]&&(n=l(e,t))&&n[d]&&(e[t]=r.value,r={configurable:(p in r?r:n)[p],enumerable:(f in r?r:n)[f],writable:!1}),u(e,t,r)}:u:function(e,t,r){if(s(e),t=a(t),s(r),i)try{return u(e,t,r)}catch(e){}if("get"in r||"set"in r)throw new c("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},{"../internals/an-object":114,"../internals/descriptors":153,"../internals/ie8-dom-define":193,"../internals/to-property-key":289,"../internals/v8-prototype-define-bug":301}],232:[function(e,t,r){"use strict";var n=e("../internals/descriptors"),i=e("../internals/function-call"),o=e("../internals/object-property-is-enumerable"),s=e("../internals/create-property-descriptor"),a=e("../internals/to-indexed-object"),c=e("../internals/to-property-key"),u=e("../internals/has-own-property"),l=e("../internals/ie8-dom-define"),f=Object.getOwnPropertyDescriptor;r.f=n?f:function(e,t){if(e=a(e),t=c(t),l)try{return f(e,t)}catch(e){}if(u(e,t))return s(!i(o.f,e,t),e[t])}},{"../internals/create-property-descriptor":146,"../internals/descriptors":153,"../internals/function-call":177,"../internals/has-own-property":189,"../internals/ie8-dom-define":193,"../internals/object-property-is-enumerable":241,"../internals/to-indexed-object":282,"../internals/to-property-key":289}],233:[function(e,t,r){"use strict";var n=e("../internals/classof-raw"),i=e("../internals/to-indexed-object"),o=e("../internals/object-get-own-property-names").f,s=e("../internals/array-slice"),a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(e){if(!a||"Window"!==n(e))return o(i(e));try{return o(e)}catch(e){return s(a)}}},{"../internals/array-slice":131,"../internals/classof-raw":137,"../internals/object-get-own-property-names":234,"../internals/to-indexed-object":282}],234:[function(e,t,r){"use strict";var n=e("../internals/object-keys-internal"),i=e("../internals/enum-bug-keys").concat("length","prototype");r.f=Object.getOwnPropertyNames||function(e){return n(e,i)}},{"../internals/enum-bug-keys":169,"../internals/object-keys-internal":239}],235:[function(e,t,r){"use strict";r.f=Object.getOwnPropertySymbols},{}],236:[function(e,t,r){"use strict";var n=e("../internals/has-own-property"),i=e("../internals/is-callable"),o=e("../internals/to-object"),s=e("../internals/shared-key"),e=e("../internals/correct-prototype-getter"),a=s("IE_PROTO"),c=Object,u=c.prototype;t.exports=e?c.getPrototypeOf:function(e){var t,e=o(e);return n(e,a)?e[a]:(t=e.constructor,i(t)&&e instanceof t?t.prototype:e instanceof c?u:null)}},{"../internals/correct-prototype-getter":143,"../internals/has-own-property":189,"../internals/is-callable":203,"../internals/shared-key":267,"../internals/to-object":285}],237:[function(e,t,r){"use strict";var n=e("../internals/fails"),i=e("../internals/is-object"),o=e("../internals/classof-raw"),s=e("../internals/array-buffer-non-extensible"),a=Object.isExtensible,e=n(function(){a(1)});t.exports=e||s?function(e){return!(!i(e)||s&&"ArrayBuffer"===o(e))&&(!a||a(e))}:a},{"../internals/array-buffer-non-extensible":116,"../internals/classof-raw":137,"../internals/fails":171,"../internals/is-object":208}],238:[function(e,t,r){"use strict";e=e("../internals/function-uncurry-this");t.exports=e({}.isPrototypeOf)},{"../internals/function-uncurry-this":181}],239:[function(e,t,r){"use strict";var n=e("../internals/function-uncurry-this"),s=e("../internals/has-own-property"),a=e("../internals/to-indexed-object"),c=e("../internals/array-includes").indexOf,u=e("../internals/hidden-keys"),l=n([].push);t.exports=function(e,t){var r,n=a(e),i=0,o=[];for(r in n)!s(u,r)&&s(n,r)&&l(o,r);for(;t.length>i;)!s(n,r=t[i++])||~c(o,r)||l(o,r);return o}},{"../internals/array-includes":124,"../internals/function-uncurry-this":181,"../internals/has-own-property":189,"../internals/hidden-keys":190,"../internals/to-indexed-object":282}],240:[function(e,t,r){"use strict";var n=e("../internals/object-keys-internal"),i=e("../internals/enum-bug-keys");t.exports=Object.keys||function(e){return n(e,i)}},{"../internals/enum-bug-keys":169,"../internals/object-keys-internal":239}],241:[function(e,t,r){"use strict";var n={}.propertyIsEnumerable,i=Object.getOwnPropertyDescriptor,o=i&&!n.call({1:2},1);r.f=o?function(e){e=i(this,e);return!!e&&e.enumerable}:n},{}],242:[function(e,t,r){"use strict";var i=e("../internals/function-uncurry-this-accessor"),o=e("../internals/an-object"),s=e("../internals/a-possible-prototype");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r,n=!1,e={};try{(r=i(Object.prototype,"__proto__","set"))(e,[]),n=e instanceof Array}catch(e){}return function(e,t){return o(e),s(t),n?r(e,t):e.__proto__=t,e}}():void 0)},{"../internals/a-possible-prototype":110,"../internals/an-object":114,"../internals/function-uncurry-this-accessor":179}],243:[function(e,t,r){"use strict";function n(c){return function(e){for(var t,r=p(e),n=f(r),i=y&&null===l(r),o=n.length,s=0,a=[];s<o;)t=n[s++],u&&!(i?t in r:d(r,t))||h(a,c?[t,r[t]]:r[t]);return a}}var u=e("../internals/descriptors"),i=e("../internals/fails"),o=e("../internals/function-uncurry-this"),l=e("../internals/object-get-prototype-of"),f=e("../internals/object-keys"),p=e("../internals/to-indexed-object"),d=o(e("../internals/object-property-is-enumerable").f),h=o([].push),y=u&&i(function(){var e=Object.create(null);return e[2]=2,!d(e,2)});t.exports={entries:n(!0),values:n(!1)}},{"../internals/descriptors":153,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/object-get-prototype-of":236,"../internals/object-keys":240,"../internals/object-property-is-enumerable":241,"../internals/to-indexed-object":282}],244:[function(e,t,r){"use strict";var n=e("../internals/to-string-tag-support"),i=e("../internals/classof");t.exports=n?{}.toString:function(){return"[object "+i(this)+"]"}},{"../internals/classof":138,"../internals/to-string-tag-support":290}],245:[function(e,t,r){"use strict";var i=e("../internals/function-call"),o=e("../internals/is-callable"),s=e("../internals/is-object"),a=TypeError;t.exports=function(e,t){var r,n;if("string"===t&&o(r=e.toString)&&!s(n=i(r,e)))return n;if(o(r=e.valueOf)&&!s(n=i(r,e)))return n;if("string"!==t&&o(r=e.toString)&&!s(n=i(r,e)))return n;throw new a("Can't convert object to primitive value")}},{"../internals/function-call":177,"../internals/is-callable":203,"../internals/is-object":208}],246:[function(e,t,r){"use strict";var n=e("../internals/get-built-in"),i=e("../internals/function-uncurry-this"),o=e("../internals/object-get-own-property-names"),s=e("../internals/object-get-own-property-symbols"),a=e("../internals/an-object"),c=i([].concat);t.exports=n("Reflect","ownKeys")||function(e){var t=o.f(a(e)),r=s.f;return r?c(t,r(e)):t}},{"../internals/an-object":114,"../internals/function-uncurry-this":181,"../internals/get-built-in":182,"../internals/object-get-own-property-names":234,"../internals/object-get-own-property-symbols":235}],247:[function(e,t,r){"use strict";e=e("../internals/global");t.exports=e},{"../internals/global":188}],248:[function(e,t,r){"use strict";t.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},{}],249:[function(e,t,r){"use strict";var n=e("../internals/global"),i=e("../internals/promise-native-constructor"),o=e("../internals/is-callable"),s=e("../internals/is-forced"),a=e("../internals/inspect-source"),c=e("../internals/well-known-symbol"),u=e("../internals/engine-is-browser"),l=e("../internals/engine-is-deno"),f=e("../internals/is-pure"),p=e("../internals/engine-v8-version"),d=i&&i.prototype,h=c("species"),y=!1,m=o(n.PromiseRejectionEvent),e=s("Promise",function(){var e=a(i),t=e!==String(i);if(!t&&66===p)return!0;if(f&&(!d.catch||!d.finally))return!0;if(!p||p<51||!/native code/.test(e)){var e=new i(function(e){e(1)}),r=function(e){e(function(){},function(){})};if((e.constructor={})[h]=r,!(y=e.then(function(){})instanceof r))return!0}return!t&&(u||l)&&!m});t.exports={CONSTRUCTOR:e,REJECTION_EVENT:m,SUBCLASSING:y}},{"../internals/engine-is-browser":159,"../internals/engine-is-deno":160,"../internals/engine-v8-version":167,"../internals/global":188,"../internals/inspect-source":197,"../internals/is-callable":203,"../internals/is-forced":205,"../internals/is-pure":210,"../internals/promise-native-constructor":250,"../internals/well-known-symbol":306}],250:[function(e,t,r){"use strict";e=e("../internals/global");t.exports=e.Promise},{"../internals/global":188}],251:[function(e,t,r){"use strict";var n=e("../internals/an-object"),i=e("../internals/is-object"),o=e("../internals/new-promise-capability");t.exports=function(e,t){return n(e),i(t)&&t.constructor===e?t:((0,(e=o.f(e)).resolve)(t),e.promise)}},{"../internals/an-object":114,"../internals/is-object":208,"../internals/new-promise-capability":226}],252:[function(e,t,r){"use strict";var n=e("../internals/promise-native-constructor"),i=e("../internals/check-correctness-of-iteration"),e=e("../internals/promise-constructor-detection").CONSTRUCTOR;t.exports=e||!i(function(e){n.all(e).then(void 0,function(){})})},{"../internals/check-correctness-of-iteration":136,"../internals/promise-constructor-detection":249,"../internals/promise-native-constructor":250}],253:[function(e,t,r){"use strict";var n=e("../internals/object-define-property").f;t.exports=function(e,t,r){r in e||n(e,r,{configurable:!0,get:function(){return t[r]},set:function(e){t[r]=e}})}},{"../internals/object-define-property":231}],254:[function(e,t,r){"use strict";function n(){this.head=null,this.tail=null}n.prototype={add:function(e){var e={item:e,next:null},t=this.tail;t?t.next=e:this.head=e,this.tail=e},get:function(){var e=this.head;if(e)return null===(this.head=e.next)&&(this.tail=null),e.item}},t.exports=n},{}],255:[function(e,t,r){"use strict";var n=e("../internals/function-call"),i=e("../internals/an-object"),o=e("../internals/is-callable"),s=e("../internals/classof-raw"),a=e("../internals/regexp-exec"),c=TypeError;t.exports=function(e,t){var r=e.exec;if(o(r))return null!==(r=n(r,e,t))&&i(r),r;if("RegExp"===s(e))return n(a,e,t);throw new c("RegExp#exec called on incompatible receiver")}},{"../internals/an-object":114,"../internals/classof-raw":137,"../internals/function-call":177,"../internals/is-callable":203,"../internals/regexp-exec":256}],256:[function(e,t,r){"use strict";var h=e("../internals/function-call"),n=e("../internals/function-uncurry-this"),y=e("../internals/to-string"),m=e("../internals/regexp-flags"),i=e("../internals/regexp-sticky-helpers"),o=e("../internals/shared"),b=e("../internals/object-create"),g=e("../internals/internal-state").get,s=e("../internals/regexp-unsupported-dot-all"),e=e("../internals/regexp-unsupported-ncg"),v=o("native-string-replace",String.prototype.replace),j=RegExp.prototype.exec,w=j,x=n("".charAt),S=n("".indexOf),k=n("".replace),_=n("".slice),T=(o=/b*/g,h(j,n=/a/,"a"),h(j,o,"a"),0!==n.lastIndex||0!==o.lastIndex),E=i.BROKEN_CARET,O=void 0!==/()??/.exec("")[1];(T||O||E||s||e)&&(w=function(e){var t,r,n,i,o,s,a=this,c=g(a),e=y(e),u=c.raw;if(u)return u.lastIndex=a.lastIndex,f=h(w,u,e),a.lastIndex=u.lastIndex,f;var l=c.groups,u=E&&a.sticky,f=h(m,a),c=a.source,p=0,d=e;if(u&&(f=k(f,"y",""),-1===S(f,"g")&&(f+="g"),d=_(e,a.lastIndex),0<a.lastIndex&&(!a.multiline||a.multiline&&"\n"!==x(e,a.lastIndex-1))&&(c="(?: "+c+")",d=" "+d,p++),t=new RegExp("^(?:"+c+")",f)),O&&(t=new RegExp("^"+c+"$(?!\\s)",f)),T&&(r=a.lastIndex),n=h(j,u?t:a,d),u?n?(n.input=_(n.input,p),n[0]=_(n[0],p),n.index=a.lastIndex,a.lastIndex+=n[0].length):a.lastIndex=0:T&&n&&(a.lastIndex=a.global?n.index+n[0].length:r),O&&n&&1<n.length&&h(v,n[0],t,function(){for(i=1;i<arguments.length-2;i++)void 0===arguments[i]&&(n[i]=void 0)}),n&&l)for(n.groups=o=b(null),i=0;i<l.length;i++)o[(s=l[i])[0]]=n[s[1]];return n}),t.exports=w},{"../internals/function-call":177,"../internals/function-uncurry-this":181,"../internals/internal-state":199,"../internals/object-create":229,"../internals/regexp-flags":257,"../internals/regexp-sticky-helpers":259,"../internals/regexp-unsupported-dot-all":260,"../internals/regexp-unsupported-ncg":261,"../internals/shared":269,"../internals/to-string":291}],257:[function(e,t,r){"use strict";var n=e("../internals/an-object");t.exports=function(){var e=n(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t}},{"../internals/an-object":114}],258:[function(e,t,r){"use strict";var n=e("../internals/function-call"),i=e("../internals/has-own-property"),o=e("../internals/object-is-prototype-of"),s=e("../internals/regexp-flags"),a=RegExp.prototype;t.exports=function(e){var t=e.flags;return void 0!==t||"flags"in a||i(e,"flags")||!o(a,e)?t:n(s,e)}},{"../internals/function-call":177,"../internals/has-own-property":189,"../internals/object-is-prototype-of":238,"../internals/regexp-flags":257}],259:[function(e,t,r){"use strict";var n=e("../internals/fails"),i=e("../internals/global").RegExp,e=n(function(){var e=i("a","y");return e.lastIndex=2,null!==e.exec("abcd")}),o=e||n(function(){return!i("a","y").sticky}),n=e||n(function(){var e=i("^r","gy");return e.lastIndex=2,null!==e.exec("str")});t.exports={BROKEN_CARET:n,MISSED_STICKY:o,UNSUPPORTED_Y:e}},{"../internals/fails":171,"../internals/global":188}],260:[function(e,t,r){"use strict";var n=e("../internals/fails"),i=e("../internals/global").RegExp;t.exports=n(function(){var e=i(".","s");return!(e.dotAll&&e.test("\n")&&"s"===e.flags)})},{"../internals/fails":171,"../internals/global":188}],261:[function(e,t,r){"use strict";var n=e("../internals/fails"),i=e("../internals/global").RegExp;t.exports=n(function(){var e=i("(?<a>b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$<a>c")})},{"../internals/fails":171,"../internals/global":188}],262:[function(e,t,r){"use strict";var n=e("../internals/is-null-or-undefined"),i=TypeError;t.exports=function(e){if(n(e))throw new i("Can't call method on "+e);return e}},{"../internals/is-null-or-undefined":207}],263:[function(e,t,r){"use strict";var n=e("../internals/global"),i=e("../internals/descriptors"),o=Object.getOwnPropertyDescriptor;t.exports=function(e){var t;return i?(t=o(n,e))&&t.value:n[e]}},{"../internals/descriptors":153,"../internals/global":188}],264:[function(e,t,r){"use strict";t.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},{}],265:[function(e,t,r){"use strict";var n=e("../internals/get-built-in"),i=e("../internals/define-built-in-accessor"),o=e("../internals/well-known-symbol"),s=e("../internals/descriptors"),a=o("species");t.exports=function(e){e=n(e);s&&e&&!e[a]&&i(e,a,{configurable:!0,get:function(){return this}})}},{"../internals/define-built-in-accessor":148,"../internals/descriptors":153,"../internals/get-built-in":182,"../internals/well-known-symbol":306}],266:[function(e,t,r){"use strict";var n=e("../internals/object-define-property").f,i=e("../internals/has-own-property"),o=e("../internals/well-known-symbol")("toStringTag");t.exports=function(e,t,r){(e=e&&!r?e.prototype:e)&&!i(e,o)&&n(e,o,{configurable:!0,value:t})}},{"../internals/has-own-property":189,"../internals/object-define-property":231,"../internals/well-known-symbol":306}],267:[function(e,t,r){"use strict";var n=e("../internals/shared"),i=e("../internals/uid"),o=n("keys");t.exports=function(e){return o[e]||(o[e]=i(e))}},{"../internals/shared":269,"../internals/uid":299}],268:[function(e,t,r){"use strict";var n=e("../internals/global"),e=e("../internals/define-global-property"),i="__core-js_shared__",n=n[i]||e(i,{});t.exports=n},{"../internals/define-global-property":151,"../internals/global":188}],269:[function(e,t,r){"use strict";var n=e("../internals/is-pure"),i=e("../internals/shared-store");(t.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.35.0",mode:n?"pure":"global",copyright:"\xa9 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.35.0/LICENSE",source:"https://github.com/zloirock/core-js"})},{"../internals/is-pure":210,"../internals/shared-store":268}],270:[function(e,t,r){"use strict";var n=e("../internals/an-object"),i=e("../internals/a-constructor"),o=e("../internals/is-null-or-undefined"),s=e("../internals/well-known-symbol")("species");t.exports=function(e,t){var e=n(e).constructor;return void 0===e||o(e=n(e)[s])?t:i(e)}},{"../internals/a-constructor":109,"../internals/an-object":114,"../internals/is-null-or-undefined":207,"../internals/well-known-symbol":306}],271:[function(e,t,r){"use strict";function n(i){return function(e,t){var r,e=s(a(e)),t=o(t),n=e.length;return t<0||n<=t?i?"":void 0:(r=u(e,t))<55296||56319<r||t+1===n||(n=u(e,t+1))<56320||57343<n?i?c(e,t):r:i?l(e,t,t+2):n-56320+(r-55296<<10)+65536}}var i=e("../internals/function-uncurry-this"),o=e("../internals/to-integer-or-infinity"),s=e("../internals/to-string"),a=e("../internals/require-object-coercible"),c=i("".charAt),u=i("".charCodeAt),l=i("".slice);t.exports={codeAt:n(!1),charAt:n(!0)}},{"../internals/function-uncurry-this":181,"../internals/require-object-coercible":262,"../internals/to-integer-or-infinity":283,"../internals/to-string":291}],272:[function(e,t,r){"use strict";var n=e("../internals/function-name").PROPER,i=e("../internals/fails"),o=e("../internals/whitespaces");t.exports=function(e){return i(function(){return!!o[e]()||"\u200b\x85\u180e"!=="\u200b\x85\u180e"[e]()||n&&o[e].name!==e})}},{"../internals/fails":171,"../internals/function-name":178,"../internals/whitespaces":307}],273:[function(e,t,r){"use strict";function n(t){return function(e){e=s(o(e));return 1&t&&(e=a(e,c,"")),e=2&t?a(e,u,"$1"):e}}var i=e("../internals/function-uncurry-this"),o=e("../internals/require-object-coercible"),s=e("../internals/to-string"),e=e("../internals/whitespaces"),a=i("".replace),c=RegExp("^["+e+"]+"),u=RegExp("(^|[^"+e+"])["+e+"]+$");t.exports={start:n(1),end:n(2),trim:n(3)}},{"../internals/function-uncurry-this":181,"../internals/require-object-coercible":262,"../internals/to-string":291,"../internals/whitespaces":307}],274:[function(e,t,r){"use strict";var n=e("../internals/engine-v8-version"),i=e("../internals/fails"),o=e("../internals/global").String;t.exports=!!Object.getOwnPropertySymbols&&!i(function(){var e=Symbol("symbol detection");return!o(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41})},{"../internals/engine-v8-version":167,"../internals/fails":171,"../internals/global":188}],275:[function(e,t,r){"use strict";var n=e("../internals/function-call"),i=e("../internals/get-built-in"),o=e("../internals/well-known-symbol"),s=e("../internals/define-built-in");t.exports=function(){var e=i("Symbol"),e=e&&e.prototype,t=e&&e.valueOf,r=o("toPrimitive");e&&!e[r]&&s(e,r,function(e){return n(t,this)},{arity:1})}},{"../internals/define-built-in":149,"../internals/function-call":177,"../internals/get-built-in":182,"../internals/well-known-symbol":306}],276:[function(e,t,r){"use strict";e=e("../internals/symbol-constructor-detection");t.exports=e&&!!Symbol.for&&!!Symbol.keyFor},{"../internals/symbol-constructor-detection":274}],277:[function(e,t,r){"use strict";function n(e){return function(){A(e)}}function i(e){A(e.data)}function o(e){c.postMessage(_(e),s.protocol+"//"+s.host)}var s,a,c=e("../internals/global"),u=e("../internals/function-apply"),l=e("../internals/function-bind-context"),f=e("../internals/is-callable"),p=e("../internals/has-own-property"),d=e("../internals/fails"),h=e("../internals/html"),y=e("../internals/array-slice"),m=e("../internals/document-create-element"),b=e("../internals/validate-arguments-length"),g=e("../internals/engine-is-ios"),e=e("../internals/engine-is-node"),v=c.setImmediate,j=c.clearImmediate,w=c.process,x=c.Dispatch,S=c.Function,k=c.MessageChannel,_=c.String,T=0,E={},O="onreadystatechange",A=(d(function(){s=c.location}),function(e){var t;p(E,e)&&(t=E[e],delete E[e],t())});v&&j||(v=function(e){b(arguments.length,1);var t=f(e)?e:S(e),r=y(arguments,1);return E[++T]=function(){u(t,void 0,r)},a(T),T},j=function(e){delete E[e]},e?a=function(e){w.nextTick(n(e))}:x&&x.now?a=function(e){x.now(n(e))}:k&&!g?(g=(e=new k).port2,e.port1.onmessage=i,a=l(g.postMessage,g)):c.addEventListener&&f(c.postMessage)&&!c.importScripts&&s&&"file:"!==s.protocol&&!d(o)?(a=o,c.addEventListener("message",i,!1)):a=O in m("script")?function(e){h.appendChild(m("script"))[O]=function(){h.removeChild(this),A(e)}}:function(e){setTimeout(n(e),0)}),t.exports={set:v,clear:j}},{"../internals/array-slice":131,"../internals/document-create-element":154,"../internals/engine-is-ios":163,"../internals/engine-is-node":164,"../internals/fails":171,"../internals/function-apply":174,"../internals/function-bind-context":175,"../internals/global":188,"../internals/has-own-property":189,"../internals/html":192,"../internals/is-callable":203,"../internals/validate-arguments-length":302}],278:[function(e,t,r){"use strict";e=e("../internals/function-uncurry-this");t.exports=e(1..valueOf)},{"../internals/function-uncurry-this":181}],279:[function(e,t,r){"use strict";var n=e("../internals/to-integer-or-infinity"),i=Math.max,o=Math.min;t.exports=function(e,t){e=n(e);return e<0?i(e+t,0):o(e,t)}},{"../internals/to-integer-or-infinity":283}],280:[function(e,t,r){"use strict";var n=e("../internals/to-primitive"),i=TypeError;t.exports=function(e){e=n(e,"number");if("number"==typeof e)throw new i("Can't convert number to bigint");return BigInt(e)}},{"../internals/to-primitive":288}],281:[function(e,t,r){"use strict";var n=e("../internals/to-integer-or-infinity"),i=e("../internals/to-length"),o=RangeError;t.exports=function(e){if(void 0===e)return 0;var e=n(e),t=i(e);if(e!==t)throw new o("Wrong length or index");return t}},{"../internals/to-integer-or-infinity":283,"../internals/to-length":284}],282:[function(e,t,r){"use strict";var n=e("../internals/indexed-object"),i=e("../internals/require-object-coercible");t.exports=function(e){return n(i(e))}},{"../internals/indexed-object":195,"../internals/require-object-coercible":262}],283:[function(e,t,r){"use strict";var n=e("../internals/math-trunc");t.exports=function(e){e=+e;return e!=e||0==e?0:n(e)}},{"../internals/math-trunc":224}],284:[function(e,t,r){"use strict";var n=e("../internals/to-integer-or-infinity"),i=Math.min;t.exports=function(e){return 0<e?i(n(e),9007199254740991):0}},{"../internals/to-integer-or-infinity":283}],285:[function(e,t,r){"use strict";var n=e("../internals/require-object-coercible"),i=Object;t.exports=function(e){return i(n(e))}},{"../internals/require-object-coercible":262}],286:[function(e,t,r){"use strict";var n=e("../internals/to-positive-integer"),i=RangeError;t.exports=function(e,t){e=n(e);if(e%t)throw new i("Wrong offset");return e}},{"../internals/to-positive-integer":287}],287:[function(e,t,r){"use strict";var n=e("../internals/to-integer-or-infinity"),i=RangeError;t.exports=function(e){e=n(e);if(e<0)throw new i("The argument can't be less than 0");return e}},{"../internals/to-integer-or-infinity":283}],288:[function(e,t,r){"use strict";var n=e("../internals/function-call"),i=e("../internals/is-object"),o=e("../internals/is-symbol"),s=e("../internals/get-method"),a=e("../internals/ordinary-to-primitive"),e=e("../internals/well-known-symbol"),c=TypeError,u=e("toPrimitive");t.exports=function(e,t){if(!i(e)||o(e))return e;var r=s(e,u);if(r){if(r=n(r,e,t=void 0===t?"default":t),!i(r)||o(r))return r;throw new c("Can't convert object to primitive value")}return a(e,t=void 0===t?"number":t)}},{"../internals/function-call":177,"../internals/get-method":186,"../internals/is-object":208,"../internals/is-symbol":212,"../internals/ordinary-to-primitive":245,"../internals/well-known-symbol":306}],289:[function(e,t,r){"use strict";var n=e("../internals/to-primitive"),i=e("../internals/is-symbol");t.exports=function(e){e=n(e,"string");return i(e)?e:e+""}},{"../internals/is-symbol":212,"../internals/to-primitive":288}],290:[function(e,t,r){"use strict";var n={};n[e("../internals/well-known-symbol")("toStringTag")]="z",t.exports="[object z]"===String(n)},{"../internals/well-known-symbol":306}],291:[function(e,t,r){"use strict";var n=e("../internals/classof"),i=String;t.exports=function(e){if("Symbol"===n(e))throw new TypeError("Cannot convert a Symbol value to a string");return i(e)}},{"../internals/classof":138}],292:[function(e,t,r){"use strict";var n=Math.round;t.exports=function(e){e=n(e);return e<0?0:255<e?255:255&e}},{}],293:[function(e,t,r){"use strict";var n=String;t.exports=function(e){try{return n(e)}catch(e){return"Object"}}},{}],294:[function(e,t,N){"use strict";function r(e,t){Y(e,t,{configurable:!0,get:function(){return _(this)[t]}})}function d(e){return X(te,e)||"ArrayBuffer"===(e=G(e))||"SharedArrayBuffer"===e}function n(e,t){return C(e)&&!V(t)&&t in e&&F(+t)&&0<=t}function i(e,t){return t=u(t),n(e,t)?q(2,e[t]):ee(e,t)}function o(e,t,r){return t=u(t),!(n(e,t)&&j(r)&&l(r,"value"))||l(r,"get")||l(r,"set")||r.configurable||l(r,"writable")&&!r.writable||l(r,"enumerable")&&!r.enumerable?T(e,t,r):(e[t]=r.value,e)}var c=e("../internals/export"),h=e("../internals/global"),y=e("../internals/function-call"),L=e("../internals/descriptors"),B=e("../internals/typed-array-constructors-require-wrappers"),s=e("../internals/array-buffer-view-core"),a=e("../internals/array-buffer"),m=e("../internals/an-instance"),q=e("../internals/create-property-descriptor"),b=e("../internals/create-non-enumerable-property"),F=e("../internals/is-integral-number"),U=e("../internals/to-length"),g=e("../internals/to-index"),v=e("../internals/to-offset"),W=e("../internals/to-uint8-clamped"),u=e("../internals/to-property-key"),l=e("../internals/has-own-property"),G=e("../internals/classof"),j=e("../internals/is-object"),V=e("../internals/is-symbol"),z=e("../internals/object-create"),X=e("../internals/object-is-prototype-of"),w=e("../internals/object-set-prototype-of"),H=e("../internals/object-get-own-property-names").f,x=e("../internals/typed-array-from"),K=e("../internals/array-iteration").forEach,$=e("../internals/set-species"),Y=e("../internals/define-built-in-accessor"),f=e("../internals/object-define-property"),p=e("../internals/object-get-own-property-descriptor"),S=e("../internals/array-from-constructor-and-list"),k=e("../internals/internal-state"),J=e("../internals/inherit-if-required"),_=k.get,Z=k.set,Q=k.enforce,T=f.f,ee=p.f,E=h.RangeError,O=a.ArrayBuffer,te=O.prototype,re=a.DataView,A=s.NATIVE_ARRAY_BUFFER_VIEWS,I=s.TYPED_ARRAY_TAG,D=s.TypedArray,R=s.TypedArrayPrototype,C=s.isTypedArray,M="BYTES_PER_ELEMENT",P="Wrong length";L?(A||(p.f=i,f.f=o,r(R,"buffer"),r(R,"byteOffset"),r(R,"byteLength"),r(R,"length")),c({target:"Object",stat:!0,forced:!A},{getOwnPropertyDescriptor:i,defineProperty:o}),t.exports=function(e,t,i){function u(e,n){T(e,n,{get:function(){var e=this,t=n;return(e=_(e)).view[o](t*l+e.byteOffset,!0)},set:function(e){var t=this,r=n;(t=_(t)).view[s](r*l+t.byteOffset,i?W(e):e,!0)},enumerable:!0})}var l=e.match(/\d+/)[0]/8,r=e+(i?"Clamped":"")+"Array",o="get"+e,s="set"+e,a=h[r],f=a,p=f&&f.prototype,e={},t=(A?B&&(f=t(function(e,t,r,n){return m(e,p),J(j(t)?d(t)?void 0!==n?new a(t,v(r,l),n):void 0!==r?new a(t,v(r,l)):new a(t):C(t)?S(f,t):y(x,f,t):new a(g(t)),e,f)}),w&&w(f,D),K(H(a),function(e){e in f||b(f,e,a[e])}),f.prototype=p):(f=t(function(e,t,r,n){m(e,p);var i,o,s=0,a=0;if(j(t)){if(!d(t))return C(t)?S(f,t):y(x,f,t);var c=t,a=v(r,l),r=t.byteLength;if(void 0===n){if(r%l)throw new E(P);if((i=r-a)<0)throw new E(P)}else if(r<(i=U(n)*l)+a)throw new E(P);o=i/l}else o=g(t),c=new O(i=o*l);for(Z(e,{buffer:c,byteOffset:a,byteLength:i,length:o,view:new re(c)});s<o;)u(e,s++)}),w&&w(f,D),p=f.prototype=z(R)),p.constructor!==f&&b(p,"constructor",f),Q(p).TypedArrayConstructor=f,I&&b(p,I,r),f!==a);e[r]=f,c({global:!0,constructor:!0,forced:t,sham:!A},e),M in f||b(f,M,l),M in p||b(p,M,l),$(r)}):t.exports=function(){}},{"../internals/an-instance":113,"../internals/array-buffer":118,"../internals/array-buffer-view-core":117,"../internals/array-from-constructor-and-list":122,"../internals/array-iteration":125,"../internals/classof":138,"../internals/create-non-enumerable-property":145,"../internals/create-property-descriptor":146,"../internals/define-built-in-accessor":148,"../internals/descriptors":153,"../internals/export":170,"../internals/function-call":177,"../internals/global":188,"../internals/has-own-property":189,"../internals/inherit-if-required":196,"../internals/internal-state":199,"../internals/is-integral-number":206,"../internals/is-object":208,"../internals/is-symbol":212,"../internals/object-create":229,"../internals/object-define-property":231,"../internals/object-get-own-property-descriptor":232,"../internals/object-get-own-property-names":234,"../internals/object-is-prototype-of":238,"../internals/object-set-prototype-of":242,"../internals/set-species":265,"../internals/to-index":281,"../internals/to-length":284,"../internals/to-offset":286,"../internals/to-property-key":289,"../internals/to-uint8-clamped":292,"../internals/typed-array-constructors-require-wrappers":295,"../internals/typed-array-from":297}],295:[function(e,t,r){"use strict";var n=e("../internals/global"),i=e("../internals/fails"),o=e("../internals/check-correctness-of-iteration"),e=e("../internals/array-buffer-view-core").NATIVE_ARRAY_BUFFER_VIEWS,s=n.ArrayBuffer,a=n.Int8Array;t.exports=!e||!i(function(){a(1)})||!i(function(){new a(-1)})||!o(function(e){new a,new a(null),new a(1.5),new a(e)},!0)||i(function(){return 1!==new a(new s(2),1,void 0).length})},{"../internals/array-buffer-view-core":117,"../internals/check-correctness-of-iteration":136,"../internals/fails":171,"../internals/global":188}],296:[function(e,t,r){"use strict";var n=e("../internals/array-from-constructor-and-list"),i=e("../internals/typed-array-species-constructor");t.exports=function(e,t){return n(i(e),t)}},{"../internals/array-from-constructor-and-list":122,"../internals/typed-array-species-constructor":298}],297:[function(e,t,r){"use strict";var h=e("../internals/function-bind-context"),y=e("../internals/function-call"),m=e("../internals/a-constructor"),b=e("../internals/to-object"),g=e("../internals/length-of-array-like"),v=e("../internals/get-iterator"),j=e("../internals/get-iterator-method"),w=e("../internals/is-array-iterator-method"),x=e("../internals/is-big-int-array"),S=e("../internals/array-buffer-view-core").aTypedArrayConstructor,k=e("../internals/to-big-int");t.exports=function(e){var t,r,n,i,o,s,a,c,u=m(this),l=b(e),e=arguments.length,f=1<e?arguments[1]:void 0,p=void 0!==f,d=j(l);if(d&&!w(d))for(c=(a=v(l,d)).next,l=[];!(s=y(c,a)).done;)l.push(s.value);for(p&&2<e&&(f=h(f,arguments[2])),r=g(l),n=new(S(u))(r),i=x(n),t=0;t<r;t++)o=p?f(l[t],t):l[t],n[t]=i?k(o):+o;return n}},{"../internals/a-constructor":109,"../internals/array-buffer-view-core":117,"../internals/function-bind-context":175,"../internals/function-call":177,"../internals/get-iterator":184,"../internals/get-iterator-method":183,"../internals/is-array-iterator-method":200,"../internals/is-big-int-array":202,"../internals/length-of-array-like":219,"../internals/to-big-int":280,"../internals/to-object":285}],298:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/species-constructor"),o=n.aTypedArrayConstructor,s=n.getTypedArrayConstructor;t.exports=function(e){return o(i(e,s(e)))}},{"../internals/array-buffer-view-core":117,"../internals/species-constructor":270}],299:[function(e,t,r){"use strict";var e=e("../internals/function-uncurry-this"),n=0,i=Math.random(),o=e(1..toString);t.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+o(++n+i,36)}},{"../internals/function-uncurry-this":181}],300:[function(e,t,r){"use strict";e=e("../internals/symbol-constructor-detection");t.exports=e&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},{"../internals/symbol-constructor-detection":274}],301:[function(e,t,r){"use strict";var n=e("../internals/descriptors"),e=e("../internals/fails");t.exports=n&&e(function(){return 42!==Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype})},{"../internals/descriptors":153,"../internals/fails":171}],302:[function(e,t,r){"use strict";var n=TypeError;t.exports=function(e,t){if(e<t)throw new n("Not enough arguments");return e}},{}],303:[function(e,t,r){"use strict";var n=e("../internals/global"),e=e("../internals/is-callable"),n=n.WeakMap;t.exports=e(n)&&/native code/.test(String(n))},{"../internals/global":188,"../internals/is-callable":203}],304:[function(e,t,r){"use strict";var n=e("../internals/path"),i=e("../internals/has-own-property"),o=e("../internals/well-known-symbol-wrapped"),s=e("../internals/object-define-property").f;t.exports=function(e){var t=n.Symbol||(n.Symbol={});i(t,e)||s(t,e,{value:o.f(e)})}},{"../internals/has-own-property":189,"../internals/object-define-property":231,"../internals/path":247,"../internals/well-known-symbol-wrapped":305}],305:[function(e,t,r){"use strict";e=e("../internals/well-known-symbol");r.f=e},{"../internals/well-known-symbol":306}],306:[function(e,t,r){"use strict";var n=e("../internals/global"),i=e("../internals/shared"),o=e("../internals/has-own-property"),s=e("../internals/uid"),a=e("../internals/symbol-constructor-detection"),e=e("../internals/use-symbol-as-uid"),c=n.Symbol,u=i("wks"),l=e?c.for||c:c&&c.withoutSetter||s;t.exports=function(e){return o(u,e)||(u[e]=a&&o(c,e)?c[e]:l("Symbol."+e)),u[e]}},{"../internals/global":188,"../internals/has-own-property":189,"../internals/shared":269,"../internals/symbol-constructor-detection":274,"../internals/uid":299,"../internals/use-symbol-as-uid":300}],307:[function(e,t,r){"use strict";t.exports="\t\n\v\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},{}],308:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/global"),o=e("../internals/array-buffer"),e=e("../internals/set-species"),s="ArrayBuffer",o=o[s];n({global:!0,constructor:!0,forced:i[s]!==o},{ArrayBuffer:o}),e(s)},{"../internals/array-buffer":118,"../internals/export":170,"../internals/global":188,"../internals/set-species":265}],309:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/function-uncurry-this-clause"),o=e("../internals/fails"),s=e("../internals/array-buffer"),c=e("../internals/an-object"),u=e("../internals/to-absolute-index"),l=e("../internals/to-length"),f=e("../internals/species-constructor"),p=s.ArrayBuffer,d=s.DataView,e=d.prototype,h=i(p.prototype.slice),y=i(e.getUint8),m=i(e.setUint8);n({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:o(function(){return!new p(2).slice(1,void 0).byteLength})},{slice:function(e,t){if(h&&void 0===t)return h(c(this),e);for(var r=c(this).byteLength,n=u(e,r),i=u(void 0===t?r:t,r),e=new(f(this,p))(l(i-n)),o=new d(this),s=new d(e),a=0;n<i;)m(s,a++,y(o,n++));return e}})},{"../internals/an-object":114,"../internals/array-buffer":118,"../internals/export":170,"../internals/fails":171,"../internals/function-uncurry-this-clause":180,"../internals/species-constructor":270,"../internals/to-absolute-index":279,"../internals/to-length":284}],310:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/fails"),f=e("../internals/is-array"),p=e("../internals/is-object"),d=e("../internals/to-object"),h=e("../internals/length-of-array-like"),y=e("../internals/does-not-exceed-safe-integer"),m=e("../internals/create-property"),b=e("../internals/array-species-create"),o=e("../internals/array-method-has-species-support"),s=e("../internals/well-known-symbol"),e=e("../internals/engine-v8-version"),g=s("isConcatSpreadable"),s=51<=e||!i(function(){var e=[];return e[g]=!1,e.concat()[0]!==e});n({target:"Array",proto:!0,arity:1,forced:!s||!o("concat")},{concat:function(e){for(var t,r,n,i,o,s=d(this),a=b(s,0),c=0,u=-1,l=arguments.length;u<l;u++)if(o=void 0,!p(i=n=-1===u?s:arguments[u])||(void 0!==(o=i[g])?!o:!f(i)))y(c+1),m(a,c++,n);else for(r=h(n),y(c+r),t=0;t<r;t++,c++)t in n&&m(a,c,n[t]);return a.length=c,a}})},{"../internals/array-method-has-species-support":127,"../internals/array-species-create":134,"../internals/create-property":147,"../internals/does-not-exceed-safe-integer":155,"../internals/engine-v8-version":167,"../internals/export":170,"../internals/fails":171,"../internals/is-array":201,"../internals/is-object":208,"../internals/length-of-array-like":219,"../internals/to-object":285,"../internals/well-known-symbol":306}],311:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/array-fill"),e=e("../internals/add-to-unscopables");n({target:"Array",proto:!0},{fill:i}),e("fill")},{"../internals/add-to-unscopables":111,"../internals/array-fill":120,"../internals/export":170}],312:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/array-iteration").filter;n({target:"Array",proto:!0,forced:!e("../internals/array-method-has-species-support")("filter")},{filter:function(e){return i(this,e,1<arguments.length?arguments[1]:void 0)}})},{"../internals/array-iteration":125,"../internals/array-method-has-species-support":127,"../internals/export":170}],313:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/array-iteration").find,e=e("../internals/add-to-unscopables"),o=!0;"find"in[]&&Array(1).find(function(){o=!1}),n({target:"Array",proto:!0,forced:o},{find:function(e){return i(this,e,1<arguments.length?arguments[1]:void 0)}}),e("find")},{"../internals/add-to-unscopables":111,"../internals/array-iteration":125,"../internals/export":170}],314:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/array-from");n({target:"Array",stat:!0,forced:!e("../internals/check-correctness-of-iteration")(function(e){Array.from(e)})},{from:i})},{"../internals/array-from":123,"../internals/check-correctness-of-iteration":136,"../internals/export":170}],315:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/array-includes").includes,o=e("../internals/fails"),e=e("../internals/add-to-unscopables");n({target:"Array",proto:!0,forced:o(function(){return!Array(1).includes()})},{includes:function(e){return i(this,e,1<arguments.length?arguments[1]:void 0)}}),e("includes")},{"../internals/add-to-unscopables":111,"../internals/array-includes":124,"../internals/export":170,"../internals/fails":171}],316:[function(e,t,r){"use strict";var n=e("../internals/to-indexed-object"),i=e("../internals/add-to-unscopables"),o=e("../internals/iterators"),s=e("../internals/internal-state"),a=e("../internals/object-define-property").f,c=e("../internals/iterator-define"),u=e("../internals/create-iter-result-object"),l=e("../internals/is-pure"),e=e("../internals/descriptors"),f="Array Iterator",p=s.set,d=s.getterFor(f),s=(t.exports=c(Array,"Array",function(e,t){p(this,{type:f,target:n(e),index:0,kind:t})},function(){var e=d(this),t=e.target,r=e.index++;if(!t||r>=t.length)return e.target=void 0,u(void 0,!0);switch(e.kind){case"keys":return u(r,!1);case"values":return u(t[r],!1)}return u([r,t[r]],!1)},"values"),o.Arguments=o.Array);if(i("keys"),i("values"),i("entries"),!l&&e&&"values"!==s.name)try{a(s,"name",{value:"values"})}catch(e){}},{"../internals/add-to-unscopables":111,"../internals/create-iter-result-object":144,"../internals/descriptors":153,"../internals/internal-state":199,"../internals/is-pure":210,"../internals/iterator-define":216,"../internals/iterators":218,"../internals/object-define-property":231,"../internals/to-indexed-object":282}],317:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/function-uncurry-this"),o=e("../internals/indexed-object"),s=e("../internals/to-indexed-object"),e=e("../internals/array-method-is-strict"),a=i([].join);n({target:"Array",proto:!0,forced:o!==Object||!e("join",",")},{join:function(e){return a(s(this),void 0===e?",":e)}})},{"../internals/array-method-is-strict":128,"../internals/export":170,"../internals/function-uncurry-this":181,"../internals/indexed-object":195,"../internals/to-indexed-object":282}],318:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/array-iteration").map;n({target:"Array",proto:!0,forced:!e("../internals/array-method-has-species-support")("map")},{map:function(e){return i(this,e,1<arguments.length?arguments[1]:void 0)}})},{"../internals/array-iteration":125,"../internals/array-method-has-species-support":127,"../internals/export":170}],319:[function(e,t,r){"use strict";var n=e("../internals/export"),u=e("../internals/is-array"),l=e("../internals/is-constructor"),f=e("../internals/is-object"),p=e("../internals/to-absolute-index"),d=e("../internals/length-of-array-like"),h=e("../internals/to-indexed-object"),y=e("../internals/create-property"),i=e("../internals/well-known-symbol"),o=e("../internals/array-method-has-species-support"),m=e("../internals/array-slice"),e=o("slice"),b=i("species"),g=Array,v=Math.max;n({target:"Array",proto:!0,forced:!e},{slice:function(e,t){var r,n,i,o=h(this),s=d(o),a=p(e,s),c=p(void 0===t?s:t,s);if(u(o)&&(r=o.constructor,(r=l(r)&&(r===g||u(r.prototype))||f(r)&&null===(r=r[b])?void 0:r)===g||void 0===r))return m(o,a,c);for(n=new(void 0===r?g:r)(v(c-a,0)),i=0;a<c;a++,i++)a in o&&y(n,i,o[a]);return n.length=i,n}})},{"../internals/array-method-has-species-support":127,"../internals/array-slice":131,"../internals/create-property":147,"../internals/export":170,"../internals/is-array":201,"../internals/is-constructor":204,"../internals/is-object":208,"../internals/length-of-array-like":219,"../internals/to-absolute-index":279,"../internals/to-indexed-object":282,"../internals/well-known-symbol":306}],320:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/function-uncurry-this"),a=e("../internals/a-callable"),c=e("../internals/to-object"),u=e("../internals/length-of-array-like"),l=e("../internals/delete-property-or-throw"),f=e("../internals/to-string"),o=e("../internals/fails"),p=e("../internals/array-sort"),s=e("../internals/array-method-is-strict"),d=e("../internals/engine-ff-version"),h=e("../internals/engine-is-ie-or-edge"),y=e("../internals/engine-v8-version"),m=e("../internals/engine-webkit-version"),b=[],g=i(b.sort),v=i(b.push),e=o(function(){b.sort(void 0)}),i=o(function(){b.sort(null)}),s=s("sort"),j=!o(function(){if(y)return y<70;if(!(d&&3<d)){if(h)return!0;if(m)return m<603;for(var e,t,r,n="",i=65;i<76;i++){switch(e=String.fromCharCode(i),i){case 66:case 69:case 70:case 72:t=3;break;case 68:case 71:t=4;break;default:t=2}for(r=0;r<47;r++)b.push({k:e+r,v:t})}for(b.sort(function(e,t){return t.v-e.v}),r=0;r<b.length;r++)e=b[r].k.charAt(0),n.charAt(n.length-1)!==e&&(n+=e);return"DGBEFHACIJK"!==n}});n({target:"Array",proto:!0,forced:e||!i||!s||!j},{sort:function(e){void 0!==e&&a(e);var t=c(this);if(j)return void 0===e?g(t):g(t,e);for(var r,n,i=[],o=u(t),s=0;s<o;s++)s in t&&v(i,t[s]);for(p(i,(n=e,function(e,t){return void 0===t?-1:void 0===e?1:void 0!==n?+n(e,t)||0:f(e)>f(t)?1:-1})),r=u(i),s=0;s<r;)t[s]=i[s++];for(;s<o;)l(t,s++);return t}})},{"../internals/a-callable":108,"../internals/array-method-is-strict":128,"../internals/array-sort":132,"../internals/delete-property-or-throw":152,"../internals/engine-ff-version":158,"../internals/engine-is-ie-or-edge":161,"../internals/engine-v8-version":167,"../internals/engine-webkit-version":168,"../internals/export":170,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/length-of-array-like":219,"../internals/to-object":285,"../internals/to-string":291}],321:[function(e,t,r){"use strict";var n=e("../internals/export"),f=e("../internals/to-object"),p=e("../internals/to-absolute-index"),d=e("../internals/to-integer-or-infinity"),h=e("../internals/length-of-array-like"),y=e("../internals/array-set-length"),m=e("../internals/does-not-exceed-safe-integer"),b=e("../internals/array-species-create"),g=e("../internals/create-property"),v=e("../internals/delete-property-or-throw"),e=e("../internals/array-method-has-species-support")("splice"),j=Math.max,w=Math.min;n({target:"Array",proto:!0,forced:!e},{splice:function(e,t){var r,n,i,o,s,a,c=f(this),u=h(c),l=p(e,u),e=arguments.length;for(0===e?r=n=0:n=1===e?(r=0,u-l):(r=e-2,w(j(d(t),0),u-l)),m(u+r-n),i=b(c,n),o=0;o<n;o++)(s=l+o)in c&&g(i,o,c[s]);if(r<(i.length=n)){for(o=l;o<u-n;o++)a=o+r,(s=o+n)in c?c[a]=c[s]:v(c,a);for(o=u;u-n+r<o;o--)v(c,o-1)}else if(n<r)for(o=u-n;l<o;o--)a=o+r-1,(s=o+n-1)in c?c[a]=c[s]:v(c,a);for(o=0;o<r;o++)c[o+l]=arguments[o+2];return y(c,u-n+r),i}})},{"../internals/array-method-has-species-support":127,"../internals/array-set-length":130,"../internals/array-species-create":134,"../internals/create-property":147,"../internals/delete-property-or-throw":152,"../internals/does-not-exceed-safe-integer":155,"../internals/export":170,"../internals/length-of-array-like":219,"../internals/to-absolute-index":279,"../internals/to-integer-or-infinity":283,"../internals/to-object":285}],322:[function(e,t,r){"use strict";var n=e("../internals/descriptors"),i=e("../internals/function-name").EXISTS,o=e("../internals/function-uncurry-this"),e=e("../internals/define-built-in-accessor"),s=Function.prototype,a=o(s.toString),c=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,u=o(c.exec);n&&!i&&e(s,"name",{configurable:!0,get:function(){try{return u(c,a(this))[1]}catch(e){return""}}})},{"../internals/define-built-in-accessor":148,"../internals/descriptors":153,"../internals/function-name":178,"../internals/function-uncurry-this":181}],323:[function(e,t,r){"use strict";function i(e,t){var r=d(arguments),n=h(t);if(f(n)||void 0!==e&&!p(e))return r[1]=function(e,t){if(f(n)&&(t=c(n,this,y(e),t)),!p(t))return t},a(m,null,r)}function o(e,t,r){var n=g(r,t-1),r=g(r,t+1);return b(S,e)&&!b(k,r)||b(k,e)&&!b(S,n)?"\\u"+w(v(e,0),16):e}var n=e("../internals/export"),s=e("../internals/get-built-in"),a=e("../internals/function-apply"),c=e("../internals/function-call"),u=e("../internals/function-uncurry-this"),l=e("../internals/fails"),f=e("../internals/is-callable"),p=e("../internals/is-symbol"),d=e("../internals/array-slice"),h=e("../internals/get-json-replacer-function"),e=e("../internals/symbol-constructor-detection"),y=String,m=s("JSON","stringify"),b=u(/./.exec),g=u("".charAt),v=u("".charCodeAt),j=u("".replace),w=u(1..toString),x=/[\uD800-\uDFFF]/g,S=/^[\uD800-\uDBFF]$/,k=/^[\uDC00-\uDFFF]$/,_=!e||l(function(){var e=s("Symbol")("stringify detection");return"[null]"!==m([e])||"{}"!==m({a:e})||"{}"!==m(Object(e))}),T=l(function(){return'"\\udf06\\ud834"'!==m("\udf06\ud834")||'"\\udead"'!==m("\udead")});m&&n({target:"JSON",stat:!0,arity:3,forced:_||T},{stringify:function(e,t,r){var n=d(arguments),n=a(_?i:m,null,n);return T&&"string"==typeof n?j(n,x,o):n}})},{"../internals/array-slice":131,"../internals/export":170,"../internals/fails":171,"../internals/function-apply":174,"../internals/function-call":177,"../internals/function-uncurry-this":181,"../internals/get-built-in":182,"../internals/get-json-replacer-function":185,"../internals/is-callable":203,"../internals/is-symbol":212,"../internals/symbol-constructor-detection":274}],324:[function(e,t,r){"use strict";function n(e){var t,e=arguments.length<1?0:S(function(e){e=m(e,"number");return"bigint"==typeof e?e:A(e)}(e));return h(_,t=this)&&b(function(){w(t)})?d(Object(e),this,n):e}function i(e,t){for(var r,n=a?g(t):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),i=0;n.length>i;i++)p(t,r=n[i])&&!p(e,r)&&j(e,r,v(t,r))}var o=e("../internals/export"),s=e("../internals/is-pure"),a=e("../internals/descriptors"),c=e("../internals/global"),u=e("../internals/path"),l=e("../internals/function-uncurry-this"),f=e("../internals/is-forced"),p=e("../internals/has-own-property"),d=e("../internals/inherit-if-required"),h=e("../internals/object-is-prototype-of"),y=e("../internals/is-symbol"),m=e("../internals/to-primitive"),b=e("../internals/fails"),g=e("../internals/object-get-own-property-names").f,v=e("../internals/object-get-own-property-descriptor").f,j=e("../internals/object-define-property").f,w=e("../internals/this-number-value"),x=e("../internals/string-trim").trim,e="Number",S=c[e],k=u[e],_=S.prototype,T=c.TypeError,E=l("".slice),O=l("".charCodeAt),A=function(e){var t,r,n,i,o,s,a,c=m(e,"number");if(y(c))throw new T("Cannot convert a Symbol value to a number");if("string"==typeof c&&2<c.length)if(c=x(c),43===(e=O(c,0))||45===e){if(88===(t=O(c,2))||120===t)return NaN}else if(48===e){switch(O(c,1)){case 66:case 98:r=2,n=49;break;case 79:case 111:r=8,n=55;break;default:return+c}for(o=(i=E(c,2)).length,s=0;s<o;s++)if((a=O(i,s))<48||n<a)return NaN;return parseInt(i,r)}return+c},c=f(e,!S(" 0o1")||!S("0b1")||S("+0x1"));n.prototype=_,c&&!s&&(_.constructor=n),o({global:!0,constructor:!0,wrap:!0,forced:c},{Number:n});s&&k&&i(u[e],k),(c||s)&&i(u[e],S)},{"../internals/descriptors":153,"../internals/export":170,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/global":188,"../internals/has-own-property":189,"../internals/inherit-if-required":196,"../internals/is-forced":205,"../internals/is-pure":210,"../internals/is-symbol":212,"../internals/object-define-property":231,"../internals/object-get-own-property-descriptor":232,"../internals/object-get-own-property-names":234,"../internals/object-is-prototype-of":238,"../internals/path":247,"../internals/string-trim":273,"../internals/this-number-value":278,"../internals/to-primitive":288}],325:[function(e,t,r){"use strict";var n=e("../internals/export"),e=e("../internals/object-assign");n({target:"Object",stat:!0,arity:2,forced:Object.assign!==e},{assign:e})},{"../internals/export":170,"../internals/object-assign":228}],326:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/object-to-array").entries;n({target:"Object",stat:!0},{entries:function(e){return i(e)}})},{"../internals/export":170,"../internals/object-to-array":243}],327:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/symbol-constructor-detection"),o=e("../internals/fails"),s=e("../internals/object-get-own-property-symbols"),a=e("../internals/to-object");n({target:"Object",stat:!0,forced:!i||o(function(){s.f(1)})},{getOwnPropertySymbols:function(e){var t=s.f;return t?t(a(e)):[]}})},{"../internals/export":170,"../internals/fails":171,"../internals/object-get-own-property-symbols":235,"../internals/symbol-constructor-detection":274,"../internals/to-object":285}],328:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/to-object"),o=e("../internals/object-keys");n({target:"Object",stat:!0,forced:e("../internals/fails")(function(){o(1)})},{keys:function(e){return o(i(e))}})},{"../internals/export":170,"../internals/fails":171,"../internals/object-keys":240,"../internals/to-object":285}],329:[function(e,t,r){"use strict";var n=e("../internals/to-string-tag-support"),i=e("../internals/define-built-in"),e=e("../internals/object-to-string");n||i(Object.prototype,"toString",e,{unsafe:!0})},{"../internals/define-built-in":149,"../internals/object-to-string":244,"../internals/to-string-tag-support":290}],330:[function(e,t,r){"use strict";var n=e("../internals/export"),l=e("../internals/function-call"),f=e("../internals/a-callable"),i=e("../internals/new-promise-capability"),o=e("../internals/perform"),p=e("../internals/iterate");n({target:"Promise",stat:!0,forced:e("../internals/promise-statics-incorrect-iteration")},{all:function(e){var a=this,t=i.f(a),c=t.resolve,u=t.reject,r=o(function(){var n=f(a.resolve),i=[],o=0,s=1;p(e,function(e){var t=o++,r=!1;s++,l(n,a,e).then(function(e){r||(r=!0,i[t]=e,--s)||c(i)},u)}),--s||c(i)});return r.error&&u(r.value),t.promise}})},{"../internals/a-callable":108,"../internals/export":170,"../internals/function-call":177,"../internals/iterate":213,"../internals/new-promise-capability":226,"../internals/perform":248,"../internals/promise-statics-incorrect-iteration":252}],331:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/is-pure"),o=e("../internals/promise-constructor-detection").CONSTRUCTOR,s=e("../internals/promise-native-constructor"),a=e("../internals/get-built-in"),c=e("../internals/is-callable"),e=e("../internals/define-built-in"),u=s&&s.prototype;n({target:"Promise",proto:!0,forced:o,real:!0},{catch:function(e){return this.then(void 0,e)}}),!i&&c(s)&&(n=a("Promise").prototype.catch,u.catch!==n)&&e(u,"catch",n,{unsafe:!0})},{"../internals/define-built-in":149,"../internals/export":170,"../internals/get-built-in":182,"../internals/is-callable":203,"../internals/is-pure":210,"../internals/promise-constructor-detection":249,"../internals/promise-native-constructor":250}],332:[function(e,N,L){"use strict";function o(e,t){var r,n,i,o,s=t.value,a=t.state===T,c=a?e.ok:e.fail,u=e.resolve,l=e.reject,f=e.domain;try{c?(a||(t.rejection===O&&(o=t,h(y,d,function(){var e=o.facade;p?S.emit("rejectionHandled",e):D(Q,e,o.value)})),t.rejection=E),!0===c?r=s:(f&&f.enter(),r=c(s),f&&(f.exit(),i=!0)),r===e.promise?l(new w("Promise-chain cycle")):(n=A(r))?h(n,r,u,l):u(r)):l(s)}catch(e){f&&!i&&f.exit(),l(e)}}var r,t,n,B=e("../internals/export"),q=e("../internals/is-pure"),p=e("../internals/engine-is-node"),d=e("../internals/global"),h=e("../internals/function-call"),i=e("../internals/define-built-in"),s=e("../internals/object-set-prototype-of"),F=e("../internals/set-to-string-tag"),U=e("../internals/set-species"),W=e("../internals/a-callable"),a=e("../internals/is-callable"),G=e("../internals/is-object"),V=e("../internals/an-instance"),z=e("../internals/species-constructor"),y=e("../internals/task").set,c=e("../internals/microtask"),X=e("../internals/host-report-errors"),H=e("../internals/perform"),K=e("../internals/queue"),u=e("../internals/internal-state"),l=e("../internals/promise-native-constructor"),f=e("../internals/promise-constructor-detection"),e=e("../internals/new-promise-capability"),m="Promise",b=f.CONSTRUCTOR,$=f.REJECTION_EVENT,f=f.SUBCLASSING,g=u.getterFor(m),Y=u.set,u=l&&l.prototype,v=l,j=u,w=d.TypeError,x=d.document,S=d.process,k=e.f,J=k,Z=!!(x&&x.createEvent&&d.dispatchEvent),_="unhandledrejection",Q="rejectionhandled",T=1,ee=2,E=1,O=2,A=function(e){var t;return!(!G(e)||!a(t=e.then))&&t},I=function(r,i){r.notified||(r.notified=!0,c(function(){for(var e,n,t=r.reactions;e=t.get();)o(e,r);r.notified=!1,i&&!r.rejection&&(n=r,h(y,d,function(){var e=n.facade,t=n.value,r=R(n);if(r&&(r=H(function(){p?S.emit("unhandledRejection",t,e):D(_,e,t)}),n.rejection=p||R(n)?O:E,r.error))throw r.value}))}))},D=function(e,t,r){var n;Z?((n=x.createEvent("Event")).promise=t,n.reason=r,n.initEvent(e,!1,!0),d.dispatchEvent(n)):n={promise:t,reason:r},!$&&(t=d["on"+e])?t(n):e===_&&X("Unhandled promise rejection",r)},R=function(e){return e.rejection!==E&&!e.parent},C=function(t,r,n){return function(e){t(r,e,n)}},M=function(e,t,r){e.done||(e.done=!0,(e=r?r:e).value=t,e.state=ee,I(e,!0))},P=function(r,e,t){if(!r.done){r.done=!0,t&&(r=t);try{if(r.facade===e)throw new w("Promise can't be resolved itself");var n=A(e);n?c(function(){var t={done:!1};try{h(n,e,C(P,t,r),C(M,t,r))}catch(e){M(t,e,r)}}):(r.value=e,r.state=T,I(r,!1))}catch(e){M({done:!1},e,r)}}};if(b&&(j=(v=function(e){V(this,j),W(e),h(r,this);var t=g(this);try{e(C(P,t),C(M,t))}catch(e){M(t,e)}}).prototype,(r=function(e){Y(this,{type:m,done:!1,notified:!1,parent:!1,reactions:new K,rejection:!1,state:0,value:void 0})}).prototype=i(j,"then",function(e,t){var r=g(this),n=k(z(this,v));return r.parent=!0,n.ok=!a(e)||e,n.fail=a(t)&&t,n.domain=p?S.domain:void 0,0===r.state?r.reactions.add(n):c(function(){o(n,r)}),n.promise}),t=function(){var e=new r,t=g(e);this.promise=e,this.resolve=C(P,t),this.reject=C(M,t)},e.f=k=function(e){return e===v||void 0===e?new t:J(e)},!q)&&a(l)&&u!==Object.prototype){n=u.then,f||i(u,"then",function(e,t){var r=this;return new v(function(e,t){h(n,r,e,t)}).then(e,t)},{unsafe:!0});try{delete u.constructor}catch(e){}s&&s(u,j)}B({global:!0,constructor:!0,wrap:!0,forced:b},{Promise:v}),F(v,m,!1,!0),U(m)},{"../internals/a-callable":108,"../internals/an-instance":113,"../internals/define-built-in":149,"../internals/engine-is-node":164,"../internals/export":170,"../internals/function-call":177,"../internals/global":188,"../internals/host-report-errors":191,"../internals/internal-state":199,"../internals/is-callable":203,"../internals/is-object":208,"../internals/is-pure":210,"../internals/microtask":225,"../internals/new-promise-capability":226,"../internals/object-set-prototype-of":242,"../internals/perform":248,"../internals/promise-constructor-detection":249,"../internals/promise-native-constructor":250,"../internals/queue":254,"../internals/set-species":265,"../internals/set-to-string-tag":266,"../internals/species-constructor":270,"../internals/task":277}],333:[function(e,t,r){"use strict";e("../modules/es.promise.constructor"),e("../modules/es.promise.all"),e("../modules/es.promise.catch"),e("../modules/es.promise.race"),e("../modules/es.promise.reject"),e("../modules/es.promise.resolve")},{"../modules/es.promise.all":330,"../modules/es.promise.catch":331,"../modules/es.promise.constructor":332,"../modules/es.promise.race":334,"../modules/es.promise.reject":335,"../modules/es.promise.resolve":336}],334:[function(e,t,r){"use strict";var n=e("../internals/export"),o=e("../internals/function-call"),s=e("../internals/a-callable"),a=e("../internals/new-promise-capability"),c=e("../internals/perform"),u=e("../internals/iterate");n({target:"Promise",stat:!0,forced:e("../internals/promise-statics-incorrect-iteration")},{race:function(e){var r=this,n=a.f(r),i=n.reject,t=c(function(){var t=s(r.resolve);u(e,function(e){o(t,r,e).then(n.resolve,i)})});return t.error&&i(t.value),n.promise}})},{"../internals/a-callable":108,"../internals/export":170,"../internals/function-call":177,"../internals/iterate":213,"../internals/new-promise-capability":226,"../internals/perform":248,"../internals/promise-statics-incorrect-iteration":252}],335:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/new-promise-capability");n({target:"Promise",stat:!0,forced:e("../internals/promise-constructor-detection").CONSTRUCTOR},{reject:function(e){var t=i.f(this);return(0,t.reject)(e),t.promise}})},{"../internals/export":170,"../internals/new-promise-capability":226,"../internals/promise-constructor-detection":249}],336:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/get-built-in"),o=e("../internals/is-pure"),s=e("../internals/promise-native-constructor"),a=e("../internals/promise-constructor-detection").CONSTRUCTOR,c=e("../internals/promise-resolve"),u=i("Promise"),l=o&&!a;n({target:"Promise",stat:!0,forced:o||a},{resolve:function(e){return c(l&&this===u?s:this,e)}})},{"../internals/export":170,"../internals/get-built-in":182,"../internals/is-pure":210,"../internals/promise-constructor-detection":249,"../internals/promise-native-constructor":250,"../internals/promise-resolve":251}],337:[function(e,N,L){"use strict";var t=e("../internals/descriptors"),r=e("../internals/global"),n=e("../internals/function-uncurry-this"),i=e("../internals/is-forced"),u=e("../internals/inherit-if-required"),l=e("../internals/create-non-enumerable-property"),f=e("../internals/object-create"),o=e("../internals/object-get-own-property-names").f,p=e("../internals/object-is-prototype-of"),d=e("../internals/is-regexp"),h=e("../internals/to-string"),y=e("../internals/regexp-get-flags"),s=e("../internals/regexp-sticky-helpers"),a=e("../internals/proxy-accessor"),c=e("../internals/define-built-in"),m=e("../internals/fails"),b=e("../internals/has-own-property"),g=e("../internals/internal-state").enforce,v=e("../internals/set-species"),j=e("../internals/well-known-symbol"),w=e("../internals/regexp-unsupported-dot-all"),x=e("../internals/regexp-unsupported-ncg"),S=j("match"),k=r.RegExp,_=k.prototype,T=r.SyntaxError,B=n(_.exec),E=n("".charAt),O=n("".replace),A=n("".indexOf),q=n("".slice),F=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,I=/a/g,D=/a/g,e=new k(I)!==I,R=s.MISSED_STICKY,U=s.UNSUPPORTED_Y,j=t&&(!e||R||w||x||m(function(){return D[S]=!1,k(I)!==I||k(D)===D||"/a/i"!==String(k(I,"i"))}));if(i("RegExp",j)){for(var C=function(e,t){var r,n,i=p(_,this),o=d(e),s=void 0===t,a=[],c=e;if(!i&&o&&s&&e.constructor===C)return e;if((o||p(_,e))&&(e=e.source,s)&&(t=y(c)),e=void 0===e?"":h(e),t=void 0===t?"":h(t),c=e,o=t=w&&"dotAll"in I&&(r=!!t&&-1<A(t,"s"))?O(t,/s/g,""):t,R&&"sticky"in I&&(n=!!t&&-1<A(t,"y"))&&U&&(t=O(t,/y/g,"")),x&&(e=(s=function(e){for(var t,r=e.length,n=0,i="",o=[],s=f(null),a=!1,c=!1,u=0,l="";n<=r;n++){if("\\"===(t=E(e,n)))t+=E(e,++n);else if("]"===t)a=!1;else if(!a)switch(!0){case"["===t:a=!0;break;case"("===t:B(F,q(e,n+1))&&(n+=2,c=!0),i+=t,u++;continue;case">"===t&&c:if(""===l||b(s,l))throw new T("Invalid capture group name");s[l]=!0,c=!(o[o.length]=[l,u]),l="";continue}c?l+=t:i+=t}return[i,o]}(e))[0],a=s[1]),s=u(k(e,t),i?this:_,C),(r||n||a.length)&&(t=g(s),r&&(t.dotAll=!0,t.raw=C(function(e){for(var t,r=e.length,n=0,i="",o=!1;n<=r;n++)"\\"===(t=E(e,n))?i+=t+E(e,++n):o||"."!==t?("["===t?o=!0:"]"===t&&(o=!1),i+=t):i+="[\\s\\S]";return i}(e),o)),n&&(t.sticky=!0),a.length)&&(t.groups=a),e!==c)try{l(s,"source",""===c?"(?:)":c)}catch(e){}return s},M=o(k),P=0;M.length>P;)a(C,k,M[P++]);(_.constructor=C).prototype=_,c(r,"RegExp",C,{constructor:!0})}v("RegExp")},{"../internals/create-non-enumerable-property":145,"../internals/define-built-in":149,"../internals/descriptors":153,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/global":188,"../internals/has-own-property":189,"../internals/inherit-if-required":196,"../internals/internal-state":199,"../internals/is-forced":205,"../internals/is-regexp":211,"../internals/object-create":229,"../internals/object-get-own-property-names":234,"../internals/object-is-prototype-of":238,"../internals/proxy-accessor":253,"../internals/regexp-get-flags":258,"../internals/regexp-sticky-helpers":259,"../internals/regexp-unsupported-dot-all":260,"../internals/regexp-unsupported-ncg":261,"../internals/set-species":265,"../internals/to-string":291,"../internals/well-known-symbol":306}],338:[function(e,t,r){"use strict";var n=e("../internals/export"),e=e("../internals/regexp-exec");n({target:"RegExp",proto:!0,forced:/./.exec!==e},{exec:e})},{"../internals/export":170,"../internals/regexp-exec":256}],339:[function(e,t,r){"use strict";var n=e("../internals/function-name").PROPER,i=e("../internals/define-built-in"),o=e("../internals/an-object"),s=e("../internals/to-string"),a=e("../internals/fails"),c=e("../internals/regexp-get-flags"),e="toString",u=RegExp.prototype,l=u[e],a=a(function(){return"/a/b"!==l.call({source:"a",flags:"b"})}),n=n&&l.name!==e;(a||n)&&i(u,e,function(){var e=o(this);return"/"+s(e.source)+"/"+s(c(e))},{unsafe:!0})},{"../internals/an-object":114,"../internals/define-built-in":149,"../internals/fails":171,"../internals/function-name":178,"../internals/regexp-get-flags":258,"../internals/to-string":291}],340:[function(e,t,r){"use strict";e("../internals/collection")("Set",function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},e("../internals/collection-strong"))},{"../internals/collection":140,"../internals/collection-strong":139}],341:[function(e,t,r){"use strict";e("../modules/es.set.constructor")},{"../modules/es.set.constructor":340}],342:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/function-uncurry-this"),o=e("../internals/not-a-regexp"),s=e("../internals/require-object-coercible"),a=e("../internals/to-string"),e=e("../internals/correct-is-regexp-logic"),c=i("".indexOf);n({target:"String",proto:!0,forced:!e("includes")},{includes:function(e){return!!~c(a(s(this)),a(o(e)),1<arguments.length?arguments[1]:void 0)}})},{"../internals/correct-is-regexp-logic":142,"../internals/export":170,"../internals/function-uncurry-this":181,"../internals/not-a-regexp":227,"../internals/require-object-coercible":262,"../internals/to-string":291}],343:[function(e,t,r){"use strict";var n=e("../internals/string-multibyte").charAt,i=e("../internals/to-string"),o=e("../internals/internal-state"),s=e("../internals/iterator-define"),a=e("../internals/create-iter-result-object"),c="String Iterator",u=o.set,l=o.getterFor(c);s(String,"String",function(e){u(this,{type:c,string:i(e),index:0})},function(){var e=l(this),t=e.string,r=e.index;return r>=t.length?a(void 0,!0):(t=n(t,r),e.index+=t.length,a(t,!1))})},{"../internals/create-iter-result-object":144,"../internals/internal-state":199,"../internals/iterator-define":216,"../internals/string-multibyte":271,"../internals/to-string":291}],344:[function(e,t,r){"use strict";var i=e("../internals/function-call"),n=e("../internals/fix-regexp-well-known-symbol-logic"),u=e("../internals/an-object"),o=e("../internals/is-null-or-undefined"),l=e("../internals/to-length"),f=e("../internals/to-string"),s=e("../internals/require-object-coercible"),p=e("../internals/get-method"),d=e("../internals/advance-string-index"),h=e("../internals/regexp-exec-abstract");n("match",function(n,a,c){return[function(e){var t=s(this),r=o(e)?void 0:p(e,n);return r?i(r,e,t):new RegExp(e)[n](f(t))},function(e){var t=u(this),r=f(e),e=c(a,t,r);if(e.done)return e.value;if(!t.global)return h(t,r);for(var n=t.unicode,i=[],o=t.lastIndex=0;null!==(s=h(t,r));){var s=f(s[0]);""===(i[o]=s)&&(t.lastIndex=d(r,l(t.lastIndex),n)),o++}return 0===o?null:i}]})},{"../internals/advance-string-index":112,"../internals/an-object":114,"../internals/fix-regexp-well-known-symbol-logic":172,"../internals/function-call":177,"../internals/get-method":186,"../internals/is-null-or-undefined":207,"../internals/regexp-exec-abstract":255,"../internals/require-object-coercible":262,"../internals/to-length":284,"../internals/to-string":291}],345:[function(e,t,r){"use strict";var x=e("../internals/function-apply"),i=e("../internals/function-call"),n=e("../internals/function-uncurry-this"),o=e("../internals/fix-regexp-well-known-symbol-logic"),s=e("../internals/fails"),S=e("../internals/an-object"),k=e("../internals/is-callable"),a=e("../internals/is-null-or-undefined"),_=e("../internals/to-integer-or-infinity"),T=e("../internals/to-length"),E=e("../internals/to-string"),c=e("../internals/require-object-coercible"),O=e("../internals/advance-string-index"),u=e("../internals/get-method"),A=e("../internals/get-substitution"),I=e("../internals/regexp-exec-abstract"),l=e("../internals/well-known-symbol")("replace"),D=Math.max,R=Math.min,C=n([].concat),M=n([].push),P=n("".indexOf),N=n("".slice),e="$0"==="a".replace(/./,"$0"),f=!!/./[l]&&""===/./[l]("a","$0");o("replace",function(e,v,j){var w=f?"$":"$0";return[function(e,t){var r=c(this),n=a(e)?void 0:u(e,l);return n?i(n,e,r,t):i(v,E(r),e,t)},function(e,t){var r=S(this),n=E(e);if("string"==typeof t&&-1===P(t,w)&&-1===P(t,"$<")){e=j(v,r,n,t);if(e.done)return e.value}for(var i,o=k(t),s=(o||(t=E(t)),r.global),a=(s&&(i=r.unicode,r.lastIndex=0),[]);null!==(p=I(r,n))&&(M(a,p),s);)""===E(p[0])&&(r.lastIndex=O(n,T(r.lastIndex),i));for(var c,u="",l=0,f=0;f<a.length;f++){for(var p,d=E((p=a[f])[0]),h=D(R(_(p.index),n.length),0),y=[],m=1;m<p.length;m++)M(y,void 0===(c=p[m])?c:String(c));var b=p.groups,g=o?(g=C([d],y,h,n),void 0!==b&&M(g,b),E(x(t,void 0,g))):A(d,n,h,y,b,t);l<=h&&(u+=N(n,l,h)+g,l=h+d.length)}return u+N(n,l)}]},!!s(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})||!e||f)},{"../internals/advance-string-index":112,"../internals/an-object":114,"../internals/fails":171,"../internals/fix-regexp-well-known-symbol-logic":172,"../internals/function-apply":174,"../internals/function-call":177,"../internals/function-uncurry-this":181,"../internals/get-method":186,"../internals/get-substitution":187,"../internals/is-callable":203,"../internals/is-null-or-undefined":207,"../internals/regexp-exec-abstract":255,"../internals/require-object-coercible":262,"../internals/to-integer-or-infinity":283,"../internals/to-length":284,"../internals/to-string":291,"../internals/well-known-symbol":306}],346:[function(e,t,r){"use strict";var s=e("../internals/function-call"),n=e("../internals/fix-regexp-well-known-symbol-logic"),a=e("../internals/an-object"),c=e("../internals/is-null-or-undefined"),u=e("../internals/require-object-coercible"),l=e("../internals/same-value"),f=e("../internals/to-string"),p=e("../internals/get-method"),d=e("../internals/regexp-exec-abstract");n("search",function(n,i,o){return[function(e){var t=u(this),r=c(e)?void 0:p(e,n);return r?s(r,e,t):new RegExp(e)[n](f(t))},function(e){var t=a(this),e=f(e),r=o(i,t,e);return r.done?r.value:(r=t.lastIndex,l(r,0)||(t.lastIndex=0),e=d(t,e),l(t.lastIndex,r)||(t.lastIndex=r),null===e?-1:e.index)}]})},{"../internals/an-object":114,"../internals/fix-regexp-well-known-symbol-logic":172,"../internals/function-call":177,"../internals/get-method":186,"../internals/is-null-or-undefined":207,"../internals/regexp-exec-abstract":255,"../internals/require-object-coercible":262,"../internals/same-value":264,"../internals/to-string":291}],347:[function(e,t,r){"use strict";var l=e("../internals/function-apply"),f=e("../internals/function-call"),n=e("../internals/function-uncurry-this"),i=e("../internals/fix-regexp-well-known-symbol-logic"),b=e("../internals/an-object"),o=e("../internals/is-null-or-undefined"),p=e("../internals/is-regexp"),d=e("../internals/require-object-coercible"),g=e("../internals/species-constructor"),v=e("../internals/advance-string-index"),j=e("../internals/to-length"),w=e("../internals/to-string"),s=e("../internals/get-method"),x=e("../internals/array-slice"),S=e("../internals/regexp-exec-abstract"),k=e("../internals/regexp-exec"),a=e("../internals/regexp-sticky-helpers"),e=e("../internals/fails"),_=a.UNSUPPORTED_Y,T=Math.min,E=[].push,O=n(/./.exec),A=n(E),I=n("".slice);i("split",function(i,h,y){var m="c"==="abbc".split(/(b)*/)[1]||4!=="test".split(/(?:)/,-1).length||2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||1<".".split(/()()/).length||"".split(/.?/).length?function(e,t){var r=w(d(this)),n=void 0===t?4294967295:t>>>0;if(0==n)return[];if(void 0===e)return[r];if(!p(e))return f(h,r,e,n);for(var i,o,s,a=[],t=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),c=0,u=new RegExp(e.source,t+"g");(i=f(k,u,r))&&!(c<(o=u.lastIndex)&&(A(a,I(r,c,i.index)),1<i.length&&i.index<r.length&&l(E,a,x(i,1)),s=i[0].length,c=o,n<=a.length));)u.lastIndex===i.index&&u.lastIndex++;return c===r.length?!s&&O(u,"")||A(a,""):A(a,I(r,c)),n<a.length?x(a,0,n):a}:"0".split(void 0,0).length?function(e,t){return void 0===e&&0===t?[]:f(h,this,e,t)}:h;return[function(e,t){var r=d(this),n=o(e)?void 0:s(e,i);return n?f(n,e,r,t):f(m,w(r),e,t)},function(e,t){var r=b(this),n=w(e),e=y(m,r,n,t,m!==h);if(e.done)return e.value;var e=g(r,RegExp),i=r.unicode,o=(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.unicode?"u":"")+(_?"g":"y"),s=new e(_?"^(?:"+r.source+")":r,o),a=void 0===t?4294967295:t>>>0;if(0==a)return[];if(0===n.length)return null===S(s,n)?[n]:[];for(var c=0,u=0,l=[];u<n.length;){s.lastIndex=_?0:u;var f,p=S(s,_?I(n,u):n);if(null===p||(f=T(j(s.lastIndex+(_?u:0)),n.length))===c)u=v(n,u,i);else{if(A(l,I(n,c,u)),l.length===a)return l;for(var d=1;d<=p.length-1;d++)if(A(l,p[d]),l.length===a)return l;u=c=f}}return A(l,I(n,c)),l}]},!!e(function(){var e=/(?:)/,t=e.exec,e=(e.exec=function(){return t.apply(this,arguments)},"ab".split(e));return 2!==e.length||"a"!==e[0]||"b"!==e[1]}),_)},{"../internals/advance-string-index":112,"../internals/an-object":114,"../internals/array-slice":131,"../internals/fails":171,"../internals/fix-regexp-well-known-symbol-logic":172,"../internals/function-apply":174,"../internals/function-call":177,"../internals/function-uncurry-this":181,"../internals/get-method":186,"../internals/is-null-or-undefined":207,"../internals/is-regexp":211,"../internals/regexp-exec":256,"../internals/regexp-exec-abstract":255,"../internals/regexp-sticky-helpers":259,"../internals/require-object-coercible":262,"../internals/species-constructor":270,"../internals/to-length":284,"../internals/to-string":291}],348:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/function-uncurry-this-clause"),o=e("../internals/object-get-own-property-descriptor").f,s=e("../internals/to-length"),a=e("../internals/to-string"),c=e("../internals/not-a-regexp"),u=e("../internals/require-object-coercible"),l=e("../internals/correct-is-regexp-logic"),e=e("../internals/is-pure"),f=i("".slice),p=Math.min,i=l("startsWith");n({target:"String",proto:!0,forced:!!(e||i||!(l=o(String.prototype,"startsWith"))||l.writable)&&!i},{startsWith:function(e){var t=a(u(this)),r=(c(e),s(p(1<arguments.length?arguments[1]:void 0,t.length))),e=a(e);return f(t,r,r+e.length)===e}})},{"../internals/correct-is-regexp-logic":142,"../internals/export":170,"../internals/function-uncurry-this-clause":180,"../internals/is-pure":210,"../internals/not-a-regexp":227,"../internals/object-get-own-property-descriptor":232,"../internals/require-object-coercible":262,"../internals/to-length":284,"../internals/to-string":291}],349:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/string-trim").trim;n({target:"String",proto:!0,forced:e("../internals/string-trim-forced")("trim")},{trim:function(){return i(this)}})},{"../internals/export":170,"../internals/string-trim":273,"../internals/string-trim-forced":272}],350:[function(e,N,L){"use strict";function o(e,t,r){var n=ae(A,t);n&&delete A[t],D(e,t,r),n&&e!==A&&D(A,t,n)}function t(e,t){var r=R[e]=j(I);return ne(r,{type:O,tag:e,description:t}),d||(r.description=t),r}function n(e,t,r){return e===A&&n(C,t,r),m(e),t=g(t),m(r),(y(R,t)?(r.enumerable?(y(e,E)&&e[E][t]&&(e[E][t]=!1),r=j(r,{enumerable:v(0,!1)})):(y(e,E)||D(e,E,v(1,j(null))),e[E][t]=!0),P):D)(e,t,r)}function r(t,e){m(t);var r=b(e),e=w(r).concat(c(r));return T(e,function(e){d&&!f(i,r,e)||n(t,e,r[e])}),t}function i(e){var e=g(e),t=f(ue,this,e);return!(this===A&&y(R,e)&&!y(C,e))&&(!(t||!y(this,e)||!y(R,e)||y(this,E)&&this[E][e])||t)}function s(e,t){var r,e=b(e),t=g(t);if(e!==A||!y(R,t)||y(C,t))return!(r=ae(e,t))||!y(R,t)||y(e,E)&&e[E][t]||(r.enumerable=!0),r}function a(e){var e=ce(b(e)),t=[];return T(e,function(e){y(R,e)||y(Y,e)||le(t,e)}),t}function c(e){var t=e===A,e=ce(t?C:b(e)),r=[];return T(e,function(e){!y(R,e)||t&&!y(A,e)||le(r,R[e])}),r}var u=e("../internals/export"),l=e("../internals/global"),f=e("../internals/function-call"),p=e("../internals/function-uncurry-this"),B=e("../internals/is-pure"),d=e("../internals/descriptors"),h=e("../internals/symbol-constructor-detection"),q=e("../internals/fails"),y=e("../internals/has-own-property"),F=e("../internals/object-is-prototype-of"),m=e("../internals/an-object"),b=e("../internals/to-indexed-object"),g=e("../internals/to-property-key"),U=e("../internals/to-string"),v=e("../internals/create-property-descriptor"),j=e("../internals/object-create"),w=e("../internals/object-keys"),W=e("../internals/object-get-own-property-names"),G=e("../internals/object-get-own-property-names-external"),V=e("../internals/object-get-own-property-symbols"),z=e("../internals/object-get-own-property-descriptor"),X=e("../internals/object-define-property"),H=e("../internals/object-define-properties"),K=e("../internals/object-property-is-enumerable"),x=e("../internals/define-built-in"),$=e("../internals/define-built-in-accessor"),S=e("../internals/shared"),k=e("../internals/shared-key"),Y=e("../internals/hidden-keys"),J=e("../internals/uid"),Z=e("../internals/well-known-symbol"),Q=e("../internals/well-known-symbol-wrapped"),ee=e("../internals/well-known-symbol-define"),te=e("../internals/symbol-define-to-primitive"),re=e("../internals/set-to-string-tag"),_=e("../internals/internal-state"),T=e("../internals/array-iteration").forEach,E=k("hidden"),O="Symbol",e="prototype",ne=_.set,ie=_.getterFor(O),A=Object[e],k=l.Symbol,I=k&&k[e],oe=l.RangeError,se=l.TypeError,_=l.QObject,ae=z.f,D=X.f,ce=G.f,ue=K.f,le=p([].push),R=S("symbols"),C=S("op-symbols"),p=S("wks"),M=!_||!_[e]||!_[e].findChild,P=d&&q(function(){return 7!==j(D({},"a",{get:function(){return D(this,"a",{value:7}).a}})).a})?o:D;h||(x(I=(k=function(){if(F(I,this))throw new se("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?U(arguments[0]):void 0,n=J(e),i=function(t){var r=void 0===this?l:this,t=(r===A&&f(i,C,t),y(r,E)&&y(r[E],n)&&(r[E][n]=!1),v(1,t));try{P(r,n,t)}catch(e){if(!(e instanceof oe))throw e;o(r,n,t)}};return d&&M&&P(A,n,{configurable:!0,set:i}),t(n,e)})[e],"toString",function(){return ie(this).tag}),x(k,"withoutSetter",function(e){return t(J(e),e)}),K.f=i,X.f=n,H.f=r,z.f=s,W.f=G.f=a,V.f=c,Q.f=function(e){return t(Z(e),e)},d&&($(I,"description",{configurable:!0,get:function(){return ie(this).description}}),B||x(A,"propertyIsEnumerable",i,{unsafe:!0}))),u({global:!0,constructor:!0,wrap:!0,forced:!h,sham:!h},{Symbol:k}),T(w(p),function(e){ee(e)}),u({target:O,stat:!0,forced:!h},{useSetter:function(){M=!0},useSimple:function(){M=!1}}),u({target:"Object",stat:!0,forced:!h,sham:!d},{create:function(e,t){return void 0===t?j(e):r(j(e),t)},defineProperty:n,defineProperties:r,getOwnPropertyDescriptor:s}),u({target:"Object",stat:!0,forced:!h},{getOwnPropertyNames:a}),te(),re(k,O),Y[E]=!0},{"../internals/an-object":114,"../internals/array-iteration":125,"../internals/create-property-descriptor":146,"../internals/define-built-in":149,"../internals/define-built-in-accessor":148,"../internals/descriptors":153,"../internals/export":170,"../internals/fails":171,"../internals/function-call":177,"../internals/function-uncurry-this":181,"../internals/global":188,"../internals/has-own-property":189,"../internals/hidden-keys":190,"../internals/internal-state":199,"../internals/is-pure":210,"../internals/object-create":229,"../internals/object-define-properties":230,"../internals/object-define-property":231,"../internals/object-get-own-property-descriptor":232,"../internals/object-get-own-property-names":234,"../internals/object-get-own-property-names-external":233,"../internals/object-get-own-property-symbols":235,"../internals/object-is-prototype-of":238,"../internals/object-keys":240,"../internals/object-property-is-enumerable":241,"../internals/set-to-string-tag":266,"../internals/shared":269,"../internals/shared-key":267,"../internals/symbol-constructor-detection":274,"../internals/symbol-define-to-primitive":275,"../internals/to-indexed-object":282,"../internals/to-property-key":289,"../internals/to-string":291,"../internals/uid":299,"../internals/well-known-symbol":306,"../internals/well-known-symbol-define":304,"../internals/well-known-symbol-wrapped":305}],351:[function(e,t,r){"use strict";var n,i,o,s,a,c,u,l=e("../internals/export"),f=e("../internals/descriptors"),p=e("../internals/global"),d=e("../internals/function-uncurry-this"),h=e("../internals/has-own-property"),y=e("../internals/is-callable"),m=e("../internals/object-is-prototype-of"),b=e("../internals/to-string"),g=e("../internals/define-built-in-accessor"),e=e("../internals/copy-constructor-properties"),v=p.Symbol,j=v&&v.prototype;!f||!y(v)||"description"in j&&void 0===v().description||(n={},e(p=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:b(arguments[0]),t=m(j,this)?new v(e):void 0===e?v():v(e);return""===e&&(n[t]=!0),t},v),(p.prototype=j).constructor=p,i="Symbol(description detection)"===String(v("description detection")),o=d(j.valueOf),s=d(j.toString),a=/^Symbol\((.*)\)[^)]+$/,c=d("".replace),u=d("".slice),g(j,"description",{configurable:!0,get:function(){var e=o(this);return h(n,e)?"":(e=s(e),""===(e=i?u(e,7,-1):c(e,a,"$1"))?void 0:e)}}),l({global:!0,constructor:!0,forced:!0},{Symbol:p}))},{"../internals/copy-constructor-properties":141,"../internals/define-built-in-accessor":148,"../internals/descriptors":153,"../internals/export":170,"../internals/function-uncurry-this":181,"../internals/global":188,"../internals/has-own-property":189,"../internals/is-callable":203,"../internals/object-is-prototype-of":238,"../internals/to-string":291}],352:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/get-built-in"),o=e("../internals/has-own-property"),s=e("../internals/to-string"),a=e("../internals/shared"),e=e("../internals/symbol-registry-detection"),c=a("string-to-symbol-registry"),u=a("symbol-to-string-registry");n({target:"Symbol",stat:!0,forced:!e},{for:function(e){var t,e=s(e);return o(c,e)?c[e]:(t=i("Symbol")(e),c[e]=t,u[t]=e,t)}})},{"../internals/export":170,"../internals/get-built-in":182,"../internals/has-own-property":189,"../internals/shared":269,"../internals/symbol-registry-detection":276,"../internals/to-string":291}],353:[function(e,t,r){"use strict";e("../internals/well-known-symbol-define")("iterator")},{"../internals/well-known-symbol-define":304}],354:[function(e,t,r){"use strict";e("../modules/es.symbol.constructor"),e("../modules/es.symbol.for"),e("../modules/es.symbol.key-for"),e("../modules/es.json.stringify"),e("../modules/es.object.get-own-property-symbols")},{"../modules/es.json.stringify":323,"../modules/es.object.get-own-property-symbols":327,"../modules/es.symbol.constructor":350,"../modules/es.symbol.for":352,"../modules/es.symbol.key-for":355}],355:[function(e,t,r){"use strict";var n=e("../internals/export"),i=e("../internals/has-own-property"),o=e("../internals/is-symbol"),s=e("../internals/try-to-string"),a=e("../internals/shared"),e=e("../internals/symbol-registry-detection"),c=a("symbol-to-string-registry");n({target:"Symbol",stat:!0,forced:!e},{keyFor:function(e){if(!o(e))throw new TypeError(s(e)+" is not a symbol");if(i(c,e))return c[e]}})},{"../internals/export":170,"../internals/has-own-property":189,"../internals/is-symbol":212,"../internals/shared":269,"../internals/symbol-registry-detection":276,"../internals/try-to-string":293}],356:[function(e,t,r){"use strict";var n=e("../internals/function-uncurry-this"),i=e("../internals/array-buffer-view-core"),o=n(e("../internals/array-copy-within")),s=i.aTypedArray;(0,i.exportTypedArrayMethod)("copyWithin",function(e,t){return o(s(this),e,t,2<arguments.length?arguments[2]:void 0)})},{"../internals/array-buffer-view-core":117,"../internals/array-copy-within":119,"../internals/function-uncurry-this":181}],357:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/array-iteration").every,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("every",function(e){return i(o(this),e,1<arguments.length?arguments[1]:void 0)})},{"../internals/array-buffer-view-core":117,"../internals/array-iteration":125}],358:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/array-fill"),o=e("../internals/to-big-int"),s=e("../internals/classof"),a=e("../internals/function-call"),c=e("../internals/function-uncurry-this"),e=e("../internals/fails"),u=n.aTypedArray,n=n.exportTypedArrayMethod,l=c("".slice);n("fill",function(e){var t=arguments.length,e=(u(this),"Big"===l(s(this),0,3)?o(e):+e);return a(i,this,e,1<t?arguments[1]:void 0,2<t?arguments[2]:void 0)},e(function(){var e=0;return new Int8Array(2).fill({valueOf:function(){return e++}}),1!==e}))},{"../internals/array-buffer-view-core":117,"../internals/array-fill":120,"../internals/classof":138,"../internals/fails":171,"../internals/function-call":177,"../internals/function-uncurry-this":181,"../internals/to-big-int":280}],359:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/array-iteration").filter,o=e("../internals/typed-array-from-species-and-list"),s=n.aTypedArray;(0,n.exportTypedArrayMethod)("filter",function(e){e=i(s(this),e,1<arguments.length?arguments[1]:void 0);return o(this,e)})},{"../internals/array-buffer-view-core":117,"../internals/array-iteration":125,"../internals/typed-array-from-species-and-list":296}],360:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/array-iteration").findIndex,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("findIndex",function(e){return i(o(this),e,1<arguments.length?arguments[1]:void 0)})},{"../internals/array-buffer-view-core":117,"../internals/array-iteration":125}],361:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/array-iteration").find,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("find",function(e){return i(o(this),e,1<arguments.length?arguments[1]:void 0)})},{"../internals/array-buffer-view-core":117,"../internals/array-iteration":125}],362:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/array-iteration").forEach,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("forEach",function(e){i(o(this),e,1<arguments.length?arguments[1]:void 0)})},{"../internals/array-buffer-view-core":117,"../internals/array-iteration":125}],363:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/array-includes").includes,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("includes",function(e){return i(o(this),e,1<arguments.length?arguments[1]:void 0)})},{"../internals/array-buffer-view-core":117,"../internals/array-includes":124}],364:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/array-includes").indexOf,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("indexOf",function(e){return i(o(this),e,1<arguments.length?arguments[1]:void 0)})},{"../internals/array-buffer-view-core":117,"../internals/array-includes":124}],365:[function(e,t,r){"use strict";function n(){return l(d(this))}var i=e("../internals/global"),o=e("../internals/fails"),s=e("../internals/function-uncurry-this"),a=e("../internals/array-buffer-view-core"),c=e("../modules/es.array.iterator"),u=e("../internals/well-known-symbol")("iterator"),e=i.Uint8Array,l=s(c.values),f=s(c.keys),p=s(c.entries),d=a.aTypedArray,i=a.exportTypedArrayMethod,h=e&&e.prototype,s=!o(function(){h[u].call([1])}),c=!!h&&h.values&&h[u]===h.values&&"values"===h.values.name;i("entries",function(){return p(d(this))},s),i("keys",function(){return f(d(this))},s),i("values",n,s||!c,{name:"values"}),i(u,n,s||!c,{name:"values"})},{"../internals/array-buffer-view-core":117,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/global":188,"../internals/well-known-symbol":306,"../modules/es.array.iterator":316}],366:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),e=e("../internals/function-uncurry-this"),i=n.aTypedArray,n=n.exportTypedArrayMethod,o=e([].join);n("join",function(e){return o(i(this),e)})},{"../internals/array-buffer-view-core":117,"../internals/function-uncurry-this":181}],367:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/function-apply"),o=e("../internals/array-last-index-of"),s=n.aTypedArray;(0,n.exportTypedArrayMethod)("lastIndexOf",function(e){var t=arguments.length;return i(o,s(this),1<t?[e,arguments[1]]:[e])})},{"../internals/array-buffer-view-core":117,"../internals/array-last-index-of":126,"../internals/function-apply":174}],368:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/array-iteration").map,o=e("../internals/typed-array-species-constructor"),s=n.aTypedArray;(0,n.exportTypedArrayMethod)("map",function(e){return i(s(this),e,1<arguments.length?arguments[1]:void 0,function(e,t){return new(o(e))(t)})})},{"../internals/array-buffer-view-core":117,"../internals/array-iteration":125,"../internals/typed-array-species-constructor":298}],369:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/array-reduce").right,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("reduceRight",function(e){var t=arguments.length;return i(o(this),e,t,1<t?arguments[1]:void 0)})},{"../internals/array-buffer-view-core":117,"../internals/array-reduce":129}],370:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/array-reduce").left,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("reduce",function(e){var t=arguments.length;return i(o(this),e,t,1<t?arguments[1]:void 0)})},{"../internals/array-buffer-view-core":117,"../internals/array-reduce":129}],371:[function(e,t,r){"use strict";var e=e("../internals/array-buffer-view-core"),i=e.aTypedArray,e=e.exportTypedArrayMethod,o=Math.floor;e("reverse",function(){for(var e,t=i(this).length,r=o(t/2),n=0;n<r;)e=this[n],this[n++]=this[--t],this[t]=e;return this})},{"../internals/array-buffer-view-core":117}],372:[function(e,t,r){"use strict";var n=e("../internals/global"),o=e("../internals/function-call"),i=e("../internals/array-buffer-view-core"),s=e("../internals/length-of-array-like"),a=e("../internals/to-offset"),c=e("../internals/to-object"),e=e("../internals/fails"),u=n.RangeError,l=n.Int8Array,n=l&&l.prototype,f=n&&n.set,p=i.aTypedArray,n=i.exportTypedArrayMethod,d=!e(function(){var e=new Uint8ClampedArray(2);return o(f,e,{length:1,0:3},1),3!==e[1]}),i=d&&i.NATIVE_ARRAY_BUFFER_VIEWS&&e(function(){var e=new l(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]});n("set",function(e){p(this);var t=a(1<arguments.length?arguments[1]:void 0,1),r=c(e);if(d)return o(f,this,r,t);var e=this.length,n=s(r),i=0;if(e<n+t)throw new u("Wrong length");for(;i<n;)this[t+i]=r[i++]},!d||i)},{"../internals/array-buffer-view-core":117,"../internals/fails":171,"../internals/function-call":177,"../internals/global":188,"../internals/length-of-array-like":219,"../internals/to-object":285,"../internals/to-offset":286}],373:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),s=e("../internals/typed-array-species-constructor"),i=e("../internals/fails"),a=e("../internals/array-slice"),c=n.aTypedArray;(0,n.exportTypedArrayMethod)("slice",function(e,t){for(var r=a(c(this),e,t),e=s(this),n=0,i=r.length,o=new e(i);n<i;)o[n]=r[n++];return o},i(function(){new Int8Array(1).slice()}))},{"../internals/array-buffer-view-core":117,"../internals/array-slice":131,"../internals/fails":171,"../internals/typed-array-species-constructor":298}],374:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/array-iteration").some,o=n.aTypedArray;(0,n.exportTypedArrayMethod)("some",function(e){return i(o(this),e,1<arguments.length?arguments[1]:void 0)})},{"../internals/array-buffer-view-core":117,"../internals/array-iteration":125}],375:[function(e,t,r){"use strict";var n=e("../internals/global"),i=e("../internals/function-uncurry-this-clause"),o=e("../internals/fails"),s=e("../internals/a-callable"),a=e("../internals/array-sort"),c=e("../internals/array-buffer-view-core"),u=e("../internals/engine-ff-version"),l=e("../internals/engine-is-ie-or-edge"),f=e("../internals/engine-v8-version"),p=e("../internals/engine-webkit-version"),d=c.aTypedArray,e=c.exportTypedArrayMethod,h=n.Uint16Array,y=h&&i(h.prototype.sort),c=!(!y||o(function(){y(new h(2),null)})&&o(function(){y(new h(2),{})})),m=!!y&&!o(function(){if(f)return f<74;if(u)return u<67;if(l)return!0;if(p)return p<602;for(var e,t=new h(516),r=Array(516),n=0;n<516;n++)e=n%4,t[n]=515-n,r[n]=n-2*e+3;for(y(t,function(e,t){return(e/4|0)-(t/4|0)}),n=0;n<516;n++)if(t[n]!==r[n])return!0});e("sort",function(e){return void 0!==e&&s(e),m?y(this,e):a(d(this),(r=e,function(e,t){return void 0!==r?+r(e,t)||0:t!=t?-1:e!=e?1:0===e&&0===t?0<1/e&&1/t<0?1:-1:t<e}));var r},!m||c)},{"../internals/a-callable":108,"../internals/array-buffer-view-core":117,"../internals/array-sort":132,"../internals/engine-ff-version":158,"../internals/engine-is-ie-or-edge":161,"../internals/engine-v8-version":167,"../internals/engine-webkit-version":168,"../internals/fails":171,"../internals/function-uncurry-this-clause":180,"../internals/global":188}],376:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core"),i=e("../internals/to-length"),o=e("../internals/to-absolute-index"),s=e("../internals/typed-array-species-constructor"),a=n.aTypedArray;(0,n.exportTypedArrayMethod)("subarray",function(e,t){var r=a(this),n=r.length,e=o(e,n);return new(s(r))(r.buffer,r.byteOffset+e*r.BYTES_PER_ELEMENT,i((void 0===t?n:o(t,n))-e))})},{"../internals/array-buffer-view-core":117,"../internals/to-absolute-index":279,"../internals/to-length":284,"../internals/typed-array-species-constructor":298}],377:[function(e,t,r){"use strict";var n=e("../internals/global"),i=e("../internals/function-apply"),o=e("../internals/array-buffer-view-core"),s=e("../internals/fails"),a=e("../internals/array-slice"),c=n.Int8Array,u=o.aTypedArray,e=o.exportTypedArrayMethod,l=[].toLocaleString,f=!!c&&s(function(){l.call(new c(1))});e("toLocaleString",function(){return i(l,f?a(u(this)):u(this),a(arguments))},s(function(){return[1,2].toLocaleString()!==new c([1,2]).toLocaleString()})||!s(function(){c.prototype.toLocaleString.call([1,2])}))},{"../internals/array-buffer-view-core":117,"../internals/array-slice":131,"../internals/fails":171,"../internals/function-apply":174,"../internals/global":188}],378:[function(e,t,r){"use strict";var n=e("../internals/array-buffer-view-core").exportTypedArrayMethod,i=e("../internals/fails"),o=e("../internals/global"),e=e("../internals/function-uncurry-this"),o=o.Uint8Array,o=o&&o.prototype||{},s=[].toString,a=e([].join),e=(i(function(){s.call({})})&&(s=function(){return a(this)}),o.toString!==s);n("toString",s,e)},{"../internals/array-buffer-view-core":117,"../internals/fails":171,"../internals/function-uncurry-this":181,"../internals/global":188}],379:[function(e,t,r){"use strict";e("../internals/typed-array-constructor")("Uint8",function(n){return function(e,t,r){return n(this,e,t,r)}})},{"../internals/typed-array-constructor":294}],380:[function(e,t,r){"use strict";function n(t){if(t&&t.forEach!==c)try{u(t,"forEach",c)}catch(e){t.forEach=c}}var i,o=e("../internals/global"),s=e("../internals/dom-iterables"),a=e("../internals/dom-token-list-prototype"),c=e("../internals/array-for-each"),u=e("../internals/create-non-enumerable-property");for(i in s)s[i]&&n(o[i]&&o[i].prototype);n(a)},{"../internals/array-for-each":121,"../internals/create-non-enumerable-property":145,"../internals/dom-iterables":156,"../internals/dom-token-list-prototype":157,"../internals/global":188}],381:[function(e,t,r){"use strict";function n(t,e){if(t){if(t[f]!==p)try{u(t,f,p)}catch(e){t[f]=p}if(l(t,e,!0),s[e])for(var r in c)if(t[r]!==c[r])try{u(t,r,c[r])}catch(e){t[r]=c[r]}}}var i,o=e("../internals/global"),s=e("../internals/dom-iterables"),a=e("../internals/dom-token-list-prototype"),c=e("../modules/es.array.iterator"),u=e("../internals/create-non-enumerable-property"),l=e("../internals/set-to-string-tag"),f=e("../internals/well-known-symbol")("iterator"),p=c.values;for(i in s)n(o[i]&&o[i].prototype,i);n(a,"DOMTokenList")},{"../internals/create-non-enumerable-property":145,"../internals/dom-iterables":156,"../internals/dom-token-list-prototype":157,"../internals/global":188,"../internals/set-to-string-tag":266,"../internals/well-known-symbol":306,"../modules/es.array.iterator":316}],382:[function(e,t,r){function n(e){return Object.prototype.toString.call(e)}r.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===n(e)},r.isBoolean=function(e){return"boolean"==typeof e},r.isNull=function(e){return null===e},r.isNullOrUndefined=function(e){return null==e},r.isNumber=function(e){return"number"==typeof e},r.isString=function(e){return"string"==typeof e},r.isSymbol=function(e){return"symbol"==typeof e},r.isUndefined=function(e){return void 0===e},r.isRegExp=function(e){return"[object RegExp]"===n(e)},r.isObject=function(e){return"object"==typeof e&&null!==e},r.isDate=function(e){return"[object Date]"===n(e)},r.isError=function(e){return"[object Error]"===n(e)||e instanceof Error},r.isFunction=function(e){return"function"==typeof e},r.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},r.isBuffer=e("buffer").Buffer.isBuffer},{buffer:103}],383:[function(e,t,r){!function(e){"use strict";b=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|'[^']*'|'[^']*'/g,g=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,v=/[^-+\dA-Z]/g;var b,g,v,j=function(e,t,r,n){if(1!==arguments.length||"string"!==function(e){if(null===e)return"null";if(void 0===e)return"undefined";if("object"!=typeof e)return typeof e;if(Array.isArray(e))return"array";return{}.toString.call(e).slice(8,-1).toLowerCase()}(e)||/\d/.test(e)||(t=e,e=void 0),(e=e||new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var i,o=(t=String(j.masks[t]||t||j.masks.default)).slice(0,4),o=("UTC:"!==o&&"GMT:"!==o||(t=t.slice(4),r=!0,"GMT:"===o&&(n=!0)),r?"getUTC":"get"),s=e[o+"Date"](),a=e[o+"Day"](),c=e[o+"Month"](),u=e[o+"FullYear"](),l=e[o+"Hours"](),f=e[o+"Minutes"](),p=e[o+"Seconds"](),o=e[o+"Milliseconds"](),d=r?0:e.getTimezoneOffset(),h=(h=e,(h=new Date(h.getFullYear(),h.getMonth(),h.getDate())).setDate(h.getDate()-(h.getDay()+6)%7+3),(y=new Date(h.getFullYear(),0,4)).setDate(y.getDate()-(y.getDay()+6)%7+3),i=h.getTimezoneOffset()-y.getTimezoneOffset(),h.setHours(h.getHours()-i),i=(h-y)/6048e5,1+Math.floor(i)),y=function(e){e=e.getDay();0===e&&(e=7);return e}(e),m={d:s,dd:w(s),ddd:j.i18n.dayNames[a],dddd:j.i18n.dayNames[a+7],m:c+1,mm:w(c+1),mmm:j.i18n.monthNames[c],mmmm:j.i18n.monthNames[c+12],yy:String(u).slice(2),yyyy:u,h:l%12||12,hh:w(l%12||12),H:l,HH:w(l),M:f,MM:w(f),s:p,ss:w(p),l:w(o,3),L:w(Math.round(o/10)),t:l<12?"a":"p",tt:l<12?"am":"pm",T:l<12?"A":"P",TT:l<12?"AM":"PM",Z:n?"GMT":r?"UTC":(String(e).match(g)||[""]).pop().replace(v,""),o:(0<d?"-":"+")+w(100*Math.floor(Math.abs(d)/60)+Math.abs(d)%60,4),S:["th","st","nd","rd"][3<s%10?0:(s%100-s%10!=10)*s%10],W:h,N:y};return t.replace(b,function(e){return e in m?m[e]:e.slice(1,e.length-1)})};function w(e,t){for(e=String(e),t=t||2;e.length<t;)e="0"+e;return e}j.masks={default:"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:sso",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'",expiresHeaderFormat:"ddd, dd mmm yyyy HH:MM:ss Z"},j.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"]},"object"==typeof r?t.exports=j:e.dateFormat=j}(this)},{}],384:[function(e,t,r){"use strict";var n=e("has-property-descriptors")(),i=e("get-intrinsic"),c=n&&i("%Object.defineProperty%",!0);if(c)try{c({},"a",{value:1})}catch(e){c=!1}var u=i("%SyntaxError%"),l=i("%TypeError%"),f=e("gopd");t.exports=function(e,t,r){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new l("`obj` must be an object or a function`");if("string"!=typeof t&&"symbol"!=typeof t)throw new l("`property` must be a string or a symbol`");if(3<arguments.length&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new l("`nonEnumerable`, if provided, must be a boolean or null");if(4<arguments.length&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new l("`nonWritable`, if provided, must be a boolean or null");if(5<arguments.length&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new l("`nonConfigurable`, if provided, must be a boolean or null");if(6<arguments.length&&"boolean"!=typeof arguments[6])throw new l("`loose`, if provided, must be a boolean");var n=3<arguments.length?arguments[3]:null,i=4<arguments.length?arguments[4]:null,o=5<arguments.length?arguments[5]:null,s=6<arguments.length&&arguments[6],a=!!f&&f(e,t);if(c)c(e,t,{configurable:null===o&&a?a.configurable:!o,enumerable:null===n&&a?a.enumerable:!n,value:r,writable:null===i&&a?a.writable:!i});else{if(!s&&(n||i||o))throw new u("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");e[t]=r}}},{"get-intrinsic":390,gopd:391,"has-property-descriptors":392}],385:[function(e,t,r){"use strict";var s=/["'&<>]/;t.exports=function(e){var t,r=""+e,e=s.exec(r);if(!e)return r;var n="",i=0,o=0;for(i=e.index;i<r.length;i++){switch(r.charCodeAt(i)){case 34:t=""";break;case 38:t="&";break;case 39:t="'";break;case 60:t="<";break;case 62:t=">";break;default:continue}o!==i&&(n+=r.substring(o,i)),o=i+1,n+=t}return o!==i?n+r.substring(o,i):n}},{}],386:[function(e,t,r){"use strict";var n="object"==typeof Reflect?Reflect:null,c=n&&"function"==typeof n.apply?n.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};var i=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)},o=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}t.exports=s,t.exports.once=function(a,c){return new Promise(function(e,t){function r(e){a.removeListener(c,n),t(e)}function n(){"function"==typeof a.removeListener&&a.removeListener("error",r),e([].slice.call(arguments))}var i,o,s;m(a,c,n,{once:!0}),"error"!==c&&(o=r,s={once:!0},"function"==typeof(i=a).on)&&m(i,"error",o,s)})},(s.EventEmitter=s).prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var a=10;function u(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function l(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function f(e,t,r,n){var i,o;return u(r),void 0===(i=e._events)?(i=e._events=Object.create(null),e._eventsCount=0):(void 0!==i.newListener&&(e.emit("newListener",t,r.listener||r),i=e._events),o=i[t]),void 0===o?(o=i[t]=r,++e._eventsCount):("function"==typeof o?o=i[t]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),0<(i=l(e))&&o.length>i&&!o.warned&&(o.warned=!0,(n=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit")).name="MaxListenersExceededWarning",n.emitter=e,n.type=t,n.count=o.length,r=n,console)&&console.warn&&console.warn(r)),e}function p(e,t,r){e={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},t=function(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}.bind(e);return t.listener=r,e.wrapFn=t}function d(e,t,r){e=e._events;if(void 0===e)return[];e=e[t];if(void 0===e)return[];if("function"==typeof e)return r?[e.listener||e]:[e];if(r){for(var n=e,i=new Array(n.length),o=0;o<i.length;++o)i[o]=n[o].listener||n[o];return i}return y(e,e.length)}function h(e){var t=this._events;if(void 0!==t){t=t[e];if("function"==typeof t)return 1;if(void 0!==t)return t.length}return 0}function y(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}function m(r,n,i,o){if("function"==typeof r.on)o.once?r.once(n,i):r.on(n,i);else{if("function"!=typeof r.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof r);r.addEventListener(n,function e(t){o.once&&r.removeEventListener(n,e),i(t)})}}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return a},set:function(e){if("number"!=typeof e||e<0||o(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");a=e}}),s.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||o(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},s.prototype.getMaxListeners=function(){return l(this)},s.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var n="error"===e,i=this._events;if(void 0!==i)n=n&&void 0===i.error;else if(!n)return!1;if(n){if((o=0<t.length?t[0]:o)instanceof Error)throw o;n=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw n.context=o,n}var o=i[e];if(void 0===o)return!1;if("function"==typeof o)c(o,this,t);else for(var s=o.length,a=y(o,s),r=0;r<s;++r)c(a[r],this,t);return!0},s.prototype.on=s.prototype.addListener=function(e,t){return f(this,e,t,!1)},s.prototype.prependListener=function(e,t){return f(this,e,t,!0)},s.prototype.once=function(e,t){return u(t),this.on(e,p(this,e,t)),this},s.prototype.prependOnceListener=function(e,t){return u(t),this.prependListener(e,p(this,e,t)),this},s.prototype.off=s.prototype.removeListener=function(e,t){var r,n,i,o,s;if(u(t),void 0!==(n=this._events)&&void 0!==(r=n[e]))if(r===t||r.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(i=-1,o=r.length-1;0<=o;o--)if(r[o]===t||r[o].listener===t){s=r[o].listener,i=o;break}if(i<0)return this;if(0===i)r.shift();else{for(var a=r,c=i;c+1<a.length;c++)a[c]=a[c+1];a.pop()}1===r.length&&(n[e]=r[0]),void 0!==n.removeListener&&this.emit("removeListener",e,s||t)}return this},s.prototype.removeAllListeners=function(e){var t,r=this._events;if(void 0!==r)if(void 0===r.removeListener)0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[e]);else if(0===arguments.length){for(var n,i=Object.keys(r),o=0;o<i.length;++o)"removeListener"!==(n=i[o])&&this.removeAllListeners(n);this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0}else if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(void 0!==t)for(o=t.length-1;0<=o;o--)this.removeListener(e,t[o]);return this},s.prototype.listeners=function(e){return d(this,e,!0)},s.prototype.rawListeners=function(e){return d(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):h.call(e,t)},s.prototype.listenerCount=h,s.prototype.eventNames=function(){return 0<this._eventsCount?i(this._events):[]}},{}],387:[function(e,t,r){"use strict";var g=e("is-callable"),v=Object.prototype.toString,j=Object.prototype.hasOwnProperty;t.exports=function(e,t,r){if(!g(t))throw new TypeError("iterator must be a function");var n;if(3<=arguments.length&&(n=r),"[object Array]"===v.call(e))for(var i=e,o=t,s=n,a=0,c=i.length;a<c;a++)j.call(i,a)&&(null==s?o(i[a],a,i):o.call(s,i[a],a,i));else if("string"==typeof e)for(var u=e,l=t,f=n,p=0,d=u.length;p<d;p++)null==f?l(u.charAt(p),p,u):l.call(f,u.charAt(p),p,u);else{var h,y=e,m=t,b=n;for(h in y)j.call(y,h)&&(null==b?m(y[h],h,y):m.call(b,y[h],h,y))}}},{"is-callable":410}],388:[function(e,t,r){"use strict";function c(e,t){for(var r=[],n=0;n<e.length;n+=1)r[n]=e[n];for(var i=0;i<t.length;i+=1)r[i+e.length]=t[i];return r}var u=Object.prototype.toString,l=Math.max;t.exports=function(t){var r=this;if("function"!=typeof r||"[object Function]"!==u.apply(r))throw new TypeError("Function.prototype.bind called on incompatible "+r);for(var n,e,i=function(e,t){for(var r=[],n=t||0,i=0;n<e.length;n+=1,i+=1)r[i]=e[n];return r}(arguments,1),o=l(0,r.length-i.length),s=[],a=0;a<o;a++)s[a]="$"+a;return n=Function("binder","return function ("+function(e,t){for(var r="",n=0;n<e.length;n+=1)r+=e[n],n+1<e.length&&(r+=t);return r}(s,",")+"){ return binder.apply(this,arguments); }")(function(){var e;return this instanceof n?(e=r.apply(this,c(i,arguments)),Object(e)===e?e:this):r.apply(t,c(i,arguments))}),r.prototype&&((e=function(){}).prototype=r.prototype,n.prototype=new e,e.prototype=null),n}},{}],389:[function(e,t,r){"use strict";e=e("./implementation");t.exports=Function.prototype.bind||e},{"./implementation":388}],390:[function(e,t,r){"use strict";var n,p=SyntaxError,i=Function,d=TypeError,o=function(e){try{return i('"use strict"; return ('+e+").constructor;")()}catch(e){}},h=Object.getOwnPropertyDescriptor;if(h)try{h({},"")}catch(e){h=null}function s(){throw new d}var a=h?function(){try{return s}catch(e){try{return h(arguments,"callee").get}catch(e){return s}}}():s,c=e("has-symbols")(),u=e("has-proto")(),l=Object.getPrototypeOf||(u?function(e){return e.__proto__}:null),y={},u="undefined"!=typeof Uint8Array&&l?l(Uint8Array):n,m={"%AggregateError%":"undefined"==typeof AggregateError?n:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?n:ArrayBuffer,"%ArrayIteratorPrototype%":c&&l?l([][Symbol.iterator]()):n,"%AsyncFromSyncIteratorPrototype%":n,"%AsyncFunction%":y,"%AsyncGenerator%":y,"%AsyncGeneratorFunction%":y,"%AsyncIteratorPrototype%":y,"%Atomics%":"undefined"==typeof Atomics?n:Atomics,"%BigInt%":"undefined"==typeof BigInt?n:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?n:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?n:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?n:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?n:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?n:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?n:FinalizationRegistry,"%Function%":i,"%GeneratorFunction%":y,"%Int8Array%":"undefined"==typeof Int8Array?n:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?n:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?n:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":c&&l?l(l([][Symbol.iterator]())):n,"%JSON%":"object"==typeof JSON?JSON:n,"%Map%":"undefined"==typeof Map?n:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&c&&l?l((new Map)[Symbol.iterator]()):n,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?n:Promise,"%Proxy%":"undefined"==typeof Proxy?n:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?n:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?n:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&c&&l?l((new Set)[Symbol.iterator]()):n,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?n:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":c&&l?l(""[Symbol.iterator]()):n,"%Symbol%":c?Symbol:n,"%SyntaxError%":p,"%ThrowTypeError%":a,"%TypedArray%":u,"%TypeError%":d,"%Uint8Array%":"undefined"==typeof Uint8Array?n:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?n:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?n:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?n:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?n:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?n:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?n:WeakSet};if(l)try{null.error}catch(e){c=l(l(e));m["%Error.prototype%"]=c}function b(e){var t,r;return"%AsyncFunction%"===e?t=o("async function () {}"):"%GeneratorFunction%"===e?t=o("function* () {}"):"%AsyncGeneratorFunction%"===e?t=o("async function* () {}"):"%AsyncGenerator%"===e?(r=b("%AsyncGeneratorFunction%"))&&(t=r.prototype):"%AsyncIteratorPrototype%"===e&&(r=b("%AsyncGenerator%"))&&l&&(t=l(r.prototype)),m[e]=t}var g={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},a=e("function-bind"),v=e("hasown"),j=a.call(Function.call,Array.prototype.concat),w=a.call(Function.apply,Array.prototype.splice),x=a.call(Function.call,String.prototype.replace),S=a.call(Function.call,String.prototype.slice),k=a.call(Function.call,RegExp.prototype.exec),_=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,T=/\\(\\)?/g;t.exports=function(e,t){if("string"!=typeof e||0===e.length)throw new d("intrinsic name must be a non-empty string");if(1<arguments.length&&"boolean"!=typeof t)throw new d('"allowMissing" argument must be a boolean');if(null===k(/^%?[^%]*%?$/,e))throw new p("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(e){var t=S(e,0,1),r=S(e,-1);if("%"===t&&"%"!==r)throw new p("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new p("invalid intrinsic syntax, expected opening `%`");var i=[];return x(e,_,function(e,t,r,n){i[i.length]=r?x(n,T,"$1"):t||e}),i}(e),n=0<r.length?r[0]:"",i=function(e,t){var r,n=e;if(v(g,n)&&(n="%"+(r=g[n])[0]+"%"),v(m,n)){var i=m[n];if(void 0!==(i=i===y?b(n):i)||t)return{alias:r,name:n,value:i};throw new d("intrinsic "+e+" exists, but is not available. Please file an issue!")}throw new p("intrinsic "+e+" does not exist!")}("%"+n+"%",t),o=(i.name,i.value),s=!1,i=i.alias;i&&(n=i[0],w(r,j([0,1],i)));for(var a=1,c=!0;a<r.length;a+=1){var u=r[a],l=S(u,0,1),f=S(u,-1);if(('"'===l||"'"===l||"`"===l||'"'===f||"'"===f||"`"===f)&&l!==f)throw new p("property names with quotes must have matching quotes");if("constructor"!==u&&c||(s=!0),v(m,l="%"+(n+="."+u)+"%"))o=m[l];else if(null!=o){if(!(u in o)){if(t)return;throw new d("base intrinsic for "+e+" exists, but the property is not available.")}o=h&&a+1>=r.length?(c=!!(f=h(o,u)))&&"get"in f&&!("originalValue"in f.get)?f.get:o[u]:(c=v(o,u),o[u]),c&&!s&&(m[l]=o)}}return o}},{"function-bind":389,"has-proto":393,"has-symbols":394,hasown:397}],391:[function(t,e,r){"use strict";t=t("get-intrinsic")("%Object.getOwnPropertyDescriptor%",!0);if(t)try{t([],"length")}catch(e){t=null}e.exports=t},{"get-intrinsic":390}],392:[function(e,t,r){"use strict";function n(){if(i)try{return i({},"a",{value:1}),!0}catch(e){}return!1}var i=e("get-intrinsic")("%Object.defineProperty%",!0);n.hasArrayLengthDefineBug=function(){if(!n())return null;try{return 1!==i([],"length",{value:1}).length}catch(e){return!0}},t.exports=n},{"get-intrinsic":390}],393:[function(e,t,r){"use strict";var n={foo:{}},i=Object;t.exports=function(){return{__proto__:n}.foo===n.foo&&!({__proto__:null}instanceof i)}},{}],394:[function(e,t,r){"use strict";var n="undefined"!=typeof Symbol&&Symbol,i=e("./shams");t.exports=function(){return"function"==typeof n&&"function"==typeof Symbol&&"symbol"==typeof n("foo")&&"symbol"==typeof Symbol("bar")&&i()}},{"./shams":395}],395:[function(e,t,r){"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"!=typeof Symbol.iterator){var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;r=Object.getOwnPropertySymbols(e);if(1!==r.length||r[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){r=Object.getOwnPropertyDescriptor(e,t);if(42!==r.value||!0!==r.enumerable)return!1}}return!0}},{}],396:[function(e,t,r){"use strict";var n=e("has-symbols/shams");t.exports=function(){return n()&&!!Symbol.toStringTag}},{"has-symbols/shams":395}],397:[function(e,t,r){"use strict";var n=Function.prototype.call,i=Object.prototype.hasOwnProperty,e=e("function-bind");t.exports=e.call(n,i)},{"function-bind":389}],398:[function(e,t,r){var n,i=e("http"),o=e("url"),s=t.exports;for(n in i)i.hasOwnProperty(n)&&(s[n]=i[n]);function a(e){if((e="string"==typeof e?o.parse(e):e).protocol||(e.protocol="https:"),"https:"!==e.protocol)throw new Error('Protocol "'+e.protocol+'" not supported. Expected "https:"');return e}s.request=function(e,t){return e=a(e),i.request.call(this,e,t)},s.get=function(e,t){return e=a(e),i.get.call(this,e,t)}},{http:539,url:543}],399:[function(e,t,r){"use strict";var n=e("util"),i=e("ms");t.exports=function(e){var t;return"number"==typeof e?e:(void 0===(t=i(e))&&(e=new Error(n.format("humanize-ms(%j) result undefined",e)),console.warn(e.stack)),t)}},{ms:432,util:489}],400:[function(e,t,r){r.read=function(e,t,r,n,i){var o,s,a=8*i-n-1,c=(1<<a)-1,u=c>>1,l=-7,f=r?i-1:0,p=r?-1:1,i=e[t+f];for(f+=p,o=i&(1<<-l)-1,i>>=-l,l+=a;0<l;o=256*o+e[t+f],f+=p,l-=8);for(s=o&(1<<-l)-1,o>>=-l,l+=n;0<l;s=256*s+e[t+f],f+=p,l-=8);if(0===o)o=1-u;else{if(o===c)return s?NaN:1/0*(i?-1:1);s+=Math.pow(2,n),o-=u}return(i?-1:1)*s*Math.pow(2,o-n)},r.write=function(e,t,r,n,i,o){var s,a,c=8*o-i-1,u=(1<<c)-1,l=u>>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,d=n?1:-1,o=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=u):(s=Math.floor(Math.log(t)/Math.LN2),t*(n=Math.pow(2,-s))<1&&(s--,n*=2),2<=(t+=1<=s+l?f/n:f*Math.pow(2,1-l))*n&&(s++,n/=2),u<=s+l?(a=0,s=u):1<=s+l?(a=(t*n-1)*Math.pow(2,i),s+=l):(a=t*Math.pow(2,l-1)*Math.pow(2,i),s=0));8<=i;e[r+p]=255&a,p+=d,a/=256,i-=8);for(s=s<<i|a,c+=i;0<c;e[r+p]=255&s,p+=d,s/=256,c-=8);e[r+p-d]|=128*o}},{}],401:[function(e,t,r){"use strict";var n,i,o,s=[e("./nextTick"),e("./queueMicrotask"),e("./mutation.js"),e("./messageChannel"),e("./stateChange"),e("./timeout")],a=-1,c=[],u=!1;function l(){n&&i&&(n=!1,i.length?c=i.concat(c):a=-1,c.length)&&f()}function f(){if(!n){n=!(u=!1);for(var e=c.length,t=setTimeout(l);e;){for(i=c,c=[];i&&++a<e;)i[a].run();a=-1,e=c.length}i=null,n=!(a=-1),clearTimeout(t)}}for(var p=-1,d=s.length;++p<d;)if(s[p]&&s[p].test&&s[p].test()){o=s[p].install(f);break}function h(e,t){this.fun=e,this.array=t}h.prototype.run=function(){var e=this.fun,t=this.array;switch(t.length){case 0:return e();case 1:return e(t[0]);case 2:return e(t[0],t[1]);case 3:return e(t[0],t[1],t[2]);default:return e.apply(null,t)}},t.exports=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new h(e,t)),u||n||(u=!0,o())}},{"./messageChannel":402,"./mutation.js":403,"./nextTick":102,"./queueMicrotask":404,"./stateChange":405,"./timeout":406}],402:[function(e,t,n){!function(r){!function(){"use strict";n.test=function(){return!r.setImmediate&&void 0!==r.MessageChannel},n.install=function(e){var t=new r.MessageChannel;return t.port1.onmessage=e,function(){t.port2.postMessage(0)}}}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],403:[function(e,t,r){!function(i){!function(){"use strict";var n=i.MutationObserver||i.WebKitMutationObserver;r.test=function(){return n},r.install=function(e){var t=0,e=new n(e),r=i.document.createTextNode("");return e.observe(r,{characterData:!0}),function(){r.data=t=++t%2}}}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],404:[function(e,t,r){!function(t){!function(){"use strict";r.test=function(){return"function"==typeof t.queueMicrotask},r.install=function(e){return function(){t.queueMicrotask(e)}}}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],405:[function(e,t,n){!function(r){!function(){"use strict";n.test=function(){return"document"in r&&"onreadystatechange"in r.document.createElement("script")},n.install=function(t){return function(){var e=r.document.createElement("script");return e.onreadystatechange=function(){t(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},r.document.documentElement.appendChild(e),t}}}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],406:[function(e,t,r){"use strict";r.test=function(){return!0},r.install=function(e){return function(){setTimeout(e,0)}}},{}],407:[function(e,t,r){"function"==typeof Object.create?t.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(e,t){var r;t&&(e.super_=t,(r=function(){}).prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e)}},{}],408:[function(e,t,r){"use strict";function n(e){return!(o&&e&&"object"==typeof e&&Symbol.toStringTag in e)&&"[object Arguments]"===s(e)}function i(e){return!!n(e)||null!==e&&"object"==typeof e&&"number"==typeof e.length&&0<=e.length&&"[object Array]"!==s(e)&&"[object Function]"===s(e.callee)}var o=e("has-tostringtag/shams")(),s=e("call-bind/callBound")("Object.prototype.toString"),e=function(){return n(arguments)}();n.isLegacyArguments=i,t.exports=e?n:i},{"call-bind/callBound":105,"has-tostringtag/shams":396}],409:[function(e,t,r){function n(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}t.exports=function(e){return null!=e&&(n(e)||"function"==typeof(t=e).readFloatLE&&"function"==typeof t.slice&&n(t.slice(0,0))||!!e._isBuffer);var t}},{}],410:[function(e,t,r){"use strict";var n,i,o=Function.prototype.toString,s="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof s&&"function"==typeof Object.defineProperty)try{n=Object.defineProperty({},"length",{get:function(){throw i}}),i={},s(function(){throw 42},null,n)}catch(e){e!==i&&(s=null)}else s=null;function a(e){try{var t=o.call(e);return u.test(t)}catch(e){return}}function c(e){try{return a(e)?!1:(o.call(e),!0)}catch(e){return!1}}var u=/^\s*class\b/,l=Object.prototype.toString,f="function"==typeof Symbol&&!!Symbol.toStringTag,p=!(0 in[,]),d=function(){return!1};"object"==typeof document&&l.call(document.all)===l.call(document.all)&&(d=function(e){if(!(!p&&e||void 0!==e&&"object"!=typeof e))try{var t=l.call(e);return("[object HTMLAllCollection]"===t||"[object HTML document.all class]"===t||"[object HTMLCollection]"===t||"[object Object]"===t)&&null==e("")}catch(e){}return!1}),t.exports=s?function(e){if(d(e))return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;try{s(e,null,n)}catch(e){if(e!==i)return!1}return!a(e)&&c(e)}:function(e){var t;return!!d(e)||!!e&&!("function"!=typeof e&&"object"!=typeof e||!f&&(a(e)||"[object Function]"!==(t=l.call(e))&&"[object GeneratorFunction]"!==t&&!/^\[object HTML/.test(t)))&&c(e)}},{}],411:[function(e,t,r){"use strict";var n,i=Object.prototype.toString,o=Function.prototype.toString,s=/^\s*(?:function)?\*/,a=e("has-tostringtag/shams")(),c=Object.getPrototypeOf;t.exports=function(e){var t;return!("function"!=typeof e||!s.test(o.call(e))&&(a?!c||(void 0===n&&(t=function(){if(!a)return!1;try{return Function("return function*() {}")()}catch(e){}}(),n=!!t&&c(t)),c(e)!==n):"[object GeneratorFunction]"!==i.call(e)))}},{"has-tostringtag/shams":396}],412:[function(e,t,r){"use strict";var n=e("which-typed-array");t.exports=function(e){return!!n(e)}},{"which-typed-array":490}],413:[function(e,k,n){!function(r){!function(){var e,t;e="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==r?r:this,t=function(t){"use strict";function r(e){var t;return e.length<2?(t=e.charCodeAt(0))<128?e:t<2048?b(192|t>>>6)+b(128|63&t):b(224|t>>>12&15)+b(128|t>>>6&63)+b(128|63&t):(t=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320),b(240|t>>>18&7)+b(128|t>>>12&63)+b(128|t>>>6&63)+b(128|63&t))}function n(e){var t=[0,2,1][e.length%3],e=e.charCodeAt(0)<<16|(1<e.length?e.charCodeAt(1):0)<<8|(2<e.length?e.charCodeAt(2):0);return[y.charAt(e>>>18),y.charAt(e>>>12&63),2<=t?"=":y.charAt(e>>>6&63),1<=t?"=":y.charAt(63&e)].join("")}function i(e){return j(v(String(e)))}function c(e){return e.replace(/[+\/]/g,function(e){return"+"==e?"-":"_"}).replace(/=/g,"")}function o(e,t){return t?c(i(e)):i(e)}function s(e){switch(e.length){case 4:var t=((7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3))-65536;return b(55296+(t>>>10))+b(56320+(1023&t));case 3:return b((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return b((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}}function a(e){var t=(r=e.length)%4,r=(0<r?m[e.charAt(0)]<<18:0)|(1<r?m[e.charAt(1)]<<12:0)|(2<r?m[e.charAt(2)]<<6:0)|(3<r?m[e.charAt(3)]:0);return(e=[b(r>>>16),b(r>>>8&255),b(255&r)]).length-=[0,0,2,1][t],e.join("")}function u(e){return S(String(e).replace(/[^A-Za-z0-9\+\/]/g,""))}function l(e){return String(e).replace(/[-_]/g,function(e){return"-"==e?"+":"/"}).replace(/[^A-Za-z0-9\+\/]/g,"")}function e(e){return e=l(e),x(S(e))}var f,p,d,h=(t=t||{}).Base64,y="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",m=function(e){for(var t={},r=0,n=e.length;r<n;r++)t[e.charAt(r)]=r;return t}(y),b=String.fromCharCode,g=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,v=function(e){return e.replace(g,r)},j=t.btoa&&"function"==typeof t.btoa?function(e){return t.btoa(e)}:function(e){if(e.match(/[^\x00-\xFF]/))throw new RangeError("The string contains invalid characters.");return e.replace(/[\s\S]{1,3}/g,n)},w=(t.Uint8Array&&(f=function(e,t){for(var r="",n=0,i=e.length;n<i;n+=3){var o=e[n],s=e[n+1],a=e[n+2],o=o<<16|s<<8|a;r+=y.charAt(o>>>18)+y.charAt(o>>>12&63)+(void 0!==s?y.charAt(o>>>6&63):"=")+(void 0!==a?y.charAt(63&o):"=")}return t?c(r):r}),/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g),x=function(e){return e.replace(w,s)},S=t.atob&&"function"==typeof t.atob?function(e){return t.atob(e)}:function(e){return e.replace(/\S{1,4}/g,a)};t.Uint8Array&&(p=function(e){return Uint8Array.from(u(l(e)),function(e){return e.charCodeAt(0)})});return t.Base64={VERSION:"2.6.4",atob:u,btoa:j,fromBase64:e,toBase64:o,utob:v,encode:o,encodeURI:function(e){return o(e,!0)},btou:x,decode:e,noConflict:function(){var e=t.Base64;return t.Base64=h,e},fromUint8Array:f,toUint8Array:p},"function"==typeof Object.defineProperty&&(d=function(e){return{value:e,enumerable:!1,writable:!0,configurable:!0}},t.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",d(function(){return e(this)})),Object.defineProperty(String.prototype,"toBase64",d(function(e){return o(this,e)})),Object.defineProperty(String.prototype,"toBase64URI",d(function(){return o(this,!0)}))}),t.Meteor&&(Base64=t.Base64),void 0!==k&&k.exports&&(k.exports.Base64=t.Base64),{Base64:t.Base64}},"object"==typeof n&&void 0!==k?k.exports=t(e):t(e)}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],414:[function(e,t,r){e=e("./_root").Symbol;t.exports=e},{"./_root":421}],415:[function(e,t,r){t.exports=function(e,t){for(var r=-1,n=null==e?0:e.length,i=Array(n);++r<n;)i[r]=t(e[r],r,e);return i}},{}],416:[function(e,t,r){var n=e("./_Symbol"),i=e("./_getRawTag"),o=e("./_objectToString"),s=n?n.toStringTag:void 0;t.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":(s&&s in Object(e)?i:o)(e)}},{"./_Symbol":414,"./_getRawTag":419,"./_objectToString":420}],417:[function(e,t,r){var n=e("./_Symbol"),i=e("./_arrayMap"),o=e("./isArray"),s=e("./isSymbol"),e=n?n.prototype:void 0,a=e?e.toString:void 0;t.exports=function e(t){var r;return"string"==typeof t?t:o(t)?i(t,e)+"":s(t)?a?a.call(t):"":"0"==(r=t+"")&&1/t==-1/0?"-0":r}},{"./_Symbol":414,"./_arrayMap":415,"./isArray":422,"./isSymbol":426}],418:[function(e,r,t){!function(t){!function(){var e="object"==typeof t&&t&&t.Object===Object&&t;r.exports=e}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],419:[function(e,t,r){var e=e("./_Symbol"),n=Object.prototype,o=n.hasOwnProperty,s=n.toString,a=e?e.toStringTag:void 0;t.exports=function(e){var t=o.call(e,a),r=e[a];try{var n=!(e[a]=void 0)}catch(e){}var i=s.call(e);return n&&(t?e[a]=r:delete e[a]),i}},{"./_Symbol":414}],420:[function(e,t,r){var n=Object.prototype.toString;t.exports=function(e){return n.call(e)}},{}],421:[function(e,t,r){var e=e("./_freeGlobal"),n="object"==typeof self&&self&&self.Object===Object&&self,e=e||n||Function("return this")();t.exports=e},{"./_freeGlobal":418}],422:[function(e,t,r){var n=Array.isArray;t.exports=n},{}],423:[function(e,t,r){t.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},{}],424:[function(e,t,r){t.exports=function(e){return null!=e&&"object"==typeof e}},{}],425:[function(e,t,r){var n=e("./_baseGetTag"),i=e("./isArray"),o=e("./isObjectLike");t.exports=function(e){return"string"==typeof e||!i(e)&&o(e)&&"[object String]"==n(e)}},{"./_baseGetTag":416,"./isArray":422,"./isObjectLike":424}],426:[function(e,t,r){var n=e("./_baseGetTag"),i=e("./isObjectLike");t.exports=function(e){return"symbol"==typeof e||i(e)&&"[object Symbol]"==n(e)}},{"./_baseGetTag":416,"./isObjectLike":424}],427:[function(e,t,r){var n=e("./_baseToString");t.exports=function(e){return null==e?"":n(e)}},{"./_baseToString":417}],428:[function(e,t,r){"use strict";t.exports=function(r,n,i){if(!r)throw new TypeError("argument dest is required");if(!n)throw new TypeError("argument src is required");void 0===i&&(i=!0);return Object.getOwnPropertyNames(n).forEach(function(e){var t;!i&&o.call(r,e)||(t=Object.getOwnPropertyDescriptor(n,e),Object.defineProperty(r,e,t))}),r};var o=Object.prototype.hasOwnProperty},{}],429:[function(e,t,r){"use strict";function n(){this._types=Object.create(null),this._extensions=Object.create(null);for(var e=0;e<arguments.length;e++)this.define(arguments[e]);this.define=this.define.bind(this),this.getType=this.getType.bind(this),this.getExtension=this.getExtension.bind(this)}e("core-js/modules/es.array.map.js"),e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.string.replace.js"),e("core-js/modules/es.regexp.constructor.js"),e("core-js/modules/es.regexp.to-string.js"),n.prototype.define=function(e,t){for(var r in e){for(var n,i=e[r].map(function(e){return e.toLowerCase()}),r=r.toLowerCase(),o=0;o<i.length;o++){var s=i[o];if("*"!==s[0]){if(!t&&s in this._types)throw new Error('Attempt to change mapping for "'+s+'" extension from "'+this._types[s]+'" to "'+r+'". Pass `force=true` to allow this, otherwise remove "'+s+'" from the list of extensions for "'+r+'".');this._types[s]=r}}!t&&this._extensions[r]||(n=i[0],this._extensions[r]="*"!==n[0]?n:n.substr(1))}},n.prototype.getType=function(e){var t=(e=String(e)).replace(/^.*[/\\]/,"").toLowerCase(),r=t.replace(/^.*\./,"").toLowerCase(),e=t.length<e.length;return(r.length<t.length-1||!e)&&this._types[r]||null},n.prototype.getExtension=function(e){return(e=/^\s*([^;\s]*)/.test(e)&&RegExp.$1)&&this._extensions[e.toLowerCase()]||null},t.exports=n},{"core-js/modules/es.array.map.js":318,"core-js/modules/es.regexp.constructor.js":337,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/es.string.replace.js":345}],430:[function(e,t,r){"use strict";var n=e("./Mime");t.exports=new n(e("./types/standard"))},{"./Mime":429,"./types/standard":431}],431:[function(e,t,r){"use strict";t.exports={"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomdeleted+xml":["atomdeleted"],"application/atomsvc+xml":["atomsvc"],"application/atsc-dwd+xml":["dwd"],"application/atsc-held+xml":["held"],"application/atsc-rsat+xml":["rsat"],"application/bdoc":["bdoc"],"application/calendar+xml":["xcs"],"application/ccxml+xml":["ccxml"],"application/cdfx+xml":["cdfx"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["es","ecma"],"application/emma+xml":["emma"],"application/emotionml+xml":["emotionml"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/express":["exp"],"application/fdt+xml":["fdt"],"application/font-tdpfr":["pfr"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hjson":["hjson"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/its+xml":["its"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lgr+xml":["lgr"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mmt-aei+xml":["maei"],"application/mmt-usd+xml":["musd"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/n-quads":["nq"],"application/n-triples":["nt"],"application/node":["cjs"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/p2p-overlay+xml":["relo"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/provenance+xml":["provx"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf","owl"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/route-apd+xml":["rapd"],"application/route-s-tsid+xml":["sls"],"application/route-usd+xml":["rusd"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/senml+xml":["senmlx"],"application/sensml+xml":["sensmlx"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/sieve":["siv","sieve"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/swid+xml":["swidtag"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/toml":["toml"],"application/trig":["trig"],"application/ttml+xml":["ttml"],"application/ubjson":["ubj"],"application/urc-ressheet+xml":["rsheet"],"application/urc-targetdesc+xml":["td"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/xaml+xml":["xaml"],"application/xcap-att+xml":["xav"],"application/xcap-caps+xml":["xca"],"application/xcap-diff+xml":["xdf"],"application/xcap-el+xml":["xel"],"application/xcap-ns+xml":["xns"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xliff+xml":["xlf"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["*xsl","xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["*3gpp"],"audio/adpcm":["adp"],"audio/amr":["amr"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mobile-xmf":["mxmf"],"audio/mp3":["*mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx","opus"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/wav":["wav"],"audio/wave":["*wav"],"audio/webm":["weba"],"audio/xm":["xm"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/aces":["exr"],"image/apng":["apng"],"image/avif":["avif"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/dicom-rle":["drle"],"image/emf":["emf"],"image/fits":["fits"],"image/g3fax":["g3"],"image/gif":["gif"],"image/heic":["heic"],"image/heic-sequence":["heics"],"image/heif":["heif"],"image/heif-sequence":["heifs"],"image/hej2k":["hej2"],"image/hsj2":["hsj2"],"image/ief":["ief"],"image/jls":["jls"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jph":["jph"],"image/jphc":["jhc"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/jxr":["jxr"],"image/jxra":["jxra"],"image/jxrs":["jxrs"],"image/jxs":["jxs"],"image/jxsc":["jxsc"],"image/jxsi":["jxsi"],"image/jxss":["jxss"],"image/ktx":["ktx"],"image/ktx2":["ktx2"],"image/png":["png"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/t38":["t38"],"image/tiff":["tif","tiff"],"image/tiff-fx":["tfx"],"image/webp":["webp"],"image/wmf":["wmf"],"message/disposition-notification":["disposition-notification"],"message/global":["u8msg"],"message/global-delivery-status":["u8dsn"],"message/global-disposition-notification":["u8mdn"],"message/global-headers":["u8hdr"],"message/rfc822":["eml","mime"],"model/3mf":["3mf"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/mtl":["mtl"],"model/obj":["obj"],"model/step+xml":["stpx"],"model/step+zip":["stpz"],"model/step-xml+zip":["stpxz"],"model/stl":["stl"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["*x3db","x3dbz"],"model/x3d+fastinfoset":["x3db"],"model/x3d+vrml":["*x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"model/x3d-vrml":["x3dv"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/mdx":["mdx"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/richtext":["rtx"],"text/rtf":["*rtf"],"text/sgml":["sgml","sgm"],"text/shex":["shex"],"text/slim":["slim","slm"],"text/spdx":["spdx"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vtt":["vtt"],"text/xml":["*xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/iso.segment":["m4s"],"video/jpeg":["jpgv"],"video/jpm":["*jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/webm":["webm"]}},{}],432:[function(e,t,r){var i=864e5;function o(e,t,r,n){t=1.5*r<=t;return Math.round(e/r)+" "+n+(t?"s":"")}t.exports=function(e,t){t=t||{};var r=typeof e;if(!("string"==r&&0<e.length)){if("number"==r&&isFinite(e))return(t.long?function(e){var t=Math.abs(e);if(i<=t)return o(e,t,i,"day");if(36e5<=t)return o(e,t,36e5,"hour");if(6e4<=t)return o(e,t,6e4,"minute");if(1e3<=t)return o(e,t,1e3,"second");return e+" ms"}:function(e){var t=Math.abs(e);if(i<=t)return Math.round(e/i)+"d";if(36e5<=t)return Math.round(e/36e5)+"h";if(6e4<=t)return Math.round(e/6e4)+"m";if(1e3<=t)return Math.round(e/1e3)+"s";return e+"ms"})(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}r=e;if(!(100<(r=String(r)).length)){r=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(r){var n=parseFloat(r[1]);switch((r[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*n;case"weeks":case"week":case"w":return 6048e5*n;case"days":case"day":case"d":return n*i;case"hours":case"hour":case"hrs":case"hr":case"h":return 36e5*n;case"minutes":case"minute":case"mins":case"min":case"m":return 6e4*n;case"seconds":case"second":case"secs":case"sec":case"s":return 1e3*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}},{}],433:[function(s,a,e){!function(ne){!function(){var e="function"==typeof Map&&Map.prototype,t=Object.getOwnPropertyDescriptor&&e?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,v=e&&t&&"function"==typeof t.get?t.get:null,j=e&&Map.prototype.forEach,t="function"==typeof Set&&Set.prototype,e=Object.getOwnPropertyDescriptor&&t?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,w=t&&e&&"function"==typeof e.get?e.get:null,x=t&&Set.prototype.forEach,S="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,k="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,_="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,Y=Boolean.prototype.valueOf,r=Object.prototype.toString,J=Function.prototype.toString,Z=String.prototype.match,T=String.prototype.slice,E=String.prototype.replace,n=String.prototype.toUpperCase,O=String.prototype.toLowerCase,l=RegExp.prototype.test,A=Array.prototype.concat,I=Array.prototype.join,Q=Array.prototype.slice,i=Math.floor,D="function"==typeof BigInt?BigInt.prototype.valueOf:null,f=Object.getOwnPropertySymbols,R="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,C="function"==typeof Symbol&&"object"==typeof Symbol.iterator,M="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,P=Object.prototype.propertyIsEnumerable,N=("function"==typeof Reflect?Reflect:Object).getPrototypeOf||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function L(e,t){if(e===1/0||e===-1/0||e!=e||e&&-1e3<e&&e<1e3||l.call(/e/,t))return t;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof e){var n=e<0?-i(-e):i(e);if(n!==e)return e=String(n),n=T.call(t,e.length+1),E.call(e,r,"$&_")+"."+E.call(E.call(n,/([0-9]{3})/g,"$&_"),/_$/,"")}return E.call(t,r,"$&_")}var B=s("./util.inspect"),e=B.custom,q=G(e)?e:null;function F(e,t,r){r="double"===(r.quoteStyle||t)?'"':"'";return r+e+r}function U(e){return!("[object Array]"!==z(e)||M&&"object"==typeof e&&M in e)}function W(e){return!("[object RegExp]"!==z(e)||M&&"object"==typeof e&&M in e)}function G(e){if(C)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return 1;if(e&&"object"==typeof e&&R)try{return R.call(e),1}catch(e){}}a.exports=function n(r,e,i,o){var s=e||{};if(V(s,"quoteStyle")&&"single"!==s.quoteStyle&&"double"!==s.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(V(s,"maxStringLength")&&("number"==typeof s.maxStringLength?s.maxStringLength<0&&s.maxStringLength!==1/0:null!==s.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');e=!V(s,"customInspect")||s.customInspect;if("boolean"!=typeof e&&"symbol"!==e)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(V(s,"indent")&&null!==s.indent&&"\t"!==s.indent&&!(parseInt(s.indent,10)===s.indent&&0<s.indent))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(V(s,"numericSeparator")&&"boolean"!=typeof s.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var t=s.numericSeparator;if(void 0===r)return"undefined";if(null===r)return"null";if("boolean"==typeof r)return r?"true":"false";if("string"==typeof r)return function e(t,r){if(t.length>r.maxStringLength)return n=t.length-r.maxStringLength,n="... "+n+" more character"+(1<n?"s":""),e(T.call(t,0,r.maxStringLength),r)+n;var n=E.call(E.call(t,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,te);return F(n,"single",r)}(r,s);if("number"==typeof r)return 0===r?0<1/0/r?"0":"-0":(h=String(r),t?L(r,h):h);if("bigint"==typeof r)return h=String(r)+"n",t?L(r,h):h;t=void 0===s.depth?5:s.depth;if(t<=(i=void 0===i?0:i)&&0<t&&"object"==typeof r)return U(r)?"[Array]":"[Object]";var a,c,u,l,f,p,d,h=function(e,t){var r;if("\t"===e.indent)r="\t";else{if(!("number"==typeof e.indent&&0<e.indent))return null;r=I.call(Array(e.indent+1)," ")}return{base:r,prev:I.call(Array(t+1),r)}}(s,i);if(void 0===o)o=[];else if(0<=ee(o,r))return"[Circular]";function y(e,t,r){return t&&(o=Q.call(o)).push(t),r?(t={depth:s.depth},V(s,"quoteStyle")&&(t.quoteStyle=s.quoteStyle),n(e,t,i+1,o)):n(e,s,i+1,o)}if("function"==typeof r&&!W(r))return"[Function"+((c=function(e){if(e.name)return e.name;e=Z.call(J.call(e),/^function\s*([\w$]+)/);if(e)return e[1];return null}(r))?": "+c:" (anonymous)")+"]"+(0<(c=$(r,y)).length?" { "+I.call(c,", ")+" }":"");if(G(r))return c=C?E.call(String(r),/^(Symbol\(.*\))_[^)]*$/,"$1"):R.call(r),"object"!=typeof r||C?c:X(c);if(function(e){if(!e||"object"!=typeof e)return;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return 1;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(r)){for(var m="<"+O.call(String(r.nodeName)),b=r.attributes||[],g=0;g<b.length;g++)m+=" "+b[g].name+"="+F((a=b[g].value,E.call(String(a),/"/g,""")),"double",s);return m+=">",r.childNodes&&r.childNodes.length&&(m+="..."),m+="</"+O.call(String(r.nodeName))+">"}if(U(r))return 0===r.length?"[]":(c=$(r,y),h&&!function(e){for(var t=0;t<e.length;t++)if(0<=ee(e[t],"\n"))return;return 1}(c)?"["+K(c,h)+"]":"[ "+I.call(c,", ")+" ]");if(!("[object Error]"!==z(c=r)||M&&"object"==typeof c&&M in c))return f=$(r,y),"cause"in Error.prototype||!("cause"in r)||P.call(r,"cause")?0===f.length?"["+String(r)+"]":"{ ["+String(r)+"] "+I.call(f,", ")+" }":"{ ["+String(r)+"] "+I.call(A.call("[cause]: "+y(r.cause),f),", ")+" }";if("object"==typeof r&&e){if(q&&"function"==typeof r[q]&&B)return B(r,{depth:t-i});if("symbol"!==e&&"function"==typeof r.inspect)return r.inspect()}return function(e){if(v&&e&&"object"==typeof e)try{v.call(e);try{w.call(e)}catch(e){return 1}return e instanceof Map}catch(e){}return}(r)?(u=[],j&&j.call(r,function(e,t){u.push(y(t,r,!0)+" => "+y(e,r))}),re("Map",v.call(r),u,h)):function(e){if(w&&e&&"object"==typeof e)try{w.call(e);try{v.call(e)}catch(e){return 1}return e instanceof Set}catch(e){}return}(r)?(l=[],x&&x.call(r,function(e){l.push(y(e,r))}),re("Set",w.call(r),l,h)):function(e){if(S&&e&&"object"==typeof e)try{S.call(e,S);try{k.call(e,k)}catch(e){return 1}return e instanceof WeakMap}catch(e){}return}(r)?H("WeakMap"):function(e){if(k&&e&&"object"==typeof e)try{k.call(e,k);try{S.call(e,S)}catch(e){return 1}return e instanceof WeakSet}catch(e){}return}(r)?H("WeakSet"):function(e){if(_&&e&&"object"==typeof e)try{return _.call(e),1}catch(e){}return}(r)?H("WeakRef"):"[object Number]"!==z(f=r)||M&&"object"==typeof f&&M in f?function(e){if(e&&"object"==typeof e&&D)try{return D.call(e),1}catch(e){}return}(r)?X(y(D.call(r))):"[object Boolean]"!==z(t=r)||M&&"object"==typeof t&&M in t?"[object String]"!==z(e=r)||M&&"object"==typeof e&&M in e?"undefined"!=typeof window&&r===window?"{ [object Window] }":r===ne?"{ [object globalThis] }":("[object Date]"!==z(t=r)||M&&"object"==typeof t&&M in t)&&!W(r)?(e=$(r,y),t=N?N(r)===Object.prototype:r instanceof Object||r.constructor===Object,p=r instanceof Object?"":"null prototype",d=!t&&M&&Object(r)===r&&M in r?T.call(z(r),8,-1):p?"Object":"",t=(!t&&"function"==typeof r.constructor&&r.constructor.name?r.constructor.name+" ":"")+(d||p?"["+I.call(A.call([],d||[],p||[]),": ")+"] ":""),0===e.length?t+"{}":h?t+"{"+K(e,h)+"}":t+"{ "+I.call(e,", ")+" }"):String(r):X(y(String(r))):X(Y.call(r)):X(y(Number(r)))};var o=Object.prototype.hasOwnProperty||function(e){return e in this};function V(e,t){return o.call(e,t)}function z(e){return r.call(e)}function ee(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1}function te(e){var e=e.charCodeAt(0),t={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return t?"\\"+t:"\\x"+(e<16?"0":"")+n.call(e.toString(16))}function X(e){return"Object("+e+")"}function H(e){return e+" { ? }"}function re(e,t,r,n){return e+" ("+t+") {"+(n?K(r,n):I.call(r,", "))+"}"}function K(e,t){var r;return 0===e.length?"":(r="\n"+t.prev+t.base)+I.call(e,","+r)+"\n"+t.prev}function $(e,t){var r=U(e),n=[];if(r){n.length=e.length;for(var i=0;i<e.length;i++)n[i]=V(e,i)?t(e[i],e):""}var o,s="function"==typeof f?f(e):[];if(C)for(var a={},c=0;c<s.length;c++)a["$"+s[c]]=s[c];for(o in e)!V(e,o)||r&&String(Number(o))===o&&o<e.length||C&&a["$"+o]instanceof Symbol||(l.call(/[^\w$]/,o)?n.push(t(o,e)+": "+t(e[o],e)):n.push(o+": "+t(e[o],e)));if("function"==typeof f)for(var u=0;u<s.length;u++)P.call(e,s[u])&&n.push("["+t(s[u])+"]: "+t(e[s[u]],e));return n}}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./util.inspect":102}],434:[function(e,t,r){"use strict";var p,d,h,y,m,b,g,n,v,i;Object.keys||(p=Object.prototype.hasOwnProperty,d=Object.prototype.toString,h=e("./isArguments"),e=Object.prototype.propertyIsEnumerable,y=!e.call({toString:null},"toString"),m=e.call(function(){},"prototype"),b=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],g=function(e){var t=e.constructor;return t&&t.prototype===e},n={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},v=function(){if("undefined"!=typeof window)for(var e in window)try{if(!n["$"+e]&&p.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{g(window[e])}catch(e){return!0}}catch(e){return!0}return!1}(),i=function(e){var t=null!==e&&"object"==typeof e,r="[object Function]"===d.call(e),n=h(e),i=t&&"[object String]"===d.call(e),o=[];if(!t&&!r&&!n)throw new TypeError("Object.keys called on a non-object");var s=m&&r;if(i&&0<e.length&&!p.call(e,0))for(var a=0;a<e.length;++a)o.push(String(a));if(n&&0<e.length)for(var c=0;c<e.length;++c)o.push(String(c));else for(var u in e)s&&"prototype"===u||!p.call(e,u)||o.push(String(u));if(y)for(var l=function(e){if("undefined"==typeof window||!v)return g(e);try{return g(e)}catch(e){return!1}}(e),f=0;f<b.length;++f)l&&"constructor"===b[f]||!p.call(e,b[f])||o.push(b[f]);return o}),t.exports=i},{"./isArguments":436}],435:[function(e,t,r){"use strict";var n=Array.prototype.slice,i=e("./isArguments"),o=Object.keys,s=o?function(e){return o(e)}:e("./implementation"),a=Object.keys;s.shim=function(){return Object.keys?function(){var e=Object.keys(arguments);return e&&e.length===arguments.length}(1,2)||(Object.keys=function(e){return i(e)?a(n.call(e)):a(e)}):Object.keys=s,Object.keys||s},t.exports=s},{"./implementation":434,"./isArguments":436}],436:[function(e,t,r){"use strict";var n=Object.prototype.toString;t.exports=function(e){var t=n.call(e);return"[object Arguments]"===t||"[object Array]"!==t&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&0<=e.length&&"[object Function]"===n.call(e.callee)}},{}],437:[function(e,t,r){"use strict";var d=e("object-keys"),h=e("has-symbols/shams")(),e=e("call-bind/callBound"),y=Object,m=e("Array.prototype.push"),b=e("Object.prototype.propertyIsEnumerable"),g=h?Object.getOwnPropertySymbols:null;t.exports=function(e,t){if(null==e)throw new TypeError("target must be an object");var r=y(e);if(1!==arguments.length)for(var n=1;n<arguments.length;++n){var i=y(arguments[n]),o=d(i),s=h&&(Object.getOwnPropertySymbols||g);if(s)for(var a=s(i),c=0;c<a.length;++c){var u=a[c];b(i,u)&&m(o,u)}for(var l=0;l<o.length;++l){var f,p=o[l];b(i,p)&&(f=i[p],r[p]=f)}}return r}},{"call-bind/callBound":105,"has-symbols/shams":395,"object-keys":435}],438:[function(e,t,r){"use strict";var n=e("./implementation");t.exports=function(){return!Object.assign||function(){if(!Object.assign)return!1;for(var e="abcdefghijklmnopqrst",t=e.split(""),r={},n=0;n<t.length;++n)r[t[n]]=t[n];var i,o="";for(i in Object.assign({},r))o+=i;return e!==o}()||function(){if(Object.assign&&Object.preventExtensions){var t=Object.preventExtensions({1:2});try{Object.assign(t,"xy")}catch(e){return"y"===t[1]}}return!1}()?n:Object.assign}},{"./implementation":437}],439:[function(e,t,r){!function(s){!function(){"use strict";function p(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function o(e,t){for(var r,n="",i=0,o=-1,s=0,a=0;a<=e.length;++a){if(a<e.length)r=e.charCodeAt(a);else{if(47===r)break;r=47}if(47===r){if(o!==a-1&&1!==s)if(o!==a-1&&2===s){if(n.length<2||2!==i||46!==n.charCodeAt(n.length-1)||46!==n.charCodeAt(n.length-2))if(2<n.length){var c=n.lastIndexOf("/");if(c!==n.length-1){i=-1===c?(n="",0):(n=n.slice(0,c)).length-1-n.lastIndexOf("/"),o=a,s=0;continue}}else if(2===n.length||1===n.length){n="",o=a,s=i=0;continue}t&&(0<n.length?n+="/..":n="..",i=2)}else 0<n.length?n+="/"+e.slice(o+1,a):n=e.slice(o+1,a),i=a-o-1;o=a,s=0}else 46===r&&-1!==s?++s:s=-1}return n}var d={resolve:function(){for(var e,t="",r=!1,n=arguments.length-1;-1<=n&&!r;n--){var i=0<=n?arguments[n]:e=void 0===e?s.cwd():e;p(i),0!==i.length&&(t=i+"/"+t,r=47===i.charCodeAt(0))}return t=o(t,!r),r?0<t.length?"/"+t:"/":0<t.length?t:"."},normalize:function(e){var t,r;return p(e),0===e.length?".":(t=47===e.charCodeAt(0),r=47===e.charCodeAt(e.length-1),0<(e=0!==(e=o(e,!t)).length||t?e:".").length&&r&&(e+="/"),t?"/"+e:e)},isAbsolute:function(e){return p(e),0<e.length&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,t=0;t<arguments.length;++t){var r=arguments[t];p(r),0<r.length&&(void 0===e?e=r:e+="/"+r)}return void 0===e?".":d.normalize(e)},relative:function(e,t){if(p(e),p(t),e===t)return"";if((e=d.resolve(e))===(t=d.resolve(t)))return"";for(var r=1;r<e.length&&47===e.charCodeAt(r);++r);for(var n=e.length,i=n-r,o=1;o<t.length&&47===t.charCodeAt(o);++o);for(var s=t.length-o,a=i<s?i:s,c=-1,u=0;u<=a;++u){if(u===a){if(a<s){if(47===t.charCodeAt(o+u))return t.slice(o+u+1);if(0===u)return t.slice(o+u)}else a<i&&(47===e.charCodeAt(r+u)?c=u:0===u&&(c=0));break}var l=e.charCodeAt(r+u);if(l!==t.charCodeAt(o+u))break;47===l&&(c=u)}for(var f="",u=r+c+1;u<=n;++u)u!==n&&47!==e.charCodeAt(u)||(0===f.length?f+="..":f+="/..");return 0<f.length?f+t.slice(o+c):(47===t.charCodeAt(o+=c)&&++o,t.slice(o))},_makeLong:function(e){return e},dirname:function(e){if(p(e),0===e.length)return".";for(var t=47===e.charCodeAt(0),r=-1,n=!0,i=e.length-1;1<=i;--i)if(47===e.charCodeAt(i)){if(!n){r=i;break}}else n=!1;return-1===r?t?"/":".":t&&1===r?"//":e.slice(0,r)},basename:function(e,t){if(void 0!==t&&"string"!=typeof t)throw new TypeError('"ext" argument must be a string');p(e);var r=0,n=-1,i=!0;if(void 0!==t&&0<t.length&&t.length<=e.length){if(t.length===e.length&&t===e)return"";for(var o=t.length-1,s=-1,a=e.length-1;0<=a;--a){var c=e.charCodeAt(a);if(47===c){if(!i){r=a+1;break}}else-1===s&&(i=!1,s=a+1),0<=o&&(c===t.charCodeAt(o)?-1==--o&&(n=a):(o=-1,n=s))}return r===n?n=s:-1===n&&(n=e.length),e.slice(r,n)}for(a=e.length-1;0<=a;--a)if(47===e.charCodeAt(a)){if(!i){r=a+1;break}}else-1===n&&(i=!1,n=a+1);return-1===n?"":e.slice(r,n)},extname:function(e){p(e);for(var t=-1,r=0,n=-1,i=!0,o=0,s=e.length-1;0<=s;--s){var a=e.charCodeAt(s);if(47===a){if(i)continue;r=s+1;break}-1===n&&(i=!1,n=s+1),46===a?-1===t?t=s:1!==o&&(o=1):-1!==t&&(o=-1)}return-1===t||-1===n||0===o||1===o&&t===n-1&&t===r+1?"":e.slice(t,n)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return t="/",r=(e=e).dir||e.root,n=e.base||(e.name||"")+(e.ext||""),r?r===e.root?r+n:r+t+n:n;var t,r,n},parse:function(e){p(e);var t={root:"",dir:"",base:"",ext:"",name:""};if(0!==e.length){for(var r,n=47===e.charCodeAt(0),i=n?(t.root="/",1):0,o=-1,s=0,a=-1,c=!0,u=e.length-1,l=0;i<=u;--u){if(47===(r=e.charCodeAt(u))){if(c)continue;s=u+1;break}-1===a&&(c=!1,a=u+1),46===r?-1===o?o=u:1!==l&&(l=1):-1!==o&&(l=-1)}-1===o||-1===a||0===l||1===l&&o===a-1&&o===s+1?-1!==a&&(t.base=t.name=0===s&&n?e.slice(1,a):e.slice(s,a)):(0===s&&n?(t.name=e.slice(1,o),t.base=e.slice(1,a)):(t.name=e.slice(s,o),t.base=e.slice(s,a)),t.ext=e.slice(o,a)),0<s?t.dir=e.slice(0,s-1):n&&(t.dir="/")}return t},sep:"/",delimiter:":",win32:null,posix:null};d.posix=d,t.exports=d}.call(this)}.call(this,e("_process"))},{_process:538}],440:[function(e,s,c){!function(o){!function(){!function(){"use strict";var e={function:!0,object:!0},I=e[typeof window]&&window||this,r=e[typeof c]&&c,e=e[typeof s]&&s&&!s.nodeType&&s,t=r&&e&&"object"==typeof o&&o,a=(!t||t.global!==t&&t.window!==t&&t.self!==t||(I=t),Math.pow(2,53)-1),D=/\bOpera/,t=Object.prototype,n=t.hasOwnProperty,R=t.toString;function i(e){return(e=String(e)).charAt(0).toUpperCase()+e.slice(1)}function C(e){return e=B(e),/^(?:webOS|i(?:OS|P))/.test(e)?e:i(e)}function M(e,t){for(var r in e)n.call(e,r)&&t(e[r],r,e)}function P(e){return null==e?i(e):R.call(e).slice(8,-1)}function N(e){return String(e).replace(/([ -])(?!$)/g,"$1?")}function L(r,n){var i=null,e=r,t=function(e,t){i=n(i,e,t,r)},o=-1,s=e?e.length:0;if("number"==typeof s&&-1<s&&s<=a)for(;++o<s;)t(e[o],o,e);else M(e,t);return i}function B(e){return String(e).replace(/^ +| +$/g,"")}function q(o){var t,r,e,n,i=I,s=o&&"object"==typeof o&&"String"!=P(o),a=(s&&(i=o,o=null),i.navigator||{}),c=a.userAgent||"",u=(o=o||c,s?!!a.likeChrome:/\bChrome\b/.test(o)&&!/internal|\n/i.test(R.toString())),l="Object",f=s?l:"ScriptBridgingProxyObject",p=s?l:"Environment",d=s&&i.java?"JavaPackage":P(i.java),l=s?l:"RuntimeObject",d=/\bJava/.test(d)&&i.java,p=d&&P(i.environment)==p,h=d?"a":"\u03b1",y=d?"b":"\u03b2",m=i.document||{},b=i.operamini||i.opera,s=D.test(s=s&&b?b["[[Class]]"]:P(b))?s:b=null,g=o,v=[],j=null,c=o==c,w=c&&b&&"function"==typeof b.version&&b.version(),x=L([{label:"EdgeHTML",pattern:"Edge"},"Trident",{label:"WebKit",pattern:"AppleWebKit"},"iCab","Presto","NetFront","Tasman","KHTML","Gecko"],function(e,t){return e||RegExp("\\b"+(t.pattern||N(t))+"\\b","i").exec(o)&&(t.label||t)}),S=L(["Adobe AIR","Arora","Avant Browser","Breach","Camino","Electron","Epiphany","Fennec","Flock","Galeon","GreenBrowser","iCab","Iceweasel","K-Meleon","Konqueror","Lunascape","Maxthon",{label:"Microsoft Edge",pattern:"(?:Edge|Edg|EdgA|EdgiOS)"},"Midori","Nook Browser","PaleMoon","PhantomJS","Raven","Rekonq","RockMelt",{label:"Samsung Internet",pattern:"SamsungBrowser"},"SeaMonkey",{label:"Silk",pattern:"(?:Cloud9|Silk-Accelerated)"},"Sleipnir","SlimBrowser",{label:"SRWare Iron",pattern:"Iron"},"Sunrise","Swiftfox","Vivaldi","Waterfox","WebPositive",{label:"Yandex Browser",pattern:"YaBrowser"},{label:"UC Browser",pattern:"UCBrowser"},"Opera Mini",{label:"Opera Mini",pattern:"OPiOS"},"Opera",{label:"Opera",pattern:"OPR"},"Chromium","Chrome",{label:"Chrome",pattern:"(?:HeadlessChrome)"},{label:"Chrome Mobile",pattern:"(?:CriOS|CrMo)"},{label:"Firefox",pattern:"(?:Firefox|Minefield)"},{label:"Firefox for iOS",pattern:"FxiOS"},{label:"IE",pattern:"IEMobile"},{label:"IE",pattern:"MSIE"},"Safari"],function(e,t){return e||RegExp("\\b"+(t.pattern||N(t))+"\\b","i").exec(o)&&(t.label||t)}),k=E([{label:"BlackBerry",pattern:"BB10"},"BlackBerry",{label:"Galaxy S",pattern:"GT-I9000"},{label:"Galaxy S2",pattern:"GT-I9100"},{label:"Galaxy S3",pattern:"GT-I9300"},{label:"Galaxy S4",pattern:"GT-I9500"},{label:"Galaxy S5",pattern:"SM-G900"},{label:"Galaxy S6",pattern:"SM-G920"},{label:"Galaxy S6 Edge",pattern:"SM-G925"},{label:"Galaxy S7",pattern:"SM-G930"},{label:"Galaxy S7 Edge",pattern:"SM-G935"},"Google TV","Lumia","iPad","iPod","iPhone","Kindle",{label:"Kindle Fire",pattern:"(?:Cloud9|Silk-Accelerated)"},"Nexus","Nook","PlayBook","PlayStation Vita","PlayStation","TouchPad","Transformer",{label:"Wii U",pattern:"WiiU"},"Wii","Xbox One",{label:"Xbox 360",pattern:"Xbox"},"Xoom"]),_=L({Apple:{iPad:1,iPhone:1,iPod:1},Alcatel:{},Archos:{},Amazon:{Kindle:1,"Kindle Fire":1},Asus:{Transformer:1},"Barnes & Noble":{Nook:1},BlackBerry:{PlayBook:1},Google:{"Google TV":1,Nexus:1},HP:{TouchPad:1},HTC:{},Huawei:{},Lenovo:{},LG:{},Microsoft:{Xbox:1,"Xbox One":1},Motorola:{Xoom:1},Nintendo:{"Wii U":1,Wii:1},Nokia:{Lumia:1},Oppo:{},Samsung:{"Galaxy S":1,"Galaxy S2":1,"Galaxy S3":1,"Galaxy S4":1},Sony:{PlayStation:1,"PlayStation Vita":1},Xiaomi:{Mi:1,Redmi:1}},function(e,t,r){return e||(t[k]||t[/^[a-z]+(?: +[a-z]+\b)*/i.exec(k)]||RegExp("\\b"+N(r)+"(?:\\b|\\w*\\d)","i").exec(o))&&r}),T=L(["Windows Phone","KaiOS","Android","CentOS",{label:"Chrome OS",pattern:"CrOS"},"Debian",{label:"DragonFly BSD",pattern:"DragonFly"},"Fedora","FreeBSD","Gentoo","Haiku","Kubuntu","Linux Mint","OpenBSD","Red Hat","SuSE","Ubuntu","Xubuntu","Cygwin","Symbian OS","hpwOS","webOS ","webOS","Tablet OS","Tizen","Linux","Mac OS X","Macintosh","Mac","Windows 98;","Windows "],function(e,t){var r,n,i=t.pattern||N(t);return!e&&(e=RegExp("\\b"+i+"(?:/[\\d.]+|[ \\w.]*)","i").exec(o))&&(r=e,i=i,t=t.label||t,n={"10.0":"10",6.4:"10 Technical Preview",6.3:"8.1",6.2:"8",6.1:"Server 2008 R2 / 7","6.0":"Server 2008 / Vista",5.2:"Server 2003 / XP 64-bit",5.1:"XP",5.01:"2000 SP1","5.0":"2000","4.0":"NT","4.90":"ME"},i&&t&&/^Win/i.test(r)&&!/^Windows Phone /i.test(r)&&(n=n[/[\d.]+$/.exec(r)])&&(r="Windows "+n),r=String(r),e=r=C((r=i&&t?r.replace(RegExp(i,"i"),t):r).replace(/ ce$/i," CE").replace(/\bhpw/i,"web").replace(/\bMacintosh\b/,"Mac OS").replace(/_PowerPC\b/i," OS").replace(/\b(OS X) [^ \d]+/i,"$1").replace(/\bMac (OS X)\b/,"$1").replace(/\/(\d)/," $1").replace(/_/g,".").replace(/(?: BePC|[ .]*fc[ \d.]+)$/i,"").replace(/\bx86\.64\b/gi,"x86_64").replace(/\b(Windows Phone) OS\b/,"$1").replace(/\b(Chrome OS \w+) [\d.]+\b/,"$1").split(" on ")[0])),e});function E(e){return L(e,function(e,t){var r=t.pattern||N(t);return!e&&(e=RegExp("\\b"+r+" *\\d+[.\\w_]*","i").exec(o)||RegExp("\\b"+r+" *\\w+-[\\w]*","i").exec(o)||RegExp("\\b"+r+"(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)","i").exec(o))&&((e=String(t.label&&!RegExp(r,"i").test(t.label)?t.label:e).split("/"))[1]&&!/[\d.]+/.test(e[0])&&(e[0]+=" "+e[1]),t=t.label||t,e=C(e[0].replace(RegExp(r,"i"),t).replace(RegExp("; *(?:"+t+"[_-])?","i")," ").replace(RegExp("("+t+")[-_.]?(\\w)","i"),"$1 $2"))),e})}function O(e){return L(e,function(e,t){return e||(RegExp(t+"(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)","i").exec(o)||0)[1]||null})}if(x=x&&[x],/\bAndroid\b/.test(T)&&!k&&(t=/\bAndroid[^;]*;(.*?)(?:Build|\) AppleWebKit)\b/i.exec(o))&&(k=B(t[1]).replace(/^[a-z]{2}-[a-z]{2};\s*/i,"")||null),_&&!k?k=E([_]):_&&(k=k&&k.replace(RegExp("^("+N(_)+")[-_.\\s]","i"),_+" ").replace(RegExp("^("+N(_)+")[-_.]?(\\w)","i"),_+" $2")),(t=/\bGoogle TV\b/.exec(k))&&(k=t[0]),/\bSimulator\b/i.test(o)&&(k=(k?k+" ":"")+"Simulator"),"Opera Mini"==S&&/\bOPiOS\b/.test(o)&&v.push("running in Turbo/Uncompressed mode"),"IE"==S&&/\blike iPhone OS\b/.test(o)?(_=(t=q(o.replace(/like iPhone OS/,""))).manufacturer,k=t.product):/^iP/.test(k)?(S=S||"Safari",T="iOS"+((t=/ OS ([\d_]+)/i.exec(o))?" "+t[1].replace(/_/g,"."):"")):"Konqueror"==S&&/^Linux\b/i.test(T)?T="Kubuntu":_&&"Google"!=_&&(/Chrome/.test(S)&&!/\bMobile Safari\b/i.test(o)||/\bVita\b/.test(k))||/\bAndroid\b/.test(T)&&/^Chrome/.test(S)&&/\bVersion\//i.test(o)?(S="Android Browser",T=/\bAndroid\b/.test(T)?T:"Android"):"Silk"==S?(/\bMobi/i.test(o)||(T="Android",v.unshift("desktop mode")),/Accelerated *= *true/i.test(o)&&v.unshift("accelerated")):"UC Browser"==S&&/\bUCWEB\b/.test(o)?v.push("speed mode"):"PaleMoon"==S&&(t=/\bFirefox\/([\d.]+)\b/.exec(o))?v.push("identifying as Firefox "+t[1]):"Firefox"==S&&(t=/\b(Mobile|Tablet|TV)\b/i.exec(o))?(T=T||"Firefox OS",k=k||t[1]):!S||(t=!/\bMinefield\b/i.test(o)&&/\b(?:Firefox|Safari)\b/.exec(S))?(S&&!k&&/[\/,]|^[^(]+?\)/.test(o.slice(o.indexOf(t+"/")+8))&&(S=null),(t=k||_||T)&&(k||_||/\b(?:Android|Symbian OS|Tablet OS|webOS)\b/.test(T))&&(S=/[a-z]+(?: Hat)?/i.exec(/\bAndroid\b/.test(T)?T:t)+" Browser")):"Electron"==S&&(t=(/\bChrome\/([\d.]+)\b/.exec(o)||0)[1])&&v.push("Chromium "+t),w=w||O(["(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\d.]+$)|UCBrowser|YaBrowser)","Version",N(S),"(?:Firefox|Minefield|NetFront)"]),(t=("iCab"==x&&3<parseFloat(w)?"WebKit":/\bOpera\b/.test(S)&&(/\bOPR\b/.test(o)?"Blink":"Presto"))||(/\b(?:Midori|Nook|Safari)\b/i.test(o)&&!/^(?:Trident|EdgeHTML)$/.test(x)?"WebKit":!x&&/\bMSIE\b/i.test(o)&&("Mac OS"==T?"Tasman":"Trident"))||"WebKit"==x&&/\bPlayStation\b(?! Vita\b)/i.test(S)&&"NetFront")&&(x=[t]),"IE"==S&&(t=(/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(o)||0)[1])?(S+=" Mobile",T="Windows Phone "+(/\+$/.test(t)?t:t+".x"),v.unshift("desktop mode")):/\bWPDesktop\b/i.test(o)?(S="IE Mobile",T="Windows Phone 8.x",v.unshift("desktop mode"),w=w||(/\brv:([\d.]+)/.exec(o)||0)[1]):"IE"!=S&&"Trident"==x&&(t=/\brv:([\d.]+)/.exec(o))&&(S&&v.push("identifying as "+S+(w?" "+w:"")),S="IE",w=t[1]),c){if(n="global",A=null!=(e=i)?typeof e[n]:"number",/^(?:boolean|number|string|undefined)$/.test(A)||"object"==A&&!e[n])P(t=i.runtime)==f?(S="Adobe AIR",T=t.flash.system.Capabilities.os):P(t=i.phantom)==l?(S="PhantomJS",w=(t=t.version||null)&&t.major+"."+t.minor+"."+t.patch):"number"==typeof m.documentMode&&(t=/\bTrident\/(\d+)/i.exec(o))?(w=[w,m.documentMode],(t=+t[1]+4)!=w[1]&&(v.push("IE "+w[1]+" mode"),x&&(x[1]=""),w[1]=t),w="IE"==S?String(w[1].toFixed(1)):w[0]):"number"==typeof m.documentMode&&/^(?:Chrome|Firefox)\b/.test(S)&&(v.push("masking as "+S+" "+w),S="IE",w="11.0",x=["Trident"],T="Windows");else if(d&&(g=(t=d.lang.System).getProperty("os.arch"),T=T||t.getProperty("os.name")+" "+t.getProperty("os.version")),p){try{w=i.require("ringo/engine").version.join("."),S="RingoJS"}catch(e){(t=i.system)&&t.global.system==i.system&&(S="Narwhal",T=T||t[0].os||null)}S=S||"Rhino"}else"object"==typeof i.process&&!i.process.browser&&(t=i.process)&&("object"==typeof t.versions&&("string"==typeof t.versions.electron?(v.push("Node "+t.versions.node),S="Electron",w=t.versions.electron):"string"==typeof t.versions.nw&&(v.push("Chromium "+w,"Node "+t.versions.node),S="NW.js",w=t.versions.nw)),S||(S="Node.js",g=t.arch,T=t.platform,w=(w=/[\d.]+/.exec(t.version))?w[0]:null));T=T&&C(T)}if(w&&(t=/(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(w)||/(?:alpha|beta)(?: ?\d)?/i.exec(o+";"+(c&&a.appMinorVersion))||/\bMinefield\b/i.test(o)&&"a")&&(j=/b/i.test(t)?"beta":"alpha",w=w.replace(RegExp(t+"\\+?$"),"")+("beta"==j?y:h)+(/\d+\+?/.exec(t)||"")),"Fennec"==S||"Firefox"==S&&/\b(?:Android|Firefox OS|KaiOS)\b/.test(T))S="Firefox Mobile";else if("Maxthon"==S&&w)w=w.replace(/\.[\d.]+/,".x");else if(/\bXbox\b/i.test(k))"Xbox 360"==k&&(T=null),"Xbox 360"==k&&/\bIEMobile\b/.test(o)&&v.unshift("mobile mode");else if(!/^(?:Chrome|IE|Opera)$/.test(S)&&(!S||k||/Browser|Mobi/.test(S))||"Windows CE"!=T&&!/Mobi/i.test(o))if("IE"==S&&c)try{null===i.external&&v.unshift("platform preview")}catch(e){v.unshift("embedded")}else(/\bBlackBerry\b/.test(k)||/\bBB10\b/.test(o))&&(t=(RegExp(k.replace(/ +/g," *")+"/([.\\d]+)","i").exec(o)||0)[1]||w)?(T=((t=[t,/BB10/.test(o)])[1]?(k=null,_="BlackBerry"):"Device Software")+" "+t[0],w=null):this!=M&&"Wii"!=k&&(c&&b||/Opera/.test(S)&&/\b(?:MSIE|Firefox)\b/i.test(o)||"Firefox"==S&&/\bOS X (?:\d+\.){2,}/.test(T)||"IE"==S&&(T&&!/^Win/.test(T)&&5.5<w||/\bWindows XP\b/.test(T)&&8<w||8==w&&!/\bTrident\b/.test(o)))&&!D.test(t=q.call(M,o.replace(D,"")+";"))&&t.name&&(t="ing as "+t.name+((t=t.version)?" "+t:""),D.test(S)?(/\bIE\b/.test(t)&&"Mac OS"==T&&(T=null),t="identify"+t):(t="mask"+t,S=s?C(s.replace(/([a-z])([A-Z])/g,"$1 $2")):"Opera",/\bIE\b/.test(t)&&(T=null),c||(w=null)),x=["Presto"],v.push(t));else S+=" Mobile";(t=(/\bAppleWebKit\/([\d.]+\+?)/i.exec(o)||0)[1])&&(t=[parseFloat(t.replace(/\.(\d)$/,".0$1")),t],"Safari"==S&&"+"==t[1].slice(-1)?(S="WebKit Nightly",j="alpha",w=t[1].slice(0,-1)):w!=t[1]&&w!=(t[2]=(/\bSafari\/([\d.]+\+?)/i.exec(o)||0)[1])||(w=null),t[1]=(/\b(?:Headless)?Chrome\/([\d.]+)/i.exec(o)||0)[1],537.36==t[0]&&537.36==t[2]&&28<=parseFloat(t[1])&&"WebKit"==x&&(x=["Blink"]),t=c&&(u||t[1])?(x&&(x[1]="like Chrome"),t[1]||((t=t[0])<530?1:t<532?2:t<532.05?3:t<533?4:t<534.03?5:t<534.07?6:t<534.1?7:t<534.13?8:t<534.16?9:t<534.24?10:t<534.3?11:t<535.01?12:t<535.02?"13+":t<535.07?15:t<535.11?16:t<535.19?17:t<536.05?18:t<536.1?19:t<537.01?20:t<537.11?"21+":t<537.13?23:t<537.18?24:t<537.24?25:t<537.36?26:"Blink"!=x?"27":"28")):(x&&(x[1]="like Safari"),(t=t[0])<400?1:t<500?2:t<526?3:t<533?4:t<534?"4+":t<535?5:t<537?6:t<538?7:t<601?8:t<602?9:t<604?10:t<606?11:t<608?12:"12"),x&&(x[1]+=" "+(t+="number"==typeof t?".x":/[.+]/.test(t)?"":"+")),"Safari"==S&&(!w||45<parseInt(w))?w=t:"Chrome"==S&&/\bHeadlessChrome/i.test(o)&&v.unshift("headless")),"Opera"==S&&(t=/\bzbov|zvav$/.exec(T))?(S+=" ",v.unshift("desktop mode"),"zvav"==t?(S+="Mini",w=null):S+="Mobile",T=T.replace(RegExp(" *"+t+"$"),"")):"Safari"==S&&/\bChrome\b/.exec(x&&x[1])?(v.unshift("desktop mode"),S="Chrome Mobile",w=null,T=/\bOS X\b/.test(T)?(_="Apple","iOS 4.3+"):null):/\bSRWare Iron\b/.test(S)&&!w&&(w=O("Chrome")),(T=w&&0==w.indexOf(t=/[\d.]+$/.exec(T))&&-1<o.indexOf("/"+t+"-")?B(T.replace(t,"")):T)&&-1!=T.indexOf(S)&&!RegExp(S+" OS").test(T)&&(T=T.replace(RegExp(" *"+N(S)+" *"),"")),x&&!/\b(?:Avant|Nook)\b/.test(S)&&(/Browser|Lunascape|Maxthon/.test(S)||"Safari"!=S&&/^iOS/.test(T)&&/\bSafari\b/.test(x[1])||/^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(S)&&x[1])&&(t=x[x.length-1])&&v.push(t),v.length&&(v=["("+v.join("; ")+")"]),_&&k&&k.indexOf(_)<0&&v.push("on "+_),k&&v.push((/^on /.test(v[v.length-1])?"":"on ")+k),T&&(t=/ ([\d.+]+)$/.exec(T),r=t&&"/"==T.charAt(T.length-t[0].length-1),T={architecture:32,family:t&&!r?T.replace(t[0],""):T,version:t?t[1]:null,toString:function(){var e=this.version;return this.family+(e&&!r?" "+e:"")+(64==this.architecture?" 64-bit":"")}}),(t=/\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(g))&&!/\bi686\b/i.test(g)?(T&&(T.architecture=64,T.family=T.family.replace(RegExp(" *"+t),"")),S&&(/\bWOW64\b/i.test(o)||c&&/\w(?:86|32)$/.test(a.cpuClass||a.platform)&&!/\bWin64; x64\b/i.test(o))&&v.unshift("32-bit")):T&&/^OS X/.test(T.family)&&"Chrome"==S&&39<=parseFloat(w)&&(T.architecture=64),o=o||null;var A={};return A.description=o,A.layout=x&&x[0],A.manufacturer=_,A.name=S,A.prerelease=j,A.product=k,A.ua=o,A.version=S&&w,A.os=T||{architecture:null,family:null,version:null,toString:function(){return"null"}},A.parse=q,A.toString=function(){return this.description||""},A.version&&v.unshift(w),A.name&&v.unshift(S),T&&S&&(T!=String(T).split(" ")[0]||T!=S.split(" ")[0]&&!k)&&v.push(k?"("+T+")":"on "+T),v.length&&(A.description=v.join(" ")),A}t=q();r&&e?M(t,function(e,t){r[t]=e}):I.platform=t}.call(this)}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],441:[function(e,t,r){!function(a){!function(){"use strict";void 0===a||!a.version||0===a.version.indexOf("v0.")||0===a.version.indexOf("v1.")&&0!==a.version.indexOf("v1.8.")?t.exports={nextTick:function(e,t,r,n){if("function"!=typeof e)throw new TypeError('"callback" argument must be a function');var i,o,s=arguments.length;switch(s){case 0:case 1:return a.nextTick(e);case 2:return a.nextTick(function(){e.call(null,t)});case 3:return a.nextTick(function(){e.call(null,t,r)});case 4:return a.nextTick(function(){e.call(null,t,r,n)});default:for(i=new Array(s-1),o=0;o<i.length;)i[o++]=arguments[o];return a.nextTick(function(){e.apply(null,i)})}}}:t.exports=a}.call(this)}.call(this,e("_process"))},{_process:538}],442:[function(e,t,r){var n,i,t=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{i="function"==typeof clearTimeout?clearTimeout:s}catch(e){i=s}function a(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return(n=setTimeout)(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}var c,u=[],l=!1,f=-1;function p(){l&&c&&(l=!1,c.length?u=c.concat(u):f=-1,u.length)&&d()}function d(){if(!l){for(var e=a(p),t=(l=!0,u.length);t;){for(c=u,u=[];++f<t;)c&&c[f].run();f=-1,t=u.length}c=null,l=!1,!function(t){if(i===clearTimeout)return clearTimeout(t);if((i===s||!i)&&clearTimeout)return(i=clearTimeout)(t);try{i(t)}catch(e){try{return i.call(null,t)}catch(e){return i.call(this,t)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function y(){}t.nextTick=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];u.push(new h(e,t)),1!==u.length||l||a(d)},h.prototype.run=function(){this.fun.apply(null,this.array)},t.title="browser",t.browser=!0,t.env={},t.argv=[],t.version="",t.versions={},t.on=y,t.addListener=y,t.once=y,t.off=y,t.removeListener=y,t.removeAllListeners=y,t.emit=y,t.prependListener=y,t.prependOnceListener=y,t.listeners=function(e){return[]},t.binding=function(e){throw new Error("process.binding is not supported")},t.cwd=function(){return"/"},t.chdir=function(e){throw new Error("process.chdir is not supported")},t.umask=function(){return 0}},{}],443:[function(e,O,A){!function(E){!function(){var e=this,t="object"==typeof A&&A&&!A.nodeType&&A,r="object"==typeof O&&O&&!O.nodeType&&O,n="object"==typeof E&&E;n.global!==n&&n.window!==n&&n.self!==n||(e=n);var i,o,m=2147483647,b=36,g=26,s=38,a=700,c=/^xn--/,u=/[^\x20-\x7E]/,l=/[\x2E\u3002\uFF0E\uFF61]/g,f={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},p=b-1,v=Math.floor,j=String.fromCharCode;function w(e){throw new RangeError(f[e])}function d(e,t){for(var r=e.length,n=[];r--;)n[r]=t(e[r]);return n}function h(e,t){var r=e.split("@"),n="",r=(1<r.length&&(n=r[0]+"@",e=r[1]),(e=e.replace(l,".")).split("."));return n+d(r,t).join(".")}function x(e){for(var t,r,n=[],i=0,o=e.length;i<o;)55296<=(t=e.charCodeAt(i++))&&t<=56319&&i<o?56320==(64512&(r=e.charCodeAt(i++)))?n.push(((1023&t)<<10)+(1023&r)+65536):(n.push(t),i--):n.push(t);return n}function y(e){return d(e,function(e){var t="";return 65535<e&&(t+=j((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=j(e)}).join("")}function S(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function k(e,t,r){var n=0;for(e=r?v(e/a):e>>1,e+=v(e/t);p*g>>1<e;n+=b)e=v(e/p);return v(n+(p+1)*e/(e+s))}function _(e){var t,r,n,i,o,s,a,c=[],u=e.length,l=0,f=128,p=72,d=e.lastIndexOf("-");for(d<0&&(d=0),r=0;r<d;++r)128<=e.charCodeAt(r)&&w("not-basic"),c.push(e.charCodeAt(r));for(n=0<d?d+1:0;n<u;){for(i=l,o=1,s=b;u<=n&&w("invalid-input"),a=e.charCodeAt(n++),(b<=(a=a-48<10?a-22:a-65<26?a-65:a-97<26?a-97:b)||a>v((m-l)/o))&&w("overflow"),l+=a*o,!(a<(a=s<=p?1:p+g<=s?g:s-p));s+=b)o>v(m/(a=b-a))&&w("overflow"),o*=a;p=k(l-i,t=c.length+1,0==i),v(l/t)>m-f&&w("overflow"),f+=v(l/t),l%=t,c.splice(l++,0,f)}return y(c)}function T(e){for(var t,r,n,i,o,s,a,c,u,l,f=[],p=(e=x(e)).length,d=128,h=72,y=t=0;y<p;++y)(a=e[y])<128&&f.push(j(a));for(r=n=f.length,n&&f.push("-");r<p;){for(i=m,y=0;y<p;++y)d<=(a=e[y])&&a<i&&(i=a);for(i-d>v((m-t)/(c=r+1))&&w("overflow"),t+=(i-d)*c,d=i,y=0;y<p;++y)if((a=e[y])<d&&++t>m&&w("overflow"),a==d){for(o=t,s=b;!(o<(u=s<=h?1:h+g<=s?g:s-h));s+=b)f.push(j(S(u+(l=o-u)%(u=b-u),0))),o=v(l/u);f.push(j(S(o,0))),h=k(t,c,r==n),t=0,++r}++t,++d}return f.join("")}if(i={version:"1.4.1",ucs2:{decode:x,encode:y},decode:_,encode:T,toASCII:function(e){return h(e,function(e){return u.test(e)?"xn--"+T(e):e})},toUnicode:function(e){return h(e,function(e){return c.test(e)?_(e.slice(4).toLowerCase()):e})}},t&&r)if(O.exports==t)r.exports=i;else for(o in i)i.hasOwnProperty(o)&&(t[o]=i[o]);else e.punycode=i}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],444:[function(e,t,r){"use strict";var n=String.prototype.replace,i=/%20/g,o="RFC1738",s="RFC3986";t.exports={default:s,formatters:{RFC1738:function(e){return n.call(e,i,"+")},RFC3986:function(e){return String(e)}},RFC1738:o,RFC3986:s}},{}],445:[function(e,t,r){"use strict";var n=e("./stringify"),i=e("./parse"),e=e("./formats");t.exports={formats:e,parse:i,stringify:n}},{"./formats":444,"./parse":446,"./stringify":447}],446:[function(e,t,r){"use strict";function c(e,t){var r,n,i,o,s={__proto__:null},e=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,a=t.parameterLimit===1/0?void 0:t.parameterLimit,c=e.split(t.delimiter,a),u=-1,l=t.charset;if(t.charsetSentinel)for(r=0;r<c.length;++r)0===c[r].indexOf("utf8=")&&("utf8=%E2%9C%93"===c[r]?l="utf-8":"utf8=%26%2310003%3B"===c[r]&&(l="iso-8859-1"),u=r,r=c.length);for(r=0;r<c.length;++r)r!==u&&((o=-1===(o=-1===(o=(n=c[r]).indexOf("]="))?n.indexOf("="):o+1)?(i=t.decoder(n,d.decoder,l,"key"),t.strictNullHandling?null:""):(i=t.decoder(n.slice(0,o),d.decoder,l,"key"),f.maybeMap(g(n.slice(o+1),t),function(e){return t.decoder(e,d.decoder,l,"value")})))&&t.interpretNumericEntities&&"iso-8859-1"===l&&(o=o.replace(/&#(\d+);/g,function(e,t){return String.fromCharCode(parseInt(t,10))})),-1<n.indexOf("[]=")&&(o=p(o)?[o]:o),b.call(s,i)?s[i]=f.combine(s[i],o):s[i]=o);return s}function u(e,t,r,n){if(e){var i=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,o=/(\[[^[\]]*])/g,s=0<r.depth&&/(\[[^[\]]*])/.exec(i),e=s?i.slice(0,s.index):i,a=[];if(e){if(!r.plainObjects&&b.call(Object.prototype,e)&&!r.allowPrototypes)return;a.push(e)}for(var c=0;0<r.depth&&null!==(s=o.exec(i))&&c<r.depth;){if(c+=1,!r.plainObjects&&b.call(Object.prototype,s[1].slice(1,-1))&&!r.allowPrototypes)return;a.push(s[1])}s&&a.push("["+i.slice(s.index)+"]");for(var u=a,e=t,l=r,f=n?e:g(e,l),p=u.length-1;0<=p;--p){var d,h,y,m=u[p];"[]"===m&&l.parseArrays?d=[].concat(f):(d=l.plainObjects?Object.create(null):{},h="["===m.charAt(0)&&"]"===m.charAt(m.length-1)?m.slice(1,-1):m,y=parseInt(h,10),l.parseArrays||""!==h?!isNaN(y)&&m!==h&&String(y)===h&&0<=y&&l.parseArrays&&y<=l.arrayLimit?(d=[])[y]=f:"__proto__"!==h&&(d[h]=f):d={0:f}),f=d}return f}}var f=e("./utils"),b=Object.prototype.hasOwnProperty,p=Array.isArray,d={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:f.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},g=function(e,t){return e&&"string"==typeof e&&t.comma&&-1<e.indexOf(",")?e.split(","):e};t.exports=function(e,t){var r=function(e){if(!e)return d;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=(void 0===e.charset?d:e).charset;return{allowDots:void 0===e.allowDots?d.allowDots:!!e.allowDots,allowPrototypes:("boolean"==typeof e.allowPrototypes?e:d).allowPrototypes,allowSparse:("boolean"==typeof e.allowSparse?e:d).allowSparse,arrayLimit:("number"==typeof e.arrayLimit?e:d).arrayLimit,charset:t,charsetSentinel:("boolean"==typeof e.charsetSentinel?e:d).charsetSentinel,comma:("boolean"==typeof e.comma?e:d).comma,decoder:("function"==typeof e.decoder?e:d).decoder,delimiter:("string"==typeof e.delimiter||f.isRegExp(e.delimiter)?e:d).delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:d.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:("boolean"==typeof e.interpretNumericEntities?e:d).interpretNumericEntities,parameterLimit:("number"==typeof e.parameterLimit?e:d).parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:("boolean"==typeof e.plainObjects?e:d).plainObjects,strictNullHandling:("boolean"==typeof e.strictNullHandling?e:d).strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var n="string"==typeof e?c(e,r):e,i=r.plainObjects?Object.create(null):{},o=Object.keys(n),s=0;s<o.length;++s)var a=o[s],a=u(a,n[a],r,"string"==typeof e),i=f.merge(i,a,r);return!0===r.allowSparse?i:f.compact(i)}},{"./utils":448}],447:[function(e,t,r){"use strict";function A(e,t){n.apply(e,C(t)?t:[t])}function I(e,t,r,n,i,o,s,a,c,u,l,f,p,d,h,y){for(var m=e,b=y,g=0,v=!1;void 0!==(b=b.get(P))&&!v;){var j=b.get(e);if(g+=1,void 0!==j){if(j===g)throw new RangeError("Cyclic object value");v=!0}void 0===b.get(P)&&(g=0)}if("function"==typeof a?m=a(t,m):m instanceof Date?m=l(m):"comma"===r&&C(m)&&(m=R.maybeMap(m,function(e){return e instanceof Date?l(e):e})),null===m){if(i)return s&&!d?s(t,M.encoder,h,"key",f):t;m=""}if("string"==typeof(x=m)||"number"==typeof x||"boolean"==typeof x||"symbol"==typeof x||"bigint"==typeof x||R.isBuffer(m))return s?[p(d?t:s(t,M.encoder,h,"key",f))+"="+p(s(m,M.encoder,h,"value",f))]:[p(t)+"="+p(String(m))];var w=[];if(void 0!==m)for(var x,S,S="comma"===r&&C(m)?[{value:0<(m=d&&s?R.maybeMap(m,s):m).length?m.join(",")||null:void 0}]:C(a)?a:(x=Object.keys(m),c?x.sort(c):x),k=n&&C(m)&&1===m.length?t+"[]":t,_=0;_<S.length;++_){var T,E=S[_],O="object"==typeof E&&void 0!==E.value?E.value:m[E];o&&null===O||(E=C(m)?"function"==typeof r?r(k,E):k:k+(u?"."+E:"["+E+"]"),y.set(e,g),(T=D()).set(P,y),A(w,I(O,E,r,n,i,o,"comma"===r&&d&&C(m)?null:s,a,c,u,l,f,p,d,h,T)))}return w}var D=e("side-channel"),R=e("./utils"),f=e("./formats"),p=Object.prototype.hasOwnProperty,d={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},C=Array.isArray,n=Array.prototype.push,i=Date.prototype.toISOString,e=f.default,M={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:R.encode,encodeValuesOnly:!1,format:e,formatter:f.formatters[e],indices:!1,serializeDate:function(e){return i.call(e)},skipNulls:!1,strictNullHandling:!1},P={};t.exports=function(e,t){var r=e,n=function(e){if(!e)return M;if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||M.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var r=f.default;if(void 0!==e.format){if(!p.call(f.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var n=f.formatters[r],i=M.filter;return"function"!=typeof e.filter&&!C(e.filter)||(i=e.filter),{addQueryPrefix:("boolean"==typeof e.addQueryPrefix?e:M).addQueryPrefix,allowDots:void 0===e.allowDots?M.allowDots:!!e.allowDots,charset:t,charsetSentinel:("boolean"==typeof e.charsetSentinel?e:M).charsetSentinel,delimiter:(void 0===e.delimiter?M:e).delimiter,encode:("boolean"==typeof e.encode?e:M).encode,encoder:("function"==typeof e.encoder?e:M).encoder,encodeValuesOnly:("boolean"==typeof e.encodeValuesOnly?e:M).encodeValuesOnly,filter:i,format:r,formatter:n,serializeDate:("function"==typeof e.serializeDate?e:M).serializeDate,skipNulls:("boolean"==typeof e.skipNulls?e:M).skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:("boolean"==typeof e.strictNullHandling?e:M).strictNullHandling}}(t),i=("function"==typeof n.filter?r=(0,n.filter)("",r):C(n.filter)&&(a=n.filter),[]);if("object"!=typeof r||null===r)return"";var e=t&&t.arrayFormat in d?t.arrayFormat:!(t&&"indices"in t)||t.indices?"indices":"repeat",o=d[e];if(t&&"commaRoundTrip"in t&&"boolean"!=typeof t.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var s="comma"===o&&t&&t.commaRoundTrip,a=a||Object.keys(r);n.sort&&a.sort(n.sort);for(var c=D(),u=0;u<a.length;++u){var l=a[u];n.skipNulls&&null===r[l]||A(i,I(r[l],l,o,s,n.strictNullHandling,n.skipNulls,n.encode?n.encoder:null,n.filter,n.sort,n.allowDots,n.serializeDate,n.format,n.formatter,n.encodeValuesOnly,n.charset,c))}e=i.join(n.delimiter),t=!0===n.addQueryPrefix?"?":"";return n.charsetSentinel&&("iso-8859-1"===n.charset?t+="utf8=%26%2310003%3B&":t+="utf8=%E2%9C%93&"),0<e.length?t+e:""}},{"./formats":444,"./utils":448,"side-channel":467}],448:[function(e,t,r){"use strict";function a(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},n=0;n<e.length;++n)void 0!==e[n]&&(r[n]=e[n]);return r}var u=e("./formats"),c=Object.prototype.hasOwnProperty,y=Array.isArray,l=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}();t.exports={arrayToObject:a,assign:function(e,r){return Object.keys(r).reduce(function(e,t){return e[t]=r[t],e},e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],n=0;n<t.length;++n)for(var i=t[n],o=i.obj[i.prop],s=Object.keys(o),a=0;a<s.length;++a){var c=s[a],u=o[c];"object"==typeof u&&null!==u&&-1===r.indexOf(u)&&(t.push({obj:o,prop:c}),r.push(u))}for(var l=t;1<l.length;){var f=l.pop(),p=f.obj[f.prop];if(y(p)){for(var d=[],h=0;h<p.length;++h)void 0!==p[h]&&d.push(p[h]);f.obj[f.prop]=d}}return e},decode:function(t,e,r){t=t.replace(/\+/g," ");if("iso-8859-1"===r)return t.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(t)}catch(e){return t}},encode:function(e,t,r,n,i){if(0===e.length)return e;var o=e;if("symbol"==typeof e?o=Symbol.prototype.toString.call(e):"string"!=typeof e&&(o=String(e)),"iso-8859-1"===r)return escape(o).replace(/%u[0-9a-f]{4}/gi,function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"});for(var s="",a=0;a<o.length;++a){var c=o.charCodeAt(a);45===c||46===c||95===c||126===c||48<=c&&c<=57||65<=c&&c<=90||97<=c&&c<=122||i===u.RFC1738&&(40===c||41===c)?s+=o.charAt(a):c<128?s+=l[c]:c<2048?s+=l[192|c>>6]+l[128|63&c]:c<55296||57344<=c?s+=l[224|c>>12]+l[128|c>>6&63]+l[128|63&c]:(a+=1,c=65536+((1023&c)<<10|1023&o.charCodeAt(a)),s+=l[240|c>>18]+l[128|c>>12&63]+l[128|c>>6&63]+l[128|63&c])}return s},isBuffer:function(e){return!(!e||"object"!=typeof e||!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e)))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(y(e)){for(var r=[],n=0;n<e.length;n+=1)r.push(t(e[n]));return r}return t(e)},merge:function n(i,o,s){if(!o)return i;if("object"!=typeof o){if(y(i))i.push(o);else{if(!i||"object"!=typeof i)return[i,o];(s&&(s.plainObjects||s.allowPrototypes)||!c.call(Object.prototype,o))&&(i[o]=!0)}return i}var e;return i&&"object"==typeof i?(y(e=i)&&!y(o)&&(e=a(i,s)),y(i)&&y(o)?(o.forEach(function(e,t){var r;c.call(i,t)?(r=i[t])&&"object"==typeof r&&e&&"object"==typeof e?i[t]=n(r,e,s):i.push(e):i[t]=e}),i):Object.keys(o).reduce(function(e,t){var r=o[t];return c.call(e,t)?e[t]=n(e[t],r,s):e[t]=r,e},e)):[i].concat(o)}}},{"./formats":444}],449:[function(e,t,r){"use strict";t.exports=function(e,t,r,n){t=t||"&",r=r||"=";var i={};if("string"==typeof e&&0!==e.length){var o=/\+/g,t=(e=e.split(t),1e3),s=(n&&"number"==typeof n.maxKeys&&(t=n.maxKeys),e.length);0<t&&t<s&&(s=t);for(var a=0;a<s;++a){var c,u=e[a].replace(o,"%20"),l=u.indexOf(r),l=0<=l?(c=u.substr(0,l),u.substr(l+1)):(c=u,""),u=decodeURIComponent(c),l=decodeURIComponent(l);Object.prototype.hasOwnProperty.call(i,u)?f(i[u])?i[u].push(l):i[u]=[i[u],l]:i[u]=l}}return i};var f=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],450:[function(e,t,r){"use strict";function o(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}}t.exports=function(r,n,i,e){return n=n||"&",i=i||"=","object"==typeof(r=null===r?void 0:r)?a(c(r),function(e){var t=encodeURIComponent(o(e))+i;return s(r[e])?a(r[e],function(e){return t+encodeURIComponent(o(e))}).join(n):t+encodeURIComponent(o(r[e]))}).join(n):e?encodeURIComponent(o(e))+i+encodeURIComponent(o(r)):""};var s=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function a(e,t){if(e.map)return e.map(t);for(var r=[],n=0;n<e.length;n++)r.push(t(e[n],n));return r}var c=Object.keys||function(e){var t,r=[];for(t in e)Object.prototype.hasOwnProperty.call(e,t)&&r.push(t);return r}},{}],451:[function(e,t,r){"use strict";r.decode=r.parse=e("./decode"),r.encode=r.stringify=e("./encode")},{"./decode":449,"./encode":450}],452:[function(e,t,r){"use strict";var n=e("process-nextick-args"),i=Object.keys||function(e){var t,r=[];for(t in e)r.push(t);return r},t=(t.exports=l,Object.create(e("core-util-is"))),o=(t.inherits=e("inherits"),e("./_stream_readable")),s=e("./_stream_writable");t.inherits(l,o);for(var a=i(s.prototype),c=0;c<a.length;c++){var u=a[c];l.prototype[u]||(l.prototype[u]=s.prototype[u])}function l(e){if(!(this instanceof l))return new l(e);o.call(this,e),s.call(this,e),e&&!1===e.readable&&(this.readable=!1),e&&!1===e.writable&&(this.writable=!1),this.allowHalfOpen=!0,e&&!1===e.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",f)}function f(){this.allowHalfOpen||this._writableState.ended||n.nextTick(p,this)}function p(e){e.end()}Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&this._readableState.destroyed&&this._writableState.destroyed},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}}),l.prototype._destroy=function(e,t){this.push(null),this.end(),n.nextTick(t,e)}},{"./_stream_readable":454,"./_stream_writable":456,"core-util-is":382,inherits:407,"process-nextick-args":441}],453:[function(e,t,r){"use strict";t.exports=i;var n=e("./_stream_transform"),t=Object.create(e("core-util-is"));function i(e){if(!(this instanceof i))return new i(e);n.call(this,e)}t.inherits=e("inherits"),t.inherits(i,n),i.prototype._transform=function(e,t,r){r(null,e)}},{"./_stream_transform":455,"core-util-is":382,inherits:407}],454:[function(R,C,e){!function(I,D){!function(){"use strict";function y(e,t){return e.listeners(t).length}var o,m=R("process-nextick-args"),b=(C.exports=i,R("isarray")),r=(i.ReadableState=n,R("events").EventEmitter,R("./internal/streams/stream")),l=R("safe-buffer").Buffer,f=(void 0!==D?D:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var s,e=Object.create(R("core-util-is")),t=(e.inherits=R("inherits"),R("util")),g=void 0,g=t&&t.debuglog?t.debuglog("stream"):function(){},a=R("./internal/streams/BufferList"),t=R("./internal/streams/destroy"),c=(e.inherits(i,r),["error","close","destroy","pause","resume"]);function n(e,t){e=e||{};var t=t instanceof(o=o||R("./_stream_duplex")),r=(this.objectMode=!!e.objectMode,t&&(this.objectMode=this.objectMode||!!e.readableObjectMode),e.highWaterMark),n=e.readableHighWaterMark,i=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:t&&(n||0===n)?n:i,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new a,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(s=s||R("string_decoder/").StringDecoder,this.decoder=new s(e.encoding),this.encoding=e.encoding)}function i(e){if(o=o||R("./_stream_duplex"),!(this instanceof i))return new i(e);this._readableState=new n(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy)&&(this._destroy=e.destroy),r.call(this)}function u(e,t,r,n,i){var o,s,a,c,u=e._readableState;return null===t?(u.reading=!1,s=e,(c=u).ended||(c.decoder&&(a=c.decoder.end())&&a.length&&(c.buffer.push(a),c.length+=c.objectMode?1:a.length),c.ended=!0,v(s))):(o=i?o:function(e,t){var r;!function(e){return l.isBuffer(e)||e instanceof f}(t)&&"string"!=typeof t&&void 0!==t&&!e.objectMode&&(r=new TypeError("Invalid non-string/buffer chunk"));return r}(u,t))?e.emit("error",o):u.objectMode||t&&0<t.length?("string"==typeof t||u.objectMode||Object.getPrototypeOf(t)===l.prototype||(a=t,t=l.from(a)),n?u.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):p(e,u,t,!0):u.ended?e.emit("error",new Error("stream.push() after EOF")):(u.reading=!1,!u.decoder||r||(t=u.decoder.write(t),u.objectMode)||0!==t.length?p(e,u,t,!1):w(e,u))):n||(u.reading=!1),!(c=u).ended&&(c.needReadable||c.length<c.highWaterMark||0===c.length)}function p(e,t,r,n){t.flowing&&0===t.length&&!t.sync?(e.emit("data",r),e.read(0)):(t.length+=t.objectMode?1:r.length,n?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&v(e)),w(e,t)}Object.defineProperty(i.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),i.prototype.destroy=t.destroy,i.prototype._undestroy=t.undestroy,i.prototype._destroy=function(e,t){this.push(null),t(e)},i.prototype.push=function(e,t){var r,n=this._readableState;return n.objectMode?r=!0:"string"==typeof e&&((t=t||n.defaultEncoding)!==n.encoding&&(e=l.from(e,t),t=""),r=!0),u(this,e,t,!1,r)},i.prototype.unshift=function(e){return u(this,e,null,!0,!1)},i.prototype.isPaused=function(){return!1===this._readableState.flowing},i.prototype.setEncoding=function(e){return s=s||R("string_decoder/").StringDecoder,this._readableState.decoder=new s(e),this._readableState.encoding=e,this};var d=8388608;function h(e,t){var r;return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?(t.flowing&&t.length?t.buffer.head.data:t).length:(e>t.highWaterMark&&(t.highWaterMark=(d<=(r=e)?r=d:(r--,r=(r=(r=(r=(r|=r>>>1)|r>>>2)|r>>>4)|r>>>8)|r>>>16,r++),r)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function v(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(g("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?m.nextTick(j,e):j(e))}function j(e){g("emit readable"),e.emit("readable"),_(e)}function w(e,t){t.readingMore||(t.readingMore=!0,m.nextTick(x,e,t))}function x(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(g("maybeReadMore read 0"),e.read(0),r!==t.length);)r=t.length;t.readingMore=!1}function S(e){g("readable nexttick read 0"),e.read(0)}function k(e,t){t.reading||(g("resume read 0"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit("resume"),_(e),t.flowing&&!t.reading&&e.read(0)}function _(e){var t=e._readableState;for(g("flow",t.flowing);t.flowing&&null!==e.read(););}function T(e,t){var r;return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;e<t.head.data.length?(n=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):n=e===t.head.data.length?t.shift():(r?function(e,t){var r=t.head,n=1,i=r.data;e-=i.length;for(;r=r.next;){var o=r.data,s=e>o.length?o.length:e;if(s===o.length?i+=o:i+=o.slice(0,e),0===(e-=s)){s===o.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r).data=o.slice(s);break}++n}return t.length-=n,i}:function(e,t){var r=l.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var o=n.data,s=e>o.length?o.length:e;if(o.copy(r,r.length-e,0,s),0===(e-=s)){s===o.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n).data=o.slice(s);break}++i}return t.length-=i,r})(e,t);return n}(e,t.buffer,t.decoder),r)}function E(e){var t=e._readableState;if(0<t.length)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,m.nextTick(O,t,e))}function O(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function A(e,t){for(var r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1}i.prototype.read=function(e){g("read",e),e=parseInt(e,10);var t,r=this._readableState,n=e;return 0!==e&&(r.emittedReadable=!1),0===e&&r.needReadable&&(r.length>=r.highWaterMark||r.ended)?(g("read: emitReadable",r.length,r.ended),(0===r.length&&r.ended?E:v)(this),null):0===(e=h(e,r))&&r.ended?(0===r.length&&E(this),null):(t=r.needReadable,g("need readable",t),(0===r.length||r.length-e<r.highWaterMark)&&g("length less than watermark",t=!0),r.ended||r.reading?g("reading or ended",t=!1):t&&(g("do read"),r.reading=!0,r.sync=!0,0===r.length&&(r.needReadable=!0),this._read(r.highWaterMark),r.sync=!1,r.reading||(e=h(n,r))),null===(t=0<e?T(e,r):null)?(r.needReadable=!0,e=0):r.length-=e,0===r.length&&(r.ended||(r.needReadable=!0),n!==e)&&r.ended&&E(this),null!==t&&this.emit("data",t),t)},i.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},i.prototype.pipe=function(r,e){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=r;break;case 1:i.pipes=[i.pipes,r];break;default:i.pipes.push(r)}i.pipesCount+=1,g("pipe count=%d opts=%j",i.pipesCount,e);e=(!e||!1!==e.end)&&r!==I.stdout&&r!==I.stderr?s:h;function o(e,t){g("onunpipe"),e===n&&t&&!1===t.hasUnpiped&&(t.hasUnpiped=!0,g("cleanup"),r.removeListener("close",p),r.removeListener("finish",d),r.removeListener("drain",a),r.removeListener("error",f),r.removeListener("unpipe",o),n.removeListener("end",s),n.removeListener("end",h),n.removeListener("data",l),c=!0,!i.awaitDrain||r._writableState&&!r._writableState.needDrain||a())}function s(){g("onend"),r.end()}i.endEmitted?m.nextTick(e):n.once("end",e),r.on("unpipe",o);t=n;var t,a=function(){var e=t._readableState;g("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&y(t,"data")&&(e.flowing=!0,_(t))},c=(r.on("drain",a),!1);var u=!1;function l(e){g("ondata"),(u=!1)!==r.write(e)||u||((1===i.pipesCount&&i.pipes===r||1<i.pipesCount&&-1!==A(i.pipes,r))&&!c&&(g("false write response, pause",i.awaitDrain),i.awaitDrain++,u=!0),n.pause())}function f(e){g("onerror",e),h(),r.removeListener("error",f),0===y(r,"error")&&r.emit("error",e)}function p(){r.removeListener("finish",d),h()}function d(){g("onfinish"),r.removeListener("close",p),h()}function h(){g("unpipe"),n.unpipe(r)}return n.on("data",l),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?b(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(r,"error",f),r.once("close",p),r.once("finish",d),r.emit("pipe",n),i.flowing||(g("pipe resume"),n.resume()),r},i.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0!==t.pipesCount)if(1===t.pipesCount)e&&e!==t.pipes||(e=e||t.pipes,t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r));else if(e){var n=A(t.pipes,e);-1!==n&&(t.pipes.splice(n,1),--t.pipesCount,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this,r))}else{var i=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var s=0;s<o;s++)i[s].emit("unpipe",this,{hasUnpiped:!1})}return this},i.prototype.addListener=i.prototype.on=function(e,t){t=r.prototype.on.call(this,e,t);return"data"===e?!1!==this._readableState.flowing&&this.resume():"readable"!==e||(e=this._readableState).endEmitted||e.readableListening||(e.readableListening=e.needReadable=!0,e.emittedReadable=!1,e.reading?e.length&&v(this):m.nextTick(S,this)),t},i.prototype.resume=function(){var e,t=this._readableState;return t.flowing||(g("resume"),t.flowing=!0,e=this,(t=t).resumeScheduled)||(t.resumeScheduled=!0,m.nextTick(k,e,t)),this},i.prototype.pause=function(){return g("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(g("pause"),this._readableState.flowing=!1,this.emit("pause")),this},i.prototype.wrap=function(t){var e,r=this,n=this._readableState,i=!1;for(e in t.on("end",function(){var e;g("wrapped end"),n.decoder&&!n.ended&&(e=n.decoder.end())&&e.length&&r.push(e),r.push(null)}),t.on("data",function(e){g("wrapped data"),n.decoder&&(e=n.decoder.write(e)),n.objectMode&&null==e||(n.objectMode||e&&e.length)&&!r.push(e)&&(i=!0,t.pause())}),t)void 0===this[e]&&"function"==typeof t[e]&&(this[e]=function(e){return function(){return t[e].apply(t,arguments)}}(e));for(var o=0;o<c.length;o++)t.on(c[o],this.emit.bind(this,c[o]));return this._read=function(e){g("wrapped _read",e),i&&(i=!1,t.resume())},this},Object.defineProperty(i.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),i._fromList=T}.call(this)}.call(this,R("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./_stream_duplex":452,"./internal/streams/BufferList":457,"./internal/streams/destroy":458,"./internal/streams/stream":459,_process:538,"core-util-is":382,events:386,inherits:407,isarray:460,"process-nextick-args":441,"safe-buffer":461,"string_decoder/":462,util:102}],455:[function(e,t,r){"use strict";t.exports=i;var n=e("./_stream_duplex"),t=Object.create(e("core-util-is"));function i(e){if(!(this instanceof i))return new i(e);n.call(this,e),this._transformState={afterTransform:function(e,t){var r=this._transformState,n=(r.transforming=!1,r.writecb);if(!n)return this.emit("error",new Error("write callback called multiple times"));r.writechunk=null,(r.writecb=null)!=t&&this.push(t),n(e),(r=this._readableState).reading=!1,(r.needReadable||r.length<r.highWaterMark)&&this._read(r.highWaterMark)}.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&("function"==typeof e.transform&&(this._transform=e.transform),"function"==typeof e.flush)&&(this._flush=e.flush),this.on("prefinish",o)}function o(){var r=this;"function"==typeof this._flush?this._flush(function(e,t){s(r,e,t)}):s(this,null,null)}function s(e,t,r){if(t)return e.emit("error",t);if(null!=r&&e.push(r),e._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(e._transformState.transforming)throw new Error("Calling transform done when still transforming");e.push(null)}t.inherits=e("inherits"),t.inherits(i,n),i.prototype.push=function(e,t){return this._transformState.needTransform=!1,n.prototype.push.call(this,e,t)},i.prototype._transform=function(e,t,r){throw new Error("_transform() is not implemented")},i.prototype._write=function(e,t,r){var n=this._transformState;n.writecb=r,n.writechunk=e,n.writeencoding=t,!n.transforming&&(r=this._readableState,n.needTransform||r.needReadable||r.length<r.highWaterMark)&&this._read(r.highWaterMark)},i.prototype._read=function(e){var t=this._transformState;null!==t.writechunk&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0},i.prototype._destroy=function(e,t){var r=this;n.prototype._destroy.call(this,e,function(e){t(e),r.emit("close")})}},{"./_stream_duplex":452,"core-util-is":382,inherits:407}],456:[function(S,k,e){!function(u,l,x){!function(){"use strict";var d=S("process-nextick-args");function f(o){var s=this;this.next=null,this.entry=null,this.finish=function(){var e=s,t=o,r=void 0,n=e.entry;for(e.entry=null;n;){var i=n.callback;t.pendingcb--,i(r),n=n.next}t.corkedRequestsFree.next=e}}k.exports=a;var o,p=!u.browser&&-1<["v0.10","v0.9."].indexOf(u.version.slice(0,5))?x:d.nextTick,e=(a.WritableState=s,Object.create(S("core-util-is"))),t=(e.inherits=S("inherits"),{deprecate:S("util-deprecate")}),r=S("./internal/streams/stream"),h=S("safe-buffer").Buffer,y=(void 0!==l?l:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var n,i=S("./internal/streams/destroy");function m(){}function s(e,l){o=o||S("./_stream_duplex"),e=e||{};var t=l instanceof o,r=(this.objectMode=!!e.objectMode,t&&(this.objectMode=this.objectMode||!!e.writableObjectMode),e.highWaterMark),n=e.writableHighWaterMark,i=this.objectMode?16:16384,r=(this.highWaterMark=r||0===r?r:t&&(n||0===n)?n:i,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,(this.destroyed=!1)===e.decodeStrings);this.decodeStrings=!r,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){e=e,r=(t=l)._writableState,n=r.sync,i=r.writecb;var t,r,n,i,o=r;{var s,a,c,u;(o.writing=!1,o.writecb=null,o.length-=o.writelen,o.writelen=0,e)?(o=t,a=n,c=e,u=i,--(s=r).pendingcb,a?(d.nextTick(u,c),d.nextTick(w,o,s),o._writableState.errorEmitted=!0,o.emit("error",c)):(u(c),o._writableState.errorEmitted=!0,o.emit("error",c),w(o,s))):((e=j(r))||r.corked||r.bufferProcessing||!r.bufferedRequest||v(t,r),n?p(g,t,r,e,i):g(t,r,e,i))}},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new f(this)}e.inherits(a,r),s.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t};try{Object.defineProperty(s.prototype,"buffer",{get:t.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}function a(e){if(o=o||S("./_stream_duplex"),!(n.call(a,this)||this instanceof o))return new a(e);this._writableState=new s(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final)&&(this._final=e.final),r.call(this)}function b(e,t,r,n,i,o,s){t.writelen=n,t.writecb=s,t.writing=!0,t.sync=!0,r?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function g(e,t,r,n){var i;r||(r=e,0===(i=t).length&&i.needDrain&&(i.needDrain=!1,r.emit("drain"))),t.pendingcb--,n(),w(e,t)}function v(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){for(var n=t.bufferedRequestCount,i=new Array(n),n=t.corkedRequestsFree,o=(n.entry=r,0),s=!0;r;)(i[o]=r).isBuf||(s=!1),r=r.next,o+=1;i.allBuffers=s,b(e,t,!0,t.length,i,"",n.finish),t.pendingcb++,t.lastBufferedRequest=null,n.next?(t.corkedRequestsFree=n.next,n.next=null):t.corkedRequestsFree=new f(t),t.bufferedRequestCount=0}else{for(;r;){var a=r.chunk,c=r.encoding,u=r.callback;if(b(e,t,!1,t.objectMode?1:a.length,a,c,u),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function j(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function c(t,r){t._final(function(e){r.pendingcb--,e&&t.emit("error",e),r.prefinished=!0,t.emit("prefinish"),w(t,r)})}function w(e,t){var r,n,i=j(t);return i&&(r=e,(n=t).prefinished||n.finalCalled||("function"==typeof r._final?(n.pendingcb++,n.finalCalled=!0,d.nextTick(c,r,n)):(n.prefinished=!0,r.emit("prefinish"))),0===t.pendingcb)&&(t.finished=!0,e.emit("finish")),i}"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(n=Function.prototype[Symbol.hasInstance],Object.defineProperty(a,Symbol.hasInstance,{value:function(e){return!!n.call(this,e)||this===a&&e&&e._writableState instanceof s}})):n=function(e){return e instanceof this},a.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},a.prototype.write=function(e,t,r){var n,i,o,s,a,c,u,l=this._writableState,f=!1,p=!l.objectMode&&(p=e,h.isBuffer(p)||p instanceof y);return p&&!h.isBuffer(e)&&(a=e,e=h.from(a)),"function"==typeof t&&(r=t,t=null),t=p?"buffer":t||l.defaultEncoding,"function"!=typeof r&&(r=m),l.ended?(a=this,c=r,u=new Error("write after end"),a.emit("error",u),d.nextTick(c,u)):(p||(c=this,u=l,i=r,s=!(o=!0),null===(n=e)?s=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||u.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(c.emit("error",s),d.nextTick(i,s),o=!1),o))&&(l.pendingcb++,f=function(e,t,r,n,i,o){r||(s=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=h.from(t,r));return t}(t,n,i),n!==s&&(r=!0,i="buffer",n=s));var s=t.objectMode?1:n.length,a=(t.length+=s,t.length<t.highWaterMark);a||(t.needDrain=!0);{var c;t.writing||t.corked?(c=t.lastBufferedRequest,t.lastBufferedRequest={chunk:n,encoding:i,isBuf:r,callback:o,next:null},c?c.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1):b(e,t,!1,s,n,i,o)}return a}(this,l,p,e,t,r)),f},a.prototype.cork=function(){this._writableState.corked++},a.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.bufferProcessing||!e.bufferedRequest||v(this,e))},a.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),-1<["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase()))return this._writableState.defaultEncoding=e,this;throw new TypeError("Unknown encoding: "+e)},Object.defineProperty(a.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),a.prototype._write=function(e,t,r){r(new Error("_write() is not implemented"))},a.prototype._writev=null,a.prototype.end=function(e,t,r){var n=this._writableState;"function"==typeof e?(r=e,t=e=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||(e=this,t=r,(r=n).ending=!0,w(e,r),t&&(r.finished?d.nextTick(t):e.once("finish",t)),r.ended=!0,e.writable=!1)},Object.defineProperty(a.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),a.prototype.destroy=i.destroy,a.prototype._undestroy=i.undestroy,a.prototype._destroy=function(e,t){this.end(),t(e)}}.call(this)}.call(this,S("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},S("timers").setImmediate)},{"./_stream_duplex":452,"./internal/streams/destroy":458,"./internal/streams/stream":459,_process:538,"core-util-is":382,inherits:407,"process-nextick-args":441,"safe-buffer":461,timers:484,"util-deprecate":486}],457:[function(e,t,r){"use strict";var s=e("safe-buffer").Buffer,n=e("util");function i(){if(!(this instanceof i))throw new TypeError("Cannot call a class as a function");this.head=null,this.tail=null,this.length=0}t.exports=(i.prototype.push=function(e){e={data:e,next:null};0<this.length?this.tail.next=e:this.head=e,this.tail=e,++this.length},i.prototype.unshift=function(e){e={data:e,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},i.prototype.shift=function(){var e;if(0!==this.length)return e=this.head.data,1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e},i.prototype.clear=function(){this.head=this.tail=null,this.length=0},i.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},i.prototype.concat=function(e){if(0===this.length)return s.alloc(0);for(var t,r,n=s.allocUnsafe(e>>>0),i=this.head,o=0;i;)t=i.data,r=o,t.copy(n,r),o+=i.data.length,i=i.next;return n},i),n&&n.inspect&&n.inspect.custom&&(t.exports.prototype[n.inspect.custom]=function(){var e=n.inspect({length:this.length});return this.constructor.name+" "+e})},{"safe-buffer":461,util:102}],458:[function(e,t,r){"use strict";var o=e("process-nextick-args");function s(e,t){e.emit("error",t)}t.exports={destroy:function(e,t){var r=this,n=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return n||i?t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,o.nextTick(s,this,e)):o.nextTick(s,this,e)):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?r._writableState?r._writableState.errorEmitted||(r._writableState.errorEmitted=!0,o.nextTick(s,r,e)):o.nextTick(s,r,e):t&&t(e)})),this},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},{"process-nextick-args":441}],459:[function(e,t,r){t.exports=e("events").EventEmitter},{events:386}],460:[function(e,t,r){var n={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},{}],461:[function(e,t,r){var n=e("buffer"),i=n.Buffer;function o(e,t){for(var r in e)t[r]=e[r]}function s(e,t,r){return i(e,t,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(o(n,r),r.Buffer=s),o(i,s),s.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,r)},s.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");e=i(e);return void 0!==t?"string"==typeof r?e.fill(t,r):e.fill(t):e.fill(0),e},s.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},s.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}},{buffer:103}],462:[function(e,t,r){"use strict";var n=e("safe-buffer").Buffer,i=n.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"==typeof t||n.isEncoding!==i&&i(e))return t||e;throw new Error("Unknown encoding: "+e)}function s(e){var t;switch(this.encoding=o(e),this.encoding){case"utf16le":this.text=u,this.end=l,t=4;break;case"utf8":this.fillLast=c,t=4;break;case"base64":this.text=f,this.end=p,t=3;break;default:return this.write=d,void(this.end=h)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}function a(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function c(e){var t,r=this.lastTotal-this.lastNeed,n=(t=this,128!=(192&(n=e)[0])?(t.lastNeed=0,"\ufffd"):1<t.lastNeed&&1<n.length?128!=(192&n[1])?(t.lastNeed=1,"\ufffd"):2<t.lastNeed&&2<n.length&&128!=(192&n[2])?(t.lastNeed=2,"\ufffd"):void 0:void 0);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,r,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,r,0,e.length),void(this.lastNeed-=e.length))}function u(e,t){if((e.length-t)%2!=0)return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1);t=e.toString("utf16le",t);if(t){var r=t.charCodeAt(t.length-1);if(55296<=r&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],t.slice(0,-1)}return t}function l(e){var t,e=e&&e.length?this.write(e):"";return this.lastNeed?(t=this.lastTotal-this.lastNeed,e+this.lastChar.toString("utf16le",0,t)):e}function f(e,t){var r=(e.length-t)%3;return 0==r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1==r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function p(e){e=e&&e.length?this.write(e):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function d(e){return e.toString(this.encoding)}function h(e){return e&&e.length?this.write(e):""}(r.StringDecoder=s).prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||""},s.prototype.end=function(e){e=e&&e.length?this.write(e):"";return this.lastNeed?e+"\ufffd":e},s.prototype.text=function(e,t){var r=function(e,t,r){var n=t.length-1;if(!(n<r)){var i=a(t[n]);if(0<=i)return 0<i&&(e.lastNeed=i-1),i;if(!(--n<r||-2===i)){if(0<=(i=a(t[n])))return 0<i&&(e.lastNeed=i-2),i;if(!(--n<r||-2===i)&&0<=(i=a(t[n])))return 0<i&&(2===i?i=0:e.lastNeed=i-3),i}}return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;r=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},s.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},{"safe-buffer":461}],463:[function(e,t,r){(((r=t.exports=e("./lib/_stream_readable.js")).Stream=r).Readable=r).Writable=e("./lib/_stream_writable.js"),r.Duplex=e("./lib/_stream_duplex.js"),r.Transform=e("./lib/_stream_transform.js"),r.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":452,"./lib/_stream_passthrough.js":453,"./lib/_stream_readable.js":454,"./lib/_stream_transform.js":455,"./lib/_stream_writable.js":456}],464:[function(e,t,r){var n=e("buffer"),i=n.Buffer;function o(e,t){for(var r in e)t[r]=e[r]}function s(e,t,r){return i(e,t,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(o(n,r),r.Buffer=s),s.prototype=Object.create(i.prototype),o(i,s),s.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,r)},s.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");e=i(e);return void 0!==t?"string"==typeof r?e.fill(t,r):e.fill(t):e.fill(0),e},s.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},s.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}},{buffer:103}],465:[function(B,e,q){!function(r){!function(){var c=void 0===q?this.sax={}:q,u=(c.parser=function(e,t){return new s(e,t)},c.SAXParser=s,c.SAXStream=o,c.createStream=function(e,t){return new o(e,t)},c.MAX_BUFFER_LENGTH=65536,["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"]);function s(e,t){if(!(this instanceof s))return new s(e,t);for(var r=this,n=r,i=0,o=u.length;i<o;i++)n[u[i]]="";r.q=r.c="",r.bufferCheckPosition=c.MAX_BUFFER_LENGTH,r.opt=t||{},r.opt.lowercase=r.opt.lowercase||r.opt.lowercasetags,r.looseCase=r.opt.lowercase?"toLowerCase":"toUpperCase",r.tags=[],r.closed=r.closedRoot=r.sawRoot=!1,r.tag=r.error=null,r.strict=!!e,r.noscript=!(!e&&!r.opt.noscript),r.state=x.BEGIN,r.strictEntities=r.opt.strictEntities,r.ENTITIES=r.strictEntities?Object.create(c.XML_ENTITIES):Object.create(c.ENTITIES),r.attribList=[],r.opt.xmlns&&(r.ns=Object.create(d)),r.trackPosition=!1!==r.opt.position,r.trackPosition&&(r.position=r.line=r.column=0),S(r,"onready")}c.EVENTS=["text","processinginstruction","sgmldeclaration","doctype","comment","opentagstart","attribute","opentag","closetag","opencdata","cdata","closecdata","error","end","ready","script","opennamespace","closenamespace"],Object.create||(Object.create=function(e){function t(){}return t.prototype=e,new t}),Object.keys||(Object.keys=function(e){var t,r=[];for(t in e)e.hasOwnProperty(t)&&r.push(t);return r}),s.prototype={end:function(){O(this)},write:function(e){var t=this;if(this.error)throw this.error;if(t.closed)return E(t,"Cannot write after close. Assign an onready handler.");if(null===e)return O(t);"object"==typeof e&&(e=e.toString());var r,n,i=0,o="";for(;;){if(o=N(e,i++),!(t.c=o))break;switch(t.trackPosition&&(t.position++,"\n"===o?(t.line++,t.column=0):t.column++),t.state){case x.BEGIN:if(t.state=x.BEGIN_WHITESPACE,"\ufeff"===o)continue;P(t,o);continue;case x.BEGIN_WHITESPACE:P(t,o);continue;case x.TEXT:if(t.sawRoot&&!t.closedRoot){for(var s=i-1;o&&"<"!==o&&"&"!==o;)(o=N(e,i++))&&t.trackPosition&&(t.position++,"\n"===o?(t.line++,t.column=0):t.column++);t.textNode+=e.substring(s,i-1)}"<"!==o||t.sawRoot&&t.closedRoot&&!t.strict?(b(o)||t.sawRoot&&!t.closedRoot||A(t,"Text data outside of root node."),"&"===o?t.state=x.TEXT_ENTITY:t.textNode+=o):(t.state=x.OPEN_WAKA,t.startTagPosition=t.position);continue;case x.SCRIPT:"<"===o?t.state=x.SCRIPT_ENDING:t.script+=o;continue;case x.SCRIPT_ENDING:"/"===o?t.state=x.CLOSE_TAG:(t.script+="<"+o,t.state=x.SCRIPT);continue;case x.OPEN_WAKA:"!"===o?(t.state=x.SGML_DECL,t.sgmlDecl=""):b(o)||(v(h,o)?(t.state=x.OPEN_TAG,t.tagName=o):"/"===o?(t.state=x.CLOSE_TAG,t.tagName=""):"?"===o?(t.state=x.PROC_INST,t.procInstName=t.procInstBody=""):(A(t,"Unencoded <"),t.startTagPosition+1<t.position&&(s=t.position-t.startTagPosition,o=new Array(s).join(" ")+o),t.textNode+="<"+o,t.state=x.TEXT));continue;case x.SGML_DECL:(t.sgmlDecl+o).toUpperCase()===l?(k(t,"onopencdata"),t.state=x.CDATA,t.sgmlDecl="",t.cdata=""):t.sgmlDecl+o==="--"?(t.state=x.COMMENT,t.comment="",t.sgmlDecl=""):(t.sgmlDecl+o).toUpperCase()===f?(t.state=x.DOCTYPE,(t.doctype||t.sawRoot)&&A(t,"Inappropriately located doctype declaration"),t.doctype="",t.sgmlDecl=""):">"===o?(k(t,"onsgmldeclaration",t.sgmlDecl),t.sgmlDecl="",t.state=x.TEXT):(g(o)&&(t.state=x.SGML_DECL_QUOTED),t.sgmlDecl+=o);continue;case x.SGML_DECL_QUOTED:o===t.q&&(t.state=x.SGML_DECL,t.q=""),t.sgmlDecl+=o;continue;case x.DOCTYPE:">"===o?(t.state=x.TEXT,k(t,"ondoctype",t.doctype),t.doctype=!0):(t.doctype+=o,"["===o?t.state=x.DOCTYPE_DTD:g(o)&&(t.state=x.DOCTYPE_QUOTED,t.q=o));continue;case x.DOCTYPE_QUOTED:t.doctype+=o,o===t.q&&(t.q="",t.state=x.DOCTYPE);continue;case x.DOCTYPE_DTD:t.doctype+=o,"]"===o?t.state=x.DOCTYPE:g(o)&&(t.state=x.DOCTYPE_DTD_QUOTED,t.q=o);continue;case x.DOCTYPE_DTD_QUOTED:t.doctype+=o,o===t.q&&(t.state=x.DOCTYPE_DTD,t.q="");continue;case x.COMMENT:"-"===o?t.state=x.COMMENT_ENDING:t.comment+=o;continue;case x.COMMENT_ENDING:"-"===o?(t.state=x.COMMENT_ENDED,t.comment=T(t.opt,t.comment),t.comment&&k(t,"oncomment",t.comment),t.comment=""):(t.comment+="-"+o,t.state=x.COMMENT);continue;case x.COMMENT_ENDED:">"!==o?(A(t,"Malformed comment"),t.comment+="--"+o,t.state=x.COMMENT):t.state=x.TEXT;continue;case x.CDATA:"]"===o?t.state=x.CDATA_ENDING:t.cdata+=o;continue;case x.CDATA_ENDING:"]"===o?t.state=x.CDATA_ENDING_2:(t.cdata+="]"+o,t.state=x.CDATA);continue;case x.CDATA_ENDING_2:">"===o?(t.cdata&&k(t,"oncdata",t.cdata),k(t,"onclosecdata"),t.cdata="",t.state=x.TEXT):"]"===o?t.cdata+="]":(t.cdata+="]]"+o,t.state=x.CDATA);continue;case x.PROC_INST:"?"===o?t.state=x.PROC_INST_ENDING:b(o)?t.state=x.PROC_INST_BODY:t.procInstName+=o;continue;case x.PROC_INST_BODY:if(!t.procInstBody&&b(o))continue;"?"===o?t.state=x.PROC_INST_ENDING:t.procInstBody+=o;continue;case x.PROC_INST_ENDING:">"===o?(k(t,"onprocessinginstruction",{name:t.procInstName,body:t.procInstBody}),t.procInstName=t.procInstBody="",t.state=x.TEXT):(t.procInstBody+="?"+o,t.state=x.PROC_INST_BODY);continue;case x.OPEN_TAG:v(y,o)?t.tagName+=o:(function(e){e.strict||(e.tagName=e.tagName[e.looseCase]());var t=e.tags[e.tags.length-1]||e,r=e.tag={name:e.tagName,attributes:{}};e.opt.xmlns&&(r.ns=t.ns);e.attribList.length=0,k(e,"onopentagstart",r)}(t),">"===o?R(t):"/"===o?t.state=x.OPEN_TAG_SLASH:(b(o)||A(t,"Invalid character in tag name"),t.state=x.ATTRIB));continue;case x.OPEN_TAG_SLASH:">"===o?(R(t,!0),C(t)):(A(t,"Forward-slash in opening tag not followed by >"),t.state=x.ATTRIB);continue;case x.ATTRIB:if(b(o))continue;">"===o?R(t):"/"===o?t.state=x.OPEN_TAG_SLASH:v(h,o)?(t.attribName=o,t.attribValue="",t.state=x.ATTRIB_NAME):A(t,"Invalid attribute name");continue;case x.ATTRIB_NAME:"="===o?t.state=x.ATTRIB_VALUE:">"===o?(A(t,"Attribute without value"),t.attribValue=t.attribName,D(t),R(t)):b(o)?t.state=x.ATTRIB_NAME_SAW_WHITE:v(y,o)?t.attribName+=o:A(t,"Invalid attribute name");continue;case x.ATTRIB_NAME_SAW_WHITE:if("="===o)t.state=x.ATTRIB_VALUE;else{if(b(o))continue;A(t,"Attribute without value"),t.tag.attributes[t.attribName]="",t.attribValue="",k(t,"onattribute",{name:t.attribName,value:""}),t.attribName="",">"===o?R(t):v(h,o)?(t.attribName=o,t.state=x.ATTRIB_NAME):(A(t,"Invalid attribute name"),t.state=x.ATTRIB)}continue;case x.ATTRIB_VALUE:if(b(o))continue;g(o)?(t.q=o,t.state=x.ATTRIB_VALUE_QUOTED):(A(t,"Unquoted attribute value"),t.state=x.ATTRIB_VALUE_UNQUOTED,t.attribValue=o);continue;case x.ATTRIB_VALUE_QUOTED:if(o!==t.q){"&"===o?t.state=x.ATTRIB_VALUE_ENTITY_Q:t.attribValue+=o;continue}D(t),t.q="",t.state=x.ATTRIB_VALUE_CLOSED;continue;case x.ATTRIB_VALUE_CLOSED:b(o)?t.state=x.ATTRIB:">"===o?R(t):"/"===o?t.state=x.OPEN_TAG_SLASH:v(h,o)?(A(t,"No whitespace between attributes"),t.attribName=o,t.attribValue="",t.state=x.ATTRIB_NAME):A(t,"Invalid attribute name");continue;case x.ATTRIB_VALUE_UNQUOTED:if(!function(e){return">"===e||b(e)}(o)){"&"===o?t.state=x.ATTRIB_VALUE_ENTITY_U:t.attribValue+=o;continue}D(t),">"===o?R(t):t.state=x.ATTRIB;continue;case x.CLOSE_TAG:if(t.tagName)">"===o?C(t):v(y,o)?t.tagName+=o:t.script?(t.script+="</"+t.tagName,t.tagName="",t.state=x.SCRIPT):(b(o)||A(t,"Invalid tagname in closing tag"),t.state=x.CLOSE_TAG_SAW_WHITE);else{if(b(o))continue;!function(e,t){return!v(e,t)}(h,o)?t.tagName=o:t.script?(t.script+="</"+o,t.state=x.SCRIPT):A(t,"Invalid tagname in closing tag.")}continue;case x.CLOSE_TAG_SAW_WHITE:if(b(o))continue;">"===o?C(t):A(t,"Invalid characters in closing tag");continue;case x.TEXT_ENTITY:case x.ATTRIB_VALUE_ENTITY_Q:case x.ATTRIB_VALUE_ENTITY_U:switch(t.state){case x.TEXT_ENTITY:r=x.TEXT,n="textNode";break;case x.ATTRIB_VALUE_ENTITY_Q:r=x.ATTRIB_VALUE_QUOTED,n="attribValue";break;case x.ATTRIB_VALUE_ENTITY_U:r=x.ATTRIB_VALUE_UNQUOTED,n="attribValue"}var a;";"===o?t.opt.unparsedEntities?(a=M(t),t.entity="",t.state=r,t.write(a)):(t[n]+=M(t),t.entity="",t.state=r):v(t.entity.length?L:m,o)?t.entity+=o:(A(t,"Invalid character in entity name"),t[n]+="&"+t.entity+o,t.entity="",t.state=r);continue;default:throw new Error(t,"Unknown state: "+t.state)}}t.position>=t.bufferCheckPosition&&!function(e){for(var t=Math.max(c.MAX_BUFFER_LENGTH,10),r=0,n=0,i=u.length;n<i;n++){var o=e[u[n]].length;if(t<o)switch(u[n]){case"textNode":_(e);break;case"cdata":k(e,"oncdata",e.cdata),e.cdata="";break;case"script":k(e,"onscript",e.script),e.script="";break;default:E(e,"Max buffer length exceeded: "+u[n])}r=Math.max(r,o)}var s=c.MAX_BUFFER_LENGTH-r;e.bufferCheckPosition=s+e.position}(t);return t},resume:function(){return this.error=null,this},close:function(){return this.write(null)},flush:function(){var e;_(e=this),""!==e.cdata&&(k(e,"oncdata",e.cdata),e.cdata=""),""!==e.script&&(k(e,"onscript",e.script),e.script="")}};try{n=B("stream").Stream}catch(e){n=function(){}}var n=n||function(){},i=c.EVENTS.filter(function(e){return"error"!==e&&"end"!==e});function o(e,t){if(!(this instanceof o))return new o(e,t);n.apply(this),this._parser=new s(e,t),this.writable=!0,this.readable=!0;var r=this;this._parser.onend=function(){r.emit("end")},this._parser.onerror=function(e){r.emit("error",e),r._parser.error=null},this._decoder=null,i.forEach(function(t){Object.defineProperty(r,"on"+t,{get:function(){return r._parser["on"+t]},set:function(e){if(!e)return r.removeAllListeners(t),r._parser["on"+t]=e;r.on(t,e)},enumerable:!0,configurable:!1})})}(o.prototype=Object.create(n.prototype,{constructor:{value:o}})).write=function(e){var t;return"function"==typeof r&&"function"==typeof r.isBuffer&&r.isBuffer(e)&&(this._decoder||(t=B("string_decoder").StringDecoder,this._decoder=new t("utf8")),e=this._decoder.write(e)),this._parser.write(e.toString()),this.emit("data",e),!0},o.prototype.end=function(e){return e&&e.length&&this.write(e),this._parser.end(),!0},o.prototype.on=function(t,e){var r=this;return r._parser["on"+t]||-1===i.indexOf(t)||(r._parser["on"+t]=function(){var e=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);e.splice(0,0,t),r.emit.apply(r,e)}),n.prototype.on.call(r,t,e)};var l="[CDATA[",f="DOCTYPE",a="http://www.w3.org/XML/1998/namespace",p="http://www.w3.org/2000/xmlns/",d={xml:a,xmlns:p},h=/[:_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]/,y=/[:_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-]/,m=/[#:_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]/,L=/[#:_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-]/;function b(e){return" "===e||"\n"===e||"\r"===e||"\t"===e}function g(e){return'"'===e||"'"===e}function v(e,t){return e.test(t)}var e,j,w,x=0;for(e in c.STATE={BEGIN:x++,BEGIN_WHITESPACE:x++,TEXT:x++,TEXT_ENTITY:x++,OPEN_WAKA:x++,SGML_DECL:x++,SGML_DECL_QUOTED:x++,DOCTYPE:x++,DOCTYPE_QUOTED:x++,DOCTYPE_DTD:x++,DOCTYPE_DTD_QUOTED:x++,COMMENT_STARTING:x++,COMMENT:x++,COMMENT_ENDING:x++,COMMENT_ENDED:x++,CDATA:x++,CDATA_ENDING:x++,CDATA_ENDING_2:x++,PROC_INST:x++,PROC_INST_BODY:x++,PROC_INST_ENDING:x++,OPEN_TAG:x++,OPEN_TAG_SLASH:x++,ATTRIB:x++,ATTRIB_NAME:x++,ATTRIB_NAME_SAW_WHITE:x++,ATTRIB_VALUE:x++,ATTRIB_VALUE_QUOTED:x++,ATTRIB_VALUE_CLOSED:x++,ATTRIB_VALUE_UNQUOTED:x++,ATTRIB_VALUE_ENTITY_Q:x++,ATTRIB_VALUE_ENTITY_U:x++,CLOSE_TAG:x++,CLOSE_TAG_SAW_WHITE:x++,SCRIPT:x++,SCRIPT_ENDING:x++},c.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},c.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,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,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,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,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,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,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},Object.keys(c.ENTITIES).forEach(function(e){var t=c.ENTITIES[e],t="number"==typeof t?String.fromCharCode(t):t;c.ENTITIES[e]=t}),c.STATE)c.STATE[c.STATE[e]]=e;function S(e,t,r){e[t]&&e[t](r)}function k(e,t,r){e.textNode&&_(e),S(e,t,r)}function _(e){e.textNode=T(e.opt,e.textNode),e.textNode&&S(e,"ontext",e.textNode),e.textNode=""}function T(e,t){return e.trim&&(t=t.trim()),t=e.normalize?t.replace(/\s+/g," "):t}function E(e,t){return _(e),e.trackPosition&&(t+="\nLine: "+e.line+"\nColumn: "+e.column+"\nChar: "+e.c),t=new Error(t),e.error=t,S(e,"onerror",t),e}function O(e){return e.sawRoot&&!e.closedRoot&&A(e,"Unclosed root tag"),e.state!==x.BEGIN&&e.state!==x.BEGIN_WHITESPACE&&e.state!==x.TEXT&&E(e,"Unexpected end"),_(e),e.c="",e.closed=!0,S(e,"onend"),s.call(e,e.strict,e.opt),e}function A(e,t){if("object"!=typeof e||!(e instanceof s))throw new Error("bad call to strictFail");e.strict&&E(e,t)}function I(e,t){var r=e.indexOf(":")<0?["",e]:e.split(":"),n=r[0],r=r[1];return t&&"xmlns"===e&&(n="xmlns",r=""),{prefix:n,local:r}}function D(e){var t,r,n;e.strict||(e.attribName=e.attribName[e.looseCase]()),-1!==e.attribList.indexOf(e.attribName)||e.tag.attributes.hasOwnProperty(e.attribName)||(e.opt.xmlns?(r=(t=I(e.attribName,!0)).prefix,t=t.local,"xmlns"===r&&("xml"===t&&e.attribValue!==a?A(e,"xml: prefix must be bound to "+a+"\nActual: "+e.attribValue):"xmlns"===t&&e.attribValue!==p?A(e,"xmlns: prefix must be bound to "+p+"\nActual: "+e.attribValue):(r=e.tag,n=e.tags[e.tags.length-1]||e,r.ns===n.ns&&(r.ns=Object.create(n.ns)),r.ns[t]=e.attribValue)),e.attribList.push([e.attribName,e.attribValue])):(e.tag.attributes[e.attribName]=e.attribValue,k(e,"onattribute",{name:e.attribName,value:e.attribValue}))),e.attribName=e.attribValue=""}function R(t,e){if(t.opt.xmlns){var r=t.tag,n=I(t.tagName),n=(r.prefix=n.prefix,r.local=n.local,r.uri=r.ns[n.prefix]||"",r.prefix&&!r.uri&&(A(t,"Unbound namespace prefix: "+JSON.stringify(t.tagName)),r.uri=n.prefix),t.tags[t.tags.length-1]||t);r.ns&&n.ns!==r.ns&&Object.keys(r.ns).forEach(function(e){k(t,"onopennamespace",{prefix:e,uri:r.ns[e]})});for(var i=0,o=t.attribList.length;i<o;i++){var s=t.attribList[i],a=s[0],s=s[1],c=I(a,!0),u=c.prefix,c=c.local,l=""!==u&&r.ns[u]||"",s={name:a,value:s,prefix:u,local:c,uri:l};u&&"xmlns"!==u&&!l&&(A(t,"Unbound namespace prefix: "+JSON.stringify(u)),s.uri=u),t.tag.attributes[a]=s,k(t,"onattribute",s)}t.attribList.length=0}t.tag.isSelfClosing=!!e,t.sawRoot=!0,t.tags.push(t.tag),k(t,"onopentag",t.tag),e||(t.noscript||"script"!==t.tagName.toLowerCase()?t.state=x.TEXT:t.state=x.SCRIPT,t.tag=null,t.tagName=""),t.attribName=t.attribValue="",t.attribList.length=0}function C(r){if(r.tagName){if(r.script){if("script"!==r.tagName)return r.script+="</"+r.tagName+">",r.tagName="",void(r.state=x.SCRIPT);k(r,"onscript",r.script),r.script=""}for(var e=r.tags.length,t=r.tagName,n=t=r.strict?t:t[r.looseCase]();e--&&r.tags[e].name!==n;)A(r,"Unexpected close tag");if(e<0)A(r,"Unmatched closing tag: "+r.tagName),r.textNode+="</"+r.tagName+">";else{r.tagName=t;for(var i=r.tags.length;i-- >e;){var o,s=r.tag=r.tags.pop();r.tagName=r.tag.name,k(r,"onclosetag",r.tagName);for(o in s.ns)o,s.ns[o];var a=r.tags[r.tags.length-1]||r;r.opt.xmlns&&s.ns!==a.ns&&Object.keys(s.ns).forEach(function(e){var t=s.ns[e];k(r,"onclosenamespace",{prefix:e,uri:t})})}0===e&&(r.closedRoot=!0),r.tagName=r.attribValue=r.attribName="",r.attribList.length=0}}else A(r,"Weird empty close tag."),r.textNode+="</>";r.state=x.TEXT}function M(e){var t,r=e.entity,n=r.toLowerCase(),i="";return e.ENTITIES[r]||e.ENTITIES[n]||("#"===(r=n).charAt(0)&&(i="x"===r.charAt(1)?(r=r.slice(2),(t=parseInt(r,16)).toString(16)):(r=r.slice(1),(t=parseInt(r,10)).toString(10))),r=r.replace(/^0+/,""),isNaN(t)||i.toLowerCase()!==r?(A(e,"Invalid character entity"),"&"+e.entity+";"):String.fromCodePoint(t))}function P(e,t){"<"===t?(e.state=x.OPEN_WAKA,e.startTagPosition=e.position):b(t)||(A(e,"Non-whitespace before first tag."),e.textNode=t,e.state=x.TEXT)}function N(e,t){var r="";return r=t<e.length?e.charAt(t):r}function t(){var e=[],t=-1,r=arguments.length;if(!r)return"";for(var n="";++t<r;){var i=Number(arguments[t]);if(!isFinite(i)||i<0||1114111<i||w(i)!==i)throw RangeError("Invalid code point: "+i);i<=65535?e.push(i):e.push(55296+((i-=65536)>>10),i%1024+56320),(t+1===r||16384<e.length)&&(n+=j.apply(null,e),e.length=0)}return n}x=c.STATE,String.fromCodePoint||(j=String.fromCharCode,w=Math.floor,Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:t,configurable:!0,writable:!0}):String.fromCodePoint=t)}.call(this)}.call(this,B("buffer").Buffer)},{buffer:103,stream:468,string_decoder:483}],466:[function(e,t,r){"use strict";var n=e("get-intrinsic"),s=e("define-data-property"),a=e("has-property-descriptors")(),c=e("gopd"),u=n("%TypeError%"),l=n("%Math.floor%");t.exports=function(e,t){if("function"!=typeof e)throw new u("`fn` is not a function");if("number"!=typeof t||t<0||4294967295<t||l(t)!==t)throw new u("`length` must be a positive 32-bit integer");var r,n=2<arguments.length&&!!arguments[2],i=!0,o=!0;return"length"in e&&c&&((r=c(e,"length"))&&!r.configurable&&(i=!1),r)&&!r.writable&&(o=!1),!i&&!o&&n||(a?s(e,"length",t,!0,!0):s(e,"length",t)),e}},{"define-data-property":384,"get-intrinsic":390,gopd:391,"has-property-descriptors":392}],467:[function(e,t,r){"use strict";function a(e,t){for(var r,n=e;null!==(r=n.next);n=r)if(r.key===t)return n.next=r.next,r.next=e.next,e.next=r}var n=e("get-intrinsic"),i=e("call-bind/callBound"),c=e("object-inspect"),u=n("%TypeError%"),l=n("%WeakMap%",!0),f=n("%Map%",!0),p=i("WeakMap.prototype.get",!0),d=i("WeakMap.prototype.set",!0),h=i("WeakMap.prototype.has",!0),y=i("Map.prototype.get",!0),m=i("Map.prototype.set",!0),b=i("Map.prototype.has",!0);t.exports=function(){var i,o,s,t={assert:function(e){if(!t.has(e))throw new u("Side channel does not contain "+c(e))},get:function(e){if(l&&e&&("object"==typeof e||"function"==typeof e)){if(i)return p(i,e)}else if(f){if(o)return y(o,e)}else{var t;if(s)return(t=a(t=s,e))&&t.value}},has:function(e){if(l&&e&&("object"==typeof e||"function"==typeof e)){if(i)return h(i,e)}else if(f){if(o)return b(o,e)}else if(s)return!!a(s,e);return!1},set:function(e,t){var r,n;l&&e&&("object"==typeof e||"function"==typeof e)?(i=i||new l,d(i,e,t)):f?(o=o||new f,m(o,e,t)):(t=t,(n=a(r=s=s||{key:{},next:null},e=e))?n.value=t:r.next={key:e,next:r.next,value:t})}};return t}},{"call-bind/callBound":105,"get-intrinsic":390,"object-inspect":433}],468:[function(e,t,r){t.exports=n;var l=e("events").EventEmitter;function n(){l.call(this)}e("inherits")(n,l),n.Readable=e("readable-stream/lib/_stream_readable.js"),n.Writable=e("readable-stream/lib/_stream_writable.js"),n.Duplex=e("readable-stream/lib/_stream_duplex.js"),n.Transform=e("readable-stream/lib/_stream_transform.js"),n.PassThrough=e("readable-stream/lib/_stream_passthrough.js"),n.finished=e("readable-stream/lib/internal/streams/end-of-stream.js"),n.pipeline=e("readable-stream/lib/internal/streams/pipeline.js"),(n.Stream=n).prototype.pipe=function(t,e){var r=this;function n(e){t.writable&&!1===t.write(e)&&r.pause&&r.pause()}function i(){r.readable&&r.resume&&r.resume()}r.on("data",n),t.on("drain",i),t._isStdio||e&&!1===e.end||(r.on("end",s),r.on("close",a));var o=!1;function s(){o||(o=!0,t.end())}function a(){o||(o=!0,"function"==typeof t.destroy&&t.destroy())}function c(e){if(u(),0===l.listenerCount(this,"error"))throw e}function u(){r.removeListener("data",n),t.removeListener("drain",i),r.removeListener("end",s),r.removeListener("close",a),r.removeListener("error",c),t.removeListener("error",c),r.removeListener("end",u),r.removeListener("close",u),t.removeListener("close",u)}return r.on("error",c),t.on("error",c),r.on("end",u),r.on("close",u),t.on("close",u),t.emit("pipe",r),t}},{events:386,inherits:407,"readable-stream/lib/_stream_duplex.js":470,"readable-stream/lib/_stream_passthrough.js":471,"readable-stream/lib/_stream_readable.js":472,"readable-stream/lib/_stream_transform.js":473,"readable-stream/lib/_stream_writable.js":474,"readable-stream/lib/internal/streams/end-of-stream.js":478,"readable-stream/lib/internal/streams/pipeline.js":480}],469:[function(e,t,r){"use strict";var n={};function i(e,i,t){var r=function(n){var e,t;function r(e,t,r){return n.call(this,(e=e,t=t,r=r,"string"==typeof i?i:i(e,t,r)))||this}return t=n,(e=r).prototype=Object.create(t.prototype),(e.prototype.constructor=e).__proto__=t,r}(t=t||Error);r.prototype.name=t.name,r.prototype.code=e,n[e]=r}function c(e,t){var r;return Array.isArray(e)?(r=e.length,e=e.map(function(e){return String(e)}),2<r?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:2===r?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])):"of ".concat(t," ").concat(String(e))}i("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError),i("ERR_INVALID_ARG_TYPE",function(e,t,r){var n,i,o,s,a;return"string"==typeof t&&(s="not ",t.substr(!o||o<0?0:+o,s.length)===s)?(n="must not be",t=t.replace(/^not /,"")):n="must be",o=e,s=" argument",(void 0===a||a>o.length)&&(a=o.length),o=(o.substring(a-s.length,a)===s?"The ".concat(e," "):(a=(i="number"!=typeof i?0:i)+(o=".").length>(a=e).length||-1===a.indexOf(o,i)?"argument":"property",'The "'.concat(e,'" ').concat(a," "))).concat(n," ").concat(c(t,"type")),o+=". Received type ".concat(typeof r)},TypeError),i("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),i("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"}),i("ERR_STREAM_PREMATURE_CLOSE","Premature close"),i("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"}),i("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),i("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),i("ERR_STREAM_WRITE_AFTER_END","write after end"),i("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),i("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError),i("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.codes=n},{}],470:[function(l,f,e){!function(u){!function(){"use strict";var e=Object.keys||function(e){var t,r=[];for(t in e)r.push(t);return r},t=(f.exports=s,l("./_stream_readable")),r=l("./_stream_writable");l("inherits")(s,t);for(var n=e(r.prototype),i=0;i<n.length;i++){var o=n[i];s.prototype[o]||(s.prototype[o]=r.prototype[o])}function s(e){if(!(this instanceof s))return new s(e);t.call(this,e),r.call(this,e),this.allowHalfOpen=!0,e&&(!1===e.readable&&(this.readable=!1),!1===e.writable&&(this.writable=!1),!1===e.allowHalfOpen)&&(this.allowHalfOpen=!1,this.once("end",a))}function a(){this._writableState.ended||u.nextTick(c,this)}function c(e){e.end()}Object.defineProperty(s.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(s.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(s.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(s.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&this._readableState.destroyed&&this._writableState.destroyed},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}})}.call(this)}.call(this,l("_process"))},{"./_stream_readable":472,"./_stream_writable":474,_process:538,inherits:407}],471:[function(e,t,r){"use strict";t.exports=i;var n=e("./_stream_transform");function i(e){if(!(this instanceof i))return new i(e);n.call(this,e)}e("inherits")(i,n),i.prototype._transform=function(e,t,r){r(null,e)}},{"./_stream_transform":473,inherits:407}],472:[function(q,F,e){!function(L,B){!function(){"use strict";function h(e,t){return e.listeners(t).length}(F.exports=j).ReadableState=v,q("events").EventEmitter;var n,i=q("./internal/streams/stream"),l=q("buffer").Buffer,f=(void 0!==B?B:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var o,e,r,t=q("util"),y=t&&t.debuglog?t.debuglog("stream"):function(){},s=q("./internal/streams/buffer_list"),t=q("./internal/streams/destroy"),a=q("./internal/streams/state").getHighWaterMark,c=q("../errors").codes,p=c.ERR_INVALID_ARG_TYPE,d=c.ERR_STREAM_PUSH_AFTER_EOF,u=c.ERR_METHOD_NOT_IMPLEMENTED,m=c.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,b=(q("inherits")(j,i),t.errorOrDestroy),g=["error","close","destroy","pause","resume"];function v(e,t,r){n=n||q("./_stream_duplex"),e=e||{},"boolean"!=typeof r&&(r=t instanceof n),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=a(this,e,"readableHighWaterMark",r),this.buffer=new s,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(o=o||q("string_decoder/").StringDecoder,this.decoder=new o(e.encoding),this.encoding=e.encoding)}function j(e){if(n=n||q("./_stream_duplex"),!(this instanceof j))return new j(e);var t=this instanceof n;this._readableState=new v(e,this,t),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy)&&(this._destroy=e.destroy),i.call(this)}function w(e,t,r,n,i){y("readableAddChunk",t);var o,s,a,c,u=e._readableState;if(null===t)u.reading=!1,s=e,a=u,y("onEofChunk"),a.ended||(a.decoder&&(c=a.decoder.end())&&c.length&&(a.buffer.push(c),a.length+=a.objectMode?1:c.length),a.ended=!0,a.sync?_(s):(a.needReadable=!1,a.emittedReadable||(a.emittedReadable=!0,T(s))));else if(o=i?o:function(e,t){var r;!function(e){return l.isBuffer(e)||e instanceof f}(t)&&"string"!=typeof t&&void 0!==t&&!e.objectMode&&(r=new p("chunk",["string","Buffer","Uint8Array"],t));return r}(u,t))b(e,o);else if(u.objectMode||t&&0<t.length)if("string"==typeof t||u.objectMode||Object.getPrototypeOf(t)===l.prototype||(c=t,t=l.from(c)),n)u.endEmitted?b(e,new m):x(e,u,t,!0);else if(u.ended)b(e,new d);else{if(u.destroyed)return!1;u.reading=!1,!u.decoder||r||(t=u.decoder.write(t),u.objectMode)||0!==t.length?x(e,u,t,!1):E(e,u)}else n||(u.reading=!1,E(e,u));return!u.ended&&(u.length<u.highWaterMark||0===u.length)}function x(e,t,r,n){t.flowing&&0===t.length&&!t.sync?(t.awaitDrain=0,e.emit("data",r)):(t.length+=t.objectMode?1:r.length,n?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&_(e)),E(e,t)}Object.defineProperty(j.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),j.prototype.destroy=t.destroy,j.prototype._undestroy=t.undestroy,j.prototype._destroy=function(e,t){t(e)},j.prototype.push=function(e,t){var r,n=this._readableState;return n.objectMode?r=!0:"string"==typeof e&&((t=t||n.defaultEncoding)!==n.encoding&&(e=l.from(e,t),t=""),r=!0),w(this,e,t,!1,r)},j.prototype.unshift=function(e){return w(this,e,null,!0,!1)},j.prototype.isPaused=function(){return!1===this._readableState.flowing},j.prototype.setEncoding=function(e){for(var t=new(o=o||q("string_decoder/").StringDecoder)(e),r=(this._readableState.decoder=t,this._readableState.encoding=this._readableState.decoder.encoding,this._readableState.buffer.head),n="";null!==r;)n+=t.write(r.data),r=r.next;return this._readableState.buffer.clear(),""!==n&&this._readableState.buffer.push(n),this._readableState.length=n.length,this};var S=1073741824;function k(e,t){var r;return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?(t.flowing&&t.length?t.buffer.head.data:t).length:(e>t.highWaterMark&&(t.highWaterMark=(S<=(r=e)?r=S:(r--,r=(r=(r=(r=(r|=r>>>1)|r>>>2)|r>>>4)|r>>>8)|r>>>16,r++),r)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function _(e){var t=e._readableState;y("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(y("emitReadable",t.flowing),t.emittedReadable=!0,L.nextTick(T,e))}function T(e){var t=e._readableState;y("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,R(e)}function E(e,t){t.readingMore||(t.readingMore=!0,L.nextTick(O,e,t))}function O(e,t){for(;!t.reading&&!t.ended&&(t.length<t.highWaterMark||t.flowing&&0===t.length);){var r=t.length;if(y("maybeReadMore read 0"),e.read(0),r===t.length)break}t.readingMore=!1}function A(e){var t=e._readableState;t.readableListening=0<e.listenerCount("readable"),t.resumeScheduled&&!t.paused?t.flowing=!0:0<e.listenerCount("data")&&e.resume()}function I(e){y("readable nexttick read 0"),e.read(0)}function D(e,t){y("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),R(e),t.flowing&&!t.reading&&e.read(0)}function R(e){var t=e._readableState;for(y("flow",t.flowing);t.flowing&&null!==e.read(););}function C(e,t){var r;return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r)}function M(e){var t=e._readableState;y("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,L.nextTick(N,t,e))}function N(e,t){y("endReadableNT",e.endEmitted,e.length),e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy&&(!(e=t._writableState)||e.autoDestroy&&e.finished)&&t.destroy())}function P(e,t){for(var r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1}j.prototype.read=function(e){y("read",e),e=parseInt(e,10);var t,r=this._readableState,n=e;return 0!==e&&(r.emittedReadable=!1),0===e&&r.needReadable&&((0!==r.highWaterMark?r.length>=r.highWaterMark:0<r.length)||r.ended)?(y("read: emitReadable",r.length,r.ended),(0===r.length&&r.ended?M:_)(this),null):0===(e=k(e,r))&&r.ended?(0===r.length&&M(this),null):(t=r.needReadable,y("need readable",t),(0===r.length||r.length-e<r.highWaterMark)&&y("length less than watermark",t=!0),r.ended||r.reading?y("reading or ended",t=!1):t&&(y("do read"),r.reading=!0,r.sync=!0,0===r.length&&(r.needReadable=!0),this._read(r.highWaterMark),r.sync=!1,r.reading||(e=k(n,r))),null===(t=0<e?C(e,r):null)?(r.needReadable=r.length<=r.highWaterMark,e=0):(r.length-=e,r.awaitDrain=0),0===r.length&&(r.ended||(r.needReadable=!0),n!==e)&&r.ended&&M(this),null!==t&&this.emit("data",t),t)},j.prototype._read=function(e){b(this,new u("_read()"))},j.prototype.pipe=function(r,e){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=r;break;case 1:i.pipes=[i.pipes,r];break;default:i.pipes.push(r)}i.pipesCount+=1,y("pipe count=%d opts=%j",i.pipesCount,e);e=(!e||!1!==e.end)&&r!==L.stdout&&r!==L.stderr?s:d;function o(e,t){y("onunpipe"),e===n&&t&&!1===t.hasUnpiped&&(t.hasUnpiped=!0,y("cleanup"),r.removeListener("close",f),r.removeListener("finish",p),r.removeListener("drain",a),r.removeListener("error",l),r.removeListener("unpipe",o),n.removeListener("end",s),n.removeListener("end",d),n.removeListener("data",u),c=!0,!i.awaitDrain||r._writableState&&!r._writableState.needDrain||a())}function s(){y("onend"),r.end()}i.endEmitted?L.nextTick(e):n.once("end",e),r.on("unpipe",o);t=n;var t,a=function(){var e=t._readableState;y("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&h(t,"data")&&(e.flowing=!0,R(t))},c=(r.on("drain",a),!1);function u(e){y("ondata");e=r.write(e);y("dest.write",e),!1===e&&((1===i.pipesCount&&i.pipes===r||1<i.pipesCount&&-1!==P(i.pipes,r))&&!c&&(y("false write response, pause",i.awaitDrain),i.awaitDrain++),n.pause())}function l(e){y("onerror",e),d(),r.removeListener("error",l),0===h(r,"error")&&b(r,e)}function f(){r.removeListener("finish",p),d()}function p(){y("onfinish"),r.removeListener("close",f),d()}function d(){y("unpipe"),n.unpipe(r)}return n.on("data",u),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(r,"error",l),r.once("close",f),r.once("finish",p),r.emit("pipe",n),i.flowing||(y("pipe resume"),n.resume()),r},j.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0!==t.pipesCount)if(1===t.pipesCount)e&&e!==t.pipes||(e=e||t.pipes,t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r));else if(e){var n=P(t.pipes,e);-1!==n&&(t.pipes.splice(n,1),--t.pipesCount,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this,r))}else{var i=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var s=0;s<o;s++)i[s].emit("unpipe",this,{hasUnpiped:!1})}return this},j.prototype.addListener=j.prototype.on=function(e,t){var t=i.prototype.on.call(this,e,t),r=this._readableState;return"data"===e?(r.readableListening=0<this.listenerCount("readable"),!1!==r.flowing&&this.resume()):"readable"!==e||r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.flowing=!1,r.emittedReadable=!1,y("on readable",r.length,r.reading),r.length?_(this):r.reading||L.nextTick(I,this)),t},j.prototype.removeListener=function(e,t){t=i.prototype.removeListener.call(this,e,t);return"readable"===e&&L.nextTick(A,this),t},j.prototype.removeAllListeners=function(e){var t=i.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||L.nextTick(A,this),t},j.prototype.resume=function(){var e,t,r=this._readableState;return r.flowing||(y("resume"),r.flowing=!r.readableListening,e=this,(t=r).resumeScheduled)||(t.resumeScheduled=!0,L.nextTick(D,e,t)),r.paused=!1,this},j.prototype.pause=function(){return y("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(y("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},j.prototype.wrap=function(t){var e,r=this,n=this._readableState,i=!1;for(e in t.on("end",function(){var e;y("wrapped end"),n.decoder&&!n.ended&&(e=n.decoder.end())&&e.length&&r.push(e),r.push(null)}),t.on("data",function(e){y("wrapped data"),n.decoder&&(e=n.decoder.write(e)),n.objectMode&&null==e||(n.objectMode||e&&e.length)&&!r.push(e)&&(i=!0,t.pause())}),t)void 0===this[e]&&"function"==typeof t[e]&&(this[e]=function(e){return function(){return t[e].apply(t,arguments)}}(e));for(var o=0;o<g.length;o++)t.on(g[o],this.emit.bind(this,g[o]));return this._read=function(e){y("wrapped _read",e),i&&(i=!1,t.resume())},this},"function"==typeof Symbol&&(j.prototype[Symbol.asyncIterator]=function(){return(e=void 0===e?q("./internal/streams/async_iterator"):e)(this)}),Object.defineProperty(j.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(j.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(j.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}}),j._fromList=C,Object.defineProperty(j.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}}),"function"==typeof Symbol&&(j.from=function(e,t){return(r=void 0===r?q("./internal/streams/from"):r)(j,e,t)})}.call(this)}.call(this,q("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../errors":469,"./_stream_duplex":470,"./internal/streams/async_iterator":475,"./internal/streams/buffer_list":476,"./internal/streams/destroy":477,"./internal/streams/from":479,"./internal/streams/state":481,"./internal/streams/stream":482,_process:538,buffer:103,events:386,inherits:407,"string_decoder/":483,util:102}],473:[function(e,t,r){"use strict";t.exports=c;var t=e("../errors").codes,n=t.ERR_METHOD_NOT_IMPLEMENTED,i=t.ERR_MULTIPLE_CALLBACK,o=t.ERR_TRANSFORM_ALREADY_TRANSFORMING,s=t.ERR_TRANSFORM_WITH_LENGTH_0,a=e("./_stream_duplex");function c(e){if(!(this instanceof c))return new c(e);a.call(this,e),this._transformState={afterTransform:function(e,t){var r=this._transformState,n=(r.transforming=!1,r.writecb);if(null===n)return this.emit("error",new i);r.writechunk=null,(r.writecb=null)!=t&&this.push(t),n(e),(r=this._readableState).reading=!1,(r.needReadable||r.length<r.highWaterMark)&&this._read(r.highWaterMark)}.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&("function"==typeof e.transform&&(this._transform=e.transform),"function"==typeof e.flush)&&(this._flush=e.flush),this.on("prefinish",u)}function u(){var r=this;"function"!=typeof this._flush||this._readableState.destroyed?l(this,null,null):this._flush(function(e,t){l(r,e,t)})}function l(e,t,r){if(t)return e.emit("error",t);if(null!=r&&e.push(r),e._writableState.length)throw new s;if(e._transformState.transforming)throw new o;e.push(null)}e("inherits")(c,a),c.prototype.push=function(e,t){return this._transformState.needTransform=!1,a.prototype.push.call(this,e,t)},c.prototype._transform=function(e,t,r){r(new n("_transform()"))},c.prototype._write=function(e,t,r){var n=this._transformState;n.writecb=r,n.writechunk=e,n.writeencoding=t,!n.transforming&&(r=this._readableState,n.needTransform||r.needReadable||r.length<r.highWaterMark)&&this._read(r.highWaterMark)},c.prototype._read=function(e){var t=this._transformState;null===t.writechunk||t.transforming?t.needTransform=!0:(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform))},c.prototype._destroy=function(e,t){a.prototype._destroy.call(this,e,function(e){t(e)})}},{"../errors":469,"./_stream_duplex":470,inherits:407}],474:[function(I,D,e){!function(O,A){!function(){"use strict";function f(o){var s=this;this.next=null,this.entry=null,this.finish=function(){var e=s,t=o,r=void 0,n=e.entry;for(e.entry=null;n;){var i=n.callback;t.pendingcb--,i(r),n=n.next}t.corkedRequestsFree.next=e}}(D.exports=w).WritableState=j;var r,e={deprecate:I("util-deprecate")},n=I("./internal/streams/stream"),u=I("buffer").Buffer,l=(void 0!==A?A:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var i,t=I("./internal/streams/destroy"),o=I("./internal/streams/state").getHighWaterMark,s=I("../errors").codes,p=s.ERR_INVALID_ARG_TYPE,a=s.ERR_METHOD_NOT_IMPLEMENTED,d=s.ERR_MULTIPLE_CALLBACK,c=s.ERR_STREAM_CANNOT_PIPE,h=s.ERR_STREAM_DESTROYED,y=s.ERR_STREAM_NULL_VALUES,m=s.ERR_STREAM_WRITE_AFTER_END,b=s.ERR_UNKNOWN_ENCODING,g=t.errorOrDestroy;function v(){}function j(e,l,t){r=r||I("./_stream_duplex"),e=e||{},"boolean"!=typeof t&&(t=l instanceof r),this.objectMode=!!e.objectMode,t&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=o(this,e,"writableHighWaterMark",t),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1;t=(this.destroyed=!1)===e.decodeStrings;this.decodeStrings=!t,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){var t=l,r=t._writableState,n=r.sync,i=r.writecb;if("function"!=typeof i)throw new d;var o,s,a,c,u=r;u.writing=!1,u.writecb=null,u.length-=u.writelen,u.writelen=0,e?(u=t,s=n,a=e,c=i,--(o=r).pendingcb,s?(O.nextTick(c,a),O.nextTick(E,u,o),u._writableState.errorEmitted=!0,g(u,a)):(c(a),u._writableState.errorEmitted=!0,g(u,a),E(u,o))):((e=_(r)||t.destroyed)||r.corked||r.bufferProcessing||!r.bufferedRequest||k(t,r),n?O.nextTick(S,t,r,e,i):S(t,r,e,i))},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new f(this)}I("inherits")(w,n),j.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t};try{Object.defineProperty(j.prototype,"buffer",{get:e.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}function w(e){var t=this instanceof(r=r||I("./_stream_duplex"));if(!t&&!i.call(w,this))return new w(e);this._writableState=new j(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final)&&(this._final=e.final),n.call(this)}function x(e,t,r,n,i,o,s){t.writelen=n,t.writecb=s,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new h("write")):r?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function S(e,t,r,n){var i;r||(r=e,0===(i=t).length&&i.needDrain&&(i.needDrain=!1,r.emit("drain"))),t.pendingcb--,n(),E(e,t)}function k(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){for(var n=t.bufferedRequestCount,i=new Array(n),n=t.corkedRequestsFree,o=(n.entry=r,0),s=!0;r;)(i[o]=r).isBuf||(s=!1),r=r.next,o+=1;i.allBuffers=s,x(e,t,!0,t.length,i,"",n.finish),t.pendingcb++,t.lastBufferedRequest=null,n.next?(t.corkedRequestsFree=n.next,n.next=null):t.corkedRequestsFree=new f(t),t.bufferedRequestCount=0}else{for(;r;){var a=r.chunk,c=r.encoding,u=r.callback;if(x(e,t,!1,t.objectMode?1:a.length,a,c,u),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function _(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function T(t,r){t._final(function(e){r.pendingcb--,e&&g(t,e),r.prefinished=!0,t.emit("prefinish"),E(t,r)})}function E(e,t){var r,n,i=_(t);return i&&(r=e,(n=t).prefinished||n.finalCalled||("function"!=typeof r._final||n.destroyed?(n.prefinished=!0,r.emit("prefinish")):(n.pendingcb++,n.finalCalled=!0,O.nextTick(T,r,n))),0===t.pendingcb)&&(t.finished=!0,e.emit("finish"),t.autoDestroy)&&(!(r=e._readableState)||r.autoDestroy&&r.endEmitted)&&e.destroy(),i}"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(i=Function.prototype[Symbol.hasInstance],Object.defineProperty(w,Symbol.hasInstance,{value:function(e){return!!i.call(this,e)||this===w&&e&&e._writableState instanceof j}})):i=function(e){return e instanceof this},w.prototype.pipe=function(){g(this,new c)},w.prototype.write=function(e,t,r){var n,i,o,s=this._writableState,a=!1,c=!s.objectMode&&(c=e,u.isBuffer(c)||c instanceof l);return c&&!u.isBuffer(e)&&(n=e,e=u.from(n)),"function"==typeof t&&(r=t,t=null),t=c?"buffer":t||s.defaultEncoding,"function"!=typeof r&&(r=v),s.ending?(n=this,i=r,o=new m,g(n,o),O.nextTick(i,o)):(c||function(e,t,r,n){var i;if(null===r?i=new y:"string"==typeof r||t.objectMode||(i=new p("chunk",["string","Buffer"],r)),!i)return 1;g(e,i),O.nextTick(n,i)}(this,s,e,r))&&(s.pendingcb++,a=function(e,t,r,n,i,o){r||(s=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=u.from(t,r));return t}(t,n,i),n!==s&&(r=!0,i="buffer",n=s));var s=t.objectMode?1:n.length,a=(t.length+=s,t.length<t.highWaterMark);a||(t.needDrain=!0);{var c;t.writing||t.corked?(c=t.lastBufferedRequest,t.lastBufferedRequest={chunk:n,encoding:i,isBuf:r,callback:o,next:null},c?c.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1):x(e,t,!1,s,n,i,o)}return a}(this,s,c,e,t,r)),a},w.prototype.cork=function(){this._writableState.corked++},w.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.bufferProcessing||!e.bufferedRequest||k(this,e))},w.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),-1<["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase()))return this._writableState.defaultEncoding=e,this;throw new b(e)},Object.defineProperty(w.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(w.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),w.prototype._write=function(e,t,r){r(new a("_write()"))},w.prototype._writev=null,w.prototype.end=function(e,t,r){var n=this._writableState;if("function"==typeof e?(r=e,t=e=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),!n.ending){e=this,t=n,n=r;t.ending=!0,E(e,t),n&&(t.finished?O.nextTick(n):e.once("finish",n)),t.ended=!0,e.writable=!1}return this},Object.defineProperty(w.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(w.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),w.prototype.destroy=t.destroy,w.prototype._undestroy=t.undestroy,w.prototype._destroy=function(e,t){t(e)}}.call(this)}.call(this,I("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../errors":469,"./_stream_duplex":470,"./internal/streams/destroy":477,"./internal/streams/state":481,"./internal/streams/stream":482,_process:538,buffer:103,inherits:407,"util-deprecate":486}],475:[function(n,m,e){!function(y){!function(){"use strict";var e;function r(e,t,r){(t=function(e){e=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0===r)return("string"===t?String:Number)(e);r=r.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}(e,"string");return"symbol"==typeof e?e:String(e)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r}var i=n("./end-of-stream"),o=Symbol("lastResolve"),s=Symbol("lastReject"),a=Symbol("error"),c=Symbol("ended"),u=Symbol("lastPromise"),l=Symbol("handlePromise"),f=Symbol("stream");function p(e,t){return{value:e,done:t}}function d(e){var t,r=e[o];null!==r&&null!==(t=e[f].read())&&(e[u]=null,e[o]=null,e[s]=null,r(p(t,!1)))}var t=Object.getPrototypeOf(function(){}),h=Object.setPrototypeOf((r(e={get stream(){return this[f]},next:function(){var r=this,e=this[a];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(p(void 0,!0));if(this[f].destroyed)return new Promise(function(e,t){y.nextTick(function(){r[a]?t(r[a]):e(p(void 0,!0))})});var t,n,i,e=this[u];if(e)t=new Promise((n=e,i=this,function(e,t){n.then(function(){i[c]?e(p(void 0,!0)):i[l](e,t)},t)}));else{e=this[f].read();if(null!==e)return Promise.resolve(p(e,!1));t=new Promise(this[l])}return this[u]=t}},Symbol.asyncIterator,function(){return this}),r(e,"return",function(){var e=this;return new Promise(function(t,r){e[f].destroy(null,function(e){e?r(e):t(p(void 0,!0))})})}),e),t);m.exports=function(e){var t,n=Object.create(h,(r(t={},f,{value:e,writable:!0}),r(t,o,{value:null,writable:!0}),r(t,s,{value:null,writable:!0}),r(t,a,{value:null,writable:!0}),r(t,c,{value:e._readableState.endEmitted,writable:!0}),r(t,l,{value:function(e,t){var r=n[f].read();r?(n[u]=null,n[o]=null,n[s]=null,e(p(r,!1))):(n[o]=e,n[s]=t)},writable:!0}),t));return n[u]=null,i(e,function(e){var t;e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code?(null!==(t=n[s])&&(n[u]=null,n[o]=null,n[s]=null,t(e)),n[a]=e):(null!==(t=n[o])&&(n[u]=null,n[o]=null,t(p(void 0,!(n[s]=null)))),n[c]=!0)}),e.on("readable",function(e){y.nextTick(d,e)}.bind(null,n)),n}}.call(this)}.call(this,n("_process"))},{"./end-of-stream":478,_process:538}],476:[function(e,t,r){"use strict";function o(t,e){var r,n=Object.keys(t);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(t),e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)),n}function i(n){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{};e%2?o(Object(i),!0).forEach(function(e){var t,r;t=n,r=i[e=e],(e=a(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(i)):o(Object(i)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(i,e))})}return n}function s(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,a(n.key),n)}}function a(e){e=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0===r)return("string"===t?String:Number)(e);r=r.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}(e,"string");return"symbol"==typeof e?e:String(e)}var c=e("buffer").Buffer,u=e("util").inspect,l=u&&u.custom||"inspect";t.exports=function(){function e(){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function");this.head=null,this.tail=null,this.length=0}var t,r,n;return t=e,(r=[{key:"push",value:function(e){e={data:e,next:null};0<this.length?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(e){e={data:e,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){var e;if(0!==this.length)return e=this.head.data,1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r}},{key:"concat",value:function(e){if(0===this.length)return c.alloc(0);for(var t,r,n=c.allocUnsafe(e>>>0),i=this.head,o=0;i;)t=i.data,r=o,c.prototype.copy.call(t,n,r),o+=i.data.length,i=i.next;return n}},{key:"consume",value:function(e,t){var r;return e<this.head.data.length?(r=this.head.data.slice(0,e),this.head.data=this.head.data.slice(e)):r=e===this.head.data.length?this.shift():t?this._getString(e):this._getBuffer(e),r}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(e){var t=this.head,r=1,n=t.data;for(e-=n.length;t=t.next;){var i=t.data,o=e>i.length?i.length:e;if(o===i.length?n+=i:n+=i.slice(0,e),0===(e-=o)){o===i.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t).data=i.slice(o);break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(e){var t=c.allocUnsafe(e),r=this.head,n=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var i=r.data,o=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,o),0===(e-=o)){o===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r).data=i.slice(o);break}++n}return this.length-=n,t}},{key:l,value:function(e,t){return u(this,i(i({},t),{},{depth:0,customInspect:!1}))}}])&&s(t.prototype,r),n&&s(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}()},{buffer:103,util:102}],477:[function(e,t,r){!function(c){!function(){"use strict";function o(e,t){a(e,t),s(e)}function s(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function a(e,t){e.emit("error",t)}t.exports={destroy:function(e,t){var r=this,n=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return n||i?t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,c.nextTick(a,this,e)):c.nextTick(a,this,e)):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(e){!t&&e?r._writableState?r._writableState.errorEmitted?c.nextTick(s,r):(r._writableState.errorEmitted=!0,c.nextTick(o,r,e)):c.nextTick(o,r,e):t?(c.nextTick(s,r),t(e)):c.nextTick(s,r)})),this},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(e,t){var r=e._readableState,n=e._writableState;r&&r.autoDestroy||n&&n.autoDestroy?e.destroy(t):e.emit("error",t)}}}.call(this)}.call(this,e("_process"))},{_process:538}],478:[function(e,t,r){"use strict";var b=e("../../../errors").codes.ERR_STREAM_PREMATURE_CLOSE;function g(){}t.exports=function e(t,r,n){var i,o,s,a,c,u,l,f,p,d,h,y,m;return"function"==typeof r?e(t,null,r):(i=n||g,o=!1,n=function(){if(!o){o=!0;for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];i.apply(this,t)}},s=(r=r||{}).readable||!1!==r.readable&&t.readable,a=r.writable||!1!==r.writable&&t.writable,c=function(){t.writable||l()},u=t._writableState&&t._writableState.finished,l=function(){u=!(a=!1),s||n.call(t)},f=t._readableState&&t._readableState.endEmitted,p=function(){f=!(s=!1),a||n.call(t)},d=function(e){n.call(t,e)},h=function(){var e;return s&&!f?(t._readableState&&t._readableState.ended||(e=new b),n.call(t,e)):a&&!u?(t._writableState&&t._writableState.ended||(e=new b),n.call(t,e)):void 0},y=function(){t.req.on("finish",l)},(m=t).setHeader&&"function"==typeof m.abort?(t.on("complete",l),t.on("abort",h),t.req?y():t.on("request",y)):a&&!t._writableState&&(t.on("end",c),t.on("close",c)),t.on("end",p),t.on("finish",l),!1!==r.error&&t.on("error",d),t.on("close",h),function(){t.removeListener("complete",l),t.removeListener("abort",h),t.removeListener("request",y),t.req&&t.req.removeListener("finish",l),t.removeListener("end",c),t.removeListener("close",c),t.removeListener("finish",l),t.removeListener("end",p),t.removeListener("error",d),t.removeListener("close",h)})}},{"../../../errors":469}],479:[function(e,t,r){t.exports=function(){throw new Error("Readable.from is not available in the browser")}},{}],480:[function(c,e,t){"use strict";var u;var r=c("../../../errors").codes,a=r.ERR_MISSING_ARGS,l=r.ERR_STREAM_DESTROYED;function f(e){if(e)throw e}function p(r,e,t,n){i=n,o=!1;var i,o,s=!(n=function(){o||(o=!0,i.apply(void 0,arguments))}),a=(r.on("close",function(){s=!0}),(u=void 0===u?c("./end-of-stream"):u)(r,{readable:e,writable:t},function(e){if(e)return n(e);s=!0,n()}),!1);return function(e){var t;if(!s&&!a)return a=!0,(t=r).setHeader&&"function"==typeof t.abort?r.abort():"function"==typeof r.destroy?r.destroy():void n(e||new l("pipe"))}}function d(e){e()}function h(e,t){return e.pipe(t)}e.exports=function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];var r,i,o=!(r=n).length||"function"!=typeof r[r.length-1]?f:r.pop();if((n=Array.isArray(n[0])?n[0]:n).length<2)throw new a("streams");var s=n.map(function(e,t){var r=t<n.length-1;return p(e,r,0<t,function(e){i=i||e,e&&s.forEach(d),r||(s.forEach(d),o(i))})});return n.reduce(h)}},{"../../../errors":469,"./end-of-stream":478}],481:[function(e,t,r){"use strict";var s=e("../../../errors").codes.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(e,t,r,n){o=n,i=r;var i,o=null!=(t=t).highWaterMark?t.highWaterMark:o?t[i]:null;if(null==o)return e.objectMode?16:16384;if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new s(n?r:"highWaterMark",o);return Math.floor(o)}}},{"../../../errors":469}],482:[function(e,t,r){arguments[4][459][0].apply(r,arguments)},{dup:459,events:386}],483:[function(e,t,r){arguments[4][462][0].apply(r,arguments)},{dup:462,"safe-buffer":464}],484:[function(c,e,u){!function(r,a){!function(){var n=c("process/browser.js").nextTick,e=Function.prototype.apply,i=Array.prototype.slice,o={},s=0;function t(e,t){this._id=e,this._clearFn=t}u.setTimeout=function(){return new t(e.call(setTimeout,window,arguments),clearTimeout)},u.setInterval=function(){return new t(e.call(setInterval,window,arguments),clearInterval)},u.clearTimeout=u.clearInterval=function(e){e.close()},t.prototype.unref=t.prototype.ref=function(){},t.prototype.close=function(){this._clearFn.call(window,this._id)},u.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},u.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},u._unrefActive=u.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},u.setImmediate="function"==typeof r?r:function(e){var t=s++,r=!(arguments.length<2)&&i.call(arguments,1);return o[t]=!0,n(function(){o[t]&&(r?e.apply(null,r):e.call(null),u.clearImmediate(t))}),t},u.clearImmediate="function"==typeof a?a:function(e){delete o[e]}}.call(this)}.call(this,c("timers").setImmediate,c("timers").clearImmediate)},{"process/browser.js":442,timers:484}],485:[function(e,t,r){var i=e("buffer").Buffer;t.exports=function(e){if(e instanceof Uint8Array){if(0===e.byteOffset&&e.byteLength===e.buffer.byteLength)return e.buffer;if("function"==typeof e.buffer.slice)return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}if(i.isBuffer(e)){for(var t=new Uint8Array(e.length),r=e.length,n=0;n<r;n++)t[n]=e[n];return t.buffer}throw new Error("Argument must be a Buffer")}},{buffer:103}],486:[function(e,r,t){!function(t){!function(){function n(e){try{if(!t.localStorage)return}catch(e){return}e=t.localStorage[e];return null!=e&&"true"===String(e).toLowerCase()}r.exports=function(e,t){if(n("noDeprecation"))return e;var r=!1;return function(){if(!r){if(n("throwDeprecation"))throw new Error(t);n("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}}}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],487:[function(e,t,r){arguments[4][97][0].apply(r,arguments)},{dup:97}],488:[function(e,t,r){"use strict";var n=e("is-arguments"),i=e("is-generator-function"),o=e("which-typed-array"),s=e("is-typed-array");function a(e){return e.call.bind(e)}var c,u,l="undefined"!=typeof BigInt,f="undefined"!=typeof Symbol,p=a(Object.prototype.toString),d=a(Number.prototype.valueOf),h=a(String.prototype.valueOf),y=a(Boolean.prototype.valueOf);function m(e,t){if("object"!=typeof e)return!1;try{return t(e),!0}catch(e){return!1}}function b(e){return"[object Map]"===p(e)}function g(e){return"[object Set]"===p(e)}function v(e){return"[object WeakMap]"===p(e)}function j(e){return"[object WeakSet]"===p(e)}function w(e){return"[object ArrayBuffer]"===p(e)}function x(e){return"undefined"!=typeof ArrayBuffer&&(w.working?w(e):e instanceof ArrayBuffer)}function S(e){return"[object DataView]"===p(e)}function k(e){return"undefined"!=typeof DataView&&(S.working?S(e):e instanceof DataView)}l&&(c=a(BigInt.prototype.valueOf)),f&&(u=a(Symbol.prototype.valueOf)),r.isArgumentsObject=n,r.isGeneratorFunction=i,r.isTypedArray=s,r.isPromise=function(e){return"undefined"!=typeof Promise&&e instanceof Promise||null!==e&&"object"==typeof e&&"function"==typeof e.then&&"function"==typeof e.catch},r.isArrayBufferView=function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):s(e)||k(e)},r.isUint8Array=function(e){return"Uint8Array"===o(e)},r.isUint8ClampedArray=function(e){return"Uint8ClampedArray"===o(e)},r.isUint16Array=function(e){return"Uint16Array"===o(e)},r.isUint32Array=function(e){return"Uint32Array"===o(e)},r.isInt8Array=function(e){return"Int8Array"===o(e)},r.isInt16Array=function(e){return"Int16Array"===o(e)},r.isInt32Array=function(e){return"Int32Array"===o(e)},r.isFloat32Array=function(e){return"Float32Array"===o(e)},r.isFloat64Array=function(e){return"Float64Array"===o(e)},r.isBigInt64Array=function(e){return"BigInt64Array"===o(e)},r.isBigUint64Array=function(e){return"BigUint64Array"===o(e)},b.working="undefined"!=typeof Map&&b(new Map),r.isMap=function(e){return"undefined"!=typeof Map&&(b.working?b(e):e instanceof Map)},g.working="undefined"!=typeof Set&&g(new Set),r.isSet=function(e){return"undefined"!=typeof Set&&(g.working?g(e):e instanceof Set)},v.working="undefined"!=typeof WeakMap&&v(new WeakMap),r.isWeakMap=function(e){return"undefined"!=typeof WeakMap&&(v.working?v(e):e instanceof WeakMap)},j.working="undefined"!=typeof WeakSet&&j(new WeakSet),r.isWeakSet=j,w.working="undefined"!=typeof ArrayBuffer&&w(new ArrayBuffer),r.isArrayBuffer=x,S.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&S(new DataView(new ArrayBuffer(1),0,1)),r.isDataView=k;var _="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function T(e){return"[object SharedArrayBuffer]"===p(e)}function E(e){return void 0!==_&&((T.working=void 0===T.working?T(new _):T.working)?T(e):e instanceof _)}function O(e){return m(e,d)}function A(e){return m(e,h)}function I(e){return m(e,y)}function D(e){return l&&m(e,c)}function R(e){return f&&m(e,u)}r.isSharedArrayBuffer=E,r.isAsyncFunction=function(e){return"[object AsyncFunction]"===p(e)},r.isMapIterator=function(e){return"[object Map Iterator]"===p(e)},r.isSetIterator=function(e){return"[object Set Iterator]"===p(e)},r.isGeneratorObject=function(e){return"[object Generator]"===p(e)},r.isWebAssemblyCompiledModule=function(e){return"[object WebAssembly.Module]"===p(e)},r.isNumberObject=O,r.isStringObject=A,r.isBooleanObject=I,r.isBigIntObject=D,r.isSymbolObject=R,r.isBoxedPrimitive=function(e){return O(e)||A(e)||I(e)||D(e)||R(e)},r.isAnyArrayBuffer=function(e){return"undefined"!=typeof Uint8Array&&(x(e)||E(e))},["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(e){Object.defineProperty(r,e,{enumerable:!1,value:function(){throw new Error(e+" is not supported in userland")}})})},{"is-arguments":408,"is-generator-function":411,"is-typed-array":412,"which-typed-array":490}],489:[function(O,e,A){!function(E){!function(){var e,t=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),r={},n=0;n<t.length;n++)r[t[n]]=Object.getOwnPropertyDescriptor(e,t[n]);return r},a=/%[sdj%]/g,n=(A.format=function(e){if(!b(e)){for(var t=[],r=0;r<arguments.length;r++)t.push(c(arguments[r]));return t.join(" ")}for(var r=1,n=arguments,i=n.length,o=String(e).replace(a,function(e){if("%%"===e)return"%";if(i<=r)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}}),s=n[r];r<i;s=n[++r])y(s)||!u(s)?o+=" "+s:o+=" "+c(s);return o},A.deprecate=function(e,t){var r;return void 0!==E&&!0===E.noDeprecation?e:void 0===E?function(){return A.deprecate(e,t).apply(this,arguments)}:(r=!1,function(){if(!r){if(E.throwDeprecation)throw new Error(t);E.traceDeprecation?console.trace(t):console.error(t),r=!0}return e.apply(this,arguments)})},{}),i=/^$/;function c(e,t){var r={seen:[],stylize:s};return 3<=arguments.length&&(r.depth=arguments[2]),4<=arguments.length&&(r.colors=arguments[3]),h(t)?r.showHidden=t:t&&A._extend(r,t),g(r.showHidden)&&(r.showHidden=!1),g(r.depth)&&(r.depth=2),g(r.colors)&&(r.colors=!1),g(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=o),l(r,e,r.depth)}function o(e,t){t=c.styles[t];return t?"\x1b["+c.colors[t][0]+"m"+e+"\x1b["+c.colors[t][1]+"m":e}function s(e,t){return e}function l(t,r,n){if(t.customInspect&&r&&x(r.inspect)&&r.inspect!==A.inspect&&(!r.constructor||r.constructor.prototype!==r))return b(e=r.inspect(n,t))?e:l(t,e,n);var e=function(e,t){if(g(t))return e.stylize("undefined","undefined");{var r;if(b(t))return r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'",e.stylize(r,"string")}return m(t)?e.stylize(""+t,"number"):h(t)?e.stylize(""+t,"boolean"):y(t)?e.stylize("null","null"):void 0}(t,r);if(e)return e;var i,e=Object.keys(r),o=(i={},e.forEach(function(e,t){i[e]=!0}),i);if(t.showHidden&&(e=Object.getOwnPropertyNames(r)),w(r)&&(0<=e.indexOf("message")||0<=e.indexOf("description")))return f(r);if(0===e.length){if(x(r))return s=r.name?": "+r.name:"",t.stylize("[Function"+s+"]","special");if(v(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(j(r))return t.stylize(Date.prototype.toString.call(r),"date");if(w(r))return f(r)}var s="",a=!1,c=["{","}"];if(d(r)&&(a=!0,c=["[","]"]),x(r)&&(s=" [Function"+(r.name?": "+r.name:"")+"]"),v(r)&&(s=" "+RegExp.prototype.toString.call(r)),j(r)&&(s=" "+Date.prototype.toUTCString.call(r)),w(r)&&(s=" "+f(r)),0===e.length&&(!a||0==r.length))return c[0]+s+c[1];if(n<0)return v(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special");t.seen.push(r),u=a?function(t,r,n,i,e){for(var o=[],s=0,a=r.length;s<a;++s)_(r,String(s))?o.push(p(t,r,n,i,String(s),!0)):o.push("");return e.forEach(function(e){e.match(/^\d+$/)||o.push(p(t,r,n,i,e,!0))}),o}(t,r,n,o,e):e.map(function(e){return p(t,r,n,o,e,a)}),t.seen.pop();var u;return 60<u.reduce(function(e,t){return 0<=t.indexOf("\n")&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)?c[0]+(""===s?"":s+"\n ")+" "+u.join(",\n ")+" "+c[1]:c[0]+s+" "+u.join(", ")+" "+c[1]}function f(e){return"["+Error.prototype.toString.call(e)+"]"}function p(e,t,r,n,i,o){var s,a,t=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]};if(t.get?a=t.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):t.set&&(a=e.stylize("[Setter]","special")),_(n,i)||(s="["+i+"]"),a||(e.seen.indexOf(t.value)<0?-1<(a=y(r)?l(e,t.value,null):l(e,t.value,r-1)).indexOf("\n")&&(a=o?a.split("\n").map(function(e){return" "+e}).join("\n").slice(2):"\n"+a.split("\n").map(function(e){return" "+e}).join("\n")):a=e.stylize("[Circular]","special")),g(s)){if(o&&i.match(/^\d+$/))return a;s=(s=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.slice(1,-1),e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),e.stylize(s,"string"))}return s+": "+a}function d(e){return Array.isArray(e)}function h(e){return"boolean"==typeof e}function y(e){return null===e}function m(e){return"number"==typeof e}function b(e){return"string"==typeof e}function g(e){return void 0===e}function v(e){return u(e)&&"[object RegExp]"===r(e)}function u(e){return"object"==typeof e&&null!==e}function j(e){return u(e)&&"[object Date]"===r(e)}function w(e){return u(e)&&("[object Error]"===r(e)||e instanceof Error)}function x(e){return"function"==typeof e}function r(e){return Object.prototype.toString.call(e)}function S(e){return e<10?"0"+e.toString(10):e.toString(10)}E.env.NODE_DEBUG&&(e=(e=E.env.NODE_DEBUG).replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase(),i=new RegExp("^"+e+"$","i")),A.debuglog=function(t){var r;return t=t.toUpperCase(),n[t]||(i.test(t)?(r=E.pid,n[t]=function(){var e=A.format.apply(A,arguments);console.error("%s %d: %s",t,r,e)}):n[t]=function(){}),n[t]},(A.inspect=c).colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},c.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},A.types=O("./support/types"),A.isArray=d,A.isBoolean=h,A.isNull=y,A.isNullOrUndefined=function(e){return null==e},A.isNumber=m,A.isString=b,A.isSymbol=function(e){return"symbol"==typeof e},A.isUndefined=g,A.isRegExp=v,A.types.isRegExp=v,A.isObject=u,A.isDate=j,A.types.isDate=j,A.isError=w,A.types.isNativeError=w,A.isFunction=x,A.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},A.isBuffer=O("./support/isBuffer");var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function _(e,t){return Object.prototype.hasOwnProperty.call(e,t)}A.log=function(){var e,t;console.log("%s - %s",(e=new Date,t=[S(e.getHours()),S(e.getMinutes()),S(e.getSeconds())].join(":"),[e.getDate(),k[e.getMonth()],t].join(" ")),A.format.apply(A,arguments))},A.inherits=O("inherits"),A._extend=function(e,t){if(t&&u(t))for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};var T="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;A.promisify=function(o){if("function"!=typeof o)throw new TypeError('The "original" argument must be of type Function');if(T&&o[T]){var e;if("function"!=typeof(e=o[T]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,T,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var r,n,e=new Promise(function(e,t){r=e,n=t}),t=[],i=0;i<arguments.length;i++)t.push(arguments[i]);t.push(function(e,t){e?n(e):r(t)});try{o.apply(this,t)}catch(e){n(e)}return e}return Object.setPrototypeOf(e,Object.getPrototypeOf(o)),T&&Object.defineProperty(e,T,{value:e,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(e,t(o))},A.promisify.custom=T,A.callbackify=function(o){if("function"!=typeof o)throw new TypeError('The "original" argument must be of type Function');function e(){for(var e=[],t=0;t<arguments.length;t++)e.push(arguments[t]);var r=e.pop();if("function"!=typeof r)throw new TypeError("The last argument must be of type Function");function n(){return r.apply(i,arguments)}var i=this;o.apply(this,e).then(function(e){E.nextTick(n.bind(null,null,e))},function(e){E.nextTick(function(e,t){var r;return e||((r=new Error("Promise was rejected with a falsy value")).reason=e,e=r),t(e)}.bind(null,e,n))})}return Object.setPrototypeOf(e,Object.getPrototypeOf(o)),Object.defineProperties(e,t(o)),e}}.call(this)}.call(this,O("_process"))},{"./support/isBuffer":487,"./support/types":488,_process:538,inherits:407}],490:[function(h,y,e){!function(r){!function(){"use strict";var s=h("for-each"),e=h("available-typed-arrays"),n=h("call-bind"),t=h("call-bind/callBound"),a=h("gopd"),c=t("Object.prototype.toString"),u=h("has-tostringtag/shams")(),i="undefined"==typeof globalThis?r:globalThis,l=e(),f=t("String.prototype.slice"),o=Object.getPrototypeOf,p=t("Array.prototype.indexOf",!0)||function(e,t){for(var r=0;r<e.length;r+=1)if(e[r]===t)return r;return-1},d={__proto__:null};s(l,u&&a&&o?function(e){var t,r=new i[e];Symbol.toStringTag in r&&(r=o(r),(t=a(r,Symbol.toStringTag))||(r=o(r),t=a(r,Symbol.toStringTag)),d["$"+e]=n(t.get))}:function(e){var t=new i[e],t=t.slice||t.set;t&&(d["$"+e]=n(t))});y.exports=function(e){var t,r,n,i,o;return!(!e||"object"!=typeof e)&&(u?a?(i=e,o=!1,s(d,function(e,t){if(!o)try{"$"+e(i)===t&&(o=f(t,1))}catch(e){}}),o):null:(t=f(c(e),8,-1),-1<p(l,t)?t:"Object"===t&&(r=e,n=!1,s(d,function(e,t){if(!n)try{e(r),n=f(t,1)}catch(e){}}),n)))}}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"available-typed-arrays":99,"call-bind":106,"call-bind/callBound":105,"for-each":387,gopd:391,"has-tostringtag/shams":396}],491:[function(e,t,r){!function(){"use strict";r.stripBOM=function(e){return"\ufeff"===e[0]?e.substring(1):e}}.call(this)},{}],492:[function(n,e,o){!function(){"use strict";var r,i,t,p,d,h={}.hasOwnProperty;function e(e){var t,r,n;for(t in this.options={},r=i[.2])h.call(r,t)&&(n=r[t],this.options[t]=n);for(t in e)h.call(e,t)&&(n=e[t],this.options[t]=n)}r=n("xmlbuilder"),i=n("./defaults").defaults,p=function(e){return"string"==typeof e&&(0<=e.indexOf("&")||0<=e.indexOf(">")||0<=e.indexOf("<"))},d=function(e){return"<![CDATA["+t(e)+"]]>"},t=function(e){return e.replace("]]>","]]]]><![CDATA[>")},o.Builder=(e.prototype.buildObject=function(e){var c,t,u,l=this.options.attrkey,f=this.options.charkey;return 1===Object.keys(e).length&&this.options.rootName===i[.2].rootName?e=e[t=Object.keys(e)[0]]:t=this.options.rootName,u=this,c=function(e,t){var r,n,i,o,s,a;if("object"!=typeof t)u.options.cdata&&p(t)?e.raw(d(t)):e.txt(t);else if(Array.isArray(t)){for(o in t)if(h.call(t,o))for(s in n=t[o])i=n[s],e=c(e.ele(s),i).up()}else for(s in t)if(h.call(t,s))if(n=t[s],s===l){if("object"==typeof n)for(r in n)a=n[r],e=e.att(r,a)}else if(s===f)e=u.options.cdata&&p(n)?e.raw(d(n)):e.txt(n);else if(Array.isArray(n))for(o in n)h.call(n,o)&&(e=("string"==typeof(i=n[o])?u.options.cdata&&p(i)?e.ele(s).raw(d(i)):e.ele(s,i):c(e.ele(s),i)).up());else e=("object"==typeof n?c(e.ele(s),n):"string"==typeof n&&u.options.cdata&&p(n)?e.ele(s).raw(d(n)):(null==n&&(n=""),e.ele(s,n.toString()))).up();return e},t=r.create(t,this.options.xmldec,this.options.doctype,{headless:this.options.headless,allowSurrogateChars:this.options.allowSurrogateChars}),c(t,e).end(this.options.renderOpts)},e)}.call(this)},{"./defaults":493,xmlbuilder:529}],493:[function(e,t,r){!function(){r.defaults={.1:{explicitCharkey:!1,trim:!0,normalize:!0,normalizeTags:!1,attrkey:"@",charkey:"#",explicitArray:!1,ignoreAttrs:!1,mergeAttrs:!1,explicitRoot:!1,validator:null,xmlns:!1,explicitChildren:!1,childkey:"@@",charsAsChildren:!1,includeWhiteChars:!1,async:!1,strict:!0,attrNameProcessors:null,attrValueProcessors:null,tagNameProcessors:null,valueProcessors:null,emptyTag:""},.2:{explicitCharkey:!1,trim:!1,normalize:!1,normalizeTags:!1,attrkey:"$",charkey:"_",explicitArray:!0,ignoreAttrs:!1,mergeAttrs:!1,explicitRoot:!0,validator:null,xmlns:!1,explicitChildren:!1,preserveChildrenOrder:!1,childkey:"$$",charsAsChildren:!1,includeWhiteChars:!1,async:!1,strict:!0,attrNameProcessors:null,attrValueProcessors:null,tagNameProcessors:null,valueProcessors:null,rootName:"root",xmldec:{version:"1.0",encoding:"UTF-8",standalone:!0},doctype:null,renderOpts:{pretty:!0,indent:" ",newline:"\n"},headless:!1,chunkSize:1e4,emptyTag:"",cdata:!1}}}.call(this)},{}],494:[function(e,t,m){!function(){"use strict";function o(e,t){return function(){return e.apply(t,arguments)}}var p={}.hasOwnProperty,c=e("sax"),s=e("events"),a=e("./bom"),u=e("./processors"),l=e("timers").setImmediate,f=e("./defaults").defaults,d=function(e){return"object"==typeof e&&null!=e&&0===Object.keys(e).length},h=function(e,t,r){for(var n=0,i=e.length;n<i;n++)t=(0,e[n])(t,r);return t},y=function(e,t,r){var n=Object.create(null);return n.value=r,n.writable=!0,n.enumerable=!0,n.configurable=!0,Object.defineProperty(e,t,n)};m.Parser=function(){var e,t=i,r=s;for(e in r)p.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e){var t,r,n;if(this.parseStringPromise=o(this.parseStringPromise,this),this.parseString=o(this.parseString,this),this.reset=o(this.reset,this),this.assignOrPush=o(this.assignOrPush,this),this.processAsync=o(this.processAsync,this),!(this instanceof m.Parser))return new m.Parser(e);for(t in this.options={},r=f[.2])p.call(r,t)&&(n=r[t],this.options[t]=n);for(t in e)p.call(e,t)&&(n=e[t],this.options[t]=n);this.options.xmlns&&(this.options.xmlnskey=this.options.attrkey+"ns"),this.options.normalizeTags&&(this.options.tagNameProcessors||(this.options.tagNameProcessors=[]),this.options.tagNameProcessors.unshift(u.normalize)),this.reset()}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,i.prototype.processAsync=function(){var t;try{return this.remaining.length<=this.options.chunkSize?(t=this.remaining,this.remaining="",this.saxParser=this.saxParser.write(t),this.saxParser.close()):(t=this.remaining.substr(0,this.options.chunkSize),this.remaining=this.remaining.substr(this.options.chunkSize,this.remaining.length),this.saxParser=this.saxParser.write(t),l(this.processAsync))}catch(e){if(t=e,!this.saxParser.errThrown)return this.saxParser.errThrown=!0,this.emit(t)}},i.prototype.assignOrPush=function(e,t,r){return t in e?(e[t]instanceof Array||y(e,t,[e[t]]),e[t].push(r)):this.options.explicitArray?y(e,t,[r]):y(e,t,r)},i.prototype.reset=function(){var s,u,t,l,r,e,a,f,n;return this.removeAllListeners(),this.saxParser=c.parser(this.options.strict,{trim:!1,normalize:!1,xmlns:this.options.xmlns}),this.saxParser.errThrown=!1,this.saxParser.onerror=(r=this,function(e){if(r.saxParser.resume(),!r.saxParser.errThrown)return r.saxParser.errThrown=!0,r.emit("error",e)}),this.saxParser.onend=(e=this,function(){if(!e.saxParser.ended)return e.saxParser.ended=!0,e.emit("end",e.resultObject)}),this.saxParser.ended=!1,this.EXPLICIT_CHARKEY=this.options.explicitCharkey,this.resultObject=null,l=[],s=this.options.attrkey,u=this.options.charkey,this.saxParser.onopentag=(a=this,function(e){var t,r,n,i,o={};if(o[u]="",!a.options.ignoreAttrs)for(t in i=e.attributes)p.call(i,t)&&(s in o||a.options.mergeAttrs||(o[s]={}),r=a.options.attrValueProcessors?h(a.options.attrValueProcessors,e.attributes[t],t):e.attributes[t],n=a.options.attrNameProcessors?h(a.options.attrNameProcessors,t):t,a.options.mergeAttrs?a.assignOrPush(o,n,r):y(o[s],n,r));return o["#name"]=a.options.tagNameProcessors?h(a.options.tagNameProcessors,e.name):e.name,a.options.xmlns&&(o[a.options.xmlnskey]={uri:e.uri,local:e.local}),l.push(o)}),this.saxParser.onclosetag=(f=this,function(){var e,t,n,r,i,o,s,a=l.pop(),c=a["#name"];if(f.options.explicitChildren&&f.options.preserveChildrenOrder||delete a["#name"],!0===a.cdata&&(i=a.cdata,delete a.cdata),o=l[l.length-1],a[u].match(/^\s*$/)&&!i?(e=a[u],delete a[u]):(f.options.trim&&(a[u]=a[u].trim()),f.options.normalize&&(a[u]=a[u].replace(/\s{2,}/g," ").trim()),a[u]=f.options.valueProcessors?h(f.options.valueProcessors,a[u],c):a[u],1===Object.keys(a).length&&u in a&&!f.EXPLICIT_CHARKEY&&(a=a[u])),d(a)&&(a="function"==typeof f.options.emptyTag?f.options.emptyTag():""!==f.options.emptyTag?f.options.emptyTag:e),null!=f.options.validator&&(s="/"+function(){for(var e=[],t=0,r=l.length;t<r;t++)n=l[t],e.push(n["#name"]);return e}().concat(c).join("/"),function(){try{a=f.options.validator(s,o&&o[c],a)}catch(e){return f.emit("error",e)}}()),f.options.explicitChildren&&!f.options.mergeAttrs&&"object"==typeof a)if(f.options.preserveChildrenOrder){if(o){for(t in o[f.options.childkey]=o[f.options.childkey]||[],r={},a)p.call(a,t)&&y(r,t,a[t]);o[f.options.childkey].push(r),delete a["#name"],1===Object.keys(a).length&&u in a&&!f.EXPLICIT_CHARKEY&&(a=a[u])}}else n={},f.options.attrkey in a&&(n[f.options.attrkey]=a[f.options.attrkey],delete a[f.options.attrkey]),!f.options.charsAsChildren&&f.options.charkey in a&&(n[f.options.charkey]=a[f.options.charkey],delete a[f.options.charkey]),0<Object.getOwnPropertyNames(a).length&&(n[f.options.childkey]=a),a=n;return 0<l.length?f.assignOrPush(o,c,a):(f.options.explicitRoot&&(i=a,y(a={},c,i)),f.resultObject=a,f.saxParser.ended=!0,f.emit("end",f.resultObject))}),t=function(e){var t,r=l[l.length-1];if(r)return r[u]+=e,n.options.explicitChildren&&n.options.preserveChildrenOrder&&n.options.charsAsChildren&&(n.options.includeWhiteChars||""!==e.replace(/\\n/g,"").trim())&&(r[n.options.childkey]=r[n.options.childkey]||[],(t={"#name":"__text__"})[u]=e,n.options.normalize&&(t[u]=t[u].replace(/\s{2,}/g," ").trim()),r[n.options.childkey].push(t)),r},(n=this).saxParser.ontext=t,this.saxParser.oncdata=function(e){e=t(e);if(e)return e.cdata=!0}},i.prototype.parseString=function(t,r){null!=r&&"function"==typeof r&&(this.on("end",function(e){return this.reset(),r(null,e)}),this.on("error",function(e){return this.reset(),r(e)}));try{return""===(t=t.toString()).trim()?(this.emit("end",null),!0):(t=a.stripBOM(t),this.options.async?(this.remaining=t,l(this.processAsync),this.saxParser):this.saxParser.write(t).close())}catch(e){if(t=e,!this.saxParser.errThrown&&!this.saxParser.ended)return this.emit("error",t),this.saxParser.errThrown=!0;if(this.saxParser.ended)throw t}},i.prototype.parseStringPromise=function(e){return new Promise((t=this,function(r,n){return t.parseString(e,function(e,t){return e?n(e):r(t)})}));var t},i}(),m.parseString=function(e,t,r){var n,i;return null!=r?("function"==typeof r&&(n=r),"object"==typeof t&&(i=t)):("function"==typeof t&&(n=t),i={}),new m.Parser(i).parseString(e,n)},m.parseStringPromise=function(e,t){var r;return new m.Parser(r="object"==typeof t?t:r).parseStringPromise(e)}}.call(this)},{"./bom":491,"./defaults":493,"./processors":495,events:386,sax:465,timers:484}],495:[function(e,t,r){!function(){"use strict";var t=new RegExp(/(?!xmlns)^.*:/);r.normalize=function(e){return e.toLowerCase()},r.firstCharLowerCase=function(e){return e.charAt(0).toLowerCase()+e.slice(1)},r.stripPrefix=function(e){return e.replace(t,"")},r.parseNumbers=function(e){return e=isNaN(e)?e:e%1==0?parseInt(e,10):parseFloat(e)},r.parseBooleans=function(e){return e=/^(?:true|false)$/i.test(e)?"true"===e.toLowerCase():e}}.call(this)},{}],496:[function(i,e,o){!function(){"use strict";var s={}.hasOwnProperty,e=i("./defaults"),t=i("./builder"),r=i("./parser"),n=i("./processors");o.defaults=e.defaults,o.processors=n,o.ValidationError=function(e){var t,r=o,n=e;for(t in n)s.call(n,t)&&(r[t]=n[t]);function i(){this.constructor=r}function o(e){this.message=e}return i.prototype=n.prototype,r.prototype=new i,r.__super__=n.prototype,o}(Error),o.Builder=t.Builder,o.Parser=r.Parser,o.parseString=r.parseString,o.parseStringPromise=r.parseStringPromise}.call(this)},{"./builder":492,"./defaults":493,"./parser":494,"./processors":495}],497:[function(e,t,r){!function(){t.exports={Disconnected:1,Preceding:2,Following:4,Contains:8,ContainedBy:16,ImplementationSpecific:32}}.call(this)},{}],498:[function(e,t,r){!function(){t.exports={Element:1,Attribute:2,Text:3,CData:4,EntityReference:5,EntityDeclaration:6,ProcessingInstruction:7,Comment:8,Document:9,DocType:10,DocumentFragment:11,NotationDeclaration:12,Declaration:201,Raw:202,AttributeDeclaration:203,ElementDeclaration:204,Dummy:205}}.call(this)},{}],499:[function(e,o,t){!function(){var s=[].slice,a={}.hasOwnProperty,c=function(e){return!!e&&"[object Function]"===Object.prototype.toString.call(e)},t=function(e){return!!e&&("function"==(e=typeof e)||"object"==e)},r=function(e){return c(Array.isArray)?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)},e=function(e){if(r(e))return!e.length;for(var t in e)if(a.call(e,t))return!1;return!0},n=function(e){return t(e)&&(e=Object.getPrototypeOf(e))&&(e=e.constructor)&&"function"==typeof e&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)},i=function(e){return c(e.valueOf)?e.valueOf():e};o.exports.assign=function(){var e,t,r,n,i=arguments[0],o=2<=arguments.length?s.call(arguments,1):[];if(c(Object.assign))Object.assign.apply(null,arguments);else for(e=0,r=o.length;e<r;e++)if(null!=(n=o[e]))for(t in n)a.call(n,t)&&(i[t]=n[t]);return i},o.exports.isFunction=c,o.exports.isObject=t,o.exports.isArray=r,o.exports.isEmpty=e,o.exports.isPlainObject=n,o.exports.getValue=i}.call(this)},{}],500:[function(e,t,r){!function(){t.exports={None:0,OpenTag:1,InsideTag:2,CloseTag:3}}.call(this)},{}],501:[function(t,r,e){!function(){var n;function e(e,t,r){if(this.parent=e,this.parent&&(this.options=this.parent.options,this.stringify=this.parent.stringify),null==t)throw new Error("Missing attribute name. "+this.debugInfo(t));this.name=this.stringify.name(t),this.value=this.stringify.attValue(r),this.type=n.Attribute,this.isId=!1,this.schemaTypeInfo=null}n=t("./NodeType"),t("./XMLNode"),r.exports=(Object.defineProperty(e.prototype,"nodeType",{get:function(){return this.type}}),Object.defineProperty(e.prototype,"ownerElement",{get:function(){return this.parent}}),Object.defineProperty(e.prototype,"textContent",{get:function(){return this.value},set:function(e){return this.value=e||""}}),Object.defineProperty(e.prototype,"namespaceURI",{get:function(){return""}}),Object.defineProperty(e.prototype,"prefix",{get:function(){return""}}),Object.defineProperty(e.prototype,"localName",{get:function(){return this.name}}),Object.defineProperty(e.prototype,"specified",{get:function(){return!0}}),e.prototype.clone=function(){return Object.create(this)},e.prototype.toString=function(e){return this.options.writer.attribute(this,this.options.writer.filterOptions(e))},e.prototype.debugInfo=function(e){return null==(e=e||this.name)?"parent: <"+this.parent.name+">":"attribute: {"+e+"}, parent: <"+this.parent.name+">"},e.prototype.isEqualNode=function(e){return e.namespaceURI===this.namespaceURI&&e.prefix===this.prefix&&e.localName===this.localName&&e.value===this.value},e)}.call(this)},{"./NodeType":498,"./XMLNode":520}],502:[function(e,t,r){!function(){var o={}.hasOwnProperty,s=e("./NodeType"),a=e("./XMLCharacterData");t.exports=function(){var e,t=i,r=a;for(e in r)o.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e,t){if(i.__super__.constructor.call(this,e),null==t)throw new Error("Missing CDATA text. "+this.debugInfo());this.name="#cdata-section",this.type=s.CData,this.value=this.stringify.cdata(t)}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,i.prototype.clone=function(){return Object.create(this)},i.prototype.toString=function(e){return this.options.writer.cdata(this,this.options.writer.filterOptions(e))},i}()}.call(this)},{"./NodeType":498,"./XMLCharacterData":503}],503:[function(e,t,r){!function(){var o={}.hasOwnProperty,s=e("./XMLNode");t.exports=function(){var e,t=i,r=s;for(e in r)o.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e){i.__super__.constructor.call(this,e),this.value=""}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,Object.defineProperty(i.prototype,"data",{get:function(){return this.value},set:function(e){return this.value=e||""}}),Object.defineProperty(i.prototype,"length",{get:function(){return this.value.length}}),Object.defineProperty(i.prototype,"textContent",{get:function(){return this.value},set:function(e){return this.value=e||""}}),i.prototype.clone=function(){return Object.create(this)},i.prototype.substringData=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.appendData=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.insertData=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.deleteData=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.replaceData=function(e,t,r){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.isEqualNode=function(e){return!!i.__super__.isEqualNode.apply(this,arguments).isEqualNode(e)&&e.data===this.data},i}()}.call(this)},{"./XMLNode":520}],504:[function(e,t,r){!function(){var o={}.hasOwnProperty,s=e("./NodeType"),a=e("./XMLCharacterData");t.exports=function(){var e,t=i,r=a;for(e in r)o.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e,t){if(i.__super__.constructor.call(this,e),null==t)throw new Error("Missing comment text. "+this.debugInfo());this.name="#comment",this.type=s.Comment,this.value=this.stringify.comment(t)}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,i.prototype.clone=function(){return Object.create(this)},i.prototype.toString=function(e){return this.options.writer.comment(this,this.options.writer.filterOptions(e))},i}()}.call(this)},{"./NodeType":498,"./XMLCharacterData":503}],505:[function(n,i,e){!function(){var e,t;function r(){this.defaultParams={"canonical-form":!1,"cdata-sections":!1,comments:!1,"datatype-normalization":!1,"element-content-whitespace":!0,entities:!0,"error-handler":new e,infoset:!0,"validate-if-schema":!1,namespaces:!0,"namespace-declarations":!0,"normalize-characters":!1,"schema-location":"","schema-type":"","split-cdata-sections":!0,validate:!1,"well-formed":!0},this.params=Object.create(this.defaultParams)}e=n("./XMLDOMErrorHandler"),t=n("./XMLDOMStringList"),i.exports=(Object.defineProperty(r.prototype,"parameterNames",{get:function(){return new t(Object.keys(this.defaultParams))}}),r.prototype.getParameter=function(e){return this.params.hasOwnProperty(e)?this.params[e]:null},r.prototype.canSetParameter=function(e,t){return!0},r.prototype.setParameter=function(e,t){return null!=t?this.params[e]=t:delete this.params[e]},r)}.call(this)},{"./XMLDOMErrorHandler":506,"./XMLDOMStringList":508}],506:[function(e,t,r){!function(){function e(){}t.exports=(e.prototype.handleError=function(e){throw new Error(e)},e)}.call(this)},{}],507:[function(e,t,r){!function(){function e(){}t.exports=(e.prototype.hasFeature=function(e,t){return!0},e.prototype.createDocumentType=function(e,t,r){throw new Error("This DOM method is not implemented.")},e.prototype.createDocument=function(e,t,r){throw new Error("This DOM method is not implemented.")},e.prototype.createHTMLDocument=function(e){throw new Error("This DOM method is not implemented.")},e.prototype.getFeature=function(e,t){throw new Error("This DOM method is not implemented.")},e)}.call(this)},{}],508:[function(e,t,r){!function(){function e(e){this.arr=e||[]}t.exports=(Object.defineProperty(e.prototype,"length",{get:function(){return this.arr.length}}),e.prototype.item=function(e){return this.arr[e]||null},e.prototype.contains=function(e){return-1!==this.arr.indexOf(e)},e)}.call(this)},{}],509:[function(e,t,r){!function(){var i={}.hasOwnProperty,o=e("./XMLNode"),a=e("./NodeType");t.exports=function(){var e,t=s,r=o;for(e in r)i.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function s(e,t,r,n,i,o){if(s.__super__.constructor.call(this,e),null==t)throw new Error("Missing DTD element name. "+this.debugInfo());if(null==r)throw new Error("Missing DTD attribute name. "+this.debugInfo(t));if(!n)throw new Error("Missing DTD attribute type. "+this.debugInfo(t));if(!i)throw new Error("Missing DTD attribute default. "+this.debugInfo(t));if(!(i=0!==i.indexOf("#")?"#"+i:i).match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/))throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT. "+this.debugInfo(t));if(o&&!i.match(/^(#FIXED|#DEFAULT)$/))throw new Error("Default value only applies to #FIXED or #DEFAULT. "+this.debugInfo(t));this.elementName=this.stringify.name(t),this.type=a.AttributeDeclaration,this.attributeName=this.stringify.name(r),this.attributeType=this.stringify.dtdAttType(n),o&&(this.defaultValue=this.stringify.dtdAttDefault(o)),this.defaultValueType=i}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,s.prototype.toString=function(e){return this.options.writer.dtdAttList(this,this.options.writer.filterOptions(e))},s}()}.call(this)},{"./NodeType":498,"./XMLNode":520}],510:[function(e,t,r){!function(){var o={}.hasOwnProperty,s=e("./XMLNode"),a=e("./NodeType");t.exports=function(){var e,t=i,r=s;for(e in r)o.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e,t,r){if(i.__super__.constructor.call(this,e),null==t)throw new Error("Missing DTD element name. "+this.debugInfo());r=r||"(#PCDATA)",Array.isArray(r)&&(r="("+r.join(",")+")"),this.name=this.stringify.name(t),this.type=a.ElementDeclaration,this.value=this.stringify.dtdElementValue(r)}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,i.prototype.toString=function(e){return this.options.writer.dtdElement(this,this.options.writer.filterOptions(e))},i}()}.call(this)},{"./NodeType":498,"./XMLNode":520}],511:[function(e,t,r){!function(){var o={}.hasOwnProperty,s=e("./Utility").isObject,a=e("./XMLNode"),c=e("./NodeType");t.exports=function(){var e,t=i,r=a;for(e in r)o.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e,t,r,n){if(i.__super__.constructor.call(this,e),null==r)throw new Error("Missing DTD entity name. "+this.debugInfo(r));if(null==n)throw new Error("Missing DTD entity value. "+this.debugInfo(r));if(this.pe=!!t,this.name=this.stringify.name(r),this.type=c.EntityDeclaration,s(n)){if(!n.pubID&&!n.sysID)throw new Error("Public and/or system identifiers are required for an external entity. "+this.debugInfo(r));if(n.pubID&&!n.sysID)throw new Error("System identifier is required for a public external entity. "+this.debugInfo(r));if(this.internal=!1,null!=n.pubID&&(this.pubID=this.stringify.dtdPubID(n.pubID)),null!=n.sysID&&(this.sysID=this.stringify.dtdSysID(n.sysID)),null!=n.nData&&(this.nData=this.stringify.dtdNData(n.nData)),this.pe&&this.nData)throw new Error("Notation declaration is not allowed in a parameter entity. "+this.debugInfo(r))}else this.value=this.stringify.dtdEntityValue(n),this.internal=!0}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,Object.defineProperty(i.prototype,"publicId",{get:function(){return this.pubID}}),Object.defineProperty(i.prototype,"systemId",{get:function(){return this.sysID}}),Object.defineProperty(i.prototype,"notationName",{get:function(){return this.nData||null}}),Object.defineProperty(i.prototype,"inputEncoding",{get:function(){return null}}),Object.defineProperty(i.prototype,"xmlEncoding",{get:function(){return null}}),Object.defineProperty(i.prototype,"xmlVersion",{get:function(){return null}}),i.prototype.toString=function(e){return this.options.writer.dtdEntity(this,this.options.writer.filterOptions(e))},i}()}.call(this)},{"./NodeType":498,"./Utility":499,"./XMLNode":520}],512:[function(e,t,r){!function(){var o={}.hasOwnProperty,s=e("./XMLNode"),a=e("./NodeType");t.exports=function(){var e,t=i,r=s;for(e in r)o.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e,t,r){if(i.__super__.constructor.call(this,e),null==t)throw new Error("Missing DTD notation name. "+this.debugInfo(t));if(!r.pubID&&!r.sysID)throw new Error("Public or system identifiers are required for an external entity. "+this.debugInfo(t));this.name=this.stringify.name(t),this.type=a.NotationDeclaration,null!=r.pubID&&(this.pubID=this.stringify.dtdPubID(r.pubID)),null!=r.sysID&&(this.sysID=this.stringify.dtdSysID(r.sysID))}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,Object.defineProperty(i.prototype,"publicId",{get:function(){return this.pubID}}),Object.defineProperty(i.prototype,"systemId",{get:function(){return this.sysID}}),i.prototype.toString=function(e){return this.options.writer.dtdNotation(this,this.options.writer.filterOptions(e))},i}()}.call(this)},{"./NodeType":498,"./XMLNode":520}],513:[function(e,t,r){!function(){var o={}.hasOwnProperty,s=e("./Utility").isObject,a=e("./XMLNode"),c=e("./NodeType");t.exports=function(){var e,t=i,r=a;for(e in r)o.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e,t,r,n){i.__super__.constructor.call(this,e),s(t)&&(t=(e=t).version,r=e.encoding,n=e.standalone),t=t||"1.0",this.type=c.Declaration,this.version=this.stringify.xmlVersion(t),null!=r&&(this.encoding=this.stringify.xmlEncoding(r)),null!=n&&(this.standalone=this.stringify.xmlStandalone(n))}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,i.prototype.toString=function(e){return this.options.writer.declaration(this,this.options.writer.filterOptions(e))},i}()}.call(this)},{"./NodeType":498,"./Utility":499,"./XMLNode":520}],514:[function(e,t,r){!function(){var i={}.hasOwnProperty,c=e("./Utility").isObject,o=e("./XMLNode"),u=e("./NodeType"),s=e("./XMLDTDAttList"),l=e("./XMLDTDEntity"),f=e("./XMLDTDElement"),p=e("./XMLDTDNotation"),d=e("./XMLNamedNodeMap");t.exports=function(){var e,t=a,r=o;for(e in r)i.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function a(e,t,r){var n,i,o,s;if(a.__super__.constructor.call(this,e),this.type=u.DocType,e.children)for(i=0,o=(s=e.children).length;i<o;i++)if((n=s[i]).type===u.Element){this.name=n.name;break}this.documentObject=e,c(t)&&(t=(e=t).pubID,r=e.sysID),null==r&&(r=(e=[t,r])[0],t=e[1]),null!=t&&(this.pubID=this.stringify.dtdPubID(t)),null!=r&&(this.sysID=this.stringify.dtdSysID(r))}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,Object.defineProperty(a.prototype,"entities",{get:function(){for(var e,t={},r=this.children,n=0,i=r.length;n<i;n++)(e=r[n]).type!==u.EntityDeclaration||e.pe||(t[e.name]=e);return new d(t)}}),Object.defineProperty(a.prototype,"notations",{get:function(){for(var e,t={},r=this.children,n=0,i=r.length;n<i;n++)(e=r[n]).type===u.NotationDeclaration&&(t[e.name]=e);return new d(t)}}),Object.defineProperty(a.prototype,"publicId",{get:function(){return this.pubID}}),Object.defineProperty(a.prototype,"systemId",{get:function(){return this.sysID}}),Object.defineProperty(a.prototype,"internalSubset",{get:function(){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),a.prototype.element=function(e,t){e=new f(this,e,t);return this.children.push(e),this},a.prototype.attList=function(e,t,r,n,i){e=new s(this,e,t,r,n,i);return this.children.push(e),this},a.prototype.entity=function(e,t){e=new l(this,!1,e,t);return this.children.push(e),this},a.prototype.pEntity=function(e,t){e=new l(this,!0,e,t);return this.children.push(e),this},a.prototype.notation=function(e,t){e=new p(this,e,t);return this.children.push(e),this},a.prototype.toString=function(e){return this.options.writer.docType(this,this.options.writer.filterOptions(e))},a.prototype.ele=function(e,t){return this.element(e,t)},a.prototype.att=function(e,t,r,n,i){return this.attList(e,t,r,n,i)},a.prototype.ent=function(e,t){return this.entity(e,t)},a.prototype.pent=function(e,t){return this.pEntity(e,t)},a.prototype.not=function(e,t){return this.notation(e,t)},a.prototype.up=function(){return this.root()||this.documentObject},a.prototype.isEqualNode=function(e){return!!a.__super__.isEqualNode.apply(this,arguments).isEqualNode(e)&&e.name===this.name&&e.publicId===this.publicId&&e.systemId===this.systemId},a}()}.call(this)},{"./NodeType":498,"./Utility":499,"./XMLDTDAttList":509,"./XMLDTDElement":510,"./XMLDTDEntity":511,"./XMLDTDNotation":512,"./XMLNamedNodeMap":519,"./XMLNode":520}],515:[function(e,t,r){!function(){var o={}.hasOwnProperty,s=e("./Utility").isPlainObject,a=e("./XMLDOMImplementation"),c=e("./XMLDOMConfiguration"),u=e("./XMLNode"),l=e("./NodeType"),f=e("./XMLStringifier"),p=e("./XMLStringWriter");t.exports=function(){var e,t=i,r=u;for(e in r)o.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e){i.__super__.constructor.call(this,null),this.name="#document",this.type=l.Document,this.documentURI=null,this.domConfig=new c,(e=e||{}).writer||(e.writer=new p),this.options=e,this.stringify=new f(e)}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,Object.defineProperty(i.prototype,"implementation",{value:new a}),Object.defineProperty(i.prototype,"doctype",{get:function(){for(var e,t=this.children,r=0,n=t.length;r<n;r++)if((e=t[r]).type===l.DocType)return e;return null}}),Object.defineProperty(i.prototype,"documentElement",{get:function(){return this.rootObject||null}}),Object.defineProperty(i.prototype,"inputEncoding",{get:function(){return null}}),Object.defineProperty(i.prototype,"strictErrorChecking",{get:function(){return!1}}),Object.defineProperty(i.prototype,"xmlEncoding",{get:function(){return 0!==this.children.length&&this.children[0].type===l.Declaration?this.children[0].encoding:null}}),Object.defineProperty(i.prototype,"xmlStandalone",{get:function(){return 0!==this.children.length&&this.children[0].type===l.Declaration&&"yes"===this.children[0].standalone}}),Object.defineProperty(i.prototype,"xmlVersion",{get:function(){return 0!==this.children.length&&this.children[0].type===l.Declaration?this.children[0].version:"1.0"}}),Object.defineProperty(i.prototype,"URL",{get:function(){return this.documentURI}}),Object.defineProperty(i.prototype,"origin",{get:function(){return null}}),Object.defineProperty(i.prototype,"compatMode",{get:function(){return null}}),Object.defineProperty(i.prototype,"characterSet",{get:function(){return null}}),Object.defineProperty(i.prototype,"contentType",{get:function(){return null}}),i.prototype.end=function(e){var t={};return e?s(e)&&(t=e,e=this.options.writer):e=this.options.writer,e.document(this,e.filterOptions(t))},i.prototype.toString=function(e){return this.options.writer.document(this,this.options.writer.filterOptions(e))},i.prototype.createElement=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.createDocumentFragment=function(){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.createTextNode=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.createComment=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.createCDATASection=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.createProcessingInstruction=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.createAttribute=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.createEntityReference=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.getElementsByTagName=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.importNode=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.createElementNS=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.createAttributeNS=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.getElementsByTagNameNS=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.getElementById=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.adoptNode=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.normalizeDocument=function(){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.renameNode=function(e,t,r){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.getElementsByClassName=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.createEvent=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.createRange=function(){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.createNodeIterator=function(e,t,r){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.createTreeWalker=function(e,t,r){throw new Error("This DOM method is not implemented."+this.debugInfo())},i}()}.call(this)},{"./NodeType":498,"./Utility":499,"./XMLDOMConfiguration":505,"./XMLDOMImplementation":507,"./XMLNode":520,"./XMLStringWriter":525,"./XMLStringifier":526}],516:[function(_,T,e){!function(){var u,o,i,t,r,s,n,a,c,l,f,p,d,h,y,m,b,g,v,j,w,x,e,S={}.hasOwnProperty;function k(e,t,r){var n;this.name="?xml",this.type=u.Document,n={},(e=e||{}).writer?x(e.writer)&&(n=e.writer,e.writer=new m):e.writer=new m,this.options=e,this.writer=e.writer,this.writerOptions=this.writer.filterOptions(n),this.stringify=new b(e),this.onDataCallback=t||function(){},this.onEndCallback=r||function(){},this.currentNode=null,this.currentLevel=-1,this.openTags={},this.documentStarted=!1,this.documentCompleted=!1,this.root=null}e=_("./Utility"),w=e.isObject,j=e.isFunction,x=e.isPlainObject,v=e.getValue,u=_("./NodeType"),p=_("./XMLDocument"),d=_("./XMLElement"),t=_("./XMLCData"),r=_("./XMLComment"),y=_("./XMLRaw"),g=_("./XMLText"),h=_("./XMLProcessingInstruction"),l=_("./XMLDeclaration"),f=_("./XMLDocType"),s=_("./XMLDTDAttList"),a=_("./XMLDTDEntity"),n=_("./XMLDTDElement"),c=_("./XMLDTDNotation"),i=_("./XMLAttribute"),b=_("./XMLStringifier"),m=_("./XMLStringWriter"),o=_("./WriterState"),T.exports=(k.prototype.createChildNode=function(e){var t,r,n,i,o,s,a,c;switch(e.type){case u.CData:this.cdata(e.value);break;case u.Comment:this.comment(e.value);break;case u.Element:for(r in n={},a=e.attribs)S.call(a,r)&&(t=a[r],n[r]=t.value);this.node(e.name,n);break;case u.Dummy:this.dummy();break;case u.Raw:this.raw(e.value);break;case u.Text:this.text(e.value);break;case u.ProcessingInstruction:this.instruction(e.target,e.value);break;default:throw new Error("This XML node type is not supported in a JS object: "+e.constructor.name)}for(o=0,s=(c=e.children).length;o<s;o++)i=c[o],this.createChildNode(i),i.type===u.Element&&this.up();return this},k.prototype.dummy=function(){return this},k.prototype.node=function(e,t,r){var n;if(null==e)throw new Error("Missing node name.");if(this.root&&-1===this.currentLevel)throw new Error("Document can only have one root node. "+this.debugInfo(e));return this.openCurrent(),e=v(e),t=v(t=null==t?{}:t),w(t)||(r=(n=[t,r])[0],t=n[1]),this.currentNode=new d(this,e,t),this.currentNode.children=!1,this.currentLevel++,this.openTags[this.currentLevel]=this.currentNode,null!=r&&this.text(r),this},k.prototype.element=function(e,t,r){var n,i,o,s,a,c;if(this.currentNode&&this.currentNode.type===u.DocType)this.dtdElement.apply(this,arguments);else if(Array.isArray(e)||w(e)||j(e))for(s=this.options.noValidation,this.options.noValidation=!0,(c=new p(this.options).element("TEMP_ROOT")).element(e),this.options.noValidation=s,i=0,o=(a=c.children).length;i<o;i++)n=a[i],this.createChildNode(n),n.type===u.Element&&this.up();else this.node(e,t,r);return this},k.prototype.attribute=function(e,t){var r,n;if(!this.currentNode||this.currentNode.children)throw new Error("att() can only be used immediately after an ele() call in callback mode. "+this.debugInfo(e));if(null!=e&&(e=v(e)),w(e))for(r in e)S.call(e,r)&&(n=e[r],this.attribute(r,n));else j(t)&&(t=t.apply()),this.options.keepNullAttributes&&null==t?this.currentNode.attribs[e]=new i(this,e,""):null!=t&&(this.currentNode.attribs[e]=new i(this,e,t));return this},k.prototype.text=function(e){return this.openCurrent(),e=new g(this,e),this.onData(this.writer.text(e,this.writerOptions,this.currentLevel+1),this.currentLevel+1),this},k.prototype.cdata=function(e){return this.openCurrent(),e=new t(this,e),this.onData(this.writer.cdata(e,this.writerOptions,this.currentLevel+1),this.currentLevel+1),this},k.prototype.comment=function(e){return this.openCurrent(),e=new r(this,e),this.onData(this.writer.comment(e,this.writerOptions,this.currentLevel+1),this.currentLevel+1),this},k.prototype.raw=function(e){return this.openCurrent(),e=new y(this,e),this.onData(this.writer.raw(e,this.writerOptions,this.currentLevel+1),this.currentLevel+1),this},k.prototype.instruction=function(e,t){var r,n,i,o;if(this.openCurrent(),null!=e&&(e=v(e)),null!=t&&(t=v(t)),Array.isArray(e))for(r=0,o=e.length;r<o;r++)n=e[r],this.instruction(n);else if(w(e))for(n in e)S.call(e,n)&&(i=e[n],this.instruction(n,i));else j(t)&&(t=t.apply()),t=new h(this,e,t),this.onData(this.writer.processingInstruction(t,this.writerOptions,this.currentLevel+1),this.currentLevel+1);return this},k.prototype.declaration=function(e,t,r){if(this.openCurrent(),this.documentStarted)throw new Error("declaration() must be the first node.");return e=new l(this,e,t,r),this.onData(this.writer.declaration(e,this.writerOptions,this.currentLevel+1),this.currentLevel+1),this},k.prototype.doctype=function(e,t,r){if(this.openCurrent(),null==e)throw new Error("Missing root node name.");if(this.root)throw new Error("dtd() must come before the root node.");return this.currentNode=new f(this,t,r),this.currentNode.rootNodeName=e,this.currentNode.children=!1,this.currentLevel++,this.openTags[this.currentLevel]=this.currentNode,this},k.prototype.dtdElement=function(e,t){return this.openCurrent(),e=new n(this,e,t),this.onData(this.writer.dtdElement(e,this.writerOptions,this.currentLevel+1),this.currentLevel+1),this},k.prototype.attList=function(e,t,r,n,i){return this.openCurrent(),e=new s(this,e,t,r,n,i),this.onData(this.writer.dtdAttList(e,this.writerOptions,this.currentLevel+1),this.currentLevel+1),this},k.prototype.entity=function(e,t){return this.openCurrent(),e=new a(this,!1,e,t),this.onData(this.writer.dtdEntity(e,this.writerOptions,this.currentLevel+1),this.currentLevel+1),this},k.prototype.pEntity=function(e,t){return this.openCurrent(),e=new a(this,!0,e,t),this.onData(this.writer.dtdEntity(e,this.writerOptions,this.currentLevel+1),this.currentLevel+1),this},k.prototype.notation=function(e,t){return this.openCurrent(),e=new c(this,e,t),this.onData(this.writer.dtdNotation(e,this.writerOptions,this.currentLevel+1),this.currentLevel+1),this},k.prototype.up=function(){if(this.currentLevel<0)throw new Error("The document node has no parent.");return this.currentNode?(this.currentNode.children?this.closeNode(this.currentNode):this.openNode(this.currentNode),this.currentNode=null):this.closeNode(this.openTags[this.currentLevel]),delete this.openTags[this.currentLevel],this.currentLevel--,this},k.prototype.end=function(){for(;0<=this.currentLevel;)this.up();return this.onEnd()},k.prototype.openCurrent=function(){if(this.currentNode)return this.currentNode.children=!0,this.openNode(this.currentNode)},k.prototype.openNode=function(e){var t,r,n,i;if(!e.isOpen){if(this.root||0!==this.currentLevel||e.type!==u.Element||(this.root=e),r="",e.type===u.Element){for(n in this.writerOptions.state=o.OpenTag,r=this.writer.indent(e,this.writerOptions,this.currentLevel)+"<"+e.name,i=e.attribs)S.call(i,n)&&(t=i[n],r+=this.writer.attribute(t,this.writerOptions,this.currentLevel));r+=(e.children?">":"/>")+this.writer.endline(e,this.writerOptions,this.currentLevel),this.writerOptions.state=o.InsideTag}else this.writerOptions.state=o.OpenTag,r=this.writer.indent(e,this.writerOptions,this.currentLevel)+"<!DOCTYPE "+e.rootNodeName,e.pubID&&e.sysID?r+=' PUBLIC "'+e.pubID+'" "'+e.sysID+'"':e.sysID&&(r+=' SYSTEM "'+e.sysID+'"'),e.children?(r+=" [",this.writerOptions.state=o.InsideTag):(this.writerOptions.state=o.CloseTag,r+=">"),r+=this.writer.endline(e,this.writerOptions,this.currentLevel);return this.onData(r,this.currentLevel),e.isOpen=!0}},k.prototype.closeNode=function(e){var t;if(!e.isClosed)return t="",this.writerOptions.state=o.CloseTag,t=e.type===u.Element?this.writer.indent(e,this.writerOptions,this.currentLevel)+"</"+e.name+">"+this.writer.endline(e,this.writerOptions,this.currentLevel):this.writer.indent(e,this.writerOptions,this.currentLevel)+"]>"+this.writer.endline(e,this.writerOptions,this.currentLevel),this.writerOptions.state=o.None,this.onData(t,this.currentLevel),e.isClosed=!0},k.prototype.onData=function(e,t){return this.documentStarted=!0,this.onDataCallback(e,t+1)},k.prototype.onEnd=function(){return this.documentCompleted=!0,this.onEndCallback()},k.prototype.debugInfo=function(e){return null==e?"":"node: <"+e+">"},k.prototype.ele=function(){return this.element.apply(this,arguments)},k.prototype.nod=function(e,t,r){return this.node(e,t,r)},k.prototype.txt=function(e){return this.text(e)},k.prototype.dat=function(e){return this.cdata(e)},k.prototype.com=function(e){return this.comment(e)},k.prototype.ins=function(e,t){return this.instruction(e,t)},k.prototype.dec=function(e,t,r){return this.declaration(e,t,r)},k.prototype.dtd=function(e,t,r){return this.doctype(e,t,r)},k.prototype.e=function(e,t,r){return this.element(e,t,r)},k.prototype.n=function(e,t,r){return this.node(e,t,r)},k.prototype.t=function(e){return this.text(e)},k.prototype.d=function(e){return this.cdata(e)},k.prototype.c=function(e){return this.comment(e)},k.prototype.r=function(e){return this.raw(e)},k.prototype.i=function(e,t){return this.instruction(e,t)},k.prototype.att=function(){return(this.currentNode&&this.currentNode.type===u.DocType?this.attList:this.attribute).apply(this,arguments)},k.prototype.a=function(){return(this.currentNode&&this.currentNode.type===u.DocType?this.attList:this.attribute).apply(this,arguments)},k.prototype.ent=function(e,t){return this.entity(e,t)},k.prototype.pent=function(e,t){return this.pEntity(e,t)},k.prototype.not=function(e,t){return this.notation(e,t)},k)}.call(this)},{"./NodeType":498,"./Utility":499,"./WriterState":500,"./XMLAttribute":501,"./XMLCData":502,"./XMLComment":504,"./XMLDTDAttList":509,"./XMLDTDElement":510,"./XMLDTDEntity":511,"./XMLDTDNotation":512,"./XMLDeclaration":513,"./XMLDocType":514,"./XMLDocument":515,"./XMLElement":518,"./XMLProcessingInstruction":522,"./XMLRaw":523,"./XMLStringWriter":525,"./XMLStringifier":526,"./XMLText":527}],517:[function(e,t,r){!function(){var o={}.hasOwnProperty,s=e("./XMLNode"),a=e("./NodeType");t.exports=function(){var e,t=i,r=s;for(e in r)o.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e){i.__super__.constructor.call(this,e),this.type=a.Dummy}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,i.prototype.clone=function(){return Object.create(this)},i.prototype.toString=function(e){return""},i}()}.call(this)},{"./NodeType":498,"./XMLNode":520}],518:[function(t,r,e){!function(){var i={}.hasOwnProperty,e=t("./Utility"),o=e.isObject,s=e.isFunction,c=e.getValue,u=t("./XMLNode"),l=t("./NodeType"),f=t("./XMLAttribute"),p=t("./XMLNamedNodeMap");r.exports=function(){var e,t=a,r=u;for(e in r)i.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function a(e,t,r){var n,i,o,s;if(a.__super__.constructor.call(this,e),null==t)throw new Error("Missing element name. "+this.debugInfo());if(this.name=this.stringify.name(t),this.type=l.Element,this.attribs={},(this.schemaTypeInfo=null)!=r&&this.attribute(r),e.type===l.Document&&(this.isRoot=!0,(this.documentObject=e).rootObject=this,e.children))for(i=0,o=(s=e.children).length;i<o;i++)if((n=s[i]).type===l.DocType){n.name=this.name;break}}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,Object.defineProperty(a.prototype,"tagName",{get:function(){return this.name}}),Object.defineProperty(a.prototype,"namespaceURI",{get:function(){return""}}),Object.defineProperty(a.prototype,"prefix",{get:function(){return""}}),Object.defineProperty(a.prototype,"localName",{get:function(){return this.name}}),Object.defineProperty(a.prototype,"id",{get:function(){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),Object.defineProperty(a.prototype,"className",{get:function(){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),Object.defineProperty(a.prototype,"classList",{get:function(){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),Object.defineProperty(a.prototype,"attributes",{get:function(){return this.attributeMap&&this.attributeMap.nodes||(this.attributeMap=new p(this.attribs)),this.attributeMap}}),a.prototype.clone=function(){var e,t,r,n=Object.create(this);for(t in n.isRoot&&(n.documentObject=null),n.attribs={},r=this.attribs)i.call(r,t)&&(e=r[t],n.attribs[t]=e.clone());return n.children=[],this.children.forEach(function(e){e=e.clone();return(e.parent=n).children.push(e)}),n},a.prototype.attribute=function(e,t){var r,n;if(null!=e&&(e=c(e)),o(e))for(r in e)i.call(e,r)&&(n=e[r],this.attribute(r,n));else s(t)&&(t=t.apply()),this.options.keepNullAttributes&&null==t?this.attribs[e]=new f(this,e,""):null!=t&&(this.attribs[e]=new f(this,e,t));return this},a.prototype.removeAttribute=function(e){var t,r,n;if(null==e)throw new Error("Missing attribute name. "+this.debugInfo());if(e=c(e),Array.isArray(e))for(r=0,n=e.length;r<n;r++)t=e[r],delete this.attribs[t];else delete this.attribs[e];return this},a.prototype.toString=function(e){return this.options.writer.element(this,this.options.writer.filterOptions(e))},a.prototype.att=function(e,t){return this.attribute(e,t)},a.prototype.a=function(e,t){return this.attribute(e,t)},a.prototype.getAttribute=function(e){return this.attribs.hasOwnProperty(e)?this.attribs[e].value:null},a.prototype.setAttribute=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.getAttributeNode=function(e){return this.attribs.hasOwnProperty(e)?this.attribs[e]:null},a.prototype.setAttributeNode=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.removeAttributeNode=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.getElementsByTagName=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.getAttributeNS=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.setAttributeNS=function(e,t,r){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.removeAttributeNS=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.getAttributeNodeNS=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.setAttributeNodeNS=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.getElementsByTagNameNS=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.hasAttribute=function(e){return this.attribs.hasOwnProperty(e)},a.prototype.hasAttributeNS=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.setIdAttribute=function(e,t){return this.attribs.hasOwnProperty(e)?this.attribs[e].isId:t},a.prototype.setIdAttributeNS=function(e,t,r){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.setIdAttributeNode=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.getElementsByTagName=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.getElementsByTagNameNS=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.getElementsByClassName=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},a.prototype.isEqualNode=function(e){var t,r,n;if(!a.__super__.isEqualNode.apply(this,arguments).isEqualNode(e))return!1;if(e.namespaceURI!==this.namespaceURI)return!1;if(e.prefix!==this.prefix)return!1;if(e.localName!==this.localName)return!1;if(e.attribs.length!==this.attribs.length)return!1;for(t=r=0,n=this.attribs.length-1;0<=n?r<=n:n<=r;t=0<=n?++r:--r)if(!this.attribs[t].isEqualNode(e.attribs[t]))return!1;return!0},a}()}.call(this)},{"./NodeType":498,"./Utility":499,"./XMLAttribute":501,"./XMLNamedNodeMap":519,"./XMLNode":520}],519:[function(e,t,r){!function(){function e(e){this.nodes=e}t.exports=(Object.defineProperty(e.prototype,"length",{get:function(){return Object.keys(this.nodes).length||0}}),e.prototype.clone=function(){return this.nodes=null},e.prototype.getNamedItem=function(e){return this.nodes[e]},e.prototype.setNamedItem=function(e){var t=this.nodes[e.nodeName];return this.nodes[e.nodeName]=e,t||null},e.prototype.removeNamedItem=function(e){var t=this.nodes[e];return delete this.nodes[e],t||null},e.prototype.item=function(e){return this.nodes[Object.keys(this.nodes)[e]]||null},e.prototype.getNamedItemNS=function(e,t){throw new Error("This DOM method is not implemented.")},e.prototype.setNamedItemNS=function(e){throw new Error("This DOM method is not implemented.")},e.prototype.removeNamedItemNS=function(e,t){throw new Error("This DOM method is not implemented.")},e)}.call(this)},{}],520:[function(v,j,e){!function(){var r,f,t,n,i,p,o,s,a,c,u,l,d,h,y,m,e,b={}.hasOwnProperty;function g(e){this.parent=e,this.parent&&(this.options=this.parent.options,this.stringify=this.parent.stringify),this.value=null,this.children=[],this.baseURI=null,s||(s=v("./XMLElement"),t=v("./XMLCData"),n=v("./XMLComment"),i=v("./XMLDeclaration"),p=v("./XMLDocType"),u=v("./XMLRaw"),l=v("./XMLText"),c=v("./XMLProcessingInstruction"),o=v("./XMLDummy"),f=v("./NodeType"),a=v("./XMLNodeList"),v("./XMLNamedNodeMap"),r=v("./DocumentPosition"))}e=v("./Utility"),m=e.isObject,y=e.isFunction,h=e.isEmpty,d=e.getValue,r=a=f=o=c=l=u=p=i=n=t=s=null,j.exports=(Object.defineProperty(g.prototype,"nodeName",{get:function(){return this.name}}),Object.defineProperty(g.prototype,"nodeType",{get:function(){return this.type}}),Object.defineProperty(g.prototype,"nodeValue",{get:function(){return this.value}}),Object.defineProperty(g.prototype,"parentNode",{get:function(){return this.parent}}),Object.defineProperty(g.prototype,"childNodes",{get:function(){return this.childNodeList&&this.childNodeList.nodes||(this.childNodeList=new a(this.children)),this.childNodeList}}),Object.defineProperty(g.prototype,"firstChild",{get:function(){return this.children[0]||null}}),Object.defineProperty(g.prototype,"lastChild",{get:function(){return this.children[this.children.length-1]||null}}),Object.defineProperty(g.prototype,"previousSibling",{get:function(){var e=this.parent.children.indexOf(this);return this.parent.children[e-1]||null}}),Object.defineProperty(g.prototype,"nextSibling",{get:function(){var e=this.parent.children.indexOf(this);return this.parent.children[e+1]||null}}),Object.defineProperty(g.prototype,"ownerDocument",{get:function(){return this.document()||null}}),Object.defineProperty(g.prototype,"textContent",{get:function(){var e,t,r,n,i;if(this.nodeType!==f.Element&&this.nodeType!==f.DocumentFragment)return null;for(i="",t=0,r=(n=this.children).length;t<r;t++)(e=n[t]).textContent&&(i+=e.textContent);return i},set:function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),g.prototype.setParent=function(e){var t,r,n,i,o;for((this.parent=e)&&(this.options=e.options,this.stringify=e.stringify),o=[],r=0,n=(i=this.children).length;r<n;r++)t=i[r],o.push(t.setParent(this));return o},g.prototype.element=function(e,t,r){var n,i,o,s,a,c,u,l,f,p=null;if(null===t&&null==r&&(t=(l=[{},null])[0],r=l[1]),t=d(t=null==t?{}:t),m(t)||(r=(l=[t,r])[0],t=l[1]),null!=e&&(e=d(e)),Array.isArray(e))for(o=0,c=e.length;o<c;o++)i=e[o],p=this.element(i);else if(y(e))p=this.element(e.apply());else if(m(e)){for(a in e)if(b.call(e,a))if(f=e[a],y(f)&&(f=f.apply()),!this.options.ignoreDecorators&&this.stringify.convertAttKey&&0===a.indexOf(this.stringify.convertAttKey))p=this.attribute(a.substr(this.stringify.convertAttKey.length),f);else if(!this.options.separateArrayItems&&Array.isArray(f)&&h(f))p=this.dummy();else if(m(f)&&h(f))p=this.element(a);else if(this.options.keepNullNodes||null!=f)if(!this.options.separateArrayItems&&Array.isArray(f))for(s=0,u=f.length;s<u;s++)i=f[s],(n={})[a]=i,p=this.element(n);else m(f)?!this.options.ignoreDecorators&&this.stringify.convertTextKey&&0===a.indexOf(this.stringify.convertTextKey)?p=this.element(f):(p=this.element(a)).element(f):p=this.element(a,f);else p=this.dummy()}else p=this.options.keepNullNodes||null!==r?!this.options.ignoreDecorators&&this.stringify.convertTextKey&&0===e.indexOf(this.stringify.convertTextKey)?this.text(r):!this.options.ignoreDecorators&&this.stringify.convertCDataKey&&0===e.indexOf(this.stringify.convertCDataKey)?this.cdata(r):!this.options.ignoreDecorators&&this.stringify.convertCommentKey&&0===e.indexOf(this.stringify.convertCommentKey)?this.comment(r):!this.options.ignoreDecorators&&this.stringify.convertRawKey&&0===e.indexOf(this.stringify.convertRawKey)?this.raw(r):!this.options.ignoreDecorators&&this.stringify.convertPIKey&&0===e.indexOf(this.stringify.convertPIKey)?this.instruction(e.substr(this.stringify.convertPIKey.length),r):this.node(e,t,r):this.dummy();if(null==p)throw new Error("Could not create any elements with: "+e+". "+this.debugInfo());return p},g.prototype.insertBefore=function(e,t,r){var n,i,o,s;if(null!=e&&e.type)return o=t,(i=e).setParent(this),o?(n=children.indexOf(o),s=children.splice(n),children.push(i),Array.prototype.push.apply(children,s)):children.push(i),i;if(this.isRoot)throw new Error("Cannot insert elements at root level. "+this.debugInfo(e));return n=this.parent.children.indexOf(this),s=this.parent.children.splice(n),o=this.parent.element(e,t,r),Array.prototype.push.apply(this.parent.children,s),o},g.prototype.insertAfter=function(e,t,r){var n;if(this.isRoot)throw new Error("Cannot insert elements at root level. "+this.debugInfo(e));return n=this.parent.children.indexOf(this),n=this.parent.children.splice(n+1),e=this.parent.element(e,t,r),Array.prototype.push.apply(this.parent.children,n),e},g.prototype.remove=function(){var e;if(this.isRoot)throw new Error("Cannot remove the root element. "+this.debugInfo());return e=this.parent.children.indexOf(this),[].splice.apply(this.parent.children,[e,e-e+1].concat([])),this.parent},g.prototype.node=function(e,t,r){var n;return null!=e&&(e=d(e)),t=d(t=t||{}),m(t)||(r=(n=[t,r])[0],t=n[1]),n=new s(this,e,t),null!=r&&n.text(r),this.children.push(n),n},g.prototype.text=function(e){return m(e)&&this.element(e),e=new l(this,e),this.children.push(e),this},g.prototype.cdata=function(e){e=new t(this,e);return this.children.push(e),this},g.prototype.comment=function(e){e=new n(this,e);return this.children.push(e),this},g.prototype.commentBefore=function(e){var t=this.parent.children.indexOf(this),t=this.parent.children.splice(t);this.parent.comment(e);return Array.prototype.push.apply(this.parent.children,t),this},g.prototype.commentAfter=function(e){var t=this.parent.children.indexOf(this),t=this.parent.children.splice(t+1);this.parent.comment(e);return Array.prototype.push.apply(this.parent.children,t),this},g.prototype.raw=function(e){e=new u(this,e);return this.children.push(e),this},g.prototype.dummy=function(){return new o(this)},g.prototype.instruction=function(e,t){var r,n,i,o;if(null!=e&&(e=d(e)),null!=t&&(t=d(t)),Array.isArray(e))for(i=0,o=e.length;i<o;i++)r=e[i],this.instruction(r);else if(m(e))for(r in e)b.call(e,r)&&(n=e[r],this.instruction(r,n));else y(t)&&(t=t.apply()),t=new c(this,e,t),this.children.push(t);return this},g.prototype.instructionBefore=function(e,t){var r=this.parent.children.indexOf(this),r=this.parent.children.splice(r);this.parent.instruction(e,t);return Array.prototype.push.apply(this.parent.children,r),this},g.prototype.instructionAfter=function(e,t){var r=this.parent.children.indexOf(this),r=this.parent.children.splice(r+1);this.parent.instruction(e,t);return Array.prototype.push.apply(this.parent.children,r),this},g.prototype.declaration=function(e,t,r){var n=this.document(),e=new i(n,e,t,r);return 0!==n.children.length&&n.children[0].type===f.Declaration?n.children[0]=e:n.children.unshift(e),n.root()||n},g.prototype.dtd=function(e,t){for(var r,n,i,o,s=this.document(),a=new p(s,e,t),c=s.children,u=r=0,l=c.length;r<l;u=++r)if(c[u].type===f.DocType)return s.children[u]=a;for(u=n=0,i=(o=s.children).length;n<i;u=++n)if(o[u].isRoot)return s.children.splice(u,0,a),a;return s.children.push(a),a},g.prototype.up=function(){if(this.isRoot)throw new Error("The root node has no parent. Use doc() if you need to get the document object.");return this.parent},g.prototype.root=function(){for(var e=this;e;){if(e.type===f.Document)return e.rootObject;if(e.isRoot)return e;e=e.parent}},g.prototype.document=function(){for(var e=this;e;){if(e.type===f.Document)return e;e=e.parent}},g.prototype.end=function(e){return this.document().end(e)},g.prototype.prev=function(){var e=this.parent.children.indexOf(this);if(e<1)throw new Error("Already at the first node. "+this.debugInfo());return this.parent.children[e-1]},g.prototype.next=function(){var e=this.parent.children.indexOf(this);if(-1===e||e===this.parent.children.length-1)throw new Error("Already at the last node. "+this.debugInfo());return this.parent.children[e+1]},g.prototype.importDocument=function(e){e=e.root().clone();return e.parent=this,e.isRoot=!1,this.children.push(e),this},g.prototype.debugInfo=function(e){var t;return null!=(e=e||this.name)||null!=(t=this.parent)&&t.name?null==e?"parent: <"+this.parent.name+">":null!=(t=this.parent)&&t.name?"node: <"+e+">, parent: <"+this.parent.name+">":"node: <"+e+">":""},g.prototype.ele=function(e,t,r){return this.element(e,t,r)},g.prototype.nod=function(e,t,r){return this.node(e,t,r)},g.prototype.txt=function(e){return this.text(e)},g.prototype.dat=function(e){return this.cdata(e)},g.prototype.com=function(e){return this.comment(e)},g.prototype.ins=function(e,t){return this.instruction(e,t)},g.prototype.doc=function(){return this.document()},g.prototype.dec=function(e,t,r){return this.declaration(e,t,r)},g.prototype.e=function(e,t,r){return this.element(e,t,r)},g.prototype.n=function(e,t,r){return this.node(e,t,r)},g.prototype.t=function(e){return this.text(e)},g.prototype.d=function(e){return this.cdata(e)},g.prototype.c=function(e){return this.comment(e)},g.prototype.r=function(e){return this.raw(e)},g.prototype.i=function(e,t){return this.instruction(e,t)},g.prototype.u=function(){return this.up()},g.prototype.importXMLBuilder=function(e){return this.importDocument(e)},g.prototype.replaceChild=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},g.prototype.removeChild=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},g.prototype.appendChild=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},g.prototype.hasChildNodes=function(){return 0!==this.children.length},g.prototype.cloneNode=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},g.prototype.normalize=function(){throw new Error("This DOM method is not implemented."+this.debugInfo())},g.prototype.isSupported=function(e,t){return!0},g.prototype.hasAttributes=function(){return 0!==this.attribs.length},g.prototype.compareDocumentPosition=function(e){var t;return this===e?0:this.document()!==e.document()?(t=r.Disconnected|r.ImplementationSpecific,Math.random()<.5?t|=r.Preceding:t|=r.Following,t):this.isAncestor(e)?r.Contains|r.Preceding:this.isDescendant(e)?r.Contains|r.Following:this.isPreceding(e)?r.Preceding:r.Following},g.prototype.isSameNode=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},g.prototype.lookupPrefix=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},g.prototype.isDefaultNamespace=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},g.prototype.lookupNamespaceURI=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},g.prototype.isEqualNode=function(e){var t,r,n;if(e.nodeType!==this.nodeType)return!1;if(e.children.length!==this.children.length)return!1;for(t=r=0,n=this.children.length-1;0<=n?r<=n:n<=r;t=0<=n?++r:--r)if(!this.children[t].isEqualNode(e.children[t]))return!1;return!0},g.prototype.getFeature=function(e,t){throw new Error("This DOM method is not implemented."+this.debugInfo())},g.prototype.setUserData=function(e,t,r){throw new Error("This DOM method is not implemented."+this.debugInfo())},g.prototype.getUserData=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},g.prototype.contains=function(e){return!!e&&(e===this||this.isDescendant(e))},g.prototype.isDescendant=function(e){for(var t,r=this.children,n=0,i=r.length;n<i;n++){if(e===(t=r[n]))return!0;if(t.isDescendant(e))return!0}return!1},g.prototype.isAncestor=function(e){return e.isDescendant(this)},g.prototype.isPreceding=function(e){var e=this.treePosition(e),t=this.treePosition(this);return-1!==e&&-1!==t&&e<t},g.prototype.isFollowing=function(e){var e=this.treePosition(e),t=this.treePosition(this);return-1!==e&&-1!==t&&t<e},g.prototype.treePosition=function(t){var r=0,n=!1;return this.foreachTreeNode(this.document(),function(e){if(r++,!n&&e===t)return n=!0}),n?r:-1},g.prototype.foreachTreeNode=function(e,t){for(var r,n,i,o=0,s=(n=(e=e||this.document()).children).length;o<s;o++){if(i=t(r=n[o]))return i;if(i=this.foreachTreeNode(r,t))return i}},g)}.call(this)},{"./DocumentPosition":497,"./NodeType":498,"./Utility":499,"./XMLCData":502,"./XMLComment":504,"./XMLDeclaration":513,"./XMLDocType":514,"./XMLDummy":517,"./XMLElement":518,"./XMLNamedNodeMap":519,"./XMLNodeList":521,"./XMLProcessingInstruction":522,"./XMLRaw":523,"./XMLText":527}],521:[function(e,t,r){!function(){function e(e){this.nodes=e}t.exports=(Object.defineProperty(e.prototype,"length",{get:function(){return this.nodes.length||0}}),e.prototype.clone=function(){return this.nodes=null},e.prototype.item=function(e){return this.nodes[e]||null},e)}.call(this)},{}],522:[function(e,t,r){!function(){var o={}.hasOwnProperty,s=e("./NodeType"),a=e("./XMLCharacterData");t.exports=function(){var e,t=i,r=a;for(e in r)o.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e,t,r){if(i.__super__.constructor.call(this,e),null==t)throw new Error("Missing instruction target. "+this.debugInfo());this.type=s.ProcessingInstruction,this.target=this.stringify.insTarget(t),this.name=this.target,r&&(this.value=this.stringify.insValue(r))}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,i.prototype.clone=function(){return Object.create(this)},i.prototype.toString=function(e){return this.options.writer.processingInstruction(this,this.options.writer.filterOptions(e))},i.prototype.isEqualNode=function(e){return!!i.__super__.isEqualNode.apply(this,arguments).isEqualNode(e)&&e.target===this.target},i}()}.call(this)},{"./NodeType":498,"./XMLCharacterData":503}],523:[function(e,t,r){!function(){var o={}.hasOwnProperty,s=e("./NodeType"),a=e("./XMLNode");t.exports=function(){var e,t=i,r=a;for(e in r)o.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e,t){if(i.__super__.constructor.call(this,e),null==t)throw new Error("Missing raw text. "+this.debugInfo());this.type=s.Raw,this.value=this.stringify.raw(t)}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,i.prototype.clone=function(){return Object.create(this)},i.prototype.toString=function(e){return this.options.writer.raw(this,this.options.writer.filterOptions(e))},i}()}.call(this)},{"./NodeType":498,"./XMLNode":520}],524:[function(e,t,r){!function(){var p={}.hasOwnProperty,d=e("./NodeType"),o=e("./XMLWriterBase"),h=e("./WriterState");t.exports=function(){var e,t=i,r=o;for(e in r)p.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e,t){this.stream=e,i.__super__.constructor.call(this,t)}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,i.prototype.endline=function(e,t,r){return e.isLastRootNode&&t.state===h.CloseTag?"":i.__super__.endline.call(this,e,t,r)},i.prototype.document=function(e,t){for(var r,n,i,o,s,a,c=e.children,u=n=0,l=c.length;n<l;u=++n)(r=c[u]).isLastRootNode=u===e.children.length-1;for(t=this.filterOptions(t),a=[],i=0,o=(s=e.children).length;i<o;i++)r=s[i],a.push(this.writeChildNode(r,t,0));return a},i.prototype.attribute=function(e,t,r){return this.stream.write(i.__super__.attribute.call(this,e,t,r))},i.prototype.cdata=function(e,t,r){return this.stream.write(i.__super__.cdata.call(this,e,t,r))},i.prototype.comment=function(e,t,r){return this.stream.write(i.__super__.comment.call(this,e,t,r))},i.prototype.declaration=function(e,t,r){return this.stream.write(i.__super__.declaration.call(this,e,t,r))},i.prototype.docType=function(e,t,r){var n,i,o,s;if(this.openNode(e,t,r=r||0),t.state=h.OpenTag,this.stream.write(this.indent(e,t,r)),this.stream.write("<!DOCTYPE "+e.root().name),e.pubID&&e.sysID?this.stream.write(' PUBLIC "'+e.pubID+'" "'+e.sysID+'"'):e.sysID&&this.stream.write(' SYSTEM "'+e.sysID+'"'),0<e.children.length){for(this.stream.write(" ["),this.stream.write(this.endline(e,t,r)),t.state=h.InsideTag,i=0,o=(s=e.children).length;i<o;i++)n=s[i],this.writeChildNode(n,t,r+1);t.state=h.CloseTag,this.stream.write("]")}return t.state=h.CloseTag,this.stream.write(t.spaceBeforeSlash+">"),this.stream.write(this.endline(e,t,r)),t.state=h.None,this.closeNode(e,t,r)},i.prototype.element=function(e,t,r){var n,i,o,s,a,c,u,l,f;for(u in this.openNode(e,t,r=r||0),t.state=h.OpenTag,this.stream.write(this.indent(e,t,r)+"<"+e.name),l=e.attribs)p.call(l,u)&&(n=l[u],this.attribute(n,t,r));if(s=0===(o=e.children.length)?null:e.children[0],0===o||e.children.every(function(e){return(e.type===d.Text||e.type===d.Raw)&&""===e.value}))t.allowEmpty?(this.stream.write(">"),t.state=h.CloseTag,this.stream.write("</"+e.name+">")):(t.state=h.CloseTag,this.stream.write(t.spaceBeforeSlash+"/>"));else if(!t.pretty||1!==o||s.type!==d.Text&&s.type!==d.Raw||null==s.value){for(this.stream.write(">"+this.endline(e,t,r)),t.state=h.InsideTag,a=0,c=(f=e.children).length;a<c;a++)i=f[a],this.writeChildNode(i,t,r+1);t.state=h.CloseTag,this.stream.write(this.indent(e,t,r)+"</"+e.name+">")}else this.stream.write(">"),t.state=h.InsideTag,t.suppressPrettyCount++,this.writeChildNode(s,t,r+1),t.suppressPrettyCount--,t.state=h.CloseTag,this.stream.write("</"+e.name+">");return this.stream.write(this.endline(e,t,r)),t.state=h.None,this.closeNode(e,t,r)},i.prototype.processingInstruction=function(e,t,r){return this.stream.write(i.__super__.processingInstruction.call(this,e,t,r))},i.prototype.raw=function(e,t,r){return this.stream.write(i.__super__.raw.call(this,e,t,r))},i.prototype.text=function(e,t,r){return this.stream.write(i.__super__.text.call(this,e,t,r))},i.prototype.dtdAttList=function(e,t,r){return this.stream.write(i.__super__.dtdAttList.call(this,e,t,r))},i.prototype.dtdElement=function(e,t,r){return this.stream.write(i.__super__.dtdElement.call(this,e,t,r))},i.prototype.dtdEntity=function(e,t,r){return this.stream.write(i.__super__.dtdEntity.call(this,e,t,r))},i.prototype.dtdNotation=function(e,t,r){return this.stream.write(i.__super__.dtdNotation.call(this,e,t,r))},i}()}.call(this)},{"./NodeType":498,"./WriterState":500,"./XMLWriterBase":528}],525:[function(e,t,r){!function(){var o={}.hasOwnProperty,s=e("./XMLWriterBase");t.exports=function(){var e,t=i,r=s;for(e in r)o.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e){i.__super__.constructor.call(this,e)}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,i.prototype.document=function(e,t){var r,n,i,o,s;for(t=this.filterOptions(t),o="",n=0,i=(s=e.children).length;n<i;n++)r=s[n],o+=this.writeChildNode(r,t,0);return o=t.pretty&&o.slice(-t.newline.length)===t.newline?o.slice(0,-t.newline.length):o},i}()}.call(this)},{"./XMLWriterBase":528}],526:[function(e,t,r){!function(){function i(e,t){return function(){return e.apply(t,arguments)}}var o={}.hasOwnProperty;function e(e){var t,r,n;for(t in this.assertLegalName=i(this.assertLegalName,this),this.assertLegalChar=i(this.assertLegalChar,this),this.options=e=e||{},this.options.version||(this.options.version="1.0"),r=e.stringify||{})o.call(r,t)&&(n=r[t],this[t]=n)}t.exports=(e.prototype.name=function(e){return this.options.noValidation?e:this.assertLegalName(""+e||"")},e.prototype.text=function(e){return this.options.noValidation?e:this.assertLegalChar(this.textEscape(""+e||""))},e.prototype.cdata=function(e){return this.options.noValidation?e:(e=(e=""+e||"").replace("]]>","]]]]><![CDATA[>"),this.assertLegalChar(e))},e.prototype.comment=function(e){if(this.options.noValidation)return e;if((e=""+e||"").match(/--/))throw new Error("Comment text cannot contain double-hypen: "+e);return this.assertLegalChar(e)},e.prototype.raw=function(e){return this.options.noValidation?e:""+e||""},e.prototype.attValue=function(e){return this.options.noValidation?e:this.assertLegalChar(this.attEscape(e=""+e||""))},e.prototype.insTarget=function(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")},e.prototype.insValue=function(e){if(this.options.noValidation)return e;if((e=""+e||"").match(/\?>/))throw new Error("Invalid processing instruction value: "+e);return this.assertLegalChar(e)},e.prototype.xmlVersion=function(e){if(this.options.noValidation)return e;if((e=""+e||"").match(/1\.[0-9]+/))return e;throw new Error("Invalid version number: "+e)},e.prototype.xmlEncoding=function(e){if(this.options.noValidation)return e;if((e=""+e||"").match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/))return this.assertLegalChar(e);throw new Error("Invalid encoding: "+e)},e.prototype.xmlStandalone=function(e){return this.options.noValidation?e:e?"yes":"no"},e.prototype.dtdPubID=function(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")},e.prototype.dtdSysID=function(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")},e.prototype.dtdElementValue=function(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")},e.prototype.dtdAttType=function(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")},e.prototype.dtdAttDefault=function(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")},e.prototype.dtdEntityValue=function(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")},e.prototype.dtdNData=function(e){return this.options.noValidation?e:this.assertLegalChar(""+e||"")},e.prototype.convertAttKey="@",e.prototype.convertPIKey="?",e.prototype.convertTextKey="#text",e.prototype.convertCDataKey="#cdata",e.prototype.convertCommentKey="#comment",e.prototype.convertRawKey="#raw",e.prototype.assertLegalChar=function(e){var t;if(!this.options.noValidation)if("1.0"===this.options.version){if(t=e.match(/[\0-\x08\x0B\f\x0E-\x1F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/))throw new Error("Invalid character in string: "+e+" at index "+t.index)}else if("1.1"===this.options.version&&(t=e.match(/[\0\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/)))throw new Error("Invalid character in string: "+e+" at index "+t.index);return e},e.prototype.assertLegalName=function(e){if(this.options.noValidation)return e;if(this.assertLegalChar(e),e.match(/^([:A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])([\x2D\.0-:A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]|[\uD800-\uDB7F][\uDC00-\uDFFF])*$/))return e;throw new Error("Invalid character in name")},e.prototype.textEscape=function(e){var t;return this.options.noValidation?e:(t=this.options.noDoubleEncoding?/(?!&\S+;)&/g:/&/g,e.replace(t,"&").replace(/</g,"<").replace(/>/g,">").replace(/\r/g," "))},e.prototype.attEscape=function(e){var t;return this.options.noValidation?e:(t=this.options.noDoubleEncoding?/(?!&\S+;)&/g:/&/g,e.replace(t,"&").replace(/</g,"<").replace(/"/g,""").replace(/\t/g," ").replace(/\n/g," ").replace(/\r/g," "))},e)}.call(this)},{}],527:[function(e,t,r){!function(){var o={}.hasOwnProperty,s=e("./NodeType"),a=e("./XMLCharacterData");t.exports=function(){var e,t=i,r=a;for(e in r)o.call(r,e)&&(t[e]=r[e]);function n(){this.constructor=t}function i(e,t){if(i.__super__.constructor.call(this,e),null==t)throw new Error("Missing element text. "+this.debugInfo());this.name="#text",this.type=s.Text,this.value=this.stringify.text(t)}return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,Object.defineProperty(i.prototype,"isElementContentWhitespace",{get:function(){throw new Error("This DOM method is not implemented."+this.debugInfo())}}),Object.defineProperty(i.prototype,"wholeText",{get:function(){for(var e,t="",r=this.previousSibling;r;)t=r.data+t,r=r.previousSibling;for(t+=this.data,e=this.nextSibling;e;)t+=e.data,e=e.nextSibling;return t}}),i.prototype.clone=function(){return Object.create(this)},i.prototype.toString=function(e){return this.options.writer.text(this,this.options.writer.filterOptions(e))},i.prototype.splitText=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},i.prototype.replaceWholeText=function(e){throw new Error("This DOM method is not implemented."+this.debugInfo())},i}()}.call(this)},{"./NodeType":498,"./XMLCharacterData":503}],528:[function(t,r,e){!function(){var b,g,n,v={}.hasOwnProperty;function e(e){var t,r,n;for(t in r=(this.options=e=e||{}).writer||{})v.call(r,t)&&(n=r[t],this["_"+t]=this[t],this[t]=n)}n=t("./Utility").assign,b=t("./NodeType"),t("./XMLDeclaration"),t("./XMLDocType"),t("./XMLCData"),t("./XMLComment"),t("./XMLElement"),t("./XMLRaw"),t("./XMLText"),t("./XMLProcessingInstruction"),t("./XMLDummy"),t("./XMLDTDAttList"),t("./XMLDTDElement"),t("./XMLDTDEntity"),t("./XMLDTDNotation"),g=t("./WriterState"),r.exports=(e.prototype.filterOptions=function(e){var t,r;return e=n({},this.options,e=e||{}),(t={writer:this}).pretty=e.pretty||!1,t.allowEmpty=e.allowEmpty||!1,t.indent=null!=(r=e.indent)?r:" ",t.newline=null!=(r=e.newline)?r:"\n",t.offset=null!=(r=e.offset)?r:0,t.dontPrettyTextNodes=null!=(r=null!=(r=e.dontPrettyTextNodes)?r:e.dontprettytextnodes)?r:0,t.spaceBeforeSlash=null!=(r=null!=(r=e.spaceBeforeSlash)?r:e.spacebeforeslash)?r:"",!0===t.spaceBeforeSlash&&(t.spaceBeforeSlash=" "),t.suppressPrettyCount=0,t.user={},t.state=g.None,t},e.prototype.indent=function(e,t,r){return t.pretty&&!t.suppressPrettyCount&&t.pretty&&0<(r=(r||0)+t.offset+1)?new Array(r).join(t.indent):""},e.prototype.endline=function(e,t,r){return!t.pretty||t.suppressPrettyCount?"":t.newline},e.prototype.attribute=function(e,t,r){var n;return this.openAttribute(e,t,r),n=" "+e.name+'="'+e.value+'"',this.closeAttribute(e,t,r),n},e.prototype.cdata=function(e,t,r){var n;return this.openNode(e,t,r),t.state=g.OpenTag,n=this.indent(e,t,r)+"<![CDATA[",t.state=g.InsideTag,n+=e.value,t.state=g.CloseTag,n+="]]>"+this.endline(e,t,r),t.state=g.None,this.closeNode(e,t,r),n},e.prototype.comment=function(e,t,r){var n;return this.openNode(e,t,r),t.state=g.OpenTag,n=this.indent(e,t,r)+"\x3c!-- ",t.state=g.InsideTag,n+=e.value,t.state=g.CloseTag,n+=" --\x3e"+this.endline(e,t,r),t.state=g.None,this.closeNode(e,t,r),n},e.prototype.declaration=function(e,t,r){var n;return this.openNode(e,t,r),t.state=g.OpenTag,n=this.indent(e,t,r)+"<?xml",t.state=g.InsideTag,n+=' version="'+e.version+'"',null!=e.encoding&&(n+=' encoding="'+e.encoding+'"'),null!=e.standalone&&(n+=' standalone="'+e.standalone+'"'),t.state=g.CloseTag,n=(n+=t.spaceBeforeSlash+"?>")+this.endline(e,t,r),t.state=g.None,this.closeNode(e,t,r),n},e.prototype.docType=function(e,t,r){var n,i,o,s,a;if(this.openNode(e,t,r=r||0),t.state=g.OpenTag,s=this.indent(e,t,r),s+="<!DOCTYPE "+e.root().name,e.pubID&&e.sysID?s+=' PUBLIC "'+e.pubID+'" "'+e.sysID+'"':e.sysID&&(s+=' SYSTEM "'+e.sysID+'"'),0<e.children.length){for(s=(s+=" [")+this.endline(e,t,r),t.state=g.InsideTag,i=0,o=(a=e.children).length;i<o;i++)n=a[i],s+=this.writeChildNode(n,t,r+1);t.state=g.CloseTag,s+="]"}return t.state=g.CloseTag,s=(s+=t.spaceBeforeSlash+">")+this.endline(e,t,r),t.state=g.None,this.closeNode(e,t,r),s},e.prototype.element=function(e,t,r){var n,i,o,s,a,c,u,l,f,p,d,h,y=!1,m="";for(f in this.openNode(e,t,r=r||0),t.state=g.OpenTag,m+=this.indent(e,t,r)+"<"+e.name,p=e.attribs)v.call(p,f)&&(n=p[f],m+=this.attribute(n,t,r));if(s=0===(o=e.children.length)?null:e.children[0],0===o||e.children.every(function(e){return(e.type===b.Text||e.type===b.Raw)&&""===e.value}))t.allowEmpty?(m+=">",t.state=g.CloseTag,m+="</"+e.name+">"+this.endline(e,t,r)):(t.state=g.CloseTag,m+=t.spaceBeforeSlash+"/>"+this.endline(e,t,r));else if(!t.pretty||1!==o||s.type!==b.Text&&s.type!==b.Raw||null==s.value){if(t.dontPrettyTextNodes)for(a=0,u=(d=e.children).length;a<u;a++)if(((i=d[a]).type===b.Text||i.type===b.Raw)&&null!=i.value){t.suppressPrettyCount++,y=!0;break}for(m+=">"+this.endline(e,t,r),t.state=g.InsideTag,c=0,l=(h=e.children).length;c<l;c++)i=h[c],m+=this.writeChildNode(i,t,r+1);t.state=g.CloseTag,m+=this.indent(e,t,r)+"</"+e.name+">",y&&t.suppressPrettyCount--,m+=this.endline(e,t,r),t.state=g.None}else m+=">",t.state=g.InsideTag,t.suppressPrettyCount++,y=!0,m+=this.writeChildNode(s,t,r+1),t.suppressPrettyCount--,y=!1,t.state=g.CloseTag,m+="</"+e.name+">"+this.endline(e,t,r);return this.closeNode(e,t,r),m},e.prototype.writeChildNode=function(e,t,r){switch(e.type){case b.CData:return this.cdata(e,t,r);case b.Comment:return this.comment(e,t,r);case b.Element:return this.element(e,t,r);case b.Raw:return this.raw(e,t,r);case b.Text:return this.text(e,t,r);case b.ProcessingInstruction:return this.processingInstruction(e,t,r);case b.Dummy:return"";case b.Declaration:return this.declaration(e,t,r);case b.DocType:return this.docType(e,t,r);case b.AttributeDeclaration:return this.dtdAttList(e,t,r);case b.ElementDeclaration:return this.dtdElement(e,t,r);case b.EntityDeclaration:return this.dtdEntity(e,t,r);case b.NotationDeclaration:return this.dtdNotation(e,t,r);default:throw new Error("Unknown XML node type: "+e.constructor.name)}},e.prototype.processingInstruction=function(e,t,r){var n;return this.openNode(e,t,r),t.state=g.OpenTag,n=this.indent(e,t,r)+"<?",t.state=g.InsideTag,n+=e.target,e.value&&(n+=" "+e.value),t.state=g.CloseTag,n=(n+=t.spaceBeforeSlash+"?>")+this.endline(e,t,r),t.state=g.None,this.closeNode(e,t,r),n},e.prototype.raw=function(e,t,r){var n;return this.openNode(e,t,r),t.state=g.OpenTag,n=this.indent(e,t,r),t.state=g.InsideTag,n+=e.value,t.state=g.CloseTag,n+=this.endline(e,t,r),t.state=g.None,this.closeNode(e,t,r),n},e.prototype.text=function(e,t,r){var n;return this.openNode(e,t,r),t.state=g.OpenTag,n=this.indent(e,t,r),t.state=g.InsideTag,n+=e.value,t.state=g.CloseTag,n+=this.endline(e,t,r),t.state=g.None,this.closeNode(e,t,r),n},e.prototype.dtdAttList=function(e,t,r){var n;return this.openNode(e,t,r),t.state=g.OpenTag,n=this.indent(e,t,r)+"<!ATTLIST",t.state=g.InsideTag,n+=" "+e.elementName+" "+e.attributeName+" "+e.attributeType,"#DEFAULT"!==e.defaultValueType&&(n+=" "+e.defaultValueType),e.defaultValue&&(n+=' "'+e.defaultValue+'"'),t.state=g.CloseTag,n+=t.spaceBeforeSlash+">"+this.endline(e,t,r),t.state=g.None,this.closeNode(e,t,r),n},e.prototype.dtdElement=function(e,t,r){var n;return this.openNode(e,t,r),t.state=g.OpenTag,n=this.indent(e,t,r)+"<!ELEMENT",t.state=g.InsideTag,n+=" "+e.name+" "+e.value,t.state=g.CloseTag,n+=t.spaceBeforeSlash+">"+this.endline(e,t,r),t.state=g.None,this.closeNode(e,t,r),n},e.prototype.dtdEntity=function(e,t,r){var n;return this.openNode(e,t,r),t.state=g.OpenTag,n=this.indent(e,t,r)+"<!ENTITY",t.state=g.InsideTag,e.pe&&(n+=" %"),n+=" "+e.name,e.value?n+=' "'+e.value+'"':(e.pubID&&e.sysID?n+=' PUBLIC "'+e.pubID+'" "'+e.sysID+'"':e.sysID&&(n+=' SYSTEM "'+e.sysID+'"'),e.nData&&(n+=" NDATA "+e.nData)),t.state=g.CloseTag,n+=t.spaceBeforeSlash+">"+this.endline(e,t,r),t.state=g.None,this.closeNode(e,t,r),n},e.prototype.dtdNotation=function(e,t,r){var n;return this.openNode(e,t,r),t.state=g.OpenTag,n=this.indent(e,t,r)+"<!NOTATION",t.state=g.InsideTag,n+=" "+e.name,e.pubID&&e.sysID?n+=' PUBLIC "'+e.pubID+'" "'+e.sysID+'"':e.pubID?n+=' PUBLIC "'+e.pubID+'"':e.sysID&&(n+=' SYSTEM "'+e.sysID+'"'),t.state=g.CloseTag,n+=t.spaceBeforeSlash+">"+this.endline(e,t,r),t.state=g.None,this.closeNode(e,t,r),n},e.prototype.openNode=function(e,t,r){},e.prototype.closeNode=function(e,t,r){},e.prototype.openAttribute=function(e,t,r){},e.prototype.closeAttribute=function(e,t,r){},e)}.call(this)},{"./NodeType":498,"./Utility":499,"./WriterState":500,"./XMLCData":502,"./XMLComment":504,"./XMLDTDAttList":509,"./XMLDTDElement":510,"./XMLDTDEntity":511,"./XMLDTDNotation":512,"./XMLDeclaration":513,"./XMLDocType":514,"./XMLDummy":517,"./XMLElement":518,"./XMLProcessingInstruction":522,"./XMLRaw":523,"./XMLText":527}],529:[function(u,l,e){!function(){var e=u("./Utility"),i=e.assign,o=e.isFunction,e=u("./XMLDOMImplementation"),s=u("./XMLDocument"),a=u("./XMLDocumentCB"),t=u("./XMLStringWriter"),r=u("./XMLStreamWriter"),n=u("./NodeType"),c=u("./WriterState");l.exports.create=function(e,t,r,n){if(null==e)throw new Error("Root element needs a name.");return n=i({},t,r,n),r=(t=new s(n)).element(e),n.headless||(t.declaration(n),null==n.pubID&&null==n.sysID)||t.dtd(n),r},l.exports.begin=function(e,t,r){var n;return o(e)&&(t=(n=[e,t])[0],r=n[1],e={}),t?new a(e,t,r):new s(e)},l.exports.stringWriter=function(e){return new t(e)},l.exports.streamWriter=function(e,t){return new r(e,t)},l.exports.implementation=new e,l.exports.nodeType=n,l.exports.writerState=c}.call(this)},{"./NodeType":498,"./Utility":499,"./WriterState":500,"./XMLDOMImplementation":507,"./XMLDocument":515,"./XMLDocumentCB":516,"./XMLStreamWriter":524,"./XMLStringWriter":525}],530:[function(e,t,r){t.exports=function(){for(var e={},t=0;t<arguments.length;t++){var r,n=arguments[t];for(r in n)i.call(n,r)&&(e[r]=n[r])}return e};var i=Object.prototype.hasOwnProperty},{}],531:[function(e,t,r){"use strict";e("core-js/modules/es.array.fill.js"),e("core-js/modules/es.array.concat.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.regexp.to-string.js"),e("core-js/modules/es.array.join.js"),e("core-js/modules/es.array.slice.js");var s=e("buffer").Buffer,o={sha1:e("./sha"),sha256:e("./sha256"),md5:e("./md5")},a=64,c=s.alloc(a);function n(e,r){var n=o[e=e||"sha1"],i=[];return n||u("algorithm:",e,"is not yet supported"),{update:function(e){return s.isBuffer(e)||(e=s.from(e)),i.push(e),e.length,this},digest:function(e){var t=s.concat(i),t=r?function(e,t,r){s.isBuffer(t)||(t=s.from(t)),s.isBuffer(r)||(r=s.from(r)),t.length>a?t=e(t):t.length<a&&(t=s.concat([t,c],a));for(var n=s.alloc(a),i=s.alloc(a),o=0;o<a;o++)n[o]=54^t[o],i[o]=92^t[o];return r=e(s.concat([n,r])),e(s.concat([i,r]))}(n,r,t):n(t);return i=null,e?t.toString(e):t}}}function u(){var e=[].slice.call(arguments).join(" ");throw new Error([e,"we accept pull requests","http://github.com/dominictarr/crypto-browserify"].join("\n"))}c.fill(0),r.createHash=function(e){return n(e)},r.createHmac=n,r.createCredentials=function(){u("sorry,createCredentials is not implemented yet")},r.createCipher=function(){u("sorry,createCipher is not implemented yet")},r.createCipheriv=function(){u("sorry,createCipheriv is not implemented yet")},r.createDecipher=function(){u("sorry,createDecipher is not implemented yet")},r.createDecipheriv=function(){u("sorry,createDecipheriv is not implemented yet")},r.createSign=function(){u("sorry,createSign is not implemented yet")},r.createVerify=function(){u("sorry,createVerify is not implemented yet")},r.createDiffieHellman=function(){u("sorry,createDiffieHellman is not implemented yet")},r.pbkdf2=function(){u("sorry,pbkdf2 is not implemented yet")}},{"./md5":533,"./sha":534,"./sha256":535,buffer:103,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.fill.js":311,"core-js/modules/es.array.join.js":317,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.regexp.to-string.js":339}],532:[function(e,t,r){"use strict";e("core-js/modules/es.array.fill.js"),e("core-js/modules/es.array.concat.js");var c=e("buffer").Buffer,u=4,l=c.alloc(u);l.fill(0);t.exports={hash:function(e,t,r,n){for(var i=t(function(e,t){e.length%u!=0&&(r=e.length+(u-e.length%u),e=c.concat([e,l],r));for(var r,n=[],i=t?e.readInt32BE:e.readInt32LE,o=0;o<e.length;o+=u)n.push(i.call(e,o));return n}(e=c.isBuffer(e)?e:c.from(e),n),8*e.length),t=r,e=n,o=c.alloc(t),s=e?o.writeInt32BE:o.writeInt32LE,a=0;a<i.length;a++)s.call(o,i[a],4*a,!0);return o}}},{buffer:103,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.fill.js":311}],533:[function(e,t,r){"use strict";var n=e("./helpers");function i(e,t){e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;for(var r=1732584193,n=-271733879,i=-1732584194,o=271733878,s=0;s<e.length;s+=16){var a=r,c=n,u=i,l=o,r=f(r,n,i,o,e[s+0],7,-680876936),o=f(o,r,n,i,e[s+1],12,-389564586),i=f(i,o,r,n,e[s+2],17,606105819),n=f(n,i,o,r,e[s+3],22,-1044525330);r=f(r,n,i,o,e[s+4],7,-176418897),o=f(o,r,n,i,e[s+5],12,1200080426),i=f(i,o,r,n,e[s+6],17,-1473231341),n=f(n,i,o,r,e[s+7],22,-45705983),r=f(r,n,i,o,e[s+8],7,1770035416),o=f(o,r,n,i,e[s+9],12,-1958414417),i=f(i,o,r,n,e[s+10],17,-42063),n=f(n,i,o,r,e[s+11],22,-1990404162),r=f(r,n,i,o,e[s+12],7,1804603682),o=f(o,r,n,i,e[s+13],12,-40341101),i=f(i,o,r,n,e[s+14],17,-1502002290),r=p(r,n=f(n,i,o,r,e[s+15],22,1236535329),i,o,e[s+1],5,-165796510),o=p(o,r,n,i,e[s+6],9,-1069501632),i=p(i,o,r,n,e[s+11],14,643717713),n=p(n,i,o,r,e[s+0],20,-373897302),r=p(r,n,i,o,e[s+5],5,-701558691),o=p(o,r,n,i,e[s+10],9,38016083),i=p(i,o,r,n,e[s+15],14,-660478335),n=p(n,i,o,r,e[s+4],20,-405537848),r=p(r,n,i,o,e[s+9],5,568446438),o=p(o,r,n,i,e[s+14],9,-1019803690),i=p(i,o,r,n,e[s+3],14,-187363961),n=p(n,i,o,r,e[s+8],20,1163531501),r=p(r,n,i,o,e[s+13],5,-1444681467),o=p(o,r,n,i,e[s+2],9,-51403784),i=p(i,o,r,n,e[s+7],14,1735328473),r=d(r,n=p(n,i,o,r,e[s+12],20,-1926607734),i,o,e[s+5],4,-378558),o=d(o,r,n,i,e[s+8],11,-2022574463),i=d(i,o,r,n,e[s+11],16,1839030562),n=d(n,i,o,r,e[s+14],23,-35309556),r=d(r,n,i,o,e[s+1],4,-1530992060),o=d(o,r,n,i,e[s+4],11,1272893353),i=d(i,o,r,n,e[s+7],16,-155497632),n=d(n,i,o,r,e[s+10],23,-1094730640),r=d(r,n,i,o,e[s+13],4,681279174),o=d(o,r,n,i,e[s+0],11,-358537222),i=d(i,o,r,n,e[s+3],16,-722521979),n=d(n,i,o,r,e[s+6],23,76029189),r=d(r,n,i,o,e[s+9],4,-640364487),o=d(o,r,n,i,e[s+12],11,-421815835),i=d(i,o,r,n,e[s+15],16,530742520),r=h(r,n=d(n,i,o,r,e[s+2],23,-995338651),i,o,e[s+0],6,-198630844),o=h(o,r,n,i,e[s+7],10,1126891415),i=h(i,o,r,n,e[s+14],15,-1416354905),n=h(n,i,o,r,e[s+5],21,-57434055),r=h(r,n,i,o,e[s+12],6,1700485571),o=h(o,r,n,i,e[s+3],10,-1894986606),i=h(i,o,r,n,e[s+10],15,-1051523),n=h(n,i,o,r,e[s+1],21,-2054922799),r=h(r,n,i,o,e[s+8],6,1873313359),o=h(o,r,n,i,e[s+15],10,-30611744),i=h(i,o,r,n,e[s+6],15,-1560198380),n=h(n,i,o,r,e[s+13],21,1309151649),r=h(r,n,i,o,e[s+4],6,-145523070),o=h(o,r,n,i,e[s+11],10,-1120210379),i=h(i,o,r,n,e[s+2],15,718787259),n=h(n,i,o,r,e[s+9],21,-343485551),r=y(r,a),n=y(n,c),i=y(i,u),o=y(o,l)}return Array(r,n,i,o)}function a(e,t,r,n,i,o){return y((t=y(y(t,e),y(n,o)))<<i|t>>>32-i,r)}function f(e,t,r,n,i,o,s){return a(t&r|~t&n,e,t,i,o,s)}function p(e,t,r,n,i,o,s){return a(t&n|r&~n,e,t,i,o,s)}function d(e,t,r,n,i,o,s){return a(t^r^n,e,t,i,o,s)}function h(e,t,r,n,i,o,s){return a(r^(t|~n),e,t,i,o,s)}function y(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}t.exports=function(e){return n.hash(e,i,16)}},{"./helpers":532}],534:[function(e,t,r){"use strict";var n=e("./helpers");function i(e,t){e[t>>5]|=128<<24-t%32,e[15+(t+64>>9<<4)]=t;for(var r,n,i,o=Array(80),s=1732584193,a=-271733879,c=-1732584194,u=271733878,l=-1009589776,f=0;f<e.length;f+=16){for(var p=s,d=a,h=c,y=u,m=l,b=0;b<80;b++){o[b]=b<16?e[f+b]:j(o[b-3]^o[b-8]^o[b-14]^o[b-16],1);var g=v(v(j(s,5),(g=a,n=c,i=u,(r=b)<20?g&n|~g&i:!(r<40)&&r<60?g&n|g&i|n&i:g^n^i)),v(v(l,o[b]),(r=b)<20?1518500249:r<40?1859775393:r<60?-1894007588:-899497514)),l=u,u=c,c=j(a,30),a=s,s=g}s=v(s,p),a=v(a,d),c=v(c,h),u=v(u,y),l=v(l,m)}return Array(s,a,c,u,l)}function v(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function j(e,t){return e<<t|e>>>32-t}t.exports=function(e){return n.hash(e,i,20,!0)}},{"./helpers":532}],535:[function(e,t,r){"use strict";function g(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function n(e,t){var r,n=new Array(1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298),i=new Array(1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225),o=new Array(64);e[t>>5]|=128<<24-t%32,e[15+(t+64>>9<<4)]=t;for(var s,a,c=0;c<e.length;c+=16){for(var u=i[0],l=i[1],f=i[2],p=i[3],d=i[4],h=i[5],y=i[6],m=i[7],b=0;b<64;b++)o[b]=b<16?e[b+c]:g(g(g((a=o[b-2],v(a,17)^v(a,19)^j(a,10)),o[b-7]),(a=o[b-15],v(a,7)^v(a,18)^j(a,3))),o[b-16]),r=g(g(g(g(m,v(a=d,6)^v(a,11)^v(a,25)),d&h^~d&y),n[b]),o[b]),s=g(v(s=u,2)^v(s,13)^v(s,22),u&l^u&f^l&f),m=y,y=h,h=d,d=g(p,r),p=f,f=l,l=u,u=g(r,s);i[0]=g(u,i[0]),i[1]=g(l,i[1]),i[2]=g(f,i[2]),i[3]=g(p,i[3]),i[4]=g(d,i[4]),i[5]=g(h,i[5]),i[6]=g(y,i[6]),i[7]=g(m,i[7])}return i}var i=e("./helpers"),v=function(e,t){return e>>>t|e<<32-t},j=function(e,t){return e>>>t};t.exports=function(e){return i.hash(e,n,32,!0)}},{"./helpers":532}],536:[function(e,t,r){"use strict";t.exports=function(){return function(){}}},{}],537:[function(i,o,e){!function(n){!function(){"use strict";var t=i("@babel/runtime/helpers/interopRequireDefault")(i("@babel/runtime/helpers/typeof")),r=i("stream").Stream,e=i("../lib/common/utils/isArray").isArray;o.exports.string=function(e){return"string"==typeof e},o.exports.array=e,o.exports.buffer=n.isBuffer,o.exports.writableStream=function(e){return e instanceof r&&"function"==typeof e._write&&"object"===(0,t.default)(e._writableState)}}.call(this)}.call(this,{isBuffer:i("../node_modules/is-buffer/index.js")})},{"../lib/common/utils/isArray":67,"../node_modules/is-buffer/index.js":409,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/typeof":91,stream:468}],538:[function(e,t,r){"use strict";e=e("immediate"),t=t.exports={};function n(){}t.nextTick=e,t.title="browser",t.browser=!0,t.env={},t.argv=[],t.version="",t.versions={},t.on=n,t.addListener=n,t.once=n,t.off=n,t.removeListener=n,t.removeAllListeners=n,t.emit=n,t.prependListener=n,t.prependOnceListener=n,t.listeners=function(e){return[]},t.binding=function(e){throw new Error("process.binding is not supported")},t.cwd=function(){return"/"},t.chdir=function(e){throw new Error("process.chdir is not supported")},t.umask=function(){return 0}},{immediate:401}],539:[function(n,e,i){!function(u){!function(){"use strict";n("core-js/modules/es.regexp.exec.js"),n("core-js/modules/es.string.search.js");var s=n("./lib/request"),e=n("./lib/response"),a=n("xtend"),t=n("builtin-status-codes"),c=n("url"),r=i;r.request=function(e,t){e="string"==typeof e?c.parse(e):a(e);var r=-1===u.location.protocol.search(/^https?:$/)?"http:":"",r=e.protocol||r,n=e.hostname||e.host,i=e.port,o=e.path||"/",r=(n&&-1!==n.indexOf(":")&&(n="["+n+"]"),e.url=(n?r+"//"+n:"")+(i?":"+i:"")+o,e.method=(e.method||"GET").toUpperCase(),e.headers=e.headers||{},new s(e));return t&&r.on("response",t),r},r.get=function(e,t){e=r.request(e,t);return e.end(),e},r.ClientRequest=s,r.IncomingMessage=e.IncomingMessage,r.Agent=function(){},r.Agent.defaultMaxSockets=4,r.globalAgent=new r.Agent,r.STATUS_CODES=t,r.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./lib/request":541,"./lib/response":542,"builtin-status-codes":104,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.search.js":346,url:543,xtend:530}],540:[function(a,e,c){!function(s){!function(){"use strict";a("core-js/modules/es.object.to-string.js"),a("core-js/modules/es.promise.js"),a("core-js/modules/es.array-buffer.constructor.js"),a("core-js/modules/es.array-buffer.slice.js"),a("core-js/modules/es.array.slice.js"),c.fetch=o(s.fetch)&&o(s.ReadableStream),c.writableStream=o(s.WritableStream),c.abortController=o(s.AbortController),c.blobConstructor=!1;try{new Blob([new ArrayBuffer(1)]),c.blobConstructor=!0}catch(e){}var t;function r(){if(void 0===t)if(s.XMLHttpRequest){t=new s.XMLHttpRequest;try{t.open("GET",s.XDomainRequest?"/":"https://example.com")}catch(e){t=null}}else t=null;return t}function e(e){var t=r();if(t)try{return t.responseType=e,t.responseType===e}catch(e){}return!1}var n=void 0!==s.ArrayBuffer,i=n&&o(s.ArrayBuffer.prototype.slice);function o(e){return"function"==typeof e}c.arraybuffer=c.fetch||n&&e("arraybuffer"),c.msstream=!c.fetch&&i&&e("ms-stream"),c.mozchunkedarraybuffer=!c.fetch&&n&&e("moz-chunked-arraybuffer"),c.overrideMimeType=c.fetch||!!r()&&o(r().overrideMimeType),c.vbArray=o(s.VBArray),t=null}.call(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"core-js/modules/es.array-buffer.constructor.js":308,"core-js/modules/es.array-buffer.slice.js":309,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333}],541:[function(o,s,e){!function(f,p,d){!function(){"use strict";o("core-js/modules/es.object.to-string.js"),o("core-js/modules/es.regexp.to-string.js"),o("core-js/modules/web.dom-collections.for-each.js"),o("core-js/modules/es.object.keys.js"),o("core-js/modules/es.array.concat.js"),o("core-js/modules/es.array.map.js"),o("core-js/modules/es.function.name.js"),o("core-js/modules/es.promise.js");var c=o("./capability"),e=o("inherits"),t=o("./response"),i=o("readable-stream"),u=o("to-arraybuffer"),r=t.IncomingMessage,l=t.readyStates;t=s.exports=function(t){var e,r=this,n=(i.Writable.call(r),r._opts=t,r._body=[],r._headers={},t.auth&&r.setHeader("Authorization","Basic "+new d(t.auth).toString("base64")),Object.keys(t.headers).forEach(function(e){r.setHeader(e,t.headers[e])}),!0);if("disable-fetch"===t.mode||"requestTimeout"in t&&!c.abortController)e=!(n=!1);else if("prefer-streaming"===t.mode)e=!1;else if("allow-wrong-content-type"===t.mode)e=!c.overrideMimeType;else{if(t.mode&&"default"!==t.mode&&"prefer-fast"!==t.mode)throw new Error("Invalid value for opts.mode");e=!0}r._mode=(e=e,n=n,c.fetch&&n?"fetch":c.mozchunkedarraybuffer?"moz-chunked-arraybuffer":c.msstream?"ms-stream":c.arraybuffer&&e?"arraybuffer":c.vbArray&&e?"text:vbarray":"text"),r._fetchTimer=null,r.on("finish",function(){r._onFinish()})};e(t,i.Writable),t.prototype.setHeader=function(e,t){var r=e.toLowerCase();-1===n.indexOf(r)&&(this._headers[r]={name:e,value:t})},t.prototype.getHeader=function(e){e=this._headers[e.toLowerCase()];return e?e.value:null},t.prototype.removeHeader=function(e){delete this._headers[e.toLowerCase()]},t.prototype._onFinish=function(){var t=this;if(!t._destroyed){var e=t._opts,r=t._headers,n=null,i=("GET"!==e.method&&"HEAD"!==e.method&&(n=c.arraybuffer?u(d.concat(t._body)):c.blobConstructor?new p.Blob(t._body.map(function(e){return u(e)}),{type:(r["content-type"]||{}).value||""}):d.concat(t._body).toString()),[]);if(Object.keys(r).forEach(function(e){var t=r[e].name,e=r[e].value;Array.isArray(e)?e.forEach(function(e){i.push([t,e])}):i.push([t,e])}),"fetch"===t._mode){var o,s=null;c.abortController&&(s=(o=new AbortController).signal,t._fetchAbortController=o,"requestTimeout"in e)&&0!==e.requestTimeout&&(t._fetchTimer=p.setTimeout(function(){t.emit("requestTimeout"),t._fetchAbortController&&t._fetchAbortController.abort()},e.requestTimeout)),p.fetch(t._opts.url,{method:t._opts.method,headers:i,body:n||void 0,mode:"cors",credentials:e.withCredentials?"include":"same-origin",signal:s}).then(function(e){t._fetchResponse=e,t._connect()},function(e){p.clearTimeout(t._fetchTimer),t._destroyed||t.emit("error",e)})}else{var a=t._xhr=new p.XMLHttpRequest;try{a.open(t._opts.method,t._opts.url,!0)}catch(e){return void f.nextTick(function(){t.emit("error",e)})}"responseType"in a&&(a.responseType=t._mode.split(":")[0]),"withCredentials"in a&&(a.withCredentials=!!e.withCredentials),"text"===t._mode&&"overrideMimeType"in a&&a.overrideMimeType("text/plain; charset=x-user-defined"),"requestTimeout"in e&&(a.timeout=e.requestTimeout,a.ontimeout=function(){t.emit("requestTimeout")}),i.forEach(function(e){a.setRequestHeader(e[0],e[1])}),t._response=null,a.onreadystatechange=function(){switch(a.readyState){case l.LOADING:case l.DONE:t._onXHRProgress()}},"moz-chunked-arraybuffer"===t._mode&&(a.onprogress=function(){t._onXHRProgress()}),a.onerror=function(){t._destroyed||t.emit("error",new Error("XHR error"))};try{a.send(n)}catch(e){f.nextTick(function(){t.emit("error",e)})}}}},t.prototype._onXHRProgress=function(){!function(e){try{var t=e.status;return null!==t&&0!==t}catch(e){}}(this._xhr)||this._destroyed||(this._response||this._connect(),this._response._onXHRProgress())},t.prototype._connect=function(){var t=this;t._destroyed||(t._response=new r(t._xhr,t._fetchResponse,t._mode,t._fetchTimer),t._response.on("error",function(e){t.emit("error",e)}),t.emit("response",t._response))},t.prototype._write=function(e,t,r){this._body.push(e),r()},t.prototype.abort=t.prototype.destroy=function(){this._destroyed=!0,p.clearTimeout(this._fetchTimer),this._response&&(this._response._destroyed=!0),this._xhr?this._xhr.abort():this._fetchAbortController&&this._fetchAbortController.abort()},t.prototype.end=function(e,t,r){"function"==typeof e&&(r=e,e=void 0),i.Writable.prototype.end.call(this,e,t,r)},t.prototype.flushHeaders=function(){},t.prototype.setTimeout=function(){},t.prototype.setNoDelay=function(){},t.prototype.setSocketKeepAlive=function(){};var n=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"]}.call(this)}.call(this,o("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},o("buffer").Buffer)},{"./capability":540,"./response":542,_process:538,buffer:103,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.map.js":318,"core-js/modules/es.function.name.js":322,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.regexp.to-string.js":339,"core-js/modules/web.dom-collections.for-each.js":380,inherits:407,"readable-stream":463,"to-arraybuffer":485}],542:[function(r,e,n){!function(l,f,p){!function(){"use strict";r("core-js/modules/es.object.to-string.js"),r("core-js/modules/web.dom-collections.for-each.js"),r("core-js/modules/es.promise.js"),r("core-js/modules/es.regexp.exec.js"),r("core-js/modules/es.string.split.js"),r("core-js/modules/es.string.match.js"),r("core-js/modules/es.array.iterator.js"),r("core-js/modules/es.array-buffer.slice.js"),r("core-js/modules/es.typed-array.uint8-array.js"),r("core-js/modules/es.typed-array.copy-within.js"),r("core-js/modules/es.typed-array.every.js"),r("core-js/modules/es.typed-array.fill.js"),r("core-js/modules/es.typed-array.filter.js"),r("core-js/modules/es.typed-array.find.js"),r("core-js/modules/es.typed-array.find-index.js"),r("core-js/modules/es.typed-array.for-each.js"),r("core-js/modules/es.typed-array.includes.js"),r("core-js/modules/es.typed-array.index-of.js"),r("core-js/modules/es.typed-array.iterator.js"),r("core-js/modules/es.typed-array.join.js"),r("core-js/modules/es.typed-array.last-index-of.js"),r("core-js/modules/es.typed-array.map.js"),r("core-js/modules/es.typed-array.reduce.js"),r("core-js/modules/es.typed-array.reduce-right.js"),r("core-js/modules/es.typed-array.reverse.js"),r("core-js/modules/es.typed-array.set.js"),r("core-js/modules/es.typed-array.slice.js"),r("core-js/modules/es.typed-array.some.js"),r("core-js/modules/es.typed-array.sort.js"),r("core-js/modules/es.typed-array.subarray.js"),r("core-js/modules/es.typed-array.to-locale-string.js"),r("core-js/modules/es.typed-array.to-string.js"),r("core-js/modules/es.array.slice.js");var a=r("./capability"),e=r("inherits"),c=r("readable-stream"),u=n.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},t=n.IncomingMessage=function(e,t,r,n){var i=this;if(c.Readable.call(i),i._mode=r,i.headers={},i.rawHeaders=[],i.trailers={},i.rawTrailers=[],i.on("end",function(){l.nextTick(function(){i.emit("close")})}),"fetch"===r){r=function t(){s.read().then(function(e){i._destroyed||(e.done?(f.clearTimeout(n),i.push(null)):(i.push(new p(e.value)),t()))}).catch(function(e){f.clearTimeout(n),i._destroyed||i.emit("error",e)})};if(i._fetchResponse=t,i.url=t.url,i.statusCode=t.status,i.statusMessage=t.statusText,t.headers.forEach(function(e,t){i.headers[t.toLowerCase()]=e,i.rawHeaders.push(t,e)}),a.writableStream){var o=new WritableStream({write:function(r){return new Promise(function(e,t){i._destroyed?t():i.push(new p(r))?e():i._resumeFetch=e})},close:function(){f.clearTimeout(n),i._destroyed||i.push(null)},abort:function(e){i._destroyed||i.emit("error",e)}});try{return void t.body.pipeTo(o).catch(function(e){f.clearTimeout(n),i._destroyed||i.emit("error",e)})}catch(e){}}var s=t.body.getReader();r()}else i._xhr=e,i._pos=0,i.url=e.responseURL,i.statusCode=e.status,i.statusMessage=e.statusText,e.getAllResponseHeaders().split(/\r?\n/).forEach(function(e){var t,e=e.match(/^([^:]+):\s*(.*)/);e&&("set-cookie"===(t=e[1].toLowerCase())?(void 0===i.headers[t]&&(i.headers[t]=[]),i.headers[t].push(e[2])):void 0!==i.headers[t]?i.headers[t]+=", "+e[2]:i.headers[t]=e[2],i.rawHeaders.push(e[1],e[2]))}),i._charset="x-user-defined",a.overrideMimeType||((o=i.rawHeaders["mime-type"])&&(t=o.match(/;\s*charset=([^;])(;|$)/))&&(i._charset=t[1].toLowerCase()),i._charset)||(i._charset="utf-8")};e(t,c.Readable),t.prototype._read=function(){var e=this._resumeFetch;e&&(this._resumeFetch=null,e())},t.prototype._onXHRProgress=function(){var t=this,e=t._xhr,r=null;switch(t._mode){case"text:vbarray":if(e.readyState!==u.DONE)break;try{r=new f.VBArray(e.responseBody).toArray()}catch(e){}if(null!==r){t.push(new p(r));break}case"text":try{r=e.responseText}catch(e){t._mode="text:vbarray";break}if(r.length>t._pos){var n=r.substr(t._pos);if("x-user-defined"===t._charset){for(var i=new p(n.length),o=0;o<n.length;o++)i[o]=255&n.charCodeAt(o);t.push(i)}else t.push(n,t._charset);t._pos=r.length}break;case"arraybuffer":e.readyState===u.DONE&&e.response&&(r=e.response,t.push(new p(new Uint8Array(r))));break;case"moz-chunked-arraybuffer":r=e.response,e.readyState===u.LOADING&&r&&t.push(new p(new Uint8Array(r)));break;case"ms-stream":var s,r=e.response;e.readyState===u.LOADING&&((s=new f.MSStreamReader).onprogress=function(){s.result.byteLength>t._pos&&(t.push(new p(new Uint8Array(s.result.slice(t._pos)))),t._pos=s.result.byteLength)},s.onload=function(){t.push(null)},s.readAsArrayBuffer(r))}t._xhr.readyState===u.DONE&&"ms-stream"!==t._mode&&t.push(null)}}.call(this)}.call(this,r("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},r("buffer").Buffer)},{"./capability":540,_process:538,buffer:103,"core-js/modules/es.array-buffer.slice.js":309,"core-js/modules/es.array.iterator.js":316,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.match.js":344,"core-js/modules/es.string.split.js":347,"core-js/modules/es.typed-array.copy-within.js":356,"core-js/modules/es.typed-array.every.js":357,"core-js/modules/es.typed-array.fill.js":358,"core-js/modules/es.typed-array.filter.js":359,"core-js/modules/es.typed-array.find-index.js":360,"core-js/modules/es.typed-array.find.js":361,"core-js/modules/es.typed-array.for-each.js":362,"core-js/modules/es.typed-array.includes.js":363,"core-js/modules/es.typed-array.index-of.js":364,"core-js/modules/es.typed-array.iterator.js":365,"core-js/modules/es.typed-array.join.js":366,"core-js/modules/es.typed-array.last-index-of.js":367,"core-js/modules/es.typed-array.map.js":368,"core-js/modules/es.typed-array.reduce-right.js":369,"core-js/modules/es.typed-array.reduce.js":370,"core-js/modules/es.typed-array.reverse.js":371,"core-js/modules/es.typed-array.set.js":372,"core-js/modules/es.typed-array.slice.js":373,"core-js/modules/es.typed-array.some.js":374,"core-js/modules/es.typed-array.sort.js":375,"core-js/modules/es.typed-array.subarray.js":376,"core-js/modules/es.typed-array.to-locale-string.js":377,"core-js/modules/es.typed-array.to-string.js":378,"core-js/modules/es.typed-array.uint8-array.js":379,"core-js/modules/web.dom-collections.for-each.js":380,inherits:407,"readable-stream":463}],543:[function(e,t,r){"use strict";var S=e("@babel/runtime/helpers/interopRequireDefault")(e("@babel/runtime/helpers/typeof")),k=(e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.string.search.js"),e("core-js/modules/es.array.concat.js"),e("core-js/modules/es.string.split.js"),e("core-js/modules/es.string.replace.js"),e("core-js/modules/es.array.join.js"),e("core-js/modules/es.string.trim.js"),e("core-js/modules/es.string.match.js"),e("core-js/modules/es.array.slice.js"),e("core-js/modules/es.object.keys.js"),e("core-js/modules/es.array.splice.js"),e("punycode")),_=e("./util");function w(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}r.parse=i,r.resolve=function(e,t){return i(e,!1,!0).resolve(t)},r.resolveObject=function(e,t){return e?i(e,!1,!0).resolveObject(t):t},r.format=function(e){_.isString(e)&&(e=i(e));return e instanceof w?e.format():w.prototype.format.call(e)},r.Url=w;var T=/^([a-z0-9.+-]+:)/i,n=/:[0-9]*$/,E=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,r=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),O=["'"].concat(r),A=["%","/","?",";","#"].concat(O),I=["/","?","#"],D=/^[+a-z0-9A-Z_-]{0,63}$/,R=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,C={javascript:!0,"javascript:":!0},M={javascript:!0,"javascript:":!0},P={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},N=e("querystring");function i(e,t,r){var n;return e&&_.isObject(e)&&e instanceof w?e:((n=new w).parse(e,t,r),n)}w.prototype.parse=function(e,t,r){if(!_.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+(0,S.default)(e));var n=e.indexOf("?"),n=-1!==n&&n<e.indexOf("#")?"?":"#",i=e.split(n);i[0]=i[0].replace(/\\/g,"/");var o=(o=e=i.join(n)).trim();if(!r&&1===e.split("#").length){i=E.exec(o);if(i)return this.path=o,this.href=o,this.pathname=i[1],i[2]?(this.search=i[2],this.query=t?N.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var s,n=T.exec(o);if(n&&(s=(n=n[0]).toLowerCase(),this.protocol=s,o=o.substr(n.length)),!(r||n||o.match(/^\/\/[^@\/]+@[^@\/]+/))||!(j="//"===o.substr(0,2))||n&&M[n]||(o=o.substr(2),this.slashes=!0),!M[n]&&(j||n&&!P[n])){for(var a=-1,c=0;c<I.length;c++)-1!==(u=o.indexOf(I[c]))&&(-1===a||u<a)&&(a=u);-1!==(e=-1===a?o.lastIndexOf("@"):o.lastIndexOf("@",a))&&(i=o.slice(0,e),o=o.slice(e+1),this.auth=decodeURIComponent(i));for(var u,a=-1,c=0;c<A.length;c++)-1!==(u=o.indexOf(A[c]))&&(-1===a||u<a)&&(a=u);-1===a&&(a=o.length),this.host=o.slice(0,a),o=o.slice(a),this.parseHost(),this.hostname=this.hostname||"";r="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!r)for(var l=this.hostname.split("."),c=0,f=l.length;c<f;c++){var p=l[c];if(p&&!p.match(D)){for(var d="",h=0,y=p.length;h<y;h++)127<p.charCodeAt(h)?d+="x":d+=p[h];if(!d.match(D)){var m=l.slice(0,c),b=l.slice(c+1),g=p.match(R);g&&(m.push(g[1]),b.unshift(g[2])),b.length&&(o="/"+b.join(".")+o),this.hostname=m.join(".");break}}}255<this.hostname.length?this.hostname="":this.hostname=this.hostname.toLowerCase(),r||(this.hostname=k.toASCII(this.hostname));var v=this.port?":"+this.port:"",j=this.hostname||"";this.host=j+v,this.href+=this.host,r&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==o[0])&&(o="/"+o)}if(!C[s])for(c=0,f=O.length;c<f;c++){var w,x=O[c];-1!==o.indexOf(x)&&((w=encodeURIComponent(x))===x&&(w=escape(x)),o=o.split(x).join(w))}n=o.indexOf("#"),-1!==n&&(this.hash=o.substr(n),o=o.slice(0,n)),e=o.indexOf("?");return-1!==e?(this.search=o.substr(e),this.query=o.substr(e+1),t&&(this.query=N.parse(this.query)),o=o.slice(0,e)):t&&(this.search="",this.query={}),o&&(this.pathname=o),P[s]&&this.hostname&&!this.pathname&&(this.pathname="/"),(this.pathname||this.search)&&(v=this.pathname||"",i=this.search||"",this.path=v+i),this.href=this.format(),this},w.prototype.format=function(){var e=this.auth||"",t=(e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@"),this.protocol||""),r=this.pathname||"",n=this.hash||"",i=!1,o="",e=(this.host?i=e+this.host:this.hostname&&(i=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port)&&(i+=":"+this.port),this.query&&_.isObject(this.query)&&Object.keys(this.query).length&&(o=N.stringify(this.query)),this.search||o&&"?"+o||"");return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||P[t])&&!1!==i?(i="//"+(i||""),r&&"/"!==r.charAt(0)&&(r="/"+r)):i=i||"",n&&"#"!==n.charAt(0)&&(n="#"+n),e&&"?"!==e.charAt(0)&&(e="?"+e),t+i+(r=r.replace(/[?#]/g,function(e){return encodeURIComponent(e)}))+(e=e.replace("#","%23"))+n},w.prototype.resolve=function(e){return this.resolveObject(i(e,!1,!0)).format()},w.prototype.resolveObject=function(e){_.isString(e)&&((p=new w).parse(e,!1,!0),e=p);for(var t=new w,r=Object.keys(this),n=0;n<r.length;n++){var i=r[n];t[i]=this[i]}if(t.hash=e.hash,""!==e.href)if(e.slashes&&!e.protocol){for(var o=Object.keys(e),s=0;s<o.length;s++){var a=o[s];"protocol"!==a&&(t[a]=e[a])}P[t.protocol]&&t.hostname&&!t.pathname&&(t.path=t.pathname="/")}else if(e.protocol&&e.protocol!==t.protocol)if(P[e.protocol]){if(t.protocol=e.protocol,e.host||M[e.protocol])t.pathname=e.pathname;else{for(var c=(e.pathname||"").split("/");c.length&&!(e.host=c.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==c[0]&&c.unshift(""),c.length<2&&c.unshift(""),t.pathname=c.join("/")}t.search=e.search,t.query=e.query,t.host=e.host||"",t.auth=e.auth,t.hostname=e.hostname||e.host,t.port=e.port,(t.pathname||t.search)&&(p=t.pathname||"",d=t.search||"",t.path=p+d),t.slashes=t.slashes||e.slashes}else for(var u=Object.keys(e),l=0;l<u.length;l++){var f=u[l];t[f]=e[f]}else{var p=t.pathname&&"/"===t.pathname.charAt(0),d=e.host||e.pathname&&"/"===e.pathname.charAt(0),p=d||p||t.host&&e.pathname,h=p,y=t.pathname&&t.pathname.split("/")||[],c=e.pathname&&e.pathname.split("/")||[],m=t.protocol&&!P[t.protocol];if(m&&(t.hostname="",t.port=null,t.host&&(""===y[0]?y[0]=t.host:y.unshift(t.host)),t.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===c[0]?c[0]=e.host:c.unshift(e.host)),e.host=null),p=p&&(""===c[0]||""===y[0])),d)t.host=(e.host||""===e.host?e:t).host,t.hostname=(e.hostname||""===e.hostname?e:t).hostname,t.search=e.search,t.query=e.query,y=c;else if(c.length)(y=y||[]).pop(),y=y.concat(c),t.search=e.search,t.query=e.query;else if(!_.isNullOrUndefined(e.search))return m&&(t.hostname=t.host=y.shift(),j=!!(t.host&&0<t.host.indexOf("@"))&&t.host.split("@"))&&(t.auth=j.shift(),t.host=t.hostname=j.shift()),t.search=e.search,t.query=e.query,_.isNull(t.pathname)&&_.isNull(t.search)||(t.path=(t.pathname||"")+(t.search||"")),t.href=t.format(),t;if(y.length){for(var b=y.slice(-1)[0],d=(t.host||e.host||1<y.length)&&("."===b||".."===b)||""===b,g=0,v=y.length;0<=v;v--)"."===(b=y[v])?y.splice(v,1):".."===b?(y.splice(v,1),g++):g&&(y.splice(v,1),g--);if(!p&&!h)for(;g--;)y.unshift("..");!p||""===y[0]||y[0]&&"/"===y[0].charAt(0)||y.unshift(""),d&&"/"!==y.join("/").substr(-1)&&y.push("");var j,h=""===y[0]||y[0]&&"/"===y[0].charAt(0);m&&(t.hostname=t.host=!h&&y.length?y.shift():"",j=!!(t.host&&0<t.host.indexOf("@"))&&t.host.split("@"))&&(t.auth=j.shift(),t.host=t.hostname=j.shift()),(p=p||t.host&&y.length)&&!h&&y.unshift(""),y.length?t.pathname=y.join("/"):(t.pathname=null,t.path=null),_.isNull(t.pathname)&&_.isNull(t.search)||(t.path=(t.pathname||"")+(t.search||"")),t.auth=e.auth||t.auth,t.slashes=t.slashes||e.slashes}else t.pathname=null,t.search?t.path="/"+t.search:t.path=null}return t.href=t.format(),t},w.prototype.parseHost=function(){var e=this.host,t=n.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{"./util":544,"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/typeof":91,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.array.join.js":317,"core-js/modules/es.array.slice.js":319,"core-js/modules/es.array.splice.js":321,"core-js/modules/es.object.keys.js":328,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.match.js":344,"core-js/modules/es.string.replace.js":345,"core-js/modules/es.string.search.js":346,"core-js/modules/es.string.split.js":347,"core-js/modules/es.string.trim.js":349,punycode:443,querystring:451}],544:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault")(e("@babel/runtime/helpers/typeof"));t.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"===(0,n.default)(e)&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/typeof":91}],545:[function(e,t,r){"use strict";e("core-js/modules/es.number.constructor.js"),r.encodeURIComponent=function(t){try{return encodeURIComponent(t)}catch(e){return t}},r.escape=e("escape-html"),r.timestamp=function(e){var t;return e?("string"==typeof(t=e)&&(t=Number(t)),10===String(e).length&&(t*=1e3),new Date(t)):Math.round(Date.now()/1e3)}},{"core-js/modules/es.number.constructor.js":324,"escape-html":385}],546:[function(e,t,J){!function($,Y){!function(){"use strict";var L=e("@babel/runtime/helpers/interopRequireDefault")(e("@babel/runtime/helpers/typeof")),B=(e("core-js/modules/es.string.trim.js"),e("core-js/modules/es.object.to-string.js"),e("core-js/modules/es.promise.js"),e("core-js/modules/es.regexp.exec.js"),e("core-js/modules/es.function.name.js"),e("core-js/modules/es.array.concat.js"),e("util")),q=e("url"),F=e("http"),U=e("https"),W=e("debug")("urllib"),G=e("humanize-ms"),V=0,z=Math.pow(2,31)-10,X=/^https?:\/\//i;function H(e,t){return void 0===e?t:e}J.TIMEOUTS=[G("300s"),G("300s")];var K=["json","text"];J.request=function(r,o,e){return 2===arguments.length&&"function"==typeof o&&(e=o,o=null),"function"==typeof e?J.requestWithCallback(r,o,e):new Promise(function(e,t){var n,i;J.requestWithCallback(r,o,(n=e,i=t,function(e,t,r){if(e)return i(e);n({data:t,status:r.statusCode,headers:r.headers,res:r})}))})},J.requestWithCallback=function(a,c,u){if(!a||"string"!=typeof a&&"object"!==(0,L.default)(a))throw t=B.format("expect request url to be a string or a http request options, but got %j",a),new Error(t);2===arguments.length&&"function"==typeof c&&(u=c,c=null),z<=V&&(V=0);var e,l=++V,f=((c=c||{}).requestUrls=c.requestUrls||[],{requestId:l,url:a,args:c,ctx:c.ctx}),p=(c.emitter&&c.emitter.emit("request",f),c.timeout=c.timeout||J.TIMEOUTS,c.maxRedirects=c.maxRedirects||10,c.streaming=c.streaming||c.customResponse,Date.now()),t="string"==typeof a?(X.test(a)||(a="https://"+a),q.parse(a)):a,r=(c.type||c.method||t.method||"GET").toUpperCase(),n=t.port||80,i=F,d=H(c.agent,J.agent),N=c.fixJSONCtlChars,h=("https:"===t.protocol&&(i=U,d=H(c.httpsAgent,J.httpsAgent),t.port||(n=443)),{host:t.hostname||t.host||"localhost",path:t.path||"/",method:r,port:n,agent:d,headers:c.headers||{},lookup:c.lookup}),n=(Array.isArray(c.timeout)?h.requestTimeout=c.timeout[c.timeout.length-1]:void 0!==c.timeout&&(h.requestTimeout=c.timeout),c.auth||t.auth),n=(n&&(h.auth=n),c.content||c.data),o="GET"===r||"HEAD"===r||c.dataAsQueryString,y=(c.content||n&&"string"!=typeof n&&!Y.isBuffer(n)&&(n=(!o&&((e=h.headers["Content-Type"]||h.headers["content-type"])||(e="json"===c.contentType?"application/json":"application/x-www-form-urlencoded",h.headers["Content-Type"]=e),"application/json"===((e=e)?e.split(";")[0].trim().toLowerCase():""))?JSON:c.nestedQuerystring?qs:querystring).stringify(n)),o&&n&&(h.path+=(t.query?"&":"?")+n,n=null),0),s=(n&&(e=n.length,Y.isBuffer(n)||(e=Y.byteLength(n)),y=h.headers["Content-Length"]=e),"json"===c.dataType&&(h.headers.Accept="application/json"),"function"==typeof c.beforeRequest&&c.beforeRequest(h),null),m=null,b=null,g=!1,v=!1,j=0,w=-1,x=!1,S="",k="",_=null;function T(){s&&(clearTimeout(s),s=null)}function E(){m&&(clearTimeout(m),m=null)}function O(e,t,r){var n,i,o,s;E(),u?(n=u,u=null,i={},r&&(w=r.statusCode,i=r.headers),o=Date.now()-p,_&&(_.contentDownload=o),W("[%sms] done, %s bytes HTTP %s %s %s %s, keepAliveSocket: %s, timing: %j",o,j,w,h.method,h.host,h.path,v,_),o={status:w,statusCode:w,headers:i,size:j,aborted:x,rt:o,keepAliveSocket:v,data:t,requestUrls:c.requestUrls,timing:_,remoteAddress:S,remotePort:k},e&&(s="",d&&"function"==typeof d.getCurrentStatus&&(s=", agent status: "+JSON.stringify(d.getCurrentStatus())),e.message+=", "+h.method+" "+a+" "+w+" (connected: "+g+", keepalive socket: "+v+s+")\nheaders: "+JSON.stringify(i),e.data=t,e.path=h.path,e.status=w,e.headers=i,e.res=o),n(e,t,c.streaming?r:o),c.emitter&&(f.url=a,f.socket=R&&R.connection,f.options=h,f.size=y,c.emitter.emit("response",{requestId:l,error:e,ctx:c.ctx,req:f,res:o}))):(console.warn("[urllib:warn] [%s] [%s] [worker:%s] %s %s callback twice!!!",Date(),l,$.pid,h.method,a),e&&console.warn("[urllib:warn] [%s] [%s] [worker:%s] %s: %s\nstack: %s",Date(),l,$.pid,e.name,e.message,e.stack))}function A(e){var t=null;if(c.followRedirect&&statuses.redirect[e.statusCode]){c._followRedirectCount=(c._followRedirectCount||0)+1;var r,n=e.headers.location;if(n){if(!(c._followRedirectCount>c.maxRedirects))return r=c.formatRedirectUrl?c.formatRedirectUrl(a,n):q.resolve(a,n),W("Request#%d %s: `redirected` from %s to %s",l,h.path,a,r),E(),c.headers&&c.headers.Host&&X.test(n)&&(c.headers.Host=null),n=u,u=null,J.requestWithCallback(r,c,n),{redirect:!0,error:null};(t=new Error("Exceeded maxRedirects. Probably stuck in a redirect loop "+a)).name="MaxRedirectError"}else(t=new Error("Got statusCode "+e.statusCode+" but cannot resolve next location from headers")).name="FollowRedirectError"}return{redirect:!1,error:t}}c.timing&&(_={queuing:0,dnslookup:0,connected:0,requestSent:0,waiting:0,contentDownload:0}),!c.gzip||h.headers["Accept-Encoding"]||h.headers["accept-encoding"]||(h.headers["Accept-Encoding"]="gzip");var I,D,R,C=c.writeStream;function M(){W("Response timer ticking, timeout: %d",D),m=setTimeout(function(){m=null;var e="Response timeout for "+D+"ms";(b=new Error(e)).name="ResponseTimeoutError",b.requestId=l,W("ResponseTimeout: Request#%d %s %s: %s, connected: %s",l,a,b.name,e,g),P()},D)}W("Request#%d %s %s with headers %j, options.path: %s",l,r,a,h.headers,h.path),c.requestUrls.push(a),Array.isArray(c.timeout)?(I=G(c.timeout[0]),D=G(c.timeout[1])):I=D=G(c.timeout),W("ConnectTimeout: %d, ResponseTimeout: %d",I,D),h.mode=c.mode||"";try{R=i.request(h,function(i){var e,t;return _&&(_.waiting=Date.now()-p),W("Request#%d %s `req response` event emit: status %d, headers: %j",l,a,i.statusCode,i.headers),c.streaming?(e=A(i)).redirect?void i.resume():e.error?(i.resume(),O(e.error,null,i)):O(null,null,i):(i.on("close",function(){W("Request#%d %s: `res close` event emit, total size %d",l,a,j)}),i.on("error",function(){W("Request#%d %s: `res error` event emit, total size %d",l,a,j)}),i.on("aborted",function(){x=!0,W("Request#%d %s: `res aborted` event emit, total size %d",l,a,j)}),C?(e=A(i)).redirect?void i.resume():e.error?(i.resume(),C.end(),O(e.error,null,i)):(!1===c.consumeWriteStream?i.on("end",O.bind(null,null,null,i)):C.on("close",function(){W("Request#%d %s: writeStream close event emitted",l,a),O(b||null,null,i)}),i.pipe(C)):(t=[],i.on("data",function(e){W("Request#%d %s: `res data` event emit, size %d",l,a,e.length),j+=e.length,t.push(e)}),void i.on("end",function(){var e,n=Y.concat(t,j);return W("Request#%d %s: `res end` event emit, total size %d, _dumped: %s",l,a,j,i._dumped),b?O(b,n,i):(e=A(i)).error?O(e.error,n,i):void(e.redirect||function(e,t,r){if(e)return O(e,n,i);if(!r&&0<=K.indexOf(c.dataType)){try{t=decodeBodyByCharset(t,i)}catch(e){return W("decodeBodyByCharset error: %s",e),O(null,t,i)}"json"===c.dataType&&(0===j?t=null:(r=parseJSON(t,N)).error?e=r.error:t=r.data)}x&&W("Request#%d %s: Remote socket was terminated before `response.end()` was called",l,a),O(e,t,i)}(null,n,i.headers["content-encoding"]))})))})}catch(e){return O(e)}function P(){W("Request#%d %s abort, connected: %s",l,a,g),R.socket||(b.noSocket=!0,O(b)),R.abort()}return"undefined"==typeof window?(W("Connect timer ticking, timeout: %d",I),s=setTimeout(function(){s=null,-1===w&&(w=-2);var e="Connect timeout for "+I+"ms",t="ConnectionTimeoutError";R.socket||(t="SocketAssignTimeoutError",e+=", working sockets is full"),(b=new Error(e)).name=t,b.requestId=l,W("ConnectTimeout: Request#%d %s %s: %s, connected: %s",l,a,b.name,e,g),P()},I)):R.on("requestTimeout",function(){-1===w&&(w=-2);(b=new Error("Connect timeout for "+I+"ms")).name="ConnectionTimeoutError",b.requestId=l,P()}),_&&R.on("finish",function(){_.requestSent=Date.now()-p}),R.once("socket",function(e){_&&(_.queuing=Date.now()-p);var t=e.readyState;"opening"===t?(e.once("lookup",function(e,t,r){W("Request#%d %s lookup: %s, %s, %s",l,a,e,t,r),_&&(_.dnslookup=Date.now()-p),t&&(S=t)}),e.once("connect",function(){_&&(_.connected=Date.now()-p),T(),M(),W("Request#%d %s new socket connected",l,a),g=!0,S=S||e.remoteAddress,k=e.remotePort})):(W("Request#%d %s reuse socket connected, readyState: %s",l,a,t),v=g=!0,S=S||e.remoteAddress,k=e.remotePort,T(),M())}),R.on("error",function(e){"Error"!==e.name&&"TypeError"!==e.name||(e.name=g?"ResponseError":"RequestError"),e.message+=' (req "error")',W("Request#%d %s `req error` event emit, %s: %s",l,a,e.name,e.message),O(b||e)}),C&&C.once("error",function(e){e.message+=' (writeStream "error")',W("Request#%d %s `writeStream error` event emit, %s: %s",l,a,(b=e).name,e.message),P()}),c.stream?(c.stream.pipe(R),c.stream.once("error",function(e){e.message+=' (stream "error")',W("Request#%d %s `readStream error` event emit, %s: %s",l,a,(b=e).name,e.message),P()})):R.end(n),R.requestId=l,R}}.call(this)}.call(this,e("_process"),e("buffer").Buffer)},{"@babel/runtime/helpers/interopRequireDefault":86,"@babel/runtime/helpers/typeof":91,_process:538,buffer:103,"core-js/modules/es.array.concat.js":310,"core-js/modules/es.function.name.js":322,"core-js/modules/es.object.to-string.js":329,"core-js/modules/es.promise.js":333,"core-js/modules/es.regexp.exec.js":338,"core-js/modules/es.string.trim.js":349,debug:536,http:539,https:398,"humanize-ms":399,url:543,util:489}]},{},[1])(1)});})(window) diff --git a/node_modules/ali-oss/lib/browser.js b/node_modules/ali-oss/lib/browser.js new file mode 100644 index 0000000..332b733 --- /dev/null +++ b/node_modules/ali-oss/lib/browser.js @@ -0,0 +1,6 @@ +const OSS = require('./browser/client'); +OSS.Buffer = require('buffer').Buffer; +OSS.urllib = require('../shims/xhr'); +OSS.version = require('./browser/version').version; + +module.exports = OSS; diff --git a/node_modules/ali-oss/lib/browser/bucket.js b/node_modules/ali-oss/lib/browser/bucket.js new file mode 100644 index 0000000..6c26092 --- /dev/null +++ b/node_modules/ali-oss/lib/browser/bucket.js @@ -0,0 +1,296 @@ +const assert = require('assert'); +const { checkBucketName: _checkBucketName } = require('../common/utils/checkBucketName'); + +const proto = exports; + +function isArray(arr) { + if (Array.isArray) return Array.isArray(arr); + return Object.prototype.toString.call(arr) === '[object Array]'; +} + +function toArray(obj) { + if (!obj) return []; + if (isArray(obj)) return obj; + return [obj]; +} + +/** + * Bucket opertaions + */ + +// TODO: OSS server currently do not support CORS requests for bucket operations +// proto.listBuckets = function* listBuckets(query, options) { +// // prefix, marker, max-keys +// var result = yield this.request({ +// method: 'GET', +// query: query, +// timeout: options && options.timeout, +// ctx: options && options.ctx, +// }); +// +// if (result.status === 200) { +// var data = yield this.parseXML(result.data); +// var buckets = data.Buckets || null; +// if (buckets) { +// if (buckets.Bucket) { +// buckets = buckets.Bucket; +// } +// if (!isArray(buckets)) { +// buckets = [buckets]; +// } +// buckets = buckets.map(function (item) { +// return { +// name: item.Name, +// region: item.Location, +// creationDate: item.CreationDate, +// }; +// }); +// } +// return { +// buckets: buckets, +// owner: { +// id: data.Owner.ID, +// displayName: data.Owner.DisplayName, +// }, +// isTruncated: data.IsTruncated === 'true', +// nextMarker: data.NextMarker || null, +// res: result.res +// }; +// } +// +// throw yield this.requestError(result); +// }; + +proto.useBucket = function useBucket(name) { + _checkBucketName(name); + this.options.bucket = name; + return this; +}; + +proto.setBucket = function useBucket(name) { + _checkBucketName(name); + this.options.bucket = name; + return this; +}; + +proto.getBucket = function getBucket() { + return this.options.bucket; +}; + +proto.deleteBucket = async function deleteBucket(name, options) { + const params = this._bucketRequestParams('DELETE', name, '', options); + const result = await this.request(params); + if (result.status === 200 || result.status === 204) { + return { + res: result.res + }; + } + throw await this.requestError(result); +}; + +// acl + +proto.putBucketACL = async function putBucketACL(name, acl, options) { + const params = this._bucketRequestParams('PUT', name, 'acl', options); + params.headers = { + 'x-oss-acl': acl + }; + params.successStatuses = [200]; + const result = await this.request(params); + return { + bucket: (result.headers.location && result.headers.location.substring(1)) || null, + res: result.res + }; +}; + +proto.getBucketACL = async function getBucketACL(name, options) { + const params = this._bucketRequestParams('GET', name, 'acl', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + return { + acl: result.data.AccessControlList.Grant, + owner: { + id: result.data.Owner.ID, + displayName: result.data.Owner.DisplayName + }, + res: result.res + }; +}; + +// logging + +proto.putBucketLogging = async function putBucketLogging(name, prefix, options) { + const params = this._bucketRequestParams('PUT', name, 'logging', options); + let xml = `${'<?xml version="1.0" encoding="UTF-8"?>\n<BucketLoggingStatus>\n<LoggingEnabled>\n<TargetBucket>'}${name}</TargetBucket>\n`; + if (prefix) { + xml += `<TargetPrefix>${prefix}</TargetPrefix>\n`; + } + xml += '</LoggingEnabled>\n</BucketLoggingStatus>'; + params.content = xml; + params.mime = 'xml'; + params.successStatuses = [200]; + const result = await this.request(params); + return { + res: result.res + }; +}; + +proto.getBucketLogging = async function getBucketLogging(name, options) { + const params = this._bucketRequestParams('GET', name, 'logging', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + const enable = result.data.LoggingEnabled; + return { + enable: !!enable, + prefix: (enable && enable.TargetPrefix) || null, + res: result.res + }; +}; + +proto.deleteBucketLogging = async function deleteBucketLogging(name, options) { + const params = this._bucketRequestParams('DELETE', name, 'logging', options); + params.successStatuses = [204, 200]; + const result = await this.request(params); + return { + res: result.res + }; +}; + +proto.putBucketCORS = async function putBucketCORS(name, rules, options) { + rules = rules || []; + assert(rules.length, 'rules is required'); + rules.forEach(rule => { + assert(rule.allowedOrigin, 'allowedOrigin is required'); + assert(rule.allowedMethod, 'allowedMethod is required'); + }); + + const params = this._bucketRequestParams('PUT', name, 'cors', options); + let xml = '<?xml version="1.0" encoding="UTF-8"?>\n<CORSConfiguration>'; + const parseOrigin = val => { + xml += `<AllowedOrigin>${val}</AllowedOrigin>`; + }; + const parseMethod = val => { + xml += `<AllowedMethod>${val}</AllowedMethod>`; + }; + const parseHeader = val => { + xml += `<AllowedHeader>${val}</AllowedHeader>`; + }; + const parseExposeHeader = val => { + xml += `<ExposeHeader>${val}</ExposeHeader>`; + }; + for (let i = 0, l = rules.length; i < l; i++) { + const rule = rules[i]; + xml += '<CORSRule>'; + + toArray(rule.allowedOrigin).forEach(parseOrigin); + toArray(rule.allowedMethod).forEach(parseMethod); + toArray(rule.allowedHeader).forEach(parseHeader); + toArray(rule.exposeHeader).forEach(parseExposeHeader); + if (rule.maxAgeSeconds) { + xml += `<MaxAgeSeconds>${rule.maxAgeSeconds}</MaxAgeSeconds>`; + } + xml += '</CORSRule>'; + } + xml += '</CORSConfiguration>'; + params.content = xml; + params.mime = 'xml'; + params.successStatuses = [200]; + const result = await this.request(params); + return { + res: result.res + }; +}; + +proto.getBucketCORS = async function getBucketCORS(name, options) { + const params = this._bucketRequestParams('GET', name, 'cors', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + const rules = []; + if (result.data && result.data.CORSRule) { + let { CORSRule } = result.data; + if (!isArray(CORSRule)) CORSRule = [CORSRule]; + CORSRule.forEach(rule => { + const r = {}; + Object.keys(rule).forEach(key => { + r[key.slice(0, 1).toLowerCase() + key.slice(1, key.length)] = rule[key]; + }); + rules.push(r); + }); + } + return { + rules, + res: result.res + }; +}; + +proto.deleteBucketCORS = async function deleteBucketCORS(name, options) { + const params = this._bucketRequestParams('DELETE', name, 'cors', options); + params.successStatuses = [204]; + const result = await this.request(params); + return { + res: result.res + }; +}; + +// referer + +proto.putBucketReferer = async function putBucketReferer(name, allowEmpty, referers, options) { + const params = this._bucketRequestParams('PUT', name, 'referer', options); + let xml = '<?xml version="1.0" encoding="UTF-8"?>\n<RefererConfiguration>\n'; + xml += ` <AllowEmptyReferer>${allowEmpty ? 'true' : 'false'}</AllowEmptyReferer>\n`; + if (referers && referers.length > 0) { + xml += ' <RefererList>\n'; + for (let i = 0; i < referers.length; i++) { + xml += ` <Referer>${referers[i]}</Referer>\n`; + } + xml += ' </RefererList>\n'; + } else { + xml += ' <RefererList />\n'; + } + xml += '</RefererConfiguration>'; + params.content = xml; + params.mime = 'xml'; + params.successStatuses = [200]; + const result = await this.request(params); + return { + res: result.res + }; +}; + +proto.getBucketReferer = async function getBucketReferer(name, options) { + const params = this._bucketRequestParams('GET', name, 'referer', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + let referers = result.data.RefererList.Referer || null; + if (referers) { + if (!isArray(referers)) { + referers = [referers]; + } + } + return { + allowEmpty: result.data.AllowEmptyReferer === 'true', + referers, + res: result.res + }; +}; + +proto.deleteBucketReferer = async function deleteBucketReferer(name, options) { + return await this.putBucketReferer(name, true, null, options); +}; + +// private apis + +proto._bucketRequestParams = function _bucketRequestParams(method, bucket, subres, options) { + return { + method, + bucket, + subres, + additionalHeaders: options && options.additionalHeaders, + timeout: options && options.timeout, + ctx: options && options.ctx + }; +}; diff --git a/node_modules/ali-oss/lib/browser/client.js b/node_modules/ali-oss/lib/browser/client.js new file mode 100644 index 0000000..6026a5f --- /dev/null +++ b/node_modules/ali-oss/lib/browser/client.js @@ -0,0 +1,464 @@ +const debug = require('debug')('ali-oss'); +const xml = require('xml2js'); +const AgentKeepalive = require('agentkeepalive'); +const merge = require('merge-descriptors'); +const platform = require('platform'); +const utility = require('utility'); +const urllib = require('urllib'); +const pkg = require('./version'); +const bowser = require('bowser'); +const signUtils = require('../common/signUtils'); +const _initOptions = require('../common/client/initOptions'); +const { createRequest } = require('../common/utils/createRequest'); +const { encoder } = require('../common/utils/encoder'); +const { getReqUrl } = require('../common/client/getReqUrl'); +const { setSTSToken } = require('../common/utils/setSTSToken'); +const { retry } = require('../common/utils/retry'); +const { isFunction } = require('../common/utils/isFunction'); +const { getStandardRegion } = require('../common/utils/getStandardRegion'); + +const globalHttpAgent = new AgentKeepalive(); + +function _unSupportBrowserTip() { + const { name, version } = platform; + if (name && name.toLowerCase && name.toLowerCase() === 'ie' && version.split('.')[0] < 10) { + // eslint-disable-next-line no-console + console.warn('ali-oss does not support the current browser'); + } +} +// check local web protocol,if https secure default set true , if http secure default set false +function isHttpsWebProtocol() { + // for web worker not use window.location. + // eslint-disable-next-line no-restricted-globals + return location && location.protocol === 'https:'; +} + +function Client(options, ctx) { + _unSupportBrowserTip(); + if (!(this instanceof Client)) { + return new Client(options, ctx); + } + if (options && options.inited) { + this.options = options; + } else { + this.options = Client.initOptions(options); + } + + this.options.cancelFlag = false; // cancel flag: if true need to be cancelled, default false + + // support custom agent and urllib client + if (this.options.urllib) { + this.urllib = this.options.urllib; + } else { + this.urllib = urllib; + this.agent = this.options.agent || globalHttpAgent; + } + this.ctx = ctx; + this.userAgent = this._getUserAgent(); + this.stsTokenFreshTime = new Date(); + + // record the time difference between client and server + this.options.amendTimeSkewed = 0; +} + +/** + * Expose `Client` + */ + +module.exports = Client; + +Client.initOptions = function initOptions(options) { + if (!options.stsToken) { + console.warn( + 'Please use STS Token for safety, see more details at https://help.aliyun.com/document_detail/32077.html' + ); + } + const opts = Object.assign( + { + secure: isHttpsWebProtocol(), + // for browser compatibility disable fetch. + useFetch: false + }, + options + ); + + return _initOptions(opts); +}; + +/** + * prototype + */ + +const proto = Client.prototype; + +// mount debug on proto +proto.debug = debug; + +/** + * Object operations + */ +merge(proto, require('./object')); +/** + * Bucket operations + */ +merge(proto, require('./bucket')); +merge(proto, require('../common/bucket/getBucketWebsite')); +merge(proto, require('../common/bucket/putBucketWebsite')); +merge(proto, require('../common/bucket/deleteBucketWebsite')); + +// lifecycle +merge(proto, require('../common/bucket/getBucketLifecycle')); +merge(proto, require('../common/bucket/putBucketLifecycle')); +merge(proto, require('../common/bucket/deleteBucketLifecycle')); + +// multiversion +merge(proto, require('../common/bucket/putBucketVersioning')); +merge(proto, require('../common/bucket/getBucketVersioning')); + +// inventory +merge(proto, require('../common/bucket/getBucketInventory')); +merge(proto, require('../common/bucket/deleteBucketInventory')); +merge(proto, require('../common/bucket/listBucketInventory')); +merge(proto, require('../common/bucket/putBucketInventory')); + +// worm +merge(proto, require('../common/bucket/abortBucketWorm')); +merge(proto, require('../common/bucket/completeBucketWorm')); +merge(proto, require('../common/bucket/extendBucketWorm')); +merge(proto, require('../common/bucket/getBucketWorm')); +merge(proto, require('../common/bucket/initiateBucketWorm')); + +// multipart upload +merge(proto, require('./managed-upload')); +/** + * common multipart-copy support node and browser + */ +merge(proto, require('../common/multipart-copy')); +/** + * Multipart operations + */ +merge(proto, require('../common/multipart')); + +/** + * Common module parallel + */ +merge(proto, require('../common/parallel')); + +/** + * get OSS signature + * @param {String} stringToSign + * @return {String} the signature + */ +proto.signature = function signature(stringToSign) { + this.debug('authorization stringToSign: %s', stringToSign, 'info'); + + return signUtils.computeSignature(this.options.accessKeySecret, stringToSign, this.options.headerEncoding); +}; + +proto._getReqUrl = getReqUrl; + +/** + * get author header + * + * "Authorization: OSS " + Access Key Id + ":" + Signature + * + * Signature = base64(hmac-sha1(Access Key Secret + "\n" + * + VERB + "\n" + * + CONTENT-MD5 + "\n" + * + CONTENT-TYPE + "\n" + * + DATE + "\n" + * + CanonicalizedOSSHeaders + * + CanonicalizedResource)) + * + * @param {String} method + * @param {String} resource + * @param {Object} header + * @return {String} + * + * @api private + */ + +proto.authorization = function authorization(method, resource, subres, headers) { + const stringToSign = signUtils.buildCanonicalString(method.toUpperCase(), resource, { + headers, + parameters: subres + }); + + return signUtils.authorization( + this.options.accessKeyId, + this.options.accessKeySecret, + stringToSign, + this.options.headerEncoding + ); +}; + +/** + * get authorization header v4 + * + * @param {string} method + * @param {Object} requestParams + * @param {Object} requestParams.headers + * @param {(string|string[]|Object)} [requestParams.queries] + * @param {string} [bucketName] + * @param {string} [objectName] + * @param {string[]} [additionalHeaders] + * @return {string} + * + * @api private + */ +proto.authorizationV4 = function authorizationV4(method, requestParams, bucketName, objectName, additionalHeaders) { + return signUtils.authorizationV4( + this.options.accessKeyId, + this.options.accessKeySecret, + getStandardRegion(this.options.region), + method, + requestParams, + bucketName, + objectName, + additionalHeaders, + this.options.headerEncoding + ); +}; + +/** + * request oss server + * @param {Object} params + * - {String} object + * - {String} bucket + * - {Object} [headers] + * - {Object} [query] + * - {Buffer} [content] + * - {Stream} [stream] + * - {Stream} [writeStream] + * - {String} [mime] + * - {Boolean} [xmlResponse] + * - {Boolean} [customResponse] + * - {Number} [timeout] + * - {Object} [ctx] request context, default is `this.ctx` + * + * @api private + */ + +proto.request = async function (params) { + if (this.options.retryMax) { + return await retry(request.bind(this), this.options.retryMax, { + errorHandler: err => { + const _errHandle = _err => { + if (params.stream) return false; + const statusErr = [-1, -2].includes(_err.status); + const requestErrorRetryHandle = this.options.requestErrorRetryHandle || (() => true); + return statusErr && requestErrorRetryHandle(_err); + }; + if (_errHandle(err)) return true; + return false; + } + })(params); + } else { + return request.call(this, params); + } +}; + +async function request(params) { + if (this.options.stsToken && isFunction(this.options.refreshSTSToken)) { + await setSTSToken.call(this); + } + const reqParams = createRequest.call(this, params); + if (!this.options.useFetch) { + reqParams.params.mode = 'disable-fetch'; + } + let result; + let reqErr; + const useStream = !!params.stream; + try { + result = await this.urllib.request(reqParams.url, reqParams.params); + this.debug( + 'response %s %s, got %s, headers: %j', + params.method, + reqParams.url, + result.status, + result.headers, + 'info' + ); + } catch (err) { + reqErr = err; + } + let err; + if (result && params.successStatuses && params.successStatuses.indexOf(result.status) === -1) { + err = await this.requestError(result); + // not use stream + if (err.code === 'RequestTimeTooSkewed' && !useStream) { + this.options.amendTimeSkewed = +new Date(err.serverTime) - new Date(); + return await this.request(params); + } + err.params = params; + } else if (reqErr) { + err = await this.requestError(reqErr); + } + + if (err) { + throw err; + } + + if (params.xmlResponse) { + const parseData = await this.parseXML(result.data); + result.data = parseData; + } + return result; +} + +proto._getResource = function _getResource(params) { + let resource = '/'; + if (params.bucket) resource += `${params.bucket}/`; + if (params.object) resource += encoder(params.object, this.options.headerEncoding); + + return resource; +}; + +proto._escape = function _escape(name) { + return utility.encodeURIComponent(name).replace(/%2F/g, '/'); +}; + +/* + * Get User-Agent for browser & node.js + * @example + * aliyun-sdk-nodejs/4.1.2 Node.js 5.3.0 on Darwin 64-bit + * aliyun-sdk-js/4.1.2 Safari 9.0 on Apple iPhone(iOS 9.2.1) + * aliyun-sdk-js/4.1.2 Chrome 43.0.2357.134 32-bit on Windows Server 2008 R2 / 7 64-bit + */ + +proto._getUserAgent = function _getUserAgent() { + const agent = process && process.browser ? 'js' : 'nodejs'; + const sdk = `aliyun-sdk-${agent}/${pkg.version}`; + let plat = platform.description; + if (!plat && process) { + plat = `Node.js ${process.version.slice(1)} on ${process.platform} ${process.arch}`; + } + + return this._checkUserAgent(`${sdk} ${plat}`); +}; + +proto._checkUserAgent = function _checkUserAgent(ua) { + const userAgent = ua.replace(/\u03b1/, 'alpha').replace(/\u03b2/, 'beta'); + return userAgent; +}; + +/* + * Check Browser And Version + * @param {String} [name] browser name: like IE, Chrome, Firefox + * @param {String} [version] browser major version: like 10(IE 10.x), 55(Chrome 55.x), 50(Firefox 50.x) + * @return {Bool} true or false + * @api private + */ + +proto.checkBrowserAndVersion = function checkBrowserAndVersion(name, version) { + return bowser.name === name && bowser.version.split('.')[0] === version; +}; + +/** + * thunkify xml.parseString + * @param {String|Buffer} str + * + * @api private + */ + +proto.parseXML = function parseXMLThunk(str) { + return new Promise((resolve, reject) => { + if (Buffer.isBuffer(str)) { + str = str.toString(); + } + xml.parseString( + str, + { + explicitRoot: false, + explicitArray: false + }, + (err, result) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); +}; + +/** + * generater a request error with request response + * @param {Object} result + * + * @api private + */ + +proto.requestError = async function requestError(result) { + let err = null; + const setError = async message => { + let info; + try { + info = (await this.parseXML(message)) || {}; + } catch (error) { + this.debug(message, 'error'); + error.message += `\nraw xml: ${message}`; + error.status = result.status; + error.requestId = result.headers && result.headers['x-oss-request-id']; + return error; + } + + let msg = info.Message || `unknow request error, status: ${result.status}`; + if (info.Condition) { + msg += ` (condition: ${info.Condition})`; + } + err = new Error(msg); + err.name = info.Code ? `${info.Code}Error` : 'UnknownError'; + err.status = result.status; + err.code = info.Code; + err.ecCode = info.EC; + err.requestId = info.RequestId; + err.hostId = info.HostId; + err.serverTime = info.ServerTime; + return err; + }; + + if (!result.data || !result.data.length) { + if (result.status === -1 || result.status === -2) { + // -1 is net error , -2 is timeout + err = new Error(result.message); + err.name = result.name; + err.status = result.status; + err.code = result.name; + } else { + // HEAD not exists resource + if (result.status === 404) { + err = new Error('Object not exists'); + err.name = 'NoSuchKeyError'; + err.status = 404; + err.code = 'NoSuchKey'; + } else if (result.status === 412) { + err = new Error('Pre condition failed'); + err.name = 'PreconditionFailedError'; + err.status = 412; + err.code = 'PreconditionFailed'; + } else { + err = new Error(`Unknow error, status: ${result.status}`); + err.name = 'UnknownError'; + err.status = result.status; + err.res = result; + const ossErr = result.headers && result.headers['x-oss-err']; + if (ossErr) { + const message = atob(ossErr); + err = await setError(message); + } + } + err.requestId = result.headers && result.headers['x-oss-request-id']; + err.host = ''; + } + } else { + const message = String(result.data); + this.debug('request response error data: %s', message, 'error'); + + err = await setError(message); + } + + this.debug('generate error %j', err, 'error'); + return err; +}; diff --git a/node_modules/ali-oss/lib/browser/managed-upload.js b/node_modules/ali-oss/lib/browser/managed-upload.js new file mode 100644 index 0000000..61d2141 --- /dev/null +++ b/node_modules/ali-oss/lib/browser/managed-upload.js @@ -0,0 +1,361 @@ +// var debug = require('debug')('ali-oss:multipart'); +const util = require('util'); +const path = require('path'); +const mime = require('mime'); +const copy = require('copy-to'); +const { isBlob } = require('../common/utils/isBlob'); +const { isFile } = require('../common/utils/isFile'); +const { isBuffer } = require('../common/utils/isBuffer'); + +const proto = exports; + +/** + * Multipart operations + */ + +/** + * Upload a file to OSS using multipart uploads + * @param {String} name + * @param {String|File|Buffer} file + * @param {Object} options + * {Object} [options.callback] The callback parameter is composed of a JSON string encoded in Base64 + * {String} options.callback.url the OSS sends a callback request to this URL + * {String} [options.callback.host] The host header value for initiating callback requests + * {String} options.callback.body The value of the request body when a callback is initiated + * {String} [options.callback.contentType] The Content-Type of the callback requests initiated + * {Boolean} [options.callback.callbackSNI] Whether OSS sends SNI to the origin address specified by callbackUrl when a callback request is initiated from the client + * {Object} [options.callback.customValue] Custom parameters are a map of key-values, e.g: + * customValue = { + * key1: 'value1', + * key2: 'value2' + * } + */ +proto.multipartUpload = async function multipartUpload(name, file, options = {}) { + this.resetCancelFlag(); + options.disabledMD5 = options.disabledMD5 === undefined ? true : !!options.disabledMD5; + if (options.checkpoint && options.checkpoint.uploadId) { + if (file && isFile(file)) options.checkpoint.file = file; + + return await this._resumeMultipart(options.checkpoint, options); + } + + const minPartSize = 100 * 1024; + + if (!options.mime) { + if (isFile(file)) { + options.mime = mime.getType(path.extname(file.name)); + } else if (isBlob(file)) { + options.mime = file.type; + } else if (isBuffer(file)) { + options.mime = ''; + } else { + options.mime = mime.getType(path.extname(file)); + } + } + + options.headers = options.headers || {}; + this._convertMetaToHeaders(options.meta, options.headers); + + const fileSize = await this._getFileSize(file); + if (fileSize < minPartSize) { + options.contentLength = fileSize; + const result = await this.put(name, file, options); + if (options && options.progress) { + await options.progress(1); + } + + const ret = { + res: result.res, + bucket: this.options.bucket, + name, + etag: result.res.headers.etag + }; + + if ((options.headers && options.headers['x-oss-callback']) || options.callback) { + ret.data = result.data; + } + + return ret; + } + if (options.partSize && !(parseInt(options.partSize, 10) === options.partSize)) { + throw new Error('partSize must be int number'); + } + + if (options.partSize && options.partSize < minPartSize) { + throw new Error(`partSize must not be smaller than ${minPartSize}`); + } + + const initResult = await this.initMultipartUpload(name, options); + const { uploadId } = initResult; + const partSize = this._getPartSize(fileSize, options.partSize); + + const checkpoint = { + file, + name, + fileSize, + partSize, + uploadId, + doneParts: [] + }; + + if (options && options.progress) { + await options.progress(0, checkpoint, initResult.res); + } + + return await this._resumeMultipart(checkpoint, options); +}; + +/* + * Resume multipart upload from checkpoint. The checkpoint will be + * updated after each successful part upload. + * @param {Object} checkpoint the checkpoint + * @param {Object} options + */ +proto._resumeMultipart = async function _resumeMultipart(checkpoint, options) { + const that = this; + if (this.isCancel()) { + throw this._makeCancelEvent(); + } + const { file, fileSize, partSize, uploadId, doneParts, name } = checkpoint; + + const internalDoneParts = []; + + if (doneParts.length > 0) { + copy(doneParts).to(internalDoneParts); + } + + const partOffs = this._divideParts(fileSize, partSize); + const numParts = partOffs.length; + let multipartFinish = false; + + let uploadPartJob = (self, partNo) => { + // eslint-disable-next-line no-async-promise-executor + return new Promise(async (resolve, reject) => { + try { + if (!self.isCancel()) { + const pi = partOffs[partNo - 1]; + const content = await self._createBuffer(file, pi.start, pi.end); + const data = { + content, + size: pi.end - pi.start + }; + + let result; + try { + result = await self._uploadPart(name, uploadId, partNo, data, options); + } catch (error) { + if (error.status === 404) { + throw self._makeAbortEvent(); + } + throw error; + } + if (!self.isCancel() && !multipartFinish) { + checkpoint.doneParts.push({ + number: partNo, + etag: result.res.headers.etag + }); + + if (options.progress) { + await options.progress(doneParts.length / (numParts + 1), checkpoint, result.res); + } + + resolve({ + number: partNo, + etag: result.res.headers.etag + }); + } else { + resolve(); + } + } else { + resolve(); + } + } catch (err) { + const tempErr = new Error(); + tempErr.name = err.name; + tempErr.message = err.message; + tempErr.stack = err.stack; + tempErr.partNum = partNo; + copy(err).to(tempErr); + reject(tempErr); + } + }); + }; + + const all = Array.from(new Array(numParts), (x, i) => i + 1); + const done = internalDoneParts.map(p => p.number); + const todo = all.filter(p => done.indexOf(p) < 0); + const defaultParallel = 5; + const parallel = options.parallel || defaultParallel; + + // upload in parallel + const jobErr = await this._parallel(todo, parallel, value => { + return new Promise((resolve, reject) => { + uploadPartJob(that, value) + .then(result => { + if (result) { + internalDoneParts.push(result); + } + resolve(); + }) + .catch(err => { + reject(err); + }); + }); + }); + multipartFinish = true; + + const abortEvent = jobErr.find(err => err.name === 'abort'); + if (abortEvent) throw abortEvent; + + if (this.isCancel()) { + uploadPartJob = null; + throw this._makeCancelEvent(); + } + + if (jobErr && jobErr.length > 0) { + jobErr[0].message = `Failed to upload some parts with error: ${jobErr[0].toString()} part_num: ${ + jobErr[0].partNum + }`; + throw jobErr[0]; + } + + return await this.completeMultipartUpload(name, uploadId, internalDoneParts, options); +}; + +/** + * Get file size + */ +proto._getFileSize = async function _getFileSize(file) { + if (isBuffer(file)) { + return file.length; + } else if (isBlob(file) || isFile(file)) { + return file.size; + } + + throw new Error('_getFileSize requires Buffer/File/Blob.'); +}; + +/* + * Readable stream for Web File + */ +const { Readable } = require('stream'); + +function WebFileReadStream(file, options) { + if (!(this instanceof WebFileReadStream)) { + return new WebFileReadStream(file, options); + } + + Readable.call(this, options); + + this.file = file; + this.reader = new FileReader(); + this.start = 0; + this.finish = false; + this.fileBuffer = null; +} +util.inherits(WebFileReadStream, Readable); + +WebFileReadStream.prototype.readFileAndPush = function readFileAndPush(size) { + if (this.fileBuffer) { + let pushRet = true; + while (pushRet && this.fileBuffer && this.start < this.fileBuffer.length) { + const { start } = this; + let end = start + size; + end = end > this.fileBuffer.length ? this.fileBuffer.length : end; + this.start = end; + pushRet = this.push(this.fileBuffer.slice(start, end)); + } + } +}; + +WebFileReadStream.prototype._read = function _read(size) { + if ( + (this.file && this.start >= this.file.size) || + (this.fileBuffer && this.start >= this.fileBuffer.length) || + this.finish || + (this.start === 0 && !this.file) + ) { + if (!this.finish) { + this.fileBuffer = null; + this.finish = true; + } + this.push(null); + return; + } + + const defaultReadSize = 16 * 1024; + size = size || defaultReadSize; + + const that = this; + this.reader.onload = function onload(e) { + that.fileBuffer = Buffer.from(new Uint8Array(e.target.result)); + that.file = null; + that.readFileAndPush(size); + }; + + if (this.start === 0) { + this.reader.readAsArrayBuffer(this.file); + } else { + this.readFileAndPush(size); + } +}; + +function getBuffer(file) { + // Some browsers do not support Blob.prototype.arrayBuffer, such as IE + if (file.arrayBuffer) return file.arrayBuffer(); + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = function (e) { + resolve(e.target.result); + }; + reader.onerror = function (e) { + reject(e); + }; + reader.readAsArrayBuffer(file); + }); +} + +proto._createBuffer = async function _createBuffer(file, start, end) { + if (isBlob(file) || isFile(file)) { + const _file = file.slice(start, end); + const fileContent = await getBuffer(_file); + return Buffer.from(fileContent); + } else if (isBuffer(file)) { + return file.subarray(start, end); + } else { + throw new Error('_createBuffer requires File/Blob/Buffer.'); + } +}; + +proto._getPartSize = function _getPartSize(fileSize, partSize) { + const maxNumParts = 10 * 1000; + const defaultPartSize = 1 * 1024 * 1024; + + if (!partSize) partSize = defaultPartSize; + const safeSize = Math.ceil(fileSize / maxNumParts); + + if (partSize < safeSize) { + partSize = safeSize; + console.warn( + `partSize has been set to ${partSize}, because the partSize you provided causes partNumber to be greater than 10,000` + ); + } + return partSize; +}; + +proto._divideParts = function _divideParts(fileSize, partSize) { + const numParts = Math.ceil(fileSize / partSize); + + const partOffs = []; + for (let i = 0; i < numParts; i++) { + const start = partSize * i; + const end = Math.min(start + partSize, fileSize); + + partOffs.push({ + start, + end + }); + } + + return partOffs; +}; diff --git a/node_modules/ali-oss/lib/browser/object.js b/node_modules/ali-oss/lib/browser/object.js new file mode 100644 index 0000000..c569ea4 --- /dev/null +++ b/node_modules/ali-oss/lib/browser/object.js @@ -0,0 +1,394 @@ +// const debug = require('debug')('ali-oss:object'); +const fs = require('fs'); +const copy = require('copy-to'); +const path = require('path'); +const mime = require('mime'); +const callback = require('../common/callback'); +const merge = require('merge-descriptors'); +const { isBlob } = require('../common/utils/isBlob'); +const { isFile } = require('../common/utils/isFile'); +const { isBuffer } = require('../common/utils/isBuffer'); +const { obj2xml } = require('../common/utils/obj2xml'); +const { parseRestoreInfo } = require('../common/utils/parseRestoreInfo'); + +// var assert = require('assert'); + +const proto = exports; + +/** + * Object operations + */ + +/** + * append an object from String(file path)/Buffer/ReadableStream + * @param {String} name the object key + * @param {Mixed} file String(file path)/Buffer/ReadableStream + * @param {Object} options + * @return {Object} + */ +proto.append = async function append(name, file, options) { + options = options || {}; + if (options.position === undefined) options.position = '0'; + options.subres = { + append: '', + position: options.position + }; + options.method = 'POST'; + + const result = await this.put(name, file, options); + result.nextAppendPosition = result.res.headers['x-oss-next-append-position']; + return result; +}; + +/** + * put an object from String(file path)/Buffer/ReadableStream + * @param {String} name the object key + * @param {Mixed} file String(file path)/Buffer/ReadableStream + * @param {Object} options + * {Object} [options.callback] The callback parameter is composed of a JSON string encoded in Base64 + * {String} options.callback.url the OSS sends a callback request to this URL + * {String} [options.callback.host] The host header value for initiating callback requests + * {String} options.callback.body The value of the request body when a callback is initiated + * {String} [options.callback.contentType] The Content-Type of the callback requests initiated + * {Boolean} [options.callback.callbackSNI] Whether OSS sends SNI to the origin address specified by callbackUrl when a callback request is initiated from the client + * {Object} [options.callback.customValue] Custom parameters are a map of key-values, e.g: + * customValue = { + * key1: 'value1', + * key2: 'value2' + * } + * @return {Object} + */ +proto.put = async function put(name, file, options) { + let content; + options = options || {}; + options.disabledMD5 = options.disabledMD5 === undefined ? true : !!options.disabledMD5; + options.headers = options.headers || {}; + name = this._objectName(name); + if (isBuffer(file)) { + content = file; + } else if (isBlob(file) || isFile(file)) { + if (!options.mime) { + if (isFile(file)) { + options.mime = mime.getType(path.extname(file.name)); + } else { + options.mime = file.type; + } + } + + content = await this._createBuffer(file, 0, file.size); + options.contentLength = await this._getFileSize(file); + } else { + throw new TypeError('Must provide Buffer/Blob/File for put.'); + } + + this._convertMetaToHeaders(options.meta, options.headers); + + const method = options.method || 'PUT'; + const params = this._objectRequestParams(method, name, options); + callback.encodeCallback(params, options); + params.mime = options.mime; + params.disabledMD5 = options.disabledMD5; + params.content = content; + params.successStatuses = [200]; + + const result = await this.request(params); + + const ret = { + name, + url: this._objectUrl(name), + res: result.res + }; + + if (params.headers && params.headers['x-oss-callback']) { + ret.data = JSON.parse(result.data.toString()); + } + + return ret; +}; + +/** + * put an object from ReadableStream. If `options.contentLength` is + * not provided, chunked encoding is used. + * @param {String} name the object key + * @param {Readable} stream the ReadableStream + * @param {Object} options + * @return {Object} + */ +proto.putStream = async function putStream(name, stream, options) { + options = options || {}; + options.headers = options.headers || {}; + name = this._objectName(name); + if (options.contentLength) { + options.headers['Content-Length'] = options.contentLength; + } else { + options.headers['Transfer-Encoding'] = 'chunked'; + } + this._convertMetaToHeaders(options.meta, options.headers); + + const method = options.method || 'PUT'; + const params = this._objectRequestParams(method, name, options); + callback.encodeCallback(params, options); + params.mime = options.mime; + params.stream = stream; + params.successStatuses = [200]; + + const result = await this.request(params); + + const ret = { + name, + url: this._objectUrl(name), + res: result.res + }; + + if (params.headers && params.headers['x-oss-callback']) { + ret.data = JSON.parse(result.data.toString()); + } + + return ret; +}; + +merge(proto, require('../common/object/copyObject')); +merge(proto, require('../common/object/getObjectTagging')); +merge(proto, require('../common/object/putObjectTagging')); +merge(proto, require('../common/object/deleteObjectTagging')); +merge(proto, require('../common/image')); +merge(proto, require('../common/object/getBucketVersions')); +merge(proto, require('../common/object/getACL')); +merge(proto, require('../common/object/putACL')); +merge(proto, require('../common/object/head')); +merge(proto, require('../common/object/delete')); +merge(proto, require('../common/object/get')); +merge(proto, require('../common/object/putSymlink')); +merge(proto, require('../common/object/getSymlink')); +merge(proto, require('../common/object/deleteMulti')); +merge(proto, require('../common/object/getObjectMeta')); +merge(proto, require('../common/object/getObjectUrl')); +merge(proto, require('../common/object/generateObjectUrl')); +merge(proto, require('../common/object/signatureUrl')); +merge(proto, require('../common/object/asyncSignatureUrl')); +merge(proto, require('../common/object/signatureUrlV4')); +merge(proto, require('../common/object/signPostObjectPolicyV4')); + +proto.putMeta = async function putMeta(name, meta, options) { + const copyResult = await this.copy(name, name, { + meta: meta || {}, + timeout: options && options.timeout, + ctx: options && options.ctx + }); + return copyResult; +}; + +proto.list = async function list(query, options) { + // prefix, marker, max-keys, delimiter + + const params = this._objectRequestParams('GET', '', options); + params.query = query; + params.xmlResponse = true; + params.successStatuses = [200]; + + const result = await this.request(params); + let objects = result.data.Contents || []; + const that = this; + if (objects) { + if (!Array.isArray(objects)) { + objects = [objects]; + } + + objects = objects.map(obj => ({ + name: obj.Key, + url: that._objectUrl(obj.Key), + lastModified: obj.LastModified, + etag: obj.ETag, + type: obj.Type, + size: Number(obj.Size), + storageClass: obj.StorageClass, + owner: { + id: obj.Owner.ID, + displayName: obj.Owner.DisplayName + }, + restoreInfo: parseRestoreInfo(obj.RestoreInfo) + })); + } + let prefixes = result.data.CommonPrefixes || null; + if (prefixes) { + if (!Array.isArray(prefixes)) { + prefixes = [prefixes]; + } + prefixes = prefixes.map(item => item.Prefix); + } + return { + res: result.res, + objects, + prefixes, + nextMarker: result.data.NextMarker || null, + isTruncated: result.data.IsTruncated === 'true' + }; +}; + +proto.listV2 = async function listV2(query, options = {}) { + const continuation_token = query['continuation-token'] || query.continuationToken; + if (continuation_token) { + options.subres = Object.assign( + { + 'continuation-token': continuation_token + }, + options.subres + ); + } + const params = this._objectRequestParams('GET', '', options); + params.query = Object.assign({ 'list-type': 2 }, query); + delete params.query['continuation-token']; + delete params.query.continuationToken; + params.xmlResponse = true; + params.successStatuses = [200]; + + const result = await this.request(params); + let objects = result.data.Contents || []; + const that = this; + if (objects) { + if (!Array.isArray(objects)) { + objects = [objects]; + } + + objects = objects.map(obj => { + let owner = null; + if (obj.Owner) { + owner = { + id: obj.Owner.ID, + displayName: obj.Owner.DisplayName + }; + } + return { + name: obj.Key, + url: that._objectUrl(obj.Key), + lastModified: obj.LastModified, + etag: obj.ETag, + type: obj.Type, + size: Number(obj.Size), + storageClass: obj.StorageClass, + owner, + restoreInfo: parseRestoreInfo(obj.RestoreInfo) + }; + }); + } + let prefixes = result.data.CommonPrefixes || null; + if (prefixes) { + if (!Array.isArray(prefixes)) { + prefixes = [prefixes]; + } + prefixes = prefixes.map(item => item.Prefix); + } + return { + res: result.res, + objects, + prefixes, + isTruncated: result.data.IsTruncated === 'true', + keyCount: +result.data.KeyCount, + continuationToken: result.data.ContinuationToken || null, + nextContinuationToken: result.data.NextContinuationToken || null + }; +}; + +/** + * Restore Object + * @param {String} name the object key + * @param {Object} options + * @returns {{res}} + */ +proto.restore = async function restore(name, options = { type: 'Archive' }) { + options = options || {}; + options.subres = Object.assign({ restore: '' }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + const params = this._objectRequestParams('POST', name, options); + const paramsXMLObj = { + RestoreRequest: { + Days: options.Days ? options.Days : 2 + } + }; + + if (options.type === 'ColdArchive' || options.type === 'DeepColdArchive') { + paramsXMLObj.RestoreRequest.JobParameters = { + Tier: options.JobParameters ? options.JobParameters : 'Standard' + }; + } + + params.content = obj2xml(paramsXMLObj, { + headers: true + }); + params.mime = 'xml'; + params.successStatuses = [202]; + + const result = await this.request(params); + + return { + res: result.res + }; +}; + +proto._objectUrl = function _objectUrl(name) { + return this._getReqUrl({ bucket: this.options.bucket, object: name }); +}; + +/** + * generator request params + * @return {Object} params + * + * @api private + */ + +proto._objectRequestParams = function _objectRequestParams(method, name, options) { + if (!this.options.bucket && !this.options.cname) { + throw new Error('Please create a bucket first'); + } + + options = options || {}; + name = this._objectName(name); + const params = { + object: name, + bucket: this.options.bucket, + method, + subres: options && options.subres, + additionalHeaders: options && options.additionalHeaders, + timeout: options && options.timeout, + ctx: options && options.ctx + }; + + if (options.headers) { + params.headers = {}; + copy(options.headers).to(params.headers); + } + return params; +}; + +proto._objectName = function _objectName(name) { + return name.replace(/^\/+/, ''); +}; + +proto._convertMetaToHeaders = function _convertMetaToHeaders(meta, headers) { + if (!meta) { + return; + } + + Object.keys(meta).forEach(k => { + headers[`x-oss-meta-${k}`] = meta[k]; + }); +}; + +proto._deleteFileSafe = function _deleteFileSafe(filepath) { + return new Promise(resolve => { + fs.exists(filepath, exists => { + if (!exists) { + resolve(); + } else { + fs.unlink(filepath, err => { + if (err) { + this.debug('unlink %j error: %s', filepath, err, 'error'); + } + resolve(); + }); + } + }); + }); +}; diff --git a/node_modules/ali-oss/lib/browser/version.js b/node_modules/ali-oss/lib/browser/version.js new file mode 100644 index 0000000..559a975 --- /dev/null +++ b/node_modules/ali-oss/lib/browser/version.js @@ -0,0 +1 @@ +exports.version = '6.23.0'; diff --git a/node_modules/ali-oss/lib/bucket.js b/node_modules/ali-oss/lib/bucket.js new file mode 100644 index 0000000..414e79a --- /dev/null +++ b/node_modules/ali-oss/lib/bucket.js @@ -0,0 +1,338 @@ +const assert = require('assert'); +const { isArray } = require('./common/utils/isArray'); +const { checkBucketName: _checkBucketName } = require('../lib/common/utils/checkBucketName'); +const { formatTag } = require('../lib/common/utils/formatTag'); + +const proto = exports; + +function toArray(obj) { + if (!obj) return []; + if (isArray(obj)) return obj; + return [obj]; +} + +/** + * Bucket opertaions + */ + +proto.listBuckets = async function listBuckets(query = {}, options = {}) { + // prefix, marker, max-keys + + const { subres = {} } = query; + const rest = {}; + for (const key in query) { + if (key !== 'subres') { + rest[key] = query[key]; + } + } + const params = this._bucketRequestParams('GET', '', Object.assign(subres, options.subres), options); + + params.query = rest; + + const result = await this.request(params); + + if (result.status === 200) { + const data = await this.parseXML(result.data); + let buckets = data.Buckets || null; + if (buckets) { + if (buckets.Bucket) { + buckets = buckets.Bucket; + } + if (!isArray(buckets)) { + buckets = [buckets]; + } + buckets = buckets.map(item => ({ + name: item.Name, + region: item.Location, + creationDate: item.CreationDate, + storageClass: item.StorageClass, + StorageClass: item.StorageClass, + tag: formatTag(item) + })); + } + return { + buckets, + owner: { + id: data.Owner.ID, + displayName: data.Owner.DisplayName + }, + isTruncated: data.IsTruncated === 'true', + nextMarker: data.NextMarker || null, + res: result.res + }; + } + + throw await this.requestError(result); +}; + +proto.useBucket = function useBucket(name) { + _checkBucketName(name); + return this.setBucket(name); +}; + +proto.setBucket = function useBucket(name) { + _checkBucketName(name); + this.options.bucket = name; + return this; +}; + +proto.getBucket = function getBucket() { + return this.options.bucket; +}; + +proto.getBucketLocation = async function getBucketLocation(name, options) { + _checkBucketName(name); + name = name || this.getBucket(); + const params = this._bucketRequestParams('GET', name, 'location', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + return { + location: result.data, + res: result.res + }; +}; + +proto.getBucketInfo = async function getBucketInfo(name, options) { + _checkBucketName(name); + name = name || this.getBucket(); + const params = this._bucketRequestParams('GET', name, 'bucketInfo', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + return { + bucket: result.data.Bucket, + res: result.res + }; +}; + +proto.deleteBucket = async function deleteBucket(name, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('DELETE', name, '', options); + const result = await this.request(params); + if (result.status === 200 || result.status === 204) { + return { + res: result.res + }; + } + throw await this.requestError(result); +}; + +// acl + +proto.putBucketACL = async function putBucketACL(name, acl, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('PUT', name, 'acl', options); + params.headers = { + 'x-oss-acl': acl + }; + params.successStatuses = [200]; + const result = await this.request(params); + return { + bucket: (result.headers.location && result.headers.location.substring(1)) || null, + res: result.res + }; +}; + +proto.getBucketACL = async function getBucketACL(name, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('GET', name, 'acl', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + return { + acl: result.data.AccessControlList.Grant, + owner: { + id: result.data.Owner.ID, + displayName: result.data.Owner.DisplayName + }, + res: result.res + }; +}; + +// logging + +proto.putBucketLogging = async function putBucketLogging(name, prefix, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('PUT', name, 'logging', options); + let xml = `${'<?xml version="1.0" encoding="UTF-8"?>\n<BucketLoggingStatus>\n<LoggingEnabled>\n<TargetBucket>'}${name}</TargetBucket>\n`; + if (prefix) { + xml += `<TargetPrefix>${prefix}</TargetPrefix>\n`; + } + xml += '</LoggingEnabled>\n</BucketLoggingStatus>'; + params.content = xml; + params.mime = 'xml'; + params.successStatuses = [200]; + const result = await this.request(params); + return { + res: result.res + }; +}; + +proto.getBucketLogging = async function getBucketLogging(name, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('GET', name, 'logging', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + const enable = result.data.LoggingEnabled; + return { + enable: !!enable, + prefix: (enable && enable.TargetPrefix) || null, + res: result.res + }; +}; + +proto.deleteBucketLogging = async function deleteBucketLogging(name, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('DELETE', name, 'logging', options); + params.successStatuses = [204, 200]; + const result = await this.request(params); + return { + res: result.res + }; +}; + +proto.putBucketCORS = async function putBucketCORS(name, rules, options) { + _checkBucketName(name); + rules = rules || []; + assert(rules.length, 'rules is required'); + rules.forEach(rule => { + assert(rule.allowedOrigin, 'allowedOrigin is required'); + assert(rule.allowedMethod, 'allowedMethod is required'); + }); + + const params = this._bucketRequestParams('PUT', name, 'cors', options); + let xml = '<?xml version="1.0" encoding="UTF-8"?>\n<CORSConfiguration>'; + const parseOrigin = val => { + xml += `<AllowedOrigin>${val}</AllowedOrigin>`; + }; + const parseMethod = val => { + xml += `<AllowedMethod>${val}</AllowedMethod>`; + }; + const parseHeader = val => { + xml += `<AllowedHeader>${val}</AllowedHeader>`; + }; + const parseExposeHeader = val => { + xml += `<ExposeHeader>${val}</ExposeHeader>`; + }; + for (let i = 0, l = rules.length; i < l; i++) { + const rule = rules[i]; + xml += '<CORSRule>'; + + toArray(rule.allowedOrigin).forEach(parseOrigin); + toArray(rule.allowedMethod).forEach(parseMethod); + toArray(rule.allowedHeader).forEach(parseHeader); + toArray(rule.exposeHeader).forEach(parseExposeHeader); + if (rule.maxAgeSeconds) { + xml += `<MaxAgeSeconds>${rule.maxAgeSeconds}</MaxAgeSeconds>`; + } + xml += '</CORSRule>'; + } + xml += '</CORSConfiguration>'; + params.content = xml; + params.mime = 'xml'; + params.successStatuses = [200]; + const result = await this.request(params); + return { + res: result.res + }; +}; + +proto.getBucketCORS = async function getBucketCORS(name, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('GET', name, 'cors', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + const rules = []; + if (result.data && result.data.CORSRule) { + let { CORSRule } = result.data; + if (!isArray(CORSRule)) CORSRule = [CORSRule]; + CORSRule.forEach(rule => { + const r = {}; + Object.keys(rule).forEach(key => { + r[key.slice(0, 1).toLowerCase() + key.slice(1, key.length)] = rule[key]; + }); + rules.push(r); + }); + } + return { + rules, + res: result.res + }; +}; + +proto.deleteBucketCORS = async function deleteBucketCORS(name, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('DELETE', name, 'cors', options); + params.successStatuses = [204]; + const result = await this.request(params); + return { + res: result.res + }; +}; + +// referer + +proto.putBucketReferer = async function putBucketReferer(name, allowEmpty, referers, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('PUT', name, 'referer', options); + let xml = '<?xml version="1.0" encoding="UTF-8"?>\n<RefererConfiguration>\n'; + xml += ` <AllowEmptyReferer>${allowEmpty ? 'true' : 'false'}</AllowEmptyReferer>\n`; + if (referers && referers.length > 0) { + xml += ' <RefererList>\n'; + for (let i = 0; i < referers.length; i++) { + xml += ` <Referer>${referers[i]}</Referer>\n`; + } + xml += ' </RefererList>\n'; + } else { + xml += ' <RefererList />\n'; + } + xml += '</RefererConfiguration>'; + params.content = xml; + params.mime = 'xml'; + params.successStatuses = [200]; + const result = await this.request(params); + return { + res: result.res + }; +}; + +proto.getBucketReferer = async function getBucketReferer(name, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('GET', name, 'referer', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + let referers = result.data.RefererList.Referer || null; + if (referers) { + if (!isArray(referers)) { + referers = [referers]; + } + } + return { + allowEmpty: result.data.AllowEmptyReferer === 'true', + referers, + res: result.res + }; +}; + +proto.deleteBucketReferer = async function deleteBucketReferer(name, options) { + _checkBucketName(name); + return await this.putBucketReferer(name, true, null, options); +}; + +// private apis + +proto._bucketRequestParams = function _bucketRequestParams(method, bucket, subres, options) { + return { + method, + bucket, + subres, + headers: options && options.headers, + additionalHeaders: options && options.additionalHeaders, + timeout: options && options.timeout, + ctx: options && options.ctx + }; +}; diff --git a/node_modules/ali-oss/lib/client.js b/node_modules/ali-oss/lib/client.js new file mode 100644 index 0000000..67d6545 --- /dev/null +++ b/node_modules/ali-oss/lib/client.js @@ -0,0 +1,439 @@ +const debug = require('debug')('ali-oss'); +const sendToWormhole = require('stream-wormhole'); +const xml = require('xml2js'); +const AgentKeepalive = require('agentkeepalive'); +const HttpsAgentKeepalive = require('agentkeepalive').HttpsAgent; +const merge = require('merge-descriptors'); +const platform = require('platform'); +const utility = require('utility'); +const urllib = require('urllib'); +const pkg = require('../package.json'); +const bowser = require('bowser'); +const signUtils = require('./common/signUtils'); +const _initOptions = require('./common/client/initOptions'); +const { createRequest } = require('./common/utils/createRequest'); +const { encoder } = require('./common/utils/encoder'); +const { getReqUrl } = require('./common/client/getReqUrl'); +const { setSTSToken } = require('./common/utils/setSTSToken'); +const { retry } = require('./common/utils/retry'); +const { isFunction } = require('./common/utils/isFunction'); +const { getStandardRegion } = require('./common/utils/getStandardRegion'); + +const globalHttpAgent = new AgentKeepalive(); +const globalHttpsAgent = new HttpsAgentKeepalive(); + +function Client(options, ctx) { + if (!(this instanceof Client)) { + return new Client(options, ctx); + } + + if (options && options.inited) { + this.options = options; + } else { + this.options = Client.initOptions(options); + } + + // support custom agent and urllib client + if (this.options.urllib) { + this.urllib = this.options.urllib; + } else { + this.urllib = urllib; + if (this.options.maxSockets) { + globalHttpAgent.maxSockets = this.options.maxSockets; + globalHttpsAgent.maxSockets = this.options.maxSockets; + } + this.agent = this.options.agent || globalHttpAgent; + this.httpsAgent = this.options.httpsAgent || globalHttpsAgent; + } + this.ctx = ctx; + this.userAgent = this._getUserAgent(); + this.stsTokenFreshTime = new Date(); +} + +/** + * Expose `Client` + */ + +module.exports = Client; + +Client.initOptions = function initOptions(options) { + return _initOptions(options); +}; + +/** + * prototype + */ + +const proto = Client.prototype; + +/** + * Object operations + */ +merge(proto, require('./common/object')); +merge(proto, require('./object')); +merge(proto, require('./common/image')); +/** + * Bucket operations + */ +merge(proto, require('./common/bucket')); +merge(proto, require('./bucket')); +// multipart upload +merge(proto, require('./managed-upload')); +/** + * RTMP operations + */ +merge(proto, require('./rtmp')); + +/** + * common multipart-copy support node and browser + */ +merge(proto, require('./common/multipart-copy')); +/** + * Common module parallel + */ +merge(proto, require('./common/parallel')); +/** + * Multipart operations + */ +merge(proto, require('./common/multipart')); +/** + * ImageClient class + */ +Client.ImageClient = require('./image')(Client); +/** + * Cluster Client class + */ +Client.ClusterClient = require('./cluster')(Client); + +/** + * STS Client class + */ +Client.STS = require('./sts'); + +/** + * get OSS signature + * @param {String} stringToSign + * @return {String} the signature + */ +proto.signature = function signature(stringToSign) { + debug('authorization stringToSign: %s', stringToSign); + + return signUtils.computeSignature(this.options.accessKeySecret, stringToSign, this.options.headerEncoding); +}; + +proto._getReqUrl = getReqUrl; + +/** + * get author header + * + * "Authorization: OSS " + Access Key Id + ":" + Signature + * + * Signature = base64(hmac-sha1(Access Key Secret + "\n" + * + VERB + "\n" + * + CONTENT-MD5 + "\n" + * + CONTENT-TYPE + "\n" + * + DATE + "\n" + * + CanonicalizedOSSHeaders + * + CanonicalizedResource)) + * + * @param {String} method + * @param {String} resource + * @param {Object} header + * @return {String} + * + * @api private + */ + +proto.authorization = function authorization(method, resource, subres, headers) { + const stringToSign = signUtils.buildCanonicalString(method.toUpperCase(), resource, { + headers, + parameters: subres + }); + + return signUtils.authorization( + this.options.accessKeyId, + this.options.accessKeySecret, + stringToSign, + this.options.headerEncoding + ); +}; + +/** + * get authorization header v4 + * + * @param {string} method + * @param {Object} requestParams + * @param {Object} requestParams.headers + * @param {Object} [requestParams.queries] + * @param {string} [bucketName] + * @param {string} [objectName] + * @param {string[]} [additionalHeaders] + * @return {string} + * + * @api private + */ +proto.authorizationV4 = function authorizationV4(method, requestParams, bucketName, objectName, additionalHeaders) { + const { cloudBoxId } = this.options; + const signRegion = cloudBoxId === undefined ? getStandardRegion(this.options.region) : cloudBoxId; + return signUtils.authorizationV4( + this.options.accessKeyId, + this.options.accessKeySecret, + signRegion, + method, + requestParams, + bucketName, + objectName, + additionalHeaders, + this.options.headerEncoding, + cloudBoxId + ); +}; + +/** + * request oss server + * @param {Object} params + * - {String} object + * - {String} bucket + * - {Object} [headers] + * - {Object} [query] + * - {Buffer} [content] + * - {Stream} [stream] + * - {Stream} [writeStream] + * - {String} [mime] + * - {Boolean} [xmlResponse] + * - {Boolean} [customResponse] + * - {Number} [timeout] + * - {Object} [ctx] request context, default is `this.ctx` + * + * @api private + */ + +proto.request = async function (params) { + if (this.options.retryMax) { + return await retry(request.bind(this), this.options.retryMax, { + errorHandler: err => { + const _errHandle = _err => { + if (params.stream) return false; + const statusErr = [-1, -2].includes(_err.status); + const requestErrorRetryHandle = this.options.requestErrorRetryHandle || (() => true); + return statusErr && requestErrorRetryHandle(_err); + }; + if (_errHandle(err)) return true; + return false; + } + })(params); + } else { + return await request.call(this, params); + } +}; + +async function request(params) { + if (this.options.stsToken && isFunction(this.options.refreshSTSToken)) { + await setSTSToken.call(this); + } + const reqParams = createRequest.call(this, params); + let result; + let reqErr; + try { + result = await this.urllib.request(reqParams.url, reqParams.params); + debug('response %s %s, got %s, headers: %j', params.method, reqParams.url, result.status, result.headers); + } catch (err) { + reqErr = err; + } + let err; + if (result && params.successStatuses && params.successStatuses.indexOf(result.status) === -1) { + err = await this.requestError(result); + err.params = params; + } else if (reqErr) { + err = await this.requestError(reqErr); + } + + if (err) { + if (params.customResponse && result && result.res) { + // consume the response stream + await sendToWormhole(result.res); + } + + if (err.name === 'ResponseTimeoutError') { + err.message = `${ + err.message.split(',')[0] + }, please increase the timeout, see more details at https://github.com/ali-sdk/ali-oss#responsetimeouterror`; + } + if (err.name === 'ConnectionTimeoutError') { + err.message = `${ + err.message.split(',')[0] + }, please increase the timeout or reduce the partSize, see more details at https://github.com/ali-sdk/ali-oss#connectiontimeouterror`; + } + throw err; + } + + if (params.xmlResponse) { + result.data = await this.parseXML(result.data); + } + return result; +} + +proto._getResource = function _getResource(params) { + let resource = '/'; + if (params.bucket) resource += `${params.bucket}/`; + if (params.object) resource += encoder(params.object, this.options.headerEncoding); + + return resource; +}; + +proto._escape = function _escape(name) { + return utility.encodeURIComponent(name).replace(/%2F/g, '/'); +}; + +/* + * Get User-Agent for browser & node.js + * @example + * aliyun-sdk-nodejs/4.1.2 Node.js 5.3.0 on Darwin 64-bit + * aliyun-sdk-js/4.1.2 Safari 9.0 on Apple iPhone(iOS 9.2.1) + * aliyun-sdk-js/4.1.2 Chrome 43.0.2357.134 32-bit on Windows Server 2008 R2 / 7 64-bit + */ + +proto._getUserAgent = function _getUserAgent() { + const agent = process && process.browser ? 'js' : 'nodejs'; + const sdk = `aliyun-sdk-${agent}/${pkg.version}`; + let plat = platform.description; + if (!plat && process) { + plat = `Node.js ${process.version.slice(1)} on ${process.platform} ${process.arch}`; + } + + return this._checkUserAgent(`${sdk} ${plat}`); +}; + +proto._checkUserAgent = function _checkUserAgent(ua) { + const userAgent = ua.replace(/\u03b1/, 'alpha').replace(/\u03b2/, 'beta'); + return userAgent; +}; + +/* + * Check Browser And Version + * @param {String} [name] browser name: like IE, Chrome, Firefox + * @param {String} [version] browser major version: like 10(IE 10.x), 55(Chrome 55.x), 50(Firefox 50.x) + * @return {Bool} true or false + * @api private + */ + +proto.checkBrowserAndVersion = function checkBrowserAndVersion(name, version) { + return bowser.name === name && bowser.version.split('.')[0] === version; +}; + +/** + * thunkify xml.parseString + * @param {String|Buffer} str + * + * @api private + */ + +proto.parseXML = function parseXMLThunk(str) { + return new Promise((resolve, reject) => { + if (Buffer.isBuffer(str)) { + str = str.toString(); + } + xml.parseString( + str, + { + explicitRoot: false, + explicitArray: false + }, + (err, result) => { + if (err) { + reject(err); + } else { + resolve(result); + } + } + ); + }); +}; + +/** + * generater a request error with request response + * @param {Object} result + * + * @api private + */ + +proto.requestError = async function requestError(result) { + let err = null; + + const setError = async message => { + let info; + try { + info = (await this.parseXML(message)) || {}; + } catch (error) { + debug(message); + error.message += `\nraw xml: ${message}`; + error.status = result.status; + error.requestId = result.headers && result.headers['x-oss-request-id']; + return error; + } + + let msg = info.Message || `unknow request error, status: ${result.status}`; + if (info.Condition) { + msg += ` (condition: ${info.Condition})`; + } + err = new Error(msg); + err.name = info.Code ? `${info.Code}Error` : 'UnknownError'; + err.status = result.status; + err.code = info.Code; + err.requestId = info.RequestId; + err.ecCode = info.EC; + err.hostId = info.HostId; + return err; + }; + + if (result.name === 'ResponseTimeoutError') { + err = new Error(result.message); + err.name = result.name; + } else if (!result.data || !result.data.length) { + if (result.status === -1 || result.status === -2) { + // -1 is net error , -2 is timeout + err = new Error(result.message); + err.name = result.name; + err.status = result.status; + err.code = result.name; + } else { + // HEAD not exists resource + if (result.status === 404) { + err = new Error('Object not exists'); + err.name = 'NoSuchKeyError'; + err.status = 404; + err.code = 'NoSuchKey'; + } else if (result.status === 412) { + err = new Error('Pre condition failed'); + err.name = 'PreconditionFailedError'; + err.status = 412; + err.code = 'PreconditionFailed'; + } else { + err = new Error(`Unknow error, status: ${result.status}`); + err.name = 'UnknownError'; + err.status = result.status; + err.res = result; + const ossErr = result.headers && result.headers['x-oss-err']; + if (ossErr) { + const message = Buffer.from(ossErr, 'base64').toString('utf8'); + err = await setError(message); + } + } + err.requestId = result.headers && result.headers['x-oss-request-id']; + err.host = ''; + } + } else { + const message = String(result.data); + debug('request response error data: %s', message); + + err = await setError(message); + } + + debug('generate error %j', err); + return err; +}; + +proto.setSLDEnabled = function setSLDEnabled(enable) { + this.options.sldEnable = !!enable; + return this; +}; diff --git a/node_modules/ali-oss/lib/cluster.js b/node_modules/ali-oss/lib/cluster.js new file mode 100644 index 0000000..7ac79cd --- /dev/null +++ b/node_modules/ali-oss/lib/cluster.js @@ -0,0 +1,228 @@ +const Base = require('sdk-base'); +const util = require('util'); +const ready = require('get-ready'); +const copy = require('copy-to'); +const currentIP = require('address').ip(); + +const RR = 'roundRobin'; +const MS = 'masterSlave'; + +module.exports = function (OssClient) { + function Client(options) { + if (!(this instanceof Client)) { + return new Client(options); + } + + if (!options || !Array.isArray(options.cluster)) { + throw new Error('require options.cluster to be an array'); + } + + Base.call(this); + + this.clients = []; + this.availables = {}; + + for (let i = 0; i < options.cluster.length; i++) { + const opt = options.cluster[i]; + copy(options).pick('timeout', 'agent', 'urllib').to(opt); + this.clients.push(new OssClient(opt)); + this.availables[i] = true; + } + + this.schedule = options.schedule || RR; + // only read from master, default is false + this.masterOnly = !!options.masterOnly; + this.index = 0; + + const heartbeatInterval = options.heartbeatInterval || 10000; + this._checkAvailableLock = false; + this._timerId = this._deferInterval(this._checkAvailable.bind(this, true), heartbeatInterval); + this._ignoreStatusFile = options.ignoreStatusFile || false; + this._init(); + } + + util.inherits(Client, Base); + const proto = Client.prototype; + ready.mixin(proto); + + const GET_METHODS = ['head', 'get', 'getStream', 'list', 'getACL']; + + const PUT_METHODS = ['put', 'putStream', 'delete', 'deleteMulti', 'copy', 'putMeta', 'putACL']; + + GET_METHODS.forEach(method => { + proto[method] = async function (...args) { + const client = this.chooseAvailable(); + let lastError; + try { + return await client[method](...args); + } catch (err) { + if (err.status && err.status >= 200 && err.status < 500) { + // 200 ~ 499 belong to normal response, don't try again + throw err; + } + // < 200 || >= 500 need to retry from other cluser node + lastError = err; + } + + for (let i = 0; i < this.clients.length; i++) { + const c = this.clients[i]; + if (c !== client) { + try { + return await c[method].apply(client, args); + } catch (err) { + if (err.status && err.status >= 200 && err.status < 500) { + // 200 ~ 499 belong to normal response, don't try again + throw err; + } + // < 200 || >= 500 need to retry from other cluser node + lastError = err; + } + } + } + + lastError.message += ' (all clients are down)'; + throw lastError; + }; + }); + + // must cluster node write success + PUT_METHODS.forEach(method => { + proto[method] = async function (...args) { + const res = await Promise.all(this.clients.map(client => client[method](...args))); + return res[0]; + }; + }); + + proto.signatureUrl = function signatureUrl(/* name */ ...args) { + const client = this.chooseAvailable(); + return client.signatureUrl(...args); + }; + + proto.getObjectUrl = function getObjectUrl(/* name, baseUrl */ ...args) { + const client = this.chooseAvailable(); + return client.getObjectUrl(...args); + }; + + proto._init = function _init() { + const that = this; + (async () => { + await that._checkAvailable(that._ignoreStatusFile); + that.ready(true); + })().catch(err => { + that.emit('error', err); + }); + }; + + proto._checkAvailable = async function _checkAvailable(ignoreStatusFile) { + const name = `._ali-oss/check.status.${currentIP}.txt`; + if (!ignoreStatusFile) { + // only start will try to write the file + await this.put(name, Buffer.from(`check available started at ${Date()}`)); + } + + if (this._checkAvailableLock) { + return; + } + this._checkAvailableLock = true; + const downStatusFiles = []; + for (let i = 0; i < this.clients.length; i++) { + const client = this.clients[i]; + // check 3 times + let available = await this._checkStatus(client, name); + if (!available) { + // check again + available = await this._checkStatus(client, name); + } + if (!available) { + // check again + /* eslint no-await-in-loop: [0] */ + available = await this._checkStatus(client, name); + if (!available) { + downStatusFiles.push(client._objectUrl(name)); + } + } + this.availables[i] = available; + } + this._checkAvailableLock = false; + + if (downStatusFiles.length > 0) { + const err = new Error( + `${downStatusFiles.length} data node down, please check status file: ${downStatusFiles.join(', ')}` + ); + err.name = 'CheckAvailableError'; + this.emit('error', err); + } + }; + + proto._checkStatus = async function _checkStatus(client, name) { + let available = true; + try { + await client.head(name); + } catch (err) { + // 404 will be available too + if (!err.status || err.status >= 500 || err.status < 200) { + available = false; + } + } + return available; + }; + + proto.chooseAvailable = function chooseAvailable() { + if (this.schedule === MS) { + // only read from master + if (this.masterOnly) { + return this.clients[0]; + } + for (let i = 0; i < this.clients.length; i++) { + if (this.availables[i]) { + return this.clients[i]; + } + } + // all down, try to use this first one + return this.clients[0]; + } + + // RR + let n = this.clients.length; + while (n > 0) { + const i = this._nextRRIndex(); + if (this.availables[i]) { + return this.clients[i]; + } + n--; + } + // all down, try to use this first one + return this.clients[0]; + }; + + proto._nextRRIndex = function _nextRRIndex() { + const index = this.index++; + if (this.index >= this.clients.length) { + this.index = 0; + } + return index; + }; + + proto._error = function error(err) { + if (err) throw err; + }; + + proto._createCallback = function _createCallback(ctx, gen, cb) { + return () => { + cb = cb || this._error; + gen.call(ctx).then(() => { + cb(); + }, cb); + }; + }; + proto._deferInterval = function _deferInterval(gen, timeout, cb) { + return setInterval(this._createCallback(this, gen, cb), timeout); + }; + + proto.close = function close() { + clearInterval(this._timerId); + this._timerId = null; + }; + + return Client; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/abortBucketWorm.d.ts b/node_modules/ali-oss/lib/common/bucket/abortBucketWorm.d.ts new file mode 100644 index 0000000..ef6367a --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/abortBucketWorm.d.ts @@ -0,0 +1,4 @@ +export declare function abortBucketWorm(this: any, name: string, options: any): Promise<{ + res: any; + status: any; +}>; diff --git a/node_modules/ali-oss/lib/common/bucket/abortBucketWorm.js b/node_modules/ali-oss/lib/common/bucket/abortBucketWorm.js new file mode 100644 index 0000000..d55a60d --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/abortBucketWorm.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.abortBucketWorm = void 0; +const checkBucketName_1 = require("../utils/checkBucketName"); +async function abortBucketWorm(name, options) { + checkBucketName_1.checkBucketName(name); + const params = this._bucketRequestParams('DELETE', name, 'worm', options); + const result = await this.request(params); + return { + res: result.res, + status: result.status + }; +} +exports.abortBucketWorm = abortBucketWorm; diff --git a/node_modules/ali-oss/lib/common/bucket/abortBucketWorm.ts b/node_modules/ali-oss/lib/common/bucket/abortBucketWorm.ts new file mode 100644 index 0000000..e422a56 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/abortBucketWorm.ts @@ -0,0 +1,12 @@ +import { checkBucketName } from '../utils/checkBucketName'; + +export async function abortBucketWorm(this: any, name: string, options) { + checkBucketName(name); + const params = this._bucketRequestParams('DELETE', name, 'worm', options); + + const result = await this.request(params); + return { + res: result.res, + status: result.status + }; +} diff --git a/node_modules/ali-oss/lib/common/bucket/completeBucketWorm.d.ts b/node_modules/ali-oss/lib/common/bucket/completeBucketWorm.d.ts new file mode 100644 index 0000000..8ab058b --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/completeBucketWorm.d.ts @@ -0,0 +1,4 @@ +export declare function completeBucketWorm(this: any, name: string, wormId: string, options: any): Promise<{ + res: any; + status: any; +}>; diff --git a/node_modules/ali-oss/lib/common/bucket/completeBucketWorm.js b/node_modules/ali-oss/lib/common/bucket/completeBucketWorm.js new file mode 100644 index 0000000..617ee66 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/completeBucketWorm.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.completeBucketWorm = void 0; +const checkBucketName_1 = require("../utils/checkBucketName"); +async function completeBucketWorm(name, wormId, options) { + checkBucketName_1.checkBucketName(name); + const params = this._bucketRequestParams('POST', name, { wormId }, options); + const result = await this.request(params); + return { + res: result.res, + status: result.status + }; +} +exports.completeBucketWorm = completeBucketWorm; diff --git a/node_modules/ali-oss/lib/common/bucket/completeBucketWorm.ts b/node_modules/ali-oss/lib/common/bucket/completeBucketWorm.ts new file mode 100644 index 0000000..0a439f1 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/completeBucketWorm.ts @@ -0,0 +1,12 @@ +import { checkBucketName } from '../utils/checkBucketName'; + +export async function completeBucketWorm(this: any, name: string, wormId: string, options) { + checkBucketName(name); + const params = this._bucketRequestParams('POST', name, { wormId }, options); + + const result = await this.request(params); + return { + res: result.res, + status: result.status + }; +} diff --git a/node_modules/ali-oss/lib/common/bucket/deleteBucketEncryption.js b/node_modules/ali-oss/lib/common/bucket/deleteBucketEncryption.js new file mode 100644 index 0000000..ac0313d --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/deleteBucketEncryption.js @@ -0,0 +1,20 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); + +const proto = exports; +// const jstoxml = require('jstoxml'); +/** + * deleteBucketEncryption + * @param {String} bucketName - bucket name + */ + +proto.deleteBucketEncryption = async function deleteBucketEncryption(bucketName) { + _checkBucketName(bucketName); + const params = this._bucketRequestParams('DELETE', bucketName, 'encryption'); + params.successStatuses = [204]; + params.xmlResponse = true; + const result = await this.request(params); + return { + status: result.status, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/deleteBucketInventory.d.ts b/node_modules/ali-oss/lib/common/bucket/deleteBucketInventory.d.ts new file mode 100644 index 0000000..5eead0d --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/deleteBucketInventory.d.ts @@ -0,0 +1,10 @@ +/** + * deleteBucketInventory + * @param {String} bucketName - bucket name + * @param {String} inventoryId + * @param {Object} options + */ +export declare function deleteBucketInventory(this: any, bucketName: string, inventoryId: string, options?: any): Promise<{ + status: any; + res: any; +}>; diff --git a/node_modules/ali-oss/lib/common/bucket/deleteBucketInventory.js b/node_modules/ali-oss/lib/common/bucket/deleteBucketInventory.js new file mode 100644 index 0000000..74f58ce --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/deleteBucketInventory.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteBucketInventory = void 0; +const checkBucketName_1 = require("../utils/checkBucketName"); +/** + * deleteBucketInventory + * @param {String} bucketName - bucket name + * @param {String} inventoryId + * @param {Object} options + */ +async function deleteBucketInventory(bucketName, inventoryId, options = {}) { + const subres = Object.assign({ inventory: '', inventoryId }, options.subres); + checkBucketName_1.checkBucketName(bucketName); + const params = this._bucketRequestParams('DELETE', bucketName, subres, options); + params.successStatuses = [204]; + const result = await this.request(params); + return { + status: result.status, + res: result.res + }; +} +exports.deleteBucketInventory = deleteBucketInventory; diff --git a/node_modules/ali-oss/lib/common/bucket/deleteBucketInventory.ts b/node_modules/ali-oss/lib/common/bucket/deleteBucketInventory.ts new file mode 100644 index 0000000..6c07684 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/deleteBucketInventory.ts @@ -0,0 +1,21 @@ +import { checkBucketName } from '../utils/checkBucketName'; +/** + * deleteBucketInventory + * @param {String} bucketName - bucket name + * @param {String} inventoryId + * @param {Object} options + */ + +export async function deleteBucketInventory(this: any, bucketName: string, inventoryId: string, options: any = {}) { + const subres: any = Object.assign({ inventory: '', inventoryId }, options.subres); + checkBucketName(bucketName); + + const params = this._bucketRequestParams('DELETE', bucketName, subres, options); + params.successStatuses = [204]; + + const result = await this.request(params); + return { + status: result.status, + res: result.res + }; +} diff --git a/node_modules/ali-oss/lib/common/bucket/deleteBucketLifecycle.js b/node_modules/ali-oss/lib/common/bucket/deleteBucketLifecycle.js new file mode 100644 index 0000000..dc09fda --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/deleteBucketLifecycle.js @@ -0,0 +1,13 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); + +const proto = exports; + +proto.deleteBucketLifecycle = async function deleteBucketLifecycle(name, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('DELETE', name, 'lifecycle', options); + params.successStatuses = [204]; + const result = await this.request(params); + return { + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/deleteBucketPolicy.js b/node_modules/ali-oss/lib/common/bucket/deleteBucketPolicy.js new file mode 100644 index 0000000..0331e36 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/deleteBucketPolicy.js @@ -0,0 +1,21 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); + +const proto = exports; +/** + * deleteBucketPolicy + * @param {String} bucketName - bucket name + * @param {Object} options + */ + +proto.deleteBucketPolicy = async function deleteBucketPolicy(bucketName, options = {}) { + _checkBucketName(bucketName); + + const params = this._bucketRequestParams('DELETE', bucketName, 'policy', options); + params.successStatuses = [204]; + const result = await this.request(params); + + return { + status: result.status, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/deleteBucketTags.js b/node_modules/ali-oss/lib/common/bucket/deleteBucketTags.js new file mode 100644 index 0000000..27d38c7 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/deleteBucketTags.js @@ -0,0 +1,21 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); + +const proto = exports; +/** + * deleteBucketTags + * @param {String} name - bucket name + * @param {Object} options + */ + +proto.deleteBucketTags = async function deleteBucketTags(name, options = {}) { + _checkBucketName(name); + + const params = this._bucketRequestParams('DELETE', name, 'tagging', options); + params.successStatuses = [204]; + const result = await this.request(params); + + return { + status: result.status, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/deleteBucketWebsite.js b/node_modules/ali-oss/lib/common/bucket/deleteBucketWebsite.js new file mode 100644 index 0000000..5267589 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/deleteBucketWebsite.js @@ -0,0 +1,13 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); + +const proto = exports; + +proto.deleteBucketWebsite = async function deleteBucketWebsite(name, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('DELETE', name, 'website', options); + params.successStatuses = [204]; + const result = await this.request(params); + return { + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/extendBucketWorm.d.ts b/node_modules/ali-oss/lib/common/bucket/extendBucketWorm.d.ts new file mode 100644 index 0000000..673c401 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/extendBucketWorm.d.ts @@ -0,0 +1,4 @@ +export declare function extendBucketWorm(this: any, name: string, wormId: string, days: string | number, options: any): Promise<{ + res: any; + status: any; +}>; diff --git a/node_modules/ali-oss/lib/common/bucket/extendBucketWorm.js b/node_modules/ali-oss/lib/common/bucket/extendBucketWorm.js new file mode 100644 index 0000000..8115ebc --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/extendBucketWorm.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.extendBucketWorm = void 0; +const checkBucketName_1 = require("../utils/checkBucketName"); +const obj2xml_1 = require("../utils/obj2xml"); +async function extendBucketWorm(name, wormId, days, options) { + checkBucketName_1.checkBucketName(name); + const params = this._bucketRequestParams('POST', name, { wormExtend: '', wormId }, options); + const paramlXMLObJ = { + ExtendWormConfiguration: { + RetentionPeriodInDays: days + } + }; + params.mime = 'xml'; + params.content = obj2xml_1.obj2xml(paramlXMLObJ, { headers: true }); + params.successStatuses = [200]; + const result = await this.request(params); + return { + res: result.res, + status: result.status + }; +} +exports.extendBucketWorm = extendBucketWorm; diff --git a/node_modules/ali-oss/lib/common/bucket/extendBucketWorm.ts b/node_modules/ali-oss/lib/common/bucket/extendBucketWorm.ts new file mode 100644 index 0000000..e1d5ff8 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/extendBucketWorm.ts @@ -0,0 +1,21 @@ +import { checkBucketName } from '../utils/checkBucketName'; +import { obj2xml } from '../utils/obj2xml'; + +export async function extendBucketWorm(this: any, name: string, wormId: string, days: string | number, options) { + checkBucketName(name); + const params = this._bucketRequestParams('POST', name, { wormExtend: '', wormId }, options); + const paramlXMLObJ = { + ExtendWormConfiguration: { + RetentionPeriodInDays: days + } + }; + + params.mime = 'xml'; + params.content = obj2xml(paramlXMLObJ, { headers: true }); + params.successStatuses = [200]; + const result = await this.request(params); + return { + res: result.res, + status: result.status + }; +} diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketEncryption.js b/node_modules/ali-oss/lib/common/bucket/getBucketEncryption.js new file mode 100644 index 0000000..3686110 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketEncryption.js @@ -0,0 +1,21 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); + +const proto = exports; +/** + * getBucketEncryption + * @param {String} bucketName - bucket name + */ + +proto.getBucketEncryption = async function getBucketEncryption(bucketName) { + _checkBucketName(bucketName); + const params = this._bucketRequestParams('GET', bucketName, 'encryption'); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + const encryption = result.data.ApplyServerSideEncryptionByDefault; + return { + encryption, + status: result.status, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketInventory.d.ts b/node_modules/ali-oss/lib/common/bucket/getBucketInventory.d.ts new file mode 100644 index 0000000..8cf2bee --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketInventory.d.ts @@ -0,0 +1,11 @@ +/** + * getBucketInventory + * @param {String} bucketName - bucket name + * @param {String} inventoryId + * @param {Object} options + */ +export declare function getBucketInventory(this: any, bucketName: string, inventoryId: string, options?: any): Promise<{ + status: any; + res: any; + inventory: any; +}>; diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketInventory.js b/node_modules/ali-oss/lib/common/bucket/getBucketInventory.js new file mode 100644 index 0000000..f5e0f40 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketInventory.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getBucketInventory = void 0; +const checkBucketName_1 = require("../utils/checkBucketName"); +const formatInventoryConfig_1 = require("../utils/formatInventoryConfig"); +/** + * getBucketInventory + * @param {String} bucketName - bucket name + * @param {String} inventoryId + * @param {Object} options + */ +async function getBucketInventory(bucketName, inventoryId, options = {}) { + const subres = Object.assign({ inventory: '', inventoryId }, options.subres); + checkBucketName_1.checkBucketName(bucketName); + const params = this._bucketRequestParams('GET', bucketName, subres, options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + return { + status: result.status, + res: result.res, + inventory: formatInventoryConfig_1.formatInventoryConfig(result.data) + }; +} +exports.getBucketInventory = getBucketInventory; diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketInventory.ts b/node_modules/ali-oss/lib/common/bucket/getBucketInventory.ts new file mode 100644 index 0000000..65c00c9 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketInventory.ts @@ -0,0 +1,24 @@ +import { checkBucketName } from '../utils/checkBucketName'; +import { formatInventoryConfig } from '../utils/formatInventoryConfig'; +/** + * getBucketInventory + * @param {String} bucketName - bucket name + * @param {String} inventoryId + * @param {Object} options + */ + +export async function getBucketInventory(this: any, bucketName: string, inventoryId: string, options: any = {}) { + const subres: any = Object.assign({ inventory: '', inventoryId }, options.subres); + checkBucketName(bucketName); + + const params = this._bucketRequestParams('GET', bucketName, subres, options); + params.successStatuses = [200]; + + params.xmlResponse = true; + const result = await this.request(params); + return { + status: result.status, + res: result.res, + inventory: formatInventoryConfig(result.data) + }; +} diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketLifecycle.js b/node_modules/ali-oss/lib/common/bucket/getBucketLifecycle.js new file mode 100644 index 0000000..86aedc4 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketLifecycle.js @@ -0,0 +1,33 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); +const { isArray } = require('../utils/isArray'); +const { formatObjKey } = require('../utils/formatObjKey'); + +const proto = exports; + +proto.getBucketLifecycle = async function getBucketLifecycle(name, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('GET', name, 'lifecycle', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + let rules = result.data.Rule || null; + if (rules) { + if (!isArray(rules)) { + rules = [rules]; + } + rules = rules.map(_ => { + if (_.ID) { + _.id = _.ID; + delete _.ID; + } + if (_.Tag && !isArray(_.Tag)) { + _.Tag = [_.Tag]; + } + return formatObjKey(_, 'firstLowerCase'); + }); + } + return { + rules, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketPolicy.js b/node_modules/ali-oss/lib/common/bucket/getBucketPolicy.js new file mode 100644 index 0000000..cb2e7ab --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketPolicy.js @@ -0,0 +1,28 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); + +const proto = exports; +/** + * getBucketPolicy + * @param {String} bucketName - bucket name + * @param {Object} options + */ + +proto.getBucketPolicy = async function getBucketPolicy(bucketName, options = {}) { + _checkBucketName(bucketName); + + const params = this._bucketRequestParams('GET', bucketName, 'policy', options); + + const result = await this.request(params); + params.successStatuses = [200]; + let policy = null; + + if (result.res.status === 200) { + policy = JSON.parse(result.res.data.toString()); + } + + return { + policy, + status: result.status, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketRequestPayment.js b/node_modules/ali-oss/lib/common/bucket/getBucketRequestPayment.js new file mode 100644 index 0000000..67c2280 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketRequestPayment.js @@ -0,0 +1,25 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); + +const proto = exports; +/** + * getBucketRequestPayment + * @param {String} bucketName - bucket name + * @param {Object} options + */ + +proto.getBucketRequestPayment = async function getBucketRequestPayment(bucketName, options) { + options = options || {}; + + _checkBucketName(bucketName); + const params = this._bucketRequestParams('GET', bucketName, 'requestPayment', options); + params.successStatuses = [200]; + params.xmlResponse = true; + + const result = await this.request(params); + + return { + status: result.status, + res: result.res, + payer: result.data.Payer + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketStat.d.ts b/node_modules/ali-oss/lib/common/bucket/getBucketStat.d.ts new file mode 100644 index 0000000..c314f2b --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketStat.d.ts @@ -0,0 +1,23 @@ +interface bucketStatRes { + Storage: string; + ObjectCount: string; + MultipartUploadCount: string; + LiveChannelCount: string; + LastModifiedTime: string; + StandardStorage: string; + StandardObjectCount: string; + InfrequentAccessStorage: string; + InfrequentAccessRealStorage: string; + InfrequentAccessObjectCount: string; + ArchiveStorage: string; + ArchiveRealStorage: string; + ArchiveObjectCount: string; + ColdArchiveStorage: string; + ColdArchiveRealStorage: string; + ColdArchiveObjectCount: string; +} +export declare function getBucketStat(this: any, name: string, options: {}): Promise<{ + res: any; + stat: bucketStatRes; +}>; +export {}; diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketStat.js b/node_modules/ali-oss/lib/common/bucket/getBucketStat.js new file mode 100644 index 0000000..b0bc418 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketStat.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getBucketStat = void 0; +const checkBucketName_1 = require("../utils/checkBucketName"); +async function getBucketStat(name, options) { + name = name || this.options.bucket; + checkBucketName_1.checkBucketName(name); + const params = this._bucketRequestParams('GET', name, 'stat', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + return { + res: result.res, + stat: result.data + }; +} +exports.getBucketStat = getBucketStat; diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketStat.ts b/node_modules/ali-oss/lib/common/bucket/getBucketStat.ts new file mode 100644 index 0000000..297f961 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketStat.ts @@ -0,0 +1,34 @@ +import { checkBucketName } from '../utils/checkBucketName'; + +interface bucketStatRes { + Storage: string; + ObjectCount: string; + MultipartUploadCount: string; + LiveChannelCount: string; + LastModifiedTime: string; + StandardStorage: string; + StandardObjectCount: string; + InfrequentAccessStorage: string; + InfrequentAccessRealStorage: string; + InfrequentAccessObjectCount: string; + ArchiveStorage: string; + ArchiveRealStorage: string; + ArchiveObjectCount: string; + ColdArchiveStorage: string; + ColdArchiveRealStorage: string; + ColdArchiveObjectCount: string; +} + +export async function getBucketStat(this: any, name: string, options: {}): Promise<{ res: any; stat: bucketStatRes }> { + name = name || this.options.bucket; + checkBucketName(name); + const params = this._bucketRequestParams('GET', name, 'stat', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + + return { + res: result.res, + stat: result.data + }; +} diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketTags.js b/node_modules/ali-oss/lib/common/bucket/getBucketTags.js new file mode 100644 index 0000000..baf93f0 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketTags.js @@ -0,0 +1,23 @@ +const proto = exports; +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); +const { formatTag } = require('../utils/formatTag'); +/** + * getBucketTags + * @param {String} name - bucket name + * @param {Object} options + * @return {Object} + */ + +proto.getBucketTags = async function getBucketTags(name, options = {}) { + _checkBucketName(name); + const params = this._bucketRequestParams('GET', name, 'tagging', options); + params.successStatuses = [200]; + const result = await this.request(params); + const Tagging = await this.parseXML(result.data); + + return { + status: result.status, + res: result.res, + tag: formatTag(Tagging) + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketVersioning.js b/node_modules/ali-oss/lib/common/bucket/getBucketVersioning.js new file mode 100644 index 0000000..70b550c --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketVersioning.js @@ -0,0 +1,22 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); + +const proto = exports; +/** + * getBucketVersioning + * @param {String} bucketName - bucket name + */ + +proto.getBucketVersioning = async function getBucketVersioning(bucketName, options) { + _checkBucketName(bucketName); + const params = this._bucketRequestParams('GET', bucketName, 'versioning', options); + params.xmlResponse = true; + params.successStatuses = [200]; + const result = await this.request(params); + + const versionStatus = result.data.Status; + return { + status: result.status, + versionStatus, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketWebsite.js b/node_modules/ali-oss/lib/common/bucket/getBucketWebsite.js new file mode 100644 index 0000000..eaf30ee --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketWebsite.js @@ -0,0 +1,28 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); +const { isObject } = require('../utils/isObject'); + +const proto = exports; + +proto.getBucketWebsite = async function getBucketWebsite(name, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('GET', name, 'website', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + let routingRules = []; + if (result.data.RoutingRules && result.data.RoutingRules.RoutingRule) { + if (isObject(result.data.RoutingRules.RoutingRule)) { + routingRules = [result.data.RoutingRules.RoutingRule]; + } else { + routingRules = result.data.RoutingRules.RoutingRule; + } + } + return { + index: (result.data.IndexDocument && result.data.IndexDocument.Suffix) || '', + supportSubDir: (result.data.IndexDocument && result.data.IndexDocument.SupportSubDir) || 'false', + type: result.data.IndexDocument && result.data.IndexDocument.Type, + routingRules, + error: (result.data.ErrorDocument && result.data.ErrorDocument.Key) || null, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketWorm.d.ts b/node_modules/ali-oss/lib/common/bucket/getBucketWorm.d.ts new file mode 100644 index 0000000..f5f4be2 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketWorm.d.ts @@ -0,0 +1 @@ +export declare function getBucketWorm(this: any, name: string, options: any): Promise<any>; diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketWorm.js b/node_modules/ali-oss/lib/common/bucket/getBucketWorm.js new file mode 100644 index 0000000..c2609aa --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketWorm.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getBucketWorm = void 0; +const checkBucketName_1 = require("../utils/checkBucketName"); +const dataFix_1 = require("../utils/dataFix"); +async function getBucketWorm(name, options) { + checkBucketName_1.checkBucketName(name); + const params = this._bucketRequestParams('GET', name, 'worm', options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + dataFix_1.dataFix(result.data, { + lowerFirst: true, + rename: { + RetentionPeriodInDays: 'days' + } + }); + return Object.assign(Object.assign({}, result.data), { res: result.res, status: result.status }); +} +exports.getBucketWorm = getBucketWorm; diff --git a/node_modules/ali-oss/lib/common/bucket/getBucketWorm.ts b/node_modules/ali-oss/lib/common/bucket/getBucketWorm.ts new file mode 100644 index 0000000..46b5b00 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/getBucketWorm.ts @@ -0,0 +1,22 @@ +import { checkBucketName } from '../utils/checkBucketName'; +import { dataFix } from '../utils/dataFix'; + +export async function getBucketWorm(this: any, name: string, options) { + checkBucketName(name); + const params = this._bucketRequestParams('GET', name, 'worm', options); + params.successStatuses = [200]; + params.xmlResponse = true; + + const result = await this.request(params); + dataFix(result.data, { + lowerFirst: true, + rename: { + RetentionPeriodInDays: 'days' + } + }); + return { + ...result.data, + res: result.res, + status: result.status + }; +} diff --git a/node_modules/ali-oss/lib/common/bucket/index.js b/node_modules/ali-oss/lib/common/bucket/index.js new file mode 100644 index 0000000..3e394e0 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/index.js @@ -0,0 +1,34 @@ +const merge = require('merge-descriptors'); + +const proto = exports; + +merge(proto, require('./getBucketRequestPayment')); +merge(proto, require('./putBucketRequestPayment')); +merge(proto, require('./putBucketEncryption')); +merge(proto, require('./getBucketEncryption')); +merge(proto, require('./deleteBucketEncryption')); +merge(proto, require('./getBucketTags')); +merge(proto, require('./putBucketTags')); +merge(proto, require('./deleteBucketTags')); +merge(proto, require('./putBucket')); +merge(proto, require('./getBucketWebsite')); +merge(proto, require('./putBucketWebsite')); +merge(proto, require('./deleteBucketWebsite')); +merge(proto, require('./getBucketLifecycle')); +merge(proto, require('./putBucketLifecycle')); +merge(proto, require('./deleteBucketLifecycle')); +merge(proto, require('./getBucketPolicy')); +merge(proto, require('./putBucketPolicy')); +merge(proto, require('./deleteBucketPolicy')); +merge(proto, require('./getBucketVersioning')); +merge(proto, require('./putBucketVersioning')); +merge(proto, require('./getBucketInventory')); +merge(proto, require('./deleteBucketInventory')); +merge(proto, require('./listBucketInventory')); +merge(proto, require('./putBucketInventory')); +merge(proto, require('./abortBucketWorm')); +merge(proto, require('./completeBucketWorm')); +merge(proto, require('./extendBucketWorm')); +merge(proto, require('./getBucketWorm')); +merge(proto, require('./initiateBucketWorm')); +merge(proto, require('./getBucketStat')); diff --git a/node_modules/ali-oss/lib/common/bucket/initiateBucketWorm.d.ts b/node_modules/ali-oss/lib/common/bucket/initiateBucketWorm.d.ts new file mode 100644 index 0000000..c567031 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/initiateBucketWorm.d.ts @@ -0,0 +1,5 @@ +export declare function initiateBucketWorm(this: any, name: string, days: string, options: any): Promise<{ + res: any; + wormId: any; + status: any; +}>; diff --git a/node_modules/ali-oss/lib/common/bucket/initiateBucketWorm.js b/node_modules/ali-oss/lib/common/bucket/initiateBucketWorm.js new file mode 100644 index 0000000..b85bb37 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/initiateBucketWorm.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.initiateBucketWorm = void 0; +const obj2xml_1 = require("../utils/obj2xml"); +const checkBucketName_1 = require("../utils/checkBucketName"); +async function initiateBucketWorm(name, days, options) { + checkBucketName_1.checkBucketName(name); + const params = this._bucketRequestParams('POST', name, 'worm', options); + const paramlXMLObJ = { + InitiateWormConfiguration: { + RetentionPeriodInDays: days + } + }; + params.mime = 'xml'; + params.content = obj2xml_1.obj2xml(paramlXMLObJ, { headers: true }); + params.successStatuses = [200]; + const result = await this.request(params); + return { + res: result.res, + wormId: result.res.headers['x-oss-worm-id'], + status: result.status + }; +} +exports.initiateBucketWorm = initiateBucketWorm; diff --git a/node_modules/ali-oss/lib/common/bucket/initiateBucketWorm.ts b/node_modules/ali-oss/lib/common/bucket/initiateBucketWorm.ts new file mode 100644 index 0000000..55af84d --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/initiateBucketWorm.ts @@ -0,0 +1,23 @@ +import { obj2xml } from '../utils/obj2xml'; +import { checkBucketName } from '../utils/checkBucketName'; + +export async function initiateBucketWorm(this: any, name: string, days: string, options) { + checkBucketName(name); + const params = this._bucketRequestParams('POST', name, 'worm', options); + const paramlXMLObJ = { + InitiateWormConfiguration: { + RetentionPeriodInDays: days + } + }; + + params.mime = 'xml'; + params.content = obj2xml(paramlXMLObJ, { headers: true }); + params.successStatuses = [200]; + + const result = await this.request(params); + return { + res: result.res, + wormId: result.res.headers['x-oss-worm-id'], + status: result.status + }; +} diff --git a/node_modules/ali-oss/lib/common/bucket/listBucketInventory.d.ts b/node_modules/ali-oss/lib/common/bucket/listBucketInventory.d.ts new file mode 100644 index 0000000..5800a1a --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/listBucketInventory.d.ts @@ -0,0 +1,13 @@ +/** + * listBucketInventory + * @param {String} bucketName - bucket name + * @param {String} inventoryId + * @param {Object} options + */ +export declare function listBucketInventory(this: any, bucketName: string, options?: any): Promise<{ + isTruncated: boolean; + nextContinuationToken: any; + inventoryList: any; + status: any; + res: any; +}>; diff --git a/node_modules/ali-oss/lib/common/bucket/listBucketInventory.js b/node_modules/ali-oss/lib/common/bucket/listBucketInventory.js new file mode 100644 index 0000000..b311ebe --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/listBucketInventory.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.listBucketInventory = void 0; +const checkBucketName_1 = require("../utils/checkBucketName"); +const formatInventoryConfig_1 = require("../utils/formatInventoryConfig"); +/** + * listBucketInventory + * @param {String} bucketName - bucket name + * @param {String} inventoryId + * @param {Object} options + */ +async function listBucketInventory(bucketName, options = {}) { + const { continuationToken } = options; + const subres = Object.assign({ inventory: '' }, continuationToken && { 'continuation-token': continuationToken }, options.subres); + checkBucketName_1.checkBucketName(bucketName); + const params = this._bucketRequestParams('GET', bucketName, subres, options); + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + const { data, res, status } = result; + return { + isTruncated: data.IsTruncated === 'true', + nextContinuationToken: data.NextContinuationToken, + inventoryList: formatInventoryConfig_1.formatInventoryConfig(data.InventoryConfiguration, true), + status, + res + }; +} +exports.listBucketInventory = listBucketInventory; diff --git a/node_modules/ali-oss/lib/common/bucket/listBucketInventory.ts b/node_modules/ali-oss/lib/common/bucket/listBucketInventory.ts new file mode 100644 index 0000000..65a1a73 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/listBucketInventory.ts @@ -0,0 +1,32 @@ +import { checkBucketName } from '../utils/checkBucketName'; +import { formatInventoryConfig } from '../utils/formatInventoryConfig'; +/** + * listBucketInventory + * @param {String} bucketName - bucket name + * @param {String} inventoryId + * @param {Object} options + */ + +export async function listBucketInventory(this: any, bucketName: string, options: any = {}) { + const { continuationToken } = options; + const subres: any = Object.assign( + { inventory: '' }, + continuationToken && { 'continuation-token': continuationToken }, + options.subres + ); + checkBucketName(bucketName); + + const params = this._bucketRequestParams('GET', bucketName, subres, options); + params.successStatuses = [200]; + + params.xmlResponse = true; + const result = await this.request(params); + const { data, res, status } = result; + return { + isTruncated: data.IsTruncated === 'true', + nextContinuationToken: data.NextContinuationToken, + inventoryList: formatInventoryConfig(data.InventoryConfiguration, true), + status, + res + }; +} diff --git a/node_modules/ali-oss/lib/common/bucket/putBucket.js b/node_modules/ali-oss/lib/common/bucket/putBucket.js new file mode 100644 index 0000000..b3ca8f7 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/putBucket.js @@ -0,0 +1,31 @@ +const proto = exports; +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); +const { obj2xml } = require('../utils/obj2xml'); + +proto.putBucket = async function putBucket(name, options = {}) { + _checkBucketName(name, true); + const params = this._bucketRequestParams('PUT', name, '', options); + + const CreateBucketConfiguration = {}; + const paramlXMLObJ = { + CreateBucketConfiguration + }; + + const storageClass = options.StorageClass || options.storageClass; + const dataRedundancyType = options.DataRedundancyType || options.dataRedundancyType; + if (storageClass || dataRedundancyType) { + storageClass && (CreateBucketConfiguration.StorageClass = storageClass); + dataRedundancyType && (CreateBucketConfiguration.DataRedundancyType = dataRedundancyType); + params.mime = 'xml'; + params.content = obj2xml(paramlXMLObJ, { headers: true }); + } + const { acl, headers = {} } = options; + acl && (headers['x-oss-acl'] = acl); + params.headers = headers; + params.successStatuses = [200]; + const result = await this.request(params); + return { + bucket: (result.headers.location && result.headers.location.substring(1)) || null, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/putBucketEncryption.js b/node_modules/ali-oss/lib/common/bucket/putBucketEncryption.js new file mode 100644 index 0000000..c42ed62 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/putBucketEncryption.js @@ -0,0 +1,36 @@ +const proto = exports; +// const jstoxml = require('jstoxml'); +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); +const { obj2xml } = require('../utils/obj2xml'); +/** + * putBucketEncryption + * @param {String} bucketName - bucket name + * @param {Object} options + */ + +proto.putBucketEncryption = async function putBucketEncryption(bucketName, options) { + options = options || {}; + _checkBucketName(bucketName); + const params = this._bucketRequestParams('PUT', bucketName, 'encryption', options); + params.successStatuses = [200]; + const paramXMLObj = { + ServerSideEncryptionRule: { + ApplyServerSideEncryptionByDefault: { + SSEAlgorithm: options.SSEAlgorithm + } + } + }; + if (options.KMSMasterKeyID !== undefined) { + paramXMLObj.ServerSideEncryptionRule.ApplyServerSideEncryptionByDefault.KMSMasterKeyID = options.KMSMasterKeyID; + } + const paramXML = obj2xml(paramXMLObj, { + headers: true + }); + params.mime = 'xml'; + params.content = paramXML; + const result = await this.request(params); + return { + status: result.status, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/putBucketInventory.d.ts b/node_modules/ali-oss/lib/common/bucket/putBucketInventory.d.ts new file mode 100644 index 0000000..44e496c --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/putBucketInventory.d.ts @@ -0,0 +1,36 @@ +declare type Field = 'Size | LastModifiedDate | ETag | StorageClass | IsMultipartUploaded | EncryptionStatus | ObjectAcl | TaggingCount | ObjectType | Crc64'; +interface Inventory { + id: string; + isEnabled: true | false; + prefix?: string; + OSSBucketDestination: { + format: 'CSV'; + accountId: string; + rolename: string; + bucket: string; + prefix?: string; + encryption?: { + 'SSE-OSS': ''; + } | { + 'SSE-KMS': { + keyId: string; + }; + }; + }; + frequency: 'Daily' | 'Weekly'; + includedObjectVersions: 'Current' | 'All'; + optionalFields?: { + field?: Field[]; + }; +} +/** + * putBucketInventory + * @param {String} bucketName - bucket name + * @param {Inventory} inventory + * @param {Object} options + */ +export declare function putBucketInventory(this: any, bucketName: string, inventory: Inventory, options?: any): Promise<{ + status: any; + res: any; +}>; +export {}; diff --git a/node_modules/ali-oss/lib/common/bucket/putBucketInventory.js b/node_modules/ali-oss/lib/common/bucket/putBucketInventory.js new file mode 100644 index 0000000..d4d070b --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/putBucketInventory.js @@ -0,0 +1,58 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.putBucketInventory = void 0; +const checkBucketName_1 = require("../utils/checkBucketName"); +const obj2xml_1 = require("../utils/obj2xml"); +/** + * putBucketInventory + * @param {String} bucketName - bucket name + * @param {Inventory} inventory + * @param {Object} options + */ +async function putBucketInventory(bucketName, inventory, options = {}) { + const subres = Object.assign({ inventory: '', inventoryId: inventory.id }, options.subres); + checkBucketName_1.checkBucketName(bucketName); + const { OSSBucketDestination, optionalFields, includedObjectVersions } = inventory; + const destinationBucketPrefix = 'acs:oss:::'; + const rolePrefix = `acs:ram::${OSSBucketDestination.accountId}:role/`; + const paramXMLObj = { + InventoryConfiguration: { + Id: inventory.id, + IsEnabled: inventory.isEnabled, + Filter: { + Prefix: inventory.prefix || '' + }, + Destination: { + OSSBucketDestination: { + Format: OSSBucketDestination.format, + AccountId: OSSBucketDestination.accountId, + RoleArn: `${rolePrefix}${OSSBucketDestination.rolename}`, + Bucket: `${destinationBucketPrefix}${OSSBucketDestination.bucket}`, + Prefix: OSSBucketDestination.prefix || '', + Encryption: OSSBucketDestination.encryption || '' + } + }, + Schedule: { + Frequency: inventory.frequency + }, + IncludedObjectVersions: includedObjectVersions, + OptionalFields: { + Field: (optionalFields === null || optionalFields === void 0 ? void 0 : optionalFields.field) || [] + } + } + }; + const paramXML = obj2xml_1.obj2xml(paramXMLObj, { + headers: true, + firstUpperCase: true + }); + const params = this._bucketRequestParams('PUT', bucketName, subres, options); + params.successStatuses = [200]; + params.mime = 'xml'; + params.content = paramXML; + const result = await this.request(params); + return { + status: result.status, + res: result.res + }; +} +exports.putBucketInventory = putBucketInventory; diff --git a/node_modules/ali-oss/lib/common/bucket/putBucketInventory.ts b/node_modules/ali-oss/lib/common/bucket/putBucketInventory.ts new file mode 100644 index 0000000..6bc53b1 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/putBucketInventory.ts @@ -0,0 +1,85 @@ +import { checkBucketName } from '../utils/checkBucketName'; +import { obj2xml } from '../utils/obj2xml'; + +type Field = + 'Size | LastModifiedDate | ETag | StorageClass | IsMultipartUploaded | EncryptionStatus | ObjectAcl | TaggingCount | ObjectType | Crc64'; + +interface Inventory { + id: string; + isEnabled: true | false; + prefix?: string; + OSSBucketDestination: { + format: 'CSV'; + accountId: string; + rolename: string; + bucket: string; + prefix?: string; + encryption?: + | { 'SSE-OSS': '' } + | { + 'SSE-KMS': { + keyId: string; + }; + }; + }; + frequency: 'Daily' | 'Weekly'; + includedObjectVersions: 'Current' | 'All'; + optionalFields?: { + field?: Field[]; + }; +} + +/** + * putBucketInventory + * @param {String} bucketName - bucket name + * @param {Inventory} inventory + * @param {Object} options + */ + +export async function putBucketInventory(this: any, bucketName: string, inventory: Inventory, options: any = {}) { + const subres: any = Object.assign({ inventory: '', inventoryId: inventory.id }, options.subres); + checkBucketName(bucketName); + const { OSSBucketDestination, optionalFields, includedObjectVersions } = inventory; + const destinationBucketPrefix = 'acs:oss:::'; + const rolePrefix = `acs:ram::${OSSBucketDestination.accountId}:role/`; + const paramXMLObj: any = { + InventoryConfiguration: { + Id: inventory.id, + IsEnabled: inventory.isEnabled, + Filter: { + Prefix: inventory.prefix || '' + }, + Destination: { + OSSBucketDestination: { + Format: OSSBucketDestination.format, + AccountId: OSSBucketDestination.accountId, + RoleArn: `${rolePrefix}${OSSBucketDestination.rolename}`, + Bucket: `${destinationBucketPrefix}${OSSBucketDestination.bucket}`, + Prefix: OSSBucketDestination.prefix || '', + Encryption: OSSBucketDestination.encryption || '' + } + }, + Schedule: { + Frequency: inventory.frequency + }, + IncludedObjectVersions: includedObjectVersions, + OptionalFields: { + Field: optionalFields?.field || [] + } + } + }; + const paramXML = obj2xml(paramXMLObj, { + headers: true, + firstUpperCase: true + }); + + const params = this._bucketRequestParams('PUT', bucketName, subres, options); + params.successStatuses = [200]; + params.mime = 'xml'; + params.content = paramXML; + const result = await this.request(params); + return { + status: result.status, + res: result.res + }; +} diff --git a/node_modules/ali-oss/lib/common/bucket/putBucketLifecycle.js b/node_modules/ali-oss/lib/common/bucket/putBucketLifecycle.js new file mode 100644 index 0000000..f3e601b --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/putBucketLifecycle.js @@ -0,0 +1,155 @@ +/* eslint-disable no-use-before-define */ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); +const { isArray } = require('../utils/isArray'); +const { deepCopy } = require('../utils/deepCopy'); +const { isObject } = require('../utils/isObject'); +const { obj2xml } = require('../utils/obj2xml'); +const { checkObjectTag } = require('../utils/checkObjectTag'); +const { getStrBytesCount } = require('../utils/getStrBytesCount'); + +const proto = exports; + +proto.putBucketLifecycle = async function putBucketLifecycle(name, rules, options) { + _checkBucketName(name); + + if (!isArray(rules)) { + throw new Error('rules must be Array'); + } + + const params = this._bucketRequestParams('PUT', name, 'lifecycle', options); + const Rule = []; + const paramXMLObj = { + LifecycleConfiguration: { + Rule + } + }; + + rules.forEach(_ => { + defaultDaysAndDate2Expiration(_); // todo delete, 兼容旧版本 + checkRule(_); + if (_.id) { + _.ID = _.id; + delete _.id; + } + Rule.push(_); + }); + + const paramXML = obj2xml(paramXMLObj, { + headers: true, + firstUpperCase: true + }); + + params.content = paramXML; + params.mime = 'xml'; + params.successStatuses = [200]; + const result = await this.request(params); + return { + res: result.res + }; +}; + +// todo delete, 兼容旧版本 +function defaultDaysAndDate2Expiration(obj) { + if (obj.days) { + obj.expiration = { + days: obj.days + }; + } + if (obj.date) { + obj.expiration = { + createdBeforeDate: obj.date + }; + } +} + +function checkDaysAndDate(obj, key) { + const { days, createdBeforeDate } = obj; + if (!days && !createdBeforeDate) { + throw new Error(`${key} must includes days or createdBeforeDate`); + } else if (days && (isArray(days) || !/^[1-9][0-9]*$/.test(days))) { + throw new Error('days must be a positive integer'); + } else if (createdBeforeDate && !/\d{4}-\d{2}-\d{2}T00:00:00.000Z/.test(createdBeforeDate)) { + throw new Error('createdBeforeDate must be date and conform to iso8601 format'); + } +} + +function checkNoncurrentDays(obj, key) { + const { noncurrentDays } = obj; + if (!noncurrentDays) { + throw new Error(`${key} must includes noncurrentDays`); + } else if (noncurrentDays && (isArray(noncurrentDays) || !/^[1-9][0-9]*$/.test(noncurrentDays))) { + throw new Error('noncurrentDays must be a positive integer'); + } +} + +function handleCheckTag(tag) { + if (!isArray(tag) && !isObject(tag)) { + throw new Error('tag must be Object or Array'); + } + tag = isObject(tag) ? [tag] : tag; + const tagObj = {}; + const tagClone = deepCopy(tag); + tagClone.forEach(v => { + tagObj[v.key] = v.value; + }); + + checkObjectTag(tagObj); +} + +function checkStorageClass(storageClass) { + if (!['IA', 'Archive', 'ColdArchive', 'DeepColdArchive'].includes(storageClass)) + throw new Error(`StorageClass must be IA or Archive or ColdArchive or DeepColdArchive`); +} + +function checkRule(rule) { + if (rule.id && getStrBytesCount(rule.id) > 255) throw new Error('ID is composed of 255 bytes at most'); + + if (rule.prefix === undefined) throw new Error('Rule must includes prefix'); + + if (!['Enabled', 'Disabled'].includes(rule.status)) throw new Error('Status must be Enabled or Disabled'); + + if ( + !rule.expiration && + !rule.noncurrentVersionExpiration && + !rule.abortMultipartUpload && + !rule.transition && + !rule.noncurrentVersionTransition + ) { + throw new Error( + 'Rule must includes expiration or noncurrentVersionExpiration or abortMultipartUpload or transition or noncurrentVersionTransition' + ); + } + + if (rule.transition) { + checkStorageClass(rule.transition.storageClass); + checkDaysAndDate(rule.transition, 'Transition'); + } + + if (rule.expiration) { + if (!rule.expiration.expiredObjectDeleteMarker) { + checkDaysAndDate(rule.expiration, 'Expiration'); + } else if (rule.expiration.days || rule.expiration.createdBeforeDate) { + throw new Error('expiredObjectDeleteMarker cannot be used with days or createdBeforeDate'); + } + } + + if (rule.abortMultipartUpload) { + checkDaysAndDate(rule.abortMultipartUpload, 'AbortMultipartUpload'); + } + + if (rule.noncurrentVersionTransition) { + checkStorageClass(rule.noncurrentVersionTransition.storageClass); + checkNoncurrentDays(rule.noncurrentVersionTransition, 'NoncurrentVersionTransition'); + } + + if (rule.noncurrentVersionExpiration) { + checkNoncurrentDays(rule.noncurrentVersionExpiration, 'NoncurrentVersionExpiration'); + } + + if (rule.tag) { + if (rule.abortMultipartUpload) { + throw new Error('Tag cannot be used with abortMultipartUpload'); + } + handleCheckTag(rule.tag); + } +} diff --git a/node_modules/ali-oss/lib/common/bucket/putBucketPolicy.js b/node_modules/ali-oss/lib/common/bucket/putBucketPolicy.js new file mode 100644 index 0000000..25b6d7f --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/putBucketPolicy.js @@ -0,0 +1,27 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); +const { policy2Str } = require('../utils/policy2Str'); +const { isObject } = require('../utils/isObject'); + +const proto = exports; +/** + * putBucketPolicy + * @param {String} bucketName - bucket name + * @param {Object} policy - bucket policy + * @param {Object} options + */ + +proto.putBucketPolicy = async function putBucketPolicy(bucketName, policy, options = {}) { + _checkBucketName(bucketName); + + if (!isObject(policy)) { + throw new Error('policy is not Object'); + } + const params = this._bucketRequestParams('PUT', bucketName, 'policy', options); + params.content = policy2Str(policy); + params.successStatuses = [200]; + const result = await this.request(params); + return { + status: result.status, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/putBucketRequestPayment.js b/node_modules/ali-oss/lib/common/bucket/putBucketRequestPayment.js new file mode 100644 index 0000000..48de9ec --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/putBucketRequestPayment.js @@ -0,0 +1,40 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); +const { obj2xml } = require('../utils/obj2xml'); + +const proto = exports; +/** + * putBucketRequestPayment + * @param {String} bucketName + * @param {String} payer + * @param {Object} options + */ +const payerAll = ['BucketOwner', 'Requester']; + +proto.putBucketRequestPayment = async function putBucketRequestPayment(bucketName, payer, options) { + options = options || {}; + if (!payer || payerAll.indexOf(payer) < 0) { + throw new Error('payer must be BucketOwner or Requester'); + } + + _checkBucketName(bucketName); + const params = this._bucketRequestParams('PUT', bucketName, 'requestPayment', options); + params.successStatuses = [200]; + + const paramXMLObj = { + RequestPaymentConfiguration: { + Payer: payer + } + }; + const paramXML = obj2xml(paramXMLObj, { + headers: true + }); + + params.mime = 'xml'; + params.content = paramXML; + + const result = await this.request(params); + return { + status: result.status, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/putBucketTags.js b/node_modules/ali-oss/lib/common/bucket/putBucketTags.js new file mode 100644 index 0000000..44e4832 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/putBucketTags.js @@ -0,0 +1,39 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); +const { obj2xml } = require('../utils/obj2xml'); +const { checkBucketTag } = require('../utils/checkBucketTag'); + +const proto = exports; +/** + * putBucketTags + * @param {String} name - bucket name + * @param {Object} tag - bucket tag, eg: `{a: "1", b: "2"}` + * @param {Object} options + */ + +proto.putBucketTags = async function putBucketTags(name, tag, options = {}) { + _checkBucketName(name); + checkBucketTag(tag); + const params = this._bucketRequestParams('PUT', name, 'tagging', options); + params.successStatuses = [200]; + tag = Object.keys(tag).map(key => ({ + Key: key, + Value: tag[key] + })); + + const paramXMLObj = { + Tagging: { + TagSet: { + Tag: tag + } + } + }; + + params.mime = 'xml'; + params.content = obj2xml(paramXMLObj); + + const result = await this.request(params); + return { + res: result.res, + status: result.status + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/putBucketVersioning.js b/node_modules/ali-oss/lib/common/bucket/putBucketVersioning.js new file mode 100644 index 0000000..d180854 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/putBucketVersioning.js @@ -0,0 +1,35 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); +const { obj2xml } = require('../utils/obj2xml'); + +const proto = exports; +/** + * putBucketVersioning + * @param {String} name - bucket name + * @param {String} status + * @param {Object} options + */ + +proto.putBucketVersioning = async function putBucketVersioning(name, status, options = {}) { + _checkBucketName(name); + if (!['Enabled', 'Suspended'].includes(status)) { + throw new Error('status must be Enabled or Suspended'); + } + const params = this._bucketRequestParams('PUT', name, 'versioning', options); + + const paramXMLObj = { + VersioningConfiguration: { + Status: status + } + }; + + params.mime = 'xml'; + params.content = obj2xml(paramXMLObj, { + headers: true + }); + + const result = await this.request(params); + return { + res: result.res, + status: result.status + }; +}; diff --git a/node_modules/ali-oss/lib/common/bucket/putBucketWebsite.js b/node_modules/ali-oss/lib/common/bucket/putBucketWebsite.js new file mode 100644 index 0000000..d15f161 --- /dev/null +++ b/node_modules/ali-oss/lib/common/bucket/putBucketWebsite.js @@ -0,0 +1,50 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); +const { obj2xml } = require('../utils/obj2xml'); +const { isArray } = require('../utils/isArray'); + +const proto = exports; +proto.putBucketWebsite = async function putBucketWebsite(name, config = {}, options) { + _checkBucketName(name); + const params = this._bucketRequestParams('PUT', name, 'website', options); + const IndexDocument = { + Suffix: config.index || 'index.html' + }; + const WebsiteConfiguration = { + IndexDocument + }; + let website = { + WebsiteConfiguration + }; + + if (config.supportSubDir) { + IndexDocument.SupportSubDir = config.supportSubDir; + } + + if (config.type) { + IndexDocument.Type = config.type; + } + + if (config.error) { + WebsiteConfiguration.ErrorDocument = { + Key: config.error + }; + } + + if (config.routingRules !== undefined) { + if (!isArray(config.routingRules)) { + throw new Error('RoutingRules must be Array'); + } + WebsiteConfiguration.RoutingRules = { + RoutingRule: config.routingRules + }; + } + + website = obj2xml(website); + params.content = website; + params.mime = 'xml'; + params.successStatuses = [200]; + const result = await this.request(params); + return { + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/callback.js b/node_modules/ali-oss/lib/common/callback.js new file mode 100644 index 0000000..4b1d393 --- /dev/null +++ b/node_modules/ali-oss/lib/common/callback.js @@ -0,0 +1,30 @@ +exports.encodeCallback = function encodeCallback(reqParams, options) { + reqParams.headers = reqParams.headers || {}; + if (!Object.prototype.hasOwnProperty.call(reqParams.headers, 'x-oss-callback')) { + if (options.callback) { + const json = { + callbackUrl: encodeURI(options.callback.url), + callbackBody: options.callback.body + }; + if (options.callback.host) { + json.callbackHost = options.callback.host; + } + if (options.callback.contentType) { + json.callbackBodyType = options.callback.contentType; + } + if (options.callback.callbackSNI) { + json.callbackSNI = options.callback.callbackSNI; + } + const callback = Buffer.from(JSON.stringify(json)).toString('base64'); + reqParams.headers['x-oss-callback'] = callback; + + if (options.callback.customValue) { + const callbackVar = {}; + Object.keys(options.callback.customValue).forEach(key => { + callbackVar[`x:${key}`] = options.callback.customValue[key].toString(); + }); + reqParams.headers['x-oss-callback-var'] = Buffer.from(JSON.stringify(callbackVar)).toString('base64'); + } + } + } +}; diff --git a/node_modules/ali-oss/lib/common/client/getReqUrl.d.ts b/node_modules/ali-oss/lib/common/client/getReqUrl.d.ts new file mode 100644 index 0000000..e4006b5 --- /dev/null +++ b/node_modules/ali-oss/lib/common/client/getReqUrl.d.ts @@ -0,0 +1 @@ +export declare function getReqUrl(this: any, params: any): string; diff --git a/node_modules/ali-oss/lib/common/client/getReqUrl.js b/node_modules/ali-oss/lib/common/client/getReqUrl.js new file mode 100644 index 0000000..e73248b --- /dev/null +++ b/node_modules/ali-oss/lib/common/client/getReqUrl.js @@ -0,0 +1,52 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getReqUrl = void 0; +const copy_to_1 = __importDefault(require("copy-to")); +const url_1 = __importDefault(require("url")); +const merge_descriptors_1 = __importDefault(require("merge-descriptors")); +const is_type_of_1 = __importDefault(require("is-type-of")); +const isIP_1 = require("../utils/isIP"); +const checkConfigValid_1 = require("../utils/checkConfigValid"); +function getReqUrl(params) { + const ep = {}; + const isCname = this.options.cname; + checkConfigValid_1.checkConfigValid(this.options.endpoint, 'endpoint'); + copy_to_1.default(this.options.endpoint, false).to(ep); + if (params.bucket && !isCname && !isIP_1.isIP(ep.hostname) && !this.options.sldEnable) { + ep.host = `${params.bucket}.${ep.host}`; + } + let resourcePath = '/'; + if (params.bucket && this.options.sldEnable) { + resourcePath += `${params.bucket}/`; + } + if (params.object) { + // Preserve '/' in result url + resourcePath += this._escape(params.object).replace(/\+/g, '%2B'); + } + ep.pathname = resourcePath; + const query = {}; + if (params.query) { + merge_descriptors_1.default(query, params.query); + } + if (params.subres) { + let subresAsQuery = {}; + if (is_type_of_1.default.string(params.subres)) { + subresAsQuery[params.subres] = ''; + } + else if (is_type_of_1.default.array(params.subres)) { + params.subres.forEach(k => { + subresAsQuery[k] = ''; + }); + } + else { + subresAsQuery = params.subres; + } + merge_descriptors_1.default(query, subresAsQuery); + } + ep.query = query; + return url_1.default.format(ep); +} +exports.getReqUrl = getReqUrl; diff --git a/node_modules/ali-oss/lib/common/client/getReqUrl.ts b/node_modules/ali-oss/lib/common/client/getReqUrl.ts new file mode 100644 index 0000000..c1f3321 --- /dev/null +++ b/node_modules/ali-oss/lib/common/client/getReqUrl.ts @@ -0,0 +1,51 @@ +import copy from 'copy-to'; +import urlutil from 'url'; +import merge from 'merge-descriptors'; +import is from 'is-type-of'; +import { isIP } from '../utils/isIP'; +import { checkConfigValid } from '../utils/checkConfigValid'; + +export function getReqUrl(this: any, params) { + const ep: any = {}; + const isCname = this.options.cname; + checkConfigValid(this.options.endpoint, 'endpoint'); + copy(this.options.endpoint, false).to(ep); + + if (params.bucket && !isCname && !isIP(ep.hostname) && !this.options.sldEnable) { + ep.host = `${params.bucket}.${ep.host}`; + } + + let resourcePath = '/'; + if (params.bucket && this.options.sldEnable) { + resourcePath += `${params.bucket}/`; + } + + if (params.object) { + // Preserve '/' in result url + resourcePath += this._escape(params.object).replace(/\+/g, '%2B'); + } + ep.pathname = resourcePath; + + const query = {}; + if (params.query) { + merge(query, params.query); + } + + if (params.subres) { + let subresAsQuery = {}; + if ((is as any).string(params.subres)) { + subresAsQuery[params.subres] = ''; + } else if (is.array(params.subres)) { + params.subres.forEach(k => { + subresAsQuery[k] = ''; + }); + } else { + subresAsQuery = params.subres; + } + merge(query, subresAsQuery); + } + + ep.query = query; + + return urlutil.format(ep); +} diff --git a/node_modules/ali-oss/lib/common/client/initOptions.js b/node_modules/ali-oss/lib/common/client/initOptions.js new file mode 100644 index 0000000..5277597 --- /dev/null +++ b/node_modules/ali-oss/lib/common/client/initOptions.js @@ -0,0 +1,72 @@ +const ms = require('humanize-ms'); +const urlutil = require('url'); +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); +const { setRegion } = require('../utils/setRegion'); +const { checkConfigValid } = require('../utils/checkConfigValid'); + +function setEndpoint(endpoint, secure) { + checkConfigValid(endpoint, 'endpoint'); + let url = urlutil.parse(endpoint); + + if (!url.protocol) { + url = urlutil.parse(`http${secure ? 's' : ''}://${endpoint}`); + } + + if (url.protocol !== 'http:' && url.protocol !== 'https:') { + throw new Error('Endpoint protocol must be http or https.'); + } + + return url; +} + +module.exports = function (options) { + if (!options || !options.accessKeyId || !options.accessKeySecret) { + throw new Error('require accessKeyId, accessKeySecret'); + } + if (options.stsToken && !options.refreshSTSToken && !options.refreshSTSTokenInterval) { + console.warn( + "It's recommended to set 'refreshSTSToken' and 'refreshSTSTokenInterval' to refresh" + + ' stsToken、accessKeyId、accessKeySecret automatically when sts token has expired' + ); + } + if (options.bucket) { + _checkBucketName(options.bucket); + } + const opts = Object.assign( + { + region: 'oss-cn-hangzhou', + internal: false, + secure: false, + timeout: 60000, + bucket: null, + endpoint: null, + cname: false, + isRequestPay: false, + sldEnable: false, + headerEncoding: 'utf-8', + refreshSTSToken: null, + refreshSTSTokenInterval: 60000 * 5, + retryMax: 0, + authorizationV4: false // 启用v4签名,默认关闭 + }, + options + ); + + opts.accessKeyId = opts.accessKeyId.trim(); + opts.accessKeySecret = opts.accessKeySecret.trim(); + + if (opts.timeout) { + opts.timeout = ms(opts.timeout); + } + + if (opts.endpoint) { + opts.endpoint = setEndpoint(opts.endpoint, opts.secure); + } else if (opts.region) { + opts.endpoint = setRegion(opts.region, opts.internal, opts.secure); + } else { + throw new Error('require options.endpoint or options.region'); + } + + opts.inited = true; + return opts; +}; diff --git a/node_modules/ali-oss/lib/common/image/index.js b/node_modules/ali-oss/lib/common/image/index.js new file mode 100644 index 0000000..1e319c2 --- /dev/null +++ b/node_modules/ali-oss/lib/common/image/index.js @@ -0,0 +1,5 @@ +const merge = require('merge-descriptors'); + +const proto = exports; + +merge(proto, require('./processObjectSave')); diff --git a/node_modules/ali-oss/lib/common/image/processObjectSave.js b/node_modules/ali-oss/lib/common/image/processObjectSave.js new file mode 100644 index 0000000..b41823b --- /dev/null +++ b/node_modules/ali-oss/lib/common/image/processObjectSave.js @@ -0,0 +1,45 @@ +/* eslint-disable no-use-before-define */ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); +const querystring = require('querystring'); +const { + Base64: { encode: str2Base64 } +} = require('js-base64'); + +const proto = exports; + +proto.processObjectSave = async function processObjectSave(sourceObject, targetObject, process, targetBucket) { + checkArgs(sourceObject, 'sourceObject'); + checkArgs(targetObject, 'targetObject'); + checkArgs(process, 'process'); + targetObject = this._objectName(targetObject); + if (targetBucket) { + _checkBucketName(targetBucket); + } + + const params = this._objectRequestParams('POST', sourceObject, { + subres: 'x-oss-process' + }); + + const bucketParam = targetBucket ? `,b_${str2Base64(targetBucket)}` : ''; + targetObject = str2Base64(targetObject); + + const content = { + 'x-oss-process': `${process}|sys/saveas,o_${targetObject}${bucketParam}` + }; + params.content = querystring.stringify(content); + + const result = await this.request(params); + return { + res: result.res, + status: result.res.status + }; +}; + +function checkArgs(name, key) { + if (!name) { + throw new Error(`${key} is required`); + } + if (typeof name !== 'string') { + throw new Error(`${key} must be String`); + } +} diff --git a/node_modules/ali-oss/lib/common/multipart-copy.js b/node_modules/ali-oss/lib/common/multipart-copy.js new file mode 100644 index 0000000..8f02d93 --- /dev/null +++ b/node_modules/ali-oss/lib/common/multipart-copy.js @@ -0,0 +1,240 @@ +/* eslint-disable no-async-promise-executor */ + +const debug = require('debug')('ali-oss:multipart-copy'); +const copy = require('copy-to'); + +const proto = exports; + +/** + * Upload a part copy in a multipart from the source bucket/object + * used with initMultipartUpload and completeMultipartUpload. + * @param {String} name copy object name + * @param {String} uploadId the upload id + * @param {Number} partNo the part number + * @param {String} range like 0-102400 part size need to copy + * @param {Object} sourceData + * {String} sourceData.sourceKey the source object name + * {String} sourceData.sourceBucketName the source bucket name + * @param {Object} options + */ +/* eslint max-len: [0] */ +proto.uploadPartCopy = async function uploadPartCopy(name, uploadId, partNo, range, sourceData, options = {}) { + options.headers = options.headers || {}; + const versionId = options.versionId || (options.subres && options.subres.versionId) || null; + let copySource; + if (versionId) { + copySource = `/${sourceData.sourceBucketName}/${encodeURIComponent(sourceData.sourceKey)}?versionId=${versionId}`; + } else { + copySource = `/${sourceData.sourceBucketName}/${encodeURIComponent(sourceData.sourceKey)}`; + } + + options.headers['x-oss-copy-source'] = copySource; + if (range) { + options.headers['x-oss-copy-source-range'] = `bytes=${range}`; + } + + options.subres = { + partNumber: partNo, + uploadId + }; + const params = this._objectRequestParams('PUT', name, options); + params.mime = options.mime; + params.successStatuses = [200]; + + const result = await this.request(params); + + return { + name, + etag: result.res.headers.etag, + res: result.res + }; +}; + +/** + * @param {String} name copy object name + * @param {Object} sourceData + * {String} sourceData.sourceKey the source object name + * {String} sourceData.sourceBucketName the source bucket name + * {Number} sourceData.startOffset data copy start byte offset, e.g: 0 + * {Number} sourceData.endOffset data copy end byte offset, e.g: 102400 + * @param {Object} options + * {Number} options.partSize + */ +proto.multipartUploadCopy = async function multipartUploadCopy(name, sourceData, options = {}) { + this.resetCancelFlag(); + const { versionId = null } = options; + const metaOpt = { + versionId + }; + const objectMeta = await this._getObjectMeta(sourceData.sourceBucketName, sourceData.sourceKey, metaOpt); + const fileSize = objectMeta.res.headers['content-length']; + sourceData.startOffset = sourceData.startOffset || 0; + sourceData.endOffset = sourceData.endOffset || fileSize; + + if (options.checkpoint && options.checkpoint.uploadId) { + return await this._resumeMultipartCopy(options.checkpoint, sourceData, options); + } + + const minPartSize = 100 * 1024; + + const copySize = sourceData.endOffset - sourceData.startOffset; + if (copySize < minPartSize) { + throw new Error(`copySize must not be smaller than ${minPartSize}`); + } + + if (options.partSize && options.partSize < minPartSize) { + throw new Error(`partSize must not be smaller than ${minPartSize}`); + } + + const init = await this.initMultipartUpload(name, options); + const { uploadId } = init; + const partSize = this._getPartSize(copySize, options.partSize); + + const checkpoint = { + name, + copySize, + partSize, + uploadId, + doneParts: [] + }; + + if (options && options.progress) { + await options.progress(0, checkpoint, init.res); + } + + return await this._resumeMultipartCopy(checkpoint, sourceData, options); +}; + +/* + * Resume multipart copy from checkpoint. The checkpoint will be + * updated after each successful part copy. + * @param {Object} checkpoint the checkpoint + * @param {Object} options + */ +proto._resumeMultipartCopy = async function _resumeMultipartCopy(checkpoint, sourceData, options) { + if (this.isCancel()) { + throw this._makeCancelEvent(); + } + const { versionId = null } = options; + const metaOpt = { + versionId + }; + const { copySize, partSize, uploadId, doneParts, name } = checkpoint; + + const partOffs = this._divideMultipartCopyParts(copySize, partSize, sourceData.startOffset); + const numParts = partOffs.length; + + const uploadPartCopyOptions = { + headers: {} + }; + + if (options.copyheaders) { + copy(options.copyheaders).to(uploadPartCopyOptions.headers); + } + if (versionId) { + copy(metaOpt).to(uploadPartCopyOptions); + } + + const uploadPartJob = function uploadPartJob(self, partNo, source) { + return new Promise(async (resolve, reject) => { + try { + if (!self.isCancel()) { + const pi = partOffs[partNo - 1]; + const range = `${pi.start}-${pi.end - 1}`; + + let result; + try { + result = await self.uploadPartCopy(name, uploadId, partNo, range, source, uploadPartCopyOptions); + } catch (error) { + if (error.status === 404) { + throw self._makeAbortEvent(); + } + throw error; + } + if (!self.isCancel()) { + debug(`content-range ${result.res.headers['content-range']}`); + doneParts.push({ + number: partNo, + etag: result.res.headers.etag + }); + checkpoint.doneParts = doneParts; + + if (options && options.progress) { + await options.progress(doneParts.length / numParts, checkpoint, result.res); + } + } + } + resolve(); + } catch (err) { + err.partNum = partNo; + reject(err); + } + }); + }; + + const all = Array.from(new Array(numParts), (x, i) => i + 1); + const done = doneParts.map(p => p.number); + const todo = all.filter(p => done.indexOf(p) < 0); + const defaultParallel = 5; + const parallel = options.parallel || defaultParallel; + + if (this.checkBrowserAndVersion('Internet Explorer', '10') || parallel === 1) { + for (let i = 0; i < todo.length; i++) { + if (this.isCancel()) { + throw this._makeCancelEvent(); + } + /* eslint no-await-in-loop: [0] */ + await uploadPartJob(this, todo[i], sourceData); + } + } else { + // upload in parallel + const errors = await this._parallelNode(todo, parallel, uploadPartJob, sourceData); + + const abortEvent = errors.find(err => err.name === 'abort'); + if (abortEvent) throw abortEvent; + + if (this.isCancel()) { + throw this._makeCancelEvent(); + } + + // check errors after all jobs are completed + if (errors && errors.length > 0) { + const err = errors[0]; + err.message = `Failed to copy some parts with error: ${err.toString()} part_num: ${err.partNum}`; + throw err; + } + } + + return await this.completeMultipartUpload(name, uploadId, doneParts, options); +}; + +proto._divideMultipartCopyParts = function _divideMultipartCopyParts(fileSize, partSize, startOffset) { + const numParts = Math.ceil(fileSize / partSize); + + const partOffs = []; + for (let i = 0; i < numParts; i++) { + const start = partSize * i + startOffset; + const end = Math.min(start + partSize, fileSize + startOffset); + + partOffs.push({ + start, + end + }); + } + + return partOffs; +}; + +/** + * Get Object Meta + * @param {String} bucket bucket name + * @param {String} name object name + * @param {Object} options + */ +proto._getObjectMeta = async function _getObjectMeta(bucket, name, options) { + const currentBucket = this.getBucket(); + this.setBucket(bucket); + const data = await this.head(name, options); + this.setBucket(currentBucket); + return data; +}; diff --git a/node_modules/ali-oss/lib/common/multipart.js b/node_modules/ali-oss/lib/common/multipart.js new file mode 100644 index 0000000..716c485 --- /dev/null +++ b/node_modules/ali-oss/lib/common/multipart.js @@ -0,0 +1,272 @@ +const copy = require('copy-to'); +const callback = require('./callback'); +const { deepCopyWith } = require('./utils/deepCopy'); +const { isBuffer } = require('./utils/isBuffer'); +const { omit } = require('./utils/omit'); + +const proto = exports; + +/** + * List the on-going multipart uploads + * https://help.aliyun.com/document_detail/31997.html + * @param {Object} options + * @return {Array} the multipart uploads + */ +proto.listUploads = async function listUploads(query, options) { + options = options || {}; + const opt = {}; + copy(options).to(opt); + opt.subres = 'uploads'; + const params = this._objectRequestParams('GET', '', opt); + params.query = query; + params.xmlResponse = true; + params.successStatuses = [200]; + + const result = await this.request(params); + let uploads = result.data.Upload || []; + if (!Array.isArray(uploads)) { + uploads = [uploads]; + } + uploads = uploads.map(up => ({ + name: up.Key, + uploadId: up.UploadId, + initiated: up.Initiated + })); + + return { + res: result.res, + uploads, + bucket: result.data.Bucket, + nextKeyMarker: result.data.NextKeyMarker, + nextUploadIdMarker: result.data.NextUploadIdMarker, + isTruncated: result.data.IsTruncated === 'true' + }; +}; + +/** + * List the done uploadPart parts + * @param {String} name object name + * @param {String} uploadId multipart upload id + * @param {Object} query + * {Number} query.max-parts The maximum part number in the response of the OSS. Default value: 1000 + * {Number} query.part-number-marker Starting position of a specific list. + * {String} query.encoding-type Specify the encoding of the returned content and the encoding type. + * @param {Object} options + * @return {Object} result + */ +proto.listParts = async function listParts(name, uploadId, query, options) { + options = options || {}; + const opt = {}; + copy(options).to(opt); + opt.subres = { + uploadId + }; + const params = this._objectRequestParams('GET', name, opt); + params.query = query; + params.xmlResponse = true; + params.successStatuses = [200]; + + const result = await this.request(params); + + return { + res: result.res, + uploadId: result.data.UploadId, + bucket: result.data.Bucket, + name: result.data.Key, + partNumberMarker: result.data.PartNumberMarker, + nextPartNumberMarker: result.data.NextPartNumberMarker, + maxParts: result.data.MaxParts, + isTruncated: result.data.IsTruncated, + parts: result.data.Part || [] + }; +}; + +/** + * Abort a multipart upload transaction + * @param {String} name the object name + * @param {String} uploadId the upload id + * @param {Object} options + */ +proto.abortMultipartUpload = async function abortMultipartUpload(name, uploadId, options) { + this._stop(); + options = options || {}; + const opt = {}; + copy(options).to(opt); + opt.subres = { uploadId }; + const params = this._objectRequestParams('DELETE', name, opt); + params.successStatuses = [204]; + + const result = await this.request(params); + return { + res: result.res + }; +}; + +/** + * Initiate a multipart upload transaction + * @param {String} name the object name + * @param {Object} options + * @return {String} upload id + */ +proto.initMultipartUpload = async function initMultipartUpload(name, options) { + options = options || {}; + const opt = {}; + copy(options).to(opt); + opt.headers = opt.headers || {}; + this._convertMetaToHeaders(options.meta, opt.headers); + + opt.subres = 'uploads'; + const params = this._objectRequestParams('POST', name, opt); + params.mime = options.mime; + params.xmlResponse = true; + params.successStatuses = [200]; + + const result = await this.request(params); + + return { + res: result.res, + bucket: result.data.Bucket, + name: result.data.Key, + uploadId: result.data.UploadId + }; +}; + +/** + * Upload a part in a multipart upload transaction + * @param {String} name the object name + * @param {String} uploadId the upload id + * @param {Integer} partNo the part number + * @param {File} file upload File, whole File + * @param {Integer} start part start bytes e.g: 102400 + * @param {Integer} end part end bytes e.g: 204800 + * @param {Object} options + */ +proto.uploadPart = async function uploadPart(name, uploadId, partNo, file, start, end, options) { + const data = { + size: end - start + }; + const isBrowserEnv = process && process.browser; + isBrowserEnv + ? (data.content = await this._createBuffer(file, start, end)) + : (data.stream = await this._createStream(file, start, end)); + return await this._uploadPart(name, uploadId, partNo, data, options); +}; + +/** + * Complete a multipart upload transaction + * @param {String} name the object name + * @param {String} uploadId the upload id + * @param {Array} parts the uploaded parts, each in the structure: + * {Integer} number partNo + * {String} etag part etag uploadPartCopy result.res.header.etag + * @param {Object} options + * {Object} [options.callback] The callback parameter is composed of a JSON string encoded in Base64 + * {String} options.callback.url the OSS sends a callback request to this URL + * {String} [options.callback.host] The host header value for initiating callback requests + * {String} options.callback.body The value of the request body when a callback is initiated + * {String} [options.callback.contentType] The Content-Type of the callback requests initiated + * {Boolean} [options.callback.callbackSNI] Whether OSS sends SNI to the origin address specified by callbackUrl when a callback request is initiated from the client + * {Object} [options.callback.customValue] Custom parameters are a map of key-values, e.g: + * customValue = { + * key1: 'value1', + * key2: 'value2' + * } + */ +proto.completeMultipartUpload = async function completeMultipartUpload(name, uploadId, parts, options) { + const completeParts = parts + .concat() + .sort((a, b) => a.number - b.number) + .filter((item, index, arr) => !index || item.number !== arr[index - 1].number); + let xml = '<?xml version="1.0" encoding="UTF-8"?>\n<CompleteMultipartUpload>\n'; + for (let i = 0; i < completeParts.length; i++) { + const p = completeParts[i]; + xml += '<Part>\n'; + xml += `<PartNumber>${p.number}</PartNumber>\n`; + xml += `<ETag>${p.etag}</ETag>\n`; + xml += '</Part>\n'; + } + xml += '</CompleteMultipartUpload>'; + + options = options || {}; + let opt = {}; + opt = deepCopyWith(options, _ => { + if (isBuffer(_)) return null; + }); + opt.subres = { uploadId }; + opt.headers = omit(opt.headers, ['x-oss-server-side-encryption', 'x-oss-storage-class']); + + const params = this._objectRequestParams('POST', name, opt); + callback.encodeCallback(params, opt); + params.mime = 'xml'; + params.content = xml; + + if (!(params.headers && params.headers['x-oss-callback'])) { + params.xmlResponse = true; + } + params.successStatuses = [200]; + const result = await this.request(params); + + if (options.progress) { + await options.progress(1, null, result.res); + } + + const ret = { + res: result.res, + bucket: params.bucket, + name, + etag: result.res.headers.etag + }; + + if (params.headers && params.headers['x-oss-callback']) { + ret.data = JSON.parse(result.data.toString()); + } + + return ret; +}; + +/** + * Upload a part in a multipart upload transaction + * @param {String} name the object name + * @param {String} uploadId the upload id + * @param {Integer} partNo the part number + * @param {Object} data the body data + * @param {Object} options + */ +proto._uploadPart = async function _uploadPart(name, uploadId, partNo, data, options) { + options = options || {}; + const opt = {}; + copy(options).to(opt); + opt.headers = opt.headers || {}; + opt.headers['Content-Length'] = data.size; + + // Uploading shards does not require x-oss headers. + opt.headers = omit(opt.headers, ['x-oss-server-side-encryption', 'x-oss-storage-class']); + opt.subres = { + partNumber: partNo, + uploadId + }; + + const params = this._objectRequestParams('PUT', name, opt); + params.mime = opt.mime; + const isBrowserEnv = process && process.browser; + isBrowserEnv ? (params.content = data.content) : (params.stream = data.stream); + params.successStatuses = [200]; + params.disabledMD5 = options.disabledMD5; + + const result = await this.request(params); + + if (!result.res.headers.etag) { + throw new Error( + 'Please set the etag of expose-headers in OSS \n https://help.aliyun.com/document_detail/32069.html' + ); + } + if (data.stream) { + data.stream = null; + params.stream = null; + } + return { + name, + etag: result.res.headers.etag, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/object/asyncSignatureUrl.js b/node_modules/ali-oss/lib/common/object/asyncSignatureUrl.js new file mode 100644 index 0000000..de5a1ff --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/asyncSignatureUrl.js @@ -0,0 +1,57 @@ +const urlutil = require('url'); +const utility = require('utility'); +const copy = require('copy-to'); +const signHelper = require('../../common/signUtils'); +const { isIP } = require('../utils/isIP'); +const { setSTSToken } = require('../utils/setSTSToken'); +const { isFunction } = require('../utils/isFunction'); + +const proto = exports; + +/** + * asyncSignatureUrl + * @param {String} name object name + * @param {Object} options options + * @param {boolean} [strictObjectNameValidation=true] the flag of verifying object name strictly + */ +proto.asyncSignatureUrl = async function asyncSignatureUrl(name, options, strictObjectNameValidation = true) { + if (isIP(this.options.endpoint.hostname)) { + throw new Error('can not get the object URL when endpoint is IP'); + } + + if (strictObjectNameValidation && /^\?/.test(name)) { + throw new Error(`Invalid object name ${name}`); + } + + options = options || {}; + name = this._objectName(name); + options.method = options.method || 'GET'; + const expires = utility.timestamp() + (options.expires || 1800); + const params = { + bucket: this.options.bucket, + object: name + }; + + const resource = this._getResource(params); + + if (this.options.stsToken && isFunction(this.options.refreshSTSToken)) { + await setSTSToken.call(this); + } + + if (this.options.stsToken) { + options['security-token'] = this.options.stsToken; + } + + const signRes = signHelper._signatureForURL(this.options.accessKeySecret, options, resource, expires); + + const url = urlutil.parse(this._getReqUrl(params)); + url.query = { + OSSAccessKeyId: this.options.accessKeyId, + Expires: expires, + Signature: signRes.Signature + }; + + copy(signRes.subResource).to(url.query); + + return url.format(); +}; diff --git a/node_modules/ali-oss/lib/common/object/calculatePostSignature.js b/node_modules/ali-oss/lib/common/object/calculatePostSignature.js new file mode 100644 index 0000000..a566abd --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/calculatePostSignature.js @@ -0,0 +1,35 @@ +const { policy2Str } = require('../utils/policy2Str'); +const signHelper = require('../signUtils'); +const { isObject } = require('../utils/isObject'); + +const proto = exports; + +/** + * @param {Object or JSON} policy specifies the validity of the fields in the request. + * @return {Object} params + * {String} params.OSSAccessKeyId + * {String} params.Signature + * {String} params.policy JSON text encoded with UTF-8 and Base64. + */ +proto.calculatePostSignature = function calculatePostSignature(policy) { + if (!isObject(policy) && typeof policy !== 'string') { + throw new Error('policy must be JSON string or Object'); + } + if (!isObject(policy)) { + try { + JSON.stringify(JSON.parse(policy)); + } catch (error) { + throw new Error('policy must be JSON string or Object'); + } + } + policy = Buffer.from(policy2Str(policy), 'utf8').toString('base64'); + + const Signature = signHelper.computeSignature(this.options.accessKeySecret, policy); + + const query = { + OSSAccessKeyId: this.options.accessKeyId, + Signature, + policy + }; + return query; +}; diff --git a/node_modules/ali-oss/lib/common/object/copyObject.js b/node_modules/ali-oss/lib/common/object/copyObject.js new file mode 100644 index 0000000..7dad598 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/copyObject.js @@ -0,0 +1,74 @@ +const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName'); + +const proto = exports; + +const REPLACE_HEDERS = [ + 'content-type', + 'content-encoding', + 'content-language', + 'content-disposition', + 'cache-control', + 'expires' +]; + +proto.copy = async function copy(name, sourceName, bucketName, options) { + if (typeof bucketName === 'object') { + options = bucketName; // 兼容旧版本,旧版本第三个参数为options + } + options = options || {}; + options.headers = options.headers || {}; + + Object.keys(options.headers).forEach(key => { + options.headers[`x-oss-copy-source-${key.toLowerCase()}`] = options.headers[key]; + }); + if (options.meta || Object.keys(options.headers).find(_ => REPLACE_HEDERS.includes(_.toLowerCase()))) { + options.headers['x-oss-metadata-directive'] = 'REPLACE'; + } + this._convertMetaToHeaders(options.meta, options.headers); + + sourceName = this._getSourceName(sourceName, bucketName); + + if (options.versionId) { + sourceName = `${sourceName}?versionId=${options.versionId}`; + } + + options.headers['x-oss-copy-source'] = sourceName; + + const params = this._objectRequestParams('PUT', name, options); + params.xmlResponse = true; + params.successStatuses = [200, 304]; + + const result = await this.request(params); + + let { data } = result; + if (data) { + data = { + etag: data.ETag, + lastModified: data.LastModified + }; + } + + return { + data, + res: result.res + }; +}; + +// todo delete +proto._getSourceName = function _getSourceName(sourceName, bucketName) { + if (typeof bucketName === 'string') { + sourceName = this._objectName(sourceName); + } else if (sourceName[0] !== '/') { + bucketName = this.options.bucket; + } else { + bucketName = sourceName.replace(/\/(.+?)(\/.*)/, '$1'); + sourceName = sourceName.replace(/(\/.+?\/)(.*)/, '$2'); + } + + _checkBucketName(bucketName); + + sourceName = encodeURIComponent(sourceName); + + sourceName = `/${bucketName}/${sourceName}`; + return sourceName; +}; diff --git a/node_modules/ali-oss/lib/common/object/delete.js b/node_modules/ali-oss/lib/common/object/delete.js new file mode 100644 index 0000000..875ed47 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/delete.js @@ -0,0 +1,22 @@ +const proto = exports; +/** + * delete + * @param {String} name - object name + * @param {Object} options + * @param {{res}} + */ + +proto.delete = async function _delete(name, options = {}) { + options.subres = Object.assign({}, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + const params = this._objectRequestParams('DELETE', name, options); + params.successStatuses = [204]; + + const result = await this.request(params); + + return { + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/object/deleteMulti.js b/node_modules/ali-oss/lib/common/object/deleteMulti.js new file mode 100644 index 0000000..825f248 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/deleteMulti.js @@ -0,0 +1,57 @@ +/* eslint-disable object-curly-newline */ +const utility = require('utility'); +const { obj2xml } = require('../utils/obj2xml'); + +const proto = exports; + +proto.deleteMulti = async function deleteMulti(names, options = {}) { + const objects = []; + if (!names || !names.length) { + throw new Error('names is required'); + } + for (let i = 0; i < names.length; i++) { + const object = {}; + if (typeof names[i] === 'string') { + object.Key = utility.escape(this._objectName(names[i])); + } else { + const { key, versionId } = names[i]; + object.Key = utility.escape(this._objectName(key)); + object.VersionId = versionId; + } + objects.push(object); + } + + const paramXMLObj = { + Delete: { + Quiet: !!options.quiet, + Object: objects + } + }; + + const paramXML = obj2xml(paramXMLObj, { + headers: true + }); + + options.subres = Object.assign({ delete: '' }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + const params = this._objectRequestParams('POST', '', options); + params.mime = 'xml'; + params.content = paramXML; + params.xmlResponse = true; + params.successStatuses = [200]; + const result = await this.request(params); + + const r = result.data; + let deleted = (r && r.Deleted) || null; + if (deleted) { + if (!Array.isArray(deleted)) { + deleted = [deleted]; + } + } + return { + res: result.res, + deleted: deleted || [] + }; +}; diff --git a/node_modules/ali-oss/lib/common/object/deleteObjectTagging.js b/node_modules/ali-oss/lib/common/object/deleteObjectTagging.js new file mode 100644 index 0000000..8c40c21 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/deleteObjectTagging.js @@ -0,0 +1,22 @@ +const proto = exports; +/** + * deleteObjectTagging + * @param {String} name - object name + * @param {Object} options + */ + +proto.deleteObjectTagging = async function deleteObjectTagging(name, options = {}) { + options.subres = Object.assign({ tagging: '' }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + name = this._objectName(name); + const params = this._objectRequestParams('DELETE', name, options); + params.successStatuses = [204]; + const result = await this.request(params); + + return { + status: result.status, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/object/generateObjectUrl.js b/node_modules/ali-oss/lib/common/object/generateObjectUrl.js new file mode 100644 index 0000000..0a0275b --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/generateObjectUrl.js @@ -0,0 +1,28 @@ +const urlutil = require('url'); +const { isIP } = require('../utils/isIP'); + +const proto = exports; + +/** + * Get Object url by name + * @param {String} name - object name + * @param {String} [baseUrl] - If provide `baseUrl`, will use `baseUrl` instead the default `endpoint and bucket`. + * @return {String} object url include bucket + */ +proto.generateObjectUrl = function generateObjectUrl(name, baseUrl) { + if (isIP(this.options.endpoint.hostname)) { + throw new Error('can not get the object URL when endpoint is IP'); + } + if (!baseUrl) { + baseUrl = this.options.endpoint.format(); + const copyUrl = urlutil.parse(baseUrl); + const { bucket } = this.options; + + copyUrl.hostname = `${bucket}.${copyUrl.hostname}`; + copyUrl.host = `${bucket}.${copyUrl.host}`; + baseUrl = copyUrl.format(); + } else if (baseUrl[baseUrl.length - 1] !== '/') { + baseUrl += '/'; + } + return baseUrl + this._escape(this._objectName(name)); +}; diff --git a/node_modules/ali-oss/lib/common/object/get.js b/node_modules/ali-oss/lib/common/object/get.js new file mode 100644 index 0000000..f119b6a --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/get.js @@ -0,0 +1,65 @@ +const fs = require('fs'); +const is = require('is-type-of'); +const { isObject } = require('../utils/isObject'); + +const proto = exports; +/** + * get + * @param {String} name - object name + * @param {String | Stream | Object} file - file path or file stream or options + * @param {Object} options + * @param {{res}} + */ +proto.get = async function get(name, file, options = {}) { + let writeStream = null; + let needDestroy = false; + + if (is.writableStream(file)) { + writeStream = file; + } else if (is.string(file)) { + writeStream = fs.createWriteStream(file); + needDestroy = true; + } else if (isObject(file)) { + // get(name, options) + options = file; + } + + options = options || {}; + const isBrowserEnv = process && process.browser; + const responseCacheControl = options.responseCacheControl === null ? '' : 'no-cache'; + const defaultSubresOptions = + isBrowserEnv && responseCacheControl ? { 'response-cache-control': responseCacheControl } : {}; + options.subres = Object.assign(defaultSubresOptions, options.subres); + + if (options.versionId) { + options.subres.versionId = options.versionId; + } + if (options.process) { + options.subres['x-oss-process'] = options.process; + } + + let result; + try { + const params = this._objectRequestParams('GET', name, options); + params.writeStream = writeStream; + params.successStatuses = [200, 206, 304]; + + result = await this.request(params); + + if (needDestroy) { + writeStream.destroy(); + } + } catch (err) { + if (needDestroy) { + writeStream.destroy(); + // should delete the exists file before throw error + await this._deleteFileSafe(file); + } + throw err; + } + + return { + res: result.res, + content: result.data + }; +}; diff --git a/node_modules/ali-oss/lib/common/object/getACL.js b/node_modules/ali-oss/lib/common/object/getACL.js new file mode 100644 index 0000000..d88f1ec --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/getACL.js @@ -0,0 +1,30 @@ +const proto = exports; + +/* + * Get object's ACL + * @param {String} name the object key + * @param {Object} options + * @return {Object} + */ +proto.getACL = async function getACL(name, options = {}) { + options.subres = Object.assign({ acl: '' }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + name = this._objectName(name); + + const params = this._objectRequestParams('GET', name, options); + params.successStatuses = [200]; + params.xmlResponse = true; + + const result = await this.request(params); + + return { + acl: result.data.AccessControlList.Grant, + owner: { + id: result.data.Owner.ID, + displayName: result.data.Owner.DisplayName + }, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/object/getAsyncFetch.d.ts b/node_modules/ali-oss/lib/common/object/getAsyncFetch.d.ts new file mode 100644 index 0000000..af524e5 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/getAsyncFetch.d.ts @@ -0,0 +1 @@ +export declare function getAsyncFetch(this: any, taskId: any, options?: any): Promise<object>; diff --git a/node_modules/ali-oss/lib/common/object/getAsyncFetch.js b/node_modules/ali-oss/lib/common/object/getAsyncFetch.js new file mode 100644 index 0000000..ebf93da --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/getAsyncFetch.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getAsyncFetch = void 0; +const formatObjKey_1 = require("../utils/formatObjKey"); +/* + * getAsyncFetch + * @param {String} asyncFetch taskId + * @param {Object} options + */ +async function getAsyncFetch(taskId, options = {}) { + options.subres = Object.assign({ asyncFetch: '' }, options.subres); + options.headers = options.headers || {}; + const params = this._objectRequestParams('GET', '', options); + params.headers['x-oss-task-id'] = taskId; + params.successStatuses = [200]; + params.xmlResponse = true; + const result = await this.request(params); + const taskInfo = formatObjKey_1.formatObjKey(result.data.TaskInfo, 'firstLowerCase'); + return { + res: result.res, + status: result.status, + state: result.data.State, + taskInfo + }; +} +exports.getAsyncFetch = getAsyncFetch; diff --git a/node_modules/ali-oss/lib/common/object/getAsyncFetch.ts b/node_modules/ali-oss/lib/common/object/getAsyncFetch.ts new file mode 100644 index 0000000..427979c --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/getAsyncFetch.ts @@ -0,0 +1,25 @@ +import { formatObjKey } from '../utils/formatObjKey'; + +/* + * getAsyncFetch + * @param {String} asyncFetch taskId + * @param {Object} options + */ +export async function getAsyncFetch(this: any, taskId, options: any = {}): Promise<object> { + options.subres = Object.assign({ asyncFetch: '' }, options.subres); + options.headers = options.headers || {}; + + const params = this._objectRequestParams('GET', '', options); + params.headers['x-oss-task-id'] = taskId; + params.successStatuses = [200]; + params.xmlResponse = true; + + const result = await this.request(params); + const taskInfo = formatObjKey(result.data.TaskInfo, 'firstLowerCase'); + return { + res: result.res, + status: result.status, + state: result.data.State, + taskInfo + }; +} diff --git a/node_modules/ali-oss/lib/common/object/getBucketVersions.js b/node_modules/ali-oss/lib/common/object/getBucketVersions.js new file mode 100644 index 0000000..20a9eaf --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/getBucketVersions.js @@ -0,0 +1,100 @@ +/* eslint-disable no-use-before-define */ +const proto = exports; +const { isObject } = require('../utils/isObject'); +const { isArray } = require('../utils/isArray'); +const { parseRestoreInfo } = require('../utils/parseRestoreInfo'); + +proto.getBucketVersions = getBucketVersions; +proto.listObjectVersions = getBucketVersions; + +async function getBucketVersions(query = {}, options = {}) { + // prefix, key-marker, max-keys, delimiter, encoding-type, version-id-marker + if (query.versionIdMarker && query.keyMarker === undefined) { + throw new Error('A version-id marker cannot be specified without a key marker'); + } + + options.subres = Object.assign({ versions: '' }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + const params = this._objectRequestParams('GET', '', options); + params.xmlResponse = true; + params.successStatuses = [200]; + + params.query = formatQuery(query); + + const result = await this.request(params); + let objects = result.data.Version || []; + let deleteMarker = result.data.DeleteMarker || []; + const that = this; + if (objects) { + if (!Array.isArray(objects)) { + objects = [objects]; + } + objects = objects.map(obj => ({ + name: obj.Key, + url: that._objectUrl(obj.Key), + lastModified: obj.LastModified, + isLatest: obj.IsLatest === 'true', + versionId: obj.VersionId, + etag: obj.ETag, + type: obj.Type, + size: Number(obj.Size), + storageClass: obj.StorageClass, + owner: { + id: obj.Owner.ID, + displayName: obj.Owner.DisplayName + }, + restoreInfo: parseRestoreInfo(obj.RestoreInfo) + })); + } + if (deleteMarker) { + if (!isArray(deleteMarker)) { + deleteMarker = [deleteMarker]; + } + deleteMarker = deleteMarker.map(obj => ({ + name: obj.Key, + lastModified: obj.LastModified, + versionId: obj.VersionId, + owner: { + id: obj.Owner.ID, + displayName: obj.Owner.DisplayName + } + })); + } + let prefixes = result.data.CommonPrefixes || null; + if (prefixes) { + if (!isArray(prefixes)) { + prefixes = [prefixes]; + } + prefixes = prefixes.map(item => item.Prefix); + } + return { + res: result.res, + objects, + deleteMarker, + prefixes, + // attirbute of legacy error + nextMarker: result.data.NextKeyMarker || null, + // attirbute of legacy error + NextVersionIdMarker: result.data.NextVersionIdMarker || null, + nextKeyMarker: result.data.NextKeyMarker || null, + nextVersionIdMarker: result.data.NextVersionIdMarker || null, + isTruncated: result.data.IsTruncated === 'true' + }; +} + +function camel2Line(name) { + return name.replace(/([A-Z])/g, '-$1').toLowerCase(); +} + +function formatQuery(query = {}) { + const obj = {}; + if (isObject(query)) { + Object.keys(query).forEach(key => { + obj[camel2Line(key)] = query[key]; + }); + } + + return obj; +} diff --git a/node_modules/ali-oss/lib/common/object/getObjectMeta.js b/node_modules/ali-oss/lib/common/object/getObjectMeta.js new file mode 100644 index 0000000..2acf9cd --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/getObjectMeta.js @@ -0,0 +1,23 @@ +const proto = exports; +/** + * getObjectMeta + * @param {String} name - object name + * @param {Object} options + * @param {{res}} + */ + +proto.getObjectMeta = async function getObjectMeta(name, options) { + options = options || {}; + name = this._objectName(name); + options.subres = Object.assign({ objectMeta: '' }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + const params = this._objectRequestParams('HEAD', name, options); + params.successStatuses = [200]; + const result = await this.request(params); + return { + status: result.status, + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/object/getObjectTagging.js b/node_modules/ali-oss/lib/common/object/getObjectTagging.js new file mode 100644 index 0000000..e614d19 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/getObjectTagging.js @@ -0,0 +1,34 @@ +const proto = exports; +const { isObject } = require('../utils/isObject'); +/** + * getObjectTagging + * @param {String} name - object name + * @param {Object} options + * @return {Object} + */ + +proto.getObjectTagging = async function getObjectTagging(name, options = {}) { + options.subres = Object.assign({ tagging: '' }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + name = this._objectName(name); + const params = this._objectRequestParams('GET', name, options); + params.successStatuses = [200]; + const result = await this.request(params); + const Tagging = await this.parseXML(result.data); + let { Tag } = Tagging.TagSet; + Tag = Tag && isObject(Tag) ? [Tag] : Tag || []; + + const tag = {}; + + Tag.forEach(item => { + tag[item.Key] = item.Value; + }); + + return { + status: result.status, + res: result.res, + tag + }; +}; diff --git a/node_modules/ali-oss/lib/common/object/getObjectUrl.js b/node_modules/ali-oss/lib/common/object/getObjectUrl.js new file mode 100644 index 0000000..61bcef0 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/getObjectUrl.js @@ -0,0 +1,21 @@ +const { isIP } = require('../utils/isIP'); + +const proto = exports; +/** + * Get Object url by name + * @param {String} name - object name + * @param {String} [baseUrl] - If provide `baseUrl`, + * will use `baseUrl` instead the default `endpoint`. + * @return {String} object url + */ +proto.getObjectUrl = function getObjectUrl(name, baseUrl) { + if (isIP(this.options.endpoint.hostname)) { + throw new Error('can not get the object URL when endpoint is IP'); + } + if (!baseUrl) { + baseUrl = this.options.endpoint.format(); + } else if (baseUrl[baseUrl.length - 1] !== '/') { + baseUrl += '/'; + } + return baseUrl + this._escape(this._objectName(name)); +}; diff --git a/node_modules/ali-oss/lib/common/object/getSymlink.js b/node_modules/ali-oss/lib/common/object/getSymlink.js new file mode 100644 index 0000000..38574c8 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/getSymlink.js @@ -0,0 +1,23 @@ +const proto = exports; +/** + * getSymlink + * @param {String} name - object name + * @param {Object} options + * @param {{res}} + */ + +proto.getSymlink = async function getSymlink(name, options = {}) { + options.subres = Object.assign({ symlink: '' }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + name = this._objectName(name); + const params = this._objectRequestParams('GET', name, options); + params.successStatuses = [200]; + const result = await this.request(params); + const target = result.res.headers['x-oss-symlink-target']; + return { + targetName: decodeURIComponent(target), + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/object/head.js b/node_modules/ali-oss/lib/common/object/head.js new file mode 100644 index 0000000..1d51e26 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/head.js @@ -0,0 +1,41 @@ +const { checkEnv } = require('../utils/checkEnv'); + +const proto = exports; +/** + * head + * @param {String} name - object name + * @param {Object} options + * @param {{res}} + */ + +proto.head = async function head(name, options = {}) { + checkEnv( + 'Because HeadObject has gzip enabled, head cannot get the file size correctly. If you need to get the file size, please use getObjectMeta' + ); + options.subres = Object.assign({}, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + const params = this._objectRequestParams('HEAD', name, options); + params.successStatuses = [200, 304]; + + const result = await this.request(params); + + const data = { + meta: null, + res: result.res, + status: result.status + }; + + if (result.status === 200) { + Object.keys(result.headers).forEach(k => { + if (k.indexOf('x-oss-meta-') === 0) { + if (!data.meta) { + data.meta = {}; + } + data.meta[k.substring(11)] = result.headers[k]; + } + }); + } + return data; +}; diff --git a/node_modules/ali-oss/lib/common/object/index.js b/node_modules/ali-oss/lib/common/object/index.js new file mode 100644 index 0000000..45a4194 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/index.js @@ -0,0 +1,27 @@ +const merge = require('merge-descriptors'); + +const proto = exports; + +merge(proto, require('./getSymlink')); +merge(proto, require('./putSymlink')); +merge(proto, require('./getObjectMeta')); +merge(proto, require('./copyObject')); +merge(proto, require('./calculatePostSignature')); +merge(proto, require('./getObjectTagging')); +merge(proto, require('./putObjectTagging')); +merge(proto, require('./deleteObjectTagging')); +merge(proto, require('./getBucketVersions')); +merge(proto, require('./deleteMulti')); +merge(proto, require('./getACL')); +merge(proto, require('./putACL')); +merge(proto, require('./head')); +merge(proto, require('./delete')); +merge(proto, require('./get')); +merge(proto, require('./postAsyncFetch')); +merge(proto, require('./getAsyncFetch')); +merge(proto, require('./generateObjectUrl')); +merge(proto, require('./getObjectUrl')); +merge(proto, require('./signatureUrl')); +merge(proto, require('./asyncSignatureUrl')); +merge(proto, require('./signatureUrlV4')); +merge(proto, require('./signPostObjectPolicyV4')); diff --git a/node_modules/ali-oss/lib/common/object/postAsyncFetch.d.ts b/node_modules/ali-oss/lib/common/object/postAsyncFetch.d.ts new file mode 100644 index 0000000..145b026 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/postAsyncFetch.d.ts @@ -0,0 +1 @@ +export declare function postAsyncFetch(this: any, object: any, url: any, options?: any): Promise<object>; diff --git a/node_modules/ali-oss/lib/common/object/postAsyncFetch.js b/node_modules/ali-oss/lib/common/object/postAsyncFetch.js new file mode 100644 index 0000000..6c8ba89 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/postAsyncFetch.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.postAsyncFetch = void 0; +const obj2xml_1 = require("../utils/obj2xml"); +/* + * postAsyncFetch + * @param {String} name the object key + * @param {String} url + * @param {Object} options + * {String} options.host + * {String} options.contentMD5 + * {String} options.callback + * {String} options.storageClass Standard/IA/Archive + * {Boolean} options.ignoreSameKey default value true + */ +async function postAsyncFetch(object, url, options = {}) { + options.subres = Object.assign({ asyncFetch: '' }, options.subres); + options.headers = options.headers || {}; + object = this._objectName(object); + const { host = '', contentMD5 = '', callback = '', storageClass = '', ignoreSameKey = true } = options; + const paramXMLObj = { + AsyncFetchTaskConfiguration: { + Url: url, + Object: object, + Host: host, + ContentMD5: contentMD5, + Callback: callback, + StorageClass: storageClass, + IgnoreSameKey: ignoreSameKey + } + }; + const params = this._objectRequestParams('POST', '', options); + params.mime = 'xml'; + params.xmlResponse = true; + params.successStatuses = [200]; + params.content = obj2xml_1.obj2xml(paramXMLObj); + const result = await this.request(params); + return { + res: result.res, + status: result.status, + taskId: result.data.TaskId + }; +} +exports.postAsyncFetch = postAsyncFetch; diff --git a/node_modules/ali-oss/lib/common/object/postAsyncFetch.ts b/node_modules/ali-oss/lib/common/object/postAsyncFetch.ts new file mode 100644 index 0000000..ff32eb2 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/postAsyncFetch.ts @@ -0,0 +1,46 @@ +import { obj2xml } from '../utils/obj2xml'; + +/* + * postAsyncFetch + * @param {String} name the object key + * @param {String} url + * @param {Object} options + * {String} options.host + * {String} options.contentMD5 + * {String} options.callback + * {String} options.storageClass Standard/IA/Archive + * {Boolean} options.ignoreSameKey default value true + */ +export async function postAsyncFetch(this: any, object, url, options: any = {}): Promise<object> { + options.subres = Object.assign({ asyncFetch: '' }, options.subres); + options.headers = options.headers || {}; + object = this._objectName(object); + + const { host = '', contentMD5 = '', callback = '', storageClass = '', ignoreSameKey = true } = options; + + const paramXMLObj = { + AsyncFetchTaskConfiguration: { + Url: url, + Object: object, + Host: host, + ContentMD5: contentMD5, + Callback: callback, + StorageClass: storageClass, + IgnoreSameKey: ignoreSameKey + } + }; + + const params = this._objectRequestParams('POST', '', options); + params.mime = 'xml'; + params.xmlResponse = true; + params.successStatuses = [200]; + params.content = obj2xml(paramXMLObj); + + const result = await this.request(params); + + return { + res: result.res, + status: result.status, + taskId: result.data.TaskId + }; +} diff --git a/node_modules/ali-oss/lib/common/object/putACL.js b/node_modules/ali-oss/lib/common/object/putACL.js new file mode 100644 index 0000000..b761110 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/putACL.js @@ -0,0 +1,27 @@ +const proto = exports; + +/* + * Set object's ACL + * @param {String} name the object key + * @param {String} acl the object ACL + * @param {Object} options + */ +proto.putACL = async function putACL(name, acl, options) { + options = options || {}; + options.subres = Object.assign({ acl: '' }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + options.headers = options.headers || {}; + options.headers['x-oss-object-acl'] = acl; + name = this._objectName(name); + + const params = this._objectRequestParams('PUT', name, options); + params.successStatuses = [200]; + + const result = await this.request(params); + + return { + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/object/putObjectTagging.js b/node_modules/ali-oss/lib/common/object/putObjectTagging.js new file mode 100644 index 0000000..e8ca3f3 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/putObjectTagging.js @@ -0,0 +1,43 @@ +const { obj2xml } = require('../utils/obj2xml'); +const { checkObjectTag } = require('../utils/checkObjectTag'); + +const proto = exports; +/** + * putObjectTagging + * @param {String} name - object name + * @param {Object} tag - object tag, eg: `{a: "1", b: "2"}` + * @param {Object} options + */ + +proto.putObjectTagging = async function putObjectTagging(name, tag, options = {}) { + checkObjectTag(tag); + + options.subres = Object.assign({ tagging: '' }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + name = this._objectName(name); + const params = this._objectRequestParams('PUT', name, options); + params.successStatuses = [200]; + tag = Object.keys(tag).map(key => ({ + Key: key, + Value: tag[key] + })); + + const paramXMLObj = { + Tagging: { + TagSet: { + Tag: tag + } + } + }; + + params.mime = 'xml'; + params.content = obj2xml(paramXMLObj); + + const result = await this.request(params); + return { + res: result.res, + status: result.status + }; +}; diff --git a/node_modules/ali-oss/lib/common/object/putSymlink.js b/node_modules/ali-oss/lib/common/object/putSymlink.js new file mode 100644 index 0000000..d2e14f8 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/putSymlink.js @@ -0,0 +1,33 @@ +const proto = exports; +/** + * putSymlink + * @param {String} name - object name + * @param {String} targetName - target name + * @param {Object} options + * @param {{res}} + */ + +proto.putSymlink = async function putSymlink(name, targetName, options) { + options = options || {}; + options.headers = options.headers || {}; + targetName = this._escape(this._objectName(targetName)); + this._convertMetaToHeaders(options.meta, options.headers); + options.headers['x-oss-symlink-target'] = targetName; + options.subres = Object.assign({ symlink: '' }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + + if (options.storageClass) { + options.headers['x-oss-storage-class'] = options.storageClass; + } + + name = this._objectName(name); + const params = this._objectRequestParams('PUT', name, options); + + params.successStatuses = [200]; + const result = await this.request(params); + return { + res: result.res + }; +}; diff --git a/node_modules/ali-oss/lib/common/object/signPostObjectPolicyV4.d.ts b/node_modules/ali-oss/lib/common/object/signPostObjectPolicyV4.d.ts new file mode 100644 index 0000000..fd2f3b8 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/signPostObjectPolicyV4.d.ts @@ -0,0 +1 @@ +export declare function signPostObjectPolicyV4(this: any, policy: string | object, date: Date): string; diff --git a/node_modules/ali-oss/lib/common/object/signPostObjectPolicyV4.js b/node_modules/ali-oss/lib/common/object/signPostObjectPolicyV4.js new file mode 100644 index 0000000..5751a2b --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/signPostObjectPolicyV4.js @@ -0,0 +1,18 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.signPostObjectPolicyV4 = void 0; +const dateformat_1 = __importDefault(require("dateformat")); +const getStandardRegion_1 = require("../utils/getStandardRegion"); +const policy2Str_1 = require("../utils/policy2Str"); +const signUtils_1 = require("../signUtils"); +function signPostObjectPolicyV4(policy, date) { + const policyStr = Buffer.from(policy2Str_1.policy2Str(policy), 'utf8').toString('base64'); + const formattedDate = dateformat_1.default(date, "UTC:yyyymmdd'T'HHMMss'Z'"); + const onlyDate = formattedDate.split('T')[0]; + const signature = signUtils_1.getSignatureV4(this.options.accessKeySecret, onlyDate, getStandardRegion_1.getStandardRegion(this.options.region), policyStr); + return signature; +} +exports.signPostObjectPolicyV4 = signPostObjectPolicyV4; diff --git a/node_modules/ali-oss/lib/common/object/signPostObjectPolicyV4.ts b/node_modules/ali-oss/lib/common/object/signPostObjectPolicyV4.ts new file mode 100644 index 0000000..4a3729b --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/signPostObjectPolicyV4.ts @@ -0,0 +1,20 @@ +import dateFormat from 'dateformat'; + +import { getStandardRegion } from '../utils/getStandardRegion'; +import { policy2Str } from '../utils/policy2Str'; +import { getSignatureV4 } from '../signUtils'; + +export function signPostObjectPolicyV4(this: any, policy: string | object, date: Date): string { + const policyStr = Buffer.from(policy2Str(policy), 'utf8').toString('base64'); + const formattedDate = dateFormat(date, "UTC:yyyymmdd'T'HHMMss'Z'"); + const onlyDate = formattedDate.split('T')[0]; + + const signature = getSignatureV4( + this.options.accessKeySecret, + onlyDate, + getStandardRegion(this.options.region), + policyStr + ); + + return signature; +} diff --git a/node_modules/ali-oss/lib/common/object/signatureUrl.js b/node_modules/ali-oss/lib/common/object/signatureUrl.js new file mode 100644 index 0000000..70be565 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/signatureUrl.js @@ -0,0 +1,52 @@ +const urlutil = require('url'); +const utility = require('utility'); +const copy = require('copy-to'); +const signHelper = require('../../common/signUtils'); +const { isIP } = require('../utils/isIP'); + +const proto = exports; + +/** + * signatureUrl + * @deprecated will be deprecated in 7.x + * @param {String} name object name + * @param {Object} options options + * @param {boolean} [strictObjectNameValidation=true] the flag of verifying object name strictly + */ +proto.signatureUrl = function signatureUrl(name, options, strictObjectNameValidation = true) { + if (isIP(this.options.endpoint.hostname)) { + throw new Error('can not get the object URL when endpoint is IP'); + } + + if (strictObjectNameValidation && /^\?/.test(name)) { + throw new Error(`Invalid object name ${name}`); + } + + options = options || {}; + name = this._objectName(name); + options.method = options.method || 'GET'; + const expires = utility.timestamp() + (options.expires || 1800); + const params = { + bucket: this.options.bucket, + object: name + }; + + const resource = this._getResource(params); + + if (this.options.stsToken) { + options['security-token'] = this.options.stsToken; + } + + const signRes = signHelper._signatureForURL(this.options.accessKeySecret, options, resource, expires); + + const url = urlutil.parse(this._getReqUrl(params)); + url.query = { + OSSAccessKeyId: this.options.accessKeyId, + Expires: expires, + Signature: signRes.Signature + }; + + copy(signRes.subResource).to(url.query); + + return url.format(); +}; diff --git a/node_modules/ali-oss/lib/common/object/signatureUrlV4.js b/node_modules/ali-oss/lib/common/object/signatureUrlV4.js new file mode 100644 index 0000000..04fe5a9 --- /dev/null +++ b/node_modules/ali-oss/lib/common/object/signatureUrlV4.js @@ -0,0 +1,78 @@ +const dateFormat = require('dateformat'); +const urlUtil = require('url'); + +const signHelper = require('../../common/signUtils'); +const { setSTSToken } = require('../utils/setSTSToken'); +const { isFunction } = require('../utils/isFunction'); +const { getStandardRegion } = require('../utils/getStandardRegion'); + +const proto = exports; + +/** + * signatureUrlV4 + * + * @param {string} method + * @param {number} expires + * @param {Object} [request] + * @param {Object} [request.headers] + * @param {Object} [request.queries] + * @param {string} [objectName] + * @param {string[]} [additionalHeaders] + */ +proto.signatureUrlV4 = async function signatureUrlV4(method, expires, request, objectName, additionalHeaders) { + const { cloudBoxId } = this.options; + const product = signHelper.getProduct(cloudBoxId); + const signRegion = signHelper.getSignRegion(getStandardRegion(this.options.region), cloudBoxId); + const headers = (request && request.headers) || {}; + const queries = Object.assign({}, (request && request.queries) || {}); + const date = new Date(); + const formattedDate = dateFormat(date, "UTC:yyyymmdd'T'HHMMss'Z'"); + const onlyDate = formattedDate.split('T')[0]; + const fixedAdditionalHeaders = signHelper.fixAdditionalHeaders(additionalHeaders); + + if (fixedAdditionalHeaders.length > 0) { + queries['x-oss-additional-headers'] = fixedAdditionalHeaders.join(';'); + } + queries['x-oss-credential'] = signHelper.getCredential(onlyDate, signRegion, this.options.accessKeyId, product); + queries['x-oss-date'] = formattedDate; + queries['x-oss-expires'] = expires; + queries['x-oss-signature-version'] = 'OSS4-HMAC-SHA256'; + + if (this.options.stsToken && isFunction(this.options.refreshSTSToken)) { + await setSTSToken.call(this); + } + + if (this.options.stsToken) { + queries['x-oss-security-token'] = this.options.stsToken; + } + + const canonicalRequest = signHelper.getCanonicalRequest( + method, + { + headers, + queries + }, + this.options.bucket, + objectName, + fixedAdditionalHeaders + ); + const stringToSign = signHelper.getStringToSign(signRegion, formattedDate, canonicalRequest, product); + + queries['x-oss-signature'] = signHelper.getSignatureV4( + this.options.accessKeySecret, + onlyDate, + signRegion, + stringToSign, + product + ); + + const signedUrl = urlUtil.parse( + this._getReqUrl({ + bucket: this.options.bucket, + object: objectName + }) + ); + signedUrl.query = Object.assign({}, queries); + + return signedUrl.format(); +}; diff --git a/node_modules/ali-oss/lib/common/parallel.js b/node_modules/ali-oss/lib/common/parallel.js new file mode 100644 index 0000000..09ca156 --- /dev/null +++ b/node_modules/ali-oss/lib/common/parallel.js @@ -0,0 +1,177 @@ +const { isArray } = require('./utils/isArray'); + +const proto = exports; + +proto._parallelNode = async function _parallelNode(todo, parallel, fn, sourceData) { + const that = this; + // upload in parallel + const jobErr = []; + let jobs = []; + const tempBatch = todo.length / parallel; + const remainder = todo.length % parallel; + const batch = remainder === 0 ? tempBatch : (todo.length - remainder) / parallel + 1; + let taskIndex = 1; + for (let i = 0; i < todo.length; i++) { + if (that.isCancel()) { + break; + } + + if (sourceData) { + jobs.push(fn(that, todo[i], sourceData)); + } else { + jobs.push(fn(that, todo[i])); + } + + if (jobs.length === parallel || (taskIndex === batch && i === todo.length - 1)) { + try { + taskIndex += 1; + /* eslint no-await-in-loop: [0] */ + await Promise.all(jobs); + } catch (err) { + jobErr.push(err); + } + jobs = []; + } + } + + return jobErr; +}; + +proto._parallel = function _parallel(todo, parallel, jobPromise) { + const that = this; + return new Promise(resolve => { + const _jobErr = []; + if (parallel <= 0 || !todo) { + resolve(_jobErr); + return; + } + + function onlyOnce(fn) { + return function (...args) { + if (fn === null) throw new Error('Callback was already called.'); + const callFn = fn; + fn = null; + callFn.apply(this, args); + }; + } + + function createArrayIterator(coll) { + let i = -1; + const len = coll.length; + return function next() { + return ++i < len && !that.isCancel() ? { value: coll[i], key: i } : null; + }; + } + + const nextElem = createArrayIterator(todo); + let done = false; + let running = 0; + let looping = false; + + function iterateeCallback(err) { + running -= 1; + if (err) { + done = true; + _jobErr.push(err); + resolve(_jobErr); + } else if (done && running <= 0) { + done = true; + resolve(_jobErr); + } else if (!looping) { + /* eslint no-use-before-define: [0] */ + if (that.isCancel()) { + resolve(_jobErr); + } else { + replenish(); + } + } + } + + function iteratee(value, callback) { + jobPromise(value) + .then(result => { + callback(null, result); + }) + .catch(err => { + callback(err); + }); + } + + function replenish() { + looping = true; + while (running < parallel && !done && !that.isCancel()) { + const elem = nextElem(); + if (elem === null || _jobErr.length > 0) { + done = true; + if (running <= 0) { + resolve(_jobErr); + } + return; + } + running += 1; + iteratee(elem.value, onlyOnce(iterateeCallback)); + } + looping = false; + } + + replenish(); + }); +}; + +/** + * cancel operation, now can use with multipartUpload + * @param {Object} abort + * {String} anort.name object key + * {String} anort.uploadId upload id + * {String} anort.options timeout + */ +proto.cancel = function cancel(abort) { + this.options.cancelFlag = true; + + if (isArray(this.multipartUploadStreams)) { + this.multipartUploadStreams.forEach(_ => { + if (_.destroyed === false) { + const err = { + name: 'cancel', + message: 'cancel' + }; + _.destroy(err); + } + }); + } + this.multipartUploadStreams = []; + if (abort) { + this.abortMultipartUpload(abort.name, abort.uploadId, abort.options); + } +}; + +proto.isCancel = function isCancel() { + return this.options.cancelFlag; +}; + +proto.resetCancelFlag = function resetCancelFlag() { + this.options.cancelFlag = false; +}; + +proto._stop = function _stop() { + this.options.cancelFlag = true; +}; + +// cancel is not error , so create an object +proto._makeCancelEvent = function _makeCancelEvent() { + const cancelEvent = { + status: 0, + name: 'cancel' + }; + return cancelEvent; +}; + +// abort is not error , so create an object +proto._makeAbortEvent = function _makeAbortEvent() { + const abortEvent = { + status: 0, + name: 'abort', + message: 'upload task has been abort' + }; + return abortEvent; +}; diff --git a/node_modules/ali-oss/lib/common/signUtils.js b/node_modules/ali-oss/lib/common/signUtils.js new file mode 100644 index 0000000..b5eb642 --- /dev/null +++ b/node_modules/ali-oss/lib/common/signUtils.js @@ -0,0 +1,392 @@ +const crypto = require('crypto'); +const is = require('is-type-of'); +const qs = require('qs'); +const { lowercaseKeyHeader } = require('./utils/lowercaseKeyHeader'); +const { encodeString } = require('./utils/encodeString'); + +/** + * + * @param {string} [cloudBoxId] + * @return {string} + */ +exports.getProduct = function getProduct(cloudBoxId) { + if (cloudBoxId === undefined) return 'oss'; + return 'oss-cloudbox'; +}; +/** + * + * @param {string} region + * @param {string} [cloudBoxId] + * @return {string} + */ +exports.getSignRegion = function getSignRegion(region, cloudBoxId) { + if (cloudBoxId === undefined) return region; + return cloudBoxId; +}; + +/** + * + * @param {String} resourcePath + * @param {Object} parameters + * @return + */ +exports.buildCanonicalizedResource = function buildCanonicalizedResource(resourcePath, parameters) { + let canonicalizedResource = `${resourcePath}`; + let separatorString = '?'; + + if (is.string(parameters) && parameters.trim() !== '') { + canonicalizedResource += separatorString + parameters; + } else if (is.array(parameters)) { + parameters.sort(); + canonicalizedResource += separatorString + parameters.join('&'); + } else if (parameters) { + const processFunc = key => { + canonicalizedResource += separatorString + key; + if (parameters[key] || parameters[key] === 0) { + canonicalizedResource += `=${parameters[key]}`; + } + separatorString = '&'; + }; + Object.keys(parameters).sort().forEach(processFunc); + } + + return canonicalizedResource; +}; + +/** + * @param {String} method + * @param {String} resourcePath + * @param {Object} request + * @param {String} expires + * @return {String} canonicalString + */ +exports.buildCanonicalString = function canonicalString(method, resourcePath, request, expires) { + request = request || {}; + const headers = lowercaseKeyHeader(request.headers); + const OSS_PREFIX = 'x-oss-'; + const ossHeaders = []; + const headersToSign = {}; + + let signContent = [ + method.toUpperCase(), + headers['content-md5'] || '', + headers['content-type'], + expires || headers['x-oss-date'] + ]; + + Object.keys(headers).forEach(key => { + const lowerKey = key.toLowerCase(); + if (lowerKey.indexOf(OSS_PREFIX) === 0) { + headersToSign[lowerKey] = String(headers[key]).trim(); + } + }); + + Object.keys(headersToSign) + .sort() + .forEach(key => { + ossHeaders.push(`${key}:${headersToSign[key]}`); + }); + + signContent = signContent.concat(ossHeaders); + + signContent.push(this.buildCanonicalizedResource(resourcePath, request.parameters)); + + return signContent.join('\n'); +}; + +/** + * @param {String} accessKeySecret + * @param {String} canonicalString + */ +exports.computeSignature = function computeSignature(accessKeySecret, canonicalString, headerEncoding = 'utf-8') { + const signature = crypto.createHmac('sha1', accessKeySecret); + return signature.update(Buffer.from(canonicalString, headerEncoding)).digest('base64'); +}; + +/** + * @param {String} accessKeyId + * @param {String} accessKeySecret + * @param {String} canonicalString + */ +exports.authorization = function authorization(accessKeyId, accessKeySecret, canonicalString, headerEncoding) { + return `OSS ${accessKeyId}:${this.computeSignature(accessKeySecret, canonicalString, headerEncoding)}`; +}; + +/** + * @param {string[]} [additionalHeaders] + * @returns {string[]} + */ +exports.fixAdditionalHeaders = additionalHeaders => { + if (!additionalHeaders) { + return []; + } + + const OSS_PREFIX = 'x-oss-'; + + return [...new Set(additionalHeaders.map(v => v.toLowerCase()))] + .filter(v => { + return v !== 'content-type' && v !== 'content-md5' && !v.startsWith(OSS_PREFIX); + }) + .sort(); +}; + +/** + * @param {string} method + * @param {Object} request + * @param {Object} request.headers + * @param {Object} [request.queries] + * @param {string} [bucketName] + * @param {string} [objectName] + * @param {string[]} [additionalHeaders] additional headers after deduplication, lowercase and sorting + * @returns {string} + */ +exports.getCanonicalRequest = function getCanonicalRequest(method, request, bucketName, objectName, additionalHeaders) { + const headers = lowercaseKeyHeader(request.headers); + const queries = request.queries || {}; + const OSS_PREFIX = 'x-oss-'; + + if (objectName && !bucketName) { + throw Error('Please ensure that bucketName is passed into getCanonicalRequest.'); + } + + const signContent = [ + method.toUpperCase(), // HTTP Verb + encodeString(`/${bucketName ? `${bucketName}/` : ''}${objectName || ''}`).replace(/%2F/g, '/') // Canonical URI + ]; + + // Canonical Query String + signContent.push( + qs.stringify(queries, { + encoder: encodeString, + sort: (a, b) => a.localeCompare(b), + strictNullHandling: true + }) + ); + + // Canonical Headers + if (additionalHeaders) { + additionalHeaders.forEach(v => { + if (!Object.prototype.hasOwnProperty.call(headers, v)) { + throw Error(`Can't find additional header ${v} in request headers.`); + } + }); + } + + const tempHeaders = new Set(additionalHeaders); + + Object.keys(headers).forEach(v => { + if (v === 'content-type' || v === 'content-md5' || v.startsWith(OSS_PREFIX)) { + tempHeaders.add(v); + } + }); + + const canonicalHeaders = `${[...tempHeaders] + .sort() + .map(v => `${v}:${is.string(headers[v]) ? headers[v].trim() : headers[v]}\n`) + .join('')}`; + + signContent.push(canonicalHeaders); + + // Additional Headers + if (additionalHeaders && additionalHeaders.length > 0) { + signContent.push(additionalHeaders.join(';')); + } else { + signContent.push(''); + } + + // Hashed Payload + signContent.push(headers['x-oss-content-sha256'] || 'UNSIGNED-PAYLOAD'); + + return signContent.join('\n'); +}; + +/** + * @param {string} date yyyymmdd + * @param {string} region Standard region, e.g. cn-hangzhou + * @param {string} [accessKeyId] Access Key ID + * @param {string} [product] Product name, default is oss + * @returns {string} + */ +exports.getCredential = function getCredential(date, region, accessKeyId, product = 'oss') { + const tempCredential = `${date}/${region}/${product}/aliyun_v4_request`; + + if (accessKeyId) { + return `${accessKeyId}/${tempCredential}`; + } + + return tempCredential; +}; + +/** + * @param {string} region Standard region, e.g. cn-hangzhou + * @param {string} date ISO8601 UTC:yyyymmdd'T'HHMMss'Z' + * @param {string} canonicalRequest + * @param {string} [product] + * @returns {string} + */ +exports.getStringToSign = function getStringToSign(region, date, canonicalRequest, product = 'oss') { + const stringToSign = [ + 'OSS4-HMAC-SHA256', + date, // TimeStamp + this.getCredential(date.split('T')[0], region, undefined, product), // Scope + crypto.createHash('sha256').update(canonicalRequest).digest('hex') // Hashed Canonical Request + ]; + + return stringToSign.join('\n'); +}; + +/** + * @param {String} accessKeySecret + * @param {string} date yyyymmdd + * @param {string} region Standard region, e.g. cn-hangzhou + * @param {string} stringToSign + * @param {string} [product] + * @returns {string} + */ +exports.getSignatureV4 = function getSignatureV4(accessKeySecret, date, region, stringToSign, product = 'oss') { + const signingDate = crypto.createHmac('sha256', `aliyun_v4${accessKeySecret}`).update(date).digest(); + const signingRegion = crypto.createHmac('sha256', signingDate).update(region).digest(); + const signingOss = crypto.createHmac('sha256', signingRegion).update(product).digest(); + const signingKey = crypto.createHmac('sha256', signingOss).update('aliyun_v4_request').digest(); + const signatureValue = crypto.createHmac('sha256', signingKey).update(stringToSign).digest('hex'); + + return signatureValue; +}; + +/** + * @param {String} accessKeyId + * @param {String} accessKeySecret + * @param {string} region Standard region, e.g. cn-hangzhou + * @param {string} method + * @param {Object} request + * @param {Object} request.headers + * @param {Object} [request.queries] + * @param {string} [bucketName] + * @param {string} [objectName] + * @param {string[]} [additionalHeaders] + * @param {string} [headerEncoding='utf-8'] + * @param {string} [cloudBoxId] + * @returns {string} + */ +exports.authorizationV4 = function authorizationV4( + accessKeyId, + accessKeySecret, + region, + method, + request, + bucketName, + objectName, + additionalHeaders, + headerEncoding = 'utf-8', + cloudBoxId +) { + const product = this.getProduct(cloudBoxId); + const fixedAdditionalHeaders = this.fixAdditionalHeaders(additionalHeaders); + const fixedHeaders = {}; + Object.entries(request.headers).forEach(v => { + fixedHeaders[v[0]] = is.string(v[1]) ? Buffer.from(v[1], headerEncoding).toString() : v[1]; + }); + const date = fixedHeaders['x-oss-date'] || (request.queries && request.queries['x-oss-date']); + const canonicalRequest = this.getCanonicalRequest( + method, + { + headers: fixedHeaders, + queries: request.queries + }, + bucketName, + objectName, + fixedAdditionalHeaders + ); + const stringToSign = this.getStringToSign(region, date, canonicalRequest, product); + const onlyDate = date.split('T')[0]; + const signatureValue = this.getSignatureV4(accessKeySecret, onlyDate, region, stringToSign, product); + const additionalHeadersValue = + fixedAdditionalHeaders.length > 0 ? `AdditionalHeaders=${fixedAdditionalHeaders.join(';')},` : ''; + + return `OSS4-HMAC-SHA256 Credential=${this.getCredential(onlyDate, region, accessKeyId, product)},${additionalHeadersValue}Signature=${signatureValue}`; +}; + +/** + * + * @param {String} accessKeySecret + * @param {Object} options + * @param {String} resource + * @param {Number} expires + */ +exports._signatureForURL = function _signatureForURL(accessKeySecret, options = {}, resource, expires, headerEncoding) { + const headers = {}; + const { subResource = {} } = options; + + if (options.process) { + const processKeyword = 'x-oss-process'; + subResource[processKeyword] = options.process; + } + + if (options.trafficLimit) { + const trafficLimitKey = 'x-oss-traffic-limit'; + subResource[trafficLimitKey] = options.trafficLimit; + } + + if (options.response) { + Object.keys(options.response).forEach(k => { + const key = `response-${k.toLowerCase()}`; + subResource[key] = options.response[k]; + }); + } + + Object.keys(options).forEach(key => { + const lowerKey = key.toLowerCase(); + const value = options[key]; + if (lowerKey.indexOf('x-oss-') === 0) { + headers[lowerKey] = value; + } else if (lowerKey.indexOf('content-md5') === 0) { + headers[key] = value; + } else if (lowerKey.indexOf('content-type') === 0) { + headers[key] = value; + } + }); + + if (Object.prototype.hasOwnProperty.call(options, 'security-token')) { + subResource['security-token'] = options['security-token']; + } + + if (Object.prototype.hasOwnProperty.call(options, 'callback')) { + const json = { + callbackUrl: encodeURI(options.callback.url), + callbackBody: options.callback.body + }; + if (options.callback.host) { + json.callbackHost = options.callback.host; + } + if (options.callback.contentType) { + json.callbackBodyType = options.callback.contentType; + } + if (options.callback.callbackSNI) { + json.callbackSNI = options.callback.callbackSNI; + } + subResource.callback = Buffer.from(JSON.stringify(json)).toString('base64'); + + if (options.callback.customValue) { + const callbackVar = {}; + Object.keys(options.callback.customValue).forEach(key => { + callbackVar[`x:${key}`] = options.callback.customValue[key]; + }); + subResource['callback-var'] = Buffer.from(JSON.stringify(callbackVar)).toString('base64'); + } + } + + const canonicalString = this.buildCanonicalString( + options.method, + resource, + { + headers, + parameters: subResource + }, + expires.toString() + ); + + return { + Signature: this.computeSignature(accessKeySecret, canonicalString, headerEncoding), + subResource + }; +}; diff --git a/node_modules/ali-oss/lib/common/utils/checkBucketName.d.ts b/node_modules/ali-oss/lib/common/utils/checkBucketName.d.ts new file mode 100644 index 0000000..4de489d --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkBucketName.d.ts @@ -0,0 +1 @@ +export declare const checkBucketName: (name: string, createBucket?: boolean) => void; diff --git a/node_modules/ali-oss/lib/common/utils/checkBucketName.js b/node_modules/ali-oss/lib/common/utils/checkBucketName.js new file mode 100644 index 0000000..9d25c62 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkBucketName.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkBucketName = void 0; +exports.checkBucketName = (name, createBucket = false) => { + const bucketRegex = createBucket ? /^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/ : /^[a-z0-9_][a-z0-9-_]{1,61}[a-z0-9_]$/; + if (!bucketRegex.test(name)) { + throw new Error('The bucket must be conform to the specifications'); + } +}; diff --git a/node_modules/ali-oss/lib/common/utils/checkBucketName.ts b/node_modules/ali-oss/lib/common/utils/checkBucketName.ts new file mode 100644 index 0000000..52dddcc --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkBucketName.ts @@ -0,0 +1,6 @@ +export const checkBucketName = (name: string, createBucket = false): void => { + const bucketRegex = createBucket ? /^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/ : /^[a-z0-9_][a-z0-9-_]{1,61}[a-z0-9_]$/; + if (!bucketRegex.test(name)) { + throw new Error('The bucket must be conform to the specifications'); + } +}; diff --git a/node_modules/ali-oss/lib/common/utils/checkBucketNameTest.d.ts b/node_modules/ali-oss/lib/common/utils/checkBucketNameTest.d.ts new file mode 100644 index 0000000..6a4015a --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkBucketNameTest.d.ts @@ -0,0 +1 @@ +export declare const checkBucketNameTest: (name: string, createBucket: boolean) => void; diff --git a/node_modules/ali-oss/lib/common/utils/checkBucketNameTest.js b/node_modules/ali-oss/lib/common/utils/checkBucketNameTest.js new file mode 100644 index 0000000..ceacfcf --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkBucketNameTest.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkBucketNameTest = void 0; +const isArray_1 = require("./isArray"); +exports.checkBucketNameTest = (name, createBucket) => { + const bucketRegex = createBucket ? /^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/ : /^[a-z0-9_][a-z0-9-_]{1,61}[a-z0-9_]$/; + if (!bucketRegex.test(name)) { + throw new Error('The bucket must be conform to the specifications'); + } +}; +let res = isArray_1.isArray([1, 2, 3]); +console.log(res, 'is array'); +res = isArray_1.isArray(''); +console.log(res, 'is array'); diff --git a/node_modules/ali-oss/lib/common/utils/checkBucketNameTest.ts b/node_modules/ali-oss/lib/common/utils/checkBucketNameTest.ts new file mode 100644 index 0000000..2f2932c --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkBucketNameTest.ts @@ -0,0 +1,12 @@ +import { isArray } from './isArray'; + +export const checkBucketNameTest = (name: string, createBucket: boolean): void => { + const bucketRegex = createBucket ? /^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/ : /^[a-z0-9_][a-z0-9-_]{1,61}[a-z0-9_]$/; + if (!bucketRegex.test(name)) { + throw new Error('The bucket must be conform to the specifications'); + } +}; +let res = isArray([1, 2, 3]); +console.log(res, 'is array'); +res = isArray(''); +console.log(res, 'is array'); diff --git a/node_modules/ali-oss/lib/common/utils/checkBucketTag.d.ts b/node_modules/ali-oss/lib/common/utils/checkBucketTag.d.ts new file mode 100644 index 0000000..d6d7e4b --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkBucketTag.d.ts @@ -0,0 +1 @@ +export declare const checkBucketTag: (tag: object) => void; diff --git a/node_modules/ali-oss/lib/common/utils/checkBucketTag.js b/node_modules/ali-oss/lib/common/utils/checkBucketTag.js new file mode 100644 index 0000000..8efafd0 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkBucketTag.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkBucketTag = void 0; +const { checkValid } = require('./checkValid'); +const { isObject } = require('./isObject'); +const commonRules = [ + { + validator: value => { + if (typeof value !== 'string') { + throw new Error('the key and value of the tag must be String'); + } + } + } +]; +const rules = { + key: [ + ...commonRules, + { + pattern: /^.{1,64}$/, + msg: 'tag key can be a maximum of 64 bytes in length' + }, + { + pattern: /^(?!https*:\/\/|Aliyun)/, + msg: 'tag key can not startsWith: http://, https://, Aliyun' + } + ], + value: [ + ...commonRules, + { + pattern: /^.{0,128}$/, + msg: 'tag value can be a maximum of 128 bytes in length' + } + ] +}; +exports.checkBucketTag = (tag) => { + if (!isObject(tag)) { + throw new Error('bucket tag must be Object'); + } + const entries = Object.entries(tag); + if (entries.length > 20) { + throw new Error('maximum of 20 tags for a bucket'); + } + const rulesIndexKey = ['key', 'value']; + entries.forEach(keyValue => { + keyValue.forEach((item, index) => { + checkValid(item, rules[rulesIndexKey[index]]); + }); + }); +}; diff --git a/node_modules/ali-oss/lib/common/utils/checkBucketTag.ts b/node_modules/ali-oss/lib/common/utils/checkBucketTag.ts new file mode 100644 index 0000000..e1fa5cb --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkBucketTag.ts @@ -0,0 +1,52 @@ +const { checkValid } = require('./checkValid'); +const { isObject } = require('./isObject'); + +const commonRules = [ + { + validator: value => { + if (typeof value !== 'string') { + throw new Error('the key and value of the tag must be String'); + } + } + } +]; + +const rules = { + key: [ + ...commonRules, + { + pattern: /^.{1,64}$/, + msg: 'tag key can be a maximum of 64 bytes in length' + }, + { + pattern: /^(?!https*:\/\/|Aliyun)/, + msg: 'tag key can not startsWith: http://, https://, Aliyun' + } + ], + value: [ + ...commonRules, + { + pattern: /^.{0,128}$/, + msg: 'tag value can be a maximum of 128 bytes in length' + } + ] +}; + +export const checkBucketTag = (tag: object) => { + if (!isObject(tag)) { + throw new Error('bucket tag must be Object'); + } + + const entries = Object.entries(tag); + + if (entries.length > 20) { + throw new Error('maximum of 20 tags for a bucket'); + } + + const rulesIndexKey = ['key', 'value']; + entries.forEach(keyValue => { + keyValue.forEach((item, index) => { + checkValid(item, rules[rulesIndexKey[index]]); + }); + }); +}; diff --git a/node_modules/ali-oss/lib/common/utils/checkConfigValid.d.ts b/node_modules/ali-oss/lib/common/utils/checkConfigValid.d.ts new file mode 100644 index 0000000..d1bcb3f --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkConfigValid.d.ts @@ -0,0 +1 @@ +export declare const checkConfigValid: (conf: any, key: 'endpoint' | 'region') => void; diff --git a/node_modules/ali-oss/lib/common/utils/checkConfigValid.js b/node_modules/ali-oss/lib/common/utils/checkConfigValid.js new file mode 100644 index 0000000..ba0ed3f --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkConfigValid.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkConfigValid = void 0; +const checkConfigMap = { + endpoint: checkEndpoint, + region: /^[a-zA-Z0-9\-_]+$/ +}; +function checkEndpoint(endpoint) { + if (typeof endpoint === 'string') { + return /^[a-zA-Z0-9._:/-]+$/.test(endpoint); + } + else if (endpoint.host) { + return /^[a-zA-Z0-9._:/-]+$/.test(endpoint.host); + } + return false; +} +exports.checkConfigValid = (conf, key) => { + if (checkConfigMap[key]) { + let isConfigValid = true; + if (checkConfigMap[key] instanceof Function) { + isConfigValid = checkConfigMap[key](conf); + } + else { + isConfigValid = checkConfigMap[key].test(conf); + } + if (!isConfigValid) { + throw new Error(`The ${key} must be conform to the specifications`); + } + } +}; diff --git a/node_modules/ali-oss/lib/common/utils/checkConfigValid.ts b/node_modules/ali-oss/lib/common/utils/checkConfigValid.ts new file mode 100644 index 0000000..7912158 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkConfigValid.ts @@ -0,0 +1,27 @@ +const checkConfigMap = { + endpoint: checkEndpoint, + region: /^[a-zA-Z0-9\-_]+$/ +}; + +function checkEndpoint(endpoint) { + if (typeof endpoint === 'string') { + return /^[a-zA-Z0-9._:/-]+$/.test(endpoint); + } else if (endpoint.host) { + return /^[a-zA-Z0-9._:/-]+$/.test(endpoint.host); + } + return false; +} + +export const checkConfigValid = (conf, key: 'endpoint' | 'region'): void => { + if (checkConfigMap[key]) { + let isConfigValid = true; + if (checkConfigMap[key] instanceof Function) { + isConfigValid = (checkConfigMap[key] as Function)(conf); + } else { + isConfigValid = (checkConfigMap[key] as RegExp).test(conf); + } + if (!isConfigValid) { + throw new Error(`The ${key} must be conform to the specifications`); + } + } +}; diff --git a/node_modules/ali-oss/lib/common/utils/checkEnv.d.ts b/node_modules/ali-oss/lib/common/utils/checkEnv.d.ts new file mode 100644 index 0000000..e536606 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkEnv.d.ts @@ -0,0 +1 @@ +export declare function checkEnv(msg: string): void; diff --git a/node_modules/ali-oss/lib/common/utils/checkEnv.js b/node_modules/ali-oss/lib/common/utils/checkEnv.js new file mode 100644 index 0000000..1a0f7b2 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkEnv.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkEnv = void 0; +function checkEnv(msg) { + if (process.browser) { + console.warn(msg); + } +} +exports.checkEnv = checkEnv; diff --git a/node_modules/ali-oss/lib/common/utils/checkEnv.ts b/node_modules/ali-oss/lib/common/utils/checkEnv.ts new file mode 100644 index 0000000..b373658 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkEnv.ts @@ -0,0 +1,5 @@ +export function checkEnv(msg: string) { + if (process.browser) { + console.warn(msg); + } +} diff --git a/node_modules/ali-oss/lib/common/utils/checkObjectTag.d.ts b/node_modules/ali-oss/lib/common/utils/checkObjectTag.d.ts new file mode 100644 index 0000000..86c8e7c --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkObjectTag.d.ts @@ -0,0 +1 @@ +export declare function checkObjectTag(tag: any): void; diff --git a/node_modules/ali-oss/lib/common/utils/checkObjectTag.js b/node_modules/ali-oss/lib/common/utils/checkObjectTag.js new file mode 100644 index 0000000..b44499c --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkObjectTag.js @@ -0,0 +1,50 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkObjectTag = void 0; +const { checkValid } = require('./checkValid'); +const { isObject } = require('./isObject'); +const commonRules = [ + { + validator: value => { + if (typeof value !== 'string') { + throw new Error('the key and value of the tag must be String'); + } + } + }, + { + pattern: /^[a-zA-Z0-9 +-=._:/]+$/, + msg: 'tag can contain letters, numbers, spaces, and the following symbols: plus sign (+), hyphen (-), equal sign (=), period (.), underscore (_), colon (:), and forward slash (/)' + } +]; +const rules = { + key: [ + ...commonRules, + { + pattern: /^.{1,128}$/, + msg: 'tag key can be a maximum of 128 bytes in length' + } + ], + value: [ + ...commonRules, + { + pattern: /^.{0,256}$/, + msg: 'tag value can be a maximum of 256 bytes in length' + } + ] +}; +function checkObjectTag(tag) { + if (!isObject(tag)) { + throw new Error('tag must be Object'); + } + const entries = Object.entries(tag); + if (entries.length > 10) { + throw new Error('maximum of 10 tags for a object'); + } + const rulesIndexKey = ['key', 'value']; + entries.forEach(keyValue => { + keyValue.forEach((item, index) => { + checkValid(item, rules[rulesIndexKey[index]]); + }); + }); +} +exports.checkObjectTag = checkObjectTag; diff --git a/node_modules/ali-oss/lib/common/utils/checkObjectTag.ts b/node_modules/ali-oss/lib/common/utils/checkObjectTag.ts new file mode 100644 index 0000000..5f7d060 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkObjectTag.ts @@ -0,0 +1,53 @@ +const { checkValid } = require('./checkValid'); +const { isObject } = require('./isObject'); + +const commonRules = [ + { + validator: value => { + if (typeof value !== 'string') { + throw new Error('the key and value of the tag must be String'); + } + } + }, + { + pattern: /^[a-zA-Z0-9 +-=._:/]+$/, + msg: 'tag can contain letters, numbers, spaces, and the following symbols: plus sign (+), hyphen (-), equal sign (=), period (.), underscore (_), colon (:), and forward slash (/)' + } +]; + +const rules = { + key: [ + ...commonRules, + { + pattern: /^.{1,128}$/, + msg: 'tag key can be a maximum of 128 bytes in length' + } + ], + value: [ + ...commonRules, + { + pattern: /^.{0,256}$/, + msg: 'tag value can be a maximum of 256 bytes in length' + } + ] +}; + +export function checkObjectTag(tag) { + if (!isObject(tag)) { + throw new Error('tag must be Object'); + } + + const entries = Object.entries(tag); + + if (entries.length > 10) { + throw new Error('maximum of 10 tags for a object'); + } + + const rulesIndexKey = ['key', 'value']; + + entries.forEach(keyValue => { + keyValue.forEach((item, index) => { + checkValid(item, rules[rulesIndexKey[index]]); + }); + }); +} diff --git a/node_modules/ali-oss/lib/common/utils/checkUserAgent.d.ts b/node_modules/ali-oss/lib/common/utils/checkUserAgent.d.ts new file mode 100644 index 0000000..1b81a37 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkUserAgent.d.ts @@ -0,0 +1 @@ +export declare const checkUserAgent: (ua: any) => any; diff --git a/node_modules/ali-oss/lib/common/utils/checkUserAgent.js b/node_modules/ali-oss/lib/common/utils/checkUserAgent.js new file mode 100644 index 0000000..345d263 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkUserAgent.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkUserAgent = void 0; +exports.checkUserAgent = ua => { + const userAgent = ua.replace(/\u03b1/, 'alpha').replace(/\u03b2/, 'beta'); + return userAgent; +}; diff --git a/node_modules/ali-oss/lib/common/utils/checkUserAgent.ts b/node_modules/ali-oss/lib/common/utils/checkUserAgent.ts new file mode 100644 index 0000000..d6b4bb6 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkUserAgent.ts @@ -0,0 +1,4 @@ +export const checkUserAgent = ua => { + const userAgent = ua.replace(/\u03b1/, 'alpha').replace(/\u03b2/, 'beta'); + return userAgent; +}; diff --git a/node_modules/ali-oss/lib/common/utils/checkValid.d.ts b/node_modules/ali-oss/lib/common/utils/checkValid.d.ts new file mode 100644 index 0000000..10fb0a6 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkValid.d.ts @@ -0,0 +1 @@ +export declare function checkValid(_value: any, _rules: any): void; diff --git a/node_modules/ali-oss/lib/common/utils/checkValid.js b/node_modules/ali-oss/lib/common/utils/checkValid.js new file mode 100644 index 0000000..f1d066c --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkValid.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkValid = void 0; +function checkValid(_value, _rules) { + _rules.forEach(rule => { + if (rule.validator) { + rule.validator(_value); + } + else if (rule.pattern && !rule.pattern.test(_value)) { + throw new Error(rule.msg); + } + }); +} +exports.checkValid = checkValid; diff --git a/node_modules/ali-oss/lib/common/utils/checkValid.ts b/node_modules/ali-oss/lib/common/utils/checkValid.ts new file mode 100644 index 0000000..524a68b --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/checkValid.ts @@ -0,0 +1,9 @@ +export function checkValid(_value, _rules) { + _rules.forEach(rule => { + if (rule.validator) { + rule.validator(_value); + } else if (rule.pattern && !rule.pattern.test(_value)) { + throw new Error(rule.msg); + } + }); +} diff --git a/node_modules/ali-oss/lib/common/utils/createRequest.d.ts b/node_modules/ali-oss/lib/common/utils/createRequest.d.ts new file mode 100644 index 0000000..666438c --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/createRequest.d.ts @@ -0,0 +1,8 @@ +interface ReqParams { + [propName: string]: any; +} +export declare function createRequest(this: any, params: any): { + url: any; + params: ReqParams; +}; +export {}; diff --git a/node_modules/ali-oss/lib/common/utils/createRequest.js b/node_modules/ali-oss/lib/common/utils/createRequest.js new file mode 100644 index 0000000..e1886c4 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/createRequest.js @@ -0,0 +1,139 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createRequest = void 0; +const crypto = require('crypto'); +const debug = require('debug')('ali-oss'); +const _isString = require('lodash/isString'); +const _isArray = require('lodash/isArray'); +const _isObject = require('lodash/isObject'); +const mime = require('mime'); +const dateFormat = require('dateformat'); +const copy = require('copy-to'); +const path = require('path'); +const { encoder } = require('./encoder'); +const { isIP } = require('./isIP'); +const { setRegion } = require('./setRegion'); +const { getReqUrl } = require('../client/getReqUrl'); +const { isDingTalk } = require('./isDingTalk'); +function getHeader(headers, name) { + return headers[name] || headers[name.toLowerCase()]; +} +function delHeader(headers, name) { + delete headers[name]; + delete headers[name.toLowerCase()]; +} +function createRequest(params) { + let date = new Date(); + if (this.options.amendTimeSkewed) { + date = +new Date() + this.options.amendTimeSkewed; + } + const headers = { + 'x-oss-date': dateFormat(date, this.options.authorizationV4 ? "UTC:yyyymmdd'T'HHMMss'Z'" : "UTC:ddd, dd mmm yyyy HH:MM:ss 'GMT'") + }; + if (this.options.authorizationV4) { + headers['x-oss-content-sha256'] = 'UNSIGNED-PAYLOAD'; + } + if (typeof window !== 'undefined') { + headers['x-oss-user-agent'] = this.userAgent; + } + if (this.userAgent.includes('nodejs')) { + headers['User-Agent'] = this.userAgent; + } + if (this.options.isRequestPay) { + Object.assign(headers, { 'x-oss-request-payer': 'requester' }); + } + if (this.options.stsToken) { + headers['x-oss-security-token'] = this.options.stsToken; + } + copy(params.headers).to(headers); + if (!getHeader(headers, 'Content-Type')) { + if (params.mime && params.mime.indexOf('/') > 0) { + headers['Content-Type'] = params.mime; + } + else if (isDingTalk()) { + headers['Content-Type'] = 'application/octet-stream'; + } + else { + headers['Content-Type'] = mime.getType(params.mime || path.extname(params.object || '')); + } + } + if (!getHeader(headers, 'Content-Type')) { + delHeader(headers, 'Content-Type'); + } + if (params.content) { + if (!params.disabledMD5) { + if (!params.headers || !params.headers['Content-MD5']) { + headers['Content-MD5'] = crypto.createHash('md5').update(Buffer.from(params.content, 'utf8')).digest('base64'); + } + else { + headers['Content-MD5'] = params.headers['Content-MD5']; + } + } + if (!headers['Content-Length']) { + headers['Content-Length'] = params.content.length; + } + } + const { hasOwnProperty } = Object.prototype; + for (const k in headers) { + if (headers[k] && hasOwnProperty.call(headers, k)) { + headers[k] = encoder(String(headers[k]), this.options.headerEncoding); + } + } + const queries = {}; + if (_isString(params.subres)) { + queries[params.subres] = null; + } + else if (_isArray(params.subres)) { + params.subres.forEach(v => { + queries[v] = null; + }); + } + else if (_isObject(params.subres)) { + Object.entries(params.subres).forEach(v => { + queries[v[0]] = v[1] === '' ? null : v[1]; + }); + } + if (_isObject(params.query)) { + Object.entries(params.query).forEach(v => { + queries[v[0]] = v[1]; + }); + } + headers.authorization = this.options.authorizationV4 + ? this.authorizationV4(params.method, { + headers, + queries + }, params.bucket, params.object, params.additionalHeaders) + : this.authorization(params.method, this._getResource(params), params.subres, headers, this.options.headerEncoding); + // const url = this._getReqUrl(params); + if (isIP(this.options.endpoint.hostname)) { + const { region, internal, secure } = this.options; + const hostInfo = setRegion(region, internal, secure); + headers.host = `${params.bucket}.${hostInfo.host}`; + } + const url = getReqUrl.bind(this)(params); + debug('request %s %s, with headers %j, !!stream: %s', params.method, url, headers, !!params.stream); + const timeout = params.timeout || this.options.timeout; + const reqParams = { + method: params.method, + content: params.content, + stream: params.stream, + headers, + timeout, + writeStream: params.writeStream, + customResponse: params.customResponse, + ctx: params.ctx || this.ctx + }; + if (this.agent) { + reqParams.agent = this.agent; + } + if (this.httpsAgent) { + reqParams.httpsAgent = this.httpsAgent; + } + reqParams.enableProxy = !!this.options.enableProxy; + reqParams.proxy = this.options.proxy ? this.options.proxy : null; + return { + url, + params: reqParams + }; +} +exports.createRequest = createRequest; diff --git a/node_modules/ali-oss/lib/common/utils/createRequest.ts b/node_modules/ali-oss/lib/common/utils/createRequest.ts new file mode 100644 index 0000000..4ddb7d9 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/createRequest.ts @@ -0,0 +1,169 @@ +const crypto = require('crypto'); +const debug = require('debug')('ali-oss'); +const _isString = require('lodash/isString'); +const _isArray = require('lodash/isArray'); +const _isObject = require('lodash/isObject'); +const mime = require('mime'); +const dateFormat = require('dateformat'); +const copy = require('copy-to'); +const path = require('path'); +const { encoder } = require('./encoder'); +const { isIP } = require('./isIP'); +const { setRegion } = require('./setRegion'); +const { getReqUrl } = require('../client/getReqUrl'); +const { isDingTalk } = require('./isDingTalk'); + +interface Headers { + [propName: string]: any; + 'x-oss-date': string; + 'x-oss-user-agent'?: string; +} + +interface ReqParams { + [propName: string]: any; +} + +function getHeader(headers: Headers, name: string) { + return headers[name] || headers[name.toLowerCase()]; +} + +function delHeader(headers: Headers, name: string) { + delete headers[name]; + delete headers[name.toLowerCase()]; +} + +export function createRequest(this: any, params) { + let date = new Date(); + if (this.options.amendTimeSkewed) { + date = +new Date() + this.options.amendTimeSkewed; + } + const headers: Headers = { + 'x-oss-date': dateFormat( + date, + this.options.authorizationV4 ? "UTC:yyyymmdd'T'HHMMss'Z'" : "UTC:ddd, dd mmm yyyy HH:MM:ss 'GMT'" + ) + }; + + if (this.options.authorizationV4) { + headers['x-oss-content-sha256'] = 'UNSIGNED-PAYLOAD'; + } + + if (typeof window !== 'undefined') { + headers['x-oss-user-agent'] = this.userAgent; + } + + if (this.userAgent.includes('nodejs')) { + headers['User-Agent'] = this.userAgent; + } + + if (this.options.isRequestPay) { + Object.assign(headers, { 'x-oss-request-payer': 'requester' }); + } + + if (this.options.stsToken) { + headers['x-oss-security-token'] = this.options.stsToken; + } + + copy(params.headers).to(headers); + + if (!getHeader(headers, 'Content-Type')) { + if (params.mime && params.mime.indexOf('/') > 0) { + headers['Content-Type'] = params.mime; + } else if (isDingTalk()) { + headers['Content-Type'] = 'application/octet-stream'; + } else { + headers['Content-Type'] = mime.getType(params.mime || path.extname(params.object || '')); + } + } + + if (!getHeader(headers, 'Content-Type')) { + delHeader(headers, 'Content-Type'); + } + + if (params.content) { + if (!params.disabledMD5) { + if (!params.headers || !params.headers['Content-MD5']) { + headers['Content-MD5'] = crypto.createHash('md5').update(Buffer.from(params.content, 'utf8')).digest('base64'); + } else { + headers['Content-MD5'] = params.headers['Content-MD5']; + } + } + if (!headers['Content-Length']) { + headers['Content-Length'] = params.content.length; + } + } + + const { hasOwnProperty } = Object.prototype; + for (const k in headers) { + if (headers[k] && hasOwnProperty.call(headers, k)) { + headers[k] = encoder(String(headers[k]), this.options.headerEncoding); + } + } + + const queries = {}; + + if (_isString(params.subres)) { + queries[params.subres] = null; + } else if (_isArray(params.subres)) { + params.subres.forEach(v => { + queries[v] = null; + }); + } else if (_isObject(params.subres)) { + Object.entries(params.subres).forEach(v => { + queries[v[0]] = v[1] === '' ? null : v[1]; + }); + } + + if (_isObject(params.query)) { + Object.entries(params.query).forEach(v => { + queries[v[0]] = v[1]; + }); + } + + headers.authorization = this.options.authorizationV4 + ? this.authorizationV4( + params.method, + { + headers, + queries + }, + params.bucket, + params.object, + params.additionalHeaders + ) + : this.authorization(params.method, this._getResource(params), params.subres, headers, this.options.headerEncoding); + + // const url = this._getReqUrl(params); + if (isIP(this.options.endpoint.hostname)) { + const { region, internal, secure } = this.options; + const hostInfo = setRegion(region, internal, secure); + headers.host = `${params.bucket}.${hostInfo.host}`; + } + const url = getReqUrl.bind(this)(params); + debug('request %s %s, with headers %j, !!stream: %s', params.method, url, headers, !!params.stream); + const timeout = params.timeout || this.options.timeout; + const reqParams: ReqParams = { + method: params.method, + content: params.content, + stream: params.stream, + headers, + timeout, + writeStream: params.writeStream, + customResponse: params.customResponse, + ctx: params.ctx || this.ctx + }; + if (this.agent) { + reqParams.agent = this.agent; + } + if (this.httpsAgent) { + reqParams.httpsAgent = this.httpsAgent; + } + + reqParams.enableProxy = !!this.options.enableProxy; + reqParams.proxy = this.options.proxy ? this.options.proxy : null; + + return { + url, + params: reqParams + }; +} diff --git a/node_modules/ali-oss/lib/common/utils/dataFix.d.ts b/node_modules/ali-oss/lib/common/utils/dataFix.d.ts new file mode 100644 index 0000000..da522ad --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/dataFix.d.ts @@ -0,0 +1,12 @@ +interface Rename { + [propName: string]: string; +} +interface Config { + lowerFirst?: boolean; + rename?: Rename; + remove?: string[]; + camel?: string[]; + bool?: string[]; +} +export declare function dataFix(o: object, conf: Config, finalKill?: Function): typeof dataFix | undefined; +export {}; diff --git a/node_modules/ali-oss/lib/common/utils/dataFix.js b/node_modules/ali-oss/lib/common/utils/dataFix.js new file mode 100644 index 0000000..0fe9bd3 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/dataFix.js @@ -0,0 +1,63 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.dataFix = void 0; +const isObject_1 = require("./isObject"); +const TRUE = ['true', 'TRUE', '1', 1]; +const FALSE = ['false', 'FALSE', '0', 0]; +function dataFix(o, conf, finalKill) { + if (!isObject_1.isObject(o)) + return; + const { remove = [], rename = {}, camel = [], bool = [], lowerFirst = false } = conf; + // 删除不需要的数据 + remove.forEach(v => delete o[v]); + // 重命名 + Object.entries(rename).forEach(v => { + if (!o[v[0]]) + return; + if (o[v[1]]) + return; + o[v[1]] = o[v[0]]; + delete o[v[0]]; + }); + // 驼峰化 + camel.forEach(v => { + if (!o[v]) + return; + const afterKey = v.replace(/^(.)/, $0 => $0.toLowerCase()).replace(/-(\w)/g, (_, $1) => $1.toUpperCase()); + if (o[afterKey]) + return; + o[afterKey] = o[v]; + // todo 暂时兼容以前数据,不做删除 + // delete o[v]; + }); + // 转换值为布尔值 + bool.forEach(v => { + o[v] = fixBool(o[v]); + }); + // finalKill + if (typeof finalKill === 'function') { + finalKill(o); + } + // 首字母转小写 + fixLowerFirst(o, lowerFirst); + return dataFix; +} +exports.dataFix = dataFix; +function fixBool(value) { + if (!value) + return false; + if (TRUE.includes(value)) + return true; + return FALSE.includes(value) ? false : value; +} +function fixLowerFirst(o, lowerFirst) { + if (lowerFirst) { + Object.keys(o).forEach(key => { + const lowerK = key.replace(/^\w/, match => match.toLowerCase()); + if (typeof o[lowerK] === 'undefined') { + o[lowerK] = o[key]; + delete o[key]; + } + }); + } +} diff --git a/node_modules/ali-oss/lib/common/utils/dataFix.ts b/node_modules/ali-oss/lib/common/utils/dataFix.ts new file mode 100644 index 0000000..e535e3f --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/dataFix.ts @@ -0,0 +1,78 @@ +import { isObject } from './isObject'; + +interface Rename { + [propName: string]: string; +} + +interface Config { + lowerFirst?: boolean; + rename?: Rename; + remove?: string[]; + camel?: string[]; + bool?: string[]; +} + +const TRUE = ['true', 'TRUE', '1', 1]; +const FALSE = ['false', 'FALSE', '0', 0]; + +export function dataFix(o: object, conf: Config, finalKill?: Function) { + if (!isObject(o)) return; + + const { remove = [], rename = {}, camel = [], bool = [], lowerFirst = false } = conf; + + // 删除不需要的数据 + remove.forEach(v => delete o[v]); + + // 重命名 + Object.entries(rename).forEach(v => { + if (!o[v[0]]) return; + if (o[v[1]]) return; + o[v[1]] = o[v[0]]; + delete o[v[0]]; + }); + + // 驼峰化 + camel.forEach(v => { + if (!o[v]) return; + const afterKey = v.replace(/^(.)/, $0 => $0.toLowerCase()).replace(/-(\w)/g, (_, $1) => $1.toUpperCase()); + if (o[afterKey]) return; + o[afterKey] = o[v]; + // todo 暂时兼容以前数据,不做删除 + // delete o[v]; + }); + + // 转换值为布尔值 + bool.forEach(v => { + o[v] = fixBool(o[v]); + }); + + // finalKill + if (typeof finalKill === 'function') { + finalKill(o); + } + + // 首字母转小写 + fixLowerFirst(o, lowerFirst); + + return dataFix; +} + +function fixBool(value) { + if (!value) return false; + + if (TRUE.includes(value)) return true; + + return FALSE.includes(value) ? false : value; +} + +function fixLowerFirst(o, lowerFirst) { + if (lowerFirst) { + Object.keys(o).forEach(key => { + const lowerK = key.replace(/^\w/, match => match.toLowerCase()); + if (typeof o[lowerK] === 'undefined') { + o[lowerK] = o[key]; + delete o[key]; + } + }); + } +} diff --git a/node_modules/ali-oss/lib/common/utils/deepCopy.d.ts b/node_modules/ali-oss/lib/common/utils/deepCopy.d.ts new file mode 100644 index 0000000..fe38b80 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/deepCopy.d.ts @@ -0,0 +1,2 @@ +export declare const deepCopy: (obj: any) => any; +export declare const deepCopyWith: (obj: any, customizer?: ((v: any, k: string, o: any) => any) | undefined) => any; diff --git a/node_modules/ali-oss/lib/common/utils/deepCopy.js b/node_modules/ali-oss/lib/common/utils/deepCopy.js new file mode 100644 index 0000000..dc863fe --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/deepCopy.js @@ -0,0 +1,41 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deepCopyWith = exports.deepCopy = void 0; +const isBuffer_1 = require("./isBuffer"); +exports.deepCopy = obj => { + if (obj === null || typeof obj !== 'object') { + return obj; + } + if (isBuffer_1.isBuffer(obj)) { + return obj.slice(); + } + const copy = Array.isArray(obj) ? [] : {}; + Object.keys(obj).forEach(key => { + copy[key] = exports.deepCopy(obj[key]); + }); + return copy; +}; +exports.deepCopyWith = (obj, customizer) => { + function deepCopyWithHelper(value, innerKey, innerObject) { + const result = customizer(value, innerKey, innerObject); + if (result !== undefined) + return result; + if (value === null || typeof value !== 'object') { + return value; + } + if (isBuffer_1.isBuffer(value)) { + return value.slice(); + } + const copy = Array.isArray(value) ? [] : {}; + Object.keys(value).forEach(k => { + copy[k] = deepCopyWithHelper(value[k], k, value); + }); + return copy; + } + if (customizer) { + return deepCopyWithHelper(obj, '', null); + } + else { + return exports.deepCopy(obj); + } +}; diff --git a/node_modules/ali-oss/lib/common/utils/deepCopy.ts b/node_modules/ali-oss/lib/common/utils/deepCopy.ts new file mode 100644 index 0000000..346b3fb --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/deepCopy.ts @@ -0,0 +1,47 @@ +import { isBuffer } from './isBuffer'; + +export const deepCopy = obj => { + if (obj === null || typeof obj !== 'object') { + return obj; + } + if (isBuffer(obj)) { + return obj.slice(); + } + + const copy = Array.isArray(obj) ? [] : {}; + + Object.keys(obj).forEach(key => { + copy[key] = deepCopy(obj[key]); + }); + + return copy; +}; + +export const deepCopyWith = (obj: any, customizer?: (v: any, k: string, o: any) => any) => { + function deepCopyWithHelper(value: any, innerKey: string, innerObject: any) { + const result = customizer!(value, innerKey, innerObject); + if (result !== undefined) return result; + + if (value === null || typeof value !== 'object') { + return value; + } + + if (isBuffer(value)) { + return value.slice(); + } + + const copy = Array.isArray(value) ? [] : {}; + + Object.keys(value).forEach(k => { + copy[k] = deepCopyWithHelper(value[k], k, value); + }); + + return copy; + } + + if (customizer) { + return deepCopyWithHelper(obj, '', null); + } else { + return deepCopy(obj); + } +}; diff --git a/node_modules/ali-oss/lib/common/utils/encodeString.d.ts b/node_modules/ali-oss/lib/common/utils/encodeString.d.ts new file mode 100644 index 0000000..0cad382 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/encodeString.d.ts @@ -0,0 +1 @@ +export declare function encodeString(str: unknown): string; diff --git a/node_modules/ali-oss/lib/common/utils/encodeString.js b/node_modules/ali-oss/lib/common/utils/encodeString.js new file mode 100644 index 0000000..81cdd9c --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/encodeString.js @@ -0,0 +1,12 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.encodeString = void 0; +const toString_1 = __importDefault(require("lodash/toString")); +function encodeString(str) { + const tempStr = toString_1.default(str); + return encodeURIComponent(tempStr).replace(/[!'()*]/g, c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`); +} +exports.encodeString = encodeString; diff --git a/node_modules/ali-oss/lib/common/utils/encodeString.ts b/node_modules/ali-oss/lib/common/utils/encodeString.ts new file mode 100644 index 0000000..9a8e4c3 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/encodeString.ts @@ -0,0 +1,7 @@ +import _toString from 'lodash/toString'; + +export function encodeString(str: unknown) { + const tempStr = _toString(str); + + return encodeURIComponent(tempStr).replace(/[!'()*]/g, c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`); +} diff --git a/node_modules/ali-oss/lib/common/utils/encoder.d.ts b/node_modules/ali-oss/lib/common/utils/encoder.d.ts new file mode 100644 index 0000000..6796aef --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/encoder.d.ts @@ -0,0 +1,2 @@ +import { THeaderEncoding } from '../../types/experimental'; +export declare function encoder(str: string, encoding?: THeaderEncoding): string; diff --git a/node_modules/ali-oss/lib/common/utils/encoder.js b/node_modules/ali-oss/lib/common/utils/encoder.js new file mode 100644 index 0000000..a64ffa5 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/encoder.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.encoder = void 0; +function encoder(str, encoding = 'utf-8') { + if (encoding === 'utf-8') + return str; + return Buffer.from(str).toString('latin1'); +} +exports.encoder = encoder; diff --git a/node_modules/ali-oss/lib/common/utils/encoder.ts b/node_modules/ali-oss/lib/common/utils/encoder.ts new file mode 100644 index 0000000..7476afb --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/encoder.ts @@ -0,0 +1,6 @@ +import { THeaderEncoding } from '../../types/experimental'; + +export function encoder(str: string, encoding: THeaderEncoding = 'utf-8') { + if (encoding === 'utf-8') return str; + return Buffer.from(str).toString('latin1'); +} diff --git a/node_modules/ali-oss/lib/common/utils/formatInventoryConfig.d.ts b/node_modules/ali-oss/lib/common/utils/formatInventoryConfig.d.ts new file mode 100644 index 0000000..2210338 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/formatInventoryConfig.d.ts @@ -0,0 +1 @@ +export declare function formatInventoryConfig(inventoryConfig: any, toArray?: boolean): any; diff --git a/node_modules/ali-oss/lib/common/utils/formatInventoryConfig.js b/node_modules/ali-oss/lib/common/utils/formatInventoryConfig.js new file mode 100644 index 0000000..a9f8b75 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/formatInventoryConfig.js @@ -0,0 +1,45 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.formatInventoryConfig = void 0; +const dataFix_1 = require("../utils/dataFix"); +const isObject_1 = require("../utils/isObject"); +const isArray_1 = require("../utils/isArray"); +const formatObjKey_1 = require("../utils/formatObjKey"); +function formatInventoryConfig(inventoryConfig, toArray = false) { + if (toArray && isObject_1.isObject(inventoryConfig)) + inventoryConfig = [inventoryConfig]; + if (isArray_1.isArray(inventoryConfig)) { + inventoryConfig = inventoryConfig.map(formatFn); + } + else { + inventoryConfig = formatFn(inventoryConfig); + } + return inventoryConfig; +} +exports.formatInventoryConfig = formatInventoryConfig; +function formatFn(_) { + dataFix_1.dataFix(_, { bool: ['IsEnabled'] }, conf => { + var _a, _b; + // prefix + conf.prefix = conf.Filter.Prefix; + delete conf.Filter; + // OSSBucketDestination + conf.OSSBucketDestination = conf.Destination.OSSBucketDestination; + // OSSBucketDestination.rolename + conf.OSSBucketDestination.rolename = conf.OSSBucketDestination.RoleArn.replace(/.*\//, ''); + delete conf.OSSBucketDestination.RoleArn; + // OSSBucketDestination.bucket + conf.OSSBucketDestination.bucket = conf.OSSBucketDestination.Bucket.replace(/.*:::/, ''); + delete conf.OSSBucketDestination.Bucket; + delete conf.Destination; + // frequency + conf.frequency = conf.Schedule.Frequency; + delete conf.Schedule.Frequency; + // optionalFields + if (((_a = conf === null || conf === void 0 ? void 0 : conf.OptionalFields) === null || _a === void 0 ? void 0 : _a.Field) && !isArray_1.isArray((_b = conf.OptionalFields) === null || _b === void 0 ? void 0 : _b.Field)) + conf.OptionalFields.Field = [conf.OptionalFields.Field]; + }); + // firstLowerCase + _ = formatObjKey_1.formatObjKey(_, 'firstLowerCase', { exclude: ['OSSBucketDestination', 'SSE-OSS', 'SSE-KMS'] }); + return _; +} diff --git a/node_modules/ali-oss/lib/common/utils/formatInventoryConfig.ts b/node_modules/ali-oss/lib/common/utils/formatInventoryConfig.ts new file mode 100644 index 0000000..2541cd4 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/formatInventoryConfig.ts @@ -0,0 +1,41 @@ +import { dataFix } from '../utils/dataFix'; +import { isObject } from '../utils/isObject'; +import { isArray } from '../utils/isArray'; +import { formatObjKey } from '../utils/formatObjKey'; + +export function formatInventoryConfig(inventoryConfig, toArray = false) { + if (toArray && isObject(inventoryConfig)) inventoryConfig = [inventoryConfig]; + + if (isArray(inventoryConfig)) { + inventoryConfig = inventoryConfig.map(formatFn); + } else { + inventoryConfig = formatFn(inventoryConfig); + } + return inventoryConfig; +} + +function formatFn(_) { + dataFix(_, { bool: ['IsEnabled'] }, conf => { + // prefix + conf.prefix = conf.Filter.Prefix; + delete conf.Filter; + // OSSBucketDestination + conf.OSSBucketDestination = conf.Destination.OSSBucketDestination; + // OSSBucketDestination.rolename + conf.OSSBucketDestination.rolename = conf.OSSBucketDestination.RoleArn.replace(/.*\//, ''); + delete conf.OSSBucketDestination.RoleArn; + // OSSBucketDestination.bucket + conf.OSSBucketDestination.bucket = conf.OSSBucketDestination.Bucket.replace(/.*:::/, ''); + delete conf.OSSBucketDestination.Bucket; + delete conf.Destination; + // frequency + conf.frequency = conf.Schedule.Frequency; + delete conf.Schedule.Frequency; + // optionalFields + if (conf?.OptionalFields?.Field && !isArray(conf.OptionalFields?.Field)) + conf.OptionalFields.Field = [conf.OptionalFields.Field]; + }); + // firstLowerCase + _ = formatObjKey(_, 'firstLowerCase', { exclude: ['OSSBucketDestination', 'SSE-OSS', 'SSE-KMS'] }); + return _; +} diff --git a/node_modules/ali-oss/lib/common/utils/formatObjKey.d.ts b/node_modules/ali-oss/lib/common/utils/formatObjKey.d.ts new file mode 100644 index 0000000..4e37057 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/formatObjKey.d.ts @@ -0,0 +1,6 @@ +interface Config { + exclude?: string[]; +} +declare type FormatObjKeyType = 'firstUpperCase' | 'firstLowerCase'; +export declare function formatObjKey(obj: any, type: FormatObjKeyType, options?: Config): any; +export {}; diff --git a/node_modules/ali-oss/lib/common/utils/formatObjKey.js b/node_modules/ali-oss/lib/common/utils/formatObjKey.js new file mode 100644 index 0000000..3f84c73 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/formatObjKey.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.formatObjKey = void 0; +function formatObjKey(obj, type, options) { + if (obj === null || typeof obj !== 'object') { + return obj; + } + let o; + if (Array.isArray(obj)) { + o = []; + for (let i = 0; i < obj.length; i++) { + o.push(formatObjKey(obj[i], type, options)); + } + } + else { + o = {}; + Object.keys(obj).forEach(key => { + o[handelFormat(key, type, options)] = formatObjKey(obj[key], type, options); + }); + } + return o; +} +exports.formatObjKey = formatObjKey; +function handelFormat(key, type, options) { + if (options && options.exclude && options.exclude.includes(key)) + return key; + if (type === 'firstUpperCase') { + key = key.replace(/^./, (_) => _.toUpperCase()); + } + else if (type === 'firstLowerCase') { + key = key.replace(/^./, (_) => _.toLowerCase()); + } + return key; +} diff --git a/node_modules/ali-oss/lib/common/utils/formatObjKey.ts b/node_modules/ali-oss/lib/common/utils/formatObjKey.ts new file mode 100644 index 0000000..126c9bd --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/formatObjKey.ts @@ -0,0 +1,35 @@ +interface Config { + exclude?: string[]; +} + +type FormatObjKeyType = 'firstUpperCase' | 'firstLowerCase'; + +export function formatObjKey(obj: any, type: FormatObjKeyType, options?: Config) { + if (obj === null || typeof obj !== 'object') { + return obj; + } + + let o: any; + if (Array.isArray(obj)) { + o = []; + for (let i = 0; i < obj.length; i++) { + o.push(formatObjKey(obj[i], type, options)); + } + } else { + o = {}; + Object.keys(obj).forEach(key => { + o[handelFormat(key, type, options)] = formatObjKey(obj[key], type, options); + }); + } + return o; +} + +function handelFormat(key: string, type: FormatObjKeyType, options?: Config) { + if (options && options.exclude && options.exclude.includes(key)) return key; + if (type === 'firstUpperCase') { + key = key.replace(/^./, (_: string) => _.toUpperCase()); + } else if (type === 'firstLowerCase') { + key = key.replace(/^./, (_: string) => _.toLowerCase()); + } + return key; +} diff --git a/node_modules/ali-oss/lib/common/utils/formatTag.d.ts b/node_modules/ali-oss/lib/common/utils/formatTag.d.ts new file mode 100644 index 0000000..01757c7 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/formatTag.d.ts @@ -0,0 +1 @@ +export declare function formatTag(obj: any): {}; diff --git a/node_modules/ali-oss/lib/common/utils/formatTag.js b/node_modules/ali-oss/lib/common/utils/formatTag.js new file mode 100644 index 0000000..a1eb2c0 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/formatTag.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.formatTag = void 0; +const isObject_1 = require("./isObject"); +function formatTag(obj) { + if (obj.Tagging !== undefined) { + obj = obj.Tagging.TagSet.Tag; + } + else if (obj.TagSet !== undefined) { + obj = obj.TagSet.Tag; + } + else if (obj.Tag !== undefined) { + obj = obj.Tag; + } + obj = obj && isObject_1.isObject(obj) ? [obj] : obj || []; + const tag = {}; + obj.forEach(item => { + tag[item.Key] = item.Value; + }); + return tag; +} +exports.formatTag = formatTag; diff --git a/node_modules/ali-oss/lib/common/utils/formatTag.ts b/node_modules/ali-oss/lib/common/utils/formatTag.ts new file mode 100644 index 0000000..a8de8cc --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/formatTag.ts @@ -0,0 +1,20 @@ +import { isObject } from './isObject'; + +export function formatTag(obj) { + if (obj.Tagging !== undefined) { + obj = obj.Tagging.TagSet.Tag; + } else if (obj.TagSet !== undefined) { + obj = obj.TagSet.Tag; + } else if (obj.Tag !== undefined) { + obj = obj.Tag; + } + + obj = obj && isObject(obj) ? [obj] : obj || []; + + const tag = {}; + obj.forEach(item => { + tag[item.Key] = item.Value; + }); + + return tag; +} diff --git a/node_modules/ali-oss/lib/common/utils/getStandardRegion.d.ts b/node_modules/ali-oss/lib/common/utils/getStandardRegion.d.ts new file mode 100644 index 0000000..4fc5bc4 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/getStandardRegion.d.ts @@ -0,0 +1 @@ +export declare function getStandardRegion(str: string): string; diff --git a/node_modules/ali-oss/lib/common/utils/getStandardRegion.js b/node_modules/ali-oss/lib/common/utils/getStandardRegion.js new file mode 100644 index 0000000..14971fd --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/getStandardRegion.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getStandardRegion = void 0; +function getStandardRegion(str) { + return str.replace(/^oss-/g, ''); +} +exports.getStandardRegion = getStandardRegion; diff --git a/node_modules/ali-oss/lib/common/utils/getStandardRegion.ts b/node_modules/ali-oss/lib/common/utils/getStandardRegion.ts new file mode 100644 index 0000000..18fb41f --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/getStandardRegion.ts @@ -0,0 +1,3 @@ +export function getStandardRegion(str: string) { + return str.replace(/^oss-/g, ''); +} diff --git a/node_modules/ali-oss/lib/common/utils/getStrBytesCount.d.ts b/node_modules/ali-oss/lib/common/utils/getStrBytesCount.d.ts new file mode 100644 index 0000000..683d230 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/getStrBytesCount.d.ts @@ -0,0 +1 @@ +export declare function getStrBytesCount(str: any): number; diff --git a/node_modules/ali-oss/lib/common/utils/getStrBytesCount.js b/node_modules/ali-oss/lib/common/utils/getStrBytesCount.js new file mode 100644 index 0000000..8a18185 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/getStrBytesCount.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getStrBytesCount = void 0; +function getStrBytesCount(str) { + let bytesCount = 0; + for (let i = 0; i < str.length; i++) { + const c = str.charAt(i); + if (/^[\u00-\uff]$/.test(c)) { + bytesCount += 1; + } + else { + bytesCount += 2; + } + } + return bytesCount; +} +exports.getStrBytesCount = getStrBytesCount; diff --git a/node_modules/ali-oss/lib/common/utils/getStrBytesCount.ts b/node_modules/ali-oss/lib/common/utils/getStrBytesCount.ts new file mode 100644 index 0000000..da9ef54 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/getStrBytesCount.ts @@ -0,0 +1,12 @@ +export function getStrBytesCount(str) { + let bytesCount = 0; + for (let i = 0; i < str.length; i++) { + const c = str.charAt(i); + if (/^[\u00-\uff]$/.test(c)) { + bytesCount += 1; + } else { + bytesCount += 2; + } + } + return bytesCount; +} diff --git a/node_modules/ali-oss/lib/common/utils/getUserAgent.d.ts b/node_modules/ali-oss/lib/common/utils/getUserAgent.d.ts new file mode 100644 index 0000000..43813f6 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/getUserAgent.d.ts @@ -0,0 +1 @@ +export declare const getUserAgent: () => any; diff --git a/node_modules/ali-oss/lib/common/utils/getUserAgent.js b/node_modules/ali-oss/lib/common/utils/getUserAgent.js new file mode 100644 index 0000000..730ceb3 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/getUserAgent.js @@ -0,0 +1,18 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getUserAgent = void 0; +const platform_1 = __importDefault(require("platform")); +const version_1 = __importDefault(require("../../browser/version")); +const checkUserAgent_1 = require("./checkUserAgent"); +exports.getUserAgent = () => { + const agent = process && process.browser ? 'js' : 'nodejs'; + const sdk = `aliyun-sdk-${agent}/${version_1.default.version}`; + let plat = platform_1.default.description; + if (!plat && process) { + plat = `Node.js ${process.version.slice(1)} on ${process.platform} ${process.arch}`; + } + return checkUserAgent_1.checkUserAgent(`${sdk} ${plat}`); +}; diff --git a/node_modules/ali-oss/lib/common/utils/getUserAgent.ts b/node_modules/ali-oss/lib/common/utils/getUserAgent.ts new file mode 100644 index 0000000..3d3a22e --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/getUserAgent.ts @@ -0,0 +1,14 @@ +import platform from 'platform'; +import pkg from '../../browser/version'; +import { checkUserAgent } from './checkUserAgent'; + +export const getUserAgent = () => { + const agent = process && process.browser ? 'js' : 'nodejs'; + const sdk = `aliyun-sdk-${agent}/${pkg.version}`; + let plat = platform.description; + if (!plat && process) { + plat = `Node.js ${process.version.slice(1)} on ${process.platform} ${process.arch}`; + } + + return checkUserAgent(`${sdk} ${plat}`); +}; diff --git a/node_modules/ali-oss/lib/common/utils/isArray.d.ts b/node_modules/ali-oss/lib/common/utils/isArray.d.ts new file mode 100644 index 0000000..2872517 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isArray.d.ts @@ -0,0 +1 @@ +export declare const isArray: (obj: any) => boolean; diff --git a/node_modules/ali-oss/lib/common/utils/isArray.js b/node_modules/ali-oss/lib/common/utils/isArray.js new file mode 100644 index 0000000..ef82626 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isArray.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isArray = void 0; +exports.isArray = obj => { + return Object.prototype.toString.call(obj) === '[object Array]'; +}; diff --git a/node_modules/ali-oss/lib/common/utils/isArray.ts b/node_modules/ali-oss/lib/common/utils/isArray.ts new file mode 100644 index 0000000..8d54b8b --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isArray.ts @@ -0,0 +1,3 @@ +export const isArray = obj => { + return Object.prototype.toString.call(obj) === '[object Array]'; +}; diff --git a/node_modules/ali-oss/lib/common/utils/isBlob.d.ts b/node_modules/ali-oss/lib/common/utils/isBlob.d.ts new file mode 100644 index 0000000..114c3e9 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isBlob.d.ts @@ -0,0 +1 @@ +export declare function isBlob(blob: any): boolean; diff --git a/node_modules/ali-oss/lib/common/utils/isBlob.js b/node_modules/ali-oss/lib/common/utils/isBlob.js new file mode 100644 index 0000000..5d2cefa --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isBlob.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isBlob = void 0; +function isBlob(blob) { + return typeof Blob !== 'undefined' && blob instanceof Blob; +} +exports.isBlob = isBlob; diff --git a/node_modules/ali-oss/lib/common/utils/isBlob.ts b/node_modules/ali-oss/lib/common/utils/isBlob.ts new file mode 100644 index 0000000..baca6f8 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isBlob.ts @@ -0,0 +1,3 @@ +export function isBlob(blob) { + return typeof Blob !== 'undefined' && blob instanceof Blob; +} diff --git a/node_modules/ali-oss/lib/common/utils/isBuffer.d.ts b/node_modules/ali-oss/lib/common/utils/isBuffer.d.ts new file mode 100644 index 0000000..6413771 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isBuffer.d.ts @@ -0,0 +1 @@ +export declare function isBuffer(obj: any): boolean; diff --git a/node_modules/ali-oss/lib/common/utils/isBuffer.js b/node_modules/ali-oss/lib/common/utils/isBuffer.js new file mode 100644 index 0000000..3166bd1 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isBuffer.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isBuffer = void 0; +function isBuffer(obj) { + return Buffer.isBuffer(obj); +} +exports.isBuffer = isBuffer; diff --git a/node_modules/ali-oss/lib/common/utils/isBuffer.ts b/node_modules/ali-oss/lib/common/utils/isBuffer.ts new file mode 100644 index 0000000..f072377 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isBuffer.ts @@ -0,0 +1,3 @@ +export function isBuffer(obj: any) { + return Buffer.isBuffer(obj); +} diff --git a/node_modules/ali-oss/lib/common/utils/isDingTalk.d.ts b/node_modules/ali-oss/lib/common/utils/isDingTalk.d.ts new file mode 100644 index 0000000..42cb892 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isDingTalk.d.ts @@ -0,0 +1 @@ +export declare function isDingTalk(): boolean; diff --git a/node_modules/ali-oss/lib/common/utils/isDingTalk.js b/node_modules/ali-oss/lib/common/utils/isDingTalk.js new file mode 100644 index 0000000..04d89d9 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isDingTalk.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isDingTalk = void 0; +function isDingTalk() { + if (process.browser && window.navigator.userAgent.toLowerCase().includes('aliapp(dingtalk')) { + return true; + } + return false; +} +exports.isDingTalk = isDingTalk; diff --git a/node_modules/ali-oss/lib/common/utils/isDingTalk.ts b/node_modules/ali-oss/lib/common/utils/isDingTalk.ts new file mode 100644 index 0000000..aa7ff33 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isDingTalk.ts @@ -0,0 +1,6 @@ +export function isDingTalk() { + if (process.browser && window.navigator.userAgent.toLowerCase().includes('aliapp(dingtalk')) { + return true; + } + return false; +} diff --git a/node_modules/ali-oss/lib/common/utils/isFile.d.ts b/node_modules/ali-oss/lib/common/utils/isFile.d.ts new file mode 100644 index 0000000..c4d56e2 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isFile.d.ts @@ -0,0 +1 @@ +export declare const isFile: (obj: any) => boolean; diff --git a/node_modules/ali-oss/lib/common/utils/isFile.js b/node_modules/ali-oss/lib/common/utils/isFile.js new file mode 100644 index 0000000..48c336e --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isFile.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isFile = void 0; +exports.isFile = obj => { + return typeof File !== 'undefined' && obj instanceof File; +}; diff --git a/node_modules/ali-oss/lib/common/utils/isFile.ts b/node_modules/ali-oss/lib/common/utils/isFile.ts new file mode 100644 index 0000000..4e1bd63 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isFile.ts @@ -0,0 +1,3 @@ +export const isFile = obj => { + return typeof File !== 'undefined' && obj instanceof File; +}; diff --git a/node_modules/ali-oss/lib/common/utils/isFunction.d.ts b/node_modules/ali-oss/lib/common/utils/isFunction.d.ts new file mode 100644 index 0000000..164547a --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isFunction.d.ts @@ -0,0 +1 @@ +export declare const isFunction: (v: any) => boolean; diff --git a/node_modules/ali-oss/lib/common/utils/isFunction.js b/node_modules/ali-oss/lib/common/utils/isFunction.js new file mode 100644 index 0000000..ae64c30 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isFunction.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isFunction = void 0; +exports.isFunction = (v) => { + return typeof v === 'function'; +}; diff --git a/node_modules/ali-oss/lib/common/utils/isFunction.ts b/node_modules/ali-oss/lib/common/utils/isFunction.ts new file mode 100644 index 0000000..223a820 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isFunction.ts @@ -0,0 +1,3 @@ +export const isFunction = (v): boolean => { + return typeof v === 'function'; +}; diff --git a/node_modules/ali-oss/lib/common/utils/isIP.d.ts b/node_modules/ali-oss/lib/common/utils/isIP.d.ts new file mode 100644 index 0000000..dabb272 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isIP.d.ts @@ -0,0 +1,6 @@ +/** + * Judge isIP include ipv4 or ipv6 + * @param {String} options + * @return {Array} the multipart uploads + */ +export declare const isIP: (host: any) => boolean; diff --git a/node_modules/ali-oss/lib/common/utils/isIP.js b/node_modules/ali-oss/lib/common/utils/isIP.js new file mode 100644 index 0000000..5e46567 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isIP.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isIP = void 0; +// it provide commont methods for node and browser , we will add more solutions later in this file +/** + * Judge isIP include ipv4 or ipv6 + * @param {String} options + * @return {Array} the multipart uploads + */ +exports.isIP = host => { + const ipv4Regex = /^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$/; + const ipv6Regex = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/; + return ipv4Regex.test(host) || ipv6Regex.test(host); +}; diff --git a/node_modules/ali-oss/lib/common/utils/isIP.ts b/node_modules/ali-oss/lib/common/utils/isIP.ts new file mode 100644 index 0000000..eeb7c48 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isIP.ts @@ -0,0 +1,12 @@ +// it provide commont methods for node and browser , we will add more solutions later in this file +/** + * Judge isIP include ipv4 or ipv6 + * @param {String} options + * @return {Array} the multipart uploads + */ +export const isIP = host => { + const ipv4Regex = /^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$/; + const ipv6Regex = + /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/; + return ipv4Regex.test(host) || ipv6Regex.test(host); +}; diff --git a/node_modules/ali-oss/lib/common/utils/isObject.d.ts b/node_modules/ali-oss/lib/common/utils/isObject.d.ts new file mode 100644 index 0000000..ef86365 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isObject.d.ts @@ -0,0 +1 @@ +export declare const isObject: (obj: any) => boolean; diff --git a/node_modules/ali-oss/lib/common/utils/isObject.js b/node_modules/ali-oss/lib/common/utils/isObject.js new file mode 100644 index 0000000..ad42073 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isObject.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isObject = void 0; +exports.isObject = obj => { + return Object.prototype.toString.call(obj) === '[object Object]'; +}; diff --git a/node_modules/ali-oss/lib/common/utils/isObject.ts b/node_modules/ali-oss/lib/common/utils/isObject.ts new file mode 100644 index 0000000..01b5b79 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/isObject.ts @@ -0,0 +1,3 @@ +export const isObject = obj => { + return Object.prototype.toString.call(obj) === '[object Object]'; +}; diff --git a/node_modules/ali-oss/lib/common/utils/lowercaseKeyHeader.d.ts b/node_modules/ali-oss/lib/common/utils/lowercaseKeyHeader.d.ts new file mode 100644 index 0000000..bcb2902 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/lowercaseKeyHeader.d.ts @@ -0,0 +1 @@ +export declare function lowercaseKeyHeader(headers: any): {}; diff --git a/node_modules/ali-oss/lib/common/utils/lowercaseKeyHeader.js b/node_modules/ali-oss/lib/common/utils/lowercaseKeyHeader.js new file mode 100644 index 0000000..4940887 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/lowercaseKeyHeader.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.lowercaseKeyHeader = void 0; +const isObject_1 = require("./isObject"); +function lowercaseKeyHeader(headers) { + const lowercaseHeader = {}; + if (isObject_1.isObject(headers)) { + Object.keys(headers).forEach(key => { + lowercaseHeader[key.toLowerCase()] = headers[key]; + }); + } + return lowercaseHeader; +} +exports.lowercaseKeyHeader = lowercaseKeyHeader; diff --git a/node_modules/ali-oss/lib/common/utils/lowercaseKeyHeader.ts b/node_modules/ali-oss/lib/common/utils/lowercaseKeyHeader.ts new file mode 100644 index 0000000..39dd180 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/lowercaseKeyHeader.ts @@ -0,0 +1,11 @@ +import { isObject } from './isObject'; + +export function lowercaseKeyHeader(headers) { + const lowercaseHeader = {}; + if (isObject(headers)) { + Object.keys(headers).forEach(key => { + lowercaseHeader[key.toLowerCase()] = headers[key]; + }); + } + return lowercaseHeader; +} diff --git a/node_modules/ali-oss/lib/common/utils/obj2xml.d.ts b/node_modules/ali-oss/lib/common/utils/obj2xml.d.ts new file mode 100644 index 0000000..5ea5260 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/obj2xml.d.ts @@ -0,0 +1 @@ +export declare function obj2xml(obj: any, options?: any): string; diff --git a/node_modules/ali-oss/lib/common/utils/obj2xml.js b/node_modules/ali-oss/lib/common/utils/obj2xml.js new file mode 100644 index 0000000..96eb3a0 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/obj2xml.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.obj2xml = void 0; +const formatObjKey_1 = require("./formatObjKey"); +function type(params) { + return Object.prototype.toString + .call(params) + .replace(/(.*? |])/g, '') + .toLowerCase(); +} +function obj2xml(obj, options) { + let s = ''; + if (options && options.headers) { + s = '<?xml version="1.0" encoding="UTF-8"?>\n'; + } + if (options && options.firstUpperCase) { + obj = formatObjKey_1.formatObjKey(obj, 'firstUpperCase'); + } + if (type(obj) === 'object') { + Object.keys(obj).forEach(key => { + // filter undefined or null + if (type(obj[key]) !== 'undefined' && type(obj[key]) !== 'null') { + if (type(obj[key]) === 'string' || type(obj[key]) === 'number') { + s += `<${key}>${obj[key]}</${key}>`; + } + else if (type(obj[key]) === 'object') { + s += `<${key}>${obj2xml(obj[key])}</${key}>`; + } + else if (type(obj[key]) === 'array') { + s += obj[key].map(keyChild => `<${key}>${obj2xml(keyChild)}</${key}>`).join(''); + } + else { + s += `<${key}>${obj[key].toString()}</${key}>`; + } + } + }); + } + else { + s += obj.toString(); + } + return s; +} +exports.obj2xml = obj2xml; diff --git a/node_modules/ali-oss/lib/common/utils/obj2xml.ts b/node_modules/ali-oss/lib/common/utils/obj2xml.ts new file mode 100644 index 0000000..893420b --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/obj2xml.ts @@ -0,0 +1,37 @@ +import { formatObjKey } from './formatObjKey'; + +function type(params) { + return Object.prototype.toString + .call(params) + .replace(/(.*? |])/g, '') + .toLowerCase(); +} + +export function obj2xml(obj, options?) { + let s = ''; + if (options && options.headers) { + s = '<?xml version="1.0" encoding="UTF-8"?>\n'; + } + if (options && options.firstUpperCase) { + obj = formatObjKey(obj, 'firstUpperCase'); + } + if (type(obj) === 'object') { + Object.keys(obj).forEach(key => { + // filter undefined or null + if (type(obj[key]) !== 'undefined' && type(obj[key]) !== 'null') { + if (type(obj[key]) === 'string' || type(obj[key]) === 'number') { + s += `<${key}>${obj[key]}</${key}>`; + } else if (type(obj[key]) === 'object') { + s += `<${key}>${obj2xml(obj[key])}</${key}>`; + } else if (type(obj[key]) === 'array') { + s += obj[key].map(keyChild => `<${key}>${obj2xml(keyChild)}</${key}>`).join(''); + } else { + s += `<${key}>${obj[key].toString()}</${key}>`; + } + } + }); + } else { + s += obj.toString(); + } + return s; +} diff --git a/node_modules/ali-oss/lib/common/utils/omit.d.ts b/node_modules/ali-oss/lib/common/utils/omit.d.ts new file mode 100644 index 0000000..b4568cf --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/omit.d.ts @@ -0,0 +1 @@ +export declare function omit(originalObject: {}, keysToOmit: string[]): {}; diff --git a/node_modules/ali-oss/lib/common/utils/omit.js b/node_modules/ali-oss/lib/common/utils/omit.js new file mode 100644 index 0000000..7c32c70 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/omit.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.omit = void 0; +function omit(originalObject, keysToOmit) { + const cloneObject = Object.assign({}, originalObject); + for (const path of keysToOmit) { + delete cloneObject[path]; + } + return cloneObject; +} +exports.omit = omit; diff --git a/node_modules/ali-oss/lib/common/utils/omit.ts b/node_modules/ali-oss/lib/common/utils/omit.ts new file mode 100644 index 0000000..0d26216 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/omit.ts @@ -0,0 +1,9 @@ +export function omit(originalObject: {}, keysToOmit: string[]): {} { + const cloneObject = { ...originalObject }; + + for (const path of keysToOmit) { + delete cloneObject[path]; + } + + return cloneObject; +} diff --git a/node_modules/ali-oss/lib/common/utils/parseRestoreInfo.d.ts b/node_modules/ali-oss/lib/common/utils/parseRestoreInfo.d.ts new file mode 100644 index 0000000..a15813e --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/parseRestoreInfo.d.ts @@ -0,0 +1,16 @@ +interface IRestoreInfo { + /** + * Whether the restoration is ongoing + * If a RestoreObject request is sent but the restoration is not complete, the value is true. + * If a RestoreObject request is sent and the restoration is complete, the value is false. + */ + ongoingRequest: boolean; + /** + * The time before which the restored object can be read. + * If a RestoreObject request is sent but the restoration is not complete, the value is undefined. + * If a RestoreObject request is sent and the restoration is complete, the value is Date. + */ + expiryDate?: Date; +} +export declare const parseRestoreInfo: (originalRestoreInfo?: string | undefined) => IRestoreInfo | undefined; +export {}; diff --git a/node_modules/ali-oss/lib/common/utils/parseRestoreInfo.js b/node_modules/ali-oss/lib/common/utils/parseRestoreInfo.js new file mode 100644 index 0000000..a18675f --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/parseRestoreInfo.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parseRestoreInfo = void 0; +exports.parseRestoreInfo = (originalRestoreInfo) => { + let tempRestoreInfo; + if (originalRestoreInfo) { + tempRestoreInfo = { + ongoingRequest: originalRestoreInfo.includes('true') + }; + if (!tempRestoreInfo.ongoingRequest) { + const matchArray = originalRestoreInfo.match(/expiry-date="(.*)"/); + if (matchArray && matchArray[1]) { + tempRestoreInfo.expiryDate = new Date(matchArray[1]); + } + } + } + return tempRestoreInfo; +}; diff --git a/node_modules/ali-oss/lib/common/utils/parseRestoreInfo.ts b/node_modules/ali-oss/lib/common/utils/parseRestoreInfo.ts new file mode 100644 index 0000000..e97f4f7 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/parseRestoreInfo.ts @@ -0,0 +1,34 @@ +interface IRestoreInfo { + /** + * Whether the restoration is ongoing + * If a RestoreObject request is sent but the restoration is not complete, the value is true. + * If a RestoreObject request is sent and the restoration is complete, the value is false. + */ + ongoingRequest: boolean; + /** + * The time before which the restored object can be read. + * If a RestoreObject request is sent but the restoration is not complete, the value is undefined. + * If a RestoreObject request is sent and the restoration is complete, the value is Date. + */ + expiryDate?: Date; +} + +export const parseRestoreInfo = (originalRestoreInfo?: string): IRestoreInfo | undefined => { + let tempRestoreInfo: IRestoreInfo | undefined; + + if (originalRestoreInfo) { + tempRestoreInfo = { + ongoingRequest: originalRestoreInfo.includes('true') + }; + + if (!tempRestoreInfo.ongoingRequest) { + const matchArray = originalRestoreInfo.match(/expiry-date="(.*)"/); + + if (matchArray && matchArray[1]) { + tempRestoreInfo.expiryDate = new Date(matchArray[1]); + } + } + } + + return tempRestoreInfo; +}; diff --git a/node_modules/ali-oss/lib/common/utils/policy2Str.d.ts b/node_modules/ali-oss/lib/common/utils/policy2Str.d.ts new file mode 100644 index 0000000..27cf8b5 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/policy2Str.d.ts @@ -0,0 +1 @@ +export declare function policy2Str(policy: string | object): any; diff --git a/node_modules/ali-oss/lib/common/utils/policy2Str.js b/node_modules/ali-oss/lib/common/utils/policy2Str.js new file mode 100644 index 0000000..fef38fc --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/policy2Str.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.policy2Str = void 0; +function policy2Str(policy) { + let policyStr; + if (policy) { + if (typeof policy === 'string') { + try { + policyStr = JSON.stringify(JSON.parse(policy)); + } + catch (err) { + throw new Error(`Policy string is not a valid JSON: ${err.message}`); + } + } + else { + policyStr = JSON.stringify(policy); + } + } + return policyStr; +} +exports.policy2Str = policy2Str; diff --git a/node_modules/ali-oss/lib/common/utils/policy2Str.ts b/node_modules/ali-oss/lib/common/utils/policy2Str.ts new file mode 100644 index 0000000..d088a3c --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/policy2Str.ts @@ -0,0 +1,15 @@ +export function policy2Str(policy: string | object) { + let policyStr; + if (policy) { + if (typeof policy === 'string') { + try { + policyStr = JSON.stringify(JSON.parse(policy)); + } catch (err) { + throw new Error(`Policy string is not a valid JSON: ${err.message}`); + } + } else { + policyStr = JSON.stringify(policy); + } + } + return policyStr; +} diff --git a/node_modules/ali-oss/lib/common/utils/retry.d.ts b/node_modules/ali-oss/lib/common/utils/retry.d.ts new file mode 100644 index 0000000..27eff25 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/retry.d.ts @@ -0,0 +1 @@ +export declare function retry(this: any, func: Function, retryMax: number, config?: any): (...arg: any[]) => Promise<unknown>; diff --git a/node_modules/ali-oss/lib/common/utils/retry.js b/node_modules/ali-oss/lib/common/utils/retry.js new file mode 100644 index 0000000..5d25961 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/retry.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.retry = void 0; +function retry(func, retryMax, config = {}) { + let retryNum = 0; + const { retryDelay = 500, errorHandler = () => true } = config; + const funcR = (...arg) => { + return new Promise((resolve, reject) => { + func(...arg) + .then(result => { + retryNum = 0; + resolve(result); + }) + .catch(err => { + if (retryNum < retryMax && errorHandler(err)) { + retryNum++; + setTimeout(() => { + resolve(funcR(...arg)); + }, retryDelay); + } + else { + retryNum = 0; + reject(err); + } + }); + }); + }; + return funcR; +} +exports.retry = retry; diff --git a/node_modules/ali-oss/lib/common/utils/retry.ts b/node_modules/ali-oss/lib/common/utils/retry.ts new file mode 100644 index 0000000..844806c --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/retry.ts @@ -0,0 +1,26 @@ +export function retry(this: any, func: Function, retryMax: number, config: any = {}) { + let retryNum = 0; + const { retryDelay = 500, errorHandler = () => true } = config; + const funcR = (...arg) => { + return new Promise((resolve, reject) => { + func(...arg) + .then(result => { + retryNum = 0; + resolve(result); + }) + .catch(err => { + if (retryNum < retryMax && errorHandler(err)) { + retryNum++; + setTimeout(() => { + resolve(funcR(...arg)); + }, retryDelay); + } else { + retryNum = 0; + reject(err); + } + }); + }); + }; + + return funcR; +} diff --git a/node_modules/ali-oss/lib/common/utils/setRegion.d.ts b/node_modules/ali-oss/lib/common/utils/setRegion.d.ts new file mode 100644 index 0000000..380c123 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/setRegion.d.ts @@ -0,0 +1,3 @@ +/// <reference types="node" /> +import urlutil from 'url'; +export declare function setRegion(region: string, internal?: boolean, secure?: boolean): urlutil.UrlWithStringQuery; diff --git a/node_modules/ali-oss/lib/common/utils/setRegion.js b/node_modules/ali-oss/lib/common/utils/setRegion.js new file mode 100644 index 0000000..7ad1a7c --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/setRegion.js @@ -0,0 +1,20 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setRegion = void 0; +const url_1 = __importDefault(require("url")); +const checkConfigValid_1 = require("./checkConfigValid"); +function setRegion(region, internal = false, secure = false) { + checkConfigValid_1.checkConfigValid(region, 'region'); + const protocol = secure ? 'https://' : 'http://'; + let suffix = internal ? '-internal.aliyuncs.com' : '.aliyuncs.com'; + const prefix = 'vpc100-oss-cn-'; + // aliyun VPC region: https://help.aliyun.com/knowledge_detail/38740.html + if (region.substr(0, prefix.length) === prefix) { + suffix = '.aliyuncs.com'; + } + return url_1.default.parse(protocol + region + suffix); +} +exports.setRegion = setRegion; diff --git a/node_modules/ali-oss/lib/common/utils/setRegion.ts b/node_modules/ali-oss/lib/common/utils/setRegion.ts new file mode 100644 index 0000000..8759a16 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/setRegion.ts @@ -0,0 +1,15 @@ +import urlutil from 'url'; +import { checkConfigValid } from './checkConfigValid'; + +export function setRegion(region: string, internal = false, secure = false) { + checkConfigValid(region, 'region'); + const protocol = secure ? 'https://' : 'http://'; + let suffix = internal ? '-internal.aliyuncs.com' : '.aliyuncs.com'; + const prefix = 'vpc100-oss-cn-'; + // aliyun VPC region: https://help.aliyun.com/knowledge_detail/38740.html + if (region.substr(0, prefix.length) === prefix) { + suffix = '.aliyuncs.com'; + } + + return urlutil.parse(protocol + region + suffix); +} diff --git a/node_modules/ali-oss/lib/common/utils/setSTSToken.d.ts b/node_modules/ali-oss/lib/common/utils/setSTSToken.d.ts new file mode 100644 index 0000000..210d775 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/setSTSToken.d.ts @@ -0,0 +1,2 @@ +export declare function setSTSToken(this: any): Promise<null>; +export declare function checkCredentials(obj: any): void; diff --git a/node_modules/ali-oss/lib/common/utils/setSTSToken.js b/node_modules/ali-oss/lib/common/utils/setSTSToken.js new file mode 100644 index 0000000..a2fd328 --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/setSTSToken.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkCredentials = exports.setSTSToken = void 0; +const formatObjKey_1 = require("./formatObjKey"); +async function setSTSToken() { + if (!this.options) + this.options = {}; + const now = new Date(); + if (this.stsTokenFreshTime) { + if (+now - this.stsTokenFreshTime >= this.options.refreshSTSTokenInterval) { + this.stsTokenFreshTime = now; + let credentials = await this.options.refreshSTSToken(); + credentials = formatObjKey_1.formatObjKey(credentials, 'firstLowerCase'); + if (credentials.securityToken) { + credentials.stsToken = credentials.securityToken; + } + checkCredentials(credentials); + Object.assign(this.options, credentials); + } + } + else { + this.stsTokenFreshTime = now; + } + return null; +} +exports.setSTSToken = setSTSToken; +function checkCredentials(obj) { + const stsTokenKey = ['accessKeySecret', 'accessKeyId', 'stsToken']; + const objKeys = Object.keys(obj); + stsTokenKey.forEach(_ => { + if (!objKeys.find(key => key === _)) { + throw Error(`refreshSTSToken must return contains ${_}`); + } + }); +} +exports.checkCredentials = checkCredentials; diff --git a/node_modules/ali-oss/lib/common/utils/setSTSToken.ts b/node_modules/ali-oss/lib/common/utils/setSTSToken.ts new file mode 100644 index 0000000..676ef5f --- /dev/null +++ b/node_modules/ali-oss/lib/common/utils/setSTSToken.ts @@ -0,0 +1,32 @@ +import { formatObjKey } from './formatObjKey'; + +export async function setSTSToken(this: any) { + if (!this.options) this.options = {}; + + const now = new Date(); + if (this.stsTokenFreshTime) { + if (+now - this.stsTokenFreshTime >= this.options.refreshSTSTokenInterval) { + this.stsTokenFreshTime = now; + let credentials = await this.options.refreshSTSToken(); + credentials = formatObjKey(credentials, 'firstLowerCase'); + if (credentials.securityToken) { + credentials.stsToken = credentials.securityToken; + } + checkCredentials(credentials); + Object.assign(this.options, credentials); + } + } else { + this.stsTokenFreshTime = now; + } + return null; +} + +export function checkCredentials(obj) { + const stsTokenKey = ['accessKeySecret', 'accessKeyId', 'stsToken']; + const objKeys = Object.keys(obj); + stsTokenKey.forEach(_ => { + if (!objKeys.find(key => key === _)) { + throw Error(`refreshSTSToken must return contains ${_}`); + } + }); +} diff --git a/node_modules/ali-oss/lib/global.d.ts b/node_modules/ali-oss/lib/global.d.ts new file mode 100644 index 0000000..c8c0568 --- /dev/null +++ b/node_modules/ali-oss/lib/global.d.ts @@ -0,0 +1,6 @@ +declare let process: { + browser: string; + version: string; + platform: string; + arch: string; +}; diff --git a/node_modules/ali-oss/lib/image.js b/node_modules/ali-oss/lib/image.js new file mode 100644 index 0000000..912c0bb --- /dev/null +++ b/node_modules/ali-oss/lib/image.js @@ -0,0 +1,146 @@ +/* istanbul ignore next */ +module.exports = function (OssClient) { + /* istanbul ignore next */ + // function objectRequestParams(method, name, options) { + // options = options || {}; + // name = this._objectName(name); + // const authResource = `/${this.options.bucket}/${name}`; + // const params = { + // name, + // method, + // host: this.options.imageHost, + // resource: `/${name}`, + // timeout: options.timeout, + // authResource, + // ctx: options.ctx + // }; + // if (options.headers) { + // params.headers = options.headers; + // } + // return params; + // } + + function ImageClient(options) { + if (!(this instanceof ImageClient)) { + return new ImageClient(options); + } + if (!options.bucket) { + throw new Error('require bucket for image service instance'); + } + if (!options.imageHost) { + throw new Error('require imageHost for image service instance'); + } + + options.endpoint = options.imageHost; + this.ossClient = new OssClient(options); + this.ossClient.options.imageHost = options.imageHost; + // this.ossClient._objectRequestParams = objectRequestParams; + } + + /** + * Image operations + */ + + ImageClient.prototype.get = async function get(name, file, options) { + return await this.ossClient.get(name, file, options); + }; + + ImageClient.prototype.getStream = async function getStream(name, options) { + return await this.ossClient.getStream(name, options); + }; + + ImageClient.prototype.getExif = async function getExif(name, options) { + const params = this.ossClient._objectRequestParams('GET', `${name}@exif`, options); + params.successStatuses = [200]; + + let result = await this.ossClient.request(params); + result = await this._parseResponse(result); + return { + res: result.res, + data: result.data + }; + }; + + ImageClient.prototype.getInfo = async function getInfo(name, options) { + const params = this.ossClient._objectRequestParams('GET', `${name}@infoexif`, options); + params.successStatuses = [200]; + + let result = await this.ossClient.request(params); + result = await this._parseResponse(result); + return { + res: result.res, + data: result.data + }; + }; + + ImageClient.prototype.putStyle = async function putStyle(styleName, style, options) { + const params = this.ossClient._objectRequestParams('PUT', `/?style&styleName=${styleName}`, options); + params.successStatuses = [200]; + params.content = `${'<?xml version="1.0" encoding="UTF-8"?>\n<Style><Content>'}${style}</Content></Style>`; + + let result = await this.ossClient.request(params); + result = await this._parseResponse(result); + return { + res: result.res, + data: result.data + }; + }; + + ImageClient.prototype.getStyle = async function getStyle(styleName, options) { + const params = this.ossClient._objectRequestParams('GET', `/?style&styleName=${styleName}`, options); + params.successStatuses = [200]; + + let result = await this.ossClient.request(params); + result = await this._parseResponse(result); + return { + res: result.res, + data: result.data + }; + }; + + ImageClient.prototype.listStyle = async function listStyle(options) { + const params = this.ossClient._objectRequestParams('GET', '/?style', options); + params.successStatuses = [200]; + + let result = await this.ossClient.request(params); + result = await this._parseResponse(result); + return { + res: result.res, + data: result.data.Style + }; + }; + + ImageClient.prototype.deleteStyle = async function deleteStyle(styleName, options) { + const params = this.ossClient._objectRequestParams('DELETE', `/?style&styleName=${styleName}`, options); + params.successStatuses = [204]; + + const result = await this.ossClient.request(params); + return { + res: result.res + }; + }; + + ImageClient.prototype.signatureUrl = function signatureUrl(name) { + return this.ossClient.signatureUrl(name); + }; + + ImageClient.prototype._parseResponse = async function _parseResponse(result) { + const str = result.data.toString(); + const type = result.res.headers['content-type']; + + if (type === 'application/json') { + const data = JSON.parse(str); + result.data = {}; + if (data) { + Object.keys(data).forEach(key => { + result.data[key] = parseFloat(data[key].value, 10) || data[key].value; + }); + } + } else if (type === 'application/xml') { + result.data = await this.ossClient.parseXML(str); + } + return result; + }; + + return ImageClient; +}; diff --git a/node_modules/ali-oss/lib/managed-upload.js b/node_modules/ali-oss/lib/managed-upload.js new file mode 100644 index 0000000..45c62eb --- /dev/null +++ b/node_modules/ali-oss/lib/managed-upload.js @@ -0,0 +1,381 @@ +const fs = require('fs'); +const is = require('is-type-of'); +const util = require('util'); +const path = require('path'); +const mime = require('mime'); +const { isFile } = require('./common/utils/isFile'); +const { isArray } = require('./common/utils/isArray'); +const { isBuffer } = require('./common/utils/isBuffer'); +const { retry } = require('./common/utils/retry'); + +const proto = exports; + +/** + * Multipart operations + */ + +/** + * Upload a file to OSS using multipart uploads + * @param {String} name + * @param {String|File|Buffer} file + * @param {Object} options + * {Object} [options.callback] The callback parameter is composed of a JSON string encoded in Base64 + * {String} options.callback.url the OSS sends a callback request to this URL + * {String} [options.callback.host] The host header value for initiating callback requests + * {String} options.callback.body The value of the request body when a callback is initiated + * {String} [options.callback.contentType] The Content-Type of the callback requests initiated + * {Boolean} [options.callback.callbackSNI] Whether OSS sends SNI to the origin address specified by callbackUrl when a callback request is initiated from the client + * {Object} [options.callback.customValue] Custom parameters are a map of key-values, e.g: + * customValue = { + * key1: 'value1', + * key2: 'value2' + * } + */ +proto.multipartUpload = async function multipartUpload(name, file, options) { + this.resetCancelFlag(); + options = options || {}; + if (options.checkpoint && options.checkpoint.uploadId) { + return await this._resumeMultipart(options.checkpoint, options); + } + + const minPartSize = 100 * 1024; + if (!options.mime) { + if (isFile(file)) { + options.mime = mime.getType(path.extname(file.name)); + } else if (isBuffer(file)) { + options.mime = ''; + } else { + options.mime = mime.getType(path.extname(file)); + } + } + options.headers = options.headers || {}; + this._convertMetaToHeaders(options.meta, options.headers); + + const fileSize = await this._getFileSize(file); + if (fileSize < minPartSize) { + options.contentLength = fileSize; + const result = await this.put(name, file, options); + if (options && options.progress) { + await options.progress(1); + } + + const ret = { + res: result.res, + bucket: this.options.bucket, + name, + etag: result.res.headers.etag + }; + + if ((options.headers && options.headers['x-oss-callback']) || options.callback) { + ret.data = result.data; + } + + return ret; + } + + if (options.partSize && !(parseInt(options.partSize, 10) === options.partSize)) { + throw new Error('partSize must be int number'); + } + + if (options.partSize && options.partSize < minPartSize) { + throw new Error(`partSize must not be smaller than ${minPartSize}`); + } + + const initResult = await this.initMultipartUpload(name, options); + const { uploadId } = initResult; + const partSize = this._getPartSize(fileSize, options.partSize); + + const checkpoint = { + file, + name, + fileSize, + partSize, + uploadId, + doneParts: [] + }; + + if (options && options.progress) { + await options.progress(0, checkpoint, initResult.res); + } + + return await this._resumeMultipart(checkpoint, options); +}; + +/* + * Resume multipart upload from checkpoint. The checkpoint will be + * updated after each successful part upload. + * @param {Object} checkpoint the checkpoint + * @param {Object} options + */ +proto._resumeMultipart = async function _resumeMultipart(checkpoint, options) { + const that = this; + if (this.isCancel()) { + throw this._makeCancelEvent(); + } + const { file, fileSize, partSize, uploadId, doneParts, name } = checkpoint; + + const partOffs = this._divideParts(fileSize, partSize); + const numParts = partOffs.length; + let uploadPartJob = retry( + (self, partNo) => { + // eslint-disable-next-line no-async-promise-executor + return new Promise(async (resolve, reject) => { + try { + if (!self.isCancel()) { + const pi = partOffs[partNo - 1]; + const stream = await self._createStream(file, pi.start, pi.end); + const data = { + stream, + size: pi.end - pi.start + }; + + if (isArray(self.multipartUploadStreams)) { + self.multipartUploadStreams.push(data.stream); + } else { + self.multipartUploadStreams = [data.stream]; + } + + const removeStreamFromMultipartUploadStreams = function () { + if (!stream.destroyed) { + stream.destroy(); + } + const index = self.multipartUploadStreams.indexOf(stream); + if (index !== -1) { + self.multipartUploadStreams.splice(index, 1); + } + }; + + stream.on('close', removeStreamFromMultipartUploadStreams); + stream.on('error', removeStreamFromMultipartUploadStreams); + + let result; + try { + result = await self._uploadPart(name, uploadId, partNo, data, options); + } catch (error) { + removeStreamFromMultipartUploadStreams(); + if (error.status === 404) { + throw self._makeAbortEvent(); + } + throw error; + } + if (!self.isCancel()) { + doneParts.push({ + number: partNo, + etag: result.res.headers.etag + }); + checkpoint.doneParts = doneParts; + + if (options.progress) { + await options.progress(doneParts.length / (numParts + 1), checkpoint, result.res); + } + } + } + resolve(); + } catch (err) { + err.partNum = partNo; + reject(err); + } + }); + }, + this.options.retryMax, + { + errorHandler: err => { + const _errHandle = _err => { + const statusErr = [-1, -2].includes(_err.status); + const requestErrorRetryHandle = this.options.requestErrorRetryHandle || (() => true); + return statusErr && requestErrorRetryHandle(_err); + }; + return !!_errHandle(err); + } + } + ); + + const all = Array.from(new Array(numParts), (x, i) => i + 1); + const done = doneParts.map(p => p.number); + const todo = all.filter(p => done.indexOf(p) < 0); + + const defaultParallel = 5; + const parallel = options.parallel || defaultParallel; + + if (this.checkBrowserAndVersion('Internet Explorer', '10') || parallel === 1) { + for (let i = 0; i < todo.length; i++) { + if (this.isCancel()) { + throw this._makeCancelEvent(); + } + /* eslint no-await-in-loop: [0] */ + await uploadPartJob(this, todo[i]); + } + } else { + // upload in parallel + const jobErr = await this._parallel(todo, parallel, value => { + return new Promise((resolve, reject) => { + uploadPartJob(that, value) + .then(() => { + resolve(); + }) + .catch(reject); + }); + }); + + const abortEvent = jobErr.find(err => err.name === 'abort'); + if (abortEvent) throw abortEvent; + + if (this.isCancel()) { + uploadPartJob = null; + throw this._makeCancelEvent(); + } + + if (jobErr && jobErr.length > 0) { + jobErr[0].message = `Failed to upload some parts with error: ${jobErr[0].toString()} part_num: ${ + jobErr[0].partNum + }`; + throw jobErr[0]; + } + } + + return await this.completeMultipartUpload(name, uploadId, doneParts, options); +}; + +/** + * Get file size + */ +proto._getFileSize = async function _getFileSize(file) { + if (isBuffer(file)) { + return file.length; + } else if (isFile(file)) { + return file.size; + } else if (is.string(file)) { + const stat = await this._statFile(file); + return stat.size; + } + + throw new Error('_getFileSize requires Buffer/File/String.'); +}; + +/* + * Readable stream for Web File + */ +const { Readable } = require('stream'); + +function WebFileReadStream(file, options) { + if (!(this instanceof WebFileReadStream)) { + return new WebFileReadStream(file, options); + } + + Readable.call(this, options); + + this.file = file; + this.reader = new FileReader(); + this.start = 0; + this.finish = false; + this.fileBuffer = null; +} +util.inherits(WebFileReadStream, Readable); + +WebFileReadStream.prototype.readFileAndPush = function readFileAndPush(size) { + if (this.fileBuffer) { + let pushRet = true; + while (pushRet && this.fileBuffer && this.start < this.fileBuffer.length) { + const { start } = this; + let end = start + size; + end = end > this.fileBuffer.length ? this.fileBuffer.length : end; + this.start = end; + pushRet = this.push(this.fileBuffer.slice(start, end)); + } + } +}; + +WebFileReadStream.prototype._read = function _read(size) { + if ( + (this.file && this.start >= this.file.size) || + (this.fileBuffer && this.start >= this.fileBuffer.length) || + this.finish || + (this.start === 0 && !this.file) + ) { + if (!this.finish) { + this.fileBuffer = null; + this.finish = true; + } + this.push(null); + return; + } + + const defaultReadSize = 16 * 1024; + size = size || defaultReadSize; + + const that = this; + this.reader.onload = function (e) { + that.fileBuffer = Buffer.from(new Uint8Array(e.target.result)); + that.file = null; + that.readFileAndPush(size); + }; + this.reader.onerror = function onload(e) { + const error = e.srcElement && e.srcElement.error; + if (error) { + throw error; + } + throw e; + }; + + if (this.start === 0) { + this.reader.readAsArrayBuffer(this.file); + } else { + this.readFileAndPush(size); + } +}; + +proto._createStream = function _createStream(file, start, end) { + if (is.readableStream(file)) { + return file; + } else if (isFile(file)) { + return new WebFileReadStream(file.slice(start, end)); + } else if (isBuffer(file)) { + const iterable = file.subarray(start, end); + // we can't use Readable.from() since it is only support in Node v10 + return new Readable({ + read() { + this.push(iterable); + this.push(null); + } + }); + } else if (is.string(file)) { + return fs.createReadStream(file, { + start, + end: end - 1 + }); + } + throw new Error('_createStream requires Buffer/File/String.'); +}; + +proto._getPartSize = function _getPartSize(fileSize, partSize) { + const maxNumParts = 10 * 1000; + const defaultPartSize = 1 * 1024 * 1024; + + if (!partSize) partSize = defaultPartSize; + const safeSize = Math.ceil(fileSize / maxNumParts); + + if (partSize < safeSize) { + partSize = safeSize; + console.warn( + `partSize has been set to ${partSize}, because the partSize you provided causes partNumber to be greater than 10,000` + ); + } + return partSize; +}; + +proto._divideParts = function _divideParts(fileSize, partSize) { + const numParts = Math.ceil(fileSize / partSize); + + const partOffs = []; + for (let i = 0; i < numParts; i++) { + const start = partSize * i; + const end = Math.min(start + partSize, fileSize); + + partOffs.push({ + start, + end + }); + } + + return partOffs; +}; diff --git a/node_modules/ali-oss/lib/object.js b/node_modules/ali-oss/lib/object.js new file mode 100644 index 0000000..a48f46a --- /dev/null +++ b/node_modules/ali-oss/lib/object.js @@ -0,0 +1,428 @@ +const debug = require('debug')('ali-oss:object'); +const fs = require('fs'); +const is = require('is-type-of'); +const copy = require('copy-to'); +const path = require('path'); +const mime = require('mime'); +const callback = require('./common/callback'); +const { Transform } = require('stream'); +const pump = require('pump'); +const { isBuffer } = require('./common/utils/isBuffer'); +const { retry } = require('./common/utils/retry'); +const { obj2xml } = require('./common/utils/obj2xml'); +const { parseRestoreInfo } = require('./common/utils/parseRestoreInfo'); + +const proto = exports; + +/** + * Object operations + */ + +/** + * append an object from String(file path)/Buffer/ReadableStream + * @param {String} name the object key + * @param {Mixed} file String(file path)/Buffer/ReadableStream + * @param {Object} options + * @return {Object} + */ +proto.append = async function append(name, file, options) { + options = options || {}; + if (options.position === undefined) options.position = '0'; + options.subres = { + append: '', + position: options.position + }; + options.method = 'POST'; + + const result = await this.put(name, file, options); + result.nextAppendPosition = result.res.headers['x-oss-next-append-position']; + return result; +}; + +/** + * put an object from String(file path)/Buffer/ReadableStream + * @param {String} name the object key + * @param {Mixed} file String(file path)/Buffer/ReadableStream + * @param {Object} options + * {Object} [options.callback] The callback parameter is composed of a JSON string encoded in Base64 + * {String} options.callback.url the OSS sends a callback request to this URL + * {String} [options.callback.host] The host header value for initiating callback requests + * {String} options.callback.body The value of the request body when a callback is initiated + * {String} [options.callback.contentType] The Content-Type of the callback requests initiated + * {Boolean} [options.callback.callbackSNI] Whether OSS sends SNI to the origin address specified by callbackUrl when a callback request is initiated from the client + * {Object} [options.callback.customValue] Custom parameters are a map of key-values, e.g: + * customValue = { + * key1: 'value1', + * key2: 'value2' + * } + * @return {Object} + */ +proto.put = async function put(name, file, options) { + let content; + options = options || {}; + name = this._objectName(name); + + if (isBuffer(file)) { + content = file; + } else if (is.string(file)) { + const stats = fs.statSync(file); + if (!stats.isFile()) { + throw new Error(`${file} is not file`); + } + options.mime = options.mime || mime.getType(path.extname(file)); + options.contentLength = await this._getFileSize(file); + const getStream = () => fs.createReadStream(file); + const putStreamStb = (objectName, makeStream, configOption) => { + return this.putStream(objectName, makeStream(), configOption); + }; + return await retry(putStreamStb, this.options.retryMax, { + errorHandler: err => { + const _errHandle = _err => { + const statusErr = [-1, -2].includes(_err.status); + const requestErrorRetryHandle = this.options.requestErrorRetryHandle || (() => true); + return statusErr && requestErrorRetryHandle(_err); + }; + if (_errHandle(err)) return true; + return false; + } + })(name, getStream, options); + } else if (is.readableStream(file)) { + return await this.putStream(name, file, options); + } else { + throw new TypeError('Must provide String/Buffer/ReadableStream for put.'); + } + + options.headers = options.headers || {}; + this._convertMetaToHeaders(options.meta, options.headers); + + const method = options.method || 'PUT'; + const params = this._objectRequestParams(method, name, options); + + callback.encodeCallback(params, options); + + params.mime = options.mime; + params.content = content; + params.successStatuses = [200]; + + const result = await this.request(params); + + const ret = { + name, + url: this._objectUrl(name), + res: result.res + }; + + if (params.headers && params.headers['x-oss-callback']) { + ret.data = JSON.parse(result.data.toString()); + } + + return ret; +}; + +/** + * put an object from ReadableStream. If `options.contentLength` is + * not provided, chunked encoding is used. + * @param {String} name the object key + * @param {Readable} stream the ReadableStream + * @param {Object} options + * @return {Object} + */ +proto.putStream = async function putStream(name, stream, options) { + options = options || {}; + options.headers = options.headers || {}; + name = this._objectName(name); + if (options.contentLength) { + options.headers['Content-Length'] = options.contentLength; + } else { + options.headers['Transfer-Encoding'] = 'chunked'; + } + this._convertMetaToHeaders(options.meta, options.headers); + + const method = options.method || 'PUT'; + const params = this._objectRequestParams(method, name, options); + callback.encodeCallback(params, options); + params.mime = options.mime; + const transform = new Transform(); + // must remove http stream header for signature + transform._transform = function _transform(chunk, encoding, done) { + this.push(chunk); + done(); + }; + params.stream = pump(stream, transform); + params.successStatuses = [200]; + + const result = await this.request(params); + + const ret = { + name, + url: this._objectUrl(name), + res: result.res + }; + + if (params.headers && params.headers['x-oss-callback']) { + ret.data = JSON.parse(result.data.toString()); + } + + return ret; +}; + +proto.getStream = async function getStream(name, options) { + options = options || {}; + + if (options.process) { + options.subres = options.subres || {}; + options.subres['x-oss-process'] = options.process; + } + + const params = this._objectRequestParams('GET', name, options); + params.customResponse = true; + params.successStatuses = [200, 206, 304]; + + const result = await this.request(params); + + return { + stream: result.res, + res: { + status: result.status, + headers: result.headers + } + }; +}; + +proto.putMeta = async function putMeta(name, meta, options) { + return await this.copy(name, name, { + meta: meta || {}, + timeout: options && options.timeout, + ctx: options && options.ctx + }); +}; + +proto.list = async function list(query, options) { + // prefix, marker, max-keys, delimiter + + const params = this._objectRequestParams('GET', '', options); + params.query = query; + params.xmlResponse = true; + params.successStatuses = [200]; + + const result = await this.request(params); + let objects = result.data.Contents || []; + const that = this; + if (objects) { + if (!Array.isArray(objects)) { + objects = [objects]; + } + + objects = objects.map(obj => ({ + name: obj.Key, + url: that._objectUrl(obj.Key), + lastModified: obj.LastModified, + etag: obj.ETag, + type: obj.Type, + size: Number(obj.Size), + storageClass: obj.StorageClass, + owner: { + id: obj.Owner.ID, + displayName: obj.Owner.DisplayName + }, + restoreInfo: parseRestoreInfo(obj.RestoreInfo) + })); + } + let prefixes = result.data.CommonPrefixes || null; + if (prefixes) { + if (!Array.isArray(prefixes)) { + prefixes = [prefixes]; + } + prefixes = prefixes.map(item => item.Prefix); + } + return { + res: result.res, + objects, + prefixes, + nextMarker: result.data.NextMarker || null, + isTruncated: result.data.IsTruncated === 'true' + }; +}; + +proto.listV2 = async function listV2(query = {}, options = {}) { + const continuation_token = query['continuation-token'] || query.continuationToken; + delete query['continuation-token']; + delete query.continuationToken; + if (continuation_token) { + options.subres = Object.assign( + { + 'continuation-token': continuation_token + }, + options.subres + ); + } + const params = this._objectRequestParams('GET', '', options); + params.query = Object.assign({ 'list-type': 2 }, query); + delete params.query['continuation-token']; + delete query.continuationToken; + params.xmlResponse = true; + params.successStatuses = [200]; + + const result = await this.request(params); + let objects = result.data.Contents || []; + const that = this; + if (objects) { + if (!Array.isArray(objects)) { + objects = [objects]; + } + + objects = objects.map(obj => { + let owner = null; + if (obj.Owner) { + owner = { + id: obj.Owner.ID, + displayName: obj.Owner.DisplayName + }; + } + + return { + name: obj.Key, + url: that._objectUrl(obj.Key), + lastModified: obj.LastModified, + etag: obj.ETag, + type: obj.Type, + size: Number(obj.Size), + storageClass: obj.StorageClass, + owner, + restoreInfo: parseRestoreInfo(obj.RestoreInfo) + }; + }); + } + let prefixes = result.data.CommonPrefixes || null; + if (prefixes) { + if (!Array.isArray(prefixes)) { + prefixes = [prefixes]; + } + prefixes = prefixes.map(item => item.Prefix); + } + return { + res: result.res, + objects, + prefixes, + isTruncated: result.data.IsTruncated === 'true', + keyCount: +result.data.KeyCount, + continuationToken: result.data.ContinuationToken || null, + nextContinuationToken: result.data.NextContinuationToken || null + }; +}; + +/** + * Restore Object + * @param {String} name the object key + * @param {Object} options {type : Archive or ColdArchive} + * @returns {{res}} + */ +proto.restore = async function restore(name, options = { type: 'Archive' }) { + options = options || {}; + options.subres = Object.assign({ restore: '' }, options.subres); + if (options.versionId) { + options.subres.versionId = options.versionId; + } + const params = this._objectRequestParams('POST', name, options); + const paramsXMLObj = { + RestoreRequest: { + Days: options.Days ? options.Days : 2 + } + }; + + if (options.type === 'ColdArchive' || options.type === 'DeepColdArchive') { + paramsXMLObj.RestoreRequest.JobParameters = { + Tier: options.JobParameters ? options.JobParameters : 'Standard' + }; + } + + params.content = obj2xml(paramsXMLObj, { + headers: true + }); + params.mime = 'xml'; + params.successStatuses = [202]; + + const result = await this.request(params); + + return { + res: result.res + }; +}; + +proto._objectUrl = function _objectUrl(name) { + return this._getReqUrl({ bucket: this.options.bucket, object: name }); +}; + +/** + * generator request params + * @return {Object} params + * + * @api private + */ + +proto._objectRequestParams = function (method, name, options) { + if (!this.options.bucket && !this.options.cname) { + throw new Error('Please create a bucket first'); + } + + options = options || {}; + name = this._objectName(name); + const params = { + object: name, + bucket: this.options.bucket, + method, + subres: options && options.subres, + additionalHeaders: options && options.additionalHeaders, + timeout: options && options.timeout, + ctx: options && options.ctx + }; + + if (options.headers) { + params.headers = {}; + copy(options.headers).to(params.headers); + } + return params; +}; + +proto._objectName = function (name) { + return name.replace(/^\/+/, ''); +}; + +proto._statFile = function (filepath) { + return new Promise((resolve, reject) => { + fs.stat(filepath, (err, stats) => { + if (err) { + reject(err); + } else { + resolve(stats); + } + }); + }); +}; + +proto._convertMetaToHeaders = function (meta, headers) { + if (!meta) { + return; + } + + Object.keys(meta).forEach(k => { + headers[`x-oss-meta-${k}`] = meta[k]; + }); +}; + +proto._deleteFileSafe = function (filepath) { + return new Promise(resolve => { + fs.exists(filepath, exists => { + if (!exists) { + resolve(); + } else { + fs.unlink(filepath, err => { + if (err) { + debug('unlink %j error: %s', filepath, err); + } + resolve(); + }); + } + }); + }); +}; diff --git a/node_modules/ali-oss/lib/rtmp.js b/node_modules/ali-oss/lib/rtmp.js new file mode 100644 index 0000000..318d183 --- /dev/null +++ b/node_modules/ali-oss/lib/rtmp.js @@ -0,0 +1,295 @@ +/** + * Copyright(c) ali-sdk and other contributors. + * MIT Licensed + * + * Authors: + * rockuw <rockuw@gmail.com> (http://rockuw.com) + */ + +/** + * Module dependencies. + */ + +const jstoxml = require('jstoxml'); +const utility = require('utility'); +const copy = require('copy-to'); +const urlutil = require('url'); + +const proto = exports; + +/** + * RTMP operations + */ + +/** + * Create a live channel + * @param {String} id the channel id + * @param {Object} conf the channel configuration + * @param {Object} options + * @return {Object} + */ +proto.putChannel = async function putChannel(id, conf, options) { + options = options || {}; + options.subres = 'live'; + + const params = this._objectRequestParams('PUT', id, options); + params.xmlResponse = true; + params.content = jstoxml.toXML({ + LiveChannelConfiguration: conf + }); + params.successStatuses = [200]; + + const result = await this.request(params); + + let publishUrls = result.data.PublishUrls.Url; + if (!Array.isArray(publishUrls)) { + publishUrls = [publishUrls]; + } + let playUrls = result.data.PlayUrls.Url; + if (!Array.isArray(playUrls)) { + playUrls = [playUrls]; + } + + return { + publishUrls, + playUrls, + res: result.res + }; +}; + +/** + * Get the channel info + * @param {String} id the channel id + * @param {Object} options + * @return {Object} + */ +proto.getChannel = async function getChannel(id, options) { + options = options || {}; + options.subres = 'live'; + + const params = this._objectRequestParams('GET', id, options); + params.xmlResponse = true; + params.successStatuses = [200]; + + const result = await this.request(params); + + return { + data: result.data, + res: result.res + }; +}; + +/** + * Delete the channel + * @param {String} id the channel id + * @param {Object} options + * @return {Object} + */ +proto.deleteChannel = async function deleteChannel(id, options) { + options = options || {}; + options.subres = 'live'; + + const params = this._objectRequestParams('DELETE', id, options); + params.successStatuses = [204]; + + const result = await this.request(params); + + return { + res: result.res + }; +}; + +/** + * Set the channel status + * @param {String} id the channel id + * @param {String} status the channel status + * @param {Object} options + * @return {Object} + */ +proto.putChannelStatus = async function putChannelStatus(id, status, options) { + options = options || {}; + options.subres = { + live: null, + status + }; + + const params = this._objectRequestParams('PUT', id, options); + params.successStatuses = [200]; + + const result = await this.request(params); + + return { + res: result.res + }; +}; + +/** + * Get the channel status + * @param {String} id the channel id + * @param {Object} options + * @return {Object} + */ +proto.getChannelStatus = async function getChannelStatus(id, options) { + options = options || {}; + options.subres = { + live: null, + comp: 'stat' + }; + + const params = this._objectRequestParams('GET', id, options); + params.xmlResponse = true; + params.successStatuses = [200]; + + const result = await this.request(params); + + return { + data: result.data, + res: result.res + }; +}; + +/** + * List the channels + * @param {Object} query the query parameters + * filter options: + * - prefix {String}: the channel id prefix (returns channels with this prefix) + * - marker {String}: the channle id marker (returns channels after this id) + * - max-keys {Number}: max number of channels to return + * @param {Object} options + * @return {Object} + */ +proto.listChannels = async function listChannels(query, options) { + // prefix, marker, max-keys + + options = options || {}; + options.subres = 'live'; + + const params = this._objectRequestParams('GET', '', options); + params.query = query; + params.xmlResponse = true; + params.successStatuses = [200]; + + const result = await this.request(params); + + let channels = result.data.LiveChannel || []; + if (!Array.isArray(channels)) { + channels = [channels]; + } + + channels = channels.map(x => { + x.PublishUrls = x.PublishUrls.Url; + if (!Array.isArray(x.PublishUrls)) { + x.PublishUrls = [x.PublishUrls]; + } + x.PlayUrls = x.PlayUrls.Url; + if (!Array.isArray(x.PlayUrls)) { + x.PlayUrls = [x.PlayUrls]; + } + + return x; + }); + + return { + channels, + nextMarker: result.data.NextMarker || null, + isTruncated: result.data.IsTruncated === 'true', + res: result.res + }; +}; + +/** + * Get the channel history + * @param {String} id the channel id + * @param {Object} options + * @return {Object} + */ +proto.getChannelHistory = async function getChannelHistory(id, options) { + options = options || {}; + options.subres = { + live: null, + comp: 'history' + }; + + const params = this._objectRequestParams('GET', id, options); + params.xmlResponse = true; + params.successStatuses = [200]; + + const result = await this.request(params); + + let records = result.data.LiveRecord || []; + if (!Array.isArray(records)) { + records = [records]; + } + return { + records, + res: result.res + }; +}; + +/** + * Create vod playlist + * @param {String} id the channel id + * @param {String} name the playlist name + * @param {Object} time the begin and end time + * time: + * - startTime {Number}: the begin time in epoch seconds + * - endTime {Number}: the end time in epoch seconds + * @param {Object} options + * @return {Object} + */ +proto.createVod = async function createVod(id, name, time, options) { + options = options || {}; + options.subres = { + vod: null + }; + copy(time).to(options.subres); + + const params = this._objectRequestParams('POST', `${id}/${name}`, options); + params.query = time; + params.successStatuses = [200]; + + const result = await this.request(params); + + return { + res: result.res + }; +}; + +/** + * Get RTMP Url + * @param {String} channelId the channel id + * @param {Object} options + * options: + * - expires {Number}: expire time in seconds + * - params {Object}: the parameters such as 'playlistName' + * @return {String} the RTMP url + */ +proto.getRtmpUrl = function (channelId, options) { + options = options || {}; + const expires = utility.timestamp() + (options.expires || 1800); + const res = { + bucket: this.options.bucket, + object: this._objectName(`live/${channelId}`) + }; + const resource = `/${res.bucket}/${channelId}`; + + options.params = options.params || {}; + const query = Object.keys(options.params) + .sort() + .map(x => `${x}:${options.params[x]}\n`) + .join(''); + + const stringToSign = `${expires}\n${query}${resource}`; + const signature = this.signature(stringToSign); + + const url = urlutil.parse(this._getReqUrl(res)); + url.protocol = 'rtmp:'; + url.query = { + OSSAccessKeyId: this.options.accessKeyId, + Expires: expires, + Signature: signature + }; + copy(options.params).to(url.query); + + return url.format(); +}; diff --git a/node_modules/ali-oss/lib/setConfig.d.ts b/node_modules/ali-oss/lib/setConfig.d.ts new file mode 100644 index 0000000..21f533f --- /dev/null +++ b/node_modules/ali-oss/lib/setConfig.d.ts @@ -0,0 +1,3 @@ +declare let client: any; +export declare const setConfig: (options: any, ctx: any) => void; +export { client }; diff --git a/node_modules/ali-oss/lib/setConfig.js b/node_modules/ali-oss/lib/setConfig.js new file mode 100644 index 0000000..9473ad4 --- /dev/null +++ b/node_modules/ali-oss/lib/setConfig.js @@ -0,0 +1,42 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.client = exports.setConfig = void 0; +const urllib_1 = __importDefault(require("urllib")); +const agentkeepalive_1 = __importDefault(require("agentkeepalive")); +const getUserAgent_1 = require("./common/utils/getUserAgent"); +const initOptions_1 = __importDefault(require("./common/client/initOptions")); +const HttpsAgentKeepalive = agentkeepalive_1.default.HttpsAgent; +const globalHttpAgent = new agentkeepalive_1.default(); +const globalHttpsAgent = new HttpsAgentKeepalive(); +class Client { + constructor(options, ctx) { + if (!(this instanceof Client)) { + return new Client(options, ctx); + } + if (options && options.inited) { + this.options = options; + } + else { + this.options = initOptions_1.default(options); + } + // support custom agent and urllib client + if (this.options.urllib) { + this.urllib = this.options.urllib; + } + else { + this.urllib = urllib_1.default; + this.agent = this.options.agent || globalHttpAgent; + this.httpsAgent = this.options.httpsAgent || globalHttpsAgent; + } + this.ctx = ctx; + this.userAgent = getUserAgent_1.getUserAgent(); + } +} +let client; +exports.client = client; +exports.setConfig = (options, ctx) => { + exports.client = client = new Client(options, ctx); +}; diff --git a/node_modules/ali-oss/lib/setConfig.ts b/node_modules/ali-oss/lib/setConfig.ts new file mode 100644 index 0000000..d13d65e --- /dev/null +++ b/node_modules/ali-oss/lib/setConfig.ts @@ -0,0 +1,52 @@ +import urllib from 'urllib'; +import AgentKeepalive from 'agentkeepalive'; +import { getUserAgent } from './common/utils/getUserAgent'; +import initOptions from './common/client/initOptions'; + +const HttpsAgentKeepalive = AgentKeepalive.HttpsAgent; +const globalHttpAgent = new AgentKeepalive(); +const globalHttpsAgent = new HttpsAgentKeepalive(); + +class Client { + options; + + urllib; + + agent; + + httpsAgent; + + ctx; + + userAgent; + + constructor(options, ctx) { + if (!(this instanceof Client)) { + return new Client(options, ctx); + } + + if (options && options.inited) { + this.options = options; + } else { + this.options = initOptions(options); + } + + // support custom agent and urllib client + if (this.options.urllib) { + this.urllib = this.options.urllib; + } else { + this.urllib = urllib; + this.agent = this.options.agent || globalHttpAgent; + this.httpsAgent = this.options.httpsAgent || globalHttpsAgent; + } + this.ctx = ctx; + this.userAgent = getUserAgent(); + } +} + +let client; +export const setConfig = (options, ctx) => { + client = new Client(options, ctx); +}; + +export { client }; diff --git a/node_modules/ali-oss/lib/sts.js b/node_modules/ali-oss/lib/sts.js new file mode 100644 index 0000000..e720f59 --- /dev/null +++ b/node_modules/ali-oss/lib/sts.js @@ -0,0 +1,156 @@ +const debug = require('debug')('ali-oss:sts'); +const crypto = require('crypto'); +const querystring = require('querystring'); +const copy = require('copy-to'); +const AgentKeepalive = require('agentkeepalive'); +const is = require('is-type-of'); +const ms = require('humanize-ms'); +const urllib = require('urllib'); + +const globalHttpAgent = new AgentKeepalive(); + +function STS(options) { + if (!(this instanceof STS)) { + return new STS(options); + } + + if (!options || !options.accessKeyId || !options.accessKeySecret) { + throw new Error('require accessKeyId, accessKeySecret'); + } + + this.options = { + endpoint: options.endpoint || 'https://sts.aliyuncs.com', + format: 'JSON', + apiVersion: '2015-04-01', + sigMethod: 'HMAC-SHA1', + sigVersion: '1.0', + timeout: '60s' + }; + copy(options).to(this.options); + + // support custom agent and urllib client + if (this.options.urllib) { + this.urllib = this.options.urllib; + } else { + this.urllib = urllib; + this.agent = this.options.agent || globalHttpAgent; + } +} + +module.exports = STS; + +const proto = STS.prototype; + +/** + * STS opertaions + */ + +proto.assumeRole = async function assumeRole(role, policy, expiration, session, options) { + const opts = this.options; + const params = { + Action: 'AssumeRole', + RoleArn: role, + RoleSessionName: session || 'app', + DurationSeconds: expiration || 3600, + + Format: opts.format, + Version: opts.apiVersion, + AccessKeyId: opts.accessKeyId, + SignatureMethod: opts.sigMethod, + SignatureVersion: opts.sigVersion, + SignatureNonce: Math.random(), + Timestamp: new Date().toISOString() + }; + + if (policy) { + let policyStr; + if (is.string(policy)) { + try { + policyStr = JSON.stringify(JSON.parse(policy)); + } catch (err) { + throw new Error(`Policy string is not a valid JSON: ${err.message}`); + } + } else { + policyStr = JSON.stringify(policy); + } + params.Policy = policyStr; + } + + const signature = this._getSignature('POST', params, opts.accessKeySecret); + params.Signature = signature; + + const reqUrl = opts.endpoint; + const reqParams = { + agent: this.agent, + timeout: ms((options && options.timeout) || opts.timeout), + method: 'POST', + content: querystring.stringify(params), + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + ctx: options && options.ctx + }; + + const result = await this.urllib.request(reqUrl, reqParams); + debug('response %s %s, got %s, headers: %j', reqParams.method, reqUrl, result.status, result.headers); + + if (Math.floor(result.status / 100) !== 2) { + const err = await this._requestError(result); + err.params = reqParams; + throw err; + } + result.data = JSON.parse(result.data); + + return { + res: result.res, + credentials: result.data.Credentials + }; +}; + +proto._requestError = async function _requestError(result) { + const err = new Error(); + err.status = result.status; + + try { + const resp = (await JSON.parse(result.data)) || {}; + err.code = resp.Code; + err.message = `${resp.Code}: ${resp.Message}`; + err.requestId = resp.RequestId; + } catch (e) { + err.message = `UnknownError: ${String(result.data)}`; + } + + return err; +}; + +proto._getSignature = function _getSignature(method, params, key) { + const that = this; + const canoQuery = Object.keys(params) + .sort() + .map(k => `${that._escape(k)}=${that._escape(params[k])}`) + .join('&'); + + const stringToSign = `${method.toUpperCase()}&${this._escape('/')}&${this._escape(canoQuery)}`; + + debug('string to sign: %s', stringToSign); + + let signature = crypto.createHmac('sha1', `${key}&`); + signature = signature.update(stringToSign).digest('base64'); + + debug('signature: %s', signature); + + return signature; +}; + +/** + * Since `encodeURIComponent` doesn't encode '*', which causes + * 'SignatureDoesNotMatch'. We need do it ourselves. + */ +proto._escape = function _escape(str) { + return encodeURIComponent(str) + .replace(/!/g, '%21') + .replace(/'/g, '%27') + .replace(/\(/g, '%28') + .replace(/\)/g, '%29') + .replace(/\*/g, '%2A'); +}; diff --git a/node_modules/ali-oss/lib/types/experimental.d.ts b/node_modules/ali-oss/lib/types/experimental.d.ts new file mode 100644 index 0000000..f742889 --- /dev/null +++ b/node_modules/ali-oss/lib/types/experimental.d.ts @@ -0,0 +1 @@ +export declare type THeaderEncoding = 'utf-8' | 'latin1'; diff --git a/node_modules/ali-oss/lib/types/experimental.js b/node_modules/ali-oss/lib/types/experimental.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/node_modules/ali-oss/lib/types/experimental.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/ali-oss/lib/types/experimental.ts b/node_modules/ali-oss/lib/types/experimental.ts new file mode 100644 index 0000000..9c4a96c --- /dev/null +++ b/node_modules/ali-oss/lib/types/experimental.ts @@ -0,0 +1 @@ +export type THeaderEncoding = 'utf-8' | 'latin1'; diff --git a/node_modules/ali-oss/package.json b/node_modules/ali-oss/package.json new file mode 100644 index 0000000..48ef588 --- /dev/null +++ b/node_modules/ali-oss/package.json @@ -0,0 +1,175 @@ +{ + "name": "ali-oss", + "version": "6.23.0", + "description": "aliyun oss(object storage service) node client", + "main": "./lib/client.js", + "files": [ + "lib", + "shims", + "dist" + ], + "browser": { + "./lib/client.js": "./dist/aliyun-oss-sdk.js", + "mime": "mime/lite", + "urllib": "./shims/xhr.js", + "utility": "./shims/utility.js", + "crypto": "./shims/crypto/crypto.js", + "debug": "./shims/debug", + "fs": false, + "child_process": false, + "is-type-of": "./shims/is-type-of.js" + }, + "scripts": { + "build-change-log": "standard-version", + "test": "npm run tsc && mocha -t 120000 -r should -r dotenv/config test/node/*.test.js test/node/**/*.test.js", + "test-cov": "npm run tsc && nyc --reporter=lcov node_modules/.bin/_mocha -t 120000 -r should test/node/*.test.js test/node/**/*.test.js", + "jshint": "jshint .", + "build-test": "mkdir -p ./test/browser/build && MINIFY=1 node browser-build.js > test/browser/build/aliyun-oss-sdk.min.js && node -r dotenv/config task/browser-test-build.js > test/browser/build/tests.js", + "browser-test": "npm run build-test && karma start", + "build-dist": "npm run tsc && node browser-build.js > dist/aliyun-oss-sdk.js && MINIFY=1 node browser-build.js > dist/aliyun-oss-sdk.min.js", + "publish-to-npm": "node publish-npm-check.js && npm publish", + "publish-to-cdn": "node publish.js", + "snyk-protect": "snyk-protect", + "lint-staged": "lint-staged", + "detect-secrets": "node task/detect-secrets", + "tsc": "npm run tsc:clean && npm run tsc:build", + "tsc:build": "tsc -b tsconfig.json tsconfig-cjs.json", + "tsc:watch": "tsc -b tsconfig.json tsconfig-cjs.json --watch", + "tsc:clean": "tsc -b tsconfig.json tsconfig-cjs.json --clean ", + "prepare": "husky install" + }, + "git-pre-hooks": { + "pre-release": "npm run build-dist", + "post-release": [ + "npm run publish-to-npm", + "npm run publish-to-cdn" + ] + }, + "homepage": "https://github.com/ali-sdk/ali-oss", + "bugs": { + "url": "https://github.com/ali-sdk/ali-oss/issues" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/ali-sdk/ali-oss.git" + }, + "keywords": [ + "oss", + "client", + "file", + "aliyun" + ], + "author": "dead_horse", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "devDependencies": { + "@alicloud/openapi-client": "^0.4.10", + "@alicloud/resourcemanager20200331": "^2.3.0", + "@alicloud/tea-util": "^1.4.9", + "@babel/core": "^7.11.6", + "@babel/plugin-transform-regenerator": "^7.10.4", + "@babel/plugin-transform-runtime": "^7.11.5", + "@babel/preset-env": "^7.11.5", + "@babel/runtime": "^7.11.2", + "@commitlint/cli": "^17.6.7", + "@commitlint/config-conventional": "^16.2.4", + "@octokit/core": "^5.0.0", + "@semantic-release/exec": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "@semantic-release/npm": "^10.0.5", + "@snyk/protect": "^1.1196.0", + "@types/node": "^14.0.12", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "aliasify": "^2.0.0", + "axios": "^0.27.2", + "babelify": "^10.0.0", + "beautify-benchmark": "^0.2.4", + "benchmark": "^2.1.1", + "bluebird": "^3.1.5", + "browserify": "^17.0.0", + "core-js": "^3.6.5", + "crypto-js": "^4.2.0", + "dotenv": "^8.2.0", + "eslint": "^8.44.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-ali": "^13.0.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.21.1", + "eslint-plugin-jsx-a11y": "^6.0.3", + "eslint-plugin-prettier": "^4.2.1", + "filereader": "^0.10.3", + "form-data": "^4.0.0", + "git-pre-hooks": "^1.2.0", + "husky": "^7.0.4", + "immediate": "^3.3.0", + "karma": "^6.3.4", + "karma-browserify": "^8.1.0", + "karma-chrome-launcher": "^2.2.0", + "karma-firefox-launcher": "^1.0.1", + "karma-ie-launcher": "^1.0.0", + "karma-mocha": "^2.0.1", + "karma-safari-launcher": "^1.0.0", + "lint-staged": "^12.4.1", + "mm": "^2.0.0", + "mocha": "^9.1.2", + "nise": "5.1.4", + "nyc": "^15.1.0", + "prettier": "^3.0.0", + "promise-polyfill": "^6.0.2", + "puppeteer": "19.0.0", + "semantic-release": "^21.1.1", + "should": "^11.0.0", + "sinon": "^15.2.0", + "standard-version": "^9.3.1", + "stream-equal": "^1.1.0", + "timemachine": "^0.3.0", + "typescript": "^3.9.5", + "uglify-js": "^3.14.2", + "watchify": "^4.0.0" + }, + "dependencies": { + "address": "^1.2.2", + "agentkeepalive": "^3.4.1", + "bowser": "^1.6.0", + "copy-to": "^2.0.1", + "dateformat": "^2.0.0", + "debug": "^4.3.4", + "destroy": "^1.0.4", + "end-or-error": "^1.0.1", + "get-ready": "^1.0.0", + "humanize-ms": "^1.2.0", + "is-type-of": "^1.4.0", + "js-base64": "^2.5.2", + "jstoxml": "^2.0.0", + "lodash": "^4.17.21", + "merge-descriptors": "^1.0.1", + "mime": "^2.4.5", + "platform": "^1.3.1", + "pump": "^3.0.0", + "qs": "^6.4.0", + "sdk-base": "^2.0.1", + "stream-http": "2.8.2", + "stream-wormhole": "^1.0.4", + "urllib": "^2.44.0", + "utility": "^1.18.0", + "xml2js": "^0.6.2" + }, + "snyk": true, + "lint-staged": { + "**/!(dist)/*": [ + "npm run detect-secrets --" + ], + "**/*.{js,ts}": [ + "eslint --cache --fix --ext .js,.ts", + "prettier --write", + "git add" + ] + } +} diff --git a/node_modules/ali-oss/shims/crypto/crypto.js b/node_modules/ali-oss/shims/crypto/crypto.js new file mode 100644 index 0000000..5ce53e0 --- /dev/null +++ b/node_modules/ali-oss/shims/crypto/crypto.js @@ -0,0 +1,98 @@ +var Buffer = require('buffer').Buffer; +var sha = require('./sha'); +var sha256 = require('./sha256'); +var md5 = require('./md5'); + +var algorithms = { + sha1: sha, + sha256: sha256, + md5: md5 +}; + +var blocksize = 64; +var zeroBuffer = Buffer.alloc(blocksize); +zeroBuffer.fill(0); + +function hmac(fn, key, data) { + if (!Buffer.isBuffer(key)) key = Buffer.from(key); + if (!Buffer.isBuffer(data)) data = Buffer.from(data); + + if (key.length > blocksize) { + key = fn(key); + } else if (key.length < blocksize) { + key = Buffer.concat([key, zeroBuffer], blocksize); + } + + var ipad = Buffer.alloc(blocksize), + opad = Buffer.alloc(blocksize); + for (var i = 0; i < blocksize; i++) { + ipad[i] = key[i] ^ 0x36; + opad[i] = key[i] ^ 0x5c; + } + + var hash = fn(Buffer.concat([ipad, data])); + return fn(Buffer.concat([opad, hash])); +} + +function hash(alg, key) { + alg = alg || 'sha1'; + var fn = algorithms[alg]; + var bufs = []; + var length = 0; + if (!fn) error('algorithm:', alg, 'is not yet supported'); + return { + update: function (data) { + if (!Buffer.isBuffer(data)) data = Buffer.from(data); + + bufs.push(data); + length += data.length; + return this; + }, + digest: function (enc) { + var buf = Buffer.concat(bufs); + var r = key ? hmac(fn, key, buf) : fn(buf); + bufs = null; + return enc ? r.toString(enc) : r; + } + }; +} + +function error() { + var m = [].slice.call(arguments).join(' '); + throw new Error([m, 'we accept pull requests', 'http://github.com/dominictarr/crypto-browserify'].join('\n')); +} + +exports.createHash = function (alg) { + return hash(alg); +}; +exports.createHmac = function (alg, key) { + return hash(alg, key); +}; + +exports.createCredentials = () => { + error('sorry,createCredentials is not implemented yet'); +}; +exports.createCipher = () => { + error('sorry,createCipher is not implemented yet'); +}; +exports.createCipheriv = () => { + error('sorry,createCipheriv is not implemented yet'); +}; +exports.createDecipher = () => { + error('sorry,createDecipher is not implemented yet'); +}; +exports.createDecipheriv = () => { + error('sorry,createDecipheriv is not implemented yet'); +}; +exports.createSign = () => { + error('sorry,createSign is not implemented yet'); +}; +exports.createVerify = () => { + error('sorry,createVerify is not implemented yet'); +}; +exports.createDiffieHellman = () => { + error('sorry,createDiffieHellman is not implemented yet'); +}; +exports.pbkdf2 = () => { + error('sorry,pbkdf2 is not implemented yet'); +}; diff --git a/node_modules/ali-oss/shims/crypto/helpers.js b/node_modules/ali-oss/shims/crypto/helpers.js new file mode 100644 index 0000000..8496212 --- /dev/null +++ b/node_modules/ali-oss/shims/crypto/helpers.js @@ -0,0 +1,36 @@ +var Buffer = require('buffer').Buffer; +var intSize = 4; +var zeroBuffer = Buffer.alloc(intSize); +zeroBuffer.fill(0); +var chrsz = 8; + +function toArray(buf, bigEndian) { + if (buf.length % intSize !== 0) { + var len = buf.length + (intSize - (buf.length % intSize)); + buf = Buffer.concat([buf, zeroBuffer], len); + } + + var arr = []; + var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE; + for (var i = 0; i < buf.length; i += intSize) { + arr.push(fn.call(buf, i)); + } + return arr; +} + +function toBuffer(arr, size, bigEndian) { + var buf = Buffer.alloc(size); + var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE; + for (var i = 0; i < arr.length; i++) { + fn.call(buf, arr[i], i * 4, true); + } + return buf; +} + +function hash(buf, fn, hashSize, bigEndian) { + if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf); + var arr = fn(toArray(buf, bigEndian), buf.length * chrsz); + return toBuffer(arr, hashSize, bigEndian); +} + +module.exports = { hash: hash }; diff --git a/node_modules/ali-oss/shims/crypto/md5.js b/node_modules/ali-oss/shims/crypto/md5.js new file mode 100644 index 0000000..615c5c9 --- /dev/null +++ b/node_modules/ali-oss/shims/crypto/md5.js @@ -0,0 +1,152 @@ +/* + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +var helpers = require('./helpers'); + +/* + * Perform a simple self-test to see if the VM is working + */ +function md5_vm_test() { + return hex_md5('abc') == '900150983cd24fb0d6963f7d28e17f72'; +} + +/* + * Calculate the MD5 of an array of little-endian words, and a bit length + */ +function core_md5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << len % 32; + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (var i = 0; i < x.length; i += 16) { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + + a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936); + d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586); + c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819); + b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897); + d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983); + a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = md5_ff(c, d, a, b, x[i + 10], 17, -42063); + b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101); + c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510); + d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713); + b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302); + a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691); + d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083); + c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335); + b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848); + a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438); + d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961); + b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784); + c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = md5_hh(a, b, c, d, x[i + 5], 4, -378558); + d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556); + a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632); + b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174); + d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222); + c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979); + b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189); + a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487); + d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835); + c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520); + b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844); + d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055); + a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523); + b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744); + c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070); + d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259); + b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + } + return Array(a, b, c, d); +} + +/* + * These functions implement the four basic operations the algorithm uses. + */ +function md5_cmn(q, a, b, x, s, t) { + return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b); +} +function md5_ff(a, b, c, d, x, s, t) { + return md5_cmn((b & c) | (~b & d), a, b, x, s, t); +} +function md5_gg(a, b, c, d, x, s, t) { + return md5_cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function md5_hh(a, b, c, d, x, s, t) { + return md5_cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5_ii(a, b, c, d, x, s, t) { + return md5_cmn(c ^ (b | ~d), a, b, x, s, t); +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function bit_rol(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +module.exports = function md5(buf) { + return helpers.hash(buf, core_md5, 16); +}; diff --git a/node_modules/ali-oss/shims/crypto/sha.js b/node_modules/ali-oss/shims/crypto/sha.js new file mode 100644 index 0000000..a792065 --- /dev/null +++ b/node_modules/ali-oss/shims/crypto/sha.js @@ -0,0 +1,91 @@ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS PUB 180-1 + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ + +var helpers = require('./helpers'); + +/* + * Calculate the SHA-1 of an array of big-endian words, and a bit length + */ +function core_sha1(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (24 - (len % 32)); + x[(((len + 64) >> 9) << 4) + 15] = len; + + var w = Array(80); + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + var e = -1009589776; + + for (var i = 0; i < x.length; i += 16) { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + var olde = e; + + for (var j = 0; j < 80; j++) { + if (j < 16) w[j] = x[i + j]; + else w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); + var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j))); + e = d; + d = c; + c = rol(b, 30); + b = a; + a = t; + } + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + e = safe_add(e, olde); + } + return Array(a, b, c, d, e); +} + +/* + * Perform the appropriate triplet combination function for the current + * iteration + */ +function sha1_ft(t, b, c, d) { + if (t < 20) return (b & c) | (~b & d); + if (t < 40) return b ^ c ^ d; + if (t < 60) return (b & c) | (b & d) | (c & d); + return b ^ c ^ d; +} + +/* + * Determine the appropriate additive constant for the current iteration + */ +function sha1_kt(t) { + return t < 20 ? 1518500249 : t < 40 ? 1859775393 : t < 60 ? -1894007588 : -899497514; +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function rol(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); +} + +module.exports = function sha1(buf) { + return helpers.hash(buf, core_sha1, 20, true); +}; diff --git a/node_modules/ali-oss/shims/crypto/sha256.js b/node_modules/ali-oss/shims/crypto/sha256.js new file mode 100644 index 0000000..6043bce --- /dev/null +++ b/node_modules/ali-oss/shims/crypto/sha256.js @@ -0,0 +1,163 @@ +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ + +var helpers = require('./helpers'); + +var safe_add = function (x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); +}; + +var S = function (X, n) { + return (X >>> n) | (X << (32 - n)); +}; + +var R = function (X, n) { + return X >>> n; +}; + +var Ch = function (x, y, z) { + return (x & y) ^ (~x & z); +}; + +var Maj = function (x, y, z) { + return (x & y) ^ (x & z) ^ (y & z); +}; + +var Sigma0256 = function (x) { + return S(x, 2) ^ S(x, 13) ^ S(x, 22); +}; + +var Sigma1256 = function (x) { + return S(x, 6) ^ S(x, 11) ^ S(x, 25); +}; + +var Gamma0256 = function (x) { + return S(x, 7) ^ S(x, 18) ^ R(x, 3); +}; + +var Gamma1256 = function (x) { + return S(x, 17) ^ S(x, 19) ^ R(x, 10); +}; + +var core_sha256 = function (m, l) { + var K = new Array( + 0x428a2f98, + 0x71374491, + 0xb5c0fbcf, + 0xe9b5dba5, + 0x3956c25b, + 0x59f111f1, + 0x923f82a4, + 0xab1c5ed5, + 0xd807aa98, + 0x12835b01, + 0x243185be, + 0x550c7dc3, + 0x72be5d74, + 0x80deb1fe, + 0x9bdc06a7, + 0xc19bf174, + 0xe49b69c1, + 0xefbe4786, + 0xfc19dc6, + 0x240ca1cc, + 0x2de92c6f, + 0x4a7484aa, + 0x5cb0a9dc, + 0x76f988da, + 0x983e5152, + 0xa831c66d, + 0xb00327c8, + 0xbf597fc7, + 0xc6e00bf3, + 0xd5a79147, + 0x6ca6351, + 0x14292967, + 0x27b70a85, + 0x2e1b2138, + 0x4d2c6dfc, + 0x53380d13, + 0x650a7354, + 0x766a0abb, + 0x81c2c92e, + 0x92722c85, + 0xa2bfe8a1, + 0xa81a664b, + 0xc24b8b70, + 0xc76c51a3, + 0xd192e819, + 0xd6990624, + 0xf40e3585, + 0x106aa070, + 0x19a4c116, + 0x1e376c08, + 0x2748774c, + 0x34b0bcb5, + 0x391c0cb3, + 0x4ed8aa4a, + 0x5b9cca4f, + 0x682e6ff3, + 0x748f82ee, + 0x78a5636f, + 0x84c87814, + 0x8cc70208, + 0x90befffa, + 0xa4506ceb, + 0xbef9a3f7, + 0xc67178f2 + ); + var HASH = new Array(0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19); + var W = new Array(64); + var a, b, c, d, e, f, g, h, i, j; + var T1, T2; + /* append padding */ + m[l >> 5] |= 0x80 << (24 - (l % 32)); + m[(((l + 64) >> 9) << 4) + 15] = l; + for (var i = 0; i < m.length; i += 16) { + a = HASH[0]; + b = HASH[1]; + c = HASH[2]; + d = HASH[3]; + e = HASH[4]; + f = HASH[5]; + g = HASH[6]; + h = HASH[7]; + for (var j = 0; j < 64; j++) { + if (j < 16) { + W[j] = m[j + i]; + } else { + W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]); + } + T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]); + T2 = safe_add(Sigma0256(a), Maj(a, b, c)); + h = g; + g = f; + f = e; + e = safe_add(d, T1); + d = c; + c = b; + b = a; + a = safe_add(T1, T2); + } + HASH[0] = safe_add(a, HASH[0]); + HASH[1] = safe_add(b, HASH[1]); + HASH[2] = safe_add(c, HASH[2]); + HASH[3] = safe_add(d, HASH[3]); + HASH[4] = safe_add(e, HASH[4]); + HASH[5] = safe_add(f, HASH[5]); + HASH[6] = safe_add(g, HASH[6]); + HASH[7] = safe_add(h, HASH[7]); + } + return HASH; +}; + +module.exports = function sha256(buf) { + return helpers.hash(buf, core_sha256, 32, true); +}; diff --git a/node_modules/ali-oss/shims/debug.js b/node_modules/ali-oss/shims/debug.js new file mode 100644 index 0000000..d0680f2 --- /dev/null +++ b/node_modules/ali-oss/shims/debug.js @@ -0,0 +1,3 @@ +module.exports = () => { + return () => {}; +}; diff --git a/node_modules/ali-oss/shims/is-type-of.js b/node_modules/ali-oss/shims/is-type-of.js new file mode 100644 index 0000000..a05f950 --- /dev/null +++ b/node_modules/ali-oss/shims/is-type-of.js @@ -0,0 +1,18 @@ +const { Stream } = require('stream'); +const { isArray } = require('../lib/common/utils/isArray'); + +module.exports.string = function isString(obj) { + return typeof obj === 'string'; +}; + +module.exports.array = isArray; + +module.exports.buffer = Buffer.isBuffer; + +function isStream(obj) { + return obj instanceof Stream; +} + +module.exports.writableStream = function isWritableStream(obj) { + return isStream(obj) && typeof obj._write === 'function' && typeof obj._writableState === 'object'; +}; diff --git a/node_modules/ali-oss/shims/process.js b/node_modules/ali-oss/shims/process.js new file mode 100644 index 0000000..6b9baeb --- /dev/null +++ b/node_modules/ali-oss/shims/process.js @@ -0,0 +1,35 @@ +var immediate = require('immediate'); +var process = (module.exports = {}); +process.nextTick = immediate; + +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; +function noop() {} +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; +process.listeners = function (name) { + return []; +}; +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; +process.cwd = function () { + return '/'; +}; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function () { + return 0; +}; diff --git a/node_modules/ali-oss/shims/stream-http/index.js b/node_modules/ali-oss/shims/stream-http/index.js new file mode 100644 index 0000000..6b04f9a --- /dev/null +++ b/node_modules/ali-oss/shims/stream-http/index.js @@ -0,0 +1,82 @@ +//"version": "2.8.2", +var ClientRequest = require('./lib/request'); +var response = require('./lib/response'); +var extend = require('xtend'); +var statusCodes = require('builtin-status-codes'); +var url = require('url'); + +var http = exports; + +http.request = function (opts, cb) { + if (typeof opts === 'string') opts = url.parse(opts); + else opts = extend(opts); + + // Normally, the page is loaded from http or https, so not specifying a protocol + // will result in a (valid) protocol-relative url. However, this won't work if + // the protocol is something else, like 'file:' + var defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''; + + var protocol = opts.protocol || defaultProtocol; + var host = opts.hostname || opts.host; + var port = opts.port; + var path = opts.path || '/'; + + // Necessary for IPv6 addresses + if (host && host.indexOf(':') !== -1) host = '[' + host + ']'; + + // This may be a relative url. The browser should always be able to interpret it correctly. + opts.url = (host ? protocol + '//' + host : '') + (port ? ':' + port : '') + path; + opts.method = (opts.method || 'GET').toUpperCase(); + opts.headers = opts.headers || {}; + + // Also valid opts.auth, opts.mode + + var req = new ClientRequest(opts); + if (cb) req.on('response', cb); + return req; +}; + +http.get = function get(opts, cb) { + var req = http.request(opts, cb); + req.end(); + return req; +}; + +http.ClientRequest = ClientRequest; +http.IncomingMessage = response.IncomingMessage; + +http.Agent = function () {}; +http.Agent.defaultMaxSockets = 4; + +http.globalAgent = new http.Agent(); + +http.STATUS_CODES = statusCodes; + +http.METHODS = [ + 'CHECKOUT', + 'CONNECT', + 'COPY', + 'DELETE', + 'GET', + 'HEAD', + 'LOCK', + 'M-SEARCH', + 'MERGE', + 'MKACTIVITY', + 'MKCOL', + 'MOVE', + 'NOTIFY', + 'OPTIONS', + 'PATCH', + 'POST', + 'PROPFIND', + 'PROPPATCH', + 'PURGE', + 'PUT', + 'REPORT', + 'SEARCH', + 'SUBSCRIBE', + 'TRACE', + 'UNLOCK', + 'UNSUBSCRIBE' +]; diff --git a/node_modules/ali-oss/shims/stream-http/lib/capability.js b/node_modules/ali-oss/shims/stream-http/lib/capability.js new file mode 100644 index 0000000..e82d789 --- /dev/null +++ b/node_modules/ali-oss/shims/stream-http/lib/capability.js @@ -0,0 +1,72 @@ +exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream); + +exports.writableStream = isFunction(global.WritableStream); + +exports.abortController = isFunction(global.AbortController); + +exports.blobConstructor = false; +try { + new Blob([new ArrayBuffer(1)]); + exports.blobConstructor = true; +} catch (e) {} + +// The xhr request to example.com may violate some restrictive CSP configurations, +// so if we're running in a browser that supports `fetch`, avoid calling getXHR() +// and assume support for certain features below. +var xhr; +function getXHR() { + // Cache the xhr value + if (xhr !== undefined) return xhr; + + if (global.XMLHttpRequest) { + xhr = new global.XMLHttpRequest(); + // If XDomainRequest is available (ie only, where xhr might not work + // cross domain), use the page location. Otherwise use example.com + // Note: this doesn't actually make an http request. + try { + xhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com'); + } catch (e) { + xhr = null; + } + } else { + // Service workers don't have XHR + xhr = null; + } + return xhr; +} + +function checkTypeSupport(type) { + var xhr = getXHR(); + if (!xhr) return false; + try { + xhr.responseType = type; + return xhr.responseType === type; + } catch (e) {} + return false; +} + +// For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'. +// Safari 7.1 appears to have fixed this bug. +var haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined'; +var haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice); + +// If fetch is supported, then arraybuffer will be supported too. Skip calling +// checkTypeSupport(), since that calls getXHR(). +exports.arraybuffer = exports.fetch || (haveArrayBuffer && checkTypeSupport('arraybuffer')); + +// These next two tests unavoidably show warnings in Chrome. Since fetch will always +// be used if it's available, just return false for these to avoid the warnings. +exports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream'); +exports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer && checkTypeSupport('moz-chunked-arraybuffer'); + +// If fetch is supported, then overrideMimeType will be supported too. Skip calling +// getXHR(). +exports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false); + +exports.vbArray = isFunction(global.VBArray); + +function isFunction(value) { + return typeof value === 'function'; +} + +xhr = null; // Help gc diff --git a/node_modules/ali-oss/shims/stream-http/lib/request.js b/node_modules/ali-oss/shims/stream-http/lib/request.js new file mode 100644 index 0000000..bcf9f86 --- /dev/null +++ b/node_modules/ali-oss/shims/stream-http/lib/request.js @@ -0,0 +1,320 @@ +var capability = require('./capability'); +var inherits = require('inherits'); +var response = require('./response'); +var stream = require('readable-stream'); +var toArrayBuffer = require('to-arraybuffer'); + +var IncomingMessage = response.IncomingMessage; +var rStates = response.readyStates; + +function decideMode(preferBinary, useFetch) { + if (capability.fetch && useFetch) { + return 'fetch'; + } else if (capability.mozchunkedarraybuffer) { + return 'moz-chunked-arraybuffer'; + } else if (capability.msstream) { + return 'ms-stream'; + } else if (capability.arraybuffer && preferBinary) { + return 'arraybuffer'; + } else if (capability.vbArray && preferBinary) { + return 'text:vbarray'; + } else { + return 'text'; + } +} + +var ClientRequest = (module.exports = function (opts) { + var self = this; + stream.Writable.call(self); + + self._opts = opts; + self._body = []; + self._headers = {}; + if (opts.auth) self.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64')); + Object.keys(opts.headers).forEach(function (name) { + self.setHeader(name, opts.headers[name]); + }); + + var preferBinary; + var useFetch = true; + if (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) { + // If the use of XHR should be preferred. Not typically needed. + useFetch = false; + preferBinary = true; + } else if (opts.mode === 'prefer-streaming') { + // If streaming is a high priority but binary compatibility and + // the accuracy of the 'content-type' header aren't + preferBinary = false; + } else if (opts.mode === 'allow-wrong-content-type') { + // If streaming is more important than preserving the 'content-type' header + preferBinary = !capability.overrideMimeType; + } else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') { + // Use binary if text streaming may corrupt data or the content-type header, or for speed + preferBinary = true; + } else { + throw new Error('Invalid value for opts.mode'); + } + self._mode = decideMode(preferBinary, useFetch); + self._fetchTimer = null; + + self.on('finish', function () { + self._onFinish(); + }); +}); + +inherits(ClientRequest, stream.Writable); + +ClientRequest.prototype.setHeader = function (name, value) { + var self = this; + var lowerName = name.toLowerCase(); + // This check is not necessary, but it prevents warnings from browsers about setting unsafe + // headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but + // http-browserify did it, so I will too. + if (unsafeHeaders.indexOf(lowerName) !== -1) return; + + self._headers[lowerName] = { + name: name, + value: value + }; +}; + +ClientRequest.prototype.getHeader = function (name) { + var header = this._headers[name.toLowerCase()]; + if (header) return header.value; + return null; +}; + +ClientRequest.prototype.removeHeader = function (name) { + var self = this; + delete self._headers[name.toLowerCase()]; +}; + +ClientRequest.prototype._onFinish = function () { + var self = this; + + if (self._destroyed) return; + var opts = self._opts; + + var headersObj = self._headers; + var body = null; + if (opts.method !== 'GET' && opts.method !== 'HEAD') { + if (capability.arraybuffer) { + body = toArrayBuffer(Buffer.concat(self._body)); + } else if (capability.blobConstructor) { + body = new global.Blob( + self._body.map(function (buffer) { + return toArrayBuffer(buffer); + }), + { + type: (headersObj['content-type'] || {}).value || '' + } + ); + } else { + // get utf8 string + body = Buffer.concat(self._body).toString(); + } + } + + // create flattened list of headers + var headersList = []; + Object.keys(headersObj).forEach(function (keyName) { + var name = headersObj[keyName].name; + var value = headersObj[keyName].value; + if (Array.isArray(value)) { + value.forEach(function (v) { + headersList.push([name, v]); + }); + } else { + headersList.push([name, value]); + } + }); + + if (self._mode === 'fetch') { + var signal = null; + var fetchTimer = null; + if (capability.abortController) { + var controller = new AbortController(); + signal = controller.signal; + self._fetchAbortController = controller; + + if ('requestTimeout' in opts && opts.requestTimeout !== 0) { + self._fetchTimer = global.setTimeout(function () { + self.emit('requestTimeout'); + if (self._fetchAbortController) self._fetchAbortController.abort(); + }, opts.requestTimeout); + } + } + + global + .fetch(self._opts.url, { + method: self._opts.method, + headers: headersList, + body: body || undefined, + mode: 'cors', + credentials: opts.withCredentials ? 'include' : 'same-origin', + signal: signal + }) + .then( + function (response) { + self._fetchResponse = response; + self._connect(); + }, + function (reason) { + global.clearTimeout(self._fetchTimer); + if (!self._destroyed) self.emit('error', reason); + } + ); + } else { + var xhr = (self._xhr = new global.XMLHttpRequest()); + try { + xhr.open(self._opts.method, self._opts.url, true); + } catch (err) { + process.nextTick(function () { + self.emit('error', err); + }); + return; + } + + // Can't set responseType on really old browsers + if ('responseType' in xhr) xhr.responseType = self._mode.split(':')[0]; + + if ('withCredentials' in xhr) xhr.withCredentials = !!opts.withCredentials; + + if (self._mode === 'text' && 'overrideMimeType' in xhr) xhr.overrideMimeType('text/plain; charset=x-user-defined'); + + if ('requestTimeout' in opts) { + xhr.timeout = opts.requestTimeout; + xhr.ontimeout = function () { + self.emit('requestTimeout'); + }; + } + + headersList.forEach(function (header) { + xhr.setRequestHeader(header[0], header[1]); + }); + + self._response = null; + xhr.onreadystatechange = function () { + switch (xhr.readyState) { + case rStates.LOADING: + case rStates.DONE: + self._onXHRProgress(); + break; + } + }; + // Necessary for streaming in Firefox, since xhr.response is ONLY defined + // in onprogress, not in onreadystatechange with xhr.readyState = 3 + if (self._mode === 'moz-chunked-arraybuffer') { + xhr.onprogress = function () { + self._onXHRProgress(); + }; + } + + xhr.onerror = function () { + if (self._destroyed) return; + self.emit('error', new Error('XHR error')); + }; + + try { + xhr.send(body); + } catch (err) { + process.nextTick(function () { + self.emit('error', err); + }); + return; + } + } +}; + +/** + * Checks if xhr.status is readable and non-zero, indicating no error. + * Even though the spec says it should be available in readyState 3, + * accessing it throws an exception in IE8 + */ +function statusValid(xhr) { + try { + var status = xhr.status; + return status !== null && status !== 0; + } catch (e) { + return false; + } +} + +ClientRequest.prototype._onXHRProgress = function () { + var self = this; + + if (!statusValid(self._xhr) || self._destroyed) return; + + if (!self._response) self._connect(); + + self._response._onXHRProgress(); +}; + +ClientRequest.prototype._connect = function () { + var self = this; + + if (self._destroyed) return; + + self._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._fetchTimer); + self._response.on('error', function (err) { + self.emit('error', err); + }); + + self.emit('response', self._response); +}; + +ClientRequest.prototype._write = function (chunk, encoding, cb) { + var self = this; + + self._body.push(chunk); + cb(); +}; + +ClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () { + var self = this; + self._destroyed = true; + global.clearTimeout(self._fetchTimer); + if (self._response) self._response._destroyed = true; + if (self._xhr) self._xhr.abort(); + else if (self._fetchAbortController) self._fetchAbortController.abort(); +}; + +ClientRequest.prototype.end = function (data, encoding, cb) { + var self = this; + if (typeof data === 'function') { + cb = data; + data = undefined; + } + + stream.Writable.prototype.end.call(self, data, encoding, cb); +}; + +ClientRequest.prototype.flushHeaders = function () {}; +ClientRequest.prototype.setTimeout = function () {}; +ClientRequest.prototype.setNoDelay = function () {}; +ClientRequest.prototype.setSocketKeepAlive = function () {}; + +// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method +var unsafeHeaders = [ + 'accept-charset', + 'accept-encoding', + 'access-control-request-headers', + 'access-control-request-method', + 'connection', + 'content-length', + 'cookie', + 'cookie2', + 'date', + 'dnt', + 'expect', + 'host', + 'keep-alive', + 'origin', + 'referer', + 'te', + 'trailer', + 'transfer-encoding', + 'upgrade', + 'user-agent', + 'via' +]; diff --git a/node_modules/ali-oss/shims/stream-http/lib/response.js b/node_modules/ali-oss/shims/stream-http/lib/response.js new file mode 100644 index 0000000..030016d --- /dev/null +++ b/node_modules/ali-oss/shims/stream-http/lib/response.js @@ -0,0 +1,217 @@ +var capability = require('./capability'); +var inherits = require('inherits'); +var stream = require('readable-stream'); + +var rStates = (exports.readyStates = { + UNSENT: 0, + OPENED: 1, + HEADERS_RECEIVED: 2, + LOADING: 3, + DONE: 4 +}); + +var IncomingMessage = (exports.IncomingMessage = function (xhr, response, mode, fetchTimer) { + var self = this; + stream.Readable.call(self); + + self._mode = mode; + self.headers = {}; + self.rawHeaders = []; + self.trailers = {}; + self.rawTrailers = []; + + // Fake the 'close' event, but only once 'end' fires + self.on('end', function () { + // The nextTick is necessary to prevent the 'request' module from causing an infinite loop + process.nextTick(function () { + self.emit('close'); + }); + }); + + if (mode === 'fetch') { + self._fetchResponse = response; + + self.url = response.url; + self.statusCode = response.status; + self.statusMessage = response.statusText; + + response.headers.forEach(function (header, key) { + self.headers[key.toLowerCase()] = header; + self.rawHeaders.push(key, header); + }); + + if (capability.writableStream) { + var writable = new WritableStream({ + write: function (chunk) { + return new Promise(function (resolve, reject) { + if (self._destroyed) { + reject(); + } else if (self.push(new Buffer(chunk))) { + resolve(); + } else { + self._resumeFetch = resolve; + } + }); + }, + close: function () { + global.clearTimeout(fetchTimer); + if (!self._destroyed) self.push(null); + }, + abort: function (err) { + if (!self._destroyed) self.emit('error', err); + } + }); + + try { + response.body.pipeTo(writable).catch(function (err) { + global.clearTimeout(fetchTimer); + if (!self._destroyed) self.emit('error', err); + }); + return; + } catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this + } + // fallback for when writableStream or pipeTo aren't available + var reader = response.body.getReader(); + function read() { + reader + .read() + .then(function (result) { + if (self._destroyed) return; + if (result.done) { + global.clearTimeout(fetchTimer); + self.push(null); + return; + } + self.push(new Buffer(result.value)); + read(); + }) + .catch(function (err) { + global.clearTimeout(fetchTimer); + if (!self._destroyed) self.emit('error', err); + }); + } + read(); + } else { + self._xhr = xhr; + self._pos = 0; + + self.url = xhr.responseURL; + self.statusCode = xhr.status; + self.statusMessage = xhr.statusText; + var headers = xhr.getAllResponseHeaders().split(/\r?\n/); + headers.forEach(function (header) { + var matches = header.match(/^([^:]+):\s*(.*)/); + if (matches) { + var key = matches[1].toLowerCase(); + if (key === 'set-cookie') { + if (self.headers[key] === undefined) { + self.headers[key] = []; + } + self.headers[key].push(matches[2]); + } else if (self.headers[key] !== undefined) { + self.headers[key] += ', ' + matches[2]; + } else { + self.headers[key] = matches[2]; + } + self.rawHeaders.push(matches[1], matches[2]); + } + }); + + self._charset = 'x-user-defined'; + if (!capability.overrideMimeType) { + var mimeType = self.rawHeaders['mime-type']; + if (mimeType) { + var charsetMatch = mimeType.match(/;\s*charset=([^;])(;|$)/); + if (charsetMatch) { + self._charset = charsetMatch[1].toLowerCase(); + } + } + if (!self._charset) self._charset = 'utf-8'; // best guess + } + } +}); + +inherits(IncomingMessage, stream.Readable); + +IncomingMessage.prototype._read = function () { + var self = this; + + var resolve = self._resumeFetch; + if (resolve) { + self._resumeFetch = null; + resolve(); + } +}; + +IncomingMessage.prototype._onXHRProgress = function () { + var self = this; + + var xhr = self._xhr; + + var response = null; + switch (self._mode) { + case 'text:vbarray': // For IE9 + if (xhr.readyState !== rStates.DONE) break; + try { + // This fails in IE8 + response = new global.VBArray(xhr.responseBody).toArray(); + } catch (e) {} + if (response !== null) { + self.push(new Buffer(response)); + break; + } + // Falls through in IE8 + case 'text': + try { + // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4 + response = xhr.responseText; + } catch (e) { + self._mode = 'text:vbarray'; + break; + } + if (response.length > self._pos) { + var newData = response.substr(self._pos); + if (self._charset === 'x-user-defined') { + var buffer = new Buffer(newData.length); + for (var i = 0; i < newData.length; i++) buffer[i] = newData.charCodeAt(i) & 0xff; + + self.push(buffer); + } else { + self.push(newData, self._charset); + } + self._pos = response.length; + } + break; + case 'arraybuffer': + if (xhr.readyState !== rStates.DONE || !xhr.response) break; + response = xhr.response; + self.push(new Buffer(new Uint8Array(response))); + break; + case 'moz-chunked-arraybuffer': // take whole + response = xhr.response; + if (xhr.readyState !== rStates.LOADING || !response) break; + self.push(new Buffer(new Uint8Array(response))); + break; + case 'ms-stream': + response = xhr.response; + if (xhr.readyState !== rStates.LOADING) break; + var reader = new global.MSStreamReader(); + reader.onprogress = function () { + if (reader.result.byteLength > self._pos) { + self.push(new Buffer(new Uint8Array(reader.result.slice(self._pos)))); + self._pos = reader.result.byteLength; + } + }; + reader.onload = function () { + self.push(null); + }; + // reader.onerror = ??? // TODO: this + reader.readAsArrayBuffer(response); + break; + } + + // The ms-stream case handles end separately in reader.onload() + if (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') { + self.push(null); + } +}; diff --git a/node_modules/ali-oss/shims/url/index.js b/node_modules/ali-oss/shims/url/index.js new file mode 100644 index 0000000..9a4ca59 --- /dev/null +++ b/node_modules/ali-oss/shims/url/index.js @@ -0,0 +1,696 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +var punycode = require('punycode'); +var util = require('./util'); + +exports.parse = urlParse; +exports.resolve = urlResolve; +exports.resolveObject = urlResolveObject; +exports.format = urlFormat; + +exports.Url = Url; + +function Url() { + this.protocol = null; + this.slashes = null; + this.auth = null; + this.host = null; + this.port = null; + this.hostname = null; + this.hash = null; + this.search = null; + this.query = null; + this.pathname = null; + this.path = null; + this.href = null; +} + +// Reference: RFC 3986, RFC 1808, RFC 2396 + +// define these here so at least they only have to be +// compiled once on the first module load. +var protocolPattern = /^([a-z0-9.+-]+:)/i, + portPattern = /:[0-9]*$/, + // Special case for a simple path URL + simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, + // RFC 2396: characters reserved for delimiting URLs. + // We actually just auto-escape these. + delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], + // RFC 2396: characters not allowed for various reasons. + unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), + // Allowed by RFCs, but cause of XSS attacks. Always escape these. + autoEscape = ["'"].concat(unwise), + // Characters that are never ever allowed in a hostname. + // Note that any invalid chars are also handled, but these + // are the ones that are *expected* to be seen, so we fast-path + // them. + nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), + hostEndingChars = ['/', '?', '#'], + hostnameMaxLen = 255, + hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, + // protocols that can allow "unsafe" and "unwise" chars. + unsafeProtocol = { + javascript: true, + 'javascript:': true + }, + // protocols that never have a hostname. + hostlessProtocol = { + javascript: true, + 'javascript:': true + }, + // protocols that always contain a // bit. + slashedProtocol = { + http: true, + https: true, + ftp: true, + gopher: true, + file: true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }, + querystring = require('querystring'); + +function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && util.isObject(url) && url instanceof Url) return url; + + var u = new Url(); + u.parse(url, parseQueryString, slashesDenoteHost); + return u; +} + +Url.prototype.parse = function (url, parseQueryString, slashesDenoteHost) { + if (!util.isString(url)) { + throw new TypeError("Parameter 'url' must be a string, not " + typeof url); + } + + // Copy chrome, IE, opera backslash-handling behavior. + // Back slashes before the query string get converted to forward slashes + // See: https://code.google.com/p/chromium/issues/detail?id=25916 + var queryIndex = url.indexOf('?'), + splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#', + uSplit = url.split(splitter), + slashRegex = /\\/g; + uSplit[0] = uSplit[0].replace(slashRegex, '/'); + url = uSplit.join(splitter); + + var rest = url; + + // trim before proceeding. + // This is to support parse stuff like " http://foo.com \n" + rest = rest.trim(); + + if (!slashesDenoteHost && url.split('#').length === 1) { + // Try fast path regexp + var simplePath = simplePathPattern.exec(rest); + if (simplePath) { + this.path = rest; + this.href = rest; + this.pathname = simplePath[1]; + if (simplePath[2]) { + this.search = simplePath[2]; + if (parseQueryString) { + this.query = querystring.parse(this.search.substr(1)); + } else { + this.query = this.search.substr(1); + } + } else if (parseQueryString) { + this.search = ''; + this.query = {}; + } + return this; + } + } + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + // figure out if it's got a host + // user@server is *always* interpreted as a hostname, and url + // resolution will treat //foo/bar as host=foo,path=bar because that's + // how the browser resolves relative URLs. + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + + if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) { + // there's a hostname. + // the first instance of /, ?, ;, or # ends the host. + // + // If there is an @ in the hostname, then non-host chars *are* allowed + // to the left of the last @ sign, unless some host-ending character + // comes *before* the @-sign. + // URLs are obnoxious. + // + // ex: + // http://a@b@c/ => user:a@b host:c + // http://a@b?@c => user:a host:c path:/?@c + + // v0.12 TODO(isaacs): This is not quite how Chrome does things. + // Review our test case against browsers more comprehensively. + + // find the first instance of any hostEndingChars + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec; + } + + // at this point, either we have an explicit point where the + // auth portion cannot go past, or the last @ char is the decider. + var auth, atSign; + if (hostEnd === -1) { + // atSign can be anywhere. + atSign = rest.lastIndexOf('@'); + } else { + // atSign must be in auth portion. + // http://a@b/c@d => host:b auth:a path:/c@d + atSign = rest.lastIndexOf('@', hostEnd); + } + + // Now we have a portion which is definitely the auth. + // Pull that off. + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + // the host is the remaining to the left of the first non-host char + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) hostEnd = hec; + } + // if we still have not hit it, then the entire thing is a host. + if (hostEnd === -1) hostEnd = rest.length; + + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + // pull out port. + this.parseHost(); + + // we've indicated that there is a hostname, + // so even if it's empty, it has to be present. + this.hostname = this.hostname || ''; + + // if hostname begins with [ and ends with ] + // assume that it's an IPv6 address. + var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']'; + + // validate a little. + if (!ipv6Hostname) { + var hostparts = this.hostname.split('.'); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) continue; + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + // we replace non-ASCII char with a temporary placeholder + // we need this to make sure size of hostname is not + // broken by replacing non-ASCII by nothing + newpart += 'x'; + } else { + newpart += part[j]; + } + } + // we test again with ASCII char only + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; + } + } + } + } + + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + // hostnames are always lower case. + this.hostname = this.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + // IDNA Support: Returns a punycoded representation of "domain". + // It only converts parts of the domain name that + // have non-ASCII characters, i.e. it doesn't matter if + // you call it with a domain that already is ASCII-only. + this.hostname = punycode.toASCII(this.hostname); + } + + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + // strip [ and ] from the hostname + // the host field still retains them, though + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + // now rest is set to the post-host stuff. + // chop off any delim chars. + if (!unsafeProtocol[lowerProto]) { + // First, make 100% sure that any "autoEscape" chars get + // escaped, even if encodeURIComponent doesn't think they + // need to be. + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + if (rest.indexOf(ae) === -1) continue; + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + // chop off from the tail first. + var hash = rest.indexOf('#'); + if (hash !== -1) { + // got a fragment string. + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + // no query string, but parseQueryString still requested + this.search = ''; + this.query = {}; + } + if (rest) this.pathname = rest; + if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) { + this.pathname = '/'; + } + + //to support http.request + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + // finally, reconstruct the href based on what has been validated. + this.href = this.format(); + return this; +}; + +// format a parsed object into a url string +function urlFormat(obj) { + // ensure it's an object, and not a string url. + // If it's an obj, this is a no-op. + // this way, you can call url_format() on strings + // to clean up potentially wonky urls. + if (util.isString(obj)) obj = urlParse(obj); + if (!(obj instanceof Url)) return Url.prototype.format.call(obj); + return obj.format(); +} + +Url.prototype.format = function () { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; + + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } + + if (this.query && util.isObject(this.query) && Object.keys(this.query).length) { + query = querystring.stringify(this.query); + } + + var search = this.search || (query && '?' + query) || ''; + + if (protocol && protocol.substr(-1) !== ':') protocol += ':'; + + // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. + // unless they had them to begin with. + if (this.slashes || ((!protocol || slashedProtocol[protocol]) && host !== false)) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') hash = '#' + hash; + if (search && search.charAt(0) !== '?') search = '?' + search; + + pathname = pathname.replace(/[?#]/g, function (match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; +}; + +function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); +} + +Url.prototype.resolve = function (relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); +}; + +function urlResolveObject(source, relative) { + if (!source) return relative; + return urlParse(source, false, true).resolveObject(relative); +} + +Url.prototype.resolveObject = function (relative) { + if (util.isString(relative)) { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + var tkeys = Object.keys(this); + for (var tk = 0; tk < tkeys.length; tk++) { + var tkey = tkeys[tk]; + result[tkey] = this[tkey]; + } + + // hash is always overridden, no matter what. + // even href="" will remove it. + result.hash = relative.hash; + + // if the relative url is empty, then there's nothing left to do here. + if (relative.href === '') { + result.href = result.format(); + return result; + } + + // hrefs like //foo/bar always cut to the protocol. + if (relative.slashes && !relative.protocol) { + // take everything except the protocol from relative + var rkeys = Object.keys(relative); + for (var rk = 0; rk < rkeys.length; rk++) { + var rkey = rkeys[rk]; + if (rkey !== 'protocol') result[rkey] = relative[rkey]; + } + + //urlParse appends trailing / to urls like http://www.example.com + if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) { + result.path = result.pathname = '/'; + } + + result.href = result.format(); + return result; + } + + if (relative.protocol && relative.protocol !== result.protocol) { + // if it's a known url protocol, then changing + // the protocol does weird things + // first, if it's not file:, then we MUST have a host, + // and if there was a path + // to begin with, then we MUST have a path. + // if it is file:, then the host is dropped, + // because that's known to be hostless. + // anything else is assumed to be absolute. + if (!slashedProtocol[relative.protocol]) { + var keys = Object.keys(relative); + for (var v = 0; v < keys.length; v++) { + var k = keys[v]; + result[k] = relative[k]; + } + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())); + if (!relative.host) relative.host = ''; + if (!relative.hostname) relative.hostname = ''; + if (relPath[0] !== '') relPath.unshift(''); + if (relPath.length < 2) relPath.unshift(''); + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + // to support http.request + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/', + isRelAbs = relative.host || (relative.pathname && relative.pathname.charAt(0) === '/'), + mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname), + removeAllDots = mustEndAbs, + srcPath = (result.pathname && result.pathname.split('/')) || [], + relPath = (relative.pathname && relative.pathname.split('/')) || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + // if the url is a non-slashed url, then relative + // links like ../.. should be able + // to crawl up to the hostname, as well. This is strange. + // result.protocol has already been set by now. + // Later on, put the first path part into the host field. + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') srcPath[0] = result.host; + else srcPath.unshift(result.host); + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') relPath[0] = relative.host; + else relPath.unshift(relative.host); + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + + if (isRelAbs) { + // it's absolute. + result.host = relative.host || relative.host === '' ? relative.host : result.host; + result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + // fall through to the dot-handling below. + } else if (relPath.length) { + // it's relative + // throw away the existing file, and take the new path instead. + if (!srcPath) srcPath = []; + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (!util.isNullOrUndefined(relative.search)) { + // just pull out the search. + // like href='?foo'. + // Put this after the other two cases because it simplifies the booleans + if (psychotic) { + result.hostname = result.host = srcPath.shift(); + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + result.search = relative.search; + result.query = relative.query; + //to support http.request + if (!util.isNull(result.pathname) || !util.isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + // no path at all. easy. + // we've already handled the other stuff above. + result.pathname = null; + //to support http.request + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + // if a url ENDs in . or .., then it must get a trailing slash. + // however, if it ends in anything else non-slashy, + // then it must NOT get a trailing slash. + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = + ((result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..')) || last === ''; + + // strip single dots, resolve double dots to parent dir + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last === '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && srcPath.join('/').substr(-1) !== '/') { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/'); + + // put the host back + if (psychotic) { + result.hostname = result.host = isAbsolute ? '' : srcPath.length ? srcPath.shift() : ''; + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (!srcPath.length) { + result.pathname = null; + result.path = null; + } else { + result.pathname = srcPath.join('/'); + } + + //to support request.http + if (!util.isNull(result.pathname) || !util.isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; +}; + +Url.prototype.parseHost = function () { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) this.hostname = host; +}; diff --git a/node_modules/ali-oss/shims/url/util.js b/node_modules/ali-oss/shims/url/util.js new file mode 100644 index 0000000..cde2170 --- /dev/null +++ b/node_modules/ali-oss/shims/url/util.js @@ -0,0 +1,16 @@ +'use strict'; + +module.exports = { + isString: function (arg) { + return typeof arg === 'string'; + }, + isObject: function (arg) { + return typeof arg === 'object' && arg !== null; + }, + isNull: function (arg) { + return arg === null; + }, + isNullOrUndefined: function (arg) { + return arg == null; + } +}; diff --git a/node_modules/ali-oss/shims/utility.js b/node_modules/ali-oss/shims/utility.js new file mode 100644 index 0000000..7ee7db7 --- /dev/null +++ b/node_modules/ali-oss/shims/utility.js @@ -0,0 +1,25 @@ +// copy from https://github.com/node-modules/utility for browser + +exports.encodeURIComponent = function (text) { + try { + return encodeURIComponent(text); + } catch (e) { + return text; + } +}; + +exports.escape = require('escape-html'); + +exports.timestamp = function timestamp(t) { + if (t) { + var v = t; + if (typeof v === 'string') { + v = Number(v); + } + if (String(t).length === 10) { + v *= 1000; + } + return new Date(v); + } + return Math.round(Date.now() / 1000); +}; diff --git a/node_modules/ali-oss/shims/xhr.js b/node_modules/ali-oss/shims/xhr.js new file mode 100644 index 0000000..540f6e9 --- /dev/null +++ b/node_modules/ali-oss/shims/xhr.js @@ -0,0 +1,798 @@ +'use strict'; +const util = require('util'); +const urlutil = require('url'); +const http = require('http'); +const https = require('https'); +const debug = require('debug')('urllib'); +const ms = require('humanize-ms'); +let REQUEST_ID = 0; +const MAX_VALUE = Math.pow(2, 31) - 10; +const PROTO_RE = /^https?:\/\//i; + +function getAgent(agent, defaultAgent) { + return agent === undefined ? defaultAgent : agent; +} + +function parseContentType(str) { + if (!str) { + return ''; + } + + return str.split(';')[0].trim().toLowerCase(); +} + +function makeCallback(resolve, reject) { + return function (err, data, res) { + if (err) { + return reject(err); + } + resolve({ + data: data, + status: res.statusCode, + headers: res.headers, + res: res + }); + }; +} + +// exports.TIMEOUT = ms('5s'); +exports.TIMEOUTS = [ms('300s'), ms('300s')]; + +const TEXT_DATA_TYPES = ['json', 'text']; + +exports.request = function request(url, args, callback) { + // request(url, callback) + if (arguments.length === 2 && typeof args === 'function') { + callback = args; + args = null; + } + if (typeof callback === 'function') { + return exports.requestWithCallback(url, args, callback); + } + + return new Promise(function (resolve, reject) { + exports.requestWithCallback(url, args, makeCallback(resolve, reject)); + }); +}; + +exports.requestWithCallback = function requestWithCallback(url, args, callback) { + if (!url || (typeof url !== 'string' && typeof url !== 'object')) { + const msg = util.format('expect request url to be a string or a http request options, but got' + ' %j', url); + throw new Error(msg); + } + + if (arguments.length === 2 && typeof args === 'function') { + callback = args; + args = null; + } + + args = args || {}; + if (REQUEST_ID >= MAX_VALUE) { + REQUEST_ID = 0; + } + const reqId = ++REQUEST_ID; + + args.requestUrls = args.requestUrls || []; + + const reqMeta = { + requestId: reqId, + url: url, + args: args, + ctx: args.ctx + }; + if (args.emitter) { + args.emitter.emit('request', reqMeta); + } + + args.timeout = args.timeout || exports.TIMEOUTS; + args.maxRedirects = args.maxRedirects || 10; + args.streaming = args.streaming || args.customResponse; + const requestStartTime = Date.now(); + let parsedUrl; + + if (typeof url === 'string') { + if (!PROTO_RE.test(url)) { + // Support `request('www.server.com')` + url = 'https://' + url; + } + parsedUrl = urlutil.parse(url); + } else { + parsedUrl = url; + } + + const method = (args.type || args.method || parsedUrl.method || 'GET').toUpperCase(); + let port = parsedUrl.port || 80; + let httplib = http; + let agent = getAgent(args.agent, exports.agent); + const fixJSONCtlChars = args.fixJSONCtlChars; + + if (parsedUrl.protocol === 'https:') { + httplib = https; + agent = getAgent(args.httpsAgent, exports.httpsAgent); + + if (!parsedUrl.port) { + port = 443; + } + } + + // request through proxy tunnel + // var proxyTunnelAgent = detectProxyAgent(parsedUrl, args); + // if (proxyTunnelAgent) { + // agent = proxyTunnelAgent; + // } + + const options = { + host: parsedUrl.hostname || parsedUrl.host || 'localhost', + path: parsedUrl.path || '/', + method: method, + port: port, + agent: agent, + headers: args.headers || {}, + // default is dns.lookup + // https://github.com/nodejs/node/blob/master/lib/net.js#L986 + // custom dnslookup require node >= 4.0.0 + // https://github.com/nodejs/node/blob/archived-io.js-v0.12/lib/net.js#L952 + lookup: args.lookup + }; + + if (Array.isArray(args.timeout)) { + options.requestTimeout = args.timeout[args.timeout.length - 1]; + } else if (typeof args.timeout !== 'undefined') { + options.requestTimeout = args.timeout; + } + + // const sslNames = [ + // 'pfx', + // 'key', + // 'passphrase', + // 'cert', + // 'ca', + // 'ciphers', + // 'rejectUnauthorized', + // 'secureProtocol', + // 'secureOptions', + // ]; + // for (let i = 0; i < sslNames.length; i++) { + // const name = sslNames[i]; + // if (args.hasOwnProperty(name)) { + // options[name] = args[name]; + // } + // } + + // don't check ssl + // if (options.rejectUnauthorized === false && !options.hasOwnProperty('secureOptions')) { + // options.secureOptions = require('constants').SSL_OP_NO_TLSv1_2; + // } + + const auth = args.auth || parsedUrl.auth; + if (auth) { + options.auth = auth; + } + + // content undefined data 有值 + let body = args.content || args.data; + const dataAsQueryString = method === 'GET' || method === 'HEAD' || args.dataAsQueryString; + if (!args.content) { + if (body && !(typeof body === 'string' || Buffer.isBuffer(body))) { + if (dataAsQueryString) { + // read: GET, HEAD, use query string + body = args.nestedQuerystring ? qs.stringify(body) : querystring.stringify(body); + } else { + let contentType = options.headers['Content-Type'] || options.headers['content-type']; + // auto add application/x-www-form-urlencoded when using urlencode form request + if (!contentType) { + if (args.contentType === 'json') { + contentType = 'application/json'; + } else { + contentType = 'application/x-www-form-urlencoded'; + } + options.headers['Content-Type'] = contentType; + } + + if (parseContentType(contentType) === 'application/json') { + body = JSON.stringify(body); + } else { + // 'application/x-www-form-urlencoded' + body = args.nestedQuerystring ? qs.stringify(body) : querystring.stringify(body); + } + } + } + } + + // if it's a GET or HEAD request, data should be sent as query string + if (dataAsQueryString && body) { + options.path += (parsedUrl.query ? '&' : '?') + body; + body = null; + } + + let requestSize = 0; + if (body) { + let length = body.length; + if (!Buffer.isBuffer(body)) { + length = Buffer.byteLength(body); + } + requestSize = options.headers['Content-Length'] = length; + } + + if (args.dataType === 'json') { + options.headers.Accept = 'application/json'; + } + + if (typeof args.beforeRequest === 'function') { + // you can use this hook to change every thing. + args.beforeRequest(options); + } + let connectTimer = null; + let responseTimer = null; + let __err = null; + let connected = false; // socket connected or not + let keepAliveSocket = false; // request with keepalive socket + let responseSize = 0; + let statusCode = -1; + let responseAborted = false; + let remoteAddress = ''; + let remotePort = ''; + let timing = null; + if (args.timing) { + timing = { + // socket assigned + queuing: 0, + // dns lookup time + dnslookup: 0, + // socket connected + connected: 0, + // request sent + requestSent: 0, + // Time to first byte (TTFB) + waiting: 0, + contentDownload: 0 + }; + } + + function cancelConnectTimer() { + if (connectTimer) { + clearTimeout(connectTimer); + connectTimer = null; + } + } + function cancelResponseTimer() { + if (responseTimer) { + clearTimeout(responseTimer); + responseTimer = null; + } + } + + function done(err, data, res) { + cancelResponseTimer(); + if (!callback) { + console.warn( + '[urllib:warn] [%s] [%s] [worker:%s] %s %s callback twice!!!', + Date(), + reqId, + process.pid, + options.method, + url + ); + // https://github.com/node-modules/urllib/pull/30 + if (err) { + console.warn( + '[urllib:warn] [%s] [%s] [worker:%s] %s: %s\nstack: %s', + Date(), + reqId, + process.pid, + err.name, + err.message, + err.stack + ); + } + return; + } + const cb = callback; + callback = null; + let headers = {}; + if (res) { + statusCode = res.statusCode; + headers = res.headers; + } + + // handle digest auth + // if (statusCode === 401 && headers['www-authenticate'] + // && (!args.headers || !args.headers.Authorization) && args.digestAuth) { + // const authenticate = headers['www-authenticate']; + // if (authenticate.indexOf('Digest ') >= 0) { + // debug('Request#%d %s: got digest auth header WWW-Authenticate: %s', reqId, url, authenticate); + // args.headers = args.headers || {}; + // args.headers.Authorization = digestAuthHeader(options.method, options.path, authenticate, args.digestAuth); + // debug('Request#%d %s: auth with digest header: %s', reqId, url, args.headers.Authorization); + // if (res.headers['set-cookie']) { + // args.headers.Cookie = res.headers['set-cookie'].join(';'); + // } + // return exports.requestWithCallback(url, args, cb); + // } + // } + + const requestUseTime = Date.now() - requestStartTime; + if (timing) { + timing.contentDownload = requestUseTime; + } + + debug( + '[%sms] done, %s bytes HTTP %s %s %s %s, keepAliveSocket: %s, timing: %j', + requestUseTime, + responseSize, + statusCode, + options.method, + options.host, + options.path, + keepAliveSocket, + timing + ); + + const response = { + status: statusCode, + statusCode: statusCode, + headers: headers, + size: responseSize, + aborted: responseAborted, + rt: requestUseTime, + keepAliveSocket: keepAliveSocket, + data: data, + requestUrls: args.requestUrls, + timing: timing, + remoteAddress: remoteAddress, + remotePort: remotePort + }; + + if (err) { + let agentStatus = ''; + if (agent && typeof agent.getCurrentStatus === 'function') { + // add current agent status to error message for logging and debug + agentStatus = ', agent status: ' + JSON.stringify(agent.getCurrentStatus()); + } + err.message += + ', ' + + options.method + + ' ' + + url + + ' ' + + statusCode + + ' (connected: ' + + connected + + ', keepalive socket: ' + + keepAliveSocket + + agentStatus + + ')' + + '\nheaders: ' + + JSON.stringify(headers); + err.data = data; + err.path = options.path; + err.status = statusCode; + err.headers = headers; + err.res = response; + } + + cb(err, data, args.streaming ? res : response); + + if (args.emitter) { + // keep to use the same reqMeta object on request event before + reqMeta.url = url; + reqMeta.socket = req && req.connection; + reqMeta.options = options; + reqMeta.size = requestSize; + + args.emitter.emit('response', { + requestId: reqId, + error: err, + ctx: args.ctx, + req: reqMeta, + res: response + }); + } + } + + function handleRedirect(res) { + let err = null; + if (args.followRedirect && statuses.redirect[res.statusCode]) { + // handle redirect + args._followRedirectCount = (args._followRedirectCount || 0) + 1; + const location = res.headers.location; + if (!location) { + err = new Error('Got statusCode ' + res.statusCode + ' but cannot resolve next location from headers'); + err.name = 'FollowRedirectError'; + } else if (args._followRedirectCount > args.maxRedirects) { + err = new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + url); + err.name = 'MaxRedirectError'; + } else { + const newUrl = args.formatRedirectUrl ? args.formatRedirectUrl(url, location) : urlutil.resolve(url, location); + debug('Request#%d %s: `redirected` from %s to %s', reqId, options.path, url, newUrl); + // make sure timer stop + cancelResponseTimer(); + // should clean up headers.Host on `location: http://other-domain/url` + if (args.headers && args.headers.Host && PROTO_RE.test(location)) { + args.headers.Host = null; + } + // avoid done will be execute in the future change. + const cb = callback; + callback = null; + exports.requestWithCallback(newUrl, args, cb); + return { + redirect: true, + error: null + }; + } + } + return { + redirect: false, + error: err + }; + } + + if (args.gzip) { + if (!options.headers['Accept-Encoding'] && !options.headers['accept-encoding']) { + options.headers['Accept-Encoding'] = 'gzip'; + } + } + + function decodeContent(res, body, cb) { + const encoding = res.headers['content-encoding']; + // if (body.length === 0) { + // return cb(null, body, encoding); + // } + + // if (!encoding || encoding.toLowerCase() !== 'gzip') { + return cb(null, body, encoding); + // } + + // debug('gunzip %d length body', body.length); + // zlib.gunzip(body, cb); + } + + const writeStream = args.writeStream; + + debug('Request#%d %s %s with headers %j, options.path: %s', reqId, method, url, options.headers, options.path); + + args.requestUrls.push(url); + + function onResponse(res) { + if (timing) { + timing.waiting = Date.now() - requestStartTime; + } + debug('Request#%d %s `req response` event emit: status %d, headers: %j', reqId, url, res.statusCode, res.headers); + + if (args.streaming) { + const result = handleRedirect(res); + if (result.redirect) { + res.resume(); + return; + } + if (result.error) { + res.resume(); + return done(result.error, null, res); + } + + return done(null, null, res); + } + + res.on('close', function () { + debug('Request#%d %s: `res close` event emit, total size %d', reqId, url, responseSize); + }); + + res.on('error', function () { + debug('Request#%d %s: `res error` event emit, total size %d', reqId, url, responseSize); + }); + + res.on('aborted', function () { + responseAborted = true; + debug('Request#%d %s: `res aborted` event emit, total size %d', reqId, url, responseSize); + }); + + if (writeStream) { + // If there's a writable stream to recieve the response data, just pipe the + // response stream to that writable stream and call the callback when it has + // finished writing. + // + // NOTE that when the response stream `res` emits an 'end' event it just + // means that it has finished piping data to another stream. In the + // meanwhile that writable stream may still writing data to the disk until + // it emits a 'close' event. + // + // That means that we should not apply callback until the 'close' of the + // writable stream is emited. + // + // See also: + // - https://github.com/TBEDP/urllib/commit/959ac3365821e0e028c231a5e8efca6af410eabb + // - http://nodejs.org/api/stream.html#stream_event_end + // - http://nodejs.org/api/stream.html#stream_event_close_1 + const result = handleRedirect(res); + if (result.redirect) { + res.resume(); + return; + } + if (result.error) { + res.resume(); + // end ths stream first + writeStream.end(); + return done(result.error, null, res); + } + // you can set consumeWriteStream false that only wait response end + if (args.consumeWriteStream === false) { + res.on('end', done.bind(null, null, null, res)); + } else { + // node 0.10, 0.12: only emit res aborted, writeStream close not fired + // if (isNode010 || isNode012) { + // first([ + // [ writeStream, 'close' ], + // [ res, 'aborted' ], + // ], function(_, stream, event) { + // debug('Request#%d %s: writeStream or res %s event emitted', reqId, url, event); + // done(__err || null, null, res); + // }); + if (false) { + } else { + writeStream.on('close', function () { + debug('Request#%d %s: writeStream close event emitted', reqId, url); + done(__err || null, null, res); + }); + } + } + return res.pipe(writeStream); + } + + // Otherwise, just concat those buffers. + // + // NOTE that the `chunk` is not a String but a Buffer. It means that if + // you simply concat two chunk with `+` you're actually converting both + // Buffers into Strings before concating them. It'll cause problems when + // dealing with multi-byte characters. + // + // The solution is to store each chunk in an array and concat them with + // 'buffer-concat' when all chunks is recieved. + // + // See also: + // http://cnodejs.org/topic/4faf65852e8fb5bc65113403 + + const chunks = []; + + res.on('data', function (chunk) { + debug('Request#%d %s: `res data` event emit, size %d', reqId, url, chunk.length); + responseSize += chunk.length; + chunks.push(chunk); + }); + + res.on('end', function () { + const body = Buffer.concat(chunks, responseSize); + debug('Request#%d %s: `res end` event emit, total size %d, _dumped: %s', reqId, url, responseSize, res._dumped); + + if (__err) { + // req.abort() after `res data` event emit. + return done(__err, body, res); + } + + const result = handleRedirect(res); + if (result.error) { + return done(result.error, body, res); + } + if (result.redirect) { + return; + } + + decodeContent(res, body, function (err, data, encoding) { + if (err) { + return done(err, body, res); + } + // if body not decode, dont touch it + if (!encoding && TEXT_DATA_TYPES.indexOf(args.dataType) >= 0) { + // try to decode charset + try { + data = decodeBodyByCharset(data, res); + } catch (e) { + debug('decodeBodyByCharset error: %s', e); + // if error, dont touch it + return done(null, data, res); + } + + if (args.dataType === 'json') { + if (responseSize === 0) { + data = null; + } else { + const r = parseJSON(data, fixJSONCtlChars); + if (r.error) { + err = r.error; + } else { + data = r.data; + } + } + } + } + + if (responseAborted) { + // err = new Error('Remote socket was terminated before `response.end()` was called'); + // err.name = 'RemoteSocketClosedError'; + debug('Request#%d %s: Remote socket was terminated before `response.end()` was called', reqId, url); + } + + done(err, data, res); + }); + }); + } + + let connectTimeout, responseTimeout; + if (Array.isArray(args.timeout)) { + connectTimeout = ms(args.timeout[0]); + responseTimeout = ms(args.timeout[1]); + } else { + // set both timeout equal + connectTimeout = responseTimeout = ms(args.timeout); + } + debug('ConnectTimeout: %d, ResponseTimeout: %d', connectTimeout, responseTimeout); + + function startConnectTimer() { + debug('Connect timer ticking, timeout: %d', connectTimeout); + connectTimer = setTimeout(function () { + connectTimer = null; + if (statusCode === -1) { + statusCode = -2; + } + let msg = 'Connect timeout for ' + connectTimeout + 'ms'; + let errorName = 'ConnectionTimeoutError'; + if (!req.socket) { + errorName = 'SocketAssignTimeoutError'; + msg += ', working sockets is full'; + } + __err = new Error(msg); + __err.name = errorName; + __err.requestId = reqId; + debug('ConnectTimeout: Request#%d %s %s: %s, connected: %s', reqId, url, __err.name, msg, connected); + abortRequest(); + }, connectTimeout); + } + + function startResposneTimer() { + debug('Response timer ticking, timeout: %d', responseTimeout); + responseTimer = setTimeout(function () { + responseTimer = null; + const msg = 'Response timeout for ' + responseTimeout + 'ms'; + const errorName = 'ResponseTimeoutError'; + __err = new Error(msg); + __err.name = errorName; + __err.requestId = reqId; + debug('ResponseTimeout: Request#%d %s %s: %s, connected: %s', reqId, url, __err.name, msg, connected); + abortRequest(); + }, responseTimeout); + } + + let req; + // request headers checker will throw error + options.mode = args.mode ? args.mode : ''; + try { + req = httplib.request(options, onResponse); + } catch (err) { + return done(err); + } + + // environment detection: browser or nodejs + if (typeof window === 'undefined') { + // start connect timer just after `request` return, and just in nodejs environment + startConnectTimer(); + } else { + req.on('requestTimeout', function () { + if (statusCode === -1) { + statusCode = -2; + } + const msg = 'Connect timeout for ' + connectTimeout + 'ms'; + const errorName = 'ConnectionTimeoutError'; + __err = new Error(msg); + __err.name = errorName; + __err.requestId = reqId; + abortRequest(); + }); + } + + function abortRequest() { + debug('Request#%d %s abort, connected: %s', reqId, url, connected); + // it wont case error event when req haven't been assigned a socket yet. + if (!req.socket) { + __err.noSocket = true; + done(__err); + } + req.abort(); + } + + if (timing) { + // request sent + req.on('finish', function () { + timing.requestSent = Date.now() - requestStartTime; + }); + } + + req.once('socket', function (socket) { + if (timing) { + // socket queuing time + timing.queuing = Date.now() - requestStartTime; + } + + // https://github.com/nodejs/node/blob/master/lib/net.js#L377 + // https://github.com/nodejs/node/blob/v0.10.40-release/lib/net.js#L352 + // should use socket.socket on 0.10.x + // if (isNode010 && socket.socket) { + // socket = socket.socket; + // } + + const readyState = socket.readyState; + if (readyState === 'opening') { + socket.once('lookup', function (err, ip, addressType) { + debug('Request#%d %s lookup: %s, %s, %s', reqId, url, err, ip, addressType); + if (timing) { + timing.dnslookup = Date.now() - requestStartTime; + } + if (ip) { + remoteAddress = ip; + } + }); + socket.once('connect', function () { + if (timing) { + // socket connected + timing.connected = Date.now() - requestStartTime; + } + + // cancel socket timer at first and start tick for TTFB + cancelConnectTimer(); + startResposneTimer(); + + debug('Request#%d %s new socket connected', reqId, url); + connected = true; + if (!remoteAddress) { + remoteAddress = socket.remoteAddress; + } + remotePort = socket.remotePort; + }); + return; + } + + debug('Request#%d %s reuse socket connected, readyState: %s', reqId, url, readyState); + connected = true; + keepAliveSocket = true; + if (!remoteAddress) { + remoteAddress = socket.remoteAddress; + } + remotePort = socket.remotePort; + + // reuse socket, timer should be canceled. + cancelConnectTimer(); + startResposneTimer(); + }); + + req.on('error', function (err) { + //TypeError for browser fetch api, Error for browser xmlhttprequest api + if (err.name === 'Error' || err.name === 'TypeError') { + err.name = connected ? 'ResponseError' : 'RequestError'; + } + err.message += ' (req "error")'; + debug('Request#%d %s `req error` event emit, %s: %s', reqId, url, err.name, err.message); + done(__err || err); + }); + + if (writeStream) { + writeStream.once('error', function (err) { + err.message += ' (writeStream "error")'; + __err = err; + debug('Request#%d %s `writeStream error` event emit, %s: %s', reqId, url, err.name, err.message); + abortRequest(); + }); + } + + if (args.stream) { + args.stream.pipe(req); + args.stream.once('error', function (err) { + err.message += ' (stream "error")'; + __err = err; + debug('Request#%d %s `readStream error` event emit, %s: %s', reqId, url, err.name, err.message); + abortRequest(); + }); + } else { + req.end(body); + } + + req.requestId = reqId; + return req; +}; diff --git a/node_modules/any-promise/.jshintrc b/node_modules/any-promise/.jshintrc new file mode 100644 index 0000000..979105e --- /dev/null +++ b/node_modules/any-promise/.jshintrc @@ -0,0 +1,4 @@ +{ + "node":true, + "strict":true +} diff --git a/node_modules/any-promise/.npmignore b/node_modules/any-promise/.npmignore new file mode 100644 index 0000000..1354abc --- /dev/null +++ b/node_modules/any-promise/.npmignore @@ -0,0 +1,7 @@ +.git* +test/ +test-browser/ +build/ +.travis.yml +*.swp +Makefile diff --git a/node_modules/any-promise/LICENSE b/node_modules/any-promise/LICENSE new file mode 100644 index 0000000..9187fe5 --- /dev/null +++ b/node_modules/any-promise/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2014-2016 Kevin Beaty + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/any-promise/README.md b/node_modules/any-promise/README.md new file mode 100644 index 0000000..174bea4 --- /dev/null +++ b/node_modules/any-promise/README.md @@ -0,0 +1,161 @@ +## Any Promise + +[![Build Status](https://secure.travis-ci.org/kevinbeaty/any-promise.svg)](http://travis-ci.org/kevinbeaty/any-promise) + +Let your library support any ES 2015 (ES6) compatible `Promise` and leave the choice to application authors. The application can *optionally* register its preferred `Promise` implementation and it will be exported when requiring `any-promise` from library code. + +If no preference is registered, defaults to the global `Promise` for newer Node.js versions. The browser version defaults to the window `Promise`, so polyfill or register as necessary. + +### Usage with global Promise: + +Assuming the global `Promise` is the desired implementation: + +```bash +# Install any libraries depending on any-promise +$ npm install mz +``` + +The installed libraries will use global Promise by default. + +```js +// in library +var Promise = require('any-promise') // the global Promise + +function promiseReturningFunction(){ + return new Promise(function(resolve, reject){...}) +} +``` + +### Usage with registration: + +Assuming `bluebird` is the desired Promise implementation: + +```bash +# Install preferred promise library +$ npm install bluebird +# Install any-promise to allow registration +$ npm install any-promise +# Install any libraries you would like to use depending on any-promise +$ npm install mz +``` + +Register your preference in the application entry point before any other `require` of packages that load `any-promise`: + +```javascript +// top of application index.js or other entry point +require('any-promise/register/bluebird') + +// -or- Equivalent to above, but allows customization of Promise library +require('any-promise/register')('bluebird', {Promise: require('bluebird')}) +``` + +Now that the implementation is registered, you can use any package depending on `any-promise`: + + +```javascript +var fsp = require('mz/fs') // mz/fs will use registered bluebird promises +var Promise = require('any-promise') // the registered bluebird promise +``` + +It is safe to call `register` multiple times, but it must always be with the same implementation. + +Again, registration is *optional*. It should only be called by the application user if overriding the global `Promise` implementation is desired. + +### Optional Application Registration + +As an application author, you can *optionally* register a preferred `Promise` implementation on application startup (before any call to `require('any-promise')`: + +You must register your preference before any call to `require('any-promise')` (by you or required packages), and only one implementation can be registered. Typically, this registration would occur at the top of the application entry point. + + +#### Registration shortcuts + +If you are using a known `Promise` implementation, you can register your preference with a shortcut: + + +```js +require('any-promise/register/bluebird') +// -or- +import 'any-promise/register/q'; +``` + +Shortcut registration is the preferred registration method as it works in the browser and Node.js. It is also convenient for using with `import` and many test runners, that offer a `--require` flag: + +``` +$ ava --require=any-promise/register/bluebird test.js +``` + +Current known implementations include `bluebird`, `q`, `when`, `rsvp`, `es6-promise`, `promise`, `native-promise-only`, `pinkie`, `vow` and `lie`. If you are not using a known implementation, you can use another registration method described below. + + +#### Basic Registration + +As an alternative to registration shortcuts, you can call the `register` function with the preferred `Promise` implementation. The benefit of this approach is that a `Promise` library can be required by name without being a known implementation. This approach does NOT work in the browser. To use `any-promise` in the browser use either registration shortcuts or specify the `Promise` constructor using advanced registration (see below). + +```javascript +require('any-promise/register')('when') +// -or- require('any-promise/register')('any other ES6 compatible library (known or otherwise)') +``` + +This registration method will try to detect the `Promise` constructor from requiring the specified implementation. If you would like to specify your own constructor, see advanced registration. + + +#### Advanced Registration + +To use the browser version, you should either install a polyfill or explicitly register the `Promise` constructor: + +```javascript +require('any-promise/register')('bluebird', {Promise: require('bluebird')}) +``` + +This could also be used for registering a custom `Promise` implementation or subclass. + +Your preference will be registered globally, allowing a single registration even if multiple versions of `any-promise` are installed in the NPM dependency tree or are using multiple bundled JavaScript files in the browser. You can bypass this global registration in options: + + +```javascript +require('../register')('es6-promise', {Promise: require('es6-promise').Promise, global: false}) +``` + +### Library Usage + +To use any `Promise` constructor, simply require it: + +```javascript +var Promise = require('any-promise'); + +return Promise + .all([xf, f, init, coll]) + .then(fn); + + +return new Promise(function(resolve, reject){ + try { + resolve(item); + } catch(e){ + reject(e); + } +}); + +``` + +Except noted below, libraries using `any-promise` should only use [documented](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) functions as there is no guarantee which implementation will be chosen by the application author. Libraries should never call `register`, only the application user should call if desired. + + +#### Advanced Library Usage + +If your library needs to branch code based on the registered implementation, you can retrieve it using `var impl = require('any-promise/implementation')`, where `impl` will be the package name (`"bluebird"`, `"when"`, etc.) if registered, `"global.Promise"` if using the global version on Node.js, or `"window.Promise"` if using the browser version. You should always include a default case, as there is no guarantee what package may be registered. + + +### Support for old Node.js versions + +Node.js versions prior to `v0.12` may have contained buggy versions of the global `Promise`. For this reason, the global `Promise` is not loaded automatically for these old versions. If using `any-promise` in Node.js versions versions `<= v0.12`, the user should register a desired implementation. + +If an implementation is not registered, `any-promise` will attempt to discover an installed `Promise` implementation. If no implementation can be found, an error will be thrown on `require('any-promise')`. While the auto-discovery usually avoids errors, it is non-deterministic. It is recommended that the user always register a preferred implementation for older Node.js versions. + +This auto-discovery is only available for Node.jS versions prior to `v0.12`. Any newer versions will always default to the global `Promise` implementation. + +### Related + +- [any-observable](https://github.com/sindresorhus/any-observable) - `any-promise` for Observables. + diff --git a/node_modules/any-promise/implementation.d.ts b/node_modules/any-promise/implementation.d.ts new file mode 100644 index 0000000..c331a56 --- /dev/null +++ b/node_modules/any-promise/implementation.d.ts @@ -0,0 +1,3 @@ +declare var implementation: string; + +export = implementation; diff --git a/node_modules/any-promise/implementation.js b/node_modules/any-promise/implementation.js new file mode 100644 index 0000000..a45ae94 --- /dev/null +++ b/node_modules/any-promise/implementation.js @@ -0,0 +1 @@ +module.exports = require('./register')().implementation diff --git a/node_modules/any-promise/index.d.ts b/node_modules/any-promise/index.d.ts new file mode 100644 index 0000000..9f646c5 --- /dev/null +++ b/node_modules/any-promise/index.d.ts @@ -0,0 +1,73 @@ +declare class Promise <R> implements Promise.Thenable <R> { + /** + * If you call resolve in the body of the callback passed to the constructor, + * your promise is fulfilled with result object passed to resolve. + * If you call reject your promise is rejected with the object passed to resolve. + * For consistency and debugging (eg stack traces), obj should be an instanceof Error. + * Any errors thrown in the constructor callback will be implicitly passed to reject(). + */ + constructor (callback: (resolve : (value?: R | Promise.Thenable<R>) => void, reject: (error?: any) => void) => void); + + /** + * onFulfilled is called when/if "promise" resolves. onRejected is called when/if "promise" rejects. + * Both are optional, if either/both are omitted the next onFulfilled/onRejected in the chain is called. + * Both callbacks have a single parameter , the fulfillment value or rejection reason. + * "then" returns a new promise equivalent to the value you return from onFulfilled/onRejected after being passed through Promise.resolve. + * If an error is thrown in the callback, the returned promise rejects with that error. + * + * @param onFulfilled called when/if "promise" resolves + * @param onRejected called when/if "promise" rejects + */ + then <U> (onFulfilled?: (value: R) => U | Promise.Thenable<U>, onRejected?: (error: any) => U | Promise.Thenable<U>): Promise<U>; + then <U> (onFulfilled?: (value: R) => U | Promise.Thenable<U>, onRejected?: (error: any) => void): Promise<U>; + + /** + * Sugar for promise.then(undefined, onRejected) + * + * @param onRejected called when/if "promise" rejects + */ + catch <U> (onRejected?: (error: any) => U | Promise.Thenable<U>): Promise<U>; + + /** + * Make a new promise from the thenable. + * A thenable is promise-like in as far as it has a "then" method. + */ + static resolve (): Promise<void>; + static resolve <R> (value: R | Promise.Thenable<R>): Promise<R>; + + /** + * Make a promise that rejects to obj. For consistency and debugging (eg stack traces), obj should be an instanceof Error + */ + static reject <R> (error: any): Promise<R>; + + /** + * Make a promise that fulfills when every item in the array fulfills, and rejects if (and when) any item rejects. + * the array passed to all can be a mixture of promise-like objects and other objects. + * The fulfillment value is an array (in order) of fulfillment values. The rejection value is the first rejection value. + */ + static all <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>, T4 | Promise.Thenable <T4>, T5 | Promise.Thenable<T5>, T6 | Promise.Thenable<T6>, T7 | Promise.Thenable<T7>, T8 | Promise.Thenable<T8>, T9 | Promise.Thenable<T9>, T10 | Promise.Thenable<T10>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; + static all <T1, T2, T3, T4, T5, T6, T7, T8, T9> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>, T4 | Promise.Thenable <T4>, T5 | Promise.Thenable<T5>, T6 | Promise.Thenable<T6>, T7 | Promise.Thenable<T7>, T8 | Promise.Thenable<T8>, T9 | Promise.Thenable<T9>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; + static all <T1, T2, T3, T4, T5, T6, T7, T8> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>, T4 | Promise.Thenable <T4>, T5 | Promise.Thenable<T5>, T6 | Promise.Thenable<T6>, T7 | Promise.Thenable<T7>, T8 | Promise.Thenable<T8>]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; + static all <T1, T2, T3, T4, T5, T6, T7> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>, T4 | Promise.Thenable <T4>, T5 | Promise.Thenable<T5>, T6 | Promise.Thenable<T6>, T7 | Promise.Thenable<T7>]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; + static all <T1, T2, T3, T4, T5, T6> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>, T4 | Promise.Thenable <T4>, T5 | Promise.Thenable<T5>, T6 | Promise.Thenable<T6>]): Promise<[T1, T2, T3, T4, T5, T6]>; + static all <T1, T2, T3, T4, T5> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>, T4 | Promise.Thenable <T4>, T5 | Promise.Thenable<T5>]): Promise<[T1, T2, T3, T4, T5]>; + static all <T1, T2, T3, T4> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>, T4 | Promise.Thenable <T4>]): Promise<[T1, T2, T3, T4]>; + static all <T1, T2, T3> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>, T3 | Promise.Thenable<T3>]): Promise<[T1, T2, T3]>; + static all <T1, T2> (values: [T1 | Promise.Thenable<T1>, T2 | Promise.Thenable<T2>]): Promise<[T1, T2]>; + static all <T1> (values: [T1 | Promise.Thenable<T1>]): Promise<[T1]>; + static all <TAll> (values: Array<TAll | Promise.Thenable<TAll>>): Promise<TAll[]>; + + /** + * Make a Promise that fulfills when any item fulfills, and rejects if any item rejects. + */ + static race <R> (promises: (R | Promise.Thenable<R>)[]): Promise<R>; +} + +declare namespace Promise { + export interface Thenable <R> { + then <U> (onFulfilled?: (value: R) => U | Thenable<U>, onRejected?: (error: any) => U | Thenable<U>): Thenable<U>; + then <U> (onFulfilled?: (value: R) => U | Thenable<U>, onRejected?: (error: any) => void): Thenable<U>; + } +} + +export = Promise; diff --git a/node_modules/any-promise/index.js b/node_modules/any-promise/index.js new file mode 100644 index 0000000..74b8548 --- /dev/null +++ b/node_modules/any-promise/index.js @@ -0,0 +1 @@ +module.exports = require('./register')().Promise diff --git a/node_modules/any-promise/loader.js b/node_modules/any-promise/loader.js new file mode 100644 index 0000000..e164914 --- /dev/null +++ b/node_modules/any-promise/loader.js @@ -0,0 +1,78 @@ +"use strict" + // global key for user preferred registration +var REGISTRATION_KEY = '@@any-promise/REGISTRATION', + // Prior registration (preferred or detected) + registered = null + +/** + * Registers the given implementation. An implementation must + * be registered prior to any call to `require("any-promise")`, + * typically on application load. + * + * If called with no arguments, will return registration in + * following priority: + * + * For Node.js: + * + * 1. Previous registration + * 2. global.Promise if node.js version >= 0.12 + * 3. Auto detected promise based on first sucessful require of + * known promise libraries. Note this is a last resort, as the + * loaded library is non-deterministic. node.js >= 0.12 will + * always use global.Promise over this priority list. + * 4. Throws error. + * + * For Browser: + * + * 1. Previous registration + * 2. window.Promise + * 3. Throws error. + * + * Options: + * + * Promise: Desired Promise constructor + * global: Boolean - Should the registration be cached in a global variable to + * allow cross dependency/bundle registration? (default true) + */ +module.exports = function(root, loadImplementation){ + return function register(implementation, opts){ + implementation = implementation || null + opts = opts || {} + // global registration unless explicitly {global: false} in options (default true) + var registerGlobal = opts.global !== false; + + // load any previous global registration + if(registered === null && registerGlobal){ + registered = root[REGISTRATION_KEY] || null + } + + if(registered !== null + && implementation !== null + && registered.implementation !== implementation){ + // Throw error if attempting to redefine implementation + throw new Error('any-promise already defined as "'+registered.implementation+ + '". You can only register an implementation before the first '+ + ' call to require("any-promise") and an implementation cannot be changed') + } + + if(registered === null){ + // use provided implementation + if(implementation !== null && typeof opts.Promise !== 'undefined'){ + registered = { + Promise: opts.Promise, + implementation: implementation + } + } else { + // require implementation if implementation is specified but not provided + registered = loadImplementation(implementation) + } + + if(registerGlobal){ + // register preference globally in case multiple installations + root[REGISTRATION_KEY] = registered + } + } + + return registered + } +} diff --git a/node_modules/any-promise/optional.js b/node_modules/any-promise/optional.js new file mode 100644 index 0000000..f388942 --- /dev/null +++ b/node_modules/any-promise/optional.js @@ -0,0 +1,6 @@ +"use strict"; +try { + module.exports = require('./register')().Promise || null +} catch(e) { + module.exports = null +} diff --git a/node_modules/any-promise/package.json b/node_modules/any-promise/package.json new file mode 100644 index 0000000..5baf14c --- /dev/null +++ b/node_modules/any-promise/package.json @@ -0,0 +1,45 @@ +{ + "name": "any-promise", + "version": "1.3.0", + "description": "Resolve any installed ES6 compatible promise", + "main": "index.js", + "typings": "index.d.ts", + "browser": { + "./register.js": "./register-shim.js" + }, + "scripts": { + "test": "ava" + }, + "repository": { + "type": "git", + "url": "https://github.com/kevinbeaty/any-promise" + }, + "keywords": [ + "promise", + "es6" + ], + "author": "Kevin Beaty", + "license": "MIT", + "bugs": { + "url": "https://github.com/kevinbeaty/any-promise/issues" + }, + "homepage": "http://github.com/kevinbeaty/any-promise", + "dependencies": {}, + "devDependencies": { + "ava": "^0.14.0", + "bluebird": "^3.0.0", + "es6-promise": "^3.0.0", + "is-promise": "^2.0.0", + "lie": "^3.0.0", + "mocha": "^2.0.0", + "native-promise-only": "^0.8.0", + "phantomjs-prebuilt": "^2.0.0", + "pinkie": "^2.0.0", + "promise": "^7.0.0", + "q": "^1.0.0", + "rsvp": "^3.0.0", + "vow": "^0.4.0", + "when": "^3.0.0", + "zuul": "^3.0.0" + } +} diff --git a/node_modules/any-promise/register-shim.js b/node_modules/any-promise/register-shim.js new file mode 100644 index 0000000..9049405 --- /dev/null +++ b/node_modules/any-promise/register-shim.js @@ -0,0 +1,18 @@ +"use strict"; +module.exports = require('./loader')(window, loadImplementation) + +/** + * Browser specific loadImplementation. Always uses `window.Promise` + * + * To register a custom implementation, must register with `Promise` option. + */ +function loadImplementation(){ + if(typeof window.Promise === 'undefined'){ + throw new Error("any-promise browser requires a polyfill or explicit registration"+ + " e.g: require('any-promise/register/bluebird')") + } + return { + Promise: window.Promise, + implementation: 'window.Promise' + } +} diff --git a/node_modules/any-promise/register.d.ts b/node_modules/any-promise/register.d.ts new file mode 100644 index 0000000..97f2fc0 --- /dev/null +++ b/node_modules/any-promise/register.d.ts @@ -0,0 +1,17 @@ +import Promise = require('./index'); + +declare function register (module?: string, options?: register.Options): register.Register; + +declare namespace register { + export interface Register { + Promise: typeof Promise; + implementation: string; + } + + export interface Options { + Promise?: typeof Promise; + global?: boolean + } +} + +export = register; diff --git a/node_modules/any-promise/register.js b/node_modules/any-promise/register.js new file mode 100644 index 0000000..255c6e2 --- /dev/null +++ b/node_modules/any-promise/register.js @@ -0,0 +1,94 @@ +"use strict" +module.exports = require('./loader')(global, loadImplementation); + +/** + * Node.js version of loadImplementation. + * + * Requires the given implementation and returns the registration + * containing {Promise, implementation} + * + * If implementation is undefined or global.Promise, loads it + * Otherwise uses require + */ +function loadImplementation(implementation){ + var impl = null + + if(shouldPreferGlobalPromise(implementation)){ + // if no implementation or env specified use global.Promise + impl = { + Promise: global.Promise, + implementation: 'global.Promise' + } + } else if(implementation){ + // if implementation specified, require it + var lib = require(implementation) + impl = { + Promise: lib.Promise || lib, + implementation: implementation + } + } else { + // try to auto detect implementation. This is non-deterministic + // and should prefer other branches, but this is our last chance + // to load something without throwing error + impl = tryAutoDetect() + } + + if(impl === null){ + throw new Error('Cannot find any-promise implementation nor'+ + ' global.Promise. You must install polyfill or call'+ + ' require("any-promise/register") with your preferred'+ + ' implementation, e.g. require("any-promise/register/bluebird")'+ + ' on application load prior to any require("any-promise").') + } + + return impl +} + +/** + * Determines if the global.Promise should be preferred if an implementation + * has not been registered. + */ +function shouldPreferGlobalPromise(implementation){ + if(implementation){ + return implementation === 'global.Promise' + } else if(typeof global.Promise !== 'undefined'){ + // Load global promise if implementation not specified + // Versions < 0.11 did not have global Promise + // Do not use for version < 0.12 as version 0.11 contained buggy versions + var version = (/v(\d+)\.(\d+)\.(\d+)/).exec(process.version) + return !(version && +version[1] == 0 && +version[2] < 12) + } + + // do not have global.Promise or another implementation was specified + return false +} + +/** + * Look for common libs as last resort there is no guarantee that + * this will return a desired implementation or even be deterministic. + * The priority is also nearly arbitrary. We are only doing this + * for older versions of Node.js <0.12 that do not have a reasonable + * global.Promise implementation and we the user has not registered + * the preference. This preserves the behavior of any-promise <= 0.1 + * and may be deprecated or removed in the future + */ +function tryAutoDetect(){ + var libs = [ + "es6-promise", + "promise", + "native-promise-only", + "bluebird", + "rsvp", + "when", + "q", + "pinkie", + "lie", + "vow"] + var i = 0, len = libs.length + for(; i < len; i++){ + try { + return loadImplementation(libs[i]) + } catch(e){} + } + return null +} diff --git a/node_modules/any-promise/register/bluebird.d.ts b/node_modules/any-promise/register/bluebird.d.ts new file mode 100644 index 0000000..336ce12 --- /dev/null +++ b/node_modules/any-promise/register/bluebird.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/bluebird.js b/node_modules/any-promise/register/bluebird.js new file mode 100644 index 0000000..de0f87e --- /dev/null +++ b/node_modules/any-promise/register/bluebird.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('bluebird', {Promise: require('bluebird')}) diff --git a/node_modules/any-promise/register/es6-promise.d.ts b/node_modules/any-promise/register/es6-promise.d.ts new file mode 100644 index 0000000..336ce12 --- /dev/null +++ b/node_modules/any-promise/register/es6-promise.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/es6-promise.js b/node_modules/any-promise/register/es6-promise.js new file mode 100644 index 0000000..59bd55b --- /dev/null +++ b/node_modules/any-promise/register/es6-promise.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('es6-promise', {Promise: require('es6-promise').Promise}) diff --git a/node_modules/any-promise/register/lie.d.ts b/node_modules/any-promise/register/lie.d.ts new file mode 100644 index 0000000..336ce12 --- /dev/null +++ b/node_modules/any-promise/register/lie.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/lie.js b/node_modules/any-promise/register/lie.js new file mode 100644 index 0000000..7d305ca --- /dev/null +++ b/node_modules/any-promise/register/lie.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('lie', {Promise: require('lie')}) diff --git a/node_modules/any-promise/register/native-promise-only.d.ts b/node_modules/any-promise/register/native-promise-only.d.ts new file mode 100644 index 0000000..336ce12 --- /dev/null +++ b/node_modules/any-promise/register/native-promise-only.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/native-promise-only.js b/node_modules/any-promise/register/native-promise-only.js new file mode 100644 index 0000000..70a5a5e --- /dev/null +++ b/node_modules/any-promise/register/native-promise-only.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('native-promise-only', {Promise: require('native-promise-only')}) diff --git a/node_modules/any-promise/register/pinkie.d.ts b/node_modules/any-promise/register/pinkie.d.ts new file mode 100644 index 0000000..336ce12 --- /dev/null +++ b/node_modules/any-promise/register/pinkie.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/pinkie.js b/node_modules/any-promise/register/pinkie.js new file mode 100644 index 0000000..caaf98a --- /dev/null +++ b/node_modules/any-promise/register/pinkie.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('pinkie', {Promise: require('pinkie')}) diff --git a/node_modules/any-promise/register/promise.d.ts b/node_modules/any-promise/register/promise.d.ts new file mode 100644 index 0000000..336ce12 --- /dev/null +++ b/node_modules/any-promise/register/promise.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/promise.js b/node_modules/any-promise/register/promise.js new file mode 100644 index 0000000..746620d --- /dev/null +++ b/node_modules/any-promise/register/promise.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('promise', {Promise: require('promise')}) diff --git a/node_modules/any-promise/register/q.d.ts b/node_modules/any-promise/register/q.d.ts new file mode 100644 index 0000000..336ce12 --- /dev/null +++ b/node_modules/any-promise/register/q.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/q.js b/node_modules/any-promise/register/q.js new file mode 100644 index 0000000..0fc633a --- /dev/null +++ b/node_modules/any-promise/register/q.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('q', {Promise: require('q').Promise}) diff --git a/node_modules/any-promise/register/rsvp.d.ts b/node_modules/any-promise/register/rsvp.d.ts new file mode 100644 index 0000000..336ce12 --- /dev/null +++ b/node_modules/any-promise/register/rsvp.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/rsvp.js b/node_modules/any-promise/register/rsvp.js new file mode 100644 index 0000000..02b1318 --- /dev/null +++ b/node_modules/any-promise/register/rsvp.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('rsvp', {Promise: require('rsvp').Promise}) diff --git a/node_modules/any-promise/register/vow.d.ts b/node_modules/any-promise/register/vow.d.ts new file mode 100644 index 0000000..336ce12 --- /dev/null +++ b/node_modules/any-promise/register/vow.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/vow.js b/node_modules/any-promise/register/vow.js new file mode 100644 index 0000000..5b6868c --- /dev/null +++ b/node_modules/any-promise/register/vow.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('vow', {Promise: require('vow').Promise}) diff --git a/node_modules/any-promise/register/when.d.ts b/node_modules/any-promise/register/when.d.ts new file mode 100644 index 0000000..336ce12 --- /dev/null +++ b/node_modules/any-promise/register/when.d.ts @@ -0,0 +1 @@ +export {} diff --git a/node_modules/any-promise/register/when.js b/node_modules/any-promise/register/when.js new file mode 100644 index 0000000..d91c13d --- /dev/null +++ b/node_modules/any-promise/register/when.js @@ -0,0 +1,2 @@ +'use strict'; +require('../register')('when', {Promise: require('when').Promise}) diff --git a/node_modules/async/CHANGELOG.md b/node_modules/async/CHANGELOG.md new file mode 100644 index 0000000..ce990a5 --- /dev/null +++ b/node_modules/async/CHANGELOG.md @@ -0,0 +1,351 @@ +# v3.2.5 +- Ensure `Error` objects such as `AggregateError` are propagated without modification (#1920) + +# v3.2.4 +- Fix a bug in `priorityQueue` where it didn't wait for the result. (#1725) +- Fix a bug where `unshiftAsync` was included in `priorityQueue`. (#1790) + +# v3.2.3 +- Fix bugs in comment parsing in `autoInject`. (#1767, #1780) + +# v3.2.2 +- Fix potential prototype pollution exploit + +# v3.2.1 +- Use `queueMicrotask` if available to the environment (#1761) +- Minor perf improvement in `priorityQueue` (#1727) +- More examples in documentation (#1726) +- Various doc fixes (#1708, #1712, #1717, #1740, #1739, #1749, #1756) +- Improved test coverage (#1754) + +# v3.2.0 +- Fix a bug in Safari related to overwriting `func.name` +- Remove built-in browserify configuration (#1653) +- Varios doc fixes (#1688, #1703, #1704) + +# v3.1.1 +- Allow redefining `name` property on wrapped functions. + +# v3.1.0 + +- Added `q.pushAsync` and `q.unshiftAsync`, analagous to `q.push` and `q.unshift`, except they always do not accept a callback, and reject if processing the task errors. (#1659) +- Promises returned from `q.push` and `q.unshift` when a callback is not passed now resolve even if an error ocurred. (#1659) +- Fixed a parsing bug in `autoInject` with complicated function bodies (#1663) +- Added ES6+ configuration for Browserify bundlers (#1653) +- Various doc fixes (#1664, #1658, #1665, #1652) + +# v3.0.1 + +## Bug fixes +- Fixed a regression where arrays passed to `queue` and `cargo` would be completely flattened. (#1645) +- Clarified Async's browser support (#1643) + + +# v3.0.0 + +The `async`/`await` release! + +There are a lot of new features and subtle breaking changes in this major version, but the biggest feature is that most Async methods return a Promise if you omit the callback, meaning you can `await` them from within an `async` function. + +```js +const results = await async.mapLimit(urls, 5, async url => { + const resp = await fetch(url) + return resp.body +}) +``` + +## Breaking Changes +- Most Async methods return a Promise when the final callback is omitted, making them `await`-able! (#1572) +- We are now making heavy use of ES2015 features, this means we have dropped out-of-the-box support for Node 4 and earlier, and many old versions of browsers. (#1541, #1553) +- In `queue`, `priorityQueue`, `cargo` and `cargoQueue`, the "event"-style methods, like `q.drain` and `q.saturated` are now methods that register a callback, rather than properties you assign a callback to. They are now of the form `q.drain(callback)`. If you do not pass a callback a Promise will be returned for the next occurrence of the event, making them `await`-able, e.g. `await q.drain()`. (#1586, #1641) +- Calling `callback(false)` will cancel an async method, preventing further iteration and callback calls. This is useful for preventing memory leaks when you break out of an async flow by calling an outer callback. (#1064, #1542) +- `during` and `doDuring` have been removed, and instead `whilst`, `doWhilst`, `until` and `doUntil` now have asynchronous `test` functions. (#850, #1557) +- `limits` of less than 1 now cause an error to be thrown in queues and collection methods. (#1249, #1552) +- `memoize` no longer memoizes errors (#1465, #1466) +- `applyEach`/`applyEachSeries` have a simpler interface, to make them more easily type-able. It always returns a function that takes in a single callback argument. If that callback is omitted, a promise is returned, making it awaitable. (#1228, #1640) + +## New Features +- Async generators are now supported in all the Collection methods. (#1560) +- Added `cargoQueue`, a queue with both `concurrency` and `payload` size parameters. (#1567) +- Queue objects returned from `queue` now have a `Symbol.iterator` method, meaning they can be iterated over to inspect the current list of items in the queue. (#1459, #1556) +- A ESM-flavored `async.mjs` is included in the `async` package. This is described in the `package.json` `"module"` field, meaning it should be automatically used by Webpack and other compatible bundlers. + +## Bug fixes +- Better handle arbitrary error objects in `asyncify` (#1568, #1569) + +## Other +- Removed Lodash as a dependency (#1283, #1528) +- Miscellaneous docs fixes (#1393, #1501, #1540, #1543, #1558, #1563, #1564, #1579, #1581) +- Miscellaneous test fixes (#1538) + +------- + +# v2.6.1 +- Updated lodash to prevent `npm audit` warnings. (#1532, #1533) +- Made `async-es` more optimized for webpack users (#1517) +- Fixed a stack overflow with large collections and a synchronous iterator (#1514) +- Various small fixes/chores (#1505, #1511, #1527, #1530) + +# v2.6.0 +- Added missing aliases for many methods. Previously, you could not (e.g.) `require('async/find')` or use `async.anyLimit`. (#1483) +- Improved `queue` performance. (#1448, #1454) +- Add missing sourcemap (#1452, #1453) +- Various doc updates (#1448, #1471, #1483) + +# v2.5.0 +- Added `concatLimit`, the `Limit` equivalent of [`concat`](https://caolan.github.io/async/docs.html#concat) ([#1426](https://github.com/caolan/async/issues/1426), [#1430](https://github.com/caolan/async/pull/1430)) +- `concat` improvements: it now preserves order, handles falsy values and the `iteratee` callback takes a variable number of arguments ([#1437](https://github.com/caolan/async/issues/1437), [#1436](https://github.com/caolan/async/pull/1436)) +- Fixed an issue in `queue` where there was a size discrepancy between `workersList().length` and `running()` ([#1428](https://github.com/caolan/async/issues/1428), [#1429](https://github.com/caolan/async/pull/1429)) +- Various doc fixes ([#1422](https://github.com/caolan/async/issues/1422), [#1424](https://github.com/caolan/async/pull/1424)) + +# v2.4.1 +- Fixed a bug preventing functions wrapped with `timeout()` from being re-used. ([#1418](https://github.com/caolan/async/issues/1418), [#1419](https://github.com/caolan/async/issues/1419)) + +# v2.4.0 +- Added `tryEach`, for running async functions in parallel, where you only expect one to succeed. ([#1365](https://github.com/caolan/async/issues/1365), [#687](https://github.com/caolan/async/issues/687)) +- Improved performance, most notably in `parallel` and `waterfall` ([#1395](https://github.com/caolan/async/issues/1395)) +- Added `queue.remove()`, for removing items in a `queue` ([#1397](https://github.com/caolan/async/issues/1397), [#1391](https://github.com/caolan/async/issues/1391)) +- Fixed using `eval`, preventing Async from running in pages with Content Security Policy ([#1404](https://github.com/caolan/async/issues/1404), [#1403](https://github.com/caolan/async/issues/1403)) +- Fixed errors thrown in an `asyncify`ed function's callback being caught by the underlying Promise ([#1408](https://github.com/caolan/async/issues/1408)) +- Fixed timing of `queue.empty()` ([#1367](https://github.com/caolan/async/issues/1367)) +- Various doc fixes ([#1314](https://github.com/caolan/async/issues/1314), [#1394](https://github.com/caolan/async/issues/1394), [#1412](https://github.com/caolan/async/issues/1412)) + +# v2.3.0 +- Added support for ES2017 `async` functions. Wherever you can pass a Node-style/CPS function that uses a callback, you can also pass an `async` function. Previously, you had to wrap `async` functions with `asyncify`. The caveat is that it will only work if `async` functions are supported natively in your environment, transpiled implementations can't be detected. ([#1386](https://github.com/caolan/async/issues/1386), [#1390](https://github.com/caolan/async/issues/1390)) +- Small doc fix ([#1392](https://github.com/caolan/async/issues/1392)) + +# v2.2.0 +- Added `groupBy`, and the `Series`/`Limit` equivalents, analogous to [`_.groupBy`](http://lodash.com/docs#groupBy) ([#1364](https://github.com/caolan/async/issues/1364)) +- Fixed `transform` bug when `callback` was not passed ([#1381](https://github.com/caolan/async/issues/1381)) +- Added note about `reflect` to `parallel` docs ([#1385](https://github.com/caolan/async/issues/1385)) + +# v2.1.5 +- Fix `auto` bug when function names collided with Array.prototype ([#1358](https://github.com/caolan/async/issues/1358)) +- Improve some error messages ([#1349](https://github.com/caolan/async/issues/1349)) +- Avoid stack overflow case in queue +- Fixed an issue in `some`, `every` and `find` where processing would continue after the result was determined. +- Cleanup implementations of `some`, `every` and `find` + +# v2.1.3 +- Make bundle size smaller +- Create optimized hotpath for `filter` in array case. + +# v2.1.2 +- Fixed a stackoverflow bug with `detect`, `some`, `every` on large inputs ([#1293](https://github.com/caolan/async/issues/1293)). + +# v2.1.0 + +- `retry` and `retryable` now support an optional `errorFilter` function that determines if the `task` should retry on the error ([#1256](https://github.com/caolan/async/issues/1256), [#1261](https://github.com/caolan/async/issues/1261)) +- Optimized array iteration in `race`, `cargo`, `queue`, and `priorityQueue` ([#1253](https://github.com/caolan/async/issues/1253)) +- Added alias documentation to doc site ([#1251](https://github.com/caolan/async/issues/1251), [#1254](https://github.com/caolan/async/issues/1254)) +- Added [BootStrap scrollspy](http://getbootstrap.com/javascript/#scrollspy) to docs to highlight in the sidebar the current method being viewed ([#1289](https://github.com/caolan/async/issues/1289), [#1300](https://github.com/caolan/async/issues/1300)) +- Various minor doc fixes ([#1263](https://github.com/caolan/async/issues/1263), [#1264](https://github.com/caolan/async/issues/1264), [#1271](https://github.com/caolan/async/issues/1271), [#1278](https://github.com/caolan/async/issues/1278), [#1280](https://github.com/caolan/async/issues/1280), [#1282](https://github.com/caolan/async/issues/1282), [#1302](https://github.com/caolan/async/issues/1302)) + +# v2.0.1 + +- Significantly optimized all iteration based collection methods such as `each`, `map`, `filter`, etc ([#1245](https://github.com/caolan/async/issues/1245), [#1246](https://github.com/caolan/async/issues/1246), [#1247](https://github.com/caolan/async/issues/1247)). + +# v2.0.0 + +Lots of changes here! + +First and foremost, we have a slick new [site for docs](https://caolan.github.io/async/). Special thanks to [**@hargasinski**](https://github.com/hargasinski) for his work converting our old docs to `jsdoc` format and implementing the new website. Also huge ups to [**@ivanseidel**](https://github.com/ivanseidel) for designing our new logo. It was a long process for both of these tasks, but I think these changes turned out extraordinary well. + +The biggest feature is modularization. You can now `require("async/series")` to only require the `series` function. Every Async library function is available this way. You still can `require("async")` to require the entire library, like you could do before. + +We also provide Async as a collection of ES2015 modules. You can now `import {each} from 'async-es'` or `import waterfall from 'async-es/waterfall'`. If you are using only a few Async functions, and are using a ES bundler such as Rollup, this can significantly lower your build size. + +Major thanks to [**@Kikobeats**](github.com/Kikobeats), [**@aearly**](github.com/aearly) and [**@megawac**](github.com/megawac) for doing the majority of the modularization work, as well as [**@jdalton**](github.com/jdalton) and [**@Rich-Harris**](github.com/Rich-Harris) for advisory work on the general modularization strategy. + +Another one of the general themes of the 2.0 release is standardization of what an "async" function is. We are now more strictly following the node-style continuation passing style. That is, an async function is a function that: + +1. Takes a variable number of arguments +2. The last argument is always a callback +3. The callback can accept any number of arguments +4. The first argument passed to the callback will be treated as an error result, if the argument is truthy +5. Any number of result arguments can be passed after the "error" argument +6. The callback is called once and exactly once, either on the same tick or later tick of the JavaScript event loop. + +There were several cases where Async accepted some functions that did not strictly have these properties, most notably `auto`, `every`, `some`, `filter`, `reject` and `detect`. + +Another theme is performance. We have eliminated internal deferrals in all cases where they make sense. For example, in `waterfall` and `auto`, there was a `setImmediate` between each task -- these deferrals have been removed. A `setImmediate` call can add up to 1ms of delay. This might not seem like a lot, but it can add up if you are using many Async functions in the course of processing a HTTP request, for example. Nearly all asynchronous functions that do I/O already have some sort of deferral built in, so the extra deferral is unnecessary. The trade-off of this change is removing our built-in stack-overflow defense. Many synchronous callback calls in series can quickly overflow the JS call stack. If you do have a function that is sometimes synchronous (calling its callback on the same tick), and are running into stack overflows, wrap it with `async.ensureAsync()`. + +Another big performance win has been re-implementing `queue`, `cargo`, and `priorityQueue` with [doubly linked lists](https://en.wikipedia.org/wiki/Doubly_linked_list) instead of arrays. This has lead to queues being an order of [magnitude faster on large sets of tasks](https://github.com/caolan/async/pull/1205). + +## New Features + +- Async is now modularized. Individual functions can be `require()`d from the main package. (`require('async/auto')`) ([#984](https://github.com/caolan/async/issues/984), [#996](https://github.com/caolan/async/issues/996)) +- Async is also available as a collection of ES2015 modules in the new `async-es` package. (`import {forEachSeries} from 'async-es'`) ([#984](https://github.com/caolan/async/issues/984), [#996](https://github.com/caolan/async/issues/996)) +- Added `race`, analogous to `Promise.race()`. It will run an array of async tasks in parallel and will call its callback with the result of the first task to respond. ([#568](https://github.com/caolan/async/issues/568), [#1038](https://github.com/caolan/async/issues/1038)) +- Collection methods now accept ES2015 iterators. Maps, Sets, and anything that implements the iterator spec can now be passed directly to `each`, `map`, `parallel`, etc.. ([#579](https://github.com/caolan/async/issues/579), [#839](https://github.com/caolan/async/issues/839), [#1074](https://github.com/caolan/async/issues/1074)) +- Added `mapValues`, for mapping over the properties of an object and returning an object with the same keys. ([#1157](https://github.com/caolan/async/issues/1157), [#1177](https://github.com/caolan/async/issues/1177)) +- Added `timeout`, a wrapper for an async function that will make the task time-out after the specified time. ([#1007](https://github.com/caolan/async/issues/1007), [#1027](https://github.com/caolan/async/issues/1027)) +- Added `reflect` and `reflectAll`, analagous to [`Promise.reflect()`](http://bluebirdjs.com/docs/api/reflect.html), a wrapper for async tasks that always succeeds, by gathering results and errors into an object. ([#942](https://github.com/caolan/async/issues/942), [#1012](https://github.com/caolan/async/issues/1012), [#1095](https://github.com/caolan/async/issues/1095)) +- `constant` supports dynamic arguments -- it will now always use its last argument as the callback. ([#1016](https://github.com/caolan/async/issues/1016), [#1052](https://github.com/caolan/async/issues/1052)) +- `setImmediate` and `nextTick` now support arguments to partially apply to the deferred function, like the node-native versions do. ([#940](https://github.com/caolan/async/issues/940), [#1053](https://github.com/caolan/async/issues/1053)) +- `auto` now supports resolving cyclic dependencies using [Kahn's algorithm](https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm) ([#1140](https://github.com/caolan/async/issues/1140)). +- Added `autoInject`, a relative of `auto` that automatically spreads a task's dependencies as arguments to the task function. ([#608](https://github.com/caolan/async/issues/608), [#1055](https://github.com/caolan/async/issues/1055), [#1099](https://github.com/caolan/async/issues/1099), [#1100](https://github.com/caolan/async/issues/1100)) +- You can now limit the concurrency of `auto` tasks. ([#635](https://github.com/caolan/async/issues/635), [#637](https://github.com/caolan/async/issues/637)) +- Added `retryable`, a relative of `retry` that wraps an async function, making it retry when called. ([#1058](https://github.com/caolan/async/issues/1058)) +- `retry` now supports specifying a function that determines the next time interval, useful for exponential backoff, logging and other retry strategies. ([#1161](https://github.com/caolan/async/issues/1161)) +- `retry` will now pass all of the arguments the task function was resolved with to the callback ([#1231](https://github.com/caolan/async/issues/1231)). +- Added `q.unsaturated` -- callback called when a `queue`'s number of running workers falls below a threshold. ([#868](https://github.com/caolan/async/issues/868), [#1030](https://github.com/caolan/async/issues/1030), [#1033](https://github.com/caolan/async/issues/1033), [#1034](https://github.com/caolan/async/issues/1034)) +- Added `q.error` -- a callback called whenever a `queue` task calls its callback with an error. ([#1170](https://github.com/caolan/async/issues/1170)) +- `applyEach` and `applyEachSeries` now pass results to the final callback. ([#1088](https://github.com/caolan/async/issues/1088)) + +## Breaking changes + +- Calling a callback more than once is considered an error, and an error will be thrown. This had an explicit breaking change in `waterfall`. If you were relying on this behavior, you should more accurately represent your control flow as an event emitter or stream. ([#814](https://github.com/caolan/async/issues/814), [#815](https://github.com/caolan/async/issues/815), [#1048](https://github.com/caolan/async/issues/1048), [#1050](https://github.com/caolan/async/issues/1050)) +- `auto` task functions now always take the callback as the last argument. If a task has dependencies, the `results` object will be passed as the first argument. To migrate old task functions, wrap them with [`_.flip`](https://lodash.com/docs#flip) ([#1036](https://github.com/caolan/async/issues/1036), [#1042](https://github.com/caolan/async/issues/1042)) +- Internal `setImmediate` calls have been refactored away. This may make existing flows vulnerable to stack overflows if you use many synchronous functions in series. Use `ensureAsync` to work around this. ([#696](https://github.com/caolan/async/issues/696), [#704](https://github.com/caolan/async/issues/704), [#1049](https://github.com/caolan/async/issues/1049), [#1050](https://github.com/caolan/async/issues/1050)) +- `map` used to return an object when iterating over an object. `map` now always returns an array, like in other libraries. The previous object behavior has been split out into `mapValues`. ([#1157](https://github.com/caolan/async/issues/1157), [#1177](https://github.com/caolan/async/issues/1177)) +- `filter`, `reject`, `some`, `every`, `detect` and their families like `{METHOD}Series` and `{METHOD}Limit` now expect an error as the first callback argument, rather than just a simple boolean. Pass `null` as the first argument, or use `fs.access` instead of `fs.exists`. ([#118](https://github.com/caolan/async/issues/118), [#774](https://github.com/caolan/async/issues/774), [#1028](https://github.com/caolan/async/issues/1028), [#1041](https://github.com/caolan/async/issues/1041)) +- `{METHOD}` and `{METHOD}Series` are now implemented in terms of `{METHOD}Limit`. This is a major internal simplification, and is not expected to cause many problems, but it does subtly affect how functions execute internally. ([#778](https://github.com/caolan/async/issues/778), [#847](https://github.com/caolan/async/issues/847)) +- `retry`'s callback is now optional. Previously, omitting the callback would partially apply the function, meaning it could be passed directly as a task to `series` or `auto`. The partially applied "control-flow" behavior has been separated out into `retryable`. ([#1054](https://github.com/caolan/async/issues/1054), [#1058](https://github.com/caolan/async/issues/1058)) +- The test function for `whilst`, `until`, and `during` used to be passed non-error args from the iteratee function's callback, but this led to weirdness where the first call of the test function would be passed no args. We have made it so the test function is never passed extra arguments, and only the `doWhilst`, `doUntil`, and `doDuring` functions pass iteratee callback arguments to the test function ([#1217](https://github.com/caolan/async/issues/1217), [#1224](https://github.com/caolan/async/issues/1224)) +- The `q.tasks` array has been renamed `q._tasks` and is now implemented as a doubly linked list (DLL). Any code that used to interact with this array will need to be updated to either use the provided helpers or support DLLs ([#1205](https://github.com/caolan/async/issues/1205)). +- The timing of the `q.saturated()` callback in a `queue` has been modified to better reflect when tasks pushed to the queue will start queueing. ([#724](https://github.com/caolan/async/issues/724), [#1078](https://github.com/caolan/async/issues/1078)) +- Removed `iterator` method in favour of [ES2015 iterator protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators ) which natively supports arrays ([#1237](https://github.com/caolan/async/issues/1237)) +- Dropped support for Component, Jam, SPM, and Volo ([#1175](https://github.com/caolan/async/issues/1175), #[#176](https://github.com/caolan/async/issues/176)) + +## Bug Fixes + +- Improved handling of no dependency cases in `auto` & `autoInject` ([#1147](https://github.com/caolan/async/issues/1147)). +- Fixed a bug where the callback generated by `asyncify` with `Promises` could resolve twice ([#1197](https://github.com/caolan/async/issues/1197)). +- Fixed several documented optional callbacks not actually being optional ([#1223](https://github.com/caolan/async/issues/1223)). + +## Other + +- Added `someSeries` and `everySeries` for symmetry, as well as a complete set of `any`/`anyLimit`/`anySeries` and `all`/`/allLmit`/`allSeries` aliases. +- Added `find` as an alias for `detect. (as well as `findLimit` and `findSeries`). +- Various doc fixes ([#1005](https://github.com/caolan/async/issues/1005), [#1008](https://github.com/caolan/async/issues/1008), [#1010](https://github.com/caolan/async/issues/1010), [#1015](https://github.com/caolan/async/issues/1015), [#1021](https://github.com/caolan/async/issues/1021), [#1037](https://github.com/caolan/async/issues/1037), [#1039](https://github.com/caolan/async/issues/1039), [#1051](https://github.com/caolan/async/issues/1051), [#1102](https://github.com/caolan/async/issues/1102), [#1107](https://github.com/caolan/async/issues/1107), [#1121](https://github.com/caolan/async/issues/1121), [#1123](https://github.com/caolan/async/issues/1123), [#1129](https://github.com/caolan/async/issues/1129), [#1135](https://github.com/caolan/async/issues/1135), [#1138](https://github.com/caolan/async/issues/1138), [#1141](https://github.com/caolan/async/issues/1141), [#1153](https://github.com/caolan/async/issues/1153), [#1216](https://github.com/caolan/async/issues/1216), [#1217](https://github.com/caolan/async/issues/1217), [#1232](https://github.com/caolan/async/issues/1232), [#1233](https://github.com/caolan/async/issues/1233), [#1236](https://github.com/caolan/async/issues/1236), [#1238](https://github.com/caolan/async/issues/1238)) + +Thank you [**@aearly**](github.com/aearly) and [**@megawac**](github.com/megawac) for taking the lead on version 2 of async. + +------------------------------------------ + +# v1.5.2 +- Allow using `"constructor"` as an argument in `memoize` ([#998](https://github.com/caolan/async/issues/998)) +- Give a better error messsage when `auto` dependency checking fails ([#994](https://github.com/caolan/async/issues/994)) +- Various doc updates ([#936](https://github.com/caolan/async/issues/936), [#956](https://github.com/caolan/async/issues/956), [#979](https://github.com/caolan/async/issues/979), [#1002](https://github.com/caolan/async/issues/1002)) + +# v1.5.1 +- Fix issue with `pause` in `queue` with concurrency enabled ([#946](https://github.com/caolan/async/issues/946)) +- `while` and `until` now pass the final result to callback ([#963](https://github.com/caolan/async/issues/963)) +- `auto` will properly handle concurrency when there is no callback ([#966](https://github.com/caolan/async/issues/966)) +- `auto` will no. properly stop execution when an error occurs ([#988](https://github.com/caolan/async/issues/988), [#993](https://github.com/caolan/async/issues/993)) +- Various doc fixes ([#971](https://github.com/caolan/async/issues/971), [#980](https://github.com/caolan/async/issues/980)) + +# v1.5.0 + +- Added `transform`, analogous to [`_.transform`](http://lodash.com/docs#transform) ([#892](https://github.com/caolan/async/issues/892)) +- `map` now returns an object when an object is passed in, rather than array with non-numeric keys. `map` will begin always returning an array with numeric indexes in the next major release. ([#873](https://github.com/caolan/async/issues/873)) +- `auto` now accepts an optional `concurrency` argument to limit the number o. running tasks ([#637](https://github.com/caolan/async/issues/637)) +- Added `queue#workersList()`, to retrieve the lis. of currently running tasks. ([#891](https://github.com/caolan/async/issues/891)) +- Various code simplifications ([#896](https://github.com/caolan/async/issues/896), [#904](https://github.com/caolan/async/issues/904)) +- Various doc fixes :scroll: ([#890](https://github.com/caolan/async/issues/890), [#894](https://github.com/caolan/async/issues/894), [#903](https://github.com/caolan/async/issues/903), [#905](https://github.com/caolan/async/issues/905), [#912](https://github.com/caolan/async/issues/912)) + +# v1.4.2 + +- Ensure coverage files don't get published on npm ([#879](https://github.com/caolan/async/issues/879)) + +# v1.4.1 + +- Add in overlooked `detectLimit` method ([#866](https://github.com/caolan/async/issues/866)) +- Removed unnecessary files from npm releases ([#861](https://github.com/caolan/async/issues/861)) +- Removed usage of a reserved word to prevent :boom: in older environments ([#870](https://github.com/caolan/async/issues/870)) + +# v1.4.0 + +- `asyncify` now supports promises ([#840](https://github.com/caolan/async/issues/840)) +- Added `Limit` versions of `filter` and `reject` ([#836](https://github.com/caolan/async/issues/836)) +- Add `Limit` versions of `detect`, `some` and `every` ([#828](https://github.com/caolan/async/issues/828), [#829](https://github.com/caolan/async/issues/829)) +- `some`, `every` and `detect` now short circuit early ([#828](https://github.com/caolan/async/issues/828), [#829](https://github.com/caolan/async/issues/829)) +- Improve detection of the global object ([#804](https://github.com/caolan/async/issues/804)), enabling use in WebWorkers +- `whilst` now called with arguments from iterator ([#823](https://github.com/caolan/async/issues/823)) +- `during` now gets called with arguments from iterator ([#824](https://github.com/caolan/async/issues/824)) +- Code simplifications and optimizations aplenty ([diff](https://github.com/caolan/async/compare/v1.3.0...v1.4.0)) + + +# v1.3.0 + +New Features: +- Added `constant` +- Added `asyncify`/`wrapSync` for making sync functions work with callbacks. ([#671](https://github.com/caolan/async/issues/671), [#806](https://github.com/caolan/async/issues/806)) +- Added `during` and `doDuring`, which are like `whilst` with an async truth test. ([#800](https://github.com/caolan/async/issues/800)) +- `retry` now accepts an `interval` parameter to specify a delay between retries. ([#793](https://github.com/caolan/async/issues/793)) +- `async` should work better in Web Workers due to better `root` detection ([#804](https://github.com/caolan/async/issues/804)) +- Callbacks are now optional in `whilst`, `doWhilst`, `until`, and `doUntil` ([#642](https://github.com/caolan/async/issues/642)) +- Various internal updates ([#786](https://github.com/caolan/async/issues/786), [#801](https://github.com/caolan/async/issues/801), [#802](https://github.com/caolan/async/issues/802), [#803](https://github.com/caolan/async/issues/803)) +- Various doc fixes ([#790](https://github.com/caolan/async/issues/790), [#794](https://github.com/caolan/async/issues/794)) + +Bug Fixes: +- `cargo` now exposes the `payload` size, and `cargo.payload` can be changed on the fly after the `cargo` is created. ([#740](https://github.com/caolan/async/issues/740), [#744](https://github.com/caolan/async/issues/744), [#783](https://github.com/caolan/async/issues/783)) + + +# v1.2.1 + +Bug Fix: + +- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. ([#782](https://github.com/caolan/async/issues/782)) + + +# v1.2.0 + +New Features: + +- Added `timesLimit` ([#743](https://github.com/caolan/async/issues/743)) +- `concurrency` can be changed after initialization in `queue` by setting `q.concurrency`. The new concurrency will be reflected the next time a task is processed. ([#747](https://github.com/caolan/async/issues/747), [#772](https://github.com/caolan/async/issues/772)) + +Bug Fixes: + +- Fixed a regression in `each` and family with empty arrays that have additional properties. ([#775](https://github.com/caolan/async/issues/775), [#777](https://github.com/caolan/async/issues/777)) + + +# v1.1.1 + +Bug Fix: + +- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. ([#782](https://github.com/caolan/async/issues/782)) + + +# v1.1.0 + +New Features: + +- `cargo` now supports all of the same methods and event callbacks as `queue`. +- Added `ensureAsync` - A wrapper that ensures an async function calls its callback on a later tick. ([#769](https://github.com/caolan/async/issues/769)) +- Optimized `map`, `eachOf`, and `waterfall` families of functions +- Passing a `null` or `undefined` array to `map`, `each`, `parallel` and families will be treated as an empty array ([#667](https://github.com/caolan/async/issues/667)). +- The callback is now optional for the composed results of `compose` and `seq`. ([#618](https://github.com/caolan/async/issues/618)) +- Reduced file size by 4kb, (minified version by 1kb) +- Added code coverage through `nyc` and `coveralls` ([#768](https://github.com/caolan/async/issues/768)) + +Bug Fixes: + +- `forever` will no longer stack overflow with a synchronous iterator ([#622](https://github.com/caolan/async/issues/622)) +- `eachLimit` and other limit functions will stop iterating once an error occurs ([#754](https://github.com/caolan/async/issues/754)) +- Always pass `null` in callbacks when there is no error ([#439](https://github.com/caolan/async/issues/439)) +- Ensure proper conditions when calling `drain()` after pushing an empty data set to a queue ([#668](https://github.com/caolan/async/issues/668)) +- `each` and family will properly handle an empty array ([#578](https://github.com/caolan/async/issues/578)) +- `eachSeries` and family will finish if the underlying array is modified during execution ([#557](https://github.com/caolan/async/issues/557)) +- `queue` will throw if a non-function is passed to `q.push()` ([#593](https://github.com/caolan/async/issues/593)) +- Doc fixes ([#629](https://github.com/caolan/async/issues/629), [#766](https://github.com/caolan/async/issues/766)) + + +# v1.0.0 + +No known breaking changes, we are simply complying with semver from here on out. + +Changes: + +- Start using a changelog! +- Add `forEachOf` for iterating over Objects (or to iterate Arrays with indexes available) ([#168](https://github.com/caolan/async/issues/168) [#704](https://github.com/caolan/async/issues/704) [#321](https://github.com/caolan/async/issues/321)) +- Detect deadlocks in `auto` ([#663](https://github.com/caolan/async/issues/663)) +- Better support for require.js ([#527](https://github.com/caolan/async/issues/527)) +- Throw if queue created with concurrency `0` ([#714](https://github.com/caolan/async/issues/714)) +- Fix unneeded iteration in `queue.resume()` ([#758](https://github.com/caolan/async/issues/758)) +- Guard against timer mocking overriding `setImmediate` ([#609](https://github.com/caolan/async/issues/609) [#611](https://github.com/caolan/async/issues/611)) +- Miscellaneous doc fixes ([#542](https://github.com/caolan/async/issues/542) [#596](https://github.com/caolan/async/issues/596) [#615](https://github.com/caolan/async/issues/615) [#628](https://github.com/caolan/async/issues/628) [#631](https://github.com/caolan/async/issues/631) [#690](https://github.com/caolan/async/issues/690) [#729](https://github.com/caolan/async/issues/729)) +- Use single noop function internally ([#546](https://github.com/caolan/async/issues/546)) +- Optimize internal `_each`, `_map` and `_keys` functions. diff --git a/node_modules/async/LICENSE b/node_modules/async/LICENSE new file mode 100644 index 0000000..b18aed6 --- /dev/null +++ b/node_modules/async/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2010-2018 Caolan McMahon + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/async/README.md b/node_modules/async/README.md new file mode 100644 index 0000000..55a0626 --- /dev/null +++ b/node_modules/async/README.md @@ -0,0 +1,59 @@ +![Async Logo](https://raw.githubusercontent.com/caolan/async/master/logo/async-logo_readme.jpg) + +![Github Actions CI status](https://github.com/caolan/async/actions/workflows/ci.yml/badge.svg) +[![NPM version](https://img.shields.io/npm/v/async.svg)](https://www.npmjs.com/package/async) +[![Coverage Status](https://coveralls.io/repos/caolan/async/badge.svg?branch=master)](https://coveralls.io/r/caolan/async?branch=master) +[![Join the chat at https://gitter.im/caolan/async](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/caolan/async?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![jsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/async/badge?style=rounded)](https://www.jsdelivr.com/package/npm/async) + +<!-- +|Linux|Windows|MacOS| +|-|-|-| +|[![Linux Build Status](https://dev.azure.com/caolanmcmahon/async/_apis/build/status/caolan.async?branchName=master&jobName=Linux&configuration=Linux%20node_10_x)](https://dev.azure.com/caolanmcmahon/async/_build/latest?definitionId=1&branchName=master) | [![Windows Build Status](https://dev.azure.com/caolanmcmahon/async/_apis/build/status/caolan.async?branchName=master&jobName=Windows&configuration=Windows%20node_10_x)](https://dev.azure.com/caolanmcmahon/async/_build/latest?definitionId=1&branchName=master) | [![MacOS Build Status](https://dev.azure.com/caolanmcmahon/async/_apis/build/status/caolan.async?branchName=master&jobName=OSX&configuration=OSX%20node_10_x)](https://dev.azure.com/caolanmcmahon/async/_build/latest?definitionId=1&branchName=master)| --> + +Async is a utility module which provides straight-forward, powerful functions for working with [asynchronous JavaScript](http://caolan.github.io/async/v3/global.html). Although originally designed for use with [Node.js](https://nodejs.org/) and installable via `npm i async`, it can also be used directly in the browser. An ESM/MJS version is included in the main `async` package that should automatically be used with compatible bundlers such as Webpack and Rollup. + +A pure ESM version of Async is available as [`async-es`](https://www.npmjs.com/package/async-es). + +For Documentation, visit <https://caolan.github.io/async/> + +*For Async v1.5.x documentation, go [HERE](https://github.com/caolan/async/blob/v1.5.2/README.md)* + + +```javascript +// for use with Node-style callbacks... +var async = require("async"); + +var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"}; +var configs = {}; + +async.forEachOf(obj, (value, key, callback) => { + fs.readFile(__dirname + value, "utf8", (err, data) => { + if (err) return callback(err); + try { + configs[key] = JSON.parse(data); + } catch (e) { + return callback(e); + } + callback(); + }); +}, err => { + if (err) console.error(err.message); + // configs is now a map of JSON data + doSomethingWith(configs); +}); +``` + +```javascript +var async = require("async"); + +// ...or ES2017 async functions +async.mapLimit(urls, 5, async function(url) { + const response = await fetch(url) + return response.body +}, (err, results) => { + if (err) throw err + // results is now an array of the response bodies + console.log(results) +}) +``` diff --git a/node_modules/async/all.js b/node_modules/async/all.js new file mode 100644 index 0000000..622b301 --- /dev/null +++ b/node_modules/async/all.js @@ -0,0 +1,119 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns `true` if every element in `coll` satisfies an async test. If any + * iteratee call returns `false`, the main `callback` is immediately called. + * + * @name every + * @static + * @memberOf module:Collections + * @method + * @alias all + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file5.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.every(fileList, fileExists, function(err, result) { + * console.log(result); + * // true + * // result is true since every file exists + * }); + * + * async.every(withMissingFileList, fileExists, function(err, result) { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }); + * + * // Using Promises + * async.every(fileList, fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.every(withMissingFileList, fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.every(fileList, fileExists); + * console.log(result); + * // true + * // result is true since every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.every(withMissingFileList, fileExists); + * console.log(result); + * // false + * // result is false since NOT every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function every(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => !bool, res => !res)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(every, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/allLimit.js b/node_modules/async/allLimit.js new file mode 100644 index 0000000..375e126 --- /dev/null +++ b/node_modules/async/allLimit.js @@ -0,0 +1,46 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time. + * + * @name everyLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function everyLimit(coll, limit, iteratee, callback) { + return (0, _createTester2.default)(bool => !bool, res => !res)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(everyLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/allSeries.js b/node_modules/async/allSeries.js new file mode 100644 index 0000000..9a6bf7d --- /dev/null +++ b/node_modules/async/allSeries.js @@ -0,0 +1,45 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time. + * + * @name everySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in series. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function everySeries(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => !bool, res => !res)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(everySeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/any.js b/node_modules/async/any.js new file mode 100644 index 0000000..a5bd328 --- /dev/null +++ b/node_modules/async/any.js @@ -0,0 +1,122 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns `true` if at least one element in the `coll` satisfies an async test. + * If any iteratee call returns `true`, the main `callback` is immediately + * called. + * + * @name some + * @static + * @memberOf module:Collections + * @method + * @alias any + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + *); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // false + * // result is false since none of the files exists + * } + *); + * + * // Using Promises + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since some file in the list exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since none of the files exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists); + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists); + * console.log(result); + * // false + * // result is false since none of the files exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function some(coll, iteratee, callback) { + return (0, _createTester2.default)(Boolean, res => res)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(some, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/anyLimit.js b/node_modules/async/anyLimit.js new file mode 100644 index 0000000..3a8096f --- /dev/null +++ b/node_modules/async/anyLimit.js @@ -0,0 +1,47 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time. + * + * @name someLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anyLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function someLimit(coll, limit, iteratee, callback) { + return (0, _createTester2.default)(Boolean, res => res)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(someLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/anySeries.js b/node_modules/async/anySeries.js new file mode 100644 index 0000000..51aad19 --- /dev/null +++ b/node_modules/async/anySeries.js @@ -0,0 +1,46 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time. + * + * @name someSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anySeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in series. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function someSeries(coll, iteratee, callback) { + return (0, _createTester2.default)(Boolean, res => res)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(someSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/apply.js b/node_modules/async/apply.js new file mode 100644 index 0000000..d40784f --- /dev/null +++ b/node_modules/async/apply.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (fn, ...args) { + return (...callArgs) => fn(...args, ...callArgs); +}; + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/applyEach.js b/node_modules/async/applyEach.js new file mode 100644 index 0000000..841842c --- /dev/null +++ b/node_modules/async/applyEach.js @@ -0,0 +1,57 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _applyEach = require('./internal/applyEach.js'); + +var _applyEach2 = _interopRequireDefault(_applyEach); + +var _map = require('./map.js'); + +var _map2 = _interopRequireDefault(_map); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Applies the provided arguments to each function in the array, calling + * `callback` after all functions have completed. If you only provide the first + * argument, `fns`, then it will return a function which lets you pass in the + * arguments as if it were a single function call. If more arguments are + * provided, `callback` is required while `args` is still optional. The results + * for each of the applied async functions are passed to the final callback + * as an array. + * + * @name applyEach + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s + * to all call with the same arguments + * @param {...*} [args] - any number of separate arguments to pass to the + * function. + * @param {Function} [callback] - the final argument should be the callback, + * called when all functions have completed processing. + * @returns {AsyncFunction} - Returns a function that takes no args other than + * an optional callback, that is the result of applying the `args` to each + * of the functions. + * @example + * + * const appliedFn = async.applyEach([enableSearch, updateSchema], 'bucket') + * + * appliedFn((err, results) => { + * // results[0] is the results for `enableSearch` + * // results[1] is the results for `updateSchema` + * }); + * + * // partial application example: + * async.each( + * buckets, + * async (bucket) => async.applyEach([enableSearch, updateSchema], bucket)(), + * callback + * ); + */ +exports.default = (0, _applyEach2.default)(_map2.default); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/applyEachSeries.js b/node_modules/async/applyEachSeries.js new file mode 100644 index 0000000..f5267f6 --- /dev/null +++ b/node_modules/async/applyEachSeries.js @@ -0,0 +1,37 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _applyEach = require('./internal/applyEach.js'); + +var _applyEach2 = _interopRequireDefault(_applyEach); + +var _mapSeries = require('./mapSeries.js'); + +var _mapSeries2 = _interopRequireDefault(_mapSeries); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time. + * + * @name applyEachSeries + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.applyEach]{@link module:ControlFlow.applyEach} + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s to all + * call with the same arguments + * @param {...*} [args] - any number of separate arguments to pass to the + * function. + * @param {Function} [callback] - the final argument should be the callback, + * called when all functions have completed processing. + * @returns {AsyncFunction} - A function, that when called, is the result of + * appling the `args` to the list of functions. It takes no args, other than + * a callback. + */ +exports.default = (0, _applyEach2.default)(_mapSeries2.default); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/asyncify.js b/node_modules/async/asyncify.js new file mode 100644 index 0000000..ddc3f02 --- /dev/null +++ b/node_modules/async/asyncify.js @@ -0,0 +1,118 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = asyncify; + +var _initialParams = require('./internal/initialParams.js'); + +var _initialParams2 = _interopRequireDefault(_initialParams); + +var _setImmediate = require('./internal/setImmediate.js'); + +var _setImmediate2 = _interopRequireDefault(_setImmediate); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Take a sync function and make it async, passing its return value to a + * callback. This is useful for plugging sync functions into a waterfall, + * series, or other async functions. Any arguments passed to the generated + * function will be passed to the wrapped function (except for the final + * callback argument). Errors thrown will be passed to the callback. + * + * If the function passed to `asyncify` returns a Promise, that promises's + * resolved/rejected state will be used to call the callback, rather than simply + * the synchronous return value. + * + * This also means you can asyncify ES2017 `async` functions. + * + * @name asyncify + * @static + * @memberOf module:Utils + * @method + * @alias wrapSync + * @category Util + * @param {Function} func - The synchronous function, or Promise-returning + * function to convert to an {@link AsyncFunction}. + * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be + * invoked with `(args..., callback)`. + * @example + * + * // passing a regular synchronous function + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(JSON.parse), + * function (data, next) { + * // data is the result of parsing the text. + * // If there was a parsing error, it would have been caught. + * } + * ], callback); + * + * // passing a function returning a promise + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(function (contents) { + * return db.model.create(contents); + * }), + * function (model, next) { + * // `model` is the instantiated model object. + * // If there was an error, this function would be skipped. + * } + * ], callback); + * + * // es2017 example, though `asyncify` is not needed if your JS environment + * // supports async functions out of the box + * var q = async.queue(async.asyncify(async function(file) { + * var intermediateStep = await processFile(file); + * return await somePromise(intermediateStep) + * })); + * + * q.push(files); + */ +function asyncify(func) { + if ((0, _wrapAsync.isAsync)(func)) { + return function (...args /*, callback*/) { + const callback = args.pop(); + const promise = func.apply(this, args); + return handlePromise(promise, callback); + }; + } + + return (0, _initialParams2.default)(function (args, callback) { + var result; + try { + result = func.apply(this, args); + } catch (e) { + return callback(e); + } + // if result is Promise object + if (result && typeof result.then === 'function') { + return handlePromise(result, callback); + } else { + callback(null, result); + } + }); +} + +function handlePromise(promise, callback) { + return promise.then(value => { + invokeCallback(callback, null, value); + }, err => { + invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err)); + }); +} + +function invokeCallback(callback, error, value) { + try { + callback(error, value); + } catch (err) { + (0, _setImmediate2.default)(e => { + throw e; + }, err); + } +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/auto.js b/node_modules/async/auto.js new file mode 100644 index 0000000..163c4f2 --- /dev/null +++ b/node_modules/async/auto.js @@ -0,0 +1,333 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = auto; + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _promiseCallback = require('./internal/promiseCallback.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on + * their requirements. Each function can optionally depend on other functions + * being completed first, and each function is run as soon as its requirements + * are satisfied. + * + * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence + * will stop. Further tasks will not execute (so any other functions depending + * on it will not run), and the main `callback` is immediately called with the + * error. + * + * {@link AsyncFunction}s also receive an object containing the results of functions which + * have completed so far as the first argument, if they have dependencies. If a + * task function has no dependencies, it will only be passed a callback. + * + * @name auto + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Object} tasks - An object. Each of its properties is either a + * function or an array of requirements, with the {@link AsyncFunction} itself the last item + * in the array. The object's key of a property serves as the name of the task + * defined by that property, i.e. can be used when specifying requirements for + * other tasks. The function receives one or two arguments: + * * a `results` object, containing the results of the previously executed + * functions, only passed if the task has any dependencies, + * * a `callback(err, result)` function, which must be called when finished, + * passing an `error` (which can be `null`) and the result of the function's + * execution. + * @param {number} [concurrency=Infinity] - An optional `integer` for + * determining the maximum number of tasks that can be run in parallel. By + * default, as many as possible. + * @param {Function} [callback] - An optional callback which is called when all + * the tasks have been completed. It receives the `err` argument if any `tasks` + * pass an error to their callback. Results are always returned; however, if an + * error occurs, no further `tasks` will be performed, and the results object + * will only contain partial results. Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + * @example + * + * //Using Callbacks + * async.auto({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }, function(err, results) { + * if (err) { + * console.log('err = ', err); + * } + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * }); + * + * //Using Promises + * async.auto({ + * get_data: function(callback) { + * console.log('in get_data'); + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * console.log('in make_folder'); + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }).then(results => { + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * }).catch(err => { + * console.log('err = ', err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.auto({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }); + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function auto(tasks, concurrency, callback) { + if (typeof concurrency !== 'number') { + // concurrency is optional, shift the args. + callback = concurrency; + concurrency = null; + } + callback = (0, _once2.default)(callback || (0, _promiseCallback.promiseCallback)()); + var numTasks = Object.keys(tasks).length; + if (!numTasks) { + return callback(null); + } + if (!concurrency) { + concurrency = numTasks; + } + + var results = {}; + var runningTasks = 0; + var canceled = false; + var hasError = false; + + var listeners = Object.create(null); + + var readyTasks = []; + + // for cycle detection: + var readyToCheck = []; // tasks that have been identified as reachable + // without the possibility of returning to an ancestor task + var uncheckedDependencies = {}; + + Object.keys(tasks).forEach(key => { + var task = tasks[key]; + if (!Array.isArray(task)) { + // no dependencies + enqueueTask(key, [task]); + readyToCheck.push(key); + return; + } + + var dependencies = task.slice(0, task.length - 1); + var remainingDependencies = dependencies.length; + if (remainingDependencies === 0) { + enqueueTask(key, task); + readyToCheck.push(key); + return; + } + uncheckedDependencies[key] = remainingDependencies; + + dependencies.forEach(dependencyName => { + if (!tasks[dependencyName]) { + throw new Error('async.auto task `' + key + '` has a non-existent dependency `' + dependencyName + '` in ' + dependencies.join(', ')); + } + addListener(dependencyName, () => { + remainingDependencies--; + if (remainingDependencies === 0) { + enqueueTask(key, task); + } + }); + }); + }); + + checkForDeadlocks(); + processQueue(); + + function enqueueTask(key, task) { + readyTasks.push(() => runTask(key, task)); + } + + function processQueue() { + if (canceled) return; + if (readyTasks.length === 0 && runningTasks === 0) { + return callback(null, results); + } + while (readyTasks.length && runningTasks < concurrency) { + var run = readyTasks.shift(); + run(); + } + } + + function addListener(taskName, fn) { + var taskListeners = listeners[taskName]; + if (!taskListeners) { + taskListeners = listeners[taskName] = []; + } + + taskListeners.push(fn); + } + + function taskComplete(taskName) { + var taskListeners = listeners[taskName] || []; + taskListeners.forEach(fn => fn()); + processQueue(); + } + + function runTask(key, task) { + if (hasError) return; + + var taskCallback = (0, _onlyOnce2.default)((err, ...result) => { + runningTasks--; + if (err === false) { + canceled = true; + return; + } + if (result.length < 2) { + [result] = result; + } + if (err) { + var safeResults = {}; + Object.keys(results).forEach(rkey => { + safeResults[rkey] = results[rkey]; + }); + safeResults[key] = result; + hasError = true; + listeners = Object.create(null); + if (canceled) return; + callback(err, safeResults); + } else { + results[key] = result; + taskComplete(key); + } + }); + + runningTasks++; + var taskFn = (0, _wrapAsync2.default)(task[task.length - 1]); + if (task.length > 1) { + taskFn(results, taskCallback); + } else { + taskFn(taskCallback); + } + } + + function checkForDeadlocks() { + // Kahn's algorithm + // https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm + // http://connalle.blogspot.com/2013/10/topological-sortingkahn-algorithm.html + var currentTask; + var counter = 0; + while (readyToCheck.length) { + currentTask = readyToCheck.pop(); + counter++; + getDependents(currentTask).forEach(dependent => { + if (--uncheckedDependencies[dependent] === 0) { + readyToCheck.push(dependent); + } + }); + } + + if (counter !== numTasks) { + throw new Error('async.auto cannot execute tasks due to a recursive dependency'); + } + } + + function getDependents(taskName) { + var result = []; + Object.keys(tasks).forEach(key => { + const task = tasks[key]; + if (Array.isArray(task) && task.indexOf(taskName) >= 0) { + result.push(key); + } + }); + return result; + } + + return callback[_promiseCallback.PROMISE_SYMBOL]; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/autoInject.js b/node_modules/async/autoInject.js new file mode 100644 index 0000000..5db2653 --- /dev/null +++ b/node_modules/async/autoInject.js @@ -0,0 +1,182 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = autoInject; + +var _auto = require('./auto.js'); + +var _auto2 = _interopRequireDefault(_auto); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var FN_ARGS = /^(?:async\s)?(?:function)?\s*(?:\w+\s*)?\(([^)]+)\)(?:\s*{)/; +var ARROW_FN_ARGS = /^(?:async\s)?\s*(?:\(\s*)?((?:[^)=\s]\s*)*)(?:\)\s*)?=>/; +var FN_ARG_SPLIT = /,/; +var FN_ARG = /(=.+)?(\s*)$/; + +function stripComments(string) { + let stripped = ''; + let index = 0; + let endBlockComment = string.indexOf('*/'); + while (index < string.length) { + if (string[index] === '/' && string[index + 1] === '/') { + // inline comment + let endIndex = string.indexOf('\n', index); + index = endIndex === -1 ? string.length : endIndex; + } else if (endBlockComment !== -1 && string[index] === '/' && string[index + 1] === '*') { + // block comment + let endIndex = string.indexOf('*/', index); + if (endIndex !== -1) { + index = endIndex + 2; + endBlockComment = string.indexOf('*/', index); + } else { + stripped += string[index]; + index++; + } + } else { + stripped += string[index]; + index++; + } + } + return stripped; +} + +function parseParams(func) { + const src = stripComments(func.toString()); + let match = src.match(FN_ARGS); + if (!match) { + match = src.match(ARROW_FN_ARGS); + } + if (!match) throw new Error('could not parse args in autoInject\nSource:\n' + src); + let [, args] = match; + return args.replace(/\s/g, '').split(FN_ARG_SPLIT).map(arg => arg.replace(FN_ARG, '').trim()); +} + +/** + * A dependency-injected version of the [async.auto]{@link module:ControlFlow.auto} function. Dependent + * tasks are specified as parameters to the function, after the usual callback + * parameter, with the parameter names matching the names of the tasks it + * depends on. This can provide even more readable task graphs which can be + * easier to maintain. + * + * If a final callback is specified, the task results are similarly injected, + * specified as named parameters after the initial error parameter. + * + * The autoInject function is purely syntactic sugar and its semantics are + * otherwise equivalent to [async.auto]{@link module:ControlFlow.auto}. + * + * @name autoInject + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.auto]{@link module:ControlFlow.auto} + * @category Control Flow + * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of + * the form 'func([dependencies...], callback). The object's key of a property + * serves as the name of the task defined by that property, i.e. can be used + * when specifying requirements for other tasks. + * * The `callback` parameter is a `callback(err, result)` which must be called + * when finished, passing an `error` (which can be `null`) and the result of + * the function's execution. The remaining parameters name other tasks on + * which the task is dependent, and the results from those tasks are the + * arguments of those parameters. + * @param {Function} [callback] - An optional callback which is called when all + * the tasks have been completed. It receives the `err` argument if any `tasks` + * pass an error to their callback, and a `results` object with any completed + * task results, similar to `auto`. + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // The example from `auto` can be rewritten as follows: + * async.autoInject({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: function(get_data, make_folder, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }, + * email_link: function(write_file, callback) { + * // once the file is written let's email a link to it... + * // write_file contains the filename returned by write_file. + * callback(null, {'file':write_file, 'email':'user@example.com'}); + * } + * }, function(err, results) { + * console.log('err = ', err); + * console.log('email_link = ', results.email_link); + * }); + * + * // If you are using a JS minifier that mangles parameter names, `autoInject` + * // will not work with plain functions, since the parameter names will be + * // collapsed to a single letter identifier. To work around this, you can + * // explicitly specify the names of the parameters your task function needs + * // in an array, similar to Angular.js dependency injection. + * + * // This still has an advantage over plain `auto`, since the results a task + * // depends on are still spread into arguments. + * async.autoInject({ + * //... + * write_file: ['get_data', 'make_folder', function(get_data, make_folder, callback) { + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(write_file, callback) { + * callback(null, {'file':write_file, 'email':'user@example.com'}); + * }] + * //... + * }, function(err, results) { + * console.log('err = ', err); + * console.log('email_link = ', results.email_link); + * }); + */ +function autoInject(tasks, callback) { + var newTasks = {}; + + Object.keys(tasks).forEach(key => { + var taskFn = tasks[key]; + var params; + var fnIsAsync = (0, _wrapAsync.isAsync)(taskFn); + var hasNoDeps = !fnIsAsync && taskFn.length === 1 || fnIsAsync && taskFn.length === 0; + + if (Array.isArray(taskFn)) { + params = [...taskFn]; + taskFn = params.pop(); + + newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn); + } else if (hasNoDeps) { + // no dependencies, use the function as-is + newTasks[key] = taskFn; + } else { + params = parseParams(taskFn); + if (taskFn.length === 0 && !fnIsAsync && params.length === 0) { + throw new Error("autoInject task functions require explicit parameters."); + } + + // remove callback param + if (!fnIsAsync) params.pop(); + + newTasks[key] = params.concat(newTask); + } + + function newTask(results, taskCb) { + var newArgs = params.map(name => results[name]); + newArgs.push(taskCb); + (0, _wrapAsync2.default)(taskFn)(...newArgs); + } + }); + + return (0, _auto2.default)(newTasks, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/bower.json b/node_modules/async/bower.json new file mode 100644 index 0000000..390c650 --- /dev/null +++ b/node_modules/async/bower.json @@ -0,0 +1,17 @@ +{ + "name": "async", + "main": "dist/async.js", + "ignore": [ + "bower_components", + "lib", + "test", + "node_modules", + "perf", + "support", + "**/.*", + "*.config.js", + "*.json", + "index.js", + "Makefile" + ] +} diff --git a/node_modules/async/cargo.js b/node_modules/async/cargo.js new file mode 100644 index 0000000..d4abd21 --- /dev/null +++ b/node_modules/async/cargo.js @@ -0,0 +1,63 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = cargo; + +var _queue = require('./internal/queue.js'); + +var _queue2 = _interopRequireDefault(_queue); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Creates a `cargo` object with the specified payload. Tasks added to the + * cargo will be processed altogether (up to the `payload` limit). If the + * `worker` is in progress, the task is queued until it becomes available. Once + * the `worker` has completed some tasks, each callback of those tasks is + * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) + * for how `cargo` and `queue` work. + * + * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers + * at a time, cargo passes an array of tasks to a single worker, repeating + * when the worker is finished. + * + * @name cargo + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @category Control Flow + * @param {AsyncFunction} worker - An asynchronous function for processing an array + * of queued tasks. Invoked with `(tasks, callback)`. + * @param {number} [payload=Infinity] - An optional `integer` for determining + * how many tasks should be processed per round; if omitted, the default is + * unlimited. + * @returns {module:ControlFlow.QueueObject} A cargo object to manage the tasks. Callbacks can + * attached as certain properties to listen for specific events during the + * lifecycle of the cargo and inner queue. + * @example + * + * // create a cargo object with payload 2 + * var cargo = async.cargo(function(tasks, callback) { + * for (var i=0; i<tasks.length; i++) { + * console.log('hello ' + tasks[i].name); + * } + * callback(); + * }, 2); + * + * // add some items + * cargo.push({name: 'foo'}, function(err) { + * console.log('finished processing foo'); + * }); + * cargo.push({name: 'bar'}, function(err) { + * console.log('finished processing bar'); + * }); + * await cargo.push({name: 'baz'}); + * console.log('finished processing baz'); + */ +function cargo(worker, payload) { + return (0, _queue2.default)(worker, 1, payload); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/cargoQueue.js b/node_modules/async/cargoQueue.js new file mode 100644 index 0000000..69a60d6 --- /dev/null +++ b/node_modules/async/cargoQueue.js @@ -0,0 +1,71 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = cargo; + +var _queue = require('./internal/queue.js'); + +var _queue2 = _interopRequireDefault(_queue); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Creates a `cargoQueue` object with the specified payload. Tasks added to the + * cargoQueue will be processed together (up to the `payload` limit) in `concurrency` parallel workers. + * If the all `workers` are in progress, the task is queued until one becomes available. Once + * a `worker` has completed some tasks, each callback of those tasks is + * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) + * for how `cargo` and `queue` work. + * + * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers + * at a time, and [`cargo`]{@link module:ControlFlow.cargo} passes an array of tasks to a single worker, + * the cargoQueue passes an array of tasks to multiple parallel workers. + * + * @name cargoQueue + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @see [async.cargo]{@link module:ControlFLow.cargo} + * @category Control Flow + * @param {AsyncFunction} worker - An asynchronous function for processing an array + * of queued tasks. Invoked with `(tasks, callback)`. + * @param {number} [concurrency=1] - An `integer` for determining how many + * `worker` functions should be run in parallel. If omitted, the concurrency + * defaults to `1`. If the concurrency is `0`, an error is thrown. + * @param {number} [payload=Infinity] - An optional `integer` for determining + * how many tasks should be processed per round; if omitted, the default is + * unlimited. + * @returns {module:ControlFlow.QueueObject} A cargoQueue object to manage the tasks. Callbacks can + * attached as certain properties to listen for specific events during the + * lifecycle of the cargoQueue and inner queue. + * @example + * + * // create a cargoQueue object with payload 2 and concurrency 2 + * var cargoQueue = async.cargoQueue(function(tasks, callback) { + * for (var i=0; i<tasks.length; i++) { + * console.log('hello ' + tasks[i].name); + * } + * callback(); + * }, 2, 2); + * + * // add some items + * cargoQueue.push({name: 'foo'}, function(err) { + * console.log('finished processing foo'); + * }); + * cargoQueue.push({name: 'bar'}, function(err) { + * console.log('finished processing bar'); + * }); + * cargoQueue.push({name: 'baz'}, function(err) { + * console.log('finished processing baz'); + * }); + * cargoQueue.push({name: 'boo'}, function(err) { + * console.log('finished processing boo'); + * }); + */ +function cargo(worker, concurrency, payload) { + return (0, _queue2.default)(worker, concurrency, payload); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/compose.js b/node_modules/async/compose.js new file mode 100644 index 0000000..0131c02 --- /dev/null +++ b/node_modules/async/compose.js @@ -0,0 +1,55 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = compose; + +var _seq = require('./seq.js'); + +var _seq2 = _interopRequireDefault(_seq); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Creates a function which is a composition of the passed asynchronous + * functions. Each function consumes the return value of the function that + * follows. Composing functions `f()`, `g()`, and `h()` would produce the result + * of `f(g(h()))`, only this version uses callbacks to obtain the return values. + * + * If the last argument to the composed function is not a function, a promise + * is returned when you call it. + * + * Each function is executed with the `this` binding of the composed function. + * + * @name compose + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {...AsyncFunction} functions - the asynchronous functions to compose + * @returns {Function} an asynchronous function that is the composed + * asynchronous `functions` + * @example + * + * function add1(n, callback) { + * setTimeout(function () { + * callback(null, n + 1); + * }, 10); + * } + * + * function mul3(n, callback) { + * setTimeout(function () { + * callback(null, n * 3); + * }, 10); + * } + * + * var add1mul3 = async.compose(mul3, add1); + * add1mul3(4, function (err, result) { + * // result now equals 15 + * }); + */ +function compose(...args) { + return (0, _seq2.default)(...args.reverse()); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/concat.js b/node_modules/async/concat.js new file mode 100644 index 0000000..4540a79 --- /dev/null +++ b/node_modules/async/concat.js @@ -0,0 +1,115 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _concatLimit = require('./concatLimit.js'); + +var _concatLimit2 = _interopRequireDefault(_concatLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Applies `iteratee` to each item in `coll`, concatenating the results. Returns + * the concatenated list. The `iteratee`s are called in parallel, and the + * results are concatenated as they return. The results array will be returned in + * the original order of `coll` passed to the `iteratee` function. + * + * @name concat + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @alias flatMap + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * let directoryList = ['dir1','dir2','dir3']; + * let withMissingDirectoryList = ['dir1','dir2','dir3', 'dir4']; + * + * // Using callbacks + * async.concat(directoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.concat(directoryList, fs.readdir) + * .then(results => { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir) + * .then(results => { + * console.log(results); + * }).catch(err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.concat(directoryList, fs.readdir); + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.concat(withMissingDirectoryList, fs.readdir); + * console.log(results); + * } catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } + * } + * + */ +function concat(coll, iteratee, callback) { + return (0, _concatLimit2.default)(coll, Infinity, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(concat, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/concatLimit.js b/node_modules/async/concatLimit.js new file mode 100644 index 0000000..a27cc7d --- /dev/null +++ b/node_modules/async/concatLimit.js @@ -0,0 +1,60 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _mapLimit = require('./mapLimit.js'); + +var _mapLimit2 = _interopRequireDefault(_mapLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`concat`]{@link module:Collections.concat} but runs a maximum of `limit` async operations at a time. + * + * @name concatLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapLimit + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ +function concatLimit(coll, limit, iteratee, callback) { + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _mapLimit2.default)(coll, limit, (val, iterCb) => { + _iteratee(val, (err, ...args) => { + if (err) return iterCb(err); + return iterCb(err, args); + }); + }, (err, mapResults) => { + var result = []; + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + result = result.concat(...mapResults[i]); + } + } + + return callback(err, result); + }); +} +exports.default = (0, _awaitify2.default)(concatLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/concatSeries.js b/node_modules/async/concatSeries.js new file mode 100644 index 0000000..332de3f --- /dev/null +++ b/node_modules/async/concatSeries.js @@ -0,0 +1,41 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _concatLimit = require('./concatLimit.js'); + +var _concatLimit2 = _interopRequireDefault(_concatLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`concat`]{@link module:Collections.concat} but runs only a single async operation at a time. + * + * @name concatSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapSeries + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`. + * The iteratee should complete with an array an array of results. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ +function concatSeries(coll, iteratee, callback) { + return (0, _concatLimit2.default)(coll, 1, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(concatSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/constant.js b/node_modules/async/constant.js new file mode 100644 index 0000000..ea406f6 --- /dev/null +++ b/node_modules/async/constant.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (...args) { + return function (...ignoredArgs /*, callback*/) { + var callback = ignoredArgs.pop(); + return callback(null, ...args); + }; +}; + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/detect.js b/node_modules/async/detect.js new file mode 100644 index 0000000..d5896ef --- /dev/null +++ b/node_modules/async/detect.js @@ -0,0 +1,96 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns the first value in `coll` that passes an async truth test. The + * `iteratee` is applied in parallel, meaning the first iteratee to return + * `true` will fire the detect `callback` with that result. That means the + * result might not be the first item in the original `coll` (in terms of order) + * that passes the test. + + * If order within the original `coll` is important, then look at + * [`detectSeries`]{@link module:Collections.detectSeries}. + * + * @name detect + * @static + * @memberOf module:Collections + * @method + * @alias find + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * } + *); + * + * // Using Promises + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists) + * .then(result => { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists); + * console.log(result); + * // dir1/file1.txt + * // result now equals the file in the list that exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function detect(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => bool, (res, item) => item)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(detect, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/detectLimit.js b/node_modules/async/detectLimit.js new file mode 100644 index 0000000..c59843b --- /dev/null +++ b/node_modules/async/detectLimit.js @@ -0,0 +1,48 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a + * time. + * + * @name detectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findLimit + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ +function detectLimit(coll, limit, iteratee, callback) { + return (0, _createTester2.default)(bool => bool, (res, item) => item)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(detectLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/detectSeries.js b/node_modules/async/detectSeries.js new file mode 100644 index 0000000..b486899 --- /dev/null +++ b/node_modules/async/detectSeries.js @@ -0,0 +1,47 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time. + * + * @name detectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findSeries + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ +function detectSeries(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => bool, (res, item) => item)((0, _eachOfLimit2.default)(1), coll, iteratee, callback); +} + +exports.default = (0, _awaitify2.default)(detectSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/dir.js b/node_modules/async/dir.js new file mode 100644 index 0000000..8e9fafd --- /dev/null +++ b/node_modules/async/dir.js @@ -0,0 +1,43 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _consoleFunc = require('./internal/consoleFunc.js'); + +var _consoleFunc2 = _interopRequireDefault(_consoleFunc); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Logs the result of an [`async` function]{@link AsyncFunction} to the + * `console` using `console.dir` to display the properties of the resulting object. + * Only works in Node.js or in browsers that support `console.dir` and + * `console.error` (such as FF and Chrome). + * If multiple arguments are returned from the async function, + * `console.dir` is called on each argument in order. + * + * @name dir + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. + * @param {...*} arguments... - Any number of arguments to apply to the function. + * @example + * + * // in a module + * var hello = function(name, callback) { + * setTimeout(function() { + * callback(null, {hello: name}); + * }, 1000); + * }; + * + * // in the node repl + * node> async.dir(hello, 'world'); + * {hello: 'world'} + */ +exports.default = (0, _consoleFunc2.default)('dir'); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/dist/async.js b/node_modules/async/dist/async.js new file mode 100644 index 0000000..d7b7918 --- /dev/null +++ b/node_modules/async/dist/async.js @@ -0,0 +1,6061 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.async = {})); +})(this, (function (exports) { 'use strict'; + + /** + * Creates a continuation function with some arguments already applied. + * + * Useful as a shorthand when combined with other control flow functions. Any + * arguments passed to the returned function are added to the arguments + * originally passed to apply. + * + * @name apply + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {Function} fn - The function you want to eventually apply all + * arguments to. Invokes with (arguments...). + * @param {...*} arguments... - Any number of arguments to automatically apply + * when the continuation is called. + * @returns {Function} the partially-applied function + * @example + * + * // using apply + * async.parallel([ + * async.apply(fs.writeFile, 'testfile1', 'test1'), + * async.apply(fs.writeFile, 'testfile2', 'test2') + * ]); + * + * + * // the same process without using apply + * async.parallel([ + * function(callback) { + * fs.writeFile('testfile1', 'test1', callback); + * }, + * function(callback) { + * fs.writeFile('testfile2', 'test2', callback); + * } + * ]); + * + * // It's possible to pass any number of additional arguments when calling the + * // continuation: + * + * node> var fn = async.apply(sys.puts, 'one'); + * node> fn('two', 'three'); + * one + * two + * three + */ + function apply(fn, ...args) { + return (...callArgs) => fn(...args,...callArgs); + } + + function initialParams (fn) { + return function (...args/*, callback*/) { + var callback = args.pop(); + return fn.call(this, args, callback); + }; + } + + /* istanbul ignore file */ + + var hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask; + var hasSetImmediate = typeof setImmediate === 'function' && setImmediate; + var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function'; + + function fallback(fn) { + setTimeout(fn, 0); + } + + function wrap(defer) { + return (fn, ...args) => defer(() => fn(...args)); + } + + var _defer$1; + + if (hasQueueMicrotask) { + _defer$1 = queueMicrotask; + } else if (hasSetImmediate) { + _defer$1 = setImmediate; + } else if (hasNextTick) { + _defer$1 = process.nextTick; + } else { + _defer$1 = fallback; + } + + var setImmediate$1 = wrap(_defer$1); + + /** + * Take a sync function and make it async, passing its return value to a + * callback. This is useful for plugging sync functions into a waterfall, + * series, or other async functions. Any arguments passed to the generated + * function will be passed to the wrapped function (except for the final + * callback argument). Errors thrown will be passed to the callback. + * + * If the function passed to `asyncify` returns a Promise, that promises's + * resolved/rejected state will be used to call the callback, rather than simply + * the synchronous return value. + * + * This also means you can asyncify ES2017 `async` functions. + * + * @name asyncify + * @static + * @memberOf module:Utils + * @method + * @alias wrapSync + * @category Util + * @param {Function} func - The synchronous function, or Promise-returning + * function to convert to an {@link AsyncFunction}. + * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be + * invoked with `(args..., callback)`. + * @example + * + * // passing a regular synchronous function + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(JSON.parse), + * function (data, next) { + * // data is the result of parsing the text. + * // If there was a parsing error, it would have been caught. + * } + * ], callback); + * + * // passing a function returning a promise + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(function (contents) { + * return db.model.create(contents); + * }), + * function (model, next) { + * // `model` is the instantiated model object. + * // If there was an error, this function would be skipped. + * } + * ], callback); + * + * // es2017 example, though `asyncify` is not needed if your JS environment + * // supports async functions out of the box + * var q = async.queue(async.asyncify(async function(file) { + * var intermediateStep = await processFile(file); + * return await somePromise(intermediateStep) + * })); + * + * q.push(files); + */ + function asyncify(func) { + if (isAsync(func)) { + return function (...args/*, callback*/) { + const callback = args.pop(); + const promise = func.apply(this, args); + return handlePromise(promise, callback) + } + } + + return initialParams(function (args, callback) { + var result; + try { + result = func.apply(this, args); + } catch (e) { + return callback(e); + } + // if result is Promise object + if (result && typeof result.then === 'function') { + return handlePromise(result, callback) + } else { + callback(null, result); + } + }); + } + + function handlePromise(promise, callback) { + return promise.then(value => { + invokeCallback(callback, null, value); + }, err => { + invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err)); + }); + } + + function invokeCallback(callback, error, value) { + try { + callback(error, value); + } catch (err) { + setImmediate$1(e => { throw e }, err); + } + } + + function isAsync(fn) { + return fn[Symbol.toStringTag] === 'AsyncFunction'; + } + + function isAsyncGenerator(fn) { + return fn[Symbol.toStringTag] === 'AsyncGenerator'; + } + + function isAsyncIterable(obj) { + return typeof obj[Symbol.asyncIterator] === 'function'; + } + + function wrapAsync(asyncFn) { + if (typeof asyncFn !== 'function') throw new Error('expected a function') + return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn; + } + + // conditionally promisify a function. + // only return a promise if a callback is omitted + function awaitify (asyncFn, arity) { + if (!arity) arity = asyncFn.length; + if (!arity) throw new Error('arity is undefined') + function awaitable (...args) { + if (typeof args[arity - 1] === 'function') { + return asyncFn.apply(this, args) + } + + return new Promise((resolve, reject) => { + args[arity - 1] = (err, ...cbArgs) => { + if (err) return reject(err) + resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]); + }; + asyncFn.apply(this, args); + }) + } + + return awaitable + } + + function applyEach$1 (eachfn) { + return function applyEach(fns, ...callArgs) { + const go = awaitify(function (callback) { + var that = this; + return eachfn(fns, (fn, cb) => { + wrapAsync(fn).apply(that, callArgs.concat(cb)); + }, callback); + }); + return go; + }; + } + + function _asyncMap(eachfn, arr, iteratee, callback) { + arr = arr || []; + var results = []; + var counter = 0; + var _iteratee = wrapAsync(iteratee); + + return eachfn(arr, (value, _, iterCb) => { + var index = counter++; + _iteratee(value, (err, v) => { + results[index] = v; + iterCb(err); + }); + }, err => { + callback(err, results); + }); + } + + function isArrayLike(value) { + return value && + typeof value.length === 'number' && + value.length >= 0 && + value.length % 1 === 0; + } + + // A temporary value used to identify if the loop should be broken. + // See #1064, #1293 + const breakLoop = {}; + + function once(fn) { + function wrapper (...args) { + if (fn === null) return; + var callFn = fn; + fn = null; + callFn.apply(this, args); + } + Object.assign(wrapper, fn); + return wrapper + } + + function getIterator (coll) { + return coll[Symbol.iterator] && coll[Symbol.iterator](); + } + + function createArrayIterator(coll) { + var i = -1; + var len = coll.length; + return function next() { + return ++i < len ? {value: coll[i], key: i} : null; + } + } + + function createES2015Iterator(iterator) { + var i = -1; + return function next() { + var item = iterator.next(); + if (item.done) + return null; + i++; + return {value: item.value, key: i}; + } + } + + function createObjectIterator(obj) { + var okeys = obj ? Object.keys(obj) : []; + var i = -1; + var len = okeys.length; + return function next() { + var key = okeys[++i]; + if (key === '__proto__') { + return next(); + } + return i < len ? {value: obj[key], key} : null; + }; + } + + function createIterator(coll) { + if (isArrayLike(coll)) { + return createArrayIterator(coll); + } + + var iterator = getIterator(coll); + return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll); + } + + function onlyOnce(fn) { + return function (...args) { + if (fn === null) throw new Error("Callback was already called."); + var callFn = fn; + fn = null; + callFn.apply(this, args); + }; + } + + // for async generators + function asyncEachOfLimit(generator, limit, iteratee, callback) { + let done = false; + let canceled = false; + let awaiting = false; + let running = 0; + let idx = 0; + + function replenish() { + //console.log('replenish') + if (running >= limit || awaiting || done) return + //console.log('replenish awaiting') + awaiting = true; + generator.next().then(({value, done: iterDone}) => { + //console.log('got value', value) + if (canceled || done) return + awaiting = false; + if (iterDone) { + done = true; + if (running <= 0) { + //console.log('done nextCb') + callback(null); + } + return; + } + running++; + iteratee(value, idx, iterateeCallback); + idx++; + replenish(); + }).catch(handleError); + } + + function iterateeCallback(err, result) { + //console.log('iterateeCallback') + running -= 1; + if (canceled) return + if (err) return handleError(err) + + if (err === false) { + done = true; + canceled = true; + return + } + + if (result === breakLoop || (done && running <= 0)) { + done = true; + //console.log('done iterCb') + return callback(null); + } + replenish(); + } + + function handleError(err) { + if (canceled) return + awaiting = false; + done = true; + callback(err); + } + + replenish(); + } + + var eachOfLimit$2 = (limit) => { + return (obj, iteratee, callback) => { + callback = once(callback); + if (limit <= 0) { + throw new RangeError('concurrency limit cannot be less than 1') + } + if (!obj) { + return callback(null); + } + if (isAsyncGenerator(obj)) { + return asyncEachOfLimit(obj, limit, iteratee, callback) + } + if (isAsyncIterable(obj)) { + return asyncEachOfLimit(obj[Symbol.asyncIterator](), limit, iteratee, callback) + } + var nextElem = createIterator(obj); + var done = false; + var canceled = false; + var running = 0; + var looping = false; + + function iterateeCallback(err, value) { + if (canceled) return + running -= 1; + if (err) { + done = true; + callback(err); + } + else if (err === false) { + done = true; + canceled = true; + } + else if (value === breakLoop || (done && running <= 0)) { + done = true; + return callback(null); + } + else if (!looping) { + replenish(); + } + } + + function replenish () { + looping = true; + while (running < limit && !done) { + var elem = nextElem(); + if (elem === null) { + done = true; + if (running <= 0) { + callback(null); + } + return; + } + running += 1; + iteratee(elem.value, elem.key, onlyOnce(iterateeCallback)); + } + looping = false; + } + + replenish(); + }; + }; + + /** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a + * time. + * + * @name eachOfLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. The `key` is the item's key, or index in the case of an + * array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ + function eachOfLimit(coll, limit, iteratee, callback) { + return eachOfLimit$2(limit)(coll, wrapAsync(iteratee), callback); + } + + var eachOfLimit$1 = awaitify(eachOfLimit, 4); + + // eachOf implementation optimized for array-likes + function eachOfArrayLike(coll, iteratee, callback) { + callback = once(callback); + var index = 0, + completed = 0, + {length} = coll, + canceled = false; + if (length === 0) { + callback(null); + } + + function iteratorCallback(err, value) { + if (err === false) { + canceled = true; + } + if (canceled === true) return + if (err) { + callback(err); + } else if ((++completed === length) || value === breakLoop) { + callback(null); + } + } + + for (; index < length; index++) { + iteratee(coll[index], index, onlyOnce(iteratorCallback)); + } + } + + // a generic version of eachOf which can handle array, object, and iterator cases. + function eachOfGeneric (coll, iteratee, callback) { + return eachOfLimit$1(coll, Infinity, iteratee, callback); + } + + /** + * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument + * to the iteratee. + * + * @name eachOf + * @static + * @memberOf module:Collections + * @method + * @alias forEachOf + * @category Collection + * @see [async.each]{@link module:Collections.each} + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each + * item in `coll`. + * The `key` is the item's key, or index in the case of an array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dev.json is a file containing a valid json object config for dev environment + * // dev.json is a file containing a valid json object config for test environment + * // prod.json is a file containing a valid json object config for prod environment + * // invalid.json is a file with a malformed json object + * + * let configs = {}; //global variable + * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'}; + * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'}; + * + * // asynchronous function that reads a json file and parses the contents as json object + * function parseFile(file, key, callback) { + * fs.readFile(file, "utf8", function(err, data) { + * if (err) return calback(err); + * try { + * configs[key] = JSON.parse(data); + * } catch (e) { + * return callback(e); + * } + * callback(); + * }); + * } + * + * // Using callbacks + * async.forEachOf(validConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * } else { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * // JSON parse error exception + * } else { + * console.log(configs); + * } + * }); + * + * // Using Promises + * async.forEachOf(validConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * }).catch( err => { + * console.error(err); + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * }).catch( err => { + * console.error(err); + * // JSON parse error exception + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.forEachOf(validConfigFileMap, parseFile); + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * catch (err) { + * console.log(err); + * } + * } + * + * //Error handing + * async () => { + * try { + * let result = await async.forEachOf(invalidConfigFileMap, parseFile); + * console.log(configs); + * } + * catch (err) { + * console.log(err); + * // JSON parse error exception + * } + * } + * + */ + function eachOf(coll, iteratee, callback) { + var eachOfImplementation = isArrayLike(coll) ? eachOfArrayLike : eachOfGeneric; + return eachOfImplementation(coll, wrapAsync(iteratee), callback); + } + + var eachOf$1 = awaitify(eachOf, 3); + + /** + * Produces a new collection of values by mapping each value in `coll` through + * the `iteratee` function. The `iteratee` is called with an item from `coll` + * and a callback for when it has finished processing. Each of these callbacks + * takes 2 arguments: an `error`, and the transformed item from `coll`. If + * `iteratee` passes an error to its callback, the main `callback` (for the + * `map` function) is immediately called with the error. + * + * Note, that since this function applies the `iteratee` to each item in + * parallel, there is no guarantee that the `iteratee` functions will complete + * in order. However, the results array will be in the same order as the + * original `coll`. + * + * If `map` is passed an Object, the results will be an Array. The results + * will roughly be in the order of the original Objects' keys (but this can + * vary across JavaScript engines). + * + * @name map + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an Array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.map(fileList, getFileSizeInBytes, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * } + * }); + * + * // Error Handling + * async.map(withMissingFileList, getFileSizeInBytes, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.map(fileList, getFileSizeInBytes) + * .then( results => { + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.map(withMissingFileList, getFileSizeInBytes) + * .then( results => { + * console.log(results); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.map(fileList, getFileSizeInBytes); + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.map(withMissingFileList, getFileSizeInBytes); + * console.log(results); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ + function map (coll, iteratee, callback) { + return _asyncMap(eachOf$1, coll, iteratee, callback) + } + var map$1 = awaitify(map, 3); + + /** + * Applies the provided arguments to each function in the array, calling + * `callback` after all functions have completed. If you only provide the first + * argument, `fns`, then it will return a function which lets you pass in the + * arguments as if it were a single function call. If more arguments are + * provided, `callback` is required while `args` is still optional. The results + * for each of the applied async functions are passed to the final callback + * as an array. + * + * @name applyEach + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s + * to all call with the same arguments + * @param {...*} [args] - any number of separate arguments to pass to the + * function. + * @param {Function} [callback] - the final argument should be the callback, + * called when all functions have completed processing. + * @returns {AsyncFunction} - Returns a function that takes no args other than + * an optional callback, that is the result of applying the `args` to each + * of the functions. + * @example + * + * const appliedFn = async.applyEach([enableSearch, updateSchema], 'bucket') + * + * appliedFn((err, results) => { + * // results[0] is the results for `enableSearch` + * // results[1] is the results for `updateSchema` + * }); + * + * // partial application example: + * async.each( + * buckets, + * async (bucket) => async.applyEach([enableSearch, updateSchema], bucket)(), + * callback + * ); + */ + var applyEach = applyEach$1(map$1); + + /** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time. + * + * @name eachOfSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ + function eachOfSeries(coll, iteratee, callback) { + return eachOfLimit$1(coll, 1, iteratee, callback) + } + var eachOfSeries$1 = awaitify(eachOfSeries, 3); + + /** + * The same as [`map`]{@link module:Collections.map} but runs only a single async operation at a time. + * + * @name mapSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.map]{@link module:Collections.map} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ + function mapSeries (coll, iteratee, callback) { + return _asyncMap(eachOfSeries$1, coll, iteratee, callback) + } + var mapSeries$1 = awaitify(mapSeries, 3); + + /** + * The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time. + * + * @name applyEachSeries + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.applyEach]{@link module:ControlFlow.applyEach} + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s to all + * call with the same arguments + * @param {...*} [args] - any number of separate arguments to pass to the + * function. + * @param {Function} [callback] - the final argument should be the callback, + * called when all functions have completed processing. + * @returns {AsyncFunction} - A function, that when called, is the result of + * appling the `args` to the list of functions. It takes no args, other than + * a callback. + */ + var applyEachSeries = applyEach$1(mapSeries$1); + + const PROMISE_SYMBOL = Symbol('promiseCallback'); + + function promiseCallback () { + let resolve, reject; + function callback (err, ...args) { + if (err) return reject(err) + resolve(args.length > 1 ? args : args[0]); + } + + callback[PROMISE_SYMBOL] = new Promise((res, rej) => { + resolve = res, + reject = rej; + }); + + return callback + } + + /** + * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on + * their requirements. Each function can optionally depend on other functions + * being completed first, and each function is run as soon as its requirements + * are satisfied. + * + * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence + * will stop. Further tasks will not execute (so any other functions depending + * on it will not run), and the main `callback` is immediately called with the + * error. + * + * {@link AsyncFunction}s also receive an object containing the results of functions which + * have completed so far as the first argument, if they have dependencies. If a + * task function has no dependencies, it will only be passed a callback. + * + * @name auto + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Object} tasks - An object. Each of its properties is either a + * function or an array of requirements, with the {@link AsyncFunction} itself the last item + * in the array. The object's key of a property serves as the name of the task + * defined by that property, i.e. can be used when specifying requirements for + * other tasks. The function receives one or two arguments: + * * a `results` object, containing the results of the previously executed + * functions, only passed if the task has any dependencies, + * * a `callback(err, result)` function, which must be called when finished, + * passing an `error` (which can be `null`) and the result of the function's + * execution. + * @param {number} [concurrency=Infinity] - An optional `integer` for + * determining the maximum number of tasks that can be run in parallel. By + * default, as many as possible. + * @param {Function} [callback] - An optional callback which is called when all + * the tasks have been completed. It receives the `err` argument if any `tasks` + * pass an error to their callback. Results are always returned; however, if an + * error occurs, no further `tasks` will be performed, and the results object + * will only contain partial results. Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + * @example + * + * //Using Callbacks + * async.auto({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }, function(err, results) { + * if (err) { + * console.log('err = ', err); + * } + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * }); + * + * //Using Promises + * async.auto({ + * get_data: function(callback) { + * console.log('in get_data'); + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * console.log('in make_folder'); + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }).then(results => { + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * }).catch(err => { + * console.log('err = ', err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.auto({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }); + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function auto(tasks, concurrency, callback) { + if (typeof concurrency !== 'number') { + // concurrency is optional, shift the args. + callback = concurrency; + concurrency = null; + } + callback = once(callback || promiseCallback()); + var numTasks = Object.keys(tasks).length; + if (!numTasks) { + return callback(null); + } + if (!concurrency) { + concurrency = numTasks; + } + + var results = {}; + var runningTasks = 0; + var canceled = false; + var hasError = false; + + var listeners = Object.create(null); + + var readyTasks = []; + + // for cycle detection: + var readyToCheck = []; // tasks that have been identified as reachable + // without the possibility of returning to an ancestor task + var uncheckedDependencies = {}; + + Object.keys(tasks).forEach(key => { + var task = tasks[key]; + if (!Array.isArray(task)) { + // no dependencies + enqueueTask(key, [task]); + readyToCheck.push(key); + return; + } + + var dependencies = task.slice(0, task.length - 1); + var remainingDependencies = dependencies.length; + if (remainingDependencies === 0) { + enqueueTask(key, task); + readyToCheck.push(key); + return; + } + uncheckedDependencies[key] = remainingDependencies; + + dependencies.forEach(dependencyName => { + if (!tasks[dependencyName]) { + throw new Error('async.auto task `' + key + + '` has a non-existent dependency `' + + dependencyName + '` in ' + + dependencies.join(', ')); + } + addListener(dependencyName, () => { + remainingDependencies--; + if (remainingDependencies === 0) { + enqueueTask(key, task); + } + }); + }); + }); + + checkForDeadlocks(); + processQueue(); + + function enqueueTask(key, task) { + readyTasks.push(() => runTask(key, task)); + } + + function processQueue() { + if (canceled) return + if (readyTasks.length === 0 && runningTasks === 0) { + return callback(null, results); + } + while(readyTasks.length && runningTasks < concurrency) { + var run = readyTasks.shift(); + run(); + } + + } + + function addListener(taskName, fn) { + var taskListeners = listeners[taskName]; + if (!taskListeners) { + taskListeners = listeners[taskName] = []; + } + + taskListeners.push(fn); + } + + function taskComplete(taskName) { + var taskListeners = listeners[taskName] || []; + taskListeners.forEach(fn => fn()); + processQueue(); + } + + + function runTask(key, task) { + if (hasError) return; + + var taskCallback = onlyOnce((err, ...result) => { + runningTasks--; + if (err === false) { + canceled = true; + return + } + if (result.length < 2) { + [result] = result; + } + if (err) { + var safeResults = {}; + Object.keys(results).forEach(rkey => { + safeResults[rkey] = results[rkey]; + }); + safeResults[key] = result; + hasError = true; + listeners = Object.create(null); + if (canceled) return + callback(err, safeResults); + } else { + results[key] = result; + taskComplete(key); + } + }); + + runningTasks++; + var taskFn = wrapAsync(task[task.length - 1]); + if (task.length > 1) { + taskFn(results, taskCallback); + } else { + taskFn(taskCallback); + } + } + + function checkForDeadlocks() { + // Kahn's algorithm + // https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm + // http://connalle.blogspot.com/2013/10/topological-sortingkahn-algorithm.html + var currentTask; + var counter = 0; + while (readyToCheck.length) { + currentTask = readyToCheck.pop(); + counter++; + getDependents(currentTask).forEach(dependent => { + if (--uncheckedDependencies[dependent] === 0) { + readyToCheck.push(dependent); + } + }); + } + + if (counter !== numTasks) { + throw new Error( + 'async.auto cannot execute tasks due to a recursive dependency' + ); + } + } + + function getDependents(taskName) { + var result = []; + Object.keys(tasks).forEach(key => { + const task = tasks[key]; + if (Array.isArray(task) && task.indexOf(taskName) >= 0) { + result.push(key); + } + }); + return result; + } + + return callback[PROMISE_SYMBOL] + } + + var FN_ARGS = /^(?:async\s)?(?:function)?\s*(?:\w+\s*)?\(([^)]+)\)(?:\s*{)/; + var ARROW_FN_ARGS = /^(?:async\s)?\s*(?:\(\s*)?((?:[^)=\s]\s*)*)(?:\)\s*)?=>/; + var FN_ARG_SPLIT = /,/; + var FN_ARG = /(=.+)?(\s*)$/; + + function stripComments(string) { + let stripped = ''; + let index = 0; + let endBlockComment = string.indexOf('*/'); + while (index < string.length) { + if (string[index] === '/' && string[index+1] === '/') { + // inline comment + let endIndex = string.indexOf('\n', index); + index = (endIndex === -1) ? string.length : endIndex; + } else if ((endBlockComment !== -1) && (string[index] === '/') && (string[index+1] === '*')) { + // block comment + let endIndex = string.indexOf('*/', index); + if (endIndex !== -1) { + index = endIndex + 2; + endBlockComment = string.indexOf('*/', index); + } else { + stripped += string[index]; + index++; + } + } else { + stripped += string[index]; + index++; + } + } + return stripped; + } + + function parseParams(func) { + const src = stripComments(func.toString()); + let match = src.match(FN_ARGS); + if (!match) { + match = src.match(ARROW_FN_ARGS); + } + if (!match) throw new Error('could not parse args in autoInject\nSource:\n' + src) + let [, args] = match; + return args + .replace(/\s/g, '') + .split(FN_ARG_SPLIT) + .map((arg) => arg.replace(FN_ARG, '').trim()); + } + + /** + * A dependency-injected version of the [async.auto]{@link module:ControlFlow.auto} function. Dependent + * tasks are specified as parameters to the function, after the usual callback + * parameter, with the parameter names matching the names of the tasks it + * depends on. This can provide even more readable task graphs which can be + * easier to maintain. + * + * If a final callback is specified, the task results are similarly injected, + * specified as named parameters after the initial error parameter. + * + * The autoInject function is purely syntactic sugar and its semantics are + * otherwise equivalent to [async.auto]{@link module:ControlFlow.auto}. + * + * @name autoInject + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.auto]{@link module:ControlFlow.auto} + * @category Control Flow + * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of + * the form 'func([dependencies...], callback). The object's key of a property + * serves as the name of the task defined by that property, i.e. can be used + * when specifying requirements for other tasks. + * * The `callback` parameter is a `callback(err, result)` which must be called + * when finished, passing an `error` (which can be `null`) and the result of + * the function's execution. The remaining parameters name other tasks on + * which the task is dependent, and the results from those tasks are the + * arguments of those parameters. + * @param {Function} [callback] - An optional callback which is called when all + * the tasks have been completed. It receives the `err` argument if any `tasks` + * pass an error to their callback, and a `results` object with any completed + * task results, similar to `auto`. + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // The example from `auto` can be rewritten as follows: + * async.autoInject({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: function(get_data, make_folder, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }, + * email_link: function(write_file, callback) { + * // once the file is written let's email a link to it... + * // write_file contains the filename returned by write_file. + * callback(null, {'file':write_file, 'email':'user@example.com'}); + * } + * }, function(err, results) { + * console.log('err = ', err); + * console.log('email_link = ', results.email_link); + * }); + * + * // If you are using a JS minifier that mangles parameter names, `autoInject` + * // will not work with plain functions, since the parameter names will be + * // collapsed to a single letter identifier. To work around this, you can + * // explicitly specify the names of the parameters your task function needs + * // in an array, similar to Angular.js dependency injection. + * + * // This still has an advantage over plain `auto`, since the results a task + * // depends on are still spread into arguments. + * async.autoInject({ + * //... + * write_file: ['get_data', 'make_folder', function(get_data, make_folder, callback) { + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(write_file, callback) { + * callback(null, {'file':write_file, 'email':'user@example.com'}); + * }] + * //... + * }, function(err, results) { + * console.log('err = ', err); + * console.log('email_link = ', results.email_link); + * }); + */ + function autoInject(tasks, callback) { + var newTasks = {}; + + Object.keys(tasks).forEach(key => { + var taskFn = tasks[key]; + var params; + var fnIsAsync = isAsync(taskFn); + var hasNoDeps = + (!fnIsAsync && taskFn.length === 1) || + (fnIsAsync && taskFn.length === 0); + + if (Array.isArray(taskFn)) { + params = [...taskFn]; + taskFn = params.pop(); + + newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn); + } else if (hasNoDeps) { + // no dependencies, use the function as-is + newTasks[key] = taskFn; + } else { + params = parseParams(taskFn); + if ((taskFn.length === 0 && !fnIsAsync) && params.length === 0) { + throw new Error("autoInject task functions require explicit parameters."); + } + + // remove callback param + if (!fnIsAsync) params.pop(); + + newTasks[key] = params.concat(newTask); + } + + function newTask(results, taskCb) { + var newArgs = params.map(name => results[name]); + newArgs.push(taskCb); + wrapAsync(taskFn)(...newArgs); + } + }); + + return auto(newTasks, callback); + } + + // Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation + // used for queues. This implementation assumes that the node provided by the user can be modified + // to adjust the next and last properties. We implement only the minimal functionality + // for queue support. + class DLL { + constructor() { + this.head = this.tail = null; + this.length = 0; + } + + removeLink(node) { + if (node.prev) node.prev.next = node.next; + else this.head = node.next; + if (node.next) node.next.prev = node.prev; + else this.tail = node.prev; + + node.prev = node.next = null; + this.length -= 1; + return node; + } + + empty () { + while(this.head) this.shift(); + return this; + } + + insertAfter(node, newNode) { + newNode.prev = node; + newNode.next = node.next; + if (node.next) node.next.prev = newNode; + else this.tail = newNode; + node.next = newNode; + this.length += 1; + } + + insertBefore(node, newNode) { + newNode.prev = node.prev; + newNode.next = node; + if (node.prev) node.prev.next = newNode; + else this.head = newNode; + node.prev = newNode; + this.length += 1; + } + + unshift(node) { + if (this.head) this.insertBefore(this.head, node); + else setInitial(this, node); + } + + push(node) { + if (this.tail) this.insertAfter(this.tail, node); + else setInitial(this, node); + } + + shift() { + return this.head && this.removeLink(this.head); + } + + pop() { + return this.tail && this.removeLink(this.tail); + } + + toArray() { + return [...this] + } + + *[Symbol.iterator] () { + var cur = this.head; + while (cur) { + yield cur.data; + cur = cur.next; + } + } + + remove (testFn) { + var curr = this.head; + while(curr) { + var {next} = curr; + if (testFn(curr)) { + this.removeLink(curr); + } + curr = next; + } + return this; + } + } + + function setInitial(dll, node) { + dll.length = 1; + dll.head = dll.tail = node; + } + + function queue$1(worker, concurrency, payload) { + if (concurrency == null) { + concurrency = 1; + } + else if(concurrency === 0) { + throw new RangeError('Concurrency must not be zero'); + } + + var _worker = wrapAsync(worker); + var numRunning = 0; + var workersList = []; + const events = { + error: [], + drain: [], + saturated: [], + unsaturated: [], + empty: [] + }; + + function on (event, handler) { + events[event].push(handler); + } + + function once (event, handler) { + const handleAndRemove = (...args) => { + off(event, handleAndRemove); + handler(...args); + }; + events[event].push(handleAndRemove); + } + + function off (event, handler) { + if (!event) return Object.keys(events).forEach(ev => events[ev] = []) + if (!handler) return events[event] = [] + events[event] = events[event].filter(ev => ev !== handler); + } + + function trigger (event, ...args) { + events[event].forEach(handler => handler(...args)); + } + + var processingScheduled = false; + function _insert(data, insertAtFront, rejectOnError, callback) { + if (callback != null && typeof callback !== 'function') { + throw new Error('task callback must be a function'); + } + q.started = true; + + var res, rej; + function promiseCallback (err, ...args) { + // we don't care about the error, let the global error handler + // deal with it + if (err) return rejectOnError ? rej(err) : res() + if (args.length <= 1) return res(args[0]) + res(args); + } + + var item = q._createTaskItem( + data, + rejectOnError ? promiseCallback : + (callback || promiseCallback) + ); + + if (insertAtFront) { + q._tasks.unshift(item); + } else { + q._tasks.push(item); + } + + if (!processingScheduled) { + processingScheduled = true; + setImmediate$1(() => { + processingScheduled = false; + q.process(); + }); + } + + if (rejectOnError || !callback) { + return new Promise((resolve, reject) => { + res = resolve; + rej = reject; + }) + } + } + + function _createCB(tasks) { + return function (err, ...args) { + numRunning -= 1; + + for (var i = 0, l = tasks.length; i < l; i++) { + var task = tasks[i]; + + var index = workersList.indexOf(task); + if (index === 0) { + workersList.shift(); + } else if (index > 0) { + workersList.splice(index, 1); + } + + task.callback(err, ...args); + + if (err != null) { + trigger('error', err, task.data); + } + } + + if (numRunning <= (q.concurrency - q.buffer) ) { + trigger('unsaturated'); + } + + if (q.idle()) { + trigger('drain'); + } + q.process(); + }; + } + + function _maybeDrain(data) { + if (data.length === 0 && q.idle()) { + // call drain immediately if there are no tasks + setImmediate$1(() => trigger('drain')); + return true + } + return false + } + + const eventMethod = (name) => (handler) => { + if (!handler) { + return new Promise((resolve, reject) => { + once(name, (err, data) => { + if (err) return reject(err) + resolve(data); + }); + }) + } + off(name); + on(name, handler); + + }; + + var isProcessing = false; + var q = { + _tasks: new DLL(), + _createTaskItem (data, callback) { + return { + data, + callback + }; + }, + *[Symbol.iterator] () { + yield* q._tasks[Symbol.iterator](); + }, + concurrency, + payload, + buffer: concurrency / 4, + started: false, + paused: false, + push (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, false, false, callback)) + } + return _insert(data, false, false, callback); + }, + pushAsync (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, false, true, callback)) + } + return _insert(data, false, true, callback); + }, + kill () { + off(); + q._tasks.empty(); + }, + unshift (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, true, false, callback)) + } + return _insert(data, true, false, callback); + }, + unshiftAsync (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, true, true, callback)) + } + return _insert(data, true, true, callback); + }, + remove (testFn) { + q._tasks.remove(testFn); + }, + process () { + // Avoid trying to start too many processing operations. This can occur + // when callbacks resolve synchronously (#1267). + if (isProcessing) { + return; + } + isProcessing = true; + while(!q.paused && numRunning < q.concurrency && q._tasks.length){ + var tasks = [], data = []; + var l = q._tasks.length; + if (q.payload) l = Math.min(l, q.payload); + for (var i = 0; i < l; i++) { + var node = q._tasks.shift(); + tasks.push(node); + workersList.push(node); + data.push(node.data); + } + + numRunning += 1; + + if (q._tasks.length === 0) { + trigger('empty'); + } + + if (numRunning === q.concurrency) { + trigger('saturated'); + } + + var cb = onlyOnce(_createCB(tasks)); + _worker(data, cb); + } + isProcessing = false; + }, + length () { + return q._tasks.length; + }, + running () { + return numRunning; + }, + workersList () { + return workersList; + }, + idle() { + return q._tasks.length + numRunning === 0; + }, + pause () { + q.paused = true; + }, + resume () { + if (q.paused === false) { return; } + q.paused = false; + setImmediate$1(q.process); + } + }; + // define these as fixed properties, so people get useful errors when updating + Object.defineProperties(q, { + saturated: { + writable: false, + value: eventMethod('saturated') + }, + unsaturated: { + writable: false, + value: eventMethod('unsaturated') + }, + empty: { + writable: false, + value: eventMethod('empty') + }, + drain: { + writable: false, + value: eventMethod('drain') + }, + error: { + writable: false, + value: eventMethod('error') + }, + }); + return q; + } + + /** + * Creates a `cargo` object with the specified payload. Tasks added to the + * cargo will be processed altogether (up to the `payload` limit). If the + * `worker` is in progress, the task is queued until it becomes available. Once + * the `worker` has completed some tasks, each callback of those tasks is + * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) + * for how `cargo` and `queue` work. + * + * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers + * at a time, cargo passes an array of tasks to a single worker, repeating + * when the worker is finished. + * + * @name cargo + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @category Control Flow + * @param {AsyncFunction} worker - An asynchronous function for processing an array + * of queued tasks. Invoked with `(tasks, callback)`. + * @param {number} [payload=Infinity] - An optional `integer` for determining + * how many tasks should be processed per round; if omitted, the default is + * unlimited. + * @returns {module:ControlFlow.QueueObject} A cargo object to manage the tasks. Callbacks can + * attached as certain properties to listen for specific events during the + * lifecycle of the cargo and inner queue. + * @example + * + * // create a cargo object with payload 2 + * var cargo = async.cargo(function(tasks, callback) { + * for (var i=0; i<tasks.length; i++) { + * console.log('hello ' + tasks[i].name); + * } + * callback(); + * }, 2); + * + * // add some items + * cargo.push({name: 'foo'}, function(err) { + * console.log('finished processing foo'); + * }); + * cargo.push({name: 'bar'}, function(err) { + * console.log('finished processing bar'); + * }); + * await cargo.push({name: 'baz'}); + * console.log('finished processing baz'); + */ + function cargo$1(worker, payload) { + return queue$1(worker, 1, payload); + } + + /** + * Creates a `cargoQueue` object with the specified payload. Tasks added to the + * cargoQueue will be processed together (up to the `payload` limit) in `concurrency` parallel workers. + * If the all `workers` are in progress, the task is queued until one becomes available. Once + * a `worker` has completed some tasks, each callback of those tasks is + * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) + * for how `cargo` and `queue` work. + * + * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers + * at a time, and [`cargo`]{@link module:ControlFlow.cargo} passes an array of tasks to a single worker, + * the cargoQueue passes an array of tasks to multiple parallel workers. + * + * @name cargoQueue + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @see [async.cargo]{@link module:ControlFLow.cargo} + * @category Control Flow + * @param {AsyncFunction} worker - An asynchronous function for processing an array + * of queued tasks. Invoked with `(tasks, callback)`. + * @param {number} [concurrency=1] - An `integer` for determining how many + * `worker` functions should be run in parallel. If omitted, the concurrency + * defaults to `1`. If the concurrency is `0`, an error is thrown. + * @param {number} [payload=Infinity] - An optional `integer` for determining + * how many tasks should be processed per round; if omitted, the default is + * unlimited. + * @returns {module:ControlFlow.QueueObject} A cargoQueue object to manage the tasks. Callbacks can + * attached as certain properties to listen for specific events during the + * lifecycle of the cargoQueue and inner queue. + * @example + * + * // create a cargoQueue object with payload 2 and concurrency 2 + * var cargoQueue = async.cargoQueue(function(tasks, callback) { + * for (var i=0; i<tasks.length; i++) { + * console.log('hello ' + tasks[i].name); + * } + * callback(); + * }, 2, 2); + * + * // add some items + * cargoQueue.push({name: 'foo'}, function(err) { + * console.log('finished processing foo'); + * }); + * cargoQueue.push({name: 'bar'}, function(err) { + * console.log('finished processing bar'); + * }); + * cargoQueue.push({name: 'baz'}, function(err) { + * console.log('finished processing baz'); + * }); + * cargoQueue.push({name: 'boo'}, function(err) { + * console.log('finished processing boo'); + * }); + */ + function cargo(worker, concurrency, payload) { + return queue$1(worker, concurrency, payload); + } + + /** + * Reduces `coll` into a single value using an async `iteratee` to return each + * successive step. `memo` is the initial state of the reduction. This function + * only operates in series. + * + * For performance reasons, it may make sense to split a call to this function + * into a parallel map, and then use the normal `Array.prototype.reduce` on the + * results. This function is for situations where each step in the reduction + * needs to be async; if you can get the data before reducing it, then it's + * probably a good idea to do so. + * + * @name reduce + * @static + * @memberOf module:Collections + * @method + * @alias inject + * @alias foldl + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file3.txt', 'file4.txt']; + * + * // asynchronous function that computes the file size in bytes + * // file size is added to the memoized value, then returned + * function getFileSizeInBytes(memo, file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, memo + stat.size); + * }); + * } + * + * // Using callbacks + * async.reduce(fileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.reduce(fileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.reduce(fileList, 0, getFileSizeInBytes); + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.reduce(withMissingFileList, 0, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ + function reduce(coll, memo, iteratee, callback) { + callback = once(callback); + var _iteratee = wrapAsync(iteratee); + return eachOfSeries$1(coll, (x, i, iterCb) => { + _iteratee(memo, x, (err, v) => { + memo = v; + iterCb(err); + }); + }, err => callback(err, memo)); + } + var reduce$1 = awaitify(reduce, 4); + + /** + * Version of the compose function that is more natural to read. Each function + * consumes the return value of the previous function. It is the equivalent of + * [compose]{@link module:ControlFlow.compose} with the arguments reversed. + * + * Each function is executed with the `this` binding of the composed function. + * + * @name seq + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.compose]{@link module:ControlFlow.compose} + * @category Control Flow + * @param {...AsyncFunction} functions - the asynchronous functions to compose + * @returns {Function} a function that composes the `functions` in order + * @example + * + * // Requires lodash (or underscore), express3 and dresende's orm2. + * // Part of an app, that fetches cats of the logged user. + * // This example uses `seq` function to avoid overnesting and error + * // handling clutter. + * app.get('/cats', function(request, response) { + * var User = request.models.User; + * async.seq( + * User.get.bind(User), // 'User.get' has signature (id, callback(err, data)) + * function(user, fn) { + * user.getCats(fn); // 'getCats' has signature (callback(err, data)) + * } + * )(req.session.user_id, function (err, cats) { + * if (err) { + * console.error(err); + * response.json({ status: 'error', message: err.message }); + * } else { + * response.json({ status: 'ok', message: 'Cats found', data: cats }); + * } + * }); + * }); + */ + function seq(...functions) { + var _functions = functions.map(wrapAsync); + return function (...args) { + var that = this; + + var cb = args[args.length - 1]; + if (typeof cb == 'function') { + args.pop(); + } else { + cb = promiseCallback(); + } + + reduce$1(_functions, args, (newargs, fn, iterCb) => { + fn.apply(that, newargs.concat((err, ...nextargs) => { + iterCb(err, nextargs); + })); + }, + (err, results) => cb(err, ...results)); + + return cb[PROMISE_SYMBOL] + }; + } + + /** + * Creates a function which is a composition of the passed asynchronous + * functions. Each function consumes the return value of the function that + * follows. Composing functions `f()`, `g()`, and `h()` would produce the result + * of `f(g(h()))`, only this version uses callbacks to obtain the return values. + * + * If the last argument to the composed function is not a function, a promise + * is returned when you call it. + * + * Each function is executed with the `this` binding of the composed function. + * + * @name compose + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {...AsyncFunction} functions - the asynchronous functions to compose + * @returns {Function} an asynchronous function that is the composed + * asynchronous `functions` + * @example + * + * function add1(n, callback) { + * setTimeout(function () { + * callback(null, n + 1); + * }, 10); + * } + * + * function mul3(n, callback) { + * setTimeout(function () { + * callback(null, n * 3); + * }, 10); + * } + * + * var add1mul3 = async.compose(mul3, add1); + * add1mul3(4, function (err, result) { + * // result now equals 15 + * }); + */ + function compose(...args) { + return seq(...args.reverse()); + } + + /** + * The same as [`map`]{@link module:Collections.map} but runs a maximum of `limit` async operations at a time. + * + * @name mapLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.map]{@link module:Collections.map} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ + function mapLimit (coll, limit, iteratee, callback) { + return _asyncMap(eachOfLimit$2(limit), coll, iteratee, callback) + } + var mapLimit$1 = awaitify(mapLimit, 4); + + /** + * The same as [`concat`]{@link module:Collections.concat} but runs a maximum of `limit` async operations at a time. + * + * @name concatLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapLimit + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ + function concatLimit(coll, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(coll, limit, (val, iterCb) => { + _iteratee(val, (err, ...args) => { + if (err) return iterCb(err); + return iterCb(err, args); + }); + }, (err, mapResults) => { + var result = []; + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + result = result.concat(...mapResults[i]); + } + } + + return callback(err, result); + }); + } + var concatLimit$1 = awaitify(concatLimit, 4); + + /** + * Applies `iteratee` to each item in `coll`, concatenating the results. Returns + * the concatenated list. The `iteratee`s are called in parallel, and the + * results are concatenated as they return. The results array will be returned in + * the original order of `coll` passed to the `iteratee` function. + * + * @name concat + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @alias flatMap + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * let directoryList = ['dir1','dir2','dir3']; + * let withMissingDirectoryList = ['dir1','dir2','dir3', 'dir4']; + * + * // Using callbacks + * async.concat(directoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.concat(directoryList, fs.readdir) + * .then(results => { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir) + * .then(results => { + * console.log(results); + * }).catch(err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.concat(directoryList, fs.readdir); + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.concat(withMissingDirectoryList, fs.readdir); + * console.log(results); + * } catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } + * } + * + */ + function concat(coll, iteratee, callback) { + return concatLimit$1(coll, Infinity, iteratee, callback) + } + var concat$1 = awaitify(concat, 3); + + /** + * The same as [`concat`]{@link module:Collections.concat} but runs only a single async operation at a time. + * + * @name concatSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapSeries + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`. + * The iteratee should complete with an array an array of results. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ + function concatSeries(coll, iteratee, callback) { + return concatLimit$1(coll, 1, iteratee, callback) + } + var concatSeries$1 = awaitify(concatSeries, 3); + + /** + * Returns a function that when called, calls-back with the values provided. + * Useful as the first function in a [`waterfall`]{@link module:ControlFlow.waterfall}, or for plugging values in to + * [`auto`]{@link module:ControlFlow.auto}. + * + * @name constant + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {...*} arguments... - Any number of arguments to automatically invoke + * callback with. + * @returns {AsyncFunction} Returns a function that when invoked, automatically + * invokes the callback with the previous given arguments. + * @example + * + * async.waterfall([ + * async.constant(42), + * function (value, next) { + * // value === 42 + * }, + * //... + * ], callback); + * + * async.waterfall([ + * async.constant(filename, "utf8"), + * fs.readFile, + * function (fileData, next) { + * //... + * } + * //... + * ], callback); + * + * async.auto({ + * hostname: async.constant("https://server.net/"), + * port: findFreePort, + * launchServer: ["hostname", "port", function (options, cb) { + * startServer(options, cb); + * }], + * //... + * }, callback); + */ + function constant$1(...args) { + return function (...ignoredArgs/*, callback*/) { + var callback = ignoredArgs.pop(); + return callback(null, ...args); + }; + } + + function _createTester(check, getResult) { + return (eachfn, arr, _iteratee, cb) => { + var testPassed = false; + var testResult; + const iteratee = wrapAsync(_iteratee); + eachfn(arr, (value, _, callback) => { + iteratee(value, (err, result) => { + if (err || err === false) return callback(err); + + if (check(result) && !testResult) { + testPassed = true; + testResult = getResult(true, value); + return callback(null, breakLoop); + } + callback(); + }); + }, err => { + if (err) return cb(err); + cb(null, testPassed ? testResult : getResult(false)); + }); + }; + } + + /** + * Returns the first value in `coll` that passes an async truth test. The + * `iteratee` is applied in parallel, meaning the first iteratee to return + * `true` will fire the detect `callback` with that result. That means the + * result might not be the first item in the original `coll` (in terms of order) + * that passes the test. + + * If order within the original `coll` is important, then look at + * [`detectSeries`]{@link module:Collections.detectSeries}. + * + * @name detect + * @static + * @memberOf module:Collections + * @method + * @alias find + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * } + *); + * + * // Using Promises + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists) + * .then(result => { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists); + * console.log(result); + * // dir1/file1.txt + * // result now equals the file in the list that exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function detect(coll, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOf$1, coll, iteratee, callback) + } + var detect$1 = awaitify(detect, 3); + + /** + * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a + * time. + * + * @name detectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findLimit + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ + function detectLimit(coll, limit, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOfLimit$2(limit), coll, iteratee, callback) + } + var detectLimit$1 = awaitify(detectLimit, 4); + + /** + * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time. + * + * @name detectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findSeries + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ + function detectSeries(coll, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOfLimit$2(1), coll, iteratee, callback) + } + + var detectSeries$1 = awaitify(detectSeries, 3); + + function consoleFunc(name) { + return (fn, ...args) => wrapAsync(fn)(...args, (err, ...resultArgs) => { + /* istanbul ignore else */ + if (typeof console === 'object') { + /* istanbul ignore else */ + if (err) { + /* istanbul ignore else */ + if (console.error) { + console.error(err); + } + } else if (console[name]) { /* istanbul ignore else */ + resultArgs.forEach(x => console[name](x)); + } + } + }) + } + + /** + * Logs the result of an [`async` function]{@link AsyncFunction} to the + * `console` using `console.dir` to display the properties of the resulting object. + * Only works in Node.js or in browsers that support `console.dir` and + * `console.error` (such as FF and Chrome). + * If multiple arguments are returned from the async function, + * `console.dir` is called on each argument in order. + * + * @name dir + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. + * @param {...*} arguments... - Any number of arguments to apply to the function. + * @example + * + * // in a module + * var hello = function(name, callback) { + * setTimeout(function() { + * callback(null, {hello: name}); + * }, 1000); + * }; + * + * // in the node repl + * node> async.dir(hello, 'world'); + * {hello: 'world'} + */ + var dir = consoleFunc('dir'); + + /** + * The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in + * the order of operations, the arguments `test` and `iteratee` are switched. + * + * `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. + * + * @name doWhilst + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - A function which is called each time `test` + * passes. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee`. + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. + * `callback` will be passed an error and any arguments passed to the final + * `iteratee`'s callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ + function doWhilst(iteratee, test, callback) { + callback = onlyOnce(callback); + var _fn = wrapAsync(iteratee); + var _test = wrapAsync(test); + var results; + + function next(err, ...args) { + if (err) return callback(err); + if (err === false) return; + results = args; + _test(...args, check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return check(null, true); + } + + var doWhilst$1 = awaitify(doWhilst, 3); + + /** + * Like ['doWhilst']{@link module:ControlFlow.doWhilst}, except the `test` is inverted. Note the + * argument ordering differs from `until`. + * + * @name doUntil + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.doWhilst]{@link module:ControlFlow.doWhilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee` + * @param {Function} [callback] - A callback which is called after the test + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ + function doUntil(iteratee, test, callback) { + const _test = wrapAsync(test); + return doWhilst$1(iteratee, (...args) => { + const cb = args.pop(); + _test(...args, (err, truth) => cb (err, !truth)); + }, callback); + } + + function _withoutIndex(iteratee) { + return (value, index, callback) => iteratee(value, callback); + } + + /** + * Applies the function `iteratee` to each item in `coll`, in parallel. + * The `iteratee` is called with an item from the list, and a callback for when + * it has finished. If the `iteratee` passes an error to its `callback`, the + * main `callback` (for the `each` function) is immediately called with the + * error. + * + * Note, that since this function applies `iteratee` to each item in parallel, + * there is no guarantee that the iteratee functions will complete in order. + * + * @name each + * @static + * @memberOf module:Collections + * @method + * @alias forEach + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to + * each item in `coll`. Invoked with (item, callback). + * The array index is not passed to the iteratee. + * If you need the index, use `eachOf`. + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = [ 'dir1/file2.txt', 'dir2/file3.txt', 'dir/file5.txt']; + * const withMissingFileList = ['dir1/file1.txt', 'dir4/file2.txt']; + * + * // asynchronous function that deletes a file + * const deleteFile = function(file, callback) { + * fs.unlink(file, callback); + * }; + * + * // Using callbacks + * async.each(fileList, deleteFile, function(err) { + * if( err ) { + * console.log(err); + * } else { + * console.log('All files have been deleted successfully'); + * } + * }); + * + * // Error Handling + * async.each(withMissingFileList, deleteFile, function(err){ + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using Promises + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using async/await + * async () => { + * try { + * await async.each(files, deleteFile); + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * await async.each(withMissingFileList, deleteFile); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * } + * } + * + */ + function eachLimit$2(coll, iteratee, callback) { + return eachOf$1(coll, _withoutIndex(wrapAsync(iteratee)), callback); + } + + var each = awaitify(eachLimit$2, 3); + + /** + * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time. + * + * @name eachLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfLimit`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ + function eachLimit(coll, limit, iteratee, callback) { + return eachOfLimit$2(limit)(coll, _withoutIndex(wrapAsync(iteratee)), callback); + } + var eachLimit$1 = awaitify(eachLimit, 4); + + /** + * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time. + * + * Note, that unlike [`each`]{@link module:Collections.each}, this function applies iteratee to each item + * in series and therefore the iteratee functions will complete in order. + + * @name eachSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfSeries`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ + function eachSeries(coll, iteratee, callback) { + return eachLimit$1(coll, 1, iteratee, callback) + } + var eachSeries$1 = awaitify(eachSeries, 3); + + /** + * Wrap an async function and ensure it calls its callback on a later tick of + * the event loop. If the function already calls its callback on a next tick, + * no extra deferral is added. This is useful for preventing stack overflows + * (`RangeError: Maximum call stack size exceeded`) and generally keeping + * [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) + * contained. ES2017 `async` functions are returned as-is -- they are immune + * to Zalgo's corrupting influences, as they always resolve on a later tick. + * + * @name ensureAsync + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - an async function, one that expects a node-style + * callback as its last argument. + * @returns {AsyncFunction} Returns a wrapped function with the exact same call + * signature as the function passed in. + * @example + * + * function sometimesAsync(arg, callback) { + * if (cache[arg]) { + * return callback(null, cache[arg]); // this would be synchronous!! + * } else { + * doSomeIO(arg, callback); // this IO would be asynchronous + * } + * } + * + * // this has a risk of stack overflows if many results are cached in a row + * async.mapSeries(args, sometimesAsync, done); + * + * // this will defer sometimesAsync's callback if necessary, + * // preventing stack overflows + * async.mapSeries(args, async.ensureAsync(sometimesAsync), done); + */ + function ensureAsync(fn) { + if (isAsync(fn)) return fn; + return function (...args/*, callback*/) { + var callback = args.pop(); + var sync = true; + args.push((...innerArgs) => { + if (sync) { + setImmediate$1(() => callback(...innerArgs)); + } else { + callback(...innerArgs); + } + }); + fn.apply(this, args); + sync = false; + }; + } + + /** + * Returns `true` if every element in `coll` satisfies an async test. If any + * iteratee call returns `false`, the main `callback` is immediately called. + * + * @name every + * @static + * @memberOf module:Collections + * @method + * @alias all + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file5.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.every(fileList, fileExists, function(err, result) { + * console.log(result); + * // true + * // result is true since every file exists + * }); + * + * async.every(withMissingFileList, fileExists, function(err, result) { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }); + * + * // Using Promises + * async.every(fileList, fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.every(withMissingFileList, fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.every(fileList, fileExists); + * console.log(result); + * // true + * // result is true since every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.every(withMissingFileList, fileExists); + * console.log(result); + * // false + * // result is false since NOT every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function every(coll, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOf$1, coll, iteratee, callback) + } + var every$1 = awaitify(every, 3); + + /** + * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time. + * + * @name everyLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ + function everyLimit(coll, limit, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOfLimit$2(limit), coll, iteratee, callback) + } + var everyLimit$1 = awaitify(everyLimit, 4); + + /** + * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time. + * + * @name everySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in series. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ + function everySeries(coll, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOfSeries$1, coll, iteratee, callback) + } + var everySeries$1 = awaitify(everySeries, 3); + + function filterArray(eachfn, arr, iteratee, callback) { + var truthValues = new Array(arr.length); + eachfn(arr, (x, index, iterCb) => { + iteratee(x, (err, v) => { + truthValues[index] = !!v; + iterCb(err); + }); + }, err => { + if (err) return callback(err); + var results = []; + for (var i = 0; i < arr.length; i++) { + if (truthValues[i]) results.push(arr[i]); + } + callback(null, results); + }); + } + + function filterGeneric(eachfn, coll, iteratee, callback) { + var results = []; + eachfn(coll, (x, index, iterCb) => { + iteratee(x, (err, v) => { + if (err) return iterCb(err); + if (v) { + results.push({index, value: x}); + } + iterCb(err); + }); + }, err => { + if (err) return callback(err); + callback(null, results + .sort((a, b) => a.index - b.index) + .map(v => v.value)); + }); + } + + function _filter(eachfn, coll, iteratee, callback) { + var filter = isArrayLike(coll) ? filterArray : filterGeneric; + return filter(eachfn, coll, wrapAsync(iteratee), callback); + } + + /** + * Returns a new array of all the values in `coll` which pass an async truth + * test. This operation is performed in parallel, but the results array will be + * in the same order as the original. + * + * @name filter + * @static + * @memberOf module:Collections + * @method + * @alias select + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const files = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.filter(files, fileExists, function(err, results) { + * if(err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * }); + * + * // Using Promises + * async.filter(files, fileExists) + * .then(results => { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.filter(files, fileExists); + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function filter (coll, iteratee, callback) { + return _filter(eachOf$1, coll, iteratee, callback) + } + var filter$1 = awaitify(filter, 3); + + /** + * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a + * time. + * + * @name filterLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + */ + function filterLimit (coll, limit, iteratee, callback) { + return _filter(eachOfLimit$2(limit), coll, iteratee, callback) + } + var filterLimit$1 = awaitify(filterLimit, 4); + + /** + * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time. + * + * @name filterSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results) + * @returns {Promise} a promise, if no callback provided + */ + function filterSeries (coll, iteratee, callback) { + return _filter(eachOfSeries$1, coll, iteratee, callback) + } + var filterSeries$1 = awaitify(filterSeries, 3); + + /** + * Calls the asynchronous function `fn` with a callback parameter that allows it + * to call itself again, in series, indefinitely. + + * If an error is passed to the callback then `errback` is called with the + * error, and execution stops, otherwise it will never be called. + * + * @name forever + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} fn - an async function to call repeatedly. + * Invoked with (next). + * @param {Function} [errback] - when `fn` passes an error to it's callback, + * this function will be called, and execution stops. Invoked with (err). + * @returns {Promise} a promise that rejects if an error occurs and an errback + * is not passed + * @example + * + * async.forever( + * function(next) { + * // next is suitable for passing to things that need a callback(err [, whatever]); + * // it will result in this function being called again. + * }, + * function(err) { + * // if next is called with a value in its first parameter, it will appear + * // in here as 'err', and execution will stop. + * } + * ); + */ + function forever(fn, errback) { + var done = onlyOnce(errback); + var task = wrapAsync(ensureAsync(fn)); + + function next(err) { + if (err) return done(err); + if (err === false) return; + task(next); + } + return next(); + } + var forever$1 = awaitify(forever, 2); + + /** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time. + * + * @name groupByLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + */ + function groupByLimit(coll, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(coll, limit, (val, iterCb) => { + _iteratee(val, (err, key) => { + if (err) return iterCb(err); + return iterCb(err, {key, val}); + }); + }, (err, mapResults) => { + var result = {}; + // from MDN, handle object having an `hasOwnProperty` prop + var {hasOwnProperty} = Object.prototype; + + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + var {key} = mapResults[i]; + var {val} = mapResults[i]; + + if (hasOwnProperty.call(result, key)) { + result[key].push(val); + } else { + result[key] = [val]; + } + } + } + + return callback(err, result); + }); + } + + var groupByLimit$1 = awaitify(groupByLimit, 4); + + /** + * Returns a new object, where each value corresponds to an array of items, from + * `coll`, that returned the corresponding key. That is, the keys of the object + * correspond to the values passed to the `iteratee` callback. + * + * Note: Since this function applies the `iteratee` to each item in parallel, + * there is no guarantee that the `iteratee` functions will complete in order. + * However, the values for each key in the `result` will be in the same order as + * the original `coll`. For Objects, the values will roughly be in the order of + * the original Objects' keys (but this can vary across JavaScript engines). + * + * @name groupBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const files = ['dir1/file1.txt','dir2','dir4'] + * + * // asynchronous function that detects file type as none, file, or directory + * function detectFile(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(null, 'none'); + * } + * callback(null, stat.isDirectory() ? 'directory' : 'file'); + * }); + * } + * + * //Using callbacks + * async.groupBy(files, detectFile, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * } + * }); + * + * // Using Promises + * async.groupBy(files, detectFile) + * .then( result => { + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.groupBy(files, detectFile); + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function groupBy (coll, iteratee, callback) { + return groupByLimit$1(coll, Infinity, iteratee, callback) + } + + /** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time. + * + * @name groupBySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whose + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + */ + function groupBySeries (coll, iteratee, callback) { + return groupByLimit$1(coll, 1, iteratee, callback) + } + + /** + * Logs the result of an `async` function to the `console`. Only works in + * Node.js or in browsers that support `console.log` and `console.error` (such + * as FF and Chrome). If multiple arguments are returned from the async + * function, `console.log` is called on each argument in order. + * + * @name log + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. + * @param {...*} arguments... - Any number of arguments to apply to the function. + * @example + * + * // in a module + * var hello = function(name, callback) { + * setTimeout(function() { + * callback(null, 'hello ' + name); + * }, 1000); + * }; + * + * // in the node repl + * node> async.log(hello, 'world'); + * 'hello world' + */ + var log = consoleFunc('log'); + + /** + * The same as [`mapValues`]{@link module:Collections.mapValues} but runs a maximum of `limit` async operations at a + * time. + * + * @name mapValuesLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.mapValues]{@link module:Collections.mapValues} + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + */ + function mapValuesLimit(obj, limit, iteratee, callback) { + callback = once(callback); + var newObj = {}; + var _iteratee = wrapAsync(iteratee); + return eachOfLimit$2(limit)(obj, (val, key, next) => { + _iteratee(val, key, (err, result) => { + if (err) return next(err); + newObj[key] = result; + next(err); + }); + }, err => callback(err, newObj)); + } + + var mapValuesLimit$1 = awaitify(mapValuesLimit, 4); + + /** + * A relative of [`map`]{@link module:Collections.map}, designed for use with objects. + * + * Produces a new Object by mapping each value of `obj` through the `iteratee` + * function. The `iteratee` is called each `value` and `key` from `obj` and a + * callback for when it has finished processing. Each of these callbacks takes + * two arguments: an `error`, and the transformed item from `obj`. If `iteratee` + * passes an error to its callback, the main `callback` (for the `mapValues` + * function) is immediately called with the error. + * + * Note, the order of the keys in the result is not guaranteed. The keys will + * be roughly in the order they complete, (but this is very engine-specific) + * + * @name mapValues + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileMap = { + * f1: 'file1.txt', + * f2: 'file2.txt', + * f3: 'file3.txt' + * }; + * + * const withMissingFileMap = { + * f1: 'file1.txt', + * f2: 'file2.txt', + * f3: 'file4.txt' + * }; + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, key, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.mapValues(fileMap, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * } + * }); + * + * // Error handling + * async.mapValues(withMissingFileMap, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.mapValues(fileMap, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * }).catch (err => { + * console.log(err); + * }); + * + * // Error Handling + * async.mapValues(withMissingFileMap, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch (err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.mapValues(fileMap, getFileSizeInBytes); + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.mapValues(withMissingFileMap, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ + function mapValues(obj, iteratee, callback) { + return mapValuesLimit$1(obj, Infinity, iteratee, callback) + } + + /** + * The same as [`mapValues`]{@link module:Collections.mapValues} but runs only a single async operation at a time. + * + * @name mapValuesSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.mapValues]{@link module:Collections.mapValues} + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + */ + function mapValuesSeries(obj, iteratee, callback) { + return mapValuesLimit$1(obj, 1, iteratee, callback) + } + + /** + * Caches the results of an async function. When creating a hash to store + * function results against, the callback is omitted from the hash and an + * optional hash function can be used. + * + * **Note: if the async function errs, the result will not be cached and + * subsequent calls will call the wrapped function.** + * + * If no hash function is specified, the first argument is used as a hash key, + * which may work reasonably if it is a string or a data type that converts to a + * distinct string. Note that objects and arrays will not behave reasonably. + * Neither will cases where the other arguments are significant. In such cases, + * specify your own hash function. + * + * The cache of results is exposed as the `memo` property of the function + * returned by `memoize`. + * + * @name memoize + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - The async function to proxy and cache results from. + * @param {Function} hasher - An optional function for generating a custom hash + * for storing results. It has all the arguments applied to it apart from the + * callback, and must be synchronous. + * @returns {AsyncFunction} a memoized version of `fn` + * @example + * + * var slow_fn = function(name, callback) { + * // do something + * callback(null, result); + * }; + * var fn = async.memoize(slow_fn); + * + * // fn can now be used as if it were slow_fn + * fn('some name', function() { + * // callback + * }); + */ + function memoize(fn, hasher = v => v) { + var memo = Object.create(null); + var queues = Object.create(null); + var _fn = wrapAsync(fn); + var memoized = initialParams((args, callback) => { + var key = hasher(...args); + if (key in memo) { + setImmediate$1(() => callback(null, ...memo[key])); + } else if (key in queues) { + queues[key].push(callback); + } else { + queues[key] = [callback]; + _fn(...args, (err, ...resultArgs) => { + // #1465 don't memoize if an error occurred + if (!err) { + memo[key] = resultArgs; + } + var q = queues[key]; + delete queues[key]; + for (var i = 0, l = q.length; i < l; i++) { + q[i](err, ...resultArgs); + } + }); + } + }); + memoized.memo = memo; + memoized.unmemoized = fn; + return memoized; + } + + /* istanbul ignore file */ + + /** + * Calls `callback` on a later loop around the event loop. In Node.js this just + * calls `process.nextTick`. In the browser it will use `setImmediate` if + * available, otherwise `setTimeout(callback, 0)`, which means other higher + * priority events may precede the execution of `callback`. + * + * This is used internally for browser-compatibility purposes. + * + * @name nextTick + * @static + * @memberOf module:Utils + * @method + * @see [async.setImmediate]{@link module:Utils.setImmediate} + * @category Util + * @param {Function} callback - The function to call on a later loop around + * the event loop. Invoked with (args...). + * @param {...*} args... - any number of additional arguments to pass to the + * callback on the next tick. + * @example + * + * var call_order = []; + * async.nextTick(function() { + * call_order.push('two'); + * // call_order now equals ['one','two'] + * }); + * call_order.push('one'); + * + * async.setImmediate(function (a, b, c) { + * // a, b, and c equal 1, 2, and 3 + * }, 1, 2, 3); + */ + var _defer; + + if (hasNextTick) { + _defer = process.nextTick; + } else if (hasSetImmediate) { + _defer = setImmediate; + } else { + _defer = fallback; + } + + var nextTick = wrap(_defer); + + var _parallel = awaitify((eachfn, tasks, callback) => { + var results = isArrayLike(tasks) ? [] : {}; + + eachfn(tasks, (task, key, taskCb) => { + wrapAsync(task)((err, ...result) => { + if (result.length < 2) { + [result] = result; + } + results[key] = result; + taskCb(err); + }); + }, err => callback(err, results)); + }, 3); + + /** + * Run the `tasks` collection of functions in parallel, without waiting until + * the previous function has completed. If any of the functions pass an error to + * its callback, the main `callback` is immediately called with the value of the + * error. Once the `tasks` have completed, the results are passed to the final + * `callback` as an array. + * + * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about + * parallel execution of code. If your tasks do not use any timers or perform + * any I/O, they will actually be executed in series. Any synchronous setup + * sections for each task will happen one after the other. JavaScript remains + * single-threaded. + * + * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the + * execution of other tasks when a task fails. + * + * It is also possible to use an object instead of an array. Each property will + * be run as a function and the results will be passed to the final `callback` + * as an object instead of an array. This can be a more readable way of handling + * results from {@link async.parallel}. + * + * @name parallel + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed successfully. This function gets a results array + * (or object) containing all the result arguments passed to the task callbacks. + * Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + * + * @example + * + * //Using Callbacks + * async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ], function(err, results) { + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * }); + * + * // an example using an object instead of an array + * async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }, function(err, results) { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }); + * + * //Using Promises + * async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]).then(results => { + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * }).catch(err => { + * console.log(err); + * }); + * + * // an example using an object instead of an array + * async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }).then(results => { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }).catch(err => { + * console.log(err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]); + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // an example using an object instead of an array + * async () => { + * try { + * let results = await async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }); + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function parallel(tasks, callback) { + return _parallel(eachOf$1, tasks, callback); + } + + /** + * The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a + * time. + * + * @name parallelLimit + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.parallel]{@link module:ControlFlow.parallel} + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed successfully. This function gets a results array + * (or object) containing all the result arguments passed to the task callbacks. + * Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + */ + function parallelLimit(tasks, limit, callback) { + return _parallel(eachOfLimit$2(limit), tasks, callback); + } + + /** + * A queue of tasks for the worker function to complete. + * @typedef {Iterable} QueueObject + * @memberOf module:ControlFlow + * @property {Function} length - a function returning the number of items + * waiting to be processed. Invoke with `queue.length()`. + * @property {boolean} started - a boolean indicating whether or not any + * items have been pushed and processed by the queue. + * @property {Function} running - a function returning the number of items + * currently being processed. Invoke with `queue.running()`. + * @property {Function} workersList - a function returning the array of items + * currently being processed. Invoke with `queue.workersList()`. + * @property {Function} idle - a function returning false if there are items + * waiting or being processed, or true if not. Invoke with `queue.idle()`. + * @property {number} concurrency - an integer for determining how many `worker` + * functions should be run in parallel. This property can be changed after a + * `queue` is created to alter the concurrency on-the-fly. + * @property {number} payload - an integer that specifies how many items are + * passed to the worker function at a time. only applies if this is a + * [cargo]{@link module:ControlFlow.cargo} object + * @property {AsyncFunction} push - add a new task to the `queue`. Calls `callback` + * once the `worker` has finished processing the task. Instead of a single task, + * a `tasks` array can be submitted. The respective callback is used for every + * task in the list. Invoke with `queue.push(task, [callback])`, + * @property {AsyncFunction} unshift - add a new task to the front of the `queue`. + * Invoke with `queue.unshift(task, [callback])`. + * @property {AsyncFunction} pushAsync - the same as `q.push`, except this returns + * a promise that rejects if an error occurs. + * @property {AsyncFunction} unshiftAsync - the same as `q.unshift`, except this returns + * a promise that rejects if an error occurs. + * @property {Function} remove - remove items from the queue that match a test + * function. The test function will be passed an object with a `data` property, + * and a `priority` property, if this is a + * [priorityQueue]{@link module:ControlFlow.priorityQueue} object. + * Invoked with `queue.remove(testFn)`, where `testFn` is of the form + * `function ({data, priority}) {}` and returns a Boolean. + * @property {Function} saturated - a function that sets a callback that is + * called when the number of running workers hits the `concurrency` limit, and + * further tasks will be queued. If the callback is omitted, `q.saturated()` + * returns a promise for the next occurrence. + * @property {Function} unsaturated - a function that sets a callback that is + * called when the number of running workers is less than the `concurrency` & + * `buffer` limits, and further tasks will not be queued. If the callback is + * omitted, `q.unsaturated()` returns a promise for the next occurrence. + * @property {number} buffer - A minimum threshold buffer in order to say that + * the `queue` is `unsaturated`. + * @property {Function} empty - a function that sets a callback that is called + * when the last item from the `queue` is given to a `worker`. If the callback + * is omitted, `q.empty()` returns a promise for the next occurrence. + * @property {Function} drain - a function that sets a callback that is called + * when the last item from the `queue` has returned from the `worker`. If the + * callback is omitted, `q.drain()` returns a promise for the next occurrence. + * @property {Function} error - a function that sets a callback that is called + * when a task errors. Has the signature `function(error, task)`. If the + * callback is omitted, `error()` returns a promise that rejects on the next + * error. + * @property {boolean} paused - a boolean for determining whether the queue is + * in a paused state. + * @property {Function} pause - a function that pauses the processing of tasks + * until `resume()` is called. Invoke with `queue.pause()`. + * @property {Function} resume - a function that resumes the processing of + * queued tasks when the queue is paused. Invoke with `queue.resume()`. + * @property {Function} kill - a function that removes the `drain` callback and + * empties remaining tasks from the queue forcing it to go idle. No more tasks + * should be pushed to the queue after calling this function. Invoke with `queue.kill()`. + * + * @example + * const q = async.queue(worker, 2) + * q.push(item1) + * q.push(item2) + * q.push(item3) + * // queues are iterable, spread into an array to inspect + * const items = [...q] // [item1, item2, item3] + * // or use for of + * for (let item of q) { + * console.log(item) + * } + * + * q.drain(() => { + * console.log('all done') + * }) + * // or + * await q.drain() + */ + + /** + * Creates a `queue` object with the specified `concurrency`. Tasks added to the + * `queue` are processed in parallel (up to the `concurrency` limit). If all + * `worker`s are in progress, the task is queued until one becomes available. + * Once a `worker` completes a `task`, that `task`'s callback is called. + * + * @name queue + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} worker - An async function for processing a queued task. + * If you want to handle errors from an individual task, pass a callback to + * `q.push()`. Invoked with (task, callback). + * @param {number} [concurrency=1] - An `integer` for determining how many + * `worker` functions should be run in parallel. If omitted, the concurrency + * defaults to `1`. If the concurrency is `0`, an error is thrown. + * @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can be + * attached as certain properties to listen for specific events during the + * lifecycle of the queue. + * @example + * + * // create a queue object with concurrency 2 + * var q = async.queue(function(task, callback) { + * console.log('hello ' + task.name); + * callback(); + * }, 2); + * + * // assign a callback + * q.drain(function() { + * console.log('all items have been processed'); + * }); + * // or await the end + * await q.drain() + * + * // assign an error callback + * q.error(function(err, task) { + * console.error('task experienced an error'); + * }); + * + * // add some items to the queue + * q.push({name: 'foo'}, function(err) { + * console.log('finished processing foo'); + * }); + * // callback is optional + * q.push({name: 'bar'}); + * + * // add some items to the queue (batch-wise) + * q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function(err) { + * console.log('finished processing item'); + * }); + * + * // add some items to the front of the queue + * q.unshift({name: 'bar'}, function (err) { + * console.log('finished processing bar'); + * }); + */ + function queue (worker, concurrency) { + var _worker = wrapAsync(worker); + return queue$1((items, cb) => { + _worker(items[0], cb); + }, concurrency, 1); + } + + // Binary min-heap implementation used for priority queue. + // Implementation is stable, i.e. push time is considered for equal priorities + class Heap { + constructor() { + this.heap = []; + this.pushCount = Number.MIN_SAFE_INTEGER; + } + + get length() { + return this.heap.length; + } + + empty () { + this.heap = []; + return this; + } + + percUp(index) { + let p; + + while (index > 0 && smaller(this.heap[index], this.heap[p=parent(index)])) { + let t = this.heap[index]; + this.heap[index] = this.heap[p]; + this.heap[p] = t; + + index = p; + } + } + + percDown(index) { + let l; + + while ((l=leftChi(index)) < this.heap.length) { + if (l+1 < this.heap.length && smaller(this.heap[l+1], this.heap[l])) { + l = l+1; + } + + if (smaller(this.heap[index], this.heap[l])) { + break; + } + + let t = this.heap[index]; + this.heap[index] = this.heap[l]; + this.heap[l] = t; + + index = l; + } + } + + push(node) { + node.pushCount = ++this.pushCount; + this.heap.push(node); + this.percUp(this.heap.length-1); + } + + unshift(node) { + return this.heap.push(node); + } + + shift() { + let [top] = this.heap; + + this.heap[0] = this.heap[this.heap.length-1]; + this.heap.pop(); + this.percDown(0); + + return top; + } + + toArray() { + return [...this]; + } + + *[Symbol.iterator] () { + for (let i = 0; i < this.heap.length; i++) { + yield this.heap[i].data; + } + } + + remove (testFn) { + let j = 0; + for (let i = 0; i < this.heap.length; i++) { + if (!testFn(this.heap[i])) { + this.heap[j] = this.heap[i]; + j++; + } + } + + this.heap.splice(j); + + for (let i = parent(this.heap.length-1); i >= 0; i--) { + this.percDown(i); + } + + return this; + } + } + + function leftChi(i) { + return (i<<1)+1; + } + + function parent(i) { + return ((i+1)>>1)-1; + } + + function smaller(x, y) { + if (x.priority !== y.priority) { + return x.priority < y.priority; + } + else { + return x.pushCount < y.pushCount; + } + } + + /** + * The same as [async.queue]{@link module:ControlFlow.queue} only tasks are assigned a priority and + * completed in ascending priority order. + * + * @name priorityQueue + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @category Control Flow + * @param {AsyncFunction} worker - An async function for processing a queued task. + * If you want to handle errors from an individual task, pass a callback to + * `q.push()`. + * Invoked with (task, callback). + * @param {number} concurrency - An `integer` for determining how many `worker` + * functions should be run in parallel. If omitted, the concurrency defaults to + * `1`. If the concurrency is `0`, an error is thrown. + * @returns {module:ControlFlow.QueueObject} A priorityQueue object to manage the tasks. There are three + * differences between `queue` and `priorityQueue` objects: + * * `push(task, priority, [callback])` - `priority` should be a number. If an + * array of `tasks` is given, all tasks will be assigned the same priority. + * * `pushAsync(task, priority, [callback])` - the same as `priorityQueue.push`, + * except this returns a promise that rejects if an error occurs. + * * The `unshift` and `unshiftAsync` methods were removed. + */ + function priorityQueue(worker, concurrency) { + // Start with a normal queue + var q = queue(worker, concurrency); + + var { + push, + pushAsync + } = q; + + q._tasks = new Heap(); + q._createTaskItem = ({data, priority}, callback) => { + return { + data, + priority, + callback + }; + }; + + function createDataItems(tasks, priority) { + if (!Array.isArray(tasks)) { + return {data: tasks, priority}; + } + return tasks.map(data => { return {data, priority}; }); + } + + // Override push to accept second parameter representing priority + q.push = function(data, priority = 0, callback) { + return push(createDataItems(data, priority), callback); + }; + + q.pushAsync = function(data, priority = 0, callback) { + return pushAsync(createDataItems(data, priority), callback); + }; + + // Remove unshift functions + delete q.unshift; + delete q.unshiftAsync; + + return q; + } + + /** + * Runs the `tasks` array of functions in parallel, without waiting until the + * previous function has completed. Once any of the `tasks` complete or pass an + * error to its callback, the main `callback` is immediately called. It's + * equivalent to `Promise.race()`. + * + * @name race + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction} + * to run. Each function can complete with an optional `result` value. + * @param {Function} callback - A callback to run once any of the functions have + * completed. This function gets an error or result from the first function that + * completed. Invoked with (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * async.race([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ], + * // main callback + * function(err, result) { + * // the result will be equal to 'two' as it finishes earlier + * }); + */ + function race(tasks, callback) { + callback = once(callback); + if (!Array.isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions')); + if (!tasks.length) return callback(); + for (var i = 0, l = tasks.length; i < l; i++) { + wrapAsync(tasks[i])(callback); + } + } + + var race$1 = awaitify(race, 2); + + /** + * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order. + * + * @name reduceRight + * @static + * @memberOf module:Collections + * @method + * @see [async.reduce]{@link module:Collections.reduce} + * @alias foldr + * @category Collection + * @param {Array} array - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + */ + function reduceRight (array, memo, iteratee, callback) { + var reversed = [...array].reverse(); + return reduce$1(reversed, memo, iteratee, callback); + } + + /** + * Wraps the async function in another function that always completes with a + * result object, even when it errors. + * + * The result object has either the property `error` or `value`. + * + * @name reflect + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - The async function you want to wrap + * @returns {Function} - A function that always passes null to it's callback as + * the error. The second argument to the callback will be an `object` with + * either an `error` or a `value` property. + * @example + * + * async.parallel([ + * async.reflect(function(callback) { + * // do some stuff ... + * callback(null, 'one'); + * }), + * async.reflect(function(callback) { + * // do some more stuff but error ... + * callback('bad stuff happened'); + * }), + * async.reflect(function(callback) { + * // do some more stuff ... + * callback(null, 'two'); + * }) + * ], + * // optional callback + * function(err, results) { + * // values + * // results[0].value = 'one' + * // results[1].error = 'bad stuff happened' + * // results[2].value = 'two' + * }); + */ + function reflect(fn) { + var _fn = wrapAsync(fn); + return initialParams(function reflectOn(args, reflectCallback) { + args.push((error, ...cbArgs) => { + let retVal = {}; + if (error) { + retVal.error = error; + } + if (cbArgs.length > 0){ + var value = cbArgs; + if (cbArgs.length <= 1) { + [value] = cbArgs; + } + retVal.value = value; + } + reflectCallback(null, retVal); + }); + + return _fn.apply(this, args); + }); + } + + /** + * A helper function that wraps an array or an object of functions with `reflect`. + * + * @name reflectAll + * @static + * @memberOf module:Utils + * @method + * @see [async.reflect]{@link module:Utils.reflect} + * @category Util + * @param {Array|Object|Iterable} tasks - The collection of + * [async functions]{@link AsyncFunction} to wrap in `async.reflect`. + * @returns {Array} Returns an array of async functions, each wrapped in + * `async.reflect` + * @example + * + * let tasks = [ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * // do some more stuff but error ... + * callback(new Error('bad stuff happened')); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]; + * + * async.parallel(async.reflectAll(tasks), + * // optional callback + * function(err, results) { + * // values + * // results[0].value = 'one' + * // results[1].error = Error('bad stuff happened') + * // results[2].value = 'two' + * }); + * + * // an example using an object instead of an array + * let tasks = { + * one: function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * two: function(callback) { + * callback('two'); + * }, + * three: function(callback) { + * setTimeout(function() { + * callback(null, 'three'); + * }, 100); + * } + * }; + * + * async.parallel(async.reflectAll(tasks), + * // optional callback + * function(err, results) { + * // values + * // results.one.value = 'one' + * // results.two.error = 'two' + * // results.three.value = 'three' + * }); + */ + function reflectAll(tasks) { + var results; + if (Array.isArray(tasks)) { + results = tasks.map(reflect); + } else { + results = {}; + Object.keys(tasks).forEach(key => { + results[key] = reflect.call(this, tasks[key]); + }); + } + return results; + } + + function reject$2(eachfn, arr, _iteratee, callback) { + const iteratee = wrapAsync(_iteratee); + return _filter(eachfn, arr, (value, cb) => { + iteratee(value, (err, v) => { + cb(err, !v); + }); + }, callback); + } + + /** + * The opposite of [`filter`]{@link module:Collections.filter}. Removes values that pass an `async` truth test. + * + * @name reject + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.reject(fileList, fileExists, function(err, results) { + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * }); + * + * // Using Promises + * async.reject(fileList, fileExists) + * .then( results => { + * console.log(results); + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.reject(fileList, fileExists); + * console.log(results); + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function reject (coll, iteratee, callback) { + return reject$2(eachOf$1, coll, iteratee, callback) + } + var reject$1 = awaitify(reject, 3); + + /** + * The same as [`reject`]{@link module:Collections.reject} but runs a maximum of `limit` async operations at a + * time. + * + * @name rejectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.reject]{@link module:Collections.reject} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ + function rejectLimit (coll, limit, iteratee, callback) { + return reject$2(eachOfLimit$2(limit), coll, iteratee, callback) + } + var rejectLimit$1 = awaitify(rejectLimit, 4); + + /** + * The same as [`reject`]{@link module:Collections.reject} but runs only a single async operation at a time. + * + * @name rejectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.reject]{@link module:Collections.reject} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ + function rejectSeries (coll, iteratee, callback) { + return reject$2(eachOfSeries$1, coll, iteratee, callback) + } + var rejectSeries$1 = awaitify(rejectSeries, 3); + + function constant(value) { + return function () { + return value; + } + } + + /** + * Attempts to get a successful response from `task` no more than `times` times + * before returning an error. If the task is successful, the `callback` will be + * passed the result of the successful task. If all attempts fail, the callback + * will be passed the error and result (if any) of the final attempt. + * + * @name retry + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @see [async.retryable]{@link module:ControlFlow.retryable} + * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an + * object with `times` and `interval` or a number. + * * `times` - The number of attempts to make before giving up. The default + * is `5`. + * * `interval` - The time to wait between retries, in milliseconds. The + * default is `0`. The interval may also be specified as a function of the + * retry count (see example). + * * `errorFilter` - An optional synchronous function that is invoked on + * erroneous result. If it returns `true` the retry attempts will continue; + * if the function returns `false` the retry flow is aborted with the current + * attempt's error and result being returned to the final callback. + * Invoked with (err). + * * If `opts` is a number, the number specifies the number of times to retry, + * with the default interval of `0`. + * @param {AsyncFunction} task - An async function to retry. + * Invoked with (callback). + * @param {Function} [callback] - An optional callback which is called when the + * task has succeeded, or after the final failed attempt. It receives the `err` + * and `result` arguments of the last attempt at completing the `task`. Invoked + * with (err, results). + * @returns {Promise} a promise if no callback provided + * + * @example + * + * // The `retry` function can be used as a stand-alone control flow by passing + * // a callback, as shown below: + * + * // try calling apiMethod 3 times + * async.retry(3, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod 3 times, waiting 200 ms between each retry + * async.retry({times: 3, interval: 200}, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod 10 times with exponential backoff + * // (i.e. intervals of 100, 200, 400, 800, 1600, ... milliseconds) + * async.retry({ + * times: 10, + * interval: function(retryCount) { + * return 50 * Math.pow(2, retryCount); + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod the default 5 times no delay between each retry + * async.retry(apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod only when error condition satisfies, all other + * // errors will abort the retry control flow and return to final callback + * async.retry({ + * errorFilter: function(err) { + * return err.message === 'Temporary error'; // only retry on a specific error + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // to retry individual methods that are not as reliable within other + * // control flow functions, use the `retryable` wrapper: + * async.auto({ + * users: api.getUsers.bind(api), + * payments: async.retryable(3, api.getPayments.bind(api)) + * }, function(err, results) { + * // do something with the results + * }); + * + */ + const DEFAULT_TIMES = 5; + const DEFAULT_INTERVAL = 0; + + function retry(opts, task, callback) { + var options = { + times: DEFAULT_TIMES, + intervalFunc: constant(DEFAULT_INTERVAL) + }; + + if (arguments.length < 3 && typeof opts === 'function') { + callback = task || promiseCallback(); + task = opts; + } else { + parseTimes(options, opts); + callback = callback || promiseCallback(); + } + + if (typeof task !== 'function') { + throw new Error("Invalid arguments for async.retry"); + } + + var _task = wrapAsync(task); + + var attempt = 1; + function retryAttempt() { + _task((err, ...args) => { + if (err === false) return + if (err && attempt++ < options.times && + (typeof options.errorFilter != 'function' || + options.errorFilter(err))) { + setTimeout(retryAttempt, options.intervalFunc(attempt - 1)); + } else { + callback(err, ...args); + } + }); + } + + retryAttempt(); + return callback[PROMISE_SYMBOL] + } + + function parseTimes(acc, t) { + if (typeof t === 'object') { + acc.times = +t.times || DEFAULT_TIMES; + + acc.intervalFunc = typeof t.interval === 'function' ? + t.interval : + constant(+t.interval || DEFAULT_INTERVAL); + + acc.errorFilter = t.errorFilter; + } else if (typeof t === 'number' || typeof t === 'string') { + acc.times = +t || DEFAULT_TIMES; + } else { + throw new Error("Invalid arguments for async.retry"); + } + } + + /** + * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method + * wraps a task and makes it retryable, rather than immediately calling it + * with retries. + * + * @name retryable + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.retry]{@link module:ControlFlow.retry} + * @category Control Flow + * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional + * options, exactly the same as from `retry`, except for a `opts.arity` that + * is the arity of the `task` function, defaulting to `task.length` + * @param {AsyncFunction} task - the asynchronous function to wrap. + * This function will be passed any arguments passed to the returned wrapper. + * Invoked with (...args, callback). + * @returns {AsyncFunction} The wrapped function, which when invoked, will + * retry on an error, based on the parameters specified in `opts`. + * This function will accept the same parameters as `task`. + * @example + * + * async.auto({ + * dep1: async.retryable(3, getFromFlakyService), + * process: ["dep1", async.retryable(3, function (results, cb) { + * maybeProcessData(results.dep1, cb); + * })] + * }, callback); + */ + function retryable (opts, task) { + if (!task) { + task = opts; + opts = null; + } + let arity = (opts && opts.arity) || task.length; + if (isAsync(task)) { + arity += 1; + } + var _task = wrapAsync(task); + return initialParams((args, callback) => { + if (args.length < arity - 1 || callback == null) { + args.push(callback); + callback = promiseCallback(); + } + function taskFn(cb) { + _task(...args, cb); + } + + if (opts) retry(opts, taskFn, callback); + else retry(taskFn, callback); + + return callback[PROMISE_SYMBOL] + }); + } + + /** + * Run the functions in the `tasks` collection in series, each one running once + * the previous function has completed. If any functions in the series pass an + * error to its callback, no more functions are run, and `callback` is + * immediately called with the value of the error. Otherwise, `callback` + * receives an array of results when `tasks` have completed. + * + * It is also possible to use an object instead of an array. Each property will + * be run as a function, and the results will be passed to the final `callback` + * as an object instead of an array. This can be a more readable way of handling + * results from {@link async.series}. + * + * **Note** that while many implementations preserve the order of object + * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) + * explicitly states that + * + * > The mechanics and order of enumerating the properties is not specified. + * + * So if you rely on the order in which your series of functions are executed, + * and want this to work on all platforms, consider using an array. + * + * @name series + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing + * [async functions]{@link AsyncFunction} to run in series. + * Each function can complete with any number of optional `result` values. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed. This function gets a results array (or object) + * containing all the result arguments passed to the `task` callbacks. Invoked + * with (err, result). + * @return {Promise} a promise, if no callback is passed + * @example + * + * //Using Callbacks + * async.series([ + * function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 'two'); + * }, 100); + * } + * ], function(err, results) { + * console.log(results); + * // results is equal to ['one','two'] + * }); + * + * // an example using objects instead of arrays + * async.series({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }, function(err, results) { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }); + * + * //Using Promises + * async.series([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]).then(results => { + * console.log(results); + * // results is equal to ['one','two'] + * }).catch(err => { + * console.log(err); + * }); + * + * // an example using an object instead of an array + * async.series({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }).then(results => { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }).catch(err => { + * console.log(err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.series([ + * function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 'two'); + * }, 100); + * } + * ]); + * console.log(results); + * // results is equal to ['one','two'] + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // an example using an object instead of an array + * async () => { + * try { + * let results = await async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }); + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function series(tasks, callback) { + return _parallel(eachOfSeries$1, tasks, callback); + } + + /** + * Returns `true` if at least one element in the `coll` satisfies an async test. + * If any iteratee call returns `true`, the main `callback` is immediately + * called. + * + * @name some + * @static + * @memberOf module:Collections + * @method + * @alias any + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + *); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // false + * // result is false since none of the files exists + * } + *); + * + * // Using Promises + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since some file in the list exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since none of the files exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists); + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists); + * console.log(result); + * // false + * // result is false since none of the files exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function some(coll, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOf$1, coll, iteratee, callback) + } + var some$1 = awaitify(some, 3); + + /** + * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time. + * + * @name someLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anyLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ + function someLimit(coll, limit, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOfLimit$2(limit), coll, iteratee, callback) + } + var someLimit$1 = awaitify(someLimit, 4); + + /** + * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time. + * + * @name someSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anySeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in series. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ + function someSeries(coll, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOfSeries$1, coll, iteratee, callback) + } + var someSeries$1 = awaitify(someSeries, 3); + + /** + * Sorts a list by the results of running each `coll` value through an async + * `iteratee`. + * + * @name sortBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a value to use as the sort criteria as + * its `result`. + * Invoked with (item, callback). + * @param {Function} callback - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is the items + * from the original `coll` sorted by the values returned by the `iteratee` + * calls. Invoked with (err, results). + * @returns {Promise} a promise, if no callback passed + * @example + * + * // bigfile.txt is a file that is 251100 bytes in size + * // mediumfile.txt is a file that is 11000 bytes in size + * // smallfile.txt is a file that is 121 bytes in size + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes, + * function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * } + * ); + * + * // By modifying the callback parameter the + * // sorting order can be influenced: + * + * // ascending order + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], function(file, callback) { + * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) { + * if (getFileSizeErr) return callback(getFileSizeErr); + * callback(null, fileSize); + * }); + * }, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * } + * ); + * + * // descending order + * async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], function(file, callback) { + * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) { + * if (getFileSizeErr) { + * return callback(getFileSizeErr); + * } + * callback(null, fileSize * -1); + * }); + * }, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'bigfile.txt', 'mediumfile.txt', 'smallfile.txt'] + * } + * } + * ); + * + * // Error handling + * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes, + * function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(results); + * } + * } + * ); + * + * // Using Promises + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes) + * .then( results => { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * }).catch( err => { + * console.log(err); + * }); + * + * // Error handling + * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes) + * .then( results => { + * console.log(results); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * (async () => { + * try { + * let results = await async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes); + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * catch (err) { + * console.log(err); + * } + * })(); + * + * // Error handling + * async () => { + * try { + * let results = await async.sortBy(['missingfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes); + * console.log(results); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ + function sortBy (coll, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return map$1(coll, (x, iterCb) => { + _iteratee(x, (err, criteria) => { + if (err) return iterCb(err); + iterCb(err, {value: x, criteria}); + }); + }, (err, results) => { + if (err) return callback(err); + callback(null, results.sort(comparator).map(v => v.value)); + }); + + function comparator(left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + } + } + var sortBy$1 = awaitify(sortBy, 3); + + /** + * Sets a time limit on an asynchronous function. If the function does not call + * its callback within the specified milliseconds, it will be called with a + * timeout error. The code property for the error object will be `'ETIMEDOUT'`. + * + * @name timeout + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} asyncFn - The async function to limit in time. + * @param {number} milliseconds - The specified time limit. + * @param {*} [info] - Any variable you want attached (`string`, `object`, etc) + * to timeout Error for more information.. + * @returns {AsyncFunction} Returns a wrapped function that can be used with any + * of the control flow functions. + * Invoke this function with the same parameters as you would `asyncFunc`. + * @example + * + * function myFunction(foo, callback) { + * doAsyncTask(foo, function(err, data) { + * // handle errors + * if (err) return callback(err); + * + * // do some stuff ... + * + * // return processed data + * return callback(null, data); + * }); + * } + * + * var wrapped = async.timeout(myFunction, 1000); + * + * // call `wrapped` as you would `myFunction` + * wrapped({ bar: 'bar' }, function(err, data) { + * // if `myFunction` takes < 1000 ms to execute, `err` + * // and `data` will have their expected values + * + * // else `err` will be an Error with the code 'ETIMEDOUT' + * }); + */ + function timeout(asyncFn, milliseconds, info) { + var fn = wrapAsync(asyncFn); + + return initialParams((args, callback) => { + var timedOut = false; + var timer; + + function timeoutCallback() { + var name = asyncFn.name || 'anonymous'; + var error = new Error('Callback function "' + name + '" timed out.'); + error.code = 'ETIMEDOUT'; + if (info) { + error.info = info; + } + timedOut = true; + callback(error); + } + + args.push((...cbArgs) => { + if (!timedOut) { + callback(...cbArgs); + clearTimeout(timer); + } + }); + + // setup timer and call original function + timer = setTimeout(timeoutCallback, milliseconds); + fn(...args); + }); + } + + function range(size) { + var result = Array(size); + while (size--) { + result[size] = size; + } + return result; + } + + /** + * The same as [times]{@link module:ControlFlow.times} but runs a maximum of `limit` async operations at a + * time. + * + * @name timesLimit + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.times]{@link module:ControlFlow.times} + * @category Control Flow + * @param {number} count - The number of times to run the function. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see [async.map]{@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + */ + function timesLimit(count, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(range(count), limit, _iteratee, callback); + } + + /** + * Calls the `iteratee` function `n` times, and accumulates results in the same + * manner you would use with [map]{@link module:Collections.map}. + * + * @name times + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.map]{@link module:Collections.map} + * @category Control Flow + * @param {number} n - The number of times to run the function. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see {@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + * @example + * + * // Pretend this is some complicated async factory + * var createUser = function(id, callback) { + * callback(null, { + * id: 'user' + id + * }); + * }; + * + * // generate 5 users + * async.times(5, function(n, next) { + * createUser(n, function(err, user) { + * next(err, user); + * }); + * }, function(err, users) { + * // we should now have 5 users + * }); + */ + function times (n, iteratee, callback) { + return timesLimit(n, Infinity, iteratee, callback) + } + + /** + * The same as [times]{@link module:ControlFlow.times} but runs only a single async operation at a time. + * + * @name timesSeries + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.times]{@link module:ControlFlow.times} + * @category Control Flow + * @param {number} n - The number of times to run the function. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see {@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + */ + function timesSeries (n, iteratee, callback) { + return timesLimit(n, 1, iteratee, callback) + } + + /** + * A relative of `reduce`. Takes an Object or Array, and iterates over each + * element in parallel, each step potentially mutating an `accumulator` value. + * The type of the accumulator defaults to the type of collection passed in. + * + * @name transform + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} [accumulator] - The initial state of the transform. If omitted, + * it will default to an empty Object or Array, depending on the type of `coll` + * @param {AsyncFunction} iteratee - A function applied to each item in the + * collection that potentially modifies the accumulator. + * Invoked with (accumulator, item, key, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the transformed accumulator. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * + * // helper function that returns human-readable size format from bytes + * function formatBytes(bytes, decimals = 2) { + * // implementation not included for brevity + * return humanReadbleFilesize; + * } + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * + * // asynchronous function that returns the file size, transformed to human-readable format + * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc. + * function transformFileSize(acc, value, key, callback) { + * fs.stat(value, function(err, stat) { + * if (err) { + * return callback(err); + * } + * acc[key] = formatBytes(stat.size); + * callback(null); + * }); + * } + * + * // Using callbacks + * async.transform(fileList, transformFileSize, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * } + * }); + * + * // Using Promises + * async.transform(fileList, transformFileSize) + * .then(result => { + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * (async () => { + * try { + * let result = await async.transform(fileList, transformFileSize); + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * } + * catch (err) { + * console.log(err); + * } + * })(); + * + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * + * // helper function that returns human-readable size format from bytes + * function formatBytes(bytes, decimals = 2) { + * // implementation not included for brevity + * return humanReadbleFilesize; + * } + * + * const fileMap = { f1: 'file1.txt', f2: 'file2.txt', f3: 'file3.txt' }; + * + * // asynchronous function that returns the file size, transformed to human-readable format + * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc. + * function transformFileSize(acc, value, key, callback) { + * fs.stat(value, function(err, stat) { + * if (err) { + * return callback(err); + * } + * acc[key] = formatBytes(stat.size); + * callback(null); + * }); + * } + * + * // Using callbacks + * async.transform(fileMap, transformFileSize, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * } + * }); + * + * // Using Promises + * async.transform(fileMap, transformFileSize) + * .then(result => { + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.transform(fileMap, transformFileSize); + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function transform (coll, accumulator, iteratee, callback) { + if (arguments.length <= 3 && typeof accumulator === 'function') { + callback = iteratee; + iteratee = accumulator; + accumulator = Array.isArray(coll) ? [] : {}; + } + callback = once(callback || promiseCallback()); + var _iteratee = wrapAsync(iteratee); + + eachOf$1(coll, (v, k, cb) => { + _iteratee(accumulator, v, k, cb); + }, err => callback(err, accumulator)); + return callback[PROMISE_SYMBOL] + } + + /** + * It runs each task in series but stops whenever any of the functions were + * successful. If one of the tasks were successful, the `callback` will be + * passed the result of the successful task. If all tasks fail, the callback + * will be passed the error and result (if any) of the final attempt. + * + * @name tryEach + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing functions to + * run, each function is passed a `callback(err, result)` it must call on + * completion with an error `err` (which can be `null`) and an optional `result` + * value. + * @param {Function} [callback] - An optional callback which is called when one + * of the tasks has succeeded, or all have failed. It receives the `err` and + * `result` arguments of the last attempt at completing the `task`. Invoked with + * (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * async.tryEach([ + * function getDataFromFirstWebsite(callback) { + * // Try getting the data from the first website + * callback(err, data); + * }, + * function getDataFromSecondWebsite(callback) { + * // First website failed, + * // Try getting the data from the backup website + * callback(err, data); + * } + * ], + * // optional callback + * function(err, results) { + * Now do something with the data. + * }); + * + */ + function tryEach(tasks, callback) { + var error = null; + var result; + return eachSeries$1(tasks, (task, taskCb) => { + wrapAsync(task)((err, ...args) => { + if (err === false) return taskCb(err); + + if (args.length < 2) { + [result] = args; + } else { + result = args; + } + error = err; + taskCb(err ? null : {}); + }); + }, () => callback(error, result)); + } + + var tryEach$1 = awaitify(tryEach); + + /** + * Undoes a [memoize]{@link module:Utils.memoize}d function, reverting it to the original, + * unmemoized form. Handy for testing. + * + * @name unmemoize + * @static + * @memberOf module:Utils + * @method + * @see [async.memoize]{@link module:Utils.memoize} + * @category Util + * @param {AsyncFunction} fn - the memoized function + * @returns {AsyncFunction} a function that calls the original unmemoized function + */ + function unmemoize(fn) { + return (...args) => { + return (fn.unmemoized || fn)(...args); + }; + } + + /** + * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. + * + * @name whilst + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` passes. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + * @example + * + * var count = 0; + * async.whilst( + * function test(cb) { cb(null, count < 5); }, + * function iter(callback) { + * count++; + * setTimeout(function() { + * callback(null, count); + * }, 1000); + * }, + * function (err, n) { + * // 5 seconds have passed, n = 5 + * } + * ); + */ + function whilst(test, iteratee, callback) { + callback = onlyOnce(callback); + var _fn = wrapAsync(iteratee); + var _test = wrapAsync(test); + var results = []; + + function next(err, ...rest) { + if (err) return callback(err); + results = rest; + if (err === false) return; + _test(check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return _test(check); + } + var whilst$1 = awaitify(whilst, 3); + + /** + * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. `callback` will be passed an error and any + * arguments passed to the final `iteratee`'s callback. + * + * The inverse of [whilst]{@link module:ControlFlow.whilst}. + * + * @name until + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if a callback is not passed + * + * @example + * const results = [] + * let finished = false + * async.until(function test(cb) { + * cb(null, finished) + * }, function iter(next) { + * fetchPage(url, (err, body) => { + * if (err) return next(err) + * results = results.concat(body.objects) + * finished = !!body.next + * next(err) + * }) + * }, function done (err) { + * // all pages have been fetched + * }) + */ + function until(test, iteratee, callback) { + const _test = wrapAsync(test); + return whilst$1((cb) => _test((err, truth) => cb (err, !truth)), iteratee, callback); + } + + /** + * Runs the `tasks` array of functions in series, each passing their results to + * the next in the array. However, if any of the `tasks` pass an error to their + * own callback, the next function is not executed, and the main `callback` is + * immediately called with the error. + * + * @name waterfall + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array} tasks - An array of [async functions]{@link AsyncFunction} + * to run. + * Each function should complete with any number of `result` values. + * The `result` values will be passed as arguments, in order, to the next task. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed. This will be passed the results of the last task's + * callback. Invoked with (err, [results]). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * async.waterfall([ + * function(callback) { + * callback(null, 'one', 'two'); + * }, + * function(arg1, arg2, callback) { + * // arg1 now equals 'one' and arg2 now equals 'two' + * callback(null, 'three'); + * }, + * function(arg1, callback) { + * // arg1 now equals 'three' + * callback(null, 'done'); + * } + * ], function (err, result) { + * // result now equals 'done' + * }); + * + * // Or, with named functions: + * async.waterfall([ + * myFirstFunction, + * mySecondFunction, + * myLastFunction, + * ], function (err, result) { + * // result now equals 'done' + * }); + * function myFirstFunction(callback) { + * callback(null, 'one', 'two'); + * } + * function mySecondFunction(arg1, arg2, callback) { + * // arg1 now equals 'one' and arg2 now equals 'two' + * callback(null, 'three'); + * } + * function myLastFunction(arg1, callback) { + * // arg1 now equals 'three' + * callback(null, 'done'); + * } + */ + function waterfall (tasks, callback) { + callback = once(callback); + if (!Array.isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions')); + if (!tasks.length) return callback(); + var taskIndex = 0; + + function nextTask(args) { + var task = wrapAsync(tasks[taskIndex++]); + task(...args, onlyOnce(next)); + } + + function next(err, ...args) { + if (err === false) return + if (err || taskIndex === tasks.length) { + return callback(err, ...args); + } + nextTask(args); + } + + nextTask([]); + } + + var waterfall$1 = awaitify(waterfall); + + /** + * An "async function" in the context of Async is an asynchronous function with + * a variable number of parameters, with the final parameter being a callback. + * (`function (arg1, arg2, ..., callback) {}`) + * The final callback is of the form `callback(err, results...)`, which must be + * called once the function is completed. The callback should be called with a + * Error as its first argument to signal that an error occurred. + * Otherwise, if no error occurred, it should be called with `null` as the first + * argument, and any additional `result` arguments that may apply, to signal + * successful completion. + * The callback must be called exactly once, ideally on a later tick of the + * JavaScript event loop. + * + * This type of function is also referred to as a "Node-style async function", + * or a "continuation passing-style function" (CPS). Most of the methods of this + * library are themselves CPS/Node-style async functions, or functions that + * return CPS/Node-style async functions. + * + * Wherever we accept a Node-style async function, we also directly accept an + * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}. + * In this case, the `async` function will not be passed a final callback + * argument, and any thrown error will be used as the `err` argument of the + * implicit callback, and the return value will be used as the `result` value. + * (i.e. a `rejected` of the returned Promise becomes the `err` callback + * argument, and a `resolved` value becomes the `result`.) + * + * Note, due to JavaScript limitations, we can only detect native `async` + * functions and not transpilied implementations. + * Your environment must have `async`/`await` support for this to work. + * (e.g. Node > v7.6, or a recent version of a modern browser). + * If you are using `async` functions through a transpiler (e.g. Babel), you + * must still wrap the function with [asyncify]{@link module:Utils.asyncify}, + * because the `async function` will be compiled to an ordinary function that + * returns a promise. + * + * @typedef {Function} AsyncFunction + * @static + */ + + + var index = { + apply, + applyEach, + applyEachSeries, + asyncify, + auto, + autoInject, + cargo: cargo$1, + cargoQueue: cargo, + compose, + concat: concat$1, + concatLimit: concatLimit$1, + concatSeries: concatSeries$1, + constant: constant$1, + detect: detect$1, + detectLimit: detectLimit$1, + detectSeries: detectSeries$1, + dir, + doUntil, + doWhilst: doWhilst$1, + each, + eachLimit: eachLimit$1, + eachOf: eachOf$1, + eachOfLimit: eachOfLimit$1, + eachOfSeries: eachOfSeries$1, + eachSeries: eachSeries$1, + ensureAsync, + every: every$1, + everyLimit: everyLimit$1, + everySeries: everySeries$1, + filter: filter$1, + filterLimit: filterLimit$1, + filterSeries: filterSeries$1, + forever: forever$1, + groupBy, + groupByLimit: groupByLimit$1, + groupBySeries, + log, + map: map$1, + mapLimit: mapLimit$1, + mapSeries: mapSeries$1, + mapValues, + mapValuesLimit: mapValuesLimit$1, + mapValuesSeries, + memoize, + nextTick, + parallel, + parallelLimit, + priorityQueue, + queue, + race: race$1, + reduce: reduce$1, + reduceRight, + reflect, + reflectAll, + reject: reject$1, + rejectLimit: rejectLimit$1, + rejectSeries: rejectSeries$1, + retry, + retryable, + seq, + series, + setImmediate: setImmediate$1, + some: some$1, + someLimit: someLimit$1, + someSeries: someSeries$1, + sortBy: sortBy$1, + timeout, + times, + timesLimit, + timesSeries, + transform, + tryEach: tryEach$1, + unmemoize, + until, + waterfall: waterfall$1, + whilst: whilst$1, + + // aliases + all: every$1, + allLimit: everyLimit$1, + allSeries: everySeries$1, + any: some$1, + anyLimit: someLimit$1, + anySeries: someSeries$1, + find: detect$1, + findLimit: detectLimit$1, + findSeries: detectSeries$1, + flatMap: concat$1, + flatMapLimit: concatLimit$1, + flatMapSeries: concatSeries$1, + forEach: each, + forEachSeries: eachSeries$1, + forEachLimit: eachLimit$1, + forEachOf: eachOf$1, + forEachOfSeries: eachOfSeries$1, + forEachOfLimit: eachOfLimit$1, + inject: reduce$1, + foldl: reduce$1, + foldr: reduceRight, + select: filter$1, + selectLimit: filterLimit$1, + selectSeries: filterSeries$1, + wrapSync: asyncify, + during: whilst$1, + doDuring: doWhilst$1 + }; + + exports.all = every$1; + exports.allLimit = everyLimit$1; + exports.allSeries = everySeries$1; + exports.any = some$1; + exports.anyLimit = someLimit$1; + exports.anySeries = someSeries$1; + exports.apply = apply; + exports.applyEach = applyEach; + exports.applyEachSeries = applyEachSeries; + exports.asyncify = asyncify; + exports.auto = auto; + exports.autoInject = autoInject; + exports.cargo = cargo$1; + exports.cargoQueue = cargo; + exports.compose = compose; + exports.concat = concat$1; + exports.concatLimit = concatLimit$1; + exports.concatSeries = concatSeries$1; + exports.constant = constant$1; + exports.default = index; + exports.detect = detect$1; + exports.detectLimit = detectLimit$1; + exports.detectSeries = detectSeries$1; + exports.dir = dir; + exports.doDuring = doWhilst$1; + exports.doUntil = doUntil; + exports.doWhilst = doWhilst$1; + exports.during = whilst$1; + exports.each = each; + exports.eachLimit = eachLimit$1; + exports.eachOf = eachOf$1; + exports.eachOfLimit = eachOfLimit$1; + exports.eachOfSeries = eachOfSeries$1; + exports.eachSeries = eachSeries$1; + exports.ensureAsync = ensureAsync; + exports.every = every$1; + exports.everyLimit = everyLimit$1; + exports.everySeries = everySeries$1; + exports.filter = filter$1; + exports.filterLimit = filterLimit$1; + exports.filterSeries = filterSeries$1; + exports.find = detect$1; + exports.findLimit = detectLimit$1; + exports.findSeries = detectSeries$1; + exports.flatMap = concat$1; + exports.flatMapLimit = concatLimit$1; + exports.flatMapSeries = concatSeries$1; + exports.foldl = reduce$1; + exports.foldr = reduceRight; + exports.forEach = each; + exports.forEachLimit = eachLimit$1; + exports.forEachOf = eachOf$1; + exports.forEachOfLimit = eachOfLimit$1; + exports.forEachOfSeries = eachOfSeries$1; + exports.forEachSeries = eachSeries$1; + exports.forever = forever$1; + exports.groupBy = groupBy; + exports.groupByLimit = groupByLimit$1; + exports.groupBySeries = groupBySeries; + exports.inject = reduce$1; + exports.log = log; + exports.map = map$1; + exports.mapLimit = mapLimit$1; + exports.mapSeries = mapSeries$1; + exports.mapValues = mapValues; + exports.mapValuesLimit = mapValuesLimit$1; + exports.mapValuesSeries = mapValuesSeries; + exports.memoize = memoize; + exports.nextTick = nextTick; + exports.parallel = parallel; + exports.parallelLimit = parallelLimit; + exports.priorityQueue = priorityQueue; + exports.queue = queue; + exports.race = race$1; + exports.reduce = reduce$1; + exports.reduceRight = reduceRight; + exports.reflect = reflect; + exports.reflectAll = reflectAll; + exports.reject = reject$1; + exports.rejectLimit = rejectLimit$1; + exports.rejectSeries = rejectSeries$1; + exports.retry = retry; + exports.retryable = retryable; + exports.select = filter$1; + exports.selectLimit = filterLimit$1; + exports.selectSeries = filterSeries$1; + exports.seq = seq; + exports.series = series; + exports.setImmediate = setImmediate$1; + exports.some = some$1; + exports.someLimit = someLimit$1; + exports.someSeries = someSeries$1; + exports.sortBy = sortBy$1; + exports.timeout = timeout; + exports.times = times; + exports.timesLimit = timesLimit; + exports.timesSeries = timesSeries; + exports.transform = transform; + exports.tryEach = tryEach$1; + exports.unmemoize = unmemoize; + exports.until = until; + exports.waterfall = waterfall$1; + exports.whilst = whilst$1; + exports.wrapSync = asyncify; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); diff --git a/node_modules/async/dist/async.min.js b/node_modules/async/dist/async.min.js new file mode 100644 index 0000000..f0b7fdf --- /dev/null +++ b/node_modules/async/dist/async.min.js @@ -0,0 +1 @@ +(function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):(e="undefined"==typeof globalThis?e||self:globalThis,t(e.async={}))})(this,function(e){"use strict";function t(e,...t){return(...n)=>e(...t,...n)}function n(e){return function(...t){var n=t.pop();return e.call(this,t,n)}}function a(e){setTimeout(e,0)}function i(e){return(t,...n)=>e(()=>t(...n))}function r(e){return d(e)?function(...t){const n=t.pop(),a=e.apply(this,t);return s(a,n)}:n(function(t,n){var a;try{a=e.apply(this,t)}catch(t){return n(t)}return a&&"function"==typeof a.then?s(a,n):void n(null,a)})}function s(e,t){return e.then(e=>{l(t,null,e)},e=>{l(t,e&&(e instanceof Error||e.message)?e:new Error(e))})}function l(e,t,n){try{e(t,n)}catch(e){_e(t=>{throw t},e)}}function d(e){return"AsyncFunction"===e[Symbol.toStringTag]}function u(e){return"AsyncGenerator"===e[Symbol.toStringTag]}function p(e){return"function"==typeof e[Symbol.asyncIterator]}function c(e){if("function"!=typeof e)throw new Error("expected a function");return d(e)?r(e):e}function o(e,t){function n(...n){return"function"==typeof n[t-1]?e.apply(this,n):new Promise((a,i)=>{n[t-1]=(e,...t)=>e?i(e):void a(1<t.length?t:t[0]),e.apply(this,n)})}if(t||(t=e.length),!t)throw new Error("arity is undefined");return n}function h(e){return function a(t,...n){const i=o(function(a){var i=this;return e(t,(e,t)=>{c(e).apply(i,n.concat(t))},a)});return i}}function f(e,t,n,a){t=t||[];var i=[],r=0,s=c(n);return e(t,(e,t,n)=>{var a=r++;s(e,(e,t)=>{i[a]=t,n(e)})},e=>{a(e,i)})}function y(e){return e&&"number"==typeof e.length&&0<=e.length&&0==e.length%1}function m(e){function t(...t){if(null!==e){var n=e;e=null,n.apply(this,t)}}return Object.assign(t,e),t}function g(e){return e[Symbol.iterator]&&e[Symbol.iterator]()}function k(e){var t=-1,n=e.length;return function a(){return++t<n?{value:e[t],key:t}:null}}function v(e){var t=-1;return function n(){var a=e.next();return a.done?null:(t++,{value:a.value,key:t})}}function S(e){var t=e?Object.keys(e):[],n=-1,a=t.length;return function i(){var r=t[++n];return"__proto__"===r?i():n<a?{value:e[r],key:r}:null}}function x(e){if(y(e))return k(e);var t=g(e);return t?v(t):S(e)}function L(e){return function(...t){if(null===e)throw new Error("Callback was already called.");var n=e;e=null,n.apply(this,t)}}function E(e,t,n,a){function i(){p>=t||u||l||(u=!0,e.next().then(({value:e,done:t})=>{if(!(d||l))return u=!1,t?(l=!0,void(0>=p&&a(null))):void(p++,n(e,c,r),c++,i())}).catch(s))}function r(e,t){return p-=1,d?void 0:e?s(e):!1===e?(l=!0,void(d=!0)):t===be||l&&0>=p?(l=!0,a(null)):void i()}function s(e){d||(u=!1,l=!0,a(e))}let l=!1,d=!1,u=!1,p=0,c=0;i()}function O(e,t,n){function a(e,t){!1===e&&(l=!0);!0===l||(e?n(e):(++r===s||t===be)&&n(null))}n=m(n);var i=0,r=0,{length:s}=e,l=!1;for(0===s&&n(null);i<s;i++)t(e[i],i,L(a))}function _(e,t,n){return Ie(e,1/0,t,n)}function b(){function e(e,...a){return e?n(e):void t(1<a.length?a:a[0])}let t,n;return e[Ce]=new Promise((e,a)=>{t=e,n=a}),e}function A(e,t,n){function a(e,t){k.push(()=>l(e,t))}function i(){if(!f){if(0===k.length&&0===h)return n(null,o);for(;k.length&&h<t;){var e=k.shift();e()}}}function r(e,t){var n=g[e];n||(n=g[e]=[]),n.push(t)}function s(e){var t=g[e]||[];t.forEach(e=>e()),i()}function l(e,t){if(!y){var a=L((t,...a)=>{if(h--,!1===t)return void(f=!0);if(2>a.length&&([a]=a),t){var i={};if(Object.keys(o).forEach(e=>{i[e]=o[e]}),i[e]=a,y=!0,g=Object.create(null),f)return;n(t,i)}else o[e]=a,s(e)});h++;var i=c(t[t.length-1]);1<t.length?i(o,a):i(a)}}function d(){for(var e,t=0;v.length;)e=v.pop(),t++,u(e).forEach(e=>{0==--S[e]&&v.push(e)});if(t!==p)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}function u(t){var n=[];return Object.keys(e).forEach(a=>{const i=e[a];Array.isArray(i)&&0<=i.indexOf(t)&&n.push(a)}),n}"number"!=typeof t&&(n=t,t=null),n=m(n||b());var p=Object.keys(e).length;if(!p)return n(null);t||(t=p);var o={},h=0,f=!1,y=!1,g=Object.create(null),k=[],v=[],S={};return Object.keys(e).forEach(t=>{var n=e[t];if(!Array.isArray(n))return a(t,[n]),void v.push(t);var i=n.slice(0,n.length-1),s=i.length;return 0===s?(a(t,n),void v.push(t)):void(S[t]=s,i.forEach(l=>{if(!e[l])throw new Error("async.auto task `"+t+"` has a non-existent dependency `"+l+"` in "+i.join(", "));r(l,()=>{s--,0===s&&a(t,n)})}))}),d(),i(),n[Ce]}function I(e){let t="",n=0,a=e.indexOf("*/");for(;n<e.length;)if("/"===e[n]&&"/"===e[n+1]){let t=e.indexOf("\n",n);n=-1===t?e.length:t}else if(-1!==a&&"/"===e[n]&&"*"===e[n+1]){let i=e.indexOf("*/",n);-1===i?(t+=e[n],n++):(n=i+2,a=e.indexOf("*/",n))}else t+=e[n],n++;return t}function M(e){const t=I(e.toString());let n=t.match(Pe);if(n||(n=t.match(Re)),!n)throw new Error("could not parse args in autoInject\nSource:\n"+t);let[,a]=n;return a.replace(/\s/g,"").split(ze).map(e=>e.replace(Ne,"").trim())}function j(e,t){var n={};return Object.keys(e).forEach(t=>{function a(e,t){var n=i.map(t=>e[t]);n.push(t),c(r)(...n)}var i,r=e[t],s=d(r),l=!s&&1===r.length||s&&0===r.length;if(Array.isArray(r))i=[...r],r=i.pop(),n[t]=i.concat(0<i.length?a:r);else if(l)n[t]=r;else{if(i=M(r),0===r.length&&!s&&0===i.length)throw new Error("autoInject task functions require explicit parameters.");s||i.pop(),n[t]=i.concat(a)}}),A(n,t)}function w(e,t){e.length=1,e.head=e.tail=t}function B(e,t,n){function a(e,t){f[e].push(t)}function i(e,t){const n=(...a)=>{r(e,n),t(...a)};f[e].push(n)}function r(e,t){return e?t?void(f[e]=f[e].filter(e=>e!==t)):f[e]=[]:Object.keys(f).forEach(e=>f[e]=[])}function s(e,...t){f[e].forEach(e=>e(...t))}function l(e,t,n,a){function i(e,...t){return e?n?s(e):r():1>=t.length?r(t[0]):void r(t)}if(null!=a&&"function"!=typeof a)throw new Error("task callback must be a function");k.started=!0;var r,s,l=k._createTaskItem(e,n?i:a||i);if(t?k._tasks.unshift(l):k._tasks.push(l),y||(y=!0,_e(()=>{y=!1,k.process()})),n||!a)return new Promise((e,t)=>{r=e,s=t})}function d(e){return function(t,...n){o-=1;for(var a=0,r=e.length;a<r;a++){var l=e[a],d=h.indexOf(l);0===d?h.shift():0<d&&h.splice(d,1),l.callback(t,...n),null!=t&&s("error",t,l.data)}o<=k.concurrency-k.buffer&&s("unsaturated"),k.idle()&&s("drain"),k.process()}}function u(e){return!!(0===e.length&&k.idle())&&(_e(()=>s("drain")),!0)}if(null==t)t=1;else if(0===t)throw new RangeError("Concurrency must not be zero");var p=c(e),o=0,h=[];const f={error:[],drain:[],saturated:[],unsaturated:[],empty:[]};var y=!1;const m=e=>t=>t?void(r(e),a(e,t)):new Promise((t,n)=>{i(e,(e,a)=>e?n(e):void t(a))});var g=!1,k={_tasks:new Ve,_createTaskItem(e,t){return{data:e,callback:t}},*[Symbol.iterator](){yield*k._tasks[Symbol.iterator]()},concurrency:t,payload:n,buffer:t/4,started:!1,paused:!1,push(e,t){return Array.isArray(e)?u(e)?void 0:e.map(e=>l(e,!1,!1,t)):l(e,!1,!1,t)},pushAsync(e,t){return Array.isArray(e)?u(e)?void 0:e.map(e=>l(e,!1,!0,t)):l(e,!1,!0,t)},kill(){r(),k._tasks.empty()},unshift(e,t){return Array.isArray(e)?u(e)?void 0:e.map(e=>l(e,!0,!1,t)):l(e,!0,!1,t)},unshiftAsync(e,t){return Array.isArray(e)?u(e)?void 0:e.map(e=>l(e,!0,!0,t)):l(e,!0,!0,t)},remove(e){k._tasks.remove(e)},process(){var e=Math.min;if(!g){for(g=!0;!k.paused&&o<k.concurrency&&k._tasks.length;){var t=[],n=[],a=k._tasks.length;k.payload&&(a=e(a,k.payload));for(var r,u=0;u<a;u++)r=k._tasks.shift(),t.push(r),h.push(r),n.push(r.data);o+=1,0===k._tasks.length&&s("empty"),o===k.concurrency&&s("saturated");var c=L(d(t));p(n,c)}g=!1}},length(){return k._tasks.length},running(){return o},workersList(){return h},idle(){return 0===k._tasks.length+o},pause(){k.paused=!0},resume(){!1===k.paused||(k.paused=!1,_e(k.process))}};return Object.defineProperties(k,{saturated:{writable:!1,value:m("saturated")},unsaturated:{writable:!1,value:m("unsaturated")},empty:{writable:!1,value:m("empty")},drain:{writable:!1,value:m("drain")},error:{writable:!1,value:m("error")}}),k}function T(e,t){return B(e,1,t)}function F(e,t,n){return B(e,t,n)}function C(...e){var t=e.map(c);return function(...e){var n=this,a=e[e.length-1];return"function"==typeof a?e.pop():a=b(),qe(t,e,(e,t,a)=>{t.apply(n,e.concat((e,...t)=>{a(e,t)}))},(e,t)=>a(e,...t)),a[Ce]}}function P(...e){return C(...e.reverse())}function R(...e){return function(...t){var n=t.pop();return n(null,...e)}}function z(e,t){return(n,a,i,r)=>{var s,l=!1;const d=c(i);n(a,(n,a,i)=>{d(n,(a,r)=>a||!1===a?i(a):e(r)&&!s?(l=!0,s=t(!0,n),i(null,be)):void i())},e=>e?r(e):void r(null,l?s:t(!1)))}}function N(e){return(t,...n)=>c(t)(...n,(t,...n)=>{"object"==typeof console&&(t?console.error&&console.error(t):console[e]&&n.forEach(t=>console[e](t)))})}function V(e,t,n){const a=c(t);return Xe(e,(...e)=>{const t=e.pop();a(...e,(e,n)=>t(e,!n))},n)}function Y(e){return(t,n,a)=>e(t,a)}function q(e){return d(e)?e:function(...t){var n=t.pop(),a=!0;t.push((...e)=>{a?_e(()=>n(...e)):n(...e)}),e.apply(this,t),a=!1}}function D(e,t,n,a){var r=Array(t.length);e(t,(e,t,a)=>{n(e,(e,n)=>{r[t]=!!n,a(e)})},e=>{if(e)return a(e);for(var n=[],s=0;s<t.length;s++)r[s]&&n.push(t[s]);a(null,n)})}function Q(e,t,n,a){var i=[];e(t,(e,t,a)=>{n(e,(n,r)=>n?a(n):void(r&&i.push({index:t,value:e}),a(n)))},e=>e?a(e):void a(null,i.sort((e,t)=>e.index-t.index).map(e=>e.value)))}function U(e,t,n,a){var i=y(t)?D:Q;return i(e,t,c(n),a)}function G(e,t,n){return dt(e,1/0,t,n)}function W(e,t,n){return dt(e,1,t,n)}function H(e,t,n){return pt(e,1/0,t,n)}function J(e,t,n){return pt(e,1,t,n)}function K(e,t=e=>e){var a=Object.create(null),r=Object.create(null),s=c(e),l=n((e,n)=>{var d=t(...e);d in a?_e(()=>n(null,...a[d])):d in r?r[d].push(n):(r[d]=[n],s(...e,(e,...t)=>{e||(a[d]=t);var n=r[d];delete r[d];for(var s=0,u=n.length;s<u;s++)n[s](e,...t)}))});return l.memo=a,l.unmemoized=e,l}function X(e,t){return ot(Me,e,t)}function Z(e,t,n){return ot(Ae(t),e,n)}function $(e,t){var n=c(e);return B((e,t)=>{n(e[0],t)},t,1)}function ee(e){return(e<<1)+1}function te(e){return(e+1>>1)-1}function ne(e,t){return e.priority===t.priority?e.pushCount<t.pushCount:e.priority<t.priority}function ae(e,t){function n(e,t){return Array.isArray(e)?e.map(e=>({data:e,priority:t})):{data:e,priority:t}}var a=$(e,t),{push:i,pushAsync:r}=a;return a._tasks=new ht,a._createTaskItem=({data:e,priority:t},n)=>({data:e,priority:t,callback:n}),a.push=function(e,t=0,a){return i(n(e,t),a)},a.pushAsync=function(e,t=0,a){return r(n(e,t),a)},delete a.unshift,delete a.unshiftAsync,a}function ie(e,t,n,a){var i=[...e].reverse();return qe(i,t,n,a)}function re(e){var t=c(e);return n(function a(e,n){return e.push((e,...t)=>{let a={};if(e&&(a.error=e),0<t.length){var i=t;1>=t.length&&([i]=t),a.value=i}n(null,a)}),t.apply(this,e)})}function se(e){var t;return Array.isArray(e)?t=e.map(re):(t={},Object.keys(e).forEach(n=>{t[n]=re.call(this,e[n])})),t}function le(e,t,n,a){const i=c(n);return U(e,t,(e,t)=>{i(e,(e,n)=>{t(e,!n)})},a)}function de(e){return function(){return e}}function ue(e,t,n){function a(){r((e,...t)=>{!1===e||(e&&s++<i.times&&("function"!=typeof i.errorFilter||i.errorFilter(e))?setTimeout(a,i.intervalFunc(s-1)):n(e,...t))})}var i={times:kt,intervalFunc:de(vt)};if(3>arguments.length&&"function"==typeof e?(n=t||b(),t=e):(pe(i,e),n=n||b()),"function"!=typeof t)throw new Error("Invalid arguments for async.retry");var r=c(t),s=1;return a(),n[Ce]}function pe(e,n){if("object"==typeof n)e.times=+n.times||kt,e.intervalFunc="function"==typeof n.interval?n.interval:de(+n.interval||vt),e.errorFilter=n.errorFilter;else if("number"==typeof n||"string"==typeof n)e.times=+n||kt;else throw new Error("Invalid arguments for async.retry")}function ce(e,t){t||(t=e,e=null);let a=e&&e.arity||t.length;d(t)&&(a+=1);var i=c(t);return n((t,n)=>{function r(e){i(...t,e)}return(t.length<a-1||null==n)&&(t.push(n),n=b()),e?ue(e,r,n):ue(r,n),n[Ce]})}function oe(e,t){return ot(Be,e,t)}function he(e,t,a){var i=c(e);return n((n,r)=>{function s(){var t=e.name||"anonymous",n=new Error("Callback function \""+t+"\" timed out.");n.code="ETIMEDOUT",a&&(n.info=a),d=!0,r(n)}var l,d=!1;n.push((...e)=>{d||(r(...e),clearTimeout(l))}),l=setTimeout(s,t),i(...n)})}function fe(e){for(var t=Array(e);e--;)t[e]=e;return t}function ye(e,t,n,a){var i=c(n);return De(fe(e),t,i,a)}function me(e,t,n){return ye(e,1/0,t,n)}function ge(e,t,n){return ye(e,1,t,n)}function ke(e,t,n,a){3>=arguments.length&&"function"==typeof t&&(a=n,n=t,t=Array.isArray(e)?[]:{}),a=m(a||b());var i=c(n);return Me(e,(e,n,a)=>{i(t,e,n,a)},e=>a(e,t)),a[Ce]}function ve(e){return(...t)=>(e.unmemoized||e)(...t)}function Se(e,t,n){const a=c(e);return _t(e=>a((t,n)=>e(t,!n)),t,n)}var xe,Le="function"==typeof queueMicrotask&&queueMicrotask,Ee="function"==typeof setImmediate&&setImmediate,Oe="object"==typeof process&&"function"==typeof process.nextTick;xe=Le?queueMicrotask:Ee?setImmediate:Oe?process.nextTick:a;var _e=i(xe);const be={};var Ae=e=>(t,n,a)=>{function i(e,t){if(!d)if(c-=1,e)l=!0,a(e);else if(!1===e)l=!0,d=!0;else{if(t===be||l&&0>=c)return l=!0,a(null);o||r()}}function r(){for(o=!0;c<e&&!l;){var t=s();if(null===t)return l=!0,void(0>=c&&a(null));c+=1,n(t.value,t.key,L(i))}o=!1}if(a=m(a),0>=e)throw new RangeError("concurrency limit cannot be less than 1");if(!t)return a(null);if(u(t))return E(t,e,n,a);if(p(t))return E(t[Symbol.asyncIterator](),e,n,a);var s=x(t),l=!1,d=!1,c=0,o=!1;r()},Ie=o(function i(e,t,n,a){return Ae(t)(e,c(n),a)},4),Me=o(function a(e,t,n){var i=y(e)?O:_;return i(e,c(t),n)},3),je=o(function a(e,t,n){return f(Me,e,t,n)},3),we=h(je),Be=o(function a(e,t,n){return Ie(e,1,t,n)},3),Te=o(function a(e,t,n){return f(Be,e,t,n)},3),Fe=h(Te);const Ce=Symbol("promiseCallback");var Pe=/^(?:async\s)?(?:function)?\s*(?:\w+\s*)?\(([^)]+)\)(?:\s*{)/,Re=/^(?:async\s)?\s*(?:\(\s*)?((?:[^)=\s]\s*)*)(?:\)\s*)?=>/,ze=/,/,Ne=/(=.+)?(\s*)$/;class Ve{constructor(){this.head=this.tail=null,this.length=0}removeLink(e){return e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev,e.prev=e.next=null,this.length-=1,e}empty(){for(;this.head;)this.shift();return this}insertAfter(e,t){t.prev=e,t.next=e.next,e.next?e.next.prev=t:this.tail=t,e.next=t,this.length+=1}insertBefore(e,t){t.prev=e.prev,t.next=e,e.prev?e.prev.next=t:this.head=t,e.prev=t,this.length+=1}unshift(e){this.head?this.insertBefore(this.head,e):w(this,e)}push(e){this.tail?this.insertAfter(this.tail,e):w(this,e)}shift(){return this.head&&this.removeLink(this.head)}pop(){return this.tail&&this.removeLink(this.tail)}toArray(){return[...this]}*[Symbol.iterator](){for(var e=this.head;e;)yield e.data,e=e.next}remove(e){for(var t=this.head;t;){var{next:n}=t;e(t)&&this.removeLink(t),t=n}return this}}var Ye,qe=o(function i(e,t,n,a){a=m(a);var r=c(n);return Be(e,(e,n,a)=>{r(t,e,(e,n)=>{t=n,a(e)})},e=>a(e,t))},4),De=o(function i(e,t,n,a){return f(Ae(t),e,n,a)},4),Qe=o(function i(e,t,n,a){var r=c(n);return De(e,t,(e,t)=>{r(e,(e,...n)=>e?t(e):t(e,n))},(e,t)=>{for(var n=[],r=0;r<t.length;r++)t[r]&&(n=n.concat(...t[r]));return a(e,n)})},4),Ue=o(function a(e,t,n){return Qe(e,1/0,t,n)},3),Ge=o(function a(e,t,n){return Qe(e,1,t,n)},3),We=o(function a(e,t,n){return z(e=>e,(e,t)=>t)(Me,e,t,n)},3),He=o(function i(e,t,n,a){return z(e=>e,(e,t)=>t)(Ae(t),e,n,a)},4),Je=o(function a(e,t,n){return z(e=>e,(e,t)=>t)(Ae(1),e,t,n)},3),Ke=N("dir"),Xe=o(function a(e,t,n){function i(e,...t){return e?n(e):void(!1===e||(s=t,d(...t,r)))}function r(e,t){return e?n(e):!1===e?void 0:t?void l(i):n(null,...s)}n=L(n);var s,l=c(e),d=c(t);return r(null,!0)},3),Ze=o(function a(e,t,n){return Me(e,Y(c(t)),n)},3),$e=o(function i(e,t,n,a){return Ae(t)(e,Y(c(n)),a)},4),et=o(function a(e,t,n){return $e(e,1,t,n)},3),tt=o(function a(e,t,n){return z(e=>!e,e=>!e)(Me,e,t,n)},3),nt=o(function i(e,t,n,a){return z(e=>!e,e=>!e)(Ae(t),e,n,a)},4),at=o(function a(e,t,n){return z(e=>!e,e=>!e)(Be,e,t,n)},3),it=o(function a(e,t,n){return U(Me,e,t,n)},3),rt=o(function i(e,t,n,a){return U(Ae(t),e,n,a)},4),st=o(function a(e,t,n){return U(Be,e,t,n)},3),lt=o(function n(e,t){function a(e){return e?i(e):void(!1===e||r(a))}var i=L(t),r=c(q(e));return a()},2),dt=o(function i(e,t,n,a){var r=c(n);return De(e,t,(e,t)=>{r(e,(n,a)=>n?t(n):t(n,{key:a,val:e}))},(e,t)=>{for(var n={},{hasOwnProperty:r}=Object.prototype,s=0;s<t.length;s++)if(t[s]){var{key:l}=t[s],{val:d}=t[s];r.call(n,l)?n[l].push(d):n[l]=[d]}return a(e,n)})},4),ut=N("log"),pt=o(function i(e,t,n,a){a=m(a);var r={},s=c(n);return Ae(t)(e,(e,t,n)=>{s(e,t,(e,a)=>e?n(e):void(r[t]=a,n(e)))},e=>a(e,r))},4);Ye=Oe?process.nextTick:Ee?setImmediate:a;var ct=i(Ye),ot=o((e,t,n)=>{var a=y(t)?[]:{};e(t,(e,t,n)=>{c(e)((e,...i)=>{2>i.length&&([i]=i),a[t]=i,n(e)})},e=>n(e,a))},3);class ht{constructor(){this.heap=[],this.pushCount=Number.MIN_SAFE_INTEGER}get length(){return this.heap.length}empty(){return this.heap=[],this}percUp(e){for(let n;0<e&&ne(this.heap[e],this.heap[n=te(e)]);){let a=this.heap[e];this.heap[e]=this.heap[n],this.heap[n]=a,e=n}}percDown(e){for(let n,a;(n=ee(e))<this.heap.length&&(n+1<this.heap.length&&ne(this.heap[n+1],this.heap[n])&&++n,!ne(this.heap[e],this.heap[n]));)a=this.heap[e],this.heap[e]=this.heap[n],this.heap[n]=a,e=n}push(e){e.pushCount=++this.pushCount,this.heap.push(e),this.percUp(this.heap.length-1)}unshift(e){return this.heap.push(e)}shift(){let[e]=this.heap;return this.heap[0]=this.heap[this.heap.length-1],this.heap.pop(),this.percDown(0),e}toArray(){return[...this]}*[Symbol.iterator](){for(let e=0;e<this.heap.length;e++)yield this.heap[e].data}remove(e){let t=0;for(let n=0;n<this.heap.length;n++)e(this.heap[n])||(this.heap[t]=this.heap[n],t++);this.heap.splice(t);for(let t=te(this.heap.length-1);0<=t;t--)this.percDown(t);return this}}var ft=o(function n(e,t){if(t=m(t),!Array.isArray(e))return t(new TypeError("First argument to race must be an array of functions"));if(!e.length)return t();for(var a=0,r=e.length;a<r;a++)c(e[a])(t)},2),yt=o(function a(e,t,n){return le(Me,e,t,n)},3),mt=o(function i(e,t,n,a){return le(Ae(t),e,n,a)},4),gt=o(function a(e,t,n){return le(Be,e,t,n)},3);const kt=5,vt=0;var St=o(function a(e,t,n){return z(Boolean,e=>e)(Me,e,t,n)},3),xt=o(function i(e,t,n,a){return z(Boolean,e=>e)(Ae(t),e,n,a)},4),Lt=o(function a(e,t,n){return z(Boolean,e=>e)(Be,e,t,n)},3),Et=o(function a(e,t,n){function i(e,t){var n=e.criteria,a=t.criteria;return n<a?-1:n>a?1:0}var r=c(t);return je(e,(e,t)=>{r(e,(n,a)=>n?t(n):void t(n,{value:e,criteria:a}))},(e,t)=>e?n(e):void n(null,t.sort(i).map(e=>e.value)))},3),Ot=o(function n(e,t){var a,i=null;return et(e,(e,t)=>{c(e)((e,...n)=>!1===e?t(e):void(2>n.length?[a]=n:a=n,i=e,t(e?null:{})))},()=>t(i,a))}),_t=o(function a(e,t,n){function i(e,...t){if(e)return n(e);d=t;!1===e||l(r)}function r(e,t){return e?n(e):!1===e?void 0:t?void s(i):n(null,...d)}n=L(n);var s=c(t),l=c(e),d=[];return l(r)},3),bt=o(function n(e,t){function a(t){var n=c(e[r++]);n(...t,L(i))}function i(n,...i){return!1===n?void 0:n||r===e.length?t(n,...i):void a(i)}if(t=m(t),!Array.isArray(e))return t(new Error("First argument to waterfall must be an array of functions"));if(!e.length)return t();var r=0;a([])});e.all=tt,e.allLimit=nt,e.allSeries=at,e.any=St,e.anyLimit=xt,e.anySeries=Lt,e.apply=t,e.applyEach=we,e.applyEachSeries=Fe,e.asyncify=r,e.auto=A,e.autoInject=j,e.cargo=T,e.cargoQueue=F,e.compose=P,e.concat=Ue,e.concatLimit=Qe,e.concatSeries=Ge,e.constant=R,e.default={apply:t,applyEach:we,applyEachSeries:Fe,asyncify:r,auto:A,autoInject:j,cargo:T,cargoQueue:F,compose:P,concat:Ue,concatLimit:Qe,concatSeries:Ge,constant:R,detect:We,detectLimit:He,detectSeries:Je,dir:Ke,doUntil:V,doWhilst:Xe,each:Ze,eachLimit:$e,eachOf:Me,eachOfLimit:Ie,eachOfSeries:Be,eachSeries:et,ensureAsync:q,every:tt,everyLimit:nt,everySeries:at,filter:it,filterLimit:rt,filterSeries:st,forever:lt,groupBy:G,groupByLimit:dt,groupBySeries:W,log:ut,map:je,mapLimit:De,mapSeries:Te,mapValues:H,mapValuesLimit:pt,mapValuesSeries:J,memoize:K,nextTick:ct,parallel:X,parallelLimit:Z,priorityQueue:ae,queue:$,race:ft,reduce:qe,reduceRight:ie,reflect:re,reflectAll:se,reject:yt,rejectLimit:mt,rejectSeries:gt,retry:ue,retryable:ce,seq:C,series:oe,setImmediate:_e,some:St,someLimit:xt,someSeries:Lt,sortBy:Et,timeout:he,times:me,timesLimit:ye,timesSeries:ge,transform:ke,tryEach:Ot,unmemoize:ve,until:Se,waterfall:bt,whilst:_t,all:tt,allLimit:nt,allSeries:at,any:St,anyLimit:xt,anySeries:Lt,find:We,findLimit:He,findSeries:Je,flatMap:Ue,flatMapLimit:Qe,flatMapSeries:Ge,forEach:Ze,forEachSeries:et,forEachLimit:$e,forEachOf:Me,forEachOfSeries:Be,forEachOfLimit:Ie,inject:qe,foldl:qe,foldr:ie,select:it,selectLimit:rt,selectSeries:st,wrapSync:r,during:_t,doDuring:Xe},e.detect=We,e.detectLimit=He,e.detectSeries=Je,e.dir=Ke,e.doDuring=Xe,e.doUntil=V,e.doWhilst=Xe,e.during=_t,e.each=Ze,e.eachLimit=$e,e.eachOf=Me,e.eachOfLimit=Ie,e.eachOfSeries=Be,e.eachSeries=et,e.ensureAsync=q,e.every=tt,e.everyLimit=nt,e.everySeries=at,e.filter=it,e.filterLimit=rt,e.filterSeries=st,e.find=We,e.findLimit=He,e.findSeries=Je,e.flatMap=Ue,e.flatMapLimit=Qe,e.flatMapSeries=Ge,e.foldl=qe,e.foldr=ie,e.forEach=Ze,e.forEachLimit=$e,e.forEachOf=Me,e.forEachOfLimit=Ie,e.forEachOfSeries=Be,e.forEachSeries=et,e.forever=lt,e.groupBy=G,e.groupByLimit=dt,e.groupBySeries=W,e.inject=qe,e.log=ut,e.map=je,e.mapLimit=De,e.mapSeries=Te,e.mapValues=H,e.mapValuesLimit=pt,e.mapValuesSeries=J,e.memoize=K,e.nextTick=ct,e.parallel=X,e.parallelLimit=Z,e.priorityQueue=ae,e.queue=$,e.race=ft,e.reduce=qe,e.reduceRight=ie,e.reflect=re,e.reflectAll=se,e.reject=yt,e.rejectLimit=mt,e.rejectSeries=gt,e.retry=ue,e.retryable=ce,e.select=it,e.selectLimit=rt,e.selectSeries=st,e.seq=C,e.series=oe,e.setImmediate=_e,e.some=St,e.someLimit=xt,e.someSeries=Lt,e.sortBy=Et,e.timeout=he,e.times=me,e.timesLimit=ye,e.timesSeries=ge,e.transform=ke,e.tryEach=Ot,e.unmemoize=ve,e.until=Se,e.waterfall=bt,e.whilst=_t,e.wrapSync=r,Object.defineProperty(e,"__esModule",{value:!0})}); \ No newline at end of file diff --git a/node_modules/async/dist/async.mjs b/node_modules/async/dist/async.mjs new file mode 100644 index 0000000..2c59965 --- /dev/null +++ b/node_modules/async/dist/async.mjs @@ -0,0 +1,5948 @@ +/** + * Creates a continuation function with some arguments already applied. + * + * Useful as a shorthand when combined with other control flow functions. Any + * arguments passed to the returned function are added to the arguments + * originally passed to apply. + * + * @name apply + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {Function} fn - The function you want to eventually apply all + * arguments to. Invokes with (arguments...). + * @param {...*} arguments... - Any number of arguments to automatically apply + * when the continuation is called. + * @returns {Function} the partially-applied function + * @example + * + * // using apply + * async.parallel([ + * async.apply(fs.writeFile, 'testfile1', 'test1'), + * async.apply(fs.writeFile, 'testfile2', 'test2') + * ]); + * + * + * // the same process without using apply + * async.parallel([ + * function(callback) { + * fs.writeFile('testfile1', 'test1', callback); + * }, + * function(callback) { + * fs.writeFile('testfile2', 'test2', callback); + * } + * ]); + * + * // It's possible to pass any number of additional arguments when calling the + * // continuation: + * + * node> var fn = async.apply(sys.puts, 'one'); + * node> fn('two', 'three'); + * one + * two + * three + */ +function apply(fn, ...args) { + return (...callArgs) => fn(...args,...callArgs); +} + +function initialParams (fn) { + return function (...args/*, callback*/) { + var callback = args.pop(); + return fn.call(this, args, callback); + }; +} + +/* istanbul ignore file */ + +var hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask; +var hasSetImmediate = typeof setImmediate === 'function' && setImmediate; +var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function'; + +function fallback(fn) { + setTimeout(fn, 0); +} + +function wrap(defer) { + return (fn, ...args) => defer(() => fn(...args)); +} + +var _defer$1; + +if (hasQueueMicrotask) { + _defer$1 = queueMicrotask; +} else if (hasSetImmediate) { + _defer$1 = setImmediate; +} else if (hasNextTick) { + _defer$1 = process.nextTick; +} else { + _defer$1 = fallback; +} + +var setImmediate$1 = wrap(_defer$1); + +/** + * Take a sync function and make it async, passing its return value to a + * callback. This is useful for plugging sync functions into a waterfall, + * series, or other async functions. Any arguments passed to the generated + * function will be passed to the wrapped function (except for the final + * callback argument). Errors thrown will be passed to the callback. + * + * If the function passed to `asyncify` returns a Promise, that promises's + * resolved/rejected state will be used to call the callback, rather than simply + * the synchronous return value. + * + * This also means you can asyncify ES2017 `async` functions. + * + * @name asyncify + * @static + * @memberOf module:Utils + * @method + * @alias wrapSync + * @category Util + * @param {Function} func - The synchronous function, or Promise-returning + * function to convert to an {@link AsyncFunction}. + * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be + * invoked with `(args..., callback)`. + * @example + * + * // passing a regular synchronous function + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(JSON.parse), + * function (data, next) { + * // data is the result of parsing the text. + * // If there was a parsing error, it would have been caught. + * } + * ], callback); + * + * // passing a function returning a promise + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(function (contents) { + * return db.model.create(contents); + * }), + * function (model, next) { + * // `model` is the instantiated model object. + * // If there was an error, this function would be skipped. + * } + * ], callback); + * + * // es2017 example, though `asyncify` is not needed if your JS environment + * // supports async functions out of the box + * var q = async.queue(async.asyncify(async function(file) { + * var intermediateStep = await processFile(file); + * return await somePromise(intermediateStep) + * })); + * + * q.push(files); + */ +function asyncify(func) { + if (isAsync(func)) { + return function (...args/*, callback*/) { + const callback = args.pop(); + const promise = func.apply(this, args); + return handlePromise(promise, callback) + } + } + + return initialParams(function (args, callback) { + var result; + try { + result = func.apply(this, args); + } catch (e) { + return callback(e); + } + // if result is Promise object + if (result && typeof result.then === 'function') { + return handlePromise(result, callback) + } else { + callback(null, result); + } + }); +} + +function handlePromise(promise, callback) { + return promise.then(value => { + invokeCallback(callback, null, value); + }, err => { + invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err)); + }); +} + +function invokeCallback(callback, error, value) { + try { + callback(error, value); + } catch (err) { + setImmediate$1(e => { throw e }, err); + } +} + +function isAsync(fn) { + return fn[Symbol.toStringTag] === 'AsyncFunction'; +} + +function isAsyncGenerator(fn) { + return fn[Symbol.toStringTag] === 'AsyncGenerator'; +} + +function isAsyncIterable(obj) { + return typeof obj[Symbol.asyncIterator] === 'function'; +} + +function wrapAsync(asyncFn) { + if (typeof asyncFn !== 'function') throw new Error('expected a function') + return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn; +} + +// conditionally promisify a function. +// only return a promise if a callback is omitted +function awaitify (asyncFn, arity) { + if (!arity) arity = asyncFn.length; + if (!arity) throw new Error('arity is undefined') + function awaitable (...args) { + if (typeof args[arity - 1] === 'function') { + return asyncFn.apply(this, args) + } + + return new Promise((resolve, reject) => { + args[arity - 1] = (err, ...cbArgs) => { + if (err) return reject(err) + resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]); + }; + asyncFn.apply(this, args); + }) + } + + return awaitable +} + +function applyEach$1 (eachfn) { + return function applyEach(fns, ...callArgs) { + const go = awaitify(function (callback) { + var that = this; + return eachfn(fns, (fn, cb) => { + wrapAsync(fn).apply(that, callArgs.concat(cb)); + }, callback); + }); + return go; + }; +} + +function _asyncMap(eachfn, arr, iteratee, callback) { + arr = arr || []; + var results = []; + var counter = 0; + var _iteratee = wrapAsync(iteratee); + + return eachfn(arr, (value, _, iterCb) => { + var index = counter++; + _iteratee(value, (err, v) => { + results[index] = v; + iterCb(err); + }); + }, err => { + callback(err, results); + }); +} + +function isArrayLike(value) { + return value && + typeof value.length === 'number' && + value.length >= 0 && + value.length % 1 === 0; +} + +// A temporary value used to identify if the loop should be broken. +// See #1064, #1293 +const breakLoop = {}; + +function once(fn) { + function wrapper (...args) { + if (fn === null) return; + var callFn = fn; + fn = null; + callFn.apply(this, args); + } + Object.assign(wrapper, fn); + return wrapper +} + +function getIterator (coll) { + return coll[Symbol.iterator] && coll[Symbol.iterator](); +} + +function createArrayIterator(coll) { + var i = -1; + var len = coll.length; + return function next() { + return ++i < len ? {value: coll[i], key: i} : null; + } +} + +function createES2015Iterator(iterator) { + var i = -1; + return function next() { + var item = iterator.next(); + if (item.done) + return null; + i++; + return {value: item.value, key: i}; + } +} + +function createObjectIterator(obj) { + var okeys = obj ? Object.keys(obj) : []; + var i = -1; + var len = okeys.length; + return function next() { + var key = okeys[++i]; + if (key === '__proto__') { + return next(); + } + return i < len ? {value: obj[key], key} : null; + }; +} + +function createIterator(coll) { + if (isArrayLike(coll)) { + return createArrayIterator(coll); + } + + var iterator = getIterator(coll); + return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll); +} + +function onlyOnce(fn) { + return function (...args) { + if (fn === null) throw new Error("Callback was already called."); + var callFn = fn; + fn = null; + callFn.apply(this, args); + }; +} + +// for async generators +function asyncEachOfLimit(generator, limit, iteratee, callback) { + let done = false; + let canceled = false; + let awaiting = false; + let running = 0; + let idx = 0; + + function replenish() { + //console.log('replenish') + if (running >= limit || awaiting || done) return + //console.log('replenish awaiting') + awaiting = true; + generator.next().then(({value, done: iterDone}) => { + //console.log('got value', value) + if (canceled || done) return + awaiting = false; + if (iterDone) { + done = true; + if (running <= 0) { + //console.log('done nextCb') + callback(null); + } + return; + } + running++; + iteratee(value, idx, iterateeCallback); + idx++; + replenish(); + }).catch(handleError); + } + + function iterateeCallback(err, result) { + //console.log('iterateeCallback') + running -= 1; + if (canceled) return + if (err) return handleError(err) + + if (err === false) { + done = true; + canceled = true; + return + } + + if (result === breakLoop || (done && running <= 0)) { + done = true; + //console.log('done iterCb') + return callback(null); + } + replenish(); + } + + function handleError(err) { + if (canceled) return + awaiting = false; + done = true; + callback(err); + } + + replenish(); +} + +var eachOfLimit$2 = (limit) => { + return (obj, iteratee, callback) => { + callback = once(callback); + if (limit <= 0) { + throw new RangeError('concurrency limit cannot be less than 1') + } + if (!obj) { + return callback(null); + } + if (isAsyncGenerator(obj)) { + return asyncEachOfLimit(obj, limit, iteratee, callback) + } + if (isAsyncIterable(obj)) { + return asyncEachOfLimit(obj[Symbol.asyncIterator](), limit, iteratee, callback) + } + var nextElem = createIterator(obj); + var done = false; + var canceled = false; + var running = 0; + var looping = false; + + function iterateeCallback(err, value) { + if (canceled) return + running -= 1; + if (err) { + done = true; + callback(err); + } + else if (err === false) { + done = true; + canceled = true; + } + else if (value === breakLoop || (done && running <= 0)) { + done = true; + return callback(null); + } + else if (!looping) { + replenish(); + } + } + + function replenish () { + looping = true; + while (running < limit && !done) { + var elem = nextElem(); + if (elem === null) { + done = true; + if (running <= 0) { + callback(null); + } + return; + } + running += 1; + iteratee(elem.value, elem.key, onlyOnce(iterateeCallback)); + } + looping = false; + } + + replenish(); + }; +}; + +/** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a + * time. + * + * @name eachOfLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. The `key` is the item's key, or index in the case of an + * array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachOfLimit(coll, limit, iteratee, callback) { + return eachOfLimit$2(limit)(coll, wrapAsync(iteratee), callback); +} + +var eachOfLimit$1 = awaitify(eachOfLimit, 4); + +// eachOf implementation optimized for array-likes +function eachOfArrayLike(coll, iteratee, callback) { + callback = once(callback); + var index = 0, + completed = 0, + {length} = coll, + canceled = false; + if (length === 0) { + callback(null); + } + + function iteratorCallback(err, value) { + if (err === false) { + canceled = true; + } + if (canceled === true) return + if (err) { + callback(err); + } else if ((++completed === length) || value === breakLoop) { + callback(null); + } + } + + for (; index < length; index++) { + iteratee(coll[index], index, onlyOnce(iteratorCallback)); + } +} + +// a generic version of eachOf which can handle array, object, and iterator cases. +function eachOfGeneric (coll, iteratee, callback) { + return eachOfLimit$1(coll, Infinity, iteratee, callback); +} + +/** + * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument + * to the iteratee. + * + * @name eachOf + * @static + * @memberOf module:Collections + * @method + * @alias forEachOf + * @category Collection + * @see [async.each]{@link module:Collections.each} + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each + * item in `coll`. + * The `key` is the item's key, or index in the case of an array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dev.json is a file containing a valid json object config for dev environment + * // dev.json is a file containing a valid json object config for test environment + * // prod.json is a file containing a valid json object config for prod environment + * // invalid.json is a file with a malformed json object + * + * let configs = {}; //global variable + * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'}; + * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'}; + * + * // asynchronous function that reads a json file and parses the contents as json object + * function parseFile(file, key, callback) { + * fs.readFile(file, "utf8", function(err, data) { + * if (err) return calback(err); + * try { + * configs[key] = JSON.parse(data); + * } catch (e) { + * return callback(e); + * } + * callback(); + * }); + * } + * + * // Using callbacks + * async.forEachOf(validConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * } else { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * // JSON parse error exception + * } else { + * console.log(configs); + * } + * }); + * + * // Using Promises + * async.forEachOf(validConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * }).catch( err => { + * console.error(err); + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * }).catch( err => { + * console.error(err); + * // JSON parse error exception + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.forEachOf(validConfigFileMap, parseFile); + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * catch (err) { + * console.log(err); + * } + * } + * + * //Error handing + * async () => { + * try { + * let result = await async.forEachOf(invalidConfigFileMap, parseFile); + * console.log(configs); + * } + * catch (err) { + * console.log(err); + * // JSON parse error exception + * } + * } + * + */ +function eachOf(coll, iteratee, callback) { + var eachOfImplementation = isArrayLike(coll) ? eachOfArrayLike : eachOfGeneric; + return eachOfImplementation(coll, wrapAsync(iteratee), callback); +} + +var eachOf$1 = awaitify(eachOf, 3); + +/** + * Produces a new collection of values by mapping each value in `coll` through + * the `iteratee` function. The `iteratee` is called with an item from `coll` + * and a callback for when it has finished processing. Each of these callbacks + * takes 2 arguments: an `error`, and the transformed item from `coll`. If + * `iteratee` passes an error to its callback, the main `callback` (for the + * `map` function) is immediately called with the error. + * + * Note, that since this function applies the `iteratee` to each item in + * parallel, there is no guarantee that the `iteratee` functions will complete + * in order. However, the results array will be in the same order as the + * original `coll`. + * + * If `map` is passed an Object, the results will be an Array. The results + * will roughly be in the order of the original Objects' keys (but this can + * vary across JavaScript engines). + * + * @name map + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an Array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.map(fileList, getFileSizeInBytes, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * } + * }); + * + * // Error Handling + * async.map(withMissingFileList, getFileSizeInBytes, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.map(fileList, getFileSizeInBytes) + * .then( results => { + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.map(withMissingFileList, getFileSizeInBytes) + * .then( results => { + * console.log(results); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.map(fileList, getFileSizeInBytes); + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.map(withMissingFileList, getFileSizeInBytes); + * console.log(results); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function map (coll, iteratee, callback) { + return _asyncMap(eachOf$1, coll, iteratee, callback) +} +var map$1 = awaitify(map, 3); + +/** + * Applies the provided arguments to each function in the array, calling + * `callback` after all functions have completed. If you only provide the first + * argument, `fns`, then it will return a function which lets you pass in the + * arguments as if it were a single function call. If more arguments are + * provided, `callback` is required while `args` is still optional. The results + * for each of the applied async functions are passed to the final callback + * as an array. + * + * @name applyEach + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s + * to all call with the same arguments + * @param {...*} [args] - any number of separate arguments to pass to the + * function. + * @param {Function} [callback] - the final argument should be the callback, + * called when all functions have completed processing. + * @returns {AsyncFunction} - Returns a function that takes no args other than + * an optional callback, that is the result of applying the `args` to each + * of the functions. + * @example + * + * const appliedFn = async.applyEach([enableSearch, updateSchema], 'bucket') + * + * appliedFn((err, results) => { + * // results[0] is the results for `enableSearch` + * // results[1] is the results for `updateSchema` + * }); + * + * // partial application example: + * async.each( + * buckets, + * async (bucket) => async.applyEach([enableSearch, updateSchema], bucket)(), + * callback + * ); + */ +var applyEach = applyEach$1(map$1); + +/** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time. + * + * @name eachOfSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachOfSeries(coll, iteratee, callback) { + return eachOfLimit$1(coll, 1, iteratee, callback) +} +var eachOfSeries$1 = awaitify(eachOfSeries, 3); + +/** + * The same as [`map`]{@link module:Collections.map} but runs only a single async operation at a time. + * + * @name mapSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.map]{@link module:Collections.map} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function mapSeries (coll, iteratee, callback) { + return _asyncMap(eachOfSeries$1, coll, iteratee, callback) +} +var mapSeries$1 = awaitify(mapSeries, 3); + +/** + * The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time. + * + * @name applyEachSeries + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.applyEach]{@link module:ControlFlow.applyEach} + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s to all + * call with the same arguments + * @param {...*} [args] - any number of separate arguments to pass to the + * function. + * @param {Function} [callback] - the final argument should be the callback, + * called when all functions have completed processing. + * @returns {AsyncFunction} - A function, that when called, is the result of + * appling the `args` to the list of functions. It takes no args, other than + * a callback. + */ +var applyEachSeries = applyEach$1(mapSeries$1); + +const PROMISE_SYMBOL = Symbol('promiseCallback'); + +function promiseCallback () { + let resolve, reject; + function callback (err, ...args) { + if (err) return reject(err) + resolve(args.length > 1 ? args : args[0]); + } + + callback[PROMISE_SYMBOL] = new Promise((res, rej) => { + resolve = res, + reject = rej; + }); + + return callback +} + +/** + * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on + * their requirements. Each function can optionally depend on other functions + * being completed first, and each function is run as soon as its requirements + * are satisfied. + * + * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence + * will stop. Further tasks will not execute (so any other functions depending + * on it will not run), and the main `callback` is immediately called with the + * error. + * + * {@link AsyncFunction}s also receive an object containing the results of functions which + * have completed so far as the first argument, if they have dependencies. If a + * task function has no dependencies, it will only be passed a callback. + * + * @name auto + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Object} tasks - An object. Each of its properties is either a + * function or an array of requirements, with the {@link AsyncFunction} itself the last item + * in the array. The object's key of a property serves as the name of the task + * defined by that property, i.e. can be used when specifying requirements for + * other tasks. The function receives one or two arguments: + * * a `results` object, containing the results of the previously executed + * functions, only passed if the task has any dependencies, + * * a `callback(err, result)` function, which must be called when finished, + * passing an `error` (which can be `null`) and the result of the function's + * execution. + * @param {number} [concurrency=Infinity] - An optional `integer` for + * determining the maximum number of tasks that can be run in parallel. By + * default, as many as possible. + * @param {Function} [callback] - An optional callback which is called when all + * the tasks have been completed. It receives the `err` argument if any `tasks` + * pass an error to their callback. Results are always returned; however, if an + * error occurs, no further `tasks` will be performed, and the results object + * will only contain partial results. Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + * @example + * + * //Using Callbacks + * async.auto({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }, function(err, results) { + * if (err) { + * console.log('err = ', err); + * } + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * }); + * + * //Using Promises + * async.auto({ + * get_data: function(callback) { + * console.log('in get_data'); + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * console.log('in make_folder'); + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }).then(results => { + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * }).catch(err => { + * console.log('err = ', err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.auto({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }); + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function auto(tasks, concurrency, callback) { + if (typeof concurrency !== 'number') { + // concurrency is optional, shift the args. + callback = concurrency; + concurrency = null; + } + callback = once(callback || promiseCallback()); + var numTasks = Object.keys(tasks).length; + if (!numTasks) { + return callback(null); + } + if (!concurrency) { + concurrency = numTasks; + } + + var results = {}; + var runningTasks = 0; + var canceled = false; + var hasError = false; + + var listeners = Object.create(null); + + var readyTasks = []; + + // for cycle detection: + var readyToCheck = []; // tasks that have been identified as reachable + // without the possibility of returning to an ancestor task + var uncheckedDependencies = {}; + + Object.keys(tasks).forEach(key => { + var task = tasks[key]; + if (!Array.isArray(task)) { + // no dependencies + enqueueTask(key, [task]); + readyToCheck.push(key); + return; + } + + var dependencies = task.slice(0, task.length - 1); + var remainingDependencies = dependencies.length; + if (remainingDependencies === 0) { + enqueueTask(key, task); + readyToCheck.push(key); + return; + } + uncheckedDependencies[key] = remainingDependencies; + + dependencies.forEach(dependencyName => { + if (!tasks[dependencyName]) { + throw new Error('async.auto task `' + key + + '` has a non-existent dependency `' + + dependencyName + '` in ' + + dependencies.join(', ')); + } + addListener(dependencyName, () => { + remainingDependencies--; + if (remainingDependencies === 0) { + enqueueTask(key, task); + } + }); + }); + }); + + checkForDeadlocks(); + processQueue(); + + function enqueueTask(key, task) { + readyTasks.push(() => runTask(key, task)); + } + + function processQueue() { + if (canceled) return + if (readyTasks.length === 0 && runningTasks === 0) { + return callback(null, results); + } + while(readyTasks.length && runningTasks < concurrency) { + var run = readyTasks.shift(); + run(); + } + + } + + function addListener(taskName, fn) { + var taskListeners = listeners[taskName]; + if (!taskListeners) { + taskListeners = listeners[taskName] = []; + } + + taskListeners.push(fn); + } + + function taskComplete(taskName) { + var taskListeners = listeners[taskName] || []; + taskListeners.forEach(fn => fn()); + processQueue(); + } + + + function runTask(key, task) { + if (hasError) return; + + var taskCallback = onlyOnce((err, ...result) => { + runningTasks--; + if (err === false) { + canceled = true; + return + } + if (result.length < 2) { + [result] = result; + } + if (err) { + var safeResults = {}; + Object.keys(results).forEach(rkey => { + safeResults[rkey] = results[rkey]; + }); + safeResults[key] = result; + hasError = true; + listeners = Object.create(null); + if (canceled) return + callback(err, safeResults); + } else { + results[key] = result; + taskComplete(key); + } + }); + + runningTasks++; + var taskFn = wrapAsync(task[task.length - 1]); + if (task.length > 1) { + taskFn(results, taskCallback); + } else { + taskFn(taskCallback); + } + } + + function checkForDeadlocks() { + // Kahn's algorithm + // https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm + // http://connalle.blogspot.com/2013/10/topological-sortingkahn-algorithm.html + var currentTask; + var counter = 0; + while (readyToCheck.length) { + currentTask = readyToCheck.pop(); + counter++; + getDependents(currentTask).forEach(dependent => { + if (--uncheckedDependencies[dependent] === 0) { + readyToCheck.push(dependent); + } + }); + } + + if (counter !== numTasks) { + throw new Error( + 'async.auto cannot execute tasks due to a recursive dependency' + ); + } + } + + function getDependents(taskName) { + var result = []; + Object.keys(tasks).forEach(key => { + const task = tasks[key]; + if (Array.isArray(task) && task.indexOf(taskName) >= 0) { + result.push(key); + } + }); + return result; + } + + return callback[PROMISE_SYMBOL] +} + +var FN_ARGS = /^(?:async\s)?(?:function)?\s*(?:\w+\s*)?\(([^)]+)\)(?:\s*{)/; +var ARROW_FN_ARGS = /^(?:async\s)?\s*(?:\(\s*)?((?:[^)=\s]\s*)*)(?:\)\s*)?=>/; +var FN_ARG_SPLIT = /,/; +var FN_ARG = /(=.+)?(\s*)$/; + +function stripComments(string) { + let stripped = ''; + let index = 0; + let endBlockComment = string.indexOf('*/'); + while (index < string.length) { + if (string[index] === '/' && string[index+1] === '/') { + // inline comment + let endIndex = string.indexOf('\n', index); + index = (endIndex === -1) ? string.length : endIndex; + } else if ((endBlockComment !== -1) && (string[index] === '/') && (string[index+1] === '*')) { + // block comment + let endIndex = string.indexOf('*/', index); + if (endIndex !== -1) { + index = endIndex + 2; + endBlockComment = string.indexOf('*/', index); + } else { + stripped += string[index]; + index++; + } + } else { + stripped += string[index]; + index++; + } + } + return stripped; +} + +function parseParams(func) { + const src = stripComments(func.toString()); + let match = src.match(FN_ARGS); + if (!match) { + match = src.match(ARROW_FN_ARGS); + } + if (!match) throw new Error('could not parse args in autoInject\nSource:\n' + src) + let [, args] = match; + return args + .replace(/\s/g, '') + .split(FN_ARG_SPLIT) + .map((arg) => arg.replace(FN_ARG, '').trim()); +} + +/** + * A dependency-injected version of the [async.auto]{@link module:ControlFlow.auto} function. Dependent + * tasks are specified as parameters to the function, after the usual callback + * parameter, with the parameter names matching the names of the tasks it + * depends on. This can provide even more readable task graphs which can be + * easier to maintain. + * + * If a final callback is specified, the task results are similarly injected, + * specified as named parameters after the initial error parameter. + * + * The autoInject function is purely syntactic sugar and its semantics are + * otherwise equivalent to [async.auto]{@link module:ControlFlow.auto}. + * + * @name autoInject + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.auto]{@link module:ControlFlow.auto} + * @category Control Flow + * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of + * the form 'func([dependencies...], callback). The object's key of a property + * serves as the name of the task defined by that property, i.e. can be used + * when specifying requirements for other tasks. + * * The `callback` parameter is a `callback(err, result)` which must be called + * when finished, passing an `error` (which can be `null`) and the result of + * the function's execution. The remaining parameters name other tasks on + * which the task is dependent, and the results from those tasks are the + * arguments of those parameters. + * @param {Function} [callback] - An optional callback which is called when all + * the tasks have been completed. It receives the `err` argument if any `tasks` + * pass an error to their callback, and a `results` object with any completed + * task results, similar to `auto`. + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // The example from `auto` can be rewritten as follows: + * async.autoInject({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: function(get_data, make_folder, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }, + * email_link: function(write_file, callback) { + * // once the file is written let's email a link to it... + * // write_file contains the filename returned by write_file. + * callback(null, {'file':write_file, 'email':'user@example.com'}); + * } + * }, function(err, results) { + * console.log('err = ', err); + * console.log('email_link = ', results.email_link); + * }); + * + * // If you are using a JS minifier that mangles parameter names, `autoInject` + * // will not work with plain functions, since the parameter names will be + * // collapsed to a single letter identifier. To work around this, you can + * // explicitly specify the names of the parameters your task function needs + * // in an array, similar to Angular.js dependency injection. + * + * // This still has an advantage over plain `auto`, since the results a task + * // depends on are still spread into arguments. + * async.autoInject({ + * //... + * write_file: ['get_data', 'make_folder', function(get_data, make_folder, callback) { + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(write_file, callback) { + * callback(null, {'file':write_file, 'email':'user@example.com'}); + * }] + * //... + * }, function(err, results) { + * console.log('err = ', err); + * console.log('email_link = ', results.email_link); + * }); + */ +function autoInject(tasks, callback) { + var newTasks = {}; + + Object.keys(tasks).forEach(key => { + var taskFn = tasks[key]; + var params; + var fnIsAsync = isAsync(taskFn); + var hasNoDeps = + (!fnIsAsync && taskFn.length === 1) || + (fnIsAsync && taskFn.length === 0); + + if (Array.isArray(taskFn)) { + params = [...taskFn]; + taskFn = params.pop(); + + newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn); + } else if (hasNoDeps) { + // no dependencies, use the function as-is + newTasks[key] = taskFn; + } else { + params = parseParams(taskFn); + if ((taskFn.length === 0 && !fnIsAsync) && params.length === 0) { + throw new Error("autoInject task functions require explicit parameters."); + } + + // remove callback param + if (!fnIsAsync) params.pop(); + + newTasks[key] = params.concat(newTask); + } + + function newTask(results, taskCb) { + var newArgs = params.map(name => results[name]); + newArgs.push(taskCb); + wrapAsync(taskFn)(...newArgs); + } + }); + + return auto(newTasks, callback); +} + +// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation +// used for queues. This implementation assumes that the node provided by the user can be modified +// to adjust the next and last properties. We implement only the minimal functionality +// for queue support. +class DLL { + constructor() { + this.head = this.tail = null; + this.length = 0; + } + + removeLink(node) { + if (node.prev) node.prev.next = node.next; + else this.head = node.next; + if (node.next) node.next.prev = node.prev; + else this.tail = node.prev; + + node.prev = node.next = null; + this.length -= 1; + return node; + } + + empty () { + while(this.head) this.shift(); + return this; + } + + insertAfter(node, newNode) { + newNode.prev = node; + newNode.next = node.next; + if (node.next) node.next.prev = newNode; + else this.tail = newNode; + node.next = newNode; + this.length += 1; + } + + insertBefore(node, newNode) { + newNode.prev = node.prev; + newNode.next = node; + if (node.prev) node.prev.next = newNode; + else this.head = newNode; + node.prev = newNode; + this.length += 1; + } + + unshift(node) { + if (this.head) this.insertBefore(this.head, node); + else setInitial(this, node); + } + + push(node) { + if (this.tail) this.insertAfter(this.tail, node); + else setInitial(this, node); + } + + shift() { + return this.head && this.removeLink(this.head); + } + + pop() { + return this.tail && this.removeLink(this.tail); + } + + toArray() { + return [...this] + } + + *[Symbol.iterator] () { + var cur = this.head; + while (cur) { + yield cur.data; + cur = cur.next; + } + } + + remove (testFn) { + var curr = this.head; + while(curr) { + var {next} = curr; + if (testFn(curr)) { + this.removeLink(curr); + } + curr = next; + } + return this; + } +} + +function setInitial(dll, node) { + dll.length = 1; + dll.head = dll.tail = node; +} + +function queue$1(worker, concurrency, payload) { + if (concurrency == null) { + concurrency = 1; + } + else if(concurrency === 0) { + throw new RangeError('Concurrency must not be zero'); + } + + var _worker = wrapAsync(worker); + var numRunning = 0; + var workersList = []; + const events = { + error: [], + drain: [], + saturated: [], + unsaturated: [], + empty: [] + }; + + function on (event, handler) { + events[event].push(handler); + } + + function once (event, handler) { + const handleAndRemove = (...args) => { + off(event, handleAndRemove); + handler(...args); + }; + events[event].push(handleAndRemove); + } + + function off (event, handler) { + if (!event) return Object.keys(events).forEach(ev => events[ev] = []) + if (!handler) return events[event] = [] + events[event] = events[event].filter(ev => ev !== handler); + } + + function trigger (event, ...args) { + events[event].forEach(handler => handler(...args)); + } + + var processingScheduled = false; + function _insert(data, insertAtFront, rejectOnError, callback) { + if (callback != null && typeof callback !== 'function') { + throw new Error('task callback must be a function'); + } + q.started = true; + + var res, rej; + function promiseCallback (err, ...args) { + // we don't care about the error, let the global error handler + // deal with it + if (err) return rejectOnError ? rej(err) : res() + if (args.length <= 1) return res(args[0]) + res(args); + } + + var item = q._createTaskItem( + data, + rejectOnError ? promiseCallback : + (callback || promiseCallback) + ); + + if (insertAtFront) { + q._tasks.unshift(item); + } else { + q._tasks.push(item); + } + + if (!processingScheduled) { + processingScheduled = true; + setImmediate$1(() => { + processingScheduled = false; + q.process(); + }); + } + + if (rejectOnError || !callback) { + return new Promise((resolve, reject) => { + res = resolve; + rej = reject; + }) + } + } + + function _createCB(tasks) { + return function (err, ...args) { + numRunning -= 1; + + for (var i = 0, l = tasks.length; i < l; i++) { + var task = tasks[i]; + + var index = workersList.indexOf(task); + if (index === 0) { + workersList.shift(); + } else if (index > 0) { + workersList.splice(index, 1); + } + + task.callback(err, ...args); + + if (err != null) { + trigger('error', err, task.data); + } + } + + if (numRunning <= (q.concurrency - q.buffer) ) { + trigger('unsaturated'); + } + + if (q.idle()) { + trigger('drain'); + } + q.process(); + }; + } + + function _maybeDrain(data) { + if (data.length === 0 && q.idle()) { + // call drain immediately if there are no tasks + setImmediate$1(() => trigger('drain')); + return true + } + return false + } + + const eventMethod = (name) => (handler) => { + if (!handler) { + return new Promise((resolve, reject) => { + once(name, (err, data) => { + if (err) return reject(err) + resolve(data); + }); + }) + } + off(name); + on(name, handler); + + }; + + var isProcessing = false; + var q = { + _tasks: new DLL(), + _createTaskItem (data, callback) { + return { + data, + callback + }; + }, + *[Symbol.iterator] () { + yield* q._tasks[Symbol.iterator](); + }, + concurrency, + payload, + buffer: concurrency / 4, + started: false, + paused: false, + push (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, false, false, callback)) + } + return _insert(data, false, false, callback); + }, + pushAsync (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, false, true, callback)) + } + return _insert(data, false, true, callback); + }, + kill () { + off(); + q._tasks.empty(); + }, + unshift (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, true, false, callback)) + } + return _insert(data, true, false, callback); + }, + unshiftAsync (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, true, true, callback)) + } + return _insert(data, true, true, callback); + }, + remove (testFn) { + q._tasks.remove(testFn); + }, + process () { + // Avoid trying to start too many processing operations. This can occur + // when callbacks resolve synchronously (#1267). + if (isProcessing) { + return; + } + isProcessing = true; + while(!q.paused && numRunning < q.concurrency && q._tasks.length){ + var tasks = [], data = []; + var l = q._tasks.length; + if (q.payload) l = Math.min(l, q.payload); + for (var i = 0; i < l; i++) { + var node = q._tasks.shift(); + tasks.push(node); + workersList.push(node); + data.push(node.data); + } + + numRunning += 1; + + if (q._tasks.length === 0) { + trigger('empty'); + } + + if (numRunning === q.concurrency) { + trigger('saturated'); + } + + var cb = onlyOnce(_createCB(tasks)); + _worker(data, cb); + } + isProcessing = false; + }, + length () { + return q._tasks.length; + }, + running () { + return numRunning; + }, + workersList () { + return workersList; + }, + idle() { + return q._tasks.length + numRunning === 0; + }, + pause () { + q.paused = true; + }, + resume () { + if (q.paused === false) { return; } + q.paused = false; + setImmediate$1(q.process); + } + }; + // define these as fixed properties, so people get useful errors when updating + Object.defineProperties(q, { + saturated: { + writable: false, + value: eventMethod('saturated') + }, + unsaturated: { + writable: false, + value: eventMethod('unsaturated') + }, + empty: { + writable: false, + value: eventMethod('empty') + }, + drain: { + writable: false, + value: eventMethod('drain') + }, + error: { + writable: false, + value: eventMethod('error') + }, + }); + return q; +} + +/** + * Creates a `cargo` object with the specified payload. Tasks added to the + * cargo will be processed altogether (up to the `payload` limit). If the + * `worker` is in progress, the task is queued until it becomes available. Once + * the `worker` has completed some tasks, each callback of those tasks is + * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) + * for how `cargo` and `queue` work. + * + * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers + * at a time, cargo passes an array of tasks to a single worker, repeating + * when the worker is finished. + * + * @name cargo + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @category Control Flow + * @param {AsyncFunction} worker - An asynchronous function for processing an array + * of queued tasks. Invoked with `(tasks, callback)`. + * @param {number} [payload=Infinity] - An optional `integer` for determining + * how many tasks should be processed per round; if omitted, the default is + * unlimited. + * @returns {module:ControlFlow.QueueObject} A cargo object to manage the tasks. Callbacks can + * attached as certain properties to listen for specific events during the + * lifecycle of the cargo and inner queue. + * @example + * + * // create a cargo object with payload 2 + * var cargo = async.cargo(function(tasks, callback) { + * for (var i=0; i<tasks.length; i++) { + * console.log('hello ' + tasks[i].name); + * } + * callback(); + * }, 2); + * + * // add some items + * cargo.push({name: 'foo'}, function(err) { + * console.log('finished processing foo'); + * }); + * cargo.push({name: 'bar'}, function(err) { + * console.log('finished processing bar'); + * }); + * await cargo.push({name: 'baz'}); + * console.log('finished processing baz'); + */ +function cargo$1(worker, payload) { + return queue$1(worker, 1, payload); +} + +/** + * Creates a `cargoQueue` object with the specified payload. Tasks added to the + * cargoQueue will be processed together (up to the `payload` limit) in `concurrency` parallel workers. + * If the all `workers` are in progress, the task is queued until one becomes available. Once + * a `worker` has completed some tasks, each callback of those tasks is + * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) + * for how `cargo` and `queue` work. + * + * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers + * at a time, and [`cargo`]{@link module:ControlFlow.cargo} passes an array of tasks to a single worker, + * the cargoQueue passes an array of tasks to multiple parallel workers. + * + * @name cargoQueue + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @see [async.cargo]{@link module:ControlFLow.cargo} + * @category Control Flow + * @param {AsyncFunction} worker - An asynchronous function for processing an array + * of queued tasks. Invoked with `(tasks, callback)`. + * @param {number} [concurrency=1] - An `integer` for determining how many + * `worker` functions should be run in parallel. If omitted, the concurrency + * defaults to `1`. If the concurrency is `0`, an error is thrown. + * @param {number} [payload=Infinity] - An optional `integer` for determining + * how many tasks should be processed per round; if omitted, the default is + * unlimited. + * @returns {module:ControlFlow.QueueObject} A cargoQueue object to manage the tasks. Callbacks can + * attached as certain properties to listen for specific events during the + * lifecycle of the cargoQueue and inner queue. + * @example + * + * // create a cargoQueue object with payload 2 and concurrency 2 + * var cargoQueue = async.cargoQueue(function(tasks, callback) { + * for (var i=0; i<tasks.length; i++) { + * console.log('hello ' + tasks[i].name); + * } + * callback(); + * }, 2, 2); + * + * // add some items + * cargoQueue.push({name: 'foo'}, function(err) { + * console.log('finished processing foo'); + * }); + * cargoQueue.push({name: 'bar'}, function(err) { + * console.log('finished processing bar'); + * }); + * cargoQueue.push({name: 'baz'}, function(err) { + * console.log('finished processing baz'); + * }); + * cargoQueue.push({name: 'boo'}, function(err) { + * console.log('finished processing boo'); + * }); + */ +function cargo(worker, concurrency, payload) { + return queue$1(worker, concurrency, payload); +} + +/** + * Reduces `coll` into a single value using an async `iteratee` to return each + * successive step. `memo` is the initial state of the reduction. This function + * only operates in series. + * + * For performance reasons, it may make sense to split a call to this function + * into a parallel map, and then use the normal `Array.prototype.reduce` on the + * results. This function is for situations where each step in the reduction + * needs to be async; if you can get the data before reducing it, then it's + * probably a good idea to do so. + * + * @name reduce + * @static + * @memberOf module:Collections + * @method + * @alias inject + * @alias foldl + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file3.txt', 'file4.txt']; + * + * // asynchronous function that computes the file size in bytes + * // file size is added to the memoized value, then returned + * function getFileSizeInBytes(memo, file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, memo + stat.size); + * }); + * } + * + * // Using callbacks + * async.reduce(fileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.reduce(fileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.reduce(fileList, 0, getFileSizeInBytes); + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.reduce(withMissingFileList, 0, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function reduce(coll, memo, iteratee, callback) { + callback = once(callback); + var _iteratee = wrapAsync(iteratee); + return eachOfSeries$1(coll, (x, i, iterCb) => { + _iteratee(memo, x, (err, v) => { + memo = v; + iterCb(err); + }); + }, err => callback(err, memo)); +} +var reduce$1 = awaitify(reduce, 4); + +/** + * Version of the compose function that is more natural to read. Each function + * consumes the return value of the previous function. It is the equivalent of + * [compose]{@link module:ControlFlow.compose} with the arguments reversed. + * + * Each function is executed with the `this` binding of the composed function. + * + * @name seq + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.compose]{@link module:ControlFlow.compose} + * @category Control Flow + * @param {...AsyncFunction} functions - the asynchronous functions to compose + * @returns {Function} a function that composes the `functions` in order + * @example + * + * // Requires lodash (or underscore), express3 and dresende's orm2. + * // Part of an app, that fetches cats of the logged user. + * // This example uses `seq` function to avoid overnesting and error + * // handling clutter. + * app.get('/cats', function(request, response) { + * var User = request.models.User; + * async.seq( + * User.get.bind(User), // 'User.get' has signature (id, callback(err, data)) + * function(user, fn) { + * user.getCats(fn); // 'getCats' has signature (callback(err, data)) + * } + * )(req.session.user_id, function (err, cats) { + * if (err) { + * console.error(err); + * response.json({ status: 'error', message: err.message }); + * } else { + * response.json({ status: 'ok', message: 'Cats found', data: cats }); + * } + * }); + * }); + */ +function seq(...functions) { + var _functions = functions.map(wrapAsync); + return function (...args) { + var that = this; + + var cb = args[args.length - 1]; + if (typeof cb == 'function') { + args.pop(); + } else { + cb = promiseCallback(); + } + + reduce$1(_functions, args, (newargs, fn, iterCb) => { + fn.apply(that, newargs.concat((err, ...nextargs) => { + iterCb(err, nextargs); + })); + }, + (err, results) => cb(err, ...results)); + + return cb[PROMISE_SYMBOL] + }; +} + +/** + * Creates a function which is a composition of the passed asynchronous + * functions. Each function consumes the return value of the function that + * follows. Composing functions `f()`, `g()`, and `h()` would produce the result + * of `f(g(h()))`, only this version uses callbacks to obtain the return values. + * + * If the last argument to the composed function is not a function, a promise + * is returned when you call it. + * + * Each function is executed with the `this` binding of the composed function. + * + * @name compose + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {...AsyncFunction} functions - the asynchronous functions to compose + * @returns {Function} an asynchronous function that is the composed + * asynchronous `functions` + * @example + * + * function add1(n, callback) { + * setTimeout(function () { + * callback(null, n + 1); + * }, 10); + * } + * + * function mul3(n, callback) { + * setTimeout(function () { + * callback(null, n * 3); + * }, 10); + * } + * + * var add1mul3 = async.compose(mul3, add1); + * add1mul3(4, function (err, result) { + * // result now equals 15 + * }); + */ +function compose(...args) { + return seq(...args.reverse()); +} + +/** + * The same as [`map`]{@link module:Collections.map} but runs a maximum of `limit` async operations at a time. + * + * @name mapLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.map]{@link module:Collections.map} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function mapLimit (coll, limit, iteratee, callback) { + return _asyncMap(eachOfLimit$2(limit), coll, iteratee, callback) +} +var mapLimit$1 = awaitify(mapLimit, 4); + +/** + * The same as [`concat`]{@link module:Collections.concat} but runs a maximum of `limit` async operations at a time. + * + * @name concatLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapLimit + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ +function concatLimit(coll, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(coll, limit, (val, iterCb) => { + _iteratee(val, (err, ...args) => { + if (err) return iterCb(err); + return iterCb(err, args); + }); + }, (err, mapResults) => { + var result = []; + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + result = result.concat(...mapResults[i]); + } + } + + return callback(err, result); + }); +} +var concatLimit$1 = awaitify(concatLimit, 4); + +/** + * Applies `iteratee` to each item in `coll`, concatenating the results. Returns + * the concatenated list. The `iteratee`s are called in parallel, and the + * results are concatenated as they return. The results array will be returned in + * the original order of `coll` passed to the `iteratee` function. + * + * @name concat + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @alias flatMap + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * let directoryList = ['dir1','dir2','dir3']; + * let withMissingDirectoryList = ['dir1','dir2','dir3', 'dir4']; + * + * // Using callbacks + * async.concat(directoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.concat(directoryList, fs.readdir) + * .then(results => { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir) + * .then(results => { + * console.log(results); + * }).catch(err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.concat(directoryList, fs.readdir); + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.concat(withMissingDirectoryList, fs.readdir); + * console.log(results); + * } catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } + * } + * + */ +function concat(coll, iteratee, callback) { + return concatLimit$1(coll, Infinity, iteratee, callback) +} +var concat$1 = awaitify(concat, 3); + +/** + * The same as [`concat`]{@link module:Collections.concat} but runs only a single async operation at a time. + * + * @name concatSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapSeries + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`. + * The iteratee should complete with an array an array of results. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ +function concatSeries(coll, iteratee, callback) { + return concatLimit$1(coll, 1, iteratee, callback) +} +var concatSeries$1 = awaitify(concatSeries, 3); + +/** + * Returns a function that when called, calls-back with the values provided. + * Useful as the first function in a [`waterfall`]{@link module:ControlFlow.waterfall}, or for plugging values in to + * [`auto`]{@link module:ControlFlow.auto}. + * + * @name constant + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {...*} arguments... - Any number of arguments to automatically invoke + * callback with. + * @returns {AsyncFunction} Returns a function that when invoked, automatically + * invokes the callback with the previous given arguments. + * @example + * + * async.waterfall([ + * async.constant(42), + * function (value, next) { + * // value === 42 + * }, + * //... + * ], callback); + * + * async.waterfall([ + * async.constant(filename, "utf8"), + * fs.readFile, + * function (fileData, next) { + * //... + * } + * //... + * ], callback); + * + * async.auto({ + * hostname: async.constant("https://server.net/"), + * port: findFreePort, + * launchServer: ["hostname", "port", function (options, cb) { + * startServer(options, cb); + * }], + * //... + * }, callback); + */ +function constant$1(...args) { + return function (...ignoredArgs/*, callback*/) { + var callback = ignoredArgs.pop(); + return callback(null, ...args); + }; +} + +function _createTester(check, getResult) { + return (eachfn, arr, _iteratee, cb) => { + var testPassed = false; + var testResult; + const iteratee = wrapAsync(_iteratee); + eachfn(arr, (value, _, callback) => { + iteratee(value, (err, result) => { + if (err || err === false) return callback(err); + + if (check(result) && !testResult) { + testPassed = true; + testResult = getResult(true, value); + return callback(null, breakLoop); + } + callback(); + }); + }, err => { + if (err) return cb(err); + cb(null, testPassed ? testResult : getResult(false)); + }); + }; +} + +/** + * Returns the first value in `coll` that passes an async truth test. The + * `iteratee` is applied in parallel, meaning the first iteratee to return + * `true` will fire the detect `callback` with that result. That means the + * result might not be the first item in the original `coll` (in terms of order) + * that passes the test. + + * If order within the original `coll` is important, then look at + * [`detectSeries`]{@link module:Collections.detectSeries}. + * + * @name detect + * @static + * @memberOf module:Collections + * @method + * @alias find + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * } + *); + * + * // Using Promises + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists) + * .then(result => { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists); + * console.log(result); + * // dir1/file1.txt + * // result now equals the file in the list that exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function detect(coll, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOf$1, coll, iteratee, callback) +} +var detect$1 = awaitify(detect, 3); + +/** + * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a + * time. + * + * @name detectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findLimit + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ +function detectLimit(coll, limit, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOfLimit$2(limit), coll, iteratee, callback) +} +var detectLimit$1 = awaitify(detectLimit, 4); + +/** + * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time. + * + * @name detectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findSeries + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ +function detectSeries(coll, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOfLimit$2(1), coll, iteratee, callback) +} + +var detectSeries$1 = awaitify(detectSeries, 3); + +function consoleFunc(name) { + return (fn, ...args) => wrapAsync(fn)(...args, (err, ...resultArgs) => { + /* istanbul ignore else */ + if (typeof console === 'object') { + /* istanbul ignore else */ + if (err) { + /* istanbul ignore else */ + if (console.error) { + console.error(err); + } + } else if (console[name]) { /* istanbul ignore else */ + resultArgs.forEach(x => console[name](x)); + } + } + }) +} + +/** + * Logs the result of an [`async` function]{@link AsyncFunction} to the + * `console` using `console.dir` to display the properties of the resulting object. + * Only works in Node.js or in browsers that support `console.dir` and + * `console.error` (such as FF and Chrome). + * If multiple arguments are returned from the async function, + * `console.dir` is called on each argument in order. + * + * @name dir + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. + * @param {...*} arguments... - Any number of arguments to apply to the function. + * @example + * + * // in a module + * var hello = function(name, callback) { + * setTimeout(function() { + * callback(null, {hello: name}); + * }, 1000); + * }; + * + * // in the node repl + * node> async.dir(hello, 'world'); + * {hello: 'world'} + */ +var dir = consoleFunc('dir'); + +/** + * The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in + * the order of operations, the arguments `test` and `iteratee` are switched. + * + * `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. + * + * @name doWhilst + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - A function which is called each time `test` + * passes. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee`. + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. + * `callback` will be passed an error and any arguments passed to the final + * `iteratee`'s callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ +function doWhilst(iteratee, test, callback) { + callback = onlyOnce(callback); + var _fn = wrapAsync(iteratee); + var _test = wrapAsync(test); + var results; + + function next(err, ...args) { + if (err) return callback(err); + if (err === false) return; + results = args; + _test(...args, check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return check(null, true); +} + +var doWhilst$1 = awaitify(doWhilst, 3); + +/** + * Like ['doWhilst']{@link module:ControlFlow.doWhilst}, except the `test` is inverted. Note the + * argument ordering differs from `until`. + * + * @name doUntil + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.doWhilst]{@link module:ControlFlow.doWhilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee` + * @param {Function} [callback] - A callback which is called after the test + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ +function doUntil(iteratee, test, callback) { + const _test = wrapAsync(test); + return doWhilst$1(iteratee, (...args) => { + const cb = args.pop(); + _test(...args, (err, truth) => cb (err, !truth)); + }, callback); +} + +function _withoutIndex(iteratee) { + return (value, index, callback) => iteratee(value, callback); +} + +/** + * Applies the function `iteratee` to each item in `coll`, in parallel. + * The `iteratee` is called with an item from the list, and a callback for when + * it has finished. If the `iteratee` passes an error to its `callback`, the + * main `callback` (for the `each` function) is immediately called with the + * error. + * + * Note, that since this function applies `iteratee` to each item in parallel, + * there is no guarantee that the iteratee functions will complete in order. + * + * @name each + * @static + * @memberOf module:Collections + * @method + * @alias forEach + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to + * each item in `coll`. Invoked with (item, callback). + * The array index is not passed to the iteratee. + * If you need the index, use `eachOf`. + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = [ 'dir1/file2.txt', 'dir2/file3.txt', 'dir/file5.txt']; + * const withMissingFileList = ['dir1/file1.txt', 'dir4/file2.txt']; + * + * // asynchronous function that deletes a file + * const deleteFile = function(file, callback) { + * fs.unlink(file, callback); + * }; + * + * // Using callbacks + * async.each(fileList, deleteFile, function(err) { + * if( err ) { + * console.log(err); + * } else { + * console.log('All files have been deleted successfully'); + * } + * }); + * + * // Error Handling + * async.each(withMissingFileList, deleteFile, function(err){ + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using Promises + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using async/await + * async () => { + * try { + * await async.each(files, deleteFile); + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * await async.each(withMissingFileList, deleteFile); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * } + * } + * + */ +function eachLimit$2(coll, iteratee, callback) { + return eachOf$1(coll, _withoutIndex(wrapAsync(iteratee)), callback); +} + +var each = awaitify(eachLimit$2, 3); + +/** + * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time. + * + * @name eachLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfLimit`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachLimit(coll, limit, iteratee, callback) { + return eachOfLimit$2(limit)(coll, _withoutIndex(wrapAsync(iteratee)), callback); +} +var eachLimit$1 = awaitify(eachLimit, 4); + +/** + * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time. + * + * Note, that unlike [`each`]{@link module:Collections.each}, this function applies iteratee to each item + * in series and therefore the iteratee functions will complete in order. + + * @name eachSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfSeries`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachSeries(coll, iteratee, callback) { + return eachLimit$1(coll, 1, iteratee, callback) +} +var eachSeries$1 = awaitify(eachSeries, 3); + +/** + * Wrap an async function and ensure it calls its callback on a later tick of + * the event loop. If the function already calls its callback on a next tick, + * no extra deferral is added. This is useful for preventing stack overflows + * (`RangeError: Maximum call stack size exceeded`) and generally keeping + * [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) + * contained. ES2017 `async` functions are returned as-is -- they are immune + * to Zalgo's corrupting influences, as they always resolve on a later tick. + * + * @name ensureAsync + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - an async function, one that expects a node-style + * callback as its last argument. + * @returns {AsyncFunction} Returns a wrapped function with the exact same call + * signature as the function passed in. + * @example + * + * function sometimesAsync(arg, callback) { + * if (cache[arg]) { + * return callback(null, cache[arg]); // this would be synchronous!! + * } else { + * doSomeIO(arg, callback); // this IO would be asynchronous + * } + * } + * + * // this has a risk of stack overflows if many results are cached in a row + * async.mapSeries(args, sometimesAsync, done); + * + * // this will defer sometimesAsync's callback if necessary, + * // preventing stack overflows + * async.mapSeries(args, async.ensureAsync(sometimesAsync), done); + */ +function ensureAsync(fn) { + if (isAsync(fn)) return fn; + return function (...args/*, callback*/) { + var callback = args.pop(); + var sync = true; + args.push((...innerArgs) => { + if (sync) { + setImmediate$1(() => callback(...innerArgs)); + } else { + callback(...innerArgs); + } + }); + fn.apply(this, args); + sync = false; + }; +} + +/** + * Returns `true` if every element in `coll` satisfies an async test. If any + * iteratee call returns `false`, the main `callback` is immediately called. + * + * @name every + * @static + * @memberOf module:Collections + * @method + * @alias all + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file5.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.every(fileList, fileExists, function(err, result) { + * console.log(result); + * // true + * // result is true since every file exists + * }); + * + * async.every(withMissingFileList, fileExists, function(err, result) { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }); + * + * // Using Promises + * async.every(fileList, fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.every(withMissingFileList, fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.every(fileList, fileExists); + * console.log(result); + * // true + * // result is true since every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.every(withMissingFileList, fileExists); + * console.log(result); + * // false + * // result is false since NOT every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function every(coll, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOf$1, coll, iteratee, callback) +} +var every$1 = awaitify(every, 3); + +/** + * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time. + * + * @name everyLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function everyLimit(coll, limit, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOfLimit$2(limit), coll, iteratee, callback) +} +var everyLimit$1 = awaitify(everyLimit, 4); + +/** + * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time. + * + * @name everySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in series. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function everySeries(coll, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOfSeries$1, coll, iteratee, callback) +} +var everySeries$1 = awaitify(everySeries, 3); + +function filterArray(eachfn, arr, iteratee, callback) { + var truthValues = new Array(arr.length); + eachfn(arr, (x, index, iterCb) => { + iteratee(x, (err, v) => { + truthValues[index] = !!v; + iterCb(err); + }); + }, err => { + if (err) return callback(err); + var results = []; + for (var i = 0; i < arr.length; i++) { + if (truthValues[i]) results.push(arr[i]); + } + callback(null, results); + }); +} + +function filterGeneric(eachfn, coll, iteratee, callback) { + var results = []; + eachfn(coll, (x, index, iterCb) => { + iteratee(x, (err, v) => { + if (err) return iterCb(err); + if (v) { + results.push({index, value: x}); + } + iterCb(err); + }); + }, err => { + if (err) return callback(err); + callback(null, results + .sort((a, b) => a.index - b.index) + .map(v => v.value)); + }); +} + +function _filter(eachfn, coll, iteratee, callback) { + var filter = isArrayLike(coll) ? filterArray : filterGeneric; + return filter(eachfn, coll, wrapAsync(iteratee), callback); +} + +/** + * Returns a new array of all the values in `coll` which pass an async truth + * test. This operation is performed in parallel, but the results array will be + * in the same order as the original. + * + * @name filter + * @static + * @memberOf module:Collections + * @method + * @alias select + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const files = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.filter(files, fileExists, function(err, results) { + * if(err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * }); + * + * // Using Promises + * async.filter(files, fileExists) + * .then(results => { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.filter(files, fileExists); + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function filter (coll, iteratee, callback) { + return _filter(eachOf$1, coll, iteratee, callback) +} +var filter$1 = awaitify(filter, 3); + +/** + * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a + * time. + * + * @name filterLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + */ +function filterLimit (coll, limit, iteratee, callback) { + return _filter(eachOfLimit$2(limit), coll, iteratee, callback) +} +var filterLimit$1 = awaitify(filterLimit, 4); + +/** + * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time. + * + * @name filterSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results) + * @returns {Promise} a promise, if no callback provided + */ +function filterSeries (coll, iteratee, callback) { + return _filter(eachOfSeries$1, coll, iteratee, callback) +} +var filterSeries$1 = awaitify(filterSeries, 3); + +/** + * Calls the asynchronous function `fn` with a callback parameter that allows it + * to call itself again, in series, indefinitely. + + * If an error is passed to the callback then `errback` is called with the + * error, and execution stops, otherwise it will never be called. + * + * @name forever + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} fn - an async function to call repeatedly. + * Invoked with (next). + * @param {Function} [errback] - when `fn` passes an error to it's callback, + * this function will be called, and execution stops. Invoked with (err). + * @returns {Promise} a promise that rejects if an error occurs and an errback + * is not passed + * @example + * + * async.forever( + * function(next) { + * // next is suitable for passing to things that need a callback(err [, whatever]); + * // it will result in this function being called again. + * }, + * function(err) { + * // if next is called with a value in its first parameter, it will appear + * // in here as 'err', and execution will stop. + * } + * ); + */ +function forever(fn, errback) { + var done = onlyOnce(errback); + var task = wrapAsync(ensureAsync(fn)); + + function next(err) { + if (err) return done(err); + if (err === false) return; + task(next); + } + return next(); +} +var forever$1 = awaitify(forever, 2); + +/** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time. + * + * @name groupByLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + */ +function groupByLimit(coll, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(coll, limit, (val, iterCb) => { + _iteratee(val, (err, key) => { + if (err) return iterCb(err); + return iterCb(err, {key, val}); + }); + }, (err, mapResults) => { + var result = {}; + // from MDN, handle object having an `hasOwnProperty` prop + var {hasOwnProperty} = Object.prototype; + + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + var {key} = mapResults[i]; + var {val} = mapResults[i]; + + if (hasOwnProperty.call(result, key)) { + result[key].push(val); + } else { + result[key] = [val]; + } + } + } + + return callback(err, result); + }); +} + +var groupByLimit$1 = awaitify(groupByLimit, 4); + +/** + * Returns a new object, where each value corresponds to an array of items, from + * `coll`, that returned the corresponding key. That is, the keys of the object + * correspond to the values passed to the `iteratee` callback. + * + * Note: Since this function applies the `iteratee` to each item in parallel, + * there is no guarantee that the `iteratee` functions will complete in order. + * However, the values for each key in the `result` will be in the same order as + * the original `coll`. For Objects, the values will roughly be in the order of + * the original Objects' keys (but this can vary across JavaScript engines). + * + * @name groupBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const files = ['dir1/file1.txt','dir2','dir4'] + * + * // asynchronous function that detects file type as none, file, or directory + * function detectFile(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(null, 'none'); + * } + * callback(null, stat.isDirectory() ? 'directory' : 'file'); + * }); + * } + * + * //Using callbacks + * async.groupBy(files, detectFile, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * } + * }); + * + * // Using Promises + * async.groupBy(files, detectFile) + * .then( result => { + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.groupBy(files, detectFile); + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function groupBy (coll, iteratee, callback) { + return groupByLimit$1(coll, Infinity, iteratee, callback) +} + +/** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time. + * + * @name groupBySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whose + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + */ +function groupBySeries (coll, iteratee, callback) { + return groupByLimit$1(coll, 1, iteratee, callback) +} + +/** + * Logs the result of an `async` function to the `console`. Only works in + * Node.js or in browsers that support `console.log` and `console.error` (such + * as FF and Chrome). If multiple arguments are returned from the async + * function, `console.log` is called on each argument in order. + * + * @name log + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. + * @param {...*} arguments... - Any number of arguments to apply to the function. + * @example + * + * // in a module + * var hello = function(name, callback) { + * setTimeout(function() { + * callback(null, 'hello ' + name); + * }, 1000); + * }; + * + * // in the node repl + * node> async.log(hello, 'world'); + * 'hello world' + */ +var log = consoleFunc('log'); + +/** + * The same as [`mapValues`]{@link module:Collections.mapValues} but runs a maximum of `limit` async operations at a + * time. + * + * @name mapValuesLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.mapValues]{@link module:Collections.mapValues} + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function mapValuesLimit(obj, limit, iteratee, callback) { + callback = once(callback); + var newObj = {}; + var _iteratee = wrapAsync(iteratee); + return eachOfLimit$2(limit)(obj, (val, key, next) => { + _iteratee(val, key, (err, result) => { + if (err) return next(err); + newObj[key] = result; + next(err); + }); + }, err => callback(err, newObj)); +} + +var mapValuesLimit$1 = awaitify(mapValuesLimit, 4); + +/** + * A relative of [`map`]{@link module:Collections.map}, designed for use with objects. + * + * Produces a new Object by mapping each value of `obj` through the `iteratee` + * function. The `iteratee` is called each `value` and `key` from `obj` and a + * callback for when it has finished processing. Each of these callbacks takes + * two arguments: an `error`, and the transformed item from `obj`. If `iteratee` + * passes an error to its callback, the main `callback` (for the `mapValues` + * function) is immediately called with the error. + * + * Note, the order of the keys in the result is not guaranteed. The keys will + * be roughly in the order they complete, (but this is very engine-specific) + * + * @name mapValues + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileMap = { + * f1: 'file1.txt', + * f2: 'file2.txt', + * f3: 'file3.txt' + * }; + * + * const withMissingFileMap = { + * f1: 'file1.txt', + * f2: 'file2.txt', + * f3: 'file4.txt' + * }; + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, key, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.mapValues(fileMap, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * } + * }); + * + * // Error handling + * async.mapValues(withMissingFileMap, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.mapValues(fileMap, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * }).catch (err => { + * console.log(err); + * }); + * + * // Error Handling + * async.mapValues(withMissingFileMap, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch (err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.mapValues(fileMap, getFileSizeInBytes); + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.mapValues(withMissingFileMap, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function mapValues(obj, iteratee, callback) { + return mapValuesLimit$1(obj, Infinity, iteratee, callback) +} + +/** + * The same as [`mapValues`]{@link module:Collections.mapValues} but runs only a single async operation at a time. + * + * @name mapValuesSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.mapValues]{@link module:Collections.mapValues} + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function mapValuesSeries(obj, iteratee, callback) { + return mapValuesLimit$1(obj, 1, iteratee, callback) +} + +/** + * Caches the results of an async function. When creating a hash to store + * function results against, the callback is omitted from the hash and an + * optional hash function can be used. + * + * **Note: if the async function errs, the result will not be cached and + * subsequent calls will call the wrapped function.** + * + * If no hash function is specified, the first argument is used as a hash key, + * which may work reasonably if it is a string or a data type that converts to a + * distinct string. Note that objects and arrays will not behave reasonably. + * Neither will cases where the other arguments are significant. In such cases, + * specify your own hash function. + * + * The cache of results is exposed as the `memo` property of the function + * returned by `memoize`. + * + * @name memoize + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - The async function to proxy and cache results from. + * @param {Function} hasher - An optional function for generating a custom hash + * for storing results. It has all the arguments applied to it apart from the + * callback, and must be synchronous. + * @returns {AsyncFunction} a memoized version of `fn` + * @example + * + * var slow_fn = function(name, callback) { + * // do something + * callback(null, result); + * }; + * var fn = async.memoize(slow_fn); + * + * // fn can now be used as if it were slow_fn + * fn('some name', function() { + * // callback + * }); + */ +function memoize(fn, hasher = v => v) { + var memo = Object.create(null); + var queues = Object.create(null); + var _fn = wrapAsync(fn); + var memoized = initialParams((args, callback) => { + var key = hasher(...args); + if (key in memo) { + setImmediate$1(() => callback(null, ...memo[key])); + } else if (key in queues) { + queues[key].push(callback); + } else { + queues[key] = [callback]; + _fn(...args, (err, ...resultArgs) => { + // #1465 don't memoize if an error occurred + if (!err) { + memo[key] = resultArgs; + } + var q = queues[key]; + delete queues[key]; + for (var i = 0, l = q.length; i < l; i++) { + q[i](err, ...resultArgs); + } + }); + } + }); + memoized.memo = memo; + memoized.unmemoized = fn; + return memoized; +} + +/* istanbul ignore file */ + +/** + * Calls `callback` on a later loop around the event loop. In Node.js this just + * calls `process.nextTick`. In the browser it will use `setImmediate` if + * available, otherwise `setTimeout(callback, 0)`, which means other higher + * priority events may precede the execution of `callback`. + * + * This is used internally for browser-compatibility purposes. + * + * @name nextTick + * @static + * @memberOf module:Utils + * @method + * @see [async.setImmediate]{@link module:Utils.setImmediate} + * @category Util + * @param {Function} callback - The function to call on a later loop around + * the event loop. Invoked with (args...). + * @param {...*} args... - any number of additional arguments to pass to the + * callback on the next tick. + * @example + * + * var call_order = []; + * async.nextTick(function() { + * call_order.push('two'); + * // call_order now equals ['one','two'] + * }); + * call_order.push('one'); + * + * async.setImmediate(function (a, b, c) { + * // a, b, and c equal 1, 2, and 3 + * }, 1, 2, 3); + */ +var _defer; + +if (hasNextTick) { + _defer = process.nextTick; +} else if (hasSetImmediate) { + _defer = setImmediate; +} else { + _defer = fallback; +} + +var nextTick = wrap(_defer); + +var _parallel = awaitify((eachfn, tasks, callback) => { + var results = isArrayLike(tasks) ? [] : {}; + + eachfn(tasks, (task, key, taskCb) => { + wrapAsync(task)((err, ...result) => { + if (result.length < 2) { + [result] = result; + } + results[key] = result; + taskCb(err); + }); + }, err => callback(err, results)); +}, 3); + +/** + * Run the `tasks` collection of functions in parallel, without waiting until + * the previous function has completed. If any of the functions pass an error to + * its callback, the main `callback` is immediately called with the value of the + * error. Once the `tasks` have completed, the results are passed to the final + * `callback` as an array. + * + * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about + * parallel execution of code. If your tasks do not use any timers or perform + * any I/O, they will actually be executed in series. Any synchronous setup + * sections for each task will happen one after the other. JavaScript remains + * single-threaded. + * + * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the + * execution of other tasks when a task fails. + * + * It is also possible to use an object instead of an array. Each property will + * be run as a function and the results will be passed to the final `callback` + * as an object instead of an array. This can be a more readable way of handling + * results from {@link async.parallel}. + * + * @name parallel + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed successfully. This function gets a results array + * (or object) containing all the result arguments passed to the task callbacks. + * Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + * + * @example + * + * //Using Callbacks + * async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ], function(err, results) { + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * }); + * + * // an example using an object instead of an array + * async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }, function(err, results) { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }); + * + * //Using Promises + * async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]).then(results => { + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * }).catch(err => { + * console.log(err); + * }); + * + * // an example using an object instead of an array + * async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }).then(results => { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }).catch(err => { + * console.log(err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]); + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // an example using an object instead of an array + * async () => { + * try { + * let results = await async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }); + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function parallel(tasks, callback) { + return _parallel(eachOf$1, tasks, callback); +} + +/** + * The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a + * time. + * + * @name parallelLimit + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.parallel]{@link module:ControlFlow.parallel} + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed successfully. This function gets a results array + * (or object) containing all the result arguments passed to the task callbacks. + * Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + */ +function parallelLimit(tasks, limit, callback) { + return _parallel(eachOfLimit$2(limit), tasks, callback); +} + +/** + * A queue of tasks for the worker function to complete. + * @typedef {Iterable} QueueObject + * @memberOf module:ControlFlow + * @property {Function} length - a function returning the number of items + * waiting to be processed. Invoke with `queue.length()`. + * @property {boolean} started - a boolean indicating whether or not any + * items have been pushed and processed by the queue. + * @property {Function} running - a function returning the number of items + * currently being processed. Invoke with `queue.running()`. + * @property {Function} workersList - a function returning the array of items + * currently being processed. Invoke with `queue.workersList()`. + * @property {Function} idle - a function returning false if there are items + * waiting or being processed, or true if not. Invoke with `queue.idle()`. + * @property {number} concurrency - an integer for determining how many `worker` + * functions should be run in parallel. This property can be changed after a + * `queue` is created to alter the concurrency on-the-fly. + * @property {number} payload - an integer that specifies how many items are + * passed to the worker function at a time. only applies if this is a + * [cargo]{@link module:ControlFlow.cargo} object + * @property {AsyncFunction} push - add a new task to the `queue`. Calls `callback` + * once the `worker` has finished processing the task. Instead of a single task, + * a `tasks` array can be submitted. The respective callback is used for every + * task in the list. Invoke with `queue.push(task, [callback])`, + * @property {AsyncFunction} unshift - add a new task to the front of the `queue`. + * Invoke with `queue.unshift(task, [callback])`. + * @property {AsyncFunction} pushAsync - the same as `q.push`, except this returns + * a promise that rejects if an error occurs. + * @property {AsyncFunction} unshiftAsync - the same as `q.unshift`, except this returns + * a promise that rejects if an error occurs. + * @property {Function} remove - remove items from the queue that match a test + * function. The test function will be passed an object with a `data` property, + * and a `priority` property, if this is a + * [priorityQueue]{@link module:ControlFlow.priorityQueue} object. + * Invoked with `queue.remove(testFn)`, where `testFn` is of the form + * `function ({data, priority}) {}` and returns a Boolean. + * @property {Function} saturated - a function that sets a callback that is + * called when the number of running workers hits the `concurrency` limit, and + * further tasks will be queued. If the callback is omitted, `q.saturated()` + * returns a promise for the next occurrence. + * @property {Function} unsaturated - a function that sets a callback that is + * called when the number of running workers is less than the `concurrency` & + * `buffer` limits, and further tasks will not be queued. If the callback is + * omitted, `q.unsaturated()` returns a promise for the next occurrence. + * @property {number} buffer - A minimum threshold buffer in order to say that + * the `queue` is `unsaturated`. + * @property {Function} empty - a function that sets a callback that is called + * when the last item from the `queue` is given to a `worker`. If the callback + * is omitted, `q.empty()` returns a promise for the next occurrence. + * @property {Function} drain - a function that sets a callback that is called + * when the last item from the `queue` has returned from the `worker`. If the + * callback is omitted, `q.drain()` returns a promise for the next occurrence. + * @property {Function} error - a function that sets a callback that is called + * when a task errors. Has the signature `function(error, task)`. If the + * callback is omitted, `error()` returns a promise that rejects on the next + * error. + * @property {boolean} paused - a boolean for determining whether the queue is + * in a paused state. + * @property {Function} pause - a function that pauses the processing of tasks + * until `resume()` is called. Invoke with `queue.pause()`. + * @property {Function} resume - a function that resumes the processing of + * queued tasks when the queue is paused. Invoke with `queue.resume()`. + * @property {Function} kill - a function that removes the `drain` callback and + * empties remaining tasks from the queue forcing it to go idle. No more tasks + * should be pushed to the queue after calling this function. Invoke with `queue.kill()`. + * + * @example + * const q = async.queue(worker, 2) + * q.push(item1) + * q.push(item2) + * q.push(item3) + * // queues are iterable, spread into an array to inspect + * const items = [...q] // [item1, item2, item3] + * // or use for of + * for (let item of q) { + * console.log(item) + * } + * + * q.drain(() => { + * console.log('all done') + * }) + * // or + * await q.drain() + */ + +/** + * Creates a `queue` object with the specified `concurrency`. Tasks added to the + * `queue` are processed in parallel (up to the `concurrency` limit). If all + * `worker`s are in progress, the task is queued until one becomes available. + * Once a `worker` completes a `task`, that `task`'s callback is called. + * + * @name queue + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} worker - An async function for processing a queued task. + * If you want to handle errors from an individual task, pass a callback to + * `q.push()`. Invoked with (task, callback). + * @param {number} [concurrency=1] - An `integer` for determining how many + * `worker` functions should be run in parallel. If omitted, the concurrency + * defaults to `1`. If the concurrency is `0`, an error is thrown. + * @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can be + * attached as certain properties to listen for specific events during the + * lifecycle of the queue. + * @example + * + * // create a queue object with concurrency 2 + * var q = async.queue(function(task, callback) { + * console.log('hello ' + task.name); + * callback(); + * }, 2); + * + * // assign a callback + * q.drain(function() { + * console.log('all items have been processed'); + * }); + * // or await the end + * await q.drain() + * + * // assign an error callback + * q.error(function(err, task) { + * console.error('task experienced an error'); + * }); + * + * // add some items to the queue + * q.push({name: 'foo'}, function(err) { + * console.log('finished processing foo'); + * }); + * // callback is optional + * q.push({name: 'bar'}); + * + * // add some items to the queue (batch-wise) + * q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function(err) { + * console.log('finished processing item'); + * }); + * + * // add some items to the front of the queue + * q.unshift({name: 'bar'}, function (err) { + * console.log('finished processing bar'); + * }); + */ +function queue (worker, concurrency) { + var _worker = wrapAsync(worker); + return queue$1((items, cb) => { + _worker(items[0], cb); + }, concurrency, 1); +} + +// Binary min-heap implementation used for priority queue. +// Implementation is stable, i.e. push time is considered for equal priorities +class Heap { + constructor() { + this.heap = []; + this.pushCount = Number.MIN_SAFE_INTEGER; + } + + get length() { + return this.heap.length; + } + + empty () { + this.heap = []; + return this; + } + + percUp(index) { + let p; + + while (index > 0 && smaller(this.heap[index], this.heap[p=parent(index)])) { + let t = this.heap[index]; + this.heap[index] = this.heap[p]; + this.heap[p] = t; + + index = p; + } + } + + percDown(index) { + let l; + + while ((l=leftChi(index)) < this.heap.length) { + if (l+1 < this.heap.length && smaller(this.heap[l+1], this.heap[l])) { + l = l+1; + } + + if (smaller(this.heap[index], this.heap[l])) { + break; + } + + let t = this.heap[index]; + this.heap[index] = this.heap[l]; + this.heap[l] = t; + + index = l; + } + } + + push(node) { + node.pushCount = ++this.pushCount; + this.heap.push(node); + this.percUp(this.heap.length-1); + } + + unshift(node) { + return this.heap.push(node); + } + + shift() { + let [top] = this.heap; + + this.heap[0] = this.heap[this.heap.length-1]; + this.heap.pop(); + this.percDown(0); + + return top; + } + + toArray() { + return [...this]; + } + + *[Symbol.iterator] () { + for (let i = 0; i < this.heap.length; i++) { + yield this.heap[i].data; + } + } + + remove (testFn) { + let j = 0; + for (let i = 0; i < this.heap.length; i++) { + if (!testFn(this.heap[i])) { + this.heap[j] = this.heap[i]; + j++; + } + } + + this.heap.splice(j); + + for (let i = parent(this.heap.length-1); i >= 0; i--) { + this.percDown(i); + } + + return this; + } +} + +function leftChi(i) { + return (i<<1)+1; +} + +function parent(i) { + return ((i+1)>>1)-1; +} + +function smaller(x, y) { + if (x.priority !== y.priority) { + return x.priority < y.priority; + } + else { + return x.pushCount < y.pushCount; + } +} + +/** + * The same as [async.queue]{@link module:ControlFlow.queue} only tasks are assigned a priority and + * completed in ascending priority order. + * + * @name priorityQueue + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @category Control Flow + * @param {AsyncFunction} worker - An async function for processing a queued task. + * If you want to handle errors from an individual task, pass a callback to + * `q.push()`. + * Invoked with (task, callback). + * @param {number} concurrency - An `integer` for determining how many `worker` + * functions should be run in parallel. If omitted, the concurrency defaults to + * `1`. If the concurrency is `0`, an error is thrown. + * @returns {module:ControlFlow.QueueObject} A priorityQueue object to manage the tasks. There are three + * differences between `queue` and `priorityQueue` objects: + * * `push(task, priority, [callback])` - `priority` should be a number. If an + * array of `tasks` is given, all tasks will be assigned the same priority. + * * `pushAsync(task, priority, [callback])` - the same as `priorityQueue.push`, + * except this returns a promise that rejects if an error occurs. + * * The `unshift` and `unshiftAsync` methods were removed. + */ +function priorityQueue(worker, concurrency) { + // Start with a normal queue + var q = queue(worker, concurrency); + + var { + push, + pushAsync + } = q; + + q._tasks = new Heap(); + q._createTaskItem = ({data, priority}, callback) => { + return { + data, + priority, + callback + }; + }; + + function createDataItems(tasks, priority) { + if (!Array.isArray(tasks)) { + return {data: tasks, priority}; + } + return tasks.map(data => { return {data, priority}; }); + } + + // Override push to accept second parameter representing priority + q.push = function(data, priority = 0, callback) { + return push(createDataItems(data, priority), callback); + }; + + q.pushAsync = function(data, priority = 0, callback) { + return pushAsync(createDataItems(data, priority), callback); + }; + + // Remove unshift functions + delete q.unshift; + delete q.unshiftAsync; + + return q; +} + +/** + * Runs the `tasks` array of functions in parallel, without waiting until the + * previous function has completed. Once any of the `tasks` complete or pass an + * error to its callback, the main `callback` is immediately called. It's + * equivalent to `Promise.race()`. + * + * @name race + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction} + * to run. Each function can complete with an optional `result` value. + * @param {Function} callback - A callback to run once any of the functions have + * completed. This function gets an error or result from the first function that + * completed. Invoked with (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * async.race([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ], + * // main callback + * function(err, result) { + * // the result will be equal to 'two' as it finishes earlier + * }); + */ +function race(tasks, callback) { + callback = once(callback); + if (!Array.isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions')); + if (!tasks.length) return callback(); + for (var i = 0, l = tasks.length; i < l; i++) { + wrapAsync(tasks[i])(callback); + } +} + +var race$1 = awaitify(race, 2); + +/** + * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order. + * + * @name reduceRight + * @static + * @memberOf module:Collections + * @method + * @see [async.reduce]{@link module:Collections.reduce} + * @alias foldr + * @category Collection + * @param {Array} array - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function reduceRight (array, memo, iteratee, callback) { + var reversed = [...array].reverse(); + return reduce$1(reversed, memo, iteratee, callback); +} + +/** + * Wraps the async function in another function that always completes with a + * result object, even when it errors. + * + * The result object has either the property `error` or `value`. + * + * @name reflect + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - The async function you want to wrap + * @returns {Function} - A function that always passes null to it's callback as + * the error. The second argument to the callback will be an `object` with + * either an `error` or a `value` property. + * @example + * + * async.parallel([ + * async.reflect(function(callback) { + * // do some stuff ... + * callback(null, 'one'); + * }), + * async.reflect(function(callback) { + * // do some more stuff but error ... + * callback('bad stuff happened'); + * }), + * async.reflect(function(callback) { + * // do some more stuff ... + * callback(null, 'two'); + * }) + * ], + * // optional callback + * function(err, results) { + * // values + * // results[0].value = 'one' + * // results[1].error = 'bad stuff happened' + * // results[2].value = 'two' + * }); + */ +function reflect(fn) { + var _fn = wrapAsync(fn); + return initialParams(function reflectOn(args, reflectCallback) { + args.push((error, ...cbArgs) => { + let retVal = {}; + if (error) { + retVal.error = error; + } + if (cbArgs.length > 0){ + var value = cbArgs; + if (cbArgs.length <= 1) { + [value] = cbArgs; + } + retVal.value = value; + } + reflectCallback(null, retVal); + }); + + return _fn.apply(this, args); + }); +} + +/** + * A helper function that wraps an array or an object of functions with `reflect`. + * + * @name reflectAll + * @static + * @memberOf module:Utils + * @method + * @see [async.reflect]{@link module:Utils.reflect} + * @category Util + * @param {Array|Object|Iterable} tasks - The collection of + * [async functions]{@link AsyncFunction} to wrap in `async.reflect`. + * @returns {Array} Returns an array of async functions, each wrapped in + * `async.reflect` + * @example + * + * let tasks = [ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * // do some more stuff but error ... + * callback(new Error('bad stuff happened')); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]; + * + * async.parallel(async.reflectAll(tasks), + * // optional callback + * function(err, results) { + * // values + * // results[0].value = 'one' + * // results[1].error = Error('bad stuff happened') + * // results[2].value = 'two' + * }); + * + * // an example using an object instead of an array + * let tasks = { + * one: function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * two: function(callback) { + * callback('two'); + * }, + * three: function(callback) { + * setTimeout(function() { + * callback(null, 'three'); + * }, 100); + * } + * }; + * + * async.parallel(async.reflectAll(tasks), + * // optional callback + * function(err, results) { + * // values + * // results.one.value = 'one' + * // results.two.error = 'two' + * // results.three.value = 'three' + * }); + */ +function reflectAll(tasks) { + var results; + if (Array.isArray(tasks)) { + results = tasks.map(reflect); + } else { + results = {}; + Object.keys(tasks).forEach(key => { + results[key] = reflect.call(this, tasks[key]); + }); + } + return results; +} + +function reject$2(eachfn, arr, _iteratee, callback) { + const iteratee = wrapAsync(_iteratee); + return _filter(eachfn, arr, (value, cb) => { + iteratee(value, (err, v) => { + cb(err, !v); + }); + }, callback); +} + +/** + * The opposite of [`filter`]{@link module:Collections.filter}. Removes values that pass an `async` truth test. + * + * @name reject + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.reject(fileList, fileExists, function(err, results) { + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * }); + * + * // Using Promises + * async.reject(fileList, fileExists) + * .then( results => { + * console.log(results); + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.reject(fileList, fileExists); + * console.log(results); + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function reject (coll, iteratee, callback) { + return reject$2(eachOf$1, coll, iteratee, callback) +} +var reject$1 = awaitify(reject, 3); + +/** + * The same as [`reject`]{@link module:Collections.reject} but runs a maximum of `limit` async operations at a + * time. + * + * @name rejectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.reject]{@link module:Collections.reject} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function rejectLimit (coll, limit, iteratee, callback) { + return reject$2(eachOfLimit$2(limit), coll, iteratee, callback) +} +var rejectLimit$1 = awaitify(rejectLimit, 4); + +/** + * The same as [`reject`]{@link module:Collections.reject} but runs only a single async operation at a time. + * + * @name rejectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.reject]{@link module:Collections.reject} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function rejectSeries (coll, iteratee, callback) { + return reject$2(eachOfSeries$1, coll, iteratee, callback) +} +var rejectSeries$1 = awaitify(rejectSeries, 3); + +function constant(value) { + return function () { + return value; + } +} + +/** + * Attempts to get a successful response from `task` no more than `times` times + * before returning an error. If the task is successful, the `callback` will be + * passed the result of the successful task. If all attempts fail, the callback + * will be passed the error and result (if any) of the final attempt. + * + * @name retry + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @see [async.retryable]{@link module:ControlFlow.retryable} + * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an + * object with `times` and `interval` or a number. + * * `times` - The number of attempts to make before giving up. The default + * is `5`. + * * `interval` - The time to wait between retries, in milliseconds. The + * default is `0`. The interval may also be specified as a function of the + * retry count (see example). + * * `errorFilter` - An optional synchronous function that is invoked on + * erroneous result. If it returns `true` the retry attempts will continue; + * if the function returns `false` the retry flow is aborted with the current + * attempt's error and result being returned to the final callback. + * Invoked with (err). + * * If `opts` is a number, the number specifies the number of times to retry, + * with the default interval of `0`. + * @param {AsyncFunction} task - An async function to retry. + * Invoked with (callback). + * @param {Function} [callback] - An optional callback which is called when the + * task has succeeded, or after the final failed attempt. It receives the `err` + * and `result` arguments of the last attempt at completing the `task`. Invoked + * with (err, results). + * @returns {Promise} a promise if no callback provided + * + * @example + * + * // The `retry` function can be used as a stand-alone control flow by passing + * // a callback, as shown below: + * + * // try calling apiMethod 3 times + * async.retry(3, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod 3 times, waiting 200 ms between each retry + * async.retry({times: 3, interval: 200}, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod 10 times with exponential backoff + * // (i.e. intervals of 100, 200, 400, 800, 1600, ... milliseconds) + * async.retry({ + * times: 10, + * interval: function(retryCount) { + * return 50 * Math.pow(2, retryCount); + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod the default 5 times no delay between each retry + * async.retry(apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod only when error condition satisfies, all other + * // errors will abort the retry control flow and return to final callback + * async.retry({ + * errorFilter: function(err) { + * return err.message === 'Temporary error'; // only retry on a specific error + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // to retry individual methods that are not as reliable within other + * // control flow functions, use the `retryable` wrapper: + * async.auto({ + * users: api.getUsers.bind(api), + * payments: async.retryable(3, api.getPayments.bind(api)) + * }, function(err, results) { + * // do something with the results + * }); + * + */ +const DEFAULT_TIMES = 5; +const DEFAULT_INTERVAL = 0; + +function retry(opts, task, callback) { + var options = { + times: DEFAULT_TIMES, + intervalFunc: constant(DEFAULT_INTERVAL) + }; + + if (arguments.length < 3 && typeof opts === 'function') { + callback = task || promiseCallback(); + task = opts; + } else { + parseTimes(options, opts); + callback = callback || promiseCallback(); + } + + if (typeof task !== 'function') { + throw new Error("Invalid arguments for async.retry"); + } + + var _task = wrapAsync(task); + + var attempt = 1; + function retryAttempt() { + _task((err, ...args) => { + if (err === false) return + if (err && attempt++ < options.times && + (typeof options.errorFilter != 'function' || + options.errorFilter(err))) { + setTimeout(retryAttempt, options.intervalFunc(attempt - 1)); + } else { + callback(err, ...args); + } + }); + } + + retryAttempt(); + return callback[PROMISE_SYMBOL] +} + +function parseTimes(acc, t) { + if (typeof t === 'object') { + acc.times = +t.times || DEFAULT_TIMES; + + acc.intervalFunc = typeof t.interval === 'function' ? + t.interval : + constant(+t.interval || DEFAULT_INTERVAL); + + acc.errorFilter = t.errorFilter; + } else if (typeof t === 'number' || typeof t === 'string') { + acc.times = +t || DEFAULT_TIMES; + } else { + throw new Error("Invalid arguments for async.retry"); + } +} + +/** + * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method + * wraps a task and makes it retryable, rather than immediately calling it + * with retries. + * + * @name retryable + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.retry]{@link module:ControlFlow.retry} + * @category Control Flow + * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional + * options, exactly the same as from `retry`, except for a `opts.arity` that + * is the arity of the `task` function, defaulting to `task.length` + * @param {AsyncFunction} task - the asynchronous function to wrap. + * This function will be passed any arguments passed to the returned wrapper. + * Invoked with (...args, callback). + * @returns {AsyncFunction} The wrapped function, which when invoked, will + * retry on an error, based on the parameters specified in `opts`. + * This function will accept the same parameters as `task`. + * @example + * + * async.auto({ + * dep1: async.retryable(3, getFromFlakyService), + * process: ["dep1", async.retryable(3, function (results, cb) { + * maybeProcessData(results.dep1, cb); + * })] + * }, callback); + */ +function retryable (opts, task) { + if (!task) { + task = opts; + opts = null; + } + let arity = (opts && opts.arity) || task.length; + if (isAsync(task)) { + arity += 1; + } + var _task = wrapAsync(task); + return initialParams((args, callback) => { + if (args.length < arity - 1 || callback == null) { + args.push(callback); + callback = promiseCallback(); + } + function taskFn(cb) { + _task(...args, cb); + } + + if (opts) retry(opts, taskFn, callback); + else retry(taskFn, callback); + + return callback[PROMISE_SYMBOL] + }); +} + +/** + * Run the functions in the `tasks` collection in series, each one running once + * the previous function has completed. If any functions in the series pass an + * error to its callback, no more functions are run, and `callback` is + * immediately called with the value of the error. Otherwise, `callback` + * receives an array of results when `tasks` have completed. + * + * It is also possible to use an object instead of an array. Each property will + * be run as a function, and the results will be passed to the final `callback` + * as an object instead of an array. This can be a more readable way of handling + * results from {@link async.series}. + * + * **Note** that while many implementations preserve the order of object + * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) + * explicitly states that + * + * > The mechanics and order of enumerating the properties is not specified. + * + * So if you rely on the order in which your series of functions are executed, + * and want this to work on all platforms, consider using an array. + * + * @name series + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing + * [async functions]{@link AsyncFunction} to run in series. + * Each function can complete with any number of optional `result` values. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed. This function gets a results array (or object) + * containing all the result arguments passed to the `task` callbacks. Invoked + * with (err, result). + * @return {Promise} a promise, if no callback is passed + * @example + * + * //Using Callbacks + * async.series([ + * function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 'two'); + * }, 100); + * } + * ], function(err, results) { + * console.log(results); + * // results is equal to ['one','two'] + * }); + * + * // an example using objects instead of arrays + * async.series({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }, function(err, results) { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }); + * + * //Using Promises + * async.series([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]).then(results => { + * console.log(results); + * // results is equal to ['one','two'] + * }).catch(err => { + * console.log(err); + * }); + * + * // an example using an object instead of an array + * async.series({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }).then(results => { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }).catch(err => { + * console.log(err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.series([ + * function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 'two'); + * }, 100); + * } + * ]); + * console.log(results); + * // results is equal to ['one','two'] + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // an example using an object instead of an array + * async () => { + * try { + * let results = await async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }); + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function series(tasks, callback) { + return _parallel(eachOfSeries$1, tasks, callback); +} + +/** + * Returns `true` if at least one element in the `coll` satisfies an async test. + * If any iteratee call returns `true`, the main `callback` is immediately + * called. + * + * @name some + * @static + * @memberOf module:Collections + * @method + * @alias any + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + *); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // false + * // result is false since none of the files exists + * } + *); + * + * // Using Promises + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since some file in the list exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since none of the files exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists); + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists); + * console.log(result); + * // false + * // result is false since none of the files exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function some(coll, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOf$1, coll, iteratee, callback) +} +var some$1 = awaitify(some, 3); + +/** + * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time. + * + * @name someLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anyLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function someLimit(coll, limit, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOfLimit$2(limit), coll, iteratee, callback) +} +var someLimit$1 = awaitify(someLimit, 4); + +/** + * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time. + * + * @name someSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anySeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in series. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function someSeries(coll, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOfSeries$1, coll, iteratee, callback) +} +var someSeries$1 = awaitify(someSeries, 3); + +/** + * Sorts a list by the results of running each `coll` value through an async + * `iteratee`. + * + * @name sortBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a value to use as the sort criteria as + * its `result`. + * Invoked with (item, callback). + * @param {Function} callback - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is the items + * from the original `coll` sorted by the values returned by the `iteratee` + * calls. Invoked with (err, results). + * @returns {Promise} a promise, if no callback passed + * @example + * + * // bigfile.txt is a file that is 251100 bytes in size + * // mediumfile.txt is a file that is 11000 bytes in size + * // smallfile.txt is a file that is 121 bytes in size + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes, + * function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * } + * ); + * + * // By modifying the callback parameter the + * // sorting order can be influenced: + * + * // ascending order + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], function(file, callback) { + * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) { + * if (getFileSizeErr) return callback(getFileSizeErr); + * callback(null, fileSize); + * }); + * }, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * } + * ); + * + * // descending order + * async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], function(file, callback) { + * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) { + * if (getFileSizeErr) { + * return callback(getFileSizeErr); + * } + * callback(null, fileSize * -1); + * }); + * }, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'bigfile.txt', 'mediumfile.txt', 'smallfile.txt'] + * } + * } + * ); + * + * // Error handling + * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes, + * function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(results); + * } + * } + * ); + * + * // Using Promises + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes) + * .then( results => { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * }).catch( err => { + * console.log(err); + * }); + * + * // Error handling + * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes) + * .then( results => { + * console.log(results); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * (async () => { + * try { + * let results = await async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes); + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * catch (err) { + * console.log(err); + * } + * })(); + * + * // Error handling + * async () => { + * try { + * let results = await async.sortBy(['missingfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes); + * console.log(results); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function sortBy (coll, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return map$1(coll, (x, iterCb) => { + _iteratee(x, (err, criteria) => { + if (err) return iterCb(err); + iterCb(err, {value: x, criteria}); + }); + }, (err, results) => { + if (err) return callback(err); + callback(null, results.sort(comparator).map(v => v.value)); + }); + + function comparator(left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + } +} +var sortBy$1 = awaitify(sortBy, 3); + +/** + * Sets a time limit on an asynchronous function. If the function does not call + * its callback within the specified milliseconds, it will be called with a + * timeout error. The code property for the error object will be `'ETIMEDOUT'`. + * + * @name timeout + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} asyncFn - The async function to limit in time. + * @param {number} milliseconds - The specified time limit. + * @param {*} [info] - Any variable you want attached (`string`, `object`, etc) + * to timeout Error for more information.. + * @returns {AsyncFunction} Returns a wrapped function that can be used with any + * of the control flow functions. + * Invoke this function with the same parameters as you would `asyncFunc`. + * @example + * + * function myFunction(foo, callback) { + * doAsyncTask(foo, function(err, data) { + * // handle errors + * if (err) return callback(err); + * + * // do some stuff ... + * + * // return processed data + * return callback(null, data); + * }); + * } + * + * var wrapped = async.timeout(myFunction, 1000); + * + * // call `wrapped` as you would `myFunction` + * wrapped({ bar: 'bar' }, function(err, data) { + * // if `myFunction` takes < 1000 ms to execute, `err` + * // and `data` will have their expected values + * + * // else `err` will be an Error with the code 'ETIMEDOUT' + * }); + */ +function timeout(asyncFn, milliseconds, info) { + var fn = wrapAsync(asyncFn); + + return initialParams((args, callback) => { + var timedOut = false; + var timer; + + function timeoutCallback() { + var name = asyncFn.name || 'anonymous'; + var error = new Error('Callback function "' + name + '" timed out.'); + error.code = 'ETIMEDOUT'; + if (info) { + error.info = info; + } + timedOut = true; + callback(error); + } + + args.push((...cbArgs) => { + if (!timedOut) { + callback(...cbArgs); + clearTimeout(timer); + } + }); + + // setup timer and call original function + timer = setTimeout(timeoutCallback, milliseconds); + fn(...args); + }); +} + +function range(size) { + var result = Array(size); + while (size--) { + result[size] = size; + } + return result; +} + +/** + * The same as [times]{@link module:ControlFlow.times} but runs a maximum of `limit` async operations at a + * time. + * + * @name timesLimit + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.times]{@link module:ControlFlow.times} + * @category Control Flow + * @param {number} count - The number of times to run the function. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see [async.map]{@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + */ +function timesLimit(count, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(range(count), limit, _iteratee, callback); +} + +/** + * Calls the `iteratee` function `n` times, and accumulates results in the same + * manner you would use with [map]{@link module:Collections.map}. + * + * @name times + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.map]{@link module:Collections.map} + * @category Control Flow + * @param {number} n - The number of times to run the function. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see {@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + * @example + * + * // Pretend this is some complicated async factory + * var createUser = function(id, callback) { + * callback(null, { + * id: 'user' + id + * }); + * }; + * + * // generate 5 users + * async.times(5, function(n, next) { + * createUser(n, function(err, user) { + * next(err, user); + * }); + * }, function(err, users) { + * // we should now have 5 users + * }); + */ +function times (n, iteratee, callback) { + return timesLimit(n, Infinity, iteratee, callback) +} + +/** + * The same as [times]{@link module:ControlFlow.times} but runs only a single async operation at a time. + * + * @name timesSeries + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.times]{@link module:ControlFlow.times} + * @category Control Flow + * @param {number} n - The number of times to run the function. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see {@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + */ +function timesSeries (n, iteratee, callback) { + return timesLimit(n, 1, iteratee, callback) +} + +/** + * A relative of `reduce`. Takes an Object or Array, and iterates over each + * element in parallel, each step potentially mutating an `accumulator` value. + * The type of the accumulator defaults to the type of collection passed in. + * + * @name transform + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} [accumulator] - The initial state of the transform. If omitted, + * it will default to an empty Object or Array, depending on the type of `coll` + * @param {AsyncFunction} iteratee - A function applied to each item in the + * collection that potentially modifies the accumulator. + * Invoked with (accumulator, item, key, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the transformed accumulator. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * + * // helper function that returns human-readable size format from bytes + * function formatBytes(bytes, decimals = 2) { + * // implementation not included for brevity + * return humanReadbleFilesize; + * } + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * + * // asynchronous function that returns the file size, transformed to human-readable format + * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc. + * function transformFileSize(acc, value, key, callback) { + * fs.stat(value, function(err, stat) { + * if (err) { + * return callback(err); + * } + * acc[key] = formatBytes(stat.size); + * callback(null); + * }); + * } + * + * // Using callbacks + * async.transform(fileList, transformFileSize, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * } + * }); + * + * // Using Promises + * async.transform(fileList, transformFileSize) + * .then(result => { + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * (async () => { + * try { + * let result = await async.transform(fileList, transformFileSize); + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * } + * catch (err) { + * console.log(err); + * } + * })(); + * + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * + * // helper function that returns human-readable size format from bytes + * function formatBytes(bytes, decimals = 2) { + * // implementation not included for brevity + * return humanReadbleFilesize; + * } + * + * const fileMap = { f1: 'file1.txt', f2: 'file2.txt', f3: 'file3.txt' }; + * + * // asynchronous function that returns the file size, transformed to human-readable format + * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc. + * function transformFileSize(acc, value, key, callback) { + * fs.stat(value, function(err, stat) { + * if (err) { + * return callback(err); + * } + * acc[key] = formatBytes(stat.size); + * callback(null); + * }); + * } + * + * // Using callbacks + * async.transform(fileMap, transformFileSize, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * } + * }); + * + * // Using Promises + * async.transform(fileMap, transformFileSize) + * .then(result => { + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.transform(fileMap, transformFileSize); + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function transform (coll, accumulator, iteratee, callback) { + if (arguments.length <= 3 && typeof accumulator === 'function') { + callback = iteratee; + iteratee = accumulator; + accumulator = Array.isArray(coll) ? [] : {}; + } + callback = once(callback || promiseCallback()); + var _iteratee = wrapAsync(iteratee); + + eachOf$1(coll, (v, k, cb) => { + _iteratee(accumulator, v, k, cb); + }, err => callback(err, accumulator)); + return callback[PROMISE_SYMBOL] +} + +/** + * It runs each task in series but stops whenever any of the functions were + * successful. If one of the tasks were successful, the `callback` will be + * passed the result of the successful task. If all tasks fail, the callback + * will be passed the error and result (if any) of the final attempt. + * + * @name tryEach + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing functions to + * run, each function is passed a `callback(err, result)` it must call on + * completion with an error `err` (which can be `null`) and an optional `result` + * value. + * @param {Function} [callback] - An optional callback which is called when one + * of the tasks has succeeded, or all have failed. It receives the `err` and + * `result` arguments of the last attempt at completing the `task`. Invoked with + * (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * async.tryEach([ + * function getDataFromFirstWebsite(callback) { + * // Try getting the data from the first website + * callback(err, data); + * }, + * function getDataFromSecondWebsite(callback) { + * // First website failed, + * // Try getting the data from the backup website + * callback(err, data); + * } + * ], + * // optional callback + * function(err, results) { + * Now do something with the data. + * }); + * + */ +function tryEach(tasks, callback) { + var error = null; + var result; + return eachSeries$1(tasks, (task, taskCb) => { + wrapAsync(task)((err, ...args) => { + if (err === false) return taskCb(err); + + if (args.length < 2) { + [result] = args; + } else { + result = args; + } + error = err; + taskCb(err ? null : {}); + }); + }, () => callback(error, result)); +} + +var tryEach$1 = awaitify(tryEach); + +/** + * Undoes a [memoize]{@link module:Utils.memoize}d function, reverting it to the original, + * unmemoized form. Handy for testing. + * + * @name unmemoize + * @static + * @memberOf module:Utils + * @method + * @see [async.memoize]{@link module:Utils.memoize} + * @category Util + * @param {AsyncFunction} fn - the memoized function + * @returns {AsyncFunction} a function that calls the original unmemoized function + */ +function unmemoize(fn) { + return (...args) => { + return (fn.unmemoized || fn)(...args); + }; +} + +/** + * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. + * + * @name whilst + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` passes. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + * @example + * + * var count = 0; + * async.whilst( + * function test(cb) { cb(null, count < 5); }, + * function iter(callback) { + * count++; + * setTimeout(function() { + * callback(null, count); + * }, 1000); + * }, + * function (err, n) { + * // 5 seconds have passed, n = 5 + * } + * ); + */ +function whilst(test, iteratee, callback) { + callback = onlyOnce(callback); + var _fn = wrapAsync(iteratee); + var _test = wrapAsync(test); + var results = []; + + function next(err, ...rest) { + if (err) return callback(err); + results = rest; + if (err === false) return; + _test(check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return _test(check); +} +var whilst$1 = awaitify(whilst, 3); + +/** + * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. `callback` will be passed an error and any + * arguments passed to the final `iteratee`'s callback. + * + * The inverse of [whilst]{@link module:ControlFlow.whilst}. + * + * @name until + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if a callback is not passed + * + * @example + * const results = [] + * let finished = false + * async.until(function test(cb) { + * cb(null, finished) + * }, function iter(next) { + * fetchPage(url, (err, body) => { + * if (err) return next(err) + * results = results.concat(body.objects) + * finished = !!body.next + * next(err) + * }) + * }, function done (err) { + * // all pages have been fetched + * }) + */ +function until(test, iteratee, callback) { + const _test = wrapAsync(test); + return whilst$1((cb) => _test((err, truth) => cb (err, !truth)), iteratee, callback); +} + +/** + * Runs the `tasks` array of functions in series, each passing their results to + * the next in the array. However, if any of the `tasks` pass an error to their + * own callback, the next function is not executed, and the main `callback` is + * immediately called with the error. + * + * @name waterfall + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array} tasks - An array of [async functions]{@link AsyncFunction} + * to run. + * Each function should complete with any number of `result` values. + * The `result` values will be passed as arguments, in order, to the next task. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed. This will be passed the results of the last task's + * callback. Invoked with (err, [results]). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * async.waterfall([ + * function(callback) { + * callback(null, 'one', 'two'); + * }, + * function(arg1, arg2, callback) { + * // arg1 now equals 'one' and arg2 now equals 'two' + * callback(null, 'three'); + * }, + * function(arg1, callback) { + * // arg1 now equals 'three' + * callback(null, 'done'); + * } + * ], function (err, result) { + * // result now equals 'done' + * }); + * + * // Or, with named functions: + * async.waterfall([ + * myFirstFunction, + * mySecondFunction, + * myLastFunction, + * ], function (err, result) { + * // result now equals 'done' + * }); + * function myFirstFunction(callback) { + * callback(null, 'one', 'two'); + * } + * function mySecondFunction(arg1, arg2, callback) { + * // arg1 now equals 'one' and arg2 now equals 'two' + * callback(null, 'three'); + * } + * function myLastFunction(arg1, callback) { + * // arg1 now equals 'three' + * callback(null, 'done'); + * } + */ +function waterfall (tasks, callback) { + callback = once(callback); + if (!Array.isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions')); + if (!tasks.length) return callback(); + var taskIndex = 0; + + function nextTask(args) { + var task = wrapAsync(tasks[taskIndex++]); + task(...args, onlyOnce(next)); + } + + function next(err, ...args) { + if (err === false) return + if (err || taskIndex === tasks.length) { + return callback(err, ...args); + } + nextTask(args); + } + + nextTask([]); +} + +var waterfall$1 = awaitify(waterfall); + +/** + * An "async function" in the context of Async is an asynchronous function with + * a variable number of parameters, with the final parameter being a callback. + * (`function (arg1, arg2, ..., callback) {}`) + * The final callback is of the form `callback(err, results...)`, which must be + * called once the function is completed. The callback should be called with a + * Error as its first argument to signal that an error occurred. + * Otherwise, if no error occurred, it should be called with `null` as the first + * argument, and any additional `result` arguments that may apply, to signal + * successful completion. + * The callback must be called exactly once, ideally on a later tick of the + * JavaScript event loop. + * + * This type of function is also referred to as a "Node-style async function", + * or a "continuation passing-style function" (CPS). Most of the methods of this + * library are themselves CPS/Node-style async functions, or functions that + * return CPS/Node-style async functions. + * + * Wherever we accept a Node-style async function, we also directly accept an + * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}. + * In this case, the `async` function will not be passed a final callback + * argument, and any thrown error will be used as the `err` argument of the + * implicit callback, and the return value will be used as the `result` value. + * (i.e. a `rejected` of the returned Promise becomes the `err` callback + * argument, and a `resolved` value becomes the `result`.) + * + * Note, due to JavaScript limitations, we can only detect native `async` + * functions and not transpilied implementations. + * Your environment must have `async`/`await` support for this to work. + * (e.g. Node > v7.6, or a recent version of a modern browser). + * If you are using `async` functions through a transpiler (e.g. Babel), you + * must still wrap the function with [asyncify]{@link module:Utils.asyncify}, + * because the `async function` will be compiled to an ordinary function that + * returns a promise. + * + * @typedef {Function} AsyncFunction + * @static + */ + + +var index = { + apply, + applyEach, + applyEachSeries, + asyncify, + auto, + autoInject, + cargo: cargo$1, + cargoQueue: cargo, + compose, + concat: concat$1, + concatLimit: concatLimit$1, + concatSeries: concatSeries$1, + constant: constant$1, + detect: detect$1, + detectLimit: detectLimit$1, + detectSeries: detectSeries$1, + dir, + doUntil, + doWhilst: doWhilst$1, + each, + eachLimit: eachLimit$1, + eachOf: eachOf$1, + eachOfLimit: eachOfLimit$1, + eachOfSeries: eachOfSeries$1, + eachSeries: eachSeries$1, + ensureAsync, + every: every$1, + everyLimit: everyLimit$1, + everySeries: everySeries$1, + filter: filter$1, + filterLimit: filterLimit$1, + filterSeries: filterSeries$1, + forever: forever$1, + groupBy, + groupByLimit: groupByLimit$1, + groupBySeries, + log, + map: map$1, + mapLimit: mapLimit$1, + mapSeries: mapSeries$1, + mapValues, + mapValuesLimit: mapValuesLimit$1, + mapValuesSeries, + memoize, + nextTick, + parallel, + parallelLimit, + priorityQueue, + queue, + race: race$1, + reduce: reduce$1, + reduceRight, + reflect, + reflectAll, + reject: reject$1, + rejectLimit: rejectLimit$1, + rejectSeries: rejectSeries$1, + retry, + retryable, + seq, + series, + setImmediate: setImmediate$1, + some: some$1, + someLimit: someLimit$1, + someSeries: someSeries$1, + sortBy: sortBy$1, + timeout, + times, + timesLimit, + timesSeries, + transform, + tryEach: tryEach$1, + unmemoize, + until, + waterfall: waterfall$1, + whilst: whilst$1, + + // aliases + all: every$1, + allLimit: everyLimit$1, + allSeries: everySeries$1, + any: some$1, + anyLimit: someLimit$1, + anySeries: someSeries$1, + find: detect$1, + findLimit: detectLimit$1, + findSeries: detectSeries$1, + flatMap: concat$1, + flatMapLimit: concatLimit$1, + flatMapSeries: concatSeries$1, + forEach: each, + forEachSeries: eachSeries$1, + forEachLimit: eachLimit$1, + forEachOf: eachOf$1, + forEachOfSeries: eachOfSeries$1, + forEachOfLimit: eachOfLimit$1, + inject: reduce$1, + foldl: reduce$1, + foldr: reduceRight, + select: filter$1, + selectLimit: filterLimit$1, + selectSeries: filterSeries$1, + wrapSync: asyncify, + during: whilst$1, + doDuring: doWhilst$1 +}; + +export { every$1 as all, everyLimit$1 as allLimit, everySeries$1 as allSeries, some$1 as any, someLimit$1 as anyLimit, someSeries$1 as anySeries, apply, applyEach, applyEachSeries, asyncify, auto, autoInject, cargo$1 as cargo, cargo as cargoQueue, compose, concat$1 as concat, concatLimit$1 as concatLimit, concatSeries$1 as concatSeries, constant$1 as constant, index as default, detect$1 as detect, detectLimit$1 as detectLimit, detectSeries$1 as detectSeries, dir, doWhilst$1 as doDuring, doUntil, doWhilst$1 as doWhilst, whilst$1 as during, each, eachLimit$1 as eachLimit, eachOf$1 as eachOf, eachOfLimit$1 as eachOfLimit, eachOfSeries$1 as eachOfSeries, eachSeries$1 as eachSeries, ensureAsync, every$1 as every, everyLimit$1 as everyLimit, everySeries$1 as everySeries, filter$1 as filter, filterLimit$1 as filterLimit, filterSeries$1 as filterSeries, detect$1 as find, detectLimit$1 as findLimit, detectSeries$1 as findSeries, concat$1 as flatMap, concatLimit$1 as flatMapLimit, concatSeries$1 as flatMapSeries, reduce$1 as foldl, reduceRight as foldr, each as forEach, eachLimit$1 as forEachLimit, eachOf$1 as forEachOf, eachOfLimit$1 as forEachOfLimit, eachOfSeries$1 as forEachOfSeries, eachSeries$1 as forEachSeries, forever$1 as forever, groupBy, groupByLimit$1 as groupByLimit, groupBySeries, reduce$1 as inject, log, map$1 as map, mapLimit$1 as mapLimit, mapSeries$1 as mapSeries, mapValues, mapValuesLimit$1 as mapValuesLimit, mapValuesSeries, memoize, nextTick, parallel, parallelLimit, priorityQueue, queue, race$1 as race, reduce$1 as reduce, reduceRight, reflect, reflectAll, reject$1 as reject, rejectLimit$1 as rejectLimit, rejectSeries$1 as rejectSeries, retry, retryable, filter$1 as select, filterLimit$1 as selectLimit, filterSeries$1 as selectSeries, seq, series, setImmediate$1 as setImmediate, some$1 as some, someLimit$1 as someLimit, someSeries$1 as someSeries, sortBy$1 as sortBy, timeout, times, timesLimit, timesSeries, transform, tryEach$1 as tryEach, unmemoize, until, waterfall$1 as waterfall, whilst$1 as whilst, asyncify as wrapSync }; diff --git a/node_modules/async/doDuring.js b/node_modules/async/doDuring.js new file mode 100644 index 0000000..c72766d --- /dev/null +++ b/node_modules/async/doDuring.js @@ -0,0 +1,68 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in + * the order of operations, the arguments `test` and `iteratee` are switched. + * + * `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. + * + * @name doWhilst + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - A function which is called each time `test` + * passes. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee`. + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. + * `callback` will be passed an error and any arguments passed to the final + * `iteratee`'s callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ +function doWhilst(iteratee, test, callback) { + callback = (0, _onlyOnce2.default)(callback); + var _fn = (0, _wrapAsync2.default)(iteratee); + var _test = (0, _wrapAsync2.default)(test); + var results; + + function next(err, ...args) { + if (err) return callback(err); + if (err === false) return; + results = args; + _test(...args, check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return check(null, true); +} + +exports.default = (0, _awaitify2.default)(doWhilst, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/doUntil.js b/node_modules/async/doUntil.js new file mode 100644 index 0000000..519900e --- /dev/null +++ b/node_modules/async/doUntil.js @@ -0,0 +1,46 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = doUntil; + +var _doWhilst = require('./doWhilst.js'); + +var _doWhilst2 = _interopRequireDefault(_doWhilst); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Like ['doWhilst']{@link module:ControlFlow.doWhilst}, except the `test` is inverted. Note the + * argument ordering differs from `until`. + * + * @name doUntil + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.doWhilst]{@link module:ControlFlow.doWhilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee` + * @param {Function} [callback] - A callback which is called after the test + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ +function doUntil(iteratee, test, callback) { + const _test = (0, _wrapAsync2.default)(test); + return (0, _doWhilst2.default)(iteratee, (...args) => { + const cb = args.pop(); + _test(...args, (err, truth) => cb(err, !truth)); + }, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/doWhilst.js b/node_modules/async/doWhilst.js new file mode 100644 index 0000000..c72766d --- /dev/null +++ b/node_modules/async/doWhilst.js @@ -0,0 +1,68 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in + * the order of operations, the arguments `test` and `iteratee` are switched. + * + * `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. + * + * @name doWhilst + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - A function which is called each time `test` + * passes. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee`. + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. + * `callback` will be passed an error and any arguments passed to the final + * `iteratee`'s callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ +function doWhilst(iteratee, test, callback) { + callback = (0, _onlyOnce2.default)(callback); + var _fn = (0, _wrapAsync2.default)(iteratee); + var _test = (0, _wrapAsync2.default)(test); + var results; + + function next(err, ...args) { + if (err) return callback(err); + if (err === false) return; + results = args; + _test(...args, check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return check(null, true); +} + +exports.default = (0, _awaitify2.default)(doWhilst, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/during.js b/node_modules/async/during.js new file mode 100644 index 0000000..4165543 --- /dev/null +++ b/node_modules/async/during.js @@ -0,0 +1,78 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. + * + * @name whilst + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` passes. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + * @example + * + * var count = 0; + * async.whilst( + * function test(cb) { cb(null, count < 5); }, + * function iter(callback) { + * count++; + * setTimeout(function() { + * callback(null, count); + * }, 1000); + * }, + * function (err, n) { + * // 5 seconds have passed, n = 5 + * } + * ); + */ +function whilst(test, iteratee, callback) { + callback = (0, _onlyOnce2.default)(callback); + var _fn = (0, _wrapAsync2.default)(iteratee); + var _test = (0, _wrapAsync2.default)(test); + var results = []; + + function next(err, ...rest) { + if (err) return callback(err); + results = rest; + if (err === false) return; + _test(check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return _test(check); +} +exports.default = (0, _awaitify2.default)(whilst, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/each.js b/node_modules/async/each.js new file mode 100644 index 0000000..fdfcbd8 --- /dev/null +++ b/node_modules/async/each.js @@ -0,0 +1,129 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _withoutIndex = require('./internal/withoutIndex.js'); + +var _withoutIndex2 = _interopRequireDefault(_withoutIndex); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Applies the function `iteratee` to each item in `coll`, in parallel. + * The `iteratee` is called with an item from the list, and a callback for when + * it has finished. If the `iteratee` passes an error to its `callback`, the + * main `callback` (for the `each` function) is immediately called with the + * error. + * + * Note, that since this function applies `iteratee` to each item in parallel, + * there is no guarantee that the iteratee functions will complete in order. + * + * @name each + * @static + * @memberOf module:Collections + * @method + * @alias forEach + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to + * each item in `coll`. Invoked with (item, callback). + * The array index is not passed to the iteratee. + * If you need the index, use `eachOf`. + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = [ 'dir1/file2.txt', 'dir2/file3.txt', 'dir/file5.txt']; + * const withMissingFileList = ['dir1/file1.txt', 'dir4/file2.txt']; + * + * // asynchronous function that deletes a file + * const deleteFile = function(file, callback) { + * fs.unlink(file, callback); + * }; + * + * // Using callbacks + * async.each(fileList, deleteFile, function(err) { + * if( err ) { + * console.log(err); + * } else { + * console.log('All files have been deleted successfully'); + * } + * }); + * + * // Error Handling + * async.each(withMissingFileList, deleteFile, function(err){ + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using Promises + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using async/await + * async () => { + * try { + * await async.each(files, deleteFile); + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * await async.each(withMissingFileList, deleteFile); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * } + * } + * + */ +function eachLimit(coll, iteratee, callback) { + return (0, _eachOf2.default)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback); +} + +exports.default = (0, _awaitify2.default)(eachLimit, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/eachLimit.js b/node_modules/async/eachLimit.js new file mode 100644 index 0000000..7f5928c --- /dev/null +++ b/node_modules/async/eachLimit.js @@ -0,0 +1,50 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _withoutIndex = require('./internal/withoutIndex.js'); + +var _withoutIndex2 = _interopRequireDefault(_withoutIndex); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time. + * + * @name eachLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfLimit`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachLimit(coll, limit, iteratee, callback) { + return (0, _eachOfLimit2.default)(limit)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback); +} +exports.default = (0, _awaitify2.default)(eachLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/eachOf.js b/node_modules/async/eachOf.js new file mode 100644 index 0000000..9ed20f6 --- /dev/null +++ b/node_modules/async/eachOf.js @@ -0,0 +1,185 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _isArrayLike = require('./internal/isArrayLike.js'); + +var _isArrayLike2 = _interopRequireDefault(_isArrayLike); + +var _breakLoop = require('./internal/breakLoop.js'); + +var _breakLoop2 = _interopRequireDefault(_breakLoop); + +var _eachOfLimit = require('./eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// eachOf implementation optimized for array-likes +function eachOfArrayLike(coll, iteratee, callback) { + callback = (0, _once2.default)(callback); + var index = 0, + completed = 0, + { length } = coll, + canceled = false; + if (length === 0) { + callback(null); + } + + function iteratorCallback(err, value) { + if (err === false) { + canceled = true; + } + if (canceled === true) return; + if (err) { + callback(err); + } else if (++completed === length || value === _breakLoop2.default) { + callback(null); + } + } + + for (; index < length; index++) { + iteratee(coll[index], index, (0, _onlyOnce2.default)(iteratorCallback)); + } +} + +// a generic version of eachOf which can handle array, object, and iterator cases. +function eachOfGeneric(coll, iteratee, callback) { + return (0, _eachOfLimit2.default)(coll, Infinity, iteratee, callback); +} + +/** + * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument + * to the iteratee. + * + * @name eachOf + * @static + * @memberOf module:Collections + * @method + * @alias forEachOf + * @category Collection + * @see [async.each]{@link module:Collections.each} + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each + * item in `coll`. + * The `key` is the item's key, or index in the case of an array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dev.json is a file containing a valid json object config for dev environment + * // dev.json is a file containing a valid json object config for test environment + * // prod.json is a file containing a valid json object config for prod environment + * // invalid.json is a file with a malformed json object + * + * let configs = {}; //global variable + * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'}; + * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'}; + * + * // asynchronous function that reads a json file and parses the contents as json object + * function parseFile(file, key, callback) { + * fs.readFile(file, "utf8", function(err, data) { + * if (err) return calback(err); + * try { + * configs[key] = JSON.parse(data); + * } catch (e) { + * return callback(e); + * } + * callback(); + * }); + * } + * + * // Using callbacks + * async.forEachOf(validConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * } else { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * // JSON parse error exception + * } else { + * console.log(configs); + * } + * }); + * + * // Using Promises + * async.forEachOf(validConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * }).catch( err => { + * console.error(err); + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * }).catch( err => { + * console.error(err); + * // JSON parse error exception + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.forEachOf(validConfigFileMap, parseFile); + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * catch (err) { + * console.log(err); + * } + * } + * + * //Error handing + * async () => { + * try { + * let result = await async.forEachOf(invalidConfigFileMap, parseFile); + * console.log(configs); + * } + * catch (err) { + * console.log(err); + * // JSON parse error exception + * } + * } + * + */ +function eachOf(coll, iteratee, callback) { + var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric; + return eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback); +} + +exports.default = (0, _awaitify2.default)(eachOf, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/eachOfLimit.js b/node_modules/async/eachOfLimit.js new file mode 100644 index 0000000..a596e5a --- /dev/null +++ b/node_modules/async/eachOfLimit.js @@ -0,0 +1,47 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfLimit2 = require('./internal/eachOfLimit.js'); + +var _eachOfLimit3 = _interopRequireDefault(_eachOfLimit2); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a + * time. + * + * @name eachOfLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. The `key` is the item's key, or index in the case of an + * array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachOfLimit(coll, limit, iteratee, callback) { + return (0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback); +} + +exports.default = (0, _awaitify2.default)(eachOfLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/eachOfSeries.js b/node_modules/async/eachOfSeries.js new file mode 100644 index 0000000..04243ad --- /dev/null +++ b/node_modules/async/eachOfSeries.js @@ -0,0 +1,39 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfLimit = require('./eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time. + * + * @name eachOfSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachOfSeries(coll, iteratee, callback) { + return (0, _eachOfLimit2.default)(coll, 1, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(eachOfSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/eachSeries.js b/node_modules/async/eachSeries.js new file mode 100644 index 0000000..b04896e --- /dev/null +++ b/node_modules/async/eachSeries.js @@ -0,0 +1,44 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachLimit = require('./eachLimit.js'); + +var _eachLimit2 = _interopRequireDefault(_eachLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time. + * + * Note, that unlike [`each`]{@link module:Collections.each}, this function applies iteratee to each item + * in series and therefore the iteratee functions will complete in order. + + * @name eachSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfSeries`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachSeries(coll, iteratee, callback) { + return (0, _eachLimit2.default)(coll, 1, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(eachSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/ensureAsync.js b/node_modules/async/ensureAsync.js new file mode 100644 index 0000000..749c5da --- /dev/null +++ b/node_modules/async/ensureAsync.js @@ -0,0 +1,67 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = ensureAsync; + +var _setImmediate = require('./internal/setImmediate.js'); + +var _setImmediate2 = _interopRequireDefault(_setImmediate); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Wrap an async function and ensure it calls its callback on a later tick of + * the event loop. If the function already calls its callback on a next tick, + * no extra deferral is added. This is useful for preventing stack overflows + * (`RangeError: Maximum call stack size exceeded`) and generally keeping + * [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) + * contained. ES2017 `async` functions are returned as-is -- they are immune + * to Zalgo's corrupting influences, as they always resolve on a later tick. + * + * @name ensureAsync + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - an async function, one that expects a node-style + * callback as its last argument. + * @returns {AsyncFunction} Returns a wrapped function with the exact same call + * signature as the function passed in. + * @example + * + * function sometimesAsync(arg, callback) { + * if (cache[arg]) { + * return callback(null, cache[arg]); // this would be synchronous!! + * } else { + * doSomeIO(arg, callback); // this IO would be asynchronous + * } + * } + * + * // this has a risk of stack overflows if many results are cached in a row + * async.mapSeries(args, sometimesAsync, done); + * + * // this will defer sometimesAsync's callback if necessary, + * // preventing stack overflows + * async.mapSeries(args, async.ensureAsync(sometimesAsync), done); + */ +function ensureAsync(fn) { + if ((0, _wrapAsync.isAsync)(fn)) return fn; + return function (...args /*, callback*/) { + var callback = args.pop(); + var sync = true; + args.push((...innerArgs) => { + if (sync) { + (0, _setImmediate2.default)(() => callback(...innerArgs)); + } else { + callback(...innerArgs); + } + }); + fn.apply(this, args); + sync = false; + }; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/every.js b/node_modules/async/every.js new file mode 100644 index 0000000..622b301 --- /dev/null +++ b/node_modules/async/every.js @@ -0,0 +1,119 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns `true` if every element in `coll` satisfies an async test. If any + * iteratee call returns `false`, the main `callback` is immediately called. + * + * @name every + * @static + * @memberOf module:Collections + * @method + * @alias all + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file5.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.every(fileList, fileExists, function(err, result) { + * console.log(result); + * // true + * // result is true since every file exists + * }); + * + * async.every(withMissingFileList, fileExists, function(err, result) { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }); + * + * // Using Promises + * async.every(fileList, fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.every(withMissingFileList, fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.every(fileList, fileExists); + * console.log(result); + * // true + * // result is true since every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.every(withMissingFileList, fileExists); + * console.log(result); + * // false + * // result is false since NOT every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function every(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => !bool, res => !res)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(every, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/everyLimit.js b/node_modules/async/everyLimit.js new file mode 100644 index 0000000..375e126 --- /dev/null +++ b/node_modules/async/everyLimit.js @@ -0,0 +1,46 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time. + * + * @name everyLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function everyLimit(coll, limit, iteratee, callback) { + return (0, _createTester2.default)(bool => !bool, res => !res)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(everyLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/everySeries.js b/node_modules/async/everySeries.js new file mode 100644 index 0000000..9a6bf7d --- /dev/null +++ b/node_modules/async/everySeries.js @@ -0,0 +1,45 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time. + * + * @name everySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in series. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function everySeries(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => !bool, res => !res)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(everySeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/filter.js b/node_modules/async/filter.js new file mode 100644 index 0000000..2c9a63d --- /dev/null +++ b/node_modules/async/filter.js @@ -0,0 +1,93 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _filter2 = require('./internal/filter.js'); + +var _filter3 = _interopRequireDefault(_filter2); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns a new array of all the values in `coll` which pass an async truth + * test. This operation is performed in parallel, but the results array will be + * in the same order as the original. + * + * @name filter + * @static + * @memberOf module:Collections + * @method + * @alias select + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const files = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.filter(files, fileExists, function(err, results) { + * if(err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * }); + * + * // Using Promises + * async.filter(files, fileExists) + * .then(results => { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.filter(files, fileExists); + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function filter(coll, iteratee, callback) { + return (0, _filter3.default)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(filter, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/filterLimit.js b/node_modules/async/filterLimit.js new file mode 100644 index 0000000..d3b3f50 --- /dev/null +++ b/node_modules/async/filterLimit.js @@ -0,0 +1,45 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _filter2 = require('./internal/filter.js'); + +var _filter3 = _interopRequireDefault(_filter2); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a + * time. + * + * @name filterLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + */ +function filterLimit(coll, limit, iteratee, callback) { + return (0, _filter3.default)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(filterLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/filterSeries.js b/node_modules/async/filterSeries.js new file mode 100644 index 0000000..019a2d0 --- /dev/null +++ b/node_modules/async/filterSeries.js @@ -0,0 +1,43 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _filter2 = require('./internal/filter.js'); + +var _filter3 = _interopRequireDefault(_filter2); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time. + * + * @name filterSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results) + * @returns {Promise} a promise, if no callback provided + */ +function filterSeries(coll, iteratee, callback) { + return (0, _filter3.default)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(filterSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/find.js b/node_modules/async/find.js new file mode 100644 index 0000000..d5896ef --- /dev/null +++ b/node_modules/async/find.js @@ -0,0 +1,96 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns the first value in `coll` that passes an async truth test. The + * `iteratee` is applied in parallel, meaning the first iteratee to return + * `true` will fire the detect `callback` with that result. That means the + * result might not be the first item in the original `coll` (in terms of order) + * that passes the test. + + * If order within the original `coll` is important, then look at + * [`detectSeries`]{@link module:Collections.detectSeries}. + * + * @name detect + * @static + * @memberOf module:Collections + * @method + * @alias find + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * } + *); + * + * // Using Promises + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists) + * .then(result => { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists); + * console.log(result); + * // dir1/file1.txt + * // result now equals the file in the list that exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function detect(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => bool, (res, item) => item)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(detect, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/findLimit.js b/node_modules/async/findLimit.js new file mode 100644 index 0000000..c59843b --- /dev/null +++ b/node_modules/async/findLimit.js @@ -0,0 +1,48 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a + * time. + * + * @name detectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findLimit + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ +function detectLimit(coll, limit, iteratee, callback) { + return (0, _createTester2.default)(bool => bool, (res, item) => item)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(detectLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/findSeries.js b/node_modules/async/findSeries.js new file mode 100644 index 0000000..b486899 --- /dev/null +++ b/node_modules/async/findSeries.js @@ -0,0 +1,47 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time. + * + * @name detectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findSeries + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ +function detectSeries(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => bool, (res, item) => item)((0, _eachOfLimit2.default)(1), coll, iteratee, callback); +} + +exports.default = (0, _awaitify2.default)(detectSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/flatMap.js b/node_modules/async/flatMap.js new file mode 100644 index 0000000..4540a79 --- /dev/null +++ b/node_modules/async/flatMap.js @@ -0,0 +1,115 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _concatLimit = require('./concatLimit.js'); + +var _concatLimit2 = _interopRequireDefault(_concatLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Applies `iteratee` to each item in `coll`, concatenating the results. Returns + * the concatenated list. The `iteratee`s are called in parallel, and the + * results are concatenated as they return. The results array will be returned in + * the original order of `coll` passed to the `iteratee` function. + * + * @name concat + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @alias flatMap + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * let directoryList = ['dir1','dir2','dir3']; + * let withMissingDirectoryList = ['dir1','dir2','dir3', 'dir4']; + * + * // Using callbacks + * async.concat(directoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.concat(directoryList, fs.readdir) + * .then(results => { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir) + * .then(results => { + * console.log(results); + * }).catch(err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.concat(directoryList, fs.readdir); + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.concat(withMissingDirectoryList, fs.readdir); + * console.log(results); + * } catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } + * } + * + */ +function concat(coll, iteratee, callback) { + return (0, _concatLimit2.default)(coll, Infinity, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(concat, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/flatMapLimit.js b/node_modules/async/flatMapLimit.js new file mode 100644 index 0000000..a27cc7d --- /dev/null +++ b/node_modules/async/flatMapLimit.js @@ -0,0 +1,60 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _mapLimit = require('./mapLimit.js'); + +var _mapLimit2 = _interopRequireDefault(_mapLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`concat`]{@link module:Collections.concat} but runs a maximum of `limit` async operations at a time. + * + * @name concatLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapLimit + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ +function concatLimit(coll, limit, iteratee, callback) { + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _mapLimit2.default)(coll, limit, (val, iterCb) => { + _iteratee(val, (err, ...args) => { + if (err) return iterCb(err); + return iterCb(err, args); + }); + }, (err, mapResults) => { + var result = []; + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + result = result.concat(...mapResults[i]); + } + } + + return callback(err, result); + }); +} +exports.default = (0, _awaitify2.default)(concatLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/flatMapSeries.js b/node_modules/async/flatMapSeries.js new file mode 100644 index 0000000..332de3f --- /dev/null +++ b/node_modules/async/flatMapSeries.js @@ -0,0 +1,41 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _concatLimit = require('./concatLimit.js'); + +var _concatLimit2 = _interopRequireDefault(_concatLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`concat`]{@link module:Collections.concat} but runs only a single async operation at a time. + * + * @name concatSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapSeries + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`. + * The iteratee should complete with an array an array of results. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ +function concatSeries(coll, iteratee, callback) { + return (0, _concatLimit2.default)(coll, 1, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(concatSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/foldl.js b/node_modules/async/foldl.js new file mode 100644 index 0000000..8a69548 --- /dev/null +++ b/node_modules/async/foldl.js @@ -0,0 +1,153 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Reduces `coll` into a single value using an async `iteratee` to return each + * successive step. `memo` is the initial state of the reduction. This function + * only operates in series. + * + * For performance reasons, it may make sense to split a call to this function + * into a parallel map, and then use the normal `Array.prototype.reduce` on the + * results. This function is for situations where each step in the reduction + * needs to be async; if you can get the data before reducing it, then it's + * probably a good idea to do so. + * + * @name reduce + * @static + * @memberOf module:Collections + * @method + * @alias inject + * @alias foldl + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file3.txt', 'file4.txt']; + * + * // asynchronous function that computes the file size in bytes + * // file size is added to the memoized value, then returned + * function getFileSizeInBytes(memo, file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, memo + stat.size); + * }); + * } + * + * // Using callbacks + * async.reduce(fileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.reduce(fileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.reduce(fileList, 0, getFileSizeInBytes); + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.reduce(withMissingFileList, 0, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function reduce(coll, memo, iteratee, callback) { + callback = (0, _once2.default)(callback); + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _eachOfSeries2.default)(coll, (x, i, iterCb) => { + _iteratee(memo, x, (err, v) => { + memo = v; + iterCb(err); + }); + }, err => callback(err, memo)); +} +exports.default = (0, _awaitify2.default)(reduce, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/foldr.js b/node_modules/async/foldr.js new file mode 100644 index 0000000..5be1b68 --- /dev/null +++ b/node_modules/async/foldr.js @@ -0,0 +1,41 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = reduceRight; + +var _reduce = require('./reduce.js'); + +var _reduce2 = _interopRequireDefault(_reduce); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order. + * + * @name reduceRight + * @static + * @memberOf module:Collections + * @method + * @see [async.reduce]{@link module:Collections.reduce} + * @alias foldr + * @category Collection + * @param {Array} array - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function reduceRight(array, memo, iteratee, callback) { + var reversed = [...array].reverse(); + return (0, _reduce2.default)(reversed, memo, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/forEach.js b/node_modules/async/forEach.js new file mode 100644 index 0000000..fdfcbd8 --- /dev/null +++ b/node_modules/async/forEach.js @@ -0,0 +1,129 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _withoutIndex = require('./internal/withoutIndex.js'); + +var _withoutIndex2 = _interopRequireDefault(_withoutIndex); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Applies the function `iteratee` to each item in `coll`, in parallel. + * The `iteratee` is called with an item from the list, and a callback for when + * it has finished. If the `iteratee` passes an error to its `callback`, the + * main `callback` (for the `each` function) is immediately called with the + * error. + * + * Note, that since this function applies `iteratee` to each item in parallel, + * there is no guarantee that the iteratee functions will complete in order. + * + * @name each + * @static + * @memberOf module:Collections + * @method + * @alias forEach + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to + * each item in `coll`. Invoked with (item, callback). + * The array index is not passed to the iteratee. + * If you need the index, use `eachOf`. + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = [ 'dir1/file2.txt', 'dir2/file3.txt', 'dir/file5.txt']; + * const withMissingFileList = ['dir1/file1.txt', 'dir4/file2.txt']; + * + * // asynchronous function that deletes a file + * const deleteFile = function(file, callback) { + * fs.unlink(file, callback); + * }; + * + * // Using callbacks + * async.each(fileList, deleteFile, function(err) { + * if( err ) { + * console.log(err); + * } else { + * console.log('All files have been deleted successfully'); + * } + * }); + * + * // Error Handling + * async.each(withMissingFileList, deleteFile, function(err){ + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using Promises + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using async/await + * async () => { + * try { + * await async.each(files, deleteFile); + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * await async.each(withMissingFileList, deleteFile); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * } + * } + * + */ +function eachLimit(coll, iteratee, callback) { + return (0, _eachOf2.default)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback); +} + +exports.default = (0, _awaitify2.default)(eachLimit, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/forEachLimit.js b/node_modules/async/forEachLimit.js new file mode 100644 index 0000000..7f5928c --- /dev/null +++ b/node_modules/async/forEachLimit.js @@ -0,0 +1,50 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _withoutIndex = require('./internal/withoutIndex.js'); + +var _withoutIndex2 = _interopRequireDefault(_withoutIndex); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time. + * + * @name eachLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfLimit`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachLimit(coll, limit, iteratee, callback) { + return (0, _eachOfLimit2.default)(limit)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback); +} +exports.default = (0, _awaitify2.default)(eachLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/forEachOf.js b/node_modules/async/forEachOf.js new file mode 100644 index 0000000..9ed20f6 --- /dev/null +++ b/node_modules/async/forEachOf.js @@ -0,0 +1,185 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _isArrayLike = require('./internal/isArrayLike.js'); + +var _isArrayLike2 = _interopRequireDefault(_isArrayLike); + +var _breakLoop = require('./internal/breakLoop.js'); + +var _breakLoop2 = _interopRequireDefault(_breakLoop); + +var _eachOfLimit = require('./eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// eachOf implementation optimized for array-likes +function eachOfArrayLike(coll, iteratee, callback) { + callback = (0, _once2.default)(callback); + var index = 0, + completed = 0, + { length } = coll, + canceled = false; + if (length === 0) { + callback(null); + } + + function iteratorCallback(err, value) { + if (err === false) { + canceled = true; + } + if (canceled === true) return; + if (err) { + callback(err); + } else if (++completed === length || value === _breakLoop2.default) { + callback(null); + } + } + + for (; index < length; index++) { + iteratee(coll[index], index, (0, _onlyOnce2.default)(iteratorCallback)); + } +} + +// a generic version of eachOf which can handle array, object, and iterator cases. +function eachOfGeneric(coll, iteratee, callback) { + return (0, _eachOfLimit2.default)(coll, Infinity, iteratee, callback); +} + +/** + * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument + * to the iteratee. + * + * @name eachOf + * @static + * @memberOf module:Collections + * @method + * @alias forEachOf + * @category Collection + * @see [async.each]{@link module:Collections.each} + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each + * item in `coll`. + * The `key` is the item's key, or index in the case of an array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dev.json is a file containing a valid json object config for dev environment + * // dev.json is a file containing a valid json object config for test environment + * // prod.json is a file containing a valid json object config for prod environment + * // invalid.json is a file with a malformed json object + * + * let configs = {}; //global variable + * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'}; + * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'}; + * + * // asynchronous function that reads a json file and parses the contents as json object + * function parseFile(file, key, callback) { + * fs.readFile(file, "utf8", function(err, data) { + * if (err) return calback(err); + * try { + * configs[key] = JSON.parse(data); + * } catch (e) { + * return callback(e); + * } + * callback(); + * }); + * } + * + * // Using callbacks + * async.forEachOf(validConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * } else { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * // JSON parse error exception + * } else { + * console.log(configs); + * } + * }); + * + * // Using Promises + * async.forEachOf(validConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * }).catch( err => { + * console.error(err); + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * }).catch( err => { + * console.error(err); + * // JSON parse error exception + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.forEachOf(validConfigFileMap, parseFile); + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * catch (err) { + * console.log(err); + * } + * } + * + * //Error handing + * async () => { + * try { + * let result = await async.forEachOf(invalidConfigFileMap, parseFile); + * console.log(configs); + * } + * catch (err) { + * console.log(err); + * // JSON parse error exception + * } + * } + * + */ +function eachOf(coll, iteratee, callback) { + var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric; + return eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback); +} + +exports.default = (0, _awaitify2.default)(eachOf, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/forEachOfLimit.js b/node_modules/async/forEachOfLimit.js new file mode 100644 index 0000000..a596e5a --- /dev/null +++ b/node_modules/async/forEachOfLimit.js @@ -0,0 +1,47 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfLimit2 = require('./internal/eachOfLimit.js'); + +var _eachOfLimit3 = _interopRequireDefault(_eachOfLimit2); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a + * time. + * + * @name eachOfLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. The `key` is the item's key, or index in the case of an + * array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachOfLimit(coll, limit, iteratee, callback) { + return (0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback); +} + +exports.default = (0, _awaitify2.default)(eachOfLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/forEachOfSeries.js b/node_modules/async/forEachOfSeries.js new file mode 100644 index 0000000..04243ad --- /dev/null +++ b/node_modules/async/forEachOfSeries.js @@ -0,0 +1,39 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfLimit = require('./eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time. + * + * @name eachOfSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachOfSeries(coll, iteratee, callback) { + return (0, _eachOfLimit2.default)(coll, 1, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(eachOfSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/forEachSeries.js b/node_modules/async/forEachSeries.js new file mode 100644 index 0000000..b04896e --- /dev/null +++ b/node_modules/async/forEachSeries.js @@ -0,0 +1,44 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachLimit = require('./eachLimit.js'); + +var _eachLimit2 = _interopRequireDefault(_eachLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time. + * + * Note, that unlike [`each`]{@link module:Collections.each}, this function applies iteratee to each item + * in series and therefore the iteratee functions will complete in order. + + * @name eachSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfSeries`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachSeries(coll, iteratee, callback) { + return (0, _eachLimit2.default)(coll, 1, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(eachSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/forever.js b/node_modules/async/forever.js new file mode 100644 index 0000000..2292518 --- /dev/null +++ b/node_modules/async/forever.js @@ -0,0 +1,68 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _ensureAsync = require('./ensureAsync.js'); + +var _ensureAsync2 = _interopRequireDefault(_ensureAsync); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Calls the asynchronous function `fn` with a callback parameter that allows it + * to call itself again, in series, indefinitely. + + * If an error is passed to the callback then `errback` is called with the + * error, and execution stops, otherwise it will never be called. + * + * @name forever + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} fn - an async function to call repeatedly. + * Invoked with (next). + * @param {Function} [errback] - when `fn` passes an error to it's callback, + * this function will be called, and execution stops. Invoked with (err). + * @returns {Promise} a promise that rejects if an error occurs and an errback + * is not passed + * @example + * + * async.forever( + * function(next) { + * // next is suitable for passing to things that need a callback(err [, whatever]); + * // it will result in this function being called again. + * }, + * function(err) { + * // if next is called with a value in its first parameter, it will appear + * // in here as 'err', and execution will stop. + * } + * ); + */ +function forever(fn, errback) { + var done = (0, _onlyOnce2.default)(errback); + var task = (0, _wrapAsync2.default)((0, _ensureAsync2.default)(fn)); + + function next(err) { + if (err) return done(err); + if (err === false) return; + task(next); + } + return next(); +} +exports.default = (0, _awaitify2.default)(forever, 2); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/groupBy.js b/node_modules/async/groupBy.js new file mode 100644 index 0000000..f295763 --- /dev/null +++ b/node_modules/async/groupBy.js @@ -0,0 +1,108 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = groupBy; + +var _groupByLimit = require('./groupByLimit.js'); + +var _groupByLimit2 = _interopRequireDefault(_groupByLimit); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns a new object, where each value corresponds to an array of items, from + * `coll`, that returned the corresponding key. That is, the keys of the object + * correspond to the values passed to the `iteratee` callback. + * + * Note: Since this function applies the `iteratee` to each item in parallel, + * there is no guarantee that the `iteratee` functions will complete in order. + * However, the values for each key in the `result` will be in the same order as + * the original `coll`. For Objects, the values will roughly be in the order of + * the original Objects' keys (but this can vary across JavaScript engines). + * + * @name groupBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const files = ['dir1/file1.txt','dir2','dir4'] + * + * // asynchronous function that detects file type as none, file, or directory + * function detectFile(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(null, 'none'); + * } + * callback(null, stat.isDirectory() ? 'directory' : 'file'); + * }); + * } + * + * //Using callbacks + * async.groupBy(files, detectFile, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * } + * }); + * + * // Using Promises + * async.groupBy(files, detectFile) + * .then( result => { + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.groupBy(files, detectFile); + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function groupBy(coll, iteratee, callback) { + return (0, _groupByLimit2.default)(coll, Infinity, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/groupByLimit.js b/node_modules/async/groupByLimit.js new file mode 100644 index 0000000..30fd290 --- /dev/null +++ b/node_modules/async/groupByLimit.js @@ -0,0 +1,71 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _mapLimit = require('./mapLimit.js'); + +var _mapLimit2 = _interopRequireDefault(_mapLimit); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time. + * + * @name groupByLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + */ +function groupByLimit(coll, limit, iteratee, callback) { + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _mapLimit2.default)(coll, limit, (val, iterCb) => { + _iteratee(val, (err, key) => { + if (err) return iterCb(err); + return iterCb(err, { key, val }); + }); + }, (err, mapResults) => { + var result = {}; + // from MDN, handle object having an `hasOwnProperty` prop + var { hasOwnProperty } = Object.prototype; + + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + var { key } = mapResults[i]; + var { val } = mapResults[i]; + + if (hasOwnProperty.call(result, key)) { + result[key].push(val); + } else { + result[key] = [val]; + } + } + } + + return callback(err, result); + }); +} + +exports.default = (0, _awaitify2.default)(groupByLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/groupBySeries.js b/node_modules/async/groupBySeries.js new file mode 100644 index 0000000..e2a5287 --- /dev/null +++ b/node_modules/async/groupBySeries.js @@ -0,0 +1,36 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = groupBySeries; + +var _groupByLimit = require('./groupByLimit.js'); + +var _groupByLimit2 = _interopRequireDefault(_groupByLimit); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time. + * + * @name groupBySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whose + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + */ +function groupBySeries(coll, iteratee, callback) { + return (0, _groupByLimit2.default)(coll, 1, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/index.js b/node_modules/async/index.js new file mode 100644 index 0000000..6154647 --- /dev/null +++ b/node_modules/async/index.js @@ -0,0 +1,588 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.doDuring = exports.during = exports.wrapSync = undefined; +exports.selectSeries = exports.selectLimit = exports.select = exports.foldr = exports.foldl = exports.inject = exports.forEachOfLimit = exports.forEachOfSeries = exports.forEachOf = exports.forEachLimit = exports.forEachSeries = exports.forEach = exports.flatMapSeries = exports.flatMapLimit = exports.flatMap = exports.findSeries = exports.findLimit = exports.find = exports.anySeries = exports.anyLimit = exports.any = exports.allSeries = exports.allLimit = exports.all = exports.whilst = exports.waterfall = exports.until = exports.unmemoize = exports.tryEach = exports.transform = exports.timesSeries = exports.timesLimit = exports.times = exports.timeout = exports.sortBy = exports.someSeries = exports.someLimit = exports.some = exports.setImmediate = exports.series = exports.seq = exports.retryable = exports.retry = exports.rejectSeries = exports.rejectLimit = exports.reject = exports.reflectAll = exports.reflect = exports.reduceRight = exports.reduce = exports.race = exports.queue = exports.priorityQueue = exports.parallelLimit = exports.parallel = exports.nextTick = exports.memoize = exports.mapValuesSeries = exports.mapValuesLimit = exports.mapValues = exports.mapSeries = exports.mapLimit = exports.map = exports.log = exports.groupBySeries = exports.groupByLimit = exports.groupBy = exports.forever = exports.filterSeries = exports.filterLimit = exports.filter = exports.everySeries = exports.everyLimit = exports.every = exports.ensureAsync = exports.eachSeries = exports.eachOfSeries = exports.eachOfLimit = exports.eachOf = exports.eachLimit = exports.each = exports.doWhilst = exports.doUntil = exports.dir = exports.detectSeries = exports.detectLimit = exports.detect = exports.constant = exports.concatSeries = exports.concatLimit = exports.concat = exports.compose = exports.cargoQueue = exports.cargo = exports.autoInject = exports.auto = exports.asyncify = exports.applyEachSeries = exports.applyEach = exports.apply = undefined; + +var _apply = require('./apply'); + +var _apply2 = _interopRequireDefault(_apply); + +var _applyEach = require('./applyEach'); + +var _applyEach2 = _interopRequireDefault(_applyEach); + +var _applyEachSeries = require('./applyEachSeries'); + +var _applyEachSeries2 = _interopRequireDefault(_applyEachSeries); + +var _asyncify = require('./asyncify'); + +var _asyncify2 = _interopRequireDefault(_asyncify); + +var _auto = require('./auto'); + +var _auto2 = _interopRequireDefault(_auto); + +var _autoInject = require('./autoInject'); + +var _autoInject2 = _interopRequireDefault(_autoInject); + +var _cargo = require('./cargo'); + +var _cargo2 = _interopRequireDefault(_cargo); + +var _cargoQueue = require('./cargoQueue'); + +var _cargoQueue2 = _interopRequireDefault(_cargoQueue); + +var _compose = require('./compose'); + +var _compose2 = _interopRequireDefault(_compose); + +var _concat = require('./concat'); + +var _concat2 = _interopRequireDefault(_concat); + +var _concatLimit = require('./concatLimit'); + +var _concatLimit2 = _interopRequireDefault(_concatLimit); + +var _concatSeries = require('./concatSeries'); + +var _concatSeries2 = _interopRequireDefault(_concatSeries); + +var _constant = require('./constant'); + +var _constant2 = _interopRequireDefault(_constant); + +var _detect = require('./detect'); + +var _detect2 = _interopRequireDefault(_detect); + +var _detectLimit = require('./detectLimit'); + +var _detectLimit2 = _interopRequireDefault(_detectLimit); + +var _detectSeries = require('./detectSeries'); + +var _detectSeries2 = _interopRequireDefault(_detectSeries); + +var _dir = require('./dir'); + +var _dir2 = _interopRequireDefault(_dir); + +var _doUntil = require('./doUntil'); + +var _doUntil2 = _interopRequireDefault(_doUntil); + +var _doWhilst = require('./doWhilst'); + +var _doWhilst2 = _interopRequireDefault(_doWhilst); + +var _each = require('./each'); + +var _each2 = _interopRequireDefault(_each); + +var _eachLimit = require('./eachLimit'); + +var _eachLimit2 = _interopRequireDefault(_eachLimit); + +var _eachOf = require('./eachOf'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _eachOfLimit = require('./eachOfLimit'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _eachOfSeries = require('./eachOfSeries'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _eachSeries = require('./eachSeries'); + +var _eachSeries2 = _interopRequireDefault(_eachSeries); + +var _ensureAsync = require('./ensureAsync'); + +var _ensureAsync2 = _interopRequireDefault(_ensureAsync); + +var _every = require('./every'); + +var _every2 = _interopRequireDefault(_every); + +var _everyLimit = require('./everyLimit'); + +var _everyLimit2 = _interopRequireDefault(_everyLimit); + +var _everySeries = require('./everySeries'); + +var _everySeries2 = _interopRequireDefault(_everySeries); + +var _filter = require('./filter'); + +var _filter2 = _interopRequireDefault(_filter); + +var _filterLimit = require('./filterLimit'); + +var _filterLimit2 = _interopRequireDefault(_filterLimit); + +var _filterSeries = require('./filterSeries'); + +var _filterSeries2 = _interopRequireDefault(_filterSeries); + +var _forever = require('./forever'); + +var _forever2 = _interopRequireDefault(_forever); + +var _groupBy = require('./groupBy'); + +var _groupBy2 = _interopRequireDefault(_groupBy); + +var _groupByLimit = require('./groupByLimit'); + +var _groupByLimit2 = _interopRequireDefault(_groupByLimit); + +var _groupBySeries = require('./groupBySeries'); + +var _groupBySeries2 = _interopRequireDefault(_groupBySeries); + +var _log = require('./log'); + +var _log2 = _interopRequireDefault(_log); + +var _map = require('./map'); + +var _map2 = _interopRequireDefault(_map); + +var _mapLimit = require('./mapLimit'); + +var _mapLimit2 = _interopRequireDefault(_mapLimit); + +var _mapSeries = require('./mapSeries'); + +var _mapSeries2 = _interopRequireDefault(_mapSeries); + +var _mapValues = require('./mapValues'); + +var _mapValues2 = _interopRequireDefault(_mapValues); + +var _mapValuesLimit = require('./mapValuesLimit'); + +var _mapValuesLimit2 = _interopRequireDefault(_mapValuesLimit); + +var _mapValuesSeries = require('./mapValuesSeries'); + +var _mapValuesSeries2 = _interopRequireDefault(_mapValuesSeries); + +var _memoize = require('./memoize'); + +var _memoize2 = _interopRequireDefault(_memoize); + +var _nextTick = require('./nextTick'); + +var _nextTick2 = _interopRequireDefault(_nextTick); + +var _parallel = require('./parallel'); + +var _parallel2 = _interopRequireDefault(_parallel); + +var _parallelLimit = require('./parallelLimit'); + +var _parallelLimit2 = _interopRequireDefault(_parallelLimit); + +var _priorityQueue = require('./priorityQueue'); + +var _priorityQueue2 = _interopRequireDefault(_priorityQueue); + +var _queue = require('./queue'); + +var _queue2 = _interopRequireDefault(_queue); + +var _race = require('./race'); + +var _race2 = _interopRequireDefault(_race); + +var _reduce = require('./reduce'); + +var _reduce2 = _interopRequireDefault(_reduce); + +var _reduceRight = require('./reduceRight'); + +var _reduceRight2 = _interopRequireDefault(_reduceRight); + +var _reflect = require('./reflect'); + +var _reflect2 = _interopRequireDefault(_reflect); + +var _reflectAll = require('./reflectAll'); + +var _reflectAll2 = _interopRequireDefault(_reflectAll); + +var _reject = require('./reject'); + +var _reject2 = _interopRequireDefault(_reject); + +var _rejectLimit = require('./rejectLimit'); + +var _rejectLimit2 = _interopRequireDefault(_rejectLimit); + +var _rejectSeries = require('./rejectSeries'); + +var _rejectSeries2 = _interopRequireDefault(_rejectSeries); + +var _retry = require('./retry'); + +var _retry2 = _interopRequireDefault(_retry); + +var _retryable = require('./retryable'); + +var _retryable2 = _interopRequireDefault(_retryable); + +var _seq = require('./seq'); + +var _seq2 = _interopRequireDefault(_seq); + +var _series = require('./series'); + +var _series2 = _interopRequireDefault(_series); + +var _setImmediate = require('./setImmediate'); + +var _setImmediate2 = _interopRequireDefault(_setImmediate); + +var _some = require('./some'); + +var _some2 = _interopRequireDefault(_some); + +var _someLimit = require('./someLimit'); + +var _someLimit2 = _interopRequireDefault(_someLimit); + +var _someSeries = require('./someSeries'); + +var _someSeries2 = _interopRequireDefault(_someSeries); + +var _sortBy = require('./sortBy'); + +var _sortBy2 = _interopRequireDefault(_sortBy); + +var _timeout = require('./timeout'); + +var _timeout2 = _interopRequireDefault(_timeout); + +var _times = require('./times'); + +var _times2 = _interopRequireDefault(_times); + +var _timesLimit = require('./timesLimit'); + +var _timesLimit2 = _interopRequireDefault(_timesLimit); + +var _timesSeries = require('./timesSeries'); + +var _timesSeries2 = _interopRequireDefault(_timesSeries); + +var _transform = require('./transform'); + +var _transform2 = _interopRequireDefault(_transform); + +var _tryEach = require('./tryEach'); + +var _tryEach2 = _interopRequireDefault(_tryEach); + +var _unmemoize = require('./unmemoize'); + +var _unmemoize2 = _interopRequireDefault(_unmemoize); + +var _until = require('./until'); + +var _until2 = _interopRequireDefault(_until); + +var _waterfall = require('./waterfall'); + +var _waterfall2 = _interopRequireDefault(_waterfall); + +var _whilst = require('./whilst'); + +var _whilst2 = _interopRequireDefault(_whilst); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * An "async function" in the context of Async is an asynchronous function with + * a variable number of parameters, with the final parameter being a callback. + * (`function (arg1, arg2, ..., callback) {}`) + * The final callback is of the form `callback(err, results...)`, which must be + * called once the function is completed. The callback should be called with a + * Error as its first argument to signal that an error occurred. + * Otherwise, if no error occurred, it should be called with `null` as the first + * argument, and any additional `result` arguments that may apply, to signal + * successful completion. + * The callback must be called exactly once, ideally on a later tick of the + * JavaScript event loop. + * + * This type of function is also referred to as a "Node-style async function", + * or a "continuation passing-style function" (CPS). Most of the methods of this + * library are themselves CPS/Node-style async functions, or functions that + * return CPS/Node-style async functions. + * + * Wherever we accept a Node-style async function, we also directly accept an + * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}. + * In this case, the `async` function will not be passed a final callback + * argument, and any thrown error will be used as the `err` argument of the + * implicit callback, and the return value will be used as the `result` value. + * (i.e. a `rejected` of the returned Promise becomes the `err` callback + * argument, and a `resolved` value becomes the `result`.) + * + * Note, due to JavaScript limitations, we can only detect native `async` + * functions and not transpilied implementations. + * Your environment must have `async`/`await` support for this to work. + * (e.g. Node > v7.6, or a recent version of a modern browser). + * If you are using `async` functions through a transpiler (e.g. Babel), you + * must still wrap the function with [asyncify]{@link module:Utils.asyncify}, + * because the `async function` will be compiled to an ordinary function that + * returns a promise. + * + * @typedef {Function} AsyncFunction + * @static + */ + +/** + * Async is a utility module which provides straight-forward, powerful functions + * for working with asynchronous JavaScript. Although originally designed for + * use with [Node.js](http://nodejs.org) and installable via + * `npm install --save async`, it can also be used directly in the browser. + * @module async + * @see AsyncFunction + */ + +/** + * A collection of `async` functions for manipulating collections, such as + * arrays and objects. + * @module Collections + */ + +/** + * A collection of `async` functions for controlling the flow through a script. + * @module ControlFlow + */ + +/** + * A collection of `async` utility functions. + * @module Utils + */ + +exports.default = { + apply: _apply2.default, + applyEach: _applyEach2.default, + applyEachSeries: _applyEachSeries2.default, + asyncify: _asyncify2.default, + auto: _auto2.default, + autoInject: _autoInject2.default, + cargo: _cargo2.default, + cargoQueue: _cargoQueue2.default, + compose: _compose2.default, + concat: _concat2.default, + concatLimit: _concatLimit2.default, + concatSeries: _concatSeries2.default, + constant: _constant2.default, + detect: _detect2.default, + detectLimit: _detectLimit2.default, + detectSeries: _detectSeries2.default, + dir: _dir2.default, + doUntil: _doUntil2.default, + doWhilst: _doWhilst2.default, + each: _each2.default, + eachLimit: _eachLimit2.default, + eachOf: _eachOf2.default, + eachOfLimit: _eachOfLimit2.default, + eachOfSeries: _eachOfSeries2.default, + eachSeries: _eachSeries2.default, + ensureAsync: _ensureAsync2.default, + every: _every2.default, + everyLimit: _everyLimit2.default, + everySeries: _everySeries2.default, + filter: _filter2.default, + filterLimit: _filterLimit2.default, + filterSeries: _filterSeries2.default, + forever: _forever2.default, + groupBy: _groupBy2.default, + groupByLimit: _groupByLimit2.default, + groupBySeries: _groupBySeries2.default, + log: _log2.default, + map: _map2.default, + mapLimit: _mapLimit2.default, + mapSeries: _mapSeries2.default, + mapValues: _mapValues2.default, + mapValuesLimit: _mapValuesLimit2.default, + mapValuesSeries: _mapValuesSeries2.default, + memoize: _memoize2.default, + nextTick: _nextTick2.default, + parallel: _parallel2.default, + parallelLimit: _parallelLimit2.default, + priorityQueue: _priorityQueue2.default, + queue: _queue2.default, + race: _race2.default, + reduce: _reduce2.default, + reduceRight: _reduceRight2.default, + reflect: _reflect2.default, + reflectAll: _reflectAll2.default, + reject: _reject2.default, + rejectLimit: _rejectLimit2.default, + rejectSeries: _rejectSeries2.default, + retry: _retry2.default, + retryable: _retryable2.default, + seq: _seq2.default, + series: _series2.default, + setImmediate: _setImmediate2.default, + some: _some2.default, + someLimit: _someLimit2.default, + someSeries: _someSeries2.default, + sortBy: _sortBy2.default, + timeout: _timeout2.default, + times: _times2.default, + timesLimit: _timesLimit2.default, + timesSeries: _timesSeries2.default, + transform: _transform2.default, + tryEach: _tryEach2.default, + unmemoize: _unmemoize2.default, + until: _until2.default, + waterfall: _waterfall2.default, + whilst: _whilst2.default, + + // aliases + all: _every2.default, + allLimit: _everyLimit2.default, + allSeries: _everySeries2.default, + any: _some2.default, + anyLimit: _someLimit2.default, + anySeries: _someSeries2.default, + find: _detect2.default, + findLimit: _detectLimit2.default, + findSeries: _detectSeries2.default, + flatMap: _concat2.default, + flatMapLimit: _concatLimit2.default, + flatMapSeries: _concatSeries2.default, + forEach: _each2.default, + forEachSeries: _eachSeries2.default, + forEachLimit: _eachLimit2.default, + forEachOf: _eachOf2.default, + forEachOfSeries: _eachOfSeries2.default, + forEachOfLimit: _eachOfLimit2.default, + inject: _reduce2.default, + foldl: _reduce2.default, + foldr: _reduceRight2.default, + select: _filter2.default, + selectLimit: _filterLimit2.default, + selectSeries: _filterSeries2.default, + wrapSync: _asyncify2.default, + during: _whilst2.default, + doDuring: _doWhilst2.default +}; +exports.apply = _apply2.default; +exports.applyEach = _applyEach2.default; +exports.applyEachSeries = _applyEachSeries2.default; +exports.asyncify = _asyncify2.default; +exports.auto = _auto2.default; +exports.autoInject = _autoInject2.default; +exports.cargo = _cargo2.default; +exports.cargoQueue = _cargoQueue2.default; +exports.compose = _compose2.default; +exports.concat = _concat2.default; +exports.concatLimit = _concatLimit2.default; +exports.concatSeries = _concatSeries2.default; +exports.constant = _constant2.default; +exports.detect = _detect2.default; +exports.detectLimit = _detectLimit2.default; +exports.detectSeries = _detectSeries2.default; +exports.dir = _dir2.default; +exports.doUntil = _doUntil2.default; +exports.doWhilst = _doWhilst2.default; +exports.each = _each2.default; +exports.eachLimit = _eachLimit2.default; +exports.eachOf = _eachOf2.default; +exports.eachOfLimit = _eachOfLimit2.default; +exports.eachOfSeries = _eachOfSeries2.default; +exports.eachSeries = _eachSeries2.default; +exports.ensureAsync = _ensureAsync2.default; +exports.every = _every2.default; +exports.everyLimit = _everyLimit2.default; +exports.everySeries = _everySeries2.default; +exports.filter = _filter2.default; +exports.filterLimit = _filterLimit2.default; +exports.filterSeries = _filterSeries2.default; +exports.forever = _forever2.default; +exports.groupBy = _groupBy2.default; +exports.groupByLimit = _groupByLimit2.default; +exports.groupBySeries = _groupBySeries2.default; +exports.log = _log2.default; +exports.map = _map2.default; +exports.mapLimit = _mapLimit2.default; +exports.mapSeries = _mapSeries2.default; +exports.mapValues = _mapValues2.default; +exports.mapValuesLimit = _mapValuesLimit2.default; +exports.mapValuesSeries = _mapValuesSeries2.default; +exports.memoize = _memoize2.default; +exports.nextTick = _nextTick2.default; +exports.parallel = _parallel2.default; +exports.parallelLimit = _parallelLimit2.default; +exports.priorityQueue = _priorityQueue2.default; +exports.queue = _queue2.default; +exports.race = _race2.default; +exports.reduce = _reduce2.default; +exports.reduceRight = _reduceRight2.default; +exports.reflect = _reflect2.default; +exports.reflectAll = _reflectAll2.default; +exports.reject = _reject2.default; +exports.rejectLimit = _rejectLimit2.default; +exports.rejectSeries = _rejectSeries2.default; +exports.retry = _retry2.default; +exports.retryable = _retryable2.default; +exports.seq = _seq2.default; +exports.series = _series2.default; +exports.setImmediate = _setImmediate2.default; +exports.some = _some2.default; +exports.someLimit = _someLimit2.default; +exports.someSeries = _someSeries2.default; +exports.sortBy = _sortBy2.default; +exports.timeout = _timeout2.default; +exports.times = _times2.default; +exports.timesLimit = _timesLimit2.default; +exports.timesSeries = _timesSeries2.default; +exports.transform = _transform2.default; +exports.tryEach = _tryEach2.default; +exports.unmemoize = _unmemoize2.default; +exports.until = _until2.default; +exports.waterfall = _waterfall2.default; +exports.whilst = _whilst2.default; +exports.all = _every2.default; +exports.allLimit = _everyLimit2.default; +exports.allSeries = _everySeries2.default; +exports.any = _some2.default; +exports.anyLimit = _someLimit2.default; +exports.anySeries = _someSeries2.default; +exports.find = _detect2.default; +exports.findLimit = _detectLimit2.default; +exports.findSeries = _detectSeries2.default; +exports.flatMap = _concat2.default; +exports.flatMapLimit = _concatLimit2.default; +exports.flatMapSeries = _concatSeries2.default; +exports.forEach = _each2.default; +exports.forEachSeries = _eachSeries2.default; +exports.forEachLimit = _eachLimit2.default; +exports.forEachOf = _eachOf2.default; +exports.forEachOfSeries = _eachOfSeries2.default; +exports.forEachOfLimit = _eachOfLimit2.default; +exports.inject = _reduce2.default; +exports.foldl = _reduce2.default; +exports.foldr = _reduceRight2.default; +exports.select = _filter2.default; +exports.selectLimit = _filterLimit2.default; +exports.selectSeries = _filterSeries2.default; +exports.wrapSync = _asyncify2.default; +exports.during = _whilst2.default; +exports.doDuring = _doWhilst2.default; \ No newline at end of file diff --git a/node_modules/async/inject.js b/node_modules/async/inject.js new file mode 100644 index 0000000..8a69548 --- /dev/null +++ b/node_modules/async/inject.js @@ -0,0 +1,153 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Reduces `coll` into a single value using an async `iteratee` to return each + * successive step. `memo` is the initial state of the reduction. This function + * only operates in series. + * + * For performance reasons, it may make sense to split a call to this function + * into a parallel map, and then use the normal `Array.prototype.reduce` on the + * results. This function is for situations where each step in the reduction + * needs to be async; if you can get the data before reducing it, then it's + * probably a good idea to do so. + * + * @name reduce + * @static + * @memberOf module:Collections + * @method + * @alias inject + * @alias foldl + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file3.txt', 'file4.txt']; + * + * // asynchronous function that computes the file size in bytes + * // file size is added to the memoized value, then returned + * function getFileSizeInBytes(memo, file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, memo + stat.size); + * }); + * } + * + * // Using callbacks + * async.reduce(fileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.reduce(fileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.reduce(fileList, 0, getFileSizeInBytes); + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.reduce(withMissingFileList, 0, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function reduce(coll, memo, iteratee, callback) { + callback = (0, _once2.default)(callback); + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _eachOfSeries2.default)(coll, (x, i, iterCb) => { + _iteratee(memo, x, (err, v) => { + memo = v; + iterCb(err); + }); + }, err => callback(err, memo)); +} +exports.default = (0, _awaitify2.default)(reduce, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/DoublyLinkedList.js b/node_modules/async/internal/DoublyLinkedList.js new file mode 100644 index 0000000..419ce44 --- /dev/null +++ b/node_modules/async/internal/DoublyLinkedList.js @@ -0,0 +1,92 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation +// used for queues. This implementation assumes that the node provided by the user can be modified +// to adjust the next and last properties. We implement only the minimal functionality +// for queue support. +class DLL { + constructor() { + this.head = this.tail = null; + this.length = 0; + } + + removeLink(node) { + if (node.prev) node.prev.next = node.next;else this.head = node.next; + if (node.next) node.next.prev = node.prev;else this.tail = node.prev; + + node.prev = node.next = null; + this.length -= 1; + return node; + } + + empty() { + while (this.head) this.shift(); + return this; + } + + insertAfter(node, newNode) { + newNode.prev = node; + newNode.next = node.next; + if (node.next) node.next.prev = newNode;else this.tail = newNode; + node.next = newNode; + this.length += 1; + } + + insertBefore(node, newNode) { + newNode.prev = node.prev; + newNode.next = node; + if (node.prev) node.prev.next = newNode;else this.head = newNode; + node.prev = newNode; + this.length += 1; + } + + unshift(node) { + if (this.head) this.insertBefore(this.head, node);else setInitial(this, node); + } + + push(node) { + if (this.tail) this.insertAfter(this.tail, node);else setInitial(this, node); + } + + shift() { + return this.head && this.removeLink(this.head); + } + + pop() { + return this.tail && this.removeLink(this.tail); + } + + toArray() { + return [...this]; + } + + *[Symbol.iterator]() { + var cur = this.head; + while (cur) { + yield cur.data; + cur = cur.next; + } + } + + remove(testFn) { + var curr = this.head; + while (curr) { + var { next } = curr; + if (testFn(curr)) { + this.removeLink(curr); + } + curr = next; + } + return this; + } +} + +exports.default = DLL; +function setInitial(dll, node) { + dll.length = 1; + dll.head = dll.tail = node; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/Heap.js b/node_modules/async/internal/Heap.js new file mode 100644 index 0000000..7867c92 --- /dev/null +++ b/node_modules/async/internal/Heap.js @@ -0,0 +1,120 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +// Binary min-heap implementation used for priority queue. +// Implementation is stable, i.e. push time is considered for equal priorities +class Heap { + constructor() { + this.heap = []; + this.pushCount = Number.MIN_SAFE_INTEGER; + } + + get length() { + return this.heap.length; + } + + empty() { + this.heap = []; + return this; + } + + percUp(index) { + let p; + + while (index > 0 && smaller(this.heap[index], this.heap[p = parent(index)])) { + let t = this.heap[index]; + this.heap[index] = this.heap[p]; + this.heap[p] = t; + + index = p; + } + } + + percDown(index) { + let l; + + while ((l = leftChi(index)) < this.heap.length) { + if (l + 1 < this.heap.length && smaller(this.heap[l + 1], this.heap[l])) { + l = l + 1; + } + + if (smaller(this.heap[index], this.heap[l])) { + break; + } + + let t = this.heap[index]; + this.heap[index] = this.heap[l]; + this.heap[l] = t; + + index = l; + } + } + + push(node) { + node.pushCount = ++this.pushCount; + this.heap.push(node); + this.percUp(this.heap.length - 1); + } + + unshift(node) { + return this.heap.push(node); + } + + shift() { + let [top] = this.heap; + + this.heap[0] = this.heap[this.heap.length - 1]; + this.heap.pop(); + this.percDown(0); + + return top; + } + + toArray() { + return [...this]; + } + + *[Symbol.iterator]() { + for (let i = 0; i < this.heap.length; i++) { + yield this.heap[i].data; + } + } + + remove(testFn) { + let j = 0; + for (let i = 0; i < this.heap.length; i++) { + if (!testFn(this.heap[i])) { + this.heap[j] = this.heap[i]; + j++; + } + } + + this.heap.splice(j); + + for (let i = parent(this.heap.length - 1); i >= 0; i--) { + this.percDown(i); + } + + return this; + } +} + +exports.default = Heap; +function leftChi(i) { + return (i << 1) + 1; +} + +function parent(i) { + return (i + 1 >> 1) - 1; +} + +function smaller(x, y) { + if (x.priority !== y.priority) { + return x.priority < y.priority; + } else { + return x.pushCount < y.pushCount; + } +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/applyEach.js b/node_modules/async/internal/applyEach.js new file mode 100644 index 0000000..5444912 --- /dev/null +++ b/node_modules/async/internal/applyEach.js @@ -0,0 +1,29 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (eachfn) { + return function applyEach(fns, ...callArgs) { + const go = (0, _awaitify2.default)(function (callback) { + var that = this; + return eachfn(fns, (fn, cb) => { + (0, _wrapAsync2.default)(fn).apply(that, callArgs.concat(cb)); + }, callback); + }); + return go; + }; +}; + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/asyncEachOfLimit.js b/node_modules/async/internal/asyncEachOfLimit.js new file mode 100644 index 0000000..34dd82b --- /dev/null +++ b/node_modules/async/internal/asyncEachOfLimit.js @@ -0,0 +1,75 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = asyncEachOfLimit; + +var _breakLoop = require('./breakLoop.js'); + +var _breakLoop2 = _interopRequireDefault(_breakLoop); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// for async generators +function asyncEachOfLimit(generator, limit, iteratee, callback) { + let done = false; + let canceled = false; + let awaiting = false; + let running = 0; + let idx = 0; + + function replenish() { + //console.log('replenish') + if (running >= limit || awaiting || done) return; + //console.log('replenish awaiting') + awaiting = true; + generator.next().then(({ value, done: iterDone }) => { + //console.log('got value', value) + if (canceled || done) return; + awaiting = false; + if (iterDone) { + done = true; + if (running <= 0) { + //console.log('done nextCb') + callback(null); + } + return; + } + running++; + iteratee(value, idx, iterateeCallback); + idx++; + replenish(); + }).catch(handleError); + } + + function iterateeCallback(err, result) { + //console.log('iterateeCallback') + running -= 1; + if (canceled) return; + if (err) return handleError(err); + + if (err === false) { + done = true; + canceled = true; + return; + } + + if (result === _breakLoop2.default || done && running <= 0) { + done = true; + //console.log('done iterCb') + return callback(null); + } + replenish(); + } + + function handleError(err) { + if (canceled) return; + awaiting = false; + done = true; + callback(err); + } + + replenish(); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/awaitify.js b/node_modules/async/internal/awaitify.js new file mode 100644 index 0000000..bb7a609 --- /dev/null +++ b/node_modules/async/internal/awaitify.js @@ -0,0 +1,28 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = awaitify; +// conditionally promisify a function. +// only return a promise if a callback is omitted +function awaitify(asyncFn, arity) { + if (!arity) arity = asyncFn.length; + if (!arity) throw new Error('arity is undefined'); + function awaitable(...args) { + if (typeof args[arity - 1] === 'function') { + return asyncFn.apply(this, args); + } + + return new Promise((resolve, reject) => { + args[arity - 1] = (err, ...cbArgs) => { + if (err) return reject(err); + resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]); + }; + asyncFn.apply(this, args); + }); + } + + return awaitable; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/breakLoop.js b/node_modules/async/internal/breakLoop.js new file mode 100644 index 0000000..87413dd --- /dev/null +++ b/node_modules/async/internal/breakLoop.js @@ -0,0 +1,10 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +// A temporary value used to identify if the loop should be broken. +// See #1064, #1293 +const breakLoop = {}; +exports.default = breakLoop; +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/consoleFunc.js b/node_modules/async/internal/consoleFunc.js new file mode 100644 index 0000000..748d54b --- /dev/null +++ b/node_modules/async/internal/consoleFunc.js @@ -0,0 +1,31 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = consoleFunc; + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function consoleFunc(name) { + return (fn, ...args) => (0, _wrapAsync2.default)(fn)(...args, (err, ...resultArgs) => { + /* istanbul ignore else */ + if (typeof console === 'object') { + /* istanbul ignore else */ + if (err) { + /* istanbul ignore else */ + if (console.error) { + console.error(err); + } + } else if (console[name]) { + /* istanbul ignore else */ + resultArgs.forEach(x => console[name](x)); + } + } + }); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/createTester.js b/node_modules/async/internal/createTester.js new file mode 100644 index 0000000..cafdf62 --- /dev/null +++ b/node_modules/async/internal/createTester.js @@ -0,0 +1,40 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _createTester; + +var _breakLoop = require('./breakLoop.js'); + +var _breakLoop2 = _interopRequireDefault(_breakLoop); + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _createTester(check, getResult) { + return (eachfn, arr, _iteratee, cb) => { + var testPassed = false; + var testResult; + const iteratee = (0, _wrapAsync2.default)(_iteratee); + eachfn(arr, (value, _, callback) => { + iteratee(value, (err, result) => { + if (err || err === false) return callback(err); + + if (check(result) && !testResult) { + testPassed = true; + testResult = getResult(true, value); + return callback(null, _breakLoop2.default); + } + callback(); + }); + }, err => { + if (err) return cb(err); + cb(null, testPassed ? testResult : getResult(false)); + }); + }; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/eachOfLimit.js b/node_modules/async/internal/eachOfLimit.js new file mode 100644 index 0000000..ceed60f --- /dev/null +++ b/node_modules/async/internal/eachOfLimit.js @@ -0,0 +1,90 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _once = require('./once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _iterator = require('./iterator.js'); + +var _iterator2 = _interopRequireDefault(_iterator); + +var _onlyOnce = require('./onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./wrapAsync.js'); + +var _asyncEachOfLimit = require('./asyncEachOfLimit.js'); + +var _asyncEachOfLimit2 = _interopRequireDefault(_asyncEachOfLimit); + +var _breakLoop = require('./breakLoop.js'); + +var _breakLoop2 = _interopRequireDefault(_breakLoop); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = limit => { + return (obj, iteratee, callback) => { + callback = (0, _once2.default)(callback); + if (limit <= 0) { + throw new RangeError('concurrency limit cannot be less than 1'); + } + if (!obj) { + return callback(null); + } + if ((0, _wrapAsync.isAsyncGenerator)(obj)) { + return (0, _asyncEachOfLimit2.default)(obj, limit, iteratee, callback); + } + if ((0, _wrapAsync.isAsyncIterable)(obj)) { + return (0, _asyncEachOfLimit2.default)(obj[Symbol.asyncIterator](), limit, iteratee, callback); + } + var nextElem = (0, _iterator2.default)(obj); + var done = false; + var canceled = false; + var running = 0; + var looping = false; + + function iterateeCallback(err, value) { + if (canceled) return; + running -= 1; + if (err) { + done = true; + callback(err); + } else if (err === false) { + done = true; + canceled = true; + } else if (value === _breakLoop2.default || done && running <= 0) { + done = true; + return callback(null); + } else if (!looping) { + replenish(); + } + } + + function replenish() { + looping = true; + while (running < limit && !done) { + var elem = nextElem(); + if (elem === null) { + done = true; + if (running <= 0) { + callback(null); + } + return; + } + running += 1; + iteratee(elem.value, elem.key, (0, _onlyOnce2.default)(iterateeCallback)); + } + looping = false; + } + + replenish(); + }; +}; + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/filter.js b/node_modules/async/internal/filter.js new file mode 100644 index 0000000..065c211 --- /dev/null +++ b/node_modules/async/internal/filter.js @@ -0,0 +1,55 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _filter; + +var _isArrayLike = require('./isArrayLike.js'); + +var _isArrayLike2 = _interopRequireDefault(_isArrayLike); + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function filterArray(eachfn, arr, iteratee, callback) { + var truthValues = new Array(arr.length); + eachfn(arr, (x, index, iterCb) => { + iteratee(x, (err, v) => { + truthValues[index] = !!v; + iterCb(err); + }); + }, err => { + if (err) return callback(err); + var results = []; + for (var i = 0; i < arr.length; i++) { + if (truthValues[i]) results.push(arr[i]); + } + callback(null, results); + }); +} + +function filterGeneric(eachfn, coll, iteratee, callback) { + var results = []; + eachfn(coll, (x, index, iterCb) => { + iteratee(x, (err, v) => { + if (err) return iterCb(err); + if (v) { + results.push({ index, value: x }); + } + iterCb(err); + }); + }, err => { + if (err) return callback(err); + callback(null, results.sort((a, b) => a.index - b.index).map(v => v.value)); + }); +} + +function _filter(eachfn, coll, iteratee, callback) { + var filter = (0, _isArrayLike2.default)(coll) ? filterArray : filterGeneric; + return filter(eachfn, coll, (0, _wrapAsync2.default)(iteratee), callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/getIterator.js b/node_modules/async/internal/getIterator.js new file mode 100644 index 0000000..f518fce --- /dev/null +++ b/node_modules/async/internal/getIterator.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (coll) { + return coll[Symbol.iterator] && coll[Symbol.iterator](); +}; + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/initialParams.js b/node_modules/async/internal/initialParams.js new file mode 100644 index 0000000..04c0eff --- /dev/null +++ b/node_modules/async/internal/initialParams.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (fn) { + return function (...args /*, callback*/) { + var callback = args.pop(); + return fn.call(this, args, callback); + }; +}; + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/isArrayLike.js b/node_modules/async/internal/isArrayLike.js new file mode 100644 index 0000000..a4c4c8a --- /dev/null +++ b/node_modules/async/internal/isArrayLike.js @@ -0,0 +1,10 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isArrayLike; +function isArrayLike(value) { + return value && typeof value.length === 'number' && value.length >= 0 && value.length % 1 === 0; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/iterator.js b/node_modules/async/internal/iterator.js new file mode 100644 index 0000000..5778b1e --- /dev/null +++ b/node_modules/async/internal/iterator.js @@ -0,0 +1,57 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = createIterator; + +var _isArrayLike = require('./isArrayLike.js'); + +var _isArrayLike2 = _interopRequireDefault(_isArrayLike); + +var _getIterator = require('./getIterator.js'); + +var _getIterator2 = _interopRequireDefault(_getIterator); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function createArrayIterator(coll) { + var i = -1; + var len = coll.length; + return function next() { + return ++i < len ? { value: coll[i], key: i } : null; + }; +} + +function createES2015Iterator(iterator) { + var i = -1; + return function next() { + var item = iterator.next(); + if (item.done) return null; + i++; + return { value: item.value, key: i }; + }; +} + +function createObjectIterator(obj) { + var okeys = obj ? Object.keys(obj) : []; + var i = -1; + var len = okeys.length; + return function next() { + var key = okeys[++i]; + if (key === '__proto__') { + return next(); + } + return i < len ? { value: obj[key], key } : null; + }; +} + +function createIterator(coll) { + if ((0, _isArrayLike2.default)(coll)) { + return createArrayIterator(coll); + } + + var iterator = (0, _getIterator2.default)(coll); + return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/map.js b/node_modules/async/internal/map.js new file mode 100644 index 0000000..acab1e7 --- /dev/null +++ b/node_modules/async/internal/map.js @@ -0,0 +1,30 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _asyncMap; + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _asyncMap(eachfn, arr, iteratee, callback) { + arr = arr || []; + var results = []; + var counter = 0; + var _iteratee = (0, _wrapAsync2.default)(iteratee); + + return eachfn(arr, (value, _, iterCb) => { + var index = counter++; + _iteratee(value, (err, v) => { + results[index] = v; + iterCb(err); + }); + }, err => { + callback(err, results); + }); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/once.js b/node_modules/async/internal/once.js new file mode 100644 index 0000000..a8b5792 --- /dev/null +++ b/node_modules/async/internal/once.js @@ -0,0 +1,17 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = once; +function once(fn) { + function wrapper(...args) { + if (fn === null) return; + var callFn = fn; + fn = null; + callFn.apply(this, args); + } + Object.assign(wrapper, fn); + return wrapper; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/onlyOnce.js b/node_modules/async/internal/onlyOnce.js new file mode 100644 index 0000000..c95a92d --- /dev/null +++ b/node_modules/async/internal/onlyOnce.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = onlyOnce; +function onlyOnce(fn) { + return function (...args) { + if (fn === null) throw new Error("Callback was already called."); + var callFn = fn; + fn = null; + callFn.apply(this, args); + }; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/parallel.js b/node_modules/async/internal/parallel.js new file mode 100644 index 0000000..57fbd0d --- /dev/null +++ b/node_modules/async/internal/parallel.js @@ -0,0 +1,34 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _isArrayLike = require('./isArrayLike.js'); + +var _isArrayLike2 = _interopRequireDefault(_isArrayLike); + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = (0, _awaitify2.default)((eachfn, tasks, callback) => { + var results = (0, _isArrayLike2.default)(tasks) ? [] : {}; + + eachfn(tasks, (task, key, taskCb) => { + (0, _wrapAsync2.default)(task)((err, ...result) => { + if (result.length < 2) { + [result] = result; + } + results[key] = result; + taskCb(err); + }); + }, err => callback(err, results)); +}, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/promiseCallback.js b/node_modules/async/internal/promiseCallback.js new file mode 100644 index 0000000..17a8301 --- /dev/null +++ b/node_modules/async/internal/promiseCallback.js @@ -0,0 +1,23 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +const PROMISE_SYMBOL = Symbol('promiseCallback'); + +function promiseCallback() { + let resolve, reject; + function callback(err, ...args) { + if (err) return reject(err); + resolve(args.length > 1 ? args : args[0]); + } + + callback[PROMISE_SYMBOL] = new Promise((res, rej) => { + resolve = res, reject = rej; + }); + + return callback; +} + +exports.promiseCallback = promiseCallback; +exports.PROMISE_SYMBOL = PROMISE_SYMBOL; \ No newline at end of file diff --git a/node_modules/async/internal/queue.js b/node_modules/async/internal/queue.js new file mode 100644 index 0000000..7414e03 --- /dev/null +++ b/node_modules/async/internal/queue.js @@ -0,0 +1,294 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = queue; + +var _onlyOnce = require('./onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _setImmediate = require('./setImmediate.js'); + +var _setImmediate2 = _interopRequireDefault(_setImmediate); + +var _DoublyLinkedList = require('./DoublyLinkedList.js'); + +var _DoublyLinkedList2 = _interopRequireDefault(_DoublyLinkedList); + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function queue(worker, concurrency, payload) { + if (concurrency == null) { + concurrency = 1; + } else if (concurrency === 0) { + throw new RangeError('Concurrency must not be zero'); + } + + var _worker = (0, _wrapAsync2.default)(worker); + var numRunning = 0; + var workersList = []; + const events = { + error: [], + drain: [], + saturated: [], + unsaturated: [], + empty: [] + }; + + function on(event, handler) { + events[event].push(handler); + } + + function once(event, handler) { + const handleAndRemove = (...args) => { + off(event, handleAndRemove); + handler(...args); + }; + events[event].push(handleAndRemove); + } + + function off(event, handler) { + if (!event) return Object.keys(events).forEach(ev => events[ev] = []); + if (!handler) return events[event] = []; + events[event] = events[event].filter(ev => ev !== handler); + } + + function trigger(event, ...args) { + events[event].forEach(handler => handler(...args)); + } + + var processingScheduled = false; + function _insert(data, insertAtFront, rejectOnError, callback) { + if (callback != null && typeof callback !== 'function') { + throw new Error('task callback must be a function'); + } + q.started = true; + + var res, rej; + function promiseCallback(err, ...args) { + // we don't care about the error, let the global error handler + // deal with it + if (err) return rejectOnError ? rej(err) : res(); + if (args.length <= 1) return res(args[0]); + res(args); + } + + var item = q._createTaskItem(data, rejectOnError ? promiseCallback : callback || promiseCallback); + + if (insertAtFront) { + q._tasks.unshift(item); + } else { + q._tasks.push(item); + } + + if (!processingScheduled) { + processingScheduled = true; + (0, _setImmediate2.default)(() => { + processingScheduled = false; + q.process(); + }); + } + + if (rejectOnError || !callback) { + return new Promise((resolve, reject) => { + res = resolve; + rej = reject; + }); + } + } + + function _createCB(tasks) { + return function (err, ...args) { + numRunning -= 1; + + for (var i = 0, l = tasks.length; i < l; i++) { + var task = tasks[i]; + + var index = workersList.indexOf(task); + if (index === 0) { + workersList.shift(); + } else if (index > 0) { + workersList.splice(index, 1); + } + + task.callback(err, ...args); + + if (err != null) { + trigger('error', err, task.data); + } + } + + if (numRunning <= q.concurrency - q.buffer) { + trigger('unsaturated'); + } + + if (q.idle()) { + trigger('drain'); + } + q.process(); + }; + } + + function _maybeDrain(data) { + if (data.length === 0 && q.idle()) { + // call drain immediately if there are no tasks + (0, _setImmediate2.default)(() => trigger('drain')); + return true; + } + return false; + } + + const eventMethod = name => handler => { + if (!handler) { + return new Promise((resolve, reject) => { + once(name, (err, data) => { + if (err) return reject(err); + resolve(data); + }); + }); + } + off(name); + on(name, handler); + }; + + var isProcessing = false; + var q = { + _tasks: new _DoublyLinkedList2.default(), + _createTaskItem(data, callback) { + return { + data, + callback + }; + }, + *[Symbol.iterator]() { + yield* q._tasks[Symbol.iterator](); + }, + concurrency, + payload, + buffer: concurrency / 4, + started: false, + paused: false, + push(data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return; + return data.map(datum => _insert(datum, false, false, callback)); + } + return _insert(data, false, false, callback); + }, + pushAsync(data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return; + return data.map(datum => _insert(datum, false, true, callback)); + } + return _insert(data, false, true, callback); + }, + kill() { + off(); + q._tasks.empty(); + }, + unshift(data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return; + return data.map(datum => _insert(datum, true, false, callback)); + } + return _insert(data, true, false, callback); + }, + unshiftAsync(data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return; + return data.map(datum => _insert(datum, true, true, callback)); + } + return _insert(data, true, true, callback); + }, + remove(testFn) { + q._tasks.remove(testFn); + }, + process() { + // Avoid trying to start too many processing operations. This can occur + // when callbacks resolve synchronously (#1267). + if (isProcessing) { + return; + } + isProcessing = true; + while (!q.paused && numRunning < q.concurrency && q._tasks.length) { + var tasks = [], + data = []; + var l = q._tasks.length; + if (q.payload) l = Math.min(l, q.payload); + for (var i = 0; i < l; i++) { + var node = q._tasks.shift(); + tasks.push(node); + workersList.push(node); + data.push(node.data); + } + + numRunning += 1; + + if (q._tasks.length === 0) { + trigger('empty'); + } + + if (numRunning === q.concurrency) { + trigger('saturated'); + } + + var cb = (0, _onlyOnce2.default)(_createCB(tasks)); + _worker(data, cb); + } + isProcessing = false; + }, + length() { + return q._tasks.length; + }, + running() { + return numRunning; + }, + workersList() { + return workersList; + }, + idle() { + return q._tasks.length + numRunning === 0; + }, + pause() { + q.paused = true; + }, + resume() { + if (q.paused === false) { + return; + } + q.paused = false; + (0, _setImmediate2.default)(q.process); + } + }; + // define these as fixed properties, so people get useful errors when updating + Object.defineProperties(q, { + saturated: { + writable: false, + value: eventMethod('saturated') + }, + unsaturated: { + writable: false, + value: eventMethod('unsaturated') + }, + empty: { + writable: false, + value: eventMethod('empty') + }, + drain: { + writable: false, + value: eventMethod('drain') + }, + error: { + writable: false, + value: eventMethod('error') + } + }); + return q; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/range.js b/node_modules/async/internal/range.js new file mode 100644 index 0000000..cc7b3a9 --- /dev/null +++ b/node_modules/async/internal/range.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = range; +function range(size) { + var result = Array(size); + while (size--) { + result[size] = size; + } + return result; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/reject.js b/node_modules/async/internal/reject.js new file mode 100644 index 0000000..9d9bc80 --- /dev/null +++ b/node_modules/async/internal/reject.js @@ -0,0 +1,26 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = reject; + +var _filter = require('./filter.js'); + +var _filter2 = _interopRequireDefault(_filter); + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function reject(eachfn, arr, _iteratee, callback) { + const iteratee = (0, _wrapAsync2.default)(_iteratee); + return (0, _filter2.default)(eachfn, arr, (value, cb) => { + iteratee(value, (err, v) => { + cb(err, !v); + }); + }, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/setImmediate.js b/node_modules/async/internal/setImmediate.js new file mode 100644 index 0000000..513efd1 --- /dev/null +++ b/node_modules/async/internal/setImmediate.js @@ -0,0 +1,34 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fallback = fallback; +exports.wrap = wrap; +/* istanbul ignore file */ + +var hasQueueMicrotask = exports.hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask; +var hasSetImmediate = exports.hasSetImmediate = typeof setImmediate === 'function' && setImmediate; +var hasNextTick = exports.hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function'; + +function fallback(fn) { + setTimeout(fn, 0); +} + +function wrap(defer) { + return (fn, ...args) => defer(() => fn(...args)); +} + +var _defer; + +if (hasQueueMicrotask) { + _defer = queueMicrotask; +} else if (hasSetImmediate) { + _defer = setImmediate; +} else if (hasNextTick) { + _defer = process.nextTick; +} else { + _defer = fallback; +} + +exports.default = wrap(_defer); \ No newline at end of file diff --git a/node_modules/async/internal/withoutIndex.js b/node_modules/async/internal/withoutIndex.js new file mode 100644 index 0000000..fa91c2d --- /dev/null +++ b/node_modules/async/internal/withoutIndex.js @@ -0,0 +1,10 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _withoutIndex; +function _withoutIndex(iteratee) { + return (value, index, callback) => iteratee(value, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/wrapAsync.js b/node_modules/async/internal/wrapAsync.js new file mode 100644 index 0000000..ad4d619 --- /dev/null +++ b/node_modules/async/internal/wrapAsync.js @@ -0,0 +1,34 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isAsyncIterable = exports.isAsyncGenerator = exports.isAsync = undefined; + +var _asyncify = require('../asyncify.js'); + +var _asyncify2 = _interopRequireDefault(_asyncify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isAsync(fn) { + return fn[Symbol.toStringTag] === 'AsyncFunction'; +} + +function isAsyncGenerator(fn) { + return fn[Symbol.toStringTag] === 'AsyncGenerator'; +} + +function isAsyncIterable(obj) { + return typeof obj[Symbol.asyncIterator] === 'function'; +} + +function wrapAsync(asyncFn) { + if (typeof asyncFn !== 'function') throw new Error('expected a function'); + return isAsync(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn; +} + +exports.default = wrapAsync; +exports.isAsync = isAsync; +exports.isAsyncGenerator = isAsyncGenerator; +exports.isAsyncIterable = isAsyncIterable; \ No newline at end of file diff --git a/node_modules/async/log.js b/node_modules/async/log.js new file mode 100644 index 0000000..332b9da --- /dev/null +++ b/node_modules/async/log.js @@ -0,0 +1,41 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _consoleFunc = require('./internal/consoleFunc.js'); + +var _consoleFunc2 = _interopRequireDefault(_consoleFunc); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Logs the result of an `async` function to the `console`. Only works in + * Node.js or in browsers that support `console.log` and `console.error` (such + * as FF and Chrome). If multiple arguments are returned from the async + * function, `console.log` is called on each argument in order. + * + * @name log + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. + * @param {...*} arguments... - Any number of arguments to apply to the function. + * @example + * + * // in a module + * var hello = function(name, callback) { + * setTimeout(function() { + * callback(null, 'hello ' + name); + * }, 1000); + * }; + * + * // in the node repl + * node> async.log(hello, 'world'); + * 'hello world' + */ +exports.default = (0, _consoleFunc2.default)('log'); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/map.js b/node_modules/async/map.js new file mode 100644 index 0000000..c4b7a5a --- /dev/null +++ b/node_modules/async/map.js @@ -0,0 +1,142 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _map2 = require('./internal/map.js'); + +var _map3 = _interopRequireDefault(_map2); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Produces a new collection of values by mapping each value in `coll` through + * the `iteratee` function. The `iteratee` is called with an item from `coll` + * and a callback for when it has finished processing. Each of these callbacks + * takes 2 arguments: an `error`, and the transformed item from `coll`. If + * `iteratee` passes an error to its callback, the main `callback` (for the + * `map` function) is immediately called with the error. + * + * Note, that since this function applies the `iteratee` to each item in + * parallel, there is no guarantee that the `iteratee` functions will complete + * in order. However, the results array will be in the same order as the + * original `coll`. + * + * If `map` is passed an Object, the results will be an Array. The results + * will roughly be in the order of the original Objects' keys (but this can + * vary across JavaScript engines). + * + * @name map + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an Array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.map(fileList, getFileSizeInBytes, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * } + * }); + * + * // Error Handling + * async.map(withMissingFileList, getFileSizeInBytes, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.map(fileList, getFileSizeInBytes) + * .then( results => { + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.map(withMissingFileList, getFileSizeInBytes) + * .then( results => { + * console.log(results); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.map(fileList, getFileSizeInBytes); + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.map(withMissingFileList, getFileSizeInBytes); + * console.log(results); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function map(coll, iteratee, callback) { + return (0, _map3.default)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(map, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/mapLimit.js b/node_modules/async/mapLimit.js new file mode 100644 index 0000000..6ad3572 --- /dev/null +++ b/node_modules/async/mapLimit.js @@ -0,0 +1,45 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _map2 = require('./internal/map.js'); + +var _map3 = _interopRequireDefault(_map2); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`map`]{@link module:Collections.map} but runs a maximum of `limit` async operations at a time. + * + * @name mapLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.map]{@link module:Collections.map} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function mapLimit(coll, limit, iteratee, callback) { + return (0, _map3.default)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(mapLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/mapSeries.js b/node_modules/async/mapSeries.js new file mode 100644 index 0000000..8dfdd8a --- /dev/null +++ b/node_modules/async/mapSeries.js @@ -0,0 +1,44 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _map2 = require('./internal/map.js'); + +var _map3 = _interopRequireDefault(_map2); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`map`]{@link module:Collections.map} but runs only a single async operation at a time. + * + * @name mapSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.map]{@link module:Collections.map} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function mapSeries(coll, iteratee, callback) { + return (0, _map3.default)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(mapSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/mapValues.js b/node_modules/async/mapValues.js new file mode 100644 index 0000000..3d0470e --- /dev/null +++ b/node_modules/async/mapValues.js @@ -0,0 +1,152 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = mapValues; + +var _mapValuesLimit = require('./mapValuesLimit.js'); + +var _mapValuesLimit2 = _interopRequireDefault(_mapValuesLimit); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * A relative of [`map`]{@link module:Collections.map}, designed for use with objects. + * + * Produces a new Object by mapping each value of `obj` through the `iteratee` + * function. The `iteratee` is called each `value` and `key` from `obj` and a + * callback for when it has finished processing. Each of these callbacks takes + * two arguments: an `error`, and the transformed item from `obj`. If `iteratee` + * passes an error to its callback, the main `callback` (for the `mapValues` + * function) is immediately called with the error. + * + * Note, the order of the keys in the result is not guaranteed. The keys will + * be roughly in the order they complete, (but this is very engine-specific) + * + * @name mapValues + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileMap = { + * f1: 'file1.txt', + * f2: 'file2.txt', + * f3: 'file3.txt' + * }; + * + * const withMissingFileMap = { + * f1: 'file1.txt', + * f2: 'file2.txt', + * f3: 'file4.txt' + * }; + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, key, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.mapValues(fileMap, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * } + * }); + * + * // Error handling + * async.mapValues(withMissingFileMap, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.mapValues(fileMap, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * }).catch (err => { + * console.log(err); + * }); + * + * // Error Handling + * async.mapValues(withMissingFileMap, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch (err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.mapValues(fileMap, getFileSizeInBytes); + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.mapValues(withMissingFileMap, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function mapValues(obj, iteratee, callback) { + return (0, _mapValuesLimit2.default)(obj, Infinity, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/mapValuesLimit.js b/node_modules/async/mapValuesLimit.js new file mode 100644 index 0000000..f59e36f --- /dev/null +++ b/node_modules/async/mapValuesLimit.js @@ -0,0 +1,61 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`mapValues`]{@link module:Collections.mapValues} but runs a maximum of `limit` async operations at a + * time. + * + * @name mapValuesLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.mapValues]{@link module:Collections.mapValues} + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function mapValuesLimit(obj, limit, iteratee, callback) { + callback = (0, _once2.default)(callback); + var newObj = {}; + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _eachOfLimit2.default)(limit)(obj, (val, key, next) => { + _iteratee(val, key, (err, result) => { + if (err) return next(err); + newObj[key] = result; + next(err); + }); + }, err => callback(err, newObj)); +} + +exports.default = (0, _awaitify2.default)(mapValuesLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/mapValuesSeries.js b/node_modules/async/mapValuesSeries.js new file mode 100644 index 0000000..5f05bf2 --- /dev/null +++ b/node_modules/async/mapValuesSeries.js @@ -0,0 +1,37 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = mapValuesSeries; + +var _mapValuesLimit = require('./mapValuesLimit.js'); + +var _mapValuesLimit2 = _interopRequireDefault(_mapValuesLimit); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`mapValues`]{@link module:Collections.mapValues} but runs only a single async operation at a time. + * + * @name mapValuesSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.mapValues]{@link module:Collections.mapValues} + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function mapValuesSeries(obj, iteratee, callback) { + return (0, _mapValuesLimit2.default)(obj, 1, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/memoize.js b/node_modules/async/memoize.js new file mode 100644 index 0000000..6535d4e --- /dev/null +++ b/node_modules/async/memoize.js @@ -0,0 +1,91 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = memoize; + +var _setImmediate = require('./internal/setImmediate.js'); + +var _setImmediate2 = _interopRequireDefault(_setImmediate); + +var _initialParams = require('./internal/initialParams.js'); + +var _initialParams2 = _interopRequireDefault(_initialParams); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Caches the results of an async function. When creating a hash to store + * function results against, the callback is omitted from the hash and an + * optional hash function can be used. + * + * **Note: if the async function errs, the result will not be cached and + * subsequent calls will call the wrapped function.** + * + * If no hash function is specified, the first argument is used as a hash key, + * which may work reasonably if it is a string or a data type that converts to a + * distinct string. Note that objects and arrays will not behave reasonably. + * Neither will cases where the other arguments are significant. In such cases, + * specify your own hash function. + * + * The cache of results is exposed as the `memo` property of the function + * returned by `memoize`. + * + * @name memoize + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - The async function to proxy and cache results from. + * @param {Function} hasher - An optional function for generating a custom hash + * for storing results. It has all the arguments applied to it apart from the + * callback, and must be synchronous. + * @returns {AsyncFunction} a memoized version of `fn` + * @example + * + * var slow_fn = function(name, callback) { + * // do something + * callback(null, result); + * }; + * var fn = async.memoize(slow_fn); + * + * // fn can now be used as if it were slow_fn + * fn('some name', function() { + * // callback + * }); + */ +function memoize(fn, hasher = v => v) { + var memo = Object.create(null); + var queues = Object.create(null); + var _fn = (0, _wrapAsync2.default)(fn); + var memoized = (0, _initialParams2.default)((args, callback) => { + var key = hasher(...args); + if (key in memo) { + (0, _setImmediate2.default)(() => callback(null, ...memo[key])); + } else if (key in queues) { + queues[key].push(callback); + } else { + queues[key] = [callback]; + _fn(...args, (err, ...resultArgs) => { + // #1465 don't memoize if an error occurred + if (!err) { + memo[key] = resultArgs; + } + var q = queues[key]; + delete queues[key]; + for (var i = 0, l = q.length; i < l; i++) { + q[i](err, ...resultArgs); + } + }); + } + }); + memoized.memo = memo; + memoized.unmemoized = fn; + return memoized; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/nextTick.js b/node_modules/async/nextTick.js new file mode 100644 index 0000000..8ebfda9 --- /dev/null +++ b/node_modules/async/nextTick.js @@ -0,0 +1,52 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _setImmediate = require('./internal/setImmediate.js'); + +/** + * Calls `callback` on a later loop around the event loop. In Node.js this just + * calls `process.nextTick`. In the browser it will use `setImmediate` if + * available, otherwise `setTimeout(callback, 0)`, which means other higher + * priority events may precede the execution of `callback`. + * + * This is used internally for browser-compatibility purposes. + * + * @name nextTick + * @static + * @memberOf module:Utils + * @method + * @see [async.setImmediate]{@link module:Utils.setImmediate} + * @category Util + * @param {Function} callback - The function to call on a later loop around + * the event loop. Invoked with (args...). + * @param {...*} args... - any number of additional arguments to pass to the + * callback on the next tick. + * @example + * + * var call_order = []; + * async.nextTick(function() { + * call_order.push('two'); + * // call_order now equals ['one','two'] + * }); + * call_order.push('one'); + * + * async.setImmediate(function (a, b, c) { + * // a, b, and c equal 1, 2, and 3 + * }, 1, 2, 3); + */ +var _defer; /* istanbul ignore file */ + + +if (_setImmediate.hasNextTick) { + _defer = process.nextTick; +} else if (_setImmediate.hasSetImmediate) { + _defer = setImmediate; +} else { + _defer = _setImmediate.fallback; +} + +exports.default = (0, _setImmediate.wrap)(_defer); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/package.json b/node_modules/async/package.json new file mode 100644 index 0000000..bcf4c41 --- /dev/null +++ b/node_modules/async/package.json @@ -0,0 +1,75 @@ +{ + "name": "async", + "description": "Higher-order functions and common patterns for asynchronous code", + "version": "3.2.6", + "main": "dist/async.js", + "author": "Caolan McMahon", + "homepage": "https://caolan.github.io/async/", + "repository": { + "type": "git", + "url": "https://github.com/caolan/async.git" + }, + "bugs": { + "url": "https://github.com/caolan/async/issues" + }, + "keywords": [ + "async", + "callback", + "module", + "utility" + ], + "devDependencies": { + "@babel/eslint-parser": "^7.16.5", + "@babel/core": "7.25.2", + "babel-minify": "^0.5.0", + "babel-plugin-add-module-exports": "^1.0.4", + "babel-plugin-istanbul": "^7.0.0", + "babel-plugin-syntax-async-generators": "^6.13.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", + "babel-preset-es2015": "^6.3.13", + "babel-preset-es2017": "^6.22.0", + "babel-register": "^6.26.0", + "babelify": "^10.0.0", + "benchmark": "^2.1.1", + "bluebird": "^3.4.6", + "browserify": "^17.0.0", + "chai": "^4.2.0", + "cheerio": "^0.22.0", + "es6-promise": "^4.2.8", + "eslint": "^8.6.0", + "eslint-plugin-prefer-arrow": "^1.2.3", + "fs-extra": "^11.1.1", + "jsdoc": "^4.0.3", + "karma": "^6.3.12", + "karma-browserify": "^8.1.0", + "karma-firefox-launcher": "^2.1.2", + "karma-mocha": "^2.0.1", + "karma-mocha-reporter": "^2.2.0", + "karma-safari-launcher": "^1.0.0", + "mocha": "^6.1.4", + "native-promise-only": "^0.8.0-a", + "nyc": "^17.0.0", + "rollup": "^4.2.0", + "rollup-plugin-node-resolve": "^5.2.0", + "rollup-plugin-npm": "^2.0.0", + "rsvp": "^4.8.5", + "semver": "^7.3.5", + "yargs": "^17.3.1" + }, + "scripts": { + "coverage": "nyc npm run mocha-node-test -- --grep @nycinvalid --invert", + "jsdoc": "jsdoc -c ./support/jsdoc/jsdoc.json && node support/jsdoc/jsdoc-fix-html.js", + "lint": "eslint --fix .", + "mocha-browser-test": "karma start", + "mocha-node-test": "mocha", + "mocha-test": "npm run mocha-node-test && npm run mocha-browser-test", + "test": "npm run lint && npm run mocha-node-test" + }, + "license": "MIT", + "nyc": { + "exclude": [ + "test" + ] + }, + "module": "dist/async.mjs" +} \ No newline at end of file diff --git a/node_modules/async/parallel.js b/node_modules/async/parallel.js new file mode 100644 index 0000000..2c7976f --- /dev/null +++ b/node_modules/async/parallel.js @@ -0,0 +1,180 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = parallel; + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _parallel2 = require('./internal/parallel.js'); + +var _parallel3 = _interopRequireDefault(_parallel2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Run the `tasks` collection of functions in parallel, without waiting until + * the previous function has completed. If any of the functions pass an error to + * its callback, the main `callback` is immediately called with the value of the + * error. Once the `tasks` have completed, the results are passed to the final + * `callback` as an array. + * + * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about + * parallel execution of code. If your tasks do not use any timers or perform + * any I/O, they will actually be executed in series. Any synchronous setup + * sections for each task will happen one after the other. JavaScript remains + * single-threaded. + * + * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the + * execution of other tasks when a task fails. + * + * It is also possible to use an object instead of an array. Each property will + * be run as a function and the results will be passed to the final `callback` + * as an object instead of an array. This can be a more readable way of handling + * results from {@link async.parallel}. + * + * @name parallel + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed successfully. This function gets a results array + * (or object) containing all the result arguments passed to the task callbacks. + * Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + * + * @example + * + * //Using Callbacks + * async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ], function(err, results) { + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * }); + * + * // an example using an object instead of an array + * async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }, function(err, results) { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }); + * + * //Using Promises + * async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]).then(results => { + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * }).catch(err => { + * console.log(err); + * }); + * + * // an example using an object instead of an array + * async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }).then(results => { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }).catch(err => { + * console.log(err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]); + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // an example using an object instead of an array + * async () => { + * try { + * let results = await async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }); + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function parallel(tasks, callback) { + return (0, _parallel3.default)(_eachOf2.default, tasks, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/parallelLimit.js b/node_modules/async/parallelLimit.js new file mode 100644 index 0000000..4337957 --- /dev/null +++ b/node_modules/async/parallelLimit.js @@ -0,0 +1,41 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = parallelLimit; + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _parallel = require('./internal/parallel.js'); + +var _parallel2 = _interopRequireDefault(_parallel); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a + * time. + * + * @name parallelLimit + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.parallel]{@link module:ControlFlow.parallel} + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed successfully. This function gets a results array + * (or object) containing all the result arguments passed to the task callbacks. + * Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + */ +function parallelLimit(tasks, limit, callback) { + return (0, _parallel2.default)((0, _eachOfLimit2.default)(limit), tasks, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/priorityQueue.js b/node_modules/async/priorityQueue.js new file mode 100644 index 0000000..16c4daa --- /dev/null +++ b/node_modules/async/priorityQueue.js @@ -0,0 +1,60 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (worker, concurrency) { + // Start with a normal queue + var q = (0, _queue2.default)(worker, concurrency); + + var { + push, + pushAsync + } = q; + + q._tasks = new _Heap2.default(); + q._createTaskItem = ({ data, priority }, callback) => { + return { + data, + priority, + callback + }; + }; + + function createDataItems(tasks, priority) { + if (!Array.isArray(tasks)) { + return { data: tasks, priority }; + } + return tasks.map(data => { + return { data, priority }; + }); + } + + // Override push to accept second parameter representing priority + q.push = function (data, priority = 0, callback) { + return push(createDataItems(data, priority), callback); + }; + + q.pushAsync = function (data, priority = 0, callback) { + return pushAsync(createDataItems(data, priority), callback); + }; + + // Remove unshift functions + delete q.unshift; + delete q.unshiftAsync; + + return q; +}; + +var _queue = require('./queue.js'); + +var _queue2 = _interopRequireDefault(_queue); + +var _Heap = require('./internal/Heap.js'); + +var _Heap2 = _interopRequireDefault(_Heap); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/queue.js b/node_modules/async/queue.js new file mode 100644 index 0000000..c01340d --- /dev/null +++ b/node_modules/async/queue.js @@ -0,0 +1,24 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (worker, concurrency) { + var _worker = (0, _wrapAsync2.default)(worker); + return (0, _queue2.default)((items, cb) => { + _worker(items[0], cb); + }, concurrency, 1); +}; + +var _queue = require('./internal/queue.js'); + +var _queue2 = _interopRequireDefault(_queue); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/race.js b/node_modules/async/race.js new file mode 100644 index 0000000..aa167be --- /dev/null +++ b/node_modules/async/race.js @@ -0,0 +1,67 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Runs the `tasks` array of functions in parallel, without waiting until the + * previous function has completed. Once any of the `tasks` complete or pass an + * error to its callback, the main `callback` is immediately called. It's + * equivalent to `Promise.race()`. + * + * @name race + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction} + * to run. Each function can complete with an optional `result` value. + * @param {Function} callback - A callback to run once any of the functions have + * completed. This function gets an error or result from the first function that + * completed. Invoked with (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * async.race([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ], + * // main callback + * function(err, result) { + * // the result will be equal to 'two' as it finishes earlier + * }); + */ +function race(tasks, callback) { + callback = (0, _once2.default)(callback); + if (!Array.isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions')); + if (!tasks.length) return callback(); + for (var i = 0, l = tasks.length; i < l; i++) { + (0, _wrapAsync2.default)(tasks[i])(callback); + } +} + +exports.default = (0, _awaitify2.default)(race, 2); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/reduce.js b/node_modules/async/reduce.js new file mode 100644 index 0000000..8a69548 --- /dev/null +++ b/node_modules/async/reduce.js @@ -0,0 +1,153 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Reduces `coll` into a single value using an async `iteratee` to return each + * successive step. `memo` is the initial state of the reduction. This function + * only operates in series. + * + * For performance reasons, it may make sense to split a call to this function + * into a parallel map, and then use the normal `Array.prototype.reduce` on the + * results. This function is for situations where each step in the reduction + * needs to be async; if you can get the data before reducing it, then it's + * probably a good idea to do so. + * + * @name reduce + * @static + * @memberOf module:Collections + * @method + * @alias inject + * @alias foldl + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file3.txt', 'file4.txt']; + * + * // asynchronous function that computes the file size in bytes + * // file size is added to the memoized value, then returned + * function getFileSizeInBytes(memo, file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, memo + stat.size); + * }); + * } + * + * // Using callbacks + * async.reduce(fileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.reduce(fileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.reduce(fileList, 0, getFileSizeInBytes); + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.reduce(withMissingFileList, 0, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function reduce(coll, memo, iteratee, callback) { + callback = (0, _once2.default)(callback); + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _eachOfSeries2.default)(coll, (x, i, iterCb) => { + _iteratee(memo, x, (err, v) => { + memo = v; + iterCb(err); + }); + }, err => callback(err, memo)); +} +exports.default = (0, _awaitify2.default)(reduce, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/reduceRight.js b/node_modules/async/reduceRight.js new file mode 100644 index 0000000..5be1b68 --- /dev/null +++ b/node_modules/async/reduceRight.js @@ -0,0 +1,41 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = reduceRight; + +var _reduce = require('./reduce.js'); + +var _reduce2 = _interopRequireDefault(_reduce); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order. + * + * @name reduceRight + * @static + * @memberOf module:Collections + * @method + * @see [async.reduce]{@link module:Collections.reduce} + * @alias foldr + * @category Collection + * @param {Array} array - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function reduceRight(array, memo, iteratee, callback) { + var reversed = [...array].reverse(); + return (0, _reduce2.default)(reversed, memo, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/reflect.js b/node_modules/async/reflect.js new file mode 100644 index 0000000..3954495 --- /dev/null +++ b/node_modules/async/reflect.js @@ -0,0 +1,78 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = reflect; + +var _initialParams = require('./internal/initialParams.js'); + +var _initialParams2 = _interopRequireDefault(_initialParams); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Wraps the async function in another function that always completes with a + * result object, even when it errors. + * + * The result object has either the property `error` or `value`. + * + * @name reflect + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - The async function you want to wrap + * @returns {Function} - A function that always passes null to it's callback as + * the error. The second argument to the callback will be an `object` with + * either an `error` or a `value` property. + * @example + * + * async.parallel([ + * async.reflect(function(callback) { + * // do some stuff ... + * callback(null, 'one'); + * }), + * async.reflect(function(callback) { + * // do some more stuff but error ... + * callback('bad stuff happened'); + * }), + * async.reflect(function(callback) { + * // do some more stuff ... + * callback(null, 'two'); + * }) + * ], + * // optional callback + * function(err, results) { + * // values + * // results[0].value = 'one' + * // results[1].error = 'bad stuff happened' + * // results[2].value = 'two' + * }); + */ +function reflect(fn) { + var _fn = (0, _wrapAsync2.default)(fn); + return (0, _initialParams2.default)(function reflectOn(args, reflectCallback) { + args.push((error, ...cbArgs) => { + let retVal = {}; + if (error) { + retVal.error = error; + } + if (cbArgs.length > 0) { + var value = cbArgs; + if (cbArgs.length <= 1) { + [value] = cbArgs; + } + retVal.value = value; + } + reflectCallback(null, retVal); + }); + + return _fn.apply(this, args); + }); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/reflectAll.js b/node_modules/async/reflectAll.js new file mode 100644 index 0000000..b78d598 --- /dev/null +++ b/node_modules/async/reflectAll.js @@ -0,0 +1,93 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = reflectAll; + +var _reflect = require('./reflect.js'); + +var _reflect2 = _interopRequireDefault(_reflect); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * A helper function that wraps an array or an object of functions with `reflect`. + * + * @name reflectAll + * @static + * @memberOf module:Utils + * @method + * @see [async.reflect]{@link module:Utils.reflect} + * @category Util + * @param {Array|Object|Iterable} tasks - The collection of + * [async functions]{@link AsyncFunction} to wrap in `async.reflect`. + * @returns {Array} Returns an array of async functions, each wrapped in + * `async.reflect` + * @example + * + * let tasks = [ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * // do some more stuff but error ... + * callback(new Error('bad stuff happened')); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]; + * + * async.parallel(async.reflectAll(tasks), + * // optional callback + * function(err, results) { + * // values + * // results[0].value = 'one' + * // results[1].error = Error('bad stuff happened') + * // results[2].value = 'two' + * }); + * + * // an example using an object instead of an array + * let tasks = { + * one: function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * two: function(callback) { + * callback('two'); + * }, + * three: function(callback) { + * setTimeout(function() { + * callback(null, 'three'); + * }, 100); + * } + * }; + * + * async.parallel(async.reflectAll(tasks), + * // optional callback + * function(err, results) { + * // values + * // results.one.value = 'one' + * // results.two.error = 'two' + * // results.three.value = 'three' + * }); + */ +function reflectAll(tasks) { + var results; + if (Array.isArray(tasks)) { + results = tasks.map(_reflect2.default); + } else { + results = {}; + Object.keys(tasks).forEach(key => { + results[key] = _reflect2.default.call(this, tasks[key]); + }); + } + return results; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/reject.js b/node_modules/async/reject.js new file mode 100644 index 0000000..895949b --- /dev/null +++ b/node_modules/async/reject.js @@ -0,0 +1,87 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _reject2 = require('./internal/reject.js'); + +var _reject3 = _interopRequireDefault(_reject2); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The opposite of [`filter`]{@link module:Collections.filter}. Removes values that pass an `async` truth test. + * + * @name reject + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.reject(fileList, fileExists, function(err, results) { + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * }); + * + * // Using Promises + * async.reject(fileList, fileExists) + * .then( results => { + * console.log(results); + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.reject(fileList, fileExists); + * console.log(results); + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function reject(coll, iteratee, callback) { + return (0, _reject3.default)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(reject, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/rejectLimit.js b/node_modules/async/rejectLimit.js new file mode 100644 index 0000000..ce10edf --- /dev/null +++ b/node_modules/async/rejectLimit.js @@ -0,0 +1,45 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _reject2 = require('./internal/reject.js'); + +var _reject3 = _interopRequireDefault(_reject2); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`reject`]{@link module:Collections.reject} but runs a maximum of `limit` async operations at a + * time. + * + * @name rejectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.reject]{@link module:Collections.reject} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function rejectLimit(coll, limit, iteratee, callback) { + return (0, _reject3.default)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(rejectLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/rejectSeries.js b/node_modules/async/rejectSeries.js new file mode 100644 index 0000000..c08e413 --- /dev/null +++ b/node_modules/async/rejectSeries.js @@ -0,0 +1,43 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _reject2 = require('./internal/reject.js'); + +var _reject3 = _interopRequireDefault(_reject2); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`reject`]{@link module:Collections.reject} but runs only a single async operation at a time. + * + * @name rejectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.reject]{@link module:Collections.reject} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function rejectSeries(coll, iteratee, callback) { + return (0, _reject3.default)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(rejectSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/retry.js b/node_modules/async/retry.js new file mode 100644 index 0000000..a4b0235 --- /dev/null +++ b/node_modules/async/retry.js @@ -0,0 +1,159 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = retry; + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _promiseCallback = require('./internal/promiseCallback.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function constant(value) { + return function () { + return value; + }; +} + +/** + * Attempts to get a successful response from `task` no more than `times` times + * before returning an error. If the task is successful, the `callback` will be + * passed the result of the successful task. If all attempts fail, the callback + * will be passed the error and result (if any) of the final attempt. + * + * @name retry + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @see [async.retryable]{@link module:ControlFlow.retryable} + * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an + * object with `times` and `interval` or a number. + * * `times` - The number of attempts to make before giving up. The default + * is `5`. + * * `interval` - The time to wait between retries, in milliseconds. The + * default is `0`. The interval may also be specified as a function of the + * retry count (see example). + * * `errorFilter` - An optional synchronous function that is invoked on + * erroneous result. If it returns `true` the retry attempts will continue; + * if the function returns `false` the retry flow is aborted with the current + * attempt's error and result being returned to the final callback. + * Invoked with (err). + * * If `opts` is a number, the number specifies the number of times to retry, + * with the default interval of `0`. + * @param {AsyncFunction} task - An async function to retry. + * Invoked with (callback). + * @param {Function} [callback] - An optional callback which is called when the + * task has succeeded, or after the final failed attempt. It receives the `err` + * and `result` arguments of the last attempt at completing the `task`. Invoked + * with (err, results). + * @returns {Promise} a promise if no callback provided + * + * @example + * + * // The `retry` function can be used as a stand-alone control flow by passing + * // a callback, as shown below: + * + * // try calling apiMethod 3 times + * async.retry(3, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod 3 times, waiting 200 ms between each retry + * async.retry({times: 3, interval: 200}, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod 10 times with exponential backoff + * // (i.e. intervals of 100, 200, 400, 800, 1600, ... milliseconds) + * async.retry({ + * times: 10, + * interval: function(retryCount) { + * return 50 * Math.pow(2, retryCount); + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod the default 5 times no delay between each retry + * async.retry(apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod only when error condition satisfies, all other + * // errors will abort the retry control flow and return to final callback + * async.retry({ + * errorFilter: function(err) { + * return err.message === 'Temporary error'; // only retry on a specific error + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // to retry individual methods that are not as reliable within other + * // control flow functions, use the `retryable` wrapper: + * async.auto({ + * users: api.getUsers.bind(api), + * payments: async.retryable(3, api.getPayments.bind(api)) + * }, function(err, results) { + * // do something with the results + * }); + * + */ +const DEFAULT_TIMES = 5; +const DEFAULT_INTERVAL = 0; + +function retry(opts, task, callback) { + var options = { + times: DEFAULT_TIMES, + intervalFunc: constant(DEFAULT_INTERVAL) + }; + + if (arguments.length < 3 && typeof opts === 'function') { + callback = task || (0, _promiseCallback.promiseCallback)(); + task = opts; + } else { + parseTimes(options, opts); + callback = callback || (0, _promiseCallback.promiseCallback)(); + } + + if (typeof task !== 'function') { + throw new Error("Invalid arguments for async.retry"); + } + + var _task = (0, _wrapAsync2.default)(task); + + var attempt = 1; + function retryAttempt() { + _task((err, ...args) => { + if (err === false) return; + if (err && attempt++ < options.times && (typeof options.errorFilter != 'function' || options.errorFilter(err))) { + setTimeout(retryAttempt, options.intervalFunc(attempt - 1)); + } else { + callback(err, ...args); + } + }); + } + + retryAttempt(); + return callback[_promiseCallback.PROMISE_SYMBOL]; +} + +function parseTimes(acc, t) { + if (typeof t === 'object') { + acc.times = +t.times || DEFAULT_TIMES; + + acc.intervalFunc = typeof t.interval === 'function' ? t.interval : constant(+t.interval || DEFAULT_INTERVAL); + + acc.errorFilter = t.errorFilter; + } else if (typeof t === 'number' || typeof t === 'string') { + acc.times = +t || DEFAULT_TIMES; + } else { + throw new Error("Invalid arguments for async.retry"); + } +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/retryable.js b/node_modules/async/retryable.js new file mode 100644 index 0000000..68256c3 --- /dev/null +++ b/node_modules/async/retryable.js @@ -0,0 +1,77 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = retryable; + +var _retry = require('./retry.js'); + +var _retry2 = _interopRequireDefault(_retry); + +var _initialParams = require('./internal/initialParams.js'); + +var _initialParams2 = _interopRequireDefault(_initialParams); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _promiseCallback = require('./internal/promiseCallback.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method + * wraps a task and makes it retryable, rather than immediately calling it + * with retries. + * + * @name retryable + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.retry]{@link module:ControlFlow.retry} + * @category Control Flow + * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional + * options, exactly the same as from `retry`, except for a `opts.arity` that + * is the arity of the `task` function, defaulting to `task.length` + * @param {AsyncFunction} task - the asynchronous function to wrap. + * This function will be passed any arguments passed to the returned wrapper. + * Invoked with (...args, callback). + * @returns {AsyncFunction} The wrapped function, which when invoked, will + * retry on an error, based on the parameters specified in `opts`. + * This function will accept the same parameters as `task`. + * @example + * + * async.auto({ + * dep1: async.retryable(3, getFromFlakyService), + * process: ["dep1", async.retryable(3, function (results, cb) { + * maybeProcessData(results.dep1, cb); + * })] + * }, callback); + */ +function retryable(opts, task) { + if (!task) { + task = opts; + opts = null; + } + let arity = opts && opts.arity || task.length; + if ((0, _wrapAsync.isAsync)(task)) { + arity += 1; + } + var _task = (0, _wrapAsync2.default)(task); + return (0, _initialParams2.default)((args, callback) => { + if (args.length < arity - 1 || callback == null) { + args.push(callback); + callback = (0, _promiseCallback.promiseCallback)(); + } + function taskFn(cb) { + _task(...args, cb); + } + + if (opts) (0, _retry2.default)(opts, taskFn, callback);else (0, _retry2.default)(taskFn, callback); + + return callback[_promiseCallback.PROMISE_SYMBOL]; + }); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/select.js b/node_modules/async/select.js new file mode 100644 index 0000000..2c9a63d --- /dev/null +++ b/node_modules/async/select.js @@ -0,0 +1,93 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _filter2 = require('./internal/filter.js'); + +var _filter3 = _interopRequireDefault(_filter2); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns a new array of all the values in `coll` which pass an async truth + * test. This operation is performed in parallel, but the results array will be + * in the same order as the original. + * + * @name filter + * @static + * @memberOf module:Collections + * @method + * @alias select + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const files = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.filter(files, fileExists, function(err, results) { + * if(err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * }); + * + * // Using Promises + * async.filter(files, fileExists) + * .then(results => { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.filter(files, fileExists); + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function filter(coll, iteratee, callback) { + return (0, _filter3.default)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(filter, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/selectLimit.js b/node_modules/async/selectLimit.js new file mode 100644 index 0000000..d3b3f50 --- /dev/null +++ b/node_modules/async/selectLimit.js @@ -0,0 +1,45 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _filter2 = require('./internal/filter.js'); + +var _filter3 = _interopRequireDefault(_filter2); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a + * time. + * + * @name filterLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + */ +function filterLimit(coll, limit, iteratee, callback) { + return (0, _filter3.default)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(filterLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/selectSeries.js b/node_modules/async/selectSeries.js new file mode 100644 index 0000000..019a2d0 --- /dev/null +++ b/node_modules/async/selectSeries.js @@ -0,0 +1,43 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _filter2 = require('./internal/filter.js'); + +var _filter3 = _interopRequireDefault(_filter2); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time. + * + * @name filterSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results) + * @returns {Promise} a promise, if no callback provided + */ +function filterSeries(coll, iteratee, callback) { + return (0, _filter3.default)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(filterSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/seq.js b/node_modules/async/seq.js new file mode 100644 index 0000000..e7881cd --- /dev/null +++ b/node_modules/async/seq.js @@ -0,0 +1,79 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = seq; + +var _reduce = require('./reduce.js'); + +var _reduce2 = _interopRequireDefault(_reduce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _promiseCallback = require('./internal/promiseCallback.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Version of the compose function that is more natural to read. Each function + * consumes the return value of the previous function. It is the equivalent of + * [compose]{@link module:ControlFlow.compose} with the arguments reversed. + * + * Each function is executed with the `this` binding of the composed function. + * + * @name seq + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.compose]{@link module:ControlFlow.compose} + * @category Control Flow + * @param {...AsyncFunction} functions - the asynchronous functions to compose + * @returns {Function} a function that composes the `functions` in order + * @example + * + * // Requires lodash (or underscore), express3 and dresende's orm2. + * // Part of an app, that fetches cats of the logged user. + * // This example uses `seq` function to avoid overnesting and error + * // handling clutter. + * app.get('/cats', function(request, response) { + * var User = request.models.User; + * async.seq( + * User.get.bind(User), // 'User.get' has signature (id, callback(err, data)) + * function(user, fn) { + * user.getCats(fn); // 'getCats' has signature (callback(err, data)) + * } + * )(req.session.user_id, function (err, cats) { + * if (err) { + * console.error(err); + * response.json({ status: 'error', message: err.message }); + * } else { + * response.json({ status: 'ok', message: 'Cats found', data: cats }); + * } + * }); + * }); + */ +function seq(...functions) { + var _functions = functions.map(_wrapAsync2.default); + return function (...args) { + var that = this; + + var cb = args[args.length - 1]; + if (typeof cb == 'function') { + args.pop(); + } else { + cb = (0, _promiseCallback.promiseCallback)(); + } + + (0, _reduce2.default)(_functions, args, (newargs, fn, iterCb) => { + fn.apply(that, newargs.concat((err, ...nextargs) => { + iterCb(err, nextargs); + })); + }, (err, results) => cb(err, ...results)); + + return cb[_promiseCallback.PROMISE_SYMBOL]; + }; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/series.js b/node_modules/async/series.js new file mode 100644 index 0000000..60c17ed --- /dev/null +++ b/node_modules/async/series.js @@ -0,0 +1,186 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = series; + +var _parallel2 = require('./internal/parallel.js'); + +var _parallel3 = _interopRequireDefault(_parallel2); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Run the functions in the `tasks` collection in series, each one running once + * the previous function has completed. If any functions in the series pass an + * error to its callback, no more functions are run, and `callback` is + * immediately called with the value of the error. Otherwise, `callback` + * receives an array of results when `tasks` have completed. + * + * It is also possible to use an object instead of an array. Each property will + * be run as a function, and the results will be passed to the final `callback` + * as an object instead of an array. This can be a more readable way of handling + * results from {@link async.series}. + * + * **Note** that while many implementations preserve the order of object + * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) + * explicitly states that + * + * > The mechanics and order of enumerating the properties is not specified. + * + * So if you rely on the order in which your series of functions are executed, + * and want this to work on all platforms, consider using an array. + * + * @name series + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing + * [async functions]{@link AsyncFunction} to run in series. + * Each function can complete with any number of optional `result` values. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed. This function gets a results array (or object) + * containing all the result arguments passed to the `task` callbacks. Invoked + * with (err, result). + * @return {Promise} a promise, if no callback is passed + * @example + * + * //Using Callbacks + * async.series([ + * function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 'two'); + * }, 100); + * } + * ], function(err, results) { + * console.log(results); + * // results is equal to ['one','two'] + * }); + * + * // an example using objects instead of arrays + * async.series({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }, function(err, results) { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }); + * + * //Using Promises + * async.series([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]).then(results => { + * console.log(results); + * // results is equal to ['one','two'] + * }).catch(err => { + * console.log(err); + * }); + * + * // an example using an object instead of an array + * async.series({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }).then(results => { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }).catch(err => { + * console.log(err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.series([ + * function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 'two'); + * }, 100); + * } + * ]); + * console.log(results); + * // results is equal to ['one','two'] + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // an example using an object instead of an array + * async () => { + * try { + * let results = await async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }); + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function series(tasks, callback) { + return (0, _parallel3.default)(_eachOfSeries2.default, tasks, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/setImmediate.js b/node_modules/async/setImmediate.js new file mode 100644 index 0000000..eea8677 --- /dev/null +++ b/node_modules/async/setImmediate.js @@ -0,0 +1,45 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _setImmediate = require('./internal/setImmediate.js'); + +var _setImmediate2 = _interopRequireDefault(_setImmediate); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Calls `callback` on a later loop around the event loop. In Node.js this just + * calls `setImmediate`. In the browser it will use `setImmediate` if + * available, otherwise `setTimeout(callback, 0)`, which means other higher + * priority events may precede the execution of `callback`. + * + * This is used internally for browser-compatibility purposes. + * + * @name setImmediate + * @static + * @memberOf module:Utils + * @method + * @see [async.nextTick]{@link module:Utils.nextTick} + * @category Util + * @param {Function} callback - The function to call on a later loop around + * the event loop. Invoked with (args...). + * @param {...*} args... - any number of additional arguments to pass to the + * callback on the next tick. + * @example + * + * var call_order = []; + * async.nextTick(function() { + * call_order.push('two'); + * // call_order now equals ['one','two'] + * }); + * call_order.push('one'); + * + * async.setImmediate(function (a, b, c) { + * // a, b, and c equal 1, 2, and 3 + * }, 1, 2, 3); + */ +exports.default = _setImmediate2.default; +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/some.js b/node_modules/async/some.js new file mode 100644 index 0000000..a5bd328 --- /dev/null +++ b/node_modules/async/some.js @@ -0,0 +1,122 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns `true` if at least one element in the `coll` satisfies an async test. + * If any iteratee call returns `true`, the main `callback` is immediately + * called. + * + * @name some + * @static + * @memberOf module:Collections + * @method + * @alias any + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + *); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // false + * // result is false since none of the files exists + * } + *); + * + * // Using Promises + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since some file in the list exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since none of the files exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists); + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists); + * console.log(result); + * // false + * // result is false since none of the files exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function some(coll, iteratee, callback) { + return (0, _createTester2.default)(Boolean, res => res)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(some, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/someLimit.js b/node_modules/async/someLimit.js new file mode 100644 index 0000000..3a8096f --- /dev/null +++ b/node_modules/async/someLimit.js @@ -0,0 +1,47 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time. + * + * @name someLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anyLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function someLimit(coll, limit, iteratee, callback) { + return (0, _createTester2.default)(Boolean, res => res)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(someLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/someSeries.js b/node_modules/async/someSeries.js new file mode 100644 index 0000000..51aad19 --- /dev/null +++ b/node_modules/async/someSeries.js @@ -0,0 +1,46 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time. + * + * @name someSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anySeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in series. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function someSeries(coll, iteratee, callback) { + return (0, _createTester2.default)(Boolean, res => res)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(someSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/sortBy.js b/node_modules/async/sortBy.js new file mode 100644 index 0000000..0988b61 --- /dev/null +++ b/node_modules/async/sortBy.js @@ -0,0 +1,190 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _map = require('./map.js'); + +var _map2 = _interopRequireDefault(_map); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Sorts a list by the results of running each `coll` value through an async + * `iteratee`. + * + * @name sortBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a value to use as the sort criteria as + * its `result`. + * Invoked with (item, callback). + * @param {Function} callback - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is the items + * from the original `coll` sorted by the values returned by the `iteratee` + * calls. Invoked with (err, results). + * @returns {Promise} a promise, if no callback passed + * @example + * + * // bigfile.txt is a file that is 251100 bytes in size + * // mediumfile.txt is a file that is 11000 bytes in size + * // smallfile.txt is a file that is 121 bytes in size + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes, + * function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * } + * ); + * + * // By modifying the callback parameter the + * // sorting order can be influenced: + * + * // ascending order + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], function(file, callback) { + * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) { + * if (getFileSizeErr) return callback(getFileSizeErr); + * callback(null, fileSize); + * }); + * }, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * } + * ); + * + * // descending order + * async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], function(file, callback) { + * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) { + * if (getFileSizeErr) { + * return callback(getFileSizeErr); + * } + * callback(null, fileSize * -1); + * }); + * }, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'bigfile.txt', 'mediumfile.txt', 'smallfile.txt'] + * } + * } + * ); + * + * // Error handling + * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes, + * function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(results); + * } + * } + * ); + * + * // Using Promises + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes) + * .then( results => { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * }).catch( err => { + * console.log(err); + * }); + * + * // Error handling + * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes) + * .then( results => { + * console.log(results); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * (async () => { + * try { + * let results = await async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes); + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * catch (err) { + * console.log(err); + * } + * })(); + * + * // Error handling + * async () => { + * try { + * let results = await async.sortBy(['missingfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes); + * console.log(results); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function sortBy(coll, iteratee, callback) { + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _map2.default)(coll, (x, iterCb) => { + _iteratee(x, (err, criteria) => { + if (err) return iterCb(err); + iterCb(err, { value: x, criteria }); + }); + }, (err, results) => { + if (err) return callback(err); + callback(null, results.sort(comparator).map(v => v.value)); + }); + + function comparator(left, right) { + var a = left.criteria, + b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + } +} +exports.default = (0, _awaitify2.default)(sortBy, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/timeout.js b/node_modules/async/timeout.js new file mode 100644 index 0000000..46bb233 --- /dev/null +++ b/node_modules/async/timeout.js @@ -0,0 +1,89 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = timeout; + +var _initialParams = require('./internal/initialParams.js'); + +var _initialParams2 = _interopRequireDefault(_initialParams); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Sets a time limit on an asynchronous function. If the function does not call + * its callback within the specified milliseconds, it will be called with a + * timeout error. The code property for the error object will be `'ETIMEDOUT'`. + * + * @name timeout + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} asyncFn - The async function to limit in time. + * @param {number} milliseconds - The specified time limit. + * @param {*} [info] - Any variable you want attached (`string`, `object`, etc) + * to timeout Error for more information.. + * @returns {AsyncFunction} Returns a wrapped function that can be used with any + * of the control flow functions. + * Invoke this function with the same parameters as you would `asyncFunc`. + * @example + * + * function myFunction(foo, callback) { + * doAsyncTask(foo, function(err, data) { + * // handle errors + * if (err) return callback(err); + * + * // do some stuff ... + * + * // return processed data + * return callback(null, data); + * }); + * } + * + * var wrapped = async.timeout(myFunction, 1000); + * + * // call `wrapped` as you would `myFunction` + * wrapped({ bar: 'bar' }, function(err, data) { + * // if `myFunction` takes < 1000 ms to execute, `err` + * // and `data` will have their expected values + * + * // else `err` will be an Error with the code 'ETIMEDOUT' + * }); + */ +function timeout(asyncFn, milliseconds, info) { + var fn = (0, _wrapAsync2.default)(asyncFn); + + return (0, _initialParams2.default)((args, callback) => { + var timedOut = false; + var timer; + + function timeoutCallback() { + var name = asyncFn.name || 'anonymous'; + var error = new Error('Callback function "' + name + '" timed out.'); + error.code = 'ETIMEDOUT'; + if (info) { + error.info = info; + } + timedOut = true; + callback(error); + } + + args.push((...cbArgs) => { + if (!timedOut) { + callback(...cbArgs); + clearTimeout(timer); + } + }); + + // setup timer and call original function + timer = setTimeout(timeoutCallback, milliseconds); + fn(...args); + }); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/times.js b/node_modules/async/times.js new file mode 100644 index 0000000..ca7df51 --- /dev/null +++ b/node_modules/async/times.js @@ -0,0 +1,50 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = times; + +var _timesLimit = require('./timesLimit.js'); + +var _timesLimit2 = _interopRequireDefault(_timesLimit); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Calls the `iteratee` function `n` times, and accumulates results in the same + * manner you would use with [map]{@link module:Collections.map}. + * + * @name times + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.map]{@link module:Collections.map} + * @category Control Flow + * @param {number} n - The number of times to run the function. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see {@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + * @example + * + * // Pretend this is some complicated async factory + * var createUser = function(id, callback) { + * callback(null, { + * id: 'user' + id + * }); + * }; + * + * // generate 5 users + * async.times(5, function(n, next) { + * createUser(n, function(err, user) { + * next(err, user); + * }); + * }, function(err, users) { + * // we should now have 5 users + * }); + */ +function times(n, iteratee, callback) { + return (0, _timesLimit2.default)(n, Infinity, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/timesLimit.js b/node_modules/async/timesLimit.js new file mode 100644 index 0000000..f76de25 --- /dev/null +++ b/node_modules/async/timesLimit.js @@ -0,0 +1,43 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = timesLimit; + +var _mapLimit = require('./mapLimit.js'); + +var _mapLimit2 = _interopRequireDefault(_mapLimit); + +var _range = require('./internal/range.js'); + +var _range2 = _interopRequireDefault(_range); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [times]{@link module:ControlFlow.times} but runs a maximum of `limit` async operations at a + * time. + * + * @name timesLimit + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.times]{@link module:ControlFlow.times} + * @category Control Flow + * @param {number} count - The number of times to run the function. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see [async.map]{@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + */ +function timesLimit(count, limit, iteratee, callback) { + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _mapLimit2.default)((0, _range2.default)(count), limit, _iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/timesSeries.js b/node_modules/async/timesSeries.js new file mode 100644 index 0000000..776b4f3 --- /dev/null +++ b/node_modules/async/timesSeries.js @@ -0,0 +1,32 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = timesSeries; + +var _timesLimit = require('./timesLimit.js'); + +var _timesLimit2 = _interopRequireDefault(_timesLimit); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [times]{@link module:ControlFlow.times} but runs only a single async operation at a time. + * + * @name timesSeries + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.times]{@link module:ControlFlow.times} + * @category Control Flow + * @param {number} n - The number of times to run the function. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see {@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + */ +function timesSeries(n, iteratee, callback) { + return (0, _timesLimit2.default)(n, 1, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/transform.js b/node_modules/async/transform.js new file mode 100644 index 0000000..75dadea --- /dev/null +++ b/node_modules/async/transform.js @@ -0,0 +1,173 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = transform; + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _promiseCallback = require('./internal/promiseCallback.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * A relative of `reduce`. Takes an Object or Array, and iterates over each + * element in parallel, each step potentially mutating an `accumulator` value. + * The type of the accumulator defaults to the type of collection passed in. + * + * @name transform + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} [accumulator] - The initial state of the transform. If omitted, + * it will default to an empty Object or Array, depending on the type of `coll` + * @param {AsyncFunction} iteratee - A function applied to each item in the + * collection that potentially modifies the accumulator. + * Invoked with (accumulator, item, key, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the transformed accumulator. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * + * // helper function that returns human-readable size format from bytes + * function formatBytes(bytes, decimals = 2) { + * // implementation not included for brevity + * return humanReadbleFilesize; + * } + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * + * // asynchronous function that returns the file size, transformed to human-readable format + * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc. + * function transformFileSize(acc, value, key, callback) { + * fs.stat(value, function(err, stat) { + * if (err) { + * return callback(err); + * } + * acc[key] = formatBytes(stat.size); + * callback(null); + * }); + * } + * + * // Using callbacks + * async.transform(fileList, transformFileSize, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * } + * }); + * + * // Using Promises + * async.transform(fileList, transformFileSize) + * .then(result => { + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * (async () => { + * try { + * let result = await async.transform(fileList, transformFileSize); + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * } + * catch (err) { + * console.log(err); + * } + * })(); + * + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * + * // helper function that returns human-readable size format from bytes + * function formatBytes(bytes, decimals = 2) { + * // implementation not included for brevity + * return humanReadbleFilesize; + * } + * + * const fileMap = { f1: 'file1.txt', f2: 'file2.txt', f3: 'file3.txt' }; + * + * // asynchronous function that returns the file size, transformed to human-readable format + * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc. + * function transformFileSize(acc, value, key, callback) { + * fs.stat(value, function(err, stat) { + * if (err) { + * return callback(err); + * } + * acc[key] = formatBytes(stat.size); + * callback(null); + * }); + * } + * + * // Using callbacks + * async.transform(fileMap, transformFileSize, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * } + * }); + * + * // Using Promises + * async.transform(fileMap, transformFileSize) + * .then(result => { + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.transform(fileMap, transformFileSize); + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function transform(coll, accumulator, iteratee, callback) { + if (arguments.length <= 3 && typeof accumulator === 'function') { + callback = iteratee; + iteratee = accumulator; + accumulator = Array.isArray(coll) ? [] : {}; + } + callback = (0, _once2.default)(callback || (0, _promiseCallback.promiseCallback)()); + var _iteratee = (0, _wrapAsync2.default)(iteratee); + + (0, _eachOf2.default)(coll, (v, k, cb) => { + _iteratee(accumulator, v, k, cb); + }, err => callback(err, accumulator)); + return callback[_promiseCallback.PROMISE_SYMBOL]; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/tryEach.js b/node_modules/async/tryEach.js new file mode 100644 index 0000000..7e63f9d --- /dev/null +++ b/node_modules/async/tryEach.js @@ -0,0 +1,78 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachSeries = require('./eachSeries.js'); + +var _eachSeries2 = _interopRequireDefault(_eachSeries); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * It runs each task in series but stops whenever any of the functions were + * successful. If one of the tasks were successful, the `callback` will be + * passed the result of the successful task. If all tasks fail, the callback + * will be passed the error and result (if any) of the final attempt. + * + * @name tryEach + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing functions to + * run, each function is passed a `callback(err, result)` it must call on + * completion with an error `err` (which can be `null`) and an optional `result` + * value. + * @param {Function} [callback] - An optional callback which is called when one + * of the tasks has succeeded, or all have failed. It receives the `err` and + * `result` arguments of the last attempt at completing the `task`. Invoked with + * (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * async.tryEach([ + * function getDataFromFirstWebsite(callback) { + * // Try getting the data from the first website + * callback(err, data); + * }, + * function getDataFromSecondWebsite(callback) { + * // First website failed, + * // Try getting the data from the backup website + * callback(err, data); + * } + * ], + * // optional callback + * function(err, results) { + * Now do something with the data. + * }); + * + */ +function tryEach(tasks, callback) { + var error = null; + var result; + return (0, _eachSeries2.default)(tasks, (task, taskCb) => { + (0, _wrapAsync2.default)(task)((err, ...args) => { + if (err === false) return taskCb(err); + + if (args.length < 2) { + [result] = args; + } else { + result = args; + } + error = err; + taskCb(err ? null : {}); + }); + }, () => callback(error, result)); +} + +exports.default = (0, _awaitify2.default)(tryEach); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/unmemoize.js b/node_modules/async/unmemoize.js new file mode 100644 index 0000000..badd7ae --- /dev/null +++ b/node_modules/async/unmemoize.js @@ -0,0 +1,25 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = unmemoize; +/** + * Undoes a [memoize]{@link module:Utils.memoize}d function, reverting it to the original, + * unmemoized form. Handy for testing. + * + * @name unmemoize + * @static + * @memberOf module:Utils + * @method + * @see [async.memoize]{@link module:Utils.memoize} + * @category Util + * @param {AsyncFunction} fn - the memoized function + * @returns {AsyncFunction} a function that calls the original unmemoized function + */ +function unmemoize(fn) { + return (...args) => { + return (fn.unmemoized || fn)(...args); + }; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/until.js b/node_modules/async/until.js new file mode 100644 index 0000000..4b69b97 --- /dev/null +++ b/node_modules/async/until.js @@ -0,0 +1,61 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = until; + +var _whilst = require('./whilst.js'); + +var _whilst2 = _interopRequireDefault(_whilst); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. `callback` will be passed an error and any + * arguments passed to the final `iteratee`'s callback. + * + * The inverse of [whilst]{@link module:ControlFlow.whilst}. + * + * @name until + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if a callback is not passed + * + * @example + * const results = [] + * let finished = false + * async.until(function test(cb) { + * cb(null, finished) + * }, function iter(next) { + * fetchPage(url, (err, body) => { + * if (err) return next(err) + * results = results.concat(body.objects) + * finished = !!body.next + * next(err) + * }) + * }, function done (err) { + * // all pages have been fetched + * }) + */ +function until(test, iteratee, callback) { + const _test = (0, _wrapAsync2.default)(test); + return (0, _whilst2.default)(cb => _test((err, truth) => cb(err, !truth)), iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/waterfall.js b/node_modules/async/waterfall.js new file mode 100644 index 0000000..c3242f7 --- /dev/null +++ b/node_modules/async/waterfall.js @@ -0,0 +1,105 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Runs the `tasks` array of functions in series, each passing their results to + * the next in the array. However, if any of the `tasks` pass an error to their + * own callback, the next function is not executed, and the main `callback` is + * immediately called with the error. + * + * @name waterfall + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array} tasks - An array of [async functions]{@link AsyncFunction} + * to run. + * Each function should complete with any number of `result` values. + * The `result` values will be passed as arguments, in order, to the next task. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed. This will be passed the results of the last task's + * callback. Invoked with (err, [results]). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * async.waterfall([ + * function(callback) { + * callback(null, 'one', 'two'); + * }, + * function(arg1, arg2, callback) { + * // arg1 now equals 'one' and arg2 now equals 'two' + * callback(null, 'three'); + * }, + * function(arg1, callback) { + * // arg1 now equals 'three' + * callback(null, 'done'); + * } + * ], function (err, result) { + * // result now equals 'done' + * }); + * + * // Or, with named functions: + * async.waterfall([ + * myFirstFunction, + * mySecondFunction, + * myLastFunction, + * ], function (err, result) { + * // result now equals 'done' + * }); + * function myFirstFunction(callback) { + * callback(null, 'one', 'two'); + * } + * function mySecondFunction(arg1, arg2, callback) { + * // arg1 now equals 'one' and arg2 now equals 'two' + * callback(null, 'three'); + * } + * function myLastFunction(arg1, callback) { + * // arg1 now equals 'three' + * callback(null, 'done'); + * } + */ +function waterfall(tasks, callback) { + callback = (0, _once2.default)(callback); + if (!Array.isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions')); + if (!tasks.length) return callback(); + var taskIndex = 0; + + function nextTask(args) { + var task = (0, _wrapAsync2.default)(tasks[taskIndex++]); + task(...args, (0, _onlyOnce2.default)(next)); + } + + function next(err, ...args) { + if (err === false) return; + if (err || taskIndex === tasks.length) { + return callback(err, ...args); + } + nextTask(args); + } + + nextTask([]); +} + +exports.default = (0, _awaitify2.default)(waterfall); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/whilst.js b/node_modules/async/whilst.js new file mode 100644 index 0000000..4165543 --- /dev/null +++ b/node_modules/async/whilst.js @@ -0,0 +1,78 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. + * + * @name whilst + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` passes. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + * @example + * + * var count = 0; + * async.whilst( + * function test(cb) { cb(null, count < 5); }, + * function iter(callback) { + * count++; + * setTimeout(function() { + * callback(null, count); + * }, 1000); + * }, + * function (err, n) { + * // 5 seconds have passed, n = 5 + * } + * ); + */ +function whilst(test, iteratee, callback) { + callback = (0, _onlyOnce2.default)(callback); + var _fn = (0, _wrapAsync2.default)(iteratee); + var _test = (0, _wrapAsync2.default)(test); + var results = []; + + function next(err, ...rest) { + if (err) return callback(err); + results = rest; + if (err === false) return; + _test(check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return _test(check); +} +exports.default = (0, _awaitify2.default)(whilst, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/wrapSync.js b/node_modules/async/wrapSync.js new file mode 100644 index 0000000..ddc3f02 --- /dev/null +++ b/node_modules/async/wrapSync.js @@ -0,0 +1,118 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = asyncify; + +var _initialParams = require('./internal/initialParams.js'); + +var _initialParams2 = _interopRequireDefault(_initialParams); + +var _setImmediate = require('./internal/setImmediate.js'); + +var _setImmediate2 = _interopRequireDefault(_setImmediate); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Take a sync function and make it async, passing its return value to a + * callback. This is useful for plugging sync functions into a waterfall, + * series, or other async functions. Any arguments passed to the generated + * function will be passed to the wrapped function (except for the final + * callback argument). Errors thrown will be passed to the callback. + * + * If the function passed to `asyncify` returns a Promise, that promises's + * resolved/rejected state will be used to call the callback, rather than simply + * the synchronous return value. + * + * This also means you can asyncify ES2017 `async` functions. + * + * @name asyncify + * @static + * @memberOf module:Utils + * @method + * @alias wrapSync + * @category Util + * @param {Function} func - The synchronous function, or Promise-returning + * function to convert to an {@link AsyncFunction}. + * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be + * invoked with `(args..., callback)`. + * @example + * + * // passing a regular synchronous function + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(JSON.parse), + * function (data, next) { + * // data is the result of parsing the text. + * // If there was a parsing error, it would have been caught. + * } + * ], callback); + * + * // passing a function returning a promise + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(function (contents) { + * return db.model.create(contents); + * }), + * function (model, next) { + * // `model` is the instantiated model object. + * // If there was an error, this function would be skipped. + * } + * ], callback); + * + * // es2017 example, though `asyncify` is not needed if your JS environment + * // supports async functions out of the box + * var q = async.queue(async.asyncify(async function(file) { + * var intermediateStep = await processFile(file); + * return await somePromise(intermediateStep) + * })); + * + * q.push(files); + */ +function asyncify(func) { + if ((0, _wrapAsync.isAsync)(func)) { + return function (...args /*, callback*/) { + const callback = args.pop(); + const promise = func.apply(this, args); + return handlePromise(promise, callback); + }; + } + + return (0, _initialParams2.default)(function (args, callback) { + var result; + try { + result = func.apply(this, args); + } catch (e) { + return callback(e); + } + // if result is Promise object + if (result && typeof result.then === 'function') { + return handlePromise(result, callback); + } else { + callback(null, result); + } + }); +} + +function handlePromise(promise, callback) { + return promise.then(value => { + invokeCallback(callback, null, value); + }, err => { + invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err)); + }); +} + +function invokeCallback(callback, error, value) { + try { + callback(error, value); + } catch (err) { + (0, _setImmediate2.default)(e => { + throw e; + }, err); + } +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/bowser/.editorconfig b/node_modules/bowser/.editorconfig new file mode 100644 index 0000000..a11eb44 --- /dev/null +++ b/node_modules/bowser/.editorconfig @@ -0,0 +1,17 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true + +[{*.js,*.md}] +charset = utf-8 +indent_style = space +indent_size = 2 + +[Makefile] +indent_style = tab + +[{package.json,.travis.yml}] +indent_style = space +indent_size = 2 diff --git a/node_modules/bowser/.idea/.name b/node_modules/bowser/.idea/.name new file mode 100644 index 0000000..3e2e403 --- /dev/null +++ b/node_modules/bowser/.idea/.name @@ -0,0 +1 @@ +bowser \ No newline at end of file diff --git a/node_modules/bowser/.idea/bowser.iml b/node_modules/bowser/.idea/bowser.iml new file mode 100644 index 0000000..c956989 --- /dev/null +++ b/node_modules/bowser/.idea/bowser.iml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="WEB_MODULE" version="4"> + <component name="NewModuleRootManager"> + <content url="file://$MODULE_DIR$" /> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module> \ No newline at end of file diff --git a/node_modules/bowser/.idea/encodings.xml b/node_modules/bowser/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/node_modules/bowser/.idea/encodings.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="Encoding"> + <file url="PROJECT" charset="UTF-8" /> + </component> +</project> \ No newline at end of file diff --git a/node_modules/bowser/.idea/inspectionProfiles/Project_Default.xml b/node_modules/bowser/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..c6cc8c8 --- /dev/null +++ b/node_modules/bowser/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ +<component name="InspectionProjectProfileManager"> + <profile version="1.0"> + <option name="myName" value="Project Default" /> + <inspection_tool class="Eslint" enabled="true" level="ERROR" enabled_by_default="true" /> + </profile> +</component> \ No newline at end of file diff --git a/node_modules/bowser/.idea/jsLibraryMappings.xml b/node_modules/bowser/.idea/jsLibraryMappings.xml new file mode 100644 index 0000000..9bd3e33 --- /dev/null +++ b/node_modules/bowser/.idea/jsLibraryMappings.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="JavaScriptLibraryMappings"> + <includedPredefinedLibrary name="ECMAScript 6" /> + <excludedPredefinedLibrary name="HTML" /> + <excludedPredefinedLibrary name="bowser/node_modules" /> + </component> +</project> \ No newline at end of file diff --git a/node_modules/bowser/.idea/markdown-exported-files.xml b/node_modules/bowser/.idea/markdown-exported-files.xml new file mode 100644 index 0000000..5d1f129 --- /dev/null +++ b/node_modules/bowser/.idea/markdown-exported-files.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="MarkdownExportedFiles"> + <htmlFiles /> + <imageFiles /> + <otherFiles /> + </component> +</project> \ No newline at end of file diff --git a/node_modules/bowser/.idea/markdown-navigator.xml b/node_modules/bowser/.idea/markdown-navigator.xml new file mode 100644 index 0000000..05e6c4b --- /dev/null +++ b/node_modules/bowser/.idea/markdown-navigator.xml @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="MarkdownProjectSettings"> + <PreviewSettings splitEditorLayout="FIRST" splitEditorPreview="NONE" useGrayscaleRendering="false" zoomFactor="1.0" maxImageWidth="0" showGitHubPageIfSynced="false" allowBrowsingInPreview="false" synchronizePreviewPosition="true" highlightPreviewType="LINE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true"> + <PanelProvider> + <provider providerId="com.vladsch.idea.multimarkdown.editor.javafx.html.panel" providerName="JavaFX WebView" /> + </PanelProvider> + </PreviewSettings> + <ParserSettings> + <PegdownExtensions> + <option name="ABBREVIATIONS" value="false" /> + <option name="ANCHORLINKS" value="true" /> + <option name="ATXHEADERSPACE" value="false" /> + <option name="AUTOLINKS" value="true" /> + <option name="DEFINITIONS" value="true" /> + <option name="FENCED_CODE_BLOCKS" value="true" /> + <option name="FOOTNOTES" value="false" /> + <option name="FORCELISTITEMPARA" value="false" /> + <option name="HARDWRAPS" value="true" /> + <option name="QUOTES" value="false" /> + <option name="RELAXEDHRULES" value="true" /> + <option name="SMARTS" value="false" /> + <option name="STRIKETHROUGH" value="true" /> + <option name="SUPPRESS_HTML_BLOCKS" value="false" /> + <option name="SUPPRESS_INLINE_HTML" value="false" /> + <option name="TABLES" value="true" /> + <option name="TASKLISTITEMS" value="true" /> + <option name="TOC" value="false" /> + <option name="TRACE_PARSER" value="false" /> + <option name="WIKILINKS" value="true" /> + </PegdownExtensions> + <ParserOptions> + <option name="COMMONMARK_LISTS" value="false" /> + <option name="DUMMY" value="false" /> + <option name="EMOJI_SHORTCUTS" value="false" /> + <option name="FLEXMARK_FRONT_MATTER" value="false" /> + <option name="GFM_TABLE_RENDERING" value="true" /> + <option name="GITBOOK_URL_ENCODING" value="false" /> + <option name="GITHUB_EMOJI_URL" value="false" /> + <option name="GITHUB_LISTS" value="false" /> + <option name="GITHUB_WIKI_LINKS" value="true" /> + <option name="JEKYLL_FRONT_MATTER" value="false" /> + <option name="SIM_TOC_BLANK_LINE_SPACER" value="false" /> + </ParserOptions> + </ParserSettings> + <HtmlSettings headerTopEnabled="false" headerBottomEnabled="false" bodyTopEnabled="false" bodyBottomEnabled="false" embedUrlContent="false" addPageHeader="true"> + <GeneratorProvider> + <provider providerId="com.vladsch.idea.multimarkdown.editor.javafx.html.generator" providerName="JavaFx HTML Generator" /> + </GeneratorProvider> + <headerTop /> + <headerBottom /> + <bodyTop /> + <bodyBottom /> + </HtmlSettings> + <CssSettings previewScheme="UI_SCHEME" cssUri="" isCssUriEnabled="false" isCssTextEnabled="false" isDynamicPageWidth="true"> + <StylesheetProvider> + <provider providerId="com.vladsch.idea.multimarkdown.editor.javafx.html.css" providerName="Default JavaFx Stylesheet" /> + </StylesheetProvider> + <ScriptProviders /> + <cssText /> + </CssSettings> + <HtmlExportSettings updateOnSave="false" parentDir="$ProjectFileDir$" targetDir="$ProjectFileDir$" cssDir="" scriptDir="" plainHtml="false" imageDir="" copyLinkedImages="false" imageUniquifyType="0" targetExt="" useTargetExt="false" noCssNoScripts="false" linkToExportedHtml="true" exportOnSettingsChange="true" regenerateOnProjectOpen="false" /> + <LinkMapSettings> + <textMaps /> + </LinkMapSettings> + </component> +</project> \ No newline at end of file diff --git a/node_modules/bowser/.idea/markdown-navigator/profiles_settings.xml b/node_modules/bowser/.idea/markdown-navigator/profiles_settings.xml new file mode 100644 index 0000000..57927c5 --- /dev/null +++ b/node_modules/bowser/.idea/markdown-navigator/profiles_settings.xml @@ -0,0 +1,3 @@ +<component name="MarkdownNavigator.ProfileManager"> + <settings default="" pdf-export="" /> +</component> \ No newline at end of file diff --git a/node_modules/bowser/.idea/misc.xml b/node_modules/bowser/.idea/misc.xml new file mode 100644 index 0000000..28a804d --- /dev/null +++ b/node_modules/bowser/.idea/misc.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="JavaScriptSettings"> + <option name="languageLevel" value="ES6" /> + </component> +</project> \ No newline at end of file diff --git a/node_modules/bowser/.idea/modules.xml b/node_modules/bowser/.idea/modules.xml new file mode 100644 index 0000000..d90ae6d --- /dev/null +++ b/node_modules/bowser/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/.idea/bowser.iml" filepath="$PROJECT_DIR$/.idea/bowser.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/node_modules/bowser/.idea/vcs.xml b/node_modules/bowser/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/node_modules/bowser/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="$PROJECT_DIR$" vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/node_modules/bowser/.idea/watcherTasks.xml b/node_modules/bowser/.idea/watcherTasks.xml new file mode 100644 index 0000000..9338ba6 --- /dev/null +++ b/node_modules/bowser/.idea/watcherTasks.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectTasksOptions" suppressed-tasks="Babel" /> +</project> \ No newline at end of file diff --git a/node_modules/bowser/.idea/workspace.xml b/node_modules/bowser/.idea/workspace.xml new file mode 100644 index 0000000..06355d4 --- /dev/null +++ b/node_modules/bowser/.idea/workspace.xml @@ -0,0 +1,696 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ChangeListManager"> + <list default="true" id="e5d5968a-8f20-496e-9038-3ca60f9ade67" name="Default" comment="" /> + <ignored path="bowser.iws" /> + <ignored path=".idea/workspace.xml" /> + <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> + <option name="TRACKING_ENABLED" value="true" /> + <option name="SHOW_DIALOG" value="false" /> + <option name="HIGHLIGHT_CONFLICTS" value="true" /> + <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> + <option name="LAST_RESOLUTION" value="IGNORE" /> + </component> + <component name="CreatePatchCommitExecutor"> + <option name="PATCH_PATH" value="" /> + </component> + <component name="FavoritesManager"> + <favorites_list name="bowser" /> + </component> + <component name="FileEditorManager"> + <leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> + <file leaf-file-name="package.json" pinned="false" current-in-tab="true"> + <entry file="file://$PROJECT_DIR$/package.json"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="34"> + <caret line="2" column="19" selection-start-line="2" selection-start-column="19" selection-end-line="2" selection-end-column="19" /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="bowser.js" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/src/bowser.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="17"> + <caret line="506" column="5" selection-start-line="506" selection-start-column="5" selection-end-line="506" selection-end-column="5" /> + </state> + </provider> + </entry> + </file> + </leaf> + </component> + <component name="FindInProjectRecents"> + <findStrings> + <find>chromium: true</find> + <find>flag</find> + <find>msedge</find> + <find>edge</find> + <find>Mozilla/5.0 (Linux; Android 8.0; Pixel XL Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.0 Mobile Safari/537.36 EdgA/41.1.35.1</find> + <find>version: ""</find> + <find>Mozilla/5.0 (iPod touch; CPU iPhone OS 9_3_4 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) OPiOS/14.0.0.104835 Mobile/13G35 Safari/9537.53</find> + <find>undefi</find> + <find>ios</find> + <find>mobi</find> + <find>husky</find> + <find>safari</find> + <find>w</find> + <find>x</find> + <find>tablet</find> + <find>we</find> + <find>webos</find> + <find>parse</find> + <find>parseBrowser</find> + <find>@priva</find> + <find>parsedResult</find> + <find>Parser</find> + <find>spy</find> + <find>ge</find> + <find>parseEngine</find> + <find>engin</find> + <find>ava</find> + <find>getWindowsVersionName</find> + <find>android</find> + <find>_parsed</find> + </findStrings> + <replaceStrings> + <replace>descript</replace> + <replace>describe</replace> + <replace>(\d+(\.?_?\d+)+)</replace> + </replaceStrings> + </component> + <component name="Git.Settings"> + <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> + </component> + <component name="IdeDocumentHistory"> + <option name="CHANGED_PATHS"> + <list> + <option value="$PROJECT_DIR$/.editorconfig" /> + <option value="$PROJECT_DIR$/src/copyright.js" /> + <option value="$PROJECT_DIR$/make/build.js" /> + <option value="$PROJECT_DIR$/ISSUE_TEMPLATE.md" /> + <option value="$PROJECT_DIR$/.testem.json" /> + <option value="$PROJECT_DIR$/transpile-json-to-yaml.js" /> + <option value="$PROJECT_DIR$/src/parser-enignes.js" /> + <option value="$PROJECT_DIR$/src/parser-engines.js" /> + <option value="$PROJECT_DIR$/convert-old-json-to-yaml.js" /> + <option value="$PROJECT_DIR$/src/parsed-object.js" /> + <option value="$PROJECT_DIR$/useragentstrings.yml" /> + <option value="$PROJECT_DIR$/helpers/convert-old-json-to-yaml.js" /> + <option value="$PROJECT_DIR$/test/test.js" /> + <option value="$PROJECT_DIR$/README.md" /> + <option value="$PROJECT_DIR$/test/acceptance/useragentstrings.yml" /> + <option value="$PROJECT_DIR$/src/parser-platforms.js" /> + <option value="$PROJECT_DIR$/.eslintignore" /> + <option value="$PROJECT_DIR$/.eslintrc.yml" /> + <option value="$PROJECT_DIR$/src/parser-browsers.js" /> + <option value="$PROJECT_DIR$/src/new-bowser.js" /> + <option value="$PROJECT_DIR$/typings.d.ts" /> + <option value="$PROJECT_DIR$/test/acceptance/test-list-of-ua.js" /> + <option value="$PROJECT_DIR$/bower.json" /> + <option value="$PROJECT_DIR$/src/useragents.js" /> + <option value="$PROJECT_DIR$/CHANGELOG.md" /> + <option value="$PROJECT_DIR$/test/unit/parser.js" /> + <option value="$PROJECT_DIR$/test/unit/bowser.js" /> + <option value="$PROJECT_DIR$/.coveralls.yml" /> + <option value="$PROJECT_DIR$/.travis.yml" /> + <option value="$PROJECT_DIR$/.npmignore" /> + <option value="$PROJECT_DIR$/.gitignore" /> + <option value="$PROJECT_DIR$/package.json" /> + <option value="$PROJECT_DIR$/src/bowser.js" /> + <option value="$PROJECT_DIR$/.nycrc" /> + <option value="$PROJECT_DIR$/.babelrc" /> + <option value="$PROJECT_DIR$/src/utils.js" /> + <option value="$PROJECT_DIR$/src/parser-os.js" /> + <option value="$PROJECT_DIR$/test/unit/utils.js" /> + <option value="$PROJECT_DIR$/src/parser.js" /> + </list> + </option> + </component> + <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" /> + <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER"> + <package-json value="$PROJECT_DIR$/package.json" /> + </component> + <component name="JsFlowSettings"> + <service-enabled>true</service-enabled> + <exe-path /> + <other-services-enabled>true</other-services-enabled> + <auto-save>true</auto-save> + </component> + <component name="JsGulpfileManager"> + <detection-done>true</detection-done> + <sorting>DEFINITION_ORDER</sorting> + </component> + <component name="NodeModulesDirectoryManager"> + <handled-path value="$PROJECT_DIR$/node_modules" /> + </component> + <component name="NodePackageJsonFileManager"> + <packageJsonPaths> + <path value="$PROJECT_DIR$/package.json" /> + </packageJsonPaths> + </component> + <component name="ProjectFrameBounds"> + <option name="y" value="22" /> + <option name="width" value="1920" /> + <option name="height" value="1058" /> + </component> + <component name="ProjectView"> + <navigator proportions="" version="1"> + <autoscrollFromSource ProjectPane="true" /> + <foldersAlwaysOnTop value="true" /> + </navigator> + <panes> + <pane id="Scope" /> + <pane id="ProjectPane"> + <subPane> + <expand> + <path> + <item name="bowser" type="b2602c69:ProjectViewProjectNode" /> + <item name="bowser" type="462c0819:PsiDirectoryNode" /> + </path> + <path> + <item name="bowser" type="b2602c69:ProjectViewProjectNode" /> + <item name="bowser" type="462c0819:PsiDirectoryNode" /> + <item name="src" type="462c0819:PsiDirectoryNode" /> + </path> + </expand> + <select /> + </subPane> + </pane> + </panes> + </component> + <component name="PropertiesComponent"> + <property name="HbShouldOpenHtmlAsHb" value="" /> + <property name="JavaScriptWeakerCompletionTypeGuess" value="true" /> + <property name="SearchEverywhereHistoryKey" value="plat FILE file:///Users/lancedikson/Projects/github/bowser/src/parser-platforms.js" /> + <property name="WebServerToolWindowFactoryState" value="false" /> + <property name="editor.config.accepted" value="true" /> + <property name="javascript.nodejs.core.library.configured.version" value="4.4.7" /> + <property name="js-jscs-nodeInterpreter" value="$USER_HOME$/.nvm/versions/node/v4.2.4/bin/node" /> + <property name="last_opened_file_path" value="$PROJECT_DIR$" /> + <property name="node.js.detected.package.eslint" value="true" /> + <property name="node.js.detected.package.standard" value="true" /> + <property name="node.js.path.for.package.eslint" value="node" /> + <property name="node.js.path.for.package.standard" value="node" /> + <property name="node.js.selected.package.eslint" value="$PROJECT_DIR$/node_modules/eslint" /> + <property name="node.js.selected.package.standard" value="$PROJECT_DIR$/node_modules/eslint" /> + <property name="nodejs.mocha.mocha_node_package_dir" value="$PROJECT_DIR$/node_modules/mocha" /> + <property name="nodejs_interpreter_path" value="node" /> + <property name="nodejs_package_manager_path" value="npm" /> + <property name="settings.editor.selected.configurable" value="coverage" /> + </component> + <component name="RecentsManager"> + <key name="MoveFile.RECENT_KEYS"> + <recent name="$PROJECT_DIR$/test/acceptance" /> + <recent name="$PROJECT_DIR$/helpers" /> + <recent name="$PROJECT_DIR$" /> + </key> + </component> + <component name="RunDashboard"> + <option name="ruleStates"> + <list> + <RuleState> + <option name="name" value="ConfigurationTypeDashboardGroupingRule" /> + </RuleState> + <RuleState> + <option name="name" value="StatusDashboardGroupingRule" /> + </RuleState> + </list> + </option> + </component> + <component name="RunManager" selected="Node.js.watch tests"> + <configuration name="Unnamed" type="ChromiumRemoteDebugType" factoryName="Chromium Remote" port="9229" isV8Legacy="true" /> + <configuration name="watch tests" type="NodeJSConfigurationType" factoryName="Node.js" application-parameters="--verbose" path-to-node="/usr/local/Cellar/node/7.8.0/bin/node" path-to-js-file="node_modules/.bin/ava" working-dir="$PROJECT_DIR$"> + <EXTENSION ID="com.jetbrains.nodejs.run.NodeJSProfilingRunConfigurationExtension"> + <profiling v8-profiler-path="$USER_HOME$/.nvm/versions/node/v4.4.7/lib/node_modules/v8-profiler" /> + </EXTENSION> + </configuration> + <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js"> + <node-interpreter>project</node-interpreter> + <node-options /> + <gulpfile /> + <tasks /> + <arguments /> + <envs /> + </configuration> + <configuration name="test" type="js.build_tools.npm" factoryName="npm"> + <package-json value="$PROJECT_DIR$/package.json" /> + <command value="run" /> + <scripts> + <script value="test" /> + </scripts> + <arguments value="--inspect-brk" /> + <node-interpreter value="/usr/local/Cellar/node/7.8.0/bin/node" /> + <envs /> + </configuration> + <configuration default="true" type="mocha-javascript-test-runner" factoryName="Mocha"> + <node-interpreter>$USER_HOME$/.nvm/versions/node/v4.2.4/bin/node</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>DIRECTORY</test-kind> + <test-directory /> + <recursive>false</recursive> + </configuration> + <list> + <item itemvalue="Attach to Node.js/Chrome.Unnamed" /> + <item itemvalue="Node.js.watch tests" /> + <item itemvalue="npm.test" /> + </list> + </component> + <component name="SvnConfiguration"> + <configuration /> + </component> + <component name="TaskManager"> + <task active="true" id="Default" summary="Default task"> + <changelist id="e5d5968a-8f20-496e-9038-3ca60f9ade67" name="Default" comment="" /> + <created>1460663203148</created> + <option name="number" value="Default" /> + <option name="presentableId" value="Default" /> + <updated>1460663203148</updated> + <workItem from="1467903205339" duration="2348000" /> + <workItem from="1469530933856" duration="577000" /> + <workItem from="1469613736440" duration="843000" /> + <workItem from="1470856356825" duration="1760000" /> + <workItem from="1471694116386" duration="3831000" /> + <workItem from="1472504254866" duration="2038000" /> + <workItem from="1472506362075" duration="69000" /> + <workItem from="1472594666841" duration="2699000" /> + <workItem from="1472640870661" duration="1938000" /> + <workItem from="1472806795867" duration="910000" /> + <workItem from="1474185796367" duration="13000" /> + <workItem from="1474188003327" duration="3018000" /> + <workItem from="1474314087540" duration="1938000" /> + <workItem from="1474359763987" duration="11000" /> + <workItem from="1474916352416" duration="284000" /> + <workItem from="1475653755459" duration="30000" /> + <workItem from="1477903203162" duration="2196000" /> + <workItem from="1478186752996" duration="320000" /> + <workItem from="1478187077648" duration="1126000" /> + <workItem from="1478298430363" duration="2567000" /> + <workItem from="1480969963547" duration="957000" /> + <workItem from="1482500551547" duration="211000" /> + <workItem from="1482503774910" duration="735000" /> + <workItem from="1483826622613" duration="503000" /> + <workItem from="1485119874288" duration="3226000" /> + <workItem from="1490357099078" duration="447000" /> + <workItem from="1490993891079" duration="6576000" /> + <workItem from="1491136107895" duration="7722000" /> + <workItem from="1491239706765" duration="714000" /> + <workItem from="1491249803179" duration="1984000" /> + <workItem from="1491336207678" duration="1618000" /> + <workItem from="1491674896468" duration="1676000" /> + <workItem from="1491725583169" duration="20809000" /> + <workItem from="1491825357873" duration="935000" /> + <workItem from="1491858641932" duration="606000" /> + <workItem from="1491933288606" duration="2000" /> + <workItem from="1491935322145" duration="643000" /> + <workItem from="1491936995311" duration="2957000" /> + <workItem from="1492110236327" duration="1850000" /> + <workItem from="1492272289300" duration="985000" /> + <workItem from="1492276168333" duration="10503000" /> + <workItem from="1493559521213" duration="367000" /> + <workItem from="1493573087749" duration="12000" /> + <workItem from="1493573143412" duration="671000" /> + <workItem from="1493712648190" duration="26000" /> + <workItem from="1493983048502" duration="1970000" /> + <workItem from="1495133393210" duration="7807000" /> + <workItem from="1495175490141" duration="467000" /> + <workItem from="1496943656498" duration="13955000" /> + <workItem from="1497033788132" duration="7107000" /> + <workItem from="1497164175401" duration="1361000" /> + <workItem from="1497703951161" duration="3005000" /> + <workItem from="1497790692911" duration="606000" /> + <workItem from="1498335998463" duration="1814000" /> + <workItem from="1499200847143" duration="5483000" /> + <workItem from="1499934318349" duration="520000" /> + <workItem from="1502996571785" duration="7286000" /> + <workItem from="1503159696902" duration="5078000" /> + <workItem from="1503238622588" duration="190000" /> + <workItem from="1503238828060" duration="6025000" /> + <workItem from="1503300520953" duration="12000" /> + <workItem from="1504072300165" duration="742000" /> + <workItem from="1506347153317" duration="355000" /> + <workItem from="1507364593075" duration="2743000" /> + <workItem from="1508265469020" duration="6002000" /> + <workItem from="1508501174027" duration="352000" /> + <workItem from="1509979153403" duration="605000" /> + <workItem from="1513332788354" duration="2020000" /> + <workItem from="1513798033267" duration="6864000" /> + <workItem from="1513956669871" duration="1376000" /> + <workItem from="1514488057505" duration="1107000" /> + <workItem from="1514882737984" duration="222000" /> + <workItem from="1516101669528" duration="38000" /> + <workItem from="1517854586116" duration="940000" /> + <workItem from="1517908003086" duration="91000" /> + <workItem from="1520884638839" duration="1634000" /> + <workItem from="1520949116701" duration="1000" /> + <workItem from="1530113213082" duration="532000" /> + <workItem from="1530126970711" duration="4447000" /> + <workItem from="1530206920060" duration="5405000" /> + <workItem from="1530262456167" duration="106000" /> + <workItem from="1530352808472" duration="13988000" /> + <workItem from="1530395750315" duration="7885000" /> + <workItem from="1530539643434" duration="396000" /> + </task> + <servers /> + </component> + <component name="TimeTrackingManager"> + <option name="totallyTimeSpent" value="215788000" /> + </component> + <component name="TodoView"> + <todo-panel id="selected-file"> + <is-autoscroll-to-source value="true" /> + </todo-panel> + <todo-panel id="all"> + <are-packages-shown value="true" /> + <is-autoscroll-to-source value="true" /> + </todo-panel> + </component> + <component name="ToolWindowManager"> + <frame x="0" y="22" width="1920" height="1058" extended-state="6" /> + <editor active="true" /> + <layout> + <window_info active="true" content_ui="combo" id="Project" order="0" sideWeight="0.4957265" visible="true" weight="0.16482359" /> + <window_info anchor="bottom" id="TODO" order="6" /> + <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" /> + <window_info anchor="bottom" id="Event Log" order="7" side_tool="true" /> + <window_info anchor="bottom" id="Run" order="2" weight="0.353562" /> + <window_info anchor="bottom" id="Version Control" order="7" weight="0.32849604" /> + <window_info id="npm" order="2" side_tool="true" /> + <window_info id="Structure" order="1" side_tool="true" weight="0.25" /> + <window_info anchor="bottom" id="Terminal" order="7" weight="0.26923078" /> + <window_info anchor="bottom" id="Debug" order="3" weight="0.23412699" /> + <window_info id="Favorites" order="2" sideWeight="0.50427353" side_tool="true" weight="0.1790416" /> + <window_info anchor="bottom" id="TypeScript" order="7" /> + <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" /> + <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" /> + <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" /> + <window_info anchor="right" id="Ant Build" order="1" weight="0.25" /> + <window_info anchor="bottom" id="Message" order="0" /> + <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" /> + <window_info anchor="bottom" id="Find" order="1" /> + </layout> + <layout-to-restore> + <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" /> + <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" /> + <window_info id="npm" order="2" side_tool="true" /> + <window_info anchor="bottom" id="Run" order="2" weight="0.353562" /> + <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" /> + <window_info active="true" content_ui="combo" id="Project" order="0" sideWeight="0.4957265" visible="true" weight="0.22057787" /> + <window_info id="Structure" order="1" side_tool="true" weight="0.25" /> + <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" /> + <window_info anchor="right" id="Ant Build" order="1" weight="0.25" /> + <window_info anchor="bottom" id="TODO" order="6" /> + <window_info anchor="bottom" id="TypeScript" order="8" /> + <window_info anchor="bottom" id="Find" order="1" /> + <window_info anchor="bottom" id="Debug" order="3" weight="0.23412699" /> + <window_info anchor="bottom" id="Terminal" order="9" weight="0.26923078" /> + <window_info anchor="bottom" id="Event Log" order="10" side_tool="true" /> + <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" /> + <window_info anchor="bottom" id="Version Control" order="11" weight="0.32849604" /> + <window_info anchor="bottom" id="Message" order="0" /> + <window_info id="Favorites" order="3" sideWeight="0.50427353" side_tool="true" weight="0.1790416" /> + </layout-to-restore> + </component> + <component name="TypeScriptGeneratedFilesManager"> + <option name="version" value="1" /> + </component> + <component name="Vcs.Log.UiProperties"> + <option name="RECENTLY_FILTERED_USER_GROUPS"> + <collection /> + </option> + <option name="RECENTLY_FILTERED_BRANCH_GROUPS"> + <collection /> + </option> + </component> + <component name="VcsContentAnnotationSettings"> + <option name="myLimit" value="2678400000" /> + </component> + <component name="XDebuggerManager"> + <breakpoint-manager> + <option name="time" value="2" /> + </breakpoint-manager> + <watches-manager> + <configuration name="NodeJSConfigurationType"> + <watch expression="browsersList" language="JavaScript" /> + </configuration> + </watches-manager> + </component> + <component name="editorHistoryManager"> + <entry file="jar://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/lib/JavaScriptLanguage.jar!/com/intellij/lang/javascript/index/predefined/HTML5.js" /> + <entry file="file://$PROJECT_DIR$/node_modules/smoosh/lib/smoosh/index.js" /> + <entry file="file://$PROJECT_DIR$/node_modules/smoosh/index.js" /> + <entry file="file://$PROJECT_DIR$/make/build.js" /> + <entry file="file://$PROJECT_DIR$/node_modules/sinon/lib/sinon.js" /> + <entry file="file://$PROJECT_DIR$/LICENSE"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="45"> + <caret line="3" column="11" lean-forward="true" selection-start-line="3" selection-start-column="11" selection-end-line="3" selection-end-column="11" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/lib/parser.js" /> + <entry file="file://$PROJECT_DIR$/lib/parser-os.js" /> + <entry file="file://$PROJECT_DIR$/ISSUE_TEMPLATE.md" /> + <entry file="file://$PROJECT_DIR$/src/parsed-object.js" /> + <entry file="file://$PROJECT_DIR$/.testem.json" /> + <entry file="file://$PROJECT_DIR$/node_modules/yaml2json/index.js" /> + <entry file="file://$PROJECT_DIR$/node_modules/yamljs/lib/Yaml.js" /> + <entry file="file://$PROJECT_DIR$/Makefile"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="255"> + <caret line="15" column="19" lean-forward="true" selection-start-line="15" selection-start-column="19" selection-end-line="15" selection-end-column="19" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/helpers/convert-old-json-to-yaml.js" /> + <entry file="file://$PROJECT_DIR$/src/old.bowser.js" /> + <entry file="file://$PROJECT_DIR$/.eslintignore" /> + <entry file="file://$PROJECT_DIR$/typings.d.ts"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="68"> + <caret line="4" column="9" lean-forward="true" selection-start-line="4" selection-start-column="9" selection-end-line="4" selection-end-column="9" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/.eslintrc.yml" /> + <entry file="file://$PROJECT_DIR$/src/bowser.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="170"> + <caret line="10" column="15" lean-forward="true" selection-start-line="10" selection-start-column="15" selection-end-line="10" selection-end-column="15" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/bowser.js" /> + <entry file="file://$PROJECT_DIR$/bowser.min.js" /> + <entry file="file://$PROJECT_DIR$/test.old.js" /> + <entry file="file://$PROJECT_DIR$/test/acceptance/test-list-of-ua.js" /> + <entry file="file://$PROJECT_DIR$/bower.json"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="255"> + <caret line="15" column="14" lean-forward="true" selection-start-line="15" selection-start-column="14" selection-end-line="15" selection-end-column="14" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/test.js" /> + <entry file="file://$PROJECT_DIR$/CHANGELOG.md"> + <provider editor-type-id="text-editor"> + <state relative-caret-position="255"> + <caret line="15" column="23" lean-forward="true" selection-start-line="15" selection-start-column="23" selection-end-line="15" selection-end-column="23" /> + </state> + </provider> + <provider selected="true" editor-type-id="split-provider[text-editor;MarkdownPreviewEditor]"> + <state split_layout="FIRST"> + <first_editor relative-caret-position="646"> + <caret line="38" selection-start-line="38" selection-end-line="38" /> + </first_editor> + <second_editor> + <markdownNavigatorState /> + </second_editor> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/useragents.js" /> + <entry file="file://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external/lib.es5.d.ts"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="244"> + <caret line="890" column="4" selection-start-line="890" selection-start-column="4" selection-end-line="890" selection-end-column="4" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/README.md"> + <provider editor-type-id="text-editor"> + <state relative-caret-position="810"> + <caret line="54" column="43" selection-start-line="54" selection-start-column="43" selection-end-line="54" selection-end-column="43" /> + </state> + </provider> + <provider selected="true" editor-type-id="split-provider[text-editor;MarkdownPreviewEditor]"> + <state split_layout="FIRST"> + <first_editor relative-caret-position="-2024"> + <caret line="15" column="3" selection-start-line="15" selection-start-column="3" selection-end-line="15" selection-end-column="3" /> + </first_editor> + <second_editor> + <markdownNavigatorState /> + </second_editor> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/.coveralls.yml"> + <provider selected="true" editor-type-id="text-editor"> + <state> + <caret column="45" selection-start-column="45" selection-end-column="45" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/.travis.yml"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="68"> + <caret line="4" lean-forward="true" selection-start-line="4" selection-end-line="4" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/coverage/bowser.js.html"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="127"> + <caret line="225" column="6" lean-forward="true" selection-start-line="225" selection-start-column="6" selection-end-line="225" selection-end-column="6" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/.gitignore"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="102"> + <caret line="6" column="8" selection-start-line="6" selection-start-column="8" selection-end-line="6" selection-end-column="8" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/.npmignore"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="68"> + <caret line="4" selection-start-line="4" selection-end-line="4" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/acceptance/useragentstrings.yml"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="85"> + <caret line="5" column="17" lean-forward="true" selection-start-line="5" selection-start-column="17" selection-end-line="5" selection-end-column="17" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/.nycrc"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="34"> + <caret line="2" column="21" selection-start-line="2" selection-start-column="21" selection-end-line="2" selection-end-column="21" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/.babelrc"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="119"> + <caret line="7" column="3" selection-start-line="7" selection-start-column="3" selection-end-line="7" selection-end-column="3" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/coverage/index.html"> + <provider selected="true" editor-type-id="text-editor" /> + </entry> + <entry file="file://$PROJECT_DIR$/src/utils.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="221"> + <caret line="13" column="28" selection-start-line="13" selection-start-column="28" selection-end-line="13" selection-end-column="28" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit/utils.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="51"> + <caret line="3" column="24" lean-forward="true" selection-start-line="3" selection-start-column="24" selection-end-line="3" selection-end-column="24" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit/parser.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-139"> + <caret line="14" lean-forward="true" selection-start-line="14" selection-end-line="14" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/parser-engines.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="1411"> + <caret line="83" column="16" selection-start-line="83" selection-start-column="16" selection-end-line="83" selection-end-column="16" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/parser-platforms.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="-1346"> + <caret line="18" column="14" lean-forward="true" selection-start-line="18" selection-start-column="14" selection-end-line="18" selection-end-column="14" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/parser-os.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="85"> + <caret line="5" column="16" lean-forward="true" selection-start-line="5" selection-start-column="16" selection-end-line="5" selection-end-column="16" /> + <folding> + <element signature="e#0#68#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/test/unit/bowser.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="255"> + <caret line="15" column="29" selection-start-line="15" selection-start-column="29" selection-end-line="15" selection-end-column="29" /> + <folding> + <element signature="e#0#23#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/parser-browsers.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="714"> + <caret line="65" column="4" lean-forward="true" selection-start-line="65" selection-start-column="4" selection-end-line="65" selection-end-column="4" /> + <folding> + <element signature="e#1322#1383#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/parser.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="687"> + <caret line="312" column="17" lean-forward="true" selection-start-line="312" selection-start-column="17" selection-end-line="312" selection-end-column="17" /> + <folding> + <element signature="e#0#28#0" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/package-lock.json"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="255"> + <caret line="15" column="40" selection-start-line="15" selection-start-column="40" selection-end-line="15" selection-end-column="40" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/bowser.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="17"> + <caret line="506" column="5" selection-start-line="506" selection-start-column="5" selection-end-line="506" selection-end-column="5" /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/package.json"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="34"> + <caret line="2" column="19" selection-start-line="2" selection-start-column="19" selection-end-line="2" selection-end-column="19" /> + </state> + </provider> + </entry> + </component> +</project> \ No newline at end of file diff --git a/node_modules/bowser/.travis.yml b/node_modules/bowser/.travis.yml new file mode 100644 index 0000000..14de794 --- /dev/null +++ b/node_modules/bowser/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +node_js: + - "4.4.7" +notifications: + email: + - dustin@dustindiaz.com + +script: NODE_ENV=test ./node_modules/.bin/mocha --reporter spec diff --git a/node_modules/bowser/CHANGELOG.md b/node_modules/bowser/CHANGELOG.md new file mode 100644 index 0000000..15802e6 --- /dev/null +++ b/node_modules/bowser/CHANGELOG.md @@ -0,0 +1,85 @@ +# Bowser Changelog + +### 1.9.4 (June 28, 2018) +- [FIX] Fix NAVER Whale browser detection (#220) +- [FIX] Fix MZ Browser browser detection (#219) +- [FIX] Fix Firefox Focus browser detection (#191) +- [FIX] Fix webOS browser detection (#186) + +### 1.9.3 (March 12, 2018) +- [FIX] Fix `typings.d.ts` — add `ipad`, `iphone`, `ipod` flags to the interface + +### 1.9.2 (February 5, 2018) +- [FIX] Fix `typings.d.ts` — add `osname` flag to the interface + +### 1.9.1 (December 22, 2017) +- [FIX] Fix `typings.d.ts` — add `chromium` flag to the interface + +### 1.9.0 (December 20, 2017) +- [ADD] Add a public method `.detect()` (#205) +- [DOCS] Fix description of `chromium` flag in docs (#206) + +### 1.8.1 (October 7, 2017) +- [FIX] Fix detection of MS Edge on Android and iOS (#201) + +### 1.8.0 (October 7, 2017) +- [ADD] Add `osname` into result object (#200) + +### 1.7.3 (August 30, 2017) +- [FIX] Fix detection of Chrome on Android 8 OPR6 (#193) + +### 1.7.2 (August 17, 2017) +- [FIX] Fix typings.d.ts according to #185 + +### 1.7.1 (July 13, 2017) +- [ADD] Fix detecting of Tablet PC as tablet (#183) + +### 1.7.0 (May 18, 2017) +- [ADD] Add OS version support for Windows and macOS (#178) + +### 1.6.0 (December 5, 2016) +- [ADD] Add some tests for Windows devices (#89) +- [ADD] Add `root` to initialization process (#170) +- [FIX] Upgrade .travis.yml config + +### 1.5.0 (October 31, 2016) +- [ADD] Throw an error when `minVersion` map has not a string as a version and fix readme (#165) +- [FIX] Fix truly detection of Windows Phones (#167) + +### 1.4.6 (September 19, 2016) +- [FIX] Fix mobile Opera's version detection on Android +- [FIX] Fix typescript typings — add `mobile` and `tablet` flags +- [DOC] Fix description of `bowser.check` + +### 1.4.5 (August 30, 2016) + +- [FIX] Add support of Samsung Internet for Android +- [FIX] Fix case when `navigator.userAgent` is `undefined` +- [DOC] Add information about `strictMode` in `check` function +- [DOC] Consistent use of `bowser` variable in the README + +### 1.4.4 (August 10, 2016) + +- [FIX] Fix AMD `define` call — pass name to the function + +### 1.4.3 (July 27, 2016) + +- [FIX] Fix error `Object doesn't support this property or method` on IE8 + +### 1.4.2 (July 26, 2016) + +- [FIX] Fix missing `isUnsupportedBrowser` in typings description +- [DOC] Fix `check`'s declaration in README + +### 1.4.1 (July 7, 2016) + +- [FIX] Fix `strictMode` logic for `isUnsupportedBrowser` + +### 1.4.0 (June 28, 2016) + +- [FEATURE] Add `bowser.compareVersions` method +- [FEATURE] Add `bowser.isUnsupportedBrowser` method +- [FEATURE] Add `bowser.check` method +- [DOC] Changelog started +- [DOC] Add API section to README +- [FIX] Fix detection of browser type (A/C/X) for Chromium diff --git a/node_modules/bowser/ISSUE_TEMPLATE.md b/node_modules/bowser/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..165469f --- /dev/null +++ b/node_modules/bowser/ISSUE_TEMPLATE.md @@ -0,0 +1,5 @@ +Template to report about browser detection issue + +`window.navigator.userAgent` of the browser is: ... + And it's detected like a ... + But real name of the browser is ... diff --git a/node_modules/bowser/LICENSE b/node_modules/bowser/LICENSE new file mode 100644 index 0000000..94085f0 --- /dev/null +++ b/node_modules/bowser/LICENSE @@ -0,0 +1,39 @@ +Copyright 2015, Dustin Diaz (the "Original Author") +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +Distributions of all or part of the Software intended to be used +by the recipients as they would use the unmodified Software, +containing modifications that substantially alter, remove, or +disable functionality of the Software, outside of the documented +configuration mechanisms provided by the Software, shall be +modified such that the Original Author's bug reporting email +addresses and urls are either replaced with the contact information +of the parties responsible for the changes, or removed entirely. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + +Except where noted, this license applies to any and all software +programs and associated documentation files created by the +Original Author, when distributed with the Software. diff --git a/node_modules/bowser/README.md b/node_modules/bowser/README.md new file mode 100644 index 0000000..f52c507 --- /dev/null +++ b/node_modules/bowser/README.md @@ -0,0 +1,211 @@ +## Bowser +A Browser detector. Because sometimes, there is no other way, and not even good modern browsers always provide good feature detection mechanisms. + +[![Build Status](https://travis-ci.org/lancedikson/bowser.svg?branch=master)](https://travis-ci.org/lancedikson/bowser) + +So... it works like this: + +``` js +if (bowser.msie && bowser.version <= 6) { + alert('Hello China'); +} +``` + +## 1.1.0 breaking changes +We don't save built script in the repo anymore. The main file (`src/bowser.js`) is available through NPM or Bower. +Also you can download minified file from [the release page](https://github.com/ded/bowser/releases). + +## 1.0.0 breaking changes +`browser = require('bowser').browser;` becomes `bowser = require('bowser');` + +--- + +## API + +### bowser`:Object` +Use it to get object with detected flags of your current browser. + +### bowser._detect(ua `:String`)`:Object` +Use it to get object with detected flags from User Agent string. + +### bowser.check(minVersions`:Object`, strictMode`:Boolean`, [ua]`:String`)`:Boolean` +Use it to check if browser is supported. In default non-strict mode any browser family not present in `minVersions` will pass the check (like Chrome in the third call in the sample bellow). When strict mode is enabled then any not specified browser family in `minVersions` will cause `check` to return `false` (in the sample it is the fourth call, the last one). + +``` js +/** + * in case of using IE10 + */ +bowser.check({msie: "11"}); // true +bowser.check({msie: "9.0"}); // false + +/** + * specific user agent + */ +bowser.check({chrome: "45"}, window.navigator.userAgent); // true + +/** + * but false in strict mode + */ +bowser.check({chrome: "45"}, true, window.navigator.userAgent); // false +``` + +### bowser.compareVersions(versions`:Array<String>`)`:Number` +Use it to compare two versions. + +``` js +bowser.compareVersions(['9.0', '10']); +// -1 +``` + +### bowser.isUnsupportedBrowser(minVersions`:Object`, [strictMode]`:Boolean`, [ua]`:string`)`:Boolean` +Use it to check if browser is unsupported. + +``` js +bowser.isUnsupportedBrowser({msie: "10"}, window.navigator.userAgent); +// true / false +``` + +See more examples in [tests](test/test.js). + +--- + +## Bowser Flags +Your mileage may vary, but these flags should be set. See Contributing below. + +``` js +alert('Hello ' + bowser.name + ' ' + bowser.version); +``` + +### All detected browsers +These flags are set for all detected browsers: + +* `name` - A human readable name for this browser. E.g. 'Chrome', '' +* `version` - Version number for the browser. E.g. '32.0' + +For unknown browsers, Bowser makes a best guess from the UA string. So, these may not be set. + +### Rendering engine flags +If detected, one of these flags may be set to true: + + * `webkit` - Chrome 0-27, Android <4.4, iOs, BB, etc. + * `blink` - Chrome >=28, Android >=4.4, Opera, etc. + * `gecko` - Firefox, etc. + * `msie` - IE <= 11 + * `msedge` - IE > 11 + +Safari, Chrome and some other minor browsers will report that they have `webkit` engines. +Firefox and Seamonkey will report that they have `gecko` engines. + +``` js +if (bowser.webkit) { + // do stuff with safari & chrome & opera & android & blackberry & webos & silk +} +``` + +### Device flags +If detected, one of these flags may be set to true: + + * `mobile` - All detected mobile OSes are additionally flagged `mobile`, **unless it's a tablet** + * `tablet` - If a tablet device is detected, the flag `tablet` is **set instead of `mobile`**. + +### Browser flags +If detected, one of these flags may be set to true. The rendering engine flag is shown in []'s: + + * `chrome` - [`webkit`|`blink`] + * `chromium` - [`webkit`|`blink`] + * `firefox` - [`gecko`] + * `msie` + * `msedge` + * `safari` - [`webkit`] + * `android` - native browser - [`webkit`|`blink`] + * `ios` - native browser - [`webkit`] + * `opera` - [`blink` if >=15] + * `samsungBrowser` - [`blink`] + * `phantom` - [`webkit`] + * `blackberry` - native browser - [`webkit`] + * `webos` - native browser - [`webkit`] + * `silk` - Amazon Kindle browser - [`webkit`] + * `bada` - [`webkit`] + * `tizen` - [`webkit`] + * `seamonkey` - [`gecko`] + * `sailfish` - [`gecko`] + * `ucbrowser` — [`webkit`] + * `qupzilla` — [`webkit`] + * `vivaldi` — [`blink`] + * `sleipnir` — [`blink`] + * `kMeleon` — [`gecko`] + * `whale` — [`blink`] + +For all detected browsers the browser version is set in the `version` field. + +### OS Flags +If detected, one of these flags may be set to true: + + * `mac` + * `windows` - other than Windows Phone + * `windowsphone` + * `linux` - other than `android`, `chromeos`, `webos`, `tizen`, and `sailfish` + * `chromeos` + * `android` + * `ios` - also sets one of `iphone`/`ipad`/`ipod` + * `blackberry` + * `firefoxos` + * `webos` - may also set `touchpad` + * `bada` + * `tizen` + * `sailfish` + +`osname` and `osversion` may also be set: + + * `osname` - for the OS flags detected above: macOS, Windows, Windows Phone, Linux, Chrome OS, Android, iOS, Blackberry OS, Firefox OS, WebOS, Bada, Tizen, Sailfish OS, and Xbox + * `osversion` - for Android, iOS, MacOS, Windows, Windows Phone, WebOS, Bada, and Tizen. If included in UA string. + +iOS is always reported as `ios` and additionally as `iphone`/`ipad`/`ipod`, whichever one matches best. +If WebOS device is an HP TouchPad the flag `touchpad` is additionally set. + +### Browser capability grading +One of these flags may be set: + + * `a` - This browser has full capabilities + * `c` - This browser has degraded capabilities. Serve simpler version + * `x` - This browser has minimal capabilities and is probably not well detected. + +There is no `b`. For unknown browsers, none of these flags may be set. + +### Ender Support + +`package.json` + +``` json +"dependencies": { + "bowser": "x.x.x" +} +``` + +``` js +if (require('bowser').chrome) { + alert('Hello Silicon Valley') +} +``` + +### Contributing +If you'd like to contribute a change to bowser, modify the files in `src/`, then run the following (you'll need node + npm installed): + +``` sh +$ npm install +$ make test +``` + +Please do not check-in the built files `bowser.js` and `bowser.min.js` in pull requests. + +### Adding tests +See the list in `src/useragents.js` with example user agents and their expected bowser object. + +Whenever you add support for new browsers or notice a bug / mismatch, please update the list and +check if all tests are still passing. + +### Similar Projects +* [Kong](https://github.com/BigBadBleuCheese/Kong) - A C# port of Bowser. + +### License +Licensed as MIT. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/node_modules/bowser/bower.json b/node_modules/bowser/bower.json new file mode 100644 index 0000000..9c42b30 --- /dev/null +++ b/node_modules/bowser/bower.json @@ -0,0 +1,33 @@ +{ + "name": "bowser", + "description": "Lightweight browser detector", + "keywords": [ + "browser", + "useragent", + "user-agent", + "parser", + "ua", + "detection", + "ender", + "sniff" + ], + "version": "1.9.4", + "homepage": "https://github.com/lancedikson/bowser", + "scripts": [ + "src/bowser.js" + ], + "authors": [ + "Dustin Diaz <dustin@dustindiaz.com> (http://dustindiaz.com)", + "Denis Demchenko <lance@dikson.me>" + ], + "moduleType": [], + "license": "MIT", + "main": "src/bowser.js", + "ignore": [ + "node_modules", + "test", + "make", + "**/.*", + "Makefile" + ] +} diff --git a/node_modules/bowser/bowser.js b/node_modules/bowser/bowser.js new file mode 100644 index 0000000..a06971f --- /dev/null +++ b/node_modules/bowser/bowser.js @@ -0,0 +1,644 @@ +/*! + * Bowser - a browser detector + * https://github.com/ded/bowser + * MIT License | (c) Dustin Diaz 2015 + */ + +!function (root, name, definition) { + if (typeof module != 'undefined' && module.exports) module.exports = definition() + else if (typeof define == 'function' && define.amd) define(name, definition) + else root[name] = definition() +}(this, 'bowser', function () { + /** + * See useragents.js for examples of navigator.userAgent + */ + + var t = true + + function detect(ua) { + + function getFirstMatch(regex) { + var match = ua.match(regex); + return (match && match.length > 1 && match[1]) || ''; + } + + function getSecondMatch(regex) { + var match = ua.match(regex); + return (match && match.length > 1 && match[2]) || ''; + } + + var iosdevice = getFirstMatch(/(ipod|iphone|ipad)/i).toLowerCase() + , likeAndroid = /like android/i.test(ua) + , android = !likeAndroid && /android/i.test(ua) + , nexusMobile = /nexus\s*[0-6]\s*/i.test(ua) + , nexusTablet = !nexusMobile && /nexus\s*[0-9]+/i.test(ua) + , chromeos = /CrOS/.test(ua) + , silk = /silk/i.test(ua) + , sailfish = /sailfish/i.test(ua) + , tizen = /tizen/i.test(ua) + , webos = /(web|hpw)(o|0)s/i.test(ua) + , windowsphone = /windows phone/i.test(ua) + , samsungBrowser = /SamsungBrowser/i.test(ua) + , windows = !windowsphone && /windows/i.test(ua) + , mac = !iosdevice && !silk && /macintosh/i.test(ua) + , linux = !android && !sailfish && !tizen && !webos && /linux/i.test(ua) + , edgeVersion = getSecondMatch(/edg([ea]|ios)\/(\d+(\.\d+)?)/i) + , versionIdentifier = getFirstMatch(/version\/(\d+(\.\d+)?)/i) + , tablet = /tablet/i.test(ua) && !/tablet pc/i.test(ua) + , mobile = !tablet && /[^-]mobi/i.test(ua) + , xbox = /xbox/i.test(ua) + , result + + if (/opera/i.test(ua)) { + // an old Opera + result = { + name: 'Opera' + , opera: t + , version: versionIdentifier || getFirstMatch(/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i) + } + } else if (/opr\/|opios/i.test(ua)) { + // a new Opera + result = { + name: 'Opera' + , opera: t + , version: getFirstMatch(/(?:opr|opios)[\s\/](\d+(\.\d+)?)/i) || versionIdentifier + } + } + else if (/SamsungBrowser/i.test(ua)) { + result = { + name: 'Samsung Internet for Android' + , samsungBrowser: t + , version: versionIdentifier || getFirstMatch(/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i) + } + } + else if (/Whale/i.test(ua)) { + result = { + name: 'NAVER Whale browser' + , whale: t + , version: getFirstMatch(/(?:whale)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/MZBrowser/i.test(ua)) { + result = { + name: 'MZ Browser' + , mzbrowser: t + , version: getFirstMatch(/(?:MZBrowser)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/coast/i.test(ua)) { + result = { + name: 'Opera Coast' + , coast: t + , version: versionIdentifier || getFirstMatch(/(?:coast)[\s\/](\d+(\.\d+)?)/i) + } + } + else if (/focus/i.test(ua)) { + result = { + name: 'Focus' + , focus: t + , version: getFirstMatch(/(?:focus)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/yabrowser/i.test(ua)) { + result = { + name: 'Yandex Browser' + , yandexbrowser: t + , version: versionIdentifier || getFirstMatch(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i) + } + } + else if (/ucbrowser/i.test(ua)) { + result = { + name: 'UC Browser' + , ucbrowser: t + , version: getFirstMatch(/(?:ucbrowser)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/mxios/i.test(ua)) { + result = { + name: 'Maxthon' + , maxthon: t + , version: getFirstMatch(/(?:mxios)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/epiphany/i.test(ua)) { + result = { + name: 'Epiphany' + , epiphany: t + , version: getFirstMatch(/(?:epiphany)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/puffin/i.test(ua)) { + result = { + name: 'Puffin' + , puffin: t + , version: getFirstMatch(/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i) + } + } + else if (/sleipnir/i.test(ua)) { + result = { + name: 'Sleipnir' + , sleipnir: t + , version: getFirstMatch(/(?:sleipnir)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/k-meleon/i.test(ua)) { + result = { + name: 'K-Meleon' + , kMeleon: t + , version: getFirstMatch(/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (windowsphone) { + result = { + name: 'Windows Phone' + , osname: 'Windows Phone' + , windowsphone: t + } + if (edgeVersion) { + result.msedge = t + result.version = edgeVersion + } + else { + result.msie = t + result.version = getFirstMatch(/iemobile\/(\d+(\.\d+)?)/i) + } + } + else if (/msie|trident/i.test(ua)) { + result = { + name: 'Internet Explorer' + , msie: t + , version: getFirstMatch(/(?:msie |rv:)(\d+(\.\d+)?)/i) + } + } else if (chromeos) { + result = { + name: 'Chrome' + , osname: 'Chrome OS' + , chromeos: t + , chromeBook: t + , chrome: t + , version: getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i) + } + } else if (/edg([ea]|ios)/i.test(ua)) { + result = { + name: 'Microsoft Edge' + , msedge: t + , version: edgeVersion + } + } + else if (/vivaldi/i.test(ua)) { + result = { + name: 'Vivaldi' + , vivaldi: t + , version: getFirstMatch(/vivaldi\/(\d+(\.\d+)?)/i) || versionIdentifier + } + } + else if (sailfish) { + result = { + name: 'Sailfish' + , osname: 'Sailfish OS' + , sailfish: t + , version: getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i) + } + } + else if (/seamonkey\//i.test(ua)) { + result = { + name: 'SeaMonkey' + , seamonkey: t + , version: getFirstMatch(/seamonkey\/(\d+(\.\d+)?)/i) + } + } + else if (/firefox|iceweasel|fxios/i.test(ua)) { + result = { + name: 'Firefox' + , firefox: t + , version: getFirstMatch(/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i) + } + if (/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(ua)) { + result.firefoxos = t + result.osname = 'Firefox OS' + } + } + else if (silk) { + result = { + name: 'Amazon Silk' + , silk: t + , version : getFirstMatch(/silk\/(\d+(\.\d+)?)/i) + } + } + else if (/phantom/i.test(ua)) { + result = { + name: 'PhantomJS' + , phantom: t + , version: getFirstMatch(/phantomjs\/(\d+(\.\d+)?)/i) + } + } + else if (/slimerjs/i.test(ua)) { + result = { + name: 'SlimerJS' + , slimer: t + , version: getFirstMatch(/slimerjs\/(\d+(\.\d+)?)/i) + } + } + else if (/blackberry|\bbb\d+/i.test(ua) || /rim\stablet/i.test(ua)) { + result = { + name: 'BlackBerry' + , osname: 'BlackBerry OS' + , blackberry: t + , version: versionIdentifier || getFirstMatch(/blackberry[\d]+\/(\d+(\.\d+)?)/i) + } + } + else if (webos) { + result = { + name: 'WebOS' + , osname: 'WebOS' + , webos: t + , version: versionIdentifier || getFirstMatch(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i) + }; + /touchpad\//i.test(ua) && (result.touchpad = t) + } + else if (/bada/i.test(ua)) { + result = { + name: 'Bada' + , osname: 'Bada' + , bada: t + , version: getFirstMatch(/dolfin\/(\d+(\.\d+)?)/i) + }; + } + else if (tizen) { + result = { + name: 'Tizen' + , osname: 'Tizen' + , tizen: t + , version: getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i) || versionIdentifier + }; + } + else if (/qupzilla/i.test(ua)) { + result = { + name: 'QupZilla' + , qupzilla: t + , version: getFirstMatch(/(?:qupzilla)[\s\/](\d+(?:\.\d+)+)/i) || versionIdentifier + } + } + else if (/chromium/i.test(ua)) { + result = { + name: 'Chromium' + , chromium: t + , version: getFirstMatch(/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i) || versionIdentifier + } + } + else if (/chrome|crios|crmo/i.test(ua)) { + result = { + name: 'Chrome' + , chrome: t + , version: getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i) + } + } + else if (android) { + result = { + name: 'Android' + , version: versionIdentifier + } + } + else if (/safari|applewebkit/i.test(ua)) { + result = { + name: 'Safari' + , safari: t + } + if (versionIdentifier) { + result.version = versionIdentifier + } + } + else if (iosdevice) { + result = { + name : iosdevice == 'iphone' ? 'iPhone' : iosdevice == 'ipad' ? 'iPad' : 'iPod' + } + // WTF: version is not part of user agent in web apps + if (versionIdentifier) { + result.version = versionIdentifier + } + } + else if(/googlebot/i.test(ua)) { + result = { + name: 'Googlebot' + , googlebot: t + , version: getFirstMatch(/googlebot\/(\d+(\.\d+))/i) || versionIdentifier + } + } + else { + result = { + name: getFirstMatch(/^(.*)\/(.*) /), + version: getSecondMatch(/^(.*)\/(.*) /) + }; + } + + // set webkit or gecko flag for browsers based on these engines + if (!result.msedge && /(apple)?webkit/i.test(ua)) { + if (/(apple)?webkit\/537\.36/i.test(ua)) { + result.name = result.name || "Blink" + result.blink = t + } else { + result.name = result.name || "Webkit" + result.webkit = t + } + if (!result.version && versionIdentifier) { + result.version = versionIdentifier + } + } else if (!result.opera && /gecko\//i.test(ua)) { + result.name = result.name || "Gecko" + result.gecko = t + result.version = result.version || getFirstMatch(/gecko\/(\d+(\.\d+)?)/i) + } + + // set OS flags for platforms that have multiple browsers + if (!result.windowsphone && (android || result.silk)) { + result.android = t + result.osname = 'Android' + } else if (!result.windowsphone && iosdevice) { + result[iosdevice] = t + result.ios = t + result.osname = 'iOS' + } else if (mac) { + result.mac = t + result.osname = 'macOS' + } else if (xbox) { + result.xbox = t + result.osname = 'Xbox' + } else if (windows) { + result.windows = t + result.osname = 'Windows' + } else if (linux) { + result.linux = t + result.osname = 'Linux' + } + + function getWindowsVersion (s) { + switch (s) { + case 'NT': return 'NT' + case 'XP': return 'XP' + case 'NT 5.0': return '2000' + case 'NT 5.1': return 'XP' + case 'NT 5.2': return '2003' + case 'NT 6.0': return 'Vista' + case 'NT 6.1': return '7' + case 'NT 6.2': return '8' + case 'NT 6.3': return '8.1' + case 'NT 10.0': return '10' + default: return undefined + } + } + + // OS version extraction + var osVersion = ''; + if (result.windows) { + osVersion = getWindowsVersion(getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i)) + } else if (result.windowsphone) { + osVersion = getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i); + } else if (result.mac) { + osVersion = getFirstMatch(/Mac OS X (\d+([_\.\s]\d+)*)/i); + osVersion = osVersion.replace(/[_\s]/g, '.'); + } else if (iosdevice) { + osVersion = getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i); + osVersion = osVersion.replace(/[_\s]/g, '.'); + } else if (android) { + osVersion = getFirstMatch(/android[ \/-](\d+(\.\d+)*)/i); + } else if (result.webos) { + osVersion = getFirstMatch(/(?:web|hpw)os\/(\d+(\.\d+)*)/i); + } else if (result.blackberry) { + osVersion = getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i); + } else if (result.bada) { + osVersion = getFirstMatch(/bada\/(\d+(\.\d+)*)/i); + } else if (result.tizen) { + osVersion = getFirstMatch(/tizen[\/\s](\d+(\.\d+)*)/i); + } + if (osVersion) { + result.osversion = osVersion; + } + + // device type extraction + var osMajorVersion = !result.windows && osVersion.split('.')[0]; + if ( + tablet + || nexusTablet + || iosdevice == 'ipad' + || (android && (osMajorVersion == 3 || (osMajorVersion >= 4 && !mobile))) + || result.silk + ) { + result.tablet = t + } else if ( + mobile + || iosdevice == 'iphone' + || iosdevice == 'ipod' + || android + || nexusMobile + || result.blackberry + || result.webos + || result.bada + ) { + result.mobile = t + } + + // Graded Browser Support + // http://developer.yahoo.com/yui/articles/gbs + if (result.msedge || + (result.msie && result.version >= 10) || + (result.yandexbrowser && result.version >= 15) || + (result.vivaldi && result.version >= 1.0) || + (result.chrome && result.version >= 20) || + (result.samsungBrowser && result.version >= 4) || + (result.whale && compareVersions([result.version, '1.0']) === 1) || + (result.mzbrowser && compareVersions([result.version, '6.0']) === 1) || + (result.focus && compareVersions([result.version, '1.0']) === 1) || + (result.firefox && result.version >= 20.0) || + (result.safari && result.version >= 6) || + (result.opera && result.version >= 10.0) || + (result.ios && result.osversion && result.osversion.split(".")[0] >= 6) || + (result.blackberry && result.version >= 10.1) + || (result.chromium && result.version >= 20) + ) { + result.a = t; + } + else if ((result.msie && result.version < 10) || + (result.chrome && result.version < 20) || + (result.firefox && result.version < 20.0) || + (result.safari && result.version < 6) || + (result.opera && result.version < 10.0) || + (result.ios && result.osversion && result.osversion.split(".")[0] < 6) + || (result.chromium && result.version < 20) + ) { + result.c = t + } else result.x = t + + return result + } + + var bowser = detect(typeof navigator !== 'undefined' ? navigator.userAgent || '' : '') + + bowser.test = function (browserList) { + for (var i = 0; i < browserList.length; ++i) { + var browserItem = browserList[i]; + if (typeof browserItem=== 'string') { + if (browserItem in bowser) { + return true; + } + } + } + return false; + } + + /** + * Get version precisions count + * + * @example + * getVersionPrecision("1.10.3") // 3 + * + * @param {string} version + * @return {number} + */ + function getVersionPrecision(version) { + return version.split(".").length; + } + + /** + * Array::map polyfill + * + * @param {Array} arr + * @param {Function} iterator + * @return {Array} + */ + function map(arr, iterator) { + var result = [], i; + if (Array.prototype.map) { + return Array.prototype.map.call(arr, iterator); + } + for (i = 0; i < arr.length; i++) { + result.push(iterator(arr[i])); + } + return result; + } + + /** + * Calculate browser version weight + * + * @example + * compareVersions(['1.10.2.1', '1.8.2.1.90']) // 1 + * compareVersions(['1.010.2.1', '1.09.2.1.90']); // 1 + * compareVersions(['1.10.2.1', '1.10.2.1']); // 0 + * compareVersions(['1.10.2.1', '1.0800.2']); // -1 + * + * @param {Array<String>} versions versions to compare + * @return {Number} comparison result + */ + function compareVersions(versions) { + // 1) get common precision for both versions, for example for "10.0" and "9" it should be 2 + var precision = Math.max(getVersionPrecision(versions[0]), getVersionPrecision(versions[1])); + var chunks = map(versions, function (version) { + var delta = precision - getVersionPrecision(version); + + // 2) "9" -> "9.0" (for precision = 2) + version = version + new Array(delta + 1).join(".0"); + + // 3) "9.0" -> ["000000000"", "000000009"] + return map(version.split("."), function (chunk) { + return new Array(20 - chunk.length).join("0") + chunk; + }).reverse(); + }); + + // iterate in reverse order by reversed chunks array + while (--precision >= 0) { + // 4) compare: "000000009" > "000000010" = false (but "9" > "10" = true) + if (chunks[0][precision] > chunks[1][precision]) { + return 1; + } + else if (chunks[0][precision] === chunks[1][precision]) { + if (precision === 0) { + // all version chunks are same + return 0; + } + } + else { + return -1; + } + } + } + + /** + * Check if browser is unsupported + * + * @example + * bowser.isUnsupportedBrowser({ + * msie: "10", + * firefox: "23", + * chrome: "29", + * safari: "5.1", + * opera: "16", + * phantom: "534" + * }); + * + * @param {Object} minVersions map of minimal version to browser + * @param {Boolean} [strictMode = false] flag to return false if browser wasn't found in map + * @param {String} [ua] user agent string + * @return {Boolean} + */ + function isUnsupportedBrowser(minVersions, strictMode, ua) { + var _bowser = bowser; + + // make strictMode param optional with ua param usage + if (typeof strictMode === 'string') { + ua = strictMode; + strictMode = void(0); + } + + if (strictMode === void(0)) { + strictMode = false; + } + if (ua) { + _bowser = detect(ua); + } + + var version = "" + _bowser.version; + for (var browser in minVersions) { + if (minVersions.hasOwnProperty(browser)) { + if (_bowser[browser]) { + if (typeof minVersions[browser] !== 'string') { + throw new Error('Browser version in the minVersion map should be a string: ' + browser + ': ' + String(minVersions)); + } + + // browser version and min supported version. + return compareVersions([version, minVersions[browser]]) < 0; + } + } + } + + return strictMode; // not found + } + + /** + * Check if browser is supported + * + * @param {Object} minVersions map of minimal version to browser + * @param {Boolean} [strictMode = false] flag to return false if browser wasn't found in map + * @param {String} [ua] user agent string + * @return {Boolean} + */ + function check(minVersions, strictMode, ua) { + return !isUnsupportedBrowser(minVersions, strictMode, ua); + } + + bowser.isUnsupportedBrowser = isUnsupportedBrowser; + bowser.compareVersions = compareVersions; + bowser.check = check; + + /* + * Set our detect method to the main bowser object so we can + * reuse it to test other user agents. + * This is needed to implement future tests. + */ + bowser._detect = detect; + + /* + * Set our detect public method to the main bowser object + * This is needed to implement bowser in server side + */ + bowser.detect = detect; + return bowser +}); diff --git a/node_modules/bowser/bowser.min.js b/node_modules/bowser/bowser.min.js new file mode 100644 index 0000000..5c5d373 --- /dev/null +++ b/node_modules/bowser/bowser.min.js @@ -0,0 +1,6 @@ +/*! + * Bowser - a browser detector + * https://github.com/ded/bowser + * MIT License | (c) Dustin Diaz 2015 + */ +!function(e,t,n){typeof module!="undefined"&&module.exports?module.exports=n():typeof define=="function"&&define.amd?define(t,n):e[t]=n()}(this,"bowser",function(){function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||""}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||""}function C(e){switch(e){case"NT":return"NT";case"XP":return"XP";case"NT 5.0":return"2000";case"NT 5.1":return"XP";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return undefined}}var i=n(/(ipod|iphone|ipad)/i).toLowerCase(),o=/like android/i.test(t),u=!o&&/android/i.test(t),a=/nexus\s*[0-6]\s*/i.test(t),f=!a&&/nexus\s*[0-9]+/i.test(t),l=/CrOS/.test(t),c=/silk/i.test(t),h=/sailfish/i.test(t),p=/tizen/i.test(t),d=/(web|hpw)(o|0)s/i.test(t),v=/windows phone/i.test(t),m=/SamsungBrowser/i.test(t),g=!v&&/windows/i.test(t),y=!i&&!c&&/macintosh/i.test(t),b=!u&&!h&&!p&&!d&&/linux/i.test(t),w=r(/edg([ea]|ios)\/(\d+(\.\d+)?)/i),E=n(/version\/(\d+(\.\d+)?)/i),S=/tablet/i.test(t)&&!/tablet pc/i.test(t),x=!S&&/[^-]mobi/i.test(t),T=/xbox/i.test(t),N;/opera/i.test(t)?N={name:"Opera",opera:e,version:E||n(/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i)}:/opr\/|opios/i.test(t)?N={name:"Opera",opera:e,version:n(/(?:opr|opios)[\s\/](\d+(\.\d+)?)/i)||E}:/SamsungBrowser/i.test(t)?N={name:"Samsung Internet for Android",samsungBrowser:e,version:E||n(/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i)}:/Whale/i.test(t)?N={name:"NAVER Whale browser",whale:e,version:n(/(?:whale)[\s\/](\d+(?:\.\d+)+)/i)}:/MZBrowser/i.test(t)?N={name:"MZ Browser",mzbrowser:e,version:n(/(?:MZBrowser)[\s\/](\d+(?:\.\d+)+)/i)}:/coast/i.test(t)?N={name:"Opera Coast",coast:e,version:E||n(/(?:coast)[\s\/](\d+(\.\d+)?)/i)}:/focus/i.test(t)?N={name:"Focus",focus:e,version:n(/(?:focus)[\s\/](\d+(?:\.\d+)+)/i)}:/yabrowser/i.test(t)?N={name:"Yandex Browser",yandexbrowser:e,version:E||n(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i)}:/ucbrowser/i.test(t)?N={name:"UC Browser",ucbrowser:e,version:n(/(?:ucbrowser)[\s\/](\d+(?:\.\d+)+)/i)}:/mxios/i.test(t)?N={name:"Maxthon",maxthon:e,version:n(/(?:mxios)[\s\/](\d+(?:\.\d+)+)/i)}:/epiphany/i.test(t)?N={name:"Epiphany",epiphany:e,version:n(/(?:epiphany)[\s\/](\d+(?:\.\d+)+)/i)}:/puffin/i.test(t)?N={name:"Puffin",puffin:e,version:n(/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i)}:/sleipnir/i.test(t)?N={name:"Sleipnir",sleipnir:e,version:n(/(?:sleipnir)[\s\/](\d+(?:\.\d+)+)/i)}:/k-meleon/i.test(t)?N={name:"K-Meleon",kMeleon:e,version:n(/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i)}:v?(N={name:"Windows Phone",osname:"Windows Phone",windowsphone:e},w?(N.msedge=e,N.version=w):(N.msie=e,N.version=n(/iemobile\/(\d+(\.\d+)?)/i))):/msie|trident/i.test(t)?N={name:"Internet Explorer",msie:e,version:n(/(?:msie |rv:)(\d+(\.\d+)?)/i)}:l?N={name:"Chrome",osname:"Chrome OS",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?N={name:"Microsoft Edge",msedge:e,version:w}:/vivaldi/i.test(t)?N={name:"Vivaldi",vivaldi:e,version:n(/vivaldi\/(\d+(\.\d+)?)/i)||E}:h?N={name:"Sailfish",osname:"Sailfish OS",sailfish:e,version:n(/sailfish\s?browser\/(\d+(\.\d+)?)/i)}:/seamonkey\//i.test(t)?N={name:"SeaMonkey",seamonkey:e,version:n(/seamonkey\/(\d+(\.\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(N={name:"Firefox",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i)},/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(t)&&(N.firefoxos=e,N.osname="Firefox OS")):c?N={name:"Amazon Silk",silk:e,version:n(/silk\/(\d+(\.\d+)?)/i)}:/phantom/i.test(t)?N={name:"PhantomJS",phantom:e,version:n(/phantomjs\/(\d+(\.\d+)?)/i)}:/slimerjs/i.test(t)?N={name:"SlimerJS",slimer:e,version:n(/slimerjs\/(\d+(\.\d+)?)/i)}:/blackberry|\bbb\d+/i.test(t)||/rim\stablet/i.test(t)?N={name:"BlackBerry",osname:"BlackBerry OS",blackberry:e,version:E||n(/blackberry[\d]+\/(\d+(\.\d+)?)/i)}:d?(N={name:"WebOS",osname:"WebOS",webos:e,version:E||n(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i)},/touchpad\//i.test(t)&&(N.touchpad=e)):/bada/i.test(t)?N={name:"Bada",osname:"Bada",bada:e,version:n(/dolfin\/(\d+(\.\d+)?)/i)}:p?N={name:"Tizen",osname:"Tizen",tizen:e,version:n(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i)||E}:/qupzilla/i.test(t)?N={name:"QupZilla",qupzilla:e,version:n(/(?:qupzilla)[\s\/](\d+(?:\.\d+)+)/i)||E}:/chromium/i.test(t)?N={name:"Chromium",chromium:e,version:n(/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i)||E}:/chrome|crios|crmo/i.test(t)?N={name:"Chrome",chrome:e,version:n(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:u?N={name:"Android",version:E}:/safari|applewebkit/i.test(t)?(N={name:"Safari",safari:e},E&&(N.version=E)):i?(N={name:i=="iphone"?"iPhone":i=="ipad"?"iPad":"iPod"},E&&(N.version=E)):/googlebot/i.test(t)?N={name:"Googlebot",googlebot:e,version:n(/googlebot\/(\d+(\.\d+))/i)||E}:N={name:n(/^(.*)\/(.*) /),version:r(/^(.*)\/(.*) /)},!N.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\/537\.36/i.test(t)?(N.name=N.name||"Blink",N.blink=e):(N.name=N.name||"Webkit",N.webkit=e),!N.version&&E&&(N.version=E)):!N.opera&&/gecko\//i.test(t)&&(N.name=N.name||"Gecko",N.gecko=e,N.version=N.version||n(/gecko\/(\d+(\.\d+)?)/i)),!N.windowsphone&&(u||N.silk)?(N.android=e,N.osname="Android"):!N.windowsphone&&i?(N[i]=e,N.ios=e,N.osname="iOS"):y?(N.mac=e,N.osname="macOS"):T?(N.xbox=e,N.osname="Xbox"):g?(N.windows=e,N.osname="Windows"):b&&(N.linux=e,N.osname="Linux");var k="";N.windows?k=C(n(/Windows ((NT|XP)( \d\d?.\d)?)/i)):N.windowsphone?k=n(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i):N.mac?(k=n(/Mac OS X (\d+([_\.\s]\d+)*)/i),k=k.replace(/[_\s]/g,".")):i?(k=n(/os (\d+([_\s]\d+)*) like mac os x/i),k=k.replace(/[_\s]/g,".")):u?k=n(/android[ \/-](\d+(\.\d+)*)/i):N.webos?k=n(/(?:web|hpw)os\/(\d+(\.\d+)*)/i):N.blackberry?k=n(/rim\stablet\sos\s(\d+(\.\d+)*)/i):N.bada?k=n(/bada\/(\d+(\.\d+)*)/i):N.tizen&&(k=n(/tizen[\/\s](\d+(\.\d+)*)/i)),k&&(N.osversion=k);var L=!N.windows&&k.split(".")[0];if(S||f||i=="ipad"||u&&(L==3||L>=4&&!x)||N.silk)N.tablet=e;else if(x||i=="iphone"||i=="ipod"||u||a||N.blackberry||N.webos||N.bada)N.mobile=e;return N.msedge||N.msie&&N.version>=10||N.yandexbrowser&&N.version>=15||N.vivaldi&&N.version>=1||N.chrome&&N.version>=20||N.samsungBrowser&&N.version>=4||N.whale&&s([N.version,"1.0"])===1||N.mzbrowser&&s([N.version,"6.0"])===1||N.focus&&s([N.version,"1.0"])===1||N.firefox&&N.version>=20||N.safari&&N.version>=6||N.opera&&N.version>=10||N.ios&&N.osversion&&N.osversion.split(".")[0]>=6||N.blackberry&&N.version>=10.1||N.chromium&&N.version>=20?N.a=e:N.msie&&N.version<10||N.chrome&&N.version<20||N.firefox&&N.version<20||N.safari&&N.version<6||N.opera&&N.version<10||N.ios&&N.osversion&&N.osversion.split(".")[0]<6||N.chromium&&N.version<20?N.c=e:N.x=e,N}function r(e){return e.split(".").length}function i(e,t){var n=[],r;if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r++)n.push(t(e[r]));return n}function s(e){var t=Math.max(r(e[0]),r(e[1])),n=i(e,function(e){var n=t-r(e);return e+=(new Array(n+1)).join(".0"),i(e.split("."),function(e){return(new Array(20-e.length)).join("0")+e}).reverse()});while(--t>=0){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(t===0)return 0}}function o(e,r,i){var o=n;typeof r=="string"&&(i=r,r=void 0),r===void 0&&(r=!1),i&&(o=t(i));var u=""+o.version;for(var a in e)if(e.hasOwnProperty(a)&&o[a]){if(typeof e[a]!="string")throw new Error("Browser version in the minVersion map should be a string: "+a+": "+String(e));return s([u,e[a]])<0}return r}function u(e,t,n){return!o(e,t,n)}var e=!0,n=t(typeof navigator!="undefined"?navigator.userAgent||"":"");return n.test=function(e){for(var t=0;t<e.length;++t){var r=e[t];if(typeof r=="string"&&r in n)return!0}return!1},n.isUnsupportedBrowser=o,n.compareVersions=s,n.check=u,n._detect=t,n.detect=t,n}) \ No newline at end of file diff --git a/node_modules/bowser/package.json b/node_modules/bowser/package.json new file mode 100644 index 0000000..6f458cc --- /dev/null +++ b/node_modules/bowser/package.json @@ -0,0 +1,38 @@ +{ + "name": "bowser", + "version": "1.9.4", + "description": "Lightweight browser detector", + "keywords": [ + "browser", + "useragent", + "user-agent", + "parser", + "ua", + "detection", + "ender", + "sniff" + ], + "homepage": "https://github.com/lancedikson/bowser", + "author": "Dustin Diaz <dustin@dustindiaz.com> (http://dustindiaz.com)", + "main": "./src/bowser.js", + "typings": "./typings.d.ts", + "repository": { + "type": "git", + "url": "git+https://github.com/ded/bowser.git" + }, + "devDependencies": { + "smoosh": "*", + "mocha": "*" + }, + "bugs": { + "url": "https://github.com/ded/bowser/issues" + }, + "directories": { + "test": "test" + }, + "scripts": { + "test": "make test", + "prepublish": "make boosh" + }, + "license": "MIT" +} diff --git a/node_modules/bowser/src/bowser.js b/node_modules/bowser/src/bowser.js new file mode 100644 index 0000000..a06971f --- /dev/null +++ b/node_modules/bowser/src/bowser.js @@ -0,0 +1,644 @@ +/*! + * Bowser - a browser detector + * https://github.com/ded/bowser + * MIT License | (c) Dustin Diaz 2015 + */ + +!function (root, name, definition) { + if (typeof module != 'undefined' && module.exports) module.exports = definition() + else if (typeof define == 'function' && define.amd) define(name, definition) + else root[name] = definition() +}(this, 'bowser', function () { + /** + * See useragents.js for examples of navigator.userAgent + */ + + var t = true + + function detect(ua) { + + function getFirstMatch(regex) { + var match = ua.match(regex); + return (match && match.length > 1 && match[1]) || ''; + } + + function getSecondMatch(regex) { + var match = ua.match(regex); + return (match && match.length > 1 && match[2]) || ''; + } + + var iosdevice = getFirstMatch(/(ipod|iphone|ipad)/i).toLowerCase() + , likeAndroid = /like android/i.test(ua) + , android = !likeAndroid && /android/i.test(ua) + , nexusMobile = /nexus\s*[0-6]\s*/i.test(ua) + , nexusTablet = !nexusMobile && /nexus\s*[0-9]+/i.test(ua) + , chromeos = /CrOS/.test(ua) + , silk = /silk/i.test(ua) + , sailfish = /sailfish/i.test(ua) + , tizen = /tizen/i.test(ua) + , webos = /(web|hpw)(o|0)s/i.test(ua) + , windowsphone = /windows phone/i.test(ua) + , samsungBrowser = /SamsungBrowser/i.test(ua) + , windows = !windowsphone && /windows/i.test(ua) + , mac = !iosdevice && !silk && /macintosh/i.test(ua) + , linux = !android && !sailfish && !tizen && !webos && /linux/i.test(ua) + , edgeVersion = getSecondMatch(/edg([ea]|ios)\/(\d+(\.\d+)?)/i) + , versionIdentifier = getFirstMatch(/version\/(\d+(\.\d+)?)/i) + , tablet = /tablet/i.test(ua) && !/tablet pc/i.test(ua) + , mobile = !tablet && /[^-]mobi/i.test(ua) + , xbox = /xbox/i.test(ua) + , result + + if (/opera/i.test(ua)) { + // an old Opera + result = { + name: 'Opera' + , opera: t + , version: versionIdentifier || getFirstMatch(/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i) + } + } else if (/opr\/|opios/i.test(ua)) { + // a new Opera + result = { + name: 'Opera' + , opera: t + , version: getFirstMatch(/(?:opr|opios)[\s\/](\d+(\.\d+)?)/i) || versionIdentifier + } + } + else if (/SamsungBrowser/i.test(ua)) { + result = { + name: 'Samsung Internet for Android' + , samsungBrowser: t + , version: versionIdentifier || getFirstMatch(/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i) + } + } + else if (/Whale/i.test(ua)) { + result = { + name: 'NAVER Whale browser' + , whale: t + , version: getFirstMatch(/(?:whale)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/MZBrowser/i.test(ua)) { + result = { + name: 'MZ Browser' + , mzbrowser: t + , version: getFirstMatch(/(?:MZBrowser)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/coast/i.test(ua)) { + result = { + name: 'Opera Coast' + , coast: t + , version: versionIdentifier || getFirstMatch(/(?:coast)[\s\/](\d+(\.\d+)?)/i) + } + } + else if (/focus/i.test(ua)) { + result = { + name: 'Focus' + , focus: t + , version: getFirstMatch(/(?:focus)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/yabrowser/i.test(ua)) { + result = { + name: 'Yandex Browser' + , yandexbrowser: t + , version: versionIdentifier || getFirstMatch(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i) + } + } + else if (/ucbrowser/i.test(ua)) { + result = { + name: 'UC Browser' + , ucbrowser: t + , version: getFirstMatch(/(?:ucbrowser)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/mxios/i.test(ua)) { + result = { + name: 'Maxthon' + , maxthon: t + , version: getFirstMatch(/(?:mxios)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/epiphany/i.test(ua)) { + result = { + name: 'Epiphany' + , epiphany: t + , version: getFirstMatch(/(?:epiphany)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/puffin/i.test(ua)) { + result = { + name: 'Puffin' + , puffin: t + , version: getFirstMatch(/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i) + } + } + else if (/sleipnir/i.test(ua)) { + result = { + name: 'Sleipnir' + , sleipnir: t + , version: getFirstMatch(/(?:sleipnir)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (/k-meleon/i.test(ua)) { + result = { + name: 'K-Meleon' + , kMeleon: t + , version: getFirstMatch(/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i) + } + } + else if (windowsphone) { + result = { + name: 'Windows Phone' + , osname: 'Windows Phone' + , windowsphone: t + } + if (edgeVersion) { + result.msedge = t + result.version = edgeVersion + } + else { + result.msie = t + result.version = getFirstMatch(/iemobile\/(\d+(\.\d+)?)/i) + } + } + else if (/msie|trident/i.test(ua)) { + result = { + name: 'Internet Explorer' + , msie: t + , version: getFirstMatch(/(?:msie |rv:)(\d+(\.\d+)?)/i) + } + } else if (chromeos) { + result = { + name: 'Chrome' + , osname: 'Chrome OS' + , chromeos: t + , chromeBook: t + , chrome: t + , version: getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i) + } + } else if (/edg([ea]|ios)/i.test(ua)) { + result = { + name: 'Microsoft Edge' + , msedge: t + , version: edgeVersion + } + } + else if (/vivaldi/i.test(ua)) { + result = { + name: 'Vivaldi' + , vivaldi: t + , version: getFirstMatch(/vivaldi\/(\d+(\.\d+)?)/i) || versionIdentifier + } + } + else if (sailfish) { + result = { + name: 'Sailfish' + , osname: 'Sailfish OS' + , sailfish: t + , version: getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i) + } + } + else if (/seamonkey\//i.test(ua)) { + result = { + name: 'SeaMonkey' + , seamonkey: t + , version: getFirstMatch(/seamonkey\/(\d+(\.\d+)?)/i) + } + } + else if (/firefox|iceweasel|fxios/i.test(ua)) { + result = { + name: 'Firefox' + , firefox: t + , version: getFirstMatch(/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i) + } + if (/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(ua)) { + result.firefoxos = t + result.osname = 'Firefox OS' + } + } + else if (silk) { + result = { + name: 'Amazon Silk' + , silk: t + , version : getFirstMatch(/silk\/(\d+(\.\d+)?)/i) + } + } + else if (/phantom/i.test(ua)) { + result = { + name: 'PhantomJS' + , phantom: t + , version: getFirstMatch(/phantomjs\/(\d+(\.\d+)?)/i) + } + } + else if (/slimerjs/i.test(ua)) { + result = { + name: 'SlimerJS' + , slimer: t + , version: getFirstMatch(/slimerjs\/(\d+(\.\d+)?)/i) + } + } + else if (/blackberry|\bbb\d+/i.test(ua) || /rim\stablet/i.test(ua)) { + result = { + name: 'BlackBerry' + , osname: 'BlackBerry OS' + , blackberry: t + , version: versionIdentifier || getFirstMatch(/blackberry[\d]+\/(\d+(\.\d+)?)/i) + } + } + else if (webos) { + result = { + name: 'WebOS' + , osname: 'WebOS' + , webos: t + , version: versionIdentifier || getFirstMatch(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i) + }; + /touchpad\//i.test(ua) && (result.touchpad = t) + } + else if (/bada/i.test(ua)) { + result = { + name: 'Bada' + , osname: 'Bada' + , bada: t + , version: getFirstMatch(/dolfin\/(\d+(\.\d+)?)/i) + }; + } + else if (tizen) { + result = { + name: 'Tizen' + , osname: 'Tizen' + , tizen: t + , version: getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i) || versionIdentifier + }; + } + else if (/qupzilla/i.test(ua)) { + result = { + name: 'QupZilla' + , qupzilla: t + , version: getFirstMatch(/(?:qupzilla)[\s\/](\d+(?:\.\d+)+)/i) || versionIdentifier + } + } + else if (/chromium/i.test(ua)) { + result = { + name: 'Chromium' + , chromium: t + , version: getFirstMatch(/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i) || versionIdentifier + } + } + else if (/chrome|crios|crmo/i.test(ua)) { + result = { + name: 'Chrome' + , chrome: t + , version: getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i) + } + } + else if (android) { + result = { + name: 'Android' + , version: versionIdentifier + } + } + else if (/safari|applewebkit/i.test(ua)) { + result = { + name: 'Safari' + , safari: t + } + if (versionIdentifier) { + result.version = versionIdentifier + } + } + else if (iosdevice) { + result = { + name : iosdevice == 'iphone' ? 'iPhone' : iosdevice == 'ipad' ? 'iPad' : 'iPod' + } + // WTF: version is not part of user agent in web apps + if (versionIdentifier) { + result.version = versionIdentifier + } + } + else if(/googlebot/i.test(ua)) { + result = { + name: 'Googlebot' + , googlebot: t + , version: getFirstMatch(/googlebot\/(\d+(\.\d+))/i) || versionIdentifier + } + } + else { + result = { + name: getFirstMatch(/^(.*)\/(.*) /), + version: getSecondMatch(/^(.*)\/(.*) /) + }; + } + + // set webkit or gecko flag for browsers based on these engines + if (!result.msedge && /(apple)?webkit/i.test(ua)) { + if (/(apple)?webkit\/537\.36/i.test(ua)) { + result.name = result.name || "Blink" + result.blink = t + } else { + result.name = result.name || "Webkit" + result.webkit = t + } + if (!result.version && versionIdentifier) { + result.version = versionIdentifier + } + } else if (!result.opera && /gecko\//i.test(ua)) { + result.name = result.name || "Gecko" + result.gecko = t + result.version = result.version || getFirstMatch(/gecko\/(\d+(\.\d+)?)/i) + } + + // set OS flags for platforms that have multiple browsers + if (!result.windowsphone && (android || result.silk)) { + result.android = t + result.osname = 'Android' + } else if (!result.windowsphone && iosdevice) { + result[iosdevice] = t + result.ios = t + result.osname = 'iOS' + } else if (mac) { + result.mac = t + result.osname = 'macOS' + } else if (xbox) { + result.xbox = t + result.osname = 'Xbox' + } else if (windows) { + result.windows = t + result.osname = 'Windows' + } else if (linux) { + result.linux = t + result.osname = 'Linux' + } + + function getWindowsVersion (s) { + switch (s) { + case 'NT': return 'NT' + case 'XP': return 'XP' + case 'NT 5.0': return '2000' + case 'NT 5.1': return 'XP' + case 'NT 5.2': return '2003' + case 'NT 6.0': return 'Vista' + case 'NT 6.1': return '7' + case 'NT 6.2': return '8' + case 'NT 6.3': return '8.1' + case 'NT 10.0': return '10' + default: return undefined + } + } + + // OS version extraction + var osVersion = ''; + if (result.windows) { + osVersion = getWindowsVersion(getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i)) + } else if (result.windowsphone) { + osVersion = getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i); + } else if (result.mac) { + osVersion = getFirstMatch(/Mac OS X (\d+([_\.\s]\d+)*)/i); + osVersion = osVersion.replace(/[_\s]/g, '.'); + } else if (iosdevice) { + osVersion = getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i); + osVersion = osVersion.replace(/[_\s]/g, '.'); + } else if (android) { + osVersion = getFirstMatch(/android[ \/-](\d+(\.\d+)*)/i); + } else if (result.webos) { + osVersion = getFirstMatch(/(?:web|hpw)os\/(\d+(\.\d+)*)/i); + } else if (result.blackberry) { + osVersion = getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i); + } else if (result.bada) { + osVersion = getFirstMatch(/bada\/(\d+(\.\d+)*)/i); + } else if (result.tizen) { + osVersion = getFirstMatch(/tizen[\/\s](\d+(\.\d+)*)/i); + } + if (osVersion) { + result.osversion = osVersion; + } + + // device type extraction + var osMajorVersion = !result.windows && osVersion.split('.')[0]; + if ( + tablet + || nexusTablet + || iosdevice == 'ipad' + || (android && (osMajorVersion == 3 || (osMajorVersion >= 4 && !mobile))) + || result.silk + ) { + result.tablet = t + } else if ( + mobile + || iosdevice == 'iphone' + || iosdevice == 'ipod' + || android + || nexusMobile + || result.blackberry + || result.webos + || result.bada + ) { + result.mobile = t + } + + // Graded Browser Support + // http://developer.yahoo.com/yui/articles/gbs + if (result.msedge || + (result.msie && result.version >= 10) || + (result.yandexbrowser && result.version >= 15) || + (result.vivaldi && result.version >= 1.0) || + (result.chrome && result.version >= 20) || + (result.samsungBrowser && result.version >= 4) || + (result.whale && compareVersions([result.version, '1.0']) === 1) || + (result.mzbrowser && compareVersions([result.version, '6.0']) === 1) || + (result.focus && compareVersions([result.version, '1.0']) === 1) || + (result.firefox && result.version >= 20.0) || + (result.safari && result.version >= 6) || + (result.opera && result.version >= 10.0) || + (result.ios && result.osversion && result.osversion.split(".")[0] >= 6) || + (result.blackberry && result.version >= 10.1) + || (result.chromium && result.version >= 20) + ) { + result.a = t; + } + else if ((result.msie && result.version < 10) || + (result.chrome && result.version < 20) || + (result.firefox && result.version < 20.0) || + (result.safari && result.version < 6) || + (result.opera && result.version < 10.0) || + (result.ios && result.osversion && result.osversion.split(".")[0] < 6) + || (result.chromium && result.version < 20) + ) { + result.c = t + } else result.x = t + + return result + } + + var bowser = detect(typeof navigator !== 'undefined' ? navigator.userAgent || '' : '') + + bowser.test = function (browserList) { + for (var i = 0; i < browserList.length; ++i) { + var browserItem = browserList[i]; + if (typeof browserItem=== 'string') { + if (browserItem in bowser) { + return true; + } + } + } + return false; + } + + /** + * Get version precisions count + * + * @example + * getVersionPrecision("1.10.3") // 3 + * + * @param {string} version + * @return {number} + */ + function getVersionPrecision(version) { + return version.split(".").length; + } + + /** + * Array::map polyfill + * + * @param {Array} arr + * @param {Function} iterator + * @return {Array} + */ + function map(arr, iterator) { + var result = [], i; + if (Array.prototype.map) { + return Array.prototype.map.call(arr, iterator); + } + for (i = 0; i < arr.length; i++) { + result.push(iterator(arr[i])); + } + return result; + } + + /** + * Calculate browser version weight + * + * @example + * compareVersions(['1.10.2.1', '1.8.2.1.90']) // 1 + * compareVersions(['1.010.2.1', '1.09.2.1.90']); // 1 + * compareVersions(['1.10.2.1', '1.10.2.1']); // 0 + * compareVersions(['1.10.2.1', '1.0800.2']); // -1 + * + * @param {Array<String>} versions versions to compare + * @return {Number} comparison result + */ + function compareVersions(versions) { + // 1) get common precision for both versions, for example for "10.0" and "9" it should be 2 + var precision = Math.max(getVersionPrecision(versions[0]), getVersionPrecision(versions[1])); + var chunks = map(versions, function (version) { + var delta = precision - getVersionPrecision(version); + + // 2) "9" -> "9.0" (for precision = 2) + version = version + new Array(delta + 1).join(".0"); + + // 3) "9.0" -> ["000000000"", "000000009"] + return map(version.split("."), function (chunk) { + return new Array(20 - chunk.length).join("0") + chunk; + }).reverse(); + }); + + // iterate in reverse order by reversed chunks array + while (--precision >= 0) { + // 4) compare: "000000009" > "000000010" = false (but "9" > "10" = true) + if (chunks[0][precision] > chunks[1][precision]) { + return 1; + } + else if (chunks[0][precision] === chunks[1][precision]) { + if (precision === 0) { + // all version chunks are same + return 0; + } + } + else { + return -1; + } + } + } + + /** + * Check if browser is unsupported + * + * @example + * bowser.isUnsupportedBrowser({ + * msie: "10", + * firefox: "23", + * chrome: "29", + * safari: "5.1", + * opera: "16", + * phantom: "534" + * }); + * + * @param {Object} minVersions map of minimal version to browser + * @param {Boolean} [strictMode = false] flag to return false if browser wasn't found in map + * @param {String} [ua] user agent string + * @return {Boolean} + */ + function isUnsupportedBrowser(minVersions, strictMode, ua) { + var _bowser = bowser; + + // make strictMode param optional with ua param usage + if (typeof strictMode === 'string') { + ua = strictMode; + strictMode = void(0); + } + + if (strictMode === void(0)) { + strictMode = false; + } + if (ua) { + _bowser = detect(ua); + } + + var version = "" + _bowser.version; + for (var browser in minVersions) { + if (minVersions.hasOwnProperty(browser)) { + if (_bowser[browser]) { + if (typeof minVersions[browser] !== 'string') { + throw new Error('Browser version in the minVersion map should be a string: ' + browser + ': ' + String(minVersions)); + } + + // browser version and min supported version. + return compareVersions([version, minVersions[browser]]) < 0; + } + } + } + + return strictMode; // not found + } + + /** + * Check if browser is supported + * + * @param {Object} minVersions map of minimal version to browser + * @param {Boolean} [strictMode = false] flag to return false if browser wasn't found in map + * @param {String} [ua] user agent string + * @return {Boolean} + */ + function check(minVersions, strictMode, ua) { + return !isUnsupportedBrowser(minVersions, strictMode, ua); + } + + bowser.isUnsupportedBrowser = isUnsupportedBrowser; + bowser.compareVersions = compareVersions; + bowser.check = check; + + /* + * Set our detect method to the main bowser object so we can + * reuse it to test other user agents. + * This is needed to implement future tests. + */ + bowser._detect = detect; + + /* + * Set our detect public method to the main bowser object + * This is needed to implement bowser in server side + */ + bowser.detect = detect; + return bowser +}); diff --git a/node_modules/bowser/test/test.js b/node_modules/bowser/test/test.js new file mode 100644 index 0000000..9fe5f5d --- /dev/null +++ b/node_modules/bowser/test/test.js @@ -0,0 +1,151 @@ +/** + * Loop through all entries in our user agents object and test everything. + * + * @see src/useragents.js + * @author hannes.diercks@jimdo.com + */ + +var g + , ua + , p + , assert = require('assert') + , browser = require('../src/bowser') + , allUserAgents = require('../src/useragents').useragents + +/** + * Get the length of an object. + * http://stackoverflow.com/questions/5223/length-of-javascript-object-ie-associative-array + * + * @param {Object} obj + * @return {Number} + */ +function objLength(obj) { + var size = 0 + , key + for (key in obj) { + if (obj.hasOwnProperty(key)) size++ + } + return size +} + +function objKeys(obj) { + var keys = [] + , key + for (key in obj) { + if (obj.hasOwnProperty(key)) { + keys.push(key) + } + } + keys.sort(); + return keys.join(', ') +} + +/* Groups */ +for (g in allUserAgents) { (function(group, userAgents) { + describe(group, function() { + + /* User Agents */ + for (ua in userAgents) { (function(userAgent, expections) { + describe('user agent "' + userAgent + '"', function() { + + expections.name = group + + /* Get the result from bowser. */ + var result = browser._detect(userAgent) + + /* At first, check if the result has the correct length. */ + it('should have ' + objLength(expections) + ' properties', function() { + assert.equal(objKeys(result), objKeys(expections)) + }) + + /* Properties */ + for (p in expections) { (function(property, value, resultValue) { + + /* Now ensure correctness of every property. */ + it('\'s Property "' + property + '" should be ' + value, function() { + assert.equal(resultValue, value) + }) + + })(p, expections[p], result[p])} + + }) + })(ua, userAgents[ua])} + + }) +})(g, allUserAgents[g])} + +var comparisionsTasks = [ + ['9.0', '10', -1], + ['11', '10', 1], + ['1.10.2.1', '1.8.2.1.90', 1], + ['1.010.2.1', '1.08.2.1.90', 1], + ['1.10.2.1', '1.10.2.1', 0], + ['1.10.2.1', '1.0800.2', -1], + ['1.0.0-alpha', '1.0.0-alpha.1', -1], + ['1.0.0-alpha.1', '1.0.0-alpha.beta', -1], + ['1.0.0-alpha.beta', '1.0.0-beta', -1], + ['1.0.0-beta', '1.0.0-beta.2', -1], + ['1.0.0-beta.11', '1.0.0-rc.1', -1], + ['1.0.0-rc.1', '1.0.0', -1] +]; + +describe('Browser versions comparision', function() { + for(g in comparisionsTasks) { + var task = comparisionsTasks[g], + version = task[0], + version2 = task[1], + matching = task[2] === 0 ? ' == ' : (task[2] > 0) ? ' > ' : ' < '; + it('version ' + version + ' should be' + matching + 'version ' + version2, function(){ + assert.equal(browser.compareVersions([version, version2]), task[2]); + }); + } +}); + +describe('Unsupported browser check', function() { + + before(function() { + this.ie10_6 = "Mozilla/5.0 (compatible; MSIE 10.6; Windows NT 6.1; Trident/5.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) 3gpp-gba UNTRUSTED/1.0"; + }); + + it('should be passed by #isUnsupportedBrowser for IE10.6 and for IE10 miminal version specified', function() { + var unsupported = browser.isUnsupportedBrowser({msie: "10"}, this.ie10_6); + assert.equal(unsupported, false); + }); + + it('should be passed by #isUnsupportedBrowser for IE10.6 and for IE10 miminal version specified in strict mode', function() { + var unsupported = browser.isUnsupportedBrowser({msie: "10"}, true, this.ie10_6); + assert.equal(unsupported, false); + }); + + it('should NOT be passed by #isUnsupportedBrowser for IE10.6 and for IE10 miminal version specified in strict mode', function() { + var isUnsupported = browser.isUnsupportedBrowser({msie: "11"}, true, this.ie10_6); + assert.equal(isUnsupported, true); + }); + + it('should NOT be passed by #check for IE10.6 and for IE11 miminal version specified', function() { + var supported = browser.check({msie: "11"}, this.ie10_6); + assert.equal(supported, false); + }); + + it('should NOT be passed by #check for IE10.6 and for IE11 miminal version specified in strict mode', function() { + var supported = browser.check({msie: "11"}, true, this.ie10_6); + assert.equal(supported, false); + }); + + it('should throw an error when minVersion map has a number, but not a string', function() { + assert.throws(() => { + browser.check({msie: 11}, this.ie10_6); + }, /Browser version in the minVersion map should be a string/); + }); + + it('should be passed by #check for IE10.6 when version was not specified', function() { + var supported = browser.check({}, this.ie10_6); + assert.equal(supported, true); + }); + + it('should NOT be passed by #check for IE10.6 when version was not specified in strict mode', function() { + var supported = browser.check({}, true, this.ie10_6); + assert.equal(supported, false); + }); + +}) diff --git a/node_modules/bowser/typings.d.ts b/node_modules/bowser/typings.d.ts new file mode 100644 index 0000000..db1d2a3 --- /dev/null +++ b/node_modules/bowser/typings.d.ts @@ -0,0 +1,115 @@ +// Type definitions for Bowser 1.x +// Project: https://github.com/lancedikson/bowser +// Definitions by: Paulo Cesar <https://github.com/pocesar> +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare const bowser: bowser.IBowser; +export = bowser; +export as namespace bowser; + +declare namespace bowser { + export interface IBowserPlatform { + ipad: boolean; + ipod: boolean; + iphone: boolean; + /** If a tablet device is detected, the flag tablet is set instead of mobile. */ + tablet: boolean; + /** All detected mobile OSes are additionally flagged mobile, unless it's a tablet */ + mobile: boolean; + } + + export interface IBowserOS { + mac: boolean; + /**other than Windows Phone */ + windows: boolean; + windowsphone: boolean; + /**other than android, chromeos, webos, tizen, and sailfish */ + linux: boolean; + chromeos: boolean; + android: boolean; + /** also sets one of iphone/ipad/ipod */ + ios: boolean; + blackberry: boolean; + firefoxos: boolean; + /** may also set touchpad */ + webos: boolean; + bada: boolean; + tizen: boolean; + sailfish: boolean; + } + + export interface IBowserVersions { + chrome: boolean; + chromium: boolean; + firefox: boolean; + msie: boolean; + msedge: boolean; + safari: boolean; + android: boolean; + ios: boolean; + opera: boolean; + samsungBrowser: boolean; + phantom: boolean; + blackberry: boolean; + webos: boolean; + silk: boolean; + bada: boolean; + tizen: boolean; + seamonkey: boolean; + sailfish: boolean; + ucbrowser: boolean; + qupzilla: boolean; + vivaldi: boolean; + sleipnir: boolean; + kMeleon: boolean; + whale: boolean; + } + + export interface IBowserEngines { + /** IE <= 11 */ + msie: boolean; + /**Chrome 0-27, Android <4.4, iOs, BB, etc. */ + webkit: boolean; + /**Chrome >=28, Android >=4.4, Opera, etc. */ + blink: boolean; + /**Firefox, etc. */ + gecko: boolean; + /** IE > 11 */ + msedge: boolean; + } + + export interface IBowserGrade { + /** Grade A browser */ + a: boolean; + /** Grade C browser */ + c: boolean; + /** Grade X browser */ + x: boolean; + /** A human readable name for this browser. E.g. 'Chrome', '' */ + name: string; + /** Version number for the browser. E.g. '32.0' */ + version: string|number; + /** Name for this operating system. E.g. 'macOS' */ + osname: string; + /** Version number for this operating system. E.g. '10.12.6' */ + osversion: string|number; + } + + export interface IBowserDetection extends IBowserGrade, IBowserEngines, IBowserOS, IBowserVersions, IBowserPlatform { } + + export interface IBowserMinVersions { + // { msie: "11", "firefox": "4" } + [index: string]: string; + } + + export interface IBowser extends IBowserDetection { + (): IBowserDetection; + test(browserList: string[]): boolean; + _detect(ua: string): IBowser; + detect(ua: string): IBowser; + compareVersions(versions: string[]): number; + check(minVersions: IBowserMinVersions, strictMode?: boolean|string, ua?: string): Boolean; + isUnsupportedBrowser(minVersions: IBowserMinVersions, strictMode?: boolean|string, ua?: string): boolean; + } + +} diff --git a/node_modules/builtin-status-codes/browser.js b/node_modules/builtin-status-codes/browser.js new file mode 100644 index 0000000..4ee0d11 --- /dev/null +++ b/node_modules/builtin-status-codes/browser.js @@ -0,0 +1,64 @@ +module.exports = { + "100": "Continue", + "101": "Switching Protocols", + "102": "Processing", + "200": "OK", + "201": "Created", + "202": "Accepted", + "203": "Non-Authoritative Information", + "204": "No Content", + "205": "Reset Content", + "206": "Partial Content", + "207": "Multi-Status", + "208": "Already Reported", + "226": "IM Used", + "300": "Multiple Choices", + "301": "Moved Permanently", + "302": "Found", + "303": "See Other", + "304": "Not Modified", + "305": "Use Proxy", + "307": "Temporary Redirect", + "308": "Permanent Redirect", + "400": "Bad Request", + "401": "Unauthorized", + "402": "Payment Required", + "403": "Forbidden", + "404": "Not Found", + "405": "Method Not Allowed", + "406": "Not Acceptable", + "407": "Proxy Authentication Required", + "408": "Request Timeout", + "409": "Conflict", + "410": "Gone", + "411": "Length Required", + "412": "Precondition Failed", + "413": "Payload Too Large", + "414": "URI Too Long", + "415": "Unsupported Media Type", + "416": "Range Not Satisfiable", + "417": "Expectation Failed", + "418": "I'm a teapot", + "421": "Misdirected Request", + "422": "Unprocessable Entity", + "423": "Locked", + "424": "Failed Dependency", + "425": "Unordered Collection", + "426": "Upgrade Required", + "428": "Precondition Required", + "429": "Too Many Requests", + "431": "Request Header Fields Too Large", + "451": "Unavailable For Legal Reasons", + "500": "Internal Server Error", + "501": "Not Implemented", + "502": "Bad Gateway", + "503": "Service Unavailable", + "504": "Gateway Timeout", + "505": "HTTP Version Not Supported", + "506": "Variant Also Negotiates", + "507": "Insufficient Storage", + "508": "Loop Detected", + "509": "Bandwidth Limit Exceeded", + "510": "Not Extended", + "511": "Network Authentication Required" +} diff --git a/node_modules/builtin-status-codes/build.js b/node_modules/builtin-status-codes/build.js new file mode 100644 index 0000000..8fc305c --- /dev/null +++ b/node_modules/builtin-status-codes/build.js @@ -0,0 +1,8 @@ +'use strict' + +var fs = require('fs') +var statusCodes = require('./') + +var code = 'module.exports = ' + JSON.stringify(statusCodes, null, 2) + '\n' + +fs.writeFileSync('browser.js', code) diff --git a/node_modules/builtin-status-codes/index.js b/node_modules/builtin-status-codes/index.js new file mode 100644 index 0000000..4a158ac --- /dev/null +++ b/node_modules/builtin-status-codes/index.js @@ -0,0 +1,3 @@ +'use strict' + +module.exports = require('http').STATUS_CODES diff --git a/node_modules/builtin-status-codes/license b/node_modules/builtin-status-codes/license new file mode 100644 index 0000000..25c6247 --- /dev/null +++ b/node_modules/builtin-status-codes/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Ben Drucker <bvdrucker@gmail.com> (bendrucker.me) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/builtin-status-codes/package.json b/node_modules/builtin-status-codes/package.json new file mode 100644 index 0000000..d20dcd8 --- /dev/null +++ b/node_modules/builtin-status-codes/package.json @@ -0,0 +1,39 @@ +{ + "name": "builtin-status-codes", + "main": "index.js", + "browser": "browser.js", + "version": "3.0.0", + "description": "The map of HTTP status codes from the builtin http module", + "license": "MIT", + "repository": "bendrucker/builtin-status-codes", + "author": { + "name": "Ben Drucker", + "email": "bvdrucker@gmail.com", + "url": "bendrucker.me" + }, + "scripts": { + "test": "standard && tape test.js", + "build": "node build.js" + }, + "keywords": [ + "http", + "status", + "codes", + "builtin", + "map" + ], + "devDependencies": { + "tape": "^4.0.0", + "standard": "^4.0.0" + }, + "files": [ + "index.js", + "browser.js", + "build.js" + ], + "standard": { + "ignore": [ + "browser.js" + ] + } +} diff --git a/node_modules/builtin-status-codes/readme.md b/node_modules/builtin-status-codes/readme.md new file mode 100644 index 0000000..9a2353d --- /dev/null +++ b/node_modules/builtin-status-codes/readme.md @@ -0,0 +1,31 @@ +# builtin-status-codes [![Build Status](https://travis-ci.org/bendrucker/builtin-status-codes.svg?branch=master)](https://travis-ci.org/bendrucker/builtin-status-codes) + +> The map of HTTP status codes from the builtin http module. Exposes the latest directly from `http` in Node, with a zero-dependencies version for the browser. + + +## Install + +``` +$ npm install --save builtin-status-codes +``` + + +## Usage + +```js +var codes = require('builtin-status-codes') +codes[100] +//=> Continue +``` + +## Build + +To create a new browser build: + +```sh +$ npm run build +``` + +## License + +MIT © [Ben Drucker](http://bendrucker.me) diff --git a/node_modules/call-bind-apply-helpers/.eslintrc b/node_modules/call-bind-apply-helpers/.eslintrc new file mode 100644 index 0000000..201e859 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/.eslintrc @@ -0,0 +1,17 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "func-name-matching": 0, + "id-length": 0, + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + "no-extra-parens": 0, + "no-magic-numbers": 0, + }, +} diff --git a/node_modules/call-bind-apply-helpers/.github/FUNDING.yml b/node_modules/call-bind-apply-helpers/.github/FUNDING.yml new file mode 100644 index 0000000..0011e9d --- /dev/null +++ b/node_modules/call-bind-apply-helpers/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/call-bind-apply-helpers +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/call-bind-apply-helpers/.nycrc b/node_modules/call-bind-apply-helpers/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/node_modules/call-bind-apply-helpers/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/call-bind-apply-helpers/CHANGELOG.md b/node_modules/call-bind-apply-helpers/CHANGELOG.md new file mode 100644 index 0000000..2484942 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/CHANGELOG.md @@ -0,0 +1,30 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.2](https://github.com/ljharb/call-bind-apply-helpers/compare/v1.0.1...v1.0.2) - 2025-02-12 + +### Commits + +- [types] improve inferred types [`e6f9586`](https://github.com/ljharb/call-bind-apply-helpers/commit/e6f95860a3c72879cb861a858cdfb8138fbedec1) +- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `@types/tape`, `es-value-fixtures`, `for-each`, `has-strict-mode`, `object-inspect` [`e43d540`](https://github.com/ljharb/call-bind-apply-helpers/commit/e43d5409f97543bfbb11f345d47d8ce4e066d8c1) + +## [v1.0.1](https://github.com/ljharb/call-bind-apply-helpers/compare/v1.0.0...v1.0.1) - 2024-12-08 + +### Commits + +- [types] `reflectApply`: fix types [`4efc396`](https://github.com/ljharb/call-bind-apply-helpers/commit/4efc3965351a4f02cc55e836fa391d3d11ef2ef8) +- [Fix] `reflectApply`: oops, Reflect is not a function [`83cc739`](https://github.com/ljharb/call-bind-apply-helpers/commit/83cc7395de6b79b7730bdf092f1436f0b1263c75) +- [Dev Deps] update `@arethetypeswrong/cli` [`80bd5d3`](https://github.com/ljharb/call-bind-apply-helpers/commit/80bd5d3ae58b4f6b6995ce439dd5a1bcb178a940) + +## v1.0.0 - 2024-12-05 + +### Commits + +- Initial implementation, tests, readme [`7879629`](https://github.com/ljharb/call-bind-apply-helpers/commit/78796290f9b7430c9934d6f33d94ae9bc89fce04) +- Initial commit [`3f1dc16`](https://github.com/ljharb/call-bind-apply-helpers/commit/3f1dc164afc43285631b114a5f9dd9137b2b952f) +- npm init [`081df04`](https://github.com/ljharb/call-bind-apply-helpers/commit/081df048c312fcee400922026f6e97281200a603) +- Only apps should have lockfiles [`5b9ca0f`](https://github.com/ljharb/call-bind-apply-helpers/commit/5b9ca0fe8101ebfaf309c549caac4e0a017ed930) diff --git a/node_modules/call-bind-apply-helpers/LICENSE b/node_modules/call-bind-apply-helpers/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/call-bind-apply-helpers/README.md b/node_modules/call-bind-apply-helpers/README.md new file mode 100644 index 0000000..8fc0dae --- /dev/null +++ b/node_modules/call-bind-apply-helpers/README.md @@ -0,0 +1,62 @@ +# call-bind-apply-helpers <sup>[![Version Badge][npm-version-svg]][package-url]</sup> + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Helper functions around Function call/apply/bind, for use in `call-bind`. + +The only packages that should likely ever use this package directly are `call-bind` and `get-intrinsic`. +Please use `call-bind` unless you have a very good reason not to. + +## Getting started + +```sh +npm install --save call-bind-apply-helpers +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const callBindBasic = require('call-bind-apply-helpers'); + +function f(a, b) { + assert.equal(this, 1); + assert.equal(a, 2); + assert.equal(b, 3); + assert.equal(arguments.length, 2); +} + +const fBound = callBindBasic([f, 1]); + +delete Function.prototype.call; +delete Function.prototype.bind; + +fBound(2, 3); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/call-bind-apply-helpers +[npm-version-svg]: https://versionbadg.es/ljharb/call-bind-apply-helpers.svg +[deps-svg]: https://david-dm.org/ljharb/call-bind-apply-helpers.svg +[deps-url]: https://david-dm.org/ljharb/call-bind-apply-helpers +[dev-deps-svg]: https://david-dm.org/ljharb/call-bind-apply-helpers/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/call-bind-apply-helpers#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/call-bind-apply-helpers.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/call-bind-apply-helpers.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/call-bind-apply-helpers.svg +[downloads-url]: https://npm-stat.com/charts.html?package=call-bind-apply-helpers +[codecov-image]: https://codecov.io/gh/ljharb/call-bind-apply-helpers/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/call-bind-apply-helpers/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/call-bind-apply-helpers +[actions-url]: https://github.com/ljharb/call-bind-apply-helpers/actions diff --git a/node_modules/call-bind-apply-helpers/actualApply.d.ts b/node_modules/call-bind-apply-helpers/actualApply.d.ts new file mode 100644 index 0000000..b87286a --- /dev/null +++ b/node_modules/call-bind-apply-helpers/actualApply.d.ts @@ -0,0 +1 @@ +export = Reflect.apply; \ No newline at end of file diff --git a/node_modules/call-bind-apply-helpers/actualApply.js b/node_modules/call-bind-apply-helpers/actualApply.js new file mode 100644 index 0000000..ffa5135 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/actualApply.js @@ -0,0 +1,10 @@ +'use strict'; + +var bind = require('function-bind'); + +var $apply = require('./functionApply'); +var $call = require('./functionCall'); +var $reflectApply = require('./reflectApply'); + +/** @type {import('./actualApply')} */ +module.exports = $reflectApply || bind.call($call, $apply); diff --git a/node_modules/call-bind-apply-helpers/applyBind.d.ts b/node_modules/call-bind-apply-helpers/applyBind.d.ts new file mode 100644 index 0000000..d176c1a --- /dev/null +++ b/node_modules/call-bind-apply-helpers/applyBind.d.ts @@ -0,0 +1,19 @@ +import actualApply from './actualApply'; + +type TupleSplitHead<T extends any[], N extends number> = T['length'] extends N + ? T + : T extends [...infer R, any] + ? TupleSplitHead<R, N> + : never + +type TupleSplitTail<T, N extends number, O extends any[] = []> = O['length'] extends N + ? T + : T extends [infer F, ...infer R] + ? TupleSplitTail<[...R], N, [...O, F]> + : never + +type TupleSplit<T extends any[], N extends number> = [TupleSplitHead<T, N>, TupleSplitTail<T, N>] + +declare function applyBind(...args: TupleSplit<Parameters<typeof actualApply>, 2>[1]): ReturnType<typeof actualApply>; + +export = applyBind; \ No newline at end of file diff --git a/node_modules/call-bind-apply-helpers/applyBind.js b/node_modules/call-bind-apply-helpers/applyBind.js new file mode 100644 index 0000000..d2b7723 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/applyBind.js @@ -0,0 +1,10 @@ +'use strict'; + +var bind = require('function-bind'); +var $apply = require('./functionApply'); +var actualApply = require('./actualApply'); + +/** @type {import('./applyBind')} */ +module.exports = function applyBind() { + return actualApply(bind, $apply, arguments); +}; diff --git a/node_modules/call-bind-apply-helpers/functionApply.d.ts b/node_modules/call-bind-apply-helpers/functionApply.d.ts new file mode 100644 index 0000000..1f6e11b --- /dev/null +++ b/node_modules/call-bind-apply-helpers/functionApply.d.ts @@ -0,0 +1 @@ +export = Function.prototype.apply; \ No newline at end of file diff --git a/node_modules/call-bind-apply-helpers/functionApply.js b/node_modules/call-bind-apply-helpers/functionApply.js new file mode 100644 index 0000000..c71df9c --- /dev/null +++ b/node_modules/call-bind-apply-helpers/functionApply.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./functionApply')} */ +module.exports = Function.prototype.apply; diff --git a/node_modules/call-bind-apply-helpers/functionCall.d.ts b/node_modules/call-bind-apply-helpers/functionCall.d.ts new file mode 100644 index 0000000..15e93df --- /dev/null +++ b/node_modules/call-bind-apply-helpers/functionCall.d.ts @@ -0,0 +1 @@ +export = Function.prototype.call; \ No newline at end of file diff --git a/node_modules/call-bind-apply-helpers/functionCall.js b/node_modules/call-bind-apply-helpers/functionCall.js new file mode 100644 index 0000000..7a8d873 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/functionCall.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./functionCall')} */ +module.exports = Function.prototype.call; diff --git a/node_modules/call-bind-apply-helpers/index.d.ts b/node_modules/call-bind-apply-helpers/index.d.ts new file mode 100644 index 0000000..541516b --- /dev/null +++ b/node_modules/call-bind-apply-helpers/index.d.ts @@ -0,0 +1,64 @@ +type RemoveFromTuple< + Tuple extends readonly unknown[], + RemoveCount extends number, + Index extends 1[] = [] +> = Index["length"] extends RemoveCount + ? Tuple + : Tuple extends [infer First, ...infer Rest] + ? RemoveFromTuple<Rest, RemoveCount, [...Index, 1]> + : Tuple; + +type ConcatTuples< + Prefix extends readonly unknown[], + Suffix extends readonly unknown[] +> = [...Prefix, ...Suffix]; + +type ExtractFunctionParams<T> = T extends (this: infer TThis, ...args: infer P extends readonly unknown[]) => infer R + ? { thisArg: TThis; params: P; returnType: R } + : never; + +type BindFunction< + T extends (this: any, ...args: any[]) => any, + TThis, + TBoundArgs extends readonly unknown[], + ReceiverBound extends boolean +> = ExtractFunctionParams<T> extends { + thisArg: infer OrigThis; + params: infer P extends readonly unknown[]; + returnType: infer R; +} + ? ReceiverBound extends true + ? (...args: RemoveFromTuple<P, Extract<TBoundArgs["length"], number>>) => R extends [OrigThis, ...infer Rest] + ? [TThis, ...Rest] // Replace `this` with `thisArg` + : R + : <U, RemainingArgs extends RemoveFromTuple<P, Extract<TBoundArgs["length"], number>>>( + thisArg: U, + ...args: RemainingArgs + ) => R extends [OrigThis, ...infer Rest] + ? [U, ...ConcatTuples<TBoundArgs, Rest>] // Preserve bound args in return type + : R + : never; + +declare function callBind< + const T extends (this: any, ...args: any[]) => any, + Extracted extends ExtractFunctionParams<T>, + const TBoundArgs extends Partial<Extracted["params"]> & readonly unknown[], + const TThis extends Extracted["thisArg"] +>( + args: [fn: T, thisArg: TThis, ...boundArgs: TBoundArgs] +): BindFunction<T, TThis, TBoundArgs, true>; + +declare function callBind< + const T extends (this: any, ...args: any[]) => any, + Extracted extends ExtractFunctionParams<T>, + const TBoundArgs extends Partial<Extracted["params"]> & readonly unknown[] +>( + args: [fn: T, ...boundArgs: TBoundArgs] +): BindFunction<T, Extracted["thisArg"], TBoundArgs, false>; + +declare function callBind<const TArgs extends readonly unknown[]>( + args: [fn: Exclude<TArgs[0], Function>, ...rest: TArgs] +): never; + +// export as namespace callBind; +export = callBind; diff --git a/node_modules/call-bind-apply-helpers/index.js b/node_modules/call-bind-apply-helpers/index.js new file mode 100644 index 0000000..2f6dab4 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/index.js @@ -0,0 +1,15 @@ +'use strict'; + +var bind = require('function-bind'); +var $TypeError = require('es-errors/type'); + +var $call = require('./functionCall'); +var $actualApply = require('./actualApply'); + +/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */ +module.exports = function callBindBasic(args) { + if (args.length < 1 || typeof args[0] !== 'function') { + throw new $TypeError('a function is required'); + } + return $actualApply(bind, $call, args); +}; diff --git a/node_modules/call-bind-apply-helpers/package.json b/node_modules/call-bind-apply-helpers/package.json new file mode 100644 index 0000000..923b8be --- /dev/null +++ b/node_modules/call-bind-apply-helpers/package.json @@ -0,0 +1,85 @@ +{ + "name": "call-bind-apply-helpers", + "version": "1.0.2", + "description": "Helper functions around Function call/apply/bind, for use in `call-bind`", + "main": "index.js", + "exports": { + ".": "./index.js", + "./actualApply": "./actualApply.js", + "./applyBind": "./applyBind.js", + "./functionApply": "./functionApply.js", + "./functionCall": "./functionCall.js", + "./reflectApply": "./reflectApply.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=auto", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/call-bind-apply-helpers.git" + }, + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/call-bind-apply-helpers/issues" + }, + "homepage": "https://github.com/ljharb/call-bind-apply-helpers#readme", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.3", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/for-each": "^0.3.3", + "@types/function-bind": "^1.1.10", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.8.1", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "es-value-fixtures": "^1.7.1", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.5", + "has-strict-mode": "^1.1.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.4", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/call-bind-apply-helpers/reflectApply.d.ts b/node_modules/call-bind-apply-helpers/reflectApply.d.ts new file mode 100644 index 0000000..6b2ae76 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/reflectApply.d.ts @@ -0,0 +1,3 @@ +declare const reflectApply: false | typeof Reflect.apply; + +export = reflectApply; diff --git a/node_modules/call-bind-apply-helpers/reflectApply.js b/node_modules/call-bind-apply-helpers/reflectApply.js new file mode 100644 index 0000000..3d03caa --- /dev/null +++ b/node_modules/call-bind-apply-helpers/reflectApply.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./reflectApply')} */ +module.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply; diff --git a/node_modules/call-bind-apply-helpers/test/index.js b/node_modules/call-bind-apply-helpers/test/index.js new file mode 100644 index 0000000..1cdc89e --- /dev/null +++ b/node_modules/call-bind-apply-helpers/test/index.js @@ -0,0 +1,63 @@ +'use strict'; + +var callBind = require('../'); +var hasStrictMode = require('has-strict-mode')(); +var forEach = require('for-each'); +var inspect = require('object-inspect'); +var v = require('es-value-fixtures'); + +var test = require('tape'); + +test('callBindBasic', function (t) { + forEach(v.nonFunctions, function (nonFunction) { + t['throws']( + // @ts-expect-error + function () { callBind([nonFunction]); }, + TypeError, + inspect(nonFunction) + ' is not a function' + ); + }); + + var sentinel = { sentinel: true }; + /** @type {<T, A extends number, B extends number>(this: T, a: A, b: B) => [T | undefined, A, B]} */ + var func = function (a, b) { + // eslint-disable-next-line no-invalid-this + return [!hasStrictMode && this === global ? undefined : this, a, b]; + }; + t.equal(func.length, 2, 'original function length is 2'); + + /** type {(thisArg: unknown, a: number, b: number) => [unknown, number, number]} */ + var bound = callBind([func]); + /** type {((a: number, b: number) => [typeof sentinel, typeof a, typeof b])} */ + var boundR = callBind([func, sentinel]); + /** type {((b: number) => [typeof sentinel, number, typeof b])} */ + var boundArg = callBind([func, sentinel, /** @type {const} */ (1)]); + + // @ts-expect-error + t.deepEqual(bound(), [undefined, undefined, undefined], 'bound func with no args'); + + // @ts-expect-error + t.deepEqual(func(), [undefined, undefined, undefined], 'unbound func with too few args'); + // @ts-expect-error + t.deepEqual(bound(1, 2), [hasStrictMode ? 1 : Object(1), 2, undefined], 'bound func too few args'); + // @ts-expect-error + t.deepEqual(boundR(), [sentinel, undefined, undefined], 'bound func with receiver, with too few args'); + // @ts-expect-error + t.deepEqual(boundArg(), [sentinel, 1, undefined], 'bound func with receiver and arg, with too few args'); + + t.deepEqual(func(1, 2), [undefined, 1, 2], 'unbound func with right args'); + t.deepEqual(bound(1, 2, 3), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with right args'); + t.deepEqual(boundR(1, 2), [sentinel, 1, 2], 'bound func with receiver, with right args'); + t.deepEqual(boundArg(2), [sentinel, 1, 2], 'bound func with receiver and arg, with right arg'); + + // @ts-expect-error + t.deepEqual(func(1, 2, 3), [undefined, 1, 2], 'unbound func with too many args'); + // @ts-expect-error + t.deepEqual(bound(1, 2, 3, 4), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with too many args'); + // @ts-expect-error + t.deepEqual(boundR(1, 2, 3), [sentinel, 1, 2], 'bound func with receiver, with too many args'); + // @ts-expect-error + t.deepEqual(boundArg(2, 3), [sentinel, 1, 2], 'bound func with receiver and arg, with too many args'); + + t.end(); +}); diff --git a/node_modules/call-bind-apply-helpers/tsconfig.json b/node_modules/call-bind-apply-helpers/tsconfig.json new file mode 100644 index 0000000..aef9993 --- /dev/null +++ b/node_modules/call-bind-apply-helpers/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} \ No newline at end of file diff --git a/node_modules/call-bound/.eslintrc b/node_modules/call-bound/.eslintrc new file mode 100644 index 0000000..2612ed8 --- /dev/null +++ b/node_modules/call-bound/.eslintrc @@ -0,0 +1,13 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/node_modules/call-bound/.github/FUNDING.yml b/node_modules/call-bound/.github/FUNDING.yml new file mode 100644 index 0000000..2a2a135 --- /dev/null +++ b/node_modules/call-bound/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/call-bound +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/call-bound/.nycrc b/node_modules/call-bound/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/node_modules/call-bound/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/call-bound/CHANGELOG.md b/node_modules/call-bound/CHANGELOG.md new file mode 100644 index 0000000..8bde4e9 --- /dev/null +++ b/node_modules/call-bound/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.4](https://github.com/ljharb/call-bound/compare/v1.0.3...v1.0.4) - 2025-03-03 + +### Commits + +- [types] improve types [`e648922`](https://github.com/ljharb/call-bound/commit/e6489222a9e54f350fbf952ceabe51fd8b6027ff) +- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `@types/tape`, `es-value-fixtures`, `for-each`, `has-strict-mode`, `object-inspect` [`a42a5eb`](https://github.com/ljharb/call-bound/commit/a42a5ebe6c1b54fcdc7997c7dc64fdca9e936719) +- [Deps] update `call-bind-apply-helpers`, `get-intrinsic` [`f529eac`](https://github.com/ljharb/call-bound/commit/f529eac132404c17156bbc23ab2297a25d0f20b8) + +## [v1.0.3](https://github.com/ljharb/call-bound/compare/v1.0.2...v1.0.3) - 2024-12-15 + +### Commits + +- [Refactor] use `call-bind-apply-helpers` instead of `call-bind` [`5e0b134`](https://github.com/ljharb/call-bound/commit/5e0b13496df14fb7d05dae9412f088da8d3f75be) +- [Deps] update `get-intrinsic` [`41fc967`](https://github.com/ljharb/call-bound/commit/41fc96732a22c7b7e8f381f93ccc54bb6293be2e) +- [readme] fix example [`79a0137`](https://github.com/ljharb/call-bound/commit/79a0137723f7c6d09c9c05452bbf8d5efb5d6e49) +- [meta] add `sideEffects` flag [`08b07be`](https://github.com/ljharb/call-bound/commit/08b07be7f1c03f67dc6f3cdaf0906259771859f7) + +## [v1.0.2](https://github.com/ljharb/call-bound/compare/v1.0.1...v1.0.2) - 2024-12-10 + +### Commits + +- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `gopd` [`e6a5ffe`](https://github.com/ljharb/call-bound/commit/e6a5ffe849368fe4f74dfd6cdeca1b9baa39e8d5) +- [Deps] update `call-bind`, `get-intrinsic` [`2aeb5b5`](https://github.com/ljharb/call-bound/commit/2aeb5b521dc2b2683d1345c753ea1161de2d1c14) +- [types] improve return type [`1a0c9fe`](https://github.com/ljharb/call-bound/commit/1a0c9fe3114471e7ca1f57d104e2efe713bb4871) + +## v1.0.1 - 2024-12-05 + +### Commits + +- Initial implementation, tests, readme, types [`6d94121`](https://github.com/ljharb/call-bound/commit/6d94121a9243602e506334069f7a03189fe3363d) +- Initial commit [`0eae867`](https://github.com/ljharb/call-bound/commit/0eae867334ea025c33e6e91cdecfc9df96680cf9) +- npm init [`71b2479`](https://github.com/ljharb/call-bound/commit/71b2479c6723e0b7d91a6b663613067e98b7b275) +- Only apps should have lockfiles [`c3754a9`](https://github.com/ljharb/call-bound/commit/c3754a949b7f9132b47e2d18c1729889736741eb) +- [actions] skip `npm ls` in node < 10 [`74275a5`](https://github.com/ljharb/call-bound/commit/74275a5186b8caf6309b6b97472bdcb0df4683a8) +- [Dev Deps] add missing peer dep [`1354de8`](https://github.com/ljharb/call-bound/commit/1354de8679413e4ae9c523d85f76fa7a5e032d97) diff --git a/node_modules/call-bound/LICENSE b/node_modules/call-bound/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/node_modules/call-bound/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/call-bound/README.md b/node_modules/call-bound/README.md new file mode 100644 index 0000000..a44e43e --- /dev/null +++ b/node_modules/call-bound/README.md @@ -0,0 +1,53 @@ +# call-bound <sup>[![Version Badge][npm-version-svg]][package-url]</sup> + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Robust call-bound JavaScript intrinsics, using `call-bind` and `get-intrinsic`. + +## Getting started + +```sh +npm install --save call-bound +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const callBound = require('call-bound'); + +const slice = callBound('Array.prototype.slice'); + +delete Function.prototype.call; +delete Function.prototype.bind; +delete Array.prototype.slice; + +assert.deepEqual(slice([1, 2, 3, 4], 1, -1), [2, 3]); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/call-bound +[npm-version-svg]: https://versionbadg.es/ljharb/call-bound.svg +[deps-svg]: https://david-dm.org/ljharb/call-bound.svg +[deps-url]: https://david-dm.org/ljharb/call-bound +[dev-deps-svg]: https://david-dm.org/ljharb/call-bound/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/call-bound#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/call-bound.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/call-bound.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/call-bound.svg +[downloads-url]: https://npm-stat.com/charts.html?package=call-bound +[codecov-image]: https://codecov.io/gh/ljharb/call-bound/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/call-bound/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/call-bound +[actions-url]: https://github.com/ljharb/call-bound/actions diff --git a/node_modules/call-bound/index.d.ts b/node_modules/call-bound/index.d.ts new file mode 100644 index 0000000..5562f00 --- /dev/null +++ b/node_modules/call-bound/index.d.ts @@ -0,0 +1,94 @@ +type Intrinsic = typeof globalThis; + +type IntrinsicName = keyof Intrinsic | `%${keyof Intrinsic}%`; + +type IntrinsicPath = IntrinsicName | `${StripPercents<IntrinsicName>}.${string}` | `%${StripPercents<IntrinsicName>}.${string}%`; + +type AllowMissing = boolean; + +type StripPercents<T extends string> = T extends `%${infer U}%` ? U : T; + +type BindMethodPrecise<F> = + F extends (this: infer This, ...args: infer Args) => infer R + ? (obj: This, ...args: Args) => R + : F extends { + (this: infer This1, ...args: infer Args1): infer R1; + (this: infer This2, ...args: infer Args2): infer R2 + } + ? { + (obj: This1, ...args: Args1): R1; + (obj: This2, ...args: Args2): R2 + } + : never + +// Extract method type from a prototype +type GetPrototypeMethod<T extends keyof typeof globalThis, M extends string> = + (typeof globalThis)[T] extends { prototype: any } + ? M extends keyof (typeof globalThis)[T]['prototype'] + ? (typeof globalThis)[T]['prototype'][M] + : never + : never + +// Get static property/method +type GetStaticMember<T extends keyof typeof globalThis, P extends string> = + P extends keyof (typeof globalThis)[T] ? (typeof globalThis)[T][P] : never + +// Type that maps string path to actual bound function or value with better precision +type BoundIntrinsic<S extends string> = + S extends `${infer Obj}.prototype.${infer Method}` + ? Obj extends keyof typeof globalThis + ? BindMethodPrecise<GetPrototypeMethod<Obj, Method & string>> + : unknown + : S extends `${infer Obj}.${infer Prop}` + ? Obj extends keyof typeof globalThis + ? GetStaticMember<Obj, Prop & string> + : unknown + : unknown + +declare function arraySlice<T>(array: readonly T[], start?: number, end?: number): T[]; +declare function arraySlice<T>(array: ArrayLike<T>, start?: number, end?: number): T[]; +declare function arraySlice<T>(array: IArguments, start?: number, end?: number): T[]; + +// Special cases for methods that need explicit typing +interface SpecialCases { + '%Object.prototype.isPrototypeOf%': (thisArg: {}, obj: unknown) => boolean; + '%String.prototype.replace%': { + (str: string, searchValue: string | RegExp, replaceValue: string): string; + (str: string, searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string + }; + '%Object.prototype.toString%': (obj: {}) => string; + '%Object.prototype.hasOwnProperty%': (obj: {}, v: PropertyKey) => boolean; + '%Array.prototype.slice%': typeof arraySlice; + '%Array.prototype.map%': <T, U>(array: readonly T[], callbackfn: (value: T, index: number, array: readonly T[]) => U, thisArg?: any) => U[]; + '%Array.prototype.filter%': <T>(array: readonly T[], predicate: (value: T, index: number, array: readonly T[]) => unknown, thisArg?: any) => T[]; + '%Array.prototype.indexOf%': <T>(array: readonly T[], searchElement: T, fromIndex?: number) => number; + '%Function.prototype.apply%': <T, A extends any[], R>(fn: (...args: A) => R, thisArg: any, args: A) => R; + '%Function.prototype.call%': <T, A extends any[], R>(fn: (...args: A) => R, thisArg: any, ...args: A) => R; + '%Function.prototype.bind%': <T, A extends any[], R>(fn: (...args: A) => R, thisArg: any, ...args: A) => (...remainingArgs: A) => R; + '%Promise.prototype.then%': { + <T, R>(promise: Promise<T>, onfulfilled: (value: T) => R | PromiseLike<R>): Promise<R>; + <T, R>(promise: Promise<T>, onfulfilled: ((value: T) => R | PromiseLike<R>) | undefined | null, onrejected: (reason: any) => R | PromiseLike<R>): Promise<R>; + }; + '%RegExp.prototype.test%': (regexp: RegExp, str: string) => boolean; + '%RegExp.prototype.exec%': (regexp: RegExp, str: string) => RegExpExecArray | null; + '%Error.prototype.toString%': (error: Error) => string; + '%TypeError.prototype.toString%': (error: TypeError) => string; + '%String.prototype.split%': ( + obj: unknown, + splitter: string | RegExp | { + [Symbol.split](string: string, limit?: number): string[]; + }, + limit?: number | undefined + ) => string[]; +} + +/** + * Returns a bound function for a prototype method, or a value for a static property. + * + * @param name - The name of the intrinsic (e.g. 'Array.prototype.slice') + * @param {AllowMissing} [allowMissing] - Whether to allow missing intrinsics (default: false) + */ +declare function callBound<K extends keyof SpecialCases | StripPercents<keyof SpecialCases>, S extends IntrinsicPath>(name: K, allowMissing?: AllowMissing): SpecialCases[`%${StripPercents<K>}%`]; +declare function callBound<K extends keyof SpecialCases | StripPercents<keyof SpecialCases>, S extends IntrinsicPath>(name: S, allowMissing?: AllowMissing): BoundIntrinsic<S>; + +export = callBound; diff --git a/node_modules/call-bound/index.js b/node_modules/call-bound/index.js new file mode 100644 index 0000000..e9ade74 --- /dev/null +++ b/node_modules/call-bound/index.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var callBindBasic = require('call-bind-apply-helpers'); + +/** @type {(thisArg: string, searchString: string, position?: number) => number} */ +var $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]); + +/** @type {import('.')} */ +module.exports = function callBoundIntrinsic(name, allowMissing) { + /* eslint no-extra-parens: 0 */ + + var intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing)); + if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { + return callBindBasic(/** @type {const} */ ([intrinsic])); + } + return intrinsic; +}; diff --git a/node_modules/call-bound/package.json b/node_modules/call-bound/package.json new file mode 100644 index 0000000..d542db4 --- /dev/null +++ b/node_modules/call-bound/package.json @@ -0,0 +1,99 @@ +{ + "name": "call-bound", + "version": "1.0.4", + "description": "Robust call-bound JavaScript intrinsics, using `call-bind` and `get-intrinsic`.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=auto", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/call-bound.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "es", + "js", + "callbind", + "callbound", + "call", + "bind", + "bound", + "call-bind", + "call-bound", + "function", + "es-abstract" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/call-bound/issues" + }, + "homepage": "https://github.com/ljharb/call-bound#readme", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.4", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.3.0", + "@types/call-bind": "^1.0.5", + "@types/get-intrinsic": "^1.2.3", + "@types/tape": "^5.8.1", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "es-value-fixtures": "^1.7.1", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.5", + "gopd": "^1.2.0", + "has-strict-mode": "^1.1.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.4", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/call-bound/test/index.js b/node_modules/call-bound/test/index.js new file mode 100644 index 0000000..a2fc9f0 --- /dev/null +++ b/node_modules/call-bound/test/index.js @@ -0,0 +1,61 @@ +'use strict'; + +var test = require('tape'); + +var callBound = require('../'); + +/** @template {true} T @template U @typedef {T extends U ? T : never} AssertType */ + +test('callBound', function (t) { + // static primitive + t.equal(callBound('Array.length'), Array.length, 'Array.length yields itself'); + t.equal(callBound('%Array.length%'), Array.length, '%Array.length% yields itself'); + + // static non-function object + t.equal(callBound('Array.prototype'), Array.prototype, 'Array.prototype yields itself'); + t.equal(callBound('%Array.prototype%'), Array.prototype, '%Array.prototype% yields itself'); + t.equal(callBound('Array.constructor'), Array.constructor, 'Array.constructor yields itself'); + t.equal(callBound('%Array.constructor%'), Array.constructor, '%Array.constructor% yields itself'); + + // static function + t.equal(callBound('Date.parse'), Date.parse, 'Date.parse yields itself'); + t.equal(callBound('%Date.parse%'), Date.parse, '%Date.parse% yields itself'); + + // prototype primitive + t.equal(callBound('Error.prototype.message'), Error.prototype.message, 'Error.prototype.message yields itself'); + t.equal(callBound('%Error.prototype.message%'), Error.prototype.message, '%Error.prototype.message% yields itself'); + + var x = callBound('Object.prototype.toString'); + var y = callBound('%Object.prototype.toString%'); + + // prototype function + t.notEqual(x, Object.prototype.toString, 'Object.prototype.toString does not yield itself'); + t.notEqual(y, Object.prototype.toString, '%Object.prototype.toString% does not yield itself'); + t.equal(x(true), Object.prototype.toString.call(true), 'call-bound Object.prototype.toString calls into the original'); + t.equal(y(true), Object.prototype.toString.call(true), 'call-bound %Object.prototype.toString% calls into the original'); + + t['throws']( + // @ts-expect-error + function () { callBound('does not exist'); }, + SyntaxError, + 'nonexistent intrinsic throws' + ); + t['throws']( + // @ts-expect-error + function () { callBound('does not exist', true); }, + SyntaxError, + 'allowMissing arg still throws for unknown intrinsic' + ); + + t.test('real but absent intrinsic', { skip: typeof WeakRef !== 'undefined' }, function (st) { + st['throws']( + function () { callBound('WeakRef'); }, + TypeError, + 'real but absent intrinsic throws' + ); + st.equal(callBound('WeakRef', true), undefined, 'allowMissing arg avoids exception'); + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/call-bound/tsconfig.json b/node_modules/call-bound/tsconfig.json new file mode 100644 index 0000000..8976d98 --- /dev/null +++ b/node_modules/call-bound/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "ESNext", + "lib": ["es2024"], + }, + "exclude": [ + "coverage", + ], +} diff --git a/node_modules/content-type/HISTORY.md b/node_modules/content-type/HISTORY.md new file mode 100644 index 0000000..4583671 --- /dev/null +++ b/node_modules/content-type/HISTORY.md @@ -0,0 +1,29 @@ +1.0.5 / 2023-01-29 +================== + + * perf: skip value escaping when unnecessary + +1.0.4 / 2017-09-11 +================== + + * perf: skip parameter parsing when no parameters + +1.0.3 / 2017-09-10 +================== + + * perf: remove argument reassignment + +1.0.2 / 2016-05-09 +================== + + * perf: enable strict mode + +1.0.1 / 2015-02-13 +================== + + * Improve missing `Content-Type` header error message + +1.0.0 / 2015-02-01 +================== + + * Initial implementation, derived from `media-typer@0.3.0` diff --git a/node_modules/content-type/LICENSE b/node_modules/content-type/LICENSE new file mode 100644 index 0000000..34b1a2d --- /dev/null +++ b/node_modules/content-type/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/content-type/README.md b/node_modules/content-type/README.md new file mode 100644 index 0000000..c1a922a --- /dev/null +++ b/node_modules/content-type/README.md @@ -0,0 +1,94 @@ +# content-type + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][ci-image]][ci-url] +[![Coverage Status][coveralls-image]][coveralls-url] + +Create and parse HTTP Content-Type header according to RFC 7231 + +## Installation + +```sh +$ npm install content-type +``` + +## API + +```js +var contentType = require('content-type') +``` + +### contentType.parse(string) + +```js +var obj = contentType.parse('image/svg+xml; charset=utf-8') +``` + +Parse a `Content-Type` header. This will return an object with the following +properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`): + + - `type`: The media type (the type and subtype, always lower case). + Example: `'image/svg+xml'` + + - `parameters`: An object of the parameters in the media type (name of parameter + always lower case). Example: `{charset: 'utf-8'}` + +Throws a `TypeError` if the string is missing or invalid. + +### contentType.parse(req) + +```js +var obj = contentType.parse(req) +``` + +Parse the `Content-Type` header from the given `req`. Short-cut for +`contentType.parse(req.headers['content-type'])`. + +Throws a `TypeError` if the `Content-Type` header is missing or invalid. + +### contentType.parse(res) + +```js +var obj = contentType.parse(res) +``` + +Parse the `Content-Type` header set on the given `res`. Short-cut for +`contentType.parse(res.getHeader('content-type'))`. + +Throws a `TypeError` if the `Content-Type` header is missing or invalid. + +### contentType.format(obj) + +```js +var str = contentType.format({ + type: 'image/svg+xml', + parameters: { charset: 'utf-8' } +}) +``` + +Format an object into a `Content-Type` header. This will return a string of the +content type for the given object with the following properties (examples are +shown that produce the string `'image/svg+xml; charset=utf-8'`): + + - `type`: The media type (will be lower-cased). Example: `'image/svg+xml'` + + - `parameters`: An object of the parameters in the media type (name of the + parameter will be lower-cased). Example: `{charset: 'utf-8'}` + +Throws a `TypeError` if the object contains an invalid type or parameter names. + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/jshttp/content-type/master?label=ci +[ci-url]: https://github.com/jshttp/content-type/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/content-type/master +[coveralls-url]: https://coveralls.io/r/jshttp/content-type?branch=master +[node-image]: https://badgen.net/npm/node/content-type +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/content-type +[npm-url]: https://npmjs.org/package/content-type +[npm-version-image]: https://badgen.net/npm/v/content-type diff --git a/node_modules/content-type/index.js b/node_modules/content-type/index.js new file mode 100644 index 0000000..41840e7 --- /dev/null +++ b/node_modules/content-type/index.js @@ -0,0 +1,225 @@ +/*! + * content-type + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * RegExp to match *( ";" parameter ) in RFC 7231 sec 3.1.1.1 + * + * parameter = token "=" ( token / quoted-string ) + * token = 1*tchar + * tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" + * / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" + * / DIGIT / ALPHA + * ; any VCHAR, except delimiters + * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE + * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text + * obs-text = %x80-FF + * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text ) + */ +var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex +var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/ // eslint-disable-line no-control-regex +var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/ + +/** + * RegExp to match quoted-pair in RFC 7230 sec 3.2.6 + * + * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text ) + * obs-text = %x80-FF + */ +var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g // eslint-disable-line no-control-regex + +/** + * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6 + */ +var QUOTE_REGEXP = /([\\"])/g + +/** + * RegExp to match type in RFC 7231 sec 3.1.1.1 + * + * media-type = type "/" subtype + * type = token + * subtype = token + */ +var TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/ + +/** + * Module exports. + * @public + */ + +exports.format = format +exports.parse = parse + +/** + * Format object to media type. + * + * @param {object} obj + * @return {string} + * @public + */ + +function format (obj) { + if (!obj || typeof obj !== 'object') { + throw new TypeError('argument obj is required') + } + + var parameters = obj.parameters + var type = obj.type + + if (!type || !TYPE_REGEXP.test(type)) { + throw new TypeError('invalid type') + } + + var string = type + + // append parameters + if (parameters && typeof parameters === 'object') { + var param + var params = Object.keys(parameters).sort() + + for (var i = 0; i < params.length; i++) { + param = params[i] + + if (!TOKEN_REGEXP.test(param)) { + throw new TypeError('invalid parameter name') + } + + string += '; ' + param + '=' + qstring(parameters[param]) + } + } + + return string +} + +/** + * Parse media type to object. + * + * @param {string|object} string + * @return {Object} + * @public + */ + +function parse (string) { + if (!string) { + throw new TypeError('argument string is required') + } + + // support req/res-like objects as argument + var header = typeof string === 'object' + ? getcontenttype(string) + : string + + if (typeof header !== 'string') { + throw new TypeError('argument string is required to be a string') + } + + var index = header.indexOf(';') + var type = index !== -1 + ? header.slice(0, index).trim() + : header.trim() + + if (!TYPE_REGEXP.test(type)) { + throw new TypeError('invalid media type') + } + + var obj = new ContentType(type.toLowerCase()) + + // parse parameters + if (index !== -1) { + var key + var match + var value + + PARAM_REGEXP.lastIndex = index + + while ((match = PARAM_REGEXP.exec(header))) { + if (match.index !== index) { + throw new TypeError('invalid parameter format') + } + + index += match[0].length + key = match[1].toLowerCase() + value = match[2] + + if (value.charCodeAt(0) === 0x22 /* " */) { + // remove quotes + value = value.slice(1, -1) + + // remove escapes + if (value.indexOf('\\') !== -1) { + value = value.replace(QESC_REGEXP, '$1') + } + } + + obj.parameters[key] = value + } + + if (index !== header.length) { + throw new TypeError('invalid parameter format') + } + } + + return obj +} + +/** + * Get content-type from req/res objects. + * + * @param {object} + * @return {Object} + * @private + */ + +function getcontenttype (obj) { + var header + + if (typeof obj.getHeader === 'function') { + // res-like + header = obj.getHeader('content-type') + } else if (typeof obj.headers === 'object') { + // req-like + header = obj.headers && obj.headers['content-type'] + } + + if (typeof header !== 'string') { + throw new TypeError('content-type header is missing from object') + } + + return header +} + +/** + * Quote a string if necessary. + * + * @param {string} val + * @return {string} + * @private + */ + +function qstring (val) { + var str = String(val) + + // no need to quote tokens + if (TOKEN_REGEXP.test(str)) { + return str + } + + if (str.length > 0 && !TEXT_REGEXP.test(str)) { + throw new TypeError('invalid parameter value') + } + + return '"' + str.replace(QUOTE_REGEXP, '\\$1') + '"' +} + +/** + * Class to represent a content type. + * @private + */ +function ContentType (type) { + this.parameters = Object.create(null) + this.type = type +} diff --git a/node_modules/content-type/package.json b/node_modules/content-type/package.json new file mode 100644 index 0000000..9db19f6 --- /dev/null +++ b/node_modules/content-type/package.json @@ -0,0 +1,42 @@ +{ + "name": "content-type", + "description": "Create and parse HTTP Content-Type header", + "version": "1.0.5", + "author": "Douglas Christopher Wilson <doug@somethingdoug.com>", + "license": "MIT", + "keywords": [ + "content-type", + "http", + "req", + "res", + "rfc7231" + ], + "repository": "jshttp/content-type", + "devDependencies": { + "deep-equal": "1.0.1", + "eslint": "8.32.0", + "eslint-config-standard": "15.0.1", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "6.1.1", + "eslint-plugin-standard": "4.1.0", + "mocha": "10.2.0", + "nyc": "15.1.0" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "README.md", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --check-leaks --bail test/", + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} diff --git a/node_modules/copy-to/README.md b/node_modules/copy-to/README.md new file mode 100644 index 0000000..44686a1 --- /dev/null +++ b/node_modules/copy-to/README.md @@ -0,0 +1,69 @@ +copy-to +======= + +[![Build Status](https://travis-ci.org/node-modules/copy-to.svg?branch=master)](https://travis-ci.org/node-modules/copy-to) + +copy an object's properties to another one, include propertiy, getter and setter. + +## Install + +``` +npm install copy-to +``` + +## Usage + +```js +copy(src).to(des); +copy(src).toCover(des); +copy(src).override(des); + +copy(src).pick('proName1', 'proName2').to(des); +copy(src).pick('proName1', 'proName2').toCover(des); +copy(src).pick('proName1', 'proName2').override(des); + +copy(src).and(other).to(des); +copy(src).and(other).toCover(des); +copy(src).and(second).and(third).to(des); + +copy(src).and(other).pick('proName1', 'proName2').to(des); +copy(src).and(other).pick('proName1', 'proName2').toCover(des); +copy(src).and(second).and(third).pick('proName1', 'proName2').to(des); +``` + +It won't copy access(getter / setter) by default, if you want to copy them, please use: + +```js +copy(src).withAccess().and(other).to(des); +``` + +## Example + +```js +var copy = require('copy-to'); + +var src = { + _name: 'foo', + set name(val) { + this._name = val; + }, + get name() { + return this._name; + }, + show: function () { + console.log(this._name); + } +}; + +var des = { + _name: 'bar' +}; + +copy(src).to(des); +copy(src).toCover(des); +copy(src).pick('_name', 'name').to(des); +copy(src).pick('_name', 'name').toCover(des); +``` + +## License +MIT diff --git a/node_modules/copy-to/index.js b/node_modules/copy-to/index.js new file mode 100644 index 0000000..defbbb2 --- /dev/null +++ b/node_modules/copy-to/index.js @@ -0,0 +1,161 @@ +/*! + * copy-to - index.js + * Copyright(c) 2014 dead_horse <dead_horse@qq.com> + * MIT Licensed + */ + +'use strict'; + +/** + * slice() reference. + */ + +var slice = Array.prototype.slice; + +/** + * Expose copy + * + * ``` + * copy({foo: 'nar', hello: 'copy'}).to({hello: 'world'}); + * copy({foo: 'nar', hello: 'copy'}).toCover({hello: 'world'}); + * ``` + * + * @param {Object} src + * @return {Copy} + */ + +module.exports = Copy; + + +/** + * Copy + * @param {Object} src + * @param {Boolean} withAccess + */ + +function Copy(src, withAccess) { + if (!(this instanceof Copy)) return new Copy(src, withAccess); + this.src = src; + this._withAccess = withAccess; +} + +/** + * copy properties include getter and setter + * @param {[type]} val [description] + * @return {[type]} [description] + */ + +Copy.prototype.withAccess = function (w) { + this._withAccess = w !== false; + return this; +}; + +/** + * pick keys in src + * + * @api: public + */ + +Copy.prototype.pick = function(keys) { + if (!Array.isArray(keys)) { + keys = slice.call(arguments); + } + if (keys.length) { + this.keys = keys; + } + return this; +}; + +/** + * copy src to target, + * do not cover any property target has + * @param {Object} to + * + * @api: public + */ + +Copy.prototype.to = function(to) { + to = to || {}; + + if (!this.src) return to; + var keys = this.keys || Object.keys(this.src); + + if (!this._withAccess) { + for (var i = 0; i < keys.length; i++) { + key = keys[i]; + if (to[key] !== undefined) continue; + to[key] = this.src[key]; + } + return to; + } + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!notDefined(to, key)) continue; + var getter = this.src.__lookupGetter__(key); + var setter = this.src.__lookupSetter__(key); + if (getter) to.__defineGetter__(key, getter); + if (setter) to.__defineSetter__(key, setter); + + if (!getter && !setter) { + to[key] = this.src[key]; + } + } + return to; +}; + +/** + * copy src to target, + * override any property target has + * @param {Object} to + * + * @api: public + */ + +Copy.prototype.toCover = function(to) { + var keys = this.keys || Object.keys(this.src); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + delete to[key]; + var getter = this.src.__lookupGetter__(key); + var setter = this.src.__lookupSetter__(key); + if (getter) to.__defineGetter__(key, getter); + if (setter) to.__defineSetter__(key, setter); + + if (!getter && !setter) { + to[key] = this.src[key]; + } + } +}; + +Copy.prototype.override = Copy.prototype.toCover; + +/** + * append another object to src + * @param {Obj} obj + * @return {Copy} + */ + +Copy.prototype.and = function (obj) { + var src = {}; + this.to(src); + this.src = obj; + this.to(src); + this.src = src; + + return this; +}; + +/** + * check obj[key] if not defiend + * @param {Object} obj + * @param {String} key + * @return {Boolean} + */ + +function notDefined(obj, key) { + return obj[key] === undefined + && obj.__lookupGetter__(key) === undefined + && obj.__lookupSetter__(key) === undefined; +} diff --git a/node_modules/copy-to/package.json b/node_modules/copy-to/package.json new file mode 100644 index 0000000..4f282c9 --- /dev/null +++ b/node_modules/copy-to/package.json @@ -0,0 +1,31 @@ +{ + "name": "copy-to", + "version": "2.0.1", + "description": "copy an object's properties to another object", + "main": "index.js", + "files": ["index.js"], + "scripts": { + "test": "make test" + }, + "repository": { + "type": "git", + "url": "git://github.com/node-modules/copy-to.git" + }, + "keywords": [ + "copy", + "object", + "properties", + "setter", + "getter" + ], + "author": "dead_horse <dead_horse@qq.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/node-modules/copy-to/issues" + }, + "homepage": "https://github.com/node-modules/copy-to", + "devDependencies": { + "mocha": "*", + "should": "*" + } +} diff --git a/node_modules/core-util-is/LICENSE b/node_modules/core-util-is/LICENSE new file mode 100644 index 0000000..d8d7f94 --- /dev/null +++ b/node_modules/core-util-is/LICENSE @@ -0,0 +1,19 @@ +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/node_modules/core-util-is/README.md b/node_modules/core-util-is/README.md new file mode 100644 index 0000000..5a76b41 --- /dev/null +++ b/node_modules/core-util-is/README.md @@ -0,0 +1,3 @@ +# core-util-is + +The `util.is*` functions introduced in Node v0.12. diff --git a/node_modules/core-util-is/lib/util.js b/node_modules/core-util-is/lib/util.js new file mode 100644 index 0000000..6e5a20d --- /dev/null +++ b/node_modules/core-util-is/lib/util.js @@ -0,0 +1,107 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. + +function isArray(arg) { + if (Array.isArray) { + return Array.isArray(arg); + } + return objectToString(arg) === '[object Array]'; +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('buffer').Buffer.isBuffer; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} diff --git a/node_modules/core-util-is/package.json b/node_modules/core-util-is/package.json new file mode 100644 index 0000000..b0c51f5 --- /dev/null +++ b/node_modules/core-util-is/package.json @@ -0,0 +1,38 @@ +{ + "name": "core-util-is", + "version": "1.0.3", + "description": "The `util.is*` functions introduced in Node v0.12.", + "main": "lib/util.js", + "files": [ + "lib" + ], + "repository": { + "type": "git", + "url": "git://github.com/isaacs/core-util-is" + }, + "keywords": [ + "util", + "isBuffer", + "isArray", + "isNumber", + "isString", + "isRegExp", + "isThis", + "isThat", + "polyfill" + ], + "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)", + "license": "MIT", + "bugs": { + "url": "https://github.com/isaacs/core-util-is/issues" + }, + "scripts": { + "test": "tap test.js", + "preversion": "npm test", + "postversion": "npm publish", + "prepublishOnly": "git push origin --follow-tags" + }, + "devDependencies": { + "tap": "^15.0.9" + } +} diff --git a/node_modules/csstype/LICENSE b/node_modules/csstype/LICENSE new file mode 100644 index 0000000..ac06f62 --- /dev/null +++ b/node_modules/csstype/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2017-2018 Fredrik Nicol + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/csstype/README.md b/node_modules/csstype/README.md new file mode 100644 index 0000000..75947e1 --- /dev/null +++ b/node_modules/csstype/README.md @@ -0,0 +1,277 @@ +# CSSType + +[![npm](https://img.shields.io/npm/v/csstype.svg)](https://www.npmjs.com/package/csstype) + +TypeScript and Flow definitions for CSS, generated by [data from MDN](https://github.com/mdn/data). It provides autocompletion and type checking for CSS properties and values. + +**TypeScript** + +```ts +import type * as CSS from 'csstype'; + +const style: CSS.Properties = { + colour: 'white', // Type error on property + textAlign: 'middle', // Type error on value +}; +``` + +**Flow** + +```js +// @flow strict +import * as CSS from 'csstype'; + +const style: CSS.Properties<> = { + colour: 'white', // Type error on property + textAlign: 'middle', // Type error on value +}; +``` + +_Further examples below will be in TypeScript!_ + +## Getting started + +```sh +$ npm install csstype +``` + +## Table of content + +- [Style types](#style-types) +- [At-rule types](#at-rule-types) +- [Pseudo types](#pseudo-types) +- [Generics](#generics) +- [Usage](#usage) +- [What should I do when I get type errors?](#what-should-i-do-when-i-get-type-errors) +- [Version 3.0](#version-30) +- [Contributing](#contributing) + +## Style types + +Properties are categorized in different uses and in several technical variations to provide typings that suits as many as possible. + +| | Default | `Hyphen` | `Fallback` | `HyphenFallback` | +| -------------- | -------------------- | -------------------------- | ---------------------------- | ---------------------------------- | +| **All** | `Properties` | `PropertiesHyphen` | `PropertiesFallback` | `PropertiesHyphenFallback` | +| **`Standard`** | `StandardProperties` | `StandardPropertiesHyphen` | `StandardPropertiesFallback` | `StandardPropertiesHyphenFallback` | +| **`Vendor`** | `VendorProperties` | `VendorPropertiesHyphen` | `VendorPropertiesFallback` | `VendorPropertiesHyphenFallback` | +| **`Obsolete`** | `ObsoleteProperties` | `ObsoletePropertiesHyphen` | `ObsoletePropertiesFallback` | `ObsoletePropertiesHyphenFallback` | +| **`Svg`** | `SvgProperties` | `SvgPropertiesHyphen` | `SvgPropertiesFallback` | `SvgPropertiesHyphenFallback` | + +Categories: + +- **All** - Includes `Standard`, `Vendor`, `Obsolete` and `Svg` +- **`Standard`** - Current properties and extends subcategories `StandardLonghand` and `StandardShorthand` _(e.g. `StandardShorthandProperties`)_ +- **`Vendor`** - Vendor prefixed properties and extends subcategories `VendorLonghand` and `VendorShorthand` _(e.g. `VendorShorthandProperties`)_ +- **`Obsolete`** - Removed or deprecated properties +- **`Svg`** - SVG-specific properties + +Variations: + +- **Default** - JavaScript (camel) cased property names +- **`Hyphen`** - CSS (kebab) cased property names +- **`Fallback`** - Also accepts array of values e.g. `string | string[]` + +## At-rule types + +At-rule interfaces with descriptors. + +**TypeScript**: These will be found in the `AtRule` namespace, e.g. `AtRule.Viewport`. +**Flow**: These will be prefixed with `AtRule$`, e.g. `AtRule$Viewport`. + +| | Default | `Hyphen` | `Fallback` | `HyphenFallback` | +| -------------------- | -------------- | -------------------- | ---------------------- | ---------------------------- | +| **`@counter-style`** | `CounterStyle` | `CounterStyleHyphen` | `CounterStyleFallback` | `CounterStyleHyphenFallback` | +| **`@font-face`** | `FontFace` | `FontFaceHyphen` | `FontFaceFallback` | `FontFaceHyphenFallback` | +| **`@viewport`** | `Viewport` | `ViewportHyphen` | `ViewportFallback` | `ViewportHyphenFallback` | + +## Pseudo types + +String literals of pseudo classes and pseudo elements + +- `Pseudos` + + Extends: + + - `AdvancedPseudos` + + Function-like pseudos e.g. `:not(:first-child)`. The string literal contains the value excluding the parenthesis: `:not`. These are separated because they require an argument that results in infinite number of variations. + + - `SimplePseudos` + + Plain pseudos e.g. `:hover` that can only be **one** variation. + +## Generics + +All interfaces has two optional generic argument to define length and time: `CSS.Properties<TLength = string | 0, TTime = string>` + +- **Length** is the first generic parameter and defaults to `string | 0` because `0` is the only [length where the unit identifier is optional](https://drafts.csswg.org/css-values-3/#lengths). You can specify this, e.g. `string | number`, for platforms and libraries that accepts any numeric value as length with a specific unit. + ```tsx + const style: CSS.Properties<string | number> = { + width: 100, + }; + ``` +- **Time** is the second generic argument and defaults to `string`. You can specify this, e.g. `string | number`, for platforms and libraries that accepts any numeric value as length with a specific unit. + ```tsx + const style: CSS.Properties<string | number, number> = { + transitionDuration: 1000, + }; + ``` + +## Usage + +```ts +import type * as CSS from 'csstype'; + +const style: CSS.Properties = { + width: '10px', + margin: '1em', +}; +``` + +In some cases, like for CSS-in-JS libraries, an array of values is a way to provide fallback values in CSS. Using `CSS.PropertiesFallback` instead of `CSS.Properties` will add the possibility to use any property value as an array of values. + +```ts +import type * as CSS from 'csstype'; + +const style: CSS.PropertiesFallback = { + display: ['-webkit-flex', 'flex'], + color: 'white', +}; +``` + +There's even string literals for pseudo selectors and elements. + +```ts +import type * as CSS from 'csstype'; + +const pseudos: { [P in CSS.SimplePseudos]?: CSS.Properties } = { + ':hover': { + display: 'flex', + }, +}; +``` + +Hyphen cased (kebab cased) properties are provided in `CSS.PropertiesHyphen` and `CSS.PropertiesHyphenFallback`. It's not **not** added by default in `CSS.Properties`. To allow both of them, you can simply extend with `CSS.PropertiesHyphen` or/and `CSS.PropertiesHyphenFallback`. + +```ts +import type * as CSS from 'csstype'; + +interface Style extends CSS.Properties, CSS.PropertiesHyphen {} + +const style: Style = { + 'flex-grow': 1, + 'flex-shrink': 0, + 'font-weight': 'normal', + backgroundColor: 'white', +}; +``` + +Adding type checked CSS properties to a `HTMLElement`. + +```ts +import type * as CSS from 'csstype'; + +const style: CSS.Properties = { + color: 'red', + margin: '1em', +}; + +let button = document.createElement('button'); + +Object.assign(button.style, style); +``` + +## What should I do when I get type errors? + +The goal is to have as perfect types as possible and we're trying to do our best. But with CSS Custom Properties, the CSS specification changing frequently and vendors implementing their own specifications with new releases sometimes causes type errors even if it should work. Here's some steps you could take to get it fixed: + +_If you're using CSS Custom Properties you can step directly to step 3._ + +1. **First of all, make sure you're doing it right.** A type error could also indicate that you're not :wink: + + - Some CSS specs that some vendors has implemented could have been officially rejected or haven't yet received any official acceptance and are therefor not included + - If you're using TypeScript, [type widening](https://blog.mariusschulz.com/2017/02/04/TypeScript-2-1-literal-type-widening) could be the reason you get `Type 'string' is not assignable to...` errors + +2. **Have a look in [issues](https://github.com/frenic/csstype/issues) to see if an issue already has been filed. If not, create a new one.** To help us out, please refer to any information you have found. +3. Fix the issue locally with **TypeScript** (Flow further down): + + - The recommended way is to use **module augmentation**. Here's a few examples: + + ```ts + // My css.d.ts file + import type * as CSS from 'csstype'; + + declare module 'csstype' { + interface Properties { + // Add a missing property + WebkitRocketLauncher?: string; + + // Add a CSS Custom Property + '--theme-color'?: 'black' | 'white'; + + // Allow namespaced CSS Custom Properties + [index: `--theme-${string}`]: any; + + // Allow any CSS Custom Properties + [index: `--${string}`]: any; + + // ...or allow any other property + [index: string]: any; + } + } + ``` + + - The alternative way is to use **type assertion**. Here's a few examples: + + ```ts + const style: CSS.Properties = { + // Add a missing property + ['WebkitRocketLauncher' as any]: 'launching', + + // Add a CSS Custom Property + ['--theme-color' as any]: 'black', + }; + ``` + + Fix the issue locally with **Flow**: + + - Use **type assertion**. Here's a few examples: + + ```js + const style: $Exact<CSS.Properties<*>> = { + // Add a missing property + [('WebkitRocketLauncher': any)]: 'launching', + + // Add a CSS Custom Property + [('--theme-color': any)]: 'black', + }; + ``` + +## Version 3.0 + +- **All property types are exposed with namespace** + TypeScript: `Property.AlignContent` (was `AlignContentProperty` before) + Flow: `Property$AlignContent` +- **All at-rules are exposed with namespace** + TypeScript: `AtRule.FontFace` (was `FontFace` before) + Flow: `AtRule$FontFace` +- **Data types are NOT exposed** + E.g. `Color` and `Box`. Because the generation of data types may suddenly be removed or renamed. +- **TypeScript hack for autocompletion** + Uses `(string & {})` for literal string unions and `(number & {})` for literal number unions ([related issue](https://github.com/microsoft/TypeScript/issues/29729)). Utilize `PropertyValue<T>` to unpack types from e.g. `(string & {})` to `string`. +- **New generic for time** + Read more on the ["Generics"](#generics) section. +- **Flow types improvements** + Flow Strict enabled and exact types are used. + +## Contributing + +**Never modify `index.d.ts` and `index.js.flow` directly. They are generated automatically and committed so that we can easily follow any change it results in.** Therefor it's important that you run `$ git config merge.ours.driver true` after you've forked and cloned. That setting prevents merge conflicts when doing rebase. + +### Commands + +- `npm run build` Generates typings and type checks them +- `npm run watch` Runs build on each save +- `npm run test` Runs the tests +- `npm run lazy` Type checks, lints and formats everything diff --git a/node_modules/csstype/index.d.ts b/node_modules/csstype/index.d.ts new file mode 100644 index 0000000..b466d21 --- /dev/null +++ b/node_modules/csstype/index.d.ts @@ -0,0 +1,21297 @@ +export {}; + +export type PropertyValue<TValue> = TValue extends Array<infer AValue> + ? Array<AValue extends infer TUnpacked & {} ? TUnpacked : AValue> + : TValue extends infer TUnpacked & {} + ? TUnpacked + : TValue; + +export type Fallback<T> = { [P in keyof T]: T[P] | readonly NonNullable<T[P]>[] }; + +export interface StandardLonghandProperties<TLength = (string & {}) | 0, TTime = string & {}> { + /** + * The **`accent-color`** CSS property sets the accent color for user-interface controls generated by some elements. + * + * **Syntax**: `auto | <color>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **93** | **92** | **15.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/accent-color + */ + accentColor?: Property.AccentColor | undefined; + /** + * The CSS **`align-content`** property sets the distribution of space between and around content items along a flexbox's cross-axis or a grid's block axis. + * + * **Syntax**: `normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **28** | **9** | **12** | **11** | + * | 21 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/align-content + */ + alignContent?: Property.AlignContent | undefined; + /** + * The CSS **`align-items`** property sets the `align-self` value on all direct children as a group. In Flexbox, it controls the alignment of items on the Cross Axis. In Grid Layout, it controls the alignment of items on the Block Axis within their grid area. + * + * **Syntax**: `normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **20** | **9** | **12** | **11** | + * | 21 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/align-items + */ + alignItems?: Property.AlignItems | undefined; + /** + * The **`align-self`** CSS property overrides a grid or flex item's `align-items` value. In Grid, it aligns the item inside the grid area. In Flexbox, it aligns the item on the cross axis. + * + * **Syntax**: `auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **20** | **9** | **12** | **10** | + * | 21 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/align-self + */ + alignSelf?: Property.AlignSelf | undefined; + /** + * The **`align-tracks`** CSS property sets the alignment in the masonry axis for grid containers that have masonry in their block axis. + * + * **Syntax**: `[ normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position> ]#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/align-tracks + */ + alignTracks?: Property.AlignTracks | undefined; + /** + * The **`animation-composition`** CSS property specifies the composite operation to use when multiple animations affect the same property simultaneously. + * + * **Syntax**: `<single-animation-composition>#` + * + * **Initial value**: `replace` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **112** | **115** | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-composition + */ + animationComposition?: Property.AnimationComposition | undefined; + /** + * The **`animation-delay`** CSS property specifies the amount of time to wait from applying the animation to an element before beginning to perform the animation. The animation can start later, immediately from its beginning, or immediately and partway through the animation. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-delay + */ + animationDelay?: Property.AnimationDelay<TTime> | undefined; + /** + * The **`animation-direction`** CSS property sets whether an animation should play forward, backward, or alternate back and forth between playing the sequence forward and backward. + * + * **Syntax**: `<single-animation-direction>#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-direction + */ + animationDirection?: Property.AnimationDirection | undefined; + /** + * The **`animation-duration`** CSS property sets the length of time that an animation takes to complete one cycle. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-duration + */ + animationDuration?: Property.AnimationDuration<TTime> | undefined; + /** + * The **`animation-fill-mode`** CSS property sets how a CSS animation applies styles to its target before and after its execution. + * + * **Syntax**: `<single-animation-fill-mode>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 5 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-fill-mode + */ + animationFillMode?: Property.AnimationFillMode | undefined; + /** + * The **`animation-iteration-count`** CSS property sets the number of times an animation sequence should be played before stopping. + * + * **Syntax**: `<single-animation-iteration-count>#` + * + * **Initial value**: `1` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-iteration-count + */ + animationIterationCount?: Property.AnimationIterationCount | undefined; + /** + * The **`animation-name`** CSS property specifies the names of one or more `@keyframes` at-rules that describe the animation to apply to an element. Multiple `@keyframe` at-rules are specified as a comma-separated list of names. If the specified name does not match any `@keyframe` at-rule, no properties are animated. + * + * **Syntax**: `[ none | <keyframes-name> ]#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-name + */ + animationName?: Property.AnimationName | undefined; + /** + * The **`animation-play-state`** CSS property sets whether an animation is running or paused. + * + * **Syntax**: `<single-animation-play-state>#` + * + * **Initial value**: `running` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-play-state + */ + animationPlayState?: Property.AnimationPlayState | undefined; + /** + * The **`animation-range-end`** CSS property is used to set the end of an animation's attachment range along its timeline, i.e. where along the timeline an animation will end. + * + * **Syntax**: `[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-range-end + */ + animationRangeEnd?: Property.AnimationRangeEnd<TLength> | undefined; + /** + * The **`animation-range-start`** CSS property is used to set the start of an animation's attachment range along its timeline, i.e. where along the timeline an animation will start. + * + * **Syntax**: `[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-range-start + */ + animationRangeStart?: Property.AnimationRangeStart<TLength> | undefined; + /** + * The **`animation-timeline`** CSS property specifies the timeline that is used to control the progress of an animation. + * + * **Syntax**: `<single-animation-timeline>#` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-timeline + */ + animationTimeline?: Property.AnimationTimeline | undefined; + /** + * The **`animation-timing-function`** CSS property sets how an animation progresses through the duration of each cycle. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-timing-function + */ + animationTimingFunction?: Property.AnimationTimingFunction | undefined; + /** + * The **`appearance`** CSS property is used to control native appearance of UI controls, that are based on operating system's theme. + * + * **Syntax**: `none | auto | textfield | menulist-button | <compat-auto>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :------: | :-: | + * | **84** | **80** | **15.4** | **84** | No | + * | 1 _-x-_ | 1 _-x-_ | 3 _-x-_ | 12 _-x-_ | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/appearance + */ + appearance?: Property.Appearance | undefined; + /** + * The **`aspect-ratio`** CSS property sets a **preferred aspect ratio** for the box, which will be used in the calculation of auto sizes and some other layout functions. + * + * **Syntax**: `auto | <ratio>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **88** | **89** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/aspect-ratio + */ + aspectRatio?: Property.AspectRatio | undefined; + /** + * The **`backdrop-filter`** CSS property lets you apply graphical effects such as blurring or color shifting to the area behind an element. Because it applies to everything _behind_ the element, to see the effect you must make the element or its background at least partially transparent. + * + * **Syntax**: `none | <filter-function-list>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :---------: | :----: | :-: | + * | **76** | **103** | **9** _-x-_ | **17** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/backdrop-filter + */ + backdropFilter?: Property.BackdropFilter | undefined; + /** + * The **`backface-visibility`** CSS property sets whether the back face of an element is visible when turned towards the user. + * + * **Syntax**: `visible | hidden` + * + * **Initial value**: `visible` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-------: | :----: | :----: | + * | **36** | **16** | **15.4** | **12** | **10** | + * | 12 _-x-_ | | 5.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/backface-visibility + */ + backfaceVisibility?: Property.BackfaceVisibility | undefined; + /** + * The **`background-attachment`** CSS property sets whether a background image's position is fixed within the viewport, or scrolls with its containing block. + * + * **Syntax**: `<attachment>#` + * + * **Initial value**: `scroll` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-attachment + */ + backgroundAttachment?: Property.BackgroundAttachment | undefined; + /** + * The **`background-blend-mode`** CSS property sets how an element's background images should blend with each other and with the element's background color. + * + * **Syntax**: `<blend-mode>#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **35** | **30** | **8** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-blend-mode + */ + backgroundBlendMode?: Property.BackgroundBlendMode | undefined; + /** + * The **`background-clip`** CSS property sets whether an element's background extends underneath its border box, padding box, or content box. + * + * **Syntax**: `<box>#` + * + * **Initial value**: `border-box` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **4** | **5** | **12** | **9** | + * | | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-clip + */ + backgroundClip?: Property.BackgroundClip | undefined; + /** + * The **`background-color`** CSS property sets the background color of an element. + * + * **Syntax**: `<color>` + * + * **Initial value**: `transparent` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-color + */ + backgroundColor?: Property.BackgroundColor | undefined; + /** + * The **`background-image`** CSS property sets one or more background images on an element. + * + * **Syntax**: `<bg-image>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-image + */ + backgroundImage?: Property.BackgroundImage | undefined; + /** + * The **`background-origin`** CSS property sets the background's origin: from the border start, inside the border, or inside the padding. + * + * **Syntax**: `<box>#` + * + * **Initial value**: `padding-box` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **4** | **3** | **12** | **9** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-origin + */ + backgroundOrigin?: Property.BackgroundOrigin | undefined; + /** + * The **`background-position-x`** CSS property sets the initial horizontal position for each background image. The position is relative to the position layer set by `background-origin`. + * + * **Syntax**: `[ center | [ [ left | right | x-start | x-end ]? <length-percentage>? ]! ]#` + * + * **Initial value**: `0%` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **49** | **1** | **12** | **6** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-position-x + */ + backgroundPositionX?: Property.BackgroundPositionX<TLength> | undefined; + /** + * The **`background-position-y`** CSS property sets the initial vertical position for each background image. The position is relative to the position layer set by `background-origin`. + * + * **Syntax**: `[ center | [ [ top | bottom | y-start | y-end ]? <length-percentage>? ]! ]#` + * + * **Initial value**: `0%` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **49** | **1** | **12** | **6** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-position-y + */ + backgroundPositionY?: Property.BackgroundPositionY<TLength> | undefined; + /** + * The **`background-repeat`** CSS property sets how background images are repeated. A background image can be repeated along the horizontal and vertical axes, or not repeated at all. + * + * **Syntax**: `<repeat-style>#` + * + * **Initial value**: `repeat` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-repeat + */ + backgroundRepeat?: Property.BackgroundRepeat | undefined; + /** + * The **`background-size`** CSS property sets the size of the element's background image. The image can be left to its natural size, stretched, or constrained to fit the available space. + * + * **Syntax**: `<bg-size>#` + * + * **Initial value**: `auto auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **3** | **4** | **5** | **12** | **9** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-size + */ + backgroundSize?: Property.BackgroundSize<TLength> | undefined; + /** + * **Syntax**: `clip | ellipsis | <string>` + * + * **Initial value**: `clip` + */ + blockOverflow?: Property.BlockOverflow | undefined; + /** + * The **`block-size`** CSS property defines the horizontal or vertical size of an element's block, depending on its writing mode. It corresponds to either the `width` or the `height` property, depending on the value of `writing-mode`. + * + * **Syntax**: `<'width'>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/block-size + */ + blockSize?: Property.BlockSize<TLength> | undefined; + /** + * The **`border-block-color`** CSS property defines the color of the logical block borders of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color` and `border-bottom-color`, or `border-right-color` and `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>{1,2}` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-color + */ + borderBlockColor?: Property.BorderBlockColor | undefined; + /** + * The **`border-block-end-color`** CSS property defines the color of the logical block-end border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color`, `border-right-color`, `border-bottom-color`, or `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-end-color + */ + borderBlockEndColor?: Property.BorderBlockEndColor | undefined; + /** + * The **`border-block-end-style`** CSS property defines the style of the logical block-end border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style`, `border-right-style`, `border-bottom-style`, or `border-left-style` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-end-style + */ + borderBlockEndStyle?: Property.BorderBlockEndStyle | undefined; + /** + * The **`border-block-end-width`** CSS property defines the width of the logical block-end border of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-width`, `border-right-width`, `border-bottom-width`, or `border-left-width` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-width'>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-end-width + */ + borderBlockEndWidth?: Property.BorderBlockEndWidth<TLength> | undefined; + /** + * The **`border-block-start-color`** CSS property defines the color of the logical block-start border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color`, `border-right-color`, `border-bottom-color`, or `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-start-color + */ + borderBlockStartColor?: Property.BorderBlockStartColor | undefined; + /** + * The **`border-block-start-style`** CSS property defines the style of the logical block start border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style`, `border-right-style`, `border-bottom-style`, or `border-left-style` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-start-style + */ + borderBlockStartStyle?: Property.BorderBlockStartStyle | undefined; + /** + * The **`border-block-start-width`** CSS property defines the width of the logical block-start border of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-width`, `border-right-width`, `border-bottom-width`, or `border-left-width` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-width'>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-start-width + */ + borderBlockStartWidth?: Property.BorderBlockStartWidth<TLength> | undefined; + /** + * The **`border-block-style`** CSS property defines the style of the logical block borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style` and `border-bottom-style`, or `border-left-style` and `border-right-style` properties depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-style + */ + borderBlockStyle?: Property.BorderBlockStyle | undefined; + /** + * The **`border-block-width`** CSS property defines the width of the logical block borders of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-width` and `border-bottom-width`, or `border-left-width`, and `border-right-width` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-width'>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-width + */ + borderBlockWidth?: Property.BorderBlockWidth<TLength> | undefined; + /** + * The **`border-bottom-color`** CSS property sets the color of an element's bottom border. It can also be set with the shorthand CSS properties `border-color` or `border-bottom`. + * + * **Syntax**: `<'border-top-color'>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-bottom-color + */ + borderBottomColor?: Property.BorderBottomColor | undefined; + /** + * The **`border-bottom-left-radius`** CSS property rounds the bottom-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **4** | **4** | **5** | **12** | **9** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius + */ + borderBottomLeftRadius?: Property.BorderBottomLeftRadius<TLength> | undefined; + /** + * The **`border-bottom-right-radius`** CSS property rounds the bottom-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **4** | **4** | **5** | **12** | **9** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius + */ + borderBottomRightRadius?: Property.BorderBottomRightRadius<TLength> | undefined; + /** + * The **`border-bottom-style`** CSS property sets the line style of an element's bottom `border`. + * + * **Syntax**: `<line-style>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-bottom-style + */ + borderBottomStyle?: Property.BorderBottomStyle | undefined; + /** + * The **`border-bottom-width`** CSS property sets the width of the bottom border of an element. + * + * **Syntax**: `<line-width>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-bottom-width + */ + borderBottomWidth?: Property.BorderBottomWidth<TLength> | undefined; + /** + * The **`border-collapse`** CSS property sets whether cells inside a `<table>` have shared or separate borders. + * + * **Syntax**: `collapse | separate` + * + * **Initial value**: `separate` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1** | **1.2** | **12** | **5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-collapse + */ + borderCollapse?: Property.BorderCollapse | undefined; + /** + * The **`border-end-end-radius`** CSS property defines a logical border radius on an element, which maps to a physical border radius that depends on the element's `writing-mode`, `direction`, and `text-orientation`. This is useful when building styles to work regardless of the text orientation and writing mode. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **89** | **66** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-end-end-radius + */ + borderEndEndRadius?: Property.BorderEndEndRadius<TLength> | undefined; + /** + * The **`border-end-start-radius`** CSS property defines a logical border radius on an element, which maps to a physical border radius depending on the element's `writing-mode`, `direction`, and `text-orientation`. This is useful when building styles to work regardless of the text orientation and writing mode. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **89** | **66** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-end-start-radius + */ + borderEndStartRadius?: Property.BorderEndStartRadius<TLength> | undefined; + /** + * The **`border-image-outset`** CSS property sets the distance by which an element's border image is set out from its border box. + * + * **Syntax**: `[ <length> | <number> ]{1,4}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **15** | **15** | **6** | **12** | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-image-outset + */ + borderImageOutset?: Property.BorderImageOutset<TLength> | undefined; + /** + * The **`border-image-repeat`** CSS property defines how the edge regions and middle region of a source image are adjusted to fit the dimensions of an element's border image. The middle region can be displayed by using the keyword "fill" in the border-image-slice property. + * + * **Syntax**: `[ stretch | repeat | round | space ]{1,2}` + * + * **Initial value**: `stretch` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **15** | **15** | **6** | **12** | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-image-repeat + */ + borderImageRepeat?: Property.BorderImageRepeat | undefined; + /** + * The **`border-image-slice`** CSS property divides the image specified by `border-image-source` into regions. These regions form the components of an element's border image. + * + * **Syntax**: `<number-percentage>{1,4} && fill?` + * + * **Initial value**: `100%` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **15** | **15** | **6** | **12** | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-image-slice + */ + borderImageSlice?: Property.BorderImageSlice | undefined; + /** + * The **`border-image-source`** CSS property sets the source image used to create an element's border image. + * + * **Syntax**: `none | <image>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **15** | **15** | **6** | **12** | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-image-source + */ + borderImageSource?: Property.BorderImageSource | undefined; + /** + * The **`border-image-width`** CSS property sets the width of an element's border image. + * + * **Syntax**: `[ <length-percentage> | <number> | auto ]{1,4}` + * + * **Initial value**: `1` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **15** | **13** | **6** | **12** | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-image-width + */ + borderImageWidth?: Property.BorderImageWidth<TLength> | undefined; + /** + * The **`border-inline-color`** CSS property defines the color of the logical inline borders of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color` and `border-bottom-color`, or `border-right-color` and `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>{1,2}` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-color + */ + borderInlineColor?: Property.BorderInlineColor | undefined; + /** + * The **`border-inline-end-color`** CSS property defines the color of the logical inline-end border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color`, `border-right-color`, `border-bottom-color`, or `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-------------------------: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | | 3 _(-moz-border-end-color)_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-end-color + */ + borderInlineEndColor?: Property.BorderInlineEndColor | undefined; + /** + * The **`border-inline-end-style`** CSS property defines the style of the logical inline end border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style`, `border-right-style`, `border-bottom-style`, or `border-left-style` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-------------------------: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | | 3 _(-moz-border-end-style)_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-end-style + */ + borderInlineEndStyle?: Property.BorderInlineEndStyle | undefined; + /** + * The **`border-inline-end-width`** CSS property defines the width of the logical inline-end border of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-width`, `border-right-width`, `border-bottom-width`, or `border-left-width` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-width'>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-------------------------: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | | 3 _(-moz-border-end-width)_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-end-width + */ + borderInlineEndWidth?: Property.BorderInlineEndWidth<TLength> | undefined; + /** + * The **`border-inline-start-color`** CSS property defines the color of the logical inline start border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color`, `border-right-color`, `border-bottom-color`, or `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :---------------------------: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | | 3 _(-moz-border-start-color)_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-start-color + */ + borderInlineStartColor?: Property.BorderInlineStartColor | undefined; + /** + * The **`border-inline-start-style`** CSS property defines the style of the logical inline start border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style`, `border-right-style`, `border-bottom-style`, or `border-left-style` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :---------------------------: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | | 3 _(-moz-border-start-style)_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-start-style + */ + borderInlineStartStyle?: Property.BorderInlineStartStyle | undefined; + /** + * The **`border-inline-start-width`** CSS property defines the width of the logical inline-start border of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-width`, `border-right-width`, `border-bottom-width`, or `border-left-width` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-width'>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-start-width + */ + borderInlineStartWidth?: Property.BorderInlineStartWidth<TLength> | undefined; + /** + * The **`border-inline-style`** CSS property defines the style of the logical inline borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style` and `border-bottom-style`, or `border-left-style` and `border-right-style` properties depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-style + */ + borderInlineStyle?: Property.BorderInlineStyle | undefined; + /** + * The **`border-inline-width`** CSS property defines the width of the logical inline borders of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-width` and `border-bottom-width`, or `border-left-width`, and `border-right-width` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-width'>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-width + */ + borderInlineWidth?: Property.BorderInlineWidth<TLength> | undefined; + /** + * The **`border-left-color`** CSS property sets the color of an element's left border. It can also be set with the shorthand CSS properties `border-color` or `border-left`. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-left-color + */ + borderLeftColor?: Property.BorderLeftColor | undefined; + /** + * The **`border-left-style`** CSS property sets the line style of an element's left `border`. + * + * **Syntax**: `<line-style>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-left-style + */ + borderLeftStyle?: Property.BorderLeftStyle | undefined; + /** + * The **`border-left-width`** CSS property sets the width of the left border of an element. + * + * **Syntax**: `<line-width>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-left-width + */ + borderLeftWidth?: Property.BorderLeftWidth<TLength> | undefined; + /** + * The **`border-right-color`** CSS property sets the color of an element's right border. It can also be set with the shorthand CSS properties `border-color` or `border-right`. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-right-color + */ + borderRightColor?: Property.BorderRightColor | undefined; + /** + * The **`border-right-style`** CSS property sets the line style of an element's right `border`. + * + * **Syntax**: `<line-style>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-right-style + */ + borderRightStyle?: Property.BorderRightStyle | undefined; + /** + * The **`border-right-width`** CSS property sets the width of the right border of an element. + * + * **Syntax**: `<line-width>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-right-width + */ + borderRightWidth?: Property.BorderRightWidth<TLength> | undefined; + /** + * The **`border-spacing`** CSS property sets the distance between the borders of adjacent cells in a `<table>`. This property applies only when `border-collapse` is `separate`. + * + * **Syntax**: `<length> <length>?` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-spacing + */ + borderSpacing?: Property.BorderSpacing<TLength> | undefined; + /** + * The **`border-start-end-radius`** CSS property defines a logical border radius on an element, which maps to a physical border radius depending on the element's `writing-mode`, `direction`, and `text-orientation`. This is useful when building styles to work regardless of the text orientation and writing mode. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **89** | **66** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-start-end-radius + */ + borderStartEndRadius?: Property.BorderStartEndRadius<TLength> | undefined; + /** + * The **`border-start-start-radius`** CSS property defines a logical border radius on an element, which maps to a physical border radius that depends on the element's `writing-mode`, `direction`, and `text-orientation`. This is useful when building styles to work regardless of the text orientation and writing mode. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **89** | **66** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-start-start-radius + */ + borderStartStartRadius?: Property.BorderStartStartRadius<TLength> | undefined; + /** + * The **`border-top-color`** CSS property sets the color of an element's top border. It can also be set with the shorthand CSS properties `border-color` or `border-top`. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-top-color + */ + borderTopColor?: Property.BorderTopColor | undefined; + /** + * The **`border-top-left-radius`** CSS property rounds the top-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **4** | **4** | **5** | **12** | **9** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-top-left-radius + */ + borderTopLeftRadius?: Property.BorderTopLeftRadius<TLength> | undefined; + /** + * The **`border-top-right-radius`** CSS property rounds the top-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **4** | **4** | **5** | **12** | **9** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-top-right-radius + */ + borderTopRightRadius?: Property.BorderTopRightRadius<TLength> | undefined; + /** + * The **`border-top-style`** CSS property sets the line style of an element's top `border`. + * + * **Syntax**: `<line-style>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-top-style + */ + borderTopStyle?: Property.BorderTopStyle | undefined; + /** + * The **`border-top-width`** CSS property sets the width of the top border of an element. + * + * **Syntax**: `<line-width>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-top-width + */ + borderTopWidth?: Property.BorderTopWidth<TLength> | undefined; + /** + * The **`bottom`** CSS property participates in setting the vertical position of a positioned element. It has no effect on non-positioned elements. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/bottom + */ + bottom?: Property.Bottom<TLength> | undefined; + /** + * The **`box-decoration-break`** CSS property specifies how an element's fragments should be rendered when broken across multiple lines, columns, or pages. + * + * **Syntax**: `slice | clone` + * + * **Initial value**: `slice` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----------: | :-----: | :---------: | :--: | :-: | + * | **22** _-x-_ | **32** | **7** _-x-_ | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/box-decoration-break + */ + boxDecorationBreak?: Property.BoxDecorationBreak | undefined; + /** + * The **`box-shadow`** CSS property adds shadow effects around an element's frame. You can set multiple effects separated by commas. A box shadow is described by X and Y offsets relative to the element, blur and spread radius, and color. + * + * **Syntax**: `none | <shadow>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **10** | **4** | **5.1** | **12** | **9** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/box-shadow + */ + boxShadow?: Property.BoxShadow | undefined; + /** + * The **`box-sizing`** CSS property sets how the total width and height of an element is calculated. + * + * **Syntax**: `content-box | border-box` + * + * **Initial value**: `content-box` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **10** | **29** | **5.1** | **12** | **8** | + * | 1 _-x-_ | 1 _-x-_ | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/box-sizing + */ + boxSizing?: Property.BoxSizing | undefined; + /** + * The **`break-after`** CSS property sets how page, column, or region breaks should behave after a generated box. If there is no generated box, the property is ignored. + * + * **Syntax**: `auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **50** | **65** | **10** | **12** | **10** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/break-after + */ + breakAfter?: Property.BreakAfter | undefined; + /** + * The **`break-before`** CSS property sets how page, column, or region breaks should behave before a generated box. If there is no generated box, the property is ignored. + * + * **Syntax**: `auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **50** | **65** | **10** | **12** | **10** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/break-before + */ + breakBefore?: Property.BreakBefore | undefined; + /** + * The **`break-inside`** CSS property sets how page, column, or region breaks should behave inside a generated box. If there is no generated box, the property is ignored. + * + * **Syntax**: `auto | avoid | avoid-page | avoid-column | avoid-region` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **50** | **65** | **10** | **12** | **10** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/break-inside + */ + breakInside?: Property.BreakInside | undefined; + /** + * The **`caption-side`** CSS property puts the content of a table's `<caption>` on the specified side. The values are relative to the `writing-mode` of the table. + * + * **Syntax**: `top | bottom | block-start | block-end | inline-start | inline-end` + * + * **Initial value**: `top` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/caption-side + */ + captionSide?: Property.CaptionSide | undefined; + /** + * The **`caret-color`** CSS property sets the color of the **insertion caret**, the visible marker where the next character typed will be inserted. This is sometimes referred to as the **text input cursor**. The caret appears in elements such as `<input>` or those with the `contenteditable` attribute. The caret is typically a thin vertical line that flashes to help make it more noticeable. By default, it is black, but its color can be altered with this property. + * + * **Syntax**: `auto | <color>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **53** | **11.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/caret-color + */ + caretColor?: Property.CaretColor | undefined; + /** + * **Syntax**: `auto | bar | block | underscore` + * + * **Initial value**: `auto` + */ + caretShape?: Property.CaretShape | undefined; + /** + * The **`clear`** CSS property sets whether an element must be moved below (cleared) floating elements that precede it. The `clear` property applies to floating and non-floating elements. + * + * **Syntax**: `none | left | right | both | inline-start | inline-end` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/clear + */ + clear?: Property.Clear | undefined; + /** + * The **`clip-path`** CSS property creates a clipping region that sets what part of an element should be shown. Parts that are inside the region are shown, while those outside are hidden. + * + * **Syntax**: `<clip-source> | [ <basic-shape> || <geometry-box> ] | none` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **55** | **3.5** | **9.1** | **79** | **10** | + * | 23 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/clip-path + */ + clipPath?: Property.ClipPath | undefined; + /** + * The **`color`** CSS property sets the foreground color value of an element's text and text decorations, and sets the `currentcolor` value. `currentcolor` may be used as an indirect value on _other_ properties and is the default for other color properties, such as `border-color`. + * + * **Syntax**: `<color>` + * + * **Initial value**: `canvastext` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/color + */ + color?: Property.Color | undefined; + /** + * The **`print-color-adjust`** CSS property sets what, if anything, the user agent may do to optimize the appearance of the element on the output device. By default, the browser is allowed to make any adjustments to the element's appearance it determines to be necessary and prudent given the type and capabilities of the output device. + * + * **Syntax**: `economy | exact` + * + * **Initial value**: `economy` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----------: | :-----------------: | :------: | :----------: | :-: | + * | **17** _-x-_ | **97** | **15.4** | **79** _-x-_ | No | + * | | 48 _(color-adjust)_ | 6 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/print-color-adjust + */ + colorAdjust?: Property.PrintColorAdjust | undefined; + /** + * The **`color-scheme`** CSS property allows an element to indicate which color schemes it can comfortably be rendered in. + * + * **Syntax**: `normal | [ light | dark | <custom-ident> ]+ && only?` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **81** | **96** | **13** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/color-scheme + */ + colorScheme?: Property.ColorScheme | undefined; + /** + * The **`column-count`** CSS property breaks an element's content into the specified number of columns. + * + * **Syntax**: `<integer> | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **50** | **52** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-count + */ + columnCount?: Property.ColumnCount | undefined; + /** + * The **`column-fill`** CSS property controls how an element's contents are balanced when broken into columns. + * + * **Syntax**: `auto | balance | balance-all` + * + * **Initial value**: `balance` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :----: | + * | **50** | **52** | **9** | **12** | **10** | + * | | | 8 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-fill + */ + columnFill?: Property.ColumnFill | undefined; + /** + * The **`column-gap`** CSS property sets the size of the gap (gutter) between an element's columns. + * + * **Syntax**: `normal | <length-percentage>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **1** | **1.5** | **3** | **12** | **10** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-gap + */ + columnGap?: Property.ColumnGap<TLength> | undefined; + /** + * The **`column-rule-color`** CSS property sets the color of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **50** | **52** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-rule-color + */ + columnRuleColor?: Property.ColumnRuleColor | undefined; + /** + * The **`column-rule-style`** CSS property sets the style of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'border-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **50** | **52** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-rule-style + */ + columnRuleStyle?: Property.ColumnRuleStyle | undefined; + /** + * The **`column-rule-width`** CSS property sets the width of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'border-width'>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **50** | **52** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-rule-width + */ + columnRuleWidth?: Property.ColumnRuleWidth<TLength> | undefined; + /** + * The **`column-span`** CSS property makes it possible for an element to span across all columns when its value is set to `all`. + * + * **Syntax**: `none | all` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :----: | :----: | + * | **50** | **71** | **9** | **12** | **10** | + * | 6 _-x-_ | | 5.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-span + */ + columnSpan?: Property.ColumnSpan | undefined; + /** + * The **`column-width`** CSS property sets the ideal column width in a multi-column layout. The container will have as many columns as can fit without any of them having a width less than the `column-width` value. If the width of the container is narrower than the specified value, the single column's width will be smaller than the declared column width. + * + * **Syntax**: `<length> | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **50** | **50** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-width + */ + columnWidth?: Property.ColumnWidth<TLength> | undefined; + /** + * The **`contain`** CSS property indicates that an element and its contents are, as much as possible, independent from the rest of the document tree. Containment enables isolating a subsection of the DOM, providing performance benefits by limiting calculations of layout, style, paint, size, or any combination to a DOM subtree rather than the entire page. Containment can also be used to scope CSS counters and quotes. + * + * **Syntax**: `none | strict | content | [ [ size || inline-size ] || layout || style || paint ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **52** | **69** | **15.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/contain + */ + contain?: Property.Contain | undefined; + /** + * The **`contain-intrinsic-block-size`** CSS logical property defines the block size of an element that a browser can use for layout when the element is subject to size containment. + * + * **Syntax**: `auto? [ none | <length> ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **95** | **107** | **17** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-contain-intrinsic-block-size + */ + containIntrinsicBlockSize?: Property.ContainIntrinsicBlockSize<TLength> | undefined; + /** + * The **`contain-intrinsic-length`** CSS property sets the height of an element that a browser can use for layout when the element is subject to size containment. + * + * **Syntax**: `auto? [ none | <length> ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **95** | **107** | **17** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-height + */ + containIntrinsicHeight?: Property.ContainIntrinsicHeight<TLength> | undefined; + /** + * The **`contain-intrinsic-inline-size`** CSS logical property defines the inline-size of an element that a browser can use for layout when the element is subject to size containment. + * + * **Syntax**: `auto? [ none | <length> ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **95** | **107** | **17** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-contain-intrinsic-inline-size + */ + containIntrinsicInlineSize?: Property.ContainIntrinsicInlineSize<TLength> | undefined; + /** + * The **`contain-intrinsic-width`** CSS property sets the width of an element that a browser will use for layout when the element is subject to size containment. + * + * **Syntax**: `auto? [ none | <length> ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **95** | **107** | **17** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-width + */ + containIntrinsicWidth?: Property.ContainIntrinsicWidth<TLength> | undefined; + /** + * The **container-name** CSS property specifies a list of query container names used by the @container at-rule in a container query. A container query will apply styles to elements based on the size of the nearest ancestor with a containment context. When a containment context is given a name, it can be specifically targeted using the `@container` at-rule instead of the nearest ancestor with containment. + * + * **Syntax**: `none | <custom-ident>+` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **105** | **110** | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/container-name + */ + containerName?: Property.ContainerName | undefined; + /** + * The **container-type** CSS property is used to define the type of containment used in a container query. + * + * **Syntax**: `normal | size | inline-size` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **105** | **110** | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/container-type + */ + containerType?: Property.ContainerType | undefined; + /** + * The **`content`** CSS property replaces an element with a generated value. Objects inserted using the `content` property are **anonymous replaced elements**. + * + * **Syntax**: `normal | none | [ <content-replacement> | <content-list> ] [/ [ <string> | <counter> ]+ ]?` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/content + */ + content?: Property.Content | undefined; + /** + * The **`content-visibility`** CSS property controls whether or not an element renders its contents at all, along with forcing a strong set of containments, allowing user agents to potentially omit large swathes of layout and rendering work until it becomes needed. It enables the user agent to skip an element's rendering work (including layout and painting) until it is needed — which makes the initial page load much faster. + * + * **Syntax**: `visible | auto | hidden` + * + * **Initial value**: `visible` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :---------: | :----: | :--: | :-: | + * | **85** | **preview** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/content-visibility + */ + contentVisibility?: Property.ContentVisibility | undefined; + /** + * The **`counter-increment`** CSS property increases or decreases the value of a CSS counter by a given value. + * + * **Syntax**: `[ <counter-name> <integer>? ]+ | none` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **2** | **1** | **3** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/counter-increment + */ + counterIncrement?: Property.CounterIncrement | undefined; + /** + * The **`counter-reset`** CSS property resets a CSS counter to a given value. This property will create a new counter or reversed counter with the given name on the specified element. + * + * **Syntax**: `[ <counter-name> <integer>? | <reversed-counter-name> <integer>? ]+ | none` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **2** | **1** | **3** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/counter-reset + */ + counterReset?: Property.CounterReset | undefined; + /** + * The **`counter-set`** CSS property sets a CSS counter to a given value. It manipulates the value of existing counters, and will only create new counters if there isn't already a counter of the given name on the element. + * + * **Syntax**: `[ <counter-name> <integer>? ]+ | none` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **85** | **68** | **17.2** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/counter-set + */ + counterSet?: Property.CounterSet | undefined; + /** + * The **`cursor`** CSS property sets the mouse cursor, if any, to show when the mouse pointer is over an element. + * + * **Syntax**: `[ [ <url> [ <x> <y> ]? , ]* [ auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | all-scroll | zoom-in | zoom-out | grab | grabbing ] ]` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1** | **1.2** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/cursor + */ + cursor?: Property.Cursor | undefined; + /** + * The **`direction`** CSS property sets the direction of text, table columns, and horizontal overflow. Use `rtl` for languages written from right to left (like Hebrew or Arabic), and `ltr` for those written from left to right (like English and most other languages). + * + * **Syntax**: `ltr | rtl` + * + * **Initial value**: `ltr` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **2** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/direction + */ + direction?: Property.Direction | undefined; + /** + * The **`display`** CSS property sets whether an element is treated as a block or inline element and the layout used for its children, such as flow layout, grid or flex. + * + * **Syntax**: `[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>` + * + * **Initial value**: `inline` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/display + */ + display?: Property.Display | undefined; + /** + * The **`empty-cells`** CSS property sets whether borders and backgrounds appear around `<table>` cells that have no visible content. + * + * **Syntax**: `show | hide` + * + * **Initial value**: `show` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1** | **1.2** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/empty-cells + */ + emptyCells?: Property.EmptyCells | undefined; + /** + * The **`filter`** CSS property applies graphical effects like blur or color shift to an element. Filters are commonly used to adjust the rendering of images, backgrounds, and borders. + * + * **Syntax**: `none | <filter-function-list>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :-: | + * | **53** | **35** | **9.1** | **12** | No | + * | 18 _-x-_ | | 6 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/filter + */ + filter?: Property.Filter | undefined; + /** + * The **`flex-basis`** CSS property sets the initial main size of a flex item. It sets the size of the content box unless otherwise set with `box-sizing`. + * + * **Syntax**: `content | <'width'>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **22** | **9** | **12** | **11** | + * | 22 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/flex-basis + */ + flexBasis?: Property.FlexBasis<TLength> | undefined; + /** + * The **`flex-direction`** CSS property sets how flex items are placed in the flex container defining the main axis and the direction (normal or reversed). + * + * **Syntax**: `row | row-reverse | column | column-reverse` + * + * **Initial value**: `row` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :------: | :-----: | :----: | :------: | + * | **29** | **81** | **9** | **12** | **11** | + * | 21 _-x-_ | 49 _-x-_ | 7 _-x-_ | | 10 _-x-_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/flex-direction + */ + flexDirection?: Property.FlexDirection | undefined; + /** + * The **`flex-grow`** CSS property sets the flex grow factor of a flex item's main size. + * + * **Syntax**: `<number>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----------------------: | + * | **29** | **20** | **9** | **12** | **11** | + * | 22 _-x-_ | | 7 _-x-_ | | 10 _(-ms-flex-positive)_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/flex-grow + */ + flexGrow?: Property.FlexGrow | undefined; + /** + * The **`flex-shrink`** CSS property sets the flex shrink factor of a flex item. If the size of all flex items is larger than the flex container, items shrink to fit according to `flex-shrink`. + * + * **Syntax**: `<number>` + * + * **Initial value**: `1` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **20** | **9** | **12** | **10** | + * | 22 _-x-_ | | 8 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/flex-shrink + */ + flexShrink?: Property.FlexShrink | undefined; + /** + * The **`flex-wrap`** CSS property sets whether flex items are forced onto one line or can wrap onto multiple lines. If wrapping is allowed, it sets the direction that lines are stacked. + * + * **Syntax**: `nowrap | wrap | wrap-reverse` + * + * **Initial value**: `nowrap` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **28** | **9** | **12** | **11** | + * | 21 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/flex-wrap + */ + flexWrap?: Property.FlexWrap | undefined; + /** + * The **`float`** CSS property places an element on the left or right side of its container, allowing text and inline elements to wrap around it. The element is removed from the normal flow of the page, though still remaining a part of the flow (in contrast to absolute positioning). + * + * **Syntax**: `left | right | none | inline-start | inline-end` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/float + */ + float?: Property.Float | undefined; + /** + * The **`font-family`** CSS property specifies a prioritized list of one or more font family names and/or generic family names for the selected element. + * + * **Syntax**: `[ <family-name> | <generic-family> ]#` + * + * **Initial value**: depends on user agent + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-family + */ + fontFamily?: Property.FontFamily | undefined; + /** + * The **`font-feature-settings`** CSS property controls advanced typographic features in OpenType fonts. + * + * **Syntax**: `normal | <feature-tag-value>#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :------: | :-----: | :----: | :----: | + * | **48** | **34** | **9.1** | **15** | **10** | + * | 16 _-x-_ | 15 _-x-_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-feature-settings + */ + fontFeatureSettings?: Property.FontFeatureSettings | undefined; + /** + * The **`font-kerning`** CSS property sets the use of the kerning information stored in a font. + * + * **Syntax**: `auto | normal | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :--: | :-: | + * | **33** | **32** | **9** | n/a | No | + * | | | 6 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-kerning + */ + fontKerning?: Property.FontKerning | undefined; + /** + * The **`font-language-override`** CSS property controls the use of language-specific glyphs in a typeface. + * + * **Syntax**: `normal | <string>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | **34** | No | n/a | No | + * | | 4 _-x-_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-language-override + */ + fontLanguageOverride?: Property.FontLanguageOverride | undefined; + /** + * The **`font-optical-sizing`** CSS property sets whether text rendering is optimized for viewing at different sizes. + * + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **79** | **62** | **11** | **17** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-optical-sizing + */ + fontOpticalSizing?: Property.FontOpticalSizing | undefined; + /** + * **Syntax**: `normal | light | dark | <palette-identifier>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **101** | **107** | **15.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-palette + */ + fontPalette?: Property.FontPalette | undefined; + /** + * The **`font-size`** CSS property sets the size of the font. Changing the font size also updates the sizes of the font size-relative `<length>` units, such as `em`, `ex`, and so forth. + * + * **Syntax**: `<absolute-size> | <relative-size> | <length-percentage>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-size + */ + fontSize?: Property.FontSize<TLength> | undefined; + /** + * The **`font-size-adjust`** CSS property sets the size of lower-case letters relative to the current font size (which defines the size of upper-case letters). + * + * **Syntax**: `none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number> ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | No | **3** | **16.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-size-adjust + */ + fontSizeAdjust?: Property.FontSizeAdjust | undefined; + /** + * The **`font-smooth`** CSS property controls the application of anti-aliasing when fonts are rendered. + * + * **Syntax**: `auto | never | always | <absolute-size> | <length>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------------------------------: | :--------------------------------: | :------------------------------: | :--: | :-: | + * | **5** _(-webkit-font-smoothing)_ | **25** _(-moz-osx-font-smoothing)_ | **4** _(-webkit-font-smoothing)_ | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-smooth + */ + fontSmooth?: Property.FontSmooth<TLength> | undefined; + /** + * The **`font-stretch`** CSS property selects a normal, condensed, or expanded face from a font. + * + * **Syntax**: `<font-stretch-absolute>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **60** | **9** | **11** | **12** | **9** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-stretch + */ + fontStretch?: Property.FontStretch | undefined; + /** + * The **`font-style`** CSS property sets whether a font should be styled with a normal, italic, or oblique face from its `font-family`. + * + * **Syntax**: `normal | italic | oblique <angle>?` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-style + */ + fontStyle?: Property.FontStyle | undefined; + /** + * The **`font-synthesis`** CSS property controls which missing typefaces, bold, italic, or small-caps, may be synthesized by the browser. + * + * **Syntax**: `none | [ weight || style || small-caps || position]` + * + * **Initial value**: `weight style small-caps position ` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **97** | **34** | **9** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-synthesis + */ + fontSynthesis?: Property.FontSynthesis | undefined; + /** + * The **`font-synthesis-position`** CSS property lets you specify whether or not a browser may synthesize the subscript and superscript "position" typefaces when they are missing in a font family, while using `font-variant-position` to set the positions. + * + * **Syntax**: `auto | none` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | **118** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-synthesis-position + */ + fontSynthesisPosition?: Property.FontSynthesisPosition | undefined; + /** + * The **`font-synthesis-small-caps`** CSS property lets you specify whether or not the browser may synthesize small-caps typeface when it is missing in a font family. Small-caps glyphs typically use the form of uppercase letters but are reduced to the size of lowercase letters. + * + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **97** | **111** | **16.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-synthesis-small-caps + */ + fontSynthesisSmallCaps?: Property.FontSynthesisSmallCaps | undefined; + /** + * The **`font-synthesis-style`** CSS property lets you specify whether or not the browser may synthesize the oblique typeface when it is missing in a font family. + * + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **97** | **111** | **16.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-synthesis-style + */ + fontSynthesisStyle?: Property.FontSynthesisStyle | undefined; + /** + * The **`font-synthesis-weight`** CSS property lets you specify whether or not the browser may synthesize the bold typeface when it is missing in a font family. + * + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **97** | **111** | **16.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-synthesis-weight + */ + fontSynthesisWeight?: Property.FontSynthesisWeight | undefined; + /** + * The **`font-variant`** CSS shorthand property allows you to set all the font variants for a font. + * + * **Syntax**: `normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> || stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero || <east-asian-variant-values> || <east-asian-width-values> || ruby ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant + */ + fontVariant?: Property.FontVariant | undefined; + /** + * The **`font-variant-alternates`** CSS property controls the usage of alternate glyphs. These alternate glyphs may be referenced by alternative names defined in `@font-feature-values`. + * + * **Syntax**: `normal | [ stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :--: | :-: | + * | **111** | **34** | **9.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant-alternates + */ + fontVariantAlternates?: Property.FontVariantAlternates | undefined; + /** + * The **`font-variant-caps`** CSS property controls the use of alternate glyphs for capital letters. + * + * **Syntax**: `normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :--: | :-: | + * | **52** | **34** | **9.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant-caps + */ + fontVariantCaps?: Property.FontVariantCaps | undefined; + /** + * The **`font-variant-east-asian`** CSS property controls the use of alternate glyphs for East Asian scripts, like Japanese and Chinese. + * + * **Syntax**: `normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :--: | :-: | + * | **63** | **34** | **9.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant-east-asian + */ + fontVariantEastAsian?: Property.FontVariantEastAsian | undefined; + /** + * **Syntax**: `normal | text | emoji | unicode` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant-emoji + */ + fontVariantEmoji?: Property.FontVariantEmoji | undefined; + /** + * The **`font-variant-ligatures`** CSS property controls which ligatures and contextual forms are used in textual content of the elements it applies to. This leads to more harmonized forms in the resulting text. + * + * **Syntax**: `normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :--: | :-: | + * | **34** | **34** | **9.1** | n/a | No | + * | 31 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant-ligatures + */ + fontVariantLigatures?: Property.FontVariantLigatures | undefined; + /** + * The **`font-variant-numeric`** CSS property controls the usage of alternate glyphs for numbers, fractions, and ordinal markers. + * + * **Syntax**: `normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :--: | :-: | + * | **52** | **34** | **9.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant-numeric + */ + fontVariantNumeric?: Property.FontVariantNumeric | undefined; + /** + * The **`font-variant-position`** CSS property controls the use of alternate, smaller glyphs that are positioned as superscript or subscript. + * + * **Syntax**: `normal | sub | super` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :--: | :-: | + * | **117** | **34** | **9.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant-position + */ + fontVariantPosition?: Property.FontVariantPosition | undefined; + /** + * The **`font-variation-settings`** CSS property provides low-level control over variable font characteristics, by specifying the four letter axis names of the characteristics you want to vary, along with their values. + * + * **Syntax**: `normal | [ <string> <number> ]#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **62** | **62** | **11** | **17** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variation-settings + */ + fontVariationSettings?: Property.FontVariationSettings | undefined; + /** + * The **`font-weight`** CSS property sets the weight (or boldness) of the font. The weights available depend on the `font-family` that is currently set. + * + * **Syntax**: `<font-weight-absolute> | bolder | lighter` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **2** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-weight + */ + fontWeight?: Property.FontWeight | undefined; + /** + * The **`forced-color-adjust`** CSS property allows authors to opt certain elements out of forced colors mode. This then restores the control of those values to CSS. + * + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :-----------------------------: | :---------------------------------: | + * | **89** | **113** | No | **79** | **10** _(-ms-high-contrast-adjust)_ | + * | | | | 12 _(-ms-high-contrast-adjust)_ | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/forced-color-adjust + */ + forcedColorAdjust?: Property.ForcedColorAdjust | undefined; + /** + * The **`grid-auto-columns`** CSS property specifies the size of an implicitly-created grid column track or pattern of tracks. + * + * **Syntax**: `<track-size>+` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-------------------------: | + * | **57** | **70** | **10.1** | **16** | **10** _(-ms-grid-columns)_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-auto-columns + */ + gridAutoColumns?: Property.GridAutoColumns<TLength> | undefined; + /** + * The **`grid-auto-flow`** CSS property controls how the auto-placement algorithm works, specifying exactly how auto-placed items get flowed into the grid. + * + * **Syntax**: `[ row | column ] || dense` + * + * **Initial value**: `row` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-auto-flow + */ + gridAutoFlow?: Property.GridAutoFlow | undefined; + /** + * The **`grid-auto-rows`** CSS property specifies the size of an implicitly-created grid row track or pattern of tracks. + * + * **Syntax**: `<track-size>+` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :----------------------: | + * | **57** | **70** | **10.1** | **16** | **10** _(-ms-grid-rows)_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-auto-rows + */ + gridAutoRows?: Property.GridAutoRows<TLength> | undefined; + /** + * The **`grid-column-end`** CSS property specifies a grid item's end position within the grid column by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the block-end edge of its grid area. + * + * **Syntax**: `<grid-line>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-column-end + */ + gridColumnEnd?: Property.GridColumnEnd | undefined; + /** + * The **`grid-column-start`** CSS property specifies a grid item's start position within the grid column by contributing a line, a span, or nothing (automatic) to its grid placement. This start position defines the block-start edge of the grid area. + * + * **Syntax**: `<grid-line>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-column-start + */ + gridColumnStart?: Property.GridColumnStart | undefined; + /** + * The **`grid-row-end`** CSS property specifies a grid item's end position within the grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-end edge of its grid area. + * + * **Syntax**: `<grid-line>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-row-end + */ + gridRowEnd?: Property.GridRowEnd | undefined; + /** + * The **`grid-row-start`** CSS property specifies a grid item's start position within the grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start edge of its grid area. + * + * **Syntax**: `<grid-line>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-row-start + */ + gridRowStart?: Property.GridRowStart | undefined; + /** + * The **`grid-template-areas`** CSS property specifies named grid areas, establishing the cells in the grid and assigning them names. + * + * **Syntax**: `none | <string>+` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-template-areas + */ + gridTemplateAreas?: Property.GridTemplateAreas | undefined; + /** + * The **`grid-template-columns`** CSS property defines the line names and track sizing functions of the grid columns. + * + * **Syntax**: `none | <track-list> | <auto-track-list> | subgrid <line-name-list>?` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-------------------------: | + * | **57** | **52** | **10.1** | **16** | **10** _(-ms-grid-columns)_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-template-columns + */ + gridTemplateColumns?: Property.GridTemplateColumns<TLength> | undefined; + /** + * The **`grid-template-rows`** CSS property defines the line names and track sizing functions of the grid rows. + * + * **Syntax**: `none | <track-list> | <auto-track-list> | subgrid <line-name-list>?` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :----------------------: | + * | **57** | **52** | **10.1** | **16** | **10** _(-ms-grid-rows)_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-template-rows + */ + gridTemplateRows?: Property.GridTemplateRows<TLength> | undefined; + /** + * The **`hanging-punctuation`** CSS property specifies whether a punctuation mark should hang at the start or end of a line of text. Hanging punctuation may be placed outside the line box. + * + * **Syntax**: `none | [ first || [ force-end | allow-end ] || last ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | No | **10** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/hanging-punctuation + */ + hangingPunctuation?: Property.HangingPunctuation | undefined; + /** + * The **`height`** CSS property specifies the height of an element. By default, the property defines the height of the content area. If `box-sizing` is set to `border-box`, however, it instead determines the height of the border area. + * + * **Syntax**: `auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/height + */ + height?: Property.Height<TLength> | undefined; + /** + * The **`hyphenate-character`** CSS property sets the character (or string) used at the end of a line before a hyphenation break. + * + * **Syntax**: `auto | <string>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :--: | :-: | + * | **106** | **98** | **17** | n/a | No | + * | 6 _-x-_ | | 5.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/hyphenate-character + */ + hyphenateCharacter?: Property.HyphenateCharacter | undefined; + /** + * The **`hyphenate-limit-chars`** CSS property specifies the minimum word length to allow hyphenation of words as well as the the minimum number of characters before and after the hyphen. + * + * **Syntax**: `[ auto | <integer> ]{1,3}` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **109** | No | No | n/a | No | + */ + hyphenateLimitChars?: Property.HyphenateLimitChars | undefined; + /** + * The **`hyphens`** CSS property specifies how words should be hyphenated when text wraps across multiple lines. It can prevent hyphenation entirely, hyphenate at manually-specified points within the text, or let the browser automatically insert hyphens where appropriate. + * + * **Syntax**: `none | manual | auto` + * + * **Initial value**: `manual` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-------: | :----: | :----------: | + * | **55** | **43** | **17** | **79** | **10** _-x-_ | + * | 13 _-x-_ | 6 _-x-_ | 5.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/hyphens + */ + hyphens?: Property.Hyphens | undefined; + /** + * The **`image-orientation`** CSS property specifies a layout-independent correction to the orientation of an image. + * + * **Syntax**: `from-image | <angle> | [ <angle>? flip ]` + * + * **Initial value**: `from-image` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **81** | **26** | **13.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/image-orientation + */ + imageOrientation?: Property.ImageOrientation | undefined; + /** + * The **`image-rendering`** CSS property sets an image scaling algorithm. The property applies to an element itself, to any images set in its other properties, and to its descendants. + * + * **Syntax**: `auto | crisp-edges | pixelated` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **13** | **3.6** | **6** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/image-rendering + */ + imageRendering?: Property.ImageRendering | undefined; + /** + * **Syntax**: `[ from-image || <resolution> ] && snap?` + * + * **Initial value**: `1dppx` + */ + imageResolution?: Property.ImageResolution | undefined; + /** + * The `initial-letter` CSS property sets styling for dropped, raised, and sunken initial letters. + * + * **Syntax**: `normal | [ <number> <integer>? ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :---------: | :--: | :-: | + * | **110** | No | **9** _-x-_ | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/initial-letter + */ + initialLetter?: Property.InitialLetter | undefined; + /** + * The **`inline-size`** CSS property defines the horizontal or vertical size of an element's block, depending on its writing mode. It corresponds to either the `width` or the `height` property, depending on the value of `writing-mode`. + * + * **Syntax**: `<'width'>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inline-size + */ + inlineSize?: Property.InlineSize<TLength> | undefined; + /** + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + */ + inputSecurity?: Property.InputSecurity | undefined; + /** + * The **`inset-block-end`** CSS property defines the logical block end offset of an element, which maps to a physical inset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **63** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inset-block-end + */ + insetBlockEnd?: Property.InsetBlockEnd<TLength> | undefined; + /** + * The **`inset-block-start`** CSS property defines the logical block start offset of an element, which maps to a physical inset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **63** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inset-block-start + */ + insetBlockStart?: Property.InsetBlockStart<TLength> | undefined; + /** + * The **`inset-inline-end`** CSS property defines the logical inline end inset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **63** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inset-inline-end + */ + insetInlineEnd?: Property.InsetInlineEnd<TLength> | undefined; + /** + * The **`inset-inline-start`** CSS property defines the logical inline start inset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **63** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inset-inline-start + */ + insetInlineStart?: Property.InsetInlineStart<TLength> | undefined; + /** + * The **`isolation`** CSS property determines whether an element must create a new stacking context. + * + * **Syntax**: `auto | isolate` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **41** | **36** | **8** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/isolation + */ + isolation?: Property.Isolation | undefined; + /** + * The CSS **`justify-content`** property defines how the browser distributes space between and around content items along the main-axis of a flex container, and the inline axis of a grid container. + * + * **Syntax**: `normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **20** | **9** | **12** | **11** | + * | 21 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/justify-content + */ + justifyContent?: Property.JustifyContent | undefined; + /** + * The CSS **`justify-items`** property defines the default `justify-self` for all items of the box, giving them all a default way of justifying each box along the appropriate axis. + * + * **Syntax**: `normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ]` + * + * **Initial value**: `legacy` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **52** | **20** | **9** | **12** | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/justify-items + */ + justifyItems?: Property.JustifyItems | undefined; + /** + * The CSS **`justify-self`** property sets the way a box is justified inside its alignment container along the appropriate axis. + * + * **Syntax**: `auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ]` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :----: | + * | **57** | **45** | **10.1** | **16** | **10** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/justify-self + */ + justifySelf?: Property.JustifySelf | undefined; + /** + * The **`justify-tracks`** CSS property sets the alignment in the masonry axis for grid containers that have masonry in their inline axis. + * + * **Syntax**: `[ normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ] ]#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/justify-tracks + */ + justifyTracks?: Property.JustifyTracks | undefined; + /** + * The **`left`** CSS property participates in specifying the horizontal position of a positioned element. It has no effect on non-positioned elements. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/left + */ + left?: Property.Left<TLength> | undefined; + /** + * The **`letter-spacing`** CSS property sets the horizontal spacing behavior between text characters. This value is added to the natural spacing between characters while rendering the text. Positive values of `letter-spacing` causes characters to spread farther apart, while negative values of `letter-spacing` bring characters closer together. + * + * **Syntax**: `normal | <length>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/letter-spacing + */ + letterSpacing?: Property.LetterSpacing<TLength> | undefined; + /** + * The **`line-break`** CSS property sets how to break lines of Chinese, Japanese, or Korean (CJK) text when working with punctuation and symbols. + * + * **Syntax**: `auto | loose | normal | strict | anywhere` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :-----: | + * | **58** | **69** | **11** | **14** | **5.5** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/line-break + */ + lineBreak?: Property.LineBreak | undefined; + /** + * The **`line-height`** CSS property sets the height of a line box. It's commonly used to set the distance between lines of text. On block-level elements, it specifies the minimum height of line boxes within the element. On non-replaced inline elements, it specifies the height that is used to calculate line box height. + * + * **Syntax**: `normal | <number> | <length> | <percentage>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/line-height + */ + lineHeight?: Property.LineHeight<TLength> | undefined; + /** + * The **`line-height-step`** CSS property sets the step unit for line box heights. When the property is set, line box heights are rounded up to the closest multiple of the unit. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | n/a | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/line-height-step + */ + lineHeightStep?: Property.LineHeightStep<TLength> | undefined; + /** + * The **`list-style-image`** CSS property sets an image to be used as the list item marker. + * + * **Syntax**: `<image> | none` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/list-style-image + */ + listStyleImage?: Property.ListStyleImage | undefined; + /** + * The **`list-style-position`** CSS property sets the position of the `::marker` relative to a list item. + * + * **Syntax**: `inside | outside` + * + * **Initial value**: `outside` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/list-style-position + */ + listStylePosition?: Property.ListStylePosition | undefined; + /** + * The **`list-style-type`** CSS property sets the marker (such as a disc, character, or custom counter style) of a list item element. + * + * **Syntax**: `<counter-style> | <string> | none` + * + * **Initial value**: `disc` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/list-style-type + */ + listStyleType?: Property.ListStyleType | undefined; + /** + * The **`margin-block-end`** CSS property defines the logical block end margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-block-end + */ + marginBlockEnd?: Property.MarginBlockEnd<TLength> | undefined; + /** + * The **`margin-block-start`** CSS property defines the logical block start margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-block-start + */ + marginBlockStart?: Property.MarginBlockStart<TLength> | undefined; + /** + * The **`margin-bottom`** CSS property sets the margin area on the bottom of an element. A positive value places it farther from its neighbors, while a negative value places it closer. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-bottom + */ + marginBottom?: Property.MarginBottom<TLength> | undefined; + /** + * The **`margin-inline-end`** CSS property defines the logical inline end margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. In other words, it corresponds to the `margin-top`, `margin-right`, `margin-bottom` or `margin-left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----------------------: | :-------------------: | :----------------------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | 2 _(-webkit-margin-end)_ | 3 _(-moz-margin-end)_ | 3 _(-webkit-margin-end)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-inline-end + */ + marginInlineEnd?: Property.MarginInlineEnd<TLength> | undefined; + /** + * The **`margin-inline-start`** CSS property defines the logical inline start margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. It corresponds to the `margin-top`, `margin-right`, `margin-bottom`, or `margin-left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------------------------: | :---------------------: | :------------------------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | 2 _(-webkit-margin-start)_ | 3 _(-moz-margin-start)_ | 3 _(-webkit-margin-start)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-inline-start + */ + marginInlineStart?: Property.MarginInlineStart<TLength> | undefined; + /** + * The **`margin-left`** CSS property sets the margin area on the left side of an element. A positive value places it farther from its neighbors, while a negative value places it closer. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-left + */ + marginLeft?: Property.MarginLeft<TLength> | undefined; + /** + * The **`margin-right`** CSS property sets the margin area on the right side of an element. A positive value places it farther from its neighbors, while a negative value places it closer. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-right + */ + marginRight?: Property.MarginRight<TLength> | undefined; + /** + * The **`margin-top`** CSS property sets the margin area on the top of an element. A positive value places it farther from its neighbors, while a negative value places it closer. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-top + */ + marginTop?: Property.MarginTop<TLength> | undefined; + /** + * The `margin-trim` property allows the container to trim the margins of its children where they adjoin the container's edges. + * + * **Syntax**: `none | in-flow | all` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | No | No | **16.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-trim + */ + marginTrim?: Property.MarginTrim | undefined; + /** + * The **`mask-border-mode`** CSS property specifies the blending mode used in a mask border. + * + * **Syntax**: `luminance | alpha` + * + * **Initial value**: `alpha` + */ + maskBorderMode?: Property.MaskBorderMode | undefined; + /** + * The **`mask-border-outset`** CSS property specifies the distance by which an element's mask border is set out from its border box. + * + * **Syntax**: `[ <length> | <number> ]{1,4}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-------------------------------------: | :-----: | :-----------------------------------: | :--: | :-: | + * | **1** _(-webkit-mask-box-image-outset)_ | No | **17.2** | n/a | No | + * | | | 3.1 _(-webkit-mask-box-image-outset)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-border-outset + */ + maskBorderOutset?: Property.MaskBorderOutset<TLength> | undefined; + /** + * The **`mask-border-repeat`** CSS property sets how the edge regions of a source image are adjusted to fit the dimensions of an element's mask border. + * + * **Syntax**: `[ stretch | repeat | round | space ]{1,2}` + * + * **Initial value**: `stretch` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-------------------------------------: | :-----: | :-----------------------------------: | :--: | :-: | + * | **1** _(-webkit-mask-box-image-repeat)_ | No | **17.2** | n/a | No | + * | | | 3.1 _(-webkit-mask-box-image-repeat)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-border-repeat + */ + maskBorderRepeat?: Property.MaskBorderRepeat | undefined; + /** + * The **`mask-border-slice`** CSS property divides the image set by `mask-border-source` into regions. These regions are used to form the components of an element's mask border. + * + * **Syntax**: `<number-percentage>{1,4} fill?` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------------------------------------: | :-----: | :----------------------------------: | :--: | :-: | + * | **1** _(-webkit-mask-box-image-slice)_ | No | **17.2** | n/a | No | + * | | | 3.1 _(-webkit-mask-box-image-slice)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-border-slice + */ + maskBorderSlice?: Property.MaskBorderSlice | undefined; + /** + * The **`mask-border-source`** CSS property sets the source image used to create an element's mask border. + * + * **Syntax**: `none | <image>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-------------------------------------: | :-----: | :-----------------------------------: | :--: | :-: | + * | **1** _(-webkit-mask-box-image-source)_ | No | **17.2** | n/a | No | + * | | | 3.1 _(-webkit-mask-box-image-source)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-border-source + */ + maskBorderSource?: Property.MaskBorderSource | undefined; + /** + * The **`mask-border-width`** CSS property sets the width of an element's mask border. + * + * **Syntax**: `[ <length-percentage> | <number> | auto ]{1,4}` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------------------------------------: | :-----: | :----------------------------------: | :--: | :-: | + * | **1** _(-webkit-mask-box-image-width)_ | No | **17.2** | n/a | No | + * | | | 3.1 _(-webkit-mask-box-image-width)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-border-width + */ + maskBorderWidth?: Property.MaskBorderWidth<TLength> | undefined; + /** + * The **`mask-clip`** CSS property determines the area which is affected by a mask. The painted content of an element must be restricted to this area. + * + * **Syntax**: `[ <geometry-box> | no-clip ]#` + * + * **Initial value**: `border-box` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **120** | **53** | **15.4** | n/a | No | + * | 1 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-clip + */ + maskClip?: Property.MaskClip | undefined; + /** + * The **`mask-composite`** CSS property represents a compositing operation used on the current mask layer with the mask layers below it. + * + * **Syntax**: `<compositing-operator>#` + * + * **Initial value**: `add` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :---: | :-: | + * | **120** | **53** | **15.4** | 18-79 | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-composite + */ + maskComposite?: Property.MaskComposite | undefined; + /** + * The **`mask-image`** CSS property sets the image that is used as mask layer for an element. By default this means the alpha channel of the mask image will be multiplied with the alpha channel of the element. This can be controlled with the `mask-mode` property. + * + * **Syntax**: `<mask-reference>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :---: | :-: | + * | **120** | **53** | **15.4** | 16-79 | No | + * | 1 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-image + */ + maskImage?: Property.MaskImage | undefined; + /** + * The **`mask-mode`** CSS property sets whether the mask reference defined by `mask-image` is treated as a luminance or alpha mask. + * + * **Syntax**: `<masking-mode>#` + * + * **Initial value**: `match-source` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **120** | **53** | **15.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-mode + */ + maskMode?: Property.MaskMode | undefined; + /** + * The **`mask-origin`** CSS property sets the origin of a mask. + * + * **Syntax**: `<geometry-box>#` + * + * **Initial value**: `border-box` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **120** | **53** | **15.4** | n/a | No | + * | 1 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-origin + */ + maskOrigin?: Property.MaskOrigin | undefined; + /** + * The **`mask-position`** CSS property sets the initial position, relative to the mask position layer set by `mask-origin`, for each defined mask image. + * + * **Syntax**: `<position>#` + * + * **Initial value**: `center` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :---: | :-: | + * | **120** | **53** | **15.4** | 18-79 | No | + * | 1 _-x-_ | | 3.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-position + */ + maskPosition?: Property.MaskPosition<TLength> | undefined; + /** + * The **`mask-repeat`** CSS property sets how mask images are repeated. A mask image can be repeated along the horizontal axis, the vertical axis, both axes, or not repeated at all. + * + * **Syntax**: `<repeat-style>#` + * + * **Initial value**: `repeat` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :---: | :-: | + * | **120** | **53** | **15.4** | 18-79 | No | + * | 1 _-x-_ | | 3.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-repeat + */ + maskRepeat?: Property.MaskRepeat | undefined; + /** + * The **`mask-size`** CSS property specifies the sizes of the mask images. The size of the image can be fully or partially constrained in order to preserve its intrinsic ratio. + * + * **Syntax**: `<bg-size>#` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :---: | :-: | + * | **120** | **53** | **15.4** | 18-79 | No | + * | 4 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-size + */ + maskSize?: Property.MaskSize<TLength> | undefined; + /** + * The **`mask-type`** CSS property sets whether an SVG `<mask>` element is used as a _luminance_ or an _alpha_ mask. It applies to the `<mask>` element itself. + * + * **Syntax**: `luminance | alpha` + * + * **Initial value**: `luminance` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **24** | **35** | **7** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-type + */ + maskType?: Property.MaskType | undefined; + /** + * This feature is not Baseline because it does not work in some of the most widely-used browsers. + * + * **Syntax**: `[ pack | next ] || [ definite-first | ordered ]` + * + * **Initial value**: `pack` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :---------: | :--: | :-: | + * | No | No | **preview** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/masonry-auto-flow + */ + masonryAutoFlow?: Property.MasonryAutoFlow | undefined; + /** + * The **`math-depth`** property describes a notion of _depth_ for each element of a mathematical formula, with respect to the top-level container of that formula. Concretely, this is used to determine the computed value of the font-size property when its specified value is `math`. + * + * **Syntax**: `auto-add | add(<integer>) | <integer>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **109** | **117** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/math-depth + */ + mathDepth?: Property.MathDepth | undefined; + /** + * The `math-shift` property indicates whether superscripts inside MathML formulas should be raised by a normal or compact shift. + * + * **Syntax**: `normal | compact` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **109** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/math-shift + */ + mathShift?: Property.MathShift | undefined; + /** + * The `math-style` property indicates whether MathML equations should render with normal or compact height. + * + * **Syntax**: `normal | compact` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **109** | **117** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/math-style + */ + mathStyle?: Property.MathStyle | undefined; + /** + * The **`max-block-size`** CSS property specifies the maximum size of an element in the direction opposite that of the writing direction as specified by `writing-mode`. That is, if the writing direction is horizontal, then `max-block-size` is equivalent to `max-height`; if the writing direction is vertical, `max-block-size` is the same as `max-width`. + * + * **Syntax**: `<'max-width'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/max-block-size + */ + maxBlockSize?: Property.MaxBlockSize<TLength> | undefined; + /** + * The **`max-height`** CSS property sets the maximum height of an element. It prevents the used value of the `height` property from becoming larger than the value specified for `max-height`. + * + * **Syntax**: `none | <length-percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **18** | **1** | **1.3** | **12** | **7** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/max-height + */ + maxHeight?: Property.MaxHeight<TLength> | undefined; + /** + * The **`max-inline-size`** CSS property defines the horizontal or vertical maximum size of an element's block, depending on its writing mode. It corresponds to either the `max-width` or the `max-height` property, depending on the value of `writing-mode`. + * + * **Syntax**: `<'max-width'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :--------: | :--: | :-: | + * | **57** | **41** | **12.1** | n/a | No | + * | | | 10.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/max-inline-size + */ + maxInlineSize?: Property.MaxInlineSize<TLength> | undefined; + /** + * **Syntax**: `none | <integer>` + * + * **Initial value**: `none` + */ + maxLines?: Property.MaxLines | undefined; + /** + * The **`max-width`** CSS property sets the maximum width of an element. It prevents the used value of the `width` property from becoming larger than the value specified by `max-width`. + * + * **Syntax**: `none | <length-percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **7** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/max-width + */ + maxWidth?: Property.MaxWidth<TLength> | undefined; + /** + * The **`min-block-size`** CSS property defines the minimum horizontal or vertical size of an element's block, depending on its writing mode. It corresponds to either the `min-width` or the `min-height` property, depending on the value of `writing-mode`. + * + * **Syntax**: `<'min-width'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/min-block-size + */ + minBlockSize?: Property.MinBlockSize<TLength> | undefined; + /** + * The **`min-height`** CSS property sets the minimum height of an element. It prevents the used value of the `height` property from becoming smaller than the value specified for `min-height`. + * + * **Syntax**: `auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **3** | **1.3** | **12** | **7** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/min-height + */ + minHeight?: Property.MinHeight<TLength> | undefined; + /** + * The **`min-inline-size`** CSS property defines the horizontal or vertical minimal size of an element's block, depending on its writing mode. It corresponds to either the `min-width` or the `min-height` property, depending on the value of `writing-mode`. + * + * **Syntax**: `<'min-width'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/min-inline-size + */ + minInlineSize?: Property.MinInlineSize<TLength> | undefined; + /** + * The **`min-width`** CSS property sets the minimum width of an element. It prevents the used value of the `width` property from becoming smaller than the value specified for `min-width`. + * + * **Syntax**: `auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **7** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/min-width + */ + minWidth?: Property.MinWidth<TLength> | undefined; + /** + * The **`mix-blend-mode`** CSS property sets how an element's content should blend with the content of the element's parent and the element's background. + * + * **Syntax**: `<blend-mode> | plus-lighter` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **41** | **32** | **8** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mix-blend-mode + */ + mixBlendMode?: Property.MixBlendMode | undefined; + /** + * The **`offset-distance`** CSS property specifies a position along an `offset-path` for an element to be placed. + * + * **Syntax**: `<length-percentage>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :--------------------: | :-----: | :----: | :--: | :-: | + * | **55** | **72** | **16** | n/a | No | + * | 46 _(motion-distance)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-distance + */ + motionDistance?: Property.OffsetDistance<TLength> | undefined; + /** + * The **`offset-path`** CSS property specifies a motion path for an element to follow and defines the element's positioning within the parent container or SVG coordinate system. + * + * **Syntax**: `none | <offset-path> || <coord-box>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----------------: | :-----: | :------: | :--: | :-: | + * | **55** | **72** | **15.4** | n/a | No | + * | 46 _(motion-path)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-path + */ + motionPath?: Property.OffsetPath | undefined; + /** + * The **`offset-rotate`** CSS property defines the orientation/direction of the element as it is positioned along the `offset-path`. + * + * **Syntax**: `[ auto | reverse ] || <angle>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :--------------------: | :-----: | :----: | :--: | :-: | + * | **56** | **72** | **16** | n/a | No | + * | 46 _(motion-rotation)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-rotate + */ + motionRotation?: Property.OffsetRotate | undefined; + /** + * The **`object-fit`** CSS property sets how the content of a replaced element, such as an `<img>` or `<video>`, should be resized to fit its container. + * + * **Syntax**: `fill | contain | cover | none | scale-down` + * + * **Initial value**: `fill` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **32** | **36** | **10** | **79** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/object-fit + */ + objectFit?: Property.ObjectFit | undefined; + /** + * The **`object-position`** CSS property specifies the alignment of the selected replaced element's contents within the element's box. Areas of the box which aren't covered by the replaced element's object will show the element's background. + * + * **Syntax**: `<position>` + * + * **Initial value**: `50% 50%` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **32** | **36** | **10** | **79** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/object-position + */ + objectPosition?: Property.ObjectPosition<TLength> | undefined; + /** + * **Syntax**: `auto | <position>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **116** | **72** | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-anchor + */ + offsetAnchor?: Property.OffsetAnchor<TLength> | undefined; + /** + * The **`offset-distance`** CSS property specifies a position along an `offset-path` for an element to be placed. + * + * **Syntax**: `<length-percentage>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :--------------------: | :-----: | :----: | :--: | :-: | + * | **55** | **72** | **16** | n/a | No | + * | 46 _(motion-distance)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-distance + */ + offsetDistance?: Property.OffsetDistance<TLength> | undefined; + /** + * The **`offset-path`** CSS property specifies a motion path for an element to follow and defines the element's positioning within the parent container or SVG coordinate system. + * + * **Syntax**: `none | <offset-path> || <coord-box>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----------------: | :-----: | :------: | :--: | :-: | + * | **55** | **72** | **15.4** | n/a | No | + * | 46 _(motion-path)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-path + */ + offsetPath?: Property.OffsetPath | undefined; + /** + * **Syntax**: `normal | auto | <position>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **116** | n/a | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-position + */ + offsetPosition?: Property.OffsetPosition<TLength> | undefined; + /** + * The **`offset-rotate`** CSS property defines the orientation/direction of the element as it is positioned along the `offset-path`. + * + * **Syntax**: `[ auto | reverse ] || <angle>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :--------------------: | :-----: | :----: | :--: | :-: | + * | **56** | **72** | **16** | n/a | No | + * | 46 _(motion-rotation)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-rotate + */ + offsetRotate?: Property.OffsetRotate | undefined; + /** + * The **`offset-rotate`** CSS property defines the orientation/direction of the element as it is positioned along the `offset-path`. + * + * **Syntax**: `[ auto | reverse ] || <angle>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :--------------------: | :-----: | :----: | :--: | :-: | + * | **56** | **72** | **16** | n/a | No | + * | 46 _(motion-rotation)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-rotate + */ + offsetRotation?: Property.OffsetRotate | undefined; + /** + * The **`opacity`** CSS property sets the opacity of an element. Opacity is the degree to which content behind an element is hidden, and is the opposite of transparency. + * + * **Syntax**: `<alpha-value>` + * + * **Initial value**: `1` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **2** | **12** | **9** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/opacity + */ + opacity?: Property.Opacity | undefined; + /** + * The **`order`** CSS property sets the order to lay out an item in a flex or grid container. Items in a container are sorted by ascending `order` value and then by their source code order. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :------: | + * | **29** | **20** | **9** | **12** | **11** | + * | 21 _-x-_ | | 7 _-x-_ | | 10 _-x-_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/order + */ + order?: Property.Order | undefined; + /** + * The **`orphans`** CSS property sets the minimum number of lines in a block container that must be shown at the _bottom_ of a page, region, or column. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `2` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **25** | No | **1.3** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/orphans + */ + orphans?: Property.Orphans | undefined; + /** + * The **`outline-color`** CSS property sets the color of an element's outline. + * + * **Syntax**: `<color> | invert` + * + * **Initial value**: `invert`, for browsers supporting it, `currentColor` for the other + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1.5** | **1.2** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/outline-color + */ + outlineColor?: Property.OutlineColor | undefined; + /** + * The **`outline-offset`** CSS property sets the amount of space between an outline and the edge or border of an element. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :-: | + * | **1** | **1.5** | **1.2** | **15** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/outline-offset + */ + outlineOffset?: Property.OutlineOffset<TLength> | undefined; + /** + * The **`outline-style`** CSS property sets the style of an element's outline. An outline is a line that is drawn around an element, outside the `border`. + * + * **Syntax**: `auto | <'border-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1.5** | **1.2** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/outline-style + */ + outlineStyle?: Property.OutlineStyle | undefined; + /** + * The CSS **`outline-width`** property sets the thickness of an element's outline. An outline is a line that is drawn around an element, outside the `border`. + * + * **Syntax**: `<line-width>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1.5** | **1.2** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/outline-width + */ + outlineWidth?: Property.OutlineWidth<TLength> | undefined; + /** + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **56** | **66** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow-anchor + */ + overflowAnchor?: Property.OverflowAnchor | undefined; + /** + * **Syntax**: `visible | hidden | clip | scroll | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | **69** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow-block + */ + overflowBlock?: Property.OverflowBlock | undefined; + /** + * The **`overflow-clip-box`** CSS property specifies relative to which box the clipping happens when there is an overflow. It is short hand for the `overflow-clip-box-inline` and `overflow-clip-box-block` properties. + * + * **Syntax**: `padding-box | content-box` + * + * **Initial value**: `padding-box` + */ + overflowClipBox?: Property.OverflowClipBox | undefined; + /** + * **Syntax**: `<visual-box> || <length [0,∞]>` + * + * **Initial value**: `0px` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **90** | **102** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow-clip-margin + */ + overflowClipMargin?: Property.OverflowClipMargin<TLength> | undefined; + /** + * **Syntax**: `visible | hidden | clip | scroll | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | **69** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow-inline + */ + overflowInline?: Property.OverflowInline | undefined; + /** + * The **`overflow-wrap`** CSS property applies to inline elements, setting whether the browser should insert line breaks within an otherwise unbreakable string to prevent text from overflowing its line box. + * + * **Syntax**: `normal | break-word | anywhere` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-------------: | :---------------: | :-------------: | :--------------: | :-------------------: | + * | **23** | **49** | **7** | **18** | **5.5** _(word-wrap)_ | + * | 1 _(word-wrap)_ | 3.5 _(word-wrap)_ | 1 _(word-wrap)_ | 12 _(word-wrap)_ | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow-wrap + */ + overflowWrap?: Property.OverflowWrap | undefined; + /** + * The **`overflow-x`** CSS property sets what shows when content overflows a block-level element's left and right edges. This may be nothing, a scroll bar, or the overflow content. + * + * **Syntax**: `visible | hidden | clip | scroll | auto` + * + * **Initial value**: `visible` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **3.5** | **3** | **12** | **5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow-x + */ + overflowX?: Property.OverflowX | undefined; + /** + * The **`overflow-y`** CSS property sets what shows when content overflows a block-level element's top and bottom edges. This may be nothing, a scroll bar, or the overflow content. + * + * **Syntax**: `visible | hidden | clip | scroll | auto` + * + * **Initial value**: `visible` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **3.5** | **3** | **12** | **5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow-y + */ + overflowY?: Property.OverflowY | undefined; + /** + * The **`overlay`** CSS property specifies whether an element appearing in the top layer (for example, a shown popover or modal `<dialog>` element) is actually rendered in the top layer. This property is only relevant within a list of `transition-property` values, and only if `allow-discrete` is set as the `transition-behavior`. + * + * **Syntax**: `none | auto` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **117** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overlay + */ + overlay?: Property.Overlay | undefined; + /** + * The **`overscroll-behavior-block`** CSS property sets the browser's behavior when the block direction boundary of a scrolling area is reached. + * + * **Syntax**: `contain | none | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **77** | **73** | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-block + */ + overscrollBehaviorBlock?: Property.OverscrollBehaviorBlock | undefined; + /** + * The **`overscroll-behavior-inline`** CSS property sets the browser's behavior when the inline direction boundary of a scrolling area is reached. + * + * **Syntax**: `contain | none | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **77** | **73** | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-inline + */ + overscrollBehaviorInline?: Property.OverscrollBehaviorInline | undefined; + /** + * The **`overscroll-behavior-x`** CSS property sets the browser's behavior when the horizontal boundary of a scrolling area is reached. + * + * **Syntax**: `contain | none | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **63** | **59** | **16** | **18** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-x + */ + overscrollBehaviorX?: Property.OverscrollBehaviorX | undefined; + /** + * The **`overscroll-behavior-y`** CSS property sets the browser's behavior when the vertical boundary of a scrolling area is reached. + * + * **Syntax**: `contain | none | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **63** | **59** | **16** | **18** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-y + */ + overscrollBehaviorY?: Property.OverscrollBehaviorY | undefined; + /** + * The **`padding-block-end`** CSS property defines the logical block end padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-block-end + */ + paddingBlockEnd?: Property.PaddingBlockEnd<TLength> | undefined; + /** + * The **`padding-block-start`** CSS property defines the logical block start padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-block-start + */ + paddingBlockStart?: Property.PaddingBlockStart<TLength> | undefined; + /** + * The **`padding-bottom`** CSS property sets the height of the padding area on the bottom of an element. + * + * **Syntax**: `<length> | <percentage>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-bottom + */ + paddingBottom?: Property.PaddingBottom<TLength> | undefined; + /** + * The **`padding-inline-end`** CSS property defines the logical inline end padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----------------------: | :--------------------: | :-----------------------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | 2 _(-webkit-padding-end)_ | 3 _(-moz-padding-end)_ | 3 _(-webkit-padding-end)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-inline-end + */ + paddingInlineEnd?: Property.PaddingInlineEnd<TLength> | undefined; + /** + * The **`padding-inline-start`** CSS property defines the logical inline start padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-------------------------: | :----------------------: | :-------------------------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | 2 _(-webkit-padding-start)_ | 3 _(-moz-padding-start)_ | 3 _(-webkit-padding-start)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-inline-start + */ + paddingInlineStart?: Property.PaddingInlineStart<TLength> | undefined; + /** + * The **`padding-left`** CSS property sets the width of the padding area to the left of an element. + * + * **Syntax**: `<length> | <percentage>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-left + */ + paddingLeft?: Property.PaddingLeft<TLength> | undefined; + /** + * The **`padding-right`** CSS property sets the width of the padding area on the right of an element. + * + * **Syntax**: `<length> | <percentage>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-right + */ + paddingRight?: Property.PaddingRight<TLength> | undefined; + /** + * The **`padding-top`** CSS property sets the height of the padding area on the top of an element. + * + * **Syntax**: `<length> | <percentage>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-top + */ + paddingTop?: Property.PaddingTop<TLength> | undefined; + /** + * The **`page`** CSS property is used to specify the named page, a specific type of page defined by the `@page` at-rule. + * + * **Syntax**: `auto | <custom-ident>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-------: | :--: | :-: | + * | **85** | **110** | **≤13.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/page + */ + page?: Property.Page | undefined; + /** + * The **`page-break-after`** CSS property adjusts page breaks _after_ the current element. + * + * **Syntax**: `auto | always | avoid | left | right | recto | verso` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1** | **1.2** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/page-break-after + */ + pageBreakAfter?: Property.PageBreakAfter | undefined; + /** + * The **`page-break-before`** CSS property adjusts page breaks _before_ the current element. + * + * **Syntax**: `auto | always | avoid | left | right | recto | verso` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1** | **1.2** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/page-break-before + */ + pageBreakBefore?: Property.PageBreakBefore | undefined; + /** + * The **`page-break-inside`** CSS property adjusts page breaks _inside_ the current element. + * + * **Syntax**: `auto | avoid` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **19** | **1.3** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/page-break-inside + */ + pageBreakInside?: Property.PageBreakInside | undefined; + /** + * The **`paint-order`** CSS property lets you control the order in which the fill and stroke (and painting markers) of text content and shapes are drawn. + * + * **Syntax**: `normal | [ fill || stroke || markers ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **35** | **60** | **8** | **17** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/paint-order + */ + paintOrder?: Property.PaintOrder | undefined; + /** + * The **`perspective`** CSS property determines the distance between the z=0 plane and the user in order to give a 3D-positioned element some perspective. + * + * **Syntax**: `none | <length>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **36** | **16** | **9** | **12** | **10** | + * | 12 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/perspective + */ + perspective?: Property.Perspective<TLength> | undefined; + /** + * The **`perspective-origin`** CSS property determines the position at which the viewer is looking. It is used as the _vanishing point_ by the `perspective` property. + * + * **Syntax**: `<position>` + * + * **Initial value**: `50% 50%` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **36** | **16** | **9** | **12** | **10** | + * | 12 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/perspective-origin + */ + perspectiveOrigin?: Property.PerspectiveOrigin<TLength> | undefined; + /** + * The **`pointer-events`** CSS property sets under what circumstances (if any) a particular graphic element can become the target of pointer events. + * + * **Syntax**: `auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **1** | **1.5** | **4** | **12** | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/pointer-events + */ + pointerEvents?: Property.PointerEvents | undefined; + /** + * The **`position`** CSS property sets how an element is positioned in a document. The `top`, `right`, `bottom`, and `left` properties determine the final location of positioned elements. + * + * **Syntax**: `static | relative | absolute | sticky | fixed` + * + * **Initial value**: `static` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/position + */ + position?: Property.Position | undefined; + /** + * The **`print-color-adjust`** CSS property sets what, if anything, the user agent may do to optimize the appearance of the element on the output device. By default, the browser is allowed to make any adjustments to the element's appearance it determines to be necessary and prudent given the type and capabilities of the output device. + * + * **Syntax**: `economy | exact` + * + * **Initial value**: `economy` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----------: | :-----------------: | :------: | :----------: | :-: | + * | **17** _-x-_ | **97** | **15.4** | **79** _-x-_ | No | + * | | 48 _(color-adjust)_ | 6 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/print-color-adjust + */ + printColorAdjust?: Property.PrintColorAdjust | undefined; + /** + * The **`quotes`** CSS property sets how the browser should render quotation marks that are added using the `open-quotes` or `close-quotes` values of the CSS `content` property. + * + * **Syntax**: `none | auto | [ <string> <string> ]+` + * + * **Initial value**: depends on user agent + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **11** | **1.5** | **9** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/quotes + */ + quotes?: Property.Quotes | undefined; + /** + * The **`resize`** CSS property sets whether an element is resizable, and if so, in which directions. + * + * **Syntax**: `none | both | horizontal | vertical | block | inline` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **1** | **4** | **3** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/resize + */ + resize?: Property.Resize | undefined; + /** + * The **`right`** CSS property participates in specifying the horizontal position of a positioned element. It has no effect on non-positioned elements. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/right + */ + right?: Property.Right<TLength> | undefined; + /** + * The **`rotate`** CSS property allows you to specify rotation transforms individually and independently of the `transform` property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the `transform` property. + * + * **Syntax**: `none | <angle> | [ x | y | z | <number>{3} ] && <angle>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **104** | **72** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/rotate + */ + rotate?: Property.Rotate | undefined; + /** + * The **`row-gap`** CSS property sets the size of the gap (gutter) between an element's rows. + * + * **Syntax**: `normal | <length-percentage>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **47** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/row-gap + */ + rowGap?: Property.RowGap<TLength> | undefined; + /** + * The **`ruby-align`** CSS property defines the distribution of the different ruby elements over the base. + * + * **Syntax**: `start | center | space-between | space-around` + * + * **Initial value**: `space-around` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | **38** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/ruby-align + */ + rubyAlign?: Property.RubyAlign | undefined; + /** + * **Syntax**: `separate | collapse | auto` + * + * **Initial value**: `separate` + */ + rubyMerge?: Property.RubyMerge | undefined; + /** + * The **`ruby-position`** CSS property defines the position of a ruby element relatives to its base element. It can be positioned over the element (`over`), under it (`under`), or between the characters on their right side (`inter-character`). + * + * **Syntax**: `[ alternate || [ over | under ] ] | inter-character` + * + * **Initial value**: `alternate` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :---------: | :---: | :-: | + * | **84** | **38** | **7** _-x-_ | 12-79 | No | + * | 1 _-x-_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/ruby-position + */ + rubyPosition?: Property.RubyPosition | undefined; + /** + * The **`scale`** CSS property allows you to specify scale transforms individually and independently of the `transform` property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the `transform` value. + * + * **Syntax**: `none | <number>{1,3}` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **104** | **72** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scale + */ + scale?: Property.Scale | undefined; + /** + * The **`scroll-behavior`** CSS property sets the behavior for a scrolling box when scrolling is triggered by the navigation or CSSOM scrolling APIs. + * + * **Syntax**: `auto | smooth` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **61** | **36** | **15.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-behavior + */ + scrollBehavior?: Property.ScrollBehavior | undefined; + /** + * The `scroll-margin-block-end` property defines the margin of the scroll snap area at the end of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-end + */ + scrollMarginBlockEnd?: Property.ScrollMarginBlockEnd<TLength> | undefined; + /** + * The `scroll-margin-block-start` property defines the margin of the scroll snap area at the start of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-start + */ + scrollMarginBlockStart?: Property.ScrollMarginBlockStart<TLength> | undefined; + /** + * The `scroll-margin-bottom` property defines the bottom margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-bottom)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-bottom + */ + scrollMarginBottom?: Property.ScrollMarginBottom<TLength> | undefined; + /** + * The `scroll-margin-inline-end` property defines the margin of the scroll snap area at the end of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-end + */ + scrollMarginInlineEnd?: Property.ScrollMarginInlineEnd<TLength> | undefined; + /** + * The `scroll-margin-inline-start` property defines the margin of the scroll snap area at the start of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-start + */ + scrollMarginInlineStart?: Property.ScrollMarginInlineStart<TLength> | undefined; + /** + * The `scroll-margin-left` property defines the left margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-left)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-left + */ + scrollMarginLeft?: Property.ScrollMarginLeft<TLength> | undefined; + /** + * The `scroll-margin-right` property defines the right margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-right)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-right + */ + scrollMarginRight?: Property.ScrollMarginRight<TLength> | undefined; + /** + * The `scroll-margin-top` property defines the top margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :---------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-top)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-top + */ + scrollMarginTop?: Property.ScrollMarginTop<TLength> | undefined; + /** + * The `scroll-padding-block-end` property defines offsets for the end edge in the block dimension of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-end + */ + scrollPaddingBlockEnd?: Property.ScrollPaddingBlockEnd<TLength> | undefined; + /** + * The `scroll-padding-block-start` property defines offsets for the start edge in the block dimension of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-start + */ + scrollPaddingBlockStart?: Property.ScrollPaddingBlockStart<TLength> | undefined; + /** + * The `scroll-padding-bottom` property defines offsets for the bottom of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-bottom + */ + scrollPaddingBottom?: Property.ScrollPaddingBottom<TLength> | undefined; + /** + * The `scroll-padding-inline-end` property defines offsets for the end edge in the inline dimension of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-end + */ + scrollPaddingInlineEnd?: Property.ScrollPaddingInlineEnd<TLength> | undefined; + /** + * The `scroll-padding-inline-start` property defines offsets for the start edge in the inline dimension of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-start + */ + scrollPaddingInlineStart?: Property.ScrollPaddingInlineStart<TLength> | undefined; + /** + * The `scroll-padding-left` property defines offsets for the left of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-left + */ + scrollPaddingLeft?: Property.ScrollPaddingLeft<TLength> | undefined; + /** + * The `scroll-padding-right` property defines offsets for the right of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-right + */ + scrollPaddingRight?: Property.ScrollPaddingRight<TLength> | undefined; + /** + * The **`scroll-padding-top`** property defines offsets for the top of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-top + */ + scrollPaddingTop?: Property.ScrollPaddingTop<TLength> | undefined; + /** + * The `scroll-snap-align` property specifies the box's snap position as an alignment of its snap area (as the alignment subject) within its snap container's snapport (as the alignment container). The two values specify the snapping alignment in the block axis and inline axis, respectively. If only one value is specified, the second value defaults to the same value. + * + * **Syntax**: `[ none | start | end | center ]{1,2}` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **11** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-snap-align + */ + scrollSnapAlign?: Property.ScrollSnapAlign | undefined; + /** + * The `scroll-margin-bottom` property defines the bottom margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-bottom)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-bottom + */ + scrollSnapMarginBottom?: Property.ScrollMarginBottom<TLength> | undefined; + /** + * The `scroll-margin-left` property defines the left margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-left)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-left + */ + scrollSnapMarginLeft?: Property.ScrollMarginLeft<TLength> | undefined; + /** + * The `scroll-margin-right` property defines the right margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-right)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-right + */ + scrollSnapMarginRight?: Property.ScrollMarginRight<TLength> | undefined; + /** + * The `scroll-margin-top` property defines the top margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :---------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-top)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-top + */ + scrollSnapMarginTop?: Property.ScrollMarginTop<TLength> | undefined; + /** + * The **`scroll-snap-stop`** CSS property defines whether or not the scroll container is allowed to "pass over" possible snap positions. + * + * **Syntax**: `normal | always` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **75** | **103** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-snap-stop + */ + scrollSnapStop?: Property.ScrollSnapStop | undefined; + /** + * The **`scroll-snap-type`** CSS property sets how strictly snap points are enforced on the scroll container in case there is one. + * + * **Syntax**: `none | [ x | y | block | inline | both ] [ mandatory | proximity ]?` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :----------: | + * | **69** | 39-68 | **11** | **79** | **10** _-x-_ | + * | | | 9 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type + */ + scrollSnapType?: Property.ScrollSnapType | undefined; + /** + * The **`scroll-timeline-axis`** CSS property can be used to specify the scrollbar that will be used to provide the timeline for a scroll-timeline animation. + * + * **Syntax**: `[ block | inline | x | y ]#` + * + * **Initial value**: `block` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-timeline-axis + */ + scrollTimelineAxis?: Property.ScrollTimelineAxis | undefined; + /** + * The **`scroll-timeline-name`** CSS property defines a name that can be used to identify an element as the source of a scroll timeline for an animation. + * + * **Syntax**: `none | <dashed-ident>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-timeline-name + */ + scrollTimelineName?: Property.ScrollTimelineName | undefined; + /** + * The **`scrollbar-color`** CSS property sets the color of the scrollbar track and thumb. + * + * **Syntax**: `auto | <color>{2}` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **121** | **64** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scrollbar-color + */ + scrollbarColor?: Property.ScrollbarColor | undefined; + /** + * The **`scrollbar-gutter`** CSS property allows authors to reserve space for the scrollbar, preventing unwanted layout changes as the content grows while also avoiding unnecessary visuals when scrolling isn't needed. + * + * **Syntax**: `auto | stable && both-edges?` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **94** | **97** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scrollbar-gutter + */ + scrollbarGutter?: Property.ScrollbarGutter | undefined; + /** + * The **`scrollbar-width`** property allows the author to set the maximum thickness of an element's scrollbars when they are shown. + * + * **Syntax**: `auto | thin | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **121** | **64** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scrollbar-width + */ + scrollbarWidth?: Property.ScrollbarWidth | undefined; + /** + * The **`shape-image-threshold`** CSS property sets the alpha channel threshold used to extract the shape using an image as the value for `shape-outside`. + * + * **Syntax**: `<alpha-value>` + * + * **Initial value**: `0.0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **37** | **62** | **10.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/shape-image-threshold + */ + shapeImageThreshold?: Property.ShapeImageThreshold | undefined; + /** + * The **`shape-margin`** CSS property sets a margin for a CSS shape created using `shape-outside`. + * + * **Syntax**: `<length-percentage>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **37** | **62** | **10.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/shape-margin + */ + shapeMargin?: Property.ShapeMargin<TLength> | undefined; + /** + * The **`shape-outside`** CSS property defines a shape—which may be non-rectangular—around which adjacent inline content should wrap. By default, inline content wraps around its margin box; `shape-outside` provides a way to customize this wrapping, making it possible to wrap text around complex objects rather than simple boxes. + * + * **Syntax**: `none | [ <shape-box> || <basic-shape> ] | <image>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **37** | **62** | **10.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/shape-outside + */ + shapeOutside?: Property.ShapeOutside | undefined; + /** + * The **`tab-size`** CSS property is used to customize the width of tab characters (U+0009). + * + * **Syntax**: `<integer> | <length>` + * + * **Initial value**: `8` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **21** | **91** | **7** | n/a | No | + * | | 4 _-x-_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/tab-size + */ + tabSize?: Property.TabSize<TLength> | undefined; + /** + * The **`table-layout`** CSS property sets the algorithm used to lay out `<table>` cells, rows, and columns. + * + * **Syntax**: `auto | fixed` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **14** | **1** | **1** | **12** | **5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/table-layout + */ + tableLayout?: Property.TableLayout | undefined; + /** + * The **`text-align`** CSS property sets the horizontal alignment of the inline-level content inside a block element or table-cell box. This means it works like `vertical-align` but in the horizontal direction. + * + * **Syntax**: `start | end | left | right | center | justify | match-parent` + * + * **Initial value**: `start`, or a nameless value that acts as `left` if _direction_ is `ltr`, `right` if _direction_ is `rtl` if `start` is not supported by the browser. + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-align + */ + textAlign?: Property.TextAlign | undefined; + /** + * The **`text-align-last`** CSS property sets how the last line of a block or a line, right before a forced line break, is aligned. + * + * **Syntax**: `auto | start | end | left | right | center | justify` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **47** | **49** | **16** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-align-last + */ + textAlignLast?: Property.TextAlignLast | undefined; + /** + * The **`text-combine-upright`** CSS property sets the combination of characters into the space of a single character. If the combined text is wider than 1em, the user agent must fit the contents within 1em. The resulting composition is treated as a single upright glyph for layout and decoration. This property only has an effect in vertical writing modes. + * + * **Syntax**: `none | all | [ digits <integer>? ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------------------------: | :-----: | :--------------------------: | :----: | :------------------------------------: | + * | **48** | **48** | **15.4** | **79** | **11** _(-ms-text-combine-horizontal)_ | + * | 9 _(-webkit-text-combine)_ | | 5.1 _(-webkit-text-combine)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-combine-upright + */ + textCombineUpright?: Property.TextCombineUpright | undefined; + /** + * The **`text-decoration-color`** CSS property sets the color of decorations added to text by `text-decoration-line`. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **36** | **12.1** | n/a | No | + * | | | 8 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-decoration-color + */ + textDecorationColor?: Property.TextDecorationColor | undefined; + /** + * The **`text-decoration-line`** CSS property sets the kind of decoration that is used on text in an element, such as an underline or overline. + * + * **Syntax**: `none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **36** | **12.1** | n/a | No | + * | | | 8 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-decoration-line + */ + textDecorationLine?: Property.TextDecorationLine | undefined; + /** + * The **`text-decoration-skip`** CSS property sets what parts of an element's content any text decoration affecting the element must skip over. It controls all text decoration lines drawn by the element and also any text decoration lines drawn by its ancestors. + * + * **Syntax**: `none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]` + * + * **Initial value**: `objects` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | 57-64 | No | **12.1** | n/a | No | + * | | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip + */ + textDecorationSkip?: Property.TextDecorationSkip | undefined; + /** + * The **`text-decoration-skip-ink`** CSS property specifies how overlines and underlines are drawn when they pass over glyph ascenders and descenders. + * + * **Syntax**: `auto | all | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **64** | **70** | **15.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip-ink + */ + textDecorationSkipInk?: Property.TextDecorationSkipInk | undefined; + /** + * The **`text-decoration-style`** CSS property sets the style of the lines specified by `text-decoration-line`. The style applies to all lines that are set with `text-decoration-line`. + * + * **Syntax**: `solid | double | dotted | dashed | wavy` + * + * **Initial value**: `solid` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **36** | **12.1** | n/a | No | + * | | | 8 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-decoration-style + */ + textDecorationStyle?: Property.TextDecorationStyle | undefined; + /** + * The **`text-decoration-thickness`** CSS property sets the stroke thickness of the decoration line that is used on text in an element, such as a line-through, underline, or overline. + * + * **Syntax**: `auto | from-font | <length> | <percentage> ` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **89** | **70** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-decoration-thickness + */ + textDecorationThickness?: Property.TextDecorationThickness<TLength> | undefined; + /** + * The **`text-emphasis-color`** CSS property sets the color of emphasis marks. This value can also be set using the `text-emphasis` shorthand. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :----: | :--: | :-: | + * | **99** | **46** | **7** | n/a | No | + * | 25 _-x-_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-emphasis-color + */ + textEmphasisColor?: Property.TextEmphasisColor | undefined; + /** + * The **`text-emphasis-position`** CSS property sets where emphasis marks are drawn. Like ruby text, if there isn't enough room for emphasis marks, the line height is increased. + * + * **Syntax**: `[ over | under ] && [ right | left ]` + * + * **Initial value**: `over right` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :----: | :--: | :-: | + * | **99** | **46** | **7** | n/a | No | + * | 25 _-x-_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-emphasis-position + */ + textEmphasisPosition?: Property.TextEmphasisPosition | undefined; + /** + * The **`text-emphasis-style`** CSS property sets the appearance of emphasis marks. It can also be set, and reset, using the `text-emphasis` shorthand. + * + * **Syntax**: `none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :----: | :--: | :-: | + * | **99** | **46** | **7** | n/a | No | + * | 25 _-x-_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-emphasis-style + */ + textEmphasisStyle?: Property.TextEmphasisStyle | undefined; + /** + * The **`text-indent`** CSS property sets the length of empty space (indentation) that is put before lines of text in a block. + * + * **Syntax**: `<length-percentage> && hanging? && each-line?` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-indent + */ + textIndent?: Property.TextIndent<TLength> | undefined; + /** + * The **`text-justify`** CSS property sets what type of justification should be applied to text when `text-align``: justify;` is set on an element. + * + * **Syntax**: `auto | inter-character | inter-word | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :---: | :----: | + * | n/a | **55** | No | 12-79 | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-justify + */ + textJustify?: Property.TextJustify | undefined; + /** + * The **`text-orientation`** CSS property sets the orientation of the text characters in a line. It only affects text in vertical mode (when `writing-mode` is not `horizontal-tb`). It is useful for controlling the display of languages that use vertical script, and also for making vertical table headers. + * + * **Syntax**: `mixed | upright | sideways` + * + * **Initial value**: `mixed` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-------: | :--: | :-: | + * | **48** | **41** | **14** | n/a | No | + * | 11 _-x-_ | | 5.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-orientation + */ + textOrientation?: Property.TextOrientation | undefined; + /** + * The **`text-overflow`** CSS property sets how hidden overflow content is signaled to users. It can be clipped, display an ellipsis ('`…`'), or display a custom string. + * + * **Syntax**: `[ clip | ellipsis | <string> ]{1,2}` + * + * **Initial value**: `clip` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **7** | **1.3** | **12** | **6** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-overflow + */ + textOverflow?: Property.TextOverflow | undefined; + /** + * The **`text-rendering`** CSS property provides information to the rendering engine about what to optimize for when rendering text. + * + * **Syntax**: `auto | optimizeSpeed | optimizeLegibility | geometricPrecision` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **4** | **1** | **5** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-rendering + */ + textRendering?: Property.TextRendering | undefined; + /** + * The **`text-shadow`** CSS property adds shadows to text. It accepts a comma-separated list of shadows to be applied to the text and any of its `decorations`. Each shadow is described by some combination of X and Y offsets from the element, blur radius, and color. + * + * **Syntax**: `none | <shadow-t>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :----: | + * | **2** | **3.5** | **1.1** | **12** | **10** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-shadow + */ + textShadow?: Property.TextShadow | undefined; + /** + * The **`text-size-adjust`** CSS property controls the text inflation algorithm used on some smartphones and tablets. Other browsers will ignore this property. + * + * **Syntax**: `none | auto | <percentage>` + * + * **Initial value**: `auto` for smartphone browsers supporting inflation, `none` in other cases (and then not modifiable). + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **54** | No | No | **79** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-size-adjust + */ + textSizeAdjust?: Property.TextSizeAdjust | undefined; + /** + * The **`text-transform`** CSS property specifies how to capitalize an element's text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. It also can help improve legibility for ruby. + * + * **Syntax**: `none | capitalize | uppercase | lowercase | full-width | full-size-kana` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-transform + */ + textTransform?: Property.TextTransform | undefined; + /** + * The **`text-underline-offset`** CSS property sets the offset distance of an underline text decoration line (applied using `text-decoration`) from its original position. + * + * **Syntax**: `auto | <length> | <percentage> ` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **70** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-underline-offset + */ + textUnderlineOffset?: Property.TextUnderlineOffset<TLength> | undefined; + /** + * The **`text-underline-position`** CSS property specifies the position of the underline which is set using the `text-decoration` property's `underline` value. + * + * **Syntax**: `auto | from-font | [ under || [ left | right ] ]` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :---: | + * | **33** | **74** | **12.1** | **12** | **6** | + * | | | 9 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-underline-position + */ + textUnderlinePosition?: Property.TextUnderlinePosition | undefined; + /** + * The **`text-wrap`** CSS property controls how text inside an element is wrapped. The different values provide: + * + * **Syntax**: `wrap | nowrap | balance | stable | pretty` + * + * **Initial value**: `wrap` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **114** | **121** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-wrap + */ + textWrap?: Property.TextWrap | undefined; + /** + * The **`timeline-scope`** CSS property modifies the scope of a named animation timeline. + * + * **Syntax**: `none | <dashed-ident>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **116** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/timeline-scope + */ + timelineScope?: Property.TimelineScope | undefined; + /** + * The **`top`** CSS property participates in specifying the vertical position of a positioned element. It has no effect on non-positioned elements. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/top + */ + top?: Property.Top<TLength> | undefined; + /** + * The **`touch-action`** CSS property sets how an element's region can be manipulated by a touchscreen user (for example, by zooming features built into the browser). + * + * **Syntax**: `auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :------: | + * | **36** | **52** | **13** | **12** | **11** | + * | | | | | 10 _-x-_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/touch-action + */ + touchAction?: Property.TouchAction | undefined; + /** + * The **`transform`** CSS property lets you rotate, scale, skew, or translate an element. It modifies the coordinate space of the CSS visual formatting model. + * + * **Syntax**: `none | <transform-list>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :----: | :-----: | + * | **36** | **16** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3.1 _-x-_ | | 9 _-x-_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transform + */ + transform?: Property.Transform | undefined; + /** + * The **`transform-box`** CSS property defines the layout box to which the `transform`, individual transform properties `translate`,`scale`, and `rotate`, and `transform-origin` properties relate. + * + * **Syntax**: `content-box | border-box | fill-box | stroke-box | view-box` + * + * **Initial value**: `view-box` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **64** | **55** | **11** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transform-box + */ + transformBox?: Property.TransformBox | undefined; + /** + * The **`transform-origin`** CSS property sets the origin for an element's transformations. + * + * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?` + * + * **Initial value**: `50% 50% 0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :-----: | + * | **36** | **16** | **9** | **12** | **10** | + * | 1 _-x-_ | | 2 _-x-_ | | 9 _-x-_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transform-origin + */ + transformOrigin?: Property.TransformOrigin<TLength> | undefined; + /** + * The **`transform-style`** CSS property sets whether children of an element are positioned in the 3D space or are flattened in the plane of the element. + * + * **Syntax**: `flat | preserve-3d` + * + * **Initial value**: `flat` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :-: | + * | **36** | **16** | **9** | **12** | No | + * | 12 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transform-style + */ + transformStyle?: Property.TransformStyle | undefined; + /** + * The **`transition-behavior`** CSS property specifies whether transitions will be started for properties whose animation behavior is discrete. + * + * **Syntax**: `<transition-behavior-value>#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **117** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transition-behavior + */ + transitionBehavior?: Property.TransitionBehavior | undefined; + /** + * The **`transition-delay`** CSS property specifies the duration to wait before starting a property's transition effect when its value changes. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **26** | **16** | **9** | **12** | **10** | + * | 1 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transition-delay + */ + transitionDelay?: Property.TransitionDelay<TTime> | undefined; + /** + * The **`transition-duration`** CSS property sets the length of time a transition animation should take to complete. By default, the value is `0s`, meaning that no animation will occur. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :----: | :----: | + * | **26** | **16** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transition-duration + */ + transitionDuration?: Property.TransitionDuration<TTime> | undefined; + /** + * The **`transition-property`** CSS property sets the CSS properties to which a transition effect should be applied. + * + * **Syntax**: `none | <single-transition-property>#` + * + * **Initial value**: all + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :----: | :----: | + * | **26** | **16** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transition-property + */ + transitionProperty?: Property.TransitionProperty | undefined; + /** + * The **`transition-timing-function`** CSS property sets how intermediate values are calculated for CSS properties being affected by a transition effect. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :----: | :----: | + * | **26** | **16** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transition-timing-function + */ + transitionTimingFunction?: Property.TransitionTimingFunction | undefined; + /** + * The **`translate`** CSS property allows you to specify translation transforms individually and independently of the `transform` property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the `transform` value. + * + * **Syntax**: `none | <length-percentage> [ <length-percentage> <length>? ]?` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **104** | **72** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/translate + */ + translate?: Property.Translate<TLength> | undefined; + /** + * The **`unicode-bidi`** CSS property, together with the `direction` property, determines how bidirectional text in a document is handled. For example, if a block of content contains both left-to-right and right-to-left text, the user-agent uses a complex Unicode algorithm to decide how to display the text. The `unicode-bidi` property overrides this algorithm and allows the developer to control the text embedding. + * + * **Syntax**: `normal | embed | isolate | bidi-override | isolate-override | plaintext` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :-----: | + * | **2** | **1** | **1.3** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/unicode-bidi + */ + unicodeBidi?: Property.UnicodeBidi | undefined; + /** + * The **`user-select`** CSS property controls whether the user can select text. This doesn't have any effect on content loaded as part of a browser's user interface (its chrome), except in textboxes. + * + * **Syntax**: `auto | text | none | contain | all` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :---------: | :------: | :----------: | + * | **54** | **69** | **3** _-x-_ | **79** | **10** _-x-_ | + * | 1 _-x-_ | 1 _-x-_ | | 12 _-x-_ | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/user-select + */ + userSelect?: Property.UserSelect | undefined; + /** + * The **`vertical-align`** CSS property sets vertical alignment of an inline, inline-block or table-cell box. + * + * **Syntax**: `baseline | sub | super | text-top | text-bottom | middle | top | bottom | <percentage> | <length>` + * + * **Initial value**: `baseline` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/vertical-align + */ + verticalAlign?: Property.VerticalAlign<TLength> | undefined; + /** + * The **`view-timeline-axis`** CSS property is used to specify the scrollbar direction that will be used to provide the timeline for a _named view progress timeline_ animation, which is progressed through based on the change in visibility of an element (known as the _subject_) inside a scrollable element (_scroller_). `view-timeline-axis` is set on the subject. See CSS scroll-driven animations for more details. + * + * **Syntax**: `[ block | inline | x | y ]#` + * + * **Initial value**: `block` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/view-timeline-axis + */ + viewTimelineAxis?: Property.ViewTimelineAxis | undefined; + /** + * The **`view-timeline-inset`** CSS property is used to specify one or two values representing an adjustment to the position of the scrollport (see Scroll container for more details) in which the subject element of a _named view progress timeline_ animation is deemed to be visible. Put another way, this allows you to specify start and/or end inset (or outset) values that offset the position of the timeline. + * + * **Syntax**: `[ [ auto | <length-percentage> ]{1,2} ]#` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/view-timeline-inset + */ + viewTimelineInset?: Property.ViewTimelineInset<TLength> | undefined; + /** + * The **`view-timeline-name`** CSS property is used to define the name of a _named view progress timeline_, which is progressed through based on the change in visibility of an element (known as the _subject_) inside a scrollable element (_scroller_). `view-timeline` is set on the subject. + * + * **Syntax**: `none | <dashed-ident>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/view-timeline-name + */ + viewTimelineName?: Property.ViewTimelineName | undefined; + /** + * The **`view-transition-name`** CSS property provides the selected element with a distinct identifying name (a `<custom-ident>`) and causes it to participate in a separate view transition from the root view transition — or no view transition if the `none` value is specified. + * + * **Syntax**: `none | <custom-ident>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **111** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/view-transition-name + */ + viewTransitionName?: Property.ViewTransitionName | undefined; + /** + * The **`visibility`** CSS property shows or hides an element without changing the layout of a document. The property can also hide rows or columns in a `<table>`. + * + * **Syntax**: `visible | hidden | collapse` + * + * **Initial value**: `visible` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/visibility + */ + visibility?: Property.Visibility | undefined; + /** + * The **`white-space`** CSS property sets how white space inside an element is handled. + * + * **Syntax**: `normal | pre | nowrap | pre-wrap | pre-line | break-spaces | [ <'white-space-collapse'> || <'text-wrap'> || <'white-space-trim'> ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/white-space + */ + whiteSpace?: Property.WhiteSpace | undefined; + /** + * The **`white-space-collapse`** CSS property controls how white space inside an element is collapsed. + * + * **Syntax**: `collapse | discard | preserve | preserve-breaks | preserve-spaces | break-spaces` + * + * **Initial value**: `collapse` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **114** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/white-space-collapse + */ + whiteSpaceCollapse?: Property.WhiteSpaceCollapse | undefined; + /** + * **Syntax**: `none | discard-before || discard-after || discard-inner` + * + * **Initial value**: `none` + */ + whiteSpaceTrim?: Property.WhiteSpaceTrim | undefined; + /** + * The **`widows`** CSS property sets the minimum number of lines in a block container that must be shown at the _top_ of a page, region, or column. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `2` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **25** | No | **1.3** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/widows + */ + widows?: Property.Widows | undefined; + /** + * The **`width`** CSS property sets an element's width. By default, it sets the width of the content area, but if `box-sizing` is set to `border-box`, it sets the width of the border area. + * + * **Syntax**: `auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/width + */ + width?: Property.Width<TLength> | undefined; + /** + * The **`will-change`** CSS property hints to browsers how an element is expected to change. Browsers may set up optimizations before an element is actually changed. These kinds of optimizations can increase the responsiveness of a page by doing potentially expensive work before they are actually required. + * + * **Syntax**: `auto | <animateable-feature>#` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :--: | :-: | + * | **36** | **36** | **9.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/will-change + */ + willChange?: Property.WillChange | undefined; + /** + * The **`word-break`** CSS property sets whether line breaks appear wherever the text would otherwise overflow its content box. + * + * **Syntax**: `normal | break-all | keep-all | break-word` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **15** | **3** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/word-break + */ + wordBreak?: Property.WordBreak | undefined; + /** + * The **`word-spacing`** CSS property sets the length of space between words and between tags. + * + * **Syntax**: `normal | <length>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **6** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/word-spacing + */ + wordSpacing?: Property.WordSpacing<TLength> | undefined; + /** + * The **`overflow-wrap`** CSS property applies to inline elements, setting whether the browser should insert line breaks within an otherwise unbreakable string to prevent text from overflowing its line box. + * + * **Syntax**: `normal | break-word` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :-----: | :-: | + * | **≤80** | **≤72** | **≤13.1** | **≤80** | No | + */ + wordWrap?: Property.WordWrap | undefined; + /** + * The **`writing-mode`** CSS property sets whether lines of text are laid out horizontally or vertically, as well as the direction in which blocks progress. When set for an entire document, it should be set on the root element (`html` element for HTML documents). + * + * **Syntax**: `horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr` + * + * **Initial value**: `horizontal-tb` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :----: | :---: | + * | **48** | **41** | **10.1** | **12** | **9** | + * | 8 _-x-_ | | 5.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/writing-mode + */ + writingMode?: Property.WritingMode | undefined; + /** + * The **`z-index`** CSS property sets the z-order of a positioned element and its descendants or flex items. Overlapping elements with a larger z-index cover those with a smaller one. + * + * **Syntax**: `auto | <integer>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/z-index + */ + zIndex?: Property.ZIndex | undefined; + /** + * The non-standard **`zoom`** CSS property can be used to control the magnification level of an element. `transform: scale()` should be used instead of this property, if possible. However, unlike CSS Transforms, `zoom` affects the layout size of the element. + * + * **Syntax**: `normal | reset | <number> | <percentage>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :-----: | + * | **1** | n/a | **3.1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/zoom + */ + zoom?: Property.Zoom | undefined; +} + +export interface StandardShorthandProperties<TLength = (string & {}) | 0, TTime = string & {}> { + /** + * The **`all`** shorthand CSS property resets all of an element's properties except `unicode-bidi`, `direction`, and CSS Custom Properties. It can set properties to their initial or inherited values, or to the values specified in another cascade layer or stylesheet origin. + * + * **Syntax**: `initial | inherit | unset | revert | revert-layer` + * + * **Initial value**: There is no practical initial value for it. + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :--: | :-: | + * | **37** | **27** | **9.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/all + */ + all?: Property.All | undefined; + /** + * The **`animation`** shorthand CSS property applies an animation between styles. It is a shorthand for `animation-name`, `animation-duration`, `animation-timing-function`, `animation-delay`, `animation-iteration-count`, `animation-direction`, `animation-fill-mode`, and `animation-play-state`. + * + * **Syntax**: `<single-animation>#` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation + */ + animation?: Property.Animation<TTime> | undefined; + /** + * The **`animation-range`** CSS shorthand property is used to set the start and end of an animation's attachment range along its timeline, i.e. where along the timeline an animation will start and end. + * + * **Syntax**: `[ <'animation-range-start'> <'animation-range-end'>? ]#` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-range + */ + animationRange?: Property.AnimationRange<TLength> | undefined; + /** + * The **`background`** shorthand CSS property sets all background style properties at once, such as color, image, origin and size, or repeat method. + * + * **Syntax**: `[ <bg-layer> , ]* <final-bg-layer>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background + */ + background?: Property.Background<TLength> | undefined; + /** + * The **`background-position`** CSS property sets the initial position for each background image. The position is relative to the position layer set by `background-origin`. + * + * **Syntax**: `<bg-position>#` + * + * **Initial value**: `0% 0%` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-position + */ + backgroundPosition?: Property.BackgroundPosition<TLength> | undefined; + /** + * The **`border`** shorthand CSS property sets an element's border. It sets the values of `border-width`, `border-style`, and `border-color`. + * + * **Syntax**: `<line-width> || <line-style> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border + */ + border?: Property.Border<TLength> | undefined; + /** + * The **`border-block`** CSS property is a shorthand property for setting the individual logical block border property values in a single place in the style sheet. + * + * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block + */ + borderBlock?: Property.BorderBlock<TLength> | undefined; + /** + * The **`border-block-end`** CSS property is a shorthand property for setting the individual logical block-end border property values in a single place in the style sheet. + * + * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-end + */ + borderBlockEnd?: Property.BorderBlockEnd<TLength> | undefined; + /** + * The **`border-block-start`** CSS property is a shorthand property for setting the individual logical block-start border property values in a single place in the style sheet. + * + * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-start + */ + borderBlockStart?: Property.BorderBlockStart<TLength> | undefined; + /** + * The **`border-bottom`** shorthand CSS property sets an element's bottom border. It sets the values of `border-bottom-width`, `border-bottom-style` and `border-bottom-color`. + * + * **Syntax**: `<line-width> || <line-style> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-bottom + */ + borderBottom?: Property.BorderBottom<TLength> | undefined; + /** + * The **`border-color`** shorthand CSS property sets the color of an element's border. + * + * **Syntax**: `<color>{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-color + */ + borderColor?: Property.BorderColor | undefined; + /** + * The **`border-image`** CSS property draws an image around a given element. It replaces the element's regular border. + * + * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-------: | :-----: | :----: | :----: | + * | **16** | **15** | **6** | **12** | **11** | + * | 7 _-x-_ | 3.5 _-x-_ | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-image + */ + borderImage?: Property.BorderImage | undefined; + /** + * The **`border-inline`** CSS property is a shorthand property for setting the individual logical inline border property values in a single place in the style sheet. + * + * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline + */ + borderInline?: Property.BorderInline<TLength> | undefined; + /** + * The **`border-inline-end`** CSS property is a shorthand property for setting the individual logical inline-end border property values in a single place in the style sheet. + * + * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-end + */ + borderInlineEnd?: Property.BorderInlineEnd<TLength> | undefined; + /** + * The **`border-inline-start`** CSS property is a shorthand property for setting the individual logical inline-start border property values in a single place in the style sheet. + * + * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-start + */ + borderInlineStart?: Property.BorderInlineStart<TLength> | undefined; + /** + * The **`border-left`** shorthand CSS property sets all the properties of an element's left border. + * + * **Syntax**: `<line-width> || <line-style> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-left + */ + borderLeft?: Property.BorderLeft<TLength> | undefined; + /** + * The **`border-radius`** CSS property rounds the corners of an element's outer border edge. You can set a single radius to make circular corners, or two radii to make elliptical corners. + * + * **Syntax**: `<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **4** | **4** | **5** | **12** | **9** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-radius + */ + borderRadius?: Property.BorderRadius<TLength> | undefined; + /** + * The **`border-right`** shorthand CSS property sets all the properties of an element's right border. + * + * **Syntax**: `<line-width> || <line-style> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-right + */ + borderRight?: Property.BorderRight<TLength> | undefined; + /** + * The **`border-style`** shorthand CSS property sets the line style for all four sides of an element's border. + * + * **Syntax**: `<line-style>{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-style + */ + borderStyle?: Property.BorderStyle | undefined; + /** + * The **`border-top`** shorthand CSS property sets all the properties of an element's top border. + * + * **Syntax**: `<line-width> || <line-style> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-top + */ + borderTop?: Property.BorderTop<TLength> | undefined; + /** + * The **`border-width`** shorthand CSS property sets the width of an element's border. + * + * **Syntax**: `<line-width>{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-width + */ + borderWidth?: Property.BorderWidth<TLength> | undefined; + /** **Syntax**: `<'caret-color'> || <'caret-shape'>` */ + caret?: Property.Caret | undefined; + /** + * The **`column-rule`** shorthand CSS property sets the width, style, and color of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **50** | **52** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-rule + */ + columnRule?: Property.ColumnRule<TLength> | undefined; + /** + * The **`columns`** CSS shorthand property sets the number of columns to use when drawing an element's contents, as well as those columns' widths. + * + * **Syntax**: `<'column-width'> || <'column-count'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :----: | + * | **50** | **52** | **9** | **12** | **10** | + * | | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/columns + */ + columns?: Property.Columns<TLength> | undefined; + /** + * The **`contain-intrinsic-size`** CSS shorthand property sets the size of an element that a browser will use for layout when the element is subject to size containment. + * + * **Syntax**: `[ auto? [ none | <length> ] ]{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **83** | **107** | **17** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-size + */ + containIntrinsicSize?: Property.ContainIntrinsicSize<TLength> | undefined; + /** + * The **container** shorthand CSS property establishes the element as a query container and specifies the name or name for the containment context used in a container query. + * + * **Syntax**: `<'container-name'> [ / <'container-type'> ]?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **105** | **110** | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/container + */ + container?: Property.Container | undefined; + /** + * The **`flex`** CSS shorthand property sets how a flex _item_ will grow or shrink to fit the space available in its flex container. + * + * **Syntax**: `none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :------: | + * | **29** | **20** | **9** | **12** | **11** | + * | 21 _-x-_ | | 7 _-x-_ | | 10 _-x-_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/flex + */ + flex?: Property.Flex<TLength> | undefined; + /** + * The **`flex-flow`** CSS shorthand property specifies the direction of a flex container, as well as its wrapping behavior. + * + * **Syntax**: `<'flex-direction'> || <'flex-wrap'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **28** | **9** | **12** | **11** | + * | 21 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/flex-flow + */ + flexFlow?: Property.FlexFlow | undefined; + /** + * The **`font`** CSS shorthand property sets all the different properties of an element's font. Alternatively, it sets an element's font to a system font. + * + * **Syntax**: `[ [ <'font-style'> || <font-variant-css21> || <'font-weight'> || <'font-stretch'> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'> ] | caption | icon | menu | message-box | small-caption | status-bar` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font + */ + font?: Property.Font | undefined; + /** + * The **`gap`** CSS property sets the gaps (gutters) between rows and columns. It is a shorthand for `row-gap` and `column-gap`. + * + * **Syntax**: `<'row-gap'> <'column-gap'>?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/gap + */ + gap?: Property.Gap<TLength> | undefined; + /** + * The **`grid`** CSS property is a shorthand property that sets all of the explicit and implicit grid properties in a single declaration. + * + * **Syntax**: `<'grid-template'> | <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>? | [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid + */ + grid?: Property.Grid | undefined; + /** + * The **`grid-area`** CSS shorthand property specifies a grid item's size and location within a grid by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the edges of its grid area. + * + * **Syntax**: `<grid-line> [ / <grid-line> ]{0,3}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-area + */ + gridArea?: Property.GridArea | undefined; + /** + * The **`grid-column`** CSS shorthand property specifies a grid item's size and location within a grid column by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start and inline-end edge of its grid area. + * + * **Syntax**: `<grid-line> [ / <grid-line> ]?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-column + */ + gridColumn?: Property.GridColumn | undefined; + /** + * The **`grid-row`** CSS shorthand property specifies a grid item's size and location within a grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start and inline-end edge of its grid area. + * + * **Syntax**: `<grid-line> [ / <grid-line> ]?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-row + */ + gridRow?: Property.GridRow | undefined; + /** + * The **`grid-template`** CSS property is a shorthand property for defining grid columns, grid rows, and grid areas. + * + * **Syntax**: `none | [ <'grid-template-rows'> / <'grid-template-columns'> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-template + */ + gridTemplate?: Property.GridTemplate | undefined; + /** + * The **`inset`** CSS property is a shorthand that corresponds to the `top`, `right`, `bottom`, and/or `left` properties. It has the same multi-value syntax of the `margin` shorthand. + * + * **Syntax**: `<'top'>{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inset + */ + inset?: Property.Inset<TLength> | undefined; + /** + * The **`inset-block`** CSS property defines the logical block start and end offsets of an element, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top` and `bottom`, or `right` and `left` properties depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **63** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inset-block + */ + insetBlock?: Property.InsetBlock<TLength> | undefined; + /** + * The **`inset-inline`** CSS property defines the logical start and end offsets of an element in the inline direction, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top` and `bottom`, or `right` and `left` properties depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **63** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inset-inline + */ + insetInline?: Property.InsetInline<TLength> | undefined; + /** + * **Syntax**: `none | <integer>` + * + * **Initial value**: `none` + */ + lineClamp?: Property.LineClamp | undefined; + /** + * The **`list-style`** CSS shorthand property allows you to set all the list style properties at once. + * + * **Syntax**: `<'list-style-type'> || <'list-style-position'> || <'list-style-image'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/list-style + */ + listStyle?: Property.ListStyle | undefined; + /** + * The **`margin`** CSS shorthand property sets the margin area on all four sides of an element. + * + * **Syntax**: `[ <length> | <percentage> | auto ]{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin + */ + margin?: Property.Margin<TLength> | undefined; + /** + * The **`margin-block`** CSS shorthand property defines the logical block start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'margin-left'>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-block + */ + marginBlock?: Property.MarginBlock<TLength> | undefined; + /** + * The **`margin-inline`** CSS shorthand property is a shorthand property that defines both the logical inline start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'margin-left'>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-inline + */ + marginInline?: Property.MarginInline<TLength> | undefined; + /** + * The **`mask`** CSS shorthand property hides an element (partially or fully) by masking or clipping the image at specific points. + * + * **Syntax**: `<mask-layer>#` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-------: | :---: | :-: | + * | **1** | **53** | **15.4** | 12-79 | No | + * | | | 3.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask + */ + mask?: Property.Mask<TLength> | undefined; + /** + * The **`mask-border`** CSS shorthand property lets you create a mask along the edge of an element's border. + * + * **Syntax**: `<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------------------------------: | :-----: | :----------------------------: | :--: | :-: | + * | **1** _(-webkit-mask-box-image)_ | No | **17.2** | n/a | No | + * | | | 3.1 _(-webkit-mask-box-image)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-border + */ + maskBorder?: Property.MaskBorder | undefined; + /** + * The **`offset`** CSS shorthand property sets all the properties required for animating an element along a defined path. + * + * **Syntax**: `[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----------: | :-----: | :----: | :--: | :-: | + * | **55** | **72** | **16** | n/a | No | + * | 46 _(motion)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset + */ + motion?: Property.Offset<TLength> | undefined; + /** + * The **`offset`** CSS shorthand property sets all the properties required for animating an element along a defined path. + * + * **Syntax**: `[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----------: | :-----: | :----: | :--: | :-: | + * | **55** | **72** | **16** | n/a | No | + * | 46 _(motion)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset + */ + offset?: Property.Offset<TLength> | undefined; + /** + * The **`outline`** CSS shorthand property sets most of the outline properties in a single declaration. + * + * **Syntax**: `[ <'outline-color'> || <'outline-style'> || <'outline-width'> ]` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :---: | + * | **94** | **88** | **16.4** | **94** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/outline + */ + outline?: Property.Outline<TLength> | undefined; + /** + * The **`overflow`** CSS shorthand property sets the desired behavior for an element's overflow — i.e. when an element's content is too big to fit in its block formatting context — in both directions. + * + * **Syntax**: `[ visible | hidden | clip | scroll | auto ]{1,2}` + * + * **Initial value**: `visible` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow + */ + overflow?: Property.Overflow | undefined; + /** + * The **`overscroll-behavior`** CSS property sets what a browser does when reaching the boundary of a scrolling area. It's a shorthand for `overscroll-behavior-x` and `overscroll-behavior-y`. + * + * **Syntax**: `[ contain | none | auto ]{1,2}` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **63** | **59** | **16** | **18** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior + */ + overscrollBehavior?: Property.OverscrollBehavior | undefined; + /** + * The **`padding`** CSS shorthand property sets the padding area on all four sides of an element at once. + * + * **Syntax**: `[ <length> | <percentage> ]{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding + */ + padding?: Property.Padding<TLength> | undefined; + /** + * The **`padding-block`** CSS shorthand property defines the logical block start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-block + */ + paddingBlock?: Property.PaddingBlock<TLength> | undefined; + /** + * The **`padding-inline`** CSS shorthand property defines the logical inline start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-inline + */ + paddingInline?: Property.PaddingInline<TLength> | undefined; + /** + * The **`place-content`** CSS shorthand property allows you to align content along both the block and inline directions at once (i.e. the `align-content` and `justify-content` properties) in a relevant layout system such as Grid or Flexbox. + * + * **Syntax**: `<'align-content'> <'justify-content'>?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **59** | **45** | **9** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/place-content + */ + placeContent?: Property.PlaceContent | undefined; + /** + * The CSS **`place-items`** shorthand property allows you to align items along both the block and inline directions at once (i.e. the `align-items` and `justify-items` properties) in a relevant layout system such as Grid or Flexbox. If the second value is not set, the first value is also used for it. + * + * **Syntax**: `<'align-items'> <'justify-items'>?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **59** | **45** | **11** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/place-items + */ + placeItems?: Property.PlaceItems | undefined; + /** + * The **`place-self`** CSS shorthand property allows you to align an individual item in both the block and inline directions at once (i.e. the `align-self` and `justify-self` properties) in a relevant layout system such as Grid or Flexbox. If the second value is not present, the first value is also used for it. + * + * **Syntax**: `<'align-self'> <'justify-self'>?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **59** | **45** | **11** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/place-self + */ + placeSelf?: Property.PlaceSelf | undefined; + /** + * The **`scroll-margin`** shorthand property sets all of the scroll margins of an element at once, assigning values much like the `margin` property does for margins of an element. + * + * **Syntax**: `<length>{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----------------------: | :--: | :-: | + * | **69** | **90** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin + */ + scrollMargin?: Property.ScrollMargin<TLength> | undefined; + /** + * The `scroll-margin-block` shorthand property sets the scroll margins of an element in the block dimension. + * + * **Syntax**: `<length>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block + */ + scrollMarginBlock?: Property.ScrollMarginBlock<TLength> | undefined; + /** + * The `scroll-margin-inline` shorthand property sets the scroll margins of an element in the inline dimension. + * + * **Syntax**: `<length>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline + */ + scrollMarginInline?: Property.ScrollMarginInline<TLength> | undefined; + /** + * The **`scroll-padding`** shorthand property sets scroll padding on all sides of an element at once, much like the `padding` property does for padding on an element. + * + * **Syntax**: `[ auto | <length-percentage> ]{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding + */ + scrollPadding?: Property.ScrollPadding<TLength> | undefined; + /** + * The `scroll-padding-block` shorthand property sets the scroll padding of an element in the block dimension. + * + * **Syntax**: `[ auto | <length-percentage> ]{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block + */ + scrollPaddingBlock?: Property.ScrollPaddingBlock<TLength> | undefined; + /** + * The `scroll-padding-inline` shorthand property sets the scroll padding of an element in the inline dimension. + * + * **Syntax**: `[ auto | <length-percentage> ]{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline + */ + scrollPaddingInline?: Property.ScrollPaddingInline<TLength> | undefined; + /** + * The **`scroll-margin`** shorthand property sets all of the scroll margins of an element at once, assigning values much like the `margin` property does for margins of an element. + * + * **Syntax**: `<length>{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----------------------: | :--: | :-: | + * | **69** | 68-90 | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin + */ + scrollSnapMargin?: Property.ScrollMargin<TLength> | undefined; + /** + * The **`scroll-timeline`** CSS shorthand property defines a name that can be used to identify the source element of a scroll timeline, along with the scrollbar axis that should provide the timeline. + * + * **Syntax**: `[ <'scroll-timeline-name'> <'scroll-timeline-axis'>? ]#` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-timeline + */ + scrollTimeline?: Property.ScrollTimeline | undefined; + /** + * The **`text-decoration`** shorthand CSS property sets the appearance of decorative lines on text. It is a shorthand for `text-decoration-line`, `text-decoration-color`, `text-decoration-style`, and the newer `text-decoration-thickness` property. + * + * **Syntax**: `<'text-decoration-line'> || <'text-decoration-style'> || <'text-decoration-color'> || <'text-decoration-thickness'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-decoration + */ + textDecoration?: Property.TextDecoration<TLength> | undefined; + /** + * The **`text-emphasis`** CSS property applies emphasis marks to text (except spaces and control characters). It is a shorthand for `text-emphasis-style` and `text-emphasis-color`. + * + * **Syntax**: `<'text-emphasis-style'> || <'text-emphasis-color'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :----: | :--: | :-: | + * | **99** | **46** | **7** | n/a | No | + * | 25 _-x-_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-emphasis + */ + textEmphasis?: Property.TextEmphasis | undefined; + /** + * The **`transition`** CSS property is a shorthand property for `transition-property`, `transition-duration`, `transition-timing-function`, and `transition-delay`. + * + * **Syntax**: `<single-transition>#` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :----: | :----: | + * | **26** | **16** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transition + */ + transition?: Property.Transition<TTime> | undefined; + /** + * The **`view-timeline`** CSS shorthand property is used to define a _named view progress timeline_, which is progressed through based on the change in visibility of an element (known as the _subject_) inside a scrollable element (_scroller_). `view-timeline` is set on the subject. + * + * **Syntax**: `[ <'view-timeline-name'> <'view-timeline-axis'>? ]#` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/view-timeline + */ + viewTimeline?: Property.ViewTimeline | undefined; +} + +export interface StandardProperties<TLength = (string & {}) | 0, TTime = string & {}> + extends StandardLonghandProperties<TLength, TTime>, + StandardShorthandProperties<TLength, TTime> {} + +export interface VendorLonghandProperties<TLength = (string & {}) | 0, TTime = string & {}> { + /** + * The **`animation-delay`** CSS property specifies the amount of time to wait from applying the animation to an element before beginning to perform the animation. The animation can start later, immediately from its beginning, or immediately and partway through the animation. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + MozAnimationDelay?: Property.AnimationDelay<TTime> | undefined; + /** + * The **`animation-direction`** CSS property sets whether an animation should play forward, backward, or alternate back and forth between playing the sequence forward and backward. + * + * **Syntax**: `<single-animation-direction>#` + * + * **Initial value**: `normal` + */ + MozAnimationDirection?: Property.AnimationDirection | undefined; + /** + * The **`animation-duration`** CSS property sets the length of time that an animation takes to complete one cycle. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + MozAnimationDuration?: Property.AnimationDuration<TTime> | undefined; + /** + * The **`animation-fill-mode`** CSS property sets how a CSS animation applies styles to its target before and after its execution. + * + * **Syntax**: `<single-animation-fill-mode>#` + * + * **Initial value**: `none` + */ + MozAnimationFillMode?: Property.AnimationFillMode | undefined; + /** + * The **`animation-iteration-count`** CSS property sets the number of times an animation sequence should be played before stopping. + * + * **Syntax**: `<single-animation-iteration-count>#` + * + * **Initial value**: `1` + */ + MozAnimationIterationCount?: Property.AnimationIterationCount | undefined; + /** + * The **`animation-name`** CSS property specifies the names of one or more `@keyframes` at-rules that describe the animation to apply to an element. Multiple `@keyframe` at-rules are specified as a comma-separated list of names. If the specified name does not match any `@keyframe` at-rule, no properties are animated. + * + * **Syntax**: `[ none | <keyframes-name> ]#` + * + * **Initial value**: `none` + */ + MozAnimationName?: Property.AnimationName | undefined; + /** + * The **`animation-play-state`** CSS property sets whether an animation is running or paused. + * + * **Syntax**: `<single-animation-play-state>#` + * + * **Initial value**: `running` + */ + MozAnimationPlayState?: Property.AnimationPlayState | undefined; + /** + * The **`animation-timing-function`** CSS property sets how an animation progresses through the duration of each cycle. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + */ + MozAnimationTimingFunction?: Property.AnimationTimingFunction | undefined; + /** + * The **`appearance`** CSS property is used to control native appearance of UI controls, that are based on operating system's theme. + * + * **Syntax**: `none | button | button-arrow-down | button-arrow-next | button-arrow-previous | button-arrow-up | button-bevel | button-focus | caret | checkbox | checkbox-container | checkbox-label | checkmenuitem | dualbutton | groupbox | listbox | listitem | menuarrow | menubar | menucheckbox | menuimage | menuitem | menuitemtext | menulist | menulist-button | menulist-text | menulist-textfield | menupopup | menuradio | menuseparator | meterbar | meterchunk | progressbar | progressbar-vertical | progresschunk | progresschunk-vertical | radio | radio-container | radio-label | radiomenuitem | range | range-thumb | resizer | resizerpanel | scale-horizontal | scalethumbend | scalethumb-horizontal | scalethumbstart | scalethumbtick | scalethumb-vertical | scale-vertical | scrollbarbutton-down | scrollbarbutton-left | scrollbarbutton-right | scrollbarbutton-up | scrollbarthumb-horizontal | scrollbarthumb-vertical | scrollbartrack-horizontal | scrollbartrack-vertical | searchfield | separator | sheet | spinner | spinner-downbutton | spinner-textfield | spinner-upbutton | splitter | statusbar | statusbarpanel | tab | tabpanel | tabpanels | tab-scroll-arrow-back | tab-scroll-arrow-forward | textfield | textfield-multiline | toolbar | toolbarbutton | toolbarbutton-dropdown | toolbargripper | toolbox | tooltip | treeheader | treeheadercell | treeheadersortarrow | treeitem | treeline | treetwisty | treetwistyopen | treeview | -moz-mac-unified-toolbar | -moz-win-borderless-glass | -moz-win-browsertabbar-toolbox | -moz-win-communicationstext | -moz-win-communications-toolbox | -moz-win-exclude-glass | -moz-win-glass | -moz-win-mediatext | -moz-win-media-toolbox | -moz-window-button-box | -moz-window-button-box-maximized | -moz-window-button-close | -moz-window-button-maximize | -moz-window-button-minimize | -moz-window-button-restore | -moz-window-frame-bottom | -moz-window-frame-left | -moz-window-frame-right | -moz-window-titlebar | -moz-window-titlebar-maximized` + * + * **Initial value**: `none` (but this value is overridden in the user agent CSS) + */ + MozAppearance?: Property.MozAppearance | undefined; + /** + * The **`-moz-binding`** CSS property is used by Mozilla-based applications to attach an XBL binding to a DOM element. + * + * **Syntax**: `<url> | none` + * + * **Initial value**: `none` + */ + MozBinding?: Property.MozBinding | undefined; + /** + * In Mozilla applications like Firefox, the **`-moz-border-bottom-colors`** CSS property sets a list of colors for the bottom border. + * + * **Syntax**: `<color>+ | none` + * + * **Initial value**: `none` + */ + MozBorderBottomColors?: Property.MozBorderBottomColors | undefined; + /** + * The **`border-inline-end-color`** CSS property defines the color of the logical inline-end border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color`, `border-right-color`, `border-bottom-color`, or `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>` + * + * **Initial value**: `currentcolor` + */ + MozBorderEndColor?: Property.BorderInlineEndColor | undefined; + /** + * The **`border-inline-end-style`** CSS property defines the style of the logical inline end border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style`, `border-right-style`, `border-bottom-style`, or `border-left-style` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + */ + MozBorderEndStyle?: Property.BorderInlineEndStyle | undefined; + /** + * The **`border-inline-end-width`** CSS property defines the width of the logical inline-end border of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-width`, `border-right-width`, `border-bottom-width`, or `border-left-width` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-width'>` + * + * **Initial value**: `medium` + */ + MozBorderEndWidth?: Property.BorderInlineEndWidth<TLength> | undefined; + /** + * In Mozilla applications like Firefox, the **`-moz-border-left-colors`** CSS property sets a list of colors for the left border. + * + * **Syntax**: `<color>+ | none` + * + * **Initial value**: `none` + */ + MozBorderLeftColors?: Property.MozBorderLeftColors | undefined; + /** + * In Mozilla applications like Firefox, the **`-moz-border-right-colors`** CSS property sets a list of colors for the right border. + * + * **Syntax**: `<color>+ | none` + * + * **Initial value**: `none` + */ + MozBorderRightColors?: Property.MozBorderRightColors | undefined; + /** + * The **`border-inline-start-color`** CSS property defines the color of the logical inline start border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color`, `border-right-color`, `border-bottom-color`, or `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>` + * + * **Initial value**: `currentcolor` + */ + MozBorderStartColor?: Property.BorderInlineStartColor | undefined; + /** + * The **`border-inline-start-style`** CSS property defines the style of the logical inline start border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style`, `border-right-style`, `border-bottom-style`, or `border-left-style` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + */ + MozBorderStartStyle?: Property.BorderInlineStartStyle | undefined; + /** + * In Mozilla applications like Firefox, the **`-moz-border-top-colors`** CSS property sets a list of colors for the top border. + * + * **Syntax**: `<color>+ | none` + * + * **Initial value**: `none` + */ + MozBorderTopColors?: Property.MozBorderTopColors | undefined; + /** + * The **`box-sizing`** CSS property sets how the total width and height of an element is calculated. + * + * **Syntax**: `content-box | border-box` + * + * **Initial value**: `content-box` + */ + MozBoxSizing?: Property.BoxSizing | undefined; + /** + * The **`column-count`** CSS property breaks an element's content into the specified number of columns. + * + * **Syntax**: `<integer> | auto` + * + * **Initial value**: `auto` + */ + MozColumnCount?: Property.ColumnCount | undefined; + /** + * The **`column-fill`** CSS property controls how an element's contents are balanced when broken into columns. + * + * **Syntax**: `auto | balance | balance-all` + * + * **Initial value**: `balance` + */ + MozColumnFill?: Property.ColumnFill | undefined; + /** + * The **`column-rule-color`** CSS property sets the color of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + */ + MozColumnRuleColor?: Property.ColumnRuleColor | undefined; + /** + * The **`column-rule-style`** CSS property sets the style of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'border-style'>` + * + * **Initial value**: `none` + */ + MozColumnRuleStyle?: Property.ColumnRuleStyle | undefined; + /** + * The **`column-rule-width`** CSS property sets the width of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'border-width'>` + * + * **Initial value**: `medium` + */ + MozColumnRuleWidth?: Property.ColumnRuleWidth<TLength> | undefined; + /** + * The **`column-width`** CSS property sets the ideal column width in a multi-column layout. The container will have as many columns as can fit without any of them having a width less than the `column-width` value. If the width of the container is narrower than the specified value, the single column's width will be smaller than the declared column width. + * + * **Syntax**: `<length> | auto` + * + * **Initial value**: `auto` + */ + MozColumnWidth?: Property.ColumnWidth<TLength> | undefined; + /** + * The **`-moz-context-properties`** property can be used within privileged contexts in Firefox to share the values of specified properties of the element with a child SVG image. + * + * **Syntax**: `none | [ fill | fill-opacity | stroke | stroke-opacity ]#` + * + * **Initial value**: `none` + */ + MozContextProperties?: Property.MozContextProperties | undefined; + /** + * The **`font-feature-settings`** CSS property controls advanced typographic features in OpenType fonts. + * + * **Syntax**: `normal | <feature-tag-value>#` + * + * **Initial value**: `normal` + */ + MozFontFeatureSettings?: Property.FontFeatureSettings | undefined; + /** + * The **`font-language-override`** CSS property controls the use of language-specific glyphs in a typeface. + * + * **Syntax**: `normal | <string>` + * + * **Initial value**: `normal` + */ + MozFontLanguageOverride?: Property.FontLanguageOverride | undefined; + /** + * The **`hyphens`** CSS property specifies how words should be hyphenated when text wraps across multiple lines. It can prevent hyphenation entirely, hyphenate at manually-specified points within the text, or let the browser automatically insert hyphens where appropriate. + * + * **Syntax**: `none | manual | auto` + * + * **Initial value**: `manual` + */ + MozHyphens?: Property.Hyphens | undefined; + /** + * For certain XUL elements and pseudo-elements that use an image from the `list-style-image` property, this property specifies a region of the image that is used in place of the whole image. This allows elements to use different pieces of the same image to improve performance. + * + * **Syntax**: `<shape> | auto` + * + * **Initial value**: `auto` + */ + MozImageRegion?: Property.MozImageRegion | undefined; + /** + * The **`margin-inline-end`** CSS property defines the logical inline end margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. In other words, it corresponds to the `margin-top`, `margin-right`, `margin-bottom` or `margin-left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + */ + MozMarginEnd?: Property.MarginInlineEnd<TLength> | undefined; + /** + * The **`margin-inline-start`** CSS property defines the logical inline start margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. It corresponds to the `margin-top`, `margin-right`, `margin-bottom`, or `margin-left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + */ + MozMarginStart?: Property.MarginInlineStart<TLength> | undefined; + /** + * The **`-moz-orient`** CSS property specifies the orientation of the element to which it's applied. + * + * **Syntax**: `inline | block | horizontal | vertical` + * + * **Initial value**: `inline` + */ + MozOrient?: Property.MozOrient | undefined; + /** + * The **`font-smooth`** CSS property controls the application of anti-aliasing when fonts are rendered. + * + * **Syntax**: `auto | never | always | <absolute-size> | <length>` + * + * **Initial value**: `auto` + */ + MozOsxFontSmoothing?: Property.FontSmooth<TLength> | undefined; + /** + * In Mozilla applications, the **`-moz-outline-radius-bottomleft`** CSS property can be used to round the bottom-left corner of an element's `outline`. + * + * **Syntax**: `<outline-radius>` + * + * **Initial value**: `0` + */ + MozOutlineRadiusBottomleft?: Property.MozOutlineRadiusBottomleft<TLength> | undefined; + /** + * In Mozilla applications, the **`-moz-outline-radius-bottomright`** CSS property can be used to round the bottom-right corner of an element's `outline`. + * + * **Syntax**: `<outline-radius>` + * + * **Initial value**: `0` + */ + MozOutlineRadiusBottomright?: Property.MozOutlineRadiusBottomright<TLength> | undefined; + /** + * In Mozilla applications, the **`-moz-outline-radius-topleft`** CSS property can be used to round the top-left corner of an element's `outline`. + * + * **Syntax**: `<outline-radius>` + * + * **Initial value**: `0` + */ + MozOutlineRadiusTopleft?: Property.MozOutlineRadiusTopleft<TLength> | undefined; + /** + * In Mozilla applications, the **`-moz-outline-radius-topright`** CSS property can be used to round the top-right corner of an element's `outline`. + * + * **Syntax**: `<outline-radius>` + * + * **Initial value**: `0` + */ + MozOutlineRadiusTopright?: Property.MozOutlineRadiusTopright<TLength> | undefined; + /** + * The **`padding-inline-end`** CSS property defines the logical inline end padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + */ + MozPaddingEnd?: Property.PaddingInlineEnd<TLength> | undefined; + /** + * The **`padding-inline-start`** CSS property defines the logical inline start padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + */ + MozPaddingStart?: Property.PaddingInlineStart<TLength> | undefined; + /** + * **`-moz-stack-sizing`** is an extended CSS property. Normally, a `<xul:stack>` will change its size so that all of its child elements are completely visible. For example, moving a child of the stack far to the right will widen the stack so the child remains visible. + * + * **Syntax**: `ignore | stretch-to-fit` + * + * **Initial value**: `stretch-to-fit` + */ + MozStackSizing?: Property.MozStackSizing | undefined; + /** + * The **`tab-size`** CSS property is used to customize the width of tab characters (U+0009). + * + * **Syntax**: `<integer> | <length>` + * + * **Initial value**: `8` + */ + MozTabSize?: Property.TabSize<TLength> | undefined; + /** + * The **`-moz-text-blink`** non-standard Mozilla CSS extension specifies the blink mode. + * + * **Syntax**: `none | blink` + * + * **Initial value**: `none` + */ + MozTextBlink?: Property.MozTextBlink | undefined; + /** + * The **`text-size-adjust`** CSS property controls the text inflation algorithm used on some smartphones and tablets. Other browsers will ignore this property. + * + * **Syntax**: `none | auto | <percentage>` + * + * **Initial value**: `auto` for smartphone browsers supporting inflation, `none` in other cases (and then not modifiable). + */ + MozTextSizeAdjust?: Property.TextSizeAdjust | undefined; + /** + * The **`-moz-user-focus`** CSS property is used to indicate whether an element can have the focus. + * + * **Syntax**: `ignore | normal | select-after | select-before | select-menu | select-same | select-all | none` + * + * **Initial value**: `none` + */ + MozUserFocus?: Property.MozUserFocus | undefined; + /** + * The **`user-modify`** property has no effect in Firefox. It was originally planned to determine whether or not the content of an element can be edited by a user. + * + * **Syntax**: `read-only | read-write | write-only` + * + * **Initial value**: `read-only` + */ + MozUserModify?: Property.MozUserModify | undefined; + /** + * The **`user-select`** CSS property controls whether the user can select text. This doesn't have any effect on content loaded as part of a browser's user interface (its chrome), except in textboxes. + * + * **Syntax**: `auto | text | none | contain | all` + * + * **Initial value**: `auto` + */ + MozUserSelect?: Property.UserSelect | undefined; + /** + * The **`-moz-window-dragging`** CSS property specifies whether a window is draggable or not. It only works in Chrome code, and only on Mac OS X. + * + * **Syntax**: `drag | no-drag` + * + * **Initial value**: `drag` + */ + MozWindowDragging?: Property.MozWindowDragging | undefined; + /** + * The **`-moz-window-shadow`** CSS property specifies whether a window will have a shadow. It only works on Mac OS X. + * + * **Syntax**: `default | menu | tooltip | sheet | none` + * + * **Initial value**: `default` + */ + MozWindowShadow?: Property.MozWindowShadow | undefined; + /** + * The **`-ms-accelerator`** CSS property is a Microsoft extension that sets or retrieves a string indicating whether the object represents a keyboard shortcut. + * + * **Syntax**: `false | true` + * + * **Initial value**: `false` + */ + msAccelerator?: Property.MsAccelerator | undefined; + /** + * The **`-ms-block-progression`** CSS property is a Microsoft extension that specifies the block progression and layout orientation. + * + * **Syntax**: `tb | rl | bt | lr` + * + * **Initial value**: `tb` + */ + msBlockProgression?: Property.MsBlockProgression | undefined; + /** + * The **`-ms-content-zoom-chaining`** CSS property is a Microsoft extension specifying the zoom behavior that occurs when a user hits the zoom limit during page manipulation. + * + * **Syntax**: `none | chained` + * + * **Initial value**: `none` + */ + msContentZoomChaining?: Property.MsContentZoomChaining | undefined; + /** + * The **`-ms-content-zoom-limit-max`** CSS property is a Microsoft extension that specifies the selected elements' maximum zoom factor. + * + * **Syntax**: `<percentage>` + * + * **Initial value**: `400%` + */ + msContentZoomLimitMax?: Property.MsContentZoomLimitMax | undefined; + /** + * The **`-ms-content-zoom-limit-min`** CSS property is a Microsoft extension that specifies the minimum zoom factor. + * + * **Syntax**: `<percentage>` + * + * **Initial value**: `100%` + */ + msContentZoomLimitMin?: Property.MsContentZoomLimitMin | undefined; + /** + * The **`-ms-content-zoom-snap-points`** CSS property is a Microsoft extension that specifies where zoom snap-points are located. + * + * **Syntax**: `snapInterval( <percentage>, <percentage> ) | snapList( <percentage># )` + * + * **Initial value**: `snapInterval(0%, 100%)` + */ + msContentZoomSnapPoints?: Property.MsContentZoomSnapPoints | undefined; + /** + * The **`-ms-content-zoom-snap-type`** CSS property is a Microsoft extension that specifies how zooming is affected by defined snap-points. + * + * **Syntax**: `none | proximity | mandatory` + * + * **Initial value**: `none` + */ + msContentZoomSnapType?: Property.MsContentZoomSnapType | undefined; + /** + * The **`-ms-content-zooming`** CSS property is a Microsoft extension that specifies whether zooming is enabled. + * + * **Syntax**: `none | zoom` + * + * **Initial value**: zoom for the top level element, none for all other elements + */ + msContentZooming?: Property.MsContentZooming | undefined; + /** + * The `-ms-filter` CSS property is a Microsoft extension that sets or retrieves the filter or collection of filters applied to an object. + * + * **Syntax**: `<string>` + * + * **Initial value**: "" (the empty string) + */ + msFilter?: Property.MsFilter | undefined; + /** + * The **`flex-direction`** CSS property sets how flex items are placed in the flex container defining the main axis and the direction (normal or reversed). + * + * **Syntax**: `row | row-reverse | column | column-reverse` + * + * **Initial value**: `row` + */ + msFlexDirection?: Property.FlexDirection | undefined; + /** + * The **`flex-grow`** CSS property sets the flex grow factor of a flex item's main size. + * + * **Syntax**: `<number>` + * + * **Initial value**: `0` + */ + msFlexPositive?: Property.FlexGrow | undefined; + /** + * The **`-ms-flow-from`** CSS property is a Microsoft extension that gets or sets a value identifying a region container in the document that accepts the content flow from the data source. + * + * **Syntax**: `[ none | <custom-ident> ]#` + * + * **Initial value**: `none` + */ + msFlowFrom?: Property.MsFlowFrom | undefined; + /** + * The **`-ms-flow-into`** CSS property is a Microsoft extension that gets or sets a value identifying an iframe container in the document that serves as the region's data source. + * + * **Syntax**: `[ none | <custom-ident> ]#` + * + * **Initial value**: `none` + */ + msFlowInto?: Property.MsFlowInto | undefined; + /** + * The **`grid-template-columns`** CSS property defines the line names and track sizing functions of the grid columns. + * + * **Syntax**: `none | <track-list> | <auto-track-list>` + * + * **Initial value**: `none` + */ + msGridColumns?: Property.MsGridColumns<TLength> | undefined; + /** + * The **`grid-template-rows`** CSS property defines the line names and track sizing functions of the grid rows. + * + * **Syntax**: `none | <track-list> | <auto-track-list>` + * + * **Initial value**: `none` + */ + msGridRows?: Property.MsGridRows<TLength> | undefined; + /** + * The **`-ms-high-contrast-adjust`** CSS property is a Microsoft extension that gets or sets a value indicating whether to override any CSS properties that would have been set in high contrast mode. + * + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + */ + msHighContrastAdjust?: Property.MsHighContrastAdjust | undefined; + /** + * The **`-ms-hyphenate-limit-chars`** CSS property is a Microsoft extension that specifies one to three values indicating the minimum number of characters in a hyphenated word. If the word does not meet the required minimum number of characters in the word, before the hyphen, or after the hyphen, then the word is not hyphenated. + * + * **Syntax**: `auto | <integer>{1,3}` + * + * **Initial value**: `auto` + */ + msHyphenateLimitChars?: Property.MsHyphenateLimitChars | undefined; + /** + * The **`-ms-hyphenate-limit-lines`** CSS property is a Microsoft extension specifying the maximum number of consecutive lines in an element that may be ended with a hyphenated word. + * + * **Syntax**: `no-limit | <integer>` + * + * **Initial value**: `no-limit` + */ + msHyphenateLimitLines?: Property.MsHyphenateLimitLines | undefined; + /** + * The `**-ms-hyphenate-limit-zone**` CSS property is a Microsoft extension specifying the width of the hyphenation zone. + * + * **Syntax**: `<percentage> | <length>` + * + * **Initial value**: `0` + */ + msHyphenateLimitZone?: Property.MsHyphenateLimitZone<TLength> | undefined; + /** + * The **`hyphens`** CSS property specifies how words should be hyphenated when text wraps across multiple lines. It can prevent hyphenation entirely, hyphenate at manually-specified points within the text, or let the browser automatically insert hyphens where appropriate. + * + * **Syntax**: `none | manual | auto` + * + * **Initial value**: `manual` + */ + msHyphens?: Property.Hyphens | undefined; + /** + * The **`-ms-ime-align`** CSS property is a Microsoft extension aligning the Input Method Editor (IME) candidate window box relative to the element on which the IME composition is active. The extension is implemented in Microsoft Edge and Internet Explorer 11. + * + * **Syntax**: `auto | after` + * + * **Initial value**: `auto` + */ + msImeAlign?: Property.MsImeAlign | undefined; + /** + * The **`line-break`** CSS property sets how to break lines of Chinese, Japanese, or Korean (CJK) text when working with punctuation and symbols. + * + * **Syntax**: `auto | loose | normal | strict | anywhere` + * + * **Initial value**: `auto` + */ + msLineBreak?: Property.LineBreak | undefined; + /** + * The **`order`** CSS property sets the order to lay out an item in a flex or grid container. Items in a container are sorted by ascending `order` value and then by their source code order. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `0` + */ + msOrder?: Property.Order | undefined; + /** + * The **`-ms-overflow-style`** CSS property is a Microsoft extension controlling the behavior of scrollbars when the content of an element overflows. + * + * **Syntax**: `auto | none | scrollbar | -ms-autohiding-scrollbar` + * + * **Initial value**: `auto` + */ + msOverflowStyle?: Property.MsOverflowStyle | undefined; + /** + * The **`overflow-x`** CSS property sets what shows when content overflows a block-level element's left and right edges. This may be nothing, a scroll bar, or the overflow content. + * + * **Syntax**: `visible | hidden | clip | scroll | auto` + * + * **Initial value**: `visible` + */ + msOverflowX?: Property.OverflowX | undefined; + /** + * The **`overflow-y`** CSS property sets what shows when content overflows a block-level element's top and bottom edges. This may be nothing, a scroll bar, or the overflow content. + * + * **Syntax**: `visible | hidden | clip | scroll | auto` + * + * **Initial value**: `visible` + */ + msOverflowY?: Property.OverflowY | undefined; + /** + * The `**-ms-scroll-chaining**` CSS property is a Microsoft extension that specifies the scrolling behavior that occurs when a user hits the scroll limit during a manipulation. + * + * **Syntax**: `chained | none` + * + * **Initial value**: `chained` + */ + msScrollChaining?: Property.MsScrollChaining | undefined; + /** + * The `**-ms-scroll-limit-x-max**` CSS property is a Microsoft extension that specifies the maximum value for the `Element.scrollLeft` property. + * + * **Syntax**: `auto | <length>` + * + * **Initial value**: `auto` + */ + msScrollLimitXMax?: Property.MsScrollLimitXMax<TLength> | undefined; + /** + * The **`-ms-scroll-limit-x-min`** CSS property is a Microsoft extension that specifies the minimum value for the `Element.scrollLeft` property. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + */ + msScrollLimitXMin?: Property.MsScrollLimitXMin<TLength> | undefined; + /** + * The **`-ms-scroll-limit-y-max`** CSS property is a Microsoft extension that specifies the maximum value for the `Element.scrollTop` property. + * + * **Syntax**: `auto | <length>` + * + * **Initial value**: `auto` + */ + msScrollLimitYMax?: Property.MsScrollLimitYMax<TLength> | undefined; + /** + * The **`-ms-scroll-limit-y-min`** CSS property is a Microsoft extension that specifies the minimum value for the `Element.scrollTop` property. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + */ + msScrollLimitYMin?: Property.MsScrollLimitYMin<TLength> | undefined; + /** + * The **`-ms-scroll-rails`** CSS property is a Microsoft extension that specifies whether scrolling locks to the primary axis of motion. + * + * **Syntax**: `none | railed` + * + * **Initial value**: `railed` + */ + msScrollRails?: Property.MsScrollRails | undefined; + /** + * The **`-ms-scroll-snap-points-x`** CSS property is a Microsoft extension that specifies where snap-points will be located along the x-axis. + * + * **Syntax**: `snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )` + * + * **Initial value**: `snapInterval(0px, 100%)` + */ + msScrollSnapPointsX?: Property.MsScrollSnapPointsX | undefined; + /** + * The **`-ms-scroll-snap-points-y`** CSS property is a Microsoft extension that specifies where snap-points will be located along the y-axis. + * + * **Syntax**: `snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )` + * + * **Initial value**: `snapInterval(0px, 100%)` + */ + msScrollSnapPointsY?: Property.MsScrollSnapPointsY | undefined; + /** + * The **`scroll-snap-type`** CSS property sets how strictly snap points are enforced on the scroll container in case there is one. + * + * **Syntax**: `none | proximity | mandatory` + * + * **Initial value**: `none` + */ + msScrollSnapType?: Property.MsScrollSnapType | undefined; + /** + * The **`-ms-scroll-translation`** CSS property is a Microsoft extension that specifies whether vertical-to-horizontal scroll wheel translation occurs on the specified element. + * + * **Syntax**: `none | vertical-to-horizontal` + * + * **Initial value**: `none` + */ + msScrollTranslation?: Property.MsScrollTranslation | undefined; + /** + * The **`-ms-scrollbar-3dlight-color`** CSS property is a Microsoft extension specifying the color of the top and left edges of the scroll box and scroll arrows of a scroll bar. + * + * **Syntax**: `<color>` + * + * **Initial value**: depends on user agent + */ + msScrollbar3dlightColor?: Property.MsScrollbar3dlightColor | undefined; + /** + * The **`-ms-scrollbar-arrow-color`** CSS property is a Microsoft extension that specifies the color of the arrow elements of a scroll arrow. + * + * **Syntax**: `<color>` + * + * **Initial value**: `ButtonText` + */ + msScrollbarArrowColor?: Property.MsScrollbarArrowColor | undefined; + /** + * The `**-ms-scrollbar-base-color**` CSS property is a Microsoft extension that specifies the base color of the main elements of a scroll bar. + * + * **Syntax**: `<color>` + * + * **Initial value**: depends on user agent + */ + msScrollbarBaseColor?: Property.MsScrollbarBaseColor | undefined; + /** + * The **`-ms-scrollbar-darkshadow-color`** CSS property is a Microsoft extension that specifies the color of a scroll bar's gutter. + * + * **Syntax**: `<color>` + * + * **Initial value**: `ThreeDDarkShadow` + */ + msScrollbarDarkshadowColor?: Property.MsScrollbarDarkshadowColor | undefined; + /** + * The `**-ms-scrollbar-face-color**` CSS property is a Microsoft extension that specifies the color of the scroll box and scroll arrows of a scroll bar. + * + * **Syntax**: `<color>` + * + * **Initial value**: `ThreeDFace` + */ + msScrollbarFaceColor?: Property.MsScrollbarFaceColor | undefined; + /** + * The `**-ms-scrollbar-highlight-color**` CSS property is a Microsoft extension that specifies the color of the slider tray, the top and left edges of the scroll box, and the scroll arrows of a scroll bar. + * + * **Syntax**: `<color>` + * + * **Initial value**: `ThreeDHighlight` + */ + msScrollbarHighlightColor?: Property.MsScrollbarHighlightColor | undefined; + /** + * The **`-ms-scrollbar-shadow-color`** CSS property is a Microsoft extension that specifies the color of the bottom and right edges of the scroll box and scroll arrows of a scroll bar. + * + * **Syntax**: `<color>` + * + * **Initial value**: `ThreeDDarkShadow` + */ + msScrollbarShadowColor?: Property.MsScrollbarShadowColor | undefined; + /** + * The **`-ms-scrollbar-track-color`** CSS property is a Microsoft extension that specifies the color of the track element of a scrollbar. + * + * **Syntax**: `<color>` + * + * **Initial value**: `Scrollbar` + */ + msScrollbarTrackColor?: Property.MsScrollbarTrackColor | undefined; + /** + * The **`-ms-text-autospace`** CSS property is a Microsoft extension that specifies the autospacing and narrow space width adjustment of text. + * + * **Syntax**: `none | ideograph-alpha | ideograph-numeric | ideograph-parenthesis | ideograph-space` + * + * **Initial value**: `none` + */ + msTextAutospace?: Property.MsTextAutospace | undefined; + /** + * The **`text-combine-upright`** CSS property sets the combination of characters into the space of a single character. If the combined text is wider than 1em, the user agent must fit the contents within 1em. The resulting composition is treated as a single upright glyph for layout and decoration. This property only has an effect in vertical writing modes. + * + * **Syntax**: `none | all | [ digits <integer>? ]` + * + * **Initial value**: `none` + */ + msTextCombineHorizontal?: Property.TextCombineUpright | undefined; + /** + * The **`text-overflow`** CSS property sets how hidden overflow content is signaled to users. It can be clipped, display an ellipsis ('`…`'), or display a custom string. + * + * **Syntax**: `[ clip | ellipsis | <string> ]{1,2}` + * + * **Initial value**: `clip` + */ + msTextOverflow?: Property.TextOverflow | undefined; + /** + * The **`touch-action`** CSS property sets how an element's region can be manipulated by a touchscreen user (for example, by zooming features built into the browser). + * + * **Syntax**: `auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation` + * + * **Initial value**: `auto` + */ + msTouchAction?: Property.TouchAction | undefined; + /** + * The **`-ms-touch-select`** CSS property is a Microsoft extension that toggles the gripper visual elements that enable touch text selection. + * + * **Syntax**: `grippers | none` + * + * **Initial value**: `grippers` + */ + msTouchSelect?: Property.MsTouchSelect | undefined; + /** + * The **`transform`** CSS property lets you rotate, scale, skew, or translate an element. It modifies the coordinate space of the CSS visual formatting model. + * + * **Syntax**: `none | <transform-list>` + * + * **Initial value**: `none` + */ + msTransform?: Property.Transform | undefined; + /** + * The **`transform-origin`** CSS property sets the origin for an element's transformations. + * + * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?` + * + * **Initial value**: `50% 50% 0` + */ + msTransformOrigin?: Property.TransformOrigin<TLength> | undefined; + /** + * The **`transition-delay`** CSS property specifies the duration to wait before starting a property's transition effect when its value changes. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + msTransitionDelay?: Property.TransitionDelay<TTime> | undefined; + /** + * The **`transition-duration`** CSS property sets the length of time a transition animation should take to complete. By default, the value is `0s`, meaning that no animation will occur. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + msTransitionDuration?: Property.TransitionDuration<TTime> | undefined; + /** + * The **`transition-property`** CSS property sets the CSS properties to which a transition effect should be applied. + * + * **Syntax**: `none | <single-transition-property>#` + * + * **Initial value**: all + */ + msTransitionProperty?: Property.TransitionProperty | undefined; + /** + * The **`transition-timing-function`** CSS property sets how intermediate values are calculated for CSS properties being affected by a transition effect. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + */ + msTransitionTimingFunction?: Property.TransitionTimingFunction | undefined; + /** + * The **`user-select`** CSS property controls whether the user can select text. This doesn't have any effect on content loaded as part of a browser's user interface (its chrome), except in textboxes. + * + * **Syntax**: `none | element | text` + * + * **Initial value**: `text` + */ + msUserSelect?: Property.MsUserSelect | undefined; + /** + * The **`word-break`** CSS property sets whether line breaks appear wherever the text would otherwise overflow its content box. + * + * **Syntax**: `normal | break-all | keep-all | break-word` + * + * **Initial value**: `normal` + */ + msWordBreak?: Property.WordBreak | undefined; + /** + * The **`-ms-wrap-flow`** CSS property is a Microsoft extension that specifies how exclusions impact inline content within block-level elements. + * + * **Syntax**: `auto | both | start | end | maximum | clear` + * + * **Initial value**: `auto` + */ + msWrapFlow?: Property.MsWrapFlow | undefined; + /** + * The **`-ms-wrap-margin`** CSS property is a Microsoft extension that specifies a margin that offsets the inner wrap shape from other shapes. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + */ + msWrapMargin?: Property.MsWrapMargin<TLength> | undefined; + /** + * The **`-ms-wrap-through`** CSS property is a Microsoft extension that specifies how content should wrap around an exclusion element. + * + * **Syntax**: `wrap | none` + * + * **Initial value**: `wrap` + */ + msWrapThrough?: Property.MsWrapThrough | undefined; + /** + * The **`writing-mode`** CSS property sets whether lines of text are laid out horizontally or vertically, as well as the direction in which blocks progress. When set for an entire document, it should be set on the root element (`html` element for HTML documents). + * + * **Syntax**: `horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr` + * + * **Initial value**: `horizontal-tb` + */ + msWritingMode?: Property.WritingMode | undefined; + /** + * The CSS **`align-content`** property sets the distribution of space between and around content items along a flexbox's cross-axis or a grid's block axis. + * + * **Syntax**: `normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>` + * + * **Initial value**: `normal` + */ + WebkitAlignContent?: Property.AlignContent | undefined; + /** + * The CSS **`align-items`** property sets the `align-self` value on all direct children as a group. In Flexbox, it controls the alignment of items on the Cross Axis. In Grid Layout, it controls the alignment of items on the Block Axis within their grid area. + * + * **Syntax**: `normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]` + * + * **Initial value**: `normal` + */ + WebkitAlignItems?: Property.AlignItems | undefined; + /** + * The **`align-self`** CSS property overrides a grid or flex item's `align-items` value. In Grid, it aligns the item inside the grid area. In Flexbox, it aligns the item on the cross axis. + * + * **Syntax**: `auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position>` + * + * **Initial value**: `auto` + */ + WebkitAlignSelf?: Property.AlignSelf | undefined; + /** + * The **`animation-delay`** CSS property specifies the amount of time to wait from applying the animation to an element before beginning to perform the animation. The animation can start later, immediately from its beginning, or immediately and partway through the animation. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + WebkitAnimationDelay?: Property.AnimationDelay<TTime> | undefined; + /** + * The **`animation-direction`** CSS property sets whether an animation should play forward, backward, or alternate back and forth between playing the sequence forward and backward. + * + * **Syntax**: `<single-animation-direction>#` + * + * **Initial value**: `normal` + */ + WebkitAnimationDirection?: Property.AnimationDirection | undefined; + /** + * The **`animation-duration`** CSS property sets the length of time that an animation takes to complete one cycle. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + WebkitAnimationDuration?: Property.AnimationDuration<TTime> | undefined; + /** + * The **`animation-fill-mode`** CSS property sets how a CSS animation applies styles to its target before and after its execution. + * + * **Syntax**: `<single-animation-fill-mode>#` + * + * **Initial value**: `none` + */ + WebkitAnimationFillMode?: Property.AnimationFillMode | undefined; + /** + * The **`animation-iteration-count`** CSS property sets the number of times an animation sequence should be played before stopping. + * + * **Syntax**: `<single-animation-iteration-count>#` + * + * **Initial value**: `1` + */ + WebkitAnimationIterationCount?: Property.AnimationIterationCount | undefined; + /** + * The **`animation-name`** CSS property specifies the names of one or more `@keyframes` at-rules that describe the animation to apply to an element. Multiple `@keyframe` at-rules are specified as a comma-separated list of names. If the specified name does not match any `@keyframe` at-rule, no properties are animated. + * + * **Syntax**: `[ none | <keyframes-name> ]#` + * + * **Initial value**: `none` + */ + WebkitAnimationName?: Property.AnimationName | undefined; + /** + * The **`animation-play-state`** CSS property sets whether an animation is running or paused. + * + * **Syntax**: `<single-animation-play-state>#` + * + * **Initial value**: `running` + */ + WebkitAnimationPlayState?: Property.AnimationPlayState | undefined; + /** + * The **`animation-timing-function`** CSS property sets how an animation progresses through the duration of each cycle. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + */ + WebkitAnimationTimingFunction?: Property.AnimationTimingFunction | undefined; + /** + * The **`appearance`** CSS property is used to control native appearance of UI controls, that are based on operating system's theme. + * + * **Syntax**: `none | button | button-bevel | caret | checkbox | default-button | inner-spin-button | listbox | listitem | media-controls-background | media-controls-fullscreen-background | media-current-time-display | media-enter-fullscreen-button | media-exit-fullscreen-button | media-fullscreen-button | media-mute-button | media-overlay-play-button | media-play-button | media-seek-back-button | media-seek-forward-button | media-slider | media-sliderthumb | media-time-remaining-display | media-toggle-closed-captions-button | media-volume-slider | media-volume-slider-container | media-volume-sliderthumb | menulist | menulist-button | menulist-text | menulist-textfield | meter | progress-bar | progress-bar-value | push-button | radio | searchfield | searchfield-cancel-button | searchfield-decoration | searchfield-results-button | searchfield-results-decoration | slider-horizontal | slider-vertical | sliderthumb-horizontal | sliderthumb-vertical | square-button | textarea | textfield | -apple-pay-button` + * + * **Initial value**: `none` (but this value is overridden in the user agent CSS) + */ + WebkitAppearance?: Property.WebkitAppearance | undefined; + /** + * The **`backdrop-filter`** CSS property lets you apply graphical effects such as blurring or color shifting to the area behind an element. Because it applies to everything _behind_ the element, to see the effect you must make the element or its background at least partially transparent. + * + * **Syntax**: `none | <filter-function-list>` + * + * **Initial value**: `none` + */ + WebkitBackdropFilter?: Property.BackdropFilter | undefined; + /** + * The **`backface-visibility`** CSS property sets whether the back face of an element is visible when turned towards the user. + * + * **Syntax**: `visible | hidden` + * + * **Initial value**: `visible` + */ + WebkitBackfaceVisibility?: Property.BackfaceVisibility | undefined; + /** + * The **`background-clip`** CSS property sets whether an element's background extends underneath its border box, padding box, or content box. + * + * **Syntax**: `<box>#` + * + * **Initial value**: `border-box` + */ + WebkitBackgroundClip?: Property.BackgroundClip | undefined; + /** + * The **`background-origin`** CSS property sets the background's origin: from the border start, inside the border, or inside the padding. + * + * **Syntax**: `<box>#` + * + * **Initial value**: `padding-box` + */ + WebkitBackgroundOrigin?: Property.BackgroundOrigin | undefined; + /** + * The **`background-size`** CSS property sets the size of the element's background image. The image can be left to its natural size, stretched, or constrained to fit the available space. + * + * **Syntax**: `<bg-size>#` + * + * **Initial value**: `auto auto` + */ + WebkitBackgroundSize?: Property.BackgroundSize<TLength> | undefined; + /** + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + */ + WebkitBorderBeforeColor?: Property.WebkitBorderBeforeColor | undefined; + /** + * **Syntax**: `<'border-style'>` + * + * **Initial value**: `none` + */ + WebkitBorderBeforeStyle?: Property.WebkitBorderBeforeStyle | undefined; + /** + * **Syntax**: `<'border-width'>` + * + * **Initial value**: `medium` + */ + WebkitBorderBeforeWidth?: Property.WebkitBorderBeforeWidth<TLength> | undefined; + /** + * The **`border-bottom-left-radius`** CSS property rounds the bottom-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + */ + WebkitBorderBottomLeftRadius?: Property.BorderBottomLeftRadius<TLength> | undefined; + /** + * The **`border-bottom-right-radius`** CSS property rounds the bottom-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + */ + WebkitBorderBottomRightRadius?: Property.BorderBottomRightRadius<TLength> | undefined; + /** + * The **`border-image-slice`** CSS property divides the image specified by `border-image-source` into regions. These regions form the components of an element's border image. + * + * **Syntax**: `<number-percentage>{1,4} && fill?` + * + * **Initial value**: `100%` + */ + WebkitBorderImageSlice?: Property.BorderImageSlice | undefined; + /** + * The **`border-top-left-radius`** CSS property rounds the top-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + */ + WebkitBorderTopLeftRadius?: Property.BorderTopLeftRadius<TLength> | undefined; + /** + * The **`border-top-right-radius`** CSS property rounds the top-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + */ + WebkitBorderTopRightRadius?: Property.BorderTopRightRadius<TLength> | undefined; + /** + * The **`box-decoration-break`** CSS property specifies how an element's fragments should be rendered when broken across multiple lines, columns, or pages. + * + * **Syntax**: `slice | clone` + * + * **Initial value**: `slice` + */ + WebkitBoxDecorationBreak?: Property.BoxDecorationBreak | undefined; + /** + * The **`-webkit-box-reflect`** CSS property lets you reflect the content of an element in one specific direction. + * + * **Syntax**: `[ above | below | right | left ]? <length>? <image>?` + * + * **Initial value**: `none` + */ + WebkitBoxReflect?: Property.WebkitBoxReflect<TLength> | undefined; + /** + * The **`box-shadow`** CSS property adds shadow effects around an element's frame. You can set multiple effects separated by commas. A box shadow is described by X and Y offsets relative to the element, blur and spread radius, and color. + * + * **Syntax**: `none | <shadow>#` + * + * **Initial value**: `none` + */ + WebkitBoxShadow?: Property.BoxShadow | undefined; + /** + * The **`box-sizing`** CSS property sets how the total width and height of an element is calculated. + * + * **Syntax**: `content-box | border-box` + * + * **Initial value**: `content-box` + */ + WebkitBoxSizing?: Property.BoxSizing | undefined; + /** + * The **`clip-path`** CSS property creates a clipping region that sets what part of an element should be shown. Parts that are inside the region are shown, while those outside are hidden. + * + * **Syntax**: `<clip-source> | [ <basic-shape> || <geometry-box> ] | none` + * + * **Initial value**: `none` + */ + WebkitClipPath?: Property.ClipPath | undefined; + /** + * The **`column-count`** CSS property breaks an element's content into the specified number of columns. + * + * **Syntax**: `<integer> | auto` + * + * **Initial value**: `auto` + */ + WebkitColumnCount?: Property.ColumnCount | undefined; + /** + * The **`column-fill`** CSS property controls how an element's contents are balanced when broken into columns. + * + * **Syntax**: `auto | balance | balance-all` + * + * **Initial value**: `balance` + */ + WebkitColumnFill?: Property.ColumnFill | undefined; + /** + * The **`column-rule-color`** CSS property sets the color of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + */ + WebkitColumnRuleColor?: Property.ColumnRuleColor | undefined; + /** + * The **`column-rule-style`** CSS property sets the style of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'border-style'>` + * + * **Initial value**: `none` + */ + WebkitColumnRuleStyle?: Property.ColumnRuleStyle | undefined; + /** + * The **`column-rule-width`** CSS property sets the width of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'border-width'>` + * + * **Initial value**: `medium` + */ + WebkitColumnRuleWidth?: Property.ColumnRuleWidth<TLength> | undefined; + /** + * The **`column-span`** CSS property makes it possible for an element to span across all columns when its value is set to `all`. + * + * **Syntax**: `none | all` + * + * **Initial value**: `none` + */ + WebkitColumnSpan?: Property.ColumnSpan | undefined; + /** + * The **`column-width`** CSS property sets the ideal column width in a multi-column layout. The container will have as many columns as can fit without any of them having a width less than the `column-width` value. If the width of the container is narrower than the specified value, the single column's width will be smaller than the declared column width. + * + * **Syntax**: `<length> | auto` + * + * **Initial value**: `auto` + */ + WebkitColumnWidth?: Property.ColumnWidth<TLength> | undefined; + /** + * The **`filter`** CSS property applies graphical effects like blur or color shift to an element. Filters are commonly used to adjust the rendering of images, backgrounds, and borders. + * + * **Syntax**: `none | <filter-function-list>` + * + * **Initial value**: `none` + */ + WebkitFilter?: Property.Filter | undefined; + /** + * The **`flex-basis`** CSS property sets the initial main size of a flex item. It sets the size of the content box unless otherwise set with `box-sizing`. + * + * **Syntax**: `content | <'width'>` + * + * **Initial value**: `auto` + */ + WebkitFlexBasis?: Property.FlexBasis<TLength> | undefined; + /** + * The **`flex-direction`** CSS property sets how flex items are placed in the flex container defining the main axis and the direction (normal or reversed). + * + * **Syntax**: `row | row-reverse | column | column-reverse` + * + * **Initial value**: `row` + */ + WebkitFlexDirection?: Property.FlexDirection | undefined; + /** + * The **`flex-grow`** CSS property sets the flex grow factor of a flex item's main size. + * + * **Syntax**: `<number>` + * + * **Initial value**: `0` + */ + WebkitFlexGrow?: Property.FlexGrow | undefined; + /** + * The **`flex-shrink`** CSS property sets the flex shrink factor of a flex item. If the size of all flex items is larger than the flex container, items shrink to fit according to `flex-shrink`. + * + * **Syntax**: `<number>` + * + * **Initial value**: `1` + */ + WebkitFlexShrink?: Property.FlexShrink | undefined; + /** + * The **`flex-wrap`** CSS property sets whether flex items are forced onto one line or can wrap onto multiple lines. If wrapping is allowed, it sets the direction that lines are stacked. + * + * **Syntax**: `nowrap | wrap | wrap-reverse` + * + * **Initial value**: `nowrap` + */ + WebkitFlexWrap?: Property.FlexWrap | undefined; + /** + * The **`font-feature-settings`** CSS property controls advanced typographic features in OpenType fonts. + * + * **Syntax**: `normal | <feature-tag-value>#` + * + * **Initial value**: `normal` + */ + WebkitFontFeatureSettings?: Property.FontFeatureSettings | undefined; + /** + * The **`font-kerning`** CSS property sets the use of the kerning information stored in a font. + * + * **Syntax**: `auto | normal | none` + * + * **Initial value**: `auto` + */ + WebkitFontKerning?: Property.FontKerning | undefined; + /** + * The **`font-smooth`** CSS property controls the application of anti-aliasing when fonts are rendered. + * + * **Syntax**: `auto | never | always | <absolute-size> | <length>` + * + * **Initial value**: `auto` + */ + WebkitFontSmoothing?: Property.FontSmooth<TLength> | undefined; + /** + * The **`font-variant-ligatures`** CSS property controls which ligatures and contextual forms are used in textual content of the elements it applies to. This leads to more harmonized forms in the resulting text. + * + * **Syntax**: `normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]` + * + * **Initial value**: `normal` + */ + WebkitFontVariantLigatures?: Property.FontVariantLigatures | undefined; + /** + * The **`hyphenate-character`** CSS property sets the character (or string) used at the end of a line before a hyphenation break. + * + * **Syntax**: `auto | <string>` + * + * **Initial value**: `auto` + */ + WebkitHyphenateCharacter?: Property.HyphenateCharacter | undefined; + /** + * The **`hyphens`** CSS property specifies how words should be hyphenated when text wraps across multiple lines. It can prevent hyphenation entirely, hyphenate at manually-specified points within the text, or let the browser automatically insert hyphens where appropriate. + * + * **Syntax**: `none | manual | auto` + * + * **Initial value**: `manual` + */ + WebkitHyphens?: Property.Hyphens | undefined; + /** + * The `initial-letter` CSS property sets styling for dropped, raised, and sunken initial letters. + * + * **Syntax**: `normal | [ <number> <integer>? ]` + * + * **Initial value**: `normal` + */ + WebkitInitialLetter?: Property.InitialLetter | undefined; + /** + * The CSS **`justify-content`** property defines how the browser distributes space between and around content items along the main-axis of a flex container, and the inline axis of a grid container. + * + * **Syntax**: `normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]` + * + * **Initial value**: `normal` + */ + WebkitJustifyContent?: Property.JustifyContent | undefined; + /** + * The **`line-break`** CSS property sets how to break lines of Chinese, Japanese, or Korean (CJK) text when working with punctuation and symbols. + * + * **Syntax**: `auto | loose | normal | strict | anywhere` + * + * **Initial value**: `auto` + */ + WebkitLineBreak?: Property.LineBreak | undefined; + /** + * The **`-webkit-line-clamp`** CSS property allows limiting of the contents of a block to the specified number of lines. + * + * **Syntax**: `none | <integer>` + * + * **Initial value**: `none` + */ + WebkitLineClamp?: Property.WebkitLineClamp | undefined; + /** + * The **`margin-inline-end`** CSS property defines the logical inline end margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. In other words, it corresponds to the `margin-top`, `margin-right`, `margin-bottom` or `margin-left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + */ + WebkitMarginEnd?: Property.MarginInlineEnd<TLength> | undefined; + /** + * The **`margin-inline-start`** CSS property defines the logical inline start margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. It corresponds to the `margin-top`, `margin-right`, `margin-bottom`, or `margin-left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + */ + WebkitMarginStart?: Property.MarginInlineStart<TLength> | undefined; + /** + * If a `mask-image` is specified, `-webkit-mask-attachment` determines whether the mask image's position is fixed within the viewport, or scrolls along with its containing block. + * + * **Syntax**: `<attachment>#` + * + * **Initial value**: `scroll` + */ + WebkitMaskAttachment?: Property.WebkitMaskAttachment | undefined; + /** + * The **`mask-border-outset`** CSS property specifies the distance by which an element's mask border is set out from its border box. + * + * **Syntax**: `[ <length> | <number> ]{1,4}` + * + * **Initial value**: `0` + */ + WebkitMaskBoxImageOutset?: Property.MaskBorderOutset<TLength> | undefined; + /** + * The **`mask-border-repeat`** CSS property sets how the edge regions of a source image are adjusted to fit the dimensions of an element's mask border. + * + * **Syntax**: `[ stretch | repeat | round | space ]{1,2}` + * + * **Initial value**: `stretch` + */ + WebkitMaskBoxImageRepeat?: Property.MaskBorderRepeat | undefined; + /** + * The **`mask-border-slice`** CSS property divides the image set by `mask-border-source` into regions. These regions are used to form the components of an element's mask border. + * + * **Syntax**: `<number-percentage>{1,4} fill?` + * + * **Initial value**: `0` + */ + WebkitMaskBoxImageSlice?: Property.MaskBorderSlice | undefined; + /** + * The **`mask-border-source`** CSS property sets the source image used to create an element's mask border. + * + * **Syntax**: `none | <image>` + * + * **Initial value**: `none` + */ + WebkitMaskBoxImageSource?: Property.MaskBorderSource | undefined; + /** + * The **`mask-border-width`** CSS property sets the width of an element's mask border. + * + * **Syntax**: `[ <length-percentage> | <number> | auto ]{1,4}` + * + * **Initial value**: `auto` + */ + WebkitMaskBoxImageWidth?: Property.MaskBorderWidth<TLength> | undefined; + /** + * The **`mask-clip`** CSS property determines the area which is affected by a mask. The painted content of an element must be restricted to this area. + * + * **Syntax**: `[ <box> | border | padding | content | text ]#` + * + * **Initial value**: `border` + */ + WebkitMaskClip?: Property.WebkitMaskClip | undefined; + /** + * The **`-webkit-mask-composite`** property specifies the manner in which multiple mask images applied to the same element are composited with one another. Mask images are composited in the opposite order that they are declared with the `-webkit-mask-image` property. + * + * **Syntax**: `<composite-style>#` + * + * **Initial value**: `source-over` + */ + WebkitMaskComposite?: Property.WebkitMaskComposite | undefined; + /** + * The **`mask-image`** CSS property sets the image that is used as mask layer for an element. By default this means the alpha channel of the mask image will be multiplied with the alpha channel of the element. This can be controlled with the `mask-mode` property. + * + * **Syntax**: `<mask-reference>#` + * + * **Initial value**: `none` + */ + WebkitMaskImage?: Property.WebkitMaskImage | undefined; + /** + * The **`mask-origin`** CSS property sets the origin of a mask. + * + * **Syntax**: `[ <box> | border | padding | content ]#` + * + * **Initial value**: `padding` + */ + WebkitMaskOrigin?: Property.WebkitMaskOrigin | undefined; + /** + * The **`mask-position`** CSS property sets the initial position, relative to the mask position layer set by `mask-origin`, for each defined mask image. + * + * **Syntax**: `<position>#` + * + * **Initial value**: `0% 0%` + */ + WebkitMaskPosition?: Property.WebkitMaskPosition<TLength> | undefined; + /** + * The `-webkit-mask-position-x` CSS property sets the initial horizontal position of a mask image. + * + * **Syntax**: `[ <length-percentage> | left | center | right ]#` + * + * **Initial value**: `0%` + */ + WebkitMaskPositionX?: Property.WebkitMaskPositionX<TLength> | undefined; + /** + * The `-webkit-mask-position-y` CSS property sets the initial vertical position of a mask image. + * + * **Syntax**: `[ <length-percentage> | top | center | bottom ]#` + * + * **Initial value**: `0%` + */ + WebkitMaskPositionY?: Property.WebkitMaskPositionY<TLength> | undefined; + /** + * The **`mask-repeat`** CSS property sets how mask images are repeated. A mask image can be repeated along the horizontal axis, the vertical axis, both axes, or not repeated at all. + * + * **Syntax**: `<repeat-style>#` + * + * **Initial value**: `repeat` + */ + WebkitMaskRepeat?: Property.WebkitMaskRepeat | undefined; + /** + * The `-webkit-mask-repeat-x` property specifies whether and how a mask image is repeated (tiled) horizontally. + * + * **Syntax**: `repeat | no-repeat | space | round` + * + * **Initial value**: `repeat` + */ + WebkitMaskRepeatX?: Property.WebkitMaskRepeatX | undefined; + /** + * The `-webkit-mask-repeat-y` property sets whether and how a mask image is repeated (tiled) vertically. + * + * **Syntax**: `repeat | no-repeat | space | round` + * + * **Initial value**: `repeat` + */ + WebkitMaskRepeatY?: Property.WebkitMaskRepeatY | undefined; + /** + * The **`mask-size`** CSS property specifies the sizes of the mask images. The size of the image can be fully or partially constrained in order to preserve its intrinsic ratio. + * + * **Syntax**: `<bg-size>#` + * + * **Initial value**: `auto auto` + */ + WebkitMaskSize?: Property.WebkitMaskSize<TLength> | undefined; + /** + * The **`max-inline-size`** CSS property defines the horizontal or vertical maximum size of an element's block, depending on its writing mode. It corresponds to either the `max-width` or the `max-height` property, depending on the value of `writing-mode`. + * + * **Syntax**: `<'max-width'>` + * + * **Initial value**: `none` + */ + WebkitMaxInlineSize?: Property.MaxInlineSize<TLength> | undefined; + /** + * The **`order`** CSS property sets the order to lay out an item in a flex or grid container. Items in a container are sorted by ascending `order` value and then by their source code order. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `0` + */ + WebkitOrder?: Property.Order | undefined; + /** + * The `-webkit-overflow-scrolling` CSS property controls whether or not touch devices use momentum-based scrolling for a given element. + * + * **Syntax**: `auto | touch` + * + * **Initial value**: `auto` + */ + WebkitOverflowScrolling?: Property.WebkitOverflowScrolling | undefined; + /** + * The **`padding-inline-end`** CSS property defines the logical inline end padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + */ + WebkitPaddingEnd?: Property.PaddingInlineEnd<TLength> | undefined; + /** + * The **`padding-inline-start`** CSS property defines the logical inline start padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + */ + WebkitPaddingStart?: Property.PaddingInlineStart<TLength> | undefined; + /** + * The **`perspective`** CSS property determines the distance between the z=0 plane and the user in order to give a 3D-positioned element some perspective. + * + * **Syntax**: `none | <length>` + * + * **Initial value**: `none` + */ + WebkitPerspective?: Property.Perspective<TLength> | undefined; + /** + * The **`perspective-origin`** CSS property determines the position at which the viewer is looking. It is used as the _vanishing point_ by the `perspective` property. + * + * **Syntax**: `<position>` + * + * **Initial value**: `50% 50%` + */ + WebkitPerspectiveOrigin?: Property.PerspectiveOrigin<TLength> | undefined; + /** + * The **`print-color-adjust`** CSS property sets what, if anything, the user agent may do to optimize the appearance of the element on the output device. By default, the browser is allowed to make any adjustments to the element's appearance it determines to be necessary and prudent given the type and capabilities of the output device. + * + * **Syntax**: `economy | exact` + * + * **Initial value**: `economy` + */ + WebkitPrintColorAdjust?: Property.PrintColorAdjust | undefined; + /** + * The **`ruby-position`** CSS property defines the position of a ruby element relatives to its base element. It can be positioned over the element (`over`), under it (`under`), or between the characters on their right side (`inter-character`). + * + * **Syntax**: `[ alternate || [ over | under ] ] | inter-character` + * + * **Initial value**: `alternate` + */ + WebkitRubyPosition?: Property.RubyPosition | undefined; + /** + * The **`scroll-snap-type`** CSS property sets how strictly snap points are enforced on the scroll container in case there is one. + * + * **Syntax**: `none | [ x | y | block | inline | both ] [ mandatory | proximity ]?` + * + * **Initial value**: `none` + */ + WebkitScrollSnapType?: Property.ScrollSnapType | undefined; + /** + * The **`shape-margin`** CSS property sets a margin for a CSS shape created using `shape-outside`. + * + * **Syntax**: `<length-percentage>` + * + * **Initial value**: `0` + */ + WebkitShapeMargin?: Property.ShapeMargin<TLength> | undefined; + /** + * **`-webkit-tap-highlight-color`** is a non-standard CSS property that sets the color of the highlight that appears over a link while it's being tapped. The highlighting indicates to the user that their tap is being successfully recognized, and indicates which element they're tapping on. + * + * **Syntax**: `<color>` + * + * **Initial value**: `black` + */ + WebkitTapHighlightColor?: Property.WebkitTapHighlightColor | undefined; + /** + * The **`text-combine-upright`** CSS property sets the combination of characters into the space of a single character. If the combined text is wider than 1em, the user agent must fit the contents within 1em. The resulting composition is treated as a single upright glyph for layout and decoration. This property only has an effect in vertical writing modes. + * + * **Syntax**: `none | all | [ digits <integer>? ]` + * + * **Initial value**: `none` + */ + WebkitTextCombine?: Property.TextCombineUpright | undefined; + /** + * The **`text-decoration-color`** CSS property sets the color of decorations added to text by `text-decoration-line`. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + */ + WebkitTextDecorationColor?: Property.TextDecorationColor | undefined; + /** + * The **`text-decoration-line`** CSS property sets the kind of decoration that is used on text in an element, such as an underline or overline. + * + * **Syntax**: `none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error` + * + * **Initial value**: `none` + */ + WebkitTextDecorationLine?: Property.TextDecorationLine | undefined; + /** + * The **`text-decoration-skip`** CSS property sets what parts of an element's content any text decoration affecting the element must skip over. It controls all text decoration lines drawn by the element and also any text decoration lines drawn by its ancestors. + * + * **Syntax**: `none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]` + * + * **Initial value**: `objects` + */ + WebkitTextDecorationSkip?: Property.TextDecorationSkip | undefined; + /** + * The **`text-decoration-style`** CSS property sets the style of the lines specified by `text-decoration-line`. The style applies to all lines that are set with `text-decoration-line`. + * + * **Syntax**: `solid | double | dotted | dashed | wavy` + * + * **Initial value**: `solid` + */ + WebkitTextDecorationStyle?: Property.TextDecorationStyle | undefined; + /** + * The **`text-emphasis-color`** CSS property sets the color of emphasis marks. This value can also be set using the `text-emphasis` shorthand. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + */ + WebkitTextEmphasisColor?: Property.TextEmphasisColor | undefined; + /** + * The **`text-emphasis-position`** CSS property sets where emphasis marks are drawn. Like ruby text, if there isn't enough room for emphasis marks, the line height is increased. + * + * **Syntax**: `[ over | under ] && [ right | left ]` + * + * **Initial value**: `over right` + */ + WebkitTextEmphasisPosition?: Property.TextEmphasisPosition | undefined; + /** + * The **`text-emphasis-style`** CSS property sets the appearance of emphasis marks. It can also be set, and reset, using the `text-emphasis` shorthand. + * + * **Syntax**: `none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>` + * + * **Initial value**: `none` + */ + WebkitTextEmphasisStyle?: Property.TextEmphasisStyle | undefined; + /** + * The **`-webkit-text-fill-color`** CSS property specifies the fill color of characters of text. If this property is not set, the value of the `color` property is used. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + */ + WebkitTextFillColor?: Property.WebkitTextFillColor | undefined; + /** + * The **`text-orientation`** CSS property sets the orientation of the text characters in a line. It only affects text in vertical mode (when `writing-mode` is not `horizontal-tb`). It is useful for controlling the display of languages that use vertical script, and also for making vertical table headers. + * + * **Syntax**: `mixed | upright | sideways` + * + * **Initial value**: `mixed` + */ + WebkitTextOrientation?: Property.TextOrientation | undefined; + /** + * The **`text-size-adjust`** CSS property controls the text inflation algorithm used on some smartphones and tablets. Other browsers will ignore this property. + * + * **Syntax**: `none | auto | <percentage>` + * + * **Initial value**: `auto` for smartphone browsers supporting inflation, `none` in other cases (and then not modifiable). + */ + WebkitTextSizeAdjust?: Property.TextSizeAdjust | undefined; + /** + * The **`-webkit-text-stroke-color`** CSS property specifies the stroke color of characters of text. If this property is not set, the value of the `color` property is used. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + */ + WebkitTextStrokeColor?: Property.WebkitTextStrokeColor | undefined; + /** + * The **`-webkit-text-stroke-width`** CSS property specifies the width of the stroke for text. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + */ + WebkitTextStrokeWidth?: Property.WebkitTextStrokeWidth<TLength> | undefined; + /** + * The **`text-underline-position`** CSS property specifies the position of the underline which is set using the `text-decoration` property's `underline` value. + * + * **Syntax**: `auto | from-font | [ under || [ left | right ] ]` + * + * **Initial value**: `auto` + */ + WebkitTextUnderlinePosition?: Property.TextUnderlinePosition | undefined; + /** + * The `-webkit-touch-callout` CSS property controls the display of the default callout shown when you touch and hold a touch target. + * + * **Syntax**: `default | none` + * + * **Initial value**: `default` + */ + WebkitTouchCallout?: Property.WebkitTouchCallout | undefined; + /** + * The **`transform`** CSS property lets you rotate, scale, skew, or translate an element. It modifies the coordinate space of the CSS visual formatting model. + * + * **Syntax**: `none | <transform-list>` + * + * **Initial value**: `none` + */ + WebkitTransform?: Property.Transform | undefined; + /** + * The **`transform-origin`** CSS property sets the origin for an element's transformations. + * + * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?` + * + * **Initial value**: `50% 50% 0` + */ + WebkitTransformOrigin?: Property.TransformOrigin<TLength> | undefined; + /** + * The **`transform-style`** CSS property sets whether children of an element are positioned in the 3D space or are flattened in the plane of the element. + * + * **Syntax**: `flat | preserve-3d` + * + * **Initial value**: `flat` + */ + WebkitTransformStyle?: Property.TransformStyle | undefined; + /** + * The **`transition-delay`** CSS property specifies the duration to wait before starting a property's transition effect when its value changes. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + WebkitTransitionDelay?: Property.TransitionDelay<TTime> | undefined; + /** + * The **`transition-duration`** CSS property sets the length of time a transition animation should take to complete. By default, the value is `0s`, meaning that no animation will occur. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + WebkitTransitionDuration?: Property.TransitionDuration<TTime> | undefined; + /** + * The **`transition-property`** CSS property sets the CSS properties to which a transition effect should be applied. + * + * **Syntax**: `none | <single-transition-property>#` + * + * **Initial value**: all + */ + WebkitTransitionProperty?: Property.TransitionProperty | undefined; + /** + * The **`transition-timing-function`** CSS property sets how intermediate values are calculated for CSS properties being affected by a transition effect. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + */ + WebkitTransitionTimingFunction?: Property.TransitionTimingFunction | undefined; + /** + * **Syntax**: `read-only | read-write | read-write-plaintext-only` + * + * **Initial value**: `read-only` + */ + WebkitUserModify?: Property.WebkitUserModify | undefined; + /** + * The **`user-select`** CSS property controls whether the user can select text. This doesn't have any effect on content loaded as part of a browser's user interface (its chrome), except in textboxes. + * + * **Syntax**: `auto | text | none | contain | all` + * + * **Initial value**: `auto` + */ + WebkitUserSelect?: Property.UserSelect | undefined; + /** + * The **`writing-mode`** CSS property sets whether lines of text are laid out horizontally or vertically, as well as the direction in which blocks progress. When set for an entire document, it should be set on the root element (`html` element for HTML documents). + * + * **Syntax**: `horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr` + * + * **Initial value**: `horizontal-tb` + */ + WebkitWritingMode?: Property.WritingMode | undefined; +} + +export interface VendorShorthandProperties<TLength = (string & {}) | 0, TTime = string & {}> { + /** + * The **`animation`** shorthand CSS property applies an animation between styles. It is a shorthand for `animation-name`, `animation-duration`, `animation-timing-function`, `animation-delay`, `animation-iteration-count`, `animation-direction`, `animation-fill-mode`, and `animation-play-state`. + * + * **Syntax**: `<single-animation>#` + */ + MozAnimation?: Property.Animation<TTime> | undefined; + /** + * The **`border-image`** CSS property draws an image around a given element. It replaces the element's regular border. + * + * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>` + */ + MozBorderImage?: Property.BorderImage | undefined; + /** + * The **`column-rule`** shorthand CSS property sets the width, style, and color of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>` + */ + MozColumnRule?: Property.ColumnRule<TLength> | undefined; + /** + * The **`columns`** CSS shorthand property sets the number of columns to use when drawing an element's contents, as well as those columns' widths. + * + * **Syntax**: `<'column-width'> || <'column-count'>` + */ + MozColumns?: Property.Columns<TLength> | undefined; + /** + * In Mozilla applications like Firefox, the **`-moz-outline-radius`** CSS shorthand property can be used to give an element's `outline` rounded corners. + * + * **Syntax**: `<outline-radius>{1,4} [ / <outline-radius>{1,4} ]?` + */ + MozOutlineRadius?: Property.MozOutlineRadius<TLength> | undefined; + /** + * The **`-ms-content-zoom-limit`** CSS shorthand property is a Microsoft extension that specifies values for the `-ms-content-zoom-limit-min` and `-ms-content-zoom-limit-max` properties. + * + * **Syntax**: `<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>` + */ + msContentZoomLimit?: Property.MsContentZoomLimit | undefined; + /** + * The **`-ms-content-zoom-snap`** CSS shorthand property is a Microsoft extension that specifies values for the `-ms-content-zoom-snap-type` and `-ms-content-zoom-snap-points` properties. + * + * **Syntax**: `<'-ms-content-zoom-snap-type'> || <'-ms-content-zoom-snap-points'>` + */ + msContentZoomSnap?: Property.MsContentZoomSnap | undefined; + /** + * The **`flex`** CSS shorthand property sets how a flex _item_ will grow or shrink to fit the space available in its flex container. + * + * **Syntax**: `none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]` + */ + msFlex?: Property.Flex<TLength> | undefined; + /** + * The **\-ms-scroll-limit** CSS property is a Microsoft extension that specifies values for the `-ms-scroll-limit-x-min`, `-ms-scroll-limit-y-min`, `-ms-scroll-limit-x-max`, and `-ms-scroll-limit-y-max` properties. + * + * **Syntax**: `<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>` + */ + msScrollLimit?: Property.MsScrollLimit | undefined; + /** + * The **`-ms-scroll-snap-x`** CSS shorthand property is a Microsoft extension that specifies values for the `-ms-scroll-snap-type` and `-ms-scroll-snap-points-x` properties. + * + * **Syntax**: `<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>` + */ + msScrollSnapX?: Property.MsScrollSnapX | undefined; + /** + * The **`-ms-scroll-snap-x`** CSS shorthand property is a Microsoft extension that specifies values for the `-ms-scroll-snap-type` and `-ms-scroll-snap-points-y` properties. + * + * **Syntax**: `<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>` + */ + msScrollSnapY?: Property.MsScrollSnapY | undefined; + /** + * The **`transition`** CSS property is a shorthand property for `transition-property`, `transition-duration`, `transition-timing-function`, and `transition-delay`. + * + * **Syntax**: `<single-transition>#` + */ + msTransition?: Property.Transition<TTime> | undefined; + /** + * The **`animation`** shorthand CSS property applies an animation between styles. It is a shorthand for `animation-name`, `animation-duration`, `animation-timing-function`, `animation-delay`, `animation-iteration-count`, `animation-direction`, `animation-fill-mode`, and `animation-play-state`. + * + * **Syntax**: `<single-animation>#` + */ + WebkitAnimation?: Property.Animation<TTime> | undefined; + /** + * The **`-webkit-border-before`** CSS property is a shorthand property for setting the individual logical block start border property values in a single place in the style sheet. + * + * **Syntax**: `<'border-width'> || <'border-style'> || <color>` + */ + WebkitBorderBefore?: Property.WebkitBorderBefore<TLength> | undefined; + /** + * The **`border-image`** CSS property draws an image around a given element. It replaces the element's regular border. + * + * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>` + */ + WebkitBorderImage?: Property.BorderImage | undefined; + /** + * The **`border-radius`** CSS property rounds the corners of an element's outer border edge. You can set a single radius to make circular corners, or two radii to make elliptical corners. + * + * **Syntax**: `<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?` + */ + WebkitBorderRadius?: Property.BorderRadius<TLength> | undefined; + /** + * The **`column-rule`** shorthand CSS property sets the width, style, and color of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>` + */ + WebkitColumnRule?: Property.ColumnRule<TLength> | undefined; + /** + * The **`columns`** CSS shorthand property sets the number of columns to use when drawing an element's contents, as well as those columns' widths. + * + * **Syntax**: `<'column-width'> || <'column-count'>` + */ + WebkitColumns?: Property.Columns<TLength> | undefined; + /** + * The **`flex`** CSS shorthand property sets how a flex _item_ will grow or shrink to fit the space available in its flex container. + * + * **Syntax**: `none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]` + */ + WebkitFlex?: Property.Flex<TLength> | undefined; + /** + * The **`flex-flow`** CSS shorthand property specifies the direction of a flex container, as well as its wrapping behavior. + * + * **Syntax**: `<'flex-direction'> || <'flex-wrap'>` + */ + WebkitFlexFlow?: Property.FlexFlow | undefined; + /** + * The **`mask`** CSS shorthand property hides an element (partially or fully) by masking or clipping the image at specific points. + * + * **Syntax**: `[ <mask-reference> || <position> [ / <bg-size> ]? || <repeat-style> || [ <box> | border | padding | content | text ] || [ <box> | border | padding | content ] ]#` + */ + WebkitMask?: Property.WebkitMask<TLength> | undefined; + /** + * The **`mask-border`** CSS shorthand property lets you create a mask along the edge of an element's border. + * + * **Syntax**: `<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>` + */ + WebkitMaskBoxImage?: Property.MaskBorder | undefined; + /** + * The **`text-emphasis`** CSS property applies emphasis marks to text (except spaces and control characters). It is a shorthand for `text-emphasis-style` and `text-emphasis-color`. + * + * **Syntax**: `<'text-emphasis-style'> || <'text-emphasis-color'>` + */ + WebkitTextEmphasis?: Property.TextEmphasis | undefined; + /** + * The **`-webkit-text-stroke`** CSS property specifies the width and color of strokes for text characters. This is a shorthand property for the longhand properties `-webkit-text-stroke-width` and `-webkit-text-stroke-color`. + * + * **Syntax**: `<length> || <color>` + */ + WebkitTextStroke?: Property.WebkitTextStroke<TLength> | undefined; + /** + * The **`transition`** CSS property is a shorthand property for `transition-property`, `transition-duration`, `transition-timing-function`, and `transition-delay`. + * + * **Syntax**: `<single-transition>#` + */ + WebkitTransition?: Property.Transition<TTime> | undefined; +} + +export interface VendorProperties<TLength = (string & {}) | 0, TTime = string & {}> extends VendorLonghandProperties<TLength, TTime>, VendorShorthandProperties<TLength, TTime> {} + +export interface ObsoleteProperties<TLength = (string & {}) | 0, TTime = string & {}> { + /** + * In combination with `elevation`, the **`azimuth`** CSS property enables different audio sources to be positioned spatially for aural presentation. This is important in that it provides a natural way to tell several voices apart, as each can be positioned to originate at a different location on the sound stage. Stereo output produce a lateral sound stage, while binaural headphones and multi-speaker setups allow for a fully three-dimensional stage. + * + * **Syntax**: `<angle> | [ [ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards` + * + * **Initial value**: `center` + * + * @deprecated + */ + azimuth?: Property.Azimuth | undefined; + /** + * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | baseline | stretch` + * + * **Initial value**: `stretch` + * + * @deprecated + */ + boxAlign?: Property.BoxAlign | undefined; + /** + * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge). + * + * **Syntax**: `normal | reverse | inherit` + * + * **Initial value**: `normal` + * + * @deprecated + */ + boxDirection?: Property.BoxDirection | undefined; + /** + * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout. + * + * **Syntax**: `<number>` + * + * **Initial value**: `0` + * + * @deprecated + */ + boxFlex?: Property.BoxFlex | undefined; + /** + * The **`box-flex-group`** CSS property assigns the flexbox's child elements to a flex group. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `1` + * + * @deprecated + */ + boxFlexGroup?: Property.BoxFlexGroup | undefined; + /** + * The **`box-lines`** CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes). + * + * **Syntax**: `single | multiple` + * + * **Initial value**: `single` + * + * @deprecated + */ + boxLines?: Property.BoxLines | undefined; + /** + * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `1` + * + * @deprecated + */ + boxOrdinalGroup?: Property.BoxOrdinalGroup | undefined; + /** + * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically. + * + * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit` + * + * **Initial value**: `inline-axis` (`horizontal` in XUL) + * + * @deprecated + */ + boxOrient?: Property.BoxOrient | undefined; + /** + * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | justify` + * + * **Initial value**: `start` + * + * @deprecated + */ + boxPack?: Property.BoxPack | undefined; + /** + * The **`clip`** CSS property defines a visible portion of an element. The `clip` property applies only to absolutely positioned elements — that is, elements with `position:absolute` or `position:fixed`. + * + * **Syntax**: `<shape> | auto` + * + * **Initial value**: `auto` + * + * @deprecated + */ + clip?: Property.Clip | undefined; + /** + * The **`column-gap`** CSS property sets the size of the gap (gutter) between an element's columns. + * + * **Syntax**: `<length-percentage>` + * + * **Initial value**: `0` + * + * @deprecated + */ + gridColumnGap?: Property.GridColumnGap<TLength> | undefined; + /** + * The **`gap`** CSS property sets the gaps (gutters) between rows and columns. It is a shorthand for `row-gap` and `column-gap`. + * + * **Syntax**: `<'grid-row-gap'> <'grid-column-gap'>?` + * + * @deprecated + */ + gridGap?: Property.GridGap<TLength> | undefined; + /** + * The **`row-gap`** CSS property sets the size of the gap (gutter) between an element's rows. + * + * **Syntax**: `<length-percentage>` + * + * **Initial value**: `0` + * + * @deprecated + */ + gridRowGap?: Property.GridRowGap<TLength> | undefined; + /** + * The **`ime-mode`** CSS property controls the state of the input method editor (IME) for text fields. This property is obsolete. + * + * **Syntax**: `auto | normal | active | inactive | disabled` + * + * **Initial value**: `auto` + * + * @deprecated + */ + imeMode?: Property.ImeMode | undefined; + /** + * The **`inset-block`** CSS property defines the logical block start and end offsets of an element, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top` and `bottom`, or `right` and `left` properties depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>{1,2}` + * + * @deprecated + */ + offsetBlock?: Property.InsetBlock<TLength> | undefined; + /** + * The **`inset-block-end`** CSS property defines the logical block end offset of an element, which maps to a physical inset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * @deprecated + */ + offsetBlockEnd?: Property.InsetBlockEnd<TLength> | undefined; + /** + * The **`inset-block-start`** CSS property defines the logical block start offset of an element, which maps to a physical inset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * @deprecated + */ + offsetBlockStart?: Property.InsetBlockStart<TLength> | undefined; + /** + * The **`inset-inline`** CSS property defines the logical start and end offsets of an element in the inline direction, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top` and `bottom`, or `right` and `left` properties depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>{1,2}` + * + * @deprecated + */ + offsetInline?: Property.InsetInline<TLength> | undefined; + /** + * The **`inset-inline-end`** CSS property defines the logical inline end inset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * @deprecated + */ + offsetInlineEnd?: Property.InsetInlineEnd<TLength> | undefined; + /** + * The **`inset-inline-start`** CSS property defines the logical inline start inset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * @deprecated + */ + offsetInlineStart?: Property.InsetInlineStart<TLength> | undefined; + /** + * The **`scroll-snap-coordinate`** CSS property defines the x and y coordinate positions within an element that will align with its nearest ancestor scroll container's `scroll-snap-destination` for each respective axis. + * + * **Syntax**: `none | <position>#` + * + * **Initial value**: `none` + * + * @deprecated + */ + scrollSnapCoordinate?: Property.ScrollSnapCoordinate<TLength> | undefined; + /** + * The **`scroll-snap-destination`** CSS property defines the position in x and y coordinates within the scroll container's visual viewport which element snap points align with. + * + * **Syntax**: `<position>` + * + * **Initial value**: `0px 0px` + * + * @deprecated + */ + scrollSnapDestination?: Property.ScrollSnapDestination<TLength> | undefined; + /** + * The **`scroll-snap-points-x`** CSS property defines the horizontal positioning of snap points within the content of the scroll container they are applied to. + * + * **Syntax**: `none | repeat( <length-percentage> )` + * + * **Initial value**: `none` + * + * @deprecated + */ + scrollSnapPointsX?: Property.ScrollSnapPointsX | undefined; + /** + * The **`scroll-snap-points-y`** CSS property defines the vertical positioning of snap points within the content of the scroll container they are applied to. + * + * **Syntax**: `none | repeat( <length-percentage> )` + * + * **Initial value**: `none` + * + * @deprecated + */ + scrollSnapPointsY?: Property.ScrollSnapPointsY | undefined; + /** + * The **`scroll-snap-type-x`** CSS property defines how strictly snap points are enforced on the horizontal axis of the scroll container in case there is one. + * + * **Syntax**: `none | mandatory | proximity` + * + * **Initial value**: `none` + * + * @deprecated + */ + scrollSnapTypeX?: Property.ScrollSnapTypeX | undefined; + /** + * The **`scroll-snap-type-y`** CSS property defines how strictly snap points are enforced on the vertical axis of the scroll container in case there is one. + * + * **Syntax**: `none | mandatory | proximity` + * + * **Initial value**: `none` + * + * @deprecated + */ + scrollSnapTypeY?: Property.ScrollSnapTypeY | undefined; + /** + * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | baseline | stretch` + * + * **Initial value**: `stretch` + * + * @deprecated + */ + KhtmlBoxAlign?: Property.BoxAlign | undefined; + /** + * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge). + * + * **Syntax**: `normal | reverse | inherit` + * + * **Initial value**: `normal` + * + * @deprecated + */ + KhtmlBoxDirection?: Property.BoxDirection | undefined; + /** + * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout. + * + * **Syntax**: `<number>` + * + * **Initial value**: `0` + * + * @deprecated + */ + KhtmlBoxFlex?: Property.BoxFlex | undefined; + /** + * The **`box-flex-group`** CSS property assigns the flexbox's child elements to a flex group. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `1` + * + * @deprecated + */ + KhtmlBoxFlexGroup?: Property.BoxFlexGroup | undefined; + /** + * The **`box-lines`** CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes). + * + * **Syntax**: `single | multiple` + * + * **Initial value**: `single` + * + * @deprecated + */ + KhtmlBoxLines?: Property.BoxLines | undefined; + /** + * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `1` + * + * @deprecated + */ + KhtmlBoxOrdinalGroup?: Property.BoxOrdinalGroup | undefined; + /** + * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically. + * + * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit` + * + * **Initial value**: `inline-axis` (`horizontal` in XUL) + * + * @deprecated + */ + KhtmlBoxOrient?: Property.BoxOrient | undefined; + /** + * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | justify` + * + * **Initial value**: `start` + * + * @deprecated + */ + KhtmlBoxPack?: Property.BoxPack | undefined; + /** + * The **`line-break`** CSS property sets how to break lines of Chinese, Japanese, or Korean (CJK) text when working with punctuation and symbols. + * + * **Syntax**: `auto | loose | normal | strict | anywhere` + * + * **Initial value**: `auto` + * + * @deprecated + */ + KhtmlLineBreak?: Property.LineBreak | undefined; + /** + * The **`opacity`** CSS property sets the opacity of an element. Opacity is the degree to which content behind an element is hidden, and is the opposite of transparency. + * + * **Syntax**: `<alpha-value>` + * + * **Initial value**: `1` + * + * @deprecated + */ + KhtmlOpacity?: Property.Opacity | undefined; + /** + * The **`user-select`** CSS property controls whether the user can select text. This doesn't have any effect on content loaded as part of a browser's user interface (its chrome), except in textboxes. + * + * **Syntax**: `auto | text | none | contain | all` + * + * **Initial value**: `auto` + * + * @deprecated + */ + KhtmlUserSelect?: Property.UserSelect | undefined; + /** + * The **`backface-visibility`** CSS property sets whether the back face of an element is visible when turned towards the user. + * + * **Syntax**: `visible | hidden` + * + * **Initial value**: `visible` + * + * @deprecated + */ + MozBackfaceVisibility?: Property.BackfaceVisibility | undefined; + /** + * The **`background-clip`** CSS property sets whether an element's background extends underneath its border box, padding box, or content box. + * + * **Syntax**: `<box>#` + * + * **Initial value**: `border-box` + * + * @deprecated + */ + MozBackgroundClip?: Property.BackgroundClip | undefined; + /** + * The **`box-decoration-break`** CSS property specifies how an element's fragments should be rendered when broken across multiple lines, columns, or pages. + * + * **Syntax**: `slice | clone` + * + * **Initial value**: `slice` + * + * @deprecated + */ + MozBackgroundInlinePolicy?: Property.BoxDecorationBreak | undefined; + /** + * The **`background-origin`** CSS property sets the background's origin: from the border start, inside the border, or inside the padding. + * + * **Syntax**: `<box>#` + * + * **Initial value**: `padding-box` + * + * @deprecated + */ + MozBackgroundOrigin?: Property.BackgroundOrigin | undefined; + /** + * The **`background-size`** CSS property sets the size of the element's background image. The image can be left to its natural size, stretched, or constrained to fit the available space. + * + * **Syntax**: `<bg-size>#` + * + * **Initial value**: `auto auto` + * + * @deprecated + */ + MozBackgroundSize?: Property.BackgroundSize<TLength> | undefined; + /** + * The **`border-radius`** CSS property rounds the corners of an element's outer border edge. You can set a single radius to make circular corners, or two radii to make elliptical corners. + * + * **Syntax**: `<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?` + * + * @deprecated + */ + MozBorderRadius?: Property.BorderRadius<TLength> | undefined; + /** + * The **`border-bottom-left-radius`** CSS property rounds the bottom-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * @deprecated + */ + MozBorderRadiusBottomleft?: Property.BorderBottomLeftRadius<TLength> | undefined; + /** + * The **`border-bottom-right-radius`** CSS property rounds the bottom-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * @deprecated + */ + MozBorderRadiusBottomright?: Property.BorderBottomRightRadius<TLength> | undefined; + /** + * The **`border-top-left-radius`** CSS property rounds the top-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * @deprecated + */ + MozBorderRadiusTopleft?: Property.BorderTopLeftRadius<TLength> | undefined; + /** + * The **`border-top-right-radius`** CSS property rounds the top-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * @deprecated + */ + MozBorderRadiusTopright?: Property.BorderTopRightRadius<TLength> | undefined; + /** + * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | baseline | stretch` + * + * **Initial value**: `stretch` + * + * @deprecated + */ + MozBoxAlign?: Property.BoxAlign | undefined; + /** + * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge). + * + * **Syntax**: `normal | reverse | inherit` + * + * **Initial value**: `normal` + * + * @deprecated + */ + MozBoxDirection?: Property.BoxDirection | undefined; + /** + * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout. + * + * **Syntax**: `<number>` + * + * **Initial value**: `0` + * + * @deprecated + */ + MozBoxFlex?: Property.BoxFlex | undefined; + /** + * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `1` + * + * @deprecated + */ + MozBoxOrdinalGroup?: Property.BoxOrdinalGroup | undefined; + /** + * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically. + * + * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit` + * + * **Initial value**: `inline-axis` (`horizontal` in XUL) + * + * @deprecated + */ + MozBoxOrient?: Property.BoxOrient | undefined; + /** + * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | justify` + * + * **Initial value**: `start` + * + * @deprecated + */ + MozBoxPack?: Property.BoxPack | undefined; + /** + * The **`box-shadow`** CSS property adds shadow effects around an element's frame. You can set multiple effects separated by commas. A box shadow is described by X and Y offsets relative to the element, blur and spread radius, and color. + * + * **Syntax**: `none | <shadow>#` + * + * **Initial value**: `none` + * + * @deprecated + */ + MozBoxShadow?: Property.BoxShadow | undefined; + /** + * The non-standard **`-moz-float-edge`** CSS property specifies whether the height and width properties of the element include the margin, border, or padding thickness. + * + * **Syntax**: `border-box | content-box | margin-box | padding-box` + * + * **Initial value**: `content-box` + * + * @deprecated + */ + MozFloatEdge?: Property.MozFloatEdge | undefined; + /** + * The **`-moz-force-broken-image-icon`** extended CSS property can be used to force the broken image icon to be shown even when a broken image has an `alt` attribute. + * + * **Syntax**: `0 | 1` + * + * **Initial value**: `0` + * + * @deprecated + */ + MozForceBrokenImageIcon?: Property.MozForceBrokenImageIcon | undefined; + /** + * The **`opacity`** CSS property sets the opacity of an element. Opacity is the degree to which content behind an element is hidden, and is the opposite of transparency. + * + * **Syntax**: `<alpha-value>` + * + * **Initial value**: `1` + * + * @deprecated + */ + MozOpacity?: Property.Opacity | undefined; + /** + * The **`outline`** CSS shorthand property sets most of the outline properties in a single declaration. + * + * **Syntax**: `[ <'outline-color'> || <'outline-style'> || <'outline-width'> ]` + * + * @deprecated + */ + MozOutline?: Property.Outline<TLength> | undefined; + /** + * The **`outline-color`** CSS property sets the color of an element's outline. + * + * **Syntax**: `<color> | invert` + * + * **Initial value**: `invert`, for browsers supporting it, `currentColor` for the other + * + * @deprecated + */ + MozOutlineColor?: Property.OutlineColor | undefined; + /** + * The **`outline-style`** CSS property sets the style of an element's outline. An outline is a line that is drawn around an element, outside the `border`. + * + * **Syntax**: `auto | <'border-style'>` + * + * **Initial value**: `none` + * + * @deprecated + */ + MozOutlineStyle?: Property.OutlineStyle | undefined; + /** + * The CSS **`outline-width`** property sets the thickness of an element's outline. An outline is a line that is drawn around an element, outside the `border`. + * + * **Syntax**: `<line-width>` + * + * **Initial value**: `medium` + * + * @deprecated + */ + MozOutlineWidth?: Property.OutlineWidth<TLength> | undefined; + /** + * The **`perspective`** CSS property determines the distance between the z=0 plane and the user in order to give a 3D-positioned element some perspective. + * + * **Syntax**: `none | <length>` + * + * **Initial value**: `none` + * + * @deprecated + */ + MozPerspective?: Property.Perspective<TLength> | undefined; + /** + * The **`perspective-origin`** CSS property determines the position at which the viewer is looking. It is used as the _vanishing point_ by the `perspective` property. + * + * **Syntax**: `<position>` + * + * **Initial value**: `50% 50%` + * + * @deprecated + */ + MozPerspectiveOrigin?: Property.PerspectiveOrigin<TLength> | undefined; + /** + * The **`text-align-last`** CSS property sets how the last line of a block or a line, right before a forced line break, is aligned. + * + * **Syntax**: `auto | start | end | left | right | center | justify` + * + * **Initial value**: `auto` + * + * @deprecated + */ + MozTextAlignLast?: Property.TextAlignLast | undefined; + /** + * The **`text-decoration-color`** CSS property sets the color of decorations added to text by `text-decoration-line`. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + * + * @deprecated + */ + MozTextDecorationColor?: Property.TextDecorationColor | undefined; + /** + * The **`text-decoration-line`** CSS property sets the kind of decoration that is used on text in an element, such as an underline or overline. + * + * **Syntax**: `none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error` + * + * **Initial value**: `none` + * + * @deprecated + */ + MozTextDecorationLine?: Property.TextDecorationLine | undefined; + /** + * The **`text-decoration-style`** CSS property sets the style of the lines specified by `text-decoration-line`. The style applies to all lines that are set with `text-decoration-line`. + * + * **Syntax**: `solid | double | dotted | dashed | wavy` + * + * **Initial value**: `solid` + * + * @deprecated + */ + MozTextDecorationStyle?: Property.TextDecorationStyle | undefined; + /** + * The **`transform`** CSS property lets you rotate, scale, skew, or translate an element. It modifies the coordinate space of the CSS visual formatting model. + * + * **Syntax**: `none | <transform-list>` + * + * **Initial value**: `none` + * + * @deprecated + */ + MozTransform?: Property.Transform | undefined; + /** + * The **`transform-origin`** CSS property sets the origin for an element's transformations. + * + * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?` + * + * **Initial value**: `50% 50% 0` + * + * @deprecated + */ + MozTransformOrigin?: Property.TransformOrigin<TLength> | undefined; + /** + * The **`transform-style`** CSS property sets whether children of an element are positioned in the 3D space or are flattened in the plane of the element. + * + * **Syntax**: `flat | preserve-3d` + * + * **Initial value**: `flat` + * + * @deprecated + */ + MozTransformStyle?: Property.TransformStyle | undefined; + /** + * The **`transition`** CSS property is a shorthand property for `transition-property`, `transition-duration`, `transition-timing-function`, and `transition-delay`. + * + * **Syntax**: `<single-transition>#` + * + * @deprecated + */ + MozTransition?: Property.Transition<TTime> | undefined; + /** + * The **`transition-delay`** CSS property specifies the duration to wait before starting a property's transition effect when its value changes. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * @deprecated + */ + MozTransitionDelay?: Property.TransitionDelay<TTime> | undefined; + /** + * The **`transition-duration`** CSS property sets the length of time a transition animation should take to complete. By default, the value is `0s`, meaning that no animation will occur. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * @deprecated + */ + MozTransitionDuration?: Property.TransitionDuration<TTime> | undefined; + /** + * The **`transition-property`** CSS property sets the CSS properties to which a transition effect should be applied. + * + * **Syntax**: `none | <single-transition-property>#` + * + * **Initial value**: all + * + * @deprecated + */ + MozTransitionProperty?: Property.TransitionProperty | undefined; + /** + * The **`transition-timing-function`** CSS property sets how intermediate values are calculated for CSS properties being affected by a transition effect. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + * + * @deprecated + */ + MozTransitionTimingFunction?: Property.TransitionTimingFunction | undefined; + /** + * In Mozilla applications, **`-moz-user-input`** determines if an element will accept user input. + * + * **Syntax**: `auto | none | enabled | disabled` + * + * **Initial value**: `auto` + * + * @deprecated + */ + MozUserInput?: Property.MozUserInput | undefined; + /** + * The **`ime-mode`** CSS property controls the state of the input method editor (IME) for text fields. This property is obsolete. + * + * **Syntax**: `auto | normal | active | inactive | disabled` + * + * **Initial value**: `auto` + * + * @deprecated + */ + msImeMode?: Property.ImeMode | undefined; + /** + * The **`animation`** shorthand CSS property applies an animation between styles. It is a shorthand for `animation-name`, `animation-duration`, `animation-timing-function`, `animation-delay`, `animation-iteration-count`, `animation-direction`, `animation-fill-mode`, and `animation-play-state`. + * + * **Syntax**: `<single-animation>#` + * + * @deprecated + */ + OAnimation?: Property.Animation<TTime> | undefined; + /** + * The **`animation-delay`** CSS property specifies the amount of time to wait from applying the animation to an element before beginning to perform the animation. The animation can start later, immediately from its beginning, or immediately and partway through the animation. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * @deprecated + */ + OAnimationDelay?: Property.AnimationDelay<TTime> | undefined; + /** + * The **`animation-direction`** CSS property sets whether an animation should play forward, backward, or alternate back and forth between playing the sequence forward and backward. + * + * **Syntax**: `<single-animation-direction>#` + * + * **Initial value**: `normal` + * + * @deprecated + */ + OAnimationDirection?: Property.AnimationDirection | undefined; + /** + * The **`animation-duration`** CSS property sets the length of time that an animation takes to complete one cycle. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * @deprecated + */ + OAnimationDuration?: Property.AnimationDuration<TTime> | undefined; + /** + * The **`animation-fill-mode`** CSS property sets how a CSS animation applies styles to its target before and after its execution. + * + * **Syntax**: `<single-animation-fill-mode>#` + * + * **Initial value**: `none` + * + * @deprecated + */ + OAnimationFillMode?: Property.AnimationFillMode | undefined; + /** + * The **`animation-iteration-count`** CSS property sets the number of times an animation sequence should be played before stopping. + * + * **Syntax**: `<single-animation-iteration-count>#` + * + * **Initial value**: `1` + * + * @deprecated + */ + OAnimationIterationCount?: Property.AnimationIterationCount | undefined; + /** + * The **`animation-name`** CSS property specifies the names of one or more `@keyframes` at-rules that describe the animation to apply to an element. Multiple `@keyframe` at-rules are specified as a comma-separated list of names. If the specified name does not match any `@keyframe` at-rule, no properties are animated. + * + * **Syntax**: `[ none | <keyframes-name> ]#` + * + * **Initial value**: `none` + * + * @deprecated + */ + OAnimationName?: Property.AnimationName | undefined; + /** + * The **`animation-play-state`** CSS property sets whether an animation is running or paused. + * + * **Syntax**: `<single-animation-play-state>#` + * + * **Initial value**: `running` + * + * @deprecated + */ + OAnimationPlayState?: Property.AnimationPlayState | undefined; + /** + * The **`animation-timing-function`** CSS property sets how an animation progresses through the duration of each cycle. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + * + * @deprecated + */ + OAnimationTimingFunction?: Property.AnimationTimingFunction | undefined; + /** + * The **`background-size`** CSS property sets the size of the element's background image. The image can be left to its natural size, stretched, or constrained to fit the available space. + * + * **Syntax**: `<bg-size>#` + * + * **Initial value**: `auto auto` + * + * @deprecated + */ + OBackgroundSize?: Property.BackgroundSize<TLength> | undefined; + /** + * The **`border-image`** CSS property draws an image around a given element. It replaces the element's regular border. + * + * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>` + * + * @deprecated + */ + OBorderImage?: Property.BorderImage | undefined; + /** + * The **`object-fit`** CSS property sets how the content of a replaced element, such as an `<img>` or `<video>`, should be resized to fit its container. + * + * **Syntax**: `fill | contain | cover | none | scale-down` + * + * **Initial value**: `fill` + * + * @deprecated + */ + OObjectFit?: Property.ObjectFit | undefined; + /** + * The **`object-position`** CSS property specifies the alignment of the selected replaced element's contents within the element's box. Areas of the box which aren't covered by the replaced element's object will show the element's background. + * + * **Syntax**: `<position>` + * + * **Initial value**: `50% 50%` + * + * @deprecated + */ + OObjectPosition?: Property.ObjectPosition<TLength> | undefined; + /** + * The **`tab-size`** CSS property is used to customize the width of tab characters (U+0009). + * + * **Syntax**: `<integer> | <length>` + * + * **Initial value**: `8` + * + * @deprecated + */ + OTabSize?: Property.TabSize<TLength> | undefined; + /** + * The **`text-overflow`** CSS property sets how hidden overflow content is signaled to users. It can be clipped, display an ellipsis ('`…`'), or display a custom string. + * + * **Syntax**: `[ clip | ellipsis | <string> ]{1,2}` + * + * **Initial value**: `clip` + * + * @deprecated + */ + OTextOverflow?: Property.TextOverflow | undefined; + /** + * The **`transform`** CSS property lets you rotate, scale, skew, or translate an element. It modifies the coordinate space of the CSS visual formatting model. + * + * **Syntax**: `none | <transform-list>` + * + * **Initial value**: `none` + * + * @deprecated + */ + OTransform?: Property.Transform | undefined; + /** + * The **`transform-origin`** CSS property sets the origin for an element's transformations. + * + * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?` + * + * **Initial value**: `50% 50% 0` + * + * @deprecated + */ + OTransformOrigin?: Property.TransformOrigin<TLength> | undefined; + /** + * The **`transition`** CSS property is a shorthand property for `transition-property`, `transition-duration`, `transition-timing-function`, and `transition-delay`. + * + * **Syntax**: `<single-transition>#` + * + * @deprecated + */ + OTransition?: Property.Transition<TTime> | undefined; + /** + * The **`transition-delay`** CSS property specifies the duration to wait before starting a property's transition effect when its value changes. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * @deprecated + */ + OTransitionDelay?: Property.TransitionDelay<TTime> | undefined; + /** + * The **`transition-duration`** CSS property sets the length of time a transition animation should take to complete. By default, the value is `0s`, meaning that no animation will occur. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * @deprecated + */ + OTransitionDuration?: Property.TransitionDuration<TTime> | undefined; + /** + * The **`transition-property`** CSS property sets the CSS properties to which a transition effect should be applied. + * + * **Syntax**: `none | <single-transition-property>#` + * + * **Initial value**: all + * + * @deprecated + */ + OTransitionProperty?: Property.TransitionProperty | undefined; + /** + * The **`transition-timing-function`** CSS property sets how intermediate values are calculated for CSS properties being affected by a transition effect. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + * + * @deprecated + */ + OTransitionTimingFunction?: Property.TransitionTimingFunction | undefined; + /** + * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | baseline | stretch` + * + * **Initial value**: `stretch` + * + * @deprecated + */ + WebkitBoxAlign?: Property.BoxAlign | undefined; + /** + * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge). + * + * **Syntax**: `normal | reverse | inherit` + * + * **Initial value**: `normal` + * + * @deprecated + */ + WebkitBoxDirection?: Property.BoxDirection | undefined; + /** + * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout. + * + * **Syntax**: `<number>` + * + * **Initial value**: `0` + * + * @deprecated + */ + WebkitBoxFlex?: Property.BoxFlex | undefined; + /** + * The **`box-flex-group`** CSS property assigns the flexbox's child elements to a flex group. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `1` + * + * @deprecated + */ + WebkitBoxFlexGroup?: Property.BoxFlexGroup | undefined; + /** + * The **`box-lines`** CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes). + * + * **Syntax**: `single | multiple` + * + * **Initial value**: `single` + * + * @deprecated + */ + WebkitBoxLines?: Property.BoxLines | undefined; + /** + * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `1` + * + * @deprecated + */ + WebkitBoxOrdinalGroup?: Property.BoxOrdinalGroup | undefined; + /** + * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically. + * + * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit` + * + * **Initial value**: `inline-axis` (`horizontal` in XUL) + * + * @deprecated + */ + WebkitBoxOrient?: Property.BoxOrient | undefined; + /** + * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | justify` + * + * **Initial value**: `start` + * + * @deprecated + */ + WebkitBoxPack?: Property.BoxPack | undefined; +} + +export interface SvgProperties<TLength = (string & {}) | 0, TTime = string & {}> { + alignmentBaseline?: Property.AlignmentBaseline | undefined; + baselineShift?: Property.BaselineShift<TLength> | undefined; + clip?: Property.Clip | undefined; + clipPath?: Property.ClipPath | undefined; + clipRule?: Property.ClipRule | undefined; + color?: Property.Color | undefined; + colorInterpolation?: Property.ColorInterpolation | undefined; + colorRendering?: Property.ColorRendering | undefined; + cursor?: Property.Cursor | undefined; + direction?: Property.Direction | undefined; + display?: Property.Display | undefined; + dominantBaseline?: Property.DominantBaseline | undefined; + fill?: Property.Fill | undefined; + fillOpacity?: Property.FillOpacity | undefined; + fillRule?: Property.FillRule | undefined; + filter?: Property.Filter | undefined; + floodColor?: Property.FloodColor | undefined; + floodOpacity?: Property.FloodOpacity | undefined; + font?: Property.Font | undefined; + fontFamily?: Property.FontFamily | undefined; + fontSize?: Property.FontSize<TLength> | undefined; + fontSizeAdjust?: Property.FontSizeAdjust | undefined; + fontStretch?: Property.FontStretch | undefined; + fontStyle?: Property.FontStyle | undefined; + fontVariant?: Property.FontVariant | undefined; + fontWeight?: Property.FontWeight | undefined; + glyphOrientationVertical?: Property.GlyphOrientationVertical | undefined; + imageRendering?: Property.ImageRendering | undefined; + letterSpacing?: Property.LetterSpacing<TLength> | undefined; + lightingColor?: Property.LightingColor | undefined; + lineHeight?: Property.LineHeight<TLength> | undefined; + marker?: Property.Marker | undefined; + markerEnd?: Property.MarkerEnd | undefined; + markerMid?: Property.MarkerMid | undefined; + markerStart?: Property.MarkerStart | undefined; + mask?: Property.Mask<TLength> | undefined; + opacity?: Property.Opacity | undefined; + overflow?: Property.Overflow | undefined; + paintOrder?: Property.PaintOrder | undefined; + pointerEvents?: Property.PointerEvents | undefined; + shapeRendering?: Property.ShapeRendering | undefined; + stopColor?: Property.StopColor | undefined; + stopOpacity?: Property.StopOpacity | undefined; + stroke?: Property.Stroke | undefined; + strokeDasharray?: Property.StrokeDasharray<TLength> | undefined; + strokeDashoffset?: Property.StrokeDashoffset<TLength> | undefined; + strokeLinecap?: Property.StrokeLinecap | undefined; + strokeLinejoin?: Property.StrokeLinejoin | undefined; + strokeMiterlimit?: Property.StrokeMiterlimit | undefined; + strokeOpacity?: Property.StrokeOpacity | undefined; + strokeWidth?: Property.StrokeWidth<TLength> | undefined; + textAnchor?: Property.TextAnchor | undefined; + textDecoration?: Property.TextDecoration<TLength> | undefined; + textRendering?: Property.TextRendering | undefined; + unicodeBidi?: Property.UnicodeBidi | undefined; + vectorEffect?: Property.VectorEffect | undefined; + visibility?: Property.Visibility | undefined; + whiteSpace?: Property.WhiteSpace | undefined; + wordSpacing?: Property.WordSpacing<TLength> | undefined; + writingMode?: Property.WritingMode | undefined; +} + +export interface Properties<TLength = (string & {}) | 0, TTime = string & {}> + extends StandardProperties<TLength, TTime>, + VendorProperties<TLength, TTime>, + ObsoleteProperties<TLength, TTime>, + SvgProperties<TLength, TTime> {} + +export interface StandardLonghandPropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> { + /** + * The **`accent-color`** CSS property sets the accent color for user-interface controls generated by some elements. + * + * **Syntax**: `auto | <color>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **93** | **92** | **15.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/accent-color + */ + "accent-color"?: Property.AccentColor | undefined; + /** + * The CSS **`align-content`** property sets the distribution of space between and around content items along a flexbox's cross-axis or a grid's block axis. + * + * **Syntax**: `normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **28** | **9** | **12** | **11** | + * | 21 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/align-content + */ + "align-content"?: Property.AlignContent | undefined; + /** + * The CSS **`align-items`** property sets the `align-self` value on all direct children as a group. In Flexbox, it controls the alignment of items on the Cross Axis. In Grid Layout, it controls the alignment of items on the Block Axis within their grid area. + * + * **Syntax**: `normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **20** | **9** | **12** | **11** | + * | 21 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/align-items + */ + "align-items"?: Property.AlignItems | undefined; + /** + * The **`align-self`** CSS property overrides a grid or flex item's `align-items` value. In Grid, it aligns the item inside the grid area. In Flexbox, it aligns the item on the cross axis. + * + * **Syntax**: `auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **20** | **9** | **12** | **10** | + * | 21 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/align-self + */ + "align-self"?: Property.AlignSelf | undefined; + /** + * The **`align-tracks`** CSS property sets the alignment in the masonry axis for grid containers that have masonry in their block axis. + * + * **Syntax**: `[ normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position> ]#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/align-tracks + */ + "align-tracks"?: Property.AlignTracks | undefined; + /** + * The **`animation-composition`** CSS property specifies the composite operation to use when multiple animations affect the same property simultaneously. + * + * **Syntax**: `<single-animation-composition>#` + * + * **Initial value**: `replace` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **112** | **115** | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-composition + */ + "animation-composition"?: Property.AnimationComposition | undefined; + /** + * The **`animation-delay`** CSS property specifies the amount of time to wait from applying the animation to an element before beginning to perform the animation. The animation can start later, immediately from its beginning, or immediately and partway through the animation. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-delay + */ + "animation-delay"?: Property.AnimationDelay<TTime> | undefined; + /** + * The **`animation-direction`** CSS property sets whether an animation should play forward, backward, or alternate back and forth between playing the sequence forward and backward. + * + * **Syntax**: `<single-animation-direction>#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-direction + */ + "animation-direction"?: Property.AnimationDirection | undefined; + /** + * The **`animation-duration`** CSS property sets the length of time that an animation takes to complete one cycle. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-duration + */ + "animation-duration"?: Property.AnimationDuration<TTime> | undefined; + /** + * The **`animation-fill-mode`** CSS property sets how a CSS animation applies styles to its target before and after its execution. + * + * **Syntax**: `<single-animation-fill-mode>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 5 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-fill-mode + */ + "animation-fill-mode"?: Property.AnimationFillMode | undefined; + /** + * The **`animation-iteration-count`** CSS property sets the number of times an animation sequence should be played before stopping. + * + * **Syntax**: `<single-animation-iteration-count>#` + * + * **Initial value**: `1` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-iteration-count + */ + "animation-iteration-count"?: Property.AnimationIterationCount | undefined; + /** + * The **`animation-name`** CSS property specifies the names of one or more `@keyframes` at-rules that describe the animation to apply to an element. Multiple `@keyframe` at-rules are specified as a comma-separated list of names. If the specified name does not match any `@keyframe` at-rule, no properties are animated. + * + * **Syntax**: `[ none | <keyframes-name> ]#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-name + */ + "animation-name"?: Property.AnimationName | undefined; + /** + * The **`animation-play-state`** CSS property sets whether an animation is running or paused. + * + * **Syntax**: `<single-animation-play-state>#` + * + * **Initial value**: `running` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-play-state + */ + "animation-play-state"?: Property.AnimationPlayState | undefined; + /** + * The **`animation-range-end`** CSS property is used to set the end of an animation's attachment range along its timeline, i.e. where along the timeline an animation will end. + * + * **Syntax**: `[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-range-end + */ + "animation-range-end"?: Property.AnimationRangeEnd<TLength> | undefined; + /** + * The **`animation-range-start`** CSS property is used to set the start of an animation's attachment range along its timeline, i.e. where along the timeline an animation will start. + * + * **Syntax**: `[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-range-start + */ + "animation-range-start"?: Property.AnimationRangeStart<TLength> | undefined; + /** + * The **`animation-timeline`** CSS property specifies the timeline that is used to control the progress of an animation. + * + * **Syntax**: `<single-animation-timeline>#` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-timeline + */ + "animation-timeline"?: Property.AnimationTimeline | undefined; + /** + * The **`animation-timing-function`** CSS property sets how an animation progresses through the duration of each cycle. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-timing-function + */ + "animation-timing-function"?: Property.AnimationTimingFunction | undefined; + /** + * The **`appearance`** CSS property is used to control native appearance of UI controls, that are based on operating system's theme. + * + * **Syntax**: `none | auto | textfield | menulist-button | <compat-auto>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :------: | :-: | + * | **84** | **80** | **15.4** | **84** | No | + * | 1 _-x-_ | 1 _-x-_ | 3 _-x-_ | 12 _-x-_ | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/appearance + */ + appearance?: Property.Appearance | undefined; + /** + * The **`aspect-ratio`** CSS property sets a **preferred aspect ratio** for the box, which will be used in the calculation of auto sizes and some other layout functions. + * + * **Syntax**: `auto | <ratio>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **88** | **89** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/aspect-ratio + */ + "aspect-ratio"?: Property.AspectRatio | undefined; + /** + * The **`backdrop-filter`** CSS property lets you apply graphical effects such as blurring or color shifting to the area behind an element. Because it applies to everything _behind_ the element, to see the effect you must make the element or its background at least partially transparent. + * + * **Syntax**: `none | <filter-function-list>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :---------: | :----: | :-: | + * | **76** | **103** | **9** _-x-_ | **17** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/backdrop-filter + */ + "backdrop-filter"?: Property.BackdropFilter | undefined; + /** + * The **`backface-visibility`** CSS property sets whether the back face of an element is visible when turned towards the user. + * + * **Syntax**: `visible | hidden` + * + * **Initial value**: `visible` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-------: | :----: | :----: | + * | **36** | **16** | **15.4** | **12** | **10** | + * | 12 _-x-_ | | 5.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/backface-visibility + */ + "backface-visibility"?: Property.BackfaceVisibility | undefined; + /** + * The **`background-attachment`** CSS property sets whether a background image's position is fixed within the viewport, or scrolls with its containing block. + * + * **Syntax**: `<attachment>#` + * + * **Initial value**: `scroll` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-attachment + */ + "background-attachment"?: Property.BackgroundAttachment | undefined; + /** + * The **`background-blend-mode`** CSS property sets how an element's background images should blend with each other and with the element's background color. + * + * **Syntax**: `<blend-mode>#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **35** | **30** | **8** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-blend-mode + */ + "background-blend-mode"?: Property.BackgroundBlendMode | undefined; + /** + * The **`background-clip`** CSS property sets whether an element's background extends underneath its border box, padding box, or content box. + * + * **Syntax**: `<box>#` + * + * **Initial value**: `border-box` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **4** | **5** | **12** | **9** | + * | | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-clip + */ + "background-clip"?: Property.BackgroundClip | undefined; + /** + * The **`background-color`** CSS property sets the background color of an element. + * + * **Syntax**: `<color>` + * + * **Initial value**: `transparent` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-color + */ + "background-color"?: Property.BackgroundColor | undefined; + /** + * The **`background-image`** CSS property sets one or more background images on an element. + * + * **Syntax**: `<bg-image>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-image + */ + "background-image"?: Property.BackgroundImage | undefined; + /** + * The **`background-origin`** CSS property sets the background's origin: from the border start, inside the border, or inside the padding. + * + * **Syntax**: `<box>#` + * + * **Initial value**: `padding-box` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **4** | **3** | **12** | **9** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-origin + */ + "background-origin"?: Property.BackgroundOrigin | undefined; + /** + * The **`background-position-x`** CSS property sets the initial horizontal position for each background image. The position is relative to the position layer set by `background-origin`. + * + * **Syntax**: `[ center | [ [ left | right | x-start | x-end ]? <length-percentage>? ]! ]#` + * + * **Initial value**: `0%` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **49** | **1** | **12** | **6** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-position-x + */ + "background-position-x"?: Property.BackgroundPositionX<TLength> | undefined; + /** + * The **`background-position-y`** CSS property sets the initial vertical position for each background image. The position is relative to the position layer set by `background-origin`. + * + * **Syntax**: `[ center | [ [ top | bottom | y-start | y-end ]? <length-percentage>? ]! ]#` + * + * **Initial value**: `0%` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **49** | **1** | **12** | **6** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-position-y + */ + "background-position-y"?: Property.BackgroundPositionY<TLength> | undefined; + /** + * The **`background-repeat`** CSS property sets how background images are repeated. A background image can be repeated along the horizontal and vertical axes, or not repeated at all. + * + * **Syntax**: `<repeat-style>#` + * + * **Initial value**: `repeat` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-repeat + */ + "background-repeat"?: Property.BackgroundRepeat | undefined; + /** + * The **`background-size`** CSS property sets the size of the element's background image. The image can be left to its natural size, stretched, or constrained to fit the available space. + * + * **Syntax**: `<bg-size>#` + * + * **Initial value**: `auto auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **3** | **4** | **5** | **12** | **9** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-size + */ + "background-size"?: Property.BackgroundSize<TLength> | undefined; + /** + * **Syntax**: `clip | ellipsis | <string>` + * + * **Initial value**: `clip` + */ + "block-overflow"?: Property.BlockOverflow | undefined; + /** + * The **`block-size`** CSS property defines the horizontal or vertical size of an element's block, depending on its writing mode. It corresponds to either the `width` or the `height` property, depending on the value of `writing-mode`. + * + * **Syntax**: `<'width'>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/block-size + */ + "block-size"?: Property.BlockSize<TLength> | undefined; + /** + * The **`border-block-color`** CSS property defines the color of the logical block borders of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color` and `border-bottom-color`, or `border-right-color` and `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>{1,2}` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-color + */ + "border-block-color"?: Property.BorderBlockColor | undefined; + /** + * The **`border-block-end-color`** CSS property defines the color of the logical block-end border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color`, `border-right-color`, `border-bottom-color`, or `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-end-color + */ + "border-block-end-color"?: Property.BorderBlockEndColor | undefined; + /** + * The **`border-block-end-style`** CSS property defines the style of the logical block-end border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style`, `border-right-style`, `border-bottom-style`, or `border-left-style` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-end-style + */ + "border-block-end-style"?: Property.BorderBlockEndStyle | undefined; + /** + * The **`border-block-end-width`** CSS property defines the width of the logical block-end border of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-width`, `border-right-width`, `border-bottom-width`, or `border-left-width` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-width'>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-end-width + */ + "border-block-end-width"?: Property.BorderBlockEndWidth<TLength> | undefined; + /** + * The **`border-block-start-color`** CSS property defines the color of the logical block-start border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color`, `border-right-color`, `border-bottom-color`, or `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-start-color + */ + "border-block-start-color"?: Property.BorderBlockStartColor | undefined; + /** + * The **`border-block-start-style`** CSS property defines the style of the logical block start border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style`, `border-right-style`, `border-bottom-style`, or `border-left-style` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-start-style + */ + "border-block-start-style"?: Property.BorderBlockStartStyle | undefined; + /** + * The **`border-block-start-width`** CSS property defines the width of the logical block-start border of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-width`, `border-right-width`, `border-bottom-width`, or `border-left-width` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-width'>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-start-width + */ + "border-block-start-width"?: Property.BorderBlockStartWidth<TLength> | undefined; + /** + * The **`border-block-style`** CSS property defines the style of the logical block borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style` and `border-bottom-style`, or `border-left-style` and `border-right-style` properties depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-style + */ + "border-block-style"?: Property.BorderBlockStyle | undefined; + /** + * The **`border-block-width`** CSS property defines the width of the logical block borders of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-width` and `border-bottom-width`, or `border-left-width`, and `border-right-width` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-width'>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-width + */ + "border-block-width"?: Property.BorderBlockWidth<TLength> | undefined; + /** + * The **`border-bottom-color`** CSS property sets the color of an element's bottom border. It can also be set with the shorthand CSS properties `border-color` or `border-bottom`. + * + * **Syntax**: `<'border-top-color'>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-bottom-color + */ + "border-bottom-color"?: Property.BorderBottomColor | undefined; + /** + * The **`border-bottom-left-radius`** CSS property rounds the bottom-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **4** | **4** | **5** | **12** | **9** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius + */ + "border-bottom-left-radius"?: Property.BorderBottomLeftRadius<TLength> | undefined; + /** + * The **`border-bottom-right-radius`** CSS property rounds the bottom-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **4** | **4** | **5** | **12** | **9** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius + */ + "border-bottom-right-radius"?: Property.BorderBottomRightRadius<TLength> | undefined; + /** + * The **`border-bottom-style`** CSS property sets the line style of an element's bottom `border`. + * + * **Syntax**: `<line-style>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-bottom-style + */ + "border-bottom-style"?: Property.BorderBottomStyle | undefined; + /** + * The **`border-bottom-width`** CSS property sets the width of the bottom border of an element. + * + * **Syntax**: `<line-width>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-bottom-width + */ + "border-bottom-width"?: Property.BorderBottomWidth<TLength> | undefined; + /** + * The **`border-collapse`** CSS property sets whether cells inside a `<table>` have shared or separate borders. + * + * **Syntax**: `collapse | separate` + * + * **Initial value**: `separate` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1** | **1.2** | **12** | **5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-collapse + */ + "border-collapse"?: Property.BorderCollapse | undefined; + /** + * The **`border-end-end-radius`** CSS property defines a logical border radius on an element, which maps to a physical border radius that depends on the element's `writing-mode`, `direction`, and `text-orientation`. This is useful when building styles to work regardless of the text orientation and writing mode. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **89** | **66** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-end-end-radius + */ + "border-end-end-radius"?: Property.BorderEndEndRadius<TLength> | undefined; + /** + * The **`border-end-start-radius`** CSS property defines a logical border radius on an element, which maps to a physical border radius depending on the element's `writing-mode`, `direction`, and `text-orientation`. This is useful when building styles to work regardless of the text orientation and writing mode. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **89** | **66** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-end-start-radius + */ + "border-end-start-radius"?: Property.BorderEndStartRadius<TLength> | undefined; + /** + * The **`border-image-outset`** CSS property sets the distance by which an element's border image is set out from its border box. + * + * **Syntax**: `[ <length> | <number> ]{1,4}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **15** | **15** | **6** | **12** | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-image-outset + */ + "border-image-outset"?: Property.BorderImageOutset<TLength> | undefined; + /** + * The **`border-image-repeat`** CSS property defines how the edge regions and middle region of a source image are adjusted to fit the dimensions of an element's border image. The middle region can be displayed by using the keyword "fill" in the border-image-slice property. + * + * **Syntax**: `[ stretch | repeat | round | space ]{1,2}` + * + * **Initial value**: `stretch` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **15** | **15** | **6** | **12** | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-image-repeat + */ + "border-image-repeat"?: Property.BorderImageRepeat | undefined; + /** + * The **`border-image-slice`** CSS property divides the image specified by `border-image-source` into regions. These regions form the components of an element's border image. + * + * **Syntax**: `<number-percentage>{1,4} && fill?` + * + * **Initial value**: `100%` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **15** | **15** | **6** | **12** | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-image-slice + */ + "border-image-slice"?: Property.BorderImageSlice | undefined; + /** + * The **`border-image-source`** CSS property sets the source image used to create an element's border image. + * + * **Syntax**: `none | <image>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **15** | **15** | **6** | **12** | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-image-source + */ + "border-image-source"?: Property.BorderImageSource | undefined; + /** + * The **`border-image-width`** CSS property sets the width of an element's border image. + * + * **Syntax**: `[ <length-percentage> | <number> | auto ]{1,4}` + * + * **Initial value**: `1` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **15** | **13** | **6** | **12** | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-image-width + */ + "border-image-width"?: Property.BorderImageWidth<TLength> | undefined; + /** + * The **`border-inline-color`** CSS property defines the color of the logical inline borders of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color` and `border-bottom-color`, or `border-right-color` and `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>{1,2}` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-color + */ + "border-inline-color"?: Property.BorderInlineColor | undefined; + /** + * The **`border-inline-end-color`** CSS property defines the color of the logical inline-end border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color`, `border-right-color`, `border-bottom-color`, or `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-------------------------: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | | 3 _(-moz-border-end-color)_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-end-color + */ + "border-inline-end-color"?: Property.BorderInlineEndColor | undefined; + /** + * The **`border-inline-end-style`** CSS property defines the style of the logical inline end border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style`, `border-right-style`, `border-bottom-style`, or `border-left-style` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-------------------------: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | | 3 _(-moz-border-end-style)_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-end-style + */ + "border-inline-end-style"?: Property.BorderInlineEndStyle | undefined; + /** + * The **`border-inline-end-width`** CSS property defines the width of the logical inline-end border of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-width`, `border-right-width`, `border-bottom-width`, or `border-left-width` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-width'>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-------------------------: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | | 3 _(-moz-border-end-width)_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-end-width + */ + "border-inline-end-width"?: Property.BorderInlineEndWidth<TLength> | undefined; + /** + * The **`border-inline-start-color`** CSS property defines the color of the logical inline start border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color`, `border-right-color`, `border-bottom-color`, or `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :---------------------------: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | | 3 _(-moz-border-start-color)_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-start-color + */ + "border-inline-start-color"?: Property.BorderInlineStartColor | undefined; + /** + * The **`border-inline-start-style`** CSS property defines the style of the logical inline start border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style`, `border-right-style`, `border-bottom-style`, or `border-left-style` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :---------------------------: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | | 3 _(-moz-border-start-style)_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-start-style + */ + "border-inline-start-style"?: Property.BorderInlineStartStyle | undefined; + /** + * The **`border-inline-start-width`** CSS property defines the width of the logical inline-start border of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-width`, `border-right-width`, `border-bottom-width`, or `border-left-width` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-width'>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-start-width + */ + "border-inline-start-width"?: Property.BorderInlineStartWidth<TLength> | undefined; + /** + * The **`border-inline-style`** CSS property defines the style of the logical inline borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style` and `border-bottom-style`, or `border-left-style` and `border-right-style` properties depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-style + */ + "border-inline-style"?: Property.BorderInlineStyle | undefined; + /** + * The **`border-inline-width`** CSS property defines the width of the logical inline borders of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-width` and `border-bottom-width`, or `border-left-width`, and `border-right-width` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-width'>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-width + */ + "border-inline-width"?: Property.BorderInlineWidth<TLength> | undefined; + /** + * The **`border-left-color`** CSS property sets the color of an element's left border. It can also be set with the shorthand CSS properties `border-color` or `border-left`. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-left-color + */ + "border-left-color"?: Property.BorderLeftColor | undefined; + /** + * The **`border-left-style`** CSS property sets the line style of an element's left `border`. + * + * **Syntax**: `<line-style>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-left-style + */ + "border-left-style"?: Property.BorderLeftStyle | undefined; + /** + * The **`border-left-width`** CSS property sets the width of the left border of an element. + * + * **Syntax**: `<line-width>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-left-width + */ + "border-left-width"?: Property.BorderLeftWidth<TLength> | undefined; + /** + * The **`border-right-color`** CSS property sets the color of an element's right border. It can also be set with the shorthand CSS properties `border-color` or `border-right`. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-right-color + */ + "border-right-color"?: Property.BorderRightColor | undefined; + /** + * The **`border-right-style`** CSS property sets the line style of an element's right `border`. + * + * **Syntax**: `<line-style>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-right-style + */ + "border-right-style"?: Property.BorderRightStyle | undefined; + /** + * The **`border-right-width`** CSS property sets the width of the right border of an element. + * + * **Syntax**: `<line-width>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-right-width + */ + "border-right-width"?: Property.BorderRightWidth<TLength> | undefined; + /** + * The **`border-spacing`** CSS property sets the distance between the borders of adjacent cells in a `<table>`. This property applies only when `border-collapse` is `separate`. + * + * **Syntax**: `<length> <length>?` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-spacing + */ + "border-spacing"?: Property.BorderSpacing<TLength> | undefined; + /** + * The **`border-start-end-radius`** CSS property defines a logical border radius on an element, which maps to a physical border radius depending on the element's `writing-mode`, `direction`, and `text-orientation`. This is useful when building styles to work regardless of the text orientation and writing mode. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **89** | **66** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-start-end-radius + */ + "border-start-end-radius"?: Property.BorderStartEndRadius<TLength> | undefined; + /** + * The **`border-start-start-radius`** CSS property defines a logical border radius on an element, which maps to a physical border radius that depends on the element's `writing-mode`, `direction`, and `text-orientation`. This is useful when building styles to work regardless of the text orientation and writing mode. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **89** | **66** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-start-start-radius + */ + "border-start-start-radius"?: Property.BorderStartStartRadius<TLength> | undefined; + /** + * The **`border-top-color`** CSS property sets the color of an element's top border. It can also be set with the shorthand CSS properties `border-color` or `border-top`. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-top-color + */ + "border-top-color"?: Property.BorderTopColor | undefined; + /** + * The **`border-top-left-radius`** CSS property rounds the top-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **4** | **4** | **5** | **12** | **9** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-top-left-radius + */ + "border-top-left-radius"?: Property.BorderTopLeftRadius<TLength> | undefined; + /** + * The **`border-top-right-radius`** CSS property rounds the top-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **4** | **4** | **5** | **12** | **9** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-top-right-radius + */ + "border-top-right-radius"?: Property.BorderTopRightRadius<TLength> | undefined; + /** + * The **`border-top-style`** CSS property sets the line style of an element's top `border`. + * + * **Syntax**: `<line-style>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-top-style + */ + "border-top-style"?: Property.BorderTopStyle | undefined; + /** + * The **`border-top-width`** CSS property sets the width of the top border of an element. + * + * **Syntax**: `<line-width>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-top-width + */ + "border-top-width"?: Property.BorderTopWidth<TLength> | undefined; + /** + * The **`bottom`** CSS property participates in setting the vertical position of a positioned element. It has no effect on non-positioned elements. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/bottom + */ + bottom?: Property.Bottom<TLength> | undefined; + /** + * The **`box-decoration-break`** CSS property specifies how an element's fragments should be rendered when broken across multiple lines, columns, or pages. + * + * **Syntax**: `slice | clone` + * + * **Initial value**: `slice` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----------: | :-----: | :---------: | :--: | :-: | + * | **22** _-x-_ | **32** | **7** _-x-_ | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/box-decoration-break + */ + "box-decoration-break"?: Property.BoxDecorationBreak | undefined; + /** + * The **`box-shadow`** CSS property adds shadow effects around an element's frame. You can set multiple effects separated by commas. A box shadow is described by X and Y offsets relative to the element, blur and spread radius, and color. + * + * **Syntax**: `none | <shadow>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **10** | **4** | **5.1** | **12** | **9** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/box-shadow + */ + "box-shadow"?: Property.BoxShadow | undefined; + /** + * The **`box-sizing`** CSS property sets how the total width and height of an element is calculated. + * + * **Syntax**: `content-box | border-box` + * + * **Initial value**: `content-box` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **10** | **29** | **5.1** | **12** | **8** | + * | 1 _-x-_ | 1 _-x-_ | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/box-sizing + */ + "box-sizing"?: Property.BoxSizing | undefined; + /** + * The **`break-after`** CSS property sets how page, column, or region breaks should behave after a generated box. If there is no generated box, the property is ignored. + * + * **Syntax**: `auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **50** | **65** | **10** | **12** | **10** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/break-after + */ + "break-after"?: Property.BreakAfter | undefined; + /** + * The **`break-before`** CSS property sets how page, column, or region breaks should behave before a generated box. If there is no generated box, the property is ignored. + * + * **Syntax**: `auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **50** | **65** | **10** | **12** | **10** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/break-before + */ + "break-before"?: Property.BreakBefore | undefined; + /** + * The **`break-inside`** CSS property sets how page, column, or region breaks should behave inside a generated box. If there is no generated box, the property is ignored. + * + * **Syntax**: `auto | avoid | avoid-page | avoid-column | avoid-region` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **50** | **65** | **10** | **12** | **10** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/break-inside + */ + "break-inside"?: Property.BreakInside | undefined; + /** + * The **`caption-side`** CSS property puts the content of a table's `<caption>` on the specified side. The values are relative to the `writing-mode` of the table. + * + * **Syntax**: `top | bottom | block-start | block-end | inline-start | inline-end` + * + * **Initial value**: `top` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/caption-side + */ + "caption-side"?: Property.CaptionSide | undefined; + /** + * The **`caret-color`** CSS property sets the color of the **insertion caret**, the visible marker where the next character typed will be inserted. This is sometimes referred to as the **text input cursor**. The caret appears in elements such as `<input>` or those with the `contenteditable` attribute. The caret is typically a thin vertical line that flashes to help make it more noticeable. By default, it is black, but its color can be altered with this property. + * + * **Syntax**: `auto | <color>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **53** | **11.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/caret-color + */ + "caret-color"?: Property.CaretColor | undefined; + /** + * **Syntax**: `auto | bar | block | underscore` + * + * **Initial value**: `auto` + */ + "caret-shape"?: Property.CaretShape | undefined; + /** + * The **`clear`** CSS property sets whether an element must be moved below (cleared) floating elements that precede it. The `clear` property applies to floating and non-floating elements. + * + * **Syntax**: `none | left | right | both | inline-start | inline-end` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/clear + */ + clear?: Property.Clear | undefined; + /** + * The **`clip-path`** CSS property creates a clipping region that sets what part of an element should be shown. Parts that are inside the region are shown, while those outside are hidden. + * + * **Syntax**: `<clip-source> | [ <basic-shape> || <geometry-box> ] | none` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **55** | **3.5** | **9.1** | **79** | **10** | + * | 23 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/clip-path + */ + "clip-path"?: Property.ClipPath | undefined; + /** + * The **`color`** CSS property sets the foreground color value of an element's text and text decorations, and sets the `currentcolor` value. `currentcolor` may be used as an indirect value on _other_ properties and is the default for other color properties, such as `border-color`. + * + * **Syntax**: `<color>` + * + * **Initial value**: `canvastext` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/color + */ + color?: Property.Color | undefined; + /** + * The **`print-color-adjust`** CSS property sets what, if anything, the user agent may do to optimize the appearance of the element on the output device. By default, the browser is allowed to make any adjustments to the element's appearance it determines to be necessary and prudent given the type and capabilities of the output device. + * + * **Syntax**: `economy | exact` + * + * **Initial value**: `economy` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----------: | :-----------------: | :------: | :----------: | :-: | + * | **17** _-x-_ | **97** | **15.4** | **79** _-x-_ | No | + * | | 48 _(color-adjust)_ | 6 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/print-color-adjust + */ + "color-adjust"?: Property.PrintColorAdjust | undefined; + /** + * The **`color-scheme`** CSS property allows an element to indicate which color schemes it can comfortably be rendered in. + * + * **Syntax**: `normal | [ light | dark | <custom-ident> ]+ && only?` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **81** | **96** | **13** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/color-scheme + */ + "color-scheme"?: Property.ColorScheme | undefined; + /** + * The **`column-count`** CSS property breaks an element's content into the specified number of columns. + * + * **Syntax**: `<integer> | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **50** | **52** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-count + */ + "column-count"?: Property.ColumnCount | undefined; + /** + * The **`column-fill`** CSS property controls how an element's contents are balanced when broken into columns. + * + * **Syntax**: `auto | balance | balance-all` + * + * **Initial value**: `balance` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :----: | + * | **50** | **52** | **9** | **12** | **10** | + * | | | 8 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-fill + */ + "column-fill"?: Property.ColumnFill | undefined; + /** + * The **`column-gap`** CSS property sets the size of the gap (gutter) between an element's columns. + * + * **Syntax**: `normal | <length-percentage>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **1** | **1.5** | **3** | **12** | **10** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-gap + */ + "column-gap"?: Property.ColumnGap<TLength> | undefined; + /** + * The **`column-rule-color`** CSS property sets the color of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **50** | **52** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-rule-color + */ + "column-rule-color"?: Property.ColumnRuleColor | undefined; + /** + * The **`column-rule-style`** CSS property sets the style of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'border-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **50** | **52** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-rule-style + */ + "column-rule-style"?: Property.ColumnRuleStyle | undefined; + /** + * The **`column-rule-width`** CSS property sets the width of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'border-width'>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **50** | **52** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-rule-width + */ + "column-rule-width"?: Property.ColumnRuleWidth<TLength> | undefined; + /** + * The **`column-span`** CSS property makes it possible for an element to span across all columns when its value is set to `all`. + * + * **Syntax**: `none | all` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :----: | :----: | + * | **50** | **71** | **9** | **12** | **10** | + * | 6 _-x-_ | | 5.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-span + */ + "column-span"?: Property.ColumnSpan | undefined; + /** + * The **`column-width`** CSS property sets the ideal column width in a multi-column layout. The container will have as many columns as can fit without any of them having a width less than the `column-width` value. If the width of the container is narrower than the specified value, the single column's width will be smaller than the declared column width. + * + * **Syntax**: `<length> | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **50** | **50** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-width + */ + "column-width"?: Property.ColumnWidth<TLength> | undefined; + /** + * The **`contain`** CSS property indicates that an element and its contents are, as much as possible, independent from the rest of the document tree. Containment enables isolating a subsection of the DOM, providing performance benefits by limiting calculations of layout, style, paint, size, or any combination to a DOM subtree rather than the entire page. Containment can also be used to scope CSS counters and quotes. + * + * **Syntax**: `none | strict | content | [ [ size || inline-size ] || layout || style || paint ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **52** | **69** | **15.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/contain + */ + contain?: Property.Contain | undefined; + /** + * The **`contain-intrinsic-block-size`** CSS logical property defines the block size of an element that a browser can use for layout when the element is subject to size containment. + * + * **Syntax**: `auto? [ none | <length> ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **95** | **107** | **17** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-contain-intrinsic-block-size + */ + "contain-intrinsic-block-size"?: Property.ContainIntrinsicBlockSize<TLength> | undefined; + /** + * The **`contain-intrinsic-length`** CSS property sets the height of an element that a browser can use for layout when the element is subject to size containment. + * + * **Syntax**: `auto? [ none | <length> ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **95** | **107** | **17** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-height + */ + "contain-intrinsic-height"?: Property.ContainIntrinsicHeight<TLength> | undefined; + /** + * The **`contain-intrinsic-inline-size`** CSS logical property defines the inline-size of an element that a browser can use for layout when the element is subject to size containment. + * + * **Syntax**: `auto? [ none | <length> ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **95** | **107** | **17** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-contain-intrinsic-inline-size + */ + "contain-intrinsic-inline-size"?: Property.ContainIntrinsicInlineSize<TLength> | undefined; + /** + * The **`contain-intrinsic-width`** CSS property sets the width of an element that a browser will use for layout when the element is subject to size containment. + * + * **Syntax**: `auto? [ none | <length> ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **95** | **107** | **17** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-width + */ + "contain-intrinsic-width"?: Property.ContainIntrinsicWidth<TLength> | undefined; + /** + * The **container-name** CSS property specifies a list of query container names used by the @container at-rule in a container query. A container query will apply styles to elements based on the size of the nearest ancestor with a containment context. When a containment context is given a name, it can be specifically targeted using the `@container` at-rule instead of the nearest ancestor with containment. + * + * **Syntax**: `none | <custom-ident>+` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **105** | **110** | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/container-name + */ + "container-name"?: Property.ContainerName | undefined; + /** + * The **container-type** CSS property is used to define the type of containment used in a container query. + * + * **Syntax**: `normal | size | inline-size` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **105** | **110** | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/container-type + */ + "container-type"?: Property.ContainerType | undefined; + /** + * The **`content`** CSS property replaces an element with a generated value. Objects inserted using the `content` property are **anonymous replaced elements**. + * + * **Syntax**: `normal | none | [ <content-replacement> | <content-list> ] [/ [ <string> | <counter> ]+ ]?` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/content + */ + content?: Property.Content | undefined; + /** + * The **`content-visibility`** CSS property controls whether or not an element renders its contents at all, along with forcing a strong set of containments, allowing user agents to potentially omit large swathes of layout and rendering work until it becomes needed. It enables the user agent to skip an element's rendering work (including layout and painting) until it is needed — which makes the initial page load much faster. + * + * **Syntax**: `visible | auto | hidden` + * + * **Initial value**: `visible` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :---------: | :----: | :--: | :-: | + * | **85** | **preview** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/content-visibility + */ + "content-visibility"?: Property.ContentVisibility | undefined; + /** + * The **`counter-increment`** CSS property increases or decreases the value of a CSS counter by a given value. + * + * **Syntax**: `[ <counter-name> <integer>? ]+ | none` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **2** | **1** | **3** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/counter-increment + */ + "counter-increment"?: Property.CounterIncrement | undefined; + /** + * The **`counter-reset`** CSS property resets a CSS counter to a given value. This property will create a new counter or reversed counter with the given name on the specified element. + * + * **Syntax**: `[ <counter-name> <integer>? | <reversed-counter-name> <integer>? ]+ | none` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **2** | **1** | **3** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/counter-reset + */ + "counter-reset"?: Property.CounterReset | undefined; + /** + * The **`counter-set`** CSS property sets a CSS counter to a given value. It manipulates the value of existing counters, and will only create new counters if there isn't already a counter of the given name on the element. + * + * **Syntax**: `[ <counter-name> <integer>? ]+ | none` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **85** | **68** | **17.2** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/counter-set + */ + "counter-set"?: Property.CounterSet | undefined; + /** + * The **`cursor`** CSS property sets the mouse cursor, if any, to show when the mouse pointer is over an element. + * + * **Syntax**: `[ [ <url> [ <x> <y> ]? , ]* [ auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | all-scroll | zoom-in | zoom-out | grab | grabbing ] ]` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1** | **1.2** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/cursor + */ + cursor?: Property.Cursor | undefined; + /** + * The **`direction`** CSS property sets the direction of text, table columns, and horizontal overflow. Use `rtl` for languages written from right to left (like Hebrew or Arabic), and `ltr` for those written from left to right (like English and most other languages). + * + * **Syntax**: `ltr | rtl` + * + * **Initial value**: `ltr` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **2** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/direction + */ + direction?: Property.Direction | undefined; + /** + * The **`display`** CSS property sets whether an element is treated as a block or inline element and the layout used for its children, such as flow layout, grid or flex. + * + * **Syntax**: `[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>` + * + * **Initial value**: `inline` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/display + */ + display?: Property.Display | undefined; + /** + * The **`empty-cells`** CSS property sets whether borders and backgrounds appear around `<table>` cells that have no visible content. + * + * **Syntax**: `show | hide` + * + * **Initial value**: `show` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1** | **1.2** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/empty-cells + */ + "empty-cells"?: Property.EmptyCells | undefined; + /** + * The **`filter`** CSS property applies graphical effects like blur or color shift to an element. Filters are commonly used to adjust the rendering of images, backgrounds, and borders. + * + * **Syntax**: `none | <filter-function-list>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :-: | + * | **53** | **35** | **9.1** | **12** | No | + * | 18 _-x-_ | | 6 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/filter + */ + filter?: Property.Filter | undefined; + /** + * The **`flex-basis`** CSS property sets the initial main size of a flex item. It sets the size of the content box unless otherwise set with `box-sizing`. + * + * **Syntax**: `content | <'width'>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **22** | **9** | **12** | **11** | + * | 22 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/flex-basis + */ + "flex-basis"?: Property.FlexBasis<TLength> | undefined; + /** + * The **`flex-direction`** CSS property sets how flex items are placed in the flex container defining the main axis and the direction (normal or reversed). + * + * **Syntax**: `row | row-reverse | column | column-reverse` + * + * **Initial value**: `row` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :------: | :-----: | :----: | :------: | + * | **29** | **81** | **9** | **12** | **11** | + * | 21 _-x-_ | 49 _-x-_ | 7 _-x-_ | | 10 _-x-_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/flex-direction + */ + "flex-direction"?: Property.FlexDirection | undefined; + /** + * The **`flex-grow`** CSS property sets the flex grow factor of a flex item's main size. + * + * **Syntax**: `<number>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----------------------: | + * | **29** | **20** | **9** | **12** | **11** | + * | 22 _-x-_ | | 7 _-x-_ | | 10 _(-ms-flex-positive)_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/flex-grow + */ + "flex-grow"?: Property.FlexGrow | undefined; + /** + * The **`flex-shrink`** CSS property sets the flex shrink factor of a flex item. If the size of all flex items is larger than the flex container, items shrink to fit according to `flex-shrink`. + * + * **Syntax**: `<number>` + * + * **Initial value**: `1` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **20** | **9** | **12** | **10** | + * | 22 _-x-_ | | 8 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/flex-shrink + */ + "flex-shrink"?: Property.FlexShrink | undefined; + /** + * The **`flex-wrap`** CSS property sets whether flex items are forced onto one line or can wrap onto multiple lines. If wrapping is allowed, it sets the direction that lines are stacked. + * + * **Syntax**: `nowrap | wrap | wrap-reverse` + * + * **Initial value**: `nowrap` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **28** | **9** | **12** | **11** | + * | 21 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/flex-wrap + */ + "flex-wrap"?: Property.FlexWrap | undefined; + /** + * The **`float`** CSS property places an element on the left or right side of its container, allowing text and inline elements to wrap around it. The element is removed from the normal flow of the page, though still remaining a part of the flow (in contrast to absolute positioning). + * + * **Syntax**: `left | right | none | inline-start | inline-end` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/float + */ + float?: Property.Float | undefined; + /** + * The **`font-family`** CSS property specifies a prioritized list of one or more font family names and/or generic family names for the selected element. + * + * **Syntax**: `[ <family-name> | <generic-family> ]#` + * + * **Initial value**: depends on user agent + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-family + */ + "font-family"?: Property.FontFamily | undefined; + /** + * The **`font-feature-settings`** CSS property controls advanced typographic features in OpenType fonts. + * + * **Syntax**: `normal | <feature-tag-value>#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :------: | :-----: | :----: | :----: | + * | **48** | **34** | **9.1** | **15** | **10** | + * | 16 _-x-_ | 15 _-x-_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-feature-settings + */ + "font-feature-settings"?: Property.FontFeatureSettings | undefined; + /** + * The **`font-kerning`** CSS property sets the use of the kerning information stored in a font. + * + * **Syntax**: `auto | normal | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :--: | :-: | + * | **33** | **32** | **9** | n/a | No | + * | | | 6 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-kerning + */ + "font-kerning"?: Property.FontKerning | undefined; + /** + * The **`font-language-override`** CSS property controls the use of language-specific glyphs in a typeface. + * + * **Syntax**: `normal | <string>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | **34** | No | n/a | No | + * | | 4 _-x-_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-language-override + */ + "font-language-override"?: Property.FontLanguageOverride | undefined; + /** + * The **`font-optical-sizing`** CSS property sets whether text rendering is optimized for viewing at different sizes. + * + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **79** | **62** | **11** | **17** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-optical-sizing + */ + "font-optical-sizing"?: Property.FontOpticalSizing | undefined; + /** + * **Syntax**: `normal | light | dark | <palette-identifier>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **101** | **107** | **15.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-palette + */ + "font-palette"?: Property.FontPalette | undefined; + /** + * The **`font-size`** CSS property sets the size of the font. Changing the font size also updates the sizes of the font size-relative `<length>` units, such as `em`, `ex`, and so forth. + * + * **Syntax**: `<absolute-size> | <relative-size> | <length-percentage>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-size + */ + "font-size"?: Property.FontSize<TLength> | undefined; + /** + * The **`font-size-adjust`** CSS property sets the size of lower-case letters relative to the current font size (which defines the size of upper-case letters). + * + * **Syntax**: `none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number> ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | No | **3** | **16.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-size-adjust + */ + "font-size-adjust"?: Property.FontSizeAdjust | undefined; + /** + * The **`font-smooth`** CSS property controls the application of anti-aliasing when fonts are rendered. + * + * **Syntax**: `auto | never | always | <absolute-size> | <length>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------------------------------: | :--------------------------------: | :------------------------------: | :--: | :-: | + * | **5** _(-webkit-font-smoothing)_ | **25** _(-moz-osx-font-smoothing)_ | **4** _(-webkit-font-smoothing)_ | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-smooth + */ + "font-smooth"?: Property.FontSmooth<TLength> | undefined; + /** + * The **`font-stretch`** CSS property selects a normal, condensed, or expanded face from a font. + * + * **Syntax**: `<font-stretch-absolute>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **60** | **9** | **11** | **12** | **9** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-stretch + */ + "font-stretch"?: Property.FontStretch | undefined; + /** + * The **`font-style`** CSS property sets whether a font should be styled with a normal, italic, or oblique face from its `font-family`. + * + * **Syntax**: `normal | italic | oblique <angle>?` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-style + */ + "font-style"?: Property.FontStyle | undefined; + /** + * The **`font-synthesis`** CSS property controls which missing typefaces, bold, italic, or small-caps, may be synthesized by the browser. + * + * **Syntax**: `none | [ weight || style || small-caps || position]` + * + * **Initial value**: `weight style small-caps position ` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **97** | **34** | **9** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-synthesis + */ + "font-synthesis"?: Property.FontSynthesis | undefined; + /** + * The **`font-synthesis-position`** CSS property lets you specify whether or not a browser may synthesize the subscript and superscript "position" typefaces when they are missing in a font family, while using `font-variant-position` to set the positions. + * + * **Syntax**: `auto | none` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | **118** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-synthesis-position + */ + "font-synthesis-position"?: Property.FontSynthesisPosition | undefined; + /** + * The **`font-synthesis-small-caps`** CSS property lets you specify whether or not the browser may synthesize small-caps typeface when it is missing in a font family. Small-caps glyphs typically use the form of uppercase letters but are reduced to the size of lowercase letters. + * + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **97** | **111** | **16.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-synthesis-small-caps + */ + "font-synthesis-small-caps"?: Property.FontSynthesisSmallCaps | undefined; + /** + * The **`font-synthesis-style`** CSS property lets you specify whether or not the browser may synthesize the oblique typeface when it is missing in a font family. + * + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **97** | **111** | **16.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-synthesis-style + */ + "font-synthesis-style"?: Property.FontSynthesisStyle | undefined; + /** + * The **`font-synthesis-weight`** CSS property lets you specify whether or not the browser may synthesize the bold typeface when it is missing in a font family. + * + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **97** | **111** | **16.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-synthesis-weight + */ + "font-synthesis-weight"?: Property.FontSynthesisWeight | undefined; + /** + * The **`font-variant`** CSS shorthand property allows you to set all the font variants for a font. + * + * **Syntax**: `normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> || stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero || <east-asian-variant-values> || <east-asian-width-values> || ruby ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant + */ + "font-variant"?: Property.FontVariant | undefined; + /** + * The **`font-variant-alternates`** CSS property controls the usage of alternate glyphs. These alternate glyphs may be referenced by alternative names defined in `@font-feature-values`. + * + * **Syntax**: `normal | [ stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :--: | :-: | + * | **111** | **34** | **9.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant-alternates + */ + "font-variant-alternates"?: Property.FontVariantAlternates | undefined; + /** + * The **`font-variant-caps`** CSS property controls the use of alternate glyphs for capital letters. + * + * **Syntax**: `normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :--: | :-: | + * | **52** | **34** | **9.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant-caps + */ + "font-variant-caps"?: Property.FontVariantCaps | undefined; + /** + * The **`font-variant-east-asian`** CSS property controls the use of alternate glyphs for East Asian scripts, like Japanese and Chinese. + * + * **Syntax**: `normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :--: | :-: | + * | **63** | **34** | **9.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant-east-asian + */ + "font-variant-east-asian"?: Property.FontVariantEastAsian | undefined; + /** + * **Syntax**: `normal | text | emoji | unicode` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant-emoji + */ + "font-variant-emoji"?: Property.FontVariantEmoji | undefined; + /** + * The **`font-variant-ligatures`** CSS property controls which ligatures and contextual forms are used in textual content of the elements it applies to. This leads to more harmonized forms in the resulting text. + * + * **Syntax**: `normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :--: | :-: | + * | **34** | **34** | **9.1** | n/a | No | + * | 31 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant-ligatures + */ + "font-variant-ligatures"?: Property.FontVariantLigatures | undefined; + /** + * The **`font-variant-numeric`** CSS property controls the usage of alternate glyphs for numbers, fractions, and ordinal markers. + * + * **Syntax**: `normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :--: | :-: | + * | **52** | **34** | **9.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant-numeric + */ + "font-variant-numeric"?: Property.FontVariantNumeric | undefined; + /** + * The **`font-variant-position`** CSS property controls the use of alternate, smaller glyphs that are positioned as superscript or subscript. + * + * **Syntax**: `normal | sub | super` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :--: | :-: | + * | **117** | **34** | **9.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variant-position + */ + "font-variant-position"?: Property.FontVariantPosition | undefined; + /** + * The **`font-variation-settings`** CSS property provides low-level control over variable font characteristics, by specifying the four letter axis names of the characteristics you want to vary, along with their values. + * + * **Syntax**: `normal | [ <string> <number> ]#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **62** | **62** | **11** | **17** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-variation-settings + */ + "font-variation-settings"?: Property.FontVariationSettings | undefined; + /** + * The **`font-weight`** CSS property sets the weight (or boldness) of the font. The weights available depend on the `font-family` that is currently set. + * + * **Syntax**: `<font-weight-absolute> | bolder | lighter` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **2** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font-weight + */ + "font-weight"?: Property.FontWeight | undefined; + /** + * The **`forced-color-adjust`** CSS property allows authors to opt certain elements out of forced colors mode. This then restores the control of those values to CSS. + * + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :-----------------------------: | :---------------------------------: | + * | **89** | **113** | No | **79** | **10** _(-ms-high-contrast-adjust)_ | + * | | | | 12 _(-ms-high-contrast-adjust)_ | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/forced-color-adjust + */ + "forced-color-adjust"?: Property.ForcedColorAdjust | undefined; + /** + * The **`grid-auto-columns`** CSS property specifies the size of an implicitly-created grid column track or pattern of tracks. + * + * **Syntax**: `<track-size>+` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-------------------------: | + * | **57** | **70** | **10.1** | **16** | **10** _(-ms-grid-columns)_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-auto-columns + */ + "grid-auto-columns"?: Property.GridAutoColumns<TLength> | undefined; + /** + * The **`grid-auto-flow`** CSS property controls how the auto-placement algorithm works, specifying exactly how auto-placed items get flowed into the grid. + * + * **Syntax**: `[ row | column ] || dense` + * + * **Initial value**: `row` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-auto-flow + */ + "grid-auto-flow"?: Property.GridAutoFlow | undefined; + /** + * The **`grid-auto-rows`** CSS property specifies the size of an implicitly-created grid row track or pattern of tracks. + * + * **Syntax**: `<track-size>+` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :----------------------: | + * | **57** | **70** | **10.1** | **16** | **10** _(-ms-grid-rows)_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-auto-rows + */ + "grid-auto-rows"?: Property.GridAutoRows<TLength> | undefined; + /** + * The **`grid-column-end`** CSS property specifies a grid item's end position within the grid column by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the block-end edge of its grid area. + * + * **Syntax**: `<grid-line>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-column-end + */ + "grid-column-end"?: Property.GridColumnEnd | undefined; + /** + * The **`grid-column-start`** CSS property specifies a grid item's start position within the grid column by contributing a line, a span, or nothing (automatic) to its grid placement. This start position defines the block-start edge of the grid area. + * + * **Syntax**: `<grid-line>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-column-start + */ + "grid-column-start"?: Property.GridColumnStart | undefined; + /** + * The **`grid-row-end`** CSS property specifies a grid item's end position within the grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-end edge of its grid area. + * + * **Syntax**: `<grid-line>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-row-end + */ + "grid-row-end"?: Property.GridRowEnd | undefined; + /** + * The **`grid-row-start`** CSS property specifies a grid item's start position within the grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start edge of its grid area. + * + * **Syntax**: `<grid-line>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-row-start + */ + "grid-row-start"?: Property.GridRowStart | undefined; + /** + * The **`grid-template-areas`** CSS property specifies named grid areas, establishing the cells in the grid and assigning them names. + * + * **Syntax**: `none | <string>+` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-template-areas + */ + "grid-template-areas"?: Property.GridTemplateAreas | undefined; + /** + * The **`grid-template-columns`** CSS property defines the line names and track sizing functions of the grid columns. + * + * **Syntax**: `none | <track-list> | <auto-track-list> | subgrid <line-name-list>?` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-------------------------: | + * | **57** | **52** | **10.1** | **16** | **10** _(-ms-grid-columns)_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-template-columns + */ + "grid-template-columns"?: Property.GridTemplateColumns<TLength> | undefined; + /** + * The **`grid-template-rows`** CSS property defines the line names and track sizing functions of the grid rows. + * + * **Syntax**: `none | <track-list> | <auto-track-list> | subgrid <line-name-list>?` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :----------------------: | + * | **57** | **52** | **10.1** | **16** | **10** _(-ms-grid-rows)_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-template-rows + */ + "grid-template-rows"?: Property.GridTemplateRows<TLength> | undefined; + /** + * The **`hanging-punctuation`** CSS property specifies whether a punctuation mark should hang at the start or end of a line of text. Hanging punctuation may be placed outside the line box. + * + * **Syntax**: `none | [ first || [ force-end | allow-end ] || last ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | No | **10** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/hanging-punctuation + */ + "hanging-punctuation"?: Property.HangingPunctuation | undefined; + /** + * The **`height`** CSS property specifies the height of an element. By default, the property defines the height of the content area. If `box-sizing` is set to `border-box`, however, it instead determines the height of the border area. + * + * **Syntax**: `auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/height + */ + height?: Property.Height<TLength> | undefined; + /** + * The **`hyphenate-character`** CSS property sets the character (or string) used at the end of a line before a hyphenation break. + * + * **Syntax**: `auto | <string>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :--: | :-: | + * | **106** | **98** | **17** | n/a | No | + * | 6 _-x-_ | | 5.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/hyphenate-character + */ + "hyphenate-character"?: Property.HyphenateCharacter | undefined; + /** + * The **`hyphenate-limit-chars`** CSS property specifies the minimum word length to allow hyphenation of words as well as the the minimum number of characters before and after the hyphen. + * + * **Syntax**: `[ auto | <integer> ]{1,3}` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **109** | No | No | n/a | No | + */ + "hyphenate-limit-chars"?: Property.HyphenateLimitChars | undefined; + /** + * The **`hyphens`** CSS property specifies how words should be hyphenated when text wraps across multiple lines. It can prevent hyphenation entirely, hyphenate at manually-specified points within the text, or let the browser automatically insert hyphens where appropriate. + * + * **Syntax**: `none | manual | auto` + * + * **Initial value**: `manual` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-------: | :----: | :----------: | + * | **55** | **43** | **17** | **79** | **10** _-x-_ | + * | 13 _-x-_ | 6 _-x-_ | 5.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/hyphens + */ + hyphens?: Property.Hyphens | undefined; + /** + * The **`image-orientation`** CSS property specifies a layout-independent correction to the orientation of an image. + * + * **Syntax**: `from-image | <angle> | [ <angle>? flip ]` + * + * **Initial value**: `from-image` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **81** | **26** | **13.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/image-orientation + */ + "image-orientation"?: Property.ImageOrientation | undefined; + /** + * The **`image-rendering`** CSS property sets an image scaling algorithm. The property applies to an element itself, to any images set in its other properties, and to its descendants. + * + * **Syntax**: `auto | crisp-edges | pixelated` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **13** | **3.6** | **6** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/image-rendering + */ + "image-rendering"?: Property.ImageRendering | undefined; + /** + * **Syntax**: `[ from-image || <resolution> ] && snap?` + * + * **Initial value**: `1dppx` + */ + "image-resolution"?: Property.ImageResolution | undefined; + /** + * The `initial-letter` CSS property sets styling for dropped, raised, and sunken initial letters. + * + * **Syntax**: `normal | [ <number> <integer>? ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :---------: | :--: | :-: | + * | **110** | No | **9** _-x-_ | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/initial-letter + */ + "initial-letter"?: Property.InitialLetter | undefined; + /** + * The **`inline-size`** CSS property defines the horizontal or vertical size of an element's block, depending on its writing mode. It corresponds to either the `width` or the `height` property, depending on the value of `writing-mode`. + * + * **Syntax**: `<'width'>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inline-size + */ + "inline-size"?: Property.InlineSize<TLength> | undefined; + /** + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + */ + "input-security"?: Property.InputSecurity | undefined; + /** + * The **`inset-block-end`** CSS property defines the logical block end offset of an element, which maps to a physical inset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **63** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inset-block-end + */ + "inset-block-end"?: Property.InsetBlockEnd<TLength> | undefined; + /** + * The **`inset-block-start`** CSS property defines the logical block start offset of an element, which maps to a physical inset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **63** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inset-block-start + */ + "inset-block-start"?: Property.InsetBlockStart<TLength> | undefined; + /** + * The **`inset-inline-end`** CSS property defines the logical inline end inset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **63** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inset-inline-end + */ + "inset-inline-end"?: Property.InsetInlineEnd<TLength> | undefined; + /** + * The **`inset-inline-start`** CSS property defines the logical inline start inset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **63** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inset-inline-start + */ + "inset-inline-start"?: Property.InsetInlineStart<TLength> | undefined; + /** + * The **`isolation`** CSS property determines whether an element must create a new stacking context. + * + * **Syntax**: `auto | isolate` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **41** | **36** | **8** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/isolation + */ + isolation?: Property.Isolation | undefined; + /** + * The CSS **`justify-content`** property defines how the browser distributes space between and around content items along the main-axis of a flex container, and the inline axis of a grid container. + * + * **Syntax**: `normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **20** | **9** | **12** | **11** | + * | 21 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/justify-content + */ + "justify-content"?: Property.JustifyContent | undefined; + /** + * The CSS **`justify-items`** property defines the default `justify-self` for all items of the box, giving them all a default way of justifying each box along the appropriate axis. + * + * **Syntax**: `normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ]` + * + * **Initial value**: `legacy` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **52** | **20** | **9** | **12** | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/justify-items + */ + "justify-items"?: Property.JustifyItems | undefined; + /** + * The CSS **`justify-self`** property sets the way a box is justified inside its alignment container along the appropriate axis. + * + * **Syntax**: `auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ]` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :----: | + * | **57** | **45** | **10.1** | **16** | **10** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/justify-self + */ + "justify-self"?: Property.JustifySelf | undefined; + /** + * The **`justify-tracks`** CSS property sets the alignment in the masonry axis for grid containers that have masonry in their inline axis. + * + * **Syntax**: `[ normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ] ]#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/justify-tracks + */ + "justify-tracks"?: Property.JustifyTracks | undefined; + /** + * The **`left`** CSS property participates in specifying the horizontal position of a positioned element. It has no effect on non-positioned elements. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/left + */ + left?: Property.Left<TLength> | undefined; + /** + * The **`letter-spacing`** CSS property sets the horizontal spacing behavior between text characters. This value is added to the natural spacing between characters while rendering the text. Positive values of `letter-spacing` causes characters to spread farther apart, while negative values of `letter-spacing` bring characters closer together. + * + * **Syntax**: `normal | <length>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/letter-spacing + */ + "letter-spacing"?: Property.LetterSpacing<TLength> | undefined; + /** + * The **`line-break`** CSS property sets how to break lines of Chinese, Japanese, or Korean (CJK) text when working with punctuation and symbols. + * + * **Syntax**: `auto | loose | normal | strict | anywhere` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :-----: | + * | **58** | **69** | **11** | **14** | **5.5** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/line-break + */ + "line-break"?: Property.LineBreak | undefined; + /** + * The **`line-height`** CSS property sets the height of a line box. It's commonly used to set the distance between lines of text. On block-level elements, it specifies the minimum height of line boxes within the element. On non-replaced inline elements, it specifies the height that is used to calculate line box height. + * + * **Syntax**: `normal | <number> | <length> | <percentage>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/line-height + */ + "line-height"?: Property.LineHeight<TLength> | undefined; + /** + * The **`line-height-step`** CSS property sets the step unit for line box heights. When the property is set, line box heights are rounded up to the closest multiple of the unit. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | n/a | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/line-height-step + */ + "line-height-step"?: Property.LineHeightStep<TLength> | undefined; + /** + * The **`list-style-image`** CSS property sets an image to be used as the list item marker. + * + * **Syntax**: `<image> | none` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/list-style-image + */ + "list-style-image"?: Property.ListStyleImage | undefined; + /** + * The **`list-style-position`** CSS property sets the position of the `::marker` relative to a list item. + * + * **Syntax**: `inside | outside` + * + * **Initial value**: `outside` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/list-style-position + */ + "list-style-position"?: Property.ListStylePosition | undefined; + /** + * The **`list-style-type`** CSS property sets the marker (such as a disc, character, or custom counter style) of a list item element. + * + * **Syntax**: `<counter-style> | <string> | none` + * + * **Initial value**: `disc` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/list-style-type + */ + "list-style-type"?: Property.ListStyleType | undefined; + /** + * The **`margin-block-end`** CSS property defines the logical block end margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-block-end + */ + "margin-block-end"?: Property.MarginBlockEnd<TLength> | undefined; + /** + * The **`margin-block-start`** CSS property defines the logical block start margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-block-start + */ + "margin-block-start"?: Property.MarginBlockStart<TLength> | undefined; + /** + * The **`margin-bottom`** CSS property sets the margin area on the bottom of an element. A positive value places it farther from its neighbors, while a negative value places it closer. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-bottom + */ + "margin-bottom"?: Property.MarginBottom<TLength> | undefined; + /** + * The **`margin-inline-end`** CSS property defines the logical inline end margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. In other words, it corresponds to the `margin-top`, `margin-right`, `margin-bottom` or `margin-left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----------------------: | :-------------------: | :----------------------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | 2 _(-webkit-margin-end)_ | 3 _(-moz-margin-end)_ | 3 _(-webkit-margin-end)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-inline-end + */ + "margin-inline-end"?: Property.MarginInlineEnd<TLength> | undefined; + /** + * The **`margin-inline-start`** CSS property defines the logical inline start margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. It corresponds to the `margin-top`, `margin-right`, `margin-bottom`, or `margin-left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------------------------: | :---------------------: | :------------------------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | 2 _(-webkit-margin-start)_ | 3 _(-moz-margin-start)_ | 3 _(-webkit-margin-start)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-inline-start + */ + "margin-inline-start"?: Property.MarginInlineStart<TLength> | undefined; + /** + * The **`margin-left`** CSS property sets the margin area on the left side of an element. A positive value places it farther from its neighbors, while a negative value places it closer. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-left + */ + "margin-left"?: Property.MarginLeft<TLength> | undefined; + /** + * The **`margin-right`** CSS property sets the margin area on the right side of an element. A positive value places it farther from its neighbors, while a negative value places it closer. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-right + */ + "margin-right"?: Property.MarginRight<TLength> | undefined; + /** + * The **`margin-top`** CSS property sets the margin area on the top of an element. A positive value places it farther from its neighbors, while a negative value places it closer. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-top + */ + "margin-top"?: Property.MarginTop<TLength> | undefined; + /** + * The `margin-trim` property allows the container to trim the margins of its children where they adjoin the container's edges. + * + * **Syntax**: `none | in-flow | all` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | No | No | **16.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-trim + */ + "margin-trim"?: Property.MarginTrim | undefined; + /** + * The **`mask-border-mode`** CSS property specifies the blending mode used in a mask border. + * + * **Syntax**: `luminance | alpha` + * + * **Initial value**: `alpha` + */ + "mask-border-mode"?: Property.MaskBorderMode | undefined; + /** + * The **`mask-border-outset`** CSS property specifies the distance by which an element's mask border is set out from its border box. + * + * **Syntax**: `[ <length> | <number> ]{1,4}` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-------------------------------------: | :-----: | :-----------------------------------: | :--: | :-: | + * | **1** _(-webkit-mask-box-image-outset)_ | No | **17.2** | n/a | No | + * | | | 3.1 _(-webkit-mask-box-image-outset)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-border-outset + */ + "mask-border-outset"?: Property.MaskBorderOutset<TLength> | undefined; + /** + * The **`mask-border-repeat`** CSS property sets how the edge regions of a source image are adjusted to fit the dimensions of an element's mask border. + * + * **Syntax**: `[ stretch | repeat | round | space ]{1,2}` + * + * **Initial value**: `stretch` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-------------------------------------: | :-----: | :-----------------------------------: | :--: | :-: | + * | **1** _(-webkit-mask-box-image-repeat)_ | No | **17.2** | n/a | No | + * | | | 3.1 _(-webkit-mask-box-image-repeat)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-border-repeat + */ + "mask-border-repeat"?: Property.MaskBorderRepeat | undefined; + /** + * The **`mask-border-slice`** CSS property divides the image set by `mask-border-source` into regions. These regions are used to form the components of an element's mask border. + * + * **Syntax**: `<number-percentage>{1,4} fill?` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------------------------------------: | :-----: | :----------------------------------: | :--: | :-: | + * | **1** _(-webkit-mask-box-image-slice)_ | No | **17.2** | n/a | No | + * | | | 3.1 _(-webkit-mask-box-image-slice)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-border-slice + */ + "mask-border-slice"?: Property.MaskBorderSlice | undefined; + /** + * The **`mask-border-source`** CSS property sets the source image used to create an element's mask border. + * + * **Syntax**: `none | <image>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-------------------------------------: | :-----: | :-----------------------------------: | :--: | :-: | + * | **1** _(-webkit-mask-box-image-source)_ | No | **17.2** | n/a | No | + * | | | 3.1 _(-webkit-mask-box-image-source)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-border-source + */ + "mask-border-source"?: Property.MaskBorderSource | undefined; + /** + * The **`mask-border-width`** CSS property sets the width of an element's mask border. + * + * **Syntax**: `[ <length-percentage> | <number> | auto ]{1,4}` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------------------------------------: | :-----: | :----------------------------------: | :--: | :-: | + * | **1** _(-webkit-mask-box-image-width)_ | No | **17.2** | n/a | No | + * | | | 3.1 _(-webkit-mask-box-image-width)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-border-width + */ + "mask-border-width"?: Property.MaskBorderWidth<TLength> | undefined; + /** + * The **`mask-clip`** CSS property determines the area which is affected by a mask. The painted content of an element must be restricted to this area. + * + * **Syntax**: `[ <geometry-box> | no-clip ]#` + * + * **Initial value**: `border-box` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **120** | **53** | **15.4** | n/a | No | + * | 1 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-clip + */ + "mask-clip"?: Property.MaskClip | undefined; + /** + * The **`mask-composite`** CSS property represents a compositing operation used on the current mask layer with the mask layers below it. + * + * **Syntax**: `<compositing-operator>#` + * + * **Initial value**: `add` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :---: | :-: | + * | **120** | **53** | **15.4** | 18-79 | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-composite + */ + "mask-composite"?: Property.MaskComposite | undefined; + /** + * The **`mask-image`** CSS property sets the image that is used as mask layer for an element. By default this means the alpha channel of the mask image will be multiplied with the alpha channel of the element. This can be controlled with the `mask-mode` property. + * + * **Syntax**: `<mask-reference>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :---: | :-: | + * | **120** | **53** | **15.4** | 16-79 | No | + * | 1 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-image + */ + "mask-image"?: Property.MaskImage | undefined; + /** + * The **`mask-mode`** CSS property sets whether the mask reference defined by `mask-image` is treated as a luminance or alpha mask. + * + * **Syntax**: `<masking-mode>#` + * + * **Initial value**: `match-source` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **120** | **53** | **15.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-mode + */ + "mask-mode"?: Property.MaskMode | undefined; + /** + * The **`mask-origin`** CSS property sets the origin of a mask. + * + * **Syntax**: `<geometry-box>#` + * + * **Initial value**: `border-box` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **120** | **53** | **15.4** | n/a | No | + * | 1 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-origin + */ + "mask-origin"?: Property.MaskOrigin | undefined; + /** + * The **`mask-position`** CSS property sets the initial position, relative to the mask position layer set by `mask-origin`, for each defined mask image. + * + * **Syntax**: `<position>#` + * + * **Initial value**: `center` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :---: | :-: | + * | **120** | **53** | **15.4** | 18-79 | No | + * | 1 _-x-_ | | 3.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-position + */ + "mask-position"?: Property.MaskPosition<TLength> | undefined; + /** + * The **`mask-repeat`** CSS property sets how mask images are repeated. A mask image can be repeated along the horizontal axis, the vertical axis, both axes, or not repeated at all. + * + * **Syntax**: `<repeat-style>#` + * + * **Initial value**: `repeat` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :---: | :-: | + * | **120** | **53** | **15.4** | 18-79 | No | + * | 1 _-x-_ | | 3.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-repeat + */ + "mask-repeat"?: Property.MaskRepeat | undefined; + /** + * The **`mask-size`** CSS property specifies the sizes of the mask images. The size of the image can be fully or partially constrained in order to preserve its intrinsic ratio. + * + * **Syntax**: `<bg-size>#` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :---: | :-: | + * | **120** | **53** | **15.4** | 18-79 | No | + * | 4 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-size + */ + "mask-size"?: Property.MaskSize<TLength> | undefined; + /** + * The **`mask-type`** CSS property sets whether an SVG `<mask>` element is used as a _luminance_ or an _alpha_ mask. It applies to the `<mask>` element itself. + * + * **Syntax**: `luminance | alpha` + * + * **Initial value**: `luminance` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **24** | **35** | **7** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-type + */ + "mask-type"?: Property.MaskType | undefined; + /** + * This feature is not Baseline because it does not work in some of the most widely-used browsers. + * + * **Syntax**: `[ pack | next ] || [ definite-first | ordered ]` + * + * **Initial value**: `pack` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :---------: | :--: | :-: | + * | No | No | **preview** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/masonry-auto-flow + */ + "masonry-auto-flow"?: Property.MasonryAutoFlow | undefined; + /** + * The **`math-depth`** property describes a notion of _depth_ for each element of a mathematical formula, with respect to the top-level container of that formula. Concretely, this is used to determine the computed value of the font-size property when its specified value is `math`. + * + * **Syntax**: `auto-add | add(<integer>) | <integer>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **109** | **117** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/math-depth + */ + "math-depth"?: Property.MathDepth | undefined; + /** + * The `math-shift` property indicates whether superscripts inside MathML formulas should be raised by a normal or compact shift. + * + * **Syntax**: `normal | compact` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **109** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/math-shift + */ + "math-shift"?: Property.MathShift | undefined; + /** + * The `math-style` property indicates whether MathML equations should render with normal or compact height. + * + * **Syntax**: `normal | compact` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **109** | **117** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/math-style + */ + "math-style"?: Property.MathStyle | undefined; + /** + * The **`max-block-size`** CSS property specifies the maximum size of an element in the direction opposite that of the writing direction as specified by `writing-mode`. That is, if the writing direction is horizontal, then `max-block-size` is equivalent to `max-height`; if the writing direction is vertical, `max-block-size` is the same as `max-width`. + * + * **Syntax**: `<'max-width'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/max-block-size + */ + "max-block-size"?: Property.MaxBlockSize<TLength> | undefined; + /** + * The **`max-height`** CSS property sets the maximum height of an element. It prevents the used value of the `height` property from becoming larger than the value specified for `max-height`. + * + * **Syntax**: `none | <length-percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **18** | **1** | **1.3** | **12** | **7** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/max-height + */ + "max-height"?: Property.MaxHeight<TLength> | undefined; + /** + * The **`max-inline-size`** CSS property defines the horizontal or vertical maximum size of an element's block, depending on its writing mode. It corresponds to either the `max-width` or the `max-height` property, depending on the value of `writing-mode`. + * + * **Syntax**: `<'max-width'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :--------: | :--: | :-: | + * | **57** | **41** | **12.1** | n/a | No | + * | | | 10.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/max-inline-size + */ + "max-inline-size"?: Property.MaxInlineSize<TLength> | undefined; + /** + * **Syntax**: `none | <integer>` + * + * **Initial value**: `none` + */ + "max-lines"?: Property.MaxLines | undefined; + /** + * The **`max-width`** CSS property sets the maximum width of an element. It prevents the used value of the `width` property from becoming larger than the value specified by `max-width`. + * + * **Syntax**: `none | <length-percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **7** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/max-width + */ + "max-width"?: Property.MaxWidth<TLength> | undefined; + /** + * The **`min-block-size`** CSS property defines the minimum horizontal or vertical size of an element's block, depending on its writing mode. It corresponds to either the `min-width` or the `min-height` property, depending on the value of `writing-mode`. + * + * **Syntax**: `<'min-width'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/min-block-size + */ + "min-block-size"?: Property.MinBlockSize<TLength> | undefined; + /** + * The **`min-height`** CSS property sets the minimum height of an element. It prevents the used value of the `height` property from becoming smaller than the value specified for `min-height`. + * + * **Syntax**: `auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **3** | **1.3** | **12** | **7** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/min-height + */ + "min-height"?: Property.MinHeight<TLength> | undefined; + /** + * The **`min-inline-size`** CSS property defines the horizontal or vertical minimal size of an element's block, depending on its writing mode. It corresponds to either the `min-width` or the `min-height` property, depending on the value of `writing-mode`. + * + * **Syntax**: `<'min-width'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/min-inline-size + */ + "min-inline-size"?: Property.MinInlineSize<TLength> | undefined; + /** + * The **`min-width`** CSS property sets the minimum width of an element. It prevents the used value of the `width` property from becoming smaller than the value specified for `min-width`. + * + * **Syntax**: `auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **7** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/min-width + */ + "min-width"?: Property.MinWidth<TLength> | undefined; + /** + * The **`mix-blend-mode`** CSS property sets how an element's content should blend with the content of the element's parent and the element's background. + * + * **Syntax**: `<blend-mode> | plus-lighter` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **41** | **32** | **8** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mix-blend-mode + */ + "mix-blend-mode"?: Property.MixBlendMode | undefined; + /** + * The **`offset-distance`** CSS property specifies a position along an `offset-path` for an element to be placed. + * + * **Syntax**: `<length-percentage>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :--------------------: | :-----: | :----: | :--: | :-: | + * | **55** | **72** | **16** | n/a | No | + * | 46 _(motion-distance)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-distance + */ + "motion-distance"?: Property.OffsetDistance<TLength> | undefined; + /** + * The **`offset-path`** CSS property specifies a motion path for an element to follow and defines the element's positioning within the parent container or SVG coordinate system. + * + * **Syntax**: `none | <offset-path> || <coord-box>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----------------: | :-----: | :------: | :--: | :-: | + * | **55** | **72** | **15.4** | n/a | No | + * | 46 _(motion-path)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-path + */ + "motion-path"?: Property.OffsetPath | undefined; + /** + * The **`offset-rotate`** CSS property defines the orientation/direction of the element as it is positioned along the `offset-path`. + * + * **Syntax**: `[ auto | reverse ] || <angle>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :--------------------: | :-----: | :----: | :--: | :-: | + * | **56** | **72** | **16** | n/a | No | + * | 46 _(motion-rotation)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-rotate + */ + "motion-rotation"?: Property.OffsetRotate | undefined; + /** + * The **`object-fit`** CSS property sets how the content of a replaced element, such as an `<img>` or `<video>`, should be resized to fit its container. + * + * **Syntax**: `fill | contain | cover | none | scale-down` + * + * **Initial value**: `fill` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **32** | **36** | **10** | **79** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/object-fit + */ + "object-fit"?: Property.ObjectFit | undefined; + /** + * The **`object-position`** CSS property specifies the alignment of the selected replaced element's contents within the element's box. Areas of the box which aren't covered by the replaced element's object will show the element's background. + * + * **Syntax**: `<position>` + * + * **Initial value**: `50% 50%` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **32** | **36** | **10** | **79** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/object-position + */ + "object-position"?: Property.ObjectPosition<TLength> | undefined; + /** + * **Syntax**: `auto | <position>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **116** | **72** | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-anchor + */ + "offset-anchor"?: Property.OffsetAnchor<TLength> | undefined; + /** + * The **`offset-distance`** CSS property specifies a position along an `offset-path` for an element to be placed. + * + * **Syntax**: `<length-percentage>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :--------------------: | :-----: | :----: | :--: | :-: | + * | **55** | **72** | **16** | n/a | No | + * | 46 _(motion-distance)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-distance + */ + "offset-distance"?: Property.OffsetDistance<TLength> | undefined; + /** + * The **`offset-path`** CSS property specifies a motion path for an element to follow and defines the element's positioning within the parent container or SVG coordinate system. + * + * **Syntax**: `none | <offset-path> || <coord-box>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----------------: | :-----: | :------: | :--: | :-: | + * | **55** | **72** | **15.4** | n/a | No | + * | 46 _(motion-path)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-path + */ + "offset-path"?: Property.OffsetPath | undefined; + /** + * **Syntax**: `normal | auto | <position>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **116** | n/a | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-position + */ + "offset-position"?: Property.OffsetPosition<TLength> | undefined; + /** + * The **`offset-rotate`** CSS property defines the orientation/direction of the element as it is positioned along the `offset-path`. + * + * **Syntax**: `[ auto | reverse ] || <angle>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :--------------------: | :-----: | :----: | :--: | :-: | + * | **56** | **72** | **16** | n/a | No | + * | 46 _(motion-rotation)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-rotate + */ + "offset-rotate"?: Property.OffsetRotate | undefined; + /** + * The **`offset-rotate`** CSS property defines the orientation/direction of the element as it is positioned along the `offset-path`. + * + * **Syntax**: `[ auto | reverse ] || <angle>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :--------------------: | :-----: | :----: | :--: | :-: | + * | **56** | **72** | **16** | n/a | No | + * | 46 _(motion-rotation)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset-rotate + */ + "offset-rotation"?: Property.OffsetRotate | undefined; + /** + * The **`opacity`** CSS property sets the opacity of an element. Opacity is the degree to which content behind an element is hidden, and is the opposite of transparency. + * + * **Syntax**: `<alpha-value>` + * + * **Initial value**: `1` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **2** | **12** | **9** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/opacity + */ + opacity?: Property.Opacity | undefined; + /** + * The **`order`** CSS property sets the order to lay out an item in a flex or grid container. Items in a container are sorted by ascending `order` value and then by their source code order. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :------: | + * | **29** | **20** | **9** | **12** | **11** | + * | 21 _-x-_ | | 7 _-x-_ | | 10 _-x-_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/order + */ + order?: Property.Order | undefined; + /** + * The **`orphans`** CSS property sets the minimum number of lines in a block container that must be shown at the _bottom_ of a page, region, or column. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `2` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **25** | No | **1.3** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/orphans + */ + orphans?: Property.Orphans | undefined; + /** + * The **`outline-color`** CSS property sets the color of an element's outline. + * + * **Syntax**: `<color> | invert` + * + * **Initial value**: `invert`, for browsers supporting it, `currentColor` for the other + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1.5** | **1.2** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/outline-color + */ + "outline-color"?: Property.OutlineColor | undefined; + /** + * The **`outline-offset`** CSS property sets the amount of space between an outline and the edge or border of an element. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :-: | + * | **1** | **1.5** | **1.2** | **15** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/outline-offset + */ + "outline-offset"?: Property.OutlineOffset<TLength> | undefined; + /** + * The **`outline-style`** CSS property sets the style of an element's outline. An outline is a line that is drawn around an element, outside the `border`. + * + * **Syntax**: `auto | <'border-style'>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1.5** | **1.2** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/outline-style + */ + "outline-style"?: Property.OutlineStyle | undefined; + /** + * The CSS **`outline-width`** property sets the thickness of an element's outline. An outline is a line that is drawn around an element, outside the `border`. + * + * **Syntax**: `<line-width>` + * + * **Initial value**: `medium` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1.5** | **1.2** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/outline-width + */ + "outline-width"?: Property.OutlineWidth<TLength> | undefined; + /** + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **56** | **66** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow-anchor + */ + "overflow-anchor"?: Property.OverflowAnchor | undefined; + /** + * **Syntax**: `visible | hidden | clip | scroll | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | **69** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow-block + */ + "overflow-block"?: Property.OverflowBlock | undefined; + /** + * The **`overflow-clip-box`** CSS property specifies relative to which box the clipping happens when there is an overflow. It is short hand for the `overflow-clip-box-inline` and `overflow-clip-box-block` properties. + * + * **Syntax**: `padding-box | content-box` + * + * **Initial value**: `padding-box` + */ + "overflow-clip-box"?: Property.OverflowClipBox | undefined; + /** + * **Syntax**: `<visual-box> || <length [0,∞]>` + * + * **Initial value**: `0px` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **90** | **102** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow-clip-margin + */ + "overflow-clip-margin"?: Property.OverflowClipMargin<TLength> | undefined; + /** + * **Syntax**: `visible | hidden | clip | scroll | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | **69** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow-inline + */ + "overflow-inline"?: Property.OverflowInline | undefined; + /** + * The **`overflow-wrap`** CSS property applies to inline elements, setting whether the browser should insert line breaks within an otherwise unbreakable string to prevent text from overflowing its line box. + * + * **Syntax**: `normal | break-word | anywhere` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-------------: | :---------------: | :-------------: | :--------------: | :-------------------: | + * | **23** | **49** | **7** | **18** | **5.5** _(word-wrap)_ | + * | 1 _(word-wrap)_ | 3.5 _(word-wrap)_ | 1 _(word-wrap)_ | 12 _(word-wrap)_ | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow-wrap + */ + "overflow-wrap"?: Property.OverflowWrap | undefined; + /** + * The **`overflow-x`** CSS property sets what shows when content overflows a block-level element's left and right edges. This may be nothing, a scroll bar, or the overflow content. + * + * **Syntax**: `visible | hidden | clip | scroll | auto` + * + * **Initial value**: `visible` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **3.5** | **3** | **12** | **5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow-x + */ + "overflow-x"?: Property.OverflowX | undefined; + /** + * The **`overflow-y`** CSS property sets what shows when content overflows a block-level element's top and bottom edges. This may be nothing, a scroll bar, or the overflow content. + * + * **Syntax**: `visible | hidden | clip | scroll | auto` + * + * **Initial value**: `visible` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **3.5** | **3** | **12** | **5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow-y + */ + "overflow-y"?: Property.OverflowY | undefined; + /** + * The **`overlay`** CSS property specifies whether an element appearing in the top layer (for example, a shown popover or modal `<dialog>` element) is actually rendered in the top layer. This property is only relevant within a list of `transition-property` values, and only if `allow-discrete` is set as the `transition-behavior`. + * + * **Syntax**: `none | auto` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **117** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overlay + */ + overlay?: Property.Overlay | undefined; + /** + * The **`overscroll-behavior-block`** CSS property sets the browser's behavior when the block direction boundary of a scrolling area is reached. + * + * **Syntax**: `contain | none | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **77** | **73** | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-block + */ + "overscroll-behavior-block"?: Property.OverscrollBehaviorBlock | undefined; + /** + * The **`overscroll-behavior-inline`** CSS property sets the browser's behavior when the inline direction boundary of a scrolling area is reached. + * + * **Syntax**: `contain | none | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **77** | **73** | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-inline + */ + "overscroll-behavior-inline"?: Property.OverscrollBehaviorInline | undefined; + /** + * The **`overscroll-behavior-x`** CSS property sets the browser's behavior when the horizontal boundary of a scrolling area is reached. + * + * **Syntax**: `contain | none | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **63** | **59** | **16** | **18** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-x + */ + "overscroll-behavior-x"?: Property.OverscrollBehaviorX | undefined; + /** + * The **`overscroll-behavior-y`** CSS property sets the browser's behavior when the vertical boundary of a scrolling area is reached. + * + * **Syntax**: `contain | none | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **63** | **59** | **16** | **18** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-y + */ + "overscroll-behavior-y"?: Property.OverscrollBehaviorY | undefined; + /** + * The **`padding-block-end`** CSS property defines the logical block end padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-block-end + */ + "padding-block-end"?: Property.PaddingBlockEnd<TLength> | undefined; + /** + * The **`padding-block-start`** CSS property defines the logical block start padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-block-start + */ + "padding-block-start"?: Property.PaddingBlockStart<TLength> | undefined; + /** + * The **`padding-bottom`** CSS property sets the height of the padding area on the bottom of an element. + * + * **Syntax**: `<length> | <percentage>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-bottom + */ + "padding-bottom"?: Property.PaddingBottom<TLength> | undefined; + /** + * The **`padding-inline-end`** CSS property defines the logical inline end padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----------------------: | :--------------------: | :-----------------------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | 2 _(-webkit-padding-end)_ | 3 _(-moz-padding-end)_ | 3 _(-webkit-padding-end)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-inline-end + */ + "padding-inline-end"?: Property.PaddingInlineEnd<TLength> | undefined; + /** + * The **`padding-inline-start`** CSS property defines the logical inline start padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-------------------------: | :----------------------: | :-------------------------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * | 2 _(-webkit-padding-start)_ | 3 _(-moz-padding-start)_ | 3 _(-webkit-padding-start)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-inline-start + */ + "padding-inline-start"?: Property.PaddingInlineStart<TLength> | undefined; + /** + * The **`padding-left`** CSS property sets the width of the padding area to the left of an element. + * + * **Syntax**: `<length> | <percentage>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-left + */ + "padding-left"?: Property.PaddingLeft<TLength> | undefined; + /** + * The **`padding-right`** CSS property sets the width of the padding area on the right of an element. + * + * **Syntax**: `<length> | <percentage>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-right + */ + "padding-right"?: Property.PaddingRight<TLength> | undefined; + /** + * The **`padding-top`** CSS property sets the height of the padding area on the top of an element. + * + * **Syntax**: `<length> | <percentage>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-top + */ + "padding-top"?: Property.PaddingTop<TLength> | undefined; + /** + * The **`page`** CSS property is used to specify the named page, a specific type of page defined by the `@page` at-rule. + * + * **Syntax**: `auto | <custom-ident>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-------: | :--: | :-: | + * | **85** | **110** | **≤13.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/page + */ + page?: Property.Page | undefined; + /** + * The **`page-break-after`** CSS property adjusts page breaks _after_ the current element. + * + * **Syntax**: `auto | always | avoid | left | right | recto | verso` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1** | **1.2** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/page-break-after + */ + "page-break-after"?: Property.PageBreakAfter | undefined; + /** + * The **`page-break-before`** CSS property adjusts page breaks _before_ the current element. + * + * **Syntax**: `auto | always | avoid | left | right | recto | verso` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **1** | **1.2** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/page-break-before + */ + "page-break-before"?: Property.PageBreakBefore | undefined; + /** + * The **`page-break-inside`** CSS property adjusts page breaks _inside_ the current element. + * + * **Syntax**: `auto | avoid` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **19** | **1.3** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/page-break-inside + */ + "page-break-inside"?: Property.PageBreakInside | undefined; + /** + * The **`paint-order`** CSS property lets you control the order in which the fill and stroke (and painting markers) of text content and shapes are drawn. + * + * **Syntax**: `normal | [ fill || stroke || markers ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **35** | **60** | **8** | **17** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/paint-order + */ + "paint-order"?: Property.PaintOrder | undefined; + /** + * The **`perspective`** CSS property determines the distance between the z=0 plane and the user in order to give a 3D-positioned element some perspective. + * + * **Syntax**: `none | <length>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **36** | **16** | **9** | **12** | **10** | + * | 12 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/perspective + */ + perspective?: Property.Perspective<TLength> | undefined; + /** + * The **`perspective-origin`** CSS property determines the position at which the viewer is looking. It is used as the _vanishing point_ by the `perspective` property. + * + * **Syntax**: `<position>` + * + * **Initial value**: `50% 50%` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **36** | **16** | **9** | **12** | **10** | + * | 12 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/perspective-origin + */ + "perspective-origin"?: Property.PerspectiveOrigin<TLength> | undefined; + /** + * The **`pointer-events`** CSS property sets under what circumstances (if any) a particular graphic element can become the target of pointer events. + * + * **Syntax**: `auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :----: | + * | **1** | **1.5** | **4** | **12** | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/pointer-events + */ + "pointer-events"?: Property.PointerEvents | undefined; + /** + * The **`position`** CSS property sets how an element is positioned in a document. The `top`, `right`, `bottom`, and `left` properties determine the final location of positioned elements. + * + * **Syntax**: `static | relative | absolute | sticky | fixed` + * + * **Initial value**: `static` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/position + */ + position?: Property.Position | undefined; + /** + * The **`print-color-adjust`** CSS property sets what, if anything, the user agent may do to optimize the appearance of the element on the output device. By default, the browser is allowed to make any adjustments to the element's appearance it determines to be necessary and prudent given the type and capabilities of the output device. + * + * **Syntax**: `economy | exact` + * + * **Initial value**: `economy` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----------: | :-----------------: | :------: | :----------: | :-: | + * | **17** _-x-_ | **97** | **15.4** | **79** _-x-_ | No | + * | | 48 _(color-adjust)_ | 6 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/print-color-adjust + */ + "print-color-adjust"?: Property.PrintColorAdjust | undefined; + /** + * The **`quotes`** CSS property sets how the browser should render quotation marks that are added using the `open-quotes` or `close-quotes` values of the CSS `content` property. + * + * **Syntax**: `none | auto | [ <string> <string> ]+` + * + * **Initial value**: depends on user agent + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **11** | **1.5** | **9** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/quotes + */ + quotes?: Property.Quotes | undefined; + /** + * The **`resize`** CSS property sets whether an element is resizable, and if so, in which directions. + * + * **Syntax**: `none | both | horizontal | vertical | block | inline` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **1** | **4** | **3** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/resize + */ + resize?: Property.Resize | undefined; + /** + * The **`right`** CSS property participates in specifying the horizontal position of a positioned element. It has no effect on non-positioned elements. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/right + */ + right?: Property.Right<TLength> | undefined; + /** + * The **`rotate`** CSS property allows you to specify rotation transforms individually and independently of the `transform` property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the `transform` property. + * + * **Syntax**: `none | <angle> | [ x | y | z | <number>{3} ] && <angle>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **104** | **72** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/rotate + */ + rotate?: Property.Rotate | undefined; + /** + * The **`row-gap`** CSS property sets the size of the gap (gutter) between an element's rows. + * + * **Syntax**: `normal | <length-percentage>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **47** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/row-gap + */ + "row-gap"?: Property.RowGap<TLength> | undefined; + /** + * The **`ruby-align`** CSS property defines the distribution of the different ruby elements over the base. + * + * **Syntax**: `start | center | space-between | space-around` + * + * **Initial value**: `space-around` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | No | **38** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/ruby-align + */ + "ruby-align"?: Property.RubyAlign | undefined; + /** + * **Syntax**: `separate | collapse | auto` + * + * **Initial value**: `separate` + */ + "ruby-merge"?: Property.RubyMerge | undefined; + /** + * The **`ruby-position`** CSS property defines the position of a ruby element relatives to its base element. It can be positioned over the element (`over`), under it (`under`), or between the characters on their right side (`inter-character`). + * + * **Syntax**: `[ alternate || [ over | under ] ] | inter-character` + * + * **Initial value**: `alternate` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :---------: | :---: | :-: | + * | **84** | **38** | **7** _-x-_ | 12-79 | No | + * | 1 _-x-_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/ruby-position + */ + "ruby-position"?: Property.RubyPosition | undefined; + /** + * The **`scale`** CSS property allows you to specify scale transforms individually and independently of the `transform` property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the `transform` value. + * + * **Syntax**: `none | <number>{1,3}` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **104** | **72** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scale + */ + scale?: Property.Scale | undefined; + /** + * The **`scroll-behavior`** CSS property sets the behavior for a scrolling box when scrolling is triggered by the navigation or CSSOM scrolling APIs. + * + * **Syntax**: `auto | smooth` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **61** | **36** | **15.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-behavior + */ + "scroll-behavior"?: Property.ScrollBehavior | undefined; + /** + * The `scroll-margin-block-end` property defines the margin of the scroll snap area at the end of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-end + */ + "scroll-margin-block-end"?: Property.ScrollMarginBlockEnd<TLength> | undefined; + /** + * The `scroll-margin-block-start` property defines the margin of the scroll snap area at the start of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-start + */ + "scroll-margin-block-start"?: Property.ScrollMarginBlockStart<TLength> | undefined; + /** + * The `scroll-margin-bottom` property defines the bottom margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-bottom)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-bottom + */ + "scroll-margin-bottom"?: Property.ScrollMarginBottom<TLength> | undefined; + /** + * The `scroll-margin-inline-end` property defines the margin of the scroll snap area at the end of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-end + */ + "scroll-margin-inline-end"?: Property.ScrollMarginInlineEnd<TLength> | undefined; + /** + * The `scroll-margin-inline-start` property defines the margin of the scroll snap area at the start of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-start + */ + "scroll-margin-inline-start"?: Property.ScrollMarginInlineStart<TLength> | undefined; + /** + * The `scroll-margin-left` property defines the left margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-left)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-left + */ + "scroll-margin-left"?: Property.ScrollMarginLeft<TLength> | undefined; + /** + * The `scroll-margin-right` property defines the right margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-right)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-right + */ + "scroll-margin-right"?: Property.ScrollMarginRight<TLength> | undefined; + /** + * The `scroll-margin-top` property defines the top margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :---------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-top)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-top + */ + "scroll-margin-top"?: Property.ScrollMarginTop<TLength> | undefined; + /** + * The `scroll-padding-block-end` property defines offsets for the end edge in the block dimension of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-end + */ + "scroll-padding-block-end"?: Property.ScrollPaddingBlockEnd<TLength> | undefined; + /** + * The `scroll-padding-block-start` property defines offsets for the start edge in the block dimension of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-start + */ + "scroll-padding-block-start"?: Property.ScrollPaddingBlockStart<TLength> | undefined; + /** + * The `scroll-padding-bottom` property defines offsets for the bottom of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-bottom + */ + "scroll-padding-bottom"?: Property.ScrollPaddingBottom<TLength> | undefined; + /** + * The `scroll-padding-inline-end` property defines offsets for the end edge in the inline dimension of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-end + */ + "scroll-padding-inline-end"?: Property.ScrollPaddingInlineEnd<TLength> | undefined; + /** + * The `scroll-padding-inline-start` property defines offsets for the start edge in the inline dimension of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-start + */ + "scroll-padding-inline-start"?: Property.ScrollPaddingInlineStart<TLength> | undefined; + /** + * The `scroll-padding-left` property defines offsets for the left of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-left + */ + "scroll-padding-left"?: Property.ScrollPaddingLeft<TLength> | undefined; + /** + * The `scroll-padding-right` property defines offsets for the right of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-right + */ + "scroll-padding-right"?: Property.ScrollPaddingRight<TLength> | undefined; + /** + * The **`scroll-padding-top`** property defines offsets for the top of the _optimal viewing region_ of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or to put more breathing room between a targeted element and the edges of the scrollport. + * + * **Syntax**: `auto | <length-percentage>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-top + */ + "scroll-padding-top"?: Property.ScrollPaddingTop<TLength> | undefined; + /** + * The `scroll-snap-align` property specifies the box's snap position as an alignment of its snap area (as the alignment subject) within its snap container's snapport (as the alignment container). The two values specify the snapping alignment in the block axis and inline axis, respectively. If only one value is specified, the second value defaults to the same value. + * + * **Syntax**: `[ none | start | end | center ]{1,2}` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **11** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-snap-align + */ + "scroll-snap-align"?: Property.ScrollSnapAlign | undefined; + /** + * The `scroll-margin-bottom` property defines the bottom margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-bottom)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-bottom + */ + "scroll-snap-margin-bottom"?: Property.ScrollMarginBottom<TLength> | undefined; + /** + * The `scroll-margin-left` property defines the left margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-left)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-left + */ + "scroll-snap-margin-left"?: Property.ScrollMarginLeft<TLength> | undefined; + /** + * The `scroll-margin-right` property defines the right margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-right)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-right + */ + "scroll-snap-margin-right"?: Property.ScrollMarginRight<TLength> | undefined; + /** + * The `scroll-margin-top` property defines the top margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container's coordinate space), then adding the specified outsets. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :---------------------------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin-top)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-top + */ + "scroll-snap-margin-top"?: Property.ScrollMarginTop<TLength> | undefined; + /** + * The **`scroll-snap-stop`** CSS property defines whether or not the scroll container is allowed to "pass over" possible snap positions. + * + * **Syntax**: `normal | always` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **75** | **103** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-snap-stop + */ + "scroll-snap-stop"?: Property.ScrollSnapStop | undefined; + /** + * The **`scroll-snap-type`** CSS property sets how strictly snap points are enforced on the scroll container in case there is one. + * + * **Syntax**: `none | [ x | y | block | inline | both ] [ mandatory | proximity ]?` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :----------: | + * | **69** | 39-68 | **11** | **79** | **10** _-x-_ | + * | | | 9 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type + */ + "scroll-snap-type"?: Property.ScrollSnapType | undefined; + /** + * The **`scroll-timeline-axis`** CSS property can be used to specify the scrollbar that will be used to provide the timeline for a scroll-timeline animation. + * + * **Syntax**: `[ block | inline | x | y ]#` + * + * **Initial value**: `block` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-timeline-axis + */ + "scroll-timeline-axis"?: Property.ScrollTimelineAxis | undefined; + /** + * The **`scroll-timeline-name`** CSS property defines a name that can be used to identify an element as the source of a scroll timeline for an animation. + * + * **Syntax**: `none | <dashed-ident>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-timeline-name + */ + "scroll-timeline-name"?: Property.ScrollTimelineName | undefined; + /** + * The **`scrollbar-color`** CSS property sets the color of the scrollbar track and thumb. + * + * **Syntax**: `auto | <color>{2}` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **121** | **64** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scrollbar-color + */ + "scrollbar-color"?: Property.ScrollbarColor | undefined; + /** + * The **`scrollbar-gutter`** CSS property allows authors to reserve space for the scrollbar, preventing unwanted layout changes as the content grows while also avoiding unnecessary visuals when scrolling isn't needed. + * + * **Syntax**: `auto | stable && both-edges?` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **94** | **97** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scrollbar-gutter + */ + "scrollbar-gutter"?: Property.ScrollbarGutter | undefined; + /** + * The **`scrollbar-width`** property allows the author to set the maximum thickness of an element's scrollbars when they are shown. + * + * **Syntax**: `auto | thin | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **121** | **64** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scrollbar-width + */ + "scrollbar-width"?: Property.ScrollbarWidth | undefined; + /** + * The **`shape-image-threshold`** CSS property sets the alpha channel threshold used to extract the shape using an image as the value for `shape-outside`. + * + * **Syntax**: `<alpha-value>` + * + * **Initial value**: `0.0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **37** | **62** | **10.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/shape-image-threshold + */ + "shape-image-threshold"?: Property.ShapeImageThreshold | undefined; + /** + * The **`shape-margin`** CSS property sets a margin for a CSS shape created using `shape-outside`. + * + * **Syntax**: `<length-percentage>` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **37** | **62** | **10.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/shape-margin + */ + "shape-margin"?: Property.ShapeMargin<TLength> | undefined; + /** + * The **`shape-outside`** CSS property defines a shape—which may be non-rectangular—around which adjacent inline content should wrap. By default, inline content wraps around its margin box; `shape-outside` provides a way to customize this wrapping, making it possible to wrap text around complex objects rather than simple boxes. + * + * **Syntax**: `none | [ <shape-box> || <basic-shape> ] | <image>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **37** | **62** | **10.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/shape-outside + */ + "shape-outside"?: Property.ShapeOutside | undefined; + /** + * The **`tab-size`** CSS property is used to customize the width of tab characters (U+0009). + * + * **Syntax**: `<integer> | <length>` + * + * **Initial value**: `8` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **21** | **91** | **7** | n/a | No | + * | | 4 _-x-_ | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/tab-size + */ + "tab-size"?: Property.TabSize<TLength> | undefined; + /** + * The **`table-layout`** CSS property sets the algorithm used to lay out `<table>` cells, rows, and columns. + * + * **Syntax**: `auto | fixed` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **14** | **1** | **1** | **12** | **5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/table-layout + */ + "table-layout"?: Property.TableLayout | undefined; + /** + * The **`text-align`** CSS property sets the horizontal alignment of the inline-level content inside a block element or table-cell box. This means it works like `vertical-align` but in the horizontal direction. + * + * **Syntax**: `start | end | left | right | center | justify | match-parent` + * + * **Initial value**: `start`, or a nameless value that acts as `left` if _direction_ is `ltr`, `right` if _direction_ is `rtl` if `start` is not supported by the browser. + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-align + */ + "text-align"?: Property.TextAlign | undefined; + /** + * The **`text-align-last`** CSS property sets how the last line of a block or a line, right before a forced line break, is aligned. + * + * **Syntax**: `auto | start | end | left | right | center | justify` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **47** | **49** | **16** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-align-last + */ + "text-align-last"?: Property.TextAlignLast | undefined; + /** + * The **`text-combine-upright`** CSS property sets the combination of characters into the space of a single character. If the combined text is wider than 1em, the user agent must fit the contents within 1em. The resulting composition is treated as a single upright glyph for layout and decoration. This property only has an effect in vertical writing modes. + * + * **Syntax**: `none | all | [ digits <integer>? ]` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------------------------: | :-----: | :--------------------------: | :----: | :------------------------------------: | + * | **48** | **48** | **15.4** | **79** | **11** _(-ms-text-combine-horizontal)_ | + * | 9 _(-webkit-text-combine)_ | | 5.1 _(-webkit-text-combine)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-combine-upright + */ + "text-combine-upright"?: Property.TextCombineUpright | undefined; + /** + * The **`text-decoration-color`** CSS property sets the color of decorations added to text by `text-decoration-line`. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **36** | **12.1** | n/a | No | + * | | | 8 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-decoration-color + */ + "text-decoration-color"?: Property.TextDecorationColor | undefined; + /** + * The **`text-decoration-line`** CSS property sets the kind of decoration that is used on text in an element, such as an underline or overline. + * + * **Syntax**: `none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **36** | **12.1** | n/a | No | + * | | | 8 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-decoration-line + */ + "text-decoration-line"?: Property.TextDecorationLine | undefined; + /** + * The **`text-decoration-skip`** CSS property sets what parts of an element's content any text decoration affecting the element must skip over. It controls all text decoration lines drawn by the element and also any text decoration lines drawn by its ancestors. + * + * **Syntax**: `none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]` + * + * **Initial value**: `objects` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | 57-64 | No | **12.1** | n/a | No | + * | | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip + */ + "text-decoration-skip"?: Property.TextDecorationSkip | undefined; + /** + * The **`text-decoration-skip-ink`** CSS property specifies how overlines and underlines are drawn when they pass over glyph ascenders and descenders. + * + * **Syntax**: `auto | all | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **64** | **70** | **15.4** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip-ink + */ + "text-decoration-skip-ink"?: Property.TextDecorationSkipInk | undefined; + /** + * The **`text-decoration-style`** CSS property sets the style of the lines specified by `text-decoration-line`. The style applies to all lines that are set with `text-decoration-line`. + * + * **Syntax**: `solid | double | dotted | dashed | wavy` + * + * **Initial value**: `solid` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **57** | **36** | **12.1** | n/a | No | + * | | | 8 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-decoration-style + */ + "text-decoration-style"?: Property.TextDecorationStyle | undefined; + /** + * The **`text-decoration-thickness`** CSS property sets the stroke thickness of the decoration line that is used on text in an element, such as a line-through, underline, or overline. + * + * **Syntax**: `auto | from-font | <length> | <percentage> ` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **89** | **70** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-decoration-thickness + */ + "text-decoration-thickness"?: Property.TextDecorationThickness<TLength> | undefined; + /** + * The **`text-emphasis-color`** CSS property sets the color of emphasis marks. This value can also be set using the `text-emphasis` shorthand. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :----: | :--: | :-: | + * | **99** | **46** | **7** | n/a | No | + * | 25 _-x-_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-emphasis-color + */ + "text-emphasis-color"?: Property.TextEmphasisColor | undefined; + /** + * The **`text-emphasis-position`** CSS property sets where emphasis marks are drawn. Like ruby text, if there isn't enough room for emphasis marks, the line height is increased. + * + * **Syntax**: `[ over | under ] && [ right | left ]` + * + * **Initial value**: `over right` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :----: | :--: | :-: | + * | **99** | **46** | **7** | n/a | No | + * | 25 _-x-_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-emphasis-position + */ + "text-emphasis-position"?: Property.TextEmphasisPosition | undefined; + /** + * The **`text-emphasis-style`** CSS property sets the appearance of emphasis marks. It can also be set, and reset, using the `text-emphasis` shorthand. + * + * **Syntax**: `none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :----: | :--: | :-: | + * | **99** | **46** | **7** | n/a | No | + * | 25 _-x-_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-emphasis-style + */ + "text-emphasis-style"?: Property.TextEmphasisStyle | undefined; + /** + * The **`text-indent`** CSS property sets the length of empty space (indentation) that is put before lines of text in a block. + * + * **Syntax**: `<length-percentage> && hanging? && each-line?` + * + * **Initial value**: `0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-indent + */ + "text-indent"?: Property.TextIndent<TLength> | undefined; + /** + * The **`text-justify`** CSS property sets what type of justification should be applied to text when `text-align``: justify;` is set on an element. + * + * **Syntax**: `auto | inter-character | inter-word | none` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :---: | :----: | + * | n/a | **55** | No | 12-79 | **11** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-justify + */ + "text-justify"?: Property.TextJustify | undefined; + /** + * The **`text-orientation`** CSS property sets the orientation of the text characters in a line. It only affects text in vertical mode (when `writing-mode` is not `horizontal-tb`). It is useful for controlling the display of languages that use vertical script, and also for making vertical table headers. + * + * **Syntax**: `mixed | upright | sideways` + * + * **Initial value**: `mixed` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-------: | :--: | :-: | + * | **48** | **41** | **14** | n/a | No | + * | 11 _-x-_ | | 5.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-orientation + */ + "text-orientation"?: Property.TextOrientation | undefined; + /** + * The **`text-overflow`** CSS property sets how hidden overflow content is signaled to users. It can be clipped, display an ellipsis ('`…`'), or display a custom string. + * + * **Syntax**: `[ clip | ellipsis | <string> ]{1,2}` + * + * **Initial value**: `clip` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **1** | **7** | **1.3** | **12** | **6** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-overflow + */ + "text-overflow"?: Property.TextOverflow | undefined; + /** + * The **`text-rendering`** CSS property provides information to the rendering engine about what to optimize for when rendering text. + * + * **Syntax**: `auto | optimizeSpeed | optimizeLegibility | geometricPrecision` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **4** | **1** | **5** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-rendering + */ + "text-rendering"?: Property.TextRendering | undefined; + /** + * The **`text-shadow`** CSS property adds shadows to text. It accepts a comma-separated list of shadows to be applied to the text and any of its `decorations`. Each shadow is described by some combination of X and Y offsets from the element, blur radius, and color. + * + * **Syntax**: `none | <shadow-t>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :----: | + * | **2** | **3.5** | **1.1** | **12** | **10** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-shadow + */ + "text-shadow"?: Property.TextShadow | undefined; + /** + * The **`text-size-adjust`** CSS property controls the text inflation algorithm used on some smartphones and tablets. Other browsers will ignore this property. + * + * **Syntax**: `none | auto | <percentage>` + * + * **Initial value**: `auto` for smartphone browsers supporting inflation, `none` in other cases (and then not modifiable). + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **54** | No | No | **79** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-size-adjust + */ + "text-size-adjust"?: Property.TextSizeAdjust | undefined; + /** + * The **`text-transform`** CSS property specifies how to capitalize an element's text. It can be used to make text appear in all-uppercase or all-lowercase, or with each word capitalized. It also can help improve legibility for ruby. + * + * **Syntax**: `none | capitalize | uppercase | lowercase | full-width | full-size-kana` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-transform + */ + "text-transform"?: Property.TextTransform | undefined; + /** + * The **`text-underline-offset`** CSS property sets the offset distance of an underline text decoration line (applied using `text-decoration`) from its original position. + * + * **Syntax**: `auto | <length> | <percentage> ` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **70** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-underline-offset + */ + "text-underline-offset"?: Property.TextUnderlineOffset<TLength> | undefined; + /** + * The **`text-underline-position`** CSS property specifies the position of the underline which is set using the `text-decoration` property's `underline` value. + * + * **Syntax**: `auto | from-font | [ under || [ left | right ] ]` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :---: | + * | **33** | **74** | **12.1** | **12** | **6** | + * | | | 9 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-underline-position + */ + "text-underline-position"?: Property.TextUnderlinePosition | undefined; + /** + * The **`text-wrap`** CSS property controls how text inside an element is wrapped. The different values provide: + * + * **Syntax**: `wrap | nowrap | balance | stable | pretty` + * + * **Initial value**: `wrap` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **114** | **121** | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-wrap + */ + "text-wrap"?: Property.TextWrap | undefined; + /** + * The **`timeline-scope`** CSS property modifies the scope of a named animation timeline. + * + * **Syntax**: `none | <dashed-ident>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **116** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/timeline-scope + */ + "timeline-scope"?: Property.TimelineScope | undefined; + /** + * The **`top`** CSS property participates in specifying the vertical position of a positioned element. It has no effect on non-positioned elements. + * + * **Syntax**: `<length> | <percentage> | auto` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/top + */ + top?: Property.Top<TLength> | undefined; + /** + * The **`touch-action`** CSS property sets how an element's region can be manipulated by a touchscreen user (for example, by zooming features built into the browser). + * + * **Syntax**: `auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :------: | + * | **36** | **52** | **13** | **12** | **11** | + * | | | | | 10 _-x-_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/touch-action + */ + "touch-action"?: Property.TouchAction | undefined; + /** + * The **`transform`** CSS property lets you rotate, scale, skew, or translate an element. It modifies the coordinate space of the CSS visual formatting model. + * + * **Syntax**: `none | <transform-list>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :----: | :-----: | + * | **36** | **16** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3.1 _-x-_ | | 9 _-x-_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transform + */ + transform?: Property.Transform | undefined; + /** + * The **`transform-box`** CSS property defines the layout box to which the `transform`, individual transform properties `translate`,`scale`, and `rotate`, and `transform-origin` properties relate. + * + * **Syntax**: `content-box | border-box | fill-box | stroke-box | view-box` + * + * **Initial value**: `view-box` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **64** | **55** | **11** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transform-box + */ + "transform-box"?: Property.TransformBox | undefined; + /** + * The **`transform-origin`** CSS property sets the origin for an element's transformations. + * + * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?` + * + * **Initial value**: `50% 50% 0` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :-----: | + * | **36** | **16** | **9** | **12** | **10** | + * | 1 _-x-_ | | 2 _-x-_ | | 9 _-x-_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transform-origin + */ + "transform-origin"?: Property.TransformOrigin<TLength> | undefined; + /** + * The **`transform-style`** CSS property sets whether children of an element are positioned in the 3D space or are flattened in the plane of the element. + * + * **Syntax**: `flat | preserve-3d` + * + * **Initial value**: `flat` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :-: | + * | **36** | **16** | **9** | **12** | No | + * | 12 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transform-style + */ + "transform-style"?: Property.TransformStyle | undefined; + /** + * The **`transition-behavior`** CSS property specifies whether transitions will be started for properties whose animation behavior is discrete. + * + * **Syntax**: `<transition-behavior-value>#` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **117** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transition-behavior + */ + "transition-behavior"?: Property.TransitionBehavior | undefined; + /** + * The **`transition-delay`** CSS property specifies the duration to wait before starting a property's transition effect when its value changes. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **26** | **16** | **9** | **12** | **10** | + * | 1 _-x-_ | | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transition-delay + */ + "transition-delay"?: Property.TransitionDelay<TTime> | undefined; + /** + * The **`transition-duration`** CSS property sets the length of time a transition animation should take to complete. By default, the value is `0s`, meaning that no animation will occur. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :----: | :----: | + * | **26** | **16** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transition-duration + */ + "transition-duration"?: Property.TransitionDuration<TTime> | undefined; + /** + * The **`transition-property`** CSS property sets the CSS properties to which a transition effect should be applied. + * + * **Syntax**: `none | <single-transition-property>#` + * + * **Initial value**: all + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :----: | :----: | + * | **26** | **16** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transition-property + */ + "transition-property"?: Property.TransitionProperty | undefined; + /** + * The **`transition-timing-function`** CSS property sets how intermediate values are calculated for CSS properties being affected by a transition effect. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :----: | :----: | + * | **26** | **16** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transition-timing-function + */ + "transition-timing-function"?: Property.TransitionTimingFunction | undefined; + /** + * The **`translate`** CSS property allows you to specify translation transforms individually and independently of the `transform` property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the `transform` value. + * + * **Syntax**: `none | <length-percentage> [ <length-percentage> <length>? ]?` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :------: | :--: | :-: | + * | **104** | **72** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/translate + */ + translate?: Property.Translate<TLength> | undefined; + /** + * The **`unicode-bidi`** CSS property, together with the `direction` property, determines how bidirectional text in a document is handled. For example, if a block of content contains both left-to-right and right-to-left text, the user-agent uses a complex Unicode algorithm to decide how to display the text. The `unicode-bidi` property overrides this algorithm and allows the developer to control the text embedding. + * + * **Syntax**: `normal | embed | isolate | bidi-override | isolate-override | plaintext` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :-----: | + * | **2** | **1** | **1.3** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/unicode-bidi + */ + "unicode-bidi"?: Property.UnicodeBidi | undefined; + /** + * The **`user-select`** CSS property controls whether the user can select text. This doesn't have any effect on content loaded as part of a browser's user interface (its chrome), except in textboxes. + * + * **Syntax**: `auto | text | none | contain | all` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :---------: | :------: | :----------: | + * | **54** | **69** | **3** _-x-_ | **79** | **10** _-x-_ | + * | 1 _-x-_ | 1 _-x-_ | | 12 _-x-_ | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/user-select + */ + "user-select"?: Property.UserSelect | undefined; + /** + * The **`vertical-align`** CSS property sets vertical alignment of an inline, inline-block or table-cell box. + * + * **Syntax**: `baseline | sub | super | text-top | text-bottom | middle | top | bottom | <percentage> | <length>` + * + * **Initial value**: `baseline` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/vertical-align + */ + "vertical-align"?: Property.VerticalAlign<TLength> | undefined; + /** + * The **`view-timeline-axis`** CSS property is used to specify the scrollbar direction that will be used to provide the timeline for a _named view progress timeline_ animation, which is progressed through based on the change in visibility of an element (known as the _subject_) inside a scrollable element (_scroller_). `view-timeline-axis` is set on the subject. See CSS scroll-driven animations for more details. + * + * **Syntax**: `[ block | inline | x | y ]#` + * + * **Initial value**: `block` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/view-timeline-axis + */ + "view-timeline-axis"?: Property.ViewTimelineAxis | undefined; + /** + * The **`view-timeline-inset`** CSS property is used to specify one or two values representing an adjustment to the position of the scrollport (see Scroll container for more details) in which the subject element of a _named view progress timeline_ animation is deemed to be visible. Put another way, this allows you to specify start and/or end inset (or outset) values that offset the position of the timeline. + * + * **Syntax**: `[ [ auto | <length-percentage> ]{1,2} ]#` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/view-timeline-inset + */ + "view-timeline-inset"?: Property.ViewTimelineInset<TLength> | undefined; + /** + * The **`view-timeline-name`** CSS property is used to define the name of a _named view progress timeline_, which is progressed through based on the change in visibility of an element (known as the _subject_) inside a scrollable element (_scroller_). `view-timeline` is set on the subject. + * + * **Syntax**: `none | <dashed-ident>#` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/view-timeline-name + */ + "view-timeline-name"?: Property.ViewTimelineName | undefined; + /** + * The **`view-transition-name`** CSS property provides the selected element with a distinct identifying name (a `<custom-ident>`) and causes it to participate in a separate view transition from the root view transition — or no view transition if the `none` value is specified. + * + * **Syntax**: `none | <custom-ident>` + * + * **Initial value**: `none` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **111** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/view-transition-name + */ + "view-transition-name"?: Property.ViewTransitionName | undefined; + /** + * The **`visibility`** CSS property shows or hides an element without changing the layout of a document. The property can also hide rows or columns in a `<table>`. + * + * **Syntax**: `visible | hidden | collapse` + * + * **Initial value**: `visible` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/visibility + */ + visibility?: Property.Visibility | undefined; + /** + * The **`white-space`** CSS property sets how white space inside an element is handled. + * + * **Syntax**: `normal | pre | nowrap | pre-wrap | pre-line | break-spaces | [ <'white-space-collapse'> || <'text-wrap'> || <'white-space-trim'> ]` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/white-space + */ + "white-space"?: Property.WhiteSpace | undefined; + /** + * The **`white-space-collapse`** CSS property controls how white space inside an element is collapsed. + * + * **Syntax**: `collapse | discard | preserve | preserve-breaks | preserve-spaces | break-spaces` + * + * **Initial value**: `collapse` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **114** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/white-space-collapse + */ + "white-space-collapse"?: Property.WhiteSpaceCollapse | undefined; + /** + * **Syntax**: `none | discard-before || discard-after || discard-inner` + * + * **Initial value**: `none` + */ + "white-space-trim"?: Property.WhiteSpaceTrim | undefined; + /** + * The **`widows`** CSS property sets the minimum number of lines in a block container that must be shown at the _top_ of a page, region, or column. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `2` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :---: | + * | **25** | No | **1.3** | **12** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/widows + */ + widows?: Property.Widows | undefined; + /** + * The **`width`** CSS property sets an element's width. By default, it sets the width of the content area, but if `box-sizing` is set to `border-box`, it sets the width of the border area. + * + * **Syntax**: `auto | <length> | <percentage> | min-content | max-content | fit-content | fit-content(<length-percentage>)` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/width + */ + width?: Property.Width<TLength> | undefined; + /** + * The **`will-change`** CSS property hints to browsers how an element is expected to change. Browsers may set up optimizations before an element is actually changed. These kinds of optimizations can increase the responsiveness of a page by doing potentially expensive work before they are actually required. + * + * **Syntax**: `auto | <animateable-feature>#` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :--: | :-: | + * | **36** | **36** | **9.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/will-change + */ + "will-change"?: Property.WillChange | undefined; + /** + * The **`word-break`** CSS property sets whether line breaks appear wherever the text would otherwise overflow its content box. + * + * **Syntax**: `normal | break-all | keep-all | break-word` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **15** | **3** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/word-break + */ + "word-break"?: Property.WordBreak | undefined; + /** + * The **`word-spacing`** CSS property sets the length of space between words and between tags. + * + * **Syntax**: `normal | <length>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **6** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/word-spacing + */ + "word-spacing"?: Property.WordSpacing<TLength> | undefined; + /** + * The **`overflow-wrap`** CSS property applies to inline elements, setting whether the browser should insert line breaks within an otherwise unbreakable string to prevent text from overflowing its line box. + * + * **Syntax**: `normal | break-word` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :-----: | :-: | + * | **≤80** | **≤72** | **≤13.1** | **≤80** | No | + */ + "word-wrap"?: Property.WordWrap | undefined; + /** + * The **`writing-mode`** CSS property sets whether lines of text are laid out horizontally or vertically, as well as the direction in which blocks progress. When set for an entire document, it should be set on the root element (`html` element for HTML documents). + * + * **Syntax**: `horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr` + * + * **Initial value**: `horizontal-tb` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :----: | :---: | + * | **48** | **41** | **10.1** | **12** | **9** | + * | 8 _-x-_ | | 5.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/writing-mode + */ + "writing-mode"?: Property.WritingMode | undefined; + /** + * The **`z-index`** CSS property sets the z-order of a positioned element and its descendants or flex items. Overlapping elements with a larger z-index cover those with a smaller one. + * + * **Syntax**: `auto | <integer>` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/z-index + */ + "z-index"?: Property.ZIndex | undefined; + /** + * The non-standard **`zoom`** CSS property can be used to control the magnification level of an element. `transform: scale()` should be used instead of this property, if possible. However, unlike CSS Transforms, `zoom` affects the layout size of the element. + * + * **Syntax**: `normal | reset | <number> | <percentage>` + * + * **Initial value**: `normal` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :-----: | + * | **1** | n/a | **3.1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/zoom + */ + zoom?: Property.Zoom | undefined; +} + +export interface StandardShorthandPropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> { + /** + * The **`all`** shorthand CSS property resets all of an element's properties except `unicode-bidi`, `direction`, and CSS Custom Properties. It can set properties to their initial or inherited values, or to the values specified in another cascade layer or stylesheet origin. + * + * **Syntax**: `initial | inherit | unset | revert | revert-layer` + * + * **Initial value**: There is no practical initial value for it. + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :--: | :-: | + * | **37** | **27** | **9.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/all + */ + all?: Property.All | undefined; + /** + * The **`animation`** shorthand CSS property applies an animation between styles. It is a shorthand for `animation-name`, `animation-duration`, `animation-timing-function`, `animation-delay`, `animation-iteration-count`, `animation-direction`, `animation-fill-mode`, and `animation-play-state`. + * + * **Syntax**: `<single-animation>#` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **43** | **16** | **9** | **12** | **10** | + * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation + */ + animation?: Property.Animation<TTime> | undefined; + /** + * The **`animation-range`** CSS shorthand property is used to set the start and end of an animation's attachment range along its timeline, i.e. where along the timeline an animation will start and end. + * + * **Syntax**: `[ <'animation-range-start'> <'animation-range-end'>? ]#` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | No | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/animation-range + */ + "animation-range"?: Property.AnimationRange<TLength> | undefined; + /** + * The **`background`** shorthand CSS property sets all background style properties at once, such as color, image, origin and size, or repeat method. + * + * **Syntax**: `[ <bg-layer> , ]* <final-bg-layer>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background + */ + background?: Property.Background<TLength> | undefined; + /** + * The **`background-position`** CSS property sets the initial position for each background image. The position is relative to the position layer set by `background-origin`. + * + * **Syntax**: `<bg-position>#` + * + * **Initial value**: `0% 0%` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/background-position + */ + "background-position"?: Property.BackgroundPosition<TLength> | undefined; + /** + * The **`border`** shorthand CSS property sets an element's border. It sets the values of `border-width`, `border-style`, and `border-color`. + * + * **Syntax**: `<line-width> || <line-style> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border + */ + border?: Property.Border<TLength> | undefined; + /** + * The **`border-block`** CSS property is a shorthand property for setting the individual logical block border property values in a single place in the style sheet. + * + * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block + */ + "border-block"?: Property.BorderBlock<TLength> | undefined; + /** + * The **`border-block-end`** CSS property is a shorthand property for setting the individual logical block-end border property values in a single place in the style sheet. + * + * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-end + */ + "border-block-end"?: Property.BorderBlockEnd<TLength> | undefined; + /** + * The **`border-block-start`** CSS property is a shorthand property for setting the individual logical block-start border property values in a single place in the style sheet. + * + * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-block-start + */ + "border-block-start"?: Property.BorderBlockStart<TLength> | undefined; + /** + * The **`border-bottom`** shorthand CSS property sets an element's bottom border. It sets the values of `border-bottom-width`, `border-bottom-style` and `border-bottom-color`. + * + * **Syntax**: `<line-width> || <line-style> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-bottom + */ + "border-bottom"?: Property.BorderBottom<TLength> | undefined; + /** + * The **`border-color`** shorthand CSS property sets the color of an element's border. + * + * **Syntax**: `<color>{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-color + */ + "border-color"?: Property.BorderColor | undefined; + /** + * The **`border-image`** CSS property draws an image around a given element. It replaces the element's regular border. + * + * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-------: | :-----: | :----: | :----: | + * | **16** | **15** | **6** | **12** | **11** | + * | 7 _-x-_ | 3.5 _-x-_ | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-image + */ + "border-image"?: Property.BorderImage | undefined; + /** + * The **`border-inline`** CSS property is a shorthand property for setting the individual logical inline border property values in a single place in the style sheet. + * + * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline + */ + "border-inline"?: Property.BorderInline<TLength> | undefined; + /** + * The **`border-inline-end`** CSS property is a shorthand property for setting the individual logical inline-end border property values in a single place in the style sheet. + * + * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-end + */ + "border-inline-end"?: Property.BorderInlineEnd<TLength> | undefined; + /** + * The **`border-inline-start`** CSS property is a shorthand property for setting the individual logical inline-start border property values in a single place in the style sheet. + * + * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **41** | **12.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-inline-start + */ + "border-inline-start"?: Property.BorderInlineStart<TLength> | undefined; + /** + * The **`border-left`** shorthand CSS property sets all the properties of an element's left border. + * + * **Syntax**: `<line-width> || <line-style> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-left + */ + "border-left"?: Property.BorderLeft<TLength> | undefined; + /** + * The **`border-radius`** CSS property rounds the corners of an element's outer border edge. You can set a single radius to make circular corners, or two radii to make elliptical corners. + * + * **Syntax**: `<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :---: | + * | **4** | **4** | **5** | **12** | **9** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-radius + */ + "border-radius"?: Property.BorderRadius<TLength> | undefined; + /** + * The **`border-right`** shorthand CSS property sets all the properties of an element's right border. + * + * **Syntax**: `<line-width> || <line-style> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-----: | + * | **1** | **1** | **1** | **12** | **5.5** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-right + */ + "border-right"?: Property.BorderRight<TLength> | undefined; + /** + * The **`border-style`** shorthand CSS property sets the line style for all four sides of an element's border. + * + * **Syntax**: `<line-style>{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-style + */ + "border-style"?: Property.BorderStyle | undefined; + /** + * The **`border-top`** shorthand CSS property sets all the properties of an element's top border. + * + * **Syntax**: `<line-width> || <line-style> || <color>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-top + */ + "border-top"?: Property.BorderTop<TLength> | undefined; + /** + * The **`border-width`** shorthand CSS property sets the width of an element's border. + * + * **Syntax**: `<line-width>{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/border-width + */ + "border-width"?: Property.BorderWidth<TLength> | undefined; + /** **Syntax**: `<'caret-color'> || <'caret-shape'>` */ + caret?: Property.Caret | undefined; + /** + * The **`column-rule`** shorthand CSS property sets the width, style, and color of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-----: | :----: | :----: | + * | **50** | **52** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/column-rule + */ + "column-rule"?: Property.ColumnRule<TLength> | undefined; + /** + * The **`columns`** CSS shorthand property sets the number of columns to use when drawing an element's contents, as well as those columns' widths. + * + * **Syntax**: `<'column-width'> || <'column-count'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----: | :----: | :----: | + * | **50** | **52** | **9** | **12** | **10** | + * | | | 3 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/columns + */ + columns?: Property.Columns<TLength> | undefined; + /** + * The **`contain-intrinsic-size`** CSS shorthand property sets the size of an element that a browser will use for layout when the element is subject to size containment. + * + * **Syntax**: `[ auto? [ none | <length> ] ]{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **83** | **107** | **17** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-size + */ + "contain-intrinsic-size"?: Property.ContainIntrinsicSize<TLength> | undefined; + /** + * The **container** shorthand CSS property establishes the element as a query container and specifies the name or name for the containment context used in a container query. + * + * **Syntax**: `<'container-name'> [ / <'container-type'> ]?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **105** | **110** | **16** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/container + */ + container?: Property.Container | undefined; + /** + * The **`flex`** CSS shorthand property sets how a flex _item_ will grow or shrink to fit the space available in its flex container. + * + * **Syntax**: `none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :------: | + * | **29** | **20** | **9** | **12** | **11** | + * | 21 _-x-_ | | 7 _-x-_ | | 10 _-x-_ | + * + * @see https://developer.mozilla.org/docs/Web/CSS/flex + */ + flex?: Property.Flex<TLength> | undefined; + /** + * The **`flex-flow`** CSS shorthand property specifies the direction of a flex container, as well as its wrapping behavior. + * + * **Syntax**: `<'flex-direction'> || <'flex-wrap'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :-----: | :----: | :----: | + * | **29** | **28** | **9** | **12** | **11** | + * | 21 _-x-_ | | 7 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/flex-flow + */ + "flex-flow"?: Property.FlexFlow | undefined; + /** + * The **`font`** CSS shorthand property sets all the different properties of an element's font. Alternatively, it sets an element's font to a system font. + * + * **Syntax**: `[ [ <'font-style'> || <font-variant-css21> || <'font-weight'> || <'font-stretch'> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'> ] | caption | icon | menu | message-box | small-caption | status-bar` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/font + */ + font?: Property.Font | undefined; + /** + * The **`gap`** CSS property sets the gaps (gutters) between rows and columns. It is a shorthand for `row-gap` and `column-gap`. + * + * **Syntax**: `<'row-gap'> <'column-gap'>?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/gap + */ + gap?: Property.Gap<TLength> | undefined; + /** + * The **`grid`** CSS property is a shorthand property that sets all of the explicit and implicit grid properties in a single declaration. + * + * **Syntax**: `<'grid-template'> | <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>? | [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid + */ + grid?: Property.Grid | undefined; + /** + * The **`grid-area`** CSS shorthand property specifies a grid item's size and location within a grid by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the edges of its grid area. + * + * **Syntax**: `<grid-line> [ / <grid-line> ]{0,3}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-area + */ + "grid-area"?: Property.GridArea | undefined; + /** + * The **`grid-column`** CSS shorthand property specifies a grid item's size and location within a grid column by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start and inline-end edge of its grid area. + * + * **Syntax**: `<grid-line> [ / <grid-line> ]?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-column + */ + "grid-column"?: Property.GridColumn | undefined; + /** + * The **`grid-row`** CSS shorthand property specifies a grid item's size and location within a grid row by contributing a line, a span, or nothing (automatic) to its grid placement, thereby specifying the inline-start and inline-end edge of its grid area. + * + * **Syntax**: `<grid-line> [ / <grid-line> ]?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-row + */ + "grid-row"?: Property.GridRow | undefined; + /** + * The **`grid-template`** CSS property is a shorthand property for defining grid columns, grid rows, and grid areas. + * + * **Syntax**: `none | [ <'grid-template-rows'> / <'grid-template-columns'> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :-: | + * | **57** | **52** | **10.1** | **16** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/grid-template + */ + "grid-template"?: Property.GridTemplate | undefined; + /** + * The **`inset`** CSS property is a shorthand that corresponds to the `top`, `right`, `bottom`, and/or `left` properties. It has the same multi-value syntax of the `margin` shorthand. + * + * **Syntax**: `<'top'>{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inset + */ + inset?: Property.Inset<TLength> | undefined; + /** + * The **`inset-block`** CSS property defines the logical block start and end offsets of an element, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top` and `bottom`, or `right` and `left` properties depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **63** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inset-block + */ + "inset-block"?: Property.InsetBlock<TLength> | undefined; + /** + * The **`inset-inline`** CSS property defines the logical start and end offsets of an element in the inline direction, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top` and `bottom`, or `right` and `left` properties depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **63** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/inset-inline + */ + "inset-inline"?: Property.InsetInline<TLength> | undefined; + /** + * **Syntax**: `none | <integer>` + * + * **Initial value**: `none` + */ + "line-clamp"?: Property.LineClamp | undefined; + /** + * The **`list-style`** CSS shorthand property allows you to set all the list style properties at once. + * + * **Syntax**: `<'list-style-type'> || <'list-style-position'> || <'list-style-image'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/list-style + */ + "list-style"?: Property.ListStyle | undefined; + /** + * The **`margin`** CSS shorthand property sets the margin area on all four sides of an element. + * + * **Syntax**: `[ <length> | <percentage> | auto ]{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin + */ + margin?: Property.Margin<TLength> | undefined; + /** + * The **`margin-block`** CSS shorthand property defines the logical block start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'margin-left'>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-block + */ + "margin-block"?: Property.MarginBlock<TLength> | undefined; + /** + * The **`margin-inline`** CSS shorthand property is a shorthand property that defines both the logical inline start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'margin-left'>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/margin-inline + */ + "margin-inline"?: Property.MarginInline<TLength> | undefined; + /** + * The **`mask`** CSS shorthand property hides an element (partially or fully) by masking or clipping the image at specific points. + * + * **Syntax**: `<mask-layer>#` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-------: | :---: | :-: | + * | **1** | **53** | **15.4** | 12-79 | No | + * | | | 3.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask + */ + mask?: Property.Mask<TLength> | undefined; + /** + * The **`mask-border`** CSS shorthand property lets you create a mask along the edge of an element's border. + * + * **Syntax**: `<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------------------------------: | :-----: | :----------------------------: | :--: | :-: | + * | **1** _(-webkit-mask-box-image)_ | No | **17.2** | n/a | No | + * | | | 3.1 _(-webkit-mask-box-image)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/mask-border + */ + "mask-border"?: Property.MaskBorder | undefined; + /** + * The **`offset`** CSS shorthand property sets all the properties required for animating an element along a defined path. + * + * **Syntax**: `[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----------: | :-----: | :----: | :--: | :-: | + * | **55** | **72** | **16** | n/a | No | + * | 46 _(motion)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset + */ + motion?: Property.Offset<TLength> | undefined; + /** + * The **`offset`** CSS shorthand property sets all the properties required for animating an element along a defined path. + * + * **Syntax**: `[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----------: | :-----: | :----: | :--: | :-: | + * | **55** | **72** | **16** | n/a | No | + * | 46 _(motion)_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/offset + */ + offset?: Property.Offset<TLength> | undefined; + /** + * The **`outline`** CSS shorthand property sets most of the outline properties in a single declaration. + * + * **Syntax**: `[ <'outline-color'> || <'outline-style'> || <'outline-width'> ]` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :----: | :---: | + * | **94** | **88** | **16.4** | **94** | **8** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/outline + */ + outline?: Property.Outline<TLength> | undefined; + /** + * The **`overflow`** CSS shorthand property sets the desired behavior for an element's overflow — i.e. when an element's content is too big to fit in its block formatting context — in both directions. + * + * **Syntax**: `[ visible | hidden | clip | scroll | auto ]{1,2}` + * + * **Initial value**: `visible` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overflow + */ + overflow?: Property.Overflow | undefined; + /** + * The **`overscroll-behavior`** CSS property sets what a browser does when reaching the boundary of a scrolling area. It's a shorthand for `overscroll-behavior-x` and `overscroll-behavior-y`. + * + * **Syntax**: `[ contain | none | auto ]{1,2}` + * + * **Initial value**: `auto` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :-: | + * | **63** | **59** | **16** | **18** | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior + */ + "overscroll-behavior"?: Property.OverscrollBehavior | undefined; + /** + * The **`padding`** CSS shorthand property sets the padding area on all four sides of an element at once. + * + * **Syntax**: `[ <length> | <percentage> ]{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **4** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding + */ + padding?: Property.Padding<TLength> | undefined; + /** + * The **`padding-block`** CSS shorthand property defines the logical block start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-block + */ + "padding-block"?: Property.PaddingBlock<TLength> | undefined; + /** + * The **`padding-inline`** CSS shorthand property defines the logical inline start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **87** | **66** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/padding-inline + */ + "padding-inline"?: Property.PaddingInline<TLength> | undefined; + /** + * The **`place-content`** CSS shorthand property allows you to align content along both the block and inline directions at once (i.e. the `align-content` and `justify-content` properties) in a relevant layout system such as Grid or Flexbox. + * + * **Syntax**: `<'align-content'> <'justify-content'>?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **59** | **45** | **9** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/place-content + */ + "place-content"?: Property.PlaceContent | undefined; + /** + * The CSS **`place-items`** shorthand property allows you to align items along both the block and inline directions at once (i.e. the `align-items` and `justify-items` properties) in a relevant layout system such as Grid or Flexbox. If the second value is not set, the first value is also used for it. + * + * **Syntax**: `<'align-items'> <'justify-items'>?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **59** | **45** | **11** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/place-items + */ + "place-items"?: Property.PlaceItems | undefined; + /** + * The **`place-self`** CSS shorthand property allows you to align an individual item in both the block and inline directions at once (i.e. the `align-self` and `justify-self` properties) in a relevant layout system such as Grid or Flexbox. If the second value is not present, the first value is also used for it. + * + * **Syntax**: `<'align-self'> <'justify-self'>?` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **59** | **45** | **11** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/place-self + */ + "place-self"?: Property.PlaceSelf | undefined; + /** + * The **`scroll-margin`** shorthand property sets all of the scroll margins of an element at once, assigning values much like the `margin` property does for margins of an element. + * + * **Syntax**: `<length>{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----------------------: | :--: | :-: | + * | **69** | **90** | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin + */ + "scroll-margin"?: Property.ScrollMargin<TLength> | undefined; + /** + * The `scroll-margin-block` shorthand property sets the scroll margins of an element in the block dimension. + * + * **Syntax**: `<length>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block + */ + "scroll-margin-block"?: Property.ScrollMarginBlock<TLength> | undefined; + /** + * The `scroll-margin-inline` shorthand property sets the scroll margins of an element in the inline dimension. + * + * **Syntax**: `<length>{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline + */ + "scroll-margin-inline"?: Property.ScrollMarginInline<TLength> | undefined; + /** + * The **`scroll-padding`** shorthand property sets scroll padding on all sides of an element at once, much like the `padding` property does for padding on an element. + * + * **Syntax**: `[ auto | <length-percentage> ]{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :------: | :--: | :-: | + * | **69** | **68** | **14.1** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding + */ + "scroll-padding"?: Property.ScrollPadding<TLength> | undefined; + /** + * The `scroll-padding-block` shorthand property sets the scroll padding of an element in the block dimension. + * + * **Syntax**: `[ auto | <length-percentage> ]{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block + */ + "scroll-padding-block"?: Property.ScrollPaddingBlock<TLength> | undefined; + /** + * The `scroll-padding-inline` shorthand property sets the scroll padding of an element in the inline dimension. + * + * **Syntax**: `[ auto | <length-percentage> ]{1,2}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :--: | :-: | + * | **69** | **68** | **15** | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline + */ + "scroll-padding-inline"?: Property.ScrollPaddingInline<TLength> | undefined; + /** + * The **`scroll-margin`** shorthand property sets all of the scroll margins of an element at once, assigning values much like the `margin` property does for margins of an element. + * + * **Syntax**: `<length>{1,4}` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :-----------------------: | :--: | :-: | + * | **69** | 68-90 | **14.1** | n/a | No | + * | | | 11 _(scroll-snap-margin)_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-margin + */ + "scroll-snap-margin"?: Property.ScrollMargin<TLength> | undefined; + /** + * The **`scroll-timeline`** CSS shorthand property defines a name that can be used to identify the source element of a scroll timeline, along with the scrollbar axis that should provide the timeline. + * + * **Syntax**: `[ <'scroll-timeline-name'> <'scroll-timeline-axis'>? ]#` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/scroll-timeline + */ + "scroll-timeline"?: Property.ScrollTimeline | undefined; + /** + * The **`text-decoration`** shorthand CSS property sets the appearance of decorative lines on text. It is a shorthand for `text-decoration-line`, `text-decoration-color`, `text-decoration-style`, and the newer `text-decoration-thickness` property. + * + * **Syntax**: `<'text-decoration-line'> || <'text-decoration-style'> || <'text-decoration-color'> || <'text-decoration-thickness'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :----: | :-----: | :----: | :----: | :---: | + * | **1** | **1** | **1** | **12** | **3** | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-decoration + */ + "text-decoration"?: Property.TextDecoration<TLength> | undefined; + /** + * The **`text-emphasis`** CSS property applies emphasis marks to text (except spaces and control characters). It is a shorthand for `text-emphasis-style` and `text-emphasis-color`. + * + * **Syntax**: `<'text-emphasis-style'> || <'text-emphasis-color'>` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :------: | :-----: | :----: | :--: | :-: | + * | **99** | **46** | **7** | n/a | No | + * | 25 _-x-_ | | | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/text-emphasis + */ + "text-emphasis"?: Property.TextEmphasis | undefined; + /** + * The **`transition`** CSS property is a shorthand property for `transition-property`, `transition-duration`, `transition-timing-function`, and `transition-delay`. + * + * **Syntax**: `<single-transition>#` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :-------: | :----: | :----: | + * | **26** | **16** | **9** | **12** | **10** | + * | 1 _-x-_ | | 3.1 _-x-_ | | | + * + * @see https://developer.mozilla.org/docs/Web/CSS/transition + */ + transition?: Property.Transition<TTime> | undefined; + /** + * The **`view-timeline`** CSS shorthand property is used to define a _named view progress timeline_, which is progressed through based on the change in visibility of an element (known as the _subject_) inside a scrollable element (_scroller_). `view-timeline` is set on the subject. + * + * **Syntax**: `[ <'view-timeline-name'> <'view-timeline-axis'>? ]#` + * + * | Chrome | Firefox | Safari | Edge | IE | + * | :-----: | :-----: | :----: | :--: | :-: | + * | **115** | n/a | No | n/a | No | + * + * @see https://developer.mozilla.org/docs/Web/CSS/view-timeline + */ + "view-timeline"?: Property.ViewTimeline | undefined; +} + +export interface StandardPropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> + extends StandardLonghandPropertiesHyphen<TLength, TTime>, + StandardShorthandPropertiesHyphen<TLength, TTime> {} + +export interface VendorLonghandPropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> { + /** + * The **`animation-delay`** CSS property specifies the amount of time to wait from applying the animation to an element before beginning to perform the animation. The animation can start later, immediately from its beginning, or immediately and partway through the animation. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + "-moz-animation-delay"?: Property.AnimationDelay<TTime> | undefined; + /** + * The **`animation-direction`** CSS property sets whether an animation should play forward, backward, or alternate back and forth between playing the sequence forward and backward. + * + * **Syntax**: `<single-animation-direction>#` + * + * **Initial value**: `normal` + */ + "-moz-animation-direction"?: Property.AnimationDirection | undefined; + /** + * The **`animation-duration`** CSS property sets the length of time that an animation takes to complete one cycle. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + "-moz-animation-duration"?: Property.AnimationDuration<TTime> | undefined; + /** + * The **`animation-fill-mode`** CSS property sets how a CSS animation applies styles to its target before and after its execution. + * + * **Syntax**: `<single-animation-fill-mode>#` + * + * **Initial value**: `none` + */ + "-moz-animation-fill-mode"?: Property.AnimationFillMode | undefined; + /** + * The **`animation-iteration-count`** CSS property sets the number of times an animation sequence should be played before stopping. + * + * **Syntax**: `<single-animation-iteration-count>#` + * + * **Initial value**: `1` + */ + "-moz-animation-iteration-count"?: Property.AnimationIterationCount | undefined; + /** + * The **`animation-name`** CSS property specifies the names of one or more `@keyframes` at-rules that describe the animation to apply to an element. Multiple `@keyframe` at-rules are specified as a comma-separated list of names. If the specified name does not match any `@keyframe` at-rule, no properties are animated. + * + * **Syntax**: `[ none | <keyframes-name> ]#` + * + * **Initial value**: `none` + */ + "-moz-animation-name"?: Property.AnimationName | undefined; + /** + * The **`animation-play-state`** CSS property sets whether an animation is running or paused. + * + * **Syntax**: `<single-animation-play-state>#` + * + * **Initial value**: `running` + */ + "-moz-animation-play-state"?: Property.AnimationPlayState | undefined; + /** + * The **`animation-timing-function`** CSS property sets how an animation progresses through the duration of each cycle. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + */ + "-moz-animation-timing-function"?: Property.AnimationTimingFunction | undefined; + /** + * The **`appearance`** CSS property is used to control native appearance of UI controls, that are based on operating system's theme. + * + * **Syntax**: `none | button | button-arrow-down | button-arrow-next | button-arrow-previous | button-arrow-up | button-bevel | button-focus | caret | checkbox | checkbox-container | checkbox-label | checkmenuitem | dualbutton | groupbox | listbox | listitem | menuarrow | menubar | menucheckbox | menuimage | menuitem | menuitemtext | menulist | menulist-button | menulist-text | menulist-textfield | menupopup | menuradio | menuseparator | meterbar | meterchunk | progressbar | progressbar-vertical | progresschunk | progresschunk-vertical | radio | radio-container | radio-label | radiomenuitem | range | range-thumb | resizer | resizerpanel | scale-horizontal | scalethumbend | scalethumb-horizontal | scalethumbstart | scalethumbtick | scalethumb-vertical | scale-vertical | scrollbarbutton-down | scrollbarbutton-left | scrollbarbutton-right | scrollbarbutton-up | scrollbarthumb-horizontal | scrollbarthumb-vertical | scrollbartrack-horizontal | scrollbartrack-vertical | searchfield | separator | sheet | spinner | spinner-downbutton | spinner-textfield | spinner-upbutton | splitter | statusbar | statusbarpanel | tab | tabpanel | tabpanels | tab-scroll-arrow-back | tab-scroll-arrow-forward | textfield | textfield-multiline | toolbar | toolbarbutton | toolbarbutton-dropdown | toolbargripper | toolbox | tooltip | treeheader | treeheadercell | treeheadersortarrow | treeitem | treeline | treetwisty | treetwistyopen | treeview | -moz-mac-unified-toolbar | -moz-win-borderless-glass | -moz-win-browsertabbar-toolbox | -moz-win-communicationstext | -moz-win-communications-toolbox | -moz-win-exclude-glass | -moz-win-glass | -moz-win-mediatext | -moz-win-media-toolbox | -moz-window-button-box | -moz-window-button-box-maximized | -moz-window-button-close | -moz-window-button-maximize | -moz-window-button-minimize | -moz-window-button-restore | -moz-window-frame-bottom | -moz-window-frame-left | -moz-window-frame-right | -moz-window-titlebar | -moz-window-titlebar-maximized` + * + * **Initial value**: `none` (but this value is overridden in the user agent CSS) + */ + "-moz-appearance"?: Property.MozAppearance | undefined; + /** + * The **`-moz-binding`** CSS property is used by Mozilla-based applications to attach an XBL binding to a DOM element. + * + * **Syntax**: `<url> | none` + * + * **Initial value**: `none` + */ + "-moz-binding"?: Property.MozBinding | undefined; + /** + * In Mozilla applications like Firefox, the **`-moz-border-bottom-colors`** CSS property sets a list of colors for the bottom border. + * + * **Syntax**: `<color>+ | none` + * + * **Initial value**: `none` + */ + "-moz-border-bottom-colors"?: Property.MozBorderBottomColors | undefined; + /** + * The **`border-inline-end-color`** CSS property defines the color of the logical inline-end border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color`, `border-right-color`, `border-bottom-color`, or `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>` + * + * **Initial value**: `currentcolor` + */ + "-moz-border-end-color"?: Property.BorderInlineEndColor | undefined; + /** + * The **`border-inline-end-style`** CSS property defines the style of the logical inline end border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style`, `border-right-style`, `border-bottom-style`, or `border-left-style` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + */ + "-moz-border-end-style"?: Property.BorderInlineEndStyle | undefined; + /** + * The **`border-inline-end-width`** CSS property defines the width of the logical inline-end border of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-width`, `border-right-width`, `border-bottom-width`, or `border-left-width` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-width'>` + * + * **Initial value**: `medium` + */ + "-moz-border-end-width"?: Property.BorderInlineEndWidth<TLength> | undefined; + /** + * In Mozilla applications like Firefox, the **`-moz-border-left-colors`** CSS property sets a list of colors for the left border. + * + * **Syntax**: `<color>+ | none` + * + * **Initial value**: `none` + */ + "-moz-border-left-colors"?: Property.MozBorderLeftColors | undefined; + /** + * In Mozilla applications like Firefox, the **`-moz-border-right-colors`** CSS property sets a list of colors for the right border. + * + * **Syntax**: `<color>+ | none` + * + * **Initial value**: `none` + */ + "-moz-border-right-colors"?: Property.MozBorderRightColors | undefined; + /** + * The **`border-inline-start-color`** CSS property defines the color of the logical inline start border of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-color`, `border-right-color`, `border-bottom-color`, or `border-left-color` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-color'>` + * + * **Initial value**: `currentcolor` + */ + "-moz-border-start-color"?: Property.BorderInlineStartColor | undefined; + /** + * The **`border-inline-start-style`** CSS property defines the style of the logical inline start border of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the `border-top-style`, `border-right-style`, `border-bottom-style`, or `border-left-style` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'border-top-style'>` + * + * **Initial value**: `none` + */ + "-moz-border-start-style"?: Property.BorderInlineStartStyle | undefined; + /** + * In Mozilla applications like Firefox, the **`-moz-border-top-colors`** CSS property sets a list of colors for the top border. + * + * **Syntax**: `<color>+ | none` + * + * **Initial value**: `none` + */ + "-moz-border-top-colors"?: Property.MozBorderTopColors | undefined; + /** + * The **`box-sizing`** CSS property sets how the total width and height of an element is calculated. + * + * **Syntax**: `content-box | border-box` + * + * **Initial value**: `content-box` + */ + "-moz-box-sizing"?: Property.BoxSizing | undefined; + /** + * The **`column-count`** CSS property breaks an element's content into the specified number of columns. + * + * **Syntax**: `<integer> | auto` + * + * **Initial value**: `auto` + */ + "-moz-column-count"?: Property.ColumnCount | undefined; + /** + * The **`column-fill`** CSS property controls how an element's contents are balanced when broken into columns. + * + * **Syntax**: `auto | balance | balance-all` + * + * **Initial value**: `balance` + */ + "-moz-column-fill"?: Property.ColumnFill | undefined; + /** + * The **`column-rule-color`** CSS property sets the color of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + */ + "-moz-column-rule-color"?: Property.ColumnRuleColor | undefined; + /** + * The **`column-rule-style`** CSS property sets the style of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'border-style'>` + * + * **Initial value**: `none` + */ + "-moz-column-rule-style"?: Property.ColumnRuleStyle | undefined; + /** + * The **`column-rule-width`** CSS property sets the width of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'border-width'>` + * + * **Initial value**: `medium` + */ + "-moz-column-rule-width"?: Property.ColumnRuleWidth<TLength> | undefined; + /** + * The **`column-width`** CSS property sets the ideal column width in a multi-column layout. The container will have as many columns as can fit without any of them having a width less than the `column-width` value. If the width of the container is narrower than the specified value, the single column's width will be smaller than the declared column width. + * + * **Syntax**: `<length> | auto` + * + * **Initial value**: `auto` + */ + "-moz-column-width"?: Property.ColumnWidth<TLength> | undefined; + /** + * The **`-moz-context-properties`** property can be used within privileged contexts in Firefox to share the values of specified properties of the element with a child SVG image. + * + * **Syntax**: `none | [ fill | fill-opacity | stroke | stroke-opacity ]#` + * + * **Initial value**: `none` + */ + "-moz-context-properties"?: Property.MozContextProperties | undefined; + /** + * The **`font-feature-settings`** CSS property controls advanced typographic features in OpenType fonts. + * + * **Syntax**: `normal | <feature-tag-value>#` + * + * **Initial value**: `normal` + */ + "-moz-font-feature-settings"?: Property.FontFeatureSettings | undefined; + /** + * The **`font-language-override`** CSS property controls the use of language-specific glyphs in a typeface. + * + * **Syntax**: `normal | <string>` + * + * **Initial value**: `normal` + */ + "-moz-font-language-override"?: Property.FontLanguageOverride | undefined; + /** + * The **`hyphens`** CSS property specifies how words should be hyphenated when text wraps across multiple lines. It can prevent hyphenation entirely, hyphenate at manually-specified points within the text, or let the browser automatically insert hyphens where appropriate. + * + * **Syntax**: `none | manual | auto` + * + * **Initial value**: `manual` + */ + "-moz-hyphens"?: Property.Hyphens | undefined; + /** + * For certain XUL elements and pseudo-elements that use an image from the `list-style-image` property, this property specifies a region of the image that is used in place of the whole image. This allows elements to use different pieces of the same image to improve performance. + * + * **Syntax**: `<shape> | auto` + * + * **Initial value**: `auto` + */ + "-moz-image-region"?: Property.MozImageRegion | undefined; + /** + * The **`margin-inline-end`** CSS property defines the logical inline end margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. In other words, it corresponds to the `margin-top`, `margin-right`, `margin-bottom` or `margin-left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + */ + "-moz-margin-end"?: Property.MarginInlineEnd<TLength> | undefined; + /** + * The **`margin-inline-start`** CSS property defines the logical inline start margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. It corresponds to the `margin-top`, `margin-right`, `margin-bottom`, or `margin-left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + */ + "-moz-margin-start"?: Property.MarginInlineStart<TLength> | undefined; + /** + * The **`-moz-orient`** CSS property specifies the orientation of the element to which it's applied. + * + * **Syntax**: `inline | block | horizontal | vertical` + * + * **Initial value**: `inline` + */ + "-moz-orient"?: Property.MozOrient | undefined; + /** + * The **`font-smooth`** CSS property controls the application of anti-aliasing when fonts are rendered. + * + * **Syntax**: `auto | never | always | <absolute-size> | <length>` + * + * **Initial value**: `auto` + */ + "-moz-osx-font-smoothing"?: Property.FontSmooth<TLength> | undefined; + /** + * In Mozilla applications, the **`-moz-outline-radius-bottomleft`** CSS property can be used to round the bottom-left corner of an element's `outline`. + * + * **Syntax**: `<outline-radius>` + * + * **Initial value**: `0` + */ + "-moz-outline-radius-bottomleft"?: Property.MozOutlineRadiusBottomleft<TLength> | undefined; + /** + * In Mozilla applications, the **`-moz-outline-radius-bottomright`** CSS property can be used to round the bottom-right corner of an element's `outline`. + * + * **Syntax**: `<outline-radius>` + * + * **Initial value**: `0` + */ + "-moz-outline-radius-bottomright"?: Property.MozOutlineRadiusBottomright<TLength> | undefined; + /** + * In Mozilla applications, the **`-moz-outline-radius-topleft`** CSS property can be used to round the top-left corner of an element's `outline`. + * + * **Syntax**: `<outline-radius>` + * + * **Initial value**: `0` + */ + "-moz-outline-radius-topleft"?: Property.MozOutlineRadiusTopleft<TLength> | undefined; + /** + * In Mozilla applications, the **`-moz-outline-radius-topright`** CSS property can be used to round the top-right corner of an element's `outline`. + * + * **Syntax**: `<outline-radius>` + * + * **Initial value**: `0` + */ + "-moz-outline-radius-topright"?: Property.MozOutlineRadiusTopright<TLength> | undefined; + /** + * The **`padding-inline-end`** CSS property defines the logical inline end padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + */ + "-moz-padding-end"?: Property.PaddingInlineEnd<TLength> | undefined; + /** + * The **`padding-inline-start`** CSS property defines the logical inline start padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + */ + "-moz-padding-start"?: Property.PaddingInlineStart<TLength> | undefined; + /** + * **`-moz-stack-sizing`** is an extended CSS property. Normally, a `<xul:stack>` will change its size so that all of its child elements are completely visible. For example, moving a child of the stack far to the right will widen the stack so the child remains visible. + * + * **Syntax**: `ignore | stretch-to-fit` + * + * **Initial value**: `stretch-to-fit` + */ + "-moz-stack-sizing"?: Property.MozStackSizing | undefined; + /** + * The **`tab-size`** CSS property is used to customize the width of tab characters (U+0009). + * + * **Syntax**: `<integer> | <length>` + * + * **Initial value**: `8` + */ + "-moz-tab-size"?: Property.TabSize<TLength> | undefined; + /** + * The **`-moz-text-blink`** non-standard Mozilla CSS extension specifies the blink mode. + * + * **Syntax**: `none | blink` + * + * **Initial value**: `none` + */ + "-moz-text-blink"?: Property.MozTextBlink | undefined; + /** + * The **`text-size-adjust`** CSS property controls the text inflation algorithm used on some smartphones and tablets. Other browsers will ignore this property. + * + * **Syntax**: `none | auto | <percentage>` + * + * **Initial value**: `auto` for smartphone browsers supporting inflation, `none` in other cases (and then not modifiable). + */ + "-moz-text-size-adjust"?: Property.TextSizeAdjust | undefined; + /** + * The **`-moz-user-focus`** CSS property is used to indicate whether an element can have the focus. + * + * **Syntax**: `ignore | normal | select-after | select-before | select-menu | select-same | select-all | none` + * + * **Initial value**: `none` + */ + "-moz-user-focus"?: Property.MozUserFocus | undefined; + /** + * The **`user-modify`** property has no effect in Firefox. It was originally planned to determine whether or not the content of an element can be edited by a user. + * + * **Syntax**: `read-only | read-write | write-only` + * + * **Initial value**: `read-only` + */ + "-moz-user-modify"?: Property.MozUserModify | undefined; + /** + * The **`user-select`** CSS property controls whether the user can select text. This doesn't have any effect on content loaded as part of a browser's user interface (its chrome), except in textboxes. + * + * **Syntax**: `auto | text | none | contain | all` + * + * **Initial value**: `auto` + */ + "-moz-user-select"?: Property.UserSelect | undefined; + /** + * The **`-moz-window-dragging`** CSS property specifies whether a window is draggable or not. It only works in Chrome code, and only on Mac OS X. + * + * **Syntax**: `drag | no-drag` + * + * **Initial value**: `drag` + */ + "-moz-window-dragging"?: Property.MozWindowDragging | undefined; + /** + * The **`-moz-window-shadow`** CSS property specifies whether a window will have a shadow. It only works on Mac OS X. + * + * **Syntax**: `default | menu | tooltip | sheet | none` + * + * **Initial value**: `default` + */ + "-moz-window-shadow"?: Property.MozWindowShadow | undefined; + /** + * The **`-ms-accelerator`** CSS property is a Microsoft extension that sets or retrieves a string indicating whether the object represents a keyboard shortcut. + * + * **Syntax**: `false | true` + * + * **Initial value**: `false` + */ + "-ms-accelerator"?: Property.MsAccelerator | undefined; + /** + * The **`-ms-block-progression`** CSS property is a Microsoft extension that specifies the block progression and layout orientation. + * + * **Syntax**: `tb | rl | bt | lr` + * + * **Initial value**: `tb` + */ + "-ms-block-progression"?: Property.MsBlockProgression | undefined; + /** + * The **`-ms-content-zoom-chaining`** CSS property is a Microsoft extension specifying the zoom behavior that occurs when a user hits the zoom limit during page manipulation. + * + * **Syntax**: `none | chained` + * + * **Initial value**: `none` + */ + "-ms-content-zoom-chaining"?: Property.MsContentZoomChaining | undefined; + /** + * The **`-ms-content-zoom-limit-max`** CSS property is a Microsoft extension that specifies the selected elements' maximum zoom factor. + * + * **Syntax**: `<percentage>` + * + * **Initial value**: `400%` + */ + "-ms-content-zoom-limit-max"?: Property.MsContentZoomLimitMax | undefined; + /** + * The **`-ms-content-zoom-limit-min`** CSS property is a Microsoft extension that specifies the minimum zoom factor. + * + * **Syntax**: `<percentage>` + * + * **Initial value**: `100%` + */ + "-ms-content-zoom-limit-min"?: Property.MsContentZoomLimitMin | undefined; + /** + * The **`-ms-content-zoom-snap-points`** CSS property is a Microsoft extension that specifies where zoom snap-points are located. + * + * **Syntax**: `snapInterval( <percentage>, <percentage> ) | snapList( <percentage># )` + * + * **Initial value**: `snapInterval(0%, 100%)` + */ + "-ms-content-zoom-snap-points"?: Property.MsContentZoomSnapPoints | undefined; + /** + * The **`-ms-content-zoom-snap-type`** CSS property is a Microsoft extension that specifies how zooming is affected by defined snap-points. + * + * **Syntax**: `none | proximity | mandatory` + * + * **Initial value**: `none` + */ + "-ms-content-zoom-snap-type"?: Property.MsContentZoomSnapType | undefined; + /** + * The **`-ms-content-zooming`** CSS property is a Microsoft extension that specifies whether zooming is enabled. + * + * **Syntax**: `none | zoom` + * + * **Initial value**: zoom for the top level element, none for all other elements + */ + "-ms-content-zooming"?: Property.MsContentZooming | undefined; + /** + * The `-ms-filter` CSS property is a Microsoft extension that sets or retrieves the filter or collection of filters applied to an object. + * + * **Syntax**: `<string>` + * + * **Initial value**: "" (the empty string) + */ + "-ms-filter"?: Property.MsFilter | undefined; + /** + * The **`flex-direction`** CSS property sets how flex items are placed in the flex container defining the main axis and the direction (normal or reversed). + * + * **Syntax**: `row | row-reverse | column | column-reverse` + * + * **Initial value**: `row` + */ + "-ms-flex-direction"?: Property.FlexDirection | undefined; + /** + * The **`flex-grow`** CSS property sets the flex grow factor of a flex item's main size. + * + * **Syntax**: `<number>` + * + * **Initial value**: `0` + */ + "-ms-flex-positive"?: Property.FlexGrow | undefined; + /** + * The **`-ms-flow-from`** CSS property is a Microsoft extension that gets or sets a value identifying a region container in the document that accepts the content flow from the data source. + * + * **Syntax**: `[ none | <custom-ident> ]#` + * + * **Initial value**: `none` + */ + "-ms-flow-from"?: Property.MsFlowFrom | undefined; + /** + * The **`-ms-flow-into`** CSS property is a Microsoft extension that gets or sets a value identifying an iframe container in the document that serves as the region's data source. + * + * **Syntax**: `[ none | <custom-ident> ]#` + * + * **Initial value**: `none` + */ + "-ms-flow-into"?: Property.MsFlowInto | undefined; + /** + * The **`grid-template-columns`** CSS property defines the line names and track sizing functions of the grid columns. + * + * **Syntax**: `none | <track-list> | <auto-track-list>` + * + * **Initial value**: `none` + */ + "-ms-grid-columns"?: Property.MsGridColumns<TLength> | undefined; + /** + * The **`grid-template-rows`** CSS property defines the line names and track sizing functions of the grid rows. + * + * **Syntax**: `none | <track-list> | <auto-track-list>` + * + * **Initial value**: `none` + */ + "-ms-grid-rows"?: Property.MsGridRows<TLength> | undefined; + /** + * The **`-ms-high-contrast-adjust`** CSS property is a Microsoft extension that gets or sets a value indicating whether to override any CSS properties that would have been set in high contrast mode. + * + * **Syntax**: `auto | none` + * + * **Initial value**: `auto` + */ + "-ms-high-contrast-adjust"?: Property.MsHighContrastAdjust | undefined; + /** + * The **`-ms-hyphenate-limit-chars`** CSS property is a Microsoft extension that specifies one to three values indicating the minimum number of characters in a hyphenated word. If the word does not meet the required minimum number of characters in the word, before the hyphen, or after the hyphen, then the word is not hyphenated. + * + * **Syntax**: `auto | <integer>{1,3}` + * + * **Initial value**: `auto` + */ + "-ms-hyphenate-limit-chars"?: Property.MsHyphenateLimitChars | undefined; + /** + * The **`-ms-hyphenate-limit-lines`** CSS property is a Microsoft extension specifying the maximum number of consecutive lines in an element that may be ended with a hyphenated word. + * + * **Syntax**: `no-limit | <integer>` + * + * **Initial value**: `no-limit` + */ + "-ms-hyphenate-limit-lines"?: Property.MsHyphenateLimitLines | undefined; + /** + * The `**-ms-hyphenate-limit-zone**` CSS property is a Microsoft extension specifying the width of the hyphenation zone. + * + * **Syntax**: `<percentage> | <length>` + * + * **Initial value**: `0` + */ + "-ms-hyphenate-limit-zone"?: Property.MsHyphenateLimitZone<TLength> | undefined; + /** + * The **`hyphens`** CSS property specifies how words should be hyphenated when text wraps across multiple lines. It can prevent hyphenation entirely, hyphenate at manually-specified points within the text, or let the browser automatically insert hyphens where appropriate. + * + * **Syntax**: `none | manual | auto` + * + * **Initial value**: `manual` + */ + "-ms-hyphens"?: Property.Hyphens | undefined; + /** + * The **`-ms-ime-align`** CSS property is a Microsoft extension aligning the Input Method Editor (IME) candidate window box relative to the element on which the IME composition is active. The extension is implemented in Microsoft Edge and Internet Explorer 11. + * + * **Syntax**: `auto | after` + * + * **Initial value**: `auto` + */ + "-ms-ime-align"?: Property.MsImeAlign | undefined; + /** + * The **`line-break`** CSS property sets how to break lines of Chinese, Japanese, or Korean (CJK) text when working with punctuation and symbols. + * + * **Syntax**: `auto | loose | normal | strict | anywhere` + * + * **Initial value**: `auto` + */ + "-ms-line-break"?: Property.LineBreak | undefined; + /** + * The **`order`** CSS property sets the order to lay out an item in a flex or grid container. Items in a container are sorted by ascending `order` value and then by their source code order. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `0` + */ + "-ms-order"?: Property.Order | undefined; + /** + * The **`-ms-overflow-style`** CSS property is a Microsoft extension controlling the behavior of scrollbars when the content of an element overflows. + * + * **Syntax**: `auto | none | scrollbar | -ms-autohiding-scrollbar` + * + * **Initial value**: `auto` + */ + "-ms-overflow-style"?: Property.MsOverflowStyle | undefined; + /** + * The **`overflow-x`** CSS property sets what shows when content overflows a block-level element's left and right edges. This may be nothing, a scroll bar, or the overflow content. + * + * **Syntax**: `visible | hidden | clip | scroll | auto` + * + * **Initial value**: `visible` + */ + "-ms-overflow-x"?: Property.OverflowX | undefined; + /** + * The **`overflow-y`** CSS property sets what shows when content overflows a block-level element's top and bottom edges. This may be nothing, a scroll bar, or the overflow content. + * + * **Syntax**: `visible | hidden | clip | scroll | auto` + * + * **Initial value**: `visible` + */ + "-ms-overflow-y"?: Property.OverflowY | undefined; + /** + * The `**-ms-scroll-chaining**` CSS property is a Microsoft extension that specifies the scrolling behavior that occurs when a user hits the scroll limit during a manipulation. + * + * **Syntax**: `chained | none` + * + * **Initial value**: `chained` + */ + "-ms-scroll-chaining"?: Property.MsScrollChaining | undefined; + /** + * The `**-ms-scroll-limit-x-max**` CSS property is a Microsoft extension that specifies the maximum value for the `Element.scrollLeft` property. + * + * **Syntax**: `auto | <length>` + * + * **Initial value**: `auto` + */ + "-ms-scroll-limit-x-max"?: Property.MsScrollLimitXMax<TLength> | undefined; + /** + * The **`-ms-scroll-limit-x-min`** CSS property is a Microsoft extension that specifies the minimum value for the `Element.scrollLeft` property. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + */ + "-ms-scroll-limit-x-min"?: Property.MsScrollLimitXMin<TLength> | undefined; + /** + * The **`-ms-scroll-limit-y-max`** CSS property is a Microsoft extension that specifies the maximum value for the `Element.scrollTop` property. + * + * **Syntax**: `auto | <length>` + * + * **Initial value**: `auto` + */ + "-ms-scroll-limit-y-max"?: Property.MsScrollLimitYMax<TLength> | undefined; + /** + * The **`-ms-scroll-limit-y-min`** CSS property is a Microsoft extension that specifies the minimum value for the `Element.scrollTop` property. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + */ + "-ms-scroll-limit-y-min"?: Property.MsScrollLimitYMin<TLength> | undefined; + /** + * The **`-ms-scroll-rails`** CSS property is a Microsoft extension that specifies whether scrolling locks to the primary axis of motion. + * + * **Syntax**: `none | railed` + * + * **Initial value**: `railed` + */ + "-ms-scroll-rails"?: Property.MsScrollRails | undefined; + /** + * The **`-ms-scroll-snap-points-x`** CSS property is a Microsoft extension that specifies where snap-points will be located along the x-axis. + * + * **Syntax**: `snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )` + * + * **Initial value**: `snapInterval(0px, 100%)` + */ + "-ms-scroll-snap-points-x"?: Property.MsScrollSnapPointsX | undefined; + /** + * The **`-ms-scroll-snap-points-y`** CSS property is a Microsoft extension that specifies where snap-points will be located along the y-axis. + * + * **Syntax**: `snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )` + * + * **Initial value**: `snapInterval(0px, 100%)` + */ + "-ms-scroll-snap-points-y"?: Property.MsScrollSnapPointsY | undefined; + /** + * The **`scroll-snap-type`** CSS property sets how strictly snap points are enforced on the scroll container in case there is one. + * + * **Syntax**: `none | proximity | mandatory` + * + * **Initial value**: `none` + */ + "-ms-scroll-snap-type"?: Property.MsScrollSnapType | undefined; + /** + * The **`-ms-scroll-translation`** CSS property is a Microsoft extension that specifies whether vertical-to-horizontal scroll wheel translation occurs on the specified element. + * + * **Syntax**: `none | vertical-to-horizontal` + * + * **Initial value**: `none` + */ + "-ms-scroll-translation"?: Property.MsScrollTranslation | undefined; + /** + * The **`-ms-scrollbar-3dlight-color`** CSS property is a Microsoft extension specifying the color of the top and left edges of the scroll box and scroll arrows of a scroll bar. + * + * **Syntax**: `<color>` + * + * **Initial value**: depends on user agent + */ + "-ms-scrollbar-3dlight-color"?: Property.MsScrollbar3dlightColor | undefined; + /** + * The **`-ms-scrollbar-arrow-color`** CSS property is a Microsoft extension that specifies the color of the arrow elements of a scroll arrow. + * + * **Syntax**: `<color>` + * + * **Initial value**: `ButtonText` + */ + "-ms-scrollbar-arrow-color"?: Property.MsScrollbarArrowColor | undefined; + /** + * The `**-ms-scrollbar-base-color**` CSS property is a Microsoft extension that specifies the base color of the main elements of a scroll bar. + * + * **Syntax**: `<color>` + * + * **Initial value**: depends on user agent + */ + "-ms-scrollbar-base-color"?: Property.MsScrollbarBaseColor | undefined; + /** + * The **`-ms-scrollbar-darkshadow-color`** CSS property is a Microsoft extension that specifies the color of a scroll bar's gutter. + * + * **Syntax**: `<color>` + * + * **Initial value**: `ThreeDDarkShadow` + */ + "-ms-scrollbar-darkshadow-color"?: Property.MsScrollbarDarkshadowColor | undefined; + /** + * The `**-ms-scrollbar-face-color**` CSS property is a Microsoft extension that specifies the color of the scroll box and scroll arrows of a scroll bar. + * + * **Syntax**: `<color>` + * + * **Initial value**: `ThreeDFace` + */ + "-ms-scrollbar-face-color"?: Property.MsScrollbarFaceColor | undefined; + /** + * The `**-ms-scrollbar-highlight-color**` CSS property is a Microsoft extension that specifies the color of the slider tray, the top and left edges of the scroll box, and the scroll arrows of a scroll bar. + * + * **Syntax**: `<color>` + * + * **Initial value**: `ThreeDHighlight` + */ + "-ms-scrollbar-highlight-color"?: Property.MsScrollbarHighlightColor | undefined; + /** + * The **`-ms-scrollbar-shadow-color`** CSS property is a Microsoft extension that specifies the color of the bottom and right edges of the scroll box and scroll arrows of a scroll bar. + * + * **Syntax**: `<color>` + * + * **Initial value**: `ThreeDDarkShadow` + */ + "-ms-scrollbar-shadow-color"?: Property.MsScrollbarShadowColor | undefined; + /** + * The **`-ms-scrollbar-track-color`** CSS property is a Microsoft extension that specifies the color of the track element of a scrollbar. + * + * **Syntax**: `<color>` + * + * **Initial value**: `Scrollbar` + */ + "-ms-scrollbar-track-color"?: Property.MsScrollbarTrackColor | undefined; + /** + * The **`-ms-text-autospace`** CSS property is a Microsoft extension that specifies the autospacing and narrow space width adjustment of text. + * + * **Syntax**: `none | ideograph-alpha | ideograph-numeric | ideograph-parenthesis | ideograph-space` + * + * **Initial value**: `none` + */ + "-ms-text-autospace"?: Property.MsTextAutospace | undefined; + /** + * The **`text-combine-upright`** CSS property sets the combination of characters into the space of a single character. If the combined text is wider than 1em, the user agent must fit the contents within 1em. The resulting composition is treated as a single upright glyph for layout and decoration. This property only has an effect in vertical writing modes. + * + * **Syntax**: `none | all | [ digits <integer>? ]` + * + * **Initial value**: `none` + */ + "-ms-text-combine-horizontal"?: Property.TextCombineUpright | undefined; + /** + * The **`text-overflow`** CSS property sets how hidden overflow content is signaled to users. It can be clipped, display an ellipsis ('`…`'), or display a custom string. + * + * **Syntax**: `[ clip | ellipsis | <string> ]{1,2}` + * + * **Initial value**: `clip` + */ + "-ms-text-overflow"?: Property.TextOverflow | undefined; + /** + * The **`touch-action`** CSS property sets how an element's region can be manipulated by a touchscreen user (for example, by zooming features built into the browser). + * + * **Syntax**: `auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation` + * + * **Initial value**: `auto` + */ + "-ms-touch-action"?: Property.TouchAction | undefined; + /** + * The **`-ms-touch-select`** CSS property is a Microsoft extension that toggles the gripper visual elements that enable touch text selection. + * + * **Syntax**: `grippers | none` + * + * **Initial value**: `grippers` + */ + "-ms-touch-select"?: Property.MsTouchSelect | undefined; + /** + * The **`transform`** CSS property lets you rotate, scale, skew, or translate an element. It modifies the coordinate space of the CSS visual formatting model. + * + * **Syntax**: `none | <transform-list>` + * + * **Initial value**: `none` + */ + "-ms-transform"?: Property.Transform | undefined; + /** + * The **`transform-origin`** CSS property sets the origin for an element's transformations. + * + * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?` + * + * **Initial value**: `50% 50% 0` + */ + "-ms-transform-origin"?: Property.TransformOrigin<TLength> | undefined; + /** + * The **`transition-delay`** CSS property specifies the duration to wait before starting a property's transition effect when its value changes. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + "-ms-transition-delay"?: Property.TransitionDelay<TTime> | undefined; + /** + * The **`transition-duration`** CSS property sets the length of time a transition animation should take to complete. By default, the value is `0s`, meaning that no animation will occur. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + "-ms-transition-duration"?: Property.TransitionDuration<TTime> | undefined; + /** + * The **`transition-property`** CSS property sets the CSS properties to which a transition effect should be applied. + * + * **Syntax**: `none | <single-transition-property>#` + * + * **Initial value**: all + */ + "-ms-transition-property"?: Property.TransitionProperty | undefined; + /** + * The **`transition-timing-function`** CSS property sets how intermediate values are calculated for CSS properties being affected by a transition effect. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + */ + "-ms-transition-timing-function"?: Property.TransitionTimingFunction | undefined; + /** + * The **`user-select`** CSS property controls whether the user can select text. This doesn't have any effect on content loaded as part of a browser's user interface (its chrome), except in textboxes. + * + * **Syntax**: `none | element | text` + * + * **Initial value**: `text` + */ + "-ms-user-select"?: Property.MsUserSelect | undefined; + /** + * The **`word-break`** CSS property sets whether line breaks appear wherever the text would otherwise overflow its content box. + * + * **Syntax**: `normal | break-all | keep-all | break-word` + * + * **Initial value**: `normal` + */ + "-ms-word-break"?: Property.WordBreak | undefined; + /** + * The **`-ms-wrap-flow`** CSS property is a Microsoft extension that specifies how exclusions impact inline content within block-level elements. + * + * **Syntax**: `auto | both | start | end | maximum | clear` + * + * **Initial value**: `auto` + */ + "-ms-wrap-flow"?: Property.MsWrapFlow | undefined; + /** + * The **`-ms-wrap-margin`** CSS property is a Microsoft extension that specifies a margin that offsets the inner wrap shape from other shapes. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + */ + "-ms-wrap-margin"?: Property.MsWrapMargin<TLength> | undefined; + /** + * The **`-ms-wrap-through`** CSS property is a Microsoft extension that specifies how content should wrap around an exclusion element. + * + * **Syntax**: `wrap | none` + * + * **Initial value**: `wrap` + */ + "-ms-wrap-through"?: Property.MsWrapThrough | undefined; + /** + * The **`writing-mode`** CSS property sets whether lines of text are laid out horizontally or vertically, as well as the direction in which blocks progress. When set for an entire document, it should be set on the root element (`html` element for HTML documents). + * + * **Syntax**: `horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr` + * + * **Initial value**: `horizontal-tb` + */ + "-ms-writing-mode"?: Property.WritingMode | undefined; + /** + * The CSS **`align-content`** property sets the distribution of space between and around content items along a flexbox's cross-axis or a grid's block axis. + * + * **Syntax**: `normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>` + * + * **Initial value**: `normal` + */ + "-webkit-align-content"?: Property.AlignContent | undefined; + /** + * The CSS **`align-items`** property sets the `align-self` value on all direct children as a group. In Flexbox, it controls the alignment of items on the Cross Axis. In Grid Layout, it controls the alignment of items on the Block Axis within their grid area. + * + * **Syntax**: `normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]` + * + * **Initial value**: `normal` + */ + "-webkit-align-items"?: Property.AlignItems | undefined; + /** + * The **`align-self`** CSS property overrides a grid or flex item's `align-items` value. In Grid, it aligns the item inside the grid area. In Flexbox, it aligns the item on the cross axis. + * + * **Syntax**: `auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position>` + * + * **Initial value**: `auto` + */ + "-webkit-align-self"?: Property.AlignSelf | undefined; + /** + * The **`animation-delay`** CSS property specifies the amount of time to wait from applying the animation to an element before beginning to perform the animation. The animation can start later, immediately from its beginning, or immediately and partway through the animation. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + "-webkit-animation-delay"?: Property.AnimationDelay<TTime> | undefined; + /** + * The **`animation-direction`** CSS property sets whether an animation should play forward, backward, or alternate back and forth between playing the sequence forward and backward. + * + * **Syntax**: `<single-animation-direction>#` + * + * **Initial value**: `normal` + */ + "-webkit-animation-direction"?: Property.AnimationDirection | undefined; + /** + * The **`animation-duration`** CSS property sets the length of time that an animation takes to complete one cycle. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + "-webkit-animation-duration"?: Property.AnimationDuration<TTime> | undefined; + /** + * The **`animation-fill-mode`** CSS property sets how a CSS animation applies styles to its target before and after its execution. + * + * **Syntax**: `<single-animation-fill-mode>#` + * + * **Initial value**: `none` + */ + "-webkit-animation-fill-mode"?: Property.AnimationFillMode | undefined; + /** + * The **`animation-iteration-count`** CSS property sets the number of times an animation sequence should be played before stopping. + * + * **Syntax**: `<single-animation-iteration-count>#` + * + * **Initial value**: `1` + */ + "-webkit-animation-iteration-count"?: Property.AnimationIterationCount | undefined; + /** + * The **`animation-name`** CSS property specifies the names of one or more `@keyframes` at-rules that describe the animation to apply to an element. Multiple `@keyframe` at-rules are specified as a comma-separated list of names. If the specified name does not match any `@keyframe` at-rule, no properties are animated. + * + * **Syntax**: `[ none | <keyframes-name> ]#` + * + * **Initial value**: `none` + */ + "-webkit-animation-name"?: Property.AnimationName | undefined; + /** + * The **`animation-play-state`** CSS property sets whether an animation is running or paused. + * + * **Syntax**: `<single-animation-play-state>#` + * + * **Initial value**: `running` + */ + "-webkit-animation-play-state"?: Property.AnimationPlayState | undefined; + /** + * The **`animation-timing-function`** CSS property sets how an animation progresses through the duration of each cycle. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + */ + "-webkit-animation-timing-function"?: Property.AnimationTimingFunction | undefined; + /** + * The **`appearance`** CSS property is used to control native appearance of UI controls, that are based on operating system's theme. + * + * **Syntax**: `none | button | button-bevel | caret | checkbox | default-button | inner-spin-button | listbox | listitem | media-controls-background | media-controls-fullscreen-background | media-current-time-display | media-enter-fullscreen-button | media-exit-fullscreen-button | media-fullscreen-button | media-mute-button | media-overlay-play-button | media-play-button | media-seek-back-button | media-seek-forward-button | media-slider | media-sliderthumb | media-time-remaining-display | media-toggle-closed-captions-button | media-volume-slider | media-volume-slider-container | media-volume-sliderthumb | menulist | menulist-button | menulist-text | menulist-textfield | meter | progress-bar | progress-bar-value | push-button | radio | searchfield | searchfield-cancel-button | searchfield-decoration | searchfield-results-button | searchfield-results-decoration | slider-horizontal | slider-vertical | sliderthumb-horizontal | sliderthumb-vertical | square-button | textarea | textfield | -apple-pay-button` + * + * **Initial value**: `none` (but this value is overridden in the user agent CSS) + */ + "-webkit-appearance"?: Property.WebkitAppearance | undefined; + /** + * The **`backdrop-filter`** CSS property lets you apply graphical effects such as blurring or color shifting to the area behind an element. Because it applies to everything _behind_ the element, to see the effect you must make the element or its background at least partially transparent. + * + * **Syntax**: `none | <filter-function-list>` + * + * **Initial value**: `none` + */ + "-webkit-backdrop-filter"?: Property.BackdropFilter | undefined; + /** + * The **`backface-visibility`** CSS property sets whether the back face of an element is visible when turned towards the user. + * + * **Syntax**: `visible | hidden` + * + * **Initial value**: `visible` + */ + "-webkit-backface-visibility"?: Property.BackfaceVisibility | undefined; + /** + * The **`background-clip`** CSS property sets whether an element's background extends underneath its border box, padding box, or content box. + * + * **Syntax**: `<box>#` + * + * **Initial value**: `border-box` + */ + "-webkit-background-clip"?: Property.BackgroundClip | undefined; + /** + * The **`background-origin`** CSS property sets the background's origin: from the border start, inside the border, or inside the padding. + * + * **Syntax**: `<box>#` + * + * **Initial value**: `padding-box` + */ + "-webkit-background-origin"?: Property.BackgroundOrigin | undefined; + /** + * The **`background-size`** CSS property sets the size of the element's background image. The image can be left to its natural size, stretched, or constrained to fit the available space. + * + * **Syntax**: `<bg-size>#` + * + * **Initial value**: `auto auto` + */ + "-webkit-background-size"?: Property.BackgroundSize<TLength> | undefined; + /** + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + */ + "-webkit-border-before-color"?: Property.WebkitBorderBeforeColor | undefined; + /** + * **Syntax**: `<'border-style'>` + * + * **Initial value**: `none` + */ + "-webkit-border-before-style"?: Property.WebkitBorderBeforeStyle | undefined; + /** + * **Syntax**: `<'border-width'>` + * + * **Initial value**: `medium` + */ + "-webkit-border-before-width"?: Property.WebkitBorderBeforeWidth<TLength> | undefined; + /** + * The **`border-bottom-left-radius`** CSS property rounds the bottom-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + */ + "-webkit-border-bottom-left-radius"?: Property.BorderBottomLeftRadius<TLength> | undefined; + /** + * The **`border-bottom-right-radius`** CSS property rounds the bottom-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + */ + "-webkit-border-bottom-right-radius"?: Property.BorderBottomRightRadius<TLength> | undefined; + /** + * The **`border-image-slice`** CSS property divides the image specified by `border-image-source` into regions. These regions form the components of an element's border image. + * + * **Syntax**: `<number-percentage>{1,4} && fill?` + * + * **Initial value**: `100%` + */ + "-webkit-border-image-slice"?: Property.BorderImageSlice | undefined; + /** + * The **`border-top-left-radius`** CSS property rounds the top-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + */ + "-webkit-border-top-left-radius"?: Property.BorderTopLeftRadius<TLength> | undefined; + /** + * The **`border-top-right-radius`** CSS property rounds the top-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + */ + "-webkit-border-top-right-radius"?: Property.BorderTopRightRadius<TLength> | undefined; + /** + * The **`box-decoration-break`** CSS property specifies how an element's fragments should be rendered when broken across multiple lines, columns, or pages. + * + * **Syntax**: `slice | clone` + * + * **Initial value**: `slice` + */ + "-webkit-box-decoration-break"?: Property.BoxDecorationBreak | undefined; + /** + * The **`-webkit-box-reflect`** CSS property lets you reflect the content of an element in one specific direction. + * + * **Syntax**: `[ above | below | right | left ]? <length>? <image>?` + * + * **Initial value**: `none` + */ + "-webkit-box-reflect"?: Property.WebkitBoxReflect<TLength> | undefined; + /** + * The **`box-shadow`** CSS property adds shadow effects around an element's frame. You can set multiple effects separated by commas. A box shadow is described by X and Y offsets relative to the element, blur and spread radius, and color. + * + * **Syntax**: `none | <shadow>#` + * + * **Initial value**: `none` + */ + "-webkit-box-shadow"?: Property.BoxShadow | undefined; + /** + * The **`box-sizing`** CSS property sets how the total width and height of an element is calculated. + * + * **Syntax**: `content-box | border-box` + * + * **Initial value**: `content-box` + */ + "-webkit-box-sizing"?: Property.BoxSizing | undefined; + /** + * The **`clip-path`** CSS property creates a clipping region that sets what part of an element should be shown. Parts that are inside the region are shown, while those outside are hidden. + * + * **Syntax**: `<clip-source> | [ <basic-shape> || <geometry-box> ] | none` + * + * **Initial value**: `none` + */ + "-webkit-clip-path"?: Property.ClipPath | undefined; + /** + * The **`column-count`** CSS property breaks an element's content into the specified number of columns. + * + * **Syntax**: `<integer> | auto` + * + * **Initial value**: `auto` + */ + "-webkit-column-count"?: Property.ColumnCount | undefined; + /** + * The **`column-fill`** CSS property controls how an element's contents are balanced when broken into columns. + * + * **Syntax**: `auto | balance | balance-all` + * + * **Initial value**: `balance` + */ + "-webkit-column-fill"?: Property.ColumnFill | undefined; + /** + * The **`column-rule-color`** CSS property sets the color of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + */ + "-webkit-column-rule-color"?: Property.ColumnRuleColor | undefined; + /** + * The **`column-rule-style`** CSS property sets the style of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'border-style'>` + * + * **Initial value**: `none` + */ + "-webkit-column-rule-style"?: Property.ColumnRuleStyle | undefined; + /** + * The **`column-rule-width`** CSS property sets the width of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'border-width'>` + * + * **Initial value**: `medium` + */ + "-webkit-column-rule-width"?: Property.ColumnRuleWidth<TLength> | undefined; + /** + * The **`column-span`** CSS property makes it possible for an element to span across all columns when its value is set to `all`. + * + * **Syntax**: `none | all` + * + * **Initial value**: `none` + */ + "-webkit-column-span"?: Property.ColumnSpan | undefined; + /** + * The **`column-width`** CSS property sets the ideal column width in a multi-column layout. The container will have as many columns as can fit without any of them having a width less than the `column-width` value. If the width of the container is narrower than the specified value, the single column's width will be smaller than the declared column width. + * + * **Syntax**: `<length> | auto` + * + * **Initial value**: `auto` + */ + "-webkit-column-width"?: Property.ColumnWidth<TLength> | undefined; + /** + * The **`filter`** CSS property applies graphical effects like blur or color shift to an element. Filters are commonly used to adjust the rendering of images, backgrounds, and borders. + * + * **Syntax**: `none | <filter-function-list>` + * + * **Initial value**: `none` + */ + "-webkit-filter"?: Property.Filter | undefined; + /** + * The **`flex-basis`** CSS property sets the initial main size of a flex item. It sets the size of the content box unless otherwise set with `box-sizing`. + * + * **Syntax**: `content | <'width'>` + * + * **Initial value**: `auto` + */ + "-webkit-flex-basis"?: Property.FlexBasis<TLength> | undefined; + /** + * The **`flex-direction`** CSS property sets how flex items are placed in the flex container defining the main axis and the direction (normal or reversed). + * + * **Syntax**: `row | row-reverse | column | column-reverse` + * + * **Initial value**: `row` + */ + "-webkit-flex-direction"?: Property.FlexDirection | undefined; + /** + * The **`flex-grow`** CSS property sets the flex grow factor of a flex item's main size. + * + * **Syntax**: `<number>` + * + * **Initial value**: `0` + */ + "-webkit-flex-grow"?: Property.FlexGrow | undefined; + /** + * The **`flex-shrink`** CSS property sets the flex shrink factor of a flex item. If the size of all flex items is larger than the flex container, items shrink to fit according to `flex-shrink`. + * + * **Syntax**: `<number>` + * + * **Initial value**: `1` + */ + "-webkit-flex-shrink"?: Property.FlexShrink | undefined; + /** + * The **`flex-wrap`** CSS property sets whether flex items are forced onto one line or can wrap onto multiple lines. If wrapping is allowed, it sets the direction that lines are stacked. + * + * **Syntax**: `nowrap | wrap | wrap-reverse` + * + * **Initial value**: `nowrap` + */ + "-webkit-flex-wrap"?: Property.FlexWrap | undefined; + /** + * The **`font-feature-settings`** CSS property controls advanced typographic features in OpenType fonts. + * + * **Syntax**: `normal | <feature-tag-value>#` + * + * **Initial value**: `normal` + */ + "-webkit-font-feature-settings"?: Property.FontFeatureSettings | undefined; + /** + * The **`font-kerning`** CSS property sets the use of the kerning information stored in a font. + * + * **Syntax**: `auto | normal | none` + * + * **Initial value**: `auto` + */ + "-webkit-font-kerning"?: Property.FontKerning | undefined; + /** + * The **`font-smooth`** CSS property controls the application of anti-aliasing when fonts are rendered. + * + * **Syntax**: `auto | never | always | <absolute-size> | <length>` + * + * **Initial value**: `auto` + */ + "-webkit-font-smoothing"?: Property.FontSmooth<TLength> | undefined; + /** + * The **`font-variant-ligatures`** CSS property controls which ligatures and contextual forms are used in textual content of the elements it applies to. This leads to more harmonized forms in the resulting text. + * + * **Syntax**: `normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]` + * + * **Initial value**: `normal` + */ + "-webkit-font-variant-ligatures"?: Property.FontVariantLigatures | undefined; + /** + * The **`hyphenate-character`** CSS property sets the character (or string) used at the end of a line before a hyphenation break. + * + * **Syntax**: `auto | <string>` + * + * **Initial value**: `auto` + */ + "-webkit-hyphenate-character"?: Property.HyphenateCharacter | undefined; + /** + * The **`hyphens`** CSS property specifies how words should be hyphenated when text wraps across multiple lines. It can prevent hyphenation entirely, hyphenate at manually-specified points within the text, or let the browser automatically insert hyphens where appropriate. + * + * **Syntax**: `none | manual | auto` + * + * **Initial value**: `manual` + */ + "-webkit-hyphens"?: Property.Hyphens | undefined; + /** + * The `initial-letter` CSS property sets styling for dropped, raised, and sunken initial letters. + * + * **Syntax**: `normal | [ <number> <integer>? ]` + * + * **Initial value**: `normal` + */ + "-webkit-initial-letter"?: Property.InitialLetter | undefined; + /** + * The CSS **`justify-content`** property defines how the browser distributes space between and around content items along the main-axis of a flex container, and the inline axis of a grid container. + * + * **Syntax**: `normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]` + * + * **Initial value**: `normal` + */ + "-webkit-justify-content"?: Property.JustifyContent | undefined; + /** + * The **`line-break`** CSS property sets how to break lines of Chinese, Japanese, or Korean (CJK) text when working with punctuation and symbols. + * + * **Syntax**: `auto | loose | normal | strict | anywhere` + * + * **Initial value**: `auto` + */ + "-webkit-line-break"?: Property.LineBreak | undefined; + /** + * The **`-webkit-line-clamp`** CSS property allows limiting of the contents of a block to the specified number of lines. + * + * **Syntax**: `none | <integer>` + * + * **Initial value**: `none` + */ + "-webkit-line-clamp"?: Property.WebkitLineClamp | undefined; + /** + * The **`margin-inline-end`** CSS property defines the logical inline end margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. In other words, it corresponds to the `margin-top`, `margin-right`, `margin-bottom` or `margin-left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + */ + "-webkit-margin-end"?: Property.MarginInlineEnd<TLength> | undefined; + /** + * The **`margin-inline-start`** CSS property defines the logical inline start margin of an element, which maps to a physical margin depending on the element's writing mode, directionality, and text orientation. It corresponds to the `margin-top`, `margin-right`, `margin-bottom`, or `margin-left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'margin-left'>` + * + * **Initial value**: `0` + */ + "-webkit-margin-start"?: Property.MarginInlineStart<TLength> | undefined; + /** + * If a `mask-image` is specified, `-webkit-mask-attachment` determines whether the mask image's position is fixed within the viewport, or scrolls along with its containing block. + * + * **Syntax**: `<attachment>#` + * + * **Initial value**: `scroll` + */ + "-webkit-mask-attachment"?: Property.WebkitMaskAttachment | undefined; + /** + * The **`mask-border-outset`** CSS property specifies the distance by which an element's mask border is set out from its border box. + * + * **Syntax**: `[ <length> | <number> ]{1,4}` + * + * **Initial value**: `0` + */ + "-webkit-mask-box-image-outset"?: Property.MaskBorderOutset<TLength> | undefined; + /** + * The **`mask-border-repeat`** CSS property sets how the edge regions of a source image are adjusted to fit the dimensions of an element's mask border. + * + * **Syntax**: `[ stretch | repeat | round | space ]{1,2}` + * + * **Initial value**: `stretch` + */ + "-webkit-mask-box-image-repeat"?: Property.MaskBorderRepeat | undefined; + /** + * The **`mask-border-slice`** CSS property divides the image set by `mask-border-source` into regions. These regions are used to form the components of an element's mask border. + * + * **Syntax**: `<number-percentage>{1,4} fill?` + * + * **Initial value**: `0` + */ + "-webkit-mask-box-image-slice"?: Property.MaskBorderSlice | undefined; + /** + * The **`mask-border-source`** CSS property sets the source image used to create an element's mask border. + * + * **Syntax**: `none | <image>` + * + * **Initial value**: `none` + */ + "-webkit-mask-box-image-source"?: Property.MaskBorderSource | undefined; + /** + * The **`mask-border-width`** CSS property sets the width of an element's mask border. + * + * **Syntax**: `[ <length-percentage> | <number> | auto ]{1,4}` + * + * **Initial value**: `auto` + */ + "-webkit-mask-box-image-width"?: Property.MaskBorderWidth<TLength> | undefined; + /** + * The **`mask-clip`** CSS property determines the area which is affected by a mask. The painted content of an element must be restricted to this area. + * + * **Syntax**: `[ <box> | border | padding | content | text ]#` + * + * **Initial value**: `border` + */ + "-webkit-mask-clip"?: Property.WebkitMaskClip | undefined; + /** + * The **`-webkit-mask-composite`** property specifies the manner in which multiple mask images applied to the same element are composited with one another. Mask images are composited in the opposite order that they are declared with the `-webkit-mask-image` property. + * + * **Syntax**: `<composite-style>#` + * + * **Initial value**: `source-over` + */ + "-webkit-mask-composite"?: Property.WebkitMaskComposite | undefined; + /** + * The **`mask-image`** CSS property sets the image that is used as mask layer for an element. By default this means the alpha channel of the mask image will be multiplied with the alpha channel of the element. This can be controlled with the `mask-mode` property. + * + * **Syntax**: `<mask-reference>#` + * + * **Initial value**: `none` + */ + "-webkit-mask-image"?: Property.WebkitMaskImage | undefined; + /** + * The **`mask-origin`** CSS property sets the origin of a mask. + * + * **Syntax**: `[ <box> | border | padding | content ]#` + * + * **Initial value**: `padding` + */ + "-webkit-mask-origin"?: Property.WebkitMaskOrigin | undefined; + /** + * The **`mask-position`** CSS property sets the initial position, relative to the mask position layer set by `mask-origin`, for each defined mask image. + * + * **Syntax**: `<position>#` + * + * **Initial value**: `0% 0%` + */ + "-webkit-mask-position"?: Property.WebkitMaskPosition<TLength> | undefined; + /** + * The `-webkit-mask-position-x` CSS property sets the initial horizontal position of a mask image. + * + * **Syntax**: `[ <length-percentage> | left | center | right ]#` + * + * **Initial value**: `0%` + */ + "-webkit-mask-position-x"?: Property.WebkitMaskPositionX<TLength> | undefined; + /** + * The `-webkit-mask-position-y` CSS property sets the initial vertical position of a mask image. + * + * **Syntax**: `[ <length-percentage> | top | center | bottom ]#` + * + * **Initial value**: `0%` + */ + "-webkit-mask-position-y"?: Property.WebkitMaskPositionY<TLength> | undefined; + /** + * The **`mask-repeat`** CSS property sets how mask images are repeated. A mask image can be repeated along the horizontal axis, the vertical axis, both axes, or not repeated at all. + * + * **Syntax**: `<repeat-style>#` + * + * **Initial value**: `repeat` + */ + "-webkit-mask-repeat"?: Property.WebkitMaskRepeat | undefined; + /** + * The `-webkit-mask-repeat-x` property specifies whether and how a mask image is repeated (tiled) horizontally. + * + * **Syntax**: `repeat | no-repeat | space | round` + * + * **Initial value**: `repeat` + */ + "-webkit-mask-repeat-x"?: Property.WebkitMaskRepeatX | undefined; + /** + * The `-webkit-mask-repeat-y` property sets whether and how a mask image is repeated (tiled) vertically. + * + * **Syntax**: `repeat | no-repeat | space | round` + * + * **Initial value**: `repeat` + */ + "-webkit-mask-repeat-y"?: Property.WebkitMaskRepeatY | undefined; + /** + * The **`mask-size`** CSS property specifies the sizes of the mask images. The size of the image can be fully or partially constrained in order to preserve its intrinsic ratio. + * + * **Syntax**: `<bg-size>#` + * + * **Initial value**: `auto auto` + */ + "-webkit-mask-size"?: Property.WebkitMaskSize<TLength> | undefined; + /** + * The **`max-inline-size`** CSS property defines the horizontal or vertical maximum size of an element's block, depending on its writing mode. It corresponds to either the `max-width` or the `max-height` property, depending on the value of `writing-mode`. + * + * **Syntax**: `<'max-width'>` + * + * **Initial value**: `none` + */ + "-webkit-max-inline-size"?: Property.MaxInlineSize<TLength> | undefined; + /** + * The **`order`** CSS property sets the order to lay out an item in a flex or grid container. Items in a container are sorted by ascending `order` value and then by their source code order. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `0` + */ + "-webkit-order"?: Property.Order | undefined; + /** + * The `-webkit-overflow-scrolling` CSS property controls whether or not touch devices use momentum-based scrolling for a given element. + * + * **Syntax**: `auto | touch` + * + * **Initial value**: `auto` + */ + "-webkit-overflow-scrolling"?: Property.WebkitOverflowScrolling | undefined; + /** + * The **`padding-inline-end`** CSS property defines the logical inline end padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + */ + "-webkit-padding-end"?: Property.PaddingInlineEnd<TLength> | undefined; + /** + * The **`padding-inline-start`** CSS property defines the logical inline start padding of an element, which maps to a physical padding depending on the element's writing mode, directionality, and text orientation. + * + * **Syntax**: `<'padding-left'>` + * + * **Initial value**: `0` + */ + "-webkit-padding-start"?: Property.PaddingInlineStart<TLength> | undefined; + /** + * The **`perspective`** CSS property determines the distance between the z=0 plane and the user in order to give a 3D-positioned element some perspective. + * + * **Syntax**: `none | <length>` + * + * **Initial value**: `none` + */ + "-webkit-perspective"?: Property.Perspective<TLength> | undefined; + /** + * The **`perspective-origin`** CSS property determines the position at which the viewer is looking. It is used as the _vanishing point_ by the `perspective` property. + * + * **Syntax**: `<position>` + * + * **Initial value**: `50% 50%` + */ + "-webkit-perspective-origin"?: Property.PerspectiveOrigin<TLength> | undefined; + /** + * The **`print-color-adjust`** CSS property sets what, if anything, the user agent may do to optimize the appearance of the element on the output device. By default, the browser is allowed to make any adjustments to the element's appearance it determines to be necessary and prudent given the type and capabilities of the output device. + * + * **Syntax**: `economy | exact` + * + * **Initial value**: `economy` + */ + "-webkit-print-color-adjust"?: Property.PrintColorAdjust | undefined; + /** + * The **`ruby-position`** CSS property defines the position of a ruby element relatives to its base element. It can be positioned over the element (`over`), under it (`under`), or between the characters on their right side (`inter-character`). + * + * **Syntax**: `[ alternate || [ over | under ] ] | inter-character` + * + * **Initial value**: `alternate` + */ + "-webkit-ruby-position"?: Property.RubyPosition | undefined; + /** + * The **`scroll-snap-type`** CSS property sets how strictly snap points are enforced on the scroll container in case there is one. + * + * **Syntax**: `none | [ x | y | block | inline | both ] [ mandatory | proximity ]?` + * + * **Initial value**: `none` + */ + "-webkit-scroll-snap-type"?: Property.ScrollSnapType | undefined; + /** + * The **`shape-margin`** CSS property sets a margin for a CSS shape created using `shape-outside`. + * + * **Syntax**: `<length-percentage>` + * + * **Initial value**: `0` + */ + "-webkit-shape-margin"?: Property.ShapeMargin<TLength> | undefined; + /** + * **`-webkit-tap-highlight-color`** is a non-standard CSS property that sets the color of the highlight that appears over a link while it's being tapped. The highlighting indicates to the user that their tap is being successfully recognized, and indicates which element they're tapping on. + * + * **Syntax**: `<color>` + * + * **Initial value**: `black` + */ + "-webkit-tap-highlight-color"?: Property.WebkitTapHighlightColor | undefined; + /** + * The **`text-combine-upright`** CSS property sets the combination of characters into the space of a single character. If the combined text is wider than 1em, the user agent must fit the contents within 1em. The resulting composition is treated as a single upright glyph for layout and decoration. This property only has an effect in vertical writing modes. + * + * **Syntax**: `none | all | [ digits <integer>? ]` + * + * **Initial value**: `none` + */ + "-webkit-text-combine"?: Property.TextCombineUpright | undefined; + /** + * The **`text-decoration-color`** CSS property sets the color of decorations added to text by `text-decoration-line`. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + */ + "-webkit-text-decoration-color"?: Property.TextDecorationColor | undefined; + /** + * The **`text-decoration-line`** CSS property sets the kind of decoration that is used on text in an element, such as an underline or overline. + * + * **Syntax**: `none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error` + * + * **Initial value**: `none` + */ + "-webkit-text-decoration-line"?: Property.TextDecorationLine | undefined; + /** + * The **`text-decoration-skip`** CSS property sets what parts of an element's content any text decoration affecting the element must skip over. It controls all text decoration lines drawn by the element and also any text decoration lines drawn by its ancestors. + * + * **Syntax**: `none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]` + * + * **Initial value**: `objects` + */ + "-webkit-text-decoration-skip"?: Property.TextDecorationSkip | undefined; + /** + * The **`text-decoration-style`** CSS property sets the style of the lines specified by `text-decoration-line`. The style applies to all lines that are set with `text-decoration-line`. + * + * **Syntax**: `solid | double | dotted | dashed | wavy` + * + * **Initial value**: `solid` + */ + "-webkit-text-decoration-style"?: Property.TextDecorationStyle | undefined; + /** + * The **`text-emphasis-color`** CSS property sets the color of emphasis marks. This value can also be set using the `text-emphasis` shorthand. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + */ + "-webkit-text-emphasis-color"?: Property.TextEmphasisColor | undefined; + /** + * The **`text-emphasis-position`** CSS property sets where emphasis marks are drawn. Like ruby text, if there isn't enough room for emphasis marks, the line height is increased. + * + * **Syntax**: `[ over | under ] && [ right | left ]` + * + * **Initial value**: `over right` + */ + "-webkit-text-emphasis-position"?: Property.TextEmphasisPosition | undefined; + /** + * The **`text-emphasis-style`** CSS property sets the appearance of emphasis marks. It can also be set, and reset, using the `text-emphasis` shorthand. + * + * **Syntax**: `none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>` + * + * **Initial value**: `none` + */ + "-webkit-text-emphasis-style"?: Property.TextEmphasisStyle | undefined; + /** + * The **`-webkit-text-fill-color`** CSS property specifies the fill color of characters of text. If this property is not set, the value of the `color` property is used. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + */ + "-webkit-text-fill-color"?: Property.WebkitTextFillColor | undefined; + /** + * The **`text-orientation`** CSS property sets the orientation of the text characters in a line. It only affects text in vertical mode (when `writing-mode` is not `horizontal-tb`). It is useful for controlling the display of languages that use vertical script, and also for making vertical table headers. + * + * **Syntax**: `mixed | upright | sideways` + * + * **Initial value**: `mixed` + */ + "-webkit-text-orientation"?: Property.TextOrientation | undefined; + /** + * The **`text-size-adjust`** CSS property controls the text inflation algorithm used on some smartphones and tablets. Other browsers will ignore this property. + * + * **Syntax**: `none | auto | <percentage>` + * + * **Initial value**: `auto` for smartphone browsers supporting inflation, `none` in other cases (and then not modifiable). + */ + "-webkit-text-size-adjust"?: Property.TextSizeAdjust | undefined; + /** + * The **`-webkit-text-stroke-color`** CSS property specifies the stroke color of characters of text. If this property is not set, the value of the `color` property is used. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + */ + "-webkit-text-stroke-color"?: Property.WebkitTextStrokeColor | undefined; + /** + * The **`-webkit-text-stroke-width`** CSS property specifies the width of the stroke for text. + * + * **Syntax**: `<length>` + * + * **Initial value**: `0` + */ + "-webkit-text-stroke-width"?: Property.WebkitTextStrokeWidth<TLength> | undefined; + /** + * The **`text-underline-position`** CSS property specifies the position of the underline which is set using the `text-decoration` property's `underline` value. + * + * **Syntax**: `auto | from-font | [ under || [ left | right ] ]` + * + * **Initial value**: `auto` + */ + "-webkit-text-underline-position"?: Property.TextUnderlinePosition | undefined; + /** + * The `-webkit-touch-callout` CSS property controls the display of the default callout shown when you touch and hold a touch target. + * + * **Syntax**: `default | none` + * + * **Initial value**: `default` + */ + "-webkit-touch-callout"?: Property.WebkitTouchCallout | undefined; + /** + * The **`transform`** CSS property lets you rotate, scale, skew, or translate an element. It modifies the coordinate space of the CSS visual formatting model. + * + * **Syntax**: `none | <transform-list>` + * + * **Initial value**: `none` + */ + "-webkit-transform"?: Property.Transform | undefined; + /** + * The **`transform-origin`** CSS property sets the origin for an element's transformations. + * + * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?` + * + * **Initial value**: `50% 50% 0` + */ + "-webkit-transform-origin"?: Property.TransformOrigin<TLength> | undefined; + /** + * The **`transform-style`** CSS property sets whether children of an element are positioned in the 3D space or are flattened in the plane of the element. + * + * **Syntax**: `flat | preserve-3d` + * + * **Initial value**: `flat` + */ + "-webkit-transform-style"?: Property.TransformStyle | undefined; + /** + * The **`transition-delay`** CSS property specifies the duration to wait before starting a property's transition effect when its value changes. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + "-webkit-transition-delay"?: Property.TransitionDelay<TTime> | undefined; + /** + * The **`transition-duration`** CSS property sets the length of time a transition animation should take to complete. By default, the value is `0s`, meaning that no animation will occur. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + */ + "-webkit-transition-duration"?: Property.TransitionDuration<TTime> | undefined; + /** + * The **`transition-property`** CSS property sets the CSS properties to which a transition effect should be applied. + * + * **Syntax**: `none | <single-transition-property>#` + * + * **Initial value**: all + */ + "-webkit-transition-property"?: Property.TransitionProperty | undefined; + /** + * The **`transition-timing-function`** CSS property sets how intermediate values are calculated for CSS properties being affected by a transition effect. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + */ + "-webkit-transition-timing-function"?: Property.TransitionTimingFunction | undefined; + /** + * **Syntax**: `read-only | read-write | read-write-plaintext-only` + * + * **Initial value**: `read-only` + */ + "-webkit-user-modify"?: Property.WebkitUserModify | undefined; + /** + * The **`user-select`** CSS property controls whether the user can select text. This doesn't have any effect on content loaded as part of a browser's user interface (its chrome), except in textboxes. + * + * **Syntax**: `auto | text | none | contain | all` + * + * **Initial value**: `auto` + */ + "-webkit-user-select"?: Property.UserSelect | undefined; + /** + * The **`writing-mode`** CSS property sets whether lines of text are laid out horizontally or vertically, as well as the direction in which blocks progress. When set for an entire document, it should be set on the root element (`html` element for HTML documents). + * + * **Syntax**: `horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr` + * + * **Initial value**: `horizontal-tb` + */ + "-webkit-writing-mode"?: Property.WritingMode | undefined; +} + +export interface VendorShorthandPropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> { + /** + * The **`animation`** shorthand CSS property applies an animation between styles. It is a shorthand for `animation-name`, `animation-duration`, `animation-timing-function`, `animation-delay`, `animation-iteration-count`, `animation-direction`, `animation-fill-mode`, and `animation-play-state`. + * + * **Syntax**: `<single-animation>#` + */ + "-moz-animation"?: Property.Animation<TTime> | undefined; + /** + * The **`border-image`** CSS property draws an image around a given element. It replaces the element's regular border. + * + * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>` + */ + "-moz-border-image"?: Property.BorderImage | undefined; + /** + * The **`column-rule`** shorthand CSS property sets the width, style, and color of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>` + */ + "-moz-column-rule"?: Property.ColumnRule<TLength> | undefined; + /** + * The **`columns`** CSS shorthand property sets the number of columns to use when drawing an element's contents, as well as those columns' widths. + * + * **Syntax**: `<'column-width'> || <'column-count'>` + */ + "-moz-columns"?: Property.Columns<TLength> | undefined; + /** + * In Mozilla applications like Firefox, the **`-moz-outline-radius`** CSS shorthand property can be used to give an element's `outline` rounded corners. + * + * **Syntax**: `<outline-radius>{1,4} [ / <outline-radius>{1,4} ]?` + */ + "-moz-outline-radius"?: Property.MozOutlineRadius<TLength> | undefined; + /** + * The **`-ms-content-zoom-limit`** CSS shorthand property is a Microsoft extension that specifies values for the `-ms-content-zoom-limit-min` and `-ms-content-zoom-limit-max` properties. + * + * **Syntax**: `<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>` + */ + "-ms-content-zoom-limit"?: Property.MsContentZoomLimit | undefined; + /** + * The **`-ms-content-zoom-snap`** CSS shorthand property is a Microsoft extension that specifies values for the `-ms-content-zoom-snap-type` and `-ms-content-zoom-snap-points` properties. + * + * **Syntax**: `<'-ms-content-zoom-snap-type'> || <'-ms-content-zoom-snap-points'>` + */ + "-ms-content-zoom-snap"?: Property.MsContentZoomSnap | undefined; + /** + * The **`flex`** CSS shorthand property sets how a flex _item_ will grow or shrink to fit the space available in its flex container. + * + * **Syntax**: `none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]` + */ + "-ms-flex"?: Property.Flex<TLength> | undefined; + /** + * The **\-ms-scroll-limit** CSS property is a Microsoft extension that specifies values for the `-ms-scroll-limit-x-min`, `-ms-scroll-limit-y-min`, `-ms-scroll-limit-x-max`, and `-ms-scroll-limit-y-max` properties. + * + * **Syntax**: `<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>` + */ + "-ms-scroll-limit"?: Property.MsScrollLimit | undefined; + /** + * The **`-ms-scroll-snap-x`** CSS shorthand property is a Microsoft extension that specifies values for the `-ms-scroll-snap-type` and `-ms-scroll-snap-points-x` properties. + * + * **Syntax**: `<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>` + */ + "-ms-scroll-snap-x"?: Property.MsScrollSnapX | undefined; + /** + * The **`-ms-scroll-snap-x`** CSS shorthand property is a Microsoft extension that specifies values for the `-ms-scroll-snap-type` and `-ms-scroll-snap-points-y` properties. + * + * **Syntax**: `<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>` + */ + "-ms-scroll-snap-y"?: Property.MsScrollSnapY | undefined; + /** + * The **`transition`** CSS property is a shorthand property for `transition-property`, `transition-duration`, `transition-timing-function`, and `transition-delay`. + * + * **Syntax**: `<single-transition>#` + */ + "-ms-transition"?: Property.Transition<TTime> | undefined; + /** + * The **`animation`** shorthand CSS property applies an animation between styles. It is a shorthand for `animation-name`, `animation-duration`, `animation-timing-function`, `animation-delay`, `animation-iteration-count`, `animation-direction`, `animation-fill-mode`, and `animation-play-state`. + * + * **Syntax**: `<single-animation>#` + */ + "-webkit-animation"?: Property.Animation<TTime> | undefined; + /** + * The **`-webkit-border-before`** CSS property is a shorthand property for setting the individual logical block start border property values in a single place in the style sheet. + * + * **Syntax**: `<'border-width'> || <'border-style'> || <color>` + */ + "-webkit-border-before"?: Property.WebkitBorderBefore<TLength> | undefined; + /** + * The **`border-image`** CSS property draws an image around a given element. It replaces the element's regular border. + * + * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>` + */ + "-webkit-border-image"?: Property.BorderImage | undefined; + /** + * The **`border-radius`** CSS property rounds the corners of an element's outer border edge. You can set a single radius to make circular corners, or two radii to make elliptical corners. + * + * **Syntax**: `<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?` + */ + "-webkit-border-radius"?: Property.BorderRadius<TLength> | undefined; + /** + * The **`column-rule`** shorthand CSS property sets the width, style, and color of the line drawn between columns in a multi-column layout. + * + * **Syntax**: `<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>` + */ + "-webkit-column-rule"?: Property.ColumnRule<TLength> | undefined; + /** + * The **`columns`** CSS shorthand property sets the number of columns to use when drawing an element's contents, as well as those columns' widths. + * + * **Syntax**: `<'column-width'> || <'column-count'>` + */ + "-webkit-columns"?: Property.Columns<TLength> | undefined; + /** + * The **`flex`** CSS shorthand property sets how a flex _item_ will grow or shrink to fit the space available in its flex container. + * + * **Syntax**: `none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]` + */ + "-webkit-flex"?: Property.Flex<TLength> | undefined; + /** + * The **`flex-flow`** CSS shorthand property specifies the direction of a flex container, as well as its wrapping behavior. + * + * **Syntax**: `<'flex-direction'> || <'flex-wrap'>` + */ + "-webkit-flex-flow"?: Property.FlexFlow | undefined; + /** + * The **`mask`** CSS shorthand property hides an element (partially or fully) by masking or clipping the image at specific points. + * + * **Syntax**: `[ <mask-reference> || <position> [ / <bg-size> ]? || <repeat-style> || [ <box> | border | padding | content | text ] || [ <box> | border | padding | content ] ]#` + */ + "-webkit-mask"?: Property.WebkitMask<TLength> | undefined; + /** + * The **`mask-border`** CSS shorthand property lets you create a mask along the edge of an element's border. + * + * **Syntax**: `<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>` + */ + "-webkit-mask-box-image"?: Property.MaskBorder | undefined; + /** + * The **`text-emphasis`** CSS property applies emphasis marks to text (except spaces and control characters). It is a shorthand for `text-emphasis-style` and `text-emphasis-color`. + * + * **Syntax**: `<'text-emphasis-style'> || <'text-emphasis-color'>` + */ + "-webkit-text-emphasis"?: Property.TextEmphasis | undefined; + /** + * The **`-webkit-text-stroke`** CSS property specifies the width and color of strokes for text characters. This is a shorthand property for the longhand properties `-webkit-text-stroke-width` and `-webkit-text-stroke-color`. + * + * **Syntax**: `<length> || <color>` + */ + "-webkit-text-stroke"?: Property.WebkitTextStroke<TLength> | undefined; + /** + * The **`transition`** CSS property is a shorthand property for `transition-property`, `transition-duration`, `transition-timing-function`, and `transition-delay`. + * + * **Syntax**: `<single-transition>#` + */ + "-webkit-transition"?: Property.Transition<TTime> | undefined; +} + +export interface VendorPropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> + extends VendorLonghandPropertiesHyphen<TLength, TTime>, + VendorShorthandPropertiesHyphen<TLength, TTime> {} + +export interface ObsoletePropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> { + /** + * In combination with `elevation`, the **`azimuth`** CSS property enables different audio sources to be positioned spatially for aural presentation. This is important in that it provides a natural way to tell several voices apart, as each can be positioned to originate at a different location on the sound stage. Stereo output produce a lateral sound stage, while binaural headphones and multi-speaker setups allow for a fully three-dimensional stage. + * + * **Syntax**: `<angle> | [ [ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards` + * + * **Initial value**: `center` + * + * @deprecated + */ + azimuth?: Property.Azimuth | undefined; + /** + * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | baseline | stretch` + * + * **Initial value**: `stretch` + * + * @deprecated + */ + "box-align"?: Property.BoxAlign | undefined; + /** + * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge). + * + * **Syntax**: `normal | reverse | inherit` + * + * **Initial value**: `normal` + * + * @deprecated + */ + "box-direction"?: Property.BoxDirection | undefined; + /** + * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout. + * + * **Syntax**: `<number>` + * + * **Initial value**: `0` + * + * @deprecated + */ + "box-flex"?: Property.BoxFlex | undefined; + /** + * The **`box-flex-group`** CSS property assigns the flexbox's child elements to a flex group. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `1` + * + * @deprecated + */ + "box-flex-group"?: Property.BoxFlexGroup | undefined; + /** + * The **`box-lines`** CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes). + * + * **Syntax**: `single | multiple` + * + * **Initial value**: `single` + * + * @deprecated + */ + "box-lines"?: Property.BoxLines | undefined; + /** + * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `1` + * + * @deprecated + */ + "box-ordinal-group"?: Property.BoxOrdinalGroup | undefined; + /** + * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically. + * + * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit` + * + * **Initial value**: `inline-axis` (`horizontal` in XUL) + * + * @deprecated + */ + "box-orient"?: Property.BoxOrient | undefined; + /** + * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | justify` + * + * **Initial value**: `start` + * + * @deprecated + */ + "box-pack"?: Property.BoxPack | undefined; + /** + * The **`clip`** CSS property defines a visible portion of an element. The `clip` property applies only to absolutely positioned elements — that is, elements with `position:absolute` or `position:fixed`. + * + * **Syntax**: `<shape> | auto` + * + * **Initial value**: `auto` + * + * @deprecated + */ + clip?: Property.Clip | undefined; + /** + * The **`column-gap`** CSS property sets the size of the gap (gutter) between an element's columns. + * + * **Syntax**: `<length-percentage>` + * + * **Initial value**: `0` + * + * @deprecated + */ + "grid-column-gap"?: Property.GridColumnGap<TLength> | undefined; + /** + * The **`gap`** CSS property sets the gaps (gutters) between rows and columns. It is a shorthand for `row-gap` and `column-gap`. + * + * **Syntax**: `<'grid-row-gap'> <'grid-column-gap'>?` + * + * @deprecated + */ + "grid-gap"?: Property.GridGap<TLength> | undefined; + /** + * The **`row-gap`** CSS property sets the size of the gap (gutter) between an element's rows. + * + * **Syntax**: `<length-percentage>` + * + * **Initial value**: `0` + * + * @deprecated + */ + "grid-row-gap"?: Property.GridRowGap<TLength> | undefined; + /** + * The **`ime-mode`** CSS property controls the state of the input method editor (IME) for text fields. This property is obsolete. + * + * **Syntax**: `auto | normal | active | inactive | disabled` + * + * **Initial value**: `auto` + * + * @deprecated + */ + "ime-mode"?: Property.ImeMode | undefined; + /** + * The **`inset-block`** CSS property defines the logical block start and end offsets of an element, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top` and `bottom`, or `right` and `left` properties depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>{1,2}` + * + * @deprecated + */ + "offset-block"?: Property.InsetBlock<TLength> | undefined; + /** + * The **`inset-block-end`** CSS property defines the logical block end offset of an element, which maps to a physical inset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * @deprecated + */ + "offset-block-end"?: Property.InsetBlockEnd<TLength> | undefined; + /** + * The **`inset-block-start`** CSS property defines the logical block start offset of an element, which maps to a physical inset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * @deprecated + */ + "offset-block-start"?: Property.InsetBlockStart<TLength> | undefined; + /** + * The **`inset-inline`** CSS property defines the logical start and end offsets of an element in the inline direction, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top` and `bottom`, or `right` and `left` properties depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>{1,2}` + * + * @deprecated + */ + "offset-inline"?: Property.InsetInline<TLength> | undefined; + /** + * The **`inset-inline-end`** CSS property defines the logical inline end inset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * @deprecated + */ + "offset-inline-end"?: Property.InsetInlineEnd<TLength> | undefined; + /** + * The **`inset-inline-start`** CSS property defines the logical inline start inset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the `top`, `right`, `bottom`, or `left` property depending on the values defined for `writing-mode`, `direction`, and `text-orientation`. + * + * **Syntax**: `<'top'>` + * + * **Initial value**: `auto` + * + * @deprecated + */ + "offset-inline-start"?: Property.InsetInlineStart<TLength> | undefined; + /** + * The **`scroll-snap-coordinate`** CSS property defines the x and y coordinate positions within an element that will align with its nearest ancestor scroll container's `scroll-snap-destination` for each respective axis. + * + * **Syntax**: `none | <position>#` + * + * **Initial value**: `none` + * + * @deprecated + */ + "scroll-snap-coordinate"?: Property.ScrollSnapCoordinate<TLength> | undefined; + /** + * The **`scroll-snap-destination`** CSS property defines the position in x and y coordinates within the scroll container's visual viewport which element snap points align with. + * + * **Syntax**: `<position>` + * + * **Initial value**: `0px 0px` + * + * @deprecated + */ + "scroll-snap-destination"?: Property.ScrollSnapDestination<TLength> | undefined; + /** + * The **`scroll-snap-points-x`** CSS property defines the horizontal positioning of snap points within the content of the scroll container they are applied to. + * + * **Syntax**: `none | repeat( <length-percentage> )` + * + * **Initial value**: `none` + * + * @deprecated + */ + "scroll-snap-points-x"?: Property.ScrollSnapPointsX | undefined; + /** + * The **`scroll-snap-points-y`** CSS property defines the vertical positioning of snap points within the content of the scroll container they are applied to. + * + * **Syntax**: `none | repeat( <length-percentage> )` + * + * **Initial value**: `none` + * + * @deprecated + */ + "scroll-snap-points-y"?: Property.ScrollSnapPointsY | undefined; + /** + * The **`scroll-snap-type-x`** CSS property defines how strictly snap points are enforced on the horizontal axis of the scroll container in case there is one. + * + * **Syntax**: `none | mandatory | proximity` + * + * **Initial value**: `none` + * + * @deprecated + */ + "scroll-snap-type-x"?: Property.ScrollSnapTypeX | undefined; + /** + * The **`scroll-snap-type-y`** CSS property defines how strictly snap points are enforced on the vertical axis of the scroll container in case there is one. + * + * **Syntax**: `none | mandatory | proximity` + * + * **Initial value**: `none` + * + * @deprecated + */ + "scroll-snap-type-y"?: Property.ScrollSnapTypeY | undefined; + /** + * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | baseline | stretch` + * + * **Initial value**: `stretch` + * + * @deprecated + */ + "-khtml-box-align"?: Property.BoxAlign | undefined; + /** + * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge). + * + * **Syntax**: `normal | reverse | inherit` + * + * **Initial value**: `normal` + * + * @deprecated + */ + "-khtml-box-direction"?: Property.BoxDirection | undefined; + /** + * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout. + * + * **Syntax**: `<number>` + * + * **Initial value**: `0` + * + * @deprecated + */ + "-khtml-box-flex"?: Property.BoxFlex | undefined; + /** + * The **`box-flex-group`** CSS property assigns the flexbox's child elements to a flex group. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `1` + * + * @deprecated + */ + "-khtml-box-flex-group"?: Property.BoxFlexGroup | undefined; + /** + * The **`box-lines`** CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes). + * + * **Syntax**: `single | multiple` + * + * **Initial value**: `single` + * + * @deprecated + */ + "-khtml-box-lines"?: Property.BoxLines | undefined; + /** + * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `1` + * + * @deprecated + */ + "-khtml-box-ordinal-group"?: Property.BoxOrdinalGroup | undefined; + /** + * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically. + * + * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit` + * + * **Initial value**: `inline-axis` (`horizontal` in XUL) + * + * @deprecated + */ + "-khtml-box-orient"?: Property.BoxOrient | undefined; + /** + * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | justify` + * + * **Initial value**: `start` + * + * @deprecated + */ + "-khtml-box-pack"?: Property.BoxPack | undefined; + /** + * The **`line-break`** CSS property sets how to break lines of Chinese, Japanese, or Korean (CJK) text when working with punctuation and symbols. + * + * **Syntax**: `auto | loose | normal | strict | anywhere` + * + * **Initial value**: `auto` + * + * @deprecated + */ + "-khtml-line-break"?: Property.LineBreak | undefined; + /** + * The **`opacity`** CSS property sets the opacity of an element. Opacity is the degree to which content behind an element is hidden, and is the opposite of transparency. + * + * **Syntax**: `<alpha-value>` + * + * **Initial value**: `1` + * + * @deprecated + */ + "-khtml-opacity"?: Property.Opacity | undefined; + /** + * The **`user-select`** CSS property controls whether the user can select text. This doesn't have any effect on content loaded as part of a browser's user interface (its chrome), except in textboxes. + * + * **Syntax**: `auto | text | none | contain | all` + * + * **Initial value**: `auto` + * + * @deprecated + */ + "-khtml-user-select"?: Property.UserSelect | undefined; + /** + * The **`backface-visibility`** CSS property sets whether the back face of an element is visible when turned towards the user. + * + * **Syntax**: `visible | hidden` + * + * **Initial value**: `visible` + * + * @deprecated + */ + "-moz-backface-visibility"?: Property.BackfaceVisibility | undefined; + /** + * The **`background-clip`** CSS property sets whether an element's background extends underneath its border box, padding box, or content box. + * + * **Syntax**: `<box>#` + * + * **Initial value**: `border-box` + * + * @deprecated + */ + "-moz-background-clip"?: Property.BackgroundClip | undefined; + /** + * The **`box-decoration-break`** CSS property specifies how an element's fragments should be rendered when broken across multiple lines, columns, or pages. + * + * **Syntax**: `slice | clone` + * + * **Initial value**: `slice` + * + * @deprecated + */ + "-moz-background-inline-policy"?: Property.BoxDecorationBreak | undefined; + /** + * The **`background-origin`** CSS property sets the background's origin: from the border start, inside the border, or inside the padding. + * + * **Syntax**: `<box>#` + * + * **Initial value**: `padding-box` + * + * @deprecated + */ + "-moz-background-origin"?: Property.BackgroundOrigin | undefined; + /** + * The **`background-size`** CSS property sets the size of the element's background image. The image can be left to its natural size, stretched, or constrained to fit the available space. + * + * **Syntax**: `<bg-size>#` + * + * **Initial value**: `auto auto` + * + * @deprecated + */ + "-moz-background-size"?: Property.BackgroundSize<TLength> | undefined; + /** + * The **`border-radius`** CSS property rounds the corners of an element's outer border edge. You can set a single radius to make circular corners, or two radii to make elliptical corners. + * + * **Syntax**: `<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?` + * + * @deprecated + */ + "-moz-border-radius"?: Property.BorderRadius<TLength> | undefined; + /** + * The **`border-bottom-left-radius`** CSS property rounds the bottom-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * @deprecated + */ + "-moz-border-radius-bottomleft"?: Property.BorderBottomLeftRadius<TLength> | undefined; + /** + * The **`border-bottom-right-radius`** CSS property rounds the bottom-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * @deprecated + */ + "-moz-border-radius-bottomright"?: Property.BorderBottomRightRadius<TLength> | undefined; + /** + * The **`border-top-left-radius`** CSS property rounds the top-left corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * @deprecated + */ + "-moz-border-radius-topleft"?: Property.BorderTopLeftRadius<TLength> | undefined; + /** + * The **`border-top-right-radius`** CSS property rounds the top-right corner of an element by specifying the radius (or the radius of the semi-major and semi-minor axes) of the ellipse defining the curvature of the corner. + * + * **Syntax**: `<length-percentage>{1,2}` + * + * **Initial value**: `0` + * + * @deprecated + */ + "-moz-border-radius-topright"?: Property.BorderTopRightRadius<TLength> | undefined; + /** + * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | baseline | stretch` + * + * **Initial value**: `stretch` + * + * @deprecated + */ + "-moz-box-align"?: Property.BoxAlign | undefined; + /** + * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge). + * + * **Syntax**: `normal | reverse | inherit` + * + * **Initial value**: `normal` + * + * @deprecated + */ + "-moz-box-direction"?: Property.BoxDirection | undefined; + /** + * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout. + * + * **Syntax**: `<number>` + * + * **Initial value**: `0` + * + * @deprecated + */ + "-moz-box-flex"?: Property.BoxFlex | undefined; + /** + * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `1` + * + * @deprecated + */ + "-moz-box-ordinal-group"?: Property.BoxOrdinalGroup | undefined; + /** + * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically. + * + * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit` + * + * **Initial value**: `inline-axis` (`horizontal` in XUL) + * + * @deprecated + */ + "-moz-box-orient"?: Property.BoxOrient | undefined; + /** + * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | justify` + * + * **Initial value**: `start` + * + * @deprecated + */ + "-moz-box-pack"?: Property.BoxPack | undefined; + /** + * The **`box-shadow`** CSS property adds shadow effects around an element's frame. You can set multiple effects separated by commas. A box shadow is described by X and Y offsets relative to the element, blur and spread radius, and color. + * + * **Syntax**: `none | <shadow>#` + * + * **Initial value**: `none` + * + * @deprecated + */ + "-moz-box-shadow"?: Property.BoxShadow | undefined; + /** + * The non-standard **`-moz-float-edge`** CSS property specifies whether the height and width properties of the element include the margin, border, or padding thickness. + * + * **Syntax**: `border-box | content-box | margin-box | padding-box` + * + * **Initial value**: `content-box` + * + * @deprecated + */ + "-moz-float-edge"?: Property.MozFloatEdge | undefined; + /** + * The **`-moz-force-broken-image-icon`** extended CSS property can be used to force the broken image icon to be shown even when a broken image has an `alt` attribute. + * + * **Syntax**: `0 | 1` + * + * **Initial value**: `0` + * + * @deprecated + */ + "-moz-force-broken-image-icon"?: Property.MozForceBrokenImageIcon | undefined; + /** + * The **`opacity`** CSS property sets the opacity of an element. Opacity is the degree to which content behind an element is hidden, and is the opposite of transparency. + * + * **Syntax**: `<alpha-value>` + * + * **Initial value**: `1` + * + * @deprecated + */ + "-moz-opacity"?: Property.Opacity | undefined; + /** + * The **`outline`** CSS shorthand property sets most of the outline properties in a single declaration. + * + * **Syntax**: `[ <'outline-color'> || <'outline-style'> || <'outline-width'> ]` + * + * @deprecated + */ + "-moz-outline"?: Property.Outline<TLength> | undefined; + /** + * The **`outline-color`** CSS property sets the color of an element's outline. + * + * **Syntax**: `<color> | invert` + * + * **Initial value**: `invert`, for browsers supporting it, `currentColor` for the other + * + * @deprecated + */ + "-moz-outline-color"?: Property.OutlineColor | undefined; + /** + * The **`outline-style`** CSS property sets the style of an element's outline. An outline is a line that is drawn around an element, outside the `border`. + * + * **Syntax**: `auto | <'border-style'>` + * + * **Initial value**: `none` + * + * @deprecated + */ + "-moz-outline-style"?: Property.OutlineStyle | undefined; + /** + * The CSS **`outline-width`** property sets the thickness of an element's outline. An outline is a line that is drawn around an element, outside the `border`. + * + * **Syntax**: `<line-width>` + * + * **Initial value**: `medium` + * + * @deprecated + */ + "-moz-outline-width"?: Property.OutlineWidth<TLength> | undefined; + /** + * The **`perspective`** CSS property determines the distance between the z=0 plane and the user in order to give a 3D-positioned element some perspective. + * + * **Syntax**: `none | <length>` + * + * **Initial value**: `none` + * + * @deprecated + */ + "-moz-perspective"?: Property.Perspective<TLength> | undefined; + /** + * The **`perspective-origin`** CSS property determines the position at which the viewer is looking. It is used as the _vanishing point_ by the `perspective` property. + * + * **Syntax**: `<position>` + * + * **Initial value**: `50% 50%` + * + * @deprecated + */ + "-moz-perspective-origin"?: Property.PerspectiveOrigin<TLength> | undefined; + /** + * The **`text-align-last`** CSS property sets how the last line of a block or a line, right before a forced line break, is aligned. + * + * **Syntax**: `auto | start | end | left | right | center | justify` + * + * **Initial value**: `auto` + * + * @deprecated + */ + "-moz-text-align-last"?: Property.TextAlignLast | undefined; + /** + * The **`text-decoration-color`** CSS property sets the color of decorations added to text by `text-decoration-line`. + * + * **Syntax**: `<color>` + * + * **Initial value**: `currentcolor` + * + * @deprecated + */ + "-moz-text-decoration-color"?: Property.TextDecorationColor | undefined; + /** + * The **`text-decoration-line`** CSS property sets the kind of decoration that is used on text in an element, such as an underline or overline. + * + * **Syntax**: `none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error` + * + * **Initial value**: `none` + * + * @deprecated + */ + "-moz-text-decoration-line"?: Property.TextDecorationLine | undefined; + /** + * The **`text-decoration-style`** CSS property sets the style of the lines specified by `text-decoration-line`. The style applies to all lines that are set with `text-decoration-line`. + * + * **Syntax**: `solid | double | dotted | dashed | wavy` + * + * **Initial value**: `solid` + * + * @deprecated + */ + "-moz-text-decoration-style"?: Property.TextDecorationStyle | undefined; + /** + * The **`transform`** CSS property lets you rotate, scale, skew, or translate an element. It modifies the coordinate space of the CSS visual formatting model. + * + * **Syntax**: `none | <transform-list>` + * + * **Initial value**: `none` + * + * @deprecated + */ + "-moz-transform"?: Property.Transform | undefined; + /** + * The **`transform-origin`** CSS property sets the origin for an element's transformations. + * + * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?` + * + * **Initial value**: `50% 50% 0` + * + * @deprecated + */ + "-moz-transform-origin"?: Property.TransformOrigin<TLength> | undefined; + /** + * The **`transform-style`** CSS property sets whether children of an element are positioned in the 3D space or are flattened in the plane of the element. + * + * **Syntax**: `flat | preserve-3d` + * + * **Initial value**: `flat` + * + * @deprecated + */ + "-moz-transform-style"?: Property.TransformStyle | undefined; + /** + * The **`transition`** CSS property is a shorthand property for `transition-property`, `transition-duration`, `transition-timing-function`, and `transition-delay`. + * + * **Syntax**: `<single-transition>#` + * + * @deprecated + */ + "-moz-transition"?: Property.Transition<TTime> | undefined; + /** + * The **`transition-delay`** CSS property specifies the duration to wait before starting a property's transition effect when its value changes. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * @deprecated + */ + "-moz-transition-delay"?: Property.TransitionDelay<TTime> | undefined; + /** + * The **`transition-duration`** CSS property sets the length of time a transition animation should take to complete. By default, the value is `0s`, meaning that no animation will occur. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * @deprecated + */ + "-moz-transition-duration"?: Property.TransitionDuration<TTime> | undefined; + /** + * The **`transition-property`** CSS property sets the CSS properties to which a transition effect should be applied. + * + * **Syntax**: `none | <single-transition-property>#` + * + * **Initial value**: all + * + * @deprecated + */ + "-moz-transition-property"?: Property.TransitionProperty | undefined; + /** + * The **`transition-timing-function`** CSS property sets how intermediate values are calculated for CSS properties being affected by a transition effect. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + * + * @deprecated + */ + "-moz-transition-timing-function"?: Property.TransitionTimingFunction | undefined; + /** + * In Mozilla applications, **`-moz-user-input`** determines if an element will accept user input. + * + * **Syntax**: `auto | none | enabled | disabled` + * + * **Initial value**: `auto` + * + * @deprecated + */ + "-moz-user-input"?: Property.MozUserInput | undefined; + /** + * The **`ime-mode`** CSS property controls the state of the input method editor (IME) for text fields. This property is obsolete. + * + * **Syntax**: `auto | normal | active | inactive | disabled` + * + * **Initial value**: `auto` + * + * @deprecated + */ + "-ms-ime-mode"?: Property.ImeMode | undefined; + /** + * The **`animation`** shorthand CSS property applies an animation between styles. It is a shorthand for `animation-name`, `animation-duration`, `animation-timing-function`, `animation-delay`, `animation-iteration-count`, `animation-direction`, `animation-fill-mode`, and `animation-play-state`. + * + * **Syntax**: `<single-animation>#` + * + * @deprecated + */ + "-o-animation"?: Property.Animation<TTime> | undefined; + /** + * The **`animation-delay`** CSS property specifies the amount of time to wait from applying the animation to an element before beginning to perform the animation. The animation can start later, immediately from its beginning, or immediately and partway through the animation. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * @deprecated + */ + "-o-animation-delay"?: Property.AnimationDelay<TTime> | undefined; + /** + * The **`animation-direction`** CSS property sets whether an animation should play forward, backward, or alternate back and forth between playing the sequence forward and backward. + * + * **Syntax**: `<single-animation-direction>#` + * + * **Initial value**: `normal` + * + * @deprecated + */ + "-o-animation-direction"?: Property.AnimationDirection | undefined; + /** + * The **`animation-duration`** CSS property sets the length of time that an animation takes to complete one cycle. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * @deprecated + */ + "-o-animation-duration"?: Property.AnimationDuration<TTime> | undefined; + /** + * The **`animation-fill-mode`** CSS property sets how a CSS animation applies styles to its target before and after its execution. + * + * **Syntax**: `<single-animation-fill-mode>#` + * + * **Initial value**: `none` + * + * @deprecated + */ + "-o-animation-fill-mode"?: Property.AnimationFillMode | undefined; + /** + * The **`animation-iteration-count`** CSS property sets the number of times an animation sequence should be played before stopping. + * + * **Syntax**: `<single-animation-iteration-count>#` + * + * **Initial value**: `1` + * + * @deprecated + */ + "-o-animation-iteration-count"?: Property.AnimationIterationCount | undefined; + /** + * The **`animation-name`** CSS property specifies the names of one or more `@keyframes` at-rules that describe the animation to apply to an element. Multiple `@keyframe` at-rules are specified as a comma-separated list of names. If the specified name does not match any `@keyframe` at-rule, no properties are animated. + * + * **Syntax**: `[ none | <keyframes-name> ]#` + * + * **Initial value**: `none` + * + * @deprecated + */ + "-o-animation-name"?: Property.AnimationName | undefined; + /** + * The **`animation-play-state`** CSS property sets whether an animation is running or paused. + * + * **Syntax**: `<single-animation-play-state>#` + * + * **Initial value**: `running` + * + * @deprecated + */ + "-o-animation-play-state"?: Property.AnimationPlayState | undefined; + /** + * The **`animation-timing-function`** CSS property sets how an animation progresses through the duration of each cycle. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + * + * @deprecated + */ + "-o-animation-timing-function"?: Property.AnimationTimingFunction | undefined; + /** + * The **`background-size`** CSS property sets the size of the element's background image. The image can be left to its natural size, stretched, or constrained to fit the available space. + * + * **Syntax**: `<bg-size>#` + * + * **Initial value**: `auto auto` + * + * @deprecated + */ + "-o-background-size"?: Property.BackgroundSize<TLength> | undefined; + /** + * The **`border-image`** CSS property draws an image around a given element. It replaces the element's regular border. + * + * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>` + * + * @deprecated + */ + "-o-border-image"?: Property.BorderImage | undefined; + /** + * The **`object-fit`** CSS property sets how the content of a replaced element, such as an `<img>` or `<video>`, should be resized to fit its container. + * + * **Syntax**: `fill | contain | cover | none | scale-down` + * + * **Initial value**: `fill` + * + * @deprecated + */ + "-o-object-fit"?: Property.ObjectFit | undefined; + /** + * The **`object-position`** CSS property specifies the alignment of the selected replaced element's contents within the element's box. Areas of the box which aren't covered by the replaced element's object will show the element's background. + * + * **Syntax**: `<position>` + * + * **Initial value**: `50% 50%` + * + * @deprecated + */ + "-o-object-position"?: Property.ObjectPosition<TLength> | undefined; + /** + * The **`tab-size`** CSS property is used to customize the width of tab characters (U+0009). + * + * **Syntax**: `<integer> | <length>` + * + * **Initial value**: `8` + * + * @deprecated + */ + "-o-tab-size"?: Property.TabSize<TLength> | undefined; + /** + * The **`text-overflow`** CSS property sets how hidden overflow content is signaled to users. It can be clipped, display an ellipsis ('`…`'), or display a custom string. + * + * **Syntax**: `[ clip | ellipsis | <string> ]{1,2}` + * + * **Initial value**: `clip` + * + * @deprecated + */ + "-o-text-overflow"?: Property.TextOverflow | undefined; + /** + * The **`transform`** CSS property lets you rotate, scale, skew, or translate an element. It modifies the coordinate space of the CSS visual formatting model. + * + * **Syntax**: `none | <transform-list>` + * + * **Initial value**: `none` + * + * @deprecated + */ + "-o-transform"?: Property.Transform | undefined; + /** + * The **`transform-origin`** CSS property sets the origin for an element's transformations. + * + * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?` + * + * **Initial value**: `50% 50% 0` + * + * @deprecated + */ + "-o-transform-origin"?: Property.TransformOrigin<TLength> | undefined; + /** + * The **`transition`** CSS property is a shorthand property for `transition-property`, `transition-duration`, `transition-timing-function`, and `transition-delay`. + * + * **Syntax**: `<single-transition>#` + * + * @deprecated + */ + "-o-transition"?: Property.Transition<TTime> | undefined; + /** + * The **`transition-delay`** CSS property specifies the duration to wait before starting a property's transition effect when its value changes. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * @deprecated + */ + "-o-transition-delay"?: Property.TransitionDelay<TTime> | undefined; + /** + * The **`transition-duration`** CSS property sets the length of time a transition animation should take to complete. By default, the value is `0s`, meaning that no animation will occur. + * + * **Syntax**: `<time>#` + * + * **Initial value**: `0s` + * + * @deprecated + */ + "-o-transition-duration"?: Property.TransitionDuration<TTime> | undefined; + /** + * The **`transition-property`** CSS property sets the CSS properties to which a transition effect should be applied. + * + * **Syntax**: `none | <single-transition-property>#` + * + * **Initial value**: all + * + * @deprecated + */ + "-o-transition-property"?: Property.TransitionProperty | undefined; + /** + * The **`transition-timing-function`** CSS property sets how intermediate values are calculated for CSS properties being affected by a transition effect. + * + * **Syntax**: `<easing-function>#` + * + * **Initial value**: `ease` + * + * @deprecated + */ + "-o-transition-timing-function"?: Property.TransitionTimingFunction | undefined; + /** + * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | baseline | stretch` + * + * **Initial value**: `stretch` + * + * @deprecated + */ + "-webkit-box-align"?: Property.BoxAlign | undefined; + /** + * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge). + * + * **Syntax**: `normal | reverse | inherit` + * + * **Initial value**: `normal` + * + * @deprecated + */ + "-webkit-box-direction"?: Property.BoxDirection | undefined; + /** + * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout. + * + * **Syntax**: `<number>` + * + * **Initial value**: `0` + * + * @deprecated + */ + "-webkit-box-flex"?: Property.BoxFlex | undefined; + /** + * The **`box-flex-group`** CSS property assigns the flexbox's child elements to a flex group. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `1` + * + * @deprecated + */ + "-webkit-box-flex-group"?: Property.BoxFlexGroup | undefined; + /** + * The **`box-lines`** CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes). + * + * **Syntax**: `single | multiple` + * + * **Initial value**: `single` + * + * @deprecated + */ + "-webkit-box-lines"?: Property.BoxLines | undefined; + /** + * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group. + * + * **Syntax**: `<integer>` + * + * **Initial value**: `1` + * + * @deprecated + */ + "-webkit-box-ordinal-group"?: Property.BoxOrdinalGroup | undefined; + /** + * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically. + * + * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit` + * + * **Initial value**: `inline-axis` (`horizontal` in XUL) + * + * @deprecated + */ + "-webkit-box-orient"?: Property.BoxOrient | undefined; + /** + * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box. + * + * **Syntax**: `start | center | end | justify` + * + * **Initial value**: `start` + * + * @deprecated + */ + "-webkit-box-pack"?: Property.BoxPack | undefined; +} + +export interface SvgPropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> { + "alignment-baseline"?: Property.AlignmentBaseline | undefined; + "baseline-shift"?: Property.BaselineShift<TLength> | undefined; + clip?: Property.Clip | undefined; + "clip-path"?: Property.ClipPath | undefined; + "clip-rule"?: Property.ClipRule | undefined; + color?: Property.Color | undefined; + "color-interpolation"?: Property.ColorInterpolation | undefined; + "color-rendering"?: Property.ColorRendering | undefined; + cursor?: Property.Cursor | undefined; + direction?: Property.Direction | undefined; + display?: Property.Display | undefined; + "dominant-baseline"?: Property.DominantBaseline | undefined; + fill?: Property.Fill | undefined; + "fill-opacity"?: Property.FillOpacity | undefined; + "fill-rule"?: Property.FillRule | undefined; + filter?: Property.Filter | undefined; + "flood-color"?: Property.FloodColor | undefined; + "flood-opacity"?: Property.FloodOpacity | undefined; + font?: Property.Font | undefined; + "font-family"?: Property.FontFamily | undefined; + "font-size"?: Property.FontSize<TLength> | undefined; + "font-size-adjust"?: Property.FontSizeAdjust | undefined; + "font-stretch"?: Property.FontStretch | undefined; + "font-style"?: Property.FontStyle | undefined; + "font-variant"?: Property.FontVariant | undefined; + "font-weight"?: Property.FontWeight | undefined; + "glyph-orientation-vertical"?: Property.GlyphOrientationVertical | undefined; + "image-rendering"?: Property.ImageRendering | undefined; + "letter-spacing"?: Property.LetterSpacing<TLength> | undefined; + "lighting-color"?: Property.LightingColor | undefined; + "line-height"?: Property.LineHeight<TLength> | undefined; + marker?: Property.Marker | undefined; + "marker-end"?: Property.MarkerEnd | undefined; + "marker-mid"?: Property.MarkerMid | undefined; + "marker-start"?: Property.MarkerStart | undefined; + mask?: Property.Mask<TLength> | undefined; + opacity?: Property.Opacity | undefined; + overflow?: Property.Overflow | undefined; + "paint-order"?: Property.PaintOrder | undefined; + "pointer-events"?: Property.PointerEvents | undefined; + "shape-rendering"?: Property.ShapeRendering | undefined; + "stop-color"?: Property.StopColor | undefined; + "stop-opacity"?: Property.StopOpacity | undefined; + stroke?: Property.Stroke | undefined; + "stroke-dasharray"?: Property.StrokeDasharray<TLength> | undefined; + "stroke-dashoffset"?: Property.StrokeDashoffset<TLength> | undefined; + "stroke-linecap"?: Property.StrokeLinecap | undefined; + "stroke-linejoin"?: Property.StrokeLinejoin | undefined; + "stroke-miterlimit"?: Property.StrokeMiterlimit | undefined; + "stroke-opacity"?: Property.StrokeOpacity | undefined; + "stroke-width"?: Property.StrokeWidth<TLength> | undefined; + "text-anchor"?: Property.TextAnchor | undefined; + "text-decoration"?: Property.TextDecoration<TLength> | undefined; + "text-rendering"?: Property.TextRendering | undefined; + "unicode-bidi"?: Property.UnicodeBidi | undefined; + "vector-effect"?: Property.VectorEffect | undefined; + visibility?: Property.Visibility | undefined; + "white-space"?: Property.WhiteSpace | undefined; + "word-spacing"?: Property.WordSpacing<TLength> | undefined; + "writing-mode"?: Property.WritingMode | undefined; +} + +export interface PropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> + extends StandardPropertiesHyphen<TLength, TTime>, + VendorPropertiesHyphen<TLength, TTime>, + ObsoletePropertiesHyphen<TLength, TTime>, + SvgPropertiesHyphen<TLength, TTime> {} + +export type StandardLonghandPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<StandardLonghandProperties<TLength, TTime>>; + +export type StandardShorthandPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<StandardShorthandProperties<TLength, TTime>>; + +export interface StandardPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> + extends StandardLonghandPropertiesFallback<TLength, TTime>, + StandardShorthandPropertiesFallback<TLength, TTime> {} + +export type VendorLonghandPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<VendorLonghandProperties<TLength, TTime>>; + +export type VendorShorthandPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<VendorShorthandProperties<TLength, TTime>>; + +export interface VendorPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> + extends VendorLonghandPropertiesFallback<TLength, TTime>, + VendorShorthandPropertiesFallback<TLength, TTime> {} + +export type ObsoletePropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<ObsoleteProperties<TLength, TTime>>; + +export type SvgPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<SvgProperties<TLength, TTime>>; + +export interface PropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> + extends StandardPropertiesFallback<TLength, TTime>, + VendorPropertiesFallback<TLength, TTime>, + ObsoletePropertiesFallback<TLength, TTime>, + SvgPropertiesFallback<TLength, TTime> {} + +export type StandardLonghandPropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<StandardLonghandPropertiesHyphen<TLength, TTime>>; + +export type StandardShorthandPropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<StandardShorthandPropertiesHyphen<TLength, TTime>>; + +export interface StandardPropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> + extends StandardLonghandPropertiesHyphenFallback<TLength, TTime>, + StandardShorthandPropertiesHyphenFallback<TLength, TTime> {} + +export type VendorLonghandPropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<VendorLonghandPropertiesHyphen<TLength, TTime>>; + +export type VendorShorthandPropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<VendorShorthandPropertiesHyphen<TLength, TTime>>; + +export interface VendorPropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> + extends VendorLonghandPropertiesHyphenFallback<TLength, TTime>, + VendorShorthandPropertiesHyphenFallback<TLength, TTime> {} + +export type ObsoletePropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<ObsoletePropertiesHyphen<TLength, TTime>>; + +export type SvgPropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<SvgPropertiesHyphen<TLength, TTime>>; + +export interface PropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> + extends StandardPropertiesHyphenFallback<TLength, TTime>, + VendorPropertiesHyphenFallback<TLength, TTime>, + ObsoletePropertiesHyphenFallback<TLength, TTime>, + SvgPropertiesHyphenFallback<TLength, TTime> {} + +export type AtRules = + | "@charset" + | "@counter-style" + | "@document" + | "@font-face" + | "@font-feature-values" + | "@font-palette-values" + | "@import" + | "@keyframes" + | "@layer" + | "@media" + | "@namespace" + | "@page" + | "@property" + | "@scope" + | "@scroll-timeline" + | "@starting-style" + | "@supports" + | "@viewport"; + +export type AdvancedPseudos = + | ":-moz-any()" + | ":-moz-dir" + | ":-webkit-any()" + | "::cue" + | "::cue-region" + | "::part" + | "::slotted" + | "::view-transition-group" + | "::view-transition-image-pair" + | "::view-transition-new" + | "::view-transition-old" + | ":dir" + | ":has" + | ":host" + | ":host-context" + | ":is" + | ":lang" + | ":matches()" + | ":not" + | ":nth-child" + | ":nth-last-child" + | ":nth-last-of-type" + | ":nth-of-type" + | ":where"; + +export type SimplePseudos = + | ":-khtml-any-link" + | ":-moz-any-link" + | ":-moz-focusring" + | ":-moz-full-screen" + | ":-moz-placeholder" + | ":-moz-read-only" + | ":-moz-read-write" + | ":-moz-ui-invalid" + | ":-moz-ui-valid" + | ":-ms-fullscreen" + | ":-ms-input-placeholder" + | ":-webkit-any-link" + | ":-webkit-full-screen" + | "::-moz-placeholder" + | "::-moz-progress-bar" + | "::-moz-range-progress" + | "::-moz-range-thumb" + | "::-moz-range-track" + | "::-moz-selection" + | "::-ms-backdrop" + | "::-ms-browse" + | "::-ms-check" + | "::-ms-clear" + | "::-ms-expand" + | "::-ms-fill" + | "::-ms-fill-lower" + | "::-ms-fill-upper" + | "::-ms-input-placeholder" + | "::-ms-reveal" + | "::-ms-thumb" + | "::-ms-ticks-after" + | "::-ms-ticks-before" + | "::-ms-tooltip" + | "::-ms-track" + | "::-ms-value" + | "::-webkit-backdrop" + | "::-webkit-input-placeholder" + | "::-webkit-progress-bar" + | "::-webkit-progress-inner-value" + | "::-webkit-progress-value" + | "::-webkit-slider-runnable-track" + | "::-webkit-slider-thumb" + | "::after" + | "::backdrop" + | "::before" + | "::cue" + | "::cue-region" + | "::first-letter" + | "::first-line" + | "::grammar-error" + | "::marker" + | "::placeholder" + | "::selection" + | "::spelling-error" + | "::target-text" + | "::view-transition" + | ":active" + | ":after" + | ":any-link" + | ":before" + | ":blank" + | ":checked" + | ":current" + | ":default" + | ":defined" + | ":disabled" + | ":empty" + | ":enabled" + | ":first" + | ":first-child" + | ":first-letter" + | ":first-line" + | ":first-of-type" + | ":focus" + | ":focus-visible" + | ":focus-within" + | ":fullscreen" + | ":future" + | ":hover" + | ":in-range" + | ":indeterminate" + | ":invalid" + | ":last-child" + | ":last-of-type" + | ":left" + | ":link" + | ":local-link" + | ":nth-col" + | ":nth-last-col" + | ":only-child" + | ":only-of-type" + | ":optional" + | ":out-of-range" + | ":past" + | ":paused" + | ":picture-in-picture" + | ":placeholder-shown" + | ":playing" + | ":read-only" + | ":read-write" + | ":required" + | ":right" + | ":root" + | ":scope" + | ":target" + | ":target-within" + | ":user-invalid" + | ":user-valid" + | ":valid" + | ":visited"; + +export type Pseudos = AdvancedPseudos | SimplePseudos; + +export type HtmlAttributes = + | "[abbr]" + | "[accept-charset]" + | "[accept]" + | "[accesskey]" + | "[action]" + | "[align]" + | "[alink]" + | "[allow]" + | "[allowfullscreen]" + | "[allowpaymentrequest]" + | "[alt]" + | "[archive]" + | "[async]" + | "[attributionsrc]" + | "[autobuffer]" + | "[autocapitalize]" + | "[autocomplete]" + | "[autofocus]" + | "[autoplay]" + | "[axis]" + | "[background]" + | "[behavior]" + | "[bgcolor]" + | "[blocking]" + | "[border]" + | "[bottommargin]" + | "[browsingtopics]" + | "[capture]" + | "[cellpadding]" + | "[cellspacing]" + | "[char]" + | "[charoff]" + | "[charset]" + | "[checked]" + | "[cite]" + | "[class]" + | "[classid]" + | "[clear]" + | "[codebase]" + | "[codetype]" + | "[color]" + | "[cols]" + | "[colspan]" + | "[compact]" + | "[content]" + | "[contenteditable]" + | "[contextmenu]" + | "[controls]" + | "[coords]" + | "[credentialless]" + | "[crossorigin]" + | "[data]" + | "[datetime]" + | "[declare]" + | "[decoding]" + | "[default]" + | "[defer]" + | "[dir]" + | "[direction]" + | "[dirname]" + | "[disabled]" + | "[download]" + | "[draggable]" + | "[enctype]" + | "[enterkeyhint]" + | "[exportparts]" + | "[face]" + | "[fetchpriority]" + | "[for]" + | "[form]" + | "[formaction]" + | "[formenctype]" + | "[formmethod]" + | "[formnovalidate]" + | "[formtarget]" + | "[frame]" + | "[frameborder]" + | "[headers]" + | "[height]" + | "[hidden]" + | "[high]" + | "[href]" + | "[hreflang]" + | "[hspace]" + | "[http-equiv]" + | "[id]" + | "[imagesizes]" + | "[imagesrcset]" + | "[inert]" + | "[inputmode]" + | "[integrity]" + | "[is]" + | "[ismap]" + | "[itemid]" + | "[itemprop]" + | "[itemref]" + | "[itemscope]" + | "[itemtype]" + | "[kind]" + | "[label]" + | "[lang]" + | "[language]" + | "[leftmargin]" + | "[link]" + | "[list]" + | "[loading]" + | "[longdesc]" + | "[loop]" + | "[low]" + | "[manifest]" + | "[marginheight]" + | "[marginwidth]" + | "[max]" + | "[maxlength]" + | "[media]" + | "[method]" + | "[methods]" + | "[min]" + | "[minlength]" + | "[moz-opaque]" + | "[mozactionhint]" + | "[mozallowfullscreen]" + | "[msallowfullscreen]" + | "[multiple]" + | "[muted]" + | "[name]" + | "[nohref]" + | "[nomodule]" + | "[nonce]" + | "[noresize]" + | "[noshade]" + | "[novalidate]" + | "[nowrap]" + | "[onerror]" + | "[open]" + | "[optimum]" + | "[part]" + | "[pattern]" + | "[ping]" + | "[placeholder]" + | "[popover]" + | "[popovertarget]" + | "[popovertargetaction]" + | "[poster]" + | "[preload]" + | "[profile]" + | "[readonly]" + | "[referrerpolicy]" + | "[rel]" + | "[required]" + | "[rev]" + | "[reversed]" + | "[rightmargin]" + | "[rows]" + | "[rowspan]" + | "[rules]" + | "[sandbox]" + | "[scope]" + | "[scrollamount]" + | "[scrolldelay]" + | "[scrolling]" + | "[selected]" + | "[shadowroot]" + | "[shadowrootmode]" + | "[shape]" + | "[size]" + | "[sizes]" + | "[slot]" + | "[span]" + | "[spellcheck]" + | "[src]" + | "[srcdoc]" + | "[srclang]" + | "[srcset]" + | "[standby]" + | "[start]" + | "[step]" + | "[style]" + | "[summary]" + | "[tabindex]" + | "[target]" + | "[text]" + | "[title]" + | "[topmargin]" + | "[translate]" + | "[truespeed]" + | "[type]" + | "[usemap]" + | "[valign]" + | "[value]" + | "[valuetype]" + | "[version]" + | "[virtualkeyboardpolicy]" + | "[vlink]" + | "[vspace]" + | "[webkitallowfullscreen]" + | "[width]" + | "[wrap]" + | "[x-moz-errormessage]" + | "[xmlns]"; + +export type SvgAttributes = + | "[accent-height]" + | "[alignment-baseline]" + | "[allowReorder]" + | "[alphabetic]" + | "[animation]" + | "[arabic-form]" + | "[ascent]" + | "[async]" + | "[attributeName]" + | "[attributeType]" + | "[azimuth]" + | "[baseFrequency]" + | "[baseProfile]" + | "[baseline-shift]" + | "[bbox]" + | "[bias]" + | "[by]" + | "[calcMode]" + | "[cap-height]" + | "[class]" + | "[clip-path]" + | "[clip-rule]" + | "[clipPathUnits]" + | "[clip]" + | "[color-interpolation-filters]" + | "[color-interpolation]" + | "[color-profile]" + | "[color]" + | "[contentScriptType]" + | "[contentStyleType]" + | "[crossorigin]" + | "[cursor]" + | "[cx]" + | "[cy]" + | "[d]" + | "[decoding]" + | "[defer]" + | "[descent]" + | "[diffuseConstant]" + | "[direction]" + | "[display]" + | "[divisor]" + | "[document]" + | "[dominant-baseline]" + | "[download]" + | "[dur]" + | "[dx]" + | "[dy]" + | "[edgeMode]" + | "[elevation]" + | "[enable-background]" + | "[fill-opacity]" + | "[fill-rule]" + | "[fill]" + | "[filterRes]" + | "[filterUnits]" + | "[filter]" + | "[flood-color]" + | "[flood-opacity]" + | "[font-family]" + | "[font-size-adjust]" + | "[font-size]" + | "[font-stretch]" + | "[font-style]" + | "[font-variant]" + | "[font-weight]" + | "[format]" + | "[fr]" + | "[from]" + | "[fx]" + | "[fy]" + | "[g1]" + | "[g2]" + | "[global]" + | "[glyph-name]" + | "[glyph-orientation-horizontal]" + | "[glyph-orientation-vertical]" + | "[glyphRef]" + | "[gradientTransform]" + | "[gradientUnits]" + | "[graphical]" + | "[hanging]" + | "[height]" + | "[horiz-adv-x]" + | "[horiz-origin-x]" + | "[horiz-origin-y]" + | "[href]" + | "[hreflang]" + | "[id]" + | "[ideographic]" + | "[image-rendering]" + | "[in2]" + | "[in]" + | "[k1]" + | "[k2]" + | "[k3]" + | "[k4]" + | "[k]" + | "[kernelMatrix]" + | "[kernelUnitLength]" + | "[kerning]" + | "[keyPoints]" + | "[lang]" + | "[lengthAdjust]" + | "[letter-spacing]" + | "[lighting-color]" + | "[limitingConeAngle]" + | "[marker-end]" + | "[marker-mid]" + | "[marker-start]" + | "[markerHeight]" + | "[markerUnits]" + | "[markerWidth]" + | "[maskContentUnits]" + | "[maskUnits]" + | "[mask]" + | "[mathematical]" + | "[media]" + | "[mode]" + | "[name]" + | "[numOctaves]" + | "[offset]" + | "[opacity]" + | "[operator]" + | "[order]" + | "[orient]" + | "[orientation]" + | "[origin]" + | "[overflow]" + | "[overline-position]" + | "[overline-thickness]" + | "[paint-order]" + | "[panose-1]" + | "[path]" + | "[patternContentUnits]" + | "[patternTransform]" + | "[patternUnits]" + | "[ping]" + | "[pointer-events]" + | "[pointsAtX]" + | "[pointsAtY]" + | "[pointsAtZ]" + | "[points]" + | "[preserveAlpha]" + | "[preserveAspectRatio]" + | "[primitiveUnits]" + | "[r]" + | "[radius]" + | "[refX]" + | "[refY]" + | "[referrerpolicy]" + | "[rel]" + | "[repeatCount]" + | "[requiredExtensions]" + | "[requiredFeatures]" + | "[rotate]" + | "[rx]" + | "[ry]" + | "[scale]" + | "[seed]" + | "[shape-rendering]" + | "[side]" + | "[slope]" + | "[solid-color]" + | "[solid-opacity]" + | "[spacing]" + | "[specularConstant]" + | "[specularExponent]" + | "[spreadMethod]" + | "[startOffset]" + | "[stdDeviation]" + | "[stemh]" + | "[stemv]" + | "[stitchTiles]" + | "[stop-color]" + | "[stop-opacity]" + | "[strikethrough-position]" + | "[strikethrough-thickness]" + | "[string]" + | "[stroke-dasharray]" + | "[stroke-dashoffset]" + | "[stroke-linecap]" + | "[stroke-linejoin]" + | "[stroke-miterlimit]" + | "[stroke-opacity]" + | "[stroke-width]" + | "[stroke]" + | "[style]" + | "[surfaceScale]" + | "[systemLanguage]" + | "[tabindex]" + | "[targetX]" + | "[targetY]" + | "[target]" + | "[text-anchor]" + | "[text-decoration]" + | "[text-overflow]" + | "[text-rendering]" + | "[textLength]" + | "[title]" + | "[to]" + | "[transform-origin]" + | "[transform]" + | "[type]" + | "[u1]" + | "[u2]" + | "[underline-position]" + | "[underline-thickness]" + | "[unicode-bidi]" + | "[unicode-range]" + | "[unicode]" + | "[units-per-em]" + | "[v-alphabetic]" + | "[v-hanging]" + | "[v-ideographic]" + | "[v-mathematical]" + | "[values]" + | "[vector-effect]" + | "[version]" + | "[vert-adv-y]" + | "[vert-origin-x]" + | "[vert-origin-y]" + | "[viewBox]" + | "[viewTarget]" + | "[visibility]" + | "[white-space]" + | "[width]" + | "[widths]" + | "[word-spacing]" + | "[writing-mode]" + | "[x-height]" + | "[x1]" + | "[x2]" + | "[xChannelSelector]" + | "[x]" + | "[y1]" + | "[y2]" + | "[yChannelSelector]" + | "[y]" + | "[z]" + | "[zoomAndPan]"; + +export type Globals = "-moz-initial" | "inherit" | "initial" | "revert" | "revert-layer" | "unset"; + +export namespace Property { + export type AccentColor = Globals | DataType.Color | "auto"; + + export type AlignContent = Globals | DataType.ContentDistribution | DataType.ContentPosition | "baseline" | "normal" | (string & {}); + + export type AlignItems = Globals | DataType.SelfPosition | "baseline" | "normal" | "stretch" | (string & {}); + + export type AlignSelf = Globals | DataType.SelfPosition | "auto" | "baseline" | "normal" | "stretch" | (string & {}); + + export type AlignTracks = Globals | DataType.ContentDistribution | DataType.ContentPosition | "baseline" | "normal" | (string & {}); + + export type All = Globals; + + export type Animation<TTime = string & {}> = Globals | DataType.SingleAnimation<TTime> | (string & {}); + + export type AnimationComposition = Globals | DataType.SingleAnimationComposition | (string & {}); + + export type AnimationDelay<TTime = string & {}> = Globals | TTime | (string & {}); + + export type AnimationDirection = Globals | DataType.SingleAnimationDirection | (string & {}); + + export type AnimationDuration<TTime = string & {}> = Globals | TTime | (string & {}); + + export type AnimationFillMode = Globals | DataType.SingleAnimationFillMode | (string & {}); + + export type AnimationIterationCount = Globals | "infinite" | (string & {}) | (number & {}); + + export type AnimationName = Globals | "none" | (string & {}); + + export type AnimationPlayState = Globals | "paused" | "running" | (string & {}); + + export type AnimationRange<TLength = (string & {}) | 0> = Globals | DataType.TimelineRangeName | TLength | "normal" | (string & {}); + + export type AnimationRangeEnd<TLength = (string & {}) | 0> = Globals | DataType.TimelineRangeName | TLength | "normal" | (string & {}); + + export type AnimationRangeStart<TLength = (string & {}) | 0> = Globals | DataType.TimelineRangeName | TLength | "normal" | (string & {}); + + export type AnimationTimeline = Globals | DataType.SingleAnimationTimeline | (string & {}); + + export type AnimationTimingFunction = Globals | DataType.EasingFunction | (string & {}); + + export type Appearance = Globals | DataType.CompatAuto | "auto" | "menulist-button" | "none" | "textfield"; + + export type AspectRatio = Globals | "auto" | (string & {}) | (number & {}); + + export type Azimuth = + | Globals + | "behind" + | "center" + | "center-left" + | "center-right" + | "far-left" + | "far-right" + | "left" + | "left-side" + | "leftwards" + | "right" + | "right-side" + | "rightwards" + | (string & {}); + + export type BackdropFilter = Globals | "none" | (string & {}); + + export type BackfaceVisibility = Globals | "hidden" | "visible"; + + export type Background<TLength = (string & {}) | 0> = Globals | DataType.FinalBgLayer<TLength> | (string & {}); + + export type BackgroundAttachment = Globals | DataType.Attachment | (string & {}); + + export type BackgroundBlendMode = Globals | DataType.BlendMode | (string & {}); + + export type BackgroundClip = Globals | DataType.Box | (string & {}); + + export type BackgroundColor = Globals | DataType.Color; + + export type BackgroundImage = Globals | "none" | (string & {}); + + export type BackgroundOrigin = Globals | DataType.Box | (string & {}); + + export type BackgroundPosition<TLength = (string & {}) | 0> = Globals | DataType.BgPosition<TLength> | (string & {}); + + export type BackgroundPositionX<TLength = (string & {}) | 0> = Globals | TLength | "center" | "left" | "right" | "x-end" | "x-start" | (string & {}); + + export type BackgroundPositionY<TLength = (string & {}) | 0> = Globals | TLength | "bottom" | "center" | "top" | "y-end" | "y-start" | (string & {}); + + export type BackgroundRepeat = Globals | DataType.RepeatStyle | (string & {}); + + export type BackgroundSize<TLength = (string & {}) | 0> = Globals | DataType.BgSize<TLength> | (string & {}); + + export type BlockOverflow = Globals | "clip" | "ellipsis" | (string & {}); + + export type BlockSize<TLength = (string & {}) | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "auto" + | "fit-content" + | "max-content" + | "min-content" + | (string & {}); + + export type Border<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {}); + + export type BorderBlock<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {}); + + export type BorderBlockColor = Globals | DataType.Color | (string & {}); + + export type BorderBlockEnd<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {}); + + export type BorderBlockEndColor = Globals | DataType.Color; + + export type BorderBlockEndStyle = Globals | DataType.LineStyle; + + export type BorderBlockEndWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>; + + export type BorderBlockStart<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {}); + + export type BorderBlockStartColor = Globals | DataType.Color; + + export type BorderBlockStartStyle = Globals | DataType.LineStyle; + + export type BorderBlockStartWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>; + + export type BorderBlockStyle = Globals | DataType.LineStyle; + + export type BorderBlockWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>; + + export type BorderBottom<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {}); + + export type BorderBottomColor = Globals | DataType.Color; + + export type BorderBottomLeftRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type BorderBottomRightRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type BorderBottomStyle = Globals | DataType.LineStyle; + + export type BorderBottomWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>; + + export type BorderCollapse = Globals | "collapse" | "separate"; + + export type BorderColor = Globals | DataType.Color | (string & {}); + + export type BorderEndEndRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type BorderEndStartRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type BorderImage = Globals | "none" | "repeat" | "round" | "space" | "stretch" | (string & {}) | (number & {}); + + export type BorderImageOutset<TLength = (string & {}) | 0> = Globals | TLength | (string & {}) | (number & {}); + + export type BorderImageRepeat = Globals | "repeat" | "round" | "space" | "stretch" | (string & {}); + + export type BorderImageSlice = Globals | (string & {}) | (number & {}); + + export type BorderImageSource = Globals | "none" | (string & {}); + + export type BorderImageWidth<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}) | (number & {}); + + export type BorderInline<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {}); + + export type BorderInlineColor = Globals | DataType.Color | (string & {}); + + export type BorderInlineEnd<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {}); + + export type BorderInlineEndColor = Globals | DataType.Color; + + export type BorderInlineEndStyle = Globals | DataType.LineStyle; + + export type BorderInlineEndWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>; + + export type BorderInlineStart<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {}); + + export type BorderInlineStartColor = Globals | DataType.Color; + + export type BorderInlineStartStyle = Globals | DataType.LineStyle; + + export type BorderInlineStartWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>; + + export type BorderInlineStyle = Globals | DataType.LineStyle; + + export type BorderInlineWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>; + + export type BorderLeft<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {}); + + export type BorderLeftColor = Globals | DataType.Color; + + export type BorderLeftStyle = Globals | DataType.LineStyle; + + export type BorderLeftWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>; + + export type BorderRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type BorderRight<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {}); + + export type BorderRightColor = Globals | DataType.Color; + + export type BorderRightStyle = Globals | DataType.LineStyle; + + export type BorderRightWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>; + + export type BorderSpacing<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type BorderStartEndRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type BorderStartStartRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type BorderStyle = Globals | DataType.LineStyle | (string & {}); + + export type BorderTop<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {}); + + export type BorderTopColor = Globals | DataType.Color; + + export type BorderTopLeftRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type BorderTopRightRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type BorderTopStyle = Globals | DataType.LineStyle; + + export type BorderTopWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>; + + export type BorderWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | (string & {}); + + export type Bottom<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type BoxAlign = Globals | "baseline" | "center" | "end" | "start" | "stretch"; + + export type BoxDecorationBreak = Globals | "clone" | "slice"; + + export type BoxDirection = Globals | "inherit" | "normal" | "reverse"; + + export type BoxFlex = Globals | (number & {}) | (string & {}); + + export type BoxFlexGroup = Globals | (number & {}) | (string & {}); + + export type BoxLines = Globals | "multiple" | "single"; + + export type BoxOrdinalGroup = Globals | (number & {}) | (string & {}); + + export type BoxOrient = Globals | "block-axis" | "horizontal" | "inherit" | "inline-axis" | "vertical"; + + export type BoxPack = Globals | "center" | "end" | "justify" | "start"; + + export type BoxShadow = Globals | "none" | (string & {}); + + export type BoxSizing = Globals | "border-box" | "content-box"; + + export type BreakAfter = + | Globals + | "all" + | "always" + | "auto" + | "avoid" + | "avoid-column" + | "avoid-page" + | "avoid-region" + | "column" + | "left" + | "page" + | "recto" + | "region" + | "right" + | "verso"; + + export type BreakBefore = + | Globals + | "all" + | "always" + | "auto" + | "avoid" + | "avoid-column" + | "avoid-page" + | "avoid-region" + | "column" + | "left" + | "page" + | "recto" + | "region" + | "right" + | "verso"; + + export type BreakInside = Globals | "auto" | "avoid" | "avoid-column" | "avoid-page" | "avoid-region"; + + export type CaptionSide = Globals | "block-end" | "block-start" | "bottom" | "inline-end" | "inline-start" | "top"; + + export type Caret = Globals | DataType.Color | "auto" | "bar" | "block" | "underscore" | (string & {}); + + export type CaretColor = Globals | DataType.Color | "auto"; + + export type CaretShape = Globals | "auto" | "bar" | "block" | "underscore"; + + export type Clear = Globals | "both" | "inline-end" | "inline-start" | "left" | "none" | "right"; + + export type Clip = Globals | "auto" | (string & {}); + + export type ClipPath = Globals | DataType.GeometryBox | "none" | (string & {}); + + export type Color = Globals | DataType.Color; + + export type PrintColorAdjust = Globals | "economy" | "exact"; + + export type ColorScheme = Globals | "dark" | "light" | "normal" | (string & {}); + + export type ColumnCount = Globals | "auto" | (number & {}) | (string & {}); + + export type ColumnFill = Globals | "auto" | "balance" | "balance-all"; + + export type ColumnGap<TLength = (string & {}) | 0> = Globals | TLength | "normal" | (string & {}); + + export type ColumnRule<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {}); + + export type ColumnRuleColor = Globals | DataType.Color; + + export type ColumnRuleStyle = Globals | DataType.LineStyle | (string & {}); + + export type ColumnRuleWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | (string & {}); + + export type ColumnSpan = Globals | "all" | "none"; + + export type ColumnWidth<TLength = (string & {}) | 0> = Globals | TLength | "auto"; + + export type Columns<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}) | (number & {}); + + export type Contain = Globals | "content" | "inline-size" | "layout" | "none" | "paint" | "size" | "strict" | "style" | (string & {}); + + export type ContainIntrinsicBlockSize<TLength = (string & {}) | 0> = Globals | TLength | "none" | (string & {}); + + export type ContainIntrinsicHeight<TLength = (string & {}) | 0> = Globals | TLength | "none" | (string & {}); + + export type ContainIntrinsicInlineSize<TLength = (string & {}) | 0> = Globals | TLength | "none" | (string & {}); + + export type ContainIntrinsicSize<TLength = (string & {}) | 0> = Globals | TLength | "none" | (string & {}); + + export type ContainIntrinsicWidth<TLength = (string & {}) | 0> = Globals | TLength | "none" | (string & {}); + + export type Container = Globals | "none" | (string & {}); + + export type ContainerName = Globals | "none" | (string & {}); + + export type ContainerType = Globals | "inline-size" | "normal" | "size"; + + export type Content = Globals | DataType.ContentList | "none" | "normal" | (string & {}); + + export type ContentVisibility = Globals | "auto" | "hidden" | "visible"; + + export type CounterIncrement = Globals | "none" | (string & {}); + + export type CounterReset = Globals | "none" | (string & {}); + + export type CounterSet = Globals | "none" | (string & {}); + + export type Cursor = + | Globals + | "-moz-grab" + | "-webkit-grab" + | "alias" + | "all-scroll" + | "auto" + | "cell" + | "col-resize" + | "context-menu" + | "copy" + | "crosshair" + | "default" + | "e-resize" + | "ew-resize" + | "grab" + | "grabbing" + | "help" + | "move" + | "n-resize" + | "ne-resize" + | "nesw-resize" + | "no-drop" + | "none" + | "not-allowed" + | "ns-resize" + | "nw-resize" + | "nwse-resize" + | "pointer" + | "progress" + | "row-resize" + | "s-resize" + | "se-resize" + | "sw-resize" + | "text" + | "vertical-text" + | "w-resize" + | "wait" + | "zoom-in" + | "zoom-out" + | (string & {}); + + export type Direction = Globals | "ltr" | "rtl"; + + export type Display = + | Globals + | DataType.DisplayOutside + | DataType.DisplayInside + | DataType.DisplayInternal + | DataType.DisplayLegacy + | "contents" + | "list-item" + | "none" + | (string & {}); + + export type EmptyCells = Globals | "hide" | "show"; + + export type Filter = Globals | "none" | (string & {}); + + export type Flex<TLength = (string & {}) | 0> = Globals | TLength | "auto" | "content" | "fit-content" | "max-content" | "min-content" | "none" | (string & {}) | (number & {}); + + export type FlexBasis<TLength = (string & {}) | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-auto" + | "auto" + | "content" + | "fit-content" + | "max-content" + | "min-content" + | (string & {}); + + export type FlexDirection = Globals | "column" | "column-reverse" | "row" | "row-reverse"; + + export type FlexFlow = Globals | "column" | "column-reverse" | "nowrap" | "row" | "row-reverse" | "wrap" | "wrap-reverse" | (string & {}); + + export type FlexGrow = Globals | (number & {}) | (string & {}); + + export type FlexShrink = Globals | (number & {}) | (string & {}); + + export type FlexWrap = Globals | "nowrap" | "wrap" | "wrap-reverse"; + + export type Float = Globals | "inline-end" | "inline-start" | "left" | "none" | "right"; + + export type Font = Globals | "caption" | "icon" | "menu" | "message-box" | "small-caption" | "status-bar" | (string & {}); + + export type FontFamily = Globals | DataType.GenericFamily | (string & {}); + + export type FontFeatureSettings = Globals | "normal" | (string & {}); + + export type FontKerning = Globals | "auto" | "none" | "normal"; + + export type FontLanguageOverride = Globals | "normal" | (string & {}); + + export type FontOpticalSizing = Globals | "auto" | "none"; + + export type FontPalette = Globals | "dark" | "light" | "normal" | (string & {}); + + export type FontSize<TLength = (string & {}) | 0> = Globals | DataType.AbsoluteSize | TLength | "larger" | "smaller" | (string & {}); + + export type FontSizeAdjust = Globals | "from-font" | "none" | (string & {}) | (number & {}); + + export type FontSmooth<TLength = (string & {}) | 0> = Globals | DataType.AbsoluteSize | TLength | "always" | "auto" | "never"; + + export type FontStretch = Globals | DataType.FontStretchAbsolute; + + export type FontStyle = Globals | "italic" | "normal" | "oblique" | (string & {}); + + export type FontSynthesis = Globals | "none" | "position" | "small-caps" | "style" | "weight" | (string & {}); + + export type FontSynthesisPosition = Globals | "auto" | "none"; + + export type FontSynthesisSmallCaps = Globals | "auto" | "none"; + + export type FontSynthesisStyle = Globals | "auto" | "none"; + + export type FontSynthesisWeight = Globals | "auto" | "none"; + + export type FontVariant = + | Globals + | DataType.EastAsianVariantValues + | "all-petite-caps" + | "all-small-caps" + | "common-ligatures" + | "contextual" + | "diagonal-fractions" + | "discretionary-ligatures" + | "full-width" + | "historical-forms" + | "historical-ligatures" + | "lining-nums" + | "no-common-ligatures" + | "no-contextual" + | "no-discretionary-ligatures" + | "no-historical-ligatures" + | "none" + | "normal" + | "oldstyle-nums" + | "ordinal" + | "petite-caps" + | "proportional-nums" + | "proportional-width" + | "ruby" + | "slashed-zero" + | "small-caps" + | "stacked-fractions" + | "tabular-nums" + | "titling-caps" + | "unicase" + | (string & {}); + + export type FontVariantAlternates = Globals | "historical-forms" | "normal" | (string & {}); + + export type FontVariantCaps = Globals | "all-petite-caps" | "all-small-caps" | "normal" | "petite-caps" | "small-caps" | "titling-caps" | "unicase"; + + export type FontVariantEastAsian = Globals | DataType.EastAsianVariantValues | "full-width" | "normal" | "proportional-width" | "ruby" | (string & {}); + + export type FontVariantEmoji = Globals | "emoji" | "normal" | "text" | "unicode"; + + export type FontVariantLigatures = + | Globals + | "common-ligatures" + | "contextual" + | "discretionary-ligatures" + | "historical-ligatures" + | "no-common-ligatures" + | "no-contextual" + | "no-discretionary-ligatures" + | "no-historical-ligatures" + | "none" + | "normal" + | (string & {}); + + export type FontVariantNumeric = + | Globals + | "diagonal-fractions" + | "lining-nums" + | "normal" + | "oldstyle-nums" + | "ordinal" + | "proportional-nums" + | "slashed-zero" + | "stacked-fractions" + | "tabular-nums" + | (string & {}); + + export type FontVariantPosition = Globals | "normal" | "sub" | "super"; + + export type FontVariationSettings = Globals | "normal" | (string & {}); + + export type FontWeight = Globals | DataType.FontWeightAbsolute | "bolder" | "lighter"; + + export type ForcedColorAdjust = Globals | "auto" | "none"; + + export type Gap<TLength = (string & {}) | 0> = Globals | TLength | "normal" | (string & {}); + + export type Grid = Globals | "none" | (string & {}); + + export type GridArea = Globals | DataType.GridLine | (string & {}); + + export type GridAutoColumns<TLength = (string & {}) | 0> = Globals | DataType.TrackBreadth<TLength> | (string & {}); + + export type GridAutoFlow = Globals | "column" | "dense" | "row" | (string & {}); + + export type GridAutoRows<TLength = (string & {}) | 0> = Globals | DataType.TrackBreadth<TLength> | (string & {}); + + export type GridColumn = Globals | DataType.GridLine | (string & {}); + + export type GridColumnEnd = Globals | DataType.GridLine; + + export type GridColumnGap<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type GridColumnStart = Globals | DataType.GridLine; + + export type GridGap<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type GridRow = Globals | DataType.GridLine | (string & {}); + + export type GridRowEnd = Globals | DataType.GridLine; + + export type GridRowGap<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type GridRowStart = Globals | DataType.GridLine; + + export type GridTemplate = Globals | "none" | (string & {}); + + export type GridTemplateAreas = Globals | "none" | (string & {}); + + export type GridTemplateColumns<TLength = (string & {}) | 0> = Globals | DataType.TrackBreadth<TLength> | "none" | "subgrid" | (string & {}); + + export type GridTemplateRows<TLength = (string & {}) | 0> = Globals | DataType.TrackBreadth<TLength> | "none" | "subgrid" | (string & {}); + + export type HangingPunctuation = Globals | "allow-end" | "first" | "force-end" | "last" | "none" | (string & {}); + + export type Height<TLength = (string & {}) | 0> = + | Globals + | TLength + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fit-content" + | "auto" + | "fit-content" + | "max-content" + | "min-content" + | (string & {}); + + export type HyphenateCharacter = Globals | "auto" | (string & {}); + + export type HyphenateLimitChars = Globals | "auto" | (string & {}) | (number & {}); + + export type Hyphens = Globals | "auto" | "manual" | "none"; + + export type ImageOrientation = Globals | "flip" | "from-image" | (string & {}); + + export type ImageRendering = Globals | "-moz-crisp-edges" | "-webkit-optimize-contrast" | "auto" | "crisp-edges" | "pixelated"; + + export type ImageResolution = Globals | "from-image" | (string & {}); + + export type ImeMode = Globals | "active" | "auto" | "disabled" | "inactive" | "normal"; + + export type InitialLetter = Globals | "normal" | (string & {}) | (number & {}); + + export type InlineSize<TLength = (string & {}) | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fill-available" + | "auto" + | "fit-content" + | "max-content" + | "min-content" + | (string & {}); + + export type InputSecurity = Globals | "auto" | "none"; + + export type Inset<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type InsetBlock<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type InsetBlockEnd<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type InsetBlockStart<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type InsetInline<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type InsetInlineEnd<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type InsetInlineStart<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type Isolation = Globals | "auto" | "isolate"; + + export type JustifyContent = Globals | DataType.ContentDistribution | DataType.ContentPosition | "left" | "normal" | "right" | (string & {}); + + export type JustifyItems = Globals | DataType.SelfPosition | "baseline" | "left" | "legacy" | "normal" | "right" | "stretch" | (string & {}); + + export type JustifySelf = Globals | DataType.SelfPosition | "auto" | "baseline" | "left" | "normal" | "right" | "stretch" | (string & {}); + + export type JustifyTracks = Globals | DataType.ContentDistribution | DataType.ContentPosition | "left" | "normal" | "right" | (string & {}); + + export type Left<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type LetterSpacing<TLength = (string & {}) | 0> = Globals | TLength | "normal"; + + export type LineBreak = Globals | "anywhere" | "auto" | "loose" | "normal" | "strict"; + + export type LineClamp = Globals | "none" | (number & {}) | (string & {}); + + export type LineHeight<TLength = (string & {}) | 0> = Globals | TLength | "normal" | (string & {}) | (number & {}); + + export type LineHeightStep<TLength = (string & {}) | 0> = Globals | TLength; + + export type ListStyle = Globals | "inside" | "none" | "outside" | (string & {}); + + export type ListStyleImage = Globals | "none" | (string & {}); + + export type ListStylePosition = Globals | "inside" | "outside"; + + export type ListStyleType = Globals | "none" | (string & {}); + + export type Margin<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type MarginBlock<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type MarginBlockEnd<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type MarginBlockStart<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type MarginBottom<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type MarginInline<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type MarginInlineEnd<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type MarginInlineStart<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type MarginLeft<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type MarginRight<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type MarginTop<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type MarginTrim = Globals | "all" | "in-flow" | "none"; + + export type Mask<TLength = (string & {}) | 0> = Globals | DataType.MaskLayer<TLength> | (string & {}); + + export type MaskBorder = Globals | "alpha" | "luminance" | "none" | "repeat" | "round" | "space" | "stretch" | (string & {}) | (number & {}); + + export type MaskBorderMode = Globals | "alpha" | "luminance"; + + export type MaskBorderOutset<TLength = (string & {}) | 0> = Globals | TLength | (string & {}) | (number & {}); + + export type MaskBorderRepeat = Globals | "repeat" | "round" | "space" | "stretch" | (string & {}); + + export type MaskBorderSlice = Globals | (string & {}) | (number & {}); + + export type MaskBorderSource = Globals | "none" | (string & {}); + + export type MaskBorderWidth<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}) | (number & {}); + + export type MaskClip = Globals | DataType.GeometryBox | "no-clip" | (string & {}); + + export type MaskComposite = Globals | DataType.CompositingOperator | (string & {}); + + export type MaskImage = Globals | "none" | (string & {}); + + export type MaskMode = Globals | DataType.MaskingMode | (string & {}); + + export type MaskOrigin = Globals | DataType.GeometryBox | (string & {}); + + export type MaskPosition<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength> | (string & {}); + + export type MaskRepeat = Globals | DataType.RepeatStyle | (string & {}); + + export type MaskSize<TLength = (string & {}) | 0> = Globals | DataType.BgSize<TLength> | (string & {}); + + export type MaskType = Globals | "alpha" | "luminance"; + + export type MasonryAutoFlow = Globals | "definite-first" | "next" | "ordered" | "pack" | (string & {}); + + export type MathDepth = Globals | "auto-add" | (string & {}) | (number & {}); + + export type MathShift = Globals | "compact" | "normal"; + + export type MathStyle = Globals | "compact" | "normal"; + + export type MaxBlockSize<TLength = (string & {}) | 0> = + | Globals + | TLength + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fill-available" + | "fit-content" + | "max-content" + | "min-content" + | "none" + | (string & {}); + + export type MaxHeight<TLength = (string & {}) | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fit-content" + | "-webkit-max-content" + | "-webkit-min-content" + | "fit-content" + | "intrinsic" + | "max-content" + | "min-content" + | "none" + | (string & {}); + + export type MaxInlineSize<TLength = (string & {}) | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fill-available" + | "fit-content" + | "max-content" + | "min-content" + | "none" + | (string & {}); + + export type MaxLines = Globals | "none" | (number & {}) | (string & {}); + + export type MaxWidth<TLength = (string & {}) | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fit-content" + | "-webkit-max-content" + | "-webkit-min-content" + | "fit-content" + | "intrinsic" + | "max-content" + | "min-content" + | "none" + | (string & {}); + + export type MinBlockSize<TLength = (string & {}) | 0> = + | Globals + | TLength + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fill-available" + | "auto" + | "fit-content" + | "max-content" + | "min-content" + | (string & {}); + + export type MinHeight<TLength = (string & {}) | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fit-content" + | "-webkit-max-content" + | "-webkit-min-content" + | "auto" + | "fit-content" + | "intrinsic" + | "max-content" + | "min-content" + | (string & {}); + + export type MinInlineSize<TLength = (string & {}) | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fill-available" + | "auto" + | "fit-content" + | "max-content" + | "min-content" + | (string & {}); + + export type MinWidth<TLength = (string & {}) | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fill-available" + | "-webkit-fit-content" + | "-webkit-max-content" + | "-webkit-min-content" + | "auto" + | "fit-content" + | "intrinsic" + | "max-content" + | "min-content" + | "min-intrinsic" + | (string & {}); + + export type MixBlendMode = Globals | DataType.BlendMode | "plus-lighter"; + + export type Offset<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength> | "auto" | "none" | "normal" | (string & {}); + + export type OffsetDistance<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type OffsetPath = Globals | "none" | (string & {}); + + export type OffsetRotate = Globals | "auto" | "reverse" | (string & {}); + + export type ObjectFit = Globals | "contain" | "cover" | "fill" | "none" | "scale-down"; + + export type ObjectPosition<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength>; + + export type OffsetAnchor<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength> | "auto"; + + export type OffsetPosition<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength> | "auto" | "normal"; + + export type Opacity = Globals | (string & {}) | (number & {}); + + export type Order = Globals | (number & {}) | (string & {}); + + export type Orphans = Globals | (number & {}) | (string & {}); + + export type Outline<TLength = (string & {}) | 0> = Globals | DataType.Color | DataType.LineStyle | DataType.LineWidth<TLength> | "auto" | "invert" | (string & {}); + + export type OutlineColor = Globals | DataType.Color | "invert"; + + export type OutlineOffset<TLength = (string & {}) | 0> = Globals | TLength; + + export type OutlineStyle = Globals | DataType.LineStyle | "auto" | (string & {}); + + export type OutlineWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>; + + export type Overflow = Globals | "-moz-hidden-unscrollable" | "auto" | "clip" | "hidden" | "scroll" | "visible" | (string & {}); + + export type OverflowAnchor = Globals | "auto" | "none"; + + export type OverflowBlock = Globals | "auto" | "clip" | "hidden" | "scroll" | "visible"; + + export type OverflowClipBox = Globals | "content-box" | "padding-box"; + + export type OverflowClipMargin<TLength = (string & {}) | 0> = Globals | DataType.VisualBox | TLength | (string & {}); + + export type OverflowInline = Globals | "auto" | "clip" | "hidden" | "scroll" | "visible"; + + export type OverflowWrap = Globals | "anywhere" | "break-word" | "normal"; + + export type OverflowX = Globals | "-moz-hidden-unscrollable" | "auto" | "clip" | "hidden" | "scroll" | "visible"; + + export type OverflowY = Globals | "-moz-hidden-unscrollable" | "auto" | "clip" | "hidden" | "scroll" | "visible"; + + export type Overlay = Globals | "auto" | "none"; + + export type OverscrollBehavior = Globals | "auto" | "contain" | "none" | (string & {}); + + export type OverscrollBehaviorBlock = Globals | "auto" | "contain" | "none"; + + export type OverscrollBehaviorInline = Globals | "auto" | "contain" | "none"; + + export type OverscrollBehaviorX = Globals | "auto" | "contain" | "none"; + + export type OverscrollBehaviorY = Globals | "auto" | "contain" | "none"; + + export type Padding<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type PaddingBlock<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type PaddingBlockEnd<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type PaddingBlockStart<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type PaddingBottom<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type PaddingInline<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type PaddingInlineEnd<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type PaddingInlineStart<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type PaddingLeft<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type PaddingRight<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type PaddingTop<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type Page = Globals | "auto" | (string & {}); + + export type PageBreakAfter = Globals | "always" | "auto" | "avoid" | "left" | "recto" | "right" | "verso"; + + export type PageBreakBefore = Globals | "always" | "auto" | "avoid" | "left" | "recto" | "right" | "verso"; + + export type PageBreakInside = Globals | "auto" | "avoid"; + + export type PaintOrder = Globals | "fill" | "markers" | "normal" | "stroke" | (string & {}); + + export type Perspective<TLength = (string & {}) | 0> = Globals | TLength | "none"; + + export type PerspectiveOrigin<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength>; + + export type PlaceContent = Globals | DataType.ContentDistribution | DataType.ContentPosition | "baseline" | "normal" | (string & {}); + + export type PlaceItems = Globals | DataType.SelfPosition | "baseline" | "normal" | "stretch" | (string & {}); + + export type PlaceSelf = Globals | DataType.SelfPosition | "auto" | "baseline" | "normal" | "stretch" | (string & {}); + + export type PointerEvents = Globals | "all" | "auto" | "fill" | "inherit" | "none" | "painted" | "stroke" | "visible" | "visibleFill" | "visiblePainted" | "visibleStroke"; + + export type Position = Globals | "-webkit-sticky" | "absolute" | "fixed" | "relative" | "static" | "sticky"; + + export type Quotes = Globals | "auto" | "none" | (string & {}); + + export type Resize = Globals | "block" | "both" | "horizontal" | "inline" | "none" | "vertical"; + + export type Right<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type Rotate = Globals | "none" | (string & {}); + + export type RowGap<TLength = (string & {}) | 0> = Globals | TLength | "normal" | (string & {}); + + export type RubyAlign = Globals | "center" | "space-around" | "space-between" | "start"; + + export type RubyMerge = Globals | "auto" | "collapse" | "separate"; + + export type RubyPosition = Globals | "alternate" | "inter-character" | "over" | "under" | (string & {}); + + export type Scale = Globals | "none" | (string & {}) | (number & {}); + + export type ScrollBehavior = Globals | "auto" | "smooth"; + + export type ScrollMargin<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type ScrollMarginBlock<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type ScrollMarginBlockEnd<TLength = (string & {}) | 0> = Globals | TLength; + + export type ScrollMarginBlockStart<TLength = (string & {}) | 0> = Globals | TLength; + + export type ScrollMarginBottom<TLength = (string & {}) | 0> = Globals | TLength; + + export type ScrollMarginInline<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type ScrollMarginInlineEnd<TLength = (string & {}) | 0> = Globals | TLength; + + export type ScrollMarginInlineStart<TLength = (string & {}) | 0> = Globals | TLength; + + export type ScrollMarginLeft<TLength = (string & {}) | 0> = Globals | TLength; + + export type ScrollMarginRight<TLength = (string & {}) | 0> = Globals | TLength; + + export type ScrollMarginTop<TLength = (string & {}) | 0> = Globals | TLength; + + export type ScrollPadding<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type ScrollPaddingBlock<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type ScrollPaddingBlockEnd<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type ScrollPaddingBlockStart<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type ScrollPaddingBottom<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type ScrollPaddingInline<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type ScrollPaddingInlineEnd<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type ScrollPaddingInlineStart<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type ScrollPaddingLeft<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type ScrollPaddingRight<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type ScrollPaddingTop<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type ScrollSnapAlign = Globals | "center" | "end" | "none" | "start" | (string & {}); + + export type ScrollSnapCoordinate<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength> | "none" | (string & {}); + + export type ScrollSnapDestination<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength>; + + export type ScrollSnapPointsX = Globals | "none" | (string & {}); + + export type ScrollSnapPointsY = Globals | "none" | (string & {}); + + export type ScrollSnapStop = Globals | "always" | "normal"; + + export type ScrollSnapType = Globals | "block" | "both" | "inline" | "none" | "x" | "y" | (string & {}); + + export type ScrollSnapTypeX = Globals | "mandatory" | "none" | "proximity"; + + export type ScrollSnapTypeY = Globals | "mandatory" | "none" | "proximity"; + + export type ScrollTimeline = Globals | "none" | (string & {}); + + export type ScrollTimelineAxis = Globals | "block" | "inline" | "x" | "y" | (string & {}); + + export type ScrollTimelineName = Globals | "none" | (string & {}); + + export type ScrollbarColor = Globals | "auto" | (string & {}); + + export type ScrollbarGutter = Globals | "auto" | "stable" | (string & {}); + + export type ScrollbarWidth = Globals | "auto" | "none" | "thin"; + + export type ShapeImageThreshold = Globals | (string & {}) | (number & {}); + + export type ShapeMargin<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type ShapeOutside = Globals | DataType.Box | "margin-box" | "none" | (string & {}); + + export type TabSize<TLength = (string & {}) | 0> = Globals | TLength | (number & {}) | (string & {}); + + export type TableLayout = Globals | "auto" | "fixed"; + + export type TextAlign = Globals | "-webkit-match-parent" | "center" | "end" | "justify" | "left" | "match-parent" | "right" | "start"; + + export type TextAlignLast = Globals | "auto" | "center" | "end" | "justify" | "left" | "right" | "start"; + + export type TextCombineUpright = Globals | "all" | "none" | (string & {}); + + export type TextDecoration<TLength = (string & {}) | 0> = + | Globals + | DataType.Color + | TLength + | "auto" + | "blink" + | "dashed" + | "dotted" + | "double" + | "from-font" + | "grammar-error" + | "line-through" + | "none" + | "overline" + | "solid" + | "spelling-error" + | "underline" + | "wavy" + | (string & {}); + + export type TextDecorationColor = Globals | DataType.Color; + + export type TextDecorationLine = Globals | "blink" | "grammar-error" | "line-through" | "none" | "overline" | "spelling-error" | "underline" | (string & {}); + + export type TextDecorationSkip = Globals | "box-decoration" | "edges" | "leading-spaces" | "none" | "objects" | "spaces" | "trailing-spaces" | (string & {}); + + export type TextDecorationSkipInk = Globals | "all" | "auto" | "none"; + + export type TextDecorationStyle = Globals | "dashed" | "dotted" | "double" | "solid" | "wavy"; + + export type TextDecorationThickness<TLength = (string & {}) | 0> = Globals | TLength | "auto" | "from-font" | (string & {}); + + export type TextEmphasis = Globals | DataType.Color | "circle" | "dot" | "double-circle" | "filled" | "none" | "open" | "sesame" | "triangle" | (string & {}); + + export type TextEmphasisColor = Globals | DataType.Color; + + export type TextEmphasisPosition = Globals | (string & {}); + + export type TextEmphasisStyle = Globals | "circle" | "dot" | "double-circle" | "filled" | "none" | "open" | "sesame" | "triangle" | (string & {}); + + export type TextIndent<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type TextJustify = Globals | "auto" | "inter-character" | "inter-word" | "none"; + + export type TextOrientation = Globals | "mixed" | "sideways" | "upright"; + + export type TextOverflow = Globals | "clip" | "ellipsis" | (string & {}); + + export type TextRendering = Globals | "auto" | "geometricPrecision" | "optimizeLegibility" | "optimizeSpeed"; + + export type TextShadow = Globals | "none" | (string & {}); + + export type TextSizeAdjust = Globals | "auto" | "none" | (string & {}); + + export type TextTransform = Globals | "capitalize" | "full-size-kana" | "full-width" | "lowercase" | "none" | "uppercase"; + + export type TextUnderlineOffset<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type TextUnderlinePosition = Globals | "auto" | "from-font" | "left" | "right" | "under" | (string & {}); + + export type TextWrap = Globals | "balance" | "nowrap" | "pretty" | "stable" | "wrap"; + + export type TimelineScope = Globals | "none" | (string & {}); + + export type Top<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type TouchAction = + | Globals + | "-ms-manipulation" + | "-ms-none" + | "-ms-pinch-zoom" + | "auto" + | "manipulation" + | "none" + | "pan-down" + | "pan-left" + | "pan-right" + | "pan-up" + | "pan-x" + | "pan-y" + | "pinch-zoom" + | (string & {}); + + export type Transform = Globals | "none" | (string & {}); + + export type TransformBox = Globals | "border-box" | "content-box" | "fill-box" | "stroke-box" | "view-box"; + + export type TransformOrigin<TLength = (string & {}) | 0> = Globals | TLength | "bottom" | "center" | "left" | "right" | "top" | (string & {}); + + export type TransformStyle = Globals | "flat" | "preserve-3d"; + + export type Transition<TTime = string & {}> = Globals | DataType.SingleTransition<TTime> | (string & {}); + + export type TransitionBehavior = Globals | "allow-discrete" | "normal" | (string & {}); + + export type TransitionDelay<TTime = string & {}> = Globals | TTime | (string & {}); + + export type TransitionDuration<TTime = string & {}> = Globals | TTime | (string & {}); + + export type TransitionProperty = Globals | "all" | "none" | (string & {}); + + export type TransitionTimingFunction = Globals | DataType.EasingFunction | (string & {}); + + export type Translate<TLength = (string & {}) | 0> = Globals | TLength | "none" | (string & {}); + + export type UnicodeBidi = + | Globals + | "-moz-isolate" + | "-moz-isolate-override" + | "-moz-plaintext" + | "-webkit-isolate" + | "-webkit-isolate-override" + | "-webkit-plaintext" + | "bidi-override" + | "embed" + | "isolate" + | "isolate-override" + | "normal" + | "plaintext"; + + export type UserSelect = Globals | "-moz-none" | "all" | "auto" | "contain" | "element" | "none" | "text"; + + export type VerticalAlign<TLength = (string & {}) | 0> = + | Globals + | TLength + | "baseline" + | "bottom" + | "middle" + | "sub" + | "super" + | "text-bottom" + | "text-top" + | "top" + | (string & {}); + + export type ViewTimeline = Globals | "none" | (string & {}); + + export type ViewTimelineAxis = Globals | "block" | "inline" | "x" | "y" | (string & {}); + + export type ViewTimelineInset<TLength = (string & {}) | 0> = Globals | TLength | "auto" | (string & {}); + + export type ViewTimelineName = Globals | "none" | (string & {}); + + export type ViewTransitionName = Globals | "none" | (string & {}); + + export type Visibility = Globals | "collapse" | "hidden" | "visible"; + + export type WhiteSpace = + | Globals + | "-moz-pre-wrap" + | "balance" + | "break-spaces" + | "collapse" + | "discard" + | "discard-after" + | "discard-before" + | "discard-inner" + | "none" + | "normal" + | "nowrap" + | "pre" + | "pre-line" + | "pre-wrap" + | "preserve" + | "preserve-breaks" + | "preserve-spaces" + | "pretty" + | "stable" + | "wrap" + | (string & {}); + + export type WhiteSpaceCollapse = Globals | "break-spaces" | "collapse" | "discard" | "preserve" | "preserve-breaks" | "preserve-spaces"; + + export type WhiteSpaceTrim = Globals | "discard-after" | "discard-before" | "discard-inner" | "none" | (string & {}); + + export type Widows = Globals | (number & {}) | (string & {}); + + export type Width<TLength = (string & {}) | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fit-content" + | "-webkit-max-content" + | "auto" + | "fit-content" + | "intrinsic" + | "max-content" + | "min-content" + | "min-intrinsic" + | (string & {}); + + export type WillChange = Globals | DataType.AnimateableFeature | "auto" | (string & {}); + + export type WordBreak = Globals | "break-all" | "break-word" | "keep-all" | "normal"; + + export type WordSpacing<TLength = (string & {}) | 0> = Globals | TLength | "normal"; + + export type WordWrap = Globals | "break-word" | "normal"; + + export type WritingMode = Globals | "horizontal-tb" | "sideways-lr" | "sideways-rl" | "vertical-lr" | "vertical-rl"; + + export type ZIndex = Globals | "auto" | (number & {}) | (string & {}); + + export type Zoom = Globals | "normal" | "reset" | (string & {}) | (number & {}); + + export type MozAppearance = + | Globals + | "-moz-mac-unified-toolbar" + | "-moz-win-borderless-glass" + | "-moz-win-browsertabbar-toolbox" + | "-moz-win-communications-toolbox" + | "-moz-win-communicationstext" + | "-moz-win-exclude-glass" + | "-moz-win-glass" + | "-moz-win-media-toolbox" + | "-moz-win-mediatext" + | "-moz-window-button-box" + | "-moz-window-button-box-maximized" + | "-moz-window-button-close" + | "-moz-window-button-maximize" + | "-moz-window-button-minimize" + | "-moz-window-button-restore" + | "-moz-window-frame-bottom" + | "-moz-window-frame-left" + | "-moz-window-frame-right" + | "-moz-window-titlebar" + | "-moz-window-titlebar-maximized" + | "button" + | "button-arrow-down" + | "button-arrow-next" + | "button-arrow-previous" + | "button-arrow-up" + | "button-bevel" + | "button-focus" + | "caret" + | "checkbox" + | "checkbox-container" + | "checkbox-label" + | "checkmenuitem" + | "dualbutton" + | "groupbox" + | "listbox" + | "listitem" + | "menuarrow" + | "menubar" + | "menucheckbox" + | "menuimage" + | "menuitem" + | "menuitemtext" + | "menulist" + | "menulist-button" + | "menulist-text" + | "menulist-textfield" + | "menupopup" + | "menuradio" + | "menuseparator" + | "meterbar" + | "meterchunk" + | "none" + | "progressbar" + | "progressbar-vertical" + | "progresschunk" + | "progresschunk-vertical" + | "radio" + | "radio-container" + | "radio-label" + | "radiomenuitem" + | "range" + | "range-thumb" + | "resizer" + | "resizerpanel" + | "scale-horizontal" + | "scale-vertical" + | "scalethumb-horizontal" + | "scalethumb-vertical" + | "scalethumbend" + | "scalethumbstart" + | "scalethumbtick" + | "scrollbarbutton-down" + | "scrollbarbutton-left" + | "scrollbarbutton-right" + | "scrollbarbutton-up" + | "scrollbarthumb-horizontal" + | "scrollbarthumb-vertical" + | "scrollbartrack-horizontal" + | "scrollbartrack-vertical" + | "searchfield" + | "separator" + | "sheet" + | "spinner" + | "spinner-downbutton" + | "spinner-textfield" + | "spinner-upbutton" + | "splitter" + | "statusbar" + | "statusbarpanel" + | "tab" + | "tab-scroll-arrow-back" + | "tab-scroll-arrow-forward" + | "tabpanel" + | "tabpanels" + | "textfield" + | "textfield-multiline" + | "toolbar" + | "toolbarbutton" + | "toolbarbutton-dropdown" + | "toolbargripper" + | "toolbox" + | "tooltip" + | "treeheader" + | "treeheadercell" + | "treeheadersortarrow" + | "treeitem" + | "treeline" + | "treetwisty" + | "treetwistyopen" + | "treeview"; + + export type MozBinding = Globals | "none" | (string & {}); + + export type MozBorderBottomColors = Globals | DataType.Color | "none" | (string & {}); + + export type MozBorderLeftColors = Globals | DataType.Color | "none" | (string & {}); + + export type MozBorderRightColors = Globals | DataType.Color | "none" | (string & {}); + + export type MozBorderTopColors = Globals | DataType.Color | "none" | (string & {}); + + export type MozContextProperties = Globals | "fill" | "fill-opacity" | "none" | "stroke" | "stroke-opacity" | (string & {}); + + export type MozFloatEdge = Globals | "border-box" | "content-box" | "margin-box" | "padding-box"; + + export type MozForceBrokenImageIcon = Globals | 0 | (string & {}) | 1; + + export type MozImageRegion = Globals | "auto" | (string & {}); + + export type MozOrient = Globals | "block" | "horizontal" | "inline" | "vertical"; + + export type MozOutlineRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type MozOutlineRadiusBottomleft<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type MozOutlineRadiusBottomright<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type MozOutlineRadiusTopleft<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type MozOutlineRadiusTopright<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type MozStackSizing = Globals | "ignore" | "stretch-to-fit"; + + export type MozTextBlink = Globals | "blink" | "none"; + + export type MozUserFocus = Globals | "ignore" | "none" | "normal" | "select-after" | "select-all" | "select-before" | "select-menu" | "select-same"; + + export type MozUserInput = Globals | "auto" | "disabled" | "enabled" | "none"; + + export type MozUserModify = Globals | "read-only" | "read-write" | "write-only"; + + export type MozWindowDragging = Globals | "drag" | "no-drag"; + + export type MozWindowShadow = Globals | "default" | "menu" | "none" | "sheet" | "tooltip"; + + export type MsAccelerator = Globals | "false" | "true"; + + export type MsBlockProgression = Globals | "bt" | "lr" | "rl" | "tb"; + + export type MsContentZoomChaining = Globals | "chained" | "none"; + + export type MsContentZoomLimit = Globals | (string & {}); + + export type MsContentZoomLimitMax = Globals | (string & {}); + + export type MsContentZoomLimitMin = Globals | (string & {}); + + export type MsContentZoomSnap = Globals | "mandatory" | "none" | "proximity" | (string & {}); + + export type MsContentZoomSnapPoints = Globals | (string & {}); + + export type MsContentZoomSnapType = Globals | "mandatory" | "none" | "proximity"; + + export type MsContentZooming = Globals | "none" | "zoom"; + + export type MsFilter = Globals | (string & {}); + + export type MsFlowFrom = Globals | "none" | (string & {}); + + export type MsFlowInto = Globals | "none" | (string & {}); + + export type MsGridColumns<TLength = (string & {}) | 0> = Globals | DataType.TrackBreadth<TLength> | "none" | (string & {}); + + export type MsGridRows<TLength = (string & {}) | 0> = Globals | DataType.TrackBreadth<TLength> | "none" | (string & {}); + + export type MsHighContrastAdjust = Globals | "auto" | "none"; + + export type MsHyphenateLimitChars = Globals | "auto" | (string & {}) | (number & {}); + + export type MsHyphenateLimitLines = Globals | "no-limit" | (number & {}) | (string & {}); + + export type MsHyphenateLimitZone<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type MsImeAlign = Globals | "after" | "auto"; + + export type MsOverflowStyle = Globals | "-ms-autohiding-scrollbar" | "auto" | "none" | "scrollbar"; + + export type MsScrollChaining = Globals | "chained" | "none"; + + export type MsScrollLimit = Globals | (string & {}); + + export type MsScrollLimitXMax<TLength = (string & {}) | 0> = Globals | TLength | "auto"; + + export type MsScrollLimitXMin<TLength = (string & {}) | 0> = Globals | TLength; + + export type MsScrollLimitYMax<TLength = (string & {}) | 0> = Globals | TLength | "auto"; + + export type MsScrollLimitYMin<TLength = (string & {}) | 0> = Globals | TLength; + + export type MsScrollRails = Globals | "none" | "railed"; + + export type MsScrollSnapPointsX = Globals | (string & {}); + + export type MsScrollSnapPointsY = Globals | (string & {}); + + export type MsScrollSnapType = Globals | "mandatory" | "none" | "proximity"; + + export type MsScrollSnapX = Globals | (string & {}); + + export type MsScrollSnapY = Globals | (string & {}); + + export type MsScrollTranslation = Globals | "none" | "vertical-to-horizontal"; + + export type MsScrollbar3dlightColor = Globals | DataType.Color; + + export type MsScrollbarArrowColor = Globals | DataType.Color; + + export type MsScrollbarBaseColor = Globals | DataType.Color; + + export type MsScrollbarDarkshadowColor = Globals | DataType.Color; + + export type MsScrollbarFaceColor = Globals | DataType.Color; + + export type MsScrollbarHighlightColor = Globals | DataType.Color; + + export type MsScrollbarShadowColor = Globals | DataType.Color; + + export type MsScrollbarTrackColor = Globals | DataType.Color; + + export type MsTextAutospace = Globals | "ideograph-alpha" | "ideograph-numeric" | "ideograph-parenthesis" | "ideograph-space" | "none"; + + export type MsTouchSelect = Globals | "grippers" | "none"; + + export type MsUserSelect = Globals | "element" | "none" | "text"; + + export type MsWrapFlow = Globals | "auto" | "both" | "clear" | "end" | "maximum" | "start"; + + export type MsWrapMargin<TLength = (string & {}) | 0> = Globals | TLength; + + export type MsWrapThrough = Globals | "none" | "wrap"; + + export type WebkitAppearance = + | Globals + | "-apple-pay-button" + | "button" + | "button-bevel" + | "caret" + | "checkbox" + | "default-button" + | "inner-spin-button" + | "listbox" + | "listitem" + | "media-controls-background" + | "media-controls-fullscreen-background" + | "media-current-time-display" + | "media-enter-fullscreen-button" + | "media-exit-fullscreen-button" + | "media-fullscreen-button" + | "media-mute-button" + | "media-overlay-play-button" + | "media-play-button" + | "media-seek-back-button" + | "media-seek-forward-button" + | "media-slider" + | "media-sliderthumb" + | "media-time-remaining-display" + | "media-toggle-closed-captions-button" + | "media-volume-slider" + | "media-volume-slider-container" + | "media-volume-sliderthumb" + | "menulist" + | "menulist-button" + | "menulist-text" + | "menulist-textfield" + | "meter" + | "none" + | "progress-bar" + | "progress-bar-value" + | "push-button" + | "radio" + | "searchfield" + | "searchfield-cancel-button" + | "searchfield-decoration" + | "searchfield-results-button" + | "searchfield-results-decoration" + | "slider-horizontal" + | "slider-vertical" + | "sliderthumb-horizontal" + | "sliderthumb-vertical" + | "square-button" + | "textarea" + | "textfield"; + + export type WebkitBorderBefore<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {}); + + export type WebkitBorderBeforeColor = Globals | DataType.Color; + + export type WebkitBorderBeforeStyle = Globals | DataType.LineStyle | (string & {}); + + export type WebkitBorderBeforeWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | (string & {}); + + export type WebkitBoxReflect<TLength = (string & {}) | 0> = Globals | TLength | "above" | "below" | "left" | "right" | (string & {}); + + export type WebkitLineClamp = Globals | "none" | (number & {}) | (string & {}); + + export type WebkitMask<TLength = (string & {}) | 0> = + | Globals + | DataType.Position<TLength> + | DataType.RepeatStyle + | DataType.Box + | "border" + | "content" + | "none" + | "padding" + | "text" + | (string & {}); + + export type WebkitMaskAttachment = Globals | DataType.Attachment | (string & {}); + + export type WebkitMaskClip = Globals | DataType.Box | "border" | "content" | "padding" | "text" | (string & {}); + + export type WebkitMaskComposite = Globals | DataType.CompositeStyle | (string & {}); + + export type WebkitMaskImage = Globals | "none" | (string & {}); + + export type WebkitMaskOrigin = Globals | DataType.Box | "border" | "content" | "padding" | (string & {}); + + export type WebkitMaskPosition<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength> | (string & {}); + + export type WebkitMaskPositionX<TLength = (string & {}) | 0> = Globals | TLength | "center" | "left" | "right" | (string & {}); + + export type WebkitMaskPositionY<TLength = (string & {}) | 0> = Globals | TLength | "bottom" | "center" | "top" | (string & {}); + + export type WebkitMaskRepeat = Globals | DataType.RepeatStyle | (string & {}); + + export type WebkitMaskRepeatX = Globals | "no-repeat" | "repeat" | "round" | "space"; + + export type WebkitMaskRepeatY = Globals | "no-repeat" | "repeat" | "round" | "space"; + + export type WebkitMaskSize<TLength = (string & {}) | 0> = Globals | DataType.BgSize<TLength> | (string & {}); + + export type WebkitOverflowScrolling = Globals | "auto" | "touch"; + + export type WebkitTapHighlightColor = Globals | DataType.Color; + + export type WebkitTextFillColor = Globals | DataType.Color; + + export type WebkitTextStroke<TLength = (string & {}) | 0> = Globals | DataType.Color | TLength | (string & {}); + + export type WebkitTextStrokeColor = Globals | DataType.Color; + + export type WebkitTextStrokeWidth<TLength = (string & {}) | 0> = Globals | TLength; + + export type WebkitTouchCallout = Globals | "default" | "none"; + + export type WebkitUserModify = Globals | "read-only" | "read-write" | "read-write-plaintext-only"; + + export type AlignmentBaseline = + | Globals + | "after-edge" + | "alphabetic" + | "auto" + | "baseline" + | "before-edge" + | "central" + | "hanging" + | "ideographic" + | "mathematical" + | "middle" + | "text-after-edge" + | "text-before-edge"; + + export type BaselineShift<TLength = (string & {}) | 0> = Globals | TLength | "baseline" | "sub" | "super" | (string & {}); + + export type ClipRule = Globals | "evenodd" | "nonzero"; + + export type ColorInterpolation = Globals | "auto" | "linearRGB" | "sRGB"; + + export type ColorRendering = Globals | "auto" | "optimizeQuality" | "optimizeSpeed"; + + export type DominantBaseline = + | Globals + | "alphabetic" + | "auto" + | "central" + | "hanging" + | "ideographic" + | "mathematical" + | "middle" + | "no-change" + | "reset-size" + | "text-after-edge" + | "text-before-edge" + | "use-script"; + + export type Fill = Globals | DataType.Paint; + + export type FillOpacity = Globals | (number & {}) | (string & {}); + + export type FillRule = Globals | "evenodd" | "nonzero"; + + export type FloodColor = Globals | DataType.Color | "currentColor"; + + export type FloodOpacity = Globals | (number & {}) | (string & {}); + + export type GlyphOrientationVertical = Globals | "auto" | (string & {}) | (number & {}); + + export type LightingColor = Globals | DataType.Color | "currentColor"; + + export type Marker = Globals | "none" | (string & {}); + + export type MarkerEnd = Globals | "none" | (string & {}); + + export type MarkerMid = Globals | "none" | (string & {}); + + export type MarkerStart = Globals | "none" | (string & {}); + + export type ShapeRendering = Globals | "auto" | "crispEdges" | "geometricPrecision" | "optimizeSpeed"; + + export type StopColor = Globals | DataType.Color | "currentColor"; + + export type StopOpacity = Globals | (number & {}) | (string & {}); + + export type Stroke = Globals | DataType.Paint; + + export type StrokeDasharray<TLength = (string & {}) | 0> = Globals | DataType.Dasharray<TLength> | "none"; + + export type StrokeDashoffset<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type StrokeLinecap = Globals | "butt" | "round" | "square"; + + export type StrokeLinejoin = Globals | "bevel" | "miter" | "round"; + + export type StrokeMiterlimit = Globals | (number & {}) | (string & {}); + + export type StrokeOpacity = Globals | (number & {}) | (string & {}); + + export type StrokeWidth<TLength = (string & {}) | 0> = Globals | TLength | (string & {}); + + export type TextAnchor = Globals | "end" | "middle" | "start"; + + export type VectorEffect = Globals | "non-scaling-stroke" | "none"; +} + +export namespace AtRule { + export interface CounterStyle<TLength = (string & {}) | 0, TTime = string & {}> { + additiveSymbols?: string | undefined; + fallback?: string | undefined; + negative?: string | undefined; + pad?: string | undefined; + prefix?: string | undefined; + range?: Range | undefined; + speakAs?: SpeakAs | undefined; + suffix?: string | undefined; + symbols?: string | undefined; + system?: System | undefined; + } + + export interface CounterStyleHyphen<TLength = (string & {}) | 0, TTime = string & {}> { + "additive-symbols"?: string | undefined; + fallback?: string | undefined; + negative?: string | undefined; + pad?: string | undefined; + prefix?: string | undefined; + range?: Range | undefined; + "speak-as"?: SpeakAs | undefined; + suffix?: string | undefined; + symbols?: string | undefined; + system?: System | undefined; + } + + export type CounterStyleFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<CounterStyle<TLength, TTime>>; + + export type CounterStyleHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<CounterStyleHyphen<TLength, TTime>>; + + export interface FontFace<TLength = (string & {}) | 0, TTime = string & {}> { + MozFontFeatureSettings?: FontFeatureSettings | undefined; + ascentOverride?: AscentOverride | undefined; + descentOverride?: DescentOverride | undefined; + fontDisplay?: FontDisplay | undefined; + fontFamily?: string | undefined; + fontFeatureSettings?: FontFeatureSettings | undefined; + fontStretch?: FontStretch | undefined; + fontStyle?: FontStyle | undefined; + fontVariant?: FontVariant | undefined; + fontVariationSettings?: FontVariationSettings | undefined; + fontWeight?: FontWeight | undefined; + lineGapOverride?: LineGapOverride | undefined; + sizeAdjust?: string | undefined; + src?: string | undefined; + unicodeRange?: string | undefined; + } + + export interface FontFaceHyphen<TLength = (string & {}) | 0, TTime = string & {}> { + "-moz-font-feature-settings"?: FontFeatureSettings | undefined; + "ascent-override"?: AscentOverride | undefined; + "descent-override"?: DescentOverride | undefined; + "font-display"?: FontDisplay | undefined; + "font-family"?: string | undefined; + "font-feature-settings"?: FontFeatureSettings | undefined; + "font-stretch"?: FontStretch | undefined; + "font-style"?: FontStyle | undefined; + "font-variant"?: FontVariant | undefined; + "font-variation-settings"?: FontVariationSettings | undefined; + "font-weight"?: FontWeight | undefined; + "line-gap-override"?: LineGapOverride | undefined; + "size-adjust"?: string | undefined; + src?: string | undefined; + "unicode-range"?: string | undefined; + } + + export type FontFaceFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<FontFace<TLength, TTime>>; + + export type FontFaceHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<FontFaceHyphen<TLength, TTime>>; + + export interface FontPaletteValues<TLength = (string & {}) | 0, TTime = string & {}> { + basePalette?: BasePalette | undefined; + fontFamily?: string | undefined; + overrideColors?: string | undefined; + } + + export interface FontPaletteValuesHyphen<TLength = (string & {}) | 0, TTime = string & {}> { + "base-palette"?: BasePalette | undefined; + "font-family"?: string | undefined; + "override-colors"?: string | undefined; + } + + export type FontPaletteValuesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<FontPaletteValues<TLength, TTime>>; + + export type FontPaletteValuesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<FontPaletteValuesHyphen<TLength, TTime>>; + + export interface Page<TLength = (string & {}) | 0, TTime = string & {}> { + bleed?: Bleed<TLength> | undefined; + marks?: Marks | undefined; + pageOrientation?: PageOrientation | undefined; + size?: Size<TLength> | undefined; + } + + export interface PageHyphen<TLength = (string & {}) | 0, TTime = string & {}> { + bleed?: Bleed<TLength> | undefined; + marks?: Marks | undefined; + "page-orientation"?: PageOrientation | undefined; + size?: Size<TLength> | undefined; + } + + export type PageFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<Page<TLength, TTime>>; + + export type PageHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<PageHyphen<TLength, TTime>>; + + export interface Property<TLength = (string & {}) | 0, TTime = string & {}> { + inherits?: Inherits | undefined; + initialValue?: string | undefined; + syntax?: string | undefined; + } + + export interface PropertyHyphen<TLength = (string & {}) | 0, TTime = string & {}> { + inherits?: Inherits | undefined; + "initial-value"?: string | undefined; + syntax?: string | undefined; + } + + export type PropertyFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<Property<TLength, TTime>>; + + export type PropertyHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<PropertyHyphen<TLength, TTime>>; + + export interface Viewport<TLength = (string & {}) | 0, TTime = string & {}> { + height?: Height<TLength> | undefined; + maxHeight?: MaxHeight<TLength> | undefined; + maxWidth?: MaxWidth<TLength> | undefined; + maxZoom?: MaxZoom | undefined; + minHeight?: MinHeight<TLength> | undefined; + minWidth?: MinWidth<TLength> | undefined; + minZoom?: MinZoom | undefined; + orientation?: Orientation | undefined; + userZoom?: UserZoom | undefined; + viewportFit?: ViewportFit | undefined; + width?: Width<TLength> | undefined; + zoom?: Zoom | undefined; + } + + export interface ViewportHyphen<TLength = (string & {}) | 0, TTime = string & {}> { + height?: Height<TLength> | undefined; + "max-height"?: MaxHeight<TLength> | undefined; + "max-width"?: MaxWidth<TLength> | undefined; + "max-zoom"?: MaxZoom | undefined; + "min-height"?: MinHeight<TLength> | undefined; + "min-width"?: MinWidth<TLength> | undefined; + "min-zoom"?: MinZoom | undefined; + orientation?: Orientation | undefined; + "user-zoom"?: UserZoom | undefined; + "viewport-fit"?: ViewportFit | undefined; + width?: Width<TLength> | undefined; + zoom?: Zoom | undefined; + } + + export type ViewportFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<Viewport<TLength, TTime>>; + + export type ViewportHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<ViewportHyphen<TLength, TTime>>; + + type Range = "auto" | (string & {}); + + type SpeakAs = "auto" | "bullets" | "numbers" | "spell-out" | "words" | (string & {}); + + type System = "additive" | "alphabetic" | "cyclic" | "fixed" | "numeric" | "symbolic" | (string & {}); + + type FontFeatureSettings = "normal" | (string & {}); + + type AscentOverride = "normal" | (string & {}); + + type DescentOverride = "normal" | (string & {}); + + type FontDisplay = "auto" | "block" | "fallback" | "optional" | "swap"; + + type FontStretch = DataType.FontStretchAbsolute | (string & {}); + + type FontStyle = "italic" | "normal" | "oblique" | (string & {}); + + type FontVariant = + | DataType.EastAsianVariantValues + | "all-petite-caps" + | "all-small-caps" + | "common-ligatures" + | "contextual" + | "diagonal-fractions" + | "discretionary-ligatures" + | "full-width" + | "historical-forms" + | "historical-ligatures" + | "lining-nums" + | "no-common-ligatures" + | "no-contextual" + | "no-discretionary-ligatures" + | "no-historical-ligatures" + | "none" + | "normal" + | "oldstyle-nums" + | "ordinal" + | "petite-caps" + | "proportional-nums" + | "proportional-width" + | "ruby" + | "slashed-zero" + | "small-caps" + | "stacked-fractions" + | "tabular-nums" + | "titling-caps" + | "unicase" + | (string & {}); + + type FontVariationSettings = "normal" | (string & {}); + + type FontWeight = DataType.FontWeightAbsolute | (string & {}); + + type LineGapOverride = "normal" | (string & {}); + + type BasePalette = "dark" | "light" | (number & {}) | (string & {}); + + type Bleed<TLength> = TLength | "auto"; + + type Marks = "crop" | "cross" | "none" | (string & {}); + + type PageOrientation = "rotate-left" | "rotate-right" | "upright"; + + type Size<TLength> = DataType.PageSize | TLength | "auto" | "landscape" | "portrait" | (string & {}); + + type Inherits = "false" | "true"; + + type Height<TLength> = DataType.ViewportLength<TLength> | (string & {}); + + type MaxHeight<TLength> = DataType.ViewportLength<TLength>; + + type MaxWidth<TLength> = DataType.ViewportLength<TLength>; + + type MaxZoom = "auto" | (string & {}) | (number & {}); + + type MinHeight<TLength> = DataType.ViewportLength<TLength>; + + type MinWidth<TLength> = DataType.ViewportLength<TLength>; + + type MinZoom = "auto" | (string & {}) | (number & {}); + + type Orientation = "auto" | "landscape" | "portrait"; + + type UserZoom = "fixed" | "zoom"; + + type ViewportFit = "auto" | "contain" | "cover"; + + type Width<TLength> = DataType.ViewportLength<TLength> | (string & {}); + + type Zoom = "auto" | (string & {}) | (number & {}); +} + +/** + * **Attention!** Data types receives its name from the spec. E.g. `<color>` becomes `DataType.Color` and + * `<content-distribution>` becomes `DataType.ContentDistribution`. It happens quite frequent that these data types + * are split into several data types or/and name changes as the spec develops. So there's a risk that a minor/patch + * update from `csstype` can break your typing if you're using the `DataType` namespace. + */ +export namespace DataType { + type AbsoluteSize = "large" | "medium" | "small" | "x-large" | "x-small" | "xx-large" | "xx-small" | "xxx-large"; + + type AnimateableFeature = "contents" | "scroll-position" | (string & {}); + + type Attachment = "fixed" | "local" | "scroll"; + + type BgPosition<TLength> = TLength | "bottom" | "center" | "left" | "right" | "top" | (string & {}); + + type BgSize<TLength> = TLength | "auto" | "contain" | "cover" | (string & {}); + + type BlendMode = + | "color" + | "color-burn" + | "color-dodge" + | "darken" + | "difference" + | "exclusion" + | "hard-light" + | "hue" + | "lighten" + | "luminosity" + | "multiply" + | "normal" + | "overlay" + | "saturation" + | "screen" + | "soft-light"; + + type Box = "border-box" | "content-box" | "padding-box"; + + type Color = NamedColor | DeprecatedSystemColor | "currentcolor" | (string & {}); + + type CompatAuto = + | "button" + | "checkbox" + | "listbox" + | "menulist" + | "meter" + | "progress-bar" + | "push-button" + | "radio" + | "searchfield" + | "slider-horizontal" + | "square-button" + | "textarea"; + + type CompositeStyle = + | "clear" + | "copy" + | "destination-atop" + | "destination-in" + | "destination-out" + | "destination-over" + | "source-atop" + | "source-in" + | "source-out" + | "source-over" + | "xor"; + + type CompositingOperator = "add" | "exclude" | "intersect" | "subtract"; + + type ContentDistribution = "space-around" | "space-between" | "space-evenly" | "stretch"; + + type ContentList = Quote | "contents" | (string & {}); + + type ContentPosition = "center" | "end" | "flex-end" | "flex-start" | "start"; + + type CubicBezierTimingFunction = "ease" | "ease-in" | "ease-in-out" | "ease-out" | (string & {}); + + type Dasharray<TLength> = TLength | (string & {}) | (number & {}); + + type DeprecatedSystemColor = + | "ActiveBorder" + | "ActiveCaption" + | "AppWorkspace" + | "Background" + | "ButtonFace" + | "ButtonHighlight" + | "ButtonShadow" + | "ButtonText" + | "CaptionText" + | "GrayText" + | "Highlight" + | "HighlightText" + | "InactiveBorder" + | "InactiveCaption" + | "InactiveCaptionText" + | "InfoBackground" + | "InfoText" + | "Menu" + | "MenuText" + | "Scrollbar" + | "ThreeDDarkShadow" + | "ThreeDFace" + | "ThreeDHighlight" + | "ThreeDLightShadow" + | "ThreeDShadow" + | "Window" + | "WindowFrame" + | "WindowText"; + + type DisplayInside = "-ms-flexbox" | "-ms-grid" | "-webkit-flex" | "flex" | "flow" | "flow-root" | "grid" | "ruby" | "table"; + + type DisplayInternal = + | "ruby-base" + | "ruby-base-container" + | "ruby-text" + | "ruby-text-container" + | "table-caption" + | "table-cell" + | "table-column" + | "table-column-group" + | "table-footer-group" + | "table-header-group" + | "table-row" + | "table-row-group"; + + type DisplayLegacy = "-ms-inline-flexbox" | "-ms-inline-grid" | "-webkit-inline-flex" | "inline-block" | "inline-flex" | "inline-grid" | "inline-list-item" | "inline-table"; + + type DisplayOutside = "block" | "inline" | "run-in"; + + type EasingFunction = CubicBezierTimingFunction | StepTimingFunction | "linear"; + + type EastAsianVariantValues = "jis04" | "jis78" | "jis83" | "jis90" | "simplified" | "traditional"; + + type FinalBgLayer<TLength> = Color | BgPosition<TLength> | RepeatStyle | Attachment | Box | "none" | (string & {}); + + type FontStretchAbsolute = + | "condensed" + | "expanded" + | "extra-condensed" + | "extra-expanded" + | "normal" + | "semi-condensed" + | "semi-expanded" + | "ultra-condensed" + | "ultra-expanded" + | (string & {}); + + type FontWeightAbsolute = "bold" | "normal" | (number & {}) | (string & {}); + + type GenericFamily = "cursive" | "fantasy" | "monospace" | "sans-serif" | "serif"; + + type GeometryBox = Box | "fill-box" | "margin-box" | "stroke-box" | "view-box"; + + type GridLine = "auto" | (string & {}) | (number & {}); + + type LineStyle = "dashed" | "dotted" | "double" | "groove" | "hidden" | "inset" | "none" | "outset" | "ridge" | "solid"; + + type LineWidth<TLength> = TLength | "medium" | "thick" | "thin"; + + type MaskLayer<TLength> = Position<TLength> | RepeatStyle | GeometryBox | CompositingOperator | MaskingMode | "no-clip" | "none" | (string & {}); + + type MaskingMode = "alpha" | "luminance" | "match-source"; + + type NamedColor = + | "aliceblue" + | "antiquewhite" + | "aqua" + | "aquamarine" + | "azure" + | "beige" + | "bisque" + | "black" + | "blanchedalmond" + | "blue" + | "blueviolet" + | "brown" + | "burlywood" + | "cadetblue" + | "chartreuse" + | "chocolate" + | "coral" + | "cornflowerblue" + | "cornsilk" + | "crimson" + | "cyan" + | "darkblue" + | "darkcyan" + | "darkgoldenrod" + | "darkgray" + | "darkgreen" + | "darkgrey" + | "darkkhaki" + | "darkmagenta" + | "darkolivegreen" + | "darkorange" + | "darkorchid" + | "darkred" + | "darksalmon" + | "darkseagreen" + | "darkslateblue" + | "darkslategray" + | "darkslategrey" + | "darkturquoise" + | "darkviolet" + | "deeppink" + | "deepskyblue" + | "dimgray" + | "dimgrey" + | "dodgerblue" + | "firebrick" + | "floralwhite" + | "forestgreen" + | "fuchsia" + | "gainsboro" + | "ghostwhite" + | "gold" + | "goldenrod" + | "gray" + | "green" + | "greenyellow" + | "grey" + | "honeydew" + | "hotpink" + | "indianred" + | "indigo" + | "ivory" + | "khaki" + | "lavender" + | "lavenderblush" + | "lawngreen" + | "lemonchiffon" + | "lightblue" + | "lightcoral" + | "lightcyan" + | "lightgoldenrodyellow" + | "lightgray" + | "lightgreen" + | "lightgrey" + | "lightpink" + | "lightsalmon" + | "lightseagreen" + | "lightskyblue" + | "lightslategray" + | "lightslategrey" + | "lightsteelblue" + | "lightyellow" + | "lime" + | "limegreen" + | "linen" + | "magenta" + | "maroon" + | "mediumaquamarine" + | "mediumblue" + | "mediumorchid" + | "mediumpurple" + | "mediumseagreen" + | "mediumslateblue" + | "mediumspringgreen" + | "mediumturquoise" + | "mediumvioletred" + | "midnightblue" + | "mintcream" + | "mistyrose" + | "moccasin" + | "navajowhite" + | "navy" + | "oldlace" + | "olive" + | "olivedrab" + | "orange" + | "orangered" + | "orchid" + | "palegoldenrod" + | "palegreen" + | "paleturquoise" + | "palevioletred" + | "papayawhip" + | "peachpuff" + | "peru" + | "pink" + | "plum" + | "powderblue" + | "purple" + | "rebeccapurple" + | "red" + | "rosybrown" + | "royalblue" + | "saddlebrown" + | "salmon" + | "sandybrown" + | "seagreen" + | "seashell" + | "sienna" + | "silver" + | "skyblue" + | "slateblue" + | "slategray" + | "slategrey" + | "snow" + | "springgreen" + | "steelblue" + | "tan" + | "teal" + | "thistle" + | "tomato" + | "transparent" + | "turquoise" + | "violet" + | "wheat" + | "white" + | "whitesmoke" + | "yellow" + | "yellowgreen"; + + type PageSize = "A3" | "A4" | "A5" | "B4" | "B5" | "JIS-B4" | "JIS-B5" | "ledger" | "legal" | "letter"; + + type Paint = Color | "child" | "context-fill" | "context-stroke" | "none" | (string & {}); + + type Position<TLength> = TLength | "bottom" | "center" | "left" | "right" | "top" | (string & {}); + + type Quote = "close-quote" | "no-close-quote" | "no-open-quote" | "open-quote"; + + type RepeatStyle = "no-repeat" | "repeat" | "repeat-x" | "repeat-y" | "round" | "space" | (string & {}); + + type SelfPosition = "center" | "end" | "flex-end" | "flex-start" | "self-end" | "self-start" | "start"; + + type SingleAnimation<TTime> = + | EasingFunction + | SingleAnimationDirection + | SingleAnimationFillMode + | SingleAnimationTimeline + | TTime + | "infinite" + | "none" + | "paused" + | "running" + | (string & {}) + | (number & {}); + + type SingleAnimationComposition = "accumulate" | "add" | "replace"; + + type SingleAnimationDirection = "alternate" | "alternate-reverse" | "normal" | "reverse"; + + type SingleAnimationFillMode = "backwards" | "both" | "forwards" | "none"; + + type SingleAnimationTimeline = "auto" | "none" | (string & {}); + + type SingleTransition<TTime> = EasingFunction | TTime | "all" | "allow-discrete" | "none" | "normal" | (string & {}); + + type StepTimingFunction = "step-end" | "step-start" | (string & {}); + + type TimelineRangeName = "contain" | "cover" | "entry" | "entry-crossing" | "exit" | "exit-crossing"; + + type TrackBreadth<TLength> = TLength | "auto" | "max-content" | "min-content" | (string & {}); + + type ViewportLength<TLength> = TLength | "auto" | (string & {}); + + type VisualBox = "border-box" | "content-box" | "padding-box"; +} diff --git a/node_modules/csstype/index.js.flow b/node_modules/csstype/index.js.flow new file mode 100644 index 0000000..0b45a32 --- /dev/null +++ b/node_modules/csstype/index.js.flow @@ -0,0 +1,6612 @@ +// @flow strict + +export type StandardLonghandProperties<TLength = string | 0, TTime = string> = {| + accentColor?: Property$AccentColor, + alignContent?: Property$AlignContent, + alignItems?: Property$AlignItems, + alignSelf?: Property$AlignSelf, + alignTracks?: Property$AlignTracks, + animationComposition?: Property$AnimationComposition, + animationDelay?: Property$AnimationDelay<TTime>, + animationDirection?: Property$AnimationDirection, + animationDuration?: Property$AnimationDuration<TTime>, + animationFillMode?: Property$AnimationFillMode, + animationIterationCount?: Property$AnimationIterationCount, + animationName?: Property$AnimationName, + animationPlayState?: Property$AnimationPlayState, + animationRangeEnd?: Property$AnimationRangeEnd<TLength>, + animationRangeStart?: Property$AnimationRangeStart<TLength>, + animationTimeline?: Property$AnimationTimeline, + animationTimingFunction?: Property$AnimationTimingFunction, + appearance?: Property$Appearance, + aspectRatio?: Property$AspectRatio, + backdropFilter?: Property$BackdropFilter, + backfaceVisibility?: Property$BackfaceVisibility, + backgroundAttachment?: Property$BackgroundAttachment, + backgroundBlendMode?: Property$BackgroundBlendMode, + backgroundClip?: Property$BackgroundClip, + backgroundColor?: Property$BackgroundColor, + backgroundImage?: Property$BackgroundImage, + backgroundOrigin?: Property$BackgroundOrigin, + backgroundPositionX?: Property$BackgroundPositionX<TLength>, + backgroundPositionY?: Property$BackgroundPositionY<TLength>, + backgroundRepeat?: Property$BackgroundRepeat, + backgroundSize?: Property$BackgroundSize<TLength>, + blockOverflow?: Property$BlockOverflow, + blockSize?: Property$BlockSize<TLength>, + borderBlockColor?: Property$BorderBlockColor, + borderBlockEndColor?: Property$BorderBlockEndColor, + borderBlockEndStyle?: Property$BorderBlockEndStyle, + borderBlockEndWidth?: Property$BorderBlockEndWidth<TLength>, + borderBlockStartColor?: Property$BorderBlockStartColor, + borderBlockStartStyle?: Property$BorderBlockStartStyle, + borderBlockStartWidth?: Property$BorderBlockStartWidth<TLength>, + borderBlockStyle?: Property$BorderBlockStyle, + borderBlockWidth?: Property$BorderBlockWidth<TLength>, + borderBottomColor?: Property$BorderBottomColor, + borderBottomLeftRadius?: Property$BorderBottomLeftRadius<TLength>, + borderBottomRightRadius?: Property$BorderBottomRightRadius<TLength>, + borderBottomStyle?: Property$BorderBottomStyle, + borderBottomWidth?: Property$BorderBottomWidth<TLength>, + borderCollapse?: Property$BorderCollapse, + borderEndEndRadius?: Property$BorderEndEndRadius<TLength>, + borderEndStartRadius?: Property$BorderEndStartRadius<TLength>, + borderImageOutset?: Property$BorderImageOutset<TLength>, + borderImageRepeat?: Property$BorderImageRepeat, + borderImageSlice?: Property$BorderImageSlice, + borderImageSource?: Property$BorderImageSource, + borderImageWidth?: Property$BorderImageWidth<TLength>, + borderInlineColor?: Property$BorderInlineColor, + borderInlineEndColor?: Property$BorderInlineEndColor, + borderInlineEndStyle?: Property$BorderInlineEndStyle, + borderInlineEndWidth?: Property$BorderInlineEndWidth<TLength>, + borderInlineStartColor?: Property$BorderInlineStartColor, + borderInlineStartStyle?: Property$BorderInlineStartStyle, + borderInlineStartWidth?: Property$BorderInlineStartWidth<TLength>, + borderInlineStyle?: Property$BorderInlineStyle, + borderInlineWidth?: Property$BorderInlineWidth<TLength>, + borderLeftColor?: Property$BorderLeftColor, + borderLeftStyle?: Property$BorderLeftStyle, + borderLeftWidth?: Property$BorderLeftWidth<TLength>, + borderRightColor?: Property$BorderRightColor, + borderRightStyle?: Property$BorderRightStyle, + borderRightWidth?: Property$BorderRightWidth<TLength>, + borderSpacing?: Property$BorderSpacing<TLength>, + borderStartEndRadius?: Property$BorderStartEndRadius<TLength>, + borderStartStartRadius?: Property$BorderStartStartRadius<TLength>, + borderTopColor?: Property$BorderTopColor, + borderTopLeftRadius?: Property$BorderTopLeftRadius<TLength>, + borderTopRightRadius?: Property$BorderTopRightRadius<TLength>, + borderTopStyle?: Property$BorderTopStyle, + borderTopWidth?: Property$BorderTopWidth<TLength>, + bottom?: Property$Bottom<TLength>, + boxDecorationBreak?: Property$BoxDecorationBreak, + boxShadow?: Property$BoxShadow, + boxSizing?: Property$BoxSizing, + breakAfter?: Property$BreakAfter, + breakBefore?: Property$BreakBefore, + breakInside?: Property$BreakInside, + captionSide?: Property$CaptionSide, + caretColor?: Property$CaretColor, + caretShape?: Property$CaretShape, + clear?: Property$Clear, + clipPath?: Property$ClipPath, + color?: Property$Color, + colorAdjust?: Property$PrintColorAdjust, + colorScheme?: Property$ColorScheme, + columnCount?: Property$ColumnCount, + columnFill?: Property$ColumnFill, + columnGap?: Property$ColumnGap<TLength>, + columnRuleColor?: Property$ColumnRuleColor, + columnRuleStyle?: Property$ColumnRuleStyle, + columnRuleWidth?: Property$ColumnRuleWidth<TLength>, + columnSpan?: Property$ColumnSpan, + columnWidth?: Property$ColumnWidth<TLength>, + contain?: Property$Contain, + containIntrinsicBlockSize?: Property$ContainIntrinsicBlockSize<TLength>, + containIntrinsicHeight?: Property$ContainIntrinsicHeight<TLength>, + containIntrinsicInlineSize?: Property$ContainIntrinsicInlineSize<TLength>, + containIntrinsicWidth?: Property$ContainIntrinsicWidth<TLength>, + containerName?: Property$ContainerName, + containerType?: Property$ContainerType, + content?: Property$Content, + contentVisibility?: Property$ContentVisibility, + counterIncrement?: Property$CounterIncrement, + counterReset?: Property$CounterReset, + counterSet?: Property$CounterSet, + cursor?: Property$Cursor, + direction?: Property$Direction, + display?: Property$Display, + emptyCells?: Property$EmptyCells, + filter?: Property$Filter, + flexBasis?: Property$FlexBasis<TLength>, + flexDirection?: Property$FlexDirection, + flexGrow?: Property$FlexGrow, + flexShrink?: Property$FlexShrink, + flexWrap?: Property$FlexWrap, + float?: Property$Float, + fontFamily?: Property$FontFamily, + fontFeatureSettings?: Property$FontFeatureSettings, + fontKerning?: Property$FontKerning, + fontLanguageOverride?: Property$FontLanguageOverride, + fontOpticalSizing?: Property$FontOpticalSizing, + fontPalette?: Property$FontPalette, + fontSize?: Property$FontSize<TLength>, + fontSizeAdjust?: Property$FontSizeAdjust, + fontSmooth?: Property$FontSmooth<TLength>, + fontStretch?: Property$FontStretch, + fontStyle?: Property$FontStyle, + fontSynthesis?: Property$FontSynthesis, + fontSynthesisPosition?: Property$FontSynthesisPosition, + fontSynthesisSmallCaps?: Property$FontSynthesisSmallCaps, + fontSynthesisStyle?: Property$FontSynthesisStyle, + fontSynthesisWeight?: Property$FontSynthesisWeight, + fontVariant?: Property$FontVariant, + fontVariantAlternates?: Property$FontVariantAlternates, + fontVariantCaps?: Property$FontVariantCaps, + fontVariantEastAsian?: Property$FontVariantEastAsian, + fontVariantEmoji?: Property$FontVariantEmoji, + fontVariantLigatures?: Property$FontVariantLigatures, + fontVariantNumeric?: Property$FontVariantNumeric, + fontVariantPosition?: Property$FontVariantPosition, + fontVariationSettings?: Property$FontVariationSettings, + fontWeight?: Property$FontWeight, + forcedColorAdjust?: Property$ForcedColorAdjust, + gridAutoColumns?: Property$GridAutoColumns<TLength>, + gridAutoFlow?: Property$GridAutoFlow, + gridAutoRows?: Property$GridAutoRows<TLength>, + gridColumnEnd?: Property$GridColumnEnd, + gridColumnStart?: Property$GridColumnStart, + gridRowEnd?: Property$GridRowEnd, + gridRowStart?: Property$GridRowStart, + gridTemplateAreas?: Property$GridTemplateAreas, + gridTemplateColumns?: Property$GridTemplateColumns<TLength>, + gridTemplateRows?: Property$GridTemplateRows<TLength>, + hangingPunctuation?: Property$HangingPunctuation, + height?: Property$Height<TLength>, + hyphenateCharacter?: Property$HyphenateCharacter, + hyphenateLimitChars?: Property$HyphenateLimitChars, + hyphens?: Property$Hyphens, + imageOrientation?: Property$ImageOrientation, + imageRendering?: Property$ImageRendering, + imageResolution?: Property$ImageResolution, + initialLetter?: Property$InitialLetter, + inlineSize?: Property$InlineSize<TLength>, + inputSecurity?: Property$InputSecurity, + insetBlockEnd?: Property$InsetBlockEnd<TLength>, + insetBlockStart?: Property$InsetBlockStart<TLength>, + insetInlineEnd?: Property$InsetInlineEnd<TLength>, + insetInlineStart?: Property$InsetInlineStart<TLength>, + isolation?: Property$Isolation, + justifyContent?: Property$JustifyContent, + justifyItems?: Property$JustifyItems, + justifySelf?: Property$JustifySelf, + justifyTracks?: Property$JustifyTracks, + left?: Property$Left<TLength>, + letterSpacing?: Property$LetterSpacing<TLength>, + lineBreak?: Property$LineBreak, + lineHeight?: Property$LineHeight<TLength>, + lineHeightStep?: Property$LineHeightStep<TLength>, + listStyleImage?: Property$ListStyleImage, + listStylePosition?: Property$ListStylePosition, + listStyleType?: Property$ListStyleType, + marginBlockEnd?: Property$MarginBlockEnd<TLength>, + marginBlockStart?: Property$MarginBlockStart<TLength>, + marginBottom?: Property$MarginBottom<TLength>, + marginInlineEnd?: Property$MarginInlineEnd<TLength>, + marginInlineStart?: Property$MarginInlineStart<TLength>, + marginLeft?: Property$MarginLeft<TLength>, + marginRight?: Property$MarginRight<TLength>, + marginTop?: Property$MarginTop<TLength>, + marginTrim?: Property$MarginTrim, + maskBorderMode?: Property$MaskBorderMode, + maskBorderOutset?: Property$MaskBorderOutset<TLength>, + maskBorderRepeat?: Property$MaskBorderRepeat, + maskBorderSlice?: Property$MaskBorderSlice, + maskBorderSource?: Property$MaskBorderSource, + maskBorderWidth?: Property$MaskBorderWidth<TLength>, + maskClip?: Property$MaskClip, + maskComposite?: Property$MaskComposite, + maskImage?: Property$MaskImage, + maskMode?: Property$MaskMode, + maskOrigin?: Property$MaskOrigin, + maskPosition?: Property$MaskPosition<TLength>, + maskRepeat?: Property$MaskRepeat, + maskSize?: Property$MaskSize<TLength>, + maskType?: Property$MaskType, + masonryAutoFlow?: Property$MasonryAutoFlow, + mathDepth?: Property$MathDepth, + mathShift?: Property$MathShift, + mathStyle?: Property$MathStyle, + maxBlockSize?: Property$MaxBlockSize<TLength>, + maxHeight?: Property$MaxHeight<TLength>, + maxInlineSize?: Property$MaxInlineSize<TLength>, + maxLines?: Property$MaxLines, + maxWidth?: Property$MaxWidth<TLength>, + minBlockSize?: Property$MinBlockSize<TLength>, + minHeight?: Property$MinHeight<TLength>, + minInlineSize?: Property$MinInlineSize<TLength>, + minWidth?: Property$MinWidth<TLength>, + mixBlendMode?: Property$MixBlendMode, + motionDistance?: Property$OffsetDistance<TLength>, + motionPath?: Property$OffsetPath, + motionRotation?: Property$OffsetRotate, + objectFit?: Property$ObjectFit, + objectPosition?: Property$ObjectPosition<TLength>, + offsetAnchor?: Property$OffsetAnchor<TLength>, + offsetDistance?: Property$OffsetDistance<TLength>, + offsetPath?: Property$OffsetPath, + offsetPosition?: Property$OffsetPosition<TLength>, + offsetRotate?: Property$OffsetRotate, + offsetRotation?: Property$OffsetRotate, + opacity?: Property$Opacity, + order?: Property$Order, + orphans?: Property$Orphans, + outlineColor?: Property$OutlineColor, + outlineOffset?: Property$OutlineOffset<TLength>, + outlineStyle?: Property$OutlineStyle, + outlineWidth?: Property$OutlineWidth<TLength>, + overflowAnchor?: Property$OverflowAnchor, + overflowBlock?: Property$OverflowBlock, + overflowClipBox?: Property$OverflowClipBox, + overflowClipMargin?: Property$OverflowClipMargin<TLength>, + overflowInline?: Property$OverflowInline, + overflowWrap?: Property$OverflowWrap, + overflowX?: Property$OverflowX, + overflowY?: Property$OverflowY, + overlay?: Property$Overlay, + overscrollBehaviorBlock?: Property$OverscrollBehaviorBlock, + overscrollBehaviorInline?: Property$OverscrollBehaviorInline, + overscrollBehaviorX?: Property$OverscrollBehaviorX, + overscrollBehaviorY?: Property$OverscrollBehaviorY, + paddingBlockEnd?: Property$PaddingBlockEnd<TLength>, + paddingBlockStart?: Property$PaddingBlockStart<TLength>, + paddingBottom?: Property$PaddingBottom<TLength>, + paddingInlineEnd?: Property$PaddingInlineEnd<TLength>, + paddingInlineStart?: Property$PaddingInlineStart<TLength>, + paddingLeft?: Property$PaddingLeft<TLength>, + paddingRight?: Property$PaddingRight<TLength>, + paddingTop?: Property$PaddingTop<TLength>, + page?: Property$Page, + pageBreakAfter?: Property$PageBreakAfter, + pageBreakBefore?: Property$PageBreakBefore, + pageBreakInside?: Property$PageBreakInside, + paintOrder?: Property$PaintOrder, + perspective?: Property$Perspective<TLength>, + perspectiveOrigin?: Property$PerspectiveOrigin<TLength>, + pointerEvents?: Property$PointerEvents, + position?: Property$Position, + printColorAdjust?: Property$PrintColorAdjust, + quotes?: Property$Quotes, + resize?: Property$Resize, + right?: Property$Right<TLength>, + rotate?: Property$Rotate, + rowGap?: Property$RowGap<TLength>, + rubyAlign?: Property$RubyAlign, + rubyMerge?: Property$RubyMerge, + rubyPosition?: Property$RubyPosition, + scale?: Property$Scale, + scrollBehavior?: Property$ScrollBehavior, + scrollMarginBlockEnd?: Property$ScrollMarginBlockEnd<TLength>, + scrollMarginBlockStart?: Property$ScrollMarginBlockStart<TLength>, + scrollMarginBottom?: Property$ScrollMarginBottom<TLength>, + scrollMarginInlineEnd?: Property$ScrollMarginInlineEnd<TLength>, + scrollMarginInlineStart?: Property$ScrollMarginInlineStart<TLength>, + scrollMarginLeft?: Property$ScrollMarginLeft<TLength>, + scrollMarginRight?: Property$ScrollMarginRight<TLength>, + scrollMarginTop?: Property$ScrollMarginTop<TLength>, + scrollPaddingBlockEnd?: Property$ScrollPaddingBlockEnd<TLength>, + scrollPaddingBlockStart?: Property$ScrollPaddingBlockStart<TLength>, + scrollPaddingBottom?: Property$ScrollPaddingBottom<TLength>, + scrollPaddingInlineEnd?: Property$ScrollPaddingInlineEnd<TLength>, + scrollPaddingInlineStart?: Property$ScrollPaddingInlineStart<TLength>, + scrollPaddingLeft?: Property$ScrollPaddingLeft<TLength>, + scrollPaddingRight?: Property$ScrollPaddingRight<TLength>, + scrollPaddingTop?: Property$ScrollPaddingTop<TLength>, + scrollSnapAlign?: Property$ScrollSnapAlign, + scrollSnapMarginBottom?: Property$ScrollMarginBottom<TLength>, + scrollSnapMarginLeft?: Property$ScrollMarginLeft<TLength>, + scrollSnapMarginRight?: Property$ScrollMarginRight<TLength>, + scrollSnapMarginTop?: Property$ScrollMarginTop<TLength>, + scrollSnapStop?: Property$ScrollSnapStop, + scrollSnapType?: Property$ScrollSnapType, + scrollTimelineAxis?: Property$ScrollTimelineAxis, + scrollTimelineName?: Property$ScrollTimelineName, + scrollbarColor?: Property$ScrollbarColor, + scrollbarGutter?: Property$ScrollbarGutter, + scrollbarWidth?: Property$ScrollbarWidth, + shapeImageThreshold?: Property$ShapeImageThreshold, + shapeMargin?: Property$ShapeMargin<TLength>, + shapeOutside?: Property$ShapeOutside, + tabSize?: Property$TabSize<TLength>, + tableLayout?: Property$TableLayout, + textAlign?: Property$TextAlign, + textAlignLast?: Property$TextAlignLast, + textCombineUpright?: Property$TextCombineUpright, + textDecorationColor?: Property$TextDecorationColor, + textDecorationLine?: Property$TextDecorationLine, + textDecorationSkip?: Property$TextDecorationSkip, + textDecorationSkipInk?: Property$TextDecorationSkipInk, + textDecorationStyle?: Property$TextDecorationStyle, + textDecorationThickness?: Property$TextDecorationThickness<TLength>, + textEmphasisColor?: Property$TextEmphasisColor, + textEmphasisPosition?: Property$TextEmphasisPosition, + textEmphasisStyle?: Property$TextEmphasisStyle, + textIndent?: Property$TextIndent<TLength>, + textJustify?: Property$TextJustify, + textOrientation?: Property$TextOrientation, + textOverflow?: Property$TextOverflow, + textRendering?: Property$TextRendering, + textShadow?: Property$TextShadow, + textSizeAdjust?: Property$TextSizeAdjust, + textTransform?: Property$TextTransform, + textUnderlineOffset?: Property$TextUnderlineOffset<TLength>, + textUnderlinePosition?: Property$TextUnderlinePosition, + textWrap?: Property$TextWrap, + timelineScope?: Property$TimelineScope, + top?: Property$Top<TLength>, + touchAction?: Property$TouchAction, + transform?: Property$Transform, + transformBox?: Property$TransformBox, + transformOrigin?: Property$TransformOrigin<TLength>, + transformStyle?: Property$TransformStyle, + transitionBehavior?: Property$TransitionBehavior, + transitionDelay?: Property$TransitionDelay<TTime>, + transitionDuration?: Property$TransitionDuration<TTime>, + transitionProperty?: Property$TransitionProperty, + transitionTimingFunction?: Property$TransitionTimingFunction, + translate?: Property$Translate<TLength>, + unicodeBidi?: Property$UnicodeBidi, + userSelect?: Property$UserSelect, + verticalAlign?: Property$VerticalAlign<TLength>, + viewTimelineAxis?: Property$ViewTimelineAxis, + viewTimelineInset?: Property$ViewTimelineInset<TLength>, + viewTimelineName?: Property$ViewTimelineName, + viewTransitionName?: Property$ViewTransitionName, + visibility?: Property$Visibility, + whiteSpace?: Property$WhiteSpace, + whiteSpaceCollapse?: Property$WhiteSpaceCollapse, + whiteSpaceTrim?: Property$WhiteSpaceTrim, + widows?: Property$Widows, + width?: Property$Width<TLength>, + willChange?: Property$WillChange, + wordBreak?: Property$WordBreak, + wordSpacing?: Property$WordSpacing<TLength>, + wordWrap?: Property$WordWrap, + writingMode?: Property$WritingMode, + zIndex?: Property$ZIndex, + zoom?: Property$Zoom, +|}; + +export type StandardShorthandProperties<TLength = string | 0, TTime = string> = {| + all?: Property$All, + animation?: Property$Animation<TTime>, + animationRange?: Property$AnimationRange<TLength>, + background?: Property$Background<TLength>, + backgroundPosition?: Property$BackgroundPosition<TLength>, + border?: Property$Border<TLength>, + borderBlock?: Property$BorderBlock<TLength>, + borderBlockEnd?: Property$BorderBlockEnd<TLength>, + borderBlockStart?: Property$BorderBlockStart<TLength>, + borderBottom?: Property$BorderBottom<TLength>, + borderColor?: Property$BorderColor, + borderImage?: Property$BorderImage, + borderInline?: Property$BorderInline<TLength>, + borderInlineEnd?: Property$BorderInlineEnd<TLength>, + borderInlineStart?: Property$BorderInlineStart<TLength>, + borderLeft?: Property$BorderLeft<TLength>, + borderRadius?: Property$BorderRadius<TLength>, + borderRight?: Property$BorderRight<TLength>, + borderStyle?: Property$BorderStyle, + borderTop?: Property$BorderTop<TLength>, + borderWidth?: Property$BorderWidth<TLength>, + caret?: Property$Caret, + columnRule?: Property$ColumnRule<TLength>, + columns?: Property$Columns<TLength>, + containIntrinsicSize?: Property$ContainIntrinsicSize<TLength>, + container?: Property$Container, + flex?: Property$Flex<TLength>, + flexFlow?: Property$FlexFlow, + font?: Property$Font, + gap?: Property$Gap<TLength>, + grid?: Property$Grid, + gridArea?: Property$GridArea, + gridColumn?: Property$GridColumn, + gridRow?: Property$GridRow, + gridTemplate?: Property$GridTemplate, + inset?: Property$Inset<TLength>, + insetBlock?: Property$InsetBlock<TLength>, + insetInline?: Property$InsetInline<TLength>, + lineClamp?: Property$LineClamp, + listStyle?: Property$ListStyle, + margin?: Property$Margin<TLength>, + marginBlock?: Property$MarginBlock<TLength>, + marginInline?: Property$MarginInline<TLength>, + mask?: Property$Mask<TLength>, + maskBorder?: Property$MaskBorder, + motion?: Property$Offset<TLength>, + offset?: Property$Offset<TLength>, + outline?: Property$Outline<TLength>, + overflow?: Property$Overflow, + overscrollBehavior?: Property$OverscrollBehavior, + padding?: Property$Padding<TLength>, + paddingBlock?: Property$PaddingBlock<TLength>, + paddingInline?: Property$PaddingInline<TLength>, + placeContent?: Property$PlaceContent, + placeItems?: Property$PlaceItems, + placeSelf?: Property$PlaceSelf, + scrollMargin?: Property$ScrollMargin<TLength>, + scrollMarginBlock?: Property$ScrollMarginBlock<TLength>, + scrollMarginInline?: Property$ScrollMarginInline<TLength>, + scrollPadding?: Property$ScrollPadding<TLength>, + scrollPaddingBlock?: Property$ScrollPaddingBlock<TLength>, + scrollPaddingInline?: Property$ScrollPaddingInline<TLength>, + scrollSnapMargin?: Property$ScrollMargin<TLength>, + scrollTimeline?: Property$ScrollTimeline, + textDecoration?: Property$TextDecoration<TLength>, + textEmphasis?: Property$TextEmphasis, + transition?: Property$Transition<TTime>, + viewTimeline?: Property$ViewTimeline, +|}; + +export type StandardProperties<TLength = string | 0, TTime = string> = {| ...StandardLonghandProperties<TLength, TTime>, ...StandardShorthandProperties<TLength, TTime> |}; + +export type VendorLonghandProperties<TLength = string | 0, TTime = string> = {| + MozAnimationDelay?: Property$AnimationDelay<TTime>, + MozAnimationDirection?: Property$AnimationDirection, + MozAnimationDuration?: Property$AnimationDuration<TTime>, + MozAnimationFillMode?: Property$AnimationFillMode, + MozAnimationIterationCount?: Property$AnimationIterationCount, + MozAnimationName?: Property$AnimationName, + MozAnimationPlayState?: Property$AnimationPlayState, + MozAnimationTimingFunction?: Property$AnimationTimingFunction, + MozAppearance?: Property$MozAppearance, + MozBinding?: Property$MozBinding, + MozBorderBottomColors?: Property$MozBorderBottomColors, + MozBorderEndColor?: Property$BorderInlineEndColor, + MozBorderEndStyle?: Property$BorderInlineEndStyle, + MozBorderEndWidth?: Property$BorderInlineEndWidth<TLength>, + MozBorderLeftColors?: Property$MozBorderLeftColors, + MozBorderRightColors?: Property$MozBorderRightColors, + MozBorderStartColor?: Property$BorderInlineStartColor, + MozBorderStartStyle?: Property$BorderInlineStartStyle, + MozBorderTopColors?: Property$MozBorderTopColors, + MozBoxSizing?: Property$BoxSizing, + MozColumnCount?: Property$ColumnCount, + MozColumnFill?: Property$ColumnFill, + MozColumnRuleColor?: Property$ColumnRuleColor, + MozColumnRuleStyle?: Property$ColumnRuleStyle, + MozColumnRuleWidth?: Property$ColumnRuleWidth<TLength>, + MozColumnWidth?: Property$ColumnWidth<TLength>, + MozContextProperties?: Property$MozContextProperties, + MozFontFeatureSettings?: Property$FontFeatureSettings, + MozFontLanguageOverride?: Property$FontLanguageOverride, + MozHyphens?: Property$Hyphens, + MozImageRegion?: Property$MozImageRegion, + MozMarginEnd?: Property$MarginInlineEnd<TLength>, + MozMarginStart?: Property$MarginInlineStart<TLength>, + MozOrient?: Property$MozOrient, + MozOsxFontSmoothing?: Property$FontSmooth<TLength>, + MozOutlineRadiusBottomleft?: Property$MozOutlineRadiusBottomleft<TLength>, + MozOutlineRadiusBottomright?: Property$MozOutlineRadiusBottomright<TLength>, + MozOutlineRadiusTopleft?: Property$MozOutlineRadiusTopleft<TLength>, + MozOutlineRadiusTopright?: Property$MozOutlineRadiusTopright<TLength>, + MozPaddingEnd?: Property$PaddingInlineEnd<TLength>, + MozPaddingStart?: Property$PaddingInlineStart<TLength>, + MozStackSizing?: Property$MozStackSizing, + MozTabSize?: Property$TabSize<TLength>, + MozTextBlink?: Property$MozTextBlink, + MozTextSizeAdjust?: Property$TextSizeAdjust, + MozUserFocus?: Property$MozUserFocus, + MozUserModify?: Property$MozUserModify, + MozUserSelect?: Property$UserSelect, + MozWindowDragging?: Property$MozWindowDragging, + MozWindowShadow?: Property$MozWindowShadow, + msAccelerator?: Property$MsAccelerator, + msBlockProgression?: Property$MsBlockProgression, + msContentZoomChaining?: Property$MsContentZoomChaining, + msContentZoomLimitMax?: Property$MsContentZoomLimitMax, + msContentZoomLimitMin?: Property$MsContentZoomLimitMin, + msContentZoomSnapPoints?: Property$MsContentZoomSnapPoints, + msContentZoomSnapType?: Property$MsContentZoomSnapType, + msContentZooming?: Property$MsContentZooming, + msFilter?: Property$MsFilter, + msFlexDirection?: Property$FlexDirection, + msFlexPositive?: Property$FlexGrow, + msFlowFrom?: Property$MsFlowFrom, + msFlowInto?: Property$MsFlowInto, + msGridColumns?: Property$MsGridColumns<TLength>, + msGridRows?: Property$MsGridRows<TLength>, + msHighContrastAdjust?: Property$MsHighContrastAdjust, + msHyphenateLimitChars?: Property$MsHyphenateLimitChars, + msHyphenateLimitLines?: Property$MsHyphenateLimitLines, + msHyphenateLimitZone?: Property$MsHyphenateLimitZone<TLength>, + msHyphens?: Property$Hyphens, + msImeAlign?: Property$MsImeAlign, + msLineBreak?: Property$LineBreak, + msOrder?: Property$Order, + msOverflowStyle?: Property$MsOverflowStyle, + msOverflowX?: Property$OverflowX, + msOverflowY?: Property$OverflowY, + msScrollChaining?: Property$MsScrollChaining, + msScrollLimitXMax?: Property$MsScrollLimitXMax<TLength>, + msScrollLimitXMin?: Property$MsScrollLimitXMin<TLength>, + msScrollLimitYMax?: Property$MsScrollLimitYMax<TLength>, + msScrollLimitYMin?: Property$MsScrollLimitYMin<TLength>, + msScrollRails?: Property$MsScrollRails, + msScrollSnapPointsX?: Property$MsScrollSnapPointsX, + msScrollSnapPointsY?: Property$MsScrollSnapPointsY, + msScrollSnapType?: Property$MsScrollSnapType, + msScrollTranslation?: Property$MsScrollTranslation, + msScrollbar3dlightColor?: Property$MsScrollbar3dlightColor, + msScrollbarArrowColor?: Property$MsScrollbarArrowColor, + msScrollbarBaseColor?: Property$MsScrollbarBaseColor, + msScrollbarDarkshadowColor?: Property$MsScrollbarDarkshadowColor, + msScrollbarFaceColor?: Property$MsScrollbarFaceColor, + msScrollbarHighlightColor?: Property$MsScrollbarHighlightColor, + msScrollbarShadowColor?: Property$MsScrollbarShadowColor, + msScrollbarTrackColor?: Property$MsScrollbarTrackColor, + msTextAutospace?: Property$MsTextAutospace, + msTextCombineHorizontal?: Property$TextCombineUpright, + msTextOverflow?: Property$TextOverflow, + msTouchAction?: Property$TouchAction, + msTouchSelect?: Property$MsTouchSelect, + msTransform?: Property$Transform, + msTransformOrigin?: Property$TransformOrigin<TLength>, + msTransitionDelay?: Property$TransitionDelay<TTime>, + msTransitionDuration?: Property$TransitionDuration<TTime>, + msTransitionProperty?: Property$TransitionProperty, + msTransitionTimingFunction?: Property$TransitionTimingFunction, + msUserSelect?: Property$MsUserSelect, + msWordBreak?: Property$WordBreak, + msWrapFlow?: Property$MsWrapFlow, + msWrapMargin?: Property$MsWrapMargin<TLength>, + msWrapThrough?: Property$MsWrapThrough, + msWritingMode?: Property$WritingMode, + WebkitAlignContent?: Property$AlignContent, + WebkitAlignItems?: Property$AlignItems, + WebkitAlignSelf?: Property$AlignSelf, + WebkitAnimationDelay?: Property$AnimationDelay<TTime>, + WebkitAnimationDirection?: Property$AnimationDirection, + WebkitAnimationDuration?: Property$AnimationDuration<TTime>, + WebkitAnimationFillMode?: Property$AnimationFillMode, + WebkitAnimationIterationCount?: Property$AnimationIterationCount, + WebkitAnimationName?: Property$AnimationName, + WebkitAnimationPlayState?: Property$AnimationPlayState, + WebkitAnimationTimingFunction?: Property$AnimationTimingFunction, + WebkitAppearance?: Property$WebkitAppearance, + WebkitBackdropFilter?: Property$BackdropFilter, + WebkitBackfaceVisibility?: Property$BackfaceVisibility, + WebkitBackgroundClip?: Property$BackgroundClip, + WebkitBackgroundOrigin?: Property$BackgroundOrigin, + WebkitBackgroundSize?: Property$BackgroundSize<TLength>, + WebkitBorderBeforeColor?: Property$WebkitBorderBeforeColor, + WebkitBorderBeforeStyle?: Property$WebkitBorderBeforeStyle, + WebkitBorderBeforeWidth?: Property$WebkitBorderBeforeWidth<TLength>, + WebkitBorderBottomLeftRadius?: Property$BorderBottomLeftRadius<TLength>, + WebkitBorderBottomRightRadius?: Property$BorderBottomRightRadius<TLength>, + WebkitBorderImageSlice?: Property$BorderImageSlice, + WebkitBorderTopLeftRadius?: Property$BorderTopLeftRadius<TLength>, + WebkitBorderTopRightRadius?: Property$BorderTopRightRadius<TLength>, + WebkitBoxDecorationBreak?: Property$BoxDecorationBreak, + WebkitBoxReflect?: Property$WebkitBoxReflect<TLength>, + WebkitBoxShadow?: Property$BoxShadow, + WebkitBoxSizing?: Property$BoxSizing, + WebkitClipPath?: Property$ClipPath, + WebkitColumnCount?: Property$ColumnCount, + WebkitColumnFill?: Property$ColumnFill, + WebkitColumnRuleColor?: Property$ColumnRuleColor, + WebkitColumnRuleStyle?: Property$ColumnRuleStyle, + WebkitColumnRuleWidth?: Property$ColumnRuleWidth<TLength>, + WebkitColumnSpan?: Property$ColumnSpan, + WebkitColumnWidth?: Property$ColumnWidth<TLength>, + WebkitFilter?: Property$Filter, + WebkitFlexBasis?: Property$FlexBasis<TLength>, + WebkitFlexDirection?: Property$FlexDirection, + WebkitFlexGrow?: Property$FlexGrow, + WebkitFlexShrink?: Property$FlexShrink, + WebkitFlexWrap?: Property$FlexWrap, + WebkitFontFeatureSettings?: Property$FontFeatureSettings, + WebkitFontKerning?: Property$FontKerning, + WebkitFontSmoothing?: Property$FontSmooth<TLength>, + WebkitFontVariantLigatures?: Property$FontVariantLigatures, + WebkitHyphenateCharacter?: Property$HyphenateCharacter, + WebkitHyphens?: Property$Hyphens, + WebkitInitialLetter?: Property$InitialLetter, + WebkitJustifyContent?: Property$JustifyContent, + WebkitLineBreak?: Property$LineBreak, + WebkitLineClamp?: Property$WebkitLineClamp, + WebkitMarginEnd?: Property$MarginInlineEnd<TLength>, + WebkitMarginStart?: Property$MarginInlineStart<TLength>, + WebkitMaskAttachment?: Property$WebkitMaskAttachment, + WebkitMaskBoxImageOutset?: Property$MaskBorderOutset<TLength>, + WebkitMaskBoxImageRepeat?: Property$MaskBorderRepeat, + WebkitMaskBoxImageSlice?: Property$MaskBorderSlice, + WebkitMaskBoxImageSource?: Property$MaskBorderSource, + WebkitMaskBoxImageWidth?: Property$MaskBorderWidth<TLength>, + WebkitMaskClip?: Property$WebkitMaskClip, + WebkitMaskComposite?: Property$WebkitMaskComposite, + WebkitMaskImage?: Property$WebkitMaskImage, + WebkitMaskOrigin?: Property$WebkitMaskOrigin, + WebkitMaskPosition?: Property$WebkitMaskPosition<TLength>, + WebkitMaskPositionX?: Property$WebkitMaskPositionX<TLength>, + WebkitMaskPositionY?: Property$WebkitMaskPositionY<TLength>, + WebkitMaskRepeat?: Property$WebkitMaskRepeat, + WebkitMaskRepeatX?: Property$WebkitMaskRepeatX, + WebkitMaskRepeatY?: Property$WebkitMaskRepeatY, + WebkitMaskSize?: Property$WebkitMaskSize<TLength>, + WebkitMaxInlineSize?: Property$MaxInlineSize<TLength>, + WebkitOrder?: Property$Order, + WebkitOverflowScrolling?: Property$WebkitOverflowScrolling, + WebkitPaddingEnd?: Property$PaddingInlineEnd<TLength>, + WebkitPaddingStart?: Property$PaddingInlineStart<TLength>, + WebkitPerspective?: Property$Perspective<TLength>, + WebkitPerspectiveOrigin?: Property$PerspectiveOrigin<TLength>, + WebkitPrintColorAdjust?: Property$PrintColorAdjust, + WebkitRubyPosition?: Property$RubyPosition, + WebkitScrollSnapType?: Property$ScrollSnapType, + WebkitShapeMargin?: Property$ShapeMargin<TLength>, + WebkitTapHighlightColor?: Property$WebkitTapHighlightColor, + WebkitTextCombine?: Property$TextCombineUpright, + WebkitTextDecorationColor?: Property$TextDecorationColor, + WebkitTextDecorationLine?: Property$TextDecorationLine, + WebkitTextDecorationSkip?: Property$TextDecorationSkip, + WebkitTextDecorationStyle?: Property$TextDecorationStyle, + WebkitTextEmphasisColor?: Property$TextEmphasisColor, + WebkitTextEmphasisPosition?: Property$TextEmphasisPosition, + WebkitTextEmphasisStyle?: Property$TextEmphasisStyle, + WebkitTextFillColor?: Property$WebkitTextFillColor, + WebkitTextOrientation?: Property$TextOrientation, + WebkitTextSizeAdjust?: Property$TextSizeAdjust, + WebkitTextStrokeColor?: Property$WebkitTextStrokeColor, + WebkitTextStrokeWidth?: Property$WebkitTextStrokeWidth<TLength>, + WebkitTextUnderlinePosition?: Property$TextUnderlinePosition, + WebkitTouchCallout?: Property$WebkitTouchCallout, + WebkitTransform?: Property$Transform, + WebkitTransformOrigin?: Property$TransformOrigin<TLength>, + WebkitTransformStyle?: Property$TransformStyle, + WebkitTransitionDelay?: Property$TransitionDelay<TTime>, + WebkitTransitionDuration?: Property$TransitionDuration<TTime>, + WebkitTransitionProperty?: Property$TransitionProperty, + WebkitTransitionTimingFunction?: Property$TransitionTimingFunction, + WebkitUserModify?: Property$WebkitUserModify, + WebkitUserSelect?: Property$UserSelect, + WebkitWritingMode?: Property$WritingMode, +|}; + +export type VendorShorthandProperties<TLength = string | 0, TTime = string> = {| + MozAnimation?: Property$Animation<TTime>, + MozBorderImage?: Property$BorderImage, + MozColumnRule?: Property$ColumnRule<TLength>, + MozColumns?: Property$Columns<TLength>, + MozOutlineRadius?: Property$MozOutlineRadius<TLength>, + msContentZoomLimit?: Property$MsContentZoomLimit, + msContentZoomSnap?: Property$MsContentZoomSnap, + msFlex?: Property$Flex<TLength>, + msScrollLimit?: Property$MsScrollLimit, + msScrollSnapX?: Property$MsScrollSnapX, + msScrollSnapY?: Property$MsScrollSnapY, + msTransition?: Property$Transition<TTime>, + WebkitAnimation?: Property$Animation<TTime>, + WebkitBorderBefore?: Property$WebkitBorderBefore<TLength>, + WebkitBorderImage?: Property$BorderImage, + WebkitBorderRadius?: Property$BorderRadius<TLength>, + WebkitColumnRule?: Property$ColumnRule<TLength>, + WebkitColumns?: Property$Columns<TLength>, + WebkitFlex?: Property$Flex<TLength>, + WebkitFlexFlow?: Property$FlexFlow, + WebkitMask?: Property$WebkitMask<TLength>, + WebkitMaskBoxImage?: Property$MaskBorder, + WebkitTextEmphasis?: Property$TextEmphasis, + WebkitTextStroke?: Property$WebkitTextStroke<TLength>, + WebkitTransition?: Property$Transition<TTime>, +|}; + +export type VendorProperties<TLength = string | 0, TTime = string> = {| ...VendorLonghandProperties<TLength, TTime>, ...VendorShorthandProperties<TLength, TTime> |}; + +export type ObsoleteProperties<TLength = string | 0, TTime = string> = {| + azimuth?: Property$Azimuth, + boxAlign?: Property$BoxAlign, + boxDirection?: Property$BoxDirection, + boxFlex?: Property$BoxFlex, + boxFlexGroup?: Property$BoxFlexGroup, + boxLines?: Property$BoxLines, + boxOrdinalGroup?: Property$BoxOrdinalGroup, + boxOrient?: Property$BoxOrient, + boxPack?: Property$BoxPack, + clip?: Property$Clip, + gridColumnGap?: Property$GridColumnGap<TLength>, + gridGap?: Property$GridGap<TLength>, + gridRowGap?: Property$GridRowGap<TLength>, + imeMode?: Property$ImeMode, + offsetBlock?: Property$InsetBlock<TLength>, + offsetBlockEnd?: Property$InsetBlockEnd<TLength>, + offsetBlockStart?: Property$InsetBlockStart<TLength>, + offsetInline?: Property$InsetInline<TLength>, + offsetInlineEnd?: Property$InsetInlineEnd<TLength>, + offsetInlineStart?: Property$InsetInlineStart<TLength>, + scrollSnapCoordinate?: Property$ScrollSnapCoordinate<TLength>, + scrollSnapDestination?: Property$ScrollSnapDestination<TLength>, + scrollSnapPointsX?: Property$ScrollSnapPointsX, + scrollSnapPointsY?: Property$ScrollSnapPointsY, + scrollSnapTypeX?: Property$ScrollSnapTypeX, + scrollSnapTypeY?: Property$ScrollSnapTypeY, + KhtmlBoxAlign?: Property$BoxAlign, + KhtmlBoxDirection?: Property$BoxDirection, + KhtmlBoxFlex?: Property$BoxFlex, + KhtmlBoxFlexGroup?: Property$BoxFlexGroup, + KhtmlBoxLines?: Property$BoxLines, + KhtmlBoxOrdinalGroup?: Property$BoxOrdinalGroup, + KhtmlBoxOrient?: Property$BoxOrient, + KhtmlBoxPack?: Property$BoxPack, + KhtmlLineBreak?: Property$LineBreak, + KhtmlOpacity?: Property$Opacity, + KhtmlUserSelect?: Property$UserSelect, + MozBackfaceVisibility?: Property$BackfaceVisibility, + MozBackgroundClip?: Property$BackgroundClip, + MozBackgroundInlinePolicy?: Property$BoxDecorationBreak, + MozBackgroundOrigin?: Property$BackgroundOrigin, + MozBackgroundSize?: Property$BackgroundSize<TLength>, + MozBorderRadius?: Property$BorderRadius<TLength>, + MozBorderRadiusBottomleft?: Property$BorderBottomLeftRadius<TLength>, + MozBorderRadiusBottomright?: Property$BorderBottomRightRadius<TLength>, + MozBorderRadiusTopleft?: Property$BorderTopLeftRadius<TLength>, + MozBorderRadiusTopright?: Property$BorderTopRightRadius<TLength>, + MozBoxAlign?: Property$BoxAlign, + MozBoxDirection?: Property$BoxDirection, + MozBoxFlex?: Property$BoxFlex, + MozBoxOrdinalGroup?: Property$BoxOrdinalGroup, + MozBoxOrient?: Property$BoxOrient, + MozBoxPack?: Property$BoxPack, + MozBoxShadow?: Property$BoxShadow, + MozFloatEdge?: Property$MozFloatEdge, + MozForceBrokenImageIcon?: Property$MozForceBrokenImageIcon, + MozOpacity?: Property$Opacity, + MozOutline?: Property$Outline<TLength>, + MozOutlineColor?: Property$OutlineColor, + MozOutlineStyle?: Property$OutlineStyle, + MozOutlineWidth?: Property$OutlineWidth<TLength>, + MozPerspective?: Property$Perspective<TLength>, + MozPerspectiveOrigin?: Property$PerspectiveOrigin<TLength>, + MozTextAlignLast?: Property$TextAlignLast, + MozTextDecorationColor?: Property$TextDecorationColor, + MozTextDecorationLine?: Property$TextDecorationLine, + MozTextDecorationStyle?: Property$TextDecorationStyle, + MozTransform?: Property$Transform, + MozTransformOrigin?: Property$TransformOrigin<TLength>, + MozTransformStyle?: Property$TransformStyle, + MozTransition?: Property$Transition<TTime>, + MozTransitionDelay?: Property$TransitionDelay<TTime>, + MozTransitionDuration?: Property$TransitionDuration<TTime>, + MozTransitionProperty?: Property$TransitionProperty, + MozTransitionTimingFunction?: Property$TransitionTimingFunction, + MozUserInput?: Property$MozUserInput, + msImeMode?: Property$ImeMode, + OAnimation?: Property$Animation<TTime>, + OAnimationDelay?: Property$AnimationDelay<TTime>, + OAnimationDirection?: Property$AnimationDirection, + OAnimationDuration?: Property$AnimationDuration<TTime>, + OAnimationFillMode?: Property$AnimationFillMode, + OAnimationIterationCount?: Property$AnimationIterationCount, + OAnimationName?: Property$AnimationName, + OAnimationPlayState?: Property$AnimationPlayState, + OAnimationTimingFunction?: Property$AnimationTimingFunction, + OBackgroundSize?: Property$BackgroundSize<TLength>, + OBorderImage?: Property$BorderImage, + OObjectFit?: Property$ObjectFit, + OObjectPosition?: Property$ObjectPosition<TLength>, + OTabSize?: Property$TabSize<TLength>, + OTextOverflow?: Property$TextOverflow, + OTransform?: Property$Transform, + OTransformOrigin?: Property$TransformOrigin<TLength>, + OTransition?: Property$Transition<TTime>, + OTransitionDelay?: Property$TransitionDelay<TTime>, + OTransitionDuration?: Property$TransitionDuration<TTime>, + OTransitionProperty?: Property$TransitionProperty, + OTransitionTimingFunction?: Property$TransitionTimingFunction, + WebkitBoxAlign?: Property$BoxAlign, + WebkitBoxDirection?: Property$BoxDirection, + WebkitBoxFlex?: Property$BoxFlex, + WebkitBoxFlexGroup?: Property$BoxFlexGroup, + WebkitBoxLines?: Property$BoxLines, + WebkitBoxOrdinalGroup?: Property$BoxOrdinalGroup, + WebkitBoxOrient?: Property$BoxOrient, + WebkitBoxPack?: Property$BoxPack, +|}; + +export type SvgProperties<TLength = string | 0, TTime = string> = {| + alignmentBaseline?: Property$AlignmentBaseline, + baselineShift?: Property$BaselineShift<TLength>, + clip?: Property$Clip, + clipPath?: Property$ClipPath, + clipRule?: Property$ClipRule, + color?: Property$Color, + colorInterpolation?: Property$ColorInterpolation, + colorRendering?: Property$ColorRendering, + cursor?: Property$Cursor, + direction?: Property$Direction, + display?: Property$Display, + dominantBaseline?: Property$DominantBaseline, + fill?: Property$Fill, + fillOpacity?: Property$FillOpacity, + fillRule?: Property$FillRule, + filter?: Property$Filter, + floodColor?: Property$FloodColor, + floodOpacity?: Property$FloodOpacity, + font?: Property$Font, + fontFamily?: Property$FontFamily, + fontSize?: Property$FontSize<TLength>, + fontSizeAdjust?: Property$FontSizeAdjust, + fontStretch?: Property$FontStretch, + fontStyle?: Property$FontStyle, + fontVariant?: Property$FontVariant, + fontWeight?: Property$FontWeight, + glyphOrientationVertical?: Property$GlyphOrientationVertical, + imageRendering?: Property$ImageRendering, + letterSpacing?: Property$LetterSpacing<TLength>, + lightingColor?: Property$LightingColor, + lineHeight?: Property$LineHeight<TLength>, + marker?: Property$Marker, + markerEnd?: Property$MarkerEnd, + markerMid?: Property$MarkerMid, + markerStart?: Property$MarkerStart, + mask?: Property$Mask<TLength>, + opacity?: Property$Opacity, + overflow?: Property$Overflow, + paintOrder?: Property$PaintOrder, + pointerEvents?: Property$PointerEvents, + shapeRendering?: Property$ShapeRendering, + stopColor?: Property$StopColor, + stopOpacity?: Property$StopOpacity, + stroke?: Property$Stroke, + strokeDasharray?: Property$StrokeDasharray<TLength>, + strokeDashoffset?: Property$StrokeDashoffset<TLength>, + strokeLinecap?: Property$StrokeLinecap, + strokeLinejoin?: Property$StrokeLinejoin, + strokeMiterlimit?: Property$StrokeMiterlimit, + strokeOpacity?: Property$StrokeOpacity, + strokeWidth?: Property$StrokeWidth<TLength>, + textAnchor?: Property$TextAnchor, + textDecoration?: Property$TextDecoration<TLength>, + textRendering?: Property$TextRendering, + unicodeBidi?: Property$UnicodeBidi, + vectorEffect?: Property$VectorEffect, + visibility?: Property$Visibility, + whiteSpace?: Property$WhiteSpace, + wordSpacing?: Property$WordSpacing<TLength>, + writingMode?: Property$WritingMode, +|}; + +export type Properties<TLength = string | 0, TTime = string> = {| + ...StandardProperties<TLength, TTime>, + ...VendorProperties<TLength, TTime>, + ...ObsoleteProperties<TLength, TTime>, + ...SvgProperties<TLength, TTime>, +|}; + +export type StandardLonghandPropertiesHyphen<TLength = string | 0, TTime = string> = {| + "accent-color"?: Property$AccentColor, + "align-content"?: Property$AlignContent, + "align-items"?: Property$AlignItems, + "align-self"?: Property$AlignSelf, + "align-tracks"?: Property$AlignTracks, + "animation-composition"?: Property$AnimationComposition, + "animation-delay"?: Property$AnimationDelay<TTime>, + "animation-direction"?: Property$AnimationDirection, + "animation-duration"?: Property$AnimationDuration<TTime>, + "animation-fill-mode"?: Property$AnimationFillMode, + "animation-iteration-count"?: Property$AnimationIterationCount, + "animation-name"?: Property$AnimationName, + "animation-play-state"?: Property$AnimationPlayState, + "animation-range-end"?: Property$AnimationRangeEnd<TLength>, + "animation-range-start"?: Property$AnimationRangeStart<TLength>, + "animation-timeline"?: Property$AnimationTimeline, + "animation-timing-function"?: Property$AnimationTimingFunction, + appearance?: Property$Appearance, + "aspect-ratio"?: Property$AspectRatio, + "backdrop-filter"?: Property$BackdropFilter, + "backface-visibility"?: Property$BackfaceVisibility, + "background-attachment"?: Property$BackgroundAttachment, + "background-blend-mode"?: Property$BackgroundBlendMode, + "background-clip"?: Property$BackgroundClip, + "background-color"?: Property$BackgroundColor, + "background-image"?: Property$BackgroundImage, + "background-origin"?: Property$BackgroundOrigin, + "background-position-x"?: Property$BackgroundPositionX<TLength>, + "background-position-y"?: Property$BackgroundPositionY<TLength>, + "background-repeat"?: Property$BackgroundRepeat, + "background-size"?: Property$BackgroundSize<TLength>, + "block-overflow"?: Property$BlockOverflow, + "block-size"?: Property$BlockSize<TLength>, + "border-block-color"?: Property$BorderBlockColor, + "border-block-end-color"?: Property$BorderBlockEndColor, + "border-block-end-style"?: Property$BorderBlockEndStyle, + "border-block-end-width"?: Property$BorderBlockEndWidth<TLength>, + "border-block-start-color"?: Property$BorderBlockStartColor, + "border-block-start-style"?: Property$BorderBlockStartStyle, + "border-block-start-width"?: Property$BorderBlockStartWidth<TLength>, + "border-block-style"?: Property$BorderBlockStyle, + "border-block-width"?: Property$BorderBlockWidth<TLength>, + "border-bottom-color"?: Property$BorderBottomColor, + "border-bottom-left-radius"?: Property$BorderBottomLeftRadius<TLength>, + "border-bottom-right-radius"?: Property$BorderBottomRightRadius<TLength>, + "border-bottom-style"?: Property$BorderBottomStyle, + "border-bottom-width"?: Property$BorderBottomWidth<TLength>, + "border-collapse"?: Property$BorderCollapse, + "border-end-end-radius"?: Property$BorderEndEndRadius<TLength>, + "border-end-start-radius"?: Property$BorderEndStartRadius<TLength>, + "border-image-outset"?: Property$BorderImageOutset<TLength>, + "border-image-repeat"?: Property$BorderImageRepeat, + "border-image-slice"?: Property$BorderImageSlice, + "border-image-source"?: Property$BorderImageSource, + "border-image-width"?: Property$BorderImageWidth<TLength>, + "border-inline-color"?: Property$BorderInlineColor, + "border-inline-end-color"?: Property$BorderInlineEndColor, + "border-inline-end-style"?: Property$BorderInlineEndStyle, + "border-inline-end-width"?: Property$BorderInlineEndWidth<TLength>, + "border-inline-start-color"?: Property$BorderInlineStartColor, + "border-inline-start-style"?: Property$BorderInlineStartStyle, + "border-inline-start-width"?: Property$BorderInlineStartWidth<TLength>, + "border-inline-style"?: Property$BorderInlineStyle, + "border-inline-width"?: Property$BorderInlineWidth<TLength>, + "border-left-color"?: Property$BorderLeftColor, + "border-left-style"?: Property$BorderLeftStyle, + "border-left-width"?: Property$BorderLeftWidth<TLength>, + "border-right-color"?: Property$BorderRightColor, + "border-right-style"?: Property$BorderRightStyle, + "border-right-width"?: Property$BorderRightWidth<TLength>, + "border-spacing"?: Property$BorderSpacing<TLength>, + "border-start-end-radius"?: Property$BorderStartEndRadius<TLength>, + "border-start-start-radius"?: Property$BorderStartStartRadius<TLength>, + "border-top-color"?: Property$BorderTopColor, + "border-top-left-radius"?: Property$BorderTopLeftRadius<TLength>, + "border-top-right-radius"?: Property$BorderTopRightRadius<TLength>, + "border-top-style"?: Property$BorderTopStyle, + "border-top-width"?: Property$BorderTopWidth<TLength>, + bottom?: Property$Bottom<TLength>, + "box-decoration-break"?: Property$BoxDecorationBreak, + "box-shadow"?: Property$BoxShadow, + "box-sizing"?: Property$BoxSizing, + "break-after"?: Property$BreakAfter, + "break-before"?: Property$BreakBefore, + "break-inside"?: Property$BreakInside, + "caption-side"?: Property$CaptionSide, + "caret-color"?: Property$CaretColor, + "caret-shape"?: Property$CaretShape, + clear?: Property$Clear, + "clip-path"?: Property$ClipPath, + color?: Property$Color, + "color-adjust"?: Property$PrintColorAdjust, + "color-scheme"?: Property$ColorScheme, + "column-count"?: Property$ColumnCount, + "column-fill"?: Property$ColumnFill, + "column-gap"?: Property$ColumnGap<TLength>, + "column-rule-color"?: Property$ColumnRuleColor, + "column-rule-style"?: Property$ColumnRuleStyle, + "column-rule-width"?: Property$ColumnRuleWidth<TLength>, + "column-span"?: Property$ColumnSpan, + "column-width"?: Property$ColumnWidth<TLength>, + contain?: Property$Contain, + "contain-intrinsic-block-size"?: Property$ContainIntrinsicBlockSize<TLength>, + "contain-intrinsic-height"?: Property$ContainIntrinsicHeight<TLength>, + "contain-intrinsic-inline-size"?: Property$ContainIntrinsicInlineSize<TLength>, + "contain-intrinsic-width"?: Property$ContainIntrinsicWidth<TLength>, + "container-name"?: Property$ContainerName, + "container-type"?: Property$ContainerType, + content?: Property$Content, + "content-visibility"?: Property$ContentVisibility, + "counter-increment"?: Property$CounterIncrement, + "counter-reset"?: Property$CounterReset, + "counter-set"?: Property$CounterSet, + cursor?: Property$Cursor, + direction?: Property$Direction, + display?: Property$Display, + "empty-cells"?: Property$EmptyCells, + filter?: Property$Filter, + "flex-basis"?: Property$FlexBasis<TLength>, + "flex-direction"?: Property$FlexDirection, + "flex-grow"?: Property$FlexGrow, + "flex-shrink"?: Property$FlexShrink, + "flex-wrap"?: Property$FlexWrap, + float?: Property$Float, + "font-family"?: Property$FontFamily, + "font-feature-settings"?: Property$FontFeatureSettings, + "font-kerning"?: Property$FontKerning, + "font-language-override"?: Property$FontLanguageOverride, + "font-optical-sizing"?: Property$FontOpticalSizing, + "font-palette"?: Property$FontPalette, + "font-size"?: Property$FontSize<TLength>, + "font-size-adjust"?: Property$FontSizeAdjust, + "font-smooth"?: Property$FontSmooth<TLength>, + "font-stretch"?: Property$FontStretch, + "font-style"?: Property$FontStyle, + "font-synthesis"?: Property$FontSynthesis, + "font-synthesis-position"?: Property$FontSynthesisPosition, + "font-synthesis-small-caps"?: Property$FontSynthesisSmallCaps, + "font-synthesis-style"?: Property$FontSynthesisStyle, + "font-synthesis-weight"?: Property$FontSynthesisWeight, + "font-variant"?: Property$FontVariant, + "font-variant-alternates"?: Property$FontVariantAlternates, + "font-variant-caps"?: Property$FontVariantCaps, + "font-variant-east-asian"?: Property$FontVariantEastAsian, + "font-variant-emoji"?: Property$FontVariantEmoji, + "font-variant-ligatures"?: Property$FontVariantLigatures, + "font-variant-numeric"?: Property$FontVariantNumeric, + "font-variant-position"?: Property$FontVariantPosition, + "font-variation-settings"?: Property$FontVariationSettings, + "font-weight"?: Property$FontWeight, + "forced-color-adjust"?: Property$ForcedColorAdjust, + "grid-auto-columns"?: Property$GridAutoColumns<TLength>, + "grid-auto-flow"?: Property$GridAutoFlow, + "grid-auto-rows"?: Property$GridAutoRows<TLength>, + "grid-column-end"?: Property$GridColumnEnd, + "grid-column-start"?: Property$GridColumnStart, + "grid-row-end"?: Property$GridRowEnd, + "grid-row-start"?: Property$GridRowStart, + "grid-template-areas"?: Property$GridTemplateAreas, + "grid-template-columns"?: Property$GridTemplateColumns<TLength>, + "grid-template-rows"?: Property$GridTemplateRows<TLength>, + "hanging-punctuation"?: Property$HangingPunctuation, + height?: Property$Height<TLength>, + "hyphenate-character"?: Property$HyphenateCharacter, + "hyphenate-limit-chars"?: Property$HyphenateLimitChars, + hyphens?: Property$Hyphens, + "image-orientation"?: Property$ImageOrientation, + "image-rendering"?: Property$ImageRendering, + "image-resolution"?: Property$ImageResolution, + "initial-letter"?: Property$InitialLetter, + "inline-size"?: Property$InlineSize<TLength>, + "input-security"?: Property$InputSecurity, + "inset-block-end"?: Property$InsetBlockEnd<TLength>, + "inset-block-start"?: Property$InsetBlockStart<TLength>, + "inset-inline-end"?: Property$InsetInlineEnd<TLength>, + "inset-inline-start"?: Property$InsetInlineStart<TLength>, + isolation?: Property$Isolation, + "justify-content"?: Property$JustifyContent, + "justify-items"?: Property$JustifyItems, + "justify-self"?: Property$JustifySelf, + "justify-tracks"?: Property$JustifyTracks, + left?: Property$Left<TLength>, + "letter-spacing"?: Property$LetterSpacing<TLength>, + "line-break"?: Property$LineBreak, + "line-height"?: Property$LineHeight<TLength>, + "line-height-step"?: Property$LineHeightStep<TLength>, + "list-style-image"?: Property$ListStyleImage, + "list-style-position"?: Property$ListStylePosition, + "list-style-type"?: Property$ListStyleType, + "margin-block-end"?: Property$MarginBlockEnd<TLength>, + "margin-block-start"?: Property$MarginBlockStart<TLength>, + "margin-bottom"?: Property$MarginBottom<TLength>, + "margin-inline-end"?: Property$MarginInlineEnd<TLength>, + "margin-inline-start"?: Property$MarginInlineStart<TLength>, + "margin-left"?: Property$MarginLeft<TLength>, + "margin-right"?: Property$MarginRight<TLength>, + "margin-top"?: Property$MarginTop<TLength>, + "margin-trim"?: Property$MarginTrim, + "mask-border-mode"?: Property$MaskBorderMode, + "mask-border-outset"?: Property$MaskBorderOutset<TLength>, + "mask-border-repeat"?: Property$MaskBorderRepeat, + "mask-border-slice"?: Property$MaskBorderSlice, + "mask-border-source"?: Property$MaskBorderSource, + "mask-border-width"?: Property$MaskBorderWidth<TLength>, + "mask-clip"?: Property$MaskClip, + "mask-composite"?: Property$MaskComposite, + "mask-image"?: Property$MaskImage, + "mask-mode"?: Property$MaskMode, + "mask-origin"?: Property$MaskOrigin, + "mask-position"?: Property$MaskPosition<TLength>, + "mask-repeat"?: Property$MaskRepeat, + "mask-size"?: Property$MaskSize<TLength>, + "mask-type"?: Property$MaskType, + "masonry-auto-flow"?: Property$MasonryAutoFlow, + "math-depth"?: Property$MathDepth, + "math-shift"?: Property$MathShift, + "math-style"?: Property$MathStyle, + "max-block-size"?: Property$MaxBlockSize<TLength>, + "max-height"?: Property$MaxHeight<TLength>, + "max-inline-size"?: Property$MaxInlineSize<TLength>, + "max-lines"?: Property$MaxLines, + "max-width"?: Property$MaxWidth<TLength>, + "min-block-size"?: Property$MinBlockSize<TLength>, + "min-height"?: Property$MinHeight<TLength>, + "min-inline-size"?: Property$MinInlineSize<TLength>, + "min-width"?: Property$MinWidth<TLength>, + "mix-blend-mode"?: Property$MixBlendMode, + "motion-distance"?: Property$OffsetDistance<TLength>, + "motion-path"?: Property$OffsetPath, + "motion-rotation"?: Property$OffsetRotate, + "object-fit"?: Property$ObjectFit, + "object-position"?: Property$ObjectPosition<TLength>, + "offset-anchor"?: Property$OffsetAnchor<TLength>, + "offset-distance"?: Property$OffsetDistance<TLength>, + "offset-path"?: Property$OffsetPath, + "offset-position"?: Property$OffsetPosition<TLength>, + "offset-rotate"?: Property$OffsetRotate, + "offset-rotation"?: Property$OffsetRotate, + opacity?: Property$Opacity, + order?: Property$Order, + orphans?: Property$Orphans, + "outline-color"?: Property$OutlineColor, + "outline-offset"?: Property$OutlineOffset<TLength>, + "outline-style"?: Property$OutlineStyle, + "outline-width"?: Property$OutlineWidth<TLength>, + "overflow-anchor"?: Property$OverflowAnchor, + "overflow-block"?: Property$OverflowBlock, + "overflow-clip-box"?: Property$OverflowClipBox, + "overflow-clip-margin"?: Property$OverflowClipMargin<TLength>, + "overflow-inline"?: Property$OverflowInline, + "overflow-wrap"?: Property$OverflowWrap, + "overflow-x"?: Property$OverflowX, + "overflow-y"?: Property$OverflowY, + overlay?: Property$Overlay, + "overscroll-behavior-block"?: Property$OverscrollBehaviorBlock, + "overscroll-behavior-inline"?: Property$OverscrollBehaviorInline, + "overscroll-behavior-x"?: Property$OverscrollBehaviorX, + "overscroll-behavior-y"?: Property$OverscrollBehaviorY, + "padding-block-end"?: Property$PaddingBlockEnd<TLength>, + "padding-block-start"?: Property$PaddingBlockStart<TLength>, + "padding-bottom"?: Property$PaddingBottom<TLength>, + "padding-inline-end"?: Property$PaddingInlineEnd<TLength>, + "padding-inline-start"?: Property$PaddingInlineStart<TLength>, + "padding-left"?: Property$PaddingLeft<TLength>, + "padding-right"?: Property$PaddingRight<TLength>, + "padding-top"?: Property$PaddingTop<TLength>, + page?: Property$Page, + "page-break-after"?: Property$PageBreakAfter, + "page-break-before"?: Property$PageBreakBefore, + "page-break-inside"?: Property$PageBreakInside, + "paint-order"?: Property$PaintOrder, + perspective?: Property$Perspective<TLength>, + "perspective-origin"?: Property$PerspectiveOrigin<TLength>, + "pointer-events"?: Property$PointerEvents, + position?: Property$Position, + "print-color-adjust"?: Property$PrintColorAdjust, + quotes?: Property$Quotes, + resize?: Property$Resize, + right?: Property$Right<TLength>, + rotate?: Property$Rotate, + "row-gap"?: Property$RowGap<TLength>, + "ruby-align"?: Property$RubyAlign, + "ruby-merge"?: Property$RubyMerge, + "ruby-position"?: Property$RubyPosition, + scale?: Property$Scale, + "scroll-behavior"?: Property$ScrollBehavior, + "scroll-margin-block-end"?: Property$ScrollMarginBlockEnd<TLength>, + "scroll-margin-block-start"?: Property$ScrollMarginBlockStart<TLength>, + "scroll-margin-bottom"?: Property$ScrollMarginBottom<TLength>, + "scroll-margin-inline-end"?: Property$ScrollMarginInlineEnd<TLength>, + "scroll-margin-inline-start"?: Property$ScrollMarginInlineStart<TLength>, + "scroll-margin-left"?: Property$ScrollMarginLeft<TLength>, + "scroll-margin-right"?: Property$ScrollMarginRight<TLength>, + "scroll-margin-top"?: Property$ScrollMarginTop<TLength>, + "scroll-padding-block-end"?: Property$ScrollPaddingBlockEnd<TLength>, + "scroll-padding-block-start"?: Property$ScrollPaddingBlockStart<TLength>, + "scroll-padding-bottom"?: Property$ScrollPaddingBottom<TLength>, + "scroll-padding-inline-end"?: Property$ScrollPaddingInlineEnd<TLength>, + "scroll-padding-inline-start"?: Property$ScrollPaddingInlineStart<TLength>, + "scroll-padding-left"?: Property$ScrollPaddingLeft<TLength>, + "scroll-padding-right"?: Property$ScrollPaddingRight<TLength>, + "scroll-padding-top"?: Property$ScrollPaddingTop<TLength>, + "scroll-snap-align"?: Property$ScrollSnapAlign, + "scroll-snap-margin-bottom"?: Property$ScrollMarginBottom<TLength>, + "scroll-snap-margin-left"?: Property$ScrollMarginLeft<TLength>, + "scroll-snap-margin-right"?: Property$ScrollMarginRight<TLength>, + "scroll-snap-margin-top"?: Property$ScrollMarginTop<TLength>, + "scroll-snap-stop"?: Property$ScrollSnapStop, + "scroll-snap-type"?: Property$ScrollSnapType, + "scroll-timeline-axis"?: Property$ScrollTimelineAxis, + "scroll-timeline-name"?: Property$ScrollTimelineName, + "scrollbar-color"?: Property$ScrollbarColor, + "scrollbar-gutter"?: Property$ScrollbarGutter, + "scrollbar-width"?: Property$ScrollbarWidth, + "shape-image-threshold"?: Property$ShapeImageThreshold, + "shape-margin"?: Property$ShapeMargin<TLength>, + "shape-outside"?: Property$ShapeOutside, + "tab-size"?: Property$TabSize<TLength>, + "table-layout"?: Property$TableLayout, + "text-align"?: Property$TextAlign, + "text-align-last"?: Property$TextAlignLast, + "text-combine-upright"?: Property$TextCombineUpright, + "text-decoration-color"?: Property$TextDecorationColor, + "text-decoration-line"?: Property$TextDecorationLine, + "text-decoration-skip"?: Property$TextDecorationSkip, + "text-decoration-skip-ink"?: Property$TextDecorationSkipInk, + "text-decoration-style"?: Property$TextDecorationStyle, + "text-decoration-thickness"?: Property$TextDecorationThickness<TLength>, + "text-emphasis-color"?: Property$TextEmphasisColor, + "text-emphasis-position"?: Property$TextEmphasisPosition, + "text-emphasis-style"?: Property$TextEmphasisStyle, + "text-indent"?: Property$TextIndent<TLength>, + "text-justify"?: Property$TextJustify, + "text-orientation"?: Property$TextOrientation, + "text-overflow"?: Property$TextOverflow, + "text-rendering"?: Property$TextRendering, + "text-shadow"?: Property$TextShadow, + "text-size-adjust"?: Property$TextSizeAdjust, + "text-transform"?: Property$TextTransform, + "text-underline-offset"?: Property$TextUnderlineOffset<TLength>, + "text-underline-position"?: Property$TextUnderlinePosition, + "text-wrap"?: Property$TextWrap, + "timeline-scope"?: Property$TimelineScope, + top?: Property$Top<TLength>, + "touch-action"?: Property$TouchAction, + transform?: Property$Transform, + "transform-box"?: Property$TransformBox, + "transform-origin"?: Property$TransformOrigin<TLength>, + "transform-style"?: Property$TransformStyle, + "transition-behavior"?: Property$TransitionBehavior, + "transition-delay"?: Property$TransitionDelay<TTime>, + "transition-duration"?: Property$TransitionDuration<TTime>, + "transition-property"?: Property$TransitionProperty, + "transition-timing-function"?: Property$TransitionTimingFunction, + translate?: Property$Translate<TLength>, + "unicode-bidi"?: Property$UnicodeBidi, + "user-select"?: Property$UserSelect, + "vertical-align"?: Property$VerticalAlign<TLength>, + "view-timeline-axis"?: Property$ViewTimelineAxis, + "view-timeline-inset"?: Property$ViewTimelineInset<TLength>, + "view-timeline-name"?: Property$ViewTimelineName, + "view-transition-name"?: Property$ViewTransitionName, + visibility?: Property$Visibility, + "white-space"?: Property$WhiteSpace, + "white-space-collapse"?: Property$WhiteSpaceCollapse, + "white-space-trim"?: Property$WhiteSpaceTrim, + widows?: Property$Widows, + width?: Property$Width<TLength>, + "will-change"?: Property$WillChange, + "word-break"?: Property$WordBreak, + "word-spacing"?: Property$WordSpacing<TLength>, + "word-wrap"?: Property$WordWrap, + "writing-mode"?: Property$WritingMode, + "z-index"?: Property$ZIndex, + zoom?: Property$Zoom, +|}; + +export type StandardShorthandPropertiesHyphen<TLength = string | 0, TTime = string> = {| + all?: Property$All, + animation?: Property$Animation<TTime>, + "animation-range"?: Property$AnimationRange<TLength>, + background?: Property$Background<TLength>, + "background-position"?: Property$BackgroundPosition<TLength>, + border?: Property$Border<TLength>, + "border-block"?: Property$BorderBlock<TLength>, + "border-block-end"?: Property$BorderBlockEnd<TLength>, + "border-block-start"?: Property$BorderBlockStart<TLength>, + "border-bottom"?: Property$BorderBottom<TLength>, + "border-color"?: Property$BorderColor, + "border-image"?: Property$BorderImage, + "border-inline"?: Property$BorderInline<TLength>, + "border-inline-end"?: Property$BorderInlineEnd<TLength>, + "border-inline-start"?: Property$BorderInlineStart<TLength>, + "border-left"?: Property$BorderLeft<TLength>, + "border-radius"?: Property$BorderRadius<TLength>, + "border-right"?: Property$BorderRight<TLength>, + "border-style"?: Property$BorderStyle, + "border-top"?: Property$BorderTop<TLength>, + "border-width"?: Property$BorderWidth<TLength>, + caret?: Property$Caret, + "column-rule"?: Property$ColumnRule<TLength>, + columns?: Property$Columns<TLength>, + "contain-intrinsic-size"?: Property$ContainIntrinsicSize<TLength>, + container?: Property$Container, + flex?: Property$Flex<TLength>, + "flex-flow"?: Property$FlexFlow, + font?: Property$Font, + gap?: Property$Gap<TLength>, + grid?: Property$Grid, + "grid-area"?: Property$GridArea, + "grid-column"?: Property$GridColumn, + "grid-row"?: Property$GridRow, + "grid-template"?: Property$GridTemplate, + inset?: Property$Inset<TLength>, + "inset-block"?: Property$InsetBlock<TLength>, + "inset-inline"?: Property$InsetInline<TLength>, + "line-clamp"?: Property$LineClamp, + "list-style"?: Property$ListStyle, + margin?: Property$Margin<TLength>, + "margin-block"?: Property$MarginBlock<TLength>, + "margin-inline"?: Property$MarginInline<TLength>, + mask?: Property$Mask<TLength>, + "mask-border"?: Property$MaskBorder, + motion?: Property$Offset<TLength>, + offset?: Property$Offset<TLength>, + outline?: Property$Outline<TLength>, + overflow?: Property$Overflow, + "overscroll-behavior"?: Property$OverscrollBehavior, + padding?: Property$Padding<TLength>, + "padding-block"?: Property$PaddingBlock<TLength>, + "padding-inline"?: Property$PaddingInline<TLength>, + "place-content"?: Property$PlaceContent, + "place-items"?: Property$PlaceItems, + "place-self"?: Property$PlaceSelf, + "scroll-margin"?: Property$ScrollMargin<TLength>, + "scroll-margin-block"?: Property$ScrollMarginBlock<TLength>, + "scroll-margin-inline"?: Property$ScrollMarginInline<TLength>, + "scroll-padding"?: Property$ScrollPadding<TLength>, + "scroll-padding-block"?: Property$ScrollPaddingBlock<TLength>, + "scroll-padding-inline"?: Property$ScrollPaddingInline<TLength>, + "scroll-snap-margin"?: Property$ScrollMargin<TLength>, + "scroll-timeline"?: Property$ScrollTimeline, + "text-decoration"?: Property$TextDecoration<TLength>, + "text-emphasis"?: Property$TextEmphasis, + transition?: Property$Transition<TTime>, + "view-timeline"?: Property$ViewTimeline, +|}; + +export type StandardPropertiesHyphen<TLength = string | 0, TTime = string> = {| + ...StandardLonghandPropertiesHyphen<TLength, TTime>, + ...StandardShorthandPropertiesHyphen<TLength, TTime>, +|}; + +export type VendorLonghandPropertiesHyphen<TLength = string | 0, TTime = string> = {| + "-moz-animation-delay"?: Property$AnimationDelay<TTime>, + "-moz-animation-direction"?: Property$AnimationDirection, + "-moz-animation-duration"?: Property$AnimationDuration<TTime>, + "-moz-animation-fill-mode"?: Property$AnimationFillMode, + "-moz-animation-iteration-count"?: Property$AnimationIterationCount, + "-moz-animation-name"?: Property$AnimationName, + "-moz-animation-play-state"?: Property$AnimationPlayState, + "-moz-animation-timing-function"?: Property$AnimationTimingFunction, + "-moz-appearance"?: Property$MozAppearance, + "-moz-binding"?: Property$MozBinding, + "-moz-border-bottom-colors"?: Property$MozBorderBottomColors, + "-moz-border-end-color"?: Property$BorderInlineEndColor, + "-moz-border-end-style"?: Property$BorderInlineEndStyle, + "-moz-border-end-width"?: Property$BorderInlineEndWidth<TLength>, + "-moz-border-left-colors"?: Property$MozBorderLeftColors, + "-moz-border-right-colors"?: Property$MozBorderRightColors, + "-moz-border-start-color"?: Property$BorderInlineStartColor, + "-moz-border-start-style"?: Property$BorderInlineStartStyle, + "-moz-border-top-colors"?: Property$MozBorderTopColors, + "-moz-box-sizing"?: Property$BoxSizing, + "-moz-column-count"?: Property$ColumnCount, + "-moz-column-fill"?: Property$ColumnFill, + "-moz-column-rule-color"?: Property$ColumnRuleColor, + "-moz-column-rule-style"?: Property$ColumnRuleStyle, + "-moz-column-rule-width"?: Property$ColumnRuleWidth<TLength>, + "-moz-column-width"?: Property$ColumnWidth<TLength>, + "-moz-context-properties"?: Property$MozContextProperties, + "-moz-font-feature-settings"?: Property$FontFeatureSettings, + "-moz-font-language-override"?: Property$FontLanguageOverride, + "-moz-hyphens"?: Property$Hyphens, + "-moz-image-region"?: Property$MozImageRegion, + "-moz-margin-end"?: Property$MarginInlineEnd<TLength>, + "-moz-margin-start"?: Property$MarginInlineStart<TLength>, + "-moz-orient"?: Property$MozOrient, + "-moz-osx-font-smoothing"?: Property$FontSmooth<TLength>, + "-moz-outline-radius-bottomleft"?: Property$MozOutlineRadiusBottomleft<TLength>, + "-moz-outline-radius-bottomright"?: Property$MozOutlineRadiusBottomright<TLength>, + "-moz-outline-radius-topleft"?: Property$MozOutlineRadiusTopleft<TLength>, + "-moz-outline-radius-topright"?: Property$MozOutlineRadiusTopright<TLength>, + "-moz-padding-end"?: Property$PaddingInlineEnd<TLength>, + "-moz-padding-start"?: Property$PaddingInlineStart<TLength>, + "-moz-stack-sizing"?: Property$MozStackSizing, + "-moz-tab-size"?: Property$TabSize<TLength>, + "-moz-text-blink"?: Property$MozTextBlink, + "-moz-text-size-adjust"?: Property$TextSizeAdjust, + "-moz-user-focus"?: Property$MozUserFocus, + "-moz-user-modify"?: Property$MozUserModify, + "-moz-user-select"?: Property$UserSelect, + "-moz-window-dragging"?: Property$MozWindowDragging, + "-moz-window-shadow"?: Property$MozWindowShadow, + "-ms-accelerator"?: Property$MsAccelerator, + "-ms-block-progression"?: Property$MsBlockProgression, + "-ms-content-zoom-chaining"?: Property$MsContentZoomChaining, + "-ms-content-zoom-limit-max"?: Property$MsContentZoomLimitMax, + "-ms-content-zoom-limit-min"?: Property$MsContentZoomLimitMin, + "-ms-content-zoom-snap-points"?: Property$MsContentZoomSnapPoints, + "-ms-content-zoom-snap-type"?: Property$MsContentZoomSnapType, + "-ms-content-zooming"?: Property$MsContentZooming, + "-ms-filter"?: Property$MsFilter, + "-ms-flex-direction"?: Property$FlexDirection, + "-ms-flex-positive"?: Property$FlexGrow, + "-ms-flow-from"?: Property$MsFlowFrom, + "-ms-flow-into"?: Property$MsFlowInto, + "-ms-grid-columns"?: Property$MsGridColumns<TLength>, + "-ms-grid-rows"?: Property$MsGridRows<TLength>, + "-ms-high-contrast-adjust"?: Property$MsHighContrastAdjust, + "-ms-hyphenate-limit-chars"?: Property$MsHyphenateLimitChars, + "-ms-hyphenate-limit-lines"?: Property$MsHyphenateLimitLines, + "-ms-hyphenate-limit-zone"?: Property$MsHyphenateLimitZone<TLength>, + "-ms-hyphens"?: Property$Hyphens, + "-ms-ime-align"?: Property$MsImeAlign, + "-ms-line-break"?: Property$LineBreak, + "-ms-order"?: Property$Order, + "-ms-overflow-style"?: Property$MsOverflowStyle, + "-ms-overflow-x"?: Property$OverflowX, + "-ms-overflow-y"?: Property$OverflowY, + "-ms-scroll-chaining"?: Property$MsScrollChaining, + "-ms-scroll-limit-x-max"?: Property$MsScrollLimitXMax<TLength>, + "-ms-scroll-limit-x-min"?: Property$MsScrollLimitXMin<TLength>, + "-ms-scroll-limit-y-max"?: Property$MsScrollLimitYMax<TLength>, + "-ms-scroll-limit-y-min"?: Property$MsScrollLimitYMin<TLength>, + "-ms-scroll-rails"?: Property$MsScrollRails, + "-ms-scroll-snap-points-x"?: Property$MsScrollSnapPointsX, + "-ms-scroll-snap-points-y"?: Property$MsScrollSnapPointsY, + "-ms-scroll-snap-type"?: Property$MsScrollSnapType, + "-ms-scroll-translation"?: Property$MsScrollTranslation, + "-ms-scrollbar-3dlight-color"?: Property$MsScrollbar3dlightColor, + "-ms-scrollbar-arrow-color"?: Property$MsScrollbarArrowColor, + "-ms-scrollbar-base-color"?: Property$MsScrollbarBaseColor, + "-ms-scrollbar-darkshadow-color"?: Property$MsScrollbarDarkshadowColor, + "-ms-scrollbar-face-color"?: Property$MsScrollbarFaceColor, + "-ms-scrollbar-highlight-color"?: Property$MsScrollbarHighlightColor, + "-ms-scrollbar-shadow-color"?: Property$MsScrollbarShadowColor, + "-ms-scrollbar-track-color"?: Property$MsScrollbarTrackColor, + "-ms-text-autospace"?: Property$MsTextAutospace, + "-ms-text-combine-horizontal"?: Property$TextCombineUpright, + "-ms-text-overflow"?: Property$TextOverflow, + "-ms-touch-action"?: Property$TouchAction, + "-ms-touch-select"?: Property$MsTouchSelect, + "-ms-transform"?: Property$Transform, + "-ms-transform-origin"?: Property$TransformOrigin<TLength>, + "-ms-transition-delay"?: Property$TransitionDelay<TTime>, + "-ms-transition-duration"?: Property$TransitionDuration<TTime>, + "-ms-transition-property"?: Property$TransitionProperty, + "-ms-transition-timing-function"?: Property$TransitionTimingFunction, + "-ms-user-select"?: Property$MsUserSelect, + "-ms-word-break"?: Property$WordBreak, + "-ms-wrap-flow"?: Property$MsWrapFlow, + "-ms-wrap-margin"?: Property$MsWrapMargin<TLength>, + "-ms-wrap-through"?: Property$MsWrapThrough, + "-ms-writing-mode"?: Property$WritingMode, + "-webkit-align-content"?: Property$AlignContent, + "-webkit-align-items"?: Property$AlignItems, + "-webkit-align-self"?: Property$AlignSelf, + "-webkit-animation-delay"?: Property$AnimationDelay<TTime>, + "-webkit-animation-direction"?: Property$AnimationDirection, + "-webkit-animation-duration"?: Property$AnimationDuration<TTime>, + "-webkit-animation-fill-mode"?: Property$AnimationFillMode, + "-webkit-animation-iteration-count"?: Property$AnimationIterationCount, + "-webkit-animation-name"?: Property$AnimationName, + "-webkit-animation-play-state"?: Property$AnimationPlayState, + "-webkit-animation-timing-function"?: Property$AnimationTimingFunction, + "-webkit-appearance"?: Property$WebkitAppearance, + "-webkit-backdrop-filter"?: Property$BackdropFilter, + "-webkit-backface-visibility"?: Property$BackfaceVisibility, + "-webkit-background-clip"?: Property$BackgroundClip, + "-webkit-background-origin"?: Property$BackgroundOrigin, + "-webkit-background-size"?: Property$BackgroundSize<TLength>, + "-webkit-border-before-color"?: Property$WebkitBorderBeforeColor, + "-webkit-border-before-style"?: Property$WebkitBorderBeforeStyle, + "-webkit-border-before-width"?: Property$WebkitBorderBeforeWidth<TLength>, + "-webkit-border-bottom-left-radius"?: Property$BorderBottomLeftRadius<TLength>, + "-webkit-border-bottom-right-radius"?: Property$BorderBottomRightRadius<TLength>, + "-webkit-border-image-slice"?: Property$BorderImageSlice, + "-webkit-border-top-left-radius"?: Property$BorderTopLeftRadius<TLength>, + "-webkit-border-top-right-radius"?: Property$BorderTopRightRadius<TLength>, + "-webkit-box-decoration-break"?: Property$BoxDecorationBreak, + "-webkit-box-reflect"?: Property$WebkitBoxReflect<TLength>, + "-webkit-box-shadow"?: Property$BoxShadow, + "-webkit-box-sizing"?: Property$BoxSizing, + "-webkit-clip-path"?: Property$ClipPath, + "-webkit-column-count"?: Property$ColumnCount, + "-webkit-column-fill"?: Property$ColumnFill, + "-webkit-column-rule-color"?: Property$ColumnRuleColor, + "-webkit-column-rule-style"?: Property$ColumnRuleStyle, + "-webkit-column-rule-width"?: Property$ColumnRuleWidth<TLength>, + "-webkit-column-span"?: Property$ColumnSpan, + "-webkit-column-width"?: Property$ColumnWidth<TLength>, + "-webkit-filter"?: Property$Filter, + "-webkit-flex-basis"?: Property$FlexBasis<TLength>, + "-webkit-flex-direction"?: Property$FlexDirection, + "-webkit-flex-grow"?: Property$FlexGrow, + "-webkit-flex-shrink"?: Property$FlexShrink, + "-webkit-flex-wrap"?: Property$FlexWrap, + "-webkit-font-feature-settings"?: Property$FontFeatureSettings, + "-webkit-font-kerning"?: Property$FontKerning, + "-webkit-font-smoothing"?: Property$FontSmooth<TLength>, + "-webkit-font-variant-ligatures"?: Property$FontVariantLigatures, + "-webkit-hyphenate-character"?: Property$HyphenateCharacter, + "-webkit-hyphens"?: Property$Hyphens, + "-webkit-initial-letter"?: Property$InitialLetter, + "-webkit-justify-content"?: Property$JustifyContent, + "-webkit-line-break"?: Property$LineBreak, + "-webkit-line-clamp"?: Property$WebkitLineClamp, + "-webkit-margin-end"?: Property$MarginInlineEnd<TLength>, + "-webkit-margin-start"?: Property$MarginInlineStart<TLength>, + "-webkit-mask-attachment"?: Property$WebkitMaskAttachment, + "-webkit-mask-box-image-outset"?: Property$MaskBorderOutset<TLength>, + "-webkit-mask-box-image-repeat"?: Property$MaskBorderRepeat, + "-webkit-mask-box-image-slice"?: Property$MaskBorderSlice, + "-webkit-mask-box-image-source"?: Property$MaskBorderSource, + "-webkit-mask-box-image-width"?: Property$MaskBorderWidth<TLength>, + "-webkit-mask-clip"?: Property$WebkitMaskClip, + "-webkit-mask-composite"?: Property$WebkitMaskComposite, + "-webkit-mask-image"?: Property$WebkitMaskImage, + "-webkit-mask-origin"?: Property$WebkitMaskOrigin, + "-webkit-mask-position"?: Property$WebkitMaskPosition<TLength>, + "-webkit-mask-position-x"?: Property$WebkitMaskPositionX<TLength>, + "-webkit-mask-position-y"?: Property$WebkitMaskPositionY<TLength>, + "-webkit-mask-repeat"?: Property$WebkitMaskRepeat, + "-webkit-mask-repeat-x"?: Property$WebkitMaskRepeatX, + "-webkit-mask-repeat-y"?: Property$WebkitMaskRepeatY, + "-webkit-mask-size"?: Property$WebkitMaskSize<TLength>, + "-webkit-max-inline-size"?: Property$MaxInlineSize<TLength>, + "-webkit-order"?: Property$Order, + "-webkit-overflow-scrolling"?: Property$WebkitOverflowScrolling, + "-webkit-padding-end"?: Property$PaddingInlineEnd<TLength>, + "-webkit-padding-start"?: Property$PaddingInlineStart<TLength>, + "-webkit-perspective"?: Property$Perspective<TLength>, + "-webkit-perspective-origin"?: Property$PerspectiveOrigin<TLength>, + "-webkit-print-color-adjust"?: Property$PrintColorAdjust, + "-webkit-ruby-position"?: Property$RubyPosition, + "-webkit-scroll-snap-type"?: Property$ScrollSnapType, + "-webkit-shape-margin"?: Property$ShapeMargin<TLength>, + "-webkit-tap-highlight-color"?: Property$WebkitTapHighlightColor, + "-webkit-text-combine"?: Property$TextCombineUpright, + "-webkit-text-decoration-color"?: Property$TextDecorationColor, + "-webkit-text-decoration-line"?: Property$TextDecorationLine, + "-webkit-text-decoration-skip"?: Property$TextDecorationSkip, + "-webkit-text-decoration-style"?: Property$TextDecorationStyle, + "-webkit-text-emphasis-color"?: Property$TextEmphasisColor, + "-webkit-text-emphasis-position"?: Property$TextEmphasisPosition, + "-webkit-text-emphasis-style"?: Property$TextEmphasisStyle, + "-webkit-text-fill-color"?: Property$WebkitTextFillColor, + "-webkit-text-orientation"?: Property$TextOrientation, + "-webkit-text-size-adjust"?: Property$TextSizeAdjust, + "-webkit-text-stroke-color"?: Property$WebkitTextStrokeColor, + "-webkit-text-stroke-width"?: Property$WebkitTextStrokeWidth<TLength>, + "-webkit-text-underline-position"?: Property$TextUnderlinePosition, + "-webkit-touch-callout"?: Property$WebkitTouchCallout, + "-webkit-transform"?: Property$Transform, + "-webkit-transform-origin"?: Property$TransformOrigin<TLength>, + "-webkit-transform-style"?: Property$TransformStyle, + "-webkit-transition-delay"?: Property$TransitionDelay<TTime>, + "-webkit-transition-duration"?: Property$TransitionDuration<TTime>, + "-webkit-transition-property"?: Property$TransitionProperty, + "-webkit-transition-timing-function"?: Property$TransitionTimingFunction, + "-webkit-user-modify"?: Property$WebkitUserModify, + "-webkit-user-select"?: Property$UserSelect, + "-webkit-writing-mode"?: Property$WritingMode, +|}; + +export type VendorShorthandPropertiesHyphen<TLength = string | 0, TTime = string> = {| + "-moz-animation"?: Property$Animation<TTime>, + "-moz-border-image"?: Property$BorderImage, + "-moz-column-rule"?: Property$ColumnRule<TLength>, + "-moz-columns"?: Property$Columns<TLength>, + "-moz-outline-radius"?: Property$MozOutlineRadius<TLength>, + "-ms-content-zoom-limit"?: Property$MsContentZoomLimit, + "-ms-content-zoom-snap"?: Property$MsContentZoomSnap, + "-ms-flex"?: Property$Flex<TLength>, + "-ms-scroll-limit"?: Property$MsScrollLimit, + "-ms-scroll-snap-x"?: Property$MsScrollSnapX, + "-ms-scroll-snap-y"?: Property$MsScrollSnapY, + "-ms-transition"?: Property$Transition<TTime>, + "-webkit-animation"?: Property$Animation<TTime>, + "-webkit-border-before"?: Property$WebkitBorderBefore<TLength>, + "-webkit-border-image"?: Property$BorderImage, + "-webkit-border-radius"?: Property$BorderRadius<TLength>, + "-webkit-column-rule"?: Property$ColumnRule<TLength>, + "-webkit-columns"?: Property$Columns<TLength>, + "-webkit-flex"?: Property$Flex<TLength>, + "-webkit-flex-flow"?: Property$FlexFlow, + "-webkit-mask"?: Property$WebkitMask<TLength>, + "-webkit-mask-box-image"?: Property$MaskBorder, + "-webkit-text-emphasis"?: Property$TextEmphasis, + "-webkit-text-stroke"?: Property$WebkitTextStroke<TLength>, + "-webkit-transition"?: Property$Transition<TTime>, +|}; + +export type VendorPropertiesHyphen<TLength = string | 0, TTime = string> = {| + ...VendorLonghandPropertiesHyphen<TLength, TTime>, + ...VendorShorthandPropertiesHyphen<TLength, TTime>, +|}; + +export type ObsoletePropertiesHyphen<TLength = string | 0, TTime = string> = {| + azimuth?: Property$Azimuth, + "box-align"?: Property$BoxAlign, + "box-direction"?: Property$BoxDirection, + "box-flex"?: Property$BoxFlex, + "box-flex-group"?: Property$BoxFlexGroup, + "box-lines"?: Property$BoxLines, + "box-ordinal-group"?: Property$BoxOrdinalGroup, + "box-orient"?: Property$BoxOrient, + "box-pack"?: Property$BoxPack, + clip?: Property$Clip, + "grid-column-gap"?: Property$GridColumnGap<TLength>, + "grid-gap"?: Property$GridGap<TLength>, + "grid-row-gap"?: Property$GridRowGap<TLength>, + "ime-mode"?: Property$ImeMode, + "offset-block"?: Property$InsetBlock<TLength>, + "offset-block-end"?: Property$InsetBlockEnd<TLength>, + "offset-block-start"?: Property$InsetBlockStart<TLength>, + "offset-inline"?: Property$InsetInline<TLength>, + "offset-inline-end"?: Property$InsetInlineEnd<TLength>, + "offset-inline-start"?: Property$InsetInlineStart<TLength>, + "scroll-snap-coordinate"?: Property$ScrollSnapCoordinate<TLength>, + "scroll-snap-destination"?: Property$ScrollSnapDestination<TLength>, + "scroll-snap-points-x"?: Property$ScrollSnapPointsX, + "scroll-snap-points-y"?: Property$ScrollSnapPointsY, + "scroll-snap-type-x"?: Property$ScrollSnapTypeX, + "scroll-snap-type-y"?: Property$ScrollSnapTypeY, + "-khtml-box-align"?: Property$BoxAlign, + "-khtml-box-direction"?: Property$BoxDirection, + "-khtml-box-flex"?: Property$BoxFlex, + "-khtml-box-flex-group"?: Property$BoxFlexGroup, + "-khtml-box-lines"?: Property$BoxLines, + "-khtml-box-ordinal-group"?: Property$BoxOrdinalGroup, + "-khtml-box-orient"?: Property$BoxOrient, + "-khtml-box-pack"?: Property$BoxPack, + "-khtml-line-break"?: Property$LineBreak, + "-khtml-opacity"?: Property$Opacity, + "-khtml-user-select"?: Property$UserSelect, + "-moz-backface-visibility"?: Property$BackfaceVisibility, + "-moz-background-clip"?: Property$BackgroundClip, + "-moz-background-inline-policy"?: Property$BoxDecorationBreak, + "-moz-background-origin"?: Property$BackgroundOrigin, + "-moz-background-size"?: Property$BackgroundSize<TLength>, + "-moz-border-radius"?: Property$BorderRadius<TLength>, + "-moz-border-radius-bottomleft"?: Property$BorderBottomLeftRadius<TLength>, + "-moz-border-radius-bottomright"?: Property$BorderBottomRightRadius<TLength>, + "-moz-border-radius-topleft"?: Property$BorderTopLeftRadius<TLength>, + "-moz-border-radius-topright"?: Property$BorderTopRightRadius<TLength>, + "-moz-box-align"?: Property$BoxAlign, + "-moz-box-direction"?: Property$BoxDirection, + "-moz-box-flex"?: Property$BoxFlex, + "-moz-box-ordinal-group"?: Property$BoxOrdinalGroup, + "-moz-box-orient"?: Property$BoxOrient, + "-moz-box-pack"?: Property$BoxPack, + "-moz-box-shadow"?: Property$BoxShadow, + "-moz-float-edge"?: Property$MozFloatEdge, + "-moz-force-broken-image-icon"?: Property$MozForceBrokenImageIcon, + "-moz-opacity"?: Property$Opacity, + "-moz-outline"?: Property$Outline<TLength>, + "-moz-outline-color"?: Property$OutlineColor, + "-moz-outline-style"?: Property$OutlineStyle, + "-moz-outline-width"?: Property$OutlineWidth<TLength>, + "-moz-perspective"?: Property$Perspective<TLength>, + "-moz-perspective-origin"?: Property$PerspectiveOrigin<TLength>, + "-moz-text-align-last"?: Property$TextAlignLast, + "-moz-text-decoration-color"?: Property$TextDecorationColor, + "-moz-text-decoration-line"?: Property$TextDecorationLine, + "-moz-text-decoration-style"?: Property$TextDecorationStyle, + "-moz-transform"?: Property$Transform, + "-moz-transform-origin"?: Property$TransformOrigin<TLength>, + "-moz-transform-style"?: Property$TransformStyle, + "-moz-transition"?: Property$Transition<TTime>, + "-moz-transition-delay"?: Property$TransitionDelay<TTime>, + "-moz-transition-duration"?: Property$TransitionDuration<TTime>, + "-moz-transition-property"?: Property$TransitionProperty, + "-moz-transition-timing-function"?: Property$TransitionTimingFunction, + "-moz-user-input"?: Property$MozUserInput, + "-ms-ime-mode"?: Property$ImeMode, + "-o-animation"?: Property$Animation<TTime>, + "-o-animation-delay"?: Property$AnimationDelay<TTime>, + "-o-animation-direction"?: Property$AnimationDirection, + "-o-animation-duration"?: Property$AnimationDuration<TTime>, + "-o-animation-fill-mode"?: Property$AnimationFillMode, + "-o-animation-iteration-count"?: Property$AnimationIterationCount, + "-o-animation-name"?: Property$AnimationName, + "-o-animation-play-state"?: Property$AnimationPlayState, + "-o-animation-timing-function"?: Property$AnimationTimingFunction, + "-o-background-size"?: Property$BackgroundSize<TLength>, + "-o-border-image"?: Property$BorderImage, + "-o-object-fit"?: Property$ObjectFit, + "-o-object-position"?: Property$ObjectPosition<TLength>, + "-o-tab-size"?: Property$TabSize<TLength>, + "-o-text-overflow"?: Property$TextOverflow, + "-o-transform"?: Property$Transform, + "-o-transform-origin"?: Property$TransformOrigin<TLength>, + "-o-transition"?: Property$Transition<TTime>, + "-o-transition-delay"?: Property$TransitionDelay<TTime>, + "-o-transition-duration"?: Property$TransitionDuration<TTime>, + "-o-transition-property"?: Property$TransitionProperty, + "-o-transition-timing-function"?: Property$TransitionTimingFunction, + "-webkit-box-align"?: Property$BoxAlign, + "-webkit-box-direction"?: Property$BoxDirection, + "-webkit-box-flex"?: Property$BoxFlex, + "-webkit-box-flex-group"?: Property$BoxFlexGroup, + "-webkit-box-lines"?: Property$BoxLines, + "-webkit-box-ordinal-group"?: Property$BoxOrdinalGroup, + "-webkit-box-orient"?: Property$BoxOrient, + "-webkit-box-pack"?: Property$BoxPack, +|}; + +export type SvgPropertiesHyphen<TLength = string | 0, TTime = string> = {| + "alignment-baseline"?: Property$AlignmentBaseline, + "baseline-shift"?: Property$BaselineShift<TLength>, + clip?: Property$Clip, + "clip-path"?: Property$ClipPath, + "clip-rule"?: Property$ClipRule, + color?: Property$Color, + "color-interpolation"?: Property$ColorInterpolation, + "color-rendering"?: Property$ColorRendering, + cursor?: Property$Cursor, + direction?: Property$Direction, + display?: Property$Display, + "dominant-baseline"?: Property$DominantBaseline, + fill?: Property$Fill, + "fill-opacity"?: Property$FillOpacity, + "fill-rule"?: Property$FillRule, + filter?: Property$Filter, + "flood-color"?: Property$FloodColor, + "flood-opacity"?: Property$FloodOpacity, + font?: Property$Font, + "font-family"?: Property$FontFamily, + "font-size"?: Property$FontSize<TLength>, + "font-size-adjust"?: Property$FontSizeAdjust, + "font-stretch"?: Property$FontStretch, + "font-style"?: Property$FontStyle, + "font-variant"?: Property$FontVariant, + "font-weight"?: Property$FontWeight, + "glyph-orientation-vertical"?: Property$GlyphOrientationVertical, + "image-rendering"?: Property$ImageRendering, + "letter-spacing"?: Property$LetterSpacing<TLength>, + "lighting-color"?: Property$LightingColor, + "line-height"?: Property$LineHeight<TLength>, + marker?: Property$Marker, + "marker-end"?: Property$MarkerEnd, + "marker-mid"?: Property$MarkerMid, + "marker-start"?: Property$MarkerStart, + mask?: Property$Mask<TLength>, + opacity?: Property$Opacity, + overflow?: Property$Overflow, + "paint-order"?: Property$PaintOrder, + "pointer-events"?: Property$PointerEvents, + "shape-rendering"?: Property$ShapeRendering, + "stop-color"?: Property$StopColor, + "stop-opacity"?: Property$StopOpacity, + stroke?: Property$Stroke, + "stroke-dasharray"?: Property$StrokeDasharray<TLength>, + "stroke-dashoffset"?: Property$StrokeDashoffset<TLength>, + "stroke-linecap"?: Property$StrokeLinecap, + "stroke-linejoin"?: Property$StrokeLinejoin, + "stroke-miterlimit"?: Property$StrokeMiterlimit, + "stroke-opacity"?: Property$StrokeOpacity, + "stroke-width"?: Property$StrokeWidth<TLength>, + "text-anchor"?: Property$TextAnchor, + "text-decoration"?: Property$TextDecoration<TLength>, + "text-rendering"?: Property$TextRendering, + "unicode-bidi"?: Property$UnicodeBidi, + "vector-effect"?: Property$VectorEffect, + visibility?: Property$Visibility, + "white-space"?: Property$WhiteSpace, + "word-spacing"?: Property$WordSpacing<TLength>, + "writing-mode"?: Property$WritingMode, +|}; + +export type PropertiesHyphen<TLength = string | 0, TTime = string> = {| + ...StandardPropertiesHyphen<TLength, TTime>, + ...VendorPropertiesHyphen<TLength, TTime>, + ...ObsoletePropertiesHyphen<TLength, TTime>, + ...SvgPropertiesHyphen<TLength, TTime>, +|}; + +export type StandardLonghandPropertiesFallback<TLength = string | 0, TTime = string> = {| + accentColor?: Property$AccentColor | Array<Property$AccentColor>, + alignContent?: Property$AlignContent | Array<Property$AlignContent>, + alignItems?: Property$AlignItems | Array<Property$AlignItems>, + alignSelf?: Property$AlignSelf | Array<Property$AlignSelf>, + alignTracks?: Property$AlignTracks | Array<Property$AlignTracks>, + animationComposition?: Property$AnimationComposition | Array<Property$AnimationComposition>, + animationDelay?: Property$AnimationDelay<TTime> | Array<Property$AnimationDelay<TTime>>, + animationDirection?: Property$AnimationDirection | Array<Property$AnimationDirection>, + animationDuration?: Property$AnimationDuration<TTime> | Array<Property$AnimationDuration<TTime>>, + animationFillMode?: Property$AnimationFillMode | Array<Property$AnimationFillMode>, + animationIterationCount?: Property$AnimationIterationCount | Array<Property$AnimationIterationCount>, + animationName?: Property$AnimationName | Array<Property$AnimationName>, + animationPlayState?: Property$AnimationPlayState | Array<Property$AnimationPlayState>, + animationRangeEnd?: Property$AnimationRangeEnd<TLength> | Array<Property$AnimationRangeEnd<TLength>>, + animationRangeStart?: Property$AnimationRangeStart<TLength> | Array<Property$AnimationRangeStart<TLength>>, + animationTimeline?: Property$AnimationTimeline | Array<Property$AnimationTimeline>, + animationTimingFunction?: Property$AnimationTimingFunction | Array<Property$AnimationTimingFunction>, + appearance?: Property$Appearance | Array<Property$Appearance>, + aspectRatio?: Property$AspectRatio | Array<Property$AspectRatio>, + backdropFilter?: Property$BackdropFilter | Array<Property$BackdropFilter>, + backfaceVisibility?: Property$BackfaceVisibility | Array<Property$BackfaceVisibility>, + backgroundAttachment?: Property$BackgroundAttachment | Array<Property$BackgroundAttachment>, + backgroundBlendMode?: Property$BackgroundBlendMode | Array<Property$BackgroundBlendMode>, + backgroundClip?: Property$BackgroundClip | Array<Property$BackgroundClip>, + backgroundColor?: Property$BackgroundColor | Array<Property$BackgroundColor>, + backgroundImage?: Property$BackgroundImage | Array<Property$BackgroundImage>, + backgroundOrigin?: Property$BackgroundOrigin | Array<Property$BackgroundOrigin>, + backgroundPositionX?: Property$BackgroundPositionX<TLength> | Array<Property$BackgroundPositionX<TLength>>, + backgroundPositionY?: Property$BackgroundPositionY<TLength> | Array<Property$BackgroundPositionY<TLength>>, + backgroundRepeat?: Property$BackgroundRepeat | Array<Property$BackgroundRepeat>, + backgroundSize?: Property$BackgroundSize<TLength> | Array<Property$BackgroundSize<TLength>>, + blockOverflow?: Property$BlockOverflow | Array<Property$BlockOverflow>, + blockSize?: Property$BlockSize<TLength> | Array<Property$BlockSize<TLength>>, + borderBlockColor?: Property$BorderBlockColor | Array<Property$BorderBlockColor>, + borderBlockEndColor?: Property$BorderBlockEndColor | Array<Property$BorderBlockEndColor>, + borderBlockEndStyle?: Property$BorderBlockEndStyle | Array<Property$BorderBlockEndStyle>, + borderBlockEndWidth?: Property$BorderBlockEndWidth<TLength> | Array<Property$BorderBlockEndWidth<TLength>>, + borderBlockStartColor?: Property$BorderBlockStartColor | Array<Property$BorderBlockStartColor>, + borderBlockStartStyle?: Property$BorderBlockStartStyle | Array<Property$BorderBlockStartStyle>, + borderBlockStartWidth?: Property$BorderBlockStartWidth<TLength> | Array<Property$BorderBlockStartWidth<TLength>>, + borderBlockStyle?: Property$BorderBlockStyle | Array<Property$BorderBlockStyle>, + borderBlockWidth?: Property$BorderBlockWidth<TLength> | Array<Property$BorderBlockWidth<TLength>>, + borderBottomColor?: Property$BorderBottomColor | Array<Property$BorderBottomColor>, + borderBottomLeftRadius?: Property$BorderBottomLeftRadius<TLength> | Array<Property$BorderBottomLeftRadius<TLength>>, + borderBottomRightRadius?: Property$BorderBottomRightRadius<TLength> | Array<Property$BorderBottomRightRadius<TLength>>, + borderBottomStyle?: Property$BorderBottomStyle | Array<Property$BorderBottomStyle>, + borderBottomWidth?: Property$BorderBottomWidth<TLength> | Array<Property$BorderBottomWidth<TLength>>, + borderCollapse?: Property$BorderCollapse | Array<Property$BorderCollapse>, + borderEndEndRadius?: Property$BorderEndEndRadius<TLength> | Array<Property$BorderEndEndRadius<TLength>>, + borderEndStartRadius?: Property$BorderEndStartRadius<TLength> | Array<Property$BorderEndStartRadius<TLength>>, + borderImageOutset?: Property$BorderImageOutset<TLength> | Array<Property$BorderImageOutset<TLength>>, + borderImageRepeat?: Property$BorderImageRepeat | Array<Property$BorderImageRepeat>, + borderImageSlice?: Property$BorderImageSlice | Array<Property$BorderImageSlice>, + borderImageSource?: Property$BorderImageSource | Array<Property$BorderImageSource>, + borderImageWidth?: Property$BorderImageWidth<TLength> | Array<Property$BorderImageWidth<TLength>>, + borderInlineColor?: Property$BorderInlineColor | Array<Property$BorderInlineColor>, + borderInlineEndColor?: Property$BorderInlineEndColor | Array<Property$BorderInlineEndColor>, + borderInlineEndStyle?: Property$BorderInlineEndStyle | Array<Property$BorderInlineEndStyle>, + borderInlineEndWidth?: Property$BorderInlineEndWidth<TLength> | Array<Property$BorderInlineEndWidth<TLength>>, + borderInlineStartColor?: Property$BorderInlineStartColor | Array<Property$BorderInlineStartColor>, + borderInlineStartStyle?: Property$BorderInlineStartStyle | Array<Property$BorderInlineStartStyle>, + borderInlineStartWidth?: Property$BorderInlineStartWidth<TLength> | Array<Property$BorderInlineStartWidth<TLength>>, + borderInlineStyle?: Property$BorderInlineStyle | Array<Property$BorderInlineStyle>, + borderInlineWidth?: Property$BorderInlineWidth<TLength> | Array<Property$BorderInlineWidth<TLength>>, + borderLeftColor?: Property$BorderLeftColor | Array<Property$BorderLeftColor>, + borderLeftStyle?: Property$BorderLeftStyle | Array<Property$BorderLeftStyle>, + borderLeftWidth?: Property$BorderLeftWidth<TLength> | Array<Property$BorderLeftWidth<TLength>>, + borderRightColor?: Property$BorderRightColor | Array<Property$BorderRightColor>, + borderRightStyle?: Property$BorderRightStyle | Array<Property$BorderRightStyle>, + borderRightWidth?: Property$BorderRightWidth<TLength> | Array<Property$BorderRightWidth<TLength>>, + borderSpacing?: Property$BorderSpacing<TLength> | Array<Property$BorderSpacing<TLength>>, + borderStartEndRadius?: Property$BorderStartEndRadius<TLength> | Array<Property$BorderStartEndRadius<TLength>>, + borderStartStartRadius?: Property$BorderStartStartRadius<TLength> | Array<Property$BorderStartStartRadius<TLength>>, + borderTopColor?: Property$BorderTopColor | Array<Property$BorderTopColor>, + borderTopLeftRadius?: Property$BorderTopLeftRadius<TLength> | Array<Property$BorderTopLeftRadius<TLength>>, + borderTopRightRadius?: Property$BorderTopRightRadius<TLength> | Array<Property$BorderTopRightRadius<TLength>>, + borderTopStyle?: Property$BorderTopStyle | Array<Property$BorderTopStyle>, + borderTopWidth?: Property$BorderTopWidth<TLength> | Array<Property$BorderTopWidth<TLength>>, + bottom?: Property$Bottom<TLength> | Array<Property$Bottom<TLength>>, + boxDecorationBreak?: Property$BoxDecorationBreak | Array<Property$BoxDecorationBreak>, + boxShadow?: Property$BoxShadow | Array<Property$BoxShadow>, + boxSizing?: Property$BoxSizing | Array<Property$BoxSizing>, + breakAfter?: Property$BreakAfter | Array<Property$BreakAfter>, + breakBefore?: Property$BreakBefore | Array<Property$BreakBefore>, + breakInside?: Property$BreakInside | Array<Property$BreakInside>, + captionSide?: Property$CaptionSide | Array<Property$CaptionSide>, + caretColor?: Property$CaretColor | Array<Property$CaretColor>, + caretShape?: Property$CaretShape | Array<Property$CaretShape>, + clear?: Property$Clear | Array<Property$Clear>, + clipPath?: Property$ClipPath | Array<Property$ClipPath>, + color?: Property$Color | Array<Property$Color>, + colorAdjust?: Property$PrintColorAdjust | Array<Property$PrintColorAdjust>, + colorScheme?: Property$ColorScheme | Array<Property$ColorScheme>, + columnCount?: Property$ColumnCount | Array<Property$ColumnCount>, + columnFill?: Property$ColumnFill | Array<Property$ColumnFill>, + columnGap?: Property$ColumnGap<TLength> | Array<Property$ColumnGap<TLength>>, + columnRuleColor?: Property$ColumnRuleColor | Array<Property$ColumnRuleColor>, + columnRuleStyle?: Property$ColumnRuleStyle | Array<Property$ColumnRuleStyle>, + columnRuleWidth?: Property$ColumnRuleWidth<TLength> | Array<Property$ColumnRuleWidth<TLength>>, + columnSpan?: Property$ColumnSpan | Array<Property$ColumnSpan>, + columnWidth?: Property$ColumnWidth<TLength> | Array<Property$ColumnWidth<TLength>>, + contain?: Property$Contain | Array<Property$Contain>, + containIntrinsicBlockSize?: Property$ContainIntrinsicBlockSize<TLength> | Array<Property$ContainIntrinsicBlockSize<TLength>>, + containIntrinsicHeight?: Property$ContainIntrinsicHeight<TLength> | Array<Property$ContainIntrinsicHeight<TLength>>, + containIntrinsicInlineSize?: Property$ContainIntrinsicInlineSize<TLength> | Array<Property$ContainIntrinsicInlineSize<TLength>>, + containIntrinsicWidth?: Property$ContainIntrinsicWidth<TLength> | Array<Property$ContainIntrinsicWidth<TLength>>, + containerName?: Property$ContainerName | Array<Property$ContainerName>, + containerType?: Property$ContainerType | Array<Property$ContainerType>, + content?: Property$Content | Array<Property$Content>, + contentVisibility?: Property$ContentVisibility | Array<Property$ContentVisibility>, + counterIncrement?: Property$CounterIncrement | Array<Property$CounterIncrement>, + counterReset?: Property$CounterReset | Array<Property$CounterReset>, + counterSet?: Property$CounterSet | Array<Property$CounterSet>, + cursor?: Property$Cursor | Array<Property$Cursor>, + direction?: Property$Direction | Array<Property$Direction>, + display?: Property$Display | Array<Property$Display>, + emptyCells?: Property$EmptyCells | Array<Property$EmptyCells>, + filter?: Property$Filter | Array<Property$Filter>, + flexBasis?: Property$FlexBasis<TLength> | Array<Property$FlexBasis<TLength>>, + flexDirection?: Property$FlexDirection | Array<Property$FlexDirection>, + flexGrow?: Property$FlexGrow | Array<Property$FlexGrow>, + flexShrink?: Property$FlexShrink | Array<Property$FlexShrink>, + flexWrap?: Property$FlexWrap | Array<Property$FlexWrap>, + float?: Property$Float | Array<Property$Float>, + fontFamily?: Property$FontFamily | Array<Property$FontFamily>, + fontFeatureSettings?: Property$FontFeatureSettings | Array<Property$FontFeatureSettings>, + fontKerning?: Property$FontKerning | Array<Property$FontKerning>, + fontLanguageOverride?: Property$FontLanguageOverride | Array<Property$FontLanguageOverride>, + fontOpticalSizing?: Property$FontOpticalSizing | Array<Property$FontOpticalSizing>, + fontPalette?: Property$FontPalette | Array<Property$FontPalette>, + fontSize?: Property$FontSize<TLength> | Array<Property$FontSize<TLength>>, + fontSizeAdjust?: Property$FontSizeAdjust | Array<Property$FontSizeAdjust>, + fontSmooth?: Property$FontSmooth<TLength> | Array<Property$FontSmooth<TLength>>, + fontStretch?: Property$FontStretch | Array<Property$FontStretch>, + fontStyle?: Property$FontStyle | Array<Property$FontStyle>, + fontSynthesis?: Property$FontSynthesis | Array<Property$FontSynthesis>, + fontSynthesisPosition?: Property$FontSynthesisPosition | Array<Property$FontSynthesisPosition>, + fontSynthesisSmallCaps?: Property$FontSynthesisSmallCaps | Array<Property$FontSynthesisSmallCaps>, + fontSynthesisStyle?: Property$FontSynthesisStyle | Array<Property$FontSynthesisStyle>, + fontSynthesisWeight?: Property$FontSynthesisWeight | Array<Property$FontSynthesisWeight>, + fontVariant?: Property$FontVariant | Array<Property$FontVariant>, + fontVariantAlternates?: Property$FontVariantAlternates | Array<Property$FontVariantAlternates>, + fontVariantCaps?: Property$FontVariantCaps | Array<Property$FontVariantCaps>, + fontVariantEastAsian?: Property$FontVariantEastAsian | Array<Property$FontVariantEastAsian>, + fontVariantEmoji?: Property$FontVariantEmoji | Array<Property$FontVariantEmoji>, + fontVariantLigatures?: Property$FontVariantLigatures | Array<Property$FontVariantLigatures>, + fontVariantNumeric?: Property$FontVariantNumeric | Array<Property$FontVariantNumeric>, + fontVariantPosition?: Property$FontVariantPosition | Array<Property$FontVariantPosition>, + fontVariationSettings?: Property$FontVariationSettings | Array<Property$FontVariationSettings>, + fontWeight?: Property$FontWeight | Array<Property$FontWeight>, + forcedColorAdjust?: Property$ForcedColorAdjust | Array<Property$ForcedColorAdjust>, + gridAutoColumns?: Property$GridAutoColumns<TLength> | Array<Property$GridAutoColumns<TLength>>, + gridAutoFlow?: Property$GridAutoFlow | Array<Property$GridAutoFlow>, + gridAutoRows?: Property$GridAutoRows<TLength> | Array<Property$GridAutoRows<TLength>>, + gridColumnEnd?: Property$GridColumnEnd | Array<Property$GridColumnEnd>, + gridColumnStart?: Property$GridColumnStart | Array<Property$GridColumnStart>, + gridRowEnd?: Property$GridRowEnd | Array<Property$GridRowEnd>, + gridRowStart?: Property$GridRowStart | Array<Property$GridRowStart>, + gridTemplateAreas?: Property$GridTemplateAreas | Array<Property$GridTemplateAreas>, + gridTemplateColumns?: Property$GridTemplateColumns<TLength> | Array<Property$GridTemplateColumns<TLength>>, + gridTemplateRows?: Property$GridTemplateRows<TLength> | Array<Property$GridTemplateRows<TLength>>, + hangingPunctuation?: Property$HangingPunctuation | Array<Property$HangingPunctuation>, + height?: Property$Height<TLength> | Array<Property$Height<TLength>>, + hyphenateCharacter?: Property$HyphenateCharacter | Array<Property$HyphenateCharacter>, + hyphenateLimitChars?: Property$HyphenateLimitChars | Array<Property$HyphenateLimitChars>, + hyphens?: Property$Hyphens | Array<Property$Hyphens>, + imageOrientation?: Property$ImageOrientation | Array<Property$ImageOrientation>, + imageRendering?: Property$ImageRendering | Array<Property$ImageRendering>, + imageResolution?: Property$ImageResolution | Array<Property$ImageResolution>, + initialLetter?: Property$InitialLetter | Array<Property$InitialLetter>, + inlineSize?: Property$InlineSize<TLength> | Array<Property$InlineSize<TLength>>, + inputSecurity?: Property$InputSecurity | Array<Property$InputSecurity>, + insetBlockEnd?: Property$InsetBlockEnd<TLength> | Array<Property$InsetBlockEnd<TLength>>, + insetBlockStart?: Property$InsetBlockStart<TLength> | Array<Property$InsetBlockStart<TLength>>, + insetInlineEnd?: Property$InsetInlineEnd<TLength> | Array<Property$InsetInlineEnd<TLength>>, + insetInlineStart?: Property$InsetInlineStart<TLength> | Array<Property$InsetInlineStart<TLength>>, + isolation?: Property$Isolation | Array<Property$Isolation>, + justifyContent?: Property$JustifyContent | Array<Property$JustifyContent>, + justifyItems?: Property$JustifyItems | Array<Property$JustifyItems>, + justifySelf?: Property$JustifySelf | Array<Property$JustifySelf>, + justifyTracks?: Property$JustifyTracks | Array<Property$JustifyTracks>, + left?: Property$Left<TLength> | Array<Property$Left<TLength>>, + letterSpacing?: Property$LetterSpacing<TLength> | Array<Property$LetterSpacing<TLength>>, + lineBreak?: Property$LineBreak | Array<Property$LineBreak>, + lineHeight?: Property$LineHeight<TLength> | Array<Property$LineHeight<TLength>>, + lineHeightStep?: Property$LineHeightStep<TLength> | Array<Property$LineHeightStep<TLength>>, + listStyleImage?: Property$ListStyleImage | Array<Property$ListStyleImage>, + listStylePosition?: Property$ListStylePosition | Array<Property$ListStylePosition>, + listStyleType?: Property$ListStyleType | Array<Property$ListStyleType>, + marginBlockEnd?: Property$MarginBlockEnd<TLength> | Array<Property$MarginBlockEnd<TLength>>, + marginBlockStart?: Property$MarginBlockStart<TLength> | Array<Property$MarginBlockStart<TLength>>, + marginBottom?: Property$MarginBottom<TLength> | Array<Property$MarginBottom<TLength>>, + marginInlineEnd?: Property$MarginInlineEnd<TLength> | Array<Property$MarginInlineEnd<TLength>>, + marginInlineStart?: Property$MarginInlineStart<TLength> | Array<Property$MarginInlineStart<TLength>>, + marginLeft?: Property$MarginLeft<TLength> | Array<Property$MarginLeft<TLength>>, + marginRight?: Property$MarginRight<TLength> | Array<Property$MarginRight<TLength>>, + marginTop?: Property$MarginTop<TLength> | Array<Property$MarginTop<TLength>>, + marginTrim?: Property$MarginTrim | Array<Property$MarginTrim>, + maskBorderMode?: Property$MaskBorderMode | Array<Property$MaskBorderMode>, + maskBorderOutset?: Property$MaskBorderOutset<TLength> | Array<Property$MaskBorderOutset<TLength>>, + maskBorderRepeat?: Property$MaskBorderRepeat | Array<Property$MaskBorderRepeat>, + maskBorderSlice?: Property$MaskBorderSlice | Array<Property$MaskBorderSlice>, + maskBorderSource?: Property$MaskBorderSource | Array<Property$MaskBorderSource>, + maskBorderWidth?: Property$MaskBorderWidth<TLength> | Array<Property$MaskBorderWidth<TLength>>, + maskClip?: Property$MaskClip | Array<Property$MaskClip>, + maskComposite?: Property$MaskComposite | Array<Property$MaskComposite>, + maskImage?: Property$MaskImage | Array<Property$MaskImage>, + maskMode?: Property$MaskMode | Array<Property$MaskMode>, + maskOrigin?: Property$MaskOrigin | Array<Property$MaskOrigin>, + maskPosition?: Property$MaskPosition<TLength> | Array<Property$MaskPosition<TLength>>, + maskRepeat?: Property$MaskRepeat | Array<Property$MaskRepeat>, + maskSize?: Property$MaskSize<TLength> | Array<Property$MaskSize<TLength>>, + maskType?: Property$MaskType | Array<Property$MaskType>, + masonryAutoFlow?: Property$MasonryAutoFlow | Array<Property$MasonryAutoFlow>, + mathDepth?: Property$MathDepth | Array<Property$MathDepth>, + mathShift?: Property$MathShift | Array<Property$MathShift>, + mathStyle?: Property$MathStyle | Array<Property$MathStyle>, + maxBlockSize?: Property$MaxBlockSize<TLength> | Array<Property$MaxBlockSize<TLength>>, + maxHeight?: Property$MaxHeight<TLength> | Array<Property$MaxHeight<TLength>>, + maxInlineSize?: Property$MaxInlineSize<TLength> | Array<Property$MaxInlineSize<TLength>>, + maxLines?: Property$MaxLines | Array<Property$MaxLines>, + maxWidth?: Property$MaxWidth<TLength> | Array<Property$MaxWidth<TLength>>, + minBlockSize?: Property$MinBlockSize<TLength> | Array<Property$MinBlockSize<TLength>>, + minHeight?: Property$MinHeight<TLength> | Array<Property$MinHeight<TLength>>, + minInlineSize?: Property$MinInlineSize<TLength> | Array<Property$MinInlineSize<TLength>>, + minWidth?: Property$MinWidth<TLength> | Array<Property$MinWidth<TLength>>, + mixBlendMode?: Property$MixBlendMode | Array<Property$MixBlendMode>, + motionDistance?: Property$OffsetDistance<TLength> | Array<Property$OffsetDistance<TLength>>, + motionPath?: Property$OffsetPath | Array<Property$OffsetPath>, + motionRotation?: Property$OffsetRotate | Array<Property$OffsetRotate>, + objectFit?: Property$ObjectFit | Array<Property$ObjectFit>, + objectPosition?: Property$ObjectPosition<TLength> | Array<Property$ObjectPosition<TLength>>, + offsetAnchor?: Property$OffsetAnchor<TLength> | Array<Property$OffsetAnchor<TLength>>, + offsetDistance?: Property$OffsetDistance<TLength> | Array<Property$OffsetDistance<TLength>>, + offsetPath?: Property$OffsetPath | Array<Property$OffsetPath>, + offsetPosition?: Property$OffsetPosition<TLength> | Array<Property$OffsetPosition<TLength>>, + offsetRotate?: Property$OffsetRotate | Array<Property$OffsetRotate>, + offsetRotation?: Property$OffsetRotate | Array<Property$OffsetRotate>, + opacity?: Property$Opacity | Array<Property$Opacity>, + order?: Property$Order | Array<Property$Order>, + orphans?: Property$Orphans | Array<Property$Orphans>, + outlineColor?: Property$OutlineColor | Array<Property$OutlineColor>, + outlineOffset?: Property$OutlineOffset<TLength> | Array<Property$OutlineOffset<TLength>>, + outlineStyle?: Property$OutlineStyle | Array<Property$OutlineStyle>, + outlineWidth?: Property$OutlineWidth<TLength> | Array<Property$OutlineWidth<TLength>>, + overflowAnchor?: Property$OverflowAnchor | Array<Property$OverflowAnchor>, + overflowBlock?: Property$OverflowBlock | Array<Property$OverflowBlock>, + overflowClipBox?: Property$OverflowClipBox | Array<Property$OverflowClipBox>, + overflowClipMargin?: Property$OverflowClipMargin<TLength> | Array<Property$OverflowClipMargin<TLength>>, + overflowInline?: Property$OverflowInline | Array<Property$OverflowInline>, + overflowWrap?: Property$OverflowWrap | Array<Property$OverflowWrap>, + overflowX?: Property$OverflowX | Array<Property$OverflowX>, + overflowY?: Property$OverflowY | Array<Property$OverflowY>, + overlay?: Property$Overlay | Array<Property$Overlay>, + overscrollBehaviorBlock?: Property$OverscrollBehaviorBlock | Array<Property$OverscrollBehaviorBlock>, + overscrollBehaviorInline?: Property$OverscrollBehaviorInline | Array<Property$OverscrollBehaviorInline>, + overscrollBehaviorX?: Property$OverscrollBehaviorX | Array<Property$OverscrollBehaviorX>, + overscrollBehaviorY?: Property$OverscrollBehaviorY | Array<Property$OverscrollBehaviorY>, + paddingBlockEnd?: Property$PaddingBlockEnd<TLength> | Array<Property$PaddingBlockEnd<TLength>>, + paddingBlockStart?: Property$PaddingBlockStart<TLength> | Array<Property$PaddingBlockStart<TLength>>, + paddingBottom?: Property$PaddingBottom<TLength> | Array<Property$PaddingBottom<TLength>>, + paddingInlineEnd?: Property$PaddingInlineEnd<TLength> | Array<Property$PaddingInlineEnd<TLength>>, + paddingInlineStart?: Property$PaddingInlineStart<TLength> | Array<Property$PaddingInlineStart<TLength>>, + paddingLeft?: Property$PaddingLeft<TLength> | Array<Property$PaddingLeft<TLength>>, + paddingRight?: Property$PaddingRight<TLength> | Array<Property$PaddingRight<TLength>>, + paddingTop?: Property$PaddingTop<TLength> | Array<Property$PaddingTop<TLength>>, + page?: Property$Page | Array<Property$Page>, + pageBreakAfter?: Property$PageBreakAfter | Array<Property$PageBreakAfter>, + pageBreakBefore?: Property$PageBreakBefore | Array<Property$PageBreakBefore>, + pageBreakInside?: Property$PageBreakInside | Array<Property$PageBreakInside>, + paintOrder?: Property$PaintOrder | Array<Property$PaintOrder>, + perspective?: Property$Perspective<TLength> | Array<Property$Perspective<TLength>>, + perspectiveOrigin?: Property$PerspectiveOrigin<TLength> | Array<Property$PerspectiveOrigin<TLength>>, + pointerEvents?: Property$PointerEvents | Array<Property$PointerEvents>, + position?: Property$Position | Array<Property$Position>, + printColorAdjust?: Property$PrintColorAdjust | Array<Property$PrintColorAdjust>, + quotes?: Property$Quotes | Array<Property$Quotes>, + resize?: Property$Resize | Array<Property$Resize>, + right?: Property$Right<TLength> | Array<Property$Right<TLength>>, + rotate?: Property$Rotate | Array<Property$Rotate>, + rowGap?: Property$RowGap<TLength> | Array<Property$RowGap<TLength>>, + rubyAlign?: Property$RubyAlign | Array<Property$RubyAlign>, + rubyMerge?: Property$RubyMerge | Array<Property$RubyMerge>, + rubyPosition?: Property$RubyPosition | Array<Property$RubyPosition>, + scale?: Property$Scale | Array<Property$Scale>, + scrollBehavior?: Property$ScrollBehavior | Array<Property$ScrollBehavior>, + scrollMarginBlockEnd?: Property$ScrollMarginBlockEnd<TLength> | Array<Property$ScrollMarginBlockEnd<TLength>>, + scrollMarginBlockStart?: Property$ScrollMarginBlockStart<TLength> | Array<Property$ScrollMarginBlockStart<TLength>>, + scrollMarginBottom?: Property$ScrollMarginBottom<TLength> | Array<Property$ScrollMarginBottom<TLength>>, + scrollMarginInlineEnd?: Property$ScrollMarginInlineEnd<TLength> | Array<Property$ScrollMarginInlineEnd<TLength>>, + scrollMarginInlineStart?: Property$ScrollMarginInlineStart<TLength> | Array<Property$ScrollMarginInlineStart<TLength>>, + scrollMarginLeft?: Property$ScrollMarginLeft<TLength> | Array<Property$ScrollMarginLeft<TLength>>, + scrollMarginRight?: Property$ScrollMarginRight<TLength> | Array<Property$ScrollMarginRight<TLength>>, + scrollMarginTop?: Property$ScrollMarginTop<TLength> | Array<Property$ScrollMarginTop<TLength>>, + scrollPaddingBlockEnd?: Property$ScrollPaddingBlockEnd<TLength> | Array<Property$ScrollPaddingBlockEnd<TLength>>, + scrollPaddingBlockStart?: Property$ScrollPaddingBlockStart<TLength> | Array<Property$ScrollPaddingBlockStart<TLength>>, + scrollPaddingBottom?: Property$ScrollPaddingBottom<TLength> | Array<Property$ScrollPaddingBottom<TLength>>, + scrollPaddingInlineEnd?: Property$ScrollPaddingInlineEnd<TLength> | Array<Property$ScrollPaddingInlineEnd<TLength>>, + scrollPaddingInlineStart?: Property$ScrollPaddingInlineStart<TLength> | Array<Property$ScrollPaddingInlineStart<TLength>>, + scrollPaddingLeft?: Property$ScrollPaddingLeft<TLength> | Array<Property$ScrollPaddingLeft<TLength>>, + scrollPaddingRight?: Property$ScrollPaddingRight<TLength> | Array<Property$ScrollPaddingRight<TLength>>, + scrollPaddingTop?: Property$ScrollPaddingTop<TLength> | Array<Property$ScrollPaddingTop<TLength>>, + scrollSnapAlign?: Property$ScrollSnapAlign | Array<Property$ScrollSnapAlign>, + scrollSnapMarginBottom?: Property$ScrollMarginBottom<TLength> | Array<Property$ScrollMarginBottom<TLength>>, + scrollSnapMarginLeft?: Property$ScrollMarginLeft<TLength> | Array<Property$ScrollMarginLeft<TLength>>, + scrollSnapMarginRight?: Property$ScrollMarginRight<TLength> | Array<Property$ScrollMarginRight<TLength>>, + scrollSnapMarginTop?: Property$ScrollMarginTop<TLength> | Array<Property$ScrollMarginTop<TLength>>, + scrollSnapStop?: Property$ScrollSnapStop | Array<Property$ScrollSnapStop>, + scrollSnapType?: Property$ScrollSnapType | Array<Property$ScrollSnapType>, + scrollTimelineAxis?: Property$ScrollTimelineAxis | Array<Property$ScrollTimelineAxis>, + scrollTimelineName?: Property$ScrollTimelineName | Array<Property$ScrollTimelineName>, + scrollbarColor?: Property$ScrollbarColor | Array<Property$ScrollbarColor>, + scrollbarGutter?: Property$ScrollbarGutter | Array<Property$ScrollbarGutter>, + scrollbarWidth?: Property$ScrollbarWidth | Array<Property$ScrollbarWidth>, + shapeImageThreshold?: Property$ShapeImageThreshold | Array<Property$ShapeImageThreshold>, + shapeMargin?: Property$ShapeMargin<TLength> | Array<Property$ShapeMargin<TLength>>, + shapeOutside?: Property$ShapeOutside | Array<Property$ShapeOutside>, + tabSize?: Property$TabSize<TLength> | Array<Property$TabSize<TLength>>, + tableLayout?: Property$TableLayout | Array<Property$TableLayout>, + textAlign?: Property$TextAlign | Array<Property$TextAlign>, + textAlignLast?: Property$TextAlignLast | Array<Property$TextAlignLast>, + textCombineUpright?: Property$TextCombineUpright | Array<Property$TextCombineUpright>, + textDecorationColor?: Property$TextDecorationColor | Array<Property$TextDecorationColor>, + textDecorationLine?: Property$TextDecorationLine | Array<Property$TextDecorationLine>, + textDecorationSkip?: Property$TextDecorationSkip | Array<Property$TextDecorationSkip>, + textDecorationSkipInk?: Property$TextDecorationSkipInk | Array<Property$TextDecorationSkipInk>, + textDecorationStyle?: Property$TextDecorationStyle | Array<Property$TextDecorationStyle>, + textDecorationThickness?: Property$TextDecorationThickness<TLength> | Array<Property$TextDecorationThickness<TLength>>, + textEmphasisColor?: Property$TextEmphasisColor | Array<Property$TextEmphasisColor>, + textEmphasisPosition?: Property$TextEmphasisPosition | Array<Property$TextEmphasisPosition>, + textEmphasisStyle?: Property$TextEmphasisStyle | Array<Property$TextEmphasisStyle>, + textIndent?: Property$TextIndent<TLength> | Array<Property$TextIndent<TLength>>, + textJustify?: Property$TextJustify | Array<Property$TextJustify>, + textOrientation?: Property$TextOrientation | Array<Property$TextOrientation>, + textOverflow?: Property$TextOverflow | Array<Property$TextOverflow>, + textRendering?: Property$TextRendering | Array<Property$TextRendering>, + textShadow?: Property$TextShadow | Array<Property$TextShadow>, + textSizeAdjust?: Property$TextSizeAdjust | Array<Property$TextSizeAdjust>, + textTransform?: Property$TextTransform | Array<Property$TextTransform>, + textUnderlineOffset?: Property$TextUnderlineOffset<TLength> | Array<Property$TextUnderlineOffset<TLength>>, + textUnderlinePosition?: Property$TextUnderlinePosition | Array<Property$TextUnderlinePosition>, + textWrap?: Property$TextWrap | Array<Property$TextWrap>, + timelineScope?: Property$TimelineScope | Array<Property$TimelineScope>, + top?: Property$Top<TLength> | Array<Property$Top<TLength>>, + touchAction?: Property$TouchAction | Array<Property$TouchAction>, + transform?: Property$Transform | Array<Property$Transform>, + transformBox?: Property$TransformBox | Array<Property$TransformBox>, + transformOrigin?: Property$TransformOrigin<TLength> | Array<Property$TransformOrigin<TLength>>, + transformStyle?: Property$TransformStyle | Array<Property$TransformStyle>, + transitionBehavior?: Property$TransitionBehavior | Array<Property$TransitionBehavior>, + transitionDelay?: Property$TransitionDelay<TTime> | Array<Property$TransitionDelay<TTime>>, + transitionDuration?: Property$TransitionDuration<TTime> | Array<Property$TransitionDuration<TTime>>, + transitionProperty?: Property$TransitionProperty | Array<Property$TransitionProperty>, + transitionTimingFunction?: Property$TransitionTimingFunction | Array<Property$TransitionTimingFunction>, + translate?: Property$Translate<TLength> | Array<Property$Translate<TLength>>, + unicodeBidi?: Property$UnicodeBidi | Array<Property$UnicodeBidi>, + userSelect?: Property$UserSelect | Array<Property$UserSelect>, + verticalAlign?: Property$VerticalAlign<TLength> | Array<Property$VerticalAlign<TLength>>, + viewTimelineAxis?: Property$ViewTimelineAxis | Array<Property$ViewTimelineAxis>, + viewTimelineInset?: Property$ViewTimelineInset<TLength> | Array<Property$ViewTimelineInset<TLength>>, + viewTimelineName?: Property$ViewTimelineName | Array<Property$ViewTimelineName>, + viewTransitionName?: Property$ViewTransitionName | Array<Property$ViewTransitionName>, + visibility?: Property$Visibility | Array<Property$Visibility>, + whiteSpace?: Property$WhiteSpace | Array<Property$WhiteSpace>, + whiteSpaceCollapse?: Property$WhiteSpaceCollapse | Array<Property$WhiteSpaceCollapse>, + whiteSpaceTrim?: Property$WhiteSpaceTrim | Array<Property$WhiteSpaceTrim>, + widows?: Property$Widows | Array<Property$Widows>, + width?: Property$Width<TLength> | Array<Property$Width<TLength>>, + willChange?: Property$WillChange | Array<Property$WillChange>, + wordBreak?: Property$WordBreak | Array<Property$WordBreak>, + wordSpacing?: Property$WordSpacing<TLength> | Array<Property$WordSpacing<TLength>>, + wordWrap?: Property$WordWrap | Array<Property$WordWrap>, + writingMode?: Property$WritingMode | Array<Property$WritingMode>, + zIndex?: Property$ZIndex | Array<Property$ZIndex>, + zoom?: Property$Zoom | Array<Property$Zoom>, +|}; + +export type StandardShorthandPropertiesFallback<TLength = string | 0, TTime = string> = {| + all?: Property$All | Array<Property$All>, + animation?: Property$Animation<TTime> | Array<Property$Animation<TTime>>, + animationRange?: Property$AnimationRange<TLength> | Array<Property$AnimationRange<TLength>>, + background?: Property$Background<TLength> | Array<Property$Background<TLength>>, + backgroundPosition?: Property$BackgroundPosition<TLength> | Array<Property$BackgroundPosition<TLength>>, + border?: Property$Border<TLength> | Array<Property$Border<TLength>>, + borderBlock?: Property$BorderBlock<TLength> | Array<Property$BorderBlock<TLength>>, + borderBlockEnd?: Property$BorderBlockEnd<TLength> | Array<Property$BorderBlockEnd<TLength>>, + borderBlockStart?: Property$BorderBlockStart<TLength> | Array<Property$BorderBlockStart<TLength>>, + borderBottom?: Property$BorderBottom<TLength> | Array<Property$BorderBottom<TLength>>, + borderColor?: Property$BorderColor | Array<Property$BorderColor>, + borderImage?: Property$BorderImage | Array<Property$BorderImage>, + borderInline?: Property$BorderInline<TLength> | Array<Property$BorderInline<TLength>>, + borderInlineEnd?: Property$BorderInlineEnd<TLength> | Array<Property$BorderInlineEnd<TLength>>, + borderInlineStart?: Property$BorderInlineStart<TLength> | Array<Property$BorderInlineStart<TLength>>, + borderLeft?: Property$BorderLeft<TLength> | Array<Property$BorderLeft<TLength>>, + borderRadius?: Property$BorderRadius<TLength> | Array<Property$BorderRadius<TLength>>, + borderRight?: Property$BorderRight<TLength> | Array<Property$BorderRight<TLength>>, + borderStyle?: Property$BorderStyle | Array<Property$BorderStyle>, + borderTop?: Property$BorderTop<TLength> | Array<Property$BorderTop<TLength>>, + borderWidth?: Property$BorderWidth<TLength> | Array<Property$BorderWidth<TLength>>, + caret?: Property$Caret | Array<Property$Caret>, + columnRule?: Property$ColumnRule<TLength> | Array<Property$ColumnRule<TLength>>, + columns?: Property$Columns<TLength> | Array<Property$Columns<TLength>>, + containIntrinsicSize?: Property$ContainIntrinsicSize<TLength> | Array<Property$ContainIntrinsicSize<TLength>>, + container?: Property$Container | Array<Property$Container>, + flex?: Property$Flex<TLength> | Array<Property$Flex<TLength>>, + flexFlow?: Property$FlexFlow | Array<Property$FlexFlow>, + font?: Property$Font | Array<Property$Font>, + gap?: Property$Gap<TLength> | Array<Property$Gap<TLength>>, + grid?: Property$Grid | Array<Property$Grid>, + gridArea?: Property$GridArea | Array<Property$GridArea>, + gridColumn?: Property$GridColumn | Array<Property$GridColumn>, + gridRow?: Property$GridRow | Array<Property$GridRow>, + gridTemplate?: Property$GridTemplate | Array<Property$GridTemplate>, + inset?: Property$Inset<TLength> | Array<Property$Inset<TLength>>, + insetBlock?: Property$InsetBlock<TLength> | Array<Property$InsetBlock<TLength>>, + insetInline?: Property$InsetInline<TLength> | Array<Property$InsetInline<TLength>>, + lineClamp?: Property$LineClamp | Array<Property$LineClamp>, + listStyle?: Property$ListStyle | Array<Property$ListStyle>, + margin?: Property$Margin<TLength> | Array<Property$Margin<TLength>>, + marginBlock?: Property$MarginBlock<TLength> | Array<Property$MarginBlock<TLength>>, + marginInline?: Property$MarginInline<TLength> | Array<Property$MarginInline<TLength>>, + mask?: Property$Mask<TLength> | Array<Property$Mask<TLength>>, + maskBorder?: Property$MaskBorder | Array<Property$MaskBorder>, + motion?: Property$Offset<TLength> | Array<Property$Offset<TLength>>, + offset?: Property$Offset<TLength> | Array<Property$Offset<TLength>>, + outline?: Property$Outline<TLength> | Array<Property$Outline<TLength>>, + overflow?: Property$Overflow | Array<Property$Overflow>, + overscrollBehavior?: Property$OverscrollBehavior | Array<Property$OverscrollBehavior>, + padding?: Property$Padding<TLength> | Array<Property$Padding<TLength>>, + paddingBlock?: Property$PaddingBlock<TLength> | Array<Property$PaddingBlock<TLength>>, + paddingInline?: Property$PaddingInline<TLength> | Array<Property$PaddingInline<TLength>>, + placeContent?: Property$PlaceContent | Array<Property$PlaceContent>, + placeItems?: Property$PlaceItems | Array<Property$PlaceItems>, + placeSelf?: Property$PlaceSelf | Array<Property$PlaceSelf>, + scrollMargin?: Property$ScrollMargin<TLength> | Array<Property$ScrollMargin<TLength>>, + scrollMarginBlock?: Property$ScrollMarginBlock<TLength> | Array<Property$ScrollMarginBlock<TLength>>, + scrollMarginInline?: Property$ScrollMarginInline<TLength> | Array<Property$ScrollMarginInline<TLength>>, + scrollPadding?: Property$ScrollPadding<TLength> | Array<Property$ScrollPadding<TLength>>, + scrollPaddingBlock?: Property$ScrollPaddingBlock<TLength> | Array<Property$ScrollPaddingBlock<TLength>>, + scrollPaddingInline?: Property$ScrollPaddingInline<TLength> | Array<Property$ScrollPaddingInline<TLength>>, + scrollSnapMargin?: Property$ScrollMargin<TLength> | Array<Property$ScrollMargin<TLength>>, + scrollTimeline?: Property$ScrollTimeline | Array<Property$ScrollTimeline>, + textDecoration?: Property$TextDecoration<TLength> | Array<Property$TextDecoration<TLength>>, + textEmphasis?: Property$TextEmphasis | Array<Property$TextEmphasis>, + transition?: Property$Transition<TTime> | Array<Property$Transition<TTime>>, + viewTimeline?: Property$ViewTimeline | Array<Property$ViewTimeline>, +|}; + +export type StandardPropertiesFallback<TLength = string | 0, TTime = string> = {| + ...StandardLonghandPropertiesFallback<TLength, TTime>, + ...StandardShorthandPropertiesFallback<TLength, TTime>, +|}; + +export type VendorLonghandPropertiesFallback<TLength = string | 0, TTime = string> = {| + MozAnimationDelay?: Property$AnimationDelay<TTime> | Array<Property$AnimationDelay<TTime>>, + MozAnimationDirection?: Property$AnimationDirection | Array<Property$AnimationDirection>, + MozAnimationDuration?: Property$AnimationDuration<TTime> | Array<Property$AnimationDuration<TTime>>, + MozAnimationFillMode?: Property$AnimationFillMode | Array<Property$AnimationFillMode>, + MozAnimationIterationCount?: Property$AnimationIterationCount | Array<Property$AnimationIterationCount>, + MozAnimationName?: Property$AnimationName | Array<Property$AnimationName>, + MozAnimationPlayState?: Property$AnimationPlayState | Array<Property$AnimationPlayState>, + MozAnimationTimingFunction?: Property$AnimationTimingFunction | Array<Property$AnimationTimingFunction>, + MozAppearance?: Property$MozAppearance | Array<Property$MozAppearance>, + MozBinding?: Property$MozBinding | Array<Property$MozBinding>, + MozBorderBottomColors?: Property$MozBorderBottomColors | Array<Property$MozBorderBottomColors>, + MozBorderEndColor?: Property$BorderInlineEndColor | Array<Property$BorderInlineEndColor>, + MozBorderEndStyle?: Property$BorderInlineEndStyle | Array<Property$BorderInlineEndStyle>, + MozBorderEndWidth?: Property$BorderInlineEndWidth<TLength> | Array<Property$BorderInlineEndWidth<TLength>>, + MozBorderLeftColors?: Property$MozBorderLeftColors | Array<Property$MozBorderLeftColors>, + MozBorderRightColors?: Property$MozBorderRightColors | Array<Property$MozBorderRightColors>, + MozBorderStartColor?: Property$BorderInlineStartColor | Array<Property$BorderInlineStartColor>, + MozBorderStartStyle?: Property$BorderInlineStartStyle | Array<Property$BorderInlineStartStyle>, + MozBorderTopColors?: Property$MozBorderTopColors | Array<Property$MozBorderTopColors>, + MozBoxSizing?: Property$BoxSizing | Array<Property$BoxSizing>, + MozColumnCount?: Property$ColumnCount | Array<Property$ColumnCount>, + MozColumnFill?: Property$ColumnFill | Array<Property$ColumnFill>, + MozColumnRuleColor?: Property$ColumnRuleColor | Array<Property$ColumnRuleColor>, + MozColumnRuleStyle?: Property$ColumnRuleStyle | Array<Property$ColumnRuleStyle>, + MozColumnRuleWidth?: Property$ColumnRuleWidth<TLength> | Array<Property$ColumnRuleWidth<TLength>>, + MozColumnWidth?: Property$ColumnWidth<TLength> | Array<Property$ColumnWidth<TLength>>, + MozContextProperties?: Property$MozContextProperties | Array<Property$MozContextProperties>, + MozFontFeatureSettings?: Property$FontFeatureSettings | Array<Property$FontFeatureSettings>, + MozFontLanguageOverride?: Property$FontLanguageOverride | Array<Property$FontLanguageOverride>, + MozHyphens?: Property$Hyphens | Array<Property$Hyphens>, + MozImageRegion?: Property$MozImageRegion | Array<Property$MozImageRegion>, + MozMarginEnd?: Property$MarginInlineEnd<TLength> | Array<Property$MarginInlineEnd<TLength>>, + MozMarginStart?: Property$MarginInlineStart<TLength> | Array<Property$MarginInlineStart<TLength>>, + MozOrient?: Property$MozOrient | Array<Property$MozOrient>, + MozOsxFontSmoothing?: Property$FontSmooth<TLength> | Array<Property$FontSmooth<TLength>>, + MozOutlineRadiusBottomleft?: Property$MozOutlineRadiusBottomleft<TLength> | Array<Property$MozOutlineRadiusBottomleft<TLength>>, + MozOutlineRadiusBottomright?: Property$MozOutlineRadiusBottomright<TLength> | Array<Property$MozOutlineRadiusBottomright<TLength>>, + MozOutlineRadiusTopleft?: Property$MozOutlineRadiusTopleft<TLength> | Array<Property$MozOutlineRadiusTopleft<TLength>>, + MozOutlineRadiusTopright?: Property$MozOutlineRadiusTopright<TLength> | Array<Property$MozOutlineRadiusTopright<TLength>>, + MozPaddingEnd?: Property$PaddingInlineEnd<TLength> | Array<Property$PaddingInlineEnd<TLength>>, + MozPaddingStart?: Property$PaddingInlineStart<TLength> | Array<Property$PaddingInlineStart<TLength>>, + MozStackSizing?: Property$MozStackSizing | Array<Property$MozStackSizing>, + MozTabSize?: Property$TabSize<TLength> | Array<Property$TabSize<TLength>>, + MozTextBlink?: Property$MozTextBlink | Array<Property$MozTextBlink>, + MozTextSizeAdjust?: Property$TextSizeAdjust | Array<Property$TextSizeAdjust>, + MozUserFocus?: Property$MozUserFocus | Array<Property$MozUserFocus>, + MozUserModify?: Property$MozUserModify | Array<Property$MozUserModify>, + MozUserSelect?: Property$UserSelect | Array<Property$UserSelect>, + MozWindowDragging?: Property$MozWindowDragging | Array<Property$MozWindowDragging>, + MozWindowShadow?: Property$MozWindowShadow | Array<Property$MozWindowShadow>, + msAccelerator?: Property$MsAccelerator | Array<Property$MsAccelerator>, + msBlockProgression?: Property$MsBlockProgression | Array<Property$MsBlockProgression>, + msContentZoomChaining?: Property$MsContentZoomChaining | Array<Property$MsContentZoomChaining>, + msContentZoomLimitMax?: Property$MsContentZoomLimitMax | Array<Property$MsContentZoomLimitMax>, + msContentZoomLimitMin?: Property$MsContentZoomLimitMin | Array<Property$MsContentZoomLimitMin>, + msContentZoomSnapPoints?: Property$MsContentZoomSnapPoints | Array<Property$MsContentZoomSnapPoints>, + msContentZoomSnapType?: Property$MsContentZoomSnapType | Array<Property$MsContentZoomSnapType>, + msContentZooming?: Property$MsContentZooming | Array<Property$MsContentZooming>, + msFilter?: Property$MsFilter | Array<Property$MsFilter>, + msFlexDirection?: Property$FlexDirection | Array<Property$FlexDirection>, + msFlexPositive?: Property$FlexGrow | Array<Property$FlexGrow>, + msFlowFrom?: Property$MsFlowFrom | Array<Property$MsFlowFrom>, + msFlowInto?: Property$MsFlowInto | Array<Property$MsFlowInto>, + msGridColumns?: Property$MsGridColumns<TLength> | Array<Property$MsGridColumns<TLength>>, + msGridRows?: Property$MsGridRows<TLength> | Array<Property$MsGridRows<TLength>>, + msHighContrastAdjust?: Property$MsHighContrastAdjust | Array<Property$MsHighContrastAdjust>, + msHyphenateLimitChars?: Property$MsHyphenateLimitChars | Array<Property$MsHyphenateLimitChars>, + msHyphenateLimitLines?: Property$MsHyphenateLimitLines | Array<Property$MsHyphenateLimitLines>, + msHyphenateLimitZone?: Property$MsHyphenateLimitZone<TLength> | Array<Property$MsHyphenateLimitZone<TLength>>, + msHyphens?: Property$Hyphens | Array<Property$Hyphens>, + msImeAlign?: Property$MsImeAlign | Array<Property$MsImeAlign>, + msLineBreak?: Property$LineBreak | Array<Property$LineBreak>, + msOrder?: Property$Order | Array<Property$Order>, + msOverflowStyle?: Property$MsOverflowStyle | Array<Property$MsOverflowStyle>, + msOverflowX?: Property$OverflowX | Array<Property$OverflowX>, + msOverflowY?: Property$OverflowY | Array<Property$OverflowY>, + msScrollChaining?: Property$MsScrollChaining | Array<Property$MsScrollChaining>, + msScrollLimitXMax?: Property$MsScrollLimitXMax<TLength> | Array<Property$MsScrollLimitXMax<TLength>>, + msScrollLimitXMin?: Property$MsScrollLimitXMin<TLength> | Array<Property$MsScrollLimitXMin<TLength>>, + msScrollLimitYMax?: Property$MsScrollLimitYMax<TLength> | Array<Property$MsScrollLimitYMax<TLength>>, + msScrollLimitYMin?: Property$MsScrollLimitYMin<TLength> | Array<Property$MsScrollLimitYMin<TLength>>, + msScrollRails?: Property$MsScrollRails | Array<Property$MsScrollRails>, + msScrollSnapPointsX?: Property$MsScrollSnapPointsX | Array<Property$MsScrollSnapPointsX>, + msScrollSnapPointsY?: Property$MsScrollSnapPointsY | Array<Property$MsScrollSnapPointsY>, + msScrollSnapType?: Property$MsScrollSnapType | Array<Property$MsScrollSnapType>, + msScrollTranslation?: Property$MsScrollTranslation | Array<Property$MsScrollTranslation>, + msScrollbar3dlightColor?: Property$MsScrollbar3dlightColor | Array<Property$MsScrollbar3dlightColor>, + msScrollbarArrowColor?: Property$MsScrollbarArrowColor | Array<Property$MsScrollbarArrowColor>, + msScrollbarBaseColor?: Property$MsScrollbarBaseColor | Array<Property$MsScrollbarBaseColor>, + msScrollbarDarkshadowColor?: Property$MsScrollbarDarkshadowColor | Array<Property$MsScrollbarDarkshadowColor>, + msScrollbarFaceColor?: Property$MsScrollbarFaceColor | Array<Property$MsScrollbarFaceColor>, + msScrollbarHighlightColor?: Property$MsScrollbarHighlightColor | Array<Property$MsScrollbarHighlightColor>, + msScrollbarShadowColor?: Property$MsScrollbarShadowColor | Array<Property$MsScrollbarShadowColor>, + msScrollbarTrackColor?: Property$MsScrollbarTrackColor | Array<Property$MsScrollbarTrackColor>, + msTextAutospace?: Property$MsTextAutospace | Array<Property$MsTextAutospace>, + msTextCombineHorizontal?: Property$TextCombineUpright | Array<Property$TextCombineUpright>, + msTextOverflow?: Property$TextOverflow | Array<Property$TextOverflow>, + msTouchAction?: Property$TouchAction | Array<Property$TouchAction>, + msTouchSelect?: Property$MsTouchSelect | Array<Property$MsTouchSelect>, + msTransform?: Property$Transform | Array<Property$Transform>, + msTransformOrigin?: Property$TransformOrigin<TLength> | Array<Property$TransformOrigin<TLength>>, + msTransitionDelay?: Property$TransitionDelay<TTime> | Array<Property$TransitionDelay<TTime>>, + msTransitionDuration?: Property$TransitionDuration<TTime> | Array<Property$TransitionDuration<TTime>>, + msTransitionProperty?: Property$TransitionProperty | Array<Property$TransitionProperty>, + msTransitionTimingFunction?: Property$TransitionTimingFunction | Array<Property$TransitionTimingFunction>, + msUserSelect?: Property$MsUserSelect | Array<Property$MsUserSelect>, + msWordBreak?: Property$WordBreak | Array<Property$WordBreak>, + msWrapFlow?: Property$MsWrapFlow | Array<Property$MsWrapFlow>, + msWrapMargin?: Property$MsWrapMargin<TLength> | Array<Property$MsWrapMargin<TLength>>, + msWrapThrough?: Property$MsWrapThrough | Array<Property$MsWrapThrough>, + msWritingMode?: Property$WritingMode | Array<Property$WritingMode>, + WebkitAlignContent?: Property$AlignContent | Array<Property$AlignContent>, + WebkitAlignItems?: Property$AlignItems | Array<Property$AlignItems>, + WebkitAlignSelf?: Property$AlignSelf | Array<Property$AlignSelf>, + WebkitAnimationDelay?: Property$AnimationDelay<TTime> | Array<Property$AnimationDelay<TTime>>, + WebkitAnimationDirection?: Property$AnimationDirection | Array<Property$AnimationDirection>, + WebkitAnimationDuration?: Property$AnimationDuration<TTime> | Array<Property$AnimationDuration<TTime>>, + WebkitAnimationFillMode?: Property$AnimationFillMode | Array<Property$AnimationFillMode>, + WebkitAnimationIterationCount?: Property$AnimationIterationCount | Array<Property$AnimationIterationCount>, + WebkitAnimationName?: Property$AnimationName | Array<Property$AnimationName>, + WebkitAnimationPlayState?: Property$AnimationPlayState | Array<Property$AnimationPlayState>, + WebkitAnimationTimingFunction?: Property$AnimationTimingFunction | Array<Property$AnimationTimingFunction>, + WebkitAppearance?: Property$WebkitAppearance | Array<Property$WebkitAppearance>, + WebkitBackdropFilter?: Property$BackdropFilter | Array<Property$BackdropFilter>, + WebkitBackfaceVisibility?: Property$BackfaceVisibility | Array<Property$BackfaceVisibility>, + WebkitBackgroundClip?: Property$BackgroundClip | Array<Property$BackgroundClip>, + WebkitBackgroundOrigin?: Property$BackgroundOrigin | Array<Property$BackgroundOrigin>, + WebkitBackgroundSize?: Property$BackgroundSize<TLength> | Array<Property$BackgroundSize<TLength>>, + WebkitBorderBeforeColor?: Property$WebkitBorderBeforeColor | Array<Property$WebkitBorderBeforeColor>, + WebkitBorderBeforeStyle?: Property$WebkitBorderBeforeStyle | Array<Property$WebkitBorderBeforeStyle>, + WebkitBorderBeforeWidth?: Property$WebkitBorderBeforeWidth<TLength> | Array<Property$WebkitBorderBeforeWidth<TLength>>, + WebkitBorderBottomLeftRadius?: Property$BorderBottomLeftRadius<TLength> | Array<Property$BorderBottomLeftRadius<TLength>>, + WebkitBorderBottomRightRadius?: Property$BorderBottomRightRadius<TLength> | Array<Property$BorderBottomRightRadius<TLength>>, + WebkitBorderImageSlice?: Property$BorderImageSlice | Array<Property$BorderImageSlice>, + WebkitBorderTopLeftRadius?: Property$BorderTopLeftRadius<TLength> | Array<Property$BorderTopLeftRadius<TLength>>, + WebkitBorderTopRightRadius?: Property$BorderTopRightRadius<TLength> | Array<Property$BorderTopRightRadius<TLength>>, + WebkitBoxDecorationBreak?: Property$BoxDecorationBreak | Array<Property$BoxDecorationBreak>, + WebkitBoxReflect?: Property$WebkitBoxReflect<TLength> | Array<Property$WebkitBoxReflect<TLength>>, + WebkitBoxShadow?: Property$BoxShadow | Array<Property$BoxShadow>, + WebkitBoxSizing?: Property$BoxSizing | Array<Property$BoxSizing>, + WebkitClipPath?: Property$ClipPath | Array<Property$ClipPath>, + WebkitColumnCount?: Property$ColumnCount | Array<Property$ColumnCount>, + WebkitColumnFill?: Property$ColumnFill | Array<Property$ColumnFill>, + WebkitColumnRuleColor?: Property$ColumnRuleColor | Array<Property$ColumnRuleColor>, + WebkitColumnRuleStyle?: Property$ColumnRuleStyle | Array<Property$ColumnRuleStyle>, + WebkitColumnRuleWidth?: Property$ColumnRuleWidth<TLength> | Array<Property$ColumnRuleWidth<TLength>>, + WebkitColumnSpan?: Property$ColumnSpan | Array<Property$ColumnSpan>, + WebkitColumnWidth?: Property$ColumnWidth<TLength> | Array<Property$ColumnWidth<TLength>>, + WebkitFilter?: Property$Filter | Array<Property$Filter>, + WebkitFlexBasis?: Property$FlexBasis<TLength> | Array<Property$FlexBasis<TLength>>, + WebkitFlexDirection?: Property$FlexDirection | Array<Property$FlexDirection>, + WebkitFlexGrow?: Property$FlexGrow | Array<Property$FlexGrow>, + WebkitFlexShrink?: Property$FlexShrink | Array<Property$FlexShrink>, + WebkitFlexWrap?: Property$FlexWrap | Array<Property$FlexWrap>, + WebkitFontFeatureSettings?: Property$FontFeatureSettings | Array<Property$FontFeatureSettings>, + WebkitFontKerning?: Property$FontKerning | Array<Property$FontKerning>, + WebkitFontSmoothing?: Property$FontSmooth<TLength> | Array<Property$FontSmooth<TLength>>, + WebkitFontVariantLigatures?: Property$FontVariantLigatures | Array<Property$FontVariantLigatures>, + WebkitHyphenateCharacter?: Property$HyphenateCharacter | Array<Property$HyphenateCharacter>, + WebkitHyphens?: Property$Hyphens | Array<Property$Hyphens>, + WebkitInitialLetter?: Property$InitialLetter | Array<Property$InitialLetter>, + WebkitJustifyContent?: Property$JustifyContent | Array<Property$JustifyContent>, + WebkitLineBreak?: Property$LineBreak | Array<Property$LineBreak>, + WebkitLineClamp?: Property$WebkitLineClamp | Array<Property$WebkitLineClamp>, + WebkitMarginEnd?: Property$MarginInlineEnd<TLength> | Array<Property$MarginInlineEnd<TLength>>, + WebkitMarginStart?: Property$MarginInlineStart<TLength> | Array<Property$MarginInlineStart<TLength>>, + WebkitMaskAttachment?: Property$WebkitMaskAttachment | Array<Property$WebkitMaskAttachment>, + WebkitMaskBoxImageOutset?: Property$MaskBorderOutset<TLength> | Array<Property$MaskBorderOutset<TLength>>, + WebkitMaskBoxImageRepeat?: Property$MaskBorderRepeat | Array<Property$MaskBorderRepeat>, + WebkitMaskBoxImageSlice?: Property$MaskBorderSlice | Array<Property$MaskBorderSlice>, + WebkitMaskBoxImageSource?: Property$MaskBorderSource | Array<Property$MaskBorderSource>, + WebkitMaskBoxImageWidth?: Property$MaskBorderWidth<TLength> | Array<Property$MaskBorderWidth<TLength>>, + WebkitMaskClip?: Property$WebkitMaskClip | Array<Property$WebkitMaskClip>, + WebkitMaskComposite?: Property$WebkitMaskComposite | Array<Property$WebkitMaskComposite>, + WebkitMaskImage?: Property$WebkitMaskImage | Array<Property$WebkitMaskImage>, + WebkitMaskOrigin?: Property$WebkitMaskOrigin | Array<Property$WebkitMaskOrigin>, + WebkitMaskPosition?: Property$WebkitMaskPosition<TLength> | Array<Property$WebkitMaskPosition<TLength>>, + WebkitMaskPositionX?: Property$WebkitMaskPositionX<TLength> | Array<Property$WebkitMaskPositionX<TLength>>, + WebkitMaskPositionY?: Property$WebkitMaskPositionY<TLength> | Array<Property$WebkitMaskPositionY<TLength>>, + WebkitMaskRepeat?: Property$WebkitMaskRepeat | Array<Property$WebkitMaskRepeat>, + WebkitMaskRepeatX?: Property$WebkitMaskRepeatX | Array<Property$WebkitMaskRepeatX>, + WebkitMaskRepeatY?: Property$WebkitMaskRepeatY | Array<Property$WebkitMaskRepeatY>, + WebkitMaskSize?: Property$WebkitMaskSize<TLength> | Array<Property$WebkitMaskSize<TLength>>, + WebkitMaxInlineSize?: Property$MaxInlineSize<TLength> | Array<Property$MaxInlineSize<TLength>>, + WebkitOrder?: Property$Order | Array<Property$Order>, + WebkitOverflowScrolling?: Property$WebkitOverflowScrolling | Array<Property$WebkitOverflowScrolling>, + WebkitPaddingEnd?: Property$PaddingInlineEnd<TLength> | Array<Property$PaddingInlineEnd<TLength>>, + WebkitPaddingStart?: Property$PaddingInlineStart<TLength> | Array<Property$PaddingInlineStart<TLength>>, + WebkitPerspective?: Property$Perspective<TLength> | Array<Property$Perspective<TLength>>, + WebkitPerspectiveOrigin?: Property$PerspectiveOrigin<TLength> | Array<Property$PerspectiveOrigin<TLength>>, + WebkitPrintColorAdjust?: Property$PrintColorAdjust | Array<Property$PrintColorAdjust>, + WebkitRubyPosition?: Property$RubyPosition | Array<Property$RubyPosition>, + WebkitScrollSnapType?: Property$ScrollSnapType | Array<Property$ScrollSnapType>, + WebkitShapeMargin?: Property$ShapeMargin<TLength> | Array<Property$ShapeMargin<TLength>>, + WebkitTapHighlightColor?: Property$WebkitTapHighlightColor | Array<Property$WebkitTapHighlightColor>, + WebkitTextCombine?: Property$TextCombineUpright | Array<Property$TextCombineUpright>, + WebkitTextDecorationColor?: Property$TextDecorationColor | Array<Property$TextDecorationColor>, + WebkitTextDecorationLine?: Property$TextDecorationLine | Array<Property$TextDecorationLine>, + WebkitTextDecorationSkip?: Property$TextDecorationSkip | Array<Property$TextDecorationSkip>, + WebkitTextDecorationStyle?: Property$TextDecorationStyle | Array<Property$TextDecorationStyle>, + WebkitTextEmphasisColor?: Property$TextEmphasisColor | Array<Property$TextEmphasisColor>, + WebkitTextEmphasisPosition?: Property$TextEmphasisPosition | Array<Property$TextEmphasisPosition>, + WebkitTextEmphasisStyle?: Property$TextEmphasisStyle | Array<Property$TextEmphasisStyle>, + WebkitTextFillColor?: Property$WebkitTextFillColor | Array<Property$WebkitTextFillColor>, + WebkitTextOrientation?: Property$TextOrientation | Array<Property$TextOrientation>, + WebkitTextSizeAdjust?: Property$TextSizeAdjust | Array<Property$TextSizeAdjust>, + WebkitTextStrokeColor?: Property$WebkitTextStrokeColor | Array<Property$WebkitTextStrokeColor>, + WebkitTextStrokeWidth?: Property$WebkitTextStrokeWidth<TLength> | Array<Property$WebkitTextStrokeWidth<TLength>>, + WebkitTextUnderlinePosition?: Property$TextUnderlinePosition | Array<Property$TextUnderlinePosition>, + WebkitTouchCallout?: Property$WebkitTouchCallout | Array<Property$WebkitTouchCallout>, + WebkitTransform?: Property$Transform | Array<Property$Transform>, + WebkitTransformOrigin?: Property$TransformOrigin<TLength> | Array<Property$TransformOrigin<TLength>>, + WebkitTransformStyle?: Property$TransformStyle | Array<Property$TransformStyle>, + WebkitTransitionDelay?: Property$TransitionDelay<TTime> | Array<Property$TransitionDelay<TTime>>, + WebkitTransitionDuration?: Property$TransitionDuration<TTime> | Array<Property$TransitionDuration<TTime>>, + WebkitTransitionProperty?: Property$TransitionProperty | Array<Property$TransitionProperty>, + WebkitTransitionTimingFunction?: Property$TransitionTimingFunction | Array<Property$TransitionTimingFunction>, + WebkitUserModify?: Property$WebkitUserModify | Array<Property$WebkitUserModify>, + WebkitUserSelect?: Property$UserSelect | Array<Property$UserSelect>, + WebkitWritingMode?: Property$WritingMode | Array<Property$WritingMode>, +|}; + +export type VendorShorthandPropertiesFallback<TLength = string | 0, TTime = string> = {| + MozAnimation?: Property$Animation<TTime> | Array<Property$Animation<TTime>>, + MozBorderImage?: Property$BorderImage | Array<Property$BorderImage>, + MozColumnRule?: Property$ColumnRule<TLength> | Array<Property$ColumnRule<TLength>>, + MozColumns?: Property$Columns<TLength> | Array<Property$Columns<TLength>>, + MozOutlineRadius?: Property$MozOutlineRadius<TLength> | Array<Property$MozOutlineRadius<TLength>>, + msContentZoomLimit?: Property$MsContentZoomLimit | Array<Property$MsContentZoomLimit>, + msContentZoomSnap?: Property$MsContentZoomSnap | Array<Property$MsContentZoomSnap>, + msFlex?: Property$Flex<TLength> | Array<Property$Flex<TLength>>, + msScrollLimit?: Property$MsScrollLimit | Array<Property$MsScrollLimit>, + msScrollSnapX?: Property$MsScrollSnapX | Array<Property$MsScrollSnapX>, + msScrollSnapY?: Property$MsScrollSnapY | Array<Property$MsScrollSnapY>, + msTransition?: Property$Transition<TTime> | Array<Property$Transition<TTime>>, + WebkitAnimation?: Property$Animation<TTime> | Array<Property$Animation<TTime>>, + WebkitBorderBefore?: Property$WebkitBorderBefore<TLength> | Array<Property$WebkitBorderBefore<TLength>>, + WebkitBorderImage?: Property$BorderImage | Array<Property$BorderImage>, + WebkitBorderRadius?: Property$BorderRadius<TLength> | Array<Property$BorderRadius<TLength>>, + WebkitColumnRule?: Property$ColumnRule<TLength> | Array<Property$ColumnRule<TLength>>, + WebkitColumns?: Property$Columns<TLength> | Array<Property$Columns<TLength>>, + WebkitFlex?: Property$Flex<TLength> | Array<Property$Flex<TLength>>, + WebkitFlexFlow?: Property$FlexFlow | Array<Property$FlexFlow>, + WebkitMask?: Property$WebkitMask<TLength> | Array<Property$WebkitMask<TLength>>, + WebkitMaskBoxImage?: Property$MaskBorder | Array<Property$MaskBorder>, + WebkitTextEmphasis?: Property$TextEmphasis | Array<Property$TextEmphasis>, + WebkitTextStroke?: Property$WebkitTextStroke<TLength> | Array<Property$WebkitTextStroke<TLength>>, + WebkitTransition?: Property$Transition<TTime> | Array<Property$Transition<TTime>>, +|}; + +export type VendorPropertiesFallback<TLength = string | 0, TTime = string> = {| + ...VendorLonghandPropertiesFallback<TLength, TTime>, + ...VendorShorthandPropertiesFallback<TLength, TTime>, +|}; + +export type ObsoletePropertiesFallback<TLength = string | 0, TTime = string> = {| + azimuth?: Property$Azimuth | Array<Property$Azimuth>, + boxAlign?: Property$BoxAlign | Array<Property$BoxAlign>, + boxDirection?: Property$BoxDirection | Array<Property$BoxDirection>, + boxFlex?: Property$BoxFlex | Array<Property$BoxFlex>, + boxFlexGroup?: Property$BoxFlexGroup | Array<Property$BoxFlexGroup>, + boxLines?: Property$BoxLines | Array<Property$BoxLines>, + boxOrdinalGroup?: Property$BoxOrdinalGroup | Array<Property$BoxOrdinalGroup>, + boxOrient?: Property$BoxOrient | Array<Property$BoxOrient>, + boxPack?: Property$BoxPack | Array<Property$BoxPack>, + clip?: Property$Clip | Array<Property$Clip>, + gridColumnGap?: Property$GridColumnGap<TLength> | Array<Property$GridColumnGap<TLength>>, + gridGap?: Property$GridGap<TLength> | Array<Property$GridGap<TLength>>, + gridRowGap?: Property$GridRowGap<TLength> | Array<Property$GridRowGap<TLength>>, + imeMode?: Property$ImeMode | Array<Property$ImeMode>, + offsetBlock?: Property$InsetBlock<TLength> | Array<Property$InsetBlock<TLength>>, + offsetBlockEnd?: Property$InsetBlockEnd<TLength> | Array<Property$InsetBlockEnd<TLength>>, + offsetBlockStart?: Property$InsetBlockStart<TLength> | Array<Property$InsetBlockStart<TLength>>, + offsetInline?: Property$InsetInline<TLength> | Array<Property$InsetInline<TLength>>, + offsetInlineEnd?: Property$InsetInlineEnd<TLength> | Array<Property$InsetInlineEnd<TLength>>, + offsetInlineStart?: Property$InsetInlineStart<TLength> | Array<Property$InsetInlineStart<TLength>>, + scrollSnapCoordinate?: Property$ScrollSnapCoordinate<TLength> | Array<Property$ScrollSnapCoordinate<TLength>>, + scrollSnapDestination?: Property$ScrollSnapDestination<TLength> | Array<Property$ScrollSnapDestination<TLength>>, + scrollSnapPointsX?: Property$ScrollSnapPointsX | Array<Property$ScrollSnapPointsX>, + scrollSnapPointsY?: Property$ScrollSnapPointsY | Array<Property$ScrollSnapPointsY>, + scrollSnapTypeX?: Property$ScrollSnapTypeX | Array<Property$ScrollSnapTypeX>, + scrollSnapTypeY?: Property$ScrollSnapTypeY | Array<Property$ScrollSnapTypeY>, + KhtmlBoxAlign?: Property$BoxAlign | Array<Property$BoxAlign>, + KhtmlBoxDirection?: Property$BoxDirection | Array<Property$BoxDirection>, + KhtmlBoxFlex?: Property$BoxFlex | Array<Property$BoxFlex>, + KhtmlBoxFlexGroup?: Property$BoxFlexGroup | Array<Property$BoxFlexGroup>, + KhtmlBoxLines?: Property$BoxLines | Array<Property$BoxLines>, + KhtmlBoxOrdinalGroup?: Property$BoxOrdinalGroup | Array<Property$BoxOrdinalGroup>, + KhtmlBoxOrient?: Property$BoxOrient | Array<Property$BoxOrient>, + KhtmlBoxPack?: Property$BoxPack | Array<Property$BoxPack>, + KhtmlLineBreak?: Property$LineBreak | Array<Property$LineBreak>, + KhtmlOpacity?: Property$Opacity | Array<Property$Opacity>, + KhtmlUserSelect?: Property$UserSelect | Array<Property$UserSelect>, + MozBackfaceVisibility?: Property$BackfaceVisibility | Array<Property$BackfaceVisibility>, + MozBackgroundClip?: Property$BackgroundClip | Array<Property$BackgroundClip>, + MozBackgroundInlinePolicy?: Property$BoxDecorationBreak | Array<Property$BoxDecorationBreak>, + MozBackgroundOrigin?: Property$BackgroundOrigin | Array<Property$BackgroundOrigin>, + MozBackgroundSize?: Property$BackgroundSize<TLength> | Array<Property$BackgroundSize<TLength>>, + MozBorderRadius?: Property$BorderRadius<TLength> | Array<Property$BorderRadius<TLength>>, + MozBorderRadiusBottomleft?: Property$BorderBottomLeftRadius<TLength> | Array<Property$BorderBottomLeftRadius<TLength>>, + MozBorderRadiusBottomright?: Property$BorderBottomRightRadius<TLength> | Array<Property$BorderBottomRightRadius<TLength>>, + MozBorderRadiusTopleft?: Property$BorderTopLeftRadius<TLength> | Array<Property$BorderTopLeftRadius<TLength>>, + MozBorderRadiusTopright?: Property$BorderTopRightRadius<TLength> | Array<Property$BorderTopRightRadius<TLength>>, + MozBoxAlign?: Property$BoxAlign | Array<Property$BoxAlign>, + MozBoxDirection?: Property$BoxDirection | Array<Property$BoxDirection>, + MozBoxFlex?: Property$BoxFlex | Array<Property$BoxFlex>, + MozBoxOrdinalGroup?: Property$BoxOrdinalGroup | Array<Property$BoxOrdinalGroup>, + MozBoxOrient?: Property$BoxOrient | Array<Property$BoxOrient>, + MozBoxPack?: Property$BoxPack | Array<Property$BoxPack>, + MozBoxShadow?: Property$BoxShadow | Array<Property$BoxShadow>, + MozFloatEdge?: Property$MozFloatEdge | Array<Property$MozFloatEdge>, + MozForceBrokenImageIcon?: Property$MozForceBrokenImageIcon | Array<Property$MozForceBrokenImageIcon>, + MozOpacity?: Property$Opacity | Array<Property$Opacity>, + MozOutline?: Property$Outline<TLength> | Array<Property$Outline<TLength>>, + MozOutlineColor?: Property$OutlineColor | Array<Property$OutlineColor>, + MozOutlineStyle?: Property$OutlineStyle | Array<Property$OutlineStyle>, + MozOutlineWidth?: Property$OutlineWidth<TLength> | Array<Property$OutlineWidth<TLength>>, + MozPerspective?: Property$Perspective<TLength> | Array<Property$Perspective<TLength>>, + MozPerspectiveOrigin?: Property$PerspectiveOrigin<TLength> | Array<Property$PerspectiveOrigin<TLength>>, + MozTextAlignLast?: Property$TextAlignLast | Array<Property$TextAlignLast>, + MozTextDecorationColor?: Property$TextDecorationColor | Array<Property$TextDecorationColor>, + MozTextDecorationLine?: Property$TextDecorationLine | Array<Property$TextDecorationLine>, + MozTextDecorationStyle?: Property$TextDecorationStyle | Array<Property$TextDecorationStyle>, + MozTransform?: Property$Transform | Array<Property$Transform>, + MozTransformOrigin?: Property$TransformOrigin<TLength> | Array<Property$TransformOrigin<TLength>>, + MozTransformStyle?: Property$TransformStyle | Array<Property$TransformStyle>, + MozTransition?: Property$Transition<TTime> | Array<Property$Transition<TTime>>, + MozTransitionDelay?: Property$TransitionDelay<TTime> | Array<Property$TransitionDelay<TTime>>, + MozTransitionDuration?: Property$TransitionDuration<TTime> | Array<Property$TransitionDuration<TTime>>, + MozTransitionProperty?: Property$TransitionProperty | Array<Property$TransitionProperty>, + MozTransitionTimingFunction?: Property$TransitionTimingFunction | Array<Property$TransitionTimingFunction>, + MozUserInput?: Property$MozUserInput | Array<Property$MozUserInput>, + msImeMode?: Property$ImeMode | Array<Property$ImeMode>, + OAnimation?: Property$Animation<TTime> | Array<Property$Animation<TTime>>, + OAnimationDelay?: Property$AnimationDelay<TTime> | Array<Property$AnimationDelay<TTime>>, + OAnimationDirection?: Property$AnimationDirection | Array<Property$AnimationDirection>, + OAnimationDuration?: Property$AnimationDuration<TTime> | Array<Property$AnimationDuration<TTime>>, + OAnimationFillMode?: Property$AnimationFillMode | Array<Property$AnimationFillMode>, + OAnimationIterationCount?: Property$AnimationIterationCount | Array<Property$AnimationIterationCount>, + OAnimationName?: Property$AnimationName | Array<Property$AnimationName>, + OAnimationPlayState?: Property$AnimationPlayState | Array<Property$AnimationPlayState>, + OAnimationTimingFunction?: Property$AnimationTimingFunction | Array<Property$AnimationTimingFunction>, + OBackgroundSize?: Property$BackgroundSize<TLength> | Array<Property$BackgroundSize<TLength>>, + OBorderImage?: Property$BorderImage | Array<Property$BorderImage>, + OObjectFit?: Property$ObjectFit | Array<Property$ObjectFit>, + OObjectPosition?: Property$ObjectPosition<TLength> | Array<Property$ObjectPosition<TLength>>, + OTabSize?: Property$TabSize<TLength> | Array<Property$TabSize<TLength>>, + OTextOverflow?: Property$TextOverflow | Array<Property$TextOverflow>, + OTransform?: Property$Transform | Array<Property$Transform>, + OTransformOrigin?: Property$TransformOrigin<TLength> | Array<Property$TransformOrigin<TLength>>, + OTransition?: Property$Transition<TTime> | Array<Property$Transition<TTime>>, + OTransitionDelay?: Property$TransitionDelay<TTime> | Array<Property$TransitionDelay<TTime>>, + OTransitionDuration?: Property$TransitionDuration<TTime> | Array<Property$TransitionDuration<TTime>>, + OTransitionProperty?: Property$TransitionProperty | Array<Property$TransitionProperty>, + OTransitionTimingFunction?: Property$TransitionTimingFunction | Array<Property$TransitionTimingFunction>, + WebkitBoxAlign?: Property$BoxAlign | Array<Property$BoxAlign>, + WebkitBoxDirection?: Property$BoxDirection | Array<Property$BoxDirection>, + WebkitBoxFlex?: Property$BoxFlex | Array<Property$BoxFlex>, + WebkitBoxFlexGroup?: Property$BoxFlexGroup | Array<Property$BoxFlexGroup>, + WebkitBoxLines?: Property$BoxLines | Array<Property$BoxLines>, + WebkitBoxOrdinalGroup?: Property$BoxOrdinalGroup | Array<Property$BoxOrdinalGroup>, + WebkitBoxOrient?: Property$BoxOrient | Array<Property$BoxOrient>, + WebkitBoxPack?: Property$BoxPack | Array<Property$BoxPack>, +|}; + +export type SvgPropertiesFallback<TLength = string | 0, TTime = string> = {| + alignmentBaseline?: Property$AlignmentBaseline | Array<Property$AlignmentBaseline>, + baselineShift?: Property$BaselineShift<TLength> | Array<Property$BaselineShift<TLength>>, + clip?: Property$Clip | Array<Property$Clip>, + clipPath?: Property$ClipPath | Array<Property$ClipPath>, + clipRule?: Property$ClipRule | Array<Property$ClipRule>, + color?: Property$Color | Array<Property$Color>, + colorInterpolation?: Property$ColorInterpolation | Array<Property$ColorInterpolation>, + colorRendering?: Property$ColorRendering | Array<Property$ColorRendering>, + cursor?: Property$Cursor | Array<Property$Cursor>, + direction?: Property$Direction | Array<Property$Direction>, + display?: Property$Display | Array<Property$Display>, + dominantBaseline?: Property$DominantBaseline | Array<Property$DominantBaseline>, + fill?: Property$Fill | Array<Property$Fill>, + fillOpacity?: Property$FillOpacity | Array<Property$FillOpacity>, + fillRule?: Property$FillRule | Array<Property$FillRule>, + filter?: Property$Filter | Array<Property$Filter>, + floodColor?: Property$FloodColor | Array<Property$FloodColor>, + floodOpacity?: Property$FloodOpacity | Array<Property$FloodOpacity>, + font?: Property$Font | Array<Property$Font>, + fontFamily?: Property$FontFamily | Array<Property$FontFamily>, + fontSize?: Property$FontSize<TLength> | Array<Property$FontSize<TLength>>, + fontSizeAdjust?: Property$FontSizeAdjust | Array<Property$FontSizeAdjust>, + fontStretch?: Property$FontStretch | Array<Property$FontStretch>, + fontStyle?: Property$FontStyle | Array<Property$FontStyle>, + fontVariant?: Property$FontVariant | Array<Property$FontVariant>, + fontWeight?: Property$FontWeight | Array<Property$FontWeight>, + glyphOrientationVertical?: Property$GlyphOrientationVertical | Array<Property$GlyphOrientationVertical>, + imageRendering?: Property$ImageRendering | Array<Property$ImageRendering>, + letterSpacing?: Property$LetterSpacing<TLength> | Array<Property$LetterSpacing<TLength>>, + lightingColor?: Property$LightingColor | Array<Property$LightingColor>, + lineHeight?: Property$LineHeight<TLength> | Array<Property$LineHeight<TLength>>, + marker?: Property$Marker | Array<Property$Marker>, + markerEnd?: Property$MarkerEnd | Array<Property$MarkerEnd>, + markerMid?: Property$MarkerMid | Array<Property$MarkerMid>, + markerStart?: Property$MarkerStart | Array<Property$MarkerStart>, + mask?: Property$Mask<TLength> | Array<Property$Mask<TLength>>, + opacity?: Property$Opacity | Array<Property$Opacity>, + overflow?: Property$Overflow | Array<Property$Overflow>, + paintOrder?: Property$PaintOrder | Array<Property$PaintOrder>, + pointerEvents?: Property$PointerEvents | Array<Property$PointerEvents>, + shapeRendering?: Property$ShapeRendering | Array<Property$ShapeRendering>, + stopColor?: Property$StopColor | Array<Property$StopColor>, + stopOpacity?: Property$StopOpacity | Array<Property$StopOpacity>, + stroke?: Property$Stroke | Array<Property$Stroke>, + strokeDasharray?: Property$StrokeDasharray<TLength> | Array<Property$StrokeDasharray<TLength>>, + strokeDashoffset?: Property$StrokeDashoffset<TLength> | Array<Property$StrokeDashoffset<TLength>>, + strokeLinecap?: Property$StrokeLinecap | Array<Property$StrokeLinecap>, + strokeLinejoin?: Property$StrokeLinejoin | Array<Property$StrokeLinejoin>, + strokeMiterlimit?: Property$StrokeMiterlimit | Array<Property$StrokeMiterlimit>, + strokeOpacity?: Property$StrokeOpacity | Array<Property$StrokeOpacity>, + strokeWidth?: Property$StrokeWidth<TLength> | Array<Property$StrokeWidth<TLength>>, + textAnchor?: Property$TextAnchor | Array<Property$TextAnchor>, + textDecoration?: Property$TextDecoration<TLength> | Array<Property$TextDecoration<TLength>>, + textRendering?: Property$TextRendering | Array<Property$TextRendering>, + unicodeBidi?: Property$UnicodeBidi | Array<Property$UnicodeBidi>, + vectorEffect?: Property$VectorEffect | Array<Property$VectorEffect>, + visibility?: Property$Visibility | Array<Property$Visibility>, + whiteSpace?: Property$WhiteSpace | Array<Property$WhiteSpace>, + wordSpacing?: Property$WordSpacing<TLength> | Array<Property$WordSpacing<TLength>>, + writingMode?: Property$WritingMode | Array<Property$WritingMode>, +|}; + +export type PropertiesFallback<TLength = string | 0, TTime = string> = {| + ...StandardPropertiesFallback<TLength, TTime>, + ...VendorPropertiesFallback<TLength, TTime>, + ...ObsoletePropertiesFallback<TLength, TTime>, + ...SvgPropertiesFallback<TLength, TTime>, +|}; + +export type StandardLonghandPropertiesHyphenFallback<TLength = string | 0, TTime = string> = {| + "accent-color"?: Property$AccentColor | Array<Property$AccentColor>, + "align-content"?: Property$AlignContent | Array<Property$AlignContent>, + "align-items"?: Property$AlignItems | Array<Property$AlignItems>, + "align-self"?: Property$AlignSelf | Array<Property$AlignSelf>, + "align-tracks"?: Property$AlignTracks | Array<Property$AlignTracks>, + "animation-composition"?: Property$AnimationComposition | Array<Property$AnimationComposition>, + "animation-delay"?: Property$AnimationDelay<TTime> | Array<Property$AnimationDelay<TTime>>, + "animation-direction"?: Property$AnimationDirection | Array<Property$AnimationDirection>, + "animation-duration"?: Property$AnimationDuration<TTime> | Array<Property$AnimationDuration<TTime>>, + "animation-fill-mode"?: Property$AnimationFillMode | Array<Property$AnimationFillMode>, + "animation-iteration-count"?: Property$AnimationIterationCount | Array<Property$AnimationIterationCount>, + "animation-name"?: Property$AnimationName | Array<Property$AnimationName>, + "animation-play-state"?: Property$AnimationPlayState | Array<Property$AnimationPlayState>, + "animation-range-end"?: Property$AnimationRangeEnd<TLength> | Array<Property$AnimationRangeEnd<TLength>>, + "animation-range-start"?: Property$AnimationRangeStart<TLength> | Array<Property$AnimationRangeStart<TLength>>, + "animation-timeline"?: Property$AnimationTimeline | Array<Property$AnimationTimeline>, + "animation-timing-function"?: Property$AnimationTimingFunction | Array<Property$AnimationTimingFunction>, + appearance?: Property$Appearance | Array<Property$Appearance>, + "aspect-ratio"?: Property$AspectRatio | Array<Property$AspectRatio>, + "backdrop-filter"?: Property$BackdropFilter | Array<Property$BackdropFilter>, + "backface-visibility"?: Property$BackfaceVisibility | Array<Property$BackfaceVisibility>, + "background-attachment"?: Property$BackgroundAttachment | Array<Property$BackgroundAttachment>, + "background-blend-mode"?: Property$BackgroundBlendMode | Array<Property$BackgroundBlendMode>, + "background-clip"?: Property$BackgroundClip | Array<Property$BackgroundClip>, + "background-color"?: Property$BackgroundColor | Array<Property$BackgroundColor>, + "background-image"?: Property$BackgroundImage | Array<Property$BackgroundImage>, + "background-origin"?: Property$BackgroundOrigin | Array<Property$BackgroundOrigin>, + "background-position-x"?: Property$BackgroundPositionX<TLength> | Array<Property$BackgroundPositionX<TLength>>, + "background-position-y"?: Property$BackgroundPositionY<TLength> | Array<Property$BackgroundPositionY<TLength>>, + "background-repeat"?: Property$BackgroundRepeat | Array<Property$BackgroundRepeat>, + "background-size"?: Property$BackgroundSize<TLength> | Array<Property$BackgroundSize<TLength>>, + "block-overflow"?: Property$BlockOverflow | Array<Property$BlockOverflow>, + "block-size"?: Property$BlockSize<TLength> | Array<Property$BlockSize<TLength>>, + "border-block-color"?: Property$BorderBlockColor | Array<Property$BorderBlockColor>, + "border-block-end-color"?: Property$BorderBlockEndColor | Array<Property$BorderBlockEndColor>, + "border-block-end-style"?: Property$BorderBlockEndStyle | Array<Property$BorderBlockEndStyle>, + "border-block-end-width"?: Property$BorderBlockEndWidth<TLength> | Array<Property$BorderBlockEndWidth<TLength>>, + "border-block-start-color"?: Property$BorderBlockStartColor | Array<Property$BorderBlockStartColor>, + "border-block-start-style"?: Property$BorderBlockStartStyle | Array<Property$BorderBlockStartStyle>, + "border-block-start-width"?: Property$BorderBlockStartWidth<TLength> | Array<Property$BorderBlockStartWidth<TLength>>, + "border-block-style"?: Property$BorderBlockStyle | Array<Property$BorderBlockStyle>, + "border-block-width"?: Property$BorderBlockWidth<TLength> | Array<Property$BorderBlockWidth<TLength>>, + "border-bottom-color"?: Property$BorderBottomColor | Array<Property$BorderBottomColor>, + "border-bottom-left-radius"?: Property$BorderBottomLeftRadius<TLength> | Array<Property$BorderBottomLeftRadius<TLength>>, + "border-bottom-right-radius"?: Property$BorderBottomRightRadius<TLength> | Array<Property$BorderBottomRightRadius<TLength>>, + "border-bottom-style"?: Property$BorderBottomStyle | Array<Property$BorderBottomStyle>, + "border-bottom-width"?: Property$BorderBottomWidth<TLength> | Array<Property$BorderBottomWidth<TLength>>, + "border-collapse"?: Property$BorderCollapse | Array<Property$BorderCollapse>, + "border-end-end-radius"?: Property$BorderEndEndRadius<TLength> | Array<Property$BorderEndEndRadius<TLength>>, + "border-end-start-radius"?: Property$BorderEndStartRadius<TLength> | Array<Property$BorderEndStartRadius<TLength>>, + "border-image-outset"?: Property$BorderImageOutset<TLength> | Array<Property$BorderImageOutset<TLength>>, + "border-image-repeat"?: Property$BorderImageRepeat | Array<Property$BorderImageRepeat>, + "border-image-slice"?: Property$BorderImageSlice | Array<Property$BorderImageSlice>, + "border-image-source"?: Property$BorderImageSource | Array<Property$BorderImageSource>, + "border-image-width"?: Property$BorderImageWidth<TLength> | Array<Property$BorderImageWidth<TLength>>, + "border-inline-color"?: Property$BorderInlineColor | Array<Property$BorderInlineColor>, + "border-inline-end-color"?: Property$BorderInlineEndColor | Array<Property$BorderInlineEndColor>, + "border-inline-end-style"?: Property$BorderInlineEndStyle | Array<Property$BorderInlineEndStyle>, + "border-inline-end-width"?: Property$BorderInlineEndWidth<TLength> | Array<Property$BorderInlineEndWidth<TLength>>, + "border-inline-start-color"?: Property$BorderInlineStartColor | Array<Property$BorderInlineStartColor>, + "border-inline-start-style"?: Property$BorderInlineStartStyle | Array<Property$BorderInlineStartStyle>, + "border-inline-start-width"?: Property$BorderInlineStartWidth<TLength> | Array<Property$BorderInlineStartWidth<TLength>>, + "border-inline-style"?: Property$BorderInlineStyle | Array<Property$BorderInlineStyle>, + "border-inline-width"?: Property$BorderInlineWidth<TLength> | Array<Property$BorderInlineWidth<TLength>>, + "border-left-color"?: Property$BorderLeftColor | Array<Property$BorderLeftColor>, + "border-left-style"?: Property$BorderLeftStyle | Array<Property$BorderLeftStyle>, + "border-left-width"?: Property$BorderLeftWidth<TLength> | Array<Property$BorderLeftWidth<TLength>>, + "border-right-color"?: Property$BorderRightColor | Array<Property$BorderRightColor>, + "border-right-style"?: Property$BorderRightStyle | Array<Property$BorderRightStyle>, + "border-right-width"?: Property$BorderRightWidth<TLength> | Array<Property$BorderRightWidth<TLength>>, + "border-spacing"?: Property$BorderSpacing<TLength> | Array<Property$BorderSpacing<TLength>>, + "border-start-end-radius"?: Property$BorderStartEndRadius<TLength> | Array<Property$BorderStartEndRadius<TLength>>, + "border-start-start-radius"?: Property$BorderStartStartRadius<TLength> | Array<Property$BorderStartStartRadius<TLength>>, + "border-top-color"?: Property$BorderTopColor | Array<Property$BorderTopColor>, + "border-top-left-radius"?: Property$BorderTopLeftRadius<TLength> | Array<Property$BorderTopLeftRadius<TLength>>, + "border-top-right-radius"?: Property$BorderTopRightRadius<TLength> | Array<Property$BorderTopRightRadius<TLength>>, + "border-top-style"?: Property$BorderTopStyle | Array<Property$BorderTopStyle>, + "border-top-width"?: Property$BorderTopWidth<TLength> | Array<Property$BorderTopWidth<TLength>>, + bottom?: Property$Bottom<TLength> | Array<Property$Bottom<TLength>>, + "box-decoration-break"?: Property$BoxDecorationBreak | Array<Property$BoxDecorationBreak>, + "box-shadow"?: Property$BoxShadow | Array<Property$BoxShadow>, + "box-sizing"?: Property$BoxSizing | Array<Property$BoxSizing>, + "break-after"?: Property$BreakAfter | Array<Property$BreakAfter>, + "break-before"?: Property$BreakBefore | Array<Property$BreakBefore>, + "break-inside"?: Property$BreakInside | Array<Property$BreakInside>, + "caption-side"?: Property$CaptionSide | Array<Property$CaptionSide>, + "caret-color"?: Property$CaretColor | Array<Property$CaretColor>, + "caret-shape"?: Property$CaretShape | Array<Property$CaretShape>, + clear?: Property$Clear | Array<Property$Clear>, + "clip-path"?: Property$ClipPath | Array<Property$ClipPath>, + color?: Property$Color | Array<Property$Color>, + "color-adjust"?: Property$PrintColorAdjust | Array<Property$PrintColorAdjust>, + "color-scheme"?: Property$ColorScheme | Array<Property$ColorScheme>, + "column-count"?: Property$ColumnCount | Array<Property$ColumnCount>, + "column-fill"?: Property$ColumnFill | Array<Property$ColumnFill>, + "column-gap"?: Property$ColumnGap<TLength> | Array<Property$ColumnGap<TLength>>, + "column-rule-color"?: Property$ColumnRuleColor | Array<Property$ColumnRuleColor>, + "column-rule-style"?: Property$ColumnRuleStyle | Array<Property$ColumnRuleStyle>, + "column-rule-width"?: Property$ColumnRuleWidth<TLength> | Array<Property$ColumnRuleWidth<TLength>>, + "column-span"?: Property$ColumnSpan | Array<Property$ColumnSpan>, + "column-width"?: Property$ColumnWidth<TLength> | Array<Property$ColumnWidth<TLength>>, + contain?: Property$Contain | Array<Property$Contain>, + "contain-intrinsic-block-size"?: Property$ContainIntrinsicBlockSize<TLength> | Array<Property$ContainIntrinsicBlockSize<TLength>>, + "contain-intrinsic-height"?: Property$ContainIntrinsicHeight<TLength> | Array<Property$ContainIntrinsicHeight<TLength>>, + "contain-intrinsic-inline-size"?: Property$ContainIntrinsicInlineSize<TLength> | Array<Property$ContainIntrinsicInlineSize<TLength>>, + "contain-intrinsic-width"?: Property$ContainIntrinsicWidth<TLength> | Array<Property$ContainIntrinsicWidth<TLength>>, + "container-name"?: Property$ContainerName | Array<Property$ContainerName>, + "container-type"?: Property$ContainerType | Array<Property$ContainerType>, + content?: Property$Content | Array<Property$Content>, + "content-visibility"?: Property$ContentVisibility | Array<Property$ContentVisibility>, + "counter-increment"?: Property$CounterIncrement | Array<Property$CounterIncrement>, + "counter-reset"?: Property$CounterReset | Array<Property$CounterReset>, + "counter-set"?: Property$CounterSet | Array<Property$CounterSet>, + cursor?: Property$Cursor | Array<Property$Cursor>, + direction?: Property$Direction | Array<Property$Direction>, + display?: Property$Display | Array<Property$Display>, + "empty-cells"?: Property$EmptyCells | Array<Property$EmptyCells>, + filter?: Property$Filter | Array<Property$Filter>, + "flex-basis"?: Property$FlexBasis<TLength> | Array<Property$FlexBasis<TLength>>, + "flex-direction"?: Property$FlexDirection | Array<Property$FlexDirection>, + "flex-grow"?: Property$FlexGrow | Array<Property$FlexGrow>, + "flex-shrink"?: Property$FlexShrink | Array<Property$FlexShrink>, + "flex-wrap"?: Property$FlexWrap | Array<Property$FlexWrap>, + float?: Property$Float | Array<Property$Float>, + "font-family"?: Property$FontFamily | Array<Property$FontFamily>, + "font-feature-settings"?: Property$FontFeatureSettings | Array<Property$FontFeatureSettings>, + "font-kerning"?: Property$FontKerning | Array<Property$FontKerning>, + "font-language-override"?: Property$FontLanguageOverride | Array<Property$FontLanguageOverride>, + "font-optical-sizing"?: Property$FontOpticalSizing | Array<Property$FontOpticalSizing>, + "font-palette"?: Property$FontPalette | Array<Property$FontPalette>, + "font-size"?: Property$FontSize<TLength> | Array<Property$FontSize<TLength>>, + "font-size-adjust"?: Property$FontSizeAdjust | Array<Property$FontSizeAdjust>, + "font-smooth"?: Property$FontSmooth<TLength> | Array<Property$FontSmooth<TLength>>, + "font-stretch"?: Property$FontStretch | Array<Property$FontStretch>, + "font-style"?: Property$FontStyle | Array<Property$FontStyle>, + "font-synthesis"?: Property$FontSynthesis | Array<Property$FontSynthesis>, + "font-synthesis-position"?: Property$FontSynthesisPosition | Array<Property$FontSynthesisPosition>, + "font-synthesis-small-caps"?: Property$FontSynthesisSmallCaps | Array<Property$FontSynthesisSmallCaps>, + "font-synthesis-style"?: Property$FontSynthesisStyle | Array<Property$FontSynthesisStyle>, + "font-synthesis-weight"?: Property$FontSynthesisWeight | Array<Property$FontSynthesisWeight>, + "font-variant"?: Property$FontVariant | Array<Property$FontVariant>, + "font-variant-alternates"?: Property$FontVariantAlternates | Array<Property$FontVariantAlternates>, + "font-variant-caps"?: Property$FontVariantCaps | Array<Property$FontVariantCaps>, + "font-variant-east-asian"?: Property$FontVariantEastAsian | Array<Property$FontVariantEastAsian>, + "font-variant-emoji"?: Property$FontVariantEmoji | Array<Property$FontVariantEmoji>, + "font-variant-ligatures"?: Property$FontVariantLigatures | Array<Property$FontVariantLigatures>, + "font-variant-numeric"?: Property$FontVariantNumeric | Array<Property$FontVariantNumeric>, + "font-variant-position"?: Property$FontVariantPosition | Array<Property$FontVariantPosition>, + "font-variation-settings"?: Property$FontVariationSettings | Array<Property$FontVariationSettings>, + "font-weight"?: Property$FontWeight | Array<Property$FontWeight>, + "forced-color-adjust"?: Property$ForcedColorAdjust | Array<Property$ForcedColorAdjust>, + "grid-auto-columns"?: Property$GridAutoColumns<TLength> | Array<Property$GridAutoColumns<TLength>>, + "grid-auto-flow"?: Property$GridAutoFlow | Array<Property$GridAutoFlow>, + "grid-auto-rows"?: Property$GridAutoRows<TLength> | Array<Property$GridAutoRows<TLength>>, + "grid-column-end"?: Property$GridColumnEnd | Array<Property$GridColumnEnd>, + "grid-column-start"?: Property$GridColumnStart | Array<Property$GridColumnStart>, + "grid-row-end"?: Property$GridRowEnd | Array<Property$GridRowEnd>, + "grid-row-start"?: Property$GridRowStart | Array<Property$GridRowStart>, + "grid-template-areas"?: Property$GridTemplateAreas | Array<Property$GridTemplateAreas>, + "grid-template-columns"?: Property$GridTemplateColumns<TLength> | Array<Property$GridTemplateColumns<TLength>>, + "grid-template-rows"?: Property$GridTemplateRows<TLength> | Array<Property$GridTemplateRows<TLength>>, + "hanging-punctuation"?: Property$HangingPunctuation | Array<Property$HangingPunctuation>, + height?: Property$Height<TLength> | Array<Property$Height<TLength>>, + "hyphenate-character"?: Property$HyphenateCharacter | Array<Property$HyphenateCharacter>, + "hyphenate-limit-chars"?: Property$HyphenateLimitChars | Array<Property$HyphenateLimitChars>, + hyphens?: Property$Hyphens | Array<Property$Hyphens>, + "image-orientation"?: Property$ImageOrientation | Array<Property$ImageOrientation>, + "image-rendering"?: Property$ImageRendering | Array<Property$ImageRendering>, + "image-resolution"?: Property$ImageResolution | Array<Property$ImageResolution>, + "initial-letter"?: Property$InitialLetter | Array<Property$InitialLetter>, + "inline-size"?: Property$InlineSize<TLength> | Array<Property$InlineSize<TLength>>, + "input-security"?: Property$InputSecurity | Array<Property$InputSecurity>, + "inset-block-end"?: Property$InsetBlockEnd<TLength> | Array<Property$InsetBlockEnd<TLength>>, + "inset-block-start"?: Property$InsetBlockStart<TLength> | Array<Property$InsetBlockStart<TLength>>, + "inset-inline-end"?: Property$InsetInlineEnd<TLength> | Array<Property$InsetInlineEnd<TLength>>, + "inset-inline-start"?: Property$InsetInlineStart<TLength> | Array<Property$InsetInlineStart<TLength>>, + isolation?: Property$Isolation | Array<Property$Isolation>, + "justify-content"?: Property$JustifyContent | Array<Property$JustifyContent>, + "justify-items"?: Property$JustifyItems | Array<Property$JustifyItems>, + "justify-self"?: Property$JustifySelf | Array<Property$JustifySelf>, + "justify-tracks"?: Property$JustifyTracks | Array<Property$JustifyTracks>, + left?: Property$Left<TLength> | Array<Property$Left<TLength>>, + "letter-spacing"?: Property$LetterSpacing<TLength> | Array<Property$LetterSpacing<TLength>>, + "line-break"?: Property$LineBreak | Array<Property$LineBreak>, + "line-height"?: Property$LineHeight<TLength> | Array<Property$LineHeight<TLength>>, + "line-height-step"?: Property$LineHeightStep<TLength> | Array<Property$LineHeightStep<TLength>>, + "list-style-image"?: Property$ListStyleImage | Array<Property$ListStyleImage>, + "list-style-position"?: Property$ListStylePosition | Array<Property$ListStylePosition>, + "list-style-type"?: Property$ListStyleType | Array<Property$ListStyleType>, + "margin-block-end"?: Property$MarginBlockEnd<TLength> | Array<Property$MarginBlockEnd<TLength>>, + "margin-block-start"?: Property$MarginBlockStart<TLength> | Array<Property$MarginBlockStart<TLength>>, + "margin-bottom"?: Property$MarginBottom<TLength> | Array<Property$MarginBottom<TLength>>, + "margin-inline-end"?: Property$MarginInlineEnd<TLength> | Array<Property$MarginInlineEnd<TLength>>, + "margin-inline-start"?: Property$MarginInlineStart<TLength> | Array<Property$MarginInlineStart<TLength>>, + "margin-left"?: Property$MarginLeft<TLength> | Array<Property$MarginLeft<TLength>>, + "margin-right"?: Property$MarginRight<TLength> | Array<Property$MarginRight<TLength>>, + "margin-top"?: Property$MarginTop<TLength> | Array<Property$MarginTop<TLength>>, + "margin-trim"?: Property$MarginTrim | Array<Property$MarginTrim>, + "mask-border-mode"?: Property$MaskBorderMode | Array<Property$MaskBorderMode>, + "mask-border-outset"?: Property$MaskBorderOutset<TLength> | Array<Property$MaskBorderOutset<TLength>>, + "mask-border-repeat"?: Property$MaskBorderRepeat | Array<Property$MaskBorderRepeat>, + "mask-border-slice"?: Property$MaskBorderSlice | Array<Property$MaskBorderSlice>, + "mask-border-source"?: Property$MaskBorderSource | Array<Property$MaskBorderSource>, + "mask-border-width"?: Property$MaskBorderWidth<TLength> | Array<Property$MaskBorderWidth<TLength>>, + "mask-clip"?: Property$MaskClip | Array<Property$MaskClip>, + "mask-composite"?: Property$MaskComposite | Array<Property$MaskComposite>, + "mask-image"?: Property$MaskImage | Array<Property$MaskImage>, + "mask-mode"?: Property$MaskMode | Array<Property$MaskMode>, + "mask-origin"?: Property$MaskOrigin | Array<Property$MaskOrigin>, + "mask-position"?: Property$MaskPosition<TLength> | Array<Property$MaskPosition<TLength>>, + "mask-repeat"?: Property$MaskRepeat | Array<Property$MaskRepeat>, + "mask-size"?: Property$MaskSize<TLength> | Array<Property$MaskSize<TLength>>, + "mask-type"?: Property$MaskType | Array<Property$MaskType>, + "masonry-auto-flow"?: Property$MasonryAutoFlow | Array<Property$MasonryAutoFlow>, + "math-depth"?: Property$MathDepth | Array<Property$MathDepth>, + "math-shift"?: Property$MathShift | Array<Property$MathShift>, + "math-style"?: Property$MathStyle | Array<Property$MathStyle>, + "max-block-size"?: Property$MaxBlockSize<TLength> | Array<Property$MaxBlockSize<TLength>>, + "max-height"?: Property$MaxHeight<TLength> | Array<Property$MaxHeight<TLength>>, + "max-inline-size"?: Property$MaxInlineSize<TLength> | Array<Property$MaxInlineSize<TLength>>, + "max-lines"?: Property$MaxLines | Array<Property$MaxLines>, + "max-width"?: Property$MaxWidth<TLength> | Array<Property$MaxWidth<TLength>>, + "min-block-size"?: Property$MinBlockSize<TLength> | Array<Property$MinBlockSize<TLength>>, + "min-height"?: Property$MinHeight<TLength> | Array<Property$MinHeight<TLength>>, + "min-inline-size"?: Property$MinInlineSize<TLength> | Array<Property$MinInlineSize<TLength>>, + "min-width"?: Property$MinWidth<TLength> | Array<Property$MinWidth<TLength>>, + "mix-blend-mode"?: Property$MixBlendMode | Array<Property$MixBlendMode>, + "motion-distance"?: Property$OffsetDistance<TLength> | Array<Property$OffsetDistance<TLength>>, + "motion-path"?: Property$OffsetPath | Array<Property$OffsetPath>, + "motion-rotation"?: Property$OffsetRotate | Array<Property$OffsetRotate>, + "object-fit"?: Property$ObjectFit | Array<Property$ObjectFit>, + "object-position"?: Property$ObjectPosition<TLength> | Array<Property$ObjectPosition<TLength>>, + "offset-anchor"?: Property$OffsetAnchor<TLength> | Array<Property$OffsetAnchor<TLength>>, + "offset-distance"?: Property$OffsetDistance<TLength> | Array<Property$OffsetDistance<TLength>>, + "offset-path"?: Property$OffsetPath | Array<Property$OffsetPath>, + "offset-position"?: Property$OffsetPosition<TLength> | Array<Property$OffsetPosition<TLength>>, + "offset-rotate"?: Property$OffsetRotate | Array<Property$OffsetRotate>, + "offset-rotation"?: Property$OffsetRotate | Array<Property$OffsetRotate>, + opacity?: Property$Opacity | Array<Property$Opacity>, + order?: Property$Order | Array<Property$Order>, + orphans?: Property$Orphans | Array<Property$Orphans>, + "outline-color"?: Property$OutlineColor | Array<Property$OutlineColor>, + "outline-offset"?: Property$OutlineOffset<TLength> | Array<Property$OutlineOffset<TLength>>, + "outline-style"?: Property$OutlineStyle | Array<Property$OutlineStyle>, + "outline-width"?: Property$OutlineWidth<TLength> | Array<Property$OutlineWidth<TLength>>, + "overflow-anchor"?: Property$OverflowAnchor | Array<Property$OverflowAnchor>, + "overflow-block"?: Property$OverflowBlock | Array<Property$OverflowBlock>, + "overflow-clip-box"?: Property$OverflowClipBox | Array<Property$OverflowClipBox>, + "overflow-clip-margin"?: Property$OverflowClipMargin<TLength> | Array<Property$OverflowClipMargin<TLength>>, + "overflow-inline"?: Property$OverflowInline | Array<Property$OverflowInline>, + "overflow-wrap"?: Property$OverflowWrap | Array<Property$OverflowWrap>, + "overflow-x"?: Property$OverflowX | Array<Property$OverflowX>, + "overflow-y"?: Property$OverflowY | Array<Property$OverflowY>, + overlay?: Property$Overlay | Array<Property$Overlay>, + "overscroll-behavior-block"?: Property$OverscrollBehaviorBlock | Array<Property$OverscrollBehaviorBlock>, + "overscroll-behavior-inline"?: Property$OverscrollBehaviorInline | Array<Property$OverscrollBehaviorInline>, + "overscroll-behavior-x"?: Property$OverscrollBehaviorX | Array<Property$OverscrollBehaviorX>, + "overscroll-behavior-y"?: Property$OverscrollBehaviorY | Array<Property$OverscrollBehaviorY>, + "padding-block-end"?: Property$PaddingBlockEnd<TLength> | Array<Property$PaddingBlockEnd<TLength>>, + "padding-block-start"?: Property$PaddingBlockStart<TLength> | Array<Property$PaddingBlockStart<TLength>>, + "padding-bottom"?: Property$PaddingBottom<TLength> | Array<Property$PaddingBottom<TLength>>, + "padding-inline-end"?: Property$PaddingInlineEnd<TLength> | Array<Property$PaddingInlineEnd<TLength>>, + "padding-inline-start"?: Property$PaddingInlineStart<TLength> | Array<Property$PaddingInlineStart<TLength>>, + "padding-left"?: Property$PaddingLeft<TLength> | Array<Property$PaddingLeft<TLength>>, + "padding-right"?: Property$PaddingRight<TLength> | Array<Property$PaddingRight<TLength>>, + "padding-top"?: Property$PaddingTop<TLength> | Array<Property$PaddingTop<TLength>>, + page?: Property$Page | Array<Property$Page>, + "page-break-after"?: Property$PageBreakAfter | Array<Property$PageBreakAfter>, + "page-break-before"?: Property$PageBreakBefore | Array<Property$PageBreakBefore>, + "page-break-inside"?: Property$PageBreakInside | Array<Property$PageBreakInside>, + "paint-order"?: Property$PaintOrder | Array<Property$PaintOrder>, + perspective?: Property$Perspective<TLength> | Array<Property$Perspective<TLength>>, + "perspective-origin"?: Property$PerspectiveOrigin<TLength> | Array<Property$PerspectiveOrigin<TLength>>, + "pointer-events"?: Property$PointerEvents | Array<Property$PointerEvents>, + position?: Property$Position | Array<Property$Position>, + "print-color-adjust"?: Property$PrintColorAdjust | Array<Property$PrintColorAdjust>, + quotes?: Property$Quotes | Array<Property$Quotes>, + resize?: Property$Resize | Array<Property$Resize>, + right?: Property$Right<TLength> | Array<Property$Right<TLength>>, + rotate?: Property$Rotate | Array<Property$Rotate>, + "row-gap"?: Property$RowGap<TLength> | Array<Property$RowGap<TLength>>, + "ruby-align"?: Property$RubyAlign | Array<Property$RubyAlign>, + "ruby-merge"?: Property$RubyMerge | Array<Property$RubyMerge>, + "ruby-position"?: Property$RubyPosition | Array<Property$RubyPosition>, + scale?: Property$Scale | Array<Property$Scale>, + "scroll-behavior"?: Property$ScrollBehavior | Array<Property$ScrollBehavior>, + "scroll-margin-block-end"?: Property$ScrollMarginBlockEnd<TLength> | Array<Property$ScrollMarginBlockEnd<TLength>>, + "scroll-margin-block-start"?: Property$ScrollMarginBlockStart<TLength> | Array<Property$ScrollMarginBlockStart<TLength>>, + "scroll-margin-bottom"?: Property$ScrollMarginBottom<TLength> | Array<Property$ScrollMarginBottom<TLength>>, + "scroll-margin-inline-end"?: Property$ScrollMarginInlineEnd<TLength> | Array<Property$ScrollMarginInlineEnd<TLength>>, + "scroll-margin-inline-start"?: Property$ScrollMarginInlineStart<TLength> | Array<Property$ScrollMarginInlineStart<TLength>>, + "scroll-margin-left"?: Property$ScrollMarginLeft<TLength> | Array<Property$ScrollMarginLeft<TLength>>, + "scroll-margin-right"?: Property$ScrollMarginRight<TLength> | Array<Property$ScrollMarginRight<TLength>>, + "scroll-margin-top"?: Property$ScrollMarginTop<TLength> | Array<Property$ScrollMarginTop<TLength>>, + "scroll-padding-block-end"?: Property$ScrollPaddingBlockEnd<TLength> | Array<Property$ScrollPaddingBlockEnd<TLength>>, + "scroll-padding-block-start"?: Property$ScrollPaddingBlockStart<TLength> | Array<Property$ScrollPaddingBlockStart<TLength>>, + "scroll-padding-bottom"?: Property$ScrollPaddingBottom<TLength> | Array<Property$ScrollPaddingBottom<TLength>>, + "scroll-padding-inline-end"?: Property$ScrollPaddingInlineEnd<TLength> | Array<Property$ScrollPaddingInlineEnd<TLength>>, + "scroll-padding-inline-start"?: Property$ScrollPaddingInlineStart<TLength> | Array<Property$ScrollPaddingInlineStart<TLength>>, + "scroll-padding-left"?: Property$ScrollPaddingLeft<TLength> | Array<Property$ScrollPaddingLeft<TLength>>, + "scroll-padding-right"?: Property$ScrollPaddingRight<TLength> | Array<Property$ScrollPaddingRight<TLength>>, + "scroll-padding-top"?: Property$ScrollPaddingTop<TLength> | Array<Property$ScrollPaddingTop<TLength>>, + "scroll-snap-align"?: Property$ScrollSnapAlign | Array<Property$ScrollSnapAlign>, + "scroll-snap-margin-bottom"?: Property$ScrollMarginBottom<TLength> | Array<Property$ScrollMarginBottom<TLength>>, + "scroll-snap-margin-left"?: Property$ScrollMarginLeft<TLength> | Array<Property$ScrollMarginLeft<TLength>>, + "scroll-snap-margin-right"?: Property$ScrollMarginRight<TLength> | Array<Property$ScrollMarginRight<TLength>>, + "scroll-snap-margin-top"?: Property$ScrollMarginTop<TLength> | Array<Property$ScrollMarginTop<TLength>>, + "scroll-snap-stop"?: Property$ScrollSnapStop | Array<Property$ScrollSnapStop>, + "scroll-snap-type"?: Property$ScrollSnapType | Array<Property$ScrollSnapType>, + "scroll-timeline-axis"?: Property$ScrollTimelineAxis | Array<Property$ScrollTimelineAxis>, + "scroll-timeline-name"?: Property$ScrollTimelineName | Array<Property$ScrollTimelineName>, + "scrollbar-color"?: Property$ScrollbarColor | Array<Property$ScrollbarColor>, + "scrollbar-gutter"?: Property$ScrollbarGutter | Array<Property$ScrollbarGutter>, + "scrollbar-width"?: Property$ScrollbarWidth | Array<Property$ScrollbarWidth>, + "shape-image-threshold"?: Property$ShapeImageThreshold | Array<Property$ShapeImageThreshold>, + "shape-margin"?: Property$ShapeMargin<TLength> | Array<Property$ShapeMargin<TLength>>, + "shape-outside"?: Property$ShapeOutside | Array<Property$ShapeOutside>, + "tab-size"?: Property$TabSize<TLength> | Array<Property$TabSize<TLength>>, + "table-layout"?: Property$TableLayout | Array<Property$TableLayout>, + "text-align"?: Property$TextAlign | Array<Property$TextAlign>, + "text-align-last"?: Property$TextAlignLast | Array<Property$TextAlignLast>, + "text-combine-upright"?: Property$TextCombineUpright | Array<Property$TextCombineUpright>, + "text-decoration-color"?: Property$TextDecorationColor | Array<Property$TextDecorationColor>, + "text-decoration-line"?: Property$TextDecorationLine | Array<Property$TextDecorationLine>, + "text-decoration-skip"?: Property$TextDecorationSkip | Array<Property$TextDecorationSkip>, + "text-decoration-skip-ink"?: Property$TextDecorationSkipInk | Array<Property$TextDecorationSkipInk>, + "text-decoration-style"?: Property$TextDecorationStyle | Array<Property$TextDecorationStyle>, + "text-decoration-thickness"?: Property$TextDecorationThickness<TLength> | Array<Property$TextDecorationThickness<TLength>>, + "text-emphasis-color"?: Property$TextEmphasisColor | Array<Property$TextEmphasisColor>, + "text-emphasis-position"?: Property$TextEmphasisPosition | Array<Property$TextEmphasisPosition>, + "text-emphasis-style"?: Property$TextEmphasisStyle | Array<Property$TextEmphasisStyle>, + "text-indent"?: Property$TextIndent<TLength> | Array<Property$TextIndent<TLength>>, + "text-justify"?: Property$TextJustify | Array<Property$TextJustify>, + "text-orientation"?: Property$TextOrientation | Array<Property$TextOrientation>, + "text-overflow"?: Property$TextOverflow | Array<Property$TextOverflow>, + "text-rendering"?: Property$TextRendering | Array<Property$TextRendering>, + "text-shadow"?: Property$TextShadow | Array<Property$TextShadow>, + "text-size-adjust"?: Property$TextSizeAdjust | Array<Property$TextSizeAdjust>, + "text-transform"?: Property$TextTransform | Array<Property$TextTransform>, + "text-underline-offset"?: Property$TextUnderlineOffset<TLength> | Array<Property$TextUnderlineOffset<TLength>>, + "text-underline-position"?: Property$TextUnderlinePosition | Array<Property$TextUnderlinePosition>, + "text-wrap"?: Property$TextWrap | Array<Property$TextWrap>, + "timeline-scope"?: Property$TimelineScope | Array<Property$TimelineScope>, + top?: Property$Top<TLength> | Array<Property$Top<TLength>>, + "touch-action"?: Property$TouchAction | Array<Property$TouchAction>, + transform?: Property$Transform | Array<Property$Transform>, + "transform-box"?: Property$TransformBox | Array<Property$TransformBox>, + "transform-origin"?: Property$TransformOrigin<TLength> | Array<Property$TransformOrigin<TLength>>, + "transform-style"?: Property$TransformStyle | Array<Property$TransformStyle>, + "transition-behavior"?: Property$TransitionBehavior | Array<Property$TransitionBehavior>, + "transition-delay"?: Property$TransitionDelay<TTime> | Array<Property$TransitionDelay<TTime>>, + "transition-duration"?: Property$TransitionDuration<TTime> | Array<Property$TransitionDuration<TTime>>, + "transition-property"?: Property$TransitionProperty | Array<Property$TransitionProperty>, + "transition-timing-function"?: Property$TransitionTimingFunction | Array<Property$TransitionTimingFunction>, + translate?: Property$Translate<TLength> | Array<Property$Translate<TLength>>, + "unicode-bidi"?: Property$UnicodeBidi | Array<Property$UnicodeBidi>, + "user-select"?: Property$UserSelect | Array<Property$UserSelect>, + "vertical-align"?: Property$VerticalAlign<TLength> | Array<Property$VerticalAlign<TLength>>, + "view-timeline-axis"?: Property$ViewTimelineAxis | Array<Property$ViewTimelineAxis>, + "view-timeline-inset"?: Property$ViewTimelineInset<TLength> | Array<Property$ViewTimelineInset<TLength>>, + "view-timeline-name"?: Property$ViewTimelineName | Array<Property$ViewTimelineName>, + "view-transition-name"?: Property$ViewTransitionName | Array<Property$ViewTransitionName>, + visibility?: Property$Visibility | Array<Property$Visibility>, + "white-space"?: Property$WhiteSpace | Array<Property$WhiteSpace>, + "white-space-collapse"?: Property$WhiteSpaceCollapse | Array<Property$WhiteSpaceCollapse>, + "white-space-trim"?: Property$WhiteSpaceTrim | Array<Property$WhiteSpaceTrim>, + widows?: Property$Widows | Array<Property$Widows>, + width?: Property$Width<TLength> | Array<Property$Width<TLength>>, + "will-change"?: Property$WillChange | Array<Property$WillChange>, + "word-break"?: Property$WordBreak | Array<Property$WordBreak>, + "word-spacing"?: Property$WordSpacing<TLength> | Array<Property$WordSpacing<TLength>>, + "word-wrap"?: Property$WordWrap | Array<Property$WordWrap>, + "writing-mode"?: Property$WritingMode | Array<Property$WritingMode>, + "z-index"?: Property$ZIndex | Array<Property$ZIndex>, + zoom?: Property$Zoom | Array<Property$Zoom>, +|}; + +export type StandardShorthandPropertiesHyphenFallback<TLength = string | 0, TTime = string> = {| + all?: Property$All | Array<Property$All>, + animation?: Property$Animation<TTime> | Array<Property$Animation<TTime>>, + "animation-range"?: Property$AnimationRange<TLength> | Array<Property$AnimationRange<TLength>>, + background?: Property$Background<TLength> | Array<Property$Background<TLength>>, + "background-position"?: Property$BackgroundPosition<TLength> | Array<Property$BackgroundPosition<TLength>>, + border?: Property$Border<TLength> | Array<Property$Border<TLength>>, + "border-block"?: Property$BorderBlock<TLength> | Array<Property$BorderBlock<TLength>>, + "border-block-end"?: Property$BorderBlockEnd<TLength> | Array<Property$BorderBlockEnd<TLength>>, + "border-block-start"?: Property$BorderBlockStart<TLength> | Array<Property$BorderBlockStart<TLength>>, + "border-bottom"?: Property$BorderBottom<TLength> | Array<Property$BorderBottom<TLength>>, + "border-color"?: Property$BorderColor | Array<Property$BorderColor>, + "border-image"?: Property$BorderImage | Array<Property$BorderImage>, + "border-inline"?: Property$BorderInline<TLength> | Array<Property$BorderInline<TLength>>, + "border-inline-end"?: Property$BorderInlineEnd<TLength> | Array<Property$BorderInlineEnd<TLength>>, + "border-inline-start"?: Property$BorderInlineStart<TLength> | Array<Property$BorderInlineStart<TLength>>, + "border-left"?: Property$BorderLeft<TLength> | Array<Property$BorderLeft<TLength>>, + "border-radius"?: Property$BorderRadius<TLength> | Array<Property$BorderRadius<TLength>>, + "border-right"?: Property$BorderRight<TLength> | Array<Property$BorderRight<TLength>>, + "border-style"?: Property$BorderStyle | Array<Property$BorderStyle>, + "border-top"?: Property$BorderTop<TLength> | Array<Property$BorderTop<TLength>>, + "border-width"?: Property$BorderWidth<TLength> | Array<Property$BorderWidth<TLength>>, + caret?: Property$Caret | Array<Property$Caret>, + "column-rule"?: Property$ColumnRule<TLength> | Array<Property$ColumnRule<TLength>>, + columns?: Property$Columns<TLength> | Array<Property$Columns<TLength>>, + "contain-intrinsic-size"?: Property$ContainIntrinsicSize<TLength> | Array<Property$ContainIntrinsicSize<TLength>>, + container?: Property$Container | Array<Property$Container>, + flex?: Property$Flex<TLength> | Array<Property$Flex<TLength>>, + "flex-flow"?: Property$FlexFlow | Array<Property$FlexFlow>, + font?: Property$Font | Array<Property$Font>, + gap?: Property$Gap<TLength> | Array<Property$Gap<TLength>>, + grid?: Property$Grid | Array<Property$Grid>, + "grid-area"?: Property$GridArea | Array<Property$GridArea>, + "grid-column"?: Property$GridColumn | Array<Property$GridColumn>, + "grid-row"?: Property$GridRow | Array<Property$GridRow>, + "grid-template"?: Property$GridTemplate | Array<Property$GridTemplate>, + inset?: Property$Inset<TLength> | Array<Property$Inset<TLength>>, + "inset-block"?: Property$InsetBlock<TLength> | Array<Property$InsetBlock<TLength>>, + "inset-inline"?: Property$InsetInline<TLength> | Array<Property$InsetInline<TLength>>, + "line-clamp"?: Property$LineClamp | Array<Property$LineClamp>, + "list-style"?: Property$ListStyle | Array<Property$ListStyle>, + margin?: Property$Margin<TLength> | Array<Property$Margin<TLength>>, + "margin-block"?: Property$MarginBlock<TLength> | Array<Property$MarginBlock<TLength>>, + "margin-inline"?: Property$MarginInline<TLength> | Array<Property$MarginInline<TLength>>, + mask?: Property$Mask<TLength> | Array<Property$Mask<TLength>>, + "mask-border"?: Property$MaskBorder | Array<Property$MaskBorder>, + motion?: Property$Offset<TLength> | Array<Property$Offset<TLength>>, + offset?: Property$Offset<TLength> | Array<Property$Offset<TLength>>, + outline?: Property$Outline<TLength> | Array<Property$Outline<TLength>>, + overflow?: Property$Overflow | Array<Property$Overflow>, + "overscroll-behavior"?: Property$OverscrollBehavior | Array<Property$OverscrollBehavior>, + padding?: Property$Padding<TLength> | Array<Property$Padding<TLength>>, + "padding-block"?: Property$PaddingBlock<TLength> | Array<Property$PaddingBlock<TLength>>, + "padding-inline"?: Property$PaddingInline<TLength> | Array<Property$PaddingInline<TLength>>, + "place-content"?: Property$PlaceContent | Array<Property$PlaceContent>, + "place-items"?: Property$PlaceItems | Array<Property$PlaceItems>, + "place-self"?: Property$PlaceSelf | Array<Property$PlaceSelf>, + "scroll-margin"?: Property$ScrollMargin<TLength> | Array<Property$ScrollMargin<TLength>>, + "scroll-margin-block"?: Property$ScrollMarginBlock<TLength> | Array<Property$ScrollMarginBlock<TLength>>, + "scroll-margin-inline"?: Property$ScrollMarginInline<TLength> | Array<Property$ScrollMarginInline<TLength>>, + "scroll-padding"?: Property$ScrollPadding<TLength> | Array<Property$ScrollPadding<TLength>>, + "scroll-padding-block"?: Property$ScrollPaddingBlock<TLength> | Array<Property$ScrollPaddingBlock<TLength>>, + "scroll-padding-inline"?: Property$ScrollPaddingInline<TLength> | Array<Property$ScrollPaddingInline<TLength>>, + "scroll-snap-margin"?: Property$ScrollMargin<TLength> | Array<Property$ScrollMargin<TLength>>, + "scroll-timeline"?: Property$ScrollTimeline | Array<Property$ScrollTimeline>, + "text-decoration"?: Property$TextDecoration<TLength> | Array<Property$TextDecoration<TLength>>, + "text-emphasis"?: Property$TextEmphasis | Array<Property$TextEmphasis>, + transition?: Property$Transition<TTime> | Array<Property$Transition<TTime>>, + "view-timeline"?: Property$ViewTimeline | Array<Property$ViewTimeline>, +|}; + +export type StandardPropertiesHyphenFallback<TLength = string | 0, TTime = string> = {| + ...StandardLonghandPropertiesHyphenFallback<TLength, TTime>, + ...StandardShorthandPropertiesHyphenFallback<TLength, TTime>, +|}; + +export type VendorLonghandPropertiesHyphenFallback<TLength = string | 0, TTime = string> = {| + "-moz-animation-delay"?: Property$AnimationDelay<TTime> | Array<Property$AnimationDelay<TTime>>, + "-moz-animation-direction"?: Property$AnimationDirection | Array<Property$AnimationDirection>, + "-moz-animation-duration"?: Property$AnimationDuration<TTime> | Array<Property$AnimationDuration<TTime>>, + "-moz-animation-fill-mode"?: Property$AnimationFillMode | Array<Property$AnimationFillMode>, + "-moz-animation-iteration-count"?: Property$AnimationIterationCount | Array<Property$AnimationIterationCount>, + "-moz-animation-name"?: Property$AnimationName | Array<Property$AnimationName>, + "-moz-animation-play-state"?: Property$AnimationPlayState | Array<Property$AnimationPlayState>, + "-moz-animation-timing-function"?: Property$AnimationTimingFunction | Array<Property$AnimationTimingFunction>, + "-moz-appearance"?: Property$MozAppearance | Array<Property$MozAppearance>, + "-moz-binding"?: Property$MozBinding | Array<Property$MozBinding>, + "-moz-border-bottom-colors"?: Property$MozBorderBottomColors | Array<Property$MozBorderBottomColors>, + "-moz-border-end-color"?: Property$BorderInlineEndColor | Array<Property$BorderInlineEndColor>, + "-moz-border-end-style"?: Property$BorderInlineEndStyle | Array<Property$BorderInlineEndStyle>, + "-moz-border-end-width"?: Property$BorderInlineEndWidth<TLength> | Array<Property$BorderInlineEndWidth<TLength>>, + "-moz-border-left-colors"?: Property$MozBorderLeftColors | Array<Property$MozBorderLeftColors>, + "-moz-border-right-colors"?: Property$MozBorderRightColors | Array<Property$MozBorderRightColors>, + "-moz-border-start-color"?: Property$BorderInlineStartColor | Array<Property$BorderInlineStartColor>, + "-moz-border-start-style"?: Property$BorderInlineStartStyle | Array<Property$BorderInlineStartStyle>, + "-moz-border-top-colors"?: Property$MozBorderTopColors | Array<Property$MozBorderTopColors>, + "-moz-box-sizing"?: Property$BoxSizing | Array<Property$BoxSizing>, + "-moz-column-count"?: Property$ColumnCount | Array<Property$ColumnCount>, + "-moz-column-fill"?: Property$ColumnFill | Array<Property$ColumnFill>, + "-moz-column-rule-color"?: Property$ColumnRuleColor | Array<Property$ColumnRuleColor>, + "-moz-column-rule-style"?: Property$ColumnRuleStyle | Array<Property$ColumnRuleStyle>, + "-moz-column-rule-width"?: Property$ColumnRuleWidth<TLength> | Array<Property$ColumnRuleWidth<TLength>>, + "-moz-column-width"?: Property$ColumnWidth<TLength> | Array<Property$ColumnWidth<TLength>>, + "-moz-context-properties"?: Property$MozContextProperties | Array<Property$MozContextProperties>, + "-moz-font-feature-settings"?: Property$FontFeatureSettings | Array<Property$FontFeatureSettings>, + "-moz-font-language-override"?: Property$FontLanguageOverride | Array<Property$FontLanguageOverride>, + "-moz-hyphens"?: Property$Hyphens | Array<Property$Hyphens>, + "-moz-image-region"?: Property$MozImageRegion | Array<Property$MozImageRegion>, + "-moz-margin-end"?: Property$MarginInlineEnd<TLength> | Array<Property$MarginInlineEnd<TLength>>, + "-moz-margin-start"?: Property$MarginInlineStart<TLength> | Array<Property$MarginInlineStart<TLength>>, + "-moz-orient"?: Property$MozOrient | Array<Property$MozOrient>, + "-moz-osx-font-smoothing"?: Property$FontSmooth<TLength> | Array<Property$FontSmooth<TLength>>, + "-moz-outline-radius-bottomleft"?: Property$MozOutlineRadiusBottomleft<TLength> | Array<Property$MozOutlineRadiusBottomleft<TLength>>, + "-moz-outline-radius-bottomright"?: Property$MozOutlineRadiusBottomright<TLength> | Array<Property$MozOutlineRadiusBottomright<TLength>>, + "-moz-outline-radius-topleft"?: Property$MozOutlineRadiusTopleft<TLength> | Array<Property$MozOutlineRadiusTopleft<TLength>>, + "-moz-outline-radius-topright"?: Property$MozOutlineRadiusTopright<TLength> | Array<Property$MozOutlineRadiusTopright<TLength>>, + "-moz-padding-end"?: Property$PaddingInlineEnd<TLength> | Array<Property$PaddingInlineEnd<TLength>>, + "-moz-padding-start"?: Property$PaddingInlineStart<TLength> | Array<Property$PaddingInlineStart<TLength>>, + "-moz-stack-sizing"?: Property$MozStackSizing | Array<Property$MozStackSizing>, + "-moz-tab-size"?: Property$TabSize<TLength> | Array<Property$TabSize<TLength>>, + "-moz-text-blink"?: Property$MozTextBlink | Array<Property$MozTextBlink>, + "-moz-text-size-adjust"?: Property$TextSizeAdjust | Array<Property$TextSizeAdjust>, + "-moz-user-focus"?: Property$MozUserFocus | Array<Property$MozUserFocus>, + "-moz-user-modify"?: Property$MozUserModify | Array<Property$MozUserModify>, + "-moz-user-select"?: Property$UserSelect | Array<Property$UserSelect>, + "-moz-window-dragging"?: Property$MozWindowDragging | Array<Property$MozWindowDragging>, + "-moz-window-shadow"?: Property$MozWindowShadow | Array<Property$MozWindowShadow>, + "-ms-accelerator"?: Property$MsAccelerator | Array<Property$MsAccelerator>, + "-ms-block-progression"?: Property$MsBlockProgression | Array<Property$MsBlockProgression>, + "-ms-content-zoom-chaining"?: Property$MsContentZoomChaining | Array<Property$MsContentZoomChaining>, + "-ms-content-zoom-limit-max"?: Property$MsContentZoomLimitMax | Array<Property$MsContentZoomLimitMax>, + "-ms-content-zoom-limit-min"?: Property$MsContentZoomLimitMin | Array<Property$MsContentZoomLimitMin>, + "-ms-content-zoom-snap-points"?: Property$MsContentZoomSnapPoints | Array<Property$MsContentZoomSnapPoints>, + "-ms-content-zoom-snap-type"?: Property$MsContentZoomSnapType | Array<Property$MsContentZoomSnapType>, + "-ms-content-zooming"?: Property$MsContentZooming | Array<Property$MsContentZooming>, + "-ms-filter"?: Property$MsFilter | Array<Property$MsFilter>, + "-ms-flex-direction"?: Property$FlexDirection | Array<Property$FlexDirection>, + "-ms-flex-positive"?: Property$FlexGrow | Array<Property$FlexGrow>, + "-ms-flow-from"?: Property$MsFlowFrom | Array<Property$MsFlowFrom>, + "-ms-flow-into"?: Property$MsFlowInto | Array<Property$MsFlowInto>, + "-ms-grid-columns"?: Property$MsGridColumns<TLength> | Array<Property$MsGridColumns<TLength>>, + "-ms-grid-rows"?: Property$MsGridRows<TLength> | Array<Property$MsGridRows<TLength>>, + "-ms-high-contrast-adjust"?: Property$MsHighContrastAdjust | Array<Property$MsHighContrastAdjust>, + "-ms-hyphenate-limit-chars"?: Property$MsHyphenateLimitChars | Array<Property$MsHyphenateLimitChars>, + "-ms-hyphenate-limit-lines"?: Property$MsHyphenateLimitLines | Array<Property$MsHyphenateLimitLines>, + "-ms-hyphenate-limit-zone"?: Property$MsHyphenateLimitZone<TLength> | Array<Property$MsHyphenateLimitZone<TLength>>, + "-ms-hyphens"?: Property$Hyphens | Array<Property$Hyphens>, + "-ms-ime-align"?: Property$MsImeAlign | Array<Property$MsImeAlign>, + "-ms-line-break"?: Property$LineBreak | Array<Property$LineBreak>, + "-ms-order"?: Property$Order | Array<Property$Order>, + "-ms-overflow-style"?: Property$MsOverflowStyle | Array<Property$MsOverflowStyle>, + "-ms-overflow-x"?: Property$OverflowX | Array<Property$OverflowX>, + "-ms-overflow-y"?: Property$OverflowY | Array<Property$OverflowY>, + "-ms-scroll-chaining"?: Property$MsScrollChaining | Array<Property$MsScrollChaining>, + "-ms-scroll-limit-x-max"?: Property$MsScrollLimitXMax<TLength> | Array<Property$MsScrollLimitXMax<TLength>>, + "-ms-scroll-limit-x-min"?: Property$MsScrollLimitXMin<TLength> | Array<Property$MsScrollLimitXMin<TLength>>, + "-ms-scroll-limit-y-max"?: Property$MsScrollLimitYMax<TLength> | Array<Property$MsScrollLimitYMax<TLength>>, + "-ms-scroll-limit-y-min"?: Property$MsScrollLimitYMin<TLength> | Array<Property$MsScrollLimitYMin<TLength>>, + "-ms-scroll-rails"?: Property$MsScrollRails | Array<Property$MsScrollRails>, + "-ms-scroll-snap-points-x"?: Property$MsScrollSnapPointsX | Array<Property$MsScrollSnapPointsX>, + "-ms-scroll-snap-points-y"?: Property$MsScrollSnapPointsY | Array<Property$MsScrollSnapPointsY>, + "-ms-scroll-snap-type"?: Property$MsScrollSnapType | Array<Property$MsScrollSnapType>, + "-ms-scroll-translation"?: Property$MsScrollTranslation | Array<Property$MsScrollTranslation>, + "-ms-scrollbar-3dlight-color"?: Property$MsScrollbar3dlightColor | Array<Property$MsScrollbar3dlightColor>, + "-ms-scrollbar-arrow-color"?: Property$MsScrollbarArrowColor | Array<Property$MsScrollbarArrowColor>, + "-ms-scrollbar-base-color"?: Property$MsScrollbarBaseColor | Array<Property$MsScrollbarBaseColor>, + "-ms-scrollbar-darkshadow-color"?: Property$MsScrollbarDarkshadowColor | Array<Property$MsScrollbarDarkshadowColor>, + "-ms-scrollbar-face-color"?: Property$MsScrollbarFaceColor | Array<Property$MsScrollbarFaceColor>, + "-ms-scrollbar-highlight-color"?: Property$MsScrollbarHighlightColor | Array<Property$MsScrollbarHighlightColor>, + "-ms-scrollbar-shadow-color"?: Property$MsScrollbarShadowColor | Array<Property$MsScrollbarShadowColor>, + "-ms-scrollbar-track-color"?: Property$MsScrollbarTrackColor | Array<Property$MsScrollbarTrackColor>, + "-ms-text-autospace"?: Property$MsTextAutospace | Array<Property$MsTextAutospace>, + "-ms-text-combine-horizontal"?: Property$TextCombineUpright | Array<Property$TextCombineUpright>, + "-ms-text-overflow"?: Property$TextOverflow | Array<Property$TextOverflow>, + "-ms-touch-action"?: Property$TouchAction | Array<Property$TouchAction>, + "-ms-touch-select"?: Property$MsTouchSelect | Array<Property$MsTouchSelect>, + "-ms-transform"?: Property$Transform | Array<Property$Transform>, + "-ms-transform-origin"?: Property$TransformOrigin<TLength> | Array<Property$TransformOrigin<TLength>>, + "-ms-transition-delay"?: Property$TransitionDelay<TTime> | Array<Property$TransitionDelay<TTime>>, + "-ms-transition-duration"?: Property$TransitionDuration<TTime> | Array<Property$TransitionDuration<TTime>>, + "-ms-transition-property"?: Property$TransitionProperty | Array<Property$TransitionProperty>, + "-ms-transition-timing-function"?: Property$TransitionTimingFunction | Array<Property$TransitionTimingFunction>, + "-ms-user-select"?: Property$MsUserSelect | Array<Property$MsUserSelect>, + "-ms-word-break"?: Property$WordBreak | Array<Property$WordBreak>, + "-ms-wrap-flow"?: Property$MsWrapFlow | Array<Property$MsWrapFlow>, + "-ms-wrap-margin"?: Property$MsWrapMargin<TLength> | Array<Property$MsWrapMargin<TLength>>, + "-ms-wrap-through"?: Property$MsWrapThrough | Array<Property$MsWrapThrough>, + "-ms-writing-mode"?: Property$WritingMode | Array<Property$WritingMode>, + "-webkit-align-content"?: Property$AlignContent | Array<Property$AlignContent>, + "-webkit-align-items"?: Property$AlignItems | Array<Property$AlignItems>, + "-webkit-align-self"?: Property$AlignSelf | Array<Property$AlignSelf>, + "-webkit-animation-delay"?: Property$AnimationDelay<TTime> | Array<Property$AnimationDelay<TTime>>, + "-webkit-animation-direction"?: Property$AnimationDirection | Array<Property$AnimationDirection>, + "-webkit-animation-duration"?: Property$AnimationDuration<TTime> | Array<Property$AnimationDuration<TTime>>, + "-webkit-animation-fill-mode"?: Property$AnimationFillMode | Array<Property$AnimationFillMode>, + "-webkit-animation-iteration-count"?: Property$AnimationIterationCount | Array<Property$AnimationIterationCount>, + "-webkit-animation-name"?: Property$AnimationName | Array<Property$AnimationName>, + "-webkit-animation-play-state"?: Property$AnimationPlayState | Array<Property$AnimationPlayState>, + "-webkit-animation-timing-function"?: Property$AnimationTimingFunction | Array<Property$AnimationTimingFunction>, + "-webkit-appearance"?: Property$WebkitAppearance | Array<Property$WebkitAppearance>, + "-webkit-backdrop-filter"?: Property$BackdropFilter | Array<Property$BackdropFilter>, + "-webkit-backface-visibility"?: Property$BackfaceVisibility | Array<Property$BackfaceVisibility>, + "-webkit-background-clip"?: Property$BackgroundClip | Array<Property$BackgroundClip>, + "-webkit-background-origin"?: Property$BackgroundOrigin | Array<Property$BackgroundOrigin>, + "-webkit-background-size"?: Property$BackgroundSize<TLength> | Array<Property$BackgroundSize<TLength>>, + "-webkit-border-before-color"?: Property$WebkitBorderBeforeColor | Array<Property$WebkitBorderBeforeColor>, + "-webkit-border-before-style"?: Property$WebkitBorderBeforeStyle | Array<Property$WebkitBorderBeforeStyle>, + "-webkit-border-before-width"?: Property$WebkitBorderBeforeWidth<TLength> | Array<Property$WebkitBorderBeforeWidth<TLength>>, + "-webkit-border-bottom-left-radius"?: Property$BorderBottomLeftRadius<TLength> | Array<Property$BorderBottomLeftRadius<TLength>>, + "-webkit-border-bottom-right-radius"?: Property$BorderBottomRightRadius<TLength> | Array<Property$BorderBottomRightRadius<TLength>>, + "-webkit-border-image-slice"?: Property$BorderImageSlice | Array<Property$BorderImageSlice>, + "-webkit-border-top-left-radius"?: Property$BorderTopLeftRadius<TLength> | Array<Property$BorderTopLeftRadius<TLength>>, + "-webkit-border-top-right-radius"?: Property$BorderTopRightRadius<TLength> | Array<Property$BorderTopRightRadius<TLength>>, + "-webkit-box-decoration-break"?: Property$BoxDecorationBreak | Array<Property$BoxDecorationBreak>, + "-webkit-box-reflect"?: Property$WebkitBoxReflect<TLength> | Array<Property$WebkitBoxReflect<TLength>>, + "-webkit-box-shadow"?: Property$BoxShadow | Array<Property$BoxShadow>, + "-webkit-box-sizing"?: Property$BoxSizing | Array<Property$BoxSizing>, + "-webkit-clip-path"?: Property$ClipPath | Array<Property$ClipPath>, + "-webkit-column-count"?: Property$ColumnCount | Array<Property$ColumnCount>, + "-webkit-column-fill"?: Property$ColumnFill | Array<Property$ColumnFill>, + "-webkit-column-rule-color"?: Property$ColumnRuleColor | Array<Property$ColumnRuleColor>, + "-webkit-column-rule-style"?: Property$ColumnRuleStyle | Array<Property$ColumnRuleStyle>, + "-webkit-column-rule-width"?: Property$ColumnRuleWidth<TLength> | Array<Property$ColumnRuleWidth<TLength>>, + "-webkit-column-span"?: Property$ColumnSpan | Array<Property$ColumnSpan>, + "-webkit-column-width"?: Property$ColumnWidth<TLength> | Array<Property$ColumnWidth<TLength>>, + "-webkit-filter"?: Property$Filter | Array<Property$Filter>, + "-webkit-flex-basis"?: Property$FlexBasis<TLength> | Array<Property$FlexBasis<TLength>>, + "-webkit-flex-direction"?: Property$FlexDirection | Array<Property$FlexDirection>, + "-webkit-flex-grow"?: Property$FlexGrow | Array<Property$FlexGrow>, + "-webkit-flex-shrink"?: Property$FlexShrink | Array<Property$FlexShrink>, + "-webkit-flex-wrap"?: Property$FlexWrap | Array<Property$FlexWrap>, + "-webkit-font-feature-settings"?: Property$FontFeatureSettings | Array<Property$FontFeatureSettings>, + "-webkit-font-kerning"?: Property$FontKerning | Array<Property$FontKerning>, + "-webkit-font-smoothing"?: Property$FontSmooth<TLength> | Array<Property$FontSmooth<TLength>>, + "-webkit-font-variant-ligatures"?: Property$FontVariantLigatures | Array<Property$FontVariantLigatures>, + "-webkit-hyphenate-character"?: Property$HyphenateCharacter | Array<Property$HyphenateCharacter>, + "-webkit-hyphens"?: Property$Hyphens | Array<Property$Hyphens>, + "-webkit-initial-letter"?: Property$InitialLetter | Array<Property$InitialLetter>, + "-webkit-justify-content"?: Property$JustifyContent | Array<Property$JustifyContent>, + "-webkit-line-break"?: Property$LineBreak | Array<Property$LineBreak>, + "-webkit-line-clamp"?: Property$WebkitLineClamp | Array<Property$WebkitLineClamp>, + "-webkit-margin-end"?: Property$MarginInlineEnd<TLength> | Array<Property$MarginInlineEnd<TLength>>, + "-webkit-margin-start"?: Property$MarginInlineStart<TLength> | Array<Property$MarginInlineStart<TLength>>, + "-webkit-mask-attachment"?: Property$WebkitMaskAttachment | Array<Property$WebkitMaskAttachment>, + "-webkit-mask-box-image-outset"?: Property$MaskBorderOutset<TLength> | Array<Property$MaskBorderOutset<TLength>>, + "-webkit-mask-box-image-repeat"?: Property$MaskBorderRepeat | Array<Property$MaskBorderRepeat>, + "-webkit-mask-box-image-slice"?: Property$MaskBorderSlice | Array<Property$MaskBorderSlice>, + "-webkit-mask-box-image-source"?: Property$MaskBorderSource | Array<Property$MaskBorderSource>, + "-webkit-mask-box-image-width"?: Property$MaskBorderWidth<TLength> | Array<Property$MaskBorderWidth<TLength>>, + "-webkit-mask-clip"?: Property$WebkitMaskClip | Array<Property$WebkitMaskClip>, + "-webkit-mask-composite"?: Property$WebkitMaskComposite | Array<Property$WebkitMaskComposite>, + "-webkit-mask-image"?: Property$WebkitMaskImage | Array<Property$WebkitMaskImage>, + "-webkit-mask-origin"?: Property$WebkitMaskOrigin | Array<Property$WebkitMaskOrigin>, + "-webkit-mask-position"?: Property$WebkitMaskPosition<TLength> | Array<Property$WebkitMaskPosition<TLength>>, + "-webkit-mask-position-x"?: Property$WebkitMaskPositionX<TLength> | Array<Property$WebkitMaskPositionX<TLength>>, + "-webkit-mask-position-y"?: Property$WebkitMaskPositionY<TLength> | Array<Property$WebkitMaskPositionY<TLength>>, + "-webkit-mask-repeat"?: Property$WebkitMaskRepeat | Array<Property$WebkitMaskRepeat>, + "-webkit-mask-repeat-x"?: Property$WebkitMaskRepeatX | Array<Property$WebkitMaskRepeatX>, + "-webkit-mask-repeat-y"?: Property$WebkitMaskRepeatY | Array<Property$WebkitMaskRepeatY>, + "-webkit-mask-size"?: Property$WebkitMaskSize<TLength> | Array<Property$WebkitMaskSize<TLength>>, + "-webkit-max-inline-size"?: Property$MaxInlineSize<TLength> | Array<Property$MaxInlineSize<TLength>>, + "-webkit-order"?: Property$Order | Array<Property$Order>, + "-webkit-overflow-scrolling"?: Property$WebkitOverflowScrolling | Array<Property$WebkitOverflowScrolling>, + "-webkit-padding-end"?: Property$PaddingInlineEnd<TLength> | Array<Property$PaddingInlineEnd<TLength>>, + "-webkit-padding-start"?: Property$PaddingInlineStart<TLength> | Array<Property$PaddingInlineStart<TLength>>, + "-webkit-perspective"?: Property$Perspective<TLength> | Array<Property$Perspective<TLength>>, + "-webkit-perspective-origin"?: Property$PerspectiveOrigin<TLength> | Array<Property$PerspectiveOrigin<TLength>>, + "-webkit-print-color-adjust"?: Property$PrintColorAdjust | Array<Property$PrintColorAdjust>, + "-webkit-ruby-position"?: Property$RubyPosition | Array<Property$RubyPosition>, + "-webkit-scroll-snap-type"?: Property$ScrollSnapType | Array<Property$ScrollSnapType>, + "-webkit-shape-margin"?: Property$ShapeMargin<TLength> | Array<Property$ShapeMargin<TLength>>, + "-webkit-tap-highlight-color"?: Property$WebkitTapHighlightColor | Array<Property$WebkitTapHighlightColor>, + "-webkit-text-combine"?: Property$TextCombineUpright | Array<Property$TextCombineUpright>, + "-webkit-text-decoration-color"?: Property$TextDecorationColor | Array<Property$TextDecorationColor>, + "-webkit-text-decoration-line"?: Property$TextDecorationLine | Array<Property$TextDecorationLine>, + "-webkit-text-decoration-skip"?: Property$TextDecorationSkip | Array<Property$TextDecorationSkip>, + "-webkit-text-decoration-style"?: Property$TextDecorationStyle | Array<Property$TextDecorationStyle>, + "-webkit-text-emphasis-color"?: Property$TextEmphasisColor | Array<Property$TextEmphasisColor>, + "-webkit-text-emphasis-position"?: Property$TextEmphasisPosition | Array<Property$TextEmphasisPosition>, + "-webkit-text-emphasis-style"?: Property$TextEmphasisStyle | Array<Property$TextEmphasisStyle>, + "-webkit-text-fill-color"?: Property$WebkitTextFillColor | Array<Property$WebkitTextFillColor>, + "-webkit-text-orientation"?: Property$TextOrientation | Array<Property$TextOrientation>, + "-webkit-text-size-adjust"?: Property$TextSizeAdjust | Array<Property$TextSizeAdjust>, + "-webkit-text-stroke-color"?: Property$WebkitTextStrokeColor | Array<Property$WebkitTextStrokeColor>, + "-webkit-text-stroke-width"?: Property$WebkitTextStrokeWidth<TLength> | Array<Property$WebkitTextStrokeWidth<TLength>>, + "-webkit-text-underline-position"?: Property$TextUnderlinePosition | Array<Property$TextUnderlinePosition>, + "-webkit-touch-callout"?: Property$WebkitTouchCallout | Array<Property$WebkitTouchCallout>, + "-webkit-transform"?: Property$Transform | Array<Property$Transform>, + "-webkit-transform-origin"?: Property$TransformOrigin<TLength> | Array<Property$TransformOrigin<TLength>>, + "-webkit-transform-style"?: Property$TransformStyle | Array<Property$TransformStyle>, + "-webkit-transition-delay"?: Property$TransitionDelay<TTime> | Array<Property$TransitionDelay<TTime>>, + "-webkit-transition-duration"?: Property$TransitionDuration<TTime> | Array<Property$TransitionDuration<TTime>>, + "-webkit-transition-property"?: Property$TransitionProperty | Array<Property$TransitionProperty>, + "-webkit-transition-timing-function"?: Property$TransitionTimingFunction | Array<Property$TransitionTimingFunction>, + "-webkit-user-modify"?: Property$WebkitUserModify | Array<Property$WebkitUserModify>, + "-webkit-user-select"?: Property$UserSelect | Array<Property$UserSelect>, + "-webkit-writing-mode"?: Property$WritingMode | Array<Property$WritingMode>, +|}; + +export type VendorShorthandPropertiesHyphenFallback<TLength = string | 0, TTime = string> = {| + "-moz-animation"?: Property$Animation<TTime> | Array<Property$Animation<TTime>>, + "-moz-border-image"?: Property$BorderImage | Array<Property$BorderImage>, + "-moz-column-rule"?: Property$ColumnRule<TLength> | Array<Property$ColumnRule<TLength>>, + "-moz-columns"?: Property$Columns<TLength> | Array<Property$Columns<TLength>>, + "-moz-outline-radius"?: Property$MozOutlineRadius<TLength> | Array<Property$MozOutlineRadius<TLength>>, + "-ms-content-zoom-limit"?: Property$MsContentZoomLimit | Array<Property$MsContentZoomLimit>, + "-ms-content-zoom-snap"?: Property$MsContentZoomSnap | Array<Property$MsContentZoomSnap>, + "-ms-flex"?: Property$Flex<TLength> | Array<Property$Flex<TLength>>, + "-ms-scroll-limit"?: Property$MsScrollLimit | Array<Property$MsScrollLimit>, + "-ms-scroll-snap-x"?: Property$MsScrollSnapX | Array<Property$MsScrollSnapX>, + "-ms-scroll-snap-y"?: Property$MsScrollSnapY | Array<Property$MsScrollSnapY>, + "-ms-transition"?: Property$Transition<TTime> | Array<Property$Transition<TTime>>, + "-webkit-animation"?: Property$Animation<TTime> | Array<Property$Animation<TTime>>, + "-webkit-border-before"?: Property$WebkitBorderBefore<TLength> | Array<Property$WebkitBorderBefore<TLength>>, + "-webkit-border-image"?: Property$BorderImage | Array<Property$BorderImage>, + "-webkit-border-radius"?: Property$BorderRadius<TLength> | Array<Property$BorderRadius<TLength>>, + "-webkit-column-rule"?: Property$ColumnRule<TLength> | Array<Property$ColumnRule<TLength>>, + "-webkit-columns"?: Property$Columns<TLength> | Array<Property$Columns<TLength>>, + "-webkit-flex"?: Property$Flex<TLength> | Array<Property$Flex<TLength>>, + "-webkit-flex-flow"?: Property$FlexFlow | Array<Property$FlexFlow>, + "-webkit-mask"?: Property$WebkitMask<TLength> | Array<Property$WebkitMask<TLength>>, + "-webkit-mask-box-image"?: Property$MaskBorder | Array<Property$MaskBorder>, + "-webkit-text-emphasis"?: Property$TextEmphasis | Array<Property$TextEmphasis>, + "-webkit-text-stroke"?: Property$WebkitTextStroke<TLength> | Array<Property$WebkitTextStroke<TLength>>, + "-webkit-transition"?: Property$Transition<TTime> | Array<Property$Transition<TTime>>, +|}; + +export type VendorPropertiesHyphenFallback<TLength = string | 0, TTime = string> = {| + ...VendorLonghandPropertiesHyphenFallback<TLength, TTime>, + ...VendorShorthandPropertiesHyphenFallback<TLength, TTime>, +|}; + +export type ObsoletePropertiesHyphenFallback<TLength = string | 0, TTime = string> = {| + azimuth?: Property$Azimuth | Array<Property$Azimuth>, + "box-align"?: Property$BoxAlign | Array<Property$BoxAlign>, + "box-direction"?: Property$BoxDirection | Array<Property$BoxDirection>, + "box-flex"?: Property$BoxFlex | Array<Property$BoxFlex>, + "box-flex-group"?: Property$BoxFlexGroup | Array<Property$BoxFlexGroup>, + "box-lines"?: Property$BoxLines | Array<Property$BoxLines>, + "box-ordinal-group"?: Property$BoxOrdinalGroup | Array<Property$BoxOrdinalGroup>, + "box-orient"?: Property$BoxOrient | Array<Property$BoxOrient>, + "box-pack"?: Property$BoxPack | Array<Property$BoxPack>, + clip?: Property$Clip | Array<Property$Clip>, + "grid-column-gap"?: Property$GridColumnGap<TLength> | Array<Property$GridColumnGap<TLength>>, + "grid-gap"?: Property$GridGap<TLength> | Array<Property$GridGap<TLength>>, + "grid-row-gap"?: Property$GridRowGap<TLength> | Array<Property$GridRowGap<TLength>>, + "ime-mode"?: Property$ImeMode | Array<Property$ImeMode>, + "offset-block"?: Property$InsetBlock<TLength> | Array<Property$InsetBlock<TLength>>, + "offset-block-end"?: Property$InsetBlockEnd<TLength> | Array<Property$InsetBlockEnd<TLength>>, + "offset-block-start"?: Property$InsetBlockStart<TLength> | Array<Property$InsetBlockStart<TLength>>, + "offset-inline"?: Property$InsetInline<TLength> | Array<Property$InsetInline<TLength>>, + "offset-inline-end"?: Property$InsetInlineEnd<TLength> | Array<Property$InsetInlineEnd<TLength>>, + "offset-inline-start"?: Property$InsetInlineStart<TLength> | Array<Property$InsetInlineStart<TLength>>, + "scroll-snap-coordinate"?: Property$ScrollSnapCoordinate<TLength> | Array<Property$ScrollSnapCoordinate<TLength>>, + "scroll-snap-destination"?: Property$ScrollSnapDestination<TLength> | Array<Property$ScrollSnapDestination<TLength>>, + "scroll-snap-points-x"?: Property$ScrollSnapPointsX | Array<Property$ScrollSnapPointsX>, + "scroll-snap-points-y"?: Property$ScrollSnapPointsY | Array<Property$ScrollSnapPointsY>, + "scroll-snap-type-x"?: Property$ScrollSnapTypeX | Array<Property$ScrollSnapTypeX>, + "scroll-snap-type-y"?: Property$ScrollSnapTypeY | Array<Property$ScrollSnapTypeY>, + "-khtml-box-align"?: Property$BoxAlign | Array<Property$BoxAlign>, + "-khtml-box-direction"?: Property$BoxDirection | Array<Property$BoxDirection>, + "-khtml-box-flex"?: Property$BoxFlex | Array<Property$BoxFlex>, + "-khtml-box-flex-group"?: Property$BoxFlexGroup | Array<Property$BoxFlexGroup>, + "-khtml-box-lines"?: Property$BoxLines | Array<Property$BoxLines>, + "-khtml-box-ordinal-group"?: Property$BoxOrdinalGroup | Array<Property$BoxOrdinalGroup>, + "-khtml-box-orient"?: Property$BoxOrient | Array<Property$BoxOrient>, + "-khtml-box-pack"?: Property$BoxPack | Array<Property$BoxPack>, + "-khtml-line-break"?: Property$LineBreak | Array<Property$LineBreak>, + "-khtml-opacity"?: Property$Opacity | Array<Property$Opacity>, + "-khtml-user-select"?: Property$UserSelect | Array<Property$UserSelect>, + "-moz-backface-visibility"?: Property$BackfaceVisibility | Array<Property$BackfaceVisibility>, + "-moz-background-clip"?: Property$BackgroundClip | Array<Property$BackgroundClip>, + "-moz-background-inline-policy"?: Property$BoxDecorationBreak | Array<Property$BoxDecorationBreak>, + "-moz-background-origin"?: Property$BackgroundOrigin | Array<Property$BackgroundOrigin>, + "-moz-background-size"?: Property$BackgroundSize<TLength> | Array<Property$BackgroundSize<TLength>>, + "-moz-border-radius"?: Property$BorderRadius<TLength> | Array<Property$BorderRadius<TLength>>, + "-moz-border-radius-bottomleft"?: Property$BorderBottomLeftRadius<TLength> | Array<Property$BorderBottomLeftRadius<TLength>>, + "-moz-border-radius-bottomright"?: Property$BorderBottomRightRadius<TLength> | Array<Property$BorderBottomRightRadius<TLength>>, + "-moz-border-radius-topleft"?: Property$BorderTopLeftRadius<TLength> | Array<Property$BorderTopLeftRadius<TLength>>, + "-moz-border-radius-topright"?: Property$BorderTopRightRadius<TLength> | Array<Property$BorderTopRightRadius<TLength>>, + "-moz-box-align"?: Property$BoxAlign | Array<Property$BoxAlign>, + "-moz-box-direction"?: Property$BoxDirection | Array<Property$BoxDirection>, + "-moz-box-flex"?: Property$BoxFlex | Array<Property$BoxFlex>, + "-moz-box-ordinal-group"?: Property$BoxOrdinalGroup | Array<Property$BoxOrdinalGroup>, + "-moz-box-orient"?: Property$BoxOrient | Array<Property$BoxOrient>, + "-moz-box-pack"?: Property$BoxPack | Array<Property$BoxPack>, + "-moz-box-shadow"?: Property$BoxShadow | Array<Property$BoxShadow>, + "-moz-float-edge"?: Property$MozFloatEdge | Array<Property$MozFloatEdge>, + "-moz-force-broken-image-icon"?: Property$MozForceBrokenImageIcon | Array<Property$MozForceBrokenImageIcon>, + "-moz-opacity"?: Property$Opacity | Array<Property$Opacity>, + "-moz-outline"?: Property$Outline<TLength> | Array<Property$Outline<TLength>>, + "-moz-outline-color"?: Property$OutlineColor | Array<Property$OutlineColor>, + "-moz-outline-style"?: Property$OutlineStyle | Array<Property$OutlineStyle>, + "-moz-outline-width"?: Property$OutlineWidth<TLength> | Array<Property$OutlineWidth<TLength>>, + "-moz-perspective"?: Property$Perspective<TLength> | Array<Property$Perspective<TLength>>, + "-moz-perspective-origin"?: Property$PerspectiveOrigin<TLength> | Array<Property$PerspectiveOrigin<TLength>>, + "-moz-text-align-last"?: Property$TextAlignLast | Array<Property$TextAlignLast>, + "-moz-text-decoration-color"?: Property$TextDecorationColor | Array<Property$TextDecorationColor>, + "-moz-text-decoration-line"?: Property$TextDecorationLine | Array<Property$TextDecorationLine>, + "-moz-text-decoration-style"?: Property$TextDecorationStyle | Array<Property$TextDecorationStyle>, + "-moz-transform"?: Property$Transform | Array<Property$Transform>, + "-moz-transform-origin"?: Property$TransformOrigin<TLength> | Array<Property$TransformOrigin<TLength>>, + "-moz-transform-style"?: Property$TransformStyle | Array<Property$TransformStyle>, + "-moz-transition"?: Property$Transition<TTime> | Array<Property$Transition<TTime>>, + "-moz-transition-delay"?: Property$TransitionDelay<TTime> | Array<Property$TransitionDelay<TTime>>, + "-moz-transition-duration"?: Property$TransitionDuration<TTime> | Array<Property$TransitionDuration<TTime>>, + "-moz-transition-property"?: Property$TransitionProperty | Array<Property$TransitionProperty>, + "-moz-transition-timing-function"?: Property$TransitionTimingFunction | Array<Property$TransitionTimingFunction>, + "-moz-user-input"?: Property$MozUserInput | Array<Property$MozUserInput>, + "-ms-ime-mode"?: Property$ImeMode | Array<Property$ImeMode>, + "-o-animation"?: Property$Animation<TTime> | Array<Property$Animation<TTime>>, + "-o-animation-delay"?: Property$AnimationDelay<TTime> | Array<Property$AnimationDelay<TTime>>, + "-o-animation-direction"?: Property$AnimationDirection | Array<Property$AnimationDirection>, + "-o-animation-duration"?: Property$AnimationDuration<TTime> | Array<Property$AnimationDuration<TTime>>, + "-o-animation-fill-mode"?: Property$AnimationFillMode | Array<Property$AnimationFillMode>, + "-o-animation-iteration-count"?: Property$AnimationIterationCount | Array<Property$AnimationIterationCount>, + "-o-animation-name"?: Property$AnimationName | Array<Property$AnimationName>, + "-o-animation-play-state"?: Property$AnimationPlayState | Array<Property$AnimationPlayState>, + "-o-animation-timing-function"?: Property$AnimationTimingFunction | Array<Property$AnimationTimingFunction>, + "-o-background-size"?: Property$BackgroundSize<TLength> | Array<Property$BackgroundSize<TLength>>, + "-o-border-image"?: Property$BorderImage | Array<Property$BorderImage>, + "-o-object-fit"?: Property$ObjectFit | Array<Property$ObjectFit>, + "-o-object-position"?: Property$ObjectPosition<TLength> | Array<Property$ObjectPosition<TLength>>, + "-o-tab-size"?: Property$TabSize<TLength> | Array<Property$TabSize<TLength>>, + "-o-text-overflow"?: Property$TextOverflow | Array<Property$TextOverflow>, + "-o-transform"?: Property$Transform | Array<Property$Transform>, + "-o-transform-origin"?: Property$TransformOrigin<TLength> | Array<Property$TransformOrigin<TLength>>, + "-o-transition"?: Property$Transition<TTime> | Array<Property$Transition<TTime>>, + "-o-transition-delay"?: Property$TransitionDelay<TTime> | Array<Property$TransitionDelay<TTime>>, + "-o-transition-duration"?: Property$TransitionDuration<TTime> | Array<Property$TransitionDuration<TTime>>, + "-o-transition-property"?: Property$TransitionProperty | Array<Property$TransitionProperty>, + "-o-transition-timing-function"?: Property$TransitionTimingFunction | Array<Property$TransitionTimingFunction>, + "-webkit-box-align"?: Property$BoxAlign | Array<Property$BoxAlign>, + "-webkit-box-direction"?: Property$BoxDirection | Array<Property$BoxDirection>, + "-webkit-box-flex"?: Property$BoxFlex | Array<Property$BoxFlex>, + "-webkit-box-flex-group"?: Property$BoxFlexGroup | Array<Property$BoxFlexGroup>, + "-webkit-box-lines"?: Property$BoxLines | Array<Property$BoxLines>, + "-webkit-box-ordinal-group"?: Property$BoxOrdinalGroup | Array<Property$BoxOrdinalGroup>, + "-webkit-box-orient"?: Property$BoxOrient | Array<Property$BoxOrient>, + "-webkit-box-pack"?: Property$BoxPack | Array<Property$BoxPack>, +|}; + +export type SvgPropertiesHyphenFallback<TLength = string | 0, TTime = string> = {| + "alignment-baseline"?: Property$AlignmentBaseline | Array<Property$AlignmentBaseline>, + "baseline-shift"?: Property$BaselineShift<TLength> | Array<Property$BaselineShift<TLength>>, + clip?: Property$Clip | Array<Property$Clip>, + "clip-path"?: Property$ClipPath | Array<Property$ClipPath>, + "clip-rule"?: Property$ClipRule | Array<Property$ClipRule>, + color?: Property$Color | Array<Property$Color>, + "color-interpolation"?: Property$ColorInterpolation | Array<Property$ColorInterpolation>, + "color-rendering"?: Property$ColorRendering | Array<Property$ColorRendering>, + cursor?: Property$Cursor | Array<Property$Cursor>, + direction?: Property$Direction | Array<Property$Direction>, + display?: Property$Display | Array<Property$Display>, + "dominant-baseline"?: Property$DominantBaseline | Array<Property$DominantBaseline>, + fill?: Property$Fill | Array<Property$Fill>, + "fill-opacity"?: Property$FillOpacity | Array<Property$FillOpacity>, + "fill-rule"?: Property$FillRule | Array<Property$FillRule>, + filter?: Property$Filter | Array<Property$Filter>, + "flood-color"?: Property$FloodColor | Array<Property$FloodColor>, + "flood-opacity"?: Property$FloodOpacity | Array<Property$FloodOpacity>, + font?: Property$Font | Array<Property$Font>, + "font-family"?: Property$FontFamily | Array<Property$FontFamily>, + "font-size"?: Property$FontSize<TLength> | Array<Property$FontSize<TLength>>, + "font-size-adjust"?: Property$FontSizeAdjust | Array<Property$FontSizeAdjust>, + "font-stretch"?: Property$FontStretch | Array<Property$FontStretch>, + "font-style"?: Property$FontStyle | Array<Property$FontStyle>, + "font-variant"?: Property$FontVariant | Array<Property$FontVariant>, + "font-weight"?: Property$FontWeight | Array<Property$FontWeight>, + "glyph-orientation-vertical"?: Property$GlyphOrientationVertical | Array<Property$GlyphOrientationVertical>, + "image-rendering"?: Property$ImageRendering | Array<Property$ImageRendering>, + "letter-spacing"?: Property$LetterSpacing<TLength> | Array<Property$LetterSpacing<TLength>>, + "lighting-color"?: Property$LightingColor | Array<Property$LightingColor>, + "line-height"?: Property$LineHeight<TLength> | Array<Property$LineHeight<TLength>>, + marker?: Property$Marker | Array<Property$Marker>, + "marker-end"?: Property$MarkerEnd | Array<Property$MarkerEnd>, + "marker-mid"?: Property$MarkerMid | Array<Property$MarkerMid>, + "marker-start"?: Property$MarkerStart | Array<Property$MarkerStart>, + mask?: Property$Mask<TLength> | Array<Property$Mask<TLength>>, + opacity?: Property$Opacity | Array<Property$Opacity>, + overflow?: Property$Overflow | Array<Property$Overflow>, + "paint-order"?: Property$PaintOrder | Array<Property$PaintOrder>, + "pointer-events"?: Property$PointerEvents | Array<Property$PointerEvents>, + "shape-rendering"?: Property$ShapeRendering | Array<Property$ShapeRendering>, + "stop-color"?: Property$StopColor | Array<Property$StopColor>, + "stop-opacity"?: Property$StopOpacity | Array<Property$StopOpacity>, + stroke?: Property$Stroke | Array<Property$Stroke>, + "stroke-dasharray"?: Property$StrokeDasharray<TLength> | Array<Property$StrokeDasharray<TLength>>, + "stroke-dashoffset"?: Property$StrokeDashoffset<TLength> | Array<Property$StrokeDashoffset<TLength>>, + "stroke-linecap"?: Property$StrokeLinecap | Array<Property$StrokeLinecap>, + "stroke-linejoin"?: Property$StrokeLinejoin | Array<Property$StrokeLinejoin>, + "stroke-miterlimit"?: Property$StrokeMiterlimit | Array<Property$StrokeMiterlimit>, + "stroke-opacity"?: Property$StrokeOpacity | Array<Property$StrokeOpacity>, + "stroke-width"?: Property$StrokeWidth<TLength> | Array<Property$StrokeWidth<TLength>>, + "text-anchor"?: Property$TextAnchor | Array<Property$TextAnchor>, + "text-decoration"?: Property$TextDecoration<TLength> | Array<Property$TextDecoration<TLength>>, + "text-rendering"?: Property$TextRendering | Array<Property$TextRendering>, + "unicode-bidi"?: Property$UnicodeBidi | Array<Property$UnicodeBidi>, + "vector-effect"?: Property$VectorEffect | Array<Property$VectorEffect>, + visibility?: Property$Visibility | Array<Property$Visibility>, + "white-space"?: Property$WhiteSpace | Array<Property$WhiteSpace>, + "word-spacing"?: Property$WordSpacing<TLength> | Array<Property$WordSpacing<TLength>>, + "writing-mode"?: Property$WritingMode | Array<Property$WritingMode>, +|}; + +export type PropertiesHyphenFallback<TLength = string | 0, TTime = string> = {| + ...StandardPropertiesHyphenFallback<TLength, TTime>, + ...VendorPropertiesHyphenFallback<TLength, TTime>, + ...ObsoletePropertiesHyphenFallback<TLength, TTime>, + ...SvgPropertiesHyphenFallback<TLength, TTime>, +|}; + +export type AtRules = + | "@charset" + | "@counter-style" + | "@document" + | "@font-face" + | "@font-feature-values" + | "@font-palette-values" + | "@import" + | "@keyframes" + | "@layer" + | "@media" + | "@namespace" + | "@page" + | "@property" + | "@scope" + | "@scroll-timeline" + | "@starting-style" + | "@supports" + | "@viewport"; + +export type AdvancedPseudos = + | ":-moz-any()" + | ":-moz-dir" + | ":-webkit-any()" + | "::cue" + | "::cue-region" + | "::part" + | "::slotted" + | "::view-transition-group" + | "::view-transition-image-pair" + | "::view-transition-new" + | "::view-transition-old" + | ":dir" + | ":has" + | ":host" + | ":host-context" + | ":is" + | ":lang" + | ":matches()" + | ":not" + | ":nth-child" + | ":nth-last-child" + | ":nth-last-of-type" + | ":nth-of-type" + | ":where"; + +export type SimplePseudos = + | ":-khtml-any-link" + | ":-moz-any-link" + | ":-moz-focusring" + | ":-moz-full-screen" + | ":-moz-placeholder" + | ":-moz-read-only" + | ":-moz-read-write" + | ":-moz-ui-invalid" + | ":-moz-ui-valid" + | ":-ms-fullscreen" + | ":-ms-input-placeholder" + | ":-webkit-any-link" + | ":-webkit-full-screen" + | "::-moz-placeholder" + | "::-moz-progress-bar" + | "::-moz-range-progress" + | "::-moz-range-thumb" + | "::-moz-range-track" + | "::-moz-selection" + | "::-ms-backdrop" + | "::-ms-browse" + | "::-ms-check" + | "::-ms-clear" + | "::-ms-expand" + | "::-ms-fill" + | "::-ms-fill-lower" + | "::-ms-fill-upper" + | "::-ms-input-placeholder" + | "::-ms-reveal" + | "::-ms-thumb" + | "::-ms-ticks-after" + | "::-ms-ticks-before" + | "::-ms-tooltip" + | "::-ms-track" + | "::-ms-value" + | "::-webkit-backdrop" + | "::-webkit-input-placeholder" + | "::-webkit-progress-bar" + | "::-webkit-progress-inner-value" + | "::-webkit-progress-value" + | "::-webkit-slider-runnable-track" + | "::-webkit-slider-thumb" + | "::after" + | "::backdrop" + | "::before" + | "::cue" + | "::cue-region" + | "::first-letter" + | "::first-line" + | "::grammar-error" + | "::marker" + | "::placeholder" + | "::selection" + | "::spelling-error" + | "::target-text" + | "::view-transition" + | ":active" + | ":after" + | ":any-link" + | ":before" + | ":blank" + | ":checked" + | ":current" + | ":default" + | ":defined" + | ":disabled" + | ":empty" + | ":enabled" + | ":first" + | ":first-child" + | ":first-letter" + | ":first-line" + | ":first-of-type" + | ":focus" + | ":focus-visible" + | ":focus-within" + | ":fullscreen" + | ":future" + | ":hover" + | ":in-range" + | ":indeterminate" + | ":invalid" + | ":last-child" + | ":last-of-type" + | ":left" + | ":link" + | ":local-link" + | ":nth-col" + | ":nth-last-col" + | ":only-child" + | ":only-of-type" + | ":optional" + | ":out-of-range" + | ":past" + | ":paused" + | ":picture-in-picture" + | ":placeholder-shown" + | ":playing" + | ":read-only" + | ":read-write" + | ":required" + | ":right" + | ":root" + | ":scope" + | ":target" + | ":target-within" + | ":user-invalid" + | ":user-valid" + | ":valid" + | ":visited"; + +export type Pseudos = AdvancedPseudos | SimplePseudos; + +export type HtmlAttributes = + | "[abbr]" + | "[accept-charset]" + | "[accept]" + | "[accesskey]" + | "[action]" + | "[align]" + | "[alink]" + | "[allow]" + | "[allowfullscreen]" + | "[allowpaymentrequest]" + | "[alt]" + | "[archive]" + | "[async]" + | "[attributionsrc]" + | "[autobuffer]" + | "[autocapitalize]" + | "[autocomplete]" + | "[autofocus]" + | "[autoplay]" + | "[axis]" + | "[background]" + | "[behavior]" + | "[bgcolor]" + | "[blocking]" + | "[border]" + | "[bottommargin]" + | "[browsingtopics]" + | "[capture]" + | "[cellpadding]" + | "[cellspacing]" + | "[char]" + | "[charoff]" + | "[charset]" + | "[checked]" + | "[cite]" + | "[class]" + | "[classid]" + | "[clear]" + | "[codebase]" + | "[codetype]" + | "[color]" + | "[cols]" + | "[colspan]" + | "[compact]" + | "[content]" + | "[contenteditable]" + | "[contextmenu]" + | "[controls]" + | "[coords]" + | "[credentialless]" + | "[crossorigin]" + | "[data]" + | "[datetime]" + | "[declare]" + | "[decoding]" + | "[default]" + | "[defer]" + | "[dir]" + | "[direction]" + | "[dirname]" + | "[disabled]" + | "[download]" + | "[draggable]" + | "[enctype]" + | "[enterkeyhint]" + | "[exportparts]" + | "[face]" + | "[fetchpriority]" + | "[for]" + | "[form]" + | "[formaction]" + | "[formenctype]" + | "[formmethod]" + | "[formnovalidate]" + | "[formtarget]" + | "[frame]" + | "[frameborder]" + | "[headers]" + | "[height]" + | "[hidden]" + | "[high]" + | "[href]" + | "[hreflang]" + | "[hspace]" + | "[http-equiv]" + | "[id]" + | "[imagesizes]" + | "[imagesrcset]" + | "[inert]" + | "[inputmode]" + | "[integrity]" + | "[is]" + | "[ismap]" + | "[itemid]" + | "[itemprop]" + | "[itemref]" + | "[itemscope]" + | "[itemtype]" + | "[kind]" + | "[label]" + | "[lang]" + | "[language]" + | "[leftmargin]" + | "[link]" + | "[list]" + | "[loading]" + | "[longdesc]" + | "[loop]" + | "[low]" + | "[manifest]" + | "[marginheight]" + | "[marginwidth]" + | "[max]" + | "[maxlength]" + | "[media]" + | "[method]" + | "[methods]" + | "[min]" + | "[minlength]" + | "[moz-opaque]" + | "[mozactionhint]" + | "[mozallowfullscreen]" + | "[msallowfullscreen]" + | "[multiple]" + | "[muted]" + | "[name]" + | "[nohref]" + | "[nomodule]" + | "[nonce]" + | "[noresize]" + | "[noshade]" + | "[novalidate]" + | "[nowrap]" + | "[onerror]" + | "[open]" + | "[optimum]" + | "[part]" + | "[pattern]" + | "[ping]" + | "[placeholder]" + | "[popover]" + | "[popovertarget]" + | "[popovertargetaction]" + | "[poster]" + | "[preload]" + | "[profile]" + | "[readonly]" + | "[referrerpolicy]" + | "[rel]" + | "[required]" + | "[rev]" + | "[reversed]" + | "[rightmargin]" + | "[rows]" + | "[rowspan]" + | "[rules]" + | "[sandbox]" + | "[scope]" + | "[scrollamount]" + | "[scrolldelay]" + | "[scrolling]" + | "[selected]" + | "[shadowroot]" + | "[shadowrootmode]" + | "[shape]" + | "[size]" + | "[sizes]" + | "[slot]" + | "[span]" + | "[spellcheck]" + | "[src]" + | "[srcdoc]" + | "[srclang]" + | "[srcset]" + | "[standby]" + | "[start]" + | "[step]" + | "[style]" + | "[summary]" + | "[tabindex]" + | "[target]" + | "[text]" + | "[title]" + | "[topmargin]" + | "[translate]" + | "[truespeed]" + | "[type]" + | "[usemap]" + | "[valign]" + | "[value]" + | "[valuetype]" + | "[version]" + | "[virtualkeyboardpolicy]" + | "[vlink]" + | "[vspace]" + | "[webkitallowfullscreen]" + | "[width]" + | "[wrap]" + | "[x-moz-errormessage]" + | "[xmlns]"; + +export type SvgAttributes = + | "[accent-height]" + | "[alignment-baseline]" + | "[allowReorder]" + | "[alphabetic]" + | "[animation]" + | "[arabic-form]" + | "[ascent]" + | "[async]" + | "[attributeName]" + | "[attributeType]" + | "[azimuth]" + | "[baseFrequency]" + | "[baseProfile]" + | "[baseline-shift]" + | "[bbox]" + | "[bias]" + | "[by]" + | "[calcMode]" + | "[cap-height]" + | "[class]" + | "[clip-path]" + | "[clip-rule]" + | "[clipPathUnits]" + | "[clip]" + | "[color-interpolation-filters]" + | "[color-interpolation]" + | "[color-profile]" + | "[color]" + | "[contentScriptType]" + | "[contentStyleType]" + | "[crossorigin]" + | "[cursor]" + | "[cx]" + | "[cy]" + | "[d]" + | "[decoding]" + | "[defer]" + | "[descent]" + | "[diffuseConstant]" + | "[direction]" + | "[display]" + | "[divisor]" + | "[document]" + | "[dominant-baseline]" + | "[download]" + | "[dur]" + | "[dx]" + | "[dy]" + | "[edgeMode]" + | "[elevation]" + | "[enable-background]" + | "[fill-opacity]" + | "[fill-rule]" + | "[fill]" + | "[filterRes]" + | "[filterUnits]" + | "[filter]" + | "[flood-color]" + | "[flood-opacity]" + | "[font-family]" + | "[font-size-adjust]" + | "[font-size]" + | "[font-stretch]" + | "[font-style]" + | "[font-variant]" + | "[font-weight]" + | "[format]" + | "[fr]" + | "[from]" + | "[fx]" + | "[fy]" + | "[g1]" + | "[g2]" + | "[global]" + | "[glyph-name]" + | "[glyph-orientation-horizontal]" + | "[glyph-orientation-vertical]" + | "[glyphRef]" + | "[gradientTransform]" + | "[gradientUnits]" + | "[graphical]" + | "[hanging]" + | "[height]" + | "[horiz-adv-x]" + | "[horiz-origin-x]" + | "[horiz-origin-y]" + | "[href]" + | "[hreflang]" + | "[id]" + | "[ideographic]" + | "[image-rendering]" + | "[in2]" + | "[in]" + | "[k1]" + | "[k2]" + | "[k3]" + | "[k4]" + | "[k]" + | "[kernelMatrix]" + | "[kernelUnitLength]" + | "[kerning]" + | "[keyPoints]" + | "[lang]" + | "[lengthAdjust]" + | "[letter-spacing]" + | "[lighting-color]" + | "[limitingConeAngle]" + | "[marker-end]" + | "[marker-mid]" + | "[marker-start]" + | "[markerHeight]" + | "[markerUnits]" + | "[markerWidth]" + | "[maskContentUnits]" + | "[maskUnits]" + | "[mask]" + | "[mathematical]" + | "[media]" + | "[mode]" + | "[name]" + | "[numOctaves]" + | "[offset]" + | "[opacity]" + | "[operator]" + | "[order]" + | "[orient]" + | "[orientation]" + | "[origin]" + | "[overflow]" + | "[overline-position]" + | "[overline-thickness]" + | "[paint-order]" + | "[panose-1]" + | "[path]" + | "[patternContentUnits]" + | "[patternTransform]" + | "[patternUnits]" + | "[ping]" + | "[pointer-events]" + | "[pointsAtX]" + | "[pointsAtY]" + | "[pointsAtZ]" + | "[points]" + | "[preserveAlpha]" + | "[preserveAspectRatio]" + | "[primitiveUnits]" + | "[r]" + | "[radius]" + | "[refX]" + | "[refY]" + | "[referrerpolicy]" + | "[rel]" + | "[repeatCount]" + | "[requiredExtensions]" + | "[requiredFeatures]" + | "[rotate]" + | "[rx]" + | "[ry]" + | "[scale]" + | "[seed]" + | "[shape-rendering]" + | "[side]" + | "[slope]" + | "[solid-color]" + | "[solid-opacity]" + | "[spacing]" + | "[specularConstant]" + | "[specularExponent]" + | "[spreadMethod]" + | "[startOffset]" + | "[stdDeviation]" + | "[stemh]" + | "[stemv]" + | "[stitchTiles]" + | "[stop-color]" + | "[stop-opacity]" + | "[strikethrough-position]" + | "[strikethrough-thickness]" + | "[string]" + | "[stroke-dasharray]" + | "[stroke-dashoffset]" + | "[stroke-linecap]" + | "[stroke-linejoin]" + | "[stroke-miterlimit]" + | "[stroke-opacity]" + | "[stroke-width]" + | "[stroke]" + | "[style]" + | "[surfaceScale]" + | "[systemLanguage]" + | "[tabindex]" + | "[targetX]" + | "[targetY]" + | "[target]" + | "[text-anchor]" + | "[text-decoration]" + | "[text-overflow]" + | "[text-rendering]" + | "[textLength]" + | "[title]" + | "[to]" + | "[transform-origin]" + | "[transform]" + | "[type]" + | "[u1]" + | "[u2]" + | "[underline-position]" + | "[underline-thickness]" + | "[unicode-bidi]" + | "[unicode-range]" + | "[unicode]" + | "[units-per-em]" + | "[v-alphabetic]" + | "[v-hanging]" + | "[v-ideographic]" + | "[v-mathematical]" + | "[values]" + | "[vector-effect]" + | "[version]" + | "[vert-adv-y]" + | "[vert-origin-x]" + | "[vert-origin-y]" + | "[viewBox]" + | "[viewTarget]" + | "[visibility]" + | "[white-space]" + | "[width]" + | "[widths]" + | "[word-spacing]" + | "[writing-mode]" + | "[x-height]" + | "[x1]" + | "[x2]" + | "[xChannelSelector]" + | "[x]" + | "[y1]" + | "[y2]" + | "[yChannelSelector]" + | "[y]" + | "[z]" + | "[zoomAndPan]"; + +export type Globals = "-moz-initial" | "inherit" | "initial" | "revert" | "revert-layer" | "unset"; + +export type Property$AccentColor = Globals | DataType$Color | "auto"; + +export type Property$AlignContent = Globals | DataType$ContentDistribution | DataType$ContentPosition | "baseline" | "normal" | string; + +export type Property$AlignItems = Globals | DataType$SelfPosition | "baseline" | "normal" | "stretch" | string; + +export type Property$AlignSelf = Globals | DataType$SelfPosition | "auto" | "baseline" | "normal" | "stretch" | string; + +export type Property$AlignTracks = Globals | DataType$ContentDistribution | DataType$ContentPosition | "baseline" | "normal" | string; + +export type Property$All = Globals; + +export type Property$Animation<TTime = string> = Globals | DataType$SingleAnimation<TTime> | string; + +export type Property$AnimationComposition = Globals | DataType$SingleAnimationComposition | string; + +export type Property$AnimationDelay<TTime = string> = Globals | TTime | string; + +export type Property$AnimationDirection = Globals | DataType$SingleAnimationDirection | string; + +export type Property$AnimationDuration<TTime = string> = Globals | TTime | string; + +export type Property$AnimationFillMode = Globals | DataType$SingleAnimationFillMode | string; + +export type Property$AnimationIterationCount = Globals | "infinite" | string | number; + +export type Property$AnimationName = Globals | "none" | string; + +export type Property$AnimationPlayState = Globals | "paused" | "running" | string; + +export type Property$AnimationRange<TLength = string | 0> = Globals | DataType$TimelineRangeName | TLength | "normal" | string; + +export type Property$AnimationRangeEnd<TLength = string | 0> = Globals | DataType$TimelineRangeName | TLength | "normal" | string; + +export type Property$AnimationRangeStart<TLength = string | 0> = Globals | DataType$TimelineRangeName | TLength | "normal" | string; + +export type Property$AnimationTimeline = Globals | DataType$SingleAnimationTimeline | string; + +export type Property$AnimationTimingFunction = Globals | DataType$EasingFunction | string; + +export type Property$Appearance = Globals | DataType$CompatAuto | "auto" | "menulist-button" | "none" | "textfield"; + +export type Property$AspectRatio = Globals | "auto" | string | number; + +export type Property$Azimuth = + | Globals + | "behind" + | "center" + | "center-left" + | "center-right" + | "far-left" + | "far-right" + | "left" + | "left-side" + | "leftwards" + | "right" + | "right-side" + | "rightwards" + | string; + +export type Property$BackdropFilter = Globals | "none" | string; + +export type Property$BackfaceVisibility = Globals | "hidden" | "visible"; + +export type Property$Background<TLength = string | 0> = Globals | DataType$FinalBgLayer<TLength> | string; + +export type Property$BackgroundAttachment = Globals | DataType$Attachment | string; + +export type Property$BackgroundBlendMode = Globals | DataType$BlendMode | string; + +export type Property$BackgroundClip = Globals | DataType$Box | string; + +export type Property$BackgroundColor = Globals | DataType$Color; + +export type Property$BackgroundImage = Globals | "none" | string; + +export type Property$BackgroundOrigin = Globals | DataType$Box | string; + +export type Property$BackgroundPosition<TLength = string | 0> = Globals | DataType$BgPosition<TLength> | string; + +export type Property$BackgroundPositionX<TLength = string | 0> = Globals | TLength | "center" | "left" | "right" | "x-end" | "x-start" | string; + +export type Property$BackgroundPositionY<TLength = string | 0> = Globals | TLength | "bottom" | "center" | "top" | "y-end" | "y-start" | string; + +export type Property$BackgroundRepeat = Globals | DataType$RepeatStyle | string; + +export type Property$BackgroundSize<TLength = string | 0> = Globals | DataType$BgSize<TLength> | string; + +export type Property$BlockOverflow = Globals | "clip" | "ellipsis" | string; + +export type Property$BlockSize<TLength = string | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "auto" + | "fit-content" + | "max-content" + | "min-content" + | string; + +export type Property$Border<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | DataType$LineStyle | DataType$Color | string; + +export type Property$BorderBlock<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | DataType$LineStyle | DataType$Color | string; + +export type Property$BorderBlockColor = Globals | DataType$Color | string; + +export type Property$BorderBlockEnd<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | DataType$LineStyle | DataType$Color | string; + +export type Property$BorderBlockEndColor = Globals | DataType$Color; + +export type Property$BorderBlockEndStyle = Globals | DataType$LineStyle; + +export type Property$BorderBlockEndWidth<TLength = string | 0> = Globals | DataType$LineWidth<TLength>; + +export type Property$BorderBlockStart<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | DataType$LineStyle | DataType$Color | string; + +export type Property$BorderBlockStartColor = Globals | DataType$Color; + +export type Property$BorderBlockStartStyle = Globals | DataType$LineStyle; + +export type Property$BorderBlockStartWidth<TLength = string | 0> = Globals | DataType$LineWidth<TLength>; + +export type Property$BorderBlockStyle = Globals | DataType$LineStyle; + +export type Property$BorderBlockWidth<TLength = string | 0> = Globals | DataType$LineWidth<TLength>; + +export type Property$BorderBottom<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | DataType$LineStyle | DataType$Color | string; + +export type Property$BorderBottomColor = Globals | DataType$Color; + +export type Property$BorderBottomLeftRadius<TLength = string | 0> = Globals | TLength | string; + +export type Property$BorderBottomRightRadius<TLength = string | 0> = Globals | TLength | string; + +export type Property$BorderBottomStyle = Globals | DataType$LineStyle; + +export type Property$BorderBottomWidth<TLength = string | 0> = Globals | DataType$LineWidth<TLength>; + +export type Property$BorderCollapse = Globals | "collapse" | "separate"; + +export type Property$BorderColor = Globals | DataType$Color | string; + +export type Property$BorderEndEndRadius<TLength = string | 0> = Globals | TLength | string; + +export type Property$BorderEndStartRadius<TLength = string | 0> = Globals | TLength | string; + +export type Property$BorderImage = Globals | "none" | "repeat" | "round" | "space" | "stretch" | string | number; + +export type Property$BorderImageOutset<TLength = string | 0> = Globals | TLength | string | number; + +export type Property$BorderImageRepeat = Globals | "repeat" | "round" | "space" | "stretch" | string; + +export type Property$BorderImageSlice = Globals | string | number; + +export type Property$BorderImageSource = Globals | "none" | string; + +export type Property$BorderImageWidth<TLength = string | 0> = Globals | TLength | "auto" | string | number; + +export type Property$BorderInline<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | DataType$LineStyle | DataType$Color | string; + +export type Property$BorderInlineColor = Globals | DataType$Color | string; + +export type Property$BorderInlineEnd<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | DataType$LineStyle | DataType$Color | string; + +export type Property$BorderInlineEndColor = Globals | DataType$Color; + +export type Property$BorderInlineEndStyle = Globals | DataType$LineStyle; + +export type Property$BorderInlineEndWidth<TLength = string | 0> = Globals | DataType$LineWidth<TLength>; + +export type Property$BorderInlineStart<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | DataType$LineStyle | DataType$Color | string; + +export type Property$BorderInlineStartColor = Globals | DataType$Color; + +export type Property$BorderInlineStartStyle = Globals | DataType$LineStyle; + +export type Property$BorderInlineStartWidth<TLength = string | 0> = Globals | DataType$LineWidth<TLength>; + +export type Property$BorderInlineStyle = Globals | DataType$LineStyle; + +export type Property$BorderInlineWidth<TLength = string | 0> = Globals | DataType$LineWidth<TLength>; + +export type Property$BorderLeft<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | DataType$LineStyle | DataType$Color | string; + +export type Property$BorderLeftColor = Globals | DataType$Color; + +export type Property$BorderLeftStyle = Globals | DataType$LineStyle; + +export type Property$BorderLeftWidth<TLength = string | 0> = Globals | DataType$LineWidth<TLength>; + +export type Property$BorderRadius<TLength = string | 0> = Globals | TLength | string; + +export type Property$BorderRight<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | DataType$LineStyle | DataType$Color | string; + +export type Property$BorderRightColor = Globals | DataType$Color; + +export type Property$BorderRightStyle = Globals | DataType$LineStyle; + +export type Property$BorderRightWidth<TLength = string | 0> = Globals | DataType$LineWidth<TLength>; + +export type Property$BorderSpacing<TLength = string | 0> = Globals | TLength | string; + +export type Property$BorderStartEndRadius<TLength = string | 0> = Globals | TLength | string; + +export type Property$BorderStartStartRadius<TLength = string | 0> = Globals | TLength | string; + +export type Property$BorderStyle = Globals | DataType$LineStyle | string; + +export type Property$BorderTop<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | DataType$LineStyle | DataType$Color | string; + +export type Property$BorderTopColor = Globals | DataType$Color; + +export type Property$BorderTopLeftRadius<TLength = string | 0> = Globals | TLength | string; + +export type Property$BorderTopRightRadius<TLength = string | 0> = Globals | TLength | string; + +export type Property$BorderTopStyle = Globals | DataType$LineStyle; + +export type Property$BorderTopWidth<TLength = string | 0> = Globals | DataType$LineWidth<TLength>; + +export type Property$BorderWidth<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | string; + +export type Property$Bottom<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$BoxAlign = Globals | "baseline" | "center" | "end" | "start" | "stretch"; + +export type Property$BoxDecorationBreak = Globals | "clone" | "slice"; + +export type Property$BoxDirection = Globals | "inherit" | "normal" | "reverse"; + +export type Property$BoxFlex = Globals | number; + +export type Property$BoxFlexGroup = Globals | number; + +export type Property$BoxLines = Globals | "multiple" | "single"; + +export type Property$BoxOrdinalGroup = Globals | number; + +export type Property$BoxOrient = Globals | "block-axis" | "horizontal" | "inherit" | "inline-axis" | "vertical"; + +export type Property$BoxPack = Globals | "center" | "end" | "justify" | "start"; + +export type Property$BoxShadow = Globals | "none" | string; + +export type Property$BoxSizing = Globals | "border-box" | "content-box"; + +export type Property$BreakAfter = + | Globals + | "all" + | "always" + | "auto" + | "avoid" + | "avoid-column" + | "avoid-page" + | "avoid-region" + | "column" + | "left" + | "page" + | "recto" + | "region" + | "right" + | "verso"; + +export type Property$BreakBefore = + | Globals + | "all" + | "always" + | "auto" + | "avoid" + | "avoid-column" + | "avoid-page" + | "avoid-region" + | "column" + | "left" + | "page" + | "recto" + | "region" + | "right" + | "verso"; + +export type Property$BreakInside = Globals | "auto" | "avoid" | "avoid-column" | "avoid-page" | "avoid-region"; + +export type Property$CaptionSide = Globals | "block-end" | "block-start" | "bottom" | "inline-end" | "inline-start" | "top"; + +export type Property$Caret = Globals | DataType$Color | "auto" | "bar" | "block" | "underscore" | string; + +export type Property$CaretColor = Globals | DataType$Color | "auto"; + +export type Property$CaretShape = Globals | "auto" | "bar" | "block" | "underscore"; + +export type Property$Clear = Globals | "both" | "inline-end" | "inline-start" | "left" | "none" | "right"; + +export type Property$Clip = Globals | "auto" | string; + +export type Property$ClipPath = Globals | DataType$GeometryBox | "none" | string; + +export type Property$Color = Globals | DataType$Color; + +export type Property$PrintColorAdjust = Globals | "economy" | "exact"; + +export type Property$ColorScheme = Globals | "dark" | "light" | "normal" | string; + +export type Property$ColumnCount = Globals | "auto" | number; + +export type Property$ColumnFill = Globals | "auto" | "balance" | "balance-all"; + +export type Property$ColumnGap<TLength = string | 0> = Globals | TLength | "normal" | string; + +export type Property$ColumnRule<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | DataType$LineStyle | DataType$Color | string; + +export type Property$ColumnRuleColor = Globals | DataType$Color; + +export type Property$ColumnRuleStyle = Globals | DataType$LineStyle | string; + +export type Property$ColumnRuleWidth<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | string; + +export type Property$ColumnSpan = Globals | "all" | "none"; + +export type Property$ColumnWidth<TLength = string | 0> = Globals | TLength | "auto"; + +export type Property$Columns<TLength = string | 0> = Globals | TLength | "auto" | string | number; + +export type Property$Contain = Globals | "content" | "inline-size" | "layout" | "none" | "paint" | "size" | "strict" | "style" | string; + +export type Property$ContainIntrinsicBlockSize<TLength = string | 0> = Globals | TLength | "none" | string; + +export type Property$ContainIntrinsicHeight<TLength = string | 0> = Globals | TLength | "none" | string; + +export type Property$ContainIntrinsicInlineSize<TLength = string | 0> = Globals | TLength | "none" | string; + +export type Property$ContainIntrinsicSize<TLength = string | 0> = Globals | TLength | "none" | string; + +export type Property$ContainIntrinsicWidth<TLength = string | 0> = Globals | TLength | "none" | string; + +export type Property$Container = Globals | "none" | string; + +export type Property$ContainerName = Globals | "none" | string; + +export type Property$ContainerType = Globals | "inline-size" | "normal" | "size"; + +export type Property$Content = Globals | DataType$ContentList | "none" | "normal" | string; + +export type Property$ContentVisibility = Globals | "auto" | "hidden" | "visible"; + +export type Property$CounterIncrement = Globals | "none" | string; + +export type Property$CounterReset = Globals | "none" | string; + +export type Property$CounterSet = Globals | "none" | string; + +export type Property$Cursor = + | Globals + | "-moz-grab" + | "-webkit-grab" + | "alias" + | "all-scroll" + | "auto" + | "cell" + | "col-resize" + | "context-menu" + | "copy" + | "crosshair" + | "default" + | "e-resize" + | "ew-resize" + | "grab" + | "grabbing" + | "help" + | "move" + | "n-resize" + | "ne-resize" + | "nesw-resize" + | "no-drop" + | "none" + | "not-allowed" + | "ns-resize" + | "nw-resize" + | "nwse-resize" + | "pointer" + | "progress" + | "row-resize" + | "s-resize" + | "se-resize" + | "sw-resize" + | "text" + | "vertical-text" + | "w-resize" + | "wait" + | "zoom-in" + | "zoom-out" + | string; + +export type Property$Direction = Globals | "ltr" | "rtl"; + +export type Property$Display = + | Globals + | DataType$DisplayOutside + | DataType$DisplayInside + | DataType$DisplayInternal + | DataType$DisplayLegacy + | "contents" + | "list-item" + | "none" + | string; + +export type Property$EmptyCells = Globals | "hide" | "show"; + +export type Property$Filter = Globals | "none" | string; + +export type Property$Flex<TLength = string | 0> = Globals | TLength | "auto" | "content" | "fit-content" | "max-content" | "min-content" | "none" | string | number; + +export type Property$FlexBasis<TLength = string | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-auto" + | "auto" + | "content" + | "fit-content" + | "max-content" + | "min-content" + | string; + +export type Property$FlexDirection = Globals | "column" | "column-reverse" | "row" | "row-reverse"; + +export type Property$FlexFlow = Globals | "column" | "column-reverse" | "nowrap" | "row" | "row-reverse" | "wrap" | "wrap-reverse" | string; + +export type Property$FlexGrow = Globals | number; + +export type Property$FlexShrink = Globals | number; + +export type Property$FlexWrap = Globals | "nowrap" | "wrap" | "wrap-reverse"; + +export type Property$Float = Globals | "inline-end" | "inline-start" | "left" | "none" | "right"; + +export type Property$Font = Globals | "caption" | "icon" | "menu" | "message-box" | "small-caption" | "status-bar" | string; + +export type Property$FontFamily = Globals | DataType$GenericFamily | string; + +export type Property$FontFeatureSettings = Globals | "normal" | string; + +export type Property$FontKerning = Globals | "auto" | "none" | "normal"; + +export type Property$FontLanguageOverride = Globals | "normal" | string; + +export type Property$FontOpticalSizing = Globals | "auto" | "none"; + +export type Property$FontPalette = Globals | "dark" | "light" | "normal" | string; + +export type Property$FontSize<TLength = string | 0> = Globals | DataType$AbsoluteSize | TLength | "larger" | "smaller" | string; + +export type Property$FontSizeAdjust = Globals | "from-font" | "none" | string | number; + +export type Property$FontSmooth<TLength = string | 0> = Globals | DataType$AbsoluteSize | TLength | "always" | "auto" | "never"; + +export type Property$FontStretch = Globals | DataType$FontStretchAbsolute; + +export type Property$FontStyle = Globals | "italic" | "normal" | "oblique" | string; + +export type Property$FontSynthesis = Globals | "none" | "position" | "small-caps" | "style" | "weight" | string; + +export type Property$FontSynthesisPosition = Globals | "auto" | "none"; + +export type Property$FontSynthesisSmallCaps = Globals | "auto" | "none"; + +export type Property$FontSynthesisStyle = Globals | "auto" | "none"; + +export type Property$FontSynthesisWeight = Globals | "auto" | "none"; + +export type Property$FontVariant = + | Globals + | DataType$EastAsianVariantValues + | "all-petite-caps" + | "all-small-caps" + | "common-ligatures" + | "contextual" + | "diagonal-fractions" + | "discretionary-ligatures" + | "full-width" + | "historical-forms" + | "historical-ligatures" + | "lining-nums" + | "no-common-ligatures" + | "no-contextual" + | "no-discretionary-ligatures" + | "no-historical-ligatures" + | "none" + | "normal" + | "oldstyle-nums" + | "ordinal" + | "petite-caps" + | "proportional-nums" + | "proportional-width" + | "ruby" + | "slashed-zero" + | "small-caps" + | "stacked-fractions" + | "tabular-nums" + | "titling-caps" + | "unicase" + | string; + +export type Property$FontVariantAlternates = Globals | "historical-forms" | "normal" | string; + +export type Property$FontVariantCaps = Globals | "all-petite-caps" | "all-small-caps" | "normal" | "petite-caps" | "small-caps" | "titling-caps" | "unicase"; + +export type Property$FontVariantEastAsian = Globals | DataType$EastAsianVariantValues | "full-width" | "normal" | "proportional-width" | "ruby" | string; + +export type Property$FontVariantEmoji = Globals | "emoji" | "normal" | "text" | "unicode"; + +export type Property$FontVariantLigatures = + | Globals + | "common-ligatures" + | "contextual" + | "discretionary-ligatures" + | "historical-ligatures" + | "no-common-ligatures" + | "no-contextual" + | "no-discretionary-ligatures" + | "no-historical-ligatures" + | "none" + | "normal" + | string; + +export type Property$FontVariantNumeric = + | Globals + | "diagonal-fractions" + | "lining-nums" + | "normal" + | "oldstyle-nums" + | "ordinal" + | "proportional-nums" + | "slashed-zero" + | "stacked-fractions" + | "tabular-nums" + | string; + +export type Property$FontVariantPosition = Globals | "normal" | "sub" | "super"; + +export type Property$FontVariationSettings = Globals | "normal" | string; + +export type Property$FontWeight = Globals | DataType$FontWeightAbsolute | "bolder" | "lighter"; + +export type Property$ForcedColorAdjust = Globals | "auto" | "none"; + +export type Property$Gap<TLength = string | 0> = Globals | TLength | "normal" | string; + +export type Property$Grid = Globals | "none" | string; + +export type Property$GridArea = Globals | DataType$GridLine | string; + +export type Property$GridAutoColumns<TLength = string | 0> = Globals | DataType$TrackBreadth<TLength> | string; + +export type Property$GridAutoFlow = Globals | "column" | "dense" | "row" | string; + +export type Property$GridAutoRows<TLength = string | 0> = Globals | DataType$TrackBreadth<TLength> | string; + +export type Property$GridColumn = Globals | DataType$GridLine | string; + +export type Property$GridColumnEnd = Globals | DataType$GridLine; + +export type Property$GridColumnGap<TLength = string | 0> = Globals | TLength | string; + +export type Property$GridColumnStart = Globals | DataType$GridLine; + +export type Property$GridGap<TLength = string | 0> = Globals | TLength | string; + +export type Property$GridRow = Globals | DataType$GridLine | string; + +export type Property$GridRowEnd = Globals | DataType$GridLine; + +export type Property$GridRowGap<TLength = string | 0> = Globals | TLength | string; + +export type Property$GridRowStart = Globals | DataType$GridLine; + +export type Property$GridTemplate = Globals | "none" | string; + +export type Property$GridTemplateAreas = Globals | "none" | string; + +export type Property$GridTemplateColumns<TLength = string | 0> = Globals | DataType$TrackBreadth<TLength> | "none" | "subgrid" | string; + +export type Property$GridTemplateRows<TLength = string | 0> = Globals | DataType$TrackBreadth<TLength> | "none" | "subgrid" | string; + +export type Property$HangingPunctuation = Globals | "allow-end" | "first" | "force-end" | "last" | "none" | string; + +export type Property$Height<TLength = string | 0> = + | Globals + | TLength + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fit-content" + | "auto" + | "fit-content" + | "max-content" + | "min-content" + | string; + +export type Property$HyphenateCharacter = Globals | "auto" | string; + +export type Property$HyphenateLimitChars = Globals | "auto" | string | number; + +export type Property$Hyphens = Globals | "auto" | "manual" | "none"; + +export type Property$ImageOrientation = Globals | "flip" | "from-image" | string; + +export type Property$ImageRendering = Globals | "-moz-crisp-edges" | "-webkit-optimize-contrast" | "auto" | "crisp-edges" | "pixelated"; + +export type Property$ImageResolution = Globals | "from-image" | string; + +export type Property$ImeMode = Globals | "active" | "auto" | "disabled" | "inactive" | "normal"; + +export type Property$InitialLetter = Globals | "normal" | string | number; + +export type Property$InlineSize<TLength = string | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fill-available" + | "auto" + | "fit-content" + | "max-content" + | "min-content" + | string; + +export type Property$InputSecurity = Globals | "auto" | "none"; + +export type Property$Inset<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$InsetBlock<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$InsetBlockEnd<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$InsetBlockStart<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$InsetInline<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$InsetInlineEnd<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$InsetInlineStart<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$Isolation = Globals | "auto" | "isolate"; + +export type Property$JustifyContent = Globals | DataType$ContentDistribution | DataType$ContentPosition | "left" | "normal" | "right" | string; + +export type Property$JustifyItems = Globals | DataType$SelfPosition | "baseline" | "left" | "legacy" | "normal" | "right" | "stretch" | string; + +export type Property$JustifySelf = Globals | DataType$SelfPosition | "auto" | "baseline" | "left" | "normal" | "right" | "stretch" | string; + +export type Property$JustifyTracks = Globals | DataType$ContentDistribution | DataType$ContentPosition | "left" | "normal" | "right" | string; + +export type Property$Left<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$LetterSpacing<TLength = string | 0> = Globals | TLength | "normal"; + +export type Property$LineBreak = Globals | "anywhere" | "auto" | "loose" | "normal" | "strict"; + +export type Property$LineClamp = Globals | "none" | number; + +export type Property$LineHeight<TLength = string | 0> = Globals | TLength | "normal" | string | number; + +export type Property$LineHeightStep<TLength = string | 0> = Globals | TLength; + +export type Property$ListStyle = Globals | "inside" | "none" | "outside" | string; + +export type Property$ListStyleImage = Globals | "none" | string; + +export type Property$ListStylePosition = Globals | "inside" | "outside"; + +export type Property$ListStyleType = Globals | "none" | string; + +export type Property$Margin<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$MarginBlock<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$MarginBlockEnd<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$MarginBlockStart<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$MarginBottom<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$MarginInline<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$MarginInlineEnd<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$MarginInlineStart<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$MarginLeft<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$MarginRight<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$MarginTop<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$MarginTrim = Globals | "all" | "in-flow" | "none"; + +export type Property$Mask<TLength = string | 0> = Globals | DataType$MaskLayer<TLength> | string; + +export type Property$MaskBorder = Globals | "alpha" | "luminance" | "none" | "repeat" | "round" | "space" | "stretch" | string | number; + +export type Property$MaskBorderMode = Globals | "alpha" | "luminance"; + +export type Property$MaskBorderOutset<TLength = string | 0> = Globals | TLength | string | number; + +export type Property$MaskBorderRepeat = Globals | "repeat" | "round" | "space" | "stretch" | string; + +export type Property$MaskBorderSlice = Globals | string | number; + +export type Property$MaskBorderSource = Globals | "none" | string; + +export type Property$MaskBorderWidth<TLength = string | 0> = Globals | TLength | "auto" | string | number; + +export type Property$MaskClip = Globals | DataType$GeometryBox | "no-clip" | string; + +export type Property$MaskComposite = Globals | DataType$CompositingOperator | string; + +export type Property$MaskImage = Globals | "none" | string; + +export type Property$MaskMode = Globals | DataType$MaskingMode | string; + +export type Property$MaskOrigin = Globals | DataType$GeometryBox | string; + +export type Property$MaskPosition<TLength = string | 0> = Globals | DataType$Position<TLength> | string; + +export type Property$MaskRepeat = Globals | DataType$RepeatStyle | string; + +export type Property$MaskSize<TLength = string | 0> = Globals | DataType$BgSize<TLength> | string; + +export type Property$MaskType = Globals | "alpha" | "luminance"; + +export type Property$MasonryAutoFlow = Globals | "definite-first" | "next" | "ordered" | "pack" | string; + +export type Property$MathDepth = Globals | "auto-add" | string | number; + +export type Property$MathShift = Globals | "compact" | "normal"; + +export type Property$MathStyle = Globals | "compact" | "normal"; + +export type Property$MaxBlockSize<TLength = string | 0> = + | Globals + | TLength + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fill-available" + | "fit-content" + | "max-content" + | "min-content" + | "none" + | string; + +export type Property$MaxHeight<TLength = string | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fit-content" + | "-webkit-max-content" + | "-webkit-min-content" + | "fit-content" + | "intrinsic" + | "max-content" + | "min-content" + | "none" + | string; + +export type Property$MaxInlineSize<TLength = string | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fill-available" + | "fit-content" + | "max-content" + | "min-content" + | "none" + | string; + +export type Property$MaxLines = Globals | "none" | number; + +export type Property$MaxWidth<TLength = string | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fit-content" + | "-webkit-max-content" + | "-webkit-min-content" + | "fit-content" + | "intrinsic" + | "max-content" + | "min-content" + | "none" + | string; + +export type Property$MinBlockSize<TLength = string | 0> = + | Globals + | TLength + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fill-available" + | "auto" + | "fit-content" + | "max-content" + | "min-content" + | string; + +export type Property$MinHeight<TLength = string | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fit-content" + | "-webkit-max-content" + | "-webkit-min-content" + | "auto" + | "fit-content" + | "intrinsic" + | "max-content" + | "min-content" + | string; + +export type Property$MinInlineSize<TLength = string | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fill-available" + | "auto" + | "fit-content" + | "max-content" + | "min-content" + | string; + +export type Property$MinWidth<TLength = string | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fill-available" + | "-webkit-fit-content" + | "-webkit-max-content" + | "-webkit-min-content" + | "auto" + | "fit-content" + | "intrinsic" + | "max-content" + | "min-content" + | "min-intrinsic" + | string; + +export type Property$MixBlendMode = Globals | DataType$BlendMode | "plus-lighter"; + +export type Property$Offset<TLength = string | 0> = Globals | DataType$Position<TLength> | "auto" | "none" | "normal" | string; + +export type Property$OffsetDistance<TLength = string | 0> = Globals | TLength | string; + +export type Property$OffsetPath = Globals | "none" | string; + +export type Property$OffsetRotate = Globals | "auto" | "reverse" | string; + +export type Property$ObjectFit = Globals | "contain" | "cover" | "fill" | "none" | "scale-down"; + +export type Property$ObjectPosition<TLength = string | 0> = Globals | DataType$Position<TLength>; + +export type Property$OffsetAnchor<TLength = string | 0> = Globals | DataType$Position<TLength> | "auto"; + +export type Property$OffsetPosition<TLength = string | 0> = Globals | DataType$Position<TLength> | "auto" | "normal"; + +export type Property$Opacity = Globals | string | number; + +export type Property$Order = Globals | number; + +export type Property$Orphans = Globals | number; + +export type Property$Outline<TLength = string | 0> = Globals | DataType$Color | DataType$LineStyle | DataType$LineWidth<TLength> | "auto" | "invert" | string; + +export type Property$OutlineColor = Globals | DataType$Color | "invert"; + +export type Property$OutlineOffset<TLength = string | 0> = Globals | TLength; + +export type Property$OutlineStyle = Globals | DataType$LineStyle | "auto" | string; + +export type Property$OutlineWidth<TLength = string | 0> = Globals | DataType$LineWidth<TLength>; + +export type Property$Overflow = Globals | "-moz-hidden-unscrollable" | "auto" | "clip" | "hidden" | "scroll" | "visible" | string; + +export type Property$OverflowAnchor = Globals | "auto" | "none"; + +export type Property$OverflowBlock = Globals | "auto" | "clip" | "hidden" | "scroll" | "visible"; + +export type Property$OverflowClipBox = Globals | "content-box" | "padding-box"; + +export type Property$OverflowClipMargin<TLength = string | 0> = Globals | DataType$VisualBox | TLength | string; + +export type Property$OverflowInline = Globals | "auto" | "clip" | "hidden" | "scroll" | "visible"; + +export type Property$OverflowWrap = Globals | "anywhere" | "break-word" | "normal"; + +export type Property$OverflowX = Globals | "-moz-hidden-unscrollable" | "auto" | "clip" | "hidden" | "scroll" | "visible"; + +export type Property$OverflowY = Globals | "-moz-hidden-unscrollable" | "auto" | "clip" | "hidden" | "scroll" | "visible"; + +export type Property$Overlay = Globals | "auto" | "none"; + +export type Property$OverscrollBehavior = Globals | "auto" | "contain" | "none" | string; + +export type Property$OverscrollBehaviorBlock = Globals | "auto" | "contain" | "none"; + +export type Property$OverscrollBehaviorInline = Globals | "auto" | "contain" | "none"; + +export type Property$OverscrollBehaviorX = Globals | "auto" | "contain" | "none"; + +export type Property$OverscrollBehaviorY = Globals | "auto" | "contain" | "none"; + +export type Property$Padding<TLength = string | 0> = Globals | TLength | string; + +export type Property$PaddingBlock<TLength = string | 0> = Globals | TLength | string; + +export type Property$PaddingBlockEnd<TLength = string | 0> = Globals | TLength | string; + +export type Property$PaddingBlockStart<TLength = string | 0> = Globals | TLength | string; + +export type Property$PaddingBottom<TLength = string | 0> = Globals | TLength | string; + +export type Property$PaddingInline<TLength = string | 0> = Globals | TLength | string; + +export type Property$PaddingInlineEnd<TLength = string | 0> = Globals | TLength | string; + +export type Property$PaddingInlineStart<TLength = string | 0> = Globals | TLength | string; + +export type Property$PaddingLeft<TLength = string | 0> = Globals | TLength | string; + +export type Property$PaddingRight<TLength = string | 0> = Globals | TLength | string; + +export type Property$PaddingTop<TLength = string | 0> = Globals | TLength | string; + +export type Property$Page = Globals | "auto" | string; + +export type Property$PageBreakAfter = Globals | "always" | "auto" | "avoid" | "left" | "recto" | "right" | "verso"; + +export type Property$PageBreakBefore = Globals | "always" | "auto" | "avoid" | "left" | "recto" | "right" | "verso"; + +export type Property$PageBreakInside = Globals | "auto" | "avoid"; + +export type Property$PaintOrder = Globals | "fill" | "markers" | "normal" | "stroke" | string; + +export type Property$Perspective<TLength = string | 0> = Globals | TLength | "none"; + +export type Property$PerspectiveOrigin<TLength = string | 0> = Globals | DataType$Position<TLength>; + +export type Property$PlaceContent = Globals | DataType$ContentDistribution | DataType$ContentPosition | "baseline" | "normal" | string; + +export type Property$PlaceItems = Globals | DataType$SelfPosition | "baseline" | "normal" | "stretch" | string; + +export type Property$PlaceSelf = Globals | DataType$SelfPosition | "auto" | "baseline" | "normal" | "stretch" | string; + +export type Property$PointerEvents = Globals | "all" | "auto" | "fill" | "inherit" | "none" | "painted" | "stroke" | "visible" | "visibleFill" | "visiblePainted" | "visibleStroke"; + +export type Property$Position = Globals | "-webkit-sticky" | "absolute" | "fixed" | "relative" | "static" | "sticky"; + +export type Property$Quotes = Globals | "auto" | "none" | string; + +export type Property$Resize = Globals | "block" | "both" | "horizontal" | "inline" | "none" | "vertical"; + +export type Property$Right<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$Rotate = Globals | "none" | string; + +export type Property$RowGap<TLength = string | 0> = Globals | TLength | "normal" | string; + +export type Property$RubyAlign = Globals | "center" | "space-around" | "space-between" | "start"; + +export type Property$RubyMerge = Globals | "auto" | "collapse" | "separate"; + +export type Property$RubyPosition = Globals | "alternate" | "inter-character" | "over" | "under" | string; + +export type Property$Scale = Globals | "none" | string | number; + +export type Property$ScrollBehavior = Globals | "auto" | "smooth"; + +export type Property$ScrollMargin<TLength = string | 0> = Globals | TLength | string; + +export type Property$ScrollMarginBlock<TLength = string | 0> = Globals | TLength | string; + +export type Property$ScrollMarginBlockEnd<TLength = string | 0> = Globals | TLength; + +export type Property$ScrollMarginBlockStart<TLength = string | 0> = Globals | TLength; + +export type Property$ScrollMarginBottom<TLength = string | 0> = Globals | TLength; + +export type Property$ScrollMarginInline<TLength = string | 0> = Globals | TLength | string; + +export type Property$ScrollMarginInlineEnd<TLength = string | 0> = Globals | TLength; + +export type Property$ScrollMarginInlineStart<TLength = string | 0> = Globals | TLength; + +export type Property$ScrollMarginLeft<TLength = string | 0> = Globals | TLength; + +export type Property$ScrollMarginRight<TLength = string | 0> = Globals | TLength; + +export type Property$ScrollMarginTop<TLength = string | 0> = Globals | TLength; + +export type Property$ScrollPadding<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$ScrollPaddingBlock<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$ScrollPaddingBlockEnd<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$ScrollPaddingBlockStart<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$ScrollPaddingBottom<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$ScrollPaddingInline<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$ScrollPaddingInlineEnd<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$ScrollPaddingInlineStart<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$ScrollPaddingLeft<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$ScrollPaddingRight<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$ScrollPaddingTop<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$ScrollSnapAlign = Globals | "center" | "end" | "none" | "start" | string; + +export type Property$ScrollSnapCoordinate<TLength = string | 0> = Globals | DataType$Position<TLength> | "none" | string; + +export type Property$ScrollSnapDestination<TLength = string | 0> = Globals | DataType$Position<TLength>; + +export type Property$ScrollSnapPointsX = Globals | "none" | string; + +export type Property$ScrollSnapPointsY = Globals | "none" | string; + +export type Property$ScrollSnapStop = Globals | "always" | "normal"; + +export type Property$ScrollSnapType = Globals | "block" | "both" | "inline" | "none" | "x" | "y" | string; + +export type Property$ScrollSnapTypeX = Globals | "mandatory" | "none" | "proximity"; + +export type Property$ScrollSnapTypeY = Globals | "mandatory" | "none" | "proximity"; + +export type Property$ScrollTimeline = Globals | "none" | string; + +export type Property$ScrollTimelineAxis = Globals | "block" | "inline" | "x" | "y" | string; + +export type Property$ScrollTimelineName = Globals | "none" | string; + +export type Property$ScrollbarColor = Globals | "auto" | string; + +export type Property$ScrollbarGutter = Globals | "auto" | "stable" | string; + +export type Property$ScrollbarWidth = Globals | "auto" | "none" | "thin"; + +export type Property$ShapeImageThreshold = Globals | string | number; + +export type Property$ShapeMargin<TLength = string | 0> = Globals | TLength | string; + +export type Property$ShapeOutside = Globals | DataType$Box | "margin-box" | "none" | string; + +export type Property$TabSize<TLength = string | 0> = Globals | TLength | number; + +export type Property$TableLayout = Globals | "auto" | "fixed"; + +export type Property$TextAlign = Globals | "-webkit-match-parent" | "center" | "end" | "justify" | "left" | "match-parent" | "right" | "start"; + +export type Property$TextAlignLast = Globals | "auto" | "center" | "end" | "justify" | "left" | "right" | "start"; + +export type Property$TextCombineUpright = Globals | "all" | "none" | string; + +export type Property$TextDecoration<TLength = string | 0> = + | Globals + | DataType$Color + | TLength + | "auto" + | "blink" + | "dashed" + | "dotted" + | "double" + | "from-font" + | "grammar-error" + | "line-through" + | "none" + | "overline" + | "solid" + | "spelling-error" + | "underline" + | "wavy" + | string; + +export type Property$TextDecorationColor = Globals | DataType$Color; + +export type Property$TextDecorationLine = Globals | "blink" | "grammar-error" | "line-through" | "none" | "overline" | "spelling-error" | "underline" | string; + +export type Property$TextDecorationSkip = Globals | "box-decoration" | "edges" | "leading-spaces" | "none" | "objects" | "spaces" | "trailing-spaces" | string; + +export type Property$TextDecorationSkipInk = Globals | "all" | "auto" | "none"; + +export type Property$TextDecorationStyle = Globals | "dashed" | "dotted" | "double" | "solid" | "wavy"; + +export type Property$TextDecorationThickness<TLength = string | 0> = Globals | TLength | "auto" | "from-font" | string; + +export type Property$TextEmphasis = Globals | DataType$Color | "circle" | "dot" | "double-circle" | "filled" | "none" | "open" | "sesame" | "triangle" | string; + +export type Property$TextEmphasisColor = Globals | DataType$Color; + +export type Property$TextEmphasisPosition = Globals | string; + +export type Property$TextEmphasisStyle = Globals | "circle" | "dot" | "double-circle" | "filled" | "none" | "open" | "sesame" | "triangle" | string; + +export type Property$TextIndent<TLength = string | 0> = Globals | TLength | string; + +export type Property$TextJustify = Globals | "auto" | "inter-character" | "inter-word" | "none"; + +export type Property$TextOrientation = Globals | "mixed" | "sideways" | "upright"; + +export type Property$TextOverflow = Globals | "clip" | "ellipsis" | string; + +export type Property$TextRendering = Globals | "auto" | "geometricPrecision" | "optimizeLegibility" | "optimizeSpeed"; + +export type Property$TextShadow = Globals | "none" | string; + +export type Property$TextSizeAdjust = Globals | "auto" | "none" | string; + +export type Property$TextTransform = Globals | "capitalize" | "full-size-kana" | "full-width" | "lowercase" | "none" | "uppercase"; + +export type Property$TextUnderlineOffset<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$TextUnderlinePosition = Globals | "auto" | "from-font" | "left" | "right" | "under" | string; + +export type Property$TextWrap = Globals | "balance" | "nowrap" | "pretty" | "stable" | "wrap"; + +export type Property$TimelineScope = Globals | "none" | string; + +export type Property$Top<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$TouchAction = + | Globals + | "-ms-manipulation" + | "-ms-none" + | "-ms-pinch-zoom" + | "auto" + | "manipulation" + | "none" + | "pan-down" + | "pan-left" + | "pan-right" + | "pan-up" + | "pan-x" + | "pan-y" + | "pinch-zoom" + | string; + +export type Property$Transform = Globals | "none" | string; + +export type Property$TransformBox = Globals | "border-box" | "content-box" | "fill-box" | "stroke-box" | "view-box"; + +export type Property$TransformOrigin<TLength = string | 0> = Globals | TLength | "bottom" | "center" | "left" | "right" | "top" | string; + +export type Property$TransformStyle = Globals | "flat" | "preserve-3d"; + +export type Property$Transition<TTime = string> = Globals | DataType$SingleTransition<TTime> | string; + +export type Property$TransitionBehavior = Globals | "allow-discrete" | "normal" | string; + +export type Property$TransitionDelay<TTime = string> = Globals | TTime | string; + +export type Property$TransitionDuration<TTime = string> = Globals | TTime | string; + +export type Property$TransitionProperty = Globals | "all" | "none" | string; + +export type Property$TransitionTimingFunction = Globals | DataType$EasingFunction | string; + +export type Property$Translate<TLength = string | 0> = Globals | TLength | "none" | string; + +export type Property$UnicodeBidi = + | Globals + | "-moz-isolate" + | "-moz-isolate-override" + | "-moz-plaintext" + | "-webkit-isolate" + | "-webkit-isolate-override" + | "-webkit-plaintext" + | "bidi-override" + | "embed" + | "isolate" + | "isolate-override" + | "normal" + | "plaintext"; + +export type Property$UserSelect = Globals | "-moz-none" | "all" | "auto" | "contain" | "element" | "none" | "text"; + +export type Property$VerticalAlign<TLength = string | 0> = Globals | TLength | "baseline" | "bottom" | "middle" | "sub" | "super" | "text-bottom" | "text-top" | "top" | string; + +export type Property$ViewTimeline = Globals | "none" | string; + +export type Property$ViewTimelineAxis = Globals | "block" | "inline" | "x" | "y" | string; + +export type Property$ViewTimelineInset<TLength = string | 0> = Globals | TLength | "auto" | string; + +export type Property$ViewTimelineName = Globals | "none" | string; + +export type Property$ViewTransitionName = Globals | "none" | string; + +export type Property$Visibility = Globals | "collapse" | "hidden" | "visible"; + +export type Property$WhiteSpace = + | Globals + | "-moz-pre-wrap" + | "balance" + | "break-spaces" + | "collapse" + | "discard" + | "discard-after" + | "discard-before" + | "discard-inner" + | "none" + | "normal" + | "nowrap" + | "pre" + | "pre-line" + | "pre-wrap" + | "preserve" + | "preserve-breaks" + | "preserve-spaces" + | "pretty" + | "stable" + | "wrap" + | string; + +export type Property$WhiteSpaceCollapse = Globals | "break-spaces" | "collapse" | "discard" | "preserve" | "preserve-breaks" | "preserve-spaces"; + +export type Property$WhiteSpaceTrim = Globals | "discard-after" | "discard-before" | "discard-inner" | "none" | string; + +export type Property$Widows = Globals | number; + +export type Property$Width<TLength = string | 0> = + | Globals + | TLength + | "-moz-fit-content" + | "-moz-max-content" + | "-moz-min-content" + | "-webkit-fit-content" + | "-webkit-max-content" + | "auto" + | "fit-content" + | "intrinsic" + | "max-content" + | "min-content" + | "min-intrinsic" + | string; + +export type Property$WillChange = Globals | DataType$AnimateableFeature | "auto" | string; + +export type Property$WordBreak = Globals | "break-all" | "break-word" | "keep-all" | "normal"; + +export type Property$WordSpacing<TLength = string | 0> = Globals | TLength | "normal"; + +export type Property$WordWrap = Globals | "break-word" | "normal"; + +export type Property$WritingMode = Globals | "horizontal-tb" | "sideways-lr" | "sideways-rl" | "vertical-lr" | "vertical-rl"; + +export type Property$ZIndex = Globals | "auto" | number; + +export type Property$Zoom = Globals | "normal" | "reset" | string | number; + +export type Property$MozAppearance = + | Globals + | "-moz-mac-unified-toolbar" + | "-moz-win-borderless-glass" + | "-moz-win-browsertabbar-toolbox" + | "-moz-win-communications-toolbox" + | "-moz-win-communicationstext" + | "-moz-win-exclude-glass" + | "-moz-win-glass" + | "-moz-win-media-toolbox" + | "-moz-win-mediatext" + | "-moz-window-button-box" + | "-moz-window-button-box-maximized" + | "-moz-window-button-close" + | "-moz-window-button-maximize" + | "-moz-window-button-minimize" + | "-moz-window-button-restore" + | "-moz-window-frame-bottom" + | "-moz-window-frame-left" + | "-moz-window-frame-right" + | "-moz-window-titlebar" + | "-moz-window-titlebar-maximized" + | "button" + | "button-arrow-down" + | "button-arrow-next" + | "button-arrow-previous" + | "button-arrow-up" + | "button-bevel" + | "button-focus" + | "caret" + | "checkbox" + | "checkbox-container" + | "checkbox-label" + | "checkmenuitem" + | "dualbutton" + | "groupbox" + | "listbox" + | "listitem" + | "menuarrow" + | "menubar" + | "menucheckbox" + | "menuimage" + | "menuitem" + | "menuitemtext" + | "menulist" + | "menulist-button" + | "menulist-text" + | "menulist-textfield" + | "menupopup" + | "menuradio" + | "menuseparator" + | "meterbar" + | "meterchunk" + | "none" + | "progressbar" + | "progressbar-vertical" + | "progresschunk" + | "progresschunk-vertical" + | "radio" + | "radio-container" + | "radio-label" + | "radiomenuitem" + | "range" + | "range-thumb" + | "resizer" + | "resizerpanel" + | "scale-horizontal" + | "scale-vertical" + | "scalethumb-horizontal" + | "scalethumb-vertical" + | "scalethumbend" + | "scalethumbstart" + | "scalethumbtick" + | "scrollbarbutton-down" + | "scrollbarbutton-left" + | "scrollbarbutton-right" + | "scrollbarbutton-up" + | "scrollbarthumb-horizontal" + | "scrollbarthumb-vertical" + | "scrollbartrack-horizontal" + | "scrollbartrack-vertical" + | "searchfield" + | "separator" + | "sheet" + | "spinner" + | "spinner-downbutton" + | "spinner-textfield" + | "spinner-upbutton" + | "splitter" + | "statusbar" + | "statusbarpanel" + | "tab" + | "tab-scroll-arrow-back" + | "tab-scroll-arrow-forward" + | "tabpanel" + | "tabpanels" + | "textfield" + | "textfield-multiline" + | "toolbar" + | "toolbarbutton" + | "toolbarbutton-dropdown" + | "toolbargripper" + | "toolbox" + | "tooltip" + | "treeheader" + | "treeheadercell" + | "treeheadersortarrow" + | "treeitem" + | "treeline" + | "treetwisty" + | "treetwistyopen" + | "treeview"; + +export type Property$MozBinding = Globals | "none" | string; + +export type Property$MozBorderBottomColors = Globals | DataType$Color | "none" | string; + +export type Property$MozBorderLeftColors = Globals | DataType$Color | "none" | string; + +export type Property$MozBorderRightColors = Globals | DataType$Color | "none" | string; + +export type Property$MozBorderTopColors = Globals | DataType$Color | "none" | string; + +export type Property$MozContextProperties = Globals | "fill" | "fill-opacity" | "none" | "stroke" | "stroke-opacity" | string; + +export type Property$MozFloatEdge = Globals | "border-box" | "content-box" | "margin-box" | "padding-box"; + +export type Property$MozForceBrokenImageIcon = Globals | 0 | 1; + +export type Property$MozImageRegion = Globals | "auto" | string; + +export type Property$MozOrient = Globals | "block" | "horizontal" | "inline" | "vertical"; + +export type Property$MozOutlineRadius<TLength = string | 0> = Globals | TLength | string; + +export type Property$MozOutlineRadiusBottomleft<TLength = string | 0> = Globals | TLength | string; + +export type Property$MozOutlineRadiusBottomright<TLength = string | 0> = Globals | TLength | string; + +export type Property$MozOutlineRadiusTopleft<TLength = string | 0> = Globals | TLength | string; + +export type Property$MozOutlineRadiusTopright<TLength = string | 0> = Globals | TLength | string; + +export type Property$MozStackSizing = Globals | "ignore" | "stretch-to-fit"; + +export type Property$MozTextBlink = Globals | "blink" | "none"; + +export type Property$MozUserFocus = Globals | "ignore" | "none" | "normal" | "select-after" | "select-all" | "select-before" | "select-menu" | "select-same"; + +export type Property$MozUserInput = Globals | "auto" | "disabled" | "enabled" | "none"; + +export type Property$MozUserModify = Globals | "read-only" | "read-write" | "write-only"; + +export type Property$MozWindowDragging = Globals | "drag" | "no-drag"; + +export type Property$MozWindowShadow = Globals | "default" | "menu" | "none" | "sheet" | "tooltip"; + +export type Property$MsAccelerator = Globals | "false" | "true"; + +export type Property$MsBlockProgression = Globals | "bt" | "lr" | "rl" | "tb"; + +export type Property$MsContentZoomChaining = Globals | "chained" | "none"; + +export type Property$MsContentZoomLimit = Globals | string; + +export type Property$MsContentZoomLimitMax = Globals | string; + +export type Property$MsContentZoomLimitMin = Globals | string; + +export type Property$MsContentZoomSnap = Globals | "mandatory" | "none" | "proximity" | string; + +export type Property$MsContentZoomSnapPoints = Globals | string; + +export type Property$MsContentZoomSnapType = Globals | "mandatory" | "none" | "proximity"; + +export type Property$MsContentZooming = Globals | "none" | "zoom"; + +export type Property$MsFilter = Globals | string; + +export type Property$MsFlowFrom = Globals | "none" | string; + +export type Property$MsFlowInto = Globals | "none" | string; + +export type Property$MsGridColumns<TLength = string | 0> = Globals | DataType$TrackBreadth<TLength> | "none" | string; + +export type Property$MsGridRows<TLength = string | 0> = Globals | DataType$TrackBreadth<TLength> | "none" | string; + +export type Property$MsHighContrastAdjust = Globals | "auto" | "none"; + +export type Property$MsHyphenateLimitChars = Globals | "auto" | string | number; + +export type Property$MsHyphenateLimitLines = Globals | "no-limit" | number; + +export type Property$MsHyphenateLimitZone<TLength = string | 0> = Globals | TLength | string; + +export type Property$MsImeAlign = Globals | "after" | "auto"; + +export type Property$MsOverflowStyle = Globals | "-ms-autohiding-scrollbar" | "auto" | "none" | "scrollbar"; + +export type Property$MsScrollChaining = Globals | "chained" | "none"; + +export type Property$MsScrollLimit = Globals | string; + +export type Property$MsScrollLimitXMax<TLength = string | 0> = Globals | TLength | "auto"; + +export type Property$MsScrollLimitXMin<TLength = string | 0> = Globals | TLength; + +export type Property$MsScrollLimitYMax<TLength = string | 0> = Globals | TLength | "auto"; + +export type Property$MsScrollLimitYMin<TLength = string | 0> = Globals | TLength; + +export type Property$MsScrollRails = Globals | "none" | "railed"; + +export type Property$MsScrollSnapPointsX = Globals | string; + +export type Property$MsScrollSnapPointsY = Globals | string; + +export type Property$MsScrollSnapType = Globals | "mandatory" | "none" | "proximity"; + +export type Property$MsScrollSnapX = Globals | string; + +export type Property$MsScrollSnapY = Globals | string; + +export type Property$MsScrollTranslation = Globals | "none" | "vertical-to-horizontal"; + +export type Property$MsScrollbar3dlightColor = Globals | DataType$Color; + +export type Property$MsScrollbarArrowColor = Globals | DataType$Color; + +export type Property$MsScrollbarBaseColor = Globals | DataType$Color; + +export type Property$MsScrollbarDarkshadowColor = Globals | DataType$Color; + +export type Property$MsScrollbarFaceColor = Globals | DataType$Color; + +export type Property$MsScrollbarHighlightColor = Globals | DataType$Color; + +export type Property$MsScrollbarShadowColor = Globals | DataType$Color; + +export type Property$MsScrollbarTrackColor = Globals | DataType$Color; + +export type Property$MsTextAutospace = Globals | "ideograph-alpha" | "ideograph-numeric" | "ideograph-parenthesis" | "ideograph-space" | "none"; + +export type Property$MsTouchSelect = Globals | "grippers" | "none"; + +export type Property$MsUserSelect = Globals | "element" | "none" | "text"; + +export type Property$MsWrapFlow = Globals | "auto" | "both" | "clear" | "end" | "maximum" | "start"; + +export type Property$MsWrapMargin<TLength = string | 0> = Globals | TLength; + +export type Property$MsWrapThrough = Globals | "none" | "wrap"; + +export type Property$WebkitAppearance = + | Globals + | "-apple-pay-button" + | "button" + | "button-bevel" + | "caret" + | "checkbox" + | "default-button" + | "inner-spin-button" + | "listbox" + | "listitem" + | "media-controls-background" + | "media-controls-fullscreen-background" + | "media-current-time-display" + | "media-enter-fullscreen-button" + | "media-exit-fullscreen-button" + | "media-fullscreen-button" + | "media-mute-button" + | "media-overlay-play-button" + | "media-play-button" + | "media-seek-back-button" + | "media-seek-forward-button" + | "media-slider" + | "media-sliderthumb" + | "media-time-remaining-display" + | "media-toggle-closed-captions-button" + | "media-volume-slider" + | "media-volume-slider-container" + | "media-volume-sliderthumb" + | "menulist" + | "menulist-button" + | "menulist-text" + | "menulist-textfield" + | "meter" + | "none" + | "progress-bar" + | "progress-bar-value" + | "push-button" + | "radio" + | "searchfield" + | "searchfield-cancel-button" + | "searchfield-decoration" + | "searchfield-results-button" + | "searchfield-results-decoration" + | "slider-horizontal" + | "slider-vertical" + | "sliderthumb-horizontal" + | "sliderthumb-vertical" + | "square-button" + | "textarea" + | "textfield"; + +export type Property$WebkitBorderBefore<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | DataType$LineStyle | DataType$Color | string; + +export type Property$WebkitBorderBeforeColor = Globals | DataType$Color; + +export type Property$WebkitBorderBeforeStyle = Globals | DataType$LineStyle | string; + +export type Property$WebkitBorderBeforeWidth<TLength = string | 0> = Globals | DataType$LineWidth<TLength> | string; + +export type Property$WebkitBoxReflect<TLength = string | 0> = Globals | TLength | "above" | "below" | "left" | "right" | string; + +export type Property$WebkitLineClamp = Globals | "none" | number; + +export type Property$WebkitMask<TLength = string | 0> = + | Globals + | DataType$Position<TLength> + | DataType$RepeatStyle + | DataType$Box + | "border" + | "content" + | "none" + | "padding" + | "text" + | string; + +export type Property$WebkitMaskAttachment = Globals | DataType$Attachment | string; + +export type Property$WebkitMaskClip = Globals | DataType$Box | "border" | "content" | "padding" | "text" | string; + +export type Property$WebkitMaskComposite = Globals | DataType$CompositeStyle | string; + +export type Property$WebkitMaskImage = Globals | "none" | string; + +export type Property$WebkitMaskOrigin = Globals | DataType$Box | "border" | "content" | "padding" | string; + +export type Property$WebkitMaskPosition<TLength = string | 0> = Globals | DataType$Position<TLength> | string; + +export type Property$WebkitMaskPositionX<TLength = string | 0> = Globals | TLength | "center" | "left" | "right" | string; + +export type Property$WebkitMaskPositionY<TLength = string | 0> = Globals | TLength | "bottom" | "center" | "top" | string; + +export type Property$WebkitMaskRepeat = Globals | DataType$RepeatStyle | string; + +export type Property$WebkitMaskRepeatX = Globals | "no-repeat" | "repeat" | "round" | "space"; + +export type Property$WebkitMaskRepeatY = Globals | "no-repeat" | "repeat" | "round" | "space"; + +export type Property$WebkitMaskSize<TLength = string | 0> = Globals | DataType$BgSize<TLength> | string; + +export type Property$WebkitOverflowScrolling = Globals | "auto" | "touch"; + +export type Property$WebkitTapHighlightColor = Globals | DataType$Color; + +export type Property$WebkitTextFillColor = Globals | DataType$Color; + +export type Property$WebkitTextStroke<TLength = string | 0> = Globals | DataType$Color | TLength | string; + +export type Property$WebkitTextStrokeColor = Globals | DataType$Color; + +export type Property$WebkitTextStrokeWidth<TLength = string | 0> = Globals | TLength; + +export type Property$WebkitTouchCallout = Globals | "default" | "none"; + +export type Property$WebkitUserModify = Globals | "read-only" | "read-write" | "read-write-plaintext-only"; + +export type Property$AlignmentBaseline = + | Globals + | "after-edge" + | "alphabetic" + | "auto" + | "baseline" + | "before-edge" + | "central" + | "hanging" + | "ideographic" + | "mathematical" + | "middle" + | "text-after-edge" + | "text-before-edge"; + +export type Property$BaselineShift<TLength = string | 0> = Globals | TLength | "baseline" | "sub" | "super" | string; + +export type Property$ClipRule = Globals | "evenodd" | "nonzero"; + +export type Property$ColorInterpolation = Globals | "auto" | "linearRGB" | "sRGB"; + +export type Property$ColorRendering = Globals | "auto" | "optimizeQuality" | "optimizeSpeed"; + +export type Property$DominantBaseline = + | Globals + | "alphabetic" + | "auto" + | "central" + | "hanging" + | "ideographic" + | "mathematical" + | "middle" + | "no-change" + | "reset-size" + | "text-after-edge" + | "text-before-edge" + | "use-script"; + +export type Property$Fill = Globals | DataType$Paint; + +export type Property$FillOpacity = Globals | number; + +export type Property$FillRule = Globals | "evenodd" | "nonzero"; + +export type Property$FloodColor = Globals | DataType$Color | "currentColor"; + +export type Property$FloodOpacity = Globals | number; + +export type Property$GlyphOrientationVertical = Globals | "auto" | string | number; + +export type Property$LightingColor = Globals | DataType$Color | "currentColor"; + +export type Property$Marker = Globals | "none" | string; + +export type Property$MarkerEnd = Globals | "none" | string; + +export type Property$MarkerMid = Globals | "none" | string; + +export type Property$MarkerStart = Globals | "none" | string; + +export type Property$ShapeRendering = Globals | "auto" | "crispEdges" | "geometricPrecision" | "optimizeSpeed"; + +export type Property$StopColor = Globals | DataType$Color | "currentColor"; + +export type Property$StopOpacity = Globals | number; + +export type Property$Stroke = Globals | DataType$Paint; + +export type Property$StrokeDasharray<TLength = string | 0> = Globals | DataType$Dasharray<TLength> | "none"; + +export type Property$StrokeDashoffset<TLength = string | 0> = Globals | TLength | string; + +export type Property$StrokeLinecap = Globals | "butt" | "round" | "square"; + +export type Property$StrokeLinejoin = Globals | "bevel" | "miter" | "round"; + +export type Property$StrokeMiterlimit = Globals | number; + +export type Property$StrokeOpacity = Globals | number; + +export type Property$StrokeWidth<TLength = string | 0> = Globals | TLength | string; + +export type Property$TextAnchor = Globals | "end" | "middle" | "start"; + +export type Property$VectorEffect = Globals | "non-scaling-stroke" | "none"; + +export type AtRule$CounterStyle<TLength = string | 0, TTime = string> = {| + additiveSymbols?: string, + fallback?: string, + negative?: string, + pad?: string, + prefix?: string, + range?: AtRule$Range, + speakAs?: AtRule$SpeakAs, + suffix?: string, + symbols?: string, + system?: AtRule$System, +|}; + +export type AtRule$CounterStyleHyphen<TLength = string | 0, TTime = string> = {| + "additive-symbols"?: string, + fallback?: string, + negative?: string, + pad?: string, + prefix?: string, + range?: AtRule$Range, + "speak-as"?: AtRule$SpeakAs, + suffix?: string, + symbols?: string, + system?: AtRule$System, +|}; + +export type AtRule$CounterStyleFallback<TLength = string | 0, TTime = string> = {| + additiveSymbols?: string | Array<string>, + fallback?: string | Array<string>, + negative?: string | Array<string>, + pad?: string | Array<string>, + prefix?: string | Array<string>, + range?: AtRule$Range | Array<AtRule$Range>, + speakAs?: AtRule$SpeakAs | Array<AtRule$SpeakAs>, + suffix?: string | Array<string>, + symbols?: string | Array<string>, + system?: AtRule$System | Array<AtRule$System>, +|}; + +export type AtRule$CounterStyleHyphenFallback<TLength = string | 0, TTime = string> = {| + "additive-symbols"?: string | Array<string>, + fallback?: string | Array<string>, + negative?: string | Array<string>, + pad?: string | Array<string>, + prefix?: string | Array<string>, + range?: AtRule$Range | Array<AtRule$Range>, + "speak-as"?: AtRule$SpeakAs | Array<AtRule$SpeakAs>, + suffix?: string | Array<string>, + symbols?: string | Array<string>, + system?: AtRule$System | Array<AtRule$System>, +|}; + +export type AtRule$FontFace<TLength = string | 0, TTime = string> = {| + MozFontFeatureSettings?: AtRule$FontFeatureSettings, + ascentOverride?: AtRule$AscentOverride, + descentOverride?: AtRule$DescentOverride, + fontDisplay?: AtRule$FontDisplay, + fontFamily?: string, + fontFeatureSettings?: AtRule$FontFeatureSettings, + fontStretch?: AtRule$FontStretch, + fontStyle?: AtRule$FontStyle, + fontVariant?: AtRule$FontVariant, + fontVariationSettings?: AtRule$FontVariationSettings, + fontWeight?: AtRule$FontWeight, + lineGapOverride?: AtRule$LineGapOverride, + sizeAdjust?: string, + src?: string, + unicodeRange?: string, +|}; + +export type AtRule$FontFaceHyphen<TLength = string | 0, TTime = string> = {| + "-moz-font-feature-settings"?: AtRule$FontFeatureSettings, + "ascent-override"?: AtRule$AscentOverride, + "descent-override"?: AtRule$DescentOverride, + "font-display"?: AtRule$FontDisplay, + "font-family"?: string, + "font-feature-settings"?: AtRule$FontFeatureSettings, + "font-stretch"?: AtRule$FontStretch, + "font-style"?: AtRule$FontStyle, + "font-variant"?: AtRule$FontVariant, + "font-variation-settings"?: AtRule$FontVariationSettings, + "font-weight"?: AtRule$FontWeight, + "line-gap-override"?: AtRule$LineGapOverride, + "size-adjust"?: string, + src?: string, + "unicode-range"?: string, +|}; + +export type AtRule$FontFaceFallback<TLength = string | 0, TTime = string> = {| + MozFontFeatureSettings?: AtRule$FontFeatureSettings | Array<AtRule$FontFeatureSettings>, + ascentOverride?: AtRule$AscentOverride | Array<AtRule$AscentOverride>, + descentOverride?: AtRule$DescentOverride | Array<AtRule$DescentOverride>, + fontDisplay?: AtRule$FontDisplay | Array<AtRule$FontDisplay>, + fontFamily?: string | Array<string>, + fontFeatureSettings?: AtRule$FontFeatureSettings | Array<AtRule$FontFeatureSettings>, + fontStretch?: AtRule$FontStretch | Array<AtRule$FontStretch>, + fontStyle?: AtRule$FontStyle | Array<AtRule$FontStyle>, + fontVariant?: AtRule$FontVariant | Array<AtRule$FontVariant>, + fontVariationSettings?: AtRule$FontVariationSettings | Array<AtRule$FontVariationSettings>, + fontWeight?: AtRule$FontWeight | Array<AtRule$FontWeight>, + lineGapOverride?: AtRule$LineGapOverride | Array<AtRule$LineGapOverride>, + sizeAdjust?: string | Array<string>, + src?: string | Array<string>, + unicodeRange?: string | Array<string>, +|}; + +export type AtRule$FontFaceHyphenFallback<TLength = string | 0, TTime = string> = {| + "-moz-font-feature-settings"?: AtRule$FontFeatureSettings | Array<AtRule$FontFeatureSettings>, + "ascent-override"?: AtRule$AscentOverride | Array<AtRule$AscentOverride>, + "descent-override"?: AtRule$DescentOverride | Array<AtRule$DescentOverride>, + "font-display"?: AtRule$FontDisplay | Array<AtRule$FontDisplay>, + "font-family"?: string | Array<string>, + "font-feature-settings"?: AtRule$FontFeatureSettings | Array<AtRule$FontFeatureSettings>, + "font-stretch"?: AtRule$FontStretch | Array<AtRule$FontStretch>, + "font-style"?: AtRule$FontStyle | Array<AtRule$FontStyle>, + "font-variant"?: AtRule$FontVariant | Array<AtRule$FontVariant>, + "font-variation-settings"?: AtRule$FontVariationSettings | Array<AtRule$FontVariationSettings>, + "font-weight"?: AtRule$FontWeight | Array<AtRule$FontWeight>, + "line-gap-override"?: AtRule$LineGapOverride | Array<AtRule$LineGapOverride>, + "size-adjust"?: string | Array<string>, + src?: string | Array<string>, + "unicode-range"?: string | Array<string>, +|}; + +export type AtRule$FontPaletteValues<TLength = string | 0, TTime = string> = {| + basePalette?: AtRule$BasePalette, + fontFamily?: string, + overrideColors?: string, +|}; + +export type AtRule$FontPaletteValuesHyphen<TLength = string | 0, TTime = string> = {| + "base-palette"?: AtRule$BasePalette, + "font-family"?: string, + "override-colors"?: string, +|}; + +export type AtRule$FontPaletteValuesFallback<TLength = string | 0, TTime = string> = {| + basePalette?: AtRule$BasePalette | Array<AtRule$BasePalette>, + fontFamily?: string | Array<string>, + overrideColors?: string | Array<string>, +|}; + +export type AtRule$FontPaletteValuesHyphenFallback<TLength = string | 0, TTime = string> = {| + "base-palette"?: AtRule$BasePalette | Array<AtRule$BasePalette>, + "font-family"?: string | Array<string>, + "override-colors"?: string | Array<string>, +|}; + +export type AtRule$Page<TLength = string | 0, TTime = string> = {| + bleed?: AtRule$Bleed<TLength>, + marks?: AtRule$Marks, + pageOrientation?: AtRule$PageOrientation, + size?: AtRule$Size<TLength>, +|}; + +export type AtRule$PageHyphen<TLength = string | 0, TTime = string> = {| + bleed?: AtRule$Bleed<TLength>, + marks?: AtRule$Marks, + "page-orientation"?: AtRule$PageOrientation, + size?: AtRule$Size<TLength>, +|}; + +export type AtRule$PageFallback<TLength = string | 0, TTime = string> = {| + bleed?: AtRule$Bleed<TLength> | Array<AtRule$Bleed<TLength>>, + marks?: AtRule$Marks | Array<AtRule$Marks>, + pageOrientation?: AtRule$PageOrientation | Array<AtRule$PageOrientation>, + size?: AtRule$Size<TLength> | Array<AtRule$Size<TLength>>, +|}; + +export type AtRule$PageHyphenFallback<TLength = string | 0, TTime = string> = {| + bleed?: AtRule$Bleed<TLength> | Array<AtRule$Bleed<TLength>>, + marks?: AtRule$Marks | Array<AtRule$Marks>, + "page-orientation"?: AtRule$PageOrientation | Array<AtRule$PageOrientation>, + size?: AtRule$Size<TLength> | Array<AtRule$Size<TLength>>, +|}; + +export type AtRule$Property<TLength = string | 0, TTime = string> = {| + inherits?: AtRule$Inherits, + initialValue?: string, + syntax?: string, +|}; + +export type AtRule$PropertyHyphen<TLength = string | 0, TTime = string> = {| + inherits?: AtRule$Inherits, + "initial-value"?: string, + syntax?: string, +|}; + +export type AtRule$PropertyFallback<TLength = string | 0, TTime = string> = {| + inherits?: AtRule$Inherits | Array<AtRule$Inherits>, + initialValue?: string | Array<string>, + syntax?: string | Array<string>, +|}; + +export type AtRule$PropertyHyphenFallback<TLength = string | 0, TTime = string> = {| + inherits?: AtRule$Inherits | Array<AtRule$Inherits>, + "initial-value"?: string | Array<string>, + syntax?: string | Array<string>, +|}; + +export type AtRule$Viewport<TLength = string | 0, TTime = string> = {| + height?: AtRule$Height<TLength>, + maxHeight?: AtRule$MaxHeight<TLength>, + maxWidth?: AtRule$MaxWidth<TLength>, + maxZoom?: AtRule$MaxZoom, + minHeight?: AtRule$MinHeight<TLength>, + minWidth?: AtRule$MinWidth<TLength>, + minZoom?: AtRule$MinZoom, + orientation?: AtRule$Orientation, + userZoom?: AtRule$UserZoom, + viewportFit?: AtRule$ViewportFit, + width?: AtRule$Width<TLength>, + zoom?: AtRule$Zoom, +|}; + +export type AtRule$ViewportHyphen<TLength = string | 0, TTime = string> = {| + height?: AtRule$Height<TLength>, + "max-height"?: AtRule$MaxHeight<TLength>, + "max-width"?: AtRule$MaxWidth<TLength>, + "max-zoom"?: AtRule$MaxZoom, + "min-height"?: AtRule$MinHeight<TLength>, + "min-width"?: AtRule$MinWidth<TLength>, + "min-zoom"?: AtRule$MinZoom, + orientation?: AtRule$Orientation, + "user-zoom"?: AtRule$UserZoom, + "viewport-fit"?: AtRule$ViewportFit, + width?: AtRule$Width<TLength>, + zoom?: AtRule$Zoom, +|}; + +export type AtRule$ViewportFallback<TLength = string | 0, TTime = string> = {| + height?: AtRule$Height<TLength> | Array<AtRule$Height<TLength>>, + maxHeight?: AtRule$MaxHeight<TLength> | Array<AtRule$MaxHeight<TLength>>, + maxWidth?: AtRule$MaxWidth<TLength> | Array<AtRule$MaxWidth<TLength>>, + maxZoom?: AtRule$MaxZoom | Array<AtRule$MaxZoom>, + minHeight?: AtRule$MinHeight<TLength> | Array<AtRule$MinHeight<TLength>>, + minWidth?: AtRule$MinWidth<TLength> | Array<AtRule$MinWidth<TLength>>, + minZoom?: AtRule$MinZoom | Array<AtRule$MinZoom>, + orientation?: AtRule$Orientation | Array<AtRule$Orientation>, + userZoom?: AtRule$UserZoom | Array<AtRule$UserZoom>, + viewportFit?: AtRule$ViewportFit | Array<AtRule$ViewportFit>, + width?: AtRule$Width<TLength> | Array<AtRule$Width<TLength>>, + zoom?: AtRule$Zoom | Array<AtRule$Zoom>, +|}; + +export type AtRule$ViewportHyphenFallback<TLength = string | 0, TTime = string> = {| + height?: AtRule$Height<TLength> | Array<AtRule$Height<TLength>>, + "max-height"?: AtRule$MaxHeight<TLength> | Array<AtRule$MaxHeight<TLength>>, + "max-width"?: AtRule$MaxWidth<TLength> | Array<AtRule$MaxWidth<TLength>>, + "max-zoom"?: AtRule$MaxZoom | Array<AtRule$MaxZoom>, + "min-height"?: AtRule$MinHeight<TLength> | Array<AtRule$MinHeight<TLength>>, + "min-width"?: AtRule$MinWidth<TLength> | Array<AtRule$MinWidth<TLength>>, + "min-zoom"?: AtRule$MinZoom | Array<AtRule$MinZoom>, + orientation?: AtRule$Orientation | Array<AtRule$Orientation>, + "user-zoom"?: AtRule$UserZoom | Array<AtRule$UserZoom>, + "viewport-fit"?: AtRule$ViewportFit | Array<AtRule$ViewportFit>, + width?: AtRule$Width<TLength> | Array<AtRule$Width<TLength>>, + zoom?: AtRule$Zoom | Array<AtRule$Zoom>, +|}; + +type AtRule$Range = "auto" | string; + +type AtRule$SpeakAs = "auto" | "bullets" | "numbers" | "spell-out" | "words" | string; + +type AtRule$System = "additive" | "alphabetic" | "cyclic" | "fixed" | "numeric" | "symbolic" | string; + +type AtRule$FontFeatureSettings = "normal" | string; + +type AtRule$AscentOverride = "normal" | string; + +type AtRule$DescentOverride = "normal" | string; + +type AtRule$FontDisplay = "auto" | "block" | "fallback" | "optional" | "swap"; + +type AtRule$FontStretch = DataType$FontStretchAbsolute | string; + +type AtRule$FontStyle = "italic" | "normal" | "oblique" | string; + +type AtRule$FontVariant = + | DataType$EastAsianVariantValues + | "all-petite-caps" + | "all-small-caps" + | "common-ligatures" + | "contextual" + | "diagonal-fractions" + | "discretionary-ligatures" + | "full-width" + | "historical-forms" + | "historical-ligatures" + | "lining-nums" + | "no-common-ligatures" + | "no-contextual" + | "no-discretionary-ligatures" + | "no-historical-ligatures" + | "none" + | "normal" + | "oldstyle-nums" + | "ordinal" + | "petite-caps" + | "proportional-nums" + | "proportional-width" + | "ruby" + | "slashed-zero" + | "small-caps" + | "stacked-fractions" + | "tabular-nums" + | "titling-caps" + | "unicase" + | string; + +type AtRule$FontVariationSettings = "normal" | string; + +type AtRule$FontWeight = DataType$FontWeightAbsolute | string; + +type AtRule$LineGapOverride = "normal" | string; + +type AtRule$BasePalette = "dark" | "light" | number; + +type AtRule$Bleed<TLength> = TLength | "auto"; + +type AtRule$Marks = "crop" | "cross" | "none" | string; + +type AtRule$PageOrientation = "rotate-left" | "rotate-right" | "upright"; + +type AtRule$Size<TLength> = DataType$PageSize | TLength | "auto" | "landscape" | "portrait" | string; + +type AtRule$Inherits = "false" | "true"; + +type AtRule$Height<TLength> = DataType$ViewportLength<TLength> | string; + +type AtRule$MaxHeight<TLength> = DataType$ViewportLength<TLength>; + +type AtRule$MaxWidth<TLength> = DataType$ViewportLength<TLength>; + +type AtRule$MaxZoom = "auto" | string | number; + +type AtRule$MinHeight<TLength> = DataType$ViewportLength<TLength>; + +type AtRule$MinWidth<TLength> = DataType$ViewportLength<TLength>; + +type AtRule$MinZoom = "auto" | string | number; + +type AtRule$Orientation = "auto" | "landscape" | "portrait"; + +type AtRule$UserZoom = "fixed" | "zoom"; + +type AtRule$ViewportFit = "auto" | "contain" | "cover"; + +type AtRule$Width<TLength> = DataType$ViewportLength<TLength> | string; + +type AtRule$Zoom = "auto" | string | number; + +type DataType$AbsoluteSize = "large" | "medium" | "small" | "x-large" | "x-small" | "xx-large" | "xx-small" | "xxx-large"; + +type DataType$AnimateableFeature = "contents" | "scroll-position" | string; + +type DataType$Attachment = "fixed" | "local" | "scroll"; + +type DataType$BgPosition<TLength> = TLength | "bottom" | "center" | "left" | "right" | "top" | string; + +type DataType$BgSize<TLength> = TLength | "auto" | "contain" | "cover" | string; + +type DataType$BlendMode = + | "color" + | "color-burn" + | "color-dodge" + | "darken" + | "difference" + | "exclusion" + | "hard-light" + | "hue" + | "lighten" + | "luminosity" + | "multiply" + | "normal" + | "overlay" + | "saturation" + | "screen" + | "soft-light"; + +type DataType$Box = "border-box" | "content-box" | "padding-box"; + +type DataType$Color = DataType$NamedColor | DataType$DeprecatedSystemColor | "currentcolor" | string; + +type DataType$CompatAuto = + | "button" + | "checkbox" + | "listbox" + | "menulist" + | "meter" + | "progress-bar" + | "push-button" + | "radio" + | "searchfield" + | "slider-horizontal" + | "square-button" + | "textarea"; + +type DataType$CompositeStyle = + | "clear" + | "copy" + | "destination-atop" + | "destination-in" + | "destination-out" + | "destination-over" + | "source-atop" + | "source-in" + | "source-out" + | "source-over" + | "xor"; + +type DataType$CompositingOperator = "add" | "exclude" | "intersect" | "subtract"; + +type DataType$ContentDistribution = "space-around" | "space-between" | "space-evenly" | "stretch"; + +type DataType$ContentList = DataType$Quote | "contents" | string; + +type DataType$ContentPosition = "center" | "end" | "flex-end" | "flex-start" | "start"; + +type DataType$CubicBezierTimingFunction = "ease" | "ease-in" | "ease-in-out" | "ease-out" | string; + +type DataType$Dasharray<TLength> = TLength | string | number; + +type DataType$DeprecatedSystemColor = + | "ActiveBorder" + | "ActiveCaption" + | "AppWorkspace" + | "Background" + | "ButtonFace" + | "ButtonHighlight" + | "ButtonShadow" + | "ButtonText" + | "CaptionText" + | "GrayText" + | "Highlight" + | "HighlightText" + | "InactiveBorder" + | "InactiveCaption" + | "InactiveCaptionText" + | "InfoBackground" + | "InfoText" + | "Menu" + | "MenuText" + | "Scrollbar" + | "ThreeDDarkShadow" + | "ThreeDFace" + | "ThreeDHighlight" + | "ThreeDLightShadow" + | "ThreeDShadow" + | "Window" + | "WindowFrame" + | "WindowText"; + +type DataType$DisplayInside = "-ms-flexbox" | "-ms-grid" | "-webkit-flex" | "flex" | "flow" | "flow-root" | "grid" | "ruby" | "table"; + +type DataType$DisplayInternal = + | "ruby-base" + | "ruby-base-container" + | "ruby-text" + | "ruby-text-container" + | "table-caption" + | "table-cell" + | "table-column" + | "table-column-group" + | "table-footer-group" + | "table-header-group" + | "table-row" + | "table-row-group"; + +type DataType$DisplayLegacy = + | "-ms-inline-flexbox" + | "-ms-inline-grid" + | "-webkit-inline-flex" + | "inline-block" + | "inline-flex" + | "inline-grid" + | "inline-list-item" + | "inline-table"; + +type DataType$DisplayOutside = "block" | "inline" | "run-in"; + +type DataType$EasingFunction = DataType$CubicBezierTimingFunction | DataType$StepTimingFunction | "linear"; + +type DataType$EastAsianVariantValues = "jis04" | "jis78" | "jis83" | "jis90" | "simplified" | "traditional"; + +type DataType$FinalBgLayer<TLength> = DataType$Color | DataType$BgPosition<TLength> | DataType$RepeatStyle | DataType$Attachment | DataType$Box | "none" | string; + +type DataType$FontStretchAbsolute = + | "condensed" + | "expanded" + | "extra-condensed" + | "extra-expanded" + | "normal" + | "semi-condensed" + | "semi-expanded" + | "ultra-condensed" + | "ultra-expanded" + | string; + +type DataType$FontWeightAbsolute = "bold" | "normal" | number; + +type DataType$GenericFamily = "cursive" | "fantasy" | "monospace" | "sans-serif" | "serif"; + +type DataType$GeometryBox = DataType$Box | "fill-box" | "margin-box" | "stroke-box" | "view-box"; + +type DataType$GridLine = "auto" | string | number; + +type DataType$LineStyle = "dashed" | "dotted" | "double" | "groove" | "hidden" | "inset" | "none" | "outset" | "ridge" | "solid"; + +type DataType$LineWidth<TLength> = TLength | "medium" | "thick" | "thin"; + +type DataType$MaskLayer<TLength> = + | DataType$Position<TLength> + | DataType$RepeatStyle + | DataType$GeometryBox + | DataType$CompositingOperator + | DataType$MaskingMode + | "no-clip" + | "none" + | string; + +type DataType$MaskingMode = "alpha" | "luminance" | "match-source"; + +type DataType$NamedColor = + | "aliceblue" + | "antiquewhite" + | "aqua" + | "aquamarine" + | "azure" + | "beige" + | "bisque" + | "black" + | "blanchedalmond" + | "blue" + | "blueviolet" + | "brown" + | "burlywood" + | "cadetblue" + | "chartreuse" + | "chocolate" + | "coral" + | "cornflowerblue" + | "cornsilk" + | "crimson" + | "cyan" + | "darkblue" + | "darkcyan" + | "darkgoldenrod" + | "darkgray" + | "darkgreen" + | "darkgrey" + | "darkkhaki" + | "darkmagenta" + | "darkolivegreen" + | "darkorange" + | "darkorchid" + | "darkred" + | "darksalmon" + | "darkseagreen" + | "darkslateblue" + | "darkslategray" + | "darkslategrey" + | "darkturquoise" + | "darkviolet" + | "deeppink" + | "deepskyblue" + | "dimgray" + | "dimgrey" + | "dodgerblue" + | "firebrick" + | "floralwhite" + | "forestgreen" + | "fuchsia" + | "gainsboro" + | "ghostwhite" + | "gold" + | "goldenrod" + | "gray" + | "green" + | "greenyellow" + | "grey" + | "honeydew" + | "hotpink" + | "indianred" + | "indigo" + | "ivory" + | "khaki" + | "lavender" + | "lavenderblush" + | "lawngreen" + | "lemonchiffon" + | "lightblue" + | "lightcoral" + | "lightcyan" + | "lightgoldenrodyellow" + | "lightgray" + | "lightgreen" + | "lightgrey" + | "lightpink" + | "lightsalmon" + | "lightseagreen" + | "lightskyblue" + | "lightslategray" + | "lightslategrey" + | "lightsteelblue" + | "lightyellow" + | "lime" + | "limegreen" + | "linen" + | "magenta" + | "maroon" + | "mediumaquamarine" + | "mediumblue" + | "mediumorchid" + | "mediumpurple" + | "mediumseagreen" + | "mediumslateblue" + | "mediumspringgreen" + | "mediumturquoise" + | "mediumvioletred" + | "midnightblue" + | "mintcream" + | "mistyrose" + | "moccasin" + | "navajowhite" + | "navy" + | "oldlace" + | "olive" + | "olivedrab" + | "orange" + | "orangered" + | "orchid" + | "palegoldenrod" + | "palegreen" + | "paleturquoise" + | "palevioletred" + | "papayawhip" + | "peachpuff" + | "peru" + | "pink" + | "plum" + | "powderblue" + | "purple" + | "rebeccapurple" + | "red" + | "rosybrown" + | "royalblue" + | "saddlebrown" + | "salmon" + | "sandybrown" + | "seagreen" + | "seashell" + | "sienna" + | "silver" + | "skyblue" + | "slateblue" + | "slategray" + | "slategrey" + | "snow" + | "springgreen" + | "steelblue" + | "tan" + | "teal" + | "thistle" + | "tomato" + | "transparent" + | "turquoise" + | "violet" + | "wheat" + | "white" + | "whitesmoke" + | "yellow" + | "yellowgreen"; + +type DataType$PageSize = "A3" | "A4" | "A5" | "B4" | "B5" | "JIS-B4" | "JIS-B5" | "ledger" | "legal" | "letter"; + +type DataType$Paint = DataType$Color | "child" | "context-fill" | "context-stroke" | "none" | string; + +type DataType$Position<TLength> = TLength | "bottom" | "center" | "left" | "right" | "top" | string; + +type DataType$Quote = "close-quote" | "no-close-quote" | "no-open-quote" | "open-quote"; + +type DataType$RepeatStyle = "no-repeat" | "repeat" | "repeat-x" | "repeat-y" | "round" | "space" | string; + +type DataType$SelfPosition = "center" | "end" | "flex-end" | "flex-start" | "self-end" | "self-start" | "start"; + +type DataType$SingleAnimation<TTime> = + | DataType$EasingFunction + | DataType$SingleAnimationDirection + | DataType$SingleAnimationFillMode + | DataType$SingleAnimationTimeline + | TTime + | "infinite" + | "none" + | "paused" + | "running" + | string + | number; + +type DataType$SingleAnimationComposition = "accumulate" | "add" | "replace"; + +type DataType$SingleAnimationDirection = "alternate" | "alternate-reverse" | "normal" | "reverse"; + +type DataType$SingleAnimationFillMode = "backwards" | "both" | "forwards" | "none"; + +type DataType$SingleAnimationTimeline = "auto" | "none" | string; + +type DataType$SingleTransition<TTime> = DataType$EasingFunction | TTime | "all" | "allow-discrete" | "none" | "normal" | string; + +type DataType$StepTimingFunction = "step-end" | "step-start" | string; + +type DataType$TimelineRangeName = "contain" | "cover" | "entry" | "entry-crossing" | "exit" | "exit-crossing"; + +type DataType$TrackBreadth<TLength> = TLength | "auto" | "max-content" | "min-content" | string; + +type DataType$ViewportLength<TLength> = TLength | "auto" | string; + +type DataType$VisualBox = "border-box" | "content-box" | "padding-box"; diff --git a/node_modules/csstype/package.json b/node_modules/csstype/package.json new file mode 100644 index 0000000..2400fc3 --- /dev/null +++ b/node_modules/csstype/package.json @@ -0,0 +1,66 @@ +{ + "name": "csstype", + "version": "3.1.3", + "main": "", + "types": "index.d.ts", + "description": "Strict TypeScript and Flow types for style based on MDN data", + "repository": "https://github.com/frenic/csstype", + "author": "Fredrik Nicol <fredrik.nicol@gmail.com>", + "license": "MIT", + "devDependencies": { + "@types/chokidar": "^2.1.3", + "@types/css-tree": "^2.3.1", + "@types/jest": "^29.5.0", + "@types/jsdom": "^21.1.1", + "@types/node": "^16.18.23", + "@types/prettier": "^2.7.2", + "@types/request": "^2.48.8", + "@types/turndown": "^5.0.1", + "@typescript-eslint/eslint-plugin": "^5.57.0", + "@typescript-eslint/parser": "^5.57.0", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "eslint": "^8.37.0", + "css-tree": "^2.3.1", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-prettier": "^4.2.1", + "fast-glob": "^3.2.12", + "flow-bin": "^0.203.1", + "jest": "^29.5.0", + "jsdom": "^21.1.1", + "mdn-browser-compat-data": "git+https://github.com/mdn/browser-compat-data.git#1bf44517bd08de735e9ec20dbfe8e86c96341054", + "mdn-data": "git+https://github.com/mdn/data.git#7f0c865a3c4b5d891285c93308ee5c25cb5cfee8", + "prettier": "^2.8.7", + "request": "^2.88.2", + "ts-jest": "^29.0.5", + "ts-node": "^10.9.1", + "turndown": "^7.1.2", + "typescript": "~5.0.3" + }, + "scripts": { + "prepublish": "npm install --prefix __tests__ && npm install --prefix __tests__/__fixtures__", + "prepublishOnly": "tsc && npm run test:src && npm run build && ts-node --files prepublish.ts", + "update": "ts-node --files update.ts", + "build": "ts-node --files build.ts --start", + "watch": "ts-node --files build.ts --watch", + "lint": "eslint . --ext .js,.jsx,.ts,.tsx --fix", + "pretty": "prettier --write build.ts **/*.{ts,js,json,md}", + "lazy": "tsc && npm run lint", + "test": "jest --runInBand", + "test:src": "jest src.*.ts", + "test:dist": "jest dist.*.ts --runInBand" + }, + "files": [ + "index.d.ts", + "index.js.flow" + ], + "keywords": [ + "css", + "style", + "typescript", + "flow", + "typings", + "types", + "definitions" + ] +} diff --git a/node_modules/dateformat/.npmignore b/node_modules/dateformat/.npmignore new file mode 100644 index 0000000..efab07f --- /dev/null +++ b/node_modules/dateformat/.npmignore @@ -0,0 +1,2 @@ +test +.travis.yml diff --git a/node_modules/dateformat/.vs/ProjectSettings.json b/node_modules/dateformat/.vs/ProjectSettings.json new file mode 100644 index 0000000..f8b4888 --- /dev/null +++ b/node_modules/dateformat/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/node_modules/dateformat/.vs/config/applicationhost.config b/node_modules/dateformat/.vs/config/applicationhost.config new file mode 100644 index 0000000..4b9bf47 --- /dev/null +++ b/node_modules/dateformat/.vs/config/applicationhost.config @@ -0,0 +1,1031 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + IIS configuration sections. + + For schema documentation, see + %IIS_BIN%\config\schema\IIS_schema.xml. + + Please make a backup of this file before making any changes to it. + + NOTE: The following environment variables are available to be used + within this file and are understood by the IIS Express. + + %IIS_USER_HOME% - The IIS Express home directory for the user + %IIS_SITES_HOME% - The default home directory for sites + %IIS_BIN% - The location of the IIS Express binaries + %SYSTEMDRIVE% - The drive letter of %IIS_BIN% + +--> +<configuration> + + <!-- + + The <configSections> section controls the registration of sections. + Section is the basic unit of deployment, locking, searching and + containment for configuration settings. + + Every section belongs to one section group. + A section group is a container of logically-related sections. + + Sections cannot be nested. + Section groups may be nested. + + <section + name="" [Required, Collection Key] [XML name of the section] + allowDefinition="Everywhere" [MachineOnly|MachineToApplication|AppHostOnly|Everywhere] [Level where it can be set] + overrideModeDefault="Allow" [Allow|Deny] [Default delegation mode] + allowLocation="true" [true|false] [Allowed in location tags] + /> + + The recommended way to unlock sections is by using a location tag: + <location path="Default Web Site" overrideMode="Allow"> + <system.webServer> + <asp /> + </system.webServer> + </location> + + --> + <configSections> + <sectionGroup name="system.applicationHost"> + <section name="applicationPools" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> + <section name="configHistory" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> + <section name="customMetadata" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> + <section name="listenerAdapters" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> + <section name="log" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> + <section name="serviceAutoStartProviders" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> + <section name="sites" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> + <section name="webLimits" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> + </sectionGroup> + + <sectionGroup name="system.webServer"> + <section name="asp" overrideModeDefault="Deny" /> + <section name="caching" overrideModeDefault="Allow" /> + <section name="cgi" overrideModeDefault="Deny" /> + <section name="defaultDocument" overrideModeDefault="Allow" /> + <section name="directoryBrowse" overrideModeDefault="Allow" /> + <section name="fastCgi" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> + <section name="globalModules" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> + <section name="handlers" overrideModeDefault="Deny" /> + <section name="httpCompression" overrideModeDefault="Allow" /> + <section name="httpErrors" overrideModeDefault="Allow" /> + <section name="httpLogging" overrideModeDefault="Deny" /> + <section name="httpProtocol" overrideModeDefault="Allow" /> + <section name="httpRedirect" overrideModeDefault="Allow" /> + <section name="httpTracing" overrideModeDefault="Deny" /> + <section name="isapiFilters" allowDefinition="MachineToApplication" overrideModeDefault="Deny" /> + <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" /> + <section name="applicationInitialization" allowDefinition="MachineToApplication" overrideModeDefault="Allow" /> + <section name="odbcLogging" overrideModeDefault="Deny" /> + <sectionGroup name="security"> + <section name="access" overrideModeDefault="Deny" /> + <section name="applicationDependencies" overrideModeDefault="Deny" /> + <sectionGroup name="authentication"> + <section name="anonymousAuthentication" overrideModeDefault="Deny" /> + <section name="basicAuthentication" overrideModeDefault="Deny" /> + <section name="clientCertificateMappingAuthentication" overrideModeDefault="Deny" /> + <section name="digestAuthentication" overrideModeDefault="Deny" /> + <section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Deny" /> + <section name="windowsAuthentication" overrideModeDefault="Deny" /> + </sectionGroup> + <section name="authorization" overrideModeDefault="Allow" /> + <section name="ipSecurity" overrideModeDefault="Deny" /> + <section name="dynamicIpSecurity" overrideModeDefault="Deny" /> + <section name="isapiCgiRestriction" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /> + <section name="requestFiltering" overrideModeDefault="Allow" /> + </sectionGroup> + <section name="serverRuntime" overrideModeDefault="Deny" /> + <section name="serverSideInclude" overrideModeDefault="Deny" /> + <section name="staticContent" overrideModeDefault="Allow" /> + <sectionGroup name="tracing"> + <section name="traceFailedRequests" overrideModeDefault="Allow" /> + <section name="traceProviderDefinitions" overrideModeDefault="Deny" /> + </sectionGroup> + <section name="urlCompression" overrideModeDefault="Allow" /> + <section name="validation" overrideModeDefault="Allow" /> + <sectionGroup name="webdav"> + <section name="globalSettings" overrideModeDefault="Deny" /> + <section name="authoring" overrideModeDefault="Deny" /> + <section name="authoringRules" overrideModeDefault="Deny" /> + </sectionGroup> + <sectionGroup name="rewrite"> + <section name="allowedServerVariables" overrideModeDefault="Deny" /> + <section name="rules" overrideModeDefault="Allow" /> + <section name="outboundRules" overrideModeDefault="Allow" /> + <section name="globalRules" overrideModeDefault="Deny" allowDefinition="AppHostOnly" /> + <section name="providers" overrideModeDefault="Allow" /> + <section name="rewriteMaps" overrideModeDefault="Allow" /> + </sectionGroup> + <section name="webSocket" overrideModeDefault="Deny" /> + <section name="aspNetCore" overrideModeDefault="Allow" /></sectionGroup> + </configSections> + + <configProtectedData> + <providers> + <add name="IISWASOnlyRsaProvider" type="" description="Uses RsaCryptoServiceProvider to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useMachineContainer="true" useOAEP="false" /> + <add name="AesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisConfigurationKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAAKmFQvWHDEETRz8l2bjZlRxIkwcqTFaCUnCLljn3Q1OkesrhEO9YyLyx4bUhsj1/DyShAv7OAFFhXlrlomaornnk5PLeyO4lIXxaiT33yOFUUgxDx4GSaygkqghVV0tO5yQ/XguUBp2juMfZyztnsNa4pLcz7ZNZQ6p4yn9hxwNs=" /> + <add name="IISWASOnlyAesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAA4WoiRJ8KHwzAG8AgejPxEOO4/2Vhkolbwo/8gZeNdUDSD36m55hWv4uC9tr/MlKdnwRLL0NhT50Gccyftqz5xTZ0dg5FtvQhTw/he1NwexTKbV+I4Zrd+sZUqHZTsr7JiEr6OHGXL70qoISW5G2m9U8wKT3caPiDPNj2aAaYPLo=" /> + </providers> + </configProtectedData> + + <system.applicationHost> + + <applicationPools> + <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" /> + <add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" /> + <add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" /> + <add name="Clr2ClassicAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" /> + <add name="UnmanagedClassicAppPool" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" /> + <applicationPoolDefaults managedRuntimeLoader="v4.0"> + <processModel /> + </applicationPoolDefaults> + </applicationPools> + + <!-- + + The <listenerAdapters> section defines the protocols with which the + Windows Process Activation Service (WAS) binds. + + --> + <listenerAdapters> + <add name="http" /> + </listenerAdapters> + + <sites> + <site name="WebSite1" id="1" serverAutoStart="true"> + <application path="/"> + <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" /> + </application> + <bindings> + <binding protocol="http" bindingInformation=":8080:localhost" /> + </bindings> + </site> + <siteDefaults> + <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" /> + <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" /> + </siteDefaults> + <applicationDefaults applicationPool="Clr4IntegratedAppPool" /> + <virtualDirectoryDefaults allowSubDirConfig="true" /> + </sites> + + <webLimits /> + + </system.applicationHost> + + <system.webServer> + + <serverRuntime /> + + <asp scriptErrorSentToBrowser="true"> + <cache diskTemplateCacheDirectory="%TEMP%\iisexpress\ASP Compiled Templates" /> + <limits /> + </asp> + + <caching enabled="true" enableKernelCache="true"> + </caching> + + <cgi /> + + <defaultDocument enabled="true"> + <files> + <add value="Default.htm" /> + <add value="Default.asp" /> + <add value="index.htm" /> + <add value="index.html" /> + <add value="iisstart.htm" /> + <add value="default.aspx" /> + </files> + </defaultDocument> + + <directoryBrowse enabled="false" /> + + <fastCgi /> + + <!-- + + The <globalModules> section defines all native-code modules. + To enable a module, specify it in the <modules> section. + + --> + <globalModules> + <add name="HttpLoggingModule" image="%IIS_BIN%\loghttp.dll" /> + <add name="UriCacheModule" image="%IIS_BIN%\cachuri.dll" /> +<!-- <add name="FileCacheModule" image="%IIS_BIN%\cachfile.dll" /> --> + <add name="TokenCacheModule" image="%IIS_BIN%\cachtokn.dll" /> +<!-- <add name="HttpCacheModule" image="%IIS_BIN%\cachhttp.dll" /> --> + <add name="DynamicCompressionModule" image="%IIS_BIN%\compdyn.dll" /> + <add name="StaticCompressionModule" image="%IIS_BIN%\compstat.dll" /> + <add name="DefaultDocumentModule" image="%IIS_BIN%\defdoc.dll" /> + <add name="DirectoryListingModule" image="%IIS_BIN%\dirlist.dll" /> + <add name="ProtocolSupportModule" image="%IIS_BIN%\protsup.dll" /> + <add name="HttpRedirectionModule" image="%IIS_BIN%\redirect.dll" /> + <add name="ServerSideIncludeModule" image="%IIS_BIN%\iis_ssi.dll" /> + <add name="StaticFileModule" image="%IIS_BIN%\static.dll" /> + <add name="AnonymousAuthenticationModule" image="%IIS_BIN%\authanon.dll" /> + <add name="CertificateMappingAuthenticationModule" image="%IIS_BIN%\authcert.dll" /> + <add name="UrlAuthorizationModule" image="%IIS_BIN%\urlauthz.dll" /> + <add name="BasicAuthenticationModule" image="%IIS_BIN%\authbas.dll" /> + <add name="WindowsAuthenticationModule" image="%IIS_BIN%\authsspi.dll" /> +<!-- <add name="DigestAuthenticationModule" image="%IIS_BIN%\authmd5.dll" /> --> + <add name="IISCertificateMappingAuthenticationModule" image="%IIS_BIN%\authmap.dll" /> + <add name="IpRestrictionModule" image="%IIS_BIN%\iprestr.dll" /> + <add name="DynamicIpRestrictionModule" image="%IIS_BIN%\diprestr.dll" /> + <add name="RequestFilteringModule" image="%IIS_BIN%\modrqflt.dll" /> + <add name="CustomLoggingModule" image="%IIS_BIN%\logcust.dll" /> + <add name="CustomErrorModule" image="%IIS_BIN%\custerr.dll" /> +<!-- <add name="TracingModule" image="%IIS_BIN%\iisetw.dll" /> --> + <add name="FailedRequestsTracingModule" image="%IIS_BIN%\iisfreb.dll" /> + <add name="RequestMonitorModule" image="%IIS_BIN%\iisreqs.dll" /> + <add name="IsapiModule" image="%IIS_BIN%\isapi.dll" /> + <add name="IsapiFilterModule" image="%IIS_BIN%\filter.dll" /> + <add name="CgiModule" image="%IIS_BIN%\cgi.dll" /> + <add name="FastCgiModule" image="%IIS_BIN%\iisfcgi.dll" /> +<!-- <add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" /> --> + <add name="RewriteModule" image="%IIS_BIN%\rewrite.dll" /> + <add name="ConfigurationValidationModule" image="%IIS_BIN%\validcfg.dll" /> + <add name="WebSocketModule" image="%IIS_BIN%\iiswsock.dll" /> + <add name="WebMatrixSupportModule" image="%IIS_BIN%\webmatrixsup.dll" /> + <add name="ManagedEngine" image="%windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness32" /> + <add name="ManagedEngine64" image="%windir%\Microsoft.NET\Framework64\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness64" /> + <add name="ManagedEngineV4.0_32bit" image="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness32" /> + <add name="ManagedEngineV4.0_64bit" image="%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness64" /> + <add name="ApplicationInitializationModule" image="%IIS_BIN%\warmup.dll" /> + <add name="AspNetCoreModule" image="%IIS_BIN%\aspnetcore.dll" /> + </globalModules> + + <httpCompression directory="%TEMP%\iisexpress\IIS Temporary Compressed Files"> + <scheme name="gzip" dll="%IIS_BIN%\gzip.dll" /> + <dynamicTypes> + <add mimeType="text/*" enabled="true" /> + <add mimeType="message/*" enabled="true" /> + <add mimeType="application/javascript" enabled="true" /> + <add mimeType="application/atom+xml" enabled="true" /> + <add mimeType="application/xaml+xml" enabled="true" /> + <add mimeType="*/*" enabled="false" /> + </dynamicTypes> + <staticTypes> + <add mimeType="text/*" enabled="true" /> + <add mimeType="message/*" enabled="true" /> + <add mimeType="image/svg+xml" enabled="true" /> + <add mimeType="application/javascript" enabled="true" /> + <add mimeType="application/atom+xml" enabled="true" /> + <add mimeType="application/xaml+xml" enabled="true" /> + <add mimeType="*/*" enabled="false" /> + </staticTypes> + </httpCompression> + + <httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath"> + <error statusCode="401" prefixLanguageFilePath="%IIS_BIN%\custerr" path="401.htm" /> + <error statusCode="403" prefixLanguageFilePath="%IIS_BIN%\custerr" path="403.htm" /> + <error statusCode="404" prefixLanguageFilePath="%IIS_BIN%\custerr" path="404.htm" /> + <error statusCode="405" prefixLanguageFilePath="%IIS_BIN%\custerr" path="405.htm" /> + <error statusCode="406" prefixLanguageFilePath="%IIS_BIN%\custerr" path="406.htm" /> + <error statusCode="412" prefixLanguageFilePath="%IIS_BIN%\custerr" path="412.htm" /> + <error statusCode="500" prefixLanguageFilePath="%IIS_BIN%\custerr" path="500.htm" /> + <error statusCode="501" prefixLanguageFilePath="%IIS_BIN%\custerr" path="501.htm" /> + <error statusCode="502" prefixLanguageFilePath="%IIS_BIN%\custerr" path="502.htm" /> + </httpErrors> + + <httpLogging dontLog="false" /> + + <httpProtocol> + <customHeaders> + <clear /> + <add name="X-Powered-By" value="ASP.NET" /> + </customHeaders> + <redirectHeaders> + <clear /> + </redirectHeaders> + </httpProtocol> + + <httpRedirect enabled="false" /> + + <httpTracing> + </httpTracing> + + <isapiFilters> + <filter name="ASP.Net_2.0.50727-64" path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv2.0" /> + <filter name="ASP.Net_2.0.50727.0" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv2.0" /> + <filter name="ASP.Net_2.0_for_v1.1" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv1.1" /> + <filter name="ASP.Net_4.0_32bit" path="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv4.0" /> + <filter name="ASP.Net_4.0_64bit" path="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv4.0" /> + </isapiFilters> + + <odbcLogging /> + + <security> + + <access sslFlags="None" /> + + <applicationDependencies> + <application name="Active Server Pages" groupId="ASP" /> + </applicationDependencies> + + <authentication> + + <anonymousAuthentication enabled="true" userName="" /> + + <basicAuthentication enabled="false" /> + + <clientCertificateMappingAuthentication enabled="false" /> + + <digestAuthentication enabled="false" /> + + <iisClientCertificateMappingAuthentication enabled="false"> + </iisClientCertificateMappingAuthentication> + + <windowsAuthentication enabled="false"> + <providers> + <add value="Negotiate" /> + <add value="NTLM" /> + </providers> + </windowsAuthentication> + + </authentication> + + <authorization> + <add accessType="Allow" users="*" /> + </authorization> + + <ipSecurity allowUnlisted="true" /> + + <isapiCgiRestriction notListedIsapisAllowed="true" notListedCgisAllowed="true"> + <add path="%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" /> + <add path="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" /> + <add path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" /> + <add path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" /> + </isapiCgiRestriction> + + <requestFiltering> + <fileExtensions allowUnlisted="true" applyToWebDAV="true"> + <add fileExtension=".asa" allowed="false" /> + <add fileExtension=".asax" allowed="false" /> + <add fileExtension=".ascx" allowed="false" /> + <add fileExtension=".master" allowed="false" /> + <add fileExtension=".skin" allowed="false" /> + <add fileExtension=".browser" allowed="false" /> + <add fileExtension=".sitemap" allowed="false" /> + <add fileExtension=".config" allowed="false" /> + <add fileExtension=".cs" allowed="false" /> + <add fileExtension=".csproj" allowed="false" /> + <add fileExtension=".vb" allowed="false" /> + <add fileExtension=".vbproj" allowed="false" /> + <add fileExtension=".webinfo" allowed="false" /> + <add fileExtension=".licx" allowed="false" /> + <add fileExtension=".resx" allowed="false" /> + <add fileExtension=".resources" allowed="false" /> + <add fileExtension=".mdb" allowed="false" /> + <add fileExtension=".vjsproj" allowed="false" /> + <add fileExtension=".java" allowed="false" /> + <add fileExtension=".jsl" allowed="false" /> + <add fileExtension=".ldb" allowed="false" /> + <add fileExtension=".dsdgm" allowed="false" /> + <add fileExtension=".ssdgm" allowed="false" /> + <add fileExtension=".lsad" allowed="false" /> + <add fileExtension=".ssmap" allowed="false" /> + <add fileExtension=".cd" allowed="false" /> + <add fileExtension=".dsprototype" allowed="false" /> + <add fileExtension=".lsaprototype" allowed="false" /> + <add fileExtension=".sdm" allowed="false" /> + <add fileExtension=".sdmDocument" allowed="false" /> + <add fileExtension=".mdf" allowed="false" /> + <add fileExtension=".ldf" allowed="false" /> + <add fileExtension=".ad" allowed="false" /> + <add fileExtension=".dd" allowed="false" /> + <add fileExtension=".ldd" allowed="false" /> + <add fileExtension=".sd" allowed="false" /> + <add fileExtension=".adprototype" allowed="false" /> + <add fileExtension=".lddprototype" allowed="false" /> + <add fileExtension=".exclude" allowed="false" /> + <add fileExtension=".refresh" allowed="false" /> + <add fileExtension=".compiled" allowed="false" /> + <add fileExtension=".msgx" allowed="false" /> + <add fileExtension=".vsdisco" allowed="false" /> + <add fileExtension=".rules" allowed="false" /> + </fileExtensions> + <verbs allowUnlisted="true" applyToWebDAV="true" /> + <hiddenSegments applyToWebDAV="true"> + <add segment="web.config" /> + <add segment="bin" /> + <add segment="App_code" /> + <add segment="App_GlobalResources" /> + <add segment="App_LocalResources" /> + <add segment="App_WebReferences" /> + <add segment="App_Data" /> + <add segment="App_Browsers" /> + </hiddenSegments> + </requestFiltering> + + </security> + + <serverSideInclude ssiExecDisable="false" /> + + <staticContent lockAttributes="isDocFooterFileName"> + <mimeMap fileExtension=".323" mimeType="text/h323" /> + <mimeMap fileExtension=".3g2" mimeType="video/3gpp2" /> + <mimeMap fileExtension=".3gp2" mimeType="video/3gpp2" /> + <mimeMap fileExtension=".3gp" mimeType="video/3gpp" /> + <mimeMap fileExtension=".3gpp" mimeType="video/3gpp" /> + <mimeMap fileExtension=".aac" mimeType="audio/aac" /> + <mimeMap fileExtension=".aaf" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".aca" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".accdb" mimeType="application/msaccess" /> + <mimeMap fileExtension=".accde" mimeType="application/msaccess" /> + <mimeMap fileExtension=".accdt" mimeType="application/msaccess" /> + <mimeMap fileExtension=".acx" mimeType="application/internet-property-stream" /> + <mimeMap fileExtension=".adt" mimeType="audio/vnd.dlna.adts" /> + <mimeMap fileExtension=".adts" mimeType="audio/vnd.dlna.adts" /> + <mimeMap fileExtension=".afm" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".ai" mimeType="application/postscript" /> + <mimeMap fileExtension=".aif" mimeType="audio/x-aiff" /> + <mimeMap fileExtension=".aifc" mimeType="audio/aiff" /> + <mimeMap fileExtension=".aiff" mimeType="audio/aiff" /> + <mimeMap fileExtension=".appcache" mimeType="text/cache-manifest" /> + <mimeMap fileExtension=".application" mimeType="application/x-ms-application" /> + <mimeMap fileExtension=".art" mimeType="image/x-jg" /> + <mimeMap fileExtension=".asd" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".asf" mimeType="video/x-ms-asf" /> + <mimeMap fileExtension=".asi" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".asm" mimeType="text/plain" /> + <mimeMap fileExtension=".asr" mimeType="video/x-ms-asf" /> + <mimeMap fileExtension=".asx" mimeType="video/x-ms-asf" /> + <mimeMap fileExtension=".atom" mimeType="application/atom+xml" /> + <mimeMap fileExtension=".au" mimeType="audio/basic" /> + <mimeMap fileExtension=".avi" mimeType="video/msvideo" /> + <mimeMap fileExtension=".axs" mimeType="application/olescript" /> + <mimeMap fileExtension=".bas" mimeType="text/plain" /> + <mimeMap fileExtension=".bcpio" mimeType="application/x-bcpio" /> + <mimeMap fileExtension=".bin" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".bmp" mimeType="image/bmp" /> + <mimeMap fileExtension=".c" mimeType="text/plain" /> + <mimeMap fileExtension=".cab" mimeType="application/vnd.ms-cab-compressed" /> + <mimeMap fileExtension=".calx" mimeType="application/vnd.ms-office.calx" /> + <mimeMap fileExtension=".cat" mimeType="application/vnd.ms-pki.seccat" /> + <mimeMap fileExtension=".cdf" mimeType="application/x-cdf" /> + <mimeMap fileExtension=".chm" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".class" mimeType="application/x-java-applet" /> + <mimeMap fileExtension=".clp" mimeType="application/x-msclip" /> + <mimeMap fileExtension=".cmx" mimeType="image/x-cmx" /> + <mimeMap fileExtension=".cnf" mimeType="text/plain" /> + <mimeMap fileExtension=".cod" mimeType="image/cis-cod" /> + <mimeMap fileExtension=".cpio" mimeType="application/x-cpio" /> + <mimeMap fileExtension=".cpp" mimeType="text/plain" /> + <mimeMap fileExtension=".crd" mimeType="application/x-mscardfile" /> + <mimeMap fileExtension=".crl" mimeType="application/pkix-crl" /> + <mimeMap fileExtension=".crt" mimeType="application/x-x509-ca-cert" /> + <mimeMap fileExtension=".csh" mimeType="application/x-csh" /> + <mimeMap fileExtension=".css" mimeType="text/css" /> + <mimeMap fileExtension=".csv" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".cur" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".dcr" mimeType="application/x-director" /> + <mimeMap fileExtension=".deploy" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".der" mimeType="application/x-x509-ca-cert" /> + <mimeMap fileExtension=".dib" mimeType="image/bmp" /> + <mimeMap fileExtension=".dir" mimeType="application/x-director" /> + <mimeMap fileExtension=".disco" mimeType="text/xml" /> + <mimeMap fileExtension=".dll" mimeType="application/x-msdownload" /> + <mimeMap fileExtension=".dll.config" mimeType="text/xml" /> + <mimeMap fileExtension=".dlm" mimeType="text/dlm" /> + <mimeMap fileExtension=".doc" mimeType="application/msword" /> + <mimeMap fileExtension=".docm" mimeType="application/vnd.ms-word.document.macroEnabled.12" /> + <mimeMap fileExtension=".docx" mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" /> + <mimeMap fileExtension=".dot" mimeType="application/msword" /> + <mimeMap fileExtension=".dotm" mimeType="application/vnd.ms-word.template.macroEnabled.12" /> + <mimeMap fileExtension=".dotx" mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.template" /> + <mimeMap fileExtension=".dsp" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".dtd" mimeType="text/xml" /> + <mimeMap fileExtension=".dvi" mimeType="application/x-dvi" /> + <mimeMap fileExtension=".dvr-ms" mimeType="video/x-ms-dvr" /> + <mimeMap fileExtension=".dwf" mimeType="drawing/x-dwf" /> + <mimeMap fileExtension=".dwp" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".dxr" mimeType="application/x-director" /> + <mimeMap fileExtension=".eml" mimeType="message/rfc822" /> + <mimeMap fileExtension=".emz" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" /> + <mimeMap fileExtension=".eps" mimeType="application/postscript" /> + <mimeMap fileExtension=".etx" mimeType="text/x-setext" /> + <mimeMap fileExtension=".evy" mimeType="application/envoy" /> + <mimeMap fileExtension=".exe" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".exe.config" mimeType="text/xml" /> + <mimeMap fileExtension=".fdf" mimeType="application/vnd.fdf" /> + <mimeMap fileExtension=".fif" mimeType="application/fractals" /> + <mimeMap fileExtension=".fla" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".flr" mimeType="x-world/x-vrml" /> + <mimeMap fileExtension=".flv" mimeType="video/x-flv" /> + <mimeMap fileExtension=".gif" mimeType="image/gif" /> + <mimeMap fileExtension=".gtar" mimeType="application/x-gtar" /> + <mimeMap fileExtension=".gz" mimeType="application/x-gzip" /> + <mimeMap fileExtension=".h" mimeType="text/plain" /> + <mimeMap fileExtension=".hdf" mimeType="application/x-hdf" /> + <mimeMap fileExtension=".hdml" mimeType="text/x-hdml" /> + <mimeMap fileExtension=".hhc" mimeType="application/x-oleobject" /> + <mimeMap fileExtension=".hhk" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".hhp" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".hlp" mimeType="application/winhlp" /> + <mimeMap fileExtension=".hqx" mimeType="application/mac-binhex40" /> + <mimeMap fileExtension=".hta" mimeType="application/hta" /> + <mimeMap fileExtension=".htc" mimeType="text/x-component" /> + <mimeMap fileExtension=".htm" mimeType="text/html" /> + <mimeMap fileExtension=".html" mimeType="text/html" /> + <mimeMap fileExtension=".htt" mimeType="text/webviewhtml" /> + <mimeMap fileExtension=".hxt" mimeType="text/html" /> + <mimeMap fileExtension=".ico" mimeType="image/x-icon" /> + <mimeMap fileExtension=".ics" mimeType="text/calendar" /> + <mimeMap fileExtension=".ief" mimeType="image/ief" /> + <mimeMap fileExtension=".iii" mimeType="application/x-iphone" /> + <mimeMap fileExtension=".inf" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".ins" mimeType="application/x-internet-signup" /> + <mimeMap fileExtension=".isp" mimeType="application/x-internet-signup" /> + <mimeMap fileExtension=".IVF" mimeType="video/x-ivf" /> + <mimeMap fileExtension=".jar" mimeType="application/java-archive" /> + <mimeMap fileExtension=".java" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".jck" mimeType="application/liquidmotion" /> + <mimeMap fileExtension=".jcz" mimeType="application/liquidmotion" /> + <mimeMap fileExtension=".jfif" mimeType="image/pjpeg" /> + <mimeMap fileExtension=".jpb" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".jpe" mimeType="image/jpeg" /> + <mimeMap fileExtension=".jpeg" mimeType="image/jpeg" /> + <mimeMap fileExtension=".jpg" mimeType="image/jpeg" /> + <mimeMap fileExtension=".js" mimeType="application/javascript" /> + <mimeMap fileExtension=".json" mimeType="application/json" /> + <mimeMap fileExtension=".jsonld" mimeType="application/ld+json" /> + <mimeMap fileExtension=".jsx" mimeType="text/jscript" /> + <mimeMap fileExtension=".latex" mimeType="application/x-latex" /> + <mimeMap fileExtension=".less" mimeType="text/css" /> + <mimeMap fileExtension=".lit" mimeType="application/x-ms-reader" /> + <mimeMap fileExtension=".lpk" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".lsf" mimeType="video/x-la-asf" /> + <mimeMap fileExtension=".lsx" mimeType="video/x-la-asf" /> + <mimeMap fileExtension=".lzh" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".m13" mimeType="application/x-msmediaview" /> + <mimeMap fileExtension=".m14" mimeType="application/x-msmediaview" /> + <mimeMap fileExtension=".m1v" mimeType="video/mpeg" /> + <mimeMap fileExtension=".m2ts" mimeType="video/vnd.dlna.mpeg-tts" /> + <mimeMap fileExtension=".m3u" mimeType="audio/x-mpegurl" /> + <mimeMap fileExtension=".m4a" mimeType="audio/mp4" /> + <mimeMap fileExtension=".m4v" mimeType="video/mp4" /> + <mimeMap fileExtension=".man" mimeType="application/x-troff-man" /> + <mimeMap fileExtension=".manifest" mimeType="application/x-ms-manifest" /> + <mimeMap fileExtension=".map" mimeType="text/plain" /> + <mimeMap fileExtension=".mdb" mimeType="application/x-msaccess" /> + <mimeMap fileExtension=".mdp" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".me" mimeType="application/x-troff-me" /> + <mimeMap fileExtension=".mht" mimeType="message/rfc822" /> + <mimeMap fileExtension=".mhtml" mimeType="message/rfc822" /> + <mimeMap fileExtension=".mid" mimeType="audio/mid" /> + <mimeMap fileExtension=".midi" mimeType="audio/mid" /> + <mimeMap fileExtension=".mix" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".mmf" mimeType="application/x-smaf" /> + <mimeMap fileExtension=".mno" mimeType="text/xml" /> + <mimeMap fileExtension=".mny" mimeType="application/x-msmoney" /> + <mimeMap fileExtension=".mov" mimeType="video/quicktime" /> + <mimeMap fileExtension=".movie" mimeType="video/x-sgi-movie" /> + <mimeMap fileExtension=".mp2" mimeType="video/mpeg" /> + <mimeMap fileExtension=".mp3" mimeType="audio/mpeg" /> + <mimeMap fileExtension=".mp4" mimeType="video/mp4" /> + <mimeMap fileExtension=".mp4v" mimeType="video/mp4" /> + <mimeMap fileExtension=".mpa" mimeType="video/mpeg" /> + <mimeMap fileExtension=".mpe" mimeType="video/mpeg" /> + <mimeMap fileExtension=".mpeg" mimeType="video/mpeg" /> + <mimeMap fileExtension=".mpg" mimeType="video/mpeg" /> + <mimeMap fileExtension=".mpp" mimeType="application/vnd.ms-project" /> + <mimeMap fileExtension=".mpv2" mimeType="video/mpeg" /> + <mimeMap fileExtension=".ms" mimeType="application/x-troff-ms" /> + <mimeMap fileExtension=".msi" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".mso" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".mvb" mimeType="application/x-msmediaview" /> + <mimeMap fileExtension=".mvc" mimeType="application/x-miva-compiled" /> + <mimeMap fileExtension=".nc" mimeType="application/x-netcdf" /> + <mimeMap fileExtension=".nsc" mimeType="video/x-ms-asf" /> + <mimeMap fileExtension=".nws" mimeType="message/rfc822" /> + <mimeMap fileExtension=".ocx" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".oda" mimeType="application/oda" /> + <mimeMap fileExtension=".odc" mimeType="text/x-ms-odc" /> + <mimeMap fileExtension=".ods" mimeType="application/oleobject" /> + <mimeMap fileExtension=".oga" mimeType="audio/ogg" /> + <mimeMap fileExtension=".ogg" mimeType="video/ogg" /> + <mimeMap fileExtension=".ogv" mimeType="video/ogg" /> + <mimeMap fileExtension=".one" mimeType="application/onenote" /> + <mimeMap fileExtension=".onea" mimeType="application/onenote" /> + <mimeMap fileExtension=".onetoc" mimeType="application/onenote" /> + <mimeMap fileExtension=".onetoc2" mimeType="application/onenote" /> + <mimeMap fileExtension=".onetmp" mimeType="application/onenote" /> + <mimeMap fileExtension=".onepkg" mimeType="application/onenote" /> + <mimeMap fileExtension=".osdx" mimeType="application/opensearchdescription+xml" /> + <mimeMap fileExtension=".otf" mimeType="font/otf" /> + <mimeMap fileExtension=".p10" mimeType="application/pkcs10" /> + <mimeMap fileExtension=".p12" mimeType="application/x-pkcs12" /> + <mimeMap fileExtension=".p7b" mimeType="application/x-pkcs7-certificates" /> + <mimeMap fileExtension=".p7c" mimeType="application/pkcs7-mime" /> + <mimeMap fileExtension=".p7m" mimeType="application/pkcs7-mime" /> + <mimeMap fileExtension=".p7r" mimeType="application/x-pkcs7-certreqresp" /> + <mimeMap fileExtension=".p7s" mimeType="application/pkcs7-signature" /> + <mimeMap fileExtension=".pbm" mimeType="image/x-portable-bitmap" /> + <mimeMap fileExtension=".pcx" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".pcz" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".pdf" mimeType="application/pdf" /> + <mimeMap fileExtension=".pfb" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".pfm" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".pfx" mimeType="application/x-pkcs12" /> + <mimeMap fileExtension=".pgm" mimeType="image/x-portable-graymap" /> + <mimeMap fileExtension=".pko" mimeType="application/vnd.ms-pki.pko" /> + <mimeMap fileExtension=".pma" mimeType="application/x-perfmon" /> + <mimeMap fileExtension=".pmc" mimeType="application/x-perfmon" /> + <mimeMap fileExtension=".pml" mimeType="application/x-perfmon" /> + <mimeMap fileExtension=".pmr" mimeType="application/x-perfmon" /> + <mimeMap fileExtension=".pmw" mimeType="application/x-perfmon" /> + <mimeMap fileExtension=".png" mimeType="image/png" /> + <mimeMap fileExtension=".pnm" mimeType="image/x-portable-anymap" /> + <mimeMap fileExtension=".pnz" mimeType="image/png" /> + <mimeMap fileExtension=".pot" mimeType="application/vnd.ms-powerpoint" /> + <mimeMap fileExtension=".potm" mimeType="application/vnd.ms-powerpoint.template.macroEnabled.12" /> + <mimeMap fileExtension=".potx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.template" /> + <mimeMap fileExtension=".ppam" mimeType="application/vnd.ms-powerpoint.addin.macroEnabled.12" /> + <mimeMap fileExtension=".ppm" mimeType="image/x-portable-pixmap" /> + <mimeMap fileExtension=".pps" mimeType="application/vnd.ms-powerpoint" /> + <mimeMap fileExtension=".ppsm" mimeType="application/vnd.ms-powerpoint.slideshow.macroEnabled.12" /> + <mimeMap fileExtension=".ppsx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.slideshow" /> + <mimeMap fileExtension=".ppt" mimeType="application/vnd.ms-powerpoint" /> + <mimeMap fileExtension=".pptm" mimeType="application/vnd.ms-powerpoint.presentation.macroEnabled.12" /> + <mimeMap fileExtension=".pptx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" /> + <mimeMap fileExtension=".prf" mimeType="application/pics-rules" /> + <mimeMap fileExtension=".prm" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".prx" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".ps" mimeType="application/postscript" /> + <mimeMap fileExtension=".psd" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".psm" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".psp" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".pub" mimeType="application/x-mspublisher" /> + <mimeMap fileExtension=".qt" mimeType="video/quicktime" /> + <mimeMap fileExtension=".qtl" mimeType="application/x-quicktimeplayer" /> + <mimeMap fileExtension=".qxd" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".ra" mimeType="audio/x-pn-realaudio" /> + <mimeMap fileExtension=".ram" mimeType="audio/x-pn-realaudio" /> + <mimeMap fileExtension=".rar" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".ras" mimeType="image/x-cmu-raster" /> + <mimeMap fileExtension=".rf" mimeType="image/vnd.rn-realflash" /> + <mimeMap fileExtension=".rgb" mimeType="image/x-rgb" /> + <mimeMap fileExtension=".rm" mimeType="application/vnd.rn-realmedia" /> + <mimeMap fileExtension=".rmi" mimeType="audio/mid" /> + <mimeMap fileExtension=".roff" mimeType="application/x-troff" /> + <mimeMap fileExtension=".rpm" mimeType="audio/x-pn-realaudio-plugin" /> + <mimeMap fileExtension=".rtf" mimeType="application/rtf" /> + <mimeMap fileExtension=".rtx" mimeType="text/richtext" /> + <mimeMap fileExtension=".scd" mimeType="application/x-msschedule" /> + <mimeMap fileExtension=".sct" mimeType="text/scriptlet" /> + <mimeMap fileExtension=".sea" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".setpay" mimeType="application/set-payment-initiation" /> + <mimeMap fileExtension=".setreg" mimeType="application/set-registration-initiation" /> + <mimeMap fileExtension=".sgml" mimeType="text/sgml" /> + <mimeMap fileExtension=".sh" mimeType="application/x-sh" /> + <mimeMap fileExtension=".shar" mimeType="application/x-shar" /> + <mimeMap fileExtension=".sit" mimeType="application/x-stuffit" /> + <mimeMap fileExtension=".sldm" mimeType="application/vnd.ms-powerpoint.slide.macroEnabled.12" /> + <mimeMap fileExtension=".sldx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.slide" /> + <mimeMap fileExtension=".smd" mimeType="audio/x-smd" /> + <mimeMap fileExtension=".smi" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".smx" mimeType="audio/x-smd" /> + <mimeMap fileExtension=".smz" mimeType="audio/x-smd" /> + <mimeMap fileExtension=".snd" mimeType="audio/basic" /> + <mimeMap fileExtension=".snp" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".spc" mimeType="application/x-pkcs7-certificates" /> + <mimeMap fileExtension=".spl" mimeType="application/futuresplash" /> + <mimeMap fileExtension=".spx" mimeType="audio/ogg" /> + <mimeMap fileExtension=".src" mimeType="application/x-wais-source" /> + <mimeMap fileExtension=".ssm" mimeType="application/streamingmedia" /> + <mimeMap fileExtension=".sst" mimeType="application/vnd.ms-pki.certstore" /> + <mimeMap fileExtension=".stl" mimeType="application/vnd.ms-pki.stl" /> + <mimeMap fileExtension=".sv4cpio" mimeType="application/x-sv4cpio" /> + <mimeMap fileExtension=".sv4crc" mimeType="application/x-sv4crc" /> + <mimeMap fileExtension=".svg" mimeType="image/svg+xml" /> + <mimeMap fileExtension=".svgz" mimeType="image/svg+xml" /> + <mimeMap fileExtension=".swf" mimeType="application/x-shockwave-flash" /> + <mimeMap fileExtension=".t" mimeType="application/x-troff" /> + <mimeMap fileExtension=".tar" mimeType="application/x-tar" /> + <mimeMap fileExtension=".tcl" mimeType="application/x-tcl" /> + <mimeMap fileExtension=".tex" mimeType="application/x-tex" /> + <mimeMap fileExtension=".texi" mimeType="application/x-texinfo" /> + <mimeMap fileExtension=".texinfo" mimeType="application/x-texinfo" /> + <mimeMap fileExtension=".tgz" mimeType="application/x-compressed" /> + <mimeMap fileExtension=".thmx" mimeType="application/vnd.ms-officetheme" /> + <mimeMap fileExtension=".thn" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".tif" mimeType="image/tiff" /> + <mimeMap fileExtension=".tiff" mimeType="image/tiff" /> + <mimeMap fileExtension=".toc" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".tr" mimeType="application/x-troff" /> + <mimeMap fileExtension=".trm" mimeType="application/x-msterminal" /> + <mimeMap fileExtension=".ts" mimeType="video/vnd.dlna.mpeg-tts" /> + <mimeMap fileExtension=".tsv" mimeType="text/tab-separated-values" /> + <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".tts" mimeType="video/vnd.dlna.mpeg-tts" /> + <mimeMap fileExtension=".txt" mimeType="text/plain" /> + <mimeMap fileExtension=".u32" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".uls" mimeType="text/iuls" /> + <mimeMap fileExtension=".ustar" mimeType="application/x-ustar" /> + <mimeMap fileExtension=".vbs" mimeType="text/vbscript" /> + <mimeMap fileExtension=".vcf" mimeType="text/x-vcard" /> + <mimeMap fileExtension=".vcs" mimeType="text/plain" /> + <mimeMap fileExtension=".vdx" mimeType="application/vnd.ms-visio.viewer" /> + <mimeMap fileExtension=".vml" mimeType="text/xml" /> + <mimeMap fileExtension=".vsd" mimeType="application/vnd.visio" /> + <mimeMap fileExtension=".vss" mimeType="application/vnd.visio" /> + <mimeMap fileExtension=".vst" mimeType="application/vnd.visio" /> + <mimeMap fileExtension=".vsto" mimeType="application/x-ms-vsto" /> + <mimeMap fileExtension=".vsw" mimeType="application/vnd.visio" /> + <mimeMap fileExtension=".vsx" mimeType="application/vnd.visio" /> + <mimeMap fileExtension=".vtx" mimeType="application/vnd.visio" /> + <mimeMap fileExtension=".wav" mimeType="audio/wav" /> + <mimeMap fileExtension=".wax" mimeType="audio/x-ms-wax" /> + <mimeMap fileExtension=".wbmp" mimeType="image/vnd.wap.wbmp" /> + <mimeMap fileExtension=".wcm" mimeType="application/vnd.ms-works" /> + <mimeMap fileExtension=".wdb" mimeType="application/vnd.ms-works" /> + <mimeMap fileExtension=".webm" mimeType="video/webm" /> + <mimeMap fileExtension=".wks" mimeType="application/vnd.ms-works" /> + <mimeMap fileExtension=".wm" mimeType="video/x-ms-wm" /> + <mimeMap fileExtension=".wma" mimeType="audio/x-ms-wma" /> + <mimeMap fileExtension=".wmd" mimeType="application/x-ms-wmd" /> + <mimeMap fileExtension=".wmf" mimeType="application/x-msmetafile" /> + <mimeMap fileExtension=".wml" mimeType="text/vnd.wap.wml" /> + <mimeMap fileExtension=".wmlc" mimeType="application/vnd.wap.wmlc" /> + <mimeMap fileExtension=".wmls" mimeType="text/vnd.wap.wmlscript" /> + <mimeMap fileExtension=".wmlsc" mimeType="application/vnd.wap.wmlscriptc" /> + <mimeMap fileExtension=".wmp" mimeType="video/x-ms-wmp" /> + <mimeMap fileExtension=".wmv" mimeType="video/x-ms-wmv" /> + <mimeMap fileExtension=".wmx" mimeType="video/x-ms-wmx" /> + <mimeMap fileExtension=".wmz" mimeType="application/x-ms-wmz" /> + <mimeMap fileExtension=".woff" mimeType="font/x-woff" /> + <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" /> + <mimeMap fileExtension=".wps" mimeType="application/vnd.ms-works" /> + <mimeMap fileExtension=".wri" mimeType="application/x-mswrite" /> + <mimeMap fileExtension=".wrl" mimeType="x-world/x-vrml" /> + <mimeMap fileExtension=".wrz" mimeType="x-world/x-vrml" /> + <mimeMap fileExtension=".wsdl" mimeType="text/xml" /> + <mimeMap fileExtension=".wtv" mimeType="video/x-ms-wtv" /> + <mimeMap fileExtension=".wvx" mimeType="video/x-ms-wvx" /> + <mimeMap fileExtension=".x" mimeType="application/directx" /> + <mimeMap fileExtension=".xaf" mimeType="x-world/x-vrml" /> + <mimeMap fileExtension=".xaml" mimeType="application/xaml+xml" /> + <mimeMap fileExtension=".xap" mimeType="application/x-silverlight-app" /> + <mimeMap fileExtension=".xbap" mimeType="application/x-ms-xbap" /> + <mimeMap fileExtension=".xbm" mimeType="image/x-xbitmap" /> + <mimeMap fileExtension=".xdr" mimeType="text/plain" /> + <mimeMap fileExtension=".xht" mimeType="application/xhtml+xml" /> + <mimeMap fileExtension=".xhtml" mimeType="application/xhtml+xml" /> + <mimeMap fileExtension=".xla" mimeType="application/vnd.ms-excel" /> + <mimeMap fileExtension=".xlam" mimeType="application/vnd.ms-excel.addin.macroEnabled.12" /> + <mimeMap fileExtension=".xlc" mimeType="application/vnd.ms-excel" /> + <mimeMap fileExtension=".xlm" mimeType="application/vnd.ms-excel" /> + <mimeMap fileExtension=".xls" mimeType="application/vnd.ms-excel" /> + <mimeMap fileExtension=".xlsb" mimeType="application/vnd.ms-excel.sheet.binary.macroEnabled.12" /> + <mimeMap fileExtension=".xlsm" mimeType="application/vnd.ms-excel.sheet.macroEnabled.12" /> + <mimeMap fileExtension=".xlsx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" /> + <mimeMap fileExtension=".xlt" mimeType="application/vnd.ms-excel" /> + <mimeMap fileExtension=".xltm" mimeType="application/vnd.ms-excel.template.macroEnabled.12" /> + <mimeMap fileExtension=".xltx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.template" /> + <mimeMap fileExtension=".xlw" mimeType="application/vnd.ms-excel" /> + <mimeMap fileExtension=".xml" mimeType="text/xml" /> + <mimeMap fileExtension=".xof" mimeType="x-world/x-vrml" /> + <mimeMap fileExtension=".xpm" mimeType="image/x-xpixmap" /> + <mimeMap fileExtension=".xps" mimeType="application/vnd.ms-xpsdocument" /> + <mimeMap fileExtension=".xsd" mimeType="text/xml" /> + <mimeMap fileExtension=".xsf" mimeType="text/xml" /> + <mimeMap fileExtension=".xsl" mimeType="text/xml" /> + <mimeMap fileExtension=".xslt" mimeType="text/xml" /> + <mimeMap fileExtension=".xsn" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".xtp" mimeType="application/octet-stream" /> + <mimeMap fileExtension=".xwd" mimeType="image/x-xwindowdump" /> + <mimeMap fileExtension=".z" mimeType="application/x-compress" /> + <mimeMap fileExtension=".zip" mimeType="application/x-zip-compressed" /> + </staticContent> + + <tracing> + + <traceProviderDefinitions> + <add name="WWW Server" guid="{3a2a4e84-4c21-4981-ae10-3fda0d9b0f83}"> + <areas> + <clear /> + <add name="Authentication" value="2" /> + <add name="Security" value="4" /> + <add name="Filter" value="8" /> + <add name="StaticFile" value="16" /> + <add name="CGI" value="32" /> + <add name="Compression" value="64" /> + <add name="Cache" value="128" /> + <add name="RequestNotifications" value="256" /> + <add name="Module" value="512" /> + <add name="Rewrite" value="1024" /> + <add name="FastCGI" value="4096" /> + <add name="WebSocket" value="16384" /> + </areas> + </add> + <add name="ASP" guid="{06b94d9a-b15e-456e-a4ef-37c984a2cb4b}"> + <areas> + <clear /> + </areas> + </add> + <add name="ISAPI Extension" guid="{a1c2040e-8840-4c31-ba11-9871031a19ea}"> + <areas> + <clear /> + </areas> + </add> + <add name="ASPNET" guid="{AFF081FE-0247-4275-9C4E-021F3DC1DA35}"> + <areas> + <add name="Infrastructure" value="1" /> + <add name="Module" value="2" /> + <add name="Page" value="4" /> + <add name="AppServices" value="8" /> + </areas> + </add> + </traceProviderDefinitions> + + <traceFailedRequests> + <add path="*"> + <traceAreas> + <add provider="ASP" verbosity="Verbose" /> + <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" /> + <add provider="ISAPI Extension" verbosity="Verbose" /> + <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,Rewrite,WebSocket" verbosity="Verbose" /> + </traceAreas> + <failureDefinitions statusCodes="200-999" /> + </add> + </traceFailedRequests> + + </tracing> + + <urlCompression /> + + <validation /> + <webdav> + <globalSettings> + <propertyStores> + <add name="webdav_simple_prop" image="%IIS_BIN%\webdav_simple_prop.dll" image32="%IIS_BIN%\webdav_simple_prop.dll" /> + </propertyStores> + <lockStores> + <add name="webdav_simple_lock" image="%IIS_BIN%\webdav_simple_lock.dll" image32="%IIS_BIN%\webdav_simple_lock.dll" /> + </lockStores> + + </globalSettings> + <authoring> + <locks enabled="true" lockStore="webdav_simple_lock" /> + </authoring> + <authoringRules /> + </webdav> + <webSocket /> + <applicationInitialization /> + + </system.webServer> + <location path="" overrideMode="Allow"> + <system.webServer> + <modules> + <add name="IsapiFilterModule" lockItem="true" /> + <add name="BasicAuthenticationModule" lockItem="true" /> + <add name="IsapiModule" lockItem="true" /> + <add name="HttpLoggingModule" lockItem="true" /> + <!-- + <add name="HttpCacheModule" lockItem="true" /> +--> + <add name="DynamicCompressionModule" lockItem="true" /> + <add name="StaticCompressionModule" lockItem="true" /> + <add name="DefaultDocumentModule" lockItem="true" /> + <add name="DirectoryListingModule" lockItem="true" /> + + <add name="ProtocolSupportModule" lockItem="true" /> + <add name="HttpRedirectionModule" lockItem="true" /> + <add name="ServerSideIncludeModule" lockItem="true" /> + <add name="StaticFileModule" lockItem="true" /> + <add name="AnonymousAuthenticationModule" lockItem="true" /> + <add name="CertificateMappingAuthenticationModule" lockItem="true" /> + <add name="UrlAuthorizationModule" lockItem="true" /> + <add name="WindowsAuthenticationModule" lockItem="true" /> + <!-- + <add name="DigestAuthenticationModule" lockItem="true" /> +--> + <add name="IISCertificateMappingAuthenticationModule" lockItem="true" /> + <add name="WebMatrixSupportModule" lockItem="true" /> + <add name="IpRestrictionModule" lockItem="true" /> + <add name="DynamicIpRestrictionModule" lockItem="true" /> + <add name="RequestFilteringModule" lockItem="true" /> + <add name="CustomLoggingModule" lockItem="true" /> + <add name="CustomErrorModule" lockItem="true" /> + <add name="FailedRequestsTracingModule" lockItem="true" /> + <add name="CgiModule" lockItem="true" /> + <add name="FastCgiModule" lockItem="true" /> + <!-- <add name="WebDAVModule" /> --> + <add name="RewriteModule" /> + <add name="OutputCache" type="System.Web.Caching.OutputCacheModule" preCondition="managedHandler" /> + <add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="managedHandler" /> + <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" preCondition="managedHandler" /> + <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" /> + <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" preCondition="managedHandler" /> + <add name="RoleManager" type="System.Web.Security.RoleManagerModule" preCondition="managedHandler" /> + <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="managedHandler" /> + <add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule" preCondition="managedHandler" /> + <add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" preCondition="managedHandler" /> + <add name="Profile" type="System.Web.Profile.ProfileModule" preCondition="managedHandler" /> + <add name="UrlMappingsModule" type="System.Web.UrlMappingsModule" preCondition="managedHandler" /> + <add name="ConfigurationValidationModule" lockItem="true" /> + <add name="WebSocketModule" lockItem="true" /> + <add name="ServiceModel-4.0" type="System.ServiceModel.Activation.ServiceHttpModule,System.ServiceModel.Activation,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" /> + <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="managedHandler,runtimeVersionv4.0" /> + <add name="ScriptModule-4.0" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" /> + <add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler,runtimeVersionv2.0" /> + <add name="ApplicationInitializationModule" lockItem="true" /> + <add name="AspNetCoreModule" lockItem="true" /> + </modules> + <handlers accessPolicy="Read, Script"> + <!-- <add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" /> --> + <add name="AXD-ISAPI-4.0_64bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> + <add name="PageHandlerFactory-ISAPI-4.0_64bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> + <add name="SimpleHandlerFactory-ISAPI-4.0_64bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> + <add name="WebServiceHandlerFactory-ISAPI-4.0_64bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> + <add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_64bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> + <add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_64bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> + <add name="svc-ISAPI-4.0_64bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" /> + <add name="rules-ISAPI-4.0_64bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" /> + <add name="xoml-ISAPI-4.0_64bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" /> + <add name="xamlx-ISAPI-4.0_64bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" /> + <add name="aspq-ISAPI-4.0_64bit" path="*.aspq" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> + <add name="cshtm-ISAPI-4.0_64bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> + <add name="cshtml-ISAPI-4.0_64bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> + <add name="vbhtm-ISAPI-4.0_64bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> + <add name="vbhtml-ISAPI-4.0_64bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> + <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" /> + <add name="svc-ISAPI-2.0" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" /> + <add name="xoml-Integrated" path="*.xoml" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" /> + <add name="xoml-ISAPI-2.0" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" /> + <add name="rules-Integrated" path="*.rules" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" /> + <add name="rules-ISAPI-2.0" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" /> + <add name="AXD-ISAPI-4.0_32bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> + <add name="PageHandlerFactory-ISAPI-4.0_32bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> + <add name="SimpleHandlerFactory-ISAPI-4.0_32bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> + <add name="WebServiceHandlerFactory-ISAPI-4.0_32bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> + <add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_32bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> + <add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_32bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> + <add name="svc-ISAPI-4.0_32bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> + <add name="rules-ISAPI-4.0_32bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> + <add name="xoml-ISAPI-4.0_32bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> + <add name="xamlx-ISAPI-4.0_32bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> + <add name="aspq-ISAPI-4.0_32bit" path="*.aspq" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> + <add name="cshtm-ISAPI-4.0_32bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> + <add name="cshtml-ISAPI-4.0_32bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> + <add name="vbhtm-ISAPI-4.0_32bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> + <add name="vbhtml-ISAPI-4.0_32bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> + <add name="TraceHandler-Integrated-4.0" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="WebAdminHandler-Integrated-4.0" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="AssemblyResourceLoader-Integrated-4.0" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="WebServiceHandlerFactory-Integrated-4.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="HttpRemotingHandlerFactory-rem-Integrated-4.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="HttpRemotingHandlerFactory-soap-Integrated-4.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="svc-Integrated-4.0" path="*.svc" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="rules-Integrated-4.0" path="*.rules" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="xoml-Integrated-4.0" path="*.xoml" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="xamlx-Integrated-4.0" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" type="System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="aspq-Integrated-4.0" path="*.aspq" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="cshtm-Integrated-4.0" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="cshtml-Integrated-4.0" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="vbhtm-Integrated-4.0" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="vbhtml-Integrated-4.0" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="ScriptHandlerFactoryAppServices-Integrated-4.0" path="*_AppService.axd" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="ScriptResourceIntegrated-4.0" path="*ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" /> + <add name="ASPClassic" path="*.asp" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" /> + <add name="SecurityCertificate" path="*.cer" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" /> + <add name="ISAPI-dll" path="*.dll" verb="*" modules="IsapiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" /> + <add name="TraceHandler-Integrated" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv2.0" /> + <add name="WebAdminHandler-Integrated" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv2.0" /> + <add name="AssemblyResourceLoader-Integrated" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv2.0" /> + <add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv2.0" /> + <add name="SimpleHandlerFactory-Integrated" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv2.0" /> + <add name="WebServiceHandlerFactory-Integrated" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Services.Protocols.WebServiceHandlerFactory,System.Web.Services,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" preCondition="integratedMode,runtimeVersionv2.0" /> + <add name="HttpRemotingHandlerFactory-rem-Integrated" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" /> + <add name="HttpRemotingHandlerFactory-soap-Integrated" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" /> + <add name="AXD-ISAPI-2.0" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" /> + <add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" /> + <add name="SimpleHandlerFactory-ISAPI-2.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" /> + <add name="WebServiceHandlerFactory-ISAPI-2.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" /> + <add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" /> + <add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" /> + <add name="svc-ISAPI-2.0-64" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" /> + <add name="AXD-ISAPI-2.0-64" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" /> + <add name="PageHandlerFactory-ISAPI-2.0-64" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" /> + <add name="SimpleHandlerFactory-ISAPI-2.0-64" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" /> + <add name="WebServiceHandlerFactory-ISAPI-2.0-64" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" /> + <add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0-64" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" /> + <add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0-64" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" /> + <add name="rules-64-ISAPI-2.0" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" /> + <add name="xoml-64-ISAPI-2.0" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" /> + <add name="CGI-exe" path="*.exe" verb="*" modules="CgiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" /> + <add name="SSINC-stm" path="*.stm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" /> + <add name="SSINC-shtm" path="*.shtm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" /> + <add name="SSINC-shtml" path="*.shtml" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" /> + <add name="TRACEVerbHandler" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" /> + <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" /> + <add name="ExtensionlessUrl-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> + <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> + <add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" /> + <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" /> + </handlers> + </system.webServer> + </location> +</configuration> diff --git a/node_modules/dateformat/.vs/node-dateformat/v15/.suo b/node_modules/dateformat/.vs/node-dateformat/v15/.suo new file mode 100644 index 0000000..645dc3d Binary files /dev/null and b/node_modules/dateformat/.vs/node-dateformat/v15/.suo differ diff --git a/node_modules/dateformat/.vs/slnx.sqlite b/node_modules/dateformat/.vs/slnx.sqlite new file mode 100644 index 0000000..96a2204 Binary files /dev/null and b/node_modules/dateformat/.vs/slnx.sqlite differ diff --git a/node_modules/dateformat/LICENSE b/node_modules/dateformat/LICENSE new file mode 100644 index 0000000..57d44e2 --- /dev/null +++ b/node_modules/dateformat/LICENSE @@ -0,0 +1,20 @@ +(c) 2007-2009 Steven Levithan <stevenlevithan.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/dateformat/Readme.md b/node_modules/dateformat/Readme.md new file mode 100644 index 0000000..f16f789 --- /dev/null +++ b/node_modules/dateformat/Readme.md @@ -0,0 +1,134 @@ +# dateformat + +A node.js package for Steven Levithan's excellent [dateFormat()][dateformat] function. + +[![Build Status](https://travis-ci.org/felixge/node-dateformat.svg)](https://travis-ci.org/felixge/node-dateformat) + +## Modifications + +* Removed the `Date.prototype.format` method. Sorry folks, but extending native prototypes is for suckers. +* Added a `module.exports = dateFormat;` statement at the bottom +* Added the placeholder `N` to get the ISO 8601 numeric representation of the day of the week + +## Installation + +```bash +$ npm install dateformat +$ dateformat --help +``` + +## Usage + +As taken from Steven's post, modified to match the Modifications listed above: +```js +var dateFormat = require('dateformat'); +var now = new Date(); + +// Basic usage +dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT"); +// Saturday, June 9th, 2007, 5:46:21 PM + +// You can use one of several named masks +dateFormat(now, "isoDateTime"); +// 2007-06-09T17:46:21 + +// ...Or add your own +dateFormat.masks.hammerTime = 'HH:MM! "Can\'t touch this!"'; +dateFormat(now, "hammerTime"); +// 17:46! Can't touch this! + +// You can also provide the date as a string +dateFormat("Jun 9 2007", "fullDate"); +// Saturday, June 9, 2007 + +// Note that if you don't include the mask argument, +// dateFormat.masks.default is used +dateFormat(now); +// Sat Jun 09 2007 17:46:21 + +// And if you don't include the date argument, +// the current date and time is used +dateFormat(); +// Sat Jun 09 2007 17:46:22 + +// You can also skip the date argument (as long as your mask doesn't +// contain any numbers), in which case the current date/time is used +dateFormat("longTime"); +// 5:46:22 PM EST + +// And finally, you can convert local time to UTC time. Simply pass in +// true as an additional argument (no argument skipping allowed in this case): +dateFormat(now, "longTime", true); +// 10:46:21 PM UTC + +// ...Or add the prefix "UTC:" or "GMT:" to your mask. +dateFormat(now, "UTC:h:MM:ss TT Z"); +// 10:46:21 PM UTC + +// You can also get the ISO 8601 week of the year: +dateFormat(now, "W"); +// 42 + +// and also get the ISO 8601 numeric representation of the day of the week: +dateFormat(now,"N"); +// 6 +``` + +### Mask options + +Mask | Description +---- | ----------- +`d` | Day of the month as digits; no leading zero for single-digit days. +`dd` | Day of the month as digits; leading zero for single-digit days. +`ddd` | Day of the week as a three-letter abbreviation. +`dddd` | Day of the week as its full name. +`m` | Month as digits; no leading zero for single-digit months. +`mm` | Month as digits; leading zero for single-digit months. +`mmm` | Month as a three-letter abbreviation. +`mmmm` | Month as its full name. +`yy` | Year as last two digits; leading zero for years less than 10. +`yyyy` | Year represented by four digits. +`h` | Hours; no leading zero for single-digit hours (12-hour clock). +`hh` | Hours; leading zero for single-digit hours (12-hour clock). +`H` | Hours; no leading zero for single-digit hours (24-hour clock). +`HH` | Hours; leading zero for single-digit hours (24-hour clock). +`M` | Minutes; no leading zero for single-digit minutes. +`MM` | Minutes; leading zero for single-digit minutes. +`N` | ISO 8601 numeric representation of the day of the week. +`o` | GMT/UTC timezone offset, e.g. -0500 or +0230. +`s` | Seconds; no leading zero for single-digit seconds. +`ss` | Seconds; leading zero for single-digit seconds. +`S` | The date's ordinal suffix (st, nd, rd, or th). Works well with `d`. +`l` | Milliseconds; gives 3 digits. +`L` | Milliseconds; gives 2 digits. +`t` | Lowercase, single-character time marker string: a or p. +`tt` | Lowercase, two-character time marker string: am or pm. +`T` | Uppercase, single-character time marker string: A or P. +`TT` | Uppercase, two-character time marker string: AM or PM. +`W` | ISO 8601 week number of the year, e.g. 42 +`Z` | US timezone abbreviation, e.g. EST or MDT. With non-US timezones or in the +`'...'`, `"..."` | Literal character sequence. Surrounding quotes are removed. +`UTC:` | Must be the first four characters of the mask. Converts the date from local time to UTC/GMT/Zulu time before applying the mask. The "UTC:" prefix is removed. + +### Named Formats + +Name | Mask | Example +---- | ---- | ------- +`default` | `ddd mmm dd yyyy HH:MM:ss` | Sat Jun 09 2007 17:46:21 +`shortDate` | `m/d/yy` | 6/9/07 +`mediumDate` | `mmm d, yyyy` | Jun 9, 2007 +`longDate` | `mmmm d, yyyy` | June 9, 2007 +`fullDate` | `dddd, mmmm d, yyyy` | Saturday, June 9, 2007 +`shortTime` | `h:MM TT` | 5:46 PM +`mediumTime` | `h:MM:ss TT` | 5:46:21 PM +`longTime` | `h:MM:ss TT Z` | 5:46:21 PM EST +`isoDate` | `yyyy-mm-dd` | 2007-06-09 +`isoTime` | `HH:MM:ss` | 17:46:21 +`isoDateTime` | `yyyy-mm-dd'T'HH:MM:ss` | 2007-06-09T17:46:21 +`isoUtcDateTime` | `UTC:yyyy-mm-dd'T'HH:MM:ss'Z'` | 2007-06-09T22:46:21Z +## License + +(c) 2007-2009 Steven Levithan [stevenlevithan.com][stevenlevithan], MIT license. + +[dateformat]: http://blog.stevenlevithan.com/archives/date-time-format +[stevenlevithan]: http://stevenlevithan.com/ diff --git a/node_modules/dateformat/lib/dateformat.js b/node_modules/dateformat/lib/dateformat.js new file mode 100644 index 0000000..77cfb1f --- /dev/null +++ b/node_modules/dateformat/lib/dateformat.js @@ -0,0 +1,226 @@ +/* + * Date Format 1.2.3 + * (c) 2007-2009 Steven Levithan <stevenlevithan.com> + * MIT license + * + * Includes enhancements by Scott Trenda <scott.trenda.net> + * and Kris Kowal <cixar.com/~kris.kowal/> + * + * Accepts a date, a mask, or a date and a mask. + * Returns a formatted version of the given date. + * The date defaults to the current date/time. + * The mask defaults to dateFormat.masks.default. + */ + +(function(global) { + 'use strict'; + + var dateFormat = (function() { + var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|'[^']*'|'[^']*'/g; + var timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g; + var timezoneClip = /[^-+\dA-Z]/g; + + // Regexes and supporting functions are cached through closure + return function (date, mask, utc, gmt) { + + // You can't provide utc if you skip other args (use the 'UTC:' mask prefix) + if (arguments.length === 1 && kindOf(date) === 'string' && !/\d/.test(date)) { + mask = date; + date = undefined; + } + + date = date || new Date; + + if(!(date instanceof Date)) { + date = new Date(date); + } + + if (isNaN(date)) { + throw TypeError('Invalid date'); + } + + mask = String(dateFormat.masks[mask] || mask || dateFormat.masks['default']); + + // Allow setting the utc/gmt argument via the mask + var maskSlice = mask.slice(0, 4); + if (maskSlice === 'UTC:' || maskSlice === 'GMT:') { + mask = mask.slice(4); + utc = true; + if (maskSlice === 'GMT:') { + gmt = true; + } + } + + var _ = utc ? 'getUTC' : 'get'; + var d = date[_ + 'Date'](); + var D = date[_ + 'Day'](); + var m = date[_ + 'Month'](); + var y = date[_ + 'FullYear'](); + var H = date[_ + 'Hours'](); + var M = date[_ + 'Minutes'](); + var s = date[_ + 'Seconds'](); + var L = date[_ + 'Milliseconds'](); + var o = utc ? 0 : date.getTimezoneOffset(); + var W = getWeek(date); + var N = getDayOfWeek(date); + var flags = { + d: d, + dd: pad(d), + ddd: dateFormat.i18n.dayNames[D], + dddd: dateFormat.i18n.dayNames[D + 7], + m: m + 1, + mm: pad(m + 1), + mmm: dateFormat.i18n.monthNames[m], + mmmm: dateFormat.i18n.monthNames[m + 12], + yy: String(y).slice(2), + yyyy: y, + h: H % 12 || 12, + hh: pad(H % 12 || 12), + H: H, + HH: pad(H), + M: M, + MM: pad(M), + s: s, + ss: pad(s), + l: pad(L, 3), + L: pad(Math.round(L / 10)), + t: H < 12 ? 'a' : 'p', + tt: H < 12 ? 'am' : 'pm', + T: H < 12 ? 'A' : 'P', + TT: H < 12 ? 'AM' : 'PM', + Z: gmt ? 'GMT' : utc ? 'UTC' : (String(date).match(timezone) || ['']).pop().replace(timezoneClip, ''), + o: (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), + S: ['th', 'st', 'nd', 'rd'][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10], + W: W, + N: N + }; + + return mask.replace(token, function (match) { + if (match in flags) { + return flags[match]; + } + return match.slice(1, match.length - 1); + }); + }; + })(); + + dateFormat.masks = { + 'default': 'ddd mmm dd yyyy HH:MM:ss', + 'shortDate': 'm/d/yy', + 'mediumDate': 'mmm d, yyyy', + 'longDate': 'mmmm d, yyyy', + 'fullDate': 'dddd, mmmm d, yyyy', + 'shortTime': 'h:MM TT', + 'mediumTime': 'h:MM:ss TT', + 'longTime': 'h:MM:ss TT Z', + 'isoDate': 'yyyy-mm-dd', + 'isoTime': 'HH:MM:ss', + 'isoDateTime': 'yyyy-mm-dd\'T\'HH:MM:sso', + 'isoUtcDateTime': 'UTC:yyyy-mm-dd\'T\'HH:MM:ss\'Z\'', + 'expiresHeaderFormat': 'ddd, dd mmm yyyy HH:MM:ss Z' + }; + + // Internationalization strings + dateFormat.i18n = { + dayNames: [ + 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', + 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' + ], + monthNames: [ + 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', + 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' + ] + }; + +function pad(val, len) { + val = String(val); + len = len || 2; + while (val.length < len) { + val = '0' + val; + } + return val; +} + +/** + * Get the ISO 8601 week number + * Based on comments from + * http://techblog.procurios.nl/k/n618/news/view/33796/14863/Calculate-ISO-8601-week-and-year-in-javascript.html + * + * @param {Object} `date` + * @return {Number} + */ +function getWeek(date) { + // Remove time components of date + var targetThursday = new Date(date.getFullYear(), date.getMonth(), date.getDate()); + + // Change date to Thursday same week + targetThursday.setDate(targetThursday.getDate() - ((targetThursday.getDay() + 6) % 7) + 3); + + // Take January 4th as it is always in week 1 (see ISO 8601) + var firstThursday = new Date(targetThursday.getFullYear(), 0, 4); + + // Change date to Thursday same week + firstThursday.setDate(firstThursday.getDate() - ((firstThursday.getDay() + 6) % 7) + 3); + + // Check if daylight-saving-time-switch occurred and correct for it + var ds = targetThursday.getTimezoneOffset() - firstThursday.getTimezoneOffset(); + targetThursday.setHours(targetThursday.getHours() - ds); + + // Number of weeks between target Thursday and first Thursday + var weekDiff = (targetThursday - firstThursday) / (86400000*7); + return 1 + Math.floor(weekDiff); +} + +/** + * Get ISO-8601 numeric representation of the day of the week + * 1 (for Monday) through 7 (for Sunday) + * + * @param {Object} `date` + * @return {Number} + */ +function getDayOfWeek(date) { + var dow = date.getDay(); + if(dow === 0) { + dow = 7; + } + return dow; +} + +/** + * kind-of shortcut + * @param {*} val + * @return {String} + */ +function kindOf(val) { + if (val === null) { + return 'null'; + } + + if (val === undefined) { + return 'undefined'; + } + + if (typeof val !== 'object') { + return typeof val; + } + + if (Array.isArray(val)) { + return 'array'; + } + + return {}.toString.call(val) + .slice(8, -1).toLowerCase(); +}; + + + + if (typeof define === 'function' && define.amd) { + define(function () { + return dateFormat; + }); + } else if (typeof exports === 'object') { + module.exports = dateFormat; + } else { + global.dateFormat = dateFormat; + } +})(this); diff --git a/node_modules/dateformat/package.json b/node_modules/dateformat/package.json new file mode 100644 index 0000000..44f44f2 --- /dev/null +++ b/node_modules/dateformat/package.json @@ -0,0 +1,30 @@ +{ + "name": "dateformat", + "description": "A node.js package for Steven Levithan's excellent dateFormat() function.", + "maintainers": "Felix Geisendörfer <felix@debuggable.com>", + "homepage": "https://github.com/felixge/node-dateformat", + "author": "Steven Levithan", + "contributors": [ + "Steven Levithan", + "Felix Geisendörfer <felix@debuggable.com>", + "Christoph Tavan <dev@tavan.de>", + "Jon Schlinkert (https://github.com/jonschlinkert)" + ], + "version": "2.2.0", + "license": "MIT", + "main": "lib/dateformat", + "devDependencies": { + "underscore": "1.7.0", + "mocha": "2.0.1" + }, + "engines": { + "node": "*" + }, + "scripts": { + "test": "mocha" + }, + "repository": { + "type": "git", + "url": "https://github.com/felixge/node-dateformat.git" + } +} diff --git a/node_modules/debug/LICENSE b/node_modules/debug/LICENSE new file mode 100644 index 0000000..1a9820e --- /dev/null +++ b/node_modules/debug/LICENSE @@ -0,0 +1,20 @@ +(The MIT License) + +Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca> +Copyright (c) 2018-2021 Josh Junon + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the 'Software'), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/node_modules/debug/README.md b/node_modules/debug/README.md new file mode 100644 index 0000000..9ebdfbf --- /dev/null +++ b/node_modules/debug/README.md @@ -0,0 +1,481 @@ +# debug +[![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) +[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) + +<img width="647" src="https://user-images.githubusercontent.com/71256/29091486-fa38524c-7c37-11e7-895f-e7ec8e1039b6.png"> + +A tiny JavaScript debugging utility modelled after Node.js core's debugging +technique. Works in Node.js and web browsers. + +## Installation + +```bash +$ npm install debug +``` + +## Usage + +`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. + +Example [_app.js_](./examples/node/app.js): + +```js +var debug = require('debug')('http') + , http = require('http') + , name = 'My App'; + +// fake app + +debug('booting %o', name); + +http.createServer(function(req, res){ + debug(req.method + ' ' + req.url); + res.end('hello\n'); +}).listen(3000, function(){ + debug('listening'); +}); + +// fake worker of some kind + +require('./worker'); +``` + +Example [_worker.js_](./examples/node/worker.js): + +```js +var a = require('debug')('worker:a') + , b = require('debug')('worker:b'); + +function work() { + a('doing lots of uninteresting work'); + setTimeout(work, Math.random() * 1000); +} + +work(); + +function workb() { + b('doing some work'); + setTimeout(workb, Math.random() * 2000); +} + +workb(); +``` + +The `DEBUG` environment variable is then used to enable these based on space or +comma-delimited names. + +Here are some examples: + +<img width="647" alt="screen shot 2017-08-08 at 12 53 04 pm" src="https://user-images.githubusercontent.com/71256/29091703-a6302cdc-7c38-11e7-8304-7c0b3bc600cd.png"> +<img width="647" alt="screen shot 2017-08-08 at 12 53 38 pm" src="https://user-images.githubusercontent.com/71256/29091700-a62a6888-7c38-11e7-800b-db911291ca2b.png"> +<img width="647" alt="screen shot 2017-08-08 at 12 53 25 pm" src="https://user-images.githubusercontent.com/71256/29091701-a62ea114-7c38-11e7-826a-2692bedca740.png"> + +#### Windows command prompt notes + +##### CMD + +On Windows the environment variable is set using the `set` command. + +```cmd +set DEBUG=*,-not_this +``` + +Example: + +```cmd +set DEBUG=* & node app.js +``` + +##### PowerShell (VS Code default) + +PowerShell uses different syntax to set environment variables. + +```cmd +$env:DEBUG = "*,-not_this" +``` + +Example: + +```cmd +$env:DEBUG='app';node app.js +``` + +Then, run the program to be debugged as usual. + +npm script example: +```js + "windowsDebug": "@powershell -Command $env:DEBUG='*';node app.js", +``` + +## Namespace Colors + +Every debug instance has a color generated for it based on its namespace name. +This helps when visually parsing the debug output to identify which debug instance +a debug line belongs to. + +#### Node.js + +In Node.js, colors are enabled when stderr is a TTY. You also _should_ install +the [`supports-color`](https://npmjs.org/supports-color) module alongside debug, +otherwise debug will only use a small handful of basic colors. + +<img width="521" src="https://user-images.githubusercontent.com/71256/29092181-47f6a9e6-7c3a-11e7-9a14-1928d8a711cd.png"> + +#### Web Browser + +Colors are also enabled on "Web Inspectors" that understand the `%c` formatting +option. These are WebKit web inspectors, Firefox ([since version +31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) +and the Firebug plugin for Firefox (any version). + +<img width="524" src="https://user-images.githubusercontent.com/71256/29092033-b65f9f2e-7c39-11e7-8e32-f6f0d8e865c1.png"> + + +## Millisecond diff + +When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. + +<img width="647" src="https://user-images.githubusercontent.com/71256/29091486-fa38524c-7c37-11e7-895f-e7ec8e1039b6.png"> + +When stdout is not a TTY, `Date#toISOString()` is used, making it more useful for logging the debug information as shown below: + +<img width="647" src="https://user-images.githubusercontent.com/71256/29091956-6bd78372-7c39-11e7-8c55-c948396d6edd.png"> + + +## Conventions + +If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". If you append a "*" to the end of your name, it will always be enabled regardless of the setting of the DEBUG environment variable. You can then use it for normal output as well as debug output. + +## Wildcards + +The `*` character may be used as a wildcard. Suppose for example your library has +debuggers named "connect:bodyParser", "connect:compress", "connect:session", +instead of listing all three with +`DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do +`DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. + +You can also exclude specific debuggers by prefixing them with a "-" character. +For example, `DEBUG=*,-connect:*` would include all debuggers except those +starting with "connect:". + +## Environment Variables + +When running through Node.js, you can set a few environment variables that will +change the behavior of the debug logging: + +| Name | Purpose | +|-----------|-------------------------------------------------| +| `DEBUG` | Enables/disables specific debugging namespaces. | +| `DEBUG_HIDE_DATE` | Hide date from debug output (non-TTY). | +| `DEBUG_COLORS`| Whether or not to use colors in the debug output. | +| `DEBUG_DEPTH` | Object inspection depth. | +| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | + + +__Note:__ The environment variables beginning with `DEBUG_` end up being +converted into an Options object that gets used with `%o`/`%O` formatters. +See the Node.js documentation for +[`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) +for the complete list. + +## Formatters + +Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. +Below are the officially supported formatters: + +| Formatter | Representation | +|-----------|----------------| +| `%O` | Pretty-print an Object on multiple lines. | +| `%o` | Pretty-print an Object all on a single line. | +| `%s` | String. | +| `%d` | Number (both integer and float). | +| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | +| `%%` | Single percent sign ('%'). This does not consume an argument. | + + +### Custom formatters + +You can add custom formatters by extending the `debug.formatters` object. +For example, if you wanted to add support for rendering a Buffer as hex with +`%h`, you could do something like: + +```js +const createDebug = require('debug') +createDebug.formatters.h = (v) => { + return v.toString('hex') +} + +// …elsewhere +const debug = createDebug('foo') +debug('this is hex: %h', new Buffer('hello world')) +// foo this is hex: 68656c6c6f20776f726c6421 +0ms +``` + + +## Browser Support + +You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), +or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), +if you don't want to build it yourself. + +Debug's enable state is currently persisted by `localStorage`. +Consider the situation shown below where you have `worker:a` and `worker:b`, +and wish to debug both. You can enable this using `localStorage.debug`: + +```js +localStorage.debug = 'worker:*' +``` + +And then refresh the page. + +```js +a = debug('worker:a'); +b = debug('worker:b'); + +setInterval(function(){ + a('doing some work'); +}, 1000); + +setInterval(function(){ + b('doing some work'); +}, 1200); +``` + +In Chromium-based web browsers (e.g. Brave, Chrome, and Electron), the JavaScript console will—by default—only show messages logged by `debug` if the "Verbose" log level is _enabled_. + +<img width="647" src="https://user-images.githubusercontent.com/7143133/152083257-29034707-c42c-4959-8add-3cee850e6fcf.png"> + +## Output streams + + By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: + +Example [_stdout.js_](./examples/node/stdout.js): + +```js +var debug = require('debug'); +var error = debug('app:error'); + +// by default stderr is used +error('goes to stderr!'); + +var log = debug('app:log'); +// set this namespace to log via console.log +log.log = console.log.bind(console); // don't forget to bind to console! +log('goes to stdout'); +error('still goes to stderr!'); + +// set all output to go via console.info +// overrides all per-namespace log settings +debug.log = console.info.bind(console); +error('now goes to stdout via console.info'); +log('still goes to stdout, but via console.info now'); +``` + +## Extend +You can simply extend debugger +```js +const log = require('debug')('auth'); + +//creates new debug instance with extended namespace +const logSign = log.extend('sign'); +const logLogin = log.extend('login'); + +log('hello'); // auth hello +logSign('hello'); //auth:sign hello +logLogin('hello'); //auth:login hello +``` + +## Set dynamically + +You can also enable debug dynamically by calling the `enable()` method : + +```js +let debug = require('debug'); + +console.log(1, debug.enabled('test')); + +debug.enable('test'); +console.log(2, debug.enabled('test')); + +debug.disable(); +console.log(3, debug.enabled('test')); + +``` + +print : +``` +1 false +2 true +3 false +``` + +Usage : +`enable(namespaces)` +`namespaces` can include modes separated by a colon and wildcards. + +Note that calling `enable()` completely overrides previously set DEBUG variable : + +``` +$ DEBUG=foo node -e 'var dbg = require("debug"); dbg.enable("bar"); console.log(dbg.enabled("foo"))' +=> false +``` + +`disable()` + +Will disable all namespaces. The functions returns the namespaces currently +enabled (and skipped). This can be useful if you want to disable debugging +temporarily without knowing what was enabled to begin with. + +For example: + +```js +let debug = require('debug'); +debug.enable('foo:*,-foo:bar'); +let namespaces = debug.disable(); +debug.enable(namespaces); +``` + +Note: There is no guarantee that the string will be identical to the initial +enable string, but semantically they will be identical. + +## Checking whether a debug target is enabled + +After you've created a debug instance, you can determine whether or not it is +enabled by checking the `enabled` property: + +```javascript +const debug = require('debug')('http'); + +if (debug.enabled) { + // do stuff... +} +``` + +You can also manually toggle this property to force the debug instance to be +enabled or disabled. + +## Usage in child processes + +Due to the way `debug` detects if the output is a TTY or not, colors are not shown in child processes when `stderr` is piped. A solution is to pass the `DEBUG_COLORS=1` environment variable to the child process. +For example: + +```javascript +worker = fork(WORKER_WRAP_PATH, [workerPath], { + stdio: [ + /* stdin: */ 0, + /* stdout: */ 'pipe', + /* stderr: */ 'pipe', + 'ipc', + ], + env: Object.assign({}, process.env, { + DEBUG_COLORS: 1 // without this settings, colors won't be shown + }), +}); + +worker.stderr.pipe(process.stderr, { end: false }); +``` + + +## Authors + + - TJ Holowaychuk + - Nathan Rajlich + - Andrew Rhyne + - Josh Junon + +## Backers + +Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] + +<a href="https://opencollective.com/debug/backer/0/website" target="_blank"><img src="https://opencollective.com/debug/backer/0/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/1/website" target="_blank"><img src="https://opencollective.com/debug/backer/1/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/2/website" target="_blank"><img src="https://opencollective.com/debug/backer/2/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/3/website" target="_blank"><img src="https://opencollective.com/debug/backer/3/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/4/website" target="_blank"><img src="https://opencollective.com/debug/backer/4/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/5/website" target="_blank"><img src="https://opencollective.com/debug/backer/5/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/6/website" target="_blank"><img src="https://opencollective.com/debug/backer/6/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/7/website" target="_blank"><img src="https://opencollective.com/debug/backer/7/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/8/website" target="_blank"><img src="https://opencollective.com/debug/backer/8/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/9/website" target="_blank"><img src="https://opencollective.com/debug/backer/9/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/10/website" target="_blank"><img src="https://opencollective.com/debug/backer/10/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/11/website" target="_blank"><img src="https://opencollective.com/debug/backer/11/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/12/website" target="_blank"><img src="https://opencollective.com/debug/backer/12/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/13/website" target="_blank"><img src="https://opencollective.com/debug/backer/13/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/14/website" target="_blank"><img src="https://opencollective.com/debug/backer/14/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/15/website" target="_blank"><img src="https://opencollective.com/debug/backer/15/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/16/website" target="_blank"><img src="https://opencollective.com/debug/backer/16/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/17/website" target="_blank"><img src="https://opencollective.com/debug/backer/17/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/18/website" target="_blank"><img src="https://opencollective.com/debug/backer/18/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/19/website" target="_blank"><img src="https://opencollective.com/debug/backer/19/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/20/website" target="_blank"><img src="https://opencollective.com/debug/backer/20/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/21/website" target="_blank"><img src="https://opencollective.com/debug/backer/21/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/22/website" target="_blank"><img src="https://opencollective.com/debug/backer/22/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/23/website" target="_blank"><img src="https://opencollective.com/debug/backer/23/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/24/website" target="_blank"><img src="https://opencollective.com/debug/backer/24/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/25/website" target="_blank"><img src="https://opencollective.com/debug/backer/25/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/26/website" target="_blank"><img src="https://opencollective.com/debug/backer/26/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/27/website" target="_blank"><img src="https://opencollective.com/debug/backer/27/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/28/website" target="_blank"><img src="https://opencollective.com/debug/backer/28/avatar.svg"></a> +<a href="https://opencollective.com/debug/backer/29/website" target="_blank"><img src="https://opencollective.com/debug/backer/29/avatar.svg"></a> + + +## Sponsors + +Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] + +<a href="https://opencollective.com/debug/sponsor/0/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/0/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/1/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/1/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/2/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/2/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/3/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/3/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/4/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/4/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/5/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/5/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/6/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/6/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/7/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/7/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/8/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/8/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/9/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/9/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/10/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/10/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/11/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/11/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/12/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/12/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/13/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/13/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/14/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/14/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/15/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/15/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/16/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/16/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/17/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/17/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/18/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/18/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/19/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/19/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/20/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/20/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/21/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/21/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/22/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/22/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/23/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/23/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/24/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/24/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/25/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/25/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/26/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/26/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/27/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/27/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/28/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/28/avatar.svg"></a> +<a href="https://opencollective.com/debug/sponsor/29/website" target="_blank"><img src="https://opencollective.com/debug/sponsor/29/avatar.svg"></a> + +## License + +(The MIT License) + +Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca> +Copyright (c) 2018-2021 Josh Junon + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/debug/package.json b/node_modules/debug/package.json new file mode 100644 index 0000000..afc2f8b --- /dev/null +++ b/node_modules/debug/package.json @@ -0,0 +1,64 @@ +{ + "name": "debug", + "version": "4.4.1", + "repository": { + "type": "git", + "url": "git://github.com/debug-js/debug.git" + }, + "description": "Lightweight debugging utility for Node.js and the browser", + "keywords": [ + "debug", + "log", + "debugger" + ], + "files": [ + "src", + "LICENSE", + "README.md" + ], + "author": "Josh Junon (https://github.com/qix-)", + "contributors": [ + "TJ Holowaychuk <tj@vision-media.ca>", + "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)", + "Andrew Rhyne <rhyneandrew@gmail.com>" + ], + "license": "MIT", + "scripts": { + "lint": "xo", + "test": "npm run test:node && npm run test:browser && npm run lint", + "test:node": "mocha test.js test.node.js", + "test:browser": "karma start --single-run", + "test:coverage": "cat ./coverage/lcov.info | coveralls" + }, + "dependencies": { + "ms": "^2.1.3" + }, + "devDependencies": { + "brfs": "^2.0.1", + "browserify": "^16.2.3", + "coveralls": "^3.0.2", + "karma": "^3.1.4", + "karma-browserify": "^6.0.0", + "karma-chrome-launcher": "^2.2.0", + "karma-mocha": "^1.3.0", + "mocha": "^5.2.0", + "mocha-lcov-reporter": "^1.2.0", + "sinon": "^14.0.0", + "xo": "^0.23.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + }, + "main": "./src/index.js", + "browser": "./src/browser.js", + "engines": { + "node": ">=6.0" + }, + "xo": { + "rules": { + "import/extensions": "off" + } + } +} diff --git a/node_modules/debug/src/browser.js b/node_modules/debug/src/browser.js new file mode 100644 index 0000000..5993451 --- /dev/null +++ b/node_modules/debug/src/browser.js @@ -0,0 +1,272 @@ +/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ + +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +exports.destroy = (() => { + let warned = false; + + return () => { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +})(); + +/** + * Colors. + */ + +exports.colors = [ + '#0000CC', + '#0000FF', + '#0033CC', + '#0033FF', + '#0066CC', + '#0066FF', + '#0099CC', + '#0099FF', + '#00CC00', + '#00CC33', + '#00CC66', + '#00CC99', + '#00CCCC', + '#00CCFF', + '#3300CC', + '#3300FF', + '#3333CC', + '#3333FF', + '#3366CC', + '#3366FF', + '#3399CC', + '#3399FF', + '#33CC00', + '#33CC33', + '#33CC66', + '#33CC99', + '#33CCCC', + '#33CCFF', + '#6600CC', + '#6600FF', + '#6633CC', + '#6633FF', + '#66CC00', + '#66CC33', + '#9900CC', + '#9900FF', + '#9933CC', + '#9933FF', + '#99CC00', + '#99CC33', + '#CC0000', + '#CC0033', + '#CC0066', + '#CC0099', + '#CC00CC', + '#CC00FF', + '#CC3300', + '#CC3333', + '#CC3366', + '#CC3399', + '#CC33CC', + '#CC33FF', + '#CC6600', + '#CC6633', + '#CC9900', + '#CC9933', + '#CCCC00', + '#CCCC33', + '#FF0000', + '#FF0033', + '#FF0066', + '#FF0099', + '#FF00CC', + '#FF00FF', + '#FF3300', + '#FF3333', + '#FF3366', + '#FF3399', + '#FF33CC', + '#FF33FF', + '#FF6600', + '#FF6633', + '#FF9900', + '#FF9933', + '#FFCC00', + '#FFCC33' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } + + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + + let m; + + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + // eslint-disable-next-line no-return-assign + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); + + if (!this.useColors) { + return; + } + + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); + + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. + * + * @api public + */ +exports.log = console.debug || console.log || (() => {}); + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + let r; + try { + r = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +module.exports = require('./common')(exports); + +const {formatters} = module.exports; + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; diff --git a/node_modules/debug/src/common.js b/node_modules/debug/src/common.js new file mode 100644 index 0000000..141cb57 --- /dev/null +++ b/node_modules/debug/src/common.js @@ -0,0 +1,292 @@ + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ + +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = require('ms'); + createDebug.destroy = destroy; + + Object.keys(env).forEach(key => { + createDebug[key] = env[key]; + }); + + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; + + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + let hash = 0; + + for (let i = 0; i < namespace.length; i++) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + + function debug(...args) { + // Disabled? + if (!debug.enabled) { + return; + } + + const self = debug; + + // Set `diff` timestamp + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + args[0] = createDebug.coerce(args[0]); + + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } + + // Apply any `formatters` transformations + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return '%'; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + const val = args[index]; + match = formatter.call(self, val); + + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); + + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. + + Object.defineProperty(debug, 'enabled', { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + + return enabledCache; + }, + set: v => { + enableOverride = v; + } + }); + + // Env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + + return debug; + } + + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + + createDebug.names = []; + createDebug.skips = []; + + const split = (typeof namespaces === 'string' ? namespaces : '') + .trim() + .replace(/\s+/g, ',') + .split(',') + .filter(Boolean); + + for (const ns of split) { + if (ns[0] === '-') { + createDebug.skips.push(ns.slice(1)); + } else { + createDebug.names.push(ns); + } + } + } + + /** + * Checks if the given string matches a namespace template, honoring + * asterisks as wildcards. + * + * @param {String} search + * @param {String} template + * @return {Boolean} + */ + function matchesTemplate(search, template) { + let searchIndex = 0; + let templateIndex = 0; + let starIndex = -1; + let matchIndex = 0; + + while (searchIndex < search.length) { + if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) { + // Match character or proceed with wildcard + if (template[templateIndex] === '*') { + starIndex = templateIndex; + matchIndex = searchIndex; + templateIndex++; // Skip the '*' + } else { + searchIndex++; + templateIndex++; + } + } else if (starIndex !== -1) { // eslint-disable-line no-negated-condition + // Backtrack to the last '*' and try to match more characters + templateIndex = starIndex + 1; + matchIndex++; + searchIndex = matchIndex; + } else { + return false; // No match + } + } + + // Handle trailing '*' in template + while (templateIndex < template.length && template[templateIndex] === '*') { + templateIndex++; + } + + return templateIndex === template.length; + } + + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + const namespaces = [ + ...createDebug.names, + ...createDebug.skips.map(namespace => '-' + namespace) + ].join(','); + createDebug.enable(''); + return namespaces; + } + + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + for (const skip of createDebug.skips) { + if (matchesTemplate(name, skip)) { + return false; + } + } + + for (const ns of createDebug.names) { + if (matchesTemplate(name, ns)) { + return true; + } + } + + return false; + } + + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + + /** + * XXX DO NOT USE. This is a temporary stub function. + * XXX It WILL be removed in the next major release. + */ + function destroy() { + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + + createDebug.enable(createDebug.load()); + + return createDebug; +} + +module.exports = setup; diff --git a/node_modules/debug/src/index.js b/node_modules/debug/src/index.js new file mode 100644 index 0000000..bf4c57f --- /dev/null +++ b/node_modules/debug/src/index.js @@ -0,0 +1,10 @@ +/** + * Detect Electron renderer / nwjs process, which is node, but we should + * treat as a browser. + */ + +if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { + module.exports = require('./browser.js'); +} else { + module.exports = require('./node.js'); +} diff --git a/node_modules/debug/src/node.js b/node_modules/debug/src/node.js new file mode 100644 index 0000000..715560a --- /dev/null +++ b/node_modules/debug/src/node.js @@ -0,0 +1,263 @@ +/** + * Module dependencies. + */ + +const tty = require('tty'); +const util = require('util'); + +/** + * This is the Node.js implementation of `debug()`. + */ + +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.destroy = util.deprecate( + () => {}, + 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' +); + +/** + * Colors. + */ + +exports.colors = [6, 2, 3, 4, 5, 1]; + +try { + // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) + // eslint-disable-next-line import/no-extraneous-dependencies + const supportsColor = require('supports-color'); + + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } +} catch (error) { + // Swallow - we only care if `supports-color` is available; it doesn't have to be. +} + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(key => { + return /^debug_/i.test(key); +}).reduce((obj, key) => { + // Camel-case + const prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + + // Coerce string value into JS value + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === 'null') { + val = null; + } else { + val = Number(val); + } + + obj[prop] = val; + return obj; +}, {}); + +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts ? + Boolean(exports.inspectOpts.colors) : + tty.isatty(process.stderr.fd); +} + +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + +function formatArgs(args) { + const {namespace: name, useColors} = this; + + if (useColors) { + const c = this.color; + const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); + const prefix = ` ${colorCode};1m${name} \u001B[0m`; + + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } +} + +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } + return new Date().toISOString() + ' '; +} + +/** + * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr. + */ + +function log(...args) { + return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n'); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; +} + +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + +function init(debug) { + debug.inspectOpts = {}; + + const keys = Object.keys(exports.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +module.exports = require('./common')(exports); + +const {formatters} = module.exports; + +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +formatters.o = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n') + .map(str => str.trim()) + .join(' '); +}; + +/** + * Map %O to `util.inspect()`, allowing multiple lines if needed. + */ + +formatters.O = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; diff --git a/node_modules/deepmerge/.editorconfig b/node_modules/deepmerge/.editorconfig new file mode 100644 index 0000000..6244e1b --- /dev/null +++ b/node_modules/deepmerge/.editorconfig @@ -0,0 +1,7 @@ +root = true + +[*] +indent_style = tab +end_of_line = lf +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/node_modules/deepmerge/.eslintcache b/node_modules/deepmerge/.eslintcache new file mode 100644 index 0000000..c1321eb --- /dev/null +++ b/node_modules/deepmerge/.eslintcache @@ -0,0 +1 @@ +[{"/Users/joshduff/code/deepmerge/test/custom-is-mergeable-object.js":"1"},{"size":1990,"mtime":1679007485753,"results":"2","hashOfConfig":"3"},{"filePath":"4","messages":"5","suppressedMessages":"6","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"ktjd5k","/Users/joshduff/code/deepmerge/test/custom-is-mergeable-object.js",[],[]] \ No newline at end of file diff --git a/node_modules/deepmerge/changelog.md b/node_modules/deepmerge/changelog.md new file mode 100644 index 0000000..082e0dd --- /dev/null +++ b/node_modules/deepmerge/changelog.md @@ -0,0 +1,167 @@ +# [4.3.1](https://github.com/TehShrike/deepmerge/releases/tag/v4.3.1) + +- Fix type definition for arrayMerge options. [#239](https://github.com/TehShrike/deepmerge/pull/239) + +# [4.3.0](https://github.com/TehShrike/deepmerge/releases/tag/v4.3.0) + +- Avoid thrown errors if the target doesn't have `propertyIsEnumerable`. [#252](https://github.com/TehShrike/deepmerge/pull/252) + +# [4.2.2](https://github.com/TehShrike/deepmerge/releases/tag/v4.2.2) + +- `isMergeableObject` is now only called if there are two values that could be merged. [a34dd4d2](https://github.com/TehShrike/deepmerge/commit/a34dd4d25bf5e250653540a2022bc832c7b00a19) + +# [4.2.1](https://github.com/TehShrike/deepmerge/releases/tag/v4.2.1) + +- Fix: falsey values can now be merged. [#170](https://github.com/TehShrike/deepmerge/issues/170) + +# [4.2.0](https://github.com/TehShrike/deepmerge/releases/tag/v4.2.0) + +- Properties are now only overwritten if they exist on the target object and are enumerable. [#164](https://github.com/TehShrike/deepmerge/pull/164) + +Technically this could probably be a patch release since "which properties get overwritten" wasn't documented and accidentally overwriting a built-in function or some function up the property chain would almost certainly be undesirable, but it feels like a gray area, so here we are with a feature version bump. + +# [4.1.2](https://github.com/TehShrike/deepmerge/releases/tag/v4.1.2) + +- Rolled back #167 since `Object.assign` breaks ES5 support. [55067352](https://github.com/TehShrike/deepmerge/commit/55067352a92c65a6c44a5165f3387720aae1e192) + +# [4.1.1](https://github.com/TehShrike/deepmerge/releases/tag/v4.1.1) + +- The `options` argument is no longer mutated [#167](https://github.com/TehShrike/deepmerge/pull/167) + +# [4.1.0](https://github.com/TehShrike/deepmerge/releases/tag/v4.1.0) + +- `cloneUnlessOtherwiseSpecified` is now exposed to the `arrayMerge` function [#165](https://github.com/TehShrike/deepmerge/pull/165) + +# [4.0.0](https://github.com/TehShrike/deepmerge/releases/tag/v4.0.0) + +- The `main` entry point in `package.json` is now a CommonJS module instead of a UMD module [#155](https://github.com/TehShrike/deepmerge/pull/155) + +# [3.3.0](https://github.com/TehShrike/deepmerge/releases/tag/v3.3.0) + +- Enumerable Symbol properties are now copied [#151](https://github.com/TehShrike/deepmerge/pull/151) + +# [3.2.1](https://github.com/TehShrike/deepmerge/releases/tag/v3.2.1) + +- bumping dev dependency versions to try to shut up bogus security warnings from Github/npm [#149](https://github.com/TehShrike/deepmerge/pull/149) + +# [3.2.0](https://github.com/TehShrike/deepmerge/releases/tag/v3.2.0) + +- feature: added the [`customMerge`](https://github.com/TehShrike/deepmerge#custommerge) option [#133](https://github.com/TehShrike/deepmerge/pull/133) + +# [3.1.0](https://github.com/TehShrike/deepmerge/releases/tag/v3.1.0) + +- typescript typing: make the `all` function generic [#129](https://github.com/TehShrike/deepmerge/pull/129) + +# [3.0.0](https://github.com/TehShrike/deepmerge/releases/tag/v3.0.0) + +- drop ES module build [#123](https://github.com/TehShrike/deepmerge/issues/123) + +# [2.2.1](https://github.com/TehShrike/deepmerge/releases/tag/v2.2.1) + +- bug: typescript export type was wrong [#121](https://github.com/TehShrike/deepmerge/pull/121) + +# [2.2.0](https://github.com/TehShrike/deepmerge/releases/tag/v2.2.0) + +- feature: added TypeScript typings [#119](https://github.com/TehShrike/deepmerge/pull/119) + +# [2.1.1](https://github.com/TehShrike/deepmerge/releases/tag/v2.1.1) + +- documentation: Rename "methods" to "api", note ESM syntax [#103](https://github.com/TehShrike/deepmerge/pull/103) +- documentation: Fix grammar [#107](https://github.com/TehShrike/deepmerge/pull/107) +- documentation: Restructure headers for clarity + some wording tweaks [108](https://github.com/TehShrike/deepmerge/pull/108) + [109](https://github.com/TehShrike/deepmerge/pull/109) + + +# [2.1.0](https://github.com/TehShrike/deepmerge/releases/tag/v2.1.0) + +- feature: Support a custom `isMergeableObject` function [#96](https://github.com/TehShrike/deepmerge/pull/96) +- documentation: note a Webpack bug that some users might need to work around [#100](https://github.com/TehShrike/deepmerge/pull/100) + +# [2.0.1](https://github.com/TehShrike/deepmerge/releases/tag/v2.0.1) + +- documentation: fix the old array merge algorithm in the readme. [#84](https://github.com/TehShrike/deepmerge/pull/84) + +# [2.0.0](https://github.com/TehShrike/deepmerge/releases/tag/v2.0.0) + +- breaking: the array merge algorithm has changed from a complicated thing to `target.concat(source).map(element => cloneUnlessOtherwiseSpecified(element, optionsArgument))` +- breaking: The `clone` option now defaults to `true` +- feature: `merge.all` now accepts an array of any size, even 0 or 1 elements + +See [pull request 77](https://github.com/TehShrike/deepmerge/pull/77). + +# [1.5.2](https://github.com/TehShrike/deepmerge/releases/tag/v1.5.2) + +- fix: no longer attempts to merge React elements [#76](https://github.com/TehShrike/deepmerge/issues/76) + +# [1.5.1](https://github.com/TehShrike/deepmerge/releases/tag/v1.5.1) + +- bower support: officially dropping bower support. If you use bower, please depend on the [unpkg distribution](https://unpkg.com/deepmerge/dist/umd.js). See [#63](https://github.com/TehShrike/deepmerge/issues/63) + +# [1.5.0](https://github.com/TehShrike/deepmerge/releases/tag/v1.5.0) + +- bug fix: merging objects into arrays was allowed, and doesn't make any sense. [#65](https://github.com/TehShrike/deepmerge/issues/65) published as a feature release instead of a patch because it is a decent behavior change. + +# [1.4.4](https://github.com/TehShrike/deepmerge/releases/tag/v1.4.4) + +- bower support: updated `main` in bower.json + +# [1.4.3](https://github.com/TehShrike/deepmerge/releases/tag/v1.4.3) + +- bower support: inline is-mergeable-object in a new CommonJS build, so that people using both bower and CommonJS can bundle the library [0b34e6](https://github.com/TehShrike/deepmerge/commit/0b34e6e95f989f2fc8091d25f0d291c08f3d2d24) + +# [1.4.2](https://github.com/TehShrike/deepmerge/releases/tag/v1.4.2) + +- performance: bump is-mergeable-object dependency version for a slight performance improvement [5906c7](https://github.com/TehShrike/deepmerge/commit/5906c765d691d48e83d76efbb0d4b9ca150dc12c) + +# [1.4.1](https://github.com/TehShrike/deepmerge/releases/tag/v1.4.1) + +- documentation: fix unpkg link [acc45b](https://github.com/TehShrike/deepmerge/commit/acc45be85519c1df906a72ecb24764b622d18d47) + +# [1.4.0](https://github.com/TehShrike/deepmerge/releases/tag/v1.4.0) + +- api: instead of only exporting a UMD module, expose a UMD module with `pkg.main`, a CJS module with `pkg.browser`, and an ES module with `pkg.module` [#62](https://github.com/TehShrike/deepmerge/pull/62) + +# [1.3.2](https://github.com/TehShrike/deepmerge/releases/tag/v1.3.2) + +- documentation: note the minified/gzipped file sizes [56](https://github.com/TehShrike/deepmerge/pull/56) +- documentation: make data structures more readable in merge example: pull request [57](https://github.com/TehShrike/deepmerge/pull/57) + +# [1.3.1](https://github.com/TehShrike/deepmerge/releases/tag/v1.3.1) + +- documentation: clarify and test some array merging documentation: pull request [51](https://github.com/TehShrike/deepmerge/pull/51) + +# [1.3.0](https://github.com/TehShrike/deepmerge/releases/tag/v1.3.0) + +- feature: `merge.all`, a merge function that merges any number of objects: pull request [50](https://github.com/TehShrike/deepmerge/pull/50) + +# [1.2.0](https://github.com/TehShrike/deepmerge/releases/tag/v1.2.0) + +- fix: an error that would be thrown when an array would be merged onto a truthy non-array value: pull request [46](https://github.com/TehShrike/deepmerge/pull/46) +- feature: the ability to clone: Issue [28](https://github.com/TehShrike/deepmerge/issues/28), pull requests [44](https://github.com/TehShrike/deepmerge/pull/44) and [48](https://github.com/TehShrike/deepmerge/pull/48) +- maintenance: added tests + travis to `.npmignore`: pull request [47](https://github.com/TehShrike/deepmerge/pull/47) + +# [1.1.1](https://github.com/TehShrike/deepmerge/releases/tag/v1.1.1) + +- fix an issue where an error was thrown when merging an array onto a non-array: [Pull request 46](https://github.com/TehShrike/deepmerge/pull/46) + +# [1.1.0](https://github.com/TehShrike/deepmerge/releases/tag/v1.1.0) + +- allow consumers to specify their own array merging algorithm: [Pull request 37](https://github.com/TehShrike/deepmerge/pull/37) + +# [1.0.3](https://github.com/TehShrike/deepmerge/releases/tag/v1.0.3) + +- adding bower.json back: [Issue 38](https://github.com/TehShrike/deepmerge/pull/38) +- updating keywords and Github links in package.json [bc3898e](https://github.com/TehShrike/deepmerge/commit/bc3898e587a56f74591328f40f656b0152c1d5eb) + +# [1.0.2](https://github.com/TehShrike/deepmerge/releases/tag/v1.0.2) + +- Updating the readme: dropping bower, testing that the example works: [7102fc](https://github.com/TehShrike/deepmerge/commit/7102fcc4ddec11e2d33205866f9f18df14e5aeb5) + +# [1.0.1](https://github.com/TehShrike/deepmerge/releases/tag/v1.0.1) + +- `null`, dates, and regular expressions are now properly merged in arrays: [Issue 18](https://github.com/TehShrike/deepmerge/pull/18), plus commit: [ef1c6b](https://github.com/TehShrike/deepmerge/commit/ef1c6bac8350ba12a24966f0bc7da02560827586) + +# 1.0.0 + +- Should only be a patch change, because this module is READY. [Issue 15](https://github.com/TehShrike/deepmerge/issues/15) +- Regular expressions are now treated like primitive values when merging: [Issue 30](https://github.com/TehShrike/deepmerge/pull/30) +- Dates are now treated like primitives when merging: [Issue 31](https://github.com/TehShrike/deepmerge/issues/31) diff --git a/node_modules/deepmerge/dist/cjs.js b/node_modules/deepmerge/dist/cjs.js new file mode 100644 index 0000000..7c36cbd --- /dev/null +++ b/node_modules/deepmerge/dist/cjs.js @@ -0,0 +1,133 @@ +'use strict'; + +var isMergeableObject = function isMergeableObject(value) { + return isNonNullObject(value) + && !isSpecial(value) +}; + +function isNonNullObject(value) { + return !!value && typeof value === 'object' +} + +function isSpecial(value) { + var stringValue = Object.prototype.toString.call(value); + + return stringValue === '[object RegExp]' + || stringValue === '[object Date]' + || isReactElement(value) +} + +// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25 +var canUseSymbol = typeof Symbol === 'function' && Symbol.for; +var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7; + +function isReactElement(value) { + return value.$$typeof === REACT_ELEMENT_TYPE +} + +function emptyTarget(val) { + return Array.isArray(val) ? [] : {} +} + +function cloneUnlessOtherwiseSpecified(value, options) { + return (options.clone !== false && options.isMergeableObject(value)) + ? deepmerge(emptyTarget(value), value, options) + : value +} + +function defaultArrayMerge(target, source, options) { + return target.concat(source).map(function(element) { + return cloneUnlessOtherwiseSpecified(element, options) + }) +} + +function getMergeFunction(key, options) { + if (!options.customMerge) { + return deepmerge + } + var customMerge = options.customMerge(key); + return typeof customMerge === 'function' ? customMerge : deepmerge +} + +function getEnumerableOwnPropertySymbols(target) { + return Object.getOwnPropertySymbols + ? Object.getOwnPropertySymbols(target).filter(function(symbol) { + return Object.propertyIsEnumerable.call(target, symbol) + }) + : [] +} + +function getKeys(target) { + return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)) +} + +function propertyIsOnObject(object, property) { + try { + return property in object + } catch(_) { + return false + } +} + +// Protects from prototype poisoning and unexpected merging up the prototype chain. +function propertyIsUnsafe(target, key) { + return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet, + && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain, + && Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable. +} + +function mergeObject(target, source, options) { + var destination = {}; + if (options.isMergeableObject(target)) { + getKeys(target).forEach(function(key) { + destination[key] = cloneUnlessOtherwiseSpecified(target[key], options); + }); + } + getKeys(source).forEach(function(key) { + if (propertyIsUnsafe(target, key)) { + return + } + + if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { + destination[key] = getMergeFunction(key, options)(target[key], source[key], options); + } else { + destination[key] = cloneUnlessOtherwiseSpecified(source[key], options); + } + }); + return destination +} + +function deepmerge(target, source, options) { + options = options || {}; + options.arrayMerge = options.arrayMerge || defaultArrayMerge; + options.isMergeableObject = options.isMergeableObject || isMergeableObject; + // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge() + // implementations can use it. The caller may not replace it. + options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified; + + var sourceIsArray = Array.isArray(source); + var targetIsArray = Array.isArray(target); + var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; + + if (!sourceAndTargetTypesMatch) { + return cloneUnlessOtherwiseSpecified(source, options) + } else if (sourceIsArray) { + return options.arrayMerge(target, source, options) + } else { + return mergeObject(target, source, options) + } +} + +deepmerge.all = function deepmergeAll(array, options) { + if (!Array.isArray(array)) { + throw new Error('first argument should be an array') + } + + return array.reduce(function(prev, next) { + return deepmerge(prev, next, options) + }, {}) +}; + +var deepmerge_1 = deepmerge; + +module.exports = deepmerge_1; diff --git a/node_modules/deepmerge/dist/umd.js b/node_modules/deepmerge/dist/umd.js new file mode 100644 index 0000000..4071e7c --- /dev/null +++ b/node_modules/deepmerge/dist/umd.js @@ -0,0 +1,139 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.deepmerge = factory()); +}(this, function () { 'use strict'; + + var isMergeableObject = function isMergeableObject(value) { + return isNonNullObject(value) + && !isSpecial(value) + }; + + function isNonNullObject(value) { + return !!value && typeof value === 'object' + } + + function isSpecial(value) { + var stringValue = Object.prototype.toString.call(value); + + return stringValue === '[object RegExp]' + || stringValue === '[object Date]' + || isReactElement(value) + } + + // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25 + var canUseSymbol = typeof Symbol === 'function' && Symbol.for; + var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7; + + function isReactElement(value) { + return value.$$typeof === REACT_ELEMENT_TYPE + } + + function emptyTarget(val) { + return Array.isArray(val) ? [] : {} + } + + function cloneUnlessOtherwiseSpecified(value, options) { + return (options.clone !== false && options.isMergeableObject(value)) + ? deepmerge(emptyTarget(value), value, options) + : value + } + + function defaultArrayMerge(target, source, options) { + return target.concat(source).map(function(element) { + return cloneUnlessOtherwiseSpecified(element, options) + }) + } + + function getMergeFunction(key, options) { + if (!options.customMerge) { + return deepmerge + } + var customMerge = options.customMerge(key); + return typeof customMerge === 'function' ? customMerge : deepmerge + } + + function getEnumerableOwnPropertySymbols(target) { + return Object.getOwnPropertySymbols + ? Object.getOwnPropertySymbols(target).filter(function(symbol) { + return Object.propertyIsEnumerable.call(target, symbol) + }) + : [] + } + + function getKeys(target) { + return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)) + } + + function propertyIsOnObject(object, property) { + try { + return property in object + } catch(_) { + return false + } + } + + // Protects from prototype poisoning and unexpected merging up the prototype chain. + function propertyIsUnsafe(target, key) { + return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet, + && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain, + && Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable. + } + + function mergeObject(target, source, options) { + var destination = {}; + if (options.isMergeableObject(target)) { + getKeys(target).forEach(function(key) { + destination[key] = cloneUnlessOtherwiseSpecified(target[key], options); + }); + } + getKeys(source).forEach(function(key) { + if (propertyIsUnsafe(target, key)) { + return + } + + if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { + destination[key] = getMergeFunction(key, options)(target[key], source[key], options); + } else { + destination[key] = cloneUnlessOtherwiseSpecified(source[key], options); + } + }); + return destination + } + + function deepmerge(target, source, options) { + options = options || {}; + options.arrayMerge = options.arrayMerge || defaultArrayMerge; + options.isMergeableObject = options.isMergeableObject || isMergeableObject; + // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge() + // implementations can use it. The caller may not replace it. + options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified; + + var sourceIsArray = Array.isArray(source); + var targetIsArray = Array.isArray(target); + var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; + + if (!sourceAndTargetTypesMatch) { + return cloneUnlessOtherwiseSpecified(source, options) + } else if (sourceIsArray) { + return options.arrayMerge(target, source, options) + } else { + return mergeObject(target, source, options) + } + } + + deepmerge.all = function deepmergeAll(array, options) { + if (!Array.isArray(array)) { + throw new Error('first argument should be an array') + } + + return array.reduce(function(prev, next) { + return deepmerge(prev, next, options) + }, {}) + }; + + var deepmerge_1 = deepmerge; + + return deepmerge_1; + +})); diff --git a/node_modules/deepmerge/index.d.ts b/node_modules/deepmerge/index.d.ts new file mode 100644 index 0000000..46784de --- /dev/null +++ b/node_modules/deepmerge/index.d.ts @@ -0,0 +1,20 @@ +declare function deepmerge<T>(x: Partial<T>, y: Partial<T>, options?: deepmerge.Options): T; +declare function deepmerge<T1, T2>(x: Partial<T1>, y: Partial<T2>, options?: deepmerge.Options): T1 & T2; + +declare namespace deepmerge { + export interface Options { + arrayMerge?(target: any[], source: any[], options?: ArrayMergeOptions): any[]; + clone?: boolean; + customMerge?: (key: string, options?: Options) => ((x: any, y: any) => any) | undefined; + isMergeableObject?(value: object): boolean; + } + export interface ArrayMergeOptions { + isMergeableObject(value: object): boolean; + cloneUnlessOtherwiseSpecified(value: object, options?: Options): object; + } + + export function all (objects: object[], options?: Options): object; + export function all<T> (objects: Partial<T>[], options?: Options): T; +} + +export = deepmerge; diff --git a/node_modules/deepmerge/index.js b/node_modules/deepmerge/index.js new file mode 100644 index 0000000..77968ae --- /dev/null +++ b/node_modules/deepmerge/index.js @@ -0,0 +1,106 @@ +var defaultIsMergeableObject = require('is-mergeable-object') + +function emptyTarget(val) { + return Array.isArray(val) ? [] : {} +} + +function cloneUnlessOtherwiseSpecified(value, options) { + return (options.clone !== false && options.isMergeableObject(value)) + ? deepmerge(emptyTarget(value), value, options) + : value +} + +function defaultArrayMerge(target, source, options) { + return target.concat(source).map(function(element) { + return cloneUnlessOtherwiseSpecified(element, options) + }) +} + +function getMergeFunction(key, options) { + if (!options.customMerge) { + return deepmerge + } + var customMerge = options.customMerge(key) + return typeof customMerge === 'function' ? customMerge : deepmerge +} + +function getEnumerableOwnPropertySymbols(target) { + return Object.getOwnPropertySymbols + ? Object.getOwnPropertySymbols(target).filter(function(symbol) { + return Object.propertyIsEnumerable.call(target, symbol) + }) + : [] +} + +function getKeys(target) { + return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)) +} + +function propertyIsOnObject(object, property) { + try { + return property in object + } catch(_) { + return false + } +} + +// Protects from prototype poisoning and unexpected merging up the prototype chain. +function propertyIsUnsafe(target, key) { + return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet, + && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain, + && Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable. +} + +function mergeObject(target, source, options) { + var destination = {} + if (options.isMergeableObject(target)) { + getKeys(target).forEach(function(key) { + destination[key] = cloneUnlessOtherwiseSpecified(target[key], options) + }) + } + getKeys(source).forEach(function(key) { + if (propertyIsUnsafe(target, key)) { + return + } + + if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { + destination[key] = getMergeFunction(key, options)(target[key], source[key], options) + } else { + destination[key] = cloneUnlessOtherwiseSpecified(source[key], options) + } + }) + return destination +} + +function deepmerge(target, source, options) { + options = options || {} + options.arrayMerge = options.arrayMerge || defaultArrayMerge + options.isMergeableObject = options.isMergeableObject || defaultIsMergeableObject + // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge() + // implementations can use it. The caller may not replace it. + options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified + + var sourceIsArray = Array.isArray(source) + var targetIsArray = Array.isArray(target) + var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray + + if (!sourceAndTargetTypesMatch) { + return cloneUnlessOtherwiseSpecified(source, options) + } else if (sourceIsArray) { + return options.arrayMerge(target, source, options) + } else { + return mergeObject(target, source, options) + } +} + +deepmerge.all = function deepmergeAll(array, options) { + if (!Array.isArray(array)) { + throw new Error('first argument should be an array') + } + + return array.reduce(function(prev, next) { + return deepmerge(prev, next, options) + }, {}) +} + +module.exports = deepmerge diff --git a/node_modules/deepmerge/license.txt b/node_modules/deepmerge/license.txt new file mode 100644 index 0000000..5003078 --- /dev/null +++ b/node_modules/deepmerge/license.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2012 James Halliday, Josh Duff, and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/deepmerge/package.json b/node_modules/deepmerge/package.json new file mode 100644 index 0000000..2b7b1be --- /dev/null +++ b/node_modules/deepmerge/package.json @@ -0,0 +1,42 @@ +{ + "name": "deepmerge", + "description": "A library for deep (recursive) merging of Javascript objects", + "keywords": [ + "merge", + "deep", + "extend", + "copy", + "clone", + "recursive" + ], + "version": "4.3.1", + "homepage": "https://github.com/TehShrike/deepmerge", + "repository": { + "type": "git", + "url": "git://github.com/TehShrike/deepmerge.git" + }, + "main": "dist/cjs.js", + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "build": "rollup -c", + "test": "npm run build && tape test/*.js && jsmd readme.md && npm run test:typescript", + "test:typescript": "tsc --noEmit test/typescript.ts && ts-node test/typescript.ts", + "size": "npm run build && uglifyjs --compress --mangle -- ./dist/umd.js | gzip -c | wc -c" + }, + "devDependencies": { + "@types/node": "^8.10.54", + "is-mergeable-object": "1.1.0", + "is-plain-object": "^5.0.0", + "jsmd": "^1.0.2", + "rollup": "^1.23.1", + "rollup-plugin-commonjs": "^10.1.0", + "rollup-plugin-node-resolve": "^5.2.0", + "tape": "^4.11.0", + "ts-node": "7.0.1", + "typescript": "=2.2.2", + "uglify-js": "^3.6.1" + }, + "license": "MIT" +} diff --git a/node_modules/deepmerge/readme.md b/node_modules/deepmerge/readme.md new file mode 100644 index 0000000..79e4e30 --- /dev/null +++ b/node_modules/deepmerge/readme.md @@ -0,0 +1,264 @@ +# deepmerge + +Merges the enumerable properties of two or more objects deeply. + +> UMD bundle is 723B minified+gzipped + +## Getting Started + +### Example Usage +<!--js +const merge = require('./') +--> + +```js +const x = { + foo: { bar: 3 }, + array: [{ + does: 'work', + too: [ 1, 2, 3 ] + }] +} + +const y = { + foo: { baz: 4 }, + quux: 5, + array: [{ + does: 'work', + too: [ 4, 5, 6 ] + }, { + really: 'yes' + }] +} + +const output = { + foo: { + bar: 3, + baz: 4 + }, + array: [{ + does: 'work', + too: [ 1, 2, 3 ] + }, { + does: 'work', + too: [ 4, 5, 6 ] + }, { + really: 'yes' + }], + quux: 5 +} + +merge(x, y) // => output +``` + + +### Installation + +With [npm](http://npmjs.org) do: + +```sh +npm install deepmerge +``` + +deepmerge can be used directly in the browser without the use of package managers/bundlers as well: [UMD version from unpkg.com](https://unpkg.com/deepmerge/dist/umd.js). + + +### Include + +deepmerge exposes a CommonJS entry point: + +``` +const merge = require('deepmerge') +``` + +The ESM entry point was dropped due to a [Webpack bug](https://github.com/webpack/webpack/issues/6584). + +# API + + +## `merge(x, y, [options])` + +Merge two objects `x` and `y` deeply, returning a new merged object with the +elements from both `x` and `y`. + +If an element at the same key is present for both `x` and `y`, the value from +`y` will appear in the result. + +Merging creates a new object, so that neither `x` or `y` is modified. + +**Note:** By default, arrays are merged by concatenating them. + +## `merge.all(arrayOfObjects, [options])` + +Merges any number of objects into a single result object. + +```js +const foobar = { foo: { bar: 3 } } +const foobaz = { foo: { baz: 4 } } +const bar = { bar: 'yay!' } + +merge.all([ foobar, foobaz, bar ]) // => { foo: { bar: 3, baz: 4 }, bar: 'yay!' } +``` + + +## Options + +### `arrayMerge` + +There are multiple ways to merge two arrays, below are a few examples but you can also create your own custom function. + +Your `arrayMerge` function will be called with three arguments: a `target` array, the `source` array, and an `options` object with these properties: + +- `isMergeableObject(value)` +- `cloneUnlessOtherwiseSpecified(value, options)` + +#### `arrayMerge` example: overwrite target array + +Overwrites the existing array values completely rather than concatenating them: + +```js +const overwriteMerge = (destinationArray, sourceArray, options) => sourceArray + +merge( + [1, 2, 3], + [3, 2, 1], + { arrayMerge: overwriteMerge } +) // => [3, 2, 1] +``` + +#### `arrayMerge` example: combine arrays + +Combines objects at the same index in the two arrays. + +This was the default array merging algorithm pre-version-2.0.0. + +```js +const combineMerge = (target, source, options) => { + const destination = target.slice() + + source.forEach((item, index) => { + if (typeof destination[index] === 'undefined') { + destination[index] = options.cloneUnlessOtherwiseSpecified(item, options) + } else if (options.isMergeableObject(item)) { + destination[index] = merge(target[index], item, options) + } else if (target.indexOf(item) === -1) { + destination.push(item) + } + }) + return destination +} + +merge( + [{ a: true }], + [{ b: true }, 'ah yup'], + { arrayMerge: combineMerge } +) // => [{ a: true, b: true }, 'ah yup'] +``` + +### `isMergeableObject` + +By default, deepmerge clones every property from almost every kind of object. + +You may not want this, if your objects are of special types, and you want to copy the whole object instead of just copying its properties. + +You can accomplish this by passing in a function for the `isMergeableObject` option. + +If you only want to clone properties of plain objects, and ignore all "special" kinds of instantiated objects, you probably want to drop in [`is-plain-object`](https://github.com/jonschlinkert/is-plain-object). + +```js +const { isPlainObject } = require('is-plain-object') + +function SuperSpecial() { + this.special = 'oh yeah man totally' +} + +const instantiatedSpecialObject = new SuperSpecial() + +const target = { + someProperty: { + cool: 'oh for sure' + } +} + +const source = { + someProperty: instantiatedSpecialObject +} + +const defaultOutput = merge(target, source) + +defaultOutput.someProperty.cool // => 'oh for sure' +defaultOutput.someProperty.special // => 'oh yeah man totally' +defaultOutput.someProperty instanceof SuperSpecial // => false + +const customMergeOutput = merge(target, source, { + isMergeableObject: isPlainObject +}) + +customMergeOutput.someProperty.cool // => undefined +customMergeOutput.someProperty.special // => 'oh yeah man totally' +customMergeOutput.someProperty instanceof SuperSpecial // => true +``` + +### `customMerge` + +Specifies a function which can be used to override the default merge behavior for a property, based on the property name. + +The `customMerge` function will be passed the key for each property, and should return the function which should be used to merge the values for that property. + +It may also return undefined, in which case the default merge behaviour will be used. + +```js +const alex = { + name: { + first: 'Alex', + last: 'Alexson' + }, + pets: ['Cat', 'Parrot'] +} + +const tony = { + name: { + first: 'Tony', + last: 'Tonison' + }, + pets: ['Dog'] +} + +const mergeNames = (nameA, nameB) => `${nameA.first} and ${nameB.first}` + +const options = { + customMerge: (key) => { + if (key === 'name') { + return mergeNames + } + } +} + +const result = merge(alex, tony, options) + +result.name // => 'Alex and Tony' +result.pets // => ['Cat', 'Parrot', 'Dog'] +``` + + +### `clone` + +*Deprecated.* + +Defaults to `true`. + +If `clone` is `false` then child objects will be copied directly instead of being cloned. This was the default behavior before version 2.x. + + +# Testing + +With [npm](http://npmjs.org) do: + +```sh +npm test +``` + + +# License + +MIT diff --git a/node_modules/deepmerge/rollup.config.js b/node_modules/deepmerge/rollup.config.js new file mode 100644 index 0000000..8323ab2 --- /dev/null +++ b/node_modules/deepmerge/rollup.config.js @@ -0,0 +1,22 @@ +import resolve from 'rollup-plugin-node-resolve' +import commonjs from 'rollup-plugin-commonjs' +import pkg from './package.json' + +export default { + input: `index.js`, + plugins: [ + commonjs(), + resolve(), + ], + output: [ + { + file: pkg.main, + format: `cjs` + }, + { + name: 'deepmerge', + file: 'dist/umd.js', + format: `umd` + }, + ], +} diff --git a/node_modules/default-user-agent/History.md b/node_modules/default-user-agent/History.md new file mode 100644 index 0000000..68f9ee9 --- /dev/null +++ b/node_modules/default-user-agent/History.md @@ -0,0 +1,11 @@ + +1.0.0 / 2015-08-06 +================== + + * use npm scripts + * added os-name package + +0.0.1 / 2014-03-13 +================== + + * first commit diff --git a/node_modules/default-user-agent/LICENSE.txt b/node_modules/default-user-agent/LICENSE.txt new file mode 100644 index 0000000..e379174 --- /dev/null +++ b/node_modules/default-user-agent/LICENSE.txt @@ -0,0 +1,22 @@ +This software is licensed under the MIT License. + +Copyright (C) 2014 fengmk2 <fengmk2@gmail.com> and other contributors +Copyright (C) 2015 node-modules + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/default-user-agent/README.md b/node_modules/default-user-agent/README.md new file mode 100644 index 0000000..f268621 --- /dev/null +++ b/node_modules/default-user-agent/README.md @@ -0,0 +1,47 @@ +default-user-agent +======= + +[![NPM version][npm-image]][npm-url] +[![build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] +[![Gittip][gittip-image]][gittip-url] +[![David deps][david-image]][david-url] +[![npm download][download-image]][download-url] + +[npm-image]: https://img.shields.io/npm/v/default-user-agent.svg?style=flat-square +[npm-url]: https://npmjs.org/package/default-user-agent +[travis-image]: https://img.shields.io/travis/node-modules/default-user-agent.svg?style=flat-square +[travis-url]: https://travis-ci.org/node-modules/default-user-agent +[coveralls-image]: https://img.shields.io/coveralls/node-modules/default-user-agent.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/node-modules/default-user-agent?branch=master +[gittip-image]: https://img.shields.io/gittip/fengmk2.svg?style=flat-square +[gittip-url]: https://www.gittip.com/fengmk2/ +[david-image]: https://img.shields.io/david/node-modules/default-user-agent.svg?style=flat-square +[david-url]: https://david-dm.org/node-modules/default-user-agent +[download-image]: https://img.shields.io/npm/dm/default-user-agent.svg?style=flat-square +[download-url]: https://npmjs.org/package/default-user-agent + +Default user agent string for Node.js http request + +## Install + +```bash +$ npm install default-user-agent +``` + +## Usage + +```js +var ua = require('default-user-agent'); + +// darwin +console.log(ua()); // 'Node.js/0.11.15 (OS X Yosemite; x64)' +console.log(ua('urllib', '0.0.1')); // 'urllib/0.0.1 Node.js/0.11.15 (OS X Yosemite; x64)' + +// linux +// 'Node.js/0.11.15 (Linux 3.13; x64)' +``` + +## License + +[MIT](LICENSE.txt) diff --git a/node_modules/default-user-agent/index.js b/node_modules/default-user-agent/index.js new file mode 100644 index 0000000..1080375 --- /dev/null +++ b/node_modules/default-user-agent/index.js @@ -0,0 +1,27 @@ +/**! + * default-user-agent - index.js + * + * Copyright(c) fengmk2 and other contributors. + * MIT Licensed + * + * Authors: + * fengmk2 <fengmk2@gmail.com> (http://fengmk2.com) + */ + +'use strict'; + +/** + * Module dependencies. + */ + +var osName = require('os-name'); + +var USER_AGENT = 'Node.js/' + process.version.slice(1) + + ' (' + osName() + '; ' + process.arch + ')'; + +module.exports = function ua(name, version) { + if (arguments.length !== 2) { + return USER_AGENT; + } + return name + '/' + version + ' ' + USER_AGENT; +}; diff --git a/node_modules/default-user-agent/package.json b/node_modules/default-user-agent/package.json new file mode 100644 index 0000000..7eb5767 --- /dev/null +++ b/node_modules/default-user-agent/package.json @@ -0,0 +1,52 @@ +{ + "name": "default-user-agent", + "version": "1.0.0", + "description": "Default user agent string for nodejs http request", + "main": "index.js", + "files": [ + "index.js" + ], + "scripts": { + "test": "mocha --check-leaks -R spec -t 5000 test/*.test.js", + "test-cov": "istanbul cover node_modules/.bin/_mocha -- --check-leaks -t 5000 test/*.test.js", + "test-travis": "istanbul cover node_modules/.bin/_mocha --report lcovonly -- --check-leaks -t 5000 test/*.test.js", + "lint": "jshint .", + "autod": "autod -w --prefix '~'", + "cnpm": "npm install --registry=https://registry.npm.taobao.org", + "contributors": "contributors -f plain -o AUTHORS" + }, + "dependencies": { + "os-name": "~1.0.3" + }, + "devDependencies": { + "autod": "*", + "contributors": "*", + "should": "*", + "jshint": "*", + "cov": "*", + "istanbul": "*", + "mocha": "*" + }, + "homepage": "https://github.com/node-modules/default-user-agent", + "repository": { + "type": "git", + "url": "git://github.com/node-modules/default-user-agent.git", + "web": "https://github.com/node-modules/default-user-agent" + }, + "bugs": { + "url": "https://github.com/node-modules/default-user-agent/issues", + "email": "fengmk2@gmail.com" + }, + "keywords": [ + "user-agent", + "ua", + "useragent", + "request", + "http" + ], + "engines": { + "node": ">= 0.10.0" + }, + "author": "fengmk2 <fengmk2@gmail.com> (http://fengmk2.com)", + "license": "MIT" +} diff --git a/node_modules/destroy/LICENSE b/node_modules/destroy/LICENSE new file mode 100644 index 0000000..0e2c35f --- /dev/null +++ b/node_modules/destroy/LICENSE @@ -0,0 +1,23 @@ + +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com +Copyright (c) 2015-2022 Douglas Christopher Wilson doug@somethingdoug.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/destroy/README.md b/node_modules/destroy/README.md new file mode 100644 index 0000000..e7701ae --- /dev/null +++ b/node_modules/destroy/README.md @@ -0,0 +1,63 @@ +# destroy + +[![NPM version][npm-image]][npm-url] +[![Build Status][github-actions-ci-image]][github-actions-ci-url] +[![Test coverage][coveralls-image]][coveralls-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +Destroy a stream. + +This module is meant to ensure a stream gets destroyed, handling different APIs +and Node.js bugs. + +## API + +```js +var destroy = require('destroy') +``` + +### destroy(stream [, suppress]) + +Destroy the given stream, and optionally suppress any future `error` events. + +In most cases, this is identical to a simple `stream.destroy()` call. The rules +are as follows for a given stream: + + 1. If the `stream` is an instance of `ReadStream`, then call `stream.destroy()` + and add a listener to the `open` event to call `stream.close()` if it is + fired. This is for a Node.js bug that will leak a file descriptor if + `.destroy()` is called before `open`. + 2. If the `stream` is an instance of a zlib stream, then call `stream.destroy()` + and close the underlying zlib handle if open, otherwise call `stream.close()`. + This is for consistency across Node.js versions and a Node.js bug that will + leak a native zlib handle. + 3. If the `stream` is not an instance of `Stream`, then nothing happens. + 4. If the `stream` has a `.destroy()` method, then call it. + +The function returns the `stream` passed in as the argument. + +## Example + +```js +var destroy = require('destroy') + +var fs = require('fs') +var stream = fs.createReadStream('package.json') + +// ... and later +destroy(stream) +``` + +[npm-image]: https://img.shields.io/npm/v/destroy.svg?style=flat-square +[npm-url]: https://npmjs.org/package/destroy +[github-tag]: http://img.shields.io/github/tag/stream-utils/destroy.svg?style=flat-square +[github-url]: https://github.com/stream-utils/destroy/tags +[coveralls-image]: https://img.shields.io/coveralls/stream-utils/destroy.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/stream-utils/destroy?branch=master +[license-image]: http://img.shields.io/npm/l/destroy.svg?style=flat-square +[license-url]: LICENSE.md +[downloads-image]: http://img.shields.io/npm/dm/destroy.svg?style=flat-square +[downloads-url]: https://npmjs.org/package/destroy +[github-actions-ci-image]: https://img.shields.io/github/workflow/status/stream-utils/destroy/ci/master?label=ci&style=flat-square +[github-actions-ci-url]: https://github.com/stream-utils/destroy/actions/workflows/ci.yml diff --git a/node_modules/destroy/index.js b/node_modules/destroy/index.js new file mode 100644 index 0000000..7fd5c09 --- /dev/null +++ b/node_modules/destroy/index.js @@ -0,0 +1,209 @@ +/*! + * destroy + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var EventEmitter = require('events').EventEmitter +var ReadStream = require('fs').ReadStream +var Stream = require('stream') +var Zlib = require('zlib') + +/** + * Module exports. + * @public + */ + +module.exports = destroy + +/** + * Destroy the given stream, and optionally suppress any future `error` events. + * + * @param {object} stream + * @param {boolean} suppress + * @public + */ + +function destroy (stream, suppress) { + if (isFsReadStream(stream)) { + destroyReadStream(stream) + } else if (isZlibStream(stream)) { + destroyZlibStream(stream) + } else if (hasDestroy(stream)) { + stream.destroy() + } + + if (isEventEmitter(stream) && suppress) { + stream.removeAllListeners('error') + stream.addListener('error', noop) + } + + return stream +} + +/** + * Destroy a ReadStream. + * + * @param {object} stream + * @private + */ + +function destroyReadStream (stream) { + stream.destroy() + + if (typeof stream.close === 'function') { + // node.js core bug work-around + stream.on('open', onOpenClose) + } +} + +/** + * Close a Zlib stream. + * + * Zlib streams below Node.js 4.5.5 have a buggy implementation + * of .close() when zlib encountered an error. + * + * @param {object} stream + * @private + */ + +function closeZlibStream (stream) { + if (stream._hadError === true) { + var prop = stream._binding === null + ? '_binding' + : '_handle' + + stream[prop] = { + close: function () { this[prop] = null } + } + } + + stream.close() +} + +/** + * Destroy a Zlib stream. + * + * Zlib streams don't have a destroy function in Node.js 6. On top of that + * simply calling destroy on a zlib stream in Node.js 8+ will result in a + * memory leak. So until that is fixed, we need to call both close AND destroy. + * + * PR to fix memory leak: https://github.com/nodejs/node/pull/23734 + * + * In Node.js 6+8, it's important that destroy is called before close as the + * stream would otherwise emit the error 'zlib binding closed'. + * + * @param {object} stream + * @private + */ + +function destroyZlibStream (stream) { + if (typeof stream.destroy === 'function') { + // node.js core bug work-around + // istanbul ignore if: node.js 0.8 + if (stream._binding) { + // node.js < 0.10.0 + stream.destroy() + if (stream._processing) { + stream._needDrain = true + stream.once('drain', onDrainClearBinding) + } else { + stream._binding.clear() + } + } else if (stream._destroy && stream._destroy !== Stream.Transform.prototype._destroy) { + // node.js >= 12, ^11.1.0, ^10.15.1 + stream.destroy() + } else if (stream._destroy && typeof stream.close === 'function') { + // node.js 7, 8 + stream.destroyed = true + stream.close() + } else { + // fallback + // istanbul ignore next + stream.destroy() + } + } else if (typeof stream.close === 'function') { + // node.js < 8 fallback + closeZlibStream(stream) + } +} + +/** + * Determine if stream has destroy. + * @private + */ + +function hasDestroy (stream) { + return stream instanceof Stream && + typeof stream.destroy === 'function' +} + +/** + * Determine if val is EventEmitter. + * @private + */ + +function isEventEmitter (val) { + return val instanceof EventEmitter +} + +/** + * Determine if stream is fs.ReadStream stream. + * @private + */ + +function isFsReadStream (stream) { + return stream instanceof ReadStream +} + +/** + * Determine if stream is Zlib stream. + * @private + */ + +function isZlibStream (stream) { + return stream instanceof Zlib.Gzip || + stream instanceof Zlib.Gunzip || + stream instanceof Zlib.Deflate || + stream instanceof Zlib.DeflateRaw || + stream instanceof Zlib.Inflate || + stream instanceof Zlib.InflateRaw || + stream instanceof Zlib.Unzip +} + +/** + * No-op function. + * @private + */ + +function noop () {} + +/** + * On drain handler to clear binding. + * @private + */ + +// istanbul ignore next: node.js 0.8 +function onDrainClearBinding () { + this._binding.clear() +} + +/** + * On open handler to close stream. + * @private + */ + +function onOpenClose () { + if (typeof this.fd === 'number') { + // actually close down the fd + this.close() + } +} diff --git a/node_modules/destroy/package.json b/node_modules/destroy/package.json new file mode 100644 index 0000000..c85e438 --- /dev/null +++ b/node_modules/destroy/package.json @@ -0,0 +1,48 @@ +{ + "name": "destroy", + "description": "destroy a stream if possible", + "version": "1.2.0", + "author": { + "name": "Jonathan Ong", + "email": "me@jongleberry.com", + "url": "http://jongleberry.com", + "twitter": "https://twitter.com/jongleberry" + }, + "contributors": [ + "Douglas Christopher Wilson <doug@somethingdoug.com>" + ], + "license": "MIT", + "repository": "stream-utils/destroy", + "devDependencies": { + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.2.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.2", + "nyc": "15.1.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec", + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + }, + "files": [ + "index.js", + "LICENSE" + ], + "keywords": [ + "stream", + "streams", + "destroy", + "cleanup", + "leak", + "fd" + ] +} diff --git a/node_modules/digest-header/LICENSE.txt b/node_modules/digest-header/LICENSE.txt new file mode 100644 index 0000000..ccc16a5 --- /dev/null +++ b/node_modules/digest-header/LICENSE.txt @@ -0,0 +1,21 @@ +This software is licensed under the MIT License. + +Copyright (C) 2014 fengmk2 <fengmk2@gmail.com> and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/digest-header/README.md b/node_modules/digest-header/README.md new file mode 100644 index 0000000..31a67de --- /dev/null +++ b/node_modules/digest-header/README.md @@ -0,0 +1,49 @@ +digest-header +======= + +[![Node.js CI](https://github.com/node-modules/digest-header/actions/workflows/nodejs.yml/badge.svg)](https://github.com/node-modules/digest-header/actions/workflows/nodejs.yml) + +Digest access authentication header helper. + +## Install + +```bash +npm install digest-header +``` + +## Usage + +```js +var digest = require('digest-header'); + +var method = 'GET'; +var uri = '/admin'; +var wwwAuthenticate = res.headers['WWW-Authenticate']; +var userpass = 'user:pass'; +var auth = digest(method, uri, wwwAuthenticate, userpass); +``` + +## License + +(The MIT License) + +Copyright (c) 2014 fengmk2 <fengmk2@gmail.com> and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/digest-header/index.js b/node_modules/digest-header/index.js new file mode 100644 index 0000000..e12f656 --- /dev/null +++ b/node_modules/digest-header/index.js @@ -0,0 +1,78 @@ +const crypto = require('crypto'); + +const AUTH_KEY_VALUE_RE = /(\w+)=["']?([^'"]{1,10000})["']?/; +let NC = 0; +const NC_PAD = '00000000'; + +function md5(text) { + return crypto.createHash('md5').update(text).digest('hex'); +} + +function digestAuthHeader(method, uri, wwwAuthenticate, userpass) { + const parts = wwwAuthenticate.split(','); + const opts = {}; + for (let i = 0; i < parts.length; i++) { + const m = AUTH_KEY_VALUE_RE.exec(parts[i]); + if (m) { + opts[m[1]] = m[2].replace(/["']/g, ''); + } + } + + if (!opts.realm || !opts.nonce) { + return ''; + } + + let qop = opts.qop || ''; + + // WWW-Authenticate: Digest realm="testrealm@host.com", + // qop="auth,auth-int", + // nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", + // opaque="5ccc069c403ebaf9f0171e9517f40e41" + // Authorization: Digest username="Mufasa", + // realm="testrealm@host.com", + // nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", + // uri="/dir/index.html", + // qop=auth, + // nc=00000001, + // cnonce="0a4f113b", + // response="6629fae49393a05397450978507c4ef1", + // opaque="5ccc069c403ebaf9f0171e9517f40e41" + // HA1 = MD5( "Mufasa:testrealm@host.com:Circle Of Life" ) + // = 939e7578ed9e3c518a452acee763bce9 + // + // HA2 = MD5( "GET:/dir/index.html" ) + // = 39aff3a2bab6126f332b942af96d3366 + // + // Response = MD5( "939e7578ed9e3c518a452acee763bce9:\ + // dcd98b7102dd2f0e8b11d0f600bfb0c093:\ + // 00000001:0a4f113b:auth:\ + // 39aff3a2bab6126f332b942af96d3366" ) + // = 6629fae49393a05397450978507c4ef1 + userpass = userpass.split(':'); + + let nc = String(++NC); + nc = NC_PAD.substring(nc.length) + nc; + const cnonce = crypto.randomBytes(8).toString('hex'); + + const ha1 = md5(userpass[0] + ':' + opts.realm + ':' + userpass[1]); + const ha2 = md5(method.toUpperCase() + ':' + uri); + let s = ha1 + ':' + opts.nonce; + if (qop) { + qop = qop.split(',')[0]; + s += ':' + nc + ':' + cnonce + ':' + qop; + } + s += ':' + ha2; + const response = md5(s); + let authstring = 'Digest username="' + userpass[0] + '", realm="' + opts.realm + + '", nonce="' + opts.nonce + '", uri="' + uri + + '", response="' + response + '"'; + if (opts.opaque) { + authstring += ', opaque="' + opts.opaque + '"'; + } + if (qop) { + authstring +=', qop=' + qop + ', nc=' + nc + ', cnonce="' + cnonce + '"'; + } + return authstring; +} + +module.exports = digestAuthHeader; diff --git a/node_modules/digest-header/package.json b/node_modules/digest-header/package.json new file mode 100644 index 0000000..7cd43f1 --- /dev/null +++ b/node_modules/digest-header/package.json @@ -0,0 +1,44 @@ +{ + "name": "digest-header", + "version": "1.1.0", + "description": "Digest access authentication header helper", + "main": "index.js", + "files": [ + "index.js" + ], + "scripts": { + "lint": "echo 'ignore'", + "test": "egg-bin test", + "ci": "egg-bin cov" + }, + "dependencies": {}, + "devDependencies": { + "contributors": "*", + "egg-bin": "^4.20.0", + "should": "3.2.0" + }, + "homepage": "https://github.com/node-modules/digest-header", + "repository": { + "type": "git", + "url": "git@github.com:node-modules/digest-header.git" + }, + "bugs": { + "url": "https://github.com/node-modules/digest-header/issues" + }, + "keywords": [ + "digest", + "http-digest", + "baseauth", + "www-authenticate", + "authentication", + "http-authentication", + "digestauth", + "digest-auth", + "digest-header" + ], + "engines": { + "node": ">= 8.0.0" + }, + "author": "fengmk2 <fengmk2@gmail.com> (https://github.com/fengmk2)", + "license": "MIT" +} diff --git a/node_modules/dunder-proto/.eslintrc b/node_modules/dunder-proto/.eslintrc new file mode 100644 index 0000000..3b5d9e9 --- /dev/null +++ b/node_modules/dunder-proto/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/node_modules/dunder-proto/.github/FUNDING.yml b/node_modules/dunder-proto/.github/FUNDING.yml new file mode 100644 index 0000000..8a1d7b0 --- /dev/null +++ b/node_modules/dunder-proto/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/dunder-proto +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/dunder-proto/.nycrc b/node_modules/dunder-proto/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/node_modules/dunder-proto/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/dunder-proto/CHANGELOG.md b/node_modules/dunder-proto/CHANGELOG.md new file mode 100644 index 0000000..9b8b2f8 --- /dev/null +++ b/node_modules/dunder-proto/CHANGELOG.md @@ -0,0 +1,24 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/es-shims/dunder-proto/compare/v1.0.0...v1.0.1) - 2024-12-16 + +### Commits + +- [Fix] do not crash when `--disable-proto=throw` [`6c367d9`](https://github.com/es-shims/dunder-proto/commit/6c367d919bc1604778689a297bbdbfea65752847) +- [Tests] ensure noproto tests only use the current version of dunder-proto [`b02365b`](https://github.com/es-shims/dunder-proto/commit/b02365b9cf889c4a2cac7be0c3cfc90a789af36c) +- [Dev Deps] update `@arethetypeswrong/cli`, `@types/tape` [`e3c5c3b`](https://github.com/es-shims/dunder-proto/commit/e3c5c3bd81cf8cef7dff2eca19e558f0e307f666) +- [Deps] update `call-bind-apply-helpers` [`19f1da0`](https://github.com/es-shims/dunder-proto/commit/19f1da028b8dd0d05c85bfd8f7eed2819b686450) + +## v1.0.0 - 2024-12-06 + +### Commits + +- Initial implementation, tests, readme, types [`a5b74b0`](https://github.com/es-shims/dunder-proto/commit/a5b74b0082f5270cb0905cd9a2e533cee7498373) +- Initial commit [`73fb5a3`](https://github.com/es-shims/dunder-proto/commit/73fb5a353b51ac2ab00c9fdeb0114daffd4c07a8) +- npm init [`80152dc`](https://github.com/es-shims/dunder-proto/commit/80152dc98155da4eb046d9f67a87ed96e8280a1d) +- Only apps should have lockfiles [`03e6660`](https://github.com/es-shims/dunder-proto/commit/03e6660a1d70dc401f3e217a031475ec537243dd) diff --git a/node_modules/dunder-proto/LICENSE b/node_modules/dunder-proto/LICENSE new file mode 100644 index 0000000..34995e7 --- /dev/null +++ b/node_modules/dunder-proto/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/dunder-proto/README.md b/node_modules/dunder-proto/README.md new file mode 100644 index 0000000..44b80a2 --- /dev/null +++ b/node_modules/dunder-proto/README.md @@ -0,0 +1,54 @@ +# dunder-proto <sup>[![Version Badge][npm-version-svg]][package-url]</sup> + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +If available, the `Object.prototype.__proto__` accessor and mutator, call-bound. + +## Getting started + +```sh +npm install --save dunder-proto +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getDunder = require('dunder-proto/get'); +const setDunder = require('dunder-proto/set'); + +const obj = {}; + +assert.equal('toString' in obj, true); +assert.equal(getDunder(obj), Object.prototype); + +setDunder(obj, null); + +assert.equal('toString' in obj, false); +assert.equal(getDunder(obj), null); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/dunder-proto +[npm-version-svg]: https://versionbadg.es/es-shims/dunder-proto.svg +[deps-svg]: https://david-dm.org/es-shims/dunder-proto.svg +[deps-url]: https://david-dm.org/es-shims/dunder-proto +[dev-deps-svg]: https://david-dm.org/es-shims/dunder-proto/dev-status.svg +[dev-deps-url]: https://david-dm.org/es-shims/dunder-proto#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/dunder-proto.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/dunder-proto.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/dunder-proto.svg +[downloads-url]: https://npm-stat.com/charts.html?package=dunder-proto +[codecov-image]: https://codecov.io/gh/es-shims/dunder-proto/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/es-shims/dunder-proto/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/dunder-proto +[actions-url]: https://github.com/es-shims/dunder-proto/actions diff --git a/node_modules/dunder-proto/get.d.ts b/node_modules/dunder-proto/get.d.ts new file mode 100644 index 0000000..c7e14d2 --- /dev/null +++ b/node_modules/dunder-proto/get.d.ts @@ -0,0 +1,5 @@ +declare function getDunderProto(target: {}): object | null; + +declare const x: false | typeof getDunderProto; + +export = x; \ No newline at end of file diff --git a/node_modules/dunder-proto/get.js b/node_modules/dunder-proto/get.js new file mode 100644 index 0000000..45093df --- /dev/null +++ b/node_modules/dunder-proto/get.js @@ -0,0 +1,30 @@ +'use strict'; + +var callBind = require('call-bind-apply-helpers'); +var gOPD = require('gopd'); + +var hasProtoAccessor; +try { + // eslint-disable-next-line no-extra-parens, no-proto + hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype; +} catch (e) { + if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') { + throw e; + } +} + +// eslint-disable-next-line no-extra-parens +var desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__')); + +var $Object = Object; +var $getPrototypeOf = $Object.getPrototypeOf; + +/** @type {import('./get')} */ +module.exports = desc && typeof desc.get === 'function' + ? callBind([desc.get]) + : typeof $getPrototypeOf === 'function' + ? /** @type {import('./get')} */ function getDunder(value) { + // eslint-disable-next-line eqeqeq + return $getPrototypeOf(value == null ? value : $Object(value)); + } + : false; diff --git a/node_modules/dunder-proto/package.json b/node_modules/dunder-proto/package.json new file mode 100644 index 0000000..04a4036 --- /dev/null +++ b/node_modules/dunder-proto/package.json @@ -0,0 +1,76 @@ +{ + "name": "dunder-proto", + "version": "1.0.1", + "description": "If available, the `Object.prototype.__proto__` accessor and mutator, call-bound", + "main": false, + "exports": { + "./get": "./get.js", + "./set": "./set.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/es-shims/dunder-proto.git" + }, + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/es-shims/dunder-proto/issues" + }, + "homepage": "https://github.com/es-shims/dunder-proto#readme", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/tape": "^5.7.0", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "testling": { + "files": "test/index.js" + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/dunder-proto/set.d.ts b/node_modules/dunder-proto/set.d.ts new file mode 100644 index 0000000..16bfdfe --- /dev/null +++ b/node_modules/dunder-proto/set.d.ts @@ -0,0 +1,5 @@ +declare function setDunderProto<P extends null | object>(target: {}, proto: P): P; + +declare const x: false | typeof setDunderProto; + +export = x; \ No newline at end of file diff --git a/node_modules/dunder-proto/set.js b/node_modules/dunder-proto/set.js new file mode 100644 index 0000000..6085b6e --- /dev/null +++ b/node_modules/dunder-proto/set.js @@ -0,0 +1,35 @@ +'use strict'; + +var callBind = require('call-bind-apply-helpers'); +var gOPD = require('gopd'); +var $TypeError = require('es-errors/type'); + +/** @type {{ __proto__?: object | null }} */ +var obj = {}; +try { + obj.__proto__ = null; // eslint-disable-line no-proto +} catch (e) { + if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') { + throw e; + } +} + +var hasProtoMutator = !('toString' in obj); + +// eslint-disable-next-line no-extra-parens +var desc = gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__')); + +/** @type {import('./set')} */ +module.exports = hasProtoMutator && ( +// eslint-disable-next-line no-extra-parens + (!!desc && typeof desc.set === 'function' && /** @type {import('./set')} */ (callBind([desc.set]))) + || /** @type {import('./set')} */ function setDunder(object, proto) { + // this is node v0.10 or older, which doesn't have Object.setPrototypeOf and has undeniable __proto__ + if (object == null) { // eslint-disable-line eqeqeq + throw new $TypeError('set Object.prototype.__proto__ called on null or undefined'); + } + // eslint-disable-next-line no-proto, no-param-reassign, no-extra-parens + /** @type {{ __proto__?: object | null }} */ (object).__proto__ = proto; + return proto; + } +); diff --git a/node_modules/dunder-proto/test/get.js b/node_modules/dunder-proto/test/get.js new file mode 100644 index 0000000..253f183 --- /dev/null +++ b/node_modules/dunder-proto/test/get.js @@ -0,0 +1,34 @@ +'use strict'; + +var test = require('tape'); + +var getDunderProto = require('../get'); + +test('getDunderProto', { skip: !getDunderProto }, function (t) { + if (!getDunderProto) { + throw 'should never happen; this is just for type narrowing'; // eslint-disable-line no-throw-literal + } + + // @ts-expect-error + t['throws'](function () { getDunderProto(); }, TypeError, 'throws if no argument'); + // @ts-expect-error + t['throws'](function () { getDunderProto(undefined); }, TypeError, 'throws with undefined'); + // @ts-expect-error + t['throws'](function () { getDunderProto(null); }, TypeError, 'throws with null'); + + t.equal(getDunderProto({}), Object.prototype); + t.equal(getDunderProto([]), Array.prototype); + t.equal(getDunderProto(function () {}), Function.prototype); + t.equal(getDunderProto(/./g), RegExp.prototype); + t.equal(getDunderProto(42), Number.prototype); + t.equal(getDunderProto(true), Boolean.prototype); + t.equal(getDunderProto('foo'), String.prototype); + + t.end(); +}); + +test('no dunder proto', { skip: !!getDunderProto }, function (t) { + t.notOk('__proto__' in Object.prototype, 'no __proto__ in Object.prototype'); + + t.end(); +}); diff --git a/node_modules/dunder-proto/test/index.js b/node_modules/dunder-proto/test/index.js new file mode 100644 index 0000000..08ff36f --- /dev/null +++ b/node_modules/dunder-proto/test/index.js @@ -0,0 +1,4 @@ +'use strict'; + +require('./get'); +require('./set'); diff --git a/node_modules/dunder-proto/test/set.js b/node_modules/dunder-proto/test/set.js new file mode 100644 index 0000000..c3bfe4d --- /dev/null +++ b/node_modules/dunder-proto/test/set.js @@ -0,0 +1,50 @@ +'use strict'; + +var test = require('tape'); + +var setDunderProto = require('../set'); + +test('setDunderProto', { skip: !setDunderProto }, function (t) { + if (!setDunderProto) { + throw 'should never happen; this is just for type narrowing'; // eslint-disable-line no-throw-literal + } + + // @ts-expect-error + t['throws'](function () { setDunderProto(); }, TypeError, 'throws if no arguments'); + // @ts-expect-error + t['throws'](function () { setDunderProto(undefined); }, TypeError, 'throws with undefined and nothing'); + // @ts-expect-error + t['throws'](function () { setDunderProto(undefined, undefined); }, TypeError, 'throws with undefined and undefined'); + // @ts-expect-error + t['throws'](function () { setDunderProto(null); }, TypeError, 'throws with null and undefined'); + // @ts-expect-error + t['throws'](function () { setDunderProto(null, undefined); }, TypeError, 'throws with null and undefined'); + + /** @type {{ inherited?: boolean }} */ + var obj = {}; + t.ok('toString' in obj, 'object initially has toString'); + + setDunderProto(obj, null); + t.notOk('toString' in obj, 'object no longer has toString'); + + t.notOk('inherited' in obj, 'object lacks inherited property'); + setDunderProto(obj, { inherited: true }); + t.equal(obj.inherited, true, 'object has inherited property'); + + t.end(); +}); + +test('no dunder proto', { skip: !!setDunderProto }, function (t) { + if ('__proto__' in Object.prototype) { + t['throws']( + // @ts-expect-error + function () { ({}).__proto__ = null; }, // eslint-disable-line no-proto + Error, + 'throws when setting Object.prototype.__proto__' + ); + } else { + t.notOk('__proto__' in Object.prototype, 'no __proto__ in Object.prototype'); + } + + t.end(); +}); diff --git a/node_modules/dunder-proto/tsconfig.json b/node_modules/dunder-proto/tsconfig.json new file mode 100644 index 0000000..dabbe23 --- /dev/null +++ b/node_modules/dunder-proto/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "ES2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/node_modules/duplexer/.travis.yml b/node_modules/duplexer/.travis.yml new file mode 100644 index 0000000..ed05f88 --- /dev/null +++ b/node_modules/duplexer/.travis.yml @@ -0,0 +1,6 @@ +language: node_js +node_js: + - "0.11" + - "0.10" + - "0.8" + - "0.6" diff --git a/node_modules/duplexer/LICENCE b/node_modules/duplexer/LICENCE new file mode 100644 index 0000000..a23e08a --- /dev/null +++ b/node_modules/duplexer/LICENCE @@ -0,0 +1,19 @@ +Copyright (c) 2012 Raynos. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/duplexer/README.md b/node_modules/duplexer/README.md new file mode 100644 index 0000000..1dd3b89 --- /dev/null +++ b/node_modules/duplexer/README.md @@ -0,0 +1,49 @@ +# duplexer + +[![build status][1]][2] [![dependency status][3]][4] + +[![browser support][5]][6] + +Creates a duplex stream + +Taken from [event-stream][7] + +## duplex (writeStream, readStream) + +Takes a writable stream and a readable stream and makes them appear as a readable writable stream. + +It is assumed that the two streams are connected to each other in some way. + +## Example + +```js +var cp = require('child_process') + , duplex = require('duplexer') + , grep = cp.exec('grep Stream') + +duplex(grep.stdin, grep.stdout) +``` + +## Installation + +`npm install duplexer` + +## Tests + +`npm test` + +## Contributors + + - Dominictarr + - Raynos + - samccone + +## MIT Licenced + + [1]: https://secure.travis-ci.org/Raynos/duplexer.png + [2]: https://travis-ci.org/Raynos/duplexer + [3]: https://david-dm.org/Raynos/duplexer.png + [4]: https://david-dm.org/Raynos/duplexer + [5]: https://ci.testling.com/Raynos/duplexer.png + [6]: https://ci.testling.com/Raynos/duplexer + [7]: https://github.com/dominictarr/event-stream#duplex-writestream-readstream diff --git a/node_modules/duplexer/index.js b/node_modules/duplexer/index.js new file mode 100644 index 0000000..a188a21 --- /dev/null +++ b/node_modules/duplexer/index.js @@ -0,0 +1,87 @@ +var Stream = require("stream") +var writeMethods = ["write", "end", "destroy"] +var readMethods = ["resume", "pause"] +var readEvents = ["data", "close"] +var slice = Array.prototype.slice + +module.exports = duplex + +function forEach (arr, fn) { + if (arr.forEach) { + return arr.forEach(fn) + } + + for (var i = 0; i < arr.length; i++) { + fn(arr[i], i) + } +} + +function duplex(writer, reader) { + var stream = new Stream() + var ended = false + + forEach(writeMethods, proxyWriter) + + forEach(readMethods, proxyReader) + + forEach(readEvents, proxyStream) + + reader.on("end", handleEnd) + + writer.on("drain", function() { + stream.emit("drain") + }) + + writer.on("error", reemit) + reader.on("error", reemit) + + stream.writable = writer.writable + stream.readable = reader.readable + + return stream + + function proxyWriter(methodName) { + stream[methodName] = method + + function method() { + return writer[methodName].apply(writer, arguments) + } + } + + function proxyReader(methodName) { + stream[methodName] = method + + function method() { + stream.emit(methodName) + var func = reader[methodName] + if (func) { + return func.apply(reader, arguments) + } + reader.emit(methodName) + } + } + + function proxyStream(methodName) { + reader.on(methodName, reemit) + + function reemit() { + var args = slice.call(arguments) + args.unshift(methodName) + stream.emit.apply(stream, args) + } + } + + function handleEnd() { + if (ended) { + return + } + ended = true + var args = slice.call(arguments) + args.unshift("end") + stream.emit.apply(stream, args) + } + + function reemit(err) { + stream.emit("error", err) + } +} diff --git a/node_modules/duplexer/package.json b/node_modules/duplexer/package.json new file mode 100644 index 0000000..015bd41 --- /dev/null +++ b/node_modules/duplexer/package.json @@ -0,0 +1,42 @@ +{ + "name": "duplexer", + "version": "0.1.2", + "description": "Creates a duplex stream", + "keywords": [], + "author": "Raynos <raynos2@gmail.com>", + "repository": "git://github.com/Raynos/duplexer.git", + "main": "index", + "homepage": "https://github.com/Raynos/duplexer", + "contributors": [ + { + "name": "Jake Verbaten" + } + ], + "bugs": { + "url": "https://github.com/Raynos/duplexer/issues", + "email": "raynos2@gmail.com" + }, + "devDependencies": { + "tape": "0.3.3", + "through": "~0.1.4" + }, + "license": "MIT", + "scripts": { + "test": "node test" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "ie/8..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest" + ] + } +} diff --git a/node_modules/duplexer/test/index.js b/node_modules/duplexer/test/index.js new file mode 100644 index 0000000..a154567 --- /dev/null +++ b/node_modules/duplexer/test/index.js @@ -0,0 +1,31 @@ +var through = require("through") +var test = require("tape") + +var duplex = require("../index") + +var readable = through() +var writable = through(write) +var written = 0 +var data = 0 + +var stream = duplex(writable, readable) + +function write() { + written++ +} + +stream.on("data", ondata) + +function ondata() { + data++ +} + +test("emit and write", function(t) { + t.plan(2) + + stream.write() + readable.emit("data") + + t.equal(written, 1, "should have written once") + t.equal(data, 1, "should have received once") +}) diff --git a/node_modules/ee-first/LICENSE b/node_modules/ee-first/LICENSE new file mode 100644 index 0000000..a7ae8ee --- /dev/null +++ b/node_modules/ee-first/LICENSE @@ -0,0 +1,22 @@ + +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/ee-first/README.md b/node_modules/ee-first/README.md new file mode 100644 index 0000000..cbd2478 --- /dev/null +++ b/node_modules/ee-first/README.md @@ -0,0 +1,80 @@ +# EE First + +[![NPM version][npm-image]][npm-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] +[![Gittip][gittip-image]][gittip-url] + +Get the first event in a set of event emitters and event pairs, +then clean up after itself. + +## Install + +```sh +$ npm install ee-first +``` + +## API + +```js +var first = require('ee-first') +``` + +### first(arr, listener) + +Invoke `listener` on the first event from the list specified in `arr`. `arr` is +an array of arrays, with each array in the format `[ee, ...event]`. `listener` +will be called only once, the first time any of the given events are emitted. If +`error` is one of the listened events, then if that fires first, the `listener` +will be given the `err` argument. + +The `listener` is invoked as `listener(err, ee, event, args)`, where `err` is the +first argument emitted from an `error` event, if applicable; `ee` is the event +emitter that fired; `event` is the string event name that fired; and `args` is an +array of the arguments that were emitted on the event. + +```js +var ee1 = new EventEmitter() +var ee2 = new EventEmitter() + +first([ + [ee1, 'close', 'end', 'error'], + [ee2, 'error'] +], function (err, ee, event, args) { + // listener invoked +}) +``` + +#### .cancel() + +The group of listeners can be cancelled before being invoked and have all the event +listeners removed from the underlying event emitters. + +```js +var thunk = first([ + [ee1, 'close', 'end', 'error'], + [ee2, 'error'] +], function (err, ee, event, args) { + // listener invoked +}) + +// cancel and clean up +thunk.cancel() +``` + +[npm-image]: https://img.shields.io/npm/v/ee-first.svg?style=flat-square +[npm-url]: https://npmjs.org/package/ee-first +[github-tag]: http://img.shields.io/github/tag/jonathanong/ee-first.svg?style=flat-square +[github-url]: https://github.com/jonathanong/ee-first/tags +[travis-image]: https://img.shields.io/travis/jonathanong/ee-first.svg?style=flat-square +[travis-url]: https://travis-ci.org/jonathanong/ee-first +[coveralls-image]: https://img.shields.io/coveralls/jonathanong/ee-first.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/jonathanong/ee-first?branch=master +[license-image]: http://img.shields.io/npm/l/ee-first.svg?style=flat-square +[license-url]: LICENSE.md +[downloads-image]: http://img.shields.io/npm/dm/ee-first.svg?style=flat-square +[downloads-url]: https://npmjs.org/package/ee-first +[gittip-image]: https://img.shields.io/gittip/jonathanong.svg?style=flat-square +[gittip-url]: https://www.gittip.com/jonathanong/ diff --git a/node_modules/ee-first/index.js b/node_modules/ee-first/index.js new file mode 100644 index 0000000..501287c --- /dev/null +++ b/node_modules/ee-first/index.js @@ -0,0 +1,95 @@ +/*! + * ee-first + * Copyright(c) 2014 Jonathan Ong + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = first + +/** + * Get the first event in a set of event emitters and event pairs. + * + * @param {array} stuff + * @param {function} done + * @public + */ + +function first(stuff, done) { + if (!Array.isArray(stuff)) + throw new TypeError('arg must be an array of [ee, events...] arrays') + + var cleanups = [] + + for (var i = 0; i < stuff.length; i++) { + var arr = stuff[i] + + if (!Array.isArray(arr) || arr.length < 2) + throw new TypeError('each array member must be [ee, events...]') + + var ee = arr[0] + + for (var j = 1; j < arr.length; j++) { + var event = arr[j] + var fn = listener(event, callback) + + // listen to the event + ee.on(event, fn) + // push this listener to the list of cleanups + cleanups.push({ + ee: ee, + event: event, + fn: fn, + }) + } + } + + function callback() { + cleanup() + done.apply(null, arguments) + } + + function cleanup() { + var x + for (var i = 0; i < cleanups.length; i++) { + x = cleanups[i] + x.ee.removeListener(x.event, x.fn) + } + } + + function thunk(fn) { + done = fn + } + + thunk.cancel = cleanup + + return thunk +} + +/** + * Create the event listener. + * @private + */ + +function listener(event, done) { + return function onevent(arg1) { + var args = new Array(arguments.length) + var ee = this + var err = event === 'error' + ? arg1 + : null + + // copy args to prevent arguments escaping scope + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + + done(err, ee, event, args) + } +} diff --git a/node_modules/ee-first/package.json b/node_modules/ee-first/package.json new file mode 100644 index 0000000..b6d0b7d --- /dev/null +++ b/node_modules/ee-first/package.json @@ -0,0 +1,29 @@ +{ + "name": "ee-first", + "description": "return the first event in a set of ee/event pairs", + "version": "1.1.1", + "author": { + "name": "Jonathan Ong", + "email": "me@jongleberry.com", + "url": "http://jongleberry.com", + "twitter": "https://twitter.com/jongleberry" + }, + "contributors": [ + "Douglas Christopher Wilson <doug@somethingdoug.com>" + ], + "license": "MIT", + "repository": "jonathanong/ee-first", + "devDependencies": { + "istanbul": "0.3.9", + "mocha": "2.2.5" + }, + "files": [ + "index.js", + "LICENSE" + ], + "scripts": { + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" + } +} diff --git a/node_modules/end-of-stream/LICENSE b/node_modules/end-of-stream/LICENSE new file mode 100644 index 0000000..757562e --- /dev/null +++ b/node_modules/end-of-stream/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Mathias Buus + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/end-of-stream/README.md b/node_modules/end-of-stream/README.md new file mode 100644 index 0000000..857b14b --- /dev/null +++ b/node_modules/end-of-stream/README.md @@ -0,0 +1,54 @@ +# end-of-stream + +A node module that calls a callback when a readable/writable/duplex stream has completed or failed. + + npm install end-of-stream + +[![Build status](https://travis-ci.org/mafintosh/end-of-stream.svg?branch=master)](https://travis-ci.org/mafintosh/end-of-stream) + +## Usage + +Simply pass a stream and a callback to the `eos`. +Both legacy streams, streams2 and stream3 are supported. + +``` js +var eos = require('end-of-stream'); + +eos(readableStream, function(err) { + // this will be set to the stream instance + if (err) return console.log('stream had an error or closed early'); + console.log('stream has ended', this === readableStream); +}); + +eos(writableStream, function(err) { + if (err) return console.log('stream had an error or closed early'); + console.log('stream has finished', this === writableStream); +}); + +eos(duplexStream, function(err) { + if (err) return console.log('stream had an error or closed early'); + console.log('stream has ended and finished', this === duplexStream); +}); + +eos(duplexStream, {readable:false}, function(err) { + if (err) return console.log('stream had an error or closed early'); + console.log('stream has finished but might still be readable'); +}); + +eos(duplexStream, {writable:false}, function(err) { + if (err) return console.log('stream had an error or closed early'); + console.log('stream has ended but might still be writable'); +}); + +eos(readableStream, {error:false}, function(err) { + // do not treat emit('error', err) as a end-of-stream +}); +``` + +## License + +MIT + +## Related + +`end-of-stream` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one. diff --git a/node_modules/end-of-stream/index.js b/node_modules/end-of-stream/index.js new file mode 100644 index 0000000..c77f0d5 --- /dev/null +++ b/node_modules/end-of-stream/index.js @@ -0,0 +1,94 @@ +var once = require('once'); + +var noop = function() {}; + +var isRequest = function(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +}; + +var isChildProcess = function(stream) { + return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3 +}; + +var eos = function(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + + callback = once(callback || noop); + + var ws = stream._writableState; + var rs = stream._readableState; + var readable = opts.readable || (opts.readable !== false && stream.readable); + var writable = opts.writable || (opts.writable !== false && stream.writable); + var cancelled = false; + + var onlegacyfinish = function() { + if (!stream.writable) onfinish(); + }; + + var onfinish = function() { + writable = false; + if (!readable) callback.call(stream); + }; + + var onend = function() { + readable = false; + if (!writable) callback.call(stream); + }; + + var onexit = function(exitCode) { + callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null); + }; + + var onerror = function(err) { + callback.call(stream, err); + }; + + var onclose = function() { + process.nextTick(onclosenexttick); + }; + + var onclosenexttick = function() { + if (cancelled) return; + if (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close')); + if (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close')); + }; + + var onrequest = function() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest(); + else stream.on('request', onrequest); + } else if (writable && !ws) { // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + if (isChildProcess(stream)) stream.on('exit', onexit); + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + + return function() { + cancelled = true; + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('exit', onexit); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +}; + +module.exports = eos; diff --git a/node_modules/end-of-stream/package.json b/node_modules/end-of-stream/package.json new file mode 100644 index 0000000..b75bbf0 --- /dev/null +++ b/node_modules/end-of-stream/package.json @@ -0,0 +1,37 @@ +{ + "name": "end-of-stream", + "version": "1.4.4", + "description": "Call a callback when a readable/writable/duplex stream has completed or failed.", + "repository": { + "type": "git", + "url": "git://github.com/mafintosh/end-of-stream.git" + }, + "dependencies": { + "once": "^1.4.0" + }, + "scripts": { + "test": "node test.js" + }, + "files": [ + "index.js" + ], + "keywords": [ + "stream", + "streams", + "callback", + "finish", + "close", + "end", + "wait" + ], + "bugs": { + "url": "https://github.com/mafintosh/end-of-stream/issues" + }, + "homepage": "https://github.com/mafintosh/end-of-stream", + "main": "index.js", + "author": "Mathias Buus <mathiasbuus@gmail.com>", + "license": "MIT", + "devDependencies": { + "tape": "^4.11.0" + } +} diff --git a/node_modules/end-or-error/History.md b/node_modules/end-or-error/History.md new file mode 100644 index 0000000..d7863fc --- /dev/null +++ b/node_modules/end-or-error/History.md @@ -0,0 +1,10 @@ + +1.0.1 / 2015-02-24 +================== + + * transfer to stream-utils + +1.0.0 / 2015-02-23 +================== + + * first release diff --git a/node_modules/end-or-error/LICENSE b/node_modules/end-or-error/LICENSE new file mode 100644 index 0000000..b69e8fe --- /dev/null +++ b/node_modules/end-or-error/LICENSE @@ -0,0 +1,21 @@ +This software is licensed under the MIT License. + +Copyright (c) stream-utils and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/end-or-error/README.md b/node_modules/end-or-error/README.md new file mode 100644 index 0000000..ec000a9 --- /dev/null +++ b/node_modules/end-or-error/README.md @@ -0,0 +1,46 @@ +end-or-error +======= + +[![NPM version][npm-image]][npm-url] +[![build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] +[![Gittip][gittip-image]][gittip-url] +[![David deps][david-image]][david-url] +[![npm download][download-image]][download-url] + +[npm-image]: https://img.shields.io/npm/v/end-or-error.svg?style=flat-square +[npm-url]: https://npmjs.org/package/end-or-error +[travis-image]: https://img.shields.io/travis/stream-utils/end-or-error.svg?style=flat-square +[travis-url]: https://travis-ci.org/stream-utils/end-or-error +[coveralls-image]: https://img.shields.io/coveralls/stream-utils/end-or-error.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/stream-utils/end-or-error?branch=master +[gittip-image]: https://img.shields.io/gittip/fengmk2.svg?style=flat-square +[gittip-url]: https://www.gittip.com/fengmk2/ +[david-image]: https://img.shields.io/david/stream-utils/end-or-error.svg?style=flat-square +[david-url]: https://david-dm.org/stream-utils/end-or-error +[download-image]: https://img.shields.io/npm/dm/end-or-error.svg?style=flat-square +[download-url]: https://npmjs.org/package/end-or-error + +Listen readable stream `end` or `error` event once. + +## Install + +```bash +$ npm i end-or-error +``` + +## Usage + +```js +var eoe = require('end-or-error'); + +var stream = createReadStreamSomeHow(); + +eoe(stream, function (err) { + // err => stream emitted "error" event +}); +``` + +## License + +[MIT](LICENSE) diff --git a/node_modules/end-or-error/index.js b/node_modules/end-or-error/index.js new file mode 100644 index 0000000..e67f6ae --- /dev/null +++ b/node_modules/end-or-error/index.js @@ -0,0 +1,39 @@ +/**! + * end-or-error - index.js + * + * Copyright(c) stream-utils and other contributors. + * MIT Licensed + * + * Authors: + * fengmk2 <m@fengmk2.com> (http://fengmk2.com) + */ + +'use strict'; + +/** + * Module dependencies. + */ + +module.exports = function eoe(stream, cb) { + if (!stream.readable) { + return cb(); + } + + stream.on('error', onerror); + stream.on('end', onend); + + function onerror(err) { + cleanup(); + cb(err); + } + + function onend(data) { + cleanup(); + cb(null, data); + } + + function cleanup() { + stream.removeListener('error', onerror); + stream.removeListener('end', onend); + } +}; diff --git a/node_modules/end-or-error/package.json b/node_modules/end-or-error/package.json new file mode 100644 index 0000000..5aa64ac --- /dev/null +++ b/node_modules/end-or-error/package.json @@ -0,0 +1,44 @@ +{ + "name": "end-or-error", + "version": "1.0.1", + "description": "Listen readable stream `end` or `error` event once", + "main": "index.js", + "files": ["index.js"], + "scripts": { + "test": "mocha --check-leaks -R spec -t 5000 test/*.test.js", + "test-cov": "node node_modules/.bin/istanbul cover node_modules/.bin/_mocha -- --check-leaks -t 5000 test/*.test.js", + "test-travis": "node node_modules/.bin/istanbul cover node_modules/.bin/_mocha --report lcovonly -- --check-leaks -t 5000 test/*.test.js", + "jshint": "jshint .", + "autod": "autod -w --prefix '~'", + "cnpm": "npm install --registry=https://registry.npm.taobao.org", + "contributors": "contributors -f plain -o AUTHORS" + }, + "dependencies": { + + }, + "devDependencies": { + "autod": "*", + "contributors": "*", + "jshint": "*", + "istanbul": "*", + "mocha": "*" + }, + "homepage": "https://github.com/stream-utils/end-or-error", + "repository": { + "type": "git", + "url": "git://github.com/stream-utils/end-or-error.git", + "web": "https://github.com/stream-utils/end-or-error" + }, + "bugs": { + "url": "https://github.com/stream-utils/end-or-error/issues", + "email": "m@fengmk2.com" + }, + "keywords": [ + "end-or-error", "readstream", "readable", "stream", "end", "eoe", "stream-utils" + ], + "engines": { + "node": ">= 0.11.14" + }, + "author": "fengmk2 <m@fengmk2.com> (http://fengmk2.com)", + "license": "MIT" +} diff --git a/node_modules/entities/LICENSE b/node_modules/entities/LICENSE new file mode 100644 index 0000000..c464f86 --- /dev/null +++ b/node_modules/entities/LICENSE @@ -0,0 +1,11 @@ +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +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. + +THIS 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, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/entities/lib/decode.d.ts b/node_modules/entities/lib/decode.d.ts new file mode 100644 index 0000000..ccfd9fb --- /dev/null +++ b/node_modules/entities/lib/decode.d.ts @@ -0,0 +1,211 @@ +import htmlDecodeTree from "./generated/decode-data-html.js"; +import xmlDecodeTree from "./generated/decode-data-xml.js"; +import decodeCodePoint from "./decode_codepoint.js"; +export { htmlDecodeTree, xmlDecodeTree, decodeCodePoint }; +export { replaceCodePoint, fromCodePoint } from "./decode_codepoint.js"; +export declare enum BinTrieFlags { + VALUE_LENGTH = 49152, + BRANCH_LENGTH = 16256, + JUMP_TABLE = 127 +} +export declare enum DecodingMode { + /** Entities in text nodes that can end with any character. */ + Legacy = 0, + /** Only allow entities terminated with a semicolon. */ + Strict = 1, + /** Entities in attributes have limitations on ending characters. */ + Attribute = 2 +} +/** + * Producers for character reference errors as defined in the HTML spec. + */ +export interface EntityErrorProducer { + missingSemicolonAfterCharacterReference(): void; + absenceOfDigitsInNumericCharacterReference(consumedCharacters: number): void; + validateNumericCharacterReference(code: number): void; +} +/** + * Token decoder with support of writing partial entities. + */ +export declare class EntityDecoder { + /** The tree used to decode entities. */ + private readonly decodeTree; + /** + * The function that is called when a codepoint is decoded. + * + * For multi-byte named entities, this will be called multiple times, + * with the second codepoint, and the same `consumed` value. + * + * @param codepoint The decoded codepoint. + * @param consumed The number of bytes consumed by the decoder. + */ + private readonly emitCodePoint; + /** An object that is used to produce errors. */ + private readonly errors?; + constructor( + /** The tree used to decode entities. */ + decodeTree: Uint16Array, + /** + * The function that is called when a codepoint is decoded. + * + * For multi-byte named entities, this will be called multiple times, + * with the second codepoint, and the same `consumed` value. + * + * @param codepoint The decoded codepoint. + * @param consumed The number of bytes consumed by the decoder. + */ + emitCodePoint: (cp: number, consumed: number) => void, + /** An object that is used to produce errors. */ + errors?: EntityErrorProducer | undefined); + /** The current state of the decoder. */ + private state; + /** Characters that were consumed while parsing an entity. */ + private consumed; + /** + * The result of the entity. + * + * Either the result index of a numeric entity, or the codepoint of a + * numeric entity. + */ + private result; + /** The current index in the decode tree. */ + private treeIndex; + /** The number of characters that were consumed in excess. */ + private excess; + /** The mode in which the decoder is operating. */ + private decodeMode; + /** Resets the instance to make it reusable. */ + startEntity(decodeMode: DecodingMode): void; + /** + * Write an entity to the decoder. This can be called multiple times with partial entities. + * If the entity is incomplete, the decoder will return -1. + * + * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the + * entity is incomplete, and resume when the next string is written. + * + * @param string The string containing the entity (or a continuation of the entity). + * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + write(str: string, offset: number): number; + /** + * Switches between the numeric decimal and hexadecimal states. + * + * Equivalent to the `Numeric character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + private stateNumericStart; + private addToNumericResult; + /** + * Parses a hexadecimal numeric entity. + * + * Equivalent to the `Hexademical character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + private stateNumericHex; + /** + * Parses a decimal numeric entity. + * + * Equivalent to the `Decimal character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + private stateNumericDecimal; + /** + * Validate and emit a numeric entity. + * + * Implements the logic from the `Hexademical character reference start + * state` and `Numeric character reference end state` in the HTML spec. + * + * @param lastCp The last code point of the entity. Used to see if the + * entity was terminated with a semicolon. + * @param expectedLength The minimum number of characters that should be + * consumed. Used to validate that at least one digit + * was consumed. + * @returns The number of characters that were consumed. + */ + private emitNumericEntity; + /** + * Parses a named entity. + * + * Equivalent to the `Named character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + private stateNamedEntity; + /** + * Emit a named entity that was not terminated with a semicolon. + * + * @returns The number of characters consumed. + */ + private emitNotTerminatedNamedEntity; + /** + * Emit a named entity. + * + * @param result The index of the entity in the decode tree. + * @param valueLength The number of bytes in the entity. + * @param consumed The number of characters consumed. + * + * @returns The number of characters consumed. + */ + private emitNamedEntityData; + /** + * Signal to the parser that the end of the input was reached. + * + * Remaining data will be emitted and relevant errors will be produced. + * + * @returns The number of characters consumed. + */ + end(): number; +} +/** + * Determines the branch of the current node that is taken given the current + * character. This function is used to traverse the trie. + * + * @param decodeTree The trie. + * @param current The current node. + * @param nodeIdx The index right after the current node and its value. + * @param char The current character. + * @returns The index of the next node, or -1 if no branch is taken. + */ +export declare function determineBranch(decodeTree: Uint16Array, current: number, nodeIdx: number, char: number): number; +/** + * Decodes an HTML string. + * + * @param str The string to decode. + * @param mode The decoding mode. + * @returns The decoded string. + */ +export declare function decodeHTML(str: string, mode?: DecodingMode): string; +/** + * Decodes an HTML string in an attribute. + * + * @param str The string to decode. + * @returns The decoded string. + */ +export declare function decodeHTMLAttribute(str: string): string; +/** + * Decodes an HTML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ +export declare function decodeHTMLStrict(str: string): string; +/** + * Decodes an XML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ +export declare function decodeXML(str: string): string; +//# sourceMappingURL=decode.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/decode.d.ts.map b/node_modules/entities/lib/decode.d.ts.map new file mode 100644 index 0000000..4c0b4b4 --- /dev/null +++ b/node_modules/entities/lib/decode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"decode.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["decode.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAC7D,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAC3D,OAAO,eAGN,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAoBxE,oBAAY,YAAY;IACpB,YAAY,QAAwB;IACpC,aAAa,QAAwB;IACrC,UAAU,MAAwB;CACrC;AAuCD,oBAAY,YAAY;IACpB,8DAA8D;IAC9D,MAAM,IAAI;IACV,uDAAuD;IACvD,MAAM,IAAI;IACV,oEAAoE;IACpE,SAAS,IAAI;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,uCAAuC,IAAI,IAAI,CAAC;IAChD,0CAA0C,CACtC,kBAAkB,EAAE,MAAM,GAC3B,IAAI,CAAC;IACR,iCAAiC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACzD;AAED;;GAEG;AACH,qBAAa,aAAa;IAElB,wCAAwC;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B;;;;;;;;OAQG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;;IAbxB,wCAAwC;IACvB,UAAU,EAAE,WAAW;IACxC;;;;;;;;OAQG;IACc,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI;IACtE,gDAAgD;IAC/B,MAAM,CAAC,iCAAqB;IAGjD,wCAAwC;IACxC,OAAO,CAAC,KAAK,CAAkC;IAC/C,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAK;IACrB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAK;IAEnB,4CAA4C;IAC5C,OAAO,CAAC,SAAS,CAAK;IACtB,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAK;IACnB,kDAAkD;IAClD,OAAO,CAAC,UAAU,CAAuB;IAEzC,+CAA+C;IAC/C,WAAW,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI;IAS3C;;;;;;;;;;OAUG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IA8B1C;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,kBAAkB;IAe1B;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAkBvB;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;IAsDxB;;;;OAIG;IACH,OAAO,CAAC,4BAA4B;IAYpC;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;;;;;OAMG;IACH,GAAG,IAAI,MAAM;CA6BhB;AAoDD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC3B,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACb,MAAM,CAsCR;AAKD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,eAAsB,GAAG,MAAM,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C"} \ No newline at end of file diff --git a/node_modules/entities/lib/decode.js b/node_modules/entities/lib/decode.js new file mode 100644 index 0000000..aa4a42c --- /dev/null +++ b/node_modules/entities/lib/decode.js @@ -0,0 +1,536 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0; +var decode_data_html_js_1 = __importDefault(require("./generated/decode-data-html.js")); +exports.htmlDecodeTree = decode_data_html_js_1.default; +var decode_data_xml_js_1 = __importDefault(require("./generated/decode-data-xml.js")); +exports.xmlDecodeTree = decode_data_xml_js_1.default; +var decode_codepoint_js_1 = __importStar(require("./decode_codepoint.js")); +exports.decodeCodePoint = decode_codepoint_js_1.default; +var decode_codepoint_js_2 = require("./decode_codepoint.js"); +Object.defineProperty(exports, "replaceCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } }); +Object.defineProperty(exports, "fromCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } }); +var CharCodes; +(function (CharCodes) { + CharCodes[CharCodes["NUM"] = 35] = "NUM"; + CharCodes[CharCodes["SEMI"] = 59] = "SEMI"; + CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS"; + CharCodes[CharCodes["ZERO"] = 48] = "ZERO"; + CharCodes[CharCodes["NINE"] = 57] = "NINE"; + CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A"; + CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F"; + CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X"; + CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z"; + CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A"; + CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F"; + CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z"; +})(CharCodes || (CharCodes = {})); +/** Bit that needs to be set to convert an upper case ASCII character to lower case */ +var TO_LOWER_BIT = 32; +var BinTrieFlags; +(function (BinTrieFlags) { + BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; + BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; + BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE"; +})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {})); +function isNumber(code) { + return code >= CharCodes.ZERO && code <= CharCodes.NINE; +} +function isHexadecimalCharacter(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F)); +} +function isAsciiAlphaNumeric(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) || + isNumber(code)); +} +/** + * Checks if the given character is a valid end character for an entity in an attribute. + * + * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error. + * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state + */ +function isEntityInAttributeInvalidEnd(code) { + return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); +} +var EntityDecoderState; +(function (EntityDecoderState) { + EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart"; + EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart"; + EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal"; + EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex"; + EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity"; +})(EntityDecoderState || (EntityDecoderState = {})); +var DecodingMode; +(function (DecodingMode) { + /** Entities in text nodes that can end with any character. */ + DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy"; + /** Only allow entities terminated with a semicolon. */ + DecodingMode[DecodingMode["Strict"] = 1] = "Strict"; + /** Entities in attributes have limitations on ending characters. */ + DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute"; +})(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {})); +/** + * Token decoder with support of writing partial entities. + */ +var EntityDecoder = /** @class */ (function () { + function EntityDecoder( + /** The tree used to decode entities. */ + decodeTree, + /** + * The function that is called when a codepoint is decoded. + * + * For multi-byte named entities, this will be called multiple times, + * with the second codepoint, and the same `consumed` value. + * + * @param codepoint The decoded codepoint. + * @param consumed The number of bytes consumed by the decoder. + */ + emitCodePoint, + /** An object that is used to produce errors. */ + errors) { + this.decodeTree = decodeTree; + this.emitCodePoint = emitCodePoint; + this.errors = errors; + /** The current state of the decoder. */ + this.state = EntityDecoderState.EntityStart; + /** Characters that were consumed while parsing an entity. */ + this.consumed = 1; + /** + * The result of the entity. + * + * Either the result index of a numeric entity, or the codepoint of a + * numeric entity. + */ + this.result = 0; + /** The current index in the decode tree. */ + this.treeIndex = 0; + /** The number of characters that were consumed in excess. */ + this.excess = 1; + /** The mode in which the decoder is operating. */ + this.decodeMode = DecodingMode.Strict; + } + /** Resets the instance to make it reusable. */ + EntityDecoder.prototype.startEntity = function (decodeMode) { + this.decodeMode = decodeMode; + this.state = EntityDecoderState.EntityStart; + this.result = 0; + this.treeIndex = 0; + this.excess = 1; + this.consumed = 1; + }; + /** + * Write an entity to the decoder. This can be called multiple times with partial entities. + * If the entity is incomplete, the decoder will return -1. + * + * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the + * entity is incomplete, and resume when the next string is written. + * + * @param string The string containing the entity (or a continuation of the entity). + * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.write = function (str, offset) { + switch (this.state) { + case EntityDecoderState.EntityStart: { + if (str.charCodeAt(offset) === CharCodes.NUM) { + this.state = EntityDecoderState.NumericStart; + this.consumed += 1; + return this.stateNumericStart(str, offset + 1); + } + this.state = EntityDecoderState.NamedEntity; + return this.stateNamedEntity(str, offset); + } + case EntityDecoderState.NumericStart: { + return this.stateNumericStart(str, offset); + } + case EntityDecoderState.NumericDecimal: { + return this.stateNumericDecimal(str, offset); + } + case EntityDecoderState.NumericHex: { + return this.stateNumericHex(str, offset); + } + case EntityDecoderState.NamedEntity: { + return this.stateNamedEntity(str, offset); + } + } + }; + /** + * Switches between the numeric decimal and hexadecimal states. + * + * Equivalent to the `Numeric character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericStart = function (str, offset) { + if (offset >= str.length) { + return -1; + } + if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { + this.state = EntityDecoderState.NumericHex; + this.consumed += 1; + return this.stateNumericHex(str, offset + 1); + } + this.state = EntityDecoderState.NumericDecimal; + return this.stateNumericDecimal(str, offset); + }; + EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) { + if (start !== end) { + var digitCount = end - start; + this.result = + this.result * Math.pow(base, digitCount) + + parseInt(str.substr(start, digitCount), base); + this.consumed += digitCount; + } + }; + /** + * Parses a hexadecimal numeric entity. + * + * Equivalent to the `Hexademical character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericHex = function (str, offset) { + var startIdx = offset; + while (offset < str.length) { + var char = str.charCodeAt(offset); + if (isNumber(char) || isHexadecimalCharacter(char)) { + offset += 1; + } + else { + this.addToNumericResult(str, startIdx, offset, 16); + return this.emitNumericEntity(char, 3); + } + } + this.addToNumericResult(str, startIdx, offset, 16); + return -1; + }; + /** + * Parses a decimal numeric entity. + * + * Equivalent to the `Decimal character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericDecimal = function (str, offset) { + var startIdx = offset; + while (offset < str.length) { + var char = str.charCodeAt(offset); + if (isNumber(char)) { + offset += 1; + } + else { + this.addToNumericResult(str, startIdx, offset, 10); + return this.emitNumericEntity(char, 2); + } + } + this.addToNumericResult(str, startIdx, offset, 10); + return -1; + }; + /** + * Validate and emit a numeric entity. + * + * Implements the logic from the `Hexademical character reference start + * state` and `Numeric character reference end state` in the HTML spec. + * + * @param lastCp The last code point of the entity. Used to see if the + * entity was terminated with a semicolon. + * @param expectedLength The minimum number of characters that should be + * consumed. Used to validate that at least one digit + * was consumed. + * @returns The number of characters that were consumed. + */ + EntityDecoder.prototype.emitNumericEntity = function (lastCp, expectedLength) { + var _a; + // Ensure we consumed at least one digit. + if (this.consumed <= expectedLength) { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + // Figure out if this is a legit end of the entity + if (lastCp === CharCodes.SEMI) { + this.consumed += 1; + } + else if (this.decodeMode === DecodingMode.Strict) { + return 0; + } + this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed); + if (this.errors) { + if (lastCp !== CharCodes.SEMI) { + this.errors.missingSemicolonAfterCharacterReference(); + } + this.errors.validateNumericCharacterReference(this.result); + } + return this.consumed; + }; + /** + * Parses a named entity. + * + * Equivalent to the `Named character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNamedEntity = function (str, offset) { + var decodeTree = this.decodeTree; + var current = decodeTree[this.treeIndex]; + // The mask is the number of bytes of the value, including the current byte. + var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + for (; offset < str.length; offset++, this.excess++) { + var char = str.charCodeAt(offset); + this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); + if (this.treeIndex < 0) { + return this.result === 0 || + // If we are parsing an attribute + (this.decodeMode === DecodingMode.Attribute && + // We shouldn't have consumed any characters after the entity, + (valueLength === 0 || + // And there should be no invalid characters. + isEntityInAttributeInvalidEnd(char))) + ? 0 + : this.emitNotTerminatedNamedEntity(); + } + current = decodeTree[this.treeIndex]; + valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + // If the branch is a value, store it and continue + if (valueLength !== 0) { + // If the entity is terminated by a semicolon, we are done. + if (char === CharCodes.SEMI) { + return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); + } + // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it. + if (this.decodeMode !== DecodingMode.Strict) { + this.result = this.treeIndex; + this.consumed += this.excess; + this.excess = 0; + } + } + } + return -1; + }; + /** + * Emit a named entity that was not terminated with a semicolon. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.emitNotTerminatedNamedEntity = function () { + var _a; + var _b = this, result = _b.result, decodeTree = _b.decodeTree; + var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; + this.emitNamedEntityData(result, valueLength, this.consumed); + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference(); + return this.consumed; + }; + /** + * Emit a named entity. + * + * @param result The index of the entity in the decode tree. + * @param valueLength The number of bytes in the entity. + * @param consumed The number of characters consumed. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.emitNamedEntityData = function (result, valueLength, consumed) { + var decodeTree = this.decodeTree; + this.emitCodePoint(valueLength === 1 + ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH + : decodeTree[result + 1], consumed); + if (valueLength === 3) { + // For multi-byte values, we need to emit the second byte. + this.emitCodePoint(decodeTree[result + 2], consumed); + } + return consumed; + }; + /** + * Signal to the parser that the end of the input was reached. + * + * Remaining data will be emitted and relevant errors will be produced. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.end = function () { + var _a; + switch (this.state) { + case EntityDecoderState.NamedEntity: { + // Emit a named entity if we have one. + return this.result !== 0 && + (this.decodeMode !== DecodingMode.Attribute || + this.result === this.treeIndex) + ? this.emitNotTerminatedNamedEntity() + : 0; + } + // Otherwise, emit a numeric entity if we have one. + case EntityDecoderState.NumericDecimal: { + return this.emitNumericEntity(0, 2); + } + case EntityDecoderState.NumericHex: { + return this.emitNumericEntity(0, 3); + } + case EntityDecoderState.NumericStart: { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + case EntityDecoderState.EntityStart: { + // Return 0 if we have no entity. + return 0; + } + } + }; + return EntityDecoder; +}()); +exports.EntityDecoder = EntityDecoder; +/** + * Creates a function that decodes entities in a string. + * + * @param decodeTree The decode tree. + * @returns A function that decodes entities in a string. + */ +function getDecoder(decodeTree) { + var ret = ""; + var decoder = new EntityDecoder(decodeTree, function (str) { return (ret += (0, decode_codepoint_js_1.fromCodePoint)(str)); }); + return function decodeWithTrie(str, decodeMode) { + var lastIndex = 0; + var offset = 0; + while ((offset = str.indexOf("&", offset)) >= 0) { + ret += str.slice(lastIndex, offset); + decoder.startEntity(decodeMode); + var len = decoder.write(str, + // Skip the "&" + offset + 1); + if (len < 0) { + lastIndex = offset + decoder.end(); + break; + } + lastIndex = offset + len; + // If `len` is 0, skip the current `&` and continue. + offset = len === 0 ? lastIndex + 1 : lastIndex; + } + var result = ret + str.slice(lastIndex); + // Make sure we don't keep a reference to the final string. + ret = ""; + return result; + }; +} +/** + * Determines the branch of the current node that is taken given the current + * character. This function is used to traverse the trie. + * + * @param decodeTree The trie. + * @param current The current node. + * @param nodeIdx The index right after the current node and its value. + * @param char The current character. + * @returns The index of the next node, or -1 if no branch is taken. + */ +function determineBranch(decodeTree, current, nodeIdx, char) { + var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; + var jumpOffset = current & BinTrieFlags.JUMP_TABLE; + // Case 1: Single branch encoded in jump offset + if (branchCount === 0) { + return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; + } + // Case 2: Multiple branches encoded in jump table + if (jumpOffset) { + var value = char - jumpOffset; + return value < 0 || value >= branchCount + ? -1 + : decodeTree[nodeIdx + value] - 1; + } + // Case 3: Multiple branches encoded in dictionary + // Binary search for the character. + var lo = nodeIdx; + var hi = lo + branchCount - 1; + while (lo <= hi) { + var mid = (lo + hi) >>> 1; + var midVal = decodeTree[mid]; + if (midVal < char) { + lo = mid + 1; + } + else if (midVal > char) { + hi = mid - 1; + } + else { + return decodeTree[mid + branchCount]; + } + } + return -1; +} +exports.determineBranch = determineBranch; +var htmlDecoder = getDecoder(decode_data_html_js_1.default); +var xmlDecoder = getDecoder(decode_data_xml_js_1.default); +/** + * Decodes an HTML string. + * + * @param str The string to decode. + * @param mode The decoding mode. + * @returns The decoded string. + */ +function decodeHTML(str, mode) { + if (mode === void 0) { mode = DecodingMode.Legacy; } + return htmlDecoder(str, mode); +} +exports.decodeHTML = decodeHTML; +/** + * Decodes an HTML string in an attribute. + * + * @param str The string to decode. + * @returns The decoded string. + */ +function decodeHTMLAttribute(str) { + return htmlDecoder(str, DecodingMode.Attribute); +} +exports.decodeHTMLAttribute = decodeHTMLAttribute; +/** + * Decodes an HTML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ +function decodeHTMLStrict(str) { + return htmlDecoder(str, DecodingMode.Strict); +} +exports.decodeHTMLStrict = decodeHTMLStrict; +/** + * Decodes an XML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ +function decodeXML(str) { + return xmlDecoder(str, DecodingMode.Strict); +} +exports.decodeXML = decodeXML; +//# sourceMappingURL=decode.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/decode.js.map b/node_modules/entities/lib/decode.js.map new file mode 100644 index 0000000..afcad7e --- /dev/null +++ b/node_modules/entities/lib/decode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"decode.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["decode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wFAA6D;AAQpD,yBARF,6BAAc,CAQE;AAPvB,sFAA2D;AAOlC,wBAPlB,4BAAa,CAOkB;AANtC,2EAG+B;AAGS,0BANjC,6BAAe,CAMiC;AACvD,6DAAwE;AAA/D,uHAAA,gBAAgB,OAAA;AAAE,oHAAA,aAAa,OAAA;AAExC,IAAW,SAaV;AAbD,WAAW,SAAS;IAChB,wCAAQ,CAAA;IACR,0CAAS,CAAA;IACT,8CAAW,CAAA;IACX,0CAAS,CAAA;IACT,0CAAS,CAAA;IACT,gDAAY,CAAA;IACZ,iDAAa,CAAA;IACb,iDAAa,CAAA;IACb,iDAAa,CAAA;IACb,gDAAY,CAAA;IACZ,gDAAY,CAAA;IACZ,gDAAY,CAAA;AAChB,CAAC,EAbU,SAAS,KAAT,SAAS,QAanB;AAED,sFAAsF;AACtF,IAAM,YAAY,GAAG,EAAQ,CAAC;AAE9B,IAAY,YAIX;AAJD,WAAY,YAAY;IACpB,mEAAoC,CAAA;IACpC,qEAAqC,CAAA;IACrC,6DAAkC,CAAA;AACtC,CAAC,EAJW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAIvB;AAED,SAAS,QAAQ,CAAC,IAAY;IAC1B,OAAO,IAAI,IAAI,SAAS,CAAC,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IACxC,OAAO,CACH,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,IAAI,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC;QACxD,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,IAAI,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,CAC3D,CAAC;AACN,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACrC,OAAO,CACH,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,IAAI,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC;QACxD,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,IAAI,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,CACjB,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAS,6BAA6B,CAAC,IAAY;IAC/C,OAAO,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,IAAW,kBAMV;AAND,WAAW,kBAAkB;IACzB,yEAAW,CAAA;IACX,2EAAY,CAAA;IACZ,+EAAc,CAAA;IACd,uEAAU,CAAA;IACV,yEAAW,CAAA;AACf,CAAC,EANU,kBAAkB,KAAlB,kBAAkB,QAM5B;AAED,IAAY,YAOX;AAPD,WAAY,YAAY;IACpB,8DAA8D;IAC9D,mDAAU,CAAA;IACV,uDAAuD;IACvD,mDAAU,CAAA;IACV,oEAAoE;IACpE,yDAAa,CAAA;AACjB,CAAC,EAPW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAOvB;AAaD;;GAEG;AACH;IACI;IACI,wCAAwC;IACvB,UAAuB;IACxC;;;;;;;;OAQG;IACc,aAAqD;IACtE,gDAAgD;IAC/B,MAA4B;QAZ5B,eAAU,GAAV,UAAU,CAAa;QAUvB,kBAAa,GAAb,aAAa,CAAwC;QAErD,WAAM,GAAN,MAAM,CAAsB;QAGjD,wCAAwC;QAChC,UAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC;QAC/C,6DAA6D;QACrD,aAAQ,GAAG,CAAC,CAAC;QACrB;;;;;WAKG;QACK,WAAM,GAAG,CAAC,CAAC;QAEnB,4CAA4C;QACpC,cAAS,GAAG,CAAC,CAAC;QACtB,6DAA6D;QACrD,WAAM,GAAG,CAAC,CAAC;QACnB,kDAAkD;QAC1C,eAAU,GAAG,YAAY,CAAC,MAAM,CAAC;IAnBtC,CAAC;IAqBJ,+CAA+C;IAC/C,mCAAW,GAAX,UAAY,UAAwB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;IAED;;;;;;;;;;OAUG;IACH,6BAAK,GAAL,UAAM,GAAW,EAAE,MAAc;QAC7B,QAAQ,IAAI,CAAC,KAAK,EAAE;YAChB,KAAK,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBACjC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,GAAG,EAAE;oBAC1C,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,YAAY,CAAC;oBAC7C,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;oBACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;iBAClD;gBACD,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC;gBAC5C,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aAC7C;YAED,KAAK,kBAAkB,CAAC,YAAY,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aAC9C;YAED,KAAK,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBACpC,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aAChD;YAED,KAAK,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAChC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aAC5C;YAED,KAAK,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aAC7C;SACJ;IACL,CAAC;IAED;;;;;;;;OAQG;IACK,yCAAiB,GAAzB,UAA0B,GAAW,EAAE,MAAc;QACjD,IAAI,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;YACtB,OAAO,CAAC,CAAC,CAAC;SACb;QAED,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,SAAS,CAAC,OAAO,EAAE;YAC/D,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC;YAC3C,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;SAChD;QAED,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,cAAc,CAAC;QAC/C,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAEO,0CAAkB,GAA1B,UACI,GAAW,EACX,KAAa,EACb,GAAW,EACX,IAAY;QAEZ,IAAI,KAAK,KAAK,GAAG,EAAE;YACf,IAAM,UAAU,GAAG,GAAG,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,MAAM;gBACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;oBACxC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC;SAC/B;IACL,CAAC;IAED;;;;;;;;OAQG;IACK,uCAAe,GAAvB,UAAwB,GAAW,EAAE,MAAc;QAC/C,IAAM,QAAQ,GAAG,MAAM,CAAC;QAExB,OAAO,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;YACxB,IAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAChD,MAAM,IAAI,CAAC,CAAC;aACf;iBAAM;gBACH,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;gBACnD,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aAC1C;SACJ;QAED,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAEnD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACK,2CAAmB,GAA3B,UAA4B,GAAW,EAAE,MAAc;QACnD,IAAM,QAAQ,GAAG,MAAM,CAAC;QAExB,OAAO,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;YACxB,IAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAChB,MAAM,IAAI,CAAC,CAAC;aACf;iBAAM;gBACH,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;gBACnD,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aAC1C;SACJ;QAED,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAEnD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,yCAAiB,GAAzB,UAA0B,MAAc,EAAE,cAAsB;;QAC5D,yCAAyC;QACzC,IAAI,IAAI,CAAC,QAAQ,IAAI,cAAc,EAAE;YACjC,MAAA,IAAI,CAAC,MAAM,0CAAE,0CAA0C,CACnD,IAAI,CAAC,QAAQ,CAChB,CAAC;YACF,OAAO,CAAC,CAAC;SACZ;QAED,kDAAkD;QAClD,IAAI,MAAM,KAAK,SAAS,CAAC,IAAI,EAAE;YAC3B,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;SACtB;aAAM,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY,CAAC,MAAM,EAAE;YAChD,OAAO,CAAC,CAAC;SACZ;QAED,IAAI,CAAC,aAAa,CAAC,IAAA,sCAAgB,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjE,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,MAAM,KAAK,SAAS,CAAC,IAAI,EAAE;gBAC3B,IAAI,CAAC,MAAM,CAAC,uCAAuC,EAAE,CAAC;aACzD;YAED,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC9D;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;;;;;OAQG;IACK,wCAAgB,GAAxB,UAAyB,GAAW,EAAE,MAAc;QACxC,IAAA,UAAU,GAAK,IAAI,WAAT,CAAU;QAC5B,IAAI,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,4EAA4E;QAC5E,IAAI,WAAW,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAE9D,OAAO,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE;YACjD,IAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAEpC,IAAI,CAAC,SAAS,GAAG,eAAe,CAC5B,UAAU,EACV,OAAO,EACP,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,EACzC,IAAI,CACP,CAAC;YAEF,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;gBACpB,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC;oBACpB,iCAAiC;oBACjC,CAAC,IAAI,CAAC,UAAU,KAAK,YAAY,CAAC,SAAS;wBACvC,8DAA8D;wBAC9D,CAAC,WAAW,KAAK,CAAC;4BACd,6CAA6C;4BAC7C,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC7C,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC;aAC7C;YAED,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,WAAW,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAE1D,kDAAkD;YAClD,IAAI,WAAW,KAAK,CAAC,EAAE;gBACnB,2DAA2D;gBAC3D,IAAI,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;oBACzB,OAAO,IAAI,CAAC,mBAAmB,CAC3B,IAAI,CAAC,SAAS,EACd,WAAW,EACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAC9B,CAAC;iBACL;gBAED,2FAA2F;gBAC3F,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY,CAAC,MAAM,EAAE;oBACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC7B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC;oBAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;iBACnB;aACJ;SACJ;QAED,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED;;;;OAIG;IACK,oDAA4B,GAApC;;QACU,IAAA,KAAyB,IAAI,EAA3B,MAAM,YAAA,EAAE,UAAU,gBAAS,CAAC;QAEpC,IAAM,WAAW,GACb,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAE3D,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAA,IAAI,CAAC,MAAM,0CAAE,uCAAuC,EAAE,CAAC;QAEvD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;;;;;OAQG;IACK,2CAAmB,GAA3B,UACI,MAAc,EACd,WAAmB,EACnB,QAAgB;QAER,IAAA,UAAU,GAAK,IAAI,WAAT,CAAU;QAE5B,IAAI,CAAC,aAAa,CACd,WAAW,KAAK,CAAC;YACb,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY;YACjD,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAC5B,QAAQ,CACX,CAAC;QACF,IAAI,WAAW,KAAK,CAAC,EAAE;YACnB,0DAA0D;YAC1D,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;SACxD;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,2BAAG,GAAH;;QACI,QAAQ,IAAI,CAAC,KAAK,EAAE;YAChB,KAAK,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBACjC,sCAAsC;gBACtC,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC;oBACpB,CAAC,IAAI,CAAC,UAAU,KAAK,YAAY,CAAC,SAAS;wBACvC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC;oBACnC,CAAC,CAAC,IAAI,CAAC,4BAA4B,EAAE;oBACrC,CAAC,CAAC,CAAC,CAAC;aACX;YACD,mDAAmD;YACnD,KAAK,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACvC;YACD,KAAK,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAChC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACvC;YACD,KAAK,kBAAkB,CAAC,YAAY,CAAC,CAAC;gBAClC,MAAA,IAAI,CAAC,MAAM,0CAAE,0CAA0C,CACnD,IAAI,CAAC,QAAQ,CAChB,CAAC;gBACF,OAAO,CAAC,CAAC;aACZ;YACD,KAAK,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBACjC,iCAAiC;gBACjC,OAAO,CAAC,CAAC;aACZ;SACJ;IACL,CAAC;IACL,oBAAC;AAAD,CAAC,AAjXD,IAiXC;AAjXY,sCAAa;AAmX1B;;;;;GAKG;AACH,SAAS,UAAU,CAAC,UAAuB;IACvC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAM,OAAO,GAAG,IAAI,aAAa,CAC7B,UAAU,EACV,UAAC,GAAG,IAAK,OAAA,CAAC,GAAG,IAAI,IAAA,mCAAa,EAAC,GAAG,CAAC,CAAC,EAA3B,CAA2B,CACvC,CAAC;IAEF,OAAO,SAAS,cAAc,CAC1B,GAAW,EACX,UAAwB;QAExB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE;YAC7C,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAEpC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAEhC,IAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CACrB,GAAG;YACH,eAAe;YACf,MAAM,GAAG,CAAC,CACb,CAAC;YAEF,IAAI,GAAG,GAAG,CAAC,EAAE;gBACT,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;gBACnC,MAAM;aACT;YAED,SAAS,GAAG,MAAM,GAAG,GAAG,CAAC;YACzB,oDAAoD;YACpD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;SAClD;QAED,IAAM,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE1C,2DAA2D;QAC3D,GAAG,GAAG,EAAE,CAAC;QAET,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,eAAe,CAC3B,UAAuB,EACvB,OAAe,EACf,OAAe,EACf,IAAY;IAEZ,IAAM,WAAW,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChE,IAAM,UAAU,GAAG,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC;IAErD,+CAA+C;IAC/C,IAAI,WAAW,KAAK,CAAC,EAAE;QACnB,OAAO,UAAU,KAAK,CAAC,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACjE;IAED,kDAAkD;IAClD,IAAI,UAAU,EAAE;QACZ,IAAM,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;QAEhC,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,WAAW;YACpC,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;KACzC;IAED,kDAAkD;IAElD,mCAAmC;IACnC,IAAI,EAAE,GAAG,OAAO,CAAC;IACjB,IAAI,EAAE,GAAG,EAAE,GAAG,WAAW,GAAG,CAAC,CAAC;IAE9B,OAAO,EAAE,IAAI,EAAE,EAAE;QACb,IAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,MAAM,GAAG,IAAI,EAAE;YACf,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;SAChB;aAAM,IAAI,MAAM,GAAG,IAAI,EAAE;YACtB,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;SAChB;aAAM;YACH,OAAO,UAAU,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC;SACxC;KACJ;IAED,OAAO,CAAC,CAAC,CAAC;AACd,CAAC;AA3CD,0CA2CC;AAED,IAAM,WAAW,GAAG,UAAU,CAAC,6BAAc,CAAC,CAAC;AAC/C,IAAM,UAAU,GAAG,UAAU,CAAC,4BAAa,CAAC,CAAC;AAE7C;;;;;;GAMG;AACH,SAAgB,UAAU,CAAC,GAAW,EAAE,IAA0B;IAA1B,qBAAA,EAAA,OAAO,YAAY,CAAC,MAAM;IAC9D,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAFD,gCAEC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,GAAW;IAC3C,OAAO,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC;AAFD,kDAEC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,GAAW;IACxC,OAAO,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC;AAFD,4CAEC;AAED;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,GAAW;IACjC,OAAO,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAFD,8BAEC"} \ No newline at end of file diff --git a/node_modules/entities/lib/decode_codepoint.d.ts b/node_modules/entities/lib/decode_codepoint.d.ts new file mode 100644 index 0000000..84ae206 --- /dev/null +++ b/node_modules/entities/lib/decode_codepoint.d.ts @@ -0,0 +1,19 @@ +/** + * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point. + */ +export declare const fromCodePoint: (...codePoints: number[]) => string; +/** + * Replace the given code point with a replacement character if it is a + * surrogate or is outside the valid range. Otherwise return the code + * point unchanged. + */ +export declare function replaceCodePoint(codePoint: number): number; +/** + * Replace the code point if relevant, then convert it to a string. + * + * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead. + * @param codePoint The code point to decode. + * @returns The decoded code point. + */ +export default function decodeCodePoint(codePoint: number): string; +//# sourceMappingURL=decode_codepoint.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/decode_codepoint.d.ts.map b/node_modules/entities/lib/decode_codepoint.d.ts.map new file mode 100644 index 0000000..38a8dea --- /dev/null +++ b/node_modules/entities/lib/decode_codepoint.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"decode_codepoint.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["decode_codepoint.ts"],"names":[],"mappings":"AAkCA;;GAEG;AACH,eAAO,MAAM,aAAa,qCAgBrB,CAAC;AAEN;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,UAMjD;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjE"} \ No newline at end of file diff --git a/node_modules/entities/lib/decode_codepoint.js b/node_modules/entities/lib/decode_codepoint.js new file mode 100644 index 0000000..1205346 --- /dev/null +++ b/node_modules/entities/lib/decode_codepoint.js @@ -0,0 +1,76 @@ +"use strict"; +// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134 +var _a; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.replaceCodePoint = exports.fromCodePoint = void 0; +var decodeMap = new Map([ + [0, 65533], + // C1 Unicode control character reference replacements + [128, 8364], + [130, 8218], + [131, 402], + [132, 8222], + [133, 8230], + [134, 8224], + [135, 8225], + [136, 710], + [137, 8240], + [138, 352], + [139, 8249], + [140, 338], + [142, 381], + [145, 8216], + [146, 8217], + [147, 8220], + [148, 8221], + [149, 8226], + [150, 8211], + [151, 8212], + [152, 732], + [153, 8482], + [154, 353], + [155, 8250], + [156, 339], + [158, 382], + [159, 376], +]); +/** + * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point. + */ +exports.fromCodePoint = +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins +(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) { + var output = ""; + if (codePoint > 0xffff) { + codePoint -= 0x10000; + output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800); + codePoint = 0xdc00 | (codePoint & 0x3ff); + } + output += String.fromCharCode(codePoint); + return output; +}; +/** + * Replace the given code point with a replacement character if it is a + * surrogate or is outside the valid range. Otherwise return the code + * point unchanged. + */ +function replaceCodePoint(codePoint) { + var _a; + if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) { + return 0xfffd; + } + return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint; +} +exports.replaceCodePoint = replaceCodePoint; +/** + * Replace the code point if relevant, then convert it to a string. + * + * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead. + * @param codePoint The code point to decode. + * @returns The decoded code point. + */ +function decodeCodePoint(codePoint) { + return (0, exports.fromCodePoint)(replaceCodePoint(codePoint)); +} +exports.default = decodeCodePoint; +//# sourceMappingURL=decode_codepoint.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/decode_codepoint.js.map b/node_modules/entities/lib/decode_codepoint.js.map new file mode 100644 index 0000000..2747865 --- /dev/null +++ b/node_modules/entities/lib/decode_codepoint.js.map @@ -0,0 +1 @@ +{"version":3,"file":"decode_codepoint.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["decode_codepoint.ts"],"names":[],"mappings":";AAAA,qHAAqH;;;;AAErH,IAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACtB,CAAC,CAAC,EAAE,KAAK,CAAC;IACV,sDAAsD;IACtD,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,GAAG,CAAC;CACb,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,aAAa;AACtB,iHAAiH;AACjH,MAAA,MAAM,CAAC,aAAa,mCACpB,UAAU,SAAiB;IACvB,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,SAAS,GAAG,MAAM,EAAE;QACpB,SAAS,IAAI,OAAO,CAAC;QACrB,MAAM,IAAI,MAAM,CAAC,YAAY,CACzB,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CACxC,CAAC;QACF,SAAS,GAAG,MAAM,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;KAC5C;IAED,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEN;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,SAAiB;;IAC9C,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,SAAS,GAAG,QAAQ,EAAE;QACtE,OAAO,MAAM,CAAC;KACjB;IAED,OAAO,MAAA,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,mCAAI,SAAS,CAAC;AACjD,CAAC;AAND,4CAMC;AAED;;;;;;GAMG;AACH,SAAwB,eAAe,CAAC,SAAiB;IACrD,OAAO,IAAA,qBAAa,EAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AACtD,CAAC;AAFD,kCAEC"} \ No newline at end of file diff --git a/node_modules/entities/lib/encode.d.ts b/node_modules/entities/lib/encode.d.ts new file mode 100644 index 0000000..f09c4ee --- /dev/null +++ b/node_modules/entities/lib/encode.d.ts @@ -0,0 +1,22 @@ +/** + * Encodes all characters in the input using HTML entities. This includes + * characters that are valid ASCII characters in HTML documents, such as `#`. + * + * To get a more compact output, consider using the `encodeNonAsciiHTML` + * function, which will only encode characters that are not valid in HTML + * documents, as well as non-ASCII characters. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + */ +export declare function encodeHTML(data: string): string; +/** + * Encodes all non-ASCII characters, as well as characters not valid in HTML + * documents using HTML entities. This function will not encode characters that + * are valid in HTML documents, such as `#`. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + */ +export declare function encodeNonAsciiHTML(data: string): string; +//# sourceMappingURL=encode.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/encode.d.ts.map b/node_modules/entities/lib/encode.d.ts.map new file mode 100644 index 0000000..e24c05b --- /dev/null +++ b/node_modules/entities/lib/encode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"encode.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["encode.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AACD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD"} \ No newline at end of file diff --git a/node_modules/entities/lib/encode.js b/node_modules/entities/lib/encode.js new file mode 100644 index 0000000..4786a03 --- /dev/null +++ b/node_modules/entities/lib/encode.js @@ -0,0 +1,77 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.encodeNonAsciiHTML = exports.encodeHTML = void 0; +var encode_html_js_1 = __importDefault(require("./generated/encode-html.js")); +var escape_js_1 = require("./escape.js"); +var htmlReplacer = /[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g; +/** + * Encodes all characters in the input using HTML entities. This includes + * characters that are valid ASCII characters in HTML documents, such as `#`. + * + * To get a more compact output, consider using the `encodeNonAsciiHTML` + * function, which will only encode characters that are not valid in HTML + * documents, as well as non-ASCII characters. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + */ +function encodeHTML(data) { + return encodeHTMLTrieRe(htmlReplacer, data); +} +exports.encodeHTML = encodeHTML; +/** + * Encodes all non-ASCII characters, as well as characters not valid in HTML + * documents using HTML entities. This function will not encode characters that + * are valid in HTML documents, such as `#`. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + */ +function encodeNonAsciiHTML(data) { + return encodeHTMLTrieRe(escape_js_1.xmlReplacer, data); +} +exports.encodeNonAsciiHTML = encodeNonAsciiHTML; +function encodeHTMLTrieRe(regExp, str) { + var ret = ""; + var lastIdx = 0; + var match; + while ((match = regExp.exec(str)) !== null) { + var i = match.index; + ret += str.substring(lastIdx, i); + var char = str.charCodeAt(i); + var next = encode_html_js_1.default.get(char); + if (typeof next === "object") { + // We are in a branch. Try to match the next char. + if (i + 1 < str.length) { + var nextChar = str.charCodeAt(i + 1); + var value = typeof next.n === "number" + ? next.n === nextChar + ? next.o + : undefined + : next.n.get(nextChar); + if (value !== undefined) { + ret += value; + lastIdx = regExp.lastIndex += 1; + continue; + } + } + next = next.v; + } + // We might have a tree node without a value; skip and use a numeric entity. + if (next !== undefined) { + ret += next; + lastIdx = i + 1; + } + else { + var cp = (0, escape_js_1.getCodePoint)(str, i); + ret += "&#x".concat(cp.toString(16), ";"); + // Increase by 1 if we have a surrogate pair + lastIdx = regExp.lastIndex += Number(cp !== char); + } + } + return ret + str.substr(lastIdx); +} +//# sourceMappingURL=encode.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/encode.js.map b/node_modules/entities/lib/encode.js.map new file mode 100644 index 0000000..9d47162 --- /dev/null +++ b/node_modules/entities/lib/encode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"encode.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["encode.ts"],"names":[],"mappings":";;;;;;AAAA,8EAAkD;AAClD,yCAAwD;AAExD,IAAM,YAAY,GAAG,qCAAqC,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,SAAgB,UAAU,CAAC,IAAY;IACnC,OAAO,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC;AAFD,gCAEC;AACD;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC3C,OAAO,gBAAgB,CAAC,uBAAW,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAFD,gDAEC;AAED,SAAS,gBAAgB,CAAC,MAAc,EAAE,GAAW;IACjD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,CAAC;IAEV,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;QACxC,IAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QACtB,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjC,IAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI,GAAG,wBAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC1B,kDAAkD;YAClD,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;gBACpB,IAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvC,IAAM,KAAK,GACP,OAAO,IAAI,CAAC,CAAC,KAAK,QAAQ;oBACtB,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,QAAQ;wBACjB,CAAC,CAAC,IAAI,CAAC,CAAC;wBACR,CAAC,CAAC,SAAS;oBACf,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAE/B,IAAI,KAAK,KAAK,SAAS,EAAE;oBACrB,GAAG,IAAI,KAAK,CAAC;oBACb,OAAO,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;oBAChC,SAAS;iBACZ;aACJ;YAED,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;SACjB;QAED,4EAA4E;QAC5E,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,GAAG,IAAI,IAAI,CAAC;YACZ,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;SACnB;aAAM;YACH,IAAM,EAAE,GAAG,IAAA,wBAAY,EAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAChC,GAAG,IAAI,aAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAG,CAAC;YAChC,4CAA4C;YAC5C,OAAO,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;SACrD;KACJ;IAED,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/escape.d.ts b/node_modules/entities/lib/escape.d.ts new file mode 100644 index 0000000..c07ecdc --- /dev/null +++ b/node_modules/entities/lib/escape.d.ts @@ -0,0 +1,43 @@ +export declare const xmlReplacer: RegExp; +export declare const getCodePoint: (str: string, index: number) => number; +/** + * Encodes all non-ASCII characters, as well as characters not valid in XML + * documents using XML entities. + * + * If a character has no equivalent entity, a + * numeric hexadecimal reference (eg. `ü`) will be used. + */ +export declare function encodeXML(str: string): string; +/** + * Encodes all non-ASCII characters, as well as characters not valid in XML + * documents using numeric hexadecimal reference (eg. `ü`). + * + * Have a look at `escapeUTF8` if you want a more concise output at the expense + * of reduced transportability. + * + * @param data String to escape. + */ +export declare const escape: typeof encodeXML; +/** + * Encodes all characters not valid in XML documents using XML entities. + * + * Note that the output will be character-set dependent. + * + * @param data String to escape. + */ +export declare const escapeUTF8: (data: string) => string; +/** + * Encodes all characters that have to be escaped in HTML attributes, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + * + * @param data String to escape. + */ +export declare const escapeAttribute: (data: string) => string; +/** + * Encodes all characters that have to be escaped in HTML text, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + * + * @param data String to escape. + */ +export declare const escapeText: (data: string) => string; +//# sourceMappingURL=escape.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/escape.d.ts.map b/node_modules/entities/lib/escape.d.ts.map new file mode 100644 index 0000000..fa19825 --- /dev/null +++ b/node_modules/entities/lib/escape.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"escape.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["escape.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,QAAyB,CAAC;AAWlD,eAAO,MAAM,YAAY,QAGT,MAAM,SAAS,MAAM,KAAG,MAQD,CAAC;AAExC;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA0B7C;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,kBAAY,CAAC;AAqChC;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,SA7Bb,MAAM,KAAK,MA6BuC,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,eAAe,SArClB,MAAM,KAAK,MA4CpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,SApDb,MAAM,KAAK,MA4DpB,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/escape.js b/node_modules/entities/lib/escape.js new file mode 100644 index 0000000..9f36272 --- /dev/null +++ b/node_modules/entities/lib/escape.js @@ -0,0 +1,122 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.getCodePoint = exports.xmlReplacer = void 0; +exports.xmlReplacer = /["&'<>$\x80-\uFFFF]/g; +var xmlCodeMap = new Map([ + [34, """], + [38, "&"], + [39, "'"], + [60, "<"], + [62, ">"], +]); +// For compatibility with node < 4, we wrap `codePointAt` +exports.getCodePoint = +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition +String.prototype.codePointAt != null + ? function (str, index) { return str.codePointAt(index); } + : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + function (c, index) { + return (c.charCodeAt(index) & 0xfc00) === 0xd800 + ? (c.charCodeAt(index) - 0xd800) * 0x400 + + c.charCodeAt(index + 1) - + 0xdc00 + + 0x10000 + : c.charCodeAt(index); + }; +/** + * Encodes all non-ASCII characters, as well as characters not valid in XML + * documents using XML entities. + * + * If a character has no equivalent entity, a + * numeric hexadecimal reference (eg. `ü`) will be used. + */ +function encodeXML(str) { + var ret = ""; + var lastIdx = 0; + var match; + while ((match = exports.xmlReplacer.exec(str)) !== null) { + var i = match.index; + var char = str.charCodeAt(i); + var next = xmlCodeMap.get(char); + if (next !== undefined) { + ret += str.substring(lastIdx, i) + next; + lastIdx = i + 1; + } + else { + ret += "".concat(str.substring(lastIdx, i), "&#x").concat((0, exports.getCodePoint)(str, i).toString(16), ";"); + // Increase by 1 if we have a surrogate pair + lastIdx = exports.xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800); + } + } + return ret + str.substr(lastIdx); +} +exports.encodeXML = encodeXML; +/** + * Encodes all non-ASCII characters, as well as characters not valid in XML + * documents using numeric hexadecimal reference (eg. `ü`). + * + * Have a look at `escapeUTF8` if you want a more concise output at the expense + * of reduced transportability. + * + * @param data String to escape. + */ +exports.escape = encodeXML; +/** + * Creates a function that escapes all characters matched by the given regular + * expression using the given map of characters to escape to their entities. + * + * @param regex Regular expression to match characters to escape. + * @param map Map of characters to escape to their entities. + * + * @returns Function that escapes all characters matched by the given regular + * expression using the given map of characters to escape to their entities. + */ +function getEscaper(regex, map) { + return function escape(data) { + var match; + var lastIdx = 0; + var result = ""; + while ((match = regex.exec(data))) { + if (lastIdx !== match.index) { + result += data.substring(lastIdx, match.index); + } + // We know that this character will be in the map. + result += map.get(match[0].charCodeAt(0)); + // Every match will be of length 1 + lastIdx = match.index + 1; + } + return result + data.substring(lastIdx); + }; +} +/** + * Encodes all characters not valid in XML documents using XML entities. + * + * Note that the output will be character-set dependent. + * + * @param data String to escape. + */ +exports.escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap); +/** + * Encodes all characters that have to be escaped in HTML attributes, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + * + * @param data String to escape. + */ +exports.escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([ + [34, """], + [38, "&"], + [160, " "], +])); +/** + * Encodes all characters that have to be escaped in HTML text, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + * + * @param data String to escape. + */ +exports.escapeText = getEscaper(/[&<>\u00A0]/g, new Map([ + [38, "&"], + [60, "<"], + [62, ">"], + [160, " "], +])); +//# sourceMappingURL=escape.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/escape.js.map b/node_modules/entities/lib/escape.js.map new file mode 100644 index 0000000..f96d022 --- /dev/null +++ b/node_modules/entities/lib/escape.js.map @@ -0,0 +1 @@ +{"version":3,"file":"escape.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["escape.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,sBAAsB,CAAC;AAElD,IAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACvB,CAAC,EAAE,EAAE,QAAQ,CAAC;IACd,CAAC,EAAE,EAAE,OAAO,CAAC;IACb,CAAC,EAAE,EAAE,QAAQ,CAAC;IACd,CAAC,EAAE,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,yDAAyD;AAC5C,QAAA,YAAY;AACrB,uEAAuE;AACvE,MAAM,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI;IAChC,CAAC,CAAC,UAAC,GAAW,EAAE,KAAa,IAAa,OAAA,GAAG,CAAC,WAAW,CAAC,KAAK,CAAE,EAAvB,CAAuB;IACjE,CAAC,CAAC,uEAAuE;QACvE,UAAC,CAAS,EAAE,KAAa;YACrB,OAAA,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,MAAM;gBACrC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK;oBACtC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;oBACvB,MAAM;oBACN,OAAO;gBACT,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QALzB,CAKyB,CAAC;AAExC;;;;;;GAMG;AACH,SAAgB,SAAS,CAAC,GAAW;IACjC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,CAAC;IAEV,OAAO,CAAC,KAAK,GAAG,mBAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;QAC7C,IAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QACtB,IAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YACxC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;SACnB;aAAM;YACH,GAAG,IAAI,UAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,gBAAM,IAAA,oBAAY,EACjD,GAAG,EACH,CAAC,CACJ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAG,CAAC;YAClB,4CAA4C;YAC5C,OAAO,GAAG,mBAAW,CAAC,SAAS,IAAI,MAAM,CACrC,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,MAAM,CAC7B,CAAC;SACL;KACJ;IAED,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AA1BD,8BA0BC;AAED;;;;;;;;GAQG;AACU,QAAA,MAAM,GAAG,SAAS,CAAC;AAEhC;;;;;;;;;GASG;AACH,SAAS,UAAU,CACf,KAAa,EACb,GAAwB;IAExB,OAAO,SAAS,MAAM,CAAC,IAAY;QAC/B,IAAI,KAAK,CAAC;QACV,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;YAC/B,IAAI,OAAO,KAAK,KAAK,CAAC,KAAK,EAAE;gBACzB,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;aAClD;YAED,kDAAkD;YAClD,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,CAAC;YAE3C,kCAAkC;YAClC,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;SAC7B;QAED,OAAO,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACU,QAAA,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAE7D;;;;;GAKG;AACU,QAAA,eAAe,GAAG,UAAU,CACrC,aAAa,EACb,IAAI,GAAG,CAAC;IACJ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACd,CAAC,EAAE,EAAE,OAAO,CAAC;IACb,CAAC,GAAG,EAAE,QAAQ,CAAC;CAClB,CAAC,CACL,CAAC;AAEF;;;;;GAKG;AACU,QAAA,UAAU,GAAG,UAAU,CAChC,cAAc,EACd,IAAI,GAAG,CAAC;IACJ,CAAC,EAAE,EAAE,OAAO,CAAC;IACb,CAAC,EAAE,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,QAAQ,CAAC;CAClB,CAAC,CACL,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/decode.d.ts b/node_modules/entities/lib/esm/decode.d.ts new file mode 100644 index 0000000..ccfd9fb --- /dev/null +++ b/node_modules/entities/lib/esm/decode.d.ts @@ -0,0 +1,211 @@ +import htmlDecodeTree from "./generated/decode-data-html.js"; +import xmlDecodeTree from "./generated/decode-data-xml.js"; +import decodeCodePoint from "./decode_codepoint.js"; +export { htmlDecodeTree, xmlDecodeTree, decodeCodePoint }; +export { replaceCodePoint, fromCodePoint } from "./decode_codepoint.js"; +export declare enum BinTrieFlags { + VALUE_LENGTH = 49152, + BRANCH_LENGTH = 16256, + JUMP_TABLE = 127 +} +export declare enum DecodingMode { + /** Entities in text nodes that can end with any character. */ + Legacy = 0, + /** Only allow entities terminated with a semicolon. */ + Strict = 1, + /** Entities in attributes have limitations on ending characters. */ + Attribute = 2 +} +/** + * Producers for character reference errors as defined in the HTML spec. + */ +export interface EntityErrorProducer { + missingSemicolonAfterCharacterReference(): void; + absenceOfDigitsInNumericCharacterReference(consumedCharacters: number): void; + validateNumericCharacterReference(code: number): void; +} +/** + * Token decoder with support of writing partial entities. + */ +export declare class EntityDecoder { + /** The tree used to decode entities. */ + private readonly decodeTree; + /** + * The function that is called when a codepoint is decoded. + * + * For multi-byte named entities, this will be called multiple times, + * with the second codepoint, and the same `consumed` value. + * + * @param codepoint The decoded codepoint. + * @param consumed The number of bytes consumed by the decoder. + */ + private readonly emitCodePoint; + /** An object that is used to produce errors. */ + private readonly errors?; + constructor( + /** The tree used to decode entities. */ + decodeTree: Uint16Array, + /** + * The function that is called when a codepoint is decoded. + * + * For multi-byte named entities, this will be called multiple times, + * with the second codepoint, and the same `consumed` value. + * + * @param codepoint The decoded codepoint. + * @param consumed The number of bytes consumed by the decoder. + */ + emitCodePoint: (cp: number, consumed: number) => void, + /** An object that is used to produce errors. */ + errors?: EntityErrorProducer | undefined); + /** The current state of the decoder. */ + private state; + /** Characters that were consumed while parsing an entity. */ + private consumed; + /** + * The result of the entity. + * + * Either the result index of a numeric entity, or the codepoint of a + * numeric entity. + */ + private result; + /** The current index in the decode tree. */ + private treeIndex; + /** The number of characters that were consumed in excess. */ + private excess; + /** The mode in which the decoder is operating. */ + private decodeMode; + /** Resets the instance to make it reusable. */ + startEntity(decodeMode: DecodingMode): void; + /** + * Write an entity to the decoder. This can be called multiple times with partial entities. + * If the entity is incomplete, the decoder will return -1. + * + * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the + * entity is incomplete, and resume when the next string is written. + * + * @param string The string containing the entity (or a continuation of the entity). + * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + write(str: string, offset: number): number; + /** + * Switches between the numeric decimal and hexadecimal states. + * + * Equivalent to the `Numeric character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + private stateNumericStart; + private addToNumericResult; + /** + * Parses a hexadecimal numeric entity. + * + * Equivalent to the `Hexademical character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + private stateNumericHex; + /** + * Parses a decimal numeric entity. + * + * Equivalent to the `Decimal character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + private stateNumericDecimal; + /** + * Validate and emit a numeric entity. + * + * Implements the logic from the `Hexademical character reference start + * state` and `Numeric character reference end state` in the HTML spec. + * + * @param lastCp The last code point of the entity. Used to see if the + * entity was terminated with a semicolon. + * @param expectedLength The minimum number of characters that should be + * consumed. Used to validate that at least one digit + * was consumed. + * @returns The number of characters that were consumed. + */ + private emitNumericEntity; + /** + * Parses a named entity. + * + * Equivalent to the `Named character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + private stateNamedEntity; + /** + * Emit a named entity that was not terminated with a semicolon. + * + * @returns The number of characters consumed. + */ + private emitNotTerminatedNamedEntity; + /** + * Emit a named entity. + * + * @param result The index of the entity in the decode tree. + * @param valueLength The number of bytes in the entity. + * @param consumed The number of characters consumed. + * + * @returns The number of characters consumed. + */ + private emitNamedEntityData; + /** + * Signal to the parser that the end of the input was reached. + * + * Remaining data will be emitted and relevant errors will be produced. + * + * @returns The number of characters consumed. + */ + end(): number; +} +/** + * Determines the branch of the current node that is taken given the current + * character. This function is used to traverse the trie. + * + * @param decodeTree The trie. + * @param current The current node. + * @param nodeIdx The index right after the current node and its value. + * @param char The current character. + * @returns The index of the next node, or -1 if no branch is taken. + */ +export declare function determineBranch(decodeTree: Uint16Array, current: number, nodeIdx: number, char: number): number; +/** + * Decodes an HTML string. + * + * @param str The string to decode. + * @param mode The decoding mode. + * @returns The decoded string. + */ +export declare function decodeHTML(str: string, mode?: DecodingMode): string; +/** + * Decodes an HTML string in an attribute. + * + * @param str The string to decode. + * @returns The decoded string. + */ +export declare function decodeHTMLAttribute(str: string): string; +/** + * Decodes an HTML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ +export declare function decodeHTMLStrict(str: string): string; +/** + * Decodes an XML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ +export declare function decodeXML(str: string): string; +//# sourceMappingURL=decode.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/decode.d.ts.map b/node_modules/entities/lib/esm/decode.d.ts.map new file mode 100644 index 0000000..4c0b4b4 --- /dev/null +++ b/node_modules/entities/lib/esm/decode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"decode.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["decode.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAC7D,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAC3D,OAAO,eAGN,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAoBxE,oBAAY,YAAY;IACpB,YAAY,QAAwB;IACpC,aAAa,QAAwB;IACrC,UAAU,MAAwB;CACrC;AAuCD,oBAAY,YAAY;IACpB,8DAA8D;IAC9D,MAAM,IAAI;IACV,uDAAuD;IACvD,MAAM,IAAI;IACV,oEAAoE;IACpE,SAAS,IAAI;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,uCAAuC,IAAI,IAAI,CAAC;IAChD,0CAA0C,CACtC,kBAAkB,EAAE,MAAM,GAC3B,IAAI,CAAC;IACR,iCAAiC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACzD;AAED;;GAEG;AACH,qBAAa,aAAa;IAElB,wCAAwC;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B;;;;;;;;OAQG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;;IAbxB,wCAAwC;IACvB,UAAU,EAAE,WAAW;IACxC;;;;;;;;OAQG;IACc,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI;IACtE,gDAAgD;IAC/B,MAAM,CAAC,iCAAqB;IAGjD,wCAAwC;IACxC,OAAO,CAAC,KAAK,CAAkC;IAC/C,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAK;IACrB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAK;IAEnB,4CAA4C;IAC5C,OAAO,CAAC,SAAS,CAAK;IACtB,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAK;IACnB,kDAAkD;IAClD,OAAO,CAAC,UAAU,CAAuB;IAEzC,+CAA+C;IAC/C,WAAW,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI;IAS3C;;;;;;;;;;OAUG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IA8B1C;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,kBAAkB;IAe1B;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAkBvB;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;IAsDxB;;;;OAIG;IACH,OAAO,CAAC,4BAA4B;IAYpC;;;;;;;;OAQG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;;;;;OAMG;IACH,GAAG,IAAI,MAAM;CA6BhB;AAoDD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC3B,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACb,MAAM,CAsCR;AAKD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,eAAsB,GAAG,MAAM,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/decode.js b/node_modules/entities/lib/esm/decode.js new file mode 100644 index 0000000..de225ec --- /dev/null +++ b/node_modules/entities/lib/esm/decode.js @@ -0,0 +1,496 @@ +import htmlDecodeTree from "./generated/decode-data-html.js"; +import xmlDecodeTree from "./generated/decode-data-xml.js"; +import decodeCodePoint, { replaceCodePoint, fromCodePoint, } from "./decode_codepoint.js"; +// Re-export for use by eg. htmlparser2 +export { htmlDecodeTree, xmlDecodeTree, decodeCodePoint }; +export { replaceCodePoint, fromCodePoint } from "./decode_codepoint.js"; +var CharCodes; +(function (CharCodes) { + CharCodes[CharCodes["NUM"] = 35] = "NUM"; + CharCodes[CharCodes["SEMI"] = 59] = "SEMI"; + CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS"; + CharCodes[CharCodes["ZERO"] = 48] = "ZERO"; + CharCodes[CharCodes["NINE"] = 57] = "NINE"; + CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A"; + CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F"; + CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X"; + CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z"; + CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A"; + CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F"; + CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z"; +})(CharCodes || (CharCodes = {})); +/** Bit that needs to be set to convert an upper case ASCII character to lower case */ +const TO_LOWER_BIT = 0b100000; +export var BinTrieFlags; +(function (BinTrieFlags) { + BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; + BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; + BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE"; +})(BinTrieFlags || (BinTrieFlags = {})); +function isNumber(code) { + return code >= CharCodes.ZERO && code <= CharCodes.NINE; +} +function isHexadecimalCharacter(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F)); +} +function isAsciiAlphaNumeric(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) || + isNumber(code)); +} +/** + * Checks if the given character is a valid end character for an entity in an attribute. + * + * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error. + * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state + */ +function isEntityInAttributeInvalidEnd(code) { + return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); +} +var EntityDecoderState; +(function (EntityDecoderState) { + EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart"; + EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart"; + EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal"; + EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex"; + EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity"; +})(EntityDecoderState || (EntityDecoderState = {})); +export var DecodingMode; +(function (DecodingMode) { + /** Entities in text nodes that can end with any character. */ + DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy"; + /** Only allow entities terminated with a semicolon. */ + DecodingMode[DecodingMode["Strict"] = 1] = "Strict"; + /** Entities in attributes have limitations on ending characters. */ + DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute"; +})(DecodingMode || (DecodingMode = {})); +/** + * Token decoder with support of writing partial entities. + */ +export class EntityDecoder { + constructor( + /** The tree used to decode entities. */ + decodeTree, + /** + * The function that is called when a codepoint is decoded. + * + * For multi-byte named entities, this will be called multiple times, + * with the second codepoint, and the same `consumed` value. + * + * @param codepoint The decoded codepoint. + * @param consumed The number of bytes consumed by the decoder. + */ + emitCodePoint, + /** An object that is used to produce errors. */ + errors) { + this.decodeTree = decodeTree; + this.emitCodePoint = emitCodePoint; + this.errors = errors; + /** The current state of the decoder. */ + this.state = EntityDecoderState.EntityStart; + /** Characters that were consumed while parsing an entity. */ + this.consumed = 1; + /** + * The result of the entity. + * + * Either the result index of a numeric entity, or the codepoint of a + * numeric entity. + */ + this.result = 0; + /** The current index in the decode tree. */ + this.treeIndex = 0; + /** The number of characters that were consumed in excess. */ + this.excess = 1; + /** The mode in which the decoder is operating. */ + this.decodeMode = DecodingMode.Strict; + } + /** Resets the instance to make it reusable. */ + startEntity(decodeMode) { + this.decodeMode = decodeMode; + this.state = EntityDecoderState.EntityStart; + this.result = 0; + this.treeIndex = 0; + this.excess = 1; + this.consumed = 1; + } + /** + * Write an entity to the decoder. This can be called multiple times with partial entities. + * If the entity is incomplete, the decoder will return -1. + * + * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the + * entity is incomplete, and resume when the next string is written. + * + * @param string The string containing the entity (or a continuation of the entity). + * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + write(str, offset) { + switch (this.state) { + case EntityDecoderState.EntityStart: { + if (str.charCodeAt(offset) === CharCodes.NUM) { + this.state = EntityDecoderState.NumericStart; + this.consumed += 1; + return this.stateNumericStart(str, offset + 1); + } + this.state = EntityDecoderState.NamedEntity; + return this.stateNamedEntity(str, offset); + } + case EntityDecoderState.NumericStart: { + return this.stateNumericStart(str, offset); + } + case EntityDecoderState.NumericDecimal: { + return this.stateNumericDecimal(str, offset); + } + case EntityDecoderState.NumericHex: { + return this.stateNumericHex(str, offset); + } + case EntityDecoderState.NamedEntity: { + return this.stateNamedEntity(str, offset); + } + } + } + /** + * Switches between the numeric decimal and hexadecimal states. + * + * Equivalent to the `Numeric character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNumericStart(str, offset) { + if (offset >= str.length) { + return -1; + } + if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { + this.state = EntityDecoderState.NumericHex; + this.consumed += 1; + return this.stateNumericHex(str, offset + 1); + } + this.state = EntityDecoderState.NumericDecimal; + return this.stateNumericDecimal(str, offset); + } + addToNumericResult(str, start, end, base) { + if (start !== end) { + const digitCount = end - start; + this.result = + this.result * Math.pow(base, digitCount) + + parseInt(str.substr(start, digitCount), base); + this.consumed += digitCount; + } + } + /** + * Parses a hexadecimal numeric entity. + * + * Equivalent to the `Hexademical character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNumericHex(str, offset) { + const startIdx = offset; + while (offset < str.length) { + const char = str.charCodeAt(offset); + if (isNumber(char) || isHexadecimalCharacter(char)) { + offset += 1; + } + else { + this.addToNumericResult(str, startIdx, offset, 16); + return this.emitNumericEntity(char, 3); + } + } + this.addToNumericResult(str, startIdx, offset, 16); + return -1; + } + /** + * Parses a decimal numeric entity. + * + * Equivalent to the `Decimal character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNumericDecimal(str, offset) { + const startIdx = offset; + while (offset < str.length) { + const char = str.charCodeAt(offset); + if (isNumber(char)) { + offset += 1; + } + else { + this.addToNumericResult(str, startIdx, offset, 10); + return this.emitNumericEntity(char, 2); + } + } + this.addToNumericResult(str, startIdx, offset, 10); + return -1; + } + /** + * Validate and emit a numeric entity. + * + * Implements the logic from the `Hexademical character reference start + * state` and `Numeric character reference end state` in the HTML spec. + * + * @param lastCp The last code point of the entity. Used to see if the + * entity was terminated with a semicolon. + * @param expectedLength The minimum number of characters that should be + * consumed. Used to validate that at least one digit + * was consumed. + * @returns The number of characters that were consumed. + */ + emitNumericEntity(lastCp, expectedLength) { + var _a; + // Ensure we consumed at least one digit. + if (this.consumed <= expectedLength) { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + // Figure out if this is a legit end of the entity + if (lastCp === CharCodes.SEMI) { + this.consumed += 1; + } + else if (this.decodeMode === DecodingMode.Strict) { + return 0; + } + this.emitCodePoint(replaceCodePoint(this.result), this.consumed); + if (this.errors) { + if (lastCp !== CharCodes.SEMI) { + this.errors.missingSemicolonAfterCharacterReference(); + } + this.errors.validateNumericCharacterReference(this.result); + } + return this.consumed; + } + /** + * Parses a named entity. + * + * Equivalent to the `Named character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + stateNamedEntity(str, offset) { + const { decodeTree } = this; + let current = decodeTree[this.treeIndex]; + // The mask is the number of bytes of the value, including the current byte. + let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + for (; offset < str.length; offset++, this.excess++) { + const char = str.charCodeAt(offset); + this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); + if (this.treeIndex < 0) { + return this.result === 0 || + // If we are parsing an attribute + (this.decodeMode === DecodingMode.Attribute && + // We shouldn't have consumed any characters after the entity, + (valueLength === 0 || + // And there should be no invalid characters. + isEntityInAttributeInvalidEnd(char))) + ? 0 + : this.emitNotTerminatedNamedEntity(); + } + current = decodeTree[this.treeIndex]; + valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + // If the branch is a value, store it and continue + if (valueLength !== 0) { + // If the entity is terminated by a semicolon, we are done. + if (char === CharCodes.SEMI) { + return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); + } + // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it. + if (this.decodeMode !== DecodingMode.Strict) { + this.result = this.treeIndex; + this.consumed += this.excess; + this.excess = 0; + } + } + } + return -1; + } + /** + * Emit a named entity that was not terminated with a semicolon. + * + * @returns The number of characters consumed. + */ + emitNotTerminatedNamedEntity() { + var _a; + const { result, decodeTree } = this; + const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; + this.emitNamedEntityData(result, valueLength, this.consumed); + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference(); + return this.consumed; + } + /** + * Emit a named entity. + * + * @param result The index of the entity in the decode tree. + * @param valueLength The number of bytes in the entity. + * @param consumed The number of characters consumed. + * + * @returns The number of characters consumed. + */ + emitNamedEntityData(result, valueLength, consumed) { + const { decodeTree } = this; + this.emitCodePoint(valueLength === 1 + ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH + : decodeTree[result + 1], consumed); + if (valueLength === 3) { + // For multi-byte values, we need to emit the second byte. + this.emitCodePoint(decodeTree[result + 2], consumed); + } + return consumed; + } + /** + * Signal to the parser that the end of the input was reached. + * + * Remaining data will be emitted and relevant errors will be produced. + * + * @returns The number of characters consumed. + */ + end() { + var _a; + switch (this.state) { + case EntityDecoderState.NamedEntity: { + // Emit a named entity if we have one. + return this.result !== 0 && + (this.decodeMode !== DecodingMode.Attribute || + this.result === this.treeIndex) + ? this.emitNotTerminatedNamedEntity() + : 0; + } + // Otherwise, emit a numeric entity if we have one. + case EntityDecoderState.NumericDecimal: { + return this.emitNumericEntity(0, 2); + } + case EntityDecoderState.NumericHex: { + return this.emitNumericEntity(0, 3); + } + case EntityDecoderState.NumericStart: { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + case EntityDecoderState.EntityStart: { + // Return 0 if we have no entity. + return 0; + } + } + } +} +/** + * Creates a function that decodes entities in a string. + * + * @param decodeTree The decode tree. + * @returns A function that decodes entities in a string. + */ +function getDecoder(decodeTree) { + let ret = ""; + const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str))); + return function decodeWithTrie(str, decodeMode) { + let lastIndex = 0; + let offset = 0; + while ((offset = str.indexOf("&", offset)) >= 0) { + ret += str.slice(lastIndex, offset); + decoder.startEntity(decodeMode); + const len = decoder.write(str, + // Skip the "&" + offset + 1); + if (len < 0) { + lastIndex = offset + decoder.end(); + break; + } + lastIndex = offset + len; + // If `len` is 0, skip the current `&` and continue. + offset = len === 0 ? lastIndex + 1 : lastIndex; + } + const result = ret + str.slice(lastIndex); + // Make sure we don't keep a reference to the final string. + ret = ""; + return result; + }; +} +/** + * Determines the branch of the current node that is taken given the current + * character. This function is used to traverse the trie. + * + * @param decodeTree The trie. + * @param current The current node. + * @param nodeIdx The index right after the current node and its value. + * @param char The current character. + * @returns The index of the next node, or -1 if no branch is taken. + */ +export function determineBranch(decodeTree, current, nodeIdx, char) { + const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; + const jumpOffset = current & BinTrieFlags.JUMP_TABLE; + // Case 1: Single branch encoded in jump offset + if (branchCount === 0) { + return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; + } + // Case 2: Multiple branches encoded in jump table + if (jumpOffset) { + const value = char - jumpOffset; + return value < 0 || value >= branchCount + ? -1 + : decodeTree[nodeIdx + value] - 1; + } + // Case 3: Multiple branches encoded in dictionary + // Binary search for the character. + let lo = nodeIdx; + let hi = lo + branchCount - 1; + while (lo <= hi) { + const mid = (lo + hi) >>> 1; + const midVal = decodeTree[mid]; + if (midVal < char) { + lo = mid + 1; + } + else if (midVal > char) { + hi = mid - 1; + } + else { + return decodeTree[mid + branchCount]; + } + } + return -1; +} +const htmlDecoder = getDecoder(htmlDecodeTree); +const xmlDecoder = getDecoder(xmlDecodeTree); +/** + * Decodes an HTML string. + * + * @param str The string to decode. + * @param mode The decoding mode. + * @returns The decoded string. + */ +export function decodeHTML(str, mode = DecodingMode.Legacy) { + return htmlDecoder(str, mode); +} +/** + * Decodes an HTML string in an attribute. + * + * @param str The string to decode. + * @returns The decoded string. + */ +export function decodeHTMLAttribute(str) { + return htmlDecoder(str, DecodingMode.Attribute); +} +/** + * Decodes an HTML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ +export function decodeHTMLStrict(str) { + return htmlDecoder(str, DecodingMode.Strict); +} +/** + * Decodes an XML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ +export function decodeXML(str) { + return xmlDecoder(str, DecodingMode.Strict); +} +//# sourceMappingURL=decode.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/decode.js.map b/node_modules/entities/lib/esm/decode.js.map new file mode 100644 index 0000000..2db1510 --- /dev/null +++ b/node_modules/entities/lib/esm/decode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"decode.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["decode.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAC7D,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAC3D,OAAO,eAAe,EAAE,EACpB,gBAAgB,EAChB,aAAa,GAChB,MAAM,uBAAuB,CAAC;AAE/B,uCAAuC;AACvC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAExE,IAAW,SAaV;AAbD,WAAW,SAAS;IAChB,wCAAQ,CAAA;IACR,0CAAS,CAAA;IACT,8CAAW,CAAA;IACX,0CAAS,CAAA;IACT,0CAAS,CAAA;IACT,gDAAY,CAAA;IACZ,iDAAa,CAAA;IACb,iDAAa,CAAA;IACb,iDAAa,CAAA;IACb,gDAAY,CAAA;IACZ,gDAAY,CAAA;IACZ,gDAAY,CAAA;AAChB,CAAC,EAbU,SAAS,KAAT,SAAS,QAanB;AAED,sFAAsF;AACtF,MAAM,YAAY,GAAG,QAAQ,CAAC;AAE9B,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACpB,mEAAoC,CAAA;IACpC,qEAAqC,CAAA;IACrC,6DAAkC,CAAA;AACtC,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAED,SAAS,QAAQ,CAAC,IAAY;IAC1B,OAAO,IAAI,IAAI,SAAS,CAAC,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IACxC,OAAO,CACH,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,IAAI,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC;QACxD,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,IAAI,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,CAC3D,CAAC;AACN,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACrC,OAAO,CACH,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,IAAI,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC;QACxD,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,IAAI,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,CACjB,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAS,6BAA6B,CAAC,IAAY;IAC/C,OAAO,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,IAAW,kBAMV;AAND,WAAW,kBAAkB;IACzB,yEAAW,CAAA;IACX,2EAAY,CAAA;IACZ,+EAAc,CAAA;IACd,uEAAU,CAAA;IACV,yEAAW,CAAA;AACf,CAAC,EANU,kBAAkB,KAAlB,kBAAkB,QAM5B;AAED,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACpB,8DAA8D;IAC9D,mDAAU,CAAA;IACV,uDAAuD;IACvD,mDAAU,CAAA;IACV,oEAAoE;IACpE,yDAAa,CAAA;AACjB,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB;AAaD;;GAEG;AACH,MAAM,OAAO,aAAa;IACtB;IACI,wCAAwC;IACvB,UAAuB;IACxC;;;;;;;;OAQG;IACc,aAAqD;IACtE,gDAAgD;IAC/B,MAA4B;QAZ5B,eAAU,GAAV,UAAU,CAAa;QAUvB,kBAAa,GAAb,aAAa,CAAwC;QAErD,WAAM,GAAN,MAAM,CAAsB;QAGjD,wCAAwC;QAChC,UAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC;QAC/C,6DAA6D;QACrD,aAAQ,GAAG,CAAC,CAAC;QACrB;;;;;WAKG;QACK,WAAM,GAAG,CAAC,CAAC;QAEnB,4CAA4C;QACpC,cAAS,GAAG,CAAC,CAAC;QACtB,6DAA6D;QACrD,WAAM,GAAG,CAAC,CAAC;QACnB,kDAAkD;QAC1C,eAAU,GAAG,YAAY,CAAC,MAAM,CAAC;IAnBtC,CAAC;IAqBJ,+CAA+C;IAC/C,WAAW,CAAC,UAAwB;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,GAAW,EAAE,MAAc;QAC7B,QAAQ,IAAI,CAAC,KAAK,EAAE;YAChB,KAAK,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBACjC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,GAAG,EAAE;oBAC1C,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,YAAY,CAAC;oBAC7C,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;oBACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;iBAClD;gBACD,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC;gBAC5C,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aAC7C;YAED,KAAK,kBAAkB,CAAC,YAAY,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aAC9C;YAED,KAAK,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBACpC,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aAChD;YAED,KAAK,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAChC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aAC5C;YAED,KAAK,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;aAC7C;SACJ;IACL,CAAC;IAED;;;;;;;;OAQG;IACK,iBAAiB,CAAC,GAAW,EAAE,MAAc;QACjD,IAAI,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;YACtB,OAAO,CAAC,CAAC,CAAC;SACb;QAED,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,SAAS,CAAC,OAAO,EAAE;YAC/D,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC;YAC3C,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;SAChD;QAED,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,cAAc,CAAC;QAC/C,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAEO,kBAAkB,CACtB,GAAW,EACX,KAAa,EACb,GAAW,EACX,IAAY;QAEZ,IAAI,KAAK,KAAK,GAAG,EAAE;YACf,MAAM,UAAU,GAAG,GAAG,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,MAAM;gBACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;oBACxC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC;SAC/B;IACL,CAAC;IAED;;;;;;;;OAQG;IACK,eAAe,CAAC,GAAW,EAAE,MAAc;QAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC;QAExB,OAAO,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;YACxB,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE;gBAChD,MAAM,IAAI,CAAC,CAAC;aACf;iBAAM;gBACH,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;gBACnD,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aAC1C;SACJ;QAED,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAEnD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACK,mBAAmB,CAAC,GAAW,EAAE,MAAc;QACnD,MAAM,QAAQ,GAAG,MAAM,CAAC;QAExB,OAAO,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;YACxB,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAChB,MAAM,IAAI,CAAC,CAAC;aACf;iBAAM;gBACH,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;gBACnD,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aAC1C;SACJ;QAED,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAEnD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,iBAAiB,CAAC,MAAc,EAAE,cAAsB;;QAC5D,yCAAyC;QACzC,IAAI,IAAI,CAAC,QAAQ,IAAI,cAAc,EAAE;YACjC,MAAA,IAAI,CAAC,MAAM,0CAAE,0CAA0C,CACnD,IAAI,CAAC,QAAQ,CAChB,CAAC;YACF,OAAO,CAAC,CAAC;SACZ;QAED,kDAAkD;QAClD,IAAI,MAAM,KAAK,SAAS,CAAC,IAAI,EAAE;YAC3B,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;SACtB;aAAM,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY,CAAC,MAAM,EAAE;YAChD,OAAO,CAAC,CAAC;SACZ;QAED,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjE,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,MAAM,KAAK,SAAS,CAAC,IAAI,EAAE;gBAC3B,IAAI,CAAC,MAAM,CAAC,uCAAuC,EAAE,CAAC;aACzD;YAED,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC9D;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;;;;;OAQG;IACK,gBAAgB,CAAC,GAAW,EAAE,MAAc;QAChD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC5B,IAAI,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,4EAA4E;QAC5E,IAAI,WAAW,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAE9D,OAAO,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAEpC,IAAI,CAAC,SAAS,GAAG,eAAe,CAC5B,UAAU,EACV,OAAO,EACP,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,EACzC,IAAI,CACP,CAAC;YAEF,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;gBACpB,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC;oBACpB,iCAAiC;oBACjC,CAAC,IAAI,CAAC,UAAU,KAAK,YAAY,CAAC,SAAS;wBACvC,8DAA8D;wBAC9D,CAAC,WAAW,KAAK,CAAC;4BACd,6CAA6C;4BAC7C,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC7C,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC;aAC7C;YAED,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,WAAW,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAE1D,kDAAkD;YAClD,IAAI,WAAW,KAAK,CAAC,EAAE;gBACnB,2DAA2D;gBAC3D,IAAI,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;oBACzB,OAAO,IAAI,CAAC,mBAAmB,CAC3B,IAAI,CAAC,SAAS,EACd,WAAW,EACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAC9B,CAAC;iBACL;gBAED,2FAA2F;gBAC3F,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY,CAAC,MAAM,EAAE;oBACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC7B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC;oBAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;iBACnB;aACJ;SACJ;QAED,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED;;;;OAIG;IACK,4BAA4B;;QAChC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAEpC,MAAM,WAAW,GACb,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAE3D,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAA,IAAI,CAAC,MAAM,0CAAE,uCAAuC,EAAE,CAAC;QAEvD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;;;;;OAQG;IACK,mBAAmB,CACvB,MAAc,EACd,WAAmB,EACnB,QAAgB;QAEhB,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAE5B,IAAI,CAAC,aAAa,CACd,WAAW,KAAK,CAAC;YACb,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY;YACjD,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAC5B,QAAQ,CACX,CAAC;QACF,IAAI,WAAW,KAAK,CAAC,EAAE;YACnB,0DAA0D;YAC1D,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;SACxD;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,GAAG;;QACC,QAAQ,IAAI,CAAC,KAAK,EAAE;YAChB,KAAK,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBACjC,sCAAsC;gBACtC,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC;oBACpB,CAAC,IAAI,CAAC,UAAU,KAAK,YAAY,CAAC,SAAS;wBACvC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC;oBACnC,CAAC,CAAC,IAAI,CAAC,4BAA4B,EAAE;oBACrC,CAAC,CAAC,CAAC,CAAC;aACX;YACD,mDAAmD;YACnD,KAAK,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACvC;YACD,KAAK,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAChC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACvC;YACD,KAAK,kBAAkB,CAAC,YAAY,CAAC,CAAC;gBAClC,MAAA,IAAI,CAAC,MAAM,0CAAE,0CAA0C,CACnD,IAAI,CAAC,QAAQ,CAChB,CAAC;gBACF,OAAO,CAAC,CAAC;aACZ;YACD,KAAK,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBACjC,iCAAiC;gBACjC,OAAO,CAAC,CAAC;aACZ;SACJ;IACL,CAAC;CACJ;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,UAAuB;IACvC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,MAAM,OAAO,GAAG,IAAI,aAAa,CAC7B,UAAU,EACV,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CACvC,CAAC;IAEF,OAAO,SAAS,cAAc,CAC1B,GAAW,EACX,UAAwB;QAExB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE;YAC7C,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAEpC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAEhC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CACrB,GAAG;YACH,eAAe;YACf,MAAM,GAAG,CAAC,CACb,CAAC;YAEF,IAAI,GAAG,GAAG,CAAC,EAAE;gBACT,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;gBACnC,MAAM;aACT;YAED,SAAS,GAAG,MAAM,GAAG,GAAG,CAAC;YACzB,oDAAoD;YACpD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;SAClD;QAED,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE1C,2DAA2D;QAC3D,GAAG,GAAG,EAAE,CAAC;QAET,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC3B,UAAuB,EACvB,OAAe,EACf,OAAe,EACf,IAAY;IAEZ,MAAM,WAAW,GAAG,CAAC,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC;IAErD,+CAA+C;IAC/C,IAAI,WAAW,KAAK,CAAC,EAAE;QACnB,OAAO,UAAU,KAAK,CAAC,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACjE;IAED,kDAAkD;IAClD,IAAI,UAAU,EAAE;QACZ,MAAM,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC;QAEhC,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,WAAW;YACpC,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;KACzC;IAED,kDAAkD;IAElD,mCAAmC;IACnC,IAAI,EAAE,GAAG,OAAO,CAAC;IACjB,IAAI,EAAE,GAAG,EAAE,GAAG,WAAW,GAAG,CAAC,CAAC;IAE9B,OAAO,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,MAAM,GAAG,IAAI,EAAE;YACf,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;SAChB;aAAM,IAAI,MAAM,GAAG,IAAI,EAAE;YACtB,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;SAChB;aAAM;YACH,OAAO,UAAU,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC;SACxC;KACJ;IAED,OAAO,CAAC,CAAC,CAAC;AACd,CAAC;AAED,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;AAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,IAAI,GAAG,YAAY,CAAC,MAAM;IAC9D,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC3C,OAAO,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IACxC,OAAO,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACjC,OAAO,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/decode_codepoint.d.ts b/node_modules/entities/lib/esm/decode_codepoint.d.ts new file mode 100644 index 0000000..84ae206 --- /dev/null +++ b/node_modules/entities/lib/esm/decode_codepoint.d.ts @@ -0,0 +1,19 @@ +/** + * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point. + */ +export declare const fromCodePoint: (...codePoints: number[]) => string; +/** + * Replace the given code point with a replacement character if it is a + * surrogate or is outside the valid range. Otherwise return the code + * point unchanged. + */ +export declare function replaceCodePoint(codePoint: number): number; +/** + * Replace the code point if relevant, then convert it to a string. + * + * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead. + * @param codePoint The code point to decode. + * @returns The decoded code point. + */ +export default function decodeCodePoint(codePoint: number): string; +//# sourceMappingURL=decode_codepoint.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/decode_codepoint.d.ts.map b/node_modules/entities/lib/esm/decode_codepoint.d.ts.map new file mode 100644 index 0000000..38a8dea --- /dev/null +++ b/node_modules/entities/lib/esm/decode_codepoint.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"decode_codepoint.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["decode_codepoint.ts"],"names":[],"mappings":"AAkCA;;GAEG;AACH,eAAO,MAAM,aAAa,qCAgBrB,CAAC;AAEN;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,UAMjD;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjE"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/decode_codepoint.js b/node_modules/entities/lib/esm/decode_codepoint.js new file mode 100644 index 0000000..4d8281e --- /dev/null +++ b/node_modules/entities/lib/esm/decode_codepoint.js @@ -0,0 +1,71 @@ +// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134 +var _a; +const decodeMap = new Map([ + [0, 65533], + // C1 Unicode control character reference replacements + [128, 8364], + [130, 8218], + [131, 402], + [132, 8222], + [133, 8230], + [134, 8224], + [135, 8225], + [136, 710], + [137, 8240], + [138, 352], + [139, 8249], + [140, 338], + [142, 381], + [145, 8216], + [146, 8217], + [147, 8220], + [148, 8221], + [149, 8226], + [150, 8211], + [151, 8212], + [152, 732], + [153, 8482], + [154, 353], + [155, 8250], + [156, 339], + [158, 382], + [159, 376], +]); +/** + * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point. + */ +export const fromCodePoint = +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins +(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) { + let output = ""; + if (codePoint > 0xffff) { + codePoint -= 0x10000; + output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800); + codePoint = 0xdc00 | (codePoint & 0x3ff); + } + output += String.fromCharCode(codePoint); + return output; +}; +/** + * Replace the given code point with a replacement character if it is a + * surrogate or is outside the valid range. Otherwise return the code + * point unchanged. + */ +export function replaceCodePoint(codePoint) { + var _a; + if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) { + return 0xfffd; + } + return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint; +} +/** + * Replace the code point if relevant, then convert it to a string. + * + * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead. + * @param codePoint The code point to decode. + * @returns The decoded code point. + */ +export default function decodeCodePoint(codePoint) { + return fromCodePoint(replaceCodePoint(codePoint)); +} +//# sourceMappingURL=decode_codepoint.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/decode_codepoint.js.map b/node_modules/entities/lib/esm/decode_codepoint.js.map new file mode 100644 index 0000000..53a32b6 --- /dev/null +++ b/node_modules/entities/lib/esm/decode_codepoint.js.map @@ -0,0 +1 @@ +{"version":3,"file":"decode_codepoint.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["decode_codepoint.ts"],"names":[],"mappings":"AAAA,qHAAqH;;AAErH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACtB,CAAC,CAAC,EAAE,KAAK,CAAC;IACV,sDAAsD;IACtD,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,GAAG,CAAC;CACb,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa;AACtB,iHAAiH;AACjH,MAAA,MAAM,CAAC,aAAa,mCACpB,UAAU,SAAiB;IACvB,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,SAAS,GAAG,MAAM,EAAE;QACpB,SAAS,IAAI,OAAO,CAAC;QACrB,MAAM,IAAI,MAAM,CAAC,YAAY,CACzB,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CACxC,CAAC;QACF,SAAS,GAAG,MAAM,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;KAC5C;IAED,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEN;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;;IAC9C,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,SAAS,GAAG,QAAQ,EAAE;QACtE,OAAO,MAAM,CAAC;KACjB;IAED,OAAO,MAAA,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,mCAAI,SAAS,CAAC;AACjD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,SAAiB;IACrD,OAAO,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AACtD,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/encode.d.ts b/node_modules/entities/lib/esm/encode.d.ts new file mode 100644 index 0000000..f09c4ee --- /dev/null +++ b/node_modules/entities/lib/esm/encode.d.ts @@ -0,0 +1,22 @@ +/** + * Encodes all characters in the input using HTML entities. This includes + * characters that are valid ASCII characters in HTML documents, such as `#`. + * + * To get a more compact output, consider using the `encodeNonAsciiHTML` + * function, which will only encode characters that are not valid in HTML + * documents, as well as non-ASCII characters. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + */ +export declare function encodeHTML(data: string): string; +/** + * Encodes all non-ASCII characters, as well as characters not valid in HTML + * documents using HTML entities. This function will not encode characters that + * are valid in HTML documents, such as `#`. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + */ +export declare function encodeNonAsciiHTML(data: string): string; +//# sourceMappingURL=encode.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/encode.d.ts.map b/node_modules/entities/lib/esm/encode.d.ts.map new file mode 100644 index 0000000..e24c05b --- /dev/null +++ b/node_modules/entities/lib/esm/encode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"encode.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["encode.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AACD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/encode.js b/node_modules/entities/lib/esm/encode.js new file mode 100644 index 0000000..9c2364f --- /dev/null +++ b/node_modules/entities/lib/esm/encode.js @@ -0,0 +1,69 @@ +import htmlTrie from "./generated/encode-html.js"; +import { xmlReplacer, getCodePoint } from "./escape.js"; +const htmlReplacer = /[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g; +/** + * Encodes all characters in the input using HTML entities. This includes + * characters that are valid ASCII characters in HTML documents, such as `#`. + * + * To get a more compact output, consider using the `encodeNonAsciiHTML` + * function, which will only encode characters that are not valid in HTML + * documents, as well as non-ASCII characters. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + */ +export function encodeHTML(data) { + return encodeHTMLTrieRe(htmlReplacer, data); +} +/** + * Encodes all non-ASCII characters, as well as characters not valid in HTML + * documents using HTML entities. This function will not encode characters that + * are valid in HTML documents, such as `#`. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + */ +export function encodeNonAsciiHTML(data) { + return encodeHTMLTrieRe(xmlReplacer, data); +} +function encodeHTMLTrieRe(regExp, str) { + let ret = ""; + let lastIdx = 0; + let match; + while ((match = regExp.exec(str)) !== null) { + const i = match.index; + ret += str.substring(lastIdx, i); + const char = str.charCodeAt(i); + let next = htmlTrie.get(char); + if (typeof next === "object") { + // We are in a branch. Try to match the next char. + if (i + 1 < str.length) { + const nextChar = str.charCodeAt(i + 1); + const value = typeof next.n === "number" + ? next.n === nextChar + ? next.o + : undefined + : next.n.get(nextChar); + if (value !== undefined) { + ret += value; + lastIdx = regExp.lastIndex += 1; + continue; + } + } + next = next.v; + } + // We might have a tree node without a value; skip and use a numeric entity. + if (next !== undefined) { + ret += next; + lastIdx = i + 1; + } + else { + const cp = getCodePoint(str, i); + ret += `&#x${cp.toString(16)};`; + // Increase by 1 if we have a surrogate pair + lastIdx = regExp.lastIndex += Number(cp !== char); + } + } + return ret + str.substr(lastIdx); +} +//# sourceMappingURL=encode.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/encode.js.map b/node_modules/entities/lib/esm/encode.js.map new file mode 100644 index 0000000..14ac068 --- /dev/null +++ b/node_modules/entities/lib/esm/encode.js.map @@ -0,0 +1 @@ +{"version":3,"file":"encode.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["encode.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,YAAY,GAAG,qCAAqC,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACnC,OAAO,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC;AACD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC3C,OAAO,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc,EAAE,GAAW;IACjD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,CAAC;IAEV,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;QACxC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QACtB,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC1B,kDAAkD;YAClD,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;gBACpB,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvC,MAAM,KAAK,GACP,OAAO,IAAI,CAAC,CAAC,KAAK,QAAQ;oBACtB,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,QAAQ;wBACjB,CAAC,CAAC,IAAI,CAAC,CAAC;wBACR,CAAC,CAAC,SAAS;oBACf,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAE/B,IAAI,KAAK,KAAK,SAAS,EAAE;oBACrB,GAAG,IAAI,KAAK,CAAC;oBACb,OAAO,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;oBAChC,SAAS;iBACZ;aACJ;YAED,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;SACjB;QAED,4EAA4E;QAC5E,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,GAAG,IAAI,IAAI,CAAC;YACZ,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;SACnB;aAAM;YACH,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAChC,GAAG,IAAI,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;YAChC,4CAA4C;YAC5C,OAAO,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;SACrD;KACJ;IAED,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/escape.d.ts b/node_modules/entities/lib/esm/escape.d.ts new file mode 100644 index 0000000..c07ecdc --- /dev/null +++ b/node_modules/entities/lib/esm/escape.d.ts @@ -0,0 +1,43 @@ +export declare const xmlReplacer: RegExp; +export declare const getCodePoint: (str: string, index: number) => number; +/** + * Encodes all non-ASCII characters, as well as characters not valid in XML + * documents using XML entities. + * + * If a character has no equivalent entity, a + * numeric hexadecimal reference (eg. `ü`) will be used. + */ +export declare function encodeXML(str: string): string; +/** + * Encodes all non-ASCII characters, as well as characters not valid in XML + * documents using numeric hexadecimal reference (eg. `ü`). + * + * Have a look at `escapeUTF8` if you want a more concise output at the expense + * of reduced transportability. + * + * @param data String to escape. + */ +export declare const escape: typeof encodeXML; +/** + * Encodes all characters not valid in XML documents using XML entities. + * + * Note that the output will be character-set dependent. + * + * @param data String to escape. + */ +export declare const escapeUTF8: (data: string) => string; +/** + * Encodes all characters that have to be escaped in HTML attributes, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + * + * @param data String to escape. + */ +export declare const escapeAttribute: (data: string) => string; +/** + * Encodes all characters that have to be escaped in HTML text, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + * + * @param data String to escape. + */ +export declare const escapeText: (data: string) => string; +//# sourceMappingURL=escape.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/escape.d.ts.map b/node_modules/entities/lib/esm/escape.d.ts.map new file mode 100644 index 0000000..fa19825 --- /dev/null +++ b/node_modules/entities/lib/esm/escape.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"escape.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["escape.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,QAAyB,CAAC;AAWlD,eAAO,MAAM,YAAY,QAGT,MAAM,SAAS,MAAM,KAAG,MAQD,CAAC;AAExC;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA0B7C;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,kBAAY,CAAC;AAqChC;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,SA7Bb,MAAM,KAAK,MA6BuC,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,eAAe,SArClB,MAAM,KAAK,MA4CpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,SApDb,MAAM,KAAK,MA4DpB,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/escape.js b/node_modules/entities/lib/esm/escape.js new file mode 100644 index 0000000..c64da6e --- /dev/null +++ b/node_modules/entities/lib/esm/escape.js @@ -0,0 +1,116 @@ +export const xmlReplacer = /["&'<>$\x80-\uFFFF]/g; +const xmlCodeMap = new Map([ + [34, """], + [38, "&"], + [39, "'"], + [60, "<"], + [62, ">"], +]); +// For compatibility with node < 4, we wrap `codePointAt` +export const getCodePoint = +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition +String.prototype.codePointAt != null + ? (str, index) => str.codePointAt(index) + : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800 + ? (c.charCodeAt(index) - 0xd800) * 0x400 + + c.charCodeAt(index + 1) - + 0xdc00 + + 0x10000 + : c.charCodeAt(index); +/** + * Encodes all non-ASCII characters, as well as characters not valid in XML + * documents using XML entities. + * + * If a character has no equivalent entity, a + * numeric hexadecimal reference (eg. `ü`) will be used. + */ +export function encodeXML(str) { + let ret = ""; + let lastIdx = 0; + let match; + while ((match = xmlReplacer.exec(str)) !== null) { + const i = match.index; + const char = str.charCodeAt(i); + const next = xmlCodeMap.get(char); + if (next !== undefined) { + ret += str.substring(lastIdx, i) + next; + lastIdx = i + 1; + } + else { + ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`; + // Increase by 1 if we have a surrogate pair + lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800); + } + } + return ret + str.substr(lastIdx); +} +/** + * Encodes all non-ASCII characters, as well as characters not valid in XML + * documents using numeric hexadecimal reference (eg. `ü`). + * + * Have a look at `escapeUTF8` if you want a more concise output at the expense + * of reduced transportability. + * + * @param data String to escape. + */ +export const escape = encodeXML; +/** + * Creates a function that escapes all characters matched by the given regular + * expression using the given map of characters to escape to their entities. + * + * @param regex Regular expression to match characters to escape. + * @param map Map of characters to escape to their entities. + * + * @returns Function that escapes all characters matched by the given regular + * expression using the given map of characters to escape to their entities. + */ +function getEscaper(regex, map) { + return function escape(data) { + let match; + let lastIdx = 0; + let result = ""; + while ((match = regex.exec(data))) { + if (lastIdx !== match.index) { + result += data.substring(lastIdx, match.index); + } + // We know that this character will be in the map. + result += map.get(match[0].charCodeAt(0)); + // Every match will be of length 1 + lastIdx = match.index + 1; + } + return result + data.substring(lastIdx); + }; +} +/** + * Encodes all characters not valid in XML documents using XML entities. + * + * Note that the output will be character-set dependent. + * + * @param data String to escape. + */ +export const escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap); +/** + * Encodes all characters that have to be escaped in HTML attributes, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + * + * @param data String to escape. + */ +export const escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([ + [34, """], + [38, "&"], + [160, " "], +])); +/** + * Encodes all characters that have to be escaped in HTML text, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + * + * @param data String to escape. + */ +export const escapeText = getEscaper(/[&<>\u00A0]/g, new Map([ + [38, "&"], + [60, "<"], + [62, ">"], + [160, " "], +])); +//# sourceMappingURL=escape.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/escape.js.map b/node_modules/entities/lib/esm/escape.js.map new file mode 100644 index 0000000..164301c --- /dev/null +++ b/node_modules/entities/lib/esm/escape.js.map @@ -0,0 +1 @@ +{"version":3,"file":"escape.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["escape.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAElD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACvB,CAAC,EAAE,EAAE,QAAQ,CAAC;IACd,CAAC,EAAE,EAAE,OAAO,CAAC;IACb,CAAC,EAAE,EAAE,QAAQ,CAAC;IACd,CAAC,EAAE,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,yDAAyD;AACzD,MAAM,CAAC,MAAM,YAAY;AACrB,uEAAuE;AACvE,MAAM,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI;IAChC,CAAC,CAAC,CAAC,GAAW,EAAE,KAAa,EAAU,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAE;IACjE,CAAC,CAAC,uEAAuE;QACvE,CAAC,CAAS,EAAE,KAAa,EAAU,EAAE,CACjC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,MAAM;YACrC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK;gBACtC,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;gBACvB,MAAM;gBACN,OAAO;YACT,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACjC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,CAAC;IAEV,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;QAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QACtB,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;YACxC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;SACnB;aAAM;YACH,GAAG,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,YAAY,CACjD,GAAG,EACH,CAAC,CACJ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;YAClB,4CAA4C;YAC5C,OAAO,GAAG,WAAW,CAAC,SAAS,IAAI,MAAM,CACrC,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,MAAM,CAC7B,CAAC;SACL;KACJ;IAED,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC;AAEhC;;;;;;;;;GASG;AACH,SAAS,UAAU,CACf,KAAa,EACb,GAAwB;IAExB,OAAO,SAAS,MAAM,CAAC,IAAY;QAC/B,IAAI,KAAK,CAAC;QACV,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;YAC/B,IAAI,OAAO,KAAK,KAAK,CAAC,KAAK,EAAE;gBACzB,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;aAClD;YAED,kDAAkD;YAClD,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,CAAC;YAE3C,kCAAkC;YAClC,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;SAC7B;QAED,OAAO,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CACrC,aAAa,EACb,IAAI,GAAG,CAAC;IACJ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACd,CAAC,EAAE,EAAE,OAAO,CAAC;IACb,CAAC,GAAG,EAAE,QAAQ,CAAC;CAClB,CAAC,CACL,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAChC,cAAc,EACd,IAAI,GAAG,CAAC;IACJ,CAAC,EAAE,EAAE,OAAO,CAAC;IACb,CAAC,EAAE,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,QAAQ,CAAC;CAClB,CAAC,CACL,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/generated/decode-data-html.d.ts b/node_modules/entities/lib/esm/generated/decode-data-html.d.ts new file mode 100644 index 0000000..9cfc4f4 --- /dev/null +++ b/node_modules/entities/lib/esm/generated/decode-data-html.d.ts @@ -0,0 +1,3 @@ +declare const _default: Uint16Array; +export default _default; +//# sourceMappingURL=decode-data-html.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map b/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map new file mode 100644 index 0000000..6d4d64b --- /dev/null +++ b/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"decode-data-html.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["generated/decode-data-html.ts"],"names":[],"mappings":";AAEA,wBAKE"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/generated/decode-data-html.js b/node_modules/entities/lib/esm/generated/decode-data-html.js new file mode 100644 index 0000000..0791b55 --- /dev/null +++ b/node_modules/entities/lib/esm/generated/decode-data-html.js @@ -0,0 +1,7 @@ +// Generated using scripts/write-decode-map.ts +export default new Uint16Array( +// prettier-ignore +"\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c" + .split("") + .map((c) => c.charCodeAt(0))); +//# sourceMappingURL=decode-data-html.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/generated/decode-data-html.js.map b/node_modules/entities/lib/esm/generated/decode-data-html.js.map new file mode 100644 index 0000000..c4b1e6b --- /dev/null +++ b/node_modules/entities/lib/esm/generated/decode-data-html.js.map @@ -0,0 +1 @@ +{"version":3,"file":"decode-data-html.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["generated/decode-data-html.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAE9C,eAAe,IAAI,WAAW;AAC1B,kBAAkB;AAClB,268CAA268C;KACt68C,KAAK,CAAC,EAAE,CAAC;KACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CACnC,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts b/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts new file mode 100644 index 0000000..4a3f533 --- /dev/null +++ b/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts @@ -0,0 +1,3 @@ +declare const _default: Uint16Array; +export default _default; +//# sourceMappingURL=decode-data-xml.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map b/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map new file mode 100644 index 0000000..be2a9a2 --- /dev/null +++ b/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"decode-data-xml.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["generated/decode-data-xml.ts"],"names":[],"mappings":";AAEA,wBAKE"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/generated/decode-data-xml.js b/node_modules/entities/lib/esm/generated/decode-data-xml.js new file mode 100644 index 0000000..b01dec7 --- /dev/null +++ b/node_modules/entities/lib/esm/generated/decode-data-xml.js @@ -0,0 +1,7 @@ +// Generated using scripts/write-decode-map.ts +export default new Uint16Array( +// prettier-ignore +"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022" + .split("") + .map((c) => c.charCodeAt(0))); +//# sourceMappingURL=decode-data-xml.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/generated/decode-data-xml.js.map b/node_modules/entities/lib/esm/generated/decode-data-xml.js.map new file mode 100644 index 0000000..86f7150 --- /dev/null +++ b/node_modules/entities/lib/esm/generated/decode-data-xml.js.map @@ -0,0 +1 @@ +{"version":3,"file":"decode-data-xml.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["generated/decode-data-xml.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAE9C,eAAe,IAAI,WAAW;AAC1B,kBAAkB;AAClB,uFAAuF;KAClF,KAAK,CAAC,EAAE,CAAC;KACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CACnC,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/generated/encode-html.d.ts b/node_modules/entities/lib/esm/generated/encode-html.d.ts new file mode 100644 index 0000000..0704827 --- /dev/null +++ b/node_modules/entities/lib/esm/generated/encode-html.d.ts @@ -0,0 +1,8 @@ +type EncodeTrieNode = string | { + v?: string; + n: number | Map<number, EncodeTrieNode>; + o?: string; +}; +declare const _default: Map<number, EncodeTrieNode>; +export default _default; +//# sourceMappingURL=encode-html.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/generated/encode-html.d.ts.map b/node_modules/entities/lib/esm/generated/encode-html.d.ts.map new file mode 100644 index 0000000..e665a6e --- /dev/null +++ b/node_modules/entities/lib/esm/generated/encode-html.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"encode-html.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["generated/encode-html.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GACb,MAAM,GACN;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;;AAY1E,wBAAo+tB"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/generated/encode-html.js b/node_modules/entities/lib/esm/generated/encode-html.js new file mode 100644 index 0000000..9f1858b --- /dev/null +++ b/node_modules/entities/lib/esm/generated/encode-html.js @@ -0,0 +1,10 @@ +// Generated using scripts/write-encode-map.ts +function restoreDiff(arr) { + for (let i = 1; i < arr.length; i++) { + arr[i][0] += arr[i - 1][0] + 1; + } + return arr; +} +// prettier-ignore +export default new Map(/* #__PURE__ */ restoreDiff([[9, " "], [0, " "], [22, "!"], [0, """], [0, "#"], [0, "$"], [0, "%"], [0, "&"], [0, "'"], [0, "("], [0, ")"], [0, "*"], [0, "+"], [0, ","], [1, "."], [0, "/"], [10, ":"], [0, ";"], [0, { v: "<", n: 8402, o: "<⃒" }], [0, { v: "=", n: 8421, o: "=⃥" }], [0, { v: ">", n: 8402, o: ">⃒" }], [0, "?"], [0, "@"], [26, "["], [0, "\"], [0, "]"], [0, "^"], [0, "_"], [0, "`"], [5, { n: 106, o: "fj" }], [20, "{"], [0, "|"], [0, "}"], [34, " "], [0, "¡"], [0, "¢"], [0, "£"], [0, "¤"], [0, "¥"], [0, "¦"], [0, "§"], [0, "¨"], [0, "©"], [0, "ª"], [0, "«"], [0, "¬"], [0, "­"], [0, "®"], [0, "¯"], [0, "°"], [0, "±"], [0, "²"], [0, "³"], [0, "´"], [0, "µ"], [0, "¶"], [0, "·"], [0, "¸"], [0, "¹"], [0, "º"], [0, "»"], [0, "¼"], [0, "½"], [0, "¾"], [0, "¿"], [0, "À"], [0, "Á"], [0, "Â"], [0, "Ã"], [0, "Ä"], [0, "Å"], [0, "Æ"], [0, "Ç"], [0, "È"], [0, "É"], [0, "Ê"], [0, "Ë"], [0, "Ì"], [0, "Í"], [0, "Î"], [0, "Ï"], [0, "Ð"], [0, "Ñ"], [0, "Ò"], [0, "Ó"], [0, "Ô"], [0, "Õ"], [0, "Ö"], [0, "×"], [0, "Ø"], [0, "Ù"], [0, "Ú"], [0, "Û"], [0, "Ü"], [0, "Ý"], [0, "Þ"], [0, "ß"], [0, "à"], [0, "á"], [0, "â"], [0, "ã"], [0, "ä"], [0, "å"], [0, "æ"], [0, "ç"], [0, "è"], [0, "é"], [0, "ê"], [0, "ë"], [0, "ì"], [0, "í"], [0, "î"], [0, "ï"], [0, "ð"], [0, "ñ"], [0, "ò"], [0, "ó"], [0, "ô"], [0, "õ"], [0, "ö"], [0, "÷"], [0, "ø"], [0, "ù"], [0, "ú"], [0, "û"], [0, "ü"], [0, "ý"], [0, "þ"], [0, "ÿ"], [0, "Ā"], [0, "ā"], [0, "Ă"], [0, "ă"], [0, "Ą"], [0, "ą"], [0, "Ć"], [0, "ć"], [0, "Ĉ"], [0, "ĉ"], [0, "Ċ"], [0, "ċ"], [0, "Č"], [0, "č"], [0, "Ď"], [0, "ď"], [0, "Đ"], [0, "đ"], [0, "Ē"], [0, "ē"], [2, "Ė"], [0, "ė"], [0, "Ę"], [0, "ę"], [0, "Ě"], [0, "ě"], [0, "Ĝ"], [0, "ĝ"], [0, "Ğ"], [0, "ğ"], [0, "Ġ"], [0, "ġ"], [0, "Ģ"], [1, "Ĥ"], [0, "ĥ"], [0, "Ħ"], [0, "ħ"], [0, "Ĩ"], [0, "ĩ"], [0, "Ī"], [0, "ī"], [2, "Į"], [0, "į"], [0, "İ"], [0, "ı"], [0, "IJ"], [0, "ij"], [0, "Ĵ"], [0, "ĵ"], [0, "Ķ"], [0, "ķ"], [0, "ĸ"], [0, "Ĺ"], [0, "ĺ"], [0, "Ļ"], [0, "ļ"], [0, "Ľ"], [0, "ľ"], [0, "Ŀ"], [0, "ŀ"], [0, "Ł"], [0, "ł"], [0, "Ń"], [0, "ń"], [0, "Ņ"], [0, "ņ"], [0, "Ň"], [0, "ň"], [0, "ʼn"], [0, "Ŋ"], [0, "ŋ"], [0, "Ō"], [0, "ō"], [2, "Ő"], [0, "ő"], [0, "Œ"], [0, "œ"], [0, "Ŕ"], [0, "ŕ"], [0, "Ŗ"], [0, "ŗ"], [0, "Ř"], [0, "ř"], [0, "Ś"], [0, "ś"], [0, "Ŝ"], [0, "ŝ"], [0, "Ş"], [0, "ş"], [0, "Š"], [0, "š"], [0, "Ţ"], [0, "ţ"], [0, "Ť"], [0, "ť"], [0, "Ŧ"], [0, "ŧ"], [0, "Ũ"], [0, "ũ"], [0, "Ū"], [0, "ū"], [0, "Ŭ"], [0, "ŭ"], [0, "Ů"], [0, "ů"], [0, "Ű"], [0, "ű"], [0, "Ų"], [0, "ų"], [0, "Ŵ"], [0, "ŵ"], [0, "Ŷ"], [0, "ŷ"], [0, "Ÿ"], [0, "Ź"], [0, "ź"], [0, "Ż"], [0, "ż"], [0, "Ž"], [0, "ž"], [19, "ƒ"], [34, "Ƶ"], [63, "ǵ"], [65, "ȷ"], [142, "ˆ"], [0, "ˇ"], [16, "˘"], [0, "˙"], [0, "˚"], [0, "˛"], [0, "˜"], [0, "˝"], [51, "̑"], [127, "Α"], [0, "Β"], [0, "Γ"], [0, "Δ"], [0, "Ε"], [0, "Ζ"], [0, "Η"], [0, "Θ"], [0, "Ι"], [0, "Κ"], [0, "Λ"], [0, "Μ"], [0, "Ν"], [0, "Ξ"], [0, "Ο"], [0, "Π"], [0, "Ρ"], [1, "Σ"], [0, "Τ"], [0, "Υ"], [0, "Φ"], [0, "Χ"], [0, "Ψ"], [0, "Ω"], [7, "α"], [0, "β"], [0, "γ"], [0, "δ"], [0, "ε"], [0, "ζ"], [0, "η"], [0, "θ"], [0, "ι"], [0, "κ"], [0, "λ"], [0, "μ"], [0, "ν"], [0, "ξ"], [0, "ο"], [0, "π"], [0, "ρ"], [0, "ς"], [0, "σ"], [0, "τ"], [0, "υ"], [0, "φ"], [0, "χ"], [0, "ψ"], [0, "ω"], [7, "ϑ"], [0, "ϒ"], [2, "ϕ"], [0, "ϖ"], [5, "Ϝ"], [0, "ϝ"], [18, "ϰ"], [0, "ϱ"], [3, "ϵ"], [0, "϶"], [10, "Ё"], [0, "Ђ"], [0, "Ѓ"], [0, "Є"], [0, "Ѕ"], [0, "І"], [0, "Ї"], [0, "Ј"], [0, "Љ"], [0, "Њ"], [0, "Ћ"], [0, "Ќ"], [1, "Ў"], [0, "Џ"], [0, "А"], [0, "Б"], [0, "В"], [0, "Г"], [0, "Д"], [0, "Е"], [0, "Ж"], [0, "З"], [0, "И"], [0, "Й"], [0, "К"], [0, "Л"], [0, "М"], [0, "Н"], [0, "О"], [0, "П"], [0, "Р"], [0, "С"], [0, "Т"], [0, "У"], [0, "Ф"], [0, "Х"], [0, "Ц"], [0, "Ч"], [0, "Ш"], [0, "Щ"], [0, "Ъ"], [0, "Ы"], [0, "Ь"], [0, "Э"], [0, "Ю"], [0, "Я"], [0, "а"], [0, "б"], [0, "в"], [0, "г"], [0, "д"], [0, "е"], [0, "ж"], [0, "з"], [0, "и"], [0, "й"], [0, "к"], [0, "л"], [0, "м"], [0, "н"], [0, "о"], [0, "п"], [0, "р"], [0, "с"], [0, "т"], [0, "у"], [0, "ф"], [0, "х"], [0, "ц"], [0, "ч"], [0, "ш"], [0, "щ"], [0, "ъ"], [0, "ы"], [0, "ь"], [0, "э"], [0, "ю"], [0, "я"], [1, "ё"], [0, "ђ"], [0, "ѓ"], [0, "є"], [0, "ѕ"], [0, "і"], [0, "ї"], [0, "ј"], [0, "љ"], [0, "њ"], [0, "ћ"], [0, "ќ"], [1, "ў"], [0, "џ"], [7074, " "], [0, " "], [0, " "], [0, " "], [1, " "], [0, " "], [0, " "], [0, " "], [0, "​"], [0, "‌"], [0, "‍"], [0, "‎"], [0, "‏"], [0, "‐"], [2, "–"], [0, "—"], [0, "―"], [0, "‖"], [1, "‘"], [0, "’"], [0, "‚"], [1, "“"], [0, "”"], [0, "„"], [1, "†"], [0, "‡"], [0, "•"], [2, "‥"], [0, "…"], [9, "‰"], [0, "‱"], [0, "′"], [0, "″"], [0, "‴"], [0, "‵"], [3, "‹"], [0, "›"], [3, "‾"], [2, "⁁"], [1, "⁃"], [0, "⁄"], [10, "⁏"], [7, "⁗"], [7, { v: " ", n: 8202, o: "  " }], [0, "⁠"], [0, "⁡"], [0, "⁢"], [0, "⁣"], [72, "€"], [46, "⃛"], [0, "⃜"], [37, "ℂ"], [2, "℅"], [4, "ℊ"], [0, "ℋ"], [0, "ℌ"], [0, "ℍ"], [0, "ℎ"], [0, "ℏ"], [0, "ℐ"], [0, "ℑ"], [0, "ℒ"], [0, "ℓ"], [1, "ℕ"], [0, "№"], [0, "℗"], [0, "℘"], [0, "ℙ"], [0, "ℚ"], [0, "ℛ"], [0, "ℜ"], [0, "ℝ"], [0, "℞"], [3, "™"], [1, "ℤ"], [2, "℧"], [0, "ℨ"], [0, "℩"], [2, "ℬ"], [0, "ℭ"], [1, "ℯ"], [0, "ℰ"], [0, "ℱ"], [1, "ℳ"], [0, "ℴ"], [0, "ℵ"], [0, "ℶ"], [0, "ℷ"], [0, "ℸ"], [12, "ⅅ"], [0, "ⅆ"], [0, "ⅇ"], [0, "ⅈ"], [10, "⅓"], [0, "⅔"], [0, "⅕"], [0, "⅖"], [0, "⅗"], [0, "⅘"], [0, "⅙"], [0, "⅚"], [0, "⅛"], [0, "⅜"], [0, "⅝"], [0, "⅞"], [49, "←"], [0, "↑"], [0, "→"], [0, "↓"], [0, "↔"], [0, "↕"], [0, "↖"], [0, "↗"], [0, "↘"], [0, "↙"], [0, "↚"], [0, "↛"], [1, { v: "↝", n: 824, o: "↝̸" }], [0, "↞"], [0, "↟"], [0, "↠"], [0, "↡"], [0, "↢"], [0, "↣"], [0, "↤"], [0, "↥"], [0, "↦"], [0, "↧"], [1, "↩"], [0, "↪"], [0, "↫"], [0, "↬"], [0, "↭"], [0, "↮"], [1, "↰"], [0, "↱"], [0, "↲"], [0, "↳"], [1, "↵"], [0, "↶"], [0, "↷"], [2, "↺"], [0, "↻"], [0, "↼"], [0, "↽"], [0, "↾"], [0, "↿"], [0, "⇀"], [0, "⇁"], [0, "⇂"], [0, "⇃"], [0, "⇄"], [0, "⇅"], [0, "⇆"], [0, "⇇"], [0, "⇈"], [0, "⇉"], [0, "⇊"], [0, "⇋"], [0, "⇌"], [0, "⇍"], [0, "⇎"], [0, "⇏"], [0, "⇐"], [0, "⇑"], [0, "⇒"], [0, "⇓"], [0, "⇔"], [0, "⇕"], [0, "⇖"], [0, "⇗"], [0, "⇘"], [0, "⇙"], [0, "⇚"], [0, "⇛"], [1, "⇝"], [6, "⇤"], [0, "⇥"], [15, "⇵"], [7, "⇽"], [0, "⇾"], [0, "⇿"], [0, "∀"], [0, "∁"], [0, { v: "∂", n: 824, o: "∂̸" }], [0, "∃"], [0, "∄"], [0, "∅"], [1, "∇"], [0, "∈"], [0, "∉"], [1, "∋"], [0, "∌"], [2, "∏"], [0, "∐"], [0, "∑"], [0, "−"], [0, "∓"], [0, "∔"], [1, "∖"], [0, "∗"], [0, "∘"], [1, "√"], [2, "∝"], [0, "∞"], [0, "∟"], [0, { v: "∠", n: 8402, o: "∠⃒" }], [0, "∡"], [0, "∢"], [0, "∣"], [0, "∤"], [0, "∥"], [0, "∦"], [0, "∧"], [0, "∨"], [0, { v: "∩", n: 65024, o: "∩︀" }], [0, { v: "∪", n: 65024, o: "∪︀" }], [0, "∫"], [0, "∬"], [0, "∭"], [0, "∮"], [0, "∯"], [0, "∰"], [0, "∱"], [0, "∲"], [0, "∳"], [0, "∴"], [0, "∵"], [0, "∶"], [0, "∷"], [0, "∸"], [1, "∺"], [0, "∻"], [0, { v: "∼", n: 8402, o: "∼⃒" }], [0, { v: "∽", n: 817, o: "∽̱" }], [0, { v: "∾", n: 819, o: "∾̳" }], [0, "∿"], [0, "≀"], [0, "≁"], [0, { v: "≂", n: 824, o: "≂̸" }], [0, "≃"], [0, "≄"], [0, "≅"], [0, "≆"], [0, "≇"], [0, "≈"], [0, "≉"], [0, "≊"], [0, { v: "≋", n: 824, o: "≋̸" }], [0, "≌"], [0, { v: "≍", n: 8402, o: "≍⃒" }], [0, { v: "≎", n: 824, o: "≎̸" }], [0, { v: "≏", n: 824, o: "≏̸" }], [0, { v: "≐", n: 824, o: "≐̸" }], [0, "≑"], [0, "≒"], [0, "≓"], [0, "≔"], [0, "≕"], [0, "≖"], [0, "≗"], [1, "≙"], [0, "≚"], [1, "≜"], [2, "≟"], [0, "≠"], [0, { v: "≡", n: 8421, o: "≡⃥" }], [0, "≢"], [1, { v: "≤", n: 8402, o: "≤⃒" }], [0, { v: "≥", n: 8402, o: "≥⃒" }], [0, { v: "≦", n: 824, o: "≦̸" }], [0, { v: "≧", n: 824, o: "≧̸" }], [0, { v: "≨", n: 65024, o: "≨︀" }], [0, { v: "≩", n: 65024, o: "≩︀" }], [0, { v: "≪", n: new Map(/* #__PURE__ */ restoreDiff([[824, "≪̸"], [7577, "≪⃒"]])) }], [0, { v: "≫", n: new Map(/* #__PURE__ */ restoreDiff([[824, "≫̸"], [7577, "≫⃒"]])) }], [0, "≬"], [0, "≭"], [0, "≮"], [0, "≯"], [0, "≰"], [0, "≱"], [0, "≲"], [0, "≳"], [0, "≴"], [0, "≵"], [0, "≶"], [0, "≷"], [0, "≸"], [0, "≹"], [0, "≺"], [0, "≻"], [0, "≼"], [0, "≽"], [0, "≾"], [0, { v: "≿", n: 824, o: "≿̸" }], [0, "⊀"], [0, "⊁"], [0, { v: "⊂", n: 8402, o: "⊂⃒" }], [0, { v: "⊃", n: 8402, o: "⊃⃒" }], [0, "⊄"], [0, "⊅"], [0, "⊆"], [0, "⊇"], [0, "⊈"], [0, "⊉"], [0, { v: "⊊", n: 65024, o: "⊊︀" }], [0, { v: "⊋", n: 65024, o: "⊋︀" }], [1, "⊍"], [0, "⊎"], [0, { v: "⊏", n: 824, o: "⊏̸" }], [0, { v: "⊐", n: 824, o: "⊐̸" }], [0, "⊑"], [0, "⊒"], [0, { v: "⊓", n: 65024, o: "⊓︀" }], [0, { v: "⊔", n: 65024, o: "⊔︀" }], [0, "⊕"], [0, "⊖"], [0, "⊗"], [0, "⊘"], [0, "⊙"], [0, "⊚"], [0, "⊛"], [1, "⊝"], [0, "⊞"], [0, "⊟"], [0, "⊠"], [0, "⊡"], [0, "⊢"], [0, "⊣"], [0, "⊤"], [0, "⊥"], [1, "⊧"], [0, "⊨"], [0, "⊩"], [0, "⊪"], [0, "⊫"], [0, "⊬"], [0, "⊭"], [0, "⊮"], [0, "⊯"], [0, "⊰"], [1, "⊲"], [0, "⊳"], [0, { v: "⊴", n: 8402, o: "⊴⃒" }], [0, { v: "⊵", n: 8402, o: "⊵⃒" }], [0, "⊶"], [0, "⊷"], [0, "⊸"], [0, "⊹"], [0, "⊺"], [0, "⊻"], [1, "⊽"], [0, "⊾"], [0, "⊿"], [0, "⋀"], [0, "⋁"], [0, "⋂"], [0, "⋃"], [0, "⋄"], [0, "⋅"], [0, "⋆"], [0, "⋇"], [0, "⋈"], [0, "⋉"], [0, "⋊"], [0, "⋋"], [0, "⋌"], [0, "⋍"], [0, "⋎"], [0, "⋏"], [0, "⋐"], [0, "⋑"], [0, "⋒"], [0, "⋓"], [0, "⋔"], [0, "⋕"], [0, "⋖"], [0, "⋗"], [0, { v: "⋘", n: 824, o: "⋘̸" }], [0, { v: "⋙", n: 824, o: "⋙̸" }], [0, { v: "⋚", n: 65024, o: "⋚︀" }], [0, { v: "⋛", n: 65024, o: "⋛︀" }], [2, "⋞"], [0, "⋟"], [0, "⋠"], [0, "⋡"], [0, "⋢"], [0, "⋣"], [2, "⋦"], [0, "⋧"], [0, "⋨"], [0, "⋩"], [0, "⋪"], [0, "⋫"], [0, "⋬"], [0, "⋭"], [0, "⋮"], [0, "⋯"], [0, "⋰"], [0, "⋱"], [0, "⋲"], [0, "⋳"], [0, "⋴"], [0, { v: "⋵", n: 824, o: "⋵̸" }], [0, "⋶"], [0, "⋷"], [1, { v: "⋹", n: 824, o: "⋹̸" }], [0, "⋺"], [0, "⋻"], [0, "⋼"], [0, "⋽"], [0, "⋾"], [6, "⌅"], [0, "⌆"], [1, "⌈"], [0, "⌉"], [0, "⌊"], [0, "⌋"], [0, "⌌"], [0, "⌍"], [0, "⌎"], [0, "⌏"], [0, "⌐"], [1, "⌒"], [0, "⌓"], [1, "⌕"], [0, "⌖"], [5, "⌜"], [0, "⌝"], [0, "⌞"], [0, "⌟"], [2, "⌢"], [0, "⌣"], [9, "⌭"], [0, "⌮"], [7, "⌶"], [6, "⌽"], [1, "⌿"], [60, "⍼"], [51, "⎰"], [0, "⎱"], [2, "⎴"], [0, "⎵"], [0, "⎶"], [37, "⏜"], [0, "⏝"], [0, "⏞"], [0, "⏟"], [2, "⏢"], [4, "⏧"], [59, "␣"], [164, "Ⓢ"], [55, "─"], [1, "│"], [9, "┌"], [3, "┐"], [3, "└"], [3, "┘"], [3, "├"], [7, "┤"], [7, "┬"], [7, "┴"], [7, "┼"], [19, "═"], [0, "║"], [0, "╒"], [0, "╓"], [0, "╔"], [0, "╕"], [0, "╖"], [0, "╗"], [0, "╘"], [0, "╙"], [0, "╚"], [0, "╛"], [0, "╜"], [0, "╝"], [0, "╞"], [0, "╟"], [0, "╠"], [0, "╡"], [0, "╢"], [0, "╣"], [0, "╤"], [0, "╥"], [0, "╦"], [0, "╧"], [0, "╨"], [0, "╩"], [0, "╪"], [0, "╫"], [0, "╬"], [19, "▀"], [3, "▄"], [3, "█"], [8, "░"], [0, "▒"], [0, "▓"], [13, "□"], [8, "▪"], [0, "▫"], [1, "▭"], [0, "▮"], [2, "▱"], [1, "△"], [0, "▴"], [0, "▵"], [2, "▸"], [0, "▹"], [3, "▽"], [0, "▾"], [0, "▿"], [2, "◂"], [0, "◃"], [6, "◊"], [0, "○"], [32, "◬"], [2, "◯"], [8, "◸"], [0, "◹"], [0, "◺"], [0, "◻"], [0, "◼"], [8, "★"], [0, "☆"], [7, "☎"], [49, "♀"], [1, "♂"], [29, "♠"], [2, "♣"], [1, "♥"], [0, "♦"], [3, "♪"], [2, "♭"], [0, "♮"], [0, "♯"], [163, "✓"], [3, "✗"], [8, "✠"], [21, "✶"], [33, "❘"], [25, "❲"], [0, "❳"], [84, "⟈"], [0, "⟉"], [28, "⟦"], [0, "⟧"], [0, "⟨"], [0, "⟩"], [0, "⟪"], [0, "⟫"], [0, "⟬"], [0, "⟭"], [7, "⟵"], [0, "⟶"], [0, "⟷"], [0, "⟸"], [0, "⟹"], [0, "⟺"], [1, "⟼"], [2, "⟿"], [258, "⤂"], [0, "⤃"], [0, "⤄"], [0, "⤅"], [6, "⤌"], [0, "⤍"], [0, "⤎"], [0, "⤏"], [0, "⤐"], [0, "⤑"], [0, "⤒"], [0, "⤓"], [2, "⤖"], [2, "⤙"], [0, "⤚"], [0, "⤛"], [0, "⤜"], [0, "⤝"], [0, "⤞"], [0, "⤟"], [0, "⤠"], [2, "⤣"], [0, "⤤"], [0, "⤥"], [0, "⤦"], [0, "⤧"], [0, "⤨"], [0, "⤩"], [0, "⤪"], [8, { v: "⤳", n: 824, o: "⤳̸" }], [1, "⤵"], [0, "⤶"], [0, "⤷"], [0, "⤸"], [0, "⤹"], [2, "⤼"], [0, "⤽"], [7, "⥅"], [2, "⥈"], [0, "⥉"], [0, "⥊"], [0, "⥋"], [2, "⥎"], [0, "⥏"], [0, "⥐"], [0, "⥑"], [0, "⥒"], [0, "⥓"], [0, "⥔"], [0, "⥕"], [0, "⥖"], [0, "⥗"], [0, "⥘"], [0, "⥙"], [0, "⥚"], [0, "⥛"], [0, "⥜"], [0, "⥝"], [0, "⥞"], [0, "⥟"], [0, "⥠"], [0, "⥡"], [0, "⥢"], [0, "⥣"], [0, "⥤"], [0, "⥥"], [0, "⥦"], [0, "⥧"], [0, "⥨"], [0, "⥩"], [0, "⥪"], [0, "⥫"], [0, "⥬"], [0, "⥭"], [0, "⥮"], [0, "⥯"], [0, "⥰"], [0, "⥱"], [0, "⥲"], [0, "⥳"], [0, "⥴"], [0, "⥵"], [0, "⥶"], [1, "⥸"], [0, "⥹"], [1, "⥻"], [0, "⥼"], [0, "⥽"], [0, "⥾"], [0, "⥿"], [5, "⦅"], [0, "⦆"], [4, "⦋"], [0, "⦌"], [0, "⦍"], [0, "⦎"], [0, "⦏"], [0, "⦐"], [0, "⦑"], [0, "⦒"], [0, "⦓"], [0, "⦔"], [0, "⦕"], [0, "⦖"], [3, "⦚"], [1, "⦜"], [0, "⦝"], [6, "⦤"], [0, "⦥"], [0, "⦦"], [0, "⦧"], [0, "⦨"], [0, "⦩"], [0, "⦪"], [0, "⦫"], [0, "⦬"], [0, "⦭"], [0, "⦮"], [0, "⦯"], [0, "⦰"], [0, "⦱"], [0, "⦲"], [0, "⦳"], [0, "⦴"], [0, "⦵"], [0, "⦶"], [0, "⦷"], [1, "⦹"], [1, "⦻"], [0, "⦼"], [1, "⦾"], [0, "⦿"], [0, "⧀"], [0, "⧁"], [0, "⧂"], [0, "⧃"], [0, "⧄"], [0, "⧅"], [3, "⧉"], [3, "⧍"], [0, "⧎"], [0, { v: "⧏", n: 824, o: "⧏̸" }], [0, { v: "⧐", n: 824, o: "⧐̸" }], [11, "⧜"], [0, "⧝"], [0, "⧞"], [4, "⧣"], [0, "⧤"], [0, "⧥"], [5, "⧫"], [8, "⧴"], [1, "⧶"], [9, "⨀"], [0, "⨁"], [0, "⨂"], [1, "⨄"], [1, "⨆"], [5, "⨌"], [0, "⨍"], [2, "⨐"], [0, "⨑"], [0, "⨒"], [0, "⨓"], [0, "⨔"], [0, "⨕"], [0, "⨖"], [0, "⨗"], [10, "⨢"], [0, "⨣"], [0, "⨤"], [0, "⨥"], [0, "⨦"], [0, "⨧"], [1, "⨩"], [0, "⨪"], [2, "⨭"], [0, "⨮"], [0, "⨯"], [0, "⨰"], [0, "⨱"], [1, "⨳"], [0, "⨴"], [0, "⨵"], [0, "⨶"], [0, "⨷"], [0, "⨸"], [0, "⨹"], [0, "⨺"], [0, "⨻"], [0, "⨼"], [2, "⨿"], [0, "⩀"], [1, "⩂"], [0, "⩃"], [0, "⩄"], [0, "⩅"], [0, "⩆"], [0, "⩇"], [0, "⩈"], [0, "⩉"], [0, "⩊"], [0, "⩋"], [0, "⩌"], [0, "⩍"], [2, "⩐"], [2, "⩓"], [0, "⩔"], [0, "⩕"], [0, "⩖"], [0, "⩗"], [0, "⩘"], [1, "⩚"], [0, "⩛"], [0, "⩜"], [0, "⩝"], [1, "⩟"], [6, "⩦"], [3, "⩪"], [2, { v: "⩭", n: 824, o: "⩭̸" }], [0, "⩮"], [0, "⩯"], [0, { v: "⩰", n: 824, o: "⩰̸" }], [0, "⩱"], [0, "⩲"], [0, "⩳"], [0, "⩴"], [0, "⩵"], [1, "⩷"], [0, "⩸"], [0, "⩹"], [0, "⩺"], [0, "⩻"], [0, "⩼"], [0, { v: "⩽", n: 824, o: "⩽̸" }], [0, { v: "⩾", n: 824, o: "⩾̸" }], [0, "⩿"], [0, "⪀"], [0, "⪁"], [0, "⪂"], [0, "⪃"], [0, "⪄"], [0, "⪅"], [0, "⪆"], [0, "⪇"], [0, "⪈"], [0, "⪉"], [0, "⪊"], [0, "⪋"], [0, "⪌"], [0, "⪍"], [0, "⪎"], [0, "⪏"], [0, "⪐"], [0, "⪑"], [0, "⪒"], [0, "⪓"], [0, "⪔"], [0, "⪕"], [0, "⪖"], [0, "⪗"], [0, "⪘"], [0, "⪙"], [0, "⪚"], [2, "⪝"], [0, "⪞"], [0, "⪟"], [0, "⪠"], [0, { v: "⪡", n: 824, o: "⪡̸" }], [0, { v: "⪢", n: 824, o: "⪢̸" }], [1, "⪤"], [0, "⪥"], [0, "⪦"], [0, "⪧"], [0, "⪨"], [0, "⪩"], [0, "⪪"], [0, "⪫"], [0, { v: "⪬", n: 65024, o: "⪬︀" }], [0, { v: "⪭", n: 65024, o: "⪭︀" }], [0, "⪮"], [0, { v: "⪯", n: 824, o: "⪯̸" }], [0, { v: "⪰", n: 824, o: "⪰̸" }], [2, "⪳"], [0, "⪴"], [0, "⪵"], [0, "⪶"], [0, "⪷"], [0, "⪸"], [0, "⪹"], [0, "⪺"], [0, "⪻"], [0, "⪼"], [0, "⪽"], [0, "⪾"], [0, "⪿"], [0, "⫀"], [0, "⫁"], [0, "⫂"], [0, "⫃"], [0, "⫄"], [0, { v: "⫅", n: 824, o: "⫅̸" }], [0, { v: "⫆", n: 824, o: "⫆̸" }], [0, "⫇"], [0, "⫈"], [2, { v: "⫋", n: 65024, o: "⫋︀" }], [0, { v: "⫌", n: 65024, o: "⫌︀" }], [2, "⫏"], [0, "⫐"], [0, "⫑"], [0, "⫒"], [0, "⫓"], [0, "⫔"], [0, "⫕"], [0, "⫖"], [0, "⫗"], [0, "⫘"], [0, "⫙"], [0, "⫚"], [0, "⫛"], [8, "⫤"], [1, "⫦"], [0, "⫧"], [0, "⫨"], [0, "⫩"], [1, "⫫"], [0, "⫬"], [0, "⫭"], [0, "⫮"], [0, "⫯"], [0, "⫰"], [0, "⫱"], [0, "⫲"], [0, "⫳"], [9, { v: "⫽", n: 8421, o: "⫽⃥" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, "𝒜"], [1, "𝒞"], [0, "𝒟"], [2, "𝒢"], [2, "𝒥"], [0, "𝒦"], [2, "𝒩"], [0, "𝒪"], [0, "𝒫"], [0, "𝒬"], [1, "𝒮"], [0, "𝒯"], [0, "𝒰"], [0, "𝒱"], [0, "𝒲"], [0, "𝒳"], [0, "𝒴"], [0, "𝒵"], [0, "𝒶"], [0, "𝒷"], [0, "𝒸"], [0, "𝒹"], [1, "𝒻"], [1, "𝒽"], [0, "𝒾"], [0, "𝒿"], [0, "𝓀"], [0, "𝓁"], [0, "𝓂"], [0, "𝓃"], [1, "𝓅"], [0, "𝓆"], [0, "𝓇"], [0, "𝓈"], [0, "𝓉"], [0, "𝓊"], [0, "𝓋"], [0, "𝓌"], [0, "𝓍"], [0, "𝓎"], [0, "𝓏"], [52, "𝔄"], [0, "𝔅"], [1, "𝔇"], [0, "𝔈"], [0, "𝔉"], [0, "𝔊"], [2, "𝔍"], [0, "𝔎"], [0, "𝔏"], [0, "𝔐"], [0, "𝔑"], [0, "𝔒"], [0, "𝔓"], [0, "𝔔"], [1, "𝔖"], [0, "𝔗"], [0, "𝔘"], [0, "𝔙"], [0, "𝔚"], [0, "𝔛"], [0, "𝔜"], [1, "𝔞"], [0, "𝔟"], [0, "𝔠"], [0, "𝔡"], [0, "𝔢"], [0, "𝔣"], [0, "𝔤"], [0, "𝔥"], [0, "𝔦"], [0, "𝔧"], [0, "𝔨"], [0, "𝔩"], [0, "𝔪"], [0, "𝔫"], [0, "𝔬"], [0, "𝔭"], [0, "𝔮"], [0, "𝔯"], [0, "𝔰"], [0, "𝔱"], [0, "𝔲"], [0, "𝔳"], [0, "𝔴"], [0, "𝔵"], [0, "𝔶"], [0, "𝔷"], [0, "𝔸"], [0, "𝔹"], [1, "𝔻"], [0, "𝔼"], [0, "𝔽"], [0, "𝔾"], [1, "𝕀"], [0, "𝕁"], [0, "𝕂"], [0, "𝕃"], [0, "𝕄"], [1, "𝕆"], [3, "𝕊"], [0, "𝕋"], [0, "𝕌"], [0, "𝕍"], [0, "𝕎"], [0, "𝕏"], [0, "𝕐"], [1, "𝕒"], [0, "𝕓"], [0, "𝕔"], [0, "𝕕"], [0, "𝕖"], [0, "𝕗"], [0, "𝕘"], [0, "𝕙"], [0, "𝕚"], [0, "𝕛"], [0, "𝕜"], [0, "𝕝"], [0, "𝕞"], [0, "𝕟"], [0, "𝕠"], [0, "𝕡"], [0, "𝕢"], [0, "𝕣"], [0, "𝕤"], [0, "𝕥"], [0, "𝕦"], [0, "𝕧"], [0, "𝕨"], [0, "𝕩"], [0, "𝕪"], [0, "𝕫"]])) }], [8906, "ff"], [0, "fi"], [0, "fl"], [0, "ffi"], [0, "ffl"]])); +//# sourceMappingURL=encode-html.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/generated/encode-html.js.map b/node_modules/entities/lib/esm/generated/encode-html.js.map new file mode 100644 index 0000000..8906ff8 --- /dev/null +++ b/node_modules/entities/lib/esm/generated/encode-html.js.map @@ -0,0 +1 @@ +{"version":3,"file":"encode-html.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["generated/encode-html.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAM9C,SAAS,WAAW,CAChB,GAAM;IAEN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KAClC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,kBAAkB;AAClB,eAAe,IAAI,GAAG,CAAwB,eAAe,CAAA,WAAW,CAAC,CAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,GAAG,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,aAAa,CAAC,EAAC,CAAC,GAAG,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,IAAI,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,uBAAuB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,eAAe,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,cAAc,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,wBAAwB,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,uBAAuB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,uBAAuB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,wBAAwB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,wBAAwB,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,4BAA4B,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,aAAa,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,aAAa,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,aAAa,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,IAAI,GAAG,CAAgB,eAAe,CAAA,WAAW,CAAC,CAAC,CAAC,GAAG,EAAC,QAAQ,CAAC,EAAC,CAAC,IAAI,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,IAAI,GAAG,CAAgB,eAAe,CAAA,WAAW,CAAC,CAAC,CAAC,GAAG,EAAC,QAAQ,CAAC,EAAC,CAAC,IAAI,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,oBAAoB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,aAAa,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,eAAe,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,gBAAgB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,gBAAgB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,mBAAmB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,qBAAqB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,qBAAqB,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,sBAAsB,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,EAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,EAAC,wBAAwB,CAAC,EAAC,CAAC,CAAC,EAAC,0BAA0B,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,YAAY,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,WAAW,CAAC,EAAC,CAAC,EAAE,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,EAAE,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,GAAG,EAAC,YAAY,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,wBAAwB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,GAAG,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,EAAE,EAAC,qBAAqB,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,EAAE,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,EAAC,uBAAuB,CAAC,EAAC,CAAC,CAAC,EAAC,wBAAwB,CAAC,EAAC,CAAC,CAAC,EAAC,4BAA4B,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,GAAG,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,uBAAuB,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,mBAAmB,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,sBAAsB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,oBAAoB,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,uBAAuB,EAAC,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,EAAE,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,YAAY,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,YAAY,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,aAAa,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,YAAY,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,aAAa,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,YAAY,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,qBAAqB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,kBAAkB,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,2BAA2B,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,iBAAiB,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,oBAAoB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,oBAAoB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,iBAAiB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,iBAAiB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,KAAK,EAAC,EAAC,CAAC,EAAC,IAAI,GAAG,CAAgB,eAAe,CAAA,WAAW,CAAC,CAAC,CAAC,KAAK,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,EAAE,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,IAAI,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/index.d.ts b/node_modules/entities/lib/esm/index.d.ts new file mode 100644 index 0000000..dd4eb11 --- /dev/null +++ b/node_modules/entities/lib/esm/index.d.ts @@ -0,0 +1,96 @@ +import { DecodingMode } from "./decode.js"; +/** The level of entities to support. */ +export declare enum EntityLevel { + /** Support only XML entities. */ + XML = 0, + /** Support HTML entities, which are a superset of XML entities. */ + HTML = 1 +} +export declare enum EncodingMode { + /** + * The output is UTF-8 encoded. Only characters that need escaping within + * XML will be escaped. + */ + UTF8 = 0, + /** + * The output consists only of ASCII characters. Characters that need + * escaping within HTML, and characters that aren't ASCII characters will + * be escaped. + */ + ASCII = 1, + /** + * Encode all characters that have an equivalent entity, as well as all + * characters that are not ASCII characters. + */ + Extensive = 2, + /** + * Encode all characters that have to be escaped in HTML attributes, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + */ + Attribute = 3, + /** + * Encode all characters that have to be escaped in HTML text, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + */ + Text = 4 +} +export interface DecodingOptions { + /** + * The level of entities to support. + * @default {@link EntityLevel.XML} + */ + level?: EntityLevel; + /** + * Decoding mode. If `Legacy`, will support legacy entities not terminated + * with a semicolon (`;`). + * + * Always `Strict` for XML. For HTML, set this to `true` if you are parsing + * an attribute value. + * + * The deprecated `decodeStrict` function defaults this to `Strict`. + * + * @default {@link DecodingMode.Legacy} + */ + mode?: DecodingMode | undefined; +} +/** + * Decodes a string with entities. + * + * @param data String to decode. + * @param options Decoding options. + */ +export declare function decode(data: string, options?: DecodingOptions | EntityLevel): string; +/** + * Decodes a string with entities. Does not allow missing trailing semicolons for entities. + * + * @param data String to decode. + * @param options Decoding options. + * @deprecated Use `decode` with the `mode` set to `Strict`. + */ +export declare function decodeStrict(data: string, options?: DecodingOptions | EntityLevel): string; +/** + * Options for `encode`. + */ +export interface EncodingOptions { + /** + * The level of entities to support. + * @default {@link EntityLevel.XML} + */ + level?: EntityLevel; + /** + * Output format. + * @default {@link EncodingMode.Extensive} + */ + mode?: EncodingMode; +} +/** + * Encodes a string with entities. + * + * @param data String to encode. + * @param options Encoding options. + */ +export declare function encode(data: string, options?: EncodingOptions | EntityLevel): string; +export { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from "./escape.js"; +export { encodeHTML, encodeNonAsciiHTML, encodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from "./encode.js"; +export { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, decodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from "./decode.js"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/index.d.ts.map b/node_modules/entities/lib/esm/index.d.ts.map new file mode 100644 index 0000000..cfeef9f --- /dev/null +++ b/node_modules/entities/lib/esm/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,YAAY,EAAE,MAAM,aAAa,CAAC;AASlE,wCAAwC;AACxC,oBAAY,WAAW;IACnB,iCAAiC;IACjC,GAAG,IAAI;IACP,mEAAmE;IACnE,IAAI,IAAI;CACX;AAED,oBAAY,YAAY;IACpB;;;OAGG;IACH,IAAI,IAAA;IACJ;;;;OAIG;IACH,KAAK,IAAA;IACL;;;OAGG;IACH,SAAS,IAAA;IACT;;;OAGG;IACH,SAAS,IAAA;IACT;;;OAGG;IACH,IAAI,IAAA;CACP;AAED,MAAM,WAAW,eAAe;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACnC;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAe,GAAG,WAA6B,GACzD,MAAM,CASR;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAe,GAAG,WAA6B,GACzD,MAAM,CAKR;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAe,GAAG,WAA6B,GACzD,MAAM,CAkBR;AAED,OAAO,EACH,SAAS,EACT,MAAM,EACN,UAAU,EACV,eAAe,EACf,UAAU,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EACH,UAAU,EACV,kBAAkB,EAElB,UAAU,IAAI,WAAW,EACzB,UAAU,IAAI,WAAW,GAC5B,MAAM,aAAa,CAAC;AAErB,OAAO,EACH,aAAa,EACb,YAAY,EACZ,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EAEnB,UAAU,IAAI,WAAW,EACzB,UAAU,IAAI,WAAW,EACzB,gBAAgB,IAAI,iBAAiB,EACrC,gBAAgB,IAAI,iBAAiB,EACrC,SAAS,IAAI,eAAe,GAC/B,MAAM,aAAa,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/index.js b/node_modules/entities/lib/esm/index.js new file mode 100644 index 0000000..acc6dbe --- /dev/null +++ b/node_modules/entities/lib/esm/index.js @@ -0,0 +1,99 @@ +import { decodeXML, decodeHTML, DecodingMode } from "./decode.js"; +import { encodeHTML, encodeNonAsciiHTML } from "./encode.js"; +import { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from "./escape.js"; +/** The level of entities to support. */ +export var EntityLevel; +(function (EntityLevel) { + /** Support only XML entities. */ + EntityLevel[EntityLevel["XML"] = 0] = "XML"; + /** Support HTML entities, which are a superset of XML entities. */ + EntityLevel[EntityLevel["HTML"] = 1] = "HTML"; +})(EntityLevel || (EntityLevel = {})); +export var EncodingMode; +(function (EncodingMode) { + /** + * The output is UTF-8 encoded. Only characters that need escaping within + * XML will be escaped. + */ + EncodingMode[EncodingMode["UTF8"] = 0] = "UTF8"; + /** + * The output consists only of ASCII characters. Characters that need + * escaping within HTML, and characters that aren't ASCII characters will + * be escaped. + */ + EncodingMode[EncodingMode["ASCII"] = 1] = "ASCII"; + /** + * Encode all characters that have an equivalent entity, as well as all + * characters that are not ASCII characters. + */ + EncodingMode[EncodingMode["Extensive"] = 2] = "Extensive"; + /** + * Encode all characters that have to be escaped in HTML attributes, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + */ + EncodingMode[EncodingMode["Attribute"] = 3] = "Attribute"; + /** + * Encode all characters that have to be escaped in HTML text, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + */ + EncodingMode[EncodingMode["Text"] = 4] = "Text"; +})(EncodingMode || (EncodingMode = {})); +/** + * Decodes a string with entities. + * + * @param data String to decode. + * @param options Decoding options. + */ +export function decode(data, options = EntityLevel.XML) { + const level = typeof options === "number" ? options : options.level; + if (level === EntityLevel.HTML) { + const mode = typeof options === "object" ? options.mode : undefined; + return decodeHTML(data, mode); + } + return decodeXML(data); +} +/** + * Decodes a string with entities. Does not allow missing trailing semicolons for entities. + * + * @param data String to decode. + * @param options Decoding options. + * @deprecated Use `decode` with the `mode` set to `Strict`. + */ +export function decodeStrict(data, options = EntityLevel.XML) { + var _a; + const opts = typeof options === "number" ? { level: options } : options; + (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = DecodingMode.Strict); + return decode(data, opts); +} +/** + * Encodes a string with entities. + * + * @param data String to encode. + * @param options Encoding options. + */ +export function encode(data, options = EntityLevel.XML) { + const opts = typeof options === "number" ? { level: options } : options; + // Mode `UTF8` just escapes XML entities + if (opts.mode === EncodingMode.UTF8) + return escapeUTF8(data); + if (opts.mode === EncodingMode.Attribute) + return escapeAttribute(data); + if (opts.mode === EncodingMode.Text) + return escapeText(data); + if (opts.level === EntityLevel.HTML) { + if (opts.mode === EncodingMode.ASCII) { + return encodeNonAsciiHTML(data); + } + return encodeHTML(data); + } + // ASCII and Extensive are equivalent + return encodeXML(data); +} +export { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from "./escape.js"; +export { encodeHTML, encodeNonAsciiHTML, +// Legacy aliases (deprecated) +encodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from "./encode.js"; +export { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, +// Legacy aliases (deprecated) +decodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from "./decode.js"; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/esm/index.js.map b/node_modules/entities/lib/esm/index.js.map new file mode 100644 index 0000000..5f634fc --- /dev/null +++ b/node_modules/entities/lib/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACH,SAAS,EACT,UAAU,EACV,eAAe,EACf,UAAU,GACb,MAAM,aAAa,CAAC;AAErB,wCAAwC;AACxC,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACnB,iCAAiC;IACjC,2CAAO,CAAA;IACP,mEAAmE;IACnE,6CAAQ,CAAA;AACZ,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,MAAM,CAAN,IAAY,YA2BX;AA3BD,WAAY,YAAY;IACpB;;;OAGG;IACH,+CAAI,CAAA;IACJ;;;;OAIG;IACH,iDAAK,CAAA;IACL;;;OAGG;IACH,yDAAS,CAAA;IACT;;;OAGG;IACH,yDAAS,CAAA;IACT;;;OAGG;IACH,+CAAI,CAAA;AACR,CAAC,EA3BW,YAAY,KAAZ,YAAY,QA2BvB;AAsBD;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAClB,IAAY,EACZ,UAAyC,WAAW,CAAC,GAAG;IAExD,MAAM,KAAK,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAEpE,IAAI,KAAK,KAAK,WAAW,CAAC,IAAI,EAAE;QAC5B,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACjC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CACxB,IAAY,EACZ,UAAyC,WAAW,CAAC,GAAG;;IAExD,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACxE,MAAA,IAAI,CAAC,IAAI,oCAAT,IAAI,CAAC,IAAI,GAAK,YAAY,CAAC,MAAM,EAAC;IAElC,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC;AAkBD;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAClB,IAAY,EACZ,UAAyC,WAAW,CAAC,GAAG;IAExD,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAExE,wCAAwC;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS;QAAE,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IACvE,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAE7D,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,IAAI,EAAE;QACjC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,EAAE;YAClC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;SACnC;QAED,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;KAC3B;IAED,qCAAqC;IACrC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,OAAO,EACH,SAAS,EACT,MAAM,EACN,UAAU,EACV,eAAe,EACf,UAAU,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EACH,UAAU,EACV,kBAAkB;AAClB,8BAA8B;AAC9B,UAAU,IAAI,WAAW,EACzB,UAAU,IAAI,WAAW,GAC5B,MAAM,aAAa,CAAC;AAErB,OAAO,EACH,aAAa,EACb,YAAY,EACZ,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,mBAAmB;AACnB,8BAA8B;AAC9B,UAAU,IAAI,WAAW,EACzB,UAAU,IAAI,WAAW,EACzB,gBAAgB,IAAI,iBAAiB,EACrC,gBAAgB,IAAI,iBAAiB,EACrC,SAAS,IAAI,eAAe,GAC/B,MAAM,aAAa,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/esm/package.json b/node_modules/entities/lib/esm/package.json new file mode 100644 index 0000000..089153b --- /dev/null +++ b/node_modules/entities/lib/esm/package.json @@ -0,0 +1 @@ +{"type":"module"} diff --git a/node_modules/entities/lib/generated/decode-data-html.d.ts b/node_modules/entities/lib/generated/decode-data-html.d.ts new file mode 100644 index 0000000..9cfc4f4 --- /dev/null +++ b/node_modules/entities/lib/generated/decode-data-html.d.ts @@ -0,0 +1,3 @@ +declare const _default: Uint16Array; +export default _default; +//# sourceMappingURL=decode-data-html.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/generated/decode-data-html.d.ts.map b/node_modules/entities/lib/generated/decode-data-html.d.ts.map new file mode 100644 index 0000000..6d4d64b --- /dev/null +++ b/node_modules/entities/lib/generated/decode-data-html.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"decode-data-html.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["generated/decode-data-html.ts"],"names":[],"mappings":";AAEA,wBAKE"} \ No newline at end of file diff --git a/node_modules/entities/lib/generated/decode-data-html.js b/node_modules/entities/lib/generated/decode-data-html.js new file mode 100644 index 0000000..295cd9b --- /dev/null +++ b/node_modules/entities/lib/generated/decode-data-html.js @@ -0,0 +1,9 @@ +"use strict"; +// Generated using scripts/write-decode-map.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = new Uint16Array( +// prettier-ignore +"\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c" + .split("") + .map(function (c) { return c.charCodeAt(0); })); +//# sourceMappingURL=decode-data-html.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/generated/decode-data-html.js.map b/node_modules/entities/lib/generated/decode-data-html.js.map new file mode 100644 index 0000000..5732f6f --- /dev/null +++ b/node_modules/entities/lib/generated/decode-data-html.js.map @@ -0,0 +1 @@ +{"version":3,"file":"decode-data-html.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["generated/decode-data-html.ts"],"names":[],"mappings":";AAAA,8CAA8C;;AAE9C,kBAAe,IAAI,WAAW;AAC1B,kBAAkB;AAClB,268CAA268C;KACt68C,KAAK,CAAC,EAAE,CAAC;KACT,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAf,CAAe,CAAC,CACnC,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/generated/decode-data-xml.d.ts b/node_modules/entities/lib/generated/decode-data-xml.d.ts new file mode 100644 index 0000000..4a3f533 --- /dev/null +++ b/node_modules/entities/lib/generated/decode-data-xml.d.ts @@ -0,0 +1,3 @@ +declare const _default: Uint16Array; +export default _default; +//# sourceMappingURL=decode-data-xml.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/generated/decode-data-xml.d.ts.map b/node_modules/entities/lib/generated/decode-data-xml.d.ts.map new file mode 100644 index 0000000..be2a9a2 --- /dev/null +++ b/node_modules/entities/lib/generated/decode-data-xml.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"decode-data-xml.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["generated/decode-data-xml.ts"],"names":[],"mappings":";AAEA,wBAKE"} \ No newline at end of file diff --git a/node_modules/entities/lib/generated/decode-data-xml.js b/node_modules/entities/lib/generated/decode-data-xml.js new file mode 100644 index 0000000..8fee783 --- /dev/null +++ b/node_modules/entities/lib/generated/decode-data-xml.js @@ -0,0 +1,9 @@ +"use strict"; +// Generated using scripts/write-decode-map.ts +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = new Uint16Array( +// prettier-ignore +"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022" + .split("") + .map(function (c) { return c.charCodeAt(0); })); +//# sourceMappingURL=decode-data-xml.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/generated/decode-data-xml.js.map b/node_modules/entities/lib/generated/decode-data-xml.js.map new file mode 100644 index 0000000..569fef4 --- /dev/null +++ b/node_modules/entities/lib/generated/decode-data-xml.js.map @@ -0,0 +1 @@ +{"version":3,"file":"decode-data-xml.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["generated/decode-data-xml.ts"],"names":[],"mappings":";AAAA,8CAA8C;;AAE9C,kBAAe,IAAI,WAAW;AAC1B,kBAAkB;AAClB,uFAAuF;KAClF,KAAK,CAAC,EAAE,CAAC;KACT,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAf,CAAe,CAAC,CACnC,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/generated/encode-html.d.ts b/node_modules/entities/lib/generated/encode-html.d.ts new file mode 100644 index 0000000..0704827 --- /dev/null +++ b/node_modules/entities/lib/generated/encode-html.d.ts @@ -0,0 +1,8 @@ +type EncodeTrieNode = string | { + v?: string; + n: number | Map<number, EncodeTrieNode>; + o?: string; +}; +declare const _default: Map<number, EncodeTrieNode>; +export default _default; +//# sourceMappingURL=encode-html.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/generated/encode-html.d.ts.map b/node_modules/entities/lib/generated/encode-html.d.ts.map new file mode 100644 index 0000000..e665a6e --- /dev/null +++ b/node_modules/entities/lib/generated/encode-html.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"encode-html.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["generated/encode-html.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GACb,MAAM,GACN;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;;AAY1E,wBAAo+tB"} \ No newline at end of file diff --git a/node_modules/entities/lib/generated/encode-html.js b/node_modules/entities/lib/generated/encode-html.js new file mode 100644 index 0000000..071e853 --- /dev/null +++ b/node_modules/entities/lib/generated/encode-html.js @@ -0,0 +1,12 @@ +"use strict"; +// Generated using scripts/write-encode-map.ts +Object.defineProperty(exports, "__esModule", { value: true }); +function restoreDiff(arr) { + for (var i = 1; i < arr.length; i++) { + arr[i][0] += arr[i - 1][0] + 1; + } + return arr; +} +// prettier-ignore +exports.default = new Map(/* #__PURE__ */ restoreDiff([[9, " "], [0, " "], [22, "!"], [0, """], [0, "#"], [0, "$"], [0, "%"], [0, "&"], [0, "'"], [0, "("], [0, ")"], [0, "*"], [0, "+"], [0, ","], [1, "."], [0, "/"], [10, ":"], [0, ";"], [0, { v: "<", n: 8402, o: "<⃒" }], [0, { v: "=", n: 8421, o: "=⃥" }], [0, { v: ">", n: 8402, o: ">⃒" }], [0, "?"], [0, "@"], [26, "["], [0, "\"], [0, "]"], [0, "^"], [0, "_"], [0, "`"], [5, { n: 106, o: "fj" }], [20, "{"], [0, "|"], [0, "}"], [34, " "], [0, "¡"], [0, "¢"], [0, "£"], [0, "¤"], [0, "¥"], [0, "¦"], [0, "§"], [0, "¨"], [0, "©"], [0, "ª"], [0, "«"], [0, "¬"], [0, "­"], [0, "®"], [0, "¯"], [0, "°"], [0, "±"], [0, "²"], [0, "³"], [0, "´"], [0, "µ"], [0, "¶"], [0, "·"], [0, "¸"], [0, "¹"], [0, "º"], [0, "»"], [0, "¼"], [0, "½"], [0, "¾"], [0, "¿"], [0, "À"], [0, "Á"], [0, "Â"], [0, "Ã"], [0, "Ä"], [0, "Å"], [0, "Æ"], [0, "Ç"], [0, "È"], [0, "É"], [0, "Ê"], [0, "Ë"], [0, "Ì"], [0, "Í"], [0, "Î"], [0, "Ï"], [0, "Ð"], [0, "Ñ"], [0, "Ò"], [0, "Ó"], [0, "Ô"], [0, "Õ"], [0, "Ö"], [0, "×"], [0, "Ø"], [0, "Ù"], [0, "Ú"], [0, "Û"], [0, "Ü"], [0, "Ý"], [0, "Þ"], [0, "ß"], [0, "à"], [0, "á"], [0, "â"], [0, "ã"], [0, "ä"], [0, "å"], [0, "æ"], [0, "ç"], [0, "è"], [0, "é"], [0, "ê"], [0, "ë"], [0, "ì"], [0, "í"], [0, "î"], [0, "ï"], [0, "ð"], [0, "ñ"], [0, "ò"], [0, "ó"], [0, "ô"], [0, "õ"], [0, "ö"], [0, "÷"], [0, "ø"], [0, "ù"], [0, "ú"], [0, "û"], [0, "ü"], [0, "ý"], [0, "þ"], [0, "ÿ"], [0, "Ā"], [0, "ā"], [0, "Ă"], [0, "ă"], [0, "Ą"], [0, "ą"], [0, "Ć"], [0, "ć"], [0, "Ĉ"], [0, "ĉ"], [0, "Ċ"], [0, "ċ"], [0, "Č"], [0, "č"], [0, "Ď"], [0, "ď"], [0, "Đ"], [0, "đ"], [0, "Ē"], [0, "ē"], [2, "Ė"], [0, "ė"], [0, "Ę"], [0, "ę"], [0, "Ě"], [0, "ě"], [0, "Ĝ"], [0, "ĝ"], [0, "Ğ"], [0, "ğ"], [0, "Ġ"], [0, "ġ"], [0, "Ģ"], [1, "Ĥ"], [0, "ĥ"], [0, "Ħ"], [0, "ħ"], [0, "Ĩ"], [0, "ĩ"], [0, "Ī"], [0, "ī"], [2, "Į"], [0, "į"], [0, "İ"], [0, "ı"], [0, "IJ"], [0, "ij"], [0, "Ĵ"], [0, "ĵ"], [0, "Ķ"], [0, "ķ"], [0, "ĸ"], [0, "Ĺ"], [0, "ĺ"], [0, "Ļ"], [0, "ļ"], [0, "Ľ"], [0, "ľ"], [0, "Ŀ"], [0, "ŀ"], [0, "Ł"], [0, "ł"], [0, "Ń"], [0, "ń"], [0, "Ņ"], [0, "ņ"], [0, "Ň"], [0, "ň"], [0, "ʼn"], [0, "Ŋ"], [0, "ŋ"], [0, "Ō"], [0, "ō"], [2, "Ő"], [0, "ő"], [0, "Œ"], [0, "œ"], [0, "Ŕ"], [0, "ŕ"], [0, "Ŗ"], [0, "ŗ"], [0, "Ř"], [0, "ř"], [0, "Ś"], [0, "ś"], [0, "Ŝ"], [0, "ŝ"], [0, "Ş"], [0, "ş"], [0, "Š"], [0, "š"], [0, "Ţ"], [0, "ţ"], [0, "Ť"], [0, "ť"], [0, "Ŧ"], [0, "ŧ"], [0, "Ũ"], [0, "ũ"], [0, "Ū"], [0, "ū"], [0, "Ŭ"], [0, "ŭ"], [0, "Ů"], [0, "ů"], [0, "Ű"], [0, "ű"], [0, "Ų"], [0, "ų"], [0, "Ŵ"], [0, "ŵ"], [0, "Ŷ"], [0, "ŷ"], [0, "Ÿ"], [0, "Ź"], [0, "ź"], [0, "Ż"], [0, "ż"], [0, "Ž"], [0, "ž"], [19, "ƒ"], [34, "Ƶ"], [63, "ǵ"], [65, "ȷ"], [142, "ˆ"], [0, "ˇ"], [16, "˘"], [0, "˙"], [0, "˚"], [0, "˛"], [0, "˜"], [0, "˝"], [51, "̑"], [127, "Α"], [0, "Β"], [0, "Γ"], [0, "Δ"], [0, "Ε"], [0, "Ζ"], [0, "Η"], [0, "Θ"], [0, "Ι"], [0, "Κ"], [0, "Λ"], [0, "Μ"], [0, "Ν"], [0, "Ξ"], [0, "Ο"], [0, "Π"], [0, "Ρ"], [1, "Σ"], [0, "Τ"], [0, "Υ"], [0, "Φ"], [0, "Χ"], [0, "Ψ"], [0, "Ω"], [7, "α"], [0, "β"], [0, "γ"], [0, "δ"], [0, "ε"], [0, "ζ"], [0, "η"], [0, "θ"], [0, "ι"], [0, "κ"], [0, "λ"], [0, "μ"], [0, "ν"], [0, "ξ"], [0, "ο"], [0, "π"], [0, "ρ"], [0, "ς"], [0, "σ"], [0, "τ"], [0, "υ"], [0, "φ"], [0, "χ"], [0, "ψ"], [0, "ω"], [7, "ϑ"], [0, "ϒ"], [2, "ϕ"], [0, "ϖ"], [5, "Ϝ"], [0, "ϝ"], [18, "ϰ"], [0, "ϱ"], [3, "ϵ"], [0, "϶"], [10, "Ё"], [0, "Ђ"], [0, "Ѓ"], [0, "Є"], [0, "Ѕ"], [0, "І"], [0, "Ї"], [0, "Ј"], [0, "Љ"], [0, "Њ"], [0, "Ћ"], [0, "Ќ"], [1, "Ў"], [0, "Џ"], [0, "А"], [0, "Б"], [0, "В"], [0, "Г"], [0, "Д"], [0, "Е"], [0, "Ж"], [0, "З"], [0, "И"], [0, "Й"], [0, "К"], [0, "Л"], [0, "М"], [0, "Н"], [0, "О"], [0, "П"], [0, "Р"], [0, "С"], [0, "Т"], [0, "У"], [0, "Ф"], [0, "Х"], [0, "Ц"], [0, "Ч"], [0, "Ш"], [0, "Щ"], [0, "Ъ"], [0, "Ы"], [0, "Ь"], [0, "Э"], [0, "Ю"], [0, "Я"], [0, "а"], [0, "б"], [0, "в"], [0, "г"], [0, "д"], [0, "е"], [0, "ж"], [0, "з"], [0, "и"], [0, "й"], [0, "к"], [0, "л"], [0, "м"], [0, "н"], [0, "о"], [0, "п"], [0, "р"], [0, "с"], [0, "т"], [0, "у"], [0, "ф"], [0, "х"], [0, "ц"], [0, "ч"], [0, "ш"], [0, "щ"], [0, "ъ"], [0, "ы"], [0, "ь"], [0, "э"], [0, "ю"], [0, "я"], [1, "ё"], [0, "ђ"], [0, "ѓ"], [0, "є"], [0, "ѕ"], [0, "і"], [0, "ї"], [0, "ј"], [0, "љ"], [0, "њ"], [0, "ћ"], [0, "ќ"], [1, "ў"], [0, "џ"], [7074, " "], [0, " "], [0, " "], [0, " "], [1, " "], [0, " "], [0, " "], [0, " "], [0, "​"], [0, "‌"], [0, "‍"], [0, "‎"], [0, "‏"], [0, "‐"], [2, "–"], [0, "—"], [0, "―"], [0, "‖"], [1, "‘"], [0, "’"], [0, "‚"], [1, "“"], [0, "”"], [0, "„"], [1, "†"], [0, "‡"], [0, "•"], [2, "‥"], [0, "…"], [9, "‰"], [0, "‱"], [0, "′"], [0, "″"], [0, "‴"], [0, "‵"], [3, "‹"], [0, "›"], [3, "‾"], [2, "⁁"], [1, "⁃"], [0, "⁄"], [10, "⁏"], [7, "⁗"], [7, { v: " ", n: 8202, o: "  " }], [0, "⁠"], [0, "⁡"], [0, "⁢"], [0, "⁣"], [72, "€"], [46, "⃛"], [0, "⃜"], [37, "ℂ"], [2, "℅"], [4, "ℊ"], [0, "ℋ"], [0, "ℌ"], [0, "ℍ"], [0, "ℎ"], [0, "ℏ"], [0, "ℐ"], [0, "ℑ"], [0, "ℒ"], [0, "ℓ"], [1, "ℕ"], [0, "№"], [0, "℗"], [0, "℘"], [0, "ℙ"], [0, "ℚ"], [0, "ℛ"], [0, "ℜ"], [0, "ℝ"], [0, "℞"], [3, "™"], [1, "ℤ"], [2, "℧"], [0, "ℨ"], [0, "℩"], [2, "ℬ"], [0, "ℭ"], [1, "ℯ"], [0, "ℰ"], [0, "ℱ"], [1, "ℳ"], [0, "ℴ"], [0, "ℵ"], [0, "ℶ"], [0, "ℷ"], [0, "ℸ"], [12, "ⅅ"], [0, "ⅆ"], [0, "ⅇ"], [0, "ⅈ"], [10, "⅓"], [0, "⅔"], [0, "⅕"], [0, "⅖"], [0, "⅗"], [0, "⅘"], [0, "⅙"], [0, "⅚"], [0, "⅛"], [0, "⅜"], [0, "⅝"], [0, "⅞"], [49, "←"], [0, "↑"], [0, "→"], [0, "↓"], [0, "↔"], [0, "↕"], [0, "↖"], [0, "↗"], [0, "↘"], [0, "↙"], [0, "↚"], [0, "↛"], [1, { v: "↝", n: 824, o: "↝̸" }], [0, "↞"], [0, "↟"], [0, "↠"], [0, "↡"], [0, "↢"], [0, "↣"], [0, "↤"], [0, "↥"], [0, "↦"], [0, "↧"], [1, "↩"], [0, "↪"], [0, "↫"], [0, "↬"], [0, "↭"], [0, "↮"], [1, "↰"], [0, "↱"], [0, "↲"], [0, "↳"], [1, "↵"], [0, "↶"], [0, "↷"], [2, "↺"], [0, "↻"], [0, "↼"], [0, "↽"], [0, "↾"], [0, "↿"], [0, "⇀"], [0, "⇁"], [0, "⇂"], [0, "⇃"], [0, "⇄"], [0, "⇅"], [0, "⇆"], [0, "⇇"], [0, "⇈"], [0, "⇉"], [0, "⇊"], [0, "⇋"], [0, "⇌"], [0, "⇍"], [0, "⇎"], [0, "⇏"], [0, "⇐"], [0, "⇑"], [0, "⇒"], [0, "⇓"], [0, "⇔"], [0, "⇕"], [0, "⇖"], [0, "⇗"], [0, "⇘"], [0, "⇙"], [0, "⇚"], [0, "⇛"], [1, "⇝"], [6, "⇤"], [0, "⇥"], [15, "⇵"], [7, "⇽"], [0, "⇾"], [0, "⇿"], [0, "∀"], [0, "∁"], [0, { v: "∂", n: 824, o: "∂̸" }], [0, "∃"], [0, "∄"], [0, "∅"], [1, "∇"], [0, "∈"], [0, "∉"], [1, "∋"], [0, "∌"], [2, "∏"], [0, "∐"], [0, "∑"], [0, "−"], [0, "∓"], [0, "∔"], [1, "∖"], [0, "∗"], [0, "∘"], [1, "√"], [2, "∝"], [0, "∞"], [0, "∟"], [0, { v: "∠", n: 8402, o: "∠⃒" }], [0, "∡"], [0, "∢"], [0, "∣"], [0, "∤"], [0, "∥"], [0, "∦"], [0, "∧"], [0, "∨"], [0, { v: "∩", n: 65024, o: "∩︀" }], [0, { v: "∪", n: 65024, o: "∪︀" }], [0, "∫"], [0, "∬"], [0, "∭"], [0, "∮"], [0, "∯"], [0, "∰"], [0, "∱"], [0, "∲"], [0, "∳"], [0, "∴"], [0, "∵"], [0, "∶"], [0, "∷"], [0, "∸"], [1, "∺"], [0, "∻"], [0, { v: "∼", n: 8402, o: "∼⃒" }], [0, { v: "∽", n: 817, o: "∽̱" }], [0, { v: "∾", n: 819, o: "∾̳" }], [0, "∿"], [0, "≀"], [0, "≁"], [0, { v: "≂", n: 824, o: "≂̸" }], [0, "≃"], [0, "≄"], [0, "≅"], [0, "≆"], [0, "≇"], [0, "≈"], [0, "≉"], [0, "≊"], [0, { v: "≋", n: 824, o: "≋̸" }], [0, "≌"], [0, { v: "≍", n: 8402, o: "≍⃒" }], [0, { v: "≎", n: 824, o: "≎̸" }], [0, { v: "≏", n: 824, o: "≏̸" }], [0, { v: "≐", n: 824, o: "≐̸" }], [0, "≑"], [0, "≒"], [0, "≓"], [0, "≔"], [0, "≕"], [0, "≖"], [0, "≗"], [1, "≙"], [0, "≚"], [1, "≜"], [2, "≟"], [0, "≠"], [0, { v: "≡", n: 8421, o: "≡⃥" }], [0, "≢"], [1, { v: "≤", n: 8402, o: "≤⃒" }], [0, { v: "≥", n: 8402, o: "≥⃒" }], [0, { v: "≦", n: 824, o: "≦̸" }], [0, { v: "≧", n: 824, o: "≧̸" }], [0, { v: "≨", n: 65024, o: "≨︀" }], [0, { v: "≩", n: 65024, o: "≩︀" }], [0, { v: "≪", n: new Map(/* #__PURE__ */ restoreDiff([[824, "≪̸"], [7577, "≪⃒"]])) }], [0, { v: "≫", n: new Map(/* #__PURE__ */ restoreDiff([[824, "≫̸"], [7577, "≫⃒"]])) }], [0, "≬"], [0, "≭"], [0, "≮"], [0, "≯"], [0, "≰"], [0, "≱"], [0, "≲"], [0, "≳"], [0, "≴"], [0, "≵"], [0, "≶"], [0, "≷"], [0, "≸"], [0, "≹"], [0, "≺"], [0, "≻"], [0, "≼"], [0, "≽"], [0, "≾"], [0, { v: "≿", n: 824, o: "≿̸" }], [0, "⊀"], [0, "⊁"], [0, { v: "⊂", n: 8402, o: "⊂⃒" }], [0, { v: "⊃", n: 8402, o: "⊃⃒" }], [0, "⊄"], [0, "⊅"], [0, "⊆"], [0, "⊇"], [0, "⊈"], [0, "⊉"], [0, { v: "⊊", n: 65024, o: "⊊︀" }], [0, { v: "⊋", n: 65024, o: "⊋︀" }], [1, "⊍"], [0, "⊎"], [0, { v: "⊏", n: 824, o: "⊏̸" }], [0, { v: "⊐", n: 824, o: "⊐̸" }], [0, "⊑"], [0, "⊒"], [0, { v: "⊓", n: 65024, o: "⊓︀" }], [0, { v: "⊔", n: 65024, o: "⊔︀" }], [0, "⊕"], [0, "⊖"], [0, "⊗"], [0, "⊘"], [0, "⊙"], [0, "⊚"], [0, "⊛"], [1, "⊝"], [0, "⊞"], [0, "⊟"], [0, "⊠"], [0, "⊡"], [0, "⊢"], [0, "⊣"], [0, "⊤"], [0, "⊥"], [1, "⊧"], [0, "⊨"], [0, "⊩"], [0, "⊪"], [0, "⊫"], [0, "⊬"], [0, "⊭"], [0, "⊮"], [0, "⊯"], [0, "⊰"], [1, "⊲"], [0, "⊳"], [0, { v: "⊴", n: 8402, o: "⊴⃒" }], [0, { v: "⊵", n: 8402, o: "⊵⃒" }], [0, "⊶"], [0, "⊷"], [0, "⊸"], [0, "⊹"], [0, "⊺"], [0, "⊻"], [1, "⊽"], [0, "⊾"], [0, "⊿"], [0, "⋀"], [0, "⋁"], [0, "⋂"], [0, "⋃"], [0, "⋄"], [0, "⋅"], [0, "⋆"], [0, "⋇"], [0, "⋈"], [0, "⋉"], [0, "⋊"], [0, "⋋"], [0, "⋌"], [0, "⋍"], [0, "⋎"], [0, "⋏"], [0, "⋐"], [0, "⋑"], [0, "⋒"], [0, "⋓"], [0, "⋔"], [0, "⋕"], [0, "⋖"], [0, "⋗"], [0, { v: "⋘", n: 824, o: "⋘̸" }], [0, { v: "⋙", n: 824, o: "⋙̸" }], [0, { v: "⋚", n: 65024, o: "⋚︀" }], [0, { v: "⋛", n: 65024, o: "⋛︀" }], [2, "⋞"], [0, "⋟"], [0, "⋠"], [0, "⋡"], [0, "⋢"], [0, "⋣"], [2, "⋦"], [0, "⋧"], [0, "⋨"], [0, "⋩"], [0, "⋪"], [0, "⋫"], [0, "⋬"], [0, "⋭"], [0, "⋮"], [0, "⋯"], [0, "⋰"], [0, "⋱"], [0, "⋲"], [0, "⋳"], [0, "⋴"], [0, { v: "⋵", n: 824, o: "⋵̸" }], [0, "⋶"], [0, "⋷"], [1, { v: "⋹", n: 824, o: "⋹̸" }], [0, "⋺"], [0, "⋻"], [0, "⋼"], [0, "⋽"], [0, "⋾"], [6, "⌅"], [0, "⌆"], [1, "⌈"], [0, "⌉"], [0, "⌊"], [0, "⌋"], [0, "⌌"], [0, "⌍"], [0, "⌎"], [0, "⌏"], [0, "⌐"], [1, "⌒"], [0, "⌓"], [1, "⌕"], [0, "⌖"], [5, "⌜"], [0, "⌝"], [0, "⌞"], [0, "⌟"], [2, "⌢"], [0, "⌣"], [9, "⌭"], [0, "⌮"], [7, "⌶"], [6, "⌽"], [1, "⌿"], [60, "⍼"], [51, "⎰"], [0, "⎱"], [2, "⎴"], [0, "⎵"], [0, "⎶"], [37, "⏜"], [0, "⏝"], [0, "⏞"], [0, "⏟"], [2, "⏢"], [4, "⏧"], [59, "␣"], [164, "Ⓢ"], [55, "─"], [1, "│"], [9, "┌"], [3, "┐"], [3, "└"], [3, "┘"], [3, "├"], [7, "┤"], [7, "┬"], [7, "┴"], [7, "┼"], [19, "═"], [0, "║"], [0, "╒"], [0, "╓"], [0, "╔"], [0, "╕"], [0, "╖"], [0, "╗"], [0, "╘"], [0, "╙"], [0, "╚"], [0, "╛"], [0, "╜"], [0, "╝"], [0, "╞"], [0, "╟"], [0, "╠"], [0, "╡"], [0, "╢"], [0, "╣"], [0, "╤"], [0, "╥"], [0, "╦"], [0, "╧"], [0, "╨"], [0, "╩"], [0, "╪"], [0, "╫"], [0, "╬"], [19, "▀"], [3, "▄"], [3, "█"], [8, "░"], [0, "▒"], [0, "▓"], [13, "□"], [8, "▪"], [0, "▫"], [1, "▭"], [0, "▮"], [2, "▱"], [1, "△"], [0, "▴"], [0, "▵"], [2, "▸"], [0, "▹"], [3, "▽"], [0, "▾"], [0, "▿"], [2, "◂"], [0, "◃"], [6, "◊"], [0, "○"], [32, "◬"], [2, "◯"], [8, "◸"], [0, "◹"], [0, "◺"], [0, "◻"], [0, "◼"], [8, "★"], [0, "☆"], [7, "☎"], [49, "♀"], [1, "♂"], [29, "♠"], [2, "♣"], [1, "♥"], [0, "♦"], [3, "♪"], [2, "♭"], [0, "♮"], [0, "♯"], [163, "✓"], [3, "✗"], [8, "✠"], [21, "✶"], [33, "❘"], [25, "❲"], [0, "❳"], [84, "⟈"], [0, "⟉"], [28, "⟦"], [0, "⟧"], [0, "⟨"], [0, "⟩"], [0, "⟪"], [0, "⟫"], [0, "⟬"], [0, "⟭"], [7, "⟵"], [0, "⟶"], [0, "⟷"], [0, "⟸"], [0, "⟹"], [0, "⟺"], [1, "⟼"], [2, "⟿"], [258, "⤂"], [0, "⤃"], [0, "⤄"], [0, "⤅"], [6, "⤌"], [0, "⤍"], [0, "⤎"], [0, "⤏"], [0, "⤐"], [0, "⤑"], [0, "⤒"], [0, "⤓"], [2, "⤖"], [2, "⤙"], [0, "⤚"], [0, "⤛"], [0, "⤜"], [0, "⤝"], [0, "⤞"], [0, "⤟"], [0, "⤠"], [2, "⤣"], [0, "⤤"], [0, "⤥"], [0, "⤦"], [0, "⤧"], [0, "⤨"], [0, "⤩"], [0, "⤪"], [8, { v: "⤳", n: 824, o: "⤳̸" }], [1, "⤵"], [0, "⤶"], [0, "⤷"], [0, "⤸"], [0, "⤹"], [2, "⤼"], [0, "⤽"], [7, "⥅"], [2, "⥈"], [0, "⥉"], [0, "⥊"], [0, "⥋"], [2, "⥎"], [0, "⥏"], [0, "⥐"], [0, "⥑"], [0, "⥒"], [0, "⥓"], [0, "⥔"], [0, "⥕"], [0, "⥖"], [0, "⥗"], [0, "⥘"], [0, "⥙"], [0, "⥚"], [0, "⥛"], [0, "⥜"], [0, "⥝"], [0, "⥞"], [0, "⥟"], [0, "⥠"], [0, "⥡"], [0, "⥢"], [0, "⥣"], [0, "⥤"], [0, "⥥"], [0, "⥦"], [0, "⥧"], [0, "⥨"], [0, "⥩"], [0, "⥪"], [0, "⥫"], [0, "⥬"], [0, "⥭"], [0, "⥮"], [0, "⥯"], [0, "⥰"], [0, "⥱"], [0, "⥲"], [0, "⥳"], [0, "⥴"], [0, "⥵"], [0, "⥶"], [1, "⥸"], [0, "⥹"], [1, "⥻"], [0, "⥼"], [0, "⥽"], [0, "⥾"], [0, "⥿"], [5, "⦅"], [0, "⦆"], [4, "⦋"], [0, "⦌"], [0, "⦍"], [0, "⦎"], [0, "⦏"], [0, "⦐"], [0, "⦑"], [0, "⦒"], [0, "⦓"], [0, "⦔"], [0, "⦕"], [0, "⦖"], [3, "⦚"], [1, "⦜"], [0, "⦝"], [6, "⦤"], [0, "⦥"], [0, "⦦"], [0, "⦧"], [0, "⦨"], [0, "⦩"], [0, "⦪"], [0, "⦫"], [0, "⦬"], [0, "⦭"], [0, "⦮"], [0, "⦯"], [0, "⦰"], [0, "⦱"], [0, "⦲"], [0, "⦳"], [0, "⦴"], [0, "⦵"], [0, "⦶"], [0, "⦷"], [1, "⦹"], [1, "⦻"], [0, "⦼"], [1, "⦾"], [0, "⦿"], [0, "⧀"], [0, "⧁"], [0, "⧂"], [0, "⧃"], [0, "⧄"], [0, "⧅"], [3, "⧉"], [3, "⧍"], [0, "⧎"], [0, { v: "⧏", n: 824, o: "⧏̸" }], [0, { v: "⧐", n: 824, o: "⧐̸" }], [11, "⧜"], [0, "⧝"], [0, "⧞"], [4, "⧣"], [0, "⧤"], [0, "⧥"], [5, "⧫"], [8, "⧴"], [1, "⧶"], [9, "⨀"], [0, "⨁"], [0, "⨂"], [1, "⨄"], [1, "⨆"], [5, "⨌"], [0, "⨍"], [2, "⨐"], [0, "⨑"], [0, "⨒"], [0, "⨓"], [0, "⨔"], [0, "⨕"], [0, "⨖"], [0, "⨗"], [10, "⨢"], [0, "⨣"], [0, "⨤"], [0, "⨥"], [0, "⨦"], [0, "⨧"], [1, "⨩"], [0, "⨪"], [2, "⨭"], [0, "⨮"], [0, "⨯"], [0, "⨰"], [0, "⨱"], [1, "⨳"], [0, "⨴"], [0, "⨵"], [0, "⨶"], [0, "⨷"], [0, "⨸"], [0, "⨹"], [0, "⨺"], [0, "⨻"], [0, "⨼"], [2, "⨿"], [0, "⩀"], [1, "⩂"], [0, "⩃"], [0, "⩄"], [0, "⩅"], [0, "⩆"], [0, "⩇"], [0, "⩈"], [0, "⩉"], [0, "⩊"], [0, "⩋"], [0, "⩌"], [0, "⩍"], [2, "⩐"], [2, "⩓"], [0, "⩔"], [0, "⩕"], [0, "⩖"], [0, "⩗"], [0, "⩘"], [1, "⩚"], [0, "⩛"], [0, "⩜"], [0, "⩝"], [1, "⩟"], [6, "⩦"], [3, "⩪"], [2, { v: "⩭", n: 824, o: "⩭̸" }], [0, "⩮"], [0, "⩯"], [0, { v: "⩰", n: 824, o: "⩰̸" }], [0, "⩱"], [0, "⩲"], [0, "⩳"], [0, "⩴"], [0, "⩵"], [1, "⩷"], [0, "⩸"], [0, "⩹"], [0, "⩺"], [0, "⩻"], [0, "⩼"], [0, { v: "⩽", n: 824, o: "⩽̸" }], [0, { v: "⩾", n: 824, o: "⩾̸" }], [0, "⩿"], [0, "⪀"], [0, "⪁"], [0, "⪂"], [0, "⪃"], [0, "⪄"], [0, "⪅"], [0, "⪆"], [0, "⪇"], [0, "⪈"], [0, "⪉"], [0, "⪊"], [0, "⪋"], [0, "⪌"], [0, "⪍"], [0, "⪎"], [0, "⪏"], [0, "⪐"], [0, "⪑"], [0, "⪒"], [0, "⪓"], [0, "⪔"], [0, "⪕"], [0, "⪖"], [0, "⪗"], [0, "⪘"], [0, "⪙"], [0, "⪚"], [2, "⪝"], [0, "⪞"], [0, "⪟"], [0, "⪠"], [0, { v: "⪡", n: 824, o: "⪡̸" }], [0, { v: "⪢", n: 824, o: "⪢̸" }], [1, "⪤"], [0, "⪥"], [0, "⪦"], [0, "⪧"], [0, "⪨"], [0, "⪩"], [0, "⪪"], [0, "⪫"], [0, { v: "⪬", n: 65024, o: "⪬︀" }], [0, { v: "⪭", n: 65024, o: "⪭︀" }], [0, "⪮"], [0, { v: "⪯", n: 824, o: "⪯̸" }], [0, { v: "⪰", n: 824, o: "⪰̸" }], [2, "⪳"], [0, "⪴"], [0, "⪵"], [0, "⪶"], [0, "⪷"], [0, "⪸"], [0, "⪹"], [0, "⪺"], [0, "⪻"], [0, "⪼"], [0, "⪽"], [0, "⪾"], [0, "⪿"], [0, "⫀"], [0, "⫁"], [0, "⫂"], [0, "⫃"], [0, "⫄"], [0, { v: "⫅", n: 824, o: "⫅̸" }], [0, { v: "⫆", n: 824, o: "⫆̸" }], [0, "⫇"], [0, "⫈"], [2, { v: "⫋", n: 65024, o: "⫋︀" }], [0, { v: "⫌", n: 65024, o: "⫌︀" }], [2, "⫏"], [0, "⫐"], [0, "⫑"], [0, "⫒"], [0, "⫓"], [0, "⫔"], [0, "⫕"], [0, "⫖"], [0, "⫗"], [0, "⫘"], [0, "⫙"], [0, "⫚"], [0, "⫛"], [8, "⫤"], [1, "⫦"], [0, "⫧"], [0, "⫨"], [0, "⫩"], [1, "⫫"], [0, "⫬"], [0, "⫭"], [0, "⫮"], [0, "⫯"], [0, "⫰"], [0, "⫱"], [0, "⫲"], [0, "⫳"], [9, { v: "⫽", n: 8421, o: "⫽⃥" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, "𝒜"], [1, "𝒞"], [0, "𝒟"], [2, "𝒢"], [2, "𝒥"], [0, "𝒦"], [2, "𝒩"], [0, "𝒪"], [0, "𝒫"], [0, "𝒬"], [1, "𝒮"], [0, "𝒯"], [0, "𝒰"], [0, "𝒱"], [0, "𝒲"], [0, "𝒳"], [0, "𝒴"], [0, "𝒵"], [0, "𝒶"], [0, "𝒷"], [0, "𝒸"], [0, "𝒹"], [1, "𝒻"], [1, "𝒽"], [0, "𝒾"], [0, "𝒿"], [0, "𝓀"], [0, "𝓁"], [0, "𝓂"], [0, "𝓃"], [1, "𝓅"], [0, "𝓆"], [0, "𝓇"], [0, "𝓈"], [0, "𝓉"], [0, "𝓊"], [0, "𝓋"], [0, "𝓌"], [0, "𝓍"], [0, "𝓎"], [0, "𝓏"], [52, "𝔄"], [0, "𝔅"], [1, "𝔇"], [0, "𝔈"], [0, "𝔉"], [0, "𝔊"], [2, "𝔍"], [0, "𝔎"], [0, "𝔏"], [0, "𝔐"], [0, "𝔑"], [0, "𝔒"], [0, "𝔓"], [0, "𝔔"], [1, "𝔖"], [0, "𝔗"], [0, "𝔘"], [0, "𝔙"], [0, "𝔚"], [0, "𝔛"], [0, "𝔜"], [1, "𝔞"], [0, "𝔟"], [0, "𝔠"], [0, "𝔡"], [0, "𝔢"], [0, "𝔣"], [0, "𝔤"], [0, "𝔥"], [0, "𝔦"], [0, "𝔧"], [0, "𝔨"], [0, "𝔩"], [0, "𝔪"], [0, "𝔫"], [0, "𝔬"], [0, "𝔭"], [0, "𝔮"], [0, "𝔯"], [0, "𝔰"], [0, "𝔱"], [0, "𝔲"], [0, "𝔳"], [0, "𝔴"], [0, "𝔵"], [0, "𝔶"], [0, "𝔷"], [0, "𝔸"], [0, "𝔹"], [1, "𝔻"], [0, "𝔼"], [0, "𝔽"], [0, "𝔾"], [1, "𝕀"], [0, "𝕁"], [0, "𝕂"], [0, "𝕃"], [0, "𝕄"], [1, "𝕆"], [3, "𝕊"], [0, "𝕋"], [0, "𝕌"], [0, "𝕍"], [0, "𝕎"], [0, "𝕏"], [0, "𝕐"], [1, "𝕒"], [0, "𝕓"], [0, "𝕔"], [0, "𝕕"], [0, "𝕖"], [0, "𝕗"], [0, "𝕘"], [0, "𝕙"], [0, "𝕚"], [0, "𝕛"], [0, "𝕜"], [0, "𝕝"], [0, "𝕞"], [0, "𝕟"], [0, "𝕠"], [0, "𝕡"], [0, "𝕢"], [0, "𝕣"], [0, "𝕤"], [0, "𝕥"], [0, "𝕦"], [0, "𝕧"], [0, "𝕨"], [0, "𝕩"], [0, "𝕪"], [0, "𝕫"]])) }], [8906, "ff"], [0, "fi"], [0, "fl"], [0, "ffi"], [0, "ffl"]])); +//# sourceMappingURL=encode-html.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/generated/encode-html.js.map b/node_modules/entities/lib/generated/encode-html.js.map new file mode 100644 index 0000000..2d2d9be --- /dev/null +++ b/node_modules/entities/lib/generated/encode-html.js.map @@ -0,0 +1 @@ +{"version":3,"file":"encode-html.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["generated/encode-html.ts"],"names":[],"mappings":";AAAA,8CAA8C;;AAM9C,SAAS,WAAW,CAChB,GAAM;IAEN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KAClC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,kBAAkB;AAClB,kBAAe,IAAI,GAAG,CAAwB,eAAe,CAAA,WAAW,CAAC,CAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,GAAG,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,aAAa,CAAC,EAAC,CAAC,GAAG,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,IAAI,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,uBAAuB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,eAAe,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,cAAc,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,wBAAwB,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,uBAAuB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,uBAAuB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,wBAAwB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,wBAAwB,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,4BAA4B,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,aAAa,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,aAAa,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,aAAa,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,IAAI,GAAG,CAAgB,eAAe,CAAA,WAAW,CAAC,CAAC,CAAC,GAAG,EAAC,QAAQ,CAAC,EAAC,CAAC,IAAI,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,IAAI,GAAG,CAAgB,eAAe,CAAA,WAAW,CAAC,CAAC,CAAC,GAAG,EAAC,QAAQ,CAAC,EAAC,CAAC,IAAI,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,oBAAoB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,aAAa,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,eAAe,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,gBAAgB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,gBAAgB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,mBAAmB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,qBAAqB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,qBAAqB,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,sBAAsB,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,EAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,EAAC,wBAAwB,CAAC,EAAC,CAAC,CAAC,EAAC,0BAA0B,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,yBAAyB,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,YAAY,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,EAAE,EAAC,WAAW,CAAC,EAAC,CAAC,EAAE,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,EAAE,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,GAAG,EAAC,YAAY,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,wBAAwB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,GAAG,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,EAAE,EAAC,QAAQ,CAAC,EAAC,CAAC,EAAE,EAAC,qBAAqB,CAAC,EAAC,CAAC,EAAE,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,EAAE,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,EAAE,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,EAAC,uBAAuB,CAAC,EAAC,CAAC,CAAC,EAAC,wBAAwB,CAAC,EAAC,CAAC,CAAC,EAAC,4BAA4B,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,GAAG,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,cAAc,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,uBAAuB,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC,EAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,EAAC,oBAAoB,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,sBAAsB,CAAC,EAAC,CAAC,CAAC,EAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC,EAAC,qBAAqB,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,mBAAmB,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,sBAAsB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,oBAAoB,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,uBAAuB,EAAC,CAAC,EAAC,CAAC,EAAE,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,gBAAgB,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,EAAE,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,YAAY,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,YAAY,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,aAAa,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,YAAY,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,aAAa,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,YAAY,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,qBAAqB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,kBAAkB,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,2BAA2B,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,iBAAiB,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,oBAAoB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,oBAAoB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,YAAY,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,eAAe,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,MAAM,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,iBAAiB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,iBAAiB,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,WAAW,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,KAAK,EAAC,EAAC,CAAC,EAAC,IAAI,GAAG,CAAgB,eAAe,CAAA,WAAW,CAAC,CAAC,CAAC,KAAK,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,EAAE,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,OAAO,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,IAAI,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,SAAS,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,EAAC,CAAC,CAAC,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/index.d.ts b/node_modules/entities/lib/index.d.ts new file mode 100644 index 0000000..dd4eb11 --- /dev/null +++ b/node_modules/entities/lib/index.d.ts @@ -0,0 +1,96 @@ +import { DecodingMode } from "./decode.js"; +/** The level of entities to support. */ +export declare enum EntityLevel { + /** Support only XML entities. */ + XML = 0, + /** Support HTML entities, which are a superset of XML entities. */ + HTML = 1 +} +export declare enum EncodingMode { + /** + * The output is UTF-8 encoded. Only characters that need escaping within + * XML will be escaped. + */ + UTF8 = 0, + /** + * The output consists only of ASCII characters. Characters that need + * escaping within HTML, and characters that aren't ASCII characters will + * be escaped. + */ + ASCII = 1, + /** + * Encode all characters that have an equivalent entity, as well as all + * characters that are not ASCII characters. + */ + Extensive = 2, + /** + * Encode all characters that have to be escaped in HTML attributes, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + */ + Attribute = 3, + /** + * Encode all characters that have to be escaped in HTML text, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + */ + Text = 4 +} +export interface DecodingOptions { + /** + * The level of entities to support. + * @default {@link EntityLevel.XML} + */ + level?: EntityLevel; + /** + * Decoding mode. If `Legacy`, will support legacy entities not terminated + * with a semicolon (`;`). + * + * Always `Strict` for XML. For HTML, set this to `true` if you are parsing + * an attribute value. + * + * The deprecated `decodeStrict` function defaults this to `Strict`. + * + * @default {@link DecodingMode.Legacy} + */ + mode?: DecodingMode | undefined; +} +/** + * Decodes a string with entities. + * + * @param data String to decode. + * @param options Decoding options. + */ +export declare function decode(data: string, options?: DecodingOptions | EntityLevel): string; +/** + * Decodes a string with entities. Does not allow missing trailing semicolons for entities. + * + * @param data String to decode. + * @param options Decoding options. + * @deprecated Use `decode` with the `mode` set to `Strict`. + */ +export declare function decodeStrict(data: string, options?: DecodingOptions | EntityLevel): string; +/** + * Options for `encode`. + */ +export interface EncodingOptions { + /** + * The level of entities to support. + * @default {@link EntityLevel.XML} + */ + level?: EntityLevel; + /** + * Output format. + * @default {@link EncodingMode.Extensive} + */ + mode?: EncodingMode; +} +/** + * Encodes a string with entities. + * + * @param data String to encode. + * @param options Encoding options. + */ +export declare function encode(data: string, options?: EncodingOptions | EntityLevel): string; +export { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from "./escape.js"; +export { encodeHTML, encodeNonAsciiHTML, encodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from "./encode.js"; +export { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, decodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from "./decode.js"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/node_modules/entities/lib/index.d.ts.map b/node_modules/entities/lib/index.d.ts.map new file mode 100644 index 0000000..cfeef9f --- /dev/null +++ b/node_modules/entities/lib/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,YAAY,EAAE,MAAM,aAAa,CAAC;AASlE,wCAAwC;AACxC,oBAAY,WAAW;IACnB,iCAAiC;IACjC,GAAG,IAAI;IACP,mEAAmE;IACnE,IAAI,IAAI;CACX;AAED,oBAAY,YAAY;IACpB;;;OAGG;IACH,IAAI,IAAA;IACJ;;;;OAIG;IACH,KAAK,IAAA;IACL;;;OAGG;IACH,SAAS,IAAA;IACT;;;OAGG;IACH,SAAS,IAAA;IACT;;;OAGG;IACH,IAAI,IAAA;CACP;AAED,MAAM,WAAW,eAAe;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACnC;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAe,GAAG,WAA6B,GACzD,MAAM,CASR;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAe,GAAG,WAA6B,GACzD,MAAM,CAKR;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,eAAe,GAAG,WAA6B,GACzD,MAAM,CAkBR;AAED,OAAO,EACH,SAAS,EACT,MAAM,EACN,UAAU,EACV,eAAe,EACf,UAAU,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EACH,UAAU,EACV,kBAAkB,EAElB,UAAU,IAAI,WAAW,EACzB,UAAU,IAAI,WAAW,GAC5B,MAAM,aAAa,CAAC;AAErB,OAAO,EACH,aAAa,EACb,YAAY,EACZ,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EAEnB,UAAU,IAAI,WAAW,EACzB,UAAU,IAAI,WAAW,EACzB,gBAAgB,IAAI,iBAAiB,EACrC,gBAAgB,IAAI,iBAAiB,EACrC,SAAS,IAAI,eAAe,GAC/B,MAAM,aAAa,CAAC"} \ No newline at end of file diff --git a/node_modules/entities/lib/index.js b/node_modules/entities/lib/index.js new file mode 100644 index 0000000..f809b1b --- /dev/null +++ b/node_modules/entities/lib/index.js @@ -0,0 +1,126 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLAttribute = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.DecodingMode = exports.EntityDecoder = exports.encodeHTML5 = exports.encodeHTML4 = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = exports.EncodingMode = exports.EntityLevel = void 0; +var decode_js_1 = require("./decode.js"); +var encode_js_1 = require("./encode.js"); +var escape_js_1 = require("./escape.js"); +/** The level of entities to support. */ +var EntityLevel; +(function (EntityLevel) { + /** Support only XML entities. */ + EntityLevel[EntityLevel["XML"] = 0] = "XML"; + /** Support HTML entities, which are a superset of XML entities. */ + EntityLevel[EntityLevel["HTML"] = 1] = "HTML"; +})(EntityLevel = exports.EntityLevel || (exports.EntityLevel = {})); +var EncodingMode; +(function (EncodingMode) { + /** + * The output is UTF-8 encoded. Only characters that need escaping within + * XML will be escaped. + */ + EncodingMode[EncodingMode["UTF8"] = 0] = "UTF8"; + /** + * The output consists only of ASCII characters. Characters that need + * escaping within HTML, and characters that aren't ASCII characters will + * be escaped. + */ + EncodingMode[EncodingMode["ASCII"] = 1] = "ASCII"; + /** + * Encode all characters that have an equivalent entity, as well as all + * characters that are not ASCII characters. + */ + EncodingMode[EncodingMode["Extensive"] = 2] = "Extensive"; + /** + * Encode all characters that have to be escaped in HTML attributes, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + */ + EncodingMode[EncodingMode["Attribute"] = 3] = "Attribute"; + /** + * Encode all characters that have to be escaped in HTML text, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + */ + EncodingMode[EncodingMode["Text"] = 4] = "Text"; +})(EncodingMode = exports.EncodingMode || (exports.EncodingMode = {})); +/** + * Decodes a string with entities. + * + * @param data String to decode. + * @param options Decoding options. + */ +function decode(data, options) { + if (options === void 0) { options = EntityLevel.XML; } + var level = typeof options === "number" ? options : options.level; + if (level === EntityLevel.HTML) { + var mode = typeof options === "object" ? options.mode : undefined; + return (0, decode_js_1.decodeHTML)(data, mode); + } + return (0, decode_js_1.decodeXML)(data); +} +exports.decode = decode; +/** + * Decodes a string with entities. Does not allow missing trailing semicolons for entities. + * + * @param data String to decode. + * @param options Decoding options. + * @deprecated Use `decode` with the `mode` set to `Strict`. + */ +function decodeStrict(data, options) { + var _a; + if (options === void 0) { options = EntityLevel.XML; } + var opts = typeof options === "number" ? { level: options } : options; + (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = decode_js_1.DecodingMode.Strict); + return decode(data, opts); +} +exports.decodeStrict = decodeStrict; +/** + * Encodes a string with entities. + * + * @param data String to encode. + * @param options Encoding options. + */ +function encode(data, options) { + if (options === void 0) { options = EntityLevel.XML; } + var opts = typeof options === "number" ? { level: options } : options; + // Mode `UTF8` just escapes XML entities + if (opts.mode === EncodingMode.UTF8) + return (0, escape_js_1.escapeUTF8)(data); + if (opts.mode === EncodingMode.Attribute) + return (0, escape_js_1.escapeAttribute)(data); + if (opts.mode === EncodingMode.Text) + return (0, escape_js_1.escapeText)(data); + if (opts.level === EntityLevel.HTML) { + if (opts.mode === EncodingMode.ASCII) { + return (0, encode_js_1.encodeNonAsciiHTML)(data); + } + return (0, encode_js_1.encodeHTML)(data); + } + // ASCII and Extensive are equivalent + return (0, escape_js_1.encodeXML)(data); +} +exports.encode = encode; +var escape_js_2 = require("./escape.js"); +Object.defineProperty(exports, "encodeXML", { enumerable: true, get: function () { return escape_js_2.encodeXML; } }); +Object.defineProperty(exports, "escape", { enumerable: true, get: function () { return escape_js_2.escape; } }); +Object.defineProperty(exports, "escapeUTF8", { enumerable: true, get: function () { return escape_js_2.escapeUTF8; } }); +Object.defineProperty(exports, "escapeAttribute", { enumerable: true, get: function () { return escape_js_2.escapeAttribute; } }); +Object.defineProperty(exports, "escapeText", { enumerable: true, get: function () { return escape_js_2.escapeText; } }); +var encode_js_2 = require("./encode.js"); +Object.defineProperty(exports, "encodeHTML", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } }); +Object.defineProperty(exports, "encodeNonAsciiHTML", { enumerable: true, get: function () { return encode_js_2.encodeNonAsciiHTML; } }); +// Legacy aliases (deprecated) +Object.defineProperty(exports, "encodeHTML4", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } }); +Object.defineProperty(exports, "encodeHTML5", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } }); +var decode_js_2 = require("./decode.js"); +Object.defineProperty(exports, "EntityDecoder", { enumerable: true, get: function () { return decode_js_2.EntityDecoder; } }); +Object.defineProperty(exports, "DecodingMode", { enumerable: true, get: function () { return decode_js_2.DecodingMode; } }); +Object.defineProperty(exports, "decodeXML", { enumerable: true, get: function () { return decode_js_2.decodeXML; } }); +Object.defineProperty(exports, "decodeHTML", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } }); +Object.defineProperty(exports, "decodeHTMLStrict", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } }); +Object.defineProperty(exports, "decodeHTMLAttribute", { enumerable: true, get: function () { return decode_js_2.decodeHTMLAttribute; } }); +// Legacy aliases (deprecated) +Object.defineProperty(exports, "decodeHTML4", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } }); +Object.defineProperty(exports, "decodeHTML5", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } }); +Object.defineProperty(exports, "decodeHTML4Strict", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } }); +Object.defineProperty(exports, "decodeHTML5Strict", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } }); +Object.defineProperty(exports, "decodeXMLStrict", { enumerable: true, get: function () { return decode_js_2.decodeXML; } }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/entities/lib/index.js.map b/node_modules/entities/lib/index.js.map new file mode 100644 index 0000000..2ef7751 --- /dev/null +++ b/node_modules/entities/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/","sources":["index.ts"],"names":[],"mappings":";;;AAAA,yCAAkE;AAClE,yCAA6D;AAC7D,yCAKqB;AAErB,wCAAwC;AACxC,IAAY,WAKX;AALD,WAAY,WAAW;IACnB,iCAAiC;IACjC,2CAAO,CAAA;IACP,mEAAmE;IACnE,6CAAQ,CAAA;AACZ,CAAC,EALW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAKtB;AAED,IAAY,YA2BX;AA3BD,WAAY,YAAY;IACpB;;;OAGG;IACH,+CAAI,CAAA;IACJ;;;;OAIG;IACH,iDAAK,CAAA;IACL;;;OAGG;IACH,yDAAS,CAAA;IACT;;;OAGG;IACH,yDAAS,CAAA;IACT;;;OAGG;IACH,+CAAI,CAAA;AACR,CAAC,EA3BW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QA2BvB;AAsBD;;;;;GAKG;AACH,SAAgB,MAAM,CAClB,IAAY,EACZ,OAAwD;IAAxD,wBAAA,EAAA,UAAyC,WAAW,CAAC,GAAG;IAExD,IAAM,KAAK,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAEpE,IAAI,KAAK,KAAK,WAAW,CAAC,IAAI,EAAE;QAC5B,IAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,OAAO,IAAA,sBAAU,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACjC;IAED,OAAO,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAZD,wBAYC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CACxB,IAAY,EACZ,OAAwD;;IAAxD,wBAAA,EAAA,UAAyC,WAAW,CAAC,GAAG;IAExD,IAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACxE,MAAA,IAAI,CAAC,IAAI,oCAAT,IAAI,CAAC,IAAI,GAAK,wBAAY,CAAC,MAAM,EAAC;IAElC,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC;AARD,oCAQC;AAkBD;;;;;GAKG;AACH,SAAgB,MAAM,CAClB,IAAY,EACZ,OAAwD;IAAxD,wBAAA,EAAA,UAAyC,WAAW,CAAC,GAAG;IAExD,IAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAExE,wCAAwC;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;QAAE,OAAO,IAAA,sBAAU,EAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS;QAAE,OAAO,IAAA,2BAAe,EAAC,IAAI,CAAC,CAAC;IACvE,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;QAAE,OAAO,IAAA,sBAAU,EAAC,IAAI,CAAC,CAAC;IAE7D,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,IAAI,EAAE;QACjC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,EAAE;YAClC,OAAO,IAAA,8BAAkB,EAAC,IAAI,CAAC,CAAC;SACnC;QAED,OAAO,IAAA,sBAAU,EAAC,IAAI,CAAC,CAAC;KAC3B;IAED,qCAAqC;IACrC,OAAO,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AArBD,wBAqBC;AAED,yCAMqB;AALjB,sGAAA,SAAS,OAAA;AACT,mGAAA,MAAM,OAAA;AACN,uGAAA,UAAU,OAAA;AACV,4GAAA,eAAe,OAAA;AACf,uGAAA,UAAU,OAAA;AAGd,yCAMqB;AALjB,uGAAA,UAAU,OAAA;AACV,+GAAA,kBAAkB,OAAA;AAClB,8BAA8B;AAC9B,wGAAA,UAAU,OAAe;AACzB,wGAAA,UAAU,OAAe;AAG7B,yCAaqB;AAZjB,0GAAA,aAAa,OAAA;AACb,yGAAA,YAAY,OAAA;AACZ,sGAAA,SAAS,OAAA;AACT,uGAAA,UAAU,OAAA;AACV,6GAAA,gBAAgB,OAAA;AAChB,gHAAA,mBAAmB,OAAA;AACnB,8BAA8B;AAC9B,wGAAA,UAAU,OAAe;AACzB,wGAAA,UAAU,OAAe;AACzB,8GAAA,gBAAgB,OAAqB;AACrC,8GAAA,gBAAgB,OAAqB;AACrC,4GAAA,SAAS,OAAmB"} \ No newline at end of file diff --git a/node_modules/entities/package.json b/node_modules/entities/package.json new file mode 100644 index 0000000..2e857f8 --- /dev/null +++ b/node_modules/entities/package.json @@ -0,0 +1,90 @@ +{ + "name": "entities", + "version": "4.5.0", + "description": "Encode & decode XML and HTML entities with ease & speed", + "author": "Felix Boehm <me@feedic.com>", + "funding": "https://github.com/fb55/entities?sponsor=1", + "sideEffects": false, + "keywords": [ + "entity", + "decoding", + "encoding", + "html", + "xml", + "html entities" + ], + "directories": { + "lib": "lib/" + }, + "main": "lib/index.js", + "types": "lib/index.d.ts", + "module": "lib/esm/index.js", + "exports": { + ".": { + "require": "./lib/index.js", + "import": "./lib/esm/index.js" + }, + "./lib/decode.js": { + "require": "./lib/decode.js", + "import": "./lib/esm/decode.js" + }, + "./lib/escape.js": { + "require": "./lib/escape.js", + "import": "./lib/esm/escape.js" + } + }, + "files": [ + "lib/**/*" + ], + "engines": { + "node": ">=0.12" + }, + "devDependencies": { + "@types/jest": "^28.1.8", + "@types/node": "^18.15.11", + "@typescript-eslint/eslint-plugin": "^5.58.0", + "@typescript-eslint/parser": "^5.58.0", + "eslint": "^8.38.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-node": "^11.1.0", + "jest": "^28.1.3", + "prettier": "^2.8.7", + "ts-jest": "^28.0.8", + "typedoc": "^0.24.1", + "typescript": "^5.0.4" + }, + "scripts": { + "test": "npm run test:jest && npm run lint", + "test:jest": "jest", + "lint": "npm run lint:es && npm run lint:prettier", + "lint:es": "eslint .", + "lint:prettier": "npm run prettier -- --check", + "format": "npm run format:es && npm run format:prettier", + "format:es": "npm run lint:es -- --fix", + "format:prettier": "npm run prettier -- --write", + "prettier": "prettier '**/*.{ts,md,json,yml}'", + "build": "npm run build:cjs && npm run build:esm", + "build:cjs": "tsc --sourceRoot https://raw.githubusercontent.com/fb55/entities/$(git rev-parse HEAD)/src/", + "build:esm": "npm run build:cjs -- --module esnext --target es2019 --outDir lib/esm && echo '{\"type\":\"module\"}' > lib/esm/package.json", + "build:docs": "typedoc --hideGenerator src/index.ts", + "build:trie": "ts-node scripts/write-decode-map.ts", + "build:encode-trie": "ts-node scripts/write-encode-map.ts", + "prepare": "npm run build" + }, + "repository": { + "type": "git", + "url": "git://github.com/fb55/entities.git" + }, + "license": "BSD-2-Clause", + "jest": { + "preset": "ts-jest", + "coverageProvider": "v8", + "moduleNameMapper": { + "^(.*)\\.js$": "$1" + } + }, + "prettier": { + "tabWidth": 4, + "proseWrap": "always" + } +} diff --git a/node_modules/entities/readme.md b/node_modules/entities/readme.md new file mode 100644 index 0000000..731d90c --- /dev/null +++ b/node_modules/entities/readme.md @@ -0,0 +1,122 @@ +# entities [![NPM version](https://img.shields.io/npm/v/entities.svg)](https://npmjs.org/package/entities) [![Downloads](https://img.shields.io/npm/dm/entities.svg)](https://npmjs.org/package/entities) [![Node.js CI](https://github.com/fb55/entities/actions/workflows/nodejs-test.yml/badge.svg)](https://github.com/fb55/entities/actions/workflows/nodejs-test.yml) + +Encode & decode HTML & XML entities with ease & speed. + +## Features + +- 😇 Tried and true: `entities` is used by many popular libraries; eg. + [`htmlparser2`](https://github.com/fb55/htmlparser2), the official + [AWS SDK](https://github.com/aws/aws-sdk-js-v3) and + [`commonmark`](https://github.com/commonmark/commonmark.js) use it to + process HTML entities. +- ⚡️ Fast: `entities` is the fastest library for decoding HTML entities (as + of April 2022); see [performance](#performance). +- 🎛 Configurable: Get an output tailored for your needs. You are fine with + UTF8? That'll save you some bytes. Prefer to only have ASCII characters? We + can do that as well! + +## How to… + +### …install `entities` + + npm install entities + +### …use `entities` + +```javascript +const entities = require("entities"); + +// Encoding +entities.escapeUTF8("& ü"); // "&#38; ü" +entities.encodeXML("& ü"); // "&#38; ü" +entities.encodeHTML("& ü"); // "&#38; ü" + +// Decoding +entities.decodeXML("asdf & ÿ ü '"); // "asdf & ÿ ü '" +entities.decodeHTML("asdf & ÿ ü '"); // "asdf & ÿ ü '" +``` + +## Performance + +This is how `entities` compares to other libraries on a very basic benchmark +(see `scripts/benchmark.ts`, for 10,000,000 iterations; **lower is better**): + +| Library | Version | `decode` perf | `encode` perf | `escape` perf | +| -------------- | ------- | ------------- | ------------- | ------------- | +| entities | `3.0.1` | 1.418s | 6.786s | 2.196s | +| html-entities | `2.3.2` | 2.530s | 6.829s | 2.415s | +| he | `1.2.0` | 5.800s | 24.237s | 3.624s | +| parse-entities | `3.0.0` | 9.660s | N/A | N/A | + +--- + +## FAQ + +> What methods should I actually use to encode my documents? + +If your target supports UTF-8, the `escapeUTF8` method is going to be your best +choice. Otherwise, use either `encodeHTML` or `encodeXML` based on whether +you're dealing with an HTML or an XML document. + +You can have a look at the options for the `encode` and `decode` methods to see +everything you can configure. + +> When should I use strict decoding? + +When strict decoding, entities not terminated with a semicolon will be ignored. +This is helpful for decoding entities in legacy environments. + +> Why should I use `entities` instead of alternative modules? + +As of April 2022, `entities` is a bit faster than other modules. Still, this is +not a very differentiated space and other modules can catch up. + +**More importantly**, you might already have `entities` in your dependency graph +(as a dependency of eg. `cheerio`, or `htmlparser2`), and including it directly +might not even increase your bundle size. The same is true for other entity +libraries, so have a look through your `node_modules` directory! + +> Does `entities` support tree shaking? + +Yes! `entities` ships as both a CommonJS and a ES module. Note that for best +results, you should not use the `encode` and `decode` functions, as they wrap +around a number of other functions, all of which will remain in the bundle. +Instead, use the functions that you need directly. + +--- + +## Acknowledgements + +This library wouldn't be possible without the work of these individuals. Thanks +to + +- [@mathiasbynens](https://github.com/mathiasbynens) for his explanations + about character encodings, and his library `he`, which was one of the + inspirations for `entities` +- [@inikulin](https://github.com/inikulin) for his work on optimized tries for + decoding HTML entities for the `parse5` project +- [@mdevils](https://github.com/mdevils) for taking on the challenge of + producing a quick entity library with his `html-entities` library. + `entities` would be quite a bit slower if there wasn't any competition. + Right now `entities` is on top, but we'll see how long that lasts! + +--- + +License: BSD-2-Clause + +## Security contact information + +To report a security vulnerability, please use the +[Tidelift security contact](https://tidelift.com/security). Tidelift will +coordinate the fix and disclosure. + +## `entities` for enterprise + +Available as part of the Tidelift Subscription + +The maintainers of `entities` and thousands of other packages are working with +Tidelift to deliver commercial support and maintenance for the open source +dependencies you use to build your applications. Save time, reduce risk, and +improve code health, while paying the maintainers of the exact dependencies you +use. +[Learn more.](https://tidelift.com/subscription/pkg/npm-entities?utm_source=npm-entities&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/node_modules/es-define-property/.eslintrc b/node_modules/es-define-property/.eslintrc new file mode 100644 index 0000000..46f3b12 --- /dev/null +++ b/node_modules/es-define-property/.eslintrc @@ -0,0 +1,13 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "new-cap": ["error", { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/node_modules/es-define-property/.github/FUNDING.yml b/node_modules/es-define-property/.github/FUNDING.yml new file mode 100644 index 0000000..4445451 --- /dev/null +++ b/node_modules/es-define-property/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-define-property +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/es-define-property/.nycrc b/node_modules/es-define-property/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/node_modules/es-define-property/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/es-define-property/CHANGELOG.md b/node_modules/es-define-property/CHANGELOG.md new file mode 100644 index 0000000..5f60cc0 --- /dev/null +++ b/node_modules/es-define-property/CHANGELOG.md @@ -0,0 +1,29 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/ljharb/es-define-property/compare/v1.0.0...v1.0.1) - 2024-12-06 + +### Commits + +- [types] use shared tsconfig [`954a663`](https://github.com/ljharb/es-define-property/commit/954a66360326e508a0e5daa4b07493d58f5e110e) +- [actions] split out node 10-20, and 20+ [`3a8e84b`](https://github.com/ljharb/es-define-property/commit/3a8e84b23883f26ff37b3e82ff283834228e18c6) +- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/get-intrinsic`, `@types/tape`, `auto-changelog`, `gopd`, `tape` [`86ae27b`](https://github.com/ljharb/es-define-property/commit/86ae27bb8cc857b23885136fad9cbe965ae36612) +- [Refactor] avoid using `get-intrinsic` [`02480c0`](https://github.com/ljharb/es-define-property/commit/02480c0353ef6118965282977c3864aff53d98b1) +- [Tests] replace `aud` with `npm audit` [`f6093ff`](https://github.com/ljharb/es-define-property/commit/f6093ff74ab51c98015c2592cd393bd42478e773) +- [Tests] configure testling [`7139e66`](https://github.com/ljharb/es-define-property/commit/7139e66959247a56086d9977359caef27c6849e7) +- [Dev Deps] update `tape` [`b901b51`](https://github.com/ljharb/es-define-property/commit/b901b511a75e001a40ce1a59fef7d9ffcfc87482) +- [Tests] fix types in tests [`469d269`](https://github.com/ljharb/es-define-property/commit/469d269fd141b1e773ec053a9fa35843493583e0) +- [Dev Deps] add missing peer dep [`733acfb`](https://github.com/ljharb/es-define-property/commit/733acfb0c4c96edf337e470b89a25a5b3724c352) + +## v1.0.0 - 2024-02-12 + +### Commits + +- Initial implementation, tests, readme, types [`3e154e1`](https://github.com/ljharb/es-define-property/commit/3e154e11a2fee09127220f5e503bf2c0a31dd480) +- Initial commit [`07d98de`](https://github.com/ljharb/es-define-property/commit/07d98de34a4dc31ff5e83a37c0c3f49e0d85cd50) +- npm init [`c4eb634`](https://github.com/ljharb/es-define-property/commit/c4eb6348b0d3886aac36cef34ad2ee0665ea6f3e) +- Only apps should have lockfiles [`7af86ec`](https://github.com/ljharb/es-define-property/commit/7af86ec1d311ec0b17fdfe616a25f64276903856) diff --git a/node_modules/es-define-property/LICENSE b/node_modules/es-define-property/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/node_modules/es-define-property/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/es-define-property/README.md b/node_modules/es-define-property/README.md new file mode 100644 index 0000000..9b291bd --- /dev/null +++ b/node_modules/es-define-property/README.md @@ -0,0 +1,49 @@ +# es-define-property <sup>[![Version Badge][npm-version-svg]][package-url]</sup> + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +`Object.defineProperty`, but not IE 8's broken one. + +## Example + +```js +const assert = require('assert'); + +const $defineProperty = require('es-define-property'); + +if ($defineProperty) { + assert.equal($defineProperty, Object.defineProperty); +} else if (Object.defineProperty) { + assert.equal($defineProperty, false, 'this is IE 8'); +} else { + assert.equal($defineProperty, false, 'this is an ES3 engine'); +} +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-define-property +[npm-version-svg]: https://versionbadg.es/ljharb/es-define-property.svg +[deps-svg]: https://david-dm.org/ljharb/es-define-property.svg +[deps-url]: https://david-dm.org/ljharb/es-define-property +[dev-deps-svg]: https://david-dm.org/ljharb/es-define-property/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-define-property#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-define-property.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-define-property.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-define-property.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-define-property +[codecov-image]: https://codecov.io/gh/ljharb/es-define-property/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-define-property/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-define-property +[actions-url]: https://github.com/ljharb/es-define-property/actions diff --git a/node_modules/es-define-property/index.d.ts b/node_modules/es-define-property/index.d.ts new file mode 100644 index 0000000..6012247 --- /dev/null +++ b/node_modules/es-define-property/index.d.ts @@ -0,0 +1,3 @@ +declare const defineProperty: false | typeof Object.defineProperty; + +export = defineProperty; \ No newline at end of file diff --git a/node_modules/es-define-property/index.js b/node_modules/es-define-property/index.js new file mode 100644 index 0000000..e0a2925 --- /dev/null +++ b/node_modules/es-define-property/index.js @@ -0,0 +1,14 @@ +'use strict'; + +/** @type {import('.')} */ +var $defineProperty = Object.defineProperty || false; +if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + } catch (e) { + // IE 8 has a broken defineProperty + $defineProperty = false; + } +} + +module.exports = $defineProperty; diff --git a/node_modules/es-define-property/package.json b/node_modules/es-define-property/package.json new file mode 100644 index 0000000..fbed187 --- /dev/null +++ b/node_modules/es-define-property/package.json @@ -0,0 +1,81 @@ +{ + "name": "es-define-property", + "version": "1.0.1", + "description": "`Object.defineProperty`, but not IE 8's broken one.", + "main": "index.js", + "types": "./index.d.ts", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-define-property.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "object", + "define", + "property", + "defineProperty", + "Object.defineProperty" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-define-property/issues" + }, + "homepage": "https://github.com/ljharb/es-define-property#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/gopd": "^1.0.3", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "gopd": "^1.2.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/node_modules/es-define-property/test/index.js b/node_modules/es-define-property/test/index.js new file mode 100644 index 0000000..b4b4688 --- /dev/null +++ b/node_modules/es-define-property/test/index.js @@ -0,0 +1,56 @@ +'use strict'; + +var $defineProperty = require('../'); + +var test = require('tape'); +var gOPD = require('gopd'); + +test('defineProperty: supported', { skip: !$defineProperty }, function (t) { + t.plan(4); + + t.equal(typeof $defineProperty, 'function', 'defineProperty is supported'); + if ($defineProperty && gOPD) { // this `if` check is just to shut TS up + /** @type {{ a: number, b?: number, c?: number }} */ + var o = { a: 1 }; + + $defineProperty(o, 'b', { enumerable: true, value: 2 }); + t.deepEqual( + gOPD(o, 'b'), + { + configurable: false, + enumerable: true, + value: 2, + writable: false + }, + 'property descriptor is as expected' + ); + + $defineProperty(o, 'c', { enumerable: false, value: 3, writable: true }); + t.deepEqual( + gOPD(o, 'c'), + { + configurable: false, + enumerable: false, + value: 3, + writable: true + }, + 'property descriptor is as expected' + ); + } + + t.equal($defineProperty, Object.defineProperty, 'defineProperty is Object.defineProperty'); + + t.end(); +}); + +test('defineProperty: not supported', { skip: !!$defineProperty }, function (t) { + t.notOk($defineProperty, 'defineProperty is not supported'); + + t.match( + typeof $defineProperty, + /^(?:undefined|boolean)$/, + '`typeof defineProperty` is `undefined` or `boolean`' + ); + + t.end(); +}); diff --git a/node_modules/es-define-property/tsconfig.json b/node_modules/es-define-property/tsconfig.json new file mode 100644 index 0000000..5a49992 --- /dev/null +++ b/node_modules/es-define-property/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2022", + }, + "exclude": [ + "coverage", + "test/list-exports" + ], +} diff --git a/node_modules/es-errors/.eslintrc b/node_modules/es-errors/.eslintrc new file mode 100644 index 0000000..3b5d9e9 --- /dev/null +++ b/node_modules/es-errors/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/node_modules/es-errors/.github/FUNDING.yml b/node_modules/es-errors/.github/FUNDING.yml new file mode 100644 index 0000000..f1b8805 --- /dev/null +++ b/node_modules/es-errors/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-errors +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/es-errors/CHANGELOG.md b/node_modules/es-errors/CHANGELOG.md new file mode 100644 index 0000000..204a9e9 --- /dev/null +++ b/node_modules/es-errors/CHANGELOG.md @@ -0,0 +1,40 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.3.0](https://github.com/ljharb/es-errors/compare/v1.2.1...v1.3.0) - 2024-02-05 + +### Commits + +- [New] add `EvalError` and `URIError` [`1927627`](https://github.com/ljharb/es-errors/commit/1927627ba68cb6c829d307231376c967db53acdf) + +## [v1.2.1](https://github.com/ljharb/es-errors/compare/v1.2.0...v1.2.1) - 2024-02-04 + +### Commits + +- [Fix] add missing `exports` entry [`5bb5f28`](https://github.com/ljharb/es-errors/commit/5bb5f280f98922701109d6ebb82eea2257cecc7e) + +## [v1.2.0](https://github.com/ljharb/es-errors/compare/v1.1.0...v1.2.0) - 2024-02-04 + +### Commits + +- [New] add `ReferenceError` [`6d8cf5b`](https://github.com/ljharb/es-errors/commit/6d8cf5bbb6f3f598d02cf6f30e468ba2caa8e143) + +## [v1.1.0](https://github.com/ljharb/es-errors/compare/v1.0.0...v1.1.0) - 2024-02-04 + +### Commits + +- [New] add base Error [`2983ab6`](https://github.com/ljharb/es-errors/commit/2983ab65f7bc5441276cb021dc3aa03c78881698) + +## v1.0.0 - 2024-02-03 + +### Commits + +- Initial implementation, tests, readme, type [`8f47631`](https://github.com/ljharb/es-errors/commit/8f476317e9ad76f40ad648081829b1a1a3a1288b) +- Initial commit [`ea5d099`](https://github.com/ljharb/es-errors/commit/ea5d099ef18e550509ab9e2be000526afd81c385) +- npm init [`6f5ebf9`](https://github.com/ljharb/es-errors/commit/6f5ebf9cead474dadd72b9e63dad315820a089ae) +- Only apps should have lockfiles [`e1a0aeb`](https://github.com/ljharb/es-errors/commit/e1a0aeb7b80f5cfc56be54d6b2100e915d47def8) +- [meta] add `sideEffects` flag [`a9c7d46`](https://github.com/ljharb/es-errors/commit/a9c7d460a492f1d8a241c836bc25a322a19cc043) diff --git a/node_modules/es-errors/LICENSE b/node_modules/es-errors/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/node_modules/es-errors/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/es-errors/README.md b/node_modules/es-errors/README.md new file mode 100644 index 0000000..8dbfacf --- /dev/null +++ b/node_modules/es-errors/README.md @@ -0,0 +1,55 @@ +# es-errors <sup>[![Version Badge][npm-version-svg]][package-url]</sup> + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +A simple cache for a few of the JS Error constructors. + +## Example + +```js +const assert = require('assert'); + +const Base = require('es-errors'); +const Eval = require('es-errors/eval'); +const Range = require('es-errors/range'); +const Ref = require('es-errors/ref'); +const Syntax = require('es-errors/syntax'); +const Type = require('es-errors/type'); +const URI = require('es-errors/uri'); + +assert.equal(Base, Error); +assert.equal(Eval, EvalError); +assert.equal(Range, RangeError); +assert.equal(Ref, ReferenceError); +assert.equal(Syntax, SyntaxError); +assert.equal(Type, TypeError); +assert.equal(URI, URIError); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-errors +[npm-version-svg]: https://versionbadg.es/ljharb/es-errors.svg +[deps-svg]: https://david-dm.org/ljharb/es-errors.svg +[deps-url]: https://david-dm.org/ljharb/es-errors +[dev-deps-svg]: https://david-dm.org/ljharb/es-errors/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-errors#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-errors.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-errors.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-errors.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-errors +[codecov-image]: https://codecov.io/gh/ljharb/es-errors/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-errors/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-errors +[actions-url]: https://github.com/ljharb/es-errors/actions diff --git a/node_modules/es-errors/eval.d.ts b/node_modules/es-errors/eval.d.ts new file mode 100644 index 0000000..e4210e0 --- /dev/null +++ b/node_modules/es-errors/eval.d.ts @@ -0,0 +1,3 @@ +declare const EvalError: EvalErrorConstructor; + +export = EvalError; diff --git a/node_modules/es-errors/eval.js b/node_modules/es-errors/eval.js new file mode 100644 index 0000000..725ccb6 --- /dev/null +++ b/node_modules/es-errors/eval.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./eval')} */ +module.exports = EvalError; diff --git a/node_modules/es-errors/index.d.ts b/node_modules/es-errors/index.d.ts new file mode 100644 index 0000000..69bdbc9 --- /dev/null +++ b/node_modules/es-errors/index.d.ts @@ -0,0 +1,3 @@ +declare const Error: ErrorConstructor; + +export = Error; diff --git a/node_modules/es-errors/index.js b/node_modules/es-errors/index.js new file mode 100644 index 0000000..cc0c521 --- /dev/null +++ b/node_modules/es-errors/index.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('.')} */ +module.exports = Error; diff --git a/node_modules/es-errors/package.json b/node_modules/es-errors/package.json new file mode 100644 index 0000000..ff8c2a5 --- /dev/null +++ b/node_modules/es-errors/package.json @@ -0,0 +1,80 @@ +{ + "name": "es-errors", + "version": "1.3.0", + "description": "A simple cache for a few of the JS Error constructors.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./eval": "./eval.js", + "./range": "./range.js", + "./ref": "./ref.js", + "./syntax": "./syntax.js", + "./type": "./type.js", + "./uri": "./uri.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "aud --production", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-errors.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "error", + "typeerror", + "syntaxerror", + "rangeerror" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-errors/issues" + }, + "homepage": "https://github.com/ljharb/es-errors#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "@types/tape": "^5.6.4", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "eclint": "^2.8.1", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.4", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/es-errors/range.d.ts b/node_modules/es-errors/range.d.ts new file mode 100644 index 0000000..3a12e86 --- /dev/null +++ b/node_modules/es-errors/range.d.ts @@ -0,0 +1,3 @@ +declare const RangeError: RangeErrorConstructor; + +export = RangeError; diff --git a/node_modules/es-errors/range.js b/node_modules/es-errors/range.js new file mode 100644 index 0000000..2044fe0 --- /dev/null +++ b/node_modules/es-errors/range.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./range')} */ +module.exports = RangeError; diff --git a/node_modules/es-errors/ref.d.ts b/node_modules/es-errors/ref.d.ts new file mode 100644 index 0000000..a13107e --- /dev/null +++ b/node_modules/es-errors/ref.d.ts @@ -0,0 +1,3 @@ +declare const ReferenceError: ReferenceErrorConstructor; + +export = ReferenceError; diff --git a/node_modules/es-errors/ref.js b/node_modules/es-errors/ref.js new file mode 100644 index 0000000..d7c430f --- /dev/null +++ b/node_modules/es-errors/ref.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./ref')} */ +module.exports = ReferenceError; diff --git a/node_modules/es-errors/syntax.d.ts b/node_modules/es-errors/syntax.d.ts new file mode 100644 index 0000000..6a0c53c --- /dev/null +++ b/node_modules/es-errors/syntax.d.ts @@ -0,0 +1,3 @@ +declare const SyntaxError: SyntaxErrorConstructor; + +export = SyntaxError; diff --git a/node_modules/es-errors/syntax.js b/node_modules/es-errors/syntax.js new file mode 100644 index 0000000..5f5fdde --- /dev/null +++ b/node_modules/es-errors/syntax.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./syntax')} */ +module.exports = SyntaxError; diff --git a/node_modules/es-errors/test/index.js b/node_modules/es-errors/test/index.js new file mode 100644 index 0000000..1ff0277 --- /dev/null +++ b/node_modules/es-errors/test/index.js @@ -0,0 +1,19 @@ +'use strict'; + +var test = require('tape'); + +var E = require('../'); +var R = require('../range'); +var Ref = require('../ref'); +var S = require('../syntax'); +var T = require('../type'); + +test('errors', function (t) { + t.equal(E, Error); + t.equal(R, RangeError); + t.equal(Ref, ReferenceError); + t.equal(S, SyntaxError); + t.equal(T, TypeError); + + t.end(); +}); diff --git a/node_modules/es-errors/tsconfig.json b/node_modules/es-errors/tsconfig.json new file mode 100644 index 0000000..99dfeb6 --- /dev/null +++ b/node_modules/es-errors/tsconfig.json @@ -0,0 +1,49 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Projects */ + + /* Language and Environment */ + "target": "es5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": ["types"], /* Specify multiple folders that act like `./node_modules/@types`. */ + "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + + /* JavaScript Support */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ + "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ + + /* Emit */ + "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + "declarationMap": true, /* Create sourcemaps for d.ts files. */ + "noEmit": true, /* Disable emitting files from a compilation. */ + + /* Interop Constraints */ + "allowSyntheticDefaultImports": true, /* Allow `import x from y` when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + + /* Completeness */ + // "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "exclude": [ + "coverage", + ], +} diff --git a/node_modules/es-errors/type.d.ts b/node_modules/es-errors/type.d.ts new file mode 100644 index 0000000..576fb51 --- /dev/null +++ b/node_modules/es-errors/type.d.ts @@ -0,0 +1,3 @@ +declare const TypeError: TypeErrorConstructor + +export = TypeError; diff --git a/node_modules/es-errors/type.js b/node_modules/es-errors/type.js new file mode 100644 index 0000000..9769e44 --- /dev/null +++ b/node_modules/es-errors/type.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./type')} */ +module.exports = TypeError; diff --git a/node_modules/es-errors/uri.d.ts b/node_modules/es-errors/uri.d.ts new file mode 100644 index 0000000..c3261c9 --- /dev/null +++ b/node_modules/es-errors/uri.d.ts @@ -0,0 +1,3 @@ +declare const URIError: URIErrorConstructor; + +export = URIError; diff --git a/node_modules/es-errors/uri.js b/node_modules/es-errors/uri.js new file mode 100644 index 0000000..e9cd1c7 --- /dev/null +++ b/node_modules/es-errors/uri.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./uri')} */ +module.exports = URIError; diff --git a/node_modules/es-object-atoms/.eslintrc b/node_modules/es-object-atoms/.eslintrc new file mode 100644 index 0000000..d90a1bc --- /dev/null +++ b/node_modules/es-object-atoms/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "eqeqeq": ["error", "allow-null"], + "id-length": "off", + "new-cap": ["error", { + "capIsNewExceptions": [ + "RequireObjectCoercible", + "ToObject", + ], + }], + }, +} diff --git a/node_modules/es-object-atoms/.github/FUNDING.yml b/node_modules/es-object-atoms/.github/FUNDING.yml new file mode 100644 index 0000000..352bfda --- /dev/null +++ b/node_modules/es-object-atoms/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-object +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/es-object-atoms/CHANGELOG.md b/node_modules/es-object-atoms/CHANGELOG.md new file mode 100644 index 0000000..fdd2abe --- /dev/null +++ b/node_modules/es-object-atoms/CHANGELOG.md @@ -0,0 +1,37 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.1](https://github.com/ljharb/es-object-atoms/compare/v1.1.0...v1.1.1) - 2025-01-14 + +### Commits + +- [types] `ToObject`: improve types [`cfe8c8a`](https://github.com/ljharb/es-object-atoms/commit/cfe8c8a105c44820cb22e26f62d12ef0ad9715c8) + +## [v1.1.0](https://github.com/ljharb/es-object-atoms/compare/v1.0.1...v1.1.0) - 2025-01-14 + +### Commits + +- [New] add `isObject` [`51e4042`](https://github.com/ljharb/es-object-atoms/commit/51e4042df722eb3165f40dc5f4bf33d0197ecb07) + +## [v1.0.1](https://github.com/ljharb/es-object-atoms/compare/v1.0.0...v1.0.1) - 2025-01-13 + +### Commits + +- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/tape`, `auto-changelog`, `tape` [`38ab9eb`](https://github.com/ljharb/es-object-atoms/commit/38ab9eb00b62c2f4668644f5e513d9b414ebd595) +- [types] improve types [`7d1beb8`](https://github.com/ljharb/es-object-atoms/commit/7d1beb887958b78b6a728a210a1c8370ab7e2aa1) +- [Tests] replace `aud` with `npm audit` [`25863ba`](https://github.com/ljharb/es-object-atoms/commit/25863baf99178f1d1ad33d1120498db28631907e) +- [Dev Deps] add missing peer dep [`c012309`](https://github.com/ljharb/es-object-atoms/commit/c0123091287e6132d6f4240496340c427433df28) + +## v1.0.0 - 2024-03-16 + +### Commits + +- Initial implementation, tests, readme, types [`f1499db`](https://github.com/ljharb/es-object-atoms/commit/f1499db7d3e1741e64979c61d645ab3137705e82) +- Initial commit [`99eedc7`](https://github.com/ljharb/es-object-atoms/commit/99eedc7b5fde38a50a28d3c8b724706e3e4c5f6a) +- [meta] rename repo [`fc851fa`](https://github.com/ljharb/es-object-atoms/commit/fc851fa70616d2d182aaf0bd02c2ed7084dea8fa) +- npm init [`b909377`](https://github.com/ljharb/es-object-atoms/commit/b909377c50049bd0ec575562d20b0f9ebae8947f) +- Only apps should have lockfiles [`7249edd`](https://github.com/ljharb/es-object-atoms/commit/7249edd2178c1b9ddfc66ffcc6d07fdf0d28efc1) diff --git a/node_modules/es-object-atoms/LICENSE b/node_modules/es-object-atoms/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/node_modules/es-object-atoms/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/es-object-atoms/README.md b/node_modules/es-object-atoms/README.md new file mode 100644 index 0000000..447695b --- /dev/null +++ b/node_modules/es-object-atoms/README.md @@ -0,0 +1,63 @@ +# es-object-atoms <sup>[![Version Badge][npm-version-svg]][package-url]</sup> + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +ES Object-related atoms: Object, ToObject, RequireObjectCoercible. + +## Example + +```js +const assert = require('assert'); + +const $Object = require('es-object-atoms'); +const isObject = require('es-object-atoms/isObject'); +const ToObject = require('es-object-atoms/ToObject'); +const RequireObjectCoercible = require('es-object-atoms/RequireObjectCoercible'); + +assert.equal($Object, Object); +assert.throws(() => ToObject(null), TypeError); +assert.throws(() => ToObject(undefined), TypeError); +assert.throws(() => RequireObjectCoercible(null), TypeError); +assert.throws(() => RequireObjectCoercible(undefined), TypeError); + +assert.equal(isObject(undefined), false); +assert.equal(isObject(null), false); +assert.equal(isObject({}), true); +assert.equal(isObject([]), true); +assert.equal(isObject(function () {}), true); + +assert.deepEqual(RequireObjectCoercible(true), true); +assert.deepEqual(ToObject(true), Object(true)); + +const obj = {}; +assert.equal(RequireObjectCoercible(obj), obj); +assert.equal(ToObject(obj), obj); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-object-atoms +[npm-version-svg]: https://versionbadg.es/ljharb/es-object-atoms.svg +[deps-svg]: https://david-dm.org/ljharb/es-object-atoms.svg +[deps-url]: https://david-dm.org/ljharb/es-object-atoms +[dev-deps-svg]: https://david-dm.org/ljharb/es-object-atoms/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-object-atoms#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-object-atoms.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-object-atoms.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-object.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-object-atoms +[codecov-image]: https://codecov.io/gh/ljharb/es-object-atoms/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-object-atoms/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-object-atoms +[actions-url]: https://github.com/ljharb/es-object-atoms/actions diff --git a/node_modules/es-object-atoms/RequireObjectCoercible.d.ts b/node_modules/es-object-atoms/RequireObjectCoercible.d.ts new file mode 100644 index 0000000..7e26c45 --- /dev/null +++ b/node_modules/es-object-atoms/RequireObjectCoercible.d.ts @@ -0,0 +1,3 @@ +declare function RequireObjectCoercible<T extends {}>(value: T, optMessage?: string): T; + +export = RequireObjectCoercible; diff --git a/node_modules/es-object-atoms/RequireObjectCoercible.js b/node_modules/es-object-atoms/RequireObjectCoercible.js new file mode 100644 index 0000000..8e191c6 --- /dev/null +++ b/node_modules/es-object-atoms/RequireObjectCoercible.js @@ -0,0 +1,11 @@ +'use strict'; + +var $TypeError = require('es-errors/type'); + +/** @type {import('./RequireObjectCoercible')} */ +module.exports = function RequireObjectCoercible(value) { + if (value == null) { + throw new $TypeError((arguments.length > 0 && arguments[1]) || ('Cannot call method on ' + value)); + } + return value; +}; diff --git a/node_modules/es-object-atoms/ToObject.d.ts b/node_modules/es-object-atoms/ToObject.d.ts new file mode 100644 index 0000000..d6dd302 --- /dev/null +++ b/node_modules/es-object-atoms/ToObject.d.ts @@ -0,0 +1,7 @@ +declare function ToObject<T extends object>(value: number): Number; +declare function ToObject<T extends object>(value: boolean): Boolean; +declare function ToObject<T extends object>(value: string): String; +declare function ToObject<T extends object>(value: bigint): BigInt; +declare function ToObject<T extends object>(value: T): T; + +export = ToObject; diff --git a/node_modules/es-object-atoms/ToObject.js b/node_modules/es-object-atoms/ToObject.js new file mode 100644 index 0000000..2b99a7d --- /dev/null +++ b/node_modules/es-object-atoms/ToObject.js @@ -0,0 +1,10 @@ +'use strict'; + +var $Object = require('./'); +var RequireObjectCoercible = require('./RequireObjectCoercible'); + +/** @type {import('./ToObject')} */ +module.exports = function ToObject(value) { + RequireObjectCoercible(value); + return $Object(value); +}; diff --git a/node_modules/es-object-atoms/index.d.ts b/node_modules/es-object-atoms/index.d.ts new file mode 100644 index 0000000..8bdbfc8 --- /dev/null +++ b/node_modules/es-object-atoms/index.d.ts @@ -0,0 +1,3 @@ +declare const Object: ObjectConstructor; + +export = Object; diff --git a/node_modules/es-object-atoms/index.js b/node_modules/es-object-atoms/index.js new file mode 100644 index 0000000..1d33cef --- /dev/null +++ b/node_modules/es-object-atoms/index.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('.')} */ +module.exports = Object; diff --git a/node_modules/es-object-atoms/isObject.d.ts b/node_modules/es-object-atoms/isObject.d.ts new file mode 100644 index 0000000..43bee3b --- /dev/null +++ b/node_modules/es-object-atoms/isObject.d.ts @@ -0,0 +1,3 @@ +declare function isObject(x: unknown): x is object; + +export = isObject; diff --git a/node_modules/es-object-atoms/isObject.js b/node_modules/es-object-atoms/isObject.js new file mode 100644 index 0000000..ec49bf1 --- /dev/null +++ b/node_modules/es-object-atoms/isObject.js @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {import('./isObject')} */ +module.exports = function isObject(x) { + return !!x && (typeof x === 'function' || typeof x === 'object'); +}; diff --git a/node_modules/es-object-atoms/package.json b/node_modules/es-object-atoms/package.json new file mode 100644 index 0000000..f4cec71 --- /dev/null +++ b/node_modules/es-object-atoms/package.json @@ -0,0 +1,80 @@ +{ + "name": "es-object-atoms", + "version": "1.1.1", + "description": "ES Object-related atoms: Object, ToObject, RequireObjectCoercible", + "main": "index.js", + "exports": { + ".": "./index.js", + "./RequireObjectCoercible": "./RequireObjectCoercible.js", + "./isObject": "./isObject.js", + "./ToObject": "./ToObject.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "npx npm@\">= 10.2\" audit --production", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-object-atoms.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "object", + "toobject", + "coercible" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-object-atoms/issues" + }, + "homepage": "https://github.com/ljharb/es-object-atoms#readme", + "dependencies": { + "es-errors": "^1.3.0" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/tape": "^5.8.1", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "encoding": "^0.1.13", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/es-object-atoms/test/index.js b/node_modules/es-object-atoms/test/index.js new file mode 100644 index 0000000..430b705 --- /dev/null +++ b/node_modules/es-object-atoms/test/index.js @@ -0,0 +1,38 @@ +'use strict'; + +var test = require('tape'); + +var $Object = require('../'); +var isObject = require('../isObject'); +var ToObject = require('../ToObject'); +var RequireObjectCoercible = require('..//RequireObjectCoercible'); + +test('errors', function (t) { + t.equal($Object, Object); + // @ts-expect-error + t['throws'](function () { ToObject(null); }, TypeError); + // @ts-expect-error + t['throws'](function () { ToObject(undefined); }, TypeError); + // @ts-expect-error + t['throws'](function () { RequireObjectCoercible(null); }, TypeError); + // @ts-expect-error + t['throws'](function () { RequireObjectCoercible(undefined); }, TypeError); + + t.deepEqual(RequireObjectCoercible(true), true); + t.deepEqual(ToObject(true), Object(true)); + t.deepEqual(ToObject(42), Object(42)); + var f = function () {}; + t.equal(ToObject(f), f); + + t.equal(isObject(undefined), false); + t.equal(isObject(null), false); + t.equal(isObject({}), true); + t.equal(isObject([]), true); + t.equal(isObject(function () {}), true); + + var obj = {}; + t.equal(RequireObjectCoercible(obj), obj); + t.equal(ToObject(obj), obj); + + t.end(); +}); diff --git a/node_modules/es-object-atoms/tsconfig.json b/node_modules/es-object-atoms/tsconfig.json new file mode 100644 index 0000000..1f73cb7 --- /dev/null +++ b/node_modules/es-object-atoms/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es5", + }, +} diff --git a/node_modules/escape-html/LICENSE b/node_modules/escape-html/LICENSE new file mode 100644 index 0000000..2e70de9 --- /dev/null +++ b/node_modules/escape-html/LICENSE @@ -0,0 +1,24 @@ +(The MIT License) + +Copyright (c) 2012-2013 TJ Holowaychuk +Copyright (c) 2015 Andreas Lubbe +Copyright (c) 2015 Tiancheng "Timothy" Gu + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/escape-html/Readme.md b/node_modules/escape-html/Readme.md new file mode 100644 index 0000000..653d9ea --- /dev/null +++ b/node_modules/escape-html/Readme.md @@ -0,0 +1,43 @@ + +# escape-html + + Escape string for use in HTML + +## Example + +```js +var escape = require('escape-html'); +var html = escape('foo & bar'); +// -> foo & bar +``` + +## Benchmark + +``` +$ npm run-script bench + +> escape-html@1.0.3 bench nodejs-escape-html +> node benchmark/index.js + + + http_parser@1.0 + node@0.10.33 + v8@3.14.5.9 + ares@1.9.0-DEV + uv@0.10.29 + zlib@1.2.3 + modules@11 + openssl@1.0.1j + + 1 test completed. + 2 tests completed. + 3 tests completed. + + no special characters x 19,435,271 ops/sec ±0.85% (187 runs sampled) + single special character x 6,132,421 ops/sec ±0.67% (194 runs sampled) + many special characters x 3,175,826 ops/sec ±0.65% (193 runs sampled) +``` + +## License + + MIT \ No newline at end of file diff --git a/node_modules/escape-html/index.js b/node_modules/escape-html/index.js new file mode 100644 index 0000000..bf9e226 --- /dev/null +++ b/node_modules/escape-html/index.js @@ -0,0 +1,78 @@ +/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */ + +'use strict'; + +/** + * Module variables. + * @private + */ + +var matchHtmlRegExp = /["'&<>]/; + +/** + * Module exports. + * @public + */ + +module.exports = escapeHtml; + +/** + * Escape special characters in the given string of html. + * + * @param {string} string The string to escape for inserting into HTML + * @return {string} + * @public + */ + +function escapeHtml(string) { + var str = '' + string; + var match = matchHtmlRegExp.exec(str); + + if (!match) { + return str; + } + + var escape; + var html = ''; + var index = 0; + var lastIndex = 0; + + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: // " + escape = '"'; + break; + case 38: // & + escape = '&'; + break; + case 39: // ' + escape = '''; + break; + case 60: // < + escape = '<'; + break; + case 62: // > + escape = '>'; + break; + default: + continue; + } + + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + + lastIndex = index + 1; + html += escape; + } + + return lastIndex !== index + ? html + str.substring(lastIndex, index) + : html; +} diff --git a/node_modules/escape-html/package.json b/node_modules/escape-html/package.json new file mode 100644 index 0000000..57ec7bd --- /dev/null +++ b/node_modules/escape-html/package.json @@ -0,0 +1,24 @@ +{ + "name": "escape-html", + "description": "Escape string for use in HTML", + "version": "1.0.3", + "license": "MIT", + "keywords": [ + "escape", + "html", + "utility" + ], + "repository": "component/escape-html", + "devDependencies": { + "benchmark": "1.0.0", + "beautify-benchmark": "0.2.4" + }, + "files": [ + "LICENSE", + "Readme.md", + "index.js" + ], + "scripts": { + "bench": "node benchmark/index.js" + } +} diff --git a/node_modules/estree-walker/CHANGELOG.md b/node_modules/estree-walker/CHANGELOG.md new file mode 100644 index 0000000..20e8c7e --- /dev/null +++ b/node_modules/estree-walker/CHANGELOG.md @@ -0,0 +1,92 @@ +# changelog + +## 2.0.2 + +* Internal tidying up (change test runner, convert to JS) + +## 2.0.1 + +* Robustify `this.remove()`, pass current index to walker functions ([#18](https://github.com/Rich-Harris/estree-walker/pull/18)) + +## 2.0.0 + +* Add an `asyncWalk` export ([#20](https://github.com/Rich-Harris/estree-walker/pull/20)) +* Internal rewrite + +## 1.0.1 + +* Relax node type to `BaseNode` ([#17](https://github.com/Rich-Harris/estree-walker/pull/17)) + +## 1.0.0 + +* Don't cache child keys + +## 0.9.0 + +* Add `this.remove()` method + +## 0.8.1 + +* Fix pkg.files + +## 0.8.0 + +* Adopt `estree` types + +## 0.7.0 + +* Add a `this.replace(node)` method + +## 0.6.1 + +* Only traverse nodes that exist and have a type ([#9](https://github.com/Rich-Harris/estree-walker/pull/9)) +* Only cache keys for nodes with a type ([#8](https://github.com/Rich-Harris/estree-walker/pull/8)) + +## 0.6.0 + +* Fix walker context type +* Update deps, remove unncessary Bublé transformation + +## 0.5.2 + +* Add types to package + +## 0.5.1 + +* Prevent context corruption when `walk()` is called during a walk + +## 0.5.0 + +* Export `childKeys`, for manually fixing in case of malformed ASTs + +## 0.4.0 + +* Add TypeScript typings ([#3](https://github.com/Rich-Harris/estree-walker/pull/3)) + +## 0.3.1 + +* Include `pkg.repository` ([#2](https://github.com/Rich-Harris/estree-walker/pull/2)) + +## 0.3.0 + +* More predictable ordering + +## 0.2.1 + +* Keep `context` shape + +## 0.2.0 + +* Add ES6 build + +## 0.1.3 + +* npm snafu + +## 0.1.2 + +* Pass current prop and index to `enter`/`leave` callbacks + +## 0.1.1 + +* First release diff --git a/node_modules/estree-walker/LICENSE b/node_modules/estree-walker/LICENSE new file mode 100644 index 0000000..63b6209 --- /dev/null +++ b/node_modules/estree-walker/LICENSE @@ -0,0 +1,7 @@ +Copyright (c) 2015-20 [these people](https://github.com/Rich-Harris/estree-walker/graphs/contributors) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/estree-walker/README.md b/node_modules/estree-walker/README.md new file mode 100644 index 0000000..d877af3 --- /dev/null +++ b/node_modules/estree-walker/README.md @@ -0,0 +1,48 @@ +# estree-walker + +Simple utility for walking an [ESTree](https://github.com/estree/estree)-compliant AST, such as one generated by [acorn](https://github.com/marijnh/acorn). + + +## Installation + +```bash +npm i estree-walker +``` + + +## Usage + +```js +var walk = require( 'estree-walker' ).walk; +var acorn = require( 'acorn' ); + +ast = acorn.parse( sourceCode, options ); // https://github.com/acornjs/acorn + +walk( ast, { + enter: function ( node, parent, prop, index ) { + // some code happens + }, + leave: function ( node, parent, prop, index ) { + // some code happens + } +}); +``` + +Inside the `enter` function, calling `this.skip()` will prevent the node's children being walked, or the `leave` function (which is optional) being called. + +Call `this.replace(new_node)` in either `enter` or `leave` to replace the current node with a new one. + +Call `this.remove()` in either `enter` or `leave` to remove the current node. + +## Why not use estraverse? + +The ESTree spec is evolving to accommodate ES6/7. I've had a couple of experiences where [estraverse](https://github.com/estools/estraverse) was unable to handle an AST generated by recent versions of acorn, because it hard-codes visitor keys. + +estree-walker, by contrast, simply enumerates a node's properties to find child nodes (and child lists of nodes), and is therefore resistant to spec changes. It's also much smaller. (The performance, if you're wondering, is basically identical.) + +None of which should be taken as criticism of estraverse, which has more features and has been battle-tested in many more situations, and for which I'm very grateful. + + +## License + +MIT diff --git a/node_modules/estree-walker/dist/esm/estree-walker.js b/node_modules/estree-walker/dist/esm/estree-walker.js new file mode 100644 index 0000000..a0beeeb --- /dev/null +++ b/node_modules/estree-walker/dist/esm/estree-walker.js @@ -0,0 +1,333 @@ +// @ts-check +/** @typedef { import('estree').BaseNode} BaseNode */ + +/** @typedef {{ + skip: () => void; + remove: () => void; + replace: (node: BaseNode) => void; +}} WalkerContext */ + +class WalkerBase { + constructor() { + /** @type {boolean} */ + this.should_skip = false; + + /** @type {boolean} */ + this.should_remove = false; + + /** @type {BaseNode | null} */ + this.replacement = null; + + /** @type {WalkerContext} */ + this.context = { + skip: () => (this.should_skip = true), + remove: () => (this.should_remove = true), + replace: (node) => (this.replacement = node) + }; + } + + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + * @param {BaseNode} node + */ + replace(parent, prop, index, node) { + if (parent) { + if (index !== null) { + parent[prop][index] = node; + } else { + parent[prop] = node; + } + } + } + + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + */ + remove(parent, prop, index) { + if (parent) { + if (index !== null) { + parent[prop].splice(index, 1); + } else { + delete parent[prop]; + } + } + } +} + +// @ts-check + +/** @typedef { import('estree').BaseNode} BaseNode */ +/** @typedef { import('./walker.js').WalkerContext} WalkerContext */ + +/** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => void} SyncHandler */ + +class SyncWalker extends WalkerBase { + /** + * + * @param {SyncHandler} enter + * @param {SyncHandler} leave + */ + constructor(enter, leave) { + super(); + + /** @type {SyncHandler} */ + this.enter = enter; + + /** @type {SyncHandler} */ + this.leave = leave; + } + + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {BaseNode} + */ + visit(node, parent, prop, index) { + if (node) { + if (this.enter) { + const _should_skip = this.should_skip; + const _should_remove = this.should_remove; + const _replacement = this.replacement; + this.should_skip = false; + this.should_remove = false; + this.replacement = null; + + this.enter.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const skipped = this.should_skip; + const removed = this.should_remove; + + this.should_skip = _should_skip; + this.should_remove = _should_remove; + this.replacement = _replacement; + + if (skipped) return node; + if (removed) return null; + } + + for (const key in node) { + const value = node[key]; + + if (typeof value !== "object") { + continue; + } else if (Array.isArray(value)) { + for (let i = 0; i < value.length; i += 1) { + if (value[i] !== null && typeof value[i].type === 'string') { + if (!this.visit(value[i], node, key, i)) { + // removed + i--; + } + } + } + } else if (value !== null && typeof value.type === "string") { + this.visit(value, node, key, null); + } + } + + if (this.leave) { + const _replacement = this.replacement; + const _should_remove = this.should_remove; + this.replacement = null; + this.should_remove = false; + + this.leave.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const removed = this.should_remove; + + this.replacement = _replacement; + this.should_remove = _should_remove; + + if (removed) return null; + } + } + + return node; + } +} + +// @ts-check + +/** @typedef { import('estree').BaseNode} BaseNode */ +/** @typedef { import('./walker').WalkerContext} WalkerContext */ + +/** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => Promise<void>} AsyncHandler */ + +class AsyncWalker extends WalkerBase { + /** + * + * @param {AsyncHandler} enter + * @param {AsyncHandler} leave + */ + constructor(enter, leave) { + super(); + + /** @type {AsyncHandler} */ + this.enter = enter; + + /** @type {AsyncHandler} */ + this.leave = leave; + } + + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {Promise<BaseNode>} + */ + async visit(node, parent, prop, index) { + if (node) { + if (this.enter) { + const _should_skip = this.should_skip; + const _should_remove = this.should_remove; + const _replacement = this.replacement; + this.should_skip = false; + this.should_remove = false; + this.replacement = null; + + await this.enter.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const skipped = this.should_skip; + const removed = this.should_remove; + + this.should_skip = _should_skip; + this.should_remove = _should_remove; + this.replacement = _replacement; + + if (skipped) return node; + if (removed) return null; + } + + for (const key in node) { + const value = node[key]; + + if (typeof value !== "object") { + continue; + } else if (Array.isArray(value)) { + for (let i = 0; i < value.length; i += 1) { + if (value[i] !== null && typeof value[i].type === 'string') { + if (!(await this.visit(value[i], node, key, i))) { + // removed + i--; + } + } + } + } else if (value !== null && typeof value.type === "string") { + await this.visit(value, node, key, null); + } + } + + if (this.leave) { + const _replacement = this.replacement; + const _should_remove = this.should_remove; + this.replacement = null; + this.should_remove = false; + + await this.leave.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const removed = this.should_remove; + + this.replacement = _replacement; + this.should_remove = _should_remove; + + if (removed) return null; + } + } + + return node; + } +} + +// @ts-check + +/** @typedef { import('estree').BaseNode} BaseNode */ +/** @typedef { import('./sync.js').SyncHandler} SyncHandler */ +/** @typedef { import('./async.js').AsyncHandler} AsyncHandler */ + +/** + * + * @param {BaseNode} ast + * @param {{ + * enter?: SyncHandler + * leave?: SyncHandler + * }} walker + * @returns {BaseNode} + */ +function walk(ast, { enter, leave }) { + const instance = new SyncWalker(enter, leave); + return instance.visit(ast, null); +} + +/** + * + * @param {BaseNode} ast + * @param {{ + * enter?: AsyncHandler + * leave?: AsyncHandler + * }} walker + * @returns {Promise<BaseNode>} + */ +async function asyncWalk(ast, { enter, leave }) { + const instance = new AsyncWalker(enter, leave); + return await instance.visit(ast, null); +} + +export { asyncWalk, walk }; diff --git a/node_modules/estree-walker/dist/esm/package.json b/node_modules/estree-walker/dist/esm/package.json new file mode 100644 index 0000000..7c34deb --- /dev/null +++ b/node_modules/estree-walker/dist/esm/package.json @@ -0,0 +1 @@ +{"type":"module"} \ No newline at end of file diff --git a/node_modules/estree-walker/dist/umd/estree-walker.js b/node_modules/estree-walker/dist/umd/estree-walker.js new file mode 100644 index 0000000..46fed0f --- /dev/null +++ b/node_modules/estree-walker/dist/umd/estree-walker.js @@ -0,0 +1,344 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.estreeWalker = {})); +}(this, (function (exports) { 'use strict'; + + // @ts-check + /** @typedef { import('estree').BaseNode} BaseNode */ + + /** @typedef {{ + skip: () => void; + remove: () => void; + replace: (node: BaseNode) => void; + }} WalkerContext */ + + class WalkerBase { + constructor() { + /** @type {boolean} */ + this.should_skip = false; + + /** @type {boolean} */ + this.should_remove = false; + + /** @type {BaseNode | null} */ + this.replacement = null; + + /** @type {WalkerContext} */ + this.context = { + skip: () => (this.should_skip = true), + remove: () => (this.should_remove = true), + replace: (node) => (this.replacement = node) + }; + } + + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + * @param {BaseNode} node + */ + replace(parent, prop, index, node) { + if (parent) { + if (index !== null) { + parent[prop][index] = node; + } else { + parent[prop] = node; + } + } + } + + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + */ + remove(parent, prop, index) { + if (parent) { + if (index !== null) { + parent[prop].splice(index, 1); + } else { + delete parent[prop]; + } + } + } + } + + // @ts-check + + /** @typedef { import('estree').BaseNode} BaseNode */ + /** @typedef { import('./walker.js').WalkerContext} WalkerContext */ + + /** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => void} SyncHandler */ + + class SyncWalker extends WalkerBase { + /** + * + * @param {SyncHandler} enter + * @param {SyncHandler} leave + */ + constructor(enter, leave) { + super(); + + /** @type {SyncHandler} */ + this.enter = enter; + + /** @type {SyncHandler} */ + this.leave = leave; + } + + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {BaseNode} + */ + visit(node, parent, prop, index) { + if (node) { + if (this.enter) { + const _should_skip = this.should_skip; + const _should_remove = this.should_remove; + const _replacement = this.replacement; + this.should_skip = false; + this.should_remove = false; + this.replacement = null; + + this.enter.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const skipped = this.should_skip; + const removed = this.should_remove; + + this.should_skip = _should_skip; + this.should_remove = _should_remove; + this.replacement = _replacement; + + if (skipped) return node; + if (removed) return null; + } + + for (const key in node) { + const value = node[key]; + + if (typeof value !== "object") { + continue; + } else if (Array.isArray(value)) { + for (let i = 0; i < value.length; i += 1) { + if (value[i] !== null && typeof value[i].type === 'string') { + if (!this.visit(value[i], node, key, i)) { + // removed + i--; + } + } + } + } else if (value !== null && typeof value.type === "string") { + this.visit(value, node, key, null); + } + } + + if (this.leave) { + const _replacement = this.replacement; + const _should_remove = this.should_remove; + this.replacement = null; + this.should_remove = false; + + this.leave.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const removed = this.should_remove; + + this.replacement = _replacement; + this.should_remove = _should_remove; + + if (removed) return null; + } + } + + return node; + } + } + + // @ts-check + + /** @typedef { import('estree').BaseNode} BaseNode */ + /** @typedef { import('./walker').WalkerContext} WalkerContext */ + + /** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => Promise<void>} AsyncHandler */ + + class AsyncWalker extends WalkerBase { + /** + * + * @param {AsyncHandler} enter + * @param {AsyncHandler} leave + */ + constructor(enter, leave) { + super(); + + /** @type {AsyncHandler} */ + this.enter = enter; + + /** @type {AsyncHandler} */ + this.leave = leave; + } + + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {Promise<BaseNode>} + */ + async visit(node, parent, prop, index) { + if (node) { + if (this.enter) { + const _should_skip = this.should_skip; + const _should_remove = this.should_remove; + const _replacement = this.replacement; + this.should_skip = false; + this.should_remove = false; + this.replacement = null; + + await this.enter.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const skipped = this.should_skip; + const removed = this.should_remove; + + this.should_skip = _should_skip; + this.should_remove = _should_remove; + this.replacement = _replacement; + + if (skipped) return node; + if (removed) return null; + } + + for (const key in node) { + const value = node[key]; + + if (typeof value !== "object") { + continue; + } else if (Array.isArray(value)) { + for (let i = 0; i < value.length; i += 1) { + if (value[i] !== null && typeof value[i].type === 'string') { + if (!(await this.visit(value[i], node, key, i))) { + // removed + i--; + } + } + } + } else if (value !== null && typeof value.type === "string") { + await this.visit(value, node, key, null); + } + } + + if (this.leave) { + const _replacement = this.replacement; + const _should_remove = this.should_remove; + this.replacement = null; + this.should_remove = false; + + await this.leave.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const removed = this.should_remove; + + this.replacement = _replacement; + this.should_remove = _should_remove; + + if (removed) return null; + } + } + + return node; + } + } + + // @ts-check + + /** @typedef { import('estree').BaseNode} BaseNode */ + /** @typedef { import('./sync.js').SyncHandler} SyncHandler */ + /** @typedef { import('./async.js').AsyncHandler} AsyncHandler */ + + /** + * + * @param {BaseNode} ast + * @param {{ + * enter?: SyncHandler + * leave?: SyncHandler + * }} walker + * @returns {BaseNode} + */ + function walk(ast, { enter, leave }) { + const instance = new SyncWalker(enter, leave); + return instance.visit(ast, null); + } + + /** + * + * @param {BaseNode} ast + * @param {{ + * enter?: AsyncHandler + * leave?: AsyncHandler + * }} walker + * @returns {Promise<BaseNode>} + */ + async function asyncWalk(ast, { enter, leave }) { + const instance = new AsyncWalker(enter, leave); + return await instance.visit(ast, null); + } + + exports.asyncWalk = asyncWalk; + exports.walk = walk; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); diff --git a/node_modules/estree-walker/package.json b/node_modules/estree-walker/package.json new file mode 100644 index 0000000..f646eb5 --- /dev/null +++ b/node_modules/estree-walker/package.json @@ -0,0 +1,37 @@ +{ + "name": "estree-walker", + "description": "Traverse an ESTree-compliant AST", + "version": "2.0.2", + "private": false, + "author": "Rich Harris", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/Rich-Harris/estree-walker" + }, + "type": "commonjs", + "main": "./dist/umd/estree-walker.js", + "module": "./dist/esm/estree-walker.js", + "exports": { + "require": "./dist/umd/estree-walker.js", + "import": "./dist/esm/estree-walker.js" + }, + "types": "types/index.d.ts", + "scripts": { + "prepublishOnly": "npm run build && npm test", + "build": "tsc && rollup -c", + "test": "uvu test" + }, + "devDependencies": { + "@types/estree": "0.0.42", + "rollup": "^2.10.9", + "typescript": "^3.7.5", + "uvu": "^0.5.1" + }, + "files": [ + "src", + "dist", + "types", + "README.md" + ] +} diff --git a/node_modules/estree-walker/src/async.js b/node_modules/estree-walker/src/async.js new file mode 100644 index 0000000..54276b5 --- /dev/null +++ b/node_modules/estree-walker/src/async.js @@ -0,0 +1,118 @@ +// @ts-check +import { WalkerBase } from './walker.js'; + +/** @typedef { import('estree').BaseNode} BaseNode */ +/** @typedef { import('./walker').WalkerContext} WalkerContext */ + +/** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => Promise<void>} AsyncHandler */ + +export class AsyncWalker extends WalkerBase { + /** + * + * @param {AsyncHandler} enter + * @param {AsyncHandler} leave + */ + constructor(enter, leave) { + super(); + + /** @type {AsyncHandler} */ + this.enter = enter; + + /** @type {AsyncHandler} */ + this.leave = leave; + } + + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {Promise<BaseNode>} + */ + async visit(node, parent, prop, index) { + if (node) { + if (this.enter) { + const _should_skip = this.should_skip; + const _should_remove = this.should_remove; + const _replacement = this.replacement; + this.should_skip = false; + this.should_remove = false; + this.replacement = null; + + await this.enter.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const skipped = this.should_skip; + const removed = this.should_remove; + + this.should_skip = _should_skip; + this.should_remove = _should_remove; + this.replacement = _replacement; + + if (skipped) return node; + if (removed) return null; + } + + for (const key in node) { + const value = node[key]; + + if (typeof value !== "object") { + continue; + } else if (Array.isArray(value)) { + for (let i = 0; i < value.length; i += 1) { + if (value[i] !== null && typeof value[i].type === 'string') { + if (!(await this.visit(value[i], node, key, i))) { + // removed + i--; + } + } + } + } else if (value !== null && typeof value.type === "string") { + await this.visit(value, node, key, null); + } + } + + if (this.leave) { + const _replacement = this.replacement; + const _should_remove = this.should_remove; + this.replacement = null; + this.should_remove = false; + + await this.leave.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const removed = this.should_remove; + + this.replacement = _replacement; + this.should_remove = _should_remove; + + if (removed) return null; + } + } + + return node; + } +} diff --git a/node_modules/estree-walker/src/index.js b/node_modules/estree-walker/src/index.js new file mode 100644 index 0000000..dcf4c72 --- /dev/null +++ b/node_modules/estree-walker/src/index.js @@ -0,0 +1,35 @@ +// @ts-check +import { SyncWalker } from './sync.js'; +import { AsyncWalker } from './async.js'; + +/** @typedef { import('estree').BaseNode} BaseNode */ +/** @typedef { import('./sync.js').SyncHandler} SyncHandler */ +/** @typedef { import('./async.js').AsyncHandler} AsyncHandler */ + +/** + * + * @param {BaseNode} ast + * @param {{ + * enter?: SyncHandler + * leave?: SyncHandler + * }} walker + * @returns {BaseNode} + */ +export function walk(ast, { enter, leave }) { + const instance = new SyncWalker(enter, leave); + return instance.visit(ast, null); +} + +/** + * + * @param {BaseNode} ast + * @param {{ + * enter?: AsyncHandler + * leave?: AsyncHandler + * }} walker + * @returns {Promise<BaseNode>} + */ +export async function asyncWalk(ast, { enter, leave }) { + const instance = new AsyncWalker(enter, leave); + return await instance.visit(ast, null); +} diff --git a/node_modules/estree-walker/src/package.json b/node_modules/estree-walker/src/package.json new file mode 100644 index 0000000..1632c2c --- /dev/null +++ b/node_modules/estree-walker/src/package.json @@ -0,0 +1 @@ +{"type": "module"} \ No newline at end of file diff --git a/node_modules/estree-walker/src/sync.js b/node_modules/estree-walker/src/sync.js new file mode 100644 index 0000000..b3cea40 --- /dev/null +++ b/node_modules/estree-walker/src/sync.js @@ -0,0 +1,118 @@ +// @ts-check +import { WalkerBase } from './walker.js'; + +/** @typedef { import('estree').BaseNode} BaseNode */ +/** @typedef { import('./walker.js').WalkerContext} WalkerContext */ + +/** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => void} SyncHandler */ + +export class SyncWalker extends WalkerBase { + /** + * + * @param {SyncHandler} enter + * @param {SyncHandler} leave + */ + constructor(enter, leave) { + super(); + + /** @type {SyncHandler} */ + this.enter = enter; + + /** @type {SyncHandler} */ + this.leave = leave; + } + + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {BaseNode} + */ + visit(node, parent, prop, index) { + if (node) { + if (this.enter) { + const _should_skip = this.should_skip; + const _should_remove = this.should_remove; + const _replacement = this.replacement; + this.should_skip = false; + this.should_remove = false; + this.replacement = null; + + this.enter.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const skipped = this.should_skip; + const removed = this.should_remove; + + this.should_skip = _should_skip; + this.should_remove = _should_remove; + this.replacement = _replacement; + + if (skipped) return node; + if (removed) return null; + } + + for (const key in node) { + const value = node[key]; + + if (typeof value !== "object") { + continue; + } else if (Array.isArray(value)) { + for (let i = 0; i < value.length; i += 1) { + if (value[i] !== null && typeof value[i].type === 'string') { + if (!this.visit(value[i], node, key, i)) { + // removed + i--; + } + } + } + } else if (value !== null && typeof value.type === "string") { + this.visit(value, node, key, null); + } + } + + if (this.leave) { + const _replacement = this.replacement; + const _should_remove = this.should_remove; + this.replacement = null; + this.should_remove = false; + + this.leave.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const removed = this.should_remove; + + this.replacement = _replacement; + this.should_remove = _should_remove; + + if (removed) return null; + } + } + + return node; + } +} diff --git a/node_modules/estree-walker/src/walker.js b/node_modules/estree-walker/src/walker.js new file mode 100644 index 0000000..3555d88 --- /dev/null +++ b/node_modules/estree-walker/src/walker.js @@ -0,0 +1,61 @@ +// @ts-check +/** @typedef { import('estree').BaseNode} BaseNode */ + +/** @typedef {{ + skip: () => void; + remove: () => void; + replace: (node: BaseNode) => void; +}} WalkerContext */ + +export class WalkerBase { + constructor() { + /** @type {boolean} */ + this.should_skip = false; + + /** @type {boolean} */ + this.should_remove = false; + + /** @type {BaseNode | null} */ + this.replacement = null; + + /** @type {WalkerContext} */ + this.context = { + skip: () => (this.should_skip = true), + remove: () => (this.should_remove = true), + replace: (node) => (this.replacement = node) + }; + } + + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + * @param {BaseNode} node + */ + replace(parent, prop, index, node) { + if (parent) { + if (index !== null) { + parent[prop][index] = node; + } else { + parent[prop] = node; + } + } + } + + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + */ + remove(parent, prop, index) { + if (parent) { + if (index !== null) { + parent[prop].splice(index, 1); + } else { + delete parent[prop]; + } + } + } +} diff --git a/node_modules/estree-walker/types/async.d.ts b/node_modules/estree-walker/types/async.d.ts new file mode 100644 index 0000000..c85bfdc --- /dev/null +++ b/node_modules/estree-walker/types/async.d.ts @@ -0,0 +1,53 @@ +/** @typedef { import('estree').BaseNode} BaseNode */ +/** @typedef { import('./walker').WalkerContext} WalkerContext */ +/** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => Promise<void>} AsyncHandler */ +export class AsyncWalker extends WalkerBase { + /** + * + * @param {AsyncHandler} enter + * @param {AsyncHandler} leave + */ + constructor(enter: (this: { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; + }, node: import("estree").BaseNode, parent: import("estree").BaseNode, key: string, index: number) => Promise<void>, leave: (this: { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; + }, node: import("estree").BaseNode, parent: import("estree").BaseNode, key: string, index: number) => Promise<void>); + /** @type {AsyncHandler} */ + enter: AsyncHandler; + /** @type {AsyncHandler} */ + leave: AsyncHandler; + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {Promise<BaseNode>} + */ + visit(node: import("estree").BaseNode, parent: import("estree").BaseNode, prop?: string, index?: number): Promise<import("estree").BaseNode>; + should_skip: any; + should_remove: any; + replacement: any; +} +export type BaseNode = import("estree").BaseNode; +export type WalkerContext = { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; +}; +export type AsyncHandler = (this: { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; +}, node: import("estree").BaseNode, parent: import("estree").BaseNode, key: string, index: number) => Promise<void>; +import { WalkerBase } from "./walker.js"; diff --git a/node_modules/estree-walker/types/index.d.ts b/node_modules/estree-walker/types/index.d.ts new file mode 100644 index 0000000..dfc3277 --- /dev/null +++ b/node_modules/estree-walker/types/index.d.ts @@ -0,0 +1,56 @@ +/** @typedef { import('estree').BaseNode} BaseNode */ +/** @typedef { import('./sync.js').SyncHandler} SyncHandler */ +/** @typedef { import('./async.js').AsyncHandler} AsyncHandler */ +/** + * + * @param {BaseNode} ast + * @param {{ + * enter?: SyncHandler + * leave?: SyncHandler + * }} walker + * @returns {BaseNode} + */ +export function walk(ast: import("estree").BaseNode, { enter, leave }: { + enter?: (this: { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; + }, node: import("estree").BaseNode, parent: import("estree").BaseNode, key: string, index: number) => void; + leave?: (this: { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; + }, node: import("estree").BaseNode, parent: import("estree").BaseNode, key: string, index: number) => void; +}): import("estree").BaseNode; +/** + * + * @param {BaseNode} ast + * @param {{ + * enter?: AsyncHandler + * leave?: AsyncHandler + * }} walker + * @returns {Promise<BaseNode>} + */ +export function asyncWalk(ast: import("estree").BaseNode, { enter, leave }: { + enter?: (this: { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; + }, node: import("estree").BaseNode, parent: import("estree").BaseNode, key: string, index: number) => Promise<void>; + leave?: (this: { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; + }, node: import("estree").BaseNode, parent: import("estree").BaseNode, key: string, index: number) => Promise<void>; +}): Promise<import("estree").BaseNode>; +export type BaseNode = import("estree").BaseNode; +export type SyncHandler = (this: { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; +}, node: import("estree").BaseNode, parent: import("estree").BaseNode, key: string, index: number) => void; +export type AsyncHandler = (this: { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; +}, node: import("estree").BaseNode, parent: import("estree").BaseNode, key: string, index: number) => Promise<void>; diff --git a/node_modules/estree-walker/types/sync.d.ts b/node_modules/estree-walker/types/sync.d.ts new file mode 100644 index 0000000..e9e4cc1 --- /dev/null +++ b/node_modules/estree-walker/types/sync.d.ts @@ -0,0 +1,53 @@ +/** @typedef { import('estree').BaseNode} BaseNode */ +/** @typedef { import('./walker.js').WalkerContext} WalkerContext */ +/** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => void} SyncHandler */ +export class SyncWalker extends WalkerBase { + /** + * + * @param {SyncHandler} enter + * @param {SyncHandler} leave + */ + constructor(enter: (this: { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; + }, node: import("estree").BaseNode, parent: import("estree").BaseNode, key: string, index: number) => void, leave: (this: { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; + }, node: import("estree").BaseNode, parent: import("estree").BaseNode, key: string, index: number) => void); + /** @type {SyncHandler} */ + enter: SyncHandler; + /** @type {SyncHandler} */ + leave: SyncHandler; + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {BaseNode} + */ + visit(node: import("estree").BaseNode, parent: import("estree").BaseNode, prop?: string, index?: number): import("estree").BaseNode; + should_skip: any; + should_remove: any; + replacement: any; +} +export type BaseNode = import("estree").BaseNode; +export type WalkerContext = { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; +}; +export type SyncHandler = (this: { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; +}, node: import("estree").BaseNode, parent: import("estree").BaseNode, key: string, index: number) => void; +import { WalkerBase } from "./walker.js"; diff --git a/node_modules/estree-walker/types/tsconfig.tsbuildinfo b/node_modules/estree-walker/types/tsconfig.tsbuildinfo new file mode 100644 index 0000000..799022f --- /dev/null +++ b/node_modules/estree-walker/types/tsconfig.tsbuildinfo @@ -0,0 +1,345 @@ +{ + "program": { + "fileInfos": { + "../node_modules/typescript/lib/lib.es5.d.ts": { + "version": "fc43680ad3a1a4ec8c7b8d908af1ec9ddff87845346de5f02c735c9171fa98ea", + "signature": "fc43680ad3a1a4ec8c7b8d908af1ec9ddff87845346de5f02c735c9171fa98ea" + }, + "../node_modules/typescript/lib/lib.es2015.d.ts": { + "version": "7994d44005046d1413ea31d046577cdda33b8b2470f30281fd9c8b3c99fe2d96", + "signature": "7994d44005046d1413ea31d046577cdda33b8b2470f30281fd9c8b3c99fe2d96" + }, + "../node_modules/typescript/lib/lib.es2016.d.ts": { + "version": "5f217838d25704474d9ef93774f04164889169ca31475fe423a9de6758f058d1", + "signature": "5f217838d25704474d9ef93774f04164889169ca31475fe423a9de6758f058d1" + }, + "../node_modules/typescript/lib/lib.es2017.d.ts": { + "version": "459097c7bdd88fc5731367e56591e4f465f2c9de81a35427a7bd473165c34743", + "signature": "459097c7bdd88fc5731367e56591e4f465f2c9de81a35427a7bd473165c34743" + }, + "../node_modules/typescript/lib/lib.dom.d.ts": { + "version": "d93de5e8a7275cb9d47481410e13b3b1debb997e216490954b5d106e37e086de", + "signature": "d93de5e8a7275cb9d47481410e13b3b1debb997e216490954b5d106e37e086de" + }, + "../node_modules/typescript/lib/lib.dom.iterable.d.ts": { + "version": "8329c3401aa8708426c7760f14219170f69a2cb77e4519758cec6f5027270faf", + "signature": "8329c3401aa8708426c7760f14219170f69a2cb77e4519758cec6f5027270faf" + }, + "../node_modules/typescript/lib/lib.webworker.importscripts.d.ts": { + "version": "fe4e59403e34c7ff747abe4ff6abbc7718229556d7c1a5b93473fb53156c913b", + "signature": "fe4e59403e34c7ff747abe4ff6abbc7718229556d7c1a5b93473fb53156c913b" + }, + "../node_modules/typescript/lib/lib.scripthost.d.ts": { + "version": "b9faa17292f17d2ad75e34fac77dd63a6403af1dba02d39cd0cbb9ffdf3de8b9", + "signature": "b9faa17292f17d2ad75e34fac77dd63a6403af1dba02d39cd0cbb9ffdf3de8b9" + }, + "../node_modules/typescript/lib/lib.es2015.core.d.ts": { + "version": "734ddc145e147fbcd55f07d034f50ccff1086f5a880107665ec326fb368876f6", + "signature": "734ddc145e147fbcd55f07d034f50ccff1086f5a880107665ec326fb368876f6" + }, + "../node_modules/typescript/lib/lib.es2015.collection.d.ts": { + "version": "4a0862a21f4700de873db3b916f70e41570e2f558da77d2087c9490f5a0615d8", + "signature": "4a0862a21f4700de873db3b916f70e41570e2f558da77d2087c9490f5a0615d8" + }, + "../node_modules/typescript/lib/lib.es2015.generator.d.ts": { + "version": "765e0e9c9d74cf4d031ca8b0bdb269a853e7d81eda6354c8510218d03db12122", + "signature": "765e0e9c9d74cf4d031ca8b0bdb269a853e7d81eda6354c8510218d03db12122" + }, + "../node_modules/typescript/lib/lib.es2015.iterable.d.ts": { + "version": "285958e7699f1babd76d595830207f18d719662a0c30fac7baca7df7162a9210", + "signature": "285958e7699f1babd76d595830207f18d719662a0c30fac7baca7df7162a9210" + }, + "../node_modules/typescript/lib/lib.es2015.promise.d.ts": { + "version": "d4deaafbb18680e3143e8b471acd650ed6f72a408a33137f0a0dd104fbe7f8ca", + "signature": "d4deaafbb18680e3143e8b471acd650ed6f72a408a33137f0a0dd104fbe7f8ca" + }, + "../node_modules/typescript/lib/lib.es2015.proxy.d.ts": { + "version": "5e72f949a89717db444e3bd9433468890068bb21a5638d8ab15a1359e05e54fe", + "signature": "5e72f949a89717db444e3bd9433468890068bb21a5638d8ab15a1359e05e54fe" + }, + "../node_modules/typescript/lib/lib.es2015.reflect.d.ts": { + "version": "f5b242136ae9bfb1cc99a5971cccc44e99947ae6b5ef6fd8aa54b5ade553b976", + "signature": "f5b242136ae9bfb1cc99a5971cccc44e99947ae6b5ef6fd8aa54b5ade553b976" + }, + "../node_modules/typescript/lib/lib.es2015.symbol.d.ts": { + "version": "9ae2860252d6b5f16e2026d8a2c2069db7b2a3295e98b6031d01337b96437230", + "signature": "9ae2860252d6b5f16e2026d8a2c2069db7b2a3295e98b6031d01337b96437230" + }, + "../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts": { + "version": "3e0a459888f32b42138d5a39f706ff2d55d500ab1031e0988b5568b0f67c2303", + "signature": "3e0a459888f32b42138d5a39f706ff2d55d500ab1031e0988b5568b0f67c2303" + }, + "../node_modules/typescript/lib/lib.es2016.array.include.d.ts": { + "version": "3f96f1e570aedbd97bf818c246727151e873125d0512e4ae904330286c721bc0", + "signature": "3f96f1e570aedbd97bf818c246727151e873125d0512e4ae904330286c721bc0" + }, + "../node_modules/typescript/lib/lib.es2017.object.d.ts": { + "version": "c2d60b2e558d44384e4704b00e6b3d154334721a911f094d3133c35f0917b408", + "signature": "c2d60b2e558d44384e4704b00e6b3d154334721a911f094d3133c35f0917b408" + }, + "../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts": { + "version": "b8667586a618c5cf64523d4e500ae39e781428abfb28f3de441fc66b56144b6f", + "signature": "b8667586a618c5cf64523d4e500ae39e781428abfb28f3de441fc66b56144b6f" + }, + "../node_modules/typescript/lib/lib.es2017.string.d.ts": { + "version": "21df2e0059f14dcb4c3a0e125859f6b6ff01332ee24b0065a741d121250bc71c", + "signature": "21df2e0059f14dcb4c3a0e125859f6b6ff01332ee24b0065a741d121250bc71c" + }, + "../node_modules/typescript/lib/lib.es2017.intl.d.ts": { + "version": "c1759cb171c7619af0d2234f2f8fb2a871ee88e956e2ed91bb61778e41f272c6", + "signature": "c1759cb171c7619af0d2234f2f8fb2a871ee88e956e2ed91bb61778e41f272c6" + }, + "../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts": { + "version": "28569d59e07d4378cb3d54979c4c60f9f06305c9bb6999ffe6cab758957adc46", + "signature": "28569d59e07d4378cb3d54979c4c60f9f06305c9bb6999ffe6cab758957adc46" + }, + "../node_modules/typescript/lib/lib.es2017.full.d.ts": { + "version": "873c09f1c309389742d98b7b67419a8e0a5fa6f10ce59fd5149ecd31a2818594", + "signature": "873c09f1c309389742d98b7b67419a8e0a5fa6f10ce59fd5149ecd31a2818594" + }, + "../node_modules/@types/estree/index.d.ts": { + "version": "c2efad8a2f2d7fb931ff15c7959fb45340e74684cd665ddf0cbf9b3977be1644", + "signature": "c2efad8a2f2d7fb931ff15c7959fb45340e74684cd665ddf0cbf9b3977be1644" + }, + "../src/walker.js": { + "version": "4cc9d0e334d83a4cebeeac502de37a1aeeb953f6d4145a886d9eecea1f2142a7", + "signature": "075872468ccc19c83b03fd717fc9305b5f8ec09592210cf60279cb13eca2bd70" + }, + "../src/async.js": { + "version": "904efd145090ac40c3c98f29cc928332898a62ab642dd5921db2ae249bfe014a", + "signature": "da428f781d6dc6dfd4f4afd0dd5f25a780897dc8b57e5b30462491b7d08f32c0" + }, + "../src/sync.js": { + "version": "85bb22b85042f0a3717d8fac2fc8f62af16894652be34d1e08eb3e63785535f5", + "signature": "5b131a727db18c956611a5e33d08217df96d0f2e0f26d98b804d1ec2407e59ae" + }, + "../src/index.js": { + "version": "99128f4c6cb79cb1e3abf3f2ba96faedd2b820aab4fd7f743aab0b8d710a73af", + "signature": "c52be5c79280bfcfcf359c084c6f2f70f405b0ad14dde96b6703dbc5ef2261f5" + } + }, + "options": { + "allowJs": true, + "target": 4, + "module": 99, + "types": [ + "estree" + ], + "declaration": true, + "declarationDir": "./", + "emitDeclarationOnly": true, + "outDir": "./", + "newLine": 1, + "noImplicitAny": true, + "noImplicitThis": true, + "incremental": true, + "configFilePath": "../tsconfig.json" + }, + "referencedMap": { + "../src/walker.js": [ + "../node_modules/@types/estree/index.d.ts" + ], + "../src/async.js": [ + "../src/walker.js", + "../node_modules/@types/estree/index.d.ts" + ], + "../src/sync.js": [ + "../src/walker.js", + "../node_modules/@types/estree/index.d.ts" + ], + "../src/index.js": [ + "../src/sync.js", + "../src/async.js", + "../node_modules/@types/estree/index.d.ts" + ] + }, + "exportedModulesMap": { + "../src/walker.js": [ + "../node_modules/@types/estree/index.d.ts" + ], + "../src/async.js": [ + "../node_modules/@types/estree/index.d.ts" + ], + "../src/sync.js": [ + "../node_modules/@types/estree/index.d.ts" + ], + "../src/index.js": [ + "../node_modules/@types/estree/index.d.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + "../node_modules/typescript/lib/lib.es5.d.ts", + "../node_modules/typescript/lib/lib.es2015.d.ts", + "../node_modules/typescript/lib/lib.es2016.d.ts", + "../node_modules/typescript/lib/lib.es2017.d.ts", + "../node_modules/typescript/lib/lib.dom.d.ts", + "../node_modules/typescript/lib/lib.dom.iterable.d.ts", + "../node_modules/typescript/lib/lib.webworker.importscripts.d.ts", + "../node_modules/typescript/lib/lib.scripthost.d.ts", + "../node_modules/typescript/lib/lib.es2015.core.d.ts", + "../node_modules/typescript/lib/lib.es2015.collection.d.ts", + "../node_modules/typescript/lib/lib.es2015.generator.d.ts", + "../node_modules/typescript/lib/lib.es2015.iterable.d.ts", + "../node_modules/typescript/lib/lib.es2015.promise.d.ts", + "../node_modules/typescript/lib/lib.es2015.proxy.d.ts", + "../node_modules/typescript/lib/lib.es2015.reflect.d.ts", + "../node_modules/typescript/lib/lib.es2015.symbol.d.ts", + "../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts", + "../node_modules/typescript/lib/lib.es2016.array.include.d.ts", + "../node_modules/typescript/lib/lib.es2017.object.d.ts", + "../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts", + "../node_modules/typescript/lib/lib.es2017.string.d.ts", + "../node_modules/typescript/lib/lib.es2017.intl.d.ts", + "../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts", + "../node_modules/typescript/lib/lib.es2017.full.d.ts", + "../node_modules/@types/estree/index.d.ts", + "../src/walker.js", + [ + "../src/async.js", + [ + { + "file": "../src/async.js", + "start": 864, + "length": 12, + "messageText": "'_should_skip' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.", + "category": 1, + "code": 7022 + }, + { + "file": "../src/async.js", + "start": 907, + "length": 14, + "messageText": "'_should_remove' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.", + "category": 1, + "code": 7022 + }, + { + "file": "../src/async.js", + "start": 954, + "length": 12, + "messageText": "'_replacement' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.", + "category": 1, + "code": 7022 + }, + { + "file": "../src/async.js", + "start": 991, + "length": 24, + "messageText": "'should_skip' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.", + "category": 1, + "code": 7022 + }, + { + "file": "../src/async.js", + "start": 1021, + "length": 26, + "messageText": "'should_remove' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.", + "category": 1, + "code": 7022 + }, + { + "file": "../src/async.js", + "start": 1053, + "length": 23, + "messageText": "'replacement' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.", + "category": 1, + "code": 7022 + }, + { + "file": "../src/async.js", + "start": 1643, + "length": 9, + "code": 7053, + "category": 1, + "messageText": { + "messageText": "Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'BaseNode'.", + "category": 1, + "code": 7053, + "next": [ + { + "messageText": "No index signature with a parameter of type 'string' was found on type 'BaseNode'.", + "category": 1, + "code": 7054 + } + ] + } + } + ] + ], + [ + "../src/sync.js", + [ + { + "file": "../src/sync.js", + "start": 837, + "length": 12, + "messageText": "'_should_skip' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.", + "category": 1, + "code": 7022 + }, + { + "file": "../src/sync.js", + "start": 880, + "length": 14, + "messageText": "'_should_remove' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.", + "category": 1, + "code": 7022 + }, + { + "file": "../src/sync.js", + "start": 927, + "length": 12, + "messageText": "'_replacement' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.", + "category": 1, + "code": 7022 + }, + { + "file": "../src/sync.js", + "start": 964, + "length": 24, + "messageText": "'should_skip' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.", + "category": 1, + "code": 7022 + }, + { + "file": "../src/sync.js", + "start": 994, + "length": 26, + "messageText": "'should_remove' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.", + "category": 1, + "code": 7022 + }, + { + "file": "../src/sync.js", + "start": 1026, + "length": 23, + "messageText": "'replacement' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.", + "category": 1, + "code": 7022 + }, + { + "file": "../src/sync.js", + "start": 1610, + "length": 9, + "code": 7053, + "category": 1, + "messageText": { + "messageText": "Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'BaseNode'.", + "category": 1, + "code": 7053, + "next": [ + { + "messageText": "No index signature with a parameter of type 'string' was found on type 'BaseNode'.", + "category": 1, + "code": 7054 + } + ] + } + } + ] + ], + "../src/index.js" + ] + }, + "version": "3.7.5" +} \ No newline at end of file diff --git a/node_modules/estree-walker/types/walker.d.ts b/node_modules/estree-walker/types/walker.d.ts new file mode 100644 index 0000000..49d8441 --- /dev/null +++ b/node_modules/estree-walker/types/walker.d.ts @@ -0,0 +1,37 @@ +/** @typedef { import('estree').BaseNode} BaseNode */ +/** @typedef {{ + skip: () => void; + remove: () => void; + replace: (node: BaseNode) => void; +}} WalkerContext */ +export class WalkerBase { + /** @type {boolean} */ + should_skip: boolean; + /** @type {boolean} */ + should_remove: boolean; + /** @type {BaseNode | null} */ + replacement: BaseNode | null; + /** @type {WalkerContext} */ + context: WalkerContext; + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + * @param {BaseNode} node + */ + replace(parent: any, prop: string, index: number, node: import("estree").BaseNode): void; + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + */ + remove(parent: any, prop: string, index: number): void; +} +export type BaseNode = import("estree").BaseNode; +export type WalkerContext = { + skip: () => void; + remove: () => void; + replace: (node: import("estree").BaseNode) => void; +}; diff --git a/node_modules/event-stream/.travis.yml b/node_modules/event-stream/.travis.yml new file mode 100644 index 0000000..6e5919d --- /dev/null +++ b/node_modules/event-stream/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - "0.10" diff --git a/node_modules/event-stream/LICENCE b/node_modules/event-stream/LICENCE new file mode 100644 index 0000000..2af26fe --- /dev/null +++ b/node_modules/event-stream/LICENCE @@ -0,0 +1,24 @@ +The MIT License (MIT) + +Copyright (c) 2011 Dominic Tarr + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/event-stream/examples/data b/node_modules/event-stream/examples/data new file mode 100644 index 0000000..8c40730 --- /dev/null +++ b/node_modules/event-stream/examples/data @@ -0,0 +1,3 @@ +{"foo": 1} +{"foo": 2} +{"foo": 3, "bar": "test"} diff --git a/node_modules/event-stream/examples/map.js b/node_modules/event-stream/examples/map.js new file mode 100644 index 0000000..02eb840 --- /dev/null +++ b/node_modules/event-stream/examples/map.js @@ -0,0 +1,15 @@ +var es = require('..') + +process.stdin + .pipe(es.map(function (data, callback) { + for (var i = 0; i < data.length; i++) { + if (data[i] == 0x61) { + data[i] = 0x41 + } + } + callback(null, data) + })) + .pipe(process.stdout) + +// echo abcdabcd | node map.js +// AbcdAbcd \ No newline at end of file diff --git a/node_modules/event-stream/examples/pretty.js b/node_modules/event-stream/examples/pretty.js new file mode 100644 index 0000000..5ec88a4 --- /dev/null +++ b/node_modules/event-stream/examples/pretty.js @@ -0,0 +1,18 @@ + +var inspect = require('util').inspect +var es = require('..') + +es.pipe( //pipe joins streams together + process.openStdin(), //open stdin + es.split(null, null, {trailing: false}), //split stream to break on newlines + es.map(function (data, callback) { //turn this async function into a stream + var obj = JSON.parse(data) //parse input into json + callback(null, inspect(obj) + '\n') //render it nicely + }), + process.stdout // pipe it to stdout ! +) + +// cat data | node pretty.js +// { foo: 1 } +// { foo: 2 } +// { foo: 3, bar: 'test' } \ No newline at end of file diff --git a/node_modules/event-stream/examples/split.js b/node_modules/event-stream/examples/split.js new file mode 100644 index 0000000..e21d579 --- /dev/null +++ b/node_modules/event-stream/examples/split.js @@ -0,0 +1,12 @@ +var es = require('..') + +process.stdin + .pipe(es.split(null, null, {trailing: false})) // ignore trailing empty line + .on('data', function (data) { + console.log('data: ' + data) + }) + +// cat data | node map.js +// data: {"foo": 1} +// data: {"foo": 2} +// data: {"foo": 3, "bar": "test"} \ No newline at end of file diff --git a/node_modules/event-stream/index.js b/node_modules/event-stream/index.js new file mode 100644 index 0000000..adb0468 --- /dev/null +++ b/node_modules/event-stream/index.js @@ -0,0 +1,351 @@ +//filter will reemit the data if cb(err,pass) pass is truthy + +// reduce is more tricky +// maybe we want to group the reductions or emit progress updates occasionally +// the most basic reduce just emits one 'data' event after it has recieved 'end' + +var Stream = require('stream').Stream + , es = exports + , through = require('through') + , from = require('from') + , duplex = require('duplexer') + , map = require('map-stream') + , pause = require('pause-stream') + , split = require('split') + , pipeline = require('stream-combiner') + , immediately = global.setImmediate || process.nextTick; + +es.Stream = Stream //re-export Stream from core +es.through = through +es.from = from +es.duplex = duplex +es.map = map +es.pause = pause +es.split = split +es.pipeline = es.connect = es.pipe = pipeline +// merge / concat +// +// combine multiple streams into a single stream. +// will emit end only once + +es.concat = //actually this should be called concat +es.merge = function (/*streams...*/) { + var toMerge = [].slice.call(arguments) + if (toMerge.length === 1 && (toMerge[0] instanceof Array)) { + toMerge = toMerge[0] //handle array as arguments object + } + var stream = new Stream() + stream.setMaxListeners(0) // allow adding more than 11 streams + var endCount = 0 + stream.writable = stream.readable = true + + if (toMerge.length) { + toMerge.forEach(function (e) { + e.pipe(stream, {end: false}) + var ended = false + e.on('end', function () { + if(ended) return + ended = true + endCount ++ + if(endCount == toMerge.length) + stream.emit('end') + }) + }) + } else { + process.nextTick(function () { + stream.emit('end') + }) + } + + stream.write = function (data) { + this.emit('data', data) + } + stream.destroy = function () { + toMerge.forEach(function (e) { + if(e.destroy) e.destroy() + }) + } + return stream +} + + +// writable stream, collects all events into an array +// and calls back when 'end' occurs +// mainly I'm using this to test the other functions + +es.collect = +es.writeArray = function (done) { + if ('function' !== typeof done) + throw new Error('function writeArray (done): done must be function') + + var a = new Stream () + , array = [], isDone = false + a.write = function (l) { + array.push(l) + } + a.end = function () { + isDone = true + done(null, array) + } + a.writable = true + a.readable = false + a.destroy = function () { + a.writable = a.readable = false + if(isDone) return + done(new Error('destroyed before end'), array) + } + return a +} + +//return a Stream that reads the properties of an object +//respecting pause() and resume() + +es.readArray = function (array) { + var stream = new Stream() + , i = 0 + , paused = false + , ended = false + + stream.readable = true + stream.writable = false + + if(!Array.isArray(array)) + throw new Error('event-stream.read expects an array') + + stream.resume = function () { + if(ended) return + paused = false + var l = array.length + while(i < l && !paused && !ended) { + stream.emit('data', array[i++]) + } + if(i == l && !ended) + ended = true, stream.readable = false, stream.emit('end') + } + process.nextTick(stream.resume) + stream.pause = function () { + paused = true + } + stream.destroy = function () { + ended = true + stream.emit('close') + } + return stream +} + +// +// readable (asyncFunction) +// return a stream that calls an async function while the stream is not paused. +// +// the function must take: (count, callback) {... +// + +es.readable = +function (func, continueOnError) { + var stream = new Stream() + , i = 0 + , paused = false + , ended = false + , reading = false + + stream.readable = true + stream.writable = false + + if('function' !== typeof func) + throw new Error('event-stream.readable expects async function') + + stream.on('end', function () { ended = true }) + + function get (err, data) { + + if(err) { + stream.emit('error', err) + if(!continueOnError) stream.emit('end') + } else if (arguments.length > 1) + stream.emit('data', data) + + immediately(function () { + if(ended || paused || reading) return + try { + reading = true + func.call(stream, i++, function () { + reading = false + get.apply(null, arguments) + }) + } catch (err) { + stream.emit('error', err) + } + }) + } + stream.resume = function () { + paused = false + get() + } + process.nextTick(get) + stream.pause = function () { + paused = true + } + stream.destroy = function () { + stream.emit('end') + stream.emit('close') + ended = true + } + return stream +} + + +// +// map sync +// + +es.mapSync = function (sync) { + return es.through(function write(data) { + var mappedData + try { + mappedData = sync(data) + } catch (err) { + return this.emit('error', err) + } + if (mappedData !== undefined) + this.emit('data', mappedData) + }) +} + +// +// filterSync +// + +es.filterSync = function (test) { + return es.through(function(data){ + var s = this + if (test(data)) { + s.queue(data) + } + }); +} + +// +// flatmapSync +// + +es.flatmapSync = function (mapper) { + return es.through(function(data) { + var s = this + data.forEach(function(e) { + s.queue(mapper(e)) + }) + }) +} + +// +// log just print out what is coming through the stream, for debugging +// + +es.log = function (name) { + return es.through(function (data) { + var args = [].slice.call(arguments) + if(name) console.error(name, data) + else console.error(data) + this.emit('data', data) + }) +} + + +// +// child -- pipe through a child process +// + +es.child = function (child) { + + return es.duplex(child.stdin, child.stdout) + +} + +// +// parse +// +// must be used after es.split() to ensure that each chunk represents a line +// source.pipe(es.split()).pipe(es.parse()) + +es.parse = function (options) { + var emitError = !!(options ? options.error : false) + return es.through(function (data) { + var obj + try { + if(data) //ignore empty lines + obj = JSON.parse(data.toString()) + } catch (err) { + if (emitError) + return this.emit('error', err) + return console.error(err, 'attempting to parse:', data) + } + //ignore lines that where only whitespace. + if(obj !== undefined) + this.emit('data', obj) + }) +} +// +// stringify +// + +es.stringify = function () { + var Buffer = require('buffer').Buffer + return es.mapSync(function (e){ + return JSON.stringify(Buffer.isBuffer(e) ? e.toString() : e) + '\n' + }) +} + +// +// replace a string within a stream. +// +// warn: just concatenates the string and then does str.split().join(). +// probably not optimal. +// for smallish responses, who cares? +// I need this for shadow-npm so it's only relatively small json files. + +es.replace = function (from, to) { + return es.pipeline(es.split(from), es.join(to)) +} + +// +// join chunks with a joiner. just like Array#join +// also accepts a callback that is passed the chunks appended together +// this is still supported for legacy reasons. +// + +es.join = function (str) { + + //legacy api + if('function' === typeof str) + return es.wait(str) + + var first = true + return es.through(function (data) { + if(!first) + this.emit('data', str) + first = false + this.emit('data', data) + return true + }) +} + + +// +// wait. callback when 'end' is emitted, with all chunks appended as string. +// + +es.wait = function (callback) { + var arr = [] + return es.through(function (data) { arr.push(data) }, + function () { + var body = Buffer.isBuffer(arr[0]) ? Buffer.concat(arr) + : arr.join('') + this.emit('data', body) + this.emit('end') + if(callback) callback(null, body) + }) +} + +es.pipeable = function () { + throw new Error('[EVENT-STREAM] es.pipeable is deprecated') +} diff --git a/node_modules/event-stream/package.json b/node_modules/event-stream/package.json new file mode 100644 index 0000000..a2a487d --- /dev/null +++ b/node_modules/event-stream/package.json @@ -0,0 +1,36 @@ +{ + "name": "event-stream", + "version": "4.0.1", + "description": "construct pipes of streams of events", + "homepage": "http://github.com/dominictarr/event-stream", + "repository": { + "type": "git", + "url": "git://github.com/dominictarr/event-stream.git" + }, + "dependencies": { + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + }, + "devDependencies": { + "asynct": "^1.1.0", + "it-is": "^1.0.3", + "stream-spec": "^0.3.6", + "tape": "^4.9.1", + "ubelt": "^3.2.2" + }, + "scripts": { + "prepublish": "npm ls && npm test", + "test": "asynct test/", + "test_tap": "set -e; for t in test/*.js; do node $t; done" + }, + "keywords": [ + "stream", "map", "flatmap", "filter", "split", "join", "merge", "replace" + ], + "license": "MIT", + "author": "Dominic Tarr <dominic.tarr@gmail.com> (http://bit.ly/dominictarr)" +} diff --git a/node_modules/event-stream/readme.markdown b/node_modules/event-stream/readme.markdown new file mode 100644 index 0000000..4ce5177 --- /dev/null +++ b/node_modules/event-stream/readme.markdown @@ -0,0 +1,345 @@ +# EventStream + +[Streams](http://nodejs.org/api/stream.html "Stream") are node's best and most misunderstood idea, and EventStream is a toolkit to make creating and working with streams easy. + +Normally, streams are only used for IO, but in event stream we send all kinds of objects down the pipe. If your application's input and output are streams, shouldn't the throughput be a stream too? + +The *EventStream* functions resemble the array functions, because Streams are like Arrays, but laid out in time, rather than in memory. + +All the `event-stream` functions return instances of `Stream`. + +`event-stream` creates [0.8 streams](https://github.com/joyent/node/blob/v0.8/doc/api/stream.markdown), which are compatible with [0.10 streams](http://nodejs.org/api/stream.html "Stream"). + +>NOTE: I shall use the term <em>"through stream"</em> to refer to a stream that is writable <em>and</em> readable. + +>NOTE for Gulp users: Merge will not work for gulp 4. [merge-stream](https://npmjs.com/merge-stream) should be used. + +### [simple example](https://github.com/dominictarr/event-stream/blob/master/examples/pretty.js): + +``` js +//pretty.js + +if(!module.parent) { + var es = require('event-stream') + var inspect = require('util').inspect + + process.stdin //connect streams together with `pipe` + .pipe(es.split()) //split stream to break on newlines + .pipe(es.map(function (data, cb) { //turn this async function into a stream + cb(null + , inspect(JSON.parse(data))) //render it nicely + })) + .pipe(process.stdout) // pipe it to stdout ! +} +``` +run it ... + +``` bash +curl -sS registry.npmjs.org/event-stream | node pretty.js +``` + +[node Stream documentation](http://nodejs.org/api/stream.html) + +## through (write?, end?) + +Re-emits data synchronously. Easy way to create synchronous through streams. +Pass in optional `write` and `end` methods. They will be called in the +context of the stream. Use `this.pause()` and `this.resume()` to manage flow. +Check `this.paused` to see current flow state. (write always returns `!this.paused`) + +this function is the basis for most of the synchronous streams in `event-stream`. + +``` js + +es.through(function write(data) { + this.emit('data', data) + //this.pause() + }, + function end () { //optional + this.emit('end') + }) + +``` + +## map (asyncFunction) + +Create a through stream from an asynchronous function. + +``` js +var es = require('event-stream') + +es.map(function (data, callback) { + //transform data + // ... + callback(null, data) +}) + +``` + +Each map MUST call the callback. It may callback with data, with an error or with no arguments, + + * `callback()` drop this data. + this makes the map work like `filter`, + note:`callback(null,null)` is not the same, and will emit `null` + + * `callback(null, newData)` turn data into newData + + * `callback(error)` emit an error for this item. + +>Note: if a callback is not called, `map` will think that it is still being processed, +>every call must be answered or the stream will not know when to end. +> +>Also, if the callback is called more than once, every call but the first will be ignored. + +## mapSync (syncFunction) + +Same as `map`, but the callback is called synchronously. Based on `es.through` + +## flatmapSync (syncFunction) + +Map elements nested. + +``` js +var es = require('event-stream') + +es.flatmapSync(function (data) { + //transform data + // ... + return data +}) + +``` + +## filterSync (syncFunction) + +Filter elements. + +``` js +var es = require('event-stream') + +es.filterSync(function (data) { + return data > 0 +}) + +``` + +## split (matcher) + +Break up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` + +Example, read every line in a file ... + +``` js +fs.createReadStream(file, {flags: 'r'}) + .pipe(es.split()) + .pipe(es.map(function (line, cb) { + //do something with the line + cb(null, line) + })) +``` + +`split` takes the same arguments as `string.split` except it defaults to '\n' instead of ',', and the optional `limit` parameter is ignored. +[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split) + +**NOTE** - Maintaining Line Breaks +If you want to process each line of the stream, transform the data, reassemble, and **KEEP** the line breaks the example will look like this: + +```javascript +fs.createReadStream(file, {flags: 'r'}) + .pipe(es.split(/(\r?\n)/)) + .pipe(es.map(function (line, cb) { + //do something with the line + cb(null, line) + })) +``` + +This technique is mentioned in the [underlying documentation](https://www.npmjs.com/package/split#keep-matched-splitter) for the split npm package. + +## join (separator) + +Create a through stream that emits `separator` between each chunk, just like Array#join. + +(for legacy reasons, if you pass a callback instead of a string, join is a synonym for `es.wait`) + +## merge (stream1,...,streamN) or merge (streamArray) +> concat → merge + +Merges streams into one and returns it. +Incoming data will be emitted as soon it comes into - no ordering will be applied (for example: `data1 data1 data2 data1 data2` - where `data1` and `data2` is data from two streams). +Counts how many streams were passed to it and emits end only when all streams emitted end. + +```js +es.merge( + process.stdout, + process.stderr +).pipe(fs.createWriteStream('output.log')); +``` + +It can also take an Array of streams as input like this: +```js +es.merge([ + fs.createReadStream('input1.txt'), + fs.createReadStream('input2.txt') +]).pipe(fs.createWriteStream('output.log')); +``` + +## replace (from, to) + +Replace all occurrences of `from` with `to`. `from` may be a `String` or a `RegExp`. +Works just like `string.split(from).join(to)`, but streaming. + + +## parse + +Convenience function for parsing JSON chunks. For newline separated JSON, +use with `es.split`. By default it logs parsing errors by `console.error`; +for another behaviour, transforms created by `es.parse({error: true})` will +emit error events for exceptions thrown from `JSON.parse`, unmodified. + +``` js +fs.createReadStream(filename) + .pipe(es.split()) //defaults to lines. + .pipe(es.parse()) +``` + +## stringify + +convert javascript objects into lines of text. The text will have whitespace escaped and have a `\n` appended, so it will be compatible with `es.parse` + +``` js +objectStream + .pipe(es.stringify()) + .pipe(fs.createWriteStream(filename)) +``` + +## readable (asyncFunction) + +create a readable stream (that respects pause) from an async function. +while the stream is not paused, +the function will be polled with `(count, callback)`, +and `this` will be the readable stream. + +``` js + +es.readable(function (count, callback) { + if(streamHasEnded) + return this.emit('end') + + //... + + this.emit('data', data) //use this way to emit multiple chunks per call. + + callback() // you MUST always call the callback eventually. + // the function will not be called again until you do this. +}) +``` +you can also pass the data and the error to the callback. +you may only call the callback once. +calling the same callback more than once will have no effect. + +## readArray (array) + +Create a readable stream from an Array. + +Just emit each item as a data event, respecting `pause` and `resume`. + +``` js + var es = require('event-stream') + , reader = es.readArray([1,2,3]) + + reader.pipe(...) +``` + +If you want the stream behave like a 0.10 stream you will need to wrap it using [`Readable.wrap()`](http://nodejs.org/api/stream.html#stream_readable_wrap_stream) function. Example: + +``` js + var s = new stream.Readable({objectMode: true}).wrap(es.readArray([1,2,3])); +``` + +## writeArray (callback) + +create a writeable stream from a callback, +all `data` events are stored in an array, which is passed to the callback when the stream ends. + +``` js + var es = require('event-stream') + , reader = es.readArray([1, 2, 3]) + , writer = es.writeArray(function (err, array){ + //array deepEqual [1, 2, 3] + }) + + reader.pipe(writer) +``` + +## pause () + +A stream that buffers all chunks when paused. + + +``` js + var ps = es.pause() + ps.pause() //buffer the stream, also do not allow 'end' + ps.resume() //allow chunks through +``` + +## duplex (writeStream, readStream) + +Takes a writable stream and a readable stream and makes them appear as a readable writable stream. + +It is assumed that the two streams are connected to each other in some way. + +(This is used by `pipeline` and `child`.) + +``` js + var grep = cp.exec('grep Stream') + + es.duplex(grep.stdin, grep.stdout) +``` + +## child (child_process) + +Create a through stream from a child process ... + +``` js + var cp = require('child_process') + + es.child(cp.exec('grep Stream')) // a through stream + +``` + +## wait (callback) + +waits for stream to emit 'end'. +joins chunks of a stream into a single string or buffer. +takes an optional callback, which will be passed the +complete string/buffer when it receives the 'end' event. + +also, emits a single 'data' event. + +``` js + +readStream.pipe(es.wait(function (err, body) { + // have complete text here. +})) + +``` + +# Other Stream Modules + +These modules are not included as a part of *EventStream* but may be +useful when working with streams. + +## [reduce (syncFunction, initial)](https://github.com/parshap/node-stream-reduce) + +Like `Array.prototype.reduce` but for streams. Given a sync reduce +function and an initial value it will return a through stream that emits +a single data event with the reduced value once the input stream ends. + +``` js +var reduce = require("stream-reduce"); +process.stdin.pipe(reduce(function(acc, data) { + return acc + data.length; +}, 0)).on("data", function(length) { + console.log("stdin size:", length); +}); +``` diff --git a/node_modules/event-stream/test/connect.asynct.js b/node_modules/event-stream/test/connect.asynct.js new file mode 100644 index 0000000..e6a442b --- /dev/null +++ b/node_modules/event-stream/test/connect.asynct.js @@ -0,0 +1,86 @@ +var es = require('../') + , it = require('it-is').style('colour') + , d = require('ubelt') + +function makeExamplePipe() { + + return es.connect( + es.map(function (data, callback) { + callback(null, data * 2) + }), + es.map(function (data, callback) { + d.delay(callback)(null, data) + }), + es.map(function (data, callback) { + callback(null, data + 2) + })) +} + +exports['simple pipe'] = function (test) { + + var pipe = makeExamplePipe() + + pipe.on('data', function (data) { + it(data).equal(18) + test.done() + }) + + pipe.write(8) + +} + +exports['read array then map'] = function (test) { + + var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 + , first = es.readArray(readThis) + , read = [] + , pipe = + es.connect( + first, + es.map(function (data, callback) { + callback(null, {data: data}) + }), + es.map(function (data, callback) { + callback(null, {data: data}) + }), + es.writeArray(function (err, array) { + it(array).deepEqual(d.map(readThis, function (data) { + return {data: {data: data}} + })) + test.done() + }) + ) +} + +exports ['connect returns a stream'] = function (test) { + + var rw = + es.connect( + es.map(function (data, callback) { + callback(null, data * 2) + }), + es.map(function (data, callback) { + callback(null, data * 5) + }) + ) + + it(rw).has({readable: true, writable: true}) + + var array = [190, 24, 6, 7, 40, 57, 4, 6] + , _array = [] + , c = + es.connect( + es.readArray(array), + rw, + es.log('after rw:'), + es.writeArray(function (err, _array) { + it(_array).deepEqual(array.map(function (e) { return e * 10 })) + test.done() + }) + ) + +} + + +require('./helper')(module) + diff --git a/node_modules/event-stream/test/filter.asynct.js b/node_modules/event-stream/test/filter.asynct.js new file mode 100644 index 0000000..1d2e4f9 --- /dev/null +++ b/node_modules/event-stream/test/filter.asynct.js @@ -0,0 +1,17 @@ +'use strict'; + +var es = require('../') + , it = require('it-is') + +exports ['filter'] = function (test) { + es.readArray([1, 2, 3, 4]) + .pipe(es.filterSync(function(e) { + return e > 2 + })) + .pipe(es.writeArray(function(error, array) { + test.deepEqual([3, 4], array) + test.end() + })) +} + +require('./helper')(module) diff --git a/node_modules/event-stream/test/flatmap.asynct.js b/node_modules/event-stream/test/flatmap.asynct.js new file mode 100644 index 0000000..ae6a9a0 --- /dev/null +++ b/node_modules/event-stream/test/flatmap.asynct.js @@ -0,0 +1,17 @@ +'use strict'; + +var es = require('../') + , it = require('it-is') + +exports ['flatmap'] = function (test) { + es.readArray([[1], [1, 2], [1, 2, 3]]) + .pipe(es.flatmapSync(function(e) { + return e + 1 + })) + .pipe(es.writeArray(function(error, array) { + test.deepEqual([2, 2, 3, 2, 3, 4], array) + test.end() + })) +} + +require('./helper')(module) diff --git a/node_modules/event-stream/test/helper/index.js b/node_modules/event-stream/test/helper/index.js new file mode 100644 index 0000000..96abaeb --- /dev/null +++ b/node_modules/event-stream/test/helper/index.js @@ -0,0 +1,12 @@ +var tape = require('tape') + +module.exports = function (m) { + if(m.parent) return + for(var name in m.exports) { + tape(name, function (t) { + console.log('start', name) + t.done = t.end + m.exports[name](t) + }) + } +} diff --git a/node_modules/event-stream/test/merge.asynct.js b/node_modules/event-stream/test/merge.asynct.js new file mode 100644 index 0000000..68f38ba --- /dev/null +++ b/node_modules/event-stream/test/merge.asynct.js @@ -0,0 +1,29 @@ +var es = require('../') + , it = require('it-is').style('colour') + , d = require('ubelt') + +exports.merge = function (t) { + var odd = d.map(1, 3, 100, d.id) //array of multiples of 3 < 100 + var even = d.map(2, 4, 100, d.id) //array of multiples of 3 < 100 + + var r1 = es.readArray(even) + var r2 = es.readArray(odd) + var endCount = 0 + + var writer = es.writeArray(function (err, array){ + if(err) throw err //unpossible + it(array.sort()).deepEqual(even.concat(odd).sort()) + if (++endCount === 2) t.done() + }) + + var writer2 = es.writeArray(function (err, array){ + if(err) throw err //unpossible + it(array.sort()).deepEqual(even.concat(odd).sort()) + if (++endCount === 2) t.done() + }) + + es.merge(r1, r2).pipe(writer) + es.merge([r1, r2]).pipe(writer2) + +} +require('./helper')(module) diff --git a/node_modules/event-stream/test/parse.asynct.js b/node_modules/event-stream/test/parse.asynct.js new file mode 100644 index 0000000..a5fefcf --- /dev/null +++ b/node_modules/event-stream/test/parse.asynct.js @@ -0,0 +1,32 @@ +var es = require('../') + , it = require('it-is').style('colour') + +exports ['es.parse() writes parsing errors with console.error'] = function (test) { + var parseStream = es.parse() + var oldConsoleError = console.error + console.error = function () { + console.error = oldConsoleError + it(arguments.length > 0).ok() + test.done() + } + + // bare word is not valid JSON + parseStream.write('A') +} + +exports ['es.parse({error: true(thy)}) emits error events from parsing'] = function (test) { + var parseStream = es.parse({error: 1}) + var expectedError + try { + JSON.parse('A') + } catch(e) { + expectedError = e + } + + parseStream.on('error', function (e) { + it(e).deepEqual(expectedError) + process.nextTick(function () { + test.done() + }) + }).write('A') +} diff --git a/node_modules/event-stream/test/pause.asynct.js b/node_modules/event-stream/test/pause.asynct.js new file mode 100644 index 0000000..b073604 --- /dev/null +++ b/node_modules/event-stream/test/pause.asynct.js @@ -0,0 +1,39 @@ + +var es = require('../') + , it = require('it-is') + , d = require('ubelt') + +exports ['gate buffers when shut'] = function (test) { + + var hundy = d.map(1,100, d.id) + , gate = es.pause() + , ten = 10 + es.connect( + es.readArray(hundy), + es.log('after readArray'), + gate, + //es.log('after gate'), + es.map(function (num, next) { + //stick a map in here to check that gate never emits when open + it(gate.paused).equal(false) + console.log('data', num) + if(!--ten) { + console.log('PAUSE') + gate.pause()//.resume() + d.delay(gate.resume.bind(gate), 10)() + ten = 10 + } + + next(null, num) + }), + es.writeArray(function (err, array) { //just realized that I should remove the error param. errors will be emitted + console.log('eonuhoenuoecbulc') + it(array).deepEqual(hundy) + test.done() + }) + ) + + gate.resume() + +} +require('./helper')(module) diff --git a/node_modules/event-stream/test/pipeline.asynct.js b/node_modules/event-stream/test/pipeline.asynct.js new file mode 100644 index 0000000..f07c6fa --- /dev/null +++ b/node_modules/event-stream/test/pipeline.asynct.js @@ -0,0 +1,52 @@ +var es = require('..') + +exports['do not duplicate errors'] = function (test) { + + var errors = 0; + var pipe = es.pipeline( + es.through(function(data) { + return this.emit('data', data); + }), + es.through(function(data) { + return this.emit('error', new Error(data)); + }) + ) + + pipe.on('error', function(err) { + errors++ + console.log('error count', errors) + process.nextTick(function () { + return test.done(); + }) + }) + + return pipe.write('meh'); + +} + +exports['3 pipe do not duplicate errors'] = function (test) { + + var errors = 0; + var pipe = es.pipeline( + es.through(function(data) { + return this.emit('data', data); + }), + es.through(function(data) { + return this.emit('error', new Error(data)); + }), + es.through() + ) + + pipe.on('error', function(err) { + errors++ + console.log('error count', errors) + process.nextTick(function () { + return test.done(); + }) + }) + + return pipe.write('meh'); + +} + +require('./helper')(module) diff --git a/node_modules/event-stream/test/readArray.asynct.js b/node_modules/event-stream/test/readArray.asynct.js new file mode 100644 index 0000000..3eeb90a --- /dev/null +++ b/node_modules/event-stream/test/readArray.asynct.js @@ -0,0 +1,89 @@ + +var es = require('../') + , it = require('it-is').style('colour') + , d = require('ubelt') + +function readStream(stream, pauseAt, done) { + if(!done) done = pauseAt, pauseAt = -1 + var array = [] + stream.on('data', function (data) { + array.push(data) + if(!--pauseAt ) + stream.pause(), done(null, array) + }) + stream.on('error', done) + stream.on('end', function (data) { + done(null, array) + }) + +} + +exports ['read an array'] = function (test) { + + var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 + + var reader = es.readArray(readThis) + + var writer = es.writeArray(function (err, array){ + if(err) throw err //unpossible + it(array).deepEqual(readThis) + test.done() + }) + + reader.pipe(writer) +} + +exports ['read an array and pause it.'] = function (test) { + + var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 + + var reader = es.readArray(readThis) + + readStream(reader, 10, function (err, data) { + if(err) throw err + it(data).deepEqual([3, 6, 9, 12, 15, 18, 21, 24, 27, 30]) + readStream(reader, 10, function (err, data) { + it(data).deepEqual([33, 36, 39, 42, 45, 48, 51, 54, 57, 60]) + test.done() + }) + reader.resume() + }) + +} + +exports ['reader is readable, but not writeable'] = function (test) { + var reader = es.readArray([1]) + it(reader).has({ + readable: true, + writable: false + }) + + test.done() +} + + +exports ['read one item per tick'] = function (test) { + var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 + var drains = 0 + var reader = es.readArray(readThis) + var tickMapper = es.map(function (data,callback) { + process.nextTick(function () { + callback(null, data) + }) + //since tickMapper is returning false + //pipe should pause the writer until a drain occurs + return false + }) + reader.pipe(tickMapper) + readStream(tickMapper, function (err, array) { + it(array).deepEqual(readThis) + it(array.length).deepEqual(readThis.length) + it(drains).equal(readThis.length) + test.done() + }) + tickMapper.on('drain', function () { + drains ++ + }) + +} +require('./helper')(module) diff --git a/node_modules/event-stream/test/readable.asynct.js b/node_modules/event-stream/test/readable.asynct.js new file mode 100644 index 0000000..6ea2fdb --- /dev/null +++ b/node_modules/event-stream/test/readable.asynct.js @@ -0,0 +1,197 @@ + +var es = require('../') + , it = require('it-is').style('colour') + , u = require('ubelt') + +exports ['read an array'] = function (test) { + + + console.log('readable') + return test.end() + var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 + + console.log('readable') + + var reader = + es.readable(function (i, callback) { + if(i >= readThis.length) + return this.emit('end') + console.log('readable') + callback(null, readThis[i]) + }) + + var writer = es.writeArray(function (err, array){ + if(err) throw err + it(array).deepEqual(readThis) + test.done() + }) + + reader.pipe(writer) +} + +exports ['read an array - async'] = function (test) { + + var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 + + var reader = + es.readable(function (i, callback) { + if(i >= readThis.length) + return this.emit('end') + u.delay(callback)(null, readThis[i]) + }) + + var writer = es.writeArray(function (err, array){ + if(err) throw err + it(array).deepEqual(readThis) + test.done() + }) + + reader.pipe(writer) +} + + +exports ['emit data then call next() also works'] = function (test) { + + var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 + + var reader = + es.readable(function (i, next) { + if(i >= readThis.length) + return this.emit('end') + this.emit('data', readThis[i]) + next() + }) + + var writer = es.writeArray(function (err, array){ + if(err) throw err + it(array).deepEqual(readThis) + test.done() + }) + + reader.pipe(writer) +} + + +exports ['callback emits error, then stops'] = function (test) { + + var err = new Error('INTENSIONAL ERROR') + , called = 0 + + var reader = + es.readable(function (i, callback) { + if(called++) + return + callback(err) + }) + + reader.on('error', function (_err){ + it(_err).deepEqual(err) + u.delay(function() { + it(called).equal(1) + test.done() + }, 50)() + }) +} + +exports['readable does not call read concurrently'] = function (test) { + + var current = 0 + var source = es.readable(function(count, cb){ + current ++ + if(count > 100) + return this.emit('end') + u.delay(function(){ + current -- + it(current).equal(0) + cb(null, {ok: true, n: count}); + })(); + }); + + var destination = es.map(function(data, cb){ + //console.info(data); + cb(); + }); + + var all = es.connect(source, destination); + + destination.on('end', test.done) +} + +exports ['does not raise a warning: Recursive process.nextTick detected'] = function (test) { + var readThisDelayed; + + u.delay(function () { + readThisDelayed = [1, 3, 5]; + })(); + + es.readable(function (count, callback) { + + if (readThisDelayed) { + var that = this; + readThisDelayed.forEach(function (item) { + that.emit('data', item); + }); + + this.emit('end'); + test.done(); + } + + callback(); + }); +}; + +// +// emitting multiple errors is not supported by stream. +// +// I do not think that this is a good idea, at least, there should be an option to pipe to +// continue on error. it makes alot ef sense, if you are using Stream like I am, to be able to emit multiple errors. +// an error might not necessarily mean the end of the stream. it depends on the error, at least. +// +// I will start a thread on the mailing list. I'd rather that than use a custom `pipe` implementation. +// +// basically, I want to be able use pipe to transform objects, and if one object is invalid, +// the next might still be good, so I should get to choose if it's gonna stop. +// re-enstate this test when this issue progresses. +// +// hmm. I could add this to es.connect by deregistering the error listener, +// but I would rather it be an option in core. + +/* +exports ['emit multiple errors, with 2nd parameter (continueOnError)'] = function (test) { + + var readThis = d.map(1, 100, d.id) + , errors = 0 + var reader = + es.readable(function (i, callback) { + console.log(i, readThis.length) + if(i >= readThis.length) + return this.emit('end') + if(!(readThis[i] % 7)) + return callback(readThis[i]) + callback(null, readThis[i]) + }, true) + + var writer = es.writeArray(function (err, array) { + if(err) throw err + it(array).every(function (u){ + it(u % 7).notEqual(0) + }).property('length', 80) + it(errors).equal(14) + test.done() + }) + + reader.on('error', function (u) { + errors ++ + console.log(u) + if('number' !== typeof u) + throw u + + it(u % 7).equal(0) + + }) + + reader.pipe(writer) +} +*/ + +require('./helper')(module) diff --git a/node_modules/event-stream/test/replace.asynct.js b/node_modules/event-stream/test/replace.asynct.js new file mode 100644 index 0000000..1c8735b --- /dev/null +++ b/node_modules/event-stream/test/replace.asynct.js @@ -0,0 +1,76 @@ +var es = require('../') + , it = require('it-is').style('colour') + , d = require('ubelt') + , spec = require('stream-spec') + +var next = process.nextTick + +var fizzbuzz = '12F4BF78FB11F1314FB1617F19BF2223FB26F2829FB3132F34BF3738FB41F4344FB4647F49BF5253FB56F5859FB6162F64BF6768FB71F7374FB7677F79BF8283FB86F8889FB9192F94BF9798FB' + , fizz7buzz = '12F4BFseven8FB11F1314FB161sevenF19BF2223FB26F2829FB3132F34BF3seven38FB41F4344FB464sevenF49BF5253FB56F5859FB6162F64BF6seven68FBseven1Fseven3seven4FBseven6sevensevenFseven9BF8283FB86F8889FB9192F94BF9seven98FB' + , fizzbuzzwhitespce = ' 12F4BF78FB11F1314FB1617F19BF2223FB26F2829FB3132F34BF3738FB41F4344FB4647F49BF5253FB56F5859FB6162F64BF6768FB71F7374FB7677F79BF8283FB86F8889FB9192F94BF9798FB ' + +exports ['fizz buzz'] = function (test) { + + var readThis = d.map(1, 100, function (i) { + return ( + ! (i % 3 || i % 5) ? "FB" : + !(i % 3) ? "F" : + !(i % 5) ? "B" : + ''+i + ) + }) //array of multiples of 3 < 100 + + var reader = es.readArray(readThis) + var join = es.wait(function (err, string){ + it(string).equal(fizzbuzz) + test.done() + }) + reader.pipe(join) + +} + + +exports ['fizz buzz replace'] = function (test) { + var split = es.split(/(1)/) + var replace = es.replace('7', 'seven') +// var x = spec(replace).through() + split + .pipe(replace) + .pipe(es.join(function (err, string) { + it(string).equal(fizz7buzz) + })) + + replace.on('close', function () { +// x.validate() + test.done() + }) + + split.write(fizzbuzz) + split.end() + +} + + +exports ['fizz buzz replace whitespace using regexp'] = function (test) { + var split = es.split(/(1)/) + var replaceLeading = es.replace(/^[\s]*/, '') + var replaceTrailing = es.replace(/[\s]*$/, '') +// var x = spec(replace).through() + split + .pipe(replaceLeading) + .pipe(replaceTrailing) + .pipe(es.join(function (err, string) { + it(string).equal(fizzbuzz) + })) + + replaceTrailing.on('close', function () { +// x.validate() + test.done() + }) + + split.write(fizzbuzz) + split.end() + +} + +require('./helper')(module) diff --git a/node_modules/event-stream/test/simple-map.asynct.js b/node_modules/event-stream/test/simple-map.asynct.js new file mode 100644 index 0000000..25121f9 --- /dev/null +++ b/node_modules/event-stream/test/simple-map.asynct.js @@ -0,0 +1,343 @@ +'use strict'; + +var es = require('../') + , it = require('it-is') + , u = require('ubelt') + , spec = require('stream-spec') + , Stream = require('stream') + , from = require('from') + , through = require('through') + +//REFACTOR THIS TEST TO USE es.readArray and es.writeArray + +function writeArray(array, stream) { + + array.forEach( function (j) { + stream.write(j) + }) + stream.end() + +} + +function readStream(stream, done) { + + var array = [] + stream.on('data', function (data) { + array.push(data) + }) + stream.on('error', done) + stream.on('end', function (data) { + done(null, array) + }) + +} + +//call sink on each write, +//and complete when finished. + +function pauseStream (prob, delay) { + var pauseIf = ( + 'number' == typeof prob + ? function () { + return Math.random() < prob + } + : 'function' == typeof prob + ? prob + : 0.1 + ) + var delayer = ( + !delay + ? process.nextTick + : 'number' == typeof delay + ? function (next) { setTimeout(next, delay) } + : delay + ) + + return es.through(function (data) { + if(!this.paused && pauseIf()) { + console.log('PAUSE STREAM PAUSING') + this.pause() + var self = this + delayer(function () { + console.log('PAUSE STREAM RESUMING') + self.resume() + }) + } + console.log("emit ('data', " + data + ')') + this.emit('data', data) + }) +} + +exports ['simple map'] = function (test) { + + var input = u.map(1, 1000, function () { + return Math.random() + }) + var expected = input.map(function (v) { + return v * 2 + }) + + var pause = pauseStream(0.1) + var fs = from(input) + var ts = es.writeArray(function (err, ar) { + it(ar).deepEqual(expected) + test.done() + }) + var map = es.through(function (data) { + this.emit('data', data * 2) + }) + + spec(map).through().validateOnExit() + spec(pause).through().validateOnExit() + + fs.pipe(map).pipe(pause).pipe(ts) +} + +exports ['simple map applied to a stream'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + //create event stream from + + var doubler = es.map(function (data, cb) { + cb(null, data * 2) + }) + + spec(doubler).through().validateOnExit() + + //a map is only a middle man, so it is both readable and writable + + it(doubler).has({ + readable: true, + writable: true, + }) + + readStream(doubler, function (err, output) { + it(output).deepEqual(input.map(function (j) { + return j * 2 + })) +// process.nextTick(x.validate) + test.done() + }) + + writeArray(input, doubler) + +} + +exports['pipe two maps together'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + //create event stream from + function dd (data, cb) { + cb(null, data * 2) + } + var doubler1 = es.map(dd), doubler2 = es.map(dd) + + doubler1.pipe(doubler2) + + spec(doubler1).through().validateOnExit() + spec(doubler2).through().validateOnExit() + + readStream(doubler2, function (err, output) { + it(output).deepEqual(input.map(function (j) { + return j * 4 + })) + test.done() + }) + + writeArray(input, doubler1) + +} + +//next: +// +// test pause, resume and drian. +// + +// then make a pipe joiner: +// +// plumber (evStr1, evStr2, evStr3, evStr4, evStr5) +// +// will return a single stream that write goes to the first + +exports ['map will not call end until the callback'] = function (test) { + + var ticker = es.map(function (data, cb) { + process.nextTick(function () { + cb(null, data * 2) + }) + }) + + spec(ticker).through().validateOnExit() + + ticker.write('x') + ticker.end() + + ticker.on('end', function () { + test.done() + }) +} + + +exports ['emit error thrown'] = function (test) { + + var err = new Error('INTENSIONAL ERROR') + , mapper = + es.map(function () { + throw err + }) + + mapper.on('error', function (_err) { + it(_err).equal(err) + test.done() + }) + +// onExit(spec(mapper).basic().validate) +//need spec that says stream may error. + + mapper.write('hello') + +} + +exports ['emit error calledback'] = function (test) { + + var err = new Error('INTENSIONAL ERROR') + , mapper = + es.map(function (data, callback) { + callback(err) + }) + + mapper.on('error', function (_err) { + it(_err).equal(err) + test.done() + }) + + mapper.write('hello') + +} + +exports ['do not emit drain if not paused'] = function (test) { + + var map = es.map(function (data, callback) { + u.delay(callback)(null, 1) + return true + }) + + spec(map).through().pausable().validateOnExit() + + map.on('drain', function () { + it(false).ok('should not emit drain unless the stream is paused') + }) + + it(map.write('hello')).equal(true) + it(map.write('hello')).equal(true) + it(map.write('hello')).equal(true) + setTimeout(function () {map.end()},10) + map.on('end', test.done) +} + +exports ['emits drain if paused, when all '] = function (test) { + var active = 0 + var drained = false + var map = es.map(function (data, callback) { + active ++ + u.delay(function () { + active -- + callback(null, 1) + })() + console.log('WRITE', false) + return false + }) + + spec(map).through().validateOnExit() + + map.on('drain', function () { + drained = true + it(active).equal(0, 'should emit drain when all maps are done') + }) + + it(map.write('hello')).equal(false) + it(map.write('hello')).equal(false) + it(map.write('hello')).equal(false) + + process.nextTick(function () {map.end()},10) + + map.on('end', function () { + console.log('end') + it(drained).ok('shoud have emitted drain before end') + test.done() + }) + +} + +exports ['map applied to a stream with filtering'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + + var doubler = es.map(function (data, callback) { + if (data % 2) + callback(null, data * 2) + else + callback() + }) + + readStream(doubler, function (err, output) { + it(output).deepEqual(input.filter(function (j) { + return j % 2 + }).map(function (j) { + return j * 2 + })) + test.done() + }) + + spec(doubler).through().validateOnExit() + + writeArray(input, doubler) + +} + +exports ['simple mapSync applied to a stream'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + + var doubler = es.mapSync(function (data) { + return data * 2 + }) + + readStream(doubler, function (err, output) { + it(output).deepEqual(input.map(function (j) { + return j * 2 + })) + test.done() + }) + + spec(doubler).through().validateOnExit() + + writeArray(input, doubler) + +} + +exports ['mapSync applied to a stream with filtering'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + + var doubler = es.mapSync(function (data) { + if (data % 2) + return data * 2 + }) + + readStream(doubler, function (err, output) { + it(output).deepEqual(input.filter(function (j) { + return j % 2 + }).map(function (j) { + return j * 2 + })) + test.done() + }) + + spec(doubler).through().validateOnExit() + + writeArray(input, doubler) + +} + +require('./helper')(module) diff --git a/node_modules/event-stream/test/spec.asynct.js b/node_modules/event-stream/test/spec.asynct.js new file mode 100644 index 0000000..6d5fb6b --- /dev/null +++ b/node_modules/event-stream/test/spec.asynct.js @@ -0,0 +1,86 @@ +/* + assert that data is called many times + assert that end is called eventually + + assert that when stream enters pause state, + on drain is emitted eventually. +*/ + +var es = require('..') +var it = require('it-is').style('colour') +var spec = require('stream-spec') + +exports['simple stream'] = function (test) { + + var stream = es.through() + var x = spec(stream).basic().pausable() + + stream.write(1) + stream.write(1) + stream.pause() + stream.write(1) + stream.resume() + stream.write(1) + stream.end(2) //this will call write() + + process.nextTick(function (){ + x.validate() + test.done() + }) +} + +exports['throw on write when !writable'] = function (test) { + + var stream = es.through() + var x = spec(stream).basic().pausable() + + stream.write(1) + stream.write(1) + stream.end(2) //this will call write() + stream.write(1) //this will be throwing..., but the spec will catch it. + + process.nextTick(function () { + x.validate() + test.done() + }) + +} + +exports['end fast'] = function (test) { + + var stream = es.through() + var x = spec(stream).basic().pausable() + + stream.end() //this will call write() + + process.nextTick(function () { + x.validate() + test.done() + }) + +} + + +/* + okay, that was easy enough, whats next? + + say, after you call paused(), write should return false + until resume is called. + + simple way to implement this: + write must return !paused + after pause() paused = true + after resume() paused = false + + on resume, if !paused drain is emitted again. + after drain, !paused + + there are lots of subtle ordering bugs in streams. + + example, set !paused before emitting drain. + + the stream api is stateful. +*/ + + +require('./helper')(module) diff --git a/node_modules/event-stream/test/split.asynct.js b/node_modules/event-stream/test/split.asynct.js new file mode 100644 index 0000000..7d44bac --- /dev/null +++ b/node_modules/event-stream/test/split.asynct.js @@ -0,0 +1,47 @@ +var es = require('../') + , it = require('it-is').style('colour') + , d = require('ubelt') + , join = require('path').join + , fs = require('fs') + , Stream = require('stream').Stream + , spec = require('stream-spec') + +exports ['es.split() works like String#split'] = function (test) { + var readme = join(__filename) + , expected = fs.readFileSync(readme, 'utf-8').split('\n') + , cs = es.split() + , actual = [] + , ended = false + , x = spec(cs).through() + + var a = new Stream () + + a.write = function (l) { + actual.push(l.trim()) + } + a.end = function () { + + ended = true + expected.forEach(function (v,k) { + //String.split will append an empty string '' + //if the string ends in a split pattern. + //es.split doesn't which was breaking this test. + //clearly, appending the empty string is correct. + //tests are passing though. which is the current job. + if(v) + it(actual[k]).like(v) + }) + //give the stream time to close + process.nextTick(function () { + test.done() + x.validate() + }) + } + a.writable = true + + fs.createReadStream(readme, {flags: 'r'}).pipe(cs) + cs.pipe(a) + +} + +require('./helper')(module) diff --git a/node_modules/event-stream/test/stringify.js b/node_modules/event-stream/test/stringify.js new file mode 100644 index 0000000..d158185 --- /dev/null +++ b/node_modules/event-stream/test/stringify.js @@ -0,0 +1,15 @@ + + + +var es = require('../') + +exports['handle buffer'] = function (t) { + + + es.stringify().on('data', function (d) { + t.equal(d.trim(), JSON.stringify('HELLO')) + t.end() + }).write(new Buffer('HELLO')) + +} +require('./helper')(module) diff --git a/node_modules/event-stream/test/writeArray.asynct.js b/node_modules/event-stream/test/writeArray.asynct.js new file mode 100644 index 0000000..5d705de --- /dev/null +++ b/node_modules/event-stream/test/writeArray.asynct.js @@ -0,0 +1,31 @@ + +var es = require('../') + , it = require('it-is').style('colour') + , d = require('ubelt') + +exports ['write an array'] = function (test) { + + var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 + + var writer = es.writeArray(function (err, array){ + if(err) throw err //unpossible + it(array).deepEqual(readThis) + test.done() + }) + + d.each(readThis, writer.write.bind(writer)) + writer.end() + +} + + +exports ['writer is writable, but not readable'] = function (test) { + var reader = es.writeArray(function () {}) + it(reader).has({ + readable: false, + writable: true + }) + + test.done() +} +require('./helper')(module) diff --git a/node_modules/extend-shallow/LICENSE b/node_modules/extend-shallow/LICENSE new file mode 100644 index 0000000..fa30c4c --- /dev/null +++ b/node_modules/extend-shallow/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2015, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/extend-shallow/README.md b/node_modules/extend-shallow/README.md new file mode 100644 index 0000000..cdc45d4 --- /dev/null +++ b/node_modules/extend-shallow/README.md @@ -0,0 +1,61 @@ +# extend-shallow [![NPM version](https://badge.fury.io/js/extend-shallow.svg)](http://badge.fury.io/js/extend-shallow) [![Build Status](https://travis-ci.org/jonschlinkert/extend-shallow.svg)](https://travis-ci.org/jonschlinkert/extend-shallow) + +> Extend an object with the properties of additional objects. node.js/javascript util. + +## Install + +Install with [npm](https://www.npmjs.com/) + +```sh +$ npm i extend-shallow --save +``` + +## Usage + +```js +var extend = require('extend-shallow'); + +extend({a: 'b'}, {c: 'd'}) +//=> {a: 'b', c: 'd'} +``` + +Pass an empty object to shallow clone: + +```js +var obj = {}; +extend(obj, {a: 'b'}, {c: 'd'}) +//=> {a: 'b', c: 'd'} +``` + +## Related + +* [extend-shallow](https://github.com/jonschlinkert/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. +* [for-own](https://github.com/jonschlinkert/for-own): Iterate over the own enumerable properties of an object, and return an object with properties… [more](https://github.com/jonschlinkert/for-own) +* [for-in](https://github.com/jonschlinkert/for-in): Iterate over the own and inherited enumerable properties of an objecte, and return an object… [more](https://github.com/jonschlinkert/for-in) +* [is-plain-object](https://github.com/jonschlinkert/is-plain-object): Returns true if an object was created by the `Object` constructor. +* [isobject](https://github.com/jonschlinkert/isobject): Returns true if the value is an object and not an array or null. +* [kind-of](https://github.com/jonschlinkert/kind-of): Get the native type of a value. + +## Running tests + +Install dev dependencies: + +```sh +$ npm i -d && npm test +``` + +## Author + +**Jon Schlinkert** + ++ [github/jonschlinkert](https://github.com/jonschlinkert) ++ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) + +## License + +Copyright © 2015 Jon Schlinkert +Released under the MIT license. + +*** + +_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on June 29, 2015._ \ No newline at end of file diff --git a/node_modules/extend-shallow/index.js b/node_modules/extend-shallow/index.js new file mode 100644 index 0000000..92a067f --- /dev/null +++ b/node_modules/extend-shallow/index.js @@ -0,0 +1,33 @@ +'use strict'; + +var isObject = require('is-extendable'); + +module.exports = function extend(o/*, objects*/) { + if (!isObject(o)) { o = {}; } + + var len = arguments.length; + for (var i = 1; i < len; i++) { + var obj = arguments[i]; + + if (isObject(obj)) { + assign(o, obj); + } + } + return o; +}; + +function assign(a, b) { + for (var key in b) { + if (hasOwn(b, key)) { + a[key] = b[key]; + } + } +} + +/** + * Returns true if the given `key` is an own property of `obj`. + */ + +function hasOwn(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} diff --git a/node_modules/extend-shallow/package.json b/node_modules/extend-shallow/package.json new file mode 100644 index 0000000..b42e01c --- /dev/null +++ b/node_modules/extend-shallow/package.json @@ -0,0 +1,56 @@ +{ + "name": "extend-shallow", + "description": "Extend an object with the properties of additional objects. node.js/javascript util.", + "version": "2.0.1", + "homepage": "https://github.com/jonschlinkert/extend-shallow", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "repository": "jonschlinkert/extend-shallow", + "bugs": { + "url": "https://github.com/jonschlinkert/extend-shallow/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "devDependencies": { + "array-slice": "^0.2.3", + "benchmarked": "^0.1.4", + "chalk": "^1.0.0", + "for-own": "^0.1.3", + "glob": "^5.0.12", + "is-plain-object": "^2.0.1", + "kind-of": "^2.0.0", + "minimist": "^1.1.1", + "mocha": "^2.2.5", + "should": "^7.0.1" + }, + "keywords": [ + "assign", + "extend", + "javascript", + "js", + "keys", + "merge", + "obj", + "object", + "prop", + "properties", + "property", + "props", + "shallow", + "util", + "utility", + "utils", + "value" + ] +} \ No newline at end of file diff --git a/node_modules/extend/.editorconfig b/node_modules/extend/.editorconfig new file mode 100644 index 0000000..bc228f8 --- /dev/null +++ b/node_modules/extend/.editorconfig @@ -0,0 +1,20 @@ +root = true + +[*] +indent_style = tab +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +max_line_length = 150 + +[CHANGELOG.md] +indent_style = space +indent_size = 2 + +[*.json] +max_line_length = off + +[Makefile] +max_line_length = off diff --git a/node_modules/extend/.eslintrc b/node_modules/extend/.eslintrc new file mode 100644 index 0000000..a34cf28 --- /dev/null +++ b/node_modules/extend/.eslintrc @@ -0,0 +1,17 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "complexity": [2, 20], + "eqeqeq": [2, "allow-null"], + "func-name-matching": [1], + "max-depth": [1, 4], + "max-statements": [2, 26], + "no-extra-parens": [1], + "no-magic-numbers": [0], + "no-restricted-syntax": [2, "BreakStatement", "ContinueStatement", "DebuggerStatement", "LabeledStatement", "WithStatement"], + "sort-keys": [0], + } +} diff --git a/node_modules/extend/.jscs.json b/node_modules/extend/.jscs.json new file mode 100644 index 0000000..3cce01d --- /dev/null +++ b/node_modules/extend/.jscs.json @@ -0,0 +1,175 @@ +{ + "es3": true, + + "additionalRules": [], + + "requireSemicolons": true, + + "disallowMultipleSpaces": true, + + "disallowIdentifierNames": [], + + "requireCurlyBraces": { + "allExcept": [], + "keywords": ["if", "else", "for", "while", "do", "try", "catch"] + }, + + "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"], + + "disallowSpaceAfterKeywords": [], + + "disallowSpaceBeforeComma": true, + "disallowSpaceAfterComma": false, + "disallowSpaceBeforeSemicolon": true, + + "disallowNodeTypes": [ + "DebuggerStatement", + "LabeledStatement", + "SwitchCase", + "SwitchStatement", + "WithStatement" + ], + + "requireObjectKeysOnNewLine": { "allExcept": ["sameLine"] }, + + "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true }, + "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, + "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, + "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true }, + "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true }, + + "requireSpaceBetweenArguments": true, + + "disallowSpacesInsideParentheses": true, + + "disallowSpacesInsideArrayBrackets": true, + + "disallowQuotedKeysInObjects": { "allExcept": ["reserved"] }, + + "disallowSpaceAfterObjectKeys": true, + + "requireCommaBeforeLineBreak": true, + + "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], + "requireSpaceAfterPrefixUnaryOperators": [], + + "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], + "requireSpaceBeforePostfixUnaryOperators": [], + + "disallowSpaceBeforeBinaryOperators": [], + "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], + + "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], + "disallowSpaceAfterBinaryOperators": [], + + "disallowImplicitTypeConversion": ["binary", "string"], + + "disallowKeywords": ["with", "eval"], + + "requireKeywordsOnNewLine": [], + "disallowKeywordsOnNewLine": ["else"], + + "requireLineFeedAtFileEnd": true, + + "disallowTrailingWhitespace": true, + + "disallowTrailingComma": true, + + "excludeFiles": ["node_modules/**", "vendor/**"], + + "disallowMultipleLineStrings": true, + + "requireDotNotation": { "allExcept": ["keywords"] }, + + "requireParenthesesAroundIIFE": true, + + "validateLineBreaks": "LF", + + "validateQuoteMarks": { + "escape": true, + "mark": "'" + }, + + "disallowOperatorBeforeLineBreak": [], + + "requireSpaceBeforeKeywords": [ + "do", + "for", + "if", + "else", + "switch", + "case", + "try", + "catch", + "finally", + "while", + "with", + "return" + ], + + "validateAlignedFunctionParameters": { + "lineBreakAfterOpeningBraces": true, + "lineBreakBeforeClosingBraces": true + }, + + "requirePaddingNewLinesBeforeExport": true, + + "validateNewlineAfterArrayElements": { + "maximum": 6 + }, + + "requirePaddingNewLinesAfterUseStrict": true, + + "disallowArrowFunctions": true, + + "disallowMultiLineTernary": true, + + "validateOrderInObjectKeys": false, + + "disallowIdenticalDestructuringNames": true, + + "disallowNestedTernaries": { "maxLevel": 1 }, + + "requireSpaceAfterComma": { "allExcept": ["trailing"] }, + "requireAlignedMultilineParams": false, + + "requireSpacesInGenerator": { + "afterStar": true + }, + + "disallowSpacesInGenerator": { + "beforeStar": true + }, + + "disallowVar": false, + + "requireArrayDestructuring": false, + + "requireEnhancedObjectLiterals": false, + + "requireObjectDestructuring": false, + + "requireEarlyReturn": false, + + "requireCapitalizedConstructorsNew": { + "allExcept": ["Function", "String", "Object", "Symbol", "Number", "Date", "RegExp", "Error", "Boolean", "Array"] + }, + + "requireImportAlphabetized": false, + + "requireSpaceBeforeObjectValues": true, + "requireSpaceBeforeDestructuredValues": true, + + "disallowSpacesInsideTemplateStringPlaceholders": true, + + "disallowArrayDestructuringReturn": false, + + "requireNewlineBeforeSingleStatementsInIf": false, + + "disallowUnusedVariables": true, + + "requireSpacesInsideImportedObjectBraces": true, + + "requireUseStrict": true +} + diff --git a/node_modules/extend/.travis.yml b/node_modules/extend/.travis.yml new file mode 100644 index 0000000..5ccdfc4 --- /dev/null +++ b/node_modules/extend/.travis.yml @@ -0,0 +1,230 @@ +language: node_js +os: + - linux +node_js: + - "10.7" + - "9.11" + - "8.11" + - "7.10" + - "6.14" + - "5.12" + - "4.9" + - "iojs-v3.3" + - "iojs-v2.5" + - "iojs-v1.8" + - "0.12" + - "0.10" + - "0.8" +before_install: + - 'case "${TRAVIS_NODE_VERSION}" in 0.*) export NPM_CONFIG_STRICT_SSL=false ;; esac' + - 'nvm install-latest-npm' +install: + - 'if [ "${TRAVIS_NODE_VERSION}" = "0.6" ] || [ "${TRAVIS_NODE_VERSION}" = "0.9" ]; then nvm install --latest-npm 0.8 && npm install && nvm use "${TRAVIS_NODE_VERSION}"; else npm install; fi;' +script: + - 'if [ -n "${PRETEST-}" ]; then npm run pretest ; fi' + - 'if [ -n "${POSTTEST-}" ]; then npm run posttest ; fi' + - 'if [ -n "${COVERAGE-}" ]; then npm run coverage ; fi' + - 'if [ -n "${TEST-}" ]; then npm run tests-only ; fi' +sudo: false +env: + - TEST=true +matrix: + fast_finish: true + include: + - node_js: "lts/*" + env: PRETEST=true + - node_js: "lts/*" + env: POSTTEST=true + - node_js: "4" + env: COVERAGE=true + - node_js: "10.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "10.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "10.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "10.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "10.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "10.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "10.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.10" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.10" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.13" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.12" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.11" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.10" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.11" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.10" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v3.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v3.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v3.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.11" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.4" + env: TEST=true ALLOW_FAILURE=true + allow_failures: + - os: osx + - env: TEST=true ALLOW_FAILURE=true diff --git a/node_modules/extend/CHANGELOG.md b/node_modules/extend/CHANGELOG.md new file mode 100644 index 0000000..2cf7de6 --- /dev/null +++ b/node_modules/extend/CHANGELOG.md @@ -0,0 +1,83 @@ +3.0.2 / 2018-07-19 +================== + * [Fix] Prevent merging `__proto__` property (#48) + * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` + * [Tests] up to `node` `v10.7`, `v9.11`, `v8.11`, `v7.10`, `v6.14`, `v4.9`; use `nvm install-latest-npm` + +3.0.1 / 2017-04-27 +================== + * [Fix] deep extending should work with a non-object (#46) + * [Dev Deps] update `tape`, `eslint`, `@ljharb/eslint-config` + * [Tests] up to `node` `v7.9`, `v6.10`, `v4.8`; improve matrix + * [Docs] Switch from vb.teelaun.ch to versionbadg.es for the npm version badge SVG. + * [Docs] Add example to readme (#34) + +3.0.0 / 2015-07-01 +================== + * [Possible breaking change] Use global "strict" directive (#32) + * [Tests] `int` is an ES3 reserved word + * [Tests] Test up to `io.js` `v2.3` + * [Tests] Add `npm run eslint` + * [Dev Deps] Update `covert`, `jscs` + +2.0.1 / 2015-04-25 +================== + * Use an inline `isArray` check, for ES3 browsers. (#27) + * Some old browsers fail when an identifier is `toString` + * Test latest `node` and `io.js` versions on `travis-ci`; speed up builds + * Add license info to package.json (#25) + * Update `tape`, `jscs` + * Adding a CHANGELOG + +2.0.0 / 2014-10-01 +================== + * Increase code coverage to 100%; run code coverage as part of tests + * Add `npm run lint`; Run linter as part of tests + * Remove nodeType and setInterval checks in isPlainObject + * Updating `tape`, `jscs`, `covert` + * General style and README cleanup + +1.3.0 / 2014-06-20 +================== + * Add component.json for browser support (#18) + * Use SVG for badges in README (#16) + * Updating `tape`, `covert` + * Updating travis-ci to work with multiple node versions + * Fix `deep === false` bug (returning target as {}) (#14) + * Fixing constructor checks in isPlainObject + * Adding additional test coverage + * Adding `npm run coverage` + * Add LICENSE (#13) + * Adding a warning about `false`, per #11 + * General style and whitespace cleanup + +1.2.1 / 2013-09-14 +================== + * Fixing hasOwnProperty bugs that would only have shown up in specific browsers. Fixes #8 + * Updating `tape` + +1.2.0 / 2013-09-02 +================== + * Updating the README: add badges + * Adding a missing variable reference. + * Using `tape` instead of `buster` for tests; add more tests (#7) + * Adding node 0.10 to Travis CI (#6) + * Enabling "npm test" and cleaning up package.json (#5) + * Add Travis CI. + +1.1.3 / 2012-12-06 +================== + * Added unit tests. + * Ensure extend function is named. (Looks nicer in a stack trace.) + * README cleanup. + +1.1.1 / 2012-11-07 +================== + * README cleanup. + * Added installation instructions. + * Added a missing semicolon + +1.0.0 / 2012-04-08 +================== + * Initial commit + diff --git a/node_modules/extend/LICENSE b/node_modules/extend/LICENSE new file mode 100644 index 0000000..e16d6a5 --- /dev/null +++ b/node_modules/extend/LICENSE @@ -0,0 +1,23 @@ +The MIT License (MIT) + +Copyright (c) 2014 Stefan Thomas + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/node_modules/extend/README.md b/node_modules/extend/README.md new file mode 100644 index 0000000..5b8249a --- /dev/null +++ b/node_modules/extend/README.md @@ -0,0 +1,81 @@ +[![Build Status][travis-svg]][travis-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] + +# extend() for Node.js <sup>[![Version Badge][npm-version-png]][npm-url]</sup> + +`node-extend` is a port of the classic extend() method from jQuery. It behaves as you expect. It is simple, tried and true. + +Notes: + +* Since Node.js >= 4, + [`Object.assign`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) + now offers the same functionality natively (but without the "deep copy" option). + See [ECMAScript 2015 (ES6) in Node.js](https://nodejs.org/en/docs/es6). +* Some native implementations of `Object.assign` in both Node.js and many + browsers (since NPM modules are for the browser too) may not be fully + spec-compliant. + Check [`object.assign`](https://www.npmjs.com/package/object.assign) module for + a compliant candidate. + +## Installation + +This package is available on [npm][npm-url] as: `extend` + +``` sh +npm install extend +``` + +## Usage + +**Syntax:** extend **(** [`deep`], `target`, `object1`, [`objectN`] **)** + +*Extend one object with one or more others, returning the modified object.* + +**Example:** + +``` js +var extend = require('extend'); +extend(targetObject, object1, object2); +``` + +Keep in mind that the target object will be modified, and will be returned from extend(). + +If a boolean true is specified as the first argument, extend performs a deep copy, recursively copying any objects it finds. Otherwise, the copy will share structure with the original object(s). +Undefined properties are not copied. However, properties inherited from the object's prototype will be copied over. +Warning: passing `false` as the first argument is not supported. + +### Arguments + +* `deep` *Boolean* (optional) +If set, the merge becomes recursive (i.e. deep copy). +* `target` *Object* +The object to extend. +* `object1` *Object* +The object that will be merged into the first. +* `objectN` *Object* (Optional) +More objects to merge into the first. + +## License + +`node-extend` is licensed under the [MIT License][mit-license-url]. + +## Acknowledgements + +All credit to the jQuery authors for perfecting this amazing utility. + +Ported to Node.js by [Stefan Thomas][github-justmoon] with contributions by [Jonathan Buchanan][github-insin] and [Jordan Harband][github-ljharb]. + +[travis-svg]: https://travis-ci.org/justmoon/node-extend.svg +[travis-url]: https://travis-ci.org/justmoon/node-extend +[npm-url]: https://npmjs.org/package/extend +[mit-license-url]: http://opensource.org/licenses/MIT +[github-justmoon]: https://github.com/justmoon +[github-insin]: https://github.com/insin +[github-ljharb]: https://github.com/ljharb +[npm-version-png]: http://versionbadg.es/justmoon/node-extend.svg +[deps-svg]: https://david-dm.org/justmoon/node-extend.svg +[deps-url]: https://david-dm.org/justmoon/node-extend +[dev-deps-svg]: https://david-dm.org/justmoon/node-extend/dev-status.svg +[dev-deps-url]: https://david-dm.org/justmoon/node-extend#info=devDependencies + diff --git a/node_modules/extend/component.json b/node_modules/extend/component.json new file mode 100644 index 0000000..1500a2f --- /dev/null +++ b/node_modules/extend/component.json @@ -0,0 +1,32 @@ +{ + "name": "extend", + "author": "Stefan Thomas <justmoon@members.fsf.org> (http://www.justmoon.net)", + "version": "3.0.0", + "description": "Port of jQuery.extend for node.js and the browser.", + "scripts": [ + "index.js" + ], + "contributors": [ + { + "name": "Jordan Harband", + "url": "https://github.com/ljharb" + } + ], + "keywords": [ + "extend", + "clone", + "merge" + ], + "repository" : { + "type": "git", + "url": "https://github.com/justmoon/node-extend.git" + }, + "dependencies": { + }, + "devDependencies": { + "tape" : "~3.0.0", + "covert": "~0.4.0", + "jscs": "~1.6.2" + } +} + diff --git a/node_modules/extend/index.js b/node_modules/extend/index.js new file mode 100644 index 0000000..2aa3faa --- /dev/null +++ b/node_modules/extend/index.js @@ -0,0 +1,117 @@ +'use strict'; + +var hasOwn = Object.prototype.hasOwnProperty; +var toStr = Object.prototype.toString; +var defineProperty = Object.defineProperty; +var gOPD = Object.getOwnPropertyDescriptor; + +var isArray = function isArray(arr) { + if (typeof Array.isArray === 'function') { + return Array.isArray(arr); + } + + return toStr.call(arr) === '[object Array]'; +}; + +var isPlainObject = function isPlainObject(obj) { + if (!obj || toStr.call(obj) !== '[object Object]') { + return false; + } + + var hasOwnConstructor = hasOwn.call(obj, 'constructor'); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); + // Not own constructor property must be Object + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + var key; + for (key in obj) { /**/ } + + return typeof key === 'undefined' || hasOwn.call(obj, key); +}; + +// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target +var setProperty = function setProperty(target, options) { + if (defineProperty && options.name === '__proto__') { + defineProperty(target, options.name, { + enumerable: true, + configurable: true, + value: options.newValue, + writable: true + }); + } else { + target[options.name] = options.newValue; + } +}; + +// Return undefined instead of __proto__ if '__proto__' is not an own property +var getProperty = function getProperty(obj, name) { + if (name === '__proto__') { + if (!hasOwn.call(obj, name)) { + return void 0; + } else if (gOPD) { + // In early versions of node, obj['__proto__'] is buggy when obj has + // __proto__ as an own property. Object.getOwnPropertyDescriptor() works. + return gOPD(obj, name).value; + } + } + + return obj[name]; +}; + +module.exports = function extend() { + var options, name, src, copy, copyIsArray, clone; + var target = arguments[0]; + var i = 1; + var length = arguments.length; + var deep = false; + + // Handle a deep copy situation + if (typeof target === 'boolean') { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { + target = {}; + } + + for (; i < length; ++i) { + options = arguments[i]; + // Only deal with non-null/undefined values + if (options != null) { + // Extend the base object + for (name in options) { + src = getProperty(target, name); + copy = getProperty(options, name); + + // Prevent never-ending loop + if (target !== copy) { + // Recurse if we're merging plain objects or arrays + if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone = src && isArray(src) ? src : []; + } else { + clone = src && isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + setProperty(target, { name: name, newValue: extend(deep, clone, copy) }); + + // Don't bring in undefined values + } else if (typeof copy !== 'undefined') { + setProperty(target, { name: name, newValue: copy }); + } + } + } + } + } + + // Return the modified object + return target; +}; diff --git a/node_modules/extend/package.json b/node_modules/extend/package.json new file mode 100644 index 0000000..85279f7 --- /dev/null +++ b/node_modules/extend/package.json @@ -0,0 +1,42 @@ +{ + "name": "extend", + "author": "Stefan Thomas <justmoon@members.fsf.org> (http://www.justmoon.net)", + "version": "3.0.2", + "description": "Port of jQuery.extend for node.js and the browser", + "main": "index", + "scripts": { + "pretest": "npm run lint", + "test": "npm run tests-only", + "posttest": "npm run coverage-quiet", + "tests-only": "node test", + "coverage": "covert test/index.js", + "coverage-quiet": "covert test/index.js --quiet", + "lint": "npm run jscs && npm run eslint", + "jscs": "jscs *.js */*.js", + "eslint": "eslint *.js */*.js" + }, + "contributors": [ + { + "name": "Jordan Harband", + "url": "https://github.com/ljharb" + } + ], + "keywords": [ + "extend", + "clone", + "merge" + ], + "repository": { + "type": "git", + "url": "https://github.com/justmoon/node-extend.git" + }, + "dependencies": {}, + "devDependencies": { + "@ljharb/eslint-config": "^12.2.1", + "covert": "^1.1.0", + "eslint": "^4.19.1", + "jscs": "^3.0.7", + "tape": "^4.9.1" + }, + "license": "MIT" +} diff --git a/node_modules/formstream/LICENSE b/node_modules/formstream/LICENSE new file mode 100644 index 0000000..3e4f7ee --- /dev/null +++ b/node_modules/formstream/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2012 - 2014 fengmk2 <fengmk2@gmail.com> +Copyright (c) 2014-present node-modules and other contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/formstream/README.md b/node_modules/formstream/README.md new file mode 100644 index 0000000..4fb0e34 --- /dev/null +++ b/node_modules/formstream/README.md @@ -0,0 +1,217 @@ +# formstream + +[![NPM version][npm-image]][npm-url] +[![CI](https://github.com/node-modules/formstream/actions/workflows/ci.yml/badge.svg)](https://github.com/node-modules/formstream/actions/workflows/ci.yml) +[![Test coverage][codecov-image]][codecov-url] +[![npm download][download-image]][download-url] + +[npm-image]: https://img.shields.io/npm/v/formstream.svg?style=flat-square +[npm-url]: https://npmjs.org/package/formstream +[codecov-image]: https://codecov.io/github/node-modules/formstream/coverage.svg?branch=master +[codecov-url]: https://codecov.io/github/node-modules/formstream?branch=master +[download-image]: https://img.shields.io/npm/dm/formstream.svg?style=flat-square +[download-url]: https://npmjs.org/package/formstream + +A [multipart/form-data](http://tools.ietf.org/html/rfc2388) encoded stream, helper for file upload. + +## Install + +```bash +npm install formstream +``` + +## Quick Start + +```js +var formstream = require('formstream'); +var http = require('http'); + +var form = formstream(); + +// form.file('file', filepath, filename); +form.file('file', './logo.png', 'upload-logo.png'); + +// other form fields +form.field('foo', 'fengmk2').field('love', 'aerdeng'); + +// even send file content buffer directly +// form.buffer(name, buffer, filename, mimeType) +form.buffer('file2', new Buffer('This is file2 content.'), 'foo.txt'); + +var options = { + method: 'POST', + host: 'upload.cnodejs.net', + path: '/store', + headers: form.headers() +}; +var req = http.request(options, function (res) { + console.log('Status: %s', res.statusCode); + res.on('data', function (data) { + console.log(data.toString()); + }); +}); + +form.pipe(req); +``` + +### Chaining + +```js +var fs = require('fs'); +var formstream = require('formstream'); + +var filepath = './logo.png'; +fs.stat(filepath, function (err, stat) { + formstream() + .field('status', 'share picture') + .field('access_token', 'your access token') + .file('pic', filepath, 'logo.png', stat.size) + .pipe(process.stdout); // your request stream +}); +``` + +### Set min chunk buffer size + +Some web servers have a limit on the number of chunks, and you can set `minChunkSize` to ensure the size of chunk sent to the server. + +```js +var fs = require('fs'); +var FormStream = require('formstream'); + +var filepath = './big-file.zip'; +fs.stat(filepath, function (err, stat) { + new FormStream({ + // send >= 2MB chunk buffer size to the server + minChunkSize: 1024 * 1024 * 2, + }).field('status', 'share file') + .field('access_token', 'your access token') + .file('file', filepath, 'big-file.zip', stat.size) + .pipe(process.stdout); // your request stream +}); +``` + +## API Doc + +### formstream([options]) + +Create a form instance. + +#### Arguments + +- **options.minChunkSize** Number - min chunk size to emit data event + +#### Returns + +Form - form instance + +### FormStream#field(name, value) + +Add a normal field to the form. + +#### Arguments + +- **name** String - Name of field +- **value** String - Value of field + +#### Returns + +Form - form instance + +### FormStream#file(name, filepath[, filename][, filesize]) + +Add a local file to be uploaded to the form. + +#### Arguments + +- **name** String - Name of file field +- **filepath** String - Local path of the file to be uploaded +- ***filename*** String - Optional. Name of the file (will be the base name of `filepath` if empty) +- ***filesize*** Number - Optional. Size of the file (will not generate `Content-Length` header if not specified) + +#### Returns + +Form - form instance + +### FormStream#buffer(name, buffer, filename[, contentType]) + +Add a buffer as a file to upload. + +#### Arguments + +- **name** String - Name of field +- **buffer** Buffer - The buffer to be uploaded +- **filename** String - The file name that tells the remote server +- ***contentType*** String - Optional. Content-Type (aka. MIME Type) of content (will be infered with `filename` if empty) + +#### Returns + +Form - form instance + +### FormStream#stream(name, stream, filename[, contentType][, size]) + +Add a readable stream as a file to upload. Event 'error' will be emitted if an error occured. + +#### Arguments + +- **name** String - Name of field +- **stream** [stream.Readable](http://nodejs.org/api/stream.html#stream_class_stream_readable) - A readable stream to be piped +- **filename** String - The file name that tells the remote server +- ***contentType*** String - Optional. Content-Type (aka. MIME Type) of content (will be infered with `filename` if empty) +- ***size*** Number - Optional. Size of the stream (will not generate `Content-Length` header if not specified) + +#### Returns + +Form - form instance + +### FormStream#headers([headers]) + +Get headers for the request. + +#### Arguments + +- **headers** Object - Additional headers + +#### Example + +```js +var headers = form.headers({ + 'Authorization': 'Bearer kei2akc92jmznvnkeh09sknzdk', + 'Accept': 'application/vnd.github.v3.full+json' +}); +``` + +#### Returns + +Object - Headers to be sent. + +### Event 'error' + +Emitted if there was an error receiving data. + +### Event 'data' + +The 'data' event emits when a Buffer was used. + +See [Node.js Documentation](http://nodejs.org/api/stream.html#stream_event_data) for more. + +### Event 'end' + +Emitted when the stream has received no more 'data' events will happen. + +See [Node.js Documentation](http://nodejs.org/api/stream.html#stream_event_end) for more. + +## License + +[MIT](LICENSE) + +<!-- GITCONTRIBUTOR_START --> + +## Contributors + +|[<img src="https://avatars.githubusercontent.com/u/156269?v=4" width="100px;"/><br/><sub><b>fengmk2</b></sub>](https://github.com/fengmk2)<br/>|[<img src="https://avatars.githubusercontent.com/u/288288?v=4" width="100px;"/><br/><sub><b>xingrz</b></sub>](https://github.com/xingrz)<br/>|[<img src="https://avatars.githubusercontent.com/u/32174276?v=4" width="100px;"/><br/><sub><b>semantic-release-bot</b></sub>](https://github.com/semantic-release-bot)<br/>|[<img src="https://avatars.githubusercontent.com/u/13151189?v=4" width="100px;"/><br/><sub><b>fjc0k</b></sub>](https://github.com/fjc0k)<br/>|[<img src="https://avatars.githubusercontent.com/u/18096247?v=4" width="100px;"/><br/><sub><b>mrspeiser</b></sub>](https://github.com/mrspeiser)<br/>|[<img src="https://avatars.githubusercontent.com/u/985607?v=4" width="100px;"/><br/><sub><b>dead-horse</b></sub>](https://github.com/dead-horse)<br/>| +| :---: | :---: | :---: | :---: | :---: | :---: | +[<img src="https://avatars.githubusercontent.com/u/7326406?v=4" width="100px;"/><br/><sub><b>shaozj</b></sub>](https://github.com/shaozj)<br/> + +This project follows the git-contributor [spec](https://github.com/xudafeng/git-contributor), auto updated at `Wed May 15 2024 00:34:12 GMT+0800`. + +<!-- GITCONTRIBUTOR_END --> diff --git a/node_modules/formstream/lib/formstream.js b/node_modules/formstream/lib/formstream.js new file mode 100644 index 0000000..fb47b4a --- /dev/null +++ b/node_modules/formstream/lib/formstream.js @@ -0,0 +1,399 @@ +/** + * Form Data format: + * + +```txt +--FormStreamBoundary1349886663601\r\n +Content-Disposition: form-data; name="foo"\r\n +\r\n +<FIELD-CONTENT>\r\n +--FormStreamBoundary1349886663601\r\n +Content-Disposition: form-data; name="data"\r\n +Content-Type: application/json\r\n +\r\n +<JSON-FORMAT-CONTENT>\r\n +--FormStreamBoundary1349886663601\r\n +Content-Disposition: form-data; name="file"; filename="formstream.test.js"\r\n +Content-Type: application/javascript\r\n +\r\n +<FILE-CONTENT-CHUNK-1> +... +<FILE-CONTENT-CHUNK-N> +\r\n +--FormStreamBoundary1349886663601\r\n +Content-Disposition: form-data; name="pic"; filename="fawave.png"\r\n +Content-Type: image/png\r\n +\r\n +<IMAGE-CONTENT>\r\n +--FormStreamBoundary1349886663601-- +``` + + * + */ + +'use strict'; + +var debug = require('util').debuglog('formstream'); +var Stream = require('stream'); +var parseStream = require('pause-stream'); +var util = require('util'); +var mime = require('mime'); +var path = require('path'); +var fs = require('fs'); +var destroy = require('destroy'); +var hex = require('node-hex'); + +var PADDING = '--'; +var NEW_LINE = '\r\n'; +var NEW_LINE_BUFFER = Buffer.from(NEW_LINE); + +function FormStream(options) { + if (!(this instanceof FormStream)) { + return new FormStream(options); + } + + FormStream.super_.call(this); + + this._boundary = this._generateBoundary(); + this._streams = []; + this._buffers = []; + this._endData = Buffer.from(PADDING + this._boundary + PADDING + NEW_LINE); + this._contentLength = 0; + this._isAllStreamSizeKnown = true; + this._knownStreamSize = 0; + this._minChunkSize = options && options.minChunkSize || 0; + + this.isFormStream = true; + debug('start boundary\n%s', this._boundary); +} + +util.inherits(FormStream, Stream); +module.exports = FormStream; + +FormStream.prototype._generateBoundary = function() { + // https://github.com/felixge/node-form-data/blob/master/lib/form_data.js#L162 + // This generates a 50 character boundary similar to those used by Firefox. + // They are optimized for boyer-moore parsing. + var boundary = '--------------------------'; + for (var i = 0; i < 24; i++) { + boundary += Math.floor(Math.random() * 10).toString(16); + } + + return boundary; +}; + +FormStream.prototype.setTotalStreamSize = function (size) { + // this method should not make any sense if the length of each stream is known. + if (this._isAllStreamSizeKnown) { + return this; + } + + size = size || 0; + + for (var i = 0; i < this._streams.length; i++) { + size += this._streams[i][0].length; + size += NEW_LINE_BUFFER.length; // stream field end padding size + } + + this._knownStreamSize = size; + this._isAllStreamSizeKnown = true; + debug('set total size: %s', size); + return this; +}; + +FormStream.prototype.headers = function (options) { + var headers = { + 'Content-Type': 'multipart/form-data; boundary=' + this._boundary + }; + + // calculate total stream size + this._contentLength += this._knownStreamSize; + // calculate length of end padding + this._contentLength += this._endData.length; + + if (this._isAllStreamSizeKnown) { + headers['Content-Length'] = String(this._contentLength); + } + + if (options) { + for (var k in options) { + headers[k] = options[k]; + } + } + + debug('headers: %j', headers); + return headers; +}; + +FormStream.prototype.file = function (name, filepath, filename, filesize) { + if (typeof filename === 'number' && !filesize) { + filesize = filename; + filename = path.basename(filepath); + } + if (!filename) { + filename = path.basename(filepath); + } + + var mimeType = mime.getType(filename); + var stream = fs.createReadStream(filepath); + + return this.stream(name, stream, filename, mimeType, filesize); +}; + +/** + * Add a form field + * @param {String} name field name + * @param {String|Buffer} value field value + * @param {String} [mimeType] field mimeType + * @return {this} + */ +FormStream.prototype.field = function (name, value, mimeType) { + if (!Buffer.isBuffer(value)) { + // field(String, Number) + // https://github.com/qiniu/nodejs-sdk/issues/123 + if (typeof value === 'number') { + value = String(value); + } + value = Buffer.from(value); + } + return this.buffer(name, value, null, mimeType); +}; + +FormStream.prototype.stream = function (name, stream, filename, mimeType, size) { + if (typeof mimeType === 'number' && !size) { + size = mimeType; + mimeType = mime.getType(filename); + } else if (!mimeType) { + mimeType = mime.getType(filename); + } + + stream.once('error', this.emit.bind(this, 'error')); + // if form stream destroy, also destroy the source stream + this.once('destroy', function () { + destroy(stream); + }); + + var leading = this._leading({ name: name, filename: filename }, mimeType); + + var ps = parseStream().pause(); + stream.pipe(ps); + + this._streams.push([leading, ps]); + + // if the size of this stream is known, plus the total content-length; + // otherwise, content-length is unknown. + if (typeof size === 'number') { + this._knownStreamSize += leading.length; + this._knownStreamSize += size; + this._knownStreamSize += NEW_LINE_BUFFER.length; + } else { + this._isAllStreamSizeKnown = false; + } + + process.nextTick(this.resume.bind(this)); + + return this; +}; + +FormStream.prototype.buffer = function (name, buffer, filename, mimeType) { + if (filename && !mimeType) { + mimeType = mime.getType(filename); + } + + var disposition = { name: name }; + if (filename) { + disposition.filename = filename; + } + + var leading = this._leading(disposition, mimeType); + + // plus buffer length to total content-length + var bufferSize = leading.length + buffer.length + NEW_LINE_BUFFER.length; + this._buffers.push(Buffer.concat([leading, buffer, NEW_LINE_BUFFER], bufferSize)); + this._contentLength += bufferSize; + + process.nextTick(this.resume.bind(this)); + if (debug.enabled) { + if (buffer.length > 512) { + debug('new buffer field, content size: %d\n%s%s', + buffer.length, leading.toString(), hex(buffer.slice(0, 512))); + } else { + debug('new buffer field, content size: %d\n%s%s', + buffer.length, leading.toString(), hex(buffer)); + } + } + return this; +}; + +FormStream.prototype._leading = function (disposition, type) { + var leading = [PADDING + this._boundary]; + + var dispositions = []; + + if (disposition) { + for (var k in disposition) { + dispositions.push(k + '="' + disposition[k] + '"'); + } + } + + leading.push('Content-Disposition: form-data; ' + dispositions.join('; ')); + if (type) { + leading.push('Content-Type: ' + type); + } + + leading.push(''); + leading.push(''); + return Buffer.from(leading.join(NEW_LINE)); +}; + +FormStream.prototype._emitBuffers = function () { + if (!this._buffers.length) { + return; + } + + for (var i = 0; i < this._buffers.length; i++) { + this.emit('data', this._buffers[i]); + } + this._buffers = []; +}; + +FormStream.prototype._emitStream = function (item) { + var self = this; + // item: [ leading, stream ] + var streamSize = 0; + var chunkCount = 0; + const leading = item[0]; + self.emit('data', leading); + chunkCount++; + if (debug.enabled) { + debug('new stream, chunk index %d\n%s', chunkCount, leading.toString()); + } + + var stream = item[1]; + stream.on('data', function (data) { + self.emit('data', data); + streamSize += leading.length; + chunkCount++; + if (debug.enabled) { + if (data.length > 512) { + debug('stream chunk, size %d, chunk index %d, stream size %d\n%s...... only show 512 bytes ......', + data.length, chunkCount, streamSize, hex(data.slice(0, 512))); + } else { + debug('stream chunk, size %d, chunk index %d, stream size %d\n%s', + data.length, chunkCount, streamSize, hex(data)); + } + } + }); + stream.on('end', function () { + self.emit('data', NEW_LINE_BUFFER); + chunkCount++; + debug('stream end, chunk index %d, stream size %d', chunkCount, streamSize); + return process.nextTick(self.drain.bind(self)); + }); + stream.resume(); +}; + +FormStream.prototype._emitStreamWithChunkSize = function (item, minChunkSize) { + var self = this; + // item: [ leading, stream ] + var streamSize = 0; + var chunkCount = 0; + var bufferSize = 0; + var buffers = []; + const leading = item[0]; + buffers.push(leading); + bufferSize += leading.length; + if (debug.enabled) { + debug('new stream, with min chunk size: %d\n%s', minChunkSize, leading.toString()); + } + + var stream = item[1]; + stream.on('data', function (data) { + if (typeof data === 'string') { + data = Buffer.from(data, 'utf-8'); + } + buffers.push(data); + bufferSize += data.length; + streamSize += data.length; + debug('got stream data size %d, buffer size %d, stream size %d', + data.length, bufferSize, streamSize); + if (bufferSize >= minChunkSize) { + const chunk = Buffer.concat(buffers, bufferSize); + buffers = []; + bufferSize = 0; + self.emit('data', chunk); + chunkCount++; + if (debug.enabled) { + if (chunk.length > 512) { + debug('stream chunk, size %d, chunk index %d, stream size %d\n%s...... only show 512 bytes ......', + chunk.length, chunkCount, streamSize, hex(chunk.slice(0, 512))); + } else { + debug('stream chunk, size %d, chunk index %d, stream size %d\n%s', + chunk.length, chunkCount, streamSize, hex(chunk)); + } + } + } + }); + stream.on('end', function () { + buffers.push(NEW_LINE_BUFFER); + bufferSize += NEW_LINE_BUFFER.length; + const chunk = Buffer.concat(buffers, bufferSize); + self.emit('data', chunk); + chunkCount++; + if (chunk.length > 512) { + debug('stream end, size %d, chunk index %d, stream size %d\n%s...... only show 512 bytes ......', + chunk.length, chunkCount, streamSize, hex(chunk.slice(0, 512))); + } else { + debug('stream end, size %d, chunk index %d, stream size %d\n%s', + chunk.length, chunkCount, streamSize, hex(chunk)); + } + return process.nextTick(self.drain.bind(self)); + }); + stream.resume(); +}; + +FormStream.prototype._emitEnd = function () { + // ending format: + // + // --{boundary}--\r\n + this.emit('data', this._endData); + this.emit('end'); + if (debug.enabled) { + debug('end boundary\n%s', this._endData.toString()); + } +}; + +FormStream.prototype.drain = function () { + // debug('drain'); + this._emitBuffers(); + + var item = this._streams.shift(); + if (item) { + if (this._minChunkSize && this._minChunkSize > 0) { + this._emitStreamWithChunkSize(item, this._minChunkSize); + } else { + this._emitStream(item); + } + } else { + this._emitEnd(); + } + + return this; +}; + +FormStream.prototype.resume = function () { + // debug('resume'); + this.paused = false; + + if (!this._draining) { + this._draining = true; + this.drain(); + } + + return this; +}; + +FormStream.prototype.close = FormStream.prototype.destroy = function () { + this.emit('destroy'); + // debug('destroy or close'); +}; diff --git a/node_modules/formstream/package.json b/node_modules/formstream/package.json new file mode 100644 index 0000000..dee5b7c --- /dev/null +++ b/node_modules/formstream/package.json @@ -0,0 +1,52 @@ +{ + "name": "formstream", + "version": "1.5.1", + "description": "A multipart/form-data encoded stream, helper for file upload.", + "main": "lib/formstream.js", + "types": "types/formstream.d.ts", + "files": [ + "lib", + "types/formstream.d.ts" + ], + "scripts": { + "test": "egg-bin test", + "cov": "egg-bin cov", + "ci": "npm run lint && npm run tsd && npm run cov && NODE_DEBUG=formstream npm run cov", + "lint": "jshint .", + "tsd": "tsd", + "contributor": "git-contributor" + }, + "repository": { + "type": "git", + "url": "git://github.com/node-modules/formstream.git" + }, + "keywords": [ + "form", + "stream", + "multipart", + "form-data", + "upload", + "postfile", + "request" + ], + "dependencies": { + "destroy": "^1.0.4", + "mime": "^2.5.2", + "node-hex": "^1.0.1", + "pause-stream": "~0.0.11" + }, + "devDependencies": { + "@types/node": "^20.4.3", + "connect-multiparty": "1", + "egg-bin": "^5.6.1", + "express": "^4.16.4", + "git-contributor": "^2.1.5", + "jshint": "^2.13.6", + "pedding": "1", + "should": "4", + "tsd": "^0.28.1", + "urllib": "2" + }, + "author": "fengmk2 <fengmk2@gmail.com> (https://github.com/fengmk2)", + "license": "MIT" +} diff --git a/node_modules/formstream/types/formstream.d.ts b/node_modules/formstream/types/formstream.d.ts new file mode 100644 index 0000000..e522b0d --- /dev/null +++ b/node_modules/formstream/types/formstream.d.ts @@ -0,0 +1,79 @@ +import { Readable, Stream } from 'stream' + +declare class FormStream extends Stream { + /** + * Add a normal field to the form. + * + * @param name Name of field + * @param value Value of field + */ + field(name: string, value: string, contentType?: string): this + + /** + * Add a local file to be uploaded to the form. + * + * @param name Name of file field + * @param filepath Local path of the file to be uploaded + * @param filename Name of the file (will be the base name of filepath if empty) + * @param filesize Size of the file (will not generate Content-Length header if not specified) + */ + file( + name: string, + filepath: string, + filename?: string, + filesize?: number, + ): this + + /** + * Add a buffer as a file to upload. + * + * @param name Name of field + * @param buffer The buffer to be uploaded + * @param filename The file name that tells the remote server + * @param contentType Content-Type (aka. MIME Type) of content (will be infered with filename if empty) + */ + buffer( + name: string, + buffer: Buffer, + filename: string, + contentType?: string, + ): this + + /** + * Add a readable stream as a file to upload. Event 'error' will be emitted if an error occured. + * + * @param name Name of field + * @param stream A readable stream to be piped + * @param filename The file name that tells the remote server + * @param contentType Content-Type (aka. MIME Type) of content (will be infered with filename if empty) + * @param size Size of the stream (will not generate Content-Length header if not specified) + */ + stream( + name: string, + stream: Readable, + filename: string, + contentType?: string, + size?: number, + ): this + + /** + * Get headers for the request. + * + * @param additionalHeaders Additional headers + */ + headers(additionalHeaders?: Record<string, any>): Record<string, any> +} + +interface FormStreamOptions { + /** min chunk size to emit data event */ + minChunkSize?: number; +} + +declare const formStream: { + new (options?: FormStreamOptions): FormStream + (options?: FormStreamOptions): FormStream +} + +interface formStream extends FormStream {} + +export = formStream diff --git a/node_modules/from/.npmignore b/node_modules/from/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/node_modules/from/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/node_modules/from/.travis.yml b/node_modules/from/.travis.yml new file mode 100644 index 0000000..76db03f --- /dev/null +++ b/node_modules/from/.travis.yml @@ -0,0 +1,6 @@ +language: node_js +node_js: + - "node" + - "6" + - "5" + - "4" diff --git a/node_modules/from/LICENSE.APACHE2 b/node_modules/from/LICENSE.APACHE2 new file mode 100644 index 0000000..6366c04 --- /dev/null +++ b/node_modules/from/LICENSE.APACHE2 @@ -0,0 +1,15 @@ +Apache License, Version 2.0 + +Copyright (c) 2011 Dominic Tarr + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/node_modules/from/LICENSE.MIT b/node_modules/from/LICENSE.MIT new file mode 100644 index 0000000..6eafbd7 --- /dev/null +++ b/node_modules/from/LICENSE.MIT @@ -0,0 +1,24 @@ +The MIT License + +Copyright (c) 2011 Dominic Tarr + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/from/index.js b/node_modules/from/index.js new file mode 100644 index 0000000..e3e7bfd --- /dev/null +++ b/node_modules/from/index.js @@ -0,0 +1,68 @@ + +'use strict'; + +var Stream = require('stream') + +// from +// +// a stream that reads from an source. +// source may be an array, or a function. +// from handles pause behaviour for you. + +module.exports = +function from (source) { + if(Array.isArray(source)) { + var source_index = 0, source_len = source.length; + return from (function (i) { + if(source_index < source_len) + this.emit('data', source[source_index++]) + else + this.emit('end') + return true + }) + } + var s = new Stream(), i = 0 + s.ended = false + s.started = false + s.readable = true + s.writable = false + s.paused = false + s.ended = false + s.pause = function () { + s.started = true + s.paused = true + } + function next () { + s.started = true + if(s.ended) return + while(!s.ended && !s.paused && source.call(s, i++, function () { + if(!s.ended && !s.paused) + process.nextTick(next); + })) + ; + } + s.resume = function () { + s.started = true + s.paused = false + next() + } + s.on('end', function () { + s.ended = true + s.readable = false + process.nextTick(s.destroy) + }) + s.destroy = function () { + s.ended = true + s.emit('close') + } + /* + by default, the stream will start emitting at nextTick + if you want, you can pause it, after pipeing. + you can also resume before next tick, and that will also + work. + */ + process.nextTick(function () { + if(!s.started) s.resume() + }) + return s +} diff --git a/node_modules/from/package.json b/node_modules/from/package.json new file mode 100644 index 0000000..a265d84 --- /dev/null +++ b/node_modules/from/package.json @@ -0,0 +1,26 @@ +{ + "name": "from", + "version": "0.1.7", + "description": "Easy way to make a Readable Stream", + "main": "index.js", + "scripts": { + "test": "asynct test/*.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/dominictarr/from.git" + }, + "keywords": [ + "stream", + "streams", + "readable", + "easy" + ], + "devDependencies": { + "asynct": "1", + "stream-spec": "0", + "assertions": "~2.3.0" + }, + "author": "Dominic Tarr <dominic.tarr@gmail.com> (dominictarr.com)", + "license": "MIT" +} diff --git a/node_modules/from/readme.markdown b/node_modules/from/readme.markdown new file mode 100644 index 0000000..c84fc9b --- /dev/null +++ b/node_modules/from/readme.markdown @@ -0,0 +1,40 @@ +[![TravisCI Build Status](https://travis-ci.org/nmhnmh/from.svg?branch=master)](https://travis-ci.org/nmhnmh/from) + +# from + +An easy way to create a `readable Stream`. + +## from(function getChunk(count, next)) + +from takes a `getChunk` function and returns a stream. + +`getChunk` is called again and again, after each time the user calls `next()`, +until the user emits `'end'` + +if `pause()` is called, the `getChunk` won't be called again untill `resume()` is called. + + +```js +var from = require('from') + +var stream = + from(function getChunk(count, next) { + //do some sort of data + this.emit('data', whatever) + + if(itsOver) + this.emit('end') + + //ready to handle the next chunk + next() + //or, if it's sync: + return true + }) +``` + +## from(array) + +from also takes an `Array` whose elements it emits one after another. + +## License +MIT / Apache2 diff --git a/node_modules/from/test/index.js b/node_modules/from/test/index.js new file mode 100644 index 0000000..5e2f161 --- /dev/null +++ b/node_modules/from/test/index.js @@ -0,0 +1,210 @@ +var from = require('..') +var spec = require('stream-spec') +var a = require('assertions') + +function read(stream, callback) { + var actual = [] + stream.on('data', function (data) { + actual.push(data) + }) + stream.once('end', function () { + callback(null, actual) + }) + stream.once('error', function (err) { + callback(err) + }) +} + +function pause(stream) { + stream.on('data', function () { + if(Math.random() > 0.1) return + stream.pause() + process.nextTick(function () { + stream.resume() + }) + }) +} + +exports['inc'] = function (test) { + + var fs = from(function (i) { + this.emit('data', i) + if(i >= 99) + return this.emit('end') + return true + }) + + spec(fs).readable().validateOnExit() + + read(fs, function (err, arr) { + test.equal(arr.length, 100) + test.done() + }) +} + +exports['inc - async'] = function (test) { + + var fs = from(function (i, next) { + this.emit('data', i) + if(i >= 99) + return this.emit('end') + next(); + }) + + spec(fs).readable().validateOnExit() + + read(fs, function (err, arr) { + test.equal(arr.length, 100) + test.done() + }) +} + +exports['large stream - from an array'] = function (test) { + + var l = 100000 + , expected = [] + + while(l--) expected.push(l * Math.random()) + + var fs = from(expected.slice()) + + spec(fs).readable().validateOnExit() + + read(fs, function (err, arr) { + a.deepEqual(arr, expected) + test.done() + }) +} + +exports['large stream - callback return true'] = function (test) { + + var fs = from(function (i, next) { + this.emit('data', i) + if(i >= 99999) + return this.emit('end') + return true; + }) + + spec(fs).readable().validateOnExit() + + read(fs, function (err, arr) { + test.equal(arr.length, 100000) + test.done() + }) +} + +exports['large stream - callback call next()'] = function (test) { + + var fs = from(function (i, next) { + this.emit('data', i) + if(i >= 99999) + return this.emit('end') + next(); + }) + + spec(fs).readable().validateOnExit() + + read(fs, function (err, arr) { + test.equal(arr.length, 100000) + test.done() + }) +} + +exports['simple'] = function (test) { + + var l = 1000 + , expected = [] + + while(l--) expected.push(l * Math.random()) + + var t = from(expected.slice()) + + spec(t) + .readable() + .pausable({strict: true}) + .validateOnExit() + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected) + test.done() + }) + +} + +exports['simple pausable'] = function (test) { + + var l = 1000 + , expected = [] + + while(l--) expected.push(l * Math.random()) + + var t = from(expected.slice()) + + spec(t) + .readable() + .pausable({strict: true}) + .validateOnExit() + + pause(t) + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected) + test.done() + }) + +} + +exports['simple (not strictly pausable) setTimeout'] = function (test) { + + var l = 10 + , expected = [] + while(l--) expected.push(l * Math.random()) + + + var _expected = expected.slice() + var t = from(function (i, n) { + var self = this + setTimeout(function () { + if(_expected.length) + self.emit('data', _expected.shift()) + else + if(!self.ended) + self.emit('end') + n() + }, 3) + }) + + /* + using from in this way will not be strictly pausable. + it could be extended to buffer outputs, but I think a better + way would be to use a PauseStream that implements strict pause. + */ + + spec(t) + .readable() + .pausable({strict: false }) + .validateOnExit() + + //pause(t) + var paused = false + var i = setInterval(function () { + if(!paused) t.pause() + else t.resume() + paused = !paused + }, 2) + + t.on('end', function () { + clearInterval(i) + }) + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected) + test.done() + }) + +} + + diff --git a/node_modules/function-bind/.eslintrc b/node_modules/function-bind/.eslintrc new file mode 100644 index 0000000..71a054f --- /dev/null +++ b/node_modules/function-bind/.eslintrc @@ -0,0 +1,21 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "func-name-matching": 0, + "indent": [2, 4], + "no-new-func": [1], + }, + + "overrides": [ + { + "files": "test/**", + "rules": { + "max-lines-per-function": 0, + "strict": [0] + }, + }, + ], +} diff --git a/node_modules/function-bind/.github/FUNDING.yml b/node_modules/function-bind/.github/FUNDING.yml new file mode 100644 index 0000000..7448219 --- /dev/null +++ b/node_modules/function-bind/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/function-bind +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/function-bind/.github/SECURITY.md b/node_modules/function-bind/.github/SECURITY.md new file mode 100644 index 0000000..82e4285 --- /dev/null +++ b/node_modules/function-bind/.github/SECURITY.md @@ -0,0 +1,3 @@ +# Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. diff --git a/node_modules/function-bind/.nycrc b/node_modules/function-bind/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/node_modules/function-bind/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/function-bind/CHANGELOG.md b/node_modules/function-bind/CHANGELOG.md new file mode 100644 index 0000000..f9e6cc0 --- /dev/null +++ b/node_modules/function-bind/CHANGELOG.md @@ -0,0 +1,136 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.2](https://github.com/ljharb/function-bind/compare/v1.1.1...v1.1.2) - 2023-10-12 + +### Merged + +- Point to the correct file [`#16`](https://github.com/ljharb/function-bind/pull/16) + +### Commits + +- [Tests] migrate tests to Github Actions [`4f8b57c`](https://github.com/ljharb/function-bind/commit/4f8b57c02f2011fe9ae353d5e74e8745f0988af8) +- [Tests] remove `jscs` [`90eb2ed`](https://github.com/ljharb/function-bind/commit/90eb2edbeefd5b76cd6c3a482ea3454db169b31f) +- [meta] update `.gitignore` [`53fcdc3`](https://github.com/ljharb/function-bind/commit/53fcdc371cd66634d6e9b71c836a50f437e89fed) +- [Tests] up to `node` `v11.10`, `v10.15`, `v9.11`, `v8.15`, `v6.16`, `v4.9`; use `nvm install-latest-npm`; run audit script in tests [`1fe8f6e`](https://github.com/ljharb/function-bind/commit/1fe8f6e9aed0dfa8d8b3cdbd00c7f5ea0cd2b36e) +- [meta] add `auto-changelog` [`1921fcb`](https://github.com/ljharb/function-bind/commit/1921fcb5b416b63ffc4acad051b6aad5722f777d) +- [Robustness] remove runtime dependency on all builtins except `.apply` [`f743e61`](https://github.com/ljharb/function-bind/commit/f743e61aa6bb2360358c04d4884c9db853d118b7) +- Docs: enable badges; update wording [`503cb12`](https://github.com/ljharb/function-bind/commit/503cb12d998b5f91822776c73332c7adcd6355dd) +- [readme] update badges [`290c5db`](https://github.com/ljharb/function-bind/commit/290c5dbbbda7264efaeb886552a374b869a4bb48) +- [Tests] switch to nyc for coverage [`ea360ba`](https://github.com/ljharb/function-bind/commit/ea360ba907fc2601ed18d01a3827fa2d3533cdf8) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`cae5e9e`](https://github.com/ljharb/function-bind/commit/cae5e9e07a5578dc6df26c03ee22851ce05b943c) +- [meta] add `funding` field; create FUNDING.yml [`c9f4274`](https://github.com/ljharb/function-bind/commit/c9f4274aa80ea3aae9657a3938fdba41a3b04ca6) +- [Tests] fix eslint errors from #15 [`f69aaa2`](https://github.com/ljharb/function-bind/commit/f69aaa2beb2fdab4415bfb885760a699d0b9c964) +- [actions] fix permissions [`99a0cd9`](https://github.com/ljharb/function-bind/commit/99a0cd9f3b5bac223a0d572f081834cd73314be7) +- [meta] use `npmignore` to autogenerate an npmignore file [`f03b524`](https://github.com/ljharb/function-bind/commit/f03b524ca91f75a109a5d062f029122c86ecd1ae) +- [Dev Deps] update `@ljharb/eslint‑config`, `eslint`, `tape` [`7af9300`](https://github.com/ljharb/function-bind/commit/7af930023ae2ce7645489532821e4fbbcd7a2280) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `covert`, `tape` [`64a9127`](https://github.com/ljharb/function-bind/commit/64a9127ab0bd331b93d6572eaf6e9971967fc08c) +- [Tests] use `aud` instead of `npm audit` [`e75069c`](https://github.com/ljharb/function-bind/commit/e75069c50010a8fcce2a9ce2324934c35fdb4386) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`d03555c`](https://github.com/ljharb/function-bind/commit/d03555ca59dea3b71ce710045e4303b9e2619e28) +- [meta] add `safe-publish-latest` [`9c8f809`](https://github.com/ljharb/function-bind/commit/9c8f8092aed027d7e80c94f517aa892385b64f09) +- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`baf6893`](https://github.com/ljharb/function-bind/commit/baf6893e27f5b59abe88bc1995e6f6ed1e527397) +- [meta] create SECURITY.md [`4db1779`](https://github.com/ljharb/function-bind/commit/4db17799f1f28ae294cb95e0081ca2b591c3911b) +- [Tests] add `npm run audit` [`c8b38ec`](https://github.com/ljharb/function-bind/commit/c8b38ec40ed3f85dabdee40ed4148f1748375bc2) +- Revert "Point to the correct file" [`05cdf0f`](https://github.com/ljharb/function-bind/commit/05cdf0fa205c6a3c5ba40bbedd1dfa9874f915c9) + +## [v1.1.1](https://github.com/ljharb/function-bind/compare/v1.1.0...v1.1.1) - 2017-08-28 + +### Commits + +- [Tests] up to `node` `v8`; newer npm breaks on older node; fix scripts [`817f7d2`](https://github.com/ljharb/function-bind/commit/817f7d28470fdbff8ef608d4d565dd4d1430bc5e) +- [Dev Deps] update `eslint`, `jscs`, `tape`, `@ljharb/eslint-config` [`854288b`](https://github.com/ljharb/function-bind/commit/854288b1b6f5c555f89aceb9eff1152510262084) +- [Dev Deps] update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`83e639f`](https://github.com/ljharb/function-bind/commit/83e639ff74e6cd6921285bccec22c1bcf72311bd) +- Only apps should have lockfiles [`5ed97f5`](https://github.com/ljharb/function-bind/commit/5ed97f51235c17774e0832e122abda0f3229c908) +- Use a SPDX-compliant “license” field. [`5feefea`](https://github.com/ljharb/function-bind/commit/5feefea0dc0193993e83e5df01ded424403a5381) + +## [v1.1.0](https://github.com/ljharb/function-bind/compare/v1.0.2...v1.1.0) - 2016-02-14 + +### Commits + +- Update `eslint`, `tape`; use my personal shared `eslint` config [`9c9062a`](https://github.com/ljharb/function-bind/commit/9c9062abbe9dd70b59ea2c3a3c3a81f29b457097) +- Add `npm run eslint` [`dd96c56`](https://github.com/ljharb/function-bind/commit/dd96c56720034a3c1ffee10b8a59a6f7c53e24ad) +- [New] return the native `bind` when available. [`82186e0`](https://github.com/ljharb/function-bind/commit/82186e03d73e580f95ff167e03f3582bed90ed72) +- [Dev Deps] update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`a3dd767`](https://github.com/ljharb/function-bind/commit/a3dd76720c795cb7f4586b0544efabf8aa107b8b) +- Update `eslint` [`3dae2f7`](https://github.com/ljharb/function-bind/commit/3dae2f7423de30a2d20313ddb1edc19660142fe9) +- Update `tape`, `covert`, `jscs` [`a181eee`](https://github.com/ljharb/function-bind/commit/a181eee0cfa24eb229c6e843a971f36e060a2f6a) +- [Tests] up to `node` `v5.6`, `v4.3` [`964929a`](https://github.com/ljharb/function-bind/commit/964929a6a4ddb36fb128de2bcc20af5e4f22e1ed) +- Test up to `io.js` `v2.1` [`2be7310`](https://github.com/ljharb/function-bind/commit/2be7310f2f74886a7124ca925be411117d41d5ea) +- Update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`45f3d68`](https://github.com/ljharb/function-bind/commit/45f3d6865c6ca93726abcef54febe009087af101) +- [Dev Deps] update `tape`, `jscs` [`6e1340d`](https://github.com/ljharb/function-bind/commit/6e1340d94642deaecad3e717825db641af4f8b1f) +- [Tests] up to `io.js` `v3.3`, `node` `v4.1` [`d9bad2b`](https://github.com/ljharb/function-bind/commit/d9bad2b778b1b3a6dd2876087b88b3acf319f8cc) +- Update `eslint` [`935590c`](https://github.com/ljharb/function-bind/commit/935590caa024ab356102e4858e8fc315b2ccc446) +- [Dev Deps] update `jscs`, `eslint`, `@ljharb/eslint-config` [`8c9a1ef`](https://github.com/ljharb/function-bind/commit/8c9a1efd848e5167887aa8501857a0940a480c57) +- Test on `io.js` `v2.2` [`9a3a38c`](https://github.com/ljharb/function-bind/commit/9a3a38c92013aed6e108666e7bd40969b84ac86e) +- Run `travis-ci` tests on `iojs` and `node` v0.12; speed up builds; allow 0.8 failures. [`69afc26`](https://github.com/ljharb/function-bind/commit/69afc2617405b147dd2a8d8ae73ca9e9283f18b4) +- [Dev Deps] Update `tape`, `eslint` [`36c1be0`](https://github.com/ljharb/function-bind/commit/36c1be0ab12b45fe5df6b0fdb01a5d5137fd0115) +- Update `tape`, `jscs` [`98d8303`](https://github.com/ljharb/function-bind/commit/98d8303cd5ca1c6b8f985469f86b0d44d7d45f6e) +- Update `jscs` [`9633a4e`](https://github.com/ljharb/function-bind/commit/9633a4e9fbf82051c240855166e468ba8ba0846f) +- Update `tape`, `jscs` [`c80ef0f`](https://github.com/ljharb/function-bind/commit/c80ef0f46efc9791e76fa50de4414092ac147831) +- Test up to `io.js` `v3.0` [`7e2c853`](https://github.com/ljharb/function-bind/commit/7e2c8537d52ab9cf5a655755561d8917684c0df4) +- Test on `io.js` `v2.4` [`5a199a2`](https://github.com/ljharb/function-bind/commit/5a199a27ba46795ba5eaf0845d07d4b8232895c9) +- Test on `io.js` `v2.3` [`a511b88`](https://github.com/ljharb/function-bind/commit/a511b8896de0bddf3b56862daa416c701f4d0453) +- Fixing a typo from 822b4e1938db02dc9584aa434fd3a45cb20caf43 [`732d6b6`](https://github.com/ljharb/function-bind/commit/732d6b63a9b33b45230e630dbcac7a10855d3266) +- Update `jscs` [`da52a48`](https://github.com/ljharb/function-bind/commit/da52a4886c06d6490f46ae30b15e4163ba08905d) +- Lock covert to v1.0.0. [`d6150fd`](https://github.com/ljharb/function-bind/commit/d6150fda1e6f486718ebdeff823333d9e48e7430) + +## [v1.0.2](https://github.com/ljharb/function-bind/compare/v1.0.1...v1.0.2) - 2014-10-04 + +## [v1.0.1](https://github.com/ljharb/function-bind/compare/v1.0.0...v1.0.1) - 2014-10-03 + +### Merged + +- make CI build faster [`#3`](https://github.com/ljharb/function-bind/pull/3) + +### Commits + +- Using my standard jscs.json [`d8ee94c`](https://github.com/ljharb/function-bind/commit/d8ee94c993eff0a84cf5744fe6a29627f5cffa1a) +- Adding `npm run lint` [`7571ab7`](https://github.com/ljharb/function-bind/commit/7571ab7dfdbd99b25a1dbb2d232622bd6f4f9c10) +- Using consistent indentation [`e91a1b1`](https://github.com/ljharb/function-bind/commit/e91a1b13a61e99ec1e530e299b55508f74218a95) +- Updating jscs [`7e17892`](https://github.com/ljharb/function-bind/commit/7e1789284bc629bc9c1547a61c9b227bbd8c7a65) +- Using consistent quotes [`c50b57f`](https://github.com/ljharb/function-bind/commit/c50b57fcd1c5ec38320979c837006069ebe02b77) +- Adding keywords [`cb94631`](https://github.com/ljharb/function-bind/commit/cb946314eed35f21186a25fb42fc118772f9ee00) +- Directly export a function expression instead of using a declaration, and relying on hoisting. [`5a33c5f`](https://github.com/ljharb/function-bind/commit/5a33c5f45642de180e0d207110bf7d1843ceb87c) +- Naming npm URL and badge in README; use SVG [`2aef8fc`](https://github.com/ljharb/function-bind/commit/2aef8fcb79d54e63a58ae557c4e60949e05d5e16) +- Naming deps URLs in README [`04228d7`](https://github.com/ljharb/function-bind/commit/04228d766670ee45ca24e98345c1f6a7621065b5) +- Naming travis-ci URLs in README; using SVG [`62c810c`](https://github.com/ljharb/function-bind/commit/62c810c2f54ced956cd4d4ab7b793055addfe36e) +- Make sure functions are invoked correctly (also passing coverage tests) [`2b289b4`](https://github.com/ljharb/function-bind/commit/2b289b4dfbf037ffcfa4dc95eb540f6165e9e43a) +- Removing the strict mode pragmas; they make tests fail. [`1aa701d`](https://github.com/ljharb/function-bind/commit/1aa701d199ddc3782476e8f7eef82679be97b845) +- Adding myself as a contributor [`85fd57b`](https://github.com/ljharb/function-bind/commit/85fd57b0860e5a7af42de9a287f3f265fc6d72fc) +- Adding strict mode pragmas [`915b08e`](https://github.com/ljharb/function-bind/commit/915b08e084c86a722eafe7245e21db74aa21ca4c) +- Adding devDeps URLs to README [`4ccc731`](https://github.com/ljharb/function-bind/commit/4ccc73112c1769859e4ca3076caf4086b3cba2cd) +- Fixing the description. [`a7a472c`](https://github.com/ljharb/function-bind/commit/a7a472cf649af515c635cf560fc478fbe48999c8) +- Using a function expression instead of a function declaration. [`b5d3e4e`](https://github.com/ljharb/function-bind/commit/b5d3e4ea6aaffc63888953eeb1fbc7ff45f1fa14) +- Updating tape [`f086be6`](https://github.com/ljharb/function-bind/commit/f086be6029fb56dde61a258c1340600fa174d1e0) +- Updating jscs [`5f9bdb3`](https://github.com/ljharb/function-bind/commit/5f9bdb375ab13ba48f30852aab94029520c54d71) +- Updating jscs [`9b409ba`](https://github.com/ljharb/function-bind/commit/9b409ba6118e23395a4e5d83ef39152aab9d3bfc) +- Run coverage as part of tests. [`8e1b6d4`](https://github.com/ljharb/function-bind/commit/8e1b6d459f047d1bd4fee814e01247c984c80bd0) +- Run linter as part of tests [`c1ca83f`](https://github.com/ljharb/function-bind/commit/c1ca83f832df94587d09e621beba682fabfaa987) +- Updating covert [`701e837`](https://github.com/ljharb/function-bind/commit/701e83774b57b4d3ef631e1948143f43a72f4bb9) + +## [v1.0.0](https://github.com/ljharb/function-bind/compare/v0.2.0...v1.0.0) - 2014-08-09 + +### Commits + +- Make sure old and unstable nodes don't fail Travis [`27adca3`](https://github.com/ljharb/function-bind/commit/27adca34a4ab6ad67b6dfde43942a1b103ce4d75) +- Fixing an issue when the bound function is called as a constructor in ES3. [`e20122d`](https://github.com/ljharb/function-bind/commit/e20122d267d92ce553859b280cbbea5d27c07731) +- Adding `npm run coverage` [`a2e29c4`](https://github.com/ljharb/function-bind/commit/a2e29c4ecaef9e2f6cd1603e868c139073375502) +- Updating tape [`b741168`](https://github.com/ljharb/function-bind/commit/b741168b12b235b1717ff696087645526b69213c) +- Upgrading tape [`63631a0`](https://github.com/ljharb/function-bind/commit/63631a04c7fbe97cc2fa61829cc27246d6986f74) +- Updating tape [`363cb46`](https://github.com/ljharb/function-bind/commit/363cb46dafb23cb3e347729a22f9448051d78464) + +## v0.2.0 - 2014-03-23 + +### Commits + +- Updating test coverage to match es5-shim. [`aa94d44`](https://github.com/ljharb/function-bind/commit/aa94d44b8f9d7f69f10e060db7709aa7a694e5d4) +- initial [`942ee07`](https://github.com/ljharb/function-bind/commit/942ee07e94e542d91798137bc4b80b926137e066) +- Setting the bound function's length properly. [`079f46a`](https://github.com/ljharb/function-bind/commit/079f46a2d3515b7c0b308c2c13fceb641f97ca25) +- Ensuring that some older browsers will throw when given a regex. [`36ac55b`](https://github.com/ljharb/function-bind/commit/36ac55b87f460d4330253c92870aa26fbfe8227f) +- Removing npm scripts that don't have dependencies [`9d2be60`](https://github.com/ljharb/function-bind/commit/9d2be600002cb8bc8606f8f3585ad3e05868c750) +- Updating tape [`297a4ac`](https://github.com/ljharb/function-bind/commit/297a4acc5464db381940aafb194d1c88f4e678f3) +- Skipping length tests for now. [`d9891ea`](https://github.com/ljharb/function-bind/commit/d9891ea4d2aaffa69f408339cdd61ff740f70565) +- don't take my tea [`dccd930`](https://github.com/ljharb/function-bind/commit/dccd930bfd60ea10cb178d28c97550c3bc8c1e07) diff --git a/node_modules/function-bind/LICENSE b/node_modules/function-bind/LICENSE new file mode 100644 index 0000000..62d6d23 --- /dev/null +++ b/node_modules/function-bind/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2013 Raynos. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/node_modules/function-bind/README.md b/node_modules/function-bind/README.md new file mode 100644 index 0000000..814c20b --- /dev/null +++ b/node_modules/function-bind/README.md @@ -0,0 +1,46 @@ +# function-bind <sup>[![Version Badge][npm-version-svg]][package-url]</sup> + +[![github actions][actions-image]][actions-url] +<!--[![coverage][codecov-image]][codecov-url]--> +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Implementation of function.prototype.bind + +Old versions of phantomjs, Internet Explorer < 9, and node < 0.6 don't support `Function.prototype.bind`. + +## Example + +```js +Function.prototype.bind = require("function-bind") +``` + +## Installation + +`npm install function-bind` + +## Contributors + + - Raynos + +## MIT Licenced + +[package-url]: https://npmjs.org/package/function-bind +[npm-version-svg]: https://versionbadg.es/Raynos/function-bind.svg +[deps-svg]: https://david-dm.org/Raynos/function-bind.svg +[deps-url]: https://david-dm.org/Raynos/function-bind +[dev-deps-svg]: https://david-dm.org/Raynos/function-bind/dev-status.svg +[dev-deps-url]: https://david-dm.org/Raynos/function-bind#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/function-bind.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/function-bind.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/function-bind.svg +[downloads-url]: https://npm-stat.com/charts.html?package=function-bind +[codecov-image]: https://codecov.io/gh/Raynos/function-bind/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/Raynos/function-bind/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/Raynos/function-bind +[actions-url]: https://github.com/Raynos/function-bind/actions diff --git a/node_modules/function-bind/implementation.js b/node_modules/function-bind/implementation.js new file mode 100644 index 0000000..fd4384c --- /dev/null +++ b/node_modules/function-bind/implementation.js @@ -0,0 +1,84 @@ +'use strict'; + +/* eslint no-invalid-this: 1 */ + +var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; +var toStr = Object.prototype.toString; +var max = Math.max; +var funcType = '[object Function]'; + +var concatty = function concatty(a, b) { + var arr = []; + + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + + return arr; +}; + +var slicy = function slicy(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; +}; + +var joiny = function (arr, joiner) { + var str = ''; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; +}; + +module.exports = function bind(that) { + var target = this; + if (typeof target !== 'function' || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slicy(arguments, 1); + + var bound; + var binder = function () { + if (this instanceof bound) { + var result = target.apply( + this, + concatty(args, arguments) + ); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply( + that, + concatty(args, arguments) + ); + + }; + + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = '$' + i; + } + + bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); + + if (target.prototype) { + var Empty = function Empty() {}; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + + return bound; +}; diff --git a/node_modules/function-bind/index.js b/node_modules/function-bind/index.js new file mode 100644 index 0000000..3bb6b96 --- /dev/null +++ b/node_modules/function-bind/index.js @@ -0,0 +1,5 @@ +'use strict'; + +var implementation = require('./implementation'); + +module.exports = Function.prototype.bind || implementation; diff --git a/node_modules/function-bind/package.json b/node_modules/function-bind/package.json new file mode 100644 index 0000000..6185963 --- /dev/null +++ b/node_modules/function-bind/package.json @@ -0,0 +1,87 @@ +{ + "name": "function-bind", + "version": "1.1.2", + "description": "Implementation of Function.prototype.bind", + "keywords": [ + "function", + "bind", + "shim", + "es5" + ], + "author": "Raynos <raynos2@gmail.com>", + "repository": { + "type": "git", + "url": "https://github.com/Raynos/function-bind.git" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "main": "index", + "homepage": "https://github.com/Raynos/function-bind", + "contributors": [ + { + "name": "Raynos" + }, + { + "name": "Jordan Harband", + "url": "https://github.com/ljharb" + } + ], + "bugs": { + "url": "https://github.com/Raynos/function-bind/issues", + "email": "raynos2@gmail.com" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "aud": "^2.0.3", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.1" + }, + "license": "MIT", + "scripts": { + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepack": "npmignore --auto --commentLines=autogenerated", + "pretest": "npm run lint", + "test": "npm run tests-only", + "posttest": "aud --production", + "tests-only": "nyc tape 'test/**/*.js'", + "lint": "eslint --ext=js,mjs .", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "ie/8..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/node_modules/function-bind/test/.eslintrc b/node_modules/function-bind/test/.eslintrc new file mode 100644 index 0000000..8a56d5b --- /dev/null +++ b/node_modules/function-bind/test/.eslintrc @@ -0,0 +1,9 @@ +{ + "rules": { + "array-bracket-newline": 0, + "array-element-newline": 0, + "max-statements-per-line": [2, { "max": 2 }], + "no-invalid-this": 0, + "no-magic-numbers": 0, + } +} diff --git a/node_modules/function-bind/test/index.js b/node_modules/function-bind/test/index.js new file mode 100644 index 0000000..2edecce --- /dev/null +++ b/node_modules/function-bind/test/index.js @@ -0,0 +1,252 @@ +// jscs:disable requireUseStrict + +var test = require('tape'); + +var functionBind = require('../implementation'); +var getCurrentContext = function () { return this; }; + +test('functionBind is a function', function (t) { + t.equal(typeof functionBind, 'function'); + t.end(); +}); + +test('non-functions', function (t) { + var nonFunctions = [true, false, [], {}, 42, 'foo', NaN, /a/g]; + t.plan(nonFunctions.length); + for (var i = 0; i < nonFunctions.length; ++i) { + try { functionBind.call(nonFunctions[i]); } catch (ex) { + t.ok(ex instanceof TypeError, 'throws when given ' + String(nonFunctions[i])); + } + } + t.end(); +}); + +test('without a context', function (t) { + t.test('binds properly', function (st) { + var args, context; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }) + }; + namespace.func(1, 2, 3); + st.deepEqual(args, [1, 2, 3]); + st.equal(context, getCurrentContext.call()); + st.end(); + }); + + t.test('binds properly, and still supplies bound arguments', function (st) { + var args, context; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }, undefined, 1, 2, 3) + }; + namespace.func(4, 5, 6); + st.deepEqual(args, [1, 2, 3, 4, 5, 6]); + st.equal(context, getCurrentContext.call()); + st.end(); + }); + + t.test('returns properly', function (st) { + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, null) + }; + var context = namespace.func(1, 2, 3); + st.equal(context, getCurrentContext.call(), 'returned context is namespaced context'); + st.deepEqual(args, [1, 2, 3], 'passed arguments are correct'); + st.end(); + }); + + t.test('returns properly with bound arguments', function (st) { + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, null, 1, 2, 3) + }; + var context = namespace.func(4, 5, 6); + st.equal(context, getCurrentContext.call(), 'returned context is namespaced context'); + st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'passed arguments are correct'); + st.end(); + }); + + t.test('called as a constructor', function (st) { + var thunkify = function (value) { + return function () { return value; }; + }; + st.test('returns object value', function (sst) { + var expectedReturnValue = [1, 2, 3]; + var Constructor = functionBind.call(thunkify(expectedReturnValue), null); + var result = new Constructor(); + sst.equal(result, expectedReturnValue); + sst.end(); + }); + + st.test('does not return primitive value', function (sst) { + var Constructor = functionBind.call(thunkify(42), null); + var result = new Constructor(); + sst.notEqual(result, 42); + sst.end(); + }); + + st.test('object from bound constructor is instance of original and bound constructor', function (sst) { + var A = function (x) { + this.name = x || 'A'; + }; + var B = functionBind.call(A, null, 'B'); + + var result = new B(); + sst.ok(result instanceof B, 'result is instance of bound constructor'); + sst.ok(result instanceof A, 'result is instance of original constructor'); + sst.end(); + }); + + st.end(); + }); + + t.end(); +}); + +test('with a context', function (t) { + t.test('with no bound arguments', function (st) { + var args, context; + var boundContext = {}; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }, boundContext) + }; + namespace.func(1, 2, 3); + st.equal(context, boundContext, 'binds a context properly'); + st.deepEqual(args, [1, 2, 3], 'supplies passed arguments'); + st.end(); + }); + + t.test('with bound arguments', function (st) { + var args, context; + var boundContext = {}; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }, boundContext, 1, 2, 3) + }; + namespace.func(4, 5, 6); + st.equal(context, boundContext, 'binds a context properly'); + st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'supplies bound and passed arguments'); + st.end(); + }); + + t.test('returns properly', function (st) { + var boundContext = {}; + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, boundContext) + }; + var context = namespace.func(1, 2, 3); + st.equal(context, boundContext, 'returned context is bound context'); + st.notEqual(context, getCurrentContext.call(), 'returned context is not lexical context'); + st.deepEqual(args, [1, 2, 3], 'passed arguments are correct'); + st.end(); + }); + + t.test('returns properly with bound arguments', function (st) { + var boundContext = {}; + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, boundContext, 1, 2, 3) + }; + var context = namespace.func(4, 5, 6); + st.equal(context, boundContext, 'returned context is bound context'); + st.notEqual(context, getCurrentContext.call(), 'returned context is not lexical context'); + st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'passed arguments are correct'); + st.end(); + }); + + t.test('passes the correct arguments when called as a constructor', function (st) { + var expected = { name: 'Correct' }; + var namespace = { + Func: functionBind.call(function (arg) { + return arg; + }, { name: 'Incorrect' }) + }; + var returned = new namespace.Func(expected); + st.equal(returned, expected, 'returns the right arg when called as a constructor'); + st.end(); + }); + + t.test('has the new instance\'s context when called as a constructor', function (st) { + var actualContext; + var expectedContext = { foo: 'bar' }; + var namespace = { + Func: functionBind.call(function () { + actualContext = this; + }, expectedContext) + }; + var result = new namespace.Func(); + st.equal(result instanceof namespace.Func, true); + st.notEqual(actualContext, expectedContext); + st.end(); + }); + + t.end(); +}); + +test('bound function length', function (t) { + t.test('sets a correct length without thisArg', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }); + st.equal(subject.length, 3); + st.equal(subject(1, 2, 3), 6); + st.end(); + }); + + t.test('sets a correct length with thisArg', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {}); + st.equal(subject.length, 3); + st.equal(subject(1, 2, 3), 6); + st.end(); + }); + + t.test('sets a correct length without thisArg and first argument', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, undefined, 1); + st.equal(subject.length, 2); + st.equal(subject(2, 3), 6); + st.end(); + }); + + t.test('sets a correct length with thisArg and first argument', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {}, 1); + st.equal(subject.length, 2); + st.equal(subject(2, 3), 6); + st.end(); + }); + + t.test('sets a correct length without thisArg and too many arguments', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, undefined, 1, 2, 3, 4); + st.equal(subject.length, 0); + st.equal(subject(), 6); + st.end(); + }); + + t.test('sets a correct length with thisArg and too many arguments', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {}, 1, 2, 3, 4); + st.equal(subject.length, 0); + st.equal(subject(), 6); + st.end(); + }); +}); diff --git a/node_modules/get-intrinsic/.eslintrc b/node_modules/get-intrinsic/.eslintrc new file mode 100644 index 0000000..235fb79 --- /dev/null +++ b/node_modules/get-intrinsic/.eslintrc @@ -0,0 +1,42 @@ +{ + "root": true, + + "extends": "@ljharb", + + "env": { + "es6": true, + "es2017": true, + "es2020": true, + "es2021": true, + "es2022": true, + }, + + "globals": { + "Float16Array": false, + }, + + "rules": { + "array-bracket-newline": 0, + "complexity": 0, + "eqeqeq": [2, "allow-null"], + "func-name-matching": 0, + "id-length": 0, + "max-lines": 0, + "max-lines-per-function": [2, 90], + "max-params": [2, 4], + "max-statements": 0, + "max-statements-per-line": [2, { "max": 2 }], + "multiline-comment-style": 0, + "no-magic-numbers": 0, + "sort-keys": 0, + }, + + "overrides": [ + { + "files": "test/**", + "rules": { + "new-cap": 0, + }, + }, + ], +} diff --git a/node_modules/get-intrinsic/.github/FUNDING.yml b/node_modules/get-intrinsic/.github/FUNDING.yml new file mode 100644 index 0000000..8e8da0d --- /dev/null +++ b/node_modules/get-intrinsic/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/get-intrinsic +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/get-intrinsic/.nycrc b/node_modules/get-intrinsic/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/node_modules/get-intrinsic/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/get-intrinsic/CHANGELOG.md b/node_modules/get-intrinsic/CHANGELOG.md new file mode 100644 index 0000000..ce1dd98 --- /dev/null +++ b/node_modules/get-intrinsic/CHANGELOG.md @@ -0,0 +1,186 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.3.0](https://github.com/ljharb/get-intrinsic/compare/v1.2.7...v1.3.0) - 2025-02-22 + +### Commits + +- [Dev Deps] update `es-abstract`, `es-value-fixtures`, `for-each`, `object-inspect` [`9b61553`](https://github.com/ljharb/get-intrinsic/commit/9b61553c587f1c1edbd435597e88c7d387da97dd) +- [Deps] update `call-bind-apply-helpers`, `es-object-atoms`, `get-proto` [`a341fee`](https://github.com/ljharb/get-intrinsic/commit/a341fee0f39a403b0f0069e82c97642d5eb11043) +- [New] add `Float16Array` [`de22116`](https://github.com/ljharb/get-intrinsic/commit/de22116b492fb989a0341bceb6e573abfaed73dc) + +## [v1.2.7](https://github.com/ljharb/get-intrinsic/compare/v1.2.6...v1.2.7) - 2025-01-02 + +### Commits + +- [Refactor] use `get-proto` directly [`00ab955`](https://github.com/ljharb/get-intrinsic/commit/00ab95546a0980c8ad42a84253daaa8d2adcedf9) +- [Deps] update `math-intrinsics` [`c716cdd`](https://github.com/ljharb/get-intrinsic/commit/c716cdd6bbe36b438057025561b8bb5a879ac8a0) +- [Dev Deps] update `call-bound`, `es-abstract` [`dc648a6`](https://github.com/ljharb/get-intrinsic/commit/dc648a67eb359037dff8d8619bfa71d86debccb1) + +## [v1.2.6](https://github.com/ljharb/get-intrinsic/compare/v1.2.5...v1.2.6) - 2024-12-11 + +### Commits + +- [Refactor] use `math-intrinsics` [`841be86`](https://github.com/ljharb/get-intrinsic/commit/841be8641a9254c4c75483b30c8871b5d5065926) +- [Refactor] use `es-object-atoms` [`42057df`](https://github.com/ljharb/get-intrinsic/commit/42057dfa16f66f64787e66482af381cc6f31d2c1) +- [Deps] update `call-bind-apply-helpers` [`45afa24`](https://github.com/ljharb/get-intrinsic/commit/45afa24a9ee4d6d3c172db1f555b16cb27843ef4) +- [Dev Deps] update `call-bound` [`9cba9c6`](https://github.com/ljharb/get-intrinsic/commit/9cba9c6e70212bc163b7a5529cb25df46071646f) + +## [v1.2.5](https://github.com/ljharb/get-intrinsic/compare/v1.2.4...v1.2.5) - 2024-12-06 + +### Commits + +- [actions] split out node 10-20, and 20+ [`6e2b9dd`](https://github.com/ljharb/get-intrinsic/commit/6e2b9dd23902665681ebe453256ccfe21d7966f0) +- [Refactor] use `dunder-proto` and `call-bind-apply-helpers` instead of `has-proto` [`c095d17`](https://github.com/ljharb/get-intrinsic/commit/c095d179ad0f4fbfff20c8a3e0cb4fe668018998) +- [Refactor] use `gopd` [`9841d5b`](https://github.com/ljharb/get-intrinsic/commit/9841d5b35f7ab4fd2d193f0c741a50a077920e90) +- [Dev Deps] update `@ljharb/eslint-config`, `auto-changelog`, `es-abstract`, `es-value-fixtures`, `gopd`, `mock-property`, `object-inspect`, `tape` [`2d07e01`](https://github.com/ljharb/get-intrinsic/commit/2d07e01310cee2cbaedfead6903df128b1f5d425) +- [Deps] update `gopd`, `has-proto`, `has-symbols`, `hasown` [`974d8bf`](https://github.com/ljharb/get-intrinsic/commit/974d8bf5baad7939eef35c25cc1dd88c10a30fa6) +- [Dev Deps] update `call-bind`, `es-abstract`, `tape` [`df9dde1`](https://github.com/ljharb/get-intrinsic/commit/df9dde178186631ab8a3165ede056549918ce4bc) +- [Refactor] cache `es-define-property` as well [`43ef543`](https://github.com/ljharb/get-intrinsic/commit/43ef543cb02194401420e3a914a4ca9168691926) +- [Deps] update `has-proto`, `has-symbols`, `hasown` [`ad4949d`](https://github.com/ljharb/get-intrinsic/commit/ad4949d5467316505aad89bf75f9417ed782f7af) +- [Tests] use `call-bound` directly [`ad5c406`](https://github.com/ljharb/get-intrinsic/commit/ad5c4069774bfe90e520a35eead5fe5ca9d69e80) +- [Deps] update `has-proto`, `hasown` [`45414ca`](https://github.com/ljharb/get-intrinsic/commit/45414caa312333a2798953682c68f85c550627dd) +- [Tests] replace `aud` with `npm audit` [`18d3509`](https://github.com/ljharb/get-intrinsic/commit/18d3509f79460e7924da70409ee81e5053087523) +- [Deps] update `es-define-property` [`aadaa3b`](https://github.com/ljharb/get-intrinsic/commit/aadaa3b2188d77ad9bff394ce5d4249c49eb21f5) +- [Dev Deps] add missing peer dep [`c296a16`](https://github.com/ljharb/get-intrinsic/commit/c296a16246d0c9a5981944f4cc5cf61fbda0cf6a) + +## [v1.2.4](https://github.com/ljharb/get-intrinsic/compare/v1.2.3...v1.2.4) - 2024-02-05 + +### Commits + +- [Refactor] use all 7 <+ ES6 Errors from `es-errors` [`bcac811`](https://github.com/ljharb/get-intrinsic/commit/bcac811abdc1c982e12abf848a410d6aae148d14) + +## [v1.2.3](https://github.com/ljharb/get-intrinsic/compare/v1.2.2...v1.2.3) - 2024-02-03 + +### Commits + +- [Refactor] use `es-errors`, so things that only need those do not need `get-intrinsic` [`f11db9c`](https://github.com/ljharb/get-intrinsic/commit/f11db9c4fb97d87bbd53d3c73ac6b3db3613ad3b) +- [Dev Deps] update `aud`, `es-abstract`, `mock-property`, `npmignore` [`b7ac7d1`](https://github.com/ljharb/get-intrinsic/commit/b7ac7d1616fefb03877b1aed0c8f8d61aad32b6c) +- [meta] simplify `exports` [`faa0cc6`](https://github.com/ljharb/get-intrinsic/commit/faa0cc618e2830ffb51a8202490b0c215d965cbc) +- [meta] add missing `engines.node` [`774dd0b`](https://github.com/ljharb/get-intrinsic/commit/774dd0b3e8f741c3f05a6322d124d6087f146af1) +- [Dev Deps] update `tape` [`5828e8e`](https://github.com/ljharb/get-intrinsic/commit/5828e8e4a04e69312e87a36c0ea39428a7a4c3d8) +- [Robustness] use null objects for lookups [`eb9a11f`](https://github.com/ljharb/get-intrinsic/commit/eb9a11fa9eb3e13b193fcc05a7fb814341b1a7b7) +- [meta] add `sideEffects` flag [`89bcc7a`](https://github.com/ljharb/get-intrinsic/commit/89bcc7a42e19bf07b7c21e3094d5ab177109e6d2) + +## [v1.2.2](https://github.com/ljharb/get-intrinsic/compare/v1.2.1...v1.2.2) - 2023-10-20 + +### Commits + +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `call-bind`, `es-abstract`, `mock-property`, `object-inspect`, `tape` [`f51bcf2`](https://github.com/ljharb/get-intrinsic/commit/f51bcf26412d58d17ce17c91c9afd0ad271f0762) +- [Refactor] use `hasown` instead of `has` [`18d14b7`](https://github.com/ljharb/get-intrinsic/commit/18d14b799bea6b5765e1cec91890830cbcdb0587) +- [Deps] update `function-bind` [`6e109c8`](https://github.com/ljharb/get-intrinsic/commit/6e109c81e03804cc5e7824fb64353cdc3d8ee2c7) + +## [v1.2.1](https://github.com/ljharb/get-intrinsic/compare/v1.2.0...v1.2.1) - 2023-05-13 + +### Commits + +- [Fix] avoid a crash in envs without `__proto__` [`7bad8d0`](https://github.com/ljharb/get-intrinsic/commit/7bad8d061bf8721733b58b73a2565af2b6756b64) +- [Dev Deps] update `es-abstract` [`c60e6b7`](https://github.com/ljharb/get-intrinsic/commit/c60e6b7b4cf9660c7f27ed970970fd55fac48dc5) + +## [v1.2.0](https://github.com/ljharb/get-intrinsic/compare/v1.1.3...v1.2.0) - 2023-01-19 + +### Commits + +- [actions] update checkout action [`ca6b12f`](https://github.com/ljharb/get-intrinsic/commit/ca6b12f31eaacea4ea3b055e744cd61623385ffb) +- [Dev Deps] update `@ljharb/eslint-config`, `es-abstract`, `object-inspect`, `tape` [`41a3727`](https://github.com/ljharb/get-intrinsic/commit/41a3727d0026fa04273ae216a5f8e12eefd72da8) +- [Fix] ensure `Error.prototype` is undeniable [`c511e97`](https://github.com/ljharb/get-intrinsic/commit/c511e97ae99c764c4524b540dee7a70757af8da3) +- [Dev Deps] update `aud`, `es-abstract`, `tape` [`1bef8a8`](https://github.com/ljharb/get-intrinsic/commit/1bef8a8fd439ebb80863199b6189199e0851ac67) +- [Dev Deps] update `aud`, `es-abstract` [`0d41f16`](https://github.com/ljharb/get-intrinsic/commit/0d41f16bcd500bc28b7bfc98043ebf61ea081c26) +- [New] add `BigInt64Array` and `BigUint64Array` [`a6cca25`](https://github.com/ljharb/get-intrinsic/commit/a6cca25f29635889b7e9bd669baf9e04be90e48c) +- [Tests] use `gopd` [`ecf7722`](https://github.com/ljharb/get-intrinsic/commit/ecf7722240d15cfd16edda06acf63359c10fb9bd) + +## [v1.1.3](https://github.com/ljharb/get-intrinsic/compare/v1.1.2...v1.1.3) - 2022-09-12 + +### Commits + +- [Dev Deps] update `es-abstract`, `es-value-fixtures`, `tape` [`07ff291`](https://github.com/ljharb/get-intrinsic/commit/07ff291816406ebe5a12d7f16965bde0942dd688) +- [Fix] properly check for % signs [`50ac176`](https://github.com/ljharb/get-intrinsic/commit/50ac1760fe99c227e64eabde76e9c0e44cd881b5) + +## [v1.1.2](https://github.com/ljharb/get-intrinsic/compare/v1.1.1...v1.1.2) - 2022-06-08 + +### Fixed + +- [Fix] properly validate against extra % signs [`#16`](https://github.com/ljharb/get-intrinsic/issues/16) + +### Commits + +- [actions] reuse common workflows [`0972547`](https://github.com/ljharb/get-intrinsic/commit/0972547efd0abc863fe4c445a6ca7eb4f8c6901d) +- [meta] use `npmignore` to autogenerate an npmignore file [`5ba0b51`](https://github.com/ljharb/get-intrinsic/commit/5ba0b51d8d8d4f1c31d426d74abc0770fd106bad) +- [actions] use `node/install` instead of `node/run`; use `codecov` action [`c364492`](https://github.com/ljharb/get-intrinsic/commit/c364492af4af51333e6f81c0bf21fd3d602c3661) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `es-abstract`, `object-inspect`, `tape` [`dc04dad`](https://github.com/ljharb/get-intrinsic/commit/dc04dad86f6e5608775a2640cb0db5927ae29ed9) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `es-abstract`, `object-inspect`, `safe-publish-latest`, `tape` [`1c14059`](https://github.com/ljharb/get-intrinsic/commit/1c1405984e86dd2dc9366c15d8a0294a96a146a5) +- [Tests] use `mock-property` [`b396ef0`](https://github.com/ljharb/get-intrinsic/commit/b396ef05bb73b1d699811abd64b0d9b97997fdda) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `object-inspect`, `tape` [`c2c758d`](https://github.com/ljharb/get-intrinsic/commit/c2c758d3b90af4fef0a76910d8d3c292ec8d1d3e) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `es-abstract`, `es-value-fixtures`, `object-inspect`, `tape` [`29e3c09`](https://github.com/ljharb/get-intrinsic/commit/29e3c091c2bf3e17099969847e8729d0e46896de) +- [actions] update codecov uploader [`8cbc141`](https://github.com/ljharb/get-intrinsic/commit/8cbc1418940d7a8941f3a7985cbc4ac095c5e13d) +- [Dev Deps] update `@ljharb/eslint-config`, `es-abstract`, `es-value-fixtures`, `object-inspect`, `tape` [`10b6f5c`](https://github.com/ljharb/get-intrinsic/commit/10b6f5c02593fb3680c581d696ac124e30652932) +- [readme] add github actions/codecov badges [`4e25400`](https://github.com/ljharb/get-intrinsic/commit/4e25400d9f51ae9eb059cbe22d9144e70ea214e8) +- [Tests] use `for-each` instead of `foreach` [`c05b957`](https://github.com/ljharb/get-intrinsic/commit/c05b957ad9a7bc7721af7cc9e9be1edbfe057496) +- [Dev Deps] update `es-abstract` [`29b05ae`](https://github.com/ljharb/get-intrinsic/commit/29b05aec3e7330e9ad0b8e0f685a9112c20cdd97) +- [meta] use `prepublishOnly` script for npm 7+ [`95c285d`](https://github.com/ljharb/get-intrinsic/commit/95c285da810516057d3bbfa871176031af38f05d) +- [Deps] update `has-symbols` [`593cb4f`](https://github.com/ljharb/get-intrinsic/commit/593cb4fb38e7922e40e42c183f45274b636424cd) +- [readme] fix repo URLs [`1c8305b`](https://github.com/ljharb/get-intrinsic/commit/1c8305b5365827c9b6fc785434aac0e1328ff2f5) +- [Deps] update `has-symbols` [`c7138b6`](https://github.com/ljharb/get-intrinsic/commit/c7138b6c6d73132d859471fb8c13304e1e7c8b20) +- [Dev Deps] remove unused `has-bigints` [`bd63aff`](https://github.com/ljharb/get-intrinsic/commit/bd63aff6ad8f3a986c557fcda2914187bdaab359) + +## [v1.1.1](https://github.com/ljharb/get-intrinsic/compare/v1.1.0...v1.1.1) - 2021-02-03 + +### Fixed + +- [meta] export `./package.json` [`#9`](https://github.com/ljharb/get-intrinsic/issues/9) + +### Commits + +- [readme] flesh out the readme; use `evalmd` [`d12f12c`](https://github.com/ljharb/get-intrinsic/commit/d12f12c15345a0a0772cc65a7c64369529abd614) +- [eslint] set up proper globals config [`5a8c098`](https://github.com/ljharb/get-intrinsic/commit/5a8c0984e3319d1ac0e64b102f8ec18b64e79f36) +- [Dev Deps] update `eslint` [`7b9a5c0`](https://github.com/ljharb/get-intrinsic/commit/7b9a5c0d31a90ca1a1234181c74988fb046701cd) + +## [v1.1.0](https://github.com/ljharb/get-intrinsic/compare/v1.0.2...v1.1.0) - 2021-01-25 + +### Fixed + +- [Refactor] delay `Function` eval until syntax-derived values are requested [`#3`](https://github.com/ljharb/get-intrinsic/issues/3) + +### Commits + +- [Tests] migrate tests to Github Actions [`2ab762b`](https://github.com/ljharb/get-intrinsic/commit/2ab762b48164aea8af37a40ba105bbc8246ab8c4) +- [meta] do not publish github action workflow files [`5e7108e`](https://github.com/ljharb/get-intrinsic/commit/5e7108e4768b244d48d9567ba4f8a6cab9c65b8e) +- [Tests] add some coverage [`01ac7a8`](https://github.com/ljharb/get-intrinsic/commit/01ac7a87ac29738567e8524cd8c9e026b1fa8cb3) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `call-bind`, `es-abstract`, `tape`; add `call-bind` [`911b672`](https://github.com/ljharb/get-intrinsic/commit/911b672fbffae433a96924c6ce013585e425f4b7) +- [Refactor] rearrange evalled constructors a bit [`7e7e4bf`](https://github.com/ljharb/get-intrinsic/commit/7e7e4bf583f3799c8ac1c6c5e10d2cb553957347) +- [meta] add Automatic Rebase and Require Allow Edits workflows [`0199968`](https://github.com/ljharb/get-intrinsic/commit/01999687a263ffce0a3cb011dfbcb761754aedbc) + +## [v1.0.2](https://github.com/ljharb/get-intrinsic/compare/v1.0.1...v1.0.2) - 2020-12-17 + +### Commits + +- [Fix] Throw for non‑existent intrinsics [`68f873b`](https://github.com/ljharb/get-intrinsic/commit/68f873b013c732a05ad6f5fc54f697e55515461b) +- [Fix] Throw for non‑existent segments in the intrinsic path [`8325dee`](https://github.com/ljharb/get-intrinsic/commit/8325deee43128f3654d3399aa9591741ebe17b21) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-bigints`, `object-inspect` [`0c227a7`](https://github.com/ljharb/get-intrinsic/commit/0c227a7d8b629166f25715fd242553892e458525) +- [meta] do not lint coverage output [`70d2419`](https://github.com/ljharb/get-intrinsic/commit/70d24199b620043cd9110fc5f426d214ebe21dc9) + +## [v1.0.1](https://github.com/ljharb/get-intrinsic/compare/v1.0.0...v1.0.1) - 2020-10-30 + +### Commits + +- [Tests] gather coverage data on every job [`d1d280d`](https://github.com/ljharb/get-intrinsic/commit/d1d280dec714e3f0519cc877dbcb193057d9cac6) +- [Fix] add missing dependencies [`5031771`](https://github.com/ljharb/get-intrinsic/commit/5031771bb1095b38be88ce7c41d5de88718e432e) +- [Tests] use `es-value-fixtures` [`af48765`](https://github.com/ljharb/get-intrinsic/commit/af48765a23c5323fb0b6b38dbf00eb5099c7bebc) + +## v1.0.0 - 2020-10-29 + +### Commits + +- Implementation [`bbce57c`](https://github.com/ljharb/get-intrinsic/commit/bbce57c6f33d05b2d8d3efa273ceeb3ee01127bb) +- Tests [`17b4f0d`](https://github.com/ljharb/get-intrinsic/commit/17b4f0d56dea6b4059b56fc30ef3ee4d9500ebc2) +- Initial commit [`3153294`](https://github.com/ljharb/get-intrinsic/commit/31532948de363b0a27dd9fd4649e7b7028ec4b44) +- npm init [`fb326c4`](https://github.com/ljharb/get-intrinsic/commit/fb326c4d2817c8419ec31de1295f06bb268a7902) +- [meta] add Automatic Rebase and Require Allow Edits workflows [`48862fb`](https://github.com/ljharb/get-intrinsic/commit/48862fb2508c8f6a57968e6d08b7c883afc9d550) +- [meta] add `auto-changelog` [`5f28ad0`](https://github.com/ljharb/get-intrinsic/commit/5f28ad019e060a353d8028f9f2591a9cc93074a1) +- [meta] add "funding"; create `FUNDING.yml` [`c2bbdde`](https://github.com/ljharb/get-intrinsic/commit/c2bbddeba73a875be61484ee4680b129a6d4e0a1) +- [Tests] add `npm run lint` [`0a84b98`](https://github.com/ljharb/get-intrinsic/commit/0a84b98b22b7cf7a748666f705b0003a493c35fd) +- Only apps should have lockfiles [`9586c75`](https://github.com/ljharb/get-intrinsic/commit/9586c75866c1ee678e4d5d4dbbdef6997e511b05) diff --git a/node_modules/get-intrinsic/LICENSE b/node_modules/get-intrinsic/LICENSE new file mode 100644 index 0000000..48f05d0 --- /dev/null +++ b/node_modules/get-intrinsic/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/get-intrinsic/README.md b/node_modules/get-intrinsic/README.md new file mode 100644 index 0000000..3aa0bba --- /dev/null +++ b/node_modules/get-intrinsic/README.md @@ -0,0 +1,71 @@ +# get-intrinsic <sup>[![Version Badge][npm-version-svg]][package-url]</sup> + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Get and robustly cache all JS language-level intrinsics at first require time. + +See the syntax described [in the JS spec](https://tc39.es/ecma262/#sec-well-known-intrinsic-objects) for reference. + +## Example + +```js +var GetIntrinsic = require('get-intrinsic'); +var assert = require('assert'); + +// static methods +assert.equal(GetIntrinsic('%Math.pow%'), Math.pow); +assert.equal(Math.pow(2, 3), 8); +assert.equal(GetIntrinsic('%Math.pow%')(2, 3), 8); +delete Math.pow; +assert.equal(GetIntrinsic('%Math.pow%')(2, 3), 8); + +// instance methods +var arr = [1]; +assert.equal(GetIntrinsic('%Array.prototype.push%'), Array.prototype.push); +assert.deepEqual(arr, [1]); + +arr.push(2); +assert.deepEqual(arr, [1, 2]); + +GetIntrinsic('%Array.prototype.push%').call(arr, 3); +assert.deepEqual(arr, [1, 2, 3]); + +delete Array.prototype.push; +GetIntrinsic('%Array.prototype.push%').call(arr, 4); +assert.deepEqual(arr, [1, 2, 3, 4]); + +// missing features +delete JSON.parse; // to simulate a real intrinsic that is missing in the environment +assert.throws(() => GetIntrinsic('%JSON.parse%')); +assert.equal(undefined, GetIntrinsic('%JSON.parse%', true)); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/get-intrinsic +[npm-version-svg]: https://versionbadg.es/ljharb/get-intrinsic.svg +[deps-svg]: https://david-dm.org/ljharb/get-intrinsic.svg +[deps-url]: https://david-dm.org/ljharb/get-intrinsic +[dev-deps-svg]: https://david-dm.org/ljharb/get-intrinsic/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/get-intrinsic#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/get-intrinsic.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/get-intrinsic.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/get-intrinsic.svg +[downloads-url]: https://npm-stat.com/charts.html?package=get-intrinsic +[codecov-image]: https://codecov.io/gh/ljharb/get-intrinsic/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/get-intrinsic/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/get-intrinsic +[actions-url]: https://github.com/ljharb/get-intrinsic/actions diff --git a/node_modules/get-intrinsic/index.js b/node_modules/get-intrinsic/index.js new file mode 100644 index 0000000..bd1d94b --- /dev/null +++ b/node_modules/get-intrinsic/index.js @@ -0,0 +1,378 @@ +'use strict'; + +var undefined; + +var $Object = require('es-object-atoms'); + +var $Error = require('es-errors'); +var $EvalError = require('es-errors/eval'); +var $RangeError = require('es-errors/range'); +var $ReferenceError = require('es-errors/ref'); +var $SyntaxError = require('es-errors/syntax'); +var $TypeError = require('es-errors/type'); +var $URIError = require('es-errors/uri'); + +var abs = require('math-intrinsics/abs'); +var floor = require('math-intrinsics/floor'); +var max = require('math-intrinsics/max'); +var min = require('math-intrinsics/min'); +var pow = require('math-intrinsics/pow'); +var round = require('math-intrinsics/round'); +var sign = require('math-intrinsics/sign'); + +var $Function = Function; + +// eslint-disable-next-line consistent-return +var getEvalledConstructor = function (expressionSyntax) { + try { + return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')(); + } catch (e) {} +}; + +var $gOPD = require('gopd'); +var $defineProperty = require('es-define-property'); + +var throwTypeError = function () { + throw new $TypeError(); +}; +var ThrowTypeError = $gOPD + ? (function () { + try { + // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties + arguments.callee; // IE 8 does not throw here + return throwTypeError; + } catch (calleeThrows) { + try { + // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') + return $gOPD(arguments, 'callee').get; + } catch (gOPDthrows) { + return throwTypeError; + } + } + }()) + : throwTypeError; + +var hasSymbols = require('has-symbols')(); + +var getProto = require('get-proto'); +var $ObjectGPO = require('get-proto/Object.getPrototypeOf'); +var $ReflectGPO = require('get-proto/Reflect.getPrototypeOf'); + +var $apply = require('call-bind-apply-helpers/functionApply'); +var $call = require('call-bind-apply-helpers/functionCall'); + +var needsEval = {}; + +var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array); + +var INTRINSICS = { + __proto__: null, + '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError, + '%Array%': Array, + '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer, + '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined, + '%AsyncFromSyncIteratorPrototype%': undefined, + '%AsyncFunction%': needsEval, + '%AsyncGenerator%': needsEval, + '%AsyncGeneratorFunction%': needsEval, + '%AsyncIteratorPrototype%': needsEval, + '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics, + '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt, + '%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array, + '%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array, + '%Boolean%': Boolean, + '%DataView%': typeof DataView === 'undefined' ? undefined : DataView, + '%Date%': Date, + '%decodeURI%': decodeURI, + '%decodeURIComponent%': decodeURIComponent, + '%encodeURI%': encodeURI, + '%encodeURIComponent%': encodeURIComponent, + '%Error%': $Error, + '%eval%': eval, // eslint-disable-line no-eval + '%EvalError%': $EvalError, + '%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array, + '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array, + '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array, + '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry, + '%Function%': $Function, + '%GeneratorFunction%': needsEval, + '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array, + '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array, + '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array, + '%isFinite%': isFinite, + '%isNaN%': isNaN, + '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined, + '%JSON%': typeof JSON === 'object' ? JSON : undefined, + '%Map%': typeof Map === 'undefined' ? undefined : Map, + '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()), + '%Math%': Math, + '%Number%': Number, + '%Object%': $Object, + '%Object.getOwnPropertyDescriptor%': $gOPD, + '%parseFloat%': parseFloat, + '%parseInt%': parseInt, + '%Promise%': typeof Promise === 'undefined' ? undefined : Promise, + '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy, + '%RangeError%': $RangeError, + '%ReferenceError%': $ReferenceError, + '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect, + '%RegExp%': RegExp, + '%Set%': typeof Set === 'undefined' ? undefined : Set, + '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()), + '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer, + '%String%': String, + '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined, + '%Symbol%': hasSymbols ? Symbol : undefined, + '%SyntaxError%': $SyntaxError, + '%ThrowTypeError%': ThrowTypeError, + '%TypedArray%': TypedArray, + '%TypeError%': $TypeError, + '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array, + '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray, + '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array, + '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array, + '%URIError%': $URIError, + '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap, + '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef, + '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet, + + '%Function.prototype.call%': $call, + '%Function.prototype.apply%': $apply, + '%Object.defineProperty%': $defineProperty, + '%Object.getPrototypeOf%': $ObjectGPO, + '%Math.abs%': abs, + '%Math.floor%': floor, + '%Math.max%': max, + '%Math.min%': min, + '%Math.pow%': pow, + '%Math.round%': round, + '%Math.sign%': sign, + '%Reflect.getPrototypeOf%': $ReflectGPO +}; + +if (getProto) { + try { + null.error; // eslint-disable-line no-unused-expressions + } catch (e) { + // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229 + var errorProto = getProto(getProto(e)); + INTRINSICS['%Error.prototype%'] = errorProto; + } +} + +var doEval = function doEval(name) { + var value; + if (name === '%AsyncFunction%') { + value = getEvalledConstructor('async function () {}'); + } else if (name === '%GeneratorFunction%') { + value = getEvalledConstructor('function* () {}'); + } else if (name === '%AsyncGeneratorFunction%') { + value = getEvalledConstructor('async function* () {}'); + } else if (name === '%AsyncGenerator%') { + var fn = doEval('%AsyncGeneratorFunction%'); + if (fn) { + value = fn.prototype; + } + } else if (name === '%AsyncIteratorPrototype%') { + var gen = doEval('%AsyncGenerator%'); + if (gen && getProto) { + value = getProto(gen.prototype); + } + } + + INTRINSICS[name] = value; + + return value; +}; + +var LEGACY_ALIASES = { + __proto__: null, + '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], + '%ArrayPrototype%': ['Array', 'prototype'], + '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], + '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'], + '%ArrayProto_keys%': ['Array', 'prototype', 'keys'], + '%ArrayProto_values%': ['Array', 'prototype', 'values'], + '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'], + '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'], + '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'], + '%BooleanPrototype%': ['Boolean', 'prototype'], + '%DataViewPrototype%': ['DataView', 'prototype'], + '%DatePrototype%': ['Date', 'prototype'], + '%ErrorPrototype%': ['Error', 'prototype'], + '%EvalErrorPrototype%': ['EvalError', 'prototype'], + '%Float32ArrayPrototype%': ['Float32Array', 'prototype'], + '%Float64ArrayPrototype%': ['Float64Array', 'prototype'], + '%FunctionPrototype%': ['Function', 'prototype'], + '%Generator%': ['GeneratorFunction', 'prototype'], + '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'], + '%Int8ArrayPrototype%': ['Int8Array', 'prototype'], + '%Int16ArrayPrototype%': ['Int16Array', 'prototype'], + '%Int32ArrayPrototype%': ['Int32Array', 'prototype'], + '%JSONParse%': ['JSON', 'parse'], + '%JSONStringify%': ['JSON', 'stringify'], + '%MapPrototype%': ['Map', 'prototype'], + '%NumberPrototype%': ['Number', 'prototype'], + '%ObjectPrototype%': ['Object', 'prototype'], + '%ObjProto_toString%': ['Object', 'prototype', 'toString'], + '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'], + '%PromisePrototype%': ['Promise', 'prototype'], + '%PromiseProto_then%': ['Promise', 'prototype', 'then'], + '%Promise_all%': ['Promise', 'all'], + '%Promise_reject%': ['Promise', 'reject'], + '%Promise_resolve%': ['Promise', 'resolve'], + '%RangeErrorPrototype%': ['RangeError', 'prototype'], + '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'], + '%RegExpPrototype%': ['RegExp', 'prototype'], + '%SetPrototype%': ['Set', 'prototype'], + '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'], + '%StringPrototype%': ['String', 'prototype'], + '%SymbolPrototype%': ['Symbol', 'prototype'], + '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'], + '%TypedArrayPrototype%': ['TypedArray', 'prototype'], + '%TypeErrorPrototype%': ['TypeError', 'prototype'], + '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'], + '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'], + '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'], + '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'], + '%URIErrorPrototype%': ['URIError', 'prototype'], + '%WeakMapPrototype%': ['WeakMap', 'prototype'], + '%WeakSetPrototype%': ['WeakSet', 'prototype'] +}; + +var bind = require('function-bind'); +var hasOwn = require('hasown'); +var $concat = bind.call($call, Array.prototype.concat); +var $spliceApply = bind.call($apply, Array.prototype.splice); +var $replace = bind.call($call, String.prototype.replace); +var $strSlice = bind.call($call, String.prototype.slice); +var $exec = bind.call($call, RegExp.prototype.exec); + +/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ +var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; +var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ +var stringToPath = function stringToPath(string) { + var first = $strSlice(string, 0, 1); + var last = $strSlice(string, -1); + if (first === '%' && last !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); + } else if (last === '%' && first !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); + } + var result = []; + $replace(string, rePropName, function (match, number, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; + }); + return result; +}; +/* end adaptation */ + +var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { + var intrinsicName = name; + var alias; + if (hasOwn(LEGACY_ALIASES, intrinsicName)) { + alias = LEGACY_ALIASES[intrinsicName]; + intrinsicName = '%' + alias[0] + '%'; + } + + if (hasOwn(INTRINSICS, intrinsicName)) { + var value = INTRINSICS[intrinsicName]; + if (value === needsEval) { + value = doEval(intrinsicName); + } + if (typeof value === 'undefined' && !allowMissing) { + throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); + } + + return { + alias: alias, + name: intrinsicName, + value: value + }; + } + + throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); +}; + +module.exports = function GetIntrinsic(name, allowMissing) { + if (typeof name !== 'string' || name.length === 0) { + throw new $TypeError('intrinsic name must be a non-empty string'); + } + if (arguments.length > 1 && typeof allowMissing !== 'boolean') { + throw new $TypeError('"allowMissing" argument must be a boolean'); + } + + if ($exec(/^%?[^%]*%?$/, name) === null) { + throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name'); + } + var parts = stringToPath(name); + var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; + + var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); + var intrinsicRealName = intrinsic.name; + var value = intrinsic.value; + var skipFurtherCaching = false; + + var alias = intrinsic.alias; + if (alias) { + intrinsicBaseName = alias[0]; + $spliceApply(parts, $concat([0, 1], alias)); + } + + for (var i = 1, isOwn = true; i < parts.length; i += 1) { + var part = parts[i]; + var first = $strSlice(part, 0, 1); + var last = $strSlice(part, -1); + if ( + ( + (first === '"' || first === "'" || first === '`') + || (last === '"' || last === "'" || last === '`') + ) + && first !== last + ) { + throw new $SyntaxError('property names with quotes must have matching quotes'); + } + if (part === 'constructor' || !isOwn) { + skipFurtherCaching = true; + } + + intrinsicBaseName += '.' + part; + intrinsicRealName = '%' + intrinsicBaseName + '%'; + + if (hasOwn(INTRINSICS, intrinsicRealName)) { + value = INTRINSICS[intrinsicRealName]; + } else if (value != null) { + if (!(part in value)) { + if (!allowMissing) { + throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); + } + return void undefined; + } + if ($gOPD && (i + 1) >= parts.length) { + var desc = $gOPD(value, part); + isOwn = !!desc; + + // By convention, when a data property is converted to an accessor + // property to emulate a data property that does not suffer from + // the override mistake, that accessor's getter is marked with + // an `originalValue` property. Here, when we detect this, we + // uphold the illusion by pretending to see that original data + // property, i.e., returning the value rather than the getter + // itself. + if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { + value = desc.get; + } else { + value = value[part]; + } + } else { + isOwn = hasOwn(value, part); + value = value[part]; + } + + if (isOwn && !skipFurtherCaching) { + INTRINSICS[intrinsicRealName] = value; + } + } + } + return value; +}; diff --git a/node_modules/get-intrinsic/package.json b/node_modules/get-intrinsic/package.json new file mode 100644 index 0000000..2828e73 --- /dev/null +++ b/node_modules/get-intrinsic/package.json @@ -0,0 +1,97 @@ +{ + "name": "get-intrinsic", + "version": "1.3.0", + "description": "Get and robustly cache all JS language-level intrinsics at first require time", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/get-intrinsic.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "es", + "js", + "intrinsic", + "getintrinsic", + "es-abstract" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/get-intrinsic/issues" + }, + "homepage": "https://github.com/ljharb/get-intrinsic#readme", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "auto-changelog": "^2.5.0", + "call-bound": "^1.0.3", + "encoding": "^0.1.13", + "es-abstract": "^1.23.9", + "es-value-fixtures": "^1.7.1", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.5", + "make-async-function": "^1.0.0", + "make-async-generator-function": "^1.0.0", + "make-generator-function": "^2.0.0", + "mock-property": "^1.1.0", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.4", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "testling": { + "files": "test/GetIntrinsic.js" + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/get-intrinsic/test/GetIntrinsic.js b/node_modules/get-intrinsic/test/GetIntrinsic.js new file mode 100644 index 0000000..d9c0f30 --- /dev/null +++ b/node_modules/get-intrinsic/test/GetIntrinsic.js @@ -0,0 +1,274 @@ +'use strict'; + +var GetIntrinsic = require('../'); + +var test = require('tape'); +var forEach = require('for-each'); +var debug = require('object-inspect'); +var generatorFns = require('make-generator-function')(); +var asyncFns = require('make-async-function').list(); +var asyncGenFns = require('make-async-generator-function')(); +var mockProperty = require('mock-property'); + +var callBound = require('call-bound'); +var v = require('es-value-fixtures'); +var $gOPD = require('gopd'); +var DefinePropertyOrThrow = require('es-abstract/2023/DefinePropertyOrThrow'); + +var $isProto = callBound('%Object.prototype.isPrototypeOf%'); + +test('export', function (t) { + t.equal(typeof GetIntrinsic, 'function', 'it is a function'); + t.equal(GetIntrinsic.length, 2, 'function has length of 2'); + + t.end(); +}); + +test('throws', function (t) { + t['throws']( + function () { GetIntrinsic('not an intrinsic'); }, + SyntaxError, + 'nonexistent intrinsic throws a syntax error' + ); + + t['throws']( + function () { GetIntrinsic(''); }, + TypeError, + 'empty string intrinsic throws a type error' + ); + + t['throws']( + function () { GetIntrinsic('.'); }, + SyntaxError, + '"just a dot" intrinsic throws a syntax error' + ); + + t['throws']( + function () { GetIntrinsic('%String'); }, + SyntaxError, + 'Leading % without trailing % throws a syntax error' + ); + + t['throws']( + function () { GetIntrinsic('String%'); }, + SyntaxError, + 'Trailing % without leading % throws a syntax error' + ); + + t['throws']( + function () { GetIntrinsic("String['prototype]"); }, + SyntaxError, + 'Dynamic property access is disallowed for intrinsics (unterminated string)' + ); + + t['throws']( + function () { GetIntrinsic('%Proxy.prototype.undefined%'); }, + TypeError, + "Throws when middle part doesn't exist (%Proxy.prototype.undefined%)" + ); + + t['throws']( + function () { GetIntrinsic('%Array.prototype%garbage%'); }, + SyntaxError, + 'Throws with extra percent signs' + ); + + t['throws']( + function () { GetIntrinsic('%Array.prototype%push%'); }, + SyntaxError, + 'Throws with extra percent signs, even on an existing intrinsic' + ); + + forEach(v.nonStrings, function (nonString) { + t['throws']( + function () { GetIntrinsic(nonString); }, + TypeError, + debug(nonString) + ' is not a String' + ); + }); + + forEach(v.nonBooleans, function (nonBoolean) { + t['throws']( + function () { GetIntrinsic('%', nonBoolean); }, + TypeError, + debug(nonBoolean) + ' is not a Boolean' + ); + }); + + forEach([ + 'toString', + 'propertyIsEnumerable', + 'hasOwnProperty' + ], function (objectProtoMember) { + t['throws']( + function () { GetIntrinsic(objectProtoMember); }, + SyntaxError, + debug(objectProtoMember) + ' is not an intrinsic' + ); + }); + + t.end(); +}); + +test('base intrinsics', function (t) { + t.equal(GetIntrinsic('%Object%'), Object, '%Object% yields Object'); + t.equal(GetIntrinsic('Object'), Object, 'Object yields Object'); + t.equal(GetIntrinsic('%Array%'), Array, '%Array% yields Array'); + t.equal(GetIntrinsic('Array'), Array, 'Array yields Array'); + + t.end(); +}); + +test('dotted paths', function (t) { + t.equal(GetIntrinsic('%Object.prototype.toString%'), Object.prototype.toString, '%Object.prototype.toString% yields Object.prototype.toString'); + t.equal(GetIntrinsic('Object.prototype.toString'), Object.prototype.toString, 'Object.prototype.toString yields Object.prototype.toString'); + t.equal(GetIntrinsic('%Array.prototype.push%'), Array.prototype.push, '%Array.prototype.push% yields Array.prototype.push'); + t.equal(GetIntrinsic('Array.prototype.push'), Array.prototype.push, 'Array.prototype.push yields Array.prototype.push'); + + test('underscore paths are aliases for dotted paths', { skip: !Object.isFrozen || Object.isFrozen(Object.prototype) }, function (st) { + var original = GetIntrinsic('%ObjProto_toString%'); + + forEach([ + '%Object.prototype.toString%', + 'Object.prototype.toString', + '%ObjectPrototype.toString%', + 'ObjectPrototype.toString', + '%ObjProto_toString%', + 'ObjProto_toString' + ], function (name) { + DefinePropertyOrThrow(Object.prototype, 'toString', { + '[[Value]]': function toString() { + return original.apply(this, arguments); + } + }); + st.equal(GetIntrinsic(name), original, name + ' yields original Object.prototype.toString'); + }); + + DefinePropertyOrThrow(Object.prototype, 'toString', { '[[Value]]': original }); + st.end(); + }); + + test('dotted paths cache', { skip: !Object.isFrozen || Object.isFrozen(Object.prototype) }, function (st) { + var original = GetIntrinsic('%Object.prototype.propertyIsEnumerable%'); + + forEach([ + '%Object.prototype.propertyIsEnumerable%', + 'Object.prototype.propertyIsEnumerable', + '%ObjectPrototype.propertyIsEnumerable%', + 'ObjectPrototype.propertyIsEnumerable' + ], function (name) { + var restore = mockProperty(Object.prototype, 'propertyIsEnumerable', { + value: function propertyIsEnumerable() { + return original.apply(this, arguments); + } + }); + st.equal(GetIntrinsic(name), original, name + ' yields cached Object.prototype.propertyIsEnumerable'); + + restore(); + }); + + st.end(); + }); + + test('dotted path reports correct error', function (st) { + st['throws'](function () { + GetIntrinsic('%NonExistentIntrinsic.prototype.property%'); + }, /%NonExistentIntrinsic%/, 'The base intrinsic of %NonExistentIntrinsic.prototype.property% is %NonExistentIntrinsic%'); + + st['throws'](function () { + GetIntrinsic('%NonExistentIntrinsicPrototype.property%'); + }, /%NonExistentIntrinsicPrototype%/, 'The base intrinsic of %NonExistentIntrinsicPrototype.property% is %NonExistentIntrinsicPrototype%'); + + st.end(); + }); + + t.end(); +}); + +test('accessors', { skip: !$gOPD || typeof Map !== 'function' }, function (t) { + var actual = $gOPD(Map.prototype, 'size'); + t.ok(actual, 'Map.prototype.size has a descriptor'); + t.equal(typeof actual.get, 'function', 'Map.prototype.size has a getter function'); + t.equal(GetIntrinsic('%Map.prototype.size%'), actual.get, '%Map.prototype.size% yields the getter for it'); + t.equal(GetIntrinsic('Map.prototype.size'), actual.get, 'Map.prototype.size yields the getter for it'); + + t.end(); +}); + +test('generator functions', { skip: !generatorFns.length }, function (t) { + var $GeneratorFunction = GetIntrinsic('%GeneratorFunction%'); + var $GeneratorFunctionPrototype = GetIntrinsic('%Generator%'); + var $GeneratorPrototype = GetIntrinsic('%GeneratorPrototype%'); + + forEach(generatorFns, function (genFn) { + var fnName = genFn.name; + fnName = fnName ? "'" + fnName + "'" : 'genFn'; + + t.ok(genFn instanceof $GeneratorFunction, fnName + ' instanceof %GeneratorFunction%'); + t.ok($isProto($GeneratorFunctionPrototype, genFn), '%Generator% is prototype of ' + fnName); + t.ok($isProto($GeneratorPrototype, genFn.prototype), '%GeneratorPrototype% is prototype of ' + fnName + '.prototype'); + }); + + t.end(); +}); + +test('async functions', { skip: !asyncFns.length }, function (t) { + var $AsyncFunction = GetIntrinsic('%AsyncFunction%'); + var $AsyncFunctionPrototype = GetIntrinsic('%AsyncFunctionPrototype%'); + + forEach(asyncFns, function (asyncFn) { + var fnName = asyncFn.name; + fnName = fnName ? "'" + fnName + "'" : 'asyncFn'; + + t.ok(asyncFn instanceof $AsyncFunction, fnName + ' instanceof %AsyncFunction%'); + t.ok($isProto($AsyncFunctionPrototype, asyncFn), '%AsyncFunctionPrototype% is prototype of ' + fnName); + }); + + t.end(); +}); + +test('async generator functions', { skip: asyncGenFns.length === 0 }, function (t) { + var $AsyncGeneratorFunction = GetIntrinsic('%AsyncGeneratorFunction%'); + var $AsyncGeneratorFunctionPrototype = GetIntrinsic('%AsyncGenerator%'); + var $AsyncGeneratorPrototype = GetIntrinsic('%AsyncGeneratorPrototype%'); + + forEach(asyncGenFns, function (asyncGenFn) { + var fnName = asyncGenFn.name; + fnName = fnName ? "'" + fnName + "'" : 'asyncGenFn'; + + t.ok(asyncGenFn instanceof $AsyncGeneratorFunction, fnName + ' instanceof %AsyncGeneratorFunction%'); + t.ok($isProto($AsyncGeneratorFunctionPrototype, asyncGenFn), '%AsyncGenerator% is prototype of ' + fnName); + t.ok($isProto($AsyncGeneratorPrototype, asyncGenFn.prototype), '%AsyncGeneratorPrototype% is prototype of ' + fnName + '.prototype'); + }); + + t.end(); +}); + +test('%ThrowTypeError%', function (t) { + var $ThrowTypeError = GetIntrinsic('%ThrowTypeError%'); + + t.equal(typeof $ThrowTypeError, 'function', 'is a function'); + t['throws']( + $ThrowTypeError, + TypeError, + '%ThrowTypeError% throws a TypeError' + ); + + t.end(); +}); + +test('allowMissing', { skip: asyncGenFns.length > 0 }, function (t) { + t['throws']( + function () { GetIntrinsic('%AsyncGeneratorPrototype%'); }, + TypeError, + 'throws when missing' + ); + + t.equal( + GetIntrinsic('%AsyncGeneratorPrototype%', true), + undefined, + 'does not throw when allowMissing' + ); + + t.end(); +}); diff --git a/node_modules/get-proto/.eslintrc b/node_modules/get-proto/.eslintrc new file mode 100644 index 0000000..1d21a8a --- /dev/null +++ b/node_modules/get-proto/.eslintrc @@ -0,0 +1,10 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "id-length": "off", + "sort-keys": "off", + }, +} diff --git a/node_modules/get-proto/.github/FUNDING.yml b/node_modules/get-proto/.github/FUNDING.yml new file mode 100644 index 0000000..93183ef --- /dev/null +++ b/node_modules/get-proto/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/get-proto +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/get-proto/.nycrc b/node_modules/get-proto/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/node_modules/get-proto/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/get-proto/CHANGELOG.md b/node_modules/get-proto/CHANGELOG.md new file mode 100644 index 0000000..5860229 --- /dev/null +++ b/node_modules/get-proto/CHANGELOG.md @@ -0,0 +1,21 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/ljharb/get-proto/compare/v1.0.0...v1.0.1) - 2025-01-02 + +### Commits + +- [Fix] for the `Object.getPrototypeOf` window, throw for non-objects [`7fe6508`](https://github.com/ljharb/get-proto/commit/7fe6508b71419ebe1976bedb86001d1feaeaa49a) + +## v1.0.0 - 2025-01-01 + +### Commits + +- Initial implementation, tests, readme, types [`5c70775`](https://github.com/ljharb/get-proto/commit/5c707751e81c3deeb2cf980d185fc7fd43611415) +- Initial commit [`7c65c2a`](https://github.com/ljharb/get-proto/commit/7c65c2ad4e33d5dae2f219ebe1a046ae2256972c) +- npm init [`0b8cf82`](https://github.com/ljharb/get-proto/commit/0b8cf824c9634e4a34ef7dd2a2cdc5be6ac79518) +- Only apps should have lockfiles [`a6d1bff`](https://github.com/ljharb/get-proto/commit/a6d1bffc364f5828377cea7194558b2dbef7aea2) diff --git a/node_modules/get-proto/LICENSE b/node_modules/get-proto/LICENSE new file mode 100644 index 0000000..eeabd1c --- /dev/null +++ b/node_modules/get-proto/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/get-proto/Object.getPrototypeOf.d.ts b/node_modules/get-proto/Object.getPrototypeOf.d.ts new file mode 100644 index 0000000..028b3ff --- /dev/null +++ b/node_modules/get-proto/Object.getPrototypeOf.d.ts @@ -0,0 +1,5 @@ +declare function getProto<O extends object>(object: O): object | null; + +declare const x: typeof getProto | null; + +export = x; \ No newline at end of file diff --git a/node_modules/get-proto/Object.getPrototypeOf.js b/node_modules/get-proto/Object.getPrototypeOf.js new file mode 100644 index 0000000..c2cbbdf --- /dev/null +++ b/node_modules/get-proto/Object.getPrototypeOf.js @@ -0,0 +1,6 @@ +'use strict'; + +var $Object = require('es-object-atoms'); + +/** @type {import('./Object.getPrototypeOf')} */ +module.exports = $Object.getPrototypeOf || null; diff --git a/node_modules/get-proto/README.md b/node_modules/get-proto/README.md new file mode 100644 index 0000000..f8b4cce --- /dev/null +++ b/node_modules/get-proto/README.md @@ -0,0 +1,50 @@ +# get-proto <sup>[![Version Badge][npm-version-svg]][package-url]</sup> + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Robustly get the [[Prototype]] of an object. Uses the best available method. + +## Getting started + +```sh +npm install --save get-proto +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getProto = require('get-proto'); + +const a = { a: 1, b: 2, [Symbol.toStringTag]: 'foo' }; +const b = { c: 3, __proto__: a }; + +assert.equal(getProto(b), a); +assert.equal(getProto(a), Object.prototype); +assert.equal(getProto({ __proto__: null }), null); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/get-proto +[npm-version-svg]: https://versionbadg.es/ljharb/get-proto.svg +[deps-svg]: https://david-dm.org/ljharb/get-proto.svg +[deps-url]: https://david-dm.org/ljharb/get-proto +[dev-deps-svg]: https://david-dm.org/ljharb/get-proto/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/get-proto#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/get-proto.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/get-proto.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/get-proto.svg +[downloads-url]: https://npm-stat.com/charts.html?package=get-proto +[codecov-image]: https://codecov.io/gh/ljharb/get-proto/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/get-proto/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/get-proto +[actions-url]: https://github.com/ljharb/get-proto/actions diff --git a/node_modules/get-proto/Reflect.getPrototypeOf.d.ts b/node_modules/get-proto/Reflect.getPrototypeOf.d.ts new file mode 100644 index 0000000..2388fe0 --- /dev/null +++ b/node_modules/get-proto/Reflect.getPrototypeOf.d.ts @@ -0,0 +1,3 @@ +declare const x: typeof Reflect.getPrototypeOf | null; + +export = x; \ No newline at end of file diff --git a/node_modules/get-proto/Reflect.getPrototypeOf.js b/node_modules/get-proto/Reflect.getPrototypeOf.js new file mode 100644 index 0000000..e6c51be --- /dev/null +++ b/node_modules/get-proto/Reflect.getPrototypeOf.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./Reflect.getPrototypeOf')} */ +module.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null; diff --git a/node_modules/get-proto/index.d.ts b/node_modules/get-proto/index.d.ts new file mode 100644 index 0000000..2c021f3 --- /dev/null +++ b/node_modules/get-proto/index.d.ts @@ -0,0 +1,5 @@ +declare function getProto<O extends object>(object: O): object | null; + +declare const x: typeof getProto | null; + +export = x; diff --git a/node_modules/get-proto/index.js b/node_modules/get-proto/index.js new file mode 100644 index 0000000..7e5747b --- /dev/null +++ b/node_modules/get-proto/index.js @@ -0,0 +1,27 @@ +'use strict'; + +var reflectGetProto = require('./Reflect.getPrototypeOf'); +var originalGetProto = require('./Object.getPrototypeOf'); + +var getDunderProto = require('dunder-proto/get'); + +/** @type {import('.')} */ +module.exports = reflectGetProto + ? function getProto(O) { + // @ts-expect-error TS can't narrow inside a closure, for some reason + return reflectGetProto(O); + } + : originalGetProto + ? function getProto(O) { + if (!O || (typeof O !== 'object' && typeof O !== 'function')) { + throw new TypeError('getProto: not an object'); + } + // @ts-expect-error TS can't narrow inside a closure, for some reason + return originalGetProto(O); + } + : getDunderProto + ? function getProto(O) { + // @ts-expect-error TS can't narrow inside a closure, for some reason + return getDunderProto(O); + } + : null; diff --git a/node_modules/get-proto/package.json b/node_modules/get-proto/package.json new file mode 100644 index 0000000..9c35cec --- /dev/null +++ b/node_modules/get-proto/package.json @@ -0,0 +1,81 @@ +{ + "name": "get-proto", + "version": "1.0.1", + "description": "Robustly get the [[Prototype]] of an object", + "main": "index.js", + "exports": { + ".": "./index.js", + "./Reflect.getPrototypeOf": "./Reflect.getPrototypeOf.js", + "./Object.getPrototypeOf": "./Object.getPrototypeOf.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "pretest": "npm run --silent lint", + "test": "npm run tests-only", + "posttest": "npx npm@\">=10.2\" audit --production", + "tests-only": "nyc tape 'test/**/*.js'", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc && attw -P", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/get-proto.git" + }, + "keywords": [ + "get", + "proto", + "prototype", + "getPrototypeOf", + "[[Prototype]]" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/get-proto/issues" + }, + "homepage": "https://github.com/ljharb/get-proto#readme", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.2", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/tape": "^5.8.0", + "auto-changelog": "^2.5.0", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "testling": { + "files": "test/index.js" + } +} diff --git a/node_modules/get-proto/test/index.js b/node_modules/get-proto/test/index.js new file mode 100644 index 0000000..5a2ece2 --- /dev/null +++ b/node_modules/get-proto/test/index.js @@ -0,0 +1,68 @@ +'use strict'; + +var test = require('tape'); + +var getProto = require('../'); + +test('getProto', function (t) { + t.equal(typeof getProto, 'function', 'is a function'); + + t.test('can get', { skip: !getProto }, function (st) { + if (getProto) { // TS doesn't understand tape's skip + var proto = { b: 2 }; + st.equal(getProto(proto), Object.prototype, 'proto: returns the [[Prototype]]'); + + st.test('nullish value', function (s2t) { + // @ts-expect-error + s2t['throws'](function () { return getProto(undefined); }, TypeError, 'undefined is not an object'); + // @ts-expect-error + s2t['throws'](function () { return getProto(null); }, TypeError, 'null is not an object'); + s2t.end(); + }); + + // @ts-expect-error + st['throws'](function () { getProto(true); }, 'throws for true'); + // @ts-expect-error + st['throws'](function () { getProto(false); }, 'throws for false'); + // @ts-expect-error + st['throws'](function () { getProto(42); }, 'throws for 42'); + // @ts-expect-error + st['throws'](function () { getProto(NaN); }, 'throws for NaN'); + // @ts-expect-error + st['throws'](function () { getProto(0); }, 'throws for +0'); + // @ts-expect-error + st['throws'](function () { getProto(-0); }, 'throws for -0'); + // @ts-expect-error + st['throws'](function () { getProto(Infinity); }, 'throws for ∞'); + // @ts-expect-error + st['throws'](function () { getProto(-Infinity); }, 'throws for -∞'); + // @ts-expect-error + st['throws'](function () { getProto(''); }, 'throws for empty string'); + // @ts-expect-error + st['throws'](function () { getProto('foo'); }, 'throws for non-empty string'); + st.equal(getProto(/a/g), RegExp.prototype); + st.equal(getProto(new Date()), Date.prototype); + st.equal(getProto(function () {}), Function.prototype); + st.equal(getProto([]), Array.prototype); + st.equal(getProto({}), Object.prototype); + + var nullObject = { __proto__: null }; + if ('toString' in nullObject) { + st.comment('no null objects in this engine'); + st.equal(getProto(nullObject), Object.prototype, '"null" object has Object.prototype as [[Prototype]]'); + } else { + st.equal(getProto(nullObject), null, 'null object has null [[Prototype]]'); + } + } + + st.end(); + }); + + t.test('can not get', { skip: !!getProto }, function (st) { + st.equal(getProto, null); + + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/get-proto/tsconfig.json b/node_modules/get-proto/tsconfig.json new file mode 100644 index 0000000..60fb90e --- /dev/null +++ b/node_modules/get-proto/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + //"target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/node_modules/get-ready/History.md b/node_modules/get-ready/History.md new file mode 100644 index 0000000..1847769 --- /dev/null +++ b/node_modules/get-ready/History.md @@ -0,0 +1,9 @@ + +1.0.0 / 2015-09-29 +================== + + * chore: use eslint and es6 + * test: add test with co + * travis: test on node(1,2,3,4) + * feat: support promise + * fork from supershabam/ready diff --git a/node_modules/get-ready/LICENSE b/node_modules/get-ready/LICENSE new file mode 100644 index 0000000..01ff831 --- /dev/null +++ b/node_modules/get-ready/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013 Ian Matthew Hansen +Copyright (c) 2015 node-modules and other contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/get-ready/README.md b/node_modules/get-ready/README.md new file mode 100644 index 0000000..4162795 --- /dev/null +++ b/node_modules/get-ready/README.md @@ -0,0 +1,73 @@ +get-ready +===== + +[![NPM version][npm-image]][npm-url] +[![build status][travis-image]][travis-url] +[![Test coverage][codecov-image]][codecov-url] +[![David deps][david-image]][david-url] +[![npm download][download-image]][download-url] + +[npm-image]: https://img.shields.io/npm/v/get-ready.svg?style=flat-square +[npm-url]: https://npmjs.org/package/get-ready +[travis-image]: https://img.shields.io/travis/node-modules/ready.svg?style=flat-square +[travis-url]: https://travis-ci.org/node-modules/ready +[codecov-image]: https://codecov.io/github/node-modules/ready/coverage.svg?branch=master +[codecov-url]: https://codecov.io/github/node-modules/ready?branch=master +[david-image]: https://img.shields.io/david/node-modules/ready.svg?style=flat-square +[david-url]: https://david-dm.org/node-modules/ready +[download-image]: https://img.shields.io/npm/dm/get-ready.svg?style=flat-square +[download-url]: https://npmjs.org/package/get-ready + +**Fork from [supershabam/ready](https://github.com/supershabam/ready)** + +NodeJS mixin to add one-time ready event + +## Purpose +Events are great. You should use events, but not for signaling ready! Ready implies state, and once you are ready, you stay ready. + +This is a module for everyone who has bound an event handler.on('ready', function() {}) that doesn't execute because you added the handler after the 'ready' event already fired. + +## Warning +If you use this mixin, you must have 'ready', '_ready', and '_readyCallbacks' available on your class. Ready will stomp on these variables if you're trying to use them in your class. + +## Example +```javascript +var ready = require('ready'); + +// example class that uses Ready +function MyClass() { + this.someProperty = 'some value'; +} +ready.mixin(MyClass.prototype); + +// Normal class prototype functions +MyClass.prototype.doSomeWork = function() {}; + +// Create a new class that uses ready mixin +var myClass = new MyClass(); + +// Add callback for when myClass is ready +myClass.ready(function() { + console.log('I am now ready'); +}); + +myClass.doSomeWork(); + +// We are now ready, fire callbacks! +myClass.ready(true); + +// Adding a new callback once we're already ready gets executed immediately +myClass.ready(function() { + console.log('I came late to the party, but I will still execute.'); +}); + +// Ok, you can set the ready state to false now as well... for whatever reason +myClass.ready(false); +myClass.ready(function() { + console.log('I will not fire until you set ready to true again.'); +}); +``` + +## License + +[MIT](LICENSE) diff --git a/node_modules/get-ready/index.js b/node_modules/get-ready/index.js new file mode 100644 index 0000000..6b90312 --- /dev/null +++ b/node_modules/get-ready/index.js @@ -0,0 +1,34 @@ +'use strict'; + +function ready(flagOrFunction) { + this._ready = !!this._ready; + this._readyCallbacks = this._readyCallbacks || []; + + if (arguments.length === 0) { + // return a promise + // support `this.ready().then(onready);` and `yield this.ready()`; + return new Promise(function (resolve) { + if (this._ready) { + return resolve(); + } + this._readyCallbacks.push(resolve); + }.bind(this)); + } else if (typeof flagOrFunction === 'function') { + this._readyCallbacks.push(flagOrFunction); + } else { + this._ready = !!flagOrFunction; + } + + if (this._ready) { + this._readyCallbacks.splice(0, Infinity).forEach(function(callback) { + process.nextTick(callback); + }); + } +} + +function mixin(object) { + object.ready = ready; +} + +module.exports = mixin; +module.exports.mixin = mixin; diff --git a/node_modules/get-ready/package.json b/node_modules/get-ready/package.json new file mode 100644 index 0000000..dd31598 --- /dev/null +++ b/node_modules/get-ready/package.json @@ -0,0 +1,36 @@ +{ + "name": "get-ready", + "version": "1.0.0", + "description": "mixin to add one-time ready event callback handler", + "main": "index.js", + "files": [ + "index.js" + ], + "dependencies": {}, + "devDependencies": { + "eslint": "1", + "istanbul": "0", + "mocha": "2", + "should": "7", + "thunk-mocha": "0" + }, + "scripts": { + "lint": "eslint index.js test", + "test": "mocha -r thunk-mocha test/*.test.js", + "test-cov": "istanbul cover node_modules/.bin/_mocha -- -r thunk-mocha test/*.test.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/node-modules/ready" + }, + "keywords": [ + "ready", + "once", + "event" + ], + "author": "fengmk2 <m@fengmk2.com> (http://fengmk2.com)", + "license": "MIT", + "bugs": { + "url": "https://github.com/node-modules/ready/issues" + } +} diff --git a/node_modules/gopd/.eslintrc b/node_modules/gopd/.eslintrc new file mode 100644 index 0000000..e2550c0 --- /dev/null +++ b/node_modules/gopd/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "func-style": [2, "declaration"], + "id-length": 0, + "multiline-comment-style": 0, + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/node_modules/gopd/.github/FUNDING.yml b/node_modules/gopd/.github/FUNDING.yml new file mode 100644 index 0000000..94a44a8 --- /dev/null +++ b/node_modules/gopd/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/gopd +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/gopd/CHANGELOG.md b/node_modules/gopd/CHANGELOG.md new file mode 100644 index 0000000..87f5727 --- /dev/null +++ b/node_modules/gopd/CHANGELOG.md @@ -0,0 +1,45 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.2.0](https://github.com/ljharb/gopd/compare/v1.1.0...v1.2.0) - 2024-12-03 + +### Commits + +- [New] add `gOPD` entry point; remove `get-intrinsic` [`5b61232`](https://github.com/ljharb/gopd/commit/5b61232dedea4591a314bcf16101b1961cee024e) + +## [v1.1.0](https://github.com/ljharb/gopd/compare/v1.0.1...v1.1.0) - 2024-11-29 + +### Commits + +- [New] add types [`f585e39`](https://github.com/ljharb/gopd/commit/f585e397886d270e4ba84e53d226e4f9ca2eb0e6) +- [Dev Deps] update `@ljharb/eslint-config`, `auto-changelog`, `tape` [`0b8e4fd`](https://github.com/ljharb/gopd/commit/0b8e4fded64397a7726a9daa144a6cc9a5e2edfa) +- [Dev Deps] update `aud`, `npmignore`, `tape` [`48378b2`](https://github.com/ljharb/gopd/commit/48378b2443f09a4f7efbd0fb6c3ee845a6cabcf3) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`78099ee`](https://github.com/ljharb/gopd/commit/78099eeed41bfdc134c912280483689cc8861c31) +- [Tests] replace `aud` with `npm audit` [`4e0d0ac`](https://github.com/ljharb/gopd/commit/4e0d0ac47619d24a75318a8e1f543ee04b2a2632) +- [meta] add missing `engines.node` [`1443316`](https://github.com/ljharb/gopd/commit/14433165d07835c680155b3dfd62d9217d735eca) +- [Deps] update `get-intrinsic` [`eee5f51`](https://github.com/ljharb/gopd/commit/eee5f51769f3dbaf578b70e2a3199116b01aa670) +- [Deps] update `get-intrinsic` [`550c378`](https://github.com/ljharb/gopd/commit/550c3780e3a9c77b62565712a001b4ed64ea61f5) +- [Dev Deps] add missing peer dep [`8c2ecf8`](https://github.com/ljharb/gopd/commit/8c2ecf848122e4e30abfc5b5086fb48b390dce75) + +## [v1.0.1](https://github.com/ljharb/gopd/compare/v1.0.0...v1.0.1) - 2022-11-01 + +### Commits + +- [Fix] actually export gOPD instead of dP [`4b624bf`](https://github.com/ljharb/gopd/commit/4b624bfbeff788c5e3ff16d9443a83627847234f) + +## v1.0.0 - 2022-11-01 + +### Commits + +- Initial implementation, tests, readme [`0911e01`](https://github.com/ljharb/gopd/commit/0911e012cd642092bd88b732c161c58bf4f20bea) +- Initial commit [`b84e33f`](https://github.com/ljharb/gopd/commit/b84e33f5808a805ac57ff88d4247ad935569acbe) +- [actions] add reusable workflows [`12ae28a`](https://github.com/ljharb/gopd/commit/12ae28ae5f50f86e750215b6e2188901646d0119) +- npm init [`280118b`](https://github.com/ljharb/gopd/commit/280118badb45c80b4483836b5cb5315bddf6e582) +- [meta] add `auto-changelog` [`bb78de5`](https://github.com/ljharb/gopd/commit/bb78de5639a180747fb290c28912beaaf1615709) +- [meta] create FUNDING.yml; add `funding` in package.json [`11c22e6`](https://github.com/ljharb/gopd/commit/11c22e6355bb01f24e7fac4c9bb3055eb5b25002) +- [meta] use `npmignore` to autogenerate an npmignore file [`4f4537a`](https://github.com/ljharb/gopd/commit/4f4537a843b39f698c52f072845092e6fca345bb) +- Only apps should have lockfiles [`c567022`](https://github.com/ljharb/gopd/commit/c567022a18573aa7951cf5399445d9840e23e98b) diff --git a/node_modules/gopd/LICENSE b/node_modules/gopd/LICENSE new file mode 100644 index 0000000..6abfe14 --- /dev/null +++ b/node_modules/gopd/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/gopd/README.md b/node_modules/gopd/README.md new file mode 100644 index 0000000..784e56a --- /dev/null +++ b/node_modules/gopd/README.md @@ -0,0 +1,40 @@ +# gopd <sup>[![Version Badge][npm-version-svg]][package-url]</sup> + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +`Object.getOwnPropertyDescriptor`, but accounts for IE's broken implementation. + +## Usage + +```javascript +var gOPD = require('gopd'); +var assert = require('assert'); + +if (gOPD) { + assert.equal(typeof gOPD, 'function', 'descriptors supported'); + // use gOPD like Object.getOwnPropertyDescriptor here +} else { + assert.ok(!gOPD, 'descriptors not supported'); +} +``` + +[package-url]: https://npmjs.org/package/gopd +[npm-version-svg]: https://versionbadg.es/ljharb/gopd.svg +[deps-svg]: https://david-dm.org/ljharb/gopd.svg +[deps-url]: https://david-dm.org/ljharb/gopd +[dev-deps-svg]: https://david-dm.org/ljharb/gopd/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/gopd#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/gopd.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/gopd.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/gopd.svg +[downloads-url]: https://npm-stat.com/charts.html?package=gopd +[codecov-image]: https://codecov.io/gh/ljharb/gopd/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/gopd/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/gopd +[actions-url]: https://github.com/ljharb/gopd/actions diff --git a/node_modules/gopd/gOPD.d.ts b/node_modules/gopd/gOPD.d.ts new file mode 100644 index 0000000..def48a3 --- /dev/null +++ b/node_modules/gopd/gOPD.d.ts @@ -0,0 +1 @@ +export = Object.getOwnPropertyDescriptor; diff --git a/node_modules/gopd/gOPD.js b/node_modules/gopd/gOPD.js new file mode 100644 index 0000000..cf9616c --- /dev/null +++ b/node_modules/gopd/gOPD.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./gOPD')} */ +module.exports = Object.getOwnPropertyDescriptor; diff --git a/node_modules/gopd/index.d.ts b/node_modules/gopd/index.d.ts new file mode 100644 index 0000000..e228065 --- /dev/null +++ b/node_modules/gopd/index.d.ts @@ -0,0 +1,5 @@ +declare function gOPD<O extends object, K extends keyof O>(obj: O, prop: K): PropertyDescriptor | undefined; + +declare const fn: typeof gOPD | undefined | null; + +export = fn; \ No newline at end of file diff --git a/node_modules/gopd/index.js b/node_modules/gopd/index.js new file mode 100644 index 0000000..a4081b0 --- /dev/null +++ b/node_modules/gopd/index.js @@ -0,0 +1,15 @@ +'use strict'; + +/** @type {import('.')} */ +var $gOPD = require('./gOPD'); + +if ($gOPD) { + try { + $gOPD([], 'length'); + } catch (e) { + // IE 8 has a broken gOPD + $gOPD = null; + } +} + +module.exports = $gOPD; diff --git a/node_modules/gopd/package.json b/node_modules/gopd/package.json new file mode 100644 index 0000000..01c5ffa --- /dev/null +++ b/node_modules/gopd/package.json @@ -0,0 +1,77 @@ +{ + "name": "gopd", + "version": "1.2.0", + "description": "`Object.getOwnPropertyDescriptor`, but accounts for IE's broken implementation.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./gOPD": "./gOPD.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "tsc -p . && attw -P", + "lint": "eslint --ext=js,mjs .", + "postlint": "evalmd README.md", + "pretest": "npm run lint", + "tests-only": "tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/gopd.git" + }, + "keywords": [ + "ecmascript", + "javascript", + "getownpropertydescriptor", + "property", + "descriptor" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/gopd/issues" + }, + "homepage": "https://github.com/ljharb/gopd#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.0", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.0", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/gopd/test/index.js b/node_modules/gopd/test/index.js new file mode 100644 index 0000000..6f43453 --- /dev/null +++ b/node_modules/gopd/test/index.js @@ -0,0 +1,36 @@ +'use strict'; + +var test = require('tape'); +var gOPD = require('../'); + +test('gOPD', function (t) { + t.test('supported', { skip: !gOPD }, function (st) { + st.equal(typeof gOPD, 'function', 'is a function'); + + var obj = { x: 1 }; + st.ok('x' in obj, 'property exists'); + + // @ts-expect-error TS can't figure out narrowing from `skip` + var desc = gOPD(obj, 'x'); + st.deepEqual( + desc, + { + configurable: true, + enumerable: true, + value: 1, + writable: true + }, + 'descriptor is as expected' + ); + + st.end(); + }); + + t.test('not supported', { skip: !!gOPD }, function (st) { + st.notOk(gOPD, 'is falsy'); + + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/gopd/tsconfig.json b/node_modules/gopd/tsconfig.json new file mode 100644 index 0000000..d9a6668 --- /dev/null +++ b/node_modules/gopd/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/node_modules/has-symbols/.eslintrc b/node_modules/has-symbols/.eslintrc new file mode 100644 index 0000000..2d9a66a --- /dev/null +++ b/node_modules/has-symbols/.eslintrc @@ -0,0 +1,11 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "max-statements-per-line": [2, { "max": 2 }], + "no-magic-numbers": 0, + "multiline-comment-style": 0, + } +} diff --git a/node_modules/has-symbols/.github/FUNDING.yml b/node_modules/has-symbols/.github/FUNDING.yml new file mode 100644 index 0000000..04cf87e --- /dev/null +++ b/node_modules/has-symbols/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/has-symbols +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/has-symbols/.nycrc b/node_modules/has-symbols/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/node_modules/has-symbols/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/has-symbols/CHANGELOG.md b/node_modules/has-symbols/CHANGELOG.md new file mode 100644 index 0000000..cc3cf83 --- /dev/null +++ b/node_modules/has-symbols/CHANGELOG.md @@ -0,0 +1,91 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.0](https://github.com/inspect-js/has-symbols/compare/v1.0.3...v1.1.0) - 2024-12-02 + +### Commits + +- [actions] update workflows [`548c0bf`](https://github.com/inspect-js/has-symbols/commit/548c0bf8c9b1235458df7a1c0490b0064647a282) +- [actions] further shard; update action deps [`bec56bb`](https://github.com/inspect-js/has-symbols/commit/bec56bb0fb44b43a786686b944875a3175cf3ff3) +- [meta] use `npmignore` to autogenerate an npmignore file [`ac81032`](https://github.com/inspect-js/has-symbols/commit/ac81032809157e0a079e5264e9ce9b6f1275777e) +- [New] add types [`6469cbf`](https://github.com/inspect-js/has-symbols/commit/6469cbff1866cfe367b2b3d181d9296ec14b2a3d) +- [actions] update rebase action to use reusable workflow [`9c9d4d0`](https://github.com/inspect-js/has-symbols/commit/9c9d4d0d8938e4b267acdf8e421f4e92d1716d72) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`adb5887`](https://github.com/inspect-js/has-symbols/commit/adb5887ca9444849b08beb5caaa9e1d42320cdfb) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`13ec198`](https://github.com/inspect-js/has-symbols/commit/13ec198ec80f1993a87710af1606a1970b22c7cb) +- [Dev Deps] update `auto-changelog`, `core-js`, `tape` [`941be52`](https://github.com/inspect-js/has-symbols/commit/941be5248387cab1da72509b22acf3fdb223f057) +- [Tests] replace `aud` with `npm audit` [`74f49e9`](https://github.com/inspect-js/has-symbols/commit/74f49e9a9d17a443020784234a1c53ce765b3559) +- [Dev Deps] update `npmignore` [`9c0ac04`](https://github.com/inspect-js/has-symbols/commit/9c0ac0452a834f4c2a4b54044f2d6a89f17e9a70) +- [Dev Deps] add missing peer dep [`52337a5`](https://github.com/inspect-js/has-symbols/commit/52337a5621cced61f846f2afdab7707a8132cc12) + +## [v1.0.3](https://github.com/inspect-js/has-symbols/compare/v1.0.2...v1.0.3) - 2022-03-01 + +### Commits + +- [actions] use `node/install` instead of `node/run`; use `codecov` action [`518b28f`](https://github.com/inspect-js/has-symbols/commit/518b28f6c5a516cbccae30794e40aa9f738b1693) +- [meta] add `bugs` and `homepage` fields; reorder package.json [`c480b13`](https://github.com/inspect-js/has-symbols/commit/c480b13fd6802b557e1cef9749872cb5fdeef744) +- [actions] reuse common workflows [`01d0ee0`](https://github.com/inspect-js/has-symbols/commit/01d0ee0a8d97c0947f5edb73eb722027a77b2b07) +- [actions] update codecov uploader [`6424ebe`](https://github.com/inspect-js/has-symbols/commit/6424ebe86b2c9c7c3d2e9bd4413a4e4f168cb275) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`dfa7e7f`](https://github.com/inspect-js/has-symbols/commit/dfa7e7ff38b594645d8c8222aab895157fa7e282) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape` [`0c8d436`](https://github.com/inspect-js/has-symbols/commit/0c8d43685c45189cea9018191d4fd7eca91c9d02) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`9026554`](https://github.com/inspect-js/has-symbols/commit/902655442a1bf88e72b42345494ef0c60f5d36ab) +- [readme] add actions and codecov badges [`eaa9682`](https://github.com/inspect-js/has-symbols/commit/eaa9682f990f481d3acf7a1c7600bec36f7b3adc) +- [Dev Deps] update `eslint`, `tape` [`bc7a3ba`](https://github.com/inspect-js/has-symbols/commit/bc7a3ba46f27b7743f8a2579732d59d1b9ac791e) +- [Dev Deps] update `eslint`, `auto-changelog` [`0ace00a`](https://github.com/inspect-js/has-symbols/commit/0ace00af08a88cdd1e6ce0d60357d941c60c2d9f) +- [meta] use `prepublishOnly` script for npm 7+ [`093f72b`](https://github.com/inspect-js/has-symbols/commit/093f72bc2b0ed00c781f444922a5034257bf561d) +- [Tests] test on all 16 minors [`9b80d3d`](https://github.com/inspect-js/has-symbols/commit/9b80d3d9102529f04c20ec5b1fcc6e38426c6b03) + +## [v1.0.2](https://github.com/inspect-js/has-symbols/compare/v1.0.1...v1.0.2) - 2021-02-27 + +### Fixed + +- [Fix] use a universal way to get the original Symbol [`#11`](https://github.com/inspect-js/has-symbols/issues/11) + +### Commits + +- [Tests] migrate tests to Github Actions [`90ae798`](https://github.com/inspect-js/has-symbols/commit/90ae79820bdfe7bc703d67f5f3c5e205f98556d3) +- [meta] do not publish github action workflow files [`29e60a1`](https://github.com/inspect-js/has-symbols/commit/29e60a1b7c25c7f1acf7acff4a9320d0d10c49b4) +- [Tests] run `nyc` on all tests [`8476b91`](https://github.com/inspect-js/has-symbols/commit/8476b915650d360915abe2522505abf4b0e8f0ae) +- [readme] fix repo URLs, remove defunct badges [`126288e`](https://github.com/inspect-js/has-symbols/commit/126288ecc1797c0a40247a6b78bcb2e0bc5d7036) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `core-js`, `get-own-property-symbols` [`d84bdfa`](https://github.com/inspect-js/has-symbols/commit/d84bdfa48ac5188abbb4904b42614cd6c030940a) +- [Tests] fix linting errors [`0df3070`](https://github.com/inspect-js/has-symbols/commit/0df3070b981b6c9f2ee530c09189a7f5c6def839) +- [actions] add "Allow Edits" workflow [`1e6bc29`](https://github.com/inspect-js/has-symbols/commit/1e6bc29b188f32b9648657b07eda08504be5aa9c) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`36cea2a`](https://github.com/inspect-js/has-symbols/commit/36cea2addd4e6ec435f35a2656b4e9ef82498e9b) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`1278338`](https://github.com/inspect-js/has-symbols/commit/127833801865fbc2cc8979beb9ca869c7bfe8222) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`1493254`](https://github.com/inspect-js/has-symbols/commit/1493254eda13db5fb8fc5e4a3e8324b3d196029d) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js` [`b090bf2`](https://github.com/inspect-js/has-symbols/commit/b090bf214d3679a30edc1e2d729d466ab5183e1d) +- [actions] switch Automatic Rebase workflow to `pull_request_target` event [`4addb7a`](https://github.com/inspect-js/has-symbols/commit/4addb7ab4dc73f927ae99928d68817554fc21dc0) +- [Dev Deps] update `auto-changelog`, `tape` [`81d0baf`](https://github.com/inspect-js/has-symbols/commit/81d0baf3816096a89a8558e8043895f7a7d10d8b) +- [Dev Deps] update `auto-changelog`; add `aud` [`1a4e561`](https://github.com/inspect-js/has-symbols/commit/1a4e5612c25d91c3a03d509721d02630bc4fe3da) +- [readme] remove unused testling URLs [`3000941`](https://github.com/inspect-js/has-symbols/commit/3000941f958046e923ed8152edb1ef4a599e6fcc) +- [Tests] only audit prod deps [`692e974`](https://github.com/inspect-js/has-symbols/commit/692e9743c912410e9440207631a643a34b4741a1) +- [Dev Deps] update `@ljharb/eslint-config` [`51c946c`](https://github.com/inspect-js/has-symbols/commit/51c946c7f6baa793ec5390bb5a45cdce16b4ba76) + +## [v1.0.1](https://github.com/inspect-js/has-symbols/compare/v1.0.0...v1.0.1) - 2019-11-16 + +### Commits + +- [Tests] use shared travis-ci configs [`ce396c9`](https://github.com/inspect-js/has-symbols/commit/ce396c9419ff11c43d0da5d05cdbb79f7fb42229) +- [Tests] up to `node` `v12.4`, `v11.15`, `v10.15`, `v9.11`, `v8.15`, `v7.10`, `v6.17`, `v4.9`; use `nvm install-latest-npm` [`0690732`](https://github.com/inspect-js/has-symbols/commit/0690732801f47ab429f39ba1962f522d5c462d6b) +- [meta] add `auto-changelog` [`2163d0b`](https://github.com/inspect-js/has-symbols/commit/2163d0b7f36343076b8f947cd1667dd1750f26fc) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js`, `safe-publish-latest`, `tape` [`8e0951f`](https://github.com/inspect-js/has-symbols/commit/8e0951f1a7a2e52068222b7bb73511761e6e4d9c) +- [actions] add automatic rebasing / merge commit blocking [`b09cdb7`](https://github.com/inspect-js/has-symbols/commit/b09cdb7cd7ee39e7a769878f56e2d6066f5ccd1d) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `core-js`, `get-own-property-symbols`, `tape` [`1dd42cd`](https://github.com/inspect-js/has-symbols/commit/1dd42cd86183ed0c50f99b1062345c458babca91) +- [meta] create FUNDING.yml [`aa57a17`](https://github.com/inspect-js/has-symbols/commit/aa57a17b19708906d1927f821ea8e73394d84ca4) +- Only apps should have lockfiles [`a2d8bea`](https://github.com/inspect-js/has-symbols/commit/a2d8bea23a97d15c09eaf60f5b107fcf9a4d57aa) +- [Tests] use `npx aud` instead of `nsp` or `npm audit` with hoops [`9e96cb7`](https://github.com/inspect-js/has-symbols/commit/9e96cb783746cbed0c10ef78e599a8eaa7ebe193) +- [meta] add `funding` field [`a0b32cf`](https://github.com/inspect-js/has-symbols/commit/a0b32cf68e803f963c1639b6d47b0a9d6440bab0) +- [Dev Deps] update `safe-publish-latest` [`cb9f0a5`](https://github.com/inspect-js/has-symbols/commit/cb9f0a521a3a1790f1064d437edd33bb6c3d6af0) + +## v1.0.0 - 2016-09-19 + +### Commits + +- Tests. [`ecb6eb9`](https://github.com/inspect-js/has-symbols/commit/ecb6eb934e4883137f3f93b965ba5e0a98df430d) +- package.json [`88a337c`](https://github.com/inspect-js/has-symbols/commit/88a337cee0864a0da35f5d19e69ff0ef0150e46a) +- Initial commit [`42e1e55`](https://github.com/inspect-js/has-symbols/commit/42e1e5502536a2b8ac529c9443984acd14836b1c) +- Initial implementation. [`33f5cc6`](https://github.com/inspect-js/has-symbols/commit/33f5cc6cdff86e2194b081ee842bfdc63caf43fb) +- read me [`01f1170`](https://github.com/inspect-js/has-symbols/commit/01f1170188ff7cb1558aa297f6ba5b516c6d7b0c) diff --git a/node_modules/has-symbols/LICENSE b/node_modules/has-symbols/LICENSE new file mode 100644 index 0000000..df31cbf --- /dev/null +++ b/node_modules/has-symbols/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/has-symbols/README.md b/node_modules/has-symbols/README.md new file mode 100644 index 0000000..33905f0 --- /dev/null +++ b/node_modules/has-symbols/README.md @@ -0,0 +1,46 @@ +# has-symbols <sup>[![Version Badge][2]][1]</sup> + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][5]][6] +[![dev dependency status][7]][8] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][11]][1] + +Determine if the JS environment has Symbol support. Supports spec, or shams. + +## Example + +```js +var hasSymbols = require('has-symbols'); + +hasSymbols() === true; // if the environment has native Symbol support. Not polyfillable, not forgeable. + +var hasSymbolsKinda = require('has-symbols/shams'); +hasSymbolsKinda() === true; // if the environment has a Symbol sham that mostly follows the spec. +``` + +## Supported Symbol shams + - get-own-property-symbols [npm](https://www.npmjs.com/package/get-own-property-symbols) | [github](https://github.com/WebReflection/get-own-property-symbols) + - core-js [npm](https://www.npmjs.com/package/core-js) | [github](https://github.com/zloirock/core-js) + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[1]: https://npmjs.org/package/has-symbols +[2]: https://versionbadg.es/inspect-js/has-symbols.svg +[5]: https://david-dm.org/inspect-js/has-symbols.svg +[6]: https://david-dm.org/inspect-js/has-symbols +[7]: https://david-dm.org/inspect-js/has-symbols/dev-status.svg +[8]: https://david-dm.org/inspect-js/has-symbols#info=devDependencies +[11]: https://nodei.co/npm/has-symbols.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/has-symbols.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/has-symbols.svg +[downloads-url]: https://npm-stat.com/charts.html?package=has-symbols +[codecov-image]: https://codecov.io/gh/inspect-js/has-symbols/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/inspect-js/has-symbols/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/has-symbols +[actions-url]: https://github.com/inspect-js/has-symbols/actions diff --git a/node_modules/has-symbols/index.d.ts b/node_modules/has-symbols/index.d.ts new file mode 100644 index 0000000..9b98595 --- /dev/null +++ b/node_modules/has-symbols/index.d.ts @@ -0,0 +1,3 @@ +declare function hasNativeSymbols(): boolean; + +export = hasNativeSymbols; \ No newline at end of file diff --git a/node_modules/has-symbols/index.js b/node_modules/has-symbols/index.js new file mode 100644 index 0000000..fa65265 --- /dev/null +++ b/node_modules/has-symbols/index.js @@ -0,0 +1,14 @@ +'use strict'; + +var origSymbol = typeof Symbol !== 'undefined' && Symbol; +var hasSymbolSham = require('./shams'); + +/** @type {import('.')} */ +module.exports = function hasNativeSymbols() { + if (typeof origSymbol !== 'function') { return false; } + if (typeof Symbol !== 'function') { return false; } + if (typeof origSymbol('foo') !== 'symbol') { return false; } + if (typeof Symbol('bar') !== 'symbol') { return false; } + + return hasSymbolSham(); +}; diff --git a/node_modules/has-symbols/package.json b/node_modules/has-symbols/package.json new file mode 100644 index 0000000..d835e20 --- /dev/null +++ b/node_modules/has-symbols/package.json @@ -0,0 +1,111 @@ +{ + "name": "has-symbols", + "version": "1.1.0", + "description": "Determine if the JS environment has Symbol support. Supports spec, or shams.", + "main": "index.js", + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run --silent lint", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "tests-only": "npm run test:stock && npm run test:shams", + "test:stock": "nyc node test", + "test:staging": "nyc node --harmony --es-staging test", + "test:shams": "npm run --silent test:shams:getownpropertysymbols && npm run --silent test:shams:corejs", + "test:shams:corejs": "nyc node test/shams/core-js.js", + "test:shams:getownpropertysymbols": "nyc node test/shams/get-own-property-symbols.js", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git://github.com/inspect-js/has-symbols.git" + }, + "keywords": [ + "Symbol", + "symbols", + "typeof", + "sham", + "polyfill", + "native", + "core-js", + "ES6" + ], + "author": { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + }, + "contributors": [ + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + } + ], + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/has-symbols/issues" + }, + "homepage": "https://github.com/ljharb/has-symbols#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.0", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.0", + "@types/core-js": "^2.5.8", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "core-js": "^2.6.12", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "get-own-property-symbols": "^0.9.5", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "iexplore/6.0..latest", + "firefox/3.0..6.0", + "firefox/15.0..latest", + "firefox/nightly", + "chrome/4.0..10.0", + "chrome/20.0..latest", + "chrome/canary", + "opera/10.0..latest", + "opera/next", + "safari/4.0..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2" + ] + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "types" + ] + } +} diff --git a/node_modules/has-symbols/shams.d.ts b/node_modules/has-symbols/shams.d.ts new file mode 100644 index 0000000..8d0bf24 --- /dev/null +++ b/node_modules/has-symbols/shams.d.ts @@ -0,0 +1,3 @@ +declare function hasSymbolShams(): boolean; + +export = hasSymbolShams; \ No newline at end of file diff --git a/node_modules/has-symbols/shams.js b/node_modules/has-symbols/shams.js new file mode 100644 index 0000000..f97b474 --- /dev/null +++ b/node_modules/has-symbols/shams.js @@ -0,0 +1,45 @@ +'use strict'; + +/** @type {import('./shams')} */ +/* eslint complexity: [2, 18], max-statements: [2, 33] */ +module.exports = function hasSymbols() { + if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } + if (typeof Symbol.iterator === 'symbol') { return true; } + + /** @type {{ [k in symbol]?: unknown }} */ + var obj = {}; + var sym = Symbol('test'); + var symObj = Object(sym); + if (typeof sym === 'string') { return false; } + + if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } + if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } + + // temp disabled per https://github.com/ljharb/object.assign/issues/17 + // if (sym instanceof Symbol) { return false; } + // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 + // if (!(symObj instanceof Symbol)) { return false; } + + // if (typeof Symbol.prototype.toString !== 'function') { return false; } + // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } + + var symVal = 42; + obj[sym] = symVal; + for (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop + if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } + + if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } + + var syms = Object.getOwnPropertySymbols(obj); + if (syms.length !== 1 || syms[0] !== sym) { return false; } + + if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } + + if (typeof Object.getOwnPropertyDescriptor === 'function') { + // eslint-disable-next-line no-extra-parens + var descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym)); + if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } + } + + return true; +}; diff --git a/node_modules/has-symbols/test/index.js b/node_modules/has-symbols/test/index.js new file mode 100644 index 0000000..352129c --- /dev/null +++ b/node_modules/has-symbols/test/index.js @@ -0,0 +1,22 @@ +'use strict'; + +var test = require('tape'); +var hasSymbols = require('../'); +var runSymbolTests = require('./tests'); + +test('interface', function (t) { + t.equal(typeof hasSymbols, 'function', 'is a function'); + t.equal(typeof hasSymbols(), 'boolean', 'returns a boolean'); + t.end(); +}); + +test('Symbols are supported', { skip: !hasSymbols() }, function (t) { + runSymbolTests(t); + t.end(); +}); + +test('Symbols are not supported', { skip: hasSymbols() }, function (t) { + t.equal(typeof Symbol, 'undefined', 'global Symbol is undefined'); + t.equal(typeof Object.getOwnPropertySymbols, 'undefined', 'Object.getOwnPropertySymbols does not exist'); + t.end(); +}); diff --git a/node_modules/has-symbols/test/shams/core-js.js b/node_modules/has-symbols/test/shams/core-js.js new file mode 100644 index 0000000..1a29024 --- /dev/null +++ b/node_modules/has-symbols/test/shams/core-js.js @@ -0,0 +1,29 @@ +'use strict'; + +var test = require('tape'); + +if (typeof Symbol === 'function' && typeof Symbol() === 'symbol') { + test('has native Symbol support', function (t) { + t.equal(typeof Symbol, 'function'); + t.equal(typeof Symbol(), 'symbol'); + t.end(); + }); + // @ts-expect-error TS is stupid and doesn't know about top level return + return; +} + +var hasSymbols = require('../../shams'); + +test('polyfilled Symbols', function (t) { + /* eslint-disable global-require */ + t.equal(hasSymbols(), false, 'hasSymbols is false before polyfilling'); + require('core-js/fn/symbol'); + require('core-js/fn/symbol/to-string-tag'); + + require('../tests')(t); + + var hasSymbolsAfter = hasSymbols(); + t.equal(hasSymbolsAfter, true, 'hasSymbols is true after polyfilling'); + /* eslint-enable global-require */ + t.end(); +}); diff --git a/node_modules/has-symbols/test/shams/get-own-property-symbols.js b/node_modules/has-symbols/test/shams/get-own-property-symbols.js new file mode 100644 index 0000000..e0296f8 --- /dev/null +++ b/node_modules/has-symbols/test/shams/get-own-property-symbols.js @@ -0,0 +1,29 @@ +'use strict'; + +var test = require('tape'); + +if (typeof Symbol === 'function' && typeof Symbol() === 'symbol') { + test('has native Symbol support', function (t) { + t.equal(typeof Symbol, 'function'); + t.equal(typeof Symbol(), 'symbol'); + t.end(); + }); + // @ts-expect-error TS is stupid and doesn't know about top level return + return; +} + +var hasSymbols = require('../../shams'); + +test('polyfilled Symbols', function (t) { + /* eslint-disable global-require */ + t.equal(hasSymbols(), false, 'hasSymbols is false before polyfilling'); + + require('get-own-property-symbols'); + + require('../tests')(t); + + var hasSymbolsAfter = hasSymbols(); + t.equal(hasSymbolsAfter, true, 'hasSymbols is true after polyfilling'); + /* eslint-enable global-require */ + t.end(); +}); diff --git a/node_modules/has-symbols/test/tests.js b/node_modules/has-symbols/test/tests.js new file mode 100644 index 0000000..66a2cb8 --- /dev/null +++ b/node_modules/has-symbols/test/tests.js @@ -0,0 +1,58 @@ +'use strict'; + +/** @type {(t: import('tape').Test) => false | void} */ +// eslint-disable-next-line consistent-return +module.exports = function runSymbolTests(t) { + t.equal(typeof Symbol, 'function', 'global Symbol is a function'); + + if (typeof Symbol !== 'function') { return false; } + + t.notEqual(Symbol(), Symbol(), 'two symbols are not equal'); + + /* + t.equal( + Symbol.prototype.toString.call(Symbol('foo')), + Symbol.prototype.toString.call(Symbol('foo')), + 'two symbols with the same description stringify the same' + ); + */ + + /* + var foo = Symbol('foo'); + + t.notEqual( + String(foo), + String(Symbol('bar')), + 'two symbols with different descriptions do not stringify the same' + ); + */ + + t.equal(typeof Symbol.prototype.toString, 'function', 'Symbol#toString is a function'); + // t.equal(String(foo), Symbol.prototype.toString.call(foo), 'Symbol#toString equals String of the same symbol'); + + t.equal(typeof Object.getOwnPropertySymbols, 'function', 'Object.getOwnPropertySymbols is a function'); + + /** @type {{ [k in symbol]?: unknown }} */ + var obj = {}; + var sym = Symbol('test'); + var symObj = Object(sym); + t.notEqual(typeof sym, 'string', 'Symbol is not a string'); + t.equal(Object.prototype.toString.call(sym), '[object Symbol]', 'symbol primitive Object#toStrings properly'); + t.equal(Object.prototype.toString.call(symObj), '[object Symbol]', 'symbol primitive Object#toStrings properly'); + + var symVal = 42; + obj[sym] = symVal; + // eslint-disable-next-line no-restricted-syntax, no-unused-vars + for (var _ in obj) { t.fail('symbol property key was found in for..in of object'); } + + t.deepEqual(Object.keys(obj), [], 'no enumerable own keys on symbol-valued object'); + t.deepEqual(Object.getOwnPropertyNames(obj), [], 'no own names on symbol-valued object'); + t.deepEqual(Object.getOwnPropertySymbols(obj), [sym], 'one own symbol on symbol-valued object'); + t.equal(Object.prototype.propertyIsEnumerable.call(obj, sym), true, 'symbol is enumerable'); + t.deepEqual(Object.getOwnPropertyDescriptor(obj, sym), { + configurable: true, + enumerable: true, + value: 42, + writable: true + }, 'property descriptor is correct'); +}; diff --git a/node_modules/has-symbols/tsconfig.json b/node_modules/has-symbols/tsconfig.json new file mode 100644 index 0000000..ba99af4 --- /dev/null +++ b/node_modules/has-symbols/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "ES2021", + "maxNodeModuleJsDepth": 0, + }, + "exclude": [ + "coverage" + ] +} diff --git a/node_modules/hasown/.eslintrc b/node_modules/hasown/.eslintrc new file mode 100644 index 0000000..3b5d9e9 --- /dev/null +++ b/node_modules/hasown/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/node_modules/hasown/.github/FUNDING.yml b/node_modules/hasown/.github/FUNDING.yml new file mode 100644 index 0000000..d68c8b7 --- /dev/null +++ b/node_modules/hasown/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/hasown +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/hasown/.nycrc b/node_modules/hasown/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/node_modules/hasown/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/hasown/CHANGELOG.md b/node_modules/hasown/CHANGELOG.md new file mode 100644 index 0000000..2b0a980 --- /dev/null +++ b/node_modules/hasown/CHANGELOG.md @@ -0,0 +1,40 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v2.0.2](https://github.com/inspect-js/hasOwn/compare/v2.0.1...v2.0.2) - 2024-03-10 + +### Commits + +- [types] use shared config [`68e9d4d`](https://github.com/inspect-js/hasOwn/commit/68e9d4dab6facb4f05f02c6baea94a3f2a4e44b2) +- [actions] remove redundant finisher; use reusable workflow [`241a68e`](https://github.com/inspect-js/hasOwn/commit/241a68e13ea1fe52bec5ba7f74144befc31fae7b) +- [Tests] increase coverage [`4125c0d`](https://github.com/inspect-js/hasOwn/commit/4125c0d6121db56ae30e38346dfb0c000b04f0a7) +- [Tests] skip `npm ls` in old node due to TS [`01b9282`](https://github.com/inspect-js/hasOwn/commit/01b92822f9971dea031eafdd14767df41d61c202) +- [types] improve predicate type [`d340f85`](https://github.com/inspect-js/hasOwn/commit/d340f85ce02e286ef61096cbbb6697081d40a12b) +- [Dev Deps] update `tape` [`70089fc`](https://github.com/inspect-js/hasOwn/commit/70089fcf544e64acc024cbe60f5a9b00acad86de) +- [Tests] use `@arethetypeswrong/cli` [`50b272c`](https://github.com/inspect-js/hasOwn/commit/50b272c829f40d053a3dd91c9796e0ac0b2af084) + +## [v2.0.1](https://github.com/inspect-js/hasOwn/compare/v2.0.0...v2.0.1) - 2024-02-10 + +### Commits + +- [types] use a handwritten d.ts file; fix exported type [`012b989`](https://github.com/inspect-js/hasOwn/commit/012b9898ccf91dc441e2ebf594ff70270a5fda58) +- [Dev Deps] update `@types/function-bind`, `@types/mock-property`, `@types/tape`, `aud`, `mock-property`, `npmignore`, `tape`, `typescript` [`977a56f`](https://github.com/inspect-js/hasOwn/commit/977a56f51a1f8b20566f3c471612137894644025) +- [meta] add `sideEffects` flag [`3a60b7b`](https://github.com/inspect-js/hasOwn/commit/3a60b7bf42fccd8c605e5f145a6fcc83b13cb46f) + +## [v2.0.0](https://github.com/inspect-js/hasOwn/compare/v1.0.1...v2.0.0) - 2023-10-19 + +### Commits + +- revamped implementation, tests, readme [`72bf8b3`](https://github.com/inspect-js/hasOwn/commit/72bf8b338e77a638f0a290c63ffaed18339c36b4) +- [meta] revamp package.json [`079775f`](https://github.com/inspect-js/hasOwn/commit/079775fb1ec72c1c6334069593617a0be3847458) +- Only apps should have lockfiles [`6640e23`](https://github.com/inspect-js/hasOwn/commit/6640e233d1bb8b65260880f90787637db157d215) + +## v1.0.1 - 2023-10-10 + +### Commits + +- Initial commit [`8dbfde6`](https://github.com/inspect-js/hasOwn/commit/8dbfde6e8fb0ebb076fab38d138f2984eb340a62) diff --git a/node_modules/hasown/LICENSE b/node_modules/hasown/LICENSE new file mode 100644 index 0000000..0314929 --- /dev/null +++ b/node_modules/hasown/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Jordan Harband and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/hasown/README.md b/node_modules/hasown/README.md new file mode 100644 index 0000000..f759b8a --- /dev/null +++ b/node_modules/hasown/README.md @@ -0,0 +1,40 @@ +# hasown <sup>[![Version Badge][npm-version-svg]][package-url]</sup> + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +A robust, ES3 compatible, "has own property" predicate. + +## Example + +```js +const assert = require('assert'); +const hasOwn = require('hasown'); + +assert.equal(hasOwn({}, 'toString'), false); +assert.equal(hasOwn([], 'length'), true); +assert.equal(hasOwn({ a: 42 }, 'a'), true); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/hasown +[npm-version-svg]: https://versionbadg.es/inspect-js/hasown.svg +[deps-svg]: https://david-dm.org/inspect-js/hasOwn.svg +[deps-url]: https://david-dm.org/inspect-js/hasOwn +[dev-deps-svg]: https://david-dm.org/inspect-js/hasOwn/dev-status.svg +[dev-deps-url]: https://david-dm.org/inspect-js/hasOwn#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/hasown.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/hasown.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/hasown.svg +[downloads-url]: https://npm-stat.com/charts.html?package=hasown +[codecov-image]: https://codecov.io/gh/inspect-js/hasOwn/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/inspect-js/hasOwn/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/hasOwn +[actions-url]: https://github.com/inspect-js/hasOwn/actions diff --git a/node_modules/hasown/index.d.ts b/node_modules/hasown/index.d.ts new file mode 100644 index 0000000..aafdf3b --- /dev/null +++ b/node_modules/hasown/index.d.ts @@ -0,0 +1,3 @@ +declare function hasOwn<O, K extends PropertyKey, V = unknown>(o: O, p: K): o is O & Record<K, V>; + +export = hasOwn; diff --git a/node_modules/hasown/index.js b/node_modules/hasown/index.js new file mode 100644 index 0000000..34e6059 --- /dev/null +++ b/node_modules/hasown/index.js @@ -0,0 +1,8 @@ +'use strict'; + +var call = Function.prototype.call; +var $hasOwn = Object.prototype.hasOwnProperty; +var bind = require('function-bind'); + +/** @type {import('.')} */ +module.exports = bind.call(call, $hasOwn); diff --git a/node_modules/hasown/package.json b/node_modules/hasown/package.json new file mode 100644 index 0000000..8502e13 --- /dev/null +++ b/node_modules/hasown/package.json @@ -0,0 +1,92 @@ +{ + "name": "hasown", + "version": "2.0.2", + "description": "A robust, ES3 compatible, \"has own property\" predicate.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "types": "index.d.ts", + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "npm run tsc", + "pretest": "npm run lint", + "tsc": "tsc -p .", + "posttsc": "attw -P", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/inspect-js/hasOwn.git" + }, + "keywords": [ + "has", + "hasOwnProperty", + "hasOwn", + "has-own", + "own", + "has", + "property", + "in", + "javascript", + "ecmascript" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/inspect-js/hasOwn/issues" + }, + "homepage": "https://github.com/inspect-js/hasOwn#readme", + "dependencies": { + "function-bind": "^1.1.2" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.15.1", + "@ljharb/eslint-config": "^21.1.0", + "@ljharb/tsconfig": "^0.2.0", + "@types/function-bind": "^1.1.10", + "@types/mock-property": "^1.0.2", + "@types/tape": "^5.6.4", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "mock-property": "^1.0.3", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.5", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "test" + ] + } +} diff --git a/node_modules/hasown/tsconfig.json b/node_modules/hasown/tsconfig.json new file mode 100644 index 0000000..0930c56 --- /dev/null +++ b/node_modules/hasown/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "@ljharb/tsconfig", + "exclude": [ + "coverage", + ], +} diff --git a/node_modules/humanize-ms/History.md b/node_modules/humanize-ms/History.md new file mode 100644 index 0000000..b159587 --- /dev/null +++ b/node_modules/humanize-ms/History.md @@ -0,0 +1,25 @@ + +1.2.1 / 2017-05-19 +================== + + * fix: package.json to reduce vulnerabilities (#3) + +1.2.0 / 2016-05-21 +================== + + * feat: warn with stack + +1.1.0 / 2016-04-04 +================== + + * deps: upgrade ms to 0.7.0 + +1.0.1 / 2014-12-31 +================== + + * feat(index.js): warn when result is undefined + +1.0.0 / 2014-08-14 +================== + + * init diff --git a/node_modules/humanize-ms/LICENSE b/node_modules/humanize-ms/LICENSE new file mode 100644 index 0000000..89de354 --- /dev/null +++ b/node_modules/humanize-ms/LICENSE @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/humanize-ms/README.md b/node_modules/humanize-ms/README.md new file mode 100644 index 0000000..20a2ca3 --- /dev/null +++ b/node_modules/humanize-ms/README.md @@ -0,0 +1,40 @@ +humanize-ms +--------------- + +[![NPM version][npm-image]][npm-url] +[![build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] +[![Gittip][gittip-image]][gittip-url] +[![David deps][david-image]][david-url] + +[npm-image]: https://img.shields.io/npm/v/humanize-ms.svg?style=flat +[npm-url]: https://npmjs.org/package/humanize-ms +[travis-image]: https://img.shields.io/travis/node-modules/humanize-ms.svg?style=flat +[travis-url]: https://travis-ci.org/node-modules/humanize-ms +[coveralls-image]: https://img.shields.io/coveralls/node-modules/humanize-ms.svg?style=flat +[coveralls-url]: https://coveralls.io/r/node-modules/humanize-ms?branch=master +[gittip-image]: https://img.shields.io/gittip/dead-horse.svg?style=flat +[gittip-url]: https://www.gittip.com/dead-horse/ +[david-image]: https://img.shields.io/david/node-modules/humanize-ms.svg?style=flat +[david-url]: https://david-dm.org/node-modules/humanize-ms + +transform humanize time to ms + +## Installation + +```bash +$ npm install humanize-ms +``` + +## Examples + +```js +var ms = require('humanize-ms'); + +ms('1s') // 1000 +ms(1000) // 1000 +``` + +### License + +MIT diff --git a/node_modules/humanize-ms/index.js b/node_modules/humanize-ms/index.js new file mode 100644 index 0000000..660df81 --- /dev/null +++ b/node_modules/humanize-ms/index.js @@ -0,0 +1,24 @@ +/*! + * humanize-ms - index.js + * Copyright(c) 2014 dead_horse <dead_horse@qq.com> + * MIT Licensed + */ + +'use strict'; + +/** + * Module dependencies. + */ + +var util = require('util'); +var ms = require('ms'); + +module.exports = function (t) { + if (typeof t === 'number') return t; + var r = ms(t); + if (r === undefined) { + var err = new Error(util.format('humanize-ms(%j) result undefined', t)); + console.warn(err.stack); + } + return r; +}; diff --git a/node_modules/humanize-ms/package.json b/node_modules/humanize-ms/package.json new file mode 100644 index 0000000..da4ab7f --- /dev/null +++ b/node_modules/humanize-ms/package.json @@ -0,0 +1,37 @@ +{ + "name": "humanize-ms", + "version": "1.2.1", + "description": "transform humanize time to ms", + "main": "index.js", + "files": [ + "index.js" + ], + "scripts": { + "test": "make test" + }, + "keywords": [ + "humanize", + "ms" + ], + "author": { + "name": "dead-horse", + "email": "dead_horse@qq.com", + "url": "http://deadhorse.me" + }, + "repository": { + "type": "git", + "url": "https://github.com/node-modules/humanize-ms" + }, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + }, + "devDependencies": { + "autod": "*", + "beautify-benchmark": "~0.2.4", + "benchmark": "~1.0.0", + "istanbul": "*", + "mocha": "*", + "should": "*" + } +} diff --git a/node_modules/iconv-lite/.github/dependabot.yml b/node_modules/iconv-lite/.github/dependabot.yml new file mode 100644 index 0000000..e4a0e0a --- /dev/null +++ b/node_modules/iconv-lite/.github/dependabot.yml @@ -0,0 +1,11 @@ +# Please see the documentation for all configuration options: +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "daily" + allow: + - dependency-type: production diff --git a/node_modules/iconv-lite/.idea/codeStyles/Project.xml b/node_modules/iconv-lite/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..3f2688c --- /dev/null +++ b/node_modules/iconv-lite/.idea/codeStyles/Project.xml @@ -0,0 +1,47 @@ +<component name="ProjectCodeStyleConfiguration"> + <code_scheme name="Project" version="173"> + <HTMLCodeStyleSettings> + <option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" /> + <option name="HTML_ENFORCE_QUOTES" value="true" /> + </HTMLCodeStyleSettings> + <JSCodeStyleSettings version="0"> + <option name="FORCE_SEMICOLON_STYLE" value="true" /> + <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" /> + <option name="FORCE_QUOTE_STYlE" value="true" /> + <option name="ENFORCE_TRAILING_COMMA" value="Remove" /> + <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" /> + <option name="SPACES_WITHIN_IMPORTS" value="true" /> + </JSCodeStyleSettings> + <TypeScriptCodeStyleSettings version="0"> + <option name="FORCE_SEMICOLON_STYLE" value="true" /> + <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" /> + <option name="FORCE_QUOTE_STYlE" value="true" /> + <option name="ENFORCE_TRAILING_COMMA" value="Remove" /> + <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" /> + <option name="SPACES_WITHIN_IMPORTS" value="true" /> + </TypeScriptCodeStyleSettings> + <VueCodeStyleSettings> + <option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" /> + <option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" /> + </VueCodeStyleSettings> + <codeStyleSettings language="HTML"> + <option name="SOFT_MARGINS" value="100" /> + <indentOptions> + <option name="CONTINUATION_INDENT_SIZE" value="4" /> + </indentOptions> + </codeStyleSettings> + <codeStyleSettings language="JavaScript"> + <option name="SOFT_MARGINS" value="100" /> + </codeStyleSettings> + <codeStyleSettings language="TypeScript"> + <option name="SOFT_MARGINS" value="100" /> + </codeStyleSettings> + <codeStyleSettings language="Vue"> + <option name="SOFT_MARGINS" value="100" /> + <indentOptions> + <option name="INDENT_SIZE" value="4" /> + <option name="TAB_SIZE" value="4" /> + </indentOptions> + </codeStyleSettings> + </code_scheme> +</component> \ No newline at end of file diff --git a/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml b/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ +<component name="ProjectCodeStyleConfiguration"> + <state> + <option name="USE_PER_PROJECT_SETTINGS" value="true" /> + </state> +</component> \ No newline at end of file diff --git a/node_modules/iconv-lite/.idea/iconv-lite.iml b/node_modules/iconv-lite/.idea/iconv-lite.iml new file mode 100644 index 0000000..0c8867d --- /dev/null +++ b/node_modules/iconv-lite/.idea/iconv-lite.iml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="WEB_MODULE" version="4"> + <component name="NewModuleRootManager"> + <content url="file://$MODULE_DIR$"> + <excludeFolder url="file://$MODULE_DIR$/temp" /> + <excludeFolder url="file://$MODULE_DIR$/.tmp" /> + <excludeFolder url="file://$MODULE_DIR$/tmp" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module> \ No newline at end of file diff --git a/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml b/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..03d9549 --- /dev/null +++ b/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ +<component name="InspectionProjectProfileManager"> + <profile version="1.0"> + <option name="myName" value="Project Default" /> + <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" /> + </profile> +</component> \ No newline at end of file diff --git a/node_modules/iconv-lite/.idea/modules.xml b/node_modules/iconv-lite/.idea/modules.xml new file mode 100644 index 0000000..5d24f2e --- /dev/null +++ b/node_modules/iconv-lite/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/.idea/iconv-lite.iml" filepath="$PROJECT_DIR$/.idea/iconv-lite.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/node_modules/iconv-lite/.idea/vcs.xml b/node_modules/iconv-lite/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/node_modules/iconv-lite/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="$PROJECT_DIR$" vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/node_modules/iconv-lite/Changelog.md b/node_modules/iconv-lite/Changelog.md new file mode 100644 index 0000000..464549b --- /dev/null +++ b/node_modules/iconv-lite/Changelog.md @@ -0,0 +1,212 @@ +## 0.6.3 / 2021-05-23 + * Fix HKSCS encoding to prefer Big5 codes if both Big5 and HKSCS codes are possible (#264) + + +## 0.6.2 / 2020-07-08 + * Support Uint8Array-s decoding without conversion to Buffers, plus fix an edge case. + + +## 0.6.1 / 2020-06-28 + * Support Uint8Array-s directly when decoding (#246, by @gyzerok) + * Unify package.json version ranges to be strictly semver-compatible (#241) + * Fix minor issue in UTF-32 decoder's endianness detection code. + + +## 0.6.0 / 2020-06-08 + * Updated 'gb18030' encoding to :2005 edition (see https://github.com/whatwg/encoding/issues/22). + * Removed `iconv.extendNodeEncodings()` mechanism. It was deprecated 5 years ago and didn't work + in recent Node versions. + * Reworked Streaming API behavior in browser environments to fix #204. Streaming API will be + excluded by default in browser packs, saving ~100Kb bundle size, unless enabled explicitly using + `iconv.enableStreamingAPI(require('stream'))`. + * Updates to development environment & tests: + * Added ./test/webpack private package to test complex new use cases that need custom environment. + It's tested as a separate job in Travis CI. + * Updated generation code for the new EUC-KR index file format from Encoding Standard. + * Removed Buffer() constructor in tests (#197 by @gabrielschulhof). + + +## 0.5.2 / 2020-06-08 + * Added `iconv.getEncoder()` and `iconv.getDecoder()` methods to typescript definitions (#229). + * Fixed semver version to 6.1.2 to support Node 8.x (by @tanandara). + * Capped iconv version to 2.x as 3.x has dropped support for older Node versions. + * Switched from instanbul to c8 for code coverage. + + +## 0.5.1 / 2020-01-18 + + * Added cp720 encoding (#221, by @kr-deps) + * (minor) Changed Changelog.md formatting to use h2. + + +## 0.5.0 / 2019-06-26 + + * Added UTF-32 encoding, both little-endian and big-endian variants (UTF-32LE, UTF32-BE). If endianness + is not provided for decoding, it's deduced automatically from the stream using a heuristic similar to + what we use in UTF-16. (great work in #216 by @kshetline) + * Several minor updates to README (#217 by @oldj, plus some more) + * Added Node versions 10 and 12 to Travis test harness. + + +## 0.4.24 / 2018-08-22 + + * Added MIK encoding (#196, by @Ivan-Kalatchev) + + +## 0.4.23 / 2018-05-07 + + * Fix deprecation warning in Node v10 due to the last usage of `new Buffer` (#185, by @felixbuenemann) + * Switched from NodeBuffer to Buffer in typings (#155 by @felixfbecker, #186 by @larssn) + + +## 0.4.22 / 2018-05-05 + + * Use older semver style for dependencies to be compatible with Node version 0.10 (#182, by @dougwilson) + * Fix tests to accomodate fixes in Node v10 (#182, by @dougwilson) + + +## 0.4.21 / 2018-04-06 + + * Fix encoding canonicalization (#156) + * Fix the paths in the "browser" field in package.json (#174 by @LMLB) + * Removed "contributors" section in package.json - see Git history instead. + + +## 0.4.20 / 2018-04-06 + + * Updated `new Buffer()` usages with recommended replacements as it's being deprecated in Node v10 (#176, #178 by @ChALkeR) + + +## 0.4.19 / 2017-09-09 + + * Fixed iso8859-1 codec regression in handling untranslatable characters (#162, caused by #147) + * Re-generated windows1255 codec, because it was updated in iconv project + * Fixed grammar in error message when iconv-lite is loaded with encoding other than utf8 + + +## 0.4.18 / 2017-06-13 + + * Fixed CESU-8 regression in Node v8. + + +## 0.4.17 / 2017-04-22 + + * Updated typescript definition file to support Angular 2 AoT mode (#153 by @larssn) + + +## 0.4.16 / 2017-04-22 + + * Added support for React Native (#150) + * Changed iso8859-1 encoding to usine internal 'binary' encoding, as it's the same thing (#147 by @mscdex) + * Fixed typo in Readme (#138 by @jiangzhuo) + * Fixed build for Node v6.10+ by making correct version comparison + * Added a warning if iconv-lite is loaded not as utf-8 (see #142) + + +## 0.4.15 / 2016-11-21 + + * Fixed typescript type definition (#137) + + +## 0.4.14 / 2016-11-20 + + * Preparation for v1.0 + * Added Node v6 and latest Node versions to Travis CI test rig + * Deprecated Node v0.8 support + * Typescript typings (@larssn) + * Fix encoding of Euro character in GB 18030 (inspired by @lygstate) + * Add ms prefix to dbcs windows encodings (@rokoroku) + + +## 0.4.13 / 2015-10-01 + + * Fix silly mistake in deprecation notice. + + +## 0.4.12 / 2015-09-26 + + * Node v4 support: + * Added CESU-8 decoding (#106) + * Added deprecation notice for `extendNodeEncodings` + * Added Travis tests for Node v4 and io.js latest (#105 by @Mithgol) + + +## 0.4.11 / 2015-07-03 + + * Added CESU-8 encoding. + + +## 0.4.10 / 2015-05-26 + + * Changed UTF-16 endianness heuristic to take into account any ASCII chars, not + just spaces. This should minimize the importance of "default" endianness. + + +## 0.4.9 / 2015-05-24 + + * Streamlined BOM handling: strip BOM by default, add BOM when encoding if + addBOM: true. Added docs to Readme. + * UTF16 now uses UTF16-LE by default. + * Fixed minor issue with big5 encoding. + * Added io.js testing on Travis; updated node-iconv version to test against. + Now we just skip testing SBCS encodings that node-iconv doesn't support. + * (internal refactoring) Updated codec interface to use classes. + * Use strict mode in all files. + + +## 0.4.8 / 2015-04-14 + + * added alias UNICODE-1-1-UTF-7 for UTF-7 encoding (#94) + + +## 0.4.7 / 2015-02-05 + + * stop official support of Node.js v0.8. Should still work, but no guarantees. + reason: Packages needed for testing are hard to get on Travis CI. + * work in environment where Object.prototype is monkey patched with enumerable + props (#89). + + +## 0.4.6 / 2015-01-12 + + * fix rare aliases of single-byte encodings (thanks @mscdex) + * double the timeout for dbcs tests to make them less flaky on travis + + +## 0.4.5 / 2014-11-20 + + * fix windows-31j and x-sjis encoding support (@nleush) + * minor fix: undefined variable reference when internal error happens + + +## 0.4.4 / 2014-07-16 + + * added encodings UTF-7 (RFC2152) and UTF-7-IMAP (RFC3501 Section 5.1.3) + * fixed streaming base64 encoding + + +## 0.4.3 / 2014-06-14 + + * added encodings UTF-16BE and UTF-16 with BOM + + +## 0.4.2 / 2014-06-12 + + * don't throw exception if `extendNodeEncodings()` is called more than once + + +## 0.4.1 / 2014-06-11 + + * codepage 808 added + + +## 0.4.0 / 2014-06-10 + + * code is rewritten from scratch + * all widespread encodings are supported + * streaming interface added + * browserify compatibility added + * (optional) extend core primitive encodings to make usage even simpler + * moved from vows to mocha as the testing framework + + diff --git a/node_modules/iconv-lite/LICENSE b/node_modules/iconv-lite/LICENSE new file mode 100644 index 0000000..d518d83 --- /dev/null +++ b/node_modules/iconv-lite/LICENSE @@ -0,0 +1,21 @@ +Copyright (c) 2011 Alexander Shtuchkin + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/node_modules/iconv-lite/README.md b/node_modules/iconv-lite/README.md new file mode 100644 index 0000000..3c97f87 --- /dev/null +++ b/node_modules/iconv-lite/README.md @@ -0,0 +1,130 @@ +## iconv-lite: Pure JS character encoding conversion + + * No need for native code compilation. Quick to install, works on Windows and in sandboxed environments like [Cloud9](http://c9.io). + * Used in popular projects like [Express.js (body_parser)](https://github.com/expressjs/body-parser), + [Grunt](http://gruntjs.com/), [Nodemailer](http://www.nodemailer.com/), [Yeoman](http://yeoman.io/) and others. + * Faster than [node-iconv](https://github.com/bnoordhuis/node-iconv) (see below for performance comparison). + * Intuitive encode/decode API, including Streaming support. + * In-browser usage via [browserify](https://github.com/substack/node-browserify) or [webpack](https://webpack.js.org/) (~180kb gzip compressed with Buffer shim included). + * Typescript [type definition file](https://github.com/ashtuchkin/iconv-lite/blob/master/lib/index.d.ts) included. + * React Native is supported (need to install `stream` module to enable Streaming API). + * License: MIT. + +[![NPM Stats](https://nodei.co/npm/iconv-lite.png)](https://npmjs.org/package/iconv-lite/) +[![Build Status](https://travis-ci.org/ashtuchkin/iconv-lite.svg?branch=master)](https://travis-ci.org/ashtuchkin/iconv-lite) +[![npm](https://img.shields.io/npm/v/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) +[![npm downloads](https://img.shields.io/npm/dm/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) +[![npm bundle size](https://img.shields.io/bundlephobia/min/iconv-lite.svg)](https://npmjs.org/package/iconv-lite/) + +## Usage +### Basic API +```javascript +var iconv = require('iconv-lite'); + +// Convert from an encoded buffer to a js string. +str = iconv.decode(Buffer.from([0x68, 0x65, 0x6c, 0x6c, 0x6f]), 'win1251'); + +// Convert from a js string to an encoded buffer. +buf = iconv.encode("Sample input string", 'win1251'); + +// Check if encoding is supported +iconv.encodingExists("us-ascii") +``` + +### Streaming API +```javascript + +// Decode stream (from binary data stream to js strings) +http.createServer(function(req, res) { + var converterStream = iconv.decodeStream('win1251'); + req.pipe(converterStream); + + converterStream.on('data', function(str) { + console.log(str); // Do something with decoded strings, chunk-by-chunk. + }); +}); + +// Convert encoding streaming example +fs.createReadStream('file-in-win1251.txt') + .pipe(iconv.decodeStream('win1251')) + .pipe(iconv.encodeStream('ucs2')) + .pipe(fs.createWriteStream('file-in-ucs2.txt')); + +// Sugar: all encode/decode streams have .collect(cb) method to accumulate data. +http.createServer(function(req, res) { + req.pipe(iconv.decodeStream('win1251')).collect(function(err, body) { + assert(typeof body == 'string'); + console.log(body); // full request body string + }); +}); +``` + +## Supported encodings + + * All node.js native encodings: utf8, ucs2 / utf16-le, ascii, binary, base64, hex. + * Additional unicode encodings: utf16, utf16-be, utf-7, utf-7-imap, utf32, utf32-le, and utf32-be. + * All widespread singlebyte encodings: Windows 125x family, ISO-8859 family, + IBM/DOS codepages, Macintosh family, KOI8 family, all others supported by iconv library. + Aliases like 'latin1', 'us-ascii' also supported. + * All widespread multibyte encodings: CP932, CP936, CP949, CP950, GB2312, GBK, GB18030, Big5, Shift_JIS, EUC-JP. + +See [all supported encodings on wiki](https://github.com/ashtuchkin/iconv-lite/wiki/Supported-Encodings). + +Most singlebyte encodings are generated automatically from [node-iconv](https://github.com/bnoordhuis/node-iconv). Thank you Ben Noordhuis and libiconv authors! + +Multibyte encodings are generated from [Unicode.org mappings](http://www.unicode.org/Public/MAPPINGS/) and [WHATWG Encoding Standard mappings](http://encoding.spec.whatwg.org/). Thank you, respective authors! + + +## Encoding/decoding speed + +Comparison with node-iconv module (1000x256kb, on MacBook Pro, Core i5/2.6 GHz, Node v0.12.0). +Note: your results may vary, so please always check on your hardware. + + operation iconv@2.1.4 iconv-lite@0.4.7 + ---------------------------------------------------------- + encode('win1251') ~96 Mb/s ~320 Mb/s + decode('win1251') ~95 Mb/s ~246 Mb/s + +## BOM handling + + * Decoding: BOM is stripped by default, unless overridden by passing `stripBOM: false` in options + (f.ex. `iconv.decode(buf, enc, {stripBOM: false})`). + A callback might also be given as a `stripBOM` parameter - it'll be called if BOM character was actually found. + * If you want to detect UTF-8 BOM when decoding other encodings, use [node-autodetect-decoder-stream](https://github.com/danielgindi/node-autodetect-decoder-stream) module. + * Encoding: No BOM added, unless overridden by `addBOM: true` option. + +## UTF-16 Encodings + +This library supports UTF-16LE, UTF-16BE and UTF-16 encodings. First two are straightforward, but UTF-16 is trying to be +smart about endianness in the following ways: + * Decoding: uses BOM and 'spaces heuristic' to determine input endianness. Default is UTF-16LE, but can be + overridden with `defaultEncoding: 'utf-16be'` option. Strips BOM unless `stripBOM: false`. + * Encoding: uses UTF-16LE and writes BOM by default. Use `addBOM: false` to override. + +## UTF-32 Encodings + +This library supports UTF-32LE, UTF-32BE and UTF-32 encodings. Like the UTF-16 encoding above, UTF-32 defaults to UTF-32LE, but uses BOM and 'spaces heuristics' to determine input endianness. + * The default of UTF-32LE can be overridden with the `defaultEncoding: 'utf-32be'` option. Strips BOM unless `stripBOM: false`. + * Encoding: uses UTF-32LE and writes BOM by default. Use `addBOM: false` to override. (`defaultEncoding: 'utf-32be'` can also be used here to change encoding.) + +## Other notes + +When decoding, be sure to supply a Buffer to decode() method, otherwise [bad things usually happen](https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding). +Untranslatable characters are set to � or ?. No transliteration is currently supported. +Node versions 0.10.31 and 0.11.13 are buggy, don't use them (see #65, #77). + +## Testing + +```bash +$ git clone git@github.com:ashtuchkin/iconv-lite.git +$ cd iconv-lite +$ npm install +$ npm test + +$ # To view performance: +$ node test/performance.js + +$ # To view test coverage: +$ npm run coverage +$ open coverage/lcov-report/index.html +``` diff --git a/node_modules/iconv-lite/encodings/dbcs-codec.js b/node_modules/iconv-lite/encodings/dbcs-codec.js new file mode 100644 index 0000000..fa83917 --- /dev/null +++ b/node_modules/iconv-lite/encodings/dbcs-codec.js @@ -0,0 +1,597 @@ +"use strict"; +var Buffer = require("safer-buffer").Buffer; + +// Multibyte codec. In this scheme, a character is represented by 1 or more bytes. +// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences. +// To save memory and loading time, we read table files only when requested. + +exports._dbcs = DBCSCodec; + +var UNASSIGNED = -1, + GB18030_CODE = -2, + SEQ_START = -10, + NODE_START = -1000, + UNASSIGNED_NODE = new Array(0x100), + DEF_CHAR = -1; + +for (var i = 0; i < 0x100; i++) + UNASSIGNED_NODE[i] = UNASSIGNED; + + +// Class DBCSCodec reads and initializes mapping tables. +function DBCSCodec(codecOptions, iconv) { + this.encodingName = codecOptions.encodingName; + if (!codecOptions) + throw new Error("DBCS codec is called without the data.") + if (!codecOptions.table) + throw new Error("Encoding '" + this.encodingName + "' has no data."); + + // Load tables. + var mappingTable = codecOptions.table(); + + + // Decode tables: MBCS -> Unicode. + + // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256. + // Trie root is decodeTables[0]. + // Values: >= 0 -> unicode character code. can be > 0xFFFF + // == UNASSIGNED -> unknown/unassigned sequence. + // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence. + // <= NODE_START -> index of the next node in our trie to process next byte. + // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq. + this.decodeTables = []; + this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node. + + // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. + this.decodeTableSeq = []; + + // Actual mapping tables consist of chunks. Use them to fill up decode tables. + for (var i = 0; i < mappingTable.length; i++) + this._addDecodeChunk(mappingTable[i]); + + // Load & create GB18030 tables when needed. + if (typeof codecOptions.gb18030 === 'function') { + this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges. + + // Add GB18030 common decode nodes. + var commonThirdByteNodeIdx = this.decodeTables.length; + this.decodeTables.push(UNASSIGNED_NODE.slice(0)); + + var commonFourthByteNodeIdx = this.decodeTables.length; + this.decodeTables.push(UNASSIGNED_NODE.slice(0)); + + // Fill out the tree + var firstByteNode = this.decodeTables[0]; + for (var i = 0x81; i <= 0xFE; i++) { + var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]]; + for (var j = 0x30; j <= 0x39; j++) { + if (secondByteNode[j] === UNASSIGNED) { + secondByteNode[j] = NODE_START - commonThirdByteNodeIdx; + } else if (secondByteNode[j] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 2"); + } + + var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]]; + for (var k = 0x81; k <= 0xFE; k++) { + if (thirdByteNode[k] === UNASSIGNED) { + thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx; + } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) { + continue; + } else if (thirdByteNode[k] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 3"); + } + + var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]]; + for (var l = 0x30; l <= 0x39; l++) { + if (fourthByteNode[l] === UNASSIGNED) + fourthByteNode[l] = GB18030_CODE; + } + } + } + } + } + + this.defaultCharUnicode = iconv.defaultCharUnicode; + + + // Encode tables: Unicode -> DBCS. + + // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance. + // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null. + // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.). + // == UNASSIGNED -> no conversion found. Output a default char. + // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence. + this.encodeTable = []; + + // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of + // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key + // means end of sequence (needed when one sequence is a strict subsequence of another). + // Objects are kept separately from encodeTable to increase performance. + this.encodeTableSeq = []; + + // Some chars can be decoded, but need not be encoded. + var skipEncodeChars = {}; + if (codecOptions.encodeSkipVals) + for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) { + var val = codecOptions.encodeSkipVals[i]; + if (typeof val === 'number') + skipEncodeChars[val] = true; + else + for (var j = val.from; j <= val.to; j++) + skipEncodeChars[j] = true; + } + + // Use decode trie to recursively fill out encode tables. + this._fillEncodeTable(0, 0, skipEncodeChars); + + // Add more encoding pairs when needed. + if (codecOptions.encodeAdd) { + for (var uChar in codecOptions.encodeAdd) + if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) + this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); + } + + this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; + if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?']; + if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); +} + +DBCSCodec.prototype.encoder = DBCSEncoder; +DBCSCodec.prototype.decoder = DBCSDecoder; + +// Decoder helpers +DBCSCodec.prototype._getDecodeTrieNode = function(addr) { + var bytes = []; + for (; addr > 0; addr >>>= 8) + bytes.push(addr & 0xFF); + if (bytes.length == 0) + bytes.push(0); + + var node = this.decodeTables[0]; + for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie. + var val = node[bytes[i]]; + + if (val == UNASSIGNED) { // Create new node. + node[bytes[i]] = NODE_START - this.decodeTables.length; + this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); + } + else if (val <= NODE_START) { // Existing node. + node = this.decodeTables[NODE_START - val]; + } + else + throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); + } + return node; +} + + +DBCSCodec.prototype._addDecodeChunk = function(chunk) { + // First element of chunk is the hex mbcs code where we start. + var curAddr = parseInt(chunk[0], 16); + + // Choose the decoding node where we'll write our chars. + var writeTable = this._getDecodeTrieNode(curAddr); + curAddr = curAddr & 0xFF; + + // Write all other elements of the chunk to the table. + for (var k = 1; k < chunk.length; k++) { + var part = chunk[k]; + if (typeof part === "string") { // String, write as-is. + for (var l = 0; l < part.length;) { + var code = part.charCodeAt(l++); + if (0xD800 <= code && code < 0xDC00) { // Decode surrogate + var codeTrail = part.charCodeAt(l++); + if (0xDC00 <= codeTrail && codeTrail < 0xE000) + writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00); + else + throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); + } + else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used) + var len = 0xFFF - code + 2; + var seq = []; + for (var m = 0; m < len; m++) + seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq. + + writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; + this.decodeTableSeq.push(seq); + } + else + writeTable[curAddr++] = code; // Basic char + } + } + else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character. + var charCode = writeTable[curAddr - 1] + 1; + for (var l = 0; l < part; l++) + writeTable[curAddr++] = charCode++; + } + else + throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); + } + if (curAddr > 0xFF) + throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); +} + +// Encoder helpers +DBCSCodec.prototype._getEncodeBucket = function(uCode) { + var high = uCode >> 8; // This could be > 0xFF because of astral characters. + if (this.encodeTable[high] === undefined) + this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand. + return this.encodeTable[high]; +} + +DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 0xFF; + if (bucket[low] <= SEQ_START) + this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it. + else if (bucket[low] == UNASSIGNED) + bucket[low] = dbcsCode; +} + +DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { + + // Get the root of character tree according to first character of the sequence. + var uCode = seq[0]; + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 0xFF; + + var node; + if (bucket[low] <= SEQ_START) { + // There's already a sequence with - use it. + node = this.encodeTableSeq[SEQ_START-bucket[low]]; + } + else { + // There was no sequence object - allocate a new one. + node = {}; + if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence. + bucket[low] = SEQ_START - this.encodeTableSeq.length; + this.encodeTableSeq.push(node); + } + + // Traverse the character tree, allocating new nodes as needed. + for (var j = 1; j < seq.length-1; j++) { + var oldVal = node[uCode]; + if (typeof oldVal === 'object') + node = oldVal; + else { + node = node[uCode] = {} + if (oldVal !== undefined) + node[DEF_CHAR] = oldVal + } + } + + // Set the leaf to given dbcsCode. + uCode = seq[seq.length-1]; + node[uCode] = dbcsCode; +} + +DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { + var node = this.decodeTables[nodeIdx]; + var hasValues = false; + var subNodeEmpty = {}; + for (var i = 0; i < 0x100; i++) { + var uCode = node[i]; + var mbCode = prefix + i; + if (skipEncodeChars[mbCode]) + continue; + + if (uCode >= 0) { + this._setEncodeChar(uCode, mbCode); + hasValues = true; + } else if (uCode <= NODE_START) { + var subNodeIdx = NODE_START - uCode; + if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030). + var newPrefix = (mbCode << 8) >>> 0; // NOTE: '>>> 0' keeps 32-bit num positive. + if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) + hasValues = true; + else + subNodeEmpty[subNodeIdx] = true; + } + } else if (uCode <= SEQ_START) { + this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); + hasValues = true; + } + } + return hasValues; +} + + + +// == Encoder ================================================================== + +function DBCSEncoder(options, codec) { + // Encoder state + this.leadSurrogate = -1; + this.seqObj = undefined; + + // Static data + this.encodeTable = codec.encodeTable; + this.encodeTableSeq = codec.encodeTableSeq; + this.defaultCharSingleByte = codec.defCharSB; + this.gb18030 = codec.gb18030; +} + +DBCSEncoder.prototype.write = function(str) { + var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)), + leadSurrogate = this.leadSurrogate, + seqObj = this.seqObj, nextChar = -1, + i = 0, j = 0; + + while (true) { + // 0. Get next character. + if (nextChar === -1) { + if (i == str.length) break; + var uCode = str.charCodeAt(i++); + } + else { + var uCode = nextChar; + nextChar = -1; + } + + // 1. Handle surrogates. + if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates. + if (uCode < 0xDC00) { // We've got lead surrogate. + if (leadSurrogate === -1) { + leadSurrogate = uCode; + continue; + } else { + leadSurrogate = uCode; + // Double lead surrogate found. + uCode = UNASSIGNED; + } + } else { // We've got trail surrogate. + if (leadSurrogate !== -1) { + uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00); + leadSurrogate = -1; + } else { + // Incomplete surrogate pair - only trail surrogate found. + uCode = UNASSIGNED; + } + + } + } + else if (leadSurrogate !== -1) { + // Incomplete surrogate pair - only lead surrogate found. + nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char. + leadSurrogate = -1; + } + + // 2. Convert uCode character. + var dbcsCode = UNASSIGNED; + if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence + var resCode = seqObj[uCode]; + if (typeof resCode === 'object') { // Sequence continues. + seqObj = resCode; + continue; + + } else if (typeof resCode == 'number') { // Sequence finished. Write it. + dbcsCode = resCode; + + } else if (resCode == undefined) { // Current character is not part of the sequence. + + // Try default character for this sequence + resCode = seqObj[DEF_CHAR]; + if (resCode !== undefined) { + dbcsCode = resCode; // Found. Write it. + nextChar = uCode; // Current character will be written too in the next iteration. + + } else { + // TODO: What if we have no default? (resCode == undefined) + // Then, we should write first char of the sequence as-is and try the rest recursively. + // Didn't do it for now because no encoding has this situation yet. + // Currently, just skip the sequence and write current char. + } + } + seqObj = undefined; + } + else if (uCode >= 0) { // Regular character + var subtable = this.encodeTable[uCode >> 8]; + if (subtable !== undefined) + dbcsCode = subtable[uCode & 0xFF]; + + if (dbcsCode <= SEQ_START) { // Sequence start + seqObj = this.encodeTableSeq[SEQ_START-dbcsCode]; + continue; + } + + if (dbcsCode == UNASSIGNED && this.gb18030) { + // Use GB18030 algorithm to find character(s) to write. + var idx = findIdx(this.gb18030.uChars, uCode); + if (idx != -1) { + var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); + newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600; + newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260; + newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10; + newBuf[j++] = 0x30 + dbcsCode; + continue; + } + } + } + + // 3. Write dbcsCode character. + if (dbcsCode === UNASSIGNED) + dbcsCode = this.defaultCharSingleByte; + + if (dbcsCode < 0x100) { + newBuf[j++] = dbcsCode; + } + else if (dbcsCode < 0x10000) { + newBuf[j++] = dbcsCode >> 8; // high byte + newBuf[j++] = dbcsCode & 0xFF; // low byte + } + else if (dbcsCode < 0x1000000) { + newBuf[j++] = dbcsCode >> 16; + newBuf[j++] = (dbcsCode >> 8) & 0xFF; + newBuf[j++] = dbcsCode & 0xFF; + } else { + newBuf[j++] = dbcsCode >>> 24; + newBuf[j++] = (dbcsCode >>> 16) & 0xFF; + newBuf[j++] = (dbcsCode >>> 8) & 0xFF; + newBuf[j++] = dbcsCode & 0xFF; + } + } + + this.seqObj = seqObj; + this.leadSurrogate = leadSurrogate; + return newBuf.slice(0, j); +} + +DBCSEncoder.prototype.end = function() { + if (this.leadSurrogate === -1 && this.seqObj === undefined) + return; // All clean. Most often case. + + var newBuf = Buffer.alloc(10), j = 0; + + if (this.seqObj) { // We're in the sequence. + var dbcsCode = this.seqObj[DEF_CHAR]; + if (dbcsCode !== undefined) { // Write beginning of the sequence. + if (dbcsCode < 0x100) { + newBuf[j++] = dbcsCode; + } + else { + newBuf[j++] = dbcsCode >> 8; // high byte + newBuf[j++] = dbcsCode & 0xFF; // low byte + } + } else { + // See todo above. + } + this.seqObj = undefined; + } + + if (this.leadSurrogate !== -1) { + // Incomplete surrogate pair - only lead surrogate found. + newBuf[j++] = this.defaultCharSingleByte; + this.leadSurrogate = -1; + } + + return newBuf.slice(0, j); +} + +// Export for testing +DBCSEncoder.prototype.findIdx = findIdx; + + +// == Decoder ================================================================== + +function DBCSDecoder(options, codec) { + // Decoder state + this.nodeIdx = 0; + this.prevBytes = []; + + // Static data + this.decodeTables = codec.decodeTables; + this.decodeTableSeq = codec.decodeTableSeq; + this.defaultCharUnicode = codec.defaultCharUnicode; + this.gb18030 = codec.gb18030; +} + +DBCSDecoder.prototype.write = function(buf) { + var newBuf = Buffer.alloc(buf.length*2), + nodeIdx = this.nodeIdx, + prevBytes = this.prevBytes, prevOffset = this.prevBytes.length, + seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence. + uCode; + + for (var i = 0, j = 0; i < buf.length; i++) { + var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset]; + + // Lookup in current trie node. + var uCode = this.decodeTables[nodeIdx][curByte]; + + if (uCode >= 0) { + // Normal character, just use it. + } + else if (uCode === UNASSIGNED) { // Unknown char. + // TODO: Callback with seq. + uCode = this.defaultCharUnicode.charCodeAt(0); + i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again. + } + else if (uCode === GB18030_CODE) { + if (i >= 3) { + var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30); + } else { + var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + + (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + + (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + + (curByte-0x30); + } + var idx = findIdx(this.gb18030.gbChars, ptr); + uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; + } + else if (uCode <= NODE_START) { // Go to next trie node. + nodeIdx = NODE_START - uCode; + continue; + } + else if (uCode <= SEQ_START) { // Output a sequence of chars. + var seq = this.decodeTableSeq[SEQ_START - uCode]; + for (var k = 0; k < seq.length - 1; k++) { + uCode = seq[k]; + newBuf[j++] = uCode & 0xFF; + newBuf[j++] = uCode >> 8; + } + uCode = seq[seq.length-1]; + } + else + throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); + + // Write the character to buffer, handling higher planes using surrogate pair. + if (uCode >= 0x10000) { + uCode -= 0x10000; + var uCodeLead = 0xD800 | (uCode >> 10); + newBuf[j++] = uCodeLead & 0xFF; + newBuf[j++] = uCodeLead >> 8; + + uCode = 0xDC00 | (uCode & 0x3FF); + } + newBuf[j++] = uCode & 0xFF; + newBuf[j++] = uCode >> 8; + + // Reset trie node. + nodeIdx = 0; seqStart = i+1; + } + + this.nodeIdx = nodeIdx; + this.prevBytes = (seqStart >= 0) + ? Array.prototype.slice.call(buf, seqStart) + : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf)); + + return newBuf.slice(0, j).toString('ucs2'); +} + +DBCSDecoder.prototype.end = function() { + var ret = ''; + + // Try to parse all remaining chars. + while (this.prevBytes.length > 0) { + // Skip 1 character in the buffer. + ret += this.defaultCharUnicode; + var bytesArr = this.prevBytes.slice(1); + + // Parse remaining as usual. + this.prevBytes = []; + this.nodeIdx = 0; + if (bytesArr.length > 0) + ret += this.write(bytesArr); + } + + this.prevBytes = []; + this.nodeIdx = 0; + return ret; +} + +// Binary search for GB18030. Returns largest i such that table[i] <= val. +function findIdx(table, val) { + if (table[0] > val) + return -1; + + var l = 0, r = table.length; + while (l < r-1) { // always table[l] <= val < table[r] + var mid = l + ((r-l+1) >> 1); + if (table[mid] <= val) + l = mid; + else + r = mid; + } + return l; +} + diff --git a/node_modules/iconv-lite/encodings/dbcs-data.js b/node_modules/iconv-lite/encodings/dbcs-data.js new file mode 100644 index 0000000..0d17e58 --- /dev/null +++ b/node_modules/iconv-lite/encodings/dbcs-data.js @@ -0,0 +1,188 @@ +"use strict"; + +// Description of supported double byte encodings and aliases. +// Tables are not require()-d until they are needed to speed up library load. +// require()-s are direct to support Browserify. + +module.exports = { + + // == Japanese/ShiftJIS ==================================================== + // All japanese encodings are based on JIS X set of standards: + // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. + // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. + // Has several variations in 1978, 1983, 1990 and 1997. + // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. + // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. + // 2 planes, first is superset of 0208, second - revised 0212. + // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) + + // Byte encodings are: + // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte + // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. + // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. + // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. + // 0x00-0x7F - lower part of 0201 + // 0x8E, 0xA1-0xDF - upper part of 0201 + // (0xA1-0xFE)x2 - 0208 plane (94x94). + // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). + // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. + // Used as-is in ISO2022 family. + // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, + // 0201-1976 Roman, 0208-1978, 0208-1983. + // * ISO2022-JP-1: Adds esc seq for 0212-1990. + // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. + // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. + // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. + // + // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. + // + // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html + + 'shiftjis': { + type: '_dbcs', + table: function() { return require('./tables/shiftjis.json') }, + encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, + encodeSkipVals: [{from: 0xED40, to: 0xF940}], + }, + 'csshiftjis': 'shiftjis', + 'mskanji': 'shiftjis', + 'sjis': 'shiftjis', + 'windows31j': 'shiftjis', + 'ms31j': 'shiftjis', + 'xsjis': 'shiftjis', + 'windows932': 'shiftjis', + 'ms932': 'shiftjis', + '932': 'shiftjis', + 'cp932': 'shiftjis', + + 'eucjp': { + type: '_dbcs', + table: function() { return require('./tables/eucjp.json') }, + encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, + }, + + // TODO: KDDI extension to Shift_JIS + // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. + // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. + + + // == Chinese/GBK ========================================================== + // http://en.wikipedia.org/wiki/GBK + // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder + + // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 + 'gb2312': 'cp936', + 'gb231280': 'cp936', + 'gb23121980': 'cp936', + 'csgb2312': 'cp936', + 'csiso58gb231280': 'cp936', + 'euccn': 'cp936', + + // Microsoft's CP936 is a subset and approximation of GBK. + 'windows936': 'cp936', + 'ms936': 'cp936', + '936': 'cp936', + 'cp936': { + type: '_dbcs', + table: function() { return require('./tables/cp936.json') }, + }, + + // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. + 'gbk': { + type: '_dbcs', + table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, + }, + 'xgbk': 'gbk', + 'isoir58': 'gbk', + + // GB18030 is an algorithmic extension of GBK. + // Main source: https://www.w3.org/TR/encoding/#gbk-encoder + // http://icu-project.org/docs/papers/gb18030.html + // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml + // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 + 'gb18030': { + type: '_dbcs', + table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, + gb18030: function() { return require('./tables/gb18030-ranges.json') }, + encodeSkipVals: [0x80], + encodeAdd: {'€': 0xA2E3}, + }, + + 'chinese': 'gb18030', + + + // == Korean =============================================================== + // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. + 'windows949': 'cp949', + 'ms949': 'cp949', + '949': 'cp949', + 'cp949': { + type: '_dbcs', + table: function() { return require('./tables/cp949.json') }, + }, + + 'cseuckr': 'cp949', + 'csksc56011987': 'cp949', + 'euckr': 'cp949', + 'isoir149': 'cp949', + 'korean': 'cp949', + 'ksc56011987': 'cp949', + 'ksc56011989': 'cp949', + 'ksc5601': 'cp949', + + + // == Big5/Taiwan/Hong Kong ================================================ + // There are lots of tables for Big5 and cp950. Please see the following links for history: + // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html + // Variations, in roughly number of defined chars: + // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT + // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ + // * Big5-2003 (Taiwan standard) almost superset of cp950. + // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. + // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. + // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. + // Plus, it has 4 combining sequences. + // 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 + // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. + // Implementations are not consistent within browsers; sometimes labeled as just big5. + // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. + // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 + // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. + // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt + // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt + // + // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder + // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. + + 'windows950': 'cp950', + 'ms950': 'cp950', + '950': 'cp950', + 'cp950': { + type: '_dbcs', + table: function() { return require('./tables/cp950.json') }, + }, + + // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. + 'big5': 'big5hkscs', + 'big5hkscs': { + type: '_dbcs', + table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) }, + encodeSkipVals: [ + // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of + // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. + // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter. + 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe, + 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca, + 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62, + 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef, + 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed, + + // 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 + 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce, + ], + }, + + 'cnbig5': 'big5hkscs', + 'csbig5': 'big5hkscs', + 'xxbig5': 'big5hkscs', +}; diff --git a/node_modules/iconv-lite/encodings/index.js b/node_modules/iconv-lite/encodings/index.js new file mode 100644 index 0000000..d95c244 --- /dev/null +++ b/node_modules/iconv-lite/encodings/index.js @@ -0,0 +1,23 @@ +"use strict"; + +// Update this array if you add/rename/remove files in this directory. +// We support Browserify by skipping automatic module discovery and requiring modules directly. +var modules = [ + require("./internal"), + require("./utf32"), + require("./utf16"), + require("./utf7"), + require("./sbcs-codec"), + require("./sbcs-data"), + require("./sbcs-data-generated"), + require("./dbcs-codec"), + require("./dbcs-data"), +]; + +// Put all encoding/alias/codec definitions to single object and export it. +for (var i = 0; i < modules.length; i++) { + var module = modules[i]; + for (var enc in module) + if (Object.prototype.hasOwnProperty.call(module, enc)) + exports[enc] = module[enc]; +} diff --git a/node_modules/iconv-lite/encodings/internal.js b/node_modules/iconv-lite/encodings/internal.js new file mode 100644 index 0000000..dc1074f --- /dev/null +++ b/node_modules/iconv-lite/encodings/internal.js @@ -0,0 +1,198 @@ +"use strict"; +var Buffer = require("safer-buffer").Buffer; + +// Export Node.js internal encodings. + +module.exports = { + // Encodings + utf8: { type: "_internal", bomAware: true}, + cesu8: { type: "_internal", bomAware: true}, + unicode11utf8: "utf8", + + ucs2: { type: "_internal", bomAware: true}, + utf16le: "ucs2", + + binary: { type: "_internal" }, + base64: { type: "_internal" }, + hex: { type: "_internal" }, + + // Codec. + _internal: InternalCodec, +}; + +//------------------------------------------------------------------------------ + +function InternalCodec(codecOptions, iconv) { + this.enc = codecOptions.encodingName; + this.bomAware = codecOptions.bomAware; + + if (this.enc === "base64") + this.encoder = InternalEncoderBase64; + else if (this.enc === "cesu8") { + this.enc = "utf8"; // Use utf8 for decoding. + this.encoder = InternalEncoderCesu8; + + // Add decoder for versions of Node not supporting CESU-8 + if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') { + this.decoder = InternalDecoderCesu8; + this.defaultCharUnicode = iconv.defaultCharUnicode; + } + } +} + +InternalCodec.prototype.encoder = InternalEncoder; +InternalCodec.prototype.decoder = InternalDecoder; + +//------------------------------------------------------------------------------ + +// We use node.js internal decoder. Its signature is the same as ours. +var StringDecoder = require('string_decoder').StringDecoder; + +if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method. + StringDecoder.prototype.end = function() {}; + + +function InternalDecoder(options, codec) { + this.decoder = new StringDecoder(codec.enc); +} + +InternalDecoder.prototype.write = function(buf) { + if (!Buffer.isBuffer(buf)) { + buf = Buffer.from(buf); + } + + return this.decoder.write(buf); +} + +InternalDecoder.prototype.end = function() { + return this.decoder.end(); +} + + +//------------------------------------------------------------------------------ +// Encoder is mostly trivial + +function InternalEncoder(options, codec) { + this.enc = codec.enc; +} + +InternalEncoder.prototype.write = function(str) { + return Buffer.from(str, this.enc); +} + +InternalEncoder.prototype.end = function() { +} + + +//------------------------------------------------------------------------------ +// Except base64 encoder, which must keep its state. + +function InternalEncoderBase64(options, codec) { + this.prevStr = ''; +} + +InternalEncoderBase64.prototype.write = function(str) { + str = this.prevStr + str; + var completeQuads = str.length - (str.length % 4); + this.prevStr = str.slice(completeQuads); + str = str.slice(0, completeQuads); + + return Buffer.from(str, "base64"); +} + +InternalEncoderBase64.prototype.end = function() { + return Buffer.from(this.prevStr, "base64"); +} + + +//------------------------------------------------------------------------------ +// CESU-8 encoder is also special. + +function InternalEncoderCesu8(options, codec) { +} + +InternalEncoderCesu8.prototype.write = function(str) { + var buf = Buffer.alloc(str.length * 3), bufIdx = 0; + for (var i = 0; i < str.length; i++) { + var charCode = str.charCodeAt(i); + // Naive implementation, but it works because CESU-8 is especially easy + // to convert from UTF-16 (which all JS strings are encoded in). + if (charCode < 0x80) + buf[bufIdx++] = charCode; + else if (charCode < 0x800) { + buf[bufIdx++] = 0xC0 + (charCode >>> 6); + buf[bufIdx++] = 0x80 + (charCode & 0x3f); + } + else { // charCode will always be < 0x10000 in javascript. + buf[bufIdx++] = 0xE0 + (charCode >>> 12); + buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f); + buf[bufIdx++] = 0x80 + (charCode & 0x3f); + } + } + return buf.slice(0, bufIdx); +} + +InternalEncoderCesu8.prototype.end = function() { +} + +//------------------------------------------------------------------------------ +// CESU-8 decoder is not implemented in Node v4.0+ + +function InternalDecoderCesu8(options, codec) { + this.acc = 0; + this.contBytes = 0; + this.accBytes = 0; + this.defaultCharUnicode = codec.defaultCharUnicode; +} + +InternalDecoderCesu8.prototype.write = function(buf) { + var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, + res = ''; + for (var i = 0; i < buf.length; i++) { + var curByte = buf[i]; + if ((curByte & 0xC0) !== 0x80) { // Leading byte + if (contBytes > 0) { // Previous code is invalid + res += this.defaultCharUnicode; + contBytes = 0; + } + + if (curByte < 0x80) { // Single-byte code + res += String.fromCharCode(curByte); + } else if (curByte < 0xE0) { // Two-byte code + acc = curByte & 0x1F; + contBytes = 1; accBytes = 1; + } else if (curByte < 0xF0) { // Three-byte code + acc = curByte & 0x0F; + contBytes = 2; accBytes = 1; + } else { // Four or more are not supported for CESU-8. + res += this.defaultCharUnicode; + } + } else { // Continuation byte + if (contBytes > 0) { // We're waiting for it. + acc = (acc << 6) | (curByte & 0x3f); + contBytes--; accBytes++; + if (contBytes === 0) { + // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80) + if (accBytes === 2 && acc < 0x80 && acc > 0) + res += this.defaultCharUnicode; + else if (accBytes === 3 && acc < 0x800) + res += this.defaultCharUnicode; + else + // Actually add character. + res += String.fromCharCode(acc); + } + } else { // Unexpected continuation byte + res += this.defaultCharUnicode; + } + } + } + this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes; + return res; +} + +InternalDecoderCesu8.prototype.end = function() { + var res = 0; + if (this.contBytes > 0) + res += this.defaultCharUnicode; + return res; +} diff --git a/node_modules/iconv-lite/encodings/sbcs-codec.js b/node_modules/iconv-lite/encodings/sbcs-codec.js new file mode 100644 index 0000000..abac5ff --- /dev/null +++ b/node_modules/iconv-lite/encodings/sbcs-codec.js @@ -0,0 +1,72 @@ +"use strict"; +var Buffer = require("safer-buffer").Buffer; + +// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that +// correspond to encoded bytes (if 128 - then lower half is ASCII). + +exports._sbcs = SBCSCodec; +function SBCSCodec(codecOptions, iconv) { + if (!codecOptions) + throw new Error("SBCS codec is called without the data.") + + // Prepare char buffer for decoding. + if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) + throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)"); + + if (codecOptions.chars.length === 128) { + var asciiString = ""; + for (var i = 0; i < 128; i++) + asciiString += String.fromCharCode(i); + codecOptions.chars = asciiString + codecOptions.chars; + } + + this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2'); + + // Encoding buffer. + var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); + + for (var i = 0; i < codecOptions.chars.length; i++) + encodeBuf[codecOptions.chars.charCodeAt(i)] = i; + + this.encodeBuf = encodeBuf; +} + +SBCSCodec.prototype.encoder = SBCSEncoder; +SBCSCodec.prototype.decoder = SBCSDecoder; + + +function SBCSEncoder(options, codec) { + this.encodeBuf = codec.encodeBuf; +} + +SBCSEncoder.prototype.write = function(str) { + var buf = Buffer.alloc(str.length); + for (var i = 0; i < str.length; i++) + buf[i] = this.encodeBuf[str.charCodeAt(i)]; + + return buf; +} + +SBCSEncoder.prototype.end = function() { +} + + +function SBCSDecoder(options, codec) { + this.decodeBuf = codec.decodeBuf; +} + +SBCSDecoder.prototype.write = function(buf) { + // Strings are immutable in JS -> we use ucs2 buffer to speed up computations. + var decodeBuf = this.decodeBuf; + var newBuf = Buffer.alloc(buf.length*2); + var idx1 = 0, idx2 = 0; + for (var i = 0; i < buf.length; i++) { + idx1 = buf[i]*2; idx2 = i*2; + newBuf[idx2] = decodeBuf[idx1]; + newBuf[idx2+1] = decodeBuf[idx1+1]; + } + return newBuf.toString('ucs2'); +} + +SBCSDecoder.prototype.end = function() { +} diff --git a/node_modules/iconv-lite/encodings/sbcs-data-generated.js b/node_modules/iconv-lite/encodings/sbcs-data-generated.js new file mode 100644 index 0000000..9b48236 --- /dev/null +++ b/node_modules/iconv-lite/encodings/sbcs-data-generated.js @@ -0,0 +1,451 @@ +"use strict"; + +// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script. +module.exports = { + "437": "cp437", + "737": "cp737", + "775": "cp775", + "850": "cp850", + "852": "cp852", + "855": "cp855", + "856": "cp856", + "857": "cp857", + "858": "cp858", + "860": "cp860", + "861": "cp861", + "862": "cp862", + "863": "cp863", + "864": "cp864", + "865": "cp865", + "866": "cp866", + "869": "cp869", + "874": "windows874", + "922": "cp922", + "1046": "cp1046", + "1124": "cp1124", + "1125": "cp1125", + "1129": "cp1129", + "1133": "cp1133", + "1161": "cp1161", + "1162": "cp1162", + "1163": "cp1163", + "1250": "windows1250", + "1251": "windows1251", + "1252": "windows1252", + "1253": "windows1253", + "1254": "windows1254", + "1255": "windows1255", + "1256": "windows1256", + "1257": "windows1257", + "1258": "windows1258", + "28591": "iso88591", + "28592": "iso88592", + "28593": "iso88593", + "28594": "iso88594", + "28595": "iso88595", + "28596": "iso88596", + "28597": "iso88597", + "28598": "iso88598", + "28599": "iso88599", + "28600": "iso885910", + "28601": "iso885911", + "28603": "iso885913", + "28604": "iso885914", + "28605": "iso885915", + "28606": "iso885916", + "windows874": { + "type": "_sbcs", + "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "win874": "windows874", + "cp874": "windows874", + "windows1250": { + "type": "_sbcs", + "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" + }, + "win1250": "windows1250", + "cp1250": "windows1250", + "windows1251": { + "type": "_sbcs", + "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "win1251": "windows1251", + "cp1251": "windows1251", + "windows1252": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "win1252": "windows1252", + "cp1252": "windows1252", + "windows1253": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" + }, + "win1253": "windows1253", + "cp1253": "windows1253", + "windows1254": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" + }, + "win1254": "windows1254", + "cp1254": "windows1254", + "windows1255": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" + }, + "win1255": "windows1255", + "cp1255": "windows1255", + "windows1256": { + "type": "_sbcs", + "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے" + }, + "win1256": "windows1256", + "cp1256": "windows1256", + "windows1257": { + "type": "_sbcs", + "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙" + }, + "win1257": "windows1257", + "cp1257": "windows1257", + "windows1258": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "win1258": "windows1258", + "cp1258": "windows1258", + "iso88591": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "cp28591": "iso88591", + "iso88592": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" + }, + "cp28592": "iso88592", + "iso88593": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙" + }, + "cp28593": "iso88593", + "iso88594": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙" + }, + "cp28594": "iso88594", + "iso88595": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ" + }, + "cp28595": "iso88595", + "iso88596": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������" + }, + "cp28596": "iso88596", + "iso88597": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" + }, + "cp28597": "iso88597", + "iso88598": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" + }, + "cp28598": "iso88598", + "iso88599": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" + }, + "cp28599": "iso88599", + "iso885910": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ" + }, + "cp28600": "iso885910", + "iso885911": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "cp28601": "iso885911", + "iso885913": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’" + }, + "cp28603": "iso885913", + "iso885914": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ" + }, + "cp28604": "iso885914", + "iso885915": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "cp28605": "iso885915", + "iso885916": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ" + }, + "cp28606": "iso885916", + "cp437": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm437": "cp437", + "csibm437": "cp437", + "cp737": { + "type": "_sbcs", + "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ " + }, + "ibm737": "cp737", + "csibm737": "cp737", + "cp775": { + "type": "_sbcs", + "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ " + }, + "ibm775": "cp775", + "csibm775": "cp775", + "cp850": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm850": "cp850", + "csibm850": "cp850", + "cp852": { + "type": "_sbcs", + "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ " + }, + "ibm852": "cp852", + "csibm852": "cp852", + "cp855": { + "type": "_sbcs", + "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ " + }, + "ibm855": "cp855", + "csibm855": "cp855", + "cp856": { + "type": "_sbcs", + "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm856": "cp856", + "csibm856": "cp856", + "cp857": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ " + }, + "ibm857": "cp857", + "csibm857": "cp857", + "cp858": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm858": "cp858", + "csibm858": "cp858", + "cp860": { + "type": "_sbcs", + "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm860": "cp860", + "csibm860": "cp860", + "cp861": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm861": "cp861", + "csibm861": "cp861", + "cp862": { + "type": "_sbcs", + "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm862": "cp862", + "csibm862": "cp862", + "cp863": { + "type": "_sbcs", + "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm863": "cp863", + "csibm863": "cp863", + "cp864": { + "type": "_sbcs", + "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{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�" + }, + "ibm864": "cp864", + "csibm864": "cp864", + "cp865": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm865": "cp865", + "csibm865": "cp865", + "cp866": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ " + }, + "ibm866": "cp866", + "csibm866": "cp866", + "cp869": { + "type": "_sbcs", + "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ " + }, + "ibm869": "cp869", + "csibm869": "cp869", + "cp922": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ" + }, + "ibm922": "cp922", + "csibm922": "cp922", + "cp1046": { + "type": "_sbcs", + "chars": "ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�" + }, + "ibm1046": "cp1046", + "csibm1046": "cp1046", + "cp1124": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ" + }, + "ibm1124": "cp1124", + "csibm1124": "cp1124", + "cp1125": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ " + }, + "ibm1125": "cp1125", + "csibm1125": "cp1125", + "cp1129": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "ibm1129": "cp1129", + "csibm1129": "cp1129", + "cp1133": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�" + }, + "ibm1133": "cp1133", + "csibm1133": "cp1133", + "cp1161": { + "type": "_sbcs", + "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ " + }, + "ibm1161": "cp1161", + "csibm1161": "cp1161", + "cp1162": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "ibm1162": "cp1162", + "csibm1162": "cp1162", + "cp1163": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "ibm1163": "cp1163", + "csibm1163": "cp1163", + "maccroatian": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ" + }, + "maccyrillic": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" + }, + "macgreek": { + "type": "_sbcs", + "chars": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�" + }, + "maciceland": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macroman": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macromania": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macthai": { + "type": "_sbcs", + "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����" + }, + "macturkish": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macukraine": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" + }, + "koi8r": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8u": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8ru": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8t": { + "type": "_sbcs", + "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "armscii8": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�" + }, + "rk1048": { + "type": "_sbcs", + "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "tcvn": { + "type": "_sbcs", + "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ" + }, + "georgianacademy": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "georgianps": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "pt154": { + "type": "_sbcs", + "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "viscii": { + "type": "_sbcs", + "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{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ" + }, + "iso646cn": { + "type": "_sbcs", + "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{|}‾��������������������������������������������������������������������������������������������������������������������������������" + }, + "iso646jp": { + "type": "_sbcs", + "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{|}‾��������������������������������������������������������������������������������������������������������������������������������" + }, + "hproman8": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�" + }, + "macintosh": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "ascii": { + "type": "_sbcs", + "chars": "��������������������������������������������������������������������������������������������������������������������������������" + }, + "tis620": { + "type": "_sbcs", + "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + } +} \ No newline at end of file diff --git a/node_modules/iconv-lite/encodings/sbcs-data.js b/node_modules/iconv-lite/encodings/sbcs-data.js new file mode 100644 index 0000000..066f904 --- /dev/null +++ b/node_modules/iconv-lite/encodings/sbcs-data.js @@ -0,0 +1,179 @@ +"use strict"; + +// Manually added data to be used by sbcs codec in addition to generated one. + +module.exports = { + // Not supported by iconv, not sure why. + "10029": "maccenteuro", + "maccenteuro": { + "type": "_sbcs", + "chars": "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ" + }, + + "808": "cp808", + "ibm808": "cp808", + "cp808": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ " + }, + + "mik": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + + "cp720": { + "type": "_sbcs", + "chars": "\x80\x81éâ\x84à\x86çêëèïî\x8d\x8e\x8f\x90\u0651\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\u064b\u064c\u064d\u064e\u064f\u0650≈°∙·√ⁿ²■\u00a0" + }, + + // Aliases of generated encodings. + "ascii8bit": "ascii", + "usascii": "ascii", + "ansix34": "ascii", + "ansix341968": "ascii", + "ansix341986": "ascii", + "csascii": "ascii", + "cp367": "ascii", + "ibm367": "ascii", + "isoir6": "ascii", + "iso646us": "ascii", + "iso646irv": "ascii", + "us": "ascii", + + "latin1": "iso88591", + "latin2": "iso88592", + "latin3": "iso88593", + "latin4": "iso88594", + "latin5": "iso88599", + "latin6": "iso885910", + "latin7": "iso885913", + "latin8": "iso885914", + "latin9": "iso885915", + "latin10": "iso885916", + + "csisolatin1": "iso88591", + "csisolatin2": "iso88592", + "csisolatin3": "iso88593", + "csisolatin4": "iso88594", + "csisolatincyrillic": "iso88595", + "csisolatinarabic": "iso88596", + "csisolatingreek" : "iso88597", + "csisolatinhebrew": "iso88598", + "csisolatin5": "iso88599", + "csisolatin6": "iso885910", + + "l1": "iso88591", + "l2": "iso88592", + "l3": "iso88593", + "l4": "iso88594", + "l5": "iso88599", + "l6": "iso885910", + "l7": "iso885913", + "l8": "iso885914", + "l9": "iso885915", + "l10": "iso885916", + + "isoir14": "iso646jp", + "isoir57": "iso646cn", + "isoir100": "iso88591", + "isoir101": "iso88592", + "isoir109": "iso88593", + "isoir110": "iso88594", + "isoir144": "iso88595", + "isoir127": "iso88596", + "isoir126": "iso88597", + "isoir138": "iso88598", + "isoir148": "iso88599", + "isoir157": "iso885910", + "isoir166": "tis620", + "isoir179": "iso885913", + "isoir199": "iso885914", + "isoir203": "iso885915", + "isoir226": "iso885916", + + "cp819": "iso88591", + "ibm819": "iso88591", + + "cyrillic": "iso88595", + + "arabic": "iso88596", + "arabic8": "iso88596", + "ecma114": "iso88596", + "asmo708": "iso88596", + + "greek" : "iso88597", + "greek8" : "iso88597", + "ecma118" : "iso88597", + "elot928" : "iso88597", + + "hebrew": "iso88598", + "hebrew8": "iso88598", + + "turkish": "iso88599", + "turkish8": "iso88599", + + "thai": "iso885911", + "thai8": "iso885911", + + "celtic": "iso885914", + "celtic8": "iso885914", + "isoceltic": "iso885914", + + "tis6200": "tis620", + "tis62025291": "tis620", + "tis62025330": "tis620", + + "10000": "macroman", + "10006": "macgreek", + "10007": "maccyrillic", + "10079": "maciceland", + "10081": "macturkish", + + "cspc8codepage437": "cp437", + "cspc775baltic": "cp775", + "cspc850multilingual": "cp850", + "cspcp852": "cp852", + "cspc862latinhebrew": "cp862", + "cpgr": "cp869", + + "msee": "cp1250", + "mscyrl": "cp1251", + "msansi": "cp1252", + "msgreek": "cp1253", + "msturk": "cp1254", + "mshebr": "cp1255", + "msarab": "cp1256", + "winbaltrim": "cp1257", + + "cp20866": "koi8r", + "20866": "koi8r", + "ibm878": "koi8r", + "cskoi8r": "koi8r", + + "cp21866": "koi8u", + "21866": "koi8u", + "ibm1168": "koi8u", + + "strk10482002": "rk1048", + + "tcvn5712": "tcvn", + "tcvn57121": "tcvn", + + "gb198880": "iso646cn", + "cn": "iso646cn", + + "csiso14jisc6220ro": "iso646jp", + "jisc62201969ro": "iso646jp", + "jp": "iso646jp", + + "cshproman8": "hproman8", + "r8": "hproman8", + "roman8": "hproman8", + "xroman8": "hproman8", + "ibm1051": "hproman8", + + "mac": "macintosh", + "csmacintosh": "macintosh", +}; + diff --git a/node_modules/iconv-lite/encodings/tables/big5-added.json b/node_modules/iconv-lite/encodings/tables/big5-added.json new file mode 100644 index 0000000..3c3d3c2 --- /dev/null +++ b/node_modules/iconv-lite/encodings/tables/big5-added.json @@ -0,0 +1,122 @@ +[ +["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"], +["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"], +["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"], +["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"], +["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"], +["8940","𪎩𡅅"], +["8943","攊"], +["8946","丽滝鵎釟"], +["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"], +["89a1","琑糼緍楆竉刧"], +["89ab","醌碸酞肼"], +["89b0","贋胶𠧧"], +["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"], +["89c1","溚舾甙"], +["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"], +["8a40","𧶄唥"], +["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"], +["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"], +["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"], +["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"], +["8aac","䠋𠆩㿺塳𢶍"], +["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"], +["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"], +["8ac9","𪘁𠸉𢫏𢳉"], +["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"], +["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"], +["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"], +["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"], +["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"], +["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"], +["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"], +["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"], +["8ca1","𣏹椙橃𣱣泿"], +["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"], +["8cc9","顨杫䉶圽"], +["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"], +["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"], +["8d40","𠮟"], +["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"], +["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"], +["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"], +["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"], +["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"], +["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"], +["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"], +["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"], +["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"], +["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"], +["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"], +["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"], +["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"], +["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"], +["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"], +["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"], +["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"], +["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"], +["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"], +["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"], +["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"], +["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"], +["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"], +["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"], +["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"], +["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"], +["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"], +["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"], +["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"], +["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"], +["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"], +["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"], +["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"], +["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"], +["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"], +["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"], +["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"], +["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"], +["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"], +["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"], +["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"], +["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"], +["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"], +["9fae","酙隁酜"], +["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"], +["9fc1","𤤙盖鮝个𠳔莾衂"], +["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"], +["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"], +["9fe7","毺蠘罸"], +["9feb","嘠𪙊蹷齓"], +["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"], +["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"], +["a055","𡠻𦸅"], +["a058","詾𢔛"], +["a05b","惽癧髗鵄鍮鮏蟵"], +["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"], +["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"], +["a0a1","嵗𨯂迚𨸹"], +["a0a6","僙𡵆礆匲阸𠼻䁥"], +["a0ae","矾"], +["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"], +["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"], +["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"], +["a3c0","␀",31,"␡"], +["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23], +["c740","す",58,"ァアィイ"], +["c7a1","ゥ",81,"А",5,"ЁЖ",4], +["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"], +["c8a1","龰冈龱𧘇"], +["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"], +["c8f5","ʃɐɛɔɵœøŋʊɪ"], +["f9fe","■"], +["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"], +["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"], +["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"], +["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"], +["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"], +["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"], +["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"], +["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"], +["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"], +["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"] +] diff --git a/node_modules/iconv-lite/encodings/tables/cp936.json b/node_modules/iconv-lite/encodings/tables/cp936.json new file mode 100644 index 0000000..49ddb9a --- /dev/null +++ b/node_modules/iconv-lite/encodings/tables/cp936.json @@ -0,0 +1,264 @@ +[ +["0","\u0000",127,"€"], +["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"], +["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"], +["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11], +["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"], +["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"], +["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5], +["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"], +["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"], +["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"], +["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"], +["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"], +["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"], +["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4], +["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6], +["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"], +["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7], +["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"], +["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"], +["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"], +["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5], +["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"], +["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6], +["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"], +["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4], +["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4], +["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"], +["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"], +["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6], +["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"], +["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"], +["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"], +["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6], +["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"], +["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"], +["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"], +["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"], +["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"], +["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"], +["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8], +["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"], +["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"], +["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"], +["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"], +["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5], +["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"], +["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"], +["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"], +["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"], +["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5], +["9980","檧檨檪檭",114,"欥欦欨",6], +["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"], +["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"], +["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"], +["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"], +["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"], +["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5], +["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"], +["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"], +["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6], +["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"], +["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"], +["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4], +["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19], +["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"], +["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"], +["a2a1","ⅰ",9], +["a2b1","⒈",19,"⑴",19,"①",9], +["a2e5","㈠",9], +["a2f1","Ⅰ",11], +["a3a1","!"#¥%",88," ̄"], +["a4a1","ぁ",82], +["a5a1","ァ",85], +["a6a1","Α",16,"Σ",6], +["a6c1","α",16,"σ",6], +["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"], +["a6ee","︻︼︷︸︱"], +["a6f4","︳︴"], +["a7a1","А",5,"ЁЖ",25], +["a7d1","а",5,"ёж",25], +["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6], +["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"], +["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"], +["a8bd","ńň"], +["a8c0","ɡ"], +["a8c5","ㄅ",36], +["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"], +["a959","℡㈱"], +["a95c","‐"], +["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8], +["a980","﹢",4,"﹨﹩﹪﹫"], +["a996","〇"], +["a9a4","─",75], +["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8], +["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"], +["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4], +["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4], +["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11], +["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"], +["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12], +["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"], +["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"], +["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"], +["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"], +["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"], +["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"], +["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"], +["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"], +["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"], +["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4], +["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"], +["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"], +["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"], +["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9], +["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"], +["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"], +["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"], +["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"], +["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"], +["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16], +["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"], +["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"], +["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"], +["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"], +["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"], +["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"], +["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"], +["bb40","籃",9,"籎",36,"籵",5,"籾",9], +["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"], +["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5], +["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"], +["bd40","紷",54,"絯",7], +["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"], +["be40","継",12,"綧",6,"綯",42], +["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"], +["bf40","緻",62], +["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"], +["c040","繞",35,"纃",23,"纜纝纞"], +["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"], +["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"], +["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"], +["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"], +["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"], +["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"], +["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"], +["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"], +["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"], +["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"], +["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"], +["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"], +["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"], +["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"], +["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"], +["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"], +["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"], +["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"], +["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"], +["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10], +["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"], +["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"], +["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"], +["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"], +["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"], +["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"], +["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"], +["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"], +["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"], +["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9], +["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"], +["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"], +["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"], +["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5], +["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"], +["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"], +["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"], +["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6], +["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"], +["d440","訞",31,"訿",8,"詉",21], +["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"], +["d540","誁",7,"誋",7,"誔",46], +["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"], +["d640","諤",34,"謈",27], +["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"], +["d740","譆",31,"譧",4,"譭",25], +["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"], +["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"], +["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"], +["d940","貮",62], +["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"], +["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"], +["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"], +["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"], +["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"], +["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7], +["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"], +["dd40","軥",62], +["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"], +["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"], +["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"], +["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"], +["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"], +["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"], +["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"], +["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"], +["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"], +["e240","釦",62], +["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"], +["e340","鉆",45,"鉵",16], +["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"], +["e440","銨",5,"銯",24,"鋉",31], +["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"], +["e540","錊",51,"錿",10], +["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"], +["e640","鍬",34,"鎐",27], +["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"], +["e740","鏎",7,"鏗",54], +["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"], +["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"], +["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"], +["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42], +["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"], +["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"], +["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"], +["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"], +["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"], +["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7], +["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"], +["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46], +["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"], +["ee40","頏",62], +["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"], +["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4], +["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"], +["f040","餈",4,"餎餏餑",28,"餯",26], +["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"], +["f140","馌馎馚",10,"馦馧馩",47], +["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"], +["f240","駺",62], +["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"], +["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"], +["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"], +["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5], +["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"], +["f540","魼",62], +["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"], +["f640","鯜",62], +["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"], +["f740","鰼",62], +["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"], +["f840","鳣",62], +["f880","鴢",32], +["f940","鵃",62], +["f980","鶂",32], +["fa40","鶣",62], +["fa80","鷢",32], +["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"], +["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"], +["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6], +["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"], +["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38], +["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"], +["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"] +] diff --git a/node_modules/iconv-lite/encodings/tables/cp949.json b/node_modules/iconv-lite/encodings/tables/cp949.json new file mode 100644 index 0000000..2022a00 --- /dev/null +++ b/node_modules/iconv-lite/encodings/tables/cp949.json @@ -0,0 +1,273 @@ +[ +["0","\u0000",127], +["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"], +["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"], +["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"], +["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5], +["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"], +["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18], +["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7], +["8361","긝",18,"긲긳긵긶긹긻긼"], +["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8], +["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8], +["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18], +["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"], +["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4], +["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"], +["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"], +["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"], +["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10], +["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"], +["8741","놞",9,"놩",15], +["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"], +["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4], +["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4], +["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"], +["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"], +["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"], +["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"], +["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15], +["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"], +["8a61","둧",4,"둭",18,"뒁뒂"], +["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"], +["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"], +["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8], +["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18], +["8c41","똀",15,"똒똓똕똖똗똙",4], +["8c61","똞",6,"똦",5,"똭",6,"똵",5], +["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16], +["8d41","뛃",16,"뛕",8], +["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"], +["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"], +["8e41","랟랡",6,"랪랮",5,"랶랷랹",8], +["8e61","럂",4,"럈럊",19], +["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7], +["8f41","뢅",7,"뢎",17], +["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4], +["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5], +["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"], +["9061","륾",5,"릆릈릋릌릏",15], +["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"], +["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5], +["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5], +["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6], +["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"], +["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4], +["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"], +["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"], +["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8], +["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"], +["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8], +["9461","봞",5,"봥",6,"봭",12], +["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24], +["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"], +["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"], +["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14], +["9641","뺸",23,"뻒뻓"], +["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8], +["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44], +["9741","뾃",16,"뾕",8], +["9761","뾞",17,"뾱",7], +["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"], +["9841","쁀",16,"쁒",5,"쁙쁚쁛"], +["9861","쁝쁞쁟쁡",6,"쁪",15], +["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"], +["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"], +["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"], +["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"], +["9a41","숤숥숦숧숪숬숮숰숳숵",16], +["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"], +["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"], +["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8], +["9b61","쌳",17,"썆",7], +["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"], +["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5], +["9c61","쏿",8,"쐉",6,"쐑",9], +["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12], +["9d41","쒪",13,"쒹쒺쒻쒽",8], +["9d61","쓆",25], +["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"], +["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"], +["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"], +["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"], +["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"], +["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"], +["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"], +["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"], +["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13], +["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"], +["a141","좥좦좧좩",18,"좾좿죀죁"], +["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"], +["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"], +["a241","줐줒",5,"줙",18], +["a261","줭",6,"줵",18], +["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"], +["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"], +["a361","즑",6,"즚즜즞",16], +["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"], +["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"], +["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12], +["a481","쨦쨧쨨쨪",28,"ㄱ",93], +["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"], +["a561","쩫",17,"쩾",5,"쪅쪆"], +["a581","쪇",16,"쪙",14,"ⅰ",9], +["a5b0","Ⅰ",9], +["a5c1","Α",16,"Σ",6], +["a5e1","α",16,"σ",6], +["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"], +["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6], +["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7], +["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7], +["a761","쬪",22,"쭂쭃쭄"], +["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"], +["a841","쭭",10,"쭺",14], +["a861","쮉",18,"쮝",6], +["a881","쮤",19,"쮹",11,"ÆÐªĦ"], +["a8a6","IJ"], +["a8a8","ĿŁØŒºÞŦŊ"], +["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"], +["a941","쯅",14,"쯕",10], +["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18], +["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"], +["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"], +["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"], +["aa81","챳챴챶",29,"ぁ",82], +["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"], +["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5], +["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85], +["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"], +["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4], +["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25], +["acd1","а",5,"ёж",25], +["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7], +["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"], +["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"], +["ae41","췆",5,"췍췎췏췑",16], +["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4], +["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"], +["af41","츬츭츮츯츲츴츶",19], +["af61","칊",13,"칚칛칝칞칢",5,"칪칬"], +["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"], +["b041","캚",5,"캢캦",5,"캮",12], +["b061","캻",5,"컂",19], +["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"], +["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"], +["b161","켥",6,"켮켲",5,"켹",11], +["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"], +["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"], +["b261","쾎",18,"쾢",5,"쾩"], +["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"], +["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"], +["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5], +["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"], +["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5], +["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"], +["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"], +["b541","킕",14,"킦킧킩킪킫킭",5], +["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4], +["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"], +["b641","턅",7,"턎",17], +["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"], +["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"], +["b741","텮",13,"텽",6,"톅톆톇톉톊"], +["b761","톋",20,"톢톣톥톦톧"], +["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"], +["b841","퇐",7,"퇙",17], +["b861","퇫",8,"퇵퇶퇷퇹",13], +["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"], +["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"], +["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"], +["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"], +["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"], +["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5], +["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"], +["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"], +["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"], +["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"], +["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"], +["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"], +["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"], +["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"], +["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13], +["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"], +["be41","퐸",7,"푁푂푃푅",14], +["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"], +["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"], +["bf41","풞",10,"풪",14], +["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"], +["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"], +["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5], +["c061","픞",25], +["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"], +["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"], +["c161","햌햍햎햏햑",19,"햦햧"], +["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"], +["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"], +["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"], +["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"], +["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4], +["c361","홢",4,"홨홪",5,"홲홳홵",11], +["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"], +["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"], +["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4], +["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"], +["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"], +["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4], +["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"], +["c641","힍힎힏힑",6,"힚힜힞",5], +["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"], +["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"], +["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"], +["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"], +["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"], +["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"], +["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"], +["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"], +["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"], +["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"], +["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"], +["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"], +["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"], +["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"], +["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"], +["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"], +["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"], +["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"], +["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"], +["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"], +["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"], +["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"], +["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"], +["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"], +["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"], +["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"], +["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"], +["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"], +["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"], +["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"], +["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"], +["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"], +["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"], +["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"], +["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"], +["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"], +["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"], +["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"], +["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"], +["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"], +["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"], +["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"], +["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"], +["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"], +["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"], +["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"], +["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"], +["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"], +["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"], +["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"], +["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"], +["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"], +["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"], +["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"], +["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"] +] diff --git a/node_modules/iconv-lite/encodings/tables/cp950.json b/node_modules/iconv-lite/encodings/tables/cp950.json new file mode 100644 index 0000000..d8bc871 --- /dev/null +++ b/node_modules/iconv-lite/encodings/tables/cp950.json @@ -0,0 +1,177 @@ +[ +["0","\u0000",127], +["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"], +["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"], +["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"], +["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21], +["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10], +["a3a1","ㄐ",25,"˙ˉˊˇˋ"], +["a3e1","€"], +["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"], +["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"], +["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"], +["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"], +["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"], +["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"], +["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"], +["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"], +["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"], +["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"], +["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"], +["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"], +["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"], +["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"], +["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"], +["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"], +["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"], +["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"], +["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"], +["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"], +["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"], +["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"], +["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"], +["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"], +["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"], +["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"], +["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"], +["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"], +["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"], +["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"], +["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"], +["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"], +["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"], +["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"], +["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"], +["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"], +["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"], +["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"], +["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"], +["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"], +["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"], +["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"], +["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"], +["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"], +["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"], +["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"], +["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"], +["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"], +["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"], +["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"], +["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"], +["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"], +["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"], +["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"], +["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"], +["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"], +["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"], +["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"], +["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"], +["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"], +["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"], +["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"], +["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"], +["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"], +["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"], +["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"], +["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"], +["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"], +["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"], +["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"], +["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"], +["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"], +["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"], +["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"], +["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"], +["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"], +["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"], +["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"], +["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"], +["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"], +["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"], +["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"], +["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"], +["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"], +["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"], +["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"], +["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"], +["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"], +["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"], +["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"], +["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"], +["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"], +["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"], +["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"], +["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"], +["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"], +["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"], +["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"], +["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"], +["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"], +["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"], +["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"], +["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"], +["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"], +["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"], +["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"], +["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"], +["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"], +["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"], +["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"], +["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"], +["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"], +["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"], +["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"], +["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"], +["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"], +["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"], +["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"], +["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"], +["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"], +["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"], +["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"], +["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"], +["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"], +["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"], +["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"], +["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"], +["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"], +["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"], +["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"], +["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"], +["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"], +["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"], +["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"], +["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"], +["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"], +["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"], +["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"], +["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"], +["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"], +["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"], +["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"], +["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"], +["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"], +["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"], +["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"], +["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"], +["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"], +["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"], +["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"], +["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"], +["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"], +["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"], +["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"], +["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"], +["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"], +["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"], +["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"], +["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"], +["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"], +["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"], +["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"], +["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"], +["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"], +["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"], +["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"], +["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"] +] diff --git a/node_modules/iconv-lite/encodings/tables/eucjp.json b/node_modules/iconv-lite/encodings/tables/eucjp.json new file mode 100644 index 0000000..4fa61ca --- /dev/null +++ b/node_modules/iconv-lite/encodings/tables/eucjp.json @@ -0,0 +1,182 @@ +[ +["0","\u0000",127], +["8ea1","。",62], +["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"], +["a2a1","◆□■△▲▽▼※〒→←↑↓〓"], +["a2ba","∈∋⊆⊇⊂⊃∪∩"], +["a2ca","∧∨¬⇒⇔∀∃"], +["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], +["a2f2","ʼn♯♭♪†‡¶"], +["a2fe","◯"], +["a3b0","0",9], +["a3c1","A",25], +["a3e1","a",25], +["a4a1","ぁ",82], +["a5a1","ァ",85], +["a6a1","Α",16,"Σ",6], +["a6c1","α",16,"σ",6], +["a7a1","А",5,"ЁЖ",25], +["a7d1","а",5,"ёж",25], +["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], +["ada1","①",19,"Ⅰ",9], +["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], +["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], +["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], +["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"], +["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], +["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"], +["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], +["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"], +["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], +["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"], +["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], +["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"], +["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], +["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"], +["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], +["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"], +["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], +["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"], +["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], +["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"], +["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], +["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"], +["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], +["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"], +["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], +["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"], +["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], +["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"], +["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], +["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"], +["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], +["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"], +["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], +["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], +["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], +["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"], +["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], +["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"], +["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], +["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"], +["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], +["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"], +["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], +["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"], +["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], +["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"], +["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], +["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"], +["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], +["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"], +["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], +["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"], +["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], +["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"], +["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], +["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"], +["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], +["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"], +["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], +["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"], +["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], +["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"], +["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], +["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"], +["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], +["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"], +["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], +["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"], +["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], +["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"], +["f4a1","堯槇遙瑤凜熙"], +["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"], +["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], +["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"], +["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], +["fcf1","ⅰ",9,"¬¦'""], +["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"], +["8fa2c2","¡¦¿"], +["8fa2eb","ºª©®™¤№"], +["8fa6e1","ΆΈΉΊΪ"], +["8fa6e7","Ό"], +["8fa6e9","ΎΫ"], +["8fa6ec","Ώ"], +["8fa6f1","άέήίϊΐόςύϋΰώ"], +["8fa7c2","Ђ",10,"ЎЏ"], +["8fa7f2","ђ",10,"ўџ"], +["8fa9a1","ÆĐ"], +["8fa9a4","Ħ"], +["8fa9a6","IJ"], +["8fa9a8","ŁĿ"], +["8fa9ab","ŊØŒ"], +["8fa9af","ŦÞ"], +["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"], +["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"], +["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"], +["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"], +["8fabbd","ġĥíìïîǐ"], +["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"], +["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"], +["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"], +["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"], +["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"], +["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"], +["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"], +["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"], +["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"], +["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"], +["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"], +["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"], +["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"], +["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"], +["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"], +["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"], +["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"], +["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"], +["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"], +["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"], +["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"], +["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"], +["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"], +["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"], +["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"], +["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"], +["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"], +["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"], +["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"], +["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"], +["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"], +["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"], +["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"], +["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"], +["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"], +["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5], +["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"], +["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"], +["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"], +["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"], +["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"], +["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"], +["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"], +["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"], +["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"], +["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"], +["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"], +["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"], +["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"], +["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"], +["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"], +["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"], +["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"], +["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"], +["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"], +["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"], +["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"], +["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"], +["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4], +["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"], +["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"], +["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"], +["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"] +] diff --git a/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json b/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json new file mode 100644 index 0000000..85c6934 --- /dev/null +++ b/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json @@ -0,0 +1 @@ +{"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]} \ No newline at end of file diff --git a/node_modules/iconv-lite/encodings/tables/gbk-added.json b/node_modules/iconv-lite/encodings/tables/gbk-added.json new file mode 100644 index 0000000..b742e36 --- /dev/null +++ b/node_modules/iconv-lite/encodings/tables/gbk-added.json @@ -0,0 +1,56 @@ +[ +["a140","",62], +["a180","",32], +["a240","",62], +["a280","",32], +["a2ab","",5], +["a2e3","€"], +["a2ef",""], +["a2fd",""], +["a340","",62], +["a380","",31," "], +["a440","",62], +["a480","",32], +["a4f4","",10], +["a540","",62], +["a580","",32], +["a5f7","",7], +["a640","",62], +["a680","",32], +["a6b9","",7], +["a6d9","",6], +["a6ec",""], +["a6f3",""], +["a6f6","",8], +["a740","",62], +["a780","",32], +["a7c2","",14], +["a7f2","",12], +["a896","",10], +["a8bc","ḿ"], +["a8bf","ǹ"], +["a8c1",""], +["a8ea","",20], +["a958",""], +["a95b",""], +["a95d",""], +["a989","〾⿰",11], +["a997","",12], +["a9f0","",14], +["aaa1","",93], +["aba1","",93], +["aca1","",93], +["ada1","",93], +["aea1","",93], +["afa1","",93], +["d7fa","",4], +["f8a1","",93], +["f9a1","",93], +["faa1","",93], +["fba1","",93], +["fca1","",93], +["fda1","",93], +["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"], +["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93], +["8135f437",""] +] diff --git a/node_modules/iconv-lite/encodings/tables/shiftjis.json b/node_modules/iconv-lite/encodings/tables/shiftjis.json new file mode 100644 index 0000000..5a3a43c --- /dev/null +++ b/node_modules/iconv-lite/encodings/tables/shiftjis.json @@ -0,0 +1,125 @@ +[ +["0","\u0000",128], +["a1","。",62], +["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"], +["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"], +["81b8","∈∋⊆⊇⊂⊃∪∩"], +["81c8","∧∨¬⇒⇔∀∃"], +["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], +["81f0","ʼn♯♭♪†‡¶"], +["81fc","◯"], +["824f","0",9], +["8260","A",25], +["8281","a",25], +["829f","ぁ",82], +["8340","ァ",62], +["8380","ム",22], +["839f","Α",16,"Σ",6], +["83bf","α",16,"σ",6], +["8440","А",5,"ЁЖ",25], +["8470","а",5,"ёж",7], +["8480","о",17], +["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], +["8740","①",19,"Ⅰ",9], +["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], +["877e","㍻"], +["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], +["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], +["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"], +["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], +["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"], +["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], +["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"], +["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], +["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"], +["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], +["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"], +["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], +["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"], +["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], +["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"], +["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], +["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"], +["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], +["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"], +["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], +["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"], +["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], +["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"], +["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], +["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"], +["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], +["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"], +["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], +["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"], +["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], +["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"], +["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], +["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], +["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], +["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"], +["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], +["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"], +["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], +["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"], +["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], +["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"], +["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], +["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"], +["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], +["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"], +["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], +["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"], +["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], +["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"], +["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], +["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"], +["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], +["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"], +["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], +["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"], +["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], +["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"], +["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], +["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"], +["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], +["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"], +["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], +["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"], +["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], +["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"], +["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], +["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"], +["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], +["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"], +["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"], +["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"], +["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], +["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"], +["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], +["eeef","ⅰ",9,"¬¦'""], +["f040","",62], +["f080","",124], +["f140","",62], +["f180","",124], +["f240","",62], +["f280","",124], +["f340","",62], +["f380","",124], +["f440","",62], +["f480","",124], +["f540","",62], +["f580","",124], +["f640","",62], +["f680","",124], +["f740","",62], +["f780","",124], +["f840","",62], +["f880","",124], +["f940",""], +["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"], +["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"], +["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"], +["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"], +["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"] +] diff --git a/node_modules/iconv-lite/encodings/utf16.js b/node_modules/iconv-lite/encodings/utf16.js new file mode 100644 index 0000000..97d0669 --- /dev/null +++ b/node_modules/iconv-lite/encodings/utf16.js @@ -0,0 +1,197 @@ +"use strict"; +var Buffer = require("safer-buffer").Buffer; + +// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js + +// == UTF16-BE codec. ========================================================== + +exports.utf16be = Utf16BECodec; +function Utf16BECodec() { +} + +Utf16BECodec.prototype.encoder = Utf16BEEncoder; +Utf16BECodec.prototype.decoder = Utf16BEDecoder; +Utf16BECodec.prototype.bomAware = true; + + +// -- Encoding + +function Utf16BEEncoder() { +} + +Utf16BEEncoder.prototype.write = function(str) { + var buf = Buffer.from(str, 'ucs2'); + for (var i = 0; i < buf.length; i += 2) { + var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp; + } + return buf; +} + +Utf16BEEncoder.prototype.end = function() { +} + + +// -- Decoding + +function Utf16BEDecoder() { + this.overflowByte = -1; +} + +Utf16BEDecoder.prototype.write = function(buf) { + if (buf.length == 0) + return ''; + + var buf2 = Buffer.alloc(buf.length + 1), + i = 0, j = 0; + + if (this.overflowByte !== -1) { + buf2[0] = buf[0]; + buf2[1] = this.overflowByte; + i = 1; j = 2; + } + + for (; i < buf.length-1; i += 2, j+= 2) { + buf2[j] = buf[i+1]; + buf2[j+1] = buf[i]; + } + + this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1; + + return buf2.slice(0, j).toString('ucs2'); +} + +Utf16BEDecoder.prototype.end = function() { + this.overflowByte = -1; +} + + +// == UTF-16 codec ============================================================= +// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic. +// Defaults to UTF-16LE, as it's prevalent and default in Node. +// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le +// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'}); + +// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false). + +exports.utf16 = Utf16Codec; +function Utf16Codec(codecOptions, iconv) { + this.iconv = iconv; +} + +Utf16Codec.prototype.encoder = Utf16Encoder; +Utf16Codec.prototype.decoder = Utf16Decoder; + + +// -- Encoding (pass-through) + +function Utf16Encoder(options, codec) { + options = options || {}; + if (options.addBOM === undefined) + options.addBOM = true; + this.encoder = codec.iconv.getEncoder('utf-16le', options); +} + +Utf16Encoder.prototype.write = function(str) { + return this.encoder.write(str); +} + +Utf16Encoder.prototype.end = function() { + return this.encoder.end(); +} + + +// -- Decoding + +function Utf16Decoder(options, codec) { + this.decoder = null; + this.initialBufs = []; + this.initialBufsLen = 0; + + this.options = options || {}; + this.iconv = codec.iconv; +} + +Utf16Decoder.prototype.write = function(buf) { + if (!this.decoder) { + // Codec is not chosen yet. Accumulate initial bytes. + this.initialBufs.push(buf); + this.initialBufsLen += buf.length; + + if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below) + return ''; + + // We have enough bytes -> detect endianness. + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + + var resStr = ''; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + + return this.decoder.write(buf); +} + +Utf16Decoder.prototype.end = function() { + if (!this.decoder) { + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + + var resStr = ''; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + + var trail = this.decoder.end(); + if (trail) + resStr += trail; + + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.end(); +} + +function detectEncoding(bufs, defaultEncoding) { + var b = []; + var charsProcessed = 0; + var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE. + + outer_loop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i]; + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]); + if (b.length === 2) { + if (charsProcessed === 0) { + // Check BOM first. + if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le'; + if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be'; + } + + if (b[0] === 0 && b[1] !== 0) asciiCharsBE++; + if (b[0] !== 0 && b[1] === 0) asciiCharsLE++; + + b.length = 0; + charsProcessed++; + + if (charsProcessed >= 100) { + break outer_loop; + } + } + } + } + + // Make decisions. + // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon. + // So, we count ASCII as if it was LE or BE, and decide from that. + if (asciiCharsBE > asciiCharsLE) return 'utf-16be'; + if (asciiCharsBE < asciiCharsLE) return 'utf-16le'; + + // Couldn't decide (likely all zeros or not enough data). + return defaultEncoding || 'utf-16le'; +} + + diff --git a/node_modules/iconv-lite/encodings/utf32.js b/node_modules/iconv-lite/encodings/utf32.js new file mode 100644 index 0000000..2fa900a --- /dev/null +++ b/node_modules/iconv-lite/encodings/utf32.js @@ -0,0 +1,319 @@ +'use strict'; + +var Buffer = require('safer-buffer').Buffer; + +// == UTF32-LE/BE codec. ========================================================== + +exports._utf32 = Utf32Codec; + +function Utf32Codec(codecOptions, iconv) { + this.iconv = iconv; + this.bomAware = true; + this.isLE = codecOptions.isLE; +} + +exports.utf32le = { type: '_utf32', isLE: true }; +exports.utf32be = { type: '_utf32', isLE: false }; + +// Aliases +exports.ucs4le = 'utf32le'; +exports.ucs4be = 'utf32be'; + +Utf32Codec.prototype.encoder = Utf32Encoder; +Utf32Codec.prototype.decoder = Utf32Decoder; + +// -- Encoding + +function Utf32Encoder(options, codec) { + this.isLE = codec.isLE; + this.highSurrogate = 0; +} + +Utf32Encoder.prototype.write = function(str) { + var src = Buffer.from(str, 'ucs2'); + var dst = Buffer.alloc(src.length * 2); + var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE; + var offset = 0; + + for (var i = 0; i < src.length; i += 2) { + var code = src.readUInt16LE(i); + var isHighSurrogate = (0xD800 <= code && code < 0xDC00); + var isLowSurrogate = (0xDC00 <= code && code < 0xE000); + + if (this.highSurrogate) { + if (isHighSurrogate || !isLowSurrogate) { + // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low + // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character + // (technically wrong, but expected by some applications, like Windows file names). + write32.call(dst, this.highSurrogate, offset); + offset += 4; + } + else { + // Create 32-bit value from high and low surrogates; + var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000; + + write32.call(dst, codepoint, offset); + offset += 4; + this.highSurrogate = 0; + + continue; + } + } + + if (isHighSurrogate) + this.highSurrogate = code; + else { + // Even if the current character is a low surrogate, with no previous high surrogate, we'll + // encode it as a semi-invalid stand-alone character for the same reasons expressed above for + // unpaired high surrogates. + write32.call(dst, code, offset); + offset += 4; + this.highSurrogate = 0; + } + } + + if (offset < dst.length) + dst = dst.slice(0, offset); + + return dst; +}; + +Utf32Encoder.prototype.end = function() { + // Treat any leftover high surrogate as a semi-valid independent character. + if (!this.highSurrogate) + return; + + var buf = Buffer.alloc(4); + + if (this.isLE) + buf.writeUInt32LE(this.highSurrogate, 0); + else + buf.writeUInt32BE(this.highSurrogate, 0); + + this.highSurrogate = 0; + + return buf; +}; + +// -- Decoding + +function Utf32Decoder(options, codec) { + this.isLE = codec.isLE; + this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0); + this.overflow = []; +} + +Utf32Decoder.prototype.write = function(src) { + if (src.length === 0) + return ''; + + var i = 0; + var codepoint = 0; + var dst = Buffer.alloc(src.length + 4); + var offset = 0; + var isLE = this.isLE; + var overflow = this.overflow; + var badChar = this.badChar; + + if (overflow.length > 0) { + for (; i < src.length && overflow.length < 4; i++) + overflow.push(src[i]); + + if (overflow.length === 4) { + // NOTE: codepoint is a signed int32 and can be negative. + // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer). + if (isLE) { + codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24); + } else { + codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24); + } + overflow.length = 0; + + offset = _writeCodepoint(dst, offset, codepoint, badChar); + } + } + + // Main loop. Should be as optimized as possible. + for (; i < src.length - 3; i += 4) { + // NOTE: codepoint is a signed int32 and can be negative. + if (isLE) { + codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24); + } else { + codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24); + } + offset = _writeCodepoint(dst, offset, codepoint, badChar); + } + + // Keep overflowing bytes. + for (; i < src.length; i++) { + overflow.push(src[i]); + } + + return dst.slice(0, offset).toString('ucs2'); +}; + +function _writeCodepoint(dst, offset, codepoint, badChar) { + // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations. + if (codepoint < 0 || codepoint > 0x10FFFF) { + // Not a valid Unicode codepoint + codepoint = badChar; + } + + // Ephemeral Planes: Write high surrogate. + if (codepoint >= 0x10000) { + codepoint -= 0x10000; + + var high = 0xD800 | (codepoint >> 10); + dst[offset++] = high & 0xff; + dst[offset++] = high >> 8; + + // Low surrogate is written below. + var codepoint = 0xDC00 | (codepoint & 0x3FF); + } + + // Write BMP char or low surrogate. + dst[offset++] = codepoint & 0xff; + dst[offset++] = codepoint >> 8; + + return offset; +}; + +Utf32Decoder.prototype.end = function() { + this.overflow.length = 0; +}; + +// == UTF-32 Auto codec ============================================================= +// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic. +// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32 +// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'}); + +// Encoder prepends BOM (which can be overridden with (addBOM: false}). + +exports.utf32 = Utf32AutoCodec; +exports.ucs4 = 'utf32'; + +function Utf32AutoCodec(options, iconv) { + this.iconv = iconv; +} + +Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder; +Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder; + +// -- Encoding + +function Utf32AutoEncoder(options, codec) { + options = options || {}; + + if (options.addBOM === undefined) + options.addBOM = true; + + this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options); +} + +Utf32AutoEncoder.prototype.write = function(str) { + return this.encoder.write(str); +}; + +Utf32AutoEncoder.prototype.end = function() { + return this.encoder.end(); +}; + +// -- Decoding + +function Utf32AutoDecoder(options, codec) { + this.decoder = null; + this.initialBufs = []; + this.initialBufsLen = 0; + this.options = options || {}; + this.iconv = codec.iconv; +} + +Utf32AutoDecoder.prototype.write = function(buf) { + if (!this.decoder) { + // Codec is not chosen yet. Accumulate initial bytes. + this.initialBufs.push(buf); + this.initialBufsLen += buf.length; + + if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below) + return ''; + + // We have enough bytes -> detect endianness. + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + + var resStr = ''; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + + return this.decoder.write(buf); +}; + +Utf32AutoDecoder.prototype.end = function() { + if (!this.decoder) { + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + + var resStr = ''; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + + var trail = this.decoder.end(); + if (trail) + resStr += trail; + + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + + return this.decoder.end(); +}; + +function detectEncoding(bufs, defaultEncoding) { + var b = []; + var charsProcessed = 0; + var invalidLE = 0, invalidBE = 0; // Number of invalid chars when decoded as LE or BE. + var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE. + + outer_loop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i]; + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]); + if (b.length === 4) { + if (charsProcessed === 0) { + // Check BOM first. + if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) { + return 'utf-32le'; + } + if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) { + return 'utf-32be'; + } + } + + if (b[0] !== 0 || b[1] > 0x10) invalidBE++; + if (b[3] !== 0 || b[2] > 0x10) invalidLE++; + + if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++; + if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++; + + b.length = 0; + charsProcessed++; + + if (charsProcessed >= 100) { + break outer_loop; + } + } + } + } + + // Make decisions. + if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return 'utf-32be'; + if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return 'utf-32le'; + + // Couldn't decide (likely all zeros or not enough data). + return defaultEncoding || 'utf-32le'; +} diff --git a/node_modules/iconv-lite/encodings/utf7.js b/node_modules/iconv-lite/encodings/utf7.js new file mode 100644 index 0000000..eacae34 --- /dev/null +++ b/node_modules/iconv-lite/encodings/utf7.js @@ -0,0 +1,290 @@ +"use strict"; +var Buffer = require("safer-buffer").Buffer; + +// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152 +// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3 + +exports.utf7 = Utf7Codec; +exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7 +function Utf7Codec(codecOptions, iconv) { + this.iconv = iconv; +}; + +Utf7Codec.prototype.encoder = Utf7Encoder; +Utf7Codec.prototype.decoder = Utf7Decoder; +Utf7Codec.prototype.bomAware = true; + + +// -- Encoding + +var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; + +function Utf7Encoder(options, codec) { + this.iconv = codec.iconv; +} + +Utf7Encoder.prototype.write = function(str) { + // Naive implementation. + // Non-direct chars are encoded as "+<base64>-"; single "+" char is encoded as "+-". + return Buffer.from(str.replace(nonDirectChars, function(chunk) { + return "+" + (chunk === '+' ? '' : + this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) + + "-"; + }.bind(this))); +} + +Utf7Encoder.prototype.end = function() { +} + + +// -- Decoding + +function Utf7Decoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ''; +} + +var base64Regex = /[A-Za-z0-9\/+]/; +var base64Chars = []; +for (var i = 0; i < 256; i++) + base64Chars[i] = base64Regex.test(String.fromCharCode(i)); + +var plusChar = '+'.charCodeAt(0), + minusChar = '-'.charCodeAt(0), + andChar = '&'.charCodeAt(0); + +Utf7Decoder.prototype.write = function(buf) { + var res = "", lastI = 0, + inBase64 = this.inBase64, + base64Accum = this.base64Accum; + + // The decoder is more involved as we must handle chunks in stream. + + for (var i = 0; i < buf.length; i++) { + if (!inBase64) { // We're in direct mode. + // Write direct chars until '+' + if (buf[i] == plusChar) { + res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. + lastI = i+1; + inBase64 = true; + } + } else { // We decode base64. + if (!base64Chars[buf[i]]) { // Base64 ended. + if (i == lastI && buf[i] == minusChar) {// "+-" -> "+" + res += "+"; + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii"); + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); + } + + if (buf[i] != minusChar) // Minus is absorbed after base64. + i--; + + lastI = i+1; + inBase64 = false; + base64Accum = ''; + } + } + } + + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii"); + + var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. + base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. + b64str = b64str.slice(0, canBeDecoded); + + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); + } + + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + + return res; +} + +Utf7Decoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) + res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); + + this.inBase64 = false; + this.base64Accum = ''; + return res; +} + + +// UTF-7-IMAP codec. +// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3) +// Differences: +// * Base64 part is started by "&" instead of "+" +// * Direct characters are 0x20-0x7E, except "&" (0x26) +// * In Base64, "," is used instead of "/" +// * Base64 must not be used to represent direct characters. +// * No implicit shift back from Base64 (should always end with '-') +// * String must end in non-shifted position. +// * "-&" while in base64 is not allowed. + + +exports.utf7imap = Utf7IMAPCodec; +function Utf7IMAPCodec(codecOptions, iconv) { + this.iconv = iconv; +}; + +Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; +Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; +Utf7IMAPCodec.prototype.bomAware = true; + + +// -- Encoding + +function Utf7IMAPEncoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = Buffer.alloc(6); + this.base64AccumIdx = 0; +} + +Utf7IMAPEncoder.prototype.write = function(str) { + var inBase64 = this.inBase64, + base64Accum = this.base64Accum, + base64AccumIdx = this.base64AccumIdx, + buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0; + + for (var i = 0; i < str.length; i++) { + var uChar = str.charCodeAt(i); + if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'. + if (inBase64) { + if (base64AccumIdx > 0) { + bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); + base64AccumIdx = 0; + } + + buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. + inBase64 = false; + } + + if (!inBase64) { + buf[bufIdx++] = uChar; // Write direct character + + if (uChar === andChar) // Ampersand -> '&-' + buf[bufIdx++] = minusChar; + } + + } else { // Non-direct character + if (!inBase64) { + buf[bufIdx++] = andChar; // Write '&', then go to base64 mode. + inBase64 = true; + } + if (inBase64) { + base64Accum[base64AccumIdx++] = uChar >> 8; + base64Accum[base64AccumIdx++] = uChar & 0xFF; + + if (base64AccumIdx == base64Accum.length) { + bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx); + base64AccumIdx = 0; + } + } + } + } + + this.inBase64 = inBase64; + this.base64AccumIdx = base64AccumIdx; + + return buf.slice(0, bufIdx); +} + +Utf7IMAPEncoder.prototype.end = function() { + var buf = Buffer.alloc(10), bufIdx = 0; + if (this.inBase64) { + if (this.base64AccumIdx > 0) { + bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); + this.base64AccumIdx = 0; + } + + buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. + this.inBase64 = false; + } + + return buf.slice(0, bufIdx); +} + + +// -- Decoding + +function Utf7IMAPDecoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ''; +} + +var base64IMAPChars = base64Chars.slice(); +base64IMAPChars[','.charCodeAt(0)] = true; + +Utf7IMAPDecoder.prototype.write = function(buf) { + var res = "", lastI = 0, + inBase64 = this.inBase64, + base64Accum = this.base64Accum; + + // The decoder is more involved as we must handle chunks in stream. + // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end). + + for (var i = 0; i < buf.length; i++) { + if (!inBase64) { // We're in direct mode. + // Write direct chars until '&' + if (buf[i] == andChar) { + res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. + lastI = i+1; + inBase64 = true; + } + } else { // We decode base64. + if (!base64IMAPChars[buf[i]]) { // Base64 ended. + if (i == lastI && buf[i] == minusChar) { // "&-" -> "&" + res += "&"; + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii").replace(/,/g, '/'); + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); + } + + if (buf[i] != minusChar) // Minus may be absorbed after base64. + i--; + + lastI = i+1; + inBase64 = false; + base64Accum = ''; + } + } + } + + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, '/'); + + var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. + base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. + b64str = b64str.slice(0, canBeDecoded); + + res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be"); + } + + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + + return res; +} + +Utf7IMAPDecoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) + res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be"); + + this.inBase64 = false; + this.base64Accum = ''; + return res; +} + + diff --git a/node_modules/iconv-lite/lib/bom-handling.js b/node_modules/iconv-lite/lib/bom-handling.js new file mode 100644 index 0000000..1050872 --- /dev/null +++ b/node_modules/iconv-lite/lib/bom-handling.js @@ -0,0 +1,52 @@ +"use strict"; + +var BOMChar = '\uFEFF'; + +exports.PrependBOM = PrependBOMWrapper +function PrependBOMWrapper(encoder, options) { + this.encoder = encoder; + this.addBOM = true; +} + +PrependBOMWrapper.prototype.write = function(str) { + if (this.addBOM) { + str = BOMChar + str; + this.addBOM = false; + } + + return this.encoder.write(str); +} + +PrependBOMWrapper.prototype.end = function() { + return this.encoder.end(); +} + + +//------------------------------------------------------------------------------ + +exports.StripBOM = StripBOMWrapper; +function StripBOMWrapper(decoder, options) { + this.decoder = decoder; + this.pass = false; + this.options = options || {}; +} + +StripBOMWrapper.prototype.write = function(buf) { + var res = this.decoder.write(buf); + if (this.pass || !res) + return res; + + if (res[0] === BOMChar) { + res = res.slice(1); + if (typeof this.options.stripBOM === 'function') + this.options.stripBOM(); + } + + this.pass = true; + return res; +} + +StripBOMWrapper.prototype.end = function() { + return this.decoder.end(); +} + diff --git a/node_modules/iconv-lite/lib/index.d.ts b/node_modules/iconv-lite/lib/index.d.ts new file mode 100644 index 0000000..99f200f --- /dev/null +++ b/node_modules/iconv-lite/lib/index.d.ts @@ -0,0 +1,41 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. + * REQUIREMENT: This definition is dependent on the @types/node definition. + * Install with `npm install @types/node --save-dev` + *--------------------------------------------------------------------------------------------*/ + +declare module 'iconv-lite' { + // Basic API + export function decode(buffer: Buffer, encoding: string, options?: Options): string; + + export function encode(content: string, encoding: string, options?: Options): Buffer; + + export function encodingExists(encoding: string): boolean; + + // Stream API + export function decodeStream(encoding: string, options?: Options): NodeJS.ReadWriteStream; + + export function encodeStream(encoding: string, options?: Options): NodeJS.ReadWriteStream; + + // Low-level stream APIs + export function getEncoder(encoding: string, options?: Options): EncoderStream; + + export function getDecoder(encoding: string, options?: Options): DecoderStream; +} + +export interface Options { + stripBOM?: boolean; + addBOM?: boolean; + defaultEncoding?: string; +} + +export interface EncoderStream { + write(str: string): Buffer; + end(): Buffer | undefined; +} + +export interface DecoderStream { + write(buf: Buffer): string; + end(): string | undefined; +} diff --git a/node_modules/iconv-lite/lib/index.js b/node_modules/iconv-lite/lib/index.js new file mode 100644 index 0000000..657701c --- /dev/null +++ b/node_modules/iconv-lite/lib/index.js @@ -0,0 +1,180 @@ +"use strict"; + +var Buffer = require("safer-buffer").Buffer; + +var bomHandling = require("./bom-handling"), + iconv = module.exports; + +// All codecs and aliases are kept here, keyed by encoding name/alias. +// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`. +iconv.encodings = null; + +// Characters emitted in case of error. +iconv.defaultCharUnicode = '�'; +iconv.defaultCharSingleByte = '?'; + +// Public API. +iconv.encode = function encode(str, encoding, options) { + str = "" + (str || ""); // Ensure string. + + var encoder = iconv.getEncoder(encoding, options); + + var res = encoder.write(str); + var trail = encoder.end(); + + return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res; +} + +iconv.decode = function decode(buf, encoding, options) { + if (typeof buf === 'string') { + if (!iconv.skipDecodeWarning) { + console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding'); + iconv.skipDecodeWarning = true; + } + + buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer. + } + + var decoder = iconv.getDecoder(encoding, options); + + var res = decoder.write(buf); + var trail = decoder.end(); + + return trail ? (res + trail) : res; +} + +iconv.encodingExists = function encodingExists(enc) { + try { + iconv.getCodec(enc); + return true; + } catch (e) { + return false; + } +} + +// Legacy aliases to convert functions +iconv.toEncoding = iconv.encode; +iconv.fromEncoding = iconv.decode; + +// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache. +iconv._codecDataCache = {}; +iconv.getCodec = function getCodec(encoding) { + if (!iconv.encodings) + iconv.encodings = require("../encodings"); // Lazy load all encoding definitions. + + // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. + var enc = iconv._canonicalizeEncoding(encoding); + + // Traverse iconv.encodings to find actual codec. + var codecOptions = {}; + while (true) { + var codec = iconv._codecDataCache[enc]; + if (codec) + return codec; + + var codecDef = iconv.encodings[enc]; + + switch (typeof codecDef) { + case "string": // Direct alias to other encoding. + enc = codecDef; + break; + + case "object": // Alias with options. Can be layered. + for (var key in codecDef) + codecOptions[key] = codecDef[key]; + + if (!codecOptions.encodingName) + codecOptions.encodingName = enc; + + enc = codecDef.type; + break; + + case "function": // Codec itself. + if (!codecOptions.encodingName) + codecOptions.encodingName = enc; + + // The codec function must load all tables and return object with .encoder and .decoder methods. + // It'll be called only once (for each different options object). + codec = new codecDef(codecOptions, iconv); + + iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later. + return codec; + + default: + throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')"); + } + } +} + +iconv._canonicalizeEncoding = function(encoding) { + // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. + return (''+encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); +} + +iconv.getEncoder = function getEncoder(encoding, options) { + var codec = iconv.getCodec(encoding), + encoder = new codec.encoder(options, codec); + + if (codec.bomAware && options && options.addBOM) + encoder = new bomHandling.PrependBOM(encoder, options); + + return encoder; +} + +iconv.getDecoder = function getDecoder(encoding, options) { + var codec = iconv.getCodec(encoding), + decoder = new codec.decoder(options, codec); + + if (codec.bomAware && !(options && options.stripBOM === false)) + decoder = new bomHandling.StripBOM(decoder, options); + + return decoder; +} + +// Streaming API +// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add +// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default. +// If you would like to enable it explicitly, please add the following code to your app: +// > iconv.enableStreamingAPI(require('stream')); +iconv.enableStreamingAPI = function enableStreamingAPI(stream_module) { + if (iconv.supportsStreams) + return; + + // Dependency-inject stream module to create IconvLite stream classes. + var streams = require("./streams")(stream_module); + + // Not public API yet, but expose the stream classes. + iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream; + iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream; + + // Streaming API. + iconv.encodeStream = function encodeStream(encoding, options) { + return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); + } + + iconv.decodeStream = function decodeStream(encoding, options) { + return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); + } + + iconv.supportsStreams = true; +} + +// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments). +var stream_module; +try { + stream_module = require("stream"); +} catch (e) {} + +if (stream_module && stream_module.Transform) { + iconv.enableStreamingAPI(stream_module); + +} else { + // In rare cases where 'stream' module is not available by default, throw a helpful exception. + iconv.encodeStream = iconv.decodeStream = function() { + throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it."); + }; +} + +if ("Ā" != "\u0100") { + 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."); +} diff --git a/node_modules/iconv-lite/lib/streams.js b/node_modules/iconv-lite/lib/streams.js new file mode 100644 index 0000000..a150648 --- /dev/null +++ b/node_modules/iconv-lite/lib/streams.js @@ -0,0 +1,109 @@ +"use strict"; + +var Buffer = require("safer-buffer").Buffer; + +// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), +// we opt to dependency-inject it instead of creating a hard dependency. +module.exports = function(stream_module) { + var Transform = stream_module.Transform; + + // == Encoder stream ======================================================= + + function IconvLiteEncoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.decodeStrings = false; // We accept only strings, so we don't need to decode them. + Transform.call(this, options); + } + + IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteEncoderStream } + }); + + IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { + if (typeof chunk != 'string') + return done(new Error("Iconv encoding stream needs strings as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res); + done(); + } + catch (e) { + done(e); + } + } + + IconvLiteEncoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res); + done(); + } + catch (e) { + done(e); + } + } + + IconvLiteEncoderStream.prototype.collect = function(cb) { + var chunks = []; + this.on('error', cb); + this.on('data', function(chunk) { chunks.push(chunk); }); + this.on('end', function() { + cb(null, Buffer.concat(chunks)); + }); + return this; + } + + + // == Decoder stream ======================================================= + + function IconvLiteDecoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.encoding = this.encoding = 'utf8'; // We output strings. + Transform.call(this, options); + } + + IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteDecoderStream } + }); + + IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { + if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array)) + return done(new Error("Iconv decoding stream needs buffers as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res, this.encoding); + done(); + } + catch (e) { + done(e); + } + } + + IconvLiteDecoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res, this.encoding); + done(); + } + catch (e) { + done(e); + } + } + + IconvLiteDecoderStream.prototype.collect = function(cb) { + var res = ''; + this.on('error', cb); + this.on('data', function(chunk) { res += chunk; }); + this.on('end', function() { + cb(null, res); + }); + return this; + } + + return { + IconvLiteEncoderStream: IconvLiteEncoderStream, + IconvLiteDecoderStream: IconvLiteDecoderStream, + }; +}; diff --git a/node_modules/iconv-lite/package.json b/node_modules/iconv-lite/package.json new file mode 100644 index 0000000..d351115 --- /dev/null +++ b/node_modules/iconv-lite/package.json @@ -0,0 +1,44 @@ +{ + "name": "iconv-lite", + "description": "Convert character encodings in pure javascript.", + "version": "0.6.3", + "license": "MIT", + "keywords": [ + "iconv", + "convert", + "charset", + "icu" + ], + "author": "Alexander Shtuchkin <ashtuchkin@gmail.com>", + "main": "./lib/index.js", + "typings": "./lib/index.d.ts", + "homepage": "https://github.com/ashtuchkin/iconv-lite", + "bugs": "https://github.com/ashtuchkin/iconv-lite/issues", + "repository": { + "type": "git", + "url": "git://github.com/ashtuchkin/iconv-lite.git" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "coverage": "c8 _mocha --grep .", + "test": "mocha --reporter spec --grep ." + }, + "browser": { + "stream": false + }, + "devDependencies": { + "async": "^3.2.0", + "c8": "^7.2.0", + "errto": "^0.2.1", + "iconv": "^2.3.5", + "mocha": "^3.5.3", + "request": "^2.88.2", + "semver": "^6.3.0", + "unorm": "^1.6.0" + }, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } +} diff --git a/node_modules/inherits/LICENSE b/node_modules/inherits/LICENSE new file mode 100644 index 0000000..dea3013 --- /dev/null +++ b/node_modules/inherits/LICENSE @@ -0,0 +1,16 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + diff --git a/node_modules/inherits/README.md b/node_modules/inherits/README.md new file mode 100644 index 0000000..b1c5665 --- /dev/null +++ b/node_modules/inherits/README.md @@ -0,0 +1,42 @@ +Browser-friendly inheritance fully compatible with standard node.js +[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). + +This package exports standard `inherits` from node.js `util` module in +node environment, but also provides alternative browser-friendly +implementation through [browser +field](https://gist.github.com/shtylman/4339901). Alternative +implementation is a literal copy of standard one located in standalone +module to avoid requiring of `util`. It also has a shim for old +browsers with no `Object.create` support. + +While keeping you sure you are using standard `inherits` +implementation in node.js environment, it allows bundlers such as +[browserify](https://github.com/substack/node-browserify) to not +include full `util` package to your client code if all you need is +just `inherits` function. It worth, because browser shim for `util` +package is large and `inherits` is often the single function you need +from it. + +It's recommended to use this package instead of +`require('util').inherits` for any code that has chances to be used +not only in node.js but in browser too. + +## usage + +```js +var inherits = require('inherits'); +// then use exactly as the standard one +``` + +## note on version ~1.0 + +Version ~1.0 had completely different motivation and is not compatible +neither with 2.0 nor with standard node.js `inherits`. + +If you are using version ~1.0 and planning to switch to ~2.0, be +careful: + +* new version uses `super_` instead of `super` for referencing + superclass +* new version overwrites current prototype while old one preserves any + existing fields on it diff --git a/node_modules/inherits/inherits.js b/node_modules/inherits/inherits.js new file mode 100644 index 0000000..f71f2d9 --- /dev/null +++ b/node_modules/inherits/inherits.js @@ -0,0 +1,9 @@ +try { + var util = require('util'); + /* istanbul ignore next */ + if (typeof util.inherits !== 'function') throw ''; + module.exports = util.inherits; +} catch (e) { + /* istanbul ignore next */ + module.exports = require('./inherits_browser.js'); +} diff --git a/node_modules/inherits/inherits_browser.js b/node_modules/inherits/inherits_browser.js new file mode 100644 index 0000000..86bbb3d --- /dev/null +++ b/node_modules/inherits/inherits_browser.js @@ -0,0 +1,27 @@ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } + } +} diff --git a/node_modules/inherits/package.json b/node_modules/inherits/package.json new file mode 100644 index 0000000..37b4366 --- /dev/null +++ b/node_modules/inherits/package.json @@ -0,0 +1,29 @@ +{ + "name": "inherits", + "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", + "version": "2.0.4", + "keywords": [ + "inheritance", + "class", + "klass", + "oop", + "object-oriented", + "inherits", + "browser", + "browserify" + ], + "main": "./inherits.js", + "browser": "./inherits_browser.js", + "repository": "git://github.com/isaacs/inherits", + "license": "ISC", + "scripts": { + "test": "tap" + }, + "devDependencies": { + "tap": "^14.2.4" + }, + "files": [ + "inherits.js", + "inherits_browser.js" + ] +} diff --git a/node_modules/is-class-hotfix/.editorconfig b/node_modules/is-class-hotfix/.editorconfig new file mode 100644 index 0000000..7727cd6 --- /dev/null +++ b/node_modules/is-class-hotfix/.editorconfig @@ -0,0 +1,23 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +# use line feed +end_of_line = lf + +# ensure file ends with a newline when saving +insert_final_newline = true + +# soft tabs +indent_style = space + +# number of columns used for each indentation level +indent_size = 2 + +# remove any whitespace characters preceding newline characters +trim_trailing_whitespace = true + +# character set +charset = utf-8 diff --git a/node_modules/is-class-hotfix/.gitattributes b/node_modules/is-class-hotfix/.gitattributes new file mode 100644 index 0000000..4c4ff8c --- /dev/null +++ b/node_modules/is-class-hotfix/.gitattributes @@ -0,0 +1,2 @@ +# Convert line endings to LF (Line Feed) +* text=auto \ No newline at end of file diff --git a/node_modules/is-class-hotfix/CHANGELOG.md b/node_modules/is-class-hotfix/CHANGELOG.md new file mode 100644 index 0000000..a0b7448 --- /dev/null +++ b/node_modules/is-class-hotfix/CHANGELOG.md @@ -0,0 +1,7 @@ +# Change Log +All notable changes to this project will be documented in this file. +This project adheres to [Semantic Versioning](http://semver.org/). + +## [0.0.2] - 2015-04-26 +### Added +- Babel.js classes support diff --git a/node_modules/is-class-hotfix/LICENSE.md b/node_modules/is-class-hotfix/LICENSE.md new file mode 100644 index 0000000..aae38a6 --- /dev/null +++ b/node_modules/is-class-hotfix/LICENSE.md @@ -0,0 +1,21 @@ +MIT license + +Copyright (C) 2014 Miguel Mota + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/is-class-hotfix/README.md b/node_modules/is-class-hotfix/README.md new file mode 100644 index 0000000..6411370 --- /dev/null +++ b/node_modules/is-class-hotfix/README.md @@ -0,0 +1,35 @@ +# is-class + +Check if function is an ES6 class. + +# Install + +```bash +npm install is-class +``` + +```bash +bower install is-class +``` + +# Usage + +```javascript +var isClass = require('is-class'); + +class F {} +function G() {} + +console.log(isClass(F)); // true +console.log(isClass(G)); // false +``` + +# Test + +```bash +npm test +``` + +# License + +MIT diff --git a/node_modules/is-class-hotfix/bower.json b/node_modules/is-class-hotfix/bower.json new file mode 100644 index 0000000..887534a --- /dev/null +++ b/node_modules/is-class-hotfix/bower.json @@ -0,0 +1,24 @@ +{ + "name": "is-class", + "main": "is-class.js", + "version": "0.0.4", + "homepage": "https://github.com/miguelmota/is-class", + "authors": [ + "Miguel Mota <miguelmota2@gmail.com>" + ], + "description": "Check if function is an ES6 class.", + "keywords": [ + "predicate", + "function", + "class", + "es6" + ], + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "license": "MIT" +} diff --git a/node_modules/is-class-hotfix/is-class.js b/node_modules/is-class-hotfix/is-class.js new file mode 100644 index 0000000..5c74d79 --- /dev/null +++ b/node_modules/is-class-hotfix/is-class.js @@ -0,0 +1,28 @@ +(function(root) { + var toString = Function.prototype.toString; + + function fnBody(fn) { + return toString.call(fn).replace(/^[^{]*{\s*/,'').replace(/\s*}[^}]*$/,''); + } + + function isClass(fn) { + return (typeof fn === 'function' && + (/^class(?:\s|{)/.test(toString.call(fn)) || + (/^.*classCallCheck\(/.test(fnBody(fn)))) // babel.js + ); + } + + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = isClass; + } + exports.isClass = isClass; + } else if (typeof define === 'function' && define.amd) { + define([], function() { + return isClass; + }); + } else { + root.isClass = isClass; + } + +})(this); diff --git a/node_modules/is-class-hotfix/package.json b/node_modules/is-class-hotfix/package.json new file mode 100644 index 0000000..398f42a --- /dev/null +++ b/node_modules/is-class-hotfix/package.json @@ -0,0 +1,31 @@ +{ + "name": "is-class-hotfix", + "version": "0.0.6", + "description": "Check if function is an ES6 class.", + "main": "is-class.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "tape test/*.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/miguelmota/is-class" + }, + "keywords": [ + "predicate", + "function", + "class", + "es6" + ], + "author": "Miguel Mota <hello@miguelmota.com> (http://www.miguelmota.com/)", + "license": "MIT", + "bugs": { + "url": "https://github.com/miguelmota/is-class/issues" + }, + "homepage": "https://github.com/miguelmota/is-class", + "devDependencies": { + "tape": "^3.0.3" + } +} diff --git a/node_modules/is-class-hotfix/test/babel-class.js b/node_modules/is-class-hotfix/test/babel-class.js new file mode 100644 index 0000000..6a694c6 --- /dev/null +++ b/node_modules/is-class-hotfix/test/babel-class.js @@ -0,0 +1,27 @@ +'use strict'; + +var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }; + +var test = require('tape'); +var isClass = require('../is-class'); + +test('isClass', function (t) { + t.plan(9); + + var F = function F() { + _classCallCheck(this, F); + }; + + function G() {} + + t.true(isClass(F)); + t.false(isClass(G)); + t.false(isClass('')); + t.false(isClass(0)); + t.false(isClass(null)); + t.false(isClass(undefined)); + t.false(isClass(1)); + t.false(isClass({})); + t.false(isClass([])); +}); + diff --git a/node_modules/is-class-hotfix/test/is-class.js b/node_modules/is-class-hotfix/test/is-class.js new file mode 100644 index 0000000..d22d9e2 --- /dev/null +++ b/node_modules/is-class-hotfix/test/is-class.js @@ -0,0 +1,31 @@ +'use strict'; + +var test = require('tape'); +var isClass = require('../is-class'); + +test('isClass', function (t) { + t.plan(19); + + class F {} + function G() {} + + t.true(isClass(F)); + t.true(isClass(class{})); + t.true(isClass(class{ })); + t.true(isClass(class{constructor(){}})); + t.true(isClass(class _{})); + t.true(isClass(class _FF {})); + t.true(isClass(class B extends(F){})); + t.true(isClass(class extends(F){})); + t.true(isClass(class extends F{})); + t.true(isClass(class extends F {})); + t.true(isClass(class extends F {})); + t.false(isClass(G)); + t.false(isClass('')); + t.false(isClass(0)); + t.false(isClass(null)); + t.false(isClass(undefined)); + t.false(isClass(1)); + t.false(isClass({})); + t.false(isClass([])); +}); diff --git a/node_modules/is-extendable/LICENSE b/node_modules/is-extendable/LICENSE new file mode 100644 index 0000000..65f90ac --- /dev/null +++ b/node_modules/is-extendable/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/is-extendable/README.md b/node_modules/is-extendable/README.md new file mode 100644 index 0000000..e4cfaeb --- /dev/null +++ b/node_modules/is-extendable/README.md @@ -0,0 +1,72 @@ +# is-extendable [![NPM version](https://badge.fury.io/js/is-extendable.svg)](http://badge.fury.io/js/is-extendable) + +> Returns true if a value is any of the object types: array, regexp, plain object, function or date. This is useful for determining if a value can be extended, e.g. "can the value have keys?" + +## Install + +Install with [npm](https://www.npmjs.com/) + +```sh +$ npm i is-extendable --save +``` + +## Usage + +```js +var isExtendable = require('is-extendable'); +``` + +Returns true if the value is any of the following: + +* `array` +* `regexp` +* `plain object` +* `function` +* `date` +* `error` + +## Notes + +All objects in JavaScript can have keys, but it's a pain to check for this, since we ether need to verify that the value is not `null` or `undefined` and: + +* the value is not a primitive, or +* that the object is an `object`, `function` + +Also note that an `extendable` object is not the same as an [extensible object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible), which is one that (in es6) is not sealed, frozen, or marked as non-extensible using `preventExtensions`. + +## Related projects + +* [assign-deep](https://github.com/jonschlinkert/assign-deep): Deeply assign the enumerable properties of source objects to a destination object. +* [extend-shallow](https://github.com/jonschlinkert/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. +* [isobject](https://github.com/jonschlinkert/isobject): Returns true if the value is an object and not an array or null. +* [is-plain-object](https://github.com/jonschlinkert/is-plain-object): Returns true if an object was created by the `Object` constructor. +* [is-equal-shallow](https://github.com/jonschlinkert/is-equal-shallow): Does a shallow comparison of two objects, returning false if the keys or values differ. +* [kind-of](https://github.com/jonschlinkert/kind-of): Get the native type of a value. + +## Running tests + +Install dev dependencies: + +```sh +$ npm i -d && npm test +``` + +## Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/is-extendable/issues/new) + +## Author + +**Jon Schlinkert** + ++ [github/jonschlinkert](https://github.com/jonschlinkert) ++ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) + +## License + +Copyright © 2015 Jon Schlinkert +Released under the MIT license. + +*** + +_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on July 04, 2015._ \ No newline at end of file diff --git a/node_modules/is-extendable/index.js b/node_modules/is-extendable/index.js new file mode 100644 index 0000000..4ee71a4 --- /dev/null +++ b/node_modules/is-extendable/index.js @@ -0,0 +1,13 @@ +/*! + * is-extendable <https://github.com/jonschlinkert/is-extendable> + * + * Copyright (c) 2015, Jon Schlinkert. + * Licensed under the MIT License. + */ + +'use strict'; + +module.exports = function isExtendable(val) { + return typeof val !== 'undefined' && val !== null + && (typeof val === 'object' || typeof val === 'function'); +}; diff --git a/node_modules/is-extendable/package.json b/node_modules/is-extendable/package.json new file mode 100644 index 0000000..5dd006e --- /dev/null +++ b/node_modules/is-extendable/package.json @@ -0,0 +1,51 @@ +{ + "name": "is-extendable", + "description": "Returns true if a value is any of the object types: array, regexp, plain object, function or date. This is useful for determining if a value can be extended, e.g. \"can the value have keys?\"", + "version": "0.1.1", + "homepage": "https://github.com/jonschlinkert/is-extendable", + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", + "repository": "jonschlinkert/is-extendable", + "bugs": { + "url": "https://github.com/jonschlinkert/is-extendable/issues" + }, + "license": "MIT", + "files": [ + "index.js" + ], + "main": "index.js", + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "devDependencies": { + "mocha": "*" + }, + "keywords": [ + "array", + "assign", + "check", + "date", + "extend", + "extensible", + "function", + "is", + "object", + "regex", + "test" + ], + "verbiage": { + "related": { + "list": [ + "isobject", + "is-plain-object", + "kind-of", + "is-extendable", + "is-equal-shallow", + "extend-shallow", + "assign-deep" + ] + } + } +} diff --git a/node_modules/is-type-of/LICENSE b/node_modules/is-type-of/LICENSE new file mode 100644 index 0000000..180d131 --- /dev/null +++ b/node_modules/is-type-of/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 dead_horse + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/node_modules/is-type-of/README.md b/node_modules/is-type-of/README.md new file mode 100644 index 0000000..b78b90c --- /dev/null +++ b/node_modules/is-type-of/README.md @@ -0,0 +1,105 @@ +is-type-of +========== + +complete type checking for node, extend [core-util-is](https://github.com/isaacs/core-util-is) + +dependencies: + +- [core-util-is](https://github.com/isaacs/core-util-is) +- [is-stream](https://github.com/rvagg/isstream) +- [is-class](https://github.com/miguelmota/is-class) + +## Install + +``` +npm install is-type-of +``` + +## Example + +``` +var is = require('is-type-of'); + +is.array([1]); // => true +is.primitive(true); // => true +is.primitive({}); // => false +is.generatorFunction(function * () {}); // => true +is.long(Math.pow(2, 33)); // => true +is.double(0); // => false +``` + +## API + +### From [core-util-is](https://github.com/isaacs/core-util-is) + +#### is.array(arr) + +#### is.boolean(bool) + +#### is.null(null) + +#### is.nullOrUndefined(null) + +#### is.number(num) + +#### is.string(str) + +#### is.symbol(sym) + +#### is.undefined(undef) + +#### is.regExp(reg) + +#### is.object(obj) + +#### is.date(date) + +#### is.error(err) + +#### is.function(fn) + +#### is.primitive(prim) + +#### is.buffer(buf) + +### from [is-stream](https://github.com/rvagg/isstream) + +#### is.stream(stream) + +#### is.readableStream(readable) + +#### is.writableStream(writable) + +#### is.duplexStream(duplex) + +### from [is-class](https://github.com/miguelmota/is-class) + +#### is.class(obj) + +### Extend API + +#### is.finite(num) + +#### is.NaN(NaN) + +#### is.generator(gen) + +#### is.generatorFunction(fn) + +#### is.promise(fn) + +#### is.int(int) + +#### is.double(double) + +#### is.int32(int) + +#### is.long(long) + +#### is.Long(Long) + + * Support [Long](https://github.com/dcodeIO/Long.js) instance. + +## License + +MIT diff --git a/node_modules/is-type-of/index.d.ts b/node_modules/is-type-of/index.d.ts new file mode 100644 index 0000000..9cb2335 --- /dev/null +++ b/node_modules/is-type-of/index.d.ts @@ -0,0 +1,65 @@ +export function array(val: any): boolean; +export function boolean(val: any): boolean; + +declare function isNull(val: any): boolean; +export { isNull as null }; + +export function nullOrUndefined(val: any): boolean; + +export function number(val: any): boolean; + +export function string(val: any): boolean; + +export function symbol(val: any): boolean; + +export function undefined(val: any): boolean; + +export function regexp(val: any): boolean; +export function regExp(val: any): boolean; + +export function object(val: any): boolean; + +export function date(val: any): val is Date; + +export function error(val: any): val is Error; + +declare function isFunction(val: any): boolean; +export { isFunction as function }; + +export function primitive(val: any): boolean; + +export function buffer(val: any): boolean; + +export function stream(val: any): boolean; + +export function readableStream(val: any): boolean; + +export function writableStream(val: any): boolean; + +export function duplexStream(val: any): boolean; + +declare function isClass(val: any): boolean; +export { isClass as class }; + +export function generator(val: any): boolean; + +export function generatorFunction(val: any): boolean; + +export function asyncFunction(val: any): boolean; + +export function promise(val: any): boolean; + +export function int(val: any): boolean; + +export function int32(val: any): boolean; + +export function long(val: any): boolean; + +export function Long(val: any): boolean; + +export function double(val: any): boolean; +export function finite(val: any): boolean; +export function NaN(val: any): boolean; + +export function bigInt(val: any): boolean; +export function bigint(val: any): boolean; diff --git a/node_modules/is-type-of/index.js b/node_modules/is-type-of/index.js new file mode 100644 index 0000000..535f776 --- /dev/null +++ b/node_modules/is-type-of/index.js @@ -0,0 +1,125 @@ +'use strict'; + +var utils = require('core-util-is'); +var isStearm = require('isstream'); +// wait for https://github.com/miguelmota/is-class/pull/6 merge +var isClass = require('is-class-hotfix'); + +/** + * Expose all methods in core-util-is + */ + +Object.keys(utils).map(function (name) { + exports[transform(name)] = utils[name]; +}); + +/** + * Stream detected by isstream + */ + +exports.stream = isStearm; +exports.readableStream = isStearm.isReadable; +exports.writableStream = isStearm.isWritable; +exports.duplexStream = isStearm.isDuplex; + +/** + * Class detected by is-class + */ + exports.class = isClass; + +/** + * Extend method + */ + +exports.finite = Number.isFinite; + +exports.NaN = Number.isNaN; + +exports.generator = function (obj) { + return obj + && 'function' === typeof obj.next + && 'function' === typeof obj.throw; +}; + +exports.generatorFunction = function (obj) { + return obj + && obj.constructor + && 'GeneratorFunction' === obj.constructor.name; +}; + +exports.asyncFunction = function (obj) { + return obj + && obj.constructor + && 'AsyncFunction' === obj.constructor.name; +}; + +exports.promise = function (obj) { + return obj + && 'function' === typeof obj.then; +}; + +var MAX_INT_31 = Math.pow(2, 31); + +exports.int = function (obj) { + return utils.isNumber(obj) + && obj % 1 === 0; +}; + +exports.int32 = function (obj) { + return exports.int(obj) + && obj < MAX_INT_31 + && obj >= -MAX_INT_31; +}; + +exports.long = function (obj) { + return exports.int(obj) + && (obj >= MAX_INT_31 || obj < -MAX_INT_31); +}; + +exports.Long = function (obj) { + return exports.object(obj) + && exports.number(obj.high) + && exports.number(obj.low); +}; + +exports.double = function (obj) { + return utils.isNumber(obj) + && !isNaN(obj) + && obj % 1 !== 0; +}; + +exports.bigInt = function (obj) { + return 'bigint' === typeof obj; +}; +exports.bigint = exports.bigInt; + +/** + * override core-util-is + */ + +exports.date = function isDate(obj) { + return obj instanceof Date; +}; + +exports.regExp = function isRegExp(obj) { + return obj instanceof RegExp; +}; +exports.regexp = exports.regExp; + +exports.error = function isError(obj) { + return obj instanceof Error; +}; + +exports.array = Array.isArray; + +/** + * transform isNull type to null + * @param {[type]} m [description] + * @return {[type]} [description] + */ + +function transform(m) { + var name = m.slice(2); + name = name[0].toLowerCase() + name.slice(1); + return name; +} diff --git a/node_modules/is-type-of/package.json b/node_modules/is-type-of/package.json new file mode 100644 index 0000000..3d38b2b --- /dev/null +++ b/node_modules/is-type-of/package.json @@ -0,0 +1,45 @@ +{ + "name": "is-type-of", + "version": "1.4.0", + "description": "complete type checking for node", + "main": "index.js", + "scripts": { + "test": "tsd && egg-bin test", + "ci": "tsd && egg-bin cov", + "lint": "echo 'ignore'" + }, + "repository": { + "type": "git", + "url": "git://github.com/node-modules/is-type-of.git" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "typeof", + "checker", + "type", + "is" + ], + "author": "dead_horse <dead_horse@qq.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/node-modules/is-type-of/issues" + }, + "homepage": "https://github.com/node-modules/is-type-of", + "dependencies": { + "core-util-is": "^1.0.2", + "is-class-hotfix": "~0.0.6", + "isstream": "~0.1.2" + }, + "devDependencies": { + "@types/node": "^18.16.3", + "beautify-benchmark": "^0.2.4", + "benchmark": "^2.1.4", + "egg-bin": "^6.4.0", + "long": "^3.2.0", + "semver": "^5.4.1", + "tsd": "^0.28.1" + } +} diff --git a/node_modules/isarray/.npmignore b/node_modules/isarray/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/node_modules/isarray/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/node_modules/isarray/.travis.yml b/node_modules/isarray/.travis.yml new file mode 100644 index 0000000..cc4dba2 --- /dev/null +++ b/node_modules/isarray/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.8" + - "0.10" diff --git a/node_modules/isarray/Makefile b/node_modules/isarray/Makefile new file mode 100644 index 0000000..787d56e --- /dev/null +++ b/node_modules/isarray/Makefile @@ -0,0 +1,6 @@ + +test: + @node_modules/.bin/tape test.js + +.PHONY: test + diff --git a/node_modules/isarray/README.md b/node_modules/isarray/README.md new file mode 100644 index 0000000..16d2c59 --- /dev/null +++ b/node_modules/isarray/README.md @@ -0,0 +1,60 @@ + +# isarray + +`Array#isArray` for older browsers. + +[![build status](https://secure.travis-ci.org/juliangruber/isarray.svg)](http://travis-ci.org/juliangruber/isarray) +[![downloads](https://img.shields.io/npm/dm/isarray.svg)](https://www.npmjs.org/package/isarray) + +[![browser support](https://ci.testling.com/juliangruber/isarray.png) +](https://ci.testling.com/juliangruber/isarray) + +## Usage + +```js +var isArray = require('isarray'); + +console.log(isArray([])); // => true +console.log(isArray({})); // => false +``` + +## Installation + +With [npm](http://npmjs.org) do + +```bash +$ npm install isarray +``` + +Then bundle for the browser with +[browserify](https://github.com/substack/browserify). + +With [component](http://component.io) do + +```bash +$ component install juliangruber/isarray +``` + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/isarray/component.json b/node_modules/isarray/component.json new file mode 100644 index 0000000..9e31b68 --- /dev/null +++ b/node_modules/isarray/component.json @@ -0,0 +1,19 @@ +{ + "name" : "isarray", + "description" : "Array#isArray for older browsers", + "version" : "0.0.1", + "repository" : "juliangruber/isarray", + "homepage": "https://github.com/juliangruber/isarray", + "main" : "index.js", + "scripts" : [ + "index.js" + ], + "dependencies" : {}, + "keywords": ["browser","isarray","array"], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT" +} diff --git a/node_modules/isarray/index.js b/node_modules/isarray/index.js new file mode 100644 index 0000000..a57f634 --- /dev/null +++ b/node_modules/isarray/index.js @@ -0,0 +1,5 @@ +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; diff --git a/node_modules/isarray/package.json b/node_modules/isarray/package.json new file mode 100644 index 0000000..1a4317a --- /dev/null +++ b/node_modules/isarray/package.json @@ -0,0 +1,45 @@ +{ + "name": "isarray", + "description": "Array#isArray for older browsers", + "version": "1.0.0", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/isarray.git" + }, + "homepage": "https://github.com/juliangruber/isarray", + "main": "index.js", + "dependencies": {}, + "devDependencies": { + "tape": "~2.13.4" + }, + "keywords": [ + "browser", + "isarray", + "array" + ], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test.js", + "browsers": [ + "ie/8..latest", + "firefox/17..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + }, + "scripts": { + "test": "tape test.js" + } +} diff --git a/node_modules/isarray/test.js b/node_modules/isarray/test.js new file mode 100644 index 0000000..e0c3444 --- /dev/null +++ b/node_modules/isarray/test.js @@ -0,0 +1,20 @@ +var isArray = require('./'); +var test = require('tape'); + +test('is array', function(t){ + t.ok(isArray([])); + t.notOk(isArray({})); + t.notOk(isArray(null)); + t.notOk(isArray(false)); + + var obj = {}; + obj[0] = true; + t.notOk(isArray(obj)); + + var arr = []; + arr.foo = 'bar'; + t.ok(isArray(arr)); + + t.end(); +}); + diff --git a/node_modules/isstream/.jshintrc b/node_modules/isstream/.jshintrc new file mode 100644 index 0000000..c8ef3ca --- /dev/null +++ b/node_modules/isstream/.jshintrc @@ -0,0 +1,59 @@ +{ + "predef": [ ] + , "bitwise": false + , "camelcase": false + , "curly": false + , "eqeqeq": false + , "forin": false + , "immed": false + , "latedef": false + , "noarg": true + , "noempty": true + , "nonew": true + , "plusplus": false + , "quotmark": true + , "regexp": false + , "undef": true + , "unused": true + , "strict": false + , "trailing": true + , "maxlen": 120 + , "asi": true + , "boss": true + , "debug": true + , "eqnull": true + , "esnext": true + , "evil": true + , "expr": true + , "funcscope": false + , "globalstrict": false + , "iterator": false + , "lastsemic": true + , "laxbreak": true + , "laxcomma": true + , "loopfunc": true + , "multistr": false + , "onecase": false + , "proto": false + , "regexdash": false + , "scripturl": true + , "smarttabs": false + , "shadow": false + , "sub": true + , "supernew": false + , "validthis": true + , "browser": true + , "couch": false + , "devel": false + , "dojo": false + , "mootools": false + , "node": true + , "nonstandard": true + , "prototypejs": false + , "rhino": false + , "worker": true + , "wsh": false + , "nomen": false + , "onevar": false + , "passfail": false +} \ No newline at end of file diff --git a/node_modules/isstream/.npmignore b/node_modules/isstream/.npmignore new file mode 100644 index 0000000..aa1ec1e --- /dev/null +++ b/node_modules/isstream/.npmignore @@ -0,0 +1 @@ +*.tgz diff --git a/node_modules/isstream/.travis.yml b/node_modules/isstream/.travis.yml new file mode 100644 index 0000000..1fec2ab --- /dev/null +++ b/node_modules/isstream/.travis.yml @@ -0,0 +1,12 @@ +language: node_js +node_js: + - "0.8" + - "0.10" + - "0.11" +branches: + only: + - master +notifications: + email: + - rod@vagg.org +script: npm test diff --git a/node_modules/isstream/LICENSE.md b/node_modules/isstream/LICENSE.md new file mode 100644 index 0000000..43f7153 --- /dev/null +++ b/node_modules/isstream/LICENSE.md @@ -0,0 +1,11 @@ +The MIT License (MIT) +===================== + +Copyright (c) 2015 Rod Vagg +--------------------------- + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/isstream/README.md b/node_modules/isstream/README.md new file mode 100644 index 0000000..06770e8 --- /dev/null +++ b/node_modules/isstream/README.md @@ -0,0 +1,66 @@ +# isStream + +[![Build Status](https://secure.travis-ci.org/rvagg/isstream.png)](http://travis-ci.org/rvagg/isstream) + +**Test if an object is a `Stream`** + +[![NPM](https://nodei.co/npm/isstream.svg)](https://nodei.co/npm/isstream/) + +The missing `Stream.isStream(obj)`: determine if an object is standard Node.js `Stream`. Works for Node-core `Stream` objects (for 0.8, 0.10, 0.11, and in theory, older and newer versions) and all versions of **[readable-stream](https://github.com/isaacs/readable-stream)**. + +## Usage: + +```js +var isStream = require('isstream') +var Stream = require('stream') + +isStream(new Stream()) // true + +isStream({}) // false + +isStream(new Stream.Readable()) // true +isStream(new Stream.Writable()) // true +isStream(new Stream.Duplex()) // true +isStream(new Stream.Transform()) // true +isStream(new Stream.PassThrough()) // true +``` + +## But wait! There's more! + +You can also test for `isReadable(obj)`, `isWritable(obj)` and `isDuplex(obj)` to test for implementations of Streams2 (and Streams3) base classes. + +```js +var isReadable = require('isstream').isReadable +var isWritable = require('isstream').isWritable +var isDuplex = require('isstream').isDuplex +var Stream = require('stream') + +isReadable(new Stream()) // false +isWritable(new Stream()) // false +isDuplex(new Stream()) // false + +isReadable(new Stream.Readable()) // true +isReadable(new Stream.Writable()) // false +isReadable(new Stream.Duplex()) // true +isReadable(new Stream.Transform()) // true +isReadable(new Stream.PassThrough()) // true + +isWritable(new Stream.Readable()) // false +isWritable(new Stream.Writable()) // true +isWritable(new Stream.Duplex()) // true +isWritable(new Stream.Transform()) // true +isWritable(new Stream.PassThrough()) // true + +isDuplex(new Stream.Readable()) // false +isDuplex(new Stream.Writable()) // false +isDuplex(new Stream.Duplex()) // true +isDuplex(new Stream.Transform()) // true +isDuplex(new Stream.PassThrough()) // true +``` + +*Reminder: when implementing your own streams, please [use **readable-stream** rather than core streams](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html).* + + +## License + +**isStream** is Copyright (c) 2015 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details. diff --git a/node_modules/isstream/isstream.js b/node_modules/isstream/isstream.js new file mode 100644 index 0000000..a1d104a --- /dev/null +++ b/node_modules/isstream/isstream.js @@ -0,0 +1,27 @@ +var stream = require('stream') + + +function isStream (obj) { + return obj instanceof stream.Stream +} + + +function isReadable (obj) { + return isStream(obj) && typeof obj._read == 'function' && typeof obj._readableState == 'object' +} + + +function isWritable (obj) { + return isStream(obj) && typeof obj._write == 'function' && typeof obj._writableState == 'object' +} + + +function isDuplex (obj) { + return isReadable(obj) && isWritable(obj) +} + + +module.exports = isStream +module.exports.isReadable = isReadable +module.exports.isWritable = isWritable +module.exports.isDuplex = isDuplex diff --git a/node_modules/isstream/package.json b/node_modules/isstream/package.json new file mode 100644 index 0000000..9ee8bf8 --- /dev/null +++ b/node_modules/isstream/package.json @@ -0,0 +1,33 @@ +{ + "name": "isstream", + "version": "0.1.2", + "description": "Determine if an object is a Stream", + "main": "isstream.js", + "scripts": { + "test": "tar --xform 's/^package/readable-stream-1.0/' -zxf readable-stream-1.0.*.tgz && tar --xform 's/^package/readable-stream-1.1/' -zxf readable-stream-1.1.*.tgz && node test.js; rm -rf readable-stream-1.?/" + }, + "repository": { + "type": "git", + "url": "https://github.com/rvagg/isstream.git" + }, + "keywords": [ + "stream", + "type", + "streams", + "readable-stream", + "hippo" + ], + "devDependencies": { + "tape": "~2.12.3", + "core-util-is": "~1.0.0", + "isarray": "0.0.1", + "string_decoder": "~0.10.x", + "inherits": "~2.0.1" + }, + "author": "Rod Vagg <rod@vagg.org>", + "license": "MIT", + "bugs": { + "url": "https://github.com/rvagg/isstream/issues" + }, + "homepage": "https://github.com/rvagg/isstream" +} diff --git a/node_modules/isstream/test.js b/node_modules/isstream/test.js new file mode 100644 index 0000000..8c950c5 --- /dev/null +++ b/node_modules/isstream/test.js @@ -0,0 +1,168 @@ +var tape = require('tape') + , EE = require('events').EventEmitter + , util = require('util') + + + , isStream = require('./') + , isReadable = require('./').isReadable + , isWritable = require('./').isWritable + , isDuplex = require('./').isDuplex + + , CoreStreams = require('stream') + , ReadableStream10 = require('./readable-stream-1.0/') + , ReadableStream11 = require('./readable-stream-1.1/') + + +function test (pass, type, stream) { + tape('isStream(' + type + ')', function (t) { + t.plan(1) + t.ok(pass === isStream(stream), type) + }) +} + + +function testReadable (pass, type, stream) { + tape('isReadable(' + type + ')', function (t) { + t.plan(1) + t.ok(pass === isReadable(stream), type) + }) +} + + +function testWritable (pass, type, stream) { + tape('isWritable(' + type + ')', function (t) { + t.plan(1) + t.ok(pass === isWritable(stream), type) + }) +} + + +function testDuplex (pass, type, stream) { + tape('isDuplex(' + type + ')', function (t) { + t.plan(1) + t.ok(pass === isDuplex(stream), type) + }) +} + + +[ undefined, null, '', true, false, 0, 1, 1.0, 'string', {}, function foo () {} ].forEach(function (o) { + test(false, 'non-stream / primitive: ' + (JSON.stringify(o) || (o && o.toString()) || o), o) +}) + + +test(false, 'fake stream obj', { pipe: function () {} }) + + +;(function () { + + // looks like a stream! + + function Stream () { + EE.call(this) + } + util.inherits(Stream, EE) + Stream.prototype.pipe = function () {} + Stream.Stream = Stream + + test(false, 'fake stream "new Stream()"', new Stream()) + +}()) + + +test(true, 'CoreStreams.Stream', new (CoreStreams.Stream)()) +test(true, 'CoreStreams.Readable', new (CoreStreams.Readable)()) +test(true, 'CoreStreams.Writable', new (CoreStreams.Writable)()) +test(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)()) +test(true, 'CoreStreams.Transform', new (CoreStreams.Transform)()) +test(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)()) + +test(true, 'ReadableStream10.Readable', new (ReadableStream10.Readable)()) +test(true, 'ReadableStream10.Writable', new (ReadableStream10.Writable)()) +test(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)()) +test(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)()) +test(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)()) + +test(true, 'ReadableStream11.Readable', new (ReadableStream11.Readable)()) +test(true, 'ReadableStream11.Writable', new (ReadableStream11.Writable)()) +test(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)()) +test(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)()) +test(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)()) + + +testReadable(false, 'CoreStreams.Stream', new (CoreStreams.Stream)()) +testReadable(true, 'CoreStreams.Readable', new (CoreStreams.Readable)()) +testReadable(false, 'CoreStreams.Writable', new (CoreStreams.Writable)()) +testReadable(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)()) +testReadable(true, 'CoreStreams.Transform', new (CoreStreams.Transform)()) +testReadable(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)()) + +testReadable(true, 'ReadableStream10.Readable', new (ReadableStream10.Readable)()) +testReadable(false, 'ReadableStream10.Writable', new (ReadableStream10.Writable)()) +testReadable(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)()) +testReadable(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)()) +testReadable(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)()) + +testReadable(true, 'ReadableStream11.Readable', new (ReadableStream11.Readable)()) +testReadable(false, 'ReadableStream11.Writable', new (ReadableStream11.Writable)()) +testReadable(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)()) +testReadable(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)()) +testReadable(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)()) + + +testWritable(false, 'CoreStreams.Stream', new (CoreStreams.Stream)()) +testWritable(false, 'CoreStreams.Readable', new (CoreStreams.Readable)()) +testWritable(true, 'CoreStreams.Writable', new (CoreStreams.Writable)()) +testWritable(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)()) +testWritable(true, 'CoreStreams.Transform', new (CoreStreams.Transform)()) +testWritable(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)()) + +testWritable(false, 'ReadableStream10.Readable', new (ReadableStream10.Readable)()) +testWritable(true, 'ReadableStream10.Writable', new (ReadableStream10.Writable)()) +testWritable(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)()) +testWritable(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)()) +testWritable(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)()) + +testWritable(false, 'ReadableStream11.Readable', new (ReadableStream11.Readable)()) +testWritable(true, 'ReadableStream11.Writable', new (ReadableStream11.Writable)()) +testWritable(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)()) +testWritable(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)()) +testWritable(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)()) + + +testDuplex(false, 'CoreStreams.Stream', new (CoreStreams.Stream)()) +testDuplex(false, 'CoreStreams.Readable', new (CoreStreams.Readable)()) +testDuplex(false, 'CoreStreams.Writable', new (CoreStreams.Writable)()) +testDuplex(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)()) +testDuplex(true, 'CoreStreams.Transform', new (CoreStreams.Transform)()) +testDuplex(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)()) + +testDuplex(false, 'ReadableStream10.Readable', new (ReadableStream10.Readable)()) +testDuplex(false, 'ReadableStream10.Writable', new (ReadableStream10.Writable)()) +testDuplex(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)()) +testDuplex(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)()) +testDuplex(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)()) + +testDuplex(false, 'ReadableStream11.Readable', new (ReadableStream11.Readable)()) +testDuplex(false, 'ReadableStream11.Writable', new (ReadableStream11.Writable)()) +testDuplex(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)()) +testDuplex(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)()) +testDuplex(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)()) + + +;[ CoreStreams, ReadableStream10, ReadableStream11 ].forEach(function (p) { + [ 'Stream', 'Readable', 'Writable', 'Duplex', 'Transform', 'PassThrough' ].forEach(function (k) { + if (!p[k]) + return + + function SubStream () { + p[k].call(this) + } + util.inherits(SubStream, p[k]) + + test(true, 'Stream subclass: ' + p.name + '.' + k, new SubStream()) + + }) +}) + + + diff --git a/node_modules/js-base64/LICENSE.md b/node_modules/js-base64/LICENSE.md new file mode 100644 index 0000000..fd579a4 --- /dev/null +++ b/node_modules/js-base64/LICENSE.md @@ -0,0 +1,27 @@ +Copyright (c) 2014, Dan Kogai +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* 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. + +* Neither the name of {{{project}}} nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS 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. diff --git a/node_modules/js-base64/README.md b/node_modules/js-base64/README.md new file mode 100644 index 0000000..4a70bd6 --- /dev/null +++ b/node_modules/js-base64/README.md @@ -0,0 +1,123 @@ +[![build status](https://secure.travis-ci.org/dankogai/js-base64.png)](http://travis-ci.org/dankogai/js-base64) + +# base64.js + +Yet another Base64 transcoder + +## Usage + +### Install + +```javascript +$ npm install --save js-base64 +``` + +If you are using it on ES6 transpilers, you may also need: + +```javascript +$ npm install --save babel-preset-env +``` + +Note `js-base64` itself is stand-alone so its `package.json` has no `dependencies`.  However, it is also tested on ES6 environment so `"babel-preset-env": "^1.7.0"` is on `devDependencies`. + + +### In Browser + +* Locally + +```html +<script src="base64.js"></script> +``` + +* Directly from CDN. In which case you don't even need to install. + +```html +<!-- the latest --> +<script src="https://cdn.jsdelivr.net/npm/js-base64/base64.min.js"> +``` + +```html +<!-- with version fixed --> +<script src="https://cdn.jsdelivr.net/npm/js-base64@2.6.4/base64.min.js"> +``` + +### node.js + +```javascript +var Base64 = require('js-base64').Base64; +``` + +## es6+ + +```javascript +import { Base64 } from 'js-base64'; +``` + +## SYNOPSIS + +```javascript +Base64.encode('dankogai'); // ZGFua29nYWk= +Base64.btoa( 'dankogai'); // ZGFua29nYWk= +Base64.fromUint8Array( // ZGFua29nYWk= + new Uint8Array([100,97,110,107,111,103,97,105]) +); +Base64.fromUint8Array( // ZGFua29nYW which is URI safe + new Uint8Array([100,97,110,107,111,103,97,105]), true +); +Base64.encode( '小飼弾'); // 5bCP6aO85by+ +Base64.encodeURI('小飼弾'); // 5bCP6aO85by- which equals to Base64.encode('小飼弾', true) +Base64.btoa( '小飼弾'); // raises exception +``` + +```javascript +Base64.decode('ZGFua29nYWk='); // dankogai +Base64.atob( 'ZGFua29nYWk='); // dankogai +Base64.toUint8Array( // new Uint8Array([100,97,110,107,111,103,97,105]) + 'ZGFua29nYWk=' +); +Base64.decode('5bCP6aO85by+'); // 小飼弾 +// note .decodeURI() is unnecessary since it accepts both flavors +Base64.decode('5bCP6aO85by-'); // 小飼弾 +Base64.atob( '5bCP6aO85by+'); // '小飼弾' which is nonsense +``` + +### String Extension for ES5 + +```javascript +if (Base64.extendString) { + // you have to explicitly extend String.prototype + Base64.extendString(); + // once extended, you can do the following + 'dankogai'.toBase64(); // ZGFua29nYWk= + '小飼弾'.toBase64(); // 5bCP6aO85by+ + '小飼弾'.toBase64(true); // 5bCP6aO85by- + '小飼弾'.toBase64URI(); // 5bCP6aO85by- + 'ZGFua29nYWk='.fromBase64(); // dankogai + '5bCP6aO85by+'.fromBase64(); // 小飼弾 + '5bCP6aO85by-'.fromBase64(); // 小飼弾 +} +``` + +### TypeScript + +TypeScript 2.0 type definition was added to the [DefinitelyTyped repository](https://github.com/DefinitelyTyped/DefinitelyTyped). + +```bash +$ npm install --save @types/js-base64 +``` + +## `.decode()` vs `.atob` (and `.encode()` vs `btoa()`) + +Suppose you have: + +``` +var pngBase64 = + "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="; +``` + +Which is a Base64-encoded 1x1 transparent PNG, **DO NOT USE** `Base64.decode(pngBase64)`.  Use `Base64.atob(pngBase64)` instead.  `Base64.decode()` decodes to UTF-8 string while `Base64.atob()` decodes to bytes, which is compatible to browser built-in `atob()` (Which is absent in node.js).  The same rule applies to the opposite direction. + + +## SEE ALSO + ++ http://en.wikipedia.org/wiki/Base64 diff --git a/node_modules/js-base64/base64.js b/node_modules/js-base64/base64.js new file mode 100644 index 0000000..92f4d4b --- /dev/null +++ b/node_modules/js-base64/base64.js @@ -0,0 +1,230 @@ +/* + * base64.js + * + * Licensed under the BSD 3-Clause License. + * http://opensource.org/licenses/BSD-3-Clause + * + * References: + * http://en.wikipedia.org/wiki/Base64 + */ +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + ? module.exports = factory(global) + : typeof define === 'function' && define.amd + ? define(factory) : factory(global) +}(( + typeof self !== 'undefined' ? self + : typeof window !== 'undefined' ? window + : typeof global !== 'undefined' ? global +: this +), function(global) { + 'use strict'; + // existing version for noConflict() + global = global || {}; + var _Base64 = global.Base64; + var version = "2.6.4"; + // constants + var b64chars + = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + var b64tab = function(bin) { + var t = {}; + for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i; + return t; + }(b64chars); + var fromCharCode = String.fromCharCode; + // encoder stuff + var cb_utob = function(c) { + if (c.length < 2) { + var cc = c.charCodeAt(0); + return cc < 0x80 ? c + : cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6)) + + fromCharCode(0x80 | (cc & 0x3f))) + : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) + + fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) + + fromCharCode(0x80 | ( cc & 0x3f))); + } else { + var cc = 0x10000 + + (c.charCodeAt(0) - 0xD800) * 0x400 + + (c.charCodeAt(1) - 0xDC00); + return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07)) + + fromCharCode(0x80 | ((cc >>> 12) & 0x3f)) + + fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) + + fromCharCode(0x80 | ( cc & 0x3f))); + } + }; + var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; + var utob = function(u) { + return u.replace(re_utob, cb_utob); + }; + var cb_encode = function(ccc) { + var padlen = [0, 2, 1][ccc.length % 3], + ord = ccc.charCodeAt(0) << 16 + | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) + | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)), + chars = [ + b64chars.charAt( ord >>> 18), + b64chars.charAt((ord >>> 12) & 63), + padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63), + padlen >= 1 ? '=' : b64chars.charAt(ord & 63) + ]; + return chars.join(''); + }; + var btoa = global.btoa && typeof global.btoa == 'function' + ? function(b){ return global.btoa(b) } : function(b) { + if (b.match(/[^\x00-\xFF]/)) throw new RangeError( + 'The string contains invalid characters.' + ); + return b.replace(/[\s\S]{1,3}/g, cb_encode); + }; + var _encode = function(u) { + return btoa(utob(String(u))); + }; + var mkUriSafe = function (b64) { + return b64.replace(/[+\/]/g, function(m0) { + return m0 == '+' ? '-' : '_'; + }).replace(/=/g, ''); + }; + var encode = function(u, urisafe) { + return urisafe ? mkUriSafe(_encode(u)) : _encode(u); + }; + var encodeURI = function(u) { return encode(u, true) }; + var fromUint8Array; + if (global.Uint8Array) fromUint8Array = function(a, urisafe) { + // return btoa(fromCharCode.apply(null, a)); + var b64 = ''; + for (var i = 0, l = a.length; i < l; i += 3) { + var a0 = a[i], a1 = a[i+1], a2 = a[i+2]; + var ord = a0 << 16 | a1 << 8 | a2; + b64 += b64chars.charAt( ord >>> 18) + + b64chars.charAt((ord >>> 12) & 63) + + ( typeof a1 != 'undefined' + ? b64chars.charAt((ord >>> 6) & 63) : '=') + + ( typeof a2 != 'undefined' + ? b64chars.charAt( ord & 63) : '='); + } + return urisafe ? mkUriSafe(b64) : b64; + }; + // decoder stuff + var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; + var cb_btou = function(cccc) { + switch(cccc.length) { + case 4: + var cp = ((0x07 & cccc.charCodeAt(0)) << 18) + | ((0x3f & cccc.charCodeAt(1)) << 12) + | ((0x3f & cccc.charCodeAt(2)) << 6) + | (0x3f & cccc.charCodeAt(3)), + offset = cp - 0x10000; + return (fromCharCode((offset >>> 10) + 0xD800) + + fromCharCode((offset & 0x3FF) + 0xDC00)); + case 3: + return fromCharCode( + ((0x0f & cccc.charCodeAt(0)) << 12) + | ((0x3f & cccc.charCodeAt(1)) << 6) + | (0x3f & cccc.charCodeAt(2)) + ); + default: + return fromCharCode( + ((0x1f & cccc.charCodeAt(0)) << 6) + | (0x3f & cccc.charCodeAt(1)) + ); + } + }; + var btou = function(b) { + return b.replace(re_btou, cb_btou); + }; + var cb_decode = function(cccc) { + var len = cccc.length, + padlen = len % 4, + n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0) + | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0) + | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0) + | (len > 3 ? b64tab[cccc.charAt(3)] : 0), + chars = [ + fromCharCode( n >>> 16), + fromCharCode((n >>> 8) & 0xff), + fromCharCode( n & 0xff) + ]; + chars.length -= [0, 0, 2, 1][padlen]; + return chars.join(''); + }; + var _atob = global.atob && typeof global.atob == 'function' + ? function(a){ return global.atob(a) } : function(a){ + return a.replace(/\S{1,4}/g, cb_decode); + }; + var atob = function(a) { + return _atob(String(a).replace(/[^A-Za-z0-9\+\/]/g, '')); + }; + var _decode = function(a) { return btou(_atob(a)) }; + var _fromURI = function(a) { + return String(a).replace(/[-_]/g, function(m0) { + return m0 == '-' ? '+' : '/' + }).replace(/[^A-Za-z0-9\+\/]/g, ''); + }; + var decode = function(a){ + return _decode(_fromURI(a)); + }; + var toUint8Array; + if (global.Uint8Array) toUint8Array = function(a) { + return Uint8Array.from(atob(_fromURI(a)), function(c) { + return c.charCodeAt(0); + }); + }; + var noConflict = function() { + var Base64 = global.Base64; + global.Base64 = _Base64; + return Base64; + }; + // export Base64 + global.Base64 = { + VERSION: version, + atob: atob, + btoa: btoa, + fromBase64: decode, + toBase64: encode, + utob: utob, + encode: encode, + encodeURI: encodeURI, + btou: btou, + decode: decode, + noConflict: noConflict, + fromUint8Array: fromUint8Array, + toUint8Array: toUint8Array + }; + // if ES5 is available, make Base64.extendString() available + if (typeof Object.defineProperty === 'function') { + var noEnum = function(v){ + return {value:v,enumerable:false,writable:true,configurable:true}; + }; + global.Base64.extendString = function () { + Object.defineProperty( + String.prototype, 'fromBase64', noEnum(function () { + return decode(this) + })); + Object.defineProperty( + String.prototype, 'toBase64', noEnum(function (urisafe) { + return encode(this, urisafe) + })); + Object.defineProperty( + String.prototype, 'toBase64URI', noEnum(function () { + return encode(this, true) + })); + }; + } + // + // export Base64 to the namespace + // + if (global['Meteor']) { // Meteor.js + Base64 = global.Base64; + } + // module.exports and AMD are mutually exclusive. + // module.exports has precedence. + if (typeof module !== 'undefined' && module.exports) { + module.exports.Base64 = global.Base64; + } + else if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([], function(){ return global.Base64 }); + } + // that's it! + return {Base64: global.Base64} +})); diff --git a/node_modules/js-base64/base64.min.js b/node_modules/js-base64/base64.min.js new file mode 100644 index 0000000..c06ab5a --- /dev/null +++ b/node_modules/js-base64/base64.min.js @@ -0,0 +1 @@ +(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory(global):typeof define==="function"&&define.amd?define(factory):factory(global)})(typeof self!=="undefined"?self:typeof window!=="undefined"?window:typeof global!=="undefined"?global:this,function(global){"use strict";global=global||{};var _Base64=global.Base64;var version="2.6.4";var b64chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var b64tab=function(bin){var t={};for(var i=0,l=bin.length;i<l;i++)t[bin.charAt(i)]=i;return t}(b64chars);var fromCharCode=String.fromCharCode;var cb_utob=function(c){if(c.length<2){var cc=c.charCodeAt(0);return cc<128?c:cc<2048?fromCharCode(192|cc>>>6)+fromCharCode(128|cc&63):fromCharCode(224|cc>>>12&15)+fromCharCode(128|cc>>>6&63)+fromCharCode(128|cc&63)}else{var cc=65536+(c.charCodeAt(0)-55296)*1024+(c.charCodeAt(1)-56320);return fromCharCode(240|cc>>>18&7)+fromCharCode(128|cc>>>12&63)+fromCharCode(128|cc>>>6&63)+fromCharCode(128|cc&63)}};var re_utob=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;var utob=function(u){return u.replace(re_utob,cb_utob)};var cb_encode=function(ccc){var padlen=[0,2,1][ccc.length%3],ord=ccc.charCodeAt(0)<<16|(ccc.length>1?ccc.charCodeAt(1):0)<<8|(ccc.length>2?ccc.charCodeAt(2):0),chars=[b64chars.charAt(ord>>>18),b64chars.charAt(ord>>>12&63),padlen>=2?"=":b64chars.charAt(ord>>>6&63),padlen>=1?"=":b64chars.charAt(ord&63)];return chars.join("")};var btoa=global.btoa&&typeof global.btoa=="function"?function(b){return global.btoa(b)}:function(b){if(b.match(/[^\x00-\xFF]/))throw new RangeError("The string contains invalid characters.");return b.replace(/[\s\S]{1,3}/g,cb_encode)};var _encode=function(u){return btoa(utob(String(u)))};var mkUriSafe=function(b64){return b64.replace(/[+\/]/g,function(m0){return m0=="+"?"-":"_"}).replace(/=/g,"")};var encode=function(u,urisafe){return urisafe?mkUriSafe(_encode(u)):_encode(u)};var encodeURI=function(u){return encode(u,true)};var fromUint8Array;if(global.Uint8Array)fromUint8Array=function(a,urisafe){var b64="";for(var i=0,l=a.length;i<l;i+=3){var a0=a[i],a1=a[i+1],a2=a[i+2];var ord=a0<<16|a1<<8|a2;b64+=b64chars.charAt(ord>>>18)+b64chars.charAt(ord>>>12&63)+(typeof a1!="undefined"?b64chars.charAt(ord>>>6&63):"=")+(typeof a2!="undefined"?b64chars.charAt(ord&63):"=")}return urisafe?mkUriSafe(b64):b64};var re_btou=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g;var cb_btou=function(cccc){switch(cccc.length){case 4:var cp=(7&cccc.charCodeAt(0))<<18|(63&cccc.charCodeAt(1))<<12|(63&cccc.charCodeAt(2))<<6|63&cccc.charCodeAt(3),offset=cp-65536;return fromCharCode((offset>>>10)+55296)+fromCharCode((offset&1023)+56320);case 3:return fromCharCode((15&cccc.charCodeAt(0))<<12|(63&cccc.charCodeAt(1))<<6|63&cccc.charCodeAt(2));default:return fromCharCode((31&cccc.charCodeAt(0))<<6|63&cccc.charCodeAt(1))}};var btou=function(b){return b.replace(re_btou,cb_btou)};var cb_decode=function(cccc){var len=cccc.length,padlen=len%4,n=(len>0?b64tab[cccc.charAt(0)]<<18:0)|(len>1?b64tab[cccc.charAt(1)]<<12:0)|(len>2?b64tab[cccc.charAt(2)]<<6:0)|(len>3?b64tab[cccc.charAt(3)]:0),chars=[fromCharCode(n>>>16),fromCharCode(n>>>8&255),fromCharCode(n&255)];chars.length-=[0,0,2,1][padlen];return chars.join("")};var _atob=global.atob&&typeof global.atob=="function"?function(a){return global.atob(a)}:function(a){return a.replace(/\S{1,4}/g,cb_decode)};var atob=function(a){return _atob(String(a).replace(/[^A-Za-z0-9\+\/]/g,""))};var _decode=function(a){return btou(_atob(a))};var _fromURI=function(a){return String(a).replace(/[-_]/g,function(m0){return m0=="-"?"+":"/"}).replace(/[^A-Za-z0-9\+\/]/g,"")};var decode=function(a){return _decode(_fromURI(a))};var toUint8Array;if(global.Uint8Array)toUint8Array=function(a){return Uint8Array.from(atob(_fromURI(a)),function(c){return c.charCodeAt(0)})};var noConflict=function(){var Base64=global.Base64;global.Base64=_Base64;return Base64};global.Base64={VERSION:version,atob:atob,btoa:btoa,fromBase64:decode,toBase64:encode,utob:utob,encode:encode,encodeURI:encodeURI,btou:btou,decode:decode,noConflict:noConflict,fromUint8Array:fromUint8Array,toUint8Array:toUint8Array};if(typeof Object.defineProperty==="function"){var noEnum=function(v){return{value:v,enumerable:false,writable:true,configurable:true}};global.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",noEnum(function(){return decode(this)}));Object.defineProperty(String.prototype,"toBase64",noEnum(function(urisafe){return encode(this,urisafe)}));Object.defineProperty(String.prototype,"toBase64URI",noEnum(function(){return encode(this,true)}))}}if(global["Meteor"]){Base64=global.Base64}if(typeof module!=="undefined"&&module.exports){module.exports.Base64=global.Base64}else if(typeof define==="function"&&define.amd){define([],function(){return global.Base64})}return{Base64:global.Base64}}); diff --git a/node_modules/js-base64/package.json b/node_modules/js-base64/package.json new file mode 100644 index 0000000..b53a882 --- /dev/null +++ b/node_modules/js-base64/package.json @@ -0,0 +1,35 @@ +{ + "name": "js-base64", + "version": "2.6.4", + "description": "Yet another Base64 transcoder in pure-JS", + "main": "base64.js", + "files": [ + "base64.js", + "base64.min.js" + ], + "directories": { + "test": "test" + }, + "scripts": { + "test": "mocha --require @babel/register", + "minify": "uglifyjs base64.js > base64.min.js" + }, + "devDependencies": { + "@babel/core": "^7.10.5", + "@babel/preset-env": "^7.10.5", + "@babel/register": "^7.10.5", + "mocha": "^8.0.0", + "uglify-js": "^3.10.0" + }, + "repository": { + "type": "git", + "url": "git://github.com/dankogai/js-base64.git" + }, + "keywords": [ + "base64" + ], + "author": "Dan Kogai", + "license": "BSD-3-Clause", + "readmeFilename": "README.md", + "gitHead": "8bfa436f733bec60c95c720e1d720c28b43ae0b2" +} diff --git a/node_modules/js-pinyin/.babelrc b/node_modules/js-pinyin/.babelrc new file mode 100644 index 0000000..02f08fb --- /dev/null +++ b/node_modules/js-pinyin/.babelrc @@ -0,0 +1,5 @@ +{ + "presets": [ + "es2015" + ] +} \ No newline at end of file diff --git a/node_modules/js-pinyin/LICENSE b/node_modules/js-pinyin/LICENSE new file mode 100644 index 0000000..8864d4a --- /dev/null +++ b/node_modules/js-pinyin/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/js-pinyin/README.md b/node_modules/js-pinyin/README.md new file mode 100644 index 0000000..3be1dd0 --- /dev/null +++ b/node_modules/js-pinyin/README.md @@ -0,0 +1,26 @@ +# 汉字转拼音 +把汉字转化为拼音字母,由[chinalu/JSPinyin](https://github.com/chinalu/JSPinyin)改写,使用新语法并去掉mootools的依赖 + +## 安装 +```base +npm install js-pinyin + +import pinyin from 'js-pinyin' +``` + +## 使用示例 +```js +let pinyin = require('js-pinyin'); + +pinyin.setOptions({checkPolyphone: false, charCase: 0}); + +console.log(pinyin.getFullChars('管理员')) +console.log(pinyin.getCamelChars('管理员')) +console.log(pinyin.getCamelChars('1234')) +console.log(pinyin.getCamelChars('english')) +console.log(pinyin.getCamelChars('昕')) +console.log(pinyin.getCamelChars('佛')) +console.log(pinyin.getFullChars('佛')) +console.log(pinyin.getFullChars('凃一二')) +console.log(pinyin.getCamelChars('凃一二')) +``` diff --git a/node_modules/js-pinyin/dist/pinyin.js b/node_modules/js-pinyin/dist/pinyin.js new file mode 100644 index 0000000..f7103f8 --- /dev/null +++ b/node_modules/js-pinyin/dist/pinyin.js @@ -0,0 +1,950 @@ +/** + * @fileOverview 汉字拼音转换主题功能 + * @author waterchestnut 2017/3/13 + * @module + */ +'use strict'; + +/** + * @typedef Option + * @type Object + * @property {Boolean} [checkPolyphone=false] 是否检查多音字 + * @property {Number} [charCase=0] 输出拼音的大小写模式,0-首字母大写;1-全小写;2-全大写 + */ + +var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Pinyin = function () { + /** + * 构造函数,设置参数并初始化数据 + * @param {Option} [options] 参数对象 + */ + function Pinyin(options) { + _classCallCheck(this, Pinyin); + + this.setOptions(options); + this.initialize(); + } + + /** + * 设置参数 + * @param {Option} [options] 参数对象 + */ + + + _createClass(Pinyin, [{ + key: "setOptions", + value: function setOptions(options) { + options = options || {}; + this.options = Object.assign({ checkPolyphone: false, charCase: 0 }, options); + } + + /** + * 初始化数据 + */ + + }, { + key: "initialize", + value: function initialize() { + this.char_dict = "YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYFZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY"; + this.full_dict = { + "a": "\u554A\u963F\u9515", + "ai": "\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u8BF6\u6371\u55F3\u55CC\u5AD2\u7477\u66A7\u7839\u953F\u972D", + "an": "\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u8C19\u57EF\u63DE\u72B4\u5EB5\u6849\u94F5\u9E4C\u9878\u9EEF", + "ang": "\u80AE\u6602\u76CE", + "ao": "\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u5773\u62D7\u55F7\u5662\u5C99\u5ED2\u9068\u5AAA\u9A9C\u8071\u87AF\u93CA\u9CCC\u93D6", + "ba": "\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u8307\u83DD\u8406\u636D\u5C9C\u705E\u6777\u94AF\u7C91\u9C85\u9B43", + "bai": "\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u859C\u63B0\u97B4", + "ban": "\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u962A\u5742\u8C73\u94A3\u7622\u764D\u8228", + "bang": "\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u84A1\u8783", + "bao": "\u82DE\u80DE\u5305\u8912\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u52F9\u8446\u5B80\u5B62\u7172\u9E28\u8913\u8DB5\u9F85", + "bo": "\u5265\u8584\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u4EB3\u8543\u5575\u997D\u6A97\u64D8\u7934\u94B9\u9E41\u7C38\u8DDB", + "bei": "\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5B5B\u9642\u90B6\u57E4\u84D3\u5457\u602B\u6096\u789A\u9E4E\u8919\u943E", + "ben": "\u5954\u82EF\u672C\u7B28\u755A\u574C\u951B", + "beng": "\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u552A\u5623\u750F", + "bi": "\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u5315\u4EF3\u4FFE\u8298\u835C\u8378\u5421\u54D4\u72F4\u5EB3\u610E\u6ED7\u6FDE\u5F3C\u59A3\u5A62\u5B16\u74A7\u8D32\u7540\u94CB\u79D5\u88E8\u7B5A\u7B85\u7BE6\u822D\u895E\u8DF8\u9AC0", + "bian": "\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u533E\u5F01\u82C4\u5FED\u6C74\u7F0F\u7178\u782D\u78A5\u7A39\u7A86\u8759\u7B3E\u9CCA", + "biao": "\u6807\u5F6A\u8198\u8868\u5A4A\u9AA0\u98D1\u98D9\u98DA\u706C\u9556\u9573\u762D\u88F1\u9CD4", + "bie": "\u9CD6\u618B\u522B\u762A\u8E69\u9CD8", + "bin": "\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u50A7\u6D5C\u7F24\u73A2\u6BA1\u8191\u9554\u9ACC\u9B13", + "bing": "\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3\u75C5\u5E76\u7980\u90B4\u6452\u7EE0\u678B\u69DF\u71F9", + "bu": "\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u62CA\u535F\u900B\u74FF\u6661\u949A\u91AD", + "ca": "\u64E6\u5693\u7924", + "cai": "\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521", + "can": "\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u9A96\u74A8\u7CB2\u9EEA", + "cang": "\u82CD\u8231\u4ED3\u6CA7\u85CF\u4F27", + "cao": "\u64CD\u7CD9\u69FD\u66F9\u8349\u8279\u5608\u6F15\u87AC\u825A", + "ce": "\u5395\u7B56\u4FA7\u518C\u6D4B\u5202\u5E3B\u607B", + "ceng": "\u5C42\u8E6D\u564C", + "cha": "\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u7339\u9987\u6C4A\u59F9\u6748\u6942\u69CE\u6AAB\u9497\u9538\u9572\u8869", + "chai": "\u62C6\u67F4\u8C7A\u4FAA\u8308\u7625\u867F\u9F87", + "chan": "\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u5181\u8C04\u8C36\u8487\u5EDB\u5FCF\u6F7A\u6FB6\u5B71\u7FBC\u5A75\u5B17\u9AA3\u89C7\u7985\u9561\u88E3\u87FE\u8E94", + "chang": "\u660C\u7316\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u4F25\u9B2F\u82CC\u83D6\u5F9C\u6005\u60DD\u960A\u5A3C\u5AE6\u6636\u6C05\u9CB3", + "chao": "\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u600A\u7EC9\u6641\u8016", + "che": "\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u577C\u5C6E\u7817", + "chen": "\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u79F0\u8C0C\u62BB\u55D4\u5BB8\u741B\u6987\u809C\u80C2\u789C\u9F80", + "cheng": "\u6491\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u57D5\u5D4A\u5FB5\u6D48\u67A8\u67FD\u6A18\u665F\u584D\u77A0\u94D6\u88CE\u86CF\u9172", + "chi": "\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u50BA\u5880\u82AA\u830C\u640B\u53F1\u54E7\u557B\u55E4\u5F73\u996C\u6CB2\u5AB8\u6555\u80DD\u7719\u7735\u9E31\u761B\u892B\u86A9\u87AD\u7B1E\u7BEA\u8C49\u8E05\u8E1F\u9B51", + "chong": "\u5145\u51B2\u866B\u5D07\u5BA0\u833A\u5FE1\u61A7\u94F3\u825F", + "chou": "\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u4FE6\u5733\u5E31\u60C6\u6EB4\u59AF\u7633\u96E0\u9C8B", + "chu": "\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A\u7840\u50A8\u77D7\u6410\u89E6\u5904\u4E8D\u520D\u61B7\u7ECC\u6775\u696E\u6A17\u870D\u8E70\u9EDC", + "chuan": "\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u63BE\u821B\u60F4\u9044\u5DDB\u6C1A\u948F\u9569\u8221", + "chuang": "\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u6006", + "chui": "\u5439\u708A\u6376\u9524\u5782\u9672\u68F0\u69CC", + "chun": "\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u4FC3\u83BC\u6C8C\u80AB\u6710\u9E51\u877D", + "chuo": "\u6233\u7EF0\u851F\u8FB6\u8F8D\u955E\u8E14\u9F8A", + "ci": "\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u8360\u5472\u5D6F\u9E5A\u8785\u7CCD\u8D91", + "cong": "\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u506C\u82C1\u6DD9\u9AA2\u742E\u7481\u679E", + "cou": "\u85AE\u6971\u8F8F\u8160", + "cu": "\u51D1\u7C97\u918B\u7C07\u731D\u6B82\u8E59", + "cuan": "\u8E7F\u7BE1\u7A9C\u6C46\u64BA\u7228", + "cui": "\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u8403\u60B4\u7480\u69B1\u96B9", + "cun": "\u6751\u5B58\u5BF8\u78CB\u5FD6\u76B4", + "cuo": "\u64AE\u6413\u63AA\u632B\u9519\u539D\u811E\u9509\u77EC\u75E4\u9E7E\u8E49\u8E9C", + "chuai": "\u562C\u81AA\u8E39", + "cen": "\u5C91\u6D94", + "da": "\u642D\u8FBE\u7B54\u7629\u6253\u5927\u8037\u54D2\u55D2\u601B\u59B2\u75B8\u8921\u7B2A\u977C\u9791", + "dai": "\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E\u6020\u57ED\u7519\u5454\u5CB1\u8FE8\u902F\u9A80\u7ED0\u73B3\u9EDB", + "dan": "\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u4EBB\u510B\u5369\u840F\u5556\u6FB9\u6A90\u6B9A\u8D55\u7708\u7605\u8043\u7BAA", + "dang": "\u5F53\u6321\u515A\u8361\u6863\u8C20\u51FC\u83EA\u5B95\u7800\u94DB\u88C6", + "dao": "\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u53E8\u5541\u5FC9\u6D2E\u6C18\u7118\u5FD1\u7E9B", + "de": "\u5FB7\u5F97\u7684\u951D", + "deng": "\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5654\u5D9D\u6225\u78F4\u956B\u7C26", + "di": "\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u6C10\u7C74\u8BCB\u8C1B\u90B8\u577B\u839C\u837B\u5600\u5A23\u67E2\u68E3\u89CC\u7825\u78B2\u7747\u955D\u7F9D\u9AB6", + "dia": "\u55F2", + "dian": "\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u4E36\u963D\u576B\u57DD\u5DC5\u73B7\u765C\u766B\u7C1F\u8E2E", + "diao": "\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8F7A\u94DE\u8729\u7C9C\u8C82", + "die": "\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0\u4F5A\u57A4\u581E\u63F2\u558B\u6E2B\u8F76\u7252\u74DE\u8936\u800B\u8E40\u9CBD\u9CCE", + "ding": "\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4EC3\u5576\u738E\u815A\u7887\u753A\u94E4\u7594\u8035\u914A", + "dong": "\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u578C\u549A\u5CBD\u5CD2\u5902\u6C21\u80E8\u80F4\u7850\u9E2B", + "dou": "\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u8538\u94AD\u7AA6\u7AAC\u86AA\u7BFC\u9161", + "du": "\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u828F\u561F\u6E0E\u691F\u6A50\u724D\u8839\u7B03\u9AD1\u9EE9", + "duan": "\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5F56\u6934\u7145\u7C16", + "dui": "\u5806\u5151\u961F\u5BF9\u603C\u619D\u7893", + "dun": "\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u7096\u7818\u7905\u76F9\u9566\u8DB8", + "duo": "\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u5484\u54DA\u7F0D\u67C1\u94CE\u88F0\u8E31", + "e": "\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u5669\u8C14\u57A9\u57AD\u82CA\u83AA\u843C\u5443\u6115\u5C59\u5A40\u8F6D\u66F7\u816D\u786A\u9507\u9537\u9E57\u989A\u9CC4", + "en": "\u6069\u84BD\u6441\u5514\u55EF", + "er": "\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C\u8D30\u8FE9\u73E5\u94D2\u9E38\u9C95", + "fa": "\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u57A1\u781D", + "fan": "\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u8629\u5E61\u72AD\u68B5\u6535\u71D4\u7548\u8E6F", + "fang": "\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u531A\u90A1\u5F77\u94AB\u822B\u9C82", + "fei": "\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82BE\u72D2\u60B1\u6DDD\u5983\u7ECB\u7EEF\u69A7\u8153\u6590\u6249\u7953\u7829\u9544\u75F1\u871A\u7BDA\u7FE1\u970F\u9CB1", + "fen": "\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u507E\u7035\u68FC\u610D\u9CBC\u9F22", + "feng": "\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4FF8\u9146\u8451\u6CA3\u781C", + "fo": "\u4F5B\u4ECF\u5772\u68BB\u4EF8", + "fou": "\u7F36", + "fu": "\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5310\u51EB\u90DB\u8299\u82FB\u832F\u83A9\u83D4\u544B\u5E5E\u6ECF\u8274\u5B5A\u9A78\u7EC2\u6874\u8D59\u9EFB\u9EFC\u7F58\u7A03\u99A5\u864D\u86A8\u8709\u8760\u876E\u9EB8\u8DBA\u8DD7\u9CC6", + "ga": "\u5676\u560E\u86E4\u5C2C\u5477\u5C15\u5C1C\u65EE\u9486", + "gai": "\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u4E10\u9654\u5793\u6224\u8D45\u80F2", + "gan": "\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5769\u82F7\u5C34\u64C0\u6CD4\u6DE6\u6F89\u7EC0\u6A44\u65F0\u77F8\u75B3\u9150", + "gang": "\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6206\u7F61\u9883\u7B7B", + "gong": "\u6760\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u857B\u5EFE\u54A3\u73D9\u80B1\u86A3\u86E9\u89E5", + "gao": "\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u777E\u8BF0\u90DC\u84BF\u85C1\u7F1F\u69D4\u69C1\u6772\u9506", + "ge": "\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u9601\u9694\u94EC\u4E2A\u5404\u9B32\u4EE1\u54FF\u5865\u55DD\u7EA5\u643F\u8188\u784C\u94EA\u9549\u88BC\u988C\u867C\u8238\u9ABC\u9AC2", + "gei": "\u7ED9", + "gen": "\u6839\u8DDF\u4E98\u831B\u54CF\u826E", + "geng": "\u8015\u66F4\u5E9A\u7FB9\u57C2\u803F\u6897\u54FD\u8D53\u9CA0", + "gou": "\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u4F5D\u8BDF\u5CA3\u9058\u5ABE\u7F11\u89CF\u5F40\u9E32\u7B31\u7BDD\u97B2", + "gu": "\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u560F\u8BC2\u83F0\u54CC\u5D2E\u6C69\u688F\u8F71\u726F\u727F\u80CD\u81CC\u6BC2\u77BD\u7F5F\u94B4\u9522\u74E0\u9E2A\u9E44\u75FC\u86C4\u9164\u89DA\u9CB4\u9AB0\u9E58", + "gua": "\u522E\u74DC\u5250\u5BE1\u6302\u8902\u5366\u8BD6\u5471\u681D\u9E39", + "guai": "\u4E56\u62D0\u602A\u54D9", + "guan": "\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u500C\u839E\u63BC\u6DAB\u76E5\u9E73\u9CCF", + "guang": "\u5149\u5E7F\u901B\u72B7\u6844\u80F1\u7592", + "gui": "\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u5326\u523F\u5E8B\u5B84\u59AB\u6867\u7085\u6677\u7688\u7C0B\u9C91\u9CDC", + "gun": "\u8F8A\u6EDA\u68CD\u4E28\u886E\u7EF2\u78D9\u9CA7", + "guo": "\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u9998\u8803\u57DA\u63B4\u5459\u56D7\u5E3C\u5D1E\u7313\u6901\u8662\u951E\u8052\u872E\u873E\u8748", + "ha": "\u54C8", + "hai": "\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u54B4\u55E8\u988F\u91A2", + "han": "\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u9097\u83E1\u6496\u961A\u701A\u6657\u7113\u9894\u86B6\u9F3E", + "hen": "\u592F\u75D5\u5F88\u72E0\u6068", + "hang": "\u676D\u822A\u6C86\u7ED7\u73E9\u6841", + "hao": "\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u8585\u55E5\u5686\u6FE0\u704F\u660A\u7693\u98A2\u869D", + "he": "\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u8BC3\u52BE\u58D1\u85FF\u55D1\u55EC\u9616\u76CD\u86B5\u7FEE", + "hei": "\u563F\u9ED1", + "heng": "\u54FC\u4EA8\u6A2A\u8861\u6052\u8A07\u8605", + "hong": "\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u9EC9\u8BA7\u836D\u85A8\u95F3\u6CD3", + "hou": "\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u5820\u5F8C\u9005\u760A\u7BCC\u7CC7\u9C8E\u9ABA", + "hu": "\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u51B1\u553F\u56EB\u5CB5\u7322\u6019\u60DA\u6D52\u6EF9\u7425\u69F2\u8F77\u89F3\u70C0\u7173\u623D\u6248\u795C\u9E55\u9E71\u7B0F\u9190\u659B", + "hua": "\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u5290\u6D4D\u9A85\u6866\u94E7\u7A1E", + "huai": "\u69D0\u5F8A\u6000\u6DEE\u574F\u8FD8\u8E1D", + "huan": "\u6B22\u73AF\u6853\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u90C7\u5942\u57B8\u64D0\u571C\u6D39\u6D63\u6F36\u5BF0\u902D\u7F33\u953E\u9CA9\u9B1F", + "huang": "\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u968D\u5FA8\u6E5F\u6F62\u9051\u749C\u8093\u7640\u87E5\u7BC1\u9CC7", + "hui": "\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8BD9\u8334\u835F\u8559\u54D5\u5599\u96B3\u6D04\u5F57\u7F0B\u73F2\u6656\u605A\u867A\u87EA\u9EBE", + "hun": "\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8BE8\u9984\u960D\u6EB7\u7F17", + "huo": "\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u6509\u56AF\u5925\u94AC\u952A\u956C\u8020\u8816", + "ji": "\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5C45\u4E0C\u4E69\u525E\u4F76\u4F74\u8114\u58BC\u82A8\u82B0\u8401\u84BA\u857A\u638E\u53FD\u54AD\u54DC\u5527\u5C8C\u5D74\u6D0E\u5F50\u5C50\u9AA5\u757F\u7391\u696B\u6B9B\u621F\u6222\u8D4D\u89CA\u7284\u9F51\u77F6\u7F81\u5D47\u7A37\u7620\u7635\u866E\u7B08\u7B04\u66A8\u8DFB\u8DFD\u9701\u9C9A\u9CAB\u9AFB\u9E82", + "jia": "\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u4F3D\u90CF\u62EE\u5CAC\u6D43\u8FE6\u73C8\u621B\u80DB\u605D\u94D7\u9553\u75C2\u86F1\u7B33\u8888\u8DCF", + "jian": "\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50ED\u8C0F\u8C2B\u83C5\u84B9\u641B\u56DD\u6E54\u8E47\u8B07\u7F23\u67A7\u67D9\u6957\u620B\u622C\u726E\u728D\u6BFD\u8171\u7751\u950F\u9E63\u88E5\u7B15\u7BB4\u7FE6\u8DBC\u8E3A\u9CA3\u97AF", + "jiang": "\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8333\u6D1A\u7EDB\u7F30\u729F\u7913\u8029\u7CE8\u8C47", + "jiao": "\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u4F7C\u50EC\u832D\u6322\u564D\u5CE4\u5FBC\u59E3\u7E9F\u656B\u768E\u9E6A\u86DF\u91AE\u8DE4\u9C9B", + "jie": "\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5048\u8BA6\u8BD8\u5588\u55DF\u736C\u5A55\u5B51\u6840\u7352\u78A3\u9534\u7596\u88B7\u9889\u86A7\u7FAF\u9C92\u9AB1\u9AEB", + "jin": "\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78\u5C3D\u537A\u8369\u5807\u5664\u9991\u5ED1\u5997\u7F19\u747E\u69FF\u8D46\u89D0\u9485\u9513\u887F\u77DC", + "jing": "\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u522D\u5106\u9631\u83C1\u734D\u61AC\u6CFE\u8FF3\u5F2A\u5A67\u80BC\u80EB\u8148\u65CC", + "jiong": "\u70AF\u7A98\u5182\u8FE5\u6243", + "jiu": "\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u50E6\u557E\u9604\u67E9\u6855\u9E6B\u8D73\u9B0F", + "ju": "\u97A0\u62D8\u72D9\u75BD\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u5028\u8BB5\u82E3\u82F4\u8392\u63AC\u907D\u5C66\u741A\u67B8\u6910\u6998\u6989\u6A58\u728B\u98D3\u949C\u9514\u7AAD\u88FE\u8D84\u91B5\u8E3D\u9F83\u96CE\u97AB", + "juan": "\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u9104\u72F7\u6D93\u684A\u8832\u9529\u954C\u96BD", + "jue": "\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u53A5\u5282\u8C32\u77CD\u8568\u5658\u5D1B\u7357\u5B53\u73CF\u6877\u6A5B\u721D\u9562\u8E76\u89D6", + "jun": "\u5747\u83CC\u94A7\u519B\u541B\u5CFB\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u6343\u72FB\u76B2\u7B60\u9E87", + "ka": "\u5580\u5496\u5361\u4F67\u5494\u80E9", + "ke": "\u54AF\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u5CA2\u606A\u6E98\u9A92\u7F02\u73C2\u8F72\u6C2A\u778C\u94B6\u75B4\u7AA0\u874C\u9AC1", + "kai": "\u5F00\u63E9\u6977\u51EF\u6168\u5240\u57B2\u8488\u5FFE\u607A\u94E0\u950E", + "kan": "\u520A\u582A\u52D8\u574E\u780D\u770B\u4F83\u51F5\u83B0\u83B6\u6221\u9F9B\u77B0", + "kang": "\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u5751\u4F09\u95F6\u94AA", + "kao": "\u8003\u62F7\u70E4\u9760\u5C3B\u6832\u7292\u94D0", + "ken": "\u80AF\u5543\u57A6\u6073\u57A0\u88C9\u9880", + "keng": "\u542D\u5FD0\u94FF", + "kong": "\u7A7A\u6050\u5B54\u63A7\u5025\u5D06\u7B9C", + "kou": "\u62A0\u53E3\u6263\u5BC7\u82A4\u853B\u53E9\u770D\u7B58", + "ku": "\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5233\u5800\u55BE\u7ED4\u9AB7", + "kua": "\u5938\u57AE\u630E\u8DE8\u80EF\u4F89", + "kuai": "\u5757\u7B77\u4FA9\u5FEB\u84AF\u90D0\u8489\u72EF\u810D", + "kuan": "\u5BBD\u6B3E\u9ACB", + "kuang": "\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u8BD3\u8BF3\u909D\u5739\u593C\u54D0\u7EA9\u8D36", + "kui": "\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080\u9988\u6127\u6E83\u9997\u532E\u5914\u9697\u63C6\u55B9\u559F\u609D\u6126\u9615\u9035\u668C\u777D\u8069\u8770\u7BD1\u81FE\u8DEC", + "kun": "\u5764\u6606\u6346\u56F0\u6083\u9603\u7428\u951F\u918C\u9CB2\u9AE1", + "kuo": "\u62EC\u6269\u5ED3\u9614\u86DE", + "la": "\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u524C\u647A\u908B\u65EF\u782C\u760C", + "lai": "\u83B1\u6765\u8D56\u5D03\u5F95\u6D9E\u6FD1\u8D49\u7750\u94FC\u765E\u7C41", + "lan": "\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u5549\u5C9A\u61D4\u6F24\u6984\u6593\u7F71\u9567\u8934", + "lang": "\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u83A8\u8497\u5577\u9606\u9512\u7A02\u8782", + "lao": "\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u5520\u5D02\u6833\u94D1\u94F9\u75E8\u91AA", + "le": "\u52D2\u4E50\u808B\u4EC2\u53FB\u561E\u6CD0\u9CD3", + "lei": "\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u7C7B\u6CEA\u7FB8\u8BD4\u837D\u54A7\u6F2F\u5AD8\u7F27\u6A91\u8012\u9179", + "ling": "\u68F1\u51B7\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u9143\u5844\u82D3\u5464\u56F9\u6CE0\u7EEB\u67C3\u68C2\u74F4\u8046\u86C9\u7FCE\u9CAE", + "leng": "\u695E\u6123", + "li": "\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FEA\u4FDA\u90E6\u575C\u82C8\u8385\u84E0\u85DC\u6369\u5456\u5533\u55B1\u7301\u6EA7\u6FA7\u9026\u5A0C\u5AE0\u9A8A\u7F21\u73DE\u67A5\u680E\u8F79\u623E\u783A\u8A48\u7F79\u9502\u9E42\u75A0\u75AC\u86CE\u870A\u8821\u7B20\u7BE5\u7C9D\u91B4\u8DDE\u96F3\u9CA1\u9CE2\u9EE7", + "lian": "\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u631B\u8539\u5941\u6F4B\u6FC2\u5A08\u740F\u695D\u6B93\u81C1\u81A6\u88E2\u880A\u9CA2", + "liang": "\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u589A\u690B\u8E09\u9753\u9B49", + "liao": "\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u84FC\u5C25\u5639\u7360\u5BEE\u7F2D\u948C\u9E69\u8022", + "lie": "\u5217\u88C2\u70C8\u52A3\u730E\u51BD\u57D2\u6D0C\u8D94\u8E90\u9B23", + "lin": "\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u853A\u5D99\u5EEA\u9074\u6AA9\u8F9A\u77B5\u7CBC\u8E8F\u9E9F", + "liu": "\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u62A1\u507B\u848C\u6CD6\u6D4F\u905B\u9A9D\u7EFA\u65D2\u7198\u950D\u954F\u9E68\u938F", + "long": "\u9F99\u804B\u5499\u7B3C\u7ABF\u9686\u5784\u62E2\u9647\u5F04\u5785\u830F\u6CF7\u73D1\u680A\u80E7\u783B\u7643", + "lou": "\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u55BD\u5D5D\u9542\u7618\u8027\u877C\u9AC5", + "lu": "\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u5786\u6445\u64B8\u565C\u6CF8\u6E0C\u6F09\u7490\u680C\u6A79\u8F73\u8F82\u8F98\u6C07\u80EA\u9565\u9E2C\u9E6D\u7C0F\u823B\u9C88", + "lv": "\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u634B\u95FE\u6988\u8182\u7A06\u891B", + "luan": "\u5CE6\u5B6A\u6EE6\u5375\u4E71\u683E\u9E3E\u92AE", + "lue": "\u63A0\u7565\u950A", + "lun": "\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u56F5", + "luo": "\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u502E\u8366\u645E\u7321\u6CFA\u6924\u8136\u9559\u7630\u96D2", + "ma": "\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u551B\u72B8\u5B37\u6769\u9EBD", + "mai": "\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u52A2\u836C\u54AA\u973E", + "man": "\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B\u8C29\u5881\u5E54\u7F26\u71B3\u9558\u989F\u87A8\u9CD7\u9794", + "mang": "\u8292\u832B\u76F2\u5FD9\u83BD\u9099\u6F2D\u6726\u786D\u87D2", + "meng": "\u6C13\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u52D0\u750D\u77A2\u61F5\u791E\u867B\u8722\u8813\u824B\u8268\u9EFE", + "miao": "\u732B\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u55B5\u9088\u7F08\u7F2A\u676A\u6DFC\u7707\u9E4B\u8731", + "mao": "\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4F94\u88A4\u52D6\u8306\u5CC1\u7441\u6634\u7266\u8004\u65C4\u61CB\u7780\u86D1\u8765\u87CA\u9AE6", + "me": "\u4E48", + "mei": "\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u5776\u8393\u5D4B\u7338\u6D7C\u6E44\u6963\u9545\u9E5B\u8882\u9B45", + "men": "\u95E8\u95F7\u4EEC\u626A\u739F\u7116\u61D1\u9494", + "mi": "\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u8288\u5196\u8C27\u863C\u5627\u7315\u736F\u6C68\u5B93\u5F2D\u8112\u6549\u7CF8\u7E3B\u9E8B", + "mian": "\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u6C94\u6E4E\u817C\u7704", + "mie": "\u8511\u706D\u54A9\u881B\u7BFE", + "min": "\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u82E0\u5CB7\u95F5\u6CEF\u73C9", + "ming": "\u660E\u879F\u9E23\u94ED\u540D\u547D\u51A5\u8317\u6E9F\u669D\u7791\u9169", + "miu": "\u8C2C", + "mo": "\u6478\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C1F\u8309\u84E6\u998D\u5AEB\u9546\u79E3\u763C\u8031\u87C6\u8C8A\u8C98", + "mou": "\u8C0B\u725F\u67D0\u53B6\u54DE\u5A7A\u7738\u936A", + "mu": "\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u4EEB\u82DC\u5452\u6C90\u6BEA\u94BC", + "na": "\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u5185\u637A\u80AD\u954E\u8872\u7BAC", + "nai": "\u6C16\u4E43\u5976\u8010\u5948\u9F10\u827F\u8418\u67F0", + "nan": "\u5357\u7537\u96BE\u56CA\u5583\u56E1\u6960\u8169\u877B\u8D67", + "nang": "\u652E\u54DD\u56D4\u9995\u66E9", + "nao": "\u6320\u8111\u607C\u95F9\u5B6C\u57B4\u7331\u7459\u7847\u94D9\u86F2", + "ne": "\u6DD6\u5462\u8BB7", + "nei": "\u9981", + "nen": "\u5AE9\u80FD\u6798\u6041", + "ni": "\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u4F32\u576D\u730A\u6029\u6EE0\u6635\u65CE\u7962\u615D\u7768\u94CC\u9CB5", + "nian": "\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5EFF\u8F87\u9ECF\u9C87\u9CB6", + "niang": "\u5A18\u917F", + "niao": "\u9E1F\u5C3F\u8311\u5B32\u8132\u8885", + "nie": "\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u4E5C\u9667\u8616\u55EB\u8080\u989E\u81EC\u8E51", + "nin": "\u60A8\u67E0", + "ning": "\u72DE\u51DD\u5B81\u62E7\u6CDE\u4F5E\u84E5\u549B\u752F\u804D", + "niu": "\u725B\u626D\u94AE\u7EBD\u72C3\u5FF8\u599E\u86B4", + "nong": "\u8113\u6D53\u519C\u4FAC", + "nu": "\u5974\u52AA\u6012\u5476\u5E11\u5F29\u80EC\u5B65\u9A7D", + "nv": "\u5973\u6067\u9495\u8844", + "nuan": "\u6696", + "nuenue": "\u8650", + "nue": "\u759F\u8C11", + "nuo": "\u632A\u61E6\u7CEF\u8BFA\u50A9\u6426\u558F\u9518", + "o": "\u5594", + "ou": "\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u6004\u74EF\u8026", + "pa": "\u556A\u8DB4\u722C\u5E15\u6015\u7436\u8469\u7B62", + "pai": "\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u4FF3\u848E", + "pan": "\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u723F\u6CEE\u88A2\u897B\u87E0\u8E52", + "pang": "\u4E53\u5E9E\u65C1\u802A\u80D6\u6EC2\u9004", + "pao": "\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u530F\u72CD\u5E96\u812C\u75B1", + "pei": "\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u638A\u8F94\u5E14\u6DE0\u65C6\u952B\u9185\u9708", + "pen": "\u55B7\u76C6\u6E53", + "peng": "\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u580B\u562D\u6026\u87DB", + "pi": "\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u4E15\u9674\u90B3\u90EB\u572E\u9F19\u64D7\u567C\u5E80\u5AB2\u7EB0\u6787\u7513\u7765\u7F74\u94CD\u75E6\u7656\u758B\u868D\u8C94", + "pian": "\u7BC7\u504F\u7247\u9A97\u8C1D\u9A88\u728F\u80FC\u890A\u7FE9\u8E41", + "piao": "\u98D8\u6F02\u74E2\u7968\u527D\u560C\u5AD6\u7F25\u6B8D\u779F\u87B5", + "pie": "\u6487\u77A5\u4E3F\u82E4\u6C15", + "pin": "\u62FC\u9891\u8D2B\u54C1\u8058\u62DA\u59D8\u5AD4\u6980\u725D\u98A6", + "ping": "\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u4FDC\u5A09\u67B0\u9C86", + "po": "\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u53F5\u9131\u6EA5\u73C0\u948B\u94B7\u76A4\u7B38", + "pou": "\u5256\u88D2\u8E23", + "pu": "\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u530D\u5657\u6FEE\u749E\u6C06\u9564\u9568\u8E7C", + "qi": "\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u4E9F\u4E93\u573B\u8291\u840B\u847A\u5601\u5C7A\u5C90\u6C54\u6DC7\u9A90\u7EEE\u742A\u7426\u675E\u6864\u69ED\u6B39\u797A\u61A9\u789B\u86F4\u871E\u7DA6\u7DAE\u8DBF\u8E4A\u9CCD\u9E92", + "qia": "\u6390\u6070\u6D3D\u845C", + "qian": "\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u4F65\u9621\u828A\u82A1\u8368\u63AE\u5C8D\u60AD\u614A\u9A9E\u6434\u8930\u7F31\u6920\u80B7\u6106\u94A4\u8654\u7B9D", + "qiang": "\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u5AF1\u6A2F\u6217\u709D\u9516\u9535\u956A\u8941\u8723\u7F9F\u8DEB\u8DC4", + "qiao": "\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5281\u8BEE\u8C2F\u835E\u6100\u6194\u7F32\u6A35\u6BF3\u7857\u8DF7\u9792", + "qie": "\u5207\u8304\u4E14\u602F\u7A83\u90C4\u553C\u60EC\u59BE\u6308\u9532\u7BA7", + "qin": "\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u82A9\u84C1\u8572\u63FF\u5423\u55EA\u5659\u6EB1\u6A8E\u8793\u887E", + "qing": "\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u5029\u82D8\u570A\u6AA0\u78EC\u873B\u7F44\u7B90\u8B26\u9CAD\u9EE5", + "qiong": "\u743C\u7A77\u909B\u8315\u7A79\u7B47\u928E", + "qiu": "\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u4FC5\u6C3D\u5DEF\u827D\u72B0\u6E6B\u9011\u9052\u6978\u8D47\u9E20\u866C\u86AF\u8764\u88D8\u7CD7\u9CC5\u9F3D", + "qu": "\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20\u53D6\u5A36\u9F8B\u8DA3\u53BB\u8BCE\u52AC\u8556\u8627\u5C96\u8862\u9612\u74A9\u89D1\u6C0D\u795B\u78F2\u766F\u86D0\u883C\u9EB4\u77BF\u9EE2", + "quan": "\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u8BE0\u8343\u737E\u609B\u7EFB\u8F81\u754E\u94E8\u8737\u7B4C\u9B08", + "que": "\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u9619\u60AB", + "qun": "\u88D9\u7FA4\u9021", + "ran": "\u7136\u71C3\u5189\u67D3\u82D2\u9AEF", + "rang": "\u74E4\u58E4\u6518\u56B7\u8BA9\u79B3\u7A70", + "rao": "\u9976\u6270\u7ED5\u835B\u5A06\u6861", + "ruo": "\u60F9\u82E5\u5F31", + "re": "\u70ED\u504C", + "ren": "\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u4EDE\u834F\u845A\u996A\u8F6B\u7A14\u887D", + "reng": "\u6254\u4ECD", + "ri": "\u65E5", + "rong": "\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u5D58\u72E8\u7F1B\u6995\u877E", + "rou": "\u63C9\u67D4\u8089\u7CC5\u8E42\u97A3", + "ru": "\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u84D0\u85B7\u5685\u6D33\u6EBD\u6FE1\u94F7\u8966\u98A5", + "ruan": "\u8F6F\u962E\u670A", + "rui": "\u854A\u745E\u9510\u82AE\u8564\u777F\u868B", + "run": "\u95F0\u6DA6", + "sa": "\u6492\u6D12\u8428\u5345\u4EE8\u6332\u98D2", + "sai": "\u816E\u9CC3\u585E\u8D5B\u567B", + "san": "\u4E09\u53C1\u4F1E\u6563\u5F61\u9993\u6C35\u6BF5\u7CC1\u9730", + "sang": "\u6851\u55D3\u4E27\u6421\u78C9\u98A1", + "sao": "\u6414\u9A9A\u626B\u5AC2\u57FD\u81CA\u7619\u9CCB", + "se": "\u745F\u8272\u6DA9\u556C\u94E9\u94EF\u7A51", + "sen": "\u68EE", + "seng": "\u50E7", + "sha": "\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u810E\u6B43\u75E7\u88DF\u970E\u9CA8", + "shai": "\u7B5B\u6652\u917E", + "shan": "\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5261\u8BAA\u912F\u57CF\u829F\u6F78\u59D7\u9A9F\u81BB\u9490\u759D\u87EE\u8222\u8DDA\u9CDD", + "shang": "\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u57A7\u7EF1\u6B87\u71B5\u89DE", + "shao": "\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u52AD\u82D5\u6F72\u86F8\u7B24\u7B72\u8244", + "she": "\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u538D\u4F58\u731E\u7572\u9E9D", + "shen": "\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u8BDC\u8C02\u5432\u54C2\u6E16\u6939\u77E7\u8703", + "sheng": "\u58F0\u751F\u7525\u7272\u5347\u7EF3\u7701\u76DB\u5269\u80DC\u5723\u4E1E\u6E11\u5AB5\u771A\u7B19", + "shi": "\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u8C25\u57D8\u83B3\u84CD\u5F11\u5511\u9963\u8F7C\u8006\u8D33\u70BB\u793B\u94C8\u94CA\u87AB\u8210\u7B6E\u8C55\u9CA5\u9CBA", + "shou": "\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u624C\u72E9\u7EF6\u824F", + "shu": "\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31\u6055\u500F\u587E\u83FD\u5FC4\u6CAD\u6D91\u6F8D\u59DD\u7EBE\u6BF9\u8167\u6BB3\u956F\u79EB\u9E6C", + "shua": "\u5237\u800D\u5530\u6DAE", + "shuai": "\u6454\u8870\u7529\u5E05\u87C0", + "shuan": "\u6813\u62F4\u95E9", + "shuang": "\u971C\u53CC\u723D\u5B40", + "shui": "\u8C01\u6C34\u7761\u7A0E", + "shun": "\u542E\u77AC\u987A\u821C\u6042", + "shuo": "\u8BF4\u7855\u6714\u70C1\u84B4\u6420\u55CD\u6FEF\u5981\u69CA\u94C4", + "si": "\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u53AE\u4FDF\u5155\u83E5\u549D\u6C5C\u6CD7\u6F8C\u59D2\u9A77\u7F0C\u7940\u7960\u9536\u9E36\u801C\u86F3\u7B25", + "song": "\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u51C7\u83D8\u5D27\u5D69\u5FEA\u609A\u6DDE\u7AE6", + "sou": "\u641C\u8258\u64DE\u55FD\u53DF\u55D6\u55FE\u998A\u6EB2\u98D5\u778D\u953C\u878B", + "su": "\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u5919\u8C21\u850C\u55C9\u612B\u7C0C\u89EB\u7A23", + "suan": "\u9178\u849C\u7B97", + "sui": "\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u84D1\u51AB\u8C07\u6FC9\u9083\u71E7\u772D\u7762", + "sun": "\u5B59\u635F\u7B0B\u836A\u72F2\u98E7\u69AB\u8DE3\u96BC", + "suo": "\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u5522\u55E6\u5A11\u686B\u7743\u7FA7", + "ta": "\u584C\u4ED6\u5B83\u5979\u5854\u736D\u631E\u8E4B\u8E0F\u95FC\u6EBB\u9062\u69BB\u6C93", + "tai": "\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u90B0\u85B9\u80BD\u70B1\u949B\u8DC6\u9C90", + "tan": "\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u90EF\u8548\u6619\u94BD\u952C\u8983", + "tang": "\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u50A5\u9967\u6E8F\u746D\u94F4\u9557\u8025\u8797\u87B3\u7FB0\u91A3", + "thang": "\u5018\u8EBA\u6DCC", + "theng": "\u8D9F\u70EB", + "tao": "\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u6311\u9F17\u5555\u97EC\u9955", + "te": "\u7279", + "teng": "\u85E4\u817E\u75BC\u8A8A\u6ED5", + "ti": "\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u8351\u608C\u9016\u7EE8\u7F07\u9E48\u88FC\u918D", + "tian": "\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u63AD\u5FDD\u9617\u6B84\u754B\u94BF\u86BA", + "tiao": "\u6761\u8FE2\u773A\u8DF3\u4F7B\u7967\u94EB\u7A95\u9F86\u9CA6", + "tie": "\u8D34\u94C1\u5E16\u841C\u992E", + "ting": "\u5385\u542C\u70C3\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u839B\u8476\u5A77\u6883\u8713\u9706", + "tong": "\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u4F5F\u50EE\u4EDD\u833C\u55F5\u6078\u6F7C\u783C", + "tou": "\u5077\u6295\u5934\u900F\u4EA0", + "tu": "\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u580D\u837C\u83DF\u948D\u9174\u51C3", + "tuan": "\u6E4D\u56E2\u7583", + "tui": "\u63A8\u9893\u817F\u8715\u892A\u9000\u5FD2\u717A", + "tun": "\u541E\u5C6F\u81C0\u9968\u66BE\u8C5A\u7A80", + "tuo": "\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u4E47\u4F57\u5768\u5EB9\u6CB1\u67DD\u7823\u7BA8\u8204\u8DCE\u9F0D", + "wa": "\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u4F64\u5A32\u817D", + "wai": "\u6B6A\u5916", + "wan": "\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u525C\u8284\u82CB\u83C0\u7EA8\u7EFE\u742C\u8118\u7579\u873F\u7BA2", + "wang": "\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u7F54\u5C22\u60D8\u8F8B\u9B4D", + "wei": "\u5A01\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u502D\u504E\u8BFF\u9688\u8473\u8587\u5E0F\u5E37\u5D34\u5D6C\u7325\u732C\u95F1\u6CA9\u6D27\u6DA0\u9036\u5A13\u73AE\u97EA\u8ECE\u709C\u7168\u71A8\u75FF\u8249\u9C94", + "wen": "\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u520E\u6120\u960C\u6C76\u74BA\u97EB\u6B81\u96EF", + "weng": "\u55E1\u7FC1\u74EE\u84CA\u8579", + "wo": "\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u83B4\u5E44\u6E25\u674C\u809F\u9F8C", + "wu": "\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u5140\u4EF5\u9622\u90AC\u572C\u82B4\u5E91\u6003\u5FE4\u6D6F\u5BE4\u8FD5\u59A9\u9A9B\u727E\u7110\u9E49\u9E5C\u8708\u92C8\u9F2F", + "xi": "\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u50D6\u516E\u96B0\u90D7\u831C\u8478\u84F0\u595A\u550F\u5F99\u9969\u960B\u6D60\u6DC5\u5C63\u5B09\u73BA\u6A28\u66E6\u89CB\u6B37\u71B9\u798A\u79A7\u94B8\u7699\u7A78\u8725\u87CB\u823E\u7FB2\u7C9E\u7FD5\u91AF\u9F37", + "xia": "\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u846D\u55C4\u72CE\u9050\u7455\u7856\u7615\u7F45\u9EE0", + "xian": "\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u51BC\u85D3\u5C98\u7303\u66B9\u5A34\u6C19\u7946\u9E47\u75EB\u86AC\u7B45\u7C7C\u9170\u8DF9", + "xiang": "\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8297\u8459\u9977\u5EA0\u9AA7\u7F03\u87D3\u9C9E\u98E8", + "xiao": "\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u54D3\u54BB\u5D24\u6F47\u900D\u9A81\u7EE1\u67AD\u67B5\u7B71\u7BAB\u9B48", + "xie": "\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u5055\u4EB5\u52F0\u71EE\u85A4\u64B7\u5EE8\u7023\u9082\u7EC1\u7F2C\u69AD\u698D\u6B59\u8E9E", + "xin": "\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u56DF\u99A8\u8398\u6B46\u94FD\u946B\u6615", + "xing": "\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u9649\u8347\u8365\u64E4\u60BB\u784E", + "xiong": "\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u828E", + "xiu": "\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u83A0\u5CAB\u9990\u5EA5\u9E3A\u8C85\u9AF9", + "xu": "\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8BB4\u8BE9\u5729\u84FF\u6035\u6D2B\u6E86\u987C\u6829\u7166\u7809\u76F1\u80E5\u7CC8\u9191", + "xuan": "\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384\u9009\u7663\u7729\u7EDA\u5107\u8C16\u8431\u63CE\u9994\u6CEB\u6D35\u6E32\u6F29\u7487\u6966\u6684\u70AB\u714A\u78B9\u94C9\u955F\u75C3", + "xue": "\u9774\u859B\u5B66\u7A74\u96EA\u8840\u5671\u6CF6\u9CD5", + "xun": "\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u5DFD\u57D9\u8340\u85B0\u5CCB\u5F87\u6D54\u66DB\u7AA8\u91BA\u9C9F", + "ya": "\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u4F22\u63E0\u5416\u5C88\u8FD3\u5A05\u740A\u6860\u6C29\u7811\u775A\u75D6", + "yan": "\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u53A3\u9765\u8D5D\u4FE8\u5043\u5156\u8BA0\u8C33\u90FE\u9122\u82AB\u83F8\u5D26\u6079\u95EB\u960F\u6D07\u6E6E\u6EDF\u598D\u5AE3\u7430\u664F\u80ED\u814C\u7131\u7F68\u7B75\u917D\u9B47\u990D\u9F39", + "yang": "\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u5F89\u600F\u6CF1\u7080\u70CA\u6059\u86D8\u9785", + "yao": "\u9080\u8170\u5996\u7476\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u592D\u723B\u5406\u5D3E\u5FAD\u7039\u5E7A\u73E7\u6773\u66DC\u80B4\u9E5E\u7A88\u7E47\u9CD0", + "ye": "\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u8C12\u90BA\u63F6\u9980\u6654\u70E8\u94D8", + "yi": "\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u5208\u5293\u4F7E\u8BD2\u572A\u572F\u57F8\u61FF\u82E1\u858F\u5F08\u5955\u6339\u5F0B\u5453\u54A6\u54BF\u566B\u5CC4\u5DB7\u7317\u9974\u603F\u6021\u6092\u6F2A\u8FE4\u9A7F\u7F22\u6BAA\u8D3B\u65D6\u71A0\u9487\u9552\u9571\u75CD\u7617\u7654\u7FCA\u8864\u8734\u8223\u7FBF\u7FF3\u914F\u9EDF", + "yin": "\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690\u5370\u80E4\u911E\u5819\u831A\u5591\u72FA\u5924\u6C24\u94DF\u763E\u8693\u972A\u9F88", + "ying": "\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u5B34\u90E2\u8314\u83BA\u8426\u6484\u5624\u81BA\u6EE2\u6F46\u701B\u745B\u748E\u6979\u9E66\u763F\u988D\u7F42", + "yo": "\u54DF\u5537", + "yong": "\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u4FD1\u58C5\u5889\u6175\u9095\u955B\u752C\u9CD9\u9954", + "you": "\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u5363\u6538\u4F91\u83B8\u5466\u56FF\u5BA5\u67DA\u7337\u7256\u94D5\u75A3\u8763\u9C7F\u9EDD\u9F2C", + "yu": "\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u79BA\u6BD3\u4F1B\u4FE3\u8C00\u8C15\u8438\u84E3\u63C4\u5581\u5704\u5709\u5D5B\u72F3\u996B\u5EBE\u9608\u59AA\u59A4\u7EA1\u745C\u6631\u89CE\u8174\u6B24\u65BC\u715C\u71E0\u807F\u94B0\u9E46\u7610\u7600\u7AB3\u8753\u7AFD\u8201\u96E9\u9F89", + "yuan": "\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u586C\u6C85\u5A9B\u7457\u6A7C\u7230\u7722\u9E22\u8788\u9F0B", + "yue": "\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u9FA0\u6A3E\u5216\u94BA", + "yun": "\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u90D3\u82B8\u72C1\u607D\u7EAD\u6B92\u6600\u6C32", + "za": "\u531D\u7838\u6742\u62F6\u5482", + "zai": "\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u5D3D\u753E", + "zan": "\u6512\u6682\u8D5E\u74D2\u661D\u7C2A\u7CCC\u8DB1\u933E", + "zang": "\u8D43\u810F\u846C\u5958\u6215\u81E7", + "zao": "\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u5523\u7F2B", + "ze": "\u8D23\u62E9\u5219\u6CFD\u4EC4\u8D5C\u5567\u8FEE\u6603\u7B2E\u7BA6\u8234", + "zei": "\u8D3C", + "zen": "\u600E\u8C2E", + "zeng": "\u589E\u618E\u66FE\u8D60\u7F2F\u7511\u7F7E\u9503", + "zha": "\u624E\u55B3\u6E23\u672D\u8F67\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u63F8\u5412\u54A4\u54F3\u600D\u781F\u75C4\u86B1\u9F44", + "zhai": "\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u7826", + "zhan": "\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u8C35\u640C\u65C3", + "zhang": "\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u4EC9\u9123\u5E5B\u5D82\u7350\u5ADC\u748B\u87D1", + "zhao": "\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u722A\u8BCF\u68F9\u948A\u7B0A", + "zhe": "\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u8C2A\u966C\u67D8\u8F84\u78D4\u9E67\u891A\u8707\u8D6D", + "zhen": "\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u7F1C\u6862\u699B\u8F78\u8D48\u80D7\u6715\u796F\u755B\u9E29", + "zheng": "\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F\u5E27\u75C7\u90D1\u8BC1\u8BE4\u5CE5\u94B2\u94EE\u7B5D", + "zhi": "\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u536E\u965F\u90C5\u57F4\u82B7\u646D\u5E19\u5FEE\u5F58\u54AB\u9A98\u6809\u67B3\u6800\u684E\u8F75\u8F7E\u6534\u8D3D\u81A3\u7949\u7957\u9EF9\u96C9\u9E37\u75E3\u86ED\u7D77\u916F\u8DD6\u8E2C\u8E2F\u8C78\u89EF", + "zhong": "\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u51A2\u953A\u87BD\u8202\u822F\u8E35", + "zhou": "\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u5544\u7740\u501C\u8BF9\u836E\u9B3B\u7EA3\u80C4\u78A1\u7C40\u8233\u914E\u9CB7", + "zhu": "\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51\u4F4F\u6CE8\u795D\u9A7B\u4F2B\u4F8F\u90BE\u82CE\u8331\u6D19\u6E1A\u6F74\u9A7A\u677C\u69E0\u6A65\u70B7\u94E2\u75B0\u7603\u86B0\u7AFA\u7BB8\u7FE5\u8E85\u9E88", + "zhua": "\u6293", + "zhuai": "\u62FD", + "zhuan": "\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u629F\u556D\u989B", + "zhuang": "\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u4E2C", + "zhui": "\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8411\u9A93\u7F12", + "zhun": "\u8C06\u51C6", + "zhuo": "\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u707C\u6D4A\u502C\u8BFC\u5EF4\u855E\u64E2\u555C\u6D5E\u6DBF\u6753\u712F\u799A\u65AB", + "zi": "\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u8C18\u5D6B\u59CA\u5B73\u7F01\u6893\u8F8E\u8D40\u6063\u7726\u9531\u79ED\u8014\u7B2B\u7CA2\u89DC\u8A3E\u9CBB\u9AED", + "zong": "\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u8159\u7CBD", + "zou": "\u90B9\u8D70\u594F\u63CD\u9139\u9CB0", + "zu": "\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u4FCE\u83F9\u5550\u5F82\u9A75\u8E74", + "zuan": "\u94BB\u7E82\u6525\u7F35", + "zui": "\u5634\u9189\u6700\u7F6A", + "zun": "\u5C0A\u9075\u6499\u6A3D\u9CDF", + "zuo": "\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7\u961D\u963C\u80D9\u795A\u9162", + "diu": "\u94E5", + "nou": "\u8028", + "bia": "\u9ADF" + }; + this.polyphone = { + "19969": "DZ", + "19975": "WM", + "19988": "QJ", + "20048": "YL", + "20056": "SC", + "20060": "NM", + "20094": "QG", + "20127": "QJ", + "20167": "QC", + "20193": "YG", + "20250": "KH", + "20256": "ZC", + "20282": "SC", + "20285": "QJG", + "20291": "TD", + "20314": "YD", + "20340": "NE", + "20375": "TD", + "20389": "YJ", + "20391": "CZ", + "20415": "PB", + "20446": "YS", + "20447": "SQ", + "20504": "TC", + "20608": "KG", + "20854": "QJ", + "20857": "ZC", + "20911": "PF", + "20985": "AW", + "21032": "PB", + "21048": "XQ", + "21049": "SC", + "21089": "YS", + "21119": "JC", + "21242": "SB", + "21273": "SC", + "21305": "YP", + "21306": "QO", + "21330": "ZC", + "21333": "SDC", + "21345": "QK", + "21378": "CA", + "21397": "SC", + "21414": "XS", + "21442": "SC", + "21477": "JG", + "21480": "TD", + "21484": "ZS", + "21494": "YX", + "21505": "YX", + "21512": "HG", + "21523": "XH", + "21537": "PB", + "21542": "PF", + "21549": "KH", + "21571": "E", + "21574": "DA", + "21588": "TD", + "21589": "O", + "21618": "ZC", + "21621": "KHA", + "21632": "ZJ", + "21654": "KG", + "21679": "LKG", + "21683": "KH", + "21710": "A", + "21719": "YH", + "21734": "WOE", + "21769": "A", + "21780": "WN", + "21804": "XH", + "21834": "A", + "21899": "ZD", + "21903": "RN", + "21908": "WO", + "21939": "ZC", + "21956": "SA", + "21964": "YA", + "21970": "TD", + "22003": "A", + "22031": "JG", + "22040": "XS", + "22060": "ZC", + "22066": "ZC", + "22079": "MH", + "22129": "XJ", + "22179": "XA", + "22237": "NJ", + "22244": "TD", + "22280": "JQ", + "22300": "YH", + "22313": "XW", + "22331": "YQ", + "22343": "YJ", + "22351": "PH", + "22395": "DC", + "22412": "TD", + "22484": "PB", + "22500": "PB", + "22534": "ZD", + "22549": "DH", + "22561": "PB", + "22612": "TD", + "22771": "KQ", + "22831": "HB", + "22841": "JG", + "22855": "QJ", + "22865": "XQ", + "23013": "ML", + "23081": "WM", + "23487": "SX", + "23558": "QJ", + "23561": "YW", + "23586": "YW", + "23614": "YW", + "23615": "SN", + "23631": "PB", + "23646": "ZS", + "23663": "ZT", + "23673": "YG", + "23762": "TD", + "23769": "ZS", + "23780": "QJ", + "23884": "QK", + "24055": "XH", + "24113": "DC", + "24162": "ZC", + "24191": "GA", + "24273": "QJ", + "24324": "NL", + "24377": "TD", + "24378": "QJ", + "24439": "PF", + "24554": "ZS", + "24683": "TD", + "24694": "WE", + "24733": "LK", + "24925": "TN", + "25094": "ZG", + "25100": "XQ", + "25103": "XH", + "25153": "PB", + "25170": "PB", + "25179": "KG", + "25203": "PB", + "25240": "ZS", + "25282": "FB", + "25303": "NA", + "25324": "KG", + "25341": "ZY", + "25373": "WZ", + "25375": "XJ", + "25384": "A", + "25457": "A", + "25528": "SD", + "25530": "SC", + "25552": "TD", + "25774": "ZC", + "25874": "ZC", + "26044": "YW", + "26080": "WM", + "26292": "PB", + "26333": "PB", + "26355": "ZY", + "26366": "CZ", + "26397": "ZC", + "26399": "QJ", + "26415": "ZS", + "26451": "SB", + "26526": "ZC", + "26552": "JG", + "26561": "TD", + "26588": "JG", + "26597": "CZ", + "26629": "ZS", + "26638": "YL", + "26646": "XQ", + "26653": "KG", + "26657": "XJ", + "26727": "HG", + "26894": "ZC", + "26937": "ZS", + "26946": "ZC", + "26999": "KJ", + "27099": "KJ", + "27449": "YQ", + "27481": "XS", + "27542": "ZS", + "27663": "ZS", + "27748": "TS", + "27784": "SC", + "27788": "ZD", + "27795": "TD", + "27812": "O", + "27850": "PB", + "27852": "MB", + "27895": "SL", + "27898": "PL", + "27973": "QJ", + "27981": "KH", + "27986": "HX", + "27994": "XJ", + "28044": "YC", + "28065": "WG", + "28177": "SM", + "28267": "QJ", + "28291": "KH", + "28337": "ZQ", + "28463": "TL", + "28548": "DC", + "28601": "TD", + "28689": "PB", + "28805": "JG", + "28820": "QG", + "28846": "PB", + "28952": "TD", + "28975": "ZC", + "29100": "A", + "29325": "QJ", + "29575": "SL", + "29602": "FB", + "30010": "TD", + "30044": "CX", + "30058": "PF", + "30091": "YSP", + "30111": "YN", + "30229": "XJ", + "30427": "SC", + "30465": "SX", + "30631": "YQ", + "30655": "QJ", + "30684": "QJG", + "30707": "SD", + "30729": "XH", + "30796": "LG", + "30917": "PB", + "31074": "NM", + "31085": "JZ", + "31109": "SC", + "31181": "ZC", + "31192": "MLB", + "31293": "JQ", + "31400": "YX", + "31584": "YJ", + "31896": "ZN", + "31909": "ZY", + "31995": "XJ", + "32321": "PF", + "32327": "ZY", + "32418": "HG", + "32420": "XQ", + "32421": "HG", + "32438": "LG", + "32473": "GJ", + "32488": "TD", + "32521": "QJ", + "32527": "PB", + "32562": "ZSQ", + "32564": "JZ", + "32735": "ZD", + "32793": "PB", + "33071": "PF", + "33098": "XL", + "33100": "YA", + "33152": "PB", + "33261": "CX", + "33324": "BP", + "33333": "TD", + "33406": "YA", + "33426": "WM", + "33432": "PB", + "33445": "JG", + "33486": "ZN", + "33493": "TS", + "33507": "QJ", + "33540": "QJ", + "33544": "ZC", + "33564": "XQ", + "33617": "YT", + "33632": "QJ", + "33636": "XH", + "33637": "YX", + "33694": "WG", + "33705": "PF", + "33728": "YW", + "33882": "SR", + "34067": "WM", + "34074": "YW", + "34121": "QJ", + "34255": "ZC", + "34259": "XL", + "34425": "JH", + "34430": "XH", + "34485": "KH", + "34503": "YS", + "34532": "HG", + "34552": "XS", + "34558": "YE", + "34593": "ZL", + "34660": "YQ", + "34892": "XH", + "34928": "SC", + "34999": "QJ", + "35048": "PB", + "35059": "SC", + "35098": "ZC", + "35203": "TQ", + "35265": "JX", + "35299": "JX", + "35782": "SZ", + "35828": "YS", + "35830": "E", + "35843": "TD", + "35895": "YG", + "35977": "MH", + "36158": "JG", + "36228": "QJ", + "36426": "XQ", + "36466": "DC", + "36710": "JC", + "36711": "ZYG", + "36767": "PB", + "36866": "SK", + "36951": "YW", + "37034": "YX", + "37063": "XH", + "37218": "ZC", + "37325": "ZC", + "38063": "PB", + "38079": "TD", + "38085": "QY", + "38107": "DC", + "38116": "TD", + "38123": "YD", + "38224": "HG", + "38241": "XTC", + "38271": "ZC", + "38415": "YE", + "38426": "KH", + "38461": "YD", + "38463": "AE", + "38466": "PB", + "38477": "XJ", + "38518": "YT", + "38551": "WK", + "38585": "ZC", + "38704": "XS", + "38739": "LJ", + "38761": "GJ", + "38808": "SQ", + "39048": "JG", + "39049": "XJ", + "39052": "HG", + "39076": "CZ", + "39271": "XT", + "39534": "TD", + "39552": "TD", + "39584": "PB", + "39647": "SB", + "39730": "LG", + "39748": "TPB", + "40109": "ZQ", + "40479": "ND", + "40516": "HG", + "40536": "HG", + "40583": "QJ", + "40765": "YQ", + "40784": "QJ", + "40840": "YK", + "40863": "QJG" + }; + } + + /** + * 获取拼音首字母 + * @param {String} str 输入的中文字符串 + */ + + }, { + key: "getCamelChars", + value: function getCamelChars(str) { + if (typeof str != "string") throw new Error(-1, "函数getCamelChars需要字符串类型参数!"); + var chars = new Array(); //保存中间结果的数组 + for (var i = 0, len = str.length; i < len; i++) { + //获得unicode码 + var ch = str.charAt(i); + //检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理 + chars.push(this._getChar(ch)); + } + //处理arrResult,返回所有可能的拼音首字母串数组 + var result = this._getResult(chars); + + this.options.charCase === 1 ? result = result.toLowerCase() : this.options.charCase === 2 ? result = result.toUpperCase() : {}; + return result; + } + + /** + * 获取拼音 + * @param {String} str 输入的中文字符串 + */ + + }, { + key: "getFullChars", + value: function getFullChars(str) { + var len = str.length; + var result = ""; + var reg = new RegExp('[a-zA-Z0-9\- ]'); + for (var i = 0; i < len; i++) { + var ch = str.substr(i, 1); + var unicode = ch.charCodeAt(0); + //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数 + if (unicode > 40869 || unicode < 19968) { + result += ch; + } else { + var name = this._getFullChar(ch); + if (name !== false) { + result += name; + } + } + } + + this.options.charCase === 1 ? result = result.toLowerCase() : this.options.charCase === 2 ? result = result.toUpperCase() : {}; + return result; + } + }, { + key: "_getFullChar", + value: function _getFullChar(ch) { + for (var key in this.full_dict) { + if (this.full_dict[key].indexOf(ch) != -1) { + return this._capitalize(key); + break; + } + } + return false; + } + + /** + * 首字母大写 + */ + + }, { + key: "_capitalize", + value: function _capitalize(str) { + if (str.length > 0) { + var first = str.substr(0, 1).toUpperCase(); + var spare = str.substr(1, str.length); + return first + spare; + } + } + }, { + key: "_getChar", + value: function _getChar(ch) { + var unicode = ch.charCodeAt(0); + //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数 + if (unicode > 40869 || unicode < 19968) return ch; //dealWithOthers(ch); + //检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母 + if (!this.options.checkPolyphone) return this.char_dict.charAt(unicode - 19968); + return this.polyphone[unicode] ? this.polyphone[unicode] : this.char_dict.charAt(unicode - 19968); + } + }, { + key: "_getResult", + value: function _getResult(chars) { + if (!this.options.checkPolyphone) return chars.join(''); + var result = ['']; + for (var i = 0, len = chars.length; i < len; i++) { + var str = chars[i]; + var strLen = str.length; + if (strLen == 1) { + for (var j = 0; j < result.length; j++) { + result[j] += str; + } + } else { + var swap1 = result.slice(0); + result = []; + for (var _j = 0; _j < strLen; _j++) { + //复制一个相同的arrResult + var swap2 = swap1.slice(0); + //把当前字符str[k]添加到每个元素末尾 + for (var k = 0; k < swap2.length; k++) { + swap2[k] += str.charAt(_j); + } + //把复制并修改后的数组连接到arrResult上 + result = result.concat(swap2); + } + } + } + return result; + } + }]); + + return Pinyin; +}(); + +module.exports = Pinyin; \ No newline at end of file diff --git a/node_modules/js-pinyin/index.d.ts b/node_modules/js-pinyin/index.d.ts new file mode 100644 index 0000000..eaf5385 --- /dev/null +++ b/node_modules/js-pinyin/index.d.ts @@ -0,0 +1,47 @@ +/** + * 拼音选项 + */ +interface PinyinOptions { + /** + * 是否检查多音字 + * + * @default false + */ + checkPolyphone: boolean + + /** + * 输出拼音的大小写模式 + * + * @default 0 + * @description `0` - 首字母大写 `1` - 全小写 `2` - 全大写 + */ + charCase: 0 | 1 | 2 +} + +/** + * 汉字拼音转换 + */ +declare class Pinyin { + constructor(options?: PinyinOptions) + + /** + * 设置参数 + * @param options 拼音选项 + */ + setOptions(options?: PinyinOptions): void + + /** + * 获取拼音首字母 + * @param str 输入的中文字符串 + */ + getCamelChars(str: string): string + + /** + * 获取拼音 + * @param str 输入的中文字符串 + */ + getFullChars(str: string): string +} + +declare const pinyin: Pinyin +export default pinyin diff --git a/node_modules/js-pinyin/index.js b/node_modules/js-pinyin/index.js new file mode 100644 index 0000000..257e53a --- /dev/null +++ b/node_modules/js-pinyin/index.js @@ -0,0 +1,19 @@ +/** + * @fileOverview 导出默认的实例 + * @author waterchestnut 2017/3/13 + * @module + */ +'use strict'; + +let pinyin = new (require('./dist/pinyin'))({charCase:0}); +/*pinyin.setOptions({checkPolyphone: true, charCase: 0}); +console.log(pinyin.getFullChars('管理员')) +console.log(pinyin.getCamelChars('管理员')) +console.log(pinyin.getCamelChars('1234')) +console.log(pinyin.getCamelChars('english')) +console.log(pinyin.getCamelChars('昕')) +console.log(pinyin.getCamelChars('佛')) +console.log(pinyin.getFullChars('佛')) +console.log(pinyin.getFullChars('凃一二')) +console.log(pinyin.getCamelChars('凃一二'))*/ +module.exports = pinyin; \ No newline at end of file diff --git a/node_modules/js-pinyin/package.json b/node_modules/js-pinyin/package.json new file mode 100644 index 0000000..605458f --- /dev/null +++ b/node_modules/js-pinyin/package.json @@ -0,0 +1,32 @@ +{ + "type": "commonjs", + "name": "js-pinyin", + "version": "0.2.7", + "description": "汉字转换拼音,需要es6语法(let、class等)支持,不依赖其他组件", + "private": false, + "scripts": { + "start": "node ./index", + "test": "node ./index", + "build": "babel pinyin.js -d dist" + }, + "keywords": [ + "pinyin", + "拼音", + "首字母", + "汉语拼音", + "汉字", + "es6" + ], + "devDependencies": { + "babel-cli": "^6.26.0", + "babel-preset-es2015": "^6.24.1" + }, + "repository": { + "type": "git", + "url": "git://github.com/waterchestnut/pinyin.git" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org" + }, + "license": "MIT License" +} diff --git a/node_modules/js-pinyin/pinyin.js b/node_modules/js-pinyin/pinyin.js new file mode 100644 index 0000000..bec34d4 --- /dev/null +++ b/node_modules/js-pinyin/pinyin.js @@ -0,0 +1,934 @@ +/** + * @fileOverview 汉字拼音转换主题功能 + * @author waterchestnut 2017/3/13 + * @module + */ +'use strict'; + +/** + * @typedef Option + * @type Object + * @property {Boolean} [checkPolyphone=false] 是否检查多音字 + * @property {Number} [charCase=0] 输出拼音的大小写模式,0-首字母大写;1-全小写;2-全大写 + */ + +class Pinyin { + /** + * 构造函数,设置参数并初始化数据 + * @param {Option} [options] 参数对象 + */ + constructor(options) { + this.setOptions(options); + this.initialize(); + } + + /** + * 设置参数 + * @param {Option} [options] 参数对象 + */ + setOptions(options) { + options = options || {}; + this.options = Object.assign({checkPolyphone: false, charCase: 0}, options); + } + + /** + * 初始化数据 + */ + initialize() { + this.char_dict = "YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYFZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY" + this.full_dict = { + "a": "\u554a\u963f\u9515", + "ai": "\u57c3\u6328\u54ce\u5509\u54c0\u7691\u764c\u853c\u77ee\u827e\u788d\u7231\u9698\u8bf6\u6371\u55f3\u55cc\u5ad2\u7477\u66a7\u7839\u953f\u972d", + "an": "\u978d\u6c28\u5b89\u4ffa\u6309\u6697\u5cb8\u80fa\u6848\u8c19\u57ef\u63de\u72b4\u5eb5\u6849\u94f5\u9e4c\u9878\u9eef", + "ang": "\u80ae\u6602\u76ce", + "ao": "\u51f9\u6556\u71ac\u7ff1\u8884\u50b2\u5965\u61ca\u6fb3\u5773\u62d7\u55f7\u5662\u5c99\u5ed2\u9068\u5aaa\u9a9c\u8071\u87af\u93ca\u9ccc\u93d6", + "ba": "\u82ad\u634c\u6252\u53ed\u5427\u7b06\u516b\u75a4\u5df4\u62d4\u8dcb\u9776\u628a\u8019\u575d\u9738\u7f62\u7238\u8307\u83dd\u8406\u636d\u5c9c\u705e\u6777\u94af\u7c91\u9c85\u9b43", + "bai": "\u767d\u67cf\u767e\u6446\u4f70\u8d25\u62dc\u7a17\u859c\u63b0\u97b4", + "ban": "\u6591\u73ed\u642c\u6273\u822c\u9881\u677f\u7248\u626e\u62cc\u4f34\u74e3\u534a\u529e\u7eca\u962a\u5742\u8c73\u94a3\u7622\u764d\u8228", + "bang": "\u90a6\u5e2e\u6886\u699c\u8180\u7ed1\u68d2\u78c5\u868c\u9551\u508d\u8c24\u84a1\u8783", + "bao": "\u82de\u80de\u5305\u8912\u96f9\u4fdd\u5821\u9971\u5b9d\u62b1\u62a5\u66b4\u8c79\u9c8d\u7206\u52f9\u8446\u5b80\u5b62\u7172\u9e28\u8913\u8db5\u9f85", + "bo": "\u5265\u8584\u73bb\u83e0\u64ad\u62e8\u94b5\u6ce2\u535a\u52c3\u640f\u94c2\u7b94\u4f2f\u5e1b\u8236\u8116\u818a\u6e24\u6cca\u9a73\u4eb3\u8543\u5575\u997d\u6a97\u64d8\u7934\u94b9\u9e41\u7c38\u8ddb", + "bei": "\u676f\u7891\u60b2\u5351\u5317\u8f88\u80cc\u8d1d\u94a1\u500d\u72c8\u5907\u60eb\u7119\u88ab\u5b5b\u9642\u90b6\u57e4\u84d3\u5457\u602b\u6096\u789a\u9e4e\u8919\u943e", + "ben": "\u5954\u82ef\u672c\u7b28\u755a\u574c\u951b", + "beng": "\u5d29\u7ef7\u752d\u6cf5\u8e66\u8ff8\u552a\u5623\u750f", + "bi": "\u903c\u9f3b\u6bd4\u9119\u7b14\u5f7c\u78a7\u84d6\u853d\u6bd5\u6bd9\u6bd6\u5e01\u5e87\u75f9\u95ed\u655d\u5f0a\u5fc5\u8f9f\u58c1\u81c2\u907f\u965b\u5315\u4ef3\u4ffe\u8298\u835c\u8378\u5421\u54d4\u72f4\u5eb3\u610e\u6ed7\u6fde\u5f3c\u59a3\u5a62\u5b16\u74a7\u8d32\u7540\u94cb\u79d5\u88e8\u7b5a\u7b85\u7be6\u822d\u895e\u8df8\u9ac0", + "bian": "\u97ad\u8fb9\u7f16\u8d2c\u6241\u4fbf\u53d8\u535e\u8fa8\u8fa9\u8fab\u904d\u533e\u5f01\u82c4\u5fed\u6c74\u7f0f\u7178\u782d\u78a5\u7a39\u7a86\u8759\u7b3e\u9cca", + "biao": "\u6807\u5f6a\u8198\u8868\u5a4a\u9aa0\u98d1\u98d9\u98da\u706c\u9556\u9573\u762d\u88f1\u9cd4", + "bie": "\u9cd6\u618b\u522b\u762a\u8e69\u9cd8", + "bin": "\u5f6c\u658c\u6fd2\u6ee8\u5bbe\u6448\u50a7\u6d5c\u7f24\u73a2\u6ba1\u8191\u9554\u9acc\u9b13", + "bing": "\u5175\u51b0\u67c4\u4e19\u79c9\u997c\u70b3\u75c5\u5e76\u7980\u90b4\u6452\u7ee0\u678b\u69df\u71f9", + "bu": "\u6355\u535c\u54fa\u8865\u57e0\u4e0d\u5e03\u6b65\u7c3f\u90e8\u6016\u62ca\u535f\u900b\u74ff\u6661\u949a\u91ad", + "ca": "\u64e6\u5693\u7924", + "cai": "\u731c\u88c1\u6750\u624d\u8d22\u776c\u8e29\u91c7\u5f69\u83dc\u8521", + "can": "\u9910\u53c2\u8695\u6b8b\u60ed\u60e8\u707f\u9a96\u74a8\u7cb2\u9eea", + "cang": "\u82cd\u8231\u4ed3\u6ca7\u85cf\u4f27", + "cao": "\u64cd\u7cd9\u69fd\u66f9\u8349\u8279\u5608\u6f15\u87ac\u825a", + "ce": "\u5395\u7b56\u4fa7\u518c\u6d4b\u5202\u5e3b\u607b", + "ceng": "\u5c42\u8e6d\u564c", + "cha": "\u63d2\u53c9\u832c\u8336\u67e5\u78b4\u643d\u5bdf\u5c94\u5dee\u8be7\u7339\u9987\u6c4a\u59f9\u6748\u6942\u69ce\u6aab\u9497\u9538\u9572\u8869", + "chai": "\u62c6\u67f4\u8c7a\u4faa\u8308\u7625\u867f\u9f87", + "chan": "\u6400\u63ba\u8749\u998b\u8c17\u7f20\u94f2\u4ea7\u9610\u98a4\u5181\u8c04\u8c36\u8487\u5edb\u5fcf\u6f7a\u6fb6\u5b71\u7fbc\u5a75\u5b17\u9aa3\u89c7\u7985\u9561\u88e3\u87fe\u8e94", + "chang": "\u660c\u7316\u573a\u5c1d\u5e38\u957f\u507f\u80a0\u5382\u655e\u7545\u5531\u5021\u4f25\u9b2f\u82cc\u83d6\u5f9c\u6005\u60dd\u960a\u5a3c\u5ae6\u6636\u6c05\u9cb3", + "chao": "\u8d85\u6284\u949e\u671d\u5632\u6f6e\u5de2\u5435\u7092\u600a\u7ec9\u6641\u8016", + "che": "\u8f66\u626f\u64a4\u63a3\u5f7b\u6f88\u577c\u5c6e\u7817", + "chen": "\u90f4\u81e3\u8fb0\u5c18\u6668\u5ff1\u6c89\u9648\u8d81\u886c\u79f0\u8c0c\u62bb\u55d4\u5bb8\u741b\u6987\u809c\u80c2\u789c\u9f80", + "cheng": "\u6491\u57ce\u6a59\u6210\u5448\u4e58\u7a0b\u60e9\u6f84\u8bda\u627f\u901e\u9a8b\u79e4\u57d5\u5d4a\u5fb5\u6d48\u67a8\u67fd\u6a18\u665f\u584d\u77a0\u94d6\u88ce\u86cf\u9172", + "chi": "\u5403\u75f4\u6301\u5319\u6c60\u8fdf\u5f1b\u9a70\u803b\u9f7f\u4f88\u5c3a\u8d64\u7fc5\u65a5\u70bd\u50ba\u5880\u82aa\u830c\u640b\u53f1\u54e7\u557b\u55e4\u5f73\u996c\u6cb2\u5ab8\u6555\u80dd\u7719\u7735\u9e31\u761b\u892b\u86a9\u87ad\u7b1e\u7bea\u8c49\u8e05\u8e1f\u9b51", + "chong": "\u5145\u51b2\u866b\u5d07\u5ba0\u833a\u5fe1\u61a7\u94f3\u825f", + "chou": "\u62bd\u916c\u7574\u8e0c\u7a20\u6101\u7b79\u4ec7\u7ef8\u7785\u4e11\u4fe6\u5733\u5e31\u60c6\u6eb4\u59af\u7633\u96e0\u9c8b", + "chu": "\u81ed\u521d\u51fa\u6a71\u53a8\u8e87\u9504\u96cf\u6ec1\u9664\u695a\u7840\u50a8\u77d7\u6410\u89e6\u5904\u4e8d\u520d\u61b7\u7ecc\u6775\u696e\u6a17\u870d\u8e70\u9edc", + "chuan": "\u63e3\u5ddd\u7a7f\u693d\u4f20\u8239\u5598\u4e32\u63be\u821b\u60f4\u9044\u5ddb\u6c1a\u948f\u9569\u8221", + "chuang": "\u75ae\u7a97\u5e62\u5e8a\u95ef\u521b\u6006", + "chui": "\u5439\u708a\u6376\u9524\u5782\u9672\u68f0\u69cc", + "chun": "\u6625\u693f\u9187\u5507\u6df3\u7eaf\u8822\u4fc3\u83bc\u6c8c\u80ab\u6710\u9e51\u877d", + "chuo": "\u6233\u7ef0\u851f\u8fb6\u8f8d\u955e\u8e14\u9f8a", + "ci": "\u75b5\u8328\u78c1\u96cc\u8f9e\u6148\u74f7\u8bcd\u6b64\u523a\u8d50\u6b21\u8360\u5472\u5d6f\u9e5a\u8785\u7ccd\u8d91", + "cong": "\u806a\u8471\u56f1\u5306\u4ece\u4e1b\u506c\u82c1\u6dd9\u9aa2\u742e\u7481\u679e", + "cou": "\u85ae\u6971\u8f8f\u8160", + "cu": "\u51d1\u7c97\u918b\u7c07\u731d\u6b82\u8e59", + "cuan": "\u8e7f\u7be1\u7a9c\u6c46\u64ba\u7228", + "cui": "\u6467\u5d14\u50ac\u8106\u7601\u7cb9\u6dec\u7fe0\u8403\u60b4\u7480\u69b1\u96b9", + "cun": "\u6751\u5b58\u5bf8\u78cb\u5fd6\u76b4", + "cuo": "\u64ae\u6413\u63aa\u632b\u9519\u539d\u811e\u9509\u77ec\u75e4\u9e7e\u8e49\u8e9c", + "chuai": "\u562c\u81aa\u8e39", + "cen": "\u5c91\u6d94", + "da": "\u642d\u8fbe\u7b54\u7629\u6253\u5927\u8037\u54d2\u55d2\u601b\u59b2\u75b8\u8921\u7b2a\u977c\u9791", + "dai": "\u5446\u6b79\u50a3\u6234\u5e26\u6b86\u4ee3\u8d37\u888b\u5f85\u902e\u6020\u57ed\u7519\u5454\u5cb1\u8fe8\u902f\u9a80\u7ed0\u73b3\u9edb", + "dan": "\u803d\u62c5\u4e39\u5355\u90f8\u63b8\u80c6\u65e6\u6c2e\u4f46\u60ee\u6de1\u8bde\u5f39\u86cb\u4ebb\u510b\u5369\u840f\u5556\u6fb9\u6a90\u6b9a\u8d55\u7708\u7605\u8043\u7baa", + "dang": "\u5f53\u6321\u515a\u8361\u6863\u8c20\u51fc\u83ea\u5b95\u7800\u94db\u88c6", + "dao": "\u5200\u6363\u8e48\u5012\u5c9b\u7977\u5bfc\u5230\u7a3b\u60bc\u9053\u76d7\u53e8\u5541\u5fc9\u6d2e\u6c18\u7118\u5fd1\u7e9b", + "de": "\u5fb7\u5f97\u7684\u951d", + "deng": "\u8e6c\u706f\u767b\u7b49\u77aa\u51f3\u9093\u5654\u5d9d\u6225\u78f4\u956b\u7c26", + "di": "\u5824\u4f4e\u6ef4\u8fea\u654c\u7b1b\u72c4\u6da4\u7fdf\u5ae1\u62b5\u5e95\u5730\u8482\u7b2c\u5e1d\u5f1f\u9012\u7f14\u6c10\u7c74\u8bcb\u8c1b\u90b8\u577b\u839c\u837b\u5600\u5a23\u67e2\u68e3\u89cc\u7825\u78b2\u7747\u955d\u7f9d\u9ab6", + "dia": "\u55f2", + "dian": "\u98a0\u6382\u6ec7\u7898\u70b9\u5178\u975b\u57ab\u7535\u4f43\u7538\u5e97\u60e6\u5960\u6dc0\u6bbf\u4e36\u963d\u576b\u57dd\u5dc5\u73b7\u765c\u766b\u7c1f\u8e2e", + "diao": "\u7889\u53fc\u96d5\u51cb\u5201\u6389\u540a\u9493\u8c03\u8f7a\u94de\u8729\u7c9c\u8c82", + "die": "\u8dcc\u7239\u789f\u8776\u8fed\u8c0d\u53e0\u4f5a\u57a4\u581e\u63f2\u558b\u6e2b\u8f76\u7252\u74de\u8936\u800b\u8e40\u9cbd\u9cce", + "ding": "\u4e01\u76ef\u53ee\u9489\u9876\u9f0e\u952d\u5b9a\u8ba2\u4e22\u4ec3\u5576\u738e\u815a\u7887\u753a\u94e4\u7594\u8035\u914a", + "dong": "\u4e1c\u51ac\u8463\u61c2\u52a8\u680b\u4f97\u606b\u51bb\u6d1e\u578c\u549a\u5cbd\u5cd2\u5902\u6c21\u80e8\u80f4\u7850\u9e2b", + "dou": "\u515c\u6296\u6597\u9661\u8c46\u9017\u75d8\u8538\u94ad\u7aa6\u7aac\u86aa\u7bfc\u9161", + "du": "\u90fd\u7763\u6bd2\u728a\u72ec\u8bfb\u5835\u7779\u8d4c\u675c\u9540\u809a\u5ea6\u6e21\u5992\u828f\u561f\u6e0e\u691f\u6a50\u724d\u8839\u7b03\u9ad1\u9ee9", + "duan": "\u7aef\u77ed\u953b\u6bb5\u65ad\u7f0e\u5f56\u6934\u7145\u7c16", + "dui": "\u5806\u5151\u961f\u5bf9\u603c\u619d\u7893", + "dun": "\u58a9\u5428\u8e72\u6566\u987f\u56e4\u949d\u76fe\u9041\u7096\u7818\u7905\u76f9\u9566\u8db8", + "duo": "\u6387\u54c6\u591a\u593a\u579b\u8eb2\u6735\u8dfa\u8235\u5241\u60f0\u5815\u5484\u54da\u7f0d\u67c1\u94ce\u88f0\u8e31", + "e": "\u86fe\u5ce8\u9e45\u4fc4\u989d\u8bb9\u5a25\u6076\u5384\u627c\u904f\u9102\u997f\u5669\u8c14\u57a9\u57ad\u82ca\u83aa\u843c\u5443\u6115\u5c59\u5a40\u8f6d\u66f7\u816d\u786a\u9507\u9537\u9e57\u989a\u9cc4", + "en": "\u6069\u84bd\u6441\u5514\u55ef", + "er": "\u800c\u513f\u8033\u5c14\u9975\u6d31\u4e8c\u8d30\u8fe9\u73e5\u94d2\u9e38\u9c95", + "fa": "\u53d1\u7f5a\u7b4f\u4f10\u4e4f\u9600\u6cd5\u73d0\u57a1\u781d", + "fan": "\u85e9\u5e06\u756a\u7ffb\u6a0a\u77fe\u9492\u7e41\u51e1\u70e6\u53cd\u8fd4\u8303\u8d29\u72af\u996d\u6cdb\u8629\u5e61\u72ad\u68b5\u6535\u71d4\u7548\u8e6f", + "fang": "\u574a\u82b3\u65b9\u80aa\u623f\u9632\u59a8\u4eff\u8bbf\u7eba\u653e\u531a\u90a1\u5f77\u94ab\u822b\u9c82", + "fei": "\u83f2\u975e\u5561\u98de\u80a5\u532a\u8bfd\u5420\u80ba\u5e9f\u6cb8\u8d39\u82be\u72d2\u60b1\u6ddd\u5983\u7ecb\u7eef\u69a7\u8153\u6590\u6249\u7953\u7829\u9544\u75f1\u871a\u7bda\u7fe1\u970f\u9cb1", + "fen": "\u82ac\u915a\u5429\u6c1b\u5206\u7eb7\u575f\u711a\u6c7e\u7c89\u594b\u4efd\u5fff\u6124\u7caa\u507e\u7035\u68fc\u610d\u9cbc\u9f22", + "feng": "\u4e30\u5c01\u67ab\u8702\u5cf0\u950b\u98ce\u75af\u70fd\u9022\u51af\u7f1d\u8bbd\u5949\u51e4\u4ff8\u9146\u8451\u6ca3\u781c", + "fo": "\u4F5B\u4ECF\u5772\u68BB\u4EF8", + "fou": "\u7f36", + "fu": "\u4f5b\u5426\u592b\u6577\u80a4\u5b75\u6276\u62c2\u8f90\u5e45\u6c1f\u7b26\u4f0f\u4fd8\u670d\u6d6e\u6daa\u798f\u88b1\u5f17\u752b\u629a\u8f85\u4fef\u91dc\u65a7\u812f\u8151\u5e9c\u8150\u8d74\u526f\u8986\u8d4b\u590d\u5085\u4ed8\u961c\u7236\u8179\u8d1f\u5bcc\u8ba3\u9644\u5987\u7f1a\u5490\u5310\u51eb\u90db\u8299\u82fb\u832f\u83a9\u83d4\u544b\u5e5e\u6ecf\u8274\u5b5a\u9a78\u7ec2\u6874\u8d59\u9efb\u9efc\u7f58\u7a03\u99a5\u864d\u86a8\u8709\u8760\u876e\u9eb8\u8dba\u8dd7\u9cc6", + "ga": "\u5676\u560e\u86e4\u5c2c\u5477\u5c15\u5c1c\u65ee\u9486", + "gai": "\u8be5\u6539\u6982\u9499\u76d6\u6e89\u4e10\u9654\u5793\u6224\u8d45\u80f2", + "gan": "\u5e72\u7518\u6746\u67d1\u7aff\u809d\u8d76\u611f\u79c6\u6562\u8d63\u5769\u82f7\u5c34\u64c0\u6cd4\u6de6\u6f89\u7ec0\u6a44\u65f0\u77f8\u75b3\u9150", + "gang": "\u5188\u521a\u94a2\u7f38\u809b\u7eb2\u5c97\u6e2f\u6206\u7f61\u9883\u7b7b", + "gong": "\u6760\u5de5\u653b\u529f\u606d\u9f9a\u4f9b\u8eac\u516c\u5bab\u5f13\u5de9\u6c5e\u62f1\u8d21\u5171\u857b\u5efe\u54a3\u73d9\u80b1\u86a3\u86e9\u89e5", + "gao": "\u7bd9\u768b\u9ad8\u818f\u7f94\u7cd5\u641e\u9550\u7a3f\u544a\u777e\u8bf0\u90dc\u84bf\u85c1\u7f1f\u69d4\u69c1\u6772\u9506", + "ge": "\u54e5\u6b4c\u6401\u6208\u9e3d\u80f3\u7599\u5272\u9769\u845b\u683c\u9601\u9694\u94ec\u4e2a\u5404\u9b32\u4ee1\u54ff\u5865\u55dd\u7ea5\u643f\u8188\u784c\u94ea\u9549\u88bc\u988c\u867c\u8238\u9abc\u9ac2", + "gei": "\u7ed9", + "gen": "\u6839\u8ddf\u4e98\u831b\u54cf\u826e", + "geng": "\u8015\u66f4\u5e9a\u7fb9\u57c2\u803f\u6897\u54fd\u8d53\u9ca0", + "gou": "\u94a9\u52fe\u6c9f\u82df\u72d7\u57a2\u6784\u8d2d\u591f\u4f5d\u8bdf\u5ca3\u9058\u5abe\u7f11\u89cf\u5f40\u9e32\u7b31\u7bdd\u97b2", + "gu": "\u8f9c\u83c7\u5495\u7b8d\u4f30\u6cbd\u5b64\u59d1\u9f13\u53e4\u86ca\u9aa8\u8c37\u80a1\u6545\u987e\u56fa\u96c7\u560f\u8bc2\u83f0\u54cc\u5d2e\u6c69\u688f\u8f71\u726f\u727f\u80cd\u81cc\u6bc2\u77bd\u7f5f\u94b4\u9522\u74e0\u9e2a\u9e44\u75fc\u86c4\u9164\u89da\u9cb4\u9ab0\u9e58", + "gua": "\u522e\u74dc\u5250\u5be1\u6302\u8902\u5366\u8bd6\u5471\u681d\u9e39", + "guai": "\u4e56\u62d0\u602a\u54d9", + "guan": "\u68fa\u5173\u5b98\u51a0\u89c2\u7ba1\u9986\u7f50\u60ef\u704c\u8d2f\u500c\u839e\u63bc\u6dab\u76e5\u9e73\u9ccf", + "guang": "\u5149\u5e7f\u901b\u72b7\u6844\u80f1\u7592", + "gui": "\u7470\u89c4\u572d\u7845\u5f52\u9f9f\u95fa\u8f68\u9b3c\u8be1\u7678\u6842\u67dc\u8dea\u8d35\u523d\u5326\u523f\u5e8b\u5b84\u59ab\u6867\u7085\u6677\u7688\u7c0b\u9c91\u9cdc", + "gun": "\u8f8a\u6eda\u68cd\u4e28\u886e\u7ef2\u78d9\u9ca7", + "guo": "\u9505\u90ed\u56fd\u679c\u88f9\u8fc7\u9998\u8803\u57da\u63b4\u5459\u56d7\u5e3c\u5d1e\u7313\u6901\u8662\u951e\u8052\u872e\u873e\u8748", + "ha": "\u54c8", + "hai": "\u9ab8\u5b69\u6d77\u6c26\u4ea5\u5bb3\u9a87\u54b4\u55e8\u988f\u91a2", + "han": "\u9163\u61a8\u90af\u97e9\u542b\u6db5\u5bd2\u51fd\u558a\u7f55\u7ff0\u64bc\u634d\u65f1\u61be\u608d\u710a\u6c57\u6c49\u9097\u83e1\u6496\u961a\u701a\u6657\u7113\u9894\u86b6\u9f3e", + "hen": "\u592f\u75d5\u5f88\u72e0\u6068", + "hang": "\u676d\u822a\u6c86\u7ed7\u73e9\u6841", + "hao": "\u58d5\u568e\u8c6a\u6beb\u90dd\u597d\u8017\u53f7\u6d69\u8585\u55e5\u5686\u6fe0\u704f\u660a\u7693\u98a2\u869d", + "he": "\u5475\u559d\u8377\u83cf\u6838\u79be\u548c\u4f55\u5408\u76d2\u8c89\u9602\u6cb3\u6db8\u8d6b\u8910\u9e64\u8d3a\u8bc3\u52be\u58d1\u85ff\u55d1\u55ec\u9616\u76cd\u86b5\u7fee", + "hei": "\u563f\u9ed1", + "heng": "\u54fc\u4ea8\u6a2a\u8861\u6052\u8a07\u8605", + "hong": "\u8f70\u54c4\u70d8\u8679\u9e3f\u6d2a\u5b8f\u5f18\u7ea2\u9ec9\u8ba7\u836d\u85a8\u95f3\u6cd3", + "hou": "\u5589\u4faf\u7334\u543c\u539a\u5019\u540e\u5820\u5f8c\u9005\u760a\u7bcc\u7cc7\u9c8e\u9aba", + "hu": "\u547c\u4e4e\u5ffd\u745a\u58f6\u846b\u80e1\u8774\u72d0\u7cca\u6e56\u5f27\u864e\u552c\u62a4\u4e92\u6caa\u6237\u51b1\u553f\u56eb\u5cb5\u7322\u6019\u60da\u6d52\u6ef9\u7425\u69f2\u8f77\u89f3\u70c0\u7173\u623d\u6248\u795c\u9e55\u9e71\u7b0f\u9190\u659b", + "hua": "\u82b1\u54d7\u534e\u733e\u6ed1\u753b\u5212\u5316\u8bdd\u5290\u6d4d\u9a85\u6866\u94e7\u7a1e", + "huai": "\u69d0\u5f8a\u6000\u6dee\u574f\u8fd8\u8e1d", + "huan": "\u6b22\u73af\u6853\u7f13\u6362\u60a3\u5524\u75ea\u8c62\u7115\u6da3\u5ba6\u5e7b\u90c7\u5942\u57b8\u64d0\u571c\u6d39\u6d63\u6f36\u5bf0\u902d\u7f33\u953e\u9ca9\u9b1f", + "huang": "\u8352\u614c\u9ec4\u78fa\u8757\u7c27\u7687\u51f0\u60f6\u714c\u6643\u5e4c\u604d\u8c0e\u968d\u5fa8\u6e5f\u6f62\u9051\u749c\u8093\u7640\u87e5\u7bc1\u9cc7", + "hui": "\u7070\u6325\u8f89\u5fbd\u6062\u86d4\u56de\u6bc1\u6094\u6167\u5349\u60e0\u6666\u8d3f\u79fd\u4f1a\u70e9\u6c47\u8bb3\u8bf2\u7ed8\u8bd9\u8334\u835f\u8559\u54d5\u5599\u96b3\u6d04\u5f57\u7f0b\u73f2\u6656\u605a\u867a\u87ea\u9ebe", + "hun": "\u8364\u660f\u5a5a\u9b42\u6d51\u6df7\u8be8\u9984\u960d\u6eb7\u7f17", + "huo": "\u8c41\u6d3b\u4f19\u706b\u83b7\u6216\u60d1\u970d\u8d27\u7978\u6509\u56af\u5925\u94ac\u952a\u956c\u8020\u8816", + "ji": "\u51fb\u573e\u57fa\u673a\u7578\u7a3d\u79ef\u7b95\u808c\u9965\u8ff9\u6fc0\u8ba5\u9e21\u59ec\u7ee9\u7f09\u5409\u6781\u68d8\u8f91\u7c4d\u96c6\u53ca\u6025\u75be\u6c72\u5373\u5ac9\u7ea7\u6324\u51e0\u810a\u5df1\u84df\u6280\u5180\u5b63\u4f0e\u796d\u5242\u60b8\u6d4e\u5bc4\u5bc2\u8ba1\u8bb0\u65e2\u5fcc\u9645\u5993\u7ee7\u7eaa\u5c45\u4e0c\u4e69\u525e\u4f76\u4f74\u8114\u58bc\u82a8\u82b0\u8401\u84ba\u857a\u638e\u53fd\u54ad\u54dc\u5527\u5c8c\u5d74\u6d0e\u5f50\u5c50\u9aa5\u757f\u7391\u696b\u6b9b\u621f\u6222\u8d4d\u89ca\u7284\u9f51\u77f6\u7f81\u5d47\u7a37\u7620\u7635\u866e\u7b08\u7b04\u66a8\u8dfb\u8dfd\u9701\u9c9a\u9cab\u9afb\u9e82", + "jia": "\u5609\u67b7\u5939\u4f73\u5bb6\u52a0\u835a\u988a\u8d3e\u7532\u94be\u5047\u7a3c\u4ef7\u67b6\u9a7e\u5ac1\u4f3d\u90cf\u62ee\u5cac\u6d43\u8fe6\u73c8\u621b\u80db\u605d\u94d7\u9553\u75c2\u86f1\u7b33\u8888\u8dcf", + "jian": "\u6b7c\u76d1\u575a\u5c16\u7b3a\u95f4\u714e\u517c\u80a9\u8270\u5978\u7f04\u8327\u68c0\u67ec\u78b1\u7877\u62e3\u6361\u7b80\u4fed\u526a\u51cf\u8350\u69db\u9274\u8df5\u8d31\u89c1\u952e\u7bad\u4ef6\u5065\u8230\u5251\u996f\u6e10\u6e85\u6da7\u5efa\u50ed\u8c0f\u8c2b\u83c5\u84b9\u641b\u56dd\u6e54\u8e47\u8b07\u7f23\u67a7\u67d9\u6957\u620b\u622c\u726e\u728d\u6bfd\u8171\u7751\u950f\u9e63\u88e5\u7b15\u7bb4\u7fe6\u8dbc\u8e3a\u9ca3\u97af", + "jiang": "\u50f5\u59dc\u5c06\u6d46\u6c5f\u7586\u848b\u6868\u5956\u8bb2\u5320\u9171\u964d\u8333\u6d1a\u7edb\u7f30\u729f\u7913\u8029\u7ce8\u8c47", + "jiao": "\u8549\u6912\u7901\u7126\u80f6\u4ea4\u90ca\u6d47\u9a84\u5a07\u56bc\u6405\u94f0\u77eb\u4fa5\u811a\u72e1\u89d2\u997a\u7f34\u7ede\u527f\u6559\u9175\u8f7f\u8f83\u53eb\u4f7c\u50ec\u832d\u6322\u564d\u5ce4\u5fbc\u59e3\u7e9f\u656b\u768e\u9e6a\u86df\u91ae\u8de4\u9c9b", + "jie": "\u7a96\u63ed\u63a5\u7686\u79f8\u8857\u9636\u622a\u52ab\u8282\u6854\u6770\u6377\u776b\u7aed\u6d01\u7ed3\u89e3\u59d0\u6212\u85c9\u82a5\u754c\u501f\u4ecb\u75a5\u8beb\u5c4a\u5048\u8ba6\u8bd8\u5588\u55df\u736c\u5a55\u5b51\u6840\u7352\u78a3\u9534\u7596\u88b7\u9889\u86a7\u7faf\u9c92\u9ab1\u9aeb", + "jin": "\u5dfe\u7b4b\u65a4\u91d1\u4eca\u6d25\u895f\u7d27\u9526\u4ec5\u8c28\u8fdb\u9773\u664b\u7981\u8fd1\u70ec\u6d78\u5c3d\u537a\u8369\u5807\u5664\u9991\u5ed1\u5997\u7f19\u747e\u69ff\u8d46\u89d0\u9485\u9513\u887f\u77dc", + "jing": "\u52b2\u8346\u5162\u830e\u775b\u6676\u9cb8\u4eac\u60ca\u7cbe\u7cb3\u7ecf\u4e95\u8b66\u666f\u9888\u9759\u5883\u656c\u955c\u5f84\u75c9\u9756\u7adf\u7ade\u51c0\u522d\u5106\u9631\u83c1\u734d\u61ac\u6cfe\u8ff3\u5f2a\u5a67\u80bc\u80eb\u8148\u65cc", + "jiong": "\u70af\u7a98\u5182\u8fe5\u6243", + "jiu": "\u63ea\u7a76\u7ea0\u7396\u97ed\u4e45\u7078\u4e5d\u9152\u53a9\u6551\u65e7\u81fc\u8205\u548e\u5c31\u759a\u50e6\u557e\u9604\u67e9\u6855\u9e6b\u8d73\u9b0f", + "ju": "\u97a0\u62d8\u72d9\u75bd\u9a79\u83ca\u5c40\u5480\u77e9\u4e3e\u6cae\u805a\u62d2\u636e\u5de8\u5177\u8ddd\u8e1e\u952f\u4ff1\u53e5\u60e7\u70ac\u5267\u5028\u8bb5\u82e3\u82f4\u8392\u63ac\u907d\u5c66\u741a\u67b8\u6910\u6998\u6989\u6a58\u728b\u98d3\u949c\u9514\u7aad\u88fe\u8d84\u91b5\u8e3d\u9f83\u96ce\u97ab", + "juan": "\u6350\u9e43\u5a1f\u5026\u7737\u5377\u7ee2\u9104\u72f7\u6d93\u684a\u8832\u9529\u954c\u96bd", + "jue": "\u6485\u652b\u6289\u6398\u5014\u7235\u89c9\u51b3\u8bc0\u7edd\u53a5\u5282\u8c32\u77cd\u8568\u5658\u5d1b\u7357\u5b53\u73cf\u6877\u6a5b\u721d\u9562\u8e76\u89d6", + "jun": "\u5747\u83cc\u94a7\u519b\u541b\u5cfb\u4fca\u7ae3\u6d5a\u90e1\u9a8f\u6343\u72fb\u76b2\u7b60\u9e87", + "ka": "\u5580\u5496\u5361\u4f67\u5494\u80e9", + "ke": "\u54af\u5777\u82db\u67ef\u68f5\u78d5\u9897\u79d1\u58f3\u54b3\u53ef\u6e34\u514b\u523b\u5ba2\u8bfe\u5ca2\u606a\u6e98\u9a92\u7f02\u73c2\u8f72\u6c2a\u778c\u94b6\u75b4\u7aa0\u874c\u9ac1", + "kai": "\u5f00\u63e9\u6977\u51ef\u6168\u5240\u57b2\u8488\u5ffe\u607a\u94e0\u950e", + "kan": "\u520a\u582a\u52d8\u574e\u780d\u770b\u4f83\u51f5\u83b0\u83b6\u6221\u9f9b\u77b0", + "kang": "\u5eb7\u6177\u7ce0\u625b\u6297\u4ea2\u7095\u5751\u4f09\u95f6\u94aa", + "kao": "\u8003\u62f7\u70e4\u9760\u5c3b\u6832\u7292\u94d0", + "ken": "\u80af\u5543\u57a6\u6073\u57a0\u88c9\u9880", + "keng": "\u542d\u5fd0\u94ff", + "kong": "\u7a7a\u6050\u5b54\u63a7\u5025\u5d06\u7b9c", + "kou": "\u62a0\u53e3\u6263\u5bc7\u82a4\u853b\u53e9\u770d\u7b58", + "ku": "\u67af\u54ed\u7a9f\u82e6\u9177\u5e93\u88e4\u5233\u5800\u55be\u7ed4\u9ab7", + "kua": "\u5938\u57ae\u630e\u8de8\u80ef\u4f89", + "kuai": "\u5757\u7b77\u4fa9\u5feb\u84af\u90d0\u8489\u72ef\u810d", + "kuan": "\u5bbd\u6b3e\u9acb", + "kuang": "\u5321\u7b50\u72c2\u6846\u77ff\u7736\u65f7\u51b5\u8bd3\u8bf3\u909d\u5739\u593c\u54d0\u7ea9\u8d36", + "kui": "\u4e8f\u76d4\u5cbf\u7aa5\u8475\u594e\u9b41\u5080\u9988\u6127\u6e83\u9997\u532e\u5914\u9697\u63c6\u55b9\u559f\u609d\u6126\u9615\u9035\u668c\u777d\u8069\u8770\u7bd1\u81fe\u8dec", + "kun": "\u5764\u6606\u6346\u56f0\u6083\u9603\u7428\u951f\u918c\u9cb2\u9ae1", + "kuo": "\u62ec\u6269\u5ed3\u9614\u86de", + "la": "\u5783\u62c9\u5587\u8721\u814a\u8fa3\u5566\u524c\u647a\u908b\u65ef\u782c\u760c", + "lai": "\u83b1\u6765\u8d56\u5d03\u5f95\u6d9e\u6fd1\u8d49\u7750\u94fc\u765e\u7c41", + "lan": "\u84dd\u5a6a\u680f\u62e6\u7bee\u9611\u5170\u6f9c\u8c30\u63fd\u89c8\u61d2\u7f06\u70c2\u6ee5\u5549\u5c9a\u61d4\u6f24\u6984\u6593\u7f71\u9567\u8934", + "lang": "\u7405\u6994\u72fc\u5eca\u90ce\u6717\u6d6a\u83a8\u8497\u5577\u9606\u9512\u7a02\u8782", + "lao": "\u635e\u52b3\u7262\u8001\u4f6c\u59e5\u916a\u70d9\u6d9d\u5520\u5d02\u6833\u94d1\u94f9\u75e8\u91aa", + "le": "\u52d2\u4e50\u808b\u4ec2\u53fb\u561e\u6cd0\u9cd3", + "lei": "\u96f7\u956d\u857e\u78ca\u7d2f\u5121\u5792\u64c2\u7c7b\u6cea\u7fb8\u8bd4\u837d\u54a7\u6f2f\u5ad8\u7f27\u6a91\u8012\u9179", + "ling": "\u68f1\u51b7\u62ce\u73b2\u83f1\u96f6\u9f84\u94c3\u4f36\u7f9a\u51cc\u7075\u9675\u5cad\u9886\u53e6\u4ee4\u9143\u5844\u82d3\u5464\u56f9\u6ce0\u7eeb\u67c3\u68c2\u74f4\u8046\u86c9\u7fce\u9cae", + "leng": "\u695e\u6123", + "li": "\u5398\u68a8\u7281\u9ece\u7bf1\u72f8\u79bb\u6f13\u7406\u674e\u91cc\u9ca4\u793c\u8389\u8354\u540f\u6817\u4e3d\u5389\u52b1\u783e\u5386\u5229\u5088\u4f8b\u4fd0\u75e2\u7acb\u7c92\u6ca5\u96b6\u529b\u7483\u54e9\u4fea\u4fda\u90e6\u575c\u82c8\u8385\u84e0\u85dc\u6369\u5456\u5533\u55b1\u7301\u6ea7\u6fa7\u9026\u5a0c\u5ae0\u9a8a\u7f21\u73de\u67a5\u680e\u8f79\u623e\u783a\u8a48\u7f79\u9502\u9e42\u75a0\u75ac\u86ce\u870a\u8821\u7b20\u7be5\u7c9d\u91b4\u8dde\u96f3\u9ca1\u9ce2\u9ee7", + "lian": "\u4fe9\u8054\u83b2\u8fde\u9570\u5ec9\u601c\u6d9f\u5e18\u655b\u8138\u94fe\u604b\u70bc\u7ec3\u631b\u8539\u5941\u6f4b\u6fc2\u5a08\u740f\u695d\u6b93\u81c1\u81a6\u88e2\u880a\u9ca2", + "liang": "\u7cae\u51c9\u6881\u7cb1\u826f\u4e24\u8f86\u91cf\u667e\u4eae\u8c05\u589a\u690b\u8e09\u9753\u9b49", + "liao": "\u64a9\u804a\u50da\u7597\u71ce\u5be5\u8fbd\u6f66\u4e86\u6482\u9563\u5ed6\u6599\u84fc\u5c25\u5639\u7360\u5bee\u7f2d\u948c\u9e69\u8022", + "lie": "\u5217\u88c2\u70c8\u52a3\u730e\u51bd\u57d2\u6d0c\u8d94\u8e90\u9b23", + "lin": "\u7433\u6797\u78f7\u9716\u4e34\u90bb\u9cde\u6dcb\u51db\u8d41\u541d\u853a\u5d99\u5eea\u9074\u6aa9\u8f9a\u77b5\u7cbc\u8e8f\u9e9f", + "liu": "\u6e9c\u7409\u69b4\u786b\u998f\u7559\u5218\u7624\u6d41\u67f3\u516d\u62a1\u507b\u848c\u6cd6\u6d4f\u905b\u9a9d\u7efa\u65d2\u7198\u950d\u954f\u9e68\u938f", + "long": "\u9f99\u804b\u5499\u7b3c\u7abf\u9686\u5784\u62e2\u9647\u5f04\u5785\u830f\u6cf7\u73d1\u680a\u80e7\u783b\u7643", + "lou": "\u697c\u5a04\u6402\u7bd3\u6f0f\u964b\u55bd\u5d5d\u9542\u7618\u8027\u877c\u9ac5", + "lu": "\u82a6\u5362\u9885\u5e90\u7089\u63b3\u5364\u864f\u9c81\u9e93\u788c\u9732\u8def\u8d42\u9e7f\u6f5e\u7984\u5f55\u9646\u622e\u5786\u6445\u64b8\u565c\u6cf8\u6e0c\u6f09\u7490\u680c\u6a79\u8f73\u8f82\u8f98\u6c07\u80ea\u9565\u9e2c\u9e6d\u7c0f\u823b\u9c88", + "lv": "\u9a74\u5415\u94dd\u4fa3\u65c5\u5c65\u5c61\u7f15\u8651\u6c2f\u5f8b\u7387\u6ee4\u7eff\u634b\u95fe\u6988\u8182\u7a06\u891b", + "luan": "\u5ce6\u5b6a\u6ee6\u5375\u4e71\u683e\u9e3e\u92ae", + "lue": "\u63a0\u7565\u950a", + "lun": "\u8f6e\u4f26\u4ed1\u6ca6\u7eb6\u8bba\u56f5", + "luo": "\u841d\u87ba\u7f57\u903b\u9523\u7ba9\u9aa1\u88f8\u843d\u6d1b\u9a86\u7edc\u502e\u8366\u645e\u7321\u6cfa\u6924\u8136\u9559\u7630\u96d2", + "ma": "\u5988\u9ebb\u739b\u7801\u8682\u9a6c\u9a82\u561b\u5417\u551b\u72b8\u5b37\u6769\u9ebd", + "mai": "\u57cb\u4e70\u9ea6\u5356\u8fc8\u8109\u52a2\u836c\u54aa\u973e", + "man": "\u7792\u9992\u86ee\u6ee1\u8513\u66fc\u6162\u6f2b\u8c29\u5881\u5e54\u7f26\u71b3\u9558\u989f\u87a8\u9cd7\u9794", + "mang": "\u8292\u832b\u76f2\u5fd9\u83bd\u9099\u6f2d\u6726\u786d\u87d2", + "meng": "\u6c13\u840c\u8499\u6aac\u76df\u9530\u731b\u68a6\u5b5f\u52d0\u750d\u77a2\u61f5\u791e\u867b\u8722\u8813\u824b\u8268\u9efe", + "miao": "\u732b\u82d7\u63cf\u7784\u85d0\u79d2\u6e3a\u5e99\u5999\u55b5\u9088\u7f08\u7f2a\u676a\u6dfc\u7707\u9e4b\u8731", + "mao": "\u8305\u951a\u6bdb\u77db\u94c6\u536f\u8302\u5192\u5e3d\u8c8c\u8d38\u4f94\u88a4\u52d6\u8306\u5cc1\u7441\u6634\u7266\u8004\u65c4\u61cb\u7780\u86d1\u8765\u87ca\u9ae6", + "me": "\u4e48", + "mei": "\u73ab\u679a\u6885\u9176\u9709\u7164\u6ca1\u7709\u5a92\u9541\u6bcf\u7f8e\u6627\u5bd0\u59b9\u5a9a\u5776\u8393\u5d4b\u7338\u6d7c\u6e44\u6963\u9545\u9e5b\u8882\u9b45", + "men": "\u95e8\u95f7\u4eec\u626a\u739f\u7116\u61d1\u9494", + "mi": "\u772f\u919a\u9761\u7cdc\u8ff7\u8c1c\u5f25\u7c73\u79d8\u89c5\u6ccc\u871c\u5bc6\u5e42\u8288\u5196\u8c27\u863c\u5627\u7315\u736f\u6c68\u5b93\u5f2d\u8112\u6549\u7cf8\u7e3b\u9e8b", + "mian": "\u68c9\u7720\u7ef5\u5195\u514d\u52c9\u5a29\u7f05\u9762\u6c94\u6e4e\u817c\u7704", + "mie": "\u8511\u706d\u54a9\u881b\u7bfe", + "min": "\u6c11\u62bf\u76bf\u654f\u60af\u95fd\u82e0\u5cb7\u95f5\u6cef\u73c9", + "ming": "\u660e\u879f\u9e23\u94ed\u540d\u547d\u51a5\u8317\u6e9f\u669d\u7791\u9169", + "miu": "\u8c2c", + "mo": "\u6478\u6479\u8611\u6a21\u819c\u78e8\u6469\u9b54\u62b9\u672b\u83ab\u58a8\u9ed8\u6cab\u6f20\u5bde\u964c\u8c1f\u8309\u84e6\u998d\u5aeb\u9546\u79e3\u763c\u8031\u87c6\u8c8a\u8c98", + "mou": "\u8c0b\u725f\u67d0\u53b6\u54de\u5a7a\u7738\u936a", + "mu": "\u62c7\u7261\u4ea9\u59c6\u6bcd\u5893\u66ae\u5e55\u52df\u6155\u6728\u76ee\u7766\u7267\u7a46\u4eeb\u82dc\u5452\u6c90\u6bea\u94bc", + "na": "\u62ff\u54ea\u5450\u94a0\u90a3\u5a1c\u7eb3\u5185\u637a\u80ad\u954e\u8872\u7bac", + "nai": "\u6c16\u4e43\u5976\u8010\u5948\u9f10\u827f\u8418\u67f0", + "nan": "\u5357\u7537\u96be\u56ca\u5583\u56e1\u6960\u8169\u877b\u8d67", + "nang": "\u652e\u54dd\u56d4\u9995\u66e9", + "nao": "\u6320\u8111\u607c\u95f9\u5b6c\u57b4\u7331\u7459\u7847\u94d9\u86f2", + "ne": "\u6dd6\u5462\u8bb7", + "nei": "\u9981", + "nen": "\u5ae9\u80fd\u6798\u6041", + "ni": "\u59ae\u9713\u502a\u6ce5\u5c3c\u62df\u4f60\u533f\u817b\u9006\u6eba\u4f32\u576d\u730a\u6029\u6ee0\u6635\u65ce\u7962\u615d\u7768\u94cc\u9cb5", + "nian": "\u852b\u62c8\u5e74\u78be\u64b5\u637b\u5ff5\u5eff\u8f87\u9ecf\u9c87\u9cb6", + "niang": "\u5a18\u917f", + "niao": "\u9e1f\u5c3f\u8311\u5b32\u8132\u8885", + "nie": "\u634f\u8042\u5b7d\u556e\u954a\u954d\u6d85\u4e5c\u9667\u8616\u55eb\u8080\u989e\u81ec\u8e51", + "nin": "\u60a8\u67e0", + "ning": "\u72de\u51dd\u5b81\u62e7\u6cde\u4f5e\u84e5\u549b\u752f\u804d", + "niu": "\u725b\u626d\u94ae\u7ebd\u72c3\u5ff8\u599e\u86b4", + "nong": "\u8113\u6d53\u519c\u4fac", + "nu": "\u5974\u52aa\u6012\u5476\u5e11\u5f29\u80ec\u5b65\u9a7d", + "nv": "\u5973\u6067\u9495\u8844", + "nuan": "\u6696", + "nuenue": "\u8650", + "nue": "\u759f\u8c11", + "nuo": "\u632a\u61e6\u7cef\u8bfa\u50a9\u6426\u558f\u9518", + "o": "\u5594", + "ou": "\u54e6\u6b27\u9e25\u6bb4\u85d5\u5455\u5076\u6ca4\u6004\u74ef\u8026", + "pa": "\u556a\u8db4\u722c\u5e15\u6015\u7436\u8469\u7b62", + "pai": "\u62cd\u6392\u724c\u5f98\u6e43\u6d3e\u4ff3\u848e", + "pan": "\u6500\u6f58\u76d8\u78d0\u76fc\u7554\u5224\u53db\u723f\u6cee\u88a2\u897b\u87e0\u8e52", + "pang": "\u4e53\u5e9e\u65c1\u802a\u80d6\u6ec2\u9004", + "pao": "\u629b\u5486\u5228\u70ae\u888d\u8dd1\u6ce1\u530f\u72cd\u5e96\u812c\u75b1", + "pei": "\u5478\u80da\u57f9\u88f4\u8d54\u966a\u914d\u4f69\u6c9b\u638a\u8f94\u5e14\u6de0\u65c6\u952b\u9185\u9708", + "pen": "\u55b7\u76c6\u6e53", + "peng": "\u7830\u62a8\u70f9\u6f8e\u5f6d\u84ec\u68da\u787c\u7bf7\u81a8\u670b\u9e4f\u6367\u78b0\u576f\u580b\u562d\u6026\u87db", + "pi": "\u7812\u9739\u6279\u62ab\u5288\u7435\u6bd7\u5564\u813e\u75b2\u76ae\u5339\u75de\u50fb\u5c41\u8b6c\u4e15\u9674\u90b3\u90eb\u572e\u9f19\u64d7\u567c\u5e80\u5ab2\u7eb0\u6787\u7513\u7765\u7f74\u94cd\u75e6\u7656\u758b\u868d\u8c94", + "pian": "\u7bc7\u504f\u7247\u9a97\u8c1d\u9a88\u728f\u80fc\u890a\u7fe9\u8e41", + "piao": "\u98d8\u6f02\u74e2\u7968\u527d\u560c\u5ad6\u7f25\u6b8d\u779f\u87b5", + "pie": "\u6487\u77a5\u4e3f\u82e4\u6c15", + "pin": "\u62fc\u9891\u8d2b\u54c1\u8058\u62da\u59d8\u5ad4\u6980\u725d\u98a6", + "ping": "\u4e52\u576a\u82f9\u840d\u5e73\u51ed\u74f6\u8bc4\u5c4f\u4fdc\u5a09\u67b0\u9c86", + "po": "\u5761\u6cfc\u9887\u5a46\u7834\u9b44\u8feb\u7c95\u53f5\u9131\u6ea5\u73c0\u948b\u94b7\u76a4\u7b38", + "pou": "\u5256\u88d2\u8e23", + "pu": "\u6251\u94fa\u4ec6\u8386\u8461\u83e9\u84b2\u57d4\u6734\u5703\u666e\u6d66\u8c31\u66dd\u7011\u530d\u5657\u6fee\u749e\u6c06\u9564\u9568\u8e7c", + "qi": "\u671f\u6b3a\u6816\u621a\u59bb\u4e03\u51c4\u6f06\u67d2\u6c8f\u5176\u68cb\u5947\u6b67\u7566\u5d0e\u8110\u9f50\u65d7\u7948\u7941\u9a91\u8d77\u5c82\u4e5e\u4f01\u542f\u5951\u780c\u5668\u6c14\u8fc4\u5f03\u6c7d\u6ce3\u8bab\u4e9f\u4e93\u573b\u8291\u840b\u847a\u5601\u5c7a\u5c90\u6c54\u6dc7\u9a90\u7eee\u742a\u7426\u675e\u6864\u69ed\u6b39\u797a\u61a9\u789b\u86f4\u871e\u7da6\u7dae\u8dbf\u8e4a\u9ccd\u9e92", + "qia": "\u6390\u6070\u6d3d\u845c", + "qian": "\u7275\u6266\u948e\u94c5\u5343\u8fc1\u7b7e\u4edf\u8c26\u4e7e\u9ed4\u94b1\u94b3\u524d\u6f5c\u9063\u6d45\u8c34\u5811\u5d4c\u6b20\u6b49\u4f65\u9621\u828a\u82a1\u8368\u63ae\u5c8d\u60ad\u614a\u9a9e\u6434\u8930\u7f31\u6920\u80b7\u6106\u94a4\u8654\u7b9d", + "qiang": "\u67aa\u545b\u8154\u7f8c\u5899\u8537\u5f3a\u62a2\u5af1\u6a2f\u6217\u709d\u9516\u9535\u956a\u8941\u8723\u7f9f\u8deb\u8dc4", + "qiao": "\u6a47\u9539\u6572\u6084\u6865\u77a7\u4e54\u4fa8\u5de7\u9798\u64ac\u7fd8\u5ced\u4fcf\u7a8d\u5281\u8bee\u8c2f\u835e\u6100\u6194\u7f32\u6a35\u6bf3\u7857\u8df7\u9792", + "qie": "\u5207\u8304\u4e14\u602f\u7a83\u90c4\u553c\u60ec\u59be\u6308\u9532\u7ba7", + "qin": "\u94a6\u4fb5\u4eb2\u79e6\u7434\u52e4\u82b9\u64d2\u79bd\u5bdd\u6c81\u82a9\u84c1\u8572\u63ff\u5423\u55ea\u5659\u6eb1\u6a8e\u8793\u887e", + "qing": "\u9752\u8f7b\u6c22\u503e\u537f\u6e05\u64ce\u6674\u6c30\u60c5\u9877\u8bf7\u5e86\u5029\u82d8\u570a\u6aa0\u78ec\u873b\u7f44\u7b90\u8b26\u9cad\u9ee5", + "qiong": "\u743c\u7a77\u909b\u8315\u7a79\u7b47\u928e", + "qiu": "\u79cb\u4e18\u90b1\u7403\u6c42\u56da\u914b\u6cc5\u4fc5\u6c3d\u5def\u827d\u72b0\u6e6b\u9011\u9052\u6978\u8d47\u9e20\u866c\u86af\u8764\u88d8\u7cd7\u9cc5\u9f3d", + "qu": "\u8d8b\u533a\u86c6\u66f2\u8eaf\u5c48\u9a71\u6e20\u53d6\u5a36\u9f8b\u8da3\u53bb\u8bce\u52ac\u8556\u8627\u5c96\u8862\u9612\u74a9\u89d1\u6c0d\u795b\u78f2\u766f\u86d0\u883c\u9eb4\u77bf\u9ee2", + "quan": "\u5708\u98a7\u6743\u919b\u6cc9\u5168\u75ca\u62f3\u72ac\u5238\u529d\u8be0\u8343\u737e\u609b\u7efb\u8f81\u754e\u94e8\u8737\u7b4c\u9b08", + "que": "\u7f3a\u7094\u7638\u5374\u9e4a\u69b7\u786e\u96c0\u9619\u60ab", + "qun": "\u88d9\u7fa4\u9021", + "ran": "\u7136\u71c3\u5189\u67d3\u82d2\u9aef", + "rang": "\u74e4\u58e4\u6518\u56b7\u8ba9\u79b3\u7a70", + "rao": "\u9976\u6270\u7ed5\u835b\u5a06\u6861", + "ruo": "\u60f9\u82e5\u5f31", + "re": "\u70ed\u504c", + "ren": "\u58ec\u4ec1\u4eba\u5fcd\u97e7\u4efb\u8ba4\u5203\u598a\u7eab\u4ede\u834f\u845a\u996a\u8f6b\u7a14\u887d", + "reng": "\u6254\u4ecd", + "ri": "\u65e5", + "rong": "\u620e\u8338\u84c9\u8363\u878d\u7194\u6eb6\u5bb9\u7ed2\u5197\u5d58\u72e8\u7f1b\u6995\u877e", + "rou": "\u63c9\u67d4\u8089\u7cc5\u8e42\u97a3", + "ru": "\u8339\u8815\u5112\u5b7a\u5982\u8fb1\u4e73\u6c5d\u5165\u8925\u84d0\u85b7\u5685\u6d33\u6ebd\u6fe1\u94f7\u8966\u98a5", + "ruan": "\u8f6f\u962e\u670a", + "rui": "\u854a\u745e\u9510\u82ae\u8564\u777f\u868b", + "run": "\u95f0\u6da6", + "sa": "\u6492\u6d12\u8428\u5345\u4ee8\u6332\u98d2", + "sai": "\u816e\u9cc3\u585e\u8d5b\u567b", + "san": "\u4e09\u53c1\u4f1e\u6563\u5f61\u9993\u6c35\u6bf5\u7cc1\u9730", + "sang": "\u6851\u55d3\u4e27\u6421\u78c9\u98a1", + "sao": "\u6414\u9a9a\u626b\u5ac2\u57fd\u81ca\u7619\u9ccb", + "se": "\u745f\u8272\u6da9\u556c\u94e9\u94ef\u7a51", + "sen": "\u68ee", + "seng": "\u50e7", + "sha": "\u838e\u7802\u6740\u5239\u6c99\u7eb1\u50bb\u5565\u715e\u810e\u6b43\u75e7\u88df\u970e\u9ca8", + "shai": "\u7b5b\u6652\u917e", + "shan": "\u73ca\u82eb\u6749\u5c71\u5220\u717d\u886b\u95ea\u9655\u64c5\u8d61\u81b3\u5584\u6c55\u6247\u7f2e\u5261\u8baa\u912f\u57cf\u829f\u6f78\u59d7\u9a9f\u81bb\u9490\u759d\u87ee\u8222\u8dda\u9cdd", + "shang": "\u5892\u4f24\u5546\u8d4f\u664c\u4e0a\u5c1a\u88f3\u57a7\u7ef1\u6b87\u71b5\u89de", + "shao": "\u68a2\u634e\u7a0d\u70e7\u828d\u52fa\u97f6\u5c11\u54e8\u90b5\u7ecd\u52ad\u82d5\u6f72\u86f8\u7b24\u7b72\u8244", + "she": "\u5962\u8d4a\u86c7\u820c\u820d\u8d66\u6444\u5c04\u6151\u6d89\u793e\u8bbe\u538d\u4f58\u731e\u7572\u9e9d", + "shen": "\u7837\u7533\u547b\u4f38\u8eab\u6df1\u5a20\u7ec5\u795e\u6c88\u5ba1\u5a76\u751a\u80be\u614e\u6e17\u8bdc\u8c02\u5432\u54c2\u6e16\u6939\u77e7\u8703", + "sheng": "\u58f0\u751f\u7525\u7272\u5347\u7ef3\u7701\u76db\u5269\u80dc\u5723\u4e1e\u6e11\u5ab5\u771a\u7b19", + "shi": "\u5e08\u5931\u72ee\u65bd\u6e7f\u8bd7\u5c38\u8671\u5341\u77f3\u62fe\u65f6\u4ec0\u98df\u8680\u5b9e\u8bc6\u53f2\u77e2\u4f7f\u5c4e\u9a76\u59cb\u5f0f\u793a\u58eb\u4e16\u67ff\u4e8b\u62ed\u8a93\u901d\u52bf\u662f\u55dc\u566c\u9002\u4ed5\u4f8d\u91ca\u9970\u6c0f\u5e02\u6043\u5ba4\u89c6\u8bd5\u8c25\u57d8\u83b3\u84cd\u5f11\u5511\u9963\u8f7c\u8006\u8d33\u70bb\u793b\u94c8\u94ca\u87ab\u8210\u7b6e\u8c55\u9ca5\u9cba", + "shou": "\u6536\u624b\u9996\u5b88\u5bff\u6388\u552e\u53d7\u7626\u517d\u624c\u72e9\u7ef6\u824f", + "shu": "\u852c\u67a2\u68b3\u6b8a\u6292\u8f93\u53d4\u8212\u6dd1\u758f\u4e66\u8d4e\u5b70\u719f\u85af\u6691\u66d9\u7f72\u8700\u9ecd\u9f20\u5c5e\u672f\u8ff0\u6811\u675f\u620d\u7ad6\u5885\u5eb6\u6570\u6f31\u6055\u500f\u587e\u83fd\u5fc4\u6cad\u6d91\u6f8d\u59dd\u7ebe\u6bf9\u8167\u6bb3\u956f\u79eb\u9e6c", + "shua": "\u5237\u800d\u5530\u6dae", + "shuai": "\u6454\u8870\u7529\u5e05\u87c0", + "shuan": "\u6813\u62f4\u95e9", + "shuang": "\u971c\u53cc\u723d\u5b40", + "shui": "\u8c01\u6c34\u7761\u7a0e", + "shun": "\u542e\u77ac\u987a\u821c\u6042", + "shuo": "\u8bf4\u7855\u6714\u70c1\u84b4\u6420\u55cd\u6fef\u5981\u69ca\u94c4", + "si": "\u65af\u6495\u5636\u601d\u79c1\u53f8\u4e1d\u6b7b\u8086\u5bfa\u55e3\u56db\u4f3a\u4f3c\u9972\u5df3\u53ae\u4fdf\u5155\u83e5\u549d\u6c5c\u6cd7\u6f8c\u59d2\u9a77\u7f0c\u7940\u7960\u9536\u9e36\u801c\u86f3\u7b25", + "song": "\u677e\u8038\u6002\u9882\u9001\u5b8b\u8bbc\u8bf5\u51c7\u83d8\u5d27\u5d69\u5fea\u609a\u6dde\u7ae6", + "sou": "\u641c\u8258\u64de\u55fd\u53df\u55d6\u55fe\u998a\u6eb2\u98d5\u778d\u953c\u878b", + "su": "\u82cf\u9165\u4fd7\u7d20\u901f\u7c9f\u50f3\u5851\u6eaf\u5bbf\u8bc9\u8083\u5919\u8c21\u850c\u55c9\u612b\u7c0c\u89eb\u7a23", + "suan": "\u9178\u849c\u7b97", + "sui": "\u867d\u968b\u968f\u7ee5\u9ad3\u788e\u5c81\u7a57\u9042\u96a7\u795f\u84d1\u51ab\u8c07\u6fc9\u9083\u71e7\u772d\u7762", + "sun": "\u5b59\u635f\u7b0b\u836a\u72f2\u98e7\u69ab\u8de3\u96bc", + "suo": "\u68ad\u5506\u7f29\u7410\u7d22\u9501\u6240\u5522\u55e6\u5a11\u686b\u7743\u7fa7", + "ta": "\u584c\u4ed6\u5b83\u5979\u5854\u736d\u631e\u8e4b\u8e0f\u95fc\u6ebb\u9062\u69bb\u6c93", + "tai": "\u80ce\u82d4\u62ac\u53f0\u6cf0\u915e\u592a\u6001\u6c70\u90b0\u85b9\u80bd\u70b1\u949b\u8dc6\u9c90", + "tan": "\u574d\u644a\u8d2a\u762b\u6ee9\u575b\u6a80\u75f0\u6f6d\u8c2d\u8c08\u5766\u6bef\u8892\u78b3\u63a2\u53f9\u70ad\u90ef\u8548\u6619\u94bd\u952c\u8983", + "tang": "\u6c64\u5858\u642a\u5802\u68e0\u819b\u5510\u7cd6\u50a5\u9967\u6e8f\u746d\u94f4\u9557\u8025\u8797\u87b3\u7fb0\u91a3", + "thang": "\u5018\u8eba\u6dcc", + "theng": "\u8d9f\u70eb", + "tao": "\u638f\u6d9b\u6ed4\u7ee6\u8404\u6843\u9003\u6dd8\u9676\u8ba8\u5957\u6311\u9f17\u5555\u97ec\u9955", + "te": "\u7279", + "teng": "\u85e4\u817e\u75bc\u8a8a\u6ed5", + "ti": "\u68af\u5254\u8e22\u9511\u63d0\u9898\u8e44\u557c\u4f53\u66ff\u568f\u60d5\u6d95\u5243\u5c49\u8351\u608c\u9016\u7ee8\u7f07\u9e48\u88fc\u918d", + "tian": "\u5929\u6dfb\u586b\u7530\u751c\u606c\u8214\u8146\u63ad\u5fdd\u9617\u6b84\u754b\u94bf\u86ba", + "tiao": "\u6761\u8fe2\u773a\u8df3\u4f7b\u7967\u94eb\u7a95\u9f86\u9ca6", + "tie": "\u8d34\u94c1\u5e16\u841c\u992e", + "ting": "\u5385\u542c\u70c3\u6c40\u5ef7\u505c\u4ead\u5ead\u633a\u8247\u839b\u8476\u5a77\u6883\u8713\u9706", + "tong": "\u901a\u6850\u916e\u77b3\u540c\u94dc\u5f64\u7ae5\u6876\u6345\u7b52\u7edf\u75db\u4f5f\u50ee\u4edd\u833c\u55f5\u6078\u6f7c\u783c", + "tou": "\u5077\u6295\u5934\u900f\u4ea0", + "tu": "\u51f8\u79c3\u7a81\u56fe\u5f92\u9014\u6d82\u5c60\u571f\u5410\u5154\u580d\u837c\u83df\u948d\u9174\u51c3", + "tuan": "\u6e4d\u56e2\u7583", + "tui": "\u63a8\u9893\u817f\u8715\u892a\u9000\u5fd2\u717a", + "tun": "\u541e\u5c6f\u81c0\u9968\u66be\u8c5a\u7a80", + "tuo": "\u62d6\u6258\u8131\u9e35\u9640\u9a6e\u9a7c\u692d\u59a5\u62d3\u553e\u4e47\u4f57\u5768\u5eb9\u6cb1\u67dd\u7823\u7ba8\u8204\u8dce\u9f0d", + "wa": "\u6316\u54c7\u86d9\u6d3c\u5a03\u74e6\u889c\u4f64\u5a32\u817d", + "wai": "\u6b6a\u5916", + "wan": "\u8c4c\u5f2f\u6e7e\u73a9\u987d\u4e38\u70f7\u5b8c\u7897\u633d\u665a\u7696\u60cb\u5b9b\u5a49\u4e07\u8155\u525c\u8284\u82cb\u83c0\u7ea8\u7efe\u742c\u8118\u7579\u873f\u7ba2", + "wang": "\u6c6a\u738b\u4ea1\u6789\u7f51\u5f80\u65fa\u671b\u5fd8\u5984\u7f54\u5c22\u60d8\u8f8b\u9b4d", + "wei": "\u5a01\u5dcd\u5fae\u5371\u97e6\u8fdd\u6845\u56f4\u552f\u60df\u4e3a\u6f4d\u7ef4\u82c7\u840e\u59d4\u4f1f\u4f2a\u5c3e\u7eac\u672a\u851a\u5473\u754f\u80c3\u5582\u9b4f\u4f4d\u6e2d\u8c13\u5c09\u6170\u536b\u502d\u504e\u8bff\u9688\u8473\u8587\u5e0f\u5e37\u5d34\u5d6c\u7325\u732c\u95f1\u6ca9\u6d27\u6da0\u9036\u5a13\u73ae\u97ea\u8ece\u709c\u7168\u71a8\u75ff\u8249\u9c94", + "wen": "\u761f\u6e29\u868a\u6587\u95fb\u7eb9\u543b\u7a33\u7d0a\u95ee\u520e\u6120\u960c\u6c76\u74ba\u97eb\u6b81\u96ef", + "weng": "\u55e1\u7fc1\u74ee\u84ca\u8579", + "wo": "\u631d\u8717\u6da1\u7a9d\u6211\u65a1\u5367\u63e1\u6c83\u83b4\u5e44\u6e25\u674c\u809f\u9f8c", + "wu": "\u5deb\u545c\u94a8\u4e4c\u6c61\u8bec\u5c4b\u65e0\u829c\u68a7\u543e\u5434\u6bcb\u6b66\u4e94\u6342\u5348\u821e\u4f0d\u4fae\u575e\u620a\u96fe\u6664\u7269\u52ff\u52a1\u609f\u8bef\u5140\u4ef5\u9622\u90ac\u572c\u82b4\u5e91\u6003\u5fe4\u6d6f\u5be4\u8fd5\u59a9\u9a9b\u727e\u7110\u9e49\u9e5c\u8708\u92c8\u9f2f", + "xi": "\u6614\u7199\u6790\u897f\u7852\u77fd\u6670\u563b\u5438\u9521\u727a\u7a00\u606f\u5e0c\u6089\u819d\u5915\u60dc\u7184\u70ef\u6eaa\u6c50\u7280\u6a84\u88ad\u5e2d\u4e60\u5ab3\u559c\u94e3\u6d17\u7cfb\u9699\u620f\u7ec6\u50d6\u516e\u96b0\u90d7\u831c\u8478\u84f0\u595a\u550f\u5f99\u9969\u960b\u6d60\u6dc5\u5c63\u5b09\u73ba\u6a28\u66e6\u89cb\u6b37\u71b9\u798a\u79a7\u94b8\u7699\u7a78\u8725\u87cb\u823e\u7fb2\u7c9e\u7fd5\u91af\u9f37", + "xia": "\u778e\u867e\u5323\u971e\u8f96\u6687\u5ce1\u4fa0\u72ed\u4e0b\u53a6\u590f\u5413\u6380\u846d\u55c4\u72ce\u9050\u7455\u7856\u7615\u7f45\u9ee0", + "xian": "\u9528\u5148\u4ed9\u9c9c\u7ea4\u54b8\u8d24\u8854\u8237\u95f2\u6d8e\u5f26\u5acc\u663e\u9669\u73b0\u732e\u53bf\u817a\u9985\u7fa1\u5baa\u9677\u9650\u7ebf\u51bc\u85d3\u5c98\u7303\u66b9\u5a34\u6c19\u7946\u9e47\u75eb\u86ac\u7b45\u7c7c\u9170\u8df9", + "xiang": "\u76f8\u53a2\u9576\u9999\u7bb1\u8944\u6e58\u4e61\u7fd4\u7965\u8be6\u60f3\u54cd\u4eab\u9879\u5df7\u6a61\u50cf\u5411\u8c61\u8297\u8459\u9977\u5ea0\u9aa7\u7f03\u87d3\u9c9e\u98e8", + "xiao": "\u8427\u785d\u9704\u524a\u54ee\u56a3\u9500\u6d88\u5bb5\u6dc6\u6653\u5c0f\u5b5d\u6821\u8096\u5578\u7b11\u6548\u54d3\u54bb\u5d24\u6f47\u900d\u9a81\u7ee1\u67ad\u67b5\u7b71\u7bab\u9b48", + "xie": "\u6954\u4e9b\u6b47\u874e\u978b\u534f\u631f\u643a\u90aa\u659c\u80c1\u8c10\u5199\u68b0\u5378\u87f9\u61c8\u6cc4\u6cfb\u8c22\u5c51\u5055\u4eb5\u52f0\u71ee\u85a4\u64b7\u5ee8\u7023\u9082\u7ec1\u7f2c\u69ad\u698d\u6b59\u8e9e", + "xin": "\u85aa\u82af\u950c\u6b23\u8f9b\u65b0\u5ffb\u5fc3\u4fe1\u8845\u56df\u99a8\u8398\u6b46\u94fd\u946b\u6615", + "xing": "\u661f\u8165\u7329\u60fa\u5174\u5211\u578b\u5f62\u90a2\u884c\u9192\u5e78\u674f\u6027\u59d3\u9649\u8347\u8365\u64e4\u60bb\u784e", + "xiong": "\u5144\u51f6\u80f8\u5308\u6c79\u96c4\u718a\u828e", + "xiu": "\u4f11\u4fee\u7f9e\u673d\u55c5\u9508\u79c0\u8896\u7ee3\u83a0\u5cab\u9990\u5ea5\u9e3a\u8c85\u9af9", + "xu": "\u589f\u620c\u9700\u865a\u5618\u987b\u5f90\u8bb8\u84c4\u9157\u53d9\u65ed\u5e8f\u755c\u6064\u7d6e\u5a7f\u7eea\u7eed\u8bb4\u8be9\u5729\u84ff\u6035\u6d2b\u6e86\u987c\u6829\u7166\u7809\u76f1\u80e5\u7cc8\u9191", + "xuan": "\u8f69\u55a7\u5ba3\u60ac\u65cb\u7384\u9009\u7663\u7729\u7eda\u5107\u8c16\u8431\u63ce\u9994\u6ceb\u6d35\u6e32\u6f29\u7487\u6966\u6684\u70ab\u714a\u78b9\u94c9\u955f\u75c3", + "xue": "\u9774\u859b\u5b66\u7a74\u96ea\u8840\u5671\u6cf6\u9cd5", + "xun": "\u52cb\u718f\u5faa\u65ec\u8be2\u5bfb\u9a6f\u5de1\u6b89\u6c5b\u8bad\u8baf\u900a\u8fc5\u5dfd\u57d9\u8340\u85b0\u5ccb\u5f87\u6d54\u66db\u7aa8\u91ba\u9c9f", + "ya": "\u538b\u62bc\u9e26\u9e2d\u5440\u4e2b\u82bd\u7259\u869c\u5d16\u8859\u6daf\u96c5\u54d1\u4e9a\u8bb6\u4f22\u63e0\u5416\u5c88\u8fd3\u5a05\u740a\u6860\u6c29\u7811\u775a\u75d6", + "yan": "\u7109\u54bd\u9609\u70df\u6df9\u76d0\u4e25\u7814\u8712\u5ca9\u5ef6\u8a00\u989c\u960e\u708e\u6cbf\u5944\u63a9\u773c\u884d\u6f14\u8273\u5830\u71d5\u538c\u781a\u96c1\u5501\u5f66\u7130\u5bb4\u8c1a\u9a8c\u53a3\u9765\u8d5d\u4fe8\u5043\u5156\u8ba0\u8c33\u90fe\u9122\u82ab\u83f8\u5d26\u6079\u95eb\u960f\u6d07\u6e6e\u6edf\u598d\u5ae3\u7430\u664f\u80ed\u814c\u7131\u7f68\u7b75\u917d\u9b47\u990d\u9f39", + "yang": "\u6b83\u592e\u9e2f\u79e7\u6768\u626c\u4f6f\u75a1\u7f8a\u6d0b\u9633\u6c27\u4ef0\u75d2\u517b\u6837\u6f3e\u5f89\u600f\u6cf1\u7080\u70ca\u6059\u86d8\u9785", + "yao": "\u9080\u8170\u5996\u7476\u6447\u5c27\u9065\u7a91\u8c23\u59da\u54ac\u8200\u836f\u8981\u8000\u592d\u723b\u5406\u5d3e\u5fad\u7039\u5e7a\u73e7\u6773\u66dc\u80b4\u9e5e\u7a88\u7e47\u9cd0", + "ye": "\u6930\u564e\u8036\u7237\u91ce\u51b6\u4e5f\u9875\u6396\u4e1a\u53f6\u66f3\u814b\u591c\u6db2\u8c12\u90ba\u63f6\u9980\u6654\u70e8\u94d8", + "yi": "\u4e00\u58f9\u533b\u63d6\u94f1\u4f9d\u4f0a\u8863\u9890\u5937\u9057\u79fb\u4eea\u80f0\u7591\u6c82\u5b9c\u59e8\u5f5d\u6905\u8681\u501a\u5df2\u4e59\u77e3\u4ee5\u827a\u6291\u6613\u9091\u5c79\u4ebf\u5f79\u81c6\u9038\u8084\u75ab\u4ea6\u88d4\u610f\u6bc5\u5fc6\u4e49\u76ca\u6ea2\u8be3\u8bae\u8c0a\u8bd1\u5f02\u7ffc\u7fcc\u7ece\u5208\u5293\u4f7e\u8bd2\u572a\u572f\u57f8\u61ff\u82e1\u858f\u5f08\u5955\u6339\u5f0b\u5453\u54a6\u54bf\u566b\u5cc4\u5db7\u7317\u9974\u603f\u6021\u6092\u6f2a\u8fe4\u9a7f\u7f22\u6baa\u8d3b\u65d6\u71a0\u9487\u9552\u9571\u75cd\u7617\u7654\u7fca\u8864\u8734\u8223\u7fbf\u7ff3\u914f\u9edf", + "yin": "\u8335\u836b\u56e0\u6bb7\u97f3\u9634\u59fb\u541f\u94f6\u6deb\u5bc5\u996e\u5c39\u5f15\u9690\u5370\u80e4\u911e\u5819\u831a\u5591\u72fa\u5924\u6c24\u94df\u763e\u8693\u972a\u9f88", + "ying": "\u82f1\u6a31\u5a74\u9e70\u5e94\u7f28\u83b9\u8424\u8425\u8367\u8747\u8fce\u8d62\u76c8\u5f71\u9896\u786c\u6620\u5b34\u90e2\u8314\u83ba\u8426\u6484\u5624\u81ba\u6ee2\u6f46\u701b\u745b\u748e\u6979\u9e66\u763f\u988d\u7f42", + "yo": "\u54df\u5537", + "yong": "\u62e5\u4f63\u81c3\u75c8\u5eb8\u96cd\u8e0a\u86f9\u548f\u6cf3\u6d8c\u6c38\u607f\u52c7\u7528\u4fd1\u58c5\u5889\u6175\u9095\u955b\u752c\u9cd9\u9954", + "you": "\u5e7d\u4f18\u60a0\u5fe7\u5c24\u7531\u90ae\u94c0\u72b9\u6cb9\u6e38\u9149\u6709\u53cb\u53f3\u4f51\u91c9\u8bf1\u53c8\u5e7c\u5363\u6538\u4f91\u83b8\u5466\u56ff\u5ba5\u67da\u7337\u7256\u94d5\u75a3\u8763\u9c7f\u9edd\u9f2c", + "yu": "\u8fc2\u6de4\u4e8e\u76c2\u6986\u865e\u611a\u8206\u4f59\u4fde\u903e\u9c7c\u6109\u6e1d\u6e14\u9685\u4e88\u5a31\u96e8\u4e0e\u5c7f\u79b9\u5b87\u8bed\u7fbd\u7389\u57df\u828b\u90c1\u5401\u9047\u55bb\u5cea\u5fa1\u6108\u6b32\u72f1\u80b2\u8a89\u6d74\u5bd3\u88d5\u9884\u8c6b\u9a6d\u79ba\u6bd3\u4f1b\u4fe3\u8c00\u8c15\u8438\u84e3\u63c4\u5581\u5704\u5709\u5d5b\u72f3\u996b\u5ebe\u9608\u59aa\u59a4\u7ea1\u745c\u6631\u89ce\u8174\u6b24\u65bc\u715c\u71e0\u807f\u94b0\u9e46\u7610\u7600\u7ab3\u8753\u7afd\u8201\u96e9\u9f89", + "yuan": "\u9e33\u6e0a\u51a4\u5143\u57a3\u8881\u539f\u63f4\u8f95\u56ed\u5458\u5706\u733f\u6e90\u7f18\u8fdc\u82d1\u613f\u6028\u9662\u586c\u6c85\u5a9b\u7457\u6a7c\u7230\u7722\u9e22\u8788\u9f0b", + "yue": "\u66f0\u7ea6\u8d8a\u8dc3\u94a5\u5cb3\u7ca4\u6708\u60a6\u9605\u9fa0\u6a3e\u5216\u94ba", + "yun": "\u8018\u4e91\u90e7\u5300\u9668\u5141\u8fd0\u8574\u915d\u6655\u97f5\u5b55\u90d3\u82b8\u72c1\u607d\u7ead\u6b92\u6600\u6c32", + "za": "\u531d\u7838\u6742\u62f6\u5482", + "zai": "\u683d\u54c9\u707e\u5bb0\u8f7d\u518d\u5728\u54b1\u5d3d\u753e", + "zan": "\u6512\u6682\u8d5e\u74d2\u661d\u7c2a\u7ccc\u8db1\u933e", + "zang": "\u8d43\u810f\u846c\u5958\u6215\u81e7", + "zao": "\u906d\u7cdf\u51ff\u85fb\u67a3\u65e9\u6fa1\u86a4\u8e81\u566a\u9020\u7682\u7076\u71e5\u5523\u7f2b", + "ze": "\u8d23\u62e9\u5219\u6cfd\u4ec4\u8d5c\u5567\u8fee\u6603\u7b2e\u7ba6\u8234", + "zei": "\u8d3c", + "zen": "\u600e\u8c2e", + "zeng": "\u589e\u618e\u66fe\u8d60\u7f2f\u7511\u7f7e\u9503", + "zha": "\u624e\u55b3\u6e23\u672d\u8f67\u94e1\u95f8\u7728\u6805\u69a8\u548b\u4e4d\u70b8\u8bc8\u63f8\u5412\u54a4\u54f3\u600d\u781f\u75c4\u86b1\u9f44", + "zhai": "\u6458\u658b\u5b85\u7a84\u503a\u5be8\u7826", + "zhan": "\u77bb\u6be1\u8a79\u7c98\u6cbe\u76cf\u65a9\u8f97\u5d2d\u5c55\u8638\u6808\u5360\u6218\u7ad9\u6e5b\u7efd\u8c35\u640c\u65c3", + "zhang": "\u6a1f\u7ae0\u5f70\u6f33\u5f20\u638c\u6da8\u6756\u4e08\u5e10\u8d26\u4ed7\u80c0\u7634\u969c\u4ec9\u9123\u5e5b\u5d82\u7350\u5adc\u748b\u87d1", + "zhao": "\u62db\u662d\u627e\u6cbc\u8d75\u7167\u7f69\u5146\u8087\u53ec\u722a\u8bcf\u68f9\u948a\u7b0a", + "zhe": "\u906e\u6298\u54f2\u86f0\u8f99\u8005\u9517\u8517\u8fd9\u6d59\u8c2a\u966c\u67d8\u8f84\u78d4\u9e67\u891a\u8707\u8d6d", + "zhen": "\u73cd\u659f\u771f\u7504\u7827\u81fb\u8d1e\u9488\u4fa6\u6795\u75b9\u8bca\u9707\u632f\u9547\u9635\u7f1c\u6862\u699b\u8f78\u8d48\u80d7\u6715\u796f\u755b\u9e29", + "zheng": "\u84b8\u6323\u7741\u5f81\u72f0\u4e89\u6014\u6574\u62ef\u6b63\u653f\u5e27\u75c7\u90d1\u8bc1\u8be4\u5ce5\u94b2\u94ee\u7b5d", + "zhi": "\u829d\u679d\u652f\u5431\u8718\u77e5\u80a2\u8102\u6c41\u4e4b\u7ec7\u804c\u76f4\u690d\u6b96\u6267\u503c\u4f84\u5740\u6307\u6b62\u8dbe\u53ea\u65e8\u7eb8\u5fd7\u631a\u63b7\u81f3\u81f4\u7f6e\u5e1c\u5cd9\u5236\u667a\u79e9\u7a1a\u8d28\u7099\u75d4\u6ede\u6cbb\u7a92\u536e\u965f\u90c5\u57f4\u82b7\u646d\u5e19\u5fee\u5f58\u54ab\u9a98\u6809\u67b3\u6800\u684e\u8f75\u8f7e\u6534\u8d3d\u81a3\u7949\u7957\u9ef9\u96c9\u9e37\u75e3\u86ed\u7d77\u916f\u8dd6\u8e2c\u8e2f\u8c78\u89ef", + "zhong": "\u4e2d\u76c5\u5fe0\u949f\u8877\u7ec8\u79cd\u80bf\u91cd\u4ef2\u4f17\u51a2\u953a\u87bd\u8202\u822f\u8e35", + "zhou": "\u821f\u5468\u5dde\u6d32\u8bcc\u7ca5\u8f74\u8098\u5e1a\u5492\u76b1\u5b99\u663c\u9aa4\u5544\u7740\u501c\u8bf9\u836e\u9b3b\u7ea3\u80c4\u78a1\u7c40\u8233\u914e\u9cb7", + "zhu": "\u73e0\u682a\u86db\u6731\u732a\u8bf8\u8bdb\u9010\u7af9\u70db\u716e\u62c4\u77a9\u5631\u4e3b\u8457\u67f1\u52a9\u86c0\u8d2e\u94f8\u7b51\u4f4f\u6ce8\u795d\u9a7b\u4f2b\u4f8f\u90be\u82ce\u8331\u6d19\u6e1a\u6f74\u9a7a\u677c\u69e0\u6a65\u70b7\u94e2\u75b0\u7603\u86b0\u7afa\u7bb8\u7fe5\u8e85\u9e88", + "zhua": "\u6293", + "zhuai": "\u62fd", + "zhuan": "\u4e13\u7816\u8f6c\u64b0\u8d5a\u7bc6\u629f\u556d\u989b", + "zhuang": "\u6869\u5e84\u88c5\u5986\u649e\u58ee\u72b6\u4e2c", + "zhui": "\u690e\u9525\u8ffd\u8d58\u5760\u7f00\u8411\u9a93\u7f12", + "zhun": "\u8c06\u51c6", + "zhuo": "\u6349\u62d9\u5353\u684c\u7422\u8301\u914c\u707c\u6d4a\u502c\u8bfc\u5ef4\u855e\u64e2\u555c\u6d5e\u6dbf\u6753\u712f\u799a\u65ab", + "zi": "\u5179\u54a8\u8d44\u59ff\u6ecb\u6dc4\u5b5c\u7d2b\u4ed4\u7c7d\u6ed3\u5b50\u81ea\u6e0d\u5b57\u8c18\u5d6b\u59ca\u5b73\u7f01\u6893\u8f8e\u8d40\u6063\u7726\u9531\u79ed\u8014\u7b2b\u7ca2\u89dc\u8a3e\u9cbb\u9aed", + "zong": "\u9b03\u68d5\u8e2a\u5b97\u7efc\u603b\u7eb5\u8159\u7cbd", + "zou": "\u90b9\u8d70\u594f\u63cd\u9139\u9cb0", + "zu": "\u79df\u8db3\u5352\u65cf\u7956\u8bc5\u963b\u7ec4\u4fce\u83f9\u5550\u5f82\u9a75\u8e74", + "zuan": "\u94bb\u7e82\u6525\u7f35", + "zui": "\u5634\u9189\u6700\u7f6a", + "zun": "\u5c0a\u9075\u6499\u6a3d\u9cdf", + "zuo": "\u6628\u5de6\u4f50\u67de\u505a\u4f5c\u5750\u5ea7\u961d\u963c\u80d9\u795a\u9162", + "diu": "\u94e5", + "nou": "\u8028", + "bia": "\u9adf" + }; + this.polyphone = { + "19969": "DZ", + "19975": "WM", + "19988": "QJ", + "20048": "YL", + "20056": "SC", + "20060": "NM", + "20094": "QG", + "20127": "QJ", + "20167": "QC", + "20193": "YG", + "20250": "KH", + "20256": "ZC", + "20282": "SC", + "20285": "QJG", + "20291": "TD", + "20314": "YD", + "20340": "NE", + "20375": "TD", + "20389": "YJ", + "20391": "CZ", + "20415": "PB", + "20446": "YS", + "20447": "SQ", + "20504": "TC", + "20608": "KG", + "20854": "QJ", + "20857": "ZC", + "20911": "PF", + "20985": "AW", + "21032": "PB", + "21048": "XQ", + "21049": "SC", + "21089": "YS", + "21119": "JC", + "21242": "SB", + "21273": "SC", + "21305": "YP", + "21306": "QO", + "21330": "ZC", + "21333": "SDC", + "21345": "QK", + "21378": "CA", + "21397": "SC", + "21414": "XS", + "21442": "SC", + "21477": "JG", + "21480": "TD", + "21484": "ZS", + "21494": "YX", + "21505": "YX", + "21512": "HG", + "21523": "XH", + "21537": "PB", + "21542": "PF", + "21549": "KH", + "21571": "E", + "21574": "DA", + "21588": "TD", + "21589": "O", + "21618": "ZC", + "21621": "KHA", + "21632": "ZJ", + "21654": "KG", + "21679": "LKG", + "21683": "KH", + "21710": "A", + "21719": "YH", + "21734": "WOE", + "21769": "A", + "21780": "WN", + "21804": "XH", + "21834": "A", + "21899": "ZD", + "21903": "RN", + "21908": "WO", + "21939": "ZC", + "21956": "SA", + "21964": "YA", + "21970": "TD", + "22003": "A", + "22031": "JG", + "22040": "XS", + "22060": "ZC", + "22066": "ZC", + "22079": "MH", + "22129": "XJ", + "22179": "XA", + "22237": "NJ", + "22244": "TD", + "22280": "JQ", + "22300": "YH", + "22313": "XW", + "22331": "YQ", + "22343": "YJ", + "22351": "PH", + "22395": "DC", + "22412": "TD", + "22484": "PB", + "22500": "PB", + "22534": "ZD", + "22549": "DH", + "22561": "PB", + "22612": "TD", + "22771": "KQ", + "22831": "HB", + "22841": "JG", + "22855": "QJ", + "22865": "XQ", + "23013": "ML", + "23081": "WM", + "23487": "SX", + "23558": "QJ", + "23561": "YW", + "23586": "YW", + "23614": "YW", + "23615": "SN", + "23631": "PB", + "23646": "ZS", + "23663": "ZT", + "23673": "YG", + "23762": "TD", + "23769": "ZS", + "23780": "QJ", + "23884": "QK", + "24055": "XH", + "24113": "DC", + "24162": "ZC", + "24191": "GA", + "24273": "QJ", + "24324": "NL", + "24377": "TD", + "24378": "QJ", + "24439": "PF", + "24554": "ZS", + "24683": "TD", + "24694": "WE", + "24733": "LK", + "24925": "TN", + "25094": "ZG", + "25100": "XQ", + "25103": "XH", + "25153": "PB", + "25170": "PB", + "25179": "KG", + "25203": "PB", + "25240": "ZS", + "25282": "FB", + "25303": "NA", + "25324": "KG", + "25341": "ZY", + "25373": "WZ", + "25375": "XJ", + "25384": "A", + "25457": "A", + "25528": "SD", + "25530": "SC", + "25552": "TD", + "25774": "ZC", + "25874": "ZC", + "26044": "YW", + "26080": "WM", + "26292": "PB", + "26333": "PB", + "26355": "ZY", + "26366": "CZ", + "26397": "ZC", + "26399": "QJ", + "26415": "ZS", + "26451": "SB", + "26526": "ZC", + "26552": "JG", + "26561": "TD", + "26588": "JG", + "26597": "CZ", + "26629": "ZS", + "26638": "YL", + "26646": "XQ", + "26653": "KG", + "26657": "XJ", + "26727": "HG", + "26894": "ZC", + "26937": "ZS", + "26946": "ZC", + "26999": "KJ", + "27099": "KJ", + "27449": "YQ", + "27481": "XS", + "27542": "ZS", + "27663": "ZS", + "27748": "TS", + "27784": "SC", + "27788": "ZD", + "27795": "TD", + "27812": "O", + "27850": "PB", + "27852": "MB", + "27895": "SL", + "27898": "PL", + "27973": "QJ", + "27981": "KH", + "27986": "HX", + "27994": "XJ", + "28044": "YC", + "28065": "WG", + "28177": "SM", + "28267": "QJ", + "28291": "KH", + "28337": "ZQ", + "28463": "TL", + "28548": "DC", + "28601": "TD", + "28689": "PB", + "28805": "JG", + "28820": "QG", + "28846": "PB", + "28952": "TD", + "28975": "ZC", + "29100": "A", + "29325": "QJ", + "29575": "SL", + "29602": "FB", + "30010": "TD", + "30044": "CX", + "30058": "PF", + "30091": "YSP", + "30111": "YN", + "30229": "XJ", + "30427": "SC", + "30465": "SX", + "30631": "YQ", + "30655": "QJ", + "30684": "QJG", + "30707": "SD", + "30729": "XH", + "30796": "LG", + "30917": "PB", + "31074": "NM", + "31085": "JZ", + "31109": "SC", + "31181": "ZC", + "31192": "MLB", + "31293": "JQ", + "31400": "YX", + "31584": "YJ", + "31896": "ZN", + "31909": "ZY", + "31995": "XJ", + "32321": "PF", + "32327": "ZY", + "32418": "HG", + "32420": "XQ", + "32421": "HG", + "32438": "LG", + "32473": "GJ", + "32488": "TD", + "32521": "QJ", + "32527": "PB", + "32562": "ZSQ", + "32564": "JZ", + "32735": "ZD", + "32793": "PB", + "33071": "PF", + "33098": "XL", + "33100": "YA", + "33152": "PB", + "33261": "CX", + "33324": "BP", + "33333": "TD", + "33406": "YA", + "33426": "WM", + "33432": "PB", + "33445": "JG", + "33486": "ZN", + "33493": "TS", + "33507": "QJ", + "33540": "QJ", + "33544": "ZC", + "33564": "XQ", + "33617": "YT", + "33632": "QJ", + "33636": "XH", + "33637": "YX", + "33694": "WG", + "33705": "PF", + "33728": "YW", + "33882": "SR", + "34067": "WM", + "34074": "YW", + "34121": "QJ", + "34255": "ZC", + "34259": "XL", + "34425": "JH", + "34430": "XH", + "34485": "KH", + "34503": "YS", + "34532": "HG", + "34552": "XS", + "34558": "YE", + "34593": "ZL", + "34660": "YQ", + "34892": "XH", + "34928": "SC", + "34999": "QJ", + "35048": "PB", + "35059": "SC", + "35098": "ZC", + "35203": "TQ", + "35265": "JX", + "35299": "JX", + "35782": "SZ", + "35828": "YS", + "35830": "E", + "35843": "TD", + "35895": "YG", + "35977": "MH", + "36158": "JG", + "36228": "QJ", + "36426": "XQ", + "36466": "DC", + "36710": "JC", + "36711": "ZYG", + "36767": "PB", + "36866": "SK", + "36951": "YW", + "37034": "YX", + "37063": "XH", + "37218": "ZC", + "37325": "ZC", + "38063": "PB", + "38079": "TD", + "38085": "QY", + "38107": "DC", + "38116": "TD", + "38123": "YD", + "38224": "HG", + "38241": "XTC", + "38271": "ZC", + "38415": "YE", + "38426": "KH", + "38461": "YD", + "38463": "AE", + "38466": "PB", + "38477": "XJ", + "38518": "YT", + "38551": "WK", + "38585": "ZC", + "38704": "XS", + "38739": "LJ", + "38761": "GJ", + "38808": "SQ", + "39048": "JG", + "39049": "XJ", + "39052": "HG", + "39076": "CZ", + "39271": "XT", + "39534": "TD", + "39552": "TD", + "39584": "PB", + "39647": "SB", + "39730": "LG", + "39748": "TPB", + "40109": "ZQ", + "40479": "ND", + "40516": "HG", + "40536": "HG", + "40583": "QJ", + "40765": "YQ", + "40784": "QJ", + "40840": "YK", + "40863": "QJG" + }; + } + + /** + * 获取拼音首字母 + * @param {String} str 输入的中文字符串 + */ + getCamelChars(str) { + if (typeof (str) != "string") + throw new Error(-1, "函数getCamelChars需要字符串类型参数!"); + let chars = new Array(); //保存中间结果的数组 + for (let i = 0, len = str.length; i < len; i++) { + //获得unicode码 + let ch = str.charAt(i); + //检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理 + chars.push(this._getChar(ch)); + } + //处理arrResult,返回所有可能的拼音首字母串数组 + let result = this._getResult(chars); + + this.options.charCase === 1 ? + result = result.toLowerCase() : + this.options.charCase === 2 ? + result = result.toUpperCase() : + {}; + return result; + } + + /** + * 获取拼音 + * @param {String} str 输入的中文字符串 + */ + getFullChars(str) { + let len = str.length; + let result = ""; + let reg = new RegExp('[a-zA-Z0-9\- ]'); + for (let i = 0; i < len; i++) { + let ch = str.substr(i, 1); + let unicode = ch.charCodeAt(0); + //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数 + if (unicode > 40869 || unicode < 19968) { + result += ch; + } else { + let name = this._getFullChar(ch); + if (name !== false) { + result += name; + } + } + } + + this.options.charCase === 1 ? + result = result.toLowerCase() : + this.options.charCase === 2 ? + result = result.toUpperCase() : + {}; + return result; + } + + _getFullChar(ch) { + for (let key in this.full_dict) { + if (this.full_dict[key].indexOf(ch) != -1) { + return this._capitalize(key); + break; + } + } + return false; + } + + /** + * 首字母大写 + */ + _capitalize(str) { + if (str.length > 0) { + let first = str.substr(0, 1).toUpperCase(); + let spare = str.substr(1, str.length); + return first + spare; + } + } + + _getChar(ch) { + let unicode = ch.charCodeAt(0); + //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数 + if (unicode > 40869 || unicode < 19968) + return ch; //dealWithOthers(ch); + //检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母 + if (!this.options.checkPolyphone) + return this.char_dict.charAt(unicode - 19968); + return this.polyphone[unicode] ? this.polyphone[unicode] : this.char_dict.charAt(unicode - 19968); + } + + _getResult(chars) { + if (!this.options.checkPolyphone) + return chars.join(''); + let result = ['']; + for (let i = 0, len = chars.length; i < len; i++) { + let str = chars[i]; + let strLen = str.length; + if (strLen == 1) { + for (let j = 0; j < result.length; j++) { + result[j] += str; + } + } else { + let swap1 = result.slice(0); + result = []; + for (let j = 0; j < strLen; j++) { + //复制一个相同的arrResult + let swap2 = swap1.slice(0); + //把当前字符str[k]添加到每个元素末尾 + for (let k = 0; k < swap2.length; k++) { + swap2[k] += str.charAt(j); + } + //把复制并修改后的数组连接到arrResult上 + result = result.concat(swap2); + } + } + } + return result; + } +} + +module.exports = Pinyin; \ No newline at end of file diff --git a/node_modules/jstoxml/.babelrc b/node_modules/jstoxml/.babelrc new file mode 100644 index 0000000..aba76df --- /dev/null +++ b/node_modules/jstoxml/.babelrc @@ -0,0 +1,15 @@ +{ + "plugins": [ + "@babel/plugin-transform-modules-umd" + ], + "presets": [ + [ + "@babel/preset-env", + { + "targets": { + "chrome": "30" + } + } + ] + ] +} \ No newline at end of file diff --git a/node_modules/jstoxml/.eslintrc b/node_modules/jstoxml/.eslintrc new file mode 100644 index 0000000..b7039f5 --- /dev/null +++ b/node_modules/jstoxml/.eslintrc @@ -0,0 +1,15 @@ +{ + "extends": ["eslint:recommended"], + "parser": "babel-eslint", + "plugins": [ + + ], + "rules": { + + }, + "env": { + "browser": true, + "node": true, + "mocha": true + } +} diff --git a/node_modules/jstoxml/.github/FUNDING.yml b/node_modules/jstoxml/.github/FUNDING.yml new file mode 100644 index 0000000..3244297 --- /dev/null +++ b/node_modules/jstoxml/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: https://www.paypal.me/davidbcalhoun diff --git a/node_modules/jstoxml/.github/workflows/ unit-tests.yml b/node_modules/jstoxml/.github/workflows/ unit-tests.yml new file mode 100644 index 0000000..3e299f1 --- /dev/null +++ b/node_modules/jstoxml/.github/workflows/ unit-tests.yml @@ -0,0 +1,29 @@ +name: unit testing +on: push +jobs: + build-and-test: + runs-on: ubuntu-latest + steps: + # Checks out code from Github. + - name: Checkout repo + uses: actions/checkout@v2 + # Restore cache if available. + - name: Restore cached dependencies + id: dep-cache + uses: actions/cache@v2 + env: + cache-name: jstoxml-cache + with: + path: node_modules + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + # Fully install from scratch when no cache is available. + - name: Install dependencies from scratch (cache miss only) + if: steps.dep-cache.outputs.cache-hit != 'true' + run: npm i + - name: Unit tests + run: npm test + shell: bash diff --git a/node_modules/jstoxml/CHANGELOG.md b/node_modules/jstoxml/CHANGELOG.md new file mode 100644 index 0000000..2a96b8a --- /dev/null +++ b/node_modules/jstoxml/CHANGELOG.md @@ -0,0 +1,43 @@ +# Changelog + +#### Version 2.2.0 +* Initial support for XML comments ([#47](https://github.com/davidcalhoun/jstoxml/issues/47)) + +#### Version 2.1.1 +* Fix for [#48](https://github.com/davidcalhoun/jstoxml/issues/48) (various 0-depth issues, bad "is output start" logic) + +#### Version 2.0.0 (breaking) + +- New: automatic entity escaping for `&`, `<`, and `>` characters. In addition, quotes `"` in attributes are also escaped (see [#41](/../../issues/41)). Prior to this, users [had to provide their own filter manually](https://github.com/davidcalhoun/jstoxml/issues/4#issuecomment-19165730). Note that `jstoxml` makes an effort not to escape entities that appear to have already been encoded, to prevent double-encoding issues. + - E.g. `toXML({ foo: '1 < 2 & 2 > 1' }); // -> "<foo>1 < 2 & 2 > 1</foo>"` + - To restore the default behavior from `v1.x.x`, simply pass in `false` to `filter` and `attributesFilter` options: + `toXML({ foo: '1 < 2 & 2 > 1' }, { filter: false, attributesFilter: false }); // -> "<foo>1 < 2 & 2 > 1</foo>"` + +#### Version 1.6.9 + +- fix for [#40](https://github.com/davidcalhoun/jstoxml/issues/47). Previously top-level objects and arrays were concatenated without proper line breaks. + +#### Version 1.4.2 + +- support for handling arrays of primitives, instead of simply concatenating [#33](/../../issues/33) + +#### Version 1.3.0 + +- restored `default` module export [#31](/../../issues/31) + +#### Version 1.2.0 + +- refactoring and cleanup + +#### Version 1.1.0 + +- Added support for attribute filtering (see Example 11b below). + +#### Version 1.0.0 + +- Complete rewrite! The code should now be easier to understand and maintain. +- now supports emoji/UTF8 tag attributes (needed for AMP pages - e.g. `<html ⚡ lang="en">`) (see example 14) +- now supports duplicate attribute key names (see example 15) +- Fixed: functions returning objects now have now that output passed through toXML for XML conversion +- Fixed: empty text strings now properly output self-closing tags +- Migrated tests to mocha \ No newline at end of file diff --git a/node_modules/jstoxml/LICENSE.md b/node_modules/jstoxml/LICENSE.md new file mode 100644 index 0000000..d5956ec --- /dev/null +++ b/node_modules/jstoxml/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 by David Calhoun (david.b.calhoun@gmail.com). + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/jstoxml/README.md b/node_modules/jstoxml/README.md new file mode 100644 index 0000000..4d92a32 --- /dev/null +++ b/node_modules/jstoxml/README.md @@ -0,0 +1,734 @@ +# jstoxml + +[![npm downloads](https://img.shields.io/npm/dm/jstoxml.svg)](https://www.npmjs.com/package/jstoxml) + +### Convert JavaScript objects (and JSON) to XML (for RSS, Podcasts, etc.) + +Everyone loves JSON, and more and more folks want to move that direction, but we still need things outputted in XML! Particularly for [RSS feeds](http://www.rssboard.org/rss-specification) and [Podcasts](http://www.apple.com/itunes/podcasts/specs.html). + +This is inspired by [node-jsontoxml](https://github.com/soldair/node-jsontoxml), which was found to be a bit too rough around the edges. jstoxml attempts to fix that by being more flexible. + +### Installation + +- npm install jstoxml + +### Changelog + +#### Version 2.2.0 +* Initial support for XML comments ([#47](https://github.com/davidcalhoun/jstoxml/issues/47)) + +#### Version 2.1.1 +* Fix for [#48](https://github.com/davidcalhoun/jstoxml/issues/48) (various 0-depth issues, bad "is output start" logic) + +#### Version 2.0.0 (breaking) + +- New: automatic entity escaping for `&`, `<`, and `>` characters. In addition, quotes `"` in attributes are also escaped (see [#41](/../../issues/41)). Prior to this, users [had to provide their own filter manually](https://github.com/davidcalhoun/jstoxml/issues/4#issuecomment-19165730). Note that `jstoxml` makes an effort not to escape entities that appear to have already been encoded, to prevent double-encoding issues. + - E.g. `toXML({ foo: '1 < 2 & 2 > 1' }); // -> "<foo>1 < 2 & 2 > 1</foo>"` + - To restore the default behavior from `v1.x.x`, simply pass in `false` to `filter` and `attributesFilter` options: + `toXML({ foo: '1 < 2 & 2 > 1' }, { filter: false, attributesFilter: false }); // -> "<foo>1 < 2 & 2 > 1</foo>"` + +#### Past changes +- See CHANGELOG.md for a full history of changes. + +### Examples + +First you'll want to require jstoxml in your script, and assign the result to the namespace variable you want to use (in this case jstoxml): + +```javascript +// Node +const { toXML } = require("jstoxml"); + +// Browser (with the help of something like Webpack or Rollup) +import { toXML } from "jstoxml"; + +// Browser global fallback (requires no bundler) +var toXML = window.jstoxml.toXML; +``` + +#### Example 1: Simple object + +```javascript +toXML({ + foo: "bar", + foo2: "bar2", +}); +``` + +Output: + +``` +<foo>bar</foo><foo2>bar2</foo2> +``` + +Note: because JavaScript doesn't allow duplicate key names, only the last defined key will be outputted. If you need duplicate keys, please use an array instead (see Example 2 below). + +#### Example 2: Simple array (needed for duplicate keys) + +```javascript +toXML([ + { + foo: "bar", + }, + { + foo: "bar2", + }, +]); +``` + +Output: + +``` +<foo>bar</foo><foo>bar2</foo> +``` + +#### Example 3: Simple functions + +```javascript +toXML({ currentTime: () => new Date() }); +``` + +Output: + +``` +<currentTime>Mon Oct 02 2017 09:34:54 GMT-0700 (PDT)</currentTime> +``` + +#### Example 4: XML tag attributes + +```javascript +toXML({ + _name: "foo", + _content: "bar", + _attrs: { + a: "b", + c: "d", + }, +}); +``` + +Output: + +``` +<foo a="b" c="d">bar</foo> +``` + +#### Example 5: Tags mixed with text content + +To output text content, set a key to null: + +```javascript +toXML({ + text1: null, + foo: "bar", + text2: null, +}); +``` + +Output: + +``` +text1<foo>bar</foo>text2 +``` + +#### Example 6: Nested tags (with indenting) + +```javascript +const xmlOptions = { + header: false, + indent: " ", +}; + +toXML( + { + a: { + foo: "bar", + foo2: "bar2", + }, + }, + xmlOptions +); +``` + +Output: + +``` +<a> + <foo>bar</foo> + <foo2>bar2</foo2> +</a> +``` + +#### Example 7: Nested tags with attributes (with indenting) + +```javascript +const xmlOptions = { + header: false, + indent: " ", +}; + +toXML( + { + ooo: { + _name: "foo", + _attrs: { + a: "b", + }, + _content: { + _name: "bar", + _attrs: { + c: "d", + }, + }, + }, + }, + xmlOptions +); +``` + +Output: + +``` +<ooo> + <foo a="b"> + <bar c="d"/> + </foo> +</ooo> +``` + +Note that cases like this might be especially hard to read because of the deep nesting, so it's recommend you use something like this pattern instead, which breaks it up into more readable pieces: + +```javascript +const bar = { + _name: "bar", + _attrs: { + c: "d", + }, +}; + +const foo = { + _name: "foo", + _attrs: { + a: "b", + }, + _content: bar, +}; + +const xmlOptions = { + header: false, + indent: " ", +}; + +return toXML( + { + ooo: foo, + }, + xmlOptions +); +``` + +#### Example 8: Complex functions + +Function outputs will be processed (fed back into toXML), meaning that you can output objects that will in turn be converted to XML. + +```javascript +toXML({ + someNestedXML: () => { + return { + foo: "bar", + }; + }, +}); +``` + +Output: + +``` +<someNestedXML><foo>bar</foo></someNestedXML> +``` + +#### Example 9: RSS Feed + +```javascript +const xmlOptions = { + header: true, + indent: " ", +}; + +toXML( + { + _name: "rss", + _attrs: { + version: "2.0", + }, + _content: { + channel: [ + { + title: "RSS Example", + }, + { + description: "Description", + }, + { + link: "google.com", + }, + { + lastBuildDate: () => new Date(), + }, + { + pubDate: () => new Date(), + }, + { + language: "en", + }, + { + item: { + title: "Item title", + link: "Item link", + description: "Item Description", + pubDate: () => new Date(), + }, + }, + { + item: { + title: "Item2 title", + link: "Item2 link", + description: "Item2 Description", + pubDate: () => new Date(), + }, + }, + ], + }, + }, + xmlOptions +); +``` + +Output: + +``` +<?xml version="1.0" encoding="UTF-8"?> +<rss version="2.0"> + <channel> + <title>RSS Example + Description + google.com + Sat Jul 30 2011 18:14:25 GMT+0900 (JST) + Sat Jul 30 2011 18:14:25 GMT+0900 (JST) + en + + Item title + Item link + Item Description + Sat Jul 30 2011 18:33:47 GMT+0900 (JST) + + + Item2 title + Item2 link + Item2 Description + Sat Jul 30 2011 18:33:47 GMT+0900 (JST) + + + +``` + +#### Example 10: Podcast RSS Feed + +(see the [Apple docs](http://www.apple.com/itunes/podcasts/specs.html) for more information) + +```javascript +const xmlOptions = { + header: true, + indent: " ", +}; + +toXML( + { + _name: "rss", + _attrs: { + "xmlns:itunes": "http://www.itunes.com/dtds/podcast-1.0.dtd", + version: "2.0", + }, + _content: { + channel: [ + { + title: "Title", + }, + { + link: "google.com", + }, + { + language: "en-us", + }, + { + copyright: "Copyright 2011", + }, + { + "itunes:subtitle": "Subtitle", + }, + { + "itunes:author": "Author", + }, + { + "itunes:summary": "Summary", + }, + { + description: "Description", + }, + { + "itunes:owner": { + "itunes:name": "Name", + "itunes:email": "Email", + }, + }, + { + _name: "itunes:image", + _attrs: { + href: "image.jpg", + }, + }, + { + _name: "itunes:category", + _attrs: { + text: "Technology", + }, + _content: { + _name: "itunes:category", + _attrs: { + text: "Gadgets", + }, + }, + }, + { + _name: "itunes:category", + _attrs: { + text: "TV & Film", + }, + }, + { + item: [ + { + title: "Podcast Title", + }, + { + "itunes:author": "Author", + }, + { + "itunes:subtitle": "Subtitle", + }, + { + "itunes:summary": "Summary", + }, + { + "itunes:image": "image.jpg", + }, + { + _name: "enclosure", + _attrs: { + url: "http://example.com/podcast.m4a", + length: "8727310", + type: "audio/x-m4a", + }, + }, + { + guid: "http://example.com/archive/aae20050615.m4a", + }, + { + pubDate: "Wed, 15 Jun 2011 19:00:00 GMT", + }, + { + "itunes:duration": "7:04", + }, + { + "itunes:keywords": "salt, pepper, shaker, exciting", + }, + ], + }, + { + item: [ + { + title: "Podcast2 Title", + }, + { + "itunes:author": "Author2", + }, + { + "itunes:subtitle": "Subtitle2", + }, + { + "itunes:summary": "Summary2", + }, + { + "itunes:image": "image2.jpg", + }, + { + _name: "enclosure", + _attrs: { + url: "http://example.com/podcast2.m4a", + length: "655555", + type: "audio/x-m4a", + }, + }, + { + guid: "http://example.com/archive/aae2.m4a", + }, + { + pubDate: "Wed, 15 Jul 2011 19:00:00 GMT", + }, + { + "itunes:duration": "11:20", + }, + { + "itunes:keywords": "foo, bar", + }, + ], + }, + ], + }, + }, + xmlOptions +); +``` + +Output: + +``` + + + + Title + google.com + en-us + Copyright 2011 + Subtitle + Author + Summary + Description + + Name + Email + + + + + + + + Podcast Title + Author + Subtitle + Summary + image.jpg + + http://example.com/archive/aae20050615.m4a + Wed, 15 Jun 2011 19:00:00 GMT + 7:04 + salt, pepper, shaker, exciting + + + Podcast2 Title + Author2 + Subtitle2 + Summary2 + image2.jpg + + http://example.com/archive/aae2.m4a + Wed, 15 Jul 2011 19:00:00 GMT + 11:20 + foo, bar + + + +``` + +#### Example 11: Custom filter for XML entities, or whatever + +```javascript +const xmlOptions = { + filter: { + "<": "<", + ">": ">", + '"': """, + "'": "'", + "&": "&", + }, +}; + +toXML( + { + foo: "", + bar: '"b"', + baz: "'&whee'", + }, + xmlOptions +); +``` + +Output: + +``` +<a>"b"'&whee' +``` + +#### Example 11b: Custom filter for XML attributes + +```javascript +const xmlOptions = { + attributesFilter: { + "<": "<", + ">": ">", + '"': """, + "'": "'", + "&": "&", + }, +}; + +toXML( + { + _name: "foo", + _attrs: { a: '<"\'&"foo>' }, + }, + xmlOptions +); +``` + +Output: + +``` + +``` + +#### Example 12: Avoiding self-closing tags + +If for some reason you want to avoid self-closing tags, you can pass in a special config option `_selfCloseTag`: + +```javascript +const xmlOptions = { + _selfCloseTag: false, +}; + +toXML( + { + foo: "", + bar: undefined, + }, + xmlOptions +); +``` + +Output: + +``` +whee +``` + +#### Example 13: Custom XML header + +```javascript +const xmlOptions = { + header: '', +}; + +toXML( + { + foo: "bar", + }, + xmlOptions +); +``` + +Output: + +``` +barbar2 +``` + +#### Example 14: Emoji attribute support (needed for AMP) + +```javascript +toXML({ + html: { + _attrs: { + "⚡": true, + }, + }, +}); +``` + +Output: + +``` + +``` + +#### Example 15: Duplicate attribute key support + +```javascript +toXML({ + html: { + _attrs: [ + { + lang: "en", + }, + { + lang: "klingon", + }, + ], + }, +}); +``` + +Output: + +``` + +``` + +#### Example 16: XML comments + +```javascript +toXML({ + _comment: 'Some important comment', + a: { + b: [1, 2, 3] + } +}, { indent: ' ' }); +``` + +Output: + +``` + + + 1 + 2 + 3 + +``` + +#### Example 17: Multiple XML comments + +```javascript +toXML([ + { _comment: 'Some important comment' }, + { _comment: 'This is a very long comment!' }, + { _comment: 'More important exposition!' }, + { a: { b: [1, 2, 3] } } +], { indent: ' ' }); +``` + +Output: + +``` + + + + + 1 + 2 + 3 + +``` + +### License + +MIT diff --git a/node_modules/jstoxml/dist.sh b/node_modules/jstoxml/dist.sh new file mode 100644 index 0000000..9fbaa24 --- /dev/null +++ b/node_modules/jstoxml/dist.sh @@ -0,0 +1,4 @@ +mkdir dist || true + +npx babel jstoxml.js --out-file dist/jstoxml.js +npx uglifyjs dist/jstoxml.js -ecma=5 -o dist/jstoxml-min.js \ No newline at end of file diff --git a/node_modules/jstoxml/dist/jstoxml-min.js b/node_modules/jstoxml/dist/jstoxml-min.js new file mode 100644 index 0000000..f1cdbd2 --- /dev/null +++ b/node_modules/jstoxml/dist/jstoxml-min.js @@ -0,0 +1 @@ +!function(t,e){if("function"==typeof define&&define.amd)define(["exports"],e);else if("undefined"!=typeof exports)e(exports);else{var n={exports:{}};e(n.exports),t.jstoxml=n.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(t){"use strict";function e(t){return function(t){if(Array.isArray(t))return n(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return n(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return n(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("string"!=typeof t)return t;var n=new RegExp("(".concat(Object.keys(e).join("|"),")(?!(\\w|#)*;)"),"g");return String(t).replace(n,function(t,n){return e[n]||""})},s=function(){var t=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,n=[];n=Array.isArray(t)?t.map(function(t){var n=Object.keys(t)[0],r=t[n],o=e?l(r,e):r,a=!0===o?"":'="'.concat(o,'"');return"".concat(n).concat(a)}):Object.keys(t).map(function(n){var r=e?l(t[n],e):t[n],o=!0===t[n]?"":'="'.concat(r,'"');return"".concat(n).concat(o)});return n}(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0);if(0===t.length)return"";var e=t.join(" ");return" ".concat(e)},p=["string","number","boolean"],b=function(t){return p.includes(f(t))},y=([].concat(p,["date","special-object"]),{"<":"<",">":">","&":"&"}),d=function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=r.depth,p=void 0===a?0:a,d=r.indent,v=r._isFirstItem,m=r._isOutputStart,g=void 0===m||m,h=r.header,j=r.attributesFilter,O=void 0===j?{}:j,_=r.filter,S=void 0===_?{}:_,k="boolean"==typeof O&&!O?{}:o(o(o({},y),{'"':"""}),O),w="boolean"==typeof S&&!S?{}:o(o({},y),S),A=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t.repeat(e)}(d,p),x=f(n),P=function(t){var e=t.header,n=(t.indent,t.isOutputStart);return e&&n?"boolean"===c(e)?'':e:""}({header:h,indent:d,depth:p,isOutputStart:g}),I=g&&!P&&v&&0===p,T="";switch(x){case"special-object":var E=n._name,D=n._content;if(null===D){T=E;break}if(Array.isArray(D)&&D.every(b))return D.map(function(e){return t({_name:E,_content:e},o(o({},r),{},{depth:p,_isOutputStart:!1}))}).join("");if(E.match(u))break;var F=t(D,o(o({},r),{},{depth:p+1,_isOutputStart:I})),L=f(F),M=!F.match("<"),C="".concat(d&&!I?"\n":"").concat(A);if("_comment"===E){T+="".concat(C,"\x3c!-- ").concat(D," --\x3e");break}var X="undefined"===L||""===F,R="boolean"===c(n._selfCloseTag)?X&&n._selfCloseTag:X,U=R?"/":"",q=s(n._attrs,k),$="<".concat(E).concat(q).concat(U,">"),z=d&&!M?"\n".concat(A):"",B=R?"":"".concat(F).concat(z,"");T+="".concat(C).concat($).concat(B);break;case"object":var G=Object.keys(n);T=G.map(function(a,c){var u=o(o({},r),{},{_isFirstItem:0===c,_isLastItem:c+1===G.length,_isOutputStart:I}),l={_name:a};if("object"===f(n[a])&&(i.forEach(function(t){var e=n[a][t];void 0!==e&&(l[t]=e,delete n[a][t])}),void 0!==n[a]._content&&Object.keys(n[a]).length>1)){var s=Object.assign({},n[a]);delete s._content,l._content=[].concat(e(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(t).map(function(e){return{_name:e,_content:t[e]}})}(s)),[n[a]._content])}return void 0===l._content&&(l._content=n[a]),t(l,u,a)},r).join("");break;case"function":var H=n(r);T=t(H,r);break;case"array":T=n.map(function(e,a){var c=o(o({},r),{},{_isFirstItem:0===a,_isLastItem:a+1===n.length,_isOutputStart:I});return t(e,c)}).join("");break;default:T=l(n,w)}return"".concat(P).concat(T)};t.toXML=d;var v={toXML:d};t.default=v}); \ No newline at end of file diff --git a/node_modules/jstoxml/dist/jstoxml.js b/node_modules/jstoxml/dist/jstoxml.js new file mode 100644 index 0000000..8bf4cae --- /dev/null +++ b/node_modules/jstoxml/dist/jstoxml.js @@ -0,0 +1,427 @@ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(["exports"], factory); + } else if (typeof exports !== "undefined") { + factory(exports); + } else { + var mod = { + exports: {} + }; + factory(mod.exports); + global.jstoxml = mod.exports; + } +})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports) { + "use strict"; + + Object.defineProperty(_exports, "__esModule", { + value: true + }); + _exports.toXML = _exports.default = void 0; + + function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + + function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + + function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + + function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + + function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + + function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + + function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } + + function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } + + function _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; } + + function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } + + var ARRAY = "array"; + var BOOLEAN = "boolean"; + var DATE = "date"; + var NULL = "null"; + var NUMBER = "number"; + var OBJECT = "object"; + var SPECIAL_OBJECT = "special-object"; + var STRING = "string"; + var PRIVATE_VARS = ["_selfCloseTag", "_attrs"]; + var PRIVATE_VARS_REGEXP = new RegExp(PRIVATE_VARS.join("|"), "g"); + /** + * Determines the indent string based on current tree depth. + */ + + var getIndentStr = function getIndentStr() { + var indent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + return indent.repeat(depth); + }; + /** + * Sugar function supplementing JS's quirky typeof operator, plus some extra help to detect + * "special objects" expected by jstoxml. + * Example: + * getType(new Date()); + * -> 'date' + */ + + + var getType = function getType(val) { + return Array.isArray(val) && ARRAY || _typeof(val) === OBJECT && val !== null && val._name && SPECIAL_OBJECT || val instanceof Date && DATE || val === null && NULL || _typeof(val); + }; + /** + * Replaces matching values in a string with a new value. + * Example: + * filterStr('foo&bar', { '&': '&' }); + * -> 'foo&bar' + */ + + + var filterStr = function filterStr() { + var inputStr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; + var filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + // Passthrough/no-op for nonstrings (e.g. number, boolean). + if (typeof inputStr !== "string") { + return inputStr; + } + + var regexp = new RegExp("(".concat(Object.keys(filter).join("|"), ")(?!(\\w|#)*;)"), "g"); + return String(inputStr).replace(regexp, function (str, entity) { + return filter[entity] || ""; + }); + }; + /** + * Maps an object or array of arribute keyval pairs to a string. + * Examples: + * { foo: 'bar', baz: 'g' } -> 'foo="bar" baz="g"' + * [ { ⚡: true }, { foo: 'bar' } ] -> '⚡ foo="bar"' + */ + + + var getAttributeKeyVals = function getAttributeKeyVals() { + var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var filter = arguments.length > 1 ? arguments[1] : undefined; + var keyVals = []; + + if (Array.isArray(attributes)) { + // Array containing complex objects and potentially duplicate attributes. + keyVals = attributes.map(function (attr) { + var key = Object.keys(attr)[0]; + var val = attr[key]; + var filteredVal = filter ? filterStr(val, filter) : val; + var valStr = filteredVal === true ? "" : "=\"".concat(filteredVal, "\""); + return "".concat(key).concat(valStr); + }); + } else { + var keys = Object.keys(attributes); + keyVals = keys.map(function (key) { + // Simple object - keyval pairs. + // For boolean true, simply output the key. + var filteredVal = filter ? filterStr(attributes[key], filter) : attributes[key]; + var valStr = attributes[key] === true ? "" : "=\"".concat(filteredVal, "\""); + return "".concat(key).concat(valStr); + }); + } + + return keyVals; + }; + /** + * Converts an attributes object/array to a string of keyval pairs. + * Example: + * formatAttributes({ a: 1, b: 2 }) + * -> 'a="1" b="2"' + */ + + + var formatAttributes = function formatAttributes() { + var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var filter = arguments.length > 1 ? arguments[1] : undefined; + var keyVals = getAttributeKeyVals(attributes, filter); + if (keyVals.length === 0) return ""; + var keysValsJoined = keyVals.join(" "); + return " ".concat(keysValsJoined); + }; + /** + * Converts an object to a jstoxml array. + * Example: + * objToArray({ foo: 'bar', baz: 2 }); + * -> + * [ + * { + * _name: 'foo', + * _content: 'bar' + * }, + * { + * _name: 'baz', + * _content: 2 + * } + * ] + */ + + + var objToArray = function objToArray() { + var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return Object.keys(obj).map(function (key) { + return { + _name: key, + _content: obj[key] + }; + }); + }; + /** + * Determines if a value is a primitive JavaScript value (not including Symbol). + * Example: + * isPrimitive(4); + * -> true + */ + + + var PRIMITIVE_TYPES = [STRING, NUMBER, BOOLEAN]; + + var isPrimitive = function isPrimitive(val) { + return PRIMITIVE_TYPES.includes(getType(val)); + }; + /** + * Determines if a value is a simple primitive type that can fit onto one line. Needed for + * determining any needed indenting and line breaks. + * Example: + * isSimpleType(new Date()); + * -> true + */ + + + var SIMPLE_TYPES = [].concat(PRIMITIVE_TYPES, [DATE, SPECIAL_OBJECT]); + + var isSimpleType = function isSimpleType(val) { + return SIMPLE_TYPES.includes(getType(val)); + }; + /** + * Determines if an XML string is a simple primitive, or contains nested data. + * Example: + * isSimpleXML(''); + * -> false + */ + + + var isSimpleXML = function isSimpleXML(xmlStr) { + return !xmlStr.match("<"); + }; + /** + * Assembles an XML header as defined by the config. + */ + + + var DEFAULT_XML_HEADER = ''; + + var getHeaderString = function getHeaderString(_ref) { + var header = _ref.header, + indent = _ref.indent, + isOutputStart = _ref.isOutputStart; + var shouldOutputHeader = header && isOutputStart; + if (!shouldOutputHeader) return ""; + var shouldUseDefaultHeader = _typeof(header) === BOOLEAN; // return `${shouldUseDefaultHeader ? DEFAULT_XML_HEADER : header}${indent ? "\n" : "" + // }`; + + return shouldUseDefaultHeader ? DEFAULT_XML_HEADER : header; + }; + /** + * Recursively traverses an object tree and converts the output to an XML string. + * Example: + * toXML({ foo: 'bar' }); + * -> bar + */ + + + var defaultEntityFilter = { + "<": "<", + ">": ">", + "&": "&" + }; + + var toXML = function toXML() { + var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var _config$depth = config.depth, + depth = _config$depth === void 0 ? 0 : _config$depth, + indent = config.indent, + _isFirstItem = config._isFirstItem, + _config$_isOutputStar = config._isOutputStart, + _isOutputStart = _config$_isOutputStar === void 0 ? true : _config$_isOutputStar, + header = config.header, + _config$attributesFil = config.attributesFilter, + rawAttributesFilter = _config$attributesFil === void 0 ? {} : _config$attributesFil, + _config$filter = config.filter, + rawFilter = _config$filter === void 0 ? {} : _config$filter; + + var shouldTurnOffAttributesFilter = typeof rawAttributesFilter === 'boolean' && !rawAttributesFilter; + var attributesFilter = shouldTurnOffAttributesFilter ? {} : _objectSpread(_objectSpread(_objectSpread({}, defaultEntityFilter), { + '"': """ + }), rawAttributesFilter); + var shouldTurnOffFilter = typeof rawFilter === 'boolean' && !rawFilter; + var filter = shouldTurnOffFilter ? {} : _objectSpread(_objectSpread({}, defaultEntityFilter), rawFilter); // Determine indent string based on depth. + + var indentStr = getIndentStr(indent, depth); // For branching based on value type. + + var valType = getType(obj); + var headerStr = getHeaderString({ + header: header, + indent: indent, + depth: depth, + isOutputStart: _isOutputStart + }); + var isOutputStart = _isOutputStart && !headerStr && _isFirstItem && depth === 0; + var outputStr = ""; + + switch (valType) { + case "special-object": + { + // Processes a specially-formatted object used by jstoxml. + var _name = obj._name, + _content = obj._content; // Output text content without a tag wrapper. + + if (_content === null) { + outputStr = _name; + break; + } // Handles arrays of primitive values. (#33) + + + var isArrayOfPrimitives = Array.isArray(_content) && _content.every(isPrimitive); + + if (isArrayOfPrimitives) { + var primitives = _content.map(function (a) { + return toXML({ + _name: _name, + _content: a + }, _objectSpread(_objectSpread({}, config), {}, { + depth: depth, + _isOutputStart: false + })); + }); + + return primitives.join(''); + } // Don't output private vars (such as _attrs). + + + if (_name.match(PRIVATE_VARS_REGEXP)) break; // Process the nested new value and create new config. + + var newVal = toXML(_content, _objectSpread(_objectSpread({}, config), {}, { + depth: depth + 1, + _isOutputStart: isOutputStart + })); + var newValType = getType(newVal); + var isNewValSimple = isSimpleXML(newVal); // Pre-tag output (indent and line breaks). + + var preIndentStr = indent && !isOutputStart ? "\n" : ""; + var preTag = "".concat(preIndentStr).concat(indentStr); // Special handling for comments, preserving preceding line breaks/indents. + + if (_name === '_comment') { + outputStr += "".concat(preTag, ""); + break; + } // Tag output. + + + var valIsEmpty = newValType === "undefined" || newVal === ""; + var shouldSelfClose = _typeof(obj._selfCloseTag) === BOOLEAN ? valIsEmpty && obj._selfCloseTag : valIsEmpty; + var selfCloseStr = shouldSelfClose ? "/" : ""; + var attributesString = formatAttributes(obj._attrs, attributesFilter); + var tag = "<".concat(_name).concat(attributesString).concat(selfCloseStr, ">"); // Post-tag output (closing tag, indent, line breaks). + + var preTagCloseStr = indent && !isNewValSimple ? "\n".concat(indentStr) : ""; + var postTag = !shouldSelfClose ? "".concat(newVal).concat(preTagCloseStr, "") : ""; + outputStr += "".concat(preTag).concat(tag).concat(postTag); + break; + } + + case "object": + { + // Iterates over keyval pairs in an object, converting each item to a special-object. + var keys = Object.keys(obj); + var outputArr = keys.map(function (key, index) { + var newConfig = _objectSpread(_objectSpread({}, config), {}, { + _isFirstItem: index === 0, + _isLastItem: index + 1 === keys.length, + _isOutputStart: isOutputStart + }); + + var outputObj = { + _name: key + }; + + if (getType(obj[key]) === "object") { + // Sub-object contains an object. + // Move private vars up as needed. Needed to support certain types of objects + // E.g. { foo: { _attrs: { a: 1 } } } -> + PRIVATE_VARS.forEach(function (privateVar) { + var val = obj[key][privateVar]; + + if (typeof val !== "undefined") { + outputObj[privateVar] = val; + delete obj[key][privateVar]; + } + }); + var hasContent = typeof obj[key]._content !== "undefined"; + + if (hasContent) { + // _content has sibling keys, so pass as an array (edge case). + // E.g. { foo: 'bar', _content: { baz: 2 } } -> bar2 + if (Object.keys(obj[key]).length > 1) { + var newContentObj = Object.assign({}, obj[key]); + delete newContentObj._content; + outputObj._content = [].concat(_toConsumableArray(objToArray(newContentObj)), [obj[key]._content]); + } + } + } // Fallthrough: just pass the key as the content for the new special-object. + + + if (typeof outputObj._content === "undefined") outputObj._content = obj[key]; + var xml = toXML(outputObj, newConfig, key); + return xml; + }, config); + outputStr = outputArr.join(''); + break; + } + + case "function": + { + // Executes a user-defined function and returns output. + var fnResult = obj(config); + outputStr = toXML(fnResult, config); + break; + } + + case "array": + { + // Iterates and converts each value in an array. + var _outputArr = obj.map(function (singleVal, index) { + var newConfig = _objectSpread(_objectSpread({}, config), {}, { + _isFirstItem: index === 0, + _isLastItem: index + 1 === obj.length, + _isOutputStart: isOutputStart + }); + + return toXML(singleVal, newConfig); + }); + + outputStr = _outputArr.join(''); + break; + } + // number, string, boolean, date, null, etc + + default: + { + outputStr = filterStr(obj, filter); + break; + } + } + + return "".concat(headerStr).concat(outputStr); + }; + + _exports.toXML = toXML; + var _default = { + toXML: toXML + }; + _exports.default = _default; +}); diff --git a/node_modules/jstoxml/jstoxml.js b/node_modules/jstoxml/jstoxml.js new file mode 100644 index 0000000..40d5de2 --- /dev/null +++ b/node_modules/jstoxml/jstoxml.js @@ -0,0 +1,378 @@ +const ARRAY = "array"; +const BOOLEAN = "boolean"; +const DATE = "date"; +const NULL = "null"; +const NUMBER = "number"; +const OBJECT = "object"; +const SPECIAL_OBJECT = "special-object"; +const STRING = "string"; + +const PRIVATE_VARS = ["_selfCloseTag", "_attrs"]; +const PRIVATE_VARS_REGEXP = new RegExp(PRIVATE_VARS.join("|"), "g"); + +/** + * Determines the indent string based on current tree depth. + */ +const getIndentStr = (indent = "", depth = 0) => indent.repeat(depth); + +/** + * Sugar function supplementing JS's quirky typeof operator, plus some extra help to detect + * "special objects" expected by jstoxml. + * Example: + * getType(new Date()); + * -> 'date' + */ +const getType = (val) => + (Array.isArray(val) && ARRAY) || + (typeof val === OBJECT && val !== null && val._name && SPECIAL_OBJECT) || + (val instanceof Date && DATE) || + (val === null && NULL) || + typeof val; + +/** + * Replaces matching values in a string with a new value. + * Example: + * filterStr('foo&bar', { '&': '&' }); + * -> 'foo&bar' + */ +const filterStr = (inputStr = "", filter = {}) => { + // Passthrough/no-op for nonstrings (e.g. number, boolean). + if (typeof inputStr !== "string") { + return inputStr; + } + + const regexp = new RegExp( + `(${Object.keys(filter).join("|")})(?!(\\w|#)*;)`, + "g" + ); + + return String(inputStr).replace( + regexp, + (str, entity) => filter[entity] || "" + ); +}; + +/** + * Maps an object or array of arribute keyval pairs to a string. + * Examples: + * { foo: 'bar', baz: 'g' } -> 'foo="bar" baz="g"' + * [ { ⚡: true }, { foo: 'bar' } ] -> '⚡ foo="bar"' + */ +const getAttributeKeyVals = (attributes = {}, filter) => { + let keyVals = []; + if (Array.isArray(attributes)) { + // Array containing complex objects and potentially duplicate attributes. + keyVals = attributes.map((attr) => { + const key = Object.keys(attr)[0]; + const val = attr[key]; + + const filteredVal = filter ? filterStr(val, filter) : val; + const valStr = filteredVal === true ? "" : `="${filteredVal}"`; + return `${key}${valStr}`; + }); + } else { + const keys = Object.keys(attributes); + keyVals = keys.map((key) => { + // Simple object - keyval pairs. + + // For boolean true, simply output the key. + const filteredVal = filter + ? filterStr(attributes[key], filter) + : attributes[key]; + const valStr = attributes[key] === true ? "" : `="${filteredVal}"`; + + return `${key}${valStr}`; + }); + } + + return keyVals; +}; + +/** + * Converts an attributes object/array to a string of keyval pairs. + * Example: + * formatAttributes({ a: 1, b: 2 }) + * -> 'a="1" b="2"' + */ +const formatAttributes = (attributes = {}, filter) => { + const keyVals = getAttributeKeyVals(attributes, filter); + if (keyVals.length === 0) return ""; + + const keysValsJoined = keyVals.join(" "); + return ` ${keysValsJoined}`; +}; + +/** + * Converts an object to a jstoxml array. + * Example: + * objToArray({ foo: 'bar', baz: 2 }); + * -> + * [ + * { + * _name: 'foo', + * _content: 'bar' + * }, + * { + * _name: 'baz', + * _content: 2 + * } + * ] + */ +const objToArray = (obj = {}) => + Object.keys(obj).map((key) => { + return { + _name: key, + _content: obj[key], + }; + }); + +/** + * Determines if a value is a primitive JavaScript value (not including Symbol). + * Example: + * isPrimitive(4); + * -> true + */ +const PRIMITIVE_TYPES = [STRING, NUMBER, BOOLEAN]; +const isPrimitive = (val) => PRIMITIVE_TYPES.includes(getType(val)); + +/** + * Determines if a value is a simple primitive type that can fit onto one line. Needed for + * determining any needed indenting and line breaks. + * Example: + * isSimpleType(new Date()); + * -> true + */ +const SIMPLE_TYPES = [...PRIMITIVE_TYPES, DATE, SPECIAL_OBJECT]; +const isSimpleType = (val) => SIMPLE_TYPES.includes(getType(val)); +/** + * Determines if an XML string is a simple primitive, or contains nested data. + * Example: + * isSimpleXML(''); + * -> false + */ +const isSimpleXML = (xmlStr) => !xmlStr.match("<"); + +/** + * Assembles an XML header as defined by the config. + */ +const DEFAULT_XML_HEADER = ''; +const getHeaderString = ({ header, indent, isOutputStart /*, depth */ }) => { + const shouldOutputHeader = header && isOutputStart; + if (!shouldOutputHeader) return ""; + + const shouldUseDefaultHeader = typeof header === BOOLEAN; + // return `${shouldUseDefaultHeader ? DEFAULT_XML_HEADER : header}${indent ? "\n" : "" + // }`; + return shouldUseDefaultHeader ? DEFAULT_XML_HEADER : header; +}; + +/** + * Recursively traverses an object tree and converts the output to an XML string. + * Example: + * toXML({ foo: 'bar' }); + * -> bar + */ +const defaultEntityFilter = { + "<": "<", + ">": ">", + "&": "&", +}; +export const toXML = (obj = {}, config = {}) => { + const { + // Tree depth + depth = 0, + indent, + _isFirstItem, + // _isLastItem, + _isOutputStart = true, + header, + attributesFilter: rawAttributesFilter = {}, + filter: rawFilter = {}, + } = config; + + const shouldTurnOffAttributesFilter = typeof rawAttributesFilter === 'boolean' && !rawAttributesFilter; + const attributesFilter = shouldTurnOffAttributesFilter ? {} : { + ...defaultEntityFilter, + ...{ '"': """ }, + ...rawAttributesFilter, + }; + + const shouldTurnOffFilter = typeof rawFilter === 'boolean' && !rawFilter; + const filter = shouldTurnOffFilter ? {} : { ...defaultEntityFilter, ...rawFilter }; + + // Determine indent string based on depth. + const indentStr = getIndentStr(indent, depth); + + // For branching based on value type. + const valType = getType(obj); + + const headerStr = getHeaderString({ header, indent, depth, isOutputStart: _isOutputStart }); + + const isOutputStart = _isOutputStart && !headerStr && _isFirstItem && depth === 0; + + let outputStr = ""; + switch (valType) { + case "special-object": { + // Processes a specially-formatted object used by jstoxml. + + const { _name, _content } = obj; + + // Output text content without a tag wrapper. + if (_content === null) { + outputStr = _name; + break; + } + + // Handles arrays of primitive values. (#33) + const isArrayOfPrimitives = + Array.isArray(_content) && _content.every(isPrimitive); + if (isArrayOfPrimitives) { + const primitives = _content + .map((a) => { + return toXML( + { + _name, + _content: a, + }, + { + ...config, + depth, + _isOutputStart: false + } + ); + }); + return primitives.join(''); + } + + // Don't output private vars (such as _attrs). + if (_name.match(PRIVATE_VARS_REGEXP)) break; + + // Process the nested new value and create new config. + const newVal = toXML(_content, { ...config, depth: depth + 1, _isOutputStart: isOutputStart }); + const newValType = getType(newVal); + const isNewValSimple = isSimpleXML(newVal); + + // Pre-tag output (indent and line breaks). + const preIndentStr = (indent && !isOutputStart) ? "\n" : ""; + const preTag = `${preIndentStr}${indentStr}`; + + // Special handling for comments, preserving preceding line breaks/indents. + if (_name === '_comment') { + outputStr += `${preTag}`; + break; + } + + // Tag output. + const valIsEmpty = newValType === "undefined" || newVal === ""; + const shouldSelfClose = + typeof obj._selfCloseTag === BOOLEAN + ? valIsEmpty && obj._selfCloseTag + : valIsEmpty; + const selfCloseStr = shouldSelfClose ? "/" : ""; + const attributesString = formatAttributes(obj._attrs, attributesFilter); + const tag = `<${_name}${attributesString}${selfCloseStr}>`; + + // Post-tag output (closing tag, indent, line breaks). + const preTagCloseStr = indent && !isNewValSimple ? `\n${indentStr}` : ""; + const postTag = !shouldSelfClose + ? `${newVal}${preTagCloseStr}` + : ""; + outputStr += `${preTag}${tag}${postTag}`; + break; + } + + case "object": { + // Iterates over keyval pairs in an object, converting each item to a special-object. + + const keys = Object.keys(obj); + const outputArr = keys.map((key, index) => { + const newConfig = { + ...config, + _isFirstItem: index === 0, + _isLastItem: index + 1 === keys.length, + _isOutputStart: isOutputStart + }; + + const outputObj = { _name: key }; + + if (getType(obj[key]) === "object") { + // Sub-object contains an object. + + // Move private vars up as needed. Needed to support certain types of objects + // E.g. { foo: { _attrs: { a: 1 } } } -> + PRIVATE_VARS.forEach((privateVar) => { + const val = obj[key][privateVar]; + if (typeof val !== "undefined") { + outputObj[privateVar] = val; + delete obj[key][privateVar]; + } + }); + + const hasContent = typeof obj[key]._content !== "undefined"; + if (hasContent) { + // _content has sibling keys, so pass as an array (edge case). + // E.g. { foo: 'bar', _content: { baz: 2 } } -> bar2 + if (Object.keys(obj[key]).length > 1) { + const newContentObj = Object.assign({}, obj[key]); + delete newContentObj._content; + + outputObj._content = [ + ...objToArray(newContentObj), + obj[key]._content, + ]; + } + } + } + + // Fallthrough: just pass the key as the content for the new special-object. + if (typeof outputObj._content === "undefined") + outputObj._content = obj[key]; + + const xml = toXML(outputObj, newConfig, key); + + return xml; + }, config); + + outputStr = outputArr.join(''); + break; + } + + case "function": { + // Executes a user-defined function and returns output. + + const fnResult = obj(config); + + outputStr = toXML(fnResult, config); + break; + } + + case "array": { + // Iterates and converts each value in an array. + const outputArr = obj.map((singleVal, index) => { + const newConfig = { + ...config, + _isFirstItem: index === 0, + _isLastItem: index + 1 === obj.length, + _isOutputStart: isOutputStart + }; + return toXML(singleVal, newConfig); + }); + + outputStr = outputArr.join(''); + + break; + } + + // number, string, boolean, date, null, etc + default: { + outputStr = filterStr(obj, filter); + break; + } + } + + return `${headerStr}${outputStr}`; +}; + +export default { + toXML, +}; diff --git a/node_modules/jstoxml/package.json b/node_modules/jstoxml/package.json new file mode 100644 index 0000000..824f0f2 --- /dev/null +++ b/node_modules/jstoxml/package.json @@ -0,0 +1,42 @@ +{ + "name": "jstoxml", + "version": "2.2.9", + "description": "Converts JavaScript/JSON to XML (for RSS, Podcasts, AMP, etc.)", + "homepage": "http://github.com/davidcalhoun/jstoxml", + "keywords": [ + "amp", + "google amp", + "json", + "podcast", + "rss", + "sitemap", + "site map", + "xml" + ], + "main": "dist/jstoxml.js", + "author": "David Calhoun ", + "license": "MIT", + "repository": "git://github.com/davidcalhoun/jstoxml", + "scripts": { + "dist": "./dist.sh", + "prepare": "./dist.sh", + "test": "rm -rf dist && ./dist.sh && mocha test.js", + "patch": "npm version patch && npm run npm-publish", + "minor": "npm version minor && npm run npm-publish", + "major": "npm version major && npm run npm-publish", + "npm-publish": "npm publish && git push && git push --tags", + "bump": "npm outdated & npm update && npm audit fix && npm test" + }, + "unpkg": "dist/jstoxml-min.js", + "devDependencies": { + "@babel/cli": "^7.16.0", + "@babel/core": "^7.16.5", + "@babel/plugin-transform-modules-umd": "^7.16.5", + "@babel/preset-env": "^7.16.5", + "babel-eslint": "^10.1.0", + "eslint": "^8.5.0", + "mocha": "^9.1.3", + "prettier": "^2.5.1", + "uglify-es": "^3.3.9" + } +} diff --git a/node_modules/jstoxml/test.js b/node_modules/jstoxml/test.js new file mode 100644 index 0000000..383cdb4 --- /dev/null +++ b/node_modules/jstoxml/test.js @@ -0,0 +1,1326 @@ +const { toXML } = require("./dist/jstoxml"); +const assert = require("assert"); + +describe("toXML", () => { + describe("primitives", () => { + const vals = ["foo", false, true, 4, 4.56]; + + vals.forEach((val) => { + it(`outputs ${val}`, () => { + const result = toXML(val); + const expectedResult = `${val}`; + assert.equal(result, expectedResult); + }); + }); + }); + + describe("functions", () => { + describe("primitive outputs", () => { + const vals = [999, "foo", false, true]; + + vals.forEach((val) => { + it(`${val}`, () => { + const result = toXML(() => val); + const expectedResult = `${val}`; + assert.equal(result, expectedResult); + }); + }); + }); + + it("fat arrow", () => { + const val = 888; + const result = toXML(() => val); + const expectedResult = val; + assert.equal(result, expectedResult); + }); + + it("accessing config within function", () => { + const val = { + foo: { + depth: (config) => config.depth, + }, + }; + const result = toXML(val); + const expectedResult = "2"; + assert.equal(result, expectedResult); + }); + + it("converts nonprimitive output", () => { + const val = { foo: "bar" }; + const result = toXML(() => val); + const expectedResult = "bar"; + assert.equal(result, expectedResult); + }); + + it("converts nested nonprimitive output", () => { + const val = { foo: { bar: { baz: 2 } } }; + const result = toXML(() => val); + const expectedResult = "2"; + assert.equal(result, expectedResult); + }); + + it("converts nested nonprimitive output with indent", () => { + const val = { foo: { bar: { baz: 2 } } }; + const config = { indent: " " }; + const result = toXML(() => val, config); + const expectedResult = + "\n \n 2\n \n"; + assert.equal(result, expectedResult); + }); + }); + + describe("github issues", () => { + it("issue 3", () => { + const val = { + foo: true, + bar: "", + foo2: false, + ok: "This is ok", + ok2: "false", + ok3: "true", + }; + const result = toXML(val); + const expectedResult = + "truefalseThis is okfalsetrue"; + assert.equal(result, expectedResult); + }); + }); + + describe("arrays", () => { + it("1", () => { + const val = [{ foo: "bar" }, { foo: "baz" }, { foo2: "bar2" }]; + const result = toXML(val); + const expectedResult = "barbazbar2"; + assert.equal(result, expectedResult); + }); + + it("attributes in subobject", () => { + const val = [ + { foo: "bar" }, + { foo: "baz" }, + { foo: undefined }, + { foo: "" }, + { foo: null }, + { + _name: "foo", + _content: "bar", + _attrs: { + a: "b", + c: "d", + }, + }, + ]; + const result = toXML(val); + const expectedResult = + 'barbazfoobar'; + assert.equal(result, expectedResult); + }); + + it("nesting with indent", () => { + const val = { + foo: [{ foo: "bar" }, { foo: "baz" }, { foo2: "bar2" }], + }; + const config = { indent: " " }; + const result = toXML(val, config); + const expectedResult = ` + bar + baz + bar2 +`; + assert.equal(result, expectedResult); + }); + }); + + describe("special-objects", () => { + it("1", () => { + const val = { + _name: "foo", + _content: "bar", + _attrs: { + a: 1, + b: 2, + }, + }; + const result = toXML(val); + const expectedResult = 'bar'; + assert.equal(result, expectedResult); + }); + + it("2", () => { + const val = { + _name: "foo", + _content: { + foo: "bar", + }, + _attrs: { + a: 1, + b: 2, + }, + }; + const result = toXML(val); + const expectedResult = 'bar'; + assert.equal(result, expectedResult); + }); + + it("3", () => { + const val = { + _name: "foo", + _content: () => 1 + 2, + _attrs: { + a: 1, + b: 2, + }, + }; + const result = toXML(val); + const expectedResult = '3'; + assert.equal(result, expectedResult); + }); + }); + + describe("objects", () => { + it("1", () => { + const val = { + foo: "bar", + foo2: "bar2", + }; + const result = toXML(val); + const expectedResult = "barbar2"; + assert.equal(result, expectedResult); + }); + + it("attributes", () => { + const val = { + _name: "a", + _attrs: { + foo: "bar", + foo2: "bar2", + }, + }; + const result = toXML(val); + const expectedResult = ''; + assert.equal(result, expectedResult); + }); + + it("attributes 2", () => { + const val = { + _name: "a", + _attrs: { + foo: "bar", + foo2: "bar2", + }, + _content: "la dee da", + }; + const result = toXML(val); + const expectedResult = 'la dee da'; + assert.equal(result, expectedResult); + }); + + it("attributes nesting", () => { + const val = { + _name: "foo", + _attrs: { + a: "b", + }, + _content: { + _name: "bar", + _attrs: { + c: "d", + }, + }, + }; + const result = toXML(val); + const expectedResult = ''; + assert.equal(result, expectedResult); + }); + it("with mixed content", () => { + const val = { + blah: null, + foo: "bar", + "more blah": null, + bar: 0, + "more more blah": null, + baz: false, + }; + const result = toXML(val); + const expectedResult = + "blahbarmore blah0more more blahfalse"; + assert.equal(result, expectedResult); + }); + + it("nesting with indent", () => { + const val = { + foo: { + foo: "bar", + foo2: "bar2", + }, + }; + const config = { indent: " " }; + const result = toXML(val, config); + const expectedResult = ` + bar + bar2 +`; + assert.equal(result, expectedResult); + }); + + it("deep nesting", () => { + const val = { + a: { + b: { + c: { + d: { + e: { + f: { + g: { + h: { + i: { + j: { + k: { + l: { + m: { + foo: "bar", + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }; + const result = toXML(val); + const expectedResult = + "bar"; + assert.equal(result, expectedResult); + }); + }); + + describe("header", () => { + it("default header", () => { + const val = { + foo: "bar", + }; + const config = { + header: true, + }; + const result = toXML(val, config); + const expectedResult = + 'bar'; + assert.equal(result, expectedResult); + }); + + it("no header", () => { + const val = { + foo: "bar", + }; + const config = { + header: false, + }; + const result = toXML(val, config); + const expectedResult = "bar"; + assert.equal(result, expectedResult); + }); + + it("no header by default", () => { + const val = { + foo: "bar", + }; + const result = toXML(val); + const expectedResult = "bar"; + assert.equal(result, expectedResult); + }); + + it("default header with indent", () => { + const val = { + foo: "bar", + }; + const config = { + header: true, + indent: " ", + }; + const result = toXML(val, config); + const expectedResult = + '\nbar'; + assert.equal(result, expectedResult); + }); + + it("custom header", () => { + const val = { + foo: "bar", + }; + const config = { + header: '', + }; + const result = toXML(val, config); + const expectedResult = 'bar'; + assert.equal(result, expectedResult); + }); + + it("custom header 2", () => { + const val = [ + { + row: 'bar' + }, + { + row: 'bar2' + } + ]; + const config = { + header: '', + indent: ' ' + }; + + const result = toXML(val, config); + + const expectedResult = ` +bar +bar2`; + assert.equal(result, expectedResult); + }) + }); + + describe("filtering", () => { + it("values", () => { + const val = { + foo: "", + bar: '"b"', + baz: "'&whee'", + }; + const config = { + filter: { + "<": "<", + ">": ">", + '"': """, + "'": "'", + "&": "&", + }, + }; + const result = toXML(val, config); + const expectedResult = + "<a>"b"'&whee'"; + assert.equal(result, expectedResult); + }); + + it("attributes", () => { + const val = { + _name: "foo", + _attrs: { a: '<"\'&"foo>' }, + }; + const config = { + attributesFilter: { + "<": "<", + ">": ">", + '"': """, + "'": "'", + "&": "&", + }, + }; + const result = toXML(val, config); + const expectedResult = ''; + assert.equal(result, expectedResult); + }); + + const entities = { + "&": "&", + "<": "<", + ">": ">", + }; + + Object.entries(entities).forEach(([entity, entityEncoded]) => { + it(`filters '${entity}' entities by default`, () => { + const val = { + _name: "foo", + _attrs: { a: `aaa ${entity} bbb` }, + _content: `foo ${entity} bar`, + }; + const result = toXML(val); + const expectedResult = `foo ${entityEncoded} bar`; + assert.equal(result, expectedResult); + }); + }); + + it(`filters entities by default 2`, () => { + const val = { + foo: '1 < 2 & 2 > 1' + }; + const result = toXML(val); + const expectedResult = `1 < 2 & 2 > 1`; + assert.equal(result, expectedResult); + }); + + it("does not double encode", () => { + const val = { + _name: "foo", + _attrs: { a: "baz & > < bat" }, + _content: "foo & > < bar", + }; + const result = toXML(val); + const expectedResult = + 'foo & > < bar'; + assert.equal(result, expectedResult); + }); + + it("does not double encode 2", () => { + const val = { + _name: "foo", + _attrs: { a: "baz && &> &< bat" }, + _content: "foo && &> &< bar", + }; + const result = toXML(val); + const expectedResult = + 'foo && &> &< bar'; + assert.equal(result, expectedResult); + }); + + it("does not double encode 3", () => { + const val = { + _name: "foo", + _attrs: { a: "¢ ¢ € € &eu ro;" }, + _content: "¢ ¢ € € &eu ro;", + }; + const result = toXML(val); + const expectedResult = + '¢ ¢ € € &eu ro;'; + assert.equal(result, expectedResult); + }); + + it("escapes quotes in attributes by default", () => { + const val = { + _name: "foo", + _attrs: { a: '"bat"' }, + }; + const result = toXML(val); + const expectedResult = ''; + assert.equal(result, expectedResult); + }); + + it(`turns off attributes filter`, () => { + const val = { + _name: "foo", + _attrs: { a: "baz & < > \" bat" }, + _content: "foo & < > bar", + }; + const result = toXML(val, { attributesFilter: false }); + const expectedResult = `foo & < > bar`; + assert.equal(result, expectedResult); + }); + + it(`turns off filter`, () => { + const val = { + _name: "foo", + _attrs: { a: "baz & < > \" bat" }, + _content: "foo & < > bar", + }; + const result = toXML(val, { filter: false }); + const expectedResult = `foo & < > bar`; + assert.equal(result, expectedResult); + }); + + it(`turns off both filter and attributesFilter`, () => { + const val = { + _name: "foo", + _attrs: { a: "baz & < > \" bat" }, + _content: "foo & < > bar", + }; + const result = toXML(val, { filter: false, attributesFilter: false }); + const expectedResult = `foo & < > bar`; + assert.equal(result, expectedResult); + }); + }); + + describe("misc", () => { + it("outputs <_content> if it has no tag name", () => { + const val = { + _content: "foo", + }; + const result = toXML(val); + const expectedResult = "<_content>foo"; + assert.equal(result, expectedResult); + }); + + it("outputs emoji attributes", () => { + const val = { + html: { + _attrs: [{ "⚡": true }, { lang: "en" }, { lang: "klingon" }], + }, + }; + const result = toXML(val, { attributesFilter: {} }); + const expectedResult = ''; + assert.equal(result, expectedResult); + }); + + it("outputs emoji attributes 2", () => { + const val = { + html: { + _attrs: { "⚡": true, lang: "en" }, + }, + }; + const result = toXML(val, { attributesFilter: {} }); + const expectedResult = ''; + assert.equal(result, expectedResult); + }); + + it("does not force self close if tag has content", () => { + const val = { + _name: "foo", + _selfCloseTag: true, + _content: "bar", + }; + const result = toXML(val); + const expectedResult = "bar"; + assert.equal(result, expectedResult); + }); + + it("nested elements with self-closing sibling", () => { + const val = { + people: { + students: [ + { + student: { name: "Joe" }, + }, + { + student: { name: "Jane" }, + }, + ], + teacher: { + _selfCloseTag: true, + _attrs: { + name: "Yoda", + }, + }, + }, + }; + const result = toXML(val); + const expectedResult = + 'JoeJane'; + assert.equal(result, expectedResult); + }); + + it("sibling _content tag", () => { + const val = { + foo: { + bar: "baz", + _content: { + bar2: "baz2", + }, + }, + }; + const result = toXML(val); + const expectedResult = "bazbaz2"; + assert.equal(result, expectedResult); + }); + }); + + describe("examples", () => { + it("1 simple object", () => { + const val = { + foo: "bar", + foo2: "bar2", + }; + const result = toXML(val); + const expectedResult = "barbar2"; + assert.equal(result, expectedResult); + }); + + it("2 simple array", () => { + const val = [{ foo: "bar" }, { foo: "bar2" }]; + const result = toXML(val); + const expectedResult = "barbar2"; + assert.equal(result, expectedResult); + }); + + it("3 simple function", () => { + const date = new Date(); + const val = { + currentTime: () => date, + }; + const result = toXML(val); + const expectedResult = `${date}`; + assert.equal(result, expectedResult); + }); + + it("4 attributes", () => { + const val = { + _name: "foo", + _content: "bar", + _attrs: { + a: "b", + c: "d", + }, + }; + const result = toXML(val); + const expectedResult = 'bar'; + assert.equal(result, expectedResult); + }); + + it("5 tags with mixed content", () => { + const val = { + text1: null, + foo: "bar", + text2: null, + }; + const result = toXML(val); + const expectedResult = "text1bartext2"; + assert.equal(result, expectedResult); + }); + + it("6 nested tags with indent", () => { + const val = { + a: { + foo: "bar", + foo2: "bar2", + }, + }; + const config = { + header: false, + indent: " ", + }; + const result = toXML(val, config); + const expectedResult = ` + bar + bar2 +`; + assert.equal(result, expectedResult); + }); + + it("7 nested tags attributes", () => { + const val = { + ooo: { + _name: "foo", + _attrs: { + a: "b", + }, + _content: { + _name: "bar", + _attrs: { + c: "d", + }, + }, + }, + }; + const config = { + header: false, + indent: " ", + }; + const result = toXML(val, config); + const expectedResult = ` + + + +`; + assert.equal(result, expectedResult); + }); + + it("8 complex functions", () => { + const val = { + someNestedXML: () => ({ foo: "bar" }), + }; + const result = toXML(val); + const expectedResult = "bar"; + assert.equal(result, expectedResult); + }); + + it("9 RSS feed", () => { + const date = new Date(); + + const val = { + _name: "rss", + _attrs: { + version: "2.0", + }, + _content: { + channel: [ + { title: "RSS Example" }, + { description: "Description" }, + { link: "google.com" }, + { lastBuildDate: () => date }, + { pubDate: () => date }, + { language: "en" }, + { + item: { + title: "Item title", + link: "Item link", + description: "Item Description", + pubDate: () => date, + }, + }, + { + item: { + title: "Item2 title", + link: "Item2 link", + description: "Item2 Description", + pubDate: () => date, + }, + }, + ], + }, + }; + const config = { + header: true, + indent: " ", + }; + const result = toXML(val, config); + const expectedResult = ` + + + RSS Example + Description + google.com + ${date} + ${date} + en + + Item title + Item link + Item Description + ${date} + + + Item2 title + Item2 link + Item2 Description + ${date} + + +`; + assert.equal(result, expectedResult); + }); + + it("10 podcast RSS", () => { + const val = { + _name: "rss", + _attrs: { + "xmlns:itunes": "http://www.itunes.com/dtds/podcast-1.0.dtd", + version: "2.0", + }, + _content: { + channel: [ + { title: "Title" }, + { link: "google.com" }, + { language: "en-us" }, + { copyright: "Copyright 2011" }, + { "itunes:subtitle": "Subtitle" }, + { "itunes:author": "Author" }, + { "itunes:summary": "Summary" }, + { description: "Description" }, + { + "itunes:owner": { + "itunes:name": "Name", + "itunes:email": "Email", + }, + }, + { + _name: "itunes:image", + _attrs: { + href: "image.jpg", + }, + }, + { + _name: "itunes:category", + _attrs: { + text: "Technology", + }, + _content: { + _name: "itunes:category", + _attrs: { + text: "Gadgets", + }, + }, + }, + { + _name: "itunes:category", + _attrs: { + text: "TV & Film", + }, + }, + { + item: [ + { title: "Podcast Title" }, + { "itunes:author": "Author" }, + { "itunes:subtitle": "Subtitle" }, + { "itunes:summary": "Summary" }, + { "itunes:image": "image.jpg" }, + { + _name: "enclosure", + _attrs: { + url: "http://example.com/podcast.m4a", + length: "8727310", + type: "audio/x-m4a", + }, + }, + { guid: "http://example.com/archive/aae20050615.m4a" }, + { pubDate: "Wed, 15 Jun 2011 19:00:00 GMT" }, + { "itunes:duration": "7:04" }, + { "itunes:keywords": "salt, pepper, shaker, exciting" }, + ], + }, + { + item: [ + { title: "Podcast2 Title" }, + { "itunes:author": "Author2" }, + { "itunes:subtitle": "Subtitle2" }, + { "itunes:summary": "Summary2" }, + { "itunes:image": "image2.jpg" }, + { + _name: "enclosure", + _attrs: { + url: "http://example.com/podcast2.m4a", + length: "655555", + type: "audio/x-m4a", + }, + }, + { guid: "http://example.com/archive/aae2.m4a" }, + { pubDate: "Wed, 15 Jul 2011 19:00:00 GMT" }, + { "itunes:duration": "11:20" }, + { "itunes:keywords": "foo, bar" }, + ], + }, + ], + }, + }; + const config = { + header: true, + indent: " ", + }; + + const result = toXML(val, config); + const expectedResult = ` + + + Title + google.com + en-us + Copyright 2011 + Subtitle + Author + Summary + Description + + Name + Email + + + + + + + + Podcast Title + Author + Subtitle + Summary + image.jpg + + http://example.com/archive/aae20050615.m4a + Wed, 15 Jun 2011 19:00:00 GMT + 7:04 + salt, pepper, shaker, exciting + + + Podcast2 Title + Author2 + Subtitle2 + Summary2 + image2.jpg + + http://example.com/archive/aae2.m4a + Wed, 15 Jul 2011 19:00:00 GMT + 11:20 + foo, bar + + +`; + assert.equal(result, expectedResult); + }); + + it("11 filter", () => { + const val = { + foo: "", + bar: '"b"', + baz: "'&whee'", + }; + const config = { + filter: { + "<": "<", + ">": ">", + '"': """, + "'": "'", + "&": "&", + }, + }; + const result = toXML(val, config); + const expectedResult = + "<a>"b"'&whee'"; + assert.equal(result, expectedResult); + }); + + it("11b attributes filter", () => { + const val = { + _name: "foo", + _content: "bar", + _attrs: { + a: "http://example.com/?test='1'&foo=&whee=\"sha\"", + b: "http://example2.com/?test='2'&md=<5>&sum=\"sha\"", + }, + }; + const config = { + attributesFilter: { + "<": "<", + ">": ">", + '"': """, + "'": "'", + "&": "&", + }, + }; + const result = toXML(val, config); + const expectedResult = + 'bar'; + assert.equal(result, expectedResult); + }); + + it("12 avoiding self closing tags", () => { + const val = [ + { + _name: "foo", + _content: "", + _selfCloseTag: false, + }, + { + _name: "bar", + _content: undefined, + _selfCloseTag: false, + }, + ]; + const result = toXML(val); + const expectedResult = ""; + assert.equal(result, expectedResult); + }); + + it("13 custom xml header", () => { + const val = { + foo: "bar", + }; + const config = { + header: '', + }; + const result = toXML(val, config); + const expectedResult = + 'bar'; + assert.equal(result, expectedResult); + }); + + it("14 emoji attributes", () => { + const val = { + html: { + _attrs: { + "⚡": true, + }, + }, + }; + const result = toXML(val); + const expectedResult = ""; + assert.equal(result, expectedResult); + }); + + it("15 duplicate attribute keys", () => { + const val = { + html: { + _attrs: [{ lang: "en" }, { lang: "klingon" }], + }, + }; + const result = toXML(val); + const expectedResult = ''; + assert.equal(result, expectedResult); + }); + }); + + describe("issues", () => { + it("issue #33: array of primitives", () => { + const val = { + x: [1, 2, 3], + }; + const result = toXML(val); + const expectedResult = "123"; + assert.equal(result, expectedResult); + }); + + it("issue #33: array of primitives 2", () => { + const val = { + a: { + x: [1, 2, 3], + }, + }; + const result = toXML(val); + const expectedResult = "123"; + assert.equal(result, expectedResult); + }); + + it("issue #33: array of primitives 2 with indent", () => { + const val = { + a: { + x: [1, 2, 3], + }, + }; + const config = { indent: " " }; + const result = toXML(val, config); + const expectedResult = "\n 1\n 2\n 3\n"; + assert.equal(result, expectedResult); + }); + it("issue #33: array of objects", () => { + const val = { + a: { + x: [ + { b: 1, c: 2 }, + { d: 3, e: 4 }, + { f: 5, g: 6 }, + ], + }, + }; + const result = toXML(val); + const expectedResult = + "123456"; + assert.equal(result, expectedResult); + }); + it("issue #33: array of objects jstoxml format", () => { + const val = { + a: [ + { + _name: "foo", + _content: "1", + }, + { + _name: "foo", + _content: "2", + }, + ], + }; + const result = toXML(val); + const expectedResult = "12"; + assert.equal(result, expectedResult); + }); + it("issue #34: array of array", () => { + const val = { + Response: [ + [ + { + _name: "Play", + _content: "first sound", + }, + { + _name: "Play", + _content: "second sound", + }, + ], + ], + }; + const result = toXML(val); + const expectedResult = + "first soundsecond sound"; + assert.equal(result, expectedResult); + }); + it("issue #34", () => { + const val = { t: [{ foo: "bar" }, { foo: "bar2" }] }; + const result = toXML(val); + const expectedResult = "barbar2"; + assert.equal(result, expectedResult); + }); + it("issue #34", () => { + const val = { + t: [ + { _name: "foo", _content: "bar" }, + { _name: "foo", _content: "bar2" }, + ], + }; + const result = toXML(val); + const expectedResult = "barbar2"; + assert.equal(result, expectedResult); + }); + + it("issue #38", () => { + const getFooVal = (iteration) => iteration; + + const getCurrentTime = (iterations) => { + return Array(iterations) + .fill(null) + .map((foo, index) => { + return { + currentTime: { + foo: getFooVal.bind(null, index + 1), + }, + }; + }); + }; + + const val = { + invoice1: [ + { + invoice: "a", + }, + getCurrentTime.bind(null, 3), + { + foo2: "a", + }, + ], + }; + const config = { indent: " " }; + const result = toXML(val, config); + + const expectedResult = ` + a + + 1 + + + 2 + + + 3 + + a +`; + assert.equal(result, expectedResult); + }); + + it("issue #40 forced separator, no indent", () => { + const val = [{ a: "A Value" }, "\n", { b: "B Value" }]; + const result = toXML(val); + const expectedResult = `A Value +B Value`; + assert.equal(result, expectedResult); + }); + + it("issue #40 array with indent", () => { + const val = [{ a: "A Value" }, { b: "B Value" }]; + const result = toXML(val, { indent: " " }); + const expectedResult = `A Value +B Value`; + assert.equal(result, expectedResult); + }); + + it("issue #40 array without indent", () => { + const val = [{ a: "A Value" }, { b: "B Value" }]; + const result = toXML(val); + const expectedResult = `A ValueB Value`; + assert.equal(result, expectedResult); + }); + + it("issue #40 object with indent", () => { + const val = { + a: "A Value", + b: "B Value", + }; + const result = toXML(val, { indent: " " }); + const expectedResult = `A Value +B Value`; + assert.equal(result, expectedResult); + }); + + it("issue #40 object without indent", () => { + const val = { + a: "A Value", + b: "B Value", + }; + const result = toXML(val); + const expectedResult = `A ValueB Value`; + assert.equal(result, expectedResult); + }); + + it("comments 1", () => { + const val = { + _comment: "test comment", + a: "foo" + }; + const result = toXML(val); + const expectedResult = `foo`; + assert.equal(result, expectedResult); + }); + + it("comments 2", () => { + const val = { + _comment: "test comment", + a: "foo" + }; + const result = toXML(val, { indent: ' ' }); + const expectedResult = ` +foo`; + assert.equal(result, expectedResult); + }); + + it("comments 3", () => { + const val = { + _comment: "comment 1", + b: { + _comment: "comment 2", + a: "foo" + } + }; + const result = toXML(val, { indent: ' ' }); + const expectedResult = ` + + + foo +`; + assert.equal(result, expectedResult); + }); + + it("comments 4", () => { + const val = { + _comment: "comment 1", + b: [ + { _comment: "comment 2" }, + { _comment: "comment 3" }, + { a: "foo" } + ] + }; + const result = toXML(val, { indent: ' ' }); + const expectedResult = ` + + + + foo +`; + assert.equal(result, expectedResult); + }); + }); + + it("comments 5", () => { + const val = { + _comment: 'Some important comment', + a: { + b: [1, 2, 3] + } + }; + const result = toXML(val, { indent: ' ' }); + const expectedResult = ` + + 1 + 2 + 3 +`; + assert.equal(result, expectedResult); + }); + + it("comments 6", () => { + const val = [ + { _comment: 'Some important comment' }, + { _comment: 'This is a very long comment!' }, + { _comment: 'More important exposition!' }, + { a: { b: [1, 2, 3] } } + ]; + const result = toXML(val, { indent: ' ' }); + const expectedResult = ` + + + + 1 + 2 + 3 +`; + assert.equal(result, expectedResult); + }); +}); diff --git a/node_modules/lodash.assign/LICENSE b/node_modules/lodash.assign/LICENSE new file mode 100644 index 0000000..e0c69d5 --- /dev/null +++ b/node_modules/lodash.assign/LICENSE @@ -0,0 +1,47 @@ +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. diff --git a/node_modules/lodash.assign/README.md b/node_modules/lodash.assign/README.md new file mode 100644 index 0000000..6bce2d6 --- /dev/null +++ b/node_modules/lodash.assign/README.md @@ -0,0 +1,18 @@ +# lodash.assign v4.2.0 + +The [lodash](https://lodash.com/) method `_.assign` exported as a [Node.js](https://nodejs.org/) module. + +## Installation + +Using npm: +```bash +$ {sudo -H} npm i -g npm +$ npm i --save lodash.assign +``` + +In Node.js: +```js +var assign = require('lodash.assign'); +``` + +See the [documentation](https://lodash.com/docs#assign) or [package source](https://github.com/lodash/lodash/blob/4.2.0-npm-packages/lodash.assign) for more details. diff --git a/node_modules/lodash.assign/index.js b/node_modules/lodash.assign/index.js new file mode 100644 index 0000000..8b007bc --- /dev/null +++ b/node_modules/lodash.assign/index.js @@ -0,0 +1,637 @@ +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]'; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object), + nativeMax = Math.max; + +/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */ +var nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf'); + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + // Safari 9 makes `arguments.length` enumerable in strict mode. + var result = (isArray(value) || isArguments(value)) + ? baseTimes(value.length, String) + : []; + + var length = result.length, + skipIndexes = !!length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + return result; +} + +/** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + object[key] = value; + } +} + +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} + +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = array; + return apply(func, this, otherArgs); + }; +} + +/** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ +function copyObject(source, props, object, customizer) { + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + assignValue(object, key, newValue === undefined ? source[key] : newValue); + } + return object; +} + +/** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ +function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); +} + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); +} + +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +function isArguments(value) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); +} + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Assigns own enumerable string keyed properties of source objects to the + * destination object. Source objects are applied from left to right. + * Subsequent sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object` and is loosely based on + * [`Object.assign`](https://mdn.io/Object/assign). + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assignIn + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assign({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'c': 3 } + */ +var assign = createAssigner(function(object, source) { + if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) { + copyObject(source, keys(source), object); + return; + } + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + assignValue(object, key, source[key]); + } + } +}); + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} + +module.exports = assign; diff --git a/node_modules/lodash.assign/package.json b/node_modules/lodash.assign/package.json new file mode 100644 index 0000000..78672ea --- /dev/null +++ b/node_modules/lodash.assign/package.json @@ -0,0 +1,17 @@ +{ + "name": "lodash.assign", + "version": "4.2.0", + "description": "The lodash method `_.assign` exported as a module.", + "homepage": "https://lodash.com/", + "icon": "https://lodash.com/icon.svg", + "license": "MIT", + "keywords": "lodash-modularized, assign", + "author": "John-David Dalton (http://allyoucanleet.com/)", + "contributors": [ + "John-David Dalton (http://allyoucanleet.com/)", + "Blaine Bublitz (https://github.com/phated)", + "Mathias Bynens (https://mathiasbynens.be/)" + ], + "repository": "lodash/lodash", + "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } +} diff --git a/node_modules/lodash/LICENSE b/node_modules/lodash/LICENSE new file mode 100644 index 0000000..77c42f1 --- /dev/null +++ b/node_modules/lodash/LICENSE @@ -0,0 +1,47 @@ +Copyright OpenJS Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. diff --git a/node_modules/lodash/README.md b/node_modules/lodash/README.md new file mode 100644 index 0000000..3ab1a05 --- /dev/null +++ b/node_modules/lodash/README.md @@ -0,0 +1,39 @@ +# lodash v4.17.21 + +The [Lodash](https://lodash.com/) library exported as [Node.js](https://nodejs.org/) modules. + +## Installation + +Using npm: +```shell +$ npm i -g npm +$ npm i --save lodash +``` + +In Node.js: +```js +// Load the full build. +var _ = require('lodash'); +// Load the core build. +var _ = require('lodash/core'); +// Load the FP build for immutable auto-curried iteratee-first data-last methods. +var fp = require('lodash/fp'); + +// Load method categories. +var array = require('lodash/array'); +var object = require('lodash/fp/object'); + +// Cherry-pick methods for smaller browserify/rollup/webpack bundles. +var at = require('lodash/at'); +var curryN = require('lodash/fp/curryN'); +``` + +See the [package source](https://github.com/lodash/lodash/tree/4.17.21-npm) for more details. + +**Note:**
+Install [n_](https://www.npmjs.com/package/n_) for Lodash use in the Node.js < 6 REPL. + +## Support + +Tested in Chrome 74-75, Firefox 66-67, IE 11, Edge 18, Safari 11-12, & Node.js 8-12.
+Automated [browser](https://saucelabs.com/u/lodash) & [CI](https://travis-ci.org/lodash/lodash/) test runs are available. diff --git a/node_modules/lodash/_DataView.js b/node_modules/lodash/_DataView.js new file mode 100644 index 0000000..ac2d57c --- /dev/null +++ b/node_modules/lodash/_DataView.js @@ -0,0 +1,7 @@ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'); + +module.exports = DataView; diff --git a/node_modules/lodash/_Hash.js b/node_modules/lodash/_Hash.js new file mode 100644 index 0000000..b504fe3 --- /dev/null +++ b/node_modules/lodash/_Hash.js @@ -0,0 +1,32 @@ +var hashClear = require('./_hashClear'), + hashDelete = require('./_hashDelete'), + hashGet = require('./_hashGet'), + hashHas = require('./_hashHas'), + hashSet = require('./_hashSet'); + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +module.exports = Hash; diff --git a/node_modules/lodash/_LazyWrapper.js b/node_modules/lodash/_LazyWrapper.js new file mode 100644 index 0000000..81786c7 --- /dev/null +++ b/node_modules/lodash/_LazyWrapper.js @@ -0,0 +1,28 @@ +var baseCreate = require('./_baseCreate'), + baseLodash = require('./_baseLodash'); + +/** Used as references for the maximum length and index of an array. */ +var MAX_ARRAY_LENGTH = 4294967295; + +/** + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * + * @private + * @constructor + * @param {*} value The value to wrap. + */ +function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__dir__ = 1; + this.__filtered__ = false; + this.__iteratees__ = []; + this.__takeCount__ = MAX_ARRAY_LENGTH; + this.__views__ = []; +} + +// Ensure `LazyWrapper` is an instance of `baseLodash`. +LazyWrapper.prototype = baseCreate(baseLodash.prototype); +LazyWrapper.prototype.constructor = LazyWrapper; + +module.exports = LazyWrapper; diff --git a/node_modules/lodash/_ListCache.js b/node_modules/lodash/_ListCache.js new file mode 100644 index 0000000..26895c3 --- /dev/null +++ b/node_modules/lodash/_ListCache.js @@ -0,0 +1,32 @@ +var listCacheClear = require('./_listCacheClear'), + listCacheDelete = require('./_listCacheDelete'), + listCacheGet = require('./_listCacheGet'), + listCacheHas = require('./_listCacheHas'), + listCacheSet = require('./_listCacheSet'); + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +module.exports = ListCache; diff --git a/node_modules/lodash/_LodashWrapper.js b/node_modules/lodash/_LodashWrapper.js new file mode 100644 index 0000000..c1e4d9d --- /dev/null +++ b/node_modules/lodash/_LodashWrapper.js @@ -0,0 +1,22 @@ +var baseCreate = require('./_baseCreate'), + baseLodash = require('./_baseLodash'); + +/** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable explicit method chain sequences. + */ +function LodashWrapper(value, chainAll) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__chain__ = !!chainAll; + this.__index__ = 0; + this.__values__ = undefined; +} + +LodashWrapper.prototype = baseCreate(baseLodash.prototype); +LodashWrapper.prototype.constructor = LodashWrapper; + +module.exports = LodashWrapper; diff --git a/node_modules/lodash/_Map.js b/node_modules/lodash/_Map.js new file mode 100644 index 0000000..b73f29a --- /dev/null +++ b/node_modules/lodash/_Map.js @@ -0,0 +1,7 @@ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'); + +module.exports = Map; diff --git a/node_modules/lodash/_MapCache.js b/node_modules/lodash/_MapCache.js new file mode 100644 index 0000000..4a4eea7 --- /dev/null +++ b/node_modules/lodash/_MapCache.js @@ -0,0 +1,32 @@ +var mapCacheClear = require('./_mapCacheClear'), + mapCacheDelete = require('./_mapCacheDelete'), + mapCacheGet = require('./_mapCacheGet'), + mapCacheHas = require('./_mapCacheHas'), + mapCacheSet = require('./_mapCacheSet'); + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +module.exports = MapCache; diff --git a/node_modules/lodash/_Promise.js b/node_modules/lodash/_Promise.js new file mode 100644 index 0000000..247b9e1 --- /dev/null +++ b/node_modules/lodash/_Promise.js @@ -0,0 +1,7 @@ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var Promise = getNative(root, 'Promise'); + +module.exports = Promise; diff --git a/node_modules/lodash/_Set.js b/node_modules/lodash/_Set.js new file mode 100644 index 0000000..b3c8dcb --- /dev/null +++ b/node_modules/lodash/_Set.js @@ -0,0 +1,7 @@ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var Set = getNative(root, 'Set'); + +module.exports = Set; diff --git a/node_modules/lodash/_SetCache.js b/node_modules/lodash/_SetCache.js new file mode 100644 index 0000000..6468b06 --- /dev/null +++ b/node_modules/lodash/_SetCache.js @@ -0,0 +1,27 @@ +var MapCache = require('./_MapCache'), + setCacheAdd = require('./_setCacheAdd'), + setCacheHas = require('./_setCacheHas'); + +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +module.exports = SetCache; diff --git a/node_modules/lodash/_Stack.js b/node_modules/lodash/_Stack.js new file mode 100644 index 0000000..80b2cf1 --- /dev/null +++ b/node_modules/lodash/_Stack.js @@ -0,0 +1,27 @@ +var ListCache = require('./_ListCache'), + stackClear = require('./_stackClear'), + stackDelete = require('./_stackDelete'), + stackGet = require('./_stackGet'), + stackHas = require('./_stackHas'), + stackSet = require('./_stackSet'); + +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; +} + +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; + +module.exports = Stack; diff --git a/node_modules/lodash/_Symbol.js b/node_modules/lodash/_Symbol.js new file mode 100644 index 0000000..a013f7c --- /dev/null +++ b/node_modules/lodash/_Symbol.js @@ -0,0 +1,6 @@ +var root = require('./_root'); + +/** Built-in value references. */ +var Symbol = root.Symbol; + +module.exports = Symbol; diff --git a/node_modules/lodash/_Uint8Array.js b/node_modules/lodash/_Uint8Array.js new file mode 100644 index 0000000..2fb30e1 --- /dev/null +++ b/node_modules/lodash/_Uint8Array.js @@ -0,0 +1,6 @@ +var root = require('./_root'); + +/** Built-in value references. */ +var Uint8Array = root.Uint8Array; + +module.exports = Uint8Array; diff --git a/node_modules/lodash/_WeakMap.js b/node_modules/lodash/_WeakMap.js new file mode 100644 index 0000000..567f86c --- /dev/null +++ b/node_modules/lodash/_WeakMap.js @@ -0,0 +1,7 @@ +var getNative = require('./_getNative'), + root = require('./_root'); + +/* Built-in method references that are verified to be native. */ +var WeakMap = getNative(root, 'WeakMap'); + +module.exports = WeakMap; diff --git a/node_modules/lodash/_apply.js b/node_modules/lodash/_apply.js new file mode 100644 index 0000000..36436dd --- /dev/null +++ b/node_modules/lodash/_apply.js @@ -0,0 +1,21 @@ +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +module.exports = apply; diff --git a/node_modules/lodash/_arrayAggregator.js b/node_modules/lodash/_arrayAggregator.js new file mode 100644 index 0000000..d96c3ca --- /dev/null +++ b/node_modules/lodash/_arrayAggregator.js @@ -0,0 +1,22 @@ +/** + * A specialized version of `baseAggregator` for arrays. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ +function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); + } + return accumulator; +} + +module.exports = arrayAggregator; diff --git a/node_modules/lodash/_arrayEach.js b/node_modules/lodash/_arrayEach.js new file mode 100644 index 0000000..2c5f579 --- /dev/null +++ b/node_modules/lodash/_arrayEach.js @@ -0,0 +1,22 @@ +/** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ +function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; +} + +module.exports = arrayEach; diff --git a/node_modules/lodash/_arrayEachRight.js b/node_modules/lodash/_arrayEachRight.js new file mode 100644 index 0000000..976ca5c --- /dev/null +++ b/node_modules/lodash/_arrayEachRight.js @@ -0,0 +1,21 @@ +/** + * A specialized version of `_.forEachRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ +function arrayEachRight(array, iteratee) { + var length = array == null ? 0 : array.length; + + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; +} + +module.exports = arrayEachRight; diff --git a/node_modules/lodash/_arrayEvery.js b/node_modules/lodash/_arrayEvery.js new file mode 100644 index 0000000..e26a918 --- /dev/null +++ b/node_modules/lodash/_arrayEvery.js @@ -0,0 +1,23 @@ +/** + * A specialized version of `_.every` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + */ +function arrayEvery(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; +} + +module.exports = arrayEvery; diff --git a/node_modules/lodash/_arrayFilter.js b/node_modules/lodash/_arrayFilter.js new file mode 100644 index 0000000..75ea254 --- /dev/null +++ b/node_modules/lodash/_arrayFilter.js @@ -0,0 +1,25 @@ +/** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; +} + +module.exports = arrayFilter; diff --git a/node_modules/lodash/_arrayIncludes.js b/node_modules/lodash/_arrayIncludes.js new file mode 100644 index 0000000..3737a6d --- /dev/null +++ b/node_modules/lodash/_arrayIncludes.js @@ -0,0 +1,17 @@ +var baseIndexOf = require('./_baseIndexOf'); + +/** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; +} + +module.exports = arrayIncludes; diff --git a/node_modules/lodash/_arrayIncludesWith.js b/node_modules/lodash/_arrayIncludesWith.js new file mode 100644 index 0000000..235fd97 --- /dev/null +++ b/node_modules/lodash/_arrayIncludesWith.js @@ -0,0 +1,22 @@ +/** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; +} + +module.exports = arrayIncludesWith; diff --git a/node_modules/lodash/_arrayLikeKeys.js b/node_modules/lodash/_arrayLikeKeys.js new file mode 100644 index 0000000..b2ec9ce --- /dev/null +++ b/node_modules/lodash/_arrayLikeKeys.js @@ -0,0 +1,49 @@ +var baseTimes = require('./_baseTimes'), + isArguments = require('./isArguments'), + isArray = require('./isArray'), + isBuffer = require('./isBuffer'), + isIndex = require('./_isIndex'), + isTypedArray = require('./isTypedArray'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; +} + +module.exports = arrayLikeKeys; diff --git a/node_modules/lodash/_arrayMap.js b/node_modules/lodash/_arrayMap.js new file mode 100644 index 0000000..22b2246 --- /dev/null +++ b/node_modules/lodash/_arrayMap.js @@ -0,0 +1,21 @@ +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} + +module.exports = arrayMap; diff --git a/node_modules/lodash/_arrayPush.js b/node_modules/lodash/_arrayPush.js new file mode 100644 index 0000000..7d742b3 --- /dev/null +++ b/node_modules/lodash/_arrayPush.js @@ -0,0 +1,20 @@ +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} + +module.exports = arrayPush; diff --git a/node_modules/lodash/_arrayReduce.js b/node_modules/lodash/_arrayReduce.js new file mode 100644 index 0000000..de8b79b --- /dev/null +++ b/node_modules/lodash/_arrayReduce.js @@ -0,0 +1,26 @@ +/** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ +function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; +} + +module.exports = arrayReduce; diff --git a/node_modules/lodash/_arrayReduceRight.js b/node_modules/lodash/_arrayReduceRight.js new file mode 100644 index 0000000..22d8976 --- /dev/null +++ b/node_modules/lodash/_arrayReduceRight.js @@ -0,0 +1,24 @@ +/** + * A specialized version of `_.reduceRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the last element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ +function arrayReduceRight(array, iteratee, accumulator, initAccum) { + var length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; +} + +module.exports = arrayReduceRight; diff --git a/node_modules/lodash/_arraySample.js b/node_modules/lodash/_arraySample.js new file mode 100644 index 0000000..fcab010 --- /dev/null +++ b/node_modules/lodash/_arraySample.js @@ -0,0 +1,15 @@ +var baseRandom = require('./_baseRandom'); + +/** + * A specialized version of `_.sample` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @returns {*} Returns the random element. + */ +function arraySample(array) { + var length = array.length; + return length ? array[baseRandom(0, length - 1)] : undefined; +} + +module.exports = arraySample; diff --git a/node_modules/lodash/_arraySampleSize.js b/node_modules/lodash/_arraySampleSize.js new file mode 100644 index 0000000..8c7e364 --- /dev/null +++ b/node_modules/lodash/_arraySampleSize.js @@ -0,0 +1,17 @@ +var baseClamp = require('./_baseClamp'), + copyArray = require('./_copyArray'), + shuffleSelf = require('./_shuffleSelf'); + +/** + * A specialized version of `_.sampleSize` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ +function arraySampleSize(array, n) { + return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); +} + +module.exports = arraySampleSize; diff --git a/node_modules/lodash/_arrayShuffle.js b/node_modules/lodash/_arrayShuffle.js new file mode 100644 index 0000000..46313a3 --- /dev/null +++ b/node_modules/lodash/_arrayShuffle.js @@ -0,0 +1,15 @@ +var copyArray = require('./_copyArray'), + shuffleSelf = require('./_shuffleSelf'); + +/** + * A specialized version of `_.shuffle` for arrays. + * + * @private + * @param {Array} array The array to shuffle. + * @returns {Array} Returns the new shuffled array. + */ +function arrayShuffle(array) { + return shuffleSelf(copyArray(array)); +} + +module.exports = arrayShuffle; diff --git a/node_modules/lodash/_arraySome.js b/node_modules/lodash/_arraySome.js new file mode 100644 index 0000000..6fd02fd --- /dev/null +++ b/node_modules/lodash/_arraySome.js @@ -0,0 +1,23 @@ +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; +} + +module.exports = arraySome; diff --git a/node_modules/lodash/_asciiSize.js b/node_modules/lodash/_asciiSize.js new file mode 100644 index 0000000..11d29c3 --- /dev/null +++ b/node_modules/lodash/_asciiSize.js @@ -0,0 +1,12 @@ +var baseProperty = require('./_baseProperty'); + +/** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ +var asciiSize = baseProperty('length'); + +module.exports = asciiSize; diff --git a/node_modules/lodash/_asciiToArray.js b/node_modules/lodash/_asciiToArray.js new file mode 100644 index 0000000..8e3dd5b --- /dev/null +++ b/node_modules/lodash/_asciiToArray.js @@ -0,0 +1,12 @@ +/** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ +function asciiToArray(string) { + return string.split(''); +} + +module.exports = asciiToArray; diff --git a/node_modules/lodash/_asciiWords.js b/node_modules/lodash/_asciiWords.js new file mode 100644 index 0000000..d765f0f --- /dev/null +++ b/node_modules/lodash/_asciiWords.js @@ -0,0 +1,15 @@ +/** Used to match words composed of alphanumeric characters. */ +var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + +/** + * Splits an ASCII `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ +function asciiWords(string) { + return string.match(reAsciiWord) || []; +} + +module.exports = asciiWords; diff --git a/node_modules/lodash/_assignMergeValue.js b/node_modules/lodash/_assignMergeValue.js new file mode 100644 index 0000000..cb1185e --- /dev/null +++ b/node_modules/lodash/_assignMergeValue.js @@ -0,0 +1,20 @@ +var baseAssignValue = require('./_baseAssignValue'), + eq = require('./eq'); + +/** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } +} + +module.exports = assignMergeValue; diff --git a/node_modules/lodash/_assignValue.js b/node_modules/lodash/_assignValue.js new file mode 100644 index 0000000..4083957 --- /dev/null +++ b/node_modules/lodash/_assignValue.js @@ -0,0 +1,28 @@ +var baseAssignValue = require('./_baseAssignValue'), + eq = require('./eq'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } +} + +module.exports = assignValue; diff --git a/node_modules/lodash/_assocIndexOf.js b/node_modules/lodash/_assocIndexOf.js new file mode 100644 index 0000000..5b77a2b --- /dev/null +++ b/node_modules/lodash/_assocIndexOf.js @@ -0,0 +1,21 @@ +var eq = require('./eq'); + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +module.exports = assocIndexOf; diff --git a/node_modules/lodash/_baseAggregator.js b/node_modules/lodash/_baseAggregator.js new file mode 100644 index 0000000..4bc9e91 --- /dev/null +++ b/node_modules/lodash/_baseAggregator.js @@ -0,0 +1,21 @@ +var baseEach = require('./_baseEach'); + +/** + * Aggregates elements of `collection` on `accumulator` with keys transformed + * by `iteratee` and values set by `setter`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ +function baseAggregator(collection, setter, iteratee, accumulator) { + baseEach(collection, function(value, key, collection) { + setter(accumulator, value, iteratee(value), collection); + }); + return accumulator; +} + +module.exports = baseAggregator; diff --git a/node_modules/lodash/_baseAssign.js b/node_modules/lodash/_baseAssign.js new file mode 100644 index 0000000..e5c4a1a --- /dev/null +++ b/node_modules/lodash/_baseAssign.js @@ -0,0 +1,17 @@ +var copyObject = require('./_copyObject'), + keys = require('./keys'); + +/** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); +} + +module.exports = baseAssign; diff --git a/node_modules/lodash/_baseAssignIn.js b/node_modules/lodash/_baseAssignIn.js new file mode 100644 index 0000000..6624f90 --- /dev/null +++ b/node_modules/lodash/_baseAssignIn.js @@ -0,0 +1,17 @@ +var copyObject = require('./_copyObject'), + keysIn = require('./keysIn'); + +/** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); +} + +module.exports = baseAssignIn; diff --git a/node_modules/lodash/_baseAssignValue.js b/node_modules/lodash/_baseAssignValue.js new file mode 100644 index 0000000..d6f66ef --- /dev/null +++ b/node_modules/lodash/_baseAssignValue.js @@ -0,0 +1,25 @@ +var defineProperty = require('./_defineProperty'); + +/** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } +} + +module.exports = baseAssignValue; diff --git a/node_modules/lodash/_baseAt.js b/node_modules/lodash/_baseAt.js new file mode 100644 index 0000000..90e4237 --- /dev/null +++ b/node_modules/lodash/_baseAt.js @@ -0,0 +1,23 @@ +var get = require('./get'); + +/** + * The base implementation of `_.at` without support for individual paths. + * + * @private + * @param {Object} object The object to iterate over. + * @param {string[]} paths The property paths to pick. + * @returns {Array} Returns the picked elements. + */ +function baseAt(object, paths) { + var index = -1, + length = paths.length, + result = Array(length), + skip = object == null; + + while (++index < length) { + result[index] = skip ? undefined : get(object, paths[index]); + } + return result; +} + +module.exports = baseAt; diff --git a/node_modules/lodash/_baseClamp.js b/node_modules/lodash/_baseClamp.js new file mode 100644 index 0000000..a1c5692 --- /dev/null +++ b/node_modules/lodash/_baseClamp.js @@ -0,0 +1,22 @@ +/** + * The base implementation of `_.clamp` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + */ +function baseClamp(number, lower, upper) { + if (number === number) { + if (upper !== undefined) { + number = number <= upper ? number : upper; + } + if (lower !== undefined) { + number = number >= lower ? number : lower; + } + } + return number; +} + +module.exports = baseClamp; diff --git a/node_modules/lodash/_baseClone.js b/node_modules/lodash/_baseClone.js new file mode 100644 index 0000000..69f8705 --- /dev/null +++ b/node_modules/lodash/_baseClone.js @@ -0,0 +1,166 @@ +var Stack = require('./_Stack'), + arrayEach = require('./_arrayEach'), + assignValue = require('./_assignValue'), + baseAssign = require('./_baseAssign'), + baseAssignIn = require('./_baseAssignIn'), + cloneBuffer = require('./_cloneBuffer'), + copyArray = require('./_copyArray'), + copySymbols = require('./_copySymbols'), + copySymbolsIn = require('./_copySymbolsIn'), + getAllKeys = require('./_getAllKeys'), + getAllKeysIn = require('./_getAllKeysIn'), + getTag = require('./_getTag'), + initCloneArray = require('./_initCloneArray'), + initCloneByTag = require('./_initCloneByTag'), + initCloneObject = require('./_initCloneObject'), + isArray = require('./isArray'), + isBuffer = require('./isBuffer'), + isMap = require('./isMap'), + isObject = require('./isObject'), + isSet = require('./isSet'), + keys = require('./keys'), + keysIn = require('./keysIn'); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values supported by `_.clone`. */ +var cloneableTags = {}; +cloneableTags[argsTag] = cloneableTags[arrayTag] = +cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = +cloneableTags[boolTag] = cloneableTags[dateTag] = +cloneableTags[float32Tag] = cloneableTags[float64Tag] = +cloneableTags[int8Tag] = cloneableTags[int16Tag] = +cloneableTags[int32Tag] = cloneableTags[mapTag] = +cloneableTags[numberTag] = cloneableTags[objectTag] = +cloneableTags[regexpTag] = cloneableTags[setTag] = +cloneableTags[stringTag] = cloneableTags[symbolTag] = +cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = +cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; +cloneableTags[errorTag] = cloneableTags[funcTag] = +cloneableTags[weakMapTag] = false; + +/** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ +function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + } + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; +} + +module.exports = baseClone; diff --git a/node_modules/lodash/_baseConforms.js b/node_modules/lodash/_baseConforms.js new file mode 100644 index 0000000..947e20d --- /dev/null +++ b/node_modules/lodash/_baseConforms.js @@ -0,0 +1,18 @@ +var baseConformsTo = require('./_baseConformsTo'), + keys = require('./keys'); + +/** + * The base implementation of `_.conforms` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + */ +function baseConforms(source) { + var props = keys(source); + return function(object) { + return baseConformsTo(object, source, props); + }; +} + +module.exports = baseConforms; diff --git a/node_modules/lodash/_baseConformsTo.js b/node_modules/lodash/_baseConformsTo.js new file mode 100644 index 0000000..e449cb8 --- /dev/null +++ b/node_modules/lodash/_baseConformsTo.js @@ -0,0 +1,27 @@ +/** + * The base implementation of `_.conformsTo` which accepts `props` to check. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + */ +function baseConformsTo(object, source, props) { + var length = props.length; + if (object == null) { + return !length; + } + object = Object(object); + while (length--) { + var key = props[length], + predicate = source[key], + value = object[key]; + + if ((value === undefined && !(key in object)) || !predicate(value)) { + return false; + } + } + return true; +} + +module.exports = baseConformsTo; diff --git a/node_modules/lodash/_baseCreate.js b/node_modules/lodash/_baseCreate.js new file mode 100644 index 0000000..ffa6a52 --- /dev/null +++ b/node_modules/lodash/_baseCreate.js @@ -0,0 +1,30 @@ +var isObject = require('./isObject'); + +/** Built-in value references. */ +var objectCreate = Object.create; + +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ +var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; +}()); + +module.exports = baseCreate; diff --git a/node_modules/lodash/_baseDelay.js b/node_modules/lodash/_baseDelay.js new file mode 100644 index 0000000..1486d69 --- /dev/null +++ b/node_modules/lodash/_baseDelay.js @@ -0,0 +1,21 @@ +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * The base implementation of `_.delay` and `_.defer` which accepts `args` + * to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Array} args The arguments to provide to `func`. + * @returns {number|Object} Returns the timer id or timeout object. + */ +function baseDelay(func, wait, args) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return setTimeout(function() { func.apply(undefined, args); }, wait); +} + +module.exports = baseDelay; diff --git a/node_modules/lodash/_baseDifference.js b/node_modules/lodash/_baseDifference.js new file mode 100644 index 0000000..343ac19 --- /dev/null +++ b/node_modules/lodash/_baseDifference.js @@ -0,0 +1,67 @@ +var SetCache = require('./_SetCache'), + arrayIncludes = require('./_arrayIncludes'), + arrayIncludesWith = require('./_arrayIncludesWith'), + arrayMap = require('./_arrayMap'), + baseUnary = require('./_baseUnary'), + cacheHas = require('./_cacheHas'); + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * The base implementation of methods like `_.difference` without support + * for excluding multiple arrays or iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + */ +function baseDifference(array, values, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + isCommon = true, + length = array.length, + result = [], + valuesLength = values.length; + + if (!length) { + return result; + } + if (iteratee) { + values = arrayMap(values, baseUnary(iteratee)); + } + if (comparator) { + includes = arrayIncludesWith; + isCommon = false; + } + else if (values.length >= LARGE_ARRAY_SIZE) { + includes = cacheHas; + isCommon = false; + values = new SetCache(values); + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee == null ? value : iteratee(value); + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === computed) { + continue outer; + } + } + result.push(value); + } + else if (!includes(values, computed, comparator)) { + result.push(value); + } + } + return result; +} + +module.exports = baseDifference; diff --git a/node_modules/lodash/_baseEach.js b/node_modules/lodash/_baseEach.js new file mode 100644 index 0000000..512c067 --- /dev/null +++ b/node_modules/lodash/_baseEach.js @@ -0,0 +1,14 @@ +var baseForOwn = require('./_baseForOwn'), + createBaseEach = require('./_createBaseEach'); + +/** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEach = createBaseEach(baseForOwn); + +module.exports = baseEach; diff --git a/node_modules/lodash/_baseEachRight.js b/node_modules/lodash/_baseEachRight.js new file mode 100644 index 0000000..0a8feec --- /dev/null +++ b/node_modules/lodash/_baseEachRight.js @@ -0,0 +1,14 @@ +var baseForOwnRight = require('./_baseForOwnRight'), + createBaseEach = require('./_createBaseEach'); + +/** + * The base implementation of `_.forEachRight` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEachRight = createBaseEach(baseForOwnRight, true); + +module.exports = baseEachRight; diff --git a/node_modules/lodash/_baseEvery.js b/node_modules/lodash/_baseEvery.js new file mode 100644 index 0000000..fa52f7b --- /dev/null +++ b/node_modules/lodash/_baseEvery.js @@ -0,0 +1,21 @@ +var baseEach = require('./_baseEach'); + +/** + * The base implementation of `_.every` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ +function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; +} + +module.exports = baseEvery; diff --git a/node_modules/lodash/_baseExtremum.js b/node_modules/lodash/_baseExtremum.js new file mode 100644 index 0000000..9d6aa77 --- /dev/null +++ b/node_modules/lodash/_baseExtremum.js @@ -0,0 +1,32 @@ +var isSymbol = require('./isSymbol'); + +/** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ +function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined + ? (current === current && !isSymbol(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; +} + +module.exports = baseExtremum; diff --git a/node_modules/lodash/_baseFill.js b/node_modules/lodash/_baseFill.js new file mode 100644 index 0000000..46ef9c7 --- /dev/null +++ b/node_modules/lodash/_baseFill.js @@ -0,0 +1,32 @@ +var toInteger = require('./toInteger'), + toLength = require('./toLength'); + +/** + * The base implementation of `_.fill` without an iteratee call guard. + * + * @private + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ +function baseFill(array, value, start, end) { + var length = array.length; + + start = toInteger(start); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined || end > length) ? length : toInteger(end); + if (end < 0) { + end += length; + } + end = start > end ? 0 : toLength(end); + while (start < end) { + array[start++] = value; + } + return array; +} + +module.exports = baseFill; diff --git a/node_modules/lodash/_baseFilter.js b/node_modules/lodash/_baseFilter.js new file mode 100644 index 0000000..4678477 --- /dev/null +++ b/node_modules/lodash/_baseFilter.js @@ -0,0 +1,21 @@ +var baseEach = require('./_baseEach'); + +/** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; +} + +module.exports = baseFilter; diff --git a/node_modules/lodash/_baseFindIndex.js b/node_modules/lodash/_baseFindIndex.js new file mode 100644 index 0000000..e3f5d8a --- /dev/null +++ b/node_modules/lodash/_baseFindIndex.js @@ -0,0 +1,24 @@ +/** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; +} + +module.exports = baseFindIndex; diff --git a/node_modules/lodash/_baseFindKey.js b/node_modules/lodash/_baseFindKey.js new file mode 100644 index 0000000..2e430f3 --- /dev/null +++ b/node_modules/lodash/_baseFindKey.js @@ -0,0 +1,23 @@ +/** + * The base implementation of methods like `_.findKey` and `_.findLastKey`, + * without support for iteratee shorthands, which iterates over `collection` + * using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the found element or its key, else `undefined`. + */ +function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = key; + return false; + } + }); + return result; +} + +module.exports = baseFindKey; diff --git a/node_modules/lodash/_baseFlatten.js b/node_modules/lodash/_baseFlatten.js new file mode 100644 index 0000000..4b1e009 --- /dev/null +++ b/node_modules/lodash/_baseFlatten.js @@ -0,0 +1,38 @@ +var arrayPush = require('./_arrayPush'), + isFlattenable = require('./_isFlattenable'); + +/** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ +function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; +} + +module.exports = baseFlatten; diff --git a/node_modules/lodash/_baseFor.js b/node_modules/lodash/_baseFor.js new file mode 100644 index 0000000..d946590 --- /dev/null +++ b/node_modules/lodash/_baseFor.js @@ -0,0 +1,16 @@ +var createBaseFor = require('./_createBaseFor'); + +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); + +module.exports = baseFor; diff --git a/node_modules/lodash/_baseForOwn.js b/node_modules/lodash/_baseForOwn.js new file mode 100644 index 0000000..503d523 --- /dev/null +++ b/node_modules/lodash/_baseForOwn.js @@ -0,0 +1,16 @@ +var baseFor = require('./_baseFor'), + keys = require('./keys'); + +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); +} + +module.exports = baseForOwn; diff --git a/node_modules/lodash/_baseForOwnRight.js b/node_modules/lodash/_baseForOwnRight.js new file mode 100644 index 0000000..a4b10e6 --- /dev/null +++ b/node_modules/lodash/_baseForOwnRight.js @@ -0,0 +1,16 @@ +var baseForRight = require('./_baseForRight'), + keys = require('./keys'); + +/** + * The base implementation of `_.forOwnRight` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwnRight(object, iteratee) { + return object && baseForRight(object, iteratee, keys); +} + +module.exports = baseForOwnRight; diff --git a/node_modules/lodash/_baseForRight.js b/node_modules/lodash/_baseForRight.js new file mode 100644 index 0000000..32842cd --- /dev/null +++ b/node_modules/lodash/_baseForRight.js @@ -0,0 +1,15 @@ +var createBaseFor = require('./_createBaseFor'); + +/** + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseForRight = createBaseFor(true); + +module.exports = baseForRight; diff --git a/node_modules/lodash/_baseFunctions.js b/node_modules/lodash/_baseFunctions.js new file mode 100644 index 0000000..d23bc9b --- /dev/null +++ b/node_modules/lodash/_baseFunctions.js @@ -0,0 +1,19 @@ +var arrayFilter = require('./_arrayFilter'), + isFunction = require('./isFunction'); + +/** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from `props`. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the function names. + */ +function baseFunctions(object, props) { + return arrayFilter(props, function(key) { + return isFunction(object[key]); + }); +} + +module.exports = baseFunctions; diff --git a/node_modules/lodash/_baseGet.js b/node_modules/lodash/_baseGet.js new file mode 100644 index 0000000..a194913 --- /dev/null +++ b/node_modules/lodash/_baseGet.js @@ -0,0 +1,24 @@ +var castPath = require('./_castPath'), + toKey = require('./_toKey'); + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} + +module.exports = baseGet; diff --git a/node_modules/lodash/_baseGetAllKeys.js b/node_modules/lodash/_baseGetAllKeys.js new file mode 100644 index 0000000..8ad204e --- /dev/null +++ b/node_modules/lodash/_baseGetAllKeys.js @@ -0,0 +1,20 @@ +var arrayPush = require('./_arrayPush'), + isArray = require('./isArray'); + +/** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); +} + +module.exports = baseGetAllKeys; diff --git a/node_modules/lodash/_baseGetTag.js b/node_modules/lodash/_baseGetTag.js new file mode 100644 index 0000000..b927ccc --- /dev/null +++ b/node_modules/lodash/_baseGetTag.js @@ -0,0 +1,28 @@ +var Symbol = require('./_Symbol'), + getRawTag = require('./_getRawTag'), + objectToString = require('./_objectToString'); + +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); +} + +module.exports = baseGetTag; diff --git a/node_modules/lodash/_baseGt.js b/node_modules/lodash/_baseGt.js new file mode 100644 index 0000000..502d273 --- /dev/null +++ b/node_modules/lodash/_baseGt.js @@ -0,0 +1,14 @@ +/** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ +function baseGt(value, other) { + return value > other; +} + +module.exports = baseGt; diff --git a/node_modules/lodash/_baseHas.js b/node_modules/lodash/_baseHas.js new file mode 100644 index 0000000..1b73032 --- /dev/null +++ b/node_modules/lodash/_baseHas.js @@ -0,0 +1,19 @@ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHas(object, key) { + return object != null && hasOwnProperty.call(object, key); +} + +module.exports = baseHas; diff --git a/node_modules/lodash/_baseHasIn.js b/node_modules/lodash/_baseHasIn.js new file mode 100644 index 0000000..2e0d042 --- /dev/null +++ b/node_modules/lodash/_baseHasIn.js @@ -0,0 +1,13 @@ +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} + +module.exports = baseHasIn; diff --git a/node_modules/lodash/_baseInRange.js b/node_modules/lodash/_baseInRange.js new file mode 100644 index 0000000..ec95666 --- /dev/null +++ b/node_modules/lodash/_baseInRange.js @@ -0,0 +1,18 @@ +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * The base implementation of `_.inRange` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to check. + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + */ +function baseInRange(number, start, end) { + return number >= nativeMin(start, end) && number < nativeMax(start, end); +} + +module.exports = baseInRange; diff --git a/node_modules/lodash/_baseIndexOf.js b/node_modules/lodash/_baseIndexOf.js new file mode 100644 index 0000000..167e706 --- /dev/null +++ b/node_modules/lodash/_baseIndexOf.js @@ -0,0 +1,20 @@ +var baseFindIndex = require('./_baseFindIndex'), + baseIsNaN = require('./_baseIsNaN'), + strictIndexOf = require('./_strictIndexOf'); + +/** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); +} + +module.exports = baseIndexOf; diff --git a/node_modules/lodash/_baseIndexOfWith.js b/node_modules/lodash/_baseIndexOfWith.js new file mode 100644 index 0000000..f815fe0 --- /dev/null +++ b/node_modules/lodash/_baseIndexOfWith.js @@ -0,0 +1,23 @@ +/** + * This function is like `baseIndexOf` except that it accepts a comparator. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @param {Function} comparator The comparator invoked per element. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOfWith(array, value, fromIndex, comparator) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (comparator(array[index], value)) { + return index; + } + } + return -1; +} + +module.exports = baseIndexOfWith; diff --git a/node_modules/lodash/_baseIntersection.js b/node_modules/lodash/_baseIntersection.js new file mode 100644 index 0000000..c1d250c --- /dev/null +++ b/node_modules/lodash/_baseIntersection.js @@ -0,0 +1,74 @@ +var SetCache = require('./_SetCache'), + arrayIncludes = require('./_arrayIncludes'), + arrayIncludesWith = require('./_arrayIncludesWith'), + arrayMap = require('./_arrayMap'), + baseUnary = require('./_baseUnary'), + cacheHas = require('./_cacheHas'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMin = Math.min; + +/** + * The base implementation of methods like `_.intersection`, without support + * for iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of shared values. + */ +function baseIntersection(arrays, iteratee, comparator) { + var includes = comparator ? arrayIncludesWith : arrayIncludes, + length = arrays[0].length, + othLength = arrays.length, + othIndex = othLength, + caches = Array(othLength), + maxLength = Infinity, + result = []; + + while (othIndex--) { + var array = arrays[othIndex]; + if (othIndex && iteratee) { + array = arrayMap(array, baseUnary(iteratee)); + } + maxLength = nativeMin(array.length, maxLength); + caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) + ? new SetCache(othIndex && array) + : undefined; + } + array = arrays[0]; + + var index = -1, + seen = caches[0]; + + outer: + while (++index < length && result.length < maxLength) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (!(seen + ? cacheHas(seen, computed) + : includes(result, computed, comparator) + )) { + othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if (!(cache + ? cacheHas(cache, computed) + : includes(arrays[othIndex], computed, comparator)) + ) { + continue outer; + } + } + if (seen) { + seen.push(computed); + } + result.push(value); + } + } + return result; +} + +module.exports = baseIntersection; diff --git a/node_modules/lodash/_baseInverter.js b/node_modules/lodash/_baseInverter.js new file mode 100644 index 0000000..fbc337f --- /dev/null +++ b/node_modules/lodash/_baseInverter.js @@ -0,0 +1,21 @@ +var baseForOwn = require('./_baseForOwn'); + +/** + * The base implementation of `_.invert` and `_.invertBy` which inverts + * `object` with values transformed by `iteratee` and set by `setter`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform values. + * @param {Object} accumulator The initial inverted object. + * @returns {Function} Returns `accumulator`. + */ +function baseInverter(object, setter, iteratee, accumulator) { + baseForOwn(object, function(value, key, object) { + setter(accumulator, iteratee(value), key, object); + }); + return accumulator; +} + +module.exports = baseInverter; diff --git a/node_modules/lodash/_baseInvoke.js b/node_modules/lodash/_baseInvoke.js new file mode 100644 index 0000000..49bcf3c --- /dev/null +++ b/node_modules/lodash/_baseInvoke.js @@ -0,0 +1,24 @@ +var apply = require('./_apply'), + castPath = require('./_castPath'), + last = require('./last'), + parent = require('./_parent'), + toKey = require('./_toKey'); + +/** + * The base implementation of `_.invoke` without support for individual + * method arguments. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {Array} args The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + */ +function baseInvoke(object, path, args) { + path = castPath(path, object); + object = parent(object, path); + var func = object == null ? object : object[toKey(last(path))]; + return func == null ? undefined : apply(func, object, args); +} + +module.exports = baseInvoke; diff --git a/node_modules/lodash/_baseIsArguments.js b/node_modules/lodash/_baseIsArguments.js new file mode 100644 index 0000000..b3562cc --- /dev/null +++ b/node_modules/lodash/_baseIsArguments.js @@ -0,0 +1,18 @@ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]'; + +/** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ +function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; +} + +module.exports = baseIsArguments; diff --git a/node_modules/lodash/_baseIsArrayBuffer.js b/node_modules/lodash/_baseIsArrayBuffer.js new file mode 100644 index 0000000..a2c4f30 --- /dev/null +++ b/node_modules/lodash/_baseIsArrayBuffer.js @@ -0,0 +1,17 @@ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'); + +var arrayBufferTag = '[object ArrayBuffer]'; + +/** + * The base implementation of `_.isArrayBuffer` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + */ +function baseIsArrayBuffer(value) { + return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; +} + +module.exports = baseIsArrayBuffer; diff --git a/node_modules/lodash/_baseIsDate.js b/node_modules/lodash/_baseIsDate.js new file mode 100644 index 0000000..ba67c78 --- /dev/null +++ b/node_modules/lodash/_baseIsDate.js @@ -0,0 +1,18 @@ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var dateTag = '[object Date]'; + +/** + * The base implementation of `_.isDate` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + */ +function baseIsDate(value) { + return isObjectLike(value) && baseGetTag(value) == dateTag; +} + +module.exports = baseIsDate; diff --git a/node_modules/lodash/_baseIsEqual.js b/node_modules/lodash/_baseIsEqual.js new file mode 100644 index 0000000..00a68a4 --- /dev/null +++ b/node_modules/lodash/_baseIsEqual.js @@ -0,0 +1,28 @@ +var baseIsEqualDeep = require('./_baseIsEqualDeep'), + isObjectLike = require('./isObjectLike'); + +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); +} + +module.exports = baseIsEqual; diff --git a/node_modules/lodash/_baseIsEqualDeep.js b/node_modules/lodash/_baseIsEqualDeep.js new file mode 100644 index 0000000..e3cfd6a --- /dev/null +++ b/node_modules/lodash/_baseIsEqualDeep.js @@ -0,0 +1,83 @@ +var Stack = require('./_Stack'), + equalArrays = require('./_equalArrays'), + equalByTag = require('./_equalByTag'), + equalObjects = require('./_equalObjects'), + getTag = require('./_getTag'), + isArray = require('./isArray'), + isBuffer = require('./isBuffer'), + isTypedArray = require('./isTypedArray'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); +} + +module.exports = baseIsEqualDeep; diff --git a/node_modules/lodash/_baseIsMap.js b/node_modules/lodash/_baseIsMap.js new file mode 100644 index 0000000..02a4021 --- /dev/null +++ b/node_modules/lodash/_baseIsMap.js @@ -0,0 +1,18 @@ +var getTag = require('./_getTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]'; + +/** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ +function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; +} + +module.exports = baseIsMap; diff --git a/node_modules/lodash/_baseIsMatch.js b/node_modules/lodash/_baseIsMatch.js new file mode 100644 index 0000000..72494be --- /dev/null +++ b/node_modules/lodash/_baseIsMatch.js @@ -0,0 +1,62 @@ +var Stack = require('./_Stack'), + baseIsEqual = require('./_baseIsEqual'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; +} + +module.exports = baseIsMatch; diff --git a/node_modules/lodash/_baseIsNaN.js b/node_modules/lodash/_baseIsNaN.js new file mode 100644 index 0000000..316f1eb --- /dev/null +++ b/node_modules/lodash/_baseIsNaN.js @@ -0,0 +1,12 @@ +/** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ +function baseIsNaN(value) { + return value !== value; +} + +module.exports = baseIsNaN; diff --git a/node_modules/lodash/_baseIsNative.js b/node_modules/lodash/_baseIsNative.js new file mode 100644 index 0000000..8702330 --- /dev/null +++ b/node_modules/lodash/_baseIsNative.js @@ -0,0 +1,47 @@ +var isFunction = require('./isFunction'), + isMasked = require('./_isMasked'), + isObject = require('./isObject'), + toSource = require('./_toSource'); + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +module.exports = baseIsNative; diff --git a/node_modules/lodash/_baseIsRegExp.js b/node_modules/lodash/_baseIsRegExp.js new file mode 100644 index 0000000..6cd7c1a --- /dev/null +++ b/node_modules/lodash/_baseIsRegExp.js @@ -0,0 +1,18 @@ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var regexpTag = '[object RegExp]'; + +/** + * The base implementation of `_.isRegExp` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + */ +function baseIsRegExp(value) { + return isObjectLike(value) && baseGetTag(value) == regexpTag; +} + +module.exports = baseIsRegExp; diff --git a/node_modules/lodash/_baseIsSet.js b/node_modules/lodash/_baseIsSet.js new file mode 100644 index 0000000..6dee367 --- /dev/null +++ b/node_modules/lodash/_baseIsSet.js @@ -0,0 +1,18 @@ +var getTag = require('./_getTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var setTag = '[object Set]'; + +/** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ +function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; +} + +module.exports = baseIsSet; diff --git a/node_modules/lodash/_baseIsTypedArray.js b/node_modules/lodash/_baseIsTypedArray.js new file mode 100644 index 0000000..1edb32f --- /dev/null +++ b/node_modules/lodash/_baseIsTypedArray.js @@ -0,0 +1,60 @@ +var baseGetTag = require('./_baseGetTag'), + isLength = require('./isLength'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; + +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; +} + +module.exports = baseIsTypedArray; diff --git a/node_modules/lodash/_baseIteratee.js b/node_modules/lodash/_baseIteratee.js new file mode 100644 index 0000000..995c257 --- /dev/null +++ b/node_modules/lodash/_baseIteratee.js @@ -0,0 +1,31 @@ +var baseMatches = require('./_baseMatches'), + baseMatchesProperty = require('./_baseMatchesProperty'), + identity = require('./identity'), + isArray = require('./isArray'), + property = require('./property'); + +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} + +module.exports = baseIteratee; diff --git a/node_modules/lodash/_baseKeys.js b/node_modules/lodash/_baseKeys.js new file mode 100644 index 0000000..45e9e6f --- /dev/null +++ b/node_modules/lodash/_baseKeys.js @@ -0,0 +1,30 @@ +var isPrototype = require('./_isPrototype'), + nativeKeys = require('./_nativeKeys'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} + +module.exports = baseKeys; diff --git a/node_modules/lodash/_baseKeysIn.js b/node_modules/lodash/_baseKeysIn.js new file mode 100644 index 0000000..ea8a0a1 --- /dev/null +++ b/node_modules/lodash/_baseKeysIn.js @@ -0,0 +1,33 @@ +var isObject = require('./isObject'), + isPrototype = require('./_isPrototype'), + nativeKeysIn = require('./_nativeKeysIn'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; +} + +module.exports = baseKeysIn; diff --git a/node_modules/lodash/_baseLodash.js b/node_modules/lodash/_baseLodash.js new file mode 100644 index 0000000..f76c790 --- /dev/null +++ b/node_modules/lodash/_baseLodash.js @@ -0,0 +1,10 @@ +/** + * The function whose prototype chain sequence wrappers inherit from. + * + * @private + */ +function baseLodash() { + // No operation performed. +} + +module.exports = baseLodash; diff --git a/node_modules/lodash/_baseLt.js b/node_modules/lodash/_baseLt.js new file mode 100644 index 0000000..8674d29 --- /dev/null +++ b/node_modules/lodash/_baseLt.js @@ -0,0 +1,14 @@ +/** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ +function baseLt(value, other) { + return value < other; +} + +module.exports = baseLt; diff --git a/node_modules/lodash/_baseMap.js b/node_modules/lodash/_baseMap.js new file mode 100644 index 0000000..0bf5cea --- /dev/null +++ b/node_modules/lodash/_baseMap.js @@ -0,0 +1,22 @@ +var baseEach = require('./_baseEach'), + isArrayLike = require('./isArrayLike'); + +/** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; +} + +module.exports = baseMap; diff --git a/node_modules/lodash/_baseMatches.js b/node_modules/lodash/_baseMatches.js new file mode 100644 index 0000000..e56582a --- /dev/null +++ b/node_modules/lodash/_baseMatches.js @@ -0,0 +1,22 @@ +var baseIsMatch = require('./_baseIsMatch'), + getMatchData = require('./_getMatchData'), + matchesStrictComparable = require('./_matchesStrictComparable'); + +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; +} + +module.exports = baseMatches; diff --git a/node_modules/lodash/_baseMatchesProperty.js b/node_modules/lodash/_baseMatchesProperty.js new file mode 100644 index 0000000..24afd89 --- /dev/null +++ b/node_modules/lodash/_baseMatchesProperty.js @@ -0,0 +1,33 @@ +var baseIsEqual = require('./_baseIsEqual'), + get = require('./get'), + hasIn = require('./hasIn'), + isKey = require('./_isKey'), + isStrictComparable = require('./_isStrictComparable'), + matchesStrictComparable = require('./_matchesStrictComparable'), + toKey = require('./_toKey'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; +} + +module.exports = baseMatchesProperty; diff --git a/node_modules/lodash/_baseMean.js b/node_modules/lodash/_baseMean.js new file mode 100644 index 0000000..fa9e00a --- /dev/null +++ b/node_modules/lodash/_baseMean.js @@ -0,0 +1,20 @@ +var baseSum = require('./_baseSum'); + +/** Used as references for various `Number` constants. */ +var NAN = 0 / 0; + +/** + * The base implementation of `_.mean` and `_.meanBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the mean. + */ +function baseMean(array, iteratee) { + var length = array == null ? 0 : array.length; + return length ? (baseSum(array, iteratee) / length) : NAN; +} + +module.exports = baseMean; diff --git a/node_modules/lodash/_baseMerge.js b/node_modules/lodash/_baseMerge.js new file mode 100644 index 0000000..c98b5eb --- /dev/null +++ b/node_modules/lodash/_baseMerge.js @@ -0,0 +1,42 @@ +var Stack = require('./_Stack'), + assignMergeValue = require('./_assignMergeValue'), + baseFor = require('./_baseFor'), + baseMergeDeep = require('./_baseMergeDeep'), + isObject = require('./isObject'), + keysIn = require('./keysIn'), + safeGet = require('./_safeGet'); + +/** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); +} + +module.exports = baseMerge; diff --git a/node_modules/lodash/_baseMergeDeep.js b/node_modules/lodash/_baseMergeDeep.js new file mode 100644 index 0000000..4679e8d --- /dev/null +++ b/node_modules/lodash/_baseMergeDeep.js @@ -0,0 +1,94 @@ +var assignMergeValue = require('./_assignMergeValue'), + cloneBuffer = require('./_cloneBuffer'), + cloneTypedArray = require('./_cloneTypedArray'), + copyArray = require('./_copyArray'), + initCloneObject = require('./_initCloneObject'), + isArguments = require('./isArguments'), + isArray = require('./isArray'), + isArrayLikeObject = require('./isArrayLikeObject'), + isBuffer = require('./isBuffer'), + isFunction = require('./isFunction'), + isObject = require('./isObject'), + isPlainObject = require('./isPlainObject'), + isTypedArray = require('./isTypedArray'), + safeGet = require('./_safeGet'), + toPlainObject = require('./toPlainObject'); + +/** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); +} + +module.exports = baseMergeDeep; diff --git a/node_modules/lodash/_baseNth.js b/node_modules/lodash/_baseNth.js new file mode 100644 index 0000000..0403c2a --- /dev/null +++ b/node_modules/lodash/_baseNth.js @@ -0,0 +1,20 @@ +var isIndex = require('./_isIndex'); + +/** + * The base implementation of `_.nth` which doesn't coerce arguments. + * + * @private + * @param {Array} array The array to query. + * @param {number} n The index of the element to return. + * @returns {*} Returns the nth element of `array`. + */ +function baseNth(array, n) { + var length = array.length; + if (!length) { + return; + } + n += n < 0 ? length : 0; + return isIndex(n, length) ? array[n] : undefined; +} + +module.exports = baseNth; diff --git a/node_modules/lodash/_baseOrderBy.js b/node_modules/lodash/_baseOrderBy.js new file mode 100644 index 0000000..775a017 --- /dev/null +++ b/node_modules/lodash/_baseOrderBy.js @@ -0,0 +1,49 @@ +var arrayMap = require('./_arrayMap'), + baseGet = require('./_baseGet'), + baseIteratee = require('./_baseIteratee'), + baseMap = require('./_baseMap'), + baseSortBy = require('./_baseSortBy'), + baseUnary = require('./_baseUnary'), + compareMultiple = require('./_compareMultiple'), + identity = require('./identity'), + isArray = require('./isArray'); + +/** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ +function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = arrayMap(iteratees, function(iteratee) { + if (isArray(iteratee)) { + return function(value) { + return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); + } + } + return iteratee; + }); + } else { + iteratees = [identity]; + } + + var index = -1; + iteratees = arrayMap(iteratees, baseUnary(baseIteratee)); + + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); +} + +module.exports = baseOrderBy; diff --git a/node_modules/lodash/_basePick.js b/node_modules/lodash/_basePick.js new file mode 100644 index 0000000..09b458a --- /dev/null +++ b/node_modules/lodash/_basePick.js @@ -0,0 +1,19 @@ +var basePickBy = require('./_basePickBy'), + hasIn = require('./hasIn'); + +/** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ +function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); +} + +module.exports = basePick; diff --git a/node_modules/lodash/_basePickBy.js b/node_modules/lodash/_basePickBy.js new file mode 100644 index 0000000..85be68c --- /dev/null +++ b/node_modules/lodash/_basePickBy.js @@ -0,0 +1,30 @@ +var baseGet = require('./_baseGet'), + baseSet = require('./_baseSet'), + castPath = require('./_castPath'); + +/** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ +function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; +} + +module.exports = basePickBy; diff --git a/node_modules/lodash/_baseProperty.js b/node_modules/lodash/_baseProperty.js new file mode 100644 index 0000000..496281e --- /dev/null +++ b/node_modules/lodash/_baseProperty.js @@ -0,0 +1,14 @@ +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +module.exports = baseProperty; diff --git a/node_modules/lodash/_basePropertyDeep.js b/node_modules/lodash/_basePropertyDeep.js new file mode 100644 index 0000000..1e5aae5 --- /dev/null +++ b/node_modules/lodash/_basePropertyDeep.js @@ -0,0 +1,16 @@ +var baseGet = require('./_baseGet'); + +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; +} + +module.exports = basePropertyDeep; diff --git a/node_modules/lodash/_basePropertyOf.js b/node_modules/lodash/_basePropertyOf.js new file mode 100644 index 0000000..4617399 --- /dev/null +++ b/node_modules/lodash/_basePropertyOf.js @@ -0,0 +1,14 @@ +/** + * The base implementation of `_.propertyOf` without support for deep paths. + * + * @private + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyOf(object) { + return function(key) { + return object == null ? undefined : object[key]; + }; +} + +module.exports = basePropertyOf; diff --git a/node_modules/lodash/_basePullAll.js b/node_modules/lodash/_basePullAll.js new file mode 100644 index 0000000..305720e --- /dev/null +++ b/node_modules/lodash/_basePullAll.js @@ -0,0 +1,51 @@ +var arrayMap = require('./_arrayMap'), + baseIndexOf = require('./_baseIndexOf'), + baseIndexOfWith = require('./_baseIndexOfWith'), + baseUnary = require('./_baseUnary'), + copyArray = require('./_copyArray'); + +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/** + * The base implementation of `_.pullAllBy` without support for iteratee + * shorthands. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + */ +function basePullAll(array, values, iteratee, comparator) { + var indexOf = comparator ? baseIndexOfWith : baseIndexOf, + index = -1, + length = values.length, + seen = array; + + if (array === values) { + values = copyArray(values); + } + if (iteratee) { + seen = arrayMap(array, baseUnary(iteratee)); + } + while (++index < length) { + var fromIndex = 0, + value = values[index], + computed = iteratee ? iteratee(value) : value; + + while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { + if (seen !== array) { + splice.call(seen, fromIndex, 1); + } + splice.call(array, fromIndex, 1); + } + } + return array; +} + +module.exports = basePullAll; diff --git a/node_modules/lodash/_basePullAt.js b/node_modules/lodash/_basePullAt.js new file mode 100644 index 0000000..c3e9e71 --- /dev/null +++ b/node_modules/lodash/_basePullAt.js @@ -0,0 +1,37 @@ +var baseUnset = require('./_baseUnset'), + isIndex = require('./_isIndex'); + +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/** + * The base implementation of `_.pullAt` without support for individual + * indexes or capturing the removed elements. + * + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns `array`. + */ +function basePullAt(array, indexes) { + var length = array ? indexes.length : 0, + lastIndex = length - 1; + + while (length--) { + var index = indexes[length]; + if (length == lastIndex || index !== previous) { + var previous = index; + if (isIndex(index)) { + splice.call(array, index, 1); + } else { + baseUnset(array, index); + } + } + } + return array; +} + +module.exports = basePullAt; diff --git a/node_modules/lodash/_baseRandom.js b/node_modules/lodash/_baseRandom.js new file mode 100644 index 0000000..94f76a7 --- /dev/null +++ b/node_modules/lodash/_baseRandom.js @@ -0,0 +1,18 @@ +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeFloor = Math.floor, + nativeRandom = Math.random; + +/** + * The base implementation of `_.random` without support for returning + * floating-point numbers. + * + * @private + * @param {number} lower The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the random number. + */ +function baseRandom(lower, upper) { + return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); +} + +module.exports = baseRandom; diff --git a/node_modules/lodash/_baseRange.js b/node_modules/lodash/_baseRange.js new file mode 100644 index 0000000..0fb8e41 --- /dev/null +++ b/node_modules/lodash/_baseRange.js @@ -0,0 +1,28 @@ +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeCeil = Math.ceil, + nativeMax = Math.max; + +/** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ +function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; +} + +module.exports = baseRange; diff --git a/node_modules/lodash/_baseReduce.js b/node_modules/lodash/_baseReduce.js new file mode 100644 index 0000000..5a1f8b5 --- /dev/null +++ b/node_modules/lodash/_baseReduce.js @@ -0,0 +1,23 @@ +/** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ +function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; +} + +module.exports = baseReduce; diff --git a/node_modules/lodash/_baseRepeat.js b/node_modules/lodash/_baseRepeat.js new file mode 100644 index 0000000..ee44c31 --- /dev/null +++ b/node_modules/lodash/_baseRepeat.js @@ -0,0 +1,35 @@ +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeFloor = Math.floor; + +/** + * The base implementation of `_.repeat` which doesn't coerce arguments. + * + * @private + * @param {string} string The string to repeat. + * @param {number} n The number of times to repeat the string. + * @returns {string} Returns the repeated string. + */ +function baseRepeat(string, n) { + var result = ''; + if (!string || n < 1 || n > MAX_SAFE_INTEGER) { + return result; + } + // Leverage the exponentiation by squaring algorithm for a faster repeat. + // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. + do { + if (n % 2) { + result += string; + } + n = nativeFloor(n / 2); + if (n) { + string += string; + } + } while (n); + + return result; +} + +module.exports = baseRepeat; diff --git a/node_modules/lodash/_baseRest.js b/node_modules/lodash/_baseRest.js new file mode 100644 index 0000000..d0dc4bd --- /dev/null +++ b/node_modules/lodash/_baseRest.js @@ -0,0 +1,17 @@ +var identity = require('./identity'), + overRest = require('./_overRest'), + setToString = require('./_setToString'); + +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); +} + +module.exports = baseRest; diff --git a/node_modules/lodash/_baseSample.js b/node_modules/lodash/_baseSample.js new file mode 100644 index 0000000..58582b9 --- /dev/null +++ b/node_modules/lodash/_baseSample.js @@ -0,0 +1,15 @@ +var arraySample = require('./_arraySample'), + values = require('./values'); + +/** + * The base implementation of `_.sample`. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + */ +function baseSample(collection) { + return arraySample(values(collection)); +} + +module.exports = baseSample; diff --git a/node_modules/lodash/_baseSampleSize.js b/node_modules/lodash/_baseSampleSize.js new file mode 100644 index 0000000..5c90ec5 --- /dev/null +++ b/node_modules/lodash/_baseSampleSize.js @@ -0,0 +1,18 @@ +var baseClamp = require('./_baseClamp'), + shuffleSelf = require('./_shuffleSelf'), + values = require('./values'); + +/** + * The base implementation of `_.sampleSize` without param guards. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ +function baseSampleSize(collection, n) { + var array = values(collection); + return shuffleSelf(array, baseClamp(n, 0, array.length)); +} + +module.exports = baseSampleSize; diff --git a/node_modules/lodash/_baseSet.js b/node_modules/lodash/_baseSet.js new file mode 100644 index 0000000..99f4fbf --- /dev/null +++ b/node_modules/lodash/_baseSet.js @@ -0,0 +1,51 @@ +var assignValue = require('./_assignValue'), + castPath = require('./_castPath'), + isIndex = require('./_isIndex'), + isObject = require('./isObject'), + toKey = require('./_toKey'); + +/** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ +function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return object; + } + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; +} + +module.exports = baseSet; diff --git a/node_modules/lodash/_baseSetData.js b/node_modules/lodash/_baseSetData.js new file mode 100644 index 0000000..c409947 --- /dev/null +++ b/node_modules/lodash/_baseSetData.js @@ -0,0 +1,17 @@ +var identity = require('./identity'), + metaMap = require('./_metaMap'); + +/** + * The base implementation of `setData` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ +var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; +}; + +module.exports = baseSetData; diff --git a/node_modules/lodash/_baseSetToString.js b/node_modules/lodash/_baseSetToString.js new file mode 100644 index 0000000..89eaca3 --- /dev/null +++ b/node_modules/lodash/_baseSetToString.js @@ -0,0 +1,22 @@ +var constant = require('./constant'), + defineProperty = require('./_defineProperty'), + identity = require('./identity'); + +/** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); +}; + +module.exports = baseSetToString; diff --git a/node_modules/lodash/_baseShuffle.js b/node_modules/lodash/_baseShuffle.js new file mode 100644 index 0000000..023077a --- /dev/null +++ b/node_modules/lodash/_baseShuffle.js @@ -0,0 +1,15 @@ +var shuffleSelf = require('./_shuffleSelf'), + values = require('./values'); + +/** + * The base implementation of `_.shuffle`. + * + * @private + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + */ +function baseShuffle(collection) { + return shuffleSelf(values(collection)); +} + +module.exports = baseShuffle; diff --git a/node_modules/lodash/_baseSlice.js b/node_modules/lodash/_baseSlice.js new file mode 100644 index 0000000..786f6c9 --- /dev/null +++ b/node_modules/lodash/_baseSlice.js @@ -0,0 +1,31 @@ +/** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ +function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; +} + +module.exports = baseSlice; diff --git a/node_modules/lodash/_baseSome.js b/node_modules/lodash/_baseSome.js new file mode 100644 index 0000000..58f3f44 --- /dev/null +++ b/node_modules/lodash/_baseSome.js @@ -0,0 +1,22 @@ +var baseEach = require('./_baseEach'); + +/** + * The base implementation of `_.some` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; +} + +module.exports = baseSome; diff --git a/node_modules/lodash/_baseSortBy.js b/node_modules/lodash/_baseSortBy.js new file mode 100644 index 0000000..a25c92e --- /dev/null +++ b/node_modules/lodash/_baseSortBy.js @@ -0,0 +1,21 @@ +/** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ +function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; +} + +module.exports = baseSortBy; diff --git a/node_modules/lodash/_baseSortedIndex.js b/node_modules/lodash/_baseSortedIndex.js new file mode 100644 index 0000000..638c366 --- /dev/null +++ b/node_modules/lodash/_baseSortedIndex.js @@ -0,0 +1,42 @@ +var baseSortedIndexBy = require('./_baseSortedIndexBy'), + identity = require('./identity'), + isSymbol = require('./isSymbol'); + +/** Used as references for the maximum length and index of an array. */ +var MAX_ARRAY_LENGTH = 4294967295, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + +/** + * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which + * performs a binary search of `array` to determine the index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ +function baseSortedIndex(array, value, retHighest) { + var low = 0, + high = array == null ? low : array.length; + + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if (computed !== null && !isSymbol(computed) && + (retHighest ? (computed <= value) : (computed < value))) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return baseSortedIndexBy(array, value, identity, retHighest); +} + +module.exports = baseSortedIndex; diff --git a/node_modules/lodash/_baseSortedIndexBy.js b/node_modules/lodash/_baseSortedIndexBy.js new file mode 100644 index 0000000..c247b37 --- /dev/null +++ b/node_modules/lodash/_baseSortedIndexBy.js @@ -0,0 +1,67 @@ +var isSymbol = require('./isSymbol'); + +/** Used as references for the maximum length and index of an array. */ +var MAX_ARRAY_LENGTH = 4294967295, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeFloor = Math.floor, + nativeMin = Math.min; + +/** + * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` + * which invokes `iteratee` for `value` and each element of `array` to compute + * their sort ranking. The iteratee is invoked with one argument; (value). + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} iteratee The iteratee invoked per element. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ +function baseSortedIndexBy(array, value, iteratee, retHighest) { + var low = 0, + high = array == null ? 0 : array.length; + if (high === 0) { + return 0; + } + + value = iteratee(value); + var valIsNaN = value !== value, + valIsNull = value === null, + valIsSymbol = isSymbol(value), + valIsUndefined = value === undefined; + + while (low < high) { + var mid = nativeFloor((low + high) / 2), + computed = iteratee(array[mid]), + othIsDefined = computed !== undefined, + othIsNull = computed === null, + othIsReflexive = computed === computed, + othIsSymbol = isSymbol(computed); + + if (valIsNaN) { + var setLow = retHighest || othIsReflexive; + } else if (valIsUndefined) { + setLow = othIsReflexive && (retHighest || othIsDefined); + } else if (valIsNull) { + setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); + } else if (valIsSymbol) { + setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); + } else if (othIsNull || othIsSymbol) { + setLow = false; + } else { + setLow = retHighest ? (computed <= value) : (computed < value); + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); +} + +module.exports = baseSortedIndexBy; diff --git a/node_modules/lodash/_baseSortedUniq.js b/node_modules/lodash/_baseSortedUniq.js new file mode 100644 index 0000000..802159a --- /dev/null +++ b/node_modules/lodash/_baseSortedUniq.js @@ -0,0 +1,30 @@ +var eq = require('./eq'); + +/** + * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ +function baseSortedUniq(array, iteratee) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + if (!index || !eq(computed, seen)) { + var seen = computed; + result[resIndex++] = value === 0 ? 0 : value; + } + } + return result; +} + +module.exports = baseSortedUniq; diff --git a/node_modules/lodash/_baseSum.js b/node_modules/lodash/_baseSum.js new file mode 100644 index 0000000..a9e84c1 --- /dev/null +++ b/node_modules/lodash/_baseSum.js @@ -0,0 +1,24 @@ +/** + * The base implementation of `_.sum` and `_.sumBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the sum. + */ +function baseSum(array, iteratee) { + var result, + index = -1, + length = array.length; + + while (++index < length) { + var current = iteratee(array[index]); + if (current !== undefined) { + result = result === undefined ? current : (result + current); + } + } + return result; +} + +module.exports = baseSum; diff --git a/node_modules/lodash/_baseTimes.js b/node_modules/lodash/_baseTimes.js new file mode 100644 index 0000000..0603fc3 --- /dev/null +++ b/node_modules/lodash/_baseTimes.js @@ -0,0 +1,20 @@ +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +module.exports = baseTimes; diff --git a/node_modules/lodash/_baseToNumber.js b/node_modules/lodash/_baseToNumber.js new file mode 100644 index 0000000..04859f3 --- /dev/null +++ b/node_modules/lodash/_baseToNumber.js @@ -0,0 +1,24 @@ +var isSymbol = require('./isSymbol'); + +/** Used as references for various `Number` constants. */ +var NAN = 0 / 0; + +/** + * The base implementation of `_.toNumber` which doesn't ensure correct + * conversions of binary, hexadecimal, or octal string values. + * + * @private + * @param {*} value The value to process. + * @returns {number} Returns the number. + */ +function baseToNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + return +value; +} + +module.exports = baseToNumber; diff --git a/node_modules/lodash/_baseToPairs.js b/node_modules/lodash/_baseToPairs.js new file mode 100644 index 0000000..bff1991 --- /dev/null +++ b/node_modules/lodash/_baseToPairs.js @@ -0,0 +1,18 @@ +var arrayMap = require('./_arrayMap'); + +/** + * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array + * of key-value pairs for `object` corresponding to the property names of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the key-value pairs. + */ +function baseToPairs(object, props) { + return arrayMap(props, function(key) { + return [key, object[key]]; + }); +} + +module.exports = baseToPairs; diff --git a/node_modules/lodash/_baseToString.js b/node_modules/lodash/_baseToString.js new file mode 100644 index 0000000..ada6ad2 --- /dev/null +++ b/node_modules/lodash/_baseToString.js @@ -0,0 +1,37 @@ +var Symbol = require('./_Symbol'), + arrayMap = require('./_arrayMap'), + isArray = require('./isArray'), + isSymbol = require('./isSymbol'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +module.exports = baseToString; diff --git a/node_modules/lodash/_baseTrim.js b/node_modules/lodash/_baseTrim.js new file mode 100644 index 0000000..3e2797d --- /dev/null +++ b/node_modules/lodash/_baseTrim.js @@ -0,0 +1,19 @@ +var trimmedEndIndex = require('./_trimmedEndIndex'); + +/** Used to match leading whitespace. */ +var reTrimStart = /^\s+/; + +/** + * The base implementation of `_.trim`. + * + * @private + * @param {string} string The string to trim. + * @returns {string} Returns the trimmed string. + */ +function baseTrim(string) { + return string + ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') + : string; +} + +module.exports = baseTrim; diff --git a/node_modules/lodash/_baseUnary.js b/node_modules/lodash/_baseUnary.js new file mode 100644 index 0000000..98639e9 --- /dev/null +++ b/node_modules/lodash/_baseUnary.js @@ -0,0 +1,14 @@ +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} + +module.exports = baseUnary; diff --git a/node_modules/lodash/_baseUniq.js b/node_modules/lodash/_baseUniq.js new file mode 100644 index 0000000..aea459d --- /dev/null +++ b/node_modules/lodash/_baseUniq.js @@ -0,0 +1,72 @@ +var SetCache = require('./_SetCache'), + arrayIncludes = require('./_arrayIncludes'), + arrayIncludesWith = require('./_arrayIncludesWith'), + cacheHas = require('./_cacheHas'), + createSet = require('./_createSet'), + setToArray = require('./_setToArray'); + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ +function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; +} + +module.exports = baseUniq; diff --git a/node_modules/lodash/_baseUnset.js b/node_modules/lodash/_baseUnset.js new file mode 100644 index 0000000..eefc6e3 --- /dev/null +++ b/node_modules/lodash/_baseUnset.js @@ -0,0 +1,20 @@ +var castPath = require('./_castPath'), + last = require('./last'), + parent = require('./_parent'), + toKey = require('./_toKey'); + +/** + * The base implementation of `_.unset`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The property path to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + */ +function baseUnset(object, path) { + path = castPath(path, object); + object = parent(object, path); + return object == null || delete object[toKey(last(path))]; +} + +module.exports = baseUnset; diff --git a/node_modules/lodash/_baseUpdate.js b/node_modules/lodash/_baseUpdate.js new file mode 100644 index 0000000..92a6237 --- /dev/null +++ b/node_modules/lodash/_baseUpdate.js @@ -0,0 +1,18 @@ +var baseGet = require('./_baseGet'), + baseSet = require('./_baseSet'); + +/** + * The base implementation of `_.update`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to update. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ +function baseUpdate(object, path, updater, customizer) { + return baseSet(object, path, updater(baseGet(object, path)), customizer); +} + +module.exports = baseUpdate; diff --git a/node_modules/lodash/_baseValues.js b/node_modules/lodash/_baseValues.js new file mode 100644 index 0000000..b95faad --- /dev/null +++ b/node_modules/lodash/_baseValues.js @@ -0,0 +1,19 @@ +var arrayMap = require('./_arrayMap'); + +/** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ +function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); +} + +module.exports = baseValues; diff --git a/node_modules/lodash/_baseWhile.js b/node_modules/lodash/_baseWhile.js new file mode 100644 index 0000000..07eac61 --- /dev/null +++ b/node_modules/lodash/_baseWhile.js @@ -0,0 +1,26 @@ +var baseSlice = require('./_baseSlice'); + +/** + * The base implementation of methods like `_.dropWhile` and `_.takeWhile` + * without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to query. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [isDrop] Specify dropping elements instead of taking them. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the slice of `array`. + */ +function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length) && + predicate(array[index], index, array)) {} + + return isDrop + ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) + : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); +} + +module.exports = baseWhile; diff --git a/node_modules/lodash/_baseWrapperValue.js b/node_modules/lodash/_baseWrapperValue.js new file mode 100644 index 0000000..443e0df --- /dev/null +++ b/node_modules/lodash/_baseWrapperValue.js @@ -0,0 +1,25 @@ +var LazyWrapper = require('./_LazyWrapper'), + arrayPush = require('./_arrayPush'), + arrayReduce = require('./_arrayReduce'); + +/** + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. + * + * @private + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to perform to resolve the unwrapped value. + * @returns {*} Returns the resolved value. + */ +function baseWrapperValue(value, actions) { + var result = value; + if (result instanceof LazyWrapper) { + result = result.value(); + } + return arrayReduce(actions, function(result, action) { + return action.func.apply(action.thisArg, arrayPush([result], action.args)); + }, result); +} + +module.exports = baseWrapperValue; diff --git a/node_modules/lodash/_baseXor.js b/node_modules/lodash/_baseXor.js new file mode 100644 index 0000000..8e69338 --- /dev/null +++ b/node_modules/lodash/_baseXor.js @@ -0,0 +1,36 @@ +var baseDifference = require('./_baseDifference'), + baseFlatten = require('./_baseFlatten'), + baseUniq = require('./_baseUniq'); + +/** + * The base implementation of methods like `_.xor`, without support for + * iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of values. + */ +function baseXor(arrays, iteratee, comparator) { + var length = arrays.length; + if (length < 2) { + return length ? baseUniq(arrays[0]) : []; + } + var index = -1, + result = Array(length); + + while (++index < length) { + var array = arrays[index], + othIndex = -1; + + while (++othIndex < length) { + if (othIndex != index) { + result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); + } + } + } + return baseUniq(baseFlatten(result, 1), iteratee, comparator); +} + +module.exports = baseXor; diff --git a/node_modules/lodash/_baseZipObject.js b/node_modules/lodash/_baseZipObject.js new file mode 100644 index 0000000..401f85b --- /dev/null +++ b/node_modules/lodash/_baseZipObject.js @@ -0,0 +1,23 @@ +/** + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. + */ +function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); + } + return result; +} + +module.exports = baseZipObject; diff --git a/node_modules/lodash/_cacheHas.js b/node_modules/lodash/_cacheHas.js new file mode 100644 index 0000000..2dec892 --- /dev/null +++ b/node_modules/lodash/_cacheHas.js @@ -0,0 +1,13 @@ +/** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} + +module.exports = cacheHas; diff --git a/node_modules/lodash/_castArrayLikeObject.js b/node_modules/lodash/_castArrayLikeObject.js new file mode 100644 index 0000000..92c75fa --- /dev/null +++ b/node_modules/lodash/_castArrayLikeObject.js @@ -0,0 +1,14 @@ +var isArrayLikeObject = require('./isArrayLikeObject'); + +/** + * Casts `value` to an empty array if it's not an array like object. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array|Object} Returns the cast array-like object. + */ +function castArrayLikeObject(value) { + return isArrayLikeObject(value) ? value : []; +} + +module.exports = castArrayLikeObject; diff --git a/node_modules/lodash/_castFunction.js b/node_modules/lodash/_castFunction.js new file mode 100644 index 0000000..98c91ae --- /dev/null +++ b/node_modules/lodash/_castFunction.js @@ -0,0 +1,14 @@ +var identity = require('./identity'); + +/** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ +function castFunction(value) { + return typeof value == 'function' ? value : identity; +} + +module.exports = castFunction; diff --git a/node_modules/lodash/_castPath.js b/node_modules/lodash/_castPath.js new file mode 100644 index 0000000..017e4c1 --- /dev/null +++ b/node_modules/lodash/_castPath.js @@ -0,0 +1,21 @@ +var isArray = require('./isArray'), + isKey = require('./_isKey'), + stringToPath = require('./_stringToPath'), + toString = require('./toString'); + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); +} + +module.exports = castPath; diff --git a/node_modules/lodash/_castRest.js b/node_modules/lodash/_castRest.js new file mode 100644 index 0000000..213c66f --- /dev/null +++ b/node_modules/lodash/_castRest.js @@ -0,0 +1,14 @@ +var baseRest = require('./_baseRest'); + +/** + * A `baseRest` alias which can be replaced with `identity` by module + * replacement plugins. + * + * @private + * @type {Function} + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ +var castRest = baseRest; + +module.exports = castRest; diff --git a/node_modules/lodash/_castSlice.js b/node_modules/lodash/_castSlice.js new file mode 100644 index 0000000..071faeb --- /dev/null +++ b/node_modules/lodash/_castSlice.js @@ -0,0 +1,18 @@ +var baseSlice = require('./_baseSlice'); + +/** + * Casts `array` to a slice if it's needed. + * + * @private + * @param {Array} array The array to inspect. + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. + */ +function castSlice(array, start, end) { + var length = array.length; + end = end === undefined ? length : end; + return (!start && end >= length) ? array : baseSlice(array, start, end); +} + +module.exports = castSlice; diff --git a/node_modules/lodash/_charsEndIndex.js b/node_modules/lodash/_charsEndIndex.js new file mode 100644 index 0000000..07908ff --- /dev/null +++ b/node_modules/lodash/_charsEndIndex.js @@ -0,0 +1,19 @@ +var baseIndexOf = require('./_baseIndexOf'); + +/** + * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the last unmatched string symbol. + */ +function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; + + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; +} + +module.exports = charsEndIndex; diff --git a/node_modules/lodash/_charsStartIndex.js b/node_modules/lodash/_charsStartIndex.js new file mode 100644 index 0000000..b17afd2 --- /dev/null +++ b/node_modules/lodash/_charsStartIndex.js @@ -0,0 +1,20 @@ +var baseIndexOf = require('./_baseIndexOf'); + +/** + * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the first unmatched string symbol. + */ +function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, + length = strSymbols.length; + + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; +} + +module.exports = charsStartIndex; diff --git a/node_modules/lodash/_cloneArrayBuffer.js b/node_modules/lodash/_cloneArrayBuffer.js new file mode 100644 index 0000000..c3d8f6e --- /dev/null +++ b/node_modules/lodash/_cloneArrayBuffer.js @@ -0,0 +1,16 @@ +var Uint8Array = require('./_Uint8Array'); + +/** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ +function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; +} + +module.exports = cloneArrayBuffer; diff --git a/node_modules/lodash/_cloneBuffer.js b/node_modules/lodash/_cloneBuffer.js new file mode 100644 index 0000000..27c4810 --- /dev/null +++ b/node_modules/lodash/_cloneBuffer.js @@ -0,0 +1,35 @@ +var root = require('./_root'); + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; + +/** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ +function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; +} + +module.exports = cloneBuffer; diff --git a/node_modules/lodash/_cloneDataView.js b/node_modules/lodash/_cloneDataView.js new file mode 100644 index 0000000..9c9b7b0 --- /dev/null +++ b/node_modules/lodash/_cloneDataView.js @@ -0,0 +1,16 @@ +var cloneArrayBuffer = require('./_cloneArrayBuffer'); + +/** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ +function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); +} + +module.exports = cloneDataView; diff --git a/node_modules/lodash/_cloneRegExp.js b/node_modules/lodash/_cloneRegExp.js new file mode 100644 index 0000000..64a30df --- /dev/null +++ b/node_modules/lodash/_cloneRegExp.js @@ -0,0 +1,17 @@ +/** Used to match `RegExp` flags from their coerced string values. */ +var reFlags = /\w*$/; + +/** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ +function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; +} + +module.exports = cloneRegExp; diff --git a/node_modules/lodash/_cloneSymbol.js b/node_modules/lodash/_cloneSymbol.js new file mode 100644 index 0000000..bede39f --- /dev/null +++ b/node_modules/lodash/_cloneSymbol.js @@ -0,0 +1,18 @@ +var Symbol = require('./_Symbol'); + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ +function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; +} + +module.exports = cloneSymbol; diff --git a/node_modules/lodash/_cloneTypedArray.js b/node_modules/lodash/_cloneTypedArray.js new file mode 100644 index 0000000..7aad84d --- /dev/null +++ b/node_modules/lodash/_cloneTypedArray.js @@ -0,0 +1,16 @@ +var cloneArrayBuffer = require('./_cloneArrayBuffer'); + +/** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ +function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); +} + +module.exports = cloneTypedArray; diff --git a/node_modules/lodash/_compareAscending.js b/node_modules/lodash/_compareAscending.js new file mode 100644 index 0000000..8dc2791 --- /dev/null +++ b/node_modules/lodash/_compareAscending.js @@ -0,0 +1,41 @@ +var isSymbol = require('./isSymbol'); + +/** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ +function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; +} + +module.exports = compareAscending; diff --git a/node_modules/lodash/_compareMultiple.js b/node_modules/lodash/_compareMultiple.js new file mode 100644 index 0000000..ad61f0f --- /dev/null +++ b/node_modules/lodash/_compareMultiple.js @@ -0,0 +1,44 @@ +var compareAscending = require('./_compareAscending'); + +/** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ +function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; +} + +module.exports = compareMultiple; diff --git a/node_modules/lodash/_composeArgs.js b/node_modules/lodash/_composeArgs.js new file mode 100644 index 0000000..1ce40f4 --- /dev/null +++ b/node_modules/lodash/_composeArgs.js @@ -0,0 +1,39 @@ +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ +function composeArgs(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersLength = holders.length, + leftIndex = -1, + leftLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(leftLength + rangeLength), + isUncurried = !isCurried; + + while (++leftIndex < leftLength) { + result[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[holders[argsIndex]] = args[argsIndex]; + } + } + while (rangeLength--) { + result[leftIndex++] = args[argsIndex++]; + } + return result; +} + +module.exports = composeArgs; diff --git a/node_modules/lodash/_composeArgsRight.js b/node_modules/lodash/_composeArgsRight.js new file mode 100644 index 0000000..8dc588d --- /dev/null +++ b/node_modules/lodash/_composeArgsRight.js @@ -0,0 +1,41 @@ +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to append to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ +function composeArgsRight(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersIndex = -1, + holdersLength = holders.length, + rightIndex = -1, + rightLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(rangeLength + rightLength), + isUncurried = !isCurried; + + while (++argsIndex < rangeLength) { + result[argsIndex] = args[argsIndex]; + } + var offset = argsIndex; + while (++rightIndex < rightLength) { + result[offset + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[offset + holders[holdersIndex]] = args[argsIndex++]; + } + } + return result; +} + +module.exports = composeArgsRight; diff --git a/node_modules/lodash/_copyArray.js b/node_modules/lodash/_copyArray.js new file mode 100644 index 0000000..cd94d5d --- /dev/null +++ b/node_modules/lodash/_copyArray.js @@ -0,0 +1,20 @@ +/** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ +function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; +} + +module.exports = copyArray; diff --git a/node_modules/lodash/_copyObject.js b/node_modules/lodash/_copyObject.js new file mode 100644 index 0000000..2f2a5c2 --- /dev/null +++ b/node_modules/lodash/_copyObject.js @@ -0,0 +1,40 @@ +var assignValue = require('./_assignValue'), + baseAssignValue = require('./_baseAssignValue'); + +/** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ +function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; +} + +module.exports = copyObject; diff --git a/node_modules/lodash/_copySymbols.js b/node_modules/lodash/_copySymbols.js new file mode 100644 index 0000000..c35944a --- /dev/null +++ b/node_modules/lodash/_copySymbols.js @@ -0,0 +1,16 @@ +var copyObject = require('./_copyObject'), + getSymbols = require('./_getSymbols'); + +/** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); +} + +module.exports = copySymbols; diff --git a/node_modules/lodash/_copySymbolsIn.js b/node_modules/lodash/_copySymbolsIn.js new file mode 100644 index 0000000..fdf20a7 --- /dev/null +++ b/node_modules/lodash/_copySymbolsIn.js @@ -0,0 +1,16 @@ +var copyObject = require('./_copyObject'), + getSymbolsIn = require('./_getSymbolsIn'); + +/** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); +} + +module.exports = copySymbolsIn; diff --git a/node_modules/lodash/_coreJsData.js b/node_modules/lodash/_coreJsData.js new file mode 100644 index 0000000..f8e5b4e --- /dev/null +++ b/node_modules/lodash/_coreJsData.js @@ -0,0 +1,6 @@ +var root = require('./_root'); + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +module.exports = coreJsData; diff --git a/node_modules/lodash/_countHolders.js b/node_modules/lodash/_countHolders.js new file mode 100644 index 0000000..718fcda --- /dev/null +++ b/node_modules/lodash/_countHolders.js @@ -0,0 +1,21 @@ +/** + * Gets the number of `placeholder` occurrences in `array`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} placeholder The placeholder to search for. + * @returns {number} Returns the placeholder count. + */ +function countHolders(array, placeholder) { + var length = array.length, + result = 0; + + while (length--) { + if (array[length] === placeholder) { + ++result; + } + } + return result; +} + +module.exports = countHolders; diff --git a/node_modules/lodash/_createAggregator.js b/node_modules/lodash/_createAggregator.js new file mode 100644 index 0000000..0be42c4 --- /dev/null +++ b/node_modules/lodash/_createAggregator.js @@ -0,0 +1,23 @@ +var arrayAggregator = require('./_arrayAggregator'), + baseAggregator = require('./_baseAggregator'), + baseIteratee = require('./_baseIteratee'), + isArray = require('./isArray'); + +/** + * Creates a function like `_.groupBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} [initializer] The accumulator object initializer. + * @returns {Function} Returns the new aggregator function. + */ +function createAggregator(setter, initializer) { + return function(collection, iteratee) { + var func = isArray(collection) ? arrayAggregator : baseAggregator, + accumulator = initializer ? initializer() : {}; + + return func(collection, setter, baseIteratee(iteratee, 2), accumulator); + }; +} + +module.exports = createAggregator; diff --git a/node_modules/lodash/_createAssigner.js b/node_modules/lodash/_createAssigner.js new file mode 100644 index 0000000..1f904c5 --- /dev/null +++ b/node_modules/lodash/_createAssigner.js @@ -0,0 +1,37 @@ +var baseRest = require('./_baseRest'), + isIterateeCall = require('./_isIterateeCall'); + +/** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ +function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); +} + +module.exports = createAssigner; diff --git a/node_modules/lodash/_createBaseEach.js b/node_modules/lodash/_createBaseEach.js new file mode 100644 index 0000000..d24fdd1 --- /dev/null +++ b/node_modules/lodash/_createBaseEach.js @@ -0,0 +1,32 @@ +var isArrayLike = require('./isArrayLike'); + +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; +} + +module.exports = createBaseEach; diff --git a/node_modules/lodash/_createBaseFor.js b/node_modules/lodash/_createBaseFor.js new file mode 100644 index 0000000..94cbf29 --- /dev/null +++ b/node_modules/lodash/_createBaseFor.js @@ -0,0 +1,25 @@ +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; +} + +module.exports = createBaseFor; diff --git a/node_modules/lodash/_createBind.js b/node_modules/lodash/_createBind.js new file mode 100644 index 0000000..07cb99f --- /dev/null +++ b/node_modules/lodash/_createBind.js @@ -0,0 +1,28 @@ +var createCtor = require('./_createCtor'), + root = require('./_root'); + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1; + +/** + * Creates a function that wraps `func` to invoke it with the optional `this` + * binding of `thisArg`. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @returns {Function} Returns the new wrapped function. + */ +function createBind(func, bitmask, thisArg) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(isBind ? thisArg : this, arguments); + } + return wrapper; +} + +module.exports = createBind; diff --git a/node_modules/lodash/_createCaseFirst.js b/node_modules/lodash/_createCaseFirst.js new file mode 100644 index 0000000..fe8ea48 --- /dev/null +++ b/node_modules/lodash/_createCaseFirst.js @@ -0,0 +1,33 @@ +var castSlice = require('./_castSlice'), + hasUnicode = require('./_hasUnicode'), + stringToArray = require('./_stringToArray'), + toString = require('./toString'); + +/** + * Creates a function like `_.lowerFirst`. + * + * @private + * @param {string} methodName The name of the `String` case method to use. + * @returns {Function} Returns the new case function. + */ +function createCaseFirst(methodName) { + return function(string) { + string = toString(string); + + var strSymbols = hasUnicode(string) + ? stringToArray(string) + : undefined; + + var chr = strSymbols + ? strSymbols[0] + : string.charAt(0); + + var trailing = strSymbols + ? castSlice(strSymbols, 1).join('') + : string.slice(1); + + return chr[methodName]() + trailing; + }; +} + +module.exports = createCaseFirst; diff --git a/node_modules/lodash/_createCompounder.js b/node_modules/lodash/_createCompounder.js new file mode 100644 index 0000000..8d4cee2 --- /dev/null +++ b/node_modules/lodash/_createCompounder.js @@ -0,0 +1,24 @@ +var arrayReduce = require('./_arrayReduce'), + deburr = require('./deburr'), + words = require('./words'); + +/** Used to compose unicode capture groups. */ +var rsApos = "['\u2019]"; + +/** Used to match apostrophes. */ +var reApos = RegExp(rsApos, 'g'); + +/** + * Creates a function like `_.camelCase`. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ +function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); + }; +} + +module.exports = createCompounder; diff --git a/node_modules/lodash/_createCtor.js b/node_modules/lodash/_createCtor.js new file mode 100644 index 0000000..9047aa5 --- /dev/null +++ b/node_modules/lodash/_createCtor.js @@ -0,0 +1,37 @@ +var baseCreate = require('./_baseCreate'), + isObject = require('./isObject'); + +/** + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * + * @private + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. + */ +function createCtor(Ctor) { + return function() { + // Use a `switch` statement to work with class constructors. See + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // for more details. + var args = arguments; + switch (args.length) { + case 0: return new Ctor; + case 1: return new Ctor(args[0]); + case 2: return new Ctor(args[0], args[1]); + case 3: return new Ctor(args[0], args[1], args[2]); + case 4: return new Ctor(args[0], args[1], args[2], args[3]); + case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); + case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, args); + + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; +} + +module.exports = createCtor; diff --git a/node_modules/lodash/_createCurry.js b/node_modules/lodash/_createCurry.js new file mode 100644 index 0000000..f06c2cd --- /dev/null +++ b/node_modules/lodash/_createCurry.js @@ -0,0 +1,46 @@ +var apply = require('./_apply'), + createCtor = require('./_createCtor'), + createHybrid = require('./_createHybrid'), + createRecurry = require('./_createRecurry'), + getHolder = require('./_getHolder'), + replaceHolders = require('./_replaceHolders'), + root = require('./_root'); + +/** + * Creates a function that wraps `func` to enable currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {number} arity The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ +function createCurry(func, bitmask, arity) { + var Ctor = createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length, + placeholder = getHolder(wrapper); + + while (index--) { + args[index] = arguments[index]; + } + var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) + ? [] + : replaceHolders(args, placeholder); + + length -= holders.length; + if (length < arity) { + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, undefined, + args, holders, undefined, undefined, arity - length); + } + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return apply(fn, this, args); + } + return wrapper; +} + +module.exports = createCurry; diff --git a/node_modules/lodash/_createFind.js b/node_modules/lodash/_createFind.js new file mode 100644 index 0000000..8859ff8 --- /dev/null +++ b/node_modules/lodash/_createFind.js @@ -0,0 +1,25 @@ +var baseIteratee = require('./_baseIteratee'), + isArrayLike = require('./isArrayLike'), + keys = require('./keys'); + +/** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. + */ +function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike(collection)) { + var iteratee = baseIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; +} + +module.exports = createFind; diff --git a/node_modules/lodash/_createFlow.js b/node_modules/lodash/_createFlow.js new file mode 100644 index 0000000..baaddbf --- /dev/null +++ b/node_modules/lodash/_createFlow.js @@ -0,0 +1,78 @@ +var LodashWrapper = require('./_LodashWrapper'), + flatRest = require('./_flatRest'), + getData = require('./_getData'), + getFuncName = require('./_getFuncName'), + isArray = require('./isArray'), + isLaziable = require('./_isLaziable'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_CURRY_FLAG = 8, + WRAP_PARTIAL_FLAG = 32, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256; + +/** + * Creates a `_.flow` or `_.flowRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new flow function. + */ +function createFlow(fromRight) { + return flatRest(function(funcs) { + var length = funcs.length, + index = length, + prereq = LodashWrapper.prototype.thru; + + if (fromRight) { + funcs.reverse(); + } + while (index--) { + var func = funcs[index]; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (prereq && !wrapper && getFuncName(func) == 'wrapper') { + var wrapper = new LodashWrapper([], true); + } + } + index = wrapper ? index : length; + while (++index < length) { + func = funcs[index]; + + var funcName = getFuncName(func), + data = funcName == 'wrapper' ? getData(func) : undefined; + + if (data && isLaziable(data[0]) && + data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && + !data[4].length && data[9] == 1 + ) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = (func.length == 1 && isLaziable(func)) + ? wrapper[funcName]() + : wrapper.thru(func); + } + } + return function() { + var args = arguments, + value = args[0]; + + if (wrapper && args.length == 1 && isArray(value)) { + return wrapper.plant(value).value(); + } + var index = 0, + result = length ? funcs[index].apply(this, args) : value; + + while (++index < length) { + result = funcs[index].call(this, result); + } + return result; + }; + }); +} + +module.exports = createFlow; diff --git a/node_modules/lodash/_createHybrid.js b/node_modules/lodash/_createHybrid.js new file mode 100644 index 0000000..b671bd1 --- /dev/null +++ b/node_modules/lodash/_createHybrid.js @@ -0,0 +1,92 @@ +var composeArgs = require('./_composeArgs'), + composeArgsRight = require('./_composeArgsRight'), + countHolders = require('./_countHolders'), + createCtor = require('./_createCtor'), + createRecurry = require('./_createRecurry'), + getHolder = require('./_getHolder'), + reorder = require('./_reorder'), + replaceHolders = require('./_replaceHolders'), + root = require('./_root'); + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_ARY_FLAG = 128, + WRAP_FLIP_FLAG = 512; + +/** + * Creates a function that wraps `func` to invoke it with optional `this` + * binding of `thisArg`, partial application, and currying. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [partialsRight] The arguments to append to those provided + * to the new function. + * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ +function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { + var isAry = bitmask & WRAP_ARY_FLAG, + isBind = bitmask & WRAP_BIND_FLAG, + isBindKey = bitmask & WRAP_BIND_KEY_FLAG, + isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), + isFlip = bitmask & WRAP_FLIP_FLAG, + Ctor = isBindKey ? undefined : createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length; + + while (index--) { + args[index] = arguments[index]; + } + if (isCurried) { + var placeholder = getHolder(wrapper), + holdersCount = countHolders(args, placeholder); + } + if (partials) { + args = composeArgs(args, partials, holders, isCurried); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight, isCurried); + } + length -= holdersCount; + if (isCurried && length < arity) { + var newHolders = replaceHolders(args, placeholder); + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, thisArg, + args, newHolders, argPos, ary, arity - length + ); + } + var thisBinding = isBind ? thisArg : this, + fn = isBindKey ? thisBinding[func] : func; + + length = args.length; + if (argPos) { + args = reorder(args, argPos); + } else if (isFlip && length > 1) { + args.reverse(); + } + if (isAry && ary < length) { + args.length = ary; + } + if (this && this !== root && this instanceof wrapper) { + fn = Ctor || createCtor(fn); + } + return fn.apply(thisBinding, args); + } + return wrapper; +} + +module.exports = createHybrid; diff --git a/node_modules/lodash/_createInverter.js b/node_modules/lodash/_createInverter.js new file mode 100644 index 0000000..6c0c562 --- /dev/null +++ b/node_modules/lodash/_createInverter.js @@ -0,0 +1,17 @@ +var baseInverter = require('./_baseInverter'); + +/** + * Creates a function like `_.invertBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} toIteratee The function to resolve iteratees. + * @returns {Function} Returns the new inverter function. + */ +function createInverter(setter, toIteratee) { + return function(object, iteratee) { + return baseInverter(object, setter, toIteratee(iteratee), {}); + }; +} + +module.exports = createInverter; diff --git a/node_modules/lodash/_createMathOperation.js b/node_modules/lodash/_createMathOperation.js new file mode 100644 index 0000000..f1e238a --- /dev/null +++ b/node_modules/lodash/_createMathOperation.js @@ -0,0 +1,38 @@ +var baseToNumber = require('./_baseToNumber'), + baseToString = require('./_baseToString'); + +/** + * Creates a function that performs a mathematical operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @param {number} [defaultValue] The value used for `undefined` arguments. + * @returns {Function} Returns the new mathematical operation function. + */ +function createMathOperation(operator, defaultValue) { + return function(value, other) { + var result; + if (value === undefined && other === undefined) { + return defaultValue; + } + if (value !== undefined) { + result = value; + } + if (other !== undefined) { + if (result === undefined) { + return other; + } + if (typeof value == 'string' || typeof other == 'string') { + value = baseToString(value); + other = baseToString(other); + } else { + value = baseToNumber(value); + other = baseToNumber(other); + } + result = operator(value, other); + } + return result; + }; +} + +module.exports = createMathOperation; diff --git a/node_modules/lodash/_createOver.js b/node_modules/lodash/_createOver.js new file mode 100644 index 0000000..3b94551 --- /dev/null +++ b/node_modules/lodash/_createOver.js @@ -0,0 +1,27 @@ +var apply = require('./_apply'), + arrayMap = require('./_arrayMap'), + baseIteratee = require('./_baseIteratee'), + baseRest = require('./_baseRest'), + baseUnary = require('./_baseUnary'), + flatRest = require('./_flatRest'); + +/** + * Creates a function like `_.over`. + * + * @private + * @param {Function} arrayFunc The function to iterate over iteratees. + * @returns {Function} Returns the new over function. + */ +function createOver(arrayFunc) { + return flatRest(function(iteratees) { + iteratees = arrayMap(iteratees, baseUnary(baseIteratee)); + return baseRest(function(args) { + var thisArg = this; + return arrayFunc(iteratees, function(iteratee) { + return apply(iteratee, thisArg, args); + }); + }); + }); +} + +module.exports = createOver; diff --git a/node_modules/lodash/_createPadding.js b/node_modules/lodash/_createPadding.js new file mode 100644 index 0000000..2124612 --- /dev/null +++ b/node_modules/lodash/_createPadding.js @@ -0,0 +1,33 @@ +var baseRepeat = require('./_baseRepeat'), + baseToString = require('./_baseToString'), + castSlice = require('./_castSlice'), + hasUnicode = require('./_hasUnicode'), + stringSize = require('./_stringSize'), + stringToArray = require('./_stringToArray'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeCeil = Math.ceil; + +/** + * Creates the padding for `string` based on `length`. The `chars` string + * is truncated if the number of characters exceeds `length`. + * + * @private + * @param {number} length The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padding for `string`. + */ +function createPadding(length, chars) { + chars = chars === undefined ? ' ' : baseToString(chars); + + var charsLength = chars.length; + if (charsLength < 2) { + return charsLength ? baseRepeat(chars, length) : chars; + } + var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); + return hasUnicode(chars) + ? castSlice(stringToArray(result), 0, length).join('') + : result.slice(0, length); +} + +module.exports = createPadding; diff --git a/node_modules/lodash/_createPartial.js b/node_modules/lodash/_createPartial.js new file mode 100644 index 0000000..e16c248 --- /dev/null +++ b/node_modules/lodash/_createPartial.js @@ -0,0 +1,43 @@ +var apply = require('./_apply'), + createCtor = require('./_createCtor'), + root = require('./_root'); + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1; + +/** + * Creates a function that wraps `func` to invoke it with the `this` binding + * of `thisArg` and `partials` prepended to the arguments it receives. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to + * the new function. + * @returns {Function} Returns the new wrapped function. + */ +function createPartial(func, bitmask, thisArg, partials) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(leftLength + argsLength), + fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + return apply(fn, isBind ? thisArg : this, args); + } + return wrapper; +} + +module.exports = createPartial; diff --git a/node_modules/lodash/_createRange.js b/node_modules/lodash/_createRange.js new file mode 100644 index 0000000..9f52c77 --- /dev/null +++ b/node_modules/lodash/_createRange.js @@ -0,0 +1,30 @@ +var baseRange = require('./_baseRange'), + isIterateeCall = require('./_isIterateeCall'), + toFinite = require('./toFinite'); + +/** + * Creates a `_.range` or `_.rangeRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ +function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { + end = step = undefined; + } + // Ensure the sign of `-0` is preserved. + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); + return baseRange(start, end, step, fromRight); + }; +} + +module.exports = createRange; diff --git a/node_modules/lodash/_createRecurry.js b/node_modules/lodash/_createRecurry.js new file mode 100644 index 0000000..eb29fb2 --- /dev/null +++ b/node_modules/lodash/_createRecurry.js @@ -0,0 +1,56 @@ +var isLaziable = require('./_isLaziable'), + setData = require('./_setData'), + setWrapToString = require('./_setWrapToString'); + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_BOUND_FLAG = 4, + WRAP_CURRY_FLAG = 8, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64; + +/** + * Creates a function that wraps `func` to continue currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {Function} wrapFunc The function to create the `func` wrapper. + * @param {*} placeholder The placeholder value. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ +function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { + var isCurry = bitmask & WRAP_CURRY_FLAG, + newHolders = isCurry ? holders : undefined, + newHoldersRight = isCurry ? undefined : holders, + newPartials = isCurry ? partials : undefined, + newPartialsRight = isCurry ? undefined : partials; + + bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); + bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); + + if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { + bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); + } + var newData = [ + func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, + newHoldersRight, argPos, ary, arity + ]; + + var result = wrapFunc.apply(undefined, newData); + if (isLaziable(func)) { + setData(result, newData); + } + result.placeholder = placeholder; + return setWrapToString(result, func, bitmask); +} + +module.exports = createRecurry; diff --git a/node_modules/lodash/_createRelationalOperation.js b/node_modules/lodash/_createRelationalOperation.js new file mode 100644 index 0000000..a17c6b5 --- /dev/null +++ b/node_modules/lodash/_createRelationalOperation.js @@ -0,0 +1,20 @@ +var toNumber = require('./toNumber'); + +/** + * Creates a function that performs a relational operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @returns {Function} Returns the new relational operation function. + */ +function createRelationalOperation(operator) { + return function(value, other) { + if (!(typeof value == 'string' && typeof other == 'string')) { + value = toNumber(value); + other = toNumber(other); + } + return operator(value, other); + }; +} + +module.exports = createRelationalOperation; diff --git a/node_modules/lodash/_createRound.js b/node_modules/lodash/_createRound.js new file mode 100644 index 0000000..88be5df --- /dev/null +++ b/node_modules/lodash/_createRound.js @@ -0,0 +1,35 @@ +var root = require('./_root'), + toInteger = require('./toInteger'), + toNumber = require('./toNumber'), + toString = require('./toString'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsFinite = root.isFinite, + nativeMin = Math.min; + +/** + * Creates a function like `_.round`. + * + * @private + * @param {string} methodName The name of the `Math` method to use when rounding. + * @returns {Function} Returns the new round function. + */ +function createRound(methodName) { + var func = Math[methodName]; + return function(number, precision) { + number = toNumber(number); + precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); + if (precision && nativeIsFinite(number)) { + // Shift with exponential notation to avoid floating-point issues. + // See [MDN](https://mdn.io/round#Examples) for more details. + var pair = (toString(number) + 'e').split('e'), + value = func(pair[0] + 'e' + (+pair[1] + precision)); + + pair = (toString(value) + 'e').split('e'); + return +(pair[0] + 'e' + (+pair[1] - precision)); + } + return func(number); + }; +} + +module.exports = createRound; diff --git a/node_modules/lodash/_createSet.js b/node_modules/lodash/_createSet.js new file mode 100644 index 0000000..0f644ee --- /dev/null +++ b/node_modules/lodash/_createSet.js @@ -0,0 +1,19 @@ +var Set = require('./_Set'), + noop = require('./noop'), + setToArray = require('./_setToArray'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ +var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); +}; + +module.exports = createSet; diff --git a/node_modules/lodash/_createToPairs.js b/node_modules/lodash/_createToPairs.js new file mode 100644 index 0000000..568417a --- /dev/null +++ b/node_modules/lodash/_createToPairs.js @@ -0,0 +1,30 @@ +var baseToPairs = require('./_baseToPairs'), + getTag = require('./_getTag'), + mapToArray = require('./_mapToArray'), + setToPairs = require('./_setToPairs'); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + setTag = '[object Set]'; + +/** + * Creates a `_.toPairs` or `_.toPairsIn` function. + * + * @private + * @param {Function} keysFunc The function to get the keys of a given object. + * @returns {Function} Returns the new pairs function. + */ +function createToPairs(keysFunc) { + return function(object) { + var tag = getTag(object); + if (tag == mapTag) { + return mapToArray(object); + } + if (tag == setTag) { + return setToPairs(object); + } + return baseToPairs(object, keysFunc(object)); + }; +} + +module.exports = createToPairs; diff --git a/node_modules/lodash/_createWrap.js b/node_modules/lodash/_createWrap.js new file mode 100644 index 0000000..33f0633 --- /dev/null +++ b/node_modules/lodash/_createWrap.js @@ -0,0 +1,106 @@ +var baseSetData = require('./_baseSetData'), + createBind = require('./_createBind'), + createCurry = require('./_createCurry'), + createHybrid = require('./_createHybrid'), + createPartial = require('./_createPartial'), + getData = require('./_getData'), + mergeData = require('./_mergeData'), + setData = require('./_setData'), + setWrapToString = require('./_setWrapToString'), + toInteger = require('./toInteger'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Creates a function that either curries or invokes `func` with optional + * `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` or `_.curryRight` of a bound function + * 8 - `_.curry` + * 16 - `_.curryRight` + * 32 - `_.partial` + * 64 - `_.partialRight` + * 128 - `_.rearg` + * 256 - `_.ary` + * 512 - `_.flip` + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to be partially applied. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ +function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { + var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; + if (!isBindKey && typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); + partials = holders = undefined; + } + ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); + arity = arity === undefined ? arity : toInteger(arity); + length -= holders ? holders.length : 0; + + if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, + holdersRight = holders; + + partials = holders = undefined; + } + var data = isBindKey ? undefined : getData(func); + + var newData = [ + func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, + argPos, ary, arity + ]; + + if (data) { + mergeData(newData, data); + } + func = newData[0]; + bitmask = newData[1]; + thisArg = newData[2]; + partials = newData[3]; + holders = newData[4]; + arity = newData[9] = newData[9] === undefined + ? (isBindKey ? 0 : func.length) + : nativeMax(newData[9] - length, 0); + + if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { + bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); + } + if (!bitmask || bitmask == WRAP_BIND_FLAG) { + var result = createBind(func, bitmask, thisArg); + } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { + result = createCurry(func, bitmask, arity); + } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { + result = createPartial(func, bitmask, thisArg, partials); + } else { + result = createHybrid.apply(undefined, newData); + } + var setter = data ? baseSetData : setData; + return setWrapToString(setter(result, newData), func, bitmask); +} + +module.exports = createWrap; diff --git a/node_modules/lodash/_customDefaultsAssignIn.js b/node_modules/lodash/_customDefaultsAssignIn.js new file mode 100644 index 0000000..1f49e6f --- /dev/null +++ b/node_modules/lodash/_customDefaultsAssignIn.js @@ -0,0 +1,29 @@ +var eq = require('./eq'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used by `_.defaults` to customize its `_.assignIn` use to assign properties + * of source objects to the destination object for all destination properties + * that resolve to `undefined`. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to assign. + * @param {Object} object The parent object of `objValue`. + * @returns {*} Returns the value to assign. + */ +function customDefaultsAssignIn(objValue, srcValue, key, object) { + if (objValue === undefined || + (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { + return srcValue; + } + return objValue; +} + +module.exports = customDefaultsAssignIn; diff --git a/node_modules/lodash/_customDefaultsMerge.js b/node_modules/lodash/_customDefaultsMerge.js new file mode 100644 index 0000000..4cab317 --- /dev/null +++ b/node_modules/lodash/_customDefaultsMerge.js @@ -0,0 +1,28 @@ +var baseMerge = require('./_baseMerge'), + isObject = require('./isObject'); + +/** + * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source + * objects into destination objects that are passed thru. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to merge. + * @param {Object} object The parent object of `objValue`. + * @param {Object} source The parent object of `srcValue`. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + * @returns {*} Returns the value to assign. + */ +function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { + if (isObject(objValue) && isObject(srcValue)) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, objValue); + baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); + stack['delete'](srcValue); + } + return objValue; +} + +module.exports = customDefaultsMerge; diff --git a/node_modules/lodash/_customOmitClone.js b/node_modules/lodash/_customOmitClone.js new file mode 100644 index 0000000..968db2e --- /dev/null +++ b/node_modules/lodash/_customOmitClone.js @@ -0,0 +1,16 @@ +var isPlainObject = require('./isPlainObject'); + +/** + * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain + * objects. + * + * @private + * @param {*} value The value to inspect. + * @param {string} key The key of the property to inspect. + * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. + */ +function customOmitClone(value) { + return isPlainObject(value) ? undefined : value; +} + +module.exports = customOmitClone; diff --git a/node_modules/lodash/_deburrLetter.js b/node_modules/lodash/_deburrLetter.js new file mode 100644 index 0000000..3e531ed --- /dev/null +++ b/node_modules/lodash/_deburrLetter.js @@ -0,0 +1,71 @@ +var basePropertyOf = require('./_basePropertyOf'); + +/** Used to map Latin Unicode letters to basic Latin letters. */ +var deburredLetters = { + // Latin-1 Supplement block. + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss', + // Latin Extended-A block. + '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', + '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', + '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', + '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', + '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', + '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', + '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', + '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', + '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', + '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', + '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', + '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', + '\u0134': 'J', '\u0135': 'j', + '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', + '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', + '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', + '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', + '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', + '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', + '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', + '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', + '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', + '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', + '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', + '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', + '\u0163': 't', '\u0165': 't', '\u0167': 't', + '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', + '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', + '\u0174': 'W', '\u0175': 'w', + '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', + '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', + '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', + '\u0132': 'IJ', '\u0133': 'ij', + '\u0152': 'Oe', '\u0153': 'oe', + '\u0149': "'n", '\u017f': 's' +}; + +/** + * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A + * letters to basic Latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ +var deburrLetter = basePropertyOf(deburredLetters); + +module.exports = deburrLetter; diff --git a/node_modules/lodash/_defineProperty.js b/node_modules/lodash/_defineProperty.js new file mode 100644 index 0000000..b6116d9 --- /dev/null +++ b/node_modules/lodash/_defineProperty.js @@ -0,0 +1,11 @@ +var getNative = require('./_getNative'); + +var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} +}()); + +module.exports = defineProperty; diff --git a/node_modules/lodash/_equalArrays.js b/node_modules/lodash/_equalArrays.js new file mode 100644 index 0000000..824228c --- /dev/null +++ b/node_modules/lodash/_equalArrays.js @@ -0,0 +1,84 @@ +var SetCache = require('./_SetCache'), + arraySome = require('./_arraySome'), + cacheHas = require('./_cacheHas'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} + +module.exports = equalArrays; diff --git a/node_modules/lodash/_equalByTag.js b/node_modules/lodash/_equalByTag.js new file mode 100644 index 0000000..71919e8 --- /dev/null +++ b/node_modules/lodash/_equalByTag.js @@ -0,0 +1,112 @@ +var Symbol = require('./_Symbol'), + Uint8Array = require('./_Uint8Array'), + eq = require('./eq'), + equalArrays = require('./_equalArrays'), + mapToArray = require('./_mapToArray'), + setToArray = require('./_setToArray'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} + +module.exports = equalByTag; diff --git a/node_modules/lodash/_equalObjects.js b/node_modules/lodash/_equalObjects.js new file mode 100644 index 0000000..cdaacd2 --- /dev/null +++ b/node_modules/lodash/_equalObjects.js @@ -0,0 +1,90 @@ +var getAllKeys = require('./_getAllKeys'); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} + +module.exports = equalObjects; diff --git a/node_modules/lodash/_escapeHtmlChar.js b/node_modules/lodash/_escapeHtmlChar.js new file mode 100644 index 0000000..7ca68ee --- /dev/null +++ b/node_modules/lodash/_escapeHtmlChar.js @@ -0,0 +1,21 @@ +var basePropertyOf = require('./_basePropertyOf'); + +/** Used to map characters to HTML entities. */ +var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' +}; + +/** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ +var escapeHtmlChar = basePropertyOf(htmlEscapes); + +module.exports = escapeHtmlChar; diff --git a/node_modules/lodash/_escapeStringChar.js b/node_modules/lodash/_escapeStringChar.js new file mode 100644 index 0000000..44eca96 --- /dev/null +++ b/node_modules/lodash/_escapeStringChar.js @@ -0,0 +1,22 @@ +/** Used to escape characters for inclusion in compiled string literals. */ +var stringEscapes = { + '\\': '\\', + "'": "'", + '\n': 'n', + '\r': 'r', + '\u2028': 'u2028', + '\u2029': 'u2029' +}; + +/** + * Used by `_.template` to escape characters for inclusion in compiled string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ +function escapeStringChar(chr) { + return '\\' + stringEscapes[chr]; +} + +module.exports = escapeStringChar; diff --git a/node_modules/lodash/_flatRest.js b/node_modules/lodash/_flatRest.js new file mode 100644 index 0000000..94ab6cc --- /dev/null +++ b/node_modules/lodash/_flatRest.js @@ -0,0 +1,16 @@ +var flatten = require('./flatten'), + overRest = require('./_overRest'), + setToString = require('./_setToString'); + +/** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ +function flatRest(func) { + return setToString(overRest(func, undefined, flatten), func + ''); +} + +module.exports = flatRest; diff --git a/node_modules/lodash/_freeGlobal.js b/node_modules/lodash/_freeGlobal.js new file mode 100644 index 0000000..bbec998 --- /dev/null +++ b/node_modules/lodash/_freeGlobal.js @@ -0,0 +1,4 @@ +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +module.exports = freeGlobal; diff --git a/node_modules/lodash/_getAllKeys.js b/node_modules/lodash/_getAllKeys.js new file mode 100644 index 0000000..a9ce699 --- /dev/null +++ b/node_modules/lodash/_getAllKeys.js @@ -0,0 +1,16 @@ +var baseGetAllKeys = require('./_baseGetAllKeys'), + getSymbols = require('./_getSymbols'), + keys = require('./keys'); + +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); +} + +module.exports = getAllKeys; diff --git a/node_modules/lodash/_getAllKeysIn.js b/node_modules/lodash/_getAllKeysIn.js new file mode 100644 index 0000000..1b46678 --- /dev/null +++ b/node_modules/lodash/_getAllKeysIn.js @@ -0,0 +1,17 @@ +var baseGetAllKeys = require('./_baseGetAllKeys'), + getSymbolsIn = require('./_getSymbolsIn'), + keysIn = require('./keysIn'); + +/** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); +} + +module.exports = getAllKeysIn; diff --git a/node_modules/lodash/_getData.js b/node_modules/lodash/_getData.js new file mode 100644 index 0000000..a1fe7b7 --- /dev/null +++ b/node_modules/lodash/_getData.js @@ -0,0 +1,15 @@ +var metaMap = require('./_metaMap'), + noop = require('./noop'); + +/** + * Gets metadata for `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {*} Returns the metadata for `func`. + */ +var getData = !metaMap ? noop : function(func) { + return metaMap.get(func); +}; + +module.exports = getData; diff --git a/node_modules/lodash/_getFuncName.js b/node_modules/lodash/_getFuncName.js new file mode 100644 index 0000000..21e15b3 --- /dev/null +++ b/node_modules/lodash/_getFuncName.js @@ -0,0 +1,31 @@ +var realNames = require('./_realNames'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Gets the name of `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {string} Returns the function name. + */ +function getFuncName(func) { + var result = (func.name + ''), + array = realNames[result], + length = hasOwnProperty.call(realNames, result) ? array.length : 0; + + while (length--) { + var data = array[length], + otherFunc = data.func; + if (otherFunc == null || otherFunc == func) { + return data.name; + } + } + return result; +} + +module.exports = getFuncName; diff --git a/node_modules/lodash/_getHolder.js b/node_modules/lodash/_getHolder.js new file mode 100644 index 0000000..65e94b5 --- /dev/null +++ b/node_modules/lodash/_getHolder.js @@ -0,0 +1,13 @@ +/** + * Gets the argument placeholder value for `func`. + * + * @private + * @param {Function} func The function to inspect. + * @returns {*} Returns the placeholder value. + */ +function getHolder(func) { + var object = func; + return object.placeholder; +} + +module.exports = getHolder; diff --git a/node_modules/lodash/_getMapData.js b/node_modules/lodash/_getMapData.js new file mode 100644 index 0000000..17f6303 --- /dev/null +++ b/node_modules/lodash/_getMapData.js @@ -0,0 +1,18 @@ +var isKeyable = require('./_isKeyable'); + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +module.exports = getMapData; diff --git a/node_modules/lodash/_getMatchData.js b/node_modules/lodash/_getMatchData.js new file mode 100644 index 0000000..2cc70f9 --- /dev/null +++ b/node_modules/lodash/_getMatchData.js @@ -0,0 +1,24 @@ +var isStrictComparable = require('./_isStrictComparable'), + keys = require('./keys'); + +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} + +module.exports = getMatchData; diff --git a/node_modules/lodash/_getNative.js b/node_modules/lodash/_getNative.js new file mode 100644 index 0000000..97a622b --- /dev/null +++ b/node_modules/lodash/_getNative.js @@ -0,0 +1,17 @@ +var baseIsNative = require('./_baseIsNative'), + getValue = require('./_getValue'); + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +module.exports = getNative; diff --git a/node_modules/lodash/_getPrototype.js b/node_modules/lodash/_getPrototype.js new file mode 100644 index 0000000..e808612 --- /dev/null +++ b/node_modules/lodash/_getPrototype.js @@ -0,0 +1,6 @@ +var overArg = require('./_overArg'); + +/** Built-in value references. */ +var getPrototype = overArg(Object.getPrototypeOf, Object); + +module.exports = getPrototype; diff --git a/node_modules/lodash/_getRawTag.js b/node_modules/lodash/_getRawTag.js new file mode 100644 index 0000000..49a95c9 --- /dev/null +++ b/node_modules/lodash/_getRawTag.js @@ -0,0 +1,46 @@ +var Symbol = require('./_Symbol'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; +} + +module.exports = getRawTag; diff --git a/node_modules/lodash/_getSymbols.js b/node_modules/lodash/_getSymbols.js new file mode 100644 index 0000000..7d6eafe --- /dev/null +++ b/node_modules/lodash/_getSymbols.js @@ -0,0 +1,30 @@ +var arrayFilter = require('./_arrayFilter'), + stubArray = require('./stubArray'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); +}; + +module.exports = getSymbols; diff --git a/node_modules/lodash/_getSymbolsIn.js b/node_modules/lodash/_getSymbolsIn.js new file mode 100644 index 0000000..cec0855 --- /dev/null +++ b/node_modules/lodash/_getSymbolsIn.js @@ -0,0 +1,25 @@ +var arrayPush = require('./_arrayPush'), + getPrototype = require('./_getPrototype'), + getSymbols = require('./_getSymbols'), + stubArray = require('./stubArray'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; +}; + +module.exports = getSymbolsIn; diff --git a/node_modules/lodash/_getTag.js b/node_modules/lodash/_getTag.js new file mode 100644 index 0000000..deaf89d --- /dev/null +++ b/node_modules/lodash/_getTag.js @@ -0,0 +1,58 @@ +var DataView = require('./_DataView'), + Map = require('./_Map'), + Promise = require('./_Promise'), + Set = require('./_Set'), + WeakMap = require('./_WeakMap'), + baseGetTag = require('./_baseGetTag'), + toSource = require('./_toSource'); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + setTag = '[object Set]', + weakMapTag = '[object WeakMap]'; + +var dataViewTag = '[object DataView]'; + +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; + +// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; +} + +module.exports = getTag; diff --git a/node_modules/lodash/_getValue.js b/node_modules/lodash/_getValue.js new file mode 100644 index 0000000..5f7d773 --- /dev/null +++ b/node_modules/lodash/_getValue.js @@ -0,0 +1,13 @@ +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +module.exports = getValue; diff --git a/node_modules/lodash/_getView.js b/node_modules/lodash/_getView.js new file mode 100644 index 0000000..df1e5d4 --- /dev/null +++ b/node_modules/lodash/_getView.js @@ -0,0 +1,33 @@ +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * Gets the view, applying any `transforms` to the `start` and `end` positions. + * + * @private + * @param {number} start The start of the view. + * @param {number} end The end of the view. + * @param {Array} transforms The transformations to apply to the view. + * @returns {Object} Returns an object containing the `start` and `end` + * positions of the view. + */ +function getView(start, end, transforms) { + var index = -1, + length = transforms.length; + + while (++index < length) { + var data = transforms[index], + size = data.size; + + switch (data.type) { + case 'drop': start += size; break; + case 'dropRight': end -= size; break; + case 'take': end = nativeMin(end, start + size); break; + case 'takeRight': start = nativeMax(start, end - size); break; + } + } + return { 'start': start, 'end': end }; +} + +module.exports = getView; diff --git a/node_modules/lodash/_getWrapDetails.js b/node_modules/lodash/_getWrapDetails.js new file mode 100644 index 0000000..3bcc6e4 --- /dev/null +++ b/node_modules/lodash/_getWrapDetails.js @@ -0,0 +1,17 @@ +/** Used to match wrap detail comments. */ +var reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, + reSplitDetails = /,? & /; + +/** + * Extracts wrapper details from the `source` body comment. + * + * @private + * @param {string} source The source to inspect. + * @returns {Array} Returns the wrapper details. + */ +function getWrapDetails(source) { + var match = source.match(reWrapDetails); + return match ? match[1].split(reSplitDetails) : []; +} + +module.exports = getWrapDetails; diff --git a/node_modules/lodash/_hasPath.js b/node_modules/lodash/_hasPath.js new file mode 100644 index 0000000..93dbde1 --- /dev/null +++ b/node_modules/lodash/_hasPath.js @@ -0,0 +1,39 @@ +var castPath = require('./_castPath'), + isArguments = require('./isArguments'), + isArray = require('./isArray'), + isIndex = require('./_isIndex'), + isLength = require('./isLength'), + toKey = require('./_toKey'); + +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); +} + +module.exports = hasPath; diff --git a/node_modules/lodash/_hasUnicode.js b/node_modules/lodash/_hasUnicode.js new file mode 100644 index 0000000..cb6ca15 --- /dev/null +++ b/node_modules/lodash/_hasUnicode.js @@ -0,0 +1,26 @@ +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + +/** Used to compose unicode capture groups. */ +var rsZWJ = '\\u200d'; + +/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ +var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + +/** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ +function hasUnicode(string) { + return reHasUnicode.test(string); +} + +module.exports = hasUnicode; diff --git a/node_modules/lodash/_hasUnicodeWord.js b/node_modules/lodash/_hasUnicodeWord.js new file mode 100644 index 0000000..95d52c4 --- /dev/null +++ b/node_modules/lodash/_hasUnicodeWord.js @@ -0,0 +1,15 @@ +/** Used to detect strings that need a more robust regexp to match words. */ +var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + +/** + * Checks if `string` contains a word composed of Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a word is found, else `false`. + */ +function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); +} + +module.exports = hasUnicodeWord; diff --git a/node_modules/lodash/_hashClear.js b/node_modules/lodash/_hashClear.js new file mode 100644 index 0000000..5d4b70c --- /dev/null +++ b/node_modules/lodash/_hashClear.js @@ -0,0 +1,15 @@ +var nativeCreate = require('./_nativeCreate'); + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; +} + +module.exports = hashClear; diff --git a/node_modules/lodash/_hashDelete.js b/node_modules/lodash/_hashDelete.js new file mode 100644 index 0000000..ea9dabf --- /dev/null +++ b/node_modules/lodash/_hashDelete.js @@ -0,0 +1,17 @@ +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} + +module.exports = hashDelete; diff --git a/node_modules/lodash/_hashGet.js b/node_modules/lodash/_hashGet.js new file mode 100644 index 0000000..1fc2f34 --- /dev/null +++ b/node_modules/lodash/_hashGet.js @@ -0,0 +1,30 @@ +var nativeCreate = require('./_nativeCreate'); + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +module.exports = hashGet; diff --git a/node_modules/lodash/_hashHas.js b/node_modules/lodash/_hashHas.js new file mode 100644 index 0000000..281a551 --- /dev/null +++ b/node_modules/lodash/_hashHas.js @@ -0,0 +1,23 @@ +var nativeCreate = require('./_nativeCreate'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); +} + +module.exports = hashHas; diff --git a/node_modules/lodash/_hashSet.js b/node_modules/lodash/_hashSet.js new file mode 100644 index 0000000..e105528 --- /dev/null +++ b/node_modules/lodash/_hashSet.js @@ -0,0 +1,23 @@ +var nativeCreate = require('./_nativeCreate'); + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +module.exports = hashSet; diff --git a/node_modules/lodash/_initCloneArray.js b/node_modules/lodash/_initCloneArray.js new file mode 100644 index 0000000..078c15a --- /dev/null +++ b/node_modules/lodash/_initCloneArray.js @@ -0,0 +1,26 @@ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ +function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; +} + +module.exports = initCloneArray; diff --git a/node_modules/lodash/_initCloneByTag.js b/node_modules/lodash/_initCloneByTag.js new file mode 100644 index 0000000..f69a008 --- /dev/null +++ b/node_modules/lodash/_initCloneByTag.js @@ -0,0 +1,77 @@ +var cloneArrayBuffer = require('./_cloneArrayBuffer'), + cloneDataView = require('./_cloneDataView'), + cloneRegExp = require('./_cloneRegExp'), + cloneSymbol = require('./_cloneSymbol'), + cloneTypedArray = require('./_cloneTypedArray'); + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); + } +} + +module.exports = initCloneByTag; diff --git a/node_modules/lodash/_initCloneObject.js b/node_modules/lodash/_initCloneObject.js new file mode 100644 index 0000000..5a13e64 --- /dev/null +++ b/node_modules/lodash/_initCloneObject.js @@ -0,0 +1,18 @@ +var baseCreate = require('./_baseCreate'), + getPrototype = require('./_getPrototype'), + isPrototype = require('./_isPrototype'); + +/** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; +} + +module.exports = initCloneObject; diff --git a/node_modules/lodash/_insertWrapDetails.js b/node_modules/lodash/_insertWrapDetails.js new file mode 100644 index 0000000..e790808 --- /dev/null +++ b/node_modules/lodash/_insertWrapDetails.js @@ -0,0 +1,23 @@ +/** Used to match wrap detail comments. */ +var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/; + +/** + * Inserts wrapper `details` in a comment at the top of the `source` body. + * + * @private + * @param {string} source The source to modify. + * @returns {Array} details The details to insert. + * @returns {string} Returns the modified source. + */ +function insertWrapDetails(source, details) { + var length = details.length; + if (!length) { + return source; + } + var lastIndex = length - 1; + details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; + details = details.join(length > 2 ? ', ' : ' '); + return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); +} + +module.exports = insertWrapDetails; diff --git a/node_modules/lodash/_isFlattenable.js b/node_modules/lodash/_isFlattenable.js new file mode 100644 index 0000000..4cc2c24 --- /dev/null +++ b/node_modules/lodash/_isFlattenable.js @@ -0,0 +1,20 @@ +var Symbol = require('./_Symbol'), + isArguments = require('./isArguments'), + isArray = require('./isArray'); + +/** Built-in value references. */ +var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; + +/** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ +function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); +} + +module.exports = isFlattenable; diff --git a/node_modules/lodash/_isIndex.js b/node_modules/lodash/_isIndex.js new file mode 100644 index 0000000..061cd39 --- /dev/null +++ b/node_modules/lodash/_isIndex.js @@ -0,0 +1,25 @@ +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); +} + +module.exports = isIndex; diff --git a/node_modules/lodash/_isIterateeCall.js b/node_modules/lodash/_isIterateeCall.js new file mode 100644 index 0000000..a0bb5a9 --- /dev/null +++ b/node_modules/lodash/_isIterateeCall.js @@ -0,0 +1,30 @@ +var eq = require('./eq'), + isArrayLike = require('./isArrayLike'), + isIndex = require('./_isIndex'), + isObject = require('./isObject'); + +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} + +module.exports = isIterateeCall; diff --git a/node_modules/lodash/_isKey.js b/node_modules/lodash/_isKey.js new file mode 100644 index 0000000..ff08b06 --- /dev/null +++ b/node_modules/lodash/_isKey.js @@ -0,0 +1,29 @@ +var isArray = require('./isArray'), + isSymbol = require('./isSymbol'); + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +module.exports = isKey; diff --git a/node_modules/lodash/_isKeyable.js b/node_modules/lodash/_isKeyable.js new file mode 100644 index 0000000..39f1828 --- /dev/null +++ b/node_modules/lodash/_isKeyable.js @@ -0,0 +1,15 @@ +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +module.exports = isKeyable; diff --git a/node_modules/lodash/_isLaziable.js b/node_modules/lodash/_isLaziable.js new file mode 100644 index 0000000..a57c4f2 --- /dev/null +++ b/node_modules/lodash/_isLaziable.js @@ -0,0 +1,28 @@ +var LazyWrapper = require('./_LazyWrapper'), + getData = require('./_getData'), + getFuncName = require('./_getFuncName'), + lodash = require('./wrapperLodash'); + +/** + * Checks if `func` has a lazy counterpart. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` has a lazy counterpart, + * else `false`. + */ +function isLaziable(func) { + var funcName = getFuncName(func), + other = lodash[funcName]; + + if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { + return false; + } + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; +} + +module.exports = isLaziable; diff --git a/node_modules/lodash/_isMaskable.js b/node_modules/lodash/_isMaskable.js new file mode 100644 index 0000000..eb98d09 --- /dev/null +++ b/node_modules/lodash/_isMaskable.js @@ -0,0 +1,14 @@ +var coreJsData = require('./_coreJsData'), + isFunction = require('./isFunction'), + stubFalse = require('./stubFalse'); + +/** + * Checks if `func` is capable of being masked. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `func` is maskable, else `false`. + */ +var isMaskable = coreJsData ? isFunction : stubFalse; + +module.exports = isMaskable; diff --git a/node_modules/lodash/_isMasked.js b/node_modules/lodash/_isMasked.js new file mode 100644 index 0000000..4b0f21b --- /dev/null +++ b/node_modules/lodash/_isMasked.js @@ -0,0 +1,20 @@ +var coreJsData = require('./_coreJsData'); + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +module.exports = isMasked; diff --git a/node_modules/lodash/_isPrototype.js b/node_modules/lodash/_isPrototype.js new file mode 100644 index 0000000..0f29498 --- /dev/null +++ b/node_modules/lodash/_isPrototype.js @@ -0,0 +1,18 @@ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +module.exports = isPrototype; diff --git a/node_modules/lodash/_isStrictComparable.js b/node_modules/lodash/_isStrictComparable.js new file mode 100644 index 0000000..b59f40b --- /dev/null +++ b/node_modules/lodash/_isStrictComparable.js @@ -0,0 +1,15 @@ +var isObject = require('./isObject'); + +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} + +module.exports = isStrictComparable; diff --git a/node_modules/lodash/_iteratorToArray.js b/node_modules/lodash/_iteratorToArray.js new file mode 100644 index 0000000..4768566 --- /dev/null +++ b/node_modules/lodash/_iteratorToArray.js @@ -0,0 +1,18 @@ +/** + * Converts `iterator` to an array. + * + * @private + * @param {Object} iterator The iterator to convert. + * @returns {Array} Returns the converted array. + */ +function iteratorToArray(iterator) { + var data, + result = []; + + while (!(data = iterator.next()).done) { + result.push(data.value); + } + return result; +} + +module.exports = iteratorToArray; diff --git a/node_modules/lodash/_lazyClone.js b/node_modules/lodash/_lazyClone.js new file mode 100644 index 0000000..d8a51f8 --- /dev/null +++ b/node_modules/lodash/_lazyClone.js @@ -0,0 +1,23 @@ +var LazyWrapper = require('./_LazyWrapper'), + copyArray = require('./_copyArray'); + +/** + * Creates a clone of the lazy wrapper object. + * + * @private + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. + */ +function lazyClone() { + var result = new LazyWrapper(this.__wrapped__); + result.__actions__ = copyArray(this.__actions__); + result.__dir__ = this.__dir__; + result.__filtered__ = this.__filtered__; + result.__iteratees__ = copyArray(this.__iteratees__); + result.__takeCount__ = this.__takeCount__; + result.__views__ = copyArray(this.__views__); + return result; +} + +module.exports = lazyClone; diff --git a/node_modules/lodash/_lazyReverse.js b/node_modules/lodash/_lazyReverse.js new file mode 100644 index 0000000..c5b5219 --- /dev/null +++ b/node_modules/lodash/_lazyReverse.js @@ -0,0 +1,23 @@ +var LazyWrapper = require('./_LazyWrapper'); + +/** + * Reverses the direction of lazy iteration. + * + * @private + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. + */ +function lazyReverse() { + if (this.__filtered__) { + var result = new LazyWrapper(this); + result.__dir__ = -1; + result.__filtered__ = true; + } else { + result = this.clone(); + result.__dir__ *= -1; + } + return result; +} + +module.exports = lazyReverse; diff --git a/node_modules/lodash/_lazyValue.js b/node_modules/lodash/_lazyValue.js new file mode 100644 index 0000000..371ca8d --- /dev/null +++ b/node_modules/lodash/_lazyValue.js @@ -0,0 +1,69 @@ +var baseWrapperValue = require('./_baseWrapperValue'), + getView = require('./_getView'), + isArray = require('./isArray'); + +/** Used to indicate the type of lazy iteratees. */ +var LAZY_FILTER_FLAG = 1, + LAZY_MAP_FLAG = 2; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMin = Math.min; + +/** + * Extracts the unwrapped value from its lazy wrapper. + * + * @private + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. + */ +function lazyValue() { + var array = this.__wrapped__.value(), + dir = this.__dir__, + isArr = isArray(array), + isRight = dir < 0, + arrLength = isArr ? array.length : 0, + view = getView(0, arrLength, this.__views__), + start = view.start, + end = view.end, + length = end - start, + index = isRight ? end : (start - 1), + iteratees = this.__iteratees__, + iterLength = iteratees.length, + resIndex = 0, + takeCount = nativeMin(length, this.__takeCount__); + + if (!isArr || (!isRight && arrLength == length && takeCount == length)) { + return baseWrapperValue(array, this.__actions__); + } + var result = []; + + outer: + while (length-- && resIndex < takeCount) { + index += dir; + + var iterIndex = -1, + value = array[index]; + + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], + iteratee = data.iteratee, + type = data.type, + computed = iteratee(value); + + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + result[resIndex++] = value; + } + return result; +} + +module.exports = lazyValue; diff --git a/node_modules/lodash/_listCacheClear.js b/node_modules/lodash/_listCacheClear.js new file mode 100644 index 0000000..acbe39a --- /dev/null +++ b/node_modules/lodash/_listCacheClear.js @@ -0,0 +1,13 @@ +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} + +module.exports = listCacheClear; diff --git a/node_modules/lodash/_listCacheDelete.js b/node_modules/lodash/_listCacheDelete.js new file mode 100644 index 0000000..b1384ad --- /dev/null +++ b/node_modules/lodash/_listCacheDelete.js @@ -0,0 +1,35 @@ +var assocIndexOf = require('./_assocIndexOf'); + +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} + +module.exports = listCacheDelete; diff --git a/node_modules/lodash/_listCacheGet.js b/node_modules/lodash/_listCacheGet.js new file mode 100644 index 0000000..f8192fc --- /dev/null +++ b/node_modules/lodash/_listCacheGet.js @@ -0,0 +1,19 @@ +var assocIndexOf = require('./_assocIndexOf'); + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +module.exports = listCacheGet; diff --git a/node_modules/lodash/_listCacheHas.js b/node_modules/lodash/_listCacheHas.js new file mode 100644 index 0000000..2adf671 --- /dev/null +++ b/node_modules/lodash/_listCacheHas.js @@ -0,0 +1,16 @@ +var assocIndexOf = require('./_assocIndexOf'); + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +module.exports = listCacheHas; diff --git a/node_modules/lodash/_listCacheSet.js b/node_modules/lodash/_listCacheSet.js new file mode 100644 index 0000000..5855c95 --- /dev/null +++ b/node_modules/lodash/_listCacheSet.js @@ -0,0 +1,26 @@ +var assocIndexOf = require('./_assocIndexOf'); + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +module.exports = listCacheSet; diff --git a/node_modules/lodash/_mapCacheClear.js b/node_modules/lodash/_mapCacheClear.js new file mode 100644 index 0000000..bc9ca20 --- /dev/null +++ b/node_modules/lodash/_mapCacheClear.js @@ -0,0 +1,21 @@ +var Hash = require('./_Hash'), + ListCache = require('./_ListCache'), + Map = require('./_Map'); + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +module.exports = mapCacheClear; diff --git a/node_modules/lodash/_mapCacheDelete.js b/node_modules/lodash/_mapCacheDelete.js new file mode 100644 index 0000000..946ca3c --- /dev/null +++ b/node_modules/lodash/_mapCacheDelete.js @@ -0,0 +1,18 @@ +var getMapData = require('./_getMapData'); + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} + +module.exports = mapCacheDelete; diff --git a/node_modules/lodash/_mapCacheGet.js b/node_modules/lodash/_mapCacheGet.js new file mode 100644 index 0000000..f29f55c --- /dev/null +++ b/node_modules/lodash/_mapCacheGet.js @@ -0,0 +1,16 @@ +var getMapData = require('./_getMapData'); + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +module.exports = mapCacheGet; diff --git a/node_modules/lodash/_mapCacheHas.js b/node_modules/lodash/_mapCacheHas.js new file mode 100644 index 0000000..a1214c0 --- /dev/null +++ b/node_modules/lodash/_mapCacheHas.js @@ -0,0 +1,16 @@ +var getMapData = require('./_getMapData'); + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +module.exports = mapCacheHas; diff --git a/node_modules/lodash/_mapCacheSet.js b/node_modules/lodash/_mapCacheSet.js new file mode 100644 index 0000000..7346849 --- /dev/null +++ b/node_modules/lodash/_mapCacheSet.js @@ -0,0 +1,22 @@ +var getMapData = require('./_getMapData'); + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} + +module.exports = mapCacheSet; diff --git a/node_modules/lodash/_mapToArray.js b/node_modules/lodash/_mapToArray.js new file mode 100644 index 0000000..fe3dd53 --- /dev/null +++ b/node_modules/lodash/_mapToArray.js @@ -0,0 +1,18 @@ +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} + +module.exports = mapToArray; diff --git a/node_modules/lodash/_matchesStrictComparable.js b/node_modules/lodash/_matchesStrictComparable.js new file mode 100644 index 0000000..f608af9 --- /dev/null +++ b/node_modules/lodash/_matchesStrictComparable.js @@ -0,0 +1,20 @@ +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} + +module.exports = matchesStrictComparable; diff --git a/node_modules/lodash/_memoizeCapped.js b/node_modules/lodash/_memoizeCapped.js new file mode 100644 index 0000000..7f71c8f --- /dev/null +++ b/node_modules/lodash/_memoizeCapped.js @@ -0,0 +1,26 @@ +var memoize = require('./memoize'); + +/** Used as the maximum memoize cache size. */ +var MAX_MEMOIZE_SIZE = 500; + +/** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ +function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; +} + +module.exports = memoizeCapped; diff --git a/node_modules/lodash/_mergeData.js b/node_modules/lodash/_mergeData.js new file mode 100644 index 0000000..cb570f9 --- /dev/null +++ b/node_modules/lodash/_mergeData.js @@ -0,0 +1,90 @@ +var composeArgs = require('./_composeArgs'), + composeArgsRight = require('./_composeArgsRight'), + replaceHolders = require('./_replaceHolders'); + +/** Used as the internal argument placeholder. */ +var PLACEHOLDER = '__lodash_placeholder__'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_BOUND_FLAG = 4, + WRAP_CURRY_FLAG = 8, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMin = Math.min; + +/** + * Merges the function metadata of `source` into `data`. + * + * Merging metadata reduces the number of wrappers used to invoke a function. + * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` + * may be applied regardless of execution order. Methods like `_.ary` and + * `_.rearg` modify function arguments, making the order in which they are + * executed important, preventing the merging of metadata. However, we make + * an exception for a safe combined case where curried functions have `_.ary` + * and or `_.rearg` applied. + * + * @private + * @param {Array} data The destination metadata. + * @param {Array} source The source metadata. + * @returns {Array} Returns `data`. + */ +function mergeData(data, source) { + var bitmask = data[1], + srcBitmask = source[1], + newBitmask = bitmask | srcBitmask, + isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); + + var isCombo = + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || + ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); + + // Exit early if metadata can't be merged. + if (!(isCommon || isCombo)) { + return data; + } + // Use source `thisArg` if available. + if (srcBitmask & WRAP_BIND_FLAG) { + data[2] = source[2]; + // Set when currying a bound function. + newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; + } + // Compose partial arguments. + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : value; + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; + } + // Compose partial right arguments. + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; + } + // Use source `argPos` if available. + value = source[7]; + if (value) { + data[7] = value; + } + // Use source `ary` if it's smaller. + if (srcBitmask & WRAP_ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + // Use source `arity` if one is not provided. + if (data[9] == null) { + data[9] = source[9]; + } + // Use source `func` and merge bitmasks. + data[0] = source[0]; + data[1] = newBitmask; + + return data; +} + +module.exports = mergeData; diff --git a/node_modules/lodash/_metaMap.js b/node_modules/lodash/_metaMap.js new file mode 100644 index 0000000..0157a0b --- /dev/null +++ b/node_modules/lodash/_metaMap.js @@ -0,0 +1,6 @@ +var WeakMap = require('./_WeakMap'); + +/** Used to store function metadata. */ +var metaMap = WeakMap && new WeakMap; + +module.exports = metaMap; diff --git a/node_modules/lodash/_nativeCreate.js b/node_modules/lodash/_nativeCreate.js new file mode 100644 index 0000000..c7aede8 --- /dev/null +++ b/node_modules/lodash/_nativeCreate.js @@ -0,0 +1,6 @@ +var getNative = require('./_getNative'); + +/* Built-in method references that are verified to be native. */ +var nativeCreate = getNative(Object, 'create'); + +module.exports = nativeCreate; diff --git a/node_modules/lodash/_nativeKeys.js b/node_modules/lodash/_nativeKeys.js new file mode 100644 index 0000000..479a104 --- /dev/null +++ b/node_modules/lodash/_nativeKeys.js @@ -0,0 +1,6 @@ +var overArg = require('./_overArg'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); + +module.exports = nativeKeys; diff --git a/node_modules/lodash/_nativeKeysIn.js b/node_modules/lodash/_nativeKeysIn.js new file mode 100644 index 0000000..00ee505 --- /dev/null +++ b/node_modules/lodash/_nativeKeysIn.js @@ -0,0 +1,20 @@ +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; +} + +module.exports = nativeKeysIn; diff --git a/node_modules/lodash/_nodeUtil.js b/node_modules/lodash/_nodeUtil.js new file mode 100644 index 0000000..983d78f --- /dev/null +++ b/node_modules/lodash/_nodeUtil.js @@ -0,0 +1,30 @@ +var freeGlobal = require('./_freeGlobal'); + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; + +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); + +module.exports = nodeUtil; diff --git a/node_modules/lodash/_objectToString.js b/node_modules/lodash/_objectToString.js new file mode 100644 index 0000000..c614ec0 --- /dev/null +++ b/node_modules/lodash/_objectToString.js @@ -0,0 +1,22 @@ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} + +module.exports = objectToString; diff --git a/node_modules/lodash/_overArg.js b/node_modules/lodash/_overArg.js new file mode 100644 index 0000000..651c5c5 --- /dev/null +++ b/node_modules/lodash/_overArg.js @@ -0,0 +1,15 @@ +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +module.exports = overArg; diff --git a/node_modules/lodash/_overRest.js b/node_modules/lodash/_overRest.js new file mode 100644 index 0000000..c7cdef3 --- /dev/null +++ b/node_modules/lodash/_overRest.js @@ -0,0 +1,36 @@ +var apply = require('./_apply'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ +function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; +} + +module.exports = overRest; diff --git a/node_modules/lodash/_parent.js b/node_modules/lodash/_parent.js new file mode 100644 index 0000000..f174328 --- /dev/null +++ b/node_modules/lodash/_parent.js @@ -0,0 +1,16 @@ +var baseGet = require('./_baseGet'), + baseSlice = require('./_baseSlice'); + +/** + * Gets the parent value at `path` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} path The path to get the parent value of. + * @returns {*} Returns the parent value. + */ +function parent(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); +} + +module.exports = parent; diff --git a/node_modules/lodash/_reEscape.js b/node_modules/lodash/_reEscape.js new file mode 100644 index 0000000..7f47eda --- /dev/null +++ b/node_modules/lodash/_reEscape.js @@ -0,0 +1,4 @@ +/** Used to match template delimiters. */ +var reEscape = /<%-([\s\S]+?)%>/g; + +module.exports = reEscape; diff --git a/node_modules/lodash/_reEvaluate.js b/node_modules/lodash/_reEvaluate.js new file mode 100644 index 0000000..6adfc31 --- /dev/null +++ b/node_modules/lodash/_reEvaluate.js @@ -0,0 +1,4 @@ +/** Used to match template delimiters. */ +var reEvaluate = /<%([\s\S]+?)%>/g; + +module.exports = reEvaluate; diff --git a/node_modules/lodash/_reInterpolate.js b/node_modules/lodash/_reInterpolate.js new file mode 100644 index 0000000..d02ff0b --- /dev/null +++ b/node_modules/lodash/_reInterpolate.js @@ -0,0 +1,4 @@ +/** Used to match template delimiters. */ +var reInterpolate = /<%=([\s\S]+?)%>/g; + +module.exports = reInterpolate; diff --git a/node_modules/lodash/_realNames.js b/node_modules/lodash/_realNames.js new file mode 100644 index 0000000..aa0d529 --- /dev/null +++ b/node_modules/lodash/_realNames.js @@ -0,0 +1,4 @@ +/** Used to lookup unminified function names. */ +var realNames = {}; + +module.exports = realNames; diff --git a/node_modules/lodash/_reorder.js b/node_modules/lodash/_reorder.js new file mode 100644 index 0000000..a3502b0 --- /dev/null +++ b/node_modules/lodash/_reorder.js @@ -0,0 +1,29 @@ +var copyArray = require('./_copyArray'), + isIndex = require('./_isIndex'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMin = Math.min; + +/** + * Reorder `array` according to the specified indexes where the element at + * the first index is assigned as the first element, the element at + * the second index is assigned as the second element, and so on. + * + * @private + * @param {Array} array The array to reorder. + * @param {Array} indexes The arranged array indexes. + * @returns {Array} Returns `array`. + */ +function reorder(array, indexes) { + var arrLength = array.length, + length = nativeMin(indexes.length, arrLength), + oldArray = copyArray(array); + + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; + } + return array; +} + +module.exports = reorder; diff --git a/node_modules/lodash/_replaceHolders.js b/node_modules/lodash/_replaceHolders.js new file mode 100644 index 0000000..74360ec --- /dev/null +++ b/node_modules/lodash/_replaceHolders.js @@ -0,0 +1,29 @@ +/** Used as the internal argument placeholder. */ +var PLACEHOLDER = '__lodash_placeholder__'; + +/** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */ +function replaceHolders(array, placeholder) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value === placeholder || value === PLACEHOLDER) { + array[index] = PLACEHOLDER; + result[resIndex++] = index; + } + } + return result; +} + +module.exports = replaceHolders; diff --git a/node_modules/lodash/_root.js b/node_modules/lodash/_root.js new file mode 100644 index 0000000..d2852be --- /dev/null +++ b/node_modules/lodash/_root.js @@ -0,0 +1,9 @@ +var freeGlobal = require('./_freeGlobal'); + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +module.exports = root; diff --git a/node_modules/lodash/_safeGet.js b/node_modules/lodash/_safeGet.js new file mode 100644 index 0000000..b070897 --- /dev/null +++ b/node_modules/lodash/_safeGet.js @@ -0,0 +1,21 @@ +/** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } + + if (key == '__proto__') { + return; + } + + return object[key]; +} + +module.exports = safeGet; diff --git a/node_modules/lodash/_setCacheAdd.js b/node_modules/lodash/_setCacheAdd.js new file mode 100644 index 0000000..1081a74 --- /dev/null +++ b/node_modules/lodash/_setCacheAdd.js @@ -0,0 +1,19 @@ +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +module.exports = setCacheAdd; diff --git a/node_modules/lodash/_setCacheHas.js b/node_modules/lodash/_setCacheHas.js new file mode 100644 index 0000000..9a49255 --- /dev/null +++ b/node_modules/lodash/_setCacheHas.js @@ -0,0 +1,14 @@ +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +module.exports = setCacheHas; diff --git a/node_modules/lodash/_setData.js b/node_modules/lodash/_setData.js new file mode 100644 index 0000000..e5cf3eb --- /dev/null +++ b/node_modules/lodash/_setData.js @@ -0,0 +1,20 @@ +var baseSetData = require('./_baseSetData'), + shortOut = require('./_shortOut'); + +/** + * Sets metadata for `func`. + * + * **Note:** If this function becomes hot, i.e. is invoked a lot in a short + * period of time, it will trip its breaker and transition to an identity + * function to avoid garbage collection pauses in V8. See + * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) + * for more details. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ +var setData = shortOut(baseSetData); + +module.exports = setData; diff --git a/node_modules/lodash/_setToArray.js b/node_modules/lodash/_setToArray.js new file mode 100644 index 0000000..b87f074 --- /dev/null +++ b/node_modules/lodash/_setToArray.js @@ -0,0 +1,18 @@ +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +module.exports = setToArray; diff --git a/node_modules/lodash/_setToPairs.js b/node_modules/lodash/_setToPairs.js new file mode 100644 index 0000000..36ad37a --- /dev/null +++ b/node_modules/lodash/_setToPairs.js @@ -0,0 +1,18 @@ +/** + * Converts `set` to its value-value pairs. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the value-value pairs. + */ +function setToPairs(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = [value, value]; + }); + return result; +} + +module.exports = setToPairs; diff --git a/node_modules/lodash/_setToString.js b/node_modules/lodash/_setToString.js new file mode 100644 index 0000000..6ca8419 --- /dev/null +++ b/node_modules/lodash/_setToString.js @@ -0,0 +1,14 @@ +var baseSetToString = require('./_baseSetToString'), + shortOut = require('./_shortOut'); + +/** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var setToString = shortOut(baseSetToString); + +module.exports = setToString; diff --git a/node_modules/lodash/_setWrapToString.js b/node_modules/lodash/_setWrapToString.js new file mode 100644 index 0000000..decdc44 --- /dev/null +++ b/node_modules/lodash/_setWrapToString.js @@ -0,0 +1,21 @@ +var getWrapDetails = require('./_getWrapDetails'), + insertWrapDetails = require('./_insertWrapDetails'), + setToString = require('./_setToString'), + updateWrapDetails = require('./_updateWrapDetails'); + +/** + * Sets the `toString` method of `wrapper` to mimic the source of `reference` + * with wrapper details in a comment at the top of the source body. + * + * @private + * @param {Function} wrapper The function to modify. + * @param {Function} reference The reference function. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Function} Returns `wrapper`. + */ +function setWrapToString(wrapper, reference, bitmask) { + var source = (reference + ''); + return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); +} + +module.exports = setWrapToString; diff --git a/node_modules/lodash/_shortOut.js b/node_modules/lodash/_shortOut.js new file mode 100644 index 0000000..3300a07 --- /dev/null +++ b/node_modules/lodash/_shortOut.js @@ -0,0 +1,37 @@ +/** Used to detect hot functions by number of calls within a span of milliseconds. */ +var HOT_COUNT = 800, + HOT_SPAN = 16; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeNow = Date.now; + +/** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ +function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; +} + +module.exports = shortOut; diff --git a/node_modules/lodash/_shuffleSelf.js b/node_modules/lodash/_shuffleSelf.js new file mode 100644 index 0000000..8bcc4f5 --- /dev/null +++ b/node_modules/lodash/_shuffleSelf.js @@ -0,0 +1,28 @@ +var baseRandom = require('./_baseRandom'); + +/** + * A specialized version of `_.shuffle` which mutates and sets the size of `array`. + * + * @private + * @param {Array} array The array to shuffle. + * @param {number} [size=array.length] The size of `array`. + * @returns {Array} Returns `array`. + */ +function shuffleSelf(array, size) { + var index = -1, + length = array.length, + lastIndex = length - 1; + + size = size === undefined ? length : size; + while (++index < size) { + var rand = baseRandom(index, lastIndex), + value = array[rand]; + + array[rand] = array[index]; + array[index] = value; + } + array.length = size; + return array; +} + +module.exports = shuffleSelf; diff --git a/node_modules/lodash/_stackClear.js b/node_modules/lodash/_stackClear.js new file mode 100644 index 0000000..ce8e5a9 --- /dev/null +++ b/node_modules/lodash/_stackClear.js @@ -0,0 +1,15 @@ +var ListCache = require('./_ListCache'); + +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; + this.size = 0; +} + +module.exports = stackClear; diff --git a/node_modules/lodash/_stackDelete.js b/node_modules/lodash/_stackDelete.js new file mode 100644 index 0000000..ff9887a --- /dev/null +++ b/node_modules/lodash/_stackDelete.js @@ -0,0 +1,18 @@ +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; +} + +module.exports = stackDelete; diff --git a/node_modules/lodash/_stackGet.js b/node_modules/lodash/_stackGet.js new file mode 100644 index 0000000..1cdf004 --- /dev/null +++ b/node_modules/lodash/_stackGet.js @@ -0,0 +1,14 @@ +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +module.exports = stackGet; diff --git a/node_modules/lodash/_stackHas.js b/node_modules/lodash/_stackHas.js new file mode 100644 index 0000000..16a3ad1 --- /dev/null +++ b/node_modules/lodash/_stackHas.js @@ -0,0 +1,14 @@ +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} + +module.exports = stackHas; diff --git a/node_modules/lodash/_stackSet.js b/node_modules/lodash/_stackSet.js new file mode 100644 index 0000000..b790ac5 --- /dev/null +++ b/node_modules/lodash/_stackSet.js @@ -0,0 +1,34 @@ +var ListCache = require('./_ListCache'), + Map = require('./_Map'), + MapCache = require('./_MapCache'); + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; +} + +module.exports = stackSet; diff --git a/node_modules/lodash/_strictIndexOf.js b/node_modules/lodash/_strictIndexOf.js new file mode 100644 index 0000000..0486a49 --- /dev/null +++ b/node_modules/lodash/_strictIndexOf.js @@ -0,0 +1,23 @@ +/** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; +} + +module.exports = strictIndexOf; diff --git a/node_modules/lodash/_strictLastIndexOf.js b/node_modules/lodash/_strictLastIndexOf.js new file mode 100644 index 0000000..d7310dc --- /dev/null +++ b/node_modules/lodash/_strictLastIndexOf.js @@ -0,0 +1,21 @@ +/** + * A specialized version of `_.lastIndexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function strictLastIndexOf(array, value, fromIndex) { + var index = fromIndex + 1; + while (index--) { + if (array[index] === value) { + return index; + } + } + return index; +} + +module.exports = strictLastIndexOf; diff --git a/node_modules/lodash/_stringSize.js b/node_modules/lodash/_stringSize.js new file mode 100644 index 0000000..17ef462 --- /dev/null +++ b/node_modules/lodash/_stringSize.js @@ -0,0 +1,18 @@ +var asciiSize = require('./_asciiSize'), + hasUnicode = require('./_hasUnicode'), + unicodeSize = require('./_unicodeSize'); + +/** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ +function stringSize(string) { + return hasUnicode(string) + ? unicodeSize(string) + : asciiSize(string); +} + +module.exports = stringSize; diff --git a/node_modules/lodash/_stringToArray.js b/node_modules/lodash/_stringToArray.js new file mode 100644 index 0000000..d161158 --- /dev/null +++ b/node_modules/lodash/_stringToArray.js @@ -0,0 +1,18 @@ +var asciiToArray = require('./_asciiToArray'), + hasUnicode = require('./_hasUnicode'), + unicodeToArray = require('./_unicodeToArray'); + +/** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ +function stringToArray(string) { + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); +} + +module.exports = stringToArray; diff --git a/node_modules/lodash/_stringToPath.js b/node_modules/lodash/_stringToPath.js new file mode 100644 index 0000000..8f39f8a --- /dev/null +++ b/node_modules/lodash/_stringToPath.js @@ -0,0 +1,27 @@ +var memoizeCapped = require('./_memoizeCapped'); + +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +module.exports = stringToPath; diff --git a/node_modules/lodash/_toKey.js b/node_modules/lodash/_toKey.js new file mode 100644 index 0000000..c6d645c --- /dev/null +++ b/node_modules/lodash/_toKey.js @@ -0,0 +1,21 @@ +var isSymbol = require('./isSymbol'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +module.exports = toKey; diff --git a/node_modules/lodash/_toSource.js b/node_modules/lodash/_toSource.js new file mode 100644 index 0000000..a020b38 --- /dev/null +++ b/node_modules/lodash/_toSource.js @@ -0,0 +1,26 @@ +/** Used for built-in method references. */ +var funcProto = Function.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +module.exports = toSource; diff --git a/node_modules/lodash/_trimmedEndIndex.js b/node_modules/lodash/_trimmedEndIndex.js new file mode 100644 index 0000000..139439a --- /dev/null +++ b/node_modules/lodash/_trimmedEndIndex.js @@ -0,0 +1,19 @@ +/** Used to match a single whitespace character. */ +var reWhitespace = /\s/; + +/** + * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the last non-whitespace character. + */ +function trimmedEndIndex(string) { + var index = string.length; + + while (index-- && reWhitespace.test(string.charAt(index))) {} + return index; +} + +module.exports = trimmedEndIndex; diff --git a/node_modules/lodash/_unescapeHtmlChar.js b/node_modules/lodash/_unescapeHtmlChar.js new file mode 100644 index 0000000..a71fecb --- /dev/null +++ b/node_modules/lodash/_unescapeHtmlChar.js @@ -0,0 +1,21 @@ +var basePropertyOf = require('./_basePropertyOf'); + +/** Used to map HTML entities to characters. */ +var htmlUnescapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + ''': "'" +}; + +/** + * Used by `_.unescape` to convert HTML entities to characters. + * + * @private + * @param {string} chr The matched character to unescape. + * @returns {string} Returns the unescaped character. + */ +var unescapeHtmlChar = basePropertyOf(htmlUnescapes); + +module.exports = unescapeHtmlChar; diff --git a/node_modules/lodash/_unicodeSize.js b/node_modules/lodash/_unicodeSize.js new file mode 100644 index 0000000..68137ec --- /dev/null +++ b/node_modules/lodash/_unicodeSize.js @@ -0,0 +1,44 @@ +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + +/** Used to compose unicode capture groups. */ +var rsAstral = '[' + rsAstralRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsZWJ = '\\u200d'; + +/** Used to compose unicode regexes. */ +var reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + +/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ +var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + +/** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ +function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; +} + +module.exports = unicodeSize; diff --git a/node_modules/lodash/_unicodeToArray.js b/node_modules/lodash/_unicodeToArray.js new file mode 100644 index 0000000..2a725c0 --- /dev/null +++ b/node_modules/lodash/_unicodeToArray.js @@ -0,0 +1,40 @@ +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + +/** Used to compose unicode capture groups. */ +var rsAstral = '[' + rsAstralRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsZWJ = '\\u200d'; + +/** Used to compose unicode regexes. */ +var reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + +/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ +var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + +/** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ +function unicodeToArray(string) { + return string.match(reUnicode) || []; +} + +module.exports = unicodeToArray; diff --git a/node_modules/lodash/_unicodeWords.js b/node_modules/lodash/_unicodeWords.js new file mode 100644 index 0000000..e72e6e0 --- /dev/null +++ b/node_modules/lodash/_unicodeWords.js @@ -0,0 +1,69 @@ +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsDingbatRange = '\\u2700-\\u27bf', + rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', + rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', + rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', + rsPunctuationRange = '\\u2000-\\u206f', + rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', + rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', + rsVarRange = '\\ufe0e\\ufe0f', + rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + +/** Used to compose unicode capture groups. */ +var rsApos = "['\u2019]", + rsBreak = '[' + rsBreakRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsDigits = '\\d+', + rsDingbat = '[' + rsDingbatRange + ']', + rsLower = '[' + rsLowerRange + ']', + rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsUpper = '[' + rsUpperRange + ']', + rsZWJ = '\\u200d'; + +/** Used to compose unicode regexes. */ +var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', + rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', + rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', + rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', + reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', + rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq; + +/** Used to match complex or compound words. */ +var reUnicodeWord = RegExp([ + rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', + rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', + rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, + rsUpper + '+' + rsOptContrUpper, + rsOrdUpper, + rsOrdLower, + rsDigits, + rsEmoji +].join('|'), 'g'); + +/** + * Splits a Unicode `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ +function unicodeWords(string) { + return string.match(reUnicodeWord) || []; +} + +module.exports = unicodeWords; diff --git a/node_modules/lodash/_updateWrapDetails.js b/node_modules/lodash/_updateWrapDetails.js new file mode 100644 index 0000000..8759fbd --- /dev/null +++ b/node_modules/lodash/_updateWrapDetails.js @@ -0,0 +1,46 @@ +var arrayEach = require('./_arrayEach'), + arrayIncludes = require('./_arrayIncludes'); + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256, + WRAP_FLIP_FLAG = 512; + +/** Used to associate wrap methods with their bit flags. */ +var wrapFlags = [ + ['ary', WRAP_ARY_FLAG], + ['bind', WRAP_BIND_FLAG], + ['bindKey', WRAP_BIND_KEY_FLAG], + ['curry', WRAP_CURRY_FLAG], + ['curryRight', WRAP_CURRY_RIGHT_FLAG], + ['flip', WRAP_FLIP_FLAG], + ['partial', WRAP_PARTIAL_FLAG], + ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], + ['rearg', WRAP_REARG_FLAG] +]; + +/** + * Updates wrapper `details` based on `bitmask` flags. + * + * @private + * @returns {Array} details The details to modify. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Array} Returns `details`. + */ +function updateWrapDetails(details, bitmask) { + arrayEach(wrapFlags, function(pair) { + var value = '_.' + pair[0]; + if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { + details.push(value); + } + }); + return details.sort(); +} + +module.exports = updateWrapDetails; diff --git a/node_modules/lodash/_wrapperClone.js b/node_modules/lodash/_wrapperClone.js new file mode 100644 index 0000000..7bb58a2 --- /dev/null +++ b/node_modules/lodash/_wrapperClone.js @@ -0,0 +1,23 @@ +var LazyWrapper = require('./_LazyWrapper'), + LodashWrapper = require('./_LodashWrapper'), + copyArray = require('./_copyArray'); + +/** + * Creates a clone of `wrapper`. + * + * @private + * @param {Object} wrapper The wrapper to clone. + * @returns {Object} Returns the cloned wrapper. + */ +function wrapperClone(wrapper) { + if (wrapper instanceof LazyWrapper) { + return wrapper.clone(); + } + var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); + result.__actions__ = copyArray(wrapper.__actions__); + result.__index__ = wrapper.__index__; + result.__values__ = wrapper.__values__; + return result; +} + +module.exports = wrapperClone; diff --git a/node_modules/lodash/add.js b/node_modules/lodash/add.js new file mode 100644 index 0000000..f069515 --- /dev/null +++ b/node_modules/lodash/add.js @@ -0,0 +1,22 @@ +var createMathOperation = require('./_createMathOperation'); + +/** + * Adds two numbers. + * + * @static + * @memberOf _ + * @since 3.4.0 + * @category Math + * @param {number} augend The first number in an addition. + * @param {number} addend The second number in an addition. + * @returns {number} Returns the total. + * @example + * + * _.add(6, 4); + * // => 10 + */ +var add = createMathOperation(function(augend, addend) { + return augend + addend; +}, 0); + +module.exports = add; diff --git a/node_modules/lodash/after.js b/node_modules/lodash/after.js new file mode 100644 index 0000000..3900c97 --- /dev/null +++ b/node_modules/lodash/after.js @@ -0,0 +1,42 @@ +var toInteger = require('./toInteger'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it's called `n` or more times. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => Logs 'done saving!' after the two async saves have completed. + */ +function after(n, func) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; +} + +module.exports = after; diff --git a/node_modules/lodash/array.js b/node_modules/lodash/array.js new file mode 100644 index 0000000..af688d3 --- /dev/null +++ b/node_modules/lodash/array.js @@ -0,0 +1,67 @@ +module.exports = { + 'chunk': require('./chunk'), + 'compact': require('./compact'), + 'concat': require('./concat'), + 'difference': require('./difference'), + 'differenceBy': require('./differenceBy'), + 'differenceWith': require('./differenceWith'), + 'drop': require('./drop'), + 'dropRight': require('./dropRight'), + 'dropRightWhile': require('./dropRightWhile'), + 'dropWhile': require('./dropWhile'), + 'fill': require('./fill'), + 'findIndex': require('./findIndex'), + 'findLastIndex': require('./findLastIndex'), + 'first': require('./first'), + 'flatten': require('./flatten'), + 'flattenDeep': require('./flattenDeep'), + 'flattenDepth': require('./flattenDepth'), + 'fromPairs': require('./fromPairs'), + 'head': require('./head'), + 'indexOf': require('./indexOf'), + 'initial': require('./initial'), + 'intersection': require('./intersection'), + 'intersectionBy': require('./intersectionBy'), + 'intersectionWith': require('./intersectionWith'), + 'join': require('./join'), + 'last': require('./last'), + 'lastIndexOf': require('./lastIndexOf'), + 'nth': require('./nth'), + 'pull': require('./pull'), + 'pullAll': require('./pullAll'), + 'pullAllBy': require('./pullAllBy'), + 'pullAllWith': require('./pullAllWith'), + 'pullAt': require('./pullAt'), + 'remove': require('./remove'), + 'reverse': require('./reverse'), + 'slice': require('./slice'), + 'sortedIndex': require('./sortedIndex'), + 'sortedIndexBy': require('./sortedIndexBy'), + 'sortedIndexOf': require('./sortedIndexOf'), + 'sortedLastIndex': require('./sortedLastIndex'), + 'sortedLastIndexBy': require('./sortedLastIndexBy'), + 'sortedLastIndexOf': require('./sortedLastIndexOf'), + 'sortedUniq': require('./sortedUniq'), + 'sortedUniqBy': require('./sortedUniqBy'), + 'tail': require('./tail'), + 'take': require('./take'), + 'takeRight': require('./takeRight'), + 'takeRightWhile': require('./takeRightWhile'), + 'takeWhile': require('./takeWhile'), + 'union': require('./union'), + 'unionBy': require('./unionBy'), + 'unionWith': require('./unionWith'), + 'uniq': require('./uniq'), + 'uniqBy': require('./uniqBy'), + 'uniqWith': require('./uniqWith'), + 'unzip': require('./unzip'), + 'unzipWith': require('./unzipWith'), + 'without': require('./without'), + 'xor': require('./xor'), + 'xorBy': require('./xorBy'), + 'xorWith': require('./xorWith'), + 'zip': require('./zip'), + 'zipObject': require('./zipObject'), + 'zipObjectDeep': require('./zipObjectDeep'), + 'zipWith': require('./zipWith') +}; diff --git a/node_modules/lodash/ary.js b/node_modules/lodash/ary.js new file mode 100644 index 0000000..70c87d0 --- /dev/null +++ b/node_modules/lodash/ary.js @@ -0,0 +1,29 @@ +var createWrap = require('./_createWrap'); + +/** Used to compose bitmasks for function metadata. */ +var WRAP_ARY_FLAG = 128; + +/** + * Creates a function that invokes `func`, with up to `n` arguments, + * ignoring any additional arguments. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] + */ +function ary(func, n, guard) { + n = guard ? undefined : n; + n = (func && n == null) ? func.length : n; + return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); +} + +module.exports = ary; diff --git a/node_modules/lodash/assign.js b/node_modules/lodash/assign.js new file mode 100644 index 0000000..909db26 --- /dev/null +++ b/node_modules/lodash/assign.js @@ -0,0 +1,58 @@ +var assignValue = require('./_assignValue'), + copyObject = require('./_copyObject'), + createAssigner = require('./_createAssigner'), + isArrayLike = require('./isArrayLike'), + isPrototype = require('./_isPrototype'), + keys = require('./keys'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Assigns own enumerable string keyed properties of source objects to the + * destination object. Source objects are applied from left to right. + * Subsequent sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object` and is loosely based on + * [`Object.assign`](https://mdn.io/Object/assign). + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assignIn + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assign({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'c': 3 } + */ +var assign = createAssigner(function(object, source) { + if (isPrototype(source) || isArrayLike(source)) { + copyObject(source, keys(source), object); + return; + } + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + assignValue(object, key, source[key]); + } + } +}); + +module.exports = assign; diff --git a/node_modules/lodash/assignIn.js b/node_modules/lodash/assignIn.js new file mode 100644 index 0000000..e663473 --- /dev/null +++ b/node_modules/lodash/assignIn.js @@ -0,0 +1,40 @@ +var copyObject = require('./_copyObject'), + createAssigner = require('./_createAssigner'), + keysIn = require('./keysIn'); + +/** + * This method is like `_.assign` except that it iterates over own and + * inherited source properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assign + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assignIn({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } + */ +var assignIn = createAssigner(function(object, source) { + copyObject(source, keysIn(source), object); +}); + +module.exports = assignIn; diff --git a/node_modules/lodash/assignInWith.js b/node_modules/lodash/assignInWith.js new file mode 100644 index 0000000..68fcc0b --- /dev/null +++ b/node_modules/lodash/assignInWith.js @@ -0,0 +1,38 @@ +var copyObject = require('./_copyObject'), + createAssigner = require('./_createAssigner'), + keysIn = require('./keysIn'); + +/** + * This method is like `_.assignIn` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extendWith + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignInWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ +var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keysIn(source), object, customizer); +}); + +module.exports = assignInWith; diff --git a/node_modules/lodash/assignWith.js b/node_modules/lodash/assignWith.js new file mode 100644 index 0000000..7dc6c76 --- /dev/null +++ b/node_modules/lodash/assignWith.js @@ -0,0 +1,37 @@ +var copyObject = require('./_copyObject'), + createAssigner = require('./_createAssigner'), + keys = require('./keys'); + +/** + * This method is like `_.assign` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignInWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ +var assignWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keys(source), object, customizer); +}); + +module.exports = assignWith; diff --git a/node_modules/lodash/at.js b/node_modules/lodash/at.js new file mode 100644 index 0000000..781ee9e --- /dev/null +++ b/node_modules/lodash/at.js @@ -0,0 +1,23 @@ +var baseAt = require('./_baseAt'), + flatRest = require('./_flatRest'); + +/** + * Creates an array of values corresponding to `paths` of `object`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Array} Returns the picked values. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _.at(object, ['a[0].b.c', 'a[1]']); + * // => [3, 4] + */ +var at = flatRest(baseAt); + +module.exports = at; diff --git a/node_modules/lodash/attempt.js b/node_modules/lodash/attempt.js new file mode 100644 index 0000000..624d015 --- /dev/null +++ b/node_modules/lodash/attempt.js @@ -0,0 +1,35 @@ +var apply = require('./_apply'), + baseRest = require('./_baseRest'), + isError = require('./isError'); + +/** + * Attempts to invoke `func`, returning either the result or the caught error + * object. Any additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {Function} func The function to attempt. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {*} Returns the `func` result or error object. + * @example + * + * // Avoid throwing errors for invalid selectors. + * var elements = _.attempt(function(selector) { + * return document.querySelectorAll(selector); + * }, '>_>'); + * + * if (_.isError(elements)) { + * elements = []; + * } + */ +var attempt = baseRest(function(func, args) { + try { + return apply(func, undefined, args); + } catch (e) { + return isError(e) ? e : new Error(e); + } +}); + +module.exports = attempt; diff --git a/node_modules/lodash/before.js b/node_modules/lodash/before.js new file mode 100644 index 0000000..a3e0a16 --- /dev/null +++ b/node_modules/lodash/before.js @@ -0,0 +1,40 @@ +var toInteger = require('./toInteger'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it's called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery(element).on('click', _.before(5, addContactToList)); + * // => Allows adding up to 4 contacts to the list. + */ +function before(n, func) { + var result; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = undefined; + } + return result; + }; +} + +module.exports = before; diff --git a/node_modules/lodash/bind.js b/node_modules/lodash/bind.js new file mode 100644 index 0000000..b1076e9 --- /dev/null +++ b/node_modules/lodash/bind.js @@ -0,0 +1,57 @@ +var baseRest = require('./_baseRest'), + createWrap = require('./_createWrap'), + getHolder = require('./_getHolder'), + replaceHolders = require('./_replaceHolders'); + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1, + WRAP_PARTIAL_FLAG = 32; + +/** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and `partials` prepended to the arguments it receives. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" + * property of bound functions. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * function greet(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // Bound with placeholders. + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */ +var bind = baseRest(function(func, thisArg, partials) { + var bitmask = WRAP_BIND_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bind)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(func, bitmask, thisArg, partials, holders); +}); + +// Assign default placeholders. +bind.placeholder = {}; + +module.exports = bind; diff --git a/node_modules/lodash/bindAll.js b/node_modules/lodash/bindAll.js new file mode 100644 index 0000000..a35706d --- /dev/null +++ b/node_modules/lodash/bindAll.js @@ -0,0 +1,41 @@ +var arrayEach = require('./_arrayEach'), + baseAssignValue = require('./_baseAssignValue'), + bind = require('./bind'), + flatRest = require('./_flatRest'), + toKey = require('./_toKey'); + +/** + * Binds methods of an object to the object itself, overwriting the existing + * method. + * + * **Note:** This method doesn't set the "length" property of bound functions. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {Object} object The object to bind and assign the bound methods to. + * @param {...(string|string[])} methodNames The object method names to bind. + * @returns {Object} Returns `object`. + * @example + * + * var view = { + * 'label': 'docs', + * 'click': function() { + * console.log('clicked ' + this.label); + * } + * }; + * + * _.bindAll(view, ['click']); + * jQuery(element).on('click', view.click); + * // => Logs 'clicked docs' when clicked. + */ +var bindAll = flatRest(function(object, methodNames) { + arrayEach(methodNames, function(key) { + key = toKey(key); + baseAssignValue(object, key, bind(object[key], object)); + }); + return object; +}); + +module.exports = bindAll; diff --git a/node_modules/lodash/bindKey.js b/node_modules/lodash/bindKey.js new file mode 100644 index 0000000..f7fd64c --- /dev/null +++ b/node_modules/lodash/bindKey.js @@ -0,0 +1,68 @@ +var baseRest = require('./_baseRest'), + createWrap = require('./_createWrap'), + getHolder = require('./_getHolder'), + replaceHolders = require('./_replaceHolders'); + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_PARTIAL_FLAG = 32; + +/** + * Creates a function that invokes the method at `object[key]` with `partials` + * prepended to the arguments it receives. + * + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. See + * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Function + * @param {Object} object The object to invoke the method on. + * @param {string} key The key of the method. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // Bound with placeholders. + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' + */ +var bindKey = baseRest(function(object, key, partials) { + var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bindKey)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(key, bitmask, object, partials, holders); +}); + +// Assign default placeholders. +bindKey.placeholder = {}; + +module.exports = bindKey; diff --git a/node_modules/lodash/camelCase.js b/node_modules/lodash/camelCase.js new file mode 100644 index 0000000..d7390de --- /dev/null +++ b/node_modules/lodash/camelCase.js @@ -0,0 +1,29 @@ +var capitalize = require('./capitalize'), + createCompounder = require('./_createCompounder'); + +/** + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar--'); + * // => 'fooBar' + * + * _.camelCase('__FOO_BAR__'); + * // => 'fooBar' + */ +var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? capitalize(word) : word); +}); + +module.exports = camelCase; diff --git a/node_modules/lodash/capitalize.js b/node_modules/lodash/capitalize.js new file mode 100644 index 0000000..3e1600e --- /dev/null +++ b/node_modules/lodash/capitalize.js @@ -0,0 +1,23 @@ +var toString = require('./toString'), + upperFirst = require('./upperFirst'); + +/** + * Converts the first character of `string` to upper case and the remaining + * to lower case. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('FRED'); + * // => 'Fred' + */ +function capitalize(string) { + return upperFirst(toString(string).toLowerCase()); +} + +module.exports = capitalize; diff --git a/node_modules/lodash/castArray.js b/node_modules/lodash/castArray.js new file mode 100644 index 0000000..e470bdb --- /dev/null +++ b/node_modules/lodash/castArray.js @@ -0,0 +1,44 @@ +var isArray = require('./isArray'); + +/** + * Casts `value` as an array if it's not one. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Lang + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast array. + * @example + * + * _.castArray(1); + * // => [1] + * + * _.castArray({ 'a': 1 }); + * // => [{ 'a': 1 }] + * + * _.castArray('abc'); + * // => ['abc'] + * + * _.castArray(null); + * // => [null] + * + * _.castArray(undefined); + * // => [undefined] + * + * _.castArray(); + * // => [] + * + * var array = [1, 2, 3]; + * console.log(_.castArray(array) === array); + * // => true + */ +function castArray() { + if (!arguments.length) { + return []; + } + var value = arguments[0]; + return isArray(value) ? value : [value]; +} + +module.exports = castArray; diff --git a/node_modules/lodash/ceil.js b/node_modules/lodash/ceil.js new file mode 100644 index 0000000..56c8722 --- /dev/null +++ b/node_modules/lodash/ceil.js @@ -0,0 +1,26 @@ +var createRound = require('./_createRound'); + +/** + * Computes `number` rounded up to `precision`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Math + * @param {number} number The number to round up. + * @param {number} [precision=0] The precision to round up to. + * @returns {number} Returns the rounded up number. + * @example + * + * _.ceil(4.006); + * // => 5 + * + * _.ceil(6.004, 2); + * // => 6.01 + * + * _.ceil(6040, -2); + * // => 6100 + */ +var ceil = createRound('ceil'); + +module.exports = ceil; diff --git a/node_modules/lodash/chain.js b/node_modules/lodash/chain.js new file mode 100644 index 0000000..f6cd647 --- /dev/null +++ b/node_modules/lodash/chain.js @@ -0,0 +1,38 @@ +var lodash = require('./wrapperLodash'); + +/** + * Creates a `lodash` wrapper instance that wraps `value` with explicit method + * chain sequences enabled. The result of such sequences must be unwrapped + * with `_#value`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Seq + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _ + * .chain(users) + * .sortBy('age') + * .map(function(o) { + * return o.user + ' is ' + o.age; + * }) + * .head() + * .value(); + * // => 'pebbles is 1' + */ +function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; +} + +module.exports = chain; diff --git a/node_modules/lodash/chunk.js b/node_modules/lodash/chunk.js new file mode 100644 index 0000000..5b562fe --- /dev/null +++ b/node_modules/lodash/chunk.js @@ -0,0 +1,50 @@ +var baseSlice = require('./_baseSlice'), + isIterateeCall = require('./_isIterateeCall'), + toInteger = require('./toInteger'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeCeil = Math.ceil, + nativeMax = Math.max; + +/** + * Creates an array of elements split into groups the length of `size`. + * If `array` can't be split evenly, the final chunk will be the remaining + * elements. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the new array of chunks. + * @example + * + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] + */ +function chunk(array, size, guard) { + if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { + size = 1; + } else { + size = nativeMax(toInteger(size), 0); + } + var length = array == null ? 0 : array.length; + if (!length || size < 1) { + return []; + } + var index = 0, + resIndex = 0, + result = Array(nativeCeil(length / size)); + + while (index < length) { + result[resIndex++] = baseSlice(array, index, (index += size)); + } + return result; +} + +module.exports = chunk; diff --git a/node_modules/lodash/clamp.js b/node_modules/lodash/clamp.js new file mode 100644 index 0000000..91a72c9 --- /dev/null +++ b/node_modules/lodash/clamp.js @@ -0,0 +1,39 @@ +var baseClamp = require('./_baseClamp'), + toNumber = require('./toNumber'); + +/** + * Clamps `number` within the inclusive `lower` and `upper` bounds. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Number + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + * @example + * + * _.clamp(-10, -5, 5); + * // => -5 + * + * _.clamp(10, -5, 5); + * // => 5 + */ +function clamp(number, lower, upper) { + if (upper === undefined) { + upper = lower; + lower = undefined; + } + if (upper !== undefined) { + upper = toNumber(upper); + upper = upper === upper ? upper : 0; + } + if (lower !== undefined) { + lower = toNumber(lower); + lower = lower === lower ? lower : 0; + } + return baseClamp(toNumber(number), lower, upper); +} + +module.exports = clamp; diff --git a/node_modules/lodash/clone.js b/node_modules/lodash/clone.js new file mode 100644 index 0000000..dd439d6 --- /dev/null +++ b/node_modules/lodash/clone.js @@ -0,0 +1,36 @@ +var baseClone = require('./_baseClone'); + +/** Used to compose bitmasks for cloning. */ +var CLONE_SYMBOLS_FLAG = 4; + +/** + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true + */ +function clone(value) { + return baseClone(value, CLONE_SYMBOLS_FLAG); +} + +module.exports = clone; diff --git a/node_modules/lodash/cloneDeep.js b/node_modules/lodash/cloneDeep.js new file mode 100644 index 0000000..4425fbe --- /dev/null +++ b/node_modules/lodash/cloneDeep.js @@ -0,0 +1,29 @@ +var baseClone = require('./_baseClone'); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_SYMBOLS_FLAG = 4; + +/** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ +function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); +} + +module.exports = cloneDeep; diff --git a/node_modules/lodash/cloneDeepWith.js b/node_modules/lodash/cloneDeepWith.js new file mode 100644 index 0000000..fd9c6c0 --- /dev/null +++ b/node_modules/lodash/cloneDeepWith.js @@ -0,0 +1,40 @@ +var baseClone = require('./_baseClone'); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_SYMBOLS_FLAG = 4; + +/** + * This method is like `_.cloneWith` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the deep cloned value. + * @see _.cloneWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(true); + * } + * } + * + * var el = _.cloneDeepWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 20 + */ +function cloneDeepWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); +} + +module.exports = cloneDeepWith; diff --git a/node_modules/lodash/cloneWith.js b/node_modules/lodash/cloneWith.js new file mode 100644 index 0000000..d2f4e75 --- /dev/null +++ b/node_modules/lodash/cloneWith.js @@ -0,0 +1,42 @@ +var baseClone = require('./_baseClone'); + +/** Used to compose bitmasks for cloning. */ +var CLONE_SYMBOLS_FLAG = 4; + +/** + * This method is like `_.clone` except that it accepts `customizer` which + * is invoked to produce the cloned value. If `customizer` returns `undefined`, + * cloning is handled by the method instead. The `customizer` is invoked with + * up to four arguments; (value [, index|key, object, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the cloned value. + * @see _.cloneDeepWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(false); + * } + * } + * + * var el = _.cloneWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 0 + */ +function cloneWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); +} + +module.exports = cloneWith; diff --git a/node_modules/lodash/collection.js b/node_modules/lodash/collection.js new file mode 100644 index 0000000..77fe837 --- /dev/null +++ b/node_modules/lodash/collection.js @@ -0,0 +1,30 @@ +module.exports = { + 'countBy': require('./countBy'), + 'each': require('./each'), + 'eachRight': require('./eachRight'), + 'every': require('./every'), + 'filter': require('./filter'), + 'find': require('./find'), + 'findLast': require('./findLast'), + 'flatMap': require('./flatMap'), + 'flatMapDeep': require('./flatMapDeep'), + 'flatMapDepth': require('./flatMapDepth'), + 'forEach': require('./forEach'), + 'forEachRight': require('./forEachRight'), + 'groupBy': require('./groupBy'), + 'includes': require('./includes'), + 'invokeMap': require('./invokeMap'), + 'keyBy': require('./keyBy'), + 'map': require('./map'), + 'orderBy': require('./orderBy'), + 'partition': require('./partition'), + 'reduce': require('./reduce'), + 'reduceRight': require('./reduceRight'), + 'reject': require('./reject'), + 'sample': require('./sample'), + 'sampleSize': require('./sampleSize'), + 'shuffle': require('./shuffle'), + 'size': require('./size'), + 'some': require('./some'), + 'sortBy': require('./sortBy') +}; diff --git a/node_modules/lodash/commit.js b/node_modules/lodash/commit.js new file mode 100644 index 0000000..fe4db71 --- /dev/null +++ b/node_modules/lodash/commit.js @@ -0,0 +1,33 @@ +var LodashWrapper = require('./_LodashWrapper'); + +/** + * Executes the chain sequence and returns the wrapped result. + * + * @name commit + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapped = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapped = wrapped.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapped.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] + */ +function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); +} + +module.exports = wrapperCommit; diff --git a/node_modules/lodash/compact.js b/node_modules/lodash/compact.js new file mode 100644 index 0000000..031fab4 --- /dev/null +++ b/node_modules/lodash/compact.js @@ -0,0 +1,31 @@ +/** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ +function compact(array) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value) { + result[resIndex++] = value; + } + } + return result; +} + +module.exports = compact; diff --git a/node_modules/lodash/concat.js b/node_modules/lodash/concat.js new file mode 100644 index 0000000..1da48a4 --- /dev/null +++ b/node_modules/lodash/concat.js @@ -0,0 +1,43 @@ +var arrayPush = require('./_arrayPush'), + baseFlatten = require('./_baseFlatten'), + copyArray = require('./_copyArray'), + isArray = require('./isArray'); + +/** + * Creates a new array concatenating `array` with any additional arrays + * and/or values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to concatenate. + * @param {...*} [values] The values to concatenate. + * @returns {Array} Returns the new concatenated array. + * @example + * + * var array = [1]; + * var other = _.concat(array, 2, [3], [[4]]); + * + * console.log(other); + * // => [1, 2, 3, [4]] + * + * console.log(array); + * // => [1] + */ +function concat() { + var length = arguments.length; + if (!length) { + return []; + } + var args = Array(length - 1), + array = arguments[0], + index = length; + + while (index--) { + args[index - 1] = arguments[index]; + } + return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); +} + +module.exports = concat; diff --git a/node_modules/lodash/cond.js b/node_modules/lodash/cond.js new file mode 100644 index 0000000..6455598 --- /dev/null +++ b/node_modules/lodash/cond.js @@ -0,0 +1,60 @@ +var apply = require('./_apply'), + arrayMap = require('./_arrayMap'), + baseIteratee = require('./_baseIteratee'), + baseRest = require('./_baseRest'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that iterates over `pairs` and invokes the corresponding + * function of the first predicate to return truthy. The predicate-function + * pairs are invoked with the `this` binding and arguments of the created + * function. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {Array} pairs The predicate-function pairs. + * @returns {Function} Returns the new composite function. + * @example + * + * var func = _.cond([ + * [_.matches({ 'a': 1 }), _.constant('matches A')], + * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')], + * [_.stubTrue, _.constant('no match')] + * ]); + * + * func({ 'a': 1, 'b': 2 }); + * // => 'matches A' + * + * func({ 'a': 0, 'b': 1 }); + * // => 'matches B' + * + * func({ 'a': '1', 'b': '2' }); + * // => 'no match' + */ +function cond(pairs) { + var length = pairs == null ? 0 : pairs.length, + toIteratee = baseIteratee; + + pairs = !length ? [] : arrayMap(pairs, function(pair) { + if (typeof pair[1] != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return [toIteratee(pair[0]), pair[1]]; + }); + + return baseRest(function(args) { + var index = -1; + while (++index < length) { + var pair = pairs[index]; + if (apply(pair[0], this, args)) { + return apply(pair[1], this, args); + } + } + }); +} + +module.exports = cond; diff --git a/node_modules/lodash/conforms.js b/node_modules/lodash/conforms.js new file mode 100644 index 0000000..5501a94 --- /dev/null +++ b/node_modules/lodash/conforms.js @@ -0,0 +1,35 @@ +var baseClone = require('./_baseClone'), + baseConforms = require('./_baseConforms'); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1; + +/** + * Creates a function that invokes the predicate properties of `source` with + * the corresponding property values of a given object, returning `true` if + * all predicates return truthy, else `false`. + * + * **Note:** The created function is equivalent to `_.conformsTo` with + * `source` partially applied. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + * @example + * + * var objects = [ + * { 'a': 2, 'b': 1 }, + * { 'a': 1, 'b': 2 } + * ]; + * + * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } })); + * // => [{ 'a': 1, 'b': 2 }] + */ +function conforms(source) { + return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); +} + +module.exports = conforms; diff --git a/node_modules/lodash/conformsTo.js b/node_modules/lodash/conformsTo.js new file mode 100644 index 0000000..b8a93eb --- /dev/null +++ b/node_modules/lodash/conformsTo.js @@ -0,0 +1,32 @@ +var baseConformsTo = require('./_baseConformsTo'), + keys = require('./keys'); + +/** + * Checks if `object` conforms to `source` by invoking the predicate + * properties of `source` with the corresponding property values of `object`. + * + * **Note:** This method is equivalent to `_.conforms` when `source` is + * partially applied. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); + * // => true + * + * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); + * // => false + */ +function conformsTo(object, source) { + return source == null || baseConformsTo(object, source, keys(source)); +} + +module.exports = conformsTo; diff --git a/node_modules/lodash/constant.js b/node_modules/lodash/constant.js new file mode 100644 index 0000000..655ece3 --- /dev/null +++ b/node_modules/lodash/constant.js @@ -0,0 +1,26 @@ +/** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ +function constant(value) { + return function() { + return value; + }; +} + +module.exports = constant; diff --git a/node_modules/lodash/core.js b/node_modules/lodash/core.js new file mode 100644 index 0000000..be1d567 --- /dev/null +++ b/node_modules/lodash/core.js @@ -0,0 +1,3877 @@ +/** + * @license + * Lodash (Custom Build) + * Build: `lodash core -o ./dist/lodash.core.js` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +;(function() { + + /** Used as a safe reference for `undefined` in pre-ES5 environments. */ + var undefined; + + /** Used as the semantic version number. */ + var VERSION = '4.17.21'; + + /** Error message constants. */ + var FUNC_ERROR_TEXT = 'Expected a function'; + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + /** Used to compose bitmasks for function metadata. */ + var WRAP_BIND_FLAG = 1, + WRAP_PARTIAL_FLAG = 32; + + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + asyncTag = '[object AsyncFunction]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + numberTag = '[object Number]', + objectTag = '[object Object]', + proxyTag = '[object Proxy]', + regexpTag = '[object RegExp]', + stringTag = '[object String]'; + + /** Used to match HTML entities and HTML characters. */ + var reUnescapedHtml = /[&<>"']/g, + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; + + /** Used to map characters to HTML entities. */ + var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); + + /** Detect free variable `exports`. */ + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + + /*--------------------------------------------------------------------------*/ + + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + array.push.apply(array, values); + return array; + } + + /** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.propertyOf` without support for deep paths. + * + * @private + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyOf(object) { + return function(key) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ + function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ + function baseValues(object, props) { + return baseMap(props, function(key) { + return object[key]; + }); + } + + /** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + var escapeHtmlChar = basePropertyOf(htmlEscapes); + + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + + /*--------------------------------------------------------------------------*/ + + /** Used for built-in method references. */ + var arrayProto = Array.prototype, + objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to generate unique IDs. */ + var idCounter = 0; + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString = objectProto.toString; + + /** Used to restore the original `_` reference in `_.noConflict`. */ + var oldDash = root._; + + /** Built-in value references. */ + var objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeIsFinite = root.isFinite, + nativeKeys = overArg(Object.keys, Object), + nativeMax = Math.max; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` object which wraps `value` to enable implicit method + * chain sequences. Methods that operate on and return arrays, collections, + * and functions can be chained together. Methods that retrieve a single value + * or may return a primitive value will automatically end the chain sequence + * and return the unwrapped value. Otherwise, the value must be unwrapped + * with `_#value`. + * + * Explicit chain sequences, which must be unwrapped with `_#value`, may be + * enabled using `_.chain`. + * + * The execution of chained methods is lazy, that is, it's deferred until + * `_#value` is implicitly or explicitly called. + * + * Lazy evaluation allows several methods to support shortcut fusion. + * Shortcut fusion is an optimization to merge iteratee calls; this avoids + * the creation of intermediate arrays and can greatly reduce the number of + * iteratee executions. Sections of a chain sequence qualify for shortcut + * fusion if the section is applied to an array and iteratees accept only + * one argument. The heuristic for whether a section qualifies for shortcut + * fusion is subject to change. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, + * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, + * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, + * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, + * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, + * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, + * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, + * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, + * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, + * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, + * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, + * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, + * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, + * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, + * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, + * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, + * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, + * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, + * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, + * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, + * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, + * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, + * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, + * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, + * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, + * `zipObject`, `zipObjectDeep`, and `zipWith` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, + * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, + * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, + * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, + * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, + * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, + * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, + * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, + * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, + * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, + * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, + * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, + * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, + * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, + * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, + * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, + * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, + * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, + * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, + * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, + * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, + * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, + * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, + * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, + * `upperFirst`, `value`, and `words` + * + * @name _ + * @constructor + * @category Seq + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2, 3]); + * + * // Returns an unwrapped value. + * wrapped.reduce(_.add); + * // => 6 + * + * // Returns a wrapped value. + * var squares = wrapped.map(square); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */ + function lodash(value) { + return value instanceof LodashWrapper + ? value + : new LodashWrapper(value); + } + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; + }()); + + /** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable explicit method chain sequences. + */ + function LodashWrapper(value, chainAll) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__chain__ = !!chainAll; + } + + LodashWrapper.prototype = baseCreate(lodash.prototype); + LodashWrapper.prototype.constructor = LodashWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function baseAssignValue(object, key, value) { + object[key] = value; + } + + /** + * The base implementation of `_.delay` and `_.defer` which accepts `args` + * to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Array} args The arguments to provide to `func`. + * @returns {number|Object} Returns the timer id or timeout object. + */ + function baseDelay(func, wait, args) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return setTimeout(function() { func.apply(undefined, args); }, wait); + } + + /** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEach = createBaseEach(baseForOwn); + + /** + * The base implementation of `_.every` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ + function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; + } + + /** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ + function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined + ? (current === current && !false) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; + } + + /** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; + } + + /** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ + function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; + } + + /** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseFor = createBaseFor(); + + /** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); + } + + /** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from `props`. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the function names. + */ + function baseFunctions(object, props) { + return baseFilter(props, function(key) { + return isFunction(object[key]); + }); + } + + /** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + return objectToString(value); + } + + /** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ + function baseGt(value, other) { + return value > other; + } + + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + var baseIsArguments = noop; + + /** + * The base implementation of `_.isDate` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + */ + function baseIsDate(value) { + return isObjectLike(value) && baseGetTag(value) == dateTag; + } + + /** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } + + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : baseGetTag(object), + othTag = othIsArr ? arrayTag : baseGetTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + stack || (stack = []); + var objStack = find(stack, function(entry) { + return entry[0] == object; + }); + var othStack = find(stack, function(entry) { + return entry[0] == other; + }); + if (objStack && othStack) { + return objStack[1] == other; + } + stack.push([object, other]); + stack.push([other, object]); + if (isSameTag && !objIsObj) { + var result = (objIsArr) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + stack.pop(); + return result; + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + var result = equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + stack.pop(); + return result; + } + } + if (!isSameTag) { + return false; + } + var result = equalObjects(object, other, bitmask, customizer, equalFunc, stack); + stack.pop(); + return result; + } + + /** + * The base implementation of `_.isRegExp` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + */ + function baseIsRegExp(value) { + return isObjectLike(value) && baseGetTag(value) == regexpTag; + } + + /** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ + function baseIteratee(func) { + if (typeof func == 'function') { + return func; + } + if (func == null) { + return identity; + } + return (typeof func == 'object' ? baseMatches : baseProperty)(func); + } + + /** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ + function baseLt(value, other) { + return value < other; + } + + /** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; + } + + /** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatches(source) { + var props = nativeKeys(source); + return function(object) { + var length = props.length; + if (object == null) { + return !length; + } + object = Object(object); + while (length--) { + var key = props[length]; + if (!(key in object && + baseIsEqual(source[key], object[key], COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG) + )) { + return false; + } + } + return true; + }; + } + + /** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ + function basePick(object, props) { + object = Object(object); + return reduce(props, function(result, key) { + if (key in object) { + result[key] = object[key]; + } + return result; + }, {}); + } + + /** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); + } + + /** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function copyArray(source) { + return baseSlice(source, 0, source.length); + } + + /** + * The base implementation of `_.some` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; + } + + /** + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. + * + * @private + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to perform to resolve the unwrapped value. + * @returns {*} Returns the resolved value. + */ + function baseWrapperValue(value, actions) { + var result = value; + return reduce(actions, function(result, action) { + return action.func.apply(action.thisArg, arrayPush([result], action.args)); + }, result); + } + + /** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ + function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = false; + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = false; + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; + } + + /** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; + } + + /** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); + } + + /** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } + + /** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + + /** + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * + * @private + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. + */ + function createCtor(Ctor) { + return function() { + // Use a `switch` statement to work with class constructors. See + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // for more details. + var args = arguments; + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, args); + + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; + } + + /** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. + */ + function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike(collection)) { + var iteratee = baseIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; + } + + /** + * Creates a function that wraps `func` to invoke it with the `this` binding + * of `thisArg` and `partials` prepended to the arguments it receives. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to + * the new function. + * @returns {Function} Returns the new wrapped function. + */ + function createPartial(func, bitmask, thisArg, partials) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(leftLength + argsLength), + fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + return fn.apply(isBind ? thisArg : this, args); + } + return wrapper; + } + + /** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? [] : undefined; + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + var compared; + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!baseSome(other, function(othValue, othIndex) { + if (!indexOf(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + return result; + } + + /** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + } + return false; + } + + /** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = keys(object), + objLength = objProps.length, + othProps = keys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + var compared; + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + return result; + } + + /** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + function flatRest(func) { + return setToString(overRest(func, undefined, flatten), func + ''); + } + + /** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ + function isFlattenable(value) { + return isArray(value) || isArguments(value); + } + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); + } + + /** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; + } + + /** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } + + /** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString(value) { + return nativeObjectToString.call(value); + } + + /** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ + function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return func.apply(this, otherArgs); + }; + } + + /** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var setToString = identity; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ + function compact(array) { + return baseFilter(array, Boolean); + } + + /** + * Creates a new array concatenating `array` with any additional arrays + * and/or values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to concatenate. + * @param {...*} [values] The values to concatenate. + * @returns {Array} Returns the new concatenated array. + * @example + * + * var array = [1]; + * var other = _.concat(array, 2, [3], [[4]]); + * + * console.log(other); + * // => [1, 2, 3, [4]] + * + * console.log(array); + * // => [1] + */ + function concat() { + var length = arguments.length; + if (!length) { + return []; + } + var args = Array(length - 1), + array = arguments[0], + index = length; + + while (index--) { + args[index - 1] = arguments[index]; + } + return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); + } + + /** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ + function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, baseIteratee(predicate, 3), index); + } + + /** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ + function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; + } + + /** + * Recursively flattens `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, [3, [4]], 5]]); + * // => [1, 2, 3, 4, 5] + */ + function flattenDeep(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, INFINITY) : []; + } + + /** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias first + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.head([1, 2, 3]); + * // => 1 + * + * _.head([]); + * // => undefined + */ + function head(array) { + return (array && array.length) ? array[0] : undefined; + } + + /** + * Gets the index at which the first occurrence of `value` is found in `array` + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it's used as the + * offset from the end of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // Search from the `fromIndex`. + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + */ + function indexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (typeof fromIndex == 'number') { + fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex; + } else { + fromIndex = 0; + } + var index = (fromIndex || 0) - 1, + isReflexive = value === value; + + while (++index < length) { + var other = array[index]; + if ((isReflexive ? other === value : other !== other)) { + return index; + } + } + return -1; + } + + /** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ + function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; + } + + /** + * Creates a slice of `array` from `start` up to, but not including, `end`. + * + * **Note:** This method is used instead of + * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are + * returned. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function slice(array, start, end) { + var length = array == null ? 0 : array.length; + start = start == null ? 0 : +start; + end = end === undefined ? length : +end; + return length ? baseSlice(array, start, end) : []; + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` wrapper instance that wraps `value` with explicit method + * chain sequences enabled. The result of such sequences must be unwrapped + * with `_#value`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Seq + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _ + * .chain(users) + * .sortBy('age') + * .map(function(o) { + * return o.user + ' is ' + o.age; + * }) + * .head() + * .value(); + * // => 'pebbles is 1' + */ + function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; + } + + /** + * This method invokes `interceptor` and returns `value`. The interceptor + * is invoked with one argument; (value). The purpose of this method is to + * "tap into" a method chain sequence in order to modify intermediate results. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * // Mutate input array. + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] + */ + function tap(value, interceptor) { + interceptor(value); + return value; + } + + /** + * This method is like `_.tap` except that it returns the result of `interceptor`. + * The purpose of this method is to "pass thru" values replacing intermediate + * results in a method chain sequence. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _(' abc ') + * .chain() + * .trim() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => ['abc'] + */ + function thru(value, interceptor) { + return interceptor(value); + } + + /** + * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. + * + * @name chain + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // A sequence without explicit chaining. + * _(users).head(); + * // => { 'user': 'barney', 'age': 36 } + * + * // A sequence with explicit chaining. + * _(users) + * .chain() + * .head() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */ + function wrapperChain() { + return chain(this); + } + + /** + * Executes the chain sequence to resolve the unwrapped value. + * + * @name value + * @memberOf _ + * @since 0.1.0 + * @alias toJSON, valueOf + * @category Seq + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] + */ + function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); + } + + /*------------------------------------------------------------------------*/ + + /** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * Iteration is stopped once `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.every(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.every(users, 'active'); + * // => false + */ + function every(collection, predicate, guard) { + predicate = guard ? undefined : predicate; + return baseEvery(collection, baseIteratee(predicate)); + } + + /** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] + */ + function filter(collection, predicate) { + return baseFilter(collection, baseIteratee(predicate)); + } + + /** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ + var find = createFind(findIndex); + + /** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forEach(collection, iteratee) { + return baseEach(collection, baseIteratee(iteratee)); + } + + /** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ + function map(collection, iteratee) { + return baseMap(collection, baseIteratee(iteratee)); + } + + /** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ + function reduce(collection, iteratee, accumulator) { + return baseReduce(collection, baseIteratee(iteratee), accumulator, arguments.length < 3, baseEach); + } + + /** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ + function size(collection) { + if (collection == null) { + return 0; + } + collection = isArrayLike(collection) ? collection : nativeKeys(collection); + return collection.length; + } + + /** + * Checks if `predicate` returns truthy for **any** element of `collection`. + * Iteration is stopped once `predicate` returns truthy. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.some(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.some(users, 'active'); + * // => true + */ + function some(collection, predicate, guard) { + predicate = guard ? undefined : predicate; + return baseSome(collection, baseIteratee(predicate)); + } + + /** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] + */ + function sortBy(collection, iteratee) { + var index = 0; + iteratee = baseIteratee(iteratee); + + return baseMap(baseMap(collection, function(value, key, collection) { + return { 'value': value, 'index': index++, 'criteria': iteratee(value, key, collection) }; + }).sort(function(object, other) { + return compareAscending(object.criteria, other.criteria) || (object.index - other.index); + }), baseProperty('value')); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it's called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery(element).on('click', _.before(5, addContactToList)); + * // => Allows adding up to 4 contacts to the list. + */ + function before(n, func) { + var result; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = undefined; + } + return result; + }; + } + + /** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and `partials` prepended to the arguments it receives. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" + * property of bound functions. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * function greet(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // Bound with placeholders. + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */ + var bind = baseRest(function(func, thisArg, partials) { + return createPartial(func, WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG, thisArg, partials); + }); + + /** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // => Logs 'deferred' after one millisecond. + */ + var defer = baseRest(function(func, args) { + return baseDelay(func, 1, args); + }); + + /** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => Logs 'later' after one second. + */ + var delay = baseRest(function(func, wait, args) { + return baseDelay(func, toNumber(wait) || 0, args); + }); + + /** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new negated function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ + function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function() { + var args = arguments; + return !predicate.apply(this, args); + }; + } + + /** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first invocation. The `func` is + * invoked with the `this` binding and arguments of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // => `createApplication` is invoked once + */ + function once(func) { + return before(2, func); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true + */ + function clone(value) { + if (!isObject(value)) { + return value; + } + return isArray(value) ? copyArray(value) : copyObject(value, nativeKeys(value)); + } + + /** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + function eq(value, other) { + return value === other || (value !== value && other !== other); + } + + /** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); + }; + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + + /** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + /** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ + function isBoolean(value) { + return value === true || value === false || + (isObjectLike(value) && baseGetTag(value) == boolTag); + } + + /** + * Checks if `value` is classified as a `Date` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + * @example + * + * _.isDate(new Date); + * // => true + * + * _.isDate('Mon April 23 2012'); + * // => false + */ + var isDate = baseIsDate; + + /** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ + function isEmpty(value) { + if (isArrayLike(value) && + (isArray(value) || isString(value) || + isFunction(value.splice) || isArguments(value))) { + return !value.length; + } + return !nativeKeys(value).length; + } + + /** + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false + */ + function isEqual(value, other) { + return baseIsEqual(value, other); + } + + /** + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on + * [`Number.isFinite`](https://mdn.io/Number/isFinite). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @example + * + * _.isFinite(3); + * // => true + * + * _.isFinite(Number.MIN_VALUE); + * // => true + * + * _.isFinite(Infinity); + * // => false + * + * _.isFinite('3'); + * // => false + */ + function isFinite(value) { + return typeof value == 'number' && nativeIsFinite(value); + } + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ + function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); + } + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return value != null && typeof value == 'object'; + } + + /** + * Checks if `value` is `NaN`. + * + * **Note:** This method is based on + * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as + * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for + * `undefined` and other non-number values. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ + function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some + // ActiveX objects in IE. + return isNumber(value) && value != +value; + } + + /** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ + function isNull(value) { + return value === null; + } + + /** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are + * classified as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a number, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false + */ + function isNumber(value) { + return typeof value == 'number' || + (isObjectLike(value) && baseGetTag(value) == numberTag); + } + + /** + * Checks if `value` is classified as a `RegExp` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + * @example + * + * _.isRegExp(/abc/); + * // => true + * + * _.isRegExp('/abc/'); + * // => false + */ + var isRegExp = baseIsRegExp; + + /** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ + function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); + } + + /** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ + function isUndefined(value) { + return value === undefined; + } + + /** + * Converts `value` to an array. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Array} Returns the converted array. + * @example + * + * _.toArray({ 'a': 1, 'b': 2 }); + * // => [1, 2] + * + * _.toArray('abc'); + * // => ['a', 'b', 'c'] + * + * _.toArray(1); + * // => [] + * + * _.toArray(null); + * // => [] + */ + function toArray(value) { + if (!isArrayLike(value)) { + return values(value); + } + return value.length ? copyArray(value) : []; + } + + /** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ + var toInteger = Number; + + /** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ + var toNumber = Number; + + /** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ + function toString(value) { + if (typeof value == 'string') { + return value; + } + return value == null ? '' : (value + ''); + } + + /*------------------------------------------------------------------------*/ + + /** + * Assigns own enumerable string keyed properties of source objects to the + * destination object. Source objects are applied from left to right. + * Subsequent sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object` and is loosely based on + * [`Object.assign`](https://mdn.io/Object/assign). + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assignIn + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assign({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'c': 3 } + */ + var assign = createAssigner(function(object, source) { + copyObject(source, nativeKeys(source), object); + }); + + /** + * This method is like `_.assign` except that it iterates over own and + * inherited source properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assign + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assignIn({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } + */ + var assignIn = createAssigner(function(object, source) { + copyObject(source, nativeKeysIn(source), object); + }); + + /** + * Creates an object that inherits from the `prototype` object. If a + * `properties` object is given, its own enumerable string keyed properties + * are assigned to the created object. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @returns {Object} Returns the new object. + * @example + * + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true + */ + function create(prototype, properties) { + var result = baseCreate(prototype); + return properties == null ? result : assign(result, properties); + } + + /** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var defaults = baseRest(function(object, sources) { + object = Object(object); + + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + + while (++index < length) { + var source = sources[index]; + var props = keysIn(source); + var propsIndex = -1; + var propsLength = props.length; + + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + + if (value === undefined || + (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { + object[key] = source[key]; + } + } + } + + return object; + }); + + /** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ + function has(object, path) { + return object != null && hasOwnProperty.call(object, path); + } + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + var keys = nativeKeys; + + /** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ + var keysIn = nativeKeysIn; + + /** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */ + var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); + }); + + /** + * This method is like `_.get` except that if the resolved value is a + * function it's invoked with the `this` binding of its parent object and + * its result is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to resolve. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; + * + * _.result(object, 'a[0].b.c1'); + * // => 3 + * + * _.result(object, 'a[0].b.c2'); + * // => 4 + * + * _.result(object, 'a[0].b.c3', 'default'); + * // => 'default' + * + * _.result(object, 'a[0].b.c3', _.constant('default')); + * // => 'default' + */ + function result(object, path, defaultValue) { + var value = object == null ? undefined : object[path]; + if (value === undefined) { + value = defaultValue; + } + return isFunction(value) ? value.call(object) : value; + } + + /** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ + function values(object) { + return object == null ? [] : baseValues(object, keys(object)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Converts the characters "&", "<", ">", '"', and "'" in `string` to their + * corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional + * characters use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't need escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. See + * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * When working with HTML you should always + * [quote attribute values](http://wonko.com/post/html-escaping) to reduce + * XSS vectors. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function escape(string) { + string = toString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; + } + + /*------------------------------------------------------------------------*/ + + /** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ + function identity(value) { + return value; + } + + /** + * Creates a function that invokes `func` with the arguments of the created + * function. If `func` is a property name, the created function returns the + * property value for a given element. If `func` is an array or object, the + * created function returns `true` for elements that contain the equivalent + * source properties, otherwise it returns `false`. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Util + * @param {*} [func=_.identity] The value to convert to a callback. + * @returns {Function} Returns the callback. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); + * // => [{ 'user': 'barney', 'age': 36, 'active': true }] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, _.iteratee(['user', 'fred'])); + * // => [{ 'user': 'fred', 'age': 40 }] + * + * // The `_.property` iteratee shorthand. + * _.map(users, _.iteratee('user')); + * // => ['barney', 'fred'] + * + * // Create custom iteratee shorthands. + * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) { + * return !_.isRegExp(func) ? iteratee(func) : function(string) { + * return func.test(string); + * }; + * }); + * + * _.filter(['abc', 'def'], /ef/); + * // => ['def'] + */ + var iteratee = baseIteratee; + + /** + * Creates a function that performs a partial deep comparison between a given + * object and `source`, returning `true` if the given object has equivalent + * property values, else `false`. + * + * **Note:** The created function is equivalent to `_.isMatch` with `source` + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * **Note:** Multiple values can be checked by combining several matchers + * using `_.overSome` + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + * @example + * + * var objects = [ + * { 'a': 1, 'b': 2, 'c': 3 }, + * { 'a': 4, 'b': 5, 'c': 6 } + * ]; + * + * _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); + * // => [{ 'a': 4, 'b': 5, 'c': 6 }] + * + * // Checking for several possible values + * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })])); + * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] + */ + function matches(source) { + return baseMatches(assign({}, source)); + } + + /** + * Adds all own enumerable string keyed function properties of a source + * object to the destination object. If `object` is a function, then methods + * are added to its prototype as well. + * + * **Note:** Use `_.runInContext` to create a pristine `lodash` function to + * avoid conflicts caused by modifying the original. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {Function|Object} [object=lodash] The destination object. + * @param {Object} source The object of functions to add. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.chain=true] Specify whether mixins are chainable. + * @returns {Function|Object} Returns `object`. + * @example + * + * function vowels(string) { + * return _.filter(string, function(v) { + * return /[aeiou]/i.test(v); + * }); + * } + * + * _.mixin({ 'vowels': vowels }); + * _.vowels('fred'); + * // => ['e'] + * + * _('fred').vowels().value(); + * // => ['e'] + * + * _.mixin({ 'vowels': vowels }, { 'chain': false }); + * _('fred').vowels(); + * // => ['e'] + */ + function mixin(object, source, options) { + var props = keys(source), + methodNames = baseFunctions(source, props); + + if (options == null && + !(isObject(source) && (methodNames.length || !props.length))) { + options = source; + source = object; + object = this; + methodNames = baseFunctions(source, keys(source)); + } + var chain = !(isObject(options) && 'chain' in options) || !!options.chain, + isFunc = isFunction(object); + + baseEach(methodNames, function(methodName) { + var func = source[methodName]; + object[methodName] = func; + if (isFunc) { + object.prototype[methodName] = function() { + var chainAll = this.__chain__; + if (chain || chainAll) { + var result = object(this.__wrapped__), + actions = result.__actions__ = copyArray(this.__actions__); + + actions.push({ 'func': func, 'args': arguments, 'thisArg': object }); + result.__chain__ = chainAll; + return result; + } + return func.apply(object, arrayPush([this.value()], arguments)); + }; + } + }); + + return object; + } + + /** + * Reverts the `_` variable to its previous value and returns a reference to + * the `lodash` function. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @returns {Function} Returns the `lodash` function. + * @example + * + * var lodash = _.noConflict(); + */ + function noConflict() { + if (root._ === this) { + root._ = oldDash; + } + return this; + } + + /** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ + function noop() { + // No operation performed. + } + + /** + * Generates a unique ID. If `prefix` is given, the ID is appended to it. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {string} [prefix=''] The value to prefix the ID with. + * @returns {string} Returns the unique ID. + * @example + * + * _.uniqueId('contact_'); + * // => 'contact_104' + * + * _.uniqueId(); + * // => '105' + */ + function uniqueId(prefix) { + var id = ++idCounter; + return toString(prefix) + id; + } + + /*------------------------------------------------------------------------*/ + + /** + * Computes the maximum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the maximum value. + * @example + * + * _.max([4, 2, 8, 6]); + * // => 8 + * + * _.max([]); + * // => undefined + */ + function max(array) { + return (array && array.length) + ? baseExtremum(array, identity, baseGt) + : undefined; + } + + /** + * Computes the minimum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the minimum value. + * @example + * + * _.min([4, 2, 8, 6]); + * // => 2 + * + * _.min([]); + * // => undefined + */ + function min(array) { + return (array && array.length) + ? baseExtremum(array, identity, baseLt) + : undefined; + } + + /*------------------------------------------------------------------------*/ + + // Add methods that return wrapped values in chain sequences. + lodash.assignIn = assignIn; + lodash.before = before; + lodash.bind = bind; + lodash.chain = chain; + lodash.compact = compact; + lodash.concat = concat; + lodash.create = create; + lodash.defaults = defaults; + lodash.defer = defer; + lodash.delay = delay; + lodash.filter = filter; + lodash.flatten = flatten; + lodash.flattenDeep = flattenDeep; + lodash.iteratee = iteratee; + lodash.keys = keys; + lodash.map = map; + lodash.matches = matches; + lodash.mixin = mixin; + lodash.negate = negate; + lodash.once = once; + lodash.pick = pick; + lodash.slice = slice; + lodash.sortBy = sortBy; + lodash.tap = tap; + lodash.thru = thru; + lodash.toArray = toArray; + lodash.values = values; + + // Add aliases. + lodash.extend = assignIn; + + // Add methods to `lodash.prototype`. + mixin(lodash, lodash); + + /*------------------------------------------------------------------------*/ + + // Add methods that return unwrapped values in chain sequences. + lodash.clone = clone; + lodash.escape = escape; + lodash.every = every; + lodash.find = find; + lodash.forEach = forEach; + lodash.has = has; + lodash.head = head; + lodash.identity = identity; + lodash.indexOf = indexOf; + lodash.isArguments = isArguments; + lodash.isArray = isArray; + lodash.isBoolean = isBoolean; + lodash.isDate = isDate; + lodash.isEmpty = isEmpty; + lodash.isEqual = isEqual; + lodash.isFinite = isFinite; + lodash.isFunction = isFunction; + lodash.isNaN = isNaN; + lodash.isNull = isNull; + lodash.isNumber = isNumber; + lodash.isObject = isObject; + lodash.isRegExp = isRegExp; + lodash.isString = isString; + lodash.isUndefined = isUndefined; + lodash.last = last; + lodash.max = max; + lodash.min = min; + lodash.noConflict = noConflict; + lodash.noop = noop; + lodash.reduce = reduce; + lodash.result = result; + lodash.size = size; + lodash.some = some; + lodash.uniqueId = uniqueId; + + // Add aliases. + lodash.each = forEach; + lodash.first = head; + + mixin(lodash, (function() { + var source = {}; + baseForOwn(lodash, function(func, methodName) { + if (!hasOwnProperty.call(lodash.prototype, methodName)) { + source[methodName] = func; + } + }); + return source; + }()), { 'chain': false }); + + /*------------------------------------------------------------------------*/ + + /** + * The semantic version number. + * + * @static + * @memberOf _ + * @type {string} + */ + lodash.VERSION = VERSION; + + // Add `Array` methods to `lodash.prototype`. + baseEach(['pop', 'join', 'replace', 'reverse', 'split', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) { + var func = (/^(?:replace|split)$/.test(methodName) ? String.prototype : arrayProto)[methodName], + chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru', + retUnwrapped = /^(?:pop|join|replace|shift)$/.test(methodName); + + lodash.prototype[methodName] = function() { + var args = arguments; + if (retUnwrapped && !this.__chain__) { + var value = this.value(); + return func.apply(isArray(value) ? value : [], args); + } + return this[chainName](function(value) { + return func.apply(isArray(value) ? value : [], args); + }); + }; + }); + + // Add chain sequence methods to the `lodash` wrapper. + lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; + + /*--------------------------------------------------------------------------*/ + + // Some AMD build optimizers, like r.js, check for condition patterns like: + if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) { + // Expose Lodash on the global object to prevent errors when Lodash is + // loaded by a script tag in the presence of an AMD loader. + // See http://requirejs.org/docs/errors.html#mismatch for more details. + // Use `_.noConflict` to remove Lodash from the global object. + root._ = lodash; + + // Define as an anonymous module so, through path mapping, it can be + // referenced as the "underscore" module. + define(function() { + return lodash; + }); + } + // Check for `exports` after `define` in case a build optimizer adds it. + else if (freeModule) { + // Export for Node.js. + (freeModule.exports = lodash)._ = lodash; + // Export for CommonJS support. + freeExports._ = lodash; + } + else { + // Export to the global object. + root._ = lodash; + } +}.call(this)); diff --git a/node_modules/lodash/core.min.js b/node_modules/lodash/core.min.js new file mode 100644 index 0000000..e425e4d --- /dev/null +++ b/node_modules/lodash/core.min.js @@ -0,0 +1,29 @@ +/** + * @license + * Lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE + * Build: `lodash core -o ./dist/lodash.core.js` + */ +;(function(){function n(n){return H(n)&&pn.call(n,"callee")&&!yn.call(n,"callee")}function t(n,t){return n.push.apply(n,t),n}function r(n){return function(t){return null==t?Z:t[n]}}function e(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function u(n,t){return j(t,function(t){return n[t]})}function o(n){return n instanceof i?n:new i(n)}function i(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function c(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function"); +return setTimeout(function(){n.apply(Z,r)},t)}function f(n,t){var r=true;return mn(n,function(n,e,u){return r=!!t(n,e,u)}),r}function a(n,t,r){for(var e=-1,u=n.length;++et}function b(n,t,r,e,u){return n===t||(null==n||null==t||!H(n)&&!H(t)?n!==n&&t!==t:y(n,t,r,e,b,u))}function y(n,t,r,e,u,o){var i=Nn(n),c=Nn(t),f=i?"[object Array]":hn.call(n),a=c?"[object Array]":hn.call(t),f="[object Arguments]"==f?"[object Object]":f,a="[object Arguments]"==a?"[object Object]":a,l="[object Object]"==f,c="[object Object]"==a,a=f==a;o||(o=[]);var p=An(o,function(t){return t[0]==n}),s=An(o,function(n){ +return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if(i)r=T(n,t,r,e,u,o);else n:{switch(f){case"[object Boolean]":case"[object Date]":case"[object Number]":r=J(+n,+t);break n;case"[object Error]":r=n.name==t.name&&n.message==t.message;break n;case"[object RegExp]":case"[object String]":r=n==t+"";break n}r=false}return o.pop(),r}return 1&r||(i=l&&pn.call(n,"__wrapped__"),f=c&&pn.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=B(n,t,r,e,u,o),o.pop(),r):(i=i?n.value():n,f=f?t.value():t, +r=u(i,f,r,e,o),o.pop(),r)}function g(n){return typeof n=="function"?n:null==n?X:(typeof n=="object"?d:r)(n)}function _(n,t){return nt&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++ei))return false;var c=o.get(n),f=o.get(t);if(c&&f)return c==t&&f==n;for(var c=-1,f=true,a=2&r?[]:Z;++cr?jn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++rarguments.length,mn); +}function G(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Fn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function J(n,t){return n===t||n!==n&&t!==t}function M(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1=t),t&&!U(n)}function U(n){return!!V(n)&&(n=hn.call(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function V(n){var t=typeof n; +return null!=n&&("object"==t||"function"==t)}function H(n){return null!=n&&typeof n=="object"}function K(n){return typeof n=="number"||H(n)&&"[object Number]"==hn.call(n)}function L(n){return typeof n=="string"||!Nn(n)&&H(n)&&"[object String]"==hn.call(n)}function Q(n){return typeof n=="string"?n:null==n?"":n+""}function W(n){return null==n?[]:u(n,Dn(n))}function X(n){return n}function Y(n,r,e){var u=Dn(r),o=h(r,u);null!=e||V(r)&&(o.length||!u.length)||(e=r,r=n,n=this,o=h(r,Dn(r)));var i=!(V(e)&&"chain"in e&&!e.chain),c=U(n); +return mn(o,function(e){var u=r[e];n[e]=u,c&&(n.prototype[e]=function(){var r=this.__chain__;if(i||r){var e=n(this.__wrapped__);return(e.__actions__=A(this.__actions__)).push({func:u,args:arguments,thisArg:n}),e.__chain__=r,e}return u.apply(n,t([this.value()],arguments))})}),n}var Z,nn=1/0,tn=/[&<>"']/g,rn=RegExp(tn.source),en=/^(?:0|[1-9]\d*)$/,un=typeof self=="object"&&self&&self.Object===Object&&self,on=typeof global=="object"&&global&&global.Object===Object&&global||un||Function("return this")(),cn=(un=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,fn=function(n){ +return function(t){return null==n?Z:n[t]}}({"&":"&","<":"<",">":">",'"':""","'":"'"}),an=Array.prototype,ln=Object.prototype,pn=ln.hasOwnProperty,sn=0,hn=ln.toString,vn=on._,bn=Object.create,yn=ln.propertyIsEnumerable,gn=on.isFinite,_n=function(n,t){return function(r){return n(t(r))}}(Object.keys,Object),jn=Math.max,dn=function(){function n(){}return function(t){return V(t)?bn?bn(t):(n.prototype=t,t=new n,n.prototype=Z,t):{}}}();i.prototype=dn(o.prototype),i.prototype.constructor=i; +var mn=function(n,t){return function(r,e){if(null==r)return r;if(!M(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++or&&(r=jn(e+r,0));n:{for(t=g(t),e=n.length,r+=-1;++re||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&r { '4': 1, '6': 2 } + * + * // The `_.property` iteratee shorthand. + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */ +var countBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + ++result[key]; + } else { + baseAssignValue(result, key, 1); + } +}); + +module.exports = countBy; diff --git a/node_modules/lodash/create.js b/node_modules/lodash/create.js new file mode 100644 index 0000000..919edb8 --- /dev/null +++ b/node_modules/lodash/create.js @@ -0,0 +1,43 @@ +var baseAssign = require('./_baseAssign'), + baseCreate = require('./_baseCreate'); + +/** + * Creates an object that inherits from the `prototype` object. If a + * `properties` object is given, its own enumerable string keyed properties + * are assigned to the created object. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @returns {Object} Returns the new object. + * @example + * + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true + */ +function create(prototype, properties) { + var result = baseCreate(prototype); + return properties == null ? result : baseAssign(result, properties); +} + +module.exports = create; diff --git a/node_modules/lodash/curry.js b/node_modules/lodash/curry.js new file mode 100644 index 0000000..918db1a --- /dev/null +++ b/node_modules/lodash/curry.js @@ -0,0 +1,57 @@ +var createWrap = require('./_createWrap'); + +/** Used to compose bitmasks for function metadata. */ +var WRAP_CURRY_FLAG = 8; + +/** + * Creates a function that accepts arguments of `func` and either invokes + * `func` returning its result, if at least `arity` number of arguments have + * been provided, or returns a function that accepts the remaining `func` + * arguments, and so on. The arity of `func` may be specified if `func.length` + * is not sufficient. + * + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(1)(_, 3)(2); + * // => [1, 2, 3] + */ +function curry(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curry.placeholder; + return result; +} + +// Assign default placeholders. +curry.placeholder = {}; + +module.exports = curry; diff --git a/node_modules/lodash/curryRight.js b/node_modules/lodash/curryRight.js new file mode 100644 index 0000000..c85b6f3 --- /dev/null +++ b/node_modules/lodash/curryRight.js @@ -0,0 +1,54 @@ +var createWrap = require('./_createWrap'); + +/** Used to compose bitmasks for function metadata. */ +var WRAP_CURRY_RIGHT_FLAG = 16; + +/** + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. + * + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(3)(1, _)(2); + * // => [1, 2, 3] + */ +function curryRight(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curryRight.placeholder; + return result; +} + +// Assign default placeholders. +curryRight.placeholder = {}; + +module.exports = curryRight; diff --git a/node_modules/lodash/date.js b/node_modules/lodash/date.js new file mode 100644 index 0000000..cbf5b41 --- /dev/null +++ b/node_modules/lodash/date.js @@ -0,0 +1,3 @@ +module.exports = { + 'now': require('./now') +}; diff --git a/node_modules/lodash/debounce.js b/node_modules/lodash/debounce.js new file mode 100644 index 0000000..8f751d5 --- /dev/null +++ b/node_modules/lodash/debounce.js @@ -0,0 +1,191 @@ +var isObject = require('./isObject'), + now = require('./now'), + toNumber = require('./toNumber'); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ +function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + timeWaiting = wait - timeSinceLastCall; + + return maxing + ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) + : timeWaiting; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; + } + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; + } + + function flush() { + return timerId === undefined ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + clearTimeout(timerId); + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; +} + +module.exports = debounce; diff --git a/node_modules/lodash/deburr.js b/node_modules/lodash/deburr.js new file mode 100644 index 0000000..f85e314 --- /dev/null +++ b/node_modules/lodash/deburr.js @@ -0,0 +1,45 @@ +var deburrLetter = require('./_deburrLetter'), + toString = require('./toString'); + +/** Used to match Latin Unicode letters (excluding mathematical operators). */ +var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + +/** Used to compose unicode character classes. */ +var rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange; + +/** Used to compose unicode capture groups. */ +var rsCombo = '[' + rsComboRange + ']'; + +/** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ +var reComboMark = RegExp(rsCombo, 'g'); + +/** + * Deburrs `string` by converting + * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) + * letters to basic Latin letters and removing + * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ +function deburr(string) { + string = toString(string); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); +} + +module.exports = deburr; diff --git a/node_modules/lodash/defaultTo.js b/node_modules/lodash/defaultTo.js new file mode 100644 index 0000000..5b33359 --- /dev/null +++ b/node_modules/lodash/defaultTo.js @@ -0,0 +1,25 @@ +/** + * Checks `value` to determine whether a default value should be returned in + * its place. The `defaultValue` is returned if `value` is `NaN`, `null`, + * or `undefined`. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Util + * @param {*} value The value to check. + * @param {*} defaultValue The default value. + * @returns {*} Returns the resolved value. + * @example + * + * _.defaultTo(1, 10); + * // => 1 + * + * _.defaultTo(undefined, 10); + * // => 10 + */ +function defaultTo(value, defaultValue) { + return (value == null || value !== value) ? defaultValue : value; +} + +module.exports = defaultTo; diff --git a/node_modules/lodash/defaults.js b/node_modules/lodash/defaults.js new file mode 100644 index 0000000..c74df04 --- /dev/null +++ b/node_modules/lodash/defaults.js @@ -0,0 +1,64 @@ +var baseRest = require('./_baseRest'), + eq = require('./eq'), + isIterateeCall = require('./_isIterateeCall'), + keysIn = require('./keysIn'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ +var defaults = baseRest(function(object, sources) { + object = Object(object); + + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + + while (++index < length) { + var source = sources[index]; + var props = keysIn(source); + var propsIndex = -1; + var propsLength = props.length; + + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + + if (value === undefined || + (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { + object[key] = source[key]; + } + } + } + + return object; +}); + +module.exports = defaults; diff --git a/node_modules/lodash/defaultsDeep.js b/node_modules/lodash/defaultsDeep.js new file mode 100644 index 0000000..9b5fa3e --- /dev/null +++ b/node_modules/lodash/defaultsDeep.js @@ -0,0 +1,30 @@ +var apply = require('./_apply'), + baseRest = require('./_baseRest'), + customDefaultsMerge = require('./_customDefaultsMerge'), + mergeWith = require('./mergeWith'); + +/** + * This method is like `_.defaults` except that it recursively assigns + * default properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaults + * @example + * + * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); + * // => { 'a': { 'b': 2, 'c': 3 } } + */ +var defaultsDeep = baseRest(function(args) { + args.push(undefined, customDefaultsMerge); + return apply(mergeWith, undefined, args); +}); + +module.exports = defaultsDeep; diff --git a/node_modules/lodash/defer.js b/node_modules/lodash/defer.js new file mode 100644 index 0000000..f6d6c6f --- /dev/null +++ b/node_modules/lodash/defer.js @@ -0,0 +1,26 @@ +var baseDelay = require('./_baseDelay'), + baseRest = require('./_baseRest'); + +/** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // => Logs 'deferred' after one millisecond. + */ +var defer = baseRest(function(func, args) { + return baseDelay(func, 1, args); +}); + +module.exports = defer; diff --git a/node_modules/lodash/delay.js b/node_modules/lodash/delay.js new file mode 100644 index 0000000..bd55479 --- /dev/null +++ b/node_modules/lodash/delay.js @@ -0,0 +1,28 @@ +var baseDelay = require('./_baseDelay'), + baseRest = require('./_baseRest'), + toNumber = require('./toNumber'); + +/** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => Logs 'later' after one second. + */ +var delay = baseRest(function(func, wait, args) { + return baseDelay(func, toNumber(wait) || 0, args); +}); + +module.exports = delay; diff --git a/node_modules/lodash/difference.js b/node_modules/lodash/difference.js new file mode 100644 index 0000000..fa28bb3 --- /dev/null +++ b/node_modules/lodash/difference.js @@ -0,0 +1,33 @@ +var baseDifference = require('./_baseDifference'), + baseFlatten = require('./_baseFlatten'), + baseRest = require('./_baseRest'), + isArrayLikeObject = require('./isArrayLikeObject'); + +/** + * Creates an array of `array` values not included in the other given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * **Note:** Unlike `_.pullAll`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.without, _.xor + * @example + * + * _.difference([2, 1], [2, 3]); + * // => [1] + */ +var difference = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) + : []; +}); + +module.exports = difference; diff --git a/node_modules/lodash/differenceBy.js b/node_modules/lodash/differenceBy.js new file mode 100644 index 0000000..2cd63e7 --- /dev/null +++ b/node_modules/lodash/differenceBy.js @@ -0,0 +1,44 @@ +var baseDifference = require('./_baseDifference'), + baseFlatten = require('./_baseFlatten'), + baseIteratee = require('./_baseIteratee'), + baseRest = require('./_baseRest'), + isArrayLikeObject = require('./isArrayLikeObject'), + last = require('./last'); + +/** + * This method is like `_.difference` except that it accepts `iteratee` which + * is invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * **Note:** Unlike `_.pullAllBy`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2] + * + * // The `_.property` iteratee shorthand. + * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ +var differenceBy = baseRest(function(array, values) { + var iteratee = last(values); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2)) + : []; +}); + +module.exports = differenceBy; diff --git a/node_modules/lodash/differenceWith.js b/node_modules/lodash/differenceWith.js new file mode 100644 index 0000000..c0233f4 --- /dev/null +++ b/node_modules/lodash/differenceWith.js @@ -0,0 +1,40 @@ +var baseDifference = require('./_baseDifference'), + baseFlatten = require('./_baseFlatten'), + baseRest = require('./_baseRest'), + isArrayLikeObject = require('./isArrayLikeObject'), + last = require('./last'); + +/** + * This method is like `_.difference` except that it accepts `comparator` + * which is invoked to compare elements of `array` to `values`. The order and + * references of result values are determined by the first array. The comparator + * is invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.pullAllWith`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * + * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); + * // => [{ 'x': 2, 'y': 1 }] + */ +var differenceWith = baseRest(function(array, values) { + var comparator = last(values); + if (isArrayLikeObject(comparator)) { + comparator = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) + : []; +}); + +module.exports = differenceWith; diff --git a/node_modules/lodash/divide.js b/node_modules/lodash/divide.js new file mode 100644 index 0000000..8cae0cd --- /dev/null +++ b/node_modules/lodash/divide.js @@ -0,0 +1,22 @@ +var createMathOperation = require('./_createMathOperation'); + +/** + * Divide two numbers. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Math + * @param {number} dividend The first number in a division. + * @param {number} divisor The second number in a division. + * @returns {number} Returns the quotient. + * @example + * + * _.divide(6, 4); + * // => 1.5 + */ +var divide = createMathOperation(function(dividend, divisor) { + return dividend / divisor; +}, 1); + +module.exports = divide; diff --git a/node_modules/lodash/drop.js b/node_modules/lodash/drop.js new file mode 100644 index 0000000..d5c3cba --- /dev/null +++ b/node_modules/lodash/drop.js @@ -0,0 +1,38 @@ +var baseSlice = require('./_baseSlice'), + toInteger = require('./toInteger'); + +/** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */ +function drop(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, n < 0 ? 0 : n, length); +} + +module.exports = drop; diff --git a/node_modules/lodash/dropRight.js b/node_modules/lodash/dropRight.js new file mode 100644 index 0000000..441fe99 --- /dev/null +++ b/node_modules/lodash/dropRight.js @@ -0,0 +1,39 @@ +var baseSlice = require('./_baseSlice'), + toInteger = require('./toInteger'); + +/** + * Creates a slice of `array` with `n` elements dropped from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] + */ +function dropRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, 0, n < 0 ? 0 : n); +} + +module.exports = dropRight; diff --git a/node_modules/lodash/dropRightWhile.js b/node_modules/lodash/dropRightWhile.js new file mode 100644 index 0000000..9ad36a0 --- /dev/null +++ b/node_modules/lodash/dropRightWhile.js @@ -0,0 +1,45 @@ +var baseIteratee = require('./_baseIteratee'), + baseWhile = require('./_baseWhile'); + +/** + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.dropRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney'] + * + * // The `_.matches` iteratee shorthand. + * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropRightWhile(users, ['active', false]); + * // => objects for ['barney'] + * + * // The `_.property` iteratee shorthand. + * _.dropRightWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ +function dropRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, baseIteratee(predicate, 3), true, true) + : []; +} + +module.exports = dropRightWhile; diff --git a/node_modules/lodash/dropWhile.js b/node_modules/lodash/dropWhile.js new file mode 100644 index 0000000..903ef56 --- /dev/null +++ b/node_modules/lodash/dropWhile.js @@ -0,0 +1,45 @@ +var baseIteratee = require('./_baseIteratee'), + baseWhile = require('./_baseWhile'); + +/** + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.dropWhile(users, function(o) { return !o.active; }); + * // => objects for ['pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.dropWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropWhile(users, ['active', false]); + * // => objects for ['pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.dropWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ +function dropWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, baseIteratee(predicate, 3), true) + : []; +} + +module.exports = dropWhile; diff --git a/node_modules/lodash/each.js b/node_modules/lodash/each.js new file mode 100644 index 0000000..8800f42 --- /dev/null +++ b/node_modules/lodash/each.js @@ -0,0 +1 @@ +module.exports = require('./forEach'); diff --git a/node_modules/lodash/eachRight.js b/node_modules/lodash/eachRight.js new file mode 100644 index 0000000..3252b2a --- /dev/null +++ b/node_modules/lodash/eachRight.js @@ -0,0 +1 @@ +module.exports = require('./forEachRight'); diff --git a/node_modules/lodash/endsWith.js b/node_modules/lodash/endsWith.js new file mode 100644 index 0000000..76fc866 --- /dev/null +++ b/node_modules/lodash/endsWith.js @@ -0,0 +1,43 @@ +var baseClamp = require('./_baseClamp'), + baseToString = require('./_baseToString'), + toInteger = require('./toInteger'), + toString = require('./toString'); + +/** + * Checks if `string` ends with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=string.length] The position to search up to. + * @returns {boolean} Returns `true` if `string` ends with `target`, + * else `false`. + * @example + * + * _.endsWith('abc', 'c'); + * // => true + * + * _.endsWith('abc', 'b'); + * // => false + * + * _.endsWith('abc', 'b', 2); + * // => true + */ +function endsWith(string, target, position) { + string = toString(string); + target = baseToString(target); + + var length = string.length; + position = position === undefined + ? length + : baseClamp(toInteger(position), 0, length); + + var end = position; + position -= target.length; + return position >= 0 && string.slice(position, end) == target; +} + +module.exports = endsWith; diff --git a/node_modules/lodash/entries.js b/node_modules/lodash/entries.js new file mode 100644 index 0000000..7a88df2 --- /dev/null +++ b/node_modules/lodash/entries.js @@ -0,0 +1 @@ +module.exports = require('./toPairs'); diff --git a/node_modules/lodash/entriesIn.js b/node_modules/lodash/entriesIn.js new file mode 100644 index 0000000..f6c6331 --- /dev/null +++ b/node_modules/lodash/entriesIn.js @@ -0,0 +1 @@ +module.exports = require('./toPairsIn'); diff --git a/node_modules/lodash/eq.js b/node_modules/lodash/eq.js new file mode 100644 index 0000000..a940688 --- /dev/null +++ b/node_modules/lodash/eq.js @@ -0,0 +1,37 @@ +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +module.exports = eq; diff --git a/node_modules/lodash/escape.js b/node_modules/lodash/escape.js new file mode 100644 index 0000000..9247e00 --- /dev/null +++ b/node_modules/lodash/escape.js @@ -0,0 +1,43 @@ +var escapeHtmlChar = require('./_escapeHtmlChar'), + toString = require('./toString'); + +/** Used to match HTML entities and HTML characters. */ +var reUnescapedHtml = /[&<>"']/g, + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + +/** + * Converts the characters "&", "<", ">", '"', and "'" in `string` to their + * corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional + * characters use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't need escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. See + * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * When working with HTML you should always + * [quote attribute values](http://wonko.com/post/html-escaping) to reduce + * XSS vectors. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ +function escape(string) { + string = toString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; +} + +module.exports = escape; diff --git a/node_modules/lodash/escapeRegExp.js b/node_modules/lodash/escapeRegExp.js new file mode 100644 index 0000000..0a58c69 --- /dev/null +++ b/node_modules/lodash/escapeRegExp.js @@ -0,0 +1,32 @@ +var toString = require('./toString'); + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, + reHasRegExpChar = RegExp(reRegExpChar.source); + +/** + * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", + * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https://lodash\.com/\)' + */ +function escapeRegExp(string) { + string = toString(string); + return (string && reHasRegExpChar.test(string)) + ? string.replace(reRegExpChar, '\\$&') + : string; +} + +module.exports = escapeRegExp; diff --git a/node_modules/lodash/every.js b/node_modules/lodash/every.js new file mode 100644 index 0000000..25080da --- /dev/null +++ b/node_modules/lodash/every.js @@ -0,0 +1,56 @@ +var arrayEvery = require('./_arrayEvery'), + baseEvery = require('./_baseEvery'), + baseIteratee = require('./_baseIteratee'), + isArray = require('./isArray'), + isIterateeCall = require('./_isIterateeCall'); + +/** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * Iteration is stopped once `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.every(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.every(users, 'active'); + * // => false + */ +function every(collection, predicate, guard) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, baseIteratee(predicate, 3)); +} + +module.exports = every; diff --git a/node_modules/lodash/extend.js b/node_modules/lodash/extend.js new file mode 100644 index 0000000..e00166c --- /dev/null +++ b/node_modules/lodash/extend.js @@ -0,0 +1 @@ +module.exports = require('./assignIn'); diff --git a/node_modules/lodash/extendWith.js b/node_modules/lodash/extendWith.js new file mode 100644 index 0000000..dbdcb3b --- /dev/null +++ b/node_modules/lodash/extendWith.js @@ -0,0 +1 @@ +module.exports = require('./assignInWith'); diff --git a/node_modules/lodash/fill.js b/node_modules/lodash/fill.js new file mode 100644 index 0000000..ae13aa1 --- /dev/null +++ b/node_modules/lodash/fill.js @@ -0,0 +1,45 @@ +var baseFill = require('./_baseFill'), + isIterateeCall = require('./_isIterateeCall'); + +/** + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. + * + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.fill(array, 'a'); + * console.log(array); + * // => ['a', 'a', 'a'] + * + * _.fill(Array(3), 2); + * // => [2, 2, 2] + * + * _.fill([4, 6, 8, 10], '*', 1, 3); + * // => [4, '*', '*', 10] + */ +function fill(array, value, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); +} + +module.exports = fill; diff --git a/node_modules/lodash/filter.js b/node_modules/lodash/filter.js new file mode 100644 index 0000000..89e0c8c --- /dev/null +++ b/node_modules/lodash/filter.js @@ -0,0 +1,52 @@ +var arrayFilter = require('./_arrayFilter'), + baseFilter = require('./_baseFilter'), + baseIteratee = require('./_baseIteratee'), + isArray = require('./isArray'); + +/** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] + */ +function filter(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, baseIteratee(predicate, 3)); +} + +module.exports = filter; diff --git a/node_modules/lodash/find.js b/node_modules/lodash/find.js new file mode 100644 index 0000000..de732cc --- /dev/null +++ b/node_modules/lodash/find.js @@ -0,0 +1,42 @@ +var createFind = require('./_createFind'), + findIndex = require('./findIndex'); + +/** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ +var find = createFind(findIndex); + +module.exports = find; diff --git a/node_modules/lodash/findIndex.js b/node_modules/lodash/findIndex.js new file mode 100644 index 0000000..4689069 --- /dev/null +++ b/node_modules/lodash/findIndex.js @@ -0,0 +1,55 @@ +var baseFindIndex = require('./_baseFindIndex'), + baseIteratee = require('./_baseIteratee'), + toInteger = require('./toInteger'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ +function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, baseIteratee(predicate, 3), index); +} + +module.exports = findIndex; diff --git a/node_modules/lodash/findKey.js b/node_modules/lodash/findKey.js new file mode 100644 index 0000000..cac0248 --- /dev/null +++ b/node_modules/lodash/findKey.js @@ -0,0 +1,44 @@ +var baseFindKey = require('./_baseFindKey'), + baseForOwn = require('./_baseForOwn'), + baseIteratee = require('./_baseIteratee'); + +/** + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(o) { return o.age < 40; }); + * // => 'barney' (iteration order is not guaranteed) + * + * // The `_.matches` iteratee shorthand. + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findKey(users, 'active'); + * // => 'barney' + */ +function findKey(object, predicate) { + return baseFindKey(object, baseIteratee(predicate, 3), baseForOwn); +} + +module.exports = findKey; diff --git a/node_modules/lodash/findLast.js b/node_modules/lodash/findLast.js new file mode 100644 index 0000000..70b4271 --- /dev/null +++ b/node_modules/lodash/findLast.js @@ -0,0 +1,25 @@ +var createFind = require('./_createFind'), + findLastIndex = require('./findLastIndex'); + +/** + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=collection.length-1] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 + */ +var findLast = createFind(findLastIndex); + +module.exports = findLast; diff --git a/node_modules/lodash/findLastIndex.js b/node_modules/lodash/findLastIndex.js new file mode 100644 index 0000000..7da3431 --- /dev/null +++ b/node_modules/lodash/findLastIndex.js @@ -0,0 +1,59 @@ +var baseFindIndex = require('./_baseFindIndex'), + baseIteratee = require('./_baseIteratee'), + toInteger = require('./toInteger'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); + * // => 2 + * + * // The `_.matches` iteratee shorthand. + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastIndex(users, ['active', false]); + * // => 2 + * + * // The `_.property` iteratee shorthand. + * _.findLastIndex(users, 'active'); + * // => 0 + */ +function findLastIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length - 1; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = fromIndex < 0 + ? nativeMax(length + index, 0) + : nativeMin(index, length - 1); + } + return baseFindIndex(array, baseIteratee(predicate, 3), index, true); +} + +module.exports = findLastIndex; diff --git a/node_modules/lodash/findLastKey.js b/node_modules/lodash/findLastKey.js new file mode 100644 index 0000000..66fb9fb --- /dev/null +++ b/node_modules/lodash/findLastKey.js @@ -0,0 +1,44 @@ +var baseFindKey = require('./_baseFindKey'), + baseForOwnRight = require('./_baseForOwnRight'), + baseIteratee = require('./_baseIteratee'); + +/** + * This method is like `_.findKey` except that it iterates over elements of + * a collection in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findLastKey(users, function(o) { return o.age < 40; }); + * // => returns 'pebbles' assuming `_.findKey` returns 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.findLastKey(users, { 'age': 36, 'active': true }); + * // => 'barney' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findLastKey(users, 'active'); + * // => 'pebbles' + */ +function findLastKey(object, predicate) { + return baseFindKey(object, baseIteratee(predicate, 3), baseForOwnRight); +} + +module.exports = findLastKey; diff --git a/node_modules/lodash/first.js b/node_modules/lodash/first.js new file mode 100644 index 0000000..53f4ad1 --- /dev/null +++ b/node_modules/lodash/first.js @@ -0,0 +1 @@ +module.exports = require('./head'); diff --git a/node_modules/lodash/flake.lock b/node_modules/lodash/flake.lock new file mode 100644 index 0000000..dd03252 --- /dev/null +++ b/node_modules/lodash/flake.lock @@ -0,0 +1,40 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1613582597, + "narHash": "sha256-6LvipIvFuhyorHpUqK3HjySC5Y6gshXHFBhU9EJ4DoM=", + "path": "/nix/store/srvplqq673sqd9vyfhyc5w1p88y1gfm4-source", + "rev": "6b1057b452c55bb3b463f0d7055bc4ec3fd1f381", + "type": "path" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "utils": "utils" + } + }, + "utils": { + "locked": { + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/node_modules/lodash/flake.nix b/node_modules/lodash/flake.nix new file mode 100644 index 0000000..15a451c --- /dev/null +++ b/node_modules/lodash/flake.nix @@ -0,0 +1,20 @@ +{ + inputs = { + utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, utils }: + utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages."${system}"; + in rec { + devShell = pkgs.mkShell { + nativeBuildInputs = with pkgs; [ + yarn + nodejs-14_x + nodePackages.typescript-language-server + nodePackages.eslint + ]; + }; + }); +} diff --git a/node_modules/lodash/flatMap.js b/node_modules/lodash/flatMap.js new file mode 100644 index 0000000..e668506 --- /dev/null +++ b/node_modules/lodash/flatMap.js @@ -0,0 +1,29 @@ +var baseFlatten = require('./_baseFlatten'), + map = require('./map'); + +/** + * Creates a flattened array of values by running each element in `collection` + * thru `iteratee` and flattening the mapped results. The iteratee is invoked + * with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [n, n]; + * } + * + * _.flatMap([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ +function flatMap(collection, iteratee) { + return baseFlatten(map(collection, iteratee), 1); +} + +module.exports = flatMap; diff --git a/node_modules/lodash/flatMapDeep.js b/node_modules/lodash/flatMapDeep.js new file mode 100644 index 0000000..4653d60 --- /dev/null +++ b/node_modules/lodash/flatMapDeep.js @@ -0,0 +1,31 @@ +var baseFlatten = require('./_baseFlatten'), + map = require('./map'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDeep([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ +function flatMapDeep(collection, iteratee) { + return baseFlatten(map(collection, iteratee), INFINITY); +} + +module.exports = flatMapDeep; diff --git a/node_modules/lodash/flatMapDepth.js b/node_modules/lodash/flatMapDepth.js new file mode 100644 index 0000000..6d72005 --- /dev/null +++ b/node_modules/lodash/flatMapDepth.js @@ -0,0 +1,31 @@ +var baseFlatten = require('./_baseFlatten'), + map = require('./map'), + toInteger = require('./toInteger'); + +/** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDepth([1, 2], duplicate, 2); + * // => [[1, 1], [2, 2]] + */ +function flatMapDepth(collection, iteratee, depth) { + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(map(collection, iteratee), depth); +} + +module.exports = flatMapDepth; diff --git a/node_modules/lodash/flatten.js b/node_modules/lodash/flatten.js new file mode 100644 index 0000000..3f09f7f --- /dev/null +++ b/node_modules/lodash/flatten.js @@ -0,0 +1,22 @@ +var baseFlatten = require('./_baseFlatten'); + +/** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ +function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; +} + +module.exports = flatten; diff --git a/node_modules/lodash/flattenDeep.js b/node_modules/lodash/flattenDeep.js new file mode 100644 index 0000000..8ad585c --- /dev/null +++ b/node_modules/lodash/flattenDeep.js @@ -0,0 +1,25 @@ +var baseFlatten = require('./_baseFlatten'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Recursively flattens `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, [3, [4]], 5]]); + * // => [1, 2, 3, 4, 5] + */ +function flattenDeep(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, INFINITY) : []; +} + +module.exports = flattenDeep; diff --git a/node_modules/lodash/flattenDepth.js b/node_modules/lodash/flattenDepth.js new file mode 100644 index 0000000..441fdcc --- /dev/null +++ b/node_modules/lodash/flattenDepth.js @@ -0,0 +1,33 @@ +var baseFlatten = require('./_baseFlatten'), + toInteger = require('./toInteger'); + +/** + * Recursively flatten `array` up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Array + * @param {Array} array The array to flatten. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * var array = [1, [2, [3, [4]], 5]]; + * + * _.flattenDepth(array, 1); + * // => [1, 2, [3, [4]], 5] + * + * _.flattenDepth(array, 2); + * // => [1, 2, 3, [4], 5] + */ +function flattenDepth(array, depth) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(array, depth); +} + +module.exports = flattenDepth; diff --git a/node_modules/lodash/flip.js b/node_modules/lodash/flip.js new file mode 100644 index 0000000..c28dd78 --- /dev/null +++ b/node_modules/lodash/flip.js @@ -0,0 +1,28 @@ +var createWrap = require('./_createWrap'); + +/** Used to compose bitmasks for function metadata. */ +var WRAP_FLIP_FLAG = 512; + +/** + * Creates a function that invokes `func` with arguments reversed. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to flip arguments for. + * @returns {Function} Returns the new flipped function. + * @example + * + * var flipped = _.flip(function() { + * return _.toArray(arguments); + * }); + * + * flipped('a', 'b', 'c', 'd'); + * // => ['d', 'c', 'b', 'a'] + */ +function flip(func) { + return createWrap(func, WRAP_FLIP_FLAG); +} + +module.exports = flip; diff --git a/node_modules/lodash/floor.js b/node_modules/lodash/floor.js new file mode 100644 index 0000000..ab6dfa2 --- /dev/null +++ b/node_modules/lodash/floor.js @@ -0,0 +1,26 @@ +var createRound = require('./_createRound'); + +/** + * Computes `number` rounded down to `precision`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Math + * @param {number} number The number to round down. + * @param {number} [precision=0] The precision to round down to. + * @returns {number} Returns the rounded down number. + * @example + * + * _.floor(4.006); + * // => 4 + * + * _.floor(0.046, 2); + * // => 0.04 + * + * _.floor(4060, -2); + * // => 4000 + */ +var floor = createRound('floor'); + +module.exports = floor; diff --git a/node_modules/lodash/flow.js b/node_modules/lodash/flow.js new file mode 100644 index 0000000..74b6b62 --- /dev/null +++ b/node_modules/lodash/flow.js @@ -0,0 +1,27 @@ +var createFlow = require('./_createFlow'); + +/** + * Creates a function that returns the result of invoking the given functions + * with the `this` binding of the created function, where each successive + * invocation is supplied the return value of the previous. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {...(Function|Function[])} [funcs] The functions to invoke. + * @returns {Function} Returns the new composite function. + * @see _.flowRight + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flow([_.add, square]); + * addSquare(1, 2); + * // => 9 + */ +var flow = createFlow(); + +module.exports = flow; diff --git a/node_modules/lodash/flowRight.js b/node_modules/lodash/flowRight.js new file mode 100644 index 0000000..1146141 --- /dev/null +++ b/node_modules/lodash/flowRight.js @@ -0,0 +1,26 @@ +var createFlow = require('./_createFlow'); + +/** + * This method is like `_.flow` except that it creates a function that + * invokes the given functions from right to left. + * + * @static + * @since 3.0.0 + * @memberOf _ + * @category Util + * @param {...(Function|Function[])} [funcs] The functions to invoke. + * @returns {Function} Returns the new composite function. + * @see _.flow + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flowRight([square, _.add]); + * addSquare(1, 2); + * // => 9 + */ +var flowRight = createFlow(true); + +module.exports = flowRight; diff --git a/node_modules/lodash/forEach.js b/node_modules/lodash/forEach.js new file mode 100644 index 0000000..c64eaa7 --- /dev/null +++ b/node_modules/lodash/forEach.js @@ -0,0 +1,41 @@ +var arrayEach = require('./_arrayEach'), + baseEach = require('./_baseEach'), + castFunction = require('./_castFunction'), + isArray = require('./isArray'); + +/** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, castFunction(iteratee)); +} + +module.exports = forEach; diff --git a/node_modules/lodash/forEachRight.js b/node_modules/lodash/forEachRight.js new file mode 100644 index 0000000..7390eba --- /dev/null +++ b/node_modules/lodash/forEachRight.js @@ -0,0 +1,31 @@ +var arrayEachRight = require('./_arrayEachRight'), + baseEachRight = require('./_baseEachRight'), + castFunction = require('./_castFunction'), + isArray = require('./isArray'); + +/** + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @alias eachRight + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEach + * @example + * + * _.forEachRight([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `2` then `1`. + */ +function forEachRight(collection, iteratee) { + var func = isArray(collection) ? arrayEachRight : baseEachRight; + return func(collection, castFunction(iteratee)); +} + +module.exports = forEachRight; diff --git a/node_modules/lodash/forIn.js b/node_modules/lodash/forIn.js new file mode 100644 index 0000000..583a596 --- /dev/null +++ b/node_modules/lodash/forIn.js @@ -0,0 +1,39 @@ +var baseFor = require('./_baseFor'), + castFunction = require('./_castFunction'), + keysIn = require('./keysIn'); + +/** + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). + */ +function forIn(object, iteratee) { + return object == null + ? object + : baseFor(object, castFunction(iteratee), keysIn); +} + +module.exports = forIn; diff --git a/node_modules/lodash/forInRight.js b/node_modules/lodash/forInRight.js new file mode 100644 index 0000000..4aedf58 --- /dev/null +++ b/node_modules/lodash/forInRight.js @@ -0,0 +1,37 @@ +var baseForRight = require('./_baseForRight'), + castFunction = require('./_castFunction'), + keysIn = require('./keysIn'); + +/** + * This method is like `_.forIn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forIn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forInRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. + */ +function forInRight(object, iteratee) { + return object == null + ? object + : baseForRight(object, castFunction(iteratee), keysIn); +} + +module.exports = forInRight; diff --git a/node_modules/lodash/forOwn.js b/node_modules/lodash/forOwn.js new file mode 100644 index 0000000..94eed84 --- /dev/null +++ b/node_modules/lodash/forOwn.js @@ -0,0 +1,36 @@ +var baseForOwn = require('./_baseForOwn'), + castFunction = require('./_castFunction'); + +/** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forOwn(object, iteratee) { + return object && baseForOwn(object, castFunction(iteratee)); +} + +module.exports = forOwn; diff --git a/node_modules/lodash/forOwnRight.js b/node_modules/lodash/forOwnRight.js new file mode 100644 index 0000000..86f338f --- /dev/null +++ b/node_modules/lodash/forOwnRight.js @@ -0,0 +1,34 @@ +var baseForOwnRight = require('./_baseForOwnRight'), + castFunction = require('./_castFunction'); + +/** + * This method is like `_.forOwn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwnRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. + */ +function forOwnRight(object, iteratee) { + return object && baseForOwnRight(object, castFunction(iteratee)); +} + +module.exports = forOwnRight; diff --git a/node_modules/lodash/fp.js b/node_modules/lodash/fp.js new file mode 100644 index 0000000..e372dbb --- /dev/null +++ b/node_modules/lodash/fp.js @@ -0,0 +1,2 @@ +var _ = require('./lodash.min').runInContext(); +module.exports = require('./fp/_baseConvert')(_, _); diff --git a/node_modules/lodash/fp/F.js b/node_modules/lodash/fp/F.js new file mode 100644 index 0000000..a05a63a --- /dev/null +++ b/node_modules/lodash/fp/F.js @@ -0,0 +1 @@ +module.exports = require('./stubFalse'); diff --git a/node_modules/lodash/fp/T.js b/node_modules/lodash/fp/T.js new file mode 100644 index 0000000..e2ba8ea --- /dev/null +++ b/node_modules/lodash/fp/T.js @@ -0,0 +1 @@ +module.exports = require('./stubTrue'); diff --git a/node_modules/lodash/fp/__.js b/node_modules/lodash/fp/__.js new file mode 100644 index 0000000..4af98de --- /dev/null +++ b/node_modules/lodash/fp/__.js @@ -0,0 +1 @@ +module.exports = require('./placeholder'); diff --git a/node_modules/lodash/fp/_baseConvert.js b/node_modules/lodash/fp/_baseConvert.js new file mode 100644 index 0000000..9baf8e1 --- /dev/null +++ b/node_modules/lodash/fp/_baseConvert.js @@ -0,0 +1,569 @@ +var mapping = require('./_mapping'), + fallbackHolder = require('./placeholder'); + +/** Built-in value reference. */ +var push = Array.prototype.push; + +/** + * Creates a function, with an arity of `n`, that invokes `func` with the + * arguments it receives. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} n The arity of the new function. + * @returns {Function} Returns the new function. + */ +function baseArity(func, n) { + return n == 2 + ? function(a, b) { return func.apply(undefined, arguments); } + : function(a) { return func.apply(undefined, arguments); }; +} + +/** + * Creates a function that invokes `func`, with up to `n` arguments, ignoring + * any additional arguments. + * + * @private + * @param {Function} func The function to cap arguments for. + * @param {number} n The arity cap. + * @returns {Function} Returns the new function. + */ +function baseAry(func, n) { + return n == 2 + ? function(a, b) { return func(a, b); } + : function(a) { return func(a); }; +} + +/** + * Creates a clone of `array`. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the cloned array. + */ +function cloneArray(array) { + var length = array ? array.length : 0, + result = Array(length); + + while (length--) { + result[length] = array[length]; + } + return result; +} + +/** + * Creates a function that clones a given object using the assignment `func`. + * + * @private + * @param {Function} func The assignment function. + * @returns {Function} Returns the new cloner function. + */ +function createCloner(func) { + return function(object) { + return func({}, object); + }; +} + +/** + * A specialized version of `_.spread` which flattens the spread array into + * the arguments of the invoked `func`. + * + * @private + * @param {Function} func The function to spread arguments over. + * @param {number} start The start position of the spread. + * @returns {Function} Returns the new function. + */ +function flatSpread(func, start) { + return function() { + var length = arguments.length, + lastIndex = length - 1, + args = Array(length); + + while (length--) { + args[length] = arguments[length]; + } + var array = args[start], + otherArgs = args.slice(0, start); + + if (array) { + push.apply(otherArgs, array); + } + if (start != lastIndex) { + push.apply(otherArgs, args.slice(start + 1)); + } + return func.apply(this, otherArgs); + }; +} + +/** + * Creates a function that wraps `func` and uses `cloner` to clone the first + * argument it receives. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} cloner The function to clone arguments. + * @returns {Function} Returns the new immutable function. + */ +function wrapImmutable(func, cloner) { + return function() { + var length = arguments.length; + if (!length) { + return; + } + var args = Array(length); + while (length--) { + args[length] = arguments[length]; + } + var result = args[0] = cloner.apply(undefined, args); + func.apply(undefined, args); + return result; + }; +} + +/** + * The base implementation of `convert` which accepts a `util` object of methods + * required to perform conversions. + * + * @param {Object} util The util object. + * @param {string} name The name of the function to convert. + * @param {Function} func The function to convert. + * @param {Object} [options] The options object. + * @param {boolean} [options.cap=true] Specify capping iteratee arguments. + * @param {boolean} [options.curry=true] Specify currying. + * @param {boolean} [options.fixed=true] Specify fixed arity. + * @param {boolean} [options.immutable=true] Specify immutable operations. + * @param {boolean} [options.rearg=true] Specify rearranging arguments. + * @returns {Function|Object} Returns the converted function or object. + */ +function baseConvert(util, name, func, options) { + var isLib = typeof name == 'function', + isObj = name === Object(name); + + if (isObj) { + options = func; + func = name; + name = undefined; + } + if (func == null) { + throw new TypeError; + } + options || (options = {}); + + var config = { + 'cap': 'cap' in options ? options.cap : true, + 'curry': 'curry' in options ? options.curry : true, + 'fixed': 'fixed' in options ? options.fixed : true, + 'immutable': 'immutable' in options ? options.immutable : true, + 'rearg': 'rearg' in options ? options.rearg : true + }; + + var defaultHolder = isLib ? func : fallbackHolder, + forceCurry = ('curry' in options) && options.curry, + forceFixed = ('fixed' in options) && options.fixed, + forceRearg = ('rearg' in options) && options.rearg, + pristine = isLib ? func.runInContext() : undefined; + + var helpers = isLib ? func : { + 'ary': util.ary, + 'assign': util.assign, + 'clone': util.clone, + 'curry': util.curry, + 'forEach': util.forEach, + 'isArray': util.isArray, + 'isError': util.isError, + 'isFunction': util.isFunction, + 'isWeakMap': util.isWeakMap, + 'iteratee': util.iteratee, + 'keys': util.keys, + 'rearg': util.rearg, + 'toInteger': util.toInteger, + 'toPath': util.toPath + }; + + var ary = helpers.ary, + assign = helpers.assign, + clone = helpers.clone, + curry = helpers.curry, + each = helpers.forEach, + isArray = helpers.isArray, + isError = helpers.isError, + isFunction = helpers.isFunction, + isWeakMap = helpers.isWeakMap, + keys = helpers.keys, + rearg = helpers.rearg, + toInteger = helpers.toInteger, + toPath = helpers.toPath; + + var aryMethodKeys = keys(mapping.aryMethod); + + var wrappers = { + 'castArray': function(castArray) { + return function() { + var value = arguments[0]; + return isArray(value) + ? castArray(cloneArray(value)) + : castArray.apply(undefined, arguments); + }; + }, + 'iteratee': function(iteratee) { + return function() { + var func = arguments[0], + arity = arguments[1], + result = iteratee(func, arity), + length = result.length; + + if (config.cap && typeof arity == 'number') { + arity = arity > 2 ? (arity - 2) : 1; + return (length && length <= arity) ? result : baseAry(result, arity); + } + return result; + }; + }, + 'mixin': function(mixin) { + return function(source) { + var func = this; + if (!isFunction(func)) { + return mixin(func, Object(source)); + } + var pairs = []; + each(keys(source), function(key) { + if (isFunction(source[key])) { + pairs.push([key, func.prototype[key]]); + } + }); + + mixin(func, Object(source)); + + each(pairs, function(pair) { + var value = pair[1]; + if (isFunction(value)) { + func.prototype[pair[0]] = value; + } else { + delete func.prototype[pair[0]]; + } + }); + return func; + }; + }, + 'nthArg': function(nthArg) { + return function(n) { + var arity = n < 0 ? 1 : (toInteger(n) + 1); + return curry(nthArg(n), arity); + }; + }, + 'rearg': function(rearg) { + return function(func, indexes) { + var arity = indexes ? indexes.length : 0; + return curry(rearg(func, indexes), arity); + }; + }, + 'runInContext': function(runInContext) { + return function(context) { + return baseConvert(util, runInContext(context), options); + }; + } + }; + + /*--------------------------------------------------------------------------*/ + + /** + * Casts `func` to a function with an arity capped iteratee if needed. + * + * @private + * @param {string} name The name of the function to inspect. + * @param {Function} func The function to inspect. + * @returns {Function} Returns the cast function. + */ + function castCap(name, func) { + if (config.cap) { + var indexes = mapping.iterateeRearg[name]; + if (indexes) { + return iterateeRearg(func, indexes); + } + var n = !isLib && mapping.iterateeAry[name]; + if (n) { + return iterateeAry(func, n); + } + } + return func; + } + + /** + * Casts `func` to a curried function if needed. + * + * @private + * @param {string} name The name of the function to inspect. + * @param {Function} func The function to inspect. + * @param {number} n The arity of `func`. + * @returns {Function} Returns the cast function. + */ + function castCurry(name, func, n) { + return (forceCurry || (config.curry && n > 1)) + ? curry(func, n) + : func; + } + + /** + * Casts `func` to a fixed arity function if needed. + * + * @private + * @param {string} name The name of the function to inspect. + * @param {Function} func The function to inspect. + * @param {number} n The arity cap. + * @returns {Function} Returns the cast function. + */ + function castFixed(name, func, n) { + if (config.fixed && (forceFixed || !mapping.skipFixed[name])) { + var data = mapping.methodSpread[name], + start = data && data.start; + + return start === undefined ? ary(func, n) : flatSpread(func, start); + } + return func; + } + + /** + * Casts `func` to an rearged function if needed. + * + * @private + * @param {string} name The name of the function to inspect. + * @param {Function} func The function to inspect. + * @param {number} n The arity of `func`. + * @returns {Function} Returns the cast function. + */ + function castRearg(name, func, n) { + return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name])) + ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n]) + : func; + } + + /** + * Creates a clone of `object` by `path`. + * + * @private + * @param {Object} object The object to clone. + * @param {Array|string} path The path to clone by. + * @returns {Object} Returns the cloned object. + */ + function cloneByPath(object, path) { + path = toPath(path); + + var index = -1, + length = path.length, + lastIndex = length - 1, + result = clone(Object(object)), + nested = result; + + while (nested != null && ++index < length) { + var key = path[index], + value = nested[key]; + + if (value != null && + !(isFunction(value) || isError(value) || isWeakMap(value))) { + nested[key] = clone(index == lastIndex ? value : Object(value)); + } + nested = nested[key]; + } + return result; + } + + /** + * Converts `lodash` to an immutable auto-curried iteratee-first data-last + * version with conversion `options` applied. + * + * @param {Object} [options] The options object. See `baseConvert` for more details. + * @returns {Function} Returns the converted `lodash`. + */ + function convertLib(options) { + return _.runInContext.convert(options)(undefined); + } + + /** + * Create a converter function for `func` of `name`. + * + * @param {string} name The name of the function to convert. + * @param {Function} func The function to convert. + * @returns {Function} Returns the new converter function. + */ + function createConverter(name, func) { + var realName = mapping.aliasToReal[name] || name, + methodName = mapping.remap[realName] || realName, + oldOptions = options; + + return function(options) { + var newUtil = isLib ? pristine : helpers, + newFunc = isLib ? pristine[methodName] : func, + newOptions = assign(assign({}, oldOptions), options); + + return baseConvert(newUtil, realName, newFunc, newOptions); + }; + } + + /** + * Creates a function that wraps `func` to invoke its iteratee, with up to `n` + * arguments, ignoring any additional arguments. + * + * @private + * @param {Function} func The function to cap iteratee arguments for. + * @param {number} n The arity cap. + * @returns {Function} Returns the new function. + */ + function iterateeAry(func, n) { + return overArg(func, function(func) { + return typeof func == 'function' ? baseAry(func, n) : func; + }); + } + + /** + * Creates a function that wraps `func` to invoke its iteratee with arguments + * arranged according to the specified `indexes` where the argument value at + * the first index is provided as the first argument, the argument value at + * the second index is provided as the second argument, and so on. + * + * @private + * @param {Function} func The function to rearrange iteratee arguments for. + * @param {number[]} indexes The arranged argument indexes. + * @returns {Function} Returns the new function. + */ + function iterateeRearg(func, indexes) { + return overArg(func, function(func) { + var n = indexes.length; + return baseArity(rearg(baseAry(func, n), indexes), n); + }); + } + + /** + * Creates a function that invokes `func` with its first argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function() { + var length = arguments.length; + if (!length) { + return func(); + } + var args = Array(length); + while (length--) { + args[length] = arguments[length]; + } + var index = config.rearg ? 0 : (length - 1); + args[index] = transform(args[index]); + return func.apply(undefined, args); + }; + } + + /** + * Creates a function that wraps `func` and applys the conversions + * rules by `name`. + * + * @private + * @param {string} name The name of the function to wrap. + * @param {Function} func The function to wrap. + * @returns {Function} Returns the converted function. + */ + function wrap(name, func, placeholder) { + var result, + realName = mapping.aliasToReal[name] || name, + wrapped = func, + wrapper = wrappers[realName]; + + if (wrapper) { + wrapped = wrapper(func); + } + else if (config.immutable) { + if (mapping.mutate.array[realName]) { + wrapped = wrapImmutable(func, cloneArray); + } + else if (mapping.mutate.object[realName]) { + wrapped = wrapImmutable(func, createCloner(func)); + } + else if (mapping.mutate.set[realName]) { + wrapped = wrapImmutable(func, cloneByPath); + } + } + each(aryMethodKeys, function(aryKey) { + each(mapping.aryMethod[aryKey], function(otherName) { + if (realName == otherName) { + var data = mapping.methodSpread[realName], + afterRearg = data && data.afterRearg; + + result = afterRearg + ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey) + : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey); + + result = castCap(realName, result); + result = castCurry(realName, result, aryKey); + return false; + } + }); + return !result; + }); + + result || (result = wrapped); + if (result == func) { + result = forceCurry ? curry(result, 1) : function() { + return func.apply(this, arguments); + }; + } + result.convert = createConverter(realName, func); + result.placeholder = func.placeholder = placeholder; + + return result; + } + + /*--------------------------------------------------------------------------*/ + + if (!isObj) { + return wrap(name, func, defaultHolder); + } + var _ = func; + + // Convert methods by ary cap. + var pairs = []; + each(aryMethodKeys, function(aryKey) { + each(mapping.aryMethod[aryKey], function(key) { + var func = _[mapping.remap[key] || key]; + if (func) { + pairs.push([key, wrap(key, func, _)]); + } + }); + }); + + // Convert remaining methods. + each(keys(_), function(key) { + var func = _[key]; + if (typeof func == 'function') { + var length = pairs.length; + while (length--) { + if (pairs[length][0] == key) { + return; + } + } + func.convert = createConverter(key, func); + pairs.push([key, func]); + } + }); + + // Assign to `_` leaving `_.prototype` unchanged to allow chaining. + each(pairs, function(pair) { + _[pair[0]] = pair[1]; + }); + + _.convert = convertLib; + _.placeholder = _; + + // Assign aliases. + each(keys(_), function(key) { + each(mapping.realToAlias[key] || [], function(alias) { + _[alias] = _[key]; + }); + }); + + return _; +} + +module.exports = baseConvert; diff --git a/node_modules/lodash/fp/_convertBrowser.js b/node_modules/lodash/fp/_convertBrowser.js new file mode 100644 index 0000000..bde030d --- /dev/null +++ b/node_modules/lodash/fp/_convertBrowser.js @@ -0,0 +1,18 @@ +var baseConvert = require('./_baseConvert'); + +/** + * Converts `lodash` to an immutable auto-curried iteratee-first data-last + * version with conversion `options` applied. + * + * @param {Function} lodash The lodash function to convert. + * @param {Object} [options] The options object. See `baseConvert` for more details. + * @returns {Function} Returns the converted `lodash`. + */ +function browserConvert(lodash, options) { + return baseConvert(lodash, lodash, options); +} + +if (typeof _ == 'function' && typeof _.runInContext == 'function') { + _ = browserConvert(_.runInContext()); +} +module.exports = browserConvert; diff --git a/node_modules/lodash/fp/_falseOptions.js b/node_modules/lodash/fp/_falseOptions.js new file mode 100644 index 0000000..773235e --- /dev/null +++ b/node_modules/lodash/fp/_falseOptions.js @@ -0,0 +1,7 @@ +module.exports = { + 'cap': false, + 'curry': false, + 'fixed': false, + 'immutable': false, + 'rearg': false +}; diff --git a/node_modules/lodash/fp/_mapping.js b/node_modules/lodash/fp/_mapping.js new file mode 100644 index 0000000..a642ec0 --- /dev/null +++ b/node_modules/lodash/fp/_mapping.js @@ -0,0 +1,358 @@ +/** Used to map aliases to their real names. */ +exports.aliasToReal = { + + // Lodash aliases. + 'each': 'forEach', + 'eachRight': 'forEachRight', + 'entries': 'toPairs', + 'entriesIn': 'toPairsIn', + 'extend': 'assignIn', + 'extendAll': 'assignInAll', + 'extendAllWith': 'assignInAllWith', + 'extendWith': 'assignInWith', + 'first': 'head', + + // Methods that are curried variants of others. + 'conforms': 'conformsTo', + 'matches': 'isMatch', + 'property': 'get', + + // Ramda aliases. + '__': 'placeholder', + 'F': 'stubFalse', + 'T': 'stubTrue', + 'all': 'every', + 'allPass': 'overEvery', + 'always': 'constant', + 'any': 'some', + 'anyPass': 'overSome', + 'apply': 'spread', + 'assoc': 'set', + 'assocPath': 'set', + 'complement': 'negate', + 'compose': 'flowRight', + 'contains': 'includes', + 'dissoc': 'unset', + 'dissocPath': 'unset', + 'dropLast': 'dropRight', + 'dropLastWhile': 'dropRightWhile', + 'equals': 'isEqual', + 'identical': 'eq', + 'indexBy': 'keyBy', + 'init': 'initial', + 'invertObj': 'invert', + 'juxt': 'over', + 'omitAll': 'omit', + 'nAry': 'ary', + 'path': 'get', + 'pathEq': 'matchesProperty', + 'pathOr': 'getOr', + 'paths': 'at', + 'pickAll': 'pick', + 'pipe': 'flow', + 'pluck': 'map', + 'prop': 'get', + 'propEq': 'matchesProperty', + 'propOr': 'getOr', + 'props': 'at', + 'symmetricDifference': 'xor', + 'symmetricDifferenceBy': 'xorBy', + 'symmetricDifferenceWith': 'xorWith', + 'takeLast': 'takeRight', + 'takeLastWhile': 'takeRightWhile', + 'unapply': 'rest', + 'unnest': 'flatten', + 'useWith': 'overArgs', + 'where': 'conformsTo', + 'whereEq': 'isMatch', + 'zipObj': 'zipObject' +}; + +/** Used to map ary to method names. */ +exports.aryMethod = { + '1': [ + 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create', + 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow', + 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll', + 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse', + 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart', + 'uniqueId', 'words', 'zipAll' + ], + '2': [ + 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith', + 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith', + 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN', + 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference', + 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq', + 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex', + 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach', + 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get', + 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection', + 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy', + 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty', + 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit', + 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial', + 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll', + 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove', + 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex', + 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy', + 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight', + 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars', + 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith', + 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject', + 'zipObjectDeep' + ], + '3': [ + 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith', + 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr', + 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith', + 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth', + 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd', + 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight', + 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy', + 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy', + 'xorWith', 'zipWith' + ], + '4': [ + 'fill', 'setWith', 'updateWith' + ] +}; + +/** Used to map ary to rearg configs. */ +exports.aryRearg = { + '2': [1, 0], + '3': [2, 0, 1], + '4': [3, 2, 0, 1] +}; + +/** Used to map method names to their iteratee ary. */ +exports.iterateeAry = { + 'dropRightWhile': 1, + 'dropWhile': 1, + 'every': 1, + 'filter': 1, + 'find': 1, + 'findFrom': 1, + 'findIndex': 1, + 'findIndexFrom': 1, + 'findKey': 1, + 'findLast': 1, + 'findLastFrom': 1, + 'findLastIndex': 1, + 'findLastIndexFrom': 1, + 'findLastKey': 1, + 'flatMap': 1, + 'flatMapDeep': 1, + 'flatMapDepth': 1, + 'forEach': 1, + 'forEachRight': 1, + 'forIn': 1, + 'forInRight': 1, + 'forOwn': 1, + 'forOwnRight': 1, + 'map': 1, + 'mapKeys': 1, + 'mapValues': 1, + 'partition': 1, + 'reduce': 2, + 'reduceRight': 2, + 'reject': 1, + 'remove': 1, + 'some': 1, + 'takeRightWhile': 1, + 'takeWhile': 1, + 'times': 1, + 'transform': 2 +}; + +/** Used to map method names to iteratee rearg configs. */ +exports.iterateeRearg = { + 'mapKeys': [1], + 'reduceRight': [1, 0] +}; + +/** Used to map method names to rearg configs. */ +exports.methodRearg = { + 'assignInAllWith': [1, 0], + 'assignInWith': [1, 2, 0], + 'assignAllWith': [1, 0], + 'assignWith': [1, 2, 0], + 'differenceBy': [1, 2, 0], + 'differenceWith': [1, 2, 0], + 'getOr': [2, 1, 0], + 'intersectionBy': [1, 2, 0], + 'intersectionWith': [1, 2, 0], + 'isEqualWith': [1, 2, 0], + 'isMatchWith': [2, 1, 0], + 'mergeAllWith': [1, 0], + 'mergeWith': [1, 2, 0], + 'padChars': [2, 1, 0], + 'padCharsEnd': [2, 1, 0], + 'padCharsStart': [2, 1, 0], + 'pullAllBy': [2, 1, 0], + 'pullAllWith': [2, 1, 0], + 'rangeStep': [1, 2, 0], + 'rangeStepRight': [1, 2, 0], + 'setWith': [3, 1, 2, 0], + 'sortedIndexBy': [2, 1, 0], + 'sortedLastIndexBy': [2, 1, 0], + 'unionBy': [1, 2, 0], + 'unionWith': [1, 2, 0], + 'updateWith': [3, 1, 2, 0], + 'xorBy': [1, 2, 0], + 'xorWith': [1, 2, 0], + 'zipWith': [1, 2, 0] +}; + +/** Used to map method names to spread configs. */ +exports.methodSpread = { + 'assignAll': { 'start': 0 }, + 'assignAllWith': { 'start': 0 }, + 'assignInAll': { 'start': 0 }, + 'assignInAllWith': { 'start': 0 }, + 'defaultsAll': { 'start': 0 }, + 'defaultsDeepAll': { 'start': 0 }, + 'invokeArgs': { 'start': 2 }, + 'invokeArgsMap': { 'start': 2 }, + 'mergeAll': { 'start': 0 }, + 'mergeAllWith': { 'start': 0 }, + 'partial': { 'start': 1 }, + 'partialRight': { 'start': 1 }, + 'without': { 'start': 1 }, + 'zipAll': { 'start': 0 } +}; + +/** Used to identify methods which mutate arrays or objects. */ +exports.mutate = { + 'array': { + 'fill': true, + 'pull': true, + 'pullAll': true, + 'pullAllBy': true, + 'pullAllWith': true, + 'pullAt': true, + 'remove': true, + 'reverse': true + }, + 'object': { + 'assign': true, + 'assignAll': true, + 'assignAllWith': true, + 'assignIn': true, + 'assignInAll': true, + 'assignInAllWith': true, + 'assignInWith': true, + 'assignWith': true, + 'defaults': true, + 'defaultsAll': true, + 'defaultsDeep': true, + 'defaultsDeepAll': true, + 'merge': true, + 'mergeAll': true, + 'mergeAllWith': true, + 'mergeWith': true, + }, + 'set': { + 'set': true, + 'setWith': true, + 'unset': true, + 'update': true, + 'updateWith': true + } +}; + +/** Used to map real names to their aliases. */ +exports.realToAlias = (function() { + var hasOwnProperty = Object.prototype.hasOwnProperty, + object = exports.aliasToReal, + result = {}; + + for (var key in object) { + var value = object[key]; + if (hasOwnProperty.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } + } + return result; +}()); + +/** Used to map method names to other names. */ +exports.remap = { + 'assignAll': 'assign', + 'assignAllWith': 'assignWith', + 'assignInAll': 'assignIn', + 'assignInAllWith': 'assignInWith', + 'curryN': 'curry', + 'curryRightN': 'curryRight', + 'defaultsAll': 'defaults', + 'defaultsDeepAll': 'defaultsDeep', + 'findFrom': 'find', + 'findIndexFrom': 'findIndex', + 'findLastFrom': 'findLast', + 'findLastIndexFrom': 'findLastIndex', + 'getOr': 'get', + 'includesFrom': 'includes', + 'indexOfFrom': 'indexOf', + 'invokeArgs': 'invoke', + 'invokeArgsMap': 'invokeMap', + 'lastIndexOfFrom': 'lastIndexOf', + 'mergeAll': 'merge', + 'mergeAllWith': 'mergeWith', + 'padChars': 'pad', + 'padCharsEnd': 'padEnd', + 'padCharsStart': 'padStart', + 'propertyOf': 'get', + 'rangeStep': 'range', + 'rangeStepRight': 'rangeRight', + 'restFrom': 'rest', + 'spreadFrom': 'spread', + 'trimChars': 'trim', + 'trimCharsEnd': 'trimEnd', + 'trimCharsStart': 'trimStart', + 'zipAll': 'zip' +}; + +/** Used to track methods that skip fixing their arity. */ +exports.skipFixed = { + 'castArray': true, + 'flow': true, + 'flowRight': true, + 'iteratee': true, + 'mixin': true, + 'rearg': true, + 'runInContext': true +}; + +/** Used to track methods that skip rearranging arguments. */ +exports.skipRearg = { + 'add': true, + 'assign': true, + 'assignIn': true, + 'bind': true, + 'bindKey': true, + 'concat': true, + 'difference': true, + 'divide': true, + 'eq': true, + 'gt': true, + 'gte': true, + 'isEqual': true, + 'lt': true, + 'lte': true, + 'matchesProperty': true, + 'merge': true, + 'multiply': true, + 'overArgs': true, + 'partial': true, + 'partialRight': true, + 'propertyOf': true, + 'random': true, + 'range': true, + 'rangeRight': true, + 'subtract': true, + 'zip': true, + 'zipObject': true, + 'zipObjectDeep': true +}; diff --git a/node_modules/lodash/fp/_util.js b/node_modules/lodash/fp/_util.js new file mode 100644 index 0000000..1dbf36f --- /dev/null +++ b/node_modules/lodash/fp/_util.js @@ -0,0 +1,16 @@ +module.exports = { + 'ary': require('../ary'), + 'assign': require('../_baseAssign'), + 'clone': require('../clone'), + 'curry': require('../curry'), + 'forEach': require('../_arrayEach'), + 'isArray': require('../isArray'), + 'isError': require('../isError'), + 'isFunction': require('../isFunction'), + 'isWeakMap': require('../isWeakMap'), + 'iteratee': require('../iteratee'), + 'keys': require('../_baseKeys'), + 'rearg': require('../rearg'), + 'toInteger': require('../toInteger'), + 'toPath': require('../toPath') +}; diff --git a/node_modules/lodash/fp/add.js b/node_modules/lodash/fp/add.js new file mode 100644 index 0000000..816eeec --- /dev/null +++ b/node_modules/lodash/fp/add.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('add', require('../add')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/after.js b/node_modules/lodash/fp/after.js new file mode 100644 index 0000000..21a0167 --- /dev/null +++ b/node_modules/lodash/fp/after.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('after', require('../after')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/all.js b/node_modules/lodash/fp/all.js new file mode 100644 index 0000000..d0839f7 --- /dev/null +++ b/node_modules/lodash/fp/all.js @@ -0,0 +1 @@ +module.exports = require('./every'); diff --git a/node_modules/lodash/fp/allPass.js b/node_modules/lodash/fp/allPass.js new file mode 100644 index 0000000..79b73ef --- /dev/null +++ b/node_modules/lodash/fp/allPass.js @@ -0,0 +1 @@ +module.exports = require('./overEvery'); diff --git a/node_modules/lodash/fp/always.js b/node_modules/lodash/fp/always.js new file mode 100644 index 0000000..9887703 --- /dev/null +++ b/node_modules/lodash/fp/always.js @@ -0,0 +1 @@ +module.exports = require('./constant'); diff --git a/node_modules/lodash/fp/any.js b/node_modules/lodash/fp/any.js new file mode 100644 index 0000000..900ac25 --- /dev/null +++ b/node_modules/lodash/fp/any.js @@ -0,0 +1 @@ +module.exports = require('./some'); diff --git a/node_modules/lodash/fp/anyPass.js b/node_modules/lodash/fp/anyPass.js new file mode 100644 index 0000000..2774ab3 --- /dev/null +++ b/node_modules/lodash/fp/anyPass.js @@ -0,0 +1 @@ +module.exports = require('./overSome'); diff --git a/node_modules/lodash/fp/apply.js b/node_modules/lodash/fp/apply.js new file mode 100644 index 0000000..2b75712 --- /dev/null +++ b/node_modules/lodash/fp/apply.js @@ -0,0 +1 @@ +module.exports = require('./spread'); diff --git a/node_modules/lodash/fp/array.js b/node_modules/lodash/fp/array.js new file mode 100644 index 0000000..fe939c2 --- /dev/null +++ b/node_modules/lodash/fp/array.js @@ -0,0 +1,2 @@ +var convert = require('./convert'); +module.exports = convert(require('../array')); diff --git a/node_modules/lodash/fp/ary.js b/node_modules/lodash/fp/ary.js new file mode 100644 index 0000000..8edf187 --- /dev/null +++ b/node_modules/lodash/fp/ary.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('ary', require('../ary')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/assign.js b/node_modules/lodash/fp/assign.js new file mode 100644 index 0000000..23f47af --- /dev/null +++ b/node_modules/lodash/fp/assign.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('assign', require('../assign')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/assignAll.js b/node_modules/lodash/fp/assignAll.js new file mode 100644 index 0000000..b1d36c7 --- /dev/null +++ b/node_modules/lodash/fp/assignAll.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('assignAll', require('../assign')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/assignAllWith.js b/node_modules/lodash/fp/assignAllWith.js new file mode 100644 index 0000000..21e836e --- /dev/null +++ b/node_modules/lodash/fp/assignAllWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('assignAllWith', require('../assignWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/assignIn.js b/node_modules/lodash/fp/assignIn.js new file mode 100644 index 0000000..6e7c65f --- /dev/null +++ b/node_modules/lodash/fp/assignIn.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('assignIn', require('../assignIn')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/assignInAll.js b/node_modules/lodash/fp/assignInAll.js new file mode 100644 index 0000000..7ba75db --- /dev/null +++ b/node_modules/lodash/fp/assignInAll.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('assignInAll', require('../assignIn')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/assignInAllWith.js b/node_modules/lodash/fp/assignInAllWith.js new file mode 100644 index 0000000..e766903 --- /dev/null +++ b/node_modules/lodash/fp/assignInAllWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('assignInAllWith', require('../assignInWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/assignInWith.js b/node_modules/lodash/fp/assignInWith.js new file mode 100644 index 0000000..acb5923 --- /dev/null +++ b/node_modules/lodash/fp/assignInWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('assignInWith', require('../assignInWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/assignWith.js b/node_modules/lodash/fp/assignWith.js new file mode 100644 index 0000000..eb92521 --- /dev/null +++ b/node_modules/lodash/fp/assignWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('assignWith', require('../assignWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/assoc.js b/node_modules/lodash/fp/assoc.js new file mode 100644 index 0000000..7648820 --- /dev/null +++ b/node_modules/lodash/fp/assoc.js @@ -0,0 +1 @@ +module.exports = require('./set'); diff --git a/node_modules/lodash/fp/assocPath.js b/node_modules/lodash/fp/assocPath.js new file mode 100644 index 0000000..7648820 --- /dev/null +++ b/node_modules/lodash/fp/assocPath.js @@ -0,0 +1 @@ +module.exports = require('./set'); diff --git a/node_modules/lodash/fp/at.js b/node_modules/lodash/fp/at.js new file mode 100644 index 0000000..cc39d25 --- /dev/null +++ b/node_modules/lodash/fp/at.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('at', require('../at')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/attempt.js b/node_modules/lodash/fp/attempt.js new file mode 100644 index 0000000..26ca42e --- /dev/null +++ b/node_modules/lodash/fp/attempt.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('attempt', require('../attempt')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/before.js b/node_modules/lodash/fp/before.js new file mode 100644 index 0000000..7a2de65 --- /dev/null +++ b/node_modules/lodash/fp/before.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('before', require('../before')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/bind.js b/node_modules/lodash/fp/bind.js new file mode 100644 index 0000000..5cbe4f3 --- /dev/null +++ b/node_modules/lodash/fp/bind.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('bind', require('../bind')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/bindAll.js b/node_modules/lodash/fp/bindAll.js new file mode 100644 index 0000000..6b4a4a0 --- /dev/null +++ b/node_modules/lodash/fp/bindAll.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('bindAll', require('../bindAll')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/bindKey.js b/node_modules/lodash/fp/bindKey.js new file mode 100644 index 0000000..6a46c6b --- /dev/null +++ b/node_modules/lodash/fp/bindKey.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('bindKey', require('../bindKey')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/camelCase.js b/node_modules/lodash/fp/camelCase.js new file mode 100644 index 0000000..87b77b4 --- /dev/null +++ b/node_modules/lodash/fp/camelCase.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('camelCase', require('../camelCase'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/capitalize.js b/node_modules/lodash/fp/capitalize.js new file mode 100644 index 0000000..cac74e1 --- /dev/null +++ b/node_modules/lodash/fp/capitalize.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('capitalize', require('../capitalize'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/castArray.js b/node_modules/lodash/fp/castArray.js new file mode 100644 index 0000000..8681c09 --- /dev/null +++ b/node_modules/lodash/fp/castArray.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('castArray', require('../castArray')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/ceil.js b/node_modules/lodash/fp/ceil.js new file mode 100644 index 0000000..f416b72 --- /dev/null +++ b/node_modules/lodash/fp/ceil.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('ceil', require('../ceil')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/chain.js b/node_modules/lodash/fp/chain.js new file mode 100644 index 0000000..604fe39 --- /dev/null +++ b/node_modules/lodash/fp/chain.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('chain', require('../chain'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/chunk.js b/node_modules/lodash/fp/chunk.js new file mode 100644 index 0000000..871ab08 --- /dev/null +++ b/node_modules/lodash/fp/chunk.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('chunk', require('../chunk')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/clamp.js b/node_modules/lodash/fp/clamp.js new file mode 100644 index 0000000..3b06c01 --- /dev/null +++ b/node_modules/lodash/fp/clamp.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('clamp', require('../clamp')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/clone.js b/node_modules/lodash/fp/clone.js new file mode 100644 index 0000000..cadb59c --- /dev/null +++ b/node_modules/lodash/fp/clone.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('clone', require('../clone'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/cloneDeep.js b/node_modules/lodash/fp/cloneDeep.js new file mode 100644 index 0000000..a6107aa --- /dev/null +++ b/node_modules/lodash/fp/cloneDeep.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('cloneDeep', require('../cloneDeep'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/cloneDeepWith.js b/node_modules/lodash/fp/cloneDeepWith.js new file mode 100644 index 0000000..6f01e44 --- /dev/null +++ b/node_modules/lodash/fp/cloneDeepWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('cloneDeepWith', require('../cloneDeepWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/cloneWith.js b/node_modules/lodash/fp/cloneWith.js new file mode 100644 index 0000000..aa88578 --- /dev/null +++ b/node_modules/lodash/fp/cloneWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('cloneWith', require('../cloneWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/collection.js b/node_modules/lodash/fp/collection.js new file mode 100644 index 0000000..fc8b328 --- /dev/null +++ b/node_modules/lodash/fp/collection.js @@ -0,0 +1,2 @@ +var convert = require('./convert'); +module.exports = convert(require('../collection')); diff --git a/node_modules/lodash/fp/commit.js b/node_modules/lodash/fp/commit.js new file mode 100644 index 0000000..130a894 --- /dev/null +++ b/node_modules/lodash/fp/commit.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('commit', require('../commit'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/compact.js b/node_modules/lodash/fp/compact.js new file mode 100644 index 0000000..ce8f7a1 --- /dev/null +++ b/node_modules/lodash/fp/compact.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('compact', require('../compact'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/complement.js b/node_modules/lodash/fp/complement.js new file mode 100644 index 0000000..93eb462 --- /dev/null +++ b/node_modules/lodash/fp/complement.js @@ -0,0 +1 @@ +module.exports = require('./negate'); diff --git a/node_modules/lodash/fp/compose.js b/node_modules/lodash/fp/compose.js new file mode 100644 index 0000000..1954e94 --- /dev/null +++ b/node_modules/lodash/fp/compose.js @@ -0,0 +1 @@ +module.exports = require('./flowRight'); diff --git a/node_modules/lodash/fp/concat.js b/node_modules/lodash/fp/concat.js new file mode 100644 index 0000000..e59346a --- /dev/null +++ b/node_modules/lodash/fp/concat.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('concat', require('../concat')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/cond.js b/node_modules/lodash/fp/cond.js new file mode 100644 index 0000000..6a0120e --- /dev/null +++ b/node_modules/lodash/fp/cond.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('cond', require('../cond'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/conforms.js b/node_modules/lodash/fp/conforms.js new file mode 100644 index 0000000..3247f64 --- /dev/null +++ b/node_modules/lodash/fp/conforms.js @@ -0,0 +1 @@ +module.exports = require('./conformsTo'); diff --git a/node_modules/lodash/fp/conformsTo.js b/node_modules/lodash/fp/conformsTo.js new file mode 100644 index 0000000..aa7f41e --- /dev/null +++ b/node_modules/lodash/fp/conformsTo.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('conformsTo', require('../conformsTo')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/constant.js b/node_modules/lodash/fp/constant.js new file mode 100644 index 0000000..9e406fc --- /dev/null +++ b/node_modules/lodash/fp/constant.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('constant', require('../constant'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/contains.js b/node_modules/lodash/fp/contains.js new file mode 100644 index 0000000..594722a --- /dev/null +++ b/node_modules/lodash/fp/contains.js @@ -0,0 +1 @@ +module.exports = require('./includes'); diff --git a/node_modules/lodash/fp/convert.js b/node_modules/lodash/fp/convert.js new file mode 100644 index 0000000..4795dc4 --- /dev/null +++ b/node_modules/lodash/fp/convert.js @@ -0,0 +1,18 @@ +var baseConvert = require('./_baseConvert'), + util = require('./_util'); + +/** + * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last + * version with conversion `options` applied. If `name` is an object its methods + * will be converted. + * + * @param {string} name The name of the function to wrap. + * @param {Function} [func] The function to wrap. + * @param {Object} [options] The options object. See `baseConvert` for more details. + * @returns {Function|Object} Returns the converted function or object. + */ +function convert(name, func, options) { + return baseConvert(util, name, func, options); +} + +module.exports = convert; diff --git a/node_modules/lodash/fp/countBy.js b/node_modules/lodash/fp/countBy.js new file mode 100644 index 0000000..dfa4643 --- /dev/null +++ b/node_modules/lodash/fp/countBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('countBy', require('../countBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/create.js b/node_modules/lodash/fp/create.js new file mode 100644 index 0000000..752025f --- /dev/null +++ b/node_modules/lodash/fp/create.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('create', require('../create')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/curry.js b/node_modules/lodash/fp/curry.js new file mode 100644 index 0000000..b0b4168 --- /dev/null +++ b/node_modules/lodash/fp/curry.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('curry', require('../curry')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/curryN.js b/node_modules/lodash/fp/curryN.js new file mode 100644 index 0000000..2ae7d00 --- /dev/null +++ b/node_modules/lodash/fp/curryN.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('curryN', require('../curry')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/curryRight.js b/node_modules/lodash/fp/curryRight.js new file mode 100644 index 0000000..cb619eb --- /dev/null +++ b/node_modules/lodash/fp/curryRight.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('curryRight', require('../curryRight')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/curryRightN.js b/node_modules/lodash/fp/curryRightN.js new file mode 100644 index 0000000..2495afc --- /dev/null +++ b/node_modules/lodash/fp/curryRightN.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('curryRightN', require('../curryRight')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/date.js b/node_modules/lodash/fp/date.js new file mode 100644 index 0000000..82cb952 --- /dev/null +++ b/node_modules/lodash/fp/date.js @@ -0,0 +1,2 @@ +var convert = require('./convert'); +module.exports = convert(require('../date')); diff --git a/node_modules/lodash/fp/debounce.js b/node_modules/lodash/fp/debounce.js new file mode 100644 index 0000000..2612229 --- /dev/null +++ b/node_modules/lodash/fp/debounce.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('debounce', require('../debounce')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/deburr.js b/node_modules/lodash/fp/deburr.js new file mode 100644 index 0000000..96463ab --- /dev/null +++ b/node_modules/lodash/fp/deburr.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('deburr', require('../deburr'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/defaultTo.js b/node_modules/lodash/fp/defaultTo.js new file mode 100644 index 0000000..d6b52a4 --- /dev/null +++ b/node_modules/lodash/fp/defaultTo.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('defaultTo', require('../defaultTo')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/defaults.js b/node_modules/lodash/fp/defaults.js new file mode 100644 index 0000000..e1a8e6e --- /dev/null +++ b/node_modules/lodash/fp/defaults.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('defaults', require('../defaults')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/defaultsAll.js b/node_modules/lodash/fp/defaultsAll.js new file mode 100644 index 0000000..238fcc3 --- /dev/null +++ b/node_modules/lodash/fp/defaultsAll.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('defaultsAll', require('../defaults')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/defaultsDeep.js b/node_modules/lodash/fp/defaultsDeep.js new file mode 100644 index 0000000..1f172ff --- /dev/null +++ b/node_modules/lodash/fp/defaultsDeep.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('defaultsDeep', require('../defaultsDeep')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/defaultsDeepAll.js b/node_modules/lodash/fp/defaultsDeepAll.js new file mode 100644 index 0000000..6835f2f --- /dev/null +++ b/node_modules/lodash/fp/defaultsDeepAll.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('defaultsDeepAll', require('../defaultsDeep')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/defer.js b/node_modules/lodash/fp/defer.js new file mode 100644 index 0000000..ec7990f --- /dev/null +++ b/node_modules/lodash/fp/defer.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('defer', require('../defer'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/delay.js b/node_modules/lodash/fp/delay.js new file mode 100644 index 0000000..556dbd5 --- /dev/null +++ b/node_modules/lodash/fp/delay.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('delay', require('../delay')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/difference.js b/node_modules/lodash/fp/difference.js new file mode 100644 index 0000000..2d03765 --- /dev/null +++ b/node_modules/lodash/fp/difference.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('difference', require('../difference')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/differenceBy.js b/node_modules/lodash/fp/differenceBy.js new file mode 100644 index 0000000..2f91491 --- /dev/null +++ b/node_modules/lodash/fp/differenceBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('differenceBy', require('../differenceBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/differenceWith.js b/node_modules/lodash/fp/differenceWith.js new file mode 100644 index 0000000..bcf5ad2 --- /dev/null +++ b/node_modules/lodash/fp/differenceWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('differenceWith', require('../differenceWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/dissoc.js b/node_modules/lodash/fp/dissoc.js new file mode 100644 index 0000000..7ec7be1 --- /dev/null +++ b/node_modules/lodash/fp/dissoc.js @@ -0,0 +1 @@ +module.exports = require('./unset'); diff --git a/node_modules/lodash/fp/dissocPath.js b/node_modules/lodash/fp/dissocPath.js new file mode 100644 index 0000000..7ec7be1 --- /dev/null +++ b/node_modules/lodash/fp/dissocPath.js @@ -0,0 +1 @@ +module.exports = require('./unset'); diff --git a/node_modules/lodash/fp/divide.js b/node_modules/lodash/fp/divide.js new file mode 100644 index 0000000..82048c5 --- /dev/null +++ b/node_modules/lodash/fp/divide.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('divide', require('../divide')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/drop.js b/node_modules/lodash/fp/drop.js new file mode 100644 index 0000000..2fa9b4f --- /dev/null +++ b/node_modules/lodash/fp/drop.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('drop', require('../drop')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/dropLast.js b/node_modules/lodash/fp/dropLast.js new file mode 100644 index 0000000..174e525 --- /dev/null +++ b/node_modules/lodash/fp/dropLast.js @@ -0,0 +1 @@ +module.exports = require('./dropRight'); diff --git a/node_modules/lodash/fp/dropLastWhile.js b/node_modules/lodash/fp/dropLastWhile.js new file mode 100644 index 0000000..be2a9d2 --- /dev/null +++ b/node_modules/lodash/fp/dropLastWhile.js @@ -0,0 +1 @@ +module.exports = require('./dropRightWhile'); diff --git a/node_modules/lodash/fp/dropRight.js b/node_modules/lodash/fp/dropRight.js new file mode 100644 index 0000000..e98881f --- /dev/null +++ b/node_modules/lodash/fp/dropRight.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('dropRight', require('../dropRight')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/dropRightWhile.js b/node_modules/lodash/fp/dropRightWhile.js new file mode 100644 index 0000000..cacaa70 --- /dev/null +++ b/node_modules/lodash/fp/dropRightWhile.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('dropRightWhile', require('../dropRightWhile')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/dropWhile.js b/node_modules/lodash/fp/dropWhile.js new file mode 100644 index 0000000..285f864 --- /dev/null +++ b/node_modules/lodash/fp/dropWhile.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('dropWhile', require('../dropWhile')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/each.js b/node_modules/lodash/fp/each.js new file mode 100644 index 0000000..8800f42 --- /dev/null +++ b/node_modules/lodash/fp/each.js @@ -0,0 +1 @@ +module.exports = require('./forEach'); diff --git a/node_modules/lodash/fp/eachRight.js b/node_modules/lodash/fp/eachRight.js new file mode 100644 index 0000000..3252b2a --- /dev/null +++ b/node_modules/lodash/fp/eachRight.js @@ -0,0 +1 @@ +module.exports = require('./forEachRight'); diff --git a/node_modules/lodash/fp/endsWith.js b/node_modules/lodash/fp/endsWith.js new file mode 100644 index 0000000..17dc2a4 --- /dev/null +++ b/node_modules/lodash/fp/endsWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('endsWith', require('../endsWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/entries.js b/node_modules/lodash/fp/entries.js new file mode 100644 index 0000000..7a88df2 --- /dev/null +++ b/node_modules/lodash/fp/entries.js @@ -0,0 +1 @@ +module.exports = require('./toPairs'); diff --git a/node_modules/lodash/fp/entriesIn.js b/node_modules/lodash/fp/entriesIn.js new file mode 100644 index 0000000..f6c6331 --- /dev/null +++ b/node_modules/lodash/fp/entriesIn.js @@ -0,0 +1 @@ +module.exports = require('./toPairsIn'); diff --git a/node_modules/lodash/fp/eq.js b/node_modules/lodash/fp/eq.js new file mode 100644 index 0000000..9a3d21b --- /dev/null +++ b/node_modules/lodash/fp/eq.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('eq', require('../eq')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/equals.js b/node_modules/lodash/fp/equals.js new file mode 100644 index 0000000..e6a5ce0 --- /dev/null +++ b/node_modules/lodash/fp/equals.js @@ -0,0 +1 @@ +module.exports = require('./isEqual'); diff --git a/node_modules/lodash/fp/escape.js b/node_modules/lodash/fp/escape.js new file mode 100644 index 0000000..52c1fbb --- /dev/null +++ b/node_modules/lodash/fp/escape.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('escape', require('../escape'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/escapeRegExp.js b/node_modules/lodash/fp/escapeRegExp.js new file mode 100644 index 0000000..369b2ef --- /dev/null +++ b/node_modules/lodash/fp/escapeRegExp.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('escapeRegExp', require('../escapeRegExp'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/every.js b/node_modules/lodash/fp/every.js new file mode 100644 index 0000000..95c2776 --- /dev/null +++ b/node_modules/lodash/fp/every.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('every', require('../every')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/extend.js b/node_modules/lodash/fp/extend.js new file mode 100644 index 0000000..e00166c --- /dev/null +++ b/node_modules/lodash/fp/extend.js @@ -0,0 +1 @@ +module.exports = require('./assignIn'); diff --git a/node_modules/lodash/fp/extendAll.js b/node_modules/lodash/fp/extendAll.js new file mode 100644 index 0000000..cc55b64 --- /dev/null +++ b/node_modules/lodash/fp/extendAll.js @@ -0,0 +1 @@ +module.exports = require('./assignInAll'); diff --git a/node_modules/lodash/fp/extendAllWith.js b/node_modules/lodash/fp/extendAllWith.js new file mode 100644 index 0000000..6679d20 --- /dev/null +++ b/node_modules/lodash/fp/extendAllWith.js @@ -0,0 +1 @@ +module.exports = require('./assignInAllWith'); diff --git a/node_modules/lodash/fp/extendWith.js b/node_modules/lodash/fp/extendWith.js new file mode 100644 index 0000000..dbdcb3b --- /dev/null +++ b/node_modules/lodash/fp/extendWith.js @@ -0,0 +1 @@ +module.exports = require('./assignInWith'); diff --git a/node_modules/lodash/fp/fill.js b/node_modules/lodash/fp/fill.js new file mode 100644 index 0000000..b2d47e8 --- /dev/null +++ b/node_modules/lodash/fp/fill.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('fill', require('../fill')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/filter.js b/node_modules/lodash/fp/filter.js new file mode 100644 index 0000000..796d501 --- /dev/null +++ b/node_modules/lodash/fp/filter.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('filter', require('../filter')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/find.js b/node_modules/lodash/fp/find.js new file mode 100644 index 0000000..f805d33 --- /dev/null +++ b/node_modules/lodash/fp/find.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('find', require('../find')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/findFrom.js b/node_modules/lodash/fp/findFrom.js new file mode 100644 index 0000000..da8275e --- /dev/null +++ b/node_modules/lodash/fp/findFrom.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('findFrom', require('../find')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/findIndex.js b/node_modules/lodash/fp/findIndex.js new file mode 100644 index 0000000..8c15fd1 --- /dev/null +++ b/node_modules/lodash/fp/findIndex.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('findIndex', require('../findIndex')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/findIndexFrom.js b/node_modules/lodash/fp/findIndexFrom.js new file mode 100644 index 0000000..32e98cb --- /dev/null +++ b/node_modules/lodash/fp/findIndexFrom.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('findIndexFrom', require('../findIndex')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/findKey.js b/node_modules/lodash/fp/findKey.js new file mode 100644 index 0000000..475bcfa --- /dev/null +++ b/node_modules/lodash/fp/findKey.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('findKey', require('../findKey')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/findLast.js b/node_modules/lodash/fp/findLast.js new file mode 100644 index 0000000..093fe94 --- /dev/null +++ b/node_modules/lodash/fp/findLast.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('findLast', require('../findLast')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/findLastFrom.js b/node_modules/lodash/fp/findLastFrom.js new file mode 100644 index 0000000..76c38fb --- /dev/null +++ b/node_modules/lodash/fp/findLastFrom.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('findLastFrom', require('../findLast')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/findLastIndex.js b/node_modules/lodash/fp/findLastIndex.js new file mode 100644 index 0000000..36986df --- /dev/null +++ b/node_modules/lodash/fp/findLastIndex.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('findLastIndex', require('../findLastIndex')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/findLastIndexFrom.js b/node_modules/lodash/fp/findLastIndexFrom.js new file mode 100644 index 0000000..34c8176 --- /dev/null +++ b/node_modules/lodash/fp/findLastIndexFrom.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('findLastIndexFrom', require('../findLastIndex')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/findLastKey.js b/node_modules/lodash/fp/findLastKey.js new file mode 100644 index 0000000..5f81b60 --- /dev/null +++ b/node_modules/lodash/fp/findLastKey.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('findLastKey', require('../findLastKey')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/first.js b/node_modules/lodash/fp/first.js new file mode 100644 index 0000000..53f4ad1 --- /dev/null +++ b/node_modules/lodash/fp/first.js @@ -0,0 +1 @@ +module.exports = require('./head'); diff --git a/node_modules/lodash/fp/flatMap.js b/node_modules/lodash/fp/flatMap.js new file mode 100644 index 0000000..d01dc4d --- /dev/null +++ b/node_modules/lodash/fp/flatMap.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('flatMap', require('../flatMap')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/flatMapDeep.js b/node_modules/lodash/fp/flatMapDeep.js new file mode 100644 index 0000000..569c42e --- /dev/null +++ b/node_modules/lodash/fp/flatMapDeep.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('flatMapDeep', require('../flatMapDeep')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/flatMapDepth.js b/node_modules/lodash/fp/flatMapDepth.js new file mode 100644 index 0000000..6eb68fd --- /dev/null +++ b/node_modules/lodash/fp/flatMapDepth.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('flatMapDepth', require('../flatMapDepth')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/flatten.js b/node_modules/lodash/fp/flatten.js new file mode 100644 index 0000000..30425d8 --- /dev/null +++ b/node_modules/lodash/fp/flatten.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('flatten', require('../flatten'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/flattenDeep.js b/node_modules/lodash/fp/flattenDeep.js new file mode 100644 index 0000000..aed5db2 --- /dev/null +++ b/node_modules/lodash/fp/flattenDeep.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('flattenDeep', require('../flattenDeep'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/flattenDepth.js b/node_modules/lodash/fp/flattenDepth.js new file mode 100644 index 0000000..ad65e37 --- /dev/null +++ b/node_modules/lodash/fp/flattenDepth.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('flattenDepth', require('../flattenDepth')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/flip.js b/node_modules/lodash/fp/flip.js new file mode 100644 index 0000000..0547e7b --- /dev/null +++ b/node_modules/lodash/fp/flip.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('flip', require('../flip'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/floor.js b/node_modules/lodash/fp/floor.js new file mode 100644 index 0000000..a6cf335 --- /dev/null +++ b/node_modules/lodash/fp/floor.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('floor', require('../floor')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/flow.js b/node_modules/lodash/fp/flow.js new file mode 100644 index 0000000..cd83677 --- /dev/null +++ b/node_modules/lodash/fp/flow.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('flow', require('../flow')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/flowRight.js b/node_modules/lodash/fp/flowRight.js new file mode 100644 index 0000000..972a5b9 --- /dev/null +++ b/node_modules/lodash/fp/flowRight.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('flowRight', require('../flowRight')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/forEach.js b/node_modules/lodash/fp/forEach.js new file mode 100644 index 0000000..2f49452 --- /dev/null +++ b/node_modules/lodash/fp/forEach.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('forEach', require('../forEach')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/forEachRight.js b/node_modules/lodash/fp/forEachRight.js new file mode 100644 index 0000000..3ff9733 --- /dev/null +++ b/node_modules/lodash/fp/forEachRight.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('forEachRight', require('../forEachRight')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/forIn.js b/node_modules/lodash/fp/forIn.js new file mode 100644 index 0000000..9341749 --- /dev/null +++ b/node_modules/lodash/fp/forIn.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('forIn', require('../forIn')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/forInRight.js b/node_modules/lodash/fp/forInRight.js new file mode 100644 index 0000000..cecf8bb --- /dev/null +++ b/node_modules/lodash/fp/forInRight.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('forInRight', require('../forInRight')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/forOwn.js b/node_modules/lodash/fp/forOwn.js new file mode 100644 index 0000000..246449e --- /dev/null +++ b/node_modules/lodash/fp/forOwn.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('forOwn', require('../forOwn')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/forOwnRight.js b/node_modules/lodash/fp/forOwnRight.js new file mode 100644 index 0000000..c5e826e --- /dev/null +++ b/node_modules/lodash/fp/forOwnRight.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('forOwnRight', require('../forOwnRight')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/fromPairs.js b/node_modules/lodash/fp/fromPairs.js new file mode 100644 index 0000000..f8cc596 --- /dev/null +++ b/node_modules/lodash/fp/fromPairs.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('fromPairs', require('../fromPairs')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/function.js b/node_modules/lodash/fp/function.js new file mode 100644 index 0000000..dfe69b1 --- /dev/null +++ b/node_modules/lodash/fp/function.js @@ -0,0 +1,2 @@ +var convert = require('./convert'); +module.exports = convert(require('../function')); diff --git a/node_modules/lodash/fp/functions.js b/node_modules/lodash/fp/functions.js new file mode 100644 index 0000000..09d1bb1 --- /dev/null +++ b/node_modules/lodash/fp/functions.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('functions', require('../functions'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/functionsIn.js b/node_modules/lodash/fp/functionsIn.js new file mode 100644 index 0000000..2cfeb83 --- /dev/null +++ b/node_modules/lodash/fp/functionsIn.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('functionsIn', require('../functionsIn'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/get.js b/node_modules/lodash/fp/get.js new file mode 100644 index 0000000..6d3a328 --- /dev/null +++ b/node_modules/lodash/fp/get.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('get', require('../get')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/getOr.js b/node_modules/lodash/fp/getOr.js new file mode 100644 index 0000000..7dbf771 --- /dev/null +++ b/node_modules/lodash/fp/getOr.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('getOr', require('../get')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/groupBy.js b/node_modules/lodash/fp/groupBy.js new file mode 100644 index 0000000..fc0bc78 --- /dev/null +++ b/node_modules/lodash/fp/groupBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('groupBy', require('../groupBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/gt.js b/node_modules/lodash/fp/gt.js new file mode 100644 index 0000000..9e57c80 --- /dev/null +++ b/node_modules/lodash/fp/gt.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('gt', require('../gt')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/gte.js b/node_modules/lodash/fp/gte.js new file mode 100644 index 0000000..4584786 --- /dev/null +++ b/node_modules/lodash/fp/gte.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('gte', require('../gte')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/has.js b/node_modules/lodash/fp/has.js new file mode 100644 index 0000000..b901298 --- /dev/null +++ b/node_modules/lodash/fp/has.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('has', require('../has')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/hasIn.js b/node_modules/lodash/fp/hasIn.js new file mode 100644 index 0000000..b3c3d1a --- /dev/null +++ b/node_modules/lodash/fp/hasIn.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('hasIn', require('../hasIn')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/head.js b/node_modules/lodash/fp/head.js new file mode 100644 index 0000000..2694f0a --- /dev/null +++ b/node_modules/lodash/fp/head.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('head', require('../head'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/identical.js b/node_modules/lodash/fp/identical.js new file mode 100644 index 0000000..85563f4 --- /dev/null +++ b/node_modules/lodash/fp/identical.js @@ -0,0 +1 @@ +module.exports = require('./eq'); diff --git a/node_modules/lodash/fp/identity.js b/node_modules/lodash/fp/identity.js new file mode 100644 index 0000000..096415a --- /dev/null +++ b/node_modules/lodash/fp/identity.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('identity', require('../identity'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/inRange.js b/node_modules/lodash/fp/inRange.js new file mode 100644 index 0000000..202d940 --- /dev/null +++ b/node_modules/lodash/fp/inRange.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('inRange', require('../inRange')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/includes.js b/node_modules/lodash/fp/includes.js new file mode 100644 index 0000000..1146780 --- /dev/null +++ b/node_modules/lodash/fp/includes.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('includes', require('../includes')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/includesFrom.js b/node_modules/lodash/fp/includesFrom.js new file mode 100644 index 0000000..683afdb --- /dev/null +++ b/node_modules/lodash/fp/includesFrom.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('includesFrom', require('../includes')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/indexBy.js b/node_modules/lodash/fp/indexBy.js new file mode 100644 index 0000000..7e64bc0 --- /dev/null +++ b/node_modules/lodash/fp/indexBy.js @@ -0,0 +1 @@ +module.exports = require('./keyBy'); diff --git a/node_modules/lodash/fp/indexOf.js b/node_modules/lodash/fp/indexOf.js new file mode 100644 index 0000000..524658e --- /dev/null +++ b/node_modules/lodash/fp/indexOf.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('indexOf', require('../indexOf')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/indexOfFrom.js b/node_modules/lodash/fp/indexOfFrom.js new file mode 100644 index 0000000..d99c822 --- /dev/null +++ b/node_modules/lodash/fp/indexOfFrom.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('indexOfFrom', require('../indexOf')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/init.js b/node_modules/lodash/fp/init.js new file mode 100644 index 0000000..2f88d8b --- /dev/null +++ b/node_modules/lodash/fp/init.js @@ -0,0 +1 @@ +module.exports = require('./initial'); diff --git a/node_modules/lodash/fp/initial.js b/node_modules/lodash/fp/initial.js new file mode 100644 index 0000000..b732ba0 --- /dev/null +++ b/node_modules/lodash/fp/initial.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('initial', require('../initial'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/intersection.js b/node_modules/lodash/fp/intersection.js new file mode 100644 index 0000000..52936d5 --- /dev/null +++ b/node_modules/lodash/fp/intersection.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('intersection', require('../intersection')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/intersectionBy.js b/node_modules/lodash/fp/intersectionBy.js new file mode 100644 index 0000000..72629f2 --- /dev/null +++ b/node_modules/lodash/fp/intersectionBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('intersectionBy', require('../intersectionBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/intersectionWith.js b/node_modules/lodash/fp/intersectionWith.js new file mode 100644 index 0000000..e064f40 --- /dev/null +++ b/node_modules/lodash/fp/intersectionWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('intersectionWith', require('../intersectionWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/invert.js b/node_modules/lodash/fp/invert.js new file mode 100644 index 0000000..2d5d1f0 --- /dev/null +++ b/node_modules/lodash/fp/invert.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('invert', require('../invert')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/invertBy.js b/node_modules/lodash/fp/invertBy.js new file mode 100644 index 0000000..63ca97e --- /dev/null +++ b/node_modules/lodash/fp/invertBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('invertBy', require('../invertBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/invertObj.js b/node_modules/lodash/fp/invertObj.js new file mode 100644 index 0000000..f1d842e --- /dev/null +++ b/node_modules/lodash/fp/invertObj.js @@ -0,0 +1 @@ +module.exports = require('./invert'); diff --git a/node_modules/lodash/fp/invoke.js b/node_modules/lodash/fp/invoke.js new file mode 100644 index 0000000..fcf17f0 --- /dev/null +++ b/node_modules/lodash/fp/invoke.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('invoke', require('../invoke')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/invokeArgs.js b/node_modules/lodash/fp/invokeArgs.js new file mode 100644 index 0000000..d3f2953 --- /dev/null +++ b/node_modules/lodash/fp/invokeArgs.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('invokeArgs', require('../invoke')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/invokeArgsMap.js b/node_modules/lodash/fp/invokeArgsMap.js new file mode 100644 index 0000000..eaa9f84 --- /dev/null +++ b/node_modules/lodash/fp/invokeArgsMap.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('invokeArgsMap', require('../invokeMap')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/invokeMap.js b/node_modules/lodash/fp/invokeMap.js new file mode 100644 index 0000000..6515fd7 --- /dev/null +++ b/node_modules/lodash/fp/invokeMap.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('invokeMap', require('../invokeMap')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isArguments.js b/node_modules/lodash/fp/isArguments.js new file mode 100644 index 0000000..1d93c9e --- /dev/null +++ b/node_modules/lodash/fp/isArguments.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isArguments', require('../isArguments'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isArray.js b/node_modules/lodash/fp/isArray.js new file mode 100644 index 0000000..ba7ade8 --- /dev/null +++ b/node_modules/lodash/fp/isArray.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isArray', require('../isArray'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isArrayBuffer.js b/node_modules/lodash/fp/isArrayBuffer.js new file mode 100644 index 0000000..5088513 --- /dev/null +++ b/node_modules/lodash/fp/isArrayBuffer.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isArrayBuffer', require('../isArrayBuffer'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isArrayLike.js b/node_modules/lodash/fp/isArrayLike.js new file mode 100644 index 0000000..8f1856b --- /dev/null +++ b/node_modules/lodash/fp/isArrayLike.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isArrayLike', require('../isArrayLike'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isArrayLikeObject.js b/node_modules/lodash/fp/isArrayLikeObject.js new file mode 100644 index 0000000..2108498 --- /dev/null +++ b/node_modules/lodash/fp/isArrayLikeObject.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isArrayLikeObject', require('../isArrayLikeObject'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isBoolean.js b/node_modules/lodash/fp/isBoolean.js new file mode 100644 index 0000000..9339f75 --- /dev/null +++ b/node_modules/lodash/fp/isBoolean.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isBoolean', require('../isBoolean'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isBuffer.js b/node_modules/lodash/fp/isBuffer.js new file mode 100644 index 0000000..e60b123 --- /dev/null +++ b/node_modules/lodash/fp/isBuffer.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isBuffer', require('../isBuffer'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isDate.js b/node_modules/lodash/fp/isDate.js new file mode 100644 index 0000000..dc41d08 --- /dev/null +++ b/node_modules/lodash/fp/isDate.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isDate', require('../isDate'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isElement.js b/node_modules/lodash/fp/isElement.js new file mode 100644 index 0000000..18ee039 --- /dev/null +++ b/node_modules/lodash/fp/isElement.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isElement', require('../isElement'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isEmpty.js b/node_modules/lodash/fp/isEmpty.js new file mode 100644 index 0000000..0f4ae84 --- /dev/null +++ b/node_modules/lodash/fp/isEmpty.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isEmpty', require('../isEmpty'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isEqual.js b/node_modules/lodash/fp/isEqual.js new file mode 100644 index 0000000..4138386 --- /dev/null +++ b/node_modules/lodash/fp/isEqual.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isEqual', require('../isEqual')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isEqualWith.js b/node_modules/lodash/fp/isEqualWith.js new file mode 100644 index 0000000..029ff5c --- /dev/null +++ b/node_modules/lodash/fp/isEqualWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isEqualWith', require('../isEqualWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isError.js b/node_modules/lodash/fp/isError.js new file mode 100644 index 0000000..3dfd81c --- /dev/null +++ b/node_modules/lodash/fp/isError.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isError', require('../isError'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isFinite.js b/node_modules/lodash/fp/isFinite.js new file mode 100644 index 0000000..0b647b8 --- /dev/null +++ b/node_modules/lodash/fp/isFinite.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isFinite', require('../isFinite'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isFunction.js b/node_modules/lodash/fp/isFunction.js new file mode 100644 index 0000000..ff8e5c4 --- /dev/null +++ b/node_modules/lodash/fp/isFunction.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isFunction', require('../isFunction'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isInteger.js b/node_modules/lodash/fp/isInteger.js new file mode 100644 index 0000000..67af4ff --- /dev/null +++ b/node_modules/lodash/fp/isInteger.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isInteger', require('../isInteger'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isLength.js b/node_modules/lodash/fp/isLength.js new file mode 100644 index 0000000..fc101c5 --- /dev/null +++ b/node_modules/lodash/fp/isLength.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isLength', require('../isLength'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isMap.js b/node_modules/lodash/fp/isMap.js new file mode 100644 index 0000000..a209aa6 --- /dev/null +++ b/node_modules/lodash/fp/isMap.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isMap', require('../isMap'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isMatch.js b/node_modules/lodash/fp/isMatch.js new file mode 100644 index 0000000..6264ca1 --- /dev/null +++ b/node_modules/lodash/fp/isMatch.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isMatch', require('../isMatch')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isMatchWith.js b/node_modules/lodash/fp/isMatchWith.js new file mode 100644 index 0000000..d95f319 --- /dev/null +++ b/node_modules/lodash/fp/isMatchWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isMatchWith', require('../isMatchWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isNaN.js b/node_modules/lodash/fp/isNaN.js new file mode 100644 index 0000000..66a978f --- /dev/null +++ b/node_modules/lodash/fp/isNaN.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isNaN', require('../isNaN'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isNative.js b/node_modules/lodash/fp/isNative.js new file mode 100644 index 0000000..3d775ba --- /dev/null +++ b/node_modules/lodash/fp/isNative.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isNative', require('../isNative'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isNil.js b/node_modules/lodash/fp/isNil.js new file mode 100644 index 0000000..5952c02 --- /dev/null +++ b/node_modules/lodash/fp/isNil.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isNil', require('../isNil'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isNull.js b/node_modules/lodash/fp/isNull.js new file mode 100644 index 0000000..f201a35 --- /dev/null +++ b/node_modules/lodash/fp/isNull.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isNull', require('../isNull'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isNumber.js b/node_modules/lodash/fp/isNumber.js new file mode 100644 index 0000000..a2b5fa0 --- /dev/null +++ b/node_modules/lodash/fp/isNumber.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isNumber', require('../isNumber'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isObject.js b/node_modules/lodash/fp/isObject.js new file mode 100644 index 0000000..231ace0 --- /dev/null +++ b/node_modules/lodash/fp/isObject.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isObject', require('../isObject'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isObjectLike.js b/node_modules/lodash/fp/isObjectLike.js new file mode 100644 index 0000000..f16082e --- /dev/null +++ b/node_modules/lodash/fp/isObjectLike.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isObjectLike', require('../isObjectLike'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isPlainObject.js b/node_modules/lodash/fp/isPlainObject.js new file mode 100644 index 0000000..b5bea90 --- /dev/null +++ b/node_modules/lodash/fp/isPlainObject.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isPlainObject', require('../isPlainObject'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isRegExp.js b/node_modules/lodash/fp/isRegExp.js new file mode 100644 index 0000000..12a1a3d --- /dev/null +++ b/node_modules/lodash/fp/isRegExp.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isRegExp', require('../isRegExp'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isSafeInteger.js b/node_modules/lodash/fp/isSafeInteger.js new file mode 100644 index 0000000..7230f55 --- /dev/null +++ b/node_modules/lodash/fp/isSafeInteger.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isSafeInteger', require('../isSafeInteger'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isSet.js b/node_modules/lodash/fp/isSet.js new file mode 100644 index 0000000..35c01f6 --- /dev/null +++ b/node_modules/lodash/fp/isSet.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isSet', require('../isSet'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isString.js b/node_modules/lodash/fp/isString.js new file mode 100644 index 0000000..1fd0679 --- /dev/null +++ b/node_modules/lodash/fp/isString.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isString', require('../isString'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isSymbol.js b/node_modules/lodash/fp/isSymbol.js new file mode 100644 index 0000000..3867695 --- /dev/null +++ b/node_modules/lodash/fp/isSymbol.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isSymbol', require('../isSymbol'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isTypedArray.js b/node_modules/lodash/fp/isTypedArray.js new file mode 100644 index 0000000..8567953 --- /dev/null +++ b/node_modules/lodash/fp/isTypedArray.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isTypedArray', require('../isTypedArray'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isUndefined.js b/node_modules/lodash/fp/isUndefined.js new file mode 100644 index 0000000..ddbca31 --- /dev/null +++ b/node_modules/lodash/fp/isUndefined.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isUndefined', require('../isUndefined'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isWeakMap.js b/node_modules/lodash/fp/isWeakMap.js new file mode 100644 index 0000000..ef60c61 --- /dev/null +++ b/node_modules/lodash/fp/isWeakMap.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isWeakMap', require('../isWeakMap'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/isWeakSet.js b/node_modules/lodash/fp/isWeakSet.js new file mode 100644 index 0000000..c99bfaa --- /dev/null +++ b/node_modules/lodash/fp/isWeakSet.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('isWeakSet', require('../isWeakSet'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/iteratee.js b/node_modules/lodash/fp/iteratee.js new file mode 100644 index 0000000..9f0f717 --- /dev/null +++ b/node_modules/lodash/fp/iteratee.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('iteratee', require('../iteratee')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/join.js b/node_modules/lodash/fp/join.js new file mode 100644 index 0000000..a220e00 --- /dev/null +++ b/node_modules/lodash/fp/join.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('join', require('../join')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/juxt.js b/node_modules/lodash/fp/juxt.js new file mode 100644 index 0000000..f71e04e --- /dev/null +++ b/node_modules/lodash/fp/juxt.js @@ -0,0 +1 @@ +module.exports = require('./over'); diff --git a/node_modules/lodash/fp/kebabCase.js b/node_modules/lodash/fp/kebabCase.js new file mode 100644 index 0000000..60737f1 --- /dev/null +++ b/node_modules/lodash/fp/kebabCase.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('kebabCase', require('../kebabCase'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/keyBy.js b/node_modules/lodash/fp/keyBy.js new file mode 100644 index 0000000..9a6a85d --- /dev/null +++ b/node_modules/lodash/fp/keyBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('keyBy', require('../keyBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/keys.js b/node_modules/lodash/fp/keys.js new file mode 100644 index 0000000..e12bb07 --- /dev/null +++ b/node_modules/lodash/fp/keys.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('keys', require('../keys'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/keysIn.js b/node_modules/lodash/fp/keysIn.js new file mode 100644 index 0000000..f3eb36a --- /dev/null +++ b/node_modules/lodash/fp/keysIn.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('keysIn', require('../keysIn'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/lang.js b/node_modules/lodash/fp/lang.js new file mode 100644 index 0000000..08cc9c1 --- /dev/null +++ b/node_modules/lodash/fp/lang.js @@ -0,0 +1,2 @@ +var convert = require('./convert'); +module.exports = convert(require('../lang')); diff --git a/node_modules/lodash/fp/last.js b/node_modules/lodash/fp/last.js new file mode 100644 index 0000000..0f71699 --- /dev/null +++ b/node_modules/lodash/fp/last.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('last', require('../last'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/lastIndexOf.js b/node_modules/lodash/fp/lastIndexOf.js new file mode 100644 index 0000000..ddf39c3 --- /dev/null +++ b/node_modules/lodash/fp/lastIndexOf.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('lastIndexOf', require('../lastIndexOf')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/lastIndexOfFrom.js b/node_modules/lodash/fp/lastIndexOfFrom.js new file mode 100644 index 0000000..1ff6a0b --- /dev/null +++ b/node_modules/lodash/fp/lastIndexOfFrom.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('lastIndexOfFrom', require('../lastIndexOf')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/lowerCase.js b/node_modules/lodash/fp/lowerCase.js new file mode 100644 index 0000000..ea64bc1 --- /dev/null +++ b/node_modules/lodash/fp/lowerCase.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('lowerCase', require('../lowerCase'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/lowerFirst.js b/node_modules/lodash/fp/lowerFirst.js new file mode 100644 index 0000000..539720a --- /dev/null +++ b/node_modules/lodash/fp/lowerFirst.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('lowerFirst', require('../lowerFirst'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/lt.js b/node_modules/lodash/fp/lt.js new file mode 100644 index 0000000..a31d21e --- /dev/null +++ b/node_modules/lodash/fp/lt.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('lt', require('../lt')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/lte.js b/node_modules/lodash/fp/lte.js new file mode 100644 index 0000000..d795d10 --- /dev/null +++ b/node_modules/lodash/fp/lte.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('lte', require('../lte')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/map.js b/node_modules/lodash/fp/map.js new file mode 100644 index 0000000..cf98794 --- /dev/null +++ b/node_modules/lodash/fp/map.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('map', require('../map')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/mapKeys.js b/node_modules/lodash/fp/mapKeys.js new file mode 100644 index 0000000..1684587 --- /dev/null +++ b/node_modules/lodash/fp/mapKeys.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('mapKeys', require('../mapKeys')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/mapValues.js b/node_modules/lodash/fp/mapValues.js new file mode 100644 index 0000000..4004972 --- /dev/null +++ b/node_modules/lodash/fp/mapValues.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('mapValues', require('../mapValues')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/matches.js b/node_modules/lodash/fp/matches.js new file mode 100644 index 0000000..29d1e1e --- /dev/null +++ b/node_modules/lodash/fp/matches.js @@ -0,0 +1 @@ +module.exports = require('./isMatch'); diff --git a/node_modules/lodash/fp/matchesProperty.js b/node_modules/lodash/fp/matchesProperty.js new file mode 100644 index 0000000..4575bd2 --- /dev/null +++ b/node_modules/lodash/fp/matchesProperty.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('matchesProperty', require('../matchesProperty')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/math.js b/node_modules/lodash/fp/math.js new file mode 100644 index 0000000..e8f50f7 --- /dev/null +++ b/node_modules/lodash/fp/math.js @@ -0,0 +1,2 @@ +var convert = require('./convert'); +module.exports = convert(require('../math')); diff --git a/node_modules/lodash/fp/max.js b/node_modules/lodash/fp/max.js new file mode 100644 index 0000000..a66acac --- /dev/null +++ b/node_modules/lodash/fp/max.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('max', require('../max'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/maxBy.js b/node_modules/lodash/fp/maxBy.js new file mode 100644 index 0000000..d083fd6 --- /dev/null +++ b/node_modules/lodash/fp/maxBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('maxBy', require('../maxBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/mean.js b/node_modules/lodash/fp/mean.js new file mode 100644 index 0000000..3117246 --- /dev/null +++ b/node_modules/lodash/fp/mean.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('mean', require('../mean'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/meanBy.js b/node_modules/lodash/fp/meanBy.js new file mode 100644 index 0000000..556f25e --- /dev/null +++ b/node_modules/lodash/fp/meanBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('meanBy', require('../meanBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/memoize.js b/node_modules/lodash/fp/memoize.js new file mode 100644 index 0000000..638eec6 --- /dev/null +++ b/node_modules/lodash/fp/memoize.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('memoize', require('../memoize')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/merge.js b/node_modules/lodash/fp/merge.js new file mode 100644 index 0000000..ac66add --- /dev/null +++ b/node_modules/lodash/fp/merge.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('merge', require('../merge')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/mergeAll.js b/node_modules/lodash/fp/mergeAll.js new file mode 100644 index 0000000..a3674d6 --- /dev/null +++ b/node_modules/lodash/fp/mergeAll.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('mergeAll', require('../merge')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/mergeAllWith.js b/node_modules/lodash/fp/mergeAllWith.js new file mode 100644 index 0000000..4bd4206 --- /dev/null +++ b/node_modules/lodash/fp/mergeAllWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('mergeAllWith', require('../mergeWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/mergeWith.js b/node_modules/lodash/fp/mergeWith.js new file mode 100644 index 0000000..00d44d5 --- /dev/null +++ b/node_modules/lodash/fp/mergeWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('mergeWith', require('../mergeWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/method.js b/node_modules/lodash/fp/method.js new file mode 100644 index 0000000..f4060c6 --- /dev/null +++ b/node_modules/lodash/fp/method.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('method', require('../method')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/methodOf.js b/node_modules/lodash/fp/methodOf.js new file mode 100644 index 0000000..6139905 --- /dev/null +++ b/node_modules/lodash/fp/methodOf.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('methodOf', require('../methodOf')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/min.js b/node_modules/lodash/fp/min.js new file mode 100644 index 0000000..d12c6b4 --- /dev/null +++ b/node_modules/lodash/fp/min.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('min', require('../min'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/minBy.js b/node_modules/lodash/fp/minBy.js new file mode 100644 index 0000000..fdb9e24 --- /dev/null +++ b/node_modules/lodash/fp/minBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('minBy', require('../minBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/mixin.js b/node_modules/lodash/fp/mixin.js new file mode 100644 index 0000000..332e6fb --- /dev/null +++ b/node_modules/lodash/fp/mixin.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('mixin', require('../mixin')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/multiply.js b/node_modules/lodash/fp/multiply.js new file mode 100644 index 0000000..4dcf0b0 --- /dev/null +++ b/node_modules/lodash/fp/multiply.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('multiply', require('../multiply')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/nAry.js b/node_modules/lodash/fp/nAry.js new file mode 100644 index 0000000..f262a76 --- /dev/null +++ b/node_modules/lodash/fp/nAry.js @@ -0,0 +1 @@ +module.exports = require('./ary'); diff --git a/node_modules/lodash/fp/negate.js b/node_modules/lodash/fp/negate.js new file mode 100644 index 0000000..8b6dc7c --- /dev/null +++ b/node_modules/lodash/fp/negate.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('negate', require('../negate'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/next.js b/node_modules/lodash/fp/next.js new file mode 100644 index 0000000..140155e --- /dev/null +++ b/node_modules/lodash/fp/next.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('next', require('../next'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/noop.js b/node_modules/lodash/fp/noop.js new file mode 100644 index 0000000..b9e32cc --- /dev/null +++ b/node_modules/lodash/fp/noop.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('noop', require('../noop'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/now.js b/node_modules/lodash/fp/now.js new file mode 100644 index 0000000..6de2068 --- /dev/null +++ b/node_modules/lodash/fp/now.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('now', require('../now'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/nth.js b/node_modules/lodash/fp/nth.js new file mode 100644 index 0000000..da4fda7 --- /dev/null +++ b/node_modules/lodash/fp/nth.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('nth', require('../nth')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/nthArg.js b/node_modules/lodash/fp/nthArg.js new file mode 100644 index 0000000..fce3165 --- /dev/null +++ b/node_modules/lodash/fp/nthArg.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('nthArg', require('../nthArg')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/number.js b/node_modules/lodash/fp/number.js new file mode 100644 index 0000000..5c10b88 --- /dev/null +++ b/node_modules/lodash/fp/number.js @@ -0,0 +1,2 @@ +var convert = require('./convert'); +module.exports = convert(require('../number')); diff --git a/node_modules/lodash/fp/object.js b/node_modules/lodash/fp/object.js new file mode 100644 index 0000000..ae39a13 --- /dev/null +++ b/node_modules/lodash/fp/object.js @@ -0,0 +1,2 @@ +var convert = require('./convert'); +module.exports = convert(require('../object')); diff --git a/node_modules/lodash/fp/omit.js b/node_modules/lodash/fp/omit.js new file mode 100644 index 0000000..fd68529 --- /dev/null +++ b/node_modules/lodash/fp/omit.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('omit', require('../omit')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/omitAll.js b/node_modules/lodash/fp/omitAll.js new file mode 100644 index 0000000..144cf4b --- /dev/null +++ b/node_modules/lodash/fp/omitAll.js @@ -0,0 +1 @@ +module.exports = require('./omit'); diff --git a/node_modules/lodash/fp/omitBy.js b/node_modules/lodash/fp/omitBy.js new file mode 100644 index 0000000..90df738 --- /dev/null +++ b/node_modules/lodash/fp/omitBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('omitBy', require('../omitBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/once.js b/node_modules/lodash/fp/once.js new file mode 100644 index 0000000..f8f0a5c --- /dev/null +++ b/node_modules/lodash/fp/once.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('once', require('../once'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/orderBy.js b/node_modules/lodash/fp/orderBy.js new file mode 100644 index 0000000..848e210 --- /dev/null +++ b/node_modules/lodash/fp/orderBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('orderBy', require('../orderBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/over.js b/node_modules/lodash/fp/over.js new file mode 100644 index 0000000..01eba7b --- /dev/null +++ b/node_modules/lodash/fp/over.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('over', require('../over')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/overArgs.js b/node_modules/lodash/fp/overArgs.js new file mode 100644 index 0000000..738556f --- /dev/null +++ b/node_modules/lodash/fp/overArgs.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('overArgs', require('../overArgs')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/overEvery.js b/node_modules/lodash/fp/overEvery.js new file mode 100644 index 0000000..9f5a032 --- /dev/null +++ b/node_modules/lodash/fp/overEvery.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('overEvery', require('../overEvery')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/overSome.js b/node_modules/lodash/fp/overSome.js new file mode 100644 index 0000000..15939d5 --- /dev/null +++ b/node_modules/lodash/fp/overSome.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('overSome', require('../overSome')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/pad.js b/node_modules/lodash/fp/pad.js new file mode 100644 index 0000000..f1dea4a --- /dev/null +++ b/node_modules/lodash/fp/pad.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('pad', require('../pad')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/padChars.js b/node_modules/lodash/fp/padChars.js new file mode 100644 index 0000000..d6e0804 --- /dev/null +++ b/node_modules/lodash/fp/padChars.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('padChars', require('../pad')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/padCharsEnd.js b/node_modules/lodash/fp/padCharsEnd.js new file mode 100644 index 0000000..d4ab79a --- /dev/null +++ b/node_modules/lodash/fp/padCharsEnd.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('padCharsEnd', require('../padEnd')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/padCharsStart.js b/node_modules/lodash/fp/padCharsStart.js new file mode 100644 index 0000000..a08a300 --- /dev/null +++ b/node_modules/lodash/fp/padCharsStart.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('padCharsStart', require('../padStart')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/padEnd.js b/node_modules/lodash/fp/padEnd.js new file mode 100644 index 0000000..a8522ec --- /dev/null +++ b/node_modules/lodash/fp/padEnd.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('padEnd', require('../padEnd')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/padStart.js b/node_modules/lodash/fp/padStart.js new file mode 100644 index 0000000..f4ca79d --- /dev/null +++ b/node_modules/lodash/fp/padStart.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('padStart', require('../padStart')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/parseInt.js b/node_modules/lodash/fp/parseInt.js new file mode 100644 index 0000000..27314cc --- /dev/null +++ b/node_modules/lodash/fp/parseInt.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('parseInt', require('../parseInt')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/partial.js b/node_modules/lodash/fp/partial.js new file mode 100644 index 0000000..5d46015 --- /dev/null +++ b/node_modules/lodash/fp/partial.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('partial', require('../partial')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/partialRight.js b/node_modules/lodash/fp/partialRight.js new file mode 100644 index 0000000..7f05fed --- /dev/null +++ b/node_modules/lodash/fp/partialRight.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('partialRight', require('../partialRight')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/partition.js b/node_modules/lodash/fp/partition.js new file mode 100644 index 0000000..2ebcacc --- /dev/null +++ b/node_modules/lodash/fp/partition.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('partition', require('../partition')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/path.js b/node_modules/lodash/fp/path.js new file mode 100644 index 0000000..b29cfb2 --- /dev/null +++ b/node_modules/lodash/fp/path.js @@ -0,0 +1 @@ +module.exports = require('./get'); diff --git a/node_modules/lodash/fp/pathEq.js b/node_modules/lodash/fp/pathEq.js new file mode 100644 index 0000000..36c027a --- /dev/null +++ b/node_modules/lodash/fp/pathEq.js @@ -0,0 +1 @@ +module.exports = require('./matchesProperty'); diff --git a/node_modules/lodash/fp/pathOr.js b/node_modules/lodash/fp/pathOr.js new file mode 100644 index 0000000..4ab5820 --- /dev/null +++ b/node_modules/lodash/fp/pathOr.js @@ -0,0 +1 @@ +module.exports = require('./getOr'); diff --git a/node_modules/lodash/fp/paths.js b/node_modules/lodash/fp/paths.js new file mode 100644 index 0000000..1eb7950 --- /dev/null +++ b/node_modules/lodash/fp/paths.js @@ -0,0 +1 @@ +module.exports = require('./at'); diff --git a/node_modules/lodash/fp/pick.js b/node_modules/lodash/fp/pick.js new file mode 100644 index 0000000..197393d --- /dev/null +++ b/node_modules/lodash/fp/pick.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('pick', require('../pick')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/pickAll.js b/node_modules/lodash/fp/pickAll.js new file mode 100644 index 0000000..a8ecd46 --- /dev/null +++ b/node_modules/lodash/fp/pickAll.js @@ -0,0 +1 @@ +module.exports = require('./pick'); diff --git a/node_modules/lodash/fp/pickBy.js b/node_modules/lodash/fp/pickBy.js new file mode 100644 index 0000000..d832d16 --- /dev/null +++ b/node_modules/lodash/fp/pickBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('pickBy', require('../pickBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/pipe.js b/node_modules/lodash/fp/pipe.js new file mode 100644 index 0000000..b2e1e2c --- /dev/null +++ b/node_modules/lodash/fp/pipe.js @@ -0,0 +1 @@ +module.exports = require('./flow'); diff --git a/node_modules/lodash/fp/placeholder.js b/node_modules/lodash/fp/placeholder.js new file mode 100644 index 0000000..1ce1739 --- /dev/null +++ b/node_modules/lodash/fp/placeholder.js @@ -0,0 +1,6 @@ +/** + * The default argument placeholder value for methods. + * + * @type {Object} + */ +module.exports = {}; diff --git a/node_modules/lodash/fp/plant.js b/node_modules/lodash/fp/plant.js new file mode 100644 index 0000000..eca8f32 --- /dev/null +++ b/node_modules/lodash/fp/plant.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('plant', require('../plant'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/pluck.js b/node_modules/lodash/fp/pluck.js new file mode 100644 index 0000000..0d1e1ab --- /dev/null +++ b/node_modules/lodash/fp/pluck.js @@ -0,0 +1 @@ +module.exports = require('./map'); diff --git a/node_modules/lodash/fp/prop.js b/node_modules/lodash/fp/prop.js new file mode 100644 index 0000000..b29cfb2 --- /dev/null +++ b/node_modules/lodash/fp/prop.js @@ -0,0 +1 @@ +module.exports = require('./get'); diff --git a/node_modules/lodash/fp/propEq.js b/node_modules/lodash/fp/propEq.js new file mode 100644 index 0000000..36c027a --- /dev/null +++ b/node_modules/lodash/fp/propEq.js @@ -0,0 +1 @@ +module.exports = require('./matchesProperty'); diff --git a/node_modules/lodash/fp/propOr.js b/node_modules/lodash/fp/propOr.js new file mode 100644 index 0000000..4ab5820 --- /dev/null +++ b/node_modules/lodash/fp/propOr.js @@ -0,0 +1 @@ +module.exports = require('./getOr'); diff --git a/node_modules/lodash/fp/property.js b/node_modules/lodash/fp/property.js new file mode 100644 index 0000000..b29cfb2 --- /dev/null +++ b/node_modules/lodash/fp/property.js @@ -0,0 +1 @@ +module.exports = require('./get'); diff --git a/node_modules/lodash/fp/propertyOf.js b/node_modules/lodash/fp/propertyOf.js new file mode 100644 index 0000000..f6273ee --- /dev/null +++ b/node_modules/lodash/fp/propertyOf.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('propertyOf', require('../get')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/props.js b/node_modules/lodash/fp/props.js new file mode 100644 index 0000000..1eb7950 --- /dev/null +++ b/node_modules/lodash/fp/props.js @@ -0,0 +1 @@ +module.exports = require('./at'); diff --git a/node_modules/lodash/fp/pull.js b/node_modules/lodash/fp/pull.js new file mode 100644 index 0000000..8d7084f --- /dev/null +++ b/node_modules/lodash/fp/pull.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('pull', require('../pull')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/pullAll.js b/node_modules/lodash/fp/pullAll.js new file mode 100644 index 0000000..98d5c9a --- /dev/null +++ b/node_modules/lodash/fp/pullAll.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('pullAll', require('../pullAll')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/pullAllBy.js b/node_modules/lodash/fp/pullAllBy.js new file mode 100644 index 0000000..876bc3b --- /dev/null +++ b/node_modules/lodash/fp/pullAllBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('pullAllBy', require('../pullAllBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/pullAllWith.js b/node_modules/lodash/fp/pullAllWith.js new file mode 100644 index 0000000..f71ba4d --- /dev/null +++ b/node_modules/lodash/fp/pullAllWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('pullAllWith', require('../pullAllWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/pullAt.js b/node_modules/lodash/fp/pullAt.js new file mode 100644 index 0000000..e8b3bb6 --- /dev/null +++ b/node_modules/lodash/fp/pullAt.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('pullAt', require('../pullAt')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/random.js b/node_modules/lodash/fp/random.js new file mode 100644 index 0000000..99d852e --- /dev/null +++ b/node_modules/lodash/fp/random.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('random', require('../random')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/range.js b/node_modules/lodash/fp/range.js new file mode 100644 index 0000000..a6bb591 --- /dev/null +++ b/node_modules/lodash/fp/range.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('range', require('../range')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/rangeRight.js b/node_modules/lodash/fp/rangeRight.js new file mode 100644 index 0000000..fdb712f --- /dev/null +++ b/node_modules/lodash/fp/rangeRight.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('rangeRight', require('../rangeRight')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/rangeStep.js b/node_modules/lodash/fp/rangeStep.js new file mode 100644 index 0000000..d72dfc2 --- /dev/null +++ b/node_modules/lodash/fp/rangeStep.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('rangeStep', require('../range')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/rangeStepRight.js b/node_modules/lodash/fp/rangeStepRight.js new file mode 100644 index 0000000..8b2a67b --- /dev/null +++ b/node_modules/lodash/fp/rangeStepRight.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('rangeStepRight', require('../rangeRight')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/rearg.js b/node_modules/lodash/fp/rearg.js new file mode 100644 index 0000000..678e02a --- /dev/null +++ b/node_modules/lodash/fp/rearg.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('rearg', require('../rearg')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/reduce.js b/node_modules/lodash/fp/reduce.js new file mode 100644 index 0000000..4cef0a0 --- /dev/null +++ b/node_modules/lodash/fp/reduce.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('reduce', require('../reduce')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/reduceRight.js b/node_modules/lodash/fp/reduceRight.js new file mode 100644 index 0000000..caf5bb5 --- /dev/null +++ b/node_modules/lodash/fp/reduceRight.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('reduceRight', require('../reduceRight')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/reject.js b/node_modules/lodash/fp/reject.js new file mode 100644 index 0000000..c163273 --- /dev/null +++ b/node_modules/lodash/fp/reject.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('reject', require('../reject')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/remove.js b/node_modules/lodash/fp/remove.js new file mode 100644 index 0000000..e9d1327 --- /dev/null +++ b/node_modules/lodash/fp/remove.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('remove', require('../remove')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/repeat.js b/node_modules/lodash/fp/repeat.js new file mode 100644 index 0000000..08470f2 --- /dev/null +++ b/node_modules/lodash/fp/repeat.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('repeat', require('../repeat')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/replace.js b/node_modules/lodash/fp/replace.js new file mode 100644 index 0000000..2227db6 --- /dev/null +++ b/node_modules/lodash/fp/replace.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('replace', require('../replace')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/rest.js b/node_modules/lodash/fp/rest.js new file mode 100644 index 0000000..c1f3d64 --- /dev/null +++ b/node_modules/lodash/fp/rest.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('rest', require('../rest')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/restFrom.js b/node_modules/lodash/fp/restFrom.js new file mode 100644 index 0000000..714e42b --- /dev/null +++ b/node_modules/lodash/fp/restFrom.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('restFrom', require('../rest')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/result.js b/node_modules/lodash/fp/result.js new file mode 100644 index 0000000..f86ce07 --- /dev/null +++ b/node_modules/lodash/fp/result.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('result', require('../result')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/reverse.js b/node_modules/lodash/fp/reverse.js new file mode 100644 index 0000000..07c9f5e --- /dev/null +++ b/node_modules/lodash/fp/reverse.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('reverse', require('../reverse')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/round.js b/node_modules/lodash/fp/round.js new file mode 100644 index 0000000..4c0e5c8 --- /dev/null +++ b/node_modules/lodash/fp/round.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('round', require('../round')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/sample.js b/node_modules/lodash/fp/sample.js new file mode 100644 index 0000000..6bea125 --- /dev/null +++ b/node_modules/lodash/fp/sample.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('sample', require('../sample'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/sampleSize.js b/node_modules/lodash/fp/sampleSize.js new file mode 100644 index 0000000..359ed6f --- /dev/null +++ b/node_modules/lodash/fp/sampleSize.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('sampleSize', require('../sampleSize')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/seq.js b/node_modules/lodash/fp/seq.js new file mode 100644 index 0000000..d8f42b0 --- /dev/null +++ b/node_modules/lodash/fp/seq.js @@ -0,0 +1,2 @@ +var convert = require('./convert'); +module.exports = convert(require('../seq')); diff --git a/node_modules/lodash/fp/set.js b/node_modules/lodash/fp/set.js new file mode 100644 index 0000000..0b56a56 --- /dev/null +++ b/node_modules/lodash/fp/set.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('set', require('../set')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/setWith.js b/node_modules/lodash/fp/setWith.js new file mode 100644 index 0000000..0b58495 --- /dev/null +++ b/node_modules/lodash/fp/setWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('setWith', require('../setWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/shuffle.js b/node_modules/lodash/fp/shuffle.js new file mode 100644 index 0000000..aa3a1ca --- /dev/null +++ b/node_modules/lodash/fp/shuffle.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('shuffle', require('../shuffle'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/size.js b/node_modules/lodash/fp/size.js new file mode 100644 index 0000000..7490136 --- /dev/null +++ b/node_modules/lodash/fp/size.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('size', require('../size'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/slice.js b/node_modules/lodash/fp/slice.js new file mode 100644 index 0000000..15945d3 --- /dev/null +++ b/node_modules/lodash/fp/slice.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('slice', require('../slice')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/snakeCase.js b/node_modules/lodash/fp/snakeCase.js new file mode 100644 index 0000000..a0ff780 --- /dev/null +++ b/node_modules/lodash/fp/snakeCase.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('snakeCase', require('../snakeCase'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/some.js b/node_modules/lodash/fp/some.js new file mode 100644 index 0000000..a4fa2d0 --- /dev/null +++ b/node_modules/lodash/fp/some.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('some', require('../some')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/sortBy.js b/node_modules/lodash/fp/sortBy.js new file mode 100644 index 0000000..e0790ad --- /dev/null +++ b/node_modules/lodash/fp/sortBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('sortBy', require('../sortBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/sortedIndex.js b/node_modules/lodash/fp/sortedIndex.js new file mode 100644 index 0000000..364a054 --- /dev/null +++ b/node_modules/lodash/fp/sortedIndex.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('sortedIndex', require('../sortedIndex')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/sortedIndexBy.js b/node_modules/lodash/fp/sortedIndexBy.js new file mode 100644 index 0000000..9593dbd --- /dev/null +++ b/node_modules/lodash/fp/sortedIndexBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('sortedIndexBy', require('../sortedIndexBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/sortedIndexOf.js b/node_modules/lodash/fp/sortedIndexOf.js new file mode 100644 index 0000000..c9084ca --- /dev/null +++ b/node_modules/lodash/fp/sortedIndexOf.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('sortedIndexOf', require('../sortedIndexOf')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/sortedLastIndex.js b/node_modules/lodash/fp/sortedLastIndex.js new file mode 100644 index 0000000..47fe241 --- /dev/null +++ b/node_modules/lodash/fp/sortedLastIndex.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('sortedLastIndex', require('../sortedLastIndex')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/sortedLastIndexBy.js b/node_modules/lodash/fp/sortedLastIndexBy.js new file mode 100644 index 0000000..0f9a347 --- /dev/null +++ b/node_modules/lodash/fp/sortedLastIndexBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('sortedLastIndexBy', require('../sortedLastIndexBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/sortedLastIndexOf.js b/node_modules/lodash/fp/sortedLastIndexOf.js new file mode 100644 index 0000000..0d4d932 --- /dev/null +++ b/node_modules/lodash/fp/sortedLastIndexOf.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('sortedLastIndexOf', require('../sortedLastIndexOf')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/sortedUniq.js b/node_modules/lodash/fp/sortedUniq.js new file mode 100644 index 0000000..882d283 --- /dev/null +++ b/node_modules/lodash/fp/sortedUniq.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('sortedUniq', require('../sortedUniq'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/sortedUniqBy.js b/node_modules/lodash/fp/sortedUniqBy.js new file mode 100644 index 0000000..033db91 --- /dev/null +++ b/node_modules/lodash/fp/sortedUniqBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('sortedUniqBy', require('../sortedUniqBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/split.js b/node_modules/lodash/fp/split.js new file mode 100644 index 0000000..14de1a7 --- /dev/null +++ b/node_modules/lodash/fp/split.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('split', require('../split')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/spread.js b/node_modules/lodash/fp/spread.js new file mode 100644 index 0000000..2d11b70 --- /dev/null +++ b/node_modules/lodash/fp/spread.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('spread', require('../spread')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/spreadFrom.js b/node_modules/lodash/fp/spreadFrom.js new file mode 100644 index 0000000..0b630df --- /dev/null +++ b/node_modules/lodash/fp/spreadFrom.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('spreadFrom', require('../spread')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/startCase.js b/node_modules/lodash/fp/startCase.js new file mode 100644 index 0000000..ada98c9 --- /dev/null +++ b/node_modules/lodash/fp/startCase.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('startCase', require('../startCase'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/startsWith.js b/node_modules/lodash/fp/startsWith.js new file mode 100644 index 0000000..985e2f2 --- /dev/null +++ b/node_modules/lodash/fp/startsWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('startsWith', require('../startsWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/string.js b/node_modules/lodash/fp/string.js new file mode 100644 index 0000000..773b037 --- /dev/null +++ b/node_modules/lodash/fp/string.js @@ -0,0 +1,2 @@ +var convert = require('./convert'); +module.exports = convert(require('../string')); diff --git a/node_modules/lodash/fp/stubArray.js b/node_modules/lodash/fp/stubArray.js new file mode 100644 index 0000000..cd604cb --- /dev/null +++ b/node_modules/lodash/fp/stubArray.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('stubArray', require('../stubArray'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/stubFalse.js b/node_modules/lodash/fp/stubFalse.js new file mode 100644 index 0000000..3296664 --- /dev/null +++ b/node_modules/lodash/fp/stubFalse.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('stubFalse', require('../stubFalse'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/stubObject.js b/node_modules/lodash/fp/stubObject.js new file mode 100644 index 0000000..c6c8ec4 --- /dev/null +++ b/node_modules/lodash/fp/stubObject.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('stubObject', require('../stubObject'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/stubString.js b/node_modules/lodash/fp/stubString.js new file mode 100644 index 0000000..701051e --- /dev/null +++ b/node_modules/lodash/fp/stubString.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('stubString', require('../stubString'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/stubTrue.js b/node_modules/lodash/fp/stubTrue.js new file mode 100644 index 0000000..9249082 --- /dev/null +++ b/node_modules/lodash/fp/stubTrue.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('stubTrue', require('../stubTrue'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/subtract.js b/node_modules/lodash/fp/subtract.js new file mode 100644 index 0000000..d32b16d --- /dev/null +++ b/node_modules/lodash/fp/subtract.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('subtract', require('../subtract')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/sum.js b/node_modules/lodash/fp/sum.js new file mode 100644 index 0000000..5cce12b --- /dev/null +++ b/node_modules/lodash/fp/sum.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('sum', require('../sum'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/sumBy.js b/node_modules/lodash/fp/sumBy.js new file mode 100644 index 0000000..c882656 --- /dev/null +++ b/node_modules/lodash/fp/sumBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('sumBy', require('../sumBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/symmetricDifference.js b/node_modules/lodash/fp/symmetricDifference.js new file mode 100644 index 0000000..78c16ad --- /dev/null +++ b/node_modules/lodash/fp/symmetricDifference.js @@ -0,0 +1 @@ +module.exports = require('./xor'); diff --git a/node_modules/lodash/fp/symmetricDifferenceBy.js b/node_modules/lodash/fp/symmetricDifferenceBy.js new file mode 100644 index 0000000..298fc7f --- /dev/null +++ b/node_modules/lodash/fp/symmetricDifferenceBy.js @@ -0,0 +1 @@ +module.exports = require('./xorBy'); diff --git a/node_modules/lodash/fp/symmetricDifferenceWith.js b/node_modules/lodash/fp/symmetricDifferenceWith.js new file mode 100644 index 0000000..70bc6fa --- /dev/null +++ b/node_modules/lodash/fp/symmetricDifferenceWith.js @@ -0,0 +1 @@ +module.exports = require('./xorWith'); diff --git a/node_modules/lodash/fp/tail.js b/node_modules/lodash/fp/tail.js new file mode 100644 index 0000000..f122f0a --- /dev/null +++ b/node_modules/lodash/fp/tail.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('tail', require('../tail'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/take.js b/node_modules/lodash/fp/take.js new file mode 100644 index 0000000..9af98a7 --- /dev/null +++ b/node_modules/lodash/fp/take.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('take', require('../take')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/takeLast.js b/node_modules/lodash/fp/takeLast.js new file mode 100644 index 0000000..e98c84a --- /dev/null +++ b/node_modules/lodash/fp/takeLast.js @@ -0,0 +1 @@ +module.exports = require('./takeRight'); diff --git a/node_modules/lodash/fp/takeLastWhile.js b/node_modules/lodash/fp/takeLastWhile.js new file mode 100644 index 0000000..5367968 --- /dev/null +++ b/node_modules/lodash/fp/takeLastWhile.js @@ -0,0 +1 @@ +module.exports = require('./takeRightWhile'); diff --git a/node_modules/lodash/fp/takeRight.js b/node_modules/lodash/fp/takeRight.js new file mode 100644 index 0000000..b82950a --- /dev/null +++ b/node_modules/lodash/fp/takeRight.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('takeRight', require('../takeRight')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/takeRightWhile.js b/node_modules/lodash/fp/takeRightWhile.js new file mode 100644 index 0000000..8ffb0a2 --- /dev/null +++ b/node_modules/lodash/fp/takeRightWhile.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('takeRightWhile', require('../takeRightWhile')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/takeWhile.js b/node_modules/lodash/fp/takeWhile.js new file mode 100644 index 0000000..2813664 --- /dev/null +++ b/node_modules/lodash/fp/takeWhile.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('takeWhile', require('../takeWhile')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/tap.js b/node_modules/lodash/fp/tap.js new file mode 100644 index 0000000..d33ad6e --- /dev/null +++ b/node_modules/lodash/fp/tap.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('tap', require('../tap')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/template.js b/node_modules/lodash/fp/template.js new file mode 100644 index 0000000..74857e1 --- /dev/null +++ b/node_modules/lodash/fp/template.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('template', require('../template')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/templateSettings.js b/node_modules/lodash/fp/templateSettings.js new file mode 100644 index 0000000..7bcc0a8 --- /dev/null +++ b/node_modules/lodash/fp/templateSettings.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('templateSettings', require('../templateSettings'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/throttle.js b/node_modules/lodash/fp/throttle.js new file mode 100644 index 0000000..77fff14 --- /dev/null +++ b/node_modules/lodash/fp/throttle.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('throttle', require('../throttle')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/thru.js b/node_modules/lodash/fp/thru.js new file mode 100644 index 0000000..d42b3b1 --- /dev/null +++ b/node_modules/lodash/fp/thru.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('thru', require('../thru')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/times.js b/node_modules/lodash/fp/times.js new file mode 100644 index 0000000..0dab06d --- /dev/null +++ b/node_modules/lodash/fp/times.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('times', require('../times')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toArray.js b/node_modules/lodash/fp/toArray.js new file mode 100644 index 0000000..f0c360a --- /dev/null +++ b/node_modules/lodash/fp/toArray.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toArray', require('../toArray'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toFinite.js b/node_modules/lodash/fp/toFinite.js new file mode 100644 index 0000000..3a47687 --- /dev/null +++ b/node_modules/lodash/fp/toFinite.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toFinite', require('../toFinite'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toInteger.js b/node_modules/lodash/fp/toInteger.js new file mode 100644 index 0000000..e0af6a7 --- /dev/null +++ b/node_modules/lodash/fp/toInteger.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toInteger', require('../toInteger'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toIterator.js b/node_modules/lodash/fp/toIterator.js new file mode 100644 index 0000000..65e6baa --- /dev/null +++ b/node_modules/lodash/fp/toIterator.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toIterator', require('../toIterator'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toJSON.js b/node_modules/lodash/fp/toJSON.js new file mode 100644 index 0000000..2d718d0 --- /dev/null +++ b/node_modules/lodash/fp/toJSON.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toJSON', require('../toJSON'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toLength.js b/node_modules/lodash/fp/toLength.js new file mode 100644 index 0000000..b97cdd9 --- /dev/null +++ b/node_modules/lodash/fp/toLength.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toLength', require('../toLength'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toLower.js b/node_modules/lodash/fp/toLower.js new file mode 100644 index 0000000..616ef36 --- /dev/null +++ b/node_modules/lodash/fp/toLower.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toLower', require('../toLower'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toNumber.js b/node_modules/lodash/fp/toNumber.js new file mode 100644 index 0000000..d0c6f4d --- /dev/null +++ b/node_modules/lodash/fp/toNumber.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toNumber', require('../toNumber'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toPairs.js b/node_modules/lodash/fp/toPairs.js new file mode 100644 index 0000000..af78378 --- /dev/null +++ b/node_modules/lodash/fp/toPairs.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toPairs', require('../toPairs'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toPairsIn.js b/node_modules/lodash/fp/toPairsIn.js new file mode 100644 index 0000000..66504ab --- /dev/null +++ b/node_modules/lodash/fp/toPairsIn.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toPairsIn', require('../toPairsIn'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toPath.js b/node_modules/lodash/fp/toPath.js new file mode 100644 index 0000000..b4d5e50 --- /dev/null +++ b/node_modules/lodash/fp/toPath.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toPath', require('../toPath'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toPlainObject.js b/node_modules/lodash/fp/toPlainObject.js new file mode 100644 index 0000000..278bb86 --- /dev/null +++ b/node_modules/lodash/fp/toPlainObject.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toPlainObject', require('../toPlainObject'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toSafeInteger.js b/node_modules/lodash/fp/toSafeInteger.js new file mode 100644 index 0000000..367a26f --- /dev/null +++ b/node_modules/lodash/fp/toSafeInteger.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toSafeInteger', require('../toSafeInteger'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toString.js b/node_modules/lodash/fp/toString.js new file mode 100644 index 0000000..cec4f8e --- /dev/null +++ b/node_modules/lodash/fp/toString.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toString', require('../toString'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/toUpper.js b/node_modules/lodash/fp/toUpper.js new file mode 100644 index 0000000..54f9a56 --- /dev/null +++ b/node_modules/lodash/fp/toUpper.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('toUpper', require('../toUpper'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/transform.js b/node_modules/lodash/fp/transform.js new file mode 100644 index 0000000..759d088 --- /dev/null +++ b/node_modules/lodash/fp/transform.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('transform', require('../transform')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/trim.js b/node_modules/lodash/fp/trim.js new file mode 100644 index 0000000..e6319a7 --- /dev/null +++ b/node_modules/lodash/fp/trim.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('trim', require('../trim')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/trimChars.js b/node_modules/lodash/fp/trimChars.js new file mode 100644 index 0000000..c9294de --- /dev/null +++ b/node_modules/lodash/fp/trimChars.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('trimChars', require('../trim')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/trimCharsEnd.js b/node_modules/lodash/fp/trimCharsEnd.js new file mode 100644 index 0000000..284bc2f --- /dev/null +++ b/node_modules/lodash/fp/trimCharsEnd.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('trimCharsEnd', require('../trimEnd')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/trimCharsStart.js b/node_modules/lodash/fp/trimCharsStart.js new file mode 100644 index 0000000..ff0ee65 --- /dev/null +++ b/node_modules/lodash/fp/trimCharsStart.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('trimCharsStart', require('../trimStart')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/trimEnd.js b/node_modules/lodash/fp/trimEnd.js new file mode 100644 index 0000000..7190880 --- /dev/null +++ b/node_modules/lodash/fp/trimEnd.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('trimEnd', require('../trimEnd')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/trimStart.js b/node_modules/lodash/fp/trimStart.js new file mode 100644 index 0000000..fda902c --- /dev/null +++ b/node_modules/lodash/fp/trimStart.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('trimStart', require('../trimStart')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/truncate.js b/node_modules/lodash/fp/truncate.js new file mode 100644 index 0000000..d265c1d --- /dev/null +++ b/node_modules/lodash/fp/truncate.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('truncate', require('../truncate')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/unapply.js b/node_modules/lodash/fp/unapply.js new file mode 100644 index 0000000..c5dfe77 --- /dev/null +++ b/node_modules/lodash/fp/unapply.js @@ -0,0 +1 @@ +module.exports = require('./rest'); diff --git a/node_modules/lodash/fp/unary.js b/node_modules/lodash/fp/unary.js new file mode 100644 index 0000000..286c945 --- /dev/null +++ b/node_modules/lodash/fp/unary.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('unary', require('../unary'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/unescape.js b/node_modules/lodash/fp/unescape.js new file mode 100644 index 0000000..fddcb46 --- /dev/null +++ b/node_modules/lodash/fp/unescape.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('unescape', require('../unescape'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/union.js b/node_modules/lodash/fp/union.js new file mode 100644 index 0000000..ef8228d --- /dev/null +++ b/node_modules/lodash/fp/union.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('union', require('../union')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/unionBy.js b/node_modules/lodash/fp/unionBy.js new file mode 100644 index 0000000..603687a --- /dev/null +++ b/node_modules/lodash/fp/unionBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('unionBy', require('../unionBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/unionWith.js b/node_modules/lodash/fp/unionWith.js new file mode 100644 index 0000000..65bb3a7 --- /dev/null +++ b/node_modules/lodash/fp/unionWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('unionWith', require('../unionWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/uniq.js b/node_modules/lodash/fp/uniq.js new file mode 100644 index 0000000..bc18524 --- /dev/null +++ b/node_modules/lodash/fp/uniq.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('uniq', require('../uniq'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/uniqBy.js b/node_modules/lodash/fp/uniqBy.js new file mode 100644 index 0000000..634c6a8 --- /dev/null +++ b/node_modules/lodash/fp/uniqBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('uniqBy', require('../uniqBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/uniqWith.js b/node_modules/lodash/fp/uniqWith.js new file mode 100644 index 0000000..0ec601a --- /dev/null +++ b/node_modules/lodash/fp/uniqWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('uniqWith', require('../uniqWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/uniqueId.js b/node_modules/lodash/fp/uniqueId.js new file mode 100644 index 0000000..aa8fc2f --- /dev/null +++ b/node_modules/lodash/fp/uniqueId.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('uniqueId', require('../uniqueId')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/unnest.js b/node_modules/lodash/fp/unnest.js new file mode 100644 index 0000000..5d34060 --- /dev/null +++ b/node_modules/lodash/fp/unnest.js @@ -0,0 +1 @@ +module.exports = require('./flatten'); diff --git a/node_modules/lodash/fp/unset.js b/node_modules/lodash/fp/unset.js new file mode 100644 index 0000000..ea203a0 --- /dev/null +++ b/node_modules/lodash/fp/unset.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('unset', require('../unset')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/unzip.js b/node_modules/lodash/fp/unzip.js new file mode 100644 index 0000000..cc364b3 --- /dev/null +++ b/node_modules/lodash/fp/unzip.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('unzip', require('../unzip'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/unzipWith.js b/node_modules/lodash/fp/unzipWith.js new file mode 100644 index 0000000..182eaa1 --- /dev/null +++ b/node_modules/lodash/fp/unzipWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('unzipWith', require('../unzipWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/update.js b/node_modules/lodash/fp/update.js new file mode 100644 index 0000000..b8ce2cc --- /dev/null +++ b/node_modules/lodash/fp/update.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('update', require('../update')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/updateWith.js b/node_modules/lodash/fp/updateWith.js new file mode 100644 index 0000000..d5e8282 --- /dev/null +++ b/node_modules/lodash/fp/updateWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('updateWith', require('../updateWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/upperCase.js b/node_modules/lodash/fp/upperCase.js new file mode 100644 index 0000000..c886f20 --- /dev/null +++ b/node_modules/lodash/fp/upperCase.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('upperCase', require('../upperCase'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/upperFirst.js b/node_modules/lodash/fp/upperFirst.js new file mode 100644 index 0000000..d8c04df --- /dev/null +++ b/node_modules/lodash/fp/upperFirst.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('upperFirst', require('../upperFirst'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/useWith.js b/node_modules/lodash/fp/useWith.js new file mode 100644 index 0000000..d8b3df5 --- /dev/null +++ b/node_modules/lodash/fp/useWith.js @@ -0,0 +1 @@ +module.exports = require('./overArgs'); diff --git a/node_modules/lodash/fp/util.js b/node_modules/lodash/fp/util.js new file mode 100644 index 0000000..18c00ba --- /dev/null +++ b/node_modules/lodash/fp/util.js @@ -0,0 +1,2 @@ +var convert = require('./convert'); +module.exports = convert(require('../util')); diff --git a/node_modules/lodash/fp/value.js b/node_modules/lodash/fp/value.js new file mode 100644 index 0000000..555eec7 --- /dev/null +++ b/node_modules/lodash/fp/value.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('value', require('../value'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/valueOf.js b/node_modules/lodash/fp/valueOf.js new file mode 100644 index 0000000..f968807 --- /dev/null +++ b/node_modules/lodash/fp/valueOf.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('valueOf', require('../valueOf'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/values.js b/node_modules/lodash/fp/values.js new file mode 100644 index 0000000..2dfc561 --- /dev/null +++ b/node_modules/lodash/fp/values.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('values', require('../values'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/valuesIn.js b/node_modules/lodash/fp/valuesIn.js new file mode 100644 index 0000000..a1b2bb8 --- /dev/null +++ b/node_modules/lodash/fp/valuesIn.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('valuesIn', require('../valuesIn'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/where.js b/node_modules/lodash/fp/where.js new file mode 100644 index 0000000..3247f64 --- /dev/null +++ b/node_modules/lodash/fp/where.js @@ -0,0 +1 @@ +module.exports = require('./conformsTo'); diff --git a/node_modules/lodash/fp/whereEq.js b/node_modules/lodash/fp/whereEq.js new file mode 100644 index 0000000..29d1e1e --- /dev/null +++ b/node_modules/lodash/fp/whereEq.js @@ -0,0 +1 @@ +module.exports = require('./isMatch'); diff --git a/node_modules/lodash/fp/without.js b/node_modules/lodash/fp/without.js new file mode 100644 index 0000000..bad9e12 --- /dev/null +++ b/node_modules/lodash/fp/without.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('without', require('../without')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/words.js b/node_modules/lodash/fp/words.js new file mode 100644 index 0000000..4a90141 --- /dev/null +++ b/node_modules/lodash/fp/words.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('words', require('../words')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/wrap.js b/node_modules/lodash/fp/wrap.js new file mode 100644 index 0000000..e93bd8a --- /dev/null +++ b/node_modules/lodash/fp/wrap.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('wrap', require('../wrap')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/wrapperAt.js b/node_modules/lodash/fp/wrapperAt.js new file mode 100644 index 0000000..8f0a310 --- /dev/null +++ b/node_modules/lodash/fp/wrapperAt.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('wrapperAt', require('../wrapperAt'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/wrapperChain.js b/node_modules/lodash/fp/wrapperChain.js new file mode 100644 index 0000000..2a48ea2 --- /dev/null +++ b/node_modules/lodash/fp/wrapperChain.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('wrapperChain', require('../wrapperChain'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/wrapperLodash.js b/node_modules/lodash/fp/wrapperLodash.js new file mode 100644 index 0000000..a7162d0 --- /dev/null +++ b/node_modules/lodash/fp/wrapperLodash.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('wrapperLodash', require('../wrapperLodash'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/wrapperReverse.js b/node_modules/lodash/fp/wrapperReverse.js new file mode 100644 index 0000000..e1481aa --- /dev/null +++ b/node_modules/lodash/fp/wrapperReverse.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('wrapperReverse', require('../wrapperReverse'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/wrapperValue.js b/node_modules/lodash/fp/wrapperValue.js new file mode 100644 index 0000000..8eb9112 --- /dev/null +++ b/node_modules/lodash/fp/wrapperValue.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('wrapperValue', require('../wrapperValue'), require('./_falseOptions')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/xor.js b/node_modules/lodash/fp/xor.js new file mode 100644 index 0000000..29e2819 --- /dev/null +++ b/node_modules/lodash/fp/xor.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('xor', require('../xor')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/xorBy.js b/node_modules/lodash/fp/xorBy.js new file mode 100644 index 0000000..b355686 --- /dev/null +++ b/node_modules/lodash/fp/xorBy.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('xorBy', require('../xorBy')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/xorWith.js b/node_modules/lodash/fp/xorWith.js new file mode 100644 index 0000000..8e05739 --- /dev/null +++ b/node_modules/lodash/fp/xorWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('xorWith', require('../xorWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/zip.js b/node_modules/lodash/fp/zip.js new file mode 100644 index 0000000..69e147a --- /dev/null +++ b/node_modules/lodash/fp/zip.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('zip', require('../zip')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/zipAll.js b/node_modules/lodash/fp/zipAll.js new file mode 100644 index 0000000..efa8ccb --- /dev/null +++ b/node_modules/lodash/fp/zipAll.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('zipAll', require('../zip')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/zipObj.js b/node_modules/lodash/fp/zipObj.js new file mode 100644 index 0000000..f4a3453 --- /dev/null +++ b/node_modules/lodash/fp/zipObj.js @@ -0,0 +1 @@ +module.exports = require('./zipObject'); diff --git a/node_modules/lodash/fp/zipObject.js b/node_modules/lodash/fp/zipObject.js new file mode 100644 index 0000000..462dbb6 --- /dev/null +++ b/node_modules/lodash/fp/zipObject.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('zipObject', require('../zipObject')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/zipObjectDeep.js b/node_modules/lodash/fp/zipObjectDeep.js new file mode 100644 index 0000000..53a5d33 --- /dev/null +++ b/node_modules/lodash/fp/zipObjectDeep.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('zipObjectDeep', require('../zipObjectDeep')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fp/zipWith.js b/node_modules/lodash/fp/zipWith.js new file mode 100644 index 0000000..c5cf9e2 --- /dev/null +++ b/node_modules/lodash/fp/zipWith.js @@ -0,0 +1,5 @@ +var convert = require('./convert'), + func = convert('zipWith', require('../zipWith')); + +func.placeholder = require('./placeholder'); +module.exports = func; diff --git a/node_modules/lodash/fromPairs.js b/node_modules/lodash/fromPairs.js new file mode 100644 index 0000000..ee7940d --- /dev/null +++ b/node_modules/lodash/fromPairs.js @@ -0,0 +1,28 @@ +/** + * The inverse of `_.toPairs`; this method returns an object composed + * from key-value `pairs`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} pairs The key-value pairs. + * @returns {Object} Returns the new object. + * @example + * + * _.fromPairs([['a', 1], ['b', 2]]); + * // => { 'a': 1, 'b': 2 } + */ +function fromPairs(pairs) { + var index = -1, + length = pairs == null ? 0 : pairs.length, + result = {}; + + while (++index < length) { + var pair = pairs[index]; + result[pair[0]] = pair[1]; + } + return result; +} + +module.exports = fromPairs; diff --git a/node_modules/lodash/function.js b/node_modules/lodash/function.js new file mode 100644 index 0000000..b0fc6d9 --- /dev/null +++ b/node_modules/lodash/function.js @@ -0,0 +1,25 @@ +module.exports = { + 'after': require('./after'), + 'ary': require('./ary'), + 'before': require('./before'), + 'bind': require('./bind'), + 'bindKey': require('./bindKey'), + 'curry': require('./curry'), + 'curryRight': require('./curryRight'), + 'debounce': require('./debounce'), + 'defer': require('./defer'), + 'delay': require('./delay'), + 'flip': require('./flip'), + 'memoize': require('./memoize'), + 'negate': require('./negate'), + 'once': require('./once'), + 'overArgs': require('./overArgs'), + 'partial': require('./partial'), + 'partialRight': require('./partialRight'), + 'rearg': require('./rearg'), + 'rest': require('./rest'), + 'spread': require('./spread'), + 'throttle': require('./throttle'), + 'unary': require('./unary'), + 'wrap': require('./wrap') +}; diff --git a/node_modules/lodash/functions.js b/node_modules/lodash/functions.js new file mode 100644 index 0000000..9722928 --- /dev/null +++ b/node_modules/lodash/functions.js @@ -0,0 +1,31 @@ +var baseFunctions = require('./_baseFunctions'), + keys = require('./keys'); + +/** + * Creates an array of function property names from own enumerable properties + * of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functionsIn + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functions(new Foo); + * // => ['a', 'b'] + */ +function functions(object) { + return object == null ? [] : baseFunctions(object, keys(object)); +} + +module.exports = functions; diff --git a/node_modules/lodash/functionsIn.js b/node_modules/lodash/functionsIn.js new file mode 100644 index 0000000..f00345d --- /dev/null +++ b/node_modules/lodash/functionsIn.js @@ -0,0 +1,31 @@ +var baseFunctions = require('./_baseFunctions'), + keysIn = require('./keysIn'); + +/** + * Creates an array of function property names from own and inherited + * enumerable properties of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functions + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functionsIn(new Foo); + * // => ['a', 'b', 'c'] + */ +function functionsIn(object) { + return object == null ? [] : baseFunctions(object, keysIn(object)); +} + +module.exports = functionsIn; diff --git a/node_modules/lodash/get.js b/node_modules/lodash/get.js new file mode 100644 index 0000000..8805ff9 --- /dev/null +++ b/node_modules/lodash/get.js @@ -0,0 +1,33 @@ +var baseGet = require('./_baseGet'); + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +module.exports = get; diff --git a/node_modules/lodash/groupBy.js b/node_modules/lodash/groupBy.js new file mode 100644 index 0000000..babf4f6 --- /dev/null +++ b/node_modules/lodash/groupBy.js @@ -0,0 +1,41 @@ +var baseAssignValue = require('./_baseAssignValue'), + createAggregator = require('./_createAggregator'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The order of grouped values + * is determined by the order they occur in `collection`. The corresponding + * value of each key is an array of elements responsible for generating the + * key. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': [4.2], '6': [6.1, 6.3] } + * + * // The `_.property` iteratee shorthand. + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */ +var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + baseAssignValue(result, key, [value]); + } +}); + +module.exports = groupBy; diff --git a/node_modules/lodash/gt.js b/node_modules/lodash/gt.js new file mode 100644 index 0000000..3a66282 --- /dev/null +++ b/node_modules/lodash/gt.js @@ -0,0 +1,29 @@ +var baseGt = require('./_baseGt'), + createRelationalOperation = require('./_createRelationalOperation'); + +/** + * Checks if `value` is greater than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + * @see _.lt + * @example + * + * _.gt(3, 1); + * // => true + * + * _.gt(3, 3); + * // => false + * + * _.gt(1, 3); + * // => false + */ +var gt = createRelationalOperation(baseGt); + +module.exports = gt; diff --git a/node_modules/lodash/gte.js b/node_modules/lodash/gte.js new file mode 100644 index 0000000..4180a68 --- /dev/null +++ b/node_modules/lodash/gte.js @@ -0,0 +1,30 @@ +var createRelationalOperation = require('./_createRelationalOperation'); + +/** + * Checks if `value` is greater than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than or equal to + * `other`, else `false`. + * @see _.lte + * @example + * + * _.gte(3, 1); + * // => true + * + * _.gte(3, 3); + * // => true + * + * _.gte(1, 3); + * // => false + */ +var gte = createRelationalOperation(function(value, other) { + return value >= other; +}); + +module.exports = gte; diff --git a/node_modules/lodash/has.js b/node_modules/lodash/has.js new file mode 100644 index 0000000..34df55e --- /dev/null +++ b/node_modules/lodash/has.js @@ -0,0 +1,35 @@ +var baseHas = require('./_baseHas'), + hasPath = require('./_hasPath'); + +/** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ +function has(object, path) { + return object != null && hasPath(object, path, baseHas); +} + +module.exports = has; diff --git a/node_modules/lodash/hasIn.js b/node_modules/lodash/hasIn.js new file mode 100644 index 0000000..06a3686 --- /dev/null +++ b/node_modules/lodash/hasIn.js @@ -0,0 +1,34 @@ +var baseHasIn = require('./_baseHasIn'), + hasPath = require('./_hasPath'); + +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); +} + +module.exports = hasIn; diff --git a/node_modules/lodash/head.js b/node_modules/lodash/head.js new file mode 100644 index 0000000..dee9d1f --- /dev/null +++ b/node_modules/lodash/head.js @@ -0,0 +1,23 @@ +/** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias first + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.head([1, 2, 3]); + * // => 1 + * + * _.head([]); + * // => undefined + */ +function head(array) { + return (array && array.length) ? array[0] : undefined; +} + +module.exports = head; diff --git a/node_modules/lodash/identity.js b/node_modules/lodash/identity.js new file mode 100644 index 0000000..2d5d963 --- /dev/null +++ b/node_modules/lodash/identity.js @@ -0,0 +1,21 @@ +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; +} + +module.exports = identity; diff --git a/node_modules/lodash/inRange.js b/node_modules/lodash/inRange.js new file mode 100644 index 0000000..f20728d --- /dev/null +++ b/node_modules/lodash/inRange.js @@ -0,0 +1,55 @@ +var baseInRange = require('./_baseInRange'), + toFinite = require('./toFinite'), + toNumber = require('./toNumber'); + +/** + * Checks if `n` is between `start` and up to, but not including, `end`. If + * `end` is not specified, it's set to `start` with `start` then set to `0`. + * If `start` is greater than `end` the params are swapped to support + * negative ranges. + * + * @static + * @memberOf _ + * @since 3.3.0 + * @category Number + * @param {number} number The number to check. + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + * @see _.range, _.rangeRight + * @example + * + * _.inRange(3, 2, 4); + * // => true + * + * _.inRange(4, 8); + * // => true + * + * _.inRange(4, 2); + * // => false + * + * _.inRange(2, 2); + * // => false + * + * _.inRange(1.2, 2); + * // => true + * + * _.inRange(5.2, 4); + * // => false + * + * _.inRange(-3, -2, -6); + * // => true + */ +function inRange(number, start, end) { + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + number = toNumber(number); + return baseInRange(number, start, end); +} + +module.exports = inRange; diff --git a/node_modules/lodash/includes.js b/node_modules/lodash/includes.js new file mode 100644 index 0000000..ae0deed --- /dev/null +++ b/node_modules/lodash/includes.js @@ -0,0 +1,53 @@ +var baseIndexOf = require('./_baseIndexOf'), + isArrayLike = require('./isArrayLike'), + isString = require('./isString'), + toInteger = require('./toInteger'), + values = require('./values'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Checks if `value` is in `collection`. If `collection` is a string, it's + * checked for a substring of `value`, otherwise + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * is used for equality comparisons. If `fromIndex` is negative, it's used as + * the offset from the end of `collection`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {boolean} Returns `true` if `value` is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'a': 1, 'b': 2 }, 1); + * // => true + * + * _.includes('abcd', 'bc'); + * // => true + */ +function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; + + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) + ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) + : (!!length && baseIndexOf(collection, value, fromIndex) > -1); +} + +module.exports = includes; diff --git a/node_modules/lodash/index.js b/node_modules/lodash/index.js new file mode 100644 index 0000000..5d063e2 --- /dev/null +++ b/node_modules/lodash/index.js @@ -0,0 +1 @@ +module.exports = require('./lodash'); \ No newline at end of file diff --git a/node_modules/lodash/indexOf.js b/node_modules/lodash/indexOf.js new file mode 100644 index 0000000..3c644af --- /dev/null +++ b/node_modules/lodash/indexOf.js @@ -0,0 +1,42 @@ +var baseIndexOf = require('./_baseIndexOf'), + toInteger = require('./toInteger'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Gets the index at which the first occurrence of `value` is found in `array` + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it's used as the + * offset from the end of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // Search from the `fromIndex`. + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + */ +function indexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseIndexOf(array, value, index); +} + +module.exports = indexOf; diff --git a/node_modules/lodash/initial.js b/node_modules/lodash/initial.js new file mode 100644 index 0000000..f47fc50 --- /dev/null +++ b/node_modules/lodash/initial.js @@ -0,0 +1,22 @@ +var baseSlice = require('./_baseSlice'); + +/** + * Gets all but the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] + */ +function initial(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 0, -1) : []; +} + +module.exports = initial; diff --git a/node_modules/lodash/intersection.js b/node_modules/lodash/intersection.js new file mode 100644 index 0000000..a94c135 --- /dev/null +++ b/node_modules/lodash/intersection.js @@ -0,0 +1,30 @@ +var arrayMap = require('./_arrayMap'), + baseIntersection = require('./_baseIntersection'), + baseRest = require('./_baseRest'), + castArrayLikeObject = require('./_castArrayLikeObject'); + +/** + * Creates an array of unique values that are included in all given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersection([2, 1], [2, 3]); + * // => [2] + */ +var intersection = baseRest(function(arrays) { + var mapped = arrayMap(arrays, castArrayLikeObject); + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped) + : []; +}); + +module.exports = intersection; diff --git a/node_modules/lodash/intersectionBy.js b/node_modules/lodash/intersectionBy.js new file mode 100644 index 0000000..31461aa --- /dev/null +++ b/node_modules/lodash/intersectionBy.js @@ -0,0 +1,45 @@ +var arrayMap = require('./_arrayMap'), + baseIntersection = require('./_baseIntersection'), + baseIteratee = require('./_baseIteratee'), + baseRest = require('./_baseRest'), + castArrayLikeObject = require('./_castArrayLikeObject'), + last = require('./last'); + +/** + * This method is like `_.intersection` except that it accepts `iteratee` + * which is invoked for each element of each `arrays` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [2.1] + * + * // The `_.property` iteratee shorthand. + * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }] + */ +var intersectionBy = baseRest(function(arrays) { + var iteratee = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + if (iteratee === last(mapped)) { + iteratee = undefined; + } else { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, baseIteratee(iteratee, 2)) + : []; +}); + +module.exports = intersectionBy; diff --git a/node_modules/lodash/intersectionWith.js b/node_modules/lodash/intersectionWith.js new file mode 100644 index 0000000..63cabfa --- /dev/null +++ b/node_modules/lodash/intersectionWith.js @@ -0,0 +1,41 @@ +var arrayMap = require('./_arrayMap'), + baseIntersection = require('./_baseIntersection'), + baseRest = require('./_baseRest'), + castArrayLikeObject = require('./_castArrayLikeObject'), + last = require('./last'); + +/** + * This method is like `_.intersection` except that it accepts `comparator` + * which is invoked to compare elements of `arrays`. The order and references + * of result values are determined by the first array. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.intersectionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }] + */ +var intersectionWith = baseRest(function(arrays) { + var comparator = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + comparator = typeof comparator == 'function' ? comparator : undefined; + if (comparator) { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, undefined, comparator) + : []; +}); + +module.exports = intersectionWith; diff --git a/node_modules/lodash/invert.js b/node_modules/lodash/invert.js new file mode 100644 index 0000000..8c47950 --- /dev/null +++ b/node_modules/lodash/invert.js @@ -0,0 +1,42 @@ +var constant = require('./constant'), + createInverter = require('./_createInverter'), + identity = require('./identity'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite + * property assignments of previous values. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Object + * @param {Object} object The object to invert. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } + */ +var invert = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + result[value] = key; +}, constant(identity)); + +module.exports = invert; diff --git a/node_modules/lodash/invertBy.js b/node_modules/lodash/invertBy.js new file mode 100644 index 0000000..3f4f7e5 --- /dev/null +++ b/node_modules/lodash/invertBy.js @@ -0,0 +1,56 @@ +var baseIteratee = require('./_baseIteratee'), + createInverter = require('./_createInverter'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** + * This method is like `_.invert` except that the inverted object is generated + * from the results of running each element of `object` thru `iteratee`. The + * corresponding inverted value of each inverted key is an array of keys + * responsible for generating the inverted value. The iteratee is invoked + * with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Object + * @param {Object} object The object to invert. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invertBy(object); + * // => { '1': ['a', 'c'], '2': ['b'] } + * + * _.invertBy(object, function(value) { + * return 'group' + value; + * }); + * // => { 'group1': ['a', 'c'], 'group2': ['b'] } + */ +var invertBy = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + if (hasOwnProperty.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } +}, baseIteratee); + +module.exports = invertBy; diff --git a/node_modules/lodash/invoke.js b/node_modules/lodash/invoke.js new file mode 100644 index 0000000..97d51eb --- /dev/null +++ b/node_modules/lodash/invoke.js @@ -0,0 +1,24 @@ +var baseInvoke = require('./_baseInvoke'), + baseRest = require('./_baseRest'); + +/** + * Invokes the method at `path` of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + * @example + * + * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; + * + * _.invoke(object, 'a[0].b.c.slice', 1, 3); + * // => [2, 3] + */ +var invoke = baseRest(baseInvoke); + +module.exports = invoke; diff --git a/node_modules/lodash/invokeMap.js b/node_modules/lodash/invokeMap.js new file mode 100644 index 0000000..8da5126 --- /dev/null +++ b/node_modules/lodash/invokeMap.js @@ -0,0 +1,41 @@ +var apply = require('./_apply'), + baseEach = require('./_baseEach'), + baseInvoke = require('./_baseInvoke'), + baseRest = require('./_baseRest'), + isArrayLike = require('./isArrayLike'); + +/** + * Invokes the method at `path` of each element in `collection`, returning + * an array of the results of each invoked method. Any additional arguments + * are provided to each invoked method. If `path` is a function, it's invoked + * for, and `this` bound to, each element in `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array|Function|string} path The path of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke each method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invokeMap([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] + */ +var invokeMap = baseRest(function(collection, path, args) { + var index = -1, + isFunc = typeof path == 'function', + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value) { + result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); + }); + return result; +}); + +module.exports = invokeMap; diff --git a/node_modules/lodash/isArguments.js b/node_modules/lodash/isArguments.js new file mode 100644 index 0000000..8b9ed66 --- /dev/null +++ b/node_modules/lodash/isArguments.js @@ -0,0 +1,36 @@ +var baseIsArguments = require('./_baseIsArguments'), + isObjectLike = require('./isObjectLike'); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); +}; + +module.exports = isArguments; diff --git a/node_modules/lodash/isArray.js b/node_modules/lodash/isArray.js new file mode 100644 index 0000000..88ab55f --- /dev/null +++ b/node_modules/lodash/isArray.js @@ -0,0 +1,26 @@ +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +module.exports = isArray; diff --git a/node_modules/lodash/isArrayBuffer.js b/node_modules/lodash/isArrayBuffer.js new file mode 100644 index 0000000..12904a6 --- /dev/null +++ b/node_modules/lodash/isArrayBuffer.js @@ -0,0 +1,27 @@ +var baseIsArrayBuffer = require('./_baseIsArrayBuffer'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer; + +/** + * Checks if `value` is classified as an `ArrayBuffer` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + * @example + * + * _.isArrayBuffer(new ArrayBuffer(2)); + * // => true + * + * _.isArrayBuffer(new Array(2)); + * // => false + */ +var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; + +module.exports = isArrayBuffer; diff --git a/node_modules/lodash/isArrayLike.js b/node_modules/lodash/isArrayLike.js new file mode 100644 index 0000000..0f96680 --- /dev/null +++ b/node_modules/lodash/isArrayLike.js @@ -0,0 +1,33 @@ +var isFunction = require('./isFunction'), + isLength = require('./isLength'); + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +module.exports = isArrayLike; diff --git a/node_modules/lodash/isArrayLikeObject.js b/node_modules/lodash/isArrayLikeObject.js new file mode 100644 index 0000000..6c4812a --- /dev/null +++ b/node_modules/lodash/isArrayLikeObject.js @@ -0,0 +1,33 @@ +var isArrayLike = require('./isArrayLike'), + isObjectLike = require('./isObjectLike'); + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +module.exports = isArrayLikeObject; diff --git a/node_modules/lodash/isBoolean.js b/node_modules/lodash/isBoolean.js new file mode 100644 index 0000000..a43ed4b --- /dev/null +++ b/node_modules/lodash/isBoolean.js @@ -0,0 +1,29 @@ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]'; + +/** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ +function isBoolean(value) { + return value === true || value === false || + (isObjectLike(value) && baseGetTag(value) == boolTag); +} + +module.exports = isBoolean; diff --git a/node_modules/lodash/isBuffer.js b/node_modules/lodash/isBuffer.js new file mode 100644 index 0000000..c103cc7 --- /dev/null +++ b/node_modules/lodash/isBuffer.js @@ -0,0 +1,38 @@ +var root = require('./_root'), + stubFalse = require('./stubFalse'); + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse; + +module.exports = isBuffer; diff --git a/node_modules/lodash/isDate.js b/node_modules/lodash/isDate.js new file mode 100644 index 0000000..7f0209f --- /dev/null +++ b/node_modules/lodash/isDate.js @@ -0,0 +1,27 @@ +var baseIsDate = require('./_baseIsDate'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsDate = nodeUtil && nodeUtil.isDate; + +/** + * Checks if `value` is classified as a `Date` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + * @example + * + * _.isDate(new Date); + * // => true + * + * _.isDate('Mon April 23 2012'); + * // => false + */ +var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; + +module.exports = isDate; diff --git a/node_modules/lodash/isElement.js b/node_modules/lodash/isElement.js new file mode 100644 index 0000000..76ae29c --- /dev/null +++ b/node_modules/lodash/isElement.js @@ -0,0 +1,25 @@ +var isObjectLike = require('./isObjectLike'), + isPlainObject = require('./isPlainObject'); + +/** + * Checks if `value` is likely a DOM element. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. + * @example + * + * _.isElement(document.body); + * // => true + * + * _.isElement(''); + * // => false + */ +function isElement(value) { + return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); +} + +module.exports = isElement; diff --git a/node_modules/lodash/isEmpty.js b/node_modules/lodash/isEmpty.js new file mode 100644 index 0000000..3597294 --- /dev/null +++ b/node_modules/lodash/isEmpty.js @@ -0,0 +1,77 @@ +var baseKeys = require('./_baseKeys'), + getTag = require('./_getTag'), + isArguments = require('./isArguments'), + isArray = require('./isArray'), + isArrayLike = require('./isArrayLike'), + isBuffer = require('./isBuffer'), + isPrototype = require('./_isPrototype'), + isTypedArray = require('./isTypedArray'); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + setTag = '[object Set]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ +function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + return true; +} + +module.exports = isEmpty; diff --git a/node_modules/lodash/isEqual.js b/node_modules/lodash/isEqual.js new file mode 100644 index 0000000..5e23e76 --- /dev/null +++ b/node_modules/lodash/isEqual.js @@ -0,0 +1,35 @@ +var baseIsEqual = require('./_baseIsEqual'); + +/** + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false + */ +function isEqual(value, other) { + return baseIsEqual(value, other); +} + +module.exports = isEqual; diff --git a/node_modules/lodash/isEqualWith.js b/node_modules/lodash/isEqualWith.js new file mode 100644 index 0000000..21bdc7f --- /dev/null +++ b/node_modules/lodash/isEqualWith.js @@ -0,0 +1,41 @@ +var baseIsEqual = require('./_baseIsEqual'); + +/** + * This method is like `_.isEqual` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with up to + * six arguments: (objValue, othValue [, index|key, object, other, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, othValue) { + * if (isGreeting(objValue) && isGreeting(othValue)) { + * return true; + * } + * } + * + * var array = ['hello', 'goodbye']; + * var other = ['hi', 'goodbye']; + * + * _.isEqualWith(array, other, customizer); + * // => true + */ +function isEqualWith(value, other, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + var result = customizer ? customizer(value, other) : undefined; + return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; +} + +module.exports = isEqualWith; diff --git a/node_modules/lodash/isError.js b/node_modules/lodash/isError.js new file mode 100644 index 0000000..b4f41e0 --- /dev/null +++ b/node_modules/lodash/isError.js @@ -0,0 +1,36 @@ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'), + isPlainObject = require('./isPlainObject'); + +/** `Object#toString` result references. */ +var domExcTag = '[object DOMException]', + errorTag = '[object Error]'; + +/** + * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, + * `SyntaxError`, `TypeError`, or `URIError` object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. + * @example + * + * _.isError(new Error); + * // => true + * + * _.isError(Error); + * // => false + */ +function isError(value) { + if (!isObjectLike(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == errorTag || tag == domExcTag || + (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); +} + +module.exports = isError; diff --git a/node_modules/lodash/isFinite.js b/node_modules/lodash/isFinite.js new file mode 100644 index 0000000..601842b --- /dev/null +++ b/node_modules/lodash/isFinite.js @@ -0,0 +1,36 @@ +var root = require('./_root'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsFinite = root.isFinite; + +/** + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on + * [`Number.isFinite`](https://mdn.io/Number/isFinite). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @example + * + * _.isFinite(3); + * // => true + * + * _.isFinite(Number.MIN_VALUE); + * // => true + * + * _.isFinite(Infinity); + * // => false + * + * _.isFinite('3'); + * // => false + */ +function isFinite(value) { + return typeof value == 'number' && nativeIsFinite(value); +} + +module.exports = isFinite; diff --git a/node_modules/lodash/isFunction.js b/node_modules/lodash/isFunction.js new file mode 100644 index 0000000..907a8cd --- /dev/null +++ b/node_modules/lodash/isFunction.js @@ -0,0 +1,37 @@ +var baseGetTag = require('./_baseGetTag'), + isObject = require('./isObject'); + +/** `Object#toString` result references. */ +var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; +} + +module.exports = isFunction; diff --git a/node_modules/lodash/isInteger.js b/node_modules/lodash/isInteger.js new file mode 100644 index 0000000..66aa87d --- /dev/null +++ b/node_modules/lodash/isInteger.js @@ -0,0 +1,33 @@ +var toInteger = require('./toInteger'); + +/** + * Checks if `value` is an integer. + * + * **Note:** This method is based on + * [`Number.isInteger`](https://mdn.io/Number/isInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an integer, else `false`. + * @example + * + * _.isInteger(3); + * // => true + * + * _.isInteger(Number.MIN_VALUE); + * // => false + * + * _.isInteger(Infinity); + * // => false + * + * _.isInteger('3'); + * // => false + */ +function isInteger(value) { + return typeof value == 'number' && value == toInteger(value); +} + +module.exports = isInteger; diff --git a/node_modules/lodash/isLength.js b/node_modules/lodash/isLength.js new file mode 100644 index 0000000..3a95caa --- /dev/null +++ b/node_modules/lodash/isLength.js @@ -0,0 +1,35 @@ +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +module.exports = isLength; diff --git a/node_modules/lodash/isMap.js b/node_modules/lodash/isMap.js new file mode 100644 index 0000000..44f8517 --- /dev/null +++ b/node_modules/lodash/isMap.js @@ -0,0 +1,27 @@ +var baseIsMap = require('./_baseIsMap'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsMap = nodeUtil && nodeUtil.isMap; + +/** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ +var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + +module.exports = isMap; diff --git a/node_modules/lodash/isMatch.js b/node_modules/lodash/isMatch.js new file mode 100644 index 0000000..9773a18 --- /dev/null +++ b/node_modules/lodash/isMatch.js @@ -0,0 +1,36 @@ +var baseIsMatch = require('./_baseIsMatch'), + getMatchData = require('./_getMatchData'); + +/** + * Performs a partial deep comparison between `object` and `source` to + * determine if `object` contains equivalent property values. + * + * **Note:** This method is equivalent to `_.matches` when `source` is + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.isMatch(object, { 'b': 2 }); + * // => true + * + * _.isMatch(object, { 'b': 1 }); + * // => false + */ +function isMatch(object, source) { + return object === source || baseIsMatch(object, source, getMatchData(source)); +} + +module.exports = isMatch; diff --git a/node_modules/lodash/isMatchWith.js b/node_modules/lodash/isMatchWith.js new file mode 100644 index 0000000..187b6a6 --- /dev/null +++ b/node_modules/lodash/isMatchWith.js @@ -0,0 +1,41 @@ +var baseIsMatch = require('./_baseIsMatch'), + getMatchData = require('./_getMatchData'); + +/** + * This method is like `_.isMatch` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with five + * arguments: (objValue, srcValue, index|key, object, source). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, srcValue) { + * if (isGreeting(objValue) && isGreeting(srcValue)) { + * return true; + * } + * } + * + * var object = { 'greeting': 'hello' }; + * var source = { 'greeting': 'hi' }; + * + * _.isMatchWith(object, source, customizer); + * // => true + */ +function isMatchWith(object, source, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseIsMatch(object, source, getMatchData(source), customizer); +} + +module.exports = isMatchWith; diff --git a/node_modules/lodash/isNaN.js b/node_modules/lodash/isNaN.js new file mode 100644 index 0000000..7d0d783 --- /dev/null +++ b/node_modules/lodash/isNaN.js @@ -0,0 +1,38 @@ +var isNumber = require('./isNumber'); + +/** + * Checks if `value` is `NaN`. + * + * **Note:** This method is based on + * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as + * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for + * `undefined` and other non-number values. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ +function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some + // ActiveX objects in IE. + return isNumber(value) && value != +value; +} + +module.exports = isNaN; diff --git a/node_modules/lodash/isNative.js b/node_modules/lodash/isNative.js new file mode 100644 index 0000000..f0cb8d5 --- /dev/null +++ b/node_modules/lodash/isNative.js @@ -0,0 +1,40 @@ +var baseIsNative = require('./_baseIsNative'), + isMaskable = require('./_isMaskable'); + +/** Error message constants. */ +var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.'; + +/** + * Checks if `value` is a pristine native function. + * + * **Note:** This method can't reliably detect native functions in the presence + * of the core-js package because core-js circumvents this kind of detection. + * Despite multiple requests, the core-js maintainer has made it clear: any + * attempt to fix the detection will be obstructed. As a result, we're left + * with little choice but to throw an error. Unfortunately, this also affects + * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), + * which rely on core-js. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ +function isNative(value) { + if (isMaskable(value)) { + throw new Error(CORE_ERROR_TEXT); + } + return baseIsNative(value); +} + +module.exports = isNative; diff --git a/node_modules/lodash/isNil.js b/node_modules/lodash/isNil.js new file mode 100644 index 0000000..79f0505 --- /dev/null +++ b/node_modules/lodash/isNil.js @@ -0,0 +1,25 @@ +/** + * Checks if `value` is `null` or `undefined`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is nullish, else `false`. + * @example + * + * _.isNil(null); + * // => true + * + * _.isNil(void 0); + * // => true + * + * _.isNil(NaN); + * // => false + */ +function isNil(value) { + return value == null; +} + +module.exports = isNil; diff --git a/node_modules/lodash/isNull.js b/node_modules/lodash/isNull.js new file mode 100644 index 0000000..c0a374d --- /dev/null +++ b/node_modules/lodash/isNull.js @@ -0,0 +1,22 @@ +/** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ +function isNull(value) { + return value === null; +} + +module.exports = isNull; diff --git a/node_modules/lodash/isNumber.js b/node_modules/lodash/isNumber.js new file mode 100644 index 0000000..cd34ee4 --- /dev/null +++ b/node_modules/lodash/isNumber.js @@ -0,0 +1,38 @@ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var numberTag = '[object Number]'; + +/** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are + * classified as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a number, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false + */ +function isNumber(value) { + return typeof value == 'number' || + (isObjectLike(value) && baseGetTag(value) == numberTag); +} + +module.exports = isNumber; diff --git a/node_modules/lodash/isObject.js b/node_modules/lodash/isObject.js new file mode 100644 index 0000000..1dc8939 --- /dev/null +++ b/node_modules/lodash/isObject.js @@ -0,0 +1,31 @@ +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} + +module.exports = isObject; diff --git a/node_modules/lodash/isObjectLike.js b/node_modules/lodash/isObjectLike.js new file mode 100644 index 0000000..301716b --- /dev/null +++ b/node_modules/lodash/isObjectLike.js @@ -0,0 +1,29 @@ +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} + +module.exports = isObjectLike; diff --git a/node_modules/lodash/isPlainObject.js b/node_modules/lodash/isPlainObject.js new file mode 100644 index 0000000..2387373 --- /dev/null +++ b/node_modules/lodash/isPlainObject.js @@ -0,0 +1,62 @@ +var baseGetTag = require('./_baseGetTag'), + getPrototype = require('./_getPrototype'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to infer the `Object` constructor. */ +var objectCtorString = funcToString.call(Object); + +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; +} + +module.exports = isPlainObject; diff --git a/node_modules/lodash/isRegExp.js b/node_modules/lodash/isRegExp.js new file mode 100644 index 0000000..76c9b6e --- /dev/null +++ b/node_modules/lodash/isRegExp.js @@ -0,0 +1,27 @@ +var baseIsRegExp = require('./_baseIsRegExp'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsRegExp = nodeUtil && nodeUtil.isRegExp; + +/** + * Checks if `value` is classified as a `RegExp` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + * @example + * + * _.isRegExp(/abc/); + * // => true + * + * _.isRegExp('/abc/'); + * // => false + */ +var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; + +module.exports = isRegExp; diff --git a/node_modules/lodash/isSafeInteger.js b/node_modules/lodash/isSafeInteger.js new file mode 100644 index 0000000..2a48526 --- /dev/null +++ b/node_modules/lodash/isSafeInteger.js @@ -0,0 +1,37 @@ +var isInteger = require('./isInteger'); + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 + * double precision number which isn't the result of a rounded unsafe integer. + * + * **Note:** This method is based on + * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. + * @example + * + * _.isSafeInteger(3); + * // => true + * + * _.isSafeInteger(Number.MIN_VALUE); + * // => false + * + * _.isSafeInteger(Infinity); + * // => false + * + * _.isSafeInteger('3'); + * // => false + */ +function isSafeInteger(value) { + return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; +} + +module.exports = isSafeInteger; diff --git a/node_modules/lodash/isSet.js b/node_modules/lodash/isSet.js new file mode 100644 index 0000000..ab88bdf --- /dev/null +++ b/node_modules/lodash/isSet.js @@ -0,0 +1,27 @@ +var baseIsSet = require('./_baseIsSet'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsSet = nodeUtil && nodeUtil.isSet; + +/** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ +var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + +module.exports = isSet; diff --git a/node_modules/lodash/isString.js b/node_modules/lodash/isString.js new file mode 100644 index 0000000..627eb9c --- /dev/null +++ b/node_modules/lodash/isString.js @@ -0,0 +1,30 @@ +var baseGetTag = require('./_baseGetTag'), + isArray = require('./isArray'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var stringTag = '[object String]'; + +/** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ +function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); +} + +module.exports = isString; diff --git a/node_modules/lodash/isSymbol.js b/node_modules/lodash/isSymbol.js new file mode 100644 index 0000000..dfb60b9 --- /dev/null +++ b/node_modules/lodash/isSymbol.js @@ -0,0 +1,29 @@ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); +} + +module.exports = isSymbol; diff --git a/node_modules/lodash/isTypedArray.js b/node_modules/lodash/isTypedArray.js new file mode 100644 index 0000000..da3f8dd --- /dev/null +++ b/node_modules/lodash/isTypedArray.js @@ -0,0 +1,27 @@ +var baseIsTypedArray = require('./_baseIsTypedArray'), + baseUnary = require('./_baseUnary'), + nodeUtil = require('./_nodeUtil'); + +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + +module.exports = isTypedArray; diff --git a/node_modules/lodash/isUndefined.js b/node_modules/lodash/isUndefined.js new file mode 100644 index 0000000..377d121 --- /dev/null +++ b/node_modules/lodash/isUndefined.js @@ -0,0 +1,22 @@ +/** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ +function isUndefined(value) { + return value === undefined; +} + +module.exports = isUndefined; diff --git a/node_modules/lodash/isWeakMap.js b/node_modules/lodash/isWeakMap.js new file mode 100644 index 0000000..8d36f66 --- /dev/null +++ b/node_modules/lodash/isWeakMap.js @@ -0,0 +1,28 @@ +var getTag = require('./_getTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var weakMapTag = '[object WeakMap]'; + +/** + * Checks if `value` is classified as a `WeakMap` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. + * @example + * + * _.isWeakMap(new WeakMap); + * // => true + * + * _.isWeakMap(new Map); + * // => false + */ +function isWeakMap(value) { + return isObjectLike(value) && getTag(value) == weakMapTag; +} + +module.exports = isWeakMap; diff --git a/node_modules/lodash/isWeakSet.js b/node_modules/lodash/isWeakSet.js new file mode 100644 index 0000000..e628b26 --- /dev/null +++ b/node_modules/lodash/isWeakSet.js @@ -0,0 +1,28 @@ +var baseGetTag = require('./_baseGetTag'), + isObjectLike = require('./isObjectLike'); + +/** `Object#toString` result references. */ +var weakSetTag = '[object WeakSet]'; + +/** + * Checks if `value` is classified as a `WeakSet` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. + * @example + * + * _.isWeakSet(new WeakSet); + * // => true + * + * _.isWeakSet(new Set); + * // => false + */ +function isWeakSet(value) { + return isObjectLike(value) && baseGetTag(value) == weakSetTag; +} + +module.exports = isWeakSet; diff --git a/node_modules/lodash/iteratee.js b/node_modules/lodash/iteratee.js new file mode 100644 index 0000000..61b73a8 --- /dev/null +++ b/node_modules/lodash/iteratee.js @@ -0,0 +1,53 @@ +var baseClone = require('./_baseClone'), + baseIteratee = require('./_baseIteratee'); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1; + +/** + * Creates a function that invokes `func` with the arguments of the created + * function. If `func` is a property name, the created function returns the + * property value for a given element. If `func` is an array or object, the + * created function returns `true` for elements that contain the equivalent + * source properties, otherwise it returns `false`. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Util + * @param {*} [func=_.identity] The value to convert to a callback. + * @returns {Function} Returns the callback. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); + * // => [{ 'user': 'barney', 'age': 36, 'active': true }] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, _.iteratee(['user', 'fred'])); + * // => [{ 'user': 'fred', 'age': 40 }] + * + * // The `_.property` iteratee shorthand. + * _.map(users, _.iteratee('user')); + * // => ['barney', 'fred'] + * + * // Create custom iteratee shorthands. + * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) { + * return !_.isRegExp(func) ? iteratee(func) : function(string) { + * return func.test(string); + * }; + * }); + * + * _.filter(['abc', 'def'], /ef/); + * // => ['def'] + */ +function iteratee(func) { + return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG)); +} + +module.exports = iteratee; diff --git a/node_modules/lodash/join.js b/node_modules/lodash/join.js new file mode 100644 index 0000000..45de079 --- /dev/null +++ b/node_modules/lodash/join.js @@ -0,0 +1,26 @@ +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeJoin = arrayProto.join; + +/** + * Converts all elements in `array` into a string separated by `separator`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to convert. + * @param {string} [separator=','] The element separator. + * @returns {string} Returns the joined string. + * @example + * + * _.join(['a', 'b', 'c'], '~'); + * // => 'a~b~c' + */ +function join(array, separator) { + return array == null ? '' : nativeJoin.call(array, separator); +} + +module.exports = join; diff --git a/node_modules/lodash/kebabCase.js b/node_modules/lodash/kebabCase.js new file mode 100644 index 0000000..8a52be6 --- /dev/null +++ b/node_modules/lodash/kebabCase.js @@ -0,0 +1,28 @@ +var createCompounder = require('./_createCompounder'); + +/** + * Converts `string` to + * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example + * + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' + * + * _.kebabCase('fooBar'); + * // => 'foo-bar' + * + * _.kebabCase('__FOO_BAR__'); + * // => 'foo-bar' + */ +var kebabCase = createCompounder(function(result, word, index) { + return result + (index ? '-' : '') + word.toLowerCase(); +}); + +module.exports = kebabCase; diff --git a/node_modules/lodash/keyBy.js b/node_modules/lodash/keyBy.js new file mode 100644 index 0000000..acc007a --- /dev/null +++ b/node_modules/lodash/keyBy.js @@ -0,0 +1,36 @@ +var baseAssignValue = require('./_baseAssignValue'), + createAggregator = require('./_createAggregator'); + +/** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the last element responsible for generating the key. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var array = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.keyBy(array, function(o) { + * return String.fromCharCode(o.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.keyBy(array, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + */ +var keyBy = createAggregator(function(result, value, key) { + baseAssignValue(result, key, value); +}); + +module.exports = keyBy; diff --git a/node_modules/lodash/keys.js b/node_modules/lodash/keys.js new file mode 100644 index 0000000..d143c71 --- /dev/null +++ b/node_modules/lodash/keys.js @@ -0,0 +1,37 @@ +var arrayLikeKeys = require('./_arrayLikeKeys'), + baseKeys = require('./_baseKeys'), + isArrayLike = require('./isArrayLike'); + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} + +module.exports = keys; diff --git a/node_modules/lodash/keysIn.js b/node_modules/lodash/keysIn.js new file mode 100644 index 0000000..a62308f --- /dev/null +++ b/node_modules/lodash/keysIn.js @@ -0,0 +1,32 @@ +var arrayLikeKeys = require('./_arrayLikeKeys'), + baseKeysIn = require('./_baseKeysIn'), + isArrayLike = require('./isArrayLike'); + +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); +} + +module.exports = keysIn; diff --git a/node_modules/lodash/lang.js b/node_modules/lodash/lang.js new file mode 100644 index 0000000..a396216 --- /dev/null +++ b/node_modules/lodash/lang.js @@ -0,0 +1,58 @@ +module.exports = { + 'castArray': require('./castArray'), + 'clone': require('./clone'), + 'cloneDeep': require('./cloneDeep'), + 'cloneDeepWith': require('./cloneDeepWith'), + 'cloneWith': require('./cloneWith'), + 'conformsTo': require('./conformsTo'), + 'eq': require('./eq'), + 'gt': require('./gt'), + 'gte': require('./gte'), + 'isArguments': require('./isArguments'), + 'isArray': require('./isArray'), + 'isArrayBuffer': require('./isArrayBuffer'), + 'isArrayLike': require('./isArrayLike'), + 'isArrayLikeObject': require('./isArrayLikeObject'), + 'isBoolean': require('./isBoolean'), + 'isBuffer': require('./isBuffer'), + 'isDate': require('./isDate'), + 'isElement': require('./isElement'), + 'isEmpty': require('./isEmpty'), + 'isEqual': require('./isEqual'), + 'isEqualWith': require('./isEqualWith'), + 'isError': require('./isError'), + 'isFinite': require('./isFinite'), + 'isFunction': require('./isFunction'), + 'isInteger': require('./isInteger'), + 'isLength': require('./isLength'), + 'isMap': require('./isMap'), + 'isMatch': require('./isMatch'), + 'isMatchWith': require('./isMatchWith'), + 'isNaN': require('./isNaN'), + 'isNative': require('./isNative'), + 'isNil': require('./isNil'), + 'isNull': require('./isNull'), + 'isNumber': require('./isNumber'), + 'isObject': require('./isObject'), + 'isObjectLike': require('./isObjectLike'), + 'isPlainObject': require('./isPlainObject'), + 'isRegExp': require('./isRegExp'), + 'isSafeInteger': require('./isSafeInteger'), + 'isSet': require('./isSet'), + 'isString': require('./isString'), + 'isSymbol': require('./isSymbol'), + 'isTypedArray': require('./isTypedArray'), + 'isUndefined': require('./isUndefined'), + 'isWeakMap': require('./isWeakMap'), + 'isWeakSet': require('./isWeakSet'), + 'lt': require('./lt'), + 'lte': require('./lte'), + 'toArray': require('./toArray'), + 'toFinite': require('./toFinite'), + 'toInteger': require('./toInteger'), + 'toLength': require('./toLength'), + 'toNumber': require('./toNumber'), + 'toPlainObject': require('./toPlainObject'), + 'toSafeInteger': require('./toSafeInteger'), + 'toString': require('./toString') +}; diff --git a/node_modules/lodash/last.js b/node_modules/lodash/last.js new file mode 100644 index 0000000..cad1eaf --- /dev/null +++ b/node_modules/lodash/last.js @@ -0,0 +1,20 @@ +/** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ +function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; +} + +module.exports = last; diff --git a/node_modules/lodash/lastIndexOf.js b/node_modules/lodash/lastIndexOf.js new file mode 100644 index 0000000..dabfb61 --- /dev/null +++ b/node_modules/lodash/lastIndexOf.js @@ -0,0 +1,46 @@ +var baseFindIndex = require('./_baseFindIndex'), + baseIsNaN = require('./_baseIsNaN'), + strictLastIndexOf = require('./_strictLastIndexOf'), + toInteger = require('./toInteger'); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // Search from the `fromIndex`. + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 + */ +function lastIndexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return value === value + ? strictLastIndexOf(array, value, index) + : baseFindIndex(array, baseIsNaN, index, true); +} + +module.exports = lastIndexOf; diff --git a/node_modules/lodash/lodash.js b/node_modules/lodash/lodash.js new file mode 100644 index 0000000..4131e93 --- /dev/null +++ b/node_modules/lodash/lodash.js @@ -0,0 +1,17209 @@ +/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +;(function() { + + /** Used as a safe reference for `undefined` in pre-ES5 environments. */ + var undefined; + + /** Used as the semantic version number. */ + var VERSION = '4.17.21'; + + /** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; + + /** Error message constants. */ + var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', + FUNC_ERROR_TEXT = 'Expected a function', + INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`'; + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + /** Used as the maximum memoize cache size. */ + var MAX_MEMOIZE_SIZE = 500; + + /** Used as the internal argument placeholder. */ + var PLACEHOLDER = '__lodash_placeholder__'; + + /** Used to compose bitmasks for cloning. */ + var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + /** Used to compose bitmasks for function metadata. */ + var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_BOUND_FLAG = 4, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256, + WRAP_FLIP_FLAG = 512; + + /** Used as default options for `_.truncate`. */ + var DEFAULT_TRUNC_LENGTH = 30, + DEFAULT_TRUNC_OMISSION = '...'; + + /** Used to detect hot functions by number of calls within a span of milliseconds. */ + var HOT_COUNT = 800, + HOT_SPAN = 16; + + /** Used to indicate the type of lazy iteratees. */ + var LAZY_FILTER_FLAG = 1, + LAZY_MAP_FLAG = 2, + LAZY_WHILE_FLAG = 3; + + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991, + MAX_INTEGER = 1.7976931348623157e+308, + NAN = 0 / 0; + + /** Used as references for the maximum length and index of an array. */ + var MAX_ARRAY_LENGTH = 4294967295, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + + /** Used to associate wrap methods with their bit flags. */ + var wrapFlags = [ + ['ary', WRAP_ARY_FLAG], + ['bind', WRAP_BIND_FLAG], + ['bindKey', WRAP_BIND_KEY_FLAG], + ['curry', WRAP_CURRY_FLAG], + ['curryRight', WRAP_CURRY_RIGHT_FLAG], + ['flip', WRAP_FLIP_FLAG], + ['partial', WRAP_PARTIAL_FLAG], + ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], + ['rearg', WRAP_REARG_FLAG] + ]; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + asyncTag = '[object AsyncFunction]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + domExcTag = '[object DOMException]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + nullTag = '[object Null]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + proxyTag = '[object Proxy]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + undefinedTag = '[object Undefined]', + weakMapTag = '[object WeakMap]', + weakSetTag = '[object WeakSet]'; + + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** Used to match empty string literals in compiled template source. */ + var reEmptyStringLeading = /\b__p \+= '';/g, + reEmptyStringMiddle = /\b(__p \+=) '' \+/g, + reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + + /** Used to match HTML entities and HTML characters. */ + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, + reUnescapedHtml = /[&<>"']/g, + reHasEscapedHtml = RegExp(reEscapedHtml.source), + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + + /** Used to match template delimiters. */ + var reEscape = /<%-([\s\S]+?)%>/g, + reEvaluate = /<%([\s\S]+?)%>/g, + reInterpolate = /<%=([\s\S]+?)%>/g; + + /** Used to match property names within property paths. */ + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + + /** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, + reHasRegExpChar = RegExp(reRegExpChar.source); + + /** Used to match leading whitespace. */ + var reTrimStart = /^\s+/; + + /** Used to match a single whitespace character. */ + var reWhitespace = /\s/; + + /** Used to match wrap detail comments. */ + var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, + reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, + reSplitDetails = /,? & /; + + /** Used to match words composed of alphanumeric characters. */ + var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + + /** + * Used to validate the `validate` option in `_.template` variable. + * + * Forbids characters which could potentially change the meaning of the function argument definition: + * - "()," (modification of function parameters) + * - "=" (default value) + * - "[]{}" (destructuring of function parameters) + * - "/" (beginning of a comment) + * - whitespace + */ + var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; + + /** Used to match backslashes in property paths. */ + var reEscapeChar = /\\(\\)?/g; + + /** + * Used to match + * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). + */ + var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + + /** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; + + /** Used to detect bad signed hexadecimal string values. */ + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + + /** Used to detect binary string values. */ + var reIsBinary = /^0b[01]+$/i; + + /** Used to detect host constructors (Safari). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + /** Used to detect octal string values. */ + var reIsOctal = /^0o[0-7]+$/i; + + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; + + /** Used to match Latin Unicode letters (excluding mathematical operators). */ + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + + /** Used to ensure capturing order of template delimiters. */ + var reNoMatch = /($^)/; + + /** Used to match unescaped characters in compiled string literals. */ + var reUnescapedString = /['\n\r\u2028\u2029\\]/g; + + /** Used to compose unicode character classes. */ + var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsDingbatRange = '\\u2700-\\u27bf', + rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', + rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', + rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', + rsPunctuationRange = '\\u2000-\\u206f', + rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', + rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', + rsVarRange = '\\ufe0e\\ufe0f', + rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + + /** Used to compose unicode capture groups. */ + var rsApos = "['\u2019]", + rsAstral = '[' + rsAstralRange + ']', + rsBreak = '[' + rsBreakRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsDigits = '\\d+', + rsDingbat = '[' + rsDingbatRange + ']', + rsLower = '[' + rsLowerRange + ']', + rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsUpper = '[' + rsUpperRange + ']', + rsZWJ = '\\u200d'; + + /** Used to compose unicode regexes. */ + var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', + rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', + rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', + rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', + reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', + rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + + /** Used to match apostrophes. */ + var reApos = RegExp(rsApos, 'g'); + + /** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ + var reComboMark = RegExp(rsCombo, 'g'); + + /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ + var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + + /** Used to match complex or compound words. */ + var reUnicodeWord = RegExp([ + rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', + rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', + rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, + rsUpper + '+' + rsOptContrUpper, + rsOrdUpper, + rsOrdLower, + rsDigits, + rsEmoji + ].join('|'), 'g'); + + /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ + var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + + /** Used to detect strings that need a more robust regexp to match words. */ + var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + + /** Used to assign default `context` object properties. */ + var contextProps = [ + 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', + 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', + 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', + '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' + ]; + + /** Used to make template sourceURLs easier to identify. */ + var templateCounter = -1; + + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = + typedArrayTags[errorTag] = typedArrayTags[funcTag] = + typedArrayTags[mapTag] = typedArrayTags[numberTag] = + typedArrayTags[objectTag] = typedArrayTags[regexpTag] = + typedArrayTags[setTag] = typedArrayTags[stringTag] = + typedArrayTags[weakMapTag] = false; + + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = + cloneableTags[boolTag] = cloneableTags[dateTag] = + cloneableTags[float32Tag] = cloneableTags[float64Tag] = + cloneableTags[int8Tag] = cloneableTags[int16Tag] = + cloneableTags[int32Tag] = cloneableTags[mapTag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[setTag] = + cloneableTags[stringTag] = cloneableTags[symbolTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[weakMapTag] = false; + + /** Used to map Latin Unicode letters to basic Latin letters. */ + var deburredLetters = { + // Latin-1 Supplement block. + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss', + // Latin Extended-A block. + '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', + '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', + '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', + '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', + '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', + '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', + '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', + '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', + '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', + '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', + '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', + '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', + '\u0134': 'J', '\u0135': 'j', + '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', + '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', + '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', + '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', + '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', + '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', + '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', + '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', + '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', + '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', + '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', + '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', + '\u0163': 't', '\u0165': 't', '\u0167': 't', + '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', + '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', + '\u0174': 'W', '\u0175': 'w', + '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', + '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', + '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', + '\u0132': 'IJ', '\u0133': 'ij', + '\u0152': 'Oe', '\u0153': 'oe', + '\u0149': "'n", '\u017f': 's' + }; + + /** Used to map characters to HTML entities. */ + var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + + /** Used to map HTML entities to characters. */ + var htmlUnescapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + ''': "'" + }; + + /** Used to escape characters for inclusion in compiled string literals. */ + var stringEscapes = { + '\\': '\\', + "'": "'", + '\n': 'n', + '\r': 'r', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + /** Built-in method references without a dependency on `root`. */ + var freeParseFloat = parseFloat, + freeParseInt = parseInt; + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); + + /** Detect free variable `exports`. */ + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; + + /** Detect free variable `process` from Node.js. */ + var freeProcess = moduleExports && freeGlobal.process; + + /** Used to access faster Node.js helpers. */ + var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} + }()); + + /* Node.js helper references. */ + var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, + nodeIsDate = nodeUtil && nodeUtil.isDate, + nodeIsMap = nodeUtil && nodeUtil.isMap, + nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, + nodeIsSet = nodeUtil && nodeUtil.isSet, + nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + + /*--------------------------------------------------------------------------*/ + + /** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ + function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } + + /** + * A specialized version of `baseAggregator` for arrays. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); + } + return accumulator; + } + + /** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.forEachRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEachRight(array, iteratee) { + var length = array == null ? 0 : array.length; + + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.every` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + */ + function arrayEvery(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; + } + + /** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; + } + + /** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; + } + + /** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } + + /** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + + /** + * A specialized version of `_.reduceRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the last element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduceRight(array, iteratee, accumulator, initAccum) { + var length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; + } + + /** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } + + /** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + var asciiSize = baseProperty('length'); + + /** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function asciiToArray(string) { + return string.split(''); + } + + /** + * Splits an ASCII `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function asciiWords(string) { + return string.match(reAsciiWord) || []; + } + + /** + * The base implementation of methods like `_.findKey` and `_.findLastKey`, + * without support for iteratee shorthands, which iterates over `collection` + * using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = key; + return false; + } + }); + return result; + } + + /** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); + } + + /** + * This function is like `baseIndexOf` except that it accepts a comparator. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @param {Function} comparator The comparator invoked per element. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOfWith(array, value, fromIndex, comparator) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (comparator(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ + function baseIsNaN(value) { + return value !== value; + } + + /** + * The base implementation of `_.mean` and `_.meanBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the mean. + */ + function baseMean(array, iteratee) { + var length = array == null ? 0 : array.length; + return length ? (baseSum(array, iteratee) / length) : NAN; + } + + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.propertyOf` without support for deep paths. + * + * @private + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyOf(object) { + return function(key) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ + function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ + function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; + } + + /** + * The base implementation of `_.sum` and `_.sumBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the sum. + */ + function baseSum(array, iteratee) { + var result, + index = -1, + length = array.length; + + while (++index < length) { + var current = iteratee(array[index]); + if (current !== undefined) { + result = result === undefined ? current : (result + current); + } + } + return result; + } + + /** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + + /** + * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array + * of key-value pairs for `object` corresponding to the property names of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the key-value pairs. + */ + function baseToPairs(object, props) { + return arrayMap(props, function(key) { + return [key, object[key]]; + }); + } + + /** + * The base implementation of `_.trim`. + * + * @private + * @param {string} string The string to trim. + * @returns {string} Returns the trimmed string. + */ + function baseTrim(string) { + return string + ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') + : string; + } + + /** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ + function baseUnary(func) { + return function(value) { + return func(value); + }; + } + + /** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ + function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); + } + + /** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function cacheHas(cache, key) { + return cache.has(key); + } + + /** + * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the first unmatched string symbol. + */ + function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, + length = strSymbols.length; + + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the last unmatched string symbol. + */ + function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; + + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Gets the number of `placeholder` occurrences in `array`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} placeholder The placeholder to search for. + * @returns {number} Returns the placeholder count. + */ + function countHolders(array, placeholder) { + var length = array.length, + result = 0; + + while (length--) { + if (array[length] === placeholder) { + ++result; + } + } + return result; + } + + /** + * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A + * letters to basic Latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ + var deburrLetter = basePropertyOf(deburredLetters); + + /** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + var escapeHtmlChar = basePropertyOf(htmlEscapes); + + /** + * Used by `_.template` to escape characters for inclusion in compiled string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeStringChar(chr) { + return '\\' + stringEscapes[chr]; + } + + /** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + /** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ + function hasUnicode(string) { + return reHasUnicode.test(string); + } + + /** + * Checks if `string` contains a word composed of Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a word is found, else `false`. + */ + function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); + } + + /** + * Converts `iterator` to an array. + * + * @private + * @param {Object} iterator The iterator to convert. + * @returns {Array} Returns the converted array. + */ + function iteratorToArray(iterator) { + var data, + result = []; + + while (!(data = iterator.next()).done) { + result.push(data.value); + } + return result; + } + + /** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ + function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } + + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + + /** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */ + function replaceHolders(array, placeholder) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value === placeholder || value === PLACEHOLDER) { + array[index] = PLACEHOLDER; + result[resIndex++] = index; + } + } + return result; + } + + /** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ + function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } + + /** + * Converts `set` to its value-value pairs. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the value-value pairs. + */ + function setToPairs(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = [value, value]; + }); + return result; + } + + /** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + /** + * A specialized version of `_.lastIndexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictLastIndexOf(array, value, fromIndex) { + var index = fromIndex + 1; + while (index--) { + if (array[index] === value) { + return index; + } + } + return index; + } + + /** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ + function stringSize(string) { + return hasUnicode(string) + ? unicodeSize(string) + : asciiSize(string); + } + + /** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function stringToArray(string) { + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); + } + + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the last non-whitespace character. + */ + function trimmedEndIndex(string) { + var index = string.length; + + while (index-- && reWhitespace.test(string.charAt(index))) {} + return index; + } + + /** + * Used by `_.unescape` to convert HTML entities to characters. + * + * @private + * @param {string} chr The matched character to unescape. + * @returns {string} Returns the unescaped character. + */ + var unescapeHtmlChar = basePropertyOf(htmlUnescapes); + + /** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; + } + + /** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } + + /** + * Splits a Unicode `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function unicodeWords(string) { + return string.match(reUnicodeWord) || []; + } + + /*--------------------------------------------------------------------------*/ + + /** + * Create a new pristine `lodash` function using the `context` object. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Util + * @param {Object} [context=root] The context object. + * @returns {Function} Returns a new `lodash` function. + * @example + * + * _.mixin({ 'foo': _.constant('foo') }); + * + * var lodash = _.runInContext(); + * lodash.mixin({ 'bar': lodash.constant('bar') }); + * + * _.isFunction(_.foo); + * // => true + * _.isFunction(_.bar); + * // => false + * + * lodash.isFunction(lodash.foo); + * // => false + * lodash.isFunction(lodash.bar); + * // => true + * + * // Create a suped-up `defer` in Node.js. + * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; + */ + var runInContext = (function runInContext(context) { + context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); + + /** Built-in constructor references. */ + var Array = context.Array, + Date = context.Date, + Error = context.Error, + Function = context.Function, + Math = context.Math, + Object = context.Object, + RegExp = context.RegExp, + String = context.String, + TypeError = context.TypeError; + + /** Used for built-in method references. */ + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + + /** Used to detect overreaching core-js shims. */ + var coreJsData = context['__core-js_shared__']; + + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to generate unique IDs. */ + var idCounter = 0; + + /** Used to detect methods masquerading as native. */ + var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; + }()); + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString = objectProto.toString; + + /** Used to infer the `Object` constructor. */ + var objectCtorString = funcToString.call(Object); + + /** Used to restore the original `_` reference in `_.noConflict`. */ + var oldDash = root._; + + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** Built-in value references. */ + var Buffer = moduleExports ? context.Buffer : undefined, + Symbol = context.Symbol, + Uint8Array = context.Uint8Array, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice, + spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, + symIterator = Symbol ? Symbol.iterator : undefined, + symToStringTag = Symbol ? Symbol.toStringTag : undefined; + + var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }()); + + /** Mocked built-ins. */ + var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, + ctxNow = Date && Date.now !== root.Date.now && Date.now, + ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeCeil = Math.ceil, + nativeFloor = Math.floor, + nativeGetSymbols = Object.getOwnPropertySymbols, + nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeIsFinite = context.isFinite, + nativeJoin = arrayProto.join, + nativeKeys = overArg(Object.keys, Object), + nativeMax = Math.max, + nativeMin = Math.min, + nativeNow = Date.now, + nativeParseInt = context.parseInt, + nativeRandom = Math.random, + nativeReverse = arrayProto.reverse; + + /* Built-in method references that are verified to be native. */ + var DataView = getNative(context, 'DataView'), + Map = getNative(context, 'Map'), + Promise = getNative(context, 'Promise'), + Set = getNative(context, 'Set'), + WeakMap = getNative(context, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); + + /** Used to store function metadata. */ + var metaMap = WeakMap && new WeakMap; + + /** Used to lookup unminified function names. */ + var realNames = {}; + + /** Used to detect maps, sets, and weakmaps. */ + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` object which wraps `value` to enable implicit method + * chain sequences. Methods that operate on and return arrays, collections, + * and functions can be chained together. Methods that retrieve a single value + * or may return a primitive value will automatically end the chain sequence + * and return the unwrapped value. Otherwise, the value must be unwrapped + * with `_#value`. + * + * Explicit chain sequences, which must be unwrapped with `_#value`, may be + * enabled using `_.chain`. + * + * The execution of chained methods is lazy, that is, it's deferred until + * `_#value` is implicitly or explicitly called. + * + * Lazy evaluation allows several methods to support shortcut fusion. + * Shortcut fusion is an optimization to merge iteratee calls; this avoids + * the creation of intermediate arrays and can greatly reduce the number of + * iteratee executions. Sections of a chain sequence qualify for shortcut + * fusion if the section is applied to an array and iteratees accept only + * one argument. The heuristic for whether a section qualifies for shortcut + * fusion is subject to change. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, + * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, + * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, + * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, + * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, + * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, + * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, + * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, + * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, + * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, + * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, + * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, + * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, + * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, + * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, + * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, + * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, + * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, + * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, + * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, + * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, + * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, + * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, + * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, + * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, + * `zipObject`, `zipObjectDeep`, and `zipWith` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, + * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, + * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, + * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, + * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, + * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, + * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, + * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, + * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, + * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, + * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, + * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, + * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, + * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, + * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, + * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, + * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, + * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, + * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, + * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, + * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, + * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, + * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, + * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, + * `upperFirst`, `value`, and `words` + * + * @name _ + * @constructor + * @category Seq + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2, 3]); + * + * // Returns an unwrapped value. + * wrapped.reduce(_.add); + * // => 6 + * + * // Returns a wrapped value. + * var squares = wrapped.map(square); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */ + function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, '__wrapped__')) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); + } + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; + }()); + + /** + * The function whose prototype chain sequence wrappers inherit from. + * + * @private + */ + function baseLodash() { + // No operation performed. + } + + /** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable explicit method chain sequences. + */ + function LodashWrapper(value, chainAll) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__chain__ = !!chainAll; + this.__index__ = 0; + this.__values__ = undefined; + } + + /** + * By default, the template delimiters used by lodash are like those in + * embedded Ruby (ERB) as well as ES2015 template strings. Change the + * following template settings to use alternative delimiters. + * + * @static + * @memberOf _ + * @type {Object} + */ + lodash.templateSettings = { + + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'escape': reEscape, + + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'evaluate': reEvaluate, + + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'interpolate': reInterpolate, + + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type {string} + */ + 'variable': '', + + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type {Object} + */ + 'imports': { + + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type {Function} + */ + '_': lodash + } + }; + + // Ensure wrappers are instances of `baseLodash`. + lodash.prototype = baseLodash.prototype; + lodash.prototype.constructor = lodash; + + LodashWrapper.prototype = baseCreate(baseLodash.prototype); + LodashWrapper.prototype.constructor = LodashWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * + * @private + * @constructor + * @param {*} value The value to wrap. + */ + function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__dir__ = 1; + this.__filtered__ = false; + this.__iteratees__ = []; + this.__takeCount__ = MAX_ARRAY_LENGTH; + this.__views__ = []; + } + + /** + * Creates a clone of the lazy wrapper object. + * + * @private + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. + */ + function lazyClone() { + var result = new LazyWrapper(this.__wrapped__); + result.__actions__ = copyArray(this.__actions__); + result.__dir__ = this.__dir__; + result.__filtered__ = this.__filtered__; + result.__iteratees__ = copyArray(this.__iteratees__); + result.__takeCount__ = this.__takeCount__; + result.__views__ = copyArray(this.__views__); + return result; + } + + /** + * Reverses the direction of lazy iteration. + * + * @private + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. + */ + function lazyReverse() { + if (this.__filtered__) { + var result = new LazyWrapper(this); + result.__dir__ = -1; + result.__filtered__ = true; + } else { + result = this.clone(); + result.__dir__ *= -1; + } + return result; + } + + /** + * Extracts the unwrapped value from its lazy wrapper. + * + * @private + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. + */ + function lazyValue() { + var array = this.__wrapped__.value(), + dir = this.__dir__, + isArr = isArray(array), + isRight = dir < 0, + arrLength = isArr ? array.length : 0, + view = getView(0, arrLength, this.__views__), + start = view.start, + end = view.end, + length = end - start, + index = isRight ? end : (start - 1), + iteratees = this.__iteratees__, + iterLength = iteratees.length, + resIndex = 0, + takeCount = nativeMin(length, this.__takeCount__); + + if (!isArr || (!isRight && arrLength == length && takeCount == length)) { + return baseWrapperValue(array, this.__actions__); + } + var result = []; + + outer: + while (length-- && resIndex < takeCount) { + index += dir; + + var iterIndex = -1, + value = array[index]; + + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], + iteratee = data.iteratee, + type = data.type, + computed = iteratee(value); + + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + result[resIndex++] = value; + } + return result; + } + + // Ensure `LazyWrapper` is an instance of `baseLodash`. + LazyWrapper.prototype = baseCreate(baseLodash.prototype); + LazyWrapper.prototype.constructor = LazyWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } + + /** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } + + /** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); + } + + /** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; + } + + // Add methods to `Hash`. + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } + + /** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; + } + + /** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; + } + + /** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + /** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + + // Add methods to `ListCache`. + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ + function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; + } + + /** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + /** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + /** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ + function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; + } + + // Add methods to `MapCache`. + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + + /*------------------------------------------------------------------------*/ + + /** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ + function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } + } + + /** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; + } + + /** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ + function setCacheHas(value) { + return this.__data__.has(value); + } + + // Add methods to `SetCache`. + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; + } + + /** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ + function stackClear() { + this.__data__ = new ListCache; + this.size = 0; + } + + /** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; + } + + /** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function stackGet(key) { + return this.__data__.get(key); + } + + /** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function stackHas(key) { + return this.__data__.has(key); + } + + /** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; + } + + // Add methods to `Stack`. + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; + } + + /** + * A specialized version of `_.sample` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @returns {*} Returns the random element. + */ + function arraySample(array) { + var length = array.length; + return length ? array[baseRandom(0, length - 1)] : undefined; + } + + /** + * A specialized version of `_.sampleSize` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function arraySampleSize(array, n) { + return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); + } + + /** + * A specialized version of `_.shuffle` for arrays. + * + * @private + * @param {Array} array The array to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function arrayShuffle(array) { + return shuffleSelf(copyArray(array)); + } + + /** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + + /** + * Aggregates elements of `collection` on `accumulator` with keys transformed + * by `iteratee` and values set by `setter`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function baseAggregator(collection, setter, iteratee, accumulator) { + baseEach(collection, function(value, key, collection) { + setter(accumulator, value, iteratee(value), collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); + } + + /** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); + } + + /** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } + } + + /** + * The base implementation of `_.at` without support for individual paths. + * + * @private + * @param {Object} object The object to iterate over. + * @param {string[]} paths The property paths to pick. + * @returns {Array} Returns the picked elements. + */ + function baseAt(object, paths) { + var index = -1, + length = paths.length, + result = Array(length), + skip = object == null; + + while (++index < length) { + result[index] = skip ? undefined : get(object, paths[index]); + } + return result; + } + + /** + * The base implementation of `_.clamp` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + */ + function baseClamp(number, lower, upper) { + if (number === number) { + if (upper !== undefined) { + number = number <= upper ? number : upper; + } + if (lower !== undefined) { + number = number >= lower ? number : lower; + } + } + return number; + } + + /** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + } + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; + } + + /** + * The base implementation of `_.conforms` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + */ + function baseConforms(source) { + var props = keys(source); + return function(object) { + return baseConformsTo(object, source, props); + }; + } + + /** + * The base implementation of `_.conformsTo` which accepts `props` to check. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + */ + function baseConformsTo(object, source, props) { + var length = props.length; + if (object == null) { + return !length; + } + object = Object(object); + while (length--) { + var key = props[length], + predicate = source[key], + value = object[key]; + + if ((value === undefined && !(key in object)) || !predicate(value)) { + return false; + } + } + return true; + } + + /** + * The base implementation of `_.delay` and `_.defer` which accepts `args` + * to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Array} args The arguments to provide to `func`. + * @returns {number|Object} Returns the timer id or timeout object. + */ + function baseDelay(func, wait, args) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return setTimeout(function() { func.apply(undefined, args); }, wait); + } + + /** + * The base implementation of methods like `_.difference` without support + * for excluding multiple arrays or iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + */ + function baseDifference(array, values, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + isCommon = true, + length = array.length, + result = [], + valuesLength = values.length; + + if (!length) { + return result; + } + if (iteratee) { + values = arrayMap(values, baseUnary(iteratee)); + } + if (comparator) { + includes = arrayIncludesWith; + isCommon = false; + } + else if (values.length >= LARGE_ARRAY_SIZE) { + includes = cacheHas; + isCommon = false; + values = new SetCache(values); + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee == null ? value : iteratee(value); + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === computed) { + continue outer; + } + } + result.push(value); + } + else if (!includes(values, computed, comparator)) { + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEach = createBaseEach(baseForOwn); + + /** + * The base implementation of `_.forEachRight` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEachRight = createBaseEach(baseForOwnRight, true); + + /** + * The base implementation of `_.every` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ + function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; + } + + /** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ + function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined + ? (current === current && !isSymbol(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; + } + + /** + * The base implementation of `_.fill` without an iteratee call guard. + * + * @private + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ + function baseFill(array, value, start, end) { + var length = array.length; + + start = toInteger(start); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined || end > length) ? length : toInteger(end); + if (end < 0) { + end += length; + } + end = start > end ? 0 : toLength(end); + while (start < end) { + array[start++] = value; + } + return array; + } + + /** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; + } + + /** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ + function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; + } + + /** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseFor = createBaseFor(); + + /** + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseForRight = createBaseFor(true); + + /** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); + } + + /** + * The base implementation of `_.forOwnRight` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwnRight(object, iteratee) { + return object && baseForRight(object, iteratee, keys); + } + + /** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from `props`. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the function names. + */ + function baseFunctions(object, props) { + return arrayFilter(props, function(key) { + return isFunction(object[key]); + }); + } + + /** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ + function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; + } + + /** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } + + /** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); + } + + /** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ + function baseGt(value, other) { + return value > other; + } + + /** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHas(object, key) { + return object != null && hasOwnProperty.call(object, key); + } + + /** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHasIn(object, key) { + return object != null && key in Object(object); + } + + /** + * The base implementation of `_.inRange` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to check. + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + */ + function baseInRange(number, start, end) { + return number >= nativeMin(start, end) && number < nativeMax(start, end); + } + + /** + * The base implementation of methods like `_.intersection`, without support + * for iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of shared values. + */ + function baseIntersection(arrays, iteratee, comparator) { + var includes = comparator ? arrayIncludesWith : arrayIncludes, + length = arrays[0].length, + othLength = arrays.length, + othIndex = othLength, + caches = Array(othLength), + maxLength = Infinity, + result = []; + + while (othIndex--) { + var array = arrays[othIndex]; + if (othIndex && iteratee) { + array = arrayMap(array, baseUnary(iteratee)); + } + maxLength = nativeMin(array.length, maxLength); + caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) + ? new SetCache(othIndex && array) + : undefined; + } + array = arrays[0]; + + var index = -1, + seen = caches[0]; + + outer: + while (++index < length && result.length < maxLength) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (!(seen + ? cacheHas(seen, computed) + : includes(result, computed, comparator) + )) { + othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if (!(cache + ? cacheHas(cache, computed) + : includes(arrays[othIndex], computed, comparator)) + ) { + continue outer; + } + } + if (seen) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.invert` and `_.invertBy` which inverts + * `object` with values transformed by `iteratee` and set by `setter`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform values. + * @param {Object} accumulator The initial inverted object. + * @returns {Function} Returns `accumulator`. + */ + function baseInverter(object, setter, iteratee, accumulator) { + baseForOwn(object, function(value, key, object) { + setter(accumulator, iteratee(value), key, object); + }); + return accumulator; + } + + /** + * The base implementation of `_.invoke` without support for individual + * method arguments. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {Array} args The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + */ + function baseInvoke(object, path, args) { + path = castPath(path, object); + object = parent(object, path); + var func = object == null ? object : object[toKey(last(path))]; + return func == null ? undefined : apply(func, object, args); + } + + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } + + /** + * The base implementation of `_.isArrayBuffer` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + */ + function baseIsArrayBuffer(value) { + return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; + } + + /** + * The base implementation of `_.isDate` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + */ + function baseIsDate(value) { + return isObjectLike(value) && baseGetTag(value) == dateTag; + } + + /** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } + + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); + } + + /** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ + function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; + } + + /** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; + } + + /** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + /** + * The base implementation of `_.isRegExp` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + */ + function baseIsRegExp(value) { + return isObjectLike(value) && baseGetTag(value) == regexpTag; + } + + /** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ + function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; + } + + /** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ + function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + + /** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ + function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); + } + + /** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } + + /** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; + } + + /** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ + function baseLt(value, other) { + return value < other; + } + + /** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; + } + + /** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; + } + + /** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; + } + + /** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); + } + + /** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); + } + + /** + * The base implementation of `_.nth` which doesn't coerce arguments. + * + * @private + * @param {Array} array The array to query. + * @param {number} n The index of the element to return. + * @returns {*} Returns the nth element of `array`. + */ + function baseNth(array, n) { + var length = array.length; + if (!length) { + return; + } + n += n < 0 ? length : 0; + return isIndex(n, length) ? array[n] : undefined; + } + + /** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ + function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = arrayMap(iteratees, function(iteratee) { + if (isArray(iteratee)) { + return function(value) { + return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); + } + } + return iteratee; + }); + } else { + iteratees = [identity]; + } + + var index = -1; + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); + } + + /** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ + function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); + } + + /** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ + function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; + } + + /** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; + } + + /** + * The base implementation of `_.pullAllBy` without support for iteratee + * shorthands. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + */ + function basePullAll(array, values, iteratee, comparator) { + var indexOf = comparator ? baseIndexOfWith : baseIndexOf, + index = -1, + length = values.length, + seen = array; + + if (array === values) { + values = copyArray(values); + } + if (iteratee) { + seen = arrayMap(array, baseUnary(iteratee)); + } + while (++index < length) { + var fromIndex = 0, + value = values[index], + computed = iteratee ? iteratee(value) : value; + + while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { + if (seen !== array) { + splice.call(seen, fromIndex, 1); + } + splice.call(array, fromIndex, 1); + } + } + return array; + } + + /** + * The base implementation of `_.pullAt` without support for individual + * indexes or capturing the removed elements. + * + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns `array`. + */ + function basePullAt(array, indexes) { + var length = array ? indexes.length : 0, + lastIndex = length - 1; + + while (length--) { + var index = indexes[length]; + if (length == lastIndex || index !== previous) { + var previous = index; + if (isIndex(index)) { + splice.call(array, index, 1); + } else { + baseUnset(array, index); + } + } + } + return array; + } + + /** + * The base implementation of `_.random` without support for returning + * floating-point numbers. + * + * @private + * @param {number} lower The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the random number. + */ + function baseRandom(lower, upper) { + return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); + } + + /** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ + function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; + } + + /** + * The base implementation of `_.repeat` which doesn't coerce arguments. + * + * @private + * @param {string} string The string to repeat. + * @param {number} n The number of times to repeat the string. + * @returns {string} Returns the repeated string. + */ + function baseRepeat(string, n) { + var result = ''; + if (!string || n < 1 || n > MAX_SAFE_INTEGER) { + return result; + } + // Leverage the exponentiation by squaring algorithm for a faster repeat. + // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. + do { + if (n % 2) { + result += string; + } + n = nativeFloor(n / 2); + if (n) { + string += string; + } + } while (n); + + return result; + } + + /** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); + } + + /** + * The base implementation of `_.sample`. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + */ + function baseSample(collection) { + return arraySample(values(collection)); + } + + /** + * The base implementation of `_.sampleSize` without param guards. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function baseSampleSize(collection, n) { + var array = values(collection); + return shuffleSelf(array, baseClamp(n, 0, array.length)); + } + + /** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return object; + } + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; + } + + /** + * The base implementation of `setData` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; + }; + + /** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); + }; + + /** + * The base implementation of `_.shuffle`. + * + * @private + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function baseShuffle(collection) { + return shuffleSelf(values(collection)); + } + + /** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + /** + * The base implementation of `_.some` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; + } + + /** + * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which + * performs a binary search of `array` to determine the index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndex(array, value, retHighest) { + var low = 0, + high = array == null ? low : array.length; + + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if (computed !== null && !isSymbol(computed) && + (retHighest ? (computed <= value) : (computed < value))) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return baseSortedIndexBy(array, value, identity, retHighest); + } + + /** + * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` + * which invokes `iteratee` for `value` and each element of `array` to compute + * their sort ranking. The iteratee is invoked with one argument; (value). + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} iteratee The iteratee invoked per element. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndexBy(array, value, iteratee, retHighest) { + var low = 0, + high = array == null ? 0 : array.length; + if (high === 0) { + return 0; + } + + value = iteratee(value); + var valIsNaN = value !== value, + valIsNull = value === null, + valIsSymbol = isSymbol(value), + valIsUndefined = value === undefined; + + while (low < high) { + var mid = nativeFloor((low + high) / 2), + computed = iteratee(array[mid]), + othIsDefined = computed !== undefined, + othIsNull = computed === null, + othIsReflexive = computed === computed, + othIsSymbol = isSymbol(computed); + + if (valIsNaN) { + var setLow = retHighest || othIsReflexive; + } else if (valIsUndefined) { + setLow = othIsReflexive && (retHighest || othIsDefined); + } else if (valIsNull) { + setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); + } else if (valIsSymbol) { + setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); + } else if (othIsNull || othIsSymbol) { + setLow = false; + } else { + setLow = retHighest ? (computed <= value) : (computed < value); + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); + } + + /** + * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseSortedUniq(array, iteratee) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + if (!index || !eq(computed, seen)) { + var seen = computed; + result[resIndex++] = value === 0 ? 0 : value; + } + } + return result; + } + + /** + * The base implementation of `_.toNumber` which doesn't ensure correct + * conversions of binary, hexadecimal, or octal string values. + * + * @private + * @param {*} value The value to process. + * @returns {number} Returns the number. + */ + function baseToNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + return +value; + } + + /** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.unset`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The property path to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + */ + function baseUnset(object, path) { + path = castPath(path, object); + object = parent(object, path); + return object == null || delete object[toKey(last(path))]; + } + + /** + * The base implementation of `_.update`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to update. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseUpdate(object, path, updater, customizer) { + return baseSet(object, path, updater(baseGet(object, path)), customizer); + } + + /** + * The base implementation of methods like `_.dropWhile` and `_.takeWhile` + * without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to query. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [isDrop] Specify dropping elements instead of taking them. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the slice of `array`. + */ + function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length) && + predicate(array[index], index, array)) {} + + return isDrop + ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) + : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); + } + + /** + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. + * + * @private + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to perform to resolve the unwrapped value. + * @returns {*} Returns the resolved value. + */ + function baseWrapperValue(value, actions) { + var result = value; + if (result instanceof LazyWrapper) { + result = result.value(); + } + return arrayReduce(actions, function(result, action) { + return action.func.apply(action.thisArg, arrayPush([result], action.args)); + }, result); + } + + /** + * The base implementation of methods like `_.xor`, without support for + * iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of values. + */ + function baseXor(arrays, iteratee, comparator) { + var length = arrays.length; + if (length < 2) { + return length ? baseUniq(arrays[0]) : []; + } + var index = -1, + result = Array(length); + + while (++index < length) { + var array = arrays[index], + othIndex = -1; + + while (++othIndex < length) { + if (othIndex != index) { + result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); + } + } + } + return baseUniq(baseFlatten(result, 1), iteratee, comparator); + } + + /** + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. + */ + function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); + } + return result; + } + + /** + * Casts `value` to an empty array if it's not an array like object. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array|Object} Returns the cast array-like object. + */ + function castArrayLikeObject(value) { + return isArrayLikeObject(value) ? value : []; + } + + /** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ + function castFunction(value) { + return typeof value == 'function' ? value : identity; + } + + /** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ + function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); + } + + /** + * A `baseRest` alias which can be replaced with `identity` by module + * replacement plugins. + * + * @private + * @type {Function} + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + var castRest = baseRest; + + /** + * Casts `array` to a slice if it's needed. + * + * @private + * @param {Array} array The array to inspect. + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. + */ + function castSlice(array, start, end) { + var length = array.length; + end = end === undefined ? length : end; + return (!start && end >= length) ? array : baseSlice(array, start, end); + } + + /** + * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). + * + * @private + * @param {number|Object} id The timer id or timeout object of the timer to clear. + */ + var clearTimeout = ctxClearTimeout || function(id) { + return root.clearTimeout(id); + }; + + /** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; + } + + /** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; + } + + /** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } + + /** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ + function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; + } + + /** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ + function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; + } + + /** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + + /** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ + function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; + } + + /** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ + function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; + } + + /** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgs(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersLength = holders.length, + leftIndex = -1, + leftLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(leftLength + rangeLength), + isUncurried = !isCurried; + + while (++leftIndex < leftLength) { + result[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[holders[argsIndex]] = args[argsIndex]; + } + } + while (rangeLength--) { + result[leftIndex++] = args[argsIndex++]; + } + return result; + } + + /** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to append to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgsRight(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersIndex = -1, + holdersLength = holders.length, + rightIndex = -1, + rightLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(rangeLength + rightLength), + isUncurried = !isCurried; + + while (++argsIndex < rangeLength) { + result[argsIndex] = args[argsIndex]; + } + var offset = argsIndex; + while (++rightIndex < rightLength) { + result[offset + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[offset + holders[holdersIndex]] = args[argsIndex++]; + } + } + return result; + } + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + + /** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; + } + + /** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } + + /** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); + } + + /** + * Creates a function like `_.groupBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} [initializer] The accumulator object initializer. + * @returns {Function} Returns the new aggregator function. + */ + function createAggregator(setter, initializer) { + return function(collection, iteratee) { + var func = isArray(collection) ? arrayAggregator : baseAggregator, + accumulator = initializer ? initializer() : {}; + + return func(collection, setter, getIteratee(iteratee, 2), accumulator); + }; + } + + /** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); + } + + /** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } + + /** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + + /** + * Creates a function that wraps `func` to invoke it with the optional `this` + * binding of `thisArg`. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createBind(func, bitmask, thisArg) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(isBind ? thisArg : this, arguments); + } + return wrapper; + } + + /** + * Creates a function like `_.lowerFirst`. + * + * @private + * @param {string} methodName The name of the `String` case method to use. + * @returns {Function} Returns the new case function. + */ + function createCaseFirst(methodName) { + return function(string) { + string = toString(string); + + var strSymbols = hasUnicode(string) + ? stringToArray(string) + : undefined; + + var chr = strSymbols + ? strSymbols[0] + : string.charAt(0); + + var trailing = strSymbols + ? castSlice(strSymbols, 1).join('') + : string.slice(1); + + return chr[methodName]() + trailing; + }; + } + + /** + * Creates a function like `_.camelCase`. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ + function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); + }; + } + + /** + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * + * @private + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. + */ + function createCtor(Ctor) { + return function() { + // Use a `switch` statement to work with class constructors. See + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // for more details. + var args = arguments; + switch (args.length) { + case 0: return new Ctor; + case 1: return new Ctor(args[0]); + case 2: return new Ctor(args[0], args[1]); + case 3: return new Ctor(args[0], args[1], args[2]); + case 4: return new Ctor(args[0], args[1], args[2], args[3]); + case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); + case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, args); + + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; + } + + /** + * Creates a function that wraps `func` to enable currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {number} arity The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createCurry(func, bitmask, arity) { + var Ctor = createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length, + placeholder = getHolder(wrapper); + + while (index--) { + args[index] = arguments[index]; + } + var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) + ? [] + : replaceHolders(args, placeholder); + + length -= holders.length; + if (length < arity) { + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, undefined, + args, holders, undefined, undefined, arity - length); + } + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return apply(fn, this, args); + } + return wrapper; + } + + /** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. + */ + function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike(collection)) { + var iteratee = getIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; + } + + /** + * Creates a `_.flow` or `_.flowRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new flow function. + */ + function createFlow(fromRight) { + return flatRest(function(funcs) { + var length = funcs.length, + index = length, + prereq = LodashWrapper.prototype.thru; + + if (fromRight) { + funcs.reverse(); + } + while (index--) { + var func = funcs[index]; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (prereq && !wrapper && getFuncName(func) == 'wrapper') { + var wrapper = new LodashWrapper([], true); + } + } + index = wrapper ? index : length; + while (++index < length) { + func = funcs[index]; + + var funcName = getFuncName(func), + data = funcName == 'wrapper' ? getData(func) : undefined; + + if (data && isLaziable(data[0]) && + data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && + !data[4].length && data[9] == 1 + ) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = (func.length == 1 && isLaziable(func)) + ? wrapper[funcName]() + : wrapper.thru(func); + } + } + return function() { + var args = arguments, + value = args[0]; + + if (wrapper && args.length == 1 && isArray(value)) { + return wrapper.plant(value).value(); + } + var index = 0, + result = length ? funcs[index].apply(this, args) : value; + + while (++index < length) { + result = funcs[index].call(this, result); + } + return result; + }; + }); + } + + /** + * Creates a function that wraps `func` to invoke it with optional `this` + * binding of `thisArg`, partial application, and currying. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [partialsRight] The arguments to append to those provided + * to the new function. + * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { + var isAry = bitmask & WRAP_ARY_FLAG, + isBind = bitmask & WRAP_BIND_FLAG, + isBindKey = bitmask & WRAP_BIND_KEY_FLAG, + isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), + isFlip = bitmask & WRAP_FLIP_FLAG, + Ctor = isBindKey ? undefined : createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length; + + while (index--) { + args[index] = arguments[index]; + } + if (isCurried) { + var placeholder = getHolder(wrapper), + holdersCount = countHolders(args, placeholder); + } + if (partials) { + args = composeArgs(args, partials, holders, isCurried); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight, isCurried); + } + length -= holdersCount; + if (isCurried && length < arity) { + var newHolders = replaceHolders(args, placeholder); + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, thisArg, + args, newHolders, argPos, ary, arity - length + ); + } + var thisBinding = isBind ? thisArg : this, + fn = isBindKey ? thisBinding[func] : func; + + length = args.length; + if (argPos) { + args = reorder(args, argPos); + } else if (isFlip && length > 1) { + args.reverse(); + } + if (isAry && ary < length) { + args.length = ary; + } + if (this && this !== root && this instanceof wrapper) { + fn = Ctor || createCtor(fn); + } + return fn.apply(thisBinding, args); + } + return wrapper; + } + + /** + * Creates a function like `_.invertBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} toIteratee The function to resolve iteratees. + * @returns {Function} Returns the new inverter function. + */ + function createInverter(setter, toIteratee) { + return function(object, iteratee) { + return baseInverter(object, setter, toIteratee(iteratee), {}); + }; + } + + /** + * Creates a function that performs a mathematical operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @param {number} [defaultValue] The value used for `undefined` arguments. + * @returns {Function} Returns the new mathematical operation function. + */ + function createMathOperation(operator, defaultValue) { + return function(value, other) { + var result; + if (value === undefined && other === undefined) { + return defaultValue; + } + if (value !== undefined) { + result = value; + } + if (other !== undefined) { + if (result === undefined) { + return other; + } + if (typeof value == 'string' || typeof other == 'string') { + value = baseToString(value); + other = baseToString(other); + } else { + value = baseToNumber(value); + other = baseToNumber(other); + } + result = operator(value, other); + } + return result; + }; + } + + /** + * Creates a function like `_.over`. + * + * @private + * @param {Function} arrayFunc The function to iterate over iteratees. + * @returns {Function} Returns the new over function. + */ + function createOver(arrayFunc) { + return flatRest(function(iteratees) { + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + return baseRest(function(args) { + var thisArg = this; + return arrayFunc(iteratees, function(iteratee) { + return apply(iteratee, thisArg, args); + }); + }); + }); + } + + /** + * Creates the padding for `string` based on `length`. The `chars` string + * is truncated if the number of characters exceeds `length`. + * + * @private + * @param {number} length The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padding for `string`. + */ + function createPadding(length, chars) { + chars = chars === undefined ? ' ' : baseToString(chars); + + var charsLength = chars.length; + if (charsLength < 2) { + return charsLength ? baseRepeat(chars, length) : chars; + } + var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); + return hasUnicode(chars) + ? castSlice(stringToArray(result), 0, length).join('') + : result.slice(0, length); + } + + /** + * Creates a function that wraps `func` to invoke it with the `this` binding + * of `thisArg` and `partials` prepended to the arguments it receives. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to + * the new function. + * @returns {Function} Returns the new wrapped function. + */ + function createPartial(func, bitmask, thisArg, partials) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(leftLength + argsLength), + fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + return apply(fn, isBind ? thisArg : this, args); + } + return wrapper; + } + + /** + * Creates a `_.range` or `_.rangeRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ + function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { + end = step = undefined; + } + // Ensure the sign of `-0` is preserved. + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); + return baseRange(start, end, step, fromRight); + }; + } + + /** + * Creates a function that performs a relational operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @returns {Function} Returns the new relational operation function. + */ + function createRelationalOperation(operator) { + return function(value, other) { + if (!(typeof value == 'string' && typeof other == 'string')) { + value = toNumber(value); + other = toNumber(other); + } + return operator(value, other); + }; + } + + /** + * Creates a function that wraps `func` to continue currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {Function} wrapFunc The function to create the `func` wrapper. + * @param {*} placeholder The placeholder value. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { + var isCurry = bitmask & WRAP_CURRY_FLAG, + newHolders = isCurry ? holders : undefined, + newHoldersRight = isCurry ? undefined : holders, + newPartials = isCurry ? partials : undefined, + newPartialsRight = isCurry ? undefined : partials; + + bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); + bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); + + if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { + bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); + } + var newData = [ + func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, + newHoldersRight, argPos, ary, arity + ]; + + var result = wrapFunc.apply(undefined, newData); + if (isLaziable(func)) { + setData(result, newData); + } + result.placeholder = placeholder; + return setWrapToString(result, func, bitmask); + } + + /** + * Creates a function like `_.round`. + * + * @private + * @param {string} methodName The name of the `Math` method to use when rounding. + * @returns {Function} Returns the new round function. + */ + function createRound(methodName) { + var func = Math[methodName]; + return function(number, precision) { + number = toNumber(number); + precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); + if (precision && nativeIsFinite(number)) { + // Shift with exponential notation to avoid floating-point issues. + // See [MDN](https://mdn.io/round#Examples) for more details. + var pair = (toString(number) + 'e').split('e'), + value = func(pair[0] + 'e' + (+pair[1] + precision)); + + pair = (toString(value) + 'e').split('e'); + return +(pair[0] + 'e' + (+pair[1] - precision)); + } + return func(number); + }; + } + + /** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ + var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); + }; + + /** + * Creates a `_.toPairs` or `_.toPairsIn` function. + * + * @private + * @param {Function} keysFunc The function to get the keys of a given object. + * @returns {Function} Returns the new pairs function. + */ + function createToPairs(keysFunc) { + return function(object) { + var tag = getTag(object); + if (tag == mapTag) { + return mapToArray(object); + } + if (tag == setTag) { + return setToPairs(object); + } + return baseToPairs(object, keysFunc(object)); + }; + } + + /** + * Creates a function that either curries or invokes `func` with optional + * `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` or `_.curryRight` of a bound function + * 8 - `_.curry` + * 16 - `_.curryRight` + * 32 - `_.partial` + * 64 - `_.partialRight` + * 128 - `_.rearg` + * 256 - `_.ary` + * 512 - `_.flip` + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to be partially applied. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { + var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; + if (!isBindKey && typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); + partials = holders = undefined; + } + ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); + arity = arity === undefined ? arity : toInteger(arity); + length -= holders ? holders.length : 0; + + if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, + holdersRight = holders; + + partials = holders = undefined; + } + var data = isBindKey ? undefined : getData(func); + + var newData = [ + func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, + argPos, ary, arity + ]; + + if (data) { + mergeData(newData, data); + } + func = newData[0]; + bitmask = newData[1]; + thisArg = newData[2]; + partials = newData[3]; + holders = newData[4]; + arity = newData[9] = newData[9] === undefined + ? (isBindKey ? 0 : func.length) + : nativeMax(newData[9] - length, 0); + + if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { + bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); + } + if (!bitmask || bitmask == WRAP_BIND_FLAG) { + var result = createBind(func, bitmask, thisArg); + } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { + result = createCurry(func, bitmask, arity); + } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { + result = createPartial(func, bitmask, thisArg, partials); + } else { + result = createHybrid.apply(undefined, newData); + } + var setter = data ? baseSetData : setData; + return setWrapToString(setter(result, newData), func, bitmask); + } + + /** + * Used by `_.defaults` to customize its `_.assignIn` use to assign properties + * of source objects to the destination object for all destination properties + * that resolve to `undefined`. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to assign. + * @param {Object} object The parent object of `objValue`. + * @returns {*} Returns the value to assign. + */ + function customDefaultsAssignIn(objValue, srcValue, key, object) { + if (objValue === undefined || + (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { + return srcValue; + } + return objValue; + } + + /** + * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source + * objects into destination objects that are passed thru. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to merge. + * @param {Object} object The parent object of `objValue`. + * @param {Object} source The parent object of `srcValue`. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + * @returns {*} Returns the value to assign. + */ + function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { + if (isObject(objValue) && isObject(srcValue)) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, objValue); + baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); + stack['delete'](srcValue); + } + return objValue; + } + + /** + * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain + * objects. + * + * @private + * @param {*} value The value to inspect. + * @param {string} key The key of the property to inspect. + * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. + */ + function customOmitClone(value) { + return isPlainObject(value) ? undefined : value; + } + + /** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; + } + + /** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + function flatRest(func) { + return setToString(overRest(func, undefined, flatten), func + ''); + } + + /** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } + + /** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); + } + + /** + * Gets metadata for `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {*} Returns the metadata for `func`. + */ + var getData = !metaMap ? noop : function(func) { + return metaMap.get(func); + }; + + /** + * Gets the name of `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {string} Returns the function name. + */ + function getFuncName(func) { + var result = (func.name + ''), + array = realNames[result], + length = hasOwnProperty.call(realNames, result) ? array.length : 0; + + while (length--) { + var data = array[length], + otherFunc = data.func; + if (otherFunc == null || otherFunc == func) { + return data.name; + } + } + return result; + } + + /** + * Gets the argument placeholder value for `func`. + * + * @private + * @param {Function} func The function to inspect. + * @returns {*} Returns the placeholder value. + */ + function getHolder(func) { + var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; + return object.placeholder; + } + + /** + * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, + * this function returns the custom method, otherwise it returns `baseIteratee`. + * If arguments are provided, the chosen function is invoked with them and + * its result is returned. + * + * @private + * @param {*} [value] The value to convert to an iteratee. + * @param {number} [arity] The arity of the created iteratee. + * @returns {Function} Returns the chosen function or its result. + */ + function getIteratee() { + var result = lodash.iteratee || iteratee; + result = result === iteratee ? baseIteratee : result; + return arguments.length ? result(arguments[0], arguments[1]) : result; + } + + /** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; + } + + /** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ + function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; + } + + /** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; + } + + /** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); + }; + + /** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; + }; + + /** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + var getTag = baseGetTag; + + // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. + if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; + } + + /** + * Gets the view, applying any `transforms` to the `start` and `end` positions. + * + * @private + * @param {number} start The start of the view. + * @param {number} end The end of the view. + * @param {Array} transforms The transformations to apply to the view. + * @returns {Object} Returns an object containing the `start` and `end` + * positions of the view. + */ + function getView(start, end, transforms) { + var index = -1, + length = transforms.length; + + while (++index < length) { + var data = transforms[index], + size = data.size; + + switch (data.type) { + case 'drop': start += size; break; + case 'dropRight': end -= size; break; + case 'take': end = nativeMin(end, start + size); break; + case 'takeRight': start = nativeMax(start, end - size); break; + } + } + return { 'start': start, 'end': end }; + } + + /** + * Extracts wrapper details from the `source` body comment. + * + * @private + * @param {string} source The source to inspect. + * @returns {Array} Returns the wrapper details. + */ + function getWrapDetails(source) { + var match = source.match(reWrapDetails); + return match ? match[1].split(reSplitDetails) : []; + } + + /** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ + function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); + } + + /** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ + function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } + + /** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; + } + + /** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); + } + } + + /** + * Inserts wrapper `details` in a comment at the top of the `source` body. + * + * @private + * @param {string} source The source to modify. + * @returns {Array} details The details to insert. + * @returns {string} Returns the modified source. + */ + function insertWrapDetails(source, details) { + var length = details.length; + if (!length) { + return source; + } + var lastIndex = length - 1; + details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; + details = details.join(length > 2 ? ', ' : ' '); + return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); + } + + /** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ + function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); + } + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); + } + + /** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; + } + + /** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ + function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); + } + + /** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ + function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); + } + + /** + * Checks if `func` has a lazy counterpart. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` has a lazy counterpart, + * else `false`. + */ + function isLaziable(func) { + var funcName = getFuncName(func), + other = lodash[funcName]; + + if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { + return false; + } + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; + } + + /** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ + function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); + } + + /** + * Checks if `func` is capable of being masked. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `func` is maskable, else `false`. + */ + var isMaskable = coreJsData ? isFunction : stubFalse; + + /** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; + } + + /** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ + function isStrictComparable(value) { + return value === value && !isObject(value); + } + + /** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; + } + + /** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ + function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; + } + + /** + * Merges the function metadata of `source` into `data`. + * + * Merging metadata reduces the number of wrappers used to invoke a function. + * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` + * may be applied regardless of execution order. Methods like `_.ary` and + * `_.rearg` modify function arguments, making the order in which they are + * executed important, preventing the merging of metadata. However, we make + * an exception for a safe combined case where curried functions have `_.ary` + * and or `_.rearg` applied. + * + * @private + * @param {Array} data The destination metadata. + * @param {Array} source The source metadata. + * @returns {Array} Returns `data`. + */ + function mergeData(data, source) { + var bitmask = data[1], + srcBitmask = source[1], + newBitmask = bitmask | srcBitmask, + isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); + + var isCombo = + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || + ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); + + // Exit early if metadata can't be merged. + if (!(isCommon || isCombo)) { + return data; + } + // Use source `thisArg` if available. + if (srcBitmask & WRAP_BIND_FLAG) { + data[2] = source[2]; + // Set when currying a bound function. + newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; + } + // Compose partial arguments. + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : value; + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; + } + // Compose partial right arguments. + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; + } + // Use source `argPos` if available. + value = source[7]; + if (value) { + data[7] = value; + } + // Use source `ary` if it's smaller. + if (srcBitmask & WRAP_ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + // Use source `arity` if one is not provided. + if (data[9] == null) { + data[9] = source[9]; + } + // Use source `func` and merge bitmasks. + data[0] = source[0]; + data[1] = newBitmask; + + return data; + } + + /** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } + + /** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString(value) { + return nativeObjectToString.call(value); + } + + /** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ + function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; + } + + /** + * Gets the parent value at `path` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} path The path to get the parent value of. + * @returns {*} Returns the parent value. + */ + function parent(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); + } + + /** + * Reorder `array` according to the specified indexes where the element at + * the first index is assigned as the first element, the element at + * the second index is assigned as the second element, and so on. + * + * @private + * @param {Array} array The array to reorder. + * @param {Array} indexes The arranged array indexes. + * @returns {Array} Returns `array`. + */ + function reorder(array, indexes) { + var arrLength = array.length, + length = nativeMin(indexes.length, arrLength), + oldArray = copyArray(array); + + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; + } + return array; + } + + /** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } + + if (key == '__proto__') { + return; + } + + return object[key]; + } + + /** + * Sets metadata for `func`. + * + * **Note:** If this function becomes hot, i.e. is invoked a lot in a short + * period of time, it will trip its breaker and transition to an identity + * function to avoid garbage collection pauses in V8. See + * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) + * for more details. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var setData = shortOut(baseSetData); + + /** + * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @returns {number|Object} Returns the timer id or timeout object. + */ + var setTimeout = ctxSetTimeout || function(func, wait) { + return root.setTimeout(func, wait); + }; + + /** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var setToString = shortOut(baseSetToString); + + /** + * Sets the `toString` method of `wrapper` to mimic the source of `reference` + * with wrapper details in a comment at the top of the source body. + * + * @private + * @param {Function} wrapper The function to modify. + * @param {Function} reference The reference function. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Function} Returns `wrapper`. + */ + function setWrapToString(wrapper, reference, bitmask) { + var source = (reference + ''); + return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); + } + + /** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ + function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; + } + + /** + * A specialized version of `_.shuffle` which mutates and sets the size of `array`. + * + * @private + * @param {Array} array The array to shuffle. + * @param {number} [size=array.length] The size of `array`. + * @returns {Array} Returns `array`. + */ + function shuffleSelf(array, size) { + var index = -1, + length = array.length, + lastIndex = length - 1; + + size = size === undefined ? length : size; + while (++index < size) { + var rand = baseRandom(index, lastIndex), + value = array[rand]; + + array[rand] = array[index]; + array[index] = value; + } + array.length = size; + return array; + } + + /** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ + var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; + }); + + /** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; + } + + /** + * Updates wrapper `details` based on `bitmask` flags. + * + * @private + * @returns {Array} details The details to modify. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Array} Returns `details`. + */ + function updateWrapDetails(details, bitmask) { + arrayEach(wrapFlags, function(pair) { + var value = '_.' + pair[0]; + if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { + details.push(value); + } + }); + return details.sort(); + } + + /** + * Creates a clone of `wrapper`. + * + * @private + * @param {Object} wrapper The wrapper to clone. + * @returns {Object} Returns the cloned wrapper. + */ + function wrapperClone(wrapper) { + if (wrapper instanceof LazyWrapper) { + return wrapper.clone(); + } + var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); + result.__actions__ = copyArray(wrapper.__actions__); + result.__index__ = wrapper.__index__; + result.__values__ = wrapper.__values__; + return result; + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of elements split into groups the length of `size`. + * If `array` can't be split evenly, the final chunk will be the remaining + * elements. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the new array of chunks. + * @example + * + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] + */ + function chunk(array, size, guard) { + if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { + size = 1; + } else { + size = nativeMax(toInteger(size), 0); + } + var length = array == null ? 0 : array.length; + if (!length || size < 1) { + return []; + } + var index = 0, + resIndex = 0, + result = Array(nativeCeil(length / size)); + + while (index < length) { + result[resIndex++] = baseSlice(array, index, (index += size)); + } + return result; + } + + /** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ + function compact(array) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * Creates a new array concatenating `array` with any additional arrays + * and/or values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to concatenate. + * @param {...*} [values] The values to concatenate. + * @returns {Array} Returns the new concatenated array. + * @example + * + * var array = [1]; + * var other = _.concat(array, 2, [3], [[4]]); + * + * console.log(other); + * // => [1, 2, 3, [4]] + * + * console.log(array); + * // => [1] + */ + function concat() { + var length = arguments.length; + if (!length) { + return []; + } + var args = Array(length - 1), + array = arguments[0], + index = length; + + while (index--) { + args[index - 1] = arguments[index]; + } + return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); + } + + /** + * Creates an array of `array` values not included in the other given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * **Note:** Unlike `_.pullAll`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.without, _.xor + * @example + * + * _.difference([2, 1], [2, 3]); + * // => [1] + */ + var difference = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) + : []; + }); + + /** + * This method is like `_.difference` except that it accepts `iteratee` which + * is invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * **Note:** Unlike `_.pullAllBy`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2] + * + * // The `_.property` iteratee shorthand. + * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ + var differenceBy = baseRest(function(array, values) { + var iteratee = last(values); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) + : []; + }); + + /** + * This method is like `_.difference` except that it accepts `comparator` + * which is invoked to compare elements of `array` to `values`. The order and + * references of result values are determined by the first array. The comparator + * is invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.pullAllWith`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * + * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); + * // => [{ 'x': 2, 'y': 1 }] + */ + var differenceWith = baseRest(function(array, values) { + var comparator = last(values); + if (isArrayLikeObject(comparator)) { + comparator = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) + : []; + }); + + /** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function drop(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, n < 0 ? 0 : n, length); + } + + /** + * Creates a slice of `array` with `n` elements dropped from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function dropRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.dropRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney'] + * + * // The `_.matches` iteratee shorthand. + * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropRightWhile(users, ['active', false]); + * // => objects for ['barney'] + * + * // The `_.property` iteratee shorthand. + * _.dropRightWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ + function dropRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true, true) + : []; + } + + /** + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.dropWhile(users, function(o) { return !o.active; }); + * // => objects for ['pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.dropWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropWhile(users, ['active', false]); + * // => objects for ['pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.dropWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ + function dropWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true) + : []; + } + + /** + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. + * + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.fill(array, 'a'); + * console.log(array); + * // => ['a', 'a', 'a'] + * + * _.fill(Array(3), 2); + * // => [2, 2, 2] + * + * _.fill([4, 6, 8, 10], '*', 1, 3); + * // => [4, '*', '*', 10] + */ + function fill(array, value, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); + } + + /** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ + function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, getIteratee(predicate, 3), index); + } + + /** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); + * // => 2 + * + * // The `_.matches` iteratee shorthand. + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastIndex(users, ['active', false]); + * // => 2 + * + * // The `_.property` iteratee shorthand. + * _.findLastIndex(users, 'active'); + * // => 0 + */ + function findLastIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length - 1; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = fromIndex < 0 + ? nativeMax(length + index, 0) + : nativeMin(index, length - 1); + } + return baseFindIndex(array, getIteratee(predicate, 3), index, true); + } + + /** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ + function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; + } + + /** + * Recursively flattens `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, [3, [4]], 5]]); + * // => [1, 2, 3, 4, 5] + */ + function flattenDeep(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, INFINITY) : []; + } + + /** + * Recursively flatten `array` up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Array + * @param {Array} array The array to flatten. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * var array = [1, [2, [3, [4]], 5]]; + * + * _.flattenDepth(array, 1); + * // => [1, 2, [3, [4]], 5] + * + * _.flattenDepth(array, 2); + * // => [1, 2, 3, [4], 5] + */ + function flattenDepth(array, depth) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(array, depth); + } + + /** + * The inverse of `_.toPairs`; this method returns an object composed + * from key-value `pairs`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} pairs The key-value pairs. + * @returns {Object} Returns the new object. + * @example + * + * _.fromPairs([['a', 1], ['b', 2]]); + * // => { 'a': 1, 'b': 2 } + */ + function fromPairs(pairs) { + var index = -1, + length = pairs == null ? 0 : pairs.length, + result = {}; + + while (++index < length) { + var pair = pairs[index]; + result[pair[0]] = pair[1]; + } + return result; + } + + /** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias first + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.head([1, 2, 3]); + * // => 1 + * + * _.head([]); + * // => undefined + */ + function head(array) { + return (array && array.length) ? array[0] : undefined; + } + + /** + * Gets the index at which the first occurrence of `value` is found in `array` + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it's used as the + * offset from the end of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // Search from the `fromIndex`. + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + */ + function indexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseIndexOf(array, value, index); + } + + /** + * Gets all but the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] + */ + function initial(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 0, -1) : []; + } + + /** + * Creates an array of unique values that are included in all given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersection([2, 1], [2, 3]); + * // => [2] + */ + var intersection = baseRest(function(arrays) { + var mapped = arrayMap(arrays, castArrayLikeObject); + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped) + : []; + }); + + /** + * This method is like `_.intersection` except that it accepts `iteratee` + * which is invoked for each element of each `arrays` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [2.1] + * + * // The `_.property` iteratee shorthand. + * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }] + */ + var intersectionBy = baseRest(function(arrays) { + var iteratee = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + if (iteratee === last(mapped)) { + iteratee = undefined; + } else { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, getIteratee(iteratee, 2)) + : []; + }); + + /** + * This method is like `_.intersection` except that it accepts `comparator` + * which is invoked to compare elements of `arrays`. The order and references + * of result values are determined by the first array. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.intersectionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }] + */ + var intersectionWith = baseRest(function(arrays) { + var comparator = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + comparator = typeof comparator == 'function' ? comparator : undefined; + if (comparator) { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, undefined, comparator) + : []; + }); + + /** + * Converts all elements in `array` into a string separated by `separator`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to convert. + * @param {string} [separator=','] The element separator. + * @returns {string} Returns the joined string. + * @example + * + * _.join(['a', 'b', 'c'], '~'); + * // => 'a~b~c' + */ + function join(array, separator) { + return array == null ? '' : nativeJoin.call(array, separator); + } + + /** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ + function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; + } + + /** + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // Search from the `fromIndex`. + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 + */ + function lastIndexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return value === value + ? strictLastIndexOf(array, value, index) + : baseFindIndex(array, baseIsNaN, index, true); + } + + /** + * Gets the element at index `n` of `array`. If `n` is negative, the nth + * element from the end is returned. + * + * @static + * @memberOf _ + * @since 4.11.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=0] The index of the element to return. + * @returns {*} Returns the nth element of `array`. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * + * _.nth(array, 1); + * // => 'b' + * + * _.nth(array, -2); + * // => 'c'; + */ + function nth(array, n) { + return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; + } + + /** + * Removes all given values from `array` using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` + * to remove elements from an array by predicate. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pull(array, 'a', 'c'); + * console.log(array); + * // => ['b', 'b'] + */ + var pull = baseRest(pullAll); + + /** + * This method is like `_.pull` except that it accepts an array of values to remove. + * + * **Note:** Unlike `_.difference`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pullAll(array, ['a', 'c']); + * console.log(array); + * // => ['b', 'b'] + */ + function pullAll(array, values) { + return (array && array.length && values && values.length) + ? basePullAll(array, values) + : array; + } + + /** + * This method is like `_.pullAll` except that it accepts `iteratee` which is + * invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The iteratee is invoked with one argument: (value). + * + * **Note:** Unlike `_.differenceBy`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; + * + * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); + * console.log(array); + * // => [{ 'x': 2 }] + */ + function pullAllBy(array, values, iteratee) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, getIteratee(iteratee, 2)) + : array; + } + + /** + * This method is like `_.pullAll` except that it accepts `comparator` which + * is invoked to compare elements of `array` to `values`. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.differenceWith`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; + * + * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); + * console.log(array); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] + */ + function pullAllWith(array, values, comparator) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, undefined, comparator) + : array; + } + + /** + * Removes elements from `array` corresponding to `indexes` and returns an + * array of removed elements. + * + * **Note:** Unlike `_.at`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * var pulled = _.pullAt(array, [1, 3]); + * + * console.log(array); + * // => ['a', 'c'] + * + * console.log(pulled); + * // => ['b', 'd'] + */ + var pullAt = flatRest(function(array, indexes) { + var length = array == null ? 0 : array.length, + result = baseAt(array, indexes); + + basePullAt(array, arrayMap(indexes, function(index) { + return isIndex(index, length) ? +index : index; + }).sort(compareAscending)); + + return result; + }); + + /** + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is invoked + * with three arguments: (value, index, array). + * + * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` + * to pull elements from an array by value. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); + * + * console.log(array); + * // => [1, 3] + * + * console.log(evens); + * // => [2, 4] + */ + function remove(array, predicate) { + var result = []; + if (!(array && array.length)) { + return result; + } + var index = -1, + indexes = [], + length = array.length; + + predicate = getIteratee(predicate, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result.push(value); + indexes.push(index); + } + } + basePullAt(array, indexes); + return result; + } + + /** + * Reverses `array` so that the first element becomes the last, the second + * element becomes the second to last, and so on. + * + * **Note:** This method mutates `array` and is based on + * [`Array#reverse`](https://mdn.io/Array/reverse). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.reverse(array); + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function reverse(array) { + return array == null ? array : nativeReverse.call(array); + } + + /** + * Creates a slice of `array` from `start` up to, but not including, `end`. + * + * **Note:** This method is used instead of + * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are + * returned. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function slice(array, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + else { + start = start == null ? 0 : toInteger(start); + end = end === undefined ? length : toInteger(end); + } + return baseSlice(array, start, end); + } + + /** + * Uses a binary search to determine the lowest index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedIndex([30, 50], 40); + * // => 1 + */ + function sortedIndex(array, value) { + return baseSortedIndex(array, value); + } + + /** + * This method is like `_.sortedIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); + * // => 0 + */ + function sortedIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); + } + + /** + * This method is like `_.indexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedIndexOf([4, 5, 5, 5, 6], 5); + * // => 1 + */ + function sortedIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value); + if (index < length && eq(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.sortedIndex` except that it returns the highest + * index at which `value` should be inserted into `array` in order to + * maintain its sort order. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedLastIndex([4, 5, 5, 5, 6], 5); + * // => 4 + */ + function sortedLastIndex(array, value) { + return baseSortedIndex(array, value, true); + } + + /** + * This method is like `_.sortedLastIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 1 + * + * // The `_.property` iteratee shorthand. + * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); + * // => 1 + */ + function sortedLastIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); + } + + /** + * This method is like `_.lastIndexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); + * // => 3 + */ + function sortedLastIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value, true) - 1; + if (eq(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.uniq` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniq([1, 1, 2]); + * // => [1, 2] + */ + function sortedUniq(array) { + return (array && array.length) + ? baseSortedUniq(array) + : []; + } + + /** + * This method is like `_.uniqBy` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); + * // => [1.1, 2.3] + */ + function sortedUniqBy(array, iteratee) { + return (array && array.length) + ? baseSortedUniq(array, getIteratee(iteratee, 2)) + : []; + } + + /** + * Gets all but the first element of `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.tail([1, 2, 3]); + * // => [2, 3] + */ + function tail(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 1, length) : []; + } + + /** + * Creates a slice of `array` with `n` elements taken from the beginning. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] + * + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.take([1, 2, 3], 0); + * // => [] + */ + function take(array, n, guard) { + if (!(array && array.length)) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with `n` elements taken from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] + */ + function takeRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, n < 0 ? 0 : n, length); + } + + /** + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.takeRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeRightWhile(users, ['active', false]); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.takeRightWhile(users, 'active'); + * // => [] + */ + function takeRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), false, true) + : []; + } + + /** + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.takeWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matches` iteratee shorthand. + * _.takeWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeWhile(users, ['active', false]); + * // => objects for ['barney', 'fred'] + * + * // The `_.property` iteratee shorthand. + * _.takeWhile(users, 'active'); + * // => [] + */ + function takeWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3)) + : []; + } + + /** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */ + var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); + }); + + /** + * This method is like `_.union` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which uniqueness is computed. Result values are chosen from the first + * array in which the value occurs. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.unionBy([2.1], [1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + var unionBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); + }); + + /** + * This method is like `_.union` except that it accepts `comparator` which + * is invoked to compare elements of `arrays`. Result values are chosen from + * the first array in which the value occurs. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.unionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var unionWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); + }); + + /** + * Creates a duplicate-free version of an array, using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons, in which only the first occurrence of each element + * is kept. The order of result values is determined by the order they occur + * in the array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniq([2, 1, 2]); + * // => [2, 1] + */ + function uniq(array) { + return (array && array.length) ? baseUniq(array) : []; + } + + /** + * This method is like `_.uniq` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * uniqueness is computed. The order of result values is determined by the + * order they occur in the array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniqBy([2.1, 1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + function uniqBy(array, iteratee) { + return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; + } + + /** + * This method is like `_.uniq` except that it accepts `comparator` which + * is invoked to compare elements of `array`. The order of result values is + * determined by the order they occur in the array.The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.uniqWith(objects, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] + */ + function uniqWith(array, comparator) { + comparator = typeof comparator == 'function' ? comparator : undefined; + return (array && array.length) ? baseUniq(array, undefined, comparator) : []; + } + + /** + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-zip + * configuration. + * + * @static + * @memberOf _ + * @since 1.2.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + * + * _.unzip(zipped); + * // => [['a', 'b'], [1, 2], [true, false]] + */ + function unzip(array) { + if (!(array && array.length)) { + return []; + } + var length = 0; + array = arrayFilter(array, function(group) { + if (isArrayLikeObject(group)) { + length = nativeMax(group.length, length); + return true; + } + }); + return baseTimes(length, function(index) { + return arrayMap(array, baseProperty(index)); + }); + } + + /** + * This method is like `_.unzip` except that it accepts `iteratee` to specify + * how regrouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @param {Function} [iteratee=_.identity] The function to combine + * regrouped values. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip([1, 2], [10, 20], [100, 200]); + * // => [[1, 10, 100], [2, 20, 200]] + * + * _.unzipWith(zipped, _.add); + * // => [3, 30, 300] + */ + function unzipWith(array, iteratee) { + if (!(array && array.length)) { + return []; + } + var result = unzip(array); + if (iteratee == null) { + return result; + } + return arrayMap(result, function(group) { + return apply(iteratee, undefined, group); + }); + } + + /** + * Creates an array excluding all given values using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.pull`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.xor + * @example + * + * _.without([2, 1, 2, 3], 1, 2); + * // => [3] + */ + var without = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, values) + : []; + }); + + /** + * Creates an array of unique values that is the + * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * of the given arrays. The order of result values is determined by the order + * they occur in the arrays. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.without + * @example + * + * _.xor([2, 1], [2, 3]); + * // => [1, 3] + */ + var xor = baseRest(function(arrays) { + return baseXor(arrayFilter(arrays, isArrayLikeObject)); + }); + + /** + * This method is like `_.xor` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which by which they're compared. The order of result values is determined + * by the order they occur in the arrays. The iteratee is invoked with one + * argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2, 3.4] + * + * // The `_.property` iteratee shorthand. + * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ + var xorBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); + }); + + /** + * This method is like `_.xor` except that it accepts `comparator` which is + * invoked to compare elements of `arrays`. The order of result values is + * determined by the order they occur in the arrays. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.xorWith(objects, others, _.isEqual); + * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var xorWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); + }); + + /** + * Creates an array of grouped elements, the first of which contains the + * first elements of the given arrays, the second of which contains the + * second elements of the given arrays, and so on. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + */ + var zip = baseRest(unzip); + + /** + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. + * + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } + */ + function zipObject(props, values) { + return baseZipObject(props || [], values || [], assignValue); + } + + /** + * This method is like `_.zipObject` except that it supports property paths. + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); + * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } + */ + function zipObjectDeep(props, values) { + return baseZipObject(props || [], values || [], baseSet); + } + + /** + * This method is like `_.zip` except that it accepts `iteratee` to specify + * how grouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @param {Function} [iteratee=_.identity] The function to combine + * grouped values. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { + * return a + b + c; + * }); + * // => [111, 222] + */ + var zipWith = baseRest(function(arrays) { + var length = arrays.length, + iteratee = length > 1 ? arrays[length - 1] : undefined; + + iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; + return unzipWith(arrays, iteratee); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` wrapper instance that wraps `value` with explicit method + * chain sequences enabled. The result of such sequences must be unwrapped + * with `_#value`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Seq + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _ + * .chain(users) + * .sortBy('age') + * .map(function(o) { + * return o.user + ' is ' + o.age; + * }) + * .head() + * .value(); + * // => 'pebbles is 1' + */ + function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; + } + + /** + * This method invokes `interceptor` and returns `value`. The interceptor + * is invoked with one argument; (value). The purpose of this method is to + * "tap into" a method chain sequence in order to modify intermediate results. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * // Mutate input array. + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] + */ + function tap(value, interceptor) { + interceptor(value); + return value; + } + + /** + * This method is like `_.tap` except that it returns the result of `interceptor`. + * The purpose of this method is to "pass thru" values replacing intermediate + * results in a method chain sequence. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _(' abc ') + * .chain() + * .trim() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => ['abc'] + */ + function thru(value, interceptor) { + return interceptor(value); + } + + /** + * This method is the wrapper version of `_.at`. + * + * @name at + * @memberOf _ + * @since 1.0.0 + * @category Seq + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _(object).at(['a[0].b.c', 'a[1]']).value(); + * // => [3, 4] + */ + var wrapperAt = flatRest(function(paths) { + var length = paths.length, + start = length ? paths[0] : 0, + value = this.__wrapped__, + interceptor = function(object) { return baseAt(object, paths); }; + + if (length > 1 || this.__actions__.length || + !(value instanceof LazyWrapper) || !isIndex(start)) { + return this.thru(interceptor); + } + value = value.slice(start, +start + (length ? 1 : 0)); + value.__actions__.push({ + 'func': thru, + 'args': [interceptor], + 'thisArg': undefined + }); + return new LodashWrapper(value, this.__chain__).thru(function(array) { + if (length && !array.length) { + array.push(undefined); + } + return array; + }); + }); + + /** + * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. + * + * @name chain + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // A sequence without explicit chaining. + * _(users).head(); + * // => { 'user': 'barney', 'age': 36 } + * + * // A sequence with explicit chaining. + * _(users) + * .chain() + * .head() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */ + function wrapperChain() { + return chain(this); + } + + /** + * Executes the chain sequence and returns the wrapped result. + * + * @name commit + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapped = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapped = wrapped.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapped.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] + */ + function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); + } + + /** + * Gets the next value on a wrapped object following the + * [iterator protocol](https://mdn.io/iteration_protocols#iterator). + * + * @name next + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the next iterator value. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped.next(); + * // => { 'done': false, 'value': 1 } + * + * wrapped.next(); + * // => { 'done': false, 'value': 2 } + * + * wrapped.next(); + * // => { 'done': true, 'value': undefined } + */ + function wrapperNext() { + if (this.__values__ === undefined) { + this.__values__ = toArray(this.value()); + } + var done = this.__index__ >= this.__values__.length, + value = done ? undefined : this.__values__[this.__index__++]; + + return { 'done': done, 'value': value }; + } + + /** + * Enables the wrapper to be iterable. + * + * @name Symbol.iterator + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the wrapper object. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped[Symbol.iterator]() === wrapped; + * // => true + * + * Array.from(wrapped); + * // => [1, 2] + */ + function wrapperToIterator() { + return this; + } + + /** + * Creates a clone of the chain sequence planting `value` as the wrapped value. + * + * @name plant + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @param {*} value The value to plant. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2]).map(square); + * var other = wrapped.plant([3, 4]); + * + * other.value(); + * // => [9, 16] + * + * wrapped.value(); + * // => [1, 4] + */ + function wrapperPlant(value) { + var result, + parent = this; + + while (parent instanceof baseLodash) { + var clone = wrapperClone(parent); + clone.__index__ = 0; + clone.__values__ = undefined; + if (result) { + previous.__wrapped__ = clone; + } else { + result = clone; + } + var previous = clone; + parent = parent.__wrapped__; + } + previous.__wrapped__ = value; + return result; + } + + /** + * This method is the wrapper version of `_.reverse`. + * + * **Note:** This method mutates the wrapped array. + * + * @name reverse + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2, 3]; + * + * _(array).reverse().value() + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function wrapperReverse() { + var value = this.__wrapped__; + if (value instanceof LazyWrapper) { + var wrapped = value; + if (this.__actions__.length) { + wrapped = new LazyWrapper(this); + } + wrapped = wrapped.reverse(); + wrapped.__actions__.push({ + 'func': thru, + 'args': [reverse], + 'thisArg': undefined + }); + return new LodashWrapper(wrapped, this.__chain__); + } + return this.thru(reverse); + } + + /** + * Executes the chain sequence to resolve the unwrapped value. + * + * @name value + * @memberOf _ + * @since 0.1.0 + * @alias toJSON, valueOf + * @category Seq + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] + */ + function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the number of times the key was returned by `iteratee`. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.countBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': 1, '6': 2 } + * + * // The `_.property` iteratee shorthand. + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */ + var countBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + ++result[key]; + } else { + baseAssignValue(result, key, 1); + } + }); + + /** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * Iteration is stopped once `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.every(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.every(users, 'active'); + * // => false + */ + function every(collection, predicate, guard) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] + */ + function filter(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ + var find = createFind(findIndex); + + /** + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=collection.length-1] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 + */ + var findLast = createFind(findLastIndex); + + /** + * Creates a flattened array of values by running each element in `collection` + * thru `iteratee` and flattening the mapped results. The iteratee is invoked + * with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [n, n]; + * } + * + * _.flatMap([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMap(collection, iteratee) { + return baseFlatten(map(collection, iteratee), 1); + } + + /** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDeep([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMapDeep(collection, iteratee) { + return baseFlatten(map(collection, iteratee), INFINITY); + } + + /** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDepth([1, 2], duplicate, 2); + * // => [[1, 1], [2, 2]] + */ + function flatMapDepth(collection, iteratee, depth) { + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(map(collection, iteratee), depth); + } + + /** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @alias eachRight + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEach + * @example + * + * _.forEachRight([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `2` then `1`. + */ + function forEachRight(collection, iteratee) { + var func = isArray(collection) ? arrayEachRight : baseEachRight; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The order of grouped values + * is determined by the order they occur in `collection`. The corresponding + * value of each key is an array of elements responsible for generating the + * key. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': [4.2], '6': [6.1, 6.3] } + * + * // The `_.property` iteratee shorthand. + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */ + var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + baseAssignValue(result, key, [value]); + } + }); + + /** + * Checks if `value` is in `collection`. If `collection` is a string, it's + * checked for a substring of `value`, otherwise + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * is used for equality comparisons. If `fromIndex` is negative, it's used as + * the offset from the end of `collection`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {boolean} Returns `true` if `value` is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'a': 1, 'b': 2 }, 1); + * // => true + * + * _.includes('abcd', 'bc'); + * // => true + */ + function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; + + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) + ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) + : (!!length && baseIndexOf(collection, value, fromIndex) > -1); + } + + /** + * Invokes the method at `path` of each element in `collection`, returning + * an array of the results of each invoked method. Any additional arguments + * are provided to each invoked method. If `path` is a function, it's invoked + * for, and `this` bound to, each element in `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array|Function|string} path The path of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke each method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invokeMap([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] + */ + var invokeMap = baseRest(function(collection, path, args) { + var index = -1, + isFunc = typeof path == 'function', + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value) { + result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); + }); + return result; + }); + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the last element responsible for generating the key. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var array = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.keyBy(array, function(o) { + * return String.fromCharCode(o.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.keyBy(array, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + */ + var keyBy = createAggregator(function(result, value, key) { + baseAssignValue(result, key, value); + }); + + /** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ + function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.sortBy` except that it allows specifying the sort + * orders of the iteratees to sort by. If `orders` is unspecified, all values + * are sorted in ascending order. Otherwise, specify an order of "desc" for + * descending or "asc" for ascending sort order of corresponding values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] + * The iteratees to sort by. + * @param {string[]} [orders] The sort orders of `iteratees`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 34 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 36 } + * ]; + * + * // Sort by `user` in ascending order and by `age` in descending order. + * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + */ + function orderBy(collection, iteratees, orders, guard) { + if (collection == null) { + return []; + } + if (!isArray(iteratees)) { + iteratees = iteratees == null ? [] : [iteratees]; + } + orders = guard ? undefined : orders; + if (!isArray(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseOrderBy(collection, iteratees, orders); + } + + /** + * Creates an array of elements split into two groups, the first of which + * contains elements `predicate` returns truthy for, the second of which + * contains elements `predicate` returns falsey for. The predicate is + * invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the array of grouped elements. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true }, + * { 'user': 'pebbles', 'age': 1, 'active': false } + * ]; + * + * _.partition(users, function(o) { return o.active; }); + * // => objects for [['fred'], ['barney', 'pebbles']] + * + * // The `_.matches` iteratee shorthand. + * _.partition(users, { 'age': 1, 'active': false }); + * // => objects for [['pebbles'], ['barney', 'fred']] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.partition(users, ['active', false]); + * // => objects for [['barney', 'pebbles'], ['fred']] + * + * // The `_.property` iteratee shorthand. + * _.partition(users, 'active'); + * // => objects for [['fred'], ['barney', 'pebbles']] + */ + var partition = createAggregator(function(result, value, key) { + result[key ? 0 : 1].push(value); + }, function() { return [[], []]; }); + + /** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ + function reduce(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduce : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); + } + + /** + * This method is like `_.reduce` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduce + * @example + * + * var array = [[0, 1], [2, 3], [4, 5]]; + * + * _.reduceRight(array, function(flattened, other) { + * return flattened.concat(other); + * }, []); + * // => [4, 5, 2, 3, 0, 1] + */ + function reduceRight(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduceRight : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); + } + + /** + * The opposite of `_.filter`; this method returns the elements of `collection` + * that `predicate` does **not** return truthy for. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.filter + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true } + * ]; + * + * _.reject(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.reject(users, { 'age': 40, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.reject(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.reject(users, 'active'); + * // => objects for ['barney'] + */ + function reject(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, negate(getIteratee(predicate, 3))); + } + + /** + * Gets a random element from `collection`. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + * @example + * + * _.sample([1, 2, 3, 4]); + * // => 2 + */ + function sample(collection) { + var func = isArray(collection) ? arraySample : baseSample; + return func(collection); + } + + /** + * Gets `n` random elements at unique keys from `collection` up to the + * size of `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @param {number} [n=1] The number of elements to sample. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the random elements. + * @example + * + * _.sampleSize([1, 2, 3], 2); + * // => [3, 1] + * + * _.sampleSize([1, 2, 3], 4); + * // => [2, 3, 1] + */ + function sampleSize(collection, n, guard) { + if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); + } + var func = isArray(collection) ? arraySampleSize : baseSampleSize; + return func(collection, n); + } + + /** + * Creates an array of shuffled values, using a version of the + * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + * @example + * + * _.shuffle([1, 2, 3, 4]); + * // => [4, 1, 3, 2] + */ + function shuffle(collection) { + var func = isArray(collection) ? arrayShuffle : baseShuffle; + return func(collection); + } + + /** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ + function size(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike(collection)) { + return isString(collection) ? stringSize(collection) : collection.length; + } + var tag = getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return baseKeys(collection).length; + } + + /** + * Checks if `predicate` returns truthy for **any** element of `collection`. + * Iteration is stopped once `predicate` returns truthy. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.some(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.some(users, 'active'); + * // => true + */ + function some(collection, predicate, guard) { + var func = isArray(collection) ? arraySome : baseSome; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] + */ + var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ + var now = ctxNow || function() { + return root.Date.now(); + }; + + /*------------------------------------------------------------------------*/ + + /** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it's called `n` or more times. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => Logs 'done saving!' after the two async saves have completed. + */ + function after(n, func) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; + } + + /** + * Creates a function that invokes `func`, with up to `n` arguments, + * ignoring any additional arguments. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] + */ + function ary(func, n, guard) { + n = guard ? undefined : n; + n = (func && n == null) ? func.length : n; + return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); + } + + /** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it's called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery(element).on('click', _.before(5, addContactToList)); + * // => Allows adding up to 4 contacts to the list. + */ + function before(n, func) { + var result; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = undefined; + } + return result; + }; + } + + /** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and `partials` prepended to the arguments it receives. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" + * property of bound functions. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * function greet(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // Bound with placeholders. + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */ + var bind = baseRest(function(func, thisArg, partials) { + var bitmask = WRAP_BIND_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bind)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(func, bitmask, thisArg, partials, holders); + }); + + /** + * Creates a function that invokes the method at `object[key]` with `partials` + * prepended to the arguments it receives. + * + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. See + * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Function + * @param {Object} object The object to invoke the method on. + * @param {string} key The key of the method. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // Bound with placeholders. + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' + */ + var bindKey = baseRest(function(object, key, partials) { + var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bindKey)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(key, bitmask, object, partials, holders); + }); + + /** + * Creates a function that accepts arguments of `func` and either invokes + * `func` returning its result, if at least `arity` number of arguments have + * been provided, or returns a function that accepts the remaining `func` + * arguments, and so on. The arity of `func` may be specified if `func.length` + * is not sufficient. + * + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(1)(_, 3)(2); + * // => [1, 2, 3] + */ + function curry(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curry.placeholder; + return result; + } + + /** + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. + * + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(3)(1, _)(2); + * // => [1, 2, 3] + */ + function curryRight(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curryRight.placeholder; + return result; + } + + /** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ + function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + timeWaiting = wait - timeSinceLastCall; + + return maxing + ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) + : timeWaiting; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; + } + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; + } + + function flush() { + return timerId === undefined ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + clearTimeout(timerId); + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; + } + + /** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // => Logs 'deferred' after one millisecond. + */ + var defer = baseRest(function(func, args) { + return baseDelay(func, 1, args); + }); + + /** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => Logs 'later' after one second. + */ + var delay = baseRest(function(func, wait, args) { + return baseDelay(func, toNumber(wait) || 0, args); + }); + + /** + * Creates a function that invokes `func` with arguments reversed. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to flip arguments for. + * @returns {Function} Returns the new flipped function. + * @example + * + * var flipped = _.flip(function() { + * return _.toArray(arguments); + * }); + * + * flipped('a', 'b', 'c', 'd'); + * // => ['d', 'c', 'b', 'a'] + */ + function flip(func) { + return createWrap(func, WRAP_FLIP_FLAG); + } + + /** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ + function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; + } + + // Expose `MapCache`. + memoize.Cache = MapCache; + + /** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new negated function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ + function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function() { + var args = arguments; + switch (args.length) { + case 0: return !predicate.call(this); + case 1: return !predicate.call(this, args[0]); + case 2: return !predicate.call(this, args[0], args[1]); + case 3: return !predicate.call(this, args[0], args[1], args[2]); + } + return !predicate.apply(this, args); + }; + } + + /** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first invocation. The `func` is + * invoked with the `this` binding and arguments of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // => `createApplication` is invoked once + */ + function once(func) { + return before(2, func); + } + + /** + * Creates a function that invokes `func` with its arguments transformed. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Function + * @param {Function} func The function to wrap. + * @param {...(Function|Function[])} [transforms=[_.identity]] + * The argument transforms. + * @returns {Function} Returns the new function. + * @example + * + * function doubled(n) { + * return n * 2; + * } + * + * function square(n) { + * return n * n; + * } + * + * var func = _.overArgs(function(x, y) { + * return [x, y]; + * }, [square, doubled]); + * + * func(9, 3); + * // => [81, 6] + * + * func(10, 5); + * // => [100, 10] + */ + var overArgs = castRest(function(func, transforms) { + transforms = (transforms.length == 1 && isArray(transforms[0])) + ? arrayMap(transforms[0], baseUnary(getIteratee())) + : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); + + var funcsLength = transforms.length; + return baseRest(function(args) { + var index = -1, + length = nativeMin(args.length, funcsLength); + + while (++index < length) { + args[index] = transforms[index].call(this, args[index]); + } + return apply(func, this, args); + }); + }); + + /** + * Creates a function that invokes `func` with `partials` prepended to the + * arguments it receives. This method is like `_.bind` except it does **not** + * alter the `this` binding. + * + * The `_.partial.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 0.2.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var sayHelloTo = _.partial(greet, 'hello'); + * sayHelloTo('fred'); + * // => 'hello fred' + * + * // Partially applied with placeholders. + * var greetFred = _.partial(greet, _, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + */ + var partial = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partial)); + return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); + }); + + /** + * This method is like `_.partial` except that partially applied arguments + * are appended to the arguments it receives. + * + * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var greetFred = _.partialRight(greet, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + * + * // Partially applied with placeholders. + * var sayHelloTo = _.partialRight(greet, 'hello', _); + * sayHelloTo('fred'); + * // => 'hello fred' + */ + var partialRight = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partialRight)); + return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); + }); + + /** + * Creates a function that invokes `func` with arguments arranged according + * to the specified `indexes` where the argument value at the first index is + * provided as the first argument, the argument value at the second index is + * provided as the second argument, and so on. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to rearrange arguments for. + * @param {...(number|number[])} indexes The arranged argument indexes. + * @returns {Function} Returns the new function. + * @example + * + * var rearged = _.rearg(function(a, b, c) { + * return [a, b, c]; + * }, [2, 0, 1]); + * + * rearged('b', 'c', 'a') + * // => ['a', 'b', 'c'] + */ + var rearg = flatRest(function(func, indexes) { + return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); + }); + + /** + * Creates a function that invokes `func` with the `this` binding of the + * created function and arguments from `start` and beyond provided as + * an array. + * + * **Note:** This method is based on the + * [rest parameter](https://mdn.io/rest_parameters). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.rest(function(what, names) { + * return what + ' ' + _.initial(names).join(', ') + + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); + * }); + * + * say('hello', 'fred', 'barney', 'pebbles'); + * // => 'hello fred, barney, & pebbles' + */ + function rest(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start === undefined ? start : toInteger(start); + return baseRest(func, start); + } + + /** + * Creates a function that invokes `func` with the `this` binding of the + * create function and an array of arguments much like + * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). + * + * **Note:** This method is based on the + * [spread operator](https://mdn.io/spread_operator). + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Function + * @param {Function} func The function to spread arguments over. + * @param {number} [start=0] The start position of the spread. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.spread(function(who, what) { + * return who + ' says ' + what; + * }); + * + * say(['fred', 'hello']); + * // => 'fred says hello' + * + * var numbers = Promise.all([ + * Promise.resolve(40), + * Promise.resolve(36) + * ]); + * + * numbers.then(_.spread(function(x, y) { + * return x + y; + * })); + * // => a Promise of 76 + */ + function spread(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start == null ? 0 : nativeMax(toInteger(start), 0); + return baseRest(function(args) { + var array = args[start], + otherArgs = castSlice(args, 0, start); + + if (array) { + arrayPush(otherArgs, array); + } + return apply(func, this, otherArgs); + }); + } + + /** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); + */ + function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + 'leading': leading, + 'maxWait': wait, + 'trailing': trailing + }); + } + + /** + * Creates a function that accepts up to one argument, ignoring any + * additional arguments. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.unary(parseInt)); + * // => [6, 8, 10] + */ + function unary(func) { + return ary(func, 1); + } + + /** + * Creates a function that provides `value` to `wrapper` as its first + * argument. Any additional arguments provided to the function are appended + * to those provided to the `wrapper`. The wrapper is invoked with the `this` + * binding of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {*} value The value to wrap. + * @param {Function} [wrapper=identity] The wrapper function. + * @returns {Function} Returns the new function. + * @example + * + * var p = _.wrap(_.escape, function(func, text) { + * return '

' + func(text) + '

'; + * }); + * + * p('fred, barney, & pebbles'); + * // => '

fred, barney, & pebbles

' + */ + function wrap(value, wrapper) { + return partial(castFunction(wrapper), value); + } + + /*------------------------------------------------------------------------*/ + + /** + * Casts `value` as an array if it's not one. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Lang + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast array. + * @example + * + * _.castArray(1); + * // => [1] + * + * _.castArray({ 'a': 1 }); + * // => [{ 'a': 1 }] + * + * _.castArray('abc'); + * // => ['abc'] + * + * _.castArray(null); + * // => [null] + * + * _.castArray(undefined); + * // => [undefined] + * + * _.castArray(); + * // => [] + * + * var array = [1, 2, 3]; + * console.log(_.castArray(array) === array); + * // => true + */ + function castArray() { + if (!arguments.length) { + return []; + } + var value = arguments[0]; + return isArray(value) ? value : [value]; + } + + /** + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true + */ + function clone(value) { + return baseClone(value, CLONE_SYMBOLS_FLAG); + } + + /** + * This method is like `_.clone` except that it accepts `customizer` which + * is invoked to produce the cloned value. If `customizer` returns `undefined`, + * cloning is handled by the method instead. The `customizer` is invoked with + * up to four arguments; (value [, index|key, object, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the cloned value. + * @see _.cloneDeepWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(false); + * } + * } + * + * var el = _.cloneWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 0 + */ + function cloneWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); + } + + /** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ + function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); + } + + /** + * This method is like `_.cloneWith` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the deep cloned value. + * @see _.cloneWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(true); + * } + * } + * + * var el = _.cloneDeepWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 20 + */ + function cloneDeepWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); + } + + /** + * Checks if `object` conforms to `source` by invoking the predicate + * properties of `source` with the corresponding property values of `object`. + * + * **Note:** This method is equivalent to `_.conforms` when `source` is + * partially applied. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); + * // => true + * + * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); + * // => false + */ + function conformsTo(object, source) { + return source == null || baseConformsTo(object, source, keys(source)); + } + + /** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + function eq(value, other) { + return value === other || (value !== value && other !== other); + } + + /** + * Checks if `value` is greater than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + * @see _.lt + * @example + * + * _.gt(3, 1); + * // => true + * + * _.gt(3, 3); + * // => false + * + * _.gt(1, 3); + * // => false + */ + var gt = createRelationalOperation(baseGt); + + /** + * Checks if `value` is greater than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than or equal to + * `other`, else `false`. + * @see _.lte + * @example + * + * _.gte(3, 1); + * // => true + * + * _.gte(3, 3); + * // => true + * + * _.gte(1, 3); + * // => false + */ + var gte = createRelationalOperation(function(value, other) { + return value >= other; + }); + + /** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); + }; + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + + /** + * Checks if `value` is classified as an `ArrayBuffer` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + * @example + * + * _.isArrayBuffer(new ArrayBuffer(2)); + * // => true + * + * _.isArrayBuffer(new Array(2)); + * // => false + */ + var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; + + /** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + /** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + + /** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ + function isBoolean(value) { + return value === true || value === false || + (isObjectLike(value) && baseGetTag(value) == boolTag); + } + + /** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ + var isBuffer = nativeIsBuffer || stubFalse; + + /** + * Checks if `value` is classified as a `Date` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + * @example + * + * _.isDate(new Date); + * // => true + * + * _.isDate('Mon April 23 2012'); + * // => false + */ + var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; + + /** + * Checks if `value` is likely a DOM element. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. + * @example + * + * _.isElement(document.body); + * // => true + * + * _.isElement(''); + * // => false + */ + function isElement(value) { + return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); + } + + /** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ + function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + return true; + } + + /** + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false + */ + function isEqual(value, other) { + return baseIsEqual(value, other); + } + + /** + * This method is like `_.isEqual` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with up to + * six arguments: (objValue, othValue [, index|key, object, other, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, othValue) { + * if (isGreeting(objValue) && isGreeting(othValue)) { + * return true; + * } + * } + * + * var array = ['hello', 'goodbye']; + * var other = ['hi', 'goodbye']; + * + * _.isEqualWith(array, other, customizer); + * // => true + */ + function isEqualWith(value, other, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + var result = customizer ? customizer(value, other) : undefined; + return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; + } + + /** + * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, + * `SyntaxError`, `TypeError`, or `URIError` object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. + * @example + * + * _.isError(new Error); + * // => true + * + * _.isError(Error); + * // => false + */ + function isError(value) { + if (!isObjectLike(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == errorTag || tag == domExcTag || + (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); + } + + /** + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on + * [`Number.isFinite`](https://mdn.io/Number/isFinite). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @example + * + * _.isFinite(3); + * // => true + * + * _.isFinite(Number.MIN_VALUE); + * // => true + * + * _.isFinite(Infinity); + * // => false + * + * _.isFinite('3'); + * // => false + */ + function isFinite(value) { + return typeof value == 'number' && nativeIsFinite(value); + } + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + + /** + * Checks if `value` is an integer. + * + * **Note:** This method is based on + * [`Number.isInteger`](https://mdn.io/Number/isInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an integer, else `false`. + * @example + * + * _.isInteger(3); + * // => true + * + * _.isInteger(Number.MIN_VALUE); + * // => false + * + * _.isInteger(Infinity); + * // => false + * + * _.isInteger('3'); + * // => false + */ + function isInteger(value) { + return typeof value == 'number' && value == toInteger(value); + } + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ + function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); + } + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return value != null && typeof value == 'object'; + } + + /** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ + var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + + /** + * Performs a partial deep comparison between `object` and `source` to + * determine if `object` contains equivalent property values. + * + * **Note:** This method is equivalent to `_.matches` when `source` is + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.isMatch(object, { 'b': 2 }); + * // => true + * + * _.isMatch(object, { 'b': 1 }); + * // => false + */ + function isMatch(object, source) { + return object === source || baseIsMatch(object, source, getMatchData(source)); + } + + /** + * This method is like `_.isMatch` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with five + * arguments: (objValue, srcValue, index|key, object, source). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, srcValue) { + * if (isGreeting(objValue) && isGreeting(srcValue)) { + * return true; + * } + * } + * + * var object = { 'greeting': 'hello' }; + * var source = { 'greeting': 'hi' }; + * + * _.isMatchWith(object, source, customizer); + * // => true + */ + function isMatchWith(object, source, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseIsMatch(object, source, getMatchData(source), customizer); + } + + /** + * Checks if `value` is `NaN`. + * + * **Note:** This method is based on + * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as + * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for + * `undefined` and other non-number values. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ + function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some + // ActiveX objects in IE. + return isNumber(value) && value != +value; + } + + /** + * Checks if `value` is a pristine native function. + * + * **Note:** This method can't reliably detect native functions in the presence + * of the core-js package because core-js circumvents this kind of detection. + * Despite multiple requests, the core-js maintainer has made it clear: any + * attempt to fix the detection will be obstructed. As a result, we're left + * with little choice but to throw an error. Unfortunately, this also affects + * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), + * which rely on core-js. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ + function isNative(value) { + if (isMaskable(value)) { + throw new Error(CORE_ERROR_TEXT); + } + return baseIsNative(value); + } + + /** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ + function isNull(value) { + return value === null; + } + + /** + * Checks if `value` is `null` or `undefined`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is nullish, else `false`. + * @example + * + * _.isNil(null); + * // => true + * + * _.isNil(void 0); + * // => true + * + * _.isNil(NaN); + * // => false + */ + function isNil(value) { + return value == null; + } + + /** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are + * classified as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a number, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false + */ + function isNumber(value) { + return typeof value == 'number' || + (isObjectLike(value) && baseGetTag(value) == numberTag); + } + + /** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ + function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; + } + + /** + * Checks if `value` is classified as a `RegExp` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + * @example + * + * _.isRegExp(/abc/); + * // => true + * + * _.isRegExp('/abc/'); + * // => false + */ + var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; + + /** + * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 + * double precision number which isn't the result of a rounded unsafe integer. + * + * **Note:** This method is based on + * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. + * @example + * + * _.isSafeInteger(3); + * // => true + * + * _.isSafeInteger(Number.MIN_VALUE); + * // => false + * + * _.isSafeInteger(Infinity); + * // => false + * + * _.isSafeInteger('3'); + * // => false + */ + function isSafeInteger(value) { + return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ + var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + + /** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ + function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); + } + + /** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); + } + + /** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + + /** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ + function isUndefined(value) { + return value === undefined; + } + + /** + * Checks if `value` is classified as a `WeakMap` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. + * @example + * + * _.isWeakMap(new WeakMap); + * // => true + * + * _.isWeakMap(new Map); + * // => false + */ + function isWeakMap(value) { + return isObjectLike(value) && getTag(value) == weakMapTag; + } + + /** + * Checks if `value` is classified as a `WeakSet` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. + * @example + * + * _.isWeakSet(new WeakSet); + * // => true + * + * _.isWeakSet(new Set); + * // => false + */ + function isWeakSet(value) { + return isObjectLike(value) && baseGetTag(value) == weakSetTag; + } + + /** + * Checks if `value` is less than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + * @see _.gt + * @example + * + * _.lt(1, 3); + * // => true + * + * _.lt(3, 3); + * // => false + * + * _.lt(3, 1); + * // => false + */ + var lt = createRelationalOperation(baseLt); + + /** + * Checks if `value` is less than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than or equal to + * `other`, else `false`. + * @see _.gte + * @example + * + * _.lte(1, 3); + * // => true + * + * _.lte(3, 3); + * // => true + * + * _.lte(3, 1); + * // => false + */ + var lte = createRelationalOperation(function(value, other) { + return value <= other; + }); + + /** + * Converts `value` to an array. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Array} Returns the converted array. + * @example + * + * _.toArray({ 'a': 1, 'b': 2 }); + * // => [1, 2] + * + * _.toArray('abc'); + * // => ['a', 'b', 'c'] + * + * _.toArray(1); + * // => [] + * + * _.toArray(null); + * // => [] + */ + function toArray(value) { + if (!value) { + return []; + } + if (isArrayLike(value)) { + return isString(value) ? stringToArray(value) : copyArray(value); + } + if (symIterator && value[symIterator]) { + return iteratorToArray(value[symIterator]()); + } + var tag = getTag(value), + func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); + + return func(value); + } + + /** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + + /** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ + function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; + } + + /** + * Converts `value` to an integer suitable for use as the length of an + * array-like object. + * + * **Note:** This method is based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toLength(3.2); + * // => 3 + * + * _.toLength(Number.MIN_VALUE); + * // => 0 + * + * _.toLength(Infinity); + * // => 4294967295 + * + * _.toLength('3.2'); + * // => 3 + */ + function toLength(value) { + return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; + } + + /** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ + function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = baseTrim(value); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); + } + + /** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ + function toPlainObject(value) { + return copyObject(value, keysIn(value)); + } + + /** + * Converts `value` to a safe integer. A safe integer can be compared and + * represented correctly. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toSafeInteger(3.2); + * // => 3 + * + * _.toSafeInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toSafeInteger(Infinity); + * // => 9007199254740991 + * + * _.toSafeInteger('3.2'); + * // => 3 + */ + function toSafeInteger(value) { + return value + ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) + : (value === 0 ? value : 0); + } + + /** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ + function toString(value) { + return value == null ? '' : baseToString(value); + } + + /*------------------------------------------------------------------------*/ + + /** + * Assigns own enumerable string keyed properties of source objects to the + * destination object. Source objects are applied from left to right. + * Subsequent sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object` and is loosely based on + * [`Object.assign`](https://mdn.io/Object/assign). + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assignIn + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assign({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'c': 3 } + */ + var assign = createAssigner(function(object, source) { + if (isPrototype(source) || isArrayLike(source)) { + copyObject(source, keys(source), object); + return; + } + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + assignValue(object, key, source[key]); + } + } + }); + + /** + * This method is like `_.assign` except that it iterates over own and + * inherited source properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assign + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assignIn({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } + */ + var assignIn = createAssigner(function(object, source) { + copyObject(source, keysIn(source), object); + }); + + /** + * This method is like `_.assignIn` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extendWith + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignInWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keysIn(source), object, customizer); + }); + + /** + * This method is like `_.assign` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignInWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var assignWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keys(source), object, customizer); + }); + + /** + * Creates an array of values corresponding to `paths` of `object`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Array} Returns the picked values. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _.at(object, ['a[0].b.c', 'a[1]']); + * // => [3, 4] + */ + var at = flatRest(baseAt); + + /** + * Creates an object that inherits from the `prototype` object. If a + * `properties` object is given, its own enumerable string keyed properties + * are assigned to the created object. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @returns {Object} Returns the new object. + * @example + * + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true + */ + function create(prototype, properties) { + var result = baseCreate(prototype); + return properties == null ? result : baseAssign(result, properties); + } + + /** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var defaults = baseRest(function(object, sources) { + object = Object(object); + + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + + while (++index < length) { + var source = sources[index]; + var props = keysIn(source); + var propsIndex = -1; + var propsLength = props.length; + + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + + if (value === undefined || + (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { + object[key] = source[key]; + } + } + } + + return object; + }); + + /** + * This method is like `_.defaults` except that it recursively assigns + * default properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaults + * @example + * + * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); + * // => { 'a': { 'b': 2, 'c': 3 } } + */ + var defaultsDeep = baseRest(function(args) { + args.push(undefined, customDefaultsMerge); + return apply(mergeWith, undefined, args); + }); + + /** + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(o) { return o.age < 40; }); + * // => 'barney' (iteration order is not guaranteed) + * + * // The `_.matches` iteratee shorthand. + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findKey(users, 'active'); + * // => 'barney' + */ + function findKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); + } + + /** + * This method is like `_.findKey` except that it iterates over elements of + * a collection in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findLastKey(users, function(o) { return o.age < 40; }); + * // => returns 'pebbles' assuming `_.findKey` returns 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.findLastKey(users, { 'age': 36, 'active': true }); + * // => 'barney' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findLastKey(users, 'active'); + * // => 'pebbles' + */ + function findLastKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); + } + + /** + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). + */ + function forIn(object, iteratee) { + return object == null + ? object + : baseFor(object, getIteratee(iteratee, 3), keysIn); + } + + /** + * This method is like `_.forIn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forIn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forInRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. + */ + function forInRight(object, iteratee) { + return object == null + ? object + : baseForRight(object, getIteratee(iteratee, 3), keysIn); + } + + /** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forOwn(object, iteratee) { + return object && baseForOwn(object, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.forOwn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwnRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. + */ + function forOwnRight(object, iteratee) { + return object && baseForOwnRight(object, getIteratee(iteratee, 3)); + } + + /** + * Creates an array of function property names from own enumerable properties + * of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functionsIn + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functions(new Foo); + * // => ['a', 'b'] + */ + function functions(object) { + return object == null ? [] : baseFunctions(object, keys(object)); + } + + /** + * Creates an array of function property names from own and inherited + * enumerable properties of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functions + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functionsIn(new Foo); + * // => ['a', 'b', 'c'] + */ + function functionsIn(object) { + return object == null ? [] : baseFunctions(object, keysIn(object)); + } + + /** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ + function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; + } + + /** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ + function has(object, path) { + return object != null && hasPath(object, path, baseHas); + } + + /** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); + } + + /** + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite + * property assignments of previous values. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Object + * @param {Object} object The object to invert. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } + */ + var invert = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + result[value] = key; + }, constant(identity)); + + /** + * This method is like `_.invert` except that the inverted object is generated + * from the results of running each element of `object` thru `iteratee`. The + * corresponding inverted value of each inverted key is an array of keys + * responsible for generating the inverted value. The iteratee is invoked + * with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Object + * @param {Object} object The object to invert. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invertBy(object); + * // => { '1': ['a', 'c'], '2': ['b'] } + * + * _.invertBy(object, function(value) { + * return 'group' + value; + * }); + * // => { 'group1': ['a', 'c'], 'group2': ['b'] } + */ + var invertBy = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + if (hasOwnProperty.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } + }, getIteratee); + + /** + * Invokes the method at `path` of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + * @example + * + * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; + * + * _.invoke(object, 'a[0].b.c.slice', 1, 3); + * // => [2, 3] + */ + var invoke = baseRest(baseInvoke); + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + + /** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + + /** + * The opposite of `_.mapValues`; this method creates an object with the + * same values as `object` and keys generated by running each own enumerable + * string keyed property of `object` thru `iteratee`. The iteratee is invoked + * with three arguments: (value, key, object). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapValues + * @example + * + * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { + * return key + value; + * }); + * // => { 'a1': 1, 'b2': 2 } + */ + function mapKeys(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, iteratee(value, key, object), value); + }); + return result; + } + + /** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ + function mapValues(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, key, iteratee(value, key, object)); + }); + return result; + } + + /** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ + var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); + + /** + * This method is like `_.merge` except that it accepts `customizer` which + * is invoked to produce the merged values of the destination and source + * properties. If `customizer` returns `undefined`, merging is handled by the + * method instead. The `customizer` is invoked with six arguments: + * (objValue, srcValue, key, object, source, stack). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} customizer The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * function customizer(objValue, srcValue) { + * if (_.isArray(objValue)) { + * return objValue.concat(srcValue); + * } + * } + * + * var object = { 'a': [1], 'b': [2] }; + * var other = { 'a': [3], 'b': [4] }; + * + * _.mergeWith(object, other, customizer); + * // => { 'a': [1, 3], 'b': [2, 4] } + */ + var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { + baseMerge(object, source, srcIndex, customizer); + }); + + /** + * The opposite of `_.pick`; this method creates an object composed of the + * own and inherited enumerable property paths of `object` that are not omitted. + * + * **Note:** This method is considerably slower than `_.pick`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to omit. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omit(object, ['a', 'c']); + * // => { 'b': '2' } + */ + var omit = flatRest(function(object, paths) { + var result = {}; + if (object == null) { + return result; + } + var isDeep = false; + paths = arrayMap(paths, function(path) { + path = castPath(path, object); + isDeep || (isDeep = path.length > 1); + return path; + }); + copyObject(object, getAllKeysIn(object), result); + if (isDeep) { + result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); + } + var length = paths.length; + while (length--) { + baseUnset(result, paths[length]); + } + return result; + }); + + /** + * The opposite of `_.pickBy`; this method creates an object composed of + * the own and inherited enumerable string keyed properties of `object` that + * `predicate` doesn't return truthy for. The predicate is invoked with two + * arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omitBy(object, _.isNumber); + * // => { 'b': '2' } + */ + function omitBy(object, predicate) { + return pickBy(object, negate(getIteratee(predicate))); + } + + /** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */ + var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); + }); + + /** + * Creates an object composed of the `object` properties `predicate` returns + * truthy for. The predicate is invoked with two arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pickBy(object, _.isNumber); + * // => { 'a': 1, 'c': 3 } + */ + function pickBy(object, predicate) { + if (object == null) { + return {}; + } + var props = arrayMap(getAllKeysIn(object), function(prop) { + return [prop]; + }); + predicate = getIteratee(predicate); + return basePickBy(object, props, function(value, path) { + return predicate(value, path[0]); + }); + } + + /** + * This method is like `_.get` except that if the resolved value is a + * function it's invoked with the `this` binding of its parent object and + * its result is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to resolve. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; + * + * _.result(object, 'a[0].b.c1'); + * // => 3 + * + * _.result(object, 'a[0].b.c2'); + * // => 4 + * + * _.result(object, 'a[0].b.c3', 'default'); + * // => 'default' + * + * _.result(object, 'a[0].b.c3', _.constant('default')); + * // => 'default' + */ + function result(object, path, defaultValue) { + path = castPath(path, object); + + var index = -1, + length = path.length; + + // Ensure the loop is entered when path is empty. + if (!length) { + length = 1; + object = undefined; + } + while (++index < length) { + var value = object == null ? undefined : object[toKey(path[index])]; + if (value === undefined) { + index = length; + value = defaultValue; + } + object = isFunction(value) ? value.call(object) : value; + } + return object; + } + + /** + * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, + * it's created. Arrays are created for missing index properties while objects + * are created for all other missing properties. Use `_.setWith` to customize + * `path` creation. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.set(object, 'a[0].b.c', 4); + * console.log(object.a[0].b.c); + * // => 4 + * + * _.set(object, ['x', '0', 'y', 'z'], 5); + * console.log(object.x[0].y.z); + * // => 5 + */ + function set(object, path, value) { + return object == null ? object : baseSet(object, path, value); + } + + /** + * This method is like `_.set` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.setWith(object, '[0][1]', 'a', Object); + * // => { '0': { '1': 'a' } } + */ + function setWith(object, path, value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseSet(object, path, value, customizer); + } + + /** + * Creates an array of own enumerable string keyed-value pairs for `object` + * which can be consumed by `_.fromPairs`. If `object` is a map or set, its + * entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entries + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairs(new Foo); + * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) + */ + var toPairs = createToPairs(keys); + + /** + * Creates an array of own and inherited enumerable string keyed-value pairs + * for `object` which can be consumed by `_.fromPairs`. If `object` is a map + * or set, its entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entriesIn + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairsIn(new Foo); + * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) + */ + var toPairsIn = createToPairs(keysIn); + + /** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own + * enumerable string keyed properties thru `iteratee`, with each invocation + * potentially mutating the `accumulator` object. If `accumulator` is not + * provided, a new object with the same `[[Prototype]]` will be used. The + * iteratee is invoked with four arguments: (accumulator, value, key, object). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }, []); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ + function transform(object, iteratee, accumulator) { + var isArr = isArray(object), + isArrLike = isArr || isBuffer(object) || isTypedArray(object); + + iteratee = getIteratee(iteratee, 4); + if (accumulator == null) { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } + else { + accumulator = {}; + } + } + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; + } + + /** + * Removes the property at `path` of `object`. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 7 } }] }; + * _.unset(object, 'a[0].b.c'); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + * + * _.unset(object, ['a', '0', 'b', 'c']); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + */ + function unset(object, path) { + return object == null ? true : baseUnset(object, path); + } + + /** + * This method is like `_.set` except that accepts `updater` to produce the + * value to set. Use `_.updateWith` to customize `path` creation. The `updater` + * is invoked with one argument: (value). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.update(object, 'a[0].b.c', function(n) { return n * n; }); + * console.log(object.a[0].b.c); + * // => 9 + * + * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); + * console.log(object.x[0].y.z); + * // => 0 + */ + function update(object, path, updater) { + return object == null ? object : baseUpdate(object, path, castFunction(updater)); + } + + /** + * This method is like `_.update` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.updateWith(object, '[0][1]', _.constant('a'), Object); + * // => { '0': { '1': 'a' } } + */ + function updateWith(object, path, updater, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); + } + + /** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ + function values(object) { + return object == null ? [] : baseValues(object, keys(object)); + } + + /** + * Creates an array of the own and inherited enumerable string keyed property + * values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.valuesIn(new Foo); + * // => [1, 2, 3] (iteration order is not guaranteed) + */ + function valuesIn(object) { + return object == null ? [] : baseValues(object, keysIn(object)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Clamps `number` within the inclusive `lower` and `upper` bounds. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Number + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + * @example + * + * _.clamp(-10, -5, 5); + * // => -5 + * + * _.clamp(10, -5, 5); + * // => 5 + */ + function clamp(number, lower, upper) { + if (upper === undefined) { + upper = lower; + lower = undefined; + } + if (upper !== undefined) { + upper = toNumber(upper); + upper = upper === upper ? upper : 0; + } + if (lower !== undefined) { + lower = toNumber(lower); + lower = lower === lower ? lower : 0; + } + return baseClamp(toNumber(number), lower, upper); + } + + /** + * Checks if `n` is between `start` and up to, but not including, `end`. If + * `end` is not specified, it's set to `start` with `start` then set to `0`. + * If `start` is greater than `end` the params are swapped to support + * negative ranges. + * + * @static + * @memberOf _ + * @since 3.3.0 + * @category Number + * @param {number} number The number to check. + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + * @see _.range, _.rangeRight + * @example + * + * _.inRange(3, 2, 4); + * // => true + * + * _.inRange(4, 8); + * // => true + * + * _.inRange(4, 2); + * // => false + * + * _.inRange(2, 2); + * // => false + * + * _.inRange(1.2, 2); + * // => true + * + * _.inRange(5.2, 4); + * // => false + * + * _.inRange(-3, -2, -6); + * // => true + */ + function inRange(number, start, end) { + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + number = toNumber(number); + return baseInRange(number, start, end); + } + + /** + * Produces a random number between the inclusive `lower` and `upper` bounds. + * If only one argument is provided a number between `0` and the given number + * is returned. If `floating` is `true`, or either `lower` or `upper` are + * floats, a floating-point number is returned instead of an integer. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Number + * @param {number} [lower=0] The lower bound. + * @param {number} [upper=1] The upper bound. + * @param {boolean} [floating] Specify returning a floating-point number. + * @returns {number} Returns the random number. + * @example + * + * _.random(0, 5); + * // => an integer between 0 and 5 + * + * _.random(5); + * // => also an integer between 0 and 5 + * + * _.random(5, true); + * // => a floating-point number between 0 and 5 + * + * _.random(1.2, 5.2); + * // => a floating-point number between 1.2 and 5.2 + */ + function random(lower, upper, floating) { + if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { + upper = floating = undefined; + } + if (floating === undefined) { + if (typeof upper == 'boolean') { + floating = upper; + upper = undefined; + } + else if (typeof lower == 'boolean') { + floating = lower; + lower = undefined; + } + } + if (lower === undefined && upper === undefined) { + lower = 0; + upper = 1; + } + else { + lower = toFinite(lower); + if (upper === undefined) { + upper = lower; + lower = 0; + } else { + upper = toFinite(upper); + } + } + if (lower > upper) { + var temp = lower; + lower = upper; + upper = temp; + } + if (floating || lower % 1 || upper % 1) { + var rand = nativeRandom(); + return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); + } + return baseRandom(lower, upper); + } + + /*------------------------------------------------------------------------*/ + + /** + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar--'); + * // => 'fooBar' + * + * _.camelCase('__FOO_BAR__'); + * // => 'fooBar' + */ + var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? capitalize(word) : word); + }); + + /** + * Converts the first character of `string` to upper case and the remaining + * to lower case. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('FRED'); + * // => 'Fred' + */ + function capitalize(string) { + return upperFirst(toString(string).toLowerCase()); + } + + /** + * Deburrs `string` by converting + * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) + * letters to basic Latin letters and removing + * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ + function deburr(string) { + string = toString(string); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); + } + + /** + * Checks if `string` ends with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=string.length] The position to search up to. + * @returns {boolean} Returns `true` if `string` ends with `target`, + * else `false`. + * @example + * + * _.endsWith('abc', 'c'); + * // => true + * + * _.endsWith('abc', 'b'); + * // => false + * + * _.endsWith('abc', 'b', 2); + * // => true + */ + function endsWith(string, target, position) { + string = toString(string); + target = baseToString(target); + + var length = string.length; + position = position === undefined + ? length + : baseClamp(toInteger(position), 0, length); + + var end = position; + position -= target.length; + return position >= 0 && string.slice(position, end) == target; + } + + /** + * Converts the characters "&", "<", ">", '"', and "'" in `string` to their + * corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional + * characters use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't need escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. See + * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * When working with HTML you should always + * [quote attribute values](http://wonko.com/post/html-escaping) to reduce + * XSS vectors. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function escape(string) { + string = toString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; + } + + /** + * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", + * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https://lodash\.com/\)' + */ + function escapeRegExp(string) { + string = toString(string); + return (string && reHasRegExpChar.test(string)) + ? string.replace(reRegExpChar, '\\$&') + : string; + } + + /** + * Converts `string` to + * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example + * + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' + * + * _.kebabCase('fooBar'); + * // => 'foo-bar' + * + * _.kebabCase('__FOO_BAR__'); + * // => 'foo-bar' + */ + var kebabCase = createCompounder(function(result, word, index) { + return result + (index ? '-' : '') + word.toLowerCase(); + }); + + /** + * Converts `string`, as space separated words, to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the lower cased string. + * @example + * + * _.lowerCase('--Foo-Bar--'); + * // => 'foo bar' + * + * _.lowerCase('fooBar'); + * // => 'foo bar' + * + * _.lowerCase('__FOO_BAR__'); + * // => 'foo bar' + */ + var lowerCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + word.toLowerCase(); + }); + + /** + * Converts the first character of `string` to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.lowerFirst('Fred'); + * // => 'fred' + * + * _.lowerFirst('FRED'); + * // => 'fRED' + */ + var lowerFirst = createCaseFirst('toLowerCase'); + + /** + * Pads `string` on the left and right sides if it's shorter than `length`. + * Padding characters are truncated if they can't be evenly divided by `length`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.pad('abc', 8); + * // => ' abc ' + * + * _.pad('abc', 8, '_-'); + * // => '_-abc_-_' + * + * _.pad('abc', 3); + * // => 'abc' + */ + function pad(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + if (!length || strLength >= length) { + return string; + } + var mid = (length - strLength) / 2; + return ( + createPadding(nativeFloor(mid), chars) + + string + + createPadding(nativeCeil(mid), chars) + ); + } + + /** + * Pads `string` on the right side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padEnd('abc', 6); + * // => 'abc ' + * + * _.padEnd('abc', 6, '_-'); + * // => 'abc_-_' + * + * _.padEnd('abc', 3); + * // => 'abc' + */ + function padEnd(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (string + createPadding(length - strLength, chars)) + : string; + } + + /** + * Pads `string` on the left side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padStart('abc', 6); + * // => ' abc' + * + * _.padStart('abc', 6, '_-'); + * // => '_-_abc' + * + * _.padStart('abc', 3); + * // => 'abc' + */ + function padStart(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (createPadding(length - strLength, chars) + string) + : string; + } + + /** + * Converts `string` to an integer of the specified radix. If `radix` is + * `undefined` or `0`, a `radix` of `10` is used unless `value` is a + * hexadecimal, in which case a `radix` of `16` is used. + * + * **Note:** This method aligns with the + * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category String + * @param {string} string The string to convert. + * @param {number} [radix=10] The radix to interpret `value` by. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {number} Returns the converted integer. + * @example + * + * _.parseInt('08'); + * // => 8 + * + * _.map(['6', '08', '10'], _.parseInt); + * // => [6, 8, 10] + */ + function parseInt(string, radix, guard) { + if (guard || radix == null) { + radix = 0; + } else if (radix) { + radix = +radix; + } + return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); + } + + /** + * Repeats the given string `n` times. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to repeat. + * @param {number} [n=1] The number of times to repeat the string. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the repeated string. + * @example + * + * _.repeat('*', 3); + * // => '***' + * + * _.repeat('abc', 2); + * // => 'abcabc' + * + * _.repeat('abc', 0); + * // => '' + */ + function repeat(string, n, guard) { + if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); + } + return baseRepeat(toString(string), n); + } + + /** + * Replaces matches for `pattern` in `string` with `replacement`. + * + * **Note:** This method is based on + * [`String#replace`](https://mdn.io/String/replace). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to modify. + * @param {RegExp|string} pattern The pattern to replace. + * @param {Function|string} replacement The match replacement. + * @returns {string} Returns the modified string. + * @example + * + * _.replace('Hi Fred', 'Fred', 'Barney'); + * // => 'Hi Barney' + */ + function replace() { + var args = arguments, + string = toString(args[0]); + + return args.length < 3 ? string : string.replace(args[1], args[2]); + } + + /** + * Converts `string` to + * [snake case](https://en.wikipedia.org/wiki/Snake_case). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the snake cased string. + * @example + * + * _.snakeCase('Foo Bar'); + * // => 'foo_bar' + * + * _.snakeCase('fooBar'); + * // => 'foo_bar' + * + * _.snakeCase('--FOO-BAR--'); + * // => 'foo_bar' + */ + var snakeCase = createCompounder(function(result, word, index) { + return result + (index ? '_' : '') + word.toLowerCase(); + }); + + /** + * Splits `string` by `separator`. + * + * **Note:** This method is based on + * [`String#split`](https://mdn.io/String/split). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to split. + * @param {RegExp|string} separator The separator pattern to split by. + * @param {number} [limit] The length to truncate results to. + * @returns {Array} Returns the string segments. + * @example + * + * _.split('a-b-c', '-', 2); + * // => ['a', 'b'] + */ + function split(string, separator, limit) { + if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { + separator = limit = undefined; + } + limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; + if (!limit) { + return []; + } + string = toString(string); + if (string && ( + typeof separator == 'string' || + (separator != null && !isRegExp(separator)) + )) { + separator = baseToString(separator); + if (!separator && hasUnicode(string)) { + return castSlice(stringToArray(string), 0, limit); + } + } + return string.split(separator, limit); + } + + /** + * Converts `string` to + * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). + * + * @static + * @memberOf _ + * @since 3.1.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the start cased string. + * @example + * + * _.startCase('--foo-bar--'); + * // => 'Foo Bar' + * + * _.startCase('fooBar'); + * // => 'Foo Bar' + * + * _.startCase('__FOO_BAR__'); + * // => 'FOO BAR' + */ + var startCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + upperFirst(word); + }); + + /** + * Checks if `string` starts with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=0] The position to search from. + * @returns {boolean} Returns `true` if `string` starts with `target`, + * else `false`. + * @example + * + * _.startsWith('abc', 'a'); + * // => true + * + * _.startsWith('abc', 'b'); + * // => false + * + * _.startsWith('abc', 'b', 1); + * // => true + */ + function startsWith(string, target, position) { + string = toString(string); + position = position == null + ? 0 + : baseClamp(toInteger(position), 0, string.length); + + target = baseToString(target); + return string.slice(position, position + target.length) == target; + } + + /** + * Creates a compiled template function that can interpolate data properties + * in "interpolate" delimiters, HTML-escape interpolated data properties in + * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data + * properties may be accessed as free variables in the template. If a setting + * object is given, it takes precedence over `_.templateSettings` values. + * + * **Note:** In the development build `_.template` utilizes + * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) + * for easier debugging. + * + * For more information on precompiling templates see + * [lodash's custom builds documentation](https://lodash.com/custom-builds). + * + * For more information on Chrome extension sandboxes see + * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The template string. + * @param {Object} [options={}] The options object. + * @param {RegExp} [options.escape=_.templateSettings.escape] + * The HTML "escape" delimiter. + * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] + * The "evaluate" delimiter. + * @param {Object} [options.imports=_.templateSettings.imports] + * An object to import into the template as free variables. + * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] + * The "interpolate" delimiter. + * @param {string} [options.sourceURL='lodash.templateSources[n]'] + * The sourceURL of the compiled template. + * @param {string} [options.variable='obj'] + * The data object variable name. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the compiled template function. + * @example + * + * // Use the "interpolate" delimiter to create a compiled template. + * var compiled = _.template('hello <%= user %>!'); + * compiled({ 'user': 'fred' }); + * // => 'hello fred!' + * + * // Use the HTML "escape" delimiter to escape data property values. + * var compiled = _.template('<%- value %>'); + * compiled({ 'value': ' +``` + +(It also works with various module systems, if you prefer that sort of thing - it has a dependency on [vlq](https://github.com/Rich-Harris/vlq).) + +## Usage + +These examples assume you're in node.js, or something similar: + +```js +import MagicString from 'magic-string'; +import fs from 'fs'; + +const s = new MagicString('problems = 99'); + +s.update(0, 8, 'answer'); +s.toString(); // 'answer = 99' + +s.update(11, 13, '42'); // character indices always refer to the original string +s.toString(); // 'answer = 42' + +s.prepend('var ').append(';'); // most methods are chainable +s.toString(); // 'var answer = 42;' + +const map = s.generateMap({ + source: 'source.js', + file: 'converted.js.map', + includeContent: true, +}); // generates a v3 sourcemap + +fs.writeFileSync('converted.js', s.toString()); +fs.writeFileSync('converted.js.map', map.toString()); +``` + +You can pass an options argument: + +```js +const s = new MagicString(someCode, { + // these options will be used if you later call `bundle.addSource( s )` - see below + filename: 'foo.js', + indentExclusionRanges: [ + /*...*/ + ], + // mark source as ignore in DevTools, see below #Bundling + ignoreList: false, + // adjust the incoming position - see below + offset: 0, +}); +``` + +## Properties + +### s.offset + +Sets the offset property to adjust the incoming position for the following APIs: `slice`, `update`, `overwrite`, `appendLeft`, `prependLeft`, `appendRight`, `prependRight`, `move`, `reset`, and `remove`. + +Example usage: + +```ts +const s = new MagicString('hello world', { offset: 0 }); +s.offset = 6; +s.slice() === 'world'; +``` + +## Methods + +### s.addSourcemapLocation( index ) + +Adds the specified character index (with respect to the original string) to sourcemap mappings, if `hires` is `false` (see below). + +### s.append( content ) + +Appends the specified content to the end of the string. Returns `this`. + +### s.appendLeft( index, content ) + +Appends the specified `content` at the `index` in the original string. If a range _ending_ with `index` is subsequently moved, the insert will be moved with it. Returns `this`. See also `s.prependLeft(...)`. + +### s.appendRight( index, content ) + +Appends the specified `content` at the `index` in the original string. If a range _starting_ with `index` is subsequently moved, the insert will be moved with it. Returns `this`. See also `s.prependRight(...)`. + +### s.clone() + +Does what you'd expect. + +### s.generateDecodedMap( options ) + +Generates a sourcemap object with raw mappings in array form, rather than encoded as a string. See `generateMap` documentation below for options details. Useful if you need to manipulate the sourcemap further, but most of the time you will use `generateMap` instead. + +### s.generateMap( options ) + +Generates a [version 3 sourcemap](https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit). All options are, well, optional: + +- `file` - the filename where you plan to write the sourcemap +- `source` - the filename of the file containing the original source +- `includeContent` - whether to include the original content in the map's `sourcesContent` array +- `hires` - whether the mapping should be high-resolution. Hi-res mappings map every single character, meaning (for example) your devtools will always be able to pinpoint the exact location of function calls and so on. With lo-res mappings, devtools may only be able to identify the correct line - but they're quicker to generate and less bulky. You can also set `"boundary"` to generate a semi-hi-res mappings segmented per word boundary instead of per character, suitable for string semantics that are separated by words. If sourcemap locations have been specified with `s.addSourcemapLocation()`, they will be used here. + +The returned sourcemap has two (non-enumerable) methods attached for convenience: + +- `toString` - returns the equivalent of `JSON.stringify(map)` +- `toUrl` - returns a DataURI containing the sourcemap. Useful for doing this sort of thing: + +```js +code += '\n//# sourceMappingURL=' + map.toUrl(); +``` + +### s.hasChanged() + +Indicates if the string has been changed. + +### s.indent( prefix[, options] ) + +Prefixes each line of the string with `prefix`. If `prefix` is not supplied, the indentation will be guessed from the original content, falling back to a single tab character. Returns `this`. + +The `options` argument can have an `exclude` property, which is an array of `[start, end]` character ranges. These ranges will be excluded from the indentation - useful for (e.g.) multiline strings. + +### s.insertLeft( index, content ) + +**DEPRECATED** since 0.17 – use `s.appendLeft(...)` instead + +### s.insertRight( index, content ) + +**DEPRECATED** since 0.17 – use `s.prependRight(...)` instead + +### s.isEmpty() + +Returns true if the resulting source is empty (disregarding white space). + +### s.locate( index ) + +**DEPRECATED** since 0.10 – see [#30](https://github.com/Rich-Harris/magic-string/pull/30) + +### s.locateOrigin( index ) + +**DEPRECATED** since 0.10 – see [#30](https://github.com/Rich-Harris/magic-string/pull/30) + +### s.move( start, end, index ) + +Moves the characters from `start` and `end` to `index`. Returns `this`. + +### s.overwrite( start, end, content[, options] ) + +Replaces the characters from `start` to `end` with `content`, along with the appended/prepended content in that range. The same restrictions as `s.remove()` apply. Returns `this`. + +The fourth argument is optional. It can have a `storeName` property — if `true`, the original name will be stored for later inclusion in a sourcemap's `names` array — and a `contentOnly` property which determines whether only the content is overwritten, or anything that was appended/prepended to the range as well. + +It may be preferred to use `s.update(...)` instead if you wish to avoid overwriting the appended/prepended content. + +### s.prepend( content ) + +Prepends the string with the specified content. Returns `this`. + +### s.prependLeft ( index, content ) + +Same as `s.appendLeft(...)`, except that the inserted content will go _before_ any previous appends or prepends at `index` + +### s.prependRight ( index, content ) + +Same as `s.appendRight(...)`, except that the inserted content will go _before_ any previous appends or prepends at `index` + +### s.replace( regexpOrString, substitution ) + +String replacement with RegExp or string. When using a RegExp, replacer function is also supported. Returns `this`. + +```ts +import MagicString from 'magic-string'; + +const s = new MagicString(source); + +s.replace('foo', 'bar'); +s.replace(/foo/g, 'bar'); +s.replace(/(\w)(\d+)/g, (_, $1, $2) => $1.toUpperCase() + $2); +``` + +The differences from [`String.replace`](<(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace)>): + +- It will always match against the **original string** +- It mutates the magic string state (use `.clone()` to be immutable) + +### s.replaceAll( regexpOrString, substitution ) + +Same as `s.replace`, but replace all matched strings instead of just one. +If `regexpOrString` is a regex, then it must have the global (`g`) flag set, or a `TypeError` is thrown. Matches the behavior of the builtin [`String.property.replaceAll`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll). Returns `this`. + +### s.remove( start, end ) + +Removes the characters from `start` to `end` (of the original string, **not** the generated string). Removing the same content twice, or making removals that partially overlap, will cause an error. Returns `this`. + +### s.reset( start, end ) + +Resets the characters from `start` to `end` (of the original string, **not** the generated string). +It can be used to restore previously removed characters and discard unwanted changes. + +### s.slice( start, end ) + +Returns the content of the generated string that corresponds to the slice between `start` and `end` of the original string. Throws error if the indices are for characters that were already removed. + +### s.snip( start, end ) + +Returns a clone of `s`, with all content before the `start` and `end` characters of the original string removed. + +### s.toString() + +Returns the generated string. + +### s.trim([ charType ]) + +Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the start and end. Returns `this`. + +### s.trimStart([ charType ]) + +Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the start. Returns `this`. + +### s.trimEnd([ charType ]) + +Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the end. Returns `this`. + +### s.trimLines() + +Removes empty lines from the start and end. Returns `this`. + +### s.update( start, end, content[, options] ) + +Replaces the characters from `start` to `end` with `content`. The same restrictions as `s.remove()` apply. Returns `this`. + +The fourth argument is optional. It can have a `storeName` property — if `true`, the original name will be stored for later inclusion in a sourcemap's `names` array — and an `overwrite` property which defaults to `false` and determines whether anything that was appended/prepended to the range will be overwritten along with the original content. + +`s.update(start, end, content)` is equivalent to `s.overwrite(start, end, content, { contentOnly: true })`. + +## Bundling + +To concatenate several sources, use `MagicString.Bundle`: + +```js +const bundle = new MagicString.Bundle(); + +bundle.addSource({ + filename: 'foo.js', + content: new MagicString('var answer = 42;'), +}); + +bundle.addSource({ + filename: 'bar.js', + content: new MagicString('console.log( answer )'), +}); + +// Sources can be marked as ignore-listed, which provides a hint to debuggers +// to not step into this code and also don't show the source files depending +// on user preferences. +bundle.addSource({ + filename: 'some-3rdparty-library.js', + content: new MagicString('function myLib(){}'), + ignoreList: false, // <-- +}); + +// Advanced: a source can include an `indentExclusionRanges` property +// alongside `filename` and `content`. This will be passed to `s.indent()` +// - see documentation above + +bundle + .indent() // optionally, pass an indent string, otherwise it will be guessed + .prepend('(function () {\n') + .append('}());'); + +bundle.toString(); +// (function () { +// var answer = 42; +// console.log( answer ); +// }()); + +// options are as per `s.generateMap()` above +const map = bundle.generateMap({ + file: 'bundle.js', + includeContent: true, + hires: true, +}); +``` + +As an alternative syntax, if you a) don't have `filename` or `indentExclusionRanges` options, or b) passed those in when you used `new MagicString(...)`, you can simply pass the `MagicString` instance itself: + +```js +const bundle = new MagicString.Bundle(); +const source = new MagicString(someCode, { + filename: 'foo.js', +}); + +bundle.addSource(source); +``` + +## License + +MIT diff --git a/node_modules/magic-string/dist/magic-string.cjs.d.ts b/node_modules/magic-string/dist/magic-string.cjs.d.ts new file mode 100644 index 0000000..76cc537 --- /dev/null +++ b/node_modules/magic-string/dist/magic-string.cjs.d.ts @@ -0,0 +1,289 @@ +export interface BundleOptions { + intro?: string; + separator?: string; +} + +export interface SourceMapOptions { + /** + * Whether the mapping should be high-resolution. + * Hi-res mappings map every single character, meaning (for example) your devtools will always + * be able to pinpoint the exact location of function calls and so on. + * With lo-res mappings, devtools may only be able to identify the correct + * line - but they're quicker to generate and less bulky. + * You can also set `"boundary"` to generate a semi-hi-res mappings segmented per word boundary + * instead of per character, suitable for string semantics that are separated by words. + * If sourcemap locations have been specified with s.addSourceMapLocation(), they will be used here. + */ + hires?: boolean | 'boundary'; + /** + * The filename where you plan to write the sourcemap. + */ + file?: string; + /** + * The filename of the file containing the original source. + */ + source?: string; + /** + * Whether to include the original content in the map's sourcesContent array. + */ + includeContent?: boolean; +} + +export type SourceMapSegment = + | [number] + | [number, number, number, number] + | [number, number, number, number, number]; + +export interface DecodedSourceMap { + file: string; + sources: string[]; + sourcesContent?: string[]; + names: string[]; + mappings: SourceMapSegment[][]; + x_google_ignoreList?: number[]; +} + +export class SourceMap { + constructor(properties: DecodedSourceMap); + + version: number; + file: string; + sources: string[]; + sourcesContent?: string[]; + names: string[]; + mappings: string; + x_google_ignoreList?: number[]; + debugId?: string; + + /** + * Returns the equivalent of `JSON.stringify(map)` + */ + toString(): string; + /** + * Returns a DataURI containing the sourcemap. Useful for doing this sort of thing: + * `generateMap(options?: SourceMapOptions): SourceMap;` + */ + toUrl(): string; +} + +export class Bundle { + constructor(options?: BundleOptions); + /** + * Adds the specified source to the bundle, which can either be a `MagicString` object directly, + * or an options object that holds a magic string `content` property and optionally provides + * a `filename` for the source within the bundle, as well as an optional `ignoreList` hint + * (which defaults to `false`). The `filename` is used when constructing the source map for the + * bundle, to identify this `source` in the source map's `sources` field. The `ignoreList` hint + * is used to populate the `x_google_ignoreList` extension field in the source map, which is a + * mechanism for tools to signal to debuggers that certain sources should be ignored by default + * (depending on user preferences). + */ + addSource( + source: MagicString | { filename?: string; content: MagicString; ignoreList?: boolean }, + ): this; + append(str: string, options?: BundleOptions): this; + clone(): this; + generateMap( + options?: SourceMapOptions, + ): Omit & { sourcesContent: Array }; + generateDecodedMap( + options?: SourceMapOptions, + ): Omit & { sourcesContent: Array }; + getIndentString(): string; + indent(indentStr?: string): this; + indentExclusionRanges: ExclusionRange | Array; + prepend(str: string): this; + toString(): string; + trimLines(): this; + trim(charType?: string): this; + trimStart(charType?: string): this; + trimEnd(charType?: string): this; + isEmpty(): boolean; + length(): number; +} + +export type ExclusionRange = [number, number]; + +export interface MagicStringOptions { + filename?: string; + indentExclusionRanges?: ExclusionRange | Array; + offset?: number; +} + +export interface IndentOptions { + exclude?: ExclusionRange | Array; + indentStart?: boolean; +} + +export interface OverwriteOptions { + storeName?: boolean; + contentOnly?: boolean; +} + +export interface UpdateOptions { + storeName?: boolean; + overwrite?: boolean; +} + +export default class MagicString { + constructor(str: string, options?: MagicStringOptions); + /** + * Adds the specified character index (with respect to the original string) to sourcemap mappings, if `hires` is false. + */ + addSourcemapLocation(char: number): void; + /** + * Appends the specified content to the end of the string. + */ + append(content: string): this; + /** + * Appends the specified content at the index in the original string. + * If a range *ending* with index is subsequently moved, the insert will be moved with it. + * See also `s.prependLeft(...)`. + */ + appendLeft(index: number, content: string): this; + /** + * Appends the specified content at the index in the original string. + * If a range *starting* with index is subsequently moved, the insert will be moved with it. + * See also `s.prependRight(...)`. + */ + appendRight(index: number, content: string): this; + /** + * Does what you'd expect. + */ + clone(): this; + /** + * Generates a version 3 sourcemap. + */ + generateMap(options?: SourceMapOptions): SourceMap; + /** + * Generates a sourcemap object with raw mappings in array form, rather than encoded as a string. + * Useful if you need to manipulate the sourcemap further, but most of the time you will use `generateMap` instead. + */ + generateDecodedMap(options?: SourceMapOptions): DecodedSourceMap; + getIndentString(): string; + + /** + * Prefixes each line of the string with prefix. + * If prefix is not supplied, the indentation will be guessed from the original content, falling back to a single tab character. + */ + indent(options?: IndentOptions): this; + /** + * Prefixes each line of the string with prefix. + * If prefix is not supplied, the indentation will be guessed from the original content, falling back to a single tab character. + * + * The options argument can have an exclude property, which is an array of [start, end] character ranges. + * These ranges will be excluded from the indentation - useful for (e.g.) multiline strings. + */ + indent(indentStr?: string, options?: IndentOptions): this; + indentExclusionRanges: ExclusionRange | Array; + + /** + * Moves the characters from `start` and `end` to `index`. + */ + move(start: number, end: number, index: number): this; + /** + * Replaces the characters from `start` to `end` with `content`, along with the appended/prepended content in + * that range. The same restrictions as `s.remove()` apply. + * + * The fourth argument is optional. It can have a storeName property — if true, the original name will be stored + * for later inclusion in a sourcemap's names array — and a contentOnly property which determines whether only + * the content is overwritten, or anything that was appended/prepended to the range as well. + * + * It may be preferred to use `s.update(...)` instead if you wish to avoid overwriting the appended/prepended content. + */ + overwrite( + start: number, + end: number, + content: string, + options?: boolean | OverwriteOptions, + ): this; + /** + * Replaces the characters from `start` to `end` with `content`. The same restrictions as `s.remove()` apply. + * + * The fourth argument is optional. It can have a storeName property — if true, the original name will be stored + * for later inclusion in a sourcemap's names array — and an overwrite property which determines whether only + * the content is overwritten, or anything that was appended/prepended to the range as well. + */ + update(start: number, end: number, content: string, options?: boolean | UpdateOptions): this; + /** + * Prepends the string with the specified content. + */ + prepend(content: string): this; + /** + * Same as `s.appendLeft(...)`, except that the inserted content will go *before* any previous appends or prepends at index + */ + prependLeft(index: number, content: string): this; + /** + * Same as `s.appendRight(...)`, except that the inserted content will go *before* any previous appends or prepends at `index` + */ + prependRight(index: number, content: string): this; + /** + * Removes the characters from `start` to `end` (of the original string, **not** the generated string). + * Removing the same content twice, or making removals that partially overlap, will cause an error. + */ + remove(start: number, end: number): this; + /** + * Reset the modified characters from `start` to `end` (of the original string, **not** the generated string). + */ + reset(start: number, end: number): this; + /** + * Returns the content of the generated string that corresponds to the slice between `start` and `end` of the original string. + * Throws error if the indices are for characters that were already removed. + */ + slice(start: number, end: number): string; + /** + * Returns a clone of `s`, with all content before the `start` and `end` characters of the original string removed. + */ + snip(start: number, end: number): this; + /** + * Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the start and end. + */ + trim(charType?: string): this; + /** + * Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the start. + */ + trimStart(charType?: string): this; + /** + * Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the end. + */ + trimEnd(charType?: string): this; + /** + * Removes empty lines from the start and end. + */ + trimLines(): this; + /** + * String replacement with RegExp or string. + */ + replace( + regex: RegExp | string, + replacement: string | ((substring: string, ...args: any[]) => string), + ): this; + /** + * Same as `s.replace`, but replace all matched strings instead of just one. + */ + replaceAll( + regex: RegExp | string, + replacement: string | ((substring: string, ...args: any[]) => string), + ): this; + + lastChar(): string; + lastLine(): string; + /** + * Returns true if the resulting source is empty (disregarding white space). + */ + isEmpty(): boolean; + length(): number; + + /** + * Indicates if the string has been changed. + */ + hasChanged(): boolean; + + original: string; + /** + * Returns the generated string. + */ + toString(): string; + + offset: number; +} diff --git a/node_modules/magic-string/dist/magic-string.cjs.js b/node_modules/magic-string/dist/magic-string.cjs.js new file mode 100644 index 0000000..c7453eb --- /dev/null +++ b/node_modules/magic-string/dist/magic-string.cjs.js @@ -0,0 +1,1575 @@ +'use strict'; + +var sourcemapCodec = require('@jridgewell/sourcemap-codec'); + +class BitSet { + constructor(arg) { + this.bits = arg instanceof BitSet ? arg.bits.slice() : []; + } + + add(n) { + this.bits[n >> 5] |= 1 << (n & 31); + } + + has(n) { + return !!(this.bits[n >> 5] & (1 << (n & 31))); + } +} + +class Chunk { + constructor(start, end, content) { + this.start = start; + this.end = end; + this.original = content; + + this.intro = ''; + this.outro = ''; + + this.content = content; + this.storeName = false; + this.edited = false; + + { + this.previous = null; + this.next = null; + } + } + + appendLeft(content) { + this.outro += content; + } + + appendRight(content) { + this.intro = this.intro + content; + } + + clone() { + const chunk = new Chunk(this.start, this.end, this.original); + + chunk.intro = this.intro; + chunk.outro = this.outro; + chunk.content = this.content; + chunk.storeName = this.storeName; + chunk.edited = this.edited; + + return chunk; + } + + contains(index) { + return this.start < index && index < this.end; + } + + eachNext(fn) { + let chunk = this; + while (chunk) { + fn(chunk); + chunk = chunk.next; + } + } + + eachPrevious(fn) { + let chunk = this; + while (chunk) { + fn(chunk); + chunk = chunk.previous; + } + } + + edit(content, storeName, contentOnly) { + this.content = content; + if (!contentOnly) { + this.intro = ''; + this.outro = ''; + } + this.storeName = storeName; + + this.edited = true; + + return this; + } + + prependLeft(content) { + this.outro = content + this.outro; + } + + prependRight(content) { + this.intro = content + this.intro; + } + + reset() { + this.intro = ''; + this.outro = ''; + if (this.edited) { + this.content = this.original; + this.storeName = false; + this.edited = false; + } + } + + split(index) { + const sliceIndex = index - this.start; + + const originalBefore = this.original.slice(0, sliceIndex); + const originalAfter = this.original.slice(sliceIndex); + + this.original = originalBefore; + + const newChunk = new Chunk(index, this.end, originalAfter); + newChunk.outro = this.outro; + this.outro = ''; + + this.end = index; + + if (this.edited) { + // after split we should save the edit content record into the correct chunk + // to make sure sourcemap correct + // For example: + // ' test'.trim() + // split -> ' ' + 'test' + // ✔️ edit -> '' + 'test' + // ✖️ edit -> 'test' + '' + // TODO is this block necessary?... + newChunk.edit('', false); + this.content = ''; + } else { + this.content = originalBefore; + } + + newChunk.next = this.next; + if (newChunk.next) newChunk.next.previous = newChunk; + newChunk.previous = this; + this.next = newChunk; + + return newChunk; + } + + toString() { + return this.intro + this.content + this.outro; + } + + trimEnd(rx) { + this.outro = this.outro.replace(rx, ''); + if (this.outro.length) return true; + + const trimmed = this.content.replace(rx, ''); + + if (trimmed.length) { + if (trimmed !== this.content) { + this.split(this.start + trimmed.length).edit('', undefined, true); + if (this.edited) { + // save the change, if it has been edited + this.edit(trimmed, this.storeName, true); + } + } + return true; + } else { + this.edit('', undefined, true); + + this.intro = this.intro.replace(rx, ''); + if (this.intro.length) return true; + } + } + + trimStart(rx) { + this.intro = this.intro.replace(rx, ''); + if (this.intro.length) return true; + + const trimmed = this.content.replace(rx, ''); + + if (trimmed.length) { + if (trimmed !== this.content) { + const newChunk = this.split(this.end - trimmed.length); + if (this.edited) { + // save the change, if it has been edited + newChunk.edit(trimmed, this.storeName, true); + } + this.edit('', undefined, true); + } + return true; + } else { + this.edit('', undefined, true); + + this.outro = this.outro.replace(rx, ''); + if (this.outro.length) return true; + } + } +} + +function getBtoa() { + if (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') { + return (str) => globalThis.btoa(unescape(encodeURIComponent(str))); + } else if (typeof Buffer === 'function') { + return (str) => Buffer.from(str, 'utf-8').toString('base64'); + } else { + return () => { + throw new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.'); + }; + } +} + +const btoa = /*#__PURE__*/ getBtoa(); + +class SourceMap { + constructor(properties) { + this.version = 3; + this.file = properties.file; + this.sources = properties.sources; + this.sourcesContent = properties.sourcesContent; + this.names = properties.names; + this.mappings = sourcemapCodec.encode(properties.mappings); + if (typeof properties.x_google_ignoreList !== 'undefined') { + this.x_google_ignoreList = properties.x_google_ignoreList; + } + if (typeof properties.debugId !== 'undefined') { + this.debugId = properties.debugId; + } + } + + toString() { + return JSON.stringify(this); + } + + toUrl() { + return 'data:application/json;charset=utf-8;base64,' + btoa(this.toString()); + } +} + +function guessIndent(code) { + const lines = code.split('\n'); + + const tabbed = lines.filter((line) => /^\t+/.test(line)); + const spaced = lines.filter((line) => /^ {2,}/.test(line)); + + if (tabbed.length === 0 && spaced.length === 0) { + return null; + } + + // More lines tabbed than spaced? Assume tabs, and + // default to tabs in the case of a tie (or nothing + // to go on) + if (tabbed.length >= spaced.length) { + return '\t'; + } + + // Otherwise, we need to guess the multiple + const min = spaced.reduce((previous, current) => { + const numSpaces = /^ +/.exec(current)[0].length; + return Math.min(numSpaces, previous); + }, Infinity); + + return new Array(min + 1).join(' '); +} + +function getRelativePath(from, to) { + const fromParts = from.split(/[/\\]/); + const toParts = to.split(/[/\\]/); + + fromParts.pop(); // get dirname + + while (fromParts[0] === toParts[0]) { + fromParts.shift(); + toParts.shift(); + } + + if (fromParts.length) { + let i = fromParts.length; + while (i--) fromParts[i] = '..'; + } + + return fromParts.concat(toParts).join('/'); +} + +const toString = Object.prototype.toString; + +function isObject(thing) { + return toString.call(thing) === '[object Object]'; +} + +function getLocator(source) { + const originalLines = source.split('\n'); + const lineOffsets = []; + + for (let i = 0, pos = 0; i < originalLines.length; i++) { + lineOffsets.push(pos); + pos += originalLines[i].length + 1; + } + + return function locate(index) { + let i = 0; + let j = lineOffsets.length; + while (i < j) { + const m = (i + j) >> 1; + if (index < lineOffsets[m]) { + j = m; + } else { + i = m + 1; + } + } + const line = i - 1; + const column = index - lineOffsets[line]; + return { line, column }; + }; +} + +const wordRegex = /\w/; + +class Mappings { + constructor(hires) { + this.hires = hires; + this.generatedCodeLine = 0; + this.generatedCodeColumn = 0; + this.raw = []; + this.rawSegments = this.raw[this.generatedCodeLine] = []; + this.pending = null; + } + + addEdit(sourceIndex, content, loc, nameIndex) { + if (content.length) { + const contentLengthMinusOne = content.length - 1; + let contentLineEnd = content.indexOf('\n', 0); + let previousContentLineEnd = -1; + // Loop through each line in the content and add a segment, but stop if the last line is empty, + // else code afterwards would fill one line too many + while (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) { + const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + if (nameIndex >= 0) { + segment.push(nameIndex); + } + this.rawSegments.push(segment); + + this.generatedCodeLine += 1; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + this.generatedCodeColumn = 0; + + previousContentLineEnd = contentLineEnd; + contentLineEnd = content.indexOf('\n', contentLineEnd + 1); + } + + const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + if (nameIndex >= 0) { + segment.push(nameIndex); + } + this.rawSegments.push(segment); + + this.advance(content.slice(previousContentLineEnd + 1)); + } else if (this.pending) { + this.rawSegments.push(this.pending); + this.advance(content); + } + + this.pending = null; + } + + addUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) { + let originalCharIndex = chunk.start; + let first = true; + // when iterating each char, check if it's in a word boundary + let charInHiresBoundary = false; + + while (originalCharIndex < chunk.end) { + if (original[originalCharIndex] === '\n') { + loc.line += 1; + loc.column = 0; + this.generatedCodeLine += 1; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + this.generatedCodeColumn = 0; + first = true; + charInHiresBoundary = false; + } else { + if (this.hires || first || sourcemapLocations.has(originalCharIndex)) { + const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + + if (this.hires === 'boundary') { + // in hires "boundary", group segments per word boundary than per char + if (wordRegex.test(original[originalCharIndex])) { + // for first char in the boundary found, start the boundary by pushing a segment + if (!charInHiresBoundary) { + this.rawSegments.push(segment); + charInHiresBoundary = true; + } + } else { + // for non-word char, end the boundary by pushing a segment + this.rawSegments.push(segment); + charInHiresBoundary = false; + } + } else { + this.rawSegments.push(segment); + } + } + + loc.column += 1; + this.generatedCodeColumn += 1; + first = false; + } + + originalCharIndex += 1; + } + + this.pending = null; + } + + advance(str) { + if (!str) return; + + const lines = str.split('\n'); + + if (lines.length > 1) { + for (let i = 0; i < lines.length - 1; i++) { + this.generatedCodeLine++; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + } + this.generatedCodeColumn = 0; + } + + this.generatedCodeColumn += lines[lines.length - 1].length; + } +} + +const n = '\n'; + +const warned = { + insertLeft: false, + insertRight: false, + storeName: false, +}; + +class MagicString { + constructor(string, options = {}) { + const chunk = new Chunk(0, string.length, string); + + Object.defineProperties(this, { + original: { writable: true, value: string }, + outro: { writable: true, value: '' }, + intro: { writable: true, value: '' }, + firstChunk: { writable: true, value: chunk }, + lastChunk: { writable: true, value: chunk }, + lastSearchedChunk: { writable: true, value: chunk }, + byStart: { writable: true, value: {} }, + byEnd: { writable: true, value: {} }, + filename: { writable: true, value: options.filename }, + indentExclusionRanges: { writable: true, value: options.indentExclusionRanges }, + sourcemapLocations: { writable: true, value: new BitSet() }, + storedNames: { writable: true, value: {} }, + indentStr: { writable: true, value: undefined }, + ignoreList: { writable: true, value: options.ignoreList }, + offset: { writable: true, value: options.offset || 0 }, + }); + + this.byStart[0] = chunk; + this.byEnd[string.length] = chunk; + } + + addSourcemapLocation(char) { + this.sourcemapLocations.add(char); + } + + append(content) { + if (typeof content !== 'string') throw new TypeError('outro content must be a string'); + + this.outro += content; + return this; + } + + appendLeft(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byEnd[index]; + + if (chunk) { + chunk.appendLeft(content); + } else { + this.intro += content; + } + return this; + } + + appendRight(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byStart[index]; + + if (chunk) { + chunk.appendRight(content); + } else { + this.outro += content; + } + return this; + } + + clone() { + const cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset }); + + let originalChunk = this.firstChunk; + let clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone()); + + while (originalChunk) { + cloned.byStart[clonedChunk.start] = clonedChunk; + cloned.byEnd[clonedChunk.end] = clonedChunk; + + const nextOriginalChunk = originalChunk.next; + const nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone(); + + if (nextClonedChunk) { + clonedChunk.next = nextClonedChunk; + nextClonedChunk.previous = clonedChunk; + + clonedChunk = nextClonedChunk; + } + + originalChunk = nextOriginalChunk; + } + + cloned.lastChunk = clonedChunk; + + if (this.indentExclusionRanges) { + cloned.indentExclusionRanges = this.indentExclusionRanges.slice(); + } + + cloned.sourcemapLocations = new BitSet(this.sourcemapLocations); + + cloned.intro = this.intro; + cloned.outro = this.outro; + + return cloned; + } + + generateDecodedMap(options) { + options = options || {}; + + const sourceIndex = 0; + const names = Object.keys(this.storedNames); + const mappings = new Mappings(options.hires); + + const locate = getLocator(this.original); + + if (this.intro) { + mappings.advance(this.intro); + } + + this.firstChunk.eachNext((chunk) => { + const loc = locate(chunk.start); + + if (chunk.intro.length) mappings.advance(chunk.intro); + + if (chunk.edited) { + mappings.addEdit( + sourceIndex, + chunk.content, + loc, + chunk.storeName ? names.indexOf(chunk.original) : -1, + ); + } else { + mappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations); + } + + if (chunk.outro.length) mappings.advance(chunk.outro); + }); + + return { + file: options.file ? options.file.split(/[/\\]/).pop() : undefined, + sources: [ + options.source ? getRelativePath(options.file || '', options.source) : options.file || '', + ], + sourcesContent: options.includeContent ? [this.original] : undefined, + names, + mappings: mappings.raw, + x_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined, + }; + } + + generateMap(options) { + return new SourceMap(this.generateDecodedMap(options)); + } + + _ensureindentStr() { + if (this.indentStr === undefined) { + this.indentStr = guessIndent(this.original); + } + } + + _getRawIndentString() { + this._ensureindentStr(); + return this.indentStr; + } + + getIndentString() { + this._ensureindentStr(); + return this.indentStr === null ? '\t' : this.indentStr; + } + + indent(indentStr, options) { + const pattern = /^[^\r\n]/gm; + + if (isObject(indentStr)) { + options = indentStr; + indentStr = undefined; + } + + if (indentStr === undefined) { + this._ensureindentStr(); + indentStr = this.indentStr || '\t'; + } + + if (indentStr === '') return this; // noop + + options = options || {}; + + // Process exclusion ranges + const isExcluded = {}; + + if (options.exclude) { + const exclusions = + typeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude; + exclusions.forEach((exclusion) => { + for (let i = exclusion[0]; i < exclusion[1]; i += 1) { + isExcluded[i] = true; + } + }); + } + + let shouldIndentNextCharacter = options.indentStart !== false; + const replacer = (match) => { + if (shouldIndentNextCharacter) return `${indentStr}${match}`; + shouldIndentNextCharacter = true; + return match; + }; + + this.intro = this.intro.replace(pattern, replacer); + + let charIndex = 0; + let chunk = this.firstChunk; + + while (chunk) { + const end = chunk.end; + + if (chunk.edited) { + if (!isExcluded[charIndex]) { + chunk.content = chunk.content.replace(pattern, replacer); + + if (chunk.content.length) { + shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\n'; + } + } + } else { + charIndex = chunk.start; + + while (charIndex < end) { + if (!isExcluded[charIndex]) { + const char = this.original[charIndex]; + + if (char === '\n') { + shouldIndentNextCharacter = true; + } else if (char !== '\r' && shouldIndentNextCharacter) { + shouldIndentNextCharacter = false; + + if (charIndex === chunk.start) { + chunk.prependRight(indentStr); + } else { + this._splitChunk(chunk, charIndex); + chunk = chunk.next; + chunk.prependRight(indentStr); + } + } + } + + charIndex += 1; + } + } + + charIndex = chunk.end; + chunk = chunk.next; + } + + this.outro = this.outro.replace(pattern, replacer); + + return this; + } + + insert() { + throw new Error( + 'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)', + ); + } + + insertLeft(index, content) { + if (!warned.insertLeft) { + console.warn( + 'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead', + ); + warned.insertLeft = true; + } + + return this.appendLeft(index, content); + } + + insertRight(index, content) { + if (!warned.insertRight) { + console.warn( + 'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead', + ); + warned.insertRight = true; + } + + return this.prependRight(index, content); + } + + move(start, end, index) { + start = start + this.offset; + end = end + this.offset; + index = index + this.offset; + + if (index >= start && index <= end) throw new Error('Cannot move a selection inside itself'); + + this._split(start); + this._split(end); + this._split(index); + + const first = this.byStart[start]; + const last = this.byEnd[end]; + + const oldLeft = first.previous; + const oldRight = last.next; + + const newRight = this.byStart[index]; + if (!newRight && last === this.lastChunk) return this; + const newLeft = newRight ? newRight.previous : this.lastChunk; + + if (oldLeft) oldLeft.next = oldRight; + if (oldRight) oldRight.previous = oldLeft; + + if (newLeft) newLeft.next = first; + if (newRight) newRight.previous = last; + + if (!first.previous) this.firstChunk = last.next; + if (!last.next) { + this.lastChunk = first.previous; + this.lastChunk.next = null; + } + + first.previous = newLeft; + last.next = newRight || null; + + if (!newLeft) this.firstChunk = first; + if (!newRight) this.lastChunk = last; + return this; + } + + overwrite(start, end, content, options) { + options = options || {}; + return this.update(start, end, content, { ...options, overwrite: !options.contentOnly }); + } + + update(start, end, content, options) { + start = start + this.offset; + end = end + this.offset; + + if (typeof content !== 'string') throw new TypeError('replacement content must be a string'); + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + if (end > this.original.length) throw new Error('end is out of bounds'); + if (start === end) + throw new Error( + 'Cannot overwrite a zero-length range – use appendLeft or prependRight instead', + ); + + this._split(start); + this._split(end); + + if (options === true) { + if (!warned.storeName) { + console.warn( + 'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string', + ); + warned.storeName = true; + } + + options = { storeName: true }; + } + const storeName = options !== undefined ? options.storeName : false; + const overwrite = options !== undefined ? options.overwrite : false; + + if (storeName) { + const original = this.original.slice(start, end); + Object.defineProperty(this.storedNames, original, { + writable: true, + value: true, + enumerable: true, + }); + } + + const first = this.byStart[start]; + const last = this.byEnd[end]; + + if (first) { + let chunk = first; + while (chunk !== last) { + if (chunk.next !== this.byStart[chunk.end]) { + throw new Error('Cannot overwrite across a split point'); + } + chunk = chunk.next; + chunk.edit('', false); + } + + first.edit(content, storeName, !overwrite); + } else { + // must be inserting at the end + const newChunk = new Chunk(start, end, '').edit(content, storeName); + + // TODO last chunk in the array may not be the last chunk, if it's moved... + last.next = newChunk; + newChunk.previous = last; + } + return this; + } + + prepend(content) { + if (typeof content !== 'string') throw new TypeError('outro content must be a string'); + + this.intro = content + this.intro; + return this; + } + + prependLeft(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byEnd[index]; + + if (chunk) { + chunk.prependLeft(content); + } else { + this.intro = content + this.intro; + } + return this; + } + + prependRight(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byStart[index]; + + if (chunk) { + chunk.prependRight(content); + } else { + this.outro = content + this.outro; + } + return this; + } + + remove(start, end) { + start = start + this.offset; + end = end + this.offset; + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + if (start === end) return this; + + if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds'); + if (start > end) throw new Error('end must be greater than start'); + + this._split(start); + this._split(end); + + let chunk = this.byStart[start]; + + while (chunk) { + chunk.intro = ''; + chunk.outro = ''; + chunk.edit(''); + + chunk = end > chunk.end ? this.byStart[chunk.end] : null; + } + return this; + } + + reset(start, end) { + start = start + this.offset; + end = end + this.offset; + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + if (start === end) return this; + + if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds'); + if (start > end) throw new Error('end must be greater than start'); + + this._split(start); + this._split(end); + + let chunk = this.byStart[start]; + + while (chunk) { + chunk.reset(); + + chunk = end > chunk.end ? this.byStart[chunk.end] : null; + } + return this; + } + + lastChar() { + if (this.outro.length) return this.outro[this.outro.length - 1]; + let chunk = this.lastChunk; + do { + if (chunk.outro.length) return chunk.outro[chunk.outro.length - 1]; + if (chunk.content.length) return chunk.content[chunk.content.length - 1]; + if (chunk.intro.length) return chunk.intro[chunk.intro.length - 1]; + } while ((chunk = chunk.previous)); + if (this.intro.length) return this.intro[this.intro.length - 1]; + return ''; + } + + lastLine() { + let lineIndex = this.outro.lastIndexOf(n); + if (lineIndex !== -1) return this.outro.substr(lineIndex + 1); + let lineStr = this.outro; + let chunk = this.lastChunk; + do { + if (chunk.outro.length > 0) { + lineIndex = chunk.outro.lastIndexOf(n); + if (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr; + lineStr = chunk.outro + lineStr; + } + + if (chunk.content.length > 0) { + lineIndex = chunk.content.lastIndexOf(n); + if (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr; + lineStr = chunk.content + lineStr; + } + + if (chunk.intro.length > 0) { + lineIndex = chunk.intro.lastIndexOf(n); + if (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr; + lineStr = chunk.intro + lineStr; + } + } while ((chunk = chunk.previous)); + lineIndex = this.intro.lastIndexOf(n); + if (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr; + return this.intro + lineStr; + } + + slice(start = 0, end = this.original.length - this.offset) { + start = start + this.offset; + end = end + this.offset; + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + let result = ''; + + // find start chunk + let chunk = this.firstChunk; + while (chunk && (chunk.start > start || chunk.end <= start)) { + // found end chunk before start + if (chunk.start < end && chunk.end >= end) { + return result; + } + + chunk = chunk.next; + } + + if (chunk && chunk.edited && chunk.start !== start) + throw new Error(`Cannot use replaced character ${start} as slice start anchor.`); + + const startChunk = chunk; + while (chunk) { + if (chunk.intro && (startChunk !== chunk || chunk.start === start)) { + result += chunk.intro; + } + + const containsEnd = chunk.start < end && chunk.end >= end; + if (containsEnd && chunk.edited && chunk.end !== end) + throw new Error(`Cannot use replaced character ${end} as slice end anchor.`); + + const sliceStart = startChunk === chunk ? start - chunk.start : 0; + const sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length; + + result += chunk.content.slice(sliceStart, sliceEnd); + + if (chunk.outro && (!containsEnd || chunk.end === end)) { + result += chunk.outro; + } + + if (containsEnd) { + break; + } + + chunk = chunk.next; + } + + return result; + } + + // TODO deprecate this? not really very useful + snip(start, end) { + const clone = this.clone(); + clone.remove(0, start); + clone.remove(end, clone.original.length); + + return clone; + } + + _split(index) { + if (this.byStart[index] || this.byEnd[index]) return; + + let chunk = this.lastSearchedChunk; + const searchForward = index > chunk.end; + + while (chunk) { + if (chunk.contains(index)) return this._splitChunk(chunk, index); + + chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start]; + } + } + + _splitChunk(chunk, index) { + if (chunk.edited && chunk.content.length) { + // zero-length edited chunks are a special case (overlapping replacements) + const loc = getLocator(this.original)(index); + throw new Error( + `Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – "${chunk.original}")`, + ); + } + + const newChunk = chunk.split(index); + + this.byEnd[index] = chunk; + this.byStart[index] = newChunk; + this.byEnd[newChunk.end] = newChunk; + + if (chunk === this.lastChunk) this.lastChunk = newChunk; + + this.lastSearchedChunk = chunk; + return true; + } + + toString() { + let str = this.intro; + + let chunk = this.firstChunk; + while (chunk) { + str += chunk.toString(); + chunk = chunk.next; + } + + return str + this.outro; + } + + isEmpty() { + let chunk = this.firstChunk; + do { + if ( + (chunk.intro.length && chunk.intro.trim()) || + (chunk.content.length && chunk.content.trim()) || + (chunk.outro.length && chunk.outro.trim()) + ) + return false; + } while ((chunk = chunk.next)); + return true; + } + + length() { + let chunk = this.firstChunk; + let length = 0; + do { + length += chunk.intro.length + chunk.content.length + chunk.outro.length; + } while ((chunk = chunk.next)); + return length; + } + + trimLines() { + return this.trim('[\\r\\n]'); + } + + trim(charType) { + return this.trimStart(charType).trimEnd(charType); + } + + trimEndAborted(charType) { + const rx = new RegExp((charType || '\\s') + '+$'); + + this.outro = this.outro.replace(rx, ''); + if (this.outro.length) return true; + + let chunk = this.lastChunk; + + do { + const end = chunk.end; + const aborted = chunk.trimEnd(rx); + + // if chunk was trimmed, we have a new lastChunk + if (chunk.end !== end) { + if (this.lastChunk === chunk) { + this.lastChunk = chunk.next; + } + + this.byEnd[chunk.end] = chunk; + this.byStart[chunk.next.start] = chunk.next; + this.byEnd[chunk.next.end] = chunk.next; + } + + if (aborted) return true; + chunk = chunk.previous; + } while (chunk); + + return false; + } + + trimEnd(charType) { + this.trimEndAborted(charType); + return this; + } + trimStartAborted(charType) { + const rx = new RegExp('^' + (charType || '\\s') + '+'); + + this.intro = this.intro.replace(rx, ''); + if (this.intro.length) return true; + + let chunk = this.firstChunk; + + do { + const end = chunk.end; + const aborted = chunk.trimStart(rx); + + if (chunk.end !== end) { + // special case... + if (chunk === this.lastChunk) this.lastChunk = chunk.next; + + this.byEnd[chunk.end] = chunk; + this.byStart[chunk.next.start] = chunk.next; + this.byEnd[chunk.next.end] = chunk.next; + } + + if (aborted) return true; + chunk = chunk.next; + } while (chunk); + + return false; + } + + trimStart(charType) { + this.trimStartAborted(charType); + return this; + } + + hasChanged() { + return this.original !== this.toString(); + } + + _replaceRegexp(searchValue, replacement) { + function getReplacement(match, str) { + if (typeof replacement === 'string') { + return replacement.replace(/\$(\$|&|\d+)/g, (_, i) => { + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter + if (i === '$') return '$'; + if (i === '&') return match[0]; + const num = +i; + if (num < match.length) return match[+i]; + return `$${i}`; + }); + } else { + return replacement(...match, match.index, str, match.groups); + } + } + function matchAll(re, str) { + let match; + const matches = []; + while ((match = re.exec(str))) { + matches.push(match); + } + return matches; + } + if (searchValue.global) { + const matches = matchAll(searchValue, this.original); + matches.forEach((match) => { + if (match.index != null) { + const replacement = getReplacement(match, this.original); + if (replacement !== match[0]) { + this.overwrite(match.index, match.index + match[0].length, replacement); + } + } + }); + } else { + const match = this.original.match(searchValue); + if (match && match.index != null) { + const replacement = getReplacement(match, this.original); + if (replacement !== match[0]) { + this.overwrite(match.index, match.index + match[0].length, replacement); + } + } + } + return this; + } + + _replaceString(string, replacement) { + const { original } = this; + const index = original.indexOf(string); + + if (index !== -1) { + this.overwrite(index, index + string.length, replacement); + } + + return this; + } + + replace(searchValue, replacement) { + if (typeof searchValue === 'string') { + return this._replaceString(searchValue, replacement); + } + + return this._replaceRegexp(searchValue, replacement); + } + + _replaceAllString(string, replacement) { + const { original } = this; + const stringLength = string.length; + for ( + let index = original.indexOf(string); + index !== -1; + index = original.indexOf(string, index + stringLength) + ) { + const previous = original.slice(index, index + stringLength); + if (previous !== replacement) this.overwrite(index, index + stringLength, replacement); + } + + return this; + } + + replaceAll(searchValue, replacement) { + if (typeof searchValue === 'string') { + return this._replaceAllString(searchValue, replacement); + } + + if (!searchValue.global) { + throw new TypeError( + 'MagicString.prototype.replaceAll called with a non-global RegExp argument', + ); + } + + return this._replaceRegexp(searchValue, replacement); + } +} + +const hasOwnProp = Object.prototype.hasOwnProperty; + +class Bundle { + constructor(options = {}) { + this.intro = options.intro || ''; + this.separator = options.separator !== undefined ? options.separator : '\n'; + this.sources = []; + this.uniqueSources = []; + this.uniqueSourceIndexByFilename = {}; + } + + addSource(source) { + if (source instanceof MagicString) { + return this.addSource({ + content: source, + filename: source.filename, + separator: this.separator, + }); + } + + if (!isObject(source) || !source.content) { + throw new Error( + 'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`', + ); + } + + ['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => { + if (!hasOwnProp.call(source, option)) source[option] = source.content[option]; + }); + + if (source.separator === undefined) { + // TODO there's a bunch of this sort of thing, needs cleaning up + source.separator = this.separator; + } + + if (source.filename) { + if (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) { + this.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length; + this.uniqueSources.push({ filename: source.filename, content: source.content.original }); + } else { + const uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]]; + if (source.content.original !== uniqueSource.content) { + throw new Error(`Illegal source: same filename (${source.filename}), different contents`); + } + } + } + + this.sources.push(source); + return this; + } + + append(str, options) { + this.addSource({ + content: new MagicString(str), + separator: (options && options.separator) || '', + }); + + return this; + } + + clone() { + const bundle = new Bundle({ + intro: this.intro, + separator: this.separator, + }); + + this.sources.forEach((source) => { + bundle.addSource({ + filename: source.filename, + content: source.content.clone(), + separator: source.separator, + }); + }); + + return bundle; + } + + generateDecodedMap(options = {}) { + const names = []; + let x_google_ignoreList = undefined; + this.sources.forEach((source) => { + Object.keys(source.content.storedNames).forEach((name) => { + if (!~names.indexOf(name)) names.push(name); + }); + }); + + const mappings = new Mappings(options.hires); + + if (this.intro) { + mappings.advance(this.intro); + } + + this.sources.forEach((source, i) => { + if (i > 0) { + mappings.advance(this.separator); + } + + const sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1; + const magicString = source.content; + const locate = getLocator(magicString.original); + + if (magicString.intro) { + mappings.advance(magicString.intro); + } + + magicString.firstChunk.eachNext((chunk) => { + const loc = locate(chunk.start); + + if (chunk.intro.length) mappings.advance(chunk.intro); + + if (source.filename) { + if (chunk.edited) { + mappings.addEdit( + sourceIndex, + chunk.content, + loc, + chunk.storeName ? names.indexOf(chunk.original) : -1, + ); + } else { + mappings.addUneditedChunk( + sourceIndex, + chunk, + magicString.original, + loc, + magicString.sourcemapLocations, + ); + } + } else { + mappings.advance(chunk.content); + } + + if (chunk.outro.length) mappings.advance(chunk.outro); + }); + + if (magicString.outro) { + mappings.advance(magicString.outro); + } + + if (source.ignoreList && sourceIndex !== -1) { + if (x_google_ignoreList === undefined) { + x_google_ignoreList = []; + } + x_google_ignoreList.push(sourceIndex); + } + }); + + return { + file: options.file ? options.file.split(/[/\\]/).pop() : undefined, + sources: this.uniqueSources.map((source) => { + return options.file ? getRelativePath(options.file, source.filename) : source.filename; + }), + sourcesContent: this.uniqueSources.map((source) => { + return options.includeContent ? source.content : null; + }), + names, + mappings: mappings.raw, + x_google_ignoreList, + }; + } + + generateMap(options) { + return new SourceMap(this.generateDecodedMap(options)); + } + + getIndentString() { + const indentStringCounts = {}; + + this.sources.forEach((source) => { + const indentStr = source.content._getRawIndentString(); + + if (indentStr === null) return; + + if (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0; + indentStringCounts[indentStr] += 1; + }); + + return ( + Object.keys(indentStringCounts).sort((a, b) => { + return indentStringCounts[a] - indentStringCounts[b]; + })[0] || '\t' + ); + } + + indent(indentStr) { + if (!arguments.length) { + indentStr = this.getIndentString(); + } + + if (indentStr === '') return this; // noop + + let trailingNewline = !this.intro || this.intro.slice(-1) === '\n'; + + this.sources.forEach((source, i) => { + const separator = source.separator !== undefined ? source.separator : this.separator; + const indentStart = trailingNewline || (i > 0 && /\r?\n$/.test(separator)); + + source.content.indent(indentStr, { + exclude: source.indentExclusionRanges, + indentStart, //: trailingNewline || /\r?\n$/.test( separator ) //true///\r?\n/.test( separator ) + }); + + trailingNewline = source.content.lastChar() === '\n'; + }); + + if (this.intro) { + this.intro = + indentStr + + this.intro.replace(/^[^\n]/gm, (match, index) => { + return index > 0 ? indentStr + match : match; + }); + } + + return this; + } + + prepend(str) { + this.intro = str + this.intro; + return this; + } + + toString() { + const body = this.sources + .map((source, i) => { + const separator = source.separator !== undefined ? source.separator : this.separator; + const str = (i > 0 ? separator : '') + source.content.toString(); + + return str; + }) + .join(''); + + return this.intro + body; + } + + isEmpty() { + if (this.intro.length && this.intro.trim()) return false; + if (this.sources.some((source) => !source.content.isEmpty())) return false; + return true; + } + + length() { + return this.sources.reduce( + (length, source) => length + source.content.length(), + this.intro.length, + ); + } + + trimLines() { + return this.trim('[\\r\\n]'); + } + + trim(charType) { + return this.trimStart(charType).trimEnd(charType); + } + + trimStart(charType) { + const rx = new RegExp('^' + (charType || '\\s') + '+'); + this.intro = this.intro.replace(rx, ''); + + if (!this.intro) { + let source; + let i = 0; + + do { + source = this.sources[i++]; + if (!source) { + break; + } + } while (!source.content.trimStartAborted(charType)); + } + + return this; + } + + trimEnd(charType) { + const rx = new RegExp((charType || '\\s') + '+$'); + + let source; + let i = this.sources.length - 1; + + do { + source = this.sources[i--]; + if (!source) { + this.intro = this.intro.replace(rx, ''); + break; + } + } while (!source.content.trimEndAborted(charType)); + + return this; + } +} + +MagicString.Bundle = Bundle; +MagicString.SourceMap = SourceMap; +MagicString.default = MagicString; // work around TypeScript bug https://github.com/Rich-Harris/magic-string/pull/121 + +module.exports = MagicString; +//# sourceMappingURL=magic-string.cjs.js.map diff --git a/node_modules/magic-string/dist/magic-string.cjs.js.map b/node_modules/magic-string/dist/magic-string.cjs.js.map new file mode 100644 index 0000000..e8df93f --- /dev/null +++ b/node_modules/magic-string/dist/magic-string.cjs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"magic-string.cjs.js","sources":["../src/BitSet.js","../src/Chunk.js","../src/SourceMap.js","../src/utils/guessIndent.js","../src/utils/getRelativePath.js","../src/utils/isObject.js","../src/utils/getLocator.js","../src/utils/Mappings.js","../src/MagicString.js","../src/Bundle.js","../src/index-legacy.js"],"sourcesContent":["export default class BitSet {\n\tconstructor(arg) {\n\t\tthis.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n\t}\n\n\tadd(n) {\n\t\tthis.bits[n >> 5] |= 1 << (n & 31);\n\t}\n\n\thas(n) {\n\t\treturn !!(this.bits[n >> 5] & (1 << (n & 31)));\n\t}\n}\n","export default class Chunk {\n\tconstructor(start, end, content) {\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.original = content;\n\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\n\t\tthis.content = content;\n\t\tthis.storeName = false;\n\t\tthis.edited = false;\n\n\t\tif (DEBUG) {\n\t\t\t// we make these non-enumerable, for sanity while debugging\n\t\t\tObject.defineProperties(this, {\n\t\t\t\tprevious: { writable: true, value: null },\n\t\t\t\tnext: { writable: true, value: null },\n\t\t\t});\n\t\t} else {\n\t\t\tthis.previous = null;\n\t\t\tthis.next = null;\n\t\t}\n\t}\n\n\tappendLeft(content) {\n\t\tthis.outro += content;\n\t}\n\n\tappendRight(content) {\n\t\tthis.intro = this.intro + content;\n\t}\n\n\tclone() {\n\t\tconst chunk = new Chunk(this.start, this.end, this.original);\n\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\n\t\treturn chunk;\n\t}\n\n\tcontains(index) {\n\t\treturn this.start < index && index < this.end;\n\t}\n\n\teachNext(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.next;\n\t\t}\n\t}\n\n\teachPrevious(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t}\n\n\tedit(content, storeName, contentOnly) {\n\t\tthis.content = content;\n\t\tif (!contentOnly) {\n\t\t\tthis.intro = '';\n\t\t\tthis.outro = '';\n\t\t}\n\t\tthis.storeName = storeName;\n\n\t\tthis.edited = true;\n\n\t\treturn this;\n\t}\n\n\tprependLeft(content) {\n\t\tthis.outro = content + this.outro;\n\t}\n\n\tprependRight(content) {\n\t\tthis.intro = content + this.intro;\n\t}\n\n\treset() {\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t\tif (this.edited) {\n\t\t\tthis.content = this.original;\n\t\t\tthis.storeName = false;\n\t\t\tthis.edited = false;\n\t\t}\n\t}\n\n\tsplit(index) {\n\t\tconst sliceIndex = index - this.start;\n\n\t\tconst originalBefore = this.original.slice(0, sliceIndex);\n\t\tconst originalAfter = this.original.slice(sliceIndex);\n\n\t\tthis.original = originalBefore;\n\n\t\tconst newChunk = new Chunk(index, this.end, originalAfter);\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = '';\n\n\t\tthis.end = index;\n\n\t\tif (this.edited) {\n\t\t\t// after split we should save the edit content record into the correct chunk\n\t\t\t// to make sure sourcemap correct\n\t\t\t// For example:\n\t\t\t// ' test'.trim()\n\t\t\t// split -> ' ' + 'test'\n\t\t\t// ✔️ edit -> '' + 'test'\n\t\t\t// ✖️ edit -> 'test' + ''\n\t\t\t// TODO is this block necessary?...\n\t\t\tnewChunk.edit('', false);\n\t\t\tthis.content = '';\n\t\t} else {\n\t\t\tthis.content = originalBefore;\n\t\t}\n\n\t\tnewChunk.next = this.next;\n\t\tif (newChunk.next) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\n\t\treturn newChunk;\n\t}\n\n\ttoString() {\n\t\treturn this.intro + this.content + this.outro;\n\t}\n\n\ttrimEnd(rx) {\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tthis.split(this.start + trimmed.length).edit('', undefined, true);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tthis.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\tif (this.intro.length) return true;\n\t\t}\n\t}\n\n\ttrimStart(rx) {\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tconst newChunk = this.split(this.end - trimmed.length);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tnewChunk.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t\tthis.edit('', undefined, true);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.outro = this.outro.replace(rx, '');\n\t\t\tif (this.outro.length) return true;\n\t\t}\n\t}\n}\n","import { encode } from '@jridgewell/sourcemap-codec';\n\nfunction getBtoa() {\n\tif (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {\n\t\treturn (str) => globalThis.btoa(unescape(encodeURIComponent(str)));\n\t} else if (typeof Buffer === 'function') {\n\t\treturn (str) => Buffer.from(str, 'utf-8').toString('base64');\n\t} else {\n\t\treturn () => {\n\t\t\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n\t\t};\n\t}\n}\n\nconst btoa = /*#__PURE__*/ getBtoa();\n\nexport default class SourceMap {\n\tconstructor(properties) {\n\t\tthis.version = 3;\n\t\tthis.file = properties.file;\n\t\tthis.sources = properties.sources;\n\t\tthis.sourcesContent = properties.sourcesContent;\n\t\tthis.names = properties.names;\n\t\tthis.mappings = encode(properties.mappings);\n\t\tif (typeof properties.x_google_ignoreList !== 'undefined') {\n\t\t\tthis.x_google_ignoreList = properties.x_google_ignoreList;\n\t\t}\n\t\tif (typeof properties.debugId !== 'undefined') {\n\t\t\tthis.debugId = properties.debugId;\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn JSON.stringify(this);\n\t}\n\n\ttoUrl() {\n\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n\t}\n}\n","export default function guessIndent(code) {\n\tconst lines = code.split('\\n');\n\n\tconst tabbed = lines.filter((line) => /^\\t+/.test(line));\n\tconst spaced = lines.filter((line) => /^ {2,}/.test(line));\n\n\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif (tabbed.length >= spaced.length) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tconst min = spaced.reduce((previous, current) => {\n\t\tconst numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\n\treturn new Array(min + 1).join(' ');\n}\n","export default function getRelativePath(from, to) {\n\tconst fromParts = from.split(/[/\\\\]/);\n\tconst toParts = to.split(/[/\\\\]/);\n\n\tfromParts.pop(); // get dirname\n\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif (fromParts.length) {\n\t\tlet i = fromParts.length;\n\t\twhile (i--) fromParts[i] = '..';\n\t}\n\n\treturn fromParts.concat(toParts).join('/');\n}\n","const toString = Object.prototype.toString;\n\nexport default function isObject(thing) {\n\treturn toString.call(thing) === '[object Object]';\n}\n","export default function getLocator(source) {\n\tconst originalLines = source.split('\\n');\n\tconst lineOffsets = [];\n\n\tfor (let i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\n\treturn function locate(index) {\n\t\tlet i = 0;\n\t\tlet j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tconst m = (i + j) >> 1;\n\t\t\tif (index < lineOffsets[m]) {\n\t\t\t\tj = m;\n\t\t\t} else {\n\t\t\t\ti = m + 1;\n\t\t\t}\n\t\t}\n\t\tconst line = i - 1;\n\t\tconst column = index - lineOffsets[line];\n\t\treturn { line, column };\n\t};\n}\n","const wordRegex = /\\w/;\n\nexport default class Mappings {\n\tconstructor(hires) {\n\t\tthis.hires = hires;\n\t\tthis.generatedCodeLine = 0;\n\t\tthis.generatedCodeColumn = 0;\n\t\tthis.raw = [];\n\t\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\t\tthis.pending = null;\n\t}\n\n\taddEdit(sourceIndex, content, loc, nameIndex) {\n\t\tif (content.length) {\n\t\t\tconst contentLengthMinusOne = content.length - 1;\n\t\t\tlet contentLineEnd = content.indexOf('\\n', 0);\n\t\t\tlet previousContentLineEnd = -1;\n\t\t\t// Loop through each line in the content and add a segment, but stop if the last line is empty,\n\t\t\t// else code afterwards would fill one line too many\n\t\t\twhile (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {\n\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\t\tif (nameIndex >= 0) {\n\t\t\t\t\tsegment.push(nameIndex);\n\t\t\t\t}\n\t\t\t\tthis.rawSegments.push(segment);\n\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\n\t\t\t\tpreviousContentLineEnd = contentLineEnd;\n\t\t\t\tcontentLineEnd = content.indexOf('\\n', contentLineEnd + 1);\n\t\t\t}\n\n\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\tif (nameIndex >= 0) {\n\t\t\t\tsegment.push(nameIndex);\n\t\t\t}\n\t\t\tthis.rawSegments.push(segment);\n\n\t\t\tthis.advance(content.slice(previousContentLineEnd + 1));\n\t\t} else if (this.pending) {\n\t\t\tthis.rawSegments.push(this.pending);\n\t\t\tthis.advance(content);\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\taddUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n\t\tlet originalCharIndex = chunk.start;\n\t\tlet first = true;\n\t\t// when iterating each char, check if it's in a word boundary\n\t\tlet charInHiresBoundary = false;\n\n\t\twhile (originalCharIndex < chunk.end) {\n\t\t\tif (original[originalCharIndex] === '\\n') {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tfirst = true;\n\t\t\t\tcharInHiresBoundary = false;\n\t\t\t} else {\n\t\t\t\tif (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n\t\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\n\t\t\t\t\tif (this.hires === 'boundary') {\n\t\t\t\t\t\t// in hires \"boundary\", group segments per word boundary than per char\n\t\t\t\t\t\tif (wordRegex.test(original[originalCharIndex])) {\n\t\t\t\t\t\t\t// for first char in the boundary found, start the boundary by pushing a segment\n\t\t\t\t\t\t\tif (!charInHiresBoundary) {\n\t\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\t\tcharInHiresBoundary = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// for non-word char, end the boundary by pushing a segment\n\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\tcharInHiresBoundary = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tloc.column += 1;\n\t\t\t\tthis.generatedCodeColumn += 1;\n\t\t\t\tfirst = false;\n\t\t\t}\n\n\t\t\toriginalCharIndex += 1;\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\tadvance(str) {\n\t\tif (!str) return;\n\n\t\tconst lines = str.split('\\n');\n\n\t\tif (lines.length > 1) {\n\t\t\tfor (let i = 0; i < lines.length - 1; i++) {\n\t\t\t\tthis.generatedCodeLine++;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t}\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t}\n\n\t\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n\t}\n}\n","import BitSet from './BitSet.js';\nimport Chunk from './Chunk.js';\nimport SourceMap from './SourceMap.js';\nimport guessIndent from './utils/guessIndent.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\nimport Stats from './utils/Stats.js';\n\nconst n = '\\n';\n\nconst warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false,\n};\n\nexport default class MagicString {\n\tconstructor(string, options = {}) {\n\t\tconst chunk = new Chunk(0, string.length, string);\n\n\t\tObject.defineProperties(this, {\n\t\t\toriginal: { writable: true, value: string },\n\t\t\toutro: { writable: true, value: '' },\n\t\t\tintro: { writable: true, value: '' },\n\t\t\tfirstChunk: { writable: true, value: chunk },\n\t\t\tlastChunk: { writable: true, value: chunk },\n\t\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\t\tbyStart: { writable: true, value: {} },\n\t\t\tbyEnd: { writable: true, value: {} },\n\t\t\tfilename: { writable: true, value: options.filename },\n\t\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\t\tsourcemapLocations: { writable: true, value: new BitSet() },\n\t\t\tstoredNames: { writable: true, value: {} },\n\t\t\tindentStr: { writable: true, value: undefined },\n\t\t\tignoreList: { writable: true, value: options.ignoreList },\n\t\t\toffset: { writable: true, value: options.offset || 0 },\n\t\t});\n\n\t\tif (DEBUG) {\n\t\t\tObject.defineProperty(this, 'stats', { value: new Stats() });\n\t\t}\n\n\t\tthis.byStart[0] = chunk;\n\t\tthis.byEnd[string.length] = chunk;\n\t}\n\n\taddSourcemapLocation(char) {\n\t\tthis.sourcemapLocations.add(char);\n\t}\n\n\tappend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.outro += content;\n\t\treturn this;\n\t}\n\n\tappendLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendLeft');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendLeft(content);\n\t\t} else {\n\t\t\tthis.intro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendLeft');\n\t\treturn this;\n\t}\n\n\tappendRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendRight(content);\n\t\t} else {\n\t\t\tthis.outro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendRight');\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });\n\n\t\tlet originalChunk = this.firstChunk;\n\t\tlet clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());\n\n\t\twhile (originalChunk) {\n\t\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\n\t\t\tconst nextOriginalChunk = originalChunk.next;\n\t\t\tconst nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\t\tif (nextClonedChunk) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\n\t\tcloned.lastChunk = clonedChunk;\n\n\t\tif (this.indentExclusionRanges) {\n\t\t\tcloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t\t}\n\n\t\tcloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n\n\t\tcloned.intro = this.intro;\n\t\tcloned.outro = this.outro;\n\n\t\treturn cloned;\n\t}\n\n\tgenerateDecodedMap(options) {\n\t\toptions = options || {};\n\n\t\tconst sourceIndex = 0;\n\t\tconst names = Object.keys(this.storedNames);\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tconst locate = getLocator(this.original);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.firstChunk.eachNext((chunk) => {\n\t\t\tconst loc = locate(chunk.start);\n\n\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tmappings.addEdit(\n\t\t\t\t\tsourceIndex,\n\t\t\t\t\tchunk.content,\n\t\t\t\t\tloc,\n\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tmappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);\n\t\t\t}\n\n\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: [\n\t\t\t\toptions.source ? getRelativePath(options.file || '', options.source) : options.file || '',\n\t\t\t],\n\t\t\tsourcesContent: options.includeContent ? [this.original] : undefined,\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\t_ensureindentStr() {\n\t\tif (this.indentStr === undefined) {\n\t\t\tthis.indentStr = guessIndent(this.original);\n\t\t}\n\t}\n\n\t_getRawIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr;\n\t}\n\n\tgetIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t}\n\n\tindent(indentStr, options) {\n\t\tconst pattern = /^[^\\r\\n]/gm;\n\n\t\tif (isObject(indentStr)) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = undefined;\n\t\t}\n\n\t\tif (indentStr === undefined) {\n\t\t\tthis._ensureindentStr();\n\t\t\tindentStr = this.indentStr || '\\t';\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\toptions = options || {};\n\n\t\t// Process exclusion ranges\n\t\tconst isExcluded = {};\n\n\t\tif (options.exclude) {\n\t\t\tconst exclusions =\n\t\t\t\ttypeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\t\t\texclusions.forEach((exclusion) => {\n\t\t\t\tfor (let i = exclusion[0]; i < exclusion[1]; i += 1) {\n\t\t\t\t\tisExcluded[i] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tlet shouldIndentNextCharacter = options.indentStart !== false;\n\t\tconst replacer = (match) => {\n\t\t\tif (shouldIndentNextCharacter) return `${indentStr}${match}`;\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\n\t\tthis.intro = this.intro.replace(pattern, replacer);\n\n\t\tlet charIndex = 0;\n\t\tlet chunk = this.firstChunk;\n\n\t\twhile (chunk) {\n\t\t\tconst end = chunk.end;\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\n\t\t\t\t\tif (chunk.content.length) {\n\t\t\t\t\t\tshouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\n\t\t\t\twhile (charIndex < end) {\n\t\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\t\tconst char = this.original[charIndex];\n\n\t\t\t\t\t\tif (char === '\\n') {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\t} else if (char !== '\\r' && shouldIndentNextCharacter) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\t\tif (charIndex === chunk.start) {\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tthis.outro = this.outro.replace(pattern, replacer);\n\n\t\treturn this;\n\t}\n\n\tinsert() {\n\t\tthrow new Error(\n\t\t\t'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)',\n\t\t);\n\t}\n\n\tinsertLeft(index, content) {\n\t\tif (!warned.insertLeft) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',\n\t\t\t);\n\t\t\twarned.insertLeft = true;\n\t\t}\n\n\t\treturn this.appendLeft(index, content);\n\t}\n\n\tinsertRight(index, content) {\n\t\tif (!warned.insertRight) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',\n\t\t\t);\n\t\t\twarned.insertRight = true;\n\t\t}\n\n\t\treturn this.prependRight(index, content);\n\t}\n\n\tmove(start, end, index) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tindex = index + this.offset;\n\n\t\tif (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');\n\n\t\tif (DEBUG) this.stats.time('move');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tthis._split(index);\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tconst oldLeft = first.previous;\n\t\tconst oldRight = last.next;\n\n\t\tconst newRight = this.byStart[index];\n\t\tif (!newRight && last === this.lastChunk) return this;\n\t\tconst newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\t\tif (oldLeft) oldLeft.next = oldRight;\n\t\tif (oldRight) oldRight.previous = oldLeft;\n\n\t\tif (newLeft) newLeft.next = first;\n\t\tif (newRight) newRight.previous = last;\n\n\t\tif (!first.previous) this.firstChunk = last.next;\n\t\tif (!last.next) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight || null;\n\n\t\tif (!newLeft) this.firstChunk = first;\n\t\tif (!newRight) this.lastChunk = last;\n\n\t\tif (DEBUG) this.stats.timeEnd('move');\n\t\treturn this;\n\t}\n\n\toverwrite(start, end, content, options) {\n\t\toptions = options || {};\n\t\treturn this.update(start, end, content, { ...options, overwrite: !options.contentOnly });\n\t}\n\n\tupdate(start, end, content, options) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('replacement content must be a string');\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (end > this.original.length) throw new Error('end is out of bounds');\n\t\tif (start === end)\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot overwrite a zero-length range – use appendLeft or prependRight instead',\n\t\t\t);\n\n\t\tif (DEBUG) this.stats.time('overwrite');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tif (options === true) {\n\t\t\tif (!warned.storeName) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',\n\t\t\t\t);\n\t\t\t\twarned.storeName = true;\n\t\t\t}\n\n\t\t\toptions = { storeName: true };\n\t\t}\n\t\tconst storeName = options !== undefined ? options.storeName : false;\n\t\tconst overwrite = options !== undefined ? options.overwrite : false;\n\n\t\tif (storeName) {\n\t\t\tconst original = this.original.slice(start, end);\n\t\t\tObject.defineProperty(this.storedNames, original, {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: true,\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t}\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tif (first) {\n\t\t\tlet chunk = first;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tif (chunk.next !== this.byStart[chunk.end]) {\n\t\t\t\t\tthrow new Error('Cannot overwrite across a split point');\n\t\t\t\t}\n\t\t\t\tchunk = chunk.next;\n\t\t\t\tchunk.edit('', false);\n\t\t\t}\n\n\t\t\tfirst.edit(content, storeName, !overwrite);\n\t\t} else {\n\t\t\t// must be inserting at the end\n\t\t\tconst newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n\t\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('overwrite');\n\t\treturn this;\n\t}\n\n\tprepend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t}\n\n\tprependLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependLeft(content);\n\t\t} else {\n\t\t\tthis.intro = content + this.intro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tprependRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependRight(content);\n\t\t} else {\n\t\t\tthis.outro = content + this.outro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tremove(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('remove');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.intro = '';\n\t\t\tchunk.outro = '';\n\t\t\tchunk.edit('');\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('remove');\n\t\treturn this;\n\t}\n\n\treset(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('reset');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.reset();\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('reset');\n\t\treturn this;\n\t}\n\n\tlastChar() {\n\t\tif (this.outro.length) return this.outro[this.outro.length - 1];\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];\n\t\t\tif (chunk.content.length) return chunk.content[chunk.content.length - 1];\n\t\t\tif (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];\n\t\t} while ((chunk = chunk.previous));\n\t\tif (this.intro.length) return this.intro[this.intro.length - 1];\n\t\treturn '';\n\t}\n\n\tlastLine() {\n\t\tlet lineIndex = this.outro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.outro.substr(lineIndex + 1);\n\t\tlet lineStr = this.outro;\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length > 0) {\n\t\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.outro + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.content.length > 0) {\n\t\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.content + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.intro.length > 0) {\n\t\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.intro + lineStr;\n\t\t\t}\n\t\t} while ((chunk = chunk.previous));\n\t\tlineIndex = this.intro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;\n\t\treturn this.intro + lineStr;\n\t}\n\n\tslice(start = 0, end = this.original.length - this.offset) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tlet result = '';\n\n\t\t// find start chunk\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t\t// found end chunk before start\n\t\t\tif (chunk.start < end && chunk.end >= end) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tif (chunk && chunk.edited && chunk.start !== start)\n\t\t\tthrow new Error(`Cannot use replaced character ${start} as slice start anchor.`);\n\n\t\tconst startChunk = chunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n\t\t\t\tresult += chunk.intro;\n\t\t\t}\n\n\t\t\tconst containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif (containsEnd && chunk.edited && chunk.end !== end)\n\t\t\t\tthrow new Error(`Cannot use replaced character ${end} as slice end anchor.`);\n\n\t\t\tconst sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tconst sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\n\t\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) {\n\t\t\t\tresult += chunk.outro;\n\t\t\t}\n\n\t\t\tif (containsEnd) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// TODO deprecate this? not really very useful\n\tsnip(start, end) {\n\t\tconst clone = this.clone();\n\t\tclone.remove(0, start);\n\t\tclone.remove(end, clone.original.length);\n\n\t\treturn clone;\n\t}\n\n\t_split(index) {\n\t\tif (this.byStart[index] || this.byEnd[index]) return;\n\n\t\tif (DEBUG) this.stats.time('_split');\n\n\t\tlet chunk = this.lastSearchedChunk;\n\t\tconst searchForward = index > chunk.end;\n\n\t\twhile (chunk) {\n\t\t\tif (chunk.contains(index)) return this._splitChunk(chunk, index);\n\n\t\t\tchunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n\t\t}\n\t}\n\n\t_splitChunk(chunk, index) {\n\t\tif (chunk.edited && chunk.content.length) {\n\t\t\t// zero-length edited chunks are a special case (overlapping replacements)\n\t\t\tconst loc = getLocator(this.original)(index);\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – \"${chunk.original}\")`,\n\t\t\t);\n\t\t}\n\n\t\tconst newChunk = chunk.split(index);\n\n\t\tthis.byEnd[index] = chunk;\n\t\tthis.byStart[index] = newChunk;\n\t\tthis.byEnd[newChunk.end] = newChunk;\n\n\t\tif (chunk === this.lastChunk) this.lastChunk = newChunk;\n\n\t\tthis.lastSearchedChunk = chunk;\n\t\tif (DEBUG) this.stats.timeEnd('_split');\n\t\treturn true;\n\t}\n\n\ttoString() {\n\t\tlet str = this.intro;\n\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn str + this.outro;\n\t}\n\n\tisEmpty() {\n\t\tlet chunk = this.firstChunk;\n\t\tdo {\n\t\t\tif (\n\t\t\t\t(chunk.intro.length && chunk.intro.trim()) ||\n\t\t\t\t(chunk.content.length && chunk.content.trim()) ||\n\t\t\t\t(chunk.outro.length && chunk.outro.trim())\n\t\t\t)\n\t\t\t\treturn false;\n\t\t} while ((chunk = chunk.next));\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\tlet chunk = this.firstChunk;\n\t\tlet length = 0;\n\t\tdo {\n\t\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t\t} while ((chunk = chunk.next));\n\t\treturn length;\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimEndAborted(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tlet chunk = this.lastChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimEnd(rx);\n\n\t\t\t// if chunk was trimmed, we have a new lastChunk\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (this.lastChunk === chunk) {\n\t\t\t\t\tthis.lastChunk = chunk.next;\n\t\t\t\t}\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.previous;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimEnd(charType) {\n\t\tthis.trimEndAborted(charType);\n\t\treturn this;\n\t}\n\ttrimStartAborted(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tlet chunk = this.firstChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimStart(rx);\n\n\t\t\tif (chunk.end !== end) {\n\t\t\t\t// special case...\n\t\t\t\tif (chunk === this.lastChunk) this.lastChunk = chunk.next;\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.next;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimStart(charType) {\n\t\tthis.trimStartAborted(charType);\n\t\treturn this;\n\t}\n\n\thasChanged() {\n\t\treturn this.original !== this.toString();\n\t}\n\n\t_replaceRegexp(searchValue, replacement) {\n\t\tfunction getReplacement(match, str) {\n\t\t\tif (typeof replacement === 'string') {\n\t\t\t\treturn replacement.replace(/\\$(\\$|&|\\d+)/g, (_, i) => {\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter\n\t\t\t\t\tif (i === '$') return '$';\n\t\t\t\t\tif (i === '&') return match[0];\n\t\t\t\t\tconst num = +i;\n\t\t\t\t\tif (num < match.length) return match[+i];\n\t\t\t\t\treturn `$${i}`;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn replacement(...match, match.index, str, match.groups);\n\t\t\t}\n\t\t}\n\t\tfunction matchAll(re, str) {\n\t\t\tlet match;\n\t\t\tconst matches = [];\n\t\t\twhile ((match = re.exec(str))) {\n\t\t\t\tmatches.push(match);\n\t\t\t}\n\t\t\treturn matches;\n\t\t}\n\t\tif (searchValue.global) {\n\t\t\tconst matches = matchAll(searchValue, this.original);\n\t\t\tmatches.forEach((match) => {\n\t\t\t\tif (match.index != null) {\n\t\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst match = this.original.match(searchValue);\n\t\t\tif (match && match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t_replaceString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst index = original.indexOf(string);\n\n\t\tif (index !== -1) {\n\t\t\tthis.overwrite(index, index + string.length, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplace(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceString(searchValue, replacement);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n\n\t_replaceAllString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst stringLength = string.length;\n\t\tfor (\n\t\t\tlet index = original.indexOf(string);\n\t\t\tindex !== -1;\n\t\t\tindex = original.indexOf(string, index + stringLength)\n\t\t) {\n\t\t\tconst previous = original.slice(index, index + stringLength);\n\t\t\tif (previous !== replacement) this.overwrite(index, index + stringLength, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplaceAll(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceAllString(searchValue, replacement);\n\t\t}\n\n\t\tif (!searchValue.global) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'MagicString.prototype.replaceAll called with a non-global RegExp argument',\n\t\t\t);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n}\n","import MagicString from './MagicString.js';\nimport SourceMap from './SourceMap.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\n\nconst hasOwnProp = Object.prototype.hasOwnProperty;\n\nexport default class Bundle {\n\tconstructor(options = {}) {\n\t\tthis.intro = options.intro || '';\n\t\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\t\tthis.sources = [];\n\t\tthis.uniqueSources = [];\n\t\tthis.uniqueSourceIndexByFilename = {};\n\t}\n\n\taddSource(source) {\n\t\tif (source instanceof MagicString) {\n\t\t\treturn this.addSource({\n\t\t\t\tcontent: source,\n\t\t\t\tfilename: source.filename,\n\t\t\t\tseparator: this.separator,\n\t\t\t});\n\t\t}\n\n\t\tif (!isObject(source) || !source.content) {\n\t\t\tthrow new Error(\n\t\t\t\t'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`',\n\t\t\t);\n\t\t}\n\n\t\t['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => {\n\t\t\tif (!hasOwnProp.call(source, option)) source[option] = source.content[option];\n\t\t});\n\n\t\tif (source.separator === undefined) {\n\t\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\tsource.separator = this.separator;\n\t\t}\n\n\t\tif (source.filename) {\n\t\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t} else {\n\t\t\t\tconst uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\t\tthrow new Error(`Illegal source: same filename (${source.filename}), different contents`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sources.push(source);\n\t\treturn this;\n\t}\n\n\tappend(str, options) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString(str),\n\t\t\tseparator: (options && options.separator) || '',\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator,\n\t\t});\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tseparator: source.separator,\n\t\t\t});\n\t\t});\n\n\t\treturn bundle;\n\t}\n\n\tgenerateDecodedMap(options = {}) {\n\t\tconst names = [];\n\t\tlet x_google_ignoreList = undefined;\n\t\tthis.sources.forEach((source) => {\n\t\t\tObject.keys(source.content.storedNames).forEach((name) => {\n\t\t\t\tif (!~names.indexOf(name)) names.push(name);\n\t\t\t});\n\t\t});\n\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tif (i > 0) {\n\t\t\t\tmappings.advance(this.separator);\n\t\t\t}\n\n\t\t\tconst sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\t\tconst magicString = source.content;\n\t\t\tconst locate = getLocator(magicString.original);\n\n\t\t\tif (magicString.intro) {\n\t\t\t\tmappings.advance(magicString.intro);\n\t\t\t}\n\n\t\t\tmagicString.firstChunk.eachNext((chunk) => {\n\t\t\t\tconst loc = locate(chunk.start);\n\n\t\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\t\tif (source.filename) {\n\t\t\t\t\tif (chunk.edited) {\n\t\t\t\t\t\tmappings.addEdit(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk.content,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmappings.addUneditedChunk(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk,\n\t\t\t\t\t\t\tmagicString.original,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tmagicString.sourcemapLocations,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmappings.advance(chunk.content);\n\t\t\t\t}\n\n\t\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t\t});\n\n\t\t\tif (magicString.outro) {\n\t\t\t\tmappings.advance(magicString.outro);\n\t\t\t}\n\n\t\t\tif (source.ignoreList && sourceIndex !== -1) {\n\t\t\t\tif (x_google_ignoreList === undefined) {\n\t\t\t\t\tx_google_ignoreList = [];\n\t\t\t\t}\n\t\t\t\tx_google_ignoreList.push(sourceIndex);\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\tgetIndentString() {\n\t\tconst indentStringCounts = {};\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tconst indentStr = source.content._getRawIndentString();\n\n\t\t\tif (indentStr === null) return;\n\n\t\t\tif (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0;\n\t\t\tindentStringCounts[indentStr] += 1;\n\t\t});\n\n\t\treturn (\n\t\t\tObject.keys(indentStringCounts).sort((a, b) => {\n\t\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t\t})[0] || '\\t'\n\t\t);\n\t}\n\n\tindent(indentStr) {\n\t\tif (!arguments.length) {\n\t\t\tindentStr = this.getIndentString();\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\tlet trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\tconst indentStart = trailingNewline || (i > 0 && /\\r?\\n$/.test(separator));\n\n\t\t\tsource.content.indent(indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart, //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t});\n\n\t\t\ttrailingNewline = source.content.lastChar() === '\\n';\n\t\t});\n\n\t\tif (this.intro) {\n\t\t\tthis.intro =\n\t\t\t\tindentStr +\n\t\t\t\tthis.intro.replace(/^[^\\n]/gm, (match, index) => {\n\t\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprepend(str) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t}\n\n\ttoString() {\n\t\tconst body = this.sources\n\t\t\t.map((source, i) => {\n\t\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\t\tconst str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\t\treturn str;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn this.intro + body;\n\t}\n\n\tisEmpty() {\n\t\tif (this.intro.length && this.intro.trim()) return false;\n\t\tif (this.sources.some((source) => !source.content.isEmpty())) return false;\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\treturn this.sources.reduce(\n\t\t\t(length, source) => length + source.content.length(),\n\t\t\tthis.intro.length,\n\t\t);\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimStart(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\t\tthis.intro = this.intro.replace(rx, '');\n\n\t\tif (!this.intro) {\n\t\t\tlet source;\n\t\t\tlet i = 0;\n\n\t\t\tdo {\n\t\t\t\tsource = this.sources[i++];\n\t\t\t\tif (!source) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} while (!source.content.trimStartAborted(charType));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\ttrimEnd(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tlet source;\n\t\tlet i = this.sources.length - 1;\n\n\t\tdo {\n\t\t\tsource = this.sources[i--];\n\t\t\tif (!source) {\n\t\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimEndAborted(charType));\n\n\t\treturn this;\n\t}\n}\n","import MagicString from './MagicString.js';\nimport Bundle from './Bundle.js';\nimport SourceMap from './SourceMap.js';\n\nMagicString.Bundle = Bundle;\nMagicString.SourceMap = SourceMap;\nMagicString.default = MagicString; // work around TypeScript bug https://github.com/Rich-Harris/magic-string/pull/121\n\nexport default MagicString;\n"],"names":["encode"],"mappings":";;;;AAAe,MAAM,MAAM,CAAC;AAC5B,CAAC,WAAW,CAAC,GAAG,EAAE;AAClB,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,YAAY,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;AAC5D,EAAE;AACF;AACA,CAAC,GAAG,CAAC,CAAC,EAAE;AACR,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AACrC,EAAE;AACF;AACA,CAAC,GAAG,CAAC,CAAC,EAAE;AACR,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACjD,EAAE;AACF;;ACZe,MAAM,KAAK,CAAC;AAC3B,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE;AAClC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;AACpB,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;AAChB,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;;AAEzB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;AACjB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;;AAEjB,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACxB,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;AACxB,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;;AAErB,EAMS;AACT,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;AACvB,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AACnB,GAAE;AACF,EAAC;;AAED,CAAC,UAAU,CAAC,OAAO,EAAE;AACrB,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,CAAA;AACvB,EAAC;;AAED,CAAC,WAAW,CAAC,OAAO,EAAE;AACtB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;AACnC,EAAC;;AAED,CAAC,KAAK,GAAG;AACT,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;;AAE9D,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAC1B,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAC1B,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;AAC9B,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;AAClC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;;AAE5B,EAAE,OAAO,KAAK,CAAA;AACd,EAAC;;AAED,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjB,EAAE,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;AAC/C,EAAC;;AAED,CAAC,QAAQ,CAAC,EAAE,EAAE;AACd,EAAE,IAAI,KAAK,GAAG,IAAI,CAAA;AAClB,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;AACZ,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AACrB,GAAE;AACF,EAAC;;AAED,CAAC,YAAY,CAAC,EAAE,EAAE;AAClB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAA;AAClB,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;AACZ,GAAG,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAA;AACzB,GAAE;AACF,EAAC;;AAED,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE;AACvC,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACxB,EAAE,IAAI,CAAC,WAAW,EAAE;AACpB,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;AAClB,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;AAClB,GAAE;AACF,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;;AAE5B,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;;AAEpB,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,WAAW,CAAC,OAAO,EAAE;AACtB,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;AACnC,EAAC;;AAED,CAAC,YAAY,CAAC,OAAO,EAAE;AACvB,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;AACnC,EAAC;;AAED,CAAC,KAAK,GAAG;AACT,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;AACjB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;AACjB,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;AACnB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAA;AAC/B,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;AACzB,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;AACtB,GAAE;AACF,EAAC;;AAED,CAAC,KAAK,CAAC,KAAK,EAAE;AACd,EAAE,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;;AAEvC,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;AAC3D,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;;AAEvD,EAAE,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAA;;AAEhC,EAAE,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;AAC5D,EAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAC7B,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;;AAEjB,EAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAA;;AAElB,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;AAC3B,GAAG,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;AACpB,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,OAAO,GAAG,cAAc,CAAA;AAChC,GAAE;;AAEF,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;AAC3B,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACtD,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAA;AAC1B,EAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAA;;AAEtB,EAAE,OAAO,QAAQ,CAAA;AACjB,EAAC;;AAED,CAAC,QAAQ,GAAG;AACZ,EAAE,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;AAC/C,EAAC;;AAED,CAAC,OAAO,CAAC,EAAE,EAAE;AACb,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AACzC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAEpC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;;AAE9C,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;AACtB,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;AACjC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;AACrE,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB;AACA,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AAC7C,KAAI;AACJ,IAAG;AACH,GAAG,OAAO,IAAI,CAAA;AACd,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;;AAEjC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AAC1C,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;AACrC,GAAE;AACF,EAAC;;AAED,CAAC,SAAS,CAAC,EAAE,EAAE;AACf,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AACzC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAEpC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;;AAE9C,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;AACtB,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;AACjC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC1D,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB;AACA,KAAK,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACjD,KAAI;AACJ,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;AAClC,IAAG;AACH,GAAG,OAAO,IAAI,CAAA;AACd,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;;AAEjC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AAC1C,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;AACrC,GAAE;AACF,EAAC;AACD;;ACrLA,SAAS,OAAO,GAAG;AACnB,CAAC,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;AACjF,EAAE,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrE,EAAE,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AAC1C,EAAE,OAAO,CAAC,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/D,EAAE,MAAM;AACR,EAAE,OAAO,MAAM;AACf,GAAG,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;AAC9F,GAAG,CAAC;AACJ,EAAE;AACF,CAAC;AACD;AACA,MAAM,IAAI,iBAAiB,OAAO,EAAE,CAAC;AACrC;AACe,MAAM,SAAS,CAAC;AAC/B,CAAC,WAAW,CAAC,UAAU,EAAE;AACzB,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACnB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;AAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AACpC,EAAE,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;AAClD,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,QAAQ,GAAGA,qBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9C,EAAE,IAAI,OAAO,UAAU,CAAC,mBAAmB,KAAK,WAAW,EAAE;AAC7D,GAAG,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,mBAAmB,CAAC;AAC7D,GAAG;AACH,EAAE,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,WAAW,EAAE;AACjD,GAAG,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AACrC,GAAG;AACH,EAAE;AACF;AACA,CAAC,QAAQ,GAAG;AACZ,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9B,EAAE;AACF;AACA,CAAC,KAAK,GAAG;AACT,EAAE,OAAO,6CAA6C,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/E,EAAE;AACF;;ACvCe,SAAS,WAAW,CAAC,IAAI,EAAE;AAC1C,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC;AACA,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D;AACA,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACjD,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACrC,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAK;AAClD,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACvC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACd;AACA,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC;;ACxBe,SAAS,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE;AAClD,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACnC;AACA,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AACjB;AACA,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE;AACrC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,EAAE;AACF;AACA,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE;AACvB,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;AAC3B,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAClC,EAAE;AACF;AACA,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C;;ACjBA,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC3C;AACe,SAAS,QAAQ,CAAC,KAAK,EAAE;AACxC,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC;AACnD;;ACJe,SAAS,UAAU,CAAC,MAAM,EAAE;AAC3C,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AACxB;AACA,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzD,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,EAAE,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACrC,EAAE;AACF;AACA,CAAC,OAAO,SAAS,MAAM,CAAC,KAAK,EAAE;AAC/B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;AAC7B,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;AAChB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,GAAG,IAAI,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,MAAM;AACV,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACd,IAAI;AACJ,GAAG;AACH,EAAE,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,EAAE,MAAM,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3C,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,EAAE,CAAC;AACH;;ACxBA,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB;AACe,MAAM,QAAQ,CAAC;AAC9B,CAAC,WAAW,CAAC,KAAK,EAAE;AACpB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC7B,EAAE,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AAChB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;AAC3D,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE;AACF;AACA,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE;AAC/C,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;AACtB,GAAG,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AACpD,GAAG,IAAI,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACjD,GAAG,IAAI,sBAAsB,GAAG,CAAC,CAAC,CAAC;AACnC;AACA;AACA,GAAG,OAAO,cAAc,IAAI,CAAC,IAAI,qBAAqB,GAAG,cAAc,EAAE;AACzE,IAAI,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AAClF,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE;AACxB,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC;AACA,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAC7D,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AACjC;AACA,IAAI,sBAAsB,GAAG,cAAc,CAAC;AAC5C,IAAI,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;AAC/D,IAAI;AACJ;AACA,GAAG,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACjF,GAAG,IAAI,SAAS,IAAI,CAAC,EAAE;AACvB,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5B,IAAI;AACJ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClC;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3D,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AAC3B,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,kBAAkB,EAAE;AACzE,EAAE,IAAI,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC;AACtC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC;AACnB;AACA,EAAE,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAClC;AACA,EAAE,OAAO,iBAAiB,GAAG,KAAK,CAAC,GAAG,EAAE;AACxC,GAAG,IAAI,QAAQ,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE;AAC7C,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;AAClB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AACnB,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAC7D,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AACjC,IAAI,KAAK,GAAG,IAAI,CAAC;AACjB,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAChC,IAAI,MAAM;AACV,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;AAC1E,KAAK,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACnF;AACA,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE;AACpC;AACA,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE;AACvD;AACA,OAAO,IAAI,CAAC,mBAAmB,EAAE;AACjC,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,QAAQ,mBAAmB,GAAG,IAAI,CAAC;AACnC,QAAQ;AACR,OAAO,MAAM;AACb;AACA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,OAAO,mBAAmB,GAAG,KAAK,CAAC;AACnC,OAAO;AACP,MAAM,MAAM;AACZ,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,MAAM;AACN,KAAK;AACL;AACA,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC;AAClC,IAAI,KAAK,GAAG,KAAK,CAAC;AAClB,IAAI;AACJ;AACA,GAAG,iBAAiB,IAAI,CAAC,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE;AACF;AACA,CAAC,OAAO,CAAC,GAAG,EAAE;AACd,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO;AACnB;AACA,EAAE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC;AACA,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAC7D,IAAI;AACJ,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AAChC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7D,EAAE;AACF;;ACtGA,MAAM,CAAC,GAAG,IAAI,CAAA;;AAEd,MAAM,MAAM,GAAG;AACf,CAAC,UAAU,EAAE,KAAK;AAClB,CAAC,WAAW,EAAE,KAAK;AACnB,CAAC,SAAS,EAAE,KAAK;AACjB,CAAC,CAAA;;AAEc,MAAM,WAAW,CAAC;AACjC,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE;AACnC,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;;AAEnD,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAChC,GAAG,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;AAC9C,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AACvC,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AACvC,GAAG,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AAC/C,GAAG,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AAC9C,GAAG,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AACtD,GAAG,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AACzC,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AACvC,GAAG,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE;AACxD,GAAG,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,qBAAqB,EAAE;AAClF,GAAG,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,EAAE;AAC9D,GAAG,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AAC7C,GAAG,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;AAClD,GAAG,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE;AAC5D,GAAG,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;AACzD,GAAG,CAAC,CAAA;;AAMJ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AACzB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAA;AACnC,EAAC;;AAED,CAAC,oBAAoB,CAAC,IAAI,EAAE;AAC5B,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACnC,EAAC;;AAED,CAAC,MAAM,CAAC,OAAO,EAAE;AACjB,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAA;;AAExF,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,CAAA;AACvB,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AAC5B,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;AAE7B,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAA;;AAI3F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;AAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAEjC,EAAE,IAAI,KAAK,EAAE;AACb,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AAC5B,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAA;AACxB,GAAE;AAGF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;AAC7B,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;AAE7B,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAA;;AAI3F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;AAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;AAEnC,EAAE,IAAI,KAAK,EAAE;AACb,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AAC7B,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAA;AACxB,GAAE;AAGF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,KAAK,GAAG;AACT,EAAE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;;AAEjG,EAAE,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,CAAA;AACrC,EAAE,IAAI,WAAW,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,iBAAiB,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,CAAA;;AAE1F,EAAE,OAAO,aAAa,EAAE;AACxB,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAA;AAClD,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAA;;AAE9C,GAAG,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAA;AAC/C,GAAG,MAAM,eAAe,GAAG,iBAAiB,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAA;;AAEzE,GAAG,IAAI,eAAe,EAAE;AACxB,IAAI,WAAW,CAAC,IAAI,GAAG,eAAe,CAAA;AACtC,IAAI,eAAe,CAAC,QAAQ,GAAG,WAAW,CAAA;;AAE1C,IAAI,WAAW,GAAG,eAAe,CAAA;AACjC,IAAG;;AAEH,GAAG,aAAa,GAAG,iBAAiB,CAAA;AACpC,GAAE;;AAEF,EAAE,MAAM,CAAC,SAAS,GAAG,WAAW,CAAA;;AAEhC,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAClC,GAAG,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAA;AACpE,GAAE;;AAEF,EAAE,MAAM,CAAC,kBAAkB,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;;AAEjE,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAC3B,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;;AAE3B,EAAE,OAAO,MAAM,CAAA;AACf,EAAC;;AAED,CAAC,kBAAkB,CAAC,OAAO,EAAE;AAC7B,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;;AAEzB,EAAE,MAAM,WAAW,GAAG,CAAC,CAAA;AACvB,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;AAC7C,EAAE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;AAE9C,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;;AAE1C,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;AAClB,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC/B,GAAE;;AAEF,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK;AACtC,GAAG,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAElC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAExD,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;AACrB,IAAI,QAAQ,CAAC,OAAO;AACpB,KAAK,WAAW;AAChB,KAAK,KAAK,CAAC,OAAO;AAClB,KAAK,GAAG;AACR,KAAK,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzD,KAAK,CAAA;AACL,IAAI,MAAM;AACV,IAAI,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;AAC9F,IAAG;;AAEH,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AACxD,GAAG,CAAC,CAAA;;AAEJ,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS;AACrE,GAAG,OAAO,EAAE;AACZ,IAAI,OAAO,CAAC,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE;AAC7F,IAAI;AACJ,GAAG,cAAc,EAAE,OAAO,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS;AACvE,GAAG,KAAK;AACR,GAAG,QAAQ,EAAE,QAAQ,CAAC,GAAG;AACzB,GAAG,mBAAmB,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,WAAW,CAAC,GAAG,SAAS;AACnE,GAAG,CAAA;AACH,EAAC;;AAED,CAAC,WAAW,CAAC,OAAO,EAAE;AACtB,EAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAA;AACxD,EAAC;;AAED,CAAC,gBAAgB,GAAG;AACpB,EAAE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AACpC,GAAG,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC9C,GAAE;AACF,EAAC;;AAED,CAAC,mBAAmB,GAAG;AACvB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAA;AACzB,EAAE,OAAO,IAAI,CAAC,SAAS,CAAA;AACvB,EAAC;;AAED,CAAC,eAAe,GAAG;AACnB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAA;AACzB,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAA;AACxD,EAAC;;AAED,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE;AAC5B,EAAE,MAAM,OAAO,GAAG,YAAY,CAAA;;AAE9B,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC3B,GAAG,OAAO,GAAG,SAAS,CAAA;AACtB,GAAG,SAAS,GAAG,SAAS,CAAA;AACxB,GAAE;;AAEF,EAAE,IAAI,SAAS,KAAK,SAAS,EAAE;AAC/B,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;AAC1B,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAA;AACrC,GAAE;;AAEF,EAAE,IAAI,SAAS,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC;;AAEpC,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;;AAEzB;AACA,EAAE,MAAM,UAAU,GAAG,EAAE,CAAA;;AAEvB,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;AACvB,GAAG,MAAM,UAAU;AACnB,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAA;AAChF,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AACrC,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACzD,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;AACzB,KAAI;AACJ,IAAI,CAAC,CAAA;AACL,GAAE;;AAEF,EAAE,IAAI,yBAAyB,GAAG,OAAO,CAAC,WAAW,KAAK,KAAK,CAAA;AAC/D,EAAE,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK;AAC9B,GAAG,IAAI,yBAAyB,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;AAC/D,GAAG,yBAAyB,GAAG,IAAI,CAAA;AACnC,GAAG,OAAO,KAAK,CAAA;AACf,GAAG,CAAA;;AAEH,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;;AAEpD,EAAE,IAAI,SAAS,GAAG,CAAC,CAAA;AACnB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;;AAE7B,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;;AAExB,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;AACrB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAChC,KAAK,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;;AAE7D,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;AAC/B,MAAM,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAA;AAClF,MAAK;AACL,KAAI;AACJ,IAAI,MAAM;AACV,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAA;;AAE3B,IAAI,OAAO,SAAS,GAAG,GAAG,EAAE;AAC5B,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AACjC,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;;AAE3C,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE;AACzB,OAAO,yBAAyB,GAAG,IAAI,CAAA;AACvC,OAAO,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,yBAAyB,EAAE;AAC7D,OAAO,yBAAyB,GAAG,KAAK,CAAA;;AAExC,OAAO,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE;AACtC,QAAQ,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;AACrC,QAAQ,MAAM;AACd,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;AAC1C,QAAQ,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AAC1B,QAAQ,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;AACrC,QAAO;AACP,OAAM;AACN,MAAK;;AAEL,KAAK,SAAS,IAAI,CAAC,CAAA;AACnB,KAAI;AACJ,IAAG;;AAEH,GAAG,SAAS,GAAG,KAAK,CAAC,GAAG,CAAA;AACxB,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AACrB,GAAE;;AAEF,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;;AAEpD,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,MAAM,GAAG;AACV,EAAE,MAAM,IAAI,KAAK;AACjB,GAAG,iFAAiF;AACpF,GAAG,CAAA;AACH,EAAC;;AAED,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AAC5B,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1B,GAAG,OAAO,CAAC,IAAI;AACf,IAAI,oFAAoF;AACxF,IAAI,CAAA;AACJ,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAA;AAC3B,GAAE;;AAEF,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AACxC,EAAC;;AAED,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;AAC7B,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAC3B,GAAG,OAAO,CAAC,IAAI;AACf,IAAI,uFAAuF;AAC3F,IAAI,CAAA;AACJ,GAAG,MAAM,CAAC,WAAW,GAAG,IAAI,CAAA;AAC5B,GAAE;;AAEF,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAC1C,EAAC;;AAED,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;AACzB,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;AAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;AACzB,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;AAE7B,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;;AAI9F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAClB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;AAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACnC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;;AAE9B,EAAE,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAA;AAChC,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAA;;AAE5B,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACtC,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,CAAA;AACvD,EAAE,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAA;;AAE/D,EAAE,IAAI,OAAO,EAAE,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAA;AACtC,EAAE,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAA;;AAE3C,EAAE,IAAI,OAAO,EAAE,OAAO,CAAC,IAAI,GAAG,KAAK,CAAA;AACnC,EAAE,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAA;;AAExC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAA;AAClD,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAClB,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAA;AAClC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAA;AAC7B,GAAE;;AAEF,EAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAA;AAC1B,EAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,IAAI,IAAI,CAAA;;AAE9B,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;AACvC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;AAGtC,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;AACzC,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;AACzB,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;AAC1F,EAAC;;AAED,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;AACtC,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;AAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;AAEzB,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAA;;AAE9F,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAClD,GAAG,OAAO,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAC9C,GAAE;;AAEF,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AACzE,EAAE,IAAI,KAAK,KAAK,GAAG;AACnB,GAAG,MAAM,IAAI,KAAK;AAClB,IAAI,+EAA+E;AACnF,IAAI,CAAA;;AAIJ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;AAElB,EAAE,IAAI,OAAO,KAAK,IAAI,EAAE;AACxB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC1B,IAAI,OAAO,CAAC,IAAI;AAChB,KAAK,+HAA+H;AACpI,KAAK,CAAA;AACL,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAA;AAC3B,IAAG;;AAEH,GAAG,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;AAChC,GAAE;AACF,EAAE,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,CAAA;AACrE,EAAE,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,CAAA;;AAErE,EAAE,IAAI,SAAS,EAAE;AACjB,GAAG,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACnD,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE;AACrD,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,CAAC,CAAA;AACL,GAAE;;AAEF,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACnC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;;AAE9B,EAAE,IAAI,KAAK,EAAE;AACb,GAAG,IAAI,KAAK,GAAG,KAAK,CAAA;AACpB,GAAG,OAAO,KAAK,KAAK,IAAI,EAAE;AAC1B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAChD,KAAK,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;AAC7D,KAAI;AACJ,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AACtB,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;AACzB,IAAG;;AAEH,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,CAAA;AAC7C,GAAG,MAAM;AACT;AACA,GAAG,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;;AAEtE;AACA,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAA;AACvB,GAAG,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAA;AAC3B,GAAE;AAGF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,OAAO,CAAC,OAAO,EAAE;AAClB,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAA;;AAExF,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;AACnC,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;AAC7B,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;AAE7B,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAA;;AAI3F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;AAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAEjC,EAAE,IAAI,KAAK,EAAE;AACb,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AAC7B,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;AACpC,GAAE;AAGF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE;AAC9B,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;AAE7B,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAA;;AAI3F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;AAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;AAEnC,EAAE,IAAI,KAAK,EAAE;AACb,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;AAC9B,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;AACpC,GAAE;AAGF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE;AACpB,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;AAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;AAEzB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAClD,GAAG,OAAO,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAC9C,GAAE;;AAEF,EAAE,IAAI,KAAK,KAAK,GAAG,EAAE,OAAO,IAAI,CAAA;;AAEhC,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAC5F,EAAE,IAAI,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;;AAIpE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;AAElB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;AAEjC,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAA;AACnB,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAA;AACnB,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;;AAEjB,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;AAC3D,GAAE;AAGF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE;AACnB,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;AAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;AAEzB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAClD,GAAG,OAAO,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAC9C,GAAE;;AAEF,EAAE,IAAI,KAAK,KAAK,GAAG,EAAE,OAAO,IAAI,CAAA;;AAEhC,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAC5F,EAAE,IAAI,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;;AAIpE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;AAElB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;AAEjC,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;;AAEhB,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;AAC3D,GAAE;AAGF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,QAAQ,GAAG;AACZ,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACjE,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAA;AAC5B,EAAE,GAAG;AACL,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACrE,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAC3E,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACrE,GAAG,SAAS,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAE;AACpC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACjE,EAAE,OAAO,EAAE,CAAA;AACX,EAAC;;AAED,CAAC,QAAQ,GAAG;AACZ,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AAC3C,EAAE,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAA;AAC/D,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;AAC1B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAA;AAC5B,EAAE,GAAG;AACL,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AAC1C,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;AAC5E,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,OAAO,CAAA;AACnC,IAAG;;AAEH,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,IAAI,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AAC5C,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;AAC9E,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;AACrC,IAAG;;AAEH,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AAC1C,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;AAC5E,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,OAAO,CAAA;AACnC,IAAG;AACH,GAAG,SAAS,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAE;AACpC,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AACvC,EAAE,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;AACzE,EAAE,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;AAC7B,EAAC;;AAED,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5D,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;AAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;AAEzB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAClD,GAAG,OAAO,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAC9C,GAAE;;AAEF,EAAE,IAAI,MAAM,GAAG,EAAE,CAAA;;AAEjB;AACA,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;AAC7B,EAAE,OAAO,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;AAC/D;AACA,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE;AAC9C,IAAI,OAAO,MAAM,CAAA;AACjB,IAAG;;AAEH,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AACrB,GAAE;;AAEF,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK;AACpD,GAAG,MAAM,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAA;;AAEnF,EAAE,MAAM,UAAU,GAAG,KAAK,CAAA;AAC1B,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;AACvE,IAAI,MAAM,IAAI,KAAK,CAAC,KAAK,CAAA;AACzB,IAAG;;AAEH,GAAG,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,CAAA;AAC5D,GAAG,IAAI,WAAW,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;AACvD,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAA;;AAEhF,GAAG,MAAM,UAAU,GAAG,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;AACpE,GAAG,MAAM,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAA;;AAE/F,GAAG,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;;AAEtD,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;AAC3D,IAAI,MAAM,IAAI,KAAK,CAAC,KAAK,CAAA;AACzB,IAAG;;AAEH,GAAG,IAAI,WAAW,EAAE;AACpB,IAAI,MAAK;AACT,IAAG;;AAEH,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AACrB,GAAE;;AAEF,EAAE,OAAO,MAAM,CAAA;AACf,EAAC;;AAED;AACA,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;AAClB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;AAC5B,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AACxB,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;;AAE1C,EAAE,OAAO,KAAK,CAAA;AACd,EAAC;;AAED,CAAC,MAAM,CAAC,KAAK,EAAE;AACf,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAM;;AAItD,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAA;AACpC,EAAE,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAA;;AAEzC,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;;AAEnE,GAAG,KAAK,GAAG,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC5E,GAAE;AACF,EAAC;;AAED,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE;AAC3B,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;AAC5C;AACA,GAAG,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA;AAC/C,GAAG,MAAM,IAAI,KAAK;AAClB,IAAI,CAAC,mDAAmD,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AACzG,IAAI,CAAA;AACJ,GAAE;;AAEF,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAErC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;AAC3B,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAA;AAChC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAA;;AAErC,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;;AAEzD,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAA;AAEhC,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,QAAQ,GAAG;AACZ,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;;AAEtB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;AAC7B,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;AAC1B,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AACrB,GAAE;;AAEF,EAAE,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;AACzB,EAAC;;AAED,CAAC,OAAO,GAAG;AACX,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;AAC7B,EAAE,GAAG;AACL,GAAG;AACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;AAC7C,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAClD,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;AAC7C;AACA,IAAI,OAAO,KAAK,CAAA;AAChB,GAAG,SAAS,KAAK,GAAG,KAAK,CAAC,IAAI,GAAE;AAChC,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,MAAM,GAAG;AACV,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;AAC7B,EAAE,IAAI,MAAM,GAAG,CAAC,CAAA;AAChB,EAAE,GAAG;AACL,GAAG,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAA;AAC3E,GAAG,SAAS,KAAK,GAAG,KAAK,CAAC,IAAI,GAAE;AAChC,EAAE,OAAO,MAAM,CAAA;AACf,EAAC;;AAED,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAC9B,EAAC;;AAED,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AACnD,EAAC;;AAED,CAAC,cAAc,CAAC,QAAQ,EAAE;AAC1B,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,CAAA;;AAEnD,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AACzC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAEpC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAA;;AAE5B,EAAE,GAAG;AACL,GAAG,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;AACxB,GAAG,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;;AAEpC;AACA,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AAClC,KAAK,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;AAChC,KAAI;;AAEJ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACjC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;AAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;AAC3C,IAAG;;AAEH,GAAG,IAAI,OAAO,EAAE,OAAO,IAAI,CAAA;AAC3B,GAAG,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAA;AACzB,GAAG,QAAQ,KAAK,EAAC;;AAEjB,EAAE,OAAO,KAAK,CAAA;AACd,EAAC;;AAED,CAAC,OAAO,CAAC,QAAQ,EAAE;AACnB,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;AAC/B,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;AACD,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AAC5B,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,QAAQ,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;;AAExD,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AACzC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAEpC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;;AAE7B,EAAE,GAAG;AACL,GAAG,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;AACxB,GAAG,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;;AAEtC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAC1B;AACA,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;;AAE7D,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACjC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;AAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;AAC3C,IAAG;;AAEH,GAAG,IAAI,OAAO,EAAE,OAAO,IAAI,CAAA;AAC3B,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AACrB,GAAG,QAAQ,KAAK,EAAC;;AAEjB,EAAE,OAAO,KAAK,CAAA;AACd,EAAC;;AAED,CAAC,SAAS,CAAC,QAAQ,EAAE;AACrB,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;AACjC,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAA;AAC1C,EAAC;;AAED,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE;AAC1C,EAAE,SAAS,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;AACtC,GAAG,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACxC,IAAI,OAAO,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK;AAC1D;AACA,KAAK,IAAI,CAAC,KAAK,GAAG,EAAE,OAAO,GAAG,CAAA;AAC9B,KAAK,IAAI,CAAC,KAAK,GAAG,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;AACnC,KAAK,MAAM,GAAG,GAAG,CAAC,CAAC,CAAA;AACnB,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACnB,KAAK,CAAC,CAAA;AACN,IAAI,MAAM;AACV,IAAI,OAAO,WAAW,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;AAChE,IAAG;AACH,GAAE;AACF,EAAE,SAAS,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE;AAC7B,GAAG,IAAI,KAAK,CAAA;AACZ,GAAG,MAAM,OAAO,GAAG,EAAE,CAAA;AACrB,GAAG,QAAQ,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;AAClC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACvB,IAAG;AACH,GAAG,OAAO,OAAO,CAAA;AACjB,GAAE;AACF,EAAE,IAAI,WAAW,CAAC,MAAM,EAAE;AAC1B,GAAG,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;AACvD,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC9B,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;AAC7B,KAAK,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC7D,KAAK,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;AACnC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAC7E,MAAK;AACL,KAAI;AACJ,IAAI,CAAC,CAAA;AACL,GAAG,MAAM;AACT,GAAG,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;AACjD,GAAG,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;AACrC,IAAI,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC5D,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;AAClC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAC5E,KAAI;AACJ,IAAG;AACH,GAAE;AACF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE;AACrC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AAC3B,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;;AAExC,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACpB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAC5D,GAAE;;AAEF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE;AACnC,EAAE,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACvC,GAAG,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;AACvD,GAAE;;AAEF,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;AACtD,EAAC;;AAED,CAAC,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE;AACxC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AAC3B,EAAE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAA;AACpC,EAAE;AACF,GAAG,IAAI,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;AACvC,GAAG,KAAK,KAAK,CAAC,CAAC;AACf,GAAG,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,YAAY,CAAA;AACxD,IAAI;AACJ,GAAG,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAAC,CAAA;AAC/D,GAAG,IAAI,QAAQ,KAAK,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,EAAE,WAAW,CAAC,CAAA;AACzF,GAAE;;AAEF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE;AACtC,EAAE,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACvC,GAAG,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;AAC1D,GAAE;;AAEF,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC3B,GAAG,MAAM,IAAI,SAAS;AACtB,IAAI,2EAA2E;AAC/E,IAAI,CAAA;AACJ,GAAE;;AAEF,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;AACtD,EAAC;AACD;;AC33BA,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD;AACe,MAAM,MAAM,CAAC;AAC5B,CAAC,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC3B,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AACnC,EAAE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AAC9E,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC1B,EAAE,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;AACxC,EAAE;AACF;AACA,CAAC,SAAS,CAAC,MAAM,EAAE;AACnB,EAAE,IAAI,MAAM,YAAY,WAAW,EAAE;AACrC,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC;AACzB,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC7B,IAAI,SAAS,EAAE,IAAI,CAAC,SAAS;AAC7B,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC5C,GAAG,MAAM,IAAI,KAAK;AAClB,IAAI,sIAAsI;AAC1I,IAAI,CAAC;AACL,GAAG;AACH;AACA,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,uBAAuB,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACvF,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACjF,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;AACtC;AACA,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE;AACvB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC5E,IAAI,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAClF,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7F,IAAI,MAAM;AACV,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/F,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC,OAAO,EAAE;AAC1D,KAAK,MAAM,IAAI,KAAK,CAAC,CAAC,+BAA+B,EAAE,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC/F,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE;AACtB,EAAE,IAAI,CAAC,SAAS,CAAC;AACjB,GAAG,OAAO,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC;AAChC,GAAG,SAAS,EAAE,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE;AAClD,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,KAAK,GAAG;AACT,EAAE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;AAC5B,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK;AACpB,GAAG,SAAS,EAAE,IAAI,CAAC,SAAS;AAC5B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACnC,GAAG,MAAM,CAAC,SAAS,CAAC;AACpB,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC7B,IAAI,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;AACnC,IAAI,SAAS,EAAE,MAAM,CAAC,SAAS;AAC/B,IAAI,CAAC,CAAC;AACN,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,OAAO,GAAG,EAAE,EAAE;AAClC,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,mBAAmB,GAAG,SAAS,CAAC;AACtC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACnC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC7D,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,IAAI,CAAC,CAAC;AACN,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/C;AACA,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;AAClB,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;AACtC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE;AACd,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrC,IAAI;AACJ;AACA,GAAG,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAChG,GAAG,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,GAAG,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnD;AACA,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE;AAC1B,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACxC,IAAI;AACJ;AACA,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK;AAC9C,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpC;AACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1D;AACA,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE;AACzB,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AACvB,MAAM,QAAQ,CAAC,OAAO;AACtB,OAAO,WAAW;AAClB,OAAO,KAAK,CAAC,OAAO;AACpB,OAAO,GAAG;AACV,OAAO,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC3D,OAAO,CAAC;AACR,MAAM,MAAM;AACZ,MAAM,QAAQ,CAAC,gBAAgB;AAC/B,OAAO,WAAW;AAClB,OAAO,KAAK;AACZ,OAAO,WAAW,CAAC,QAAQ;AAC3B,OAAO,GAAG;AACV,OAAO,WAAW,CAAC,kBAAkB;AACrC,OAAO,CAAC;AACR,MAAM;AACN,KAAK,MAAM;AACX,KAAK,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACrC,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1D,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE;AAC1B,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACxC,IAAI;AACJ;AACA,GAAG,IAAI,MAAM,CAAC,UAAU,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;AAChD,IAAI,IAAI,mBAAmB,KAAK,SAAS,EAAE;AAC3C,KAAK,mBAAmB,GAAG,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1C,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS;AACrE,GAAG,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK;AAC/C,IAAI,OAAO,OAAO,CAAC,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3F,IAAI,CAAC;AACL,GAAG,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK;AACtD,IAAI,OAAO,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1D,IAAI,CAAC;AACL,GAAG,KAAK;AACR,GAAG,QAAQ,EAAE,QAAQ,CAAC,GAAG;AACzB,GAAG,mBAAmB;AACtB,GAAG,CAAC;AACJ,EAAE;AACF;AACA,CAAC,WAAW,CAAC,OAAO,EAAE;AACtB,EAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AACzD,EAAE;AACF;AACA,CAAC,eAAe,GAAG;AACnB,EAAE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACnC,GAAG,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;AAC1D;AACA,GAAG,IAAI,SAAS,KAAK,IAAI,EAAE,OAAO;AAClC;AACA,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACzE,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACtC,GAAG,CAAC,CAAC;AACL;AACA,EAAE;AACF,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAClD,IAAI,OAAO,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACzD,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;AAChB,IAAI;AACJ,EAAE;AACF;AACA,CAAC,MAAM,CAAC,SAAS,EAAE;AACnB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACzB,GAAG,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AACtC,GAAG;AACH;AACA,EAAE,IAAI,SAAS,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC;AACpC;AACA,EAAE,IAAI,eAAe,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AACrE;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;AACtC,GAAG,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACxF,GAAG,MAAM,WAAW,GAAG,eAAe,KAAK,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9E;AACA,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AACpC,IAAI,OAAO,EAAE,MAAM,CAAC,qBAAqB;AACzC,IAAI,WAAW;AACf,IAAI,CAAC,CAAC;AACN;AACA,GAAG,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC;AACxD,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;AAClB,GAAG,IAAI,CAAC,KAAK;AACb,IAAI,SAAS;AACb,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK;AACrD,KAAK,OAAO,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AAClD,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,OAAO,CAAC,GAAG,EAAE;AACd,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AAChC,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,QAAQ,GAAG;AACZ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;AAC3B,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;AACvB,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACzF,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AACrE;AACA,IAAI,OAAO,GAAG,CAAC;AACf,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,OAAO,GAAG;AACX,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,KAAK,CAAC;AAC3D,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,KAAK,CAAC;AAC7E,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,MAAM,GAAG;AACV,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;AAC5B,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;AACvD,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;AACpB,GAAG,CAAC;AACJ,EAAE;AACF;AACA,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,EAAE;AACF;AACA,CAAC,SAAS,CAAC,QAAQ,EAAE;AACrB,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,QAAQ,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1C;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,GAAG,IAAI,MAAM,CAAC;AACd,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACb;AACA,GAAG,GAAG;AACN,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,KAAK,MAAM;AACX,KAAK;AACL,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;AACxD,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,OAAO,CAAC,QAAQ,EAAE;AACnB,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC;AACpD;AACA,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC;AACA,EAAE,GAAG;AACL,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,GAAG,IAAI,CAAC,MAAM,EAAE;AAChB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5C,IAAI,MAAM;AACV,IAAI;AACJ,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACrD;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;;ACpSA,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;AAC5B,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;AAClC,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC;;;;"} \ No newline at end of file diff --git a/node_modules/magic-string/dist/magic-string.es.d.mts b/node_modules/magic-string/dist/magic-string.es.d.mts new file mode 100644 index 0000000..76cc537 --- /dev/null +++ b/node_modules/magic-string/dist/magic-string.es.d.mts @@ -0,0 +1,289 @@ +export interface BundleOptions { + intro?: string; + separator?: string; +} + +export interface SourceMapOptions { + /** + * Whether the mapping should be high-resolution. + * Hi-res mappings map every single character, meaning (for example) your devtools will always + * be able to pinpoint the exact location of function calls and so on. + * With lo-res mappings, devtools may only be able to identify the correct + * line - but they're quicker to generate and less bulky. + * You can also set `"boundary"` to generate a semi-hi-res mappings segmented per word boundary + * instead of per character, suitable for string semantics that are separated by words. + * If sourcemap locations have been specified with s.addSourceMapLocation(), they will be used here. + */ + hires?: boolean | 'boundary'; + /** + * The filename where you plan to write the sourcemap. + */ + file?: string; + /** + * The filename of the file containing the original source. + */ + source?: string; + /** + * Whether to include the original content in the map's sourcesContent array. + */ + includeContent?: boolean; +} + +export type SourceMapSegment = + | [number] + | [number, number, number, number] + | [number, number, number, number, number]; + +export interface DecodedSourceMap { + file: string; + sources: string[]; + sourcesContent?: string[]; + names: string[]; + mappings: SourceMapSegment[][]; + x_google_ignoreList?: number[]; +} + +export class SourceMap { + constructor(properties: DecodedSourceMap); + + version: number; + file: string; + sources: string[]; + sourcesContent?: string[]; + names: string[]; + mappings: string; + x_google_ignoreList?: number[]; + debugId?: string; + + /** + * Returns the equivalent of `JSON.stringify(map)` + */ + toString(): string; + /** + * Returns a DataURI containing the sourcemap. Useful for doing this sort of thing: + * `generateMap(options?: SourceMapOptions): SourceMap;` + */ + toUrl(): string; +} + +export class Bundle { + constructor(options?: BundleOptions); + /** + * Adds the specified source to the bundle, which can either be a `MagicString` object directly, + * or an options object that holds a magic string `content` property and optionally provides + * a `filename` for the source within the bundle, as well as an optional `ignoreList` hint + * (which defaults to `false`). The `filename` is used when constructing the source map for the + * bundle, to identify this `source` in the source map's `sources` field. The `ignoreList` hint + * is used to populate the `x_google_ignoreList` extension field in the source map, which is a + * mechanism for tools to signal to debuggers that certain sources should be ignored by default + * (depending on user preferences). + */ + addSource( + source: MagicString | { filename?: string; content: MagicString; ignoreList?: boolean }, + ): this; + append(str: string, options?: BundleOptions): this; + clone(): this; + generateMap( + options?: SourceMapOptions, + ): Omit & { sourcesContent: Array }; + generateDecodedMap( + options?: SourceMapOptions, + ): Omit & { sourcesContent: Array }; + getIndentString(): string; + indent(indentStr?: string): this; + indentExclusionRanges: ExclusionRange | Array; + prepend(str: string): this; + toString(): string; + trimLines(): this; + trim(charType?: string): this; + trimStart(charType?: string): this; + trimEnd(charType?: string): this; + isEmpty(): boolean; + length(): number; +} + +export type ExclusionRange = [number, number]; + +export interface MagicStringOptions { + filename?: string; + indentExclusionRanges?: ExclusionRange | Array; + offset?: number; +} + +export interface IndentOptions { + exclude?: ExclusionRange | Array; + indentStart?: boolean; +} + +export interface OverwriteOptions { + storeName?: boolean; + contentOnly?: boolean; +} + +export interface UpdateOptions { + storeName?: boolean; + overwrite?: boolean; +} + +export default class MagicString { + constructor(str: string, options?: MagicStringOptions); + /** + * Adds the specified character index (with respect to the original string) to sourcemap mappings, if `hires` is false. + */ + addSourcemapLocation(char: number): void; + /** + * Appends the specified content to the end of the string. + */ + append(content: string): this; + /** + * Appends the specified content at the index in the original string. + * If a range *ending* with index is subsequently moved, the insert will be moved with it. + * See also `s.prependLeft(...)`. + */ + appendLeft(index: number, content: string): this; + /** + * Appends the specified content at the index in the original string. + * If a range *starting* with index is subsequently moved, the insert will be moved with it. + * See also `s.prependRight(...)`. + */ + appendRight(index: number, content: string): this; + /** + * Does what you'd expect. + */ + clone(): this; + /** + * Generates a version 3 sourcemap. + */ + generateMap(options?: SourceMapOptions): SourceMap; + /** + * Generates a sourcemap object with raw mappings in array form, rather than encoded as a string. + * Useful if you need to manipulate the sourcemap further, but most of the time you will use `generateMap` instead. + */ + generateDecodedMap(options?: SourceMapOptions): DecodedSourceMap; + getIndentString(): string; + + /** + * Prefixes each line of the string with prefix. + * If prefix is not supplied, the indentation will be guessed from the original content, falling back to a single tab character. + */ + indent(options?: IndentOptions): this; + /** + * Prefixes each line of the string with prefix. + * If prefix is not supplied, the indentation will be guessed from the original content, falling back to a single tab character. + * + * The options argument can have an exclude property, which is an array of [start, end] character ranges. + * These ranges will be excluded from the indentation - useful for (e.g.) multiline strings. + */ + indent(indentStr?: string, options?: IndentOptions): this; + indentExclusionRanges: ExclusionRange | Array; + + /** + * Moves the characters from `start` and `end` to `index`. + */ + move(start: number, end: number, index: number): this; + /** + * Replaces the characters from `start` to `end` with `content`, along with the appended/prepended content in + * that range. The same restrictions as `s.remove()` apply. + * + * The fourth argument is optional. It can have a storeName property — if true, the original name will be stored + * for later inclusion in a sourcemap's names array — and a contentOnly property which determines whether only + * the content is overwritten, or anything that was appended/prepended to the range as well. + * + * It may be preferred to use `s.update(...)` instead if you wish to avoid overwriting the appended/prepended content. + */ + overwrite( + start: number, + end: number, + content: string, + options?: boolean | OverwriteOptions, + ): this; + /** + * Replaces the characters from `start` to `end` with `content`. The same restrictions as `s.remove()` apply. + * + * The fourth argument is optional. It can have a storeName property — if true, the original name will be stored + * for later inclusion in a sourcemap's names array — and an overwrite property which determines whether only + * the content is overwritten, or anything that was appended/prepended to the range as well. + */ + update(start: number, end: number, content: string, options?: boolean | UpdateOptions): this; + /** + * Prepends the string with the specified content. + */ + prepend(content: string): this; + /** + * Same as `s.appendLeft(...)`, except that the inserted content will go *before* any previous appends or prepends at index + */ + prependLeft(index: number, content: string): this; + /** + * Same as `s.appendRight(...)`, except that the inserted content will go *before* any previous appends or prepends at `index` + */ + prependRight(index: number, content: string): this; + /** + * Removes the characters from `start` to `end` (of the original string, **not** the generated string). + * Removing the same content twice, or making removals that partially overlap, will cause an error. + */ + remove(start: number, end: number): this; + /** + * Reset the modified characters from `start` to `end` (of the original string, **not** the generated string). + */ + reset(start: number, end: number): this; + /** + * Returns the content of the generated string that corresponds to the slice between `start` and `end` of the original string. + * Throws error if the indices are for characters that were already removed. + */ + slice(start: number, end: number): string; + /** + * Returns a clone of `s`, with all content before the `start` and `end` characters of the original string removed. + */ + snip(start: number, end: number): this; + /** + * Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the start and end. + */ + trim(charType?: string): this; + /** + * Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the start. + */ + trimStart(charType?: string): this; + /** + * Trims content matching `charType` (defaults to `\s`, i.e. whitespace) from the end. + */ + trimEnd(charType?: string): this; + /** + * Removes empty lines from the start and end. + */ + trimLines(): this; + /** + * String replacement with RegExp or string. + */ + replace( + regex: RegExp | string, + replacement: string | ((substring: string, ...args: any[]) => string), + ): this; + /** + * Same as `s.replace`, but replace all matched strings instead of just one. + */ + replaceAll( + regex: RegExp | string, + replacement: string | ((substring: string, ...args: any[]) => string), + ): this; + + lastChar(): string; + lastLine(): string; + /** + * Returns true if the resulting source is empty (disregarding white space). + */ + isEmpty(): boolean; + length(): number; + + /** + * Indicates if the string has been changed. + */ + hasChanged(): boolean; + + original: string; + /** + * Returns the generated string. + */ + toString(): string; + + offset: number; +} diff --git a/node_modules/magic-string/dist/magic-string.es.mjs b/node_modules/magic-string/dist/magic-string.es.mjs new file mode 100644 index 0000000..76f3642 --- /dev/null +++ b/node_modules/magic-string/dist/magic-string.es.mjs @@ -0,0 +1,1569 @@ +import { encode } from '@jridgewell/sourcemap-codec'; + +class BitSet { + constructor(arg) { + this.bits = arg instanceof BitSet ? arg.bits.slice() : []; + } + + add(n) { + this.bits[n >> 5] |= 1 << (n & 31); + } + + has(n) { + return !!(this.bits[n >> 5] & (1 << (n & 31))); + } +} + +class Chunk { + constructor(start, end, content) { + this.start = start; + this.end = end; + this.original = content; + + this.intro = ''; + this.outro = ''; + + this.content = content; + this.storeName = false; + this.edited = false; + + { + this.previous = null; + this.next = null; + } + } + + appendLeft(content) { + this.outro += content; + } + + appendRight(content) { + this.intro = this.intro + content; + } + + clone() { + const chunk = new Chunk(this.start, this.end, this.original); + + chunk.intro = this.intro; + chunk.outro = this.outro; + chunk.content = this.content; + chunk.storeName = this.storeName; + chunk.edited = this.edited; + + return chunk; + } + + contains(index) { + return this.start < index && index < this.end; + } + + eachNext(fn) { + let chunk = this; + while (chunk) { + fn(chunk); + chunk = chunk.next; + } + } + + eachPrevious(fn) { + let chunk = this; + while (chunk) { + fn(chunk); + chunk = chunk.previous; + } + } + + edit(content, storeName, contentOnly) { + this.content = content; + if (!contentOnly) { + this.intro = ''; + this.outro = ''; + } + this.storeName = storeName; + + this.edited = true; + + return this; + } + + prependLeft(content) { + this.outro = content + this.outro; + } + + prependRight(content) { + this.intro = content + this.intro; + } + + reset() { + this.intro = ''; + this.outro = ''; + if (this.edited) { + this.content = this.original; + this.storeName = false; + this.edited = false; + } + } + + split(index) { + const sliceIndex = index - this.start; + + const originalBefore = this.original.slice(0, sliceIndex); + const originalAfter = this.original.slice(sliceIndex); + + this.original = originalBefore; + + const newChunk = new Chunk(index, this.end, originalAfter); + newChunk.outro = this.outro; + this.outro = ''; + + this.end = index; + + if (this.edited) { + // after split we should save the edit content record into the correct chunk + // to make sure sourcemap correct + // For example: + // ' test'.trim() + // split -> ' ' + 'test' + // ✔️ edit -> '' + 'test' + // ✖️ edit -> 'test' + '' + // TODO is this block necessary?... + newChunk.edit('', false); + this.content = ''; + } else { + this.content = originalBefore; + } + + newChunk.next = this.next; + if (newChunk.next) newChunk.next.previous = newChunk; + newChunk.previous = this; + this.next = newChunk; + + return newChunk; + } + + toString() { + return this.intro + this.content + this.outro; + } + + trimEnd(rx) { + this.outro = this.outro.replace(rx, ''); + if (this.outro.length) return true; + + const trimmed = this.content.replace(rx, ''); + + if (trimmed.length) { + if (trimmed !== this.content) { + this.split(this.start + trimmed.length).edit('', undefined, true); + if (this.edited) { + // save the change, if it has been edited + this.edit(trimmed, this.storeName, true); + } + } + return true; + } else { + this.edit('', undefined, true); + + this.intro = this.intro.replace(rx, ''); + if (this.intro.length) return true; + } + } + + trimStart(rx) { + this.intro = this.intro.replace(rx, ''); + if (this.intro.length) return true; + + const trimmed = this.content.replace(rx, ''); + + if (trimmed.length) { + if (trimmed !== this.content) { + const newChunk = this.split(this.end - trimmed.length); + if (this.edited) { + // save the change, if it has been edited + newChunk.edit(trimmed, this.storeName, true); + } + this.edit('', undefined, true); + } + return true; + } else { + this.edit('', undefined, true); + + this.outro = this.outro.replace(rx, ''); + if (this.outro.length) return true; + } + } +} + +function getBtoa() { + if (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') { + return (str) => globalThis.btoa(unescape(encodeURIComponent(str))); + } else if (typeof Buffer === 'function') { + return (str) => Buffer.from(str, 'utf-8').toString('base64'); + } else { + return () => { + throw new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.'); + }; + } +} + +const btoa = /*#__PURE__*/ getBtoa(); + +class SourceMap { + constructor(properties) { + this.version = 3; + this.file = properties.file; + this.sources = properties.sources; + this.sourcesContent = properties.sourcesContent; + this.names = properties.names; + this.mappings = encode(properties.mappings); + if (typeof properties.x_google_ignoreList !== 'undefined') { + this.x_google_ignoreList = properties.x_google_ignoreList; + } + if (typeof properties.debugId !== 'undefined') { + this.debugId = properties.debugId; + } + } + + toString() { + return JSON.stringify(this); + } + + toUrl() { + return 'data:application/json;charset=utf-8;base64,' + btoa(this.toString()); + } +} + +function guessIndent(code) { + const lines = code.split('\n'); + + const tabbed = lines.filter((line) => /^\t+/.test(line)); + const spaced = lines.filter((line) => /^ {2,}/.test(line)); + + if (tabbed.length === 0 && spaced.length === 0) { + return null; + } + + // More lines tabbed than spaced? Assume tabs, and + // default to tabs in the case of a tie (or nothing + // to go on) + if (tabbed.length >= spaced.length) { + return '\t'; + } + + // Otherwise, we need to guess the multiple + const min = spaced.reduce((previous, current) => { + const numSpaces = /^ +/.exec(current)[0].length; + return Math.min(numSpaces, previous); + }, Infinity); + + return new Array(min + 1).join(' '); +} + +function getRelativePath(from, to) { + const fromParts = from.split(/[/\\]/); + const toParts = to.split(/[/\\]/); + + fromParts.pop(); // get dirname + + while (fromParts[0] === toParts[0]) { + fromParts.shift(); + toParts.shift(); + } + + if (fromParts.length) { + let i = fromParts.length; + while (i--) fromParts[i] = '..'; + } + + return fromParts.concat(toParts).join('/'); +} + +const toString = Object.prototype.toString; + +function isObject(thing) { + return toString.call(thing) === '[object Object]'; +} + +function getLocator(source) { + const originalLines = source.split('\n'); + const lineOffsets = []; + + for (let i = 0, pos = 0; i < originalLines.length; i++) { + lineOffsets.push(pos); + pos += originalLines[i].length + 1; + } + + return function locate(index) { + let i = 0; + let j = lineOffsets.length; + while (i < j) { + const m = (i + j) >> 1; + if (index < lineOffsets[m]) { + j = m; + } else { + i = m + 1; + } + } + const line = i - 1; + const column = index - lineOffsets[line]; + return { line, column }; + }; +} + +const wordRegex = /\w/; + +class Mappings { + constructor(hires) { + this.hires = hires; + this.generatedCodeLine = 0; + this.generatedCodeColumn = 0; + this.raw = []; + this.rawSegments = this.raw[this.generatedCodeLine] = []; + this.pending = null; + } + + addEdit(sourceIndex, content, loc, nameIndex) { + if (content.length) { + const contentLengthMinusOne = content.length - 1; + let contentLineEnd = content.indexOf('\n', 0); + let previousContentLineEnd = -1; + // Loop through each line in the content and add a segment, but stop if the last line is empty, + // else code afterwards would fill one line too many + while (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) { + const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + if (nameIndex >= 0) { + segment.push(nameIndex); + } + this.rawSegments.push(segment); + + this.generatedCodeLine += 1; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + this.generatedCodeColumn = 0; + + previousContentLineEnd = contentLineEnd; + contentLineEnd = content.indexOf('\n', contentLineEnd + 1); + } + + const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + if (nameIndex >= 0) { + segment.push(nameIndex); + } + this.rawSegments.push(segment); + + this.advance(content.slice(previousContentLineEnd + 1)); + } else if (this.pending) { + this.rawSegments.push(this.pending); + this.advance(content); + } + + this.pending = null; + } + + addUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) { + let originalCharIndex = chunk.start; + let first = true; + // when iterating each char, check if it's in a word boundary + let charInHiresBoundary = false; + + while (originalCharIndex < chunk.end) { + if (original[originalCharIndex] === '\n') { + loc.line += 1; + loc.column = 0; + this.generatedCodeLine += 1; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + this.generatedCodeColumn = 0; + first = true; + charInHiresBoundary = false; + } else { + if (this.hires || first || sourcemapLocations.has(originalCharIndex)) { + const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + + if (this.hires === 'boundary') { + // in hires "boundary", group segments per word boundary than per char + if (wordRegex.test(original[originalCharIndex])) { + // for first char in the boundary found, start the boundary by pushing a segment + if (!charInHiresBoundary) { + this.rawSegments.push(segment); + charInHiresBoundary = true; + } + } else { + // for non-word char, end the boundary by pushing a segment + this.rawSegments.push(segment); + charInHiresBoundary = false; + } + } else { + this.rawSegments.push(segment); + } + } + + loc.column += 1; + this.generatedCodeColumn += 1; + first = false; + } + + originalCharIndex += 1; + } + + this.pending = null; + } + + advance(str) { + if (!str) return; + + const lines = str.split('\n'); + + if (lines.length > 1) { + for (let i = 0; i < lines.length - 1; i++) { + this.generatedCodeLine++; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + } + this.generatedCodeColumn = 0; + } + + this.generatedCodeColumn += lines[lines.length - 1].length; + } +} + +const n = '\n'; + +const warned = { + insertLeft: false, + insertRight: false, + storeName: false, +}; + +class MagicString { + constructor(string, options = {}) { + const chunk = new Chunk(0, string.length, string); + + Object.defineProperties(this, { + original: { writable: true, value: string }, + outro: { writable: true, value: '' }, + intro: { writable: true, value: '' }, + firstChunk: { writable: true, value: chunk }, + lastChunk: { writable: true, value: chunk }, + lastSearchedChunk: { writable: true, value: chunk }, + byStart: { writable: true, value: {} }, + byEnd: { writable: true, value: {} }, + filename: { writable: true, value: options.filename }, + indentExclusionRanges: { writable: true, value: options.indentExclusionRanges }, + sourcemapLocations: { writable: true, value: new BitSet() }, + storedNames: { writable: true, value: {} }, + indentStr: { writable: true, value: undefined }, + ignoreList: { writable: true, value: options.ignoreList }, + offset: { writable: true, value: options.offset || 0 }, + }); + + this.byStart[0] = chunk; + this.byEnd[string.length] = chunk; + } + + addSourcemapLocation(char) { + this.sourcemapLocations.add(char); + } + + append(content) { + if (typeof content !== 'string') throw new TypeError('outro content must be a string'); + + this.outro += content; + return this; + } + + appendLeft(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byEnd[index]; + + if (chunk) { + chunk.appendLeft(content); + } else { + this.intro += content; + } + return this; + } + + appendRight(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byStart[index]; + + if (chunk) { + chunk.appendRight(content); + } else { + this.outro += content; + } + return this; + } + + clone() { + const cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset }); + + let originalChunk = this.firstChunk; + let clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone()); + + while (originalChunk) { + cloned.byStart[clonedChunk.start] = clonedChunk; + cloned.byEnd[clonedChunk.end] = clonedChunk; + + const nextOriginalChunk = originalChunk.next; + const nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone(); + + if (nextClonedChunk) { + clonedChunk.next = nextClonedChunk; + nextClonedChunk.previous = clonedChunk; + + clonedChunk = nextClonedChunk; + } + + originalChunk = nextOriginalChunk; + } + + cloned.lastChunk = clonedChunk; + + if (this.indentExclusionRanges) { + cloned.indentExclusionRanges = this.indentExclusionRanges.slice(); + } + + cloned.sourcemapLocations = new BitSet(this.sourcemapLocations); + + cloned.intro = this.intro; + cloned.outro = this.outro; + + return cloned; + } + + generateDecodedMap(options) { + options = options || {}; + + const sourceIndex = 0; + const names = Object.keys(this.storedNames); + const mappings = new Mappings(options.hires); + + const locate = getLocator(this.original); + + if (this.intro) { + mappings.advance(this.intro); + } + + this.firstChunk.eachNext((chunk) => { + const loc = locate(chunk.start); + + if (chunk.intro.length) mappings.advance(chunk.intro); + + if (chunk.edited) { + mappings.addEdit( + sourceIndex, + chunk.content, + loc, + chunk.storeName ? names.indexOf(chunk.original) : -1, + ); + } else { + mappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations); + } + + if (chunk.outro.length) mappings.advance(chunk.outro); + }); + + return { + file: options.file ? options.file.split(/[/\\]/).pop() : undefined, + sources: [ + options.source ? getRelativePath(options.file || '', options.source) : options.file || '', + ], + sourcesContent: options.includeContent ? [this.original] : undefined, + names, + mappings: mappings.raw, + x_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined, + }; + } + + generateMap(options) { + return new SourceMap(this.generateDecodedMap(options)); + } + + _ensureindentStr() { + if (this.indentStr === undefined) { + this.indentStr = guessIndent(this.original); + } + } + + _getRawIndentString() { + this._ensureindentStr(); + return this.indentStr; + } + + getIndentString() { + this._ensureindentStr(); + return this.indentStr === null ? '\t' : this.indentStr; + } + + indent(indentStr, options) { + const pattern = /^[^\r\n]/gm; + + if (isObject(indentStr)) { + options = indentStr; + indentStr = undefined; + } + + if (indentStr === undefined) { + this._ensureindentStr(); + indentStr = this.indentStr || '\t'; + } + + if (indentStr === '') return this; // noop + + options = options || {}; + + // Process exclusion ranges + const isExcluded = {}; + + if (options.exclude) { + const exclusions = + typeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude; + exclusions.forEach((exclusion) => { + for (let i = exclusion[0]; i < exclusion[1]; i += 1) { + isExcluded[i] = true; + } + }); + } + + let shouldIndentNextCharacter = options.indentStart !== false; + const replacer = (match) => { + if (shouldIndentNextCharacter) return `${indentStr}${match}`; + shouldIndentNextCharacter = true; + return match; + }; + + this.intro = this.intro.replace(pattern, replacer); + + let charIndex = 0; + let chunk = this.firstChunk; + + while (chunk) { + const end = chunk.end; + + if (chunk.edited) { + if (!isExcluded[charIndex]) { + chunk.content = chunk.content.replace(pattern, replacer); + + if (chunk.content.length) { + shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\n'; + } + } + } else { + charIndex = chunk.start; + + while (charIndex < end) { + if (!isExcluded[charIndex]) { + const char = this.original[charIndex]; + + if (char === '\n') { + shouldIndentNextCharacter = true; + } else if (char !== '\r' && shouldIndentNextCharacter) { + shouldIndentNextCharacter = false; + + if (charIndex === chunk.start) { + chunk.prependRight(indentStr); + } else { + this._splitChunk(chunk, charIndex); + chunk = chunk.next; + chunk.prependRight(indentStr); + } + } + } + + charIndex += 1; + } + } + + charIndex = chunk.end; + chunk = chunk.next; + } + + this.outro = this.outro.replace(pattern, replacer); + + return this; + } + + insert() { + throw new Error( + 'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)', + ); + } + + insertLeft(index, content) { + if (!warned.insertLeft) { + console.warn( + 'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead', + ); + warned.insertLeft = true; + } + + return this.appendLeft(index, content); + } + + insertRight(index, content) { + if (!warned.insertRight) { + console.warn( + 'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead', + ); + warned.insertRight = true; + } + + return this.prependRight(index, content); + } + + move(start, end, index) { + start = start + this.offset; + end = end + this.offset; + index = index + this.offset; + + if (index >= start && index <= end) throw new Error('Cannot move a selection inside itself'); + + this._split(start); + this._split(end); + this._split(index); + + const first = this.byStart[start]; + const last = this.byEnd[end]; + + const oldLeft = first.previous; + const oldRight = last.next; + + const newRight = this.byStart[index]; + if (!newRight && last === this.lastChunk) return this; + const newLeft = newRight ? newRight.previous : this.lastChunk; + + if (oldLeft) oldLeft.next = oldRight; + if (oldRight) oldRight.previous = oldLeft; + + if (newLeft) newLeft.next = first; + if (newRight) newRight.previous = last; + + if (!first.previous) this.firstChunk = last.next; + if (!last.next) { + this.lastChunk = first.previous; + this.lastChunk.next = null; + } + + first.previous = newLeft; + last.next = newRight || null; + + if (!newLeft) this.firstChunk = first; + if (!newRight) this.lastChunk = last; + return this; + } + + overwrite(start, end, content, options) { + options = options || {}; + return this.update(start, end, content, { ...options, overwrite: !options.contentOnly }); + } + + update(start, end, content, options) { + start = start + this.offset; + end = end + this.offset; + + if (typeof content !== 'string') throw new TypeError('replacement content must be a string'); + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + if (end > this.original.length) throw new Error('end is out of bounds'); + if (start === end) + throw new Error( + 'Cannot overwrite a zero-length range – use appendLeft or prependRight instead', + ); + + this._split(start); + this._split(end); + + if (options === true) { + if (!warned.storeName) { + console.warn( + 'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string', + ); + warned.storeName = true; + } + + options = { storeName: true }; + } + const storeName = options !== undefined ? options.storeName : false; + const overwrite = options !== undefined ? options.overwrite : false; + + if (storeName) { + const original = this.original.slice(start, end); + Object.defineProperty(this.storedNames, original, { + writable: true, + value: true, + enumerable: true, + }); + } + + const first = this.byStart[start]; + const last = this.byEnd[end]; + + if (first) { + let chunk = first; + while (chunk !== last) { + if (chunk.next !== this.byStart[chunk.end]) { + throw new Error('Cannot overwrite across a split point'); + } + chunk = chunk.next; + chunk.edit('', false); + } + + first.edit(content, storeName, !overwrite); + } else { + // must be inserting at the end + const newChunk = new Chunk(start, end, '').edit(content, storeName); + + // TODO last chunk in the array may not be the last chunk, if it's moved... + last.next = newChunk; + newChunk.previous = last; + } + return this; + } + + prepend(content) { + if (typeof content !== 'string') throw new TypeError('outro content must be a string'); + + this.intro = content + this.intro; + return this; + } + + prependLeft(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byEnd[index]; + + if (chunk) { + chunk.prependLeft(content); + } else { + this.intro = content + this.intro; + } + return this; + } + + prependRight(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byStart[index]; + + if (chunk) { + chunk.prependRight(content); + } else { + this.outro = content + this.outro; + } + return this; + } + + remove(start, end) { + start = start + this.offset; + end = end + this.offset; + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + if (start === end) return this; + + if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds'); + if (start > end) throw new Error('end must be greater than start'); + + this._split(start); + this._split(end); + + let chunk = this.byStart[start]; + + while (chunk) { + chunk.intro = ''; + chunk.outro = ''; + chunk.edit(''); + + chunk = end > chunk.end ? this.byStart[chunk.end] : null; + } + return this; + } + + reset(start, end) { + start = start + this.offset; + end = end + this.offset; + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + if (start === end) return this; + + if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds'); + if (start > end) throw new Error('end must be greater than start'); + + this._split(start); + this._split(end); + + let chunk = this.byStart[start]; + + while (chunk) { + chunk.reset(); + + chunk = end > chunk.end ? this.byStart[chunk.end] : null; + } + return this; + } + + lastChar() { + if (this.outro.length) return this.outro[this.outro.length - 1]; + let chunk = this.lastChunk; + do { + if (chunk.outro.length) return chunk.outro[chunk.outro.length - 1]; + if (chunk.content.length) return chunk.content[chunk.content.length - 1]; + if (chunk.intro.length) return chunk.intro[chunk.intro.length - 1]; + } while ((chunk = chunk.previous)); + if (this.intro.length) return this.intro[this.intro.length - 1]; + return ''; + } + + lastLine() { + let lineIndex = this.outro.lastIndexOf(n); + if (lineIndex !== -1) return this.outro.substr(lineIndex + 1); + let lineStr = this.outro; + let chunk = this.lastChunk; + do { + if (chunk.outro.length > 0) { + lineIndex = chunk.outro.lastIndexOf(n); + if (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr; + lineStr = chunk.outro + lineStr; + } + + if (chunk.content.length > 0) { + lineIndex = chunk.content.lastIndexOf(n); + if (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr; + lineStr = chunk.content + lineStr; + } + + if (chunk.intro.length > 0) { + lineIndex = chunk.intro.lastIndexOf(n); + if (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr; + lineStr = chunk.intro + lineStr; + } + } while ((chunk = chunk.previous)); + lineIndex = this.intro.lastIndexOf(n); + if (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr; + return this.intro + lineStr; + } + + slice(start = 0, end = this.original.length - this.offset) { + start = start + this.offset; + end = end + this.offset; + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + let result = ''; + + // find start chunk + let chunk = this.firstChunk; + while (chunk && (chunk.start > start || chunk.end <= start)) { + // found end chunk before start + if (chunk.start < end && chunk.end >= end) { + return result; + } + + chunk = chunk.next; + } + + if (chunk && chunk.edited && chunk.start !== start) + throw new Error(`Cannot use replaced character ${start} as slice start anchor.`); + + const startChunk = chunk; + while (chunk) { + if (chunk.intro && (startChunk !== chunk || chunk.start === start)) { + result += chunk.intro; + } + + const containsEnd = chunk.start < end && chunk.end >= end; + if (containsEnd && chunk.edited && chunk.end !== end) + throw new Error(`Cannot use replaced character ${end} as slice end anchor.`); + + const sliceStart = startChunk === chunk ? start - chunk.start : 0; + const sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length; + + result += chunk.content.slice(sliceStart, sliceEnd); + + if (chunk.outro && (!containsEnd || chunk.end === end)) { + result += chunk.outro; + } + + if (containsEnd) { + break; + } + + chunk = chunk.next; + } + + return result; + } + + // TODO deprecate this? not really very useful + snip(start, end) { + const clone = this.clone(); + clone.remove(0, start); + clone.remove(end, clone.original.length); + + return clone; + } + + _split(index) { + if (this.byStart[index] || this.byEnd[index]) return; + + let chunk = this.lastSearchedChunk; + const searchForward = index > chunk.end; + + while (chunk) { + if (chunk.contains(index)) return this._splitChunk(chunk, index); + + chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start]; + } + } + + _splitChunk(chunk, index) { + if (chunk.edited && chunk.content.length) { + // zero-length edited chunks are a special case (overlapping replacements) + const loc = getLocator(this.original)(index); + throw new Error( + `Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – "${chunk.original}")`, + ); + } + + const newChunk = chunk.split(index); + + this.byEnd[index] = chunk; + this.byStart[index] = newChunk; + this.byEnd[newChunk.end] = newChunk; + + if (chunk === this.lastChunk) this.lastChunk = newChunk; + + this.lastSearchedChunk = chunk; + return true; + } + + toString() { + let str = this.intro; + + let chunk = this.firstChunk; + while (chunk) { + str += chunk.toString(); + chunk = chunk.next; + } + + return str + this.outro; + } + + isEmpty() { + let chunk = this.firstChunk; + do { + if ( + (chunk.intro.length && chunk.intro.trim()) || + (chunk.content.length && chunk.content.trim()) || + (chunk.outro.length && chunk.outro.trim()) + ) + return false; + } while ((chunk = chunk.next)); + return true; + } + + length() { + let chunk = this.firstChunk; + let length = 0; + do { + length += chunk.intro.length + chunk.content.length + chunk.outro.length; + } while ((chunk = chunk.next)); + return length; + } + + trimLines() { + return this.trim('[\\r\\n]'); + } + + trim(charType) { + return this.trimStart(charType).trimEnd(charType); + } + + trimEndAborted(charType) { + const rx = new RegExp((charType || '\\s') + '+$'); + + this.outro = this.outro.replace(rx, ''); + if (this.outro.length) return true; + + let chunk = this.lastChunk; + + do { + const end = chunk.end; + const aborted = chunk.trimEnd(rx); + + // if chunk was trimmed, we have a new lastChunk + if (chunk.end !== end) { + if (this.lastChunk === chunk) { + this.lastChunk = chunk.next; + } + + this.byEnd[chunk.end] = chunk; + this.byStart[chunk.next.start] = chunk.next; + this.byEnd[chunk.next.end] = chunk.next; + } + + if (aborted) return true; + chunk = chunk.previous; + } while (chunk); + + return false; + } + + trimEnd(charType) { + this.trimEndAborted(charType); + return this; + } + trimStartAborted(charType) { + const rx = new RegExp('^' + (charType || '\\s') + '+'); + + this.intro = this.intro.replace(rx, ''); + if (this.intro.length) return true; + + let chunk = this.firstChunk; + + do { + const end = chunk.end; + const aborted = chunk.trimStart(rx); + + if (chunk.end !== end) { + // special case... + if (chunk === this.lastChunk) this.lastChunk = chunk.next; + + this.byEnd[chunk.end] = chunk; + this.byStart[chunk.next.start] = chunk.next; + this.byEnd[chunk.next.end] = chunk.next; + } + + if (aborted) return true; + chunk = chunk.next; + } while (chunk); + + return false; + } + + trimStart(charType) { + this.trimStartAborted(charType); + return this; + } + + hasChanged() { + return this.original !== this.toString(); + } + + _replaceRegexp(searchValue, replacement) { + function getReplacement(match, str) { + if (typeof replacement === 'string') { + return replacement.replace(/\$(\$|&|\d+)/g, (_, i) => { + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter + if (i === '$') return '$'; + if (i === '&') return match[0]; + const num = +i; + if (num < match.length) return match[+i]; + return `$${i}`; + }); + } else { + return replacement(...match, match.index, str, match.groups); + } + } + function matchAll(re, str) { + let match; + const matches = []; + while ((match = re.exec(str))) { + matches.push(match); + } + return matches; + } + if (searchValue.global) { + const matches = matchAll(searchValue, this.original); + matches.forEach((match) => { + if (match.index != null) { + const replacement = getReplacement(match, this.original); + if (replacement !== match[0]) { + this.overwrite(match.index, match.index + match[0].length, replacement); + } + } + }); + } else { + const match = this.original.match(searchValue); + if (match && match.index != null) { + const replacement = getReplacement(match, this.original); + if (replacement !== match[0]) { + this.overwrite(match.index, match.index + match[0].length, replacement); + } + } + } + return this; + } + + _replaceString(string, replacement) { + const { original } = this; + const index = original.indexOf(string); + + if (index !== -1) { + this.overwrite(index, index + string.length, replacement); + } + + return this; + } + + replace(searchValue, replacement) { + if (typeof searchValue === 'string') { + return this._replaceString(searchValue, replacement); + } + + return this._replaceRegexp(searchValue, replacement); + } + + _replaceAllString(string, replacement) { + const { original } = this; + const stringLength = string.length; + for ( + let index = original.indexOf(string); + index !== -1; + index = original.indexOf(string, index + stringLength) + ) { + const previous = original.slice(index, index + stringLength); + if (previous !== replacement) this.overwrite(index, index + stringLength, replacement); + } + + return this; + } + + replaceAll(searchValue, replacement) { + if (typeof searchValue === 'string') { + return this._replaceAllString(searchValue, replacement); + } + + if (!searchValue.global) { + throw new TypeError( + 'MagicString.prototype.replaceAll called with a non-global RegExp argument', + ); + } + + return this._replaceRegexp(searchValue, replacement); + } +} + +const hasOwnProp = Object.prototype.hasOwnProperty; + +class Bundle { + constructor(options = {}) { + this.intro = options.intro || ''; + this.separator = options.separator !== undefined ? options.separator : '\n'; + this.sources = []; + this.uniqueSources = []; + this.uniqueSourceIndexByFilename = {}; + } + + addSource(source) { + if (source instanceof MagicString) { + return this.addSource({ + content: source, + filename: source.filename, + separator: this.separator, + }); + } + + if (!isObject(source) || !source.content) { + throw new Error( + 'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`', + ); + } + + ['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => { + if (!hasOwnProp.call(source, option)) source[option] = source.content[option]; + }); + + if (source.separator === undefined) { + // TODO there's a bunch of this sort of thing, needs cleaning up + source.separator = this.separator; + } + + if (source.filename) { + if (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) { + this.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length; + this.uniqueSources.push({ filename: source.filename, content: source.content.original }); + } else { + const uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]]; + if (source.content.original !== uniqueSource.content) { + throw new Error(`Illegal source: same filename (${source.filename}), different contents`); + } + } + } + + this.sources.push(source); + return this; + } + + append(str, options) { + this.addSource({ + content: new MagicString(str), + separator: (options && options.separator) || '', + }); + + return this; + } + + clone() { + const bundle = new Bundle({ + intro: this.intro, + separator: this.separator, + }); + + this.sources.forEach((source) => { + bundle.addSource({ + filename: source.filename, + content: source.content.clone(), + separator: source.separator, + }); + }); + + return bundle; + } + + generateDecodedMap(options = {}) { + const names = []; + let x_google_ignoreList = undefined; + this.sources.forEach((source) => { + Object.keys(source.content.storedNames).forEach((name) => { + if (!~names.indexOf(name)) names.push(name); + }); + }); + + const mappings = new Mappings(options.hires); + + if (this.intro) { + mappings.advance(this.intro); + } + + this.sources.forEach((source, i) => { + if (i > 0) { + mappings.advance(this.separator); + } + + const sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1; + const magicString = source.content; + const locate = getLocator(magicString.original); + + if (magicString.intro) { + mappings.advance(magicString.intro); + } + + magicString.firstChunk.eachNext((chunk) => { + const loc = locate(chunk.start); + + if (chunk.intro.length) mappings.advance(chunk.intro); + + if (source.filename) { + if (chunk.edited) { + mappings.addEdit( + sourceIndex, + chunk.content, + loc, + chunk.storeName ? names.indexOf(chunk.original) : -1, + ); + } else { + mappings.addUneditedChunk( + sourceIndex, + chunk, + magicString.original, + loc, + magicString.sourcemapLocations, + ); + } + } else { + mappings.advance(chunk.content); + } + + if (chunk.outro.length) mappings.advance(chunk.outro); + }); + + if (magicString.outro) { + mappings.advance(magicString.outro); + } + + if (source.ignoreList && sourceIndex !== -1) { + if (x_google_ignoreList === undefined) { + x_google_ignoreList = []; + } + x_google_ignoreList.push(sourceIndex); + } + }); + + return { + file: options.file ? options.file.split(/[/\\]/).pop() : undefined, + sources: this.uniqueSources.map((source) => { + return options.file ? getRelativePath(options.file, source.filename) : source.filename; + }), + sourcesContent: this.uniqueSources.map((source) => { + return options.includeContent ? source.content : null; + }), + names, + mappings: mappings.raw, + x_google_ignoreList, + }; + } + + generateMap(options) { + return new SourceMap(this.generateDecodedMap(options)); + } + + getIndentString() { + const indentStringCounts = {}; + + this.sources.forEach((source) => { + const indentStr = source.content._getRawIndentString(); + + if (indentStr === null) return; + + if (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0; + indentStringCounts[indentStr] += 1; + }); + + return ( + Object.keys(indentStringCounts).sort((a, b) => { + return indentStringCounts[a] - indentStringCounts[b]; + })[0] || '\t' + ); + } + + indent(indentStr) { + if (!arguments.length) { + indentStr = this.getIndentString(); + } + + if (indentStr === '') return this; // noop + + let trailingNewline = !this.intro || this.intro.slice(-1) === '\n'; + + this.sources.forEach((source, i) => { + const separator = source.separator !== undefined ? source.separator : this.separator; + const indentStart = trailingNewline || (i > 0 && /\r?\n$/.test(separator)); + + source.content.indent(indentStr, { + exclude: source.indentExclusionRanges, + indentStart, //: trailingNewline || /\r?\n$/.test( separator ) //true///\r?\n/.test( separator ) + }); + + trailingNewline = source.content.lastChar() === '\n'; + }); + + if (this.intro) { + this.intro = + indentStr + + this.intro.replace(/^[^\n]/gm, (match, index) => { + return index > 0 ? indentStr + match : match; + }); + } + + return this; + } + + prepend(str) { + this.intro = str + this.intro; + return this; + } + + toString() { + const body = this.sources + .map((source, i) => { + const separator = source.separator !== undefined ? source.separator : this.separator; + const str = (i > 0 ? separator : '') + source.content.toString(); + + return str; + }) + .join(''); + + return this.intro + body; + } + + isEmpty() { + if (this.intro.length && this.intro.trim()) return false; + if (this.sources.some((source) => !source.content.isEmpty())) return false; + return true; + } + + length() { + return this.sources.reduce( + (length, source) => length + source.content.length(), + this.intro.length, + ); + } + + trimLines() { + return this.trim('[\\r\\n]'); + } + + trim(charType) { + return this.trimStart(charType).trimEnd(charType); + } + + trimStart(charType) { + const rx = new RegExp('^' + (charType || '\\s') + '+'); + this.intro = this.intro.replace(rx, ''); + + if (!this.intro) { + let source; + let i = 0; + + do { + source = this.sources[i++]; + if (!source) { + break; + } + } while (!source.content.trimStartAborted(charType)); + } + + return this; + } + + trimEnd(charType) { + const rx = new RegExp((charType || '\\s') + '+$'); + + let source; + let i = this.sources.length - 1; + + do { + source = this.sources[i--]; + if (!source) { + this.intro = this.intro.replace(rx, ''); + break; + } + } while (!source.content.trimEndAborted(charType)); + + return this; + } +} + +export { Bundle, SourceMap, MagicString as default }; +//# sourceMappingURL=magic-string.es.mjs.map diff --git a/node_modules/magic-string/dist/magic-string.es.mjs.map b/node_modules/magic-string/dist/magic-string.es.mjs.map new file mode 100644 index 0000000..0d69915 --- /dev/null +++ b/node_modules/magic-string/dist/magic-string.es.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"magic-string.es.mjs","sources":["../src/BitSet.js","../src/Chunk.js","../src/SourceMap.js","../src/utils/guessIndent.js","../src/utils/getRelativePath.js","../src/utils/isObject.js","../src/utils/getLocator.js","../src/utils/Mappings.js","../src/MagicString.js","../src/Bundle.js"],"sourcesContent":["export default class BitSet {\n\tconstructor(arg) {\n\t\tthis.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n\t}\n\n\tadd(n) {\n\t\tthis.bits[n >> 5] |= 1 << (n & 31);\n\t}\n\n\thas(n) {\n\t\treturn !!(this.bits[n >> 5] & (1 << (n & 31)));\n\t}\n}\n","export default class Chunk {\n\tconstructor(start, end, content) {\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.original = content;\n\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\n\t\tthis.content = content;\n\t\tthis.storeName = false;\n\t\tthis.edited = false;\n\n\t\tif (DEBUG) {\n\t\t\t// we make these non-enumerable, for sanity while debugging\n\t\t\tObject.defineProperties(this, {\n\t\t\t\tprevious: { writable: true, value: null },\n\t\t\t\tnext: { writable: true, value: null },\n\t\t\t});\n\t\t} else {\n\t\t\tthis.previous = null;\n\t\t\tthis.next = null;\n\t\t}\n\t}\n\n\tappendLeft(content) {\n\t\tthis.outro += content;\n\t}\n\n\tappendRight(content) {\n\t\tthis.intro = this.intro + content;\n\t}\n\n\tclone() {\n\t\tconst chunk = new Chunk(this.start, this.end, this.original);\n\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\n\t\treturn chunk;\n\t}\n\n\tcontains(index) {\n\t\treturn this.start < index && index < this.end;\n\t}\n\n\teachNext(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.next;\n\t\t}\n\t}\n\n\teachPrevious(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t}\n\n\tedit(content, storeName, contentOnly) {\n\t\tthis.content = content;\n\t\tif (!contentOnly) {\n\t\t\tthis.intro = '';\n\t\t\tthis.outro = '';\n\t\t}\n\t\tthis.storeName = storeName;\n\n\t\tthis.edited = true;\n\n\t\treturn this;\n\t}\n\n\tprependLeft(content) {\n\t\tthis.outro = content + this.outro;\n\t}\n\n\tprependRight(content) {\n\t\tthis.intro = content + this.intro;\n\t}\n\n\treset() {\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t\tif (this.edited) {\n\t\t\tthis.content = this.original;\n\t\t\tthis.storeName = false;\n\t\t\tthis.edited = false;\n\t\t}\n\t}\n\n\tsplit(index) {\n\t\tconst sliceIndex = index - this.start;\n\n\t\tconst originalBefore = this.original.slice(0, sliceIndex);\n\t\tconst originalAfter = this.original.slice(sliceIndex);\n\n\t\tthis.original = originalBefore;\n\n\t\tconst newChunk = new Chunk(index, this.end, originalAfter);\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = '';\n\n\t\tthis.end = index;\n\n\t\tif (this.edited) {\n\t\t\t// after split we should save the edit content record into the correct chunk\n\t\t\t// to make sure sourcemap correct\n\t\t\t// For example:\n\t\t\t// ' test'.trim()\n\t\t\t// split -> ' ' + 'test'\n\t\t\t// ✔️ edit -> '' + 'test'\n\t\t\t// ✖️ edit -> 'test' + ''\n\t\t\t// TODO is this block necessary?...\n\t\t\tnewChunk.edit('', false);\n\t\t\tthis.content = '';\n\t\t} else {\n\t\t\tthis.content = originalBefore;\n\t\t}\n\n\t\tnewChunk.next = this.next;\n\t\tif (newChunk.next) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\n\t\treturn newChunk;\n\t}\n\n\ttoString() {\n\t\treturn this.intro + this.content + this.outro;\n\t}\n\n\ttrimEnd(rx) {\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tthis.split(this.start + trimmed.length).edit('', undefined, true);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tthis.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\tif (this.intro.length) return true;\n\t\t}\n\t}\n\n\ttrimStart(rx) {\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tconst newChunk = this.split(this.end - trimmed.length);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tnewChunk.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t\tthis.edit('', undefined, true);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.outro = this.outro.replace(rx, '');\n\t\t\tif (this.outro.length) return true;\n\t\t}\n\t}\n}\n","import { encode } from '@jridgewell/sourcemap-codec';\n\nfunction getBtoa() {\n\tif (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {\n\t\treturn (str) => globalThis.btoa(unescape(encodeURIComponent(str)));\n\t} else if (typeof Buffer === 'function') {\n\t\treturn (str) => Buffer.from(str, 'utf-8').toString('base64');\n\t} else {\n\t\treturn () => {\n\t\t\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n\t\t};\n\t}\n}\n\nconst btoa = /*#__PURE__*/ getBtoa();\n\nexport default class SourceMap {\n\tconstructor(properties) {\n\t\tthis.version = 3;\n\t\tthis.file = properties.file;\n\t\tthis.sources = properties.sources;\n\t\tthis.sourcesContent = properties.sourcesContent;\n\t\tthis.names = properties.names;\n\t\tthis.mappings = encode(properties.mappings);\n\t\tif (typeof properties.x_google_ignoreList !== 'undefined') {\n\t\t\tthis.x_google_ignoreList = properties.x_google_ignoreList;\n\t\t}\n\t\tif (typeof properties.debugId !== 'undefined') {\n\t\t\tthis.debugId = properties.debugId;\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn JSON.stringify(this);\n\t}\n\n\ttoUrl() {\n\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n\t}\n}\n","export default function guessIndent(code) {\n\tconst lines = code.split('\\n');\n\n\tconst tabbed = lines.filter((line) => /^\\t+/.test(line));\n\tconst spaced = lines.filter((line) => /^ {2,}/.test(line));\n\n\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif (tabbed.length >= spaced.length) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tconst min = spaced.reduce((previous, current) => {\n\t\tconst numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\n\treturn new Array(min + 1).join(' ');\n}\n","export default function getRelativePath(from, to) {\n\tconst fromParts = from.split(/[/\\\\]/);\n\tconst toParts = to.split(/[/\\\\]/);\n\n\tfromParts.pop(); // get dirname\n\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif (fromParts.length) {\n\t\tlet i = fromParts.length;\n\t\twhile (i--) fromParts[i] = '..';\n\t}\n\n\treturn fromParts.concat(toParts).join('/');\n}\n","const toString = Object.prototype.toString;\n\nexport default function isObject(thing) {\n\treturn toString.call(thing) === '[object Object]';\n}\n","export default function getLocator(source) {\n\tconst originalLines = source.split('\\n');\n\tconst lineOffsets = [];\n\n\tfor (let i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\n\treturn function locate(index) {\n\t\tlet i = 0;\n\t\tlet j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tconst m = (i + j) >> 1;\n\t\t\tif (index < lineOffsets[m]) {\n\t\t\t\tj = m;\n\t\t\t} else {\n\t\t\t\ti = m + 1;\n\t\t\t}\n\t\t}\n\t\tconst line = i - 1;\n\t\tconst column = index - lineOffsets[line];\n\t\treturn { line, column };\n\t};\n}\n","const wordRegex = /\\w/;\n\nexport default class Mappings {\n\tconstructor(hires) {\n\t\tthis.hires = hires;\n\t\tthis.generatedCodeLine = 0;\n\t\tthis.generatedCodeColumn = 0;\n\t\tthis.raw = [];\n\t\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\t\tthis.pending = null;\n\t}\n\n\taddEdit(sourceIndex, content, loc, nameIndex) {\n\t\tif (content.length) {\n\t\t\tconst contentLengthMinusOne = content.length - 1;\n\t\t\tlet contentLineEnd = content.indexOf('\\n', 0);\n\t\t\tlet previousContentLineEnd = -1;\n\t\t\t// Loop through each line in the content and add a segment, but stop if the last line is empty,\n\t\t\t// else code afterwards would fill one line too many\n\t\t\twhile (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {\n\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\t\tif (nameIndex >= 0) {\n\t\t\t\t\tsegment.push(nameIndex);\n\t\t\t\t}\n\t\t\t\tthis.rawSegments.push(segment);\n\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\n\t\t\t\tpreviousContentLineEnd = contentLineEnd;\n\t\t\t\tcontentLineEnd = content.indexOf('\\n', contentLineEnd + 1);\n\t\t\t}\n\n\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\tif (nameIndex >= 0) {\n\t\t\t\tsegment.push(nameIndex);\n\t\t\t}\n\t\t\tthis.rawSegments.push(segment);\n\n\t\t\tthis.advance(content.slice(previousContentLineEnd + 1));\n\t\t} else if (this.pending) {\n\t\t\tthis.rawSegments.push(this.pending);\n\t\t\tthis.advance(content);\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\taddUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n\t\tlet originalCharIndex = chunk.start;\n\t\tlet first = true;\n\t\t// when iterating each char, check if it's in a word boundary\n\t\tlet charInHiresBoundary = false;\n\n\t\twhile (originalCharIndex < chunk.end) {\n\t\t\tif (original[originalCharIndex] === '\\n') {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tfirst = true;\n\t\t\t\tcharInHiresBoundary = false;\n\t\t\t} else {\n\t\t\t\tif (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n\t\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\n\t\t\t\t\tif (this.hires === 'boundary') {\n\t\t\t\t\t\t// in hires \"boundary\", group segments per word boundary than per char\n\t\t\t\t\t\tif (wordRegex.test(original[originalCharIndex])) {\n\t\t\t\t\t\t\t// for first char in the boundary found, start the boundary by pushing a segment\n\t\t\t\t\t\t\tif (!charInHiresBoundary) {\n\t\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\t\tcharInHiresBoundary = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// for non-word char, end the boundary by pushing a segment\n\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\tcharInHiresBoundary = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tloc.column += 1;\n\t\t\t\tthis.generatedCodeColumn += 1;\n\t\t\t\tfirst = false;\n\t\t\t}\n\n\t\t\toriginalCharIndex += 1;\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\tadvance(str) {\n\t\tif (!str) return;\n\n\t\tconst lines = str.split('\\n');\n\n\t\tif (lines.length > 1) {\n\t\t\tfor (let i = 0; i < lines.length - 1; i++) {\n\t\t\t\tthis.generatedCodeLine++;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t}\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t}\n\n\t\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n\t}\n}\n","import BitSet from './BitSet.js';\nimport Chunk from './Chunk.js';\nimport SourceMap from './SourceMap.js';\nimport guessIndent from './utils/guessIndent.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\nimport Stats from './utils/Stats.js';\n\nconst n = '\\n';\n\nconst warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false,\n};\n\nexport default class MagicString {\n\tconstructor(string, options = {}) {\n\t\tconst chunk = new Chunk(0, string.length, string);\n\n\t\tObject.defineProperties(this, {\n\t\t\toriginal: { writable: true, value: string },\n\t\t\toutro: { writable: true, value: '' },\n\t\t\tintro: { writable: true, value: '' },\n\t\t\tfirstChunk: { writable: true, value: chunk },\n\t\t\tlastChunk: { writable: true, value: chunk },\n\t\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\t\tbyStart: { writable: true, value: {} },\n\t\t\tbyEnd: { writable: true, value: {} },\n\t\t\tfilename: { writable: true, value: options.filename },\n\t\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\t\tsourcemapLocations: { writable: true, value: new BitSet() },\n\t\t\tstoredNames: { writable: true, value: {} },\n\t\t\tindentStr: { writable: true, value: undefined },\n\t\t\tignoreList: { writable: true, value: options.ignoreList },\n\t\t\toffset: { writable: true, value: options.offset || 0 },\n\t\t});\n\n\t\tif (DEBUG) {\n\t\t\tObject.defineProperty(this, 'stats', { value: new Stats() });\n\t\t}\n\n\t\tthis.byStart[0] = chunk;\n\t\tthis.byEnd[string.length] = chunk;\n\t}\n\n\taddSourcemapLocation(char) {\n\t\tthis.sourcemapLocations.add(char);\n\t}\n\n\tappend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.outro += content;\n\t\treturn this;\n\t}\n\n\tappendLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendLeft');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendLeft(content);\n\t\t} else {\n\t\t\tthis.intro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendLeft');\n\t\treturn this;\n\t}\n\n\tappendRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendRight(content);\n\t\t} else {\n\t\t\tthis.outro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendRight');\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });\n\n\t\tlet originalChunk = this.firstChunk;\n\t\tlet clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());\n\n\t\twhile (originalChunk) {\n\t\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\n\t\t\tconst nextOriginalChunk = originalChunk.next;\n\t\t\tconst nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\t\tif (nextClonedChunk) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\n\t\tcloned.lastChunk = clonedChunk;\n\n\t\tif (this.indentExclusionRanges) {\n\t\t\tcloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t\t}\n\n\t\tcloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n\n\t\tcloned.intro = this.intro;\n\t\tcloned.outro = this.outro;\n\n\t\treturn cloned;\n\t}\n\n\tgenerateDecodedMap(options) {\n\t\toptions = options || {};\n\n\t\tconst sourceIndex = 0;\n\t\tconst names = Object.keys(this.storedNames);\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tconst locate = getLocator(this.original);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.firstChunk.eachNext((chunk) => {\n\t\t\tconst loc = locate(chunk.start);\n\n\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tmappings.addEdit(\n\t\t\t\t\tsourceIndex,\n\t\t\t\t\tchunk.content,\n\t\t\t\t\tloc,\n\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tmappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);\n\t\t\t}\n\n\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: [\n\t\t\t\toptions.source ? getRelativePath(options.file || '', options.source) : options.file || '',\n\t\t\t],\n\t\t\tsourcesContent: options.includeContent ? [this.original] : undefined,\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\t_ensureindentStr() {\n\t\tif (this.indentStr === undefined) {\n\t\t\tthis.indentStr = guessIndent(this.original);\n\t\t}\n\t}\n\n\t_getRawIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr;\n\t}\n\n\tgetIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t}\n\n\tindent(indentStr, options) {\n\t\tconst pattern = /^[^\\r\\n]/gm;\n\n\t\tif (isObject(indentStr)) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = undefined;\n\t\t}\n\n\t\tif (indentStr === undefined) {\n\t\t\tthis._ensureindentStr();\n\t\t\tindentStr = this.indentStr || '\\t';\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\toptions = options || {};\n\n\t\t// Process exclusion ranges\n\t\tconst isExcluded = {};\n\n\t\tif (options.exclude) {\n\t\t\tconst exclusions =\n\t\t\t\ttypeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\t\t\texclusions.forEach((exclusion) => {\n\t\t\t\tfor (let i = exclusion[0]; i < exclusion[1]; i += 1) {\n\t\t\t\t\tisExcluded[i] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tlet shouldIndentNextCharacter = options.indentStart !== false;\n\t\tconst replacer = (match) => {\n\t\t\tif (shouldIndentNextCharacter) return `${indentStr}${match}`;\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\n\t\tthis.intro = this.intro.replace(pattern, replacer);\n\n\t\tlet charIndex = 0;\n\t\tlet chunk = this.firstChunk;\n\n\t\twhile (chunk) {\n\t\t\tconst end = chunk.end;\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\n\t\t\t\t\tif (chunk.content.length) {\n\t\t\t\t\t\tshouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\n\t\t\t\twhile (charIndex < end) {\n\t\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\t\tconst char = this.original[charIndex];\n\n\t\t\t\t\t\tif (char === '\\n') {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\t} else if (char !== '\\r' && shouldIndentNextCharacter) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\t\tif (charIndex === chunk.start) {\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tthis.outro = this.outro.replace(pattern, replacer);\n\n\t\treturn this;\n\t}\n\n\tinsert() {\n\t\tthrow new Error(\n\t\t\t'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)',\n\t\t);\n\t}\n\n\tinsertLeft(index, content) {\n\t\tif (!warned.insertLeft) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',\n\t\t\t);\n\t\t\twarned.insertLeft = true;\n\t\t}\n\n\t\treturn this.appendLeft(index, content);\n\t}\n\n\tinsertRight(index, content) {\n\t\tif (!warned.insertRight) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',\n\t\t\t);\n\t\t\twarned.insertRight = true;\n\t\t}\n\n\t\treturn this.prependRight(index, content);\n\t}\n\n\tmove(start, end, index) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tindex = index + this.offset;\n\n\t\tif (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');\n\n\t\tif (DEBUG) this.stats.time('move');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tthis._split(index);\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tconst oldLeft = first.previous;\n\t\tconst oldRight = last.next;\n\n\t\tconst newRight = this.byStart[index];\n\t\tif (!newRight && last === this.lastChunk) return this;\n\t\tconst newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\t\tif (oldLeft) oldLeft.next = oldRight;\n\t\tif (oldRight) oldRight.previous = oldLeft;\n\n\t\tif (newLeft) newLeft.next = first;\n\t\tif (newRight) newRight.previous = last;\n\n\t\tif (!first.previous) this.firstChunk = last.next;\n\t\tif (!last.next) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight || null;\n\n\t\tif (!newLeft) this.firstChunk = first;\n\t\tif (!newRight) this.lastChunk = last;\n\n\t\tif (DEBUG) this.stats.timeEnd('move');\n\t\treturn this;\n\t}\n\n\toverwrite(start, end, content, options) {\n\t\toptions = options || {};\n\t\treturn this.update(start, end, content, { ...options, overwrite: !options.contentOnly });\n\t}\n\n\tupdate(start, end, content, options) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('replacement content must be a string');\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (end > this.original.length) throw new Error('end is out of bounds');\n\t\tif (start === end)\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot overwrite a zero-length range – use appendLeft or prependRight instead',\n\t\t\t);\n\n\t\tif (DEBUG) this.stats.time('overwrite');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tif (options === true) {\n\t\t\tif (!warned.storeName) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',\n\t\t\t\t);\n\t\t\t\twarned.storeName = true;\n\t\t\t}\n\n\t\t\toptions = { storeName: true };\n\t\t}\n\t\tconst storeName = options !== undefined ? options.storeName : false;\n\t\tconst overwrite = options !== undefined ? options.overwrite : false;\n\n\t\tif (storeName) {\n\t\t\tconst original = this.original.slice(start, end);\n\t\t\tObject.defineProperty(this.storedNames, original, {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: true,\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t}\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tif (first) {\n\t\t\tlet chunk = first;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tif (chunk.next !== this.byStart[chunk.end]) {\n\t\t\t\t\tthrow new Error('Cannot overwrite across a split point');\n\t\t\t\t}\n\t\t\t\tchunk = chunk.next;\n\t\t\t\tchunk.edit('', false);\n\t\t\t}\n\n\t\t\tfirst.edit(content, storeName, !overwrite);\n\t\t} else {\n\t\t\t// must be inserting at the end\n\t\t\tconst newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n\t\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('overwrite');\n\t\treturn this;\n\t}\n\n\tprepend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t}\n\n\tprependLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependLeft(content);\n\t\t} else {\n\t\t\tthis.intro = content + this.intro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tprependRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependRight(content);\n\t\t} else {\n\t\t\tthis.outro = content + this.outro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tremove(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('remove');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.intro = '';\n\t\t\tchunk.outro = '';\n\t\t\tchunk.edit('');\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('remove');\n\t\treturn this;\n\t}\n\n\treset(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('reset');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.reset();\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('reset');\n\t\treturn this;\n\t}\n\n\tlastChar() {\n\t\tif (this.outro.length) return this.outro[this.outro.length - 1];\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];\n\t\t\tif (chunk.content.length) return chunk.content[chunk.content.length - 1];\n\t\t\tif (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];\n\t\t} while ((chunk = chunk.previous));\n\t\tif (this.intro.length) return this.intro[this.intro.length - 1];\n\t\treturn '';\n\t}\n\n\tlastLine() {\n\t\tlet lineIndex = this.outro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.outro.substr(lineIndex + 1);\n\t\tlet lineStr = this.outro;\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length > 0) {\n\t\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.outro + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.content.length > 0) {\n\t\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.content + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.intro.length > 0) {\n\t\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.intro + lineStr;\n\t\t\t}\n\t\t} while ((chunk = chunk.previous));\n\t\tlineIndex = this.intro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;\n\t\treturn this.intro + lineStr;\n\t}\n\n\tslice(start = 0, end = this.original.length - this.offset) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tlet result = '';\n\n\t\t// find start chunk\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t\t// found end chunk before start\n\t\t\tif (chunk.start < end && chunk.end >= end) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tif (chunk && chunk.edited && chunk.start !== start)\n\t\t\tthrow new Error(`Cannot use replaced character ${start} as slice start anchor.`);\n\n\t\tconst startChunk = chunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n\t\t\t\tresult += chunk.intro;\n\t\t\t}\n\n\t\t\tconst containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif (containsEnd && chunk.edited && chunk.end !== end)\n\t\t\t\tthrow new Error(`Cannot use replaced character ${end} as slice end anchor.`);\n\n\t\t\tconst sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tconst sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\n\t\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) {\n\t\t\t\tresult += chunk.outro;\n\t\t\t}\n\n\t\t\tif (containsEnd) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// TODO deprecate this? not really very useful\n\tsnip(start, end) {\n\t\tconst clone = this.clone();\n\t\tclone.remove(0, start);\n\t\tclone.remove(end, clone.original.length);\n\n\t\treturn clone;\n\t}\n\n\t_split(index) {\n\t\tif (this.byStart[index] || this.byEnd[index]) return;\n\n\t\tif (DEBUG) this.stats.time('_split');\n\n\t\tlet chunk = this.lastSearchedChunk;\n\t\tconst searchForward = index > chunk.end;\n\n\t\twhile (chunk) {\n\t\t\tif (chunk.contains(index)) return this._splitChunk(chunk, index);\n\n\t\t\tchunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n\t\t}\n\t}\n\n\t_splitChunk(chunk, index) {\n\t\tif (chunk.edited && chunk.content.length) {\n\t\t\t// zero-length edited chunks are a special case (overlapping replacements)\n\t\t\tconst loc = getLocator(this.original)(index);\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – \"${chunk.original}\")`,\n\t\t\t);\n\t\t}\n\n\t\tconst newChunk = chunk.split(index);\n\n\t\tthis.byEnd[index] = chunk;\n\t\tthis.byStart[index] = newChunk;\n\t\tthis.byEnd[newChunk.end] = newChunk;\n\n\t\tif (chunk === this.lastChunk) this.lastChunk = newChunk;\n\n\t\tthis.lastSearchedChunk = chunk;\n\t\tif (DEBUG) this.stats.timeEnd('_split');\n\t\treturn true;\n\t}\n\n\ttoString() {\n\t\tlet str = this.intro;\n\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn str + this.outro;\n\t}\n\n\tisEmpty() {\n\t\tlet chunk = this.firstChunk;\n\t\tdo {\n\t\t\tif (\n\t\t\t\t(chunk.intro.length && chunk.intro.trim()) ||\n\t\t\t\t(chunk.content.length && chunk.content.trim()) ||\n\t\t\t\t(chunk.outro.length && chunk.outro.trim())\n\t\t\t)\n\t\t\t\treturn false;\n\t\t} while ((chunk = chunk.next));\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\tlet chunk = this.firstChunk;\n\t\tlet length = 0;\n\t\tdo {\n\t\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t\t} while ((chunk = chunk.next));\n\t\treturn length;\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimEndAborted(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tlet chunk = this.lastChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimEnd(rx);\n\n\t\t\t// if chunk was trimmed, we have a new lastChunk\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (this.lastChunk === chunk) {\n\t\t\t\t\tthis.lastChunk = chunk.next;\n\t\t\t\t}\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.previous;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimEnd(charType) {\n\t\tthis.trimEndAborted(charType);\n\t\treturn this;\n\t}\n\ttrimStartAborted(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tlet chunk = this.firstChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimStart(rx);\n\n\t\t\tif (chunk.end !== end) {\n\t\t\t\t// special case...\n\t\t\t\tif (chunk === this.lastChunk) this.lastChunk = chunk.next;\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.next;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimStart(charType) {\n\t\tthis.trimStartAborted(charType);\n\t\treturn this;\n\t}\n\n\thasChanged() {\n\t\treturn this.original !== this.toString();\n\t}\n\n\t_replaceRegexp(searchValue, replacement) {\n\t\tfunction getReplacement(match, str) {\n\t\t\tif (typeof replacement === 'string') {\n\t\t\t\treturn replacement.replace(/\\$(\\$|&|\\d+)/g, (_, i) => {\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter\n\t\t\t\t\tif (i === '$') return '$';\n\t\t\t\t\tif (i === '&') return match[0];\n\t\t\t\t\tconst num = +i;\n\t\t\t\t\tif (num < match.length) return match[+i];\n\t\t\t\t\treturn `$${i}`;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn replacement(...match, match.index, str, match.groups);\n\t\t\t}\n\t\t}\n\t\tfunction matchAll(re, str) {\n\t\t\tlet match;\n\t\t\tconst matches = [];\n\t\t\twhile ((match = re.exec(str))) {\n\t\t\t\tmatches.push(match);\n\t\t\t}\n\t\t\treturn matches;\n\t\t}\n\t\tif (searchValue.global) {\n\t\t\tconst matches = matchAll(searchValue, this.original);\n\t\t\tmatches.forEach((match) => {\n\t\t\t\tif (match.index != null) {\n\t\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst match = this.original.match(searchValue);\n\t\t\tif (match && match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t_replaceString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst index = original.indexOf(string);\n\n\t\tif (index !== -1) {\n\t\t\tthis.overwrite(index, index + string.length, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplace(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceString(searchValue, replacement);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n\n\t_replaceAllString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst stringLength = string.length;\n\t\tfor (\n\t\t\tlet index = original.indexOf(string);\n\t\t\tindex !== -1;\n\t\t\tindex = original.indexOf(string, index + stringLength)\n\t\t) {\n\t\t\tconst previous = original.slice(index, index + stringLength);\n\t\t\tif (previous !== replacement) this.overwrite(index, index + stringLength, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplaceAll(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceAllString(searchValue, replacement);\n\t\t}\n\n\t\tif (!searchValue.global) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'MagicString.prototype.replaceAll called with a non-global RegExp argument',\n\t\t\t);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n}\n","import MagicString from './MagicString.js';\nimport SourceMap from './SourceMap.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\n\nconst hasOwnProp = Object.prototype.hasOwnProperty;\n\nexport default class Bundle {\n\tconstructor(options = {}) {\n\t\tthis.intro = options.intro || '';\n\t\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\t\tthis.sources = [];\n\t\tthis.uniqueSources = [];\n\t\tthis.uniqueSourceIndexByFilename = {};\n\t}\n\n\taddSource(source) {\n\t\tif (source instanceof MagicString) {\n\t\t\treturn this.addSource({\n\t\t\t\tcontent: source,\n\t\t\t\tfilename: source.filename,\n\t\t\t\tseparator: this.separator,\n\t\t\t});\n\t\t}\n\n\t\tif (!isObject(source) || !source.content) {\n\t\t\tthrow new Error(\n\t\t\t\t'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`',\n\t\t\t);\n\t\t}\n\n\t\t['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => {\n\t\t\tif (!hasOwnProp.call(source, option)) source[option] = source.content[option];\n\t\t});\n\n\t\tif (source.separator === undefined) {\n\t\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\tsource.separator = this.separator;\n\t\t}\n\n\t\tif (source.filename) {\n\t\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t} else {\n\t\t\t\tconst uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\t\tthrow new Error(`Illegal source: same filename (${source.filename}), different contents`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sources.push(source);\n\t\treturn this;\n\t}\n\n\tappend(str, options) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString(str),\n\t\t\tseparator: (options && options.separator) || '',\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator,\n\t\t});\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tseparator: source.separator,\n\t\t\t});\n\t\t});\n\n\t\treturn bundle;\n\t}\n\n\tgenerateDecodedMap(options = {}) {\n\t\tconst names = [];\n\t\tlet x_google_ignoreList = undefined;\n\t\tthis.sources.forEach((source) => {\n\t\t\tObject.keys(source.content.storedNames).forEach((name) => {\n\t\t\t\tif (!~names.indexOf(name)) names.push(name);\n\t\t\t});\n\t\t});\n\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tif (i > 0) {\n\t\t\t\tmappings.advance(this.separator);\n\t\t\t}\n\n\t\t\tconst sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\t\tconst magicString = source.content;\n\t\t\tconst locate = getLocator(magicString.original);\n\n\t\t\tif (magicString.intro) {\n\t\t\t\tmappings.advance(magicString.intro);\n\t\t\t}\n\n\t\t\tmagicString.firstChunk.eachNext((chunk) => {\n\t\t\t\tconst loc = locate(chunk.start);\n\n\t\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\t\tif (source.filename) {\n\t\t\t\t\tif (chunk.edited) {\n\t\t\t\t\t\tmappings.addEdit(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk.content,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmappings.addUneditedChunk(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk,\n\t\t\t\t\t\t\tmagicString.original,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tmagicString.sourcemapLocations,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmappings.advance(chunk.content);\n\t\t\t\t}\n\n\t\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t\t});\n\n\t\t\tif (magicString.outro) {\n\t\t\t\tmappings.advance(magicString.outro);\n\t\t\t}\n\n\t\t\tif (source.ignoreList && sourceIndex !== -1) {\n\t\t\t\tif (x_google_ignoreList === undefined) {\n\t\t\t\t\tx_google_ignoreList = [];\n\t\t\t\t}\n\t\t\t\tx_google_ignoreList.push(sourceIndex);\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\tgetIndentString() {\n\t\tconst indentStringCounts = {};\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tconst indentStr = source.content._getRawIndentString();\n\n\t\t\tif (indentStr === null) return;\n\n\t\t\tif (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0;\n\t\t\tindentStringCounts[indentStr] += 1;\n\t\t});\n\n\t\treturn (\n\t\t\tObject.keys(indentStringCounts).sort((a, b) => {\n\t\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t\t})[0] || '\\t'\n\t\t);\n\t}\n\n\tindent(indentStr) {\n\t\tif (!arguments.length) {\n\t\t\tindentStr = this.getIndentString();\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\tlet trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\tconst indentStart = trailingNewline || (i > 0 && /\\r?\\n$/.test(separator));\n\n\t\t\tsource.content.indent(indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart, //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t});\n\n\t\t\ttrailingNewline = source.content.lastChar() === '\\n';\n\t\t});\n\n\t\tif (this.intro) {\n\t\t\tthis.intro =\n\t\t\t\tindentStr +\n\t\t\t\tthis.intro.replace(/^[^\\n]/gm, (match, index) => {\n\t\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprepend(str) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t}\n\n\ttoString() {\n\t\tconst body = this.sources\n\t\t\t.map((source, i) => {\n\t\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\t\tconst str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\t\treturn str;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn this.intro + body;\n\t}\n\n\tisEmpty() {\n\t\tif (this.intro.length && this.intro.trim()) return false;\n\t\tif (this.sources.some((source) => !source.content.isEmpty())) return false;\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\treturn this.sources.reduce(\n\t\t\t(length, source) => length + source.content.length(),\n\t\t\tthis.intro.length,\n\t\t);\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimStart(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\t\tthis.intro = this.intro.replace(rx, '');\n\n\t\tif (!this.intro) {\n\t\t\tlet source;\n\t\t\tlet i = 0;\n\n\t\t\tdo {\n\t\t\t\tsource = this.sources[i++];\n\t\t\t\tif (!source) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} while (!source.content.trimStartAborted(charType));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\ttrimEnd(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tlet source;\n\t\tlet i = this.sources.length - 1;\n\n\t\tdo {\n\t\t\tsource = this.sources[i--];\n\t\t\tif (!source) {\n\t\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimEndAborted(charType));\n\n\t\treturn this;\n\t}\n}\n"],"names":[],"mappings":";;AAAe,MAAM,MAAM,CAAC;AAC5B,CAAC,WAAW,CAAC,GAAG,EAAE;AAClB,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,YAAY,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;AAC5D,EAAE;AACF;AACA,CAAC,GAAG,CAAC,CAAC,EAAE;AACR,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AACrC,EAAE;AACF;AACA,CAAC,GAAG,CAAC,CAAC,EAAE;AACR,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACjD,EAAE;AACF;;ACZe,MAAM,KAAK,CAAC;AAC3B,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE;AAClC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;AACpB,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;AAChB,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;;AAEzB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;AACjB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;;AAEjB,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACxB,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;AACxB,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;;AAErB,EAMS;AACT,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;AACvB,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AACnB,GAAE;AACF,EAAC;;AAED,CAAC,UAAU,CAAC,OAAO,EAAE;AACrB,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,CAAA;AACvB,EAAC;;AAED,CAAC,WAAW,CAAC,OAAO,EAAE;AACtB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;AACnC,EAAC;;AAED,CAAC,KAAK,GAAG;AACT,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;;AAE9D,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAC1B,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAC1B,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;AAC9B,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;AAClC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;;AAE5B,EAAE,OAAO,KAAK,CAAA;AACd,EAAC;;AAED,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjB,EAAE,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;AAC/C,EAAC;;AAED,CAAC,QAAQ,CAAC,EAAE,EAAE;AACd,EAAE,IAAI,KAAK,GAAG,IAAI,CAAA;AAClB,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;AACZ,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AACrB,GAAE;AACF,EAAC;;AAED,CAAC,YAAY,CAAC,EAAE,EAAE;AAClB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAA;AAClB,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;AACZ,GAAG,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAA;AACzB,GAAE;AACF,EAAC;;AAED,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE;AACvC,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACxB,EAAE,IAAI,CAAC,WAAW,EAAE;AACpB,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;AAClB,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;AAClB,GAAE;AACF,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;;AAE5B,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;;AAEpB,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,WAAW,CAAC,OAAO,EAAE;AACtB,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;AACnC,EAAC;;AAED,CAAC,YAAY,CAAC,OAAO,EAAE;AACvB,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;AACnC,EAAC;;AAED,CAAC,KAAK,GAAG;AACT,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;AACjB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;AACjB,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;AACnB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAA;AAC/B,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;AACzB,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;AACtB,GAAE;AACF,EAAC;;AAED,CAAC,KAAK,CAAC,KAAK,EAAE;AACd,EAAE,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;;AAEvC,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;AAC3D,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;;AAEvD,EAAE,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAA;;AAEhC,EAAE,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;AAC5D,EAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAC7B,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;;AAEjB,EAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAA;;AAElB,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;AAC3B,GAAG,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;AACpB,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,OAAO,GAAG,cAAc,CAAA;AAChC,GAAE;;AAEF,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;AAC3B,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACtD,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAA;AAC1B,EAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAA;;AAEtB,EAAE,OAAO,QAAQ,CAAA;AACjB,EAAC;;AAED,CAAC,QAAQ,GAAG;AACZ,EAAE,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;AAC/C,EAAC;;AAED,CAAC,OAAO,CAAC,EAAE,EAAE;AACb,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AACzC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAEpC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;;AAE9C,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;AACtB,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;AACjC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;AACrE,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB;AACA,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AAC7C,KAAI;AACJ,IAAG;AACH,GAAG,OAAO,IAAI,CAAA;AACd,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;;AAEjC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AAC1C,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;AACrC,GAAE;AACF,EAAC;;AAED,CAAC,SAAS,CAAC,EAAE,EAAE;AACf,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AACzC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAEpC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;;AAE9C,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;AACtB,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;AACjC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC1D,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB;AACA,KAAK,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACjD,KAAI;AACJ,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;AAClC,IAAG;AACH,GAAG,OAAO,IAAI,CAAA;AACd,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;;AAEjC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AAC1C,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;AACrC,GAAE;AACF,EAAC;AACD;;ACrLA,SAAS,OAAO,GAAG;AACnB,CAAC,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;AACjF,EAAE,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrE,EAAE,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AAC1C,EAAE,OAAO,CAAC,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC/D,EAAE,MAAM;AACR,EAAE,OAAO,MAAM;AACf,GAAG,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;AAC9F,GAAG,CAAC;AACJ,EAAE;AACF,CAAC;AACD;AACA,MAAM,IAAI,iBAAiB,OAAO,EAAE,CAAC;AACrC;AACe,MAAM,SAAS,CAAC;AAC/B,CAAC,WAAW,CAAC,UAAU,EAAE;AACzB,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACnB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;AAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AACpC,EAAE,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;AAClD,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9C,EAAE,IAAI,OAAO,UAAU,CAAC,mBAAmB,KAAK,WAAW,EAAE;AAC7D,GAAG,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,mBAAmB,CAAC;AAC7D,GAAG;AACH,EAAE,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,WAAW,EAAE;AACjD,GAAG,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AACrC,GAAG;AACH,EAAE;AACF;AACA,CAAC,QAAQ,GAAG;AACZ,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9B,EAAE;AACF;AACA,CAAC,KAAK,GAAG;AACT,EAAE,OAAO,6CAA6C,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/E,EAAE;AACF;;ACvCe,SAAS,WAAW,CAAC,IAAI,EAAE;AAC1C,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC;AACA,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D;AACA,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACjD,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA;AACA;AACA,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACrC,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA;AACA,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAK;AAClD,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACvC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACd;AACA,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC;;ACxBe,SAAS,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE;AAClD,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACnC;AACA,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AACjB;AACA,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE;AACrC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,EAAE;AACF;AACA,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE;AACvB,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;AAC3B,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAClC,EAAE;AACF;AACA,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C;;ACjBA,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC3C;AACe,SAAS,QAAQ,CAAC,KAAK,EAAE;AACxC,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC;AACnD;;ACJe,SAAS,UAAU,CAAC,MAAM,EAAE;AAC3C,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AACxB;AACA,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzD,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,EAAE,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACrC,EAAE;AACF;AACA,CAAC,OAAO,SAAS,MAAM,CAAC,KAAK,EAAE;AAC/B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;AAC7B,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;AAChB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B,GAAG,IAAI,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,MAAM;AACV,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACd,IAAI;AACJ,GAAG;AACH,EAAE,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,EAAE,MAAM,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3C,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,EAAE,CAAC;AACH;;ACxBA,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB;AACe,MAAM,QAAQ,CAAC;AAC9B,CAAC,WAAW,CAAC,KAAK,EAAE;AACpB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC7B,EAAE,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AAChB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;AAC3D,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE;AACF;AACA,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE;AAC/C,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;AACtB,GAAG,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AACpD,GAAG,IAAI,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACjD,GAAG,IAAI,sBAAsB,GAAG,CAAC,CAAC,CAAC;AACnC;AACA;AACA,GAAG,OAAO,cAAc,IAAI,CAAC,IAAI,qBAAqB,GAAG,cAAc,EAAE;AACzE,IAAI,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AAClF,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE;AACxB,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC;AACA,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAC7D,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AACjC;AACA,IAAI,sBAAsB,GAAG,cAAc,CAAC;AAC5C,IAAI,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;AAC/D,IAAI;AACJ;AACA,GAAG,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACjF,GAAG,IAAI,SAAS,IAAI,CAAC,EAAE;AACvB,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5B,IAAI;AACJ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClC;AACA,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3D,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AAC3B,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE;AACF;AACA,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,kBAAkB,EAAE;AACzE,EAAE,IAAI,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC;AACtC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC;AACnB;AACA,EAAE,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAClC;AACA,EAAE,OAAO,iBAAiB,GAAG,KAAK,CAAC,GAAG,EAAE;AACxC,GAAG,IAAI,QAAQ,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE;AAC7C,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;AAClB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AACnB,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAC7D,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AACjC,IAAI,KAAK,GAAG,IAAI,CAAC;AACjB,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAChC,IAAI,MAAM;AACV,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;AAC1E,KAAK,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACnF;AACA,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE;AACpC;AACA,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE;AACvD;AACA,OAAO,IAAI,CAAC,mBAAmB,EAAE;AACjC,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,QAAQ,mBAAmB,GAAG,IAAI,CAAC;AACnC,QAAQ;AACR,OAAO,MAAM;AACb;AACA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,OAAO,mBAAmB,GAAG,KAAK,CAAC;AACnC,OAAO;AACP,MAAM,MAAM;AACZ,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,MAAM;AACN,KAAK;AACL;AACA,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC;AAClC,IAAI,KAAK,GAAG,KAAK,CAAC;AAClB,IAAI;AACJ;AACA,GAAG,iBAAiB,IAAI,CAAC,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE;AACF;AACA,CAAC,OAAO,CAAC,GAAG,EAAE;AACd,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO;AACnB;AACA,EAAE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC;AACA,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAC7D,IAAI;AACJ,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AAChC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7D,EAAE;AACF;;ACtGA,MAAM,CAAC,GAAG,IAAI,CAAA;;AAEd,MAAM,MAAM,GAAG;AACf,CAAC,UAAU,EAAE,KAAK;AAClB,CAAC,WAAW,EAAE,KAAK;AACnB,CAAC,SAAS,EAAE,KAAK;AACjB,CAAC,CAAA;;AAEc,MAAM,WAAW,CAAC;AACjC,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE;AACnC,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;;AAEnD,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAChC,GAAG,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;AAC9C,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AACvC,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AACvC,GAAG,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AAC/C,GAAG,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AAC9C,GAAG,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AACtD,GAAG,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AACzC,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AACvC,GAAG,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE;AACxD,GAAG,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,qBAAqB,EAAE;AAClF,GAAG,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,EAAE;AAC9D,GAAG,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AAC7C,GAAG,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;AAClD,GAAG,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE;AAC5D,GAAG,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;AACzD,GAAG,CAAC,CAAA;;AAMJ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AACzB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAA;AACnC,EAAC;;AAED,CAAC,oBAAoB,CAAC,IAAI,EAAE;AAC5B,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACnC,EAAC;;AAED,CAAC,MAAM,CAAC,OAAO,EAAE;AACjB,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAA;;AAExF,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,CAAA;AACvB,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AAC5B,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;AAE7B,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAA;;AAI3F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;AAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAEjC,EAAE,IAAI,KAAK,EAAE;AACb,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AAC5B,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAA;AACxB,GAAE;AAGF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;AAC7B,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;AAE7B,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAA;;AAI3F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;AAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;AAEnC,EAAE,IAAI,KAAK,EAAE;AACb,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AAC7B,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAA;AACxB,GAAE;AAGF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,KAAK,GAAG;AACT,EAAE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;;AAEjG,EAAE,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,CAAA;AACrC,EAAE,IAAI,WAAW,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,iBAAiB,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,CAAA;;AAE1F,EAAE,OAAO,aAAa,EAAE;AACxB,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAA;AAClD,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAA;;AAE9C,GAAG,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAA;AAC/C,GAAG,MAAM,eAAe,GAAG,iBAAiB,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAA;;AAEzE,GAAG,IAAI,eAAe,EAAE;AACxB,IAAI,WAAW,CAAC,IAAI,GAAG,eAAe,CAAA;AACtC,IAAI,eAAe,CAAC,QAAQ,GAAG,WAAW,CAAA;;AAE1C,IAAI,WAAW,GAAG,eAAe,CAAA;AACjC,IAAG;;AAEH,GAAG,aAAa,GAAG,iBAAiB,CAAA;AACpC,GAAE;;AAEF,EAAE,MAAM,CAAC,SAAS,GAAG,WAAW,CAAA;;AAEhC,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAClC,GAAG,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAA;AACpE,GAAE;;AAEF,EAAE,MAAM,CAAC,kBAAkB,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;;AAEjE,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;AAC3B,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;;AAE3B,EAAE,OAAO,MAAM,CAAA;AACf,EAAC;;AAED,CAAC,kBAAkB,CAAC,OAAO,EAAE;AAC7B,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;;AAEzB,EAAE,MAAM,WAAW,GAAG,CAAC,CAAA;AACvB,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;AAC7C,EAAE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;AAE9C,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;;AAE1C,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;AAClB,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC/B,GAAE;;AAEF,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK;AACtC,GAAG,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAElC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAExD,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;AACrB,IAAI,QAAQ,CAAC,OAAO;AACpB,KAAK,WAAW;AAChB,KAAK,KAAK,CAAC,OAAO;AAClB,KAAK,GAAG;AACR,KAAK,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzD,KAAK,CAAA;AACL,IAAI,MAAM;AACV,IAAI,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;AAC9F,IAAG;;AAEH,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AACxD,GAAG,CAAC,CAAA;;AAEJ,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS;AACrE,GAAG,OAAO,EAAE;AACZ,IAAI,OAAO,CAAC,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE;AAC7F,IAAI;AACJ,GAAG,cAAc,EAAE,OAAO,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS;AACvE,GAAG,KAAK;AACR,GAAG,QAAQ,EAAE,QAAQ,CAAC,GAAG;AACzB,GAAG,mBAAmB,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,WAAW,CAAC,GAAG,SAAS;AACnE,GAAG,CAAA;AACH,EAAC;;AAED,CAAC,WAAW,CAAC,OAAO,EAAE;AACtB,EAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAA;AACxD,EAAC;;AAED,CAAC,gBAAgB,GAAG;AACpB,EAAE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AACpC,GAAG,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC9C,GAAE;AACF,EAAC;;AAED,CAAC,mBAAmB,GAAG;AACvB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAA;AACzB,EAAE,OAAO,IAAI,CAAC,SAAS,CAAA;AACvB,EAAC;;AAED,CAAC,eAAe,GAAG;AACnB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAA;AACzB,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAA;AACxD,EAAC;;AAED,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE;AAC5B,EAAE,MAAM,OAAO,GAAG,YAAY,CAAA;;AAE9B,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC3B,GAAG,OAAO,GAAG,SAAS,CAAA;AACtB,GAAG,SAAS,GAAG,SAAS,CAAA;AACxB,GAAE;;AAEF,EAAE,IAAI,SAAS,KAAK,SAAS,EAAE;AAC/B,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;AAC1B,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAA;AACrC,GAAE;;AAEF,EAAE,IAAI,SAAS,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC;;AAEpC,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;;AAEzB;AACA,EAAE,MAAM,UAAU,GAAG,EAAE,CAAA;;AAEvB,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;AACvB,GAAG,MAAM,UAAU;AACnB,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAA;AAChF,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AACrC,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACzD,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;AACzB,KAAI;AACJ,IAAI,CAAC,CAAA;AACL,GAAE;;AAEF,EAAE,IAAI,yBAAyB,GAAG,OAAO,CAAC,WAAW,KAAK,KAAK,CAAA;AAC/D,EAAE,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK;AAC9B,GAAG,IAAI,yBAAyB,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;AAC/D,GAAG,yBAAyB,GAAG,IAAI,CAAA;AACnC,GAAG,OAAO,KAAK,CAAA;AACf,GAAG,CAAA;;AAEH,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;;AAEpD,EAAE,IAAI,SAAS,GAAG,CAAC,CAAA;AACnB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;;AAE7B,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;;AAExB,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;AACrB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAChC,KAAK,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;;AAE7D,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;AAC/B,MAAM,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAA;AAClF,MAAK;AACL,KAAI;AACJ,IAAI,MAAM;AACV,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAA;;AAE3B,IAAI,OAAO,SAAS,GAAG,GAAG,EAAE;AAC5B,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AACjC,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;;AAE3C,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE;AACzB,OAAO,yBAAyB,GAAG,IAAI,CAAA;AACvC,OAAO,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,yBAAyB,EAAE;AAC7D,OAAO,yBAAyB,GAAG,KAAK,CAAA;;AAExC,OAAO,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE;AACtC,QAAQ,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;AACrC,QAAQ,MAAM;AACd,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;AAC1C,QAAQ,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AAC1B,QAAQ,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;AACrC,QAAO;AACP,OAAM;AACN,MAAK;;AAEL,KAAK,SAAS,IAAI,CAAC,CAAA;AACnB,KAAI;AACJ,IAAG;;AAEH,GAAG,SAAS,GAAG,KAAK,CAAC,GAAG,CAAA;AACxB,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AACrB,GAAE;;AAEF,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;;AAEpD,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,MAAM,GAAG;AACV,EAAE,MAAM,IAAI,KAAK;AACjB,GAAG,iFAAiF;AACpF,GAAG,CAAA;AACH,EAAC;;AAED,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AAC5B,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1B,GAAG,OAAO,CAAC,IAAI;AACf,IAAI,oFAAoF;AACxF,IAAI,CAAA;AACJ,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAA;AAC3B,GAAE;;AAEF,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AACxC,EAAC;;AAED,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;AAC7B,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAC3B,GAAG,OAAO,CAAC,IAAI;AACf,IAAI,uFAAuF;AAC3F,IAAI,CAAA;AACJ,GAAG,MAAM,CAAC,WAAW,GAAG,IAAI,CAAA;AAC5B,GAAE;;AAEF,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAC1C,EAAC;;AAED,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;AACzB,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;AAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;AACzB,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;AAE7B,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;;AAI9F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAClB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;AAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACnC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;;AAE9B,EAAE,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAA;AAChC,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAA;;AAE5B,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACtC,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,CAAA;AACvD,EAAE,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAA;;AAE/D,EAAE,IAAI,OAAO,EAAE,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAA;AACtC,EAAE,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAA;;AAE3C,EAAE,IAAI,OAAO,EAAE,OAAO,CAAC,IAAI,GAAG,KAAK,CAAA;AACnC,EAAE,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAA;;AAExC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAA;AAClD,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAClB,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAA;AAClC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAA;AAC7B,GAAE;;AAEF,EAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAA;AAC1B,EAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,IAAI,IAAI,CAAA;;AAE9B,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;AACvC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;AAGtC,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;AACzC,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;AACzB,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;AAC1F,EAAC;;AAED,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;AACtC,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;AAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;AAEzB,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAA;;AAE9F,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAClD,GAAG,OAAO,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAC9C,GAAE;;AAEF,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AACzE,EAAE,IAAI,KAAK,KAAK,GAAG;AACnB,GAAG,MAAM,IAAI,KAAK;AAClB,IAAI,+EAA+E;AACnF,IAAI,CAAA;;AAIJ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;AAElB,EAAE,IAAI,OAAO,KAAK,IAAI,EAAE;AACxB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC1B,IAAI,OAAO,CAAC,IAAI;AAChB,KAAK,+HAA+H;AACpI,KAAK,CAAA;AACL,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAA;AAC3B,IAAG;;AAEH,GAAG,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;AAChC,GAAE;AACF,EAAE,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,CAAA;AACrE,EAAE,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,CAAA;;AAErE,EAAE,IAAI,SAAS,EAAE;AACjB,GAAG,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACnD,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE;AACrD,IAAI,QAAQ,EAAE,IAAI;AAClB,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,CAAC,CAAA;AACL,GAAE;;AAEF,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACnC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;;AAE9B,EAAE,IAAI,KAAK,EAAE;AACb,GAAG,IAAI,KAAK,GAAG,KAAK,CAAA;AACpB,GAAG,OAAO,KAAK,KAAK,IAAI,EAAE;AAC1B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAChD,KAAK,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;AAC7D,KAAI;AACJ,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AACtB,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;AACzB,IAAG;;AAEH,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,CAAA;AAC7C,GAAG,MAAM;AACT;AACA,GAAG,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;;AAEtE;AACA,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAA;AACvB,GAAG,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAA;AAC3B,GAAE;AAGF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,OAAO,CAAC,OAAO,EAAE;AAClB,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAA;;AAExF,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;AACnC,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;AAC7B,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;AAE7B,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAA;;AAI3F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;AAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAEjC,EAAE,IAAI,KAAK,EAAE;AACb,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AAC7B,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;AACpC,GAAE;AAGF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE;AAC9B,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;AAE7B,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAA;;AAI3F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;AAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;AAEnC,EAAE,IAAI,KAAK,EAAE;AACb,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;AAC9B,GAAG,MAAM;AACT,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;AACpC,GAAE;AAGF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE;AACpB,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;AAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;AAEzB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAClD,GAAG,OAAO,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAC9C,GAAE;;AAEF,EAAE,IAAI,KAAK,KAAK,GAAG,EAAE,OAAO,IAAI,CAAA;;AAEhC,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAC5F,EAAE,IAAI,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;;AAIpE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;AAElB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;AAEjC,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAA;AACnB,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAA;AACnB,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;;AAEjB,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;AAC3D,GAAE;AAGF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE;AACnB,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;AAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;AAEzB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAClD,GAAG,OAAO,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAC9C,GAAE;;AAEF,EAAE,IAAI,KAAK,KAAK,GAAG,EAAE,OAAO,IAAI,CAAA;;AAEhC,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAC5F,EAAE,IAAI,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;;AAIpE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;AAElB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;AAEjC,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;;AAEhB,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;AAC3D,GAAE;AAGF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,QAAQ,GAAG;AACZ,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACjE,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAA;AAC5B,EAAE,GAAG;AACL,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACrE,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAC3E,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACrE,GAAG,SAAS,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAE;AACpC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACjE,EAAE,OAAO,EAAE,CAAA;AACX,EAAC;;AAED,CAAC,QAAQ,GAAG;AACZ,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AAC3C,EAAE,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAA;AAC/D,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;AAC1B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAA;AAC5B,EAAE,GAAG;AACL,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AAC1C,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;AAC5E,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,OAAO,CAAA;AACnC,IAAG;;AAEH,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,IAAI,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AAC5C,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;AAC9E,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;AACrC,IAAG;;AAEH,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AAC1C,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;AAC5E,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,OAAO,CAAA;AACnC,IAAG;AACH,GAAG,SAAS,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAE;AACpC,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AACvC,EAAE,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;AACzE,EAAE,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;AAC7B,EAAC;;AAED,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5D,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;AAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;AAEzB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAClD,GAAG,OAAO,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;AAC9C,GAAE;;AAEF,EAAE,IAAI,MAAM,GAAG,EAAE,CAAA;;AAEjB;AACA,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;AAC7B,EAAE,OAAO,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;AAC/D;AACA,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE;AAC9C,IAAI,OAAO,MAAM,CAAA;AACjB,IAAG;;AAEH,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AACrB,GAAE;;AAEF,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK;AACpD,GAAG,MAAM,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAA;;AAEnF,EAAE,MAAM,UAAU,GAAG,KAAK,CAAA;AAC1B,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;AACvE,IAAI,MAAM,IAAI,KAAK,CAAC,KAAK,CAAA;AACzB,IAAG;;AAEH,GAAG,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,CAAA;AAC5D,GAAG,IAAI,WAAW,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;AACvD,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAA;;AAEhF,GAAG,MAAM,UAAU,GAAG,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;AACpE,GAAG,MAAM,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAA;;AAE/F,GAAG,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;;AAEtD,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;AAC3D,IAAI,MAAM,IAAI,KAAK,CAAC,KAAK,CAAA;AACzB,IAAG;;AAEH,GAAG,IAAI,WAAW,EAAE;AACpB,IAAI,MAAK;AACT,IAAG;;AAEH,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AACrB,GAAE;;AAEF,EAAE,OAAO,MAAM,CAAA;AACf,EAAC;;AAED;AACA,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;AAClB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;AAC5B,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AACxB,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;;AAE1C,EAAE,OAAO,KAAK,CAAA;AACd,EAAC;;AAED,CAAC,MAAM,CAAC,KAAK,EAAE;AACf,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAM;;AAItD,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAA;AACpC,EAAE,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAA;;AAEzC,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;;AAEnE,GAAG,KAAK,GAAG,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC5E,GAAE;AACF,EAAC;;AAED,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE;AAC3B,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;AAC5C;AACA,GAAG,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA;AAC/C,GAAG,MAAM,IAAI,KAAK;AAClB,IAAI,CAAC,mDAAmD,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AACzG,IAAI,CAAA;AACJ,GAAE;;AAEF,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAErC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;AAC3B,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAA;AAChC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAA;;AAErC,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;;AAEzD,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAA;AAEhC,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,QAAQ,GAAG;AACZ,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;;AAEtB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;AAC7B,EAAE,OAAO,KAAK,EAAE;AAChB,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;AAC1B,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AACrB,GAAE;;AAEF,EAAE,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;AACzB,EAAC;;AAED,CAAC,OAAO,GAAG;AACX,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;AAC7B,EAAE,GAAG;AACL,GAAG;AACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;AAC7C,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAClD,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;AAC7C;AACA,IAAI,OAAO,KAAK,CAAA;AAChB,GAAG,SAAS,KAAK,GAAG,KAAK,CAAC,IAAI,GAAE;AAChC,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,MAAM,GAAG;AACV,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;AAC7B,EAAE,IAAI,MAAM,GAAG,CAAC,CAAA;AAChB,EAAE,GAAG;AACL,GAAG,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAA;AAC3E,GAAG,SAAS,KAAK,GAAG,KAAK,CAAC,IAAI,GAAE;AAChC,EAAE,OAAO,MAAM,CAAA;AACf,EAAC;;AAED,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAC9B,EAAC;;AAED,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AACnD,EAAC;;AAED,CAAC,cAAc,CAAC,QAAQ,EAAE;AAC1B,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,CAAA;;AAEnD,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AACzC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAEpC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAA;;AAE5B,EAAE,GAAG;AACL,GAAG,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;AACxB,GAAG,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;;AAEpC;AACA,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AAClC,KAAK,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;AAChC,KAAI;;AAEJ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACjC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;AAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;AAC3C,IAAG;;AAEH,GAAG,IAAI,OAAO,EAAE,OAAO,IAAI,CAAA;AAC3B,GAAG,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAA;AACzB,GAAG,QAAQ,KAAK,EAAC;;AAEjB,EAAE,OAAO,KAAK,CAAA;AACd,EAAC;;AAED,CAAC,OAAO,CAAC,QAAQ,EAAE;AACnB,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;AAC/B,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;AACD,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AAC5B,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,QAAQ,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;;AAExD,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;AACzC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAEpC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;;AAE7B,EAAE,GAAG;AACL,GAAG,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;AACxB,GAAG,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;;AAEtC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAC1B;AACA,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;;AAE7D,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACjC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;AAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;AAC3C,IAAG;;AAEH,GAAG,IAAI,OAAO,EAAE,OAAO,IAAI,CAAA;AAC3B,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;AACrB,GAAG,QAAQ,KAAK,EAAC;;AAEjB,EAAE,OAAO,KAAK,CAAA;AACd,EAAC;;AAED,CAAC,SAAS,CAAC,QAAQ,EAAE;AACrB,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;AACjC,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAA;AAC1C,EAAC;;AAED,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE;AAC1C,EAAE,SAAS,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;AACtC,GAAG,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACxC,IAAI,OAAO,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK;AAC1D;AACA,KAAK,IAAI,CAAC,KAAK,GAAG,EAAE,OAAO,GAAG,CAAA;AAC9B,KAAK,IAAI,CAAC,KAAK,GAAG,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;AACnC,KAAK,MAAM,GAAG,GAAG,CAAC,CAAC,CAAA;AACnB,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7C,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACnB,KAAK,CAAC,CAAA;AACN,IAAI,MAAM;AACV,IAAI,OAAO,WAAW,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;AAChE,IAAG;AACH,GAAE;AACF,EAAE,SAAS,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE;AAC7B,GAAG,IAAI,KAAK,CAAA;AACZ,GAAG,MAAM,OAAO,GAAG,EAAE,CAAA;AACrB,GAAG,QAAQ,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;AAClC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACvB,IAAG;AACH,GAAG,OAAO,OAAO,CAAA;AACjB,GAAE;AACF,EAAE,IAAI,WAAW,CAAC,MAAM,EAAE;AAC1B,GAAG,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;AACvD,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC9B,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;AAC7B,KAAK,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC7D,KAAK,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;AACnC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAC7E,MAAK;AACL,KAAI;AACJ,IAAI,CAAC,CAAA;AACL,GAAG,MAAM;AACT,GAAG,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;AACjD,GAAG,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;AACrC,IAAI,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC5D,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;AAClC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAC5E,KAAI;AACJ,IAAG;AACH,GAAE;AACF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE;AACrC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AAC3B,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;;AAExC,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACpB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAC5D,GAAE;;AAEF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE;AACnC,EAAE,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACvC,GAAG,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;AACvD,GAAE;;AAEF,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;AACtD,EAAC;;AAED,CAAC,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE;AACxC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;AAC3B,EAAE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAA;AACpC,EAAE;AACF,GAAG,IAAI,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;AACvC,GAAG,KAAK,KAAK,CAAC,CAAC;AACf,GAAG,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,YAAY,CAAA;AACxD,IAAI;AACJ,GAAG,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAAC,CAAA;AAC/D,GAAG,IAAI,QAAQ,KAAK,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,EAAE,WAAW,CAAC,CAAA;AACzF,GAAE;;AAEF,EAAE,OAAO,IAAI,CAAA;AACb,EAAC;;AAED,CAAC,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE;AACtC,EAAE,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACvC,GAAG,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;AAC1D,GAAE;;AAEF,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC3B,GAAG,MAAM,IAAI,SAAS;AACtB,IAAI,2EAA2E;AAC/E,IAAI,CAAA;AACJ,GAAE;;AAEF,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;AACtD,EAAC;AACD;;AC33BA,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD;AACe,MAAM,MAAM,CAAC;AAC5B,CAAC,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC3B,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AACnC,EAAE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AAC9E,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC1B,EAAE,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;AACxC,EAAE;AACF;AACA,CAAC,SAAS,CAAC,MAAM,EAAE;AACnB,EAAE,IAAI,MAAM,YAAY,WAAW,EAAE;AACrC,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC;AACzB,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC7B,IAAI,SAAS,EAAE,IAAI,CAAC,SAAS;AAC7B,IAAI,CAAC,CAAC;AACN,GAAG;AACH;AACA,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC5C,GAAG,MAAM,IAAI,KAAK;AAClB,IAAI,sIAAsI;AAC1I,IAAI,CAAC;AACL,GAAG;AACH;AACA,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,uBAAuB,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACvF,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACjF,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;AACtC;AACA,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE;AACvB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC5E,IAAI,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAClF,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7F,IAAI,MAAM;AACV,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/F,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC,OAAO,EAAE;AAC1D,KAAK,MAAM,IAAI,KAAK,CAAC,CAAC,+BAA+B,EAAE,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC/F,KAAK;AACL,IAAI;AACJ,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE;AACtB,EAAE,IAAI,CAAC,SAAS,CAAC;AACjB,GAAG,OAAO,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC;AAChC,GAAG,SAAS,EAAE,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE;AAClD,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,KAAK,GAAG;AACT,EAAE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;AAC5B,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK;AACpB,GAAG,SAAS,EAAE,IAAI,CAAC,SAAS;AAC5B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACnC,GAAG,MAAM,CAAC,SAAS,CAAC;AACpB,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC7B,IAAI,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;AACnC,IAAI,SAAS,EAAE,MAAM,CAAC,SAAS;AAC/B,IAAI,CAAC,CAAC;AACN,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,EAAE;AACF;AACA,CAAC,kBAAkB,CAAC,OAAO,GAAG,EAAE,EAAE;AAClC,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;AACnB,EAAE,IAAI,mBAAmB,GAAG,SAAS,CAAC;AACtC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACnC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC7D,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,IAAI,CAAC,CAAC;AACN,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/C;AACA,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;AAClB,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;AACtC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE;AACd,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrC,IAAI;AACJ;AACA,GAAG,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAChG,GAAG,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,GAAG,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnD;AACA,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE;AAC1B,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACxC,IAAI;AACJ;AACA,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK;AAC9C,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpC;AACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1D;AACA,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE;AACzB,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AACvB,MAAM,QAAQ,CAAC,OAAO;AACtB,OAAO,WAAW;AAClB,OAAO,KAAK,CAAC,OAAO;AACpB,OAAO,GAAG;AACV,OAAO,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC3D,OAAO,CAAC;AACR,MAAM,MAAM;AACZ,MAAM,QAAQ,CAAC,gBAAgB;AAC/B,OAAO,WAAW;AAClB,OAAO,KAAK;AACZ,OAAO,WAAW,CAAC,QAAQ;AAC3B,OAAO,GAAG;AACV,OAAO,WAAW,CAAC,kBAAkB;AACrC,OAAO,CAAC;AACR,MAAM;AACN,KAAK,MAAM;AACX,KAAK,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACrC,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1D,IAAI,CAAC,CAAC;AACN;AACA,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE;AAC1B,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACxC,IAAI;AACJ;AACA,GAAG,IAAI,MAAM,CAAC,UAAU,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;AAChD,IAAI,IAAI,mBAAmB,KAAK,SAAS,EAAE;AAC3C,KAAK,mBAAmB,GAAG,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1C,IAAI;AACJ,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO;AACT,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS;AACrE,GAAG,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK;AAC/C,IAAI,OAAO,OAAO,CAAC,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3F,IAAI,CAAC;AACL,GAAG,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK;AACtD,IAAI,OAAO,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1D,IAAI,CAAC;AACL,GAAG,KAAK;AACR,GAAG,QAAQ,EAAE,QAAQ,CAAC,GAAG;AACzB,GAAG,mBAAmB;AACtB,GAAG,CAAC;AACJ,EAAE;AACF;AACA,CAAC,WAAW,CAAC,OAAO,EAAE;AACtB,EAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AACzD,EAAE;AACF;AACA,CAAC,eAAe,GAAG;AACnB,EAAE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACnC,GAAG,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;AAC1D;AACA,GAAG,IAAI,SAAS,KAAK,IAAI,EAAE,OAAO;AAClC;AACA,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACzE,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACtC,GAAG,CAAC,CAAC;AACL;AACA,EAAE;AACF,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAClD,IAAI,OAAO,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACzD,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;AAChB,IAAI;AACJ,EAAE;AACF;AACA,CAAC,MAAM,CAAC,SAAS,EAAE;AACnB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACzB,GAAG,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AACtC,GAAG;AACH;AACA,EAAE,IAAI,SAAS,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC;AACpC;AACA,EAAE,IAAI,eAAe,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AACrE;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;AACtC,GAAG,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACxF,GAAG,MAAM,WAAW,GAAG,eAAe,KAAK,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9E;AACA,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;AACpC,IAAI,OAAO,EAAE,MAAM,CAAC,qBAAqB;AACzC,IAAI,WAAW;AACf,IAAI,CAAC,CAAC;AACN;AACA,GAAG,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC;AACxD,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;AAClB,GAAG,IAAI,CAAC,KAAK;AACb,IAAI,SAAS;AACb,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK;AACrD,KAAK,OAAO,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AAClD,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,OAAO,CAAC,GAAG,EAAE;AACd,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AAChC,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,QAAQ,GAAG;AACZ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;AAC3B,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;AACvB,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACzF,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AACrE;AACA,IAAI,OAAO,GAAG,CAAC;AACf,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC3B,EAAE;AACF;AACA,CAAC,OAAO,GAAG;AACX,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,KAAK,CAAC;AAC3D,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,KAAK,CAAC;AAC7E,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,MAAM,GAAG;AACV,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;AAC5B,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;AACvD,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;AACpB,GAAG,CAAC;AACJ,EAAE;AACF;AACA,CAAC,SAAS,GAAG;AACb,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/B,EAAE;AACF;AACA,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,EAAE;AACF;AACA,CAAC,SAAS,CAAC,QAAQ,EAAE;AACrB,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,QAAQ,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1C;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,GAAG,IAAI,MAAM,CAAC;AACd,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACb;AACA,GAAG,GAAG;AACN,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,KAAK,MAAM;AACX,KAAK;AACL,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;AACxD,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;AACA,CAAC,OAAO,CAAC,QAAQ,EAAE;AACnB,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC;AACpD;AACA,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC;AACA,EAAE,GAAG;AACL,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,GAAG,IAAI,CAAC,MAAM,EAAE;AAChB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5C,IAAI,MAAM;AACV,IAAI;AACJ,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACrD;AACA,EAAE,OAAO,IAAI,CAAC;AACd,EAAE;AACF;;;;"} \ No newline at end of file diff --git a/node_modules/magic-string/dist/magic-string.umd.js b/node_modules/magic-string/dist/magic-string.umd.js new file mode 100644 index 0000000..bb2be85 --- /dev/null +++ b/node_modules/magic-string/dist/magic-string.umd.js @@ -0,0 +1,1672 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.MagicString = factory()); +})(this, (function () { 'use strict'; + + class BitSet { + constructor(arg) { + this.bits = arg instanceof BitSet ? arg.bits.slice() : []; + } + + add(n) { + this.bits[n >> 5] |= 1 << (n & 31); + } + + has(n) { + return !!(this.bits[n >> 5] & (1 << (n & 31))); + } + } + + class Chunk { + constructor(start, end, content) { + this.start = start; + this.end = end; + this.original = content; + + this.intro = ''; + this.outro = ''; + + this.content = content; + this.storeName = false; + this.edited = false; + + { + this.previous = null; + this.next = null; + } + } + + appendLeft(content) { + this.outro += content; + } + + appendRight(content) { + this.intro = this.intro + content; + } + + clone() { + const chunk = new Chunk(this.start, this.end, this.original); + + chunk.intro = this.intro; + chunk.outro = this.outro; + chunk.content = this.content; + chunk.storeName = this.storeName; + chunk.edited = this.edited; + + return chunk; + } + + contains(index) { + return this.start < index && index < this.end; + } + + eachNext(fn) { + let chunk = this; + while (chunk) { + fn(chunk); + chunk = chunk.next; + } + } + + eachPrevious(fn) { + let chunk = this; + while (chunk) { + fn(chunk); + chunk = chunk.previous; + } + } + + edit(content, storeName, contentOnly) { + this.content = content; + if (!contentOnly) { + this.intro = ''; + this.outro = ''; + } + this.storeName = storeName; + + this.edited = true; + + return this; + } + + prependLeft(content) { + this.outro = content + this.outro; + } + + prependRight(content) { + this.intro = content + this.intro; + } + + reset() { + this.intro = ''; + this.outro = ''; + if (this.edited) { + this.content = this.original; + this.storeName = false; + this.edited = false; + } + } + + split(index) { + const sliceIndex = index - this.start; + + const originalBefore = this.original.slice(0, sliceIndex); + const originalAfter = this.original.slice(sliceIndex); + + this.original = originalBefore; + + const newChunk = new Chunk(index, this.end, originalAfter); + newChunk.outro = this.outro; + this.outro = ''; + + this.end = index; + + if (this.edited) { + // after split we should save the edit content record into the correct chunk + // to make sure sourcemap correct + // For example: + // ' test'.trim() + // split -> ' ' + 'test' + // ✔️ edit -> '' + 'test' + // ✖️ edit -> 'test' + '' + // TODO is this block necessary?... + newChunk.edit('', false); + this.content = ''; + } else { + this.content = originalBefore; + } + + newChunk.next = this.next; + if (newChunk.next) newChunk.next.previous = newChunk; + newChunk.previous = this; + this.next = newChunk; + + return newChunk; + } + + toString() { + return this.intro + this.content + this.outro; + } + + trimEnd(rx) { + this.outro = this.outro.replace(rx, ''); + if (this.outro.length) return true; + + const trimmed = this.content.replace(rx, ''); + + if (trimmed.length) { + if (trimmed !== this.content) { + this.split(this.start + trimmed.length).edit('', undefined, true); + if (this.edited) { + // save the change, if it has been edited + this.edit(trimmed, this.storeName, true); + } + } + return true; + } else { + this.edit('', undefined, true); + + this.intro = this.intro.replace(rx, ''); + if (this.intro.length) return true; + } + } + + trimStart(rx) { + this.intro = this.intro.replace(rx, ''); + if (this.intro.length) return true; + + const trimmed = this.content.replace(rx, ''); + + if (trimmed.length) { + if (trimmed !== this.content) { + const newChunk = this.split(this.end - trimmed.length); + if (this.edited) { + // save the change, if it has been edited + newChunk.edit(trimmed, this.storeName, true); + } + this.edit('', undefined, true); + } + return true; + } else { + this.edit('', undefined, true); + + this.outro = this.outro.replace(rx, ''); + if (this.outro.length) return true; + } + } + } + + const comma = ','.charCodeAt(0); + const semicolon = ';'.charCodeAt(0); + const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + const intToChar = new Uint8Array(64); // 64 possible chars. + const charToInt = new Uint8Array(128); // z is 122 in ASCII + for (let i = 0; i < chars.length; i++) { + const c = chars.charCodeAt(i); + intToChar[i] = c; + charToInt[c] = i; + } + function encodeInteger(builder, num, relative) { + let delta = num - relative; + delta = delta < 0 ? (-delta << 1) | 1 : delta << 1; + do { + let clamped = delta & 0b011111; + delta >>>= 5; + if (delta > 0) + clamped |= 0b100000; + builder.write(intToChar[clamped]); + } while (delta > 0); + return num; + } + + const bufLength = 1024 * 16; + // Provide a fallback for older environments. + const td = typeof TextDecoder !== 'undefined' + ? /* #__PURE__ */ new TextDecoder() + : typeof Buffer !== 'undefined' + ? { + decode(buf) { + const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); + return out.toString(); + }, + } + : { + decode(buf) { + let out = ''; + for (let i = 0; i < buf.length; i++) { + out += String.fromCharCode(buf[i]); + } + return out; + }, + }; + class StringWriter { + constructor() { + this.pos = 0; + this.out = ''; + this.buffer = new Uint8Array(bufLength); + } + write(v) { + const { buffer } = this; + buffer[this.pos++] = v; + if (this.pos === bufLength) { + this.out += td.decode(buffer); + this.pos = 0; + } + } + flush() { + const { buffer, out, pos } = this; + return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out; + } + } + function encode(decoded) { + const writer = new StringWriter(); + let sourcesIndex = 0; + let sourceLine = 0; + let sourceColumn = 0; + let namesIndex = 0; + for (let i = 0; i < decoded.length; i++) { + const line = decoded[i]; + if (i > 0) + writer.write(semicolon); + if (line.length === 0) + continue; + let genColumn = 0; + for (let j = 0; j < line.length; j++) { + const segment = line[j]; + if (j > 0) + writer.write(comma); + genColumn = encodeInteger(writer, segment[0], genColumn); + if (segment.length === 1) + continue; + sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex); + sourceLine = encodeInteger(writer, segment[2], sourceLine); + sourceColumn = encodeInteger(writer, segment[3], sourceColumn); + if (segment.length === 4) + continue; + namesIndex = encodeInteger(writer, segment[4], namesIndex); + } + } + return writer.flush(); + } + + function getBtoa() { + if (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') { + return (str) => globalThis.btoa(unescape(encodeURIComponent(str))); + } else if (typeof Buffer === 'function') { + return (str) => Buffer.from(str, 'utf-8').toString('base64'); + } else { + return () => { + throw new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.'); + }; + } + } + + const btoa = /*#__PURE__*/ getBtoa(); + + class SourceMap { + constructor(properties) { + this.version = 3; + this.file = properties.file; + this.sources = properties.sources; + this.sourcesContent = properties.sourcesContent; + this.names = properties.names; + this.mappings = encode(properties.mappings); + if (typeof properties.x_google_ignoreList !== 'undefined') { + this.x_google_ignoreList = properties.x_google_ignoreList; + } + if (typeof properties.debugId !== 'undefined') { + this.debugId = properties.debugId; + } + } + + toString() { + return JSON.stringify(this); + } + + toUrl() { + return 'data:application/json;charset=utf-8;base64,' + btoa(this.toString()); + } + } + + function guessIndent(code) { + const lines = code.split('\n'); + + const tabbed = lines.filter((line) => /^\t+/.test(line)); + const spaced = lines.filter((line) => /^ {2,}/.test(line)); + + if (tabbed.length === 0 && spaced.length === 0) { + return null; + } + + // More lines tabbed than spaced? Assume tabs, and + // default to tabs in the case of a tie (or nothing + // to go on) + if (tabbed.length >= spaced.length) { + return '\t'; + } + + // Otherwise, we need to guess the multiple + const min = spaced.reduce((previous, current) => { + const numSpaces = /^ +/.exec(current)[0].length; + return Math.min(numSpaces, previous); + }, Infinity); + + return new Array(min + 1).join(' '); + } + + function getRelativePath(from, to) { + const fromParts = from.split(/[/\\]/); + const toParts = to.split(/[/\\]/); + + fromParts.pop(); // get dirname + + while (fromParts[0] === toParts[0]) { + fromParts.shift(); + toParts.shift(); + } + + if (fromParts.length) { + let i = fromParts.length; + while (i--) fromParts[i] = '..'; + } + + return fromParts.concat(toParts).join('/'); + } + + const toString = Object.prototype.toString; + + function isObject(thing) { + return toString.call(thing) === '[object Object]'; + } + + function getLocator(source) { + const originalLines = source.split('\n'); + const lineOffsets = []; + + for (let i = 0, pos = 0; i < originalLines.length; i++) { + lineOffsets.push(pos); + pos += originalLines[i].length + 1; + } + + return function locate(index) { + let i = 0; + let j = lineOffsets.length; + while (i < j) { + const m = (i + j) >> 1; + if (index < lineOffsets[m]) { + j = m; + } else { + i = m + 1; + } + } + const line = i - 1; + const column = index - lineOffsets[line]; + return { line, column }; + }; + } + + const wordRegex = /\w/; + + class Mappings { + constructor(hires) { + this.hires = hires; + this.generatedCodeLine = 0; + this.generatedCodeColumn = 0; + this.raw = []; + this.rawSegments = this.raw[this.generatedCodeLine] = []; + this.pending = null; + } + + addEdit(sourceIndex, content, loc, nameIndex) { + if (content.length) { + const contentLengthMinusOne = content.length - 1; + let contentLineEnd = content.indexOf('\n', 0); + let previousContentLineEnd = -1; + // Loop through each line in the content and add a segment, but stop if the last line is empty, + // else code afterwards would fill one line too many + while (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) { + const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + if (nameIndex >= 0) { + segment.push(nameIndex); + } + this.rawSegments.push(segment); + + this.generatedCodeLine += 1; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + this.generatedCodeColumn = 0; + + previousContentLineEnd = contentLineEnd; + contentLineEnd = content.indexOf('\n', contentLineEnd + 1); + } + + const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + if (nameIndex >= 0) { + segment.push(nameIndex); + } + this.rawSegments.push(segment); + + this.advance(content.slice(previousContentLineEnd + 1)); + } else if (this.pending) { + this.rawSegments.push(this.pending); + this.advance(content); + } + + this.pending = null; + } + + addUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) { + let originalCharIndex = chunk.start; + let first = true; + // when iterating each char, check if it's in a word boundary + let charInHiresBoundary = false; + + while (originalCharIndex < chunk.end) { + if (original[originalCharIndex] === '\n') { + loc.line += 1; + loc.column = 0; + this.generatedCodeLine += 1; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + this.generatedCodeColumn = 0; + first = true; + charInHiresBoundary = false; + } else { + if (this.hires || first || sourcemapLocations.has(originalCharIndex)) { + const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column]; + + if (this.hires === 'boundary') { + // in hires "boundary", group segments per word boundary than per char + if (wordRegex.test(original[originalCharIndex])) { + // for first char in the boundary found, start the boundary by pushing a segment + if (!charInHiresBoundary) { + this.rawSegments.push(segment); + charInHiresBoundary = true; + } + } else { + // for non-word char, end the boundary by pushing a segment + this.rawSegments.push(segment); + charInHiresBoundary = false; + } + } else { + this.rawSegments.push(segment); + } + } + + loc.column += 1; + this.generatedCodeColumn += 1; + first = false; + } + + originalCharIndex += 1; + } + + this.pending = null; + } + + advance(str) { + if (!str) return; + + const lines = str.split('\n'); + + if (lines.length > 1) { + for (let i = 0; i < lines.length - 1; i++) { + this.generatedCodeLine++; + this.raw[this.generatedCodeLine] = this.rawSegments = []; + } + this.generatedCodeColumn = 0; + } + + this.generatedCodeColumn += lines[lines.length - 1].length; + } + } + + const n = '\n'; + + const warned = { + insertLeft: false, + insertRight: false, + storeName: false, + }; + + class MagicString { + constructor(string, options = {}) { + const chunk = new Chunk(0, string.length, string); + + Object.defineProperties(this, { + original: { writable: true, value: string }, + outro: { writable: true, value: '' }, + intro: { writable: true, value: '' }, + firstChunk: { writable: true, value: chunk }, + lastChunk: { writable: true, value: chunk }, + lastSearchedChunk: { writable: true, value: chunk }, + byStart: { writable: true, value: {} }, + byEnd: { writable: true, value: {} }, + filename: { writable: true, value: options.filename }, + indentExclusionRanges: { writable: true, value: options.indentExclusionRanges }, + sourcemapLocations: { writable: true, value: new BitSet() }, + storedNames: { writable: true, value: {} }, + indentStr: { writable: true, value: undefined }, + ignoreList: { writable: true, value: options.ignoreList }, + offset: { writable: true, value: options.offset || 0 }, + }); + + this.byStart[0] = chunk; + this.byEnd[string.length] = chunk; + } + + addSourcemapLocation(char) { + this.sourcemapLocations.add(char); + } + + append(content) { + if (typeof content !== 'string') throw new TypeError('outro content must be a string'); + + this.outro += content; + return this; + } + + appendLeft(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byEnd[index]; + + if (chunk) { + chunk.appendLeft(content); + } else { + this.intro += content; + } + return this; + } + + appendRight(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byStart[index]; + + if (chunk) { + chunk.appendRight(content); + } else { + this.outro += content; + } + return this; + } + + clone() { + const cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset }); + + let originalChunk = this.firstChunk; + let clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone()); + + while (originalChunk) { + cloned.byStart[clonedChunk.start] = clonedChunk; + cloned.byEnd[clonedChunk.end] = clonedChunk; + + const nextOriginalChunk = originalChunk.next; + const nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone(); + + if (nextClonedChunk) { + clonedChunk.next = nextClonedChunk; + nextClonedChunk.previous = clonedChunk; + + clonedChunk = nextClonedChunk; + } + + originalChunk = nextOriginalChunk; + } + + cloned.lastChunk = clonedChunk; + + if (this.indentExclusionRanges) { + cloned.indentExclusionRanges = this.indentExclusionRanges.slice(); + } + + cloned.sourcemapLocations = new BitSet(this.sourcemapLocations); + + cloned.intro = this.intro; + cloned.outro = this.outro; + + return cloned; + } + + generateDecodedMap(options) { + options = options || {}; + + const sourceIndex = 0; + const names = Object.keys(this.storedNames); + const mappings = new Mappings(options.hires); + + const locate = getLocator(this.original); + + if (this.intro) { + mappings.advance(this.intro); + } + + this.firstChunk.eachNext((chunk) => { + const loc = locate(chunk.start); + + if (chunk.intro.length) mappings.advance(chunk.intro); + + if (chunk.edited) { + mappings.addEdit( + sourceIndex, + chunk.content, + loc, + chunk.storeName ? names.indexOf(chunk.original) : -1, + ); + } else { + mappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations); + } + + if (chunk.outro.length) mappings.advance(chunk.outro); + }); + + return { + file: options.file ? options.file.split(/[/\\]/).pop() : undefined, + sources: [ + options.source ? getRelativePath(options.file || '', options.source) : options.file || '', + ], + sourcesContent: options.includeContent ? [this.original] : undefined, + names, + mappings: mappings.raw, + x_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined, + }; + } + + generateMap(options) { + return new SourceMap(this.generateDecodedMap(options)); + } + + _ensureindentStr() { + if (this.indentStr === undefined) { + this.indentStr = guessIndent(this.original); + } + } + + _getRawIndentString() { + this._ensureindentStr(); + return this.indentStr; + } + + getIndentString() { + this._ensureindentStr(); + return this.indentStr === null ? '\t' : this.indentStr; + } + + indent(indentStr, options) { + const pattern = /^[^\r\n]/gm; + + if (isObject(indentStr)) { + options = indentStr; + indentStr = undefined; + } + + if (indentStr === undefined) { + this._ensureindentStr(); + indentStr = this.indentStr || '\t'; + } + + if (indentStr === '') return this; // noop + + options = options || {}; + + // Process exclusion ranges + const isExcluded = {}; + + if (options.exclude) { + const exclusions = + typeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude; + exclusions.forEach((exclusion) => { + for (let i = exclusion[0]; i < exclusion[1]; i += 1) { + isExcluded[i] = true; + } + }); + } + + let shouldIndentNextCharacter = options.indentStart !== false; + const replacer = (match) => { + if (shouldIndentNextCharacter) return `${indentStr}${match}`; + shouldIndentNextCharacter = true; + return match; + }; + + this.intro = this.intro.replace(pattern, replacer); + + let charIndex = 0; + let chunk = this.firstChunk; + + while (chunk) { + const end = chunk.end; + + if (chunk.edited) { + if (!isExcluded[charIndex]) { + chunk.content = chunk.content.replace(pattern, replacer); + + if (chunk.content.length) { + shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\n'; + } + } + } else { + charIndex = chunk.start; + + while (charIndex < end) { + if (!isExcluded[charIndex]) { + const char = this.original[charIndex]; + + if (char === '\n') { + shouldIndentNextCharacter = true; + } else if (char !== '\r' && shouldIndentNextCharacter) { + shouldIndentNextCharacter = false; + + if (charIndex === chunk.start) { + chunk.prependRight(indentStr); + } else { + this._splitChunk(chunk, charIndex); + chunk = chunk.next; + chunk.prependRight(indentStr); + } + } + } + + charIndex += 1; + } + } + + charIndex = chunk.end; + chunk = chunk.next; + } + + this.outro = this.outro.replace(pattern, replacer); + + return this; + } + + insert() { + throw new Error( + 'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)', + ); + } + + insertLeft(index, content) { + if (!warned.insertLeft) { + console.warn( + 'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead', + ); + warned.insertLeft = true; + } + + return this.appendLeft(index, content); + } + + insertRight(index, content) { + if (!warned.insertRight) { + console.warn( + 'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead', + ); + warned.insertRight = true; + } + + return this.prependRight(index, content); + } + + move(start, end, index) { + start = start + this.offset; + end = end + this.offset; + index = index + this.offset; + + if (index >= start && index <= end) throw new Error('Cannot move a selection inside itself'); + + this._split(start); + this._split(end); + this._split(index); + + const first = this.byStart[start]; + const last = this.byEnd[end]; + + const oldLeft = first.previous; + const oldRight = last.next; + + const newRight = this.byStart[index]; + if (!newRight && last === this.lastChunk) return this; + const newLeft = newRight ? newRight.previous : this.lastChunk; + + if (oldLeft) oldLeft.next = oldRight; + if (oldRight) oldRight.previous = oldLeft; + + if (newLeft) newLeft.next = first; + if (newRight) newRight.previous = last; + + if (!first.previous) this.firstChunk = last.next; + if (!last.next) { + this.lastChunk = first.previous; + this.lastChunk.next = null; + } + + first.previous = newLeft; + last.next = newRight || null; + + if (!newLeft) this.firstChunk = first; + if (!newRight) this.lastChunk = last; + return this; + } + + overwrite(start, end, content, options) { + options = options || {}; + return this.update(start, end, content, { ...options, overwrite: !options.contentOnly }); + } + + update(start, end, content, options) { + start = start + this.offset; + end = end + this.offset; + + if (typeof content !== 'string') throw new TypeError('replacement content must be a string'); + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + if (end > this.original.length) throw new Error('end is out of bounds'); + if (start === end) + throw new Error( + 'Cannot overwrite a zero-length range – use appendLeft or prependRight instead', + ); + + this._split(start); + this._split(end); + + if (options === true) { + if (!warned.storeName) { + console.warn( + 'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string', + ); + warned.storeName = true; + } + + options = { storeName: true }; + } + const storeName = options !== undefined ? options.storeName : false; + const overwrite = options !== undefined ? options.overwrite : false; + + if (storeName) { + const original = this.original.slice(start, end); + Object.defineProperty(this.storedNames, original, { + writable: true, + value: true, + enumerable: true, + }); + } + + const first = this.byStart[start]; + const last = this.byEnd[end]; + + if (first) { + let chunk = first; + while (chunk !== last) { + if (chunk.next !== this.byStart[chunk.end]) { + throw new Error('Cannot overwrite across a split point'); + } + chunk = chunk.next; + chunk.edit('', false); + } + + first.edit(content, storeName, !overwrite); + } else { + // must be inserting at the end + const newChunk = new Chunk(start, end, '').edit(content, storeName); + + // TODO last chunk in the array may not be the last chunk, if it's moved... + last.next = newChunk; + newChunk.previous = last; + } + return this; + } + + prepend(content) { + if (typeof content !== 'string') throw new TypeError('outro content must be a string'); + + this.intro = content + this.intro; + return this; + } + + prependLeft(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byEnd[index]; + + if (chunk) { + chunk.prependLeft(content); + } else { + this.intro = content + this.intro; + } + return this; + } + + prependRight(index, content) { + index = index + this.offset; + + if (typeof content !== 'string') throw new TypeError('inserted content must be a string'); + + this._split(index); + + const chunk = this.byStart[index]; + + if (chunk) { + chunk.prependRight(content); + } else { + this.outro = content + this.outro; + } + return this; + } + + remove(start, end) { + start = start + this.offset; + end = end + this.offset; + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + if (start === end) return this; + + if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds'); + if (start > end) throw new Error('end must be greater than start'); + + this._split(start); + this._split(end); + + let chunk = this.byStart[start]; + + while (chunk) { + chunk.intro = ''; + chunk.outro = ''; + chunk.edit(''); + + chunk = end > chunk.end ? this.byStart[chunk.end] : null; + } + return this; + } + + reset(start, end) { + start = start + this.offset; + end = end + this.offset; + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + if (start === end) return this; + + if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds'); + if (start > end) throw new Error('end must be greater than start'); + + this._split(start); + this._split(end); + + let chunk = this.byStart[start]; + + while (chunk) { + chunk.reset(); + + chunk = end > chunk.end ? this.byStart[chunk.end] : null; + } + return this; + } + + lastChar() { + if (this.outro.length) return this.outro[this.outro.length - 1]; + let chunk = this.lastChunk; + do { + if (chunk.outro.length) return chunk.outro[chunk.outro.length - 1]; + if (chunk.content.length) return chunk.content[chunk.content.length - 1]; + if (chunk.intro.length) return chunk.intro[chunk.intro.length - 1]; + } while ((chunk = chunk.previous)); + if (this.intro.length) return this.intro[this.intro.length - 1]; + return ''; + } + + lastLine() { + let lineIndex = this.outro.lastIndexOf(n); + if (lineIndex !== -1) return this.outro.substr(lineIndex + 1); + let lineStr = this.outro; + let chunk = this.lastChunk; + do { + if (chunk.outro.length > 0) { + lineIndex = chunk.outro.lastIndexOf(n); + if (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr; + lineStr = chunk.outro + lineStr; + } + + if (chunk.content.length > 0) { + lineIndex = chunk.content.lastIndexOf(n); + if (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr; + lineStr = chunk.content + lineStr; + } + + if (chunk.intro.length > 0) { + lineIndex = chunk.intro.lastIndexOf(n); + if (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr; + lineStr = chunk.intro + lineStr; + } + } while ((chunk = chunk.previous)); + lineIndex = this.intro.lastIndexOf(n); + if (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr; + return this.intro + lineStr; + } + + slice(start = 0, end = this.original.length - this.offset) { + start = start + this.offset; + end = end + this.offset; + + if (this.original.length !== 0) { + while (start < 0) start += this.original.length; + while (end < 0) end += this.original.length; + } + + let result = ''; + + // find start chunk + let chunk = this.firstChunk; + while (chunk && (chunk.start > start || chunk.end <= start)) { + // found end chunk before start + if (chunk.start < end && chunk.end >= end) { + return result; + } + + chunk = chunk.next; + } + + if (chunk && chunk.edited && chunk.start !== start) + throw new Error(`Cannot use replaced character ${start} as slice start anchor.`); + + const startChunk = chunk; + while (chunk) { + if (chunk.intro && (startChunk !== chunk || chunk.start === start)) { + result += chunk.intro; + } + + const containsEnd = chunk.start < end && chunk.end >= end; + if (containsEnd && chunk.edited && chunk.end !== end) + throw new Error(`Cannot use replaced character ${end} as slice end anchor.`); + + const sliceStart = startChunk === chunk ? start - chunk.start : 0; + const sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length; + + result += chunk.content.slice(sliceStart, sliceEnd); + + if (chunk.outro && (!containsEnd || chunk.end === end)) { + result += chunk.outro; + } + + if (containsEnd) { + break; + } + + chunk = chunk.next; + } + + return result; + } + + // TODO deprecate this? not really very useful + snip(start, end) { + const clone = this.clone(); + clone.remove(0, start); + clone.remove(end, clone.original.length); + + return clone; + } + + _split(index) { + if (this.byStart[index] || this.byEnd[index]) return; + + let chunk = this.lastSearchedChunk; + const searchForward = index > chunk.end; + + while (chunk) { + if (chunk.contains(index)) return this._splitChunk(chunk, index); + + chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start]; + } + } + + _splitChunk(chunk, index) { + if (chunk.edited && chunk.content.length) { + // zero-length edited chunks are a special case (overlapping replacements) + const loc = getLocator(this.original)(index); + throw new Error( + `Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – "${chunk.original}")`, + ); + } + + const newChunk = chunk.split(index); + + this.byEnd[index] = chunk; + this.byStart[index] = newChunk; + this.byEnd[newChunk.end] = newChunk; + + if (chunk === this.lastChunk) this.lastChunk = newChunk; + + this.lastSearchedChunk = chunk; + return true; + } + + toString() { + let str = this.intro; + + let chunk = this.firstChunk; + while (chunk) { + str += chunk.toString(); + chunk = chunk.next; + } + + return str + this.outro; + } + + isEmpty() { + let chunk = this.firstChunk; + do { + if ( + (chunk.intro.length && chunk.intro.trim()) || + (chunk.content.length && chunk.content.trim()) || + (chunk.outro.length && chunk.outro.trim()) + ) + return false; + } while ((chunk = chunk.next)); + return true; + } + + length() { + let chunk = this.firstChunk; + let length = 0; + do { + length += chunk.intro.length + chunk.content.length + chunk.outro.length; + } while ((chunk = chunk.next)); + return length; + } + + trimLines() { + return this.trim('[\\r\\n]'); + } + + trim(charType) { + return this.trimStart(charType).trimEnd(charType); + } + + trimEndAborted(charType) { + const rx = new RegExp((charType || '\\s') + '+$'); + + this.outro = this.outro.replace(rx, ''); + if (this.outro.length) return true; + + let chunk = this.lastChunk; + + do { + const end = chunk.end; + const aborted = chunk.trimEnd(rx); + + // if chunk was trimmed, we have a new lastChunk + if (chunk.end !== end) { + if (this.lastChunk === chunk) { + this.lastChunk = chunk.next; + } + + this.byEnd[chunk.end] = chunk; + this.byStart[chunk.next.start] = chunk.next; + this.byEnd[chunk.next.end] = chunk.next; + } + + if (aborted) return true; + chunk = chunk.previous; + } while (chunk); + + return false; + } + + trimEnd(charType) { + this.trimEndAborted(charType); + return this; + } + trimStartAborted(charType) { + const rx = new RegExp('^' + (charType || '\\s') + '+'); + + this.intro = this.intro.replace(rx, ''); + if (this.intro.length) return true; + + let chunk = this.firstChunk; + + do { + const end = chunk.end; + const aborted = chunk.trimStart(rx); + + if (chunk.end !== end) { + // special case... + if (chunk === this.lastChunk) this.lastChunk = chunk.next; + + this.byEnd[chunk.end] = chunk; + this.byStart[chunk.next.start] = chunk.next; + this.byEnd[chunk.next.end] = chunk.next; + } + + if (aborted) return true; + chunk = chunk.next; + } while (chunk); + + return false; + } + + trimStart(charType) { + this.trimStartAborted(charType); + return this; + } + + hasChanged() { + return this.original !== this.toString(); + } + + _replaceRegexp(searchValue, replacement) { + function getReplacement(match, str) { + if (typeof replacement === 'string') { + return replacement.replace(/\$(\$|&|\d+)/g, (_, i) => { + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter + if (i === '$') return '$'; + if (i === '&') return match[0]; + const num = +i; + if (num < match.length) return match[+i]; + return `$${i}`; + }); + } else { + return replacement(...match, match.index, str, match.groups); + } + } + function matchAll(re, str) { + let match; + const matches = []; + while ((match = re.exec(str))) { + matches.push(match); + } + return matches; + } + if (searchValue.global) { + const matches = matchAll(searchValue, this.original); + matches.forEach((match) => { + if (match.index != null) { + const replacement = getReplacement(match, this.original); + if (replacement !== match[0]) { + this.overwrite(match.index, match.index + match[0].length, replacement); + } + } + }); + } else { + const match = this.original.match(searchValue); + if (match && match.index != null) { + const replacement = getReplacement(match, this.original); + if (replacement !== match[0]) { + this.overwrite(match.index, match.index + match[0].length, replacement); + } + } + } + return this; + } + + _replaceString(string, replacement) { + const { original } = this; + const index = original.indexOf(string); + + if (index !== -1) { + this.overwrite(index, index + string.length, replacement); + } + + return this; + } + + replace(searchValue, replacement) { + if (typeof searchValue === 'string') { + return this._replaceString(searchValue, replacement); + } + + return this._replaceRegexp(searchValue, replacement); + } + + _replaceAllString(string, replacement) { + const { original } = this; + const stringLength = string.length; + for ( + let index = original.indexOf(string); + index !== -1; + index = original.indexOf(string, index + stringLength) + ) { + const previous = original.slice(index, index + stringLength); + if (previous !== replacement) this.overwrite(index, index + stringLength, replacement); + } + + return this; + } + + replaceAll(searchValue, replacement) { + if (typeof searchValue === 'string') { + return this._replaceAllString(searchValue, replacement); + } + + if (!searchValue.global) { + throw new TypeError( + 'MagicString.prototype.replaceAll called with a non-global RegExp argument', + ); + } + + return this._replaceRegexp(searchValue, replacement); + } + } + + const hasOwnProp = Object.prototype.hasOwnProperty; + + class Bundle { + constructor(options = {}) { + this.intro = options.intro || ''; + this.separator = options.separator !== undefined ? options.separator : '\n'; + this.sources = []; + this.uniqueSources = []; + this.uniqueSourceIndexByFilename = {}; + } + + addSource(source) { + if (source instanceof MagicString) { + return this.addSource({ + content: source, + filename: source.filename, + separator: this.separator, + }); + } + + if (!isObject(source) || !source.content) { + throw new Error( + 'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`', + ); + } + + ['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => { + if (!hasOwnProp.call(source, option)) source[option] = source.content[option]; + }); + + if (source.separator === undefined) { + // TODO there's a bunch of this sort of thing, needs cleaning up + source.separator = this.separator; + } + + if (source.filename) { + if (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) { + this.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length; + this.uniqueSources.push({ filename: source.filename, content: source.content.original }); + } else { + const uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]]; + if (source.content.original !== uniqueSource.content) { + throw new Error(`Illegal source: same filename (${source.filename}), different contents`); + } + } + } + + this.sources.push(source); + return this; + } + + append(str, options) { + this.addSource({ + content: new MagicString(str), + separator: (options && options.separator) || '', + }); + + return this; + } + + clone() { + const bundle = new Bundle({ + intro: this.intro, + separator: this.separator, + }); + + this.sources.forEach((source) => { + bundle.addSource({ + filename: source.filename, + content: source.content.clone(), + separator: source.separator, + }); + }); + + return bundle; + } + + generateDecodedMap(options = {}) { + const names = []; + let x_google_ignoreList = undefined; + this.sources.forEach((source) => { + Object.keys(source.content.storedNames).forEach((name) => { + if (!~names.indexOf(name)) names.push(name); + }); + }); + + const mappings = new Mappings(options.hires); + + if (this.intro) { + mappings.advance(this.intro); + } + + this.sources.forEach((source, i) => { + if (i > 0) { + mappings.advance(this.separator); + } + + const sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1; + const magicString = source.content; + const locate = getLocator(magicString.original); + + if (magicString.intro) { + mappings.advance(magicString.intro); + } + + magicString.firstChunk.eachNext((chunk) => { + const loc = locate(chunk.start); + + if (chunk.intro.length) mappings.advance(chunk.intro); + + if (source.filename) { + if (chunk.edited) { + mappings.addEdit( + sourceIndex, + chunk.content, + loc, + chunk.storeName ? names.indexOf(chunk.original) : -1, + ); + } else { + mappings.addUneditedChunk( + sourceIndex, + chunk, + magicString.original, + loc, + magicString.sourcemapLocations, + ); + } + } else { + mappings.advance(chunk.content); + } + + if (chunk.outro.length) mappings.advance(chunk.outro); + }); + + if (magicString.outro) { + mappings.advance(magicString.outro); + } + + if (source.ignoreList && sourceIndex !== -1) { + if (x_google_ignoreList === undefined) { + x_google_ignoreList = []; + } + x_google_ignoreList.push(sourceIndex); + } + }); + + return { + file: options.file ? options.file.split(/[/\\]/).pop() : undefined, + sources: this.uniqueSources.map((source) => { + return options.file ? getRelativePath(options.file, source.filename) : source.filename; + }), + sourcesContent: this.uniqueSources.map((source) => { + return options.includeContent ? source.content : null; + }), + names, + mappings: mappings.raw, + x_google_ignoreList, + }; + } + + generateMap(options) { + return new SourceMap(this.generateDecodedMap(options)); + } + + getIndentString() { + const indentStringCounts = {}; + + this.sources.forEach((source) => { + const indentStr = source.content._getRawIndentString(); + + if (indentStr === null) return; + + if (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0; + indentStringCounts[indentStr] += 1; + }); + + return ( + Object.keys(indentStringCounts).sort((a, b) => { + return indentStringCounts[a] - indentStringCounts[b]; + })[0] || '\t' + ); + } + + indent(indentStr) { + if (!arguments.length) { + indentStr = this.getIndentString(); + } + + if (indentStr === '') return this; // noop + + let trailingNewline = !this.intro || this.intro.slice(-1) === '\n'; + + this.sources.forEach((source, i) => { + const separator = source.separator !== undefined ? source.separator : this.separator; + const indentStart = trailingNewline || (i > 0 && /\r?\n$/.test(separator)); + + source.content.indent(indentStr, { + exclude: source.indentExclusionRanges, + indentStart, //: trailingNewline || /\r?\n$/.test( separator ) //true///\r?\n/.test( separator ) + }); + + trailingNewline = source.content.lastChar() === '\n'; + }); + + if (this.intro) { + this.intro = + indentStr + + this.intro.replace(/^[^\n]/gm, (match, index) => { + return index > 0 ? indentStr + match : match; + }); + } + + return this; + } + + prepend(str) { + this.intro = str + this.intro; + return this; + } + + toString() { + const body = this.sources + .map((source, i) => { + const separator = source.separator !== undefined ? source.separator : this.separator; + const str = (i > 0 ? separator : '') + source.content.toString(); + + return str; + }) + .join(''); + + return this.intro + body; + } + + isEmpty() { + if (this.intro.length && this.intro.trim()) return false; + if (this.sources.some((source) => !source.content.isEmpty())) return false; + return true; + } + + length() { + return this.sources.reduce( + (length, source) => length + source.content.length(), + this.intro.length, + ); + } + + trimLines() { + return this.trim('[\\r\\n]'); + } + + trim(charType) { + return this.trimStart(charType).trimEnd(charType); + } + + trimStart(charType) { + const rx = new RegExp('^' + (charType || '\\s') + '+'); + this.intro = this.intro.replace(rx, ''); + + if (!this.intro) { + let source; + let i = 0; + + do { + source = this.sources[i++]; + if (!source) { + break; + } + } while (!source.content.trimStartAborted(charType)); + } + + return this; + } + + trimEnd(charType) { + const rx = new RegExp((charType || '\\s') + '+$'); + + let source; + let i = this.sources.length - 1; + + do { + source = this.sources[i--]; + if (!source) { + this.intro = this.intro.replace(rx, ''); + break; + } + } while (!source.content.trimEndAborted(charType)); + + return this; + } + } + + MagicString.Bundle = Bundle; + MagicString.SourceMap = SourceMap; + MagicString.default = MagicString; // work around TypeScript bug https://github.com/Rich-Harris/magic-string/pull/121 + + return MagicString; + +})); +//# sourceMappingURL=magic-string.umd.js.map diff --git a/node_modules/magic-string/dist/magic-string.umd.js.map b/node_modules/magic-string/dist/magic-string.umd.js.map new file mode 100644 index 0000000..5d36fdf --- /dev/null +++ b/node_modules/magic-string/dist/magic-string.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"magic-string.umd.js","sources":["../src/BitSet.js","../src/Chunk.js","../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.0/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs","../src/SourceMap.js","../src/utils/guessIndent.js","../src/utils/getRelativePath.js","../src/utils/isObject.js","../src/utils/getLocator.js","../src/utils/Mappings.js","../src/MagicString.js","../src/Bundle.js","../src/index-legacy.js"],"sourcesContent":["export default class BitSet {\n\tconstructor(arg) {\n\t\tthis.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n\t}\n\n\tadd(n) {\n\t\tthis.bits[n >> 5] |= 1 << (n & 31);\n\t}\n\n\thas(n) {\n\t\treturn !!(this.bits[n >> 5] & (1 << (n & 31)));\n\t}\n}\n","export default class Chunk {\n\tconstructor(start, end, content) {\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.original = content;\n\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\n\t\tthis.content = content;\n\t\tthis.storeName = false;\n\t\tthis.edited = false;\n\n\t\tif (DEBUG) {\n\t\t\t// we make these non-enumerable, for sanity while debugging\n\t\t\tObject.defineProperties(this, {\n\t\t\t\tprevious: { writable: true, value: null },\n\t\t\t\tnext: { writable: true, value: null },\n\t\t\t});\n\t\t} else {\n\t\t\tthis.previous = null;\n\t\t\tthis.next = null;\n\t\t}\n\t}\n\n\tappendLeft(content) {\n\t\tthis.outro += content;\n\t}\n\n\tappendRight(content) {\n\t\tthis.intro = this.intro + content;\n\t}\n\n\tclone() {\n\t\tconst chunk = new Chunk(this.start, this.end, this.original);\n\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\n\t\treturn chunk;\n\t}\n\n\tcontains(index) {\n\t\treturn this.start < index && index < this.end;\n\t}\n\n\teachNext(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.next;\n\t\t}\n\t}\n\n\teachPrevious(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t}\n\n\tedit(content, storeName, contentOnly) {\n\t\tthis.content = content;\n\t\tif (!contentOnly) {\n\t\t\tthis.intro = '';\n\t\t\tthis.outro = '';\n\t\t}\n\t\tthis.storeName = storeName;\n\n\t\tthis.edited = true;\n\n\t\treturn this;\n\t}\n\n\tprependLeft(content) {\n\t\tthis.outro = content + this.outro;\n\t}\n\n\tprependRight(content) {\n\t\tthis.intro = content + this.intro;\n\t}\n\n\treset() {\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t\tif (this.edited) {\n\t\t\tthis.content = this.original;\n\t\t\tthis.storeName = false;\n\t\t\tthis.edited = false;\n\t\t}\n\t}\n\n\tsplit(index) {\n\t\tconst sliceIndex = index - this.start;\n\n\t\tconst originalBefore = this.original.slice(0, sliceIndex);\n\t\tconst originalAfter = this.original.slice(sliceIndex);\n\n\t\tthis.original = originalBefore;\n\n\t\tconst newChunk = new Chunk(index, this.end, originalAfter);\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = '';\n\n\t\tthis.end = index;\n\n\t\tif (this.edited) {\n\t\t\t// after split we should save the edit content record into the correct chunk\n\t\t\t// to make sure sourcemap correct\n\t\t\t// For example:\n\t\t\t// ' test'.trim()\n\t\t\t// split -> ' ' + 'test'\n\t\t\t// ✔️ edit -> '' + 'test'\n\t\t\t// ✖️ edit -> 'test' + ''\n\t\t\t// TODO is this block necessary?...\n\t\t\tnewChunk.edit('', false);\n\t\t\tthis.content = '';\n\t\t} else {\n\t\t\tthis.content = originalBefore;\n\t\t}\n\n\t\tnewChunk.next = this.next;\n\t\tif (newChunk.next) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\n\t\treturn newChunk;\n\t}\n\n\ttoString() {\n\t\treturn this.intro + this.content + this.outro;\n\t}\n\n\ttrimEnd(rx) {\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tthis.split(this.start + trimmed.length).edit('', undefined, true);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tthis.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\tif (this.intro.length) return true;\n\t\t}\n\t}\n\n\ttrimStart(rx) {\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tconst newChunk = this.split(this.end - trimmed.length);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tnewChunk.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t\tthis.edit('', undefined, true);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.outro = this.outro.replace(rx, '');\n\t\t\tif (this.outro.length) return true;\n\t\t}\n\t}\n}\n","const comma = ','.charCodeAt(0);\nconst semicolon = ';'.charCodeAt(0);\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\nfunction decodeInteger(reader, relative) {\n let value = 0;\n let shift = 0;\n let integer = 0;\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n const shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n return relative + value;\n}\nfunction encodeInteger(builder, num, relative) {\n let delta = num - relative;\n delta = delta < 0 ? (-delta << 1) | 1 : delta << 1;\n do {\n let clamped = delta & 0b011111;\n delta >>>= 5;\n if (delta > 0)\n clamped |= 0b100000;\n builder.write(intToChar[clamped]);\n } while (delta > 0);\n return num;\n}\nfunction hasMoreVlq(reader, max) {\n if (reader.pos >= max)\n return false;\n return reader.peek() !== comma;\n}\n\nconst bufLength = 1024 * 16;\n// Provide a fallback for older environments.\nconst td = typeof TextDecoder !== 'undefined'\n ? /* #__PURE__ */ new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf) {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf) {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\nclass StringWriter {\n constructor() {\n this.pos = 0;\n this.out = '';\n this.buffer = new Uint8Array(bufLength);\n }\n write(v) {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n flush() {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n}\nclass StringReader {\n constructor(buffer) {\n this.pos = 0;\n this.buffer = buffer;\n }\n next() {\n return this.buffer.charCodeAt(this.pos++);\n }\n peek() {\n return this.buffer.charCodeAt(this.pos);\n }\n indexOf(char) {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n}\n\nconst EMPTY = [];\nfunction decodeOriginalScopes(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes = [];\n const stack = [];\n let line = 0;\n for (; reader.pos < length; reader.pos++) {\n line = decodeInteger(reader, line);\n const column = decodeInteger(reader, 0);\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop();\n last[2] = line;\n last[3] = column;\n continue;\n }\n const kind = decodeInteger(reader, 0);\n const fields = decodeInteger(reader, 0);\n const hasName = fields & 0b0001;\n const scope = (hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]);\n let vars = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeInteger(reader, 0);\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n scopes.push(scope);\n stack.push(scope);\n }\n return scopes;\n}\nfunction encodeOriginalScopes(scopes) {\n const writer = new StringWriter();\n for (let i = 0; i < scopes.length;) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n return writer.flush();\n}\nfunction _encodeOriginalScopes(scopes, index, writer, state) {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n if (index > 0)\n writer.write(comma);\n state[0] = encodeInteger(writer, startLine, state[0]);\n encodeInteger(writer, startColumn, 0);\n encodeInteger(writer, kind, 0);\n const fields = scope.length === 6 ? 0b0001 : 0;\n encodeInteger(writer, fields, 0);\n if (scope.length === 6)\n encodeInteger(writer, scope[5], 0);\n for (const v of vars) {\n encodeInteger(writer, v, 0);\n }\n for (index++; index < scopes.length;) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n writer.write(comma);\n state[0] = encodeInteger(writer, endLine, state[0]);\n encodeInteger(writer, endColumn, 0);\n return index;\n}\nfunction decodeGeneratedRanges(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges = [];\n const stack = [];\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n do {\n const semi = reader.indexOf(';');\n let genColumn = 0;\n for (; reader.pos < semi; reader.pos++) {\n genColumn = decodeInteger(reader, genColumn);\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop();\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n const fields = decodeInteger(reader, 0);\n const hasDefinition = fields & 0b0001;\n const hasCallsite = fields & 0b0010;\n const hasScope = fields & 0b0100;\n let callsite = null;\n let bindings = EMPTY;\n let range;\n if (hasDefinition) {\n const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);\n definitionScopeIndex = decodeInteger(reader, definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0);\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex];\n }\n else {\n range = [genLine, genColumn, 0, 0];\n }\n range.isScope = !!hasScope;\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);\n callsiteColumn = decodeInteger(reader, sameSource && prevLine === callsiteLine ? callsiteColumn : 0);\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeInteger(reader, 0);\n let expressionRanges;\n if (expressionsCount < -1) {\n expressionRanges = [[decodeInteger(reader, 0)]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine = decodeInteger(reader, bindingLine);\n bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);\n const expression = decodeInteger(reader, 0);\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n }\n else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n ranges.push(range);\n stack.push(range);\n }\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n return ranges;\n}\nfunction encodeGeneratedRanges(ranges) {\n if (ranges.length === 0)\n return '';\n const writer = new StringWriter();\n for (let i = 0; i < ranges.length;) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n return writer.flush();\n}\nfunction _encodeGeneratedRanges(ranges, index, writer, state) {\n const range = ranges[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, isScope, callsite, bindings, } = range;\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n }\n else if (index > 0) {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, range[1], state[1]);\n const fields = (range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0);\n encodeInteger(writer, fields, 0);\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n state[2] = encodeInteger(writer, sourcesIndex, state[2]);\n state[3] = encodeInteger(writer, scopesIndex, state[3]);\n }\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n }\n else if (callLine !== state[5]) {\n state[6] = 0;\n }\n state[4] = encodeInteger(writer, sourcesIndex, state[4]);\n state[5] = encodeInteger(writer, callLine, state[5]);\n state[6] = encodeInteger(writer, callColumn, state[6]);\n }\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1)\n encodeInteger(writer, -binding.length, 0);\n const expression = binding[0][0];\n encodeInteger(writer, expression, 0);\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine);\n bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn);\n encodeInteger(writer, expRange[0], 0);\n }\n }\n }\n for (index++; index < ranges.length;) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n }\n else {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, endColumn, state[1]);\n return index;\n}\nfunction catchupLine(writer, lastLine, line) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n}\n\nfunction decode(mappings) {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n do {\n const semi = reader.indexOf(';');\n const line = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n while (reader.pos < semi) {\n let seg;\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol)\n sorted = false;\n lastCol = genColumn;\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n }\n else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n }\n else {\n seg = [genColumn];\n }\n line.push(seg);\n reader.pos++;\n }\n if (!sorted)\n sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n return decoded;\n}\nfunction sort(line) {\n line.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n return a[0] - b[0];\n}\nfunction encode(decoded) {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0)\n writer.write(semicolon);\n if (line.length === 0)\n continue;\n let genColumn = 0;\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0)\n writer.write(comma);\n genColumn = encodeInteger(writer, segment[0], genColumn);\n if (segment.length === 1)\n continue;\n sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n sourceLine = encodeInteger(writer, segment[2], sourceLine);\n sourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n if (segment.length === 4)\n continue;\n namesIndex = encodeInteger(writer, segment[4], namesIndex);\n }\n }\n return writer.flush();\n}\n\nexport { decode, decodeGeneratedRanges, decodeOriginalScopes, encode, encodeGeneratedRanges, encodeOriginalScopes };\n//# sourceMappingURL=sourcemap-codec.mjs.map\n","import { encode } from '@jridgewell/sourcemap-codec';\n\nfunction getBtoa() {\n\tif (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {\n\t\treturn (str) => globalThis.btoa(unescape(encodeURIComponent(str)));\n\t} else if (typeof Buffer === 'function') {\n\t\treturn (str) => Buffer.from(str, 'utf-8').toString('base64');\n\t} else {\n\t\treturn () => {\n\t\t\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n\t\t};\n\t}\n}\n\nconst btoa = /*#__PURE__*/ getBtoa();\n\nexport default class SourceMap {\n\tconstructor(properties) {\n\t\tthis.version = 3;\n\t\tthis.file = properties.file;\n\t\tthis.sources = properties.sources;\n\t\tthis.sourcesContent = properties.sourcesContent;\n\t\tthis.names = properties.names;\n\t\tthis.mappings = encode(properties.mappings);\n\t\tif (typeof properties.x_google_ignoreList !== 'undefined') {\n\t\t\tthis.x_google_ignoreList = properties.x_google_ignoreList;\n\t\t}\n\t\tif (typeof properties.debugId !== 'undefined') {\n\t\t\tthis.debugId = properties.debugId;\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn JSON.stringify(this);\n\t}\n\n\ttoUrl() {\n\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n\t}\n}\n","export default function guessIndent(code) {\n\tconst lines = code.split('\\n');\n\n\tconst tabbed = lines.filter((line) => /^\\t+/.test(line));\n\tconst spaced = lines.filter((line) => /^ {2,}/.test(line));\n\n\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif (tabbed.length >= spaced.length) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tconst min = spaced.reduce((previous, current) => {\n\t\tconst numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\n\treturn new Array(min + 1).join(' ');\n}\n","export default function getRelativePath(from, to) {\n\tconst fromParts = from.split(/[/\\\\]/);\n\tconst toParts = to.split(/[/\\\\]/);\n\n\tfromParts.pop(); // get dirname\n\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif (fromParts.length) {\n\t\tlet i = fromParts.length;\n\t\twhile (i--) fromParts[i] = '..';\n\t}\n\n\treturn fromParts.concat(toParts).join('/');\n}\n","const toString = Object.prototype.toString;\n\nexport default function isObject(thing) {\n\treturn toString.call(thing) === '[object Object]';\n}\n","export default function getLocator(source) {\n\tconst originalLines = source.split('\\n');\n\tconst lineOffsets = [];\n\n\tfor (let i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\n\treturn function locate(index) {\n\t\tlet i = 0;\n\t\tlet j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tconst m = (i + j) >> 1;\n\t\t\tif (index < lineOffsets[m]) {\n\t\t\t\tj = m;\n\t\t\t} else {\n\t\t\t\ti = m + 1;\n\t\t\t}\n\t\t}\n\t\tconst line = i - 1;\n\t\tconst column = index - lineOffsets[line];\n\t\treturn { line, column };\n\t};\n}\n","const wordRegex = /\\w/;\n\nexport default class Mappings {\n\tconstructor(hires) {\n\t\tthis.hires = hires;\n\t\tthis.generatedCodeLine = 0;\n\t\tthis.generatedCodeColumn = 0;\n\t\tthis.raw = [];\n\t\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\t\tthis.pending = null;\n\t}\n\n\taddEdit(sourceIndex, content, loc, nameIndex) {\n\t\tif (content.length) {\n\t\t\tconst contentLengthMinusOne = content.length - 1;\n\t\t\tlet contentLineEnd = content.indexOf('\\n', 0);\n\t\t\tlet previousContentLineEnd = -1;\n\t\t\t// Loop through each line in the content and add a segment, but stop if the last line is empty,\n\t\t\t// else code afterwards would fill one line too many\n\t\t\twhile (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {\n\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\t\tif (nameIndex >= 0) {\n\t\t\t\t\tsegment.push(nameIndex);\n\t\t\t\t}\n\t\t\t\tthis.rawSegments.push(segment);\n\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\n\t\t\t\tpreviousContentLineEnd = contentLineEnd;\n\t\t\t\tcontentLineEnd = content.indexOf('\\n', contentLineEnd + 1);\n\t\t\t}\n\n\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\tif (nameIndex >= 0) {\n\t\t\t\tsegment.push(nameIndex);\n\t\t\t}\n\t\t\tthis.rawSegments.push(segment);\n\n\t\t\tthis.advance(content.slice(previousContentLineEnd + 1));\n\t\t} else if (this.pending) {\n\t\t\tthis.rawSegments.push(this.pending);\n\t\t\tthis.advance(content);\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\taddUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n\t\tlet originalCharIndex = chunk.start;\n\t\tlet first = true;\n\t\t// when iterating each char, check if it's in a word boundary\n\t\tlet charInHiresBoundary = false;\n\n\t\twhile (originalCharIndex < chunk.end) {\n\t\t\tif (original[originalCharIndex] === '\\n') {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tfirst = true;\n\t\t\t\tcharInHiresBoundary = false;\n\t\t\t} else {\n\t\t\t\tif (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n\t\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\n\t\t\t\t\tif (this.hires === 'boundary') {\n\t\t\t\t\t\t// in hires \"boundary\", group segments per word boundary than per char\n\t\t\t\t\t\tif (wordRegex.test(original[originalCharIndex])) {\n\t\t\t\t\t\t\t// for first char in the boundary found, start the boundary by pushing a segment\n\t\t\t\t\t\t\tif (!charInHiresBoundary) {\n\t\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\t\tcharInHiresBoundary = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// for non-word char, end the boundary by pushing a segment\n\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\tcharInHiresBoundary = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tloc.column += 1;\n\t\t\t\tthis.generatedCodeColumn += 1;\n\t\t\t\tfirst = false;\n\t\t\t}\n\n\t\t\toriginalCharIndex += 1;\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\tadvance(str) {\n\t\tif (!str) return;\n\n\t\tconst lines = str.split('\\n');\n\n\t\tif (lines.length > 1) {\n\t\t\tfor (let i = 0; i < lines.length - 1; i++) {\n\t\t\t\tthis.generatedCodeLine++;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t}\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t}\n\n\t\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n\t}\n}\n","import BitSet from './BitSet.js';\nimport Chunk from './Chunk.js';\nimport SourceMap from './SourceMap.js';\nimport guessIndent from './utils/guessIndent.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\nimport Stats from './utils/Stats.js';\n\nconst n = '\\n';\n\nconst warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false,\n};\n\nexport default class MagicString {\n\tconstructor(string, options = {}) {\n\t\tconst chunk = new Chunk(0, string.length, string);\n\n\t\tObject.defineProperties(this, {\n\t\t\toriginal: { writable: true, value: string },\n\t\t\toutro: { writable: true, value: '' },\n\t\t\tintro: { writable: true, value: '' },\n\t\t\tfirstChunk: { writable: true, value: chunk },\n\t\t\tlastChunk: { writable: true, value: chunk },\n\t\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\t\tbyStart: { writable: true, value: {} },\n\t\t\tbyEnd: { writable: true, value: {} },\n\t\t\tfilename: { writable: true, value: options.filename },\n\t\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\t\tsourcemapLocations: { writable: true, value: new BitSet() },\n\t\t\tstoredNames: { writable: true, value: {} },\n\t\t\tindentStr: { writable: true, value: undefined },\n\t\t\tignoreList: { writable: true, value: options.ignoreList },\n\t\t\toffset: { writable: true, value: options.offset || 0 },\n\t\t});\n\n\t\tif (DEBUG) {\n\t\t\tObject.defineProperty(this, 'stats', { value: new Stats() });\n\t\t}\n\n\t\tthis.byStart[0] = chunk;\n\t\tthis.byEnd[string.length] = chunk;\n\t}\n\n\taddSourcemapLocation(char) {\n\t\tthis.sourcemapLocations.add(char);\n\t}\n\n\tappend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.outro += content;\n\t\treturn this;\n\t}\n\n\tappendLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendLeft');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendLeft(content);\n\t\t} else {\n\t\t\tthis.intro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendLeft');\n\t\treturn this;\n\t}\n\n\tappendRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendRight(content);\n\t\t} else {\n\t\t\tthis.outro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendRight');\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });\n\n\t\tlet originalChunk = this.firstChunk;\n\t\tlet clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());\n\n\t\twhile (originalChunk) {\n\t\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\n\t\t\tconst nextOriginalChunk = originalChunk.next;\n\t\t\tconst nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\t\tif (nextClonedChunk) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\n\t\tcloned.lastChunk = clonedChunk;\n\n\t\tif (this.indentExclusionRanges) {\n\t\t\tcloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t\t}\n\n\t\tcloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n\n\t\tcloned.intro = this.intro;\n\t\tcloned.outro = this.outro;\n\n\t\treturn cloned;\n\t}\n\n\tgenerateDecodedMap(options) {\n\t\toptions = options || {};\n\n\t\tconst sourceIndex = 0;\n\t\tconst names = Object.keys(this.storedNames);\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tconst locate = getLocator(this.original);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.firstChunk.eachNext((chunk) => {\n\t\t\tconst loc = locate(chunk.start);\n\n\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tmappings.addEdit(\n\t\t\t\t\tsourceIndex,\n\t\t\t\t\tchunk.content,\n\t\t\t\t\tloc,\n\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tmappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);\n\t\t\t}\n\n\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: [\n\t\t\t\toptions.source ? getRelativePath(options.file || '', options.source) : options.file || '',\n\t\t\t],\n\t\t\tsourcesContent: options.includeContent ? [this.original] : undefined,\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\t_ensureindentStr() {\n\t\tif (this.indentStr === undefined) {\n\t\t\tthis.indentStr = guessIndent(this.original);\n\t\t}\n\t}\n\n\t_getRawIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr;\n\t}\n\n\tgetIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t}\n\n\tindent(indentStr, options) {\n\t\tconst pattern = /^[^\\r\\n]/gm;\n\n\t\tif (isObject(indentStr)) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = undefined;\n\t\t}\n\n\t\tif (indentStr === undefined) {\n\t\t\tthis._ensureindentStr();\n\t\t\tindentStr = this.indentStr || '\\t';\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\toptions = options || {};\n\n\t\t// Process exclusion ranges\n\t\tconst isExcluded = {};\n\n\t\tif (options.exclude) {\n\t\t\tconst exclusions =\n\t\t\t\ttypeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\t\t\texclusions.forEach((exclusion) => {\n\t\t\t\tfor (let i = exclusion[0]; i < exclusion[1]; i += 1) {\n\t\t\t\t\tisExcluded[i] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tlet shouldIndentNextCharacter = options.indentStart !== false;\n\t\tconst replacer = (match) => {\n\t\t\tif (shouldIndentNextCharacter) return `${indentStr}${match}`;\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\n\t\tthis.intro = this.intro.replace(pattern, replacer);\n\n\t\tlet charIndex = 0;\n\t\tlet chunk = this.firstChunk;\n\n\t\twhile (chunk) {\n\t\t\tconst end = chunk.end;\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\n\t\t\t\t\tif (chunk.content.length) {\n\t\t\t\t\t\tshouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\n\t\t\t\twhile (charIndex < end) {\n\t\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\t\tconst char = this.original[charIndex];\n\n\t\t\t\t\t\tif (char === '\\n') {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\t} else if (char !== '\\r' && shouldIndentNextCharacter) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\t\tif (charIndex === chunk.start) {\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tthis.outro = this.outro.replace(pattern, replacer);\n\n\t\treturn this;\n\t}\n\n\tinsert() {\n\t\tthrow new Error(\n\t\t\t'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)',\n\t\t);\n\t}\n\n\tinsertLeft(index, content) {\n\t\tif (!warned.insertLeft) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',\n\t\t\t);\n\t\t\twarned.insertLeft = true;\n\t\t}\n\n\t\treturn this.appendLeft(index, content);\n\t}\n\n\tinsertRight(index, content) {\n\t\tif (!warned.insertRight) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',\n\t\t\t);\n\t\t\twarned.insertRight = true;\n\t\t}\n\n\t\treturn this.prependRight(index, content);\n\t}\n\n\tmove(start, end, index) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tindex = index + this.offset;\n\n\t\tif (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');\n\n\t\tif (DEBUG) this.stats.time('move');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tthis._split(index);\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tconst oldLeft = first.previous;\n\t\tconst oldRight = last.next;\n\n\t\tconst newRight = this.byStart[index];\n\t\tif (!newRight && last === this.lastChunk) return this;\n\t\tconst newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\t\tif (oldLeft) oldLeft.next = oldRight;\n\t\tif (oldRight) oldRight.previous = oldLeft;\n\n\t\tif (newLeft) newLeft.next = first;\n\t\tif (newRight) newRight.previous = last;\n\n\t\tif (!first.previous) this.firstChunk = last.next;\n\t\tif (!last.next) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight || null;\n\n\t\tif (!newLeft) this.firstChunk = first;\n\t\tif (!newRight) this.lastChunk = last;\n\n\t\tif (DEBUG) this.stats.timeEnd('move');\n\t\treturn this;\n\t}\n\n\toverwrite(start, end, content, options) {\n\t\toptions = options || {};\n\t\treturn this.update(start, end, content, { ...options, overwrite: !options.contentOnly });\n\t}\n\n\tupdate(start, end, content, options) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('replacement content must be a string');\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (end > this.original.length) throw new Error('end is out of bounds');\n\t\tif (start === end)\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot overwrite a zero-length range – use appendLeft or prependRight instead',\n\t\t\t);\n\n\t\tif (DEBUG) this.stats.time('overwrite');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tif (options === true) {\n\t\t\tif (!warned.storeName) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',\n\t\t\t\t);\n\t\t\t\twarned.storeName = true;\n\t\t\t}\n\n\t\t\toptions = { storeName: true };\n\t\t}\n\t\tconst storeName = options !== undefined ? options.storeName : false;\n\t\tconst overwrite = options !== undefined ? options.overwrite : false;\n\n\t\tif (storeName) {\n\t\t\tconst original = this.original.slice(start, end);\n\t\t\tObject.defineProperty(this.storedNames, original, {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: true,\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t}\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tif (first) {\n\t\t\tlet chunk = first;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tif (chunk.next !== this.byStart[chunk.end]) {\n\t\t\t\t\tthrow new Error('Cannot overwrite across a split point');\n\t\t\t\t}\n\t\t\t\tchunk = chunk.next;\n\t\t\t\tchunk.edit('', false);\n\t\t\t}\n\n\t\t\tfirst.edit(content, storeName, !overwrite);\n\t\t} else {\n\t\t\t// must be inserting at the end\n\t\t\tconst newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n\t\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('overwrite');\n\t\treturn this;\n\t}\n\n\tprepend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t}\n\n\tprependLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependLeft(content);\n\t\t} else {\n\t\t\tthis.intro = content + this.intro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tprependRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependRight(content);\n\t\t} else {\n\t\t\tthis.outro = content + this.outro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tremove(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('remove');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.intro = '';\n\t\t\tchunk.outro = '';\n\t\t\tchunk.edit('');\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('remove');\n\t\treturn this;\n\t}\n\n\treset(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('reset');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.reset();\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('reset');\n\t\treturn this;\n\t}\n\n\tlastChar() {\n\t\tif (this.outro.length) return this.outro[this.outro.length - 1];\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];\n\t\t\tif (chunk.content.length) return chunk.content[chunk.content.length - 1];\n\t\t\tif (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];\n\t\t} while ((chunk = chunk.previous));\n\t\tif (this.intro.length) return this.intro[this.intro.length - 1];\n\t\treturn '';\n\t}\n\n\tlastLine() {\n\t\tlet lineIndex = this.outro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.outro.substr(lineIndex + 1);\n\t\tlet lineStr = this.outro;\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length > 0) {\n\t\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.outro + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.content.length > 0) {\n\t\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.content + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.intro.length > 0) {\n\t\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.intro + lineStr;\n\t\t\t}\n\t\t} while ((chunk = chunk.previous));\n\t\tlineIndex = this.intro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;\n\t\treturn this.intro + lineStr;\n\t}\n\n\tslice(start = 0, end = this.original.length - this.offset) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tlet result = '';\n\n\t\t// find start chunk\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t\t// found end chunk before start\n\t\t\tif (chunk.start < end && chunk.end >= end) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tif (chunk && chunk.edited && chunk.start !== start)\n\t\t\tthrow new Error(`Cannot use replaced character ${start} as slice start anchor.`);\n\n\t\tconst startChunk = chunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n\t\t\t\tresult += chunk.intro;\n\t\t\t}\n\n\t\t\tconst containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif (containsEnd && chunk.edited && chunk.end !== end)\n\t\t\t\tthrow new Error(`Cannot use replaced character ${end} as slice end anchor.`);\n\n\t\t\tconst sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tconst sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\n\t\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) {\n\t\t\t\tresult += chunk.outro;\n\t\t\t}\n\n\t\t\tif (containsEnd) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// TODO deprecate this? not really very useful\n\tsnip(start, end) {\n\t\tconst clone = this.clone();\n\t\tclone.remove(0, start);\n\t\tclone.remove(end, clone.original.length);\n\n\t\treturn clone;\n\t}\n\n\t_split(index) {\n\t\tif (this.byStart[index] || this.byEnd[index]) return;\n\n\t\tif (DEBUG) this.stats.time('_split');\n\n\t\tlet chunk = this.lastSearchedChunk;\n\t\tconst searchForward = index > chunk.end;\n\n\t\twhile (chunk) {\n\t\t\tif (chunk.contains(index)) return this._splitChunk(chunk, index);\n\n\t\t\tchunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n\t\t}\n\t}\n\n\t_splitChunk(chunk, index) {\n\t\tif (chunk.edited && chunk.content.length) {\n\t\t\t// zero-length edited chunks are a special case (overlapping replacements)\n\t\t\tconst loc = getLocator(this.original)(index);\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – \"${chunk.original}\")`,\n\t\t\t);\n\t\t}\n\n\t\tconst newChunk = chunk.split(index);\n\n\t\tthis.byEnd[index] = chunk;\n\t\tthis.byStart[index] = newChunk;\n\t\tthis.byEnd[newChunk.end] = newChunk;\n\n\t\tif (chunk === this.lastChunk) this.lastChunk = newChunk;\n\n\t\tthis.lastSearchedChunk = chunk;\n\t\tif (DEBUG) this.stats.timeEnd('_split');\n\t\treturn true;\n\t}\n\n\ttoString() {\n\t\tlet str = this.intro;\n\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn str + this.outro;\n\t}\n\n\tisEmpty() {\n\t\tlet chunk = this.firstChunk;\n\t\tdo {\n\t\t\tif (\n\t\t\t\t(chunk.intro.length && chunk.intro.trim()) ||\n\t\t\t\t(chunk.content.length && chunk.content.trim()) ||\n\t\t\t\t(chunk.outro.length && chunk.outro.trim())\n\t\t\t)\n\t\t\t\treturn false;\n\t\t} while ((chunk = chunk.next));\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\tlet chunk = this.firstChunk;\n\t\tlet length = 0;\n\t\tdo {\n\t\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t\t} while ((chunk = chunk.next));\n\t\treturn length;\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimEndAborted(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tlet chunk = this.lastChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimEnd(rx);\n\n\t\t\t// if chunk was trimmed, we have a new lastChunk\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (this.lastChunk === chunk) {\n\t\t\t\t\tthis.lastChunk = chunk.next;\n\t\t\t\t}\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.previous;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimEnd(charType) {\n\t\tthis.trimEndAborted(charType);\n\t\treturn this;\n\t}\n\ttrimStartAborted(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tlet chunk = this.firstChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimStart(rx);\n\n\t\t\tif (chunk.end !== end) {\n\t\t\t\t// special case...\n\t\t\t\tif (chunk === this.lastChunk) this.lastChunk = chunk.next;\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.next;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimStart(charType) {\n\t\tthis.trimStartAborted(charType);\n\t\treturn this;\n\t}\n\n\thasChanged() {\n\t\treturn this.original !== this.toString();\n\t}\n\n\t_replaceRegexp(searchValue, replacement) {\n\t\tfunction getReplacement(match, str) {\n\t\t\tif (typeof replacement === 'string') {\n\t\t\t\treturn replacement.replace(/\\$(\\$|&|\\d+)/g, (_, i) => {\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter\n\t\t\t\t\tif (i === '$') return '$';\n\t\t\t\t\tif (i === '&') return match[0];\n\t\t\t\t\tconst num = +i;\n\t\t\t\t\tif (num < match.length) return match[+i];\n\t\t\t\t\treturn `$${i}`;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn replacement(...match, match.index, str, match.groups);\n\t\t\t}\n\t\t}\n\t\tfunction matchAll(re, str) {\n\t\t\tlet match;\n\t\t\tconst matches = [];\n\t\t\twhile ((match = re.exec(str))) {\n\t\t\t\tmatches.push(match);\n\t\t\t}\n\t\t\treturn matches;\n\t\t}\n\t\tif (searchValue.global) {\n\t\t\tconst matches = matchAll(searchValue, this.original);\n\t\t\tmatches.forEach((match) => {\n\t\t\t\tif (match.index != null) {\n\t\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst match = this.original.match(searchValue);\n\t\t\tif (match && match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t_replaceString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst index = original.indexOf(string);\n\n\t\tif (index !== -1) {\n\t\t\tthis.overwrite(index, index + string.length, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplace(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceString(searchValue, replacement);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n\n\t_replaceAllString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst stringLength = string.length;\n\t\tfor (\n\t\t\tlet index = original.indexOf(string);\n\t\t\tindex !== -1;\n\t\t\tindex = original.indexOf(string, index + stringLength)\n\t\t) {\n\t\t\tconst previous = original.slice(index, index + stringLength);\n\t\t\tif (previous !== replacement) this.overwrite(index, index + stringLength, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplaceAll(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceAllString(searchValue, replacement);\n\t\t}\n\n\t\tif (!searchValue.global) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'MagicString.prototype.replaceAll called with a non-global RegExp argument',\n\t\t\t);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n}\n","import MagicString from './MagicString.js';\nimport SourceMap from './SourceMap.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\n\nconst hasOwnProp = Object.prototype.hasOwnProperty;\n\nexport default class Bundle {\n\tconstructor(options = {}) {\n\t\tthis.intro = options.intro || '';\n\t\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\t\tthis.sources = [];\n\t\tthis.uniqueSources = [];\n\t\tthis.uniqueSourceIndexByFilename = {};\n\t}\n\n\taddSource(source) {\n\t\tif (source instanceof MagicString) {\n\t\t\treturn this.addSource({\n\t\t\t\tcontent: source,\n\t\t\t\tfilename: source.filename,\n\t\t\t\tseparator: this.separator,\n\t\t\t});\n\t\t}\n\n\t\tif (!isObject(source) || !source.content) {\n\t\t\tthrow new Error(\n\t\t\t\t'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`',\n\t\t\t);\n\t\t}\n\n\t\t['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => {\n\t\t\tif (!hasOwnProp.call(source, option)) source[option] = source.content[option];\n\t\t});\n\n\t\tif (source.separator === undefined) {\n\t\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\tsource.separator = this.separator;\n\t\t}\n\n\t\tif (source.filename) {\n\t\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t} else {\n\t\t\t\tconst uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\t\tthrow new Error(`Illegal source: same filename (${source.filename}), different contents`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sources.push(source);\n\t\treturn this;\n\t}\n\n\tappend(str, options) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString(str),\n\t\t\tseparator: (options && options.separator) || '',\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator,\n\t\t});\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tseparator: source.separator,\n\t\t\t});\n\t\t});\n\n\t\treturn bundle;\n\t}\n\n\tgenerateDecodedMap(options = {}) {\n\t\tconst names = [];\n\t\tlet x_google_ignoreList = undefined;\n\t\tthis.sources.forEach((source) => {\n\t\t\tObject.keys(source.content.storedNames).forEach((name) => {\n\t\t\t\tif (!~names.indexOf(name)) names.push(name);\n\t\t\t});\n\t\t});\n\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tif (i > 0) {\n\t\t\t\tmappings.advance(this.separator);\n\t\t\t}\n\n\t\t\tconst sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\t\tconst magicString = source.content;\n\t\t\tconst locate = getLocator(magicString.original);\n\n\t\t\tif (magicString.intro) {\n\t\t\t\tmappings.advance(magicString.intro);\n\t\t\t}\n\n\t\t\tmagicString.firstChunk.eachNext((chunk) => {\n\t\t\t\tconst loc = locate(chunk.start);\n\n\t\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\t\tif (source.filename) {\n\t\t\t\t\tif (chunk.edited) {\n\t\t\t\t\t\tmappings.addEdit(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk.content,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmappings.addUneditedChunk(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk,\n\t\t\t\t\t\t\tmagicString.original,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tmagicString.sourcemapLocations,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmappings.advance(chunk.content);\n\t\t\t\t}\n\n\t\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t\t});\n\n\t\t\tif (magicString.outro) {\n\t\t\t\tmappings.advance(magicString.outro);\n\t\t\t}\n\n\t\t\tif (source.ignoreList && sourceIndex !== -1) {\n\t\t\t\tif (x_google_ignoreList === undefined) {\n\t\t\t\t\tx_google_ignoreList = [];\n\t\t\t\t}\n\t\t\t\tx_google_ignoreList.push(sourceIndex);\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\tgetIndentString() {\n\t\tconst indentStringCounts = {};\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tconst indentStr = source.content._getRawIndentString();\n\n\t\t\tif (indentStr === null) return;\n\n\t\t\tif (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0;\n\t\t\tindentStringCounts[indentStr] += 1;\n\t\t});\n\n\t\treturn (\n\t\t\tObject.keys(indentStringCounts).sort((a, b) => {\n\t\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t\t})[0] || '\\t'\n\t\t);\n\t}\n\n\tindent(indentStr) {\n\t\tif (!arguments.length) {\n\t\t\tindentStr = this.getIndentString();\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\tlet trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\tconst indentStart = trailingNewline || (i > 0 && /\\r?\\n$/.test(separator));\n\n\t\t\tsource.content.indent(indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart, //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t});\n\n\t\t\ttrailingNewline = source.content.lastChar() === '\\n';\n\t\t});\n\n\t\tif (this.intro) {\n\t\t\tthis.intro =\n\t\t\t\tindentStr +\n\t\t\t\tthis.intro.replace(/^[^\\n]/gm, (match, index) => {\n\t\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprepend(str) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t}\n\n\ttoString() {\n\t\tconst body = this.sources\n\t\t\t.map((source, i) => {\n\t\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\t\tconst str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\t\treturn str;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn this.intro + body;\n\t}\n\n\tisEmpty() {\n\t\tif (this.intro.length && this.intro.trim()) return false;\n\t\tif (this.sources.some((source) => !source.content.isEmpty())) return false;\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\treturn this.sources.reduce(\n\t\t\t(length, source) => length + source.content.length(),\n\t\t\tthis.intro.length,\n\t\t);\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimStart(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\t\tthis.intro = this.intro.replace(rx, '');\n\n\t\tif (!this.intro) {\n\t\t\tlet source;\n\t\t\tlet i = 0;\n\n\t\t\tdo {\n\t\t\t\tsource = this.sources[i++];\n\t\t\t\tif (!source) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} while (!source.content.trimStartAborted(charType));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\ttrimEnd(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tlet source;\n\t\tlet i = this.sources.length - 1;\n\n\t\tdo {\n\t\t\tsource = this.sources[i--];\n\t\t\tif (!source) {\n\t\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimEndAborted(charType));\n\n\t\treturn this;\n\t}\n}\n","import MagicString from './MagicString.js';\nimport Bundle from './Bundle.js';\nimport SourceMap from './SourceMap.js';\n\nMagicString.Bundle = Bundle;\nMagicString.SourceMap = SourceMap;\nMagicString.default = MagicString; // work around TypeScript bug https://github.com/Rich-Harris/magic-string/pull/121\n\nexport default MagicString;\n"],"names":[],"mappings":";;;;;;CAAe,MAAM,MAAM,CAAC;CAC5B,CAAC,WAAW,CAAC,GAAG,EAAE;CAClB,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,YAAY,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;CAC5D,EAAE;AACF;CACA,CAAC,GAAG,CAAC,CAAC,EAAE;CACR,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;CACrC,EAAE;AACF;CACA,CAAC,GAAG,CAAC,CAAC,EAAE;CACR,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;CACjD,EAAE;CACF;;CCZe,MAAM,KAAK,CAAC;CAC3B,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE;CAClC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;CACpB,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;CAChB,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;;CAEzB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;CACjB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;;CAEjB,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;CACxB,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;CACxB,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;;CAErB,EAMS;CACT,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;CACvB,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;CACnB,GAAE;CACF,EAAC;;CAED,CAAC,UAAU,CAAC,OAAO,EAAE;CACrB,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,CAAA;CACvB,EAAC;;CAED,CAAC,WAAW,CAAC,OAAO,EAAE;CACtB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;CACnC,EAAC;;CAED,CAAC,KAAK,GAAG;CACT,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;;CAE9D,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;CAC1B,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;CAC1B,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;CAC9B,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;CAClC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;;CAE5B,EAAE,OAAO,KAAK,CAAA;CACd,EAAC;;CAED,CAAC,QAAQ,CAAC,KAAK,EAAE;CACjB,EAAE,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAA;CAC/C,EAAC;;CAED,CAAC,QAAQ,CAAC,EAAE,EAAE;CACd,EAAE,IAAI,KAAK,GAAG,IAAI,CAAA;CAClB,EAAE,OAAO,KAAK,EAAE;CAChB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;CACZ,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;CACrB,GAAE;CACF,EAAC;;CAED,CAAC,YAAY,CAAC,EAAE,EAAE;CAClB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAA;CAClB,EAAE,OAAO,KAAK,EAAE;CAChB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;CACZ,GAAG,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAA;CACzB,GAAE;CACF,EAAC;;CAED,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE;CACvC,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;CACxB,EAAE,IAAI,CAAC,WAAW,EAAE;CACpB,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;CAClB,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;CAClB,GAAE;CACF,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;;CAE5B,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;;CAEpB,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,WAAW,CAAC,OAAO,EAAE;CACtB,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;CACnC,EAAC;;CAED,CAAC,YAAY,CAAC,OAAO,EAAE;CACvB,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;CACnC,EAAC;;CAED,CAAC,KAAK,GAAG;CACT,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;CACjB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;CACjB,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;CACnB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAA;CAC/B,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;CACzB,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;CACtB,GAAE;CACF,EAAC;;CAED,CAAC,KAAK,CAAC,KAAK,EAAE;CACd,EAAE,MAAM,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;;CAEvC,EAAE,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;CAC3D,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;;CAEvD,EAAE,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAA;;CAEhC,EAAE,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;CAC5D,EAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;CAC7B,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;;CAEjB,EAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAA;;CAElB,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;CACnB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;CAC3B,GAAG,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;CACpB,GAAG,MAAM;CACT,GAAG,IAAI,CAAC,OAAO,GAAG,cAAc,CAAA;CAChC,GAAE;;CAEF,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;CAC3B,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;CACtD,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAA;CAC1B,EAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAA;;CAEtB,EAAE,OAAO,QAAQ,CAAA;CACjB,EAAC;;CAED,CAAC,QAAQ,GAAG;CACZ,EAAE,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;CAC/C,EAAC;;CAED,CAAC,OAAO,CAAC,EAAE,EAAE;CACb,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;CACzC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;CAEpC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;;CAE9C,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;CACtB,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;CACjC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;CACrE,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;CACrB;CACA,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;CAC7C,KAAI;CACJ,IAAG;CACH,GAAG,OAAO,IAAI,CAAA;CACd,GAAG,MAAM;CACT,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;;CAEjC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;CAC1C,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;CACrC,GAAE;CACF,EAAC;;CAED,CAAC,SAAS,CAAC,EAAE,EAAE;CACf,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;CACzC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;CAEpC,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;;CAE9C,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;CACtB,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;CACjC,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CAC1D,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;CACrB;CACA,KAAK,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;CACjD,KAAI;CACJ,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;CAClC,IAAG;CACH,GAAG,OAAO,IAAI,CAAA;CACd,GAAG,MAAM;CACT,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;;CAEjC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;CAC1C,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;CACrC,GAAE;CACF,EAAC;CACD;;CCvLA,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CAChC,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CACpC,MAAM,KAAK,GAAG,kEAAkE,CAAC;CACjF,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;CACrC,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;CACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACvC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CAClC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACrB,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACrB,CAAC;CAkBD,SAAS,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE;CAC/C,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,QAAQ,CAAC;CAC/B,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG;CACP,QAAQ,IAAI,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;CACvC,QAAQ,KAAK,MAAM,CAAC,CAAC;CACrB,QAAQ,IAAI,KAAK,GAAG,CAAC;CACrB,YAAY,OAAO,IAAI,QAAQ,CAAC;CAChC,QAAQ,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;CAC1C,KAAK,QAAQ,KAAK,GAAG,CAAC,EAAE;CACxB,IAAI,OAAO,GAAG,CAAC;CACf,CAAC;AAMD;CACA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;CAC5B;CACA,MAAM,EAAE,GAAG,OAAO,WAAW,KAAK,WAAW;CAC7C,sBAAsB,IAAI,WAAW,EAAE;CACvC,MAAM,OAAO,MAAM,KAAK,WAAW;CACnC,UAAU;CACV,YAAY,MAAM,CAAC,GAAG,EAAE;CACxB,gBAAgB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;CACpF,gBAAgB,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;CACtC,aAAa;CACb,SAAS;CACT,UAAU;CACV,YAAY,MAAM,CAAC,GAAG,EAAE;CACxB,gBAAgB,IAAI,GAAG,GAAG,EAAE,CAAC;CAC7B,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACrD,oBAAoB,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CACvD,iBAAiB;CACjB,gBAAgB,OAAO,GAAG,CAAC;CAC3B,aAAa;CACb,SAAS,CAAC;CACV,MAAM,YAAY,CAAC;CACnB,IAAI,WAAW,GAAG;CAClB,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;CACrB,QAAQ,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;CACtB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;CAChD,KAAK;CACL,IAAI,KAAK,CAAC,CAAC,EAAE;CACb,QAAQ,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAChC,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;CAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;CACpC,YAAY,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;CAC1C,YAAY,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;CACzB,SAAS;CACT,KAAK;CACL,IAAI,KAAK,GAAG;CACZ,QAAQ,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;CAC1C,QAAQ,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;CACxE,KAAK;CACL,CAAC;CAoTD,SAAS,MAAM,CAAC,OAAO,EAAE;CACzB,IAAI,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;CACtC,IAAI,IAAI,YAAY,GAAG,CAAC,CAAC;CACzB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;CACvB,IAAI,IAAI,YAAY,GAAG,CAAC,CAAC;CACzB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;CACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC7C,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAChC,QAAQ,IAAI,CAAC,GAAG,CAAC;CACjB,YAAY,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;CACpC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;CAC7B,YAAY,SAAS;CACrB,QAAQ,IAAI,SAAS,GAAG,CAAC,CAAC;CAC1B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC9C,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;CACpC,YAAY,IAAI,CAAC,GAAG,CAAC;CACrB,gBAAgB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;CACpC,YAAY,SAAS,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;CACrE,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;CACpC,gBAAgB,SAAS;CACzB,YAAY,YAAY,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;CAC3E,YAAY,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;CACvE,YAAY,YAAY,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;CAC3E,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;CACpC,gBAAgB,SAAS;CACzB,YAAY,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;CACvE,SAAS;CACT,KAAK;CACL,IAAI,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;CAC1B;;CClaA,SAAS,OAAO,GAAG;CACnB,CAAC,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;CACjF,EAAE,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrE,EAAE,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;CAC1C,EAAE,OAAO,CAAC,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;CAC/D,EAAE,MAAM;CACR,EAAE,OAAO,MAAM;CACf,GAAG,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;CAC9F,GAAG,CAAC;CACJ,EAAE;CACF,CAAC;AACD;CACA,MAAM,IAAI,iBAAiB,OAAO,EAAE,CAAC;AACrC;CACe,MAAM,SAAS,CAAC;CAC/B,CAAC,WAAW,CAAC,UAAU,EAAE;CACzB,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;CACnB,EAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;CAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;CACpC,EAAE,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;CAClD,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;CAChC,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;CAC9C,EAAE,IAAI,OAAO,UAAU,CAAC,mBAAmB,KAAK,WAAW,EAAE;CAC7D,GAAG,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,mBAAmB,CAAC;CAC7D,GAAG;CACH,EAAE,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,WAAW,EAAE;CACjD,GAAG,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;CACrC,GAAG;CACH,EAAE;AACF;CACA,CAAC,QAAQ,GAAG;CACZ,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;CAC9B,EAAE;AACF;CACA,CAAC,KAAK,GAAG;CACT,EAAE,OAAO,6CAA6C,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;CAC/E,EAAE;CACF;;CCvCe,SAAS,WAAW,CAAC,IAAI,EAAE;CAC1C,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC;CACA,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;CAC1D,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D;CACA,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;CACjD,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;AACF;CACA;CACA;CACA;CACA,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;CACrC,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;AACF;CACA;CACA,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAK;CAClD,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;CAClD,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;CACvC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACd;CACA,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACrC;;CCxBe,SAAS,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE;CAClD,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;CACvC,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACnC;CACA,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AACjB;CACA,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE;CACrC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;CACpB,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;CAClB,EAAE;AACF;CACA,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE;CACvB,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;CAC3B,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAClC,EAAE;AACF;CACA,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC5C;;CCjBA,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC3C;CACe,SAAS,QAAQ,CAAC,KAAK,EAAE;CACxC,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC;CACnD;;CCJe,SAAS,UAAU,CAAC,MAAM,EAAE;CAC3C,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CAC1C,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AACxB;CACA,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACzD,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACxB,EAAE,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;CACrC,EAAE;AACF;CACA,CAAC,OAAO,SAAS,MAAM,CAAC,KAAK,EAAE;CAC/B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;CAC7B,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;CAChB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CAC1B,GAAG,IAAI,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE;CAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,MAAM;CACV,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACd,IAAI;CACJ,GAAG;CACH,EAAE,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;CACrB,EAAE,MAAM,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;CAC3C,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;CAC1B,EAAE,CAAC;CACH;;CCxBA,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB;CACe,MAAM,QAAQ,CAAC;CAC9B,CAAC,WAAW,CAAC,KAAK,EAAE;CACpB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;CACrB,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;CAC7B,EAAE,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;CAC/B,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;CAChB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;CAC3D,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;CACtB,EAAE;AACF;CACA,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE;CAC/C,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;CACtB,GAAG,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;CACpD,GAAG,IAAI,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CACjD,GAAG,IAAI,sBAAsB,GAAG,CAAC,CAAC,CAAC;CACnC;CACA;CACA,GAAG,OAAO,cAAc,IAAI,CAAC,IAAI,qBAAqB,GAAG,cAAc,EAAE;CACzE,IAAI,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAClF,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE;CACxB,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CAC7B,KAAK;CACL,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC;CACA,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;CAChC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;CAC7D,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AACjC;CACA,IAAI,sBAAsB,GAAG,cAAc,CAAC;CAC5C,IAAI,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;CAC/D,IAAI;AACJ;CACA,GAAG,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACjF,GAAG,IAAI,SAAS,IAAI,CAAC,EAAE;CACvB,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CAC5B,IAAI;CACJ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClC;CACA,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC,CAAC;CAC3D,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;CAC3B,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACvC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;CACzB,GAAG;AACH;CACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;CACtB,EAAE;AACF;CACA,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,kBAAkB,EAAE;CACzE,EAAE,IAAI,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC;CACtC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC;CACnB;CACA,EAAE,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAClC;CACA,EAAE,OAAO,iBAAiB,GAAG,KAAK,CAAC,GAAG,EAAE;CACxC,GAAG,IAAI,QAAQ,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE;CAC7C,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;CAClB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;CACnB,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;CAChC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;CAC7D,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;CACjC,IAAI,KAAK,GAAG,IAAI,CAAC;CACjB,IAAI,mBAAmB,GAAG,KAAK,CAAC;CAChC,IAAI,MAAM;CACV,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;CAC1E,KAAK,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACnF;CACA,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE;CACpC;CACA,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE;CACvD;CACA,OAAO,IAAI,CAAC,mBAAmB,EAAE;CACjC,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACvC,QAAQ,mBAAmB,GAAG,IAAI,CAAC;CACnC,QAAQ;CACR,OAAO,MAAM;CACb;CACA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACtC,OAAO,mBAAmB,GAAG,KAAK,CAAC;CACnC,OAAO;CACP,MAAM,MAAM;CACZ,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;CACrC,MAAM;CACN,KAAK;AACL;CACA,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;CACpB,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC;CAClC,IAAI,KAAK,GAAG,KAAK,CAAC;CAClB,IAAI;AACJ;CACA,GAAG,iBAAiB,IAAI,CAAC,CAAC;CAC1B,GAAG;AACH;CACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;CACtB,EAAE;AACF;CACA,CAAC,OAAO,CAAC,GAAG,EAAE;CACd,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO;AACnB;CACA,EAAE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC;CACA,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;CACxB,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAC9C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;CAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;CAC7D,IAAI;CACJ,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;CAChC,GAAG;AACH;CACA,EAAE,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;CAC7D,EAAE;CACF;;CCtGA,MAAM,CAAC,GAAG,IAAI,CAAA;;CAEd,MAAM,MAAM,GAAG;CACf,CAAC,UAAU,EAAE,KAAK;CAClB,CAAC,WAAW,EAAE,KAAK;CACnB,CAAC,SAAS,EAAE,KAAK;CACjB,CAAC,CAAA;;CAEc,MAAM,WAAW,CAAC;CACjC,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE;CACnC,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;;CAEnD,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE;CAChC,GAAG,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;CAC9C,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;CACvC,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;CACvC,GAAG,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;CAC/C,GAAG,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;CAC9C,GAAG,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;CACtD,GAAG,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;CACzC,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;CACvC,GAAG,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE;CACxD,GAAG,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,qBAAqB,EAAE;CAClF,GAAG,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,EAAE;CAC9D,GAAG,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;CAC7C,GAAG,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;CAClD,GAAG,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE;CAC5D,GAAG,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;CACzD,GAAG,CAAC,CAAA;;CAMJ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;CACzB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAA;CACnC,EAAC;;CAED,CAAC,oBAAoB,CAAC,IAAI,EAAE;CAC5B,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;CACnC,EAAC;;CAED,CAAC,MAAM,CAAC,OAAO,EAAE;CACjB,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAA;;CAExF,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,CAAA;CACvB,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;CAC5B,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;CAE7B,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAA;;CAI3F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;CAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;CAEjC,EAAE,IAAI,KAAK,EAAE;CACb,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;CAC5B,GAAG,MAAM;CACT,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAA;CACxB,GAAE;CAGF,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;CAC7B,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;CAE7B,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAA;;CAI3F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;CAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;CAEnC,EAAE,IAAI,KAAK,EAAE;CACb,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;CAC7B,GAAG,MAAM;CACT,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAA;CACxB,GAAE;CAGF,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,KAAK,GAAG;CACT,EAAE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;;CAEjG,EAAE,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,CAAA;CACrC,EAAE,IAAI,WAAW,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,iBAAiB,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,CAAA;;CAE1F,EAAE,OAAO,aAAa,EAAE;CACxB,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAA;CAClD,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAA;;CAE9C,GAAG,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAA;CAC/C,GAAG,MAAM,eAAe,GAAG,iBAAiB,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAA;;CAEzE,GAAG,IAAI,eAAe,EAAE;CACxB,IAAI,WAAW,CAAC,IAAI,GAAG,eAAe,CAAA;CACtC,IAAI,eAAe,CAAC,QAAQ,GAAG,WAAW,CAAA;;CAE1C,IAAI,WAAW,GAAG,eAAe,CAAA;CACjC,IAAG;;CAEH,GAAG,aAAa,GAAG,iBAAiB,CAAA;CACpC,GAAE;;CAEF,EAAE,MAAM,CAAC,SAAS,GAAG,WAAW,CAAA;;CAEhC,EAAE,IAAI,IAAI,CAAC,qBAAqB,EAAE;CAClC,GAAG,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAA;CACpE,GAAE;;CAEF,EAAE,MAAM,CAAC,kBAAkB,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;;CAEjE,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;CAC3B,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;;CAE3B,EAAE,OAAO,MAAM,CAAA;CACf,EAAC;;CAED,CAAC,kBAAkB,CAAC,OAAO,EAAE;CAC7B,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;;CAEzB,EAAE,MAAM,WAAW,GAAG,CAAC,CAAA;CACvB,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;CAC7C,EAAE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;CAE9C,EAAE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;;CAE1C,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;CAClB,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;CAC/B,GAAE;;CAEF,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK;CACtC,GAAG,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;CAElC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;CAExD,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;CACrB,IAAI,QAAQ,CAAC,OAAO;CACpB,KAAK,WAAW;CAChB,KAAK,KAAK,CAAC,OAAO;CAClB,KAAK,GAAG;CACR,KAAK,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;CACzD,KAAK,CAAA;CACL,IAAI,MAAM;CACV,IAAI,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;CAC9F,IAAG;;CAEH,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;CACxD,GAAG,CAAC,CAAA;;CAEJ,EAAE,OAAO;CACT,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS;CACrE,GAAG,OAAO,EAAE;CACZ,IAAI,OAAO,CAAC,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE;CAC7F,IAAI;CACJ,GAAG,cAAc,EAAE,OAAO,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS;CACvE,GAAG,KAAK;CACR,GAAG,QAAQ,EAAE,QAAQ,CAAC,GAAG;CACzB,GAAG,mBAAmB,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,WAAW,CAAC,GAAG,SAAS;CACnE,GAAG,CAAA;CACH,EAAC;;CAED,CAAC,WAAW,CAAC,OAAO,EAAE;CACtB,EAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAA;CACxD,EAAC;;CAED,CAAC,gBAAgB,GAAG;CACpB,EAAE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;CACpC,GAAG,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;CAC9C,GAAE;CACF,EAAC;;CAED,CAAC,mBAAmB,GAAG;CACvB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAA;CACzB,EAAE,OAAO,IAAI,CAAC,SAAS,CAAA;CACvB,EAAC;;CAED,CAAC,eAAe,GAAG;CACnB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAA;CACzB,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAA;CACxD,EAAC;;CAED,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE;CAC5B,EAAE,MAAM,OAAO,GAAG,YAAY,CAAA;;CAE9B,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE;CAC3B,GAAG,OAAO,GAAG,SAAS,CAAA;CACtB,GAAG,SAAS,GAAG,SAAS,CAAA;CACxB,GAAE;;CAEF,EAAE,IAAI,SAAS,KAAK,SAAS,EAAE;CAC/B,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;CAC1B,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAA;CACrC,GAAE;;CAEF,EAAE,IAAI,SAAS,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC;;CAEpC,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;;CAEzB;CACA,EAAE,MAAM,UAAU,GAAG,EAAE,CAAA;;CAEvB,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;CACvB,GAAG,MAAM,UAAU;CACnB,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAA;CAChF,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;CACrC,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;CACzD,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;CACzB,KAAI;CACJ,IAAI,CAAC,CAAA;CACL,GAAE;;CAEF,EAAE,IAAI,yBAAyB,GAAG,OAAO,CAAC,WAAW,KAAK,KAAK,CAAA;CAC/D,EAAE,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK;CAC9B,GAAG,IAAI,yBAAyB,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;CAC/D,GAAG,yBAAyB,GAAG,IAAI,CAAA;CACnC,GAAG,OAAO,KAAK,CAAA;CACf,GAAG,CAAA;;CAEH,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;;CAEpD,EAAE,IAAI,SAAS,GAAG,CAAC,CAAA;CACnB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;;CAE7B,EAAE,OAAO,KAAK,EAAE;CAChB,GAAG,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;;CAExB,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;CACrB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;CAChC,KAAK,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;;CAE7D,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;CAC/B,MAAM,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAA;CAClF,MAAK;CACL,KAAI;CACJ,IAAI,MAAM;CACV,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAA;;CAE3B,IAAI,OAAO,SAAS,GAAG,GAAG,EAAE;CAC5B,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;CACjC,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;;CAE3C,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE;CACzB,OAAO,yBAAyB,GAAG,IAAI,CAAA;CACvC,OAAO,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,yBAAyB,EAAE;CAC7D,OAAO,yBAAyB,GAAG,KAAK,CAAA;;CAExC,OAAO,IAAI,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE;CACtC,QAAQ,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;CACrC,QAAQ,MAAM;CACd,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;CAC1C,QAAQ,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;CAC1B,QAAQ,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;CACrC,QAAO;CACP,OAAM;CACN,MAAK;;CAEL,KAAK,SAAS,IAAI,CAAC,CAAA;CACnB,KAAI;CACJ,IAAG;;CAEH,GAAG,SAAS,GAAG,KAAK,CAAC,GAAG,CAAA;CACxB,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;CACrB,GAAE;;CAEF,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;;CAEpD,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,MAAM,GAAG;CACV,EAAE,MAAM,IAAI,KAAK;CACjB,GAAG,iFAAiF;CACpF,GAAG,CAAA;CACH,EAAC;;CAED,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;CAC5B,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;CAC1B,GAAG,OAAO,CAAC,IAAI;CACf,IAAI,oFAAoF;CACxF,IAAI,CAAA;CACJ,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAA;CAC3B,GAAE;;CAEF,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;CACxC,EAAC;;CAED,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;CAC7B,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;CAC3B,GAAG,OAAO,CAAC,IAAI;CACf,IAAI,uFAAuF;CAC3F,IAAI,CAAA;CACJ,GAAG,MAAM,CAAC,WAAW,GAAG,IAAI,CAAA;CAC5B,GAAE;;CAEF,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;CAC1C,EAAC;;CAED,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;CACzB,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;CAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;CACzB,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;CAE7B,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;;CAI9F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;CACpB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;CAClB,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;CAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;CACnC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;;CAE9B,EAAE,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAA;CAChC,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAA;;CAE5B,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;CACtC,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE,OAAO,IAAI,CAAA;CACvD,EAAE,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAA;;CAE/D,EAAE,IAAI,OAAO,EAAE,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAA;CACtC,EAAE,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAA;;CAE3C,EAAE,IAAI,OAAO,EAAE,OAAO,CAAC,IAAI,GAAG,KAAK,CAAA;CACnC,EAAE,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAA;;CAExC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAA;CAClD,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;CAClB,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAA;CAClC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAA;CAC7B,GAAE;;CAEF,EAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAA;CAC1B,EAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,IAAI,IAAI,CAAA;;CAE9B,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;CACvC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;CAGtC,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;CACzC,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;CACzB,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;CAC1F,EAAC;;CAED,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE;CACtC,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;CAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;CAEzB,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAA;;CAE9F,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;CAClC,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;CAClD,GAAG,OAAO,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;CAC9C,GAAE;;CAEF,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;CACzE,EAAE,IAAI,KAAK,KAAK,GAAG;CACnB,GAAG,MAAM,IAAI,KAAK;CAClB,IAAI,+EAA+E;CACnF,IAAI,CAAA;;CAIJ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;CACpB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;CAElB,EAAE,IAAI,OAAO,KAAK,IAAI,EAAE;CACxB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;CAC1B,IAAI,OAAO,CAAC,IAAI;CAChB,KAAK,+HAA+H;CACpI,KAAK,CAAA;CACL,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAA;CAC3B,IAAG;;CAEH,GAAG,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;CAChC,GAAE;CACF,EAAE,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,CAAA;CACrE,EAAE,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,CAAA;;CAErE,EAAE,IAAI,SAAS,EAAE;CACjB,GAAG,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;CACnD,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE;CACrD,IAAI,QAAQ,EAAE,IAAI;CAClB,IAAI,KAAK,EAAE,IAAI;CACf,IAAI,UAAU,EAAE,IAAI;CACpB,IAAI,CAAC,CAAA;CACL,GAAE;;CAEF,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;CACnC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;;CAE9B,EAAE,IAAI,KAAK,EAAE;CACb,GAAG,IAAI,KAAK,GAAG,KAAK,CAAA;CACpB,GAAG,OAAO,KAAK,KAAK,IAAI,EAAE;CAC1B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;CAChD,KAAK,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;CAC7D,KAAI;CACJ,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;CACtB,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;CACzB,IAAG;;CAEH,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,CAAA;CAC7C,GAAG,MAAM;CACT;CACA,GAAG,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;;CAEtE;CACA,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAA;CACvB,GAAG,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAA;CAC3B,GAAE;CAGF,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,OAAO,CAAC,OAAO,EAAE;CAClB,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAA;;CAExF,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;CACnC,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;CAC7B,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;CAE7B,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAA;;CAI3F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;CAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;CAEjC,EAAE,IAAI,KAAK,EAAE;CACb,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;CAC7B,GAAG,MAAM;CACT,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;CACpC,GAAE;CAGF,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE;CAC9B,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;;CAE7B,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAA;;CAI3F,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;;CAEpB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;CAEnC,EAAE,IAAI,KAAK,EAAE;CACb,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;CAC9B,GAAG,MAAM;CACT,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;CACpC,GAAE;CAGF,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE;CACpB,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;CAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;CAEzB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;CAClC,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;CAClD,GAAG,OAAO,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;CAC9C,GAAE;;CAEF,EAAE,IAAI,KAAK,KAAK,GAAG,EAAE,OAAO,IAAI,CAAA;;CAEhC,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;CAC5F,EAAE,IAAI,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;;CAIpE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;CACpB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;CAElB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;CAEjC,EAAE,OAAO,KAAK,EAAE;CAChB,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAA;CACnB,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAA;CACnB,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;;CAEjB,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;CAC3D,GAAE;CAGF,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE;CACnB,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;CAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;CAEzB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;CAClC,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;CAClD,GAAG,OAAO,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;CAC9C,GAAE;;CAEF,EAAE,IAAI,KAAK,KAAK,GAAG,EAAE,OAAO,IAAI,CAAA;;CAEhC,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;CAC5F,EAAE,IAAI,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;;CAIpE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;CACpB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;CAElB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;;CAEjC,EAAE,OAAO,KAAK,EAAE;CAChB,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;;CAEhB,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;CAC3D,GAAE;CAGF,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,QAAQ,GAAG;CACZ,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;CACjE,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAA;CAC5B,EAAE,GAAG;CACL,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;CACrE,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;CAC3E,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;CACrE,GAAG,SAAS,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAE;CACpC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;CACjE,EAAE,OAAO,EAAE,CAAA;CACX,EAAC;;CAED,CAAC,QAAQ,GAAG;CACZ,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;CAC3C,EAAE,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAA;CAC/D,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;CAC1B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAA;CAC5B,EAAE,GAAG;CACL,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;CAC/B,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;CAC1C,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;CAC5E,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,OAAO,CAAA;CACnC,IAAG;;CAEH,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;CACjC,IAAI,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;CAC5C,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;CAC9E,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;CACrC,IAAG;;CAEH,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;CAC/B,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;CAC1C,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;CAC5E,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,OAAO,CAAA;CACnC,IAAG;CACH,GAAG,SAAS,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAE;CACpC,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;CACvC,EAAE,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,OAAO,CAAA;CACzE,EAAE,OAAO,IAAI,CAAC,KAAK,GAAG,OAAO,CAAA;CAC7B,EAAC;;CAED,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;CAC5D,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;CAC7B,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;;CAEzB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;CAClC,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;CAClD,GAAG,OAAO,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;CAC9C,GAAE;;CAEF,EAAE,IAAI,MAAM,GAAG,EAAE,CAAA;;CAEjB;CACA,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;CAC7B,EAAE,OAAO,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;CAC/D;CACA,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE;CAC9C,IAAI,OAAO,MAAM,CAAA;CACjB,IAAG;;CAEH,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;CACrB,GAAE;;CAEF,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK;CACpD,GAAG,MAAM,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAA;;CAEnF,EAAE,MAAM,UAAU,GAAG,KAAK,CAAA;CAC1B,EAAE,OAAO,KAAK,EAAE;CAChB,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;CACvE,IAAI,MAAM,IAAI,KAAK,CAAC,KAAK,CAAA;CACzB,IAAG;;CAEH,GAAG,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,CAAA;CAC5D,GAAG,IAAI,WAAW,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;CACvD,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAA;;CAEhF,GAAG,MAAM,UAAU,GAAG,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;CACpE,GAAG,MAAM,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAA;;CAE/F,GAAG,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;;CAEtD,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;CAC3D,IAAI,MAAM,IAAI,KAAK,CAAC,KAAK,CAAA;CACzB,IAAG;;CAEH,GAAG,IAAI,WAAW,EAAE;CACpB,IAAI,MAAK;CACT,IAAG;;CAEH,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;CACrB,GAAE;;CAEF,EAAE,OAAO,MAAM,CAAA;CACf,EAAC;;CAED;CACA,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;CAClB,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;CAC5B,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;CACxB,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;;CAE1C,EAAE,OAAO,KAAK,CAAA;CACd,EAAC;;CAED,CAAC,MAAM,CAAC,KAAK,EAAE;CACf,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAM;;CAItD,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAA;CACpC,EAAE,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAA;;CAEzC,EAAE,OAAO,KAAK,EAAE;CAChB,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;;CAEnE,GAAG,KAAK,GAAG,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;CAC5E,GAAE;CACF,EAAC;;CAED,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE;CAC3B,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;CAC5C;CACA,GAAG,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA;CAC/C,GAAG,MAAM,IAAI,KAAK;CAClB,IAAI,CAAC,mDAAmD,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;CACzG,IAAI,CAAA;CACJ,GAAE;;CAEF,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;CAErC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;CAC3B,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAA;CAChC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAA;;CAErC,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;;CAEzD,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAA;CAEhC,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,QAAQ,GAAG;CACZ,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;;CAEtB,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;CAC7B,EAAE,OAAO,KAAK,EAAE;CAChB,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;CAC1B,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;CACrB,GAAE;;CAEF,EAAE,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;CACzB,EAAC;;CAED,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;CAC7B,EAAE,GAAG;CACL,GAAG;CACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;CAC7C,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;CAClD,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;CAC7C;CACA,IAAI,OAAO,KAAK,CAAA;CAChB,GAAG,SAAS,KAAK,GAAG,KAAK,CAAC,IAAI,GAAE;CAChC,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,MAAM,GAAG;CACV,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;CAC7B,EAAE,IAAI,MAAM,GAAG,CAAC,CAAA;CAChB,EAAE,GAAG;CACL,GAAG,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAA;CAC3E,GAAG,SAAS,KAAK,GAAG,KAAK,CAAC,IAAI,GAAE;CAChC,EAAE,OAAO,MAAM,CAAA;CACf,EAAC;;CAED,CAAC,SAAS,GAAG;CACb,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;CAC9B,EAAC;;CAED,CAAC,IAAI,CAAC,QAAQ,EAAE;CAChB,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;CACnD,EAAC;;CAED,CAAC,cAAc,CAAC,QAAQ,EAAE;CAC1B,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,CAAA;;CAEnD,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;CACzC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;CAEpC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAA;;CAE5B,EAAE,GAAG;CACL,GAAG,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;CACxB,GAAG,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;;CAEpC;CACA,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;CAC1B,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;CAClC,KAAK,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;CAChC,KAAI;;CAEJ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;CACjC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;CAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;CAC3C,IAAG;;CAEH,GAAG,IAAI,OAAO,EAAE,OAAO,IAAI,CAAA;CAC3B,GAAG,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAA;CACzB,GAAG,QAAQ,KAAK,EAAC;;CAEjB,EAAE,OAAO,KAAK,CAAA;CACd,EAAC;;CAED,CAAC,OAAO,CAAC,QAAQ,EAAE;CACnB,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;CAC/B,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;CACD,CAAC,gBAAgB,CAAC,QAAQ,EAAE;CAC5B,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,QAAQ,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;;CAExD,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;CACzC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;CAEpC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;;CAE7B,EAAE,GAAG;CACL,GAAG,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;CACxB,GAAG,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;;CAEtC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;CAC1B;CACA,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;;CAE7D,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;CACjC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;CAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;CAC3C,IAAG;;CAEH,GAAG,IAAI,OAAO,EAAE,OAAO,IAAI,CAAA;CAC3B,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;CACrB,GAAG,QAAQ,KAAK,EAAC;;CAEjB,EAAE,OAAO,KAAK,CAAA;CACd,EAAC;;CAED,CAAC,SAAS,CAAC,QAAQ,EAAE;CACrB,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;CACjC,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,UAAU,GAAG;CACd,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAA;CAC1C,EAAC;;CAED,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE;CAC1C,EAAE,SAAS,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;CACtC,GAAG,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;CACxC,IAAI,OAAO,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK;CAC1D;CACA,KAAK,IAAI,CAAC,KAAK,GAAG,EAAE,OAAO,GAAG,CAAA;CAC9B,KAAK,IAAI,CAAC,KAAK,GAAG,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;CACnC,KAAK,MAAM,GAAG,GAAG,CAAC,CAAC,CAAA;CACnB,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;CAC7C,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;CACnB,KAAK,CAAC,CAAA;CACN,IAAI,MAAM;CACV,IAAI,OAAO,WAAW,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAChE,IAAG;CACH,GAAE;CACF,EAAE,SAAS,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE;CAC7B,GAAG,IAAI,KAAK,CAAA;CACZ,GAAG,MAAM,OAAO,GAAG,EAAE,CAAA;CACrB,GAAG,QAAQ,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;CAClC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;CACvB,IAAG;CACH,GAAG,OAAO,OAAO,CAAA;CACjB,GAAE;CACF,EAAE,IAAI,WAAW,CAAC,MAAM,EAAE;CAC1B,GAAG,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;CACvD,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;CAC9B,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;CAC7B,KAAK,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;CAC7D,KAAK,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;CACnC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CAC7E,MAAK;CACL,KAAI;CACJ,IAAI,CAAC,CAAA;CACL,GAAG,MAAM;CACT,GAAG,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;CACjD,GAAG,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;CACrC,IAAI,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;CAC5D,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;CAClC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CAC5E,KAAI;CACJ,IAAG;CACH,GAAE;CACF,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE;CACrC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;CAC3B,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;;CAExC,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;CACpB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CAC5D,GAAE;;CAEF,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE;CACnC,EAAE,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;CACvC,GAAG,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;CACvD,GAAE;;CAEF,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;CACtD,EAAC;;CAED,CAAC,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE;CACxC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;CAC3B,EAAE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAA;CACpC,EAAE;CACF,GAAG,IAAI,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;CACvC,GAAG,KAAK,KAAK,CAAC,CAAC;CACf,GAAG,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,YAAY,CAAA;CACxD,IAAI;CACJ,GAAG,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAAC,CAAA;CAC/D,GAAG,IAAI,QAAQ,KAAK,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,EAAE,WAAW,CAAC,CAAA;CACzF,GAAE;;CAEF,EAAE,OAAO,IAAI,CAAA;CACb,EAAC;;CAED,CAAC,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE;CACtC,EAAE,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;CACvC,GAAG,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;CAC1D,GAAE;;CAEF,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;CAC3B,GAAG,MAAM,IAAI,SAAS;CACtB,IAAI,2EAA2E;CAC/E,IAAI,CAAA;CACJ,GAAE;;CAEF,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;CACtD,EAAC;CACD;;CC33BA,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD;CACe,MAAM,MAAM,CAAC;CAC5B,CAAC,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;CAC3B,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;CACnC,EAAE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;CAC9E,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;CACpB,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;CAC1B,EAAE,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;CACxC,EAAE;AACF;CACA,CAAC,SAAS,CAAC,MAAM,EAAE;CACnB,EAAE,IAAI,MAAM,YAAY,WAAW,EAAE;CACrC,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC;CACzB,IAAI,OAAO,EAAE,MAAM;CACnB,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ;CAC7B,IAAI,SAAS,EAAE,IAAI,CAAC,SAAS;CAC7B,IAAI,CAAC,CAAC;CACN,GAAG;AACH;CACA,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;CAC5C,GAAG,MAAM,IAAI,KAAK;CAClB,IAAI,sIAAsI;CAC1I,IAAI,CAAC;CACL,GAAG;AACH;CACA,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,uBAAuB,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;CACvF,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;CACjF,GAAG,CAAC,CAAC;AACL;CACA,EAAE,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;CACtC;CACA,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;CACrC,GAAG;AACH;CACA,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE;CACvB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;CAC5E,IAAI,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;CAClF,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;CAC7F,IAAI,MAAM;CACV,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;CAC/F,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC,OAAO,EAAE;CAC1D,KAAK,MAAM,IAAI,KAAK,CAAC,CAAC,+BAA+B,EAAE,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;CAC/F,KAAK;CACL,IAAI;CACJ,GAAG;AACH;CACA,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CAC5B,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;AACF;CACA,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE;CACtB,EAAE,IAAI,CAAC,SAAS,CAAC;CACjB,GAAG,OAAO,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC;CAChC,GAAG,SAAS,EAAE,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE;CAClD,GAAG,CAAC,CAAC;AACL;CACA,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;AACF;CACA,CAAC,KAAK,GAAG;CACT,EAAE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;CAC5B,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK;CACpB,GAAG,SAAS,EAAE,IAAI,CAAC,SAAS;CAC5B,GAAG,CAAC,CAAC;AACL;CACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;CACnC,GAAG,MAAM,CAAC,SAAS,CAAC;CACpB,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ;CAC7B,IAAI,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;CACnC,IAAI,SAAS,EAAE,MAAM,CAAC,SAAS;CAC/B,IAAI,CAAC,CAAC;CACN,GAAG,CAAC,CAAC;AACL;CACA,EAAE,OAAO,MAAM,CAAC;CAChB,EAAE;AACF;CACA,CAAC,kBAAkB,CAAC,OAAO,GAAG,EAAE,EAAE;CAClC,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;CACnB,EAAE,IAAI,mBAAmB,GAAG,SAAS,CAAC;CACtC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;CACnC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;CAC7D,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAChD,IAAI,CAAC,CAAC;CACN,GAAG,CAAC,CAAC;AACL;CACA,EAAE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/C;CACA,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;CAClB,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CAChC,GAAG;AACH;CACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;CACtC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE;CACd,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;CACrC,IAAI;AACJ;CACA,GAAG,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;CAChG,GAAG,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;CACtC,GAAG,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnD;CACA,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE;CAC1B,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;CACxC,IAAI;AACJ;CACA,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK;CAC9C,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpC;CACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1D;CACA,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE;CACzB,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;CACvB,MAAM,QAAQ,CAAC,OAAO;CACtB,OAAO,WAAW;CAClB,OAAO,KAAK,CAAC,OAAO;CACpB,OAAO,GAAG;CACV,OAAO,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;CAC3D,OAAO,CAAC;CACR,MAAM,MAAM;CACZ,MAAM,QAAQ,CAAC,gBAAgB;CAC/B,OAAO,WAAW;CAClB,OAAO,KAAK;CACZ,OAAO,WAAW,CAAC,QAAQ;CAC3B,OAAO,GAAG;CACV,OAAO,WAAW,CAAC,kBAAkB;CACrC,OAAO,CAAC;CACR,MAAM;CACN,KAAK,MAAM;CACX,KAAK,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;CACrC,KAAK;AACL;CACA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;CAC1D,IAAI,CAAC,CAAC;AACN;CACA,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE;CAC1B,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;CACxC,IAAI;AACJ;CACA,GAAG,IAAI,MAAM,CAAC,UAAU,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;CAChD,IAAI,IAAI,mBAAmB,KAAK,SAAS,EAAE;CAC3C,KAAK,mBAAmB,GAAG,EAAE,CAAC;CAC9B,KAAK;CACL,IAAI,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;CAC1C,IAAI;CACJ,GAAG,CAAC,CAAC;AACL;CACA,EAAE,OAAO;CACT,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS;CACrE,GAAG,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK;CAC/C,IAAI,OAAO,OAAO,CAAC,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;CAC3F,IAAI,CAAC;CACL,GAAG,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK;CACtD,IAAI,OAAO,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CAC1D,IAAI,CAAC;CACL,GAAG,KAAK;CACR,GAAG,QAAQ,EAAE,QAAQ,CAAC,GAAG;CACzB,GAAG,mBAAmB;CACtB,GAAG,CAAC;CACJ,EAAE;AACF;CACA,CAAC,WAAW,CAAC,OAAO,EAAE;CACtB,EAAE,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;CACzD,EAAE;AACF;CACA,CAAC,eAAe,GAAG;CACnB,EAAE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAChC;CACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;CACnC,GAAG,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;AAC1D;CACA,GAAG,IAAI,SAAS,KAAK,IAAI,EAAE,OAAO;AAClC;CACA,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CACzE,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;CACtC,GAAG,CAAC,CAAC;AACL;CACA,EAAE;CACF,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;CAClD,IAAI,OAAO,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;CACzD,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;CAChB,IAAI;CACJ,EAAE;AACF;CACA,CAAC,MAAM,CAAC,SAAS,EAAE;CACnB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;CACzB,GAAG,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;CACtC,GAAG;AACH;CACA,EAAE,IAAI,SAAS,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC;AACpC;CACA,EAAE,IAAI,eAAe,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AACrE;CACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;CACtC,GAAG,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;CACxF,GAAG,MAAM,WAAW,GAAG,eAAe,KAAK,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9E;CACA,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE;CACpC,IAAI,OAAO,EAAE,MAAM,CAAC,qBAAqB;CACzC,IAAI,WAAW;CACf,IAAI,CAAC,CAAC;AACN;CACA,GAAG,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC;CACxD,GAAG,CAAC,CAAC;AACL;CACA,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;CAClB,GAAG,IAAI,CAAC,KAAK;CACb,IAAI,SAAS;CACb,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK;CACrD,KAAK,OAAO,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;CAClD,KAAK,CAAC,CAAC;CACP,GAAG;AACH;CACA,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;AACF;CACA,CAAC,OAAO,CAAC,GAAG,EAAE;CACd,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;CAChC,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;AACF;CACA,CAAC,QAAQ,GAAG;CACZ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;CAC3B,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK;CACvB,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;CACzF,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AACrE;CACA,IAAI,OAAO,GAAG,CAAC;CACf,IAAI,CAAC;CACL,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AACb;CACA,EAAE,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CAC3B,EAAE;AACF;CACA,CAAC,OAAO,GAAG;CACX,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,KAAK,CAAC;CAC3D,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,KAAK,CAAC;CAC7E,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;AACF;CACA,CAAC,MAAM,GAAG;CACV,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;CAC5B,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;CACvD,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;CACpB,GAAG,CAAC;CACJ,EAAE;AACF;CACA,CAAC,SAAS,GAAG;CACb,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;CAC/B,EAAE;AACF;CACA,CAAC,IAAI,CAAC,QAAQ,EAAE;CAChB,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;CACpD,EAAE;AACF;CACA,CAAC,SAAS,CAAC,QAAQ,EAAE;CACrB,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,QAAQ,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;CACzD,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1C;CACA,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;CACnB,GAAG,IAAI,MAAM,CAAC;CACd,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACb;CACA,GAAG,GAAG;CACN,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CAC/B,IAAI,IAAI,CAAC,MAAM,EAAE;CACjB,KAAK,MAAM;CACX,KAAK;CACL,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;CACxD,GAAG;AACH;CACA,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;AACF;CACA,CAAC,OAAO,CAAC,QAAQ,EAAE;CACnB,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC;AACpD;CACA,EAAE,IAAI,MAAM,CAAC;CACb,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC;CACA,EAAE,GAAG;CACL,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CAC9B,GAAG,IAAI,CAAC,MAAM,EAAE;CAChB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CAC5C,IAAI,MAAM;CACV,IAAI;CACJ,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACrD;CACA,EAAE,OAAO,IAAI,CAAC;CACd,EAAE;CACF;;CCpSA,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;CAC5B,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;CAClC,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC;;;;;;;;","x_google_ignoreList":[2]} \ No newline at end of file diff --git a/node_modules/magic-string/package.json b/node_modules/magic-string/package.json new file mode 100644 index 0000000..3296eb3 --- /dev/null +++ b/node_modules/magic-string/package.json @@ -0,0 +1,63 @@ +{ + "name": "magic-string", + "version": "0.30.17", + "description": "Modify strings, generate sourcemaps", + "keywords": [ + "string", + "string manipulation", + "sourcemap", + "templating", + "transpilation" + ], + "repository": "https://github.com/rich-harris/magic-string", + "license": "MIT", + "author": "Rich Harris", + "main": "./dist/magic-string.cjs.js", + "module": "./dist/magic-string.es.mjs", + "sideEffects": false, + "jsnext:main": "./dist/magic-string.es.mjs", + "types": "./dist/magic-string.cjs.d.ts", + "exports": { + "./package.json": "./package.json", + ".": { + "import": "./dist/magic-string.es.mjs", + "require": "./dist/magic-string.cjs.js" + } + }, + "files": [ + "dist/*", + "index.d.ts", + "README.md" + ], + "devDependencies": { + "@eslint/js": "^9.16.0", + "@rollup/plugin-node-resolve": "^15.3.0", + "@rollup/plugin-replace": "^5.0.7", + "benchmark": "^2.1.4", + "bumpp": "^9.9.1", + "conventional-changelog-cli": "^3.0.0", + "eslint": "^9.16.0", + "prettier": "^3.4.2", + "publint": "^0.2.12", + "rollup": "^3.29.5", + "source-map-js": "^1.2.1", + "source-map-support": "^0.5.21", + "vitest": "^2.1.8" + }, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + }, + "scripts": { + "build": "rollup -c", + "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s", + "format": "prettier --single-quote --print-width 100 --use-tabs --write .", + "lint": "eslint src test && publint", + "lint:fix": "eslint src test --fix", + "release": "bumpp -x \"npm run changelog\" --all --commit --tag --push && npm publish", + "pretest": "npm run build", + "test": "vitest run", + "test:dev": "vitest", + "bench": "npm run build && node benchmark/index.mjs", + "watch": "rollup -cw" + } +} \ No newline at end of file diff --git a/node_modules/map-stream/.npmignore b/node_modules/map-stream/.npmignore new file mode 100644 index 0000000..13abef4 --- /dev/null +++ b/node_modules/map-stream/.npmignore @@ -0,0 +1,3 @@ +node_modules +node_modules/* +npm_debug.log diff --git a/node_modules/map-stream/.travis.yml b/node_modules/map-stream/.travis.yml new file mode 100644 index 0000000..895dbd3 --- /dev/null +++ b/node_modules/map-stream/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/node_modules/map-stream/LICENCE b/node_modules/map-stream/LICENCE new file mode 100644 index 0000000..2af26fe --- /dev/null +++ b/node_modules/map-stream/LICENCE @@ -0,0 +1,24 @@ +The MIT License (MIT) + +Copyright (c) 2011 Dominic Tarr + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/map-stream/examples/pretty.js b/node_modules/map-stream/examples/pretty.js new file mode 100644 index 0000000..ab07398 --- /dev/null +++ b/node_modules/map-stream/examples/pretty.js @@ -0,0 +1,26 @@ + +var inspect = require('util').inspect + +if(!module.parent) { + var map = require('..') //load map-stream + var es = require('event-stream') //load event-stream + es.pipe( //pipe joins streams together + process.openStdin(), //open stdin + es.split(), //split stream to break on newlines + map(function (data, callback) { //turn this async function into a stream + var j + try { + j = JSON.parse(data) //try to parse input into json + } catch (err) { + return callback(null, data) //if it fails just pass it anyway + } + callback(null, inspect(j)) //render it nicely + }), + process.stdout // pipe it to stdout ! + ) + } + +// run this +// +// curl -sS registry.npmjs.org/event-stream | node pretty.js +// diff --git a/node_modules/map-stream/index.js b/node_modules/map-stream/index.js new file mode 100644 index 0000000..cbf3970 --- /dev/null +++ b/node_modules/map-stream/index.js @@ -0,0 +1,144 @@ +//filter will reemit the data if cb(err,pass) pass is truthy + +// reduce is more tricky +// maybe we want to group the reductions or emit progress updates occasionally +// the most basic reduce just emits one 'data' event after it has recieved 'end' + + +var Stream = require('stream').Stream + + +//create an event stream and apply function to each .write +//emitting each response as data +//unless it's an empty callback + +module.exports = function (mapper, opts) { + + var stream = new Stream() + , inputs = 0 + , outputs = 0 + , ended = false + , paused = false + , destroyed = false + , lastWritten = 0 + , inNext = false + + opts = opts || {}; + var errorEventName = opts.failures ? 'failure' : 'error'; + + // Items that are not ready to be written yet (because they would come out of + // order) get stuck in a queue for later. + var writeQueue = {} + + stream.writable = true + stream.readable = true + + function queueData (data, number) { + var nextToWrite = lastWritten + 1 + + if (number === nextToWrite) { + // If it's next, and its not undefined write it + if (data !== undefined) { + stream.emit.apply(stream, ['data', data]) + } + lastWritten ++ + nextToWrite ++ + } else { + // Otherwise queue it for later. + writeQueue[number] = data + } + + // If the next value is in the queue, write it + if (writeQueue.hasOwnProperty(nextToWrite)) { + var dataToWrite = writeQueue[nextToWrite] + delete writeQueue[nextToWrite] + return queueData(dataToWrite, nextToWrite) + } + + outputs ++ + if(inputs === outputs) { + if(paused) paused = false, stream.emit('drain') //written all the incoming events + if(ended) end() + } + } + + function next (err, data, number) { + if(destroyed) return + inNext = true + + if (!err || opts.failures) { + queueData(data, number) + } + + if (err) { + stream.emit.apply(stream, [ errorEventName, err ]); + } + + inNext = false; + } + + // Wrap the mapper function by calling its callback with the order number of + // the item in the stream. + function wrappedMapper (input, number, callback) { + return mapper.call(null, input, function(err, data){ + callback(err, data, number) + }) + } + + stream.write = function (data) { + if(ended) throw new Error('map stream is not writable') + inNext = false + inputs ++ + + try { + //catch sync errors and handle them like async errors + var written = wrappedMapper(data, inputs, next) + paused = (written === false) + return !paused + } catch (err) { + //if the callback has been called syncronously, and the error + //has occured in an listener, throw it again. + if(inNext) + throw err + next(err) + return !paused + } + } + + function end (data) { + //if end was called with args, write it, + ended = true //write will emit 'end' if ended is true + stream.writable = false + if(data !== undefined) { + return queueData(data, inputs) + } else if (inputs == outputs) { //wait for processing + stream.readable = false, stream.emit('end'), stream.destroy() + } + } + + stream.end = function (data) { + if(ended) return + end(data) + } + + stream.destroy = function () { + ended = destroyed = true + stream.writable = stream.readable = paused = false + process.nextTick(function () { + stream.emit('close') + }) + } + stream.pause = function () { + paused = true + } + + stream.resume = function () { + paused = false + } + + return stream +} + + + + diff --git a/node_modules/map-stream/package.json b/node_modules/map-stream/package.json new file mode 100644 index 0000000..91f46d7 --- /dev/null +++ b/node_modules/map-stream/package.json @@ -0,0 +1,24 @@ +{ + "name": "map-stream", + "version": "0.0.7", + "license": "MIT", + "description": "construct pipes of streams of events", + "homepage": "http://github.com/dominictarr/map-stream", + "repository": { + "type": "git", + "url": "git://github.com/dominictarr/map-stream.git" + }, + "dependencies": {}, + "devDependencies": { + "asynct": "*", + "it-is": "1", + "ubelt": "~2.9", + "stream-spec": "~0.2", + "event-stream": "~2.1", + "from": "0.0.2" + }, + "scripts": { + "test": "asynct test/" + }, + "author": "Dominic Tarr (http://dominictarr.com)" +} diff --git a/node_modules/map-stream/readme.markdown b/node_modules/map-stream/readme.markdown new file mode 100644 index 0000000..1897158 --- /dev/null +++ b/node_modules/map-stream/readme.markdown @@ -0,0 +1,37 @@ +# MapStream + +Refactored out of [event-stream](https://github.com/dominictarr/event-stream) + +##map (asyncFunction[, options]) + +Create a through stream from an asyncronous function. + +``` js +var map = require('map-stream') + +map(function (data, callback) { + //transform data + // ... + callback(null, data) +}) + +``` + +Each map MUST call the callback. It may callback with data, with an error or with no arguments, + + * `callback()` drop this data. + this makes the map work like `filter`, + note:`callback(null,null)` is not the same, and will emit `null` + + * `callback(null, newData)` turn data into newData + + * `callback(error)` emit an error for this item. + +>Note: if a callback is not called, `map` will think that it is still being processed, +>every call must be answered or the stream will not know when to end. +> +>Also, if the callback is called more than once, every call but the first will be ignored. + +##Options + + * `failures` - `boolean` continue mapping even if error occured. On error `map-stream` will emit `failure` event. (default: `false`) diff --git a/node_modules/map-stream/test/simple-map.asynct.js b/node_modules/map-stream/test/simple-map.asynct.js new file mode 100644 index 0000000..2b9a292 --- /dev/null +++ b/node_modules/map-stream/test/simple-map.asynct.js @@ -0,0 +1,318 @@ +'use strict'; + +var map = require('../') + , it = require('it-is') + , u = require('ubelt') + , spec = require('stream-spec') + , from = require('from') + , Stream = require('stream') + , es = require('event-stream') + +//REFACTOR THIS TEST TO USE es.readArray and es.writeArray + +function writeArray(array, stream) { + + array.forEach( function (j) { + stream.write(j) + }) + stream.end() + +} + +function readStream(stream, done) { + + var array = [] + stream.on('data', function (data) { + array.push(data) + }) + stream.on('error', done) + stream.on('end', function (data) { + done(null, array) + }) + +} + +//call sink on each write, +//and complete when finished. + +function pauseStream (prob, delay) { + var pauseIf = ( + 'number' == typeof prob + ? function () { + return Math.random() < prob + } + : 'function' == typeof prob + ? prob + : 0.1 + ) + var delayer = ( + !delay + ? process.nextTick + : 'number' == typeof delay + ? function (next) { setTimeout(next, delay) } + : delay + ) + + return es.through(function (data) { + if(!this.paused && pauseIf()) { + console.log('PAUSE STREAM PAUSING') + this.pause() + var self = this + delayer(function () { + console.log('PAUSE STREAM RESUMING') + self.resume() + }) + } + console.log("emit ('data', " + data + ')') + this.emit('data', data) + }) +} + +exports ['simple map applied to a stream'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + //create event stream from + + var doubler = map(function (data, cb) { + cb(null, data * 2) + }) + + spec(doubler).through().validateOnExit() + + //a map is only a middle man, so it is both readable and writable + + it(doubler).has({ + readable: true, + writable: true, + }) + + readStream(doubler, function (err, output) { + it(output).deepEqual(input.map(function (j) { + return j * 2 + })) +// process.nextTick(x.validate) + test.done() + }) + + writeArray(input, doubler) + +} + +exports ['stream comes back in the correct order'] = function (test) { + var input = [3, 2, 1] + + var delayer = map(function(data, cb){ + setTimeout(function () { + cb(null, data) + }, 100 * data) + }) + + readStream(delayer, function (err, output) { + it(output).deepEqual(input) + test.done() + }) + + writeArray(input, delayer) +} + +exports ['continues on error event with failures `true`'] = function (test) { + var input = [1, 2, 3] + + var delayer = map(function(data, cb){ + cb(new Error('Something gone wrong'), data) + }, { failures: true }) + + readStream(delayer, function (err, output) { + it(output).deepEqual(input) + test.done() + }) + + writeArray(input, delayer) +} + +exports['pipe two maps together'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + //create event stream from + function dd (data, cb) { + cb(null, data * 2) + } + var doubler1 = map(dd), doubler2 = map(dd) + + doubler1.pipe(doubler2) + + spec(doubler1).through().validateOnExit() + spec(doubler2).through().validateOnExit() + + readStream(doubler2, function (err, output) { + it(output).deepEqual(input.map(function (j) { + return j * 4 + })) + test.done() + }) + + writeArray(input, doubler1) + +} + +//next: +// +// test pause, resume and drian. +// + +// then make a pipe joiner: +// +// plumber (evStr1, evStr2, evStr3, evStr4, evStr5) +// +// will return a single stream that write goes to the first + +exports ['map will not call end until the callback'] = function (test) { + + var ticker = map(function (data, cb) { + process.nextTick(function () { + cb(null, data * 2) + }) + }) + + spec(ticker).through().validateOnExit() + + ticker.write('x') + ticker.end() + + ticker.on('end', function () { + test.done() + }) +} + +exports ['emit failures with opts.failures === `ture`'] = function (test) { + + var err = new Error('INTENSIONAL ERROR') + , mapper = + map(function () { + throw err + }, { failures: true }) + + mapper.on('failure', function (_err) { + it(_err).equal(err) + test.done() + }) + + mapper.write('hello') + +} + +exports ['emit error thrown'] = function (test) { + + var err = new Error('INTENSIONAL ERROR') + , mapper = + map(function () { + throw err + }) + + mapper.on('error', function (_err) { + it(_err).equal(err) + test.done() + }) + + mapper.write('hello') + +} + +exports ['emit error calledback'] = function (test) { + + var err = new Error('INTENSIONAL ERROR') + , mapper = + map(function (data, callback) { + callback(err) + }) + + mapper.on('error', function (_err) { + it(_err).equal(err) + test.done() + }) + + mapper.write('hello') + +} + +exports ['do not emit drain if not paused'] = function (test) { + + var maps = map(function (data, callback) { + u.delay(callback)(null, 1) + return true + }) + + spec(maps).through().pausable().validateOnExit() + + maps.on('drain', function () { + it(false).ok('should not emit drain unless the stream is paused') + }) + + it(maps.write('hello')).equal(true) + it(maps.write('hello')).equal(true) + it(maps.write('hello')).equal(true) + setTimeout(function () {maps.end()},10) + maps.on('end', test.done) +} + +exports ['emits drain if paused, when all '] = function (test) { + var active = 0 + var drained = false + var maps = map(function (data, callback) { + active ++ + u.delay(function () { + active -- + callback(null, 1) + })() + console.log('WRITE', false) + return false + }) + + spec(maps).through().validateOnExit() + + maps.on('drain', function () { + drained = true + it(active).equal(0, 'should emit drain when all maps are done') + }) + + it(maps.write('hello')).equal(false) + it(maps.write('hello')).equal(false) + it(maps.write('hello')).equal(false) + + process.nextTick(function () {maps.end()},10) + + maps.on('end', function () { + console.log('end') + it(drained).ok('shoud have emitted drain before end') + test.done() + }) + +} + +exports ['map applied to a stream with filtering'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + + var doubler = map(function (data, callback) { + if (data % 2) + callback(null, data * 2) + else + callback() + }) + + readStream(doubler, function (err, output) { + it(output).deepEqual(input.filter(function (j) { + return j % 2 + }).map(function (j) { + return j * 2 + })) + test.done() + }) + + spec(doubler).through().validateOnExit() + + writeArray(input, doubler) + +} + + diff --git a/node_modules/math-intrinsics/.eslintrc b/node_modules/math-intrinsics/.eslintrc new file mode 100644 index 0000000..d90a1bc --- /dev/null +++ b/node_modules/math-intrinsics/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "eqeqeq": ["error", "allow-null"], + "id-length": "off", + "new-cap": ["error", { + "capIsNewExceptions": [ + "RequireObjectCoercible", + "ToObject", + ], + }], + }, +} diff --git a/node_modules/math-intrinsics/.github/FUNDING.yml b/node_modules/math-intrinsics/.github/FUNDING.yml new file mode 100644 index 0000000..868f4ff --- /dev/null +++ b/node_modules/math-intrinsics/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/math-intrinsics +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/node_modules/math-intrinsics/CHANGELOG.md b/node_modules/math-intrinsics/CHANGELOG.md new file mode 100644 index 0000000..9cf48f5 --- /dev/null +++ b/node_modules/math-intrinsics/CHANGELOG.md @@ -0,0 +1,24 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.0](https://github.com/es-shims/math-intrinsics/compare/v1.0.0...v1.1.0) - 2024-12-18 + +### Commits + +- [New] add `round` [`7cfb044`](https://github.com/es-shims/math-intrinsics/commit/7cfb04460c0fbdf1ca101eecbac3f59d11994130) +- [Tests] add attw [`e96be8f`](https://github.com/es-shims/math-intrinsics/commit/e96be8fbf58449eafe976446a0470e6ea561ad8d) +- [Dev Deps] update `@types/tape` [`30d0023`](https://github.com/es-shims/math-intrinsics/commit/30d00234ce8a3fa0094a61cd55d6686eb91e36ec) + +## v1.0.0 - 2024-12-11 + +### Commits + +- Initial implementation, tests, readme, types [`b898caa`](https://github.com/es-shims/math-intrinsics/commit/b898caae94e9994a94a42b8740f7bbcfd0a868fe) +- Initial commit [`02745b0`](https://github.com/es-shims/math-intrinsics/commit/02745b03a62255af8a332771987b55d127538d9c) +- [New] add `constants/maxArrayLength`, `mod` [`b978178`](https://github.com/es-shims/math-intrinsics/commit/b978178a57685bd23ed1c7efe2137f3784f5fcc5) +- npm init [`a39fc57`](https://github.com/es-shims/math-intrinsics/commit/a39fc57e5639a645d0bd52a0dc56202480223be2) +- Only apps should have lockfiles [`9451580`](https://github.com/es-shims/math-intrinsics/commit/94515800fb34db4f3cc7e99290042d45609ac7bd) diff --git a/node_modules/math-intrinsics/LICENSE b/node_modules/math-intrinsics/LICENSE new file mode 100644 index 0000000..34995e7 --- /dev/null +++ b/node_modules/math-intrinsics/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/math-intrinsics/README.md b/node_modules/math-intrinsics/README.md new file mode 100644 index 0000000..4a66dcf --- /dev/null +++ b/node_modules/math-intrinsics/README.md @@ -0,0 +1,50 @@ +# math-intrinsics [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +ES Math-related intrinsics and helpers, robustly cached. + + - `abs` + - `floor` + - `isFinite` + - `isInteger` + - `isNaN` + - `isNegativeZero` + - `max` + - `min` + - `mod` + - `pow` + - `round` + - `sign` + - `constants/maxArrayLength` + - `constants/maxSafeInteger` + - `constants/maxValue` + + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/math-intrinsics +[npm-version-svg]: https://versionbadg.es/es-shims/math-intrinsics.svg +[deps-svg]: https://david-dm.org/es-shims/math-intrinsics.svg +[deps-url]: https://david-dm.org/es-shims/math-intrinsics +[dev-deps-svg]: https://david-dm.org/es-shims/math-intrinsics/dev-status.svg +[dev-deps-url]: https://david-dm.org/es-shims/math-intrinsics#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/math-intrinsics.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/math-intrinsics.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-object.svg +[downloads-url]: https://npm-stat.com/charts.html?package=math-intrinsics +[codecov-image]: https://codecov.io/gh/es-shims/math-intrinsics/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/es-shims/math-intrinsics/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/math-intrinsics +[actions-url]: https://github.com/es-shims/math-intrinsics/actions diff --git a/node_modules/math-intrinsics/abs.d.ts b/node_modules/math-intrinsics/abs.d.ts new file mode 100644 index 0000000..14ad9c6 --- /dev/null +++ b/node_modules/math-intrinsics/abs.d.ts @@ -0,0 +1 @@ +export = Math.abs; \ No newline at end of file diff --git a/node_modules/math-intrinsics/abs.js b/node_modules/math-intrinsics/abs.js new file mode 100644 index 0000000..a751424 --- /dev/null +++ b/node_modules/math-intrinsics/abs.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./abs')} */ +module.exports = Math.abs; diff --git a/node_modules/math-intrinsics/constants/maxArrayLength.d.ts b/node_modules/math-intrinsics/constants/maxArrayLength.d.ts new file mode 100644 index 0000000..b92d46b --- /dev/null +++ b/node_modules/math-intrinsics/constants/maxArrayLength.d.ts @@ -0,0 +1,3 @@ +declare const MAX_ARRAY_LENGTH: 4294967295; + +export = MAX_ARRAY_LENGTH; \ No newline at end of file diff --git a/node_modules/math-intrinsics/constants/maxArrayLength.js b/node_modules/math-intrinsics/constants/maxArrayLength.js new file mode 100644 index 0000000..cfc6aff --- /dev/null +++ b/node_modules/math-intrinsics/constants/maxArrayLength.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./maxArrayLength')} */ +module.exports = 4294967295; // Math.pow(2, 32) - 1; diff --git a/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts b/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts new file mode 100644 index 0000000..fee3f62 --- /dev/null +++ b/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts @@ -0,0 +1,3 @@ +declare const MAX_SAFE_INTEGER: 9007199254740991; + +export = MAX_SAFE_INTEGER; \ No newline at end of file diff --git a/node_modules/math-intrinsics/constants/maxSafeInteger.js b/node_modules/math-intrinsics/constants/maxSafeInteger.js new file mode 100644 index 0000000..b568ad3 --- /dev/null +++ b/node_modules/math-intrinsics/constants/maxSafeInteger.js @@ -0,0 +1,5 @@ +'use strict'; + +/** @type {import('./maxSafeInteger')} */ +// eslint-disable-next-line no-extra-parens +module.exports = /** @type {import('./maxSafeInteger')} */ (Number.MAX_SAFE_INTEGER) || 9007199254740991; // Math.pow(2, 53) - 1; diff --git a/node_modules/math-intrinsics/constants/maxValue.d.ts b/node_modules/math-intrinsics/constants/maxValue.d.ts new file mode 100644 index 0000000..292cb82 --- /dev/null +++ b/node_modules/math-intrinsics/constants/maxValue.d.ts @@ -0,0 +1,3 @@ +declare const MAX_VALUE: 1.7976931348623157e+308; + +export = MAX_VALUE; diff --git a/node_modules/math-intrinsics/constants/maxValue.js b/node_modules/math-intrinsics/constants/maxValue.js new file mode 100644 index 0000000..a2202dc --- /dev/null +++ b/node_modules/math-intrinsics/constants/maxValue.js @@ -0,0 +1,5 @@ +'use strict'; + +/** @type {import('./maxValue')} */ +// eslint-disable-next-line no-extra-parens +module.exports = /** @type {import('./maxValue')} */ (Number.MAX_VALUE) || 1.7976931348623157e+308; diff --git a/node_modules/math-intrinsics/floor.d.ts b/node_modules/math-intrinsics/floor.d.ts new file mode 100644 index 0000000..9265236 --- /dev/null +++ b/node_modules/math-intrinsics/floor.d.ts @@ -0,0 +1 @@ +export = Math.floor; \ No newline at end of file diff --git a/node_modules/math-intrinsics/floor.js b/node_modules/math-intrinsics/floor.js new file mode 100644 index 0000000..ab0e5d7 --- /dev/null +++ b/node_modules/math-intrinsics/floor.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./floor')} */ +module.exports = Math.floor; diff --git a/node_modules/math-intrinsics/isFinite.d.ts b/node_modules/math-intrinsics/isFinite.d.ts new file mode 100644 index 0000000..6daae33 --- /dev/null +++ b/node_modules/math-intrinsics/isFinite.d.ts @@ -0,0 +1,3 @@ +declare function isFinite(x: unknown): x is number | bigint; + +export = isFinite; \ No newline at end of file diff --git a/node_modules/math-intrinsics/isFinite.js b/node_modules/math-intrinsics/isFinite.js new file mode 100644 index 0000000..b201a5a --- /dev/null +++ b/node_modules/math-intrinsics/isFinite.js @@ -0,0 +1,12 @@ +'use strict'; + +var $isNaN = require('./isNaN'); + +/** @type {import('./isFinite')} */ +module.exports = function isFinite(x) { + return (typeof x === 'number' || typeof x === 'bigint') + && !$isNaN(x) + && x !== Infinity + && x !== -Infinity; +}; + diff --git a/node_modules/math-intrinsics/isInteger.d.ts b/node_modules/math-intrinsics/isInteger.d.ts new file mode 100644 index 0000000..13935a8 --- /dev/null +++ b/node_modules/math-intrinsics/isInteger.d.ts @@ -0,0 +1,3 @@ +declare function isInteger(argument: unknown): argument is number; + +export = isInteger; \ No newline at end of file diff --git a/node_modules/math-intrinsics/isInteger.js b/node_modules/math-intrinsics/isInteger.js new file mode 100644 index 0000000..4b1b9a5 --- /dev/null +++ b/node_modules/math-intrinsics/isInteger.js @@ -0,0 +1,16 @@ +'use strict'; + +var $abs = require('./abs'); +var $floor = require('./floor'); + +var $isNaN = require('./isNaN'); +var $isFinite = require('./isFinite'); + +/** @type {import('./isInteger')} */ +module.exports = function isInteger(argument) { + if (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) { + return false; + } + var absValue = $abs(argument); + return $floor(absValue) === absValue; +}; diff --git a/node_modules/math-intrinsics/isNaN.d.ts b/node_modules/math-intrinsics/isNaN.d.ts new file mode 100644 index 0000000..c1d4c55 --- /dev/null +++ b/node_modules/math-intrinsics/isNaN.d.ts @@ -0,0 +1 @@ +export = Number.isNaN; \ No newline at end of file diff --git a/node_modules/math-intrinsics/isNaN.js b/node_modules/math-intrinsics/isNaN.js new file mode 100644 index 0000000..e36475c --- /dev/null +++ b/node_modules/math-intrinsics/isNaN.js @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {import('./isNaN')} */ +module.exports = Number.isNaN || function isNaN(a) { + return a !== a; +}; diff --git a/node_modules/math-intrinsics/isNegativeZero.d.ts b/node_modules/math-intrinsics/isNegativeZero.d.ts new file mode 100644 index 0000000..7ad8819 --- /dev/null +++ b/node_modules/math-intrinsics/isNegativeZero.d.ts @@ -0,0 +1,3 @@ +declare function isNegativeZero(x: unknown): boolean; + +export = isNegativeZero; \ No newline at end of file diff --git a/node_modules/math-intrinsics/isNegativeZero.js b/node_modules/math-intrinsics/isNegativeZero.js new file mode 100644 index 0000000..b69adcc --- /dev/null +++ b/node_modules/math-intrinsics/isNegativeZero.js @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {import('./isNegativeZero')} */ +module.exports = function isNegativeZero(x) { + return x === 0 && 1 / x === 1 / -0; +}; diff --git a/node_modules/math-intrinsics/max.d.ts b/node_modules/math-intrinsics/max.d.ts new file mode 100644 index 0000000..ad6f43e --- /dev/null +++ b/node_modules/math-intrinsics/max.d.ts @@ -0,0 +1 @@ +export = Math.max; \ No newline at end of file diff --git a/node_modules/math-intrinsics/max.js b/node_modules/math-intrinsics/max.js new file mode 100644 index 0000000..edb55df --- /dev/null +++ b/node_modules/math-intrinsics/max.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./max')} */ +module.exports = Math.max; diff --git a/node_modules/math-intrinsics/min.d.ts b/node_modules/math-intrinsics/min.d.ts new file mode 100644 index 0000000..fd90f2d --- /dev/null +++ b/node_modules/math-intrinsics/min.d.ts @@ -0,0 +1 @@ +export = Math.min; \ No newline at end of file diff --git a/node_modules/math-intrinsics/min.js b/node_modules/math-intrinsics/min.js new file mode 100644 index 0000000..5a4a7c7 --- /dev/null +++ b/node_modules/math-intrinsics/min.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./min')} */ +module.exports = Math.min; diff --git a/node_modules/math-intrinsics/mod.d.ts b/node_modules/math-intrinsics/mod.d.ts new file mode 100644 index 0000000..549dbd4 --- /dev/null +++ b/node_modules/math-intrinsics/mod.d.ts @@ -0,0 +1,3 @@ +declare function mod(number: number, modulo: number): number; + +export = mod; \ No newline at end of file diff --git a/node_modules/math-intrinsics/mod.js b/node_modules/math-intrinsics/mod.js new file mode 100644 index 0000000..4a98362 --- /dev/null +++ b/node_modules/math-intrinsics/mod.js @@ -0,0 +1,9 @@ +'use strict'; + +var $floor = require('./floor'); + +/** @type {import('./mod')} */ +module.exports = function mod(number, modulo) { + var remain = number % modulo; + return $floor(remain >= 0 ? remain : remain + modulo); +}; diff --git a/node_modules/math-intrinsics/package.json b/node_modules/math-intrinsics/package.json new file mode 100644 index 0000000..0676273 --- /dev/null +++ b/node_modules/math-intrinsics/package.json @@ -0,0 +1,86 @@ +{ + "name": "math-intrinsics", + "version": "1.1.0", + "description": "ES Math-related intrinsics and helpers, robustly cached.", + "main": false, + "exports": { + "./abs": "./abs.js", + "./floor": "./floor.js", + "./isFinite": "./isFinite.js", + "./isInteger": "./isInteger.js", + "./isNaN": "./isNaN.js", + "./isNegativeZero": "./isNegativeZero.js", + "./max": "./max.js", + "./min": "./min.js", + "./mod": "./mod.js", + "./pow": "./pow.js", + "./sign": "./sign.js", + "./round": "./round.js", + "./constants/maxArrayLength": "./constants/maxArrayLength.js", + "./constants/maxSafeInteger": "./constants/maxSafeInteger.js", + "./constants/maxValue": "./constants/maxValue.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "npx npm@'>= 10.2' audit --production", + "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc && attw -P", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/es-shims/math-intrinsics.git" + }, + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/es-shims/math-intrinsics/issues" + }, + "homepage": "https://github.com/es-shims/math-intrinsics#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/for-each": "^0.3.3", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.8.0", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "es-value-fixtures": "^1.5.0", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.3", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.3", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/math-intrinsics/pow.d.ts b/node_modules/math-intrinsics/pow.d.ts new file mode 100644 index 0000000..5873c44 --- /dev/null +++ b/node_modules/math-intrinsics/pow.d.ts @@ -0,0 +1 @@ +export = Math.pow; \ No newline at end of file diff --git a/node_modules/math-intrinsics/pow.js b/node_modules/math-intrinsics/pow.js new file mode 100644 index 0000000..c0a4103 --- /dev/null +++ b/node_modules/math-intrinsics/pow.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./pow')} */ +module.exports = Math.pow; diff --git a/node_modules/math-intrinsics/round.d.ts b/node_modules/math-intrinsics/round.d.ts new file mode 100644 index 0000000..da1fde3 --- /dev/null +++ b/node_modules/math-intrinsics/round.d.ts @@ -0,0 +1 @@ +export = Math.round; \ No newline at end of file diff --git a/node_modules/math-intrinsics/round.js b/node_modules/math-intrinsics/round.js new file mode 100644 index 0000000..b792156 --- /dev/null +++ b/node_modules/math-intrinsics/round.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./round')} */ +module.exports = Math.round; diff --git a/node_modules/math-intrinsics/sign.d.ts b/node_modules/math-intrinsics/sign.d.ts new file mode 100644 index 0000000..c49ceca --- /dev/null +++ b/node_modules/math-intrinsics/sign.d.ts @@ -0,0 +1,3 @@ +declare function sign(x: number): number; + +export = sign; \ No newline at end of file diff --git a/node_modules/math-intrinsics/sign.js b/node_modules/math-intrinsics/sign.js new file mode 100644 index 0000000..9e5173c --- /dev/null +++ b/node_modules/math-intrinsics/sign.js @@ -0,0 +1,11 @@ +'use strict'; + +var $isNaN = require('./isNaN'); + +/** @type {import('./sign')} */ +module.exports = function sign(number) { + if ($isNaN(number) || number === 0) { + return number; + } + return number < 0 ? -1 : +1; +}; diff --git a/node_modules/math-intrinsics/test/index.js b/node_modules/math-intrinsics/test/index.js new file mode 100644 index 0000000..0f90a5d --- /dev/null +++ b/node_modules/math-intrinsics/test/index.js @@ -0,0 +1,192 @@ +'use strict'; + +var test = require('tape'); +var v = require('es-value-fixtures'); +var forEach = require('for-each'); +var inspect = require('object-inspect'); + +var abs = require('../abs'); +var floor = require('../floor'); +var isFinite = require('../isFinite'); +var isInteger = require('../isInteger'); +var isNaN = require('../isNaN'); +var isNegativeZero = require('../isNegativeZero'); +var max = require('../max'); +var min = require('../min'); +var mod = require('../mod'); +var pow = require('../pow'); +var round = require('../round'); +var sign = require('../sign'); + +var maxArrayLength = require('../constants/maxArrayLength'); +var maxSafeInteger = require('../constants/maxSafeInteger'); +var maxValue = require('../constants/maxValue'); + +test('abs', function (t) { + t.equal(abs(-1), 1, 'abs(-1) === 1'); + t.equal(abs(+1), 1, 'abs(+1) === 1'); + t.equal(abs(+0), +0, 'abs(+0) === +0'); + t.equal(abs(-0), +0, 'abs(-0) === +0'); + + t.end(); +}); + +test('floor', function (t) { + t.equal(floor(-1.1), -2, 'floor(-1.1) === -2'); + t.equal(floor(+1.1), 1, 'floor(+1.1) === 1'); + t.equal(floor(+0), +0, 'floor(+0) === +0'); + t.equal(floor(-0), -0, 'floor(-0) === -0'); + t.equal(floor(-Infinity), -Infinity, 'floor(-Infinity) === -Infinity'); + t.equal(floor(Number(Infinity)), Number(Infinity), 'floor(+Infinity) === +Infinity'); + t.equal(floor(NaN), NaN, 'floor(NaN) === NaN'); + t.equal(floor(0), +0, 'floor(0) === +0'); + t.equal(floor(-0), -0, 'floor(-0) === -0'); + t.equal(floor(1), 1, 'floor(1) === 1'); + t.equal(floor(-1), -1, 'floor(-1) === -1'); + t.equal(floor(1.1), 1, 'floor(1.1) === 1'); + t.equal(floor(-1.1), -2, 'floor(-1.1) === -2'); + t.equal(floor(maxValue), maxValue, 'floor(maxValue) === maxValue'); + t.equal(floor(maxSafeInteger), maxSafeInteger, 'floor(maxSafeInteger) === maxSafeInteger'); + + t.end(); +}); + +test('isFinite', function (t) { + t.equal(isFinite(0), true, 'isFinite(+0) === true'); + t.equal(isFinite(-0), true, 'isFinite(-0) === true'); + t.equal(isFinite(1), true, 'isFinite(1) === true'); + t.equal(isFinite(Infinity), false, 'isFinite(Infinity) === false'); + t.equal(isFinite(-Infinity), false, 'isFinite(-Infinity) === false'); + t.equal(isFinite(NaN), false, 'isFinite(NaN) === false'); + + forEach(v.nonNumbers, function (nonNumber) { + t.equal(isFinite(nonNumber), false, 'isFinite(' + inspect(nonNumber) + ') === false'); + }); + + t.end(); +}); + +test('isInteger', function (t) { + forEach([].concat( + // @ts-expect-error TS sucks with concat + v.nonNumbers, + v.nonIntegerNumbers + ), function (nonInteger) { + t.equal(isInteger(nonInteger), false, 'isInteger(' + inspect(nonInteger) + ') === false'); + }); + + t.end(); +}); + +test('isNaN', function (t) { + forEach([].concat( + // @ts-expect-error TS sucks with concat + v.nonNumbers, + v.infinities, + v.zeroes, + v.integerNumbers + ), function (nonNaN) { + t.equal(isNaN(nonNaN), false, 'isNaN(' + inspect(nonNaN) + ') === false'); + }); + + t.equal(isNaN(NaN), true, 'isNaN(NaN) === true'); + + t.end(); +}); + +test('isNegativeZero', function (t) { + t.equal(isNegativeZero(-0), true, 'isNegativeZero(-0) === true'); + t.equal(isNegativeZero(+0), false, 'isNegativeZero(+0) === false'); + t.equal(isNegativeZero(1), false, 'isNegativeZero(1) === false'); + t.equal(isNegativeZero(-1), false, 'isNegativeZero(-1) === false'); + t.equal(isNegativeZero(NaN), false, 'isNegativeZero(NaN) === false'); + t.equal(isNegativeZero(Infinity), false, 'isNegativeZero(Infinity) === false'); + t.equal(isNegativeZero(-Infinity), false, 'isNegativeZero(-Infinity) === false'); + + forEach(v.nonNumbers, function (nonNumber) { + t.equal(isNegativeZero(nonNumber), false, 'isNegativeZero(' + inspect(nonNumber) + ') === false'); + }); + + t.end(); +}); + +test('max', function (t) { + t.equal(max(1, 2), 2, 'max(1, 2) === 2'); + t.equal(max(1, 2, 3), 3, 'max(1, 2, 3) === 3'); + t.equal(max(1, 2, 3, 4), 4, 'max(1, 2, 3, 4) === 4'); + t.equal(max(1, 2, 3, 4, 5), 5, 'max(1, 2, 3, 4, 5) === 5'); + t.equal(max(1, 2, 3, 4, 5, 6), 6, 'max(1, 2, 3, 4, 5, 6) === 6'); + t.equal(max(1, 2, 3, 4, 5, 6, 7), 7, 'max(1, 2, 3, 4, 5, 6, 7) === 7'); + + t.end(); +}); + +test('min', function (t) { + t.equal(min(1, 2), 1, 'min(1, 2) === 1'); + t.equal(min(1, 2, 3), 1, 'min(1, 2, 3) === 1'); + t.equal(min(1, 2, 3, 4), 1, 'min(1, 2, 3, 4) === 1'); + t.equal(min(1, 2, 3, 4, 5), 1, 'min(1, 2, 3, 4, 5) === 1'); + t.equal(min(1, 2, 3, 4, 5, 6), 1, 'min(1, 2, 3, 4, 5, 6) === 1'); + + t.end(); +}); + +test('mod', function (t) { + t.equal(mod(1, 2), 1, 'mod(1, 2) === 1'); + t.equal(mod(2, 2), 0, 'mod(2, 2) === 0'); + t.equal(mod(3, 2), 1, 'mod(3, 2) === 1'); + t.equal(mod(4, 2), 0, 'mod(4, 2) === 0'); + t.equal(mod(5, 2), 1, 'mod(5, 2) === 1'); + t.equal(mod(6, 2), 0, 'mod(6, 2) === 0'); + t.equal(mod(7, 2), 1, 'mod(7, 2) === 1'); + t.equal(mod(8, 2), 0, 'mod(8, 2) === 0'); + t.equal(mod(9, 2), 1, 'mod(9, 2) === 1'); + t.equal(mod(10, 2), 0, 'mod(10, 2) === 0'); + t.equal(mod(11, 2), 1, 'mod(11, 2) === 1'); + + t.end(); +}); + +test('pow', function (t) { + t.equal(pow(2, 2), 4, 'pow(2, 2) === 4'); + t.equal(pow(2, 3), 8, 'pow(2, 3) === 8'); + t.equal(pow(2, 4), 16, 'pow(2, 4) === 16'); + t.equal(pow(2, 5), 32, 'pow(2, 5) === 32'); + t.equal(pow(2, 6), 64, 'pow(2, 6) === 64'); + t.equal(pow(2, 7), 128, 'pow(2, 7) === 128'); + t.equal(pow(2, 8), 256, 'pow(2, 8) === 256'); + t.equal(pow(2, 9), 512, 'pow(2, 9) === 512'); + t.equal(pow(2, 10), 1024, 'pow(2, 10) === 1024'); + + t.end(); +}); + +test('round', function (t) { + t.equal(round(1.1), 1, 'round(1.1) === 1'); + t.equal(round(1.5), 2, 'round(1.5) === 2'); + t.equal(round(1.9), 2, 'round(1.9) === 2'); + + t.end(); +}); + +test('sign', function (t) { + t.equal(sign(-1), -1, 'sign(-1) === -1'); + t.equal(sign(+1), +1, 'sign(+1) === +1'); + t.equal(sign(+0), +0, 'sign(+0) === +0'); + t.equal(sign(-0), -0, 'sign(-0) === -0'); + t.equal(sign(NaN), NaN, 'sign(NaN) === NaN'); + t.equal(sign(Infinity), +1, 'sign(Infinity) === +1'); + t.equal(sign(-Infinity), -1, 'sign(-Infinity) === -1'); + t.equal(sign(maxValue), +1, 'sign(maxValue) === +1'); + t.equal(sign(maxSafeInteger), +1, 'sign(maxSafeInteger) === +1'); + + t.end(); +}); + +test('constants', function (t) { + t.equal(typeof maxArrayLength, 'number', 'typeof maxArrayLength === "number"'); + t.equal(typeof maxSafeInteger, 'number', 'typeof maxSafeInteger === "number"'); + t.equal(typeof maxValue, 'number', 'typeof maxValue === "number"'); + + t.end(); +}); diff --git a/node_modules/math-intrinsics/tsconfig.json b/node_modules/math-intrinsics/tsconfig.json new file mode 100644 index 0000000..b131000 --- /dev/null +++ b/node_modules/math-intrinsics/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "@ljharb/tsconfig", +} diff --git a/node_modules/merge-descriptors/HISTORY.md b/node_modules/merge-descriptors/HISTORY.md new file mode 100644 index 0000000..486771f --- /dev/null +++ b/node_modules/merge-descriptors/HISTORY.md @@ -0,0 +1,21 @@ +1.0.1 / 2016-01-17 +================== + + * perf: enable strict mode + +1.0.0 / 2015-03-01 +================== + + * Add option to only add new descriptors + * Add simple argument validation + * Add jsdoc to source file + +0.0.2 / 2013-12-14 +================== + + * Move repository to `component` organization + +0.0.1 / 2013-10-29 +================== + + * Initial release diff --git a/node_modules/merge-descriptors/LICENSE b/node_modules/merge-descriptors/LICENSE new file mode 100644 index 0000000..274bfd8 --- /dev/null +++ b/node_modules/merge-descriptors/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2013 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/merge-descriptors/README.md b/node_modules/merge-descriptors/README.md new file mode 100644 index 0000000..3403f4a --- /dev/null +++ b/node_modules/merge-descriptors/README.md @@ -0,0 +1,49 @@ +# merge-descriptors + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Merge objects using descriptors. + +```js +var thing = { + get name() { + return 'jon' + } +} + +var animal = { + +} + +merge(animal, thing) + +animal.name === 'jon' +``` + +## API + +### merge(destination, source) + +Redefines `destination`'s descriptors with `source`'s. The return value is the +`destination` object. + +### merge(destination, source, false) + +Defines `source`'s descriptors on `destination` if `destination` does not have +a descriptor by the same name. The return value is the `destination` object. + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/merge-descriptors.svg +[npm-url]: https://npmjs.org/package/merge-descriptors +[travis-image]: https://img.shields.io/travis/component/merge-descriptors/master.svg +[travis-url]: https://travis-ci.org/component/merge-descriptors +[coveralls-image]: https://img.shields.io/coveralls/component/merge-descriptors/master.svg +[coveralls-url]: https://coveralls.io/r/component/merge-descriptors?branch=master +[downloads-image]: https://img.shields.io/npm/dm/merge-descriptors.svg +[downloads-url]: https://npmjs.org/package/merge-descriptors diff --git a/node_modules/merge-descriptors/index.js b/node_modules/merge-descriptors/index.js new file mode 100644 index 0000000..f22ebab --- /dev/null +++ b/node_modules/merge-descriptors/index.js @@ -0,0 +1,60 @@ +/*! + * merge-descriptors + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = merge + +/** + * Module variables. + * @private + */ + +var hasOwnProperty = Object.prototype.hasOwnProperty + +/** + * Merge the property descriptors of `src` into `dest` + * + * @param {object} dest Object to add descriptors to + * @param {object} src Object to clone descriptors from + * @param {boolean} [redefine=true] Redefine `dest` properties with `src` properties + * @returns {object} Reference to dest + * @public + */ + +function merge (dest, src, redefine) { + if (!dest) { + throw new TypeError('argument dest is required') + } + + if (!src) { + throw new TypeError('argument src is required') + } + + if (redefine === undefined) { + // Default to true + redefine = true + } + + Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName (name) { + if (!redefine && hasOwnProperty.call(dest, name)) { + // Skip descriptor + return + } + + // Copy descriptor + var descriptor = Object.getOwnPropertyDescriptor(src, name) + Object.defineProperty(dest, name, descriptor) + }) + + return dest +} diff --git a/node_modules/merge-descriptors/package.json b/node_modules/merge-descriptors/package.json new file mode 100644 index 0000000..aa9af0a --- /dev/null +++ b/node_modules/merge-descriptors/package.json @@ -0,0 +1,39 @@ +{ + "name": "merge-descriptors", + "description": "Merge objects using descriptors", + "version": "1.0.3", + "author": { + "name": "Jonathan Ong", + "email": "me@jongleberry.com", + "url": "http://jongleberry.com", + "twitter": "https://twitter.com/jongleberry" + }, + "contributors": [ + "Douglas Christopher Wilson ", + "Mike Grabowski " + ], + "license": "MIT", + "repository": "sindresorhus/merge-descriptors", + "funding": "https://github.com/sponsors/sindresorhus", + "devDependencies": { + "eslint": "5.9.0", + "eslint-config-standard": "12.0.0", + "eslint-plugin-import": "2.14.0", + "eslint-plugin-node": "7.0.1", + "eslint-plugin-promise": "4.0.1", + "eslint-plugin-standard": "4.0.0", + "mocha": "5.2.0", + "nyc": "13.1.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "README.md", + "index.js" + ], + "scripts": { + "lint": "eslint .", + "test": "mocha test/", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/node_modules/mime/CHANGELOG.md b/node_modules/mime/CHANGELOG.md new file mode 100644 index 0000000..dd25431 --- /dev/null +++ b/node_modules/mime/CHANGELOG.md @@ -0,0 +1,296 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +## [2.6.0](https://github.com/broofa/mime/compare/v2.5.2...v2.6.0) (2021-11-02) + + +### Features + +* mime-db@1.50.0 ([cef0cc4](https://github.com/broofa/mime/commit/cef0cc484ff6d05ff1e12b54ca3e8b856fbc14d8)) + +### [2.5.2](https://github.com/broofa/mime/compare/v2.5.0...v2.5.2) (2021-02-17) + + +### Bug Fixes + +* update to mime-db@1.46.0, fixes [#253](https://github.com/broofa/mime/issues/253) ([f10e6aa](https://github.com/broofa/mime/commit/f10e6aa62e1356de7e2491d7fb4374c8dac65800)) + +## [2.5.0](https://github.com/broofa/mime/compare/v2.4.7...v2.5.0) (2021-01-16) + + +### Features + +* improved CLI ([#244](https://github.com/broofa/mime/issues/244)) ([c8a8356](https://github.com/broofa/mime/commit/c8a8356e3b27f3ef46b64b89b428fdb547b14d5f)) + +### [2.4.7](https://github.com/broofa/mime/compare/v2.4.6...v2.4.7) (2020-12-16) + + +### Bug Fixes + +* update to latest mime-db ([43b09ef](https://github.com/broofa/mime/commit/43b09eff0233eacc449af2b1f99a19ba9e104a44)) + +### [2.4.6](https://github.com/broofa/mime/compare/v2.4.5...v2.4.6) (2020-05-27) + + +### Bug Fixes + +* add cli.js to package.json files ([#237](https://github.com/broofa/mime/issues/237)) ([6c070bc](https://github.com/broofa/mime/commit/6c070bc298fa12a48e2ed126fbb9de641a1e7ebc)) + +### [2.4.5](https://github.com/broofa/mime/compare/v2.4.4...v2.4.5) (2020-05-01) + + +### Bug Fixes + +* fix [#236](https://github.com/broofa/mime/issues/236) ([7f4ecd0](https://github.com/broofa/mime/commit/7f4ecd0d850ed22c9e3bfda2c11fc74e4dde12a7)) +* update to latest mime-db ([c5cb3f2](https://github.com/broofa/mime/commit/c5cb3f2ab8b07642a066efbde1142af1b90c927b)) + +### [2.4.4](https://github.com/broofa/mime/compare/v2.4.3...v2.4.4) (2019-06-07) + + + +### [2.4.3](https://github.com/broofa/mime/compare/v2.4.2...v2.4.3) (2019-05-15) + + + +### [2.4.2](https://github.com/broofa/mime/compare/v2.4.1...v2.4.2) (2019-04-07) + + +### Bug Fixes + +* don't use arrow function introduced in 2.4.1 ([2e00b5c](https://github.com/broofa/mime/commit/2e00b5c)) + + + +### [2.4.1](https://github.com/broofa/mime/compare/v2.4.0...v2.4.1) (2019-04-03) + + +### Bug Fixes + +* update MDN and mime-db types ([3e567a9](https://github.com/broofa/mime/commit/3e567a9)) + + + +# [2.4.0](https://github.com/broofa/mime/compare/v2.3.1...v2.4.0) (2018-11-26) + + +### Features + +* Bind exported methods ([9d2a7b8](https://github.com/broofa/mime/commit/9d2a7b8)) +* update to mime-db@1.37.0 ([49e6e41](https://github.com/broofa/mime/commit/49e6e41)) + + + +### [2.3.1](https://github.com/broofa/mime/compare/v2.3.0...v2.3.1) (2018-04-11) + + +### Bug Fixes + +* fix [#198](https://github.com/broofa/mime/issues/198) ([25ca180](https://github.com/broofa/mime/commit/25ca180)) + + + +# [2.3.0](https://github.com/broofa/mime/compare/v2.2.2...v2.3.0) (2018-04-11) + + +### Bug Fixes + +* fix [#192](https://github.com/broofa/mime/issues/192) ([5c35df6](https://github.com/broofa/mime/commit/5c35df6)) + + +### Features + +* add travis-ci testing ([d64160f](https://github.com/broofa/mime/commit/d64160f)) + + + +### [2.2.2](https://github.com/broofa/mime/compare/v2.2.1...v2.2.2) (2018-03-30) + + +### Bug Fixes + +* update types files to mime-db@1.32.0 ([85aac16](https://github.com/broofa/mime/commit/85aac16)) + + +### [2.2.1](https://github.com/broofa/mime/compare/v2.2.0...v2.2.1) (2018-03-30) + + +### Bug Fixes + +* Retain type->extension mappings for non-default types. Fixes [#180](https://github.com/broofa/mime/issues/180) ([b5c83fb](https://github.com/broofa/mime/commit/b5c83fb)) + + + +# [2.2.0](https://github.com/broofa/mime/compare/v2.1.0...v2.2.0) (2018-01-04) + + +### Features + +* Retain type->extension mappings for non-default types. Fixes [#180](https://github.com/broofa/mime/issues/180) ([10f82ac](https://github.com/broofa/mime/commit/10f82ac)) + + + +# [2.1.0](https://github.com/broofa/mime/compare/v2.0.5...v2.1.0) (2017-12-22) + + +### Features + +* Upgrade to mime-db@1.32.0. Fixes [#185](https://github.com/broofa/mime/issues/185) ([3f775ba](https://github.com/broofa/mime/commit/3f775ba)) + + + +### [2.0.5](https://github.com/broofa/mime/compare/v2.0.1...v2.0.5) (2017-12-22) + + +### Bug Fixes + +* ES5 support (back to node v0.4) ([f14ccb6](https://github.com/broofa/mime/commit/f14ccb6)) + + + +# Changelog + +### v2.0.4 (24/11/2017) +- [**closed**] Switch to mime-score module for resolving extension contention issues. [#182](https://github.com/broofa/mime/issues/182) +- [**closed**] Update mime-db to 1.31.0 in v1.x branch [#181](https://github.com/broofa/mime/issues/181) + +--- + +## v1.5.0 (22/11/2017) +- [**closed**] need ES5 version ready in npm package [#179](https://github.com/broofa/mime/issues/179) +- [**closed**] mime-db no trace of iWork - pages / numbers / etc. [#178](https://github.com/broofa/mime/issues/178) +- [**closed**] How it works in brownser ? [#176](https://github.com/broofa/mime/issues/176) +- [**closed**] Missing `./Mime` [#175](https://github.com/broofa/mime/issues/175) +- [**closed**] Vulnerable Regular Expression [#167](https://github.com/broofa/mime/issues/167) + +--- + +### v2.0.3 (25/09/2017) +*No changelog for this release.* + +--- + +### v1.4.1 (25/09/2017) +- [**closed**] Issue when bundling with webpack [#172](https://github.com/broofa/mime/issues/172) + +--- + +### v2.0.2 (15/09/2017) +- [**V2**] fs.readFileSync is not a function [#165](https://github.com/broofa/mime/issues/165) +- [**closed**] The extension for video/quicktime should map to .mov, not .qt [#164](https://github.com/broofa/mime/issues/164) +- [**V2**] [v2 Feedback request] Mime class API [#163](https://github.com/broofa/mime/issues/163) +- [**V2**] [v2 Feedback request] Resolving conflicts over extensions [#162](https://github.com/broofa/mime/issues/162) +- [**V2**] Allow callers to load module with official, full, or no defined types. [#161](https://github.com/broofa/mime/issues/161) +- [**V2**] Use "facets" to resolve extension conflicts [#160](https://github.com/broofa/mime/issues/160) +- [**V2**] Remove fs and path dependencies [#152](https://github.com/broofa/mime/issues/152) +- [**V2**] Default content-type should not be application/octet-stream [#139](https://github.com/broofa/mime/issues/139) +- [**V2**] reset mime-types [#124](https://github.com/broofa/mime/issues/124) +- [**V2**] Extensionless paths should return null or false [#113](https://github.com/broofa/mime/issues/113) + +--- + +### v2.0.1 (14/09/2017) +- [**closed**] Changelog for v2.0 does not mention breaking changes [#171](https://github.com/broofa/mime/issues/171) +- [**closed**] MIME breaking with 'class' declaration as it is without 'use strict mode' [#170](https://github.com/broofa/mime/issues/170) + +--- + +## v2.0.0 (12/09/2017) +- [**closed**] woff and woff2 [#168](https://github.com/broofa/mime/issues/168) + +--- + +## v1.4.0 (28/08/2017) +- [**closed**] support for ac3 voc files [#159](https://github.com/broofa/mime/issues/159) +- [**closed**] Help understanding change from application/xml to text/xml [#158](https://github.com/broofa/mime/issues/158) +- [**closed**] no longer able to override mimetype [#157](https://github.com/broofa/mime/issues/157) +- [**closed**] application/vnd.adobe.photoshop [#147](https://github.com/broofa/mime/issues/147) +- [**closed**] Directories should appear as something other than application/octet-stream [#135](https://github.com/broofa/mime/issues/135) +- [**closed**] requested features [#131](https://github.com/broofa/mime/issues/131) +- [**closed**] Make types.json loading optional? [#129](https://github.com/broofa/mime/issues/129) +- [**closed**] Cannot find module './types.json' [#120](https://github.com/broofa/mime/issues/120) +- [**V2**] .wav files show up as "audio/x-wav" instead of "audio/x-wave" [#118](https://github.com/broofa/mime/issues/118) +- [**closed**] Don't be a pain in the ass for node community [#108](https://github.com/broofa/mime/issues/108) +- [**closed**] don't make default_type global [#78](https://github.com/broofa/mime/issues/78) +- [**closed**] mime.extension() fails if the content-type is parameterized [#74](https://github.com/broofa/mime/issues/74) + +--- + +### v1.3.6 (11/05/2017) +- [**closed**] .md should be text/markdown as of March 2016 [#154](https://github.com/broofa/mime/issues/154) +- [**closed**] Error while installing mime [#153](https://github.com/broofa/mime/issues/153) +- [**closed**] application/manifest+json [#149](https://github.com/broofa/mime/issues/149) +- [**closed**] Dynamic adaptive streaming over HTTP (DASH) file extension typo [#141](https://github.com/broofa/mime/issues/141) +- [**closed**] charsets image/png undefined [#140](https://github.com/broofa/mime/issues/140) +- [**closed**] Mime-db dependency out of date [#130](https://github.com/broofa/mime/issues/130) +- [**closed**] how to support plist? [#126](https://github.com/broofa/mime/issues/126) +- [**closed**] how does .types file format look like? [#123](https://github.com/broofa/mime/issues/123) +- [**closed**] Feature: support for expanding MIME patterns [#121](https://github.com/broofa/mime/issues/121) +- [**closed**] DEBUG_MIME doesn't work [#117](https://github.com/broofa/mime/issues/117) + +--- + +### v1.3.4 (06/02/2015) +*No changelog for this release.* + +--- + +### v1.3.3 (06/02/2015) +*No changelog for this release.* + +--- + +### v1.3.1 (05/02/2015) +- [**closed**] Consider adding support for Handlebars .hbs file ending [#111](https://github.com/broofa/mime/issues/111) +- [**closed**] Consider adding support for hjson. [#110](https://github.com/broofa/mime/issues/110) +- [**closed**] Add mime type for Opus audio files [#94](https://github.com/broofa/mime/issues/94) +- [**closed**] Consider making the `Requesting New Types` information more visible [#77](https://github.com/broofa/mime/issues/77) + +--- + +## v1.3.0 (05/02/2015) +- [**closed**] Add common name? [#114](https://github.com/broofa/mime/issues/114) +- [**closed**] application/x-yaml [#104](https://github.com/broofa/mime/issues/104) +- [**closed**] Add mime type for WOFF file format 2.0 [#102](https://github.com/broofa/mime/issues/102) +- [**closed**] application/x-msi for .msi [#99](https://github.com/broofa/mime/issues/99) +- [**closed**] Add mimetype for gettext translation files [#98](https://github.com/broofa/mime/issues/98) +- [**closed**] collaborators [#88](https://github.com/broofa/mime/issues/88) +- [**closed**] getting errot in installation of mime module...any1 can help? [#87](https://github.com/broofa/mime/issues/87) +- [**closed**] should application/json's charset be utf8? [#86](https://github.com/broofa/mime/issues/86) +- [**closed**] Add "license" and "licenses" to package.json [#81](https://github.com/broofa/mime/issues/81) +- [**closed**] lookup with extension-less file on Windows returns wrong type [#68](https://github.com/broofa/mime/issues/68) + +--- + +### v1.2.11 (15/08/2013) +- [**closed**] Update mime.types [#65](https://github.com/broofa/mime/issues/65) +- [**closed**] Publish a new version [#63](https://github.com/broofa/mime/issues/63) +- [**closed**] README should state upfront that "application/octet-stream" is default for unknown extension [#55](https://github.com/broofa/mime/issues/55) +- [**closed**] Suggested improvement to the charset API [#52](https://github.com/broofa/mime/issues/52) + +--- + +### v1.2.10 (25/07/2013) +- [**closed**] Mime type for woff files should be application/font-woff and not application/x-font-woff [#62](https://github.com/broofa/mime/issues/62) +- [**closed**] node.types in conflict with mime.types [#51](https://github.com/broofa/mime/issues/51) + +--- + +### v1.2.9 (17/01/2013) +- [**closed**] Please update "mime" NPM [#49](https://github.com/broofa/mime/issues/49) +- [**closed**] Please add semicolon [#46](https://github.com/broofa/mime/issues/46) +- [**closed**] parse full mime types [#43](https://github.com/broofa/mime/issues/43) + +--- + +### v1.2.8 (10/01/2013) +- [**closed**] /js directory mime is application/javascript. Is it correct? [#47](https://github.com/broofa/mime/issues/47) +- [**closed**] Add mime types for lua code. [#45](https://github.com/broofa/mime/issues/45) + +--- + +### v1.2.7 (19/10/2012) +- [**closed**] cannot install 1.2.7 via npm [#41](https://github.com/broofa/mime/issues/41) +- [**closed**] Transfer ownership to @broofa [#36](https://github.com/broofa/mime/issues/36) +- [**closed**] it's wrong to set charset to UTF-8 for text [#30](https://github.com/broofa/mime/issues/30) +- [**closed**] Allow multiple instances of MIME types container [#27](https://github.com/broofa/mime/issues/27) diff --git a/node_modules/mime/LICENSE b/node_modules/mime/LICENSE new file mode 100644 index 0000000..d3f46f7 --- /dev/null +++ b/node_modules/mime/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2010 Benjamin Thomas, Robert Kieffer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/mime/Mime.js b/node_modules/mime/Mime.js new file mode 100644 index 0000000..969a66e --- /dev/null +++ b/node_modules/mime/Mime.js @@ -0,0 +1,97 @@ +'use strict'; + +/** + * @param typeMap [Object] Map of MIME type -> Array[extensions] + * @param ... + */ +function Mime() { + this._types = Object.create(null); + this._extensions = Object.create(null); + + for (let i = 0; i < arguments.length; i++) { + this.define(arguments[i]); + } + + this.define = this.define.bind(this); + this.getType = this.getType.bind(this); + this.getExtension = this.getExtension.bind(this); +} + +/** + * Define mimetype -> extension mappings. Each key is a mime-type that maps + * to an array of extensions associated with the type. The first extension is + * used as the default extension for the type. + * + * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); + * + * If a type declares an extension that has already been defined, an error will + * be thrown. To suppress this error and force the extension to be associated + * with the new type, pass `force`=true. Alternatively, you may prefix the + * extension with "*" to map the type to extension, without mapping the + * extension to the type. + * + * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']}); + * + * + * @param map (Object) type definitions + * @param force (Boolean) if true, force overriding of existing definitions + */ +Mime.prototype.define = function(typeMap, force) { + for (let type in typeMap) { + let extensions = typeMap[type].map(function(t) { + return t.toLowerCase(); + }); + type = type.toLowerCase(); + + for (let i = 0; i < extensions.length; i++) { + const ext = extensions[i]; + + // '*' prefix = not the preferred type for this extension. So fixup the + // extension, and skip it. + if (ext[0] === '*') { + continue; + } + + if (!force && (ext in this._types)) { + throw new Error( + 'Attempt to change mapping for "' + ext + + '" extension from "' + this._types[ext] + '" to "' + type + + '". Pass `force=true` to allow this, otherwise remove "' + ext + + '" from the list of extensions for "' + type + '".' + ); + } + + this._types[ext] = type; + } + + // Use first extension as default + if (force || !this._extensions[type]) { + const ext = extensions[0]; + this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1); + } + } +}; + +/** + * Lookup a mime type based on extension + */ +Mime.prototype.getType = function(path) { + path = String(path); + let last = path.replace(/^.*[/\\]/, '').toLowerCase(); + let ext = last.replace(/^.*\./, '').toLowerCase(); + + let hasPath = last.length < path.length; + let hasDot = ext.length < last.length - 1; + + return (hasDot || !hasPath) && this._types[ext] || null; +}; + +/** + * Return file extension associated with a mime type + */ +Mime.prototype.getExtension = function(type) { + type = /^\s*([^;\s]*)/.test(type) && RegExp.$1; + return type && this._extensions[type.toLowerCase()] || null; +}; + +module.exports = Mime; diff --git a/node_modules/mime/README.md b/node_modules/mime/README.md new file mode 100644 index 0000000..b08316f --- /dev/null +++ b/node_modules/mime/README.md @@ -0,0 +1,187 @@ + +# Mime + +A comprehensive, compact MIME type module. + +[![Build Status](https://travis-ci.org/broofa/mime.svg?branch=master)](https://travis-ci.org/broofa/mime) + +## Version 2 Notes + +Version 2 is a breaking change from 1.x as the semver implies. Specifically: + +* `lookup()` renamed to `getType()` +* `extension()` renamed to `getExtension()` +* `charset()` and `load()` methods have been removed + +If you prefer the legacy version of this module please `npm install mime@^1`. Version 1 docs may be found [here](https://github.com/broofa/mime/tree/v1.4.0). + +## Install + +### NPM +``` +npm install mime +``` + +### Browser + +It is recommended that you use a bundler such as +[webpack](https://webpack.github.io/) or [browserify](http://browserify.org/) to +package your code. However, browser-ready versions are available via wzrd.in. +E.g. For the full version: + + + + +Or, for the `mime/lite` version: + + + + +## Quick Start + +For the full version (800+ MIME types, 1,000+ extensions): + +```javascript +const mime = require('mime'); + +mime.getType('txt'); // ⇨ 'text/plain' +mime.getExtension('text/plain'); // ⇨ 'txt' +``` + +See [Mime API](#mime-api) below for API details. + +## Lite Version + +There is also a "lite" version of this module that omits vendor-specific +(`*/vnd.*`) and experimental (`*/x-*`) types. It weighs in at ~2.5KB, compared +to 8KB for the full version. To load the lite version: + +```javascript +const mime = require('mime/lite'); +``` + +## Mime .vs. mime-types .vs. mime-db modules + +For those of you wondering about the difference between these [popular] NPM modules, +here's a brief rundown ... + +[`mime-db`](https://github.com/jshttp/mime-db) is "the source of +truth" for MIME type information. It is not an API. Rather, it is a canonical +dataset of mime type definitions pulled from IANA, Apache, NGINX, and custom mappings +submitted by the Node.js community. + +[`mime-types`](https://github.com/jshttp/mime-types) is a thin +wrapper around mime-db that provides an API drop-in compatible(ish) with `mime @ < v1.3.6` API. + +`mime` is, as of v2, a self-contained module bundled with a pre-optimized version +of the `mime-db` dataset. It provides a simplified API with the following characteristics: + +* Intelligently resolved type conflicts (See [mime-score](https://github.com/broofa/mime-score) for details) +* Method naming consistent with industry best-practices +* Compact footprint. E.g. The minified+compressed sizes of the various modules: + +Module | Size +--- | --- +`mime-db` | 18 KB +`mime-types` | same as mime-db +`mime` | 8 KB +`mime/lite` | 2 KB + +## Mime API + +Both `require('mime')` and `require('mime/lite')` return instances of the MIME +class, documented below. + +Note: Inputs to this API are case-insensitive. Outputs (returned values) will +be lowercase. + +### new Mime(typeMap, ... more maps) + +Most users of this module will not need to create Mime instances directly. +However if you would like to create custom mappings, you may do so as follows +... + +```javascript +// Require Mime class +const Mime = require('mime/Mime'); + +// Define mime type -> extensions map +const typeMap = { + 'text/abc': ['abc', 'alpha', 'bet'], + 'text/def': ['leppard'] +}; + +// Create and use Mime instance +const myMime = new Mime(typeMap); +myMime.getType('abc'); // ⇨ 'text/abc' +myMime.getExtension('text/def'); // ⇨ 'leppard' +``` + +If more than one map argument is provided, each map is `define()`ed (see below), in order. + +### mime.getType(pathOrExtension) + +Get mime type for the given path or extension. E.g. + +```javascript +mime.getType('js'); // ⇨ 'application/javascript' +mime.getType('json'); // ⇨ 'application/json' + +mime.getType('txt'); // ⇨ 'text/plain' +mime.getType('dir/text.txt'); // ⇨ 'text/plain' +mime.getType('dir\\text.txt'); // ⇨ 'text/plain' +mime.getType('.text.txt'); // ⇨ 'text/plain' +mime.getType('.txt'); // ⇨ 'text/plain' +``` + +`null` is returned in cases where an extension is not detected or recognized + +```javascript +mime.getType('foo/txt'); // ⇨ null +mime.getType('bogus_type'); // ⇨ null +``` + +### mime.getExtension(type) +Get extension for the given mime type. Charset options (often included in +Content-Type headers) are ignored. + +```javascript +mime.getExtension('text/plain'); // ⇨ 'txt' +mime.getExtension('application/json'); // ⇨ 'json' +mime.getExtension('text/html; charset=utf8'); // ⇨ 'html' +``` + +### mime.define(typeMap[, force = false]) + +Define [more] type mappings. + +`typeMap` is a map of type -> extensions, as documented in `new Mime`, above. + +By default this method will throw an error if you try to map a type to an +extension that is already assigned to another type. Passing `true` for the +`force` argument will suppress this behavior (overriding any previous mapping). + +```javascript +mime.define({'text/x-abc': ['abc', 'abcd']}); + +mime.getType('abcd'); // ⇨ 'text/x-abc' +mime.getExtension('text/x-abc') // ⇨ 'abc' +``` + +## Command Line + + mime [path_or_extension] + +E.g. + + > mime scripts/jquery.js + application/javascript + +---- +Markdown generated from [src/README_js.md](src/README_js.md) by [![RunMD Logo](http://i.imgur.com/h0FVyzU.png)](https://github.com/broofa/runmd) \ No newline at end of file diff --git a/node_modules/mime/cli.js b/node_modules/mime/cli.js new file mode 100644 index 0000000..ab70a49 --- /dev/null +++ b/node_modules/mime/cli.js @@ -0,0 +1,46 @@ +#!/usr/bin/env node + +'use strict'; + +process.title = 'mime'; +let mime = require('.'); +let pkg = require('./package.json'); +let args = process.argv.splice(2); + +if (args.includes('--version') || args.includes('-v') || args.includes('--v')) { + console.log(pkg.version); + process.exit(0); +} else if (args.includes('--name') || args.includes('-n') || args.includes('--n')) { + console.log(pkg.name); + process.exit(0); +} else if (args.includes('--help') || args.includes('-h') || args.includes('--h')) { + console.log(pkg.name + ' - ' + pkg.description + '\n'); + console.log(`Usage: + + mime [flags] [path_or_extension] + + Flags: + --help, -h Show this message + --version, -v Display the version + --name, -n Print the name of the program + + Note: the command will exit after it executes if a command is specified + The path_or_extension is the path to the file or the extension of the file. + + Examples: + mime --help + mime --version + mime --name + mime -v + mime src/log.js + mime new.py + mime foo.sh + `); + process.exit(0); +} + +let file = args[0]; +let type = mime.getType(file); + +process.stdout.write(type + '\n'); + diff --git a/node_modules/mime/index.js b/node_modules/mime/index.js new file mode 100644 index 0000000..fadcf8d --- /dev/null +++ b/node_modules/mime/index.js @@ -0,0 +1,4 @@ +'use strict'; + +let Mime = require('./Mime'); +module.exports = new Mime(require('./types/standard'), require('./types/other')); diff --git a/node_modules/mime/lite.js b/node_modules/mime/lite.js new file mode 100644 index 0000000..835cffb --- /dev/null +++ b/node_modules/mime/lite.js @@ -0,0 +1,4 @@ +'use strict'; + +let Mime = require('./Mime'); +module.exports = new Mime(require('./types/standard')); diff --git a/node_modules/mime/package.json b/node_modules/mime/package.json new file mode 100644 index 0000000..df7f369 --- /dev/null +++ b/node_modules/mime/package.json @@ -0,0 +1,52 @@ +{ + "author": { + "name": "Robert Kieffer", + "url": "http://github.com/broofa", + "email": "robert@broofa.com" + }, + "engines": { + "node": ">=4.0.0" + }, + "bin": { + "mime": "cli.js" + }, + "contributors": [], + "description": "A comprehensive library for mime-type mapping", + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "benchmark": "*", + "chalk": "4.1.2", + "eslint": "8.1.0", + "mime-db": "1.50.0", + "mime-score": "1.2.0", + "mime-types": "2.1.33", + "mocha": "9.1.3", + "runmd": "*", + "standard-version": "9.3.2" + }, + "files": [ + "index.js", + "lite.js", + "Mime.js", + "cli.js", + "/types" + ], + "scripts": { + "prepare": "node src/build.js && runmd --output README.md src/README_js.md", + "release": "standard-version", + "benchmark": "node src/benchmark.js", + "md": "runmd --watch --output README.md src/README_js.md", + "test": "mocha src/test.js" + }, + "keywords": [ + "util", + "mime" + ], + "name": "mime", + "repository": { + "url": "https://github.com/broofa/mime", + "type": "git" + }, + "version": "2.6.0" +} diff --git a/node_modules/mime/types/other.js b/node_modules/mime/types/other.js new file mode 100644 index 0000000..bb6a035 --- /dev/null +++ b/node_modules/mime/types/other.js @@ -0,0 +1 @@ +module.exports = {"application/prs.cww":["cww"],"application/vnd.1000minds.decision-model+xml":["1km"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.keynote":["key"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.numbers":["numbers"],"application/vnd.apple.pages":["pages"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.balsamiq.bmml+xml":["bmml"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.citationstyles.style+xml":["csl"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dbf":["dbf"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mapbox-vector-tile":["mvt"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["*stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.ac+xml":["*ac"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openblox.game+xml":["obgx"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openstreetmap.data+xml":["osm"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.rar":["rar"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.software602.filler.form+xml":["fo"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.syncml.dmddf+xml":["ddf"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":["*dmg"],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":["*bdoc"],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["*deb","udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":["*iso"],"application/x-iwork-keynote-sffkey":["*key"],"application/x-iwork-numbers-sffnumbers":["*numbers"],"application/x-iwork-pages-sffpages":["*pages"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-keepass2":["kdbx"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":["*exe"],"application/x-msdownload":["*exe","*dll","com","bat","*msi"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["*wmf","*wmz","*emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":["*prc","*pdb"],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["*rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["*obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["*xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":["*m4a"],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":["*ra"],"audio/x-wav":["*wav"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"image/prs.btif":["btif"],"image/prs.pti":["pti"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.airzip.accelerator.azv":["azv"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":["*sub"],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.microsoft.icon":["ico"],"image/vnd.ms-dds":["dds"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.pco.b16":["b16"],"image/vnd.tencent.tap":["tap"],"image/vnd.valve.source.texture":["vtf"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/vnd.zbrush.pcx":["pcx"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["*ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":["*bmp"],"image/x-pcx":["*pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/vnd.wfa.wsc":["wsc"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.opengex":["ogex"],"model/vnd.parasolid.transmit.binary":["x_b"],"model/vnd.parasolid.transmit.text":["x_t"],"model/vnd.sap.vds":["vds"],"model/vnd.usdz+zip":["usdz"],"model/vnd.valve.source.compiled-map":["bsp"],"model/vnd.vtu":["vtu"],"text/prs.lines.tag":["dsc"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":["*org"],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]}; \ No newline at end of file diff --git a/node_modules/mime/types/standard.js b/node_modules/mime/types/standard.js new file mode 100644 index 0000000..5ee9937 --- /dev/null +++ b/node_modules/mime/types/standard.js @@ -0,0 +1 @@ +module.exports = {"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomdeleted+xml":["atomdeleted"],"application/atomsvc+xml":["atomsvc"],"application/atsc-dwd+xml":["dwd"],"application/atsc-held+xml":["held"],"application/atsc-rsat+xml":["rsat"],"application/bdoc":["bdoc"],"application/calendar+xml":["xcs"],"application/ccxml+xml":["ccxml"],"application/cdfx+xml":["cdfx"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["es","ecma"],"application/emma+xml":["emma"],"application/emotionml+xml":["emotionml"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/express":["exp"],"application/fdt+xml":["fdt"],"application/font-tdpfr":["pfr"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hjson":["hjson"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/its+xml":["its"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lgr+xml":["lgr"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mmt-aei+xml":["maei"],"application/mmt-usd+xml":["musd"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/n-quads":["nq"],"application/n-triples":["nt"],"application/node":["cjs"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/p2p-overlay+xml":["relo"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/provenance+xml":["provx"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf","owl"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/route-apd+xml":["rapd"],"application/route-s-tsid+xml":["sls"],"application/route-usd+xml":["rusd"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/senml+xml":["senmlx"],"application/sensml+xml":["sensmlx"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/sieve":["siv","sieve"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/swid+xml":["swidtag"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/toml":["toml"],"application/trig":["trig"],"application/ttml+xml":["ttml"],"application/ubjson":["ubj"],"application/urc-ressheet+xml":["rsheet"],"application/urc-targetdesc+xml":["td"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/xaml+xml":["xaml"],"application/xcap-att+xml":["xav"],"application/xcap-caps+xml":["xca"],"application/xcap-diff+xml":["xdf"],"application/xcap-el+xml":["xel"],"application/xcap-ns+xml":["xns"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xliff+xml":["xlf"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["*xsl","xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["*3gpp"],"audio/adpcm":["adp"],"audio/amr":["amr"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mobile-xmf":["mxmf"],"audio/mp3":["*mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx","opus"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/wav":["wav"],"audio/wave":["*wav"],"audio/webm":["weba"],"audio/xm":["xm"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/aces":["exr"],"image/apng":["apng"],"image/avif":["avif"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/dicom-rle":["drle"],"image/emf":["emf"],"image/fits":["fits"],"image/g3fax":["g3"],"image/gif":["gif"],"image/heic":["heic"],"image/heic-sequence":["heics"],"image/heif":["heif"],"image/heif-sequence":["heifs"],"image/hej2k":["hej2"],"image/hsj2":["hsj2"],"image/ief":["ief"],"image/jls":["jls"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jph":["jph"],"image/jphc":["jhc"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/jxr":["jxr"],"image/jxra":["jxra"],"image/jxrs":["jxrs"],"image/jxs":["jxs"],"image/jxsc":["jxsc"],"image/jxsi":["jxsi"],"image/jxss":["jxss"],"image/ktx":["ktx"],"image/ktx2":["ktx2"],"image/png":["png"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/t38":["t38"],"image/tiff":["tif","tiff"],"image/tiff-fx":["tfx"],"image/webp":["webp"],"image/wmf":["wmf"],"message/disposition-notification":["disposition-notification"],"message/global":["u8msg"],"message/global-delivery-status":["u8dsn"],"message/global-disposition-notification":["u8mdn"],"message/global-headers":["u8hdr"],"message/rfc822":["eml","mime"],"model/3mf":["3mf"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/mtl":["mtl"],"model/obj":["obj"],"model/step+xml":["stpx"],"model/step+zip":["stpz"],"model/step-xml+zip":["stpxz"],"model/stl":["stl"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["*x3db","x3dbz"],"model/x3d+fastinfoset":["x3db"],"model/x3d+vrml":["*x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"model/x3d-vrml":["x3dv"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/mdx":["mdx"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/richtext":["rtx"],"text/rtf":["*rtf"],"text/sgml":["sgml","sgm"],"text/shex":["shex"],"text/slim":["slim","slm"],"text/spdx":["spdx"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vtt":["vtt"],"text/xml":["*xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/iso.segment":["m4s"],"video/jpeg":["jpgv"],"video/jpm":["*jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/webm":["webm"]}; \ No newline at end of file diff --git a/node_modules/mingo/LICENSE b/node_modules/mingo/LICENSE new file mode 100644 index 0000000..d539fb3 --- /dev/null +++ b/node_modules/mingo/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013-2024 Francis Asante + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/mingo/README.md b/node_modules/mingo/README.md new file mode 100644 index 0000000..e0db418 --- /dev/null +++ b/node_modules/mingo/README.md @@ -0,0 +1,384 @@ +# mingo + +MongoDB query language for in-memory objects + +![license](https://img.shields.io/github/license/kofrasa/mingo) +[![version](https://img.shields.io/npm/v/mingo)](https://www.npmjs.org/package/mingo) +[![build](https://github.com/kofrasa/mingo/actions/workflows/build.yml/badge.svg)](https://github.com/kofrasa/mingo/actions/workflows/build.yml) +![issues](https://img.shields.io/github/issues/kofrasa/mingo) +[![codecov](https://img.shields.io/codecov/c/github/kofrasa/mingo)](https://codecov.io/gh/kofrasa/mingo) +[![npm downloads](https://img.shields.io/npm/dm/mingo)](https://www.npmjs.org/package/mingo) + +## Install + +`$ npm install mingo` + +## Features + +- Dot notation selectors. _`.`_ and _`.`_. +- Query and Projection [operators](https://www.mongodb.com/docs/manual/reference/operator/.query/). +- Aggregation Framework. + - [Pipeline operators](https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/) + - [Accumulator operators](https://docs.mongodb.com/manual/reference/operator/aggregation#accumulators-group/) + - [Expression operators](https://docs.mongodb.com/manual/reference/operator/aggregation/#expression-operators) + - [Window operators](https://docs.mongodb.com/manual/reference/operator/aggregation/setWindowFields/#window-operators) +- Aggregaion variables; [`$$ROOT`, `$$CURRENT`, `$$DESCEND`, `$$PRUNE`, `$$KEEP`, `$$REMOVE`, `$$NOW`](https://docs.mongodb.com/manual/reference/aggregation-variables/) +- Filtering and aggregation using streaming. +- Document [update](https://www.mongodb.com/docs/manual/reference/operator/update/) support. See [Updating Documents](#updating-documents). +- Custom type value equality using `toString` when implemented. + +For more documentation on how to use operators see [mongodb](http://docs.mongodb.org/manual/reference/operator/). + +[API Documentation](http://kofrasa.github.io/mingo/). + +## Usage + +```js +// Use as es6 module +import mingo from "mingo"; + +// or vanilla nodeJS +const mingo = require("mingo"); +``` + +The main module exports functions `aggregate`, `find`, `remove`, and `update`, and the objects `Aggregator` and `Query`. [Query and Projection](https://docs.mongodb.com/manual/reference/operator/query/) operators are loaded by default by the root through the side-effect module [init/basic](https://github.com/kofrasa/mingo/blob/main/src/init/basic.ts). This also automatically includes pipeline operators; `$project`, `$skip`, `$limit`, and `$sort`. + +## Loading Operators + +MongoDB query library is huge and you may not need all the operators. When using this library on the server-side where bundle size is not a concern, you can load all operators as shown below. + +```js +// This effectively imports the entire library into your bundle. +import "mingo/init/system"; +``` + +Or from the node CLI + +```sh +node -r 'mingo/init/system' myscript.js +``` + +To support tree-shaking for client side bundles, you can import and register specific operators that will be used in your application. + +### ES6 + +```js +import { useOperators } from "mingo/core"; +import { $trunc } from "mingo/operators/expression/trunc"; +import { $bucket } from "mingo/operators/pipeline/bucket"; + +useOperators("expression", { $trunc }); +useOperators("pipeline", { $bucket }); +``` + +### CommonJS + +```js +const core = require("mingo/core"); +const $trunc = require("mingo/operators/expression/trunc").$trunc; +const $bucket = require("mingo/operators/pipeline/bucket").$bucket; + +core.useOperators("expression", { $trunc: $trunc }); +core.useOperators("pipeline", { $bucket: $bucket }); +``` + +## Using query to test objects + +```js +import { Query } from "mingo"; + +// create a query with criteria +// find all grades for homework with score >= 50 +let query = new Query({ + type: "homework", + score: { $gte: 50 } +}); + +// test if an object matches query +query.test(doc); +``` + +## Searching and Filtering + +```js +import { Query } from "mingo"; + +// input is either an Array or any iterable source (i.e Object{next:Function}) including ES6 generators. +let criteria = { score: { $gt: 10 } }; + +let query = new Query(criteria); + +// filter collection with find() +let cursor = query.find(collection); + +// alternatively use shorthand +// cursor = mingo.find(collection, criteria) + +// sort, skip and limit by chaining +cursor.sort({ student_id: 1, score: -1 }).skip(100).limit(100); + +// count matches. exhausts cursor +cursor.count(); + +// classic cursor iterator (old school) +while (cursor.hasNext()) { + console.log(cursor.next()); +} + +// ES6 iterators (new cool) +for (let value of cursor) { + console.log(value); +} + +// all() to retrieve matched objects. exhausts cursor +cursor.all(); +``` + +## Using $jsonSchema operator + +To use the `$jsonSchema` operator, you must register your own `JsonSchemaValidator` in the options. +No default implementation is provided out of the box so users can use a library with their preferred schema format. + +The example below uses [Ajv](https://www.npmjs.com/package/ajv) to implement schema validation. + +```js +import * as mingo from "mingo" +import type { AnyObject } from "mingo/types" +import type { JsonSchemaValidator } from "mingo/core" +import Ajv, { Schema } from "ajv" + +const jsonSchemaValidator: JsonSchemaValidator = (s: AnyObject) => { + const ajv = new Ajv(); + const v = ajv.compile(s as Schema); + return (o: AnyObject) => (v(o) ? true : false); +}; + +const schema = { + type: "object", + required: ["item", "qty", "instock"], + properties: { + item: { type: "string" }, + qty: { type: "integer" }, + size: { + type: "object", + required: ["uom"], + properties: { + uom: { type: "string" }, + h: { type: "number" }, + w: { type: "number" }, + }, + }, + instock: { type: "boolean" }, + }, +}; + +// queries documents using schema validation +mingo.find(docs, { $jsonSchema: schema }, {}, { jsonSchemaValidator }).all(); +``` + +**Note:** An error is thrown when the `$jsonSchema` operator is used without a the `jsonSchemaValidator` configured. + +## Aggregation Pipeline + +```js +import { Aggregator } from "mingo/aggregator"; +import { useOperators } from "mingo/core"; +import { $match, $group } from "mingo/operators/pipeline"; +import { $min } from "mingo/operators/accumulator"; + +// ensure the required operators are preloaded prior to using them. +useOperators("pipeline", { $match, $group }); +useOperators("accumulator", { $min }); + +let agg = new Aggregator([ + { $match: { type: "homework" } }, + { $group: { _id: "$student_id", score: { $min: "$score" } } }, + { $sort: { _id: 1, score: 1 } } +]); + +// return an iterator for streaming results +let stream = agg.stream(collection); + +// return all results. same as `stream.all()` +let result = agg.run(collection); +``` + +## Options + +Query and aggregation operations can be configured with options to enabled different features or customize how documents are processed. Some options are only relevant to specific operators and need not be specified if not required. + +| Name | Default | Description | +| -----| --------| ----------- | +| collation | _none_ | [Collation](http://kofrasa.github.io/mingo/interfaces/core.CollationSpec.html) specification for string sorting operations. See [Intl.Collator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator) | +| collectionResolver | _none_ |

Function to resolve strings to arrays for use with operators that reference other collections such as; `$lookup`, `$out` and `$merge`.

Expects: `(string) => AnyObject[]`. | +| context | _none_ |

An object that defines which operators should be used.

This option allow users to load only desired operators or register custom operators which need not be available globally. | +| hashFunction | _default_ |

Custom hash function to replace the default based on "Effective Java" hashCode.

Expects: `(Any) => number`. | +| idKey | `"_id"` |

The key that is used to lookup the ID value of a document.

| +| jsonSchemaValidator | _none_ |

JSON schema validator to use for the `$jsonSchema` operator.

Expects: `(schema: AnyObject) => (document: AnyObject) => boolean`.
The `$jsonSchema` operation would fail if a validator is not provided. | +| processingMode | [CLONE_OFF](http://kofrasa.github.io/mingo/enums/core.ProcessingMode.html) |

Specifies the degree of mutation for inputs and outputs. By default the input collection is modified as needed and returned output objects may share references.

Immutable intermediate results may be collected in a pipeline using the `$out` operator. | +| scriptEnabled | `true` |

Enable or disable using custom script execution.

When disabled, operators that execute custom code are disallowed such as; `$where`, `$accumulator`, and `$function`. | +| useGlobalContext | `true`|

Fallback to the global context if an operator is missing from the user-supplied context.

This is provided to allow users to strictly enforce which operators may be used. | +| useStrictMode | `true` |

Enforces strict MongoDB compatibilty.

When disabled the behaviour changes as follows.
  • `$elemMatch` returns all matching nested documents instead of only the first.
  • Empty string `""` is coerced to false during boolean checking in supported operators which is consistent with Javascript semantics.
  • `$type` returns JS native type names as follows.
    MongoDBJavaScript
    "missing""undefined"
    "bool""boolean"
    "int"|"long"|"double""number"
    "regex""regexp"
    | +| variables | `{}` | Global variables to pass to all operators | + +## Custom Operators + +Custom operators can be registered using a `Context` object via the `context` option which is the recommended way since `6.4.2`. `Context` provides a container for operators, that the execution engine will use to process queries. To register an operator globally, the [useOperators(...)](https://kofrasa.github.io/mingo/functions/core.useOperators.html) function is available. Globally registered operators cannot be overwritten whereas a new context may be created and used at anytime. + +**NB: Note that the execution engine will first try to find the operator in the context and fallback to the global context when not found if the `useGlobalContext` option is `true`.** + +Custom operators must conform to the signatures of their types. + +- [AccumulatorOperator](http://kofrasa.github.io/mingo/types/core.AccumulatorOperator.html) +- [ExpressionOperator](http://kofrasa.github.io/mingo/types/core.ExpressionOperator.html) +- [ProjectionOperator](http://kofrasa.github.io/mingo/types/core.ProjectionOperator.html) +- [PipelineOperator](http://kofrasa.github.io/mingo/types/core.PipelineOperator.html) +- [WindowOperator](http://kofrasa.github.io/mingo/types/core.WindowOperator.html) +- [QueryOperator](http://kofrasa.github.io/mingo/types/core.QueryOperator.html) + +To define custom operators, the following imports are useful. + +```js +const mingo = require("mingo") +const core = require("mingo/core"); +const util = require("mingo/util"); +``` + +### Custom Operator Examples +```js +// this example creates a query operator that checks is a value is between a boundary. +const $between = (selector, args, options) => { + return (obj) => { + const value = util.resolve(obj, selector, { unwrapArray: true }); + return value >= args[0] && value <= args[1]; + }; +} +// a test collection +const collection = [ + { a: 1, b: 1 }, + { a: 7, b: 1 }, + { a: 10, b: 6 }, + { a: 20, b: 10 } +]; +``` + +#### Register csutom operator using the context option. +The custom operator is registerd with a user-provided context object that is passed an option to the query. The context will be searched for operators used in a query and fallback to the global context when not found. + +```ts +const context = core.Context.init().addQueryOps({ $between }) +// must specify context option to make operator available +const result = mingo.find(collection, { a: { $between: [5, 10] } }, {}, { context }).all() +console.log(result) // output => [ { a: 7, b: 1 }, { a: 10, b: 6 } ] +``` + +#### Register custom operator globally using useOperators. + +The custom operator is registered to be available globally. + +```ts +// register the operator for global use. +try { + core.useOperators("query", { $between }) +} catch { + // error thrown if an operator with name "$between" is already registered. +} +// query with new operator +const result = mingo.find(collection, { a: { $between: [5, 10] }}).all() +console.log(result) // output => [ { a: 7, b: 1 }, { a: 10, b: 6 } ] +``` + +## Updating Documents + +An update operation can be performed using the `update` function from the `mingo/updater` module. Unlike other operations in the library, this only works on a single object. +The query and aggregation operators are powerful enough to use for transforming arrays of documents and should be preferred when dealing with multiple objects. +`update` returns an array of all paths that were updated. It also supports [arrayFilters](https://www.mongodb.com/docs/manual/release-notes/3.6/#std-label-3.6-arrayFilters) for applicable operators. To detect whether a change occured you can check the length of the returned array. + +All operators as of MongoDB 5.0 are supported except the positional array operator `$`. + +### Examples + +```ts +import { update } from "mingo"; +// all update operators are automatically loaded. + +const obj = { + firstName: "John", + lastName: "Wick", + age: 40, + friends: ["Scooby", "Shagy", "Fred"] +}; + +// returns array of modified paths if value changed. +update(obj, { $set: { firstName: "Bob", lastName: "Doe" } }); // ["firstName", "lastName"] + +// update nested values. +update(obj, { $pop: { friends: 1 } }); // ["friends"] => friends: ["Scooby", "Shagy"] +// update nested value path +update(obj, { $unset: { "friends.1": "" } }); // ["friends.1"] => friends: ["Scooby", null] +// update with condition +update(obj, { $set: { "friends.$[e]": "Velma" } }, [{ e: null }]); // ["friends"] => friends: ["Scooby", "Velma"] +// empty array returned if value has not changed. +update(obj, { $set: { fristName: "Bob" } }); // [] => no change to object. +``` + +You can also create a preconfigured updater function. + +```ts +import { createUpdater } from "mingo/updater"; + +// configure updater to deep clone passed values. clone mode defaults to "copy". +const updateState = createUpdater({ cloneMode: "deep" }); + +const state = { people: ["Fred", "John"] }; +const newPeople = ["Amy", "Mark"]; + +console.log(state.people); // ["Fred", "John"] + +updateState(state, { $set: { people: newPeople } }); + +newPeople.push("Jason"); + +console.log(state.people); // ["Amy", "Mark"] +console.log(newPeople); // ["Amy", "Mark", "Jason"] +``` + +## Differences from MongoDB + +Below is a description of how this library differs from the full MongoDB query engine. + +1. There is no concept of a collection. Input is an array, generator or iterable of objects. +1. Support a single numeric type `number`. +1. Does not support [types](https://www.mongodb.com/docs/manual/reference/operator/aggregation/type/#available-types) `"minKey"`, `"maxKey"`, `"timestamp"`, or `"binData"`. +1. Does not support server specific operators. E.g. `$collStat`, `$planCacheStats`, `$listSessions`. +1. Does not support geometry query operators. +1. Does not support query operators dependent on persistent storage; `$comment`, `$meta`, `$text`. +1. Does not support positional query or update operator `$`. +1. Does not support server specific expression operators; `$toObjectId`, `$binarySize`, `bsonSize`. +1. Aggregation pipeline operator `$merge` enforces unique constraint on the lookup field during input processing. +1. Custom function evaluation operators; `$where`, `$function`, and `$accumulator`, do not accept strings as the function body. +1. Custom function evaluation operators are enabled by default. They can be disabled with the `scriptEnabled` option. +1. Custom function evaluation operator [$accumulator](https://docs.mongodb.com/manual/reference/operator/aggregation/accumulator/) does not support the `merge` option. +1. The `$jsonSchema` operator requires the user to register their own validator using the `jsonSchemaValidator` configuration. + +## Benefits + +- Declarative data driven API. +- Usable on both frontend and backend. +- Provides an alternative to writing custom code for transforming objects. +- Validate MongoDB queries without running a server. +- Well documented. MongoDB query language is among the best available and has great documentation. + +## Contributing + +- Squash changes into one commit. +- Run `npm test` to build and run unit tests. +- Submit pull request. + +To validate correct behaviour and semantics of operators, you may also test against [mongoplayground.net](https://mongoplayground.net/). Credit to the author _[@feliix](https://github.com/feliixx)_. + +A big thank you to all users and [CONTRIBUTORS](https://github.com/kofrasa/mingo/graphs/contributors) of this library. + +## License + +MIT diff --git a/node_modules/mingo/aggregator/package.json b/node_modules/mingo/aggregator/package.json new file mode 100644 index 0000000..2bfe27e --- /dev/null +++ b/node_modules/mingo/aggregator/package.json @@ -0,0 +1,6 @@ +{ + "main": "../dist/cjs/aggregator.js", + "module": "../dist/esm/aggregator.js", + "types": "../dist/types/aggregator.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/core/package.json b/node_modules/mingo/core/package.json new file mode 100644 index 0000000..f676c67 --- /dev/null +++ b/node_modules/mingo/core/package.json @@ -0,0 +1,6 @@ +{ + "main": "../dist/cjs/core.js", + "module": "../dist/esm/core.js", + "types": "../dist/types/core.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/cursor/package.json b/node_modules/mingo/cursor/package.json new file mode 100644 index 0000000..128066d --- /dev/null +++ b/node_modules/mingo/cursor/package.json @@ -0,0 +1,6 @@ +{ + "main": "../dist/cjs/cursor.js", + "module": "../dist/esm/cursor.js", + "types": "../dist/types/cursor.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/dist/cjs/aggregator.js b/node_modules/mingo/dist/cjs/aggregator.js new file mode 100644 index 0000000..5765e7c --- /dev/null +++ b/node_modules/mingo/dist/cjs/aggregator.js @@ -0,0 +1,73 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var aggregator_exports = {}; +__export(aggregator_exports, { + Aggregator: () => Aggregator +}); +module.exports = __toCommonJS(aggregator_exports); +var import_core = require("./core"); +var import_lazy = require("./lazy"); +var import_util = require("./util"); +class Aggregator { + #pipeline; + #options; + constructor(pipeline, options) { + this.#pipeline = pipeline; + this.#options = (0, import_core.initOptions)(options); + } + /** + * Returns an {@link Iterator} for lazy evaluation of the pipeline. + * + * @param collection An array or iterator object + * @returns {Iterator} an iterator object + */ + stream(collection, options) { + let iter = (0, import_lazy.Lazy)(collection); + const opts = options ?? this.#options; + const mode = opts.processingMode; + if (mode & import_core.ProcessingMode.CLONE_INPUT) iter.map(import_util.cloneDeep); + const stages = new Array(); + if (!(0, import_util.isEmpty)(this.#pipeline)) { + for (const opExpr of this.#pipeline) { + const opKeys = Object.keys(opExpr); + const opName = opKeys[0]; + const call = (0, import_core.getOperator)("pipeline", opName, opts); + (0, import_util.assert)( + opKeys.length === 1 && !!call, + `invalid pipeline operator ${opName}` + ); + stages.push(opName); + iter = call(iter, opExpr[opName], opts); + } + } + if (mode & import_core.ProcessingMode.CLONE_OUTPUT) iter.map(import_util.cloneDeep); + return iter; + } + /** + * Return the results of the aggregation as an array. + * + * @param collection + */ + run(collection, options) { + return this.stream(collection, options).value(); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + Aggregator +}); diff --git a/node_modules/mingo/dist/cjs/core.js b/node_modules/mingo/dist/cjs/core.js new file mode 100644 index 0000000..18cf02e --- /dev/null +++ b/node_modules/mingo/dist/cjs/core.js @@ -0,0 +1,363 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var core_exports = {}; +__export(core_exports, { + ComputeOptions: () => ComputeOptions, + Context: () => Context, + OperatorType: () => OperatorType, + ProcessingMode: () => ProcessingMode, + computeValue: () => computeValue, + getOperator: () => getOperator, + initOptions: () => initOptions, + redact: () => redact, + useOperators: () => useOperators +}); +module.exports = __toCommonJS(core_exports); +var import_util = require("./util"); +var ProcessingMode = /* @__PURE__ */ ((ProcessingMode2) => { + ProcessingMode2[ProcessingMode2["CLONE_OFF"] = 0] = "CLONE_OFF"; + ProcessingMode2[ProcessingMode2["CLONE_INPUT"] = 1] = "CLONE_INPUT"; + ProcessingMode2[ProcessingMode2["CLONE_OUTPUT"] = 2] = "CLONE_OUTPUT"; + ProcessingMode2[ProcessingMode2["CLONE_ALL"] = 3] = "CLONE_ALL"; + return ProcessingMode2; +})(ProcessingMode || {}); +class ComputeOptions { + #options; + /** Reference to the root object when processing subgraphs of the object. */ + #root; + #local; + constructor(options, root, local) { + this.#options = options; + this.update(root, local); + } + /** + * Initialize new ComputeOptions. + * @returns {ComputeOptions} + */ + static init(options, root, local) { + return !(options instanceof ComputeOptions) ? new ComputeOptions(options, root, local) : new ComputeOptions(options.#options, options.root ?? root, { + ...options.#local, + ...local, + variables: Object.assign( + {}, + options.#local?.variables, + local?.variables + ) + }); + } + /** + * Updates the internal state. + * + * @param root The new root context for this object. + * @param local The new local state to merge into current if it exists. + * @returns + */ + update(root, local) { + this.#root = root; + const variables = Object.assign( + {}, + this.#local?.variables, + local?.variables + ); + if (Object.keys(variables).length) { + this.#local = { ...local, variables }; + } else { + this.#local = local ?? {}; + } + return this; + } + getOptions() { + return Object.freeze({ + ...this.#options, + context: Context.from(this.#options.context) + }); + } + get root() { + return this.#root; + } + get local() { + return this.#local; + } + get idKey() { + return this.#options.idKey; + } + get collation() { + return this.#options?.collation; + } + get processingMode() { + return this.#options?.processingMode || 0 /* CLONE_OFF */; + } + get useStrictMode() { + return this.#options?.useStrictMode; + } + get scriptEnabled() { + return this.#options?.scriptEnabled; + } + get useGlobalContext() { + return this.#options?.useGlobalContext; + } + get hashFunction() { + return this.#options?.hashFunction; + } + get collectionResolver() { + return this.#options?.collectionResolver; + } + get jsonSchemaValidator() { + return this.#options?.jsonSchemaValidator; + } + get variables() { + return this.#options?.variables; + } + get context() { + return this.#options?.context; + } +} +function initOptions(options) { + return options instanceof ComputeOptions ? options.getOptions() : Object.freeze({ + idKey: "_id", + scriptEnabled: true, + useStrictMode: true, + useGlobalContext: true, + processingMode: 0 /* CLONE_OFF */, + ...options, + context: options?.context ? Context.from(options?.context) : Context.init() + }); +} +var OperatorType = /* @__PURE__ */ ((OperatorType2) => { + OperatorType2["ACCUMULATOR"] = "accumulator"; + OperatorType2["EXPRESSION"] = "expression"; + OperatorType2["PIPELINE"] = "pipeline"; + OperatorType2["PROJECTION"] = "projection"; + OperatorType2["QUERY"] = "query"; + OperatorType2["WINDOW"] = "window"; + return OperatorType2; +})(OperatorType || {}); +class Context { + #operators = /* @__PURE__ */ new Map(); + constructor() { + } + static init() { + return new Context(); + } + static from(ctx) { + const instance = Context.init(); + if ((0, import_util.isNil)(ctx)) return instance; + ctx.#operators.forEach((v, k) => instance.addOperators(k, v)); + return instance; + } + addOperators(type, operators) { + if (!this.#operators.has(type)) this.#operators.set(type, {}); + for (const [name, fn] of Object.entries(operators)) { + if (!this.getOperator(type, name)) { + this.#operators.get(type)[name] = fn; + } + } + return this; + } + getOperator(type, name) { + const ops = this.#operators.get(type) ?? {}; + return ops[name] ?? null; + } + addAccumulatorOps(ops) { + return this.addOperators("accumulator", ops); + } + addExpressionOps(ops) { + return this.addOperators("expression", ops); + } + addQueryOps(ops) { + return this.addOperators("query", ops); + } + addPipelineOps(ops) { + return this.addOperators("pipeline", ops); + } + addProjectionOps(ops) { + return this.addOperators("projection", ops); + } + addWindowOps(ops) { + return this.addOperators("window", ops); + } +} +const GLOBAL_CONTEXT = Context.init(); +function useOperators(type, operators) { + for (const [name, fn] of Object.entries(operators)) { + (0, import_util.assert)( + (0, import_util.isFunction)(fn) && (0, import_util.isOperator)(name), + `'${name}' is not a valid operator` + ); + const currentFn = getOperator(type, name, null); + (0, import_util.assert)( + !currentFn || fn === currentFn, + `${name} already exists for '${type}' operators. Cannot change operator function once registered.` + ); + } + switch (type) { + case "accumulator": + GLOBAL_CONTEXT.addAccumulatorOps(operators); + break; + case "expression": + GLOBAL_CONTEXT.addExpressionOps(operators); + break; + case "pipeline": + GLOBAL_CONTEXT.addPipelineOps(operators); + break; + case "projection": + GLOBAL_CONTEXT.addProjectionOps(operators); + break; + case "query": + GLOBAL_CONTEXT.addQueryOps(operators); + break; + case "window": + GLOBAL_CONTEXT.addWindowOps(operators); + break; + } +} +function getOperator(type, name, options) { + const { context: ctx, useGlobalContext: fallback } = options || {}; + const fn = ctx ? ctx.getOperator(type, name) : null; + return !fn && fallback ? GLOBAL_CONTEXT.getOperator(type, name) : fn; +} +function computeValue(obj, expr, operator, options) { + const copts = ComputeOptions.init(options, obj); + return !!operator && (0, import_util.isOperator)(operator) ? computeOperator(obj, expr, operator, copts) : computeExpression(obj, expr, copts); +} +const SYSTEM_VARS = ["$$ROOT", "$$CURRENT", "$$REMOVE", "$$NOW"]; +function computeExpression(obj, expr, options) { + if ((0, import_util.isString)(expr) && expr.length > 0 && expr[0] === "$") { + if (REDACT_ACTIONS.includes(expr)) return expr; + let ctx = options.root; + const arr = expr.split("."); + if (SYSTEM_VARS.includes(arr[0])) { + switch (arr[0]) { + case "$$ROOT": + break; + case "$$CURRENT": + ctx = obj; + break; + case "$$REMOVE": + ctx = void 0; + break; + case "$$NOW": + ctx = /* @__PURE__ */ new Date(); + break; + } + expr = expr.slice(arr[0].length + 1); + } else if (arr[0].slice(0, 2) === "$$") { + ctx = Object.assign( + {}, + // global vars + options.variables, + // current item is added before local variables because the binding may be changed. + { this: obj }, + // local vars + options?.local?.variables + ); + const name = arr[0].slice(2); + (0, import_util.assert)((0, import_util.has)(ctx, name), `Use of undefined variable: ${name}`); + expr = expr.slice(2); + } else { + expr = expr.slice(1); + } + return expr === "" ? ctx : (0, import_util.resolve)(ctx, expr); + } + if ((0, import_util.isArray)(expr)) { + return expr.map((item) => computeExpression(obj, item, options)); + } + if ((0, import_util.isObject)(expr)) { + const result = {}; + const elems = Object.entries(expr); + for (const [key, val] of elems) { + if ((0, import_util.isOperator)(key)) { + (0, import_util.assert)(elems.length == 1, "expression must have single operator."); + return computeOperator(obj, val, key, options); + } + result[key] = computeExpression(obj, val, options); + } + return result; + } + return expr; +} +function computeOperator(obj, expr, operator, options) { + const callExpression = getOperator( + "expression", + operator, + options + ); + if (callExpression) return callExpression(obj, expr, options); + const callAccumulator = getOperator( + "accumulator", + operator, + options + ); + (0, import_util.assert)(!!callAccumulator, `accumulator '${operator}' is not registered.`); + if (!(0, import_util.isArray)(obj)) { + obj = computeExpression(obj, expr, options); + expr = null; + } + (0, import_util.assert)((0, import_util.isArray)(obj), `arguments must resolve to array for ${operator}.`); + return callAccumulator(obj, expr, options); +} +const REDACT_ACTIONS = ["$$KEEP", "$$PRUNE", "$$DESCEND"]; +function redact(obj, expr, options) { + const action = computeValue(obj, expr, null, options); + switch (action) { + case "$$KEEP": + return obj; + case "$$PRUNE": + return void 0; + case "$$DESCEND": { + if (!(0, import_util.has)(expr, "$cond")) return obj; + const output = {}; + for (const [key, value] of Object.entries(obj)) { + if ((0, import_util.isArray)(value)) { + const res = new Array(); + for (let elem of value) { + if ((0, import_util.isObject)(elem)) { + elem = redact(elem, expr, options.update(elem)); + } + if (!(0, import_util.isNil)(elem)) res.push(elem); + } + output[key] = res; + } else if ((0, import_util.isObject)(value)) { + const res = redact( + value, + expr, + options.update(value) + ); + if (!(0, import_util.isNil)(res)) output[key] = res; + } else { + output[key] = value; + } + } + return output; + } + default: + return action; + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ComputeOptions, + Context, + OperatorType, + ProcessingMode, + computeValue, + getOperator, + initOptions, + redact, + useOperators +}); diff --git a/node_modules/mingo/dist/cjs/cursor.js b/node_modules/mingo/dist/cjs/cursor.js new file mode 100644 index 0000000..4c9fe0a --- /dev/null +++ b/node_modules/mingo/dist/cjs/cursor.js @@ -0,0 +1,166 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var cursor_exports = {}; +__export(cursor_exports, { + Cursor: () => Cursor +}); +module.exports = __toCommonJS(cursor_exports); +var import_core = require("./core"); +var import_lazy = require("./lazy"); +var import_limit = require("./operators/pipeline/limit"); +var import_project = require("./operators/pipeline/project"); +var import_skip = require("./operators/pipeline/skip"); +var import_sort = require("./operators/pipeline/sort"); +var import_util = require("./util"); +const OPERATORS = { $sort: import_sort.$sort, $skip: import_skip.$skip, $limit: import_limit.$limit }; +class Cursor { + #source; + #predicate; + #projection; + #options; + #operators = {}; + #result = null; + #buffer = []; + constructor(source, predicate, projection, options) { + this.#source = source; + this.#predicate = predicate; + this.#projection = projection; + this.#options = options; + } + /** Returns the iterator from running the query */ + fetch() { + if (this.#result) return this.#result; + this.#result = (0, import_lazy.Lazy)(this.#source).filter(this.#predicate); + const mode = this.#options.processingMode; + if (mode & import_core.ProcessingMode.CLONE_INPUT) this.#result.map(import_util.cloneDeep); + for (const op of ["$sort", "$skip", "$limit"]) { + if ((0, import_util.has)(this.#operators, op)) { + this.#result = OPERATORS[op]( + this.#result, + this.#operators[op], + this.#options + ); + } + } + if (Object.keys(this.#projection).length) { + this.#result = (0, import_project.$project)(this.#result, this.#projection, this.#options); + } + if (mode & import_core.ProcessingMode.CLONE_OUTPUT) this.#result.map(import_util.cloneDeep); + return this.#result; + } + /** Returns an iterator with the buffered data included */ + fetchAll() { + const buffered = (0, import_lazy.Lazy)([...this.#buffer]); + this.#buffer = []; + return (0, import_lazy.concat)(buffered, this.fetch()); + } + /** + * Return remaining objects in the cursor as an array. This method exhausts the cursor + * @returns {Array} + */ + all() { + return this.fetchAll().value(); + } + /** + * Returns the number of objects return in the cursor. This method exhausts the cursor + * @returns {Number} + */ + count() { + return this.all().length; + } + /** + * Returns a cursor that begins returning results only after passing or skipping a number of documents. + * @param {Number} n the number of results to skip. + * @return {Cursor} Returns the cursor, so you can chain this call. + */ + skip(n) { + this.#operators["$skip"] = n; + return this; + } + /** + * Constrains the size of a cursor's result set. + * @param {Number} n the number of results to limit to. + * @return {Cursor} Returns the cursor, so you can chain this call. + */ + limit(n) { + this.#operators["$limit"] = n; + return this; + } + /** + * Returns results ordered according to a sort specification. + * @param {AnyObject} modifier an object of key and values specifying the sort order. 1 for ascending and -1 for descending + * @return {Cursor} Returns the cursor, so you can chain this call. + */ + sort(modifier) { + this.#operators["$sort"] = modifier; + return this; + } + /** + * Specifies the collation for the cursor returned by the `mingo.Query.find` + * @param {*} spec + */ + collation(spec) { + this.#options = { ...this.#options, collation: spec }; + return this; + } + /** + * Returns the next document in a cursor. + * @returns {AnyObject | Boolean} + */ + next() { + if (this.#buffer.length > 0) { + return this.#buffer.pop(); + } + const o = this.fetch().next(); + if (o.done) return; + return o.value; + } + /** + * Returns true if the cursor has documents and can be iterated. + * @returns {boolean} + */ + hasNext() { + if (this.#buffer.length > 0) return true; + const o = this.fetch().next(); + if (o.done) return false; + this.#buffer.push(o.value); + return true; + } + /** + * Applies a function to each document in a cursor and collects the return values in an array. + * @param fn + * @returns {Array} + */ + map(fn) { + return this.all().map(fn); + } + /** + * Applies a JavaScript function for every document in a cursor. + * @param fn + */ + forEach(fn) { + this.all().forEach(fn); + } + [Symbol.iterator]() { + return this.fetchAll(); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + Cursor +}); diff --git a/node_modules/mingo/dist/cjs/index.js b/node_modules/mingo/dist/cjs/index.js new file mode 100644 index 0000000..ac348f6 --- /dev/null +++ b/node_modules/mingo/dist/cjs/index.js @@ -0,0 +1,64 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var index_exports = {}; +__export(index_exports, { + Aggregator: () => import_aggregator2.Aggregator, + Query: () => import_query2.Query, + aggregate: () => aggregate, + createUpdater: () => import_updater2.createUpdater, + default: () => index_default, + find: () => find, + remove: () => remove, + update: () => import_updater2.update +}); +module.exports = __toCommonJS(index_exports); +var import_basic = require("./init/basic"); +var import_aggregator = require("./aggregator"); +var import_query = require("./query"); +var import_updater = require("./updater"); +var import_aggregator2 = require("./aggregator"); +var import_query2 = require("./query"); +var import_updater2 = require("./updater"); +function find(collection, criteria, projection, options) { + return new import_query.Query(criteria, options).find(collection, projection); +} +function remove(collection, criteria, options) { + return new import_query.Query(criteria, options).remove(collection); +} +function aggregate(collection, pipeline, options) { + return new import_aggregator.Aggregator(pipeline, options).run(collection); +} +var index_default = { + Aggregator: import_aggregator.Aggregator, + Query: import_query.Query, + aggregate, + createUpdater: import_updater.createUpdater, + find, + remove, + update: import_updater.update +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + Aggregator, + Query, + aggregate, + createUpdater, + find, + remove, + update +}); diff --git a/node_modules/mingo/dist/cjs/init/basic.js b/node_modules/mingo/dist/cjs/init/basic.js new file mode 100644 index 0000000..3a63be6 --- /dev/null +++ b/node_modules/mingo/dist/cjs/init/basic.js @@ -0,0 +1,40 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var import_core = require("../core"); +var booleanOperators = __toESM(require("../operators/expression/boolean")); +var comparisonOperators = __toESM(require("../operators/expression/comparison")); +var import_pipeline = require("../operators/pipeline"); +var projectionOperators = __toESM(require("../operators/projection")); +var queryOperators = __toESM(require("../operators/query")); +(0, import_core.useOperators)("expression", { + ...booleanOperators, + ...comparisonOperators +}); +(0, import_core.useOperators)("pipeline", { + $project: import_pipeline.$project, + $skip: import_pipeline.$skip, + $limit: import_pipeline.$limit, + $sort: import_pipeline.$sort +}); +(0, import_core.useOperators)("projection", projectionOperators); +(0, import_core.useOperators)("query", queryOperators); diff --git a/node_modules/mingo/dist/cjs/init/system.js b/node_modules/mingo/dist/cjs/init/system.js new file mode 100644 index 0000000..f8df58b --- /dev/null +++ b/node_modules/mingo/dist/cjs/init/system.js @@ -0,0 +1,35 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var import_core = require("../core"); +var accumulatorOperators = __toESM(require("../operators/accumulator")); +var expressionOperators = __toESM(require("../operators/expression")); +var pipelineOperators = __toESM(require("../operators/pipeline")); +var projectionOperators = __toESM(require("../operators/projection")); +var queryOperators = __toESM(require("../operators/query")); +var windowOperators = __toESM(require("../operators/window")); +(0, import_core.useOperators)("accumulator", accumulatorOperators); +(0, import_core.useOperators)("expression", expressionOperators); +(0, import_core.useOperators)("pipeline", pipelineOperators); +(0, import_core.useOperators)("projection", projectionOperators); +(0, import_core.useOperators)("query", queryOperators); +(0, import_core.useOperators)("window", windowOperators); diff --git a/node_modules/mingo/dist/cjs/lazy.js b/node_modules/mingo/dist/cjs/lazy.js new file mode 100644 index 0000000..377dd25 --- /dev/null +++ b/node_modules/mingo/dist/cjs/lazy.js @@ -0,0 +1,269 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var lazy_exports = {}; +__export(lazy_exports, { + Iterator: () => Iterator, + Lazy: () => Lazy, + concat: () => concat +}); +module.exports = __toCommonJS(lazy_exports); +var import_util = require("./util"); +function Lazy(source) { + return source instanceof Iterator ? source : new Iterator(source); +} +function concat(...iterators) { + let index = 0; + return Lazy(() => { + while (index < iterators.length) { + const o = iterators[index].next(); + if (!o.done) return o; + index++; + } + return { done: true }; + }); +} +function isGenerator(o) { + return !!o && typeof o === "object" && o?.next instanceof Function; +} +function dropItem(array, i) { + const rest = array.slice(i + 1); + array.splice(i); + Array.prototype.push.apply(array, rest); +} +const DONE = new Error(); +var Action = /* @__PURE__ */ ((Action2) => { + Action2[Action2["MAP"] = 0] = "MAP"; + Action2[Action2["FILTER"] = 1] = "FILTER"; + Action2[Action2["TAKE"] = 2] = "TAKE"; + Action2[Action2["DROP"] = 3] = "DROP"; + return Action2; +})(Action || {}); +function createCallback(nextFn, iteratees, buffer) { + let done = false; + let index = -1; + let bufferIndex = 0; + return function(storeResult) { + try { + outer: while (!done) { + let o = nextFn(); + index++; + let i = -1; + const size = iteratees.length; + let innerDone = false; + while (++i < size) { + const r = iteratees[i]; + switch (r.action) { + case 0 /* MAP */: + o = r.func(o, index); + break; + case 1 /* FILTER */: + if (!r.func(o, index)) continue outer; + break; + case 2 /* TAKE */: + --r.count; + if (!r.count) innerDone = true; + break; + case 3 /* DROP */: + --r.count; + if (!r.count) dropItem(iteratees, i); + continue outer; + default: + break outer; + } + } + done = innerDone; + if (storeResult) { + buffer[bufferIndex++] = o; + } else { + return { value: o, done: false }; + } + } + } catch (e) { + if (e !== DONE) throw e; + } + done = true; + return { done }; + }; +} +class Iterator { + /** + * @param {*} source An iterable object or function. + * Array - return one element per cycle + * Object{next:Function} - call next() for the next value (this also handles generator functions) + * Function - call to return the next value + * @param {Function} fn An optional transformation function + */ + constructor(source) { + this.#iteratees = []; + this.#yieldedValues = []; + this.isDone = false; + let nextVal; + if (source instanceof Function) { + source = { next: source }; + } + if (isGenerator(source)) { + const src = source; + nextVal = () => { + const o = src.next(); + if (o.done) throw DONE; + return o.value; + }; + } else if ((0, import_util.isArray)(source)) { + const data = source; + const size = data.length; + let index = 0; + nextVal = () => { + if (index < size) return data[index++]; + throw DONE; + }; + } else if (!(source instanceof Function)) { + throw new import_util.MingoError( + `Lazy must be initialized with an array, generator, or function.` + ); + } + this.#getNext = createCallback( + nextVal, + this.#iteratees, + this.#yieldedValues + ); + } + #iteratees; + #yieldedValues; + #getNext; + /** + * Add an iteratee to this lazy sequence + */ + push(action, value) { + if (typeof value === "function") { + this.#iteratees.push({ action, func: value }); + } else if (typeof value === "number") { + this.#iteratees.push({ action, count: value }); + } + return this; + } + next() { + return this.#getNext(); + } + // Iteratees methods + /** + * Transform each item in the sequence to a new value + * @param {Function} f + */ + map(f) { + return this.push(0 /* MAP */, f); + } + /** + * Select only items matching the given predicate + * @param {Function} pred + */ + filter(predicate) { + return this.push(1 /* FILTER */, predicate); + } + /** + * Take given numbe for values from sequence + * @param {Number} n A number greater than 0 + */ + take(n) { + return n > 0 ? this.push(2 /* TAKE */, n) : this; + } + /** + * Drop a number of values from the sequence + * @param {Number} n Number of items to drop greater than 0 + */ + drop(n) { + return n > 0 ? this.push(3 /* DROP */, n) : this; + } + // Transformations + /** + * Returns a new lazy object with results of the transformation + * The entire sequence is realized. + * + * @param {Callback} fn Tranform function of type (Array) => (Any) + */ + transform(fn) { + const self = this; + let iter; + return Lazy(() => { + if (!iter) { + iter = Lazy(fn(self.value())); + } + return iter.next(); + }); + } + // Terminal methods + /** + * Returns the fully realized values of the iterators. + * The return value will be an array unless `lazy.first()` was used. + * The realized values are cached for subsequent calls. + */ + value() { + if (!this.isDone) { + this.isDone = this.#getNext(true).done; + } + return this.#yieldedValues; + } + /** + * Execute the funcion for each value. Will stop when an execution returns false. + * @param {Function} f + * @returns {Boolean} false iff `f` return false for AnyVal execution, otherwise true + */ + each(f) { + for (; ; ) { + const o = this.next(); + if (o.done) break; + if (f(o.value) === false) return false; + } + return true; + } + /** + * Returns the reduction of sequence according the reducing function + * + * @param {*} f a reducing function + * @param {*} initialValue + */ + reduce(f, initialValue) { + let o = this.next(); + if (initialValue === void 0 && !o.done) { + initialValue = o.value; + o = this.next(); + } + while (!o.done) { + initialValue = f(initialValue, o.value); + o = this.next(); + } + return initialValue; + } + /** + * Returns the number of matched items in the sequence + */ + size() { + return this.reduce( + (acc, _) => ++acc, + 0 + ); + } + [Symbol.iterator]() { + return this; + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + Iterator, + Lazy, + concat +}); diff --git a/node_modules/mingo/dist/cjs/operators/_predicates.js b/node_modules/mingo/dist/cjs/operators/_predicates.js new file mode 100644 index 0000000..8ab4a8b --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/_predicates.js @@ -0,0 +1,207 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var predicates_exports = {}; +__export(predicates_exports, { + $all: () => $all, + $elemMatch: () => $elemMatch, + $eq: () => $eq, + $gt: () => $gt, + $gte: () => $gte, + $in: () => $in, + $lt: () => $lt, + $lte: () => $lte, + $mod: () => $mod, + $ne: () => $ne, + $nin: () => $nin, + $regex: () => $regex, + $size: () => $size, + $type: () => $type, + createExpressionOperator: () => createExpressionOperator, + createQueryOperator: () => createQueryOperator +}); +module.exports = __toCommonJS(predicates_exports); +var import_core = require("../core"); +var import_query = require("../query"); +var import_util = require("../util"); +function createQueryOperator(predicate) { + const f = (selector, value, options) => { + const opts = { unwrapArray: true }; + const depth = Math.max(1, selector.split(".").length - 1); + return (obj) => { + const lhs = (0, import_util.resolve)(obj, selector, opts); + return predicate(lhs, value, { ...options, depth }); + }; + }; + return f; +} +function createExpressionOperator(predicate) { + return (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + return predicate(...args); + }; +} +function $eq(a, b, options) { + if ((0, import_util.isEqual)(a, b)) return true; + if ((0, import_util.isNil)(a) && (0, import_util.isNil)(b)) return true; + if ((0, import_util.isArray)(a)) { + return a.some((v) => (0, import_util.isEqual)(v, b)) || (0, import_util.flatten)(a, options?.depth).some((v) => (0, import_util.isEqual)(v, b)); + } + return false; +} +function $ne(a, b, options) { + return !$eq(a, b, options); +} +function $in(a, b, options) { + if ((0, import_util.isNil)(a)) return b.some((v) => v === null); + return (0, import_util.intersection)([(0, import_util.ensureArray)(a), b], options?.hashFunction).length > 0; +} +function $nin(a, b, options) { + return !$in(a, b, options); +} +function $lt(a, b, _options) { + return compare(a, b, (x, y) => (0, import_util.compare)(x, y) < 0); +} +function $lte(a, b, _options) { + return compare(a, b, (x, y) => (0, import_util.compare)(x, y) <= 0); +} +function $gt(a, b, _options) { + return compare(a, b, (x, y) => (0, import_util.compare)(x, y) > 0); +} +function $gte(a, b, _options) { + return compare(a, b, (x, y) => (0, import_util.compare)(x, y) >= 0); +} +function $mod(a, b, _options) { + return (0, import_util.ensureArray)(a).some( + (x) => b.length === 2 && x % b[0] === b[1] + ); +} +function $regex(a, b, options) { + const lhs = (0, import_util.ensureArray)(a); + const match = (x) => (0, import_util.isString)(x) && (0, import_util.truthy)(b.exec(x), options?.useStrictMode); + return lhs.some(match) || (0, import_util.flatten)(lhs, 1).some(match); +} +function $all(values, queries, options) { + if (!(0, import_util.isArray)(values) || !(0, import_util.isArray)(queries) || !values.length || !queries.length) { + return false; + } + let matched = true; + for (const query of queries) { + if (!matched) break; + if ((0, import_util.isObject)(query) && Object.keys(query).includes("$elemMatch")) { + matched = $elemMatch(values, query["$elemMatch"], options); + } else if ((0, import_util.isRegExp)(query)) { + matched = values.some((s) => typeof s === "string" && query.test(s)); + } else { + matched = values.some((v) => (0, import_util.isEqual)(query, v)); + } + } + return matched; +} +function $size(a, b, _options) { + return Array.isArray(a) && a.length === b; +} +function isNonBooleanOperator(name) { + return (0, import_util.isOperator)(name) && ["$and", "$or", "$nor"].indexOf(name) === -1; +} +function $elemMatch(a, b, options) { + if ((0, import_util.isArray)(a) && !(0, import_util.isEmpty)(a)) { + let format = (x) => x; + let criteria = b; + if (Object.keys(b).every(isNonBooleanOperator)) { + criteria = { temp: b }; + format = (x) => ({ temp: x }); + } + const query = new import_query.Query(criteria, options); + for (let i = 0, len = a.length; i < len; i++) { + if (query.test(format(a[i]))) { + return true; + } + } + } + return false; +} +const isNull = (a) => a === null; +const compareFuncs = { + array: import_util.isArray, + boolean: import_util.isBoolean, + bool: import_util.isBoolean, + date: import_util.isDate, + number: import_util.isNumber, + int: import_util.isNumber, + long: import_util.isNumber, + double: import_util.isNumber, + decimal: import_util.isNumber, + null: isNull, + object: import_util.isObject, + regexp: import_util.isRegExp, + regex: import_util.isRegExp, + string: import_util.isString, + // added for completeness + undefined: import_util.isNil, + // deprecated + function: (_) => { + throw new import_util.MingoError("unsupported type key `function`."); + }, + // Mongo identifiers + 1: import_util.isNumber, + //double + 2: import_util.isString, + 3: import_util.isObject, + 4: import_util.isArray, + 6: import_util.isNil, + // deprecated + 8: import_util.isBoolean, + 9: import_util.isDate, + 10: isNull, + 11: import_util.isRegExp, + 16: import_util.isNumber, + //int + 18: import_util.isNumber, + //long + 19: import_util.isNumber + //decimal +}; +function compareType(a, b, _) { + const f = compareFuncs[b]; + return f ? f(a) : false; +} +function $type(a, b, options) { + return (0, import_util.isArray)(b) ? b.findIndex((t) => compareType(a, t, options)) >= 0 : compareType(a, b, options); +} +function compare(a, b, f) { + return (0, import_util.ensureArray)(a).some((x) => (0, import_util.typeOf)(x) === (0, import_util.typeOf)(b) && f(x, b)); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $all, + $elemMatch, + $eq, + $gt, + $gte, + $in, + $lt, + $lte, + $mod, + $ne, + $nin, + $regex, + $size, + $type, + createExpressionOperator, + createQueryOperator +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/_internal.js b/node_modules/mingo/dist/cjs/operators/accumulator/_internal.js new file mode 100644 index 0000000..62968b0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/_internal.js @@ -0,0 +1,53 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var internal_exports = {}; +__export(internal_exports, { + covariance: () => covariance, + stddev: () => stddev +}); +module.exports = __toCommonJS(internal_exports); +function stddev(data, sampled = true) { + const sum = data.reduce((acc, n) => acc + n, 0); + const N = data.length || 1; + const avg = sum / N; + return Math.sqrt( + data.reduce((acc, n) => acc + Math.pow(n - avg, 2), 0) / (N - Number(sampled)) + ); +} +function covariance(dataset, sampled = true) { + if (!dataset) return null; + if (dataset.length < 2) return sampled ? null : 0; + let meanX = 0; + let meanY = 0; + for (const [x, y] of dataset) { + meanX += x; + meanY += y; + } + meanX /= dataset.length; + meanY /= dataset.length; + let result = 0; + for (const [x, y] of dataset) { + result += (x - meanX) * (y - meanY); + } + return result / (dataset.length - Number(sampled)); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + covariance, + stddev +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/accumulator.js b/node_modules/mingo/dist/cjs/operators/accumulator/accumulator.js new file mode 100644 index 0000000..3c398d3 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/accumulator.js @@ -0,0 +1,53 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var accumulator_exports = {}; +__export(accumulator_exports, { + $accumulator: () => $accumulator +}); +module.exports = __toCommonJS(accumulator_exports); +var import_core = require("../../core"); +var import_util = require("../../util"); +const $accumulator = (collection, expr, options) => { + (0, import_util.assert)( + !!options && options.scriptEnabled, + "$accumulator operator requires 'scriptEnabled' option to be true" + ); + if (collection.length == 0) return expr.initArgs; + const copts = import_core.ComputeOptions.init(options); + const initArgs = (0, import_core.computeValue)( + {}, + expr.initArgs || [], + null, + copts.update(copts?.local?.groupId || {}) + ); + let state = expr.init.call(null, ...initArgs); + for (const doc of collection) { + const args = (0, import_core.computeValue)( + doc, + expr.accumulateArgs, + null, + copts.update(doc) + ); + state = expr.accumulate.call(null, ...[state, ...args]); + } + return expr.finalize ? expr.finalize.call(null, state) : state; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $accumulator +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/addToSet.js b/node_modules/mingo/dist/cjs/operators/accumulator/addToSet.js new file mode 100644 index 0000000..3287c50 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/addToSet.js @@ -0,0 +1,34 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var addToSet_exports = {}; +__export(addToSet_exports, { + $addToSet: () => $addToSet +}); +module.exports = __toCommonJS(addToSet_exports); +var import_util = require("../../util"); +var import_push = require("./push"); +const $addToSet = (collection, expr, options) => { + return (0, import_util.unique)( + (0, import_push.$push)(collection, expr, options), + options?.hashFunction + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $addToSet +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/avg.js b/node_modules/mingo/dist/cjs/operators/accumulator/avg.js new file mode 100644 index 0000000..f3b5025 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/avg.js @@ -0,0 +1,33 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var avg_exports = {}; +__export(avg_exports, { + $avg: () => $avg +}); +module.exports = __toCommonJS(avg_exports); +var import_util = require("../../util"); +var import_push = require("./push"); +const $avg = (collection, expr, options) => { + const data = (0, import_push.$push)(collection, expr, options).filter(import_util.isNumber); + const sum = data.reduce((acc, n) => acc + n, 0); + return sum / (data.length || 1); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $avg +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/bottom.js b/node_modules/mingo/dist/cjs/operators/accumulator/bottom.js new file mode 100644 index 0000000..fa1cc16 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/bottom.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bottom_exports = {}; +__export(bottom_exports, { + $bottom: () => $bottom +}); +module.exports = __toCommonJS(bottom_exports); +var import_bottomN = require("./bottomN"); +const $bottom = (collection, expr, options) => (0, import_bottomN.$bottomN)(collection, { ...expr, n: 1 }, options); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $bottom +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/bottomN.js b/node_modules/mingo/dist/cjs/operators/accumulator/bottomN.js new file mode 100644 index 0000000..7c951bf --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/bottomN.js @@ -0,0 +1,43 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bottomN_exports = {}; +__export(bottomN_exports, { + $bottomN: () => $bottomN +}); +module.exports = __toCommonJS(bottomN_exports); +var import_core = require("../../core"); +var import_lazy = require("../../lazy"); +var import_sort = require("../pipeline/sort"); +var import_push = require("./push"); +const $bottomN = (collection, expr, options) => { + const copts = import_core.ComputeOptions.init(options); + const { n, sortBy } = (0, import_core.computeValue)( + copts.local.groupId, + expr, + null, + copts + ); + const result = (0, import_sort.$sort)((0, import_lazy.Lazy)(collection), sortBy, options).value(); + const m = result.length; + const p = n; + return (0, import_push.$push)(m <= p ? result : result.slice(m - p), expr.output, copts); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $bottomN +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/count.js b/node_modules/mingo/dist/cjs/operators/accumulator/count.js new file mode 100644 index 0000000..0e3ac41 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/count.js @@ -0,0 +1,27 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var count_exports = {}; +__export(count_exports, { + $count: () => $count +}); +module.exports = __toCommonJS(count_exports); +const $count = (collection, _expr, _options) => collection.length; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $count +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/covariancePop.js b/node_modules/mingo/dist/cjs/operators/accumulator/covariancePop.js new file mode 100644 index 0000000..cb08e26 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/covariancePop.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var covariancePop_exports = {}; +__export(covariancePop_exports, { + $covariancePop: () => $covariancePop +}); +module.exports = __toCommonJS(covariancePop_exports); +var import_internal = require("./_internal"); +var import_push = require("./push"); +const $covariancePop = (collection, expr, options) => (0, import_internal.covariance)((0, import_push.$push)(collection, expr, options), false); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $covariancePop +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/covarianceSamp.js b/node_modules/mingo/dist/cjs/operators/accumulator/covarianceSamp.js new file mode 100644 index 0000000..1d17898 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/covarianceSamp.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var covarianceSamp_exports = {}; +__export(covarianceSamp_exports, { + $covarianceSamp: () => $covarianceSamp +}); +module.exports = __toCommonJS(covarianceSamp_exports); +var import_internal = require("./_internal"); +var import_push = require("./push"); +const $covarianceSamp = (collection, expr, options) => (0, import_internal.covariance)((0, import_push.$push)(collection, expr, options), true); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $covarianceSamp +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/first.js b/node_modules/mingo/dist/cjs/operators/accumulator/first.js new file mode 100644 index 0000000..b70bed0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/first.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var first_exports = {}; +__export(first_exports, { + $first: () => $first +}); +module.exports = __toCommonJS(first_exports); +var import_core = require("../../core"); +const $first = (collection, expr, options) => { + if (collection.length === 0) return void 0; + const copts = import_core.ComputeOptions.init(options).update(collection[0]); + return (0, import_core.computeValue)(collection[0], expr, null, copts); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $first +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/firstN.js b/node_modules/mingo/dist/cjs/operators/accumulator/firstN.js new file mode 100644 index 0000000..99fd6e0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/firstN.js @@ -0,0 +1,38 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var firstN_exports = {}; +__export(firstN_exports, { + $firstN: () => $firstN +}); +module.exports = __toCommonJS(firstN_exports); +var import_core = require("../../core"); +var import_push = require("./push"); +const $firstN = (collection, expr, options) => { + const copts = import_core.ComputeOptions.init(options); + const m = collection.length; + const n = (0, import_core.computeValue)(copts?.local?.groupId, expr.n, null, copts); + return (0, import_push.$push)( + m <= n ? collection : collection.slice(0, n), + expr.input, + options + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $firstN +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/index.js b/node_modules/mingo/dist/cjs/operators/accumulator/index.js new file mode 100644 index 0000000..6fb47cd --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/index.js @@ -0,0 +1,69 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var accumulator_exports = {}; +module.exports = __toCommonJS(accumulator_exports); +__reExport(accumulator_exports, require("./accumulator"), module.exports); +__reExport(accumulator_exports, require("./addToSet"), module.exports); +__reExport(accumulator_exports, require("./avg"), module.exports); +__reExport(accumulator_exports, require("./bottom"), module.exports); +__reExport(accumulator_exports, require("./bottomN"), module.exports); +__reExport(accumulator_exports, require("./count"), module.exports); +__reExport(accumulator_exports, require("./covariancePop"), module.exports); +__reExport(accumulator_exports, require("./covarianceSamp"), module.exports); +__reExport(accumulator_exports, require("./first"), module.exports); +__reExport(accumulator_exports, require("./firstN"), module.exports); +__reExport(accumulator_exports, require("./last"), module.exports); +__reExport(accumulator_exports, require("./lastN"), module.exports); +__reExport(accumulator_exports, require("./max"), module.exports); +__reExport(accumulator_exports, require("./maxN"), module.exports); +__reExport(accumulator_exports, require("./median"), module.exports); +__reExport(accumulator_exports, require("./mergeObjects"), module.exports); +__reExport(accumulator_exports, require("./min"), module.exports); +__reExport(accumulator_exports, require("./minN"), module.exports); +__reExport(accumulator_exports, require("./percentile"), module.exports); +__reExport(accumulator_exports, require("./push"), module.exports); +__reExport(accumulator_exports, require("./stdDevPop"), module.exports); +__reExport(accumulator_exports, require("./stdDevSamp"), module.exports); +__reExport(accumulator_exports, require("./sum"), module.exports); +__reExport(accumulator_exports, require("./top"), module.exports); +__reExport(accumulator_exports, require("./topN"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./accumulator"), + ...require("./addToSet"), + ...require("./avg"), + ...require("./bottom"), + ...require("./bottomN"), + ...require("./count"), + ...require("./covariancePop"), + ...require("./covarianceSamp"), + ...require("./first"), + ...require("./firstN"), + ...require("./last"), + ...require("./lastN"), + ...require("./max"), + ...require("./maxN"), + ...require("./median"), + ...require("./mergeObjects"), + ...require("./min"), + ...require("./minN"), + ...require("./percentile"), + ...require("./push"), + ...require("./stdDevPop"), + ...require("./stdDevSamp"), + ...require("./sum"), + ...require("./top"), + ...require("./topN") +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/last.js b/node_modules/mingo/dist/cjs/operators/accumulator/last.js new file mode 100644 index 0000000..5e562ea --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/last.js @@ -0,0 +1,33 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var last_exports = {}; +__export(last_exports, { + $last: () => $last +}); +module.exports = __toCommonJS(last_exports); +var import_core = require("../../core"); +const $last = (collection, expr, options) => { + if (collection.length === 0) return void 0; + const obj = collection[collection.length - 1]; + const copts = import_core.ComputeOptions.init(options).update(obj); + return (0, import_core.computeValue)(obj, expr, null, copts); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $last +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/lastN.js b/node_modules/mingo/dist/cjs/operators/accumulator/lastN.js new file mode 100644 index 0000000..cd508f2 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/lastN.js @@ -0,0 +1,38 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var lastN_exports = {}; +__export(lastN_exports, { + $lastN: () => $lastN +}); +module.exports = __toCommonJS(lastN_exports); +var import_core = require("../../core"); +var import_push = require("./push"); +const $lastN = (collection, expr, options) => { + const copts = import_core.ComputeOptions.init(options); + const m = collection.length; + const n = (0, import_core.computeValue)(copts?.local?.groupId, expr.n, null, copts); + return (0, import_push.$push)( + m <= n ? collection : collection.slice(m - n), + expr.input, + options + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $lastN +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/max.js b/node_modules/mingo/dist/cjs/operators/accumulator/max.js new file mode 100644 index 0000000..bb22fa0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/max.js @@ -0,0 +1,39 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var max_exports = {}; +__export(max_exports, { + $max: () => $max +}); +module.exports = __toCommonJS(max_exports); +var import_util = require("../../util"); +var import_push = require("./push"); +const $max = (collection, expr, options) => { + const items = (0, import_push.$push)(collection, expr, options); + if ((0, import_util.isEmpty)(items)) return null; + (0, import_util.assert)((0, import_util.isArray)(items), "$max: input must resolve to array"); + let max = items[0]; + for (const n of items) { + if ((0, import_util.isNil)(n) || isNaN(n)) continue; + if ((0, import_util.compare)(n, max) >= 0) max = n; + } + return max; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $max +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/maxN.js b/node_modules/mingo/dist/cjs/operators/accumulator/maxN.js new file mode 100644 index 0000000..c103a5b --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/maxN.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var maxN_exports = {}; +__export(maxN_exports, { + $maxN: () => $maxN +}); +module.exports = __toCommonJS(maxN_exports); +var import_core = require("../../core"); +var import_util = require("../../util"); +var import_push = require("./push"); +const $maxN = (collection, expr, options) => { + const copts = import_core.ComputeOptions.init(options); + const m = collection.length; + const n = (0, import_core.computeValue)(copts?.local?.groupId, expr.n, null, copts); + const arr = (0, import_push.$push)(collection, expr.input, options).filter((o) => !(0, import_util.isNil)(o)); + arr.sort((a, b) => -1 * (0, import_util.compare)(a, b)); + return m <= n ? arr : arr.slice(0, n); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $maxN +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/median.js b/node_modules/mingo/dist/cjs/operators/accumulator/median.js new file mode 100644 index 0000000..c6e8457 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/median.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var median_exports = {}; +__export(median_exports, { + $median: () => $median +}); +module.exports = __toCommonJS(median_exports); +var import_percentile = require("./percentile"); +const $median = (collection, expr, options) => (0, import_percentile.$percentile)(collection, { ...expr, p: [0.5] }, options).pop(); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $median +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/mergeObjects.js b/node_modules/mingo/dist/cjs/operators/accumulator/mergeObjects.js new file mode 100644 index 0000000..f0f3808 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/mergeObjects.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var mergeObjects_exports = {}; +__export(mergeObjects_exports, { + $mergeObjects: () => $mergeObjects +}); +module.exports = __toCommonJS(mergeObjects_exports); +var import_core = require("../../core"); +var import_mergeObjects = require("../expression/object/mergeObjects"); +const $mergeObjects = (collection, expr, options) => { + const arr = (0, import_core.computeValue)(collection, expr, null, options); + return (0, import_mergeObjects.$mergeObjects)(null, arr, options); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $mergeObjects +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/min.js b/node_modules/mingo/dist/cjs/operators/accumulator/min.js new file mode 100644 index 0000000..3502b77 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/min.js @@ -0,0 +1,39 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var min_exports = {}; +__export(min_exports, { + $min: () => $min +}); +module.exports = __toCommonJS(min_exports); +var import_util = require("../../util"); +var import_push = require("./push"); +const $min = (collection, expr, options) => { + const items = (0, import_push.$push)(collection, expr, options); + if ((0, import_util.isEmpty)(items)) return null; + (0, import_util.assert)((0, import_util.isArray)(items), "$min: input must resolve to array"); + let min = items[0]; + for (const n of items) { + if ((0, import_util.isNil)(n) || isNaN(n)) continue; + if ((0, import_util.compare)(n, min) <= 0) min = n; + } + return min; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $min +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/minN.js b/node_modules/mingo/dist/cjs/operators/accumulator/minN.js new file mode 100644 index 0000000..13f8ae9 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/minN.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var minN_exports = {}; +__export(minN_exports, { + $minN: () => $minN +}); +module.exports = __toCommonJS(minN_exports); +var import_core = require("../../core"); +var import_util = require("../../util"); +var import_push = require("./push"); +const $minN = (collection, expr, options) => { + const copts = import_core.ComputeOptions.init(options); + const m = collection.length; + const n = (0, import_core.computeValue)(copts?.local?.groupId, expr.n, null, copts); + const arr = (0, import_push.$push)(collection, expr.input, options).filter((o) => !(0, import_util.isNil)(o)); + arr.sort(import_util.compare); + return m <= n ? arr : arr.slice(0, n); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $minN +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/percentile.js b/node_modules/mingo/dist/cjs/operators/accumulator/percentile.js new file mode 100644 index 0000000..0ceed07 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/percentile.js @@ -0,0 +1,50 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var percentile_exports = {}; +__export(percentile_exports, { + $percentile: () => $percentile +}); +module.exports = __toCommonJS(percentile_exports); +var import_util = require("../../util"); +var import_push = require("./push"); +const $percentile = (collection, expr, options) => { + const X = (0, import_push.$push)(collection, expr.input, options).filter(import_util.isNumber).sort(); + const centiles = (0, import_push.$push)(expr.p, "$$CURRENT", options).filter(import_util.isNumber); + const method = expr.method || "approximate"; + return centiles.map((p) => { + (0, import_util.assert)( + p > 0 && p <= 1, + `percentile value must be between 0 (exclusive) and 1 (inclusive): invalid '${p}'.` + ); + const r = p * (X.length - 1) + 1; + const ri = Math.floor(r); + const result = r === ri ? X[r - 1] : X[ri - 1] + r % 1 * (X[ri] - X[ri - 1] || 0); + switch (method) { + case "exact": + return result; + case "approximate": { + const i = (0, import_util.findInsertIndex)(X, result); + return i / X.length >= p ? X[Math.max(i - 1, 0)] : X[i]; + } + } + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $percentile +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/push.js b/node_modules/mingo/dist/cjs/operators/accumulator/push.js new file mode 100644 index 0000000..7b8a0d2 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/push.js @@ -0,0 +1,35 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var push_exports = {}; +__export(push_exports, { + $push: () => $push +}); +module.exports = __toCommonJS(push_exports); +var import_core = require("../../core"); +var import_util = require("../../util"); +const $push = (collection, expr, options) => { + if ((0, import_util.isNil)(expr)) return collection; + const copts = import_core.ComputeOptions.init(options); + return collection.map( + (obj) => (0, import_core.computeValue)(obj, expr, null, copts.update(obj)) + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $push +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/stdDevPop.js b/node_modules/mingo/dist/cjs/operators/accumulator/stdDevPop.js new file mode 100644 index 0000000..e55daa7 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/stdDevPop.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var stdDevPop_exports = {}; +__export(stdDevPop_exports, { + $stdDevPop: () => $stdDevPop +}); +module.exports = __toCommonJS(stdDevPop_exports); +var import_util = require("../../util"); +var import_internal = require("./_internal"); +var import_push = require("./push"); +const $stdDevPop = (collection, expr, options) => (0, import_internal.stddev)((0, import_push.$push)(collection, expr, options).filter(import_util.isNumber), false); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $stdDevPop +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/stdDevSamp.js b/node_modules/mingo/dist/cjs/operators/accumulator/stdDevSamp.js new file mode 100644 index 0000000..ecd2153 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/stdDevSamp.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var stdDevSamp_exports = {}; +__export(stdDevSamp_exports, { + $stdDevSamp: () => $stdDevSamp +}); +module.exports = __toCommonJS(stdDevSamp_exports); +var import_util = require("../../util"); +var import_internal = require("./_internal"); +var import_push = require("./push"); +const $stdDevSamp = (collection, expr, options) => (0, import_internal.stddev)((0, import_push.$push)(collection, expr, options).filter(import_util.isNumber), true); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $stdDevSamp +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/sum.js b/node_modules/mingo/dist/cjs/operators/accumulator/sum.js new file mode 100644 index 0000000..c870b3a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/sum.js @@ -0,0 +1,34 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var sum_exports = {}; +__export(sum_exports, { + $sum: () => $sum +}); +module.exports = __toCommonJS(sum_exports); +var import_util = require("../../util"); +var import_push = require("./push"); +const $sum = (collection, expr, options) => { + if (!(0, import_util.isArray)(collection)) return 0; + if ((0, import_util.isNumber)(expr)) return collection.length * expr; + const nums = (0, import_push.$push)(collection, expr, options).filter(import_util.isNumber); + return nums.reduce((acc, n) => acc + n, 0); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $sum +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/top.js b/node_modules/mingo/dist/cjs/operators/accumulator/top.js new file mode 100644 index 0000000..c0321d6 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/top.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var top_exports = {}; +__export(top_exports, { + $top: () => $top +}); +module.exports = __toCommonJS(top_exports); +var import_topN = require("./topN"); +const $top = (collection, expr, options) => (0, import_topN.$topN)(collection, { ...expr, n: 1 }, options); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $top +}); diff --git a/node_modules/mingo/dist/cjs/operators/accumulator/topN.js b/node_modules/mingo/dist/cjs/operators/accumulator/topN.js new file mode 100644 index 0000000..3411425 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/accumulator/topN.js @@ -0,0 +1,41 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var topN_exports = {}; +__export(topN_exports, { + $topN: () => $topN +}); +module.exports = __toCommonJS(topN_exports); +var import_core = require("../../core"); +var import_lazy = require("../../lazy"); +var import_sort = require("../pipeline/sort"); +var import_push = require("./push"); +const $topN = (collection, expr, options) => { + const copts = import_core.ComputeOptions.init(options); + const { n, sortBy } = (0, import_core.computeValue)( + copts.local.groupId, + expr, + null, + copts + ); + const result = (0, import_sort.$sort)((0, import_lazy.Lazy)(collection), sortBy, options).take(n).value(); + return (0, import_push.$push)(result, expr.output, copts); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $topN +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/_internal.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/_internal.js new file mode 100644 index 0000000..2a688e8 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/_internal.js @@ -0,0 +1,59 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var internal_exports = {}; +__export(internal_exports, { + truncate: () => truncate +}); +module.exports = __toCommonJS(internal_exports); +function truncate(num, places = 0, roundOff = false) { + const sign = Math.abs(num) === num ? 1 : -1; + num = Math.abs(num); + let result = Math.trunc(num); + const decimals = parseFloat((num - result).toFixed(places + 1)); + if (places === 0) { + const firstDigit = Math.trunc(10 * decimals); + if (roundOff && ((result & 1) === 1 && firstDigit >= 5 || firstDigit > 5)) { + result++; + } + } else if (places > 0) { + const offset = Math.pow(10, places); + let remainder = Math.trunc(decimals * offset); + const lastDigit = Math.trunc(decimals * offset * 10) % 10; + if (roundOff && lastDigit > 5) { + remainder += 1; + } + result = (result * offset + remainder) / offset; + } else if (places < 0) { + const offset = Math.pow(10, -1 * places); + let excess = result % offset; + result = Math.max(0, result - excess); + if (roundOff && sign === -1) { + while (excess > 10) { + excess -= excess % 10; + } + if (result > 0 && excess >= 5) { + result += offset; + } + } + } + return result * sign; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + truncate +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/abs.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/abs.js new file mode 100644 index 0000000..d7566ab --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/abs.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var abs_exports = {}; +__export(abs_exports, { + $abs: () => $abs +}); +module.exports = __toCommonJS(abs_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $abs = (obj, expr, options) => { + const n = (0, import_core.computeValue)(obj, expr, null, options); + return (0, import_util.isNil)(n) ? null : Math.abs(n); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $abs +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/add.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/add.js new file mode 100644 index 0000000..deb6f20 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/add.js @@ -0,0 +1,41 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var add_exports = {}; +__export(add_exports, { + $add: () => $add +}); +module.exports = __toCommonJS(add_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $add = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + let hasDate = false; + let sum = 0; + for (const n of args) { + if ((0, import_util.isDate)(n)) { + (0, import_util.assert)(!hasDate, "'$add' can only have one date value"); + hasDate = true; + } + sum += +n; + } + return hasDate ? new Date(sum) : sum; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $add +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/ceil.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/ceil.js new file mode 100644 index 0000000..2b049b2 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/ceil.js @@ -0,0 +1,34 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var ceil_exports = {}; +__export(ceil_exports, { + $ceil: () => $ceil +}); +module.exports = __toCommonJS(ceil_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $ceil = (obj, expr, options) => { + const n = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(n)) return null; + (0, import_util.assert)((0, import_util.isNumber)(n) || isNaN(n), "$ceil expression must resolve to a number."); + return Math.ceil(n); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $ceil +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/divide.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/divide.js new file mode 100644 index 0000000..36a2d80 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/divide.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var divide_exports = {}; +__export(divide_exports, { + $divide: () => $divide +}); +module.exports = __toCommonJS(divide_exports); +var import_core = require("../../../core"); +const $divide = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + return args[0] / args[1]; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $divide +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/exp.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/exp.js new file mode 100644 index 0000000..7ea000c --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/exp.js @@ -0,0 +1,34 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var exp_exports = {}; +__export(exp_exports, { + $exp: () => $exp +}); +module.exports = __toCommonJS(exp_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $exp = (obj, expr, options) => { + const n = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(n)) return null; + (0, import_util.assert)((0, import_util.isNumber)(n) || isNaN(n), "$exp expression must resolve to a number."); + return Math.exp(n); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $exp +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/floor.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/floor.js new file mode 100644 index 0000000..3d6271e --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/floor.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var floor_exports = {}; +__export(floor_exports, { + $floor: () => $floor +}); +module.exports = __toCommonJS(floor_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $floor = (obj, expr, options) => { + const n = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(n)) return null; + (0, import_util.assert)( + (0, import_util.isNumber)(n) || isNaN(n), + "$floor expression must resolve to a number." + ); + return Math.floor(n); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $floor +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/index.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/index.js new file mode 100644 index 0000000..42a8adb --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/index.js @@ -0,0 +1,51 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var arithmetic_exports = {}; +module.exports = __toCommonJS(arithmetic_exports); +__reExport(arithmetic_exports, require("./abs"), module.exports); +__reExport(arithmetic_exports, require("./add"), module.exports); +__reExport(arithmetic_exports, require("./ceil"), module.exports); +__reExport(arithmetic_exports, require("./divide"), module.exports); +__reExport(arithmetic_exports, require("./exp"), module.exports); +__reExport(arithmetic_exports, require("./floor"), module.exports); +__reExport(arithmetic_exports, require("./ln"), module.exports); +__reExport(arithmetic_exports, require("./log"), module.exports); +__reExport(arithmetic_exports, require("./log10"), module.exports); +__reExport(arithmetic_exports, require("./mod"), module.exports); +__reExport(arithmetic_exports, require("./multiply"), module.exports); +__reExport(arithmetic_exports, require("./pow"), module.exports); +__reExport(arithmetic_exports, require("./round"), module.exports); +__reExport(arithmetic_exports, require("./sqrt"), module.exports); +__reExport(arithmetic_exports, require("./subtract"), module.exports); +__reExport(arithmetic_exports, require("./trunc"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./abs"), + ...require("./add"), + ...require("./ceil"), + ...require("./divide"), + ...require("./exp"), + ...require("./floor"), + ...require("./ln"), + ...require("./log"), + ...require("./log10"), + ...require("./mod"), + ...require("./multiply"), + ...require("./pow"), + ...require("./round"), + ...require("./sqrt"), + ...require("./subtract"), + ...require("./trunc") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/ln.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/ln.js new file mode 100644 index 0000000..a90dd62 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/ln.js @@ -0,0 +1,34 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var ln_exports = {}; +__export(ln_exports, { + $ln: () => $ln +}); +module.exports = __toCommonJS(ln_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $ln = (obj, expr, options) => { + const n = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(n)) return null; + (0, import_util.assert)((0, import_util.isNumber)(n) || isNaN(n), "$ln expression must resolve to a number."); + return Math.log(n); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $ln +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/log.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/log.js new file mode 100644 index 0000000..6c74d53 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/log.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var log_exports = {}; +__export(log_exports, { + $log: () => $log +}); +module.exports = __toCommonJS(log_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $log = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + const msg = "$log expression must resolve to array(2) of numbers"; + (0, import_util.assert)((0, import_util.isArray)(args) && args.length === 2, msg); + if (args.some(import_util.isNil)) return null; + (0, import_util.assert)(args.some(isNaN) || args.every(import_util.isNumber), msg); + return Math.log10(args[0]) / Math.log10(args[1]); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $log +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/log10.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/log10.js new file mode 100644 index 0000000..c13016f --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/log10.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var log10_exports = {}; +__export(log10_exports, { + $log10: () => $log10 +}); +module.exports = __toCommonJS(log10_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $log10 = (obj, expr, options) => { + const n = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(n)) return null; + (0, import_util.assert)( + (0, import_util.isNumber)(n) || isNaN(n), + "$log10 expression must resolve to a number." + ); + return Math.log10(n); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $log10 +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/mod.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/mod.js new file mode 100644 index 0000000..cbed5aa --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/mod.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var mod_exports = {}; +__export(mod_exports, { + $mod: () => $mod +}); +module.exports = __toCommonJS(mod_exports); +var import_core = require("../../../core"); +const $mod = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + return args[0] % args[1]; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $mod +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/multiply.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/multiply.js new file mode 100644 index 0000000..2eff665 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/multiply.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var multiply_exports = {}; +__export(multiply_exports, { + $multiply: () => $multiply +}); +module.exports = __toCommonJS(multiply_exports); +var import_core = require("../../../core"); +const $multiply = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + return args.reduce((acc, num) => acc * num, 1); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $multiply +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/pow.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/pow.js new file mode 100644 index 0000000..18d8b3e --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/pow.js @@ -0,0 +1,40 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var pow_exports = {}; +__export(pow_exports, { + $pow: () => $pow +}); +module.exports = __toCommonJS(pow_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $pow = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + (0, import_util.assert)( + (0, import_util.isArray)(args) && args.length === 2 && args.every(import_util.isNumber), + "$pow expression must resolve to array(2) of numbers" + ); + (0, import_util.assert)( + !(args[0] === 0 && args[1] < 0), + "$pow cannot raise 0 to a negative exponent" + ); + return Math.pow(args[0], args[1]); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $pow +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/round.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/round.js new file mode 100644 index 0000000..626db7a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/round.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var round_exports = {}; +__export(round_exports, { + $round: () => $round +}); +module.exports = __toCommonJS(round_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_internal = require("./_internal"); +const $round = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + const num = args[0]; + const place = args[1]; + if ((0, import_util.isNil)(num) || isNaN(num) || Math.abs(num) === Infinity) return num; + (0, import_util.assert)((0, import_util.isNumber)(num), "$round expression must resolve to a number."); + return (0, import_internal.truncate)(num, place, true); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $round +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/sqrt.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/sqrt.js new file mode 100644 index 0000000..da091af --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/sqrt.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var sqrt_exports = {}; +__export(sqrt_exports, { + $sqrt: () => $sqrt +}); +module.exports = __toCommonJS(sqrt_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $sqrt = (obj, expr, options) => { + const n = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(n)) return null; + (0, import_util.assert)( + (0, import_util.isNumber)(n) && n > 0 || isNaN(n), + "$sqrt expression must resolve to non-negative number." + ); + return Math.sqrt(n); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $sqrt +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/subtract.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/subtract.js new file mode 100644 index 0000000..b46bbd0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/subtract.js @@ -0,0 +1,34 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var subtract_exports = {}; +__export(subtract_exports, { + $subtract: () => $subtract +}); +module.exports = __toCommonJS(subtract_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $subtract = (obj, expr, options) => { + const [a, b] = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNumber)(a) && (0, import_util.isNumber)(b) || (0, import_util.isDate)(a) && (0, import_util.isDate)(b)) return +a - +b; + if ((0, import_util.isDate)(a) && (0, import_util.isNumber)(b)) return new Date(+a - b); + (0, import_util.assert)(false, "$subtract: must resolve to number/date."); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $subtract +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/arithmetic/trunc.js b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/trunc.js new file mode 100644 index 0000000..addf12b --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/arithmetic/trunc.js @@ -0,0 +1,41 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var trunc_exports = {}; +__export(trunc_exports, { + $trunc: () => $trunc +}); +module.exports = __toCommonJS(trunc_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_internal = require("./_internal"); +const $trunc = (obj, expr, options) => { + const arr = (0, import_core.computeValue)(obj, expr, null, options); + const num = arr[0]; + const places = arr[1]; + if ((0, import_util.isNil)(num) || isNaN(num) || Math.abs(num) === Infinity) return num; + (0, import_util.assert)((0, import_util.isNumber)(num), "$trunc expression must resolve to a number."); + (0, import_util.assert)( + (0, import_util.isNil)(places) || (0, import_util.isNumber)(places) && places > -20 && places < 100, + "$trunc expression has invalid place" + ); + return (0, import_internal.truncate)(num, places, false); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $trunc +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/arrayElemAt.js b/node_modules/mingo/dist/cjs/operators/expression/array/arrayElemAt.js new file mode 100644 index 0000000..2c76f4b --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/arrayElemAt.js @@ -0,0 +1,44 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var arrayElemAt_exports = {}; +__export(arrayElemAt_exports, { + $arrayElemAt: () => $arrayElemAt +}); +module.exports = __toCommonJS(arrayElemAt_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $arrayElemAt = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + (0, import_util.assert)( + (0, import_util.isArray)(args) && args.length === 2, + "$arrayElemAt expression must resolve to array(2)" + ); + if (args.some(import_util.isNil)) return null; + const index = args[1]; + const arr = args[0]; + if (index < 0 && Math.abs(index) <= arr.length) { + return arr[(index + arr.length) % arr.length]; + } else if (index >= 0 && index < arr.length) { + return arr[index]; + } + return void 0; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $arrayElemAt +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/arrayToObject.js b/node_modules/mingo/dist/cjs/operators/expression/array/arrayToObject.js new file mode 100644 index 0000000..91e43f1 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/arrayToObject.js @@ -0,0 +1,46 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var arrayToObject_exports = {}; +__export(arrayToObject_exports, { + $arrayToObject: () => $arrayToObject +}); +module.exports = __toCommonJS(arrayToObject_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $arrayToObject = (obj, expr, options) => { + const arr = (0, import_core.computeValue)(obj, expr, null, options); + (0, import_util.assert)((0, import_util.isArray)(arr), "$arrayToObject: expression must resolve to an array"); + return arr.reduce((newObj, val) => { + while ((0, import_util.isArray)(val) && val.length === 1) val = val[0]; + if ((0, import_util.isArray)(val) && val.length == 2) { + newObj[val[0]] = val[1]; + } else { + const valObj = val; + (0, import_util.assert)( + (0, import_util.isObject)(valObj) && (0, import_util.has)(valObj, "k") && (0, import_util.has)(valObj, "v"), + "$arrayToObject expression is invalid." + ); + newObj[valObj.k] = valObj.v; + } + return newObj; + }, {}); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $arrayToObject +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/concatArrays.js b/node_modules/mingo/dist/cjs/operators/expression/array/concatArrays.js new file mode 100644 index 0000000..39799ea --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/concatArrays.js @@ -0,0 +1,41 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var concatArrays_exports = {}; +__export(concatArrays_exports, { + $concatArrays: () => $concatArrays +}); +module.exports = __toCommonJS(concatArrays_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $concatArrays = (obj, expr, options) => { + const nArray = (0, import_core.computeValue)(obj, expr, null, options); + (0, import_util.assert)((0, import_util.isArray)(nArray), "$concatArrays: input must resolve to an array"); + let size = 0; + for (const arr of nArray) { + if ((0, import_util.isNil)(arr)) return null; + size += arr.length; + } + const result = new Array(size); + let i = 0; + for (const arr of nArray) for (const item of arr) result[i++] = item; + return result; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $concatArrays +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/filter.js b/node_modules/mingo/dist/cjs/operators/expression/array/filter.js new file mode 100644 index 0000000..84be728 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/filter.js @@ -0,0 +1,48 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var filter_exports = {}; +__export(filter_exports, { + $filter: () => $filter +}); +module.exports = __toCommonJS(filter_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $filter = (obj, expr, options) => { + const input = (0, import_core.computeValue)(obj, expr.input, null, options); + if ((0, import_util.isNil)(input)) return null; + (0, import_util.assert)((0, import_util.isArray)(input), "$filter 'input' expression must resolve to an array"); + const copts = import_core.ComputeOptions.init(options, obj); + const k = expr.as || "this"; + const local = { + variables: { [k]: null } + }; + return input.filter((o) => { + local.variables[k] = o; + const b = (0, import_core.computeValue)( + obj, + expr.cond, + null, + copts.update(copts.root, local) + ); + return (0, import_util.truthy)(b, options.useStrictMode); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $filter +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/first.js b/node_modules/mingo/dist/cjs/operators/expression/array/first.js new file mode 100644 index 0000000..03acbbd --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/first.js @@ -0,0 +1,39 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var first_exports = {}; +__export(first_exports, { + $first: () => $first +}); +module.exports = __toCommonJS(first_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_first = require("../../accumulator/first"); +const $first = (obj, expr, options) => { + if ((0, import_util.isArray)(obj)) return (0, import_first.$first)(obj, expr, options); + const arr = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(arr)) return null; + (0, import_util.assert)( + (0, import_util.isArray)(arr) && arr.length > 0, + "$first must resolve to a non-empty array." + ); + return (0, import_util.flatten)(arr)[0]; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $first +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/firstN.js b/node_modules/mingo/dist/cjs/operators/expression/array/firstN.js new file mode 100644 index 0000000..09f1971 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/firstN.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var firstN_exports = {}; +__export(firstN_exports, { + $firstN: () => $firstN +}); +module.exports = __toCommonJS(firstN_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_firstN = require("../../accumulator/firstN"); +const $firstN = (obj, expr, options) => { + if ((0, import_util.isArray)(obj)) return (0, import_firstN.$firstN)(obj, expr, options); + const { input, n } = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(input)) return null; + (0, import_util.assert)((0, import_util.isArray)(input), "Must resolve to an array/null or missing"); + return (0, import_firstN.$firstN)(input, { n, input: "$$this" }, options); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $firstN +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/in.js b/node_modules/mingo/dist/cjs/operators/expression/array/in.js new file mode 100644 index 0000000..8689b20 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/in.js @@ -0,0 +1,33 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var in_exports = {}; +__export(in_exports, { + $in: () => $in +}); +module.exports = __toCommonJS(in_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $in = (obj, expr, options) => { + const [item, arr] = (0, import_core.computeValue)(obj, expr, null, options); + (0, import_util.assert)((0, import_util.isArray)(arr), "$in second argument must be an array"); + return arr.some((v) => (0, import_util.isEqual)(v, item)); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $in +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/index.js b/node_modules/mingo/dist/cjs/operators/expression/array/index.js new file mode 100644 index 0000000..514feec --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/index.js @@ -0,0 +1,63 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var array_exports = {}; +module.exports = __toCommonJS(array_exports); +__reExport(array_exports, require("./arrayElemAt"), module.exports); +__reExport(array_exports, require("./arrayToObject"), module.exports); +__reExport(array_exports, require("./concatArrays"), module.exports); +__reExport(array_exports, require("./filter"), module.exports); +__reExport(array_exports, require("./first"), module.exports); +__reExport(array_exports, require("./firstN"), module.exports); +__reExport(array_exports, require("./in"), module.exports); +__reExport(array_exports, require("./indexOfArray"), module.exports); +__reExport(array_exports, require("./isArray"), module.exports); +__reExport(array_exports, require("./last"), module.exports); +__reExport(array_exports, require("./lastN"), module.exports); +__reExport(array_exports, require("./map"), module.exports); +__reExport(array_exports, require("./maxN"), module.exports); +__reExport(array_exports, require("./minN"), module.exports); +__reExport(array_exports, require("./nin"), module.exports); +__reExport(array_exports, require("./range"), module.exports); +__reExport(array_exports, require("./reduce"), module.exports); +__reExport(array_exports, require("./reverseArray"), module.exports); +__reExport(array_exports, require("./size"), module.exports); +__reExport(array_exports, require("./slice"), module.exports); +__reExport(array_exports, require("./sortArray"), module.exports); +__reExport(array_exports, require("./zip"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./arrayElemAt"), + ...require("./arrayToObject"), + ...require("./concatArrays"), + ...require("./filter"), + ...require("./first"), + ...require("./firstN"), + ...require("./in"), + ...require("./indexOfArray"), + ...require("./isArray"), + ...require("./last"), + ...require("./lastN"), + ...require("./map"), + ...require("./maxN"), + ...require("./minN"), + ...require("./nin"), + ...require("./range"), + ...require("./reduce"), + ...require("./reverseArray"), + ...require("./size"), + ...require("./slice"), + ...require("./sortArray"), + ...require("./zip") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/indexOfArray.js b/node_modules/mingo/dist/cjs/operators/expression/array/indexOfArray.js new file mode 100644 index 0000000..4f86131 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/indexOfArray.js @@ -0,0 +1,51 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var indexOfArray_exports = {}; +__export(indexOfArray_exports, { + $indexOfArray: () => $indexOfArray +}); +module.exports = __toCommonJS(indexOfArray_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $indexOfArray = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(args)) return null; + let arr = args[0]; + const searchValue = args[1]; + if ((0, import_util.isNil)(arr)) return null; + (0, import_util.assert)((0, import_util.isArray)(arr), "$indexOfArray expression must resolve to an array."); + const start = args[2] || 0; + let end = args[3]; + if ((0, import_util.isNil)(end)) end = arr.length; + if (start > end) return -1; + (0, import_util.assert)(start >= 0 && end >= 0, "$indexOfArray expression is invalid"); + if (start > 0 || end < arr.length) { + arr = arr.slice(start, end); + } + let index = -1; + arr.some((v, i) => { + const b = (0, import_util.isEqual)(v, searchValue); + if (b) index = i; + return b; + }); + return index + start; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $indexOfArray +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/isArray.js b/node_modules/mingo/dist/cjs/operators/expression/array/isArray.js new file mode 100644 index 0000000..699b87e --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/isArray.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var isArray_exports = {}; +__export(isArray_exports, { + $isArray: () => $isArray +}); +module.exports = __toCommonJS(isArray_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $isArray = (obj, expr, options) => (0, import_util.isArray)((0, import_core.computeValue)(obj, expr[0], null, options)); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $isArray +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/last.js b/node_modules/mingo/dist/cjs/operators/expression/array/last.js new file mode 100644 index 0000000..decc3ae --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/last.js @@ -0,0 +1,39 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var last_exports = {}; +__export(last_exports, { + $last: () => $last +}); +module.exports = __toCommonJS(last_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_last = require("../../accumulator/last"); +const $last = (obj, expr, options) => { + if ((0, import_util.isArray)(obj)) return (0, import_last.$last)(obj, expr, options); + const arr = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(arr)) return null; + (0, import_util.assert)( + (0, import_util.isArray)(arr) && arr.length > 0, + "$last must resolve to a non-empty array." + ); + return (0, import_util.flatten)(arr)[arr.length - 1]; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $last +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/lastN.js b/node_modules/mingo/dist/cjs/operators/expression/array/lastN.js new file mode 100644 index 0000000..67e515e --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/lastN.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var lastN_exports = {}; +__export(lastN_exports, { + $lastN: () => $lastN +}); +module.exports = __toCommonJS(lastN_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_lastN = require("../../accumulator/lastN"); +const $lastN = (obj, expr, options) => { + if ((0, import_util.isArray)(obj)) return (0, import_lastN.$lastN)(obj, expr, options); + const { input, n } = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(input)) return null; + (0, import_util.assert)((0, import_util.isArray)(input), "Must resolve to an array/null or missing"); + return (0, import_lastN.$lastN)(input, { n, input: "$$this" }, options); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $lastN +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/map.js b/node_modules/mingo/dist/cjs/operators/expression/array/map.js new file mode 100644 index 0000000..894a483 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/map.js @@ -0,0 +1,45 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var map_exports = {}; +__export(map_exports, { + $map: () => $map +}); +module.exports = __toCommonJS(map_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $map = (obj, expr, options) => { + const input = (0, import_core.computeValue)(obj, expr.input, null, options); + if ((0, import_util.isNil)(input)) return null; + (0, import_util.assert)((0, import_util.isArray)(input), `$map 'input' expression must resolve to an array`); + const copts = import_core.ComputeOptions.init(options); + const k = expr.as || "this"; + return input.map((o) => { + return (0, import_core.computeValue)( + obj, + expr.in, + null, + copts.update(copts.root, { + variables: { [k]: o } + }) + ); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $map +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/maxN.js b/node_modules/mingo/dist/cjs/operators/expression/array/maxN.js new file mode 100644 index 0000000..f9af056 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/maxN.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var maxN_exports = {}; +__export(maxN_exports, { + $maxN: () => $maxN +}); +module.exports = __toCommonJS(maxN_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_maxN = require("../../accumulator/maxN"); +const $maxN = (obj, expr, options) => { + if ((0, import_util.isArray)(obj)) return (0, import_maxN.$maxN)(obj, expr, options); + const { input, n } = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(input)) return null; + (0, import_util.assert)((0, import_util.isArray)(input), "Must resolve to an array/null or missing"); + return (0, import_maxN.$maxN)(input, { n, input: "$$this" }, options); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $maxN +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/minN.js b/node_modules/mingo/dist/cjs/operators/expression/array/minN.js new file mode 100644 index 0000000..e27a24b --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/minN.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var minN_exports = {}; +__export(minN_exports, { + $minN: () => $minN +}); +module.exports = __toCommonJS(minN_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_minN = require("../../accumulator/minN"); +const $minN = (obj, expr, options) => { + if ((0, import_util.isArray)(obj)) return (0, import_minN.$minN)(obj, expr, options); + const { input, n } = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(input)) return null; + (0, import_util.assert)((0, import_util.isArray)(input), "Must resolve to an array/null or missing"); + return (0, import_minN.$minN)(input, { n, input: "$$this" }, options); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $minN +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/nin.js b/node_modules/mingo/dist/cjs/operators/expression/array/nin.js new file mode 100644 index 0000000..8b0d72c --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/nin.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var nin_exports = {}; +__export(nin_exports, { + $nin: () => $nin +}); +module.exports = __toCommonJS(nin_exports); +var import_predicates = require("../../_predicates"); +const $nin = (0, import_predicates.createExpressionOperator)(import_predicates.$nin); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $nin +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/range.js b/node_modules/mingo/dist/cjs/operators/expression/array/range.js new file mode 100644 index 0000000..d57fef1 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/range.js @@ -0,0 +1,40 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var range_exports = {}; +__export(range_exports, { + $range: () => $range +}); +module.exports = __toCommonJS(range_exports); +var import_core = require("../../../core"); +const $range = (obj, expr, options) => { + const arr = (0, import_core.computeValue)(obj, expr, null, options); + const start = arr[0]; + const end = arr[1]; + const step = arr[2] || 1; + const result = new Array(); + let counter = start; + while (counter < end && step > 0 || counter > end && step < 0) { + result.push(counter); + counter += step; + } + return result; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $range +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/reduce.js b/node_modules/mingo/dist/cjs/operators/expression/array/reduce.js new file mode 100644 index 0000000..91e7ac9 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/reduce.js @@ -0,0 +1,46 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var reduce_exports = {}; +__export(reduce_exports, { + $reduce: () => $reduce +}); +module.exports = __toCommonJS(reduce_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $reduce = (obj, expr, options) => { + const copts = import_core.ComputeOptions.init(options); + const input = (0, import_core.computeValue)(obj, expr.input, null, copts); + const initialValue = (0, import_core.computeValue)(obj, expr.initialValue, null, copts); + const inExpr = expr["in"]; + if ((0, import_util.isNil)(input)) return null; + (0, import_util.assert)((0, import_util.isArray)(input), "$reduce 'input' expression must resolve to an array"); + return input.reduce((acc, n) => { + return (0, import_core.computeValue)( + n, + inExpr, + null, + copts.update(copts.root, { + variables: { value: acc } + }) + ); + }, initialValue); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $reduce +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/reverseArray.js b/node_modules/mingo/dist/cjs/operators/expression/array/reverseArray.js new file mode 100644 index 0000000..9ad1f0c --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/reverseArray.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var reverseArray_exports = {}; +__export(reverseArray_exports, { + $reverseArray: () => $reverseArray +}); +module.exports = __toCommonJS(reverseArray_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $reverseArray = (obj, expr, options) => { + const arr = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(arr)) return null; + (0, import_util.assert)((0, import_util.isArray)(arr), "$reverseArray expression must resolve to an array"); + const result = arr.slice(0); + result.reverse(); + return result; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $reverseArray +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/size.js b/node_modules/mingo/dist/cjs/operators/expression/array/size.js new file mode 100644 index 0000000..c918262 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/size.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var size_exports = {}; +__export(size_exports, { + $size: () => $size +}); +module.exports = __toCommonJS(size_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $size = (obj, expr, options) => { + const value = (0, import_core.computeValue)(obj, expr, null, options); + return (0, import_util.isArray)(value) ? value.length : void 0; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $size +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/slice.js b/node_modules/mingo/dist/cjs/operators/expression/array/slice.js new file mode 100644 index 0000000..1aa65e1 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/slice.js @@ -0,0 +1,52 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var slice_exports = {}; +__export(slice_exports, { + $slice: () => $slice +}); +module.exports = __toCommonJS(slice_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $slice = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + const arr = args[0]; + let skip = args[1]; + let limit = args[2]; + if ((0, import_util.isNil)(limit)) { + if (skip < 0) { + skip = Math.max(0, arr.length + skip); + } else { + limit = skip; + skip = 0; + } + } else { + if (skip < 0) { + skip = Math.max(0, arr.length + skip); + } + (0, import_util.assert)( + limit > 0, + `Invalid argument for $slice operator. Limit must be a positive number` + ); + limit += skip; + } + return arr.slice(skip, limit); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $slice +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/sortArray.js b/node_modules/mingo/dist/cjs/operators/expression/array/sortArray.js new file mode 100644 index 0000000..edf9b21 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/sortArray.js @@ -0,0 +1,42 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var sortArray_exports = {}; +__export(sortArray_exports, { + $sortArray: () => $sortArray +}); +module.exports = __toCommonJS(sortArray_exports); +var import_core = require("../../../core"); +var import_lazy = require("../../../lazy"); +var import_util = require("../../../util"); +var import_sort = require("../../pipeline/sort"); +const $sortArray = (obj, expr, options) => { + const { input, sortBy } = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(input)) return null; + (0, import_util.assert)((0, import_util.isArray)(input), "$sortArray expression must resolve to an array"); + if ((0, import_util.isObject)(sortBy)) { + return (0, import_sort.$sort)((0, import_lazy.Lazy)(input), sortBy, options).value(); + } + const result = [...input]; + result.sort(import_util.compare); + if (sortBy === -1) result.reverse(); + return result; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $sortArray +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/array/zip.js b/node_modules/mingo/dist/cjs/operators/expression/array/zip.js new file mode 100644 index 0000000..c82bc13 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/array/zip.js @@ -0,0 +1,59 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var zip_exports = {}; +__export(zip_exports, { + $zip: () => $zip +}); +module.exports = __toCommonJS(zip_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $zip = (obj, expr, options) => { + const inputs = (0, import_core.computeValue)(obj, expr.inputs, null, options); + const useLongestLength = expr.useLongestLength || false; + if ((0, import_util.isNil)(inputs)) return null; + (0, import_util.assert)((0, import_util.isArray)(inputs), "'inputs' expression must resolve to an array"); + (0, import_util.assert)((0, import_util.isBoolean)(useLongestLength), "'useLongestLength' must be a boolean"); + if ((0, import_util.isArray)(expr.defaults)) { + (0, import_util.assert)( + useLongestLength, + "'useLongestLength' must be set to true to use 'defaults'" + ); + } + let zipCount = 0; + for (const arr of inputs) { + if ((0, import_util.isNil)(arr)) return null; + (0, import_util.assert)( + (0, import_util.isArray)(arr), + "'inputs' expression values must resolve to an array or null" + ); + zipCount = useLongestLength ? Math.max(zipCount, arr.length) : Math.min(zipCount || arr.length, arr.length); + } + const result = []; + const defaults = expr.defaults || []; + for (let i = 0; i < zipCount; i++) { + const temp = inputs.map((val, index) => { + return (0, import_util.isNil)(val[i]) ? defaults[index] || null : val[i]; + }); + result.push(temp); + } + return result; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $zip +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/bitwise/_internal.js b/node_modules/mingo/dist/cjs/operators/expression/bitwise/_internal.js new file mode 100644 index 0000000..34d1ab5 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/bitwise/_internal.js @@ -0,0 +1,38 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var internal_exports = {}; +__export(internal_exports, { + bitwise: () => bitwise +}); +module.exports = __toCommonJS(internal_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const bitwise = (op, compute) => (obj, expr, options) => { + (0, import_util.assert)((0, import_util.isArray)(expr), `${op}: expression must be an array.`); + const nums = (0, import_core.computeValue)(obj, expr, null, options); + if (nums.some(import_util.isNil)) return null; + (0, import_util.assert)( + nums.every(import_util.isNumber), + `${op}: expression must evalue to array of numbers.` + ); + return compute(nums); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + bitwise +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/bitwise/bitAnd.js b/node_modules/mingo/dist/cjs/operators/expression/bitwise/bitAnd.js new file mode 100644 index 0000000..0aae639 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/bitwise/bitAnd.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bitAnd_exports = {}; +__export(bitAnd_exports, { + $bitAnd: () => $bitAnd +}); +module.exports = __toCommonJS(bitAnd_exports); +var import_internal = require("./_internal"); +const $bitAnd = (0, import_internal.bitwise)( + "$bitAnd", + (nums) => nums.reduce((a, b) => a & b, -1) +); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $bitAnd +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/bitwise/bitNot.js b/node_modules/mingo/dist/cjs/operators/expression/bitwise/bitNot.js new file mode 100644 index 0000000..e5fb835 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/bitwise/bitNot.js @@ -0,0 +1,34 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bitNot_exports = {}; +__export(bitNot_exports, { + $bitNot: () => $bitNot +}); +module.exports = __toCommonJS(bitNot_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $bitNot = (obj, expr, options) => { + const n = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(n)) return null; + if ((0, import_util.isNumber)(n)) return ~n; + throw new import_util.MingoError("$bitNot: expression must evaluate to a number."); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $bitNot +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/bitwise/bitOr.js b/node_modules/mingo/dist/cjs/operators/expression/bitwise/bitOr.js new file mode 100644 index 0000000..132df86 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/bitwise/bitOr.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bitOr_exports = {}; +__export(bitOr_exports, { + $bitOr: () => $bitOr +}); +module.exports = __toCommonJS(bitOr_exports); +var import_internal = require("./_internal"); +const $bitOr = (0, import_internal.bitwise)( + "$bitOr", + (nums) => nums.reduce((a, b) => a | b, 0) +); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $bitOr +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/bitwise/bitXor.js b/node_modules/mingo/dist/cjs/operators/expression/bitwise/bitXor.js new file mode 100644 index 0000000..6a5a37a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/bitwise/bitXor.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bitXor_exports = {}; +__export(bitXor_exports, { + $bitXor: () => $bitXor +}); +module.exports = __toCommonJS(bitXor_exports); +var import_internal = require("./_internal"); +const $bitXor = (0, import_internal.bitwise)( + "$bitXor", + (nums) => nums.reduce((a, b) => a ^ b, 0) +); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $bitXor +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/bitwise/index.js b/node_modules/mingo/dist/cjs/operators/expression/bitwise/index.js new file mode 100644 index 0000000..ca3706d --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/bitwise/index.js @@ -0,0 +1,27 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bitwise_exports = {}; +module.exports = __toCommonJS(bitwise_exports); +__reExport(bitwise_exports, require("./bitAnd"), module.exports); +__reExport(bitwise_exports, require("./bitNot"), module.exports); +__reExport(bitwise_exports, require("./bitOr"), module.exports); +__reExport(bitwise_exports, require("./bitXor"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./bitAnd"), + ...require("./bitNot"), + ...require("./bitOr"), + ...require("./bitXor") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/boolean/and.js b/node_modules/mingo/dist/cjs/operators/expression/boolean/and.js new file mode 100644 index 0000000..e4b7f4b --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/boolean/and.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var and_exports = {}; +__export(and_exports, { + $and: () => $and +}); +module.exports = __toCommonJS(and_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $and = (obj, expr, options) => { + const value = (0, import_core.computeValue)(obj, expr, null, options); + return (0, import_util.truthy)(value, options.useStrictMode) && value.every((v) => (0, import_util.truthy)(v, options.useStrictMode)); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $and +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/boolean/index.js b/node_modules/mingo/dist/cjs/operators/expression/boolean/index.js new file mode 100644 index 0000000..6de9dc6 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/boolean/index.js @@ -0,0 +1,25 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var boolean_exports = {}; +module.exports = __toCommonJS(boolean_exports); +__reExport(boolean_exports, require("./and"), module.exports); +__reExport(boolean_exports, require("./not"), module.exports); +__reExport(boolean_exports, require("./or"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./and"), + ...require("./not"), + ...require("./or") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/boolean/not.js b/node_modules/mingo/dist/cjs/operators/expression/boolean/not.js new file mode 100644 index 0000000..23d47f8 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/boolean/not.js @@ -0,0 +1,34 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var not_exports = {}; +__export(not_exports, { + $not: () => $not +}); +module.exports = __toCommonJS(not_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $not = (obj, expr, options) => { + const booleanExpr = (0, import_util.ensureArray)(expr); + if (booleanExpr.length == 0) return false; + (0, import_util.assert)(booleanExpr.length == 1, "Expression $not takes exactly 1 argument"); + return !(0, import_core.computeValue)(obj, booleanExpr[0], null, options); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $not +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/boolean/or.js b/node_modules/mingo/dist/cjs/operators/expression/boolean/or.js new file mode 100644 index 0000000..c805260 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/boolean/or.js @@ -0,0 +1,33 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var or_exports = {}; +__export(or_exports, { + $or: () => $or +}); +module.exports = __toCommonJS(or_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $or = (obj, expr, options) => { + const value = (0, import_core.computeValue)(obj, expr, null, options); + const strict = options.useStrictMode; + return (0, import_util.truthy)(value, strict) && value.some((v) => (0, import_util.truthy)(v, strict)); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $or +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/comparison/cmp.js b/node_modules/mingo/dist/cjs/operators/expression/comparison/cmp.js new file mode 100644 index 0000000..4ef1e40 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/comparison/cmp.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var cmp_exports = {}; +__export(cmp_exports, { + $cmp: () => $cmp +}); +module.exports = __toCommonJS(cmp_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $cmp = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + (0, import_util.assert)( + (0, import_util.isArray)(args) && args.length == 2, + "$cmp: expression must resolve to array of size 2." + ); + return (0, import_util.compare)(args[0], args[1]); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $cmp +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/comparison/eq.js b/node_modules/mingo/dist/cjs/operators/expression/comparison/eq.js new file mode 100644 index 0000000..906c72c --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/comparison/eq.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var eq_exports = {}; +__export(eq_exports, { + $eq: () => $eq +}); +module.exports = __toCommonJS(eq_exports); +var import_predicates = require("../../_predicates"); +const $eq = (0, import_predicates.createExpressionOperator)(import_predicates.$eq); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $eq +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/comparison/gt.js b/node_modules/mingo/dist/cjs/operators/expression/comparison/gt.js new file mode 100644 index 0000000..244f55d --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/comparison/gt.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var gt_exports = {}; +__export(gt_exports, { + $gt: () => $gt +}); +module.exports = __toCommonJS(gt_exports); +var import_predicates = require("../../_predicates"); +const $gt = (0, import_predicates.createExpressionOperator)(import_predicates.$gt); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $gt +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/comparison/gte.js b/node_modules/mingo/dist/cjs/operators/expression/comparison/gte.js new file mode 100644 index 0000000..4a0e2eb --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/comparison/gte.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var gte_exports = {}; +__export(gte_exports, { + $gte: () => $gte +}); +module.exports = __toCommonJS(gte_exports); +var import_predicates = require("../../_predicates"); +const $gte = (0, import_predicates.createExpressionOperator)(import_predicates.$gte); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $gte +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/comparison/index.js b/node_modules/mingo/dist/cjs/operators/expression/comparison/index.js new file mode 100644 index 0000000..b70922f --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/comparison/index.js @@ -0,0 +1,33 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var comparison_exports = {}; +module.exports = __toCommonJS(comparison_exports); +__reExport(comparison_exports, require("./cmp"), module.exports); +__reExport(comparison_exports, require("./eq"), module.exports); +__reExport(comparison_exports, require("./gt"), module.exports); +__reExport(comparison_exports, require("./gte"), module.exports); +__reExport(comparison_exports, require("./lt"), module.exports); +__reExport(comparison_exports, require("./lte"), module.exports); +__reExport(comparison_exports, require("./ne"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./cmp"), + ...require("./eq"), + ...require("./gt"), + ...require("./gte"), + ...require("./lt"), + ...require("./lte"), + ...require("./ne") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/comparison/lt.js b/node_modules/mingo/dist/cjs/operators/expression/comparison/lt.js new file mode 100644 index 0000000..1b50e2b --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/comparison/lt.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var lt_exports = {}; +__export(lt_exports, { + $lt: () => $lt +}); +module.exports = __toCommonJS(lt_exports); +var import_predicates = require("../../_predicates"); +const $lt = (0, import_predicates.createExpressionOperator)(import_predicates.$lt); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $lt +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/comparison/lte.js b/node_modules/mingo/dist/cjs/operators/expression/comparison/lte.js new file mode 100644 index 0000000..9547d48 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/comparison/lte.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var lte_exports = {}; +__export(lte_exports, { + $lte: () => $lte +}); +module.exports = __toCommonJS(lte_exports); +var import_predicates = require("../../_predicates"); +const $lte = (0, import_predicates.createExpressionOperator)(import_predicates.$lte); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $lte +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/comparison/ne.js b/node_modules/mingo/dist/cjs/operators/expression/comparison/ne.js new file mode 100644 index 0000000..3b0a237 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/comparison/ne.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var ne_exports = {}; +__export(ne_exports, { + $ne: () => $ne +}); +module.exports = __toCommonJS(ne_exports); +var import_predicates = require("../../_predicates"); +const $ne = (0, import_predicates.createExpressionOperator)(import_predicates.$ne); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $ne +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/conditional/cond.js b/node_modules/mingo/dist/cjs/operators/expression/conditional/cond.js new file mode 100644 index 0000000..b0f5128 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/conditional/cond.js @@ -0,0 +1,50 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var cond_exports = {}; +__export(cond_exports, { + $cond: () => $cond +}); +module.exports = __toCommonJS(cond_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $cond = (obj, expr, options) => { + let ifExpr; + let thenExpr; + let elseExpr; + const errorMsg = "$cond: invalid arguments"; + if ((0, import_util.isArray)(expr)) { + (0, import_util.assert)(expr.length === 3, errorMsg); + ifExpr = expr[0]; + thenExpr = expr[1]; + elseExpr = expr[2]; + } else { + (0, import_util.assert)((0, import_util.isObject)(expr), errorMsg); + ifExpr = expr.if; + thenExpr = expr.then; + elseExpr = expr.else; + } + const condition = (0, import_util.truthy)( + (0, import_core.computeValue)(obj, ifExpr, null, options), + options.useStrictMode + ); + return (0, import_core.computeValue)(obj, condition ? thenExpr : elseExpr, null, options); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $cond +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/conditional/ifNull.js b/node_modules/mingo/dist/cjs/operators/expression/conditional/ifNull.js new file mode 100644 index 0000000..41cf2f5 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/conditional/ifNull.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var ifNull_exports = {}; +__export(ifNull_exports, { + $ifNull: () => $ifNull +}); +module.exports = __toCommonJS(ifNull_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $ifNull = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + return args.find((arg) => !(0, import_util.isNil)(arg)) ?? args[args.length - 1]; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $ifNull +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/conditional/index.js b/node_modules/mingo/dist/cjs/operators/expression/conditional/index.js new file mode 100644 index 0000000..80403a7 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/conditional/index.js @@ -0,0 +1,25 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var conditional_exports = {}; +module.exports = __toCommonJS(conditional_exports); +__reExport(conditional_exports, require("./cond"), module.exports); +__reExport(conditional_exports, require("./ifNull"), module.exports); +__reExport(conditional_exports, require("./switch"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./cond"), + ...require("./ifNull"), + ...require("./switch") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/conditional/switch.js b/node_modules/mingo/dist/cjs/operators/expression/conditional/switch.js new file mode 100644 index 0000000..5d58030 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/conditional/switch.js @@ -0,0 +1,45 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var switch_exports = {}; +__export(switch_exports, { + $switch: () => $switch +}); +module.exports = __toCommonJS(switch_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $switch = (obj, expr, options) => { + let thenExpr = null; + expr.branches.some((b) => { + const condition = (0, import_util.truthy)( + (0, import_core.computeValue)(obj, b.case, null, options), + options.useStrictMode + ); + if (condition) thenExpr = b.then; + return condition; + }); + return (0, import_core.computeValue)( + obj, + thenExpr !== null ? thenExpr : expr.default, + null, + options + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $switch +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/custom/function.js b/node_modules/mingo/dist/cjs/operators/expression/custom/function.js new file mode 100644 index 0000000..b985f46 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/custom/function.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var function_exports = {}; +__export(function_exports, { + $function: () => $function +}); +module.exports = __toCommonJS(function_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $function = (obj, expr, options) => { + (0, import_util.assert)( + options.scriptEnabled, + "$function operator requires 'scriptEnabled' option to be true" + ); + const fn = (0, import_core.computeValue)(obj, expr, null, options); + return fn.body.apply(null, fn.args); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $function +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/custom/index.js b/node_modules/mingo/dist/cjs/operators/expression/custom/index.js new file mode 100644 index 0000000..379c205 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/custom/index.js @@ -0,0 +1,21 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var custom_exports = {}; +module.exports = __toCommonJS(custom_exports); +__reExport(custom_exports, require("./function"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./function") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/_internal.js b/node_modules/mingo/dist/cjs/operators/expression/date/_internal.js new file mode 100644 index 0000000..46ad52e --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/_internal.js @@ -0,0 +1,278 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var internal_exports = {}; +__export(internal_exports, { + DATE_FORMAT: () => DATE_FORMAT, + DATE_PART_INTERVAL: () => DATE_PART_INTERVAL, + DATE_SYM_TABLE: () => DATE_SYM_TABLE, + DAYS_OF_WEEK: () => DAYS_OF_WEEK, + DAYS_OF_WEEK_SET: () => DAYS_OF_WEEK_SET, + DAYS_PER_WEEK: () => DAYS_PER_WEEK, + LEAP_YEAR_REF_POINT: () => LEAP_YEAR_REF_POINT, + MILLIS_PER_DAY: () => MILLIS_PER_DAY, + MINUTES_PER_HOUR: () => MINUTES_PER_HOUR, + TIMEUNIT_IN_MILLIS: () => TIMEUNIT_IN_MILLIS, + adjustDate: () => adjustDate, + computeDate: () => computeDate, + dateAdd: () => dateAdd, + dateDiffDay: () => dateDiffDay, + dateDiffHour: () => dateDiffHour, + dateDiffMonth: () => dateDiffMonth, + dateDiffQuarter: () => dateDiffQuarter, + dateDiffWeek: () => dateDiffWeek, + dateDiffYear: () => dateDiffYear, + dayOfYear: () => dayOfYear, + daysBetweenYears: () => daysBetweenYears, + daysInMonth: () => daysInMonth, + daysInYear: () => daysInYear, + formatTimezone: () => formatTimezone, + isLeapYear: () => isLeapYear, + isoWeek: () => isoWeek, + isoWeekYear: () => isoWeekYear, + isoWeekday: () => isoWeekday, + padDigits: () => padDigits, + parseTimezone: () => parseTimezone +}); +module.exports = __toCommonJS(internal_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const LEAP_YEAR_REF_POINT = -1e9; +const DAYS_PER_WEEK = 7; +const isLeapYear = (y) => (y & 3) == 0 && (y % 100 != 0 || y % 400 == 0); +const DAYS_IN_YEAR = [ + 365, + 366 + /*leap*/ +]; +const daysInYear = (year) => DAYS_IN_YEAR[+isLeapYear(year)]; +const DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +const daysInMonth = (d) => DAYS_IN_MONTH[d.getUTCMonth()] + Number( + d.getUTCMonth() === 1 && isLeapYear(d.getUTCFullYear()) +); +const YEAR_DAYS_OFFSET = [ + [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334], + [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335] + /*leap*/ +]; +const dayOfYear = (d) => YEAR_DAYS_OFFSET[+isLeapYear(d.getUTCFullYear())][d.getUTCMonth()] + d.getUTCDate(); +const isoWeekday = (date, startOfWeek = "sun") => { + const dow = date.getUTCDay() || 7; + return (dow - ISO_WEEKDAY_MAP[startOfWeek] + DAYS_PER_WEEK) % DAYS_PER_WEEK; +}; +const p = (y) => (y + Math.floor(y / 4) - Math.floor(y / 100) + Math.floor(y / 400)) % 7; +const weeks = (y) => 52 + Number(p(y) == 4 || p(y - 1) == 3); +function isoWeek(d) { + const dow = d.getUTCDay() || 7; + const w = Math.floor((10 + dayOfYear(d) - dow) / 7); + if (w < 1) return weeks(d.getUTCFullYear() - 1); + if (w > weeks(d.getUTCFullYear())) return 1; + return w; +} +function isoWeekYear(d) { + return d.getUTCFullYear() - Number(d.getUTCMonth() === 0 && d.getUTCDate() == 1 && d.getUTCDay() < 1); +} +const MINUTES_PER_HOUR = 60; +const MILLIS_PER_DAY = 1e3 * 60 * 60 * 24; +const TIMEUNIT_IN_MILLIS = { + week: MILLIS_PER_DAY * DAYS_PER_WEEK, + day: MILLIS_PER_DAY, + hour: 1e3 * 60 * 60, + minute: 1e3 * 60, + second: 1e3, + millisecond: 1 +}; +const DAYS_OF_WEEK = [ + "monday", + "mon", + "tuesday", + "tue", + "wednesday", + "wed", + "thursday", + "thu", + "friday", + "fri", + "saturday", + "sat", + "sunday", + "sun" +]; +const DAYS_OF_WEEK_SET = new Set(DAYS_OF_WEEK); +const ISO_WEEKDAY_MAP = Object.freeze({ + mon: 1, + tue: 2, + wed: 3, + thu: 4, + fri: 5, + sat: 6, + sun: 7 +}); +const DATE_FORMAT = "%Y-%m-%dT%H:%M:%S.%LZ"; +const DATE_PART_INTERVAL = [ + ["year", 0, 9999], + ["month", 1, 12], + ["day", 1, 31], + ["hour", 0, 23], + ["minute", 0, 59], + ["second", 0, 59], + ["millisecond", 0, 999] +]; +const DATE_SYM_TABLE = Object.freeze({ + "%Y": { name: "year", padding: 4, re: /([0-9]{4})/ }, + "%G": { name: "year", padding: 4, re: /([0-9]{4})/ }, + "%m": { name: "month", padding: 2, re: /(0[1-9]|1[012])/ }, + "%d": { name: "day", padding: 2, re: /(0[1-9]|[12][0-9]|3[01])/ }, + "%H": { name: "hour", padding: 2, re: /([01][0-9]|2[0-3])/ }, + "%M": { name: "minute", padding: 2, re: /([0-5][0-9])/ }, + "%S": { name: "second", padding: 2, re: /([0-5][0-9]|60)/ }, + "%L": { name: "millisecond", padding: 3, re: /([0-9]{3})/ }, + "%u": { name: "weekday", padding: 1, re: /([1-7])/ }, + "%U": { name: "week", padding: 2, re: /([1-4][0-9]?|5[0-3]?)/ }, + "%V": { name: "isoWeek", padding: 2, re: /([1-4][0-9]?|5[0-3]?)/ }, + "%z": { + name: "timezone", + padding: 2, + re: /(([+-][01][0-9]|2[0-3]):?([0-5][0-9])?)/ + }, + "%Z": { name: "minuteOffset", padding: 3, re: /([+-][0-9]{3})/ } + // "%%": "%", +}); +const TIMEZONE_RE = /^[a-zA-Z_]+\/[a-zA-Z_]+$/; +function parseTimezone(tzstr) { + if ((0, import_util.isNil)(tzstr)) return 0; + if (TIMEZONE_RE.test(tzstr)) { + const date = /* @__PURE__ */ new Date(); + const utcDate = new Date(date.toLocaleString("en-US", { timeZone: "UTC" })); + const tzDate = new Date(date.toLocaleString("en-US", { timeZone: tzstr })); + return (tzDate.getTime() - utcDate.getTime()) / 6e4; + } + const m = DATE_SYM_TABLE["%z"].re.exec(tzstr); + if (!m) { + throw new import_util.MingoError(`Timezone '${tzstr}' is invalid or not supported`); + } + const hr = parseInt(m[2]) || 0; + const min = parseInt(m[3]) || 0; + return (Math.abs(hr * MINUTES_PER_HOUR) + min) * (hr < 0 ? -1 : 1); +} +function formatTimezone(minuteOffset) { + return (minuteOffset < 0 ? "-" : "+") + padDigits(Math.abs(Math.floor(minuteOffset / MINUTES_PER_HOUR)), 2) + padDigits(Math.abs(minuteOffset) % MINUTES_PER_HOUR, 2); +} +function adjustDate(d, minuteOffset) { + d.setUTCMinutes(d.getUTCMinutes() + minuteOffset); +} +function computeDate(obj, expr, options) { + if ((0, import_util.isDate)(obj)) return obj; + const d = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isDate)(d)) return new Date(d); + if ((0, import_util.isNumber)(d)) return new Date(d * 1e3); + if (d.date) { + const date = (0, import_util.isDate)(d.date) ? new Date(d.date) : new Date(d.date * 1e3); + if (d.timezone) { + adjustDate(date, parseTimezone(d.timezone)); + } + return date; + } + throw Error(`cannot convert ${JSON.stringify(expr)} to date`); +} +function padDigits(n, digits) { + return new Array(Math.max(digits - String(n).length + 1, 0)).join("0") + n.toString(); +} +const leapYearsSinceReferencePoint = (year) => { + const yearsSinceReferencePoint = year - LEAP_YEAR_REF_POINT; + return Math.trunc(yearsSinceReferencePoint / 4) - Math.trunc(yearsSinceReferencePoint / 100) + Math.trunc(yearsSinceReferencePoint / 400); +}; +function daysBetweenYears(startYear, endYear) { + return Math.trunc( + leapYearsSinceReferencePoint(endYear - 1) - leapYearsSinceReferencePoint(startYear - 1) + (endYear - startYear) * DAYS_IN_YEAR[0] + ); +} +const dateDiffYear = (start, end) => end.getUTCFullYear() - start.getUTCFullYear(); +const dateDiffMonth = (start, end) => end.getUTCMonth() - start.getUTCMonth() + dateDiffYear(start, end) * 12; +const dateDiffQuarter = (start, end) => { + const a = Math.trunc(start.getUTCMonth() / 3); + const b = Math.trunc(end.getUTCMonth() / 3); + return b - a + dateDiffYear(start, end) * 4; +}; +const dateDiffDay = (start, end) => dayOfYear(end) - dayOfYear(start) + daysBetweenYears(start.getUTCFullYear(), end.getUTCFullYear()); +const dateDiffWeek = (start, end, startOfWeek) => { + const wk = (startOfWeek || "sun").substring(0, 3); + return Math.trunc( + (dateDiffDay(start, end) + isoWeekday(start, wk) - isoWeekday(end, wk)) / DAYS_PER_WEEK + ); +}; +const dateDiffHour = (start, end) => end.getUTCHours() - start.getUTCHours() + dateDiffDay(start, end) * 24; +const addMonth = (d, amount) => { + const m = d.getUTCMonth() + amount; + const yearOffset = Math.floor(m / 12); + if (m < 0) { + const month = m % 12 + 12; + d.setUTCFullYear(d.getUTCFullYear() + yearOffset, month, d.getUTCDate()); + } else { + d.setUTCFullYear(d.getUTCFullYear() + yearOffset, m % 12, d.getUTCDate()); + } +}; +const dateAdd = (date, unit, amount, _timezone) => { + const d = new Date(date); + switch (unit) { + case "year": + d.setUTCFullYear(d.getUTCFullYear() + amount); + break; + case "quarter": + addMonth(d, 3 * amount); + break; + case "month": + addMonth(d, amount); + break; + default: + d.setTime(d.getTime() + TIMEUNIT_IN_MILLIS[unit] * amount); + } + return d; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + DATE_FORMAT, + DATE_PART_INTERVAL, + DATE_SYM_TABLE, + DAYS_OF_WEEK, + DAYS_OF_WEEK_SET, + DAYS_PER_WEEK, + LEAP_YEAR_REF_POINT, + MILLIS_PER_DAY, + MINUTES_PER_HOUR, + TIMEUNIT_IN_MILLIS, + adjustDate, + computeDate, + dateAdd, + dateDiffDay, + dateDiffHour, + dateDiffMonth, + dateDiffQuarter, + dateDiffWeek, + dateDiffYear, + dayOfYear, + daysBetweenYears, + daysInMonth, + daysInYear, + formatTimezone, + isLeapYear, + isoWeek, + isoWeekYear, + isoWeekday, + padDigits, + parseTimezone +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/dateAdd.js b/node_modules/mingo/dist/cjs/operators/expression/date/dateAdd.js new file mode 100644 index 0000000..3a78cf6 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/dateAdd.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var dateAdd_exports = {}; +__export(dateAdd_exports, { + $dateAdd: () => $dateAdd +}); +module.exports = __toCommonJS(dateAdd_exports); +var import_core = require("../../../core"); +var import_internal = require("./_internal"); +const $dateAdd = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + return (0, import_internal.dateAdd)(args.startDate, args.unit, args.amount, args.timezone); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $dateAdd +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/dateDiff.js b/node_modules/mingo/dist/cjs/operators/expression/date/dateDiff.js new file mode 100644 index 0000000..c6acff6 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/dateDiff.js @@ -0,0 +1,67 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var dateDiff_exports = {}; +__export(dateDiff_exports, { + $dateDiff: () => $dateDiff +}); +module.exports = __toCommonJS(dateDiff_exports); +var import_core = require("../../../core"); +var import_internal = require("./_internal"); +const $dateDiff = (obj, expr, options) => { + const { startDate, endDate, unit, timezone, startOfWeek } = (0, import_core.computeValue)( + obj, + expr, + null, + options + ); + const d1 = new Date(startDate); + const d2 = new Date(endDate); + const minuteOffset = (0, import_internal.parseTimezone)(timezone); + (0, import_internal.adjustDate)(d1, minuteOffset); + (0, import_internal.adjustDate)(d2, minuteOffset); + switch (unit) { + case "year": + return (0, import_internal.dateDiffYear)(d1, d2); + case "quarter": + return (0, import_internal.dateDiffQuarter)(d1, d2); + case "month": + return (0, import_internal.dateDiffMonth)(d1, d2); + case "week": + return (0, import_internal.dateDiffWeek)(d1, d2, startOfWeek); + case "day": + return (0, import_internal.dateDiffDay)(d1, d2); + case "hour": + return (0, import_internal.dateDiffHour)(d1, d2); + case "minute": + d1.setUTCSeconds(0); + d1.setUTCMilliseconds(0); + d2.setUTCSeconds(0); + d2.setUTCMilliseconds(0); + return Math.round( + (d2.getTime() - d1.getTime()) / import_internal.TIMEUNIT_IN_MILLIS[unit] + ); + default: + return Math.round( + (d2.getTime() - d1.getTime()) / import_internal.TIMEUNIT_IN_MILLIS[unit] + ); + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $dateDiff +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/dateFromParts.js b/node_modules/mingo/dist/cjs/operators/expression/date/dateFromParts.js new file mode 100644 index 0000000..47bca96 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/dateFromParts.js @@ -0,0 +1,69 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var dateFromParts_exports = {}; +__export(dateFromParts_exports, { + $dateFromParts: () => $dateFromParts +}); +module.exports = __toCommonJS(dateFromParts_exports); +var import_core = require("../../../core"); +var import_internal = require("./_internal"); +const DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +const getDaysInMonth = (date) => { + return date.month == 2 && (0, import_internal.isLeapYear)(date.year) ? 29 : DAYS_IN_MONTH[date.month - 1]; +}; +const $dateFromParts = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + const minuteOffset = (0, import_internal.parseTimezone)(args.timezone); + for (let i = import_internal.DATE_PART_INTERVAL.length - 1, remainder = 0; i >= 0; i--) { + const datePartInterval = import_internal.DATE_PART_INTERVAL[i]; + const k = datePartInterval[0]; + const min = datePartInterval[1]; + const max = datePartInterval[2]; + let part = (args[k] || 0) + remainder; + remainder = 0; + const limit = max + 1; + if (k == "hour") part += Math.floor(minuteOffset / import_internal.MINUTES_PER_HOUR) * -1; + if (k == "minute") part += minuteOffset % import_internal.MINUTES_PER_HOUR * -1; + if (part < min) { + const delta = min - part; + remainder = -1 * Math.ceil(delta / limit); + part = limit - delta % limit; + } else if (part > max) { + part += min; + remainder = Math.trunc(part / limit); + part %= limit; + } + args[k] = part; + } + args.day = Math.min(args.day, getDaysInMonth(args)); + return new Date( + Date.UTC( + args.year, + args.month - 1, + args.day, + args.hour, + args.minute, + args.second, + args.millisecond + ) + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $dateFromParts +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/dateFromString.js b/node_modules/mingo/dist/cjs/operators/expression/date/dateFromString.js new file mode 100644 index 0000000..96009ae --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/dateFromString.js @@ -0,0 +1,96 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var dateFromString_exports = {}; +__export(dateFromString_exports, { + $dateFromString: () => $dateFromString +}); +module.exports = __toCommonJS(dateFromString_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_internal = require("./_internal"); +const buildMap = (letters, sign) => { + const h = {}; + letters.split("").forEach((v, i) => h[v] = sign * (i + 1)); + return h; +}; +const TZ_LETTER_OFFSETS = { + ...buildMap("ABCDEFGHIKLM", 1), + ...buildMap("NOPQRSTUVWXY", -1), + Z: 0 +}; +const regexStrip = (s) => s.replace(/^\//, "").replace(/\/$/, ""); +const REGEX_SPECIAL_CHARS = ["^", ".", "-", "*", "?", "$"]; +const regexQuote = (s) => { + REGEX_SPECIAL_CHARS.forEach((c) => { + s = s.replace(c, `\\${c}`); + }); + return s; +}; +const $dateFromString = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + args.format = args.format || import_internal.DATE_FORMAT; + args.onNull = args.onNull || null; + let dateString = args.dateString; + if ((0, import_util.isNil)(dateString)) return args.onNull; + const separators = args.format.split(/%[YGmdHMSLuVzZ]/); + separators.reverse(); + const matches = args.format.match( + /(%%|%Y|%G|%m|%d|%H|%M|%S|%L|%u|%V|%z|%Z)/g + ); + const dateParts = {}; + let expectedPattern = ""; + for (let i = 0, len = matches.length; i < len; i++) { + const formatSpecifier = matches[i]; + const props = import_internal.DATE_SYM_TABLE[formatSpecifier]; + if ((0, import_util.isObject)(props)) { + const m2 = props.re.exec(dateString); + const delimiter = separators.pop() || ""; + if (m2 !== null) { + dateParts[props.name] = /^\d+$/.exec(m2[0]) ? parseInt(m2[0]) : m2[0]; + dateString = dateString.substr(0, m2.index) + dateString.substr(m2.index + m2[0].length); + expectedPattern += regexQuote(delimiter) + regexStrip(props.re.toString()); + } else { + dateParts[props.name] = null; + } + } + } + if ((0, import_util.isNil)(dateParts.year) || (0, import_util.isNil)(dateParts.month) || (0, import_util.isNil)(dateParts.day) || !new RegExp("^" + expectedPattern + "[A-Z]?$").exec(args.dateString)) { + return args.onError; + } + const m = args.dateString.match(/([A-Z])$/); + (0, import_util.assert)( + // only one of in-date timeone or timezone argument but not both. + !(m && args.timezone), + `$dateFromString: you cannot pass in a date/time string with time zone information ('${m && m[0]}') together with a timezone argument` + ); + const minuteOffset = m ? TZ_LETTER_OFFSETS[m[0]] * import_internal.MINUTES_PER_HOUR : (0, import_internal.parseTimezone)(args.timezone); + const d = new Date( + Date.UTC(dateParts.year, dateParts.month - 1, dateParts.day, 0, 0, 0) + ); + if (!(0, import_util.isNil)(dateParts.hour)) d.setUTCHours(dateParts.hour); + if (!(0, import_util.isNil)(dateParts.minute)) d.setUTCMinutes(dateParts.minute); + if (!(0, import_util.isNil)(dateParts.second)) d.setUTCSeconds(dateParts.second); + if (!(0, import_util.isNil)(dateParts.millisecond)) + d.setUTCMilliseconds(dateParts.millisecond); + (0, import_internal.adjustDate)(d, -minuteOffset); + return d; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $dateFromString +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/dateSubtract.js b/node_modules/mingo/dist/cjs/operators/expression/date/dateSubtract.js new file mode 100644 index 0000000..3cd146c --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/dateSubtract.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var dateSubtract_exports = {}; +__export(dateSubtract_exports, { + $dateSubtract: () => $dateSubtract +}); +module.exports = __toCommonJS(dateSubtract_exports); +var import_core = require("../../../core"); +var import_dateAdd = require("./dateAdd"); +const $dateSubtract = (obj, expr, options) => { + const amount = (0, import_core.computeValue)(obj, expr?.amount, null, options); + return (0, import_dateAdd.$dateAdd)(obj, { ...expr, amount: -1 * amount }, options); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $dateSubtract +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/dateToParts.js b/node_modules/mingo/dist/cjs/operators/expression/date/dateToParts.js new file mode 100644 index 0000000..a3024c2 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/dateToParts.js @@ -0,0 +1,52 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var dateToParts_exports = {}; +__export(dateToParts_exports, { + $dateToParts: () => $dateToParts +}); +module.exports = __toCommonJS(dateToParts_exports); +var import_core = require("../../../core"); +var import_internal = require("./_internal"); +const $dateToParts = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + const d = new Date(args.date); + const tz = (0, import_internal.parseTimezone)(args.timezone); + (0, import_internal.adjustDate)(d, tz); + const timePart = { + hour: d.getUTCHours(), + minute: d.getUTCMinutes(), + second: d.getUTCSeconds(), + millisecond: d.getUTCMilliseconds() + }; + if (args.iso8601 == true) { + return Object.assign(timePart, { + isoWeekYear: (0, import_internal.isoWeekYear)(d), + isoWeek: (0, import_internal.isoWeek)(d), + isoDayOfWeek: d.getUTCDay() || 7 + }); + } + return Object.assign(timePart, { + year: d.getUTCFullYear(), + month: d.getUTCMonth() + 1, + day: d.getUTCDate() + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $dateToParts +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/dateToString.js b/node_modules/mingo/dist/cjs/operators/expression/date/dateToString.js new file mode 100644 index 0000000..4b0096d --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/dateToString.js @@ -0,0 +1,83 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var dateToString_exports = {}; +__export(dateToString_exports, { + $dateToString: () => $dateToString +}); +module.exports = __toCommonJS(dateToString_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_internal = require("./_internal"); +var import_dayOfMonth = require("./dayOfMonth"); +var import_hour = require("./hour"); +var import_isoDayOfWeek = require("./isoDayOfWeek"); +var import_isoWeek = require("./isoWeek"); +var import_millisecond = require("./millisecond"); +var import_minute = require("./minute"); +var import_month = require("./month"); +var import_second = require("./second"); +var import_week = require("./week"); +var import_year = require("./year"); +const DATE_FUNCTIONS = { + "%Y": import_year.$year, + "%G": import_year.$year, + "%m": import_month.$month, + "%d": import_dayOfMonth.$dayOfMonth, + "%H": import_hour.$hour, + "%M": import_minute.$minute, + "%S": import_second.$second, + "%L": import_millisecond.$millisecond, + "%u": import_isoDayOfWeek.$isoDayOfWeek, + "%U": import_week.$week, + "%V": import_isoWeek.$isoWeek +}; +const $dateToString = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(args.onNull)) args.onNull = null; + if ((0, import_util.isNil)(args.date)) return args.onNull; + const date = (0, import_internal.computeDate)(obj, args.date, options); + let format = args.format || import_internal.DATE_FORMAT; + const minuteOffset = (0, import_internal.parseTimezone)(args.timezone); + const matches = format.match(/(%%|%Y|%G|%m|%d|%H|%M|%S|%L|%u|%U|%V|%z|%Z)/g); + (0, import_internal.adjustDate)(date, minuteOffset); + for (let i = 0, len = matches.length; i < len; i++) { + const formatSpecifier = matches[i]; + const props = import_internal.DATE_SYM_TABLE[formatSpecifier]; + const operatorFn = DATE_FUNCTIONS[formatSpecifier]; + let value; + if ((0, import_util.isObject)(props)) { + if (props.name === "timezone") { + value = (0, import_internal.formatTimezone)(minuteOffset); + } else if (props.name === "minuteOffset") { + value = minuteOffset.toString(); + } else { + (0, import_util.assert)( + !!operatorFn, + `unsupported date format specifier '${formatSpecifier}'` + ); + value = (0, import_internal.padDigits)(operatorFn(obj, date, options), props.padding); + } + } + format = format.replace(formatSpecifier, value); + } + return format; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $dateToString +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/dateTrunc.js b/node_modules/mingo/dist/cjs/operators/expression/date/dateTrunc.js new file mode 100644 index 0000000..e40144b --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/dateTrunc.js @@ -0,0 +1,107 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var dateTrunc_exports = {}; +__export(dateTrunc_exports, { + $dateTrunc: () => $dateTrunc +}); +module.exports = __toCommonJS(dateTrunc_exports); +var import_core = require("../../../core"); +var import_types = require("../../../types"); +var import_util = require("../../../util"); +var import_internal = require("./_internal"); +const REF_DATE_MILLIS = 9466848e5; +const distanceToBinLowerBound = (value, binSize) => { + let remainder = value % binSize; + if (remainder < 0) { + remainder += binSize; + } + return remainder; +}; +const DATE_DIFF_FN = { + day: import_internal.dateDiffDay, + month: import_internal.dateDiffMonth, + quarter: import_internal.dateDiffQuarter, + year: import_internal.dateDiffYear +}; +const $dateTrunc = (obj, expr, options) => { + const { + date, + unit, + binSize: optBinSize, + timezone, + startOfWeek: optStartOfWeek + } = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(date) || (0, import_util.isNil)(unit)) return null; + const startOfWeek = (optStartOfWeek ?? "sun").toLowerCase().substring(0, 3); + (0, import_util.assert)( + (0, import_util.isDate)(date), + "$dateTrunc: 'date' must resolve to a valid Date object." + ); + (0, import_util.assert)(import_types.TIME_UNITS.includes(unit), "$dateTrunc: unit is invalid."); + (0, import_util.assert)( + unit != "week" || import_internal.DAYS_OF_WEEK_SET.has(startOfWeek), + `$dateTrunc: startOfWeek '${startOfWeek}' is not a valid.` + ); + (0, import_util.assert)( + (0, import_util.isNil)(optBinSize) || optBinSize > 0, + "$dateTrunc requires 'binSize' to be greater than 0, but got value 0." + ); + const binSize = optBinSize ?? 1; + switch (unit) { + case "millisecond": + case "second": + case "minute": + case "hour": { + const binSizeMillis = binSize * import_internal.TIMEUNIT_IN_MILLIS[unit]; + const shiftedDate = date.getTime() - REF_DATE_MILLIS; + return new Date( + date.getTime() - distanceToBinLowerBound(shiftedDate, binSizeMillis) + ); + } + default: { + (0, import_util.assert)(binSize <= 1e11, "dateTrunc unsupported binSize value"); + const d = new Date(date); + const refPointDate = new Date(REF_DATE_MILLIS); + let distanceFromRefPoint = 0; + if (unit == "week") { + const refPointDayOfWeek = (0, import_internal.isoWeekday)(refPointDate, startOfWeek); + const daysToAdjustBy = (import_internal.DAYS_PER_WEEK - refPointDayOfWeek) % import_internal.DAYS_PER_WEEK; + refPointDate.setTime( + refPointDate.getTime() + daysToAdjustBy * import_internal.TIMEUNIT_IN_MILLIS.day + ); + distanceFromRefPoint = (0, import_internal.dateDiffWeek)(refPointDate, d, startOfWeek); + } else { + distanceFromRefPoint = DATE_DIFF_FN[unit](refPointDate, d); + } + const binLowerBoundFromRefPoint = distanceFromRefPoint - distanceToBinLowerBound(distanceFromRefPoint, binSize); + const newDate = (0, import_internal.dateAdd)( + refPointDate, + unit, + binLowerBoundFromRefPoint, + timezone + ); + const minuteOffset = (0, import_internal.parseTimezone)(timezone); + (0, import_internal.adjustDate)(newDate, -minuteOffset); + return newDate; + } + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $dateTrunc +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/dayOfMonth.js b/node_modules/mingo/dist/cjs/operators/expression/date/dayOfMonth.js new file mode 100644 index 0000000..d50cade --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/dayOfMonth.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var dayOfMonth_exports = {}; +__export(dayOfMonth_exports, { + $dayOfMonth: () => $dayOfMonth +}); +module.exports = __toCommonJS(dayOfMonth_exports); +var import_internal = require("./_internal"); +const $dayOfMonth = (obj, expr, options) => { + return (0, import_internal.computeDate)(obj, expr, options).getUTCDate(); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $dayOfMonth +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/dayOfWeek.js b/node_modules/mingo/dist/cjs/operators/expression/date/dayOfWeek.js new file mode 100644 index 0000000..576691a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/dayOfWeek.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var dayOfWeek_exports = {}; +__export(dayOfWeek_exports, { + $dayOfWeek: () => $dayOfWeek +}); +module.exports = __toCommonJS(dayOfWeek_exports); +var import_internal = require("./_internal"); +const $dayOfWeek = (obj, expr, options) => { + return (0, import_internal.computeDate)(obj, expr, options).getUTCDay() + 1; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $dayOfWeek +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/dayOfYear.js b/node_modules/mingo/dist/cjs/operators/expression/date/dayOfYear.js new file mode 100644 index 0000000..15cdeae --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/dayOfYear.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var dayOfYear_exports = {}; +__export(dayOfYear_exports, { + $dayOfYear: () => $dayOfYear +}); +module.exports = __toCommonJS(dayOfYear_exports); +var import_internal = require("./_internal"); +const $dayOfYear = (obj, expr, options) => { + return (0, import_internal.dayOfYear)((0, import_internal.computeDate)(obj, expr, options)); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $dayOfYear +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/hour.js b/node_modules/mingo/dist/cjs/operators/expression/date/hour.js new file mode 100644 index 0000000..230772f --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/hour.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var hour_exports = {}; +__export(hour_exports, { + $hour: () => $hour +}); +module.exports = __toCommonJS(hour_exports); +var import_internal = require("./_internal"); +const $hour = (obj, expr, options) => { + return (0, import_internal.computeDate)(obj, expr, options).getUTCHours(); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $hour +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/index.js b/node_modules/mingo/dist/cjs/operators/expression/date/index.js new file mode 100644 index 0000000..a4bc2a0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/index.js @@ -0,0 +1,61 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var date_exports = {}; +module.exports = __toCommonJS(date_exports); +__reExport(date_exports, require("./dateAdd"), module.exports); +__reExport(date_exports, require("./dateDiff"), module.exports); +__reExport(date_exports, require("./dateFromParts"), module.exports); +__reExport(date_exports, require("./dateFromString"), module.exports); +__reExport(date_exports, require("./dateSubtract"), module.exports); +__reExport(date_exports, require("./dateToParts"), module.exports); +__reExport(date_exports, require("./dateToString"), module.exports); +__reExport(date_exports, require("./dateTrunc"), module.exports); +__reExport(date_exports, require("./dayOfMonth"), module.exports); +__reExport(date_exports, require("./dayOfWeek"), module.exports); +__reExport(date_exports, require("./dayOfYear"), module.exports); +__reExport(date_exports, require("./hour"), module.exports); +__reExport(date_exports, require("./isoDayOfWeek"), module.exports); +__reExport(date_exports, require("./isoWeek"), module.exports); +__reExport(date_exports, require("./isoWeekYear"), module.exports); +__reExport(date_exports, require("./millisecond"), module.exports); +__reExport(date_exports, require("./minute"), module.exports); +__reExport(date_exports, require("./month"), module.exports); +__reExport(date_exports, require("./second"), module.exports); +__reExport(date_exports, require("./week"), module.exports); +__reExport(date_exports, require("./year"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./dateAdd"), + ...require("./dateDiff"), + ...require("./dateFromParts"), + ...require("./dateFromString"), + ...require("./dateSubtract"), + ...require("./dateToParts"), + ...require("./dateToString"), + ...require("./dateTrunc"), + ...require("./dayOfMonth"), + ...require("./dayOfWeek"), + ...require("./dayOfYear"), + ...require("./hour"), + ...require("./isoDayOfWeek"), + ...require("./isoWeek"), + ...require("./isoWeekYear"), + ...require("./millisecond"), + ...require("./minute"), + ...require("./month"), + ...require("./second"), + ...require("./week"), + ...require("./year") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/isoDayOfWeek.js b/node_modules/mingo/dist/cjs/operators/expression/date/isoDayOfWeek.js new file mode 100644 index 0000000..602d6e6 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/isoDayOfWeek.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var isoDayOfWeek_exports = {}; +__export(isoDayOfWeek_exports, { + $isoDayOfWeek: () => $isoDayOfWeek +}); +module.exports = __toCommonJS(isoDayOfWeek_exports); +var import_internal = require("./_internal"); +const $isoDayOfWeek = (obj, expr, options) => { + return (0, import_internal.computeDate)(obj, expr, options).getUTCDay() || 7; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $isoDayOfWeek +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/isoWeek.js b/node_modules/mingo/dist/cjs/operators/expression/date/isoWeek.js new file mode 100644 index 0000000..60507f5 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/isoWeek.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var isoWeek_exports = {}; +__export(isoWeek_exports, { + $isoWeek: () => $isoWeek +}); +module.exports = __toCommonJS(isoWeek_exports); +var import_internal = require("./_internal"); +const $isoWeek = (obj, expr, options) => { + return (0, import_internal.isoWeek)((0, import_internal.computeDate)(obj, expr, options)); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $isoWeek +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/isoWeekYear.js b/node_modules/mingo/dist/cjs/operators/expression/date/isoWeekYear.js new file mode 100644 index 0000000..3c40526 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/isoWeekYear.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var isoWeekYear_exports = {}; +__export(isoWeekYear_exports, { + $isoWeekYear: () => $isoWeekYear +}); +module.exports = __toCommonJS(isoWeekYear_exports); +var import_internal = require("./_internal"); +const $isoWeekYear = (obj, expr, options) => (0, import_internal.isoWeekYear)((0, import_internal.computeDate)(obj, expr, options)); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $isoWeekYear +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/millisecond.js b/node_modules/mingo/dist/cjs/operators/expression/date/millisecond.js new file mode 100644 index 0000000..40d5885 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/millisecond.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var millisecond_exports = {}; +__export(millisecond_exports, { + $millisecond: () => $millisecond +}); +module.exports = __toCommonJS(millisecond_exports); +var import_internal = require("./_internal"); +const $millisecond = (obj, expr, options) => { + return (0, import_internal.computeDate)(obj, expr, options).getUTCMilliseconds(); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $millisecond +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/minute.js b/node_modules/mingo/dist/cjs/operators/expression/date/minute.js new file mode 100644 index 0000000..eeed526 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/minute.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var minute_exports = {}; +__export(minute_exports, { + $minute: () => $minute +}); +module.exports = __toCommonJS(minute_exports); +var import_internal = require("./_internal"); +const $minute = (obj, expr, options) => { + return (0, import_internal.computeDate)(obj, expr, options).getUTCMinutes(); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $minute +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/month.js b/node_modules/mingo/dist/cjs/operators/expression/date/month.js new file mode 100644 index 0000000..b9671ff --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/month.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var month_exports = {}; +__export(month_exports, { + $month: () => $month +}); +module.exports = __toCommonJS(month_exports); +var import_internal = require("./_internal"); +const $month = (obj, expr, options) => { + return (0, import_internal.computeDate)(obj, expr, options).getUTCMonth() + 1; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $month +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/second.js b/node_modules/mingo/dist/cjs/operators/expression/date/second.js new file mode 100644 index 0000000..66a1419 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/second.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var second_exports = {}; +__export(second_exports, { + $second: () => $second +}); +module.exports = __toCommonJS(second_exports); +var import_internal = require("./_internal"); +const $second = (obj, expr, options) => { + return (0, import_internal.computeDate)(obj, expr, options).getUTCSeconds(); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $second +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/week.js b/node_modules/mingo/dist/cjs/operators/expression/date/week.js new file mode 100644 index 0000000..b90e7a6 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/week.js @@ -0,0 +1,35 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var week_exports = {}; +__export(week_exports, { + $week: () => $week +}); +module.exports = __toCommonJS(week_exports); +var import_internal = require("./_internal"); +const $week = (obj, expr, options) => { + const d = (0, import_internal.computeDate)(obj, expr, options); + const result = (0, import_internal.isoWeek)(d); + if (d.getUTCDay() > 0 && d.getUTCDate() == 1 && d.getUTCMonth() == 0) + return 0; + if (d.getUTCDay() == 0) return result + 1; + return result; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $week +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/date/year.js b/node_modules/mingo/dist/cjs/operators/expression/date/year.js new file mode 100644 index 0000000..8e081b6 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/date/year.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var year_exports = {}; +__export(year_exports, { + $year: () => $year +}); +module.exports = __toCommonJS(year_exports); +var import_internal = require("./_internal"); +const $year = (obj, expr, options) => { + return (0, import_internal.computeDate)(obj, expr, options).getUTCFullYear(); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $year +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/index.js b/node_modules/mingo/dist/cjs/operators/expression/index.js new file mode 100644 index 0000000..3a50846 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/index.js @@ -0,0 +1,55 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var expression_exports = {}; +module.exports = __toCommonJS(expression_exports); +__reExport(expression_exports, require("./arithmetic"), module.exports); +__reExport(expression_exports, require("./array"), module.exports); +__reExport(expression_exports, require("./bitwise"), module.exports); +__reExport(expression_exports, require("./boolean"), module.exports); +__reExport(expression_exports, require("./comparison"), module.exports); +__reExport(expression_exports, require("./conditional"), module.exports); +__reExport(expression_exports, require("./custom"), module.exports); +__reExport(expression_exports, require("./date"), module.exports); +__reExport(expression_exports, require("./literal"), module.exports); +__reExport(expression_exports, require("./median"), module.exports); +__reExport(expression_exports, require("./misc"), module.exports); +__reExport(expression_exports, require("./object"), module.exports); +__reExport(expression_exports, require("./percentile"), module.exports); +__reExport(expression_exports, require("./set"), module.exports); +__reExport(expression_exports, require("./string"), module.exports); +__reExport(expression_exports, require("./trignometry"), module.exports); +__reExport(expression_exports, require("./type"), module.exports); +__reExport(expression_exports, require("./variable"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./arithmetic"), + ...require("./array"), + ...require("./bitwise"), + ...require("./boolean"), + ...require("./comparison"), + ...require("./conditional"), + ...require("./custom"), + ...require("./date"), + ...require("./literal"), + ...require("./median"), + ...require("./misc"), + ...require("./object"), + ...require("./percentile"), + ...require("./set"), + ...require("./string"), + ...require("./trignometry"), + ...require("./type"), + ...require("./variable") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/literal.js b/node_modules/mingo/dist/cjs/operators/expression/literal.js new file mode 100644 index 0000000..6bacc3a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/literal.js @@ -0,0 +1,27 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var literal_exports = {}; +__export(literal_exports, { + $literal: () => $literal +}); +module.exports = __toCommonJS(literal_exports); +const $literal = (_obj, expr, _options) => expr; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $literal +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/median.js b/node_modules/mingo/dist/cjs/operators/expression/median.js new file mode 100644 index 0000000..1b91c95 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/median.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var median_exports = {}; +__export(median_exports, { + $median: () => $median +}); +module.exports = __toCommonJS(median_exports); +var import_core = require("../../core"); +var import_median = require("../accumulator/median"); +const $median = (obj, expr, options) => { + const input = (0, import_core.computeValue)(obj, expr.input, null, options); + return (0, import_median.$median)(input, { input: "$$CURRENT" }, options); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $median +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/misc/getField.js b/node_modules/mingo/dist/cjs/operators/expression/misc/getField.js new file mode 100644 index 0000000..0d23951 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/misc/getField.js @@ -0,0 +1,42 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var getField_exports = {}; +__export(getField_exports, { + $getField: () => $getField +}); +module.exports = __toCommonJS(getField_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $getField = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + const [field, input] = (0, import_util.isObject)(args) ? [args.field, args.input || obj] : [args, obj]; + if ((0, import_util.isNil)(input)) return null; + (0, import_util.assert)( + (0, import_util.isObject)(input), + "$getField expression 'input' must evaluate to an object" + ); + (0, import_util.assert)( + (0, import_util.isString)(field), + "$getField expression 'field' must evaluate to a string" + ); + return input[field]; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $getField +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/misc/index.js b/node_modules/mingo/dist/cjs/operators/expression/misc/index.js new file mode 100644 index 0000000..4e1329a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/misc/index.js @@ -0,0 +1,25 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var misc_exports = {}; +module.exports = __toCommonJS(misc_exports); +__reExport(misc_exports, require("./getField"), module.exports); +__reExport(misc_exports, require("./rand"), module.exports); +__reExport(misc_exports, require("./sampleRate"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./getField"), + ...require("./rand"), + ...require("./sampleRate") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/misc/rand.js b/node_modules/mingo/dist/cjs/operators/expression/misc/rand.js new file mode 100644 index 0000000..6a98669 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/misc/rand.js @@ -0,0 +1,27 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var rand_exports = {}; +__export(rand_exports, { + $rand: () => $rand +}); +module.exports = __toCommonJS(rand_exports); +const $rand = (_obj, _expr, _options) => Math.random(); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $rand +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/misc/sampleRate.js b/node_modules/mingo/dist/cjs/operators/expression/misc/sampleRate.js new file mode 100644 index 0000000..4ed1cec --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/misc/sampleRate.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var sampleRate_exports = {}; +__export(sampleRate_exports, { + $sampleRate: () => $sampleRate +}); +module.exports = __toCommonJS(sampleRate_exports); +var import_core = require("../../../core"); +const $sampleRate = (obj, expr, options) => Math.random() <= (0, import_core.computeValue)(obj, expr, null, options); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $sampleRate +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/object/index.js b/node_modules/mingo/dist/cjs/operators/expression/object/index.js new file mode 100644 index 0000000..e2f27cc --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/object/index.js @@ -0,0 +1,27 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var object_exports = {}; +module.exports = __toCommonJS(object_exports); +__reExport(object_exports, require("./mergeObjects"), module.exports); +__reExport(object_exports, require("./objectToArray"), module.exports); +__reExport(object_exports, require("./setField"), module.exports); +__reExport(object_exports, require("./unsetField"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./mergeObjects"), + ...require("./objectToArray"), + ...require("./setField"), + ...require("./unsetField") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/object/mergeObjects.js b/node_modules/mingo/dist/cjs/operators/expression/object/mergeObjects.js new file mode 100644 index 0000000..e978ef1 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/object/mergeObjects.js @@ -0,0 +1,39 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var mergeObjects_exports = {}; +__export(mergeObjects_exports, { + $mergeObjects: () => $mergeObjects +}); +module.exports = __toCommonJS(mergeObjects_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $mergeObjects = (obj, expr, options) => { + const docs = (0, import_core.computeValue)(obj, expr, null, options) ?? []; + const acc = {}; + for (const o of docs) { + if ((0, import_util.isNil)(o)) continue; + for (const k of Object.keys(o)) { + if (o[k] !== void 0) acc[k] = o[k]; + } + } + return acc; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $mergeObjects +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/object/objectToArray.js b/node_modules/mingo/dist/cjs/operators/expression/object/objectToArray.js new file mode 100644 index 0000000..9440550 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/object/objectToArray.js @@ -0,0 +1,43 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var objectToArray_exports = {}; +__export(objectToArray_exports, { + $objectToArray: () => $objectToArray +}); +module.exports = __toCommonJS(objectToArray_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $objectToArray = (obj, expr, options) => { + const val = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(val)) return null; + (0, import_util.assert)( + (0, import_util.isObject)(val), + `$objectToArray requires a document input, found: ${(0, import_util.typeOf)(val)}` + ); + const entries = Object.entries(val); + const result = new Array(entries.length); + let i = 0; + for (const [k, v] of entries) { + result[i++] = { k, v }; + } + return result; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $objectToArray +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/object/setField.js b/node_modules/mingo/dist/cjs/operators/expression/object/setField.js new file mode 100644 index 0000000..0b10fd0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/object/setField.js @@ -0,0 +1,52 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var setField_exports = {}; +__export(setField_exports, { + $setField: () => $setField +}); +module.exports = __toCommonJS(setField_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $setField = (obj, expr, options) => { + const { input, field, value } = (0, import_core.computeValue)( + obj, + expr, + null, + options + ); + if ((0, import_util.isNil)(input)) return null; + (0, import_util.assert)( + (0, import_util.isObject)(input), + "$setField expression 'input' must evaluate to an object" + ); + (0, import_util.assert)( + (0, import_util.isString)(field), + "$setField expression 'field' must evaluate to a string" + ); + const newObj = { ...input }; + if (expr.value == "$$REMOVE") { + delete newObj[field]; + } else { + newObj[field] = value; + } + return newObj; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $setField +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/object/unsetField.js b/node_modules/mingo/dist/cjs/operators/expression/object/unsetField.js new file mode 100644 index 0000000..20b2209 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/object/unsetField.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var unsetField_exports = {}; +__export(unsetField_exports, { + $unsetField: () => $unsetField +}); +module.exports = __toCommonJS(unsetField_exports); +var import_setField = require("./setField"); +const $unsetField = (obj, expr, options) => { + return (0, import_setField.$setField)( + obj, + { + ...expr, + value: "$$REMOVE" + }, + options + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $unsetField +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/percentile.js b/node_modules/mingo/dist/cjs/operators/expression/percentile.js new file mode 100644 index 0000000..c74b210 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/percentile.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var percentile_exports = {}; +__export(percentile_exports, { + $percentile: () => $percentile +}); +module.exports = __toCommonJS(percentile_exports); +var import_core = require("../../core"); +var import_percentile = require("../accumulator/percentile"); +const $percentile = (obj, expr, options) => { + const input = (0, import_core.computeValue)(obj, expr.input, null, options); + return (0, import_percentile.$percentile)(input, { ...expr, input: "$$CURRENT" }, options); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $percentile +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/set/allElementsTrue.js b/node_modules/mingo/dist/cjs/operators/expression/set/allElementsTrue.js new file mode 100644 index 0000000..dd4720a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/set/allElementsTrue.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var allElementsTrue_exports = {}; +__export(allElementsTrue_exports, { + $allElementsTrue: () => $allElementsTrue +}); +module.exports = __toCommonJS(allElementsTrue_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $allElementsTrue = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options)[0]; + return args.every((v) => (0, import_util.truthy)(v, options.useStrictMode)); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $allElementsTrue +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/set/anyElementTrue.js b/node_modules/mingo/dist/cjs/operators/expression/set/anyElementTrue.js new file mode 100644 index 0000000..eec21a4 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/set/anyElementTrue.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var anyElementTrue_exports = {}; +__export(anyElementTrue_exports, { + $anyElementTrue: () => $anyElementTrue +}); +module.exports = __toCommonJS(anyElementTrue_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $anyElementTrue = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options)[0]; + return args.some((v) => (0, import_util.truthy)(v, options.useStrictMode)); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $anyElementTrue +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/set/index.js b/node_modules/mingo/dist/cjs/operators/expression/set/index.js new file mode 100644 index 0000000..efa571c --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/set/index.js @@ -0,0 +1,33 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var set_exports = {}; +module.exports = __toCommonJS(set_exports); +__reExport(set_exports, require("./allElementsTrue"), module.exports); +__reExport(set_exports, require("./anyElementTrue"), module.exports); +__reExport(set_exports, require("./setDifference"), module.exports); +__reExport(set_exports, require("./setEquals"), module.exports); +__reExport(set_exports, require("./setIntersection"), module.exports); +__reExport(set_exports, require("./setIsSubset"), module.exports); +__reExport(set_exports, require("./setUnion"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./allElementsTrue"), + ...require("./anyElementTrue"), + ...require("./setDifference"), + ...require("./setEquals"), + ...require("./setIntersection"), + ...require("./setIsSubset"), + ...require("./setUnion") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/set/setDifference.js b/node_modules/mingo/dist/cjs/operators/expression/set/setDifference.js new file mode 100644 index 0000000..ecb7de4 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/set/setDifference.js @@ -0,0 +1,40 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var setDifference_exports = {}; +__export(setDifference_exports, { + $setDifference: () => $setDifference +}); +module.exports = __toCommonJS(setDifference_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $setDifference = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(args)) return null; + (0, import_util.assert)((0, import_util.isArray)(args), "$setDifference must be an arrays."); + if (args.some(import_util.isNil)) return null; + (0, import_util.assert)(args.length == 2, `$setDifference takes exactly 2 arguments.`); + (0, import_util.assert)(args.every(import_util.isArray), "$setDifference operands must be arrays."); + const m = import_util.ValueMap.init(options.hashFunction); + args[0].forEach((v) => m.set(v, true)); + args[1].forEach((v) => m.delete(v)); + return Array.from(m.keys()); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $setDifference +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/set/setEquals.js b/node_modules/mingo/dist/cjs/operators/expression/set/setEquals.js new file mode 100644 index 0000000..bf9dffc --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/set/setEquals.js @@ -0,0 +1,48 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var setEquals_exports = {}; +__export(setEquals_exports, { + $setEquals: () => $setEquals +}); +module.exports = __toCommonJS(setEquals_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $setEquals = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + (0, import_util.assert)( + (0, import_util.isArray)(args) && args.every(import_util.isArray), + "$setEquals operands must be arrays." + ); + const map = import_util.ValueMap.init(); + args[0].every((v, i) => map.set(v, i)); + for (let i = 1; i < args.length; i++) { + const arr = args[i]; + const set = /* @__PURE__ */ new Set(); + for (let j = 0; j < arr.length; j++) { + const n = map.get(arr[j]) ?? -1; + if (n === -1) return false; + set.add(n); + } + if (set.size !== map.size) return false; + } + return true; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $setEquals +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/set/setIntersection.js b/node_modules/mingo/dist/cjs/operators/expression/set/setIntersection.js new file mode 100644 index 0000000..d03d724 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/set/setIntersection.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var setIntersection_exports = {}; +__export(setIntersection_exports, { + $setIntersection: () => $setIntersection +}); +module.exports = __toCommonJS(setIntersection_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $setIntersection = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(args)) return null; + (0, import_util.assert)( + (0, import_util.isArray)(args) && args.every(import_util.isArray), + "$setIntersection operands must be arrays." + ); + return (0, import_util.intersection)(args, options?.hashFunction); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $setIntersection +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/set/setIsSubset.js b/node_modules/mingo/dist/cjs/operators/expression/set/setIsSubset.js new file mode 100644 index 0000000..1472857 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/set/setIsSubset.js @@ -0,0 +1,46 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var setIsSubset_exports = {}; +__export(setIsSubset_exports, { + $setIsSubset: () => $setIsSubset +}); +module.exports = __toCommonJS(setIsSubset_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $setIsSubset = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + (0, import_util.assert)( + (0, import_util.isArray)(args) && args.every(import_util.isArray), + "$setIsSubset operands must be arrays." + ); + const first = args[0]; + const second = args[1]; + const map = import_util.ValueMap.init(); + const set = /* @__PURE__ */ new Set(); + first.every((v, i) => map.set(v, i)); + for (const v of second) { + set.add(map.get(v) ?? -1); + if (set.size > map.size) return true; + } + set.delete(-1); + return set.size == map.size; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $setIsSubset +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/set/setUnion.js b/node_modules/mingo/dist/cjs/operators/expression/set/setUnion.js new file mode 100644 index 0000000..064c2a1 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/set/setUnion.js @@ -0,0 +1,35 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var setUnion_exports = {}; +__export(setUnion_exports, { + $setUnion: () => $setUnion +}); +module.exports = __toCommonJS(setUnion_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $setUnion = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(args)) return null; + (0, import_util.assert)((0, import_util.isArray)(args), "$setUnion operands must be arrays."); + if (args.some(import_util.isNil)) return null; + return (0, import_util.unique)((0, import_util.flatten)(args), options?.hashFunction); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $setUnion +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/_internal.js b/node_modules/mingo/dist/cjs/operators/expression/string/_internal.js new file mode 100644 index 0000000..3a9a30b --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/_internal.js @@ -0,0 +1,115 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var internal_exports = {}; +__export(internal_exports, { + regexSearch: () => regexSearch, + trimString: () => trimString +}); +module.exports = __toCommonJS(internal_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const WHITESPACE_CHARS = [ + 0, + // '\0' Null character + 32, + // ' ', Space + 9, + // '\t' Horizontal tab + 10, + // '\n' Line feed/new line + 11, + // '\v' Vertical tab + 12, + // '\f' Form feed + 13, + // '\r' Carriage return + 160, + // Non-breaking space + 5760, + // Ogham space mark + 8192, + // En quad + 8193, + // Em quad + 8194, + // En space + 8195, + // Em space + 8196, + // Three-per-em space + 8197, + // Four-per-em space + 8198, + // Six-per-em space + 8199, + // Figure space + 8200, + // Punctuation space + 8201, + // Thin space + 8202 + // Hair space +]; +function trimString(obj, expr, options, trimOpts) { + const val = (0, import_core.computeValue)(obj, expr, null, options); + const s = val.input; + if ((0, import_util.isNil)(s)) return null; + const codepoints = (0, import_util.isNil)(val.chars) ? WHITESPACE_CHARS : val.chars.split("").map((c) => c.codePointAt(0)); + let i = 0; + let j = s.length - 1; + while (trimOpts.left && i <= j && codepoints.indexOf(s[i].codePointAt(0)) !== -1) + i++; + while (trimOpts.right && i <= j && codepoints.indexOf(s[j].codePointAt(0)) !== -1) + j--; + return s.substring(i, j + 1); +} +function regexSearch(obj, expr, options, reOpts) { + const val = (0, import_core.computeValue)(obj, expr, null, options); + if (!(0, import_util.isString)(val.input)) return []; + const regexOptions = val.options; + if (regexOptions) { + (0, import_util.assert)( + regexOptions.indexOf("x") === -1, + "extended capability option 'x' not supported" + ); + (0, import_util.assert)(regexOptions.indexOf("g") === -1, "global option 'g' not supported"); + } + let input = val.input; + const re = new RegExp(val.regex, regexOptions); + let m; + const matches = new Array(); + let offset = 0; + while (m = re.exec(input)) { + const result = { + match: m[0], + idx: m.index + offset, + captures: [] + }; + for (let i = 1; i < m.length; i++) result.captures.push(m[i] || null); + matches.push(result); + if (!reOpts.global) break; + offset = m.index + m[0].length; + input = input.substring(offset); + } + return matches; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + regexSearch, + trimString +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/concat.js b/node_modules/mingo/dist/cjs/operators/expression/string/concat.js new file mode 100644 index 0000000..136536d --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/concat.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var concat_exports = {}; +__export(concat_exports, { + $concat: () => $concat +}); +module.exports = __toCommonJS(concat_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $concat = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + (0, import_util.assert)( + args.every((v) => (0, import_util.isString)(v) || (0, import_util.isNil)(v)), + "$concat only supports strings." + ); + if (args.some(import_util.isNil)) return null; + return args.join(""); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $concat +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/index.js b/node_modules/mingo/dist/cjs/operators/expression/string/index.js new file mode 100644 index 0000000..1112c79 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/index.js @@ -0,0 +1,57 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var string_exports = {}; +module.exports = __toCommonJS(string_exports); +__reExport(string_exports, require("./concat"), module.exports); +__reExport(string_exports, require("./indexOfBytes"), module.exports); +__reExport(string_exports, require("./ltrim"), module.exports); +__reExport(string_exports, require("./regexFind"), module.exports); +__reExport(string_exports, require("./regexFindAll"), module.exports); +__reExport(string_exports, require("./regexMatch"), module.exports); +__reExport(string_exports, require("./replaceAll"), module.exports); +__reExport(string_exports, require("./replaceOne"), module.exports); +__reExport(string_exports, require("./rtrim"), module.exports); +__reExport(string_exports, require("./split"), module.exports); +__reExport(string_exports, require("./strcasecmp"), module.exports); +__reExport(string_exports, require("./strLenBytes"), module.exports); +__reExport(string_exports, require("./strLenCP"), module.exports); +__reExport(string_exports, require("./substr"), module.exports); +__reExport(string_exports, require("./substrBytes"), module.exports); +__reExport(string_exports, require("./substrCP"), module.exports); +__reExport(string_exports, require("./toLower"), module.exports); +__reExport(string_exports, require("./toUpper"), module.exports); +__reExport(string_exports, require("./trim"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./concat"), + ...require("./indexOfBytes"), + ...require("./ltrim"), + ...require("./regexFind"), + ...require("./regexFindAll"), + ...require("./regexMatch"), + ...require("./replaceAll"), + ...require("./replaceOne"), + ...require("./rtrim"), + ...require("./split"), + ...require("./strcasecmp"), + ...require("./strLenBytes"), + ...require("./strLenCP"), + ...require("./substr"), + ...require("./substrBytes"), + ...require("./substrCP"), + ...require("./toLower"), + ...require("./toUpper"), + ...require("./trim") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/indexOfBytes.js b/node_modules/mingo/dist/cjs/operators/expression/string/indexOfBytes.js new file mode 100644 index 0000000..e104ef2 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/indexOfBytes.js @@ -0,0 +1,46 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var indexOfBytes_exports = {}; +__export(indexOfBytes_exports, { + $indexOfBytes: () => $indexOfBytes +}); +module.exports = __toCommonJS(indexOfBytes_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $indexOfBytes = (obj, expr, options) => { + const arr = (0, import_core.computeValue)(obj, expr, null, options); + const errorMsg = "$indexOfBytes expression resolves to invalid an argument"; + if ((0, import_util.isNil)(arr[0])) return null; + (0, import_util.assert)((0, import_util.isString)(arr[0]) && (0, import_util.isString)(arr[1]), errorMsg); + const str = arr[0]; + const searchStr = arr[1]; + let start = arr[2]; + let end = arr[3]; + let valid = (0, import_util.isNil)(start) || (0, import_util.isNumber)(start) && start >= 0 && Math.round(start) === start; + valid = valid && ((0, import_util.isNil)(end) || (0, import_util.isNumber)(end) && end >= 0 && Math.round(end) === end); + (0, import_util.assert)(valid, errorMsg); + start = start || 0; + end = end || str.length; + if (start > end) return -1; + const index = str.substring(start, end).indexOf(searchStr); + return index > -1 ? index + start : index; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $indexOfBytes +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/ltrim.js b/node_modules/mingo/dist/cjs/operators/expression/string/ltrim.js new file mode 100644 index 0000000..60f84c4 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/ltrim.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var ltrim_exports = {}; +__export(ltrim_exports, { + $ltrim: () => $ltrim +}); +module.exports = __toCommonJS(ltrim_exports); +var import_internal = require("./_internal"); +const $ltrim = (obj, expr, options) => { + return (0, import_internal.trimString)(obj, expr, options, { left: true, right: false }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $ltrim +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/regexFind.js b/node_modules/mingo/dist/cjs/operators/expression/string/regexFind.js new file mode 100644 index 0000000..274d0da --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/regexFind.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var regexFind_exports = {}; +__export(regexFind_exports, { + $regexFind: () => $regexFind +}); +module.exports = __toCommonJS(regexFind_exports); +var import_internal = require("./_internal"); +const $regexFind = (obj, expr, options) => { + const result = (0, import_internal.regexSearch)(obj, expr, options, { global: false }); + return result && result.length > 0 ? result[0] : null; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $regexFind +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/regexFindAll.js b/node_modules/mingo/dist/cjs/operators/expression/string/regexFindAll.js new file mode 100644 index 0000000..f54990b --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/regexFindAll.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var regexFindAll_exports = {}; +__export(regexFindAll_exports, { + $regexFindAll: () => $regexFindAll +}); +module.exports = __toCommonJS(regexFindAll_exports); +var import_internal = require("./_internal"); +const $regexFindAll = (obj, expr, options) => { + return (0, import_internal.regexSearch)(obj, expr, options, { global: true }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $regexFindAll +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/regexMatch.js b/node_modules/mingo/dist/cjs/operators/expression/string/regexMatch.js new file mode 100644 index 0000000..1ff11d8 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/regexMatch.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var regexMatch_exports = {}; +__export(regexMatch_exports, { + $regexMatch: () => $regexMatch +}); +module.exports = __toCommonJS(regexMatch_exports); +var import_internal = require("./_internal"); +const $regexMatch = (obj, expr, options) => { + return (0, import_internal.regexSearch)(obj, expr, options, { global: false }).length != 0; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $regexMatch +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/replaceAll.js b/node_modules/mingo/dist/cjs/operators/expression/string/replaceAll.js new file mode 100644 index 0000000..14f31c4 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/replaceAll.js @@ -0,0 +1,38 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var replaceAll_exports = {}; +__export(replaceAll_exports, { + $replaceAll: () => $replaceAll +}); +module.exports = __toCommonJS(replaceAll_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $replaceAll = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + const arr = [args.input, args.find, args.replacement]; + if (arr.some(import_util.isNil)) return null; + (0, import_util.assert)( + arr.every(import_util.isString), + "$replaceAll expression fields must evaluate to string" + ); + return args.input.replace(new RegExp(args.find, "g"), args.replacement); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $replaceAll +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/replaceOne.js b/node_modules/mingo/dist/cjs/operators/expression/string/replaceOne.js new file mode 100644 index 0000000..edd353c --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/replaceOne.js @@ -0,0 +1,38 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var replaceOne_exports = {}; +__export(replaceOne_exports, { + $replaceOne: () => $replaceOne +}); +module.exports = __toCommonJS(replaceOne_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $replaceOne = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + const arr = [args.input, args.find, args.replacement]; + if (arr.some(import_util.isNil)) return null; + (0, import_util.assert)( + arr.every(import_util.isString), + "$replaceOne expression fields must evaluate to string" + ); + return args.input.replace(args.find, args.replacement); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $replaceOne +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/rtrim.js b/node_modules/mingo/dist/cjs/operators/expression/string/rtrim.js new file mode 100644 index 0000000..00d1c9e --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/rtrim.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var rtrim_exports = {}; +__export(rtrim_exports, { + $rtrim: () => $rtrim +}); +module.exports = __toCommonJS(rtrim_exports); +var import_internal = require("./_internal"); +const $rtrim = (obj, expr, options) => { + return (0, import_internal.trimString)(obj, expr, options, { left: false, right: true }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $rtrim +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/split.js b/node_modules/mingo/dist/cjs/operators/expression/string/split.js new file mode 100644 index 0000000..02dc680 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/split.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var split_exports = {}; +__export(split_exports, { + $split: () => $split +}); +module.exports = __toCommonJS(split_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $split = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(args[0])) return null; + (0, import_util.assert)( + args.every(import_util.isString), + "$split expression must result to array(2) of strings" + ); + return args[0].split(args[1]); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $split +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/strLenBytes.js b/node_modules/mingo/dist/cjs/operators/expression/string/strLenBytes.js new file mode 100644 index 0000000..0c63b2a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/strLenBytes.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var strLenBytes_exports = {}; +__export(strLenBytes_exports, { + $strLenBytes: () => $strLenBytes +}); +module.exports = __toCommonJS(strLenBytes_exports); +var import_core = require("../../../core"); +const $strLenBytes = (obj, expr, options) => { + return ~-encodeURI((0, import_core.computeValue)(obj, expr, null, options)).split( + /%..|./ + ).length; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $strLenBytes +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/strLenCP.js b/node_modules/mingo/dist/cjs/operators/expression/string/strLenCP.js new file mode 100644 index 0000000..413627f --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/strLenCP.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var strLenCP_exports = {}; +__export(strLenCP_exports, { + $strLenCP: () => $strLenCP +}); +module.exports = __toCommonJS(strLenCP_exports); +var import_core = require("../../../core"); +const $strLenCP = (obj, expr, options) => { + return (0, import_core.computeValue)(obj, expr, null, options).length; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $strLenCP +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/strcasecmp.js b/node_modules/mingo/dist/cjs/operators/expression/string/strcasecmp.js new file mode 100644 index 0000000..31719c5 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/strcasecmp.js @@ -0,0 +1,41 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var strcasecmp_exports = {}; +__export(strcasecmp_exports, { + $strcasecmp: () => $strcasecmp +}); +module.exports = __toCommonJS(strcasecmp_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $strcasecmp = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + let a = args[0]; + let b = args[1]; + if ((0, import_util.isEqual)(a, b) || args.every(import_util.isNil)) return 0; + (0, import_util.assert)( + args.every(import_util.isString), + "$strcasecmp must resolve to array(2) of strings" + ); + a = a.toUpperCase(); + b = b.toUpperCase(); + return a > b && 1 || a < b && -1 || 0; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $strcasecmp +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/substr.js b/node_modules/mingo/dist/cjs/operators/expression/string/substr.js new file mode 100644 index 0000000..8c91921 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/substr.js @@ -0,0 +1,34 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var substr_exports = {}; +__export(substr_exports, { + $substr: () => $substr +}); +module.exports = __toCommonJS(substr_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $substr = (obj, expr, options) => { + const [s, start, count] = (0, import_core.computeValue)(obj, expr, null, options); + if (start < 0 || !(0, import_util.isString)(s)) return ""; + if (count < 0) return s.substring(start); + return s.substring(start, start + count); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $substr +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/substrBytes.js b/node_modules/mingo/dist/cjs/operators/expression/string/substrBytes.js new file mode 100644 index 0000000..8aeb77e --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/substrBytes.js @@ -0,0 +1,68 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var substrBytes_exports = {}; +__export(substrBytes_exports, { + $substrBytes: () => $substrBytes +}); +module.exports = __toCommonJS(substrBytes_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const UTF8_MASK = [192, 224, 240]; +function toUtf8(n) { + if (n < 128) return [n]; + let count = n < 2048 && 1 || n < 65536 && 2 || 3; + const offset = UTF8_MASK[count - 1]; + const utf8 = [(n >> 6 * count) + offset]; + while (count > 0) utf8.push(128 | n >> 6 * --count & 63); + return utf8; +} +function utf8Encode(s) { + const buf = []; + for (let i = 0, len = s.length; i < len; i++) { + buf.push(toUtf8(s.codePointAt(i))); + } + return buf; +} +const $substrBytes = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + const s = args[0]; + const index = args[1]; + const count = args[2]; + (0, import_util.assert)( + (0, import_util.isString)(s) && (0, import_util.isNumber)(index) && index >= 0 && (0, import_util.isNumber)(count) && count >= 0, + "$substrBytes: invalid arguments" + ); + const buf = utf8Encode(s); + const validIndex = []; + let acc = 0; + for (let i = 0; i < buf.length; i++) { + validIndex.push(acc); + acc += buf[i].length; + } + const begin = validIndex.indexOf(index); + const end = validIndex.indexOf(index + count); + (0, import_util.assert)( + begin > -1 && end > -1, + "$substrBytes: invalid range, start or end index is a UTF-8 continuation byte." + ); + return s.substring(begin, end); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $substrBytes +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/substrCP.js b/node_modules/mingo/dist/cjs/operators/expression/string/substrCP.js new file mode 100644 index 0000000..ca6db2a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/substrCP.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var substrCP_exports = {}; +__export(substrCP_exports, { + $substrCP: () => $substrCP +}); +module.exports = __toCommonJS(substrCP_exports); +var import_substr = require("./substr"); +const $substrCP = (obj, expr, options) => { + return (0, import_substr.$substr)(obj, expr, options); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $substrCP +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/toLower.js b/node_modules/mingo/dist/cjs/operators/expression/string/toLower.js new file mode 100644 index 0000000..9a7be81 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/toLower.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var toLower_exports = {}; +__export(toLower_exports, { + $toLower: () => $toLower +}); +module.exports = __toCommonJS(toLower_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $toLower = (obj, expr, options) => { + const value = (0, import_core.computeValue)(obj, expr, null, options); + return (0, import_util.isEmpty)(value) ? "" : value.toLowerCase(); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $toLower +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/toUpper.js b/node_modules/mingo/dist/cjs/operators/expression/string/toUpper.js new file mode 100644 index 0000000..c0e8af4 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/toUpper.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var toUpper_exports = {}; +__export(toUpper_exports, { + $toUpper: () => $toUpper +}); +module.exports = __toCommonJS(toUpper_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $toUpper = (obj, expr, options) => { + const value = (0, import_core.computeValue)(obj, expr, null, options); + return (0, import_util.isEmpty)(value) ? "" : value.toUpperCase(); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $toUpper +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/string/trim.js b/node_modules/mingo/dist/cjs/operators/expression/string/trim.js new file mode 100644 index 0000000..9450065 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/string/trim.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var trim_exports = {}; +__export(trim_exports, { + $trim: () => $trim +}); +module.exports = __toCommonJS(trim_exports); +var import_internal = require("./_internal"); +const $trim = (obj, expr, options) => { + return (0, import_internal.trimString)(obj, expr, options, { left: true, right: true }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $trim +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/_internal.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/_internal.js new file mode 100644 index 0000000..1352b40 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/_internal.js @@ -0,0 +1,52 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var internal_exports = {}; +__export(internal_exports, { + createTrignometryOperator: () => createTrignometryOperator +}); +module.exports = __toCommonJS(internal_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const FIXED_POINTS = { + undefined: null, + null: null, + NaN: NaN, + Infinity: new Error(), + "-Infinity": new Error() +}; +function createTrignometryOperator(f, fixedPoints = FIXED_POINTS) { + const fp = Object.assign({}, FIXED_POINTS, fixedPoints); + const keySet = new Set(Object.keys(fp)); + return (obj, expr, options) => { + const n = (0, import_core.computeValue)(obj, expr, null, options); + if (keySet.has(`${n}`)) { + const res = fp[`${n}`]; + if (res instanceof Error) { + throw new import_util.MingoError( + `cannot apply $${f.name} to -inf, value must in (-inf,inf)` + ); + } + return res; + } + return f(n); + }; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + createTrignometryOperator +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/acos.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/acos.js new file mode 100644 index 0000000..f89446a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/acos.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var acos_exports = {}; +__export(acos_exports, { + $acos: () => $acos +}); +module.exports = __toCommonJS(acos_exports); +var import_internal = require("./_internal"); +const $acos = (0, import_internal.createTrignometryOperator)(Math.acos, { + Infinity: Infinity, + 0: new Error() +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $acos +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/acosh.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/acosh.js new file mode 100644 index 0000000..6e706a2 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/acosh.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var acosh_exports = {}; +__export(acosh_exports, { + $acosh: () => $acosh +}); +module.exports = __toCommonJS(acosh_exports); +var import_internal = require("./_internal"); +const $acosh = (0, import_internal.createTrignometryOperator)(Math.acosh, { + Infinity: Infinity, + 0: new Error() +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $acosh +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/asin.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/asin.js new file mode 100644 index 0000000..55436b1 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/asin.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var asin_exports = {}; +__export(asin_exports, { + $asin: () => $asin +}); +module.exports = __toCommonJS(asin_exports); +var import_internal = require("./_internal"); +const $asin = (0, import_internal.createTrignometryOperator)(Math.asin); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $asin +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/asinh.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/asinh.js new file mode 100644 index 0000000..72c3258 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/asinh.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var asinh_exports = {}; +__export(asinh_exports, { + $asinh: () => $asinh +}); +module.exports = __toCommonJS(asinh_exports); +var import_internal = require("./_internal"); +const $asinh = (0, import_internal.createTrignometryOperator)(Math.asinh, { + Infinity: Infinity, + "-Infinity": -Infinity +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $asinh +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/atan.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/atan.js new file mode 100644 index 0000000..a777ed5 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/atan.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var atan_exports = {}; +__export(atan_exports, { + $atan: () => $atan +}); +module.exports = __toCommonJS(atan_exports); +var import_internal = require("./_internal"); +const $atan = (0, import_internal.createTrignometryOperator)(Math.atan); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $atan +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/atan2.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/atan2.js new file mode 100644 index 0000000..c2c3087 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/atan2.js @@ -0,0 +1,34 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var atan2_exports = {}; +__export(atan2_exports, { + $atan2: () => $atan2 +}); +module.exports = __toCommonJS(atan2_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $atan2 = (obj, expr, options) => { + const [y, x] = (0, import_core.computeValue)(obj, expr, null, options); + if (isNaN(y) || (0, import_util.isNil)(y)) return y; + if (isNaN(x) || (0, import_util.isNil)(x)) return x; + return Math.atan2(y, x); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $atan2 +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/atanh.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/atanh.js new file mode 100644 index 0000000..26ba5e2 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/atanh.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var atanh_exports = {}; +__export(atanh_exports, { + $atanh: () => $atanh +}); +module.exports = __toCommonJS(atanh_exports); +var import_internal = require("./_internal"); +const $atanh = (0, import_internal.createTrignometryOperator)(Math.atanh, { + 1: Infinity, + "-1": -Infinity +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $atanh +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/cos.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/cos.js new file mode 100644 index 0000000..3de88f3 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/cos.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var cos_exports = {}; +__export(cos_exports, { + $cos: () => $cos +}); +module.exports = __toCommonJS(cos_exports); +var import_internal = require("./_internal"); +const $cos = (0, import_internal.createTrignometryOperator)(Math.cos); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $cos +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/cosh.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/cosh.js new file mode 100644 index 0000000..63e39c0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/cosh.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var cosh_exports = {}; +__export(cosh_exports, { + $cosh: () => $cosh +}); +module.exports = __toCommonJS(cosh_exports); +var import_internal = require("./_internal"); +const $cosh = (0, import_internal.createTrignometryOperator)(Math.cosh, { + "-Infinity": Infinity, + Infinity: Infinity +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $cosh +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/degreesToRadians.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/degreesToRadians.js new file mode 100644 index 0000000..7fd484e --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/degreesToRadians.js @@ -0,0 +1,35 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var degreesToRadians_exports = {}; +__export(degreesToRadians_exports, { + $degreesToRadians: () => $degreesToRadians +}); +module.exports = __toCommonJS(degreesToRadians_exports); +var import_internal = require("./_internal"); +const RADIANS_FACTOR = Math.PI / 180; +const $degreesToRadians = (0, import_internal.createTrignometryOperator)( + (n) => n * RADIANS_FACTOR, + { + Infinity: Infinity, + "-Infinity": Infinity + } +); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $degreesToRadians +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/index.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/index.js new file mode 100644 index 0000000..0beee4a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/index.js @@ -0,0 +1,47 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var trignometry_exports = {}; +module.exports = __toCommonJS(trignometry_exports); +__reExport(trignometry_exports, require("./acos"), module.exports); +__reExport(trignometry_exports, require("./acosh"), module.exports); +__reExport(trignometry_exports, require("./asin"), module.exports); +__reExport(trignometry_exports, require("./asinh"), module.exports); +__reExport(trignometry_exports, require("./atan"), module.exports); +__reExport(trignometry_exports, require("./atan2"), module.exports); +__reExport(trignometry_exports, require("./atanh"), module.exports); +__reExport(trignometry_exports, require("./cos"), module.exports); +__reExport(trignometry_exports, require("./cosh"), module.exports); +__reExport(trignometry_exports, require("./degreesToRadians"), module.exports); +__reExport(trignometry_exports, require("./radiansToDegrees"), module.exports); +__reExport(trignometry_exports, require("./sin"), module.exports); +__reExport(trignometry_exports, require("./sinh"), module.exports); +__reExport(trignometry_exports, require("./tan"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./acos"), + ...require("./acosh"), + ...require("./asin"), + ...require("./asinh"), + ...require("./atan"), + ...require("./atan2"), + ...require("./atanh"), + ...require("./cos"), + ...require("./cosh"), + ...require("./degreesToRadians"), + ...require("./radiansToDegrees"), + ...require("./sin"), + ...require("./sinh"), + ...require("./tan") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/radiansToDegrees.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/radiansToDegrees.js new file mode 100644 index 0000000..54a75a5 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/radiansToDegrees.js @@ -0,0 +1,35 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var radiansToDegrees_exports = {}; +__export(radiansToDegrees_exports, { + $radiansToDegrees: () => $radiansToDegrees +}); +module.exports = __toCommonJS(radiansToDegrees_exports); +var import_internal = require("./_internal"); +const DEGREES_FACTOR = 180 / Math.PI; +const $radiansToDegrees = (0, import_internal.createTrignometryOperator)( + (n) => n * DEGREES_FACTOR, + { + Infinity: Infinity, + "-Infinity": -Infinity + } +); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $radiansToDegrees +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/sin.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/sin.js new file mode 100644 index 0000000..45e13b8 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/sin.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var sin_exports = {}; +__export(sin_exports, { + $sin: () => $sin +}); +module.exports = __toCommonJS(sin_exports); +var import_internal = require("./_internal"); +const $sin = (0, import_internal.createTrignometryOperator)(Math.sin); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $sin +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/sinh.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/sinh.js new file mode 100644 index 0000000..0322524 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/sinh.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var sinh_exports = {}; +__export(sinh_exports, { + $sinh: () => $sinh +}); +module.exports = __toCommonJS(sinh_exports); +var import_internal = require("./_internal"); +const $sinh = (0, import_internal.createTrignometryOperator)(Math.sinh, { + "-Infinity": -Infinity, + Infinity: Infinity +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $sinh +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/trignometry/tan.js b/node_modules/mingo/dist/cjs/operators/expression/trignometry/tan.js new file mode 100644 index 0000000..504fb8b --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/trignometry/tan.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var tan_exports = {}; +__export(tan_exports, { + $tan: () => $tan +}); +module.exports = __toCommonJS(tan_exports); +var import_internal = require("./_internal"); +const $tan = (0, import_internal.createTrignometryOperator)(Math.tan); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $tan +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/type/_internal.js b/node_modules/mingo/dist/cjs/operators/expression/type/_internal.js new file mode 100644 index 0000000..4c499ed --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/type/_internal.js @@ -0,0 +1,63 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var internal_exports = {}; +__export(internal_exports, { + MAX_INT: () => MAX_INT, + MAX_LONG: () => MAX_LONG, + MIN_INT: () => MIN_INT, + MIN_LONG: () => MIN_LONG, + TypeConvertError: () => TypeConvertError, + toInteger: () => toInteger +}); +module.exports = __toCommonJS(internal_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const MAX_INT = 2147483647; +const MIN_INT = -2147483648; +const MAX_LONG = Number.MAX_SAFE_INTEGER; +const MIN_LONG = Number.MIN_SAFE_INTEGER; +class TypeConvertError extends Error { + constructor(message) { + super(message); + } +} +function toInteger(obj, expr, options, min, max) { + const val = (0, import_core.computeValue)(obj, expr, null, options); + if (val === true) return 1; + if (val === false) return 0; + if ((0, import_util.isNil)(val)) return null; + if ((0, import_util.isDate)(val)) return val.getTime(); + const n = Number(val); + if ((0, import_util.isNumber)(n) && n >= min && n <= max) { + if (!(0, import_util.isString)(val) || n.toString().indexOf(".") === -1) { + return Math.trunc(n); + } + } + throw new TypeConvertError( + `cannot convert '${val}' to ${max == MAX_INT ? "int" : "long"}` + ); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + MAX_INT, + MAX_LONG, + MIN_INT, + MIN_LONG, + TypeConvertError, + toInteger +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/type/convert.js b/node_modules/mingo/dist/cjs/operators/expression/type/convert.js new file mode 100644 index 0000000..5595be9 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/type/convert.js @@ -0,0 +1,69 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var convert_exports = {}; +__export(convert_exports, { + $convert: () => $convert +}); +module.exports = __toCommonJS(convert_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_internal = require("./_internal"); +var import_toBool = require("./toBool"); +var import_toDate = require("./toDate"); +var import_toDouble = require("./toDouble"); +var import_toInt = require("./toInt"); +var import_toLong = require("./toLong"); +var import_toString = require("./toString"); +const $convert = (obj, expr, options) => { + const args = (0, import_core.computeValue)(obj, expr, null, options); + args.onNull = args.onNull === void 0 ? null : args.onNull; + if ((0, import_util.isNil)(args.input)) return args.onNull; + try { + switch (args.to) { + case 2: + case "string": + return (0, import_toString.$toString)(obj, args.input, options); + case 8: + case "boolean": + case "bool": + return (0, import_toBool.$toBool)(obj, args.input, options); + case 9: + case "date": + return (0, import_toDate.$toDate)(obj, args.input, options); + case 1: + case 19: + case "double": + case "decimal": + case "number": + return (0, import_toDouble.$toDouble)(obj, args.input, options); + case 16: + case "int": + return (0, import_toInt.$toInt)(obj, args.input, options); + case 18: + case "long": + return (0, import_toLong.$toLong)(obj, args.input, options); + } + } catch { + } + if (args.onError !== void 0) return args.onError; + throw new import_internal.TypeConvertError(`could not convert to type ${args.to}.`); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $convert +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/type/index.js b/node_modules/mingo/dist/cjs/operators/expression/type/index.js new file mode 100644 index 0000000..f892796 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/type/index.js @@ -0,0 +1,39 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var type_exports = {}; +module.exports = __toCommonJS(type_exports); +__reExport(type_exports, require("./convert"), module.exports); +__reExport(type_exports, require("./isNumber"), module.exports); +__reExport(type_exports, require("./toBool"), module.exports); +__reExport(type_exports, require("./toDate"), module.exports); +__reExport(type_exports, require("./toDecimal"), module.exports); +__reExport(type_exports, require("./toDouble"), module.exports); +__reExport(type_exports, require("./toInt"), module.exports); +__reExport(type_exports, require("./toLong"), module.exports); +__reExport(type_exports, require("./toString"), module.exports); +__reExport(type_exports, require("./type"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./convert"), + ...require("./isNumber"), + ...require("./toBool"), + ...require("./toDate"), + ...require("./toDecimal"), + ...require("./toDouble"), + ...require("./toInt"), + ...require("./toLong"), + ...require("./toString"), + ...require("./type") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/type/isNumber.js b/node_modules/mingo/dist/cjs/operators/expression/type/isNumber.js new file mode 100644 index 0000000..0bd5a18 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/type/isNumber.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var isNumber_exports = {}; +__export(isNumber_exports, { + $isNumber: () => $isNumber +}); +module.exports = __toCommonJS(isNumber_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $isNumber = (obj, expr, options) => { + const n = (0, import_core.computeValue)(obj, expr, null, options); + return (0, import_util.isNumber)(n); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $isNumber +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/type/toBool.js b/node_modules/mingo/dist/cjs/operators/expression/type/toBool.js new file mode 100644 index 0000000..6eac295 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/type/toBool.js @@ -0,0 +1,34 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var toBool_exports = {}; +__export(toBool_exports, { + $toBool: () => $toBool +}); +module.exports = __toCommonJS(toBool_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +const $toBool = (obj, expr, options) => { + const val = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(val)) return null; + if ((0, import_util.isString)(val)) return true; + return Boolean(val); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $toBool +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/type/toDate.js b/node_modules/mingo/dist/cjs/operators/expression/type/toDate.js new file mode 100644 index 0000000..08757bf --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/type/toDate.js @@ -0,0 +1,38 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var toDate_exports = {}; +__export(toDate_exports, { + $toDate: () => $toDate +}); +module.exports = __toCommonJS(toDate_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_internal = require("./_internal"); +const $toDate = (obj, expr, options) => { + const val = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isDate)(val)) return val; + if ((0, import_util.isNil)(val)) return null; + const d = new Date(val); + const n = d.getTime(); + if (!isNaN(n)) return d; + throw new import_internal.TypeConvertError(`cannot convert '${val}' to date`); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $toDate +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/type/toDecimal.js b/node_modules/mingo/dist/cjs/operators/expression/type/toDecimal.js new file mode 100644 index 0000000..4f56bf8 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/type/toDecimal.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var toDecimal_exports = {}; +__export(toDecimal_exports, { + $toDecimal: () => $toDecimal +}); +module.exports = __toCommonJS(toDecimal_exports); +var import_toDouble = require("./toDouble"); +const $toDecimal = import_toDouble.$toDouble; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $toDecimal +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/type/toDouble.js b/node_modules/mingo/dist/cjs/operators/expression/type/toDouble.js new file mode 100644 index 0000000..a467b19 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/type/toDouble.js @@ -0,0 +1,39 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var toDouble_exports = {}; +__export(toDouble_exports, { + $toDouble: () => $toDouble +}); +module.exports = __toCommonJS(toDouble_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_internal = require("./_internal"); +const $toDouble = (obj, expr, options) => { + const val = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(val)) return null; + if ((0, import_util.isDate)(val)) return val.getTime(); + if (val === true) return 1; + if (val === false) return 0; + const n = Number(val); + if ((0, import_util.isNumber)(n)) return n; + throw new import_internal.TypeConvertError(`cannot convert '${val}' to double/decimal`); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $toDouble +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/type/toInt.js b/node_modules/mingo/dist/cjs/operators/expression/type/toInt.js new file mode 100644 index 0000000..b580968 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/type/toInt.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var toInt_exports = {}; +__export(toInt_exports, { + $toInt: () => $toInt +}); +module.exports = __toCommonJS(toInt_exports); +var import_internal = require("./_internal"); +const $toInt = (obj, expr, options) => (0, import_internal.toInteger)(obj, expr, options, import_internal.MIN_INT, import_internal.MAX_INT); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $toInt +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/type/toLong.js b/node_modules/mingo/dist/cjs/operators/expression/type/toLong.js new file mode 100644 index 0000000..654a94f --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/type/toLong.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var toLong_exports = {}; +__export(toLong_exports, { + $toLong: () => $toLong +}); +module.exports = __toCommonJS(toLong_exports); +var import_internal = require("./_internal"); +const $toLong = (obj, expr, options) => (0, import_internal.toInteger)(obj, expr, options, import_internal.MIN_LONG, import_internal.MAX_LONG); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $toLong +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/type/toString.js b/node_modules/mingo/dist/cjs/operators/expression/type/toString.js new file mode 100644 index 0000000..2bc39fc --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/type/toString.js @@ -0,0 +1,44 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var toString_exports = {}; +__export(toString_exports, { + $toString: () => $toString +}); +module.exports = __toCommonJS(toString_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_dateToString = require("../date/dateToString"); +const $toString = (obj, expr, options) => { + const val = (0, import_core.computeValue)(obj, expr, null, options); + if ((0, import_util.isNil)(val)) return null; + if ((0, import_util.isDate)(val)) { + return (0, import_dateToString.$dateToString)( + obj, + { + date: expr, + format: "%Y-%m-%dT%H:%M:%S.%LZ" + }, + options + ); + } + return val.toString(); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $toString +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/type/type.js b/node_modules/mingo/dist/cjs/operators/expression/type/type.js new file mode 100644 index 0000000..61a6fd0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/type/type.js @@ -0,0 +1,42 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var type_exports = {}; +__export(type_exports, { + $type: () => $type +}); +module.exports = __toCommonJS(type_exports); +var import_core = require("../../../core"); +var import_util = require("../../../util"); +var import_internal = require("./_internal"); +const $type = (obj, expr, options) => { + const v = (0, import_core.computeValue)(obj, expr, null, options); + if (options.useStrictMode) { + if (v === void 0) return "missing"; + if (v === true || v === false) return "bool"; + if ((0, import_util.isNumber)(v)) { + if (v % 1 != 0) return "double"; + return v >= import_internal.MIN_INT && v <= import_internal.MAX_INT ? "int" : "long"; + } + if ((0, import_util.isRegExp)(v)) return "regex"; + } + return (0, import_util.typeOf)(v); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $type +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/variable/index.js b/node_modules/mingo/dist/cjs/operators/expression/variable/index.js new file mode 100644 index 0000000..370127c --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/variable/index.js @@ -0,0 +1,21 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var variable_exports = {}; +module.exports = __toCommonJS(variable_exports); +__reExport(variable_exports, require("./let"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./let") +}); diff --git a/node_modules/mingo/dist/cjs/operators/expression/variable/let.js b/node_modules/mingo/dist/cjs/operators/expression/variable/let.js new file mode 100644 index 0000000..2dbd464 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/expression/variable/let.js @@ -0,0 +1,39 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var let_exports = {}; +__export(let_exports, { + $let: () => $let +}); +module.exports = __toCommonJS(let_exports); +var import_core = require("../../../core"); +const $let = (obj, expr, options) => { + const variables = {}; + for (const [key, val] of Object.entries(expr.vars)) { + variables[key] = (0, import_core.computeValue)(obj, val, null, options); + } + return (0, import_core.computeValue)( + obj, + expr.in, + null, + import_core.ComputeOptions.init(options, obj, { variables }) + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $let +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/_internal.js b/node_modules/mingo/dist/cjs/operators/pipeline/_internal.js new file mode 100644 index 0000000..69832e3 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/_internal.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var internal_exports = {}; +__export(internal_exports, { + isUnbounded: () => isUnbounded +}); +module.exports = __toCommonJS(internal_exports); +const isUnbounded = (window) => { + const boundary = window?.documents || window?.range; + return !boundary || boundary[0] === "unbounded" && boundary[1] === "unbounded"; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + isUnbounded +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/addFields.js b/node_modules/mingo/dist/cjs/operators/pipeline/addFields.js new file mode 100644 index 0000000..b776fb0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/addFields.js @@ -0,0 +1,44 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var addFields_exports = {}; +__export(addFields_exports, { + $addFields: () => $addFields +}); +module.exports = __toCommonJS(addFields_exports); +var import_core = require("../../core"); +var import_util = require("../../util"); +const $addFields = (collection, expr, options) => { + const newFields = Object.keys(expr); + if (newFields.length === 0) return collection; + return collection.map((obj) => { + const newObj = { ...obj }; + for (const field of newFields) { + const newValue = (0, import_core.computeValue)(obj, expr[field], null, options); + if (newValue !== void 0) { + (0, import_util.setValue)(newObj, field, newValue); + } else { + (0, import_util.removeValue)(newObj, field); + } + } + return newObj; + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $addFields +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/bucket.js b/node_modules/mingo/dist/cjs/operators/pipeline/bucket.js new file mode 100644 index 0000000..ca091e3 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/bucket.js @@ -0,0 +1,97 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bucket_exports = {}; +__export(bucket_exports, { + $bucket: () => $bucket +}); +module.exports = __toCommonJS(bucket_exports); +var import_core = require("../../core"); +var import_lazy = require("../../lazy"); +var import_util = require("../../util"); +const $bucket = (collection, expr, options) => { + const bounds = [...expr.boundaries]; + const defaultKey = expr.default; + const lower = bounds[0]; + const upper = bounds[bounds.length - 1]; + const outputExpr = expr.output || { count: { $sum: 1 } }; + (0, import_util.assert)(bounds.length > 1, "$bucket must specify at least two boundaries."); + const isValid = bounds.every( + (v, i) => i === 0 || (0, import_util.typeOf)(v) === (0, import_util.typeOf)(bounds[i - 1]) && (0, import_util.compare)(v, bounds[i - 1]) > 0 + ); + (0, import_util.assert)( + isValid, + `$bucket: bounds must be of same type and in ascending order` + ); + if (!(0, import_util.isNil)(defaultKey) && (0, import_util.typeOf)(defaultKey) === (0, import_util.typeOf)(lower)) { + (0, import_util.assert)( + (0, import_util.compare)(defaultKey, upper) >= 0 || (0, import_util.compare)(defaultKey, lower) < 0, + "$bucket 'default' expression must be out of boundaries range" + ); + } + const createBuckets = () => { + const buckets = /* @__PURE__ */ new Map(); + for (let i = 0; i < bounds.length - 1; i++) { + buckets.set(bounds[i], []); + } + if (!(0, import_util.isNil)(defaultKey)) buckets.set(defaultKey, []); + collection.each((obj) => { + const key = (0, import_core.computeValue)(obj, expr.groupBy, null, options); + if ((0, import_util.isNil)(key) || (0, import_util.compare)(key, lower) < 0 || (0, import_util.compare)(key, upper) >= 0) { + (0, import_util.assert)( + !(0, import_util.isNil)(defaultKey), + "$bucket require a default for out of range values" + ); + buckets.get(defaultKey).push(obj); + } else { + (0, import_util.assert)( + (0, import_util.compare)(key, lower) >= 0 && (0, import_util.compare)(key, upper) < 0, + "$bucket 'groupBy' expression must resolve to a value in range of boundaries" + ); + const index = (0, import_util.findInsertIndex)(bounds, key); + const boundKey = bounds[Math.max(0, index - 1)]; + buckets.get(boundKey).push(obj); + } + }); + bounds.pop(); + if (!(0, import_util.isNil)(defaultKey)) bounds.push(defaultKey); + (0, import_util.assert)( + buckets.size === bounds.length, + "bounds and groups must be of equal size." + ); + return (0, import_lazy.Lazy)(bounds).map((key) => { + return { + ...(0, import_core.computeValue)( + buckets.get(key), + outputExpr, + null, + options + ), + _id: key + }; + }); + }; + let iterator; + return (0, import_lazy.Lazy)(() => { + if (!iterator) iterator = createBuckets(); + return iterator.next(); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $bucket +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/bucketAuto.js b/node_modules/mingo/dist/cjs/operators/pipeline/bucketAuto.js new file mode 100644 index 0000000..d805328 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/bucketAuto.js @@ -0,0 +1,707 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bucketAuto_exports = {}; +__export(bucketAuto_exports, { + $bucketAuto: () => $bucketAuto +}); +module.exports = __toCommonJS(bucketAuto_exports); +var import_core = require("../../core"); +var import_lazy = require("../../lazy"); +var import_util = require("../../util"); +const $bucketAuto = (collection, expr, options) => { + const { + buckets: bucketCount, + groupBy: groupByExpr, + output: optOutputExpr, + // Available only if the all groupBy values are numeric and none of them are NaN. + granularity + } = expr; + const outputExpr = optOutputExpr ?? { count: { $sum: 1 } }; + (0, import_util.assert)( + bucketCount > 0, + `$bucketAuto: 'buckets' field must be greater than 0, but found: ${bucketCount}` + ); + if (granularity) { + (0, import_util.assert)( + /^(POWERSOF2|1-2-5|E(6|12|24|48|96|192)|R(5|10|20|40|80))$/.test( + granularity + ), + `$bucketAuto: invalid granularity '${granularity}'.` + ); + } + const keyMap = /* @__PURE__ */ new Map(); + const setKey = !granularity ? (o, k) => keyMap.set(o, k) : (_, _2) => { + }; + const sorted = collection.map((o) => { + const k = (0, import_core.computeValue)(o, groupByExpr, null, options) ?? null; + (0, import_util.assert)( + !granularity || (0, import_util.isNumber)(k), + "$bucketAuto: groupBy values must be numeric when granularity is specified." + ); + setKey(o, k ?? null); + return [k ?? null, o]; + }).value(); + sorted.sort((x, y) => { + if ((0, import_util.isNil)(x[0])) return -1; + if ((0, import_util.isNil)(y[0])) return 1; + return (0, import_util.compare)(x[0], y[0]); + }); + let getNext; + if (!granularity) { + getNext = granularityDefault(sorted, bucketCount, keyMap); + } else if (granularity == "POWERSOF2") { + getNext = granularityPowerOfTwo( + sorted, + bucketCount + ); + } else { + getNext = granularityPreferredSeries( + sorted, + bucketCount, + granularity + ); + } + let terminate = false; + return (0, import_lazy.Lazy)(() => { + if (terminate) return { done: true }; + const { min, max, bucket, done } = getNext(); + terminate = done; + const outFields = (0, import_core.computeValue)( + bucket, + outputExpr, + null, + options + ); + for (const [k, v] of Object.entries(outFields)) { + if ((0, import_util.isArray)(v)) outFields[k] = v.filter((v2) => v2 !== void 0); + } + return { + done: false, + value: { + ...outFields, + _id: { min, max } + } + }; + }); +}; +function granularityDefault(sorted, bucketCount, keyMap) { + const size = sorted.length; + const approxBucketSize = Math.max(1, Math.round(sorted.length / bucketCount)); + let index = 0; + let nBuckets = 0; + return () => { + const isLastBucket = ++nBuckets == bucketCount; + const bucket = new Array(); + while (index < size && (isLastBucket || bucket.length < approxBucketSize || index > 0 && (0, import_util.isEqual)(sorted[index - 1][0], sorted[index][0]))) { + bucket.push(sorted[index++][1]); + } + const min = keyMap.get(bucket[0]); + let max; + if (index < size) { + max = sorted[index][0]; + } else { + max = keyMap.get(bucket[bucket.length - 1]); + } + (0, import_util.assert)( + (0, import_util.isNil)(max) || (0, import_util.isNil)(min) || min <= max, + `error: $bucketAuto boundary must be in order.` + ); + return { + min, + max, + bucket, + done: index >= size + }; + }; +} +function granularityPowerOfTwo(sorted, bucketCount) { + const size = sorted.length; + const approxBucketSize = Math.max(1, Math.round(sorted.length / bucketCount)); + const roundUp2 = (n) => n === 0 ? 0 : 2 ** (Math.floor(Math.log2(n)) + 1); + let index = 0; + let min = 0; + let max = 0; + return () => { + const bucket = new Array(); + const boundValue = roundUp2(max); + min = index > 0 ? max : 0; + while (bucket.length < approxBucketSize && index < size && (max === 0 || sorted[index][0] < boundValue)) { + bucket.push(sorted[index++][1]); + } + max = max == 0 ? roundUp2(sorted[index - 1][0]) : boundValue; + while (index < size && sorted[index][0] < max) { + bucket.push(sorted[index++][1]); + } + return { + min, + max, + bucket, + done: index >= size + }; + }; +} +const PREFERRED_NUMBERS = Object.freeze({ + // "Least rounded" Renard number series, taken from Wikipedia page on preferred + // numbers: https://en.wikipedia.org/wiki/Preferred_number#Renard_numbers + R5: [10, 16, 25, 40, 63], + R10: [100, 125, 160, 200, 250, 315, 400, 500, 630, 800], + R20: [ + 100, + 112, + 125, + 140, + 160, + 180, + 200, + 224, + 250, + 280, + 315, + 355, + 400, + 450, + 500, + 560, + 630, + 710, + 800, + 900 + ], + R40: [ + 100, + 106, + 112, + 118, + 125, + 132, + 140, + 150, + 160, + 170, + 180, + 190, + 200, + 212, + 224, + 236, + 250, + 265, + 280, + 300, + 315, + 355, + 375, + 400, + 425, + 450, + 475, + 500, + 530, + 560, + 600, + 630, + 670, + 710, + 750, + 800, + 850, + 900, + 950 + ], + R80: [ + 103, + 109, + 115, + 122, + 128, + 136, + 145, + 155, + 165, + 175, + 185, + 195, + 206, + 218, + 230, + 243, + 258, + 272, + 290, + 307, + 325, + 345, + 365, + 387, + 412, + 437, + 462, + 487, + 515, + 545, + 575, + 615, + 650, + 690, + 730, + 775, + 825, + 875, + 925, + 975 + ], + // https://en.wikipedia.org/wiki/Preferred_number#1-2-5_series + "1-2-5": [10, 20, 50], + // E series, taken from Wikipedia page on preferred numbers: + // https://en.wikipedia.org/wiki/Preferred_number#E_series + E6: [10, 15, 22, 33, 47, 68], + E12: [10, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68, 82], + E24: [ + 10, + 11, + 12, + 13, + 15, + 16, + 18, + 20, + 22, + 24, + 27, + 30, + 33, + 36, + 39, + 43, + 47, + 51, + 56, + 62, + 68, + 75, + 82, + 91 + ], + E48: [ + 100, + 105, + 110, + 115, + 121, + 127, + 133, + 140, + 147, + 154, + 162, + 169, + 178, + 187, + 196, + 205, + 215, + 226, + 237, + 249, + 261, + 274, + 287, + 301, + 316, + 332, + 348, + 365, + 383, + 402, + 422, + 442, + 464, + 487, + 511, + 536, + 562, + 590, + 619, + 649, + 681, + 715, + 750, + 787, + 825, + 866, + 909, + 953 + ], + E96: [ + 100, + 102, + 105, + 107, + 110, + 113, + 115, + 118, + 121, + 124, + 127, + 130, + 133, + 137, + 140, + 143, + 147, + 150, + 154, + 158, + 162, + 165, + 169, + 174, + 178, + 182, + 187, + 191, + 196, + 200, + 205, + 210, + 215, + 221, + 226, + 232, + 237, + 243, + 249, + 255, + 261, + 267, + 274, + 280, + 287, + 294, + 301, + 309, + 316, + 324, + 332, + 340, + 348, + 357, + 365, + 374, + 383, + 392, + 402, + 412, + 422, + 432, + 442, + 453, + 464, + 475, + 487, + 499, + 511, + 523, + 536, + 549, + 562, + 576, + 590, + 604, + 619, + 634, + 649, + 665, + 681, + 698, + 715, + 732, + 750, + 768, + 787, + 806, + 825, + 845, + 866, + 887, + 909, + 931, + 953, + 976 + ], + E192: [ + 100, + 101, + 102, + 104, + 105, + 106, + 107, + 109, + 110, + 111, + 113, + 114, + 115, + 117, + 118, + 120, + 121, + 123, + 124, + 126, + 127, + 129, + 130, + 132, + 133, + 135, + 137, + 138, + 140, + 142, + 143, + 145, + 147, + 149, + 150, + 152, + 154, + 156, + 158, + 160, + 162, + 164, + 165, + 167, + 169, + 172, + 174, + 176, + 178, + 180, + 182, + 184, + 187, + 189, + 191, + 193, + 196, + 198, + 200, + 203, + 205, + 208, + 210, + 213, + 215, + 218, + 221, + 223, + 226, + 229, + 232, + 234, + 237, + 240, + 243, + 246, + 249, + 252, + 255, + 258, + 261, + 264, + 267, + 271, + 274, + 277, + 280, + 284, + 287, + 291, + 294, + 298, + 301, + 305, + 309, + 312, + 316, + 320, + 324, + 328, + 332, + 336, + 340, + 344, + 348, + 352, + 357, + 361, + 365, + 370, + 374, + 379, + 383, + 388, + 392, + 397, + 402, + 407, + 412, + 417, + 422, + 427, + 432, + 437, + 442, + 448, + 453, + 459, + 464, + 470, + 475, + 481, + 487, + 493, + 499, + 505, + 511, + 517, + 523, + 530, + 536, + 542, + 549, + 556, + 562, + 569, + 576, + 583, + 590, + 597, + 604, + 612, + 619, + 626, + 634, + 642, + 649, + 657, + 665, + 673, + 681, + 690, + 698, + 706, + 715, + 723, + 732, + 741, + 750, + 759, + 768, + 777, + 787, + 796, + 806, + 816, + 825, + 835, + 845, + 856, + 866, + 876, + 887, + 898, + 909, + 920, + 931, + 942, + 953, + 965, + 976, + 988 + ] +}); +const roundUp = (n, granularity) => { + if (n == 0) return 0; + const series = PREFERRED_NUMBERS[granularity]; + const first = series[0]; + const last = series[series.length - 1]; + let multiplier = 1; + while (n >= last * multiplier) { + multiplier *= 10; + } + let previousMin = 0; + while (n < first * multiplier) { + previousMin = first * multiplier; + multiplier /= 10; + if (n >= last * multiplier) { + return previousMin; + } + } + (0, import_util.assert)( + n >= first * multiplier && n < last * multiplier, + "$bucketAuto: number out of range of series." + ); + const i = (0, import_util.findInsertIndex)(series, n, (a, b) => { + b *= multiplier; + if (a < b) return -1; + if (a > b) return 1; + return 0; + }); + const seriesNumber = series[i] * multiplier; + return n == seriesNumber ? series[i + 1] * multiplier : seriesNumber; +}; +function granularityPreferredSeries(sorted, bucketCount, granularity) { + const size = sorted.length; + const approxBucketSize = Math.max(1, Math.round(sorted.length / bucketCount)); + let index = 0; + let nBuckets = 0; + let min = 0; + let max = 0; + return () => { + const isLastBucket = ++nBuckets == bucketCount; + const bucket = new Array(); + min = index > 0 ? max : 0; + while (index < size && (isLastBucket || bucket.length < approxBucketSize)) { + bucket.push(sorted[index++][1]); + } + max = roundUp(sorted[index - 1][0], granularity); + const nItems = bucket.length; + while (index < size && (isLastBucket || sorted[index][0] < max)) { + bucket.push(sorted[index++][1]); + } + if (nItems != bucket.length) { + max = roundUp(sorted[index - 1][0], granularity); + } + (0, import_util.assert)(min < max, `$bucketAuto: ${min} < ${max}.`); + return { + min, + max, + bucket, + done: index >= size + }; + }; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $bucketAuto +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/count.js b/node_modules/mingo/dist/cjs/operators/pipeline/count.js new file mode 100644 index 0000000..e3ba8d0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/count.js @@ -0,0 +1,39 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var count_exports = {}; +__export(count_exports, { + $count: () => $count +}); +module.exports = __toCommonJS(count_exports); +var import_lazy = require("../../lazy"); +var import_util = require("../../util"); +const $count = (collection, expr, _options) => { + (0, import_util.assert)( + (0, import_util.isString)(expr) && !(0, import_util.isEmpty)(expr) && expr.indexOf(".") === -1 && expr.trim()[0] !== "$", + "Invalid expression value for $count" + ); + return (0, import_lazy.Lazy)([ + { + [expr]: collection.size() + } + ]); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $count +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/densify.js b/node_modules/mingo/dist/cjs/operators/pipeline/densify.js new file mode 100644 index 0000000..c957c6f --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/densify.js @@ -0,0 +1,196 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var densify_exports = {}; +__export(densify_exports, { + $densify: () => $densify +}); +module.exports = __toCommonJS(densify_exports); +var import_core = require("../../core"); +var import_lazy = require("../../lazy"); +var import_types = require("../../types"); +var import_util = require("../../util"); +var import_dateAdd = require("../expression/date/dateAdd"); +var import_sort = require("./sort"); +const EMPTY_OBJECT = Object.freeze({}); +const $densify = (collection, expr, options) => { + const { step, bounds, unit } = expr.range; + if (unit) { + (0, import_util.assert)(import_types.TIME_UNITS.includes(unit), ""); + (0, import_util.assert)( + Number.isInteger(step) && step > 0, + "The step parameter in a range statement must be a whole number when densifying a date range." + ); + } else { + (0, import_util.assert)( + (0, import_util.isNumber)(step) && step > 0, + "The step parameter in a range statement must be a strictly positive numeric value." + ); + } + if ((0, import_util.isArray)(bounds)) { + (0, import_util.assert)( + !!bounds && bounds.length === 2, + "A bounding array in a range statement must have exactly two elements." + ); + (0, import_util.assert)( + (bounds.every(import_util.isNumber) || bounds.every(import_util.isDate)) && bounds[0] < bounds[1], + "A bounding array must be an ascending array of either two dates or two numbers." + ); + (0, import_util.assert)( + unit && !bounds.some(import_util.isNumber), + "Numeric bounds may not have unit parameter." + ); + } + if (expr.partitionByFields) { + (0, import_util.assert)( + (0, import_util.isArray)(expr.partitionByFields), + "$densify: `partitionByFields` must be an array of strings" + ); + } + collection = (0, import_sort.$sort)(collection, { [expr.field]: 1 }, options); + const nilOptions = import_core.ComputeOptions.init(options, null); + const computeNextValue = (value) => { + return (0, import_util.isNumber)(value) ? value + step : (0, import_dateAdd.$dateAdd)( + EMPTY_OBJECT, + { startDate: value, unit, amount: step }, + nilOptions + ); + }; + const isValidUnit = !!unit && import_types.TIME_UNITS.includes(unit); + const getFieldValue = (o) => { + const v = (0, import_util.resolve)(o, expr.field); + if ((0, import_util.isNil)(v)) return v; + if ((0, import_util.isNumber)(v)) { + (0, import_util.assert)( + !isValidUnit, + "$densify: Encountered non-date value in collection when step has a date unit." + ); + } else if ((0, import_util.isDate)(v)) { + (0, import_util.assert)( + isValidUnit, + "$densify: Encountered date value in collection when step does not have a date unit." + ); + } else { + (0, import_util.assert)(false, "$densify: Densify field type must be numeric or a date"); + } + return v; + }; + const peekItem = new Array(); + const nilFieldsIterator = (0, import_lazy.Lazy)(() => { + const item = collection.next(); + const fieldValue = getFieldValue(item.value); + if ((0, import_util.isNil)(fieldValue)) return item; + peekItem.push(item); + return { done: true }; + }); + const nextDensifyValueMap = import_util.ValueMap.init( + options.hashFunction + ); + const [lower, upper] = (0, import_util.isArray)(bounds) ? bounds : [bounds, bounds]; + let maxFieldValue = void 0; + const updateMaxFieldValue = (value) => { + maxFieldValue = maxFieldValue === void 0 || maxFieldValue < value ? value : maxFieldValue; + }; + const rootKey = []; + const densifyIterator = (0, import_lazy.Lazy)(() => { + const item = peekItem.length > 0 ? peekItem.pop() : collection.next(); + if (item.done) return item; + let partitionKey = rootKey; + if ((0, import_util.isArray)(expr.partitionByFields)) { + partitionKey = expr.partitionByFields.map( + (k) => (0, import_util.resolve)(item.value, k) + ); + (0, import_util.assert)( + partitionKey.every(import_util.isString), + "$densify: Partition fields must evaluate to string values." + ); + } + (0, import_util.assert)((0, import_util.isObject)(item.value), "$densify: collection must contain documents"); + const itemValue = getFieldValue(item.value); + if (!nextDensifyValueMap.has(partitionKey)) { + if (lower == "full") { + if (!nextDensifyValueMap.has(rootKey)) { + nextDensifyValueMap.set(rootKey, itemValue); + } + nextDensifyValueMap.set(partitionKey, nextDensifyValueMap.get(rootKey)); + } else if (lower == "partition") { + nextDensifyValueMap.set(partitionKey, itemValue); + } else { + nextDensifyValueMap.set(partitionKey, lower); + } + } + const densifyValue = nextDensifyValueMap.get(partitionKey); + if ( + // current item field value is lower than current densify value. + itemValue <= densifyValue || // range value equals or exceeds upper bound + upper != "full" && upper != "partition" && densifyValue >= upper + ) { + if (densifyValue <= itemValue) { + nextDensifyValueMap.set(partitionKey, computeNextValue(densifyValue)); + } + updateMaxFieldValue(itemValue); + return item; + } + nextDensifyValueMap.set(partitionKey, computeNextValue(densifyValue)); + updateMaxFieldValue(densifyValue); + const denseObj = { [expr.field]: densifyValue }; + if (partitionKey) { + partitionKey.forEach((v, i) => { + denseObj[expr.partitionByFields[i]] = v; + }); + } + peekItem.push(item); + return { done: false, value: denseObj }; + }); + if (lower !== "full") return (0, import_lazy.concat)(nilFieldsIterator, densifyIterator); + let paritionIndex = -1; + let partitionKeysSet = void 0; + const fullBoundsIterator = (0, import_lazy.Lazy)(() => { + if (paritionIndex === -1) { + const fullDensifyValue = nextDensifyValueMap.get(rootKey); + nextDensifyValueMap.delete(rootKey); + partitionKeysSet = Array.from(nextDensifyValueMap.keys()); + if (partitionKeysSet.length === 0) { + partitionKeysSet.push(rootKey); + nextDensifyValueMap.set(rootKey, fullDensifyValue); + } + paritionIndex++; + } + do { + const partitionKey = partitionKeysSet[paritionIndex]; + const partitionMaxValue = nextDensifyValueMap.get(partitionKey); + if (partitionMaxValue < maxFieldValue) { + nextDensifyValueMap.set( + partitionKey, + computeNextValue(partitionMaxValue) + ); + const denseObj = { [expr.field]: partitionMaxValue }; + partitionKey.forEach((v, i) => { + denseObj[expr.partitionByFields[i]] = v; + }); + return { done: false, value: denseObj }; + } + paritionIndex++; + } while (paritionIndex < partitionKeysSet.length); + return { done: true }; + }); + return (0, import_lazy.concat)(nilFieldsIterator, densifyIterator, fullBoundsIterator); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $densify +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/facet.js b/node_modules/mingo/dist/cjs/operators/pipeline/facet.js new file mode 100644 index 0000000..ee5eee5 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/facet.js @@ -0,0 +1,40 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var facet_exports = {}; +__export(facet_exports, { + $facet: () => $facet +}); +module.exports = __toCommonJS(facet_exports); +var import_aggregator = require("../../aggregator"); +var import_core = require("../../core"); +const $facet = (collection, expr, options) => { + return collection.transform((array) => { + const o = {}; + for (const [k, pipeline] of Object.entries(expr)) { + o[k] = new import_aggregator.Aggregator(pipeline, { + ...options, + processingMode: import_core.ProcessingMode.CLONE_INPUT + }).run(array); + } + return [o]; + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $facet +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/fill.js b/node_modules/mingo/dist/cjs/operators/pipeline/fill.js new file mode 100644 index 0000000..1fc6164 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/fill.js @@ -0,0 +1,82 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var fill_exports = {}; +__export(fill_exports, { + $fill: () => $fill +}); +module.exports = __toCommonJS(fill_exports); +var import_core = require("../../core"); +var import_util = require("../../util"); +var import_ifNull = require("../expression/conditional/ifNull"); +var import_linearFill = require("../window/linearFill"); +var import_locf = require("../window/locf"); +var import_addFields = require("./addFields"); +var import_setWindowFields = require("./setWindowFields"); +const FILL_METHODS = { + locf: "$locf", + linear: "$linearFill" +}; +const $fill = (collection, expr, options) => { + (0, import_util.assert)(!expr.sortBy || (0, import_util.isObject)(expr.sortBy), "sortBy must be an object."); + (0, import_util.assert)( + !!expr.sortBy || Object.values(expr.output).every((m) => (0, import_util.has)(m, "value")), + "sortBy required if any output field specifies a 'method'." + ); + (0, import_util.assert)( + !(expr.partitionBy && expr.partitionByFields), + "specify either partitionBy or partitionByFields." + ); + (0, import_util.assert)( + !expr.partitionByFields || expr?.partitionByFields?.every((s) => s[0] !== "$"), + "fields in partitionByFields cannot begin with '$'." + ); + options = (0, import_core.initOptions)(options); + options.context.addExpressionOps({ $ifNull: import_ifNull.$ifNull }); + options.context.addWindowOps({ $locf: import_locf.$locf, $linearFill: import_linearFill.$linearFill }); + const partitionExpr = expr.partitionBy || expr?.partitionByFields?.map((s) => "$" + s); + const valueExpr = {}; + const methodExpr = {}; + for (const [k, m] of Object.entries(expr.output)) { + if ((0, import_util.has)(m, "value")) { + valueExpr[k] = { $ifNull: [`$$CURRENT.${k}`, m["value"]] }; + } else { + const fillOp = FILL_METHODS[m["method"]]; + (0, import_util.assert)(!!fillOp, `invalid fill method '${m["method"]}'.`); + methodExpr[k] = { [fillOp]: "$" + k }; + } + } + if (Object.keys(methodExpr).length > 0) { + collection = (0, import_setWindowFields.$setWindowFields)( + collection, + { + sortBy: expr.sortBy || {}, + partitionBy: partitionExpr, + output: methodExpr + }, + options + ); + } + if (Object.keys(valueExpr).length > 0) { + collection = (0, import_addFields.$addFields)(collection, valueExpr, options); + } + return collection; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $fill +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/graphLookup.js b/node_modules/mingo/dist/cjs/operators/pipeline/graphLookup.js new file mode 100644 index 0000000..530335a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/graphLookup.js @@ -0,0 +1,78 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var graphLookup_exports = {}; +__export(graphLookup_exports, { + $graphLookup: () => $graphLookup +}); +module.exports = __toCommonJS(graphLookup_exports); +var import_core = require("../../core"); +var import_lazy = require("../../lazy"); +var import_util = require("../../util"); +var import_lookup = require("./lookup"); +const $graphLookup = (collection, expr, options) => { + const fromColl = (0, import_util.isString)(expr.from) ? options?.collectionResolver(expr.from) : expr.from; + const { + connectFromField, + connectToField, + as: asField, + maxDepth, + depthField, + restrictSearchWithMatch: matchExpr + } = expr; + const pipelineExpr = matchExpr ? { pipeline: [{ $match: matchExpr }] } : {}; + return collection.map((obj) => { + const matchObj = {}; + (0, import_util.setValue)( + matchObj, + connectFromField, + (0, import_core.computeValue)(obj, expr.startWith, null, options) + ); + let matches = [matchObj]; + let i = -1; + const map = import_util.ValueMap.init(options.hashFunction); + do { + i++; + matches = (0, import_util.flatten)( + (0, import_lookup.$lookup)( + (0, import_lazy.Lazy)(matches), + { + from: fromColl, + localField: connectFromField, + foreignField: connectToField, + as: asField, + ...pipelineExpr + }, + options + ).map((o) => o[asField]).value() + ); + const oldSize = map.size; + matches.forEach((k) => map.set(k, map.get(k) ?? i)); + if (oldSize == map.size) break; + } while ((0, import_util.isNil)(maxDepth) || i < maxDepth); + const result = new Array(map.size); + let n = 0; + map.forEach((v, k) => { + result[n++] = Object.assign(depthField ? { [depthField]: v } : {}, k); + }); + return { ...obj, [asField]: result }; + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $graphLookup +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/group.js b/node_modules/mingo/dist/cjs/operators/pipeline/group.js new file mode 100644 index 0000000..dd7d54e --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/group.js @@ -0,0 +1,61 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var group_exports = {}; +__export(group_exports, { + $group: () => $group +}); +module.exports = __toCommonJS(group_exports); +var import_core = require("../../core"); +var import_util = require("../../util"); +const ID_KEY = "_id"; +const $group = (collection, expr, options) => { + (0, import_util.assert)((0, import_util.has)(expr, ID_KEY), "$group specification must include an '_id'"); + const idExpr = expr[ID_KEY]; + const copts = import_core.ComputeOptions.init(options); + const newFields = Object.keys(expr).filter((k) => k != ID_KEY); + return collection.transform((coll) => { + const partitions = (0, import_util.groupBy)( + coll, + (obj) => (0, import_core.computeValue)(obj, idExpr, null, options), + options.hashFunction + ); + let i = -1; + const partitionKeys = Array.from(partitions.keys()); + return () => { + if (++i === partitions.size) return { done: true }; + const groupId = partitionKeys[i]; + const obj = {}; + if (groupId !== void 0) { + obj[ID_KEY] = groupId; + } + for (const key of newFields) { + obj[key] = (0, import_core.computeValue)( + partitions.get(groupId), + expr[key], + null, + copts.update(null, { groupId }) + ); + } + return { value: obj, done: false }; + }; + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $group +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/index.js b/node_modules/mingo/dist/cjs/operators/pipeline/index.js new file mode 100644 index 0000000..8d239a2 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/index.js @@ -0,0 +1,73 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var pipeline_exports = {}; +module.exports = __toCommonJS(pipeline_exports); +__reExport(pipeline_exports, require("./addFields"), module.exports); +__reExport(pipeline_exports, require("./bucket"), module.exports); +__reExport(pipeline_exports, require("./bucketAuto"), module.exports); +__reExport(pipeline_exports, require("./count"), module.exports); +__reExport(pipeline_exports, require("./densify"), module.exports); +__reExport(pipeline_exports, require("./facet"), module.exports); +__reExport(pipeline_exports, require("./fill"), module.exports); +__reExport(pipeline_exports, require("./graphLookup"), module.exports); +__reExport(pipeline_exports, require("./group"), module.exports); +__reExport(pipeline_exports, require("./limit"), module.exports); +__reExport(pipeline_exports, require("./lookup"), module.exports); +__reExport(pipeline_exports, require("./match"), module.exports); +__reExport(pipeline_exports, require("./merge"), module.exports); +__reExport(pipeline_exports, require("./out"), module.exports); +__reExport(pipeline_exports, require("./project"), module.exports); +__reExport(pipeline_exports, require("./redact"), module.exports); +__reExport(pipeline_exports, require("./replaceRoot"), module.exports); +__reExport(pipeline_exports, require("./replaceWith"), module.exports); +__reExport(pipeline_exports, require("./sample"), module.exports); +__reExport(pipeline_exports, require("./set"), module.exports); +__reExport(pipeline_exports, require("./setWindowFields"), module.exports); +__reExport(pipeline_exports, require("./skip"), module.exports); +__reExport(pipeline_exports, require("./sort"), module.exports); +__reExport(pipeline_exports, require("./sortByCount"), module.exports); +__reExport(pipeline_exports, require("./unionWith"), module.exports); +__reExport(pipeline_exports, require("./unset"), module.exports); +__reExport(pipeline_exports, require("./unwind"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./addFields"), + ...require("./bucket"), + ...require("./bucketAuto"), + ...require("./count"), + ...require("./densify"), + ...require("./facet"), + ...require("./fill"), + ...require("./graphLookup"), + ...require("./group"), + ...require("./limit"), + ...require("./lookup"), + ...require("./match"), + ...require("./merge"), + ...require("./out"), + ...require("./project"), + ...require("./redact"), + ...require("./replaceRoot"), + ...require("./replaceWith"), + ...require("./sample"), + ...require("./set"), + ...require("./setWindowFields"), + ...require("./skip"), + ...require("./sort"), + ...require("./sortByCount"), + ...require("./unionWith"), + ...require("./unset"), + ...require("./unwind") +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/limit.js b/node_modules/mingo/dist/cjs/operators/pipeline/limit.js new file mode 100644 index 0000000..d0c3099 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/limit.js @@ -0,0 +1,27 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var limit_exports = {}; +__export(limit_exports, { + $limit: () => $limit +}); +module.exports = __toCommonJS(limit_exports); +const $limit = (collection, expr, _options) => collection.take(expr); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $limit +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/lookup.js b/node_modules/mingo/dist/cjs/operators/pipeline/lookup.js new file mode 100644 index 0000000..725f7e6 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/lookup.js @@ -0,0 +1,79 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var lookup_exports = {}; +__export(lookup_exports, { + $lookup: () => $lookup +}); +module.exports = __toCommonJS(lookup_exports); +var import_aggregator = require("../../aggregator"); +var import_core = require("../../core"); +var import_util = require("../../util"); +const $lookup = (collection, expr, options) => { + const joinColl = (0, import_util.isString)(expr.from) ? options?.collectionResolver(expr.from) : expr.from; + const { let: letExpr, pipeline, foreignField, localField } = expr; + const subQueryPipeline = pipeline || []; + let lookupEq = (_) => [true, []]; + if (foreignField && localField) { + const map = import_util.ValueMap.init(options.hashFunction); + for (const doc of joinColl) { + (0, import_util.ensureArray)((0, import_util.resolve)(doc, foreignField) ?? null).forEach((v) => { + const xs = map.get(v); + const arr = xs ?? []; + arr.push(doc); + if (arr !== xs) map.set(v, arr); + }); + } + lookupEq = (o) => { + const local = (0, import_util.resolve)(o, localField) ?? null; + if ((0, import_util.isArray)(local)) { + if (subQueryPipeline.length) { + return [local.some((v) => map.has(v)), null]; + } + const result2 = Array.from( + new Set((0, import_util.flatten)(local.map((v) => map.get(v), options.hashFunction))) + ); + return [result2.length > 0, result2]; + } + const result = map.get(local) ?? null; + return [result !== null, result ?? []]; + }; + if (subQueryPipeline.length === 0) { + return collection.map((obj) => { + return { + ...obj, + [expr.as]: lookupEq(obj).pop() + }; + }); + } + } + const agg = new import_aggregator.Aggregator(subQueryPipeline, options); + const opts = { ...options }; + return collection.map((obj) => { + const vars = (0, import_core.computeValue)(obj, letExpr, null, options); + opts.variables = { ...options.variables, ...vars }; + const [ok, res] = lookupEq(obj); + return { + ...obj, + [expr.as]: ok ? agg.run(joinColl, opts) : res + }; + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $lookup +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/match.js b/node_modules/mingo/dist/cjs/operators/pipeline/match.js new file mode 100644 index 0000000..b9efe79 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/match.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var match_exports = {}; +__export(match_exports, { + $match: () => $match +}); +module.exports = __toCommonJS(match_exports); +var import_query = require("../../query"); +const $match = (collection, expr, options) => { + const q = new import_query.Query(expr, options); + return collection.filter((o) => q.test(o)); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $match +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/merge.js b/node_modules/mingo/dist/cjs/operators/pipeline/merge.js new file mode 100644 index 0000000..85c6241 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/merge.js @@ -0,0 +1,102 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var merge_exports = {}; +__export(merge_exports, { + $merge: () => $merge +}); +module.exports = __toCommonJS(merge_exports); +var import_aggregator = require("../../aggregator"); +var import_core = require("../../core"); +var import_util = require("../../util"); +var import_expression = require("../expression"); +const $merge = (collection, expr, options) => { + const output = (0, import_util.isString)(expr.into) ? options?.collectionResolver(expr.into) : expr.into; + (0, import_util.assert)((0, import_util.isArray)(output), `$merge: option 'into' must resolve to an array`); + const onField = expr.on || options.idKey; + const getHash = (0, import_util.isString)(onField) ? (o) => (0, import_util.hashCode)((0, import_util.resolve)(o, onField), options.hashFunction) : (o) => (0, import_util.hashCode)(onField.map((s) => (0, import_util.resolve)(o, s), options.hashFunction)); + const map = import_util.ValueMap.init(); + for (let i = 0; i < output.length; i++) { + const obj = output[i]; + const k = getHash(obj); + (0, import_util.assert)( + !map.has(k), + "$merge: 'into' collection must have unique entries for the 'on' field." + ); + map.set(k, [obj, i]); + } + const copts = import_core.ComputeOptions.init(options); + return collection.map((o) => { + const k = getHash(o); + if (map.has(k)) { + const [target, i] = map.get(k); + const variables = (0, import_core.computeValue)( + target, + expr.let || { new: "$$ROOT" }, + null, + // 'root' is the item from the iteration. + copts.update(o) + ); + if ((0, import_util.isArray)(expr.whenMatched)) { + const aggregator = new import_aggregator.Aggregator(expr.whenMatched, { + ...options, + variables + }); + output[i] = aggregator.run([target])[0]; + } else { + switch (expr.whenMatched) { + case "replace": + output[i] = o; + break; + case "fail": + throw new import_util.MingoError( + "$merge: failed due to matching as specified by 'whenMatched' option." + ); + case "keepExisting": + break; + case "merge": + default: + output[i] = (0, import_expression.$mergeObjects)( + target, + [target, o], + // 'root' is the item from the iteration. + copts.update(o, { variables }) + ); + break; + } + } + } else { + switch (expr.whenNotMatched) { + case "discard": + break; + case "fail": + throw new import_util.MingoError( + "$merge: failed due to matching as specified by 'whenMatched' option." + ); + case "insert": + default: + output.push(o); + break; + } + } + return o; + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $merge +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/out.js b/node_modules/mingo/dist/cjs/operators/pipeline/out.js new file mode 100644 index 0000000..4aaa51a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/out.js @@ -0,0 +1,35 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var out_exports = {}; +__export(out_exports, { + $out: () => $out +}); +module.exports = __toCommonJS(out_exports); +var import_util = require("../../util"); +const $out = (collection, expr, options) => { + const outputColl = (0, import_util.isString)(expr) ? options?.collectionResolver(expr) : expr; + (0, import_util.assert)((0, import_util.isArray)(outputColl), `expression must resolve to an array`); + return collection.map((o) => { + outputColl.push((0, import_util.cloneDeep)(o)); + return o; + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $out +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/project.js b/node_modules/mingo/dist/cjs/operators/pipeline/project.js new file mode 100644 index 0000000..05aef0a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/project.js @@ -0,0 +1,144 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var project_exports = {}; +__export(project_exports, { + $project: () => $project +}); +module.exports = __toCommonJS(project_exports); +var import_core = require("../../core"); +var import_util = require("../../util"); +const $project = (collection, expr, options) => { + if ((0, import_util.isEmpty)(expr)) return collection; + validateExpression(expr, options); + return collection.map(createHandler(expr, import_core.ComputeOptions.init(options))); +}; +function createHandler(expr, options, isRoot = true) { + const idKey = options.idKey; + const expressionKeys = Object.keys(expr); + const excludedKeys = new Array(); + const includedKeys = new Array(); + const handlers = {}; + for (const key of expressionKeys) { + const subExpr = expr[key]; + if ((0, import_util.isNumber)(subExpr) || (0, import_util.isBoolean)(subExpr)) { + if (subExpr) { + includedKeys.push(key); + } else { + excludedKeys.push(key); + } + } else if ((0, import_util.isArray)(subExpr)) { + handlers[key] = (o) => subExpr.map((v) => (0, import_core.computeValue)(o, v, null, options.update(o)) ?? null); + } else if ((0, import_util.isObject)(subExpr)) { + const subExprKeys = Object.keys(subExpr); + const operator = subExprKeys.length == 1 ? subExprKeys[0] : ""; + const projectFn = (0, import_core.getOperator)( + "projection", + operator, + options + ); + if (projectFn) { + const foundSlice = operator === "$slice"; + if (foundSlice && !(0, import_util.ensureArray)(subExpr[operator]).every(import_util.isNumber)) { + handlers[key] = (o) => (0, import_core.computeValue)(o, subExpr, key, options.update(o)); + } else { + handlers[key] = (o) => projectFn(o, subExpr[operator], key, options.update(o)); + } + } else if ((0, import_util.isOperator)(operator)) { + handlers[key] = (o) => (0, import_core.computeValue)(o, subExpr[operator], operator, options); + } else { + validateExpression(subExpr, options); + handlers[key] = (o) => { + if (!(0, import_util.has)(o, key)) return (0, import_core.computeValue)(o, subExpr, null, options); + if (isRoot) options.update(o); + const target = (0, import_util.resolve)(o, key); + const fn = createHandler(subExpr, options, false); + if ((0, import_util.isArray)(target)) return target.map(fn); + if ((0, import_util.isObject)(target)) return fn(target); + return fn(o); + }; + } + } else { + handlers[key] = (0, import_util.isString)(subExpr) && subExpr[0] === "$" ? (o) => (0, import_core.computeValue)(o, subExpr, key, options) : (_) => subExpr; + } + } + const handlerKeys = Object.keys(handlers); + const idKeyExcluded = excludedKeys.includes(idKey); + const idKeyOnlyExcluded = isRoot && idKeyExcluded && excludedKeys.length === 1 && !includedKeys.length && !handlerKeys.length; + if (idKeyOnlyExcluded) { + return (o) => { + const newObj = { ...o }; + delete newObj[idKey]; + return newObj; + }; + } + const idKeyImplicit = isRoot && !idKeyExcluded && !includedKeys.includes(idKey); + const opts = { + preserveMissing: true + }; + return (o) => { + const newObj = {}; + if (excludedKeys.length && !includedKeys.length) { + (0, import_util.merge)(newObj, o); + for (const k of excludedKeys) { + (0, import_util.removeValue)(newObj, k, { descendArray: true }); + } + } + for (const k of includedKeys) { + const pathObj = (0, import_util.resolveGraph)(o, k, opts) ?? {}; + (0, import_util.merge)(newObj, pathObj); + } + if (includedKeys.length) (0, import_util.filterMissing)(newObj); + for (const k of handlerKeys) { + const value = handlers[k](o); + if (value === void 0) { + (0, import_util.removeValue)(newObj, k, { descendArray: true }); + } else { + (0, import_util.setValue)(newObj, k, value); + } + } + if (idKeyImplicit && (0, import_util.has)(o, idKey)) { + newObj[idKey] = (0, import_util.resolve)(o, idKey); + } + return newObj; + }; +} +function validateExpression(expr, options) { + let exclusions = false; + let inclusions = false; + for (const [k, v] of Object.entries(expr)) { + (0, import_util.assert)(!k.startsWith("$"), "Field names may not start with '$'."); + (0, import_util.assert)( + !k.endsWith(".$"), + "Positional projection operator '$' is not supported." + ); + if (k === options?.idKey) continue; + if (v === 0 || v === false) { + exclusions = true; + } else if (v === 1 || v === true) { + inclusions = true; + } + (0, import_util.assert)( + !(exclusions && inclusions), + "Projection cannot have a mix of inclusion and exclusion." + ); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $project +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/redact.js b/node_modules/mingo/dist/cjs/operators/pipeline/redact.js new file mode 100644 index 0000000..ba74229 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/redact.js @@ -0,0 +1,33 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var redact_exports = {}; +__export(redact_exports, { + $redact: () => $redact +}); +module.exports = __toCommonJS(redact_exports); +var import_core = require("../../core"); +const $redact = (collection, expr, options) => { + const copts = import_core.ComputeOptions.init(options); + return collection.map( + (obj) => (0, import_core.redact)(obj, expr, copts.update(obj)) + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $redact +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/replaceRoot.js b/node_modules/mingo/dist/cjs/operators/pipeline/replaceRoot.js new file mode 100644 index 0000000..fc5a5ff --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/replaceRoot.js @@ -0,0 +1,35 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var replaceRoot_exports = {}; +__export(replaceRoot_exports, { + $replaceRoot: () => $replaceRoot +}); +module.exports = __toCommonJS(replaceRoot_exports); +var import_core = require("../../core"); +var import_util = require("../../util"); +const $replaceRoot = (collection, expr, options) => { + return collection.map((obj) => { + obj = (0, import_core.computeValue)(obj, expr.newRoot, null, options); + (0, import_util.assert)((0, import_util.isObject)(obj), "$replaceRoot expression must return an object"); + return obj; + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $replaceRoot +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/replaceWith.js b/node_modules/mingo/dist/cjs/operators/pipeline/replaceWith.js new file mode 100644 index 0000000..ca68c2c --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/replaceWith.js @@ -0,0 +1,35 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var replaceWith_exports = {}; +__export(replaceWith_exports, { + $replaceWith: () => $replaceWith +}); +module.exports = __toCommonJS(replaceWith_exports); +var import_core = require("../../core"); +var import_util = require("../../util"); +const $replaceWith = (collection, expr, options) => { + return collection.map((obj) => { + obj = (0, import_core.computeValue)(obj, expr, null, options); + (0, import_util.assert)((0, import_util.isObject)(obj), "$replaceWith expression must return an object"); + return obj; + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $replaceWith +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/sample.js b/node_modules/mingo/dist/cjs/operators/pipeline/sample.js new file mode 100644 index 0000000..a626cf7 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/sample.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var sample_exports = {}; +__export(sample_exports, { + $sample: () => $sample +}); +module.exports = __toCommonJS(sample_exports); +const $sample = (collection, expr, _options) => { + return collection.transform((xs) => { + const len = xs.length; + let i = -1; + return () => { + if (++i === expr.size) return { done: true }; + const n = Math.floor(Math.random() * len); + return { value: xs[n], done: false }; + }; + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $sample +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/set.js b/node_modules/mingo/dist/cjs/operators/pipeline/set.js new file mode 100644 index 0000000..d01c3d7 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/set.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var set_exports = {}; +__export(set_exports, { + $set: () => $set +}); +module.exports = __toCommonJS(set_exports); +var import_addFields = require("./addFields"); +const $set = import_addFields.$addFields; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $set +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/setWindowFields.js b/node_modules/mingo/dist/cjs/operators/pipeline/setWindowFields.js new file mode 100644 index 0000000..0bf53e8 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/setWindowFields.js @@ -0,0 +1,211 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var setWindowFields_exports = {}; +__export(setWindowFields_exports, { + $setWindowFields: () => $setWindowFields +}); +module.exports = __toCommonJS(setWindowFields_exports); +var import_core = require("../../core"); +var import_lazy = require("../../lazy"); +var import_util = require("../../util"); +var import_function = require("../expression/custom/function"); +var import_dateAdd = require("../expression/date/dateAdd"); +var import_internal = require("./_internal"); +var import_addFields = require("./addFields"); +var import_group = require("./group"); +var import_sort = require("./sort"); +const SORT_REQUIRED_OPS = /* @__PURE__ */ new Set([ + "$denseRank", + "$documentNumber", + "$first", + "$last", + "$linearFill", + "$rank", + "$shift" +]); +const WINDOW_UNBOUNDED_OPS = /* @__PURE__ */ new Set([ + "$denseRank", + "$expMovingAvg", + "$linearFill", + "$locf", + "$rank", + "$shift" +]); +const $setWindowFields = (collection, expr, options) => { + options = (0, import_core.initOptions)(options); + options.context.addExpressionOps({ $function: import_function.$function }); + for (const outputExpr of Object.values(expr.output)) { + const keys = Object.keys(outputExpr); + const op = keys.find(import_util.isOperator); + (0, import_util.assert)( + !!(0, import_core.getOperator)("window", op, options) || !!(0, import_core.getOperator)("accumulator", op, options), + `'${op}' is not a valid window operator` + ); + (0, import_util.assert)( + keys.length > 0 && keys.length <= 2 && (keys.length == 1 || keys.includes("window")), + "'output' option should have a single window operator." + ); + if (outputExpr?.window) { + const { documents, range } = outputExpr.window; + (0, import_util.assert)( + !!documents && !range || !documents && !!range || !documents && !range, + "'window' option supports only one of 'documents' or 'range'." + ); + } + } + if (expr.sortBy) { + collection = (0, import_sort.$sort)(collection, expr.sortBy, options); + } + collection = (0, import_group.$group)( + collection, + { + _id: expr.partitionBy, + items: { $push: "$$CURRENT" } + }, + options + ); + return collection.transform((partitions) => { + const iterators = []; + const outputConfig = []; + for (const [field, outputExpr] of Object.entries(expr.output)) { + const op = Object.keys(outputExpr).find(import_util.isOperator); + const config = { + operatorName: op, + func: { + left: (0, import_core.getOperator)("accumulator", op, options), + right: (0, import_core.getOperator)("window", op, options) + }, + args: outputExpr[op], + field, + window: outputExpr.window + }; + (0, import_util.assert)( + !!expr.sortBy || !(SORT_REQUIRED_OPS.has(op) || !config.window), + `${SORT_REQUIRED_OPS.has(op) ? `'${op}'` : "bounded window operation"} requires a sortBy.` + ); + (0, import_util.assert)( + !config.window || !WINDOW_UNBOUNDED_OPS.has(op), + `${op} does not accept a 'window' field.` + ); + outputConfig.push(config); + } + partitions.forEach((group) => { + const items = group.items; + let iterator = (0, import_lazy.Lazy)(items); + const windowResultMap = {}; + for (const config of outputConfig) { + const { func, args, field, window } = config; + const makeResultFunc = (getItemsFn) => { + let index = -1; + return (obj) => { + ++index; + if (func.left) { + return func.left(getItemsFn(obj, index), args, options); + } else if (func.right) { + return func.right( + obj, + getItemsFn(obj, index), + { + parentExpr: expr, + inputExpr: args, + documentNumber: index + 1, + field + }, + // must use raw options only since it operates over a collection. + options + ); + } + }; + }; + if (window) { + const { documents, range, unit } = window; + const boundary = documents || range; + if (!(0, import_internal.isUnbounded)(window)) { + const [begin, end] = boundary; + const toBeginIndex = (currentIndex) => { + if (begin == "current") return currentIndex; + if (begin == "unbounded") return 0; + return Math.max(begin + currentIndex, 0); + }; + const toEndIndex = (currentIndex) => { + if (end == "current") return currentIndex + 1; + if (end == "unbounded") return items.length; + return end + currentIndex + 1; + }; + const getItems = (current, index) => { + if (!!documents || boundary.every(import_util.isString)) { + return items.slice(toBeginIndex(index), toEndIndex(index)); + } + const sortKey = Object.keys(expr.sortBy)[0]; + let lower; + let upper; + if (unit) { + const getTime = (amount) => { + return (0, import_dateAdd.$dateAdd)( + current, + { + startDate: new Date(current[sortKey]), + unit, + amount + }, + options + ).getTime(); + }; + lower = (0, import_util.isNumber)(begin) ? getTime(begin) : -Infinity; + upper = (0, import_util.isNumber)(end) ? getTime(end) : Infinity; + } else { + const currentValue = current[sortKey]; + lower = (0, import_util.isNumber)(begin) ? currentValue + begin : -Infinity; + upper = (0, import_util.isNumber)(end) ? currentValue + end : Infinity; + } + let array = items; + if (begin == "current") array = items.slice(index); + if (end == "current") array = items.slice(0, index + 1); + return array.filter((o) => { + const n = +o[sortKey]; + return n >= lower && n <= upper; + }); + }; + windowResultMap[field] = makeResultFunc(getItems); + } + } + if (!windowResultMap[field]) { + windowResultMap[field] = makeResultFunc((_) => items); + } + iterator = (0, import_addFields.$addFields)( + iterator, + { + [field]: { + $function: { + body: (obj) => windowResultMap[field](obj), + args: ["$$CURRENT"] + } + } + }, + options + ); + } + iterators.push(iterator); + }); + return (0, import_lazy.concat)(...iterators); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $setWindowFields +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/skip.js b/node_modules/mingo/dist/cjs/operators/pipeline/skip.js new file mode 100644 index 0000000..26e34cf --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/skip.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var skip_exports = {}; +__export(skip_exports, { + $skip: () => $skip +}); +module.exports = __toCommonJS(skip_exports); +const $skip = (collection, expr, _options) => { + return collection.drop(expr); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $skip +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/sort.js b/node_modules/mingo/dist/cjs/operators/pipeline/sort.js new file mode 100644 index 0000000..ff339a0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/sort.js @@ -0,0 +1,82 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var sort_exports = {}; +__export(sort_exports, { + $sort: () => $sort +}); +module.exports = __toCommonJS(sort_exports); +var import_util = require("../../util"); +const $sort = (collection, sortKeys, options) => { + if ((0, import_util.isEmpty)(sortKeys) || !(0, import_util.isObject)(sortKeys)) return collection; + let cmp = import_util.compare; + const collationSpec = options.collation; + if ((0, import_util.isObject)(collationSpec) && (0, import_util.isString)(collationSpec.locale)) { + cmp = collationComparator(collationSpec); + } + return collection.transform((coll) => { + const modifiers = Object.keys(sortKeys); + for (const key of modifiers.reverse()) { + const groups = (0, import_util.groupBy)( + coll, + (obj) => (0, import_util.resolve)(obj, key), + options.hashFunction + ); + const sortedKeys = Array.from(groups.keys()).sort(cmp); + if (sortKeys[key] === -1) sortedKeys.reverse(); + let i = 0; + for (const k of sortedKeys) for (const v of groups.get(k)) coll[i++] = v; + (0, import_util.assert)(i == coll.length, "bug: counter must match collection size."); + } + return coll; + }); +}; +const COLLATION_STRENGTH = { + // Only strings that differ in base letters compare as unequal. Examples: a ≠ b, a = á, a = A. + 1: "base", + // Only strings that differ in base letters or accents and other diacritic marks compare as unequal. + // Examples: a ≠ b, a ≠ á, a = A. + 2: "accent", + // Strings that differ in base letters, accents and other diacritic marks, or case compare as unequal. + // Other differences may also be taken into consideration. Examples: a ≠ b, a ≠ á, a ≠ A + 3: "variant" + // case - Only strings that differ in base letters or case compare as unequal. Examples: a ≠ b, a = á, a ≠ A. +}; +function collationComparator(spec) { + const localeOpt = { + sensitivity: COLLATION_STRENGTH[spec.strength || 3], + caseFirst: spec.caseFirst === "off" ? "false" : spec.caseFirst || "false", + numeric: spec.numericOrdering || false, + ignorePunctuation: spec.alternate === "shifted" + }; + if ((spec.caseLevel || false) === true) { + if (localeOpt.sensitivity === "base") localeOpt.sensitivity = "case"; + if (localeOpt.sensitivity === "accent") localeOpt.sensitivity = "variant"; + } + const collator = new Intl.Collator(spec.locale, localeOpt); + return (a, b) => { + if (!(0, import_util.isString)(a) || !(0, import_util.isString)(b)) return (0, import_util.compare)(a, b); + const i = collator.compare(a, b); + if (i < 0) return -1; + if (i > 0) return 1; + return 0; + }; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $sort +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/sortByCount.js b/node_modules/mingo/dist/cjs/operators/pipeline/sortByCount.js new file mode 100644 index 0000000..ce72b29 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/sortByCount.js @@ -0,0 +1,35 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var sortByCount_exports = {}; +__export(sortByCount_exports, { + $sortByCount: () => $sortByCount +}); +module.exports = __toCommonJS(sortByCount_exports); +var import_group = require("./group"); +var import_sort = require("./sort"); +const $sortByCount = (collection, expr, options) => { + return (0, import_sort.$sort)( + (0, import_group.$group)(collection, { _id: expr, count: { $sum: 1 } }, options), + { count: -1 }, + options + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $sortByCount +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/unionWith.js b/node_modules/mingo/dist/cjs/operators/pipeline/unionWith.js new file mode 100644 index 0000000..ec15297 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/unionWith.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var unionWith_exports = {}; +__export(unionWith_exports, { + $unionWith: () => $unionWith +}); +module.exports = __toCommonJS(unionWith_exports); +var import_aggregator = require("../../aggregator"); +var import_lazy = require("../../lazy"); +var import_util = require("../../util"); +const $unionWith = (collection, expr, options) => { + const array = (0, import_util.isString)(expr.coll) ? options.collectionResolver(expr.coll) : expr.coll; + const iterators = [collection]; + iterators.push( + expr.pipeline ? new import_aggregator.Aggregator(expr.pipeline, options).stream(array) : (0, import_lazy.Lazy)(array) + ); + return (0, import_lazy.concat)(...iterators); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $unionWith +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/unset.js b/node_modules/mingo/dist/cjs/operators/pipeline/unset.js new file mode 100644 index 0000000..16abef7 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/unset.js @@ -0,0 +1,34 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var unset_exports = {}; +__export(unset_exports, { + $unset: () => $unset +}); +module.exports = __toCommonJS(unset_exports); +var import_util = require("../../util"); +var import_project = require("./project"); +const $unset = (collection, expr, options) => { + expr = (0, import_util.ensureArray)(expr); + const doc = {}; + for (const k of expr) doc[k] = 0; + return (0, import_project.$project)(collection, doc, options); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $unset +}); diff --git a/node_modules/mingo/dist/cjs/operators/pipeline/unwind.js b/node_modules/mingo/dist/cjs/operators/pipeline/unwind.js new file mode 100644 index 0000000..899c0e5 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/pipeline/unwind.js @@ -0,0 +1,69 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var unwind_exports = {}; +__export(unwind_exports, { + $unwind: () => $unwind +}); +module.exports = __toCommonJS(unwind_exports); +var import_lazy = require("../../lazy"); +var import_util = require("../../util"); +const $unwind = (collection, expr, _options) => { + if ((0, import_util.isString)(expr)) expr = { path: expr }; + const path = expr.path; + const field = path.substring(1); + const includeArrayIndex = expr?.includeArrayIndex || false; + const preserveNullAndEmptyArrays = expr.preserveNullAndEmptyArrays || false; + const format = (o, i) => { + if (includeArrayIndex !== false) o[includeArrayIndex] = i; + return o; + }; + let value; + return (0, import_lazy.Lazy)(() => { + for (; ; ) { + if (value instanceof import_lazy.Iterator) { + const tmp = value.next(); + if (!tmp.done) return tmp; + } + const wrapper = collection.next(); + if (wrapper.done) return wrapper; + const obj = wrapper.value; + value = (0, import_util.resolve)(obj, field); + if ((0, import_util.isArray)(value)) { + if (value.length === 0 && preserveNullAndEmptyArrays === true) { + value = null; + (0, import_util.removeValue)(obj, field); + return { value: format(obj, null), done: false }; + } else { + value = (0, import_lazy.Lazy)(value).map((item, i) => { + const newObj = (0, import_util.resolveGraph)(obj, field, { + preserveKeys: true + }); + (0, import_util.setValue)(newObj, field, item); + return format(newObj, i); + }); + } + } else if (!(0, import_util.isEmpty)(value) || preserveNullAndEmptyArrays === true) { + return { value: format(obj, null), done: false }; + } + } + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $unwind +}); diff --git a/node_modules/mingo/dist/cjs/operators/projection/elemMatch.js b/node_modules/mingo/dist/cjs/operators/projection/elemMatch.js new file mode 100644 index 0000000..37e3a92 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/projection/elemMatch.js @@ -0,0 +1,41 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var elemMatch_exports = {}; +__export(elemMatch_exports, { + $elemMatch: () => $elemMatch +}); +module.exports = __toCommonJS(elemMatch_exports); +var import_query = require("../../query"); +var import_util = require("../../util"); +const $elemMatch = (obj, expr, field, options) => { + const arr = (0, import_util.resolve)(obj, field); + const query = new import_query.Query(expr, options); + (0, import_util.assert)((0, import_util.isArray)(arr), "$elemMatch: argument must resolve to array"); + const result = []; + for (let i = 0; i < arr.length; i++) { + if (query.test(arr[i])) { + if (options.useStrictMode) return [arr[i]]; + result.push(arr[i]); + } + } + return result.length > 0 ? result : void 0; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $elemMatch +}); diff --git a/node_modules/mingo/dist/cjs/operators/projection/index.js b/node_modules/mingo/dist/cjs/operators/projection/index.js new file mode 100644 index 0000000..be6bd59 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/projection/index.js @@ -0,0 +1,23 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var projection_exports = {}; +module.exports = __toCommonJS(projection_exports); +__reExport(projection_exports, require("./elemMatch"), module.exports); +__reExport(projection_exports, require("./slice"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./elemMatch"), + ...require("./slice") +}); diff --git a/node_modules/mingo/dist/cjs/operators/projection/slice.js b/node_modules/mingo/dist/cjs/operators/projection/slice.js new file mode 100644 index 0000000..a2a3045 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/projection/slice.js @@ -0,0 +1,38 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var slice_exports = {}; +__export(slice_exports, { + $slice: () => $slice +}); +module.exports = __toCommonJS(slice_exports); +var import_util = require("../../util"); +var import_slice = require("../expression/array/slice"); +const $slice = (obj, expr, field, options) => { + const xs = (0, import_util.resolve)(obj, field); + const exprAsArray = expr; + if (!(0, import_util.isArray)(xs)) return xs; + return (0, import_slice.$slice)( + obj, + (0, import_util.isArray)(expr) ? [xs, ...exprAsArray] : [xs, expr], + options + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $slice +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/array/all.js b/node_modules/mingo/dist/cjs/operators/query/array/all.js new file mode 100644 index 0000000..a82860d --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/array/all.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var all_exports = {}; +__export(all_exports, { + $all: () => $all +}); +module.exports = __toCommonJS(all_exports); +var import_predicates = require("../../_predicates"); +const $all = (0, import_predicates.createQueryOperator)(import_predicates.$all); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $all +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/array/elemMatch.js b/node_modules/mingo/dist/cjs/operators/query/array/elemMatch.js new file mode 100644 index 0000000..6228951 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/array/elemMatch.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var elemMatch_exports = {}; +__export(elemMatch_exports, { + $elemMatch: () => $elemMatch +}); +module.exports = __toCommonJS(elemMatch_exports); +var import_predicates = require("../../_predicates"); +const $elemMatch = (0, import_predicates.createQueryOperator)(import_predicates.$elemMatch); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $elemMatch +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/array/index.js b/node_modules/mingo/dist/cjs/operators/query/array/index.js new file mode 100644 index 0000000..04c0a69 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/array/index.js @@ -0,0 +1,25 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var array_exports = {}; +module.exports = __toCommonJS(array_exports); +__reExport(array_exports, require("./all"), module.exports); +__reExport(array_exports, require("./elemMatch"), module.exports); +__reExport(array_exports, require("./size"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./all"), + ...require("./elemMatch"), + ...require("./size") +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/array/size.js b/node_modules/mingo/dist/cjs/operators/query/array/size.js new file mode 100644 index 0000000..b3236d2 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/array/size.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var size_exports = {}; +__export(size_exports, { + $size: () => $size +}); +module.exports = __toCommonJS(size_exports); +var import_predicates = require("../../_predicates"); +const $size = (0, import_predicates.createQueryOperator)(import_predicates.$size); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $size +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/bitwise/_internal.js b/node_modules/mingo/dist/cjs/operators/query/bitwise/_internal.js new file mode 100644 index 0000000..1fb2aa4 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/bitwise/_internal.js @@ -0,0 +1,41 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var internal_exports = {}; +__export(internal_exports, { + createBitwiseOperator: () => createBitwiseOperator +}); +module.exports = __toCommonJS(internal_exports); +var import_util = require("../../../util"); +var import_predicates = require("../../_predicates"); +const createBitwiseOperator = (predicate) => { + return (0, import_predicates.createQueryOperator)( + (value, mask, _options) => { + let b = 0; + if ((0, import_util.isArray)(mask)) { + for (const n of mask) b = b | 1 << n; + } else { + b = mask; + } + return predicate(value & b, b); + } + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + createBitwiseOperator +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/bitwise/bitsAllClear.js b/node_modules/mingo/dist/cjs/operators/query/bitwise/bitsAllClear.js new file mode 100644 index 0000000..8c083b5 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/bitwise/bitsAllClear.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bitsAllClear_exports = {}; +__export(bitsAllClear_exports, { + $bitsAllClear: () => $bitsAllClear +}); +module.exports = __toCommonJS(bitsAllClear_exports); +var import_internal = require("./_internal"); +const $bitsAllClear = (0, import_internal.createBitwiseOperator)((result, _) => result == 0); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $bitsAllClear +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/bitwise/bitsAllSet.js b/node_modules/mingo/dist/cjs/operators/query/bitwise/bitsAllSet.js new file mode 100644 index 0000000..181bfa2 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/bitwise/bitsAllSet.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bitsAllSet_exports = {}; +__export(bitsAllSet_exports, { + $bitsAllSet: () => $bitsAllSet +}); +module.exports = __toCommonJS(bitsAllSet_exports); +var import_internal = require("./_internal"); +const $bitsAllSet = (0, import_internal.createBitwiseOperator)( + (result, mask) => result == mask +); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $bitsAllSet +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/bitwise/bitsAnyClear.js b/node_modules/mingo/dist/cjs/operators/query/bitwise/bitsAnyClear.js new file mode 100644 index 0000000..eaed043 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/bitwise/bitsAnyClear.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bitsAnyClear_exports = {}; +__export(bitsAnyClear_exports, { + $bitsAnyClear: () => $bitsAnyClear +}); +module.exports = __toCommonJS(bitsAnyClear_exports); +var import_internal = require("./_internal"); +const $bitsAnyClear = (0, import_internal.createBitwiseOperator)( + (result, mask) => result < mask +); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $bitsAnyClear +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/bitwise/bitsAnySet.js b/node_modules/mingo/dist/cjs/operators/query/bitwise/bitsAnySet.js new file mode 100644 index 0000000..d07305c --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/bitwise/bitsAnySet.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bitsAnySet_exports = {}; +__export(bitsAnySet_exports, { + $bitsAnySet: () => $bitsAnySet +}); +module.exports = __toCommonJS(bitsAnySet_exports); +var import_internal = require("./_internal"); +const $bitsAnySet = (0, import_internal.createBitwiseOperator)((result, _) => result > 0); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $bitsAnySet +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/bitwise/index.js b/node_modules/mingo/dist/cjs/operators/query/bitwise/index.js new file mode 100644 index 0000000..35ac936 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/bitwise/index.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bitwise_exports = {}; +__export(bitwise_exports, { + $bitsAllClear: () => import_bitsAllClear.$bitsAllClear, + $bitsAllSet: () => import_bitsAllSet.$bitsAllSet, + $bitsAnyClear: () => import_bitsAnyClear.$bitsAnyClear, + $bitsAnySet: () => import_bitsAnySet.$bitsAnySet +}); +module.exports = __toCommonJS(bitwise_exports); +var import_bitsAllClear = require("./bitsAllClear"); +var import_bitsAllSet = require("./bitsAllSet"); +var import_bitsAnyClear = require("./bitsAnyClear"); +var import_bitsAnySet = require("./bitsAnySet"); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $bitsAllClear, + $bitsAllSet, + $bitsAnyClear, + $bitsAnySet +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/comparison/eq.js b/node_modules/mingo/dist/cjs/operators/query/comparison/eq.js new file mode 100644 index 0000000..a77f20e --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/comparison/eq.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var eq_exports = {}; +__export(eq_exports, { + $eq: () => $eq +}); +module.exports = __toCommonJS(eq_exports); +var import_predicates = require("../../_predicates"); +const $eq = (0, import_predicates.createQueryOperator)(import_predicates.$eq); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $eq +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/comparison/gt.js b/node_modules/mingo/dist/cjs/operators/query/comparison/gt.js new file mode 100644 index 0000000..c85376b --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/comparison/gt.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var gt_exports = {}; +__export(gt_exports, { + $gt: () => $gt +}); +module.exports = __toCommonJS(gt_exports); +var import_predicates = require("../../_predicates"); +const $gt = (0, import_predicates.createQueryOperator)(import_predicates.$gt); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $gt +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/comparison/gte.js b/node_modules/mingo/dist/cjs/operators/query/comparison/gte.js new file mode 100644 index 0000000..ab814d2 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/comparison/gte.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var gte_exports = {}; +__export(gte_exports, { + $gte: () => $gte +}); +module.exports = __toCommonJS(gte_exports); +var import_predicates = require("../../_predicates"); +const $gte = (0, import_predicates.createQueryOperator)(import_predicates.$gte); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $gte +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/comparison/in.js b/node_modules/mingo/dist/cjs/operators/query/comparison/in.js new file mode 100644 index 0000000..3c9ee89 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/comparison/in.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var in_exports = {}; +__export(in_exports, { + $in: () => $in +}); +module.exports = __toCommonJS(in_exports); +var import_predicates = require("../../_predicates"); +const $in = (0, import_predicates.createQueryOperator)(import_predicates.$in); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $in +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/comparison/index.js b/node_modules/mingo/dist/cjs/operators/query/comparison/index.js new file mode 100644 index 0000000..d036ccb --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/comparison/index.js @@ -0,0 +1,48 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var comparison_exports = {}; +__export(comparison_exports, { + $eq: () => import_eq.$eq, + $gt: () => import_gt.$gt, + $gte: () => import_gte.$gte, + $in: () => import_in.$in, + $lt: () => import_lt.$lt, + $lte: () => import_lte.$lte, + $ne: () => import_ne.$ne, + $nin: () => import_nin.$nin +}); +module.exports = __toCommonJS(comparison_exports); +var import_eq = require("./eq"); +var import_gt = require("./gt"); +var import_gte = require("./gte"); +var import_in = require("./in"); +var import_lt = require("./lt"); +var import_lte = require("./lte"); +var import_ne = require("./ne"); +var import_nin = require("./nin"); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $eq, + $gt, + $gte, + $in, + $lt, + $lte, + $ne, + $nin +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/comparison/lt.js b/node_modules/mingo/dist/cjs/operators/query/comparison/lt.js new file mode 100644 index 0000000..d59d2ce --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/comparison/lt.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var lt_exports = {}; +__export(lt_exports, { + $lt: () => $lt +}); +module.exports = __toCommonJS(lt_exports); +var import_predicates = require("../../_predicates"); +const $lt = (0, import_predicates.createQueryOperator)(import_predicates.$lt); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $lt +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/comparison/lte.js b/node_modules/mingo/dist/cjs/operators/query/comparison/lte.js new file mode 100644 index 0000000..40421fd --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/comparison/lte.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var lte_exports = {}; +__export(lte_exports, { + $lte: () => $lte +}); +module.exports = __toCommonJS(lte_exports); +var import_predicates = require("../../_predicates"); +const $lte = (0, import_predicates.createQueryOperator)(import_predicates.$lte); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $lte +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/comparison/ne.js b/node_modules/mingo/dist/cjs/operators/query/comparison/ne.js new file mode 100644 index 0000000..b55cdaf --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/comparison/ne.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var ne_exports = {}; +__export(ne_exports, { + $ne: () => $ne +}); +module.exports = __toCommonJS(ne_exports); +var import_predicates = require("../../_predicates"); +const $ne = (0, import_predicates.createQueryOperator)(import_predicates.$ne); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $ne +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/comparison/nin.js b/node_modules/mingo/dist/cjs/operators/query/comparison/nin.js new file mode 100644 index 0000000..9c30e4f --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/comparison/nin.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var nin_exports = {}; +__export(nin_exports, { + $nin: () => $nin +}); +module.exports = __toCommonJS(nin_exports); +var import_predicates = require("../../_predicates"); +const $nin = (0, import_predicates.createQueryOperator)(import_predicates.$nin); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $nin +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/element/exists.js b/node_modules/mingo/dist/cjs/operators/query/element/exists.js new file mode 100644 index 0000000..62498ba --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/element/exists.js @@ -0,0 +1,39 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var exists_exports = {}; +__export(exists_exports, { + $exists: () => $exists +}); +module.exports = __toCommonJS(exists_exports); +var import_util = require("../../../util"); +const $exists = (selector, value, _options) => { + const nested = selector.includes("."); + const b = !!value; + if (!nested || selector.match(/\.\d+$/)) { + return (o) => (0, import_util.resolve)(o, selector) !== void 0 === b; + } + return (o) => { + const path = (0, import_util.resolveGraph)(o, selector, { preserveIndex: true }); + const val = (0, import_util.resolve)(path, selector.substring(0, selector.lastIndexOf("."))); + return (0, import_util.isArray)(val) ? val.some((v) => v !== void 0) === b : val !== void 0 === b; + }; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $exists +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/element/index.js b/node_modules/mingo/dist/cjs/operators/query/element/index.js new file mode 100644 index 0000000..6e0a0a7 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/element/index.js @@ -0,0 +1,23 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var element_exports = {}; +module.exports = __toCommonJS(element_exports); +__reExport(element_exports, require("./exists"), module.exports); +__reExport(element_exports, require("./type"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./exists"), + ...require("./type") +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/element/type.js b/node_modules/mingo/dist/cjs/operators/query/element/type.js new file mode 100644 index 0000000..159188e --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/element/type.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var type_exports = {}; +__export(type_exports, { + $type: () => $type +}); +module.exports = __toCommonJS(type_exports); +var import_predicates = require("../../_predicates"); +const $type = (0, import_predicates.createQueryOperator)(import_predicates.$type); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $type +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/evaluation/expr.js b/node_modules/mingo/dist/cjs/operators/query/evaluation/expr.js new file mode 100644 index 0000000..21f8544 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/evaluation/expr.js @@ -0,0 +1,30 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var expr_exports = {}; +__export(expr_exports, { + $expr: () => $expr +}); +module.exports = __toCommonJS(expr_exports); +var import_core = require("../../../core"); +function $expr(_, rhs, options) { + return (obj) => (0, import_core.computeValue)(obj, rhs, null, options); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $expr +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/evaluation/index.js b/node_modules/mingo/dist/cjs/operators/query/evaluation/index.js new file mode 100644 index 0000000..8f84d92 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/evaluation/index.js @@ -0,0 +1,29 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var evaluation_exports = {}; +module.exports = __toCommonJS(evaluation_exports); +__reExport(evaluation_exports, require("./expr"), module.exports); +__reExport(evaluation_exports, require("./jsonSchema"), module.exports); +__reExport(evaluation_exports, require("./mod"), module.exports); +__reExport(evaluation_exports, require("./regex"), module.exports); +__reExport(evaluation_exports, require("./where"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./expr"), + ...require("./jsonSchema"), + ...require("./mod"), + ...require("./regex"), + ...require("./where") +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/evaluation/jsonSchema.js b/node_modules/mingo/dist/cjs/operators/query/evaluation/jsonSchema.js new file mode 100644 index 0000000..c312eda --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/evaluation/jsonSchema.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var jsonSchema_exports = {}; +__export(jsonSchema_exports, { + $jsonSchema: () => $jsonSchema +}); +module.exports = __toCommonJS(jsonSchema_exports); +var import_util = require("../../../util"); +function $jsonSchema(_, schema, options) { + if (!options?.jsonSchemaValidator) { + throw new import_util.MingoError( + "Missing option 'jsonSchemaValidator'. Configure to use '$jsonSchema' operator." + ); + } + const validate = options?.jsonSchemaValidator(schema); + return (obj) => validate(obj); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $jsonSchema +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/evaluation/mod.js b/node_modules/mingo/dist/cjs/operators/query/evaluation/mod.js new file mode 100644 index 0000000..d851e53 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/evaluation/mod.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var mod_exports = {}; +__export(mod_exports, { + $mod: () => $mod +}); +module.exports = __toCommonJS(mod_exports); +var import_predicates = require("../../_predicates"); +const $mod = (0, import_predicates.createQueryOperator)(import_predicates.$mod); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $mod +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/evaluation/regex.js b/node_modules/mingo/dist/cjs/operators/query/evaluation/regex.js new file mode 100644 index 0000000..80fc5f2 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/evaluation/regex.js @@ -0,0 +1,28 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var regex_exports = {}; +__export(regex_exports, { + $regex: () => $regex +}); +module.exports = __toCommonJS(regex_exports); +var import_predicates = require("../../_predicates"); +const $regex = (0, import_predicates.createQueryOperator)(import_predicates.$regex); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $regex +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/evaluation/where.js b/node_modules/mingo/dist/cjs/operators/query/evaluation/where.js new file mode 100644 index 0000000..63ae9c1 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/evaluation/where.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var where_exports = {}; +__export(where_exports, { + $where: () => $where +}); +module.exports = __toCommonJS(where_exports); +var import_util = require("../../../util"); +function $where(_, rhs, options) { + (0, import_util.assert)( + options.scriptEnabled, + "$where operator requires 'scriptEnabled' option to be true" + ); + const f = rhs; + (0, import_util.assert)((0, import_util.isFunction)(f), "$where only accepts a Function object"); + return (obj) => (0, import_util.truthy)(f.call(obj), options?.useStrictMode); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $where +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/index.js b/node_modules/mingo/dist/cjs/operators/query/index.js new file mode 100644 index 0000000..edfd9c8 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/index.js @@ -0,0 +1,31 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var query_exports = {}; +module.exports = __toCommonJS(query_exports); +__reExport(query_exports, require("./array"), module.exports); +__reExport(query_exports, require("./bitwise"), module.exports); +__reExport(query_exports, require("./comparison"), module.exports); +__reExport(query_exports, require("./element"), module.exports); +__reExport(query_exports, require("./evaluation"), module.exports); +__reExport(query_exports, require("./logical"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./array"), + ...require("./bitwise"), + ...require("./comparison"), + ...require("./element"), + ...require("./evaluation"), + ...require("./logical") +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/logical/and.js b/node_modules/mingo/dist/cjs/operators/query/logical/and.js new file mode 100644 index 0000000..9d7cdf2 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/logical/and.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var and_exports = {}; +__export(and_exports, { + $and: () => $and +}); +module.exports = __toCommonJS(and_exports); +var import_query = require("../../../query"); +var import_util = require("../../../util"); +const $and = (_, rhs, options) => { + (0, import_util.assert)( + (0, import_util.isArray)(rhs), + "Invalid expression: $and expects value to be an Array." + ); + const queries = rhs.map((expr) => new import_query.Query(expr, options)); + return (obj) => queries.every((q) => q.test(obj)); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $and +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/logical/index.js b/node_modules/mingo/dist/cjs/operators/query/logical/index.js new file mode 100644 index 0000000..3fe4736 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/logical/index.js @@ -0,0 +1,27 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var logical_exports = {}; +module.exports = __toCommonJS(logical_exports); +__reExport(logical_exports, require("./and"), module.exports); +__reExport(logical_exports, require("./nor"), module.exports); +__reExport(logical_exports, require("./not"), module.exports); +__reExport(logical_exports, require("./or"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./and"), + ...require("./nor"), + ...require("./not"), + ...require("./or") +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/logical/nor.js b/node_modules/mingo/dist/cjs/operators/query/logical/nor.js new file mode 100644 index 0000000..e85db64 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/logical/nor.js @@ -0,0 +1,36 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var nor_exports = {}; +__export(nor_exports, { + $nor: () => $nor +}); +module.exports = __toCommonJS(nor_exports); +var import_util = require("../../../util"); +var import_or = require("./or"); +const $nor = (_, rhs, options) => { + (0, import_util.assert)( + (0, import_util.isArray)(rhs), + "Invalid expression. $nor expects value to be an array." + ); + const f = (0, import_or.$or)("$or", rhs, options); + return (obj) => !f(obj); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $nor +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/logical/not.js b/node_modules/mingo/dist/cjs/operators/query/logical/not.js new file mode 100644 index 0000000..599c11f --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/logical/not.js @@ -0,0 +1,34 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var not_exports = {}; +__export(not_exports, { + $not: () => $not +}); +module.exports = __toCommonJS(not_exports); +var import_query = require("../../../query"); +var import_util = require("../../../util"); +const $not = (selector, rhs, options) => { + const criteria = {}; + criteria[selector] = (0, import_util.normalize)(rhs); + const query = new import_query.Query(criteria, options); + return (obj) => !query.test(obj); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $not +}); diff --git a/node_modules/mingo/dist/cjs/operators/query/logical/or.js b/node_modules/mingo/dist/cjs/operators/query/logical/or.js new file mode 100644 index 0000000..3b238bb --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/query/logical/or.js @@ -0,0 +1,33 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var or_exports = {}; +__export(or_exports, { + $or: () => $or +}); +module.exports = __toCommonJS(or_exports); +var import_query = require("../../../query"); +var import_util = require("../../../util"); +const $or = (_, rhs, options) => { + (0, import_util.assert)((0, import_util.isArray)(rhs), "Invalid expression. $or expects value to be an Array"); + const queries = rhs.map((expr) => new import_query.Query(expr, options)); + return (obj) => queries.some((q) => q.test(obj)); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $or +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/_internal.js b/node_modules/mingo/dist/cjs/operators/update/_internal.js new file mode 100644 index 0000000..42f5c87 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/_internal.js @@ -0,0 +1,133 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var internal_exports = {}; +__export(internal_exports, { + UPDATE_OPTIONS: () => UPDATE_OPTIONS, + applyUpdate: () => applyUpdate, + clone: () => clone, + tokenizePath: () => tokenizePath, + walkExpression: () => walkExpression +}); +module.exports = __toCommonJS(internal_exports); +var import_core = require("../../core"); +var booleanOperators = __toESM(require("../../operators/expression/boolean")); +var comparisonOperators = __toESM(require("../../operators/expression/comparison")); +var queryOperators = __toESM(require("../../operators/query")); +var import_query = require("../../query"); +var import_util = require("../../util"); +const UPDATE_OPTIONS = { + cloneMode: "copy", + queryOptions: (0, import_core.initOptions)({ + context: import_core.Context.init().addQueryOps(queryOperators).addExpressionOps(booleanOperators).addExpressionOps(comparisonOperators) + }) +}; +const clone = (mode, val) => { + switch (mode) { + case "deep": + return (0, import_util.cloneDeep)(val); + case "copy": { + if ((0, import_util.isDate)(val)) return new Date(val); + if ((0, import_util.isArray)(val)) return [...val]; + if ((0, import_util.isObject)(val)) return { ...val }; + if ((0, import_util.isRegExp)(val)) return new RegExp(val); + return val; + } + default: + return val; + } +}; +const FILTER_IDENT_RE = /^[a-z]+[a-zA-Z0-9]*$/; +function tokenizePath(selector) { + if (!selector.includes(".$")) { + return [{ parent: selector, selector }, []]; + } + const begin = selector.indexOf(".$"); + const end = selector.indexOf("]"); + const parent = selector.substring(0, begin); + const child = selector.substring(begin + 3, end); + (0, import_util.assert)( + child === "" || FILTER_IDENT_RE.test(child), + "The filter must begin with a lowercase letter and contain only alphanumeric characters." + ); + const rest = selector.substring(end + 2); + const [next, elems] = rest ? tokenizePath(rest) : []; + return [ + { selector, parent, child: child || "$", next }, + [child, ...elems || []].filter(Boolean) + ]; +} +const applyUpdate = (o, n, q, f, opts) => { + const { parent, child: c, next } = n; + if (!c) { + let b = false; + const g = (u, k) => b = Boolean(f(u, k)) || b; + (0, import_util.walk)(o, parent, g, opts); + return b; + } + const t = (0, import_util.resolve)(o, parent); + if (!(0, import_util.isArray)(t)) return false; + return t.map((e, i) => { + if (q[c] && !q[c].test({ [c]: e })) return false; + return next ? applyUpdate(e, next, q, f, opts) : f(t, i); + }).some(Boolean); +}; +function walkExpression(expr, arrayFilter, options, callback) { + const res = []; + for (const [selector, val] of Object.entries(expr)) { + const [node, vars] = tokenizePath(selector); + if (!vars.length) { + if (callback(val, node, {})) res.push(node.parent); + } else { + const conditions = {}; + arrayFilter.forEach((o) => { + Object.keys(o).forEach((k) => { + vars.forEach((w) => { + if (k === w || k.startsWith(w + ".")) { + conditions[w] = conditions[w] || {}; + Object.assign(conditions[w], { [k]: o[k] }); + } + }); + }); + }); + const queries = {}; + for (const [k, condition] of Object.entries(conditions)) { + queries[k] = new import_query.Query(condition, options.queryOptions); + } + if (callback(val, node, queries)) res.push(node.parent); + } + } + return res; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + UPDATE_OPTIONS, + applyUpdate, + clone, + tokenizePath, + walkExpression +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/addToSet.js b/node_modules/mingo/dist/cjs/operators/update/addToSet.js new file mode 100644 index 0000000..5b7b45d --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/addToSet.js @@ -0,0 +1,49 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var addToSet_exports = {}; +__export(addToSet_exports, { + $addToSet: () => $addToSet +}); +module.exports = __toCommonJS(addToSet_exports); +var import_util = require("../../util"); +var import_internal = require("./_internal"); +const $addToSet = (obj, expr, arrayFilters = [], options = import_internal.UPDATE_OPTIONS) => { + return (0, import_internal.walkExpression)(expr, arrayFilters, options, (val, node, queries) => { + const args = { $each: [val] }; + if ((0, import_util.isObject)(val) && (0, import_util.has)(val, "$each")) { + Object.assign(args, val); + } + return (0, import_internal.applyUpdate)( + obj, + node, + queries, + (o, k) => { + const prev = o[k] ||= []; + const common = (0, import_util.intersection)([prev, args.$each]); + if (common.length === args.$each.length) return false; + o[k] = (0, import_internal.clone)(options.cloneMode, (0, import_util.unique)(prev.concat(args.$each))); + return true; + }, + { buildGraph: true } + ); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $addToSet +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/bit.js b/node_modules/mingo/dist/cjs/operators/update/bit.js new file mode 100644 index 0000000..5004bf2 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/bit.js @@ -0,0 +1,62 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var bit_exports = {}; +__export(bit_exports, { + $bit: () => $bit +}); +module.exports = __toCommonJS(bit_exports); +var import_util = require("../../util"); +var import_internal = require("./_internal"); +const BIT_OPS = /* @__PURE__ */ new Set(["and", "or", "xor"]); +const $bit = (obj, expr, arrayFilters = [], options = import_internal.UPDATE_OPTIONS) => { + return (0, import_internal.walkExpression)(expr, arrayFilters, options, (val, node, queries) => { + const op = Object.keys(val); + (0, import_util.assert)( + op.length === 1 && BIT_OPS.has(op[0]), + `Invalid bit operator '${op[0]}'. Must be one of 'and', 'or', or 'xor'.` + ); + return (0, import_internal.applyUpdate)( + obj, + node, + queries, + (o, k) => { + let n = o[k]; + const v = val[op[0]]; + if (n !== void 0 && !((0, import_util.isNumber)(n) && (0, import_util.isNumber)(v))) return false; + n = n || 0; + switch (op[0]) { + case "and": + o[k] = n & v; + break; + case "or": + o[k] = n | v; + break; + case "xor": + o[k] = n ^ v; + break; + } + return o[k] !== n; + }, + { buildGraph: true } + ); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $bit +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/currentDate.js b/node_modules/mingo/dist/cjs/operators/update/currentDate.js new file mode 100644 index 0000000..403739a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/currentDate.js @@ -0,0 +1,42 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var currentDate_exports = {}; +__export(currentDate_exports, { + $currentDate: () => $currentDate +}); +module.exports = __toCommonJS(currentDate_exports); +var import_internal = require("./_internal"); +const $currentDate = (obj, expr, arrayFilters = [], options = import_internal.UPDATE_OPTIONS) => { + const now = Date.now(); + return (0, import_internal.walkExpression)(expr, arrayFilters, options, (_, node, queries) => { + return (0, import_internal.applyUpdate)( + obj, + node, + queries, + (o, k) => { + o[k] = now; + return true; + }, + { buildGraph: true } + ); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $currentDate +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/inc.js b/node_modules/mingo/dist/cjs/operators/update/inc.js new file mode 100644 index 0000000..84b583c --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/inc.js @@ -0,0 +1,49 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var inc_exports = {}; +__export(inc_exports, { + $inc: () => $inc +}); +module.exports = __toCommonJS(inc_exports); +var import_util = require("../../util"); +var import_internal = require("./_internal"); +const $inc = (obj, expr, arrayFilters = [], options = import_internal.UPDATE_OPTIONS) => { + return (0, import_internal.walkExpression)(expr, arrayFilters, options, (val, node, queries) => { + if (!node.child) { + const n = (0, import_util.resolve)(obj, node.parent); + (0, import_util.assert)( + n === void 0 || (0, import_util.isNumber)(n), + `cannot apply $inc to a value of non-numeric type` + ); + } + return (0, import_internal.applyUpdate)( + obj, + node, + queries, + (o, k) => { + o[k] = (o[k] ||= 0) + val; + return true; + }, + { buildGraph: true } + ); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $inc +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/index.js b/node_modules/mingo/dist/cjs/operators/update/index.js new file mode 100644 index 0000000..bf82652 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/index.js @@ -0,0 +1,47 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var update_exports = {}; +module.exports = __toCommonJS(update_exports); +__reExport(update_exports, require("./addToSet"), module.exports); +__reExport(update_exports, require("./bit"), module.exports); +__reExport(update_exports, require("./currentDate"), module.exports); +__reExport(update_exports, require("./inc"), module.exports); +__reExport(update_exports, require("./max"), module.exports); +__reExport(update_exports, require("./min"), module.exports); +__reExport(update_exports, require("./mul"), module.exports); +__reExport(update_exports, require("./pop"), module.exports); +__reExport(update_exports, require("./pull"), module.exports); +__reExport(update_exports, require("./pullAll"), module.exports); +__reExport(update_exports, require("./push"), module.exports); +__reExport(update_exports, require("./rename"), module.exports); +__reExport(update_exports, require("./set"), module.exports); +__reExport(update_exports, require("./unset"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./addToSet"), + ...require("./bit"), + ...require("./currentDate"), + ...require("./inc"), + ...require("./max"), + ...require("./min"), + ...require("./mul"), + ...require("./pop"), + ...require("./pull"), + ...require("./pullAll"), + ...require("./push"), + ...require("./rename"), + ...require("./set"), + ...require("./unset") +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/max.js b/node_modules/mingo/dist/cjs/operators/update/max.js new file mode 100644 index 0000000..a7302eb --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/max.js @@ -0,0 +1,43 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var max_exports = {}; +__export(max_exports, { + $max: () => $max +}); +module.exports = __toCommonJS(max_exports); +var import_util = require("../../util"); +var import_internal = require("./_internal"); +const $max = (obj, expr, arrayFilters = [], options = import_internal.UPDATE_OPTIONS) => { + return (0, import_internal.walkExpression)(expr, arrayFilters, options, (val, node, queries) => { + return (0, import_internal.applyUpdate)( + obj, + node, + queries, + (o, k) => { + if (o[k] !== void 0 && (0, import_util.compare)(o[k], val) > -1) return false; + o[k] = val; + return true; + }, + { buildGraph: true } + ); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $max +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/min.js b/node_modules/mingo/dist/cjs/operators/update/min.js new file mode 100644 index 0000000..8e908fd --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/min.js @@ -0,0 +1,43 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var min_exports = {}; +__export(min_exports, { + $min: () => $min +}); +module.exports = __toCommonJS(min_exports); +var import_util = require("../../util"); +var import_internal = require("./_internal"); +const $min = (obj, expr, arrayFilters = [], options = import_internal.UPDATE_OPTIONS) => { + return (0, import_internal.walkExpression)(expr, arrayFilters, options, (val, node, queries) => { + return (0, import_internal.applyUpdate)( + obj, + node, + queries, + (o, k) => { + if (o[k] !== void 0 && (0, import_util.compare)(o[k], val) < 1) return false; + o[k] = val; + return true; + }, + { buildGraph: true } + ); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $min +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/mul.js b/node_modules/mingo/dist/cjs/operators/update/mul.js new file mode 100644 index 0000000..7e02d3c --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/mul.js @@ -0,0 +1,42 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var mul_exports = {}; +__export(mul_exports, { + $mul: () => $mul +}); +module.exports = __toCommonJS(mul_exports); +var import_internal = require("./_internal"); +const $mul = (obj, expr, arrayFilters = [], options = import_internal.UPDATE_OPTIONS) => { + return (0, import_internal.walkExpression)(expr, arrayFilters, options, (val, node, queries) => { + return (0, import_internal.applyUpdate)( + obj, + node, + queries, + (o, k) => { + const prev = o[k]; + o[k] = o[k] === void 0 ? 0 : o[k] * val; + return o[k] !== prev; + }, + { buildGraph: true } + ); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $mul +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/pop.js b/node_modules/mingo/dist/cjs/operators/update/pop.js new file mode 100644 index 0000000..dcbac02 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/pop.js @@ -0,0 +1,46 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var pop_exports = {}; +__export(pop_exports, { + $pop: () => $pop +}); +module.exports = __toCommonJS(pop_exports); +var import_util = require("../../util"); +var import_internal = require("./_internal"); +const $pop = (obj, expr, arrayFilters = [], options = import_internal.UPDATE_OPTIONS) => { + return (0, import_internal.walkExpression)(expr, arrayFilters, options, (val, node, queries) => { + return (0, import_internal.applyUpdate)(obj, node, queries, (o, k) => { + const arr = o[k]; + (0, import_util.assert)( + (0, import_util.isArray)(arr), + `path '${node.selector}' contains an element of non-array type.` + ); + if (!arr.length) return false; + if (val === -1) { + arr.splice(0, 1); + } else { + arr.pop(); + } + return true; + }); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $pop +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/pull.js b/node_modules/mingo/dist/cjs/operators/update/pull.js new file mode 100644 index 0000000..eae2209 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/pull.js @@ -0,0 +1,51 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var pull_exports = {}; +__export(pull_exports, { + $pull: () => $pull +}); +module.exports = __toCommonJS(pull_exports); +var import_query = require("../../query"); +var import_util = require("../../util"); +var import_internal = require("./_internal"); +const $pull = (obj, expr, arrayFilters = [], options = import_internal.UPDATE_OPTIONS) => { + return (0, import_internal.walkExpression)(expr, arrayFilters, options, (val, node, queries) => { + const wrap = !(0, import_util.isObject)(val) || Object.keys(val).some(import_util.isOperator); + const query = new import_query.Query( + wrap ? { k: val } : val, + options.queryOptions + ); + const pred = wrap ? (v) => query.test({ k: v }) : (v) => query.test(v); + return (0, import_internal.applyUpdate)(obj, node, queries, (o, k) => { + const prev = o[k]; + const curr = new Array(); + const found = prev.map((v) => { + const b = pred(v); + if (!b) curr.push(v); + return b; + }).some(Boolean); + if (!found) return false; + o[k] = curr; + return true; + }); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $pull +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/pullAll.js b/node_modules/mingo/dist/cjs/operators/update/pullAll.js new file mode 100644 index 0000000..1048301 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/pullAll.js @@ -0,0 +1,35 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var pullAll_exports = {}; +__export(pullAll_exports, { + $pullAll: () => $pullAll +}); +module.exports = __toCommonJS(pullAll_exports); +var import_internal = require("./_internal"); +var import_pull = require("./pull"); +const $pullAll = (obj, expr, arrayFilters = [], options = import_internal.UPDATE_OPTIONS) => { + const pullExpr = {}; + Object.entries(expr).forEach(([k, v]) => { + pullExpr[k] = { $in: v }; + }); + return (0, import_pull.$pull)(obj, pullExpr, arrayFilters, options); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $pullAll +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/push.js b/node_modules/mingo/dist/cjs/operators/update/push.js new file mode 100644 index 0000000..110641a --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/push.js @@ -0,0 +1,68 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var push_exports = {}; +__export(push_exports, { + $push: () => $push +}); +module.exports = __toCommonJS(push_exports); +var import_util = require("../../util"); +var import_internal = require("./_internal"); +const OPERATOR_MODIFIERS = Object.freeze([ + "$each", + "$slice", + "$sort", + "$position" +]); +const $push = (obj, expr, arrayFilters = [], options = import_internal.UPDATE_OPTIONS) => { + return (0, import_internal.walkExpression)(expr, arrayFilters, options, (val, node, queries) => { + const args = { + $each: [val] + }; + if ((0, import_util.isObject)(val) && OPERATOR_MODIFIERS.some((m) => (0, import_util.has)(val, m))) { + Object.assign(args, val); + } + return (0, import_internal.applyUpdate)( + obj, + node, + queries, + (o, k) => { + const arr = o[k] ||= []; + const prev = arr.slice(0, args.$slice || arr.length); + const oldsize = arr.length; + const pos = (0, import_util.isNumber)(args.$position) ? args.$position : arr.length; + arr.splice(pos, 0, ...(0, import_internal.clone)(options.cloneMode, args.$each)); + if (args.$sort) { + const sortKey = (0, import_util.isObject)(args.$sort) ? Object.keys(args.$sort || {}).pop() : ""; + const order = !sortKey ? args.$sort : args.$sort[sortKey]; + const f = !sortKey ? (a) => a : (a) => (0, import_util.resolve)(a, sortKey); + arr.sort((a, b) => order * (0, import_util.compare)(f(a), f(b))); + } + if ((0, import_util.isNumber)(args.$slice)) { + if (args.$slice < 0) arr.splice(0, arr.length + args.$slice); + else arr.splice(args.$slice); + } + return oldsize != arr.length || !(0, import_util.isEqual)(prev, arr); + }, + { descendArray: true, buildGraph: true } + ); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $push +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/rename.js b/node_modules/mingo/dist/cjs/operators/update/rename.js new file mode 100644 index 0000000..0089835 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/rename.js @@ -0,0 +1,41 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var rename_exports = {}; +__export(rename_exports, { + $rename: () => $rename +}); +module.exports = __toCommonJS(rename_exports); +var import_util = require("../../util"); +var import_internal = require("./_internal"); +var import_set = require("./set"); +const $rename = (obj, expr, arrayFilters = [], options = import_internal.UPDATE_OPTIONS) => { + const res = []; + const changed = (0, import_internal.walkExpression)(expr, arrayFilters, options, (val, node, queries) => { + return (0, import_internal.applyUpdate)(obj, node, queries, (o, k) => { + if (!(0, import_util.has)(o, k)) return false; + res.push(...(0, import_set.$set)(obj, { [val]: o[k] }, arrayFilters, options)); + delete o[k]; + return true; + }); + }); + return Array.from(new Set(changed.concat(res))); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $rename +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/set.js b/node_modules/mingo/dist/cjs/operators/update/set.js new file mode 100644 index 0000000..f2e04aa --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/set.js @@ -0,0 +1,43 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var set_exports = {}; +__export(set_exports, { + $set: () => $set +}); +module.exports = __toCommonJS(set_exports); +var import_util = require("../../util"); +var import_internal = require("./_internal"); +const $set = (obj, expr, arrayFilters = [], options = import_internal.UPDATE_OPTIONS) => { + return (0, import_internal.walkExpression)(expr, arrayFilters, options, (val, node, queries) => { + return (0, import_internal.applyUpdate)( + obj, + node, + queries, + (o, k) => { + if ((0, import_util.isEqual)(o[k], val)) return false; + o[k] = (0, import_internal.clone)(options.cloneMode, val); + return true; + }, + { buildGraph: true } + ); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $set +}); diff --git a/node_modules/mingo/dist/cjs/operators/update/unset.js b/node_modules/mingo/dist/cjs/operators/update/unset.js new file mode 100644 index 0000000..6e14226 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/update/unset.js @@ -0,0 +1,41 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var unset_exports = {}; +__export(unset_exports, { + $unset: () => $unset +}); +module.exports = __toCommonJS(unset_exports); +var import_util = require("../../util"); +var import_internal = require("./_internal"); +const $unset = (obj, expr, arrayFilters = [], options = import_internal.UPDATE_OPTIONS) => { + return (0, import_internal.walkExpression)(expr, arrayFilters, options, (_, node, queries) => { + return (0, import_internal.applyUpdate)(obj, node, queries, (o, k) => { + if (!(0, import_util.has)(o, k)) return false; + if ((0, import_util.isArray)(o)) { + o[k] = null; + } else { + delete o[k]; + } + return true; + }); + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $unset +}); diff --git a/node_modules/mingo/dist/cjs/operators/window/_internal.js b/node_modules/mingo/dist/cjs/operators/window/_internal.js new file mode 100644 index 0000000..215172e --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/window/_internal.js @@ -0,0 +1,101 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var internal_exports = {}; +__export(internal_exports, { + MILLIS_PER_UNIT: () => MILLIS_PER_UNIT, + rank: () => rank, + withMemo: () => withMemo +}); +module.exports = __toCommonJS(internal_exports); +var import_util = require("../../util"); +var import_accumulator = require("../accumulator"); +var import_internal = require("../expression/date/_internal"); +var import_internal2 = require("../pipeline/_internal"); +const MILLIS_PER_UNIT = { + week: import_internal.MILLIS_PER_DAY * 7, + day: import_internal.MILLIS_PER_DAY, + hour: import_internal.MILLIS_PER_DAY / 24, + minute: 6e4, + second: 1e3, + millisecond: 1 +}; +const memo = /* @__PURE__ */ new WeakMap(); +function withMemo(collection, expr, cacheFn, fn) { + if (!(0, import_internal2.isUnbounded)(expr.parentExpr.output[expr.field].window)) { + return fn(cacheFn()); + } + if (!memo.has(collection)) { + memo.set(collection, { [expr.field]: cacheFn() }); + } + const data = memo.get(collection); + if (data[expr.field] === void 0) { + data[expr.field] = cacheFn(); + } + let failed = false; + try { + return fn(data[expr.field]); + } catch { + failed = true; + } finally { + if (failed || expr.documentNumber === collection.length) { + delete data[expr.field]; + if (Object.keys(data).length === 0) memo.delete(collection); + } + } +} +function rank(_, collection, expr, options, dense) { + return withMemo( + collection, + expr, + () => { + const sortKey = "$" + Object.keys(expr.parentExpr.sortBy)[0]; + const values = (0, import_accumulator.$push)(collection, sortKey, options); + const groups = (0, import_util.groupBy)( + values, + (_2, n) => values[n], + options.hashFunction + ); + return { values, groups }; + }, + (input) => { + const { values, groups: partitions } = input; + if (partitions.size == collection.length) { + return expr.documentNumber; + } + const current = values[expr.documentNumber - 1]; + let i = 0; + let offset = 0; + for (const key of partitions.keys()) { + if ((0, import_util.isEqual)(current, key)) { + return dense ? i + 1 : offset + 1; + } + i++; + offset += partitions.get(key).length; + } + throw new import_util.MingoError( + "rank: invalid return value. please submit a bug report." + ); + } + ); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + MILLIS_PER_UNIT, + rank, + withMemo +}); diff --git a/node_modules/mingo/dist/cjs/operators/window/denseRank.js b/node_modules/mingo/dist/cjs/operators/window/denseRank.js new file mode 100644 index 0000000..3cdb7a0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/window/denseRank.js @@ -0,0 +1,35 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var denseRank_exports = {}; +__export(denseRank_exports, { + $denseRank: () => $denseRank +}); +module.exports = __toCommonJS(denseRank_exports); +var import_internal = require("./_internal"); +const $denseRank = (obj, collection, expr, options) => (0, import_internal.rank)( + obj, + collection, + expr, + options, + true + /*dense*/ +); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $denseRank +}); diff --git a/node_modules/mingo/dist/cjs/operators/window/derivative.js b/node_modules/mingo/dist/cjs/operators/window/derivative.js new file mode 100644 index 0000000..be3549c --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/window/derivative.js @@ -0,0 +1,42 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var derivative_exports = {}; +__export(derivative_exports, { + $derivative: () => $derivative +}); +module.exports = __toCommonJS(derivative_exports); +var import_util = require("../../util"); +var import_accumulator = require("../accumulator"); +var import_internal = require("./_internal"); +const $derivative = (_, collection, expr, options) => { + if (collection.length < 2) return null; + const { input, unit } = expr.inputExpr; + const sortKey = "$" + Object.keys(expr.parentExpr.sortBy)[0]; + const values = [collection[0], collection[collection.length - 1]]; + const points = (0, import_accumulator.$push)(values, [sortKey, input], options).filter( + ([x, y]) => (0, import_util.isNumber)(+x) && (0, import_util.isNumber)(+y) + ); + if (points.length !== 2) return null; + const [[x1, y1], [x2, y2]] = points; + const deltaX = (x2 - x1) / (import_internal.MILLIS_PER_UNIT[unit] || 1); + return (y2 - y1) / deltaX; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $derivative +}); diff --git a/node_modules/mingo/dist/cjs/operators/window/documentNumber.js b/node_modules/mingo/dist/cjs/operators/window/documentNumber.js new file mode 100644 index 0000000..0690c57 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/window/documentNumber.js @@ -0,0 +1,27 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var documentNumber_exports = {}; +__export(documentNumber_exports, { + $documentNumber: () => $documentNumber +}); +module.exports = __toCommonJS(documentNumber_exports); +const $documentNumber = (_obj, _collection, expr, _options) => expr.documentNumber; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $documentNumber +}); diff --git a/node_modules/mingo/dist/cjs/operators/window/expMovingAvg.js b/node_modules/mingo/dist/cjs/operators/window/expMovingAvg.js new file mode 100644 index 0000000..8ec0152 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/window/expMovingAvg.js @@ -0,0 +1,52 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var expMovingAvg_exports = {}; +__export(expMovingAvg_exports, { + $expMovingAvg: () => $expMovingAvg +}); +module.exports = __toCommonJS(expMovingAvg_exports); +var import_util = require("../../util"); +var import_accumulator = require("../accumulator"); +var import_internal = require("./_internal"); +const $expMovingAvg = (_, collection, expr, options) => { + const { input, N, alpha } = expr.inputExpr; + (0, import_util.assert)( + !(N && alpha), + `You must specify either N or alpha. You cannot specify both.` + ); + return (0, import_internal.withMemo)( + collection, + expr, + () => { + const series = (0, import_accumulator.$push)(collection, input, options).filter(import_util.isNumber); + return series.length === collection.length ? series : null; + }, + (series) => { + if (series === null) return null; + if (expr.documentNumber == 1) return series[0]; + const weight = N != void 0 ? 2 / (N + 1) : alpha; + const i = expr.documentNumber - 1; + series[i] = series[i] * weight + series[i - 1] * (1 - weight); + return series[i]; + } + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $expMovingAvg +}); diff --git a/node_modules/mingo/dist/cjs/operators/window/index.js b/node_modules/mingo/dist/cjs/operators/window/index.js new file mode 100644 index 0000000..6471cf0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/window/index.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var window_exports = {}; +module.exports = __toCommonJS(window_exports); +__reExport(window_exports, require("./denseRank"), module.exports); +__reExport(window_exports, require("./derivative"), module.exports); +__reExport(window_exports, require("./documentNumber"), module.exports); +__reExport(window_exports, require("./expMovingAvg"), module.exports); +__reExport(window_exports, require("./integral"), module.exports); +__reExport(window_exports, require("./linearFill"), module.exports); +__reExport(window_exports, require("./locf"), module.exports); +__reExport(window_exports, require("./rank"), module.exports); +__reExport(window_exports, require("./shift"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./denseRank"), + ...require("./derivative"), + ...require("./documentNumber"), + ...require("./expMovingAvg"), + ...require("./integral"), + ...require("./linearFill"), + ...require("./locf"), + ...require("./rank"), + ...require("./shift") +}); diff --git a/node_modules/mingo/dist/cjs/operators/window/integral.js b/node_modules/mingo/dist/cjs/operators/window/integral.js new file mode 100644 index 0000000..efbba22 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/window/integral.js @@ -0,0 +1,46 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var integral_exports = {}; +__export(integral_exports, { + $integral: () => $integral +}); +module.exports = __toCommonJS(integral_exports); +var import_util = require("../../util"); +var import_accumulator = require("../accumulator"); +var import_internal = require("./_internal"); +const $integral = (_, collection, expr, options) => { + const { input, unit } = expr.inputExpr; + const sortKey = "$" + Object.keys(expr.parentExpr.sortBy)[0]; + const points = (0, import_accumulator.$push)(collection, [sortKey, input], options).filter( + ([x, y]) => (0, import_util.isNumber)(+x) && (0, import_util.isNumber)(+y) + ); + if (points.length !== collection.length) return null; + let result = 0; + const size = collection.length; + for (let k = 1; k < size; k++) { + const [x1, y1] = points[k - 1]; + const [x2, y2] = points[k]; + const deltaX = (x2 - x1) / (import_internal.MILLIS_PER_UNIT[unit] || 1); + result += 0.5 * (y1 + y2) * deltaX; + } + return result; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $integral +}); diff --git a/node_modules/mingo/dist/cjs/operators/window/linearFill.js b/node_modules/mingo/dist/cjs/operators/window/linearFill.js new file mode 100644 index 0000000..7fba605 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/window/linearFill.js @@ -0,0 +1,71 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var linearFill_exports = {}; +__export(linearFill_exports, { + $linearFill: () => $linearFill +}); +module.exports = __toCommonJS(linearFill_exports); +var import_util = require("../../util"); +var import_accumulator = require("../accumulator"); +var import_internal = require("./_internal"); +const interpolate = (x1, y1, x2, y2, x) => y1 + (x - x1) * ((y2 - y1) / (x2 - x1)); +const $linearFill = (_, collection, expr, options) => { + return (0, import_internal.withMemo)( + collection, + expr, + () => { + const sortKey = "$" + Object.keys(expr.parentExpr.sortBy)[0]; + const points = (0, import_accumulator.$push)( + collection, + [sortKey, expr.inputExpr], + options + ).filter(([x, _2]) => (0, import_util.isNumber)(+x)); + if (points.length !== collection.length) return null; + let lindex = -1; + let rindex = 0; + while (rindex < points.length) { + while (lindex + 1 < points.length && (0, import_util.isNumber)(points[lindex + 1][1])) { + lindex++; + rindex = lindex; + } + while (rindex + 1 < points.length && !(0, import_util.isNumber)(points[rindex + 1][1])) { + rindex++; + } + if (rindex + 1 >= points.length) break; + rindex++; + while (lindex + 1 < rindex) { + points[lindex + 1][1] = interpolate( + points[lindex][0], + points[lindex][1], + points[rindex][0], + points[rindex][1], + points[lindex + 1][0] + ); + lindex++; + } + lindex = rindex; + } + return points.map(([_2, y]) => y); + }, + (values) => values[expr.documentNumber - 1] + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $linearFill +}); diff --git a/node_modules/mingo/dist/cjs/operators/window/locf.js b/node_modules/mingo/dist/cjs/operators/window/locf.js new file mode 100644 index 0000000..8083c9e --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/window/locf.js @@ -0,0 +1,43 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var locf_exports = {}; +__export(locf_exports, { + $locf: () => $locf +}); +module.exports = __toCommonJS(locf_exports); +var import_util = require("../../util"); +var import_push = require("../accumulator/push"); +var import_internal = require("./_internal"); +const $locf = (_, collection, expr, options) => { + return (0, import_internal.withMemo)( + collection, + expr, + () => { + const values = (0, import_push.$push)(collection, expr.inputExpr, options); + for (let i = 1; i < values.length; i++) { + if ((0, import_util.isNil)(values[i])) values[i] = values[i - 1]; + } + return values; + }, + (series) => series[expr.documentNumber - 1] + ); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $locf +}); diff --git a/node_modules/mingo/dist/cjs/operators/window/rank.js b/node_modules/mingo/dist/cjs/operators/window/rank.js new file mode 100644 index 0000000..376c7a0 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/window/rank.js @@ -0,0 +1,35 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var rank_exports = {}; +__export(rank_exports, { + $rank: () => $rank +}); +module.exports = __toCommonJS(rank_exports); +var import_internal = require("./_internal"); +const $rank = (obj, collection, expr, options) => (0, import_internal.rank)( + obj, + collection, + expr, + options, + false + /*dense*/ +); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $rank +}); diff --git a/node_modules/mingo/dist/cjs/operators/window/shift.js b/node_modules/mingo/dist/cjs/operators/window/shift.js new file mode 100644 index 0000000..912aa53 --- /dev/null +++ b/node_modules/mingo/dist/cjs/operators/window/shift.js @@ -0,0 +1,35 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var shift_exports = {}; +__export(shift_exports, { + $shift: () => $shift +}); +module.exports = __toCommonJS(shift_exports); +var import_core = require("../../core"); +const $shift = (obj, collection, expr, options) => { + const input = expr.inputExpr; + const shiftedIndex = expr.documentNumber - 1 + input.by; + if (shiftedIndex < 0 || shiftedIndex > collection.length - 1) { + return input.default ? (0, import_core.computeValue)(obj, input.default, null, options) : null; + } + return (0, import_core.computeValue)(collection[shiftedIndex], input.output, null, options); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + $shift +}); diff --git a/node_modules/mingo/dist/cjs/query.js b/node_modules/mingo/dist/cjs/query.js new file mode 100644 index 0000000..65eda59 --- /dev/null +++ b/node_modules/mingo/dist/cjs/query.js @@ -0,0 +1,116 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var query_exports = {}; +__export(query_exports, { + Query: () => Query +}); +module.exports = __toCommonJS(query_exports); +var import_core = require("./core"); +var import_cursor = require("./cursor"); +var import_util = require("./util"); +const TOP_LEVEL_OPS = new Set( + Array.from(["$and", "$or", "$nor", "$expr", "$jsonSchema"]) +); +class Query { + #compiled; + #options; + #condition; + constructor(condition, options) { + this.#condition = (0, import_util.cloneDeep)(condition); + this.#options = (0, import_core.initOptions)(options); + this.#compiled = []; + this.compile(); + } + compile() { + (0, import_util.assert)( + (0, import_util.isObject)(this.#condition), + `query criteria must be an object: ${JSON.stringify(this.#condition)}` + ); + const whereOperator = {}; + for (const [field, expr] of Object.entries(this.#condition)) { + if ("$where" === field) { + (0, import_util.assert)( + this.#options.scriptEnabled, + "$where operator requires 'scriptEnabled' option to be true." + ); + Object.assign(whereOperator, { field, expr }); + } else if (TOP_LEVEL_OPS.has(field)) { + this.processOperator(field, field, expr); + } else { + (0, import_util.assert)(!(0, import_util.isOperator)(field), `unknown top level operator: ${field}`); + for (const [operator, val] of Object.entries( + (0, import_util.normalize)(expr) + )) { + this.processOperator(field, operator, val); + } + } + if (whereOperator.field) { + this.processOperator( + whereOperator.field, + whereOperator.field, + whereOperator.expr + ); + } + } + } + processOperator(field, operator, value) { + const call = (0, import_core.getOperator)("query", operator, this.#options); + (0, import_util.assert)(!!call, `unknown query operator ${operator}`); + this.#compiled.push(call(field, value, this.#options)); + } + /** + * Checks if the object passes the query criteria. Returns true if so, false otherwise. + * + * @param obj The object to test + * @returns {boolean} + */ + test(obj) { + return this.#compiled.every((p) => p(obj)); + } + /** + * Returns a cursor to select matching documents from the input source. + * + * @param source A source providing a sequence of documents + * @param projection An optional projection criteria + * @returns {Cursor} A Cursor for iterating over the results + */ + find(collection, projection) { + return new import_cursor.Cursor( + collection, + (o) => this.test(o), + projection || {}, + this.#options + ); + } + /** + * Remove matched documents from the collection returning the remainder + * + * @param collection An array of documents + * @returns {Array} A new array with matching elements removed + */ + remove(collection) { + return collection.reduce((acc, obj) => { + if (!this.test(obj)) acc.push(obj); + return acc; + }, []); + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + Query +}); diff --git a/node_modules/mingo/dist/cjs/types.js b/node_modules/mingo/dist/cjs/types.js new file mode 100644 index 0000000..2a8792d --- /dev/null +++ b/node_modules/mingo/dist/cjs/types.js @@ -0,0 +1,37 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var types_exports = {}; +__export(types_exports, { + TIME_UNITS: () => TIME_UNITS +}); +module.exports = __toCommonJS(types_exports); +const TIME_UNITS = [ + "year", + "quarter", + "month", + "week", + "day", + "hour", + "minute", + "second", + "millisecond" +]; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + TIME_UNITS +}); diff --git a/node_modules/mingo/dist/cjs/updater.js b/node_modules/mingo/dist/cjs/updater.js new file mode 100644 index 0000000..63ae136 --- /dev/null +++ b/node_modules/mingo/dist/cjs/updater.js @@ -0,0 +1,67 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var updater_exports = {}; +__export(updater_exports, { + createUpdater: () => createUpdater, + update: () => update, + updateObject: () => updateObject +}); +module.exports = __toCommonJS(updater_exports); +var UPDATE_OPERATORS = __toESM(require("./operators/update")); +var import_internal = require("./operators/update/_internal"); +var import_query = require("./query"); +var import_util = require("./util"); +function createUpdater(defaultOptions) { + defaultOptions = defaultOptions ?? import_internal.UPDATE_OPTIONS; + return (obj, expr, arrayFilters = [], condition = {}, options = defaultOptions) => { + const entry = Object.entries(expr); + (0, import_util.assert)( + entry.length === 1, + "Update expression must contain only one operator." + ); + const [op, args] = entry[0]; + (0, import_util.assert)( + (0, import_util.has)(UPDATE_OPERATORS, op), + `Update operator '${op}' is not supported.` + ); + const mutate = UPDATE_OPERATORS[op]; + if (Object.keys(condition).length) { + const q = new import_query.Query(condition, options.queryOptions); + if (!q.test(obj)) return []; + } + return mutate(obj, args, arrayFilters, options); + }; +} +const update = createUpdater(); +const updateObject = update; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + createUpdater, + update, + updateObject +}); diff --git a/node_modules/mingo/dist/cjs/util.js b/node_modules/mingo/dist/cjs/util.js new file mode 100644 index 0000000..99ae832 --- /dev/null +++ b/node_modules/mingo/dist/cjs/util.js @@ -0,0 +1,635 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var util_exports = {}; +__export(util_exports, { + MingoError: () => MingoError, + ValueMap: () => ValueMap, + assert: () => assert, + cloneDeep: () => cloneDeep, + compare: () => compare, + ensureArray: () => ensureArray, + filterMissing: () => filterMissing, + findInsertIndex: () => findInsertIndex, + flatten: () => flatten, + groupBy: () => groupBy, + has: () => has, + hashCode: () => hashCode, + intersection: () => intersection, + into: () => into, + isArray: () => isArray, + isBoolean: () => isBoolean, + isDate: () => isDate, + isEmpty: () => isEmpty, + isEqual: () => isEqual, + isFunction: () => isFunction, + isNil: () => isNil, + isNotNaN: () => isNotNaN, + isNumber: () => isNumber, + isObject: () => isObject, + isObjectLike: () => isObjectLike, + isOperator: () => isOperator, + isRegExp: () => isRegExp, + isString: () => isString, + isSymbol: () => isSymbol, + merge: () => merge, + normalize: () => normalize, + removeValue: () => removeValue, + resolve: () => resolve, + resolveGraph: () => resolveGraph, + setValue: () => setValue, + stringify: () => stringify, + truthy: () => truthy, + typeOf: () => typeOf, + unique: () => unique, + walk: () => walk +}); +module.exports = __toCommonJS(util_exports); +class MingoError extends Error { +} +const MISSING = Symbol("missing"); +const CYCLE_FOUND_ERROR = Object.freeze( + new Error("mingo: cycle detected while processing object/array") +); +const DEFAULT_HASH_FUNCTION = (value) => { + const s = stringify(value); + let hash = 0; + let i = s.length; + while (i) hash = (hash << 5) - hash ^ s.charCodeAt(--i); + return hash >>> 0; +}; +const isPrimitive = (v) => typeof v !== "object" && typeof v !== "function" || v === null; +const isScalar = (v) => isPrimitive(v) || isDate(v) || isRegExp(v); +const SORT_ORDER = { + undefined: 1, + null: 2, + number: 3, + string: 4, + symbol: 5, + object: 6, + array: 7, + arraybuffer: 8, + boolean: 9, + date: 10, + regexp: 11, + function: 12 +}; +const compare = (a, b) => { + if (a === MISSING) a = void 0; + if (b === MISSING) b = void 0; + const [u, v] = [a, b].map((n) => SORT_ORDER[typeOf(n)] || 0); + if (u !== v) return u - v; + if (isEqual(a, b)) return 0; + if (a < b) return -1; + if (a > b) return 1; + return 0; +}; +class ValueMap extends Map { + // The hash function + #hashFn = DEFAULT_HASH_FUNCTION; + // maps the hashcode to key set + #keyMap = /* @__PURE__ */ new Map(); + // returns a tuple of [, ]. Expects an object key. + #unpack = (key) => { + const hash = this.#hashFn(key); + return [(this.#keyMap.get(hash) || []).find((k) => isEqual(k, key)), hash]; + }; + constructor() { + super(); + } + /** + * Returns a new {@link ValueMap} object. + * @param fn An optional custom hash function + */ + static init(fn) { + const m = new ValueMap(); + if (fn) m.#hashFn = fn; + return m; + } + clear() { + super.clear(); + this.#keyMap.clear(); + } + /** + * @returns true if an element in the Map existed and has been removed, or false if the element does not exist. + */ + delete(key) { + if (isPrimitive(key)) return super.delete(key); + const [masterKey, hash] = this.#unpack(key); + if (!super.delete(masterKey)) return false; + this.#keyMap.set( + hash, + this.#keyMap.get(hash).filter((k) => !isEqual(k, masterKey)) + ); + return true; + } + /** + * Returns a specified element from the Map object. If the value that is associated to the provided key is an object, then you will get a reference to that object and any change made to that object will effectively modify it inside the Map. + * @returns Returns the element associated with the specified key. If no element is associated with the specified key, undefined is returned. + */ + get(key) { + if (isPrimitive(key)) return super.get(key); + const [masterKey, _] = this.#unpack(key); + return super.get(masterKey); + } + /** + * @returns boolean indicating whether an element with the specified key exists or not. + */ + has(key) { + if (isPrimitive(key)) return super.has(key); + const [masterKey, _] = this.#unpack(key); + return super.has(masterKey); + } + /** + * Adds a new element with a specified key and value to the Map. If an element with the same key already exists, the element will be updated. + */ + set(key, value) { + if (isPrimitive(key)) return super.set(key, value); + const [masterKey, hash] = this.#unpack(key); + if (super.has(masterKey)) { + super.set(masterKey, value); + } else { + super.set(key, value); + const keys = this.#keyMap.get(hash) || []; + keys.push(key); + this.#keyMap.set(hash, keys); + } + return this; + } + /** + * @returns the number of elements in the Map. + */ + get size() { + return super.size; + } +} +function assert(condition, message) { + if (!condition) throw new MingoError(message); +} +const STRING_REP = Object.keys(SORT_ORDER).reduce( + (memo, k) => { + memo["[object " + k[0].toUpperCase() + k.substring(1) + "]"] = k; + return memo; + }, + {} +); +function typeOf(v) { + const s = Object.prototype.toString.call(v); + return s === "[object Object]" ? v?.constructor?.name?.toLowerCase() || "object" : STRING_REP[s] || s.substring(8, s.length - 1).toLowerCase(); +} +const isBoolean = (v) => typeof v === "boolean"; +const isString = (v) => typeof v === "string"; +const isSymbol = (v) => typeof v === "symbol"; +const isNumber = (v) => !isNaN(v) && typeof v === "number"; +const isNotNaN = (v) => !(isNaN(v) && typeof v === "number"); +const isArray = Array.isArray; +function isObject(v) { + if (!v) return false; + const p = Object.getPrototypeOf(v); + return (p === Object.prototype || p === null) && typeOf(v) === "object"; +} +const isObjectLike = (v) => !isPrimitive(v); +const isDate = (v) => v instanceof Date; +const isRegExp = (v) => v instanceof RegExp; +const isFunction = (v) => typeof v === "function"; +const isNil = (v) => v === null || v === void 0; +const truthy = (arg, strict = true) => !!arg || strict && arg === ""; +const isEmpty = (x) => isNil(x) || isString(x) && !x || isArray(x) && x.length === 0 || isObject(x) && Object.keys(x).length === 0; +const ensureArray = (x) => isArray(x) ? x : [x]; +const has = (obj, prop) => !!obj && Object.prototype.hasOwnProperty.call(obj, prop); +const isTypedArray = (v) => typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView(v); +const cloneDeep = (v, refs) => { + if (isNil(v) || isBoolean(v) || isNumber(v) || isString(v)) return v; + if (isDate(v)) return new Date(v); + if (isRegExp(v)) return new RegExp(v); + if (isTypedArray(v)) { + const ctor = v.constructor; + return new ctor(v); + } + if (!(refs instanceof Set)) refs = /* @__PURE__ */ new Set(); + if (refs.has(v)) throw CYCLE_FOUND_ERROR; + refs.add(v); + try { + if (isArray(v)) { + const arr = new Array(v.length); + for (let i = 0; i < v.length; i++) arr[i] = cloneDeep(v[i], refs); + return arr; + } + if (isObject(v)) { + const obj = {}; + for (const k of Object.keys(v)) obj[k] = cloneDeep(v[k], refs); + return obj; + } + } finally { + refs.delete(v); + } + return v; +}; +const isMissing = (v) => v === MISSING; +function merge(target, input) { + if (isMissing(target) || isNil(target)) return input; + if (isMissing(input) || isNil(input)) return target; + if (isPrimitive(target) || isPrimitive(input)) return input; + if (isArray(target) && isArray(input)) { + assert( + target.length === input.length, + "arrays must be of equal length to merge." + ); + } + for (const k of Object.keys(input)) { + target[k] = merge(target[k], input[k]); + } + return target; +} +function intersection(input, hashFunction = DEFAULT_HASH_FUNCTION) { + const vmaps = [ValueMap.init(hashFunction), ValueMap.init(hashFunction)]; + if (input.length === 0) return []; + if (input.some((arr) => arr.length === 0)) return []; + if (input.length === 1) return [...input]; + input[input.length - 1].forEach((v) => vmaps[0].set(v, true)); + for (let i = input.length - 2; i > -1; i--) { + input[i].forEach((v) => { + if (vmaps[0].has(v)) vmaps[1].set(v, true); + }); + if (vmaps[1].size === 0) return []; + vmaps.reverse(); + vmaps[1].clear(); + } + return Array.from(vmaps[0].keys()); +} +function flatten(xs, depth = 1) { + const arr = new Array(); + function flatten2(ys, n) { + for (let i = 0, len = ys.length; i < len; i++) { + if (isArray(ys[i]) && (n > 0 || n < 0)) { + flatten2(ys[i], Math.max(-1, n - 1)); + } else { + arr.push(ys[i]); + } + } + } + flatten2(xs, depth); + return arr; +} +function getMembersOf(o) { + const props = {}; + while (o) { + for (const k of Object.getOwnPropertyNames(o)) + if (!(k in props)) props[k] = o[k]; + o = Object.getPrototypeOf(o); + } + return props; +} +function hasCustomString(o) { + while (o) { + if (Object.getOwnPropertyNames(o).includes("toString")) + return o["toString"] !== Object.prototype.toString; + o = Object.getPrototypeOf(o); + } + return false; +} +function isEqual(a, b) { + if (a === b || Object.is(a, b)) return true; + if (a === null || b === null) return false; + if (typeof a !== typeof b) return false; + if (typeof a !== "object") return false; + if (a.constructor !== b.constructor) return false; + if (a instanceof Date) return +a === +b; + if (a instanceof RegExp) return a.toString() === b.toString(); + const ctor = a.constructor; + if (ctor === Array || ctor === Object) { + const aKeys = Object.keys(a).sort(); + const bKeys = Object.keys(b).sort(); + if (aKeys.length !== bKeys.length) return false; + for (let i = 0, k = aKeys[i]; i < aKeys.length; k = aKeys[++i]) { + if (k !== bKeys[i] || !isEqual(a[k], b[k])) return false; + } + return true; + } + return hasCustomString(a) && a.toString() === b.toString(); +} +function unique(input, hashFunction = DEFAULT_HASH_FUNCTION) { + const m = ValueMap.init(hashFunction); + input.forEach((v) => m.set(v, true)); + return Array.from(m.keys()); +} +const stringify = (v, refs) => { + if (v === null) return "null"; + if (v === void 0) return "undefined"; + if (isString(v) || isNumber(v) || isBoolean(v)) return JSON.stringify(v); + if (isDate(v)) return v.toISOString(); + if (isRegExp(v) || isSymbol(v) || isFunction(v)) + return v.toString(); + if (!(refs instanceof Set)) refs = /* @__PURE__ */ new Set(); + if (refs.has(v)) throw CYCLE_FOUND_ERROR; + try { + refs.add(v); + if (isArray(v)) return "[" + v.map((s2) => stringify(s2, refs)).join(",") + "]"; + if (isObject(v)) { + const keys = Object.keys(v).sort(); + return "{" + keys.map((k) => `${k}:${stringify(v[k], refs)}`).join() + "}"; + } + const s = hasCustomString(v) ? v.toString() : stringify(getMembersOf(v), refs); + return typeOf(v) + "(" + s + ")"; + } finally { + refs.delete(v); + } +}; +function hashCode(value, hashFunction) { + if (isNil(value)) return null; + hashFunction = hashFunction || DEFAULT_HASH_FUNCTION; + return hashFunction(value); +} +function groupBy(collection, keyFn, hashFunction = DEFAULT_HASH_FUNCTION) { + if (collection.length < 1) return /* @__PURE__ */ new Map(); + const lookup = /* @__PURE__ */ new Map(); + const result = /* @__PURE__ */ new Map(); + for (let i = 0; i < collection.length; i++) { + const obj = collection[i]; + const key = keyFn(obj, i); + const hash = hashCode(key, hashFunction); + if (hash === null) { + if (result.has(null)) { + result.get(null).push(obj); + } else { + result.set(null, [obj]); + } + } else { + const existingKey = lookup.has(hash) ? lookup.get(hash).find((k) => isEqual(k, key)) : null; + if (isNil(existingKey)) { + result.set(key, [obj]); + if (lookup.has(hash)) { + lookup.get(hash).push(key); + } else { + lookup.set(hash, [key]); + } + } else { + result.get(existingKey).push(obj); + } + } + } + return result; +} +const MAX_ARRAY_PUSH = 5e4; +function into(target, ...rest) { + if (isArray(target)) { + for (const arr of rest) { + let i = Math.ceil(arr.length / MAX_ARRAY_PUSH); + let begin = 0; + while (i-- > 0) { + Array.prototype.push.apply( + target, + arr.slice(begin, begin + MAX_ARRAY_PUSH) + ); + begin += MAX_ARRAY_PUSH; + } + } + return target; + } else { + return rest.filter(isObjectLike).reduce((acc, item) => { + Object.assign(acc, item); + return acc; + }, target); + } +} +function getValue(obj, key) { + return isObjectLike(obj) ? obj[key] : void 0; +} +function unwrap(arr, depth) { + if (depth < 1) return arr; + while (depth-- && arr.length === 1) arr = arr[0]; + return arr; +} +function resolve(obj, selector, options) { + let depth = 0; + function resolve2(o, path) { + let value = o; + for (let i = 0; i < path.length; i++) { + const field = path[i]; + const isText = /^\d+$/.exec(field) === null; + if (isText && isArray(value)) { + if (i === 0 && depth > 0) break; + depth += 1; + const subpath = path.slice(i); + value = value.reduce((acc, item) => { + const v = resolve2(item, subpath); + if (v !== void 0) acc.push(v); + return acc; + }, []); + break; + } else { + value = getValue(value, field); + } + if (value === void 0) break; + } + return value; + } + const res = isScalar(obj) ? obj : resolve2(obj, selector.split(".")); + return isArray(res) && options?.unwrapArray ? unwrap(res, depth) : res; +} +function resolveGraph(obj, selector, options) { + const sep = selector.indexOf("."); + const key = sep == -1 ? selector : selector.substring(0, sep); + const next = selector.substring(sep + 1); + const hasNext = sep != -1; + if (isArray(obj)) { + const isIndex = /^\d+$/.test(key); + const arr = isIndex && options?.preserveIndex ? [...obj] : []; + if (isIndex) { + const index = parseInt(key); + let value2 = getValue(obj, index); + if (hasNext) { + value2 = resolveGraph(value2, next, options); + } + if (options?.preserveIndex) { + arr[index] = value2; + } else { + arr.push(value2); + } + } else { + for (const item of obj) { + const value2 = resolveGraph(item, selector, options); + if (options?.preserveMissing) { + arr.push(value2 == void 0 ? MISSING : value2); + } else if (value2 != void 0 || options?.preserveIndex) { + arr.push(value2); + } + } + } + return arr; + } + const res = options?.preserveKeys ? { ...obj } : {}; + let value = getValue(obj, key); + if (hasNext) { + value = resolveGraph(value, next, options); + } + if (value === void 0) return void 0; + res[key] = value; + return res; +} +function filterMissing(obj) { + if (isArray(obj)) { + for (let i = obj.length - 1; i >= 0; i--) { + if (obj[i] === MISSING) { + obj.splice(i, 1); + } else { + filterMissing(obj[i]); + } + } + } else if (isObject(obj)) { + for (const k in obj) { + if (has(obj, k)) { + filterMissing(obj[k]); + } + } + } +} +const NUMBER_RE = /^\d+$/; +function walk(obj, selector, fn, options) { + const names = selector.split("."); + const key = names[0]; + const next = names.slice(1).join("."); + if (names.length === 1) { + if (isObject(obj) || isArray(obj) && NUMBER_RE.test(key)) { + fn(obj, key); + } + } else { + if (options?.buildGraph && isNil(obj[key])) { + obj[key] = {}; + } + const item = obj[key]; + if (!item) return; + const isNextArrayIndex = !!(names.length > 1 && NUMBER_RE.test(names[1])); + if (isArray(item) && options?.descendArray && !isNextArrayIndex) { + item.forEach((e) => walk(e, next, fn, options)); + } else { + walk(item, next, fn, options); + } + } +} +function setValue(obj, selector, value) { + walk( + obj, + selector, + (item, key) => { + item[key] = isFunction(value) ? value(item[key]) : value; + }, + { buildGraph: true } + ); +} +function removeValue(obj, selector, options) { + walk( + obj, + selector, + (item, key) => { + if (isArray(item)) { + if (/^\d+$/.test(key)) { + item.splice(parseInt(key), 1); + } else if (options && options.descendArray) { + for (const elem of item) { + if (isObject(elem)) { + delete elem[key]; + } + } + } + } else if (isObject(item)) { + delete item[key]; + } + }, + options + ); +} +const OPERATOR_NAME_PATTERN = /^\$[a-zA-Z0-9_]+$/; +function isOperator(name) { + return OPERATOR_NAME_PATTERN.test(name); +} +function normalize(expr) { + if (isScalar(expr)) { + return isRegExp(expr) ? { $regex: expr } : { $eq: expr }; + } + if (isObjectLike(expr)) { + if (!Object.keys(expr).some(isOperator)) return { $eq: expr }; + if (has(expr, "$regex")) { + const newExpr = { ...expr }; + newExpr["$regex"] = new RegExp( + expr["$regex"], + expr["$options"] + ); + delete newExpr["$options"]; + return newExpr; + } + } + return expr; +} +function findInsertIndex(sorted, item, comparator = compare) { + let lo = 0; + let hi = sorted.length - 1; + while (lo <= hi) { + const mid = Math.round(lo + (hi - lo) / 2); + if (comparator(item, sorted[mid]) < 0) { + hi = mid - 1; + } else if (comparator(item, sorted[mid]) > 0) { + lo = mid + 1; + } else { + return mid; + } + } + return lo; +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + MingoError, + ValueMap, + assert, + cloneDeep, + compare, + ensureArray, + filterMissing, + findInsertIndex, + flatten, + groupBy, + has, + hashCode, + intersection, + into, + isArray, + isBoolean, + isDate, + isEmpty, + isEqual, + isFunction, + isNil, + isNotNaN, + isNumber, + isObject, + isObjectLike, + isOperator, + isRegExp, + isString, + isSymbol, + merge, + normalize, + removeValue, + resolve, + resolveGraph, + setValue, + stringify, + truthy, + typeOf, + unique, + walk +}); diff --git a/node_modules/mingo/dist/esm/aggregator.js b/node_modules/mingo/dist/esm/aggregator.js new file mode 100644 index 0000000..e49817c --- /dev/null +++ b/node_modules/mingo/dist/esm/aggregator.js @@ -0,0 +1,54 @@ +import { + getOperator, + initOptions, + ProcessingMode +} from "./core"; +import { Lazy } from "./lazy"; +import { assert, cloneDeep, isEmpty } from "./util"; +class Aggregator { + #pipeline; + #options; + constructor(pipeline, options) { + this.#pipeline = pipeline; + this.#options = initOptions(options); + } + /** + * Returns an {@link Iterator} for lazy evaluation of the pipeline. + * + * @param collection An array or iterator object + * @returns {Iterator} an iterator object + */ + stream(collection, options) { + let iter = Lazy(collection); + const opts = options ?? this.#options; + const mode = opts.processingMode; + if (mode & ProcessingMode.CLONE_INPUT) iter.map(cloneDeep); + const stages = new Array(); + if (!isEmpty(this.#pipeline)) { + for (const opExpr of this.#pipeline) { + const opKeys = Object.keys(opExpr); + const opName = opKeys[0]; + const call = getOperator("pipeline", opName, opts); + assert( + opKeys.length === 1 && !!call, + `invalid pipeline operator ${opName}` + ); + stages.push(opName); + iter = call(iter, opExpr[opName], opts); + } + } + if (mode & ProcessingMode.CLONE_OUTPUT) iter.map(cloneDeep); + return iter; + } + /** + * Return the results of the aggregation as an array. + * + * @param collection + */ + run(collection, options) { + return this.stream(collection, options).value(); + } +} +export { + Aggregator +}; diff --git a/node_modules/mingo/dist/esm/core.js b/node_modules/mingo/dist/esm/core.js new file mode 100644 index 0000000..c838cee --- /dev/null +++ b/node_modules/mingo/dist/esm/core.js @@ -0,0 +1,342 @@ +import { + assert, + has, + isArray, + isFunction, + isNil, + isObject, + isOperator, + isString, + resolve +} from "./util"; +var ProcessingMode = /* @__PURE__ */ ((ProcessingMode2) => { + ProcessingMode2[ProcessingMode2["CLONE_OFF"] = 0] = "CLONE_OFF"; + ProcessingMode2[ProcessingMode2["CLONE_INPUT"] = 1] = "CLONE_INPUT"; + ProcessingMode2[ProcessingMode2["CLONE_OUTPUT"] = 2] = "CLONE_OUTPUT"; + ProcessingMode2[ProcessingMode2["CLONE_ALL"] = 3] = "CLONE_ALL"; + return ProcessingMode2; +})(ProcessingMode || {}); +class ComputeOptions { + #options; + /** Reference to the root object when processing subgraphs of the object. */ + #root; + #local; + constructor(options, root, local) { + this.#options = options; + this.update(root, local); + } + /** + * Initialize new ComputeOptions. + * @returns {ComputeOptions} + */ + static init(options, root, local) { + return !(options instanceof ComputeOptions) ? new ComputeOptions(options, root, local) : new ComputeOptions(options.#options, options.root ?? root, { + ...options.#local, + ...local, + variables: Object.assign( + {}, + options.#local?.variables, + local?.variables + ) + }); + } + /** + * Updates the internal state. + * + * @param root The new root context for this object. + * @param local The new local state to merge into current if it exists. + * @returns + */ + update(root, local) { + this.#root = root; + const variables = Object.assign( + {}, + this.#local?.variables, + local?.variables + ); + if (Object.keys(variables).length) { + this.#local = { ...local, variables }; + } else { + this.#local = local ?? {}; + } + return this; + } + getOptions() { + return Object.freeze({ + ...this.#options, + context: Context.from(this.#options.context) + }); + } + get root() { + return this.#root; + } + get local() { + return this.#local; + } + get idKey() { + return this.#options.idKey; + } + get collation() { + return this.#options?.collation; + } + get processingMode() { + return this.#options?.processingMode || 0 /* CLONE_OFF */; + } + get useStrictMode() { + return this.#options?.useStrictMode; + } + get scriptEnabled() { + return this.#options?.scriptEnabled; + } + get useGlobalContext() { + return this.#options?.useGlobalContext; + } + get hashFunction() { + return this.#options?.hashFunction; + } + get collectionResolver() { + return this.#options?.collectionResolver; + } + get jsonSchemaValidator() { + return this.#options?.jsonSchemaValidator; + } + get variables() { + return this.#options?.variables; + } + get context() { + return this.#options?.context; + } +} +function initOptions(options) { + return options instanceof ComputeOptions ? options.getOptions() : Object.freeze({ + idKey: "_id", + scriptEnabled: true, + useStrictMode: true, + useGlobalContext: true, + processingMode: 0 /* CLONE_OFF */, + ...options, + context: options?.context ? Context.from(options?.context) : Context.init() + }); +} +var OperatorType = /* @__PURE__ */ ((OperatorType2) => { + OperatorType2["ACCUMULATOR"] = "accumulator"; + OperatorType2["EXPRESSION"] = "expression"; + OperatorType2["PIPELINE"] = "pipeline"; + OperatorType2["PROJECTION"] = "projection"; + OperatorType2["QUERY"] = "query"; + OperatorType2["WINDOW"] = "window"; + return OperatorType2; +})(OperatorType || {}); +class Context { + #operators = /* @__PURE__ */ new Map(); + constructor() { + } + static init() { + return new Context(); + } + static from(ctx) { + const instance = Context.init(); + if (isNil(ctx)) return instance; + ctx.#operators.forEach((v, k) => instance.addOperators(k, v)); + return instance; + } + addOperators(type, operators) { + if (!this.#operators.has(type)) this.#operators.set(type, {}); + for (const [name, fn] of Object.entries(operators)) { + if (!this.getOperator(type, name)) { + this.#operators.get(type)[name] = fn; + } + } + return this; + } + getOperator(type, name) { + const ops = this.#operators.get(type) ?? {}; + return ops[name] ?? null; + } + addAccumulatorOps(ops) { + return this.addOperators("accumulator", ops); + } + addExpressionOps(ops) { + return this.addOperators("expression", ops); + } + addQueryOps(ops) { + return this.addOperators("query", ops); + } + addPipelineOps(ops) { + return this.addOperators("pipeline", ops); + } + addProjectionOps(ops) { + return this.addOperators("projection", ops); + } + addWindowOps(ops) { + return this.addOperators("window", ops); + } +} +const GLOBAL_CONTEXT = Context.init(); +function useOperators(type, operators) { + for (const [name, fn] of Object.entries(operators)) { + assert( + isFunction(fn) && isOperator(name), + `'${name}' is not a valid operator` + ); + const currentFn = getOperator(type, name, null); + assert( + !currentFn || fn === currentFn, + `${name} already exists for '${type}' operators. Cannot change operator function once registered.` + ); + } + switch (type) { + case "accumulator": + GLOBAL_CONTEXT.addAccumulatorOps(operators); + break; + case "expression": + GLOBAL_CONTEXT.addExpressionOps(operators); + break; + case "pipeline": + GLOBAL_CONTEXT.addPipelineOps(operators); + break; + case "projection": + GLOBAL_CONTEXT.addProjectionOps(operators); + break; + case "query": + GLOBAL_CONTEXT.addQueryOps(operators); + break; + case "window": + GLOBAL_CONTEXT.addWindowOps(operators); + break; + } +} +function getOperator(type, name, options) { + const { context: ctx, useGlobalContext: fallback } = options || {}; + const fn = ctx ? ctx.getOperator(type, name) : null; + return !fn && fallback ? GLOBAL_CONTEXT.getOperator(type, name) : fn; +} +function computeValue(obj, expr, operator, options) { + const copts = ComputeOptions.init(options, obj); + return !!operator && isOperator(operator) ? computeOperator(obj, expr, operator, copts) : computeExpression(obj, expr, copts); +} +const SYSTEM_VARS = ["$$ROOT", "$$CURRENT", "$$REMOVE", "$$NOW"]; +function computeExpression(obj, expr, options) { + if (isString(expr) && expr.length > 0 && expr[0] === "$") { + if (REDACT_ACTIONS.includes(expr)) return expr; + let ctx = options.root; + const arr = expr.split("."); + if (SYSTEM_VARS.includes(arr[0])) { + switch (arr[0]) { + case "$$ROOT": + break; + case "$$CURRENT": + ctx = obj; + break; + case "$$REMOVE": + ctx = void 0; + break; + case "$$NOW": + ctx = /* @__PURE__ */ new Date(); + break; + } + expr = expr.slice(arr[0].length + 1); + } else if (arr[0].slice(0, 2) === "$$") { + ctx = Object.assign( + {}, + // global vars + options.variables, + // current item is added before local variables because the binding may be changed. + { this: obj }, + // local vars + options?.local?.variables + ); + const name = arr[0].slice(2); + assert(has(ctx, name), `Use of undefined variable: ${name}`); + expr = expr.slice(2); + } else { + expr = expr.slice(1); + } + return expr === "" ? ctx : resolve(ctx, expr); + } + if (isArray(expr)) { + return expr.map((item) => computeExpression(obj, item, options)); + } + if (isObject(expr)) { + const result = {}; + const elems = Object.entries(expr); + for (const [key, val] of elems) { + if (isOperator(key)) { + assert(elems.length == 1, "expression must have single operator."); + return computeOperator(obj, val, key, options); + } + result[key] = computeExpression(obj, val, options); + } + return result; + } + return expr; +} +function computeOperator(obj, expr, operator, options) { + const callExpression = getOperator( + "expression", + operator, + options + ); + if (callExpression) return callExpression(obj, expr, options); + const callAccumulator = getOperator( + "accumulator", + operator, + options + ); + assert(!!callAccumulator, `accumulator '${operator}' is not registered.`); + if (!isArray(obj)) { + obj = computeExpression(obj, expr, options); + expr = null; + } + assert(isArray(obj), `arguments must resolve to array for ${operator}.`); + return callAccumulator(obj, expr, options); +} +const REDACT_ACTIONS = ["$$KEEP", "$$PRUNE", "$$DESCEND"]; +function redact(obj, expr, options) { + const action = computeValue(obj, expr, null, options); + switch (action) { + case "$$KEEP": + return obj; + case "$$PRUNE": + return void 0; + case "$$DESCEND": { + if (!has(expr, "$cond")) return obj; + const output = {}; + for (const [key, value] of Object.entries(obj)) { + if (isArray(value)) { + const res = new Array(); + for (let elem of value) { + if (isObject(elem)) { + elem = redact(elem, expr, options.update(elem)); + } + if (!isNil(elem)) res.push(elem); + } + output[key] = res; + } else if (isObject(value)) { + const res = redact( + value, + expr, + options.update(value) + ); + if (!isNil(res)) output[key] = res; + } else { + output[key] = value; + } + } + return output; + } + default: + return action; + } +} +export { + ComputeOptions, + Context, + OperatorType, + ProcessingMode, + computeValue, + getOperator, + initOptions, + redact, + useOperators +}; diff --git a/node_modules/mingo/dist/esm/cursor.js b/node_modules/mingo/dist/esm/cursor.js new file mode 100644 index 0000000..524ffa7 --- /dev/null +++ b/node_modules/mingo/dist/esm/cursor.js @@ -0,0 +1,145 @@ +import { + ProcessingMode +} from "./core"; +import { concat, Lazy } from "./lazy"; +import { $limit } from "./operators/pipeline/limit"; +import { $project } from "./operators/pipeline/project"; +import { $skip } from "./operators/pipeline/skip"; +import { $sort } from "./operators/pipeline/sort"; +import { cloneDeep, has } from "./util"; +const OPERATORS = { $sort, $skip, $limit }; +class Cursor { + #source; + #predicate; + #projection; + #options; + #operators = {}; + #result = null; + #buffer = []; + constructor(source, predicate, projection, options) { + this.#source = source; + this.#predicate = predicate; + this.#projection = projection; + this.#options = options; + } + /** Returns the iterator from running the query */ + fetch() { + if (this.#result) return this.#result; + this.#result = Lazy(this.#source).filter(this.#predicate); + const mode = this.#options.processingMode; + if (mode & ProcessingMode.CLONE_INPUT) this.#result.map(cloneDeep); + for (const op of ["$sort", "$skip", "$limit"]) { + if (has(this.#operators, op)) { + this.#result = OPERATORS[op]( + this.#result, + this.#operators[op], + this.#options + ); + } + } + if (Object.keys(this.#projection).length) { + this.#result = $project(this.#result, this.#projection, this.#options); + } + if (mode & ProcessingMode.CLONE_OUTPUT) this.#result.map(cloneDeep); + return this.#result; + } + /** Returns an iterator with the buffered data included */ + fetchAll() { + const buffered = Lazy([...this.#buffer]); + this.#buffer = []; + return concat(buffered, this.fetch()); + } + /** + * Return remaining objects in the cursor as an array. This method exhausts the cursor + * @returns {Array} + */ + all() { + return this.fetchAll().value(); + } + /** + * Returns the number of objects return in the cursor. This method exhausts the cursor + * @returns {Number} + */ + count() { + return this.all().length; + } + /** + * Returns a cursor that begins returning results only after passing or skipping a number of documents. + * @param {Number} n the number of results to skip. + * @return {Cursor} Returns the cursor, so you can chain this call. + */ + skip(n) { + this.#operators["$skip"] = n; + return this; + } + /** + * Constrains the size of a cursor's result set. + * @param {Number} n the number of results to limit to. + * @return {Cursor} Returns the cursor, so you can chain this call. + */ + limit(n) { + this.#operators["$limit"] = n; + return this; + } + /** + * Returns results ordered according to a sort specification. + * @param {AnyObject} modifier an object of key and values specifying the sort order. 1 for ascending and -1 for descending + * @return {Cursor} Returns the cursor, so you can chain this call. + */ + sort(modifier) { + this.#operators["$sort"] = modifier; + return this; + } + /** + * Specifies the collation for the cursor returned by the `mingo.Query.find` + * @param {*} spec + */ + collation(spec) { + this.#options = { ...this.#options, collation: spec }; + return this; + } + /** + * Returns the next document in a cursor. + * @returns {AnyObject | Boolean} + */ + next() { + if (this.#buffer.length > 0) { + return this.#buffer.pop(); + } + const o = this.fetch().next(); + if (o.done) return; + return o.value; + } + /** + * Returns true if the cursor has documents and can be iterated. + * @returns {boolean} + */ + hasNext() { + if (this.#buffer.length > 0) return true; + const o = this.fetch().next(); + if (o.done) return false; + this.#buffer.push(o.value); + return true; + } + /** + * Applies a function to each document in a cursor and collects the return values in an array. + * @param fn + * @returns {Array} + */ + map(fn) { + return this.all().map(fn); + } + /** + * Applies a JavaScript function for every document in a cursor. + * @param fn + */ + forEach(fn) { + this.all().forEach(fn); + } + [Symbol.iterator]() { + return this.fetchAll(); + } +} +export { + Cursor +}; diff --git a/node_modules/mingo/dist/esm/index.js b/node_modules/mingo/dist/esm/index.js new file mode 100644 index 0000000..cef2aa2 --- /dev/null +++ b/node_modules/mingo/dist/esm/index.js @@ -0,0 +1,35 @@ +import "./init/basic"; +import { Aggregator } from "./aggregator"; +import { Query } from "./query"; +import { createUpdater, update } from "./updater"; +import { Aggregator as Aggregator2 } from "./aggregator"; +import { Query as Query2 } from "./query"; +import { createUpdater as createUpdater2, update as update2 } from "./updater"; +function find(collection, criteria, projection, options) { + return new Query(criteria, options).find(collection, projection); +} +function remove(collection, criteria, options) { + return new Query(criteria, options).remove(collection); +} +function aggregate(collection, pipeline, options) { + return new Aggregator(pipeline, options).run(collection); +} +var index_default = { + Aggregator, + Query, + aggregate, + createUpdater, + find, + remove, + update +}; +export { + Aggregator2 as Aggregator, + Query2 as Query, + aggregate, + createUpdater2 as createUpdater, + index_default as default, + find, + remove, + update2 as update +}; diff --git a/node_modules/mingo/dist/esm/init/basic.js b/node_modules/mingo/dist/esm/init/basic.js new file mode 100644 index 0000000..c48d55f --- /dev/null +++ b/node_modules/mingo/dist/esm/init/basic.js @@ -0,0 +1,18 @@ +import { useOperators } from "../core"; +import * as booleanOperators from "../operators/expression/boolean"; +import * as comparisonOperators from "../operators/expression/comparison"; +import { $limit, $project, $skip, $sort } from "../operators/pipeline"; +import * as projectionOperators from "../operators/projection"; +import * as queryOperators from "../operators/query"; +useOperators("expression", { + ...booleanOperators, + ...comparisonOperators +}); +useOperators("pipeline", { + $project, + $skip, + $limit, + $sort +}); +useOperators("projection", projectionOperators); +useOperators("query", queryOperators); diff --git a/node_modules/mingo/dist/esm/init/system.js b/node_modules/mingo/dist/esm/init/system.js new file mode 100644 index 0000000..17fe691 --- /dev/null +++ b/node_modules/mingo/dist/esm/init/system.js @@ -0,0 +1,13 @@ +import { useOperators } from "../core"; +import * as accumulatorOperators from "../operators/accumulator"; +import * as expressionOperators from "../operators/expression"; +import * as pipelineOperators from "../operators/pipeline"; +import * as projectionOperators from "../operators/projection"; +import * as queryOperators from "../operators/query"; +import * as windowOperators from "../operators/window"; +useOperators("accumulator", accumulatorOperators); +useOperators("expression", expressionOperators); +useOperators("pipeline", pipelineOperators); +useOperators("projection", projectionOperators); +useOperators("query", queryOperators); +useOperators("window", windowOperators); diff --git a/node_modules/mingo/dist/esm/lazy.js b/node_modules/mingo/dist/esm/lazy.js new file mode 100644 index 0000000..e608adb --- /dev/null +++ b/node_modules/mingo/dist/esm/lazy.js @@ -0,0 +1,244 @@ +import { isArray, MingoError } from "./util"; +function Lazy(source) { + return source instanceof Iterator ? source : new Iterator(source); +} +function concat(...iterators) { + let index = 0; + return Lazy(() => { + while (index < iterators.length) { + const o = iterators[index].next(); + if (!o.done) return o; + index++; + } + return { done: true }; + }); +} +function isGenerator(o) { + return !!o && typeof o === "object" && o?.next instanceof Function; +} +function dropItem(array, i) { + const rest = array.slice(i + 1); + array.splice(i); + Array.prototype.push.apply(array, rest); +} +const DONE = new Error(); +var Action = /* @__PURE__ */ ((Action2) => { + Action2[Action2["MAP"] = 0] = "MAP"; + Action2[Action2["FILTER"] = 1] = "FILTER"; + Action2[Action2["TAKE"] = 2] = "TAKE"; + Action2[Action2["DROP"] = 3] = "DROP"; + return Action2; +})(Action || {}); +function createCallback(nextFn, iteratees, buffer) { + let done = false; + let index = -1; + let bufferIndex = 0; + return function(storeResult) { + try { + outer: while (!done) { + let o = nextFn(); + index++; + let i = -1; + const size = iteratees.length; + let innerDone = false; + while (++i < size) { + const r = iteratees[i]; + switch (r.action) { + case 0 /* MAP */: + o = r.func(o, index); + break; + case 1 /* FILTER */: + if (!r.func(o, index)) continue outer; + break; + case 2 /* TAKE */: + --r.count; + if (!r.count) innerDone = true; + break; + case 3 /* DROP */: + --r.count; + if (!r.count) dropItem(iteratees, i); + continue outer; + default: + break outer; + } + } + done = innerDone; + if (storeResult) { + buffer[bufferIndex++] = o; + } else { + return { value: o, done: false }; + } + } + } catch (e) { + if (e !== DONE) throw e; + } + done = true; + return { done }; + }; +} +class Iterator { + /** + * @param {*} source An iterable object or function. + * Array - return one element per cycle + * Object{next:Function} - call next() for the next value (this also handles generator functions) + * Function - call to return the next value + * @param {Function} fn An optional transformation function + */ + constructor(source) { + this.#iteratees = []; + this.#yieldedValues = []; + this.isDone = false; + let nextVal; + if (source instanceof Function) { + source = { next: source }; + } + if (isGenerator(source)) { + const src = source; + nextVal = () => { + const o = src.next(); + if (o.done) throw DONE; + return o.value; + }; + } else if (isArray(source)) { + const data = source; + const size = data.length; + let index = 0; + nextVal = () => { + if (index < size) return data[index++]; + throw DONE; + }; + } else if (!(source instanceof Function)) { + throw new MingoError( + `Lazy must be initialized with an array, generator, or function.` + ); + } + this.#getNext = createCallback( + nextVal, + this.#iteratees, + this.#yieldedValues + ); + } + #iteratees; + #yieldedValues; + #getNext; + /** + * Add an iteratee to this lazy sequence + */ + push(action, value) { + if (typeof value === "function") { + this.#iteratees.push({ action, func: value }); + } else if (typeof value === "number") { + this.#iteratees.push({ action, count: value }); + } + return this; + } + next() { + return this.#getNext(); + } + // Iteratees methods + /** + * Transform each item in the sequence to a new value + * @param {Function} f + */ + map(f) { + return this.push(0 /* MAP */, f); + } + /** + * Select only items matching the given predicate + * @param {Function} pred + */ + filter(predicate) { + return this.push(1 /* FILTER */, predicate); + } + /** + * Take given numbe for values from sequence + * @param {Number} n A number greater than 0 + */ + take(n) { + return n > 0 ? this.push(2 /* TAKE */, n) : this; + } + /** + * Drop a number of values from the sequence + * @param {Number} n Number of items to drop greater than 0 + */ + drop(n) { + return n > 0 ? this.push(3 /* DROP */, n) : this; + } + // Transformations + /** + * Returns a new lazy object with results of the transformation + * The entire sequence is realized. + * + * @param {Callback} fn Tranform function of type (Array) => (Any) + */ + transform(fn) { + const self = this; + let iter; + return Lazy(() => { + if (!iter) { + iter = Lazy(fn(self.value())); + } + return iter.next(); + }); + } + // Terminal methods + /** + * Returns the fully realized values of the iterators. + * The return value will be an array unless `lazy.first()` was used. + * The realized values are cached for subsequent calls. + */ + value() { + if (!this.isDone) { + this.isDone = this.#getNext(true).done; + } + return this.#yieldedValues; + } + /** + * Execute the funcion for each value. Will stop when an execution returns false. + * @param {Function} f + * @returns {Boolean} false iff `f` return false for AnyVal execution, otherwise true + */ + each(f) { + for (; ; ) { + const o = this.next(); + if (o.done) break; + if (f(o.value) === false) return false; + } + return true; + } + /** + * Returns the reduction of sequence according the reducing function + * + * @param {*} f a reducing function + * @param {*} initialValue + */ + reduce(f, initialValue) { + let o = this.next(); + if (initialValue === void 0 && !o.done) { + initialValue = o.value; + o = this.next(); + } + while (!o.done) { + initialValue = f(initialValue, o.value); + o = this.next(); + } + return initialValue; + } + /** + * Returns the number of matched items in the sequence + */ + size() { + return this.reduce( + (acc, _) => ++acc, + 0 + ); + } + [Symbol.iterator]() { + return this; + } +} +export { + Iterator, + Lazy, + concat +}; diff --git a/node_modules/mingo/dist/esm/operators/_predicates.js b/node_modules/mingo/dist/esm/operators/_predicates.js new file mode 100644 index 0000000..289d43c --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/_predicates.js @@ -0,0 +1,191 @@ +import { + computeValue +} from "../core"; +import { Query } from "../query"; +import { + compare as mingoCmp, + ensureArray, + flatten, + intersection, + isArray, + isBoolean, + isDate, + isEmpty, + isEqual, + isNil, + isNumber, + isObject, + isOperator, + isRegExp, + isString, + MingoError, + resolve, + truthy, + typeOf +} from "../util"; +function createQueryOperator(predicate) { + const f = (selector, value, options) => { + const opts = { unwrapArray: true }; + const depth = Math.max(1, selector.split(".").length - 1); + return (obj) => { + const lhs = resolve(obj, selector, opts); + return predicate(lhs, value, { ...options, depth }); + }; + }; + return f; +} +function createExpressionOperator(predicate) { + return (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + return predicate(...args); + }; +} +function $eq(a, b, options) { + if (isEqual(a, b)) return true; + if (isNil(a) && isNil(b)) return true; + if (isArray(a)) { + return a.some((v) => isEqual(v, b)) || flatten(a, options?.depth).some((v) => isEqual(v, b)); + } + return false; +} +function $ne(a, b, options) { + return !$eq(a, b, options); +} +function $in(a, b, options) { + if (isNil(a)) return b.some((v) => v === null); + return intersection([ensureArray(a), b], options?.hashFunction).length > 0; +} +function $nin(a, b, options) { + return !$in(a, b, options); +} +function $lt(a, b, _options) { + return compare(a, b, (x, y) => mingoCmp(x, y) < 0); +} +function $lte(a, b, _options) { + return compare(a, b, (x, y) => mingoCmp(x, y) <= 0); +} +function $gt(a, b, _options) { + return compare(a, b, (x, y) => mingoCmp(x, y) > 0); +} +function $gte(a, b, _options) { + return compare(a, b, (x, y) => mingoCmp(x, y) >= 0); +} +function $mod(a, b, _options) { + return ensureArray(a).some( + (x) => b.length === 2 && x % b[0] === b[1] + ); +} +function $regex(a, b, options) { + const lhs = ensureArray(a); + const match = (x) => isString(x) && truthy(b.exec(x), options?.useStrictMode); + return lhs.some(match) || flatten(lhs, 1).some(match); +} +function $all(values, queries, options) { + if (!isArray(values) || !isArray(queries) || !values.length || !queries.length) { + return false; + } + let matched = true; + for (const query of queries) { + if (!matched) break; + if (isObject(query) && Object.keys(query).includes("$elemMatch")) { + matched = $elemMatch(values, query["$elemMatch"], options); + } else if (isRegExp(query)) { + matched = values.some((s) => typeof s === "string" && query.test(s)); + } else { + matched = values.some((v) => isEqual(query, v)); + } + } + return matched; +} +function $size(a, b, _options) { + return Array.isArray(a) && a.length === b; +} +function isNonBooleanOperator(name) { + return isOperator(name) && ["$and", "$or", "$nor"].indexOf(name) === -1; +} +function $elemMatch(a, b, options) { + if (isArray(a) && !isEmpty(a)) { + let format = (x) => x; + let criteria = b; + if (Object.keys(b).every(isNonBooleanOperator)) { + criteria = { temp: b }; + format = (x) => ({ temp: x }); + } + const query = new Query(criteria, options); + for (let i = 0, len = a.length; i < len; i++) { + if (query.test(format(a[i]))) { + return true; + } + } + } + return false; +} +const isNull = (a) => a === null; +const compareFuncs = { + array: isArray, + boolean: isBoolean, + bool: isBoolean, + date: isDate, + number: isNumber, + int: isNumber, + long: isNumber, + double: isNumber, + decimal: isNumber, + null: isNull, + object: isObject, + regexp: isRegExp, + regex: isRegExp, + string: isString, + // added for completeness + undefined: isNil, + // deprecated + function: (_) => { + throw new MingoError("unsupported type key `function`."); + }, + // Mongo identifiers + 1: isNumber, + //double + 2: isString, + 3: isObject, + 4: isArray, + 6: isNil, + // deprecated + 8: isBoolean, + 9: isDate, + 10: isNull, + 11: isRegExp, + 16: isNumber, + //int + 18: isNumber, + //long + 19: isNumber + //decimal +}; +function compareType(a, b, _) { + const f = compareFuncs[b]; + return f ? f(a) : false; +} +function $type(a, b, options) { + return isArray(b) ? b.findIndex((t) => compareType(a, t, options)) >= 0 : compareType(a, b, options); +} +function compare(a, b, f) { + return ensureArray(a).some((x) => typeOf(x) === typeOf(b) && f(x, b)); +} +export { + $all, + $elemMatch, + $eq, + $gt, + $gte, + $in, + $lt, + $lte, + $mod, + $ne, + $nin, + $regex, + $size, + $type, + createExpressionOperator, + createQueryOperator +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/_internal.js b/node_modules/mingo/dist/esm/operators/accumulator/_internal.js new file mode 100644 index 0000000..97e03a2 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/_internal.js @@ -0,0 +1,29 @@ +function stddev(data, sampled = true) { + const sum = data.reduce((acc, n) => acc + n, 0); + const N = data.length || 1; + const avg = sum / N; + return Math.sqrt( + data.reduce((acc, n) => acc + Math.pow(n - avg, 2), 0) / (N - Number(sampled)) + ); +} +function covariance(dataset, sampled = true) { + if (!dataset) return null; + if (dataset.length < 2) return sampled ? null : 0; + let meanX = 0; + let meanY = 0; + for (const [x, y] of dataset) { + meanX += x; + meanY += y; + } + meanX /= dataset.length; + meanY /= dataset.length; + let result = 0; + for (const [x, y] of dataset) { + result += (x - meanX) * (y - meanY); + } + return result / (dataset.length - Number(sampled)); +} +export { + covariance, + stddev +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/accumulator.js b/node_modules/mingo/dist/esm/operators/accumulator/accumulator.js new file mode 100644 index 0000000..88f152a --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/accumulator.js @@ -0,0 +1,33 @@ +import { + ComputeOptions, + computeValue +} from "../../core"; +import { assert } from "../../util"; +const $accumulator = (collection, expr, options) => { + assert( + !!options && options.scriptEnabled, + "$accumulator operator requires 'scriptEnabled' option to be true" + ); + if (collection.length == 0) return expr.initArgs; + const copts = ComputeOptions.init(options); + const initArgs = computeValue( + {}, + expr.initArgs || [], + null, + copts.update(copts?.local?.groupId || {}) + ); + let state = expr.init.call(null, ...initArgs); + for (const doc of collection) { + const args = computeValue( + doc, + expr.accumulateArgs, + null, + copts.update(doc) + ); + state = expr.accumulate.call(null, ...[state, ...args]); + } + return expr.finalize ? expr.finalize.call(null, state) : state; +}; +export { + $accumulator +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/addToSet.js b/node_modules/mingo/dist/esm/operators/accumulator/addToSet.js new file mode 100644 index 0000000..789d564 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/addToSet.js @@ -0,0 +1,11 @@ +import { unique } from "../../util"; +import { $push } from "./push"; +const $addToSet = (collection, expr, options) => { + return unique( + $push(collection, expr, options), + options?.hashFunction + ); +}; +export { + $addToSet +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/avg.js b/node_modules/mingo/dist/esm/operators/accumulator/avg.js new file mode 100644 index 0000000..b37490b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/avg.js @@ -0,0 +1,10 @@ +import { isNumber } from "../../util"; +import { $push } from "./push"; +const $avg = (collection, expr, options) => { + const data = $push(collection, expr, options).filter(isNumber); + const sum = data.reduce((acc, n) => acc + n, 0); + return sum / (data.length || 1); +}; +export { + $avg +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/bottom.js b/node_modules/mingo/dist/esm/operators/accumulator/bottom.js new file mode 100644 index 0000000..8cbba25 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/bottom.js @@ -0,0 +1,5 @@ +import { $bottomN } from "./bottomN"; +const $bottom = (collection, expr, options) => $bottomN(collection, { ...expr, n: 1 }, options); +export { + $bottom +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/bottomN.js b/node_modules/mingo/dist/esm/operators/accumulator/bottomN.js new file mode 100644 index 0000000..82fee0c --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/bottomN.js @@ -0,0 +1,23 @@ +import { + ComputeOptions, + computeValue +} from "../../core"; +import { Lazy } from "../../lazy"; +import { $sort } from "../pipeline/sort"; +import { $push } from "./push"; +const $bottomN = (collection, expr, options) => { + const copts = ComputeOptions.init(options); + const { n, sortBy } = computeValue( + copts.local.groupId, + expr, + null, + copts + ); + const result = $sort(Lazy(collection), sortBy, options).value(); + const m = result.length; + const p = n; + return $push(m <= p ? result : result.slice(m - p), expr.output, copts); +}; +export { + $bottomN +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/count.js b/node_modules/mingo/dist/esm/operators/accumulator/count.js new file mode 100644 index 0000000..b98b17b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/count.js @@ -0,0 +1,4 @@ +const $count = (collection, _expr, _options) => collection.length; +export { + $count +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/covariancePop.js b/node_modules/mingo/dist/esm/operators/accumulator/covariancePop.js new file mode 100644 index 0000000..0f09b75 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/covariancePop.js @@ -0,0 +1,6 @@ +import { covariance } from "./_internal"; +import { $push } from "./push"; +const $covariancePop = (collection, expr, options) => covariance($push(collection, expr, options), false); +export { + $covariancePop +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/covarianceSamp.js b/node_modules/mingo/dist/esm/operators/accumulator/covarianceSamp.js new file mode 100644 index 0000000..f6a201c --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/covarianceSamp.js @@ -0,0 +1,6 @@ +import { covariance } from "./_internal"; +import { $push } from "./push"; +const $covarianceSamp = (collection, expr, options) => covariance($push(collection, expr, options), true); +export { + $covarianceSamp +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/first.js b/node_modules/mingo/dist/esm/operators/accumulator/first.js new file mode 100644 index 0000000..5aff2f7 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/first.js @@ -0,0 +1,12 @@ +import { + ComputeOptions, + computeValue +} from "../../core"; +const $first = (collection, expr, options) => { + if (collection.length === 0) return void 0; + const copts = ComputeOptions.init(options).update(collection[0]); + return computeValue(collection[0], expr, null, copts); +}; +export { + $first +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/firstN.js b/node_modules/mingo/dist/esm/operators/accumulator/firstN.js new file mode 100644 index 0000000..cd3ea76 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/firstN.js @@ -0,0 +1,18 @@ +import { + ComputeOptions, + computeValue +} from "../../core"; +import { $push } from "./push"; +const $firstN = (collection, expr, options) => { + const copts = ComputeOptions.init(options); + const m = collection.length; + const n = computeValue(copts?.local?.groupId, expr.n, null, copts); + return $push( + m <= n ? collection : collection.slice(0, n), + expr.input, + options + ); +}; +export { + $firstN +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/index.js b/node_modules/mingo/dist/esm/operators/accumulator/index.js new file mode 100644 index 0000000..c713594 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/index.js @@ -0,0 +1,25 @@ +export * from "./accumulator"; +export * from "./addToSet"; +export * from "./avg"; +export * from "./bottom"; +export * from "./bottomN"; +export * from "./count"; +export * from "./covariancePop"; +export * from "./covarianceSamp"; +export * from "./first"; +export * from "./firstN"; +export * from "./last"; +export * from "./lastN"; +export * from "./max"; +export * from "./maxN"; +export * from "./median"; +export * from "./mergeObjects"; +export * from "./min"; +export * from "./minN"; +export * from "./percentile"; +export * from "./push"; +export * from "./stdDevPop"; +export * from "./stdDevSamp"; +export * from "./sum"; +export * from "./top"; +export * from "./topN"; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/last.js b/node_modules/mingo/dist/esm/operators/accumulator/last.js new file mode 100644 index 0000000..4e35cff --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/last.js @@ -0,0 +1,13 @@ +import { + ComputeOptions, + computeValue +} from "../../core"; +const $last = (collection, expr, options) => { + if (collection.length === 0) return void 0; + const obj = collection[collection.length - 1]; + const copts = ComputeOptions.init(options).update(obj); + return computeValue(obj, expr, null, copts); +}; +export { + $last +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/lastN.js b/node_modules/mingo/dist/esm/operators/accumulator/lastN.js new file mode 100644 index 0000000..e348a3c --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/lastN.js @@ -0,0 +1,18 @@ +import { + ComputeOptions, + computeValue +} from "../../core"; +import { $push } from "./push"; +const $lastN = (collection, expr, options) => { + const copts = ComputeOptions.init(options); + const m = collection.length; + const n = computeValue(copts?.local?.groupId, expr.n, null, copts); + return $push( + m <= n ? collection : collection.slice(m - n), + expr.input, + options + ); +}; +export { + $lastN +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/max.js b/node_modules/mingo/dist/esm/operators/accumulator/max.js new file mode 100644 index 0000000..72f2383 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/max.js @@ -0,0 +1,16 @@ +import { assert, compare, isArray, isEmpty, isNil } from "../../util"; +import { $push } from "./push"; +const $max = (collection, expr, options) => { + const items = $push(collection, expr, options); + if (isEmpty(items)) return null; + assert(isArray(items), "$max: input must resolve to array"); + let max = items[0]; + for (const n of items) { + if (isNil(n) || isNaN(n)) continue; + if (compare(n, max) >= 0) max = n; + } + return max; +}; +export { + $max +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/maxN.js b/node_modules/mingo/dist/esm/operators/accumulator/maxN.js new file mode 100644 index 0000000..ebd7195 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/maxN.js @@ -0,0 +1,17 @@ +import { + ComputeOptions, + computeValue +} from "../../core"; +import { compare, isNil } from "../../util"; +import { $push } from "./push"; +const $maxN = (collection, expr, options) => { + const copts = ComputeOptions.init(options); + const m = collection.length; + const n = computeValue(copts?.local?.groupId, expr.n, null, copts); + const arr = $push(collection, expr.input, options).filter((o) => !isNil(o)); + arr.sort((a, b) => -1 * compare(a, b)); + return m <= n ? arr : arr.slice(0, n); +}; +export { + $maxN +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/median.js b/node_modules/mingo/dist/esm/operators/accumulator/median.js new file mode 100644 index 0000000..1c1227a --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/median.js @@ -0,0 +1,5 @@ +import { $percentile } from "./percentile"; +const $median = (collection, expr, options) => $percentile(collection, { ...expr, p: [0.5] }, options).pop(); +export { + $median +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/mergeObjects.js b/node_modules/mingo/dist/esm/operators/accumulator/mergeObjects.js new file mode 100644 index 0000000..5520e9b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/mergeObjects.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../core"; +import { $mergeObjects as __mergeObjects } from "../expression/object/mergeObjects"; +const $mergeObjects = (collection, expr, options) => { + const arr = computeValue(collection, expr, null, options); + return __mergeObjects(null, arr, options); +}; +export { + $mergeObjects +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/min.js b/node_modules/mingo/dist/esm/operators/accumulator/min.js new file mode 100644 index 0000000..c402ff5 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/min.js @@ -0,0 +1,16 @@ +import { assert, compare, isArray, isEmpty, isNil } from "../../util"; +import { $push } from "./push"; +const $min = (collection, expr, options) => { + const items = $push(collection, expr, options); + if (isEmpty(items)) return null; + assert(isArray(items), "$min: input must resolve to array"); + let min = items[0]; + for (const n of items) { + if (isNil(n) || isNaN(n)) continue; + if (compare(n, min) <= 0) min = n; + } + return min; +}; +export { + $min +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/minN.js b/node_modules/mingo/dist/esm/operators/accumulator/minN.js new file mode 100644 index 0000000..e68d79a --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/minN.js @@ -0,0 +1,17 @@ +import { + ComputeOptions, + computeValue +} from "../../core"; +import { compare, isNil } from "../../util"; +import { $push } from "./push"; +const $minN = (collection, expr, options) => { + const copts = ComputeOptions.init(options); + const m = collection.length; + const n = computeValue(copts?.local?.groupId, expr.n, null, copts); + const arr = $push(collection, expr.input, options).filter((o) => !isNil(o)); + arr.sort(compare); + return m <= n ? arr : arr.slice(0, n); +}; +export { + $minN +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/percentile.js b/node_modules/mingo/dist/esm/operators/accumulator/percentile.js new file mode 100644 index 0000000..b4adf6b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/percentile.js @@ -0,0 +1,27 @@ +import { assert, findInsertIndex, isNumber } from "../../util"; +import { $push } from "./push"; +const $percentile = (collection, expr, options) => { + const X = $push(collection, expr.input, options).filter(isNumber).sort(); + const centiles = $push(expr.p, "$$CURRENT", options).filter(isNumber); + const method = expr.method || "approximate"; + return centiles.map((p) => { + assert( + p > 0 && p <= 1, + `percentile value must be between 0 (exclusive) and 1 (inclusive): invalid '${p}'.` + ); + const r = p * (X.length - 1) + 1; + const ri = Math.floor(r); + const result = r === ri ? X[r - 1] : X[ri - 1] + r % 1 * (X[ri] - X[ri - 1] || 0); + switch (method) { + case "exact": + return result; + case "approximate": { + const i = findInsertIndex(X, result); + return i / X.length >= p ? X[Math.max(i - 1, 0)] : X[i]; + } + } + }); +}; +export { + $percentile +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/push.js b/node_modules/mingo/dist/esm/operators/accumulator/push.js new file mode 100644 index 0000000..860fba2 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/push.js @@ -0,0 +1,15 @@ +import { + ComputeOptions, + computeValue +} from "../../core"; +import { isNil } from "../../util"; +const $push = (collection, expr, options) => { + if (isNil(expr)) return collection; + const copts = ComputeOptions.init(options); + return collection.map( + (obj) => computeValue(obj, expr, null, copts.update(obj)) + ); +}; +export { + $push +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/stdDevPop.js b/node_modules/mingo/dist/esm/operators/accumulator/stdDevPop.js new file mode 100644 index 0000000..1b2bc93 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/stdDevPop.js @@ -0,0 +1,7 @@ +import { isNumber } from "../../util"; +import { stddev } from "./_internal"; +import { $push } from "./push"; +const $stdDevPop = (collection, expr, options) => stddev($push(collection, expr, options).filter(isNumber), false); +export { + $stdDevPop +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/stdDevSamp.js b/node_modules/mingo/dist/esm/operators/accumulator/stdDevSamp.js new file mode 100644 index 0000000..408bc86 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/stdDevSamp.js @@ -0,0 +1,7 @@ +import { isNumber } from "../../util"; +import { stddev } from "./_internal"; +import { $push } from "./push"; +const $stdDevSamp = (collection, expr, options) => stddev($push(collection, expr, options).filter(isNumber), true); +export { + $stdDevSamp +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/sum.js b/node_modules/mingo/dist/esm/operators/accumulator/sum.js new file mode 100644 index 0000000..02c2bdf --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/sum.js @@ -0,0 +1,11 @@ +import { isArray, isNumber } from "../../util"; +import { $push } from "./push"; +const $sum = (collection, expr, options) => { + if (!isArray(collection)) return 0; + if (isNumber(expr)) return collection.length * expr; + const nums = $push(collection, expr, options).filter(isNumber); + return nums.reduce((acc, n) => acc + n, 0); +}; +export { + $sum +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/top.js b/node_modules/mingo/dist/esm/operators/accumulator/top.js new file mode 100644 index 0000000..ace72a3 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/top.js @@ -0,0 +1,5 @@ +import { $topN } from "./topN"; +const $top = (collection, expr, options) => $topN(collection, { ...expr, n: 1 }, options); +export { + $top +}; diff --git a/node_modules/mingo/dist/esm/operators/accumulator/topN.js b/node_modules/mingo/dist/esm/operators/accumulator/topN.js new file mode 100644 index 0000000..0442bcf --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/accumulator/topN.js @@ -0,0 +1,21 @@ +import { + ComputeOptions, + computeValue +} from "../../core"; +import { Lazy } from "../../lazy"; +import { $sort } from "../pipeline/sort"; +import { $push } from "./push"; +const $topN = (collection, expr, options) => { + const copts = ComputeOptions.init(options); + const { n, sortBy } = computeValue( + copts.local.groupId, + expr, + null, + copts + ); + const result = $sort(Lazy(collection), sortBy, options).take(n).value(); + return $push(result, expr.output, copts); +}; +export { + $topN +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/_internal.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/_internal.js new file mode 100644 index 0000000..5da2bab --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/_internal.js @@ -0,0 +1,36 @@ +function truncate(num, places = 0, roundOff = false) { + const sign = Math.abs(num) === num ? 1 : -1; + num = Math.abs(num); + let result = Math.trunc(num); + const decimals = parseFloat((num - result).toFixed(places + 1)); + if (places === 0) { + const firstDigit = Math.trunc(10 * decimals); + if (roundOff && ((result & 1) === 1 && firstDigit >= 5 || firstDigit > 5)) { + result++; + } + } else if (places > 0) { + const offset = Math.pow(10, places); + let remainder = Math.trunc(decimals * offset); + const lastDigit = Math.trunc(decimals * offset * 10) % 10; + if (roundOff && lastDigit > 5) { + remainder += 1; + } + result = (result * offset + remainder) / offset; + } else if (places < 0) { + const offset = Math.pow(10, -1 * places); + let excess = result % offset; + result = Math.max(0, result - excess); + if (roundOff && sign === -1) { + while (excess > 10) { + excess -= excess % 10; + } + if (result > 0 && excess >= 5) { + result += offset; + } + } + } + return result * sign; +} +export { + truncate +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/abs.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/abs.js new file mode 100644 index 0000000..ebc6405 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/abs.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../../core"; +import { isNil } from "../../../util"; +const $abs = (obj, expr, options) => { + const n = computeValue(obj, expr, null, options); + return isNil(n) ? null : Math.abs(n); +}; +export { + $abs +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/add.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/add.js new file mode 100644 index 0000000..12e8f46 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/add.js @@ -0,0 +1,18 @@ +import { computeValue } from "../../../core"; +import { assert, isDate } from "../../../util"; +const $add = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + let hasDate = false; + let sum = 0; + for (const n of args) { + if (isDate(n)) { + assert(!hasDate, "'$add' can only have one date value"); + hasDate = true; + } + sum += +n; + } + return hasDate ? new Date(sum) : sum; +}; +export { + $add +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/ceil.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/ceil.js new file mode 100644 index 0000000..ea5e2ef --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/ceil.js @@ -0,0 +1,11 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isNumber } from "../../../util"; +const $ceil = (obj, expr, options) => { + const n = computeValue(obj, expr, null, options); + if (isNil(n)) return null; + assert(isNumber(n) || isNaN(n), "$ceil expression must resolve to a number."); + return Math.ceil(n); +}; +export { + $ceil +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/divide.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/divide.js new file mode 100644 index 0000000..4885aba --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/divide.js @@ -0,0 +1,8 @@ +import { computeValue } from "../../../core"; +const $divide = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + return args[0] / args[1]; +}; +export { + $divide +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/exp.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/exp.js new file mode 100644 index 0000000..75c9628 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/exp.js @@ -0,0 +1,11 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isNumber } from "../../../util"; +const $exp = (obj, expr, options) => { + const n = computeValue(obj, expr, null, options); + if (isNil(n)) return null; + assert(isNumber(n) || isNaN(n), "$exp expression must resolve to a number."); + return Math.exp(n); +}; +export { + $exp +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/floor.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/floor.js new file mode 100644 index 0000000..353f0ee --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/floor.js @@ -0,0 +1,14 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isNumber } from "../../../util"; +const $floor = (obj, expr, options) => { + const n = computeValue(obj, expr, null, options); + if (isNil(n)) return null; + assert( + isNumber(n) || isNaN(n), + "$floor expression must resolve to a number." + ); + return Math.floor(n); +}; +export { + $floor +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/index.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/index.js new file mode 100644 index 0000000..6c247da --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/index.js @@ -0,0 +1,16 @@ +export * from "./abs"; +export * from "./add"; +export * from "./ceil"; +export * from "./divide"; +export * from "./exp"; +export * from "./floor"; +export * from "./ln"; +export * from "./log"; +export * from "./log10"; +export * from "./mod"; +export * from "./multiply"; +export * from "./pow"; +export * from "./round"; +export * from "./sqrt"; +export * from "./subtract"; +export * from "./trunc"; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/ln.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/ln.js new file mode 100644 index 0000000..e5ab3fb --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/ln.js @@ -0,0 +1,11 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isNumber } from "../../../util"; +const $ln = (obj, expr, options) => { + const n = computeValue(obj, expr, null, options); + if (isNil(n)) return null; + assert(isNumber(n) || isNaN(n), "$ln expression must resolve to a number."); + return Math.log(n); +}; +export { + $ln +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/log.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/log.js new file mode 100644 index 0000000..528ad87 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/log.js @@ -0,0 +1,13 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isNil, isNumber } from "../../../util"; +const $log = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + const msg = "$log expression must resolve to array(2) of numbers"; + assert(isArray(args) && args.length === 2, msg); + if (args.some(isNil)) return null; + assert(args.some(isNaN) || args.every(isNumber), msg); + return Math.log10(args[0]) / Math.log10(args[1]); +}; +export { + $log +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/log10.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/log10.js new file mode 100644 index 0000000..103049c --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/log10.js @@ -0,0 +1,14 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isNumber } from "../../../util"; +const $log10 = (obj, expr, options) => { + const n = computeValue(obj, expr, null, options); + if (isNil(n)) return null; + assert( + isNumber(n) || isNaN(n), + "$log10 expression must resolve to a number." + ); + return Math.log10(n); +}; +export { + $log10 +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/mod.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/mod.js new file mode 100644 index 0000000..9f00fe7 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/mod.js @@ -0,0 +1,8 @@ +import { computeValue } from "../../../core"; +const $mod = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + return args[0] % args[1]; +}; +export { + $mod +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/multiply.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/multiply.js new file mode 100644 index 0000000..be11735 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/multiply.js @@ -0,0 +1,8 @@ +import { computeValue } from "../../../core"; +const $multiply = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + return args.reduce((acc, num) => acc * num, 1); +}; +export { + $multiply +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/pow.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/pow.js new file mode 100644 index 0000000..cb53a87 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/pow.js @@ -0,0 +1,17 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isNumber } from "../../../util"; +const $pow = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + assert( + isArray(args) && args.length === 2 && args.every(isNumber), + "$pow expression must resolve to array(2) of numbers" + ); + assert( + !(args[0] === 0 && args[1] < 0), + "$pow cannot raise 0 to a negative exponent" + ); + return Math.pow(args[0], args[1]); +}; +export { + $pow +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/round.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/round.js new file mode 100644 index 0000000..314164e --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/round.js @@ -0,0 +1,14 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isNumber } from "../../../util"; +import { truncate } from "./_internal"; +const $round = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + const num = args[0]; + const place = args[1]; + if (isNil(num) || isNaN(num) || Math.abs(num) === Infinity) return num; + assert(isNumber(num), "$round expression must resolve to a number."); + return truncate(num, place, true); +}; +export { + $round +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/sqrt.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/sqrt.js new file mode 100644 index 0000000..b828a29 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/sqrt.js @@ -0,0 +1,14 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isNumber } from "../../../util"; +const $sqrt = (obj, expr, options) => { + const n = computeValue(obj, expr, null, options); + if (isNil(n)) return null; + assert( + isNumber(n) && n > 0 || isNaN(n), + "$sqrt expression must resolve to non-negative number." + ); + return Math.sqrt(n); +}; +export { + $sqrt +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/subtract.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/subtract.js new file mode 100644 index 0000000..77934d5 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/subtract.js @@ -0,0 +1,11 @@ +import { computeValue } from "../../../core"; +import { assert, isDate, isNumber } from "../../../util"; +const $subtract = (obj, expr, options) => { + const [a, b] = computeValue(obj, expr, null, options); + if (isNumber(a) && isNumber(b) || isDate(a) && isDate(b)) return +a - +b; + if (isDate(a) && isNumber(b)) return new Date(+a - b); + assert(false, "$subtract: must resolve to number/date."); +}; +export { + $subtract +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/arithmetic/trunc.js b/node_modules/mingo/dist/esm/operators/expression/arithmetic/trunc.js new file mode 100644 index 0000000..3c618f5 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/arithmetic/trunc.js @@ -0,0 +1,18 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isNumber } from "../../../util"; +import { truncate } from "./_internal"; +const $trunc = (obj, expr, options) => { + const arr = computeValue(obj, expr, null, options); + const num = arr[0]; + const places = arr[1]; + if (isNil(num) || isNaN(num) || Math.abs(num) === Infinity) return num; + assert(isNumber(num), "$trunc expression must resolve to a number."); + assert( + isNil(places) || isNumber(places) && places > -20 && places < 100, + "$trunc expression has invalid place" + ); + return truncate(num, places, false); +}; +export { + $trunc +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/arrayElemAt.js b/node_modules/mingo/dist/esm/operators/expression/array/arrayElemAt.js new file mode 100644 index 0000000..68c0c2b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/arrayElemAt.js @@ -0,0 +1,21 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isNil } from "../../../util"; +const $arrayElemAt = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + assert( + isArray(args) && args.length === 2, + "$arrayElemAt expression must resolve to array(2)" + ); + if (args.some(isNil)) return null; + const index = args[1]; + const arr = args[0]; + if (index < 0 && Math.abs(index) <= arr.length) { + return arr[(index + arr.length) % arr.length]; + } else if (index >= 0 && index < arr.length) { + return arr[index]; + } + return void 0; +}; +export { + $arrayElemAt +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/arrayToObject.js b/node_modules/mingo/dist/esm/operators/expression/array/arrayToObject.js new file mode 100644 index 0000000..b4df012 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/arrayToObject.js @@ -0,0 +1,23 @@ +import { computeValue } from "../../../core"; +import { assert, has, isArray, isObject } from "../../../util"; +const $arrayToObject = (obj, expr, options) => { + const arr = computeValue(obj, expr, null, options); + assert(isArray(arr), "$arrayToObject: expression must resolve to an array"); + return arr.reduce((newObj, val) => { + while (isArray(val) && val.length === 1) val = val[0]; + if (isArray(val) && val.length == 2) { + newObj[val[0]] = val[1]; + } else { + const valObj = val; + assert( + isObject(valObj) && has(valObj, "k") && has(valObj, "v"), + "$arrayToObject expression is invalid." + ); + newObj[valObj.k] = valObj.v; + } + return newObj; + }, {}); +}; +export { + $arrayToObject +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/concatArrays.js b/node_modules/mingo/dist/esm/operators/expression/array/concatArrays.js new file mode 100644 index 0000000..d0a9961 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/concatArrays.js @@ -0,0 +1,18 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isNil } from "../../../util"; +const $concatArrays = (obj, expr, options) => { + const nArray = computeValue(obj, expr, null, options); + assert(isArray(nArray), "$concatArrays: input must resolve to an array"); + let size = 0; + for (const arr of nArray) { + if (isNil(arr)) return null; + size += arr.length; + } + const result = new Array(size); + let i = 0; + for (const arr of nArray) for (const item of arr) result[i++] = item; + return result; +}; +export { + $concatArrays +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/filter.js b/node_modules/mingo/dist/esm/operators/expression/array/filter.js new file mode 100644 index 0000000..9a7c0c4 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/filter.js @@ -0,0 +1,28 @@ +import { + ComputeOptions, + computeValue +} from "../../../core"; +import { assert, isArray, isNil, truthy } from "../../../util"; +const $filter = (obj, expr, options) => { + const input = computeValue(obj, expr.input, null, options); + if (isNil(input)) return null; + assert(isArray(input), "$filter 'input' expression must resolve to an array"); + const copts = ComputeOptions.init(options, obj); + const k = expr.as || "this"; + const local = { + variables: { [k]: null } + }; + return input.filter((o) => { + local.variables[k] = o; + const b = computeValue( + obj, + expr.cond, + null, + copts.update(copts.root, local) + ); + return truthy(b, options.useStrictMode); + }); +}; +export { + $filter +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/first.js b/node_modules/mingo/dist/esm/operators/expression/array/first.js new file mode 100644 index 0000000..18d3b4b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/first.js @@ -0,0 +1,16 @@ +import { computeValue } from "../../../core"; +import { assert, flatten, isArray, isNil } from "../../../util"; +import { $first as __first } from "../../accumulator/first"; +const $first = (obj, expr, options) => { + if (isArray(obj)) return __first(obj, expr, options); + const arr = computeValue(obj, expr, null, options); + if (isNil(arr)) return null; + assert( + isArray(arr) && arr.length > 0, + "$first must resolve to a non-empty array." + ); + return flatten(arr)[0]; +}; +export { + $first +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/firstN.js b/node_modules/mingo/dist/esm/operators/expression/array/firstN.js new file mode 100644 index 0000000..77ec616 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/firstN.js @@ -0,0 +1,13 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isNil } from "../../../util"; +import { $firstN as __firstN } from "../../accumulator/firstN"; +const $firstN = (obj, expr, options) => { + if (isArray(obj)) return __firstN(obj, expr, options); + const { input, n } = computeValue(obj, expr, null, options); + if (isNil(input)) return null; + assert(isArray(input), "Must resolve to an array/null or missing"); + return __firstN(input, { n, input: "$$this" }, options); +}; +export { + $firstN +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/in.js b/node_modules/mingo/dist/esm/operators/expression/array/in.js new file mode 100644 index 0000000..8615ede --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/in.js @@ -0,0 +1,10 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isEqual } from "../../../util"; +const $in = (obj, expr, options) => { + const [item, arr] = computeValue(obj, expr, null, options); + assert(isArray(arr), "$in second argument must be an array"); + return arr.some((v) => isEqual(v, item)); +}; +export { + $in +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/index.js b/node_modules/mingo/dist/esm/operators/expression/array/index.js new file mode 100644 index 0000000..54ed39b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/index.js @@ -0,0 +1,22 @@ +export * from "./arrayElemAt"; +export * from "./arrayToObject"; +export * from "./concatArrays"; +export * from "./filter"; +export * from "./first"; +export * from "./firstN"; +export * from "./in"; +export * from "./indexOfArray"; +export * from "./isArray"; +export * from "./last"; +export * from "./lastN"; +export * from "./map"; +export * from "./maxN"; +export * from "./minN"; +export * from "./nin"; +export * from "./range"; +export * from "./reduce"; +export * from "./reverseArray"; +export * from "./size"; +export * from "./slice"; +export * from "./sortArray"; +export * from "./zip"; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/indexOfArray.js b/node_modules/mingo/dist/esm/operators/expression/array/indexOfArray.js new file mode 100644 index 0000000..47e458a --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/indexOfArray.js @@ -0,0 +1,28 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isEqual, isNil } from "../../../util"; +const $indexOfArray = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + if (isNil(args)) return null; + let arr = args[0]; + const searchValue = args[1]; + if (isNil(arr)) return null; + assert(isArray(arr), "$indexOfArray expression must resolve to an array."); + const start = args[2] || 0; + let end = args[3]; + if (isNil(end)) end = arr.length; + if (start > end) return -1; + assert(start >= 0 && end >= 0, "$indexOfArray expression is invalid"); + if (start > 0 || end < arr.length) { + arr = arr.slice(start, end); + } + let index = -1; + arr.some((v, i) => { + const b = isEqual(v, searchValue); + if (b) index = i; + return b; + }); + return index + start; +}; +export { + $indexOfArray +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/isArray.js b/node_modules/mingo/dist/esm/operators/expression/array/isArray.js new file mode 100644 index 0000000..4664064 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/isArray.js @@ -0,0 +1,6 @@ +import { computeValue } from "../../../core"; +import { isArray } from "../../../util"; +const $isArray = (obj, expr, options) => isArray(computeValue(obj, expr[0], null, options)); +export { + $isArray +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/last.js b/node_modules/mingo/dist/esm/operators/expression/array/last.js new file mode 100644 index 0000000..f155ab8 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/last.js @@ -0,0 +1,16 @@ +import { computeValue } from "../../../core"; +import { assert, flatten, isArray, isNil } from "../../../util"; +import { $last as __last } from "../../accumulator/last"; +const $last = (obj, expr, options) => { + if (isArray(obj)) return __last(obj, expr, options); + const arr = computeValue(obj, expr, null, options); + if (isNil(arr)) return null; + assert( + isArray(arr) && arr.length > 0, + "$last must resolve to a non-empty array." + ); + return flatten(arr)[arr.length - 1]; +}; +export { + $last +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/lastN.js b/node_modules/mingo/dist/esm/operators/expression/array/lastN.js new file mode 100644 index 0000000..ab5fa4b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/lastN.js @@ -0,0 +1,13 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isNil } from "../../../util"; +import { $lastN as __lastN } from "../../accumulator/lastN"; +const $lastN = (obj, expr, options) => { + if (isArray(obj)) return __lastN(obj, expr, options); + const { input, n } = computeValue(obj, expr, null, options); + if (isNil(input)) return null; + assert(isArray(input), "Must resolve to an array/null or missing"); + return __lastN(input, { n, input: "$$this" }, options); +}; +export { + $lastN +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/map.js b/node_modules/mingo/dist/esm/operators/expression/array/map.js new file mode 100644 index 0000000..3364b62 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/map.js @@ -0,0 +1,25 @@ +import { + ComputeOptions, + computeValue +} from "../../../core"; +import { assert, isArray, isNil } from "../../../util"; +const $map = (obj, expr, options) => { + const input = computeValue(obj, expr.input, null, options); + if (isNil(input)) return null; + assert(isArray(input), `$map 'input' expression must resolve to an array`); + const copts = ComputeOptions.init(options); + const k = expr.as || "this"; + return input.map((o) => { + return computeValue( + obj, + expr.in, + null, + copts.update(copts.root, { + variables: { [k]: o } + }) + ); + }); +}; +export { + $map +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/maxN.js b/node_modules/mingo/dist/esm/operators/expression/array/maxN.js new file mode 100644 index 0000000..8990bac --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/maxN.js @@ -0,0 +1,13 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isNil } from "../../../util"; +import { $maxN as __maxN } from "../../accumulator/maxN"; +const $maxN = (obj, expr, options) => { + if (isArray(obj)) return __maxN(obj, expr, options); + const { input, n } = computeValue(obj, expr, null, options); + if (isNil(input)) return null; + assert(isArray(input), "Must resolve to an array/null or missing"); + return __maxN(input, { n, input: "$$this" }, options); +}; +export { + $maxN +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/minN.js b/node_modules/mingo/dist/esm/operators/expression/array/minN.js new file mode 100644 index 0000000..6fa365e --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/minN.js @@ -0,0 +1,13 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isNil } from "../../../util"; +import { $minN as __minN } from "../../accumulator/minN"; +const $minN = (obj, expr, options) => { + if (isArray(obj)) return __minN(obj, expr, options); + const { input, n } = computeValue(obj, expr, null, options); + if (isNil(input)) return null; + assert(isArray(input), "Must resolve to an array/null or missing"); + return __minN(input, { n, input: "$$this" }, options); +}; +export { + $minN +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/nin.js b/node_modules/mingo/dist/esm/operators/expression/array/nin.js new file mode 100644 index 0000000..24de218 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/nin.js @@ -0,0 +1,5 @@ +import { $nin as __nin, createExpressionOperator } from "../../_predicates"; +const $nin = createExpressionOperator(__nin); +export { + $nin +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/range.js b/node_modules/mingo/dist/esm/operators/expression/array/range.js new file mode 100644 index 0000000..27a0048 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/range.js @@ -0,0 +1,17 @@ +import { computeValue } from "../../../core"; +const $range = (obj, expr, options) => { + const arr = computeValue(obj, expr, null, options); + const start = arr[0]; + const end = arr[1]; + const step = arr[2] || 1; + const result = new Array(); + let counter = start; + while (counter < end && step > 0 || counter > end && step < 0) { + result.push(counter); + counter += step; + } + return result; +}; +export { + $range +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/reduce.js b/node_modules/mingo/dist/esm/operators/expression/array/reduce.js new file mode 100644 index 0000000..2fb0789 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/reduce.js @@ -0,0 +1,26 @@ +import { + ComputeOptions, + computeValue +} from "../../../core"; +import { assert, isArray, isNil } from "../../../util"; +const $reduce = (obj, expr, options) => { + const copts = ComputeOptions.init(options); + const input = computeValue(obj, expr.input, null, copts); + const initialValue = computeValue(obj, expr.initialValue, null, copts); + const inExpr = expr["in"]; + if (isNil(input)) return null; + assert(isArray(input), "$reduce 'input' expression must resolve to an array"); + return input.reduce((acc, n) => { + return computeValue( + n, + inExpr, + null, + copts.update(copts.root, { + variables: { value: acc } + }) + ); + }, initialValue); +}; +export { + $reduce +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/reverseArray.js b/node_modules/mingo/dist/esm/operators/expression/array/reverseArray.js new file mode 100644 index 0000000..d250d9b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/reverseArray.js @@ -0,0 +1,13 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isNil } from "../../../util"; +const $reverseArray = (obj, expr, options) => { + const arr = computeValue(obj, expr, null, options); + if (isNil(arr)) return null; + assert(isArray(arr), "$reverseArray expression must resolve to an array"); + const result = arr.slice(0); + result.reverse(); + return result; +}; +export { + $reverseArray +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/size.js b/node_modules/mingo/dist/esm/operators/expression/array/size.js new file mode 100644 index 0000000..c36c16d --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/size.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../../core"; +import { isArray } from "../../../util"; +const $size = (obj, expr, options) => { + const value = computeValue(obj, expr, null, options); + return isArray(value) ? value.length : void 0; +}; +export { + $size +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/slice.js b/node_modules/mingo/dist/esm/operators/expression/array/slice.js new file mode 100644 index 0000000..82d14c6 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/slice.js @@ -0,0 +1,29 @@ +import { computeValue } from "../../../core"; +import { assert, isNil } from "../../../util"; +const $slice = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + const arr = args[0]; + let skip = args[1]; + let limit = args[2]; + if (isNil(limit)) { + if (skip < 0) { + skip = Math.max(0, arr.length + skip); + } else { + limit = skip; + skip = 0; + } + } else { + if (skip < 0) { + skip = Math.max(0, arr.length + skip); + } + assert( + limit > 0, + `Invalid argument for $slice operator. Limit must be a positive number` + ); + limit += skip; + } + return arr.slice(skip, limit); +}; +export { + $slice +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/sortArray.js b/node_modules/mingo/dist/esm/operators/expression/array/sortArray.js new file mode 100644 index 0000000..da346be --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/sortArray.js @@ -0,0 +1,19 @@ +import { computeValue } from "../../../core"; +import { Lazy } from "../../../lazy"; +import { assert, compare, isArray, isNil, isObject } from "../../../util"; +import { $sort } from "../../pipeline/sort"; +const $sortArray = (obj, expr, options) => { + const { input, sortBy } = computeValue(obj, expr, null, options); + if (isNil(input)) return null; + assert(isArray(input), "$sortArray expression must resolve to an array"); + if (isObject(sortBy)) { + return $sort(Lazy(input), sortBy, options).value(); + } + const result = [...input]; + result.sort(compare); + if (sortBy === -1) result.reverse(); + return result; +}; +export { + $sortArray +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/array/zip.js b/node_modules/mingo/dist/esm/operators/expression/array/zip.js new file mode 100644 index 0000000..6505824 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/array/zip.js @@ -0,0 +1,36 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isBoolean, isNil } from "../../../util"; +const $zip = (obj, expr, options) => { + const inputs = computeValue(obj, expr.inputs, null, options); + const useLongestLength = expr.useLongestLength || false; + if (isNil(inputs)) return null; + assert(isArray(inputs), "'inputs' expression must resolve to an array"); + assert(isBoolean(useLongestLength), "'useLongestLength' must be a boolean"); + if (isArray(expr.defaults)) { + assert( + useLongestLength, + "'useLongestLength' must be set to true to use 'defaults'" + ); + } + let zipCount = 0; + for (const arr of inputs) { + if (isNil(arr)) return null; + assert( + isArray(arr), + "'inputs' expression values must resolve to an array or null" + ); + zipCount = useLongestLength ? Math.max(zipCount, arr.length) : Math.min(zipCount || arr.length, arr.length); + } + const result = []; + const defaults = expr.defaults || []; + for (let i = 0; i < zipCount; i++) { + const temp = inputs.map((val, index) => { + return isNil(val[i]) ? defaults[index] || null : val[i]; + }); + result.push(temp); + } + return result; +}; +export { + $zip +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/bitwise/_internal.js b/node_modules/mingo/dist/esm/operators/expression/bitwise/_internal.js new file mode 100644 index 0000000..b3997c1 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/bitwise/_internal.js @@ -0,0 +1,15 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isNil, isNumber } from "../../../util"; +const bitwise = (op, compute) => (obj, expr, options) => { + assert(isArray(expr), `${op}: expression must be an array.`); + const nums = computeValue(obj, expr, null, options); + if (nums.some(isNil)) return null; + assert( + nums.every(isNumber), + `${op}: expression must evalue to array of numbers.` + ); + return compute(nums); +}; +export { + bitwise +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/bitwise/bitAnd.js b/node_modules/mingo/dist/esm/operators/expression/bitwise/bitAnd.js new file mode 100644 index 0000000..0d98e75 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/bitwise/bitAnd.js @@ -0,0 +1,8 @@ +import { bitwise } from "./_internal"; +const $bitAnd = bitwise( + "$bitAnd", + (nums) => nums.reduce((a, b) => a & b, -1) +); +export { + $bitAnd +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/bitwise/bitNot.js b/node_modules/mingo/dist/esm/operators/expression/bitwise/bitNot.js new file mode 100644 index 0000000..7af79be --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/bitwise/bitNot.js @@ -0,0 +1,11 @@ +import { computeValue } from "../../../core"; +import { isNil, isNumber, MingoError } from "../../../util"; +const $bitNot = (obj, expr, options) => { + const n = computeValue(obj, expr, null, options); + if (isNil(n)) return null; + if (isNumber(n)) return ~n; + throw new MingoError("$bitNot: expression must evaluate to a number."); +}; +export { + $bitNot +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/bitwise/bitOr.js b/node_modules/mingo/dist/esm/operators/expression/bitwise/bitOr.js new file mode 100644 index 0000000..5215e32 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/bitwise/bitOr.js @@ -0,0 +1,8 @@ +import { bitwise } from "./_internal"; +const $bitOr = bitwise( + "$bitOr", + (nums) => nums.reduce((a, b) => a | b, 0) +); +export { + $bitOr +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/bitwise/bitXor.js b/node_modules/mingo/dist/esm/operators/expression/bitwise/bitXor.js new file mode 100644 index 0000000..4db8129 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/bitwise/bitXor.js @@ -0,0 +1,8 @@ +import { bitwise } from "./_internal"; +const $bitXor = bitwise( + "$bitXor", + (nums) => nums.reduce((a, b) => a ^ b, 0) +); +export { + $bitXor +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/bitwise/index.js b/node_modules/mingo/dist/esm/operators/expression/bitwise/index.js new file mode 100644 index 0000000..cb0ab12 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/bitwise/index.js @@ -0,0 +1,4 @@ +export * from "./bitAnd"; +export * from "./bitNot"; +export * from "./bitOr"; +export * from "./bitXor"; diff --git a/node_modules/mingo/dist/esm/operators/expression/boolean/and.js b/node_modules/mingo/dist/esm/operators/expression/boolean/and.js new file mode 100644 index 0000000..fd3fbc3 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/boolean/and.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../../core"; +import { truthy } from "../../../util"; +const $and = (obj, expr, options) => { + const value = computeValue(obj, expr, null, options); + return truthy(value, options.useStrictMode) && value.every((v) => truthy(v, options.useStrictMode)); +}; +export { + $and +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/boolean/index.js b/node_modules/mingo/dist/esm/operators/expression/boolean/index.js new file mode 100644 index 0000000..2694f28 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/boolean/index.js @@ -0,0 +1,3 @@ +export * from "./and"; +export * from "./not"; +export * from "./or"; diff --git a/node_modules/mingo/dist/esm/operators/expression/boolean/not.js b/node_modules/mingo/dist/esm/operators/expression/boolean/not.js new file mode 100644 index 0000000..20b9b59 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/boolean/not.js @@ -0,0 +1,11 @@ +import { computeValue } from "../../../core"; +import { assert, ensureArray } from "../../../util"; +const $not = (obj, expr, options) => { + const booleanExpr = ensureArray(expr); + if (booleanExpr.length == 0) return false; + assert(booleanExpr.length == 1, "Expression $not takes exactly 1 argument"); + return !computeValue(obj, booleanExpr[0], null, options); +}; +export { + $not +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/boolean/or.js b/node_modules/mingo/dist/esm/operators/expression/boolean/or.js new file mode 100644 index 0000000..2ea35f7 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/boolean/or.js @@ -0,0 +1,10 @@ +import { computeValue } from "../../../core"; +import { truthy } from "../../../util"; +const $or = (obj, expr, options) => { + const value = computeValue(obj, expr, null, options); + const strict = options.useStrictMode; + return truthy(value, strict) && value.some((v) => truthy(v, strict)); +}; +export { + $or +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/comparison/cmp.js b/node_modules/mingo/dist/esm/operators/expression/comparison/cmp.js new file mode 100644 index 0000000..9f51859 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/comparison/cmp.js @@ -0,0 +1,13 @@ +import { computeValue } from "../../../core"; +import { assert, compare, isArray } from "../../../util"; +const $cmp = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + assert( + isArray(args) && args.length == 2, + "$cmp: expression must resolve to array of size 2." + ); + return compare(args[0], args[1]); +}; +export { + $cmp +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/comparison/eq.js b/node_modules/mingo/dist/esm/operators/expression/comparison/eq.js new file mode 100644 index 0000000..fe4d6b6 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/comparison/eq.js @@ -0,0 +1,5 @@ +import { $eq as __eq, createExpressionOperator } from "../../_predicates"; +const $eq = createExpressionOperator(__eq); +export { + $eq +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/comparison/gt.js b/node_modules/mingo/dist/esm/operators/expression/comparison/gt.js new file mode 100644 index 0000000..5f62b95 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/comparison/gt.js @@ -0,0 +1,5 @@ +import { $gt as __gt, createExpressionOperator } from "../../_predicates"; +const $gt = createExpressionOperator(__gt); +export { + $gt +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/comparison/gte.js b/node_modules/mingo/dist/esm/operators/expression/comparison/gte.js new file mode 100644 index 0000000..99be230 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/comparison/gte.js @@ -0,0 +1,5 @@ +import { $gte as __gte, createExpressionOperator } from "../../_predicates"; +const $gte = createExpressionOperator(__gte); +export { + $gte +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/comparison/index.js b/node_modules/mingo/dist/esm/operators/expression/comparison/index.js new file mode 100644 index 0000000..89712a1 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/comparison/index.js @@ -0,0 +1,7 @@ +export * from "./cmp"; +export * from "./eq"; +export * from "./gt"; +export * from "./gte"; +export * from "./lt"; +export * from "./lte"; +export * from "./ne"; diff --git a/node_modules/mingo/dist/esm/operators/expression/comparison/lt.js b/node_modules/mingo/dist/esm/operators/expression/comparison/lt.js new file mode 100644 index 0000000..8bf024c --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/comparison/lt.js @@ -0,0 +1,5 @@ +import { $lt as __lt, createExpressionOperator } from "../../_predicates"; +const $lt = createExpressionOperator(__lt); +export { + $lt +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/comparison/lte.js b/node_modules/mingo/dist/esm/operators/expression/comparison/lte.js new file mode 100644 index 0000000..6d64044 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/comparison/lte.js @@ -0,0 +1,5 @@ +import { $lte as __lte, createExpressionOperator } from "../../_predicates"; +const $lte = createExpressionOperator(__lte); +export { + $lte +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/comparison/ne.js b/node_modules/mingo/dist/esm/operators/expression/comparison/ne.js new file mode 100644 index 0000000..aadac43 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/comparison/ne.js @@ -0,0 +1,5 @@ +import { $ne as __ne, createExpressionOperator } from "../../_predicates"; +const $ne = createExpressionOperator(__ne); +export { + $ne +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/conditional/cond.js b/node_modules/mingo/dist/esm/operators/expression/conditional/cond.js new file mode 100644 index 0000000..6f328ea --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/conditional/cond.js @@ -0,0 +1,27 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isObject, truthy } from "../../../util"; +const $cond = (obj, expr, options) => { + let ifExpr; + let thenExpr; + let elseExpr; + const errorMsg = "$cond: invalid arguments"; + if (isArray(expr)) { + assert(expr.length === 3, errorMsg); + ifExpr = expr[0]; + thenExpr = expr[1]; + elseExpr = expr[2]; + } else { + assert(isObject(expr), errorMsg); + ifExpr = expr.if; + thenExpr = expr.then; + elseExpr = expr.else; + } + const condition = truthy( + computeValue(obj, ifExpr, null, options), + options.useStrictMode + ); + return computeValue(obj, condition ? thenExpr : elseExpr, null, options); +}; +export { + $cond +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/conditional/ifNull.js b/node_modules/mingo/dist/esm/operators/expression/conditional/ifNull.js new file mode 100644 index 0000000..91549b7 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/conditional/ifNull.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../../core"; +import { isNil } from "../../../util"; +const $ifNull = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + return args.find((arg) => !isNil(arg)) ?? args[args.length - 1]; +}; +export { + $ifNull +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/conditional/index.js b/node_modules/mingo/dist/esm/operators/expression/conditional/index.js new file mode 100644 index 0000000..d9eed37 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/conditional/index.js @@ -0,0 +1,3 @@ +export * from "./cond"; +export * from "./ifNull"; +export * from "./switch"; diff --git a/node_modules/mingo/dist/esm/operators/expression/conditional/switch.js b/node_modules/mingo/dist/esm/operators/expression/conditional/switch.js new file mode 100644 index 0000000..51d8dec --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/conditional/switch.js @@ -0,0 +1,22 @@ +import { computeValue } from "../../../core"; +import { truthy } from "../../../util"; +const $switch = (obj, expr, options) => { + let thenExpr = null; + expr.branches.some((b) => { + const condition = truthy( + computeValue(obj, b.case, null, options), + options.useStrictMode + ); + if (condition) thenExpr = b.then; + return condition; + }); + return computeValue( + obj, + thenExpr !== null ? thenExpr : expr.default, + null, + options + ); +}; +export { + $switch +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/custom/function.js b/node_modules/mingo/dist/esm/operators/expression/custom/function.js new file mode 100644 index 0000000..8749c8d --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/custom/function.js @@ -0,0 +1,13 @@ +import { computeValue } from "../../../core"; +import { assert } from "../../../util"; +const $function = (obj, expr, options) => { + assert( + options.scriptEnabled, + "$function operator requires 'scriptEnabled' option to be true" + ); + const fn = computeValue(obj, expr, null, options); + return fn.body.apply(null, fn.args); +}; +export { + $function +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/custom/index.js b/node_modules/mingo/dist/esm/operators/expression/custom/index.js new file mode 100644 index 0000000..c9a947e --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/custom/index.js @@ -0,0 +1 @@ +export * from "./function"; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/_internal.js b/node_modules/mingo/dist/esm/operators/expression/date/_internal.js new file mode 100644 index 0000000..7cae56c --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/_internal.js @@ -0,0 +1,226 @@ +import { computeValue } from "../../../core"; +import { isDate, isNil, isNumber, MingoError } from "../../../util"; +const LEAP_YEAR_REF_POINT = -1e9; +const DAYS_PER_WEEK = 7; +const isLeapYear = (y) => (y & 3) == 0 && (y % 100 != 0 || y % 400 == 0); +const DAYS_IN_YEAR = [ + 365, + 366 + /*leap*/ +]; +const daysInYear = (year) => DAYS_IN_YEAR[+isLeapYear(year)]; +const DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +const daysInMonth = (d) => DAYS_IN_MONTH[d.getUTCMonth()] + Number( + d.getUTCMonth() === 1 && isLeapYear(d.getUTCFullYear()) +); +const YEAR_DAYS_OFFSET = [ + [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334], + [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335] + /*leap*/ +]; +const dayOfYear = (d) => YEAR_DAYS_OFFSET[+isLeapYear(d.getUTCFullYear())][d.getUTCMonth()] + d.getUTCDate(); +const isoWeekday = (date, startOfWeek = "sun") => { + const dow = date.getUTCDay() || 7; + return (dow - ISO_WEEKDAY_MAP[startOfWeek] + DAYS_PER_WEEK) % DAYS_PER_WEEK; +}; +const p = (y) => (y + Math.floor(y / 4) - Math.floor(y / 100) + Math.floor(y / 400)) % 7; +const weeks = (y) => 52 + Number(p(y) == 4 || p(y - 1) == 3); +function isoWeek(d) { + const dow = d.getUTCDay() || 7; + const w = Math.floor((10 + dayOfYear(d) - dow) / 7); + if (w < 1) return weeks(d.getUTCFullYear() - 1); + if (w > weeks(d.getUTCFullYear())) return 1; + return w; +} +function isoWeekYear(d) { + return d.getUTCFullYear() - Number(d.getUTCMonth() === 0 && d.getUTCDate() == 1 && d.getUTCDay() < 1); +} +const MINUTES_PER_HOUR = 60; +const MILLIS_PER_DAY = 1e3 * 60 * 60 * 24; +const TIMEUNIT_IN_MILLIS = { + week: MILLIS_PER_DAY * DAYS_PER_WEEK, + day: MILLIS_PER_DAY, + hour: 1e3 * 60 * 60, + minute: 1e3 * 60, + second: 1e3, + millisecond: 1 +}; +const DAYS_OF_WEEK = [ + "monday", + "mon", + "tuesday", + "tue", + "wednesday", + "wed", + "thursday", + "thu", + "friday", + "fri", + "saturday", + "sat", + "sunday", + "sun" +]; +const DAYS_OF_WEEK_SET = new Set(DAYS_OF_WEEK); +const ISO_WEEKDAY_MAP = Object.freeze({ + mon: 1, + tue: 2, + wed: 3, + thu: 4, + fri: 5, + sat: 6, + sun: 7 +}); +const DATE_FORMAT = "%Y-%m-%dT%H:%M:%S.%LZ"; +const DATE_PART_INTERVAL = [ + ["year", 0, 9999], + ["month", 1, 12], + ["day", 1, 31], + ["hour", 0, 23], + ["minute", 0, 59], + ["second", 0, 59], + ["millisecond", 0, 999] +]; +const DATE_SYM_TABLE = Object.freeze({ + "%Y": { name: "year", padding: 4, re: /([0-9]{4})/ }, + "%G": { name: "year", padding: 4, re: /([0-9]{4})/ }, + "%m": { name: "month", padding: 2, re: /(0[1-9]|1[012])/ }, + "%d": { name: "day", padding: 2, re: /(0[1-9]|[12][0-9]|3[01])/ }, + "%H": { name: "hour", padding: 2, re: /([01][0-9]|2[0-3])/ }, + "%M": { name: "minute", padding: 2, re: /([0-5][0-9])/ }, + "%S": { name: "second", padding: 2, re: /([0-5][0-9]|60)/ }, + "%L": { name: "millisecond", padding: 3, re: /([0-9]{3})/ }, + "%u": { name: "weekday", padding: 1, re: /([1-7])/ }, + "%U": { name: "week", padding: 2, re: /([1-4][0-9]?|5[0-3]?)/ }, + "%V": { name: "isoWeek", padding: 2, re: /([1-4][0-9]?|5[0-3]?)/ }, + "%z": { + name: "timezone", + padding: 2, + re: /(([+-][01][0-9]|2[0-3]):?([0-5][0-9])?)/ + }, + "%Z": { name: "minuteOffset", padding: 3, re: /([+-][0-9]{3})/ } + // "%%": "%", +}); +const TIMEZONE_RE = /^[a-zA-Z_]+\/[a-zA-Z_]+$/; +function parseTimezone(tzstr) { + if (isNil(tzstr)) return 0; + if (TIMEZONE_RE.test(tzstr)) { + const date = /* @__PURE__ */ new Date(); + const utcDate = new Date(date.toLocaleString("en-US", { timeZone: "UTC" })); + const tzDate = new Date(date.toLocaleString("en-US", { timeZone: tzstr })); + return (tzDate.getTime() - utcDate.getTime()) / 6e4; + } + const m = DATE_SYM_TABLE["%z"].re.exec(tzstr); + if (!m) { + throw new MingoError(`Timezone '${tzstr}' is invalid or not supported`); + } + const hr = parseInt(m[2]) || 0; + const min = parseInt(m[3]) || 0; + return (Math.abs(hr * MINUTES_PER_HOUR) + min) * (hr < 0 ? -1 : 1); +} +function formatTimezone(minuteOffset) { + return (minuteOffset < 0 ? "-" : "+") + padDigits(Math.abs(Math.floor(minuteOffset / MINUTES_PER_HOUR)), 2) + padDigits(Math.abs(minuteOffset) % MINUTES_PER_HOUR, 2); +} +function adjustDate(d, minuteOffset) { + d.setUTCMinutes(d.getUTCMinutes() + minuteOffset); +} +function computeDate(obj, expr, options) { + if (isDate(obj)) return obj; + const d = computeValue(obj, expr, null, options); + if (isDate(d)) return new Date(d); + if (isNumber(d)) return new Date(d * 1e3); + if (d.date) { + const date = isDate(d.date) ? new Date(d.date) : new Date(d.date * 1e3); + if (d.timezone) { + adjustDate(date, parseTimezone(d.timezone)); + } + return date; + } + throw Error(`cannot convert ${JSON.stringify(expr)} to date`); +} +function padDigits(n, digits) { + return new Array(Math.max(digits - String(n).length + 1, 0)).join("0") + n.toString(); +} +const leapYearsSinceReferencePoint = (year) => { + const yearsSinceReferencePoint = year - LEAP_YEAR_REF_POINT; + return Math.trunc(yearsSinceReferencePoint / 4) - Math.trunc(yearsSinceReferencePoint / 100) + Math.trunc(yearsSinceReferencePoint / 400); +}; +function daysBetweenYears(startYear, endYear) { + return Math.trunc( + leapYearsSinceReferencePoint(endYear - 1) - leapYearsSinceReferencePoint(startYear - 1) + (endYear - startYear) * DAYS_IN_YEAR[0] + ); +} +const dateDiffYear = (start, end) => end.getUTCFullYear() - start.getUTCFullYear(); +const dateDiffMonth = (start, end) => end.getUTCMonth() - start.getUTCMonth() + dateDiffYear(start, end) * 12; +const dateDiffQuarter = (start, end) => { + const a = Math.trunc(start.getUTCMonth() / 3); + const b = Math.trunc(end.getUTCMonth() / 3); + return b - a + dateDiffYear(start, end) * 4; +}; +const dateDiffDay = (start, end) => dayOfYear(end) - dayOfYear(start) + daysBetweenYears(start.getUTCFullYear(), end.getUTCFullYear()); +const dateDiffWeek = (start, end, startOfWeek) => { + const wk = (startOfWeek || "sun").substring(0, 3); + return Math.trunc( + (dateDiffDay(start, end) + isoWeekday(start, wk) - isoWeekday(end, wk)) / DAYS_PER_WEEK + ); +}; +const dateDiffHour = (start, end) => end.getUTCHours() - start.getUTCHours() + dateDiffDay(start, end) * 24; +const addMonth = (d, amount) => { + const m = d.getUTCMonth() + amount; + const yearOffset = Math.floor(m / 12); + if (m < 0) { + const month = m % 12 + 12; + d.setUTCFullYear(d.getUTCFullYear() + yearOffset, month, d.getUTCDate()); + } else { + d.setUTCFullYear(d.getUTCFullYear() + yearOffset, m % 12, d.getUTCDate()); + } +}; +const dateAdd = (date, unit, amount, _timezone) => { + const d = new Date(date); + switch (unit) { + case "year": + d.setUTCFullYear(d.getUTCFullYear() + amount); + break; + case "quarter": + addMonth(d, 3 * amount); + break; + case "month": + addMonth(d, amount); + break; + default: + d.setTime(d.getTime() + TIMEUNIT_IN_MILLIS[unit] * amount); + } + return d; +}; +export { + DATE_FORMAT, + DATE_PART_INTERVAL, + DATE_SYM_TABLE, + DAYS_OF_WEEK, + DAYS_OF_WEEK_SET, + DAYS_PER_WEEK, + LEAP_YEAR_REF_POINT, + MILLIS_PER_DAY, + MINUTES_PER_HOUR, + TIMEUNIT_IN_MILLIS, + adjustDate, + computeDate, + dateAdd, + dateDiffDay, + dateDiffHour, + dateDiffMonth, + dateDiffQuarter, + dateDiffWeek, + dateDiffYear, + dayOfYear, + daysBetweenYears, + daysInMonth, + daysInYear, + formatTimezone, + isLeapYear, + isoWeek, + isoWeekYear, + isoWeekday, + padDigits, + parseTimezone +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/dateAdd.js b/node_modules/mingo/dist/esm/operators/expression/date/dateAdd.js new file mode 100644 index 0000000..dd84ffc --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/dateAdd.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../../core"; +import { dateAdd } from "./_internal"; +const $dateAdd = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + return dateAdd(args.startDate, args.unit, args.amount, args.timezone); +}; +export { + $dateAdd +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/dateDiff.js b/node_modules/mingo/dist/esm/operators/expression/date/dateDiff.js new file mode 100644 index 0000000..66e32db --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/dateDiff.js @@ -0,0 +1,54 @@ +import { computeValue } from "../../../core"; +import { + adjustDate, + dateDiffDay, + dateDiffHour, + dateDiffMonth, + dateDiffQuarter, + dateDiffWeek, + dateDiffYear, + parseTimezone, + TIMEUNIT_IN_MILLIS +} from "./_internal"; +const $dateDiff = (obj, expr, options) => { + const { startDate, endDate, unit, timezone, startOfWeek } = computeValue( + obj, + expr, + null, + options + ); + const d1 = new Date(startDate); + const d2 = new Date(endDate); + const minuteOffset = parseTimezone(timezone); + adjustDate(d1, minuteOffset); + adjustDate(d2, minuteOffset); + switch (unit) { + case "year": + return dateDiffYear(d1, d2); + case "quarter": + return dateDiffQuarter(d1, d2); + case "month": + return dateDiffMonth(d1, d2); + case "week": + return dateDiffWeek(d1, d2, startOfWeek); + case "day": + return dateDiffDay(d1, d2); + case "hour": + return dateDiffHour(d1, d2); + case "minute": + d1.setUTCSeconds(0); + d1.setUTCMilliseconds(0); + d2.setUTCSeconds(0); + d2.setUTCMilliseconds(0); + return Math.round( + (d2.getTime() - d1.getTime()) / TIMEUNIT_IN_MILLIS[unit] + ); + default: + return Math.round( + (d2.getTime() - d1.getTime()) / TIMEUNIT_IN_MILLIS[unit] + ); + } +}; +export { + $dateDiff +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/dateFromParts.js b/node_modules/mingo/dist/esm/operators/expression/date/dateFromParts.js new file mode 100644 index 0000000..2559a7f --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/dateFromParts.js @@ -0,0 +1,51 @@ +import { computeValue } from "../../../core"; +import { + DATE_PART_INTERVAL, + isLeapYear, + MINUTES_PER_HOUR, + parseTimezone +} from "./_internal"; +const DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +const getDaysInMonth = (date) => { + return date.month == 2 && isLeapYear(date.year) ? 29 : DAYS_IN_MONTH[date.month - 1]; +}; +const $dateFromParts = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + const minuteOffset = parseTimezone(args.timezone); + for (let i = DATE_PART_INTERVAL.length - 1, remainder = 0; i >= 0; i--) { + const datePartInterval = DATE_PART_INTERVAL[i]; + const k = datePartInterval[0]; + const min = datePartInterval[1]; + const max = datePartInterval[2]; + let part = (args[k] || 0) + remainder; + remainder = 0; + const limit = max + 1; + if (k == "hour") part += Math.floor(minuteOffset / MINUTES_PER_HOUR) * -1; + if (k == "minute") part += minuteOffset % MINUTES_PER_HOUR * -1; + if (part < min) { + const delta = min - part; + remainder = -1 * Math.ceil(delta / limit); + part = limit - delta % limit; + } else if (part > max) { + part += min; + remainder = Math.trunc(part / limit); + part %= limit; + } + args[k] = part; + } + args.day = Math.min(args.day, getDaysInMonth(args)); + return new Date( + Date.UTC( + args.year, + args.month - 1, + args.day, + args.hour, + args.minute, + args.second, + args.millisecond + ) + ); +}; +export { + $dateFromParts +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/dateFromString.js b/node_modules/mingo/dist/esm/operators/expression/date/dateFromString.js new file mode 100644 index 0000000..1fa9bea --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/dateFromString.js @@ -0,0 +1,79 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isObject } from "../../../util"; +import { + adjustDate, + DATE_FORMAT, + DATE_SYM_TABLE, + MINUTES_PER_HOUR, + parseTimezone +} from "./_internal"; +const buildMap = (letters, sign) => { + const h = {}; + letters.split("").forEach((v, i) => h[v] = sign * (i + 1)); + return h; +}; +const TZ_LETTER_OFFSETS = { + ...buildMap("ABCDEFGHIKLM", 1), + ...buildMap("NOPQRSTUVWXY", -1), + Z: 0 +}; +const regexStrip = (s) => s.replace(/^\//, "").replace(/\/$/, ""); +const REGEX_SPECIAL_CHARS = ["^", ".", "-", "*", "?", "$"]; +const regexQuote = (s) => { + REGEX_SPECIAL_CHARS.forEach((c) => { + s = s.replace(c, `\\${c}`); + }); + return s; +}; +const $dateFromString = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + args.format = args.format || DATE_FORMAT; + args.onNull = args.onNull || null; + let dateString = args.dateString; + if (isNil(dateString)) return args.onNull; + const separators = args.format.split(/%[YGmdHMSLuVzZ]/); + separators.reverse(); + const matches = args.format.match( + /(%%|%Y|%G|%m|%d|%H|%M|%S|%L|%u|%V|%z|%Z)/g + ); + const dateParts = {}; + let expectedPattern = ""; + for (let i = 0, len = matches.length; i < len; i++) { + const formatSpecifier = matches[i]; + const props = DATE_SYM_TABLE[formatSpecifier]; + if (isObject(props)) { + const m2 = props.re.exec(dateString); + const delimiter = separators.pop() || ""; + if (m2 !== null) { + dateParts[props.name] = /^\d+$/.exec(m2[0]) ? parseInt(m2[0]) : m2[0]; + dateString = dateString.substr(0, m2.index) + dateString.substr(m2.index + m2[0].length); + expectedPattern += regexQuote(delimiter) + regexStrip(props.re.toString()); + } else { + dateParts[props.name] = null; + } + } + } + if (isNil(dateParts.year) || isNil(dateParts.month) || isNil(dateParts.day) || !new RegExp("^" + expectedPattern + "[A-Z]?$").exec(args.dateString)) { + return args.onError; + } + const m = args.dateString.match(/([A-Z])$/); + assert( + // only one of in-date timeone or timezone argument but not both. + !(m && args.timezone), + `$dateFromString: you cannot pass in a date/time string with time zone information ('${m && m[0]}') together with a timezone argument` + ); + const minuteOffset = m ? TZ_LETTER_OFFSETS[m[0]] * MINUTES_PER_HOUR : parseTimezone(args.timezone); + const d = new Date( + Date.UTC(dateParts.year, dateParts.month - 1, dateParts.day, 0, 0, 0) + ); + if (!isNil(dateParts.hour)) d.setUTCHours(dateParts.hour); + if (!isNil(dateParts.minute)) d.setUTCMinutes(dateParts.minute); + if (!isNil(dateParts.second)) d.setUTCSeconds(dateParts.second); + if (!isNil(dateParts.millisecond)) + d.setUTCMilliseconds(dateParts.millisecond); + adjustDate(d, -minuteOffset); + return d; +}; +export { + $dateFromString +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/dateSubtract.js b/node_modules/mingo/dist/esm/operators/expression/date/dateSubtract.js new file mode 100644 index 0000000..20595e2 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/dateSubtract.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../../core"; +import { $dateAdd } from "./dateAdd"; +const $dateSubtract = (obj, expr, options) => { + const amount = computeValue(obj, expr?.amount, null, options); + return $dateAdd(obj, { ...expr, amount: -1 * amount }, options); +}; +export { + $dateSubtract +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/dateToParts.js b/node_modules/mingo/dist/esm/operators/expression/date/dateToParts.js new file mode 100644 index 0000000..c03c049 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/dateToParts.js @@ -0,0 +1,29 @@ +import { computeValue } from "../../../core"; +import { adjustDate, isoWeek, isoWeekYear, parseTimezone } from "./_internal"; +const $dateToParts = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + const d = new Date(args.date); + const tz = parseTimezone(args.timezone); + adjustDate(d, tz); + const timePart = { + hour: d.getUTCHours(), + minute: d.getUTCMinutes(), + second: d.getUTCSeconds(), + millisecond: d.getUTCMilliseconds() + }; + if (args.iso8601 == true) { + return Object.assign(timePart, { + isoWeekYear: isoWeekYear(d), + isoWeek: isoWeek(d), + isoDayOfWeek: d.getUTCDay() || 7 + }); + } + return Object.assign(timePart, { + year: d.getUTCFullYear(), + month: d.getUTCMonth() + 1, + day: d.getUTCDate() + }); +}; +export { + $dateToParts +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/dateToString.js b/node_modules/mingo/dist/esm/operators/expression/date/dateToString.js new file mode 100644 index 0000000..588d15d --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/dateToString.js @@ -0,0 +1,68 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isObject } from "../../../util"; +import { + adjustDate, + computeDate, + DATE_FORMAT, + DATE_SYM_TABLE, + formatTimezone, + padDigits, + parseTimezone +} from "./_internal"; +import { $dayOfMonth } from "./dayOfMonth"; +import { $hour } from "./hour"; +import { $isoDayOfWeek } from "./isoDayOfWeek"; +import { $isoWeek } from "./isoWeek"; +import { $millisecond } from "./millisecond"; +import { $minute } from "./minute"; +import { $month } from "./month"; +import { $second } from "./second"; +import { $week } from "./week"; +import { $year } from "./year"; +const DATE_FUNCTIONS = { + "%Y": $year, + "%G": $year, + "%m": $month, + "%d": $dayOfMonth, + "%H": $hour, + "%M": $minute, + "%S": $second, + "%L": $millisecond, + "%u": $isoDayOfWeek, + "%U": $week, + "%V": $isoWeek +}; +const $dateToString = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + if (isNil(args.onNull)) args.onNull = null; + if (isNil(args.date)) return args.onNull; + const date = computeDate(obj, args.date, options); + let format = args.format || DATE_FORMAT; + const minuteOffset = parseTimezone(args.timezone); + const matches = format.match(/(%%|%Y|%G|%m|%d|%H|%M|%S|%L|%u|%U|%V|%z|%Z)/g); + adjustDate(date, minuteOffset); + for (let i = 0, len = matches.length; i < len; i++) { + const formatSpecifier = matches[i]; + const props = DATE_SYM_TABLE[formatSpecifier]; + const operatorFn = DATE_FUNCTIONS[formatSpecifier]; + let value; + if (isObject(props)) { + if (props.name === "timezone") { + value = formatTimezone(minuteOffset); + } else if (props.name === "minuteOffset") { + value = minuteOffset.toString(); + } else { + assert( + !!operatorFn, + `unsupported date format specifier '${formatSpecifier}'` + ); + value = padDigits(operatorFn(obj, date, options), props.padding); + } + } + format = format.replace(formatSpecifier, value); + } + return format; +}; +export { + $dateToString +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/dateTrunc.js b/node_modules/mingo/dist/esm/operators/expression/date/dateTrunc.js new file mode 100644 index 0000000..2ef4216 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/dateTrunc.js @@ -0,0 +1,97 @@ +import { computeValue } from "../../../core"; +import { TIME_UNITS } from "../../../types"; +import { assert, isDate, isNil } from "../../../util"; +import { + adjustDate, + dateAdd, + dateDiffDay, + dateDiffMonth, + dateDiffQuarter, + dateDiffWeek, + dateDiffYear, + DAYS_OF_WEEK_SET, + DAYS_PER_WEEK, + isoWeekday, + parseTimezone, + TIMEUNIT_IN_MILLIS +} from "./_internal"; +const REF_DATE_MILLIS = 9466848e5; +const distanceToBinLowerBound = (value, binSize) => { + let remainder = value % binSize; + if (remainder < 0) { + remainder += binSize; + } + return remainder; +}; +const DATE_DIFF_FN = { + day: dateDiffDay, + month: dateDiffMonth, + quarter: dateDiffQuarter, + year: dateDiffYear +}; +const $dateTrunc = (obj, expr, options) => { + const { + date, + unit, + binSize: optBinSize, + timezone, + startOfWeek: optStartOfWeek + } = computeValue(obj, expr, null, options); + if (isNil(date) || isNil(unit)) return null; + const startOfWeek = (optStartOfWeek ?? "sun").toLowerCase().substring(0, 3); + assert( + isDate(date), + "$dateTrunc: 'date' must resolve to a valid Date object." + ); + assert(TIME_UNITS.includes(unit), "$dateTrunc: unit is invalid."); + assert( + unit != "week" || DAYS_OF_WEEK_SET.has(startOfWeek), + `$dateTrunc: startOfWeek '${startOfWeek}' is not a valid.` + ); + assert( + isNil(optBinSize) || optBinSize > 0, + "$dateTrunc requires 'binSize' to be greater than 0, but got value 0." + ); + const binSize = optBinSize ?? 1; + switch (unit) { + case "millisecond": + case "second": + case "minute": + case "hour": { + const binSizeMillis = binSize * TIMEUNIT_IN_MILLIS[unit]; + const shiftedDate = date.getTime() - REF_DATE_MILLIS; + return new Date( + date.getTime() - distanceToBinLowerBound(shiftedDate, binSizeMillis) + ); + } + default: { + assert(binSize <= 1e11, "dateTrunc unsupported binSize value"); + const d = new Date(date); + const refPointDate = new Date(REF_DATE_MILLIS); + let distanceFromRefPoint = 0; + if (unit == "week") { + const refPointDayOfWeek = isoWeekday(refPointDate, startOfWeek); + const daysToAdjustBy = (DAYS_PER_WEEK - refPointDayOfWeek) % DAYS_PER_WEEK; + refPointDate.setTime( + refPointDate.getTime() + daysToAdjustBy * TIMEUNIT_IN_MILLIS.day + ); + distanceFromRefPoint = dateDiffWeek(refPointDate, d, startOfWeek); + } else { + distanceFromRefPoint = DATE_DIFF_FN[unit](refPointDate, d); + } + const binLowerBoundFromRefPoint = distanceFromRefPoint - distanceToBinLowerBound(distanceFromRefPoint, binSize); + const newDate = dateAdd( + refPointDate, + unit, + binLowerBoundFromRefPoint, + timezone + ); + const minuteOffset = parseTimezone(timezone); + adjustDate(newDate, -minuteOffset); + return newDate; + } + } +}; +export { + $dateTrunc +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/dayOfMonth.js b/node_modules/mingo/dist/esm/operators/expression/date/dayOfMonth.js new file mode 100644 index 0000000..e489b65 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/dayOfMonth.js @@ -0,0 +1,7 @@ +import { computeDate } from "./_internal"; +const $dayOfMonth = (obj, expr, options) => { + return computeDate(obj, expr, options).getUTCDate(); +}; +export { + $dayOfMonth +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/dayOfWeek.js b/node_modules/mingo/dist/esm/operators/expression/date/dayOfWeek.js new file mode 100644 index 0000000..bf453b1 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/dayOfWeek.js @@ -0,0 +1,7 @@ +import { computeDate } from "./_internal"; +const $dayOfWeek = (obj, expr, options) => { + return computeDate(obj, expr, options).getUTCDay() + 1; +}; +export { + $dayOfWeek +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/dayOfYear.js b/node_modules/mingo/dist/esm/operators/expression/date/dayOfYear.js new file mode 100644 index 0000000..f40a77b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/dayOfYear.js @@ -0,0 +1,7 @@ +import { computeDate, dayOfYear } from "./_internal"; +const $dayOfYear = (obj, expr, options) => { + return dayOfYear(computeDate(obj, expr, options)); +}; +export { + $dayOfYear +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/hour.js b/node_modules/mingo/dist/esm/operators/expression/date/hour.js new file mode 100644 index 0000000..452ab77 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/hour.js @@ -0,0 +1,7 @@ +import { computeDate } from "./_internal"; +const $hour = (obj, expr, options) => { + return computeDate(obj, expr, options).getUTCHours(); +}; +export { + $hour +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/index.js b/node_modules/mingo/dist/esm/operators/expression/date/index.js new file mode 100644 index 0000000..db2506f --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/index.js @@ -0,0 +1,21 @@ +export * from "./dateAdd"; +export * from "./dateDiff"; +export * from "./dateFromParts"; +export * from "./dateFromString"; +export * from "./dateSubtract"; +export * from "./dateToParts"; +export * from "./dateToString"; +export * from "./dateTrunc"; +export * from "./dayOfMonth"; +export * from "./dayOfWeek"; +export * from "./dayOfYear"; +export * from "./hour"; +export * from "./isoDayOfWeek"; +export * from "./isoWeek"; +export * from "./isoWeekYear"; +export * from "./millisecond"; +export * from "./minute"; +export * from "./month"; +export * from "./second"; +export * from "./week"; +export * from "./year"; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/isoDayOfWeek.js b/node_modules/mingo/dist/esm/operators/expression/date/isoDayOfWeek.js new file mode 100644 index 0000000..7ebb8eb --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/isoDayOfWeek.js @@ -0,0 +1,7 @@ +import { computeDate } from "./_internal"; +const $isoDayOfWeek = (obj, expr, options) => { + return computeDate(obj, expr, options).getUTCDay() || 7; +}; +export { + $isoDayOfWeek +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/isoWeek.js b/node_modules/mingo/dist/esm/operators/expression/date/isoWeek.js new file mode 100644 index 0000000..2ddb1d5 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/isoWeek.js @@ -0,0 +1,7 @@ +import { computeDate, isoWeek } from "./_internal"; +const $isoWeek = (obj, expr, options) => { + return isoWeek(computeDate(obj, expr, options)); +}; +export { + $isoWeek +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/isoWeekYear.js b/node_modules/mingo/dist/esm/operators/expression/date/isoWeekYear.js new file mode 100644 index 0000000..0b12a12 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/isoWeekYear.js @@ -0,0 +1,5 @@ +import { computeDate, isoWeekYear } from "./_internal"; +const $isoWeekYear = (obj, expr, options) => isoWeekYear(computeDate(obj, expr, options)); +export { + $isoWeekYear +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/millisecond.js b/node_modules/mingo/dist/esm/operators/expression/date/millisecond.js new file mode 100644 index 0000000..a07c964 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/millisecond.js @@ -0,0 +1,7 @@ +import { computeDate } from "./_internal"; +const $millisecond = (obj, expr, options) => { + return computeDate(obj, expr, options).getUTCMilliseconds(); +}; +export { + $millisecond +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/minute.js b/node_modules/mingo/dist/esm/operators/expression/date/minute.js new file mode 100644 index 0000000..30d10b8 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/minute.js @@ -0,0 +1,7 @@ +import { computeDate } from "./_internal"; +const $minute = (obj, expr, options) => { + return computeDate(obj, expr, options).getUTCMinutes(); +}; +export { + $minute +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/month.js b/node_modules/mingo/dist/esm/operators/expression/date/month.js new file mode 100644 index 0000000..5bcbd3b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/month.js @@ -0,0 +1,7 @@ +import { computeDate } from "./_internal"; +const $month = (obj, expr, options) => { + return computeDate(obj, expr, options).getUTCMonth() + 1; +}; +export { + $month +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/second.js b/node_modules/mingo/dist/esm/operators/expression/date/second.js new file mode 100644 index 0000000..b03f17c --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/second.js @@ -0,0 +1,7 @@ +import { computeDate } from "./_internal"; +const $second = (obj, expr, options) => { + return computeDate(obj, expr, options).getUTCSeconds(); +}; +export { + $second +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/week.js b/node_modules/mingo/dist/esm/operators/expression/date/week.js new file mode 100644 index 0000000..aa4e123 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/week.js @@ -0,0 +1,12 @@ +import { computeDate, isoWeek } from "./_internal"; +const $week = (obj, expr, options) => { + const d = computeDate(obj, expr, options); + const result = isoWeek(d); + if (d.getUTCDay() > 0 && d.getUTCDate() == 1 && d.getUTCMonth() == 0) + return 0; + if (d.getUTCDay() == 0) return result + 1; + return result; +}; +export { + $week +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/date/year.js b/node_modules/mingo/dist/esm/operators/expression/date/year.js new file mode 100644 index 0000000..72dfb23 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/date/year.js @@ -0,0 +1,7 @@ +import { computeDate } from "./_internal"; +const $year = (obj, expr, options) => { + return computeDate(obj, expr, options).getUTCFullYear(); +}; +export { + $year +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/index.js b/node_modules/mingo/dist/esm/operators/expression/index.js new file mode 100644 index 0000000..9cb850d --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/index.js @@ -0,0 +1,18 @@ +export * from "./arithmetic"; +export * from "./array"; +export * from "./bitwise"; +export * from "./boolean"; +export * from "./comparison"; +export * from "./conditional"; +export * from "./custom"; +export * from "./date"; +export * from "./literal"; +export * from "./median"; +export * from "./misc"; +export * from "./object"; +export * from "./percentile"; +export * from "./set"; +export * from "./string"; +export * from "./trignometry"; +export * from "./type"; +export * from "./variable"; diff --git a/node_modules/mingo/dist/esm/operators/expression/literal.js b/node_modules/mingo/dist/esm/operators/expression/literal.js new file mode 100644 index 0000000..0b276c4 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/literal.js @@ -0,0 +1,4 @@ +const $literal = (_obj, expr, _options) => expr; +export { + $literal +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/median.js b/node_modules/mingo/dist/esm/operators/expression/median.js new file mode 100644 index 0000000..401f241 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/median.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../core"; +import { $median as __median } from "../accumulator/median"; +const $median = (obj, expr, options) => { + const input = computeValue(obj, expr.input, null, options); + return __median(input, { input: "$$CURRENT" }, options); +}; +export { + $median +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/misc/getField.js b/node_modules/mingo/dist/esm/operators/expression/misc/getField.js new file mode 100644 index 0000000..72cc6c4 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/misc/getField.js @@ -0,0 +1,19 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isObject, isString } from "../../../util"; +const $getField = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + const [field, input] = isObject(args) ? [args.field, args.input || obj] : [args, obj]; + if (isNil(input)) return null; + assert( + isObject(input), + "$getField expression 'input' must evaluate to an object" + ); + assert( + isString(field), + "$getField expression 'field' must evaluate to a string" + ); + return input[field]; +}; +export { + $getField +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/misc/index.js b/node_modules/mingo/dist/esm/operators/expression/misc/index.js new file mode 100644 index 0000000..e2b9fec --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/misc/index.js @@ -0,0 +1,3 @@ +export * from "./getField"; +export * from "./rand"; +export * from "./sampleRate"; diff --git a/node_modules/mingo/dist/esm/operators/expression/misc/rand.js b/node_modules/mingo/dist/esm/operators/expression/misc/rand.js new file mode 100644 index 0000000..eb5d961 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/misc/rand.js @@ -0,0 +1,4 @@ +const $rand = (_obj, _expr, _options) => Math.random(); +export { + $rand +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/misc/sampleRate.js b/node_modules/mingo/dist/esm/operators/expression/misc/sampleRate.js new file mode 100644 index 0000000..4fca4cc --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/misc/sampleRate.js @@ -0,0 +1,5 @@ +import { computeValue } from "../../../core"; +const $sampleRate = (obj, expr, options) => Math.random() <= computeValue(obj, expr, null, options); +export { + $sampleRate +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/object/index.js b/node_modules/mingo/dist/esm/operators/expression/object/index.js new file mode 100644 index 0000000..06d0767 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/object/index.js @@ -0,0 +1,4 @@ +export * from "./mergeObjects"; +export * from "./objectToArray"; +export * from "./setField"; +export * from "./unsetField"; diff --git a/node_modules/mingo/dist/esm/operators/expression/object/mergeObjects.js b/node_modules/mingo/dist/esm/operators/expression/object/mergeObjects.js new file mode 100644 index 0000000..d999195 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/object/mergeObjects.js @@ -0,0 +1,16 @@ +import { computeValue } from "../../../core"; +import { isNil } from "../../../util"; +const $mergeObjects = (obj, expr, options) => { + const docs = computeValue(obj, expr, null, options) ?? []; + const acc = {}; + for (const o of docs) { + if (isNil(o)) continue; + for (const k of Object.keys(o)) { + if (o[k] !== void 0) acc[k] = o[k]; + } + } + return acc; +}; +export { + $mergeObjects +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/object/objectToArray.js b/node_modules/mingo/dist/esm/operators/expression/object/objectToArray.js new file mode 100644 index 0000000..10526b9 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/object/objectToArray.js @@ -0,0 +1,20 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isObject, typeOf } from "../../../util"; +const $objectToArray = (obj, expr, options) => { + const val = computeValue(obj, expr, null, options); + if (isNil(val)) return null; + assert( + isObject(val), + `$objectToArray requires a document input, found: ${typeOf(val)}` + ); + const entries = Object.entries(val); + const result = new Array(entries.length); + let i = 0; + for (const [k, v] of entries) { + result[i++] = { k, v }; + } + return result; +}; +export { + $objectToArray +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/object/setField.js b/node_modules/mingo/dist/esm/operators/expression/object/setField.js new file mode 100644 index 0000000..b6d0742 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/object/setField.js @@ -0,0 +1,29 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isObject, isString } from "../../../util"; +const $setField = (obj, expr, options) => { + const { input, field, value } = computeValue( + obj, + expr, + null, + options + ); + if (isNil(input)) return null; + assert( + isObject(input), + "$setField expression 'input' must evaluate to an object" + ); + assert( + isString(field), + "$setField expression 'field' must evaluate to a string" + ); + const newObj = { ...input }; + if (expr.value == "$$REMOVE") { + delete newObj[field]; + } else { + newObj[field] = value; + } + return newObj; +}; +export { + $setField +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/object/unsetField.js b/node_modules/mingo/dist/esm/operators/expression/object/unsetField.js new file mode 100644 index 0000000..64cd6ca --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/object/unsetField.js @@ -0,0 +1,14 @@ +import { $setField } from "./setField"; +const $unsetField = (obj, expr, options) => { + return $setField( + obj, + { + ...expr, + value: "$$REMOVE" + }, + options + ); +}; +export { + $unsetField +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/percentile.js b/node_modules/mingo/dist/esm/operators/expression/percentile.js new file mode 100644 index 0000000..b6bac10 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/percentile.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../core"; +import { $percentile as __percentile } from "../accumulator/percentile"; +const $percentile = (obj, expr, options) => { + const input = computeValue(obj, expr.input, null, options); + return __percentile(input, { ...expr, input: "$$CURRENT" }, options); +}; +export { + $percentile +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/set/allElementsTrue.js b/node_modules/mingo/dist/esm/operators/expression/set/allElementsTrue.js new file mode 100644 index 0000000..d846da1 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/set/allElementsTrue.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../../core"; +import { truthy } from "../../../util"; +const $allElementsTrue = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options)[0]; + return args.every((v) => truthy(v, options.useStrictMode)); +}; +export { + $allElementsTrue +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/set/anyElementTrue.js b/node_modules/mingo/dist/esm/operators/expression/set/anyElementTrue.js new file mode 100644 index 0000000..9d2df79 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/set/anyElementTrue.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../../core"; +import { truthy } from "../../../util"; +const $anyElementTrue = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options)[0]; + return args.some((v) => truthy(v, options.useStrictMode)); +}; +export { + $anyElementTrue +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/set/index.js b/node_modules/mingo/dist/esm/operators/expression/set/index.js new file mode 100644 index 0000000..f03004b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/set/index.js @@ -0,0 +1,7 @@ +export * from "./allElementsTrue"; +export * from "./anyElementTrue"; +export * from "./setDifference"; +export * from "./setEquals"; +export * from "./setIntersection"; +export * from "./setIsSubset"; +export * from "./setUnion"; diff --git a/node_modules/mingo/dist/esm/operators/expression/set/setDifference.js b/node_modules/mingo/dist/esm/operators/expression/set/setDifference.js new file mode 100644 index 0000000..2a00d09 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/set/setDifference.js @@ -0,0 +1,17 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, isNil, ValueMap } from "../../../util"; +const $setDifference = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + if (isNil(args)) return null; + assert(isArray(args), "$setDifference must be an arrays."); + if (args.some(isNil)) return null; + assert(args.length == 2, `$setDifference takes exactly 2 arguments.`); + assert(args.every(isArray), "$setDifference operands must be arrays."); + const m = ValueMap.init(options.hashFunction); + args[0].forEach((v) => m.set(v, true)); + args[1].forEach((v) => m.delete(v)); + return Array.from(m.keys()); +}; +export { + $setDifference +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/set/setEquals.js b/node_modules/mingo/dist/esm/operators/expression/set/setEquals.js new file mode 100644 index 0000000..6142011 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/set/setEquals.js @@ -0,0 +1,25 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, ValueMap } from "../../../util"; +const $setEquals = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + assert( + isArray(args) && args.every(isArray), + "$setEquals operands must be arrays." + ); + const map = ValueMap.init(); + args[0].every((v, i) => map.set(v, i)); + for (let i = 1; i < args.length; i++) { + const arr = args[i]; + const set = /* @__PURE__ */ new Set(); + for (let j = 0; j < arr.length; j++) { + const n = map.get(arr[j]) ?? -1; + if (n === -1) return false; + set.add(n); + } + if (set.size !== map.size) return false; + } + return true; +}; +export { + $setEquals +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/set/setIntersection.js b/node_modules/mingo/dist/esm/operators/expression/set/setIntersection.js new file mode 100644 index 0000000..5c43ed4 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/set/setIntersection.js @@ -0,0 +1,14 @@ +import { computeValue } from "../../../core"; +import { assert, intersection, isArray, isNil } from "../../../util"; +const $setIntersection = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + if (isNil(args)) return null; + assert( + isArray(args) && args.every(isArray), + "$setIntersection operands must be arrays." + ); + return intersection(args, options?.hashFunction); +}; +export { + $setIntersection +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/set/setIsSubset.js b/node_modules/mingo/dist/esm/operators/expression/set/setIsSubset.js new file mode 100644 index 0000000..a9c8d04 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/set/setIsSubset.js @@ -0,0 +1,23 @@ +import { computeValue } from "../../../core"; +import { assert, isArray, ValueMap } from "../../../util"; +const $setIsSubset = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + assert( + isArray(args) && args.every(isArray), + "$setIsSubset operands must be arrays." + ); + const first = args[0]; + const second = args[1]; + const map = ValueMap.init(); + const set = /* @__PURE__ */ new Set(); + first.every((v, i) => map.set(v, i)); + for (const v of second) { + set.add(map.get(v) ?? -1); + if (set.size > map.size) return true; + } + set.delete(-1); + return set.size == map.size; +}; +export { + $setIsSubset +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/set/setUnion.js b/node_modules/mingo/dist/esm/operators/expression/set/setUnion.js new file mode 100644 index 0000000..ba33935 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/set/setUnion.js @@ -0,0 +1,12 @@ +import { computeValue } from "../../../core"; +import { assert, flatten, isArray, isNil, unique } from "../../../util"; +const $setUnion = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + if (isNil(args)) return null; + assert(isArray(args), "$setUnion operands must be arrays."); + if (args.some(isNil)) return null; + return unique(flatten(args), options?.hashFunction); +}; +export { + $setUnion +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/_internal.js b/node_modules/mingo/dist/esm/operators/expression/string/_internal.js new file mode 100644 index 0000000..68263a9 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/_internal.js @@ -0,0 +1,91 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isString } from "../../../util"; +const WHITESPACE_CHARS = [ + 0, + // '\0' Null character + 32, + // ' ', Space + 9, + // '\t' Horizontal tab + 10, + // '\n' Line feed/new line + 11, + // '\v' Vertical tab + 12, + // '\f' Form feed + 13, + // '\r' Carriage return + 160, + // Non-breaking space + 5760, + // Ogham space mark + 8192, + // En quad + 8193, + // Em quad + 8194, + // En space + 8195, + // Em space + 8196, + // Three-per-em space + 8197, + // Four-per-em space + 8198, + // Six-per-em space + 8199, + // Figure space + 8200, + // Punctuation space + 8201, + // Thin space + 8202 + // Hair space +]; +function trimString(obj, expr, options, trimOpts) { + const val = computeValue(obj, expr, null, options); + const s = val.input; + if (isNil(s)) return null; + const codepoints = isNil(val.chars) ? WHITESPACE_CHARS : val.chars.split("").map((c) => c.codePointAt(0)); + let i = 0; + let j = s.length - 1; + while (trimOpts.left && i <= j && codepoints.indexOf(s[i].codePointAt(0)) !== -1) + i++; + while (trimOpts.right && i <= j && codepoints.indexOf(s[j].codePointAt(0)) !== -1) + j--; + return s.substring(i, j + 1); +} +function regexSearch(obj, expr, options, reOpts) { + const val = computeValue(obj, expr, null, options); + if (!isString(val.input)) return []; + const regexOptions = val.options; + if (regexOptions) { + assert( + regexOptions.indexOf("x") === -1, + "extended capability option 'x' not supported" + ); + assert(regexOptions.indexOf("g") === -1, "global option 'g' not supported"); + } + let input = val.input; + const re = new RegExp(val.regex, regexOptions); + let m; + const matches = new Array(); + let offset = 0; + while (m = re.exec(input)) { + const result = { + match: m[0], + idx: m.index + offset, + captures: [] + }; + for (let i = 1; i < m.length; i++) result.captures.push(m[i] || null); + matches.push(result); + if (!reOpts.global) break; + offset = m.index + m[0].length; + input = input.substring(offset); + } + return matches; +} +export { + regexSearch, + trimString +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/concat.js b/node_modules/mingo/dist/esm/operators/expression/string/concat.js new file mode 100644 index 0000000..c6b50d7 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/concat.js @@ -0,0 +1,14 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isString } from "../../../util"; +const $concat = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + assert( + args.every((v) => isString(v) || isNil(v)), + "$concat only supports strings." + ); + if (args.some(isNil)) return null; + return args.join(""); +}; +export { + $concat +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/index.js b/node_modules/mingo/dist/esm/operators/expression/string/index.js new file mode 100644 index 0000000..aa1b5b0 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/index.js @@ -0,0 +1,19 @@ +export * from "./concat"; +export * from "./indexOfBytes"; +export * from "./ltrim"; +export * from "./regexFind"; +export * from "./regexFindAll"; +export * from "./regexMatch"; +export * from "./replaceAll"; +export * from "./replaceOne"; +export * from "./rtrim"; +export * from "./split"; +export * from "./strcasecmp"; +export * from "./strLenBytes"; +export * from "./strLenCP"; +export * from "./substr"; +export * from "./substrBytes"; +export * from "./substrCP"; +export * from "./toLower"; +export * from "./toUpper"; +export * from "./trim"; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/indexOfBytes.js b/node_modules/mingo/dist/esm/operators/expression/string/indexOfBytes.js new file mode 100644 index 0000000..fc77d47 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/indexOfBytes.js @@ -0,0 +1,23 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isNumber, isString } from "../../../util"; +const $indexOfBytes = (obj, expr, options) => { + const arr = computeValue(obj, expr, null, options); + const errorMsg = "$indexOfBytes expression resolves to invalid an argument"; + if (isNil(arr[0])) return null; + assert(isString(arr[0]) && isString(arr[1]), errorMsg); + const str = arr[0]; + const searchStr = arr[1]; + let start = arr[2]; + let end = arr[3]; + let valid = isNil(start) || isNumber(start) && start >= 0 && Math.round(start) === start; + valid = valid && (isNil(end) || isNumber(end) && end >= 0 && Math.round(end) === end); + assert(valid, errorMsg); + start = start || 0; + end = end || str.length; + if (start > end) return -1; + const index = str.substring(start, end).indexOf(searchStr); + return index > -1 ? index + start : index; +}; +export { + $indexOfBytes +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/ltrim.js b/node_modules/mingo/dist/esm/operators/expression/string/ltrim.js new file mode 100644 index 0000000..95b017f --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/ltrim.js @@ -0,0 +1,7 @@ +import { trimString } from "./_internal"; +const $ltrim = (obj, expr, options) => { + return trimString(obj, expr, options, { left: true, right: false }); +}; +export { + $ltrim +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/regexFind.js b/node_modules/mingo/dist/esm/operators/expression/string/regexFind.js new file mode 100644 index 0000000..6b6bdcd --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/regexFind.js @@ -0,0 +1,8 @@ +import { regexSearch } from "./_internal"; +const $regexFind = (obj, expr, options) => { + const result = regexSearch(obj, expr, options, { global: false }); + return result && result.length > 0 ? result[0] : null; +}; +export { + $regexFind +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/regexFindAll.js b/node_modules/mingo/dist/esm/operators/expression/string/regexFindAll.js new file mode 100644 index 0000000..570b0a9 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/regexFindAll.js @@ -0,0 +1,7 @@ +import { regexSearch } from "./_internal"; +const $regexFindAll = (obj, expr, options) => { + return regexSearch(obj, expr, options, { global: true }); +}; +export { + $regexFindAll +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/regexMatch.js b/node_modules/mingo/dist/esm/operators/expression/string/regexMatch.js new file mode 100644 index 0000000..39a92aa --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/regexMatch.js @@ -0,0 +1,7 @@ +import { regexSearch } from "./_internal"; +const $regexMatch = (obj, expr, options) => { + return regexSearch(obj, expr, options, { global: false }).length != 0; +}; +export { + $regexMatch +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/replaceAll.js b/node_modules/mingo/dist/esm/operators/expression/string/replaceAll.js new file mode 100644 index 0000000..ddc2ca8 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/replaceAll.js @@ -0,0 +1,15 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isString } from "../../../util"; +const $replaceAll = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + const arr = [args.input, args.find, args.replacement]; + if (arr.some(isNil)) return null; + assert( + arr.every(isString), + "$replaceAll expression fields must evaluate to string" + ); + return args.input.replace(new RegExp(args.find, "g"), args.replacement); +}; +export { + $replaceAll +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/replaceOne.js b/node_modules/mingo/dist/esm/operators/expression/string/replaceOne.js new file mode 100644 index 0000000..fa47e8f --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/replaceOne.js @@ -0,0 +1,15 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isString } from "../../../util"; +const $replaceOne = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + const arr = [args.input, args.find, args.replacement]; + if (arr.some(isNil)) return null; + assert( + arr.every(isString), + "$replaceOne expression fields must evaluate to string" + ); + return args.input.replace(args.find, args.replacement); +}; +export { + $replaceOne +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/rtrim.js b/node_modules/mingo/dist/esm/operators/expression/string/rtrim.js new file mode 100644 index 0000000..54b9277 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/rtrim.js @@ -0,0 +1,7 @@ +import { trimString } from "./_internal"; +const $rtrim = (obj, expr, options) => { + return trimString(obj, expr, options, { left: false, right: true }); +}; +export { + $rtrim +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/split.js b/node_modules/mingo/dist/esm/operators/expression/string/split.js new file mode 100644 index 0000000..3fa0e52 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/split.js @@ -0,0 +1,14 @@ +import { computeValue } from "../../../core"; +import { assert, isNil, isString } from "../../../util"; +const $split = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + if (isNil(args[0])) return null; + assert( + args.every(isString), + "$split expression must result to array(2) of strings" + ); + return args[0].split(args[1]); +}; +export { + $split +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/strLenBytes.js b/node_modules/mingo/dist/esm/operators/expression/string/strLenBytes.js new file mode 100644 index 0000000..915b46c --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/strLenBytes.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../../core"; +const $strLenBytes = (obj, expr, options) => { + return ~-encodeURI(computeValue(obj, expr, null, options)).split( + /%..|./ + ).length; +}; +export { + $strLenBytes +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/strLenCP.js b/node_modules/mingo/dist/esm/operators/expression/string/strLenCP.js new file mode 100644 index 0000000..1fb7b2d --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/strLenCP.js @@ -0,0 +1,7 @@ +import { computeValue } from "../../../core"; +const $strLenCP = (obj, expr, options) => { + return computeValue(obj, expr, null, options).length; +}; +export { + $strLenCP +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/strcasecmp.js b/node_modules/mingo/dist/esm/operators/expression/string/strcasecmp.js new file mode 100644 index 0000000..37b2964 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/strcasecmp.js @@ -0,0 +1,18 @@ +import { computeValue } from "../../../core"; +import { assert, isEqual, isNil, isString } from "../../../util"; +const $strcasecmp = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + let a = args[0]; + let b = args[1]; + if (isEqual(a, b) || args.every(isNil)) return 0; + assert( + args.every(isString), + "$strcasecmp must resolve to array(2) of strings" + ); + a = a.toUpperCase(); + b = b.toUpperCase(); + return a > b && 1 || a < b && -1 || 0; +}; +export { + $strcasecmp +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/substr.js b/node_modules/mingo/dist/esm/operators/expression/string/substr.js new file mode 100644 index 0000000..94a7a27 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/substr.js @@ -0,0 +1,11 @@ +import { computeValue } from "../../../core"; +import { isString } from "../../../util"; +const $substr = (obj, expr, options) => { + const [s, start, count] = computeValue(obj, expr, null, options); + if (start < 0 || !isString(s)) return ""; + if (count < 0) return s.substring(start); + return s.substring(start, start + count); +}; +export { + $substr +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/substrBytes.js b/node_modules/mingo/dist/esm/operators/expression/string/substrBytes.js new file mode 100644 index 0000000..ee97b1b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/substrBytes.js @@ -0,0 +1,45 @@ +import { computeValue } from "../../../core"; +import { assert, isNumber, isString } from "../../../util"; +const UTF8_MASK = [192, 224, 240]; +function toUtf8(n) { + if (n < 128) return [n]; + let count = n < 2048 && 1 || n < 65536 && 2 || 3; + const offset = UTF8_MASK[count - 1]; + const utf8 = [(n >> 6 * count) + offset]; + while (count > 0) utf8.push(128 | n >> 6 * --count & 63); + return utf8; +} +function utf8Encode(s) { + const buf = []; + for (let i = 0, len = s.length; i < len; i++) { + buf.push(toUtf8(s.codePointAt(i))); + } + return buf; +} +const $substrBytes = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + const s = args[0]; + const index = args[1]; + const count = args[2]; + assert( + isString(s) && isNumber(index) && index >= 0 && isNumber(count) && count >= 0, + "$substrBytes: invalid arguments" + ); + const buf = utf8Encode(s); + const validIndex = []; + let acc = 0; + for (let i = 0; i < buf.length; i++) { + validIndex.push(acc); + acc += buf[i].length; + } + const begin = validIndex.indexOf(index); + const end = validIndex.indexOf(index + count); + assert( + begin > -1 && end > -1, + "$substrBytes: invalid range, start or end index is a UTF-8 continuation byte." + ); + return s.substring(begin, end); +}; +export { + $substrBytes +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/substrCP.js b/node_modules/mingo/dist/esm/operators/expression/string/substrCP.js new file mode 100644 index 0000000..78eb892 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/substrCP.js @@ -0,0 +1,7 @@ +import { $substr } from "./substr"; +const $substrCP = (obj, expr, options) => { + return $substr(obj, expr, options); +}; +export { + $substrCP +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/toLower.js b/node_modules/mingo/dist/esm/operators/expression/string/toLower.js new file mode 100644 index 0000000..d69afa8 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/toLower.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../../core"; +import { isEmpty } from "../../../util"; +const $toLower = (obj, expr, options) => { + const value = computeValue(obj, expr, null, options); + return isEmpty(value) ? "" : value.toLowerCase(); +}; +export { + $toLower +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/toUpper.js b/node_modules/mingo/dist/esm/operators/expression/string/toUpper.js new file mode 100644 index 0000000..d78fc8a --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/toUpper.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../../core"; +import { isEmpty } from "../../../util"; +const $toUpper = (obj, expr, options) => { + const value = computeValue(obj, expr, null, options); + return isEmpty(value) ? "" : value.toUpperCase(); +}; +export { + $toUpper +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/string/trim.js b/node_modules/mingo/dist/esm/operators/expression/string/trim.js new file mode 100644 index 0000000..b0a3d19 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/string/trim.js @@ -0,0 +1,7 @@ +import { trimString } from "./_internal"; +const $trim = (obj, expr, options) => { + return trimString(obj, expr, options, { left: true, right: true }); +}; +export { + $trim +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/_internal.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/_internal.js new file mode 100644 index 0000000..d3ad556 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/_internal.js @@ -0,0 +1,29 @@ +import { computeValue } from "../../../core"; +import { MingoError } from "../../../util"; +const FIXED_POINTS = { + undefined: null, + null: null, + NaN: NaN, + Infinity: new Error(), + "-Infinity": new Error() +}; +function createTrignometryOperator(f, fixedPoints = FIXED_POINTS) { + const fp = Object.assign({}, FIXED_POINTS, fixedPoints); + const keySet = new Set(Object.keys(fp)); + return (obj, expr, options) => { + const n = computeValue(obj, expr, null, options); + if (keySet.has(`${n}`)) { + const res = fp[`${n}`]; + if (res instanceof Error) { + throw new MingoError( + `cannot apply $${f.name} to -inf, value must in (-inf,inf)` + ); + } + return res; + } + return f(n); + }; +} +export { + createTrignometryOperator +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/acos.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/acos.js new file mode 100644 index 0000000..af2ee64 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/acos.js @@ -0,0 +1,8 @@ +import { createTrignometryOperator } from "./_internal"; +const $acos = createTrignometryOperator(Math.acos, { + Infinity: Infinity, + 0: new Error() +}); +export { + $acos +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/acosh.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/acosh.js new file mode 100644 index 0000000..4dc6e1d --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/acosh.js @@ -0,0 +1,8 @@ +import { createTrignometryOperator } from "./_internal"; +const $acosh = createTrignometryOperator(Math.acosh, { + Infinity: Infinity, + 0: new Error() +}); +export { + $acosh +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/asin.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/asin.js new file mode 100644 index 0000000..5f6f267 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/asin.js @@ -0,0 +1,5 @@ +import { createTrignometryOperator } from "./_internal"; +const $asin = createTrignometryOperator(Math.asin); +export { + $asin +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/asinh.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/asinh.js new file mode 100644 index 0000000..adf8af1 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/asinh.js @@ -0,0 +1,8 @@ +import { createTrignometryOperator } from "./_internal"; +const $asinh = createTrignometryOperator(Math.asinh, { + Infinity: Infinity, + "-Infinity": -Infinity +}); +export { + $asinh +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/atan.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/atan.js new file mode 100644 index 0000000..69bc941 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/atan.js @@ -0,0 +1,5 @@ +import { createTrignometryOperator } from "./_internal"; +const $atan = createTrignometryOperator(Math.atan); +export { + $atan +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/atan2.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/atan2.js new file mode 100644 index 0000000..7081034 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/atan2.js @@ -0,0 +1,11 @@ +import { computeValue } from "../../../core"; +import { isNil } from "../../../util"; +const $atan2 = (obj, expr, options) => { + const [y, x] = computeValue(obj, expr, null, options); + if (isNaN(y) || isNil(y)) return y; + if (isNaN(x) || isNil(x)) return x; + return Math.atan2(y, x); +}; +export { + $atan2 +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/atanh.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/atanh.js new file mode 100644 index 0000000..e8fc5f4 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/atanh.js @@ -0,0 +1,8 @@ +import { createTrignometryOperator } from "./_internal"; +const $atanh = createTrignometryOperator(Math.atanh, { + 1: Infinity, + "-1": -Infinity +}); +export { + $atanh +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/cos.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/cos.js new file mode 100644 index 0000000..22e1a4b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/cos.js @@ -0,0 +1,5 @@ +import { createTrignometryOperator } from "./_internal"; +const $cos = createTrignometryOperator(Math.cos); +export { + $cos +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/cosh.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/cosh.js new file mode 100644 index 0000000..9d69288 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/cosh.js @@ -0,0 +1,8 @@ +import { createTrignometryOperator } from "./_internal"; +const $cosh = createTrignometryOperator(Math.cosh, { + "-Infinity": Infinity, + Infinity: Infinity +}); +export { + $cosh +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/degreesToRadians.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/degreesToRadians.js new file mode 100644 index 0000000..e4d3c5f --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/degreesToRadians.js @@ -0,0 +1,12 @@ +import { createTrignometryOperator } from "./_internal"; +const RADIANS_FACTOR = Math.PI / 180; +const $degreesToRadians = createTrignometryOperator( + (n) => n * RADIANS_FACTOR, + { + Infinity: Infinity, + "-Infinity": Infinity + } +); +export { + $degreesToRadians +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/index.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/index.js new file mode 100644 index 0000000..5866fff --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/index.js @@ -0,0 +1,14 @@ +export * from "./acos"; +export * from "./acosh"; +export * from "./asin"; +export * from "./asinh"; +export * from "./atan"; +export * from "./atan2"; +export * from "./atanh"; +export * from "./cos"; +export * from "./cosh"; +export * from "./degreesToRadians"; +export * from "./radiansToDegrees"; +export * from "./sin"; +export * from "./sinh"; +export * from "./tan"; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/radiansToDegrees.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/radiansToDegrees.js new file mode 100644 index 0000000..265a91e --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/radiansToDegrees.js @@ -0,0 +1,12 @@ +import { createTrignometryOperator } from "./_internal"; +const DEGREES_FACTOR = 180 / Math.PI; +const $radiansToDegrees = createTrignometryOperator( + (n) => n * DEGREES_FACTOR, + { + Infinity: Infinity, + "-Infinity": -Infinity + } +); +export { + $radiansToDegrees +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/sin.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/sin.js new file mode 100644 index 0000000..1150ce8 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/sin.js @@ -0,0 +1,5 @@ +import { createTrignometryOperator } from "./_internal"; +const $sin = createTrignometryOperator(Math.sin); +export { + $sin +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/sinh.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/sinh.js new file mode 100644 index 0000000..0ded0e2 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/sinh.js @@ -0,0 +1,8 @@ +import { createTrignometryOperator } from "./_internal"; +const $sinh = createTrignometryOperator(Math.sinh, { + "-Infinity": -Infinity, + Infinity: Infinity +}); +export { + $sinh +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/trignometry/tan.js b/node_modules/mingo/dist/esm/operators/expression/trignometry/tan.js new file mode 100644 index 0000000..d641589 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/trignometry/tan.js @@ -0,0 +1,5 @@ +import { createTrignometryOperator } from "./_internal"; +const $tan = createTrignometryOperator(Math.tan); +export { + $tan +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/type/_internal.js b/node_modules/mingo/dist/esm/operators/expression/type/_internal.js new file mode 100644 index 0000000..e4e2fbc --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/type/_internal.js @@ -0,0 +1,35 @@ +import { computeValue } from "../../../core"; +import { isDate, isNil, isNumber, isString } from "../../../util"; +const MAX_INT = 2147483647; +const MIN_INT = -2147483648; +const MAX_LONG = Number.MAX_SAFE_INTEGER; +const MIN_LONG = Number.MIN_SAFE_INTEGER; +class TypeConvertError extends Error { + constructor(message) { + super(message); + } +} +function toInteger(obj, expr, options, min, max) { + const val = computeValue(obj, expr, null, options); + if (val === true) return 1; + if (val === false) return 0; + if (isNil(val)) return null; + if (isDate(val)) return val.getTime(); + const n = Number(val); + if (isNumber(n) && n >= min && n <= max) { + if (!isString(val) || n.toString().indexOf(".") === -1) { + return Math.trunc(n); + } + } + throw new TypeConvertError( + `cannot convert '${val}' to ${max == MAX_INT ? "int" : "long"}` + ); +} +export { + MAX_INT, + MAX_LONG, + MIN_INT, + MIN_LONG, + TypeConvertError, + toInteger +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/type/convert.js b/node_modules/mingo/dist/esm/operators/expression/type/convert.js new file mode 100644 index 0000000..b3c7a0e --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/type/convert.js @@ -0,0 +1,46 @@ +import { computeValue } from "../../../core"; +import { isNil } from "../../../util"; +import { TypeConvertError } from "./_internal"; +import { $toBool } from "./toBool"; +import { $toDate } from "./toDate"; +import { $toDouble } from "./toDouble"; +import { $toInt } from "./toInt"; +import { $toLong } from "./toLong"; +import { $toString } from "./toString"; +const $convert = (obj, expr, options) => { + const args = computeValue(obj, expr, null, options); + args.onNull = args.onNull === void 0 ? null : args.onNull; + if (isNil(args.input)) return args.onNull; + try { + switch (args.to) { + case 2: + case "string": + return $toString(obj, args.input, options); + case 8: + case "boolean": + case "bool": + return $toBool(obj, args.input, options); + case 9: + case "date": + return $toDate(obj, args.input, options); + case 1: + case 19: + case "double": + case "decimal": + case "number": + return $toDouble(obj, args.input, options); + case 16: + case "int": + return $toInt(obj, args.input, options); + case 18: + case "long": + return $toLong(obj, args.input, options); + } + } catch { + } + if (args.onError !== void 0) return args.onError; + throw new TypeConvertError(`could not convert to type ${args.to}.`); +}; +export { + $convert +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/type/index.js b/node_modules/mingo/dist/esm/operators/expression/type/index.js new file mode 100644 index 0000000..f948e3c --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/type/index.js @@ -0,0 +1,10 @@ +export * from "./convert"; +export * from "./isNumber"; +export * from "./toBool"; +export * from "./toDate"; +export * from "./toDecimal"; +export * from "./toDouble"; +export * from "./toInt"; +export * from "./toLong"; +export * from "./toString"; +export * from "./type"; diff --git a/node_modules/mingo/dist/esm/operators/expression/type/isNumber.js b/node_modules/mingo/dist/esm/operators/expression/type/isNumber.js new file mode 100644 index 0000000..c8f390d --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/type/isNumber.js @@ -0,0 +1,9 @@ +import { computeValue } from "../../../core"; +import { isNumber } from "../../../util"; +const $isNumber = (obj, expr, options) => { + const n = computeValue(obj, expr, null, options); + return isNumber(n); +}; +export { + $isNumber +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/type/toBool.js b/node_modules/mingo/dist/esm/operators/expression/type/toBool.js new file mode 100644 index 0000000..3aa4b31 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/type/toBool.js @@ -0,0 +1,11 @@ +import { computeValue } from "../../../core"; +import { isNil, isString } from "../../../util"; +const $toBool = (obj, expr, options) => { + const val = computeValue(obj, expr, null, options); + if (isNil(val)) return null; + if (isString(val)) return true; + return Boolean(val); +}; +export { + $toBool +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/type/toDate.js b/node_modules/mingo/dist/esm/operators/expression/type/toDate.js new file mode 100644 index 0000000..2cdadee --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/type/toDate.js @@ -0,0 +1,15 @@ +import { computeValue } from "../../../core"; +import { isDate, isNil } from "../../../util"; +import { TypeConvertError } from "./_internal"; +const $toDate = (obj, expr, options) => { + const val = computeValue(obj, expr, null, options); + if (isDate(val)) return val; + if (isNil(val)) return null; + const d = new Date(val); + const n = d.getTime(); + if (!isNaN(n)) return d; + throw new TypeConvertError(`cannot convert '${val}' to date`); +}; +export { + $toDate +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/type/toDecimal.js b/node_modules/mingo/dist/esm/operators/expression/type/toDecimal.js new file mode 100644 index 0000000..813ed7f --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/type/toDecimal.js @@ -0,0 +1,5 @@ +import { $toDouble } from "./toDouble"; +const $toDecimal = $toDouble; +export { + $toDecimal +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/type/toDouble.js b/node_modules/mingo/dist/esm/operators/expression/type/toDouble.js new file mode 100644 index 0000000..be408ef --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/type/toDouble.js @@ -0,0 +1,16 @@ +import { computeValue } from "../../../core"; +import { isDate, isNil, isNumber } from "../../../util"; +import { TypeConvertError } from "./_internal"; +const $toDouble = (obj, expr, options) => { + const val = computeValue(obj, expr, null, options); + if (isNil(val)) return null; + if (isDate(val)) return val.getTime(); + if (val === true) return 1; + if (val === false) return 0; + const n = Number(val); + if (isNumber(n)) return n; + throw new TypeConvertError(`cannot convert '${val}' to double/decimal`); +}; +export { + $toDouble +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/type/toInt.js b/node_modules/mingo/dist/esm/operators/expression/type/toInt.js new file mode 100644 index 0000000..2004cb3 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/type/toInt.js @@ -0,0 +1,5 @@ +import { MAX_INT, MIN_INT, toInteger } from "./_internal"; +const $toInt = (obj, expr, options) => toInteger(obj, expr, options, MIN_INT, MAX_INT); +export { + $toInt +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/type/toLong.js b/node_modules/mingo/dist/esm/operators/expression/type/toLong.js new file mode 100644 index 0000000..beb1340 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/type/toLong.js @@ -0,0 +1,5 @@ +import { MAX_LONG, MIN_LONG, toInteger } from "./_internal"; +const $toLong = (obj, expr, options) => toInteger(obj, expr, options, MIN_LONG, MAX_LONG); +export { + $toLong +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/type/toString.js b/node_modules/mingo/dist/esm/operators/expression/type/toString.js new file mode 100644 index 0000000..a71c7e8 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/type/toString.js @@ -0,0 +1,21 @@ +import { computeValue } from "../../../core"; +import { isDate, isNil } from "../../../util"; +import { $dateToString } from "../date/dateToString"; +const $toString = (obj, expr, options) => { + const val = computeValue(obj, expr, null, options); + if (isNil(val)) return null; + if (isDate(val)) { + return $dateToString( + obj, + { + date: expr, + format: "%Y-%m-%dT%H:%M:%S.%LZ" + }, + options + ); + } + return val.toString(); +}; +export { + $toString +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/type/type.js b/node_modules/mingo/dist/esm/operators/expression/type/type.js new file mode 100644 index 0000000..daf32b1 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/type/type.js @@ -0,0 +1,19 @@ +import { computeValue } from "../../../core"; +import { isNumber, isRegExp, typeOf } from "../../../util"; +import { MAX_INT, MIN_INT } from "./_internal"; +const $type = (obj, expr, options) => { + const v = computeValue(obj, expr, null, options); + if (options.useStrictMode) { + if (v === void 0) return "missing"; + if (v === true || v === false) return "bool"; + if (isNumber(v)) { + if (v % 1 != 0) return "double"; + return v >= MIN_INT && v <= MAX_INT ? "int" : "long"; + } + if (isRegExp(v)) return "regex"; + } + return typeOf(v); +}; +export { + $type +}; diff --git a/node_modules/mingo/dist/esm/operators/expression/variable/index.js b/node_modules/mingo/dist/esm/operators/expression/variable/index.js new file mode 100644 index 0000000..5931ab2 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/variable/index.js @@ -0,0 +1 @@ +export * from "./let"; diff --git a/node_modules/mingo/dist/esm/operators/expression/variable/let.js b/node_modules/mingo/dist/esm/operators/expression/variable/let.js new file mode 100644 index 0000000..2389f85 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/expression/variable/let.js @@ -0,0 +1,19 @@ +import { + ComputeOptions, + computeValue +} from "../../../core"; +const $let = (obj, expr, options) => { + const variables = {}; + for (const [key, val] of Object.entries(expr.vars)) { + variables[key] = computeValue(obj, val, null, options); + } + return computeValue( + obj, + expr.in, + null, + ComputeOptions.init(options, obj, { variables }) + ); +}; +export { + $let +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/_internal.js b/node_modules/mingo/dist/esm/operators/pipeline/_internal.js new file mode 100644 index 0000000..220a99c --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/_internal.js @@ -0,0 +1,7 @@ +const isUnbounded = (window) => { + const boundary = window?.documents || window?.range; + return !boundary || boundary[0] === "unbounded" && boundary[1] === "unbounded"; +}; +export { + isUnbounded +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/addFields.js b/node_modules/mingo/dist/esm/operators/pipeline/addFields.js new file mode 100644 index 0000000..13f9d34 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/addFields.js @@ -0,0 +1,21 @@ +import { computeValue } from "../../core"; +import { removeValue, setValue } from "../../util"; +const $addFields = (collection, expr, options) => { + const newFields = Object.keys(expr); + if (newFields.length === 0) return collection; + return collection.map((obj) => { + const newObj = { ...obj }; + for (const field of newFields) { + const newValue = computeValue(obj, expr[field], null, options); + if (newValue !== void 0) { + setValue(newObj, field, newValue); + } else { + removeValue(newObj, field); + } + } + return newObj; + }); +}; +export { + $addFields +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/bucket.js b/node_modules/mingo/dist/esm/operators/pipeline/bucket.js new file mode 100644 index 0000000..740529a --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/bucket.js @@ -0,0 +1,74 @@ +import { computeValue } from "../../core"; +import { Lazy } from "../../lazy"; +import { assert, compare, findInsertIndex, isNil, typeOf } from "../../util"; +const $bucket = (collection, expr, options) => { + const bounds = [...expr.boundaries]; + const defaultKey = expr.default; + const lower = bounds[0]; + const upper = bounds[bounds.length - 1]; + const outputExpr = expr.output || { count: { $sum: 1 } }; + assert(bounds.length > 1, "$bucket must specify at least two boundaries."); + const isValid = bounds.every( + (v, i) => i === 0 || typeOf(v) === typeOf(bounds[i - 1]) && compare(v, bounds[i - 1]) > 0 + ); + assert( + isValid, + `$bucket: bounds must be of same type and in ascending order` + ); + if (!isNil(defaultKey) && typeOf(defaultKey) === typeOf(lower)) { + assert( + compare(defaultKey, upper) >= 0 || compare(defaultKey, lower) < 0, + "$bucket 'default' expression must be out of boundaries range" + ); + } + const createBuckets = () => { + const buckets = /* @__PURE__ */ new Map(); + for (let i = 0; i < bounds.length - 1; i++) { + buckets.set(bounds[i], []); + } + if (!isNil(defaultKey)) buckets.set(defaultKey, []); + collection.each((obj) => { + const key = computeValue(obj, expr.groupBy, null, options); + if (isNil(key) || compare(key, lower) < 0 || compare(key, upper) >= 0) { + assert( + !isNil(defaultKey), + "$bucket require a default for out of range values" + ); + buckets.get(defaultKey).push(obj); + } else { + assert( + compare(key, lower) >= 0 && compare(key, upper) < 0, + "$bucket 'groupBy' expression must resolve to a value in range of boundaries" + ); + const index = findInsertIndex(bounds, key); + const boundKey = bounds[Math.max(0, index - 1)]; + buckets.get(boundKey).push(obj); + } + }); + bounds.pop(); + if (!isNil(defaultKey)) bounds.push(defaultKey); + assert( + buckets.size === bounds.length, + "bounds and groups must be of equal size." + ); + return Lazy(bounds).map((key) => { + return { + ...computeValue( + buckets.get(key), + outputExpr, + null, + options + ), + _id: key + }; + }); + }; + let iterator; + return Lazy(() => { + if (!iterator) iterator = createBuckets(); + return iterator.next(); + }); +}; +export { + $bucket +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/bucketAuto.js b/node_modules/mingo/dist/esm/operators/pipeline/bucketAuto.js new file mode 100644 index 0000000..b5ce5b0 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/bucketAuto.js @@ -0,0 +1,692 @@ +import { computeValue } from "../../core"; +import { Lazy } from "../../lazy"; +import { + assert, + compare, + findInsertIndex, + isArray, + isEqual, + isNil, + isNumber +} from "../../util"; +const $bucketAuto = (collection, expr, options) => { + const { + buckets: bucketCount, + groupBy: groupByExpr, + output: optOutputExpr, + // Available only if the all groupBy values are numeric and none of them are NaN. + granularity + } = expr; + const outputExpr = optOutputExpr ?? { count: { $sum: 1 } }; + assert( + bucketCount > 0, + `$bucketAuto: 'buckets' field must be greater than 0, but found: ${bucketCount}` + ); + if (granularity) { + assert( + /^(POWERSOF2|1-2-5|E(6|12|24|48|96|192)|R(5|10|20|40|80))$/.test( + granularity + ), + `$bucketAuto: invalid granularity '${granularity}'.` + ); + } + const keyMap = /* @__PURE__ */ new Map(); + const setKey = !granularity ? (o, k) => keyMap.set(o, k) : (_, _2) => { + }; + const sorted = collection.map((o) => { + const k = computeValue(o, groupByExpr, null, options) ?? null; + assert( + !granularity || isNumber(k), + "$bucketAuto: groupBy values must be numeric when granularity is specified." + ); + setKey(o, k ?? null); + return [k ?? null, o]; + }).value(); + sorted.sort((x, y) => { + if (isNil(x[0])) return -1; + if (isNil(y[0])) return 1; + return compare(x[0], y[0]); + }); + let getNext; + if (!granularity) { + getNext = granularityDefault(sorted, bucketCount, keyMap); + } else if (granularity == "POWERSOF2") { + getNext = granularityPowerOfTwo( + sorted, + bucketCount + ); + } else { + getNext = granularityPreferredSeries( + sorted, + bucketCount, + granularity + ); + } + let terminate = false; + return Lazy(() => { + if (terminate) return { done: true }; + const { min, max, bucket, done } = getNext(); + terminate = done; + const outFields = computeValue( + bucket, + outputExpr, + null, + options + ); + for (const [k, v] of Object.entries(outFields)) { + if (isArray(v)) outFields[k] = v.filter((v2) => v2 !== void 0); + } + return { + done: false, + value: { + ...outFields, + _id: { min, max } + } + }; + }); +}; +function granularityDefault(sorted, bucketCount, keyMap) { + const size = sorted.length; + const approxBucketSize = Math.max(1, Math.round(sorted.length / bucketCount)); + let index = 0; + let nBuckets = 0; + return () => { + const isLastBucket = ++nBuckets == bucketCount; + const bucket = new Array(); + while (index < size && (isLastBucket || bucket.length < approxBucketSize || index > 0 && isEqual(sorted[index - 1][0], sorted[index][0]))) { + bucket.push(sorted[index++][1]); + } + const min = keyMap.get(bucket[0]); + let max; + if (index < size) { + max = sorted[index][0]; + } else { + max = keyMap.get(bucket[bucket.length - 1]); + } + assert( + isNil(max) || isNil(min) || min <= max, + `error: $bucketAuto boundary must be in order.` + ); + return { + min, + max, + bucket, + done: index >= size + }; + }; +} +function granularityPowerOfTwo(sorted, bucketCount) { + const size = sorted.length; + const approxBucketSize = Math.max(1, Math.round(sorted.length / bucketCount)); + const roundUp2 = (n) => n === 0 ? 0 : 2 ** (Math.floor(Math.log2(n)) + 1); + let index = 0; + let min = 0; + let max = 0; + return () => { + const bucket = new Array(); + const boundValue = roundUp2(max); + min = index > 0 ? max : 0; + while (bucket.length < approxBucketSize && index < size && (max === 0 || sorted[index][0] < boundValue)) { + bucket.push(sorted[index++][1]); + } + max = max == 0 ? roundUp2(sorted[index - 1][0]) : boundValue; + while (index < size && sorted[index][0] < max) { + bucket.push(sorted[index++][1]); + } + return { + min, + max, + bucket, + done: index >= size + }; + }; +} +const PREFERRED_NUMBERS = Object.freeze({ + // "Least rounded" Renard number series, taken from Wikipedia page on preferred + // numbers: https://en.wikipedia.org/wiki/Preferred_number#Renard_numbers + R5: [10, 16, 25, 40, 63], + R10: [100, 125, 160, 200, 250, 315, 400, 500, 630, 800], + R20: [ + 100, + 112, + 125, + 140, + 160, + 180, + 200, + 224, + 250, + 280, + 315, + 355, + 400, + 450, + 500, + 560, + 630, + 710, + 800, + 900 + ], + R40: [ + 100, + 106, + 112, + 118, + 125, + 132, + 140, + 150, + 160, + 170, + 180, + 190, + 200, + 212, + 224, + 236, + 250, + 265, + 280, + 300, + 315, + 355, + 375, + 400, + 425, + 450, + 475, + 500, + 530, + 560, + 600, + 630, + 670, + 710, + 750, + 800, + 850, + 900, + 950 + ], + R80: [ + 103, + 109, + 115, + 122, + 128, + 136, + 145, + 155, + 165, + 175, + 185, + 195, + 206, + 218, + 230, + 243, + 258, + 272, + 290, + 307, + 325, + 345, + 365, + 387, + 412, + 437, + 462, + 487, + 515, + 545, + 575, + 615, + 650, + 690, + 730, + 775, + 825, + 875, + 925, + 975 + ], + // https://en.wikipedia.org/wiki/Preferred_number#1-2-5_series + "1-2-5": [10, 20, 50], + // E series, taken from Wikipedia page on preferred numbers: + // https://en.wikipedia.org/wiki/Preferred_number#E_series + E6: [10, 15, 22, 33, 47, 68], + E12: [10, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68, 82], + E24: [ + 10, + 11, + 12, + 13, + 15, + 16, + 18, + 20, + 22, + 24, + 27, + 30, + 33, + 36, + 39, + 43, + 47, + 51, + 56, + 62, + 68, + 75, + 82, + 91 + ], + E48: [ + 100, + 105, + 110, + 115, + 121, + 127, + 133, + 140, + 147, + 154, + 162, + 169, + 178, + 187, + 196, + 205, + 215, + 226, + 237, + 249, + 261, + 274, + 287, + 301, + 316, + 332, + 348, + 365, + 383, + 402, + 422, + 442, + 464, + 487, + 511, + 536, + 562, + 590, + 619, + 649, + 681, + 715, + 750, + 787, + 825, + 866, + 909, + 953 + ], + E96: [ + 100, + 102, + 105, + 107, + 110, + 113, + 115, + 118, + 121, + 124, + 127, + 130, + 133, + 137, + 140, + 143, + 147, + 150, + 154, + 158, + 162, + 165, + 169, + 174, + 178, + 182, + 187, + 191, + 196, + 200, + 205, + 210, + 215, + 221, + 226, + 232, + 237, + 243, + 249, + 255, + 261, + 267, + 274, + 280, + 287, + 294, + 301, + 309, + 316, + 324, + 332, + 340, + 348, + 357, + 365, + 374, + 383, + 392, + 402, + 412, + 422, + 432, + 442, + 453, + 464, + 475, + 487, + 499, + 511, + 523, + 536, + 549, + 562, + 576, + 590, + 604, + 619, + 634, + 649, + 665, + 681, + 698, + 715, + 732, + 750, + 768, + 787, + 806, + 825, + 845, + 866, + 887, + 909, + 931, + 953, + 976 + ], + E192: [ + 100, + 101, + 102, + 104, + 105, + 106, + 107, + 109, + 110, + 111, + 113, + 114, + 115, + 117, + 118, + 120, + 121, + 123, + 124, + 126, + 127, + 129, + 130, + 132, + 133, + 135, + 137, + 138, + 140, + 142, + 143, + 145, + 147, + 149, + 150, + 152, + 154, + 156, + 158, + 160, + 162, + 164, + 165, + 167, + 169, + 172, + 174, + 176, + 178, + 180, + 182, + 184, + 187, + 189, + 191, + 193, + 196, + 198, + 200, + 203, + 205, + 208, + 210, + 213, + 215, + 218, + 221, + 223, + 226, + 229, + 232, + 234, + 237, + 240, + 243, + 246, + 249, + 252, + 255, + 258, + 261, + 264, + 267, + 271, + 274, + 277, + 280, + 284, + 287, + 291, + 294, + 298, + 301, + 305, + 309, + 312, + 316, + 320, + 324, + 328, + 332, + 336, + 340, + 344, + 348, + 352, + 357, + 361, + 365, + 370, + 374, + 379, + 383, + 388, + 392, + 397, + 402, + 407, + 412, + 417, + 422, + 427, + 432, + 437, + 442, + 448, + 453, + 459, + 464, + 470, + 475, + 481, + 487, + 493, + 499, + 505, + 511, + 517, + 523, + 530, + 536, + 542, + 549, + 556, + 562, + 569, + 576, + 583, + 590, + 597, + 604, + 612, + 619, + 626, + 634, + 642, + 649, + 657, + 665, + 673, + 681, + 690, + 698, + 706, + 715, + 723, + 732, + 741, + 750, + 759, + 768, + 777, + 787, + 796, + 806, + 816, + 825, + 835, + 845, + 856, + 866, + 876, + 887, + 898, + 909, + 920, + 931, + 942, + 953, + 965, + 976, + 988 + ] +}); +const roundUp = (n, granularity) => { + if (n == 0) return 0; + const series = PREFERRED_NUMBERS[granularity]; + const first = series[0]; + const last = series[series.length - 1]; + let multiplier = 1; + while (n >= last * multiplier) { + multiplier *= 10; + } + let previousMin = 0; + while (n < first * multiplier) { + previousMin = first * multiplier; + multiplier /= 10; + if (n >= last * multiplier) { + return previousMin; + } + } + assert( + n >= first * multiplier && n < last * multiplier, + "$bucketAuto: number out of range of series." + ); + const i = findInsertIndex(series, n, (a, b) => { + b *= multiplier; + if (a < b) return -1; + if (a > b) return 1; + return 0; + }); + const seriesNumber = series[i] * multiplier; + return n == seriesNumber ? series[i + 1] * multiplier : seriesNumber; +}; +function granularityPreferredSeries(sorted, bucketCount, granularity) { + const size = sorted.length; + const approxBucketSize = Math.max(1, Math.round(sorted.length / bucketCount)); + let index = 0; + let nBuckets = 0; + let min = 0; + let max = 0; + return () => { + const isLastBucket = ++nBuckets == bucketCount; + const bucket = new Array(); + min = index > 0 ? max : 0; + while (index < size && (isLastBucket || bucket.length < approxBucketSize)) { + bucket.push(sorted[index++][1]); + } + max = roundUp(sorted[index - 1][0], granularity); + const nItems = bucket.length; + while (index < size && (isLastBucket || sorted[index][0] < max)) { + bucket.push(sorted[index++][1]); + } + if (nItems != bucket.length) { + max = roundUp(sorted[index - 1][0], granularity); + } + assert(min < max, `$bucketAuto: ${min} < ${max}.`); + return { + min, + max, + bucket, + done: index >= size + }; + }; +} +export { + $bucketAuto +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/count.js b/node_modules/mingo/dist/esm/operators/pipeline/count.js new file mode 100644 index 0000000..5e49b4a --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/count.js @@ -0,0 +1,16 @@ +import { Lazy } from "../../lazy"; +import { assert, isEmpty, isString } from "../../util"; +const $count = (collection, expr, _options) => { + assert( + isString(expr) && !isEmpty(expr) && expr.indexOf(".") === -1 && expr.trim()[0] !== "$", + "Invalid expression value for $count" + ); + return Lazy([ + { + [expr]: collection.size() + } + ]); +}; +export { + $count +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/densify.js b/node_modules/mingo/dist/esm/operators/pipeline/densify.js new file mode 100644 index 0000000..d433492 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/densify.js @@ -0,0 +1,183 @@ +import { ComputeOptions } from "../../core"; +import { concat, Lazy } from "../../lazy"; +import { TIME_UNITS } from "../../types"; +import { + assert, + isArray, + isDate, + isNil, + isNumber, + isObject, + isString, + resolve, + ValueMap +} from "../../util"; +import { $dateAdd } from "../expression/date/dateAdd"; +import { $sort } from "./sort"; +const EMPTY_OBJECT = Object.freeze({}); +const $densify = (collection, expr, options) => { + const { step, bounds, unit } = expr.range; + if (unit) { + assert(TIME_UNITS.includes(unit), ""); + assert( + Number.isInteger(step) && step > 0, + "The step parameter in a range statement must be a whole number when densifying a date range." + ); + } else { + assert( + isNumber(step) && step > 0, + "The step parameter in a range statement must be a strictly positive numeric value." + ); + } + if (isArray(bounds)) { + assert( + !!bounds && bounds.length === 2, + "A bounding array in a range statement must have exactly two elements." + ); + assert( + (bounds.every(isNumber) || bounds.every(isDate)) && bounds[0] < bounds[1], + "A bounding array must be an ascending array of either two dates or two numbers." + ); + assert( + unit && !bounds.some(isNumber), + "Numeric bounds may not have unit parameter." + ); + } + if (expr.partitionByFields) { + assert( + isArray(expr.partitionByFields), + "$densify: `partitionByFields` must be an array of strings" + ); + } + collection = $sort(collection, { [expr.field]: 1 }, options); + const nilOptions = ComputeOptions.init(options, null); + const computeNextValue = (value) => { + return isNumber(value) ? value + step : $dateAdd( + EMPTY_OBJECT, + { startDate: value, unit, amount: step }, + nilOptions + ); + }; + const isValidUnit = !!unit && TIME_UNITS.includes(unit); + const getFieldValue = (o) => { + const v = resolve(o, expr.field); + if (isNil(v)) return v; + if (isNumber(v)) { + assert( + !isValidUnit, + "$densify: Encountered non-date value in collection when step has a date unit." + ); + } else if (isDate(v)) { + assert( + isValidUnit, + "$densify: Encountered date value in collection when step does not have a date unit." + ); + } else { + assert(false, "$densify: Densify field type must be numeric or a date"); + } + return v; + }; + const peekItem = new Array(); + const nilFieldsIterator = Lazy(() => { + const item = collection.next(); + const fieldValue = getFieldValue(item.value); + if (isNil(fieldValue)) return item; + peekItem.push(item); + return { done: true }; + }); + const nextDensifyValueMap = ValueMap.init( + options.hashFunction + ); + const [lower, upper] = isArray(bounds) ? bounds : [bounds, bounds]; + let maxFieldValue = void 0; + const updateMaxFieldValue = (value) => { + maxFieldValue = maxFieldValue === void 0 || maxFieldValue < value ? value : maxFieldValue; + }; + const rootKey = []; + const densifyIterator = Lazy(() => { + const item = peekItem.length > 0 ? peekItem.pop() : collection.next(); + if (item.done) return item; + let partitionKey = rootKey; + if (isArray(expr.partitionByFields)) { + partitionKey = expr.partitionByFields.map( + (k) => resolve(item.value, k) + ); + assert( + partitionKey.every(isString), + "$densify: Partition fields must evaluate to string values." + ); + } + assert(isObject(item.value), "$densify: collection must contain documents"); + const itemValue = getFieldValue(item.value); + if (!nextDensifyValueMap.has(partitionKey)) { + if (lower == "full") { + if (!nextDensifyValueMap.has(rootKey)) { + nextDensifyValueMap.set(rootKey, itemValue); + } + nextDensifyValueMap.set(partitionKey, nextDensifyValueMap.get(rootKey)); + } else if (lower == "partition") { + nextDensifyValueMap.set(partitionKey, itemValue); + } else { + nextDensifyValueMap.set(partitionKey, lower); + } + } + const densifyValue = nextDensifyValueMap.get(partitionKey); + if ( + // current item field value is lower than current densify value. + itemValue <= densifyValue || // range value equals or exceeds upper bound + upper != "full" && upper != "partition" && densifyValue >= upper + ) { + if (densifyValue <= itemValue) { + nextDensifyValueMap.set(partitionKey, computeNextValue(densifyValue)); + } + updateMaxFieldValue(itemValue); + return item; + } + nextDensifyValueMap.set(partitionKey, computeNextValue(densifyValue)); + updateMaxFieldValue(densifyValue); + const denseObj = { [expr.field]: densifyValue }; + if (partitionKey) { + partitionKey.forEach((v, i) => { + denseObj[expr.partitionByFields[i]] = v; + }); + } + peekItem.push(item); + return { done: false, value: denseObj }; + }); + if (lower !== "full") return concat(nilFieldsIterator, densifyIterator); + let paritionIndex = -1; + let partitionKeysSet = void 0; + const fullBoundsIterator = Lazy(() => { + if (paritionIndex === -1) { + const fullDensifyValue = nextDensifyValueMap.get(rootKey); + nextDensifyValueMap.delete(rootKey); + partitionKeysSet = Array.from(nextDensifyValueMap.keys()); + if (partitionKeysSet.length === 0) { + partitionKeysSet.push(rootKey); + nextDensifyValueMap.set(rootKey, fullDensifyValue); + } + paritionIndex++; + } + do { + const partitionKey = partitionKeysSet[paritionIndex]; + const partitionMaxValue = nextDensifyValueMap.get(partitionKey); + if (partitionMaxValue < maxFieldValue) { + nextDensifyValueMap.set( + partitionKey, + computeNextValue(partitionMaxValue) + ); + const denseObj = { [expr.field]: partitionMaxValue }; + partitionKey.forEach((v, i) => { + denseObj[expr.partitionByFields[i]] = v; + }); + return { done: false, value: denseObj }; + } + paritionIndex++; + } while (paritionIndex < partitionKeysSet.length); + return { done: true }; + }); + return concat(nilFieldsIterator, densifyIterator, fullBoundsIterator); +}; +export { + $densify +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/facet.js b/node_modules/mingo/dist/esm/operators/pipeline/facet.js new file mode 100644 index 0000000..a5ea2a5 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/facet.js @@ -0,0 +1,17 @@ +import { Aggregator } from "../../aggregator"; +import { ProcessingMode } from "../../core"; +const $facet = (collection, expr, options) => { + return collection.transform((array) => { + const o = {}; + for (const [k, pipeline] of Object.entries(expr)) { + o[k] = new Aggregator(pipeline, { + ...options, + processingMode: ProcessingMode.CLONE_INPUT + }).run(array); + } + return [o]; + }); +}; +export { + $facet +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/fill.js b/node_modules/mingo/dist/esm/operators/pipeline/fill.js new file mode 100644 index 0000000..6e6d1b4 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/fill.js @@ -0,0 +1,59 @@ +import { initOptions } from "../../core"; +import { assert, has, isObject } from "../../util"; +import { $ifNull } from "../expression/conditional/ifNull"; +import { $linearFill } from "../window/linearFill"; +import { $locf } from "../window/locf"; +import { $addFields } from "./addFields"; +import { $setWindowFields } from "./setWindowFields"; +const FILL_METHODS = { + locf: "$locf", + linear: "$linearFill" +}; +const $fill = (collection, expr, options) => { + assert(!expr.sortBy || isObject(expr.sortBy), "sortBy must be an object."); + assert( + !!expr.sortBy || Object.values(expr.output).every((m) => has(m, "value")), + "sortBy required if any output field specifies a 'method'." + ); + assert( + !(expr.partitionBy && expr.partitionByFields), + "specify either partitionBy or partitionByFields." + ); + assert( + !expr.partitionByFields || expr?.partitionByFields?.every((s) => s[0] !== "$"), + "fields in partitionByFields cannot begin with '$'." + ); + options = initOptions(options); + options.context.addExpressionOps({ $ifNull }); + options.context.addWindowOps({ $locf, $linearFill }); + const partitionExpr = expr.partitionBy || expr?.partitionByFields?.map((s) => "$" + s); + const valueExpr = {}; + const methodExpr = {}; + for (const [k, m] of Object.entries(expr.output)) { + if (has(m, "value")) { + valueExpr[k] = { $ifNull: [`$$CURRENT.${k}`, m["value"]] }; + } else { + const fillOp = FILL_METHODS[m["method"]]; + assert(!!fillOp, `invalid fill method '${m["method"]}'.`); + methodExpr[k] = { [fillOp]: "$" + k }; + } + } + if (Object.keys(methodExpr).length > 0) { + collection = $setWindowFields( + collection, + { + sortBy: expr.sortBy || {}, + partitionBy: partitionExpr, + output: methodExpr + }, + options + ); + } + if (Object.keys(valueExpr).length > 0) { + collection = $addFields(collection, valueExpr, options); + } + return collection; +}; +export { + $fill +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/graphLookup.js b/node_modules/mingo/dist/esm/operators/pipeline/graphLookup.js new file mode 100644 index 0000000..f36287b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/graphLookup.js @@ -0,0 +1,55 @@ +import { computeValue } from "../../core"; +import { Lazy } from "../../lazy"; +import { flatten, isNil, isString, setValue, ValueMap } from "../../util"; +import { $lookup } from "./lookup"; +const $graphLookup = (collection, expr, options) => { + const fromColl = isString(expr.from) ? options?.collectionResolver(expr.from) : expr.from; + const { + connectFromField, + connectToField, + as: asField, + maxDepth, + depthField, + restrictSearchWithMatch: matchExpr + } = expr; + const pipelineExpr = matchExpr ? { pipeline: [{ $match: matchExpr }] } : {}; + return collection.map((obj) => { + const matchObj = {}; + setValue( + matchObj, + connectFromField, + computeValue(obj, expr.startWith, null, options) + ); + let matches = [matchObj]; + let i = -1; + const map = ValueMap.init(options.hashFunction); + do { + i++; + matches = flatten( + $lookup( + Lazy(matches), + { + from: fromColl, + localField: connectFromField, + foreignField: connectToField, + as: asField, + ...pipelineExpr + }, + options + ).map((o) => o[asField]).value() + ); + const oldSize = map.size; + matches.forEach((k) => map.set(k, map.get(k) ?? i)); + if (oldSize == map.size) break; + } while (isNil(maxDepth) || i < maxDepth); + const result = new Array(map.size); + let n = 0; + map.forEach((v, k) => { + result[n++] = Object.assign(depthField ? { [depthField]: v } : {}, k); + }); + return { ...obj, [asField]: result }; + }); +}; +export { + $graphLookup +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/group.js b/node_modules/mingo/dist/esm/operators/pipeline/group.js new file mode 100644 index 0000000..5dca8b5 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/group.js @@ -0,0 +1,41 @@ +import { + ComputeOptions, + computeValue +} from "../../core"; +import { assert, groupBy, has } from "../../util"; +const ID_KEY = "_id"; +const $group = (collection, expr, options) => { + assert(has(expr, ID_KEY), "$group specification must include an '_id'"); + const idExpr = expr[ID_KEY]; + const copts = ComputeOptions.init(options); + const newFields = Object.keys(expr).filter((k) => k != ID_KEY); + return collection.transform((coll) => { + const partitions = groupBy( + coll, + (obj) => computeValue(obj, idExpr, null, options), + options.hashFunction + ); + let i = -1; + const partitionKeys = Array.from(partitions.keys()); + return () => { + if (++i === partitions.size) return { done: true }; + const groupId = partitionKeys[i]; + const obj = {}; + if (groupId !== void 0) { + obj[ID_KEY] = groupId; + } + for (const key of newFields) { + obj[key] = computeValue( + partitions.get(groupId), + expr[key], + null, + copts.update(null, { groupId }) + ); + } + return { value: obj, done: false }; + }; + }); +}; +export { + $group +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/index.js b/node_modules/mingo/dist/esm/operators/pipeline/index.js new file mode 100644 index 0000000..58521ed --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/index.js @@ -0,0 +1,27 @@ +export * from "./addFields"; +export * from "./bucket"; +export * from "./bucketAuto"; +export * from "./count"; +export * from "./densify"; +export * from "./facet"; +export * from "./fill"; +export * from "./graphLookup"; +export * from "./group"; +export * from "./limit"; +export * from "./lookup"; +export * from "./match"; +export * from "./merge"; +export * from "./out"; +export * from "./project"; +export * from "./redact"; +export * from "./replaceRoot"; +export * from "./replaceWith"; +export * from "./sample"; +export * from "./set"; +export * from "./setWindowFields"; +export * from "./skip"; +export * from "./sort"; +export * from "./sortByCount"; +export * from "./unionWith"; +export * from "./unset"; +export * from "./unwind"; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/limit.js b/node_modules/mingo/dist/esm/operators/pipeline/limit.js new file mode 100644 index 0000000..20ffade --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/limit.js @@ -0,0 +1,4 @@ +const $limit = (collection, expr, _options) => collection.take(expr); +export { + $limit +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/lookup.js b/node_modules/mingo/dist/esm/operators/pipeline/lookup.js new file mode 100644 index 0000000..cbf3375 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/lookup.js @@ -0,0 +1,63 @@ +import { Aggregator } from "../../aggregator"; +import { computeValue } from "../../core"; +import { + ensureArray, + flatten, + isArray, + isString, + resolve, + ValueMap +} from "../../util"; +const $lookup = (collection, expr, options) => { + const joinColl = isString(expr.from) ? options?.collectionResolver(expr.from) : expr.from; + const { let: letExpr, pipeline, foreignField, localField } = expr; + const subQueryPipeline = pipeline || []; + let lookupEq = (_) => [true, []]; + if (foreignField && localField) { + const map = ValueMap.init(options.hashFunction); + for (const doc of joinColl) { + ensureArray(resolve(doc, foreignField) ?? null).forEach((v) => { + const xs = map.get(v); + const arr = xs ?? []; + arr.push(doc); + if (arr !== xs) map.set(v, arr); + }); + } + lookupEq = (o) => { + const local = resolve(o, localField) ?? null; + if (isArray(local)) { + if (subQueryPipeline.length) { + return [local.some((v) => map.has(v)), null]; + } + const result2 = Array.from( + new Set(flatten(local.map((v) => map.get(v), options.hashFunction))) + ); + return [result2.length > 0, result2]; + } + const result = map.get(local) ?? null; + return [result !== null, result ?? []]; + }; + if (subQueryPipeline.length === 0) { + return collection.map((obj) => { + return { + ...obj, + [expr.as]: lookupEq(obj).pop() + }; + }); + } + } + const agg = new Aggregator(subQueryPipeline, options); + const opts = { ...options }; + return collection.map((obj) => { + const vars = computeValue(obj, letExpr, null, options); + opts.variables = { ...options.variables, ...vars }; + const [ok, res] = lookupEq(obj); + return { + ...obj, + [expr.as]: ok ? agg.run(joinColl, opts) : res + }; + }); +}; +export { + $lookup +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/match.js b/node_modules/mingo/dist/esm/operators/pipeline/match.js new file mode 100644 index 0000000..c7e9107 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/match.js @@ -0,0 +1,8 @@ +import { Query } from "../../query"; +const $match = (collection, expr, options) => { + const q = new Query(expr, options); + return collection.filter((o) => q.test(o)); +}; +export { + $match +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/merge.js b/node_modules/mingo/dist/esm/operators/pipeline/merge.js new file mode 100644 index 0000000..31ed1b5 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/merge.js @@ -0,0 +1,90 @@ +import { Aggregator } from "../../aggregator"; +import { + ComputeOptions, + computeValue +} from "../../core"; +import { + assert, + hashCode, + isArray, + isString, + MingoError, + resolve, + ValueMap +} from "../../util"; +import { $mergeObjects } from "../expression"; +const $merge = (collection, expr, options) => { + const output = isString(expr.into) ? options?.collectionResolver(expr.into) : expr.into; + assert(isArray(output), `$merge: option 'into' must resolve to an array`); + const onField = expr.on || options.idKey; + const getHash = isString(onField) ? (o) => hashCode(resolve(o, onField), options.hashFunction) : (o) => hashCode(onField.map((s) => resolve(o, s), options.hashFunction)); + const map = ValueMap.init(); + for (let i = 0; i < output.length; i++) { + const obj = output[i]; + const k = getHash(obj); + assert( + !map.has(k), + "$merge: 'into' collection must have unique entries for the 'on' field." + ); + map.set(k, [obj, i]); + } + const copts = ComputeOptions.init(options); + return collection.map((o) => { + const k = getHash(o); + if (map.has(k)) { + const [target, i] = map.get(k); + const variables = computeValue( + target, + expr.let || { new: "$$ROOT" }, + null, + // 'root' is the item from the iteration. + copts.update(o) + ); + if (isArray(expr.whenMatched)) { + const aggregator = new Aggregator(expr.whenMatched, { + ...options, + variables + }); + output[i] = aggregator.run([target])[0]; + } else { + switch (expr.whenMatched) { + case "replace": + output[i] = o; + break; + case "fail": + throw new MingoError( + "$merge: failed due to matching as specified by 'whenMatched' option." + ); + case "keepExisting": + break; + case "merge": + default: + output[i] = $mergeObjects( + target, + [target, o], + // 'root' is the item from the iteration. + copts.update(o, { variables }) + ); + break; + } + } + } else { + switch (expr.whenNotMatched) { + case "discard": + break; + case "fail": + throw new MingoError( + "$merge: failed due to matching as specified by 'whenMatched' option." + ); + case "insert": + default: + output.push(o); + break; + } + } + return o; + }); +}; +export { + $merge +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/out.js b/node_modules/mingo/dist/esm/operators/pipeline/out.js new file mode 100644 index 0000000..264f700 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/out.js @@ -0,0 +1,12 @@ +import { assert, cloneDeep, isArray, isString } from "../../util"; +const $out = (collection, expr, options) => { + const outputColl = isString(expr) ? options?.collectionResolver(expr) : expr; + assert(isArray(outputColl), `expression must resolve to an array`); + return collection.map((o) => { + outputColl.push(cloneDeep(o)); + return o; + }); +}; +export { + $out +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/project.js b/node_modules/mingo/dist/esm/operators/pipeline/project.js new file mode 100644 index 0000000..51f2ba8 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/project.js @@ -0,0 +1,142 @@ +import { + ComputeOptions, + computeValue, + getOperator +} from "../../core"; +import { + assert, + ensureArray, + filterMissing, + has, + isArray, + isBoolean, + isEmpty, + isNumber, + isObject, + isOperator, + isString, + merge, + removeValue, + resolve, + resolveGraph, + setValue +} from "../../util"; +const $project = (collection, expr, options) => { + if (isEmpty(expr)) return collection; + validateExpression(expr, options); + return collection.map(createHandler(expr, ComputeOptions.init(options))); +}; +function createHandler(expr, options, isRoot = true) { + const idKey = options.idKey; + const expressionKeys = Object.keys(expr); + const excludedKeys = new Array(); + const includedKeys = new Array(); + const handlers = {}; + for (const key of expressionKeys) { + const subExpr = expr[key]; + if (isNumber(subExpr) || isBoolean(subExpr)) { + if (subExpr) { + includedKeys.push(key); + } else { + excludedKeys.push(key); + } + } else if (isArray(subExpr)) { + handlers[key] = (o) => subExpr.map((v) => computeValue(o, v, null, options.update(o)) ?? null); + } else if (isObject(subExpr)) { + const subExprKeys = Object.keys(subExpr); + const operator = subExprKeys.length == 1 ? subExprKeys[0] : ""; + const projectFn = getOperator( + "projection", + operator, + options + ); + if (projectFn) { + const foundSlice = operator === "$slice"; + if (foundSlice && !ensureArray(subExpr[operator]).every(isNumber)) { + handlers[key] = (o) => computeValue(o, subExpr, key, options.update(o)); + } else { + handlers[key] = (o) => projectFn(o, subExpr[operator], key, options.update(o)); + } + } else if (isOperator(operator)) { + handlers[key] = (o) => computeValue(o, subExpr[operator], operator, options); + } else { + validateExpression(subExpr, options); + handlers[key] = (o) => { + if (!has(o, key)) return computeValue(o, subExpr, null, options); + if (isRoot) options.update(o); + const target = resolve(o, key); + const fn = createHandler(subExpr, options, false); + if (isArray(target)) return target.map(fn); + if (isObject(target)) return fn(target); + return fn(o); + }; + } + } else { + handlers[key] = isString(subExpr) && subExpr[0] === "$" ? (o) => computeValue(o, subExpr, key, options) : (_) => subExpr; + } + } + const handlerKeys = Object.keys(handlers); + const idKeyExcluded = excludedKeys.includes(idKey); + const idKeyOnlyExcluded = isRoot && idKeyExcluded && excludedKeys.length === 1 && !includedKeys.length && !handlerKeys.length; + if (idKeyOnlyExcluded) { + return (o) => { + const newObj = { ...o }; + delete newObj[idKey]; + return newObj; + }; + } + const idKeyImplicit = isRoot && !idKeyExcluded && !includedKeys.includes(idKey); + const opts = { + preserveMissing: true + }; + return (o) => { + const newObj = {}; + if (excludedKeys.length && !includedKeys.length) { + merge(newObj, o); + for (const k of excludedKeys) { + removeValue(newObj, k, { descendArray: true }); + } + } + for (const k of includedKeys) { + const pathObj = resolveGraph(o, k, opts) ?? {}; + merge(newObj, pathObj); + } + if (includedKeys.length) filterMissing(newObj); + for (const k of handlerKeys) { + const value = handlers[k](o); + if (value === void 0) { + removeValue(newObj, k, { descendArray: true }); + } else { + setValue(newObj, k, value); + } + } + if (idKeyImplicit && has(o, idKey)) { + newObj[idKey] = resolve(o, idKey); + } + return newObj; + }; +} +function validateExpression(expr, options) { + let exclusions = false; + let inclusions = false; + for (const [k, v] of Object.entries(expr)) { + assert(!k.startsWith("$"), "Field names may not start with '$'."); + assert( + !k.endsWith(".$"), + "Positional projection operator '$' is not supported." + ); + if (k === options?.idKey) continue; + if (v === 0 || v === false) { + exclusions = true; + } else if (v === 1 || v === true) { + inclusions = true; + } + assert( + !(exclusions && inclusions), + "Projection cannot have a mix of inclusion and exclusion." + ); + } +} +export { + $project +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/redact.js b/node_modules/mingo/dist/esm/operators/pipeline/redact.js new file mode 100644 index 0000000..698ef07 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/redact.js @@ -0,0 +1,10 @@ +import { ComputeOptions, redact } from "../../core"; +const $redact = (collection, expr, options) => { + const copts = ComputeOptions.init(options); + return collection.map( + (obj) => redact(obj, expr, copts.update(obj)) + ); +}; +export { + $redact +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/replaceRoot.js b/node_modules/mingo/dist/esm/operators/pipeline/replaceRoot.js new file mode 100644 index 0000000..44c7bf9 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/replaceRoot.js @@ -0,0 +1,12 @@ +import { computeValue } from "../../core"; +import { assert, isObject } from "../../util"; +const $replaceRoot = (collection, expr, options) => { + return collection.map((obj) => { + obj = computeValue(obj, expr.newRoot, null, options); + assert(isObject(obj), "$replaceRoot expression must return an object"); + return obj; + }); +}; +export { + $replaceRoot +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/replaceWith.js b/node_modules/mingo/dist/esm/operators/pipeline/replaceWith.js new file mode 100644 index 0000000..701774a --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/replaceWith.js @@ -0,0 +1,12 @@ +import { computeValue } from "../../core"; +import { assert, isObject } from "../../util"; +const $replaceWith = (collection, expr, options) => { + return collection.map((obj) => { + obj = computeValue(obj, expr, null, options); + assert(isObject(obj), "$replaceWith expression must return an object"); + return obj; + }); +}; +export { + $replaceWith +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/sample.js b/node_modules/mingo/dist/esm/operators/pipeline/sample.js new file mode 100644 index 0000000..6754ee6 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/sample.js @@ -0,0 +1,14 @@ +const $sample = (collection, expr, _options) => { + return collection.transform((xs) => { + const len = xs.length; + let i = -1; + return () => { + if (++i === expr.size) return { done: true }; + const n = Math.floor(Math.random() * len); + return { value: xs[n], done: false }; + }; + }); +}; +export { + $sample +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/set.js b/node_modules/mingo/dist/esm/operators/pipeline/set.js new file mode 100644 index 0000000..7460bdb --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/set.js @@ -0,0 +1,5 @@ +import { $addFields } from "./addFields"; +const $set = $addFields; +export { + $set +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/setWindowFields.js b/node_modules/mingo/dist/esm/operators/pipeline/setWindowFields.js new file mode 100644 index 0000000..d0d44f2 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/setWindowFields.js @@ -0,0 +1,191 @@ +import { + getOperator, + initOptions +} from "../../core"; +import { concat, Lazy } from "../../lazy"; +import { assert, isNumber, isOperator, isString } from "../../util"; +import { $function } from "../expression/custom/function"; +import { $dateAdd } from "../expression/date/dateAdd"; +import { isUnbounded } from "./_internal"; +import { $addFields } from "./addFields"; +import { $group } from "./group"; +import { $sort } from "./sort"; +const SORT_REQUIRED_OPS = /* @__PURE__ */ new Set([ + "$denseRank", + "$documentNumber", + "$first", + "$last", + "$linearFill", + "$rank", + "$shift" +]); +const WINDOW_UNBOUNDED_OPS = /* @__PURE__ */ new Set([ + "$denseRank", + "$expMovingAvg", + "$linearFill", + "$locf", + "$rank", + "$shift" +]); +const $setWindowFields = (collection, expr, options) => { + options = initOptions(options); + options.context.addExpressionOps({ $function }); + for (const outputExpr of Object.values(expr.output)) { + const keys = Object.keys(outputExpr); + const op = keys.find(isOperator); + assert( + !!getOperator("window", op, options) || !!getOperator("accumulator", op, options), + `'${op}' is not a valid window operator` + ); + assert( + keys.length > 0 && keys.length <= 2 && (keys.length == 1 || keys.includes("window")), + "'output' option should have a single window operator." + ); + if (outputExpr?.window) { + const { documents, range } = outputExpr.window; + assert( + !!documents && !range || !documents && !!range || !documents && !range, + "'window' option supports only one of 'documents' or 'range'." + ); + } + } + if (expr.sortBy) { + collection = $sort(collection, expr.sortBy, options); + } + collection = $group( + collection, + { + _id: expr.partitionBy, + items: { $push: "$$CURRENT" } + }, + options + ); + return collection.transform((partitions) => { + const iterators = []; + const outputConfig = []; + for (const [field, outputExpr] of Object.entries(expr.output)) { + const op = Object.keys(outputExpr).find(isOperator); + const config = { + operatorName: op, + func: { + left: getOperator("accumulator", op, options), + right: getOperator("window", op, options) + }, + args: outputExpr[op], + field, + window: outputExpr.window + }; + assert( + !!expr.sortBy || !(SORT_REQUIRED_OPS.has(op) || !config.window), + `${SORT_REQUIRED_OPS.has(op) ? `'${op}'` : "bounded window operation"} requires a sortBy.` + ); + assert( + !config.window || !WINDOW_UNBOUNDED_OPS.has(op), + `${op} does not accept a 'window' field.` + ); + outputConfig.push(config); + } + partitions.forEach((group) => { + const items = group.items; + let iterator = Lazy(items); + const windowResultMap = {}; + for (const config of outputConfig) { + const { func, args, field, window } = config; + const makeResultFunc = (getItemsFn) => { + let index = -1; + return (obj) => { + ++index; + if (func.left) { + return func.left(getItemsFn(obj, index), args, options); + } else if (func.right) { + return func.right( + obj, + getItemsFn(obj, index), + { + parentExpr: expr, + inputExpr: args, + documentNumber: index + 1, + field + }, + // must use raw options only since it operates over a collection. + options + ); + } + }; + }; + if (window) { + const { documents, range, unit } = window; + const boundary = documents || range; + if (!isUnbounded(window)) { + const [begin, end] = boundary; + const toBeginIndex = (currentIndex) => { + if (begin == "current") return currentIndex; + if (begin == "unbounded") return 0; + return Math.max(begin + currentIndex, 0); + }; + const toEndIndex = (currentIndex) => { + if (end == "current") return currentIndex + 1; + if (end == "unbounded") return items.length; + return end + currentIndex + 1; + }; + const getItems = (current, index) => { + if (!!documents || boundary.every(isString)) { + return items.slice(toBeginIndex(index), toEndIndex(index)); + } + const sortKey = Object.keys(expr.sortBy)[0]; + let lower; + let upper; + if (unit) { + const getTime = (amount) => { + return $dateAdd( + current, + { + startDate: new Date(current[sortKey]), + unit, + amount + }, + options + ).getTime(); + }; + lower = isNumber(begin) ? getTime(begin) : -Infinity; + upper = isNumber(end) ? getTime(end) : Infinity; + } else { + const currentValue = current[sortKey]; + lower = isNumber(begin) ? currentValue + begin : -Infinity; + upper = isNumber(end) ? currentValue + end : Infinity; + } + let array = items; + if (begin == "current") array = items.slice(index); + if (end == "current") array = items.slice(0, index + 1); + return array.filter((o) => { + const n = +o[sortKey]; + return n >= lower && n <= upper; + }); + }; + windowResultMap[field] = makeResultFunc(getItems); + } + } + if (!windowResultMap[field]) { + windowResultMap[field] = makeResultFunc((_) => items); + } + iterator = $addFields( + iterator, + { + [field]: { + $function: { + body: (obj) => windowResultMap[field](obj), + args: ["$$CURRENT"] + } + } + }, + options + ); + } + iterators.push(iterator); + }); + return concat(...iterators); + }); +}; +export { + $setWindowFields +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/skip.js b/node_modules/mingo/dist/esm/operators/pipeline/skip.js new file mode 100644 index 0000000..e9fb5c2 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/skip.js @@ -0,0 +1,6 @@ +const $skip = (collection, expr, _options) => { + return collection.drop(expr); +}; +export { + $skip +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/sort.js b/node_modules/mingo/dist/esm/operators/pipeline/sort.js new file mode 100644 index 0000000..3889f90 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/sort.js @@ -0,0 +1,67 @@ +import { + assert, + compare, + groupBy, + isEmpty, + isObject, + isString, + resolve +} from "../../util"; +const $sort = (collection, sortKeys, options) => { + if (isEmpty(sortKeys) || !isObject(sortKeys)) return collection; + let cmp = compare; + const collationSpec = options.collation; + if (isObject(collationSpec) && isString(collationSpec.locale)) { + cmp = collationComparator(collationSpec); + } + return collection.transform((coll) => { + const modifiers = Object.keys(sortKeys); + for (const key of modifiers.reverse()) { + const groups = groupBy( + coll, + (obj) => resolve(obj, key), + options.hashFunction + ); + const sortedKeys = Array.from(groups.keys()).sort(cmp); + if (sortKeys[key] === -1) sortedKeys.reverse(); + let i = 0; + for (const k of sortedKeys) for (const v of groups.get(k)) coll[i++] = v; + assert(i == coll.length, "bug: counter must match collection size."); + } + return coll; + }); +}; +const COLLATION_STRENGTH = { + // Only strings that differ in base letters compare as unequal. Examples: a ≠ b, a = á, a = A. + 1: "base", + // Only strings that differ in base letters or accents and other diacritic marks compare as unequal. + // Examples: a ≠ b, a ≠ á, a = A. + 2: "accent", + // Strings that differ in base letters, accents and other diacritic marks, or case compare as unequal. + // Other differences may also be taken into consideration. Examples: a ≠ b, a ≠ á, a ≠ A + 3: "variant" + // case - Only strings that differ in base letters or case compare as unequal. Examples: a ≠ b, a = á, a ≠ A. +}; +function collationComparator(spec) { + const localeOpt = { + sensitivity: COLLATION_STRENGTH[spec.strength || 3], + caseFirst: spec.caseFirst === "off" ? "false" : spec.caseFirst || "false", + numeric: spec.numericOrdering || false, + ignorePunctuation: spec.alternate === "shifted" + }; + if ((spec.caseLevel || false) === true) { + if (localeOpt.sensitivity === "base") localeOpt.sensitivity = "case"; + if (localeOpt.sensitivity === "accent") localeOpt.sensitivity = "variant"; + } + const collator = new Intl.Collator(spec.locale, localeOpt); + return (a, b) => { + if (!isString(a) || !isString(b)) return compare(a, b); + const i = collator.compare(a, b); + if (i < 0) return -1; + if (i > 0) return 1; + return 0; + }; +} +export { + $sort +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/sortByCount.js b/node_modules/mingo/dist/esm/operators/pipeline/sortByCount.js new file mode 100644 index 0000000..2031772 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/sortByCount.js @@ -0,0 +1,12 @@ +import { $group } from "./group"; +import { $sort } from "./sort"; +const $sortByCount = (collection, expr, options) => { + return $sort( + $group(collection, { _id: expr, count: { $sum: 1 } }, options), + { count: -1 }, + options + ); +}; +export { + $sortByCount +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/unionWith.js b/node_modules/mingo/dist/esm/operators/pipeline/unionWith.js new file mode 100644 index 0000000..f912936 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/unionWith.js @@ -0,0 +1,14 @@ +import { Aggregator } from "../../aggregator"; +import { concat, Lazy } from "../../lazy"; +import { isString } from "../../util"; +const $unionWith = (collection, expr, options) => { + const array = isString(expr.coll) ? options.collectionResolver(expr.coll) : expr.coll; + const iterators = [collection]; + iterators.push( + expr.pipeline ? new Aggregator(expr.pipeline, options).stream(array) : Lazy(array) + ); + return concat(...iterators); +}; +export { + $unionWith +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/unset.js b/node_modules/mingo/dist/esm/operators/pipeline/unset.js new file mode 100644 index 0000000..329cc8c --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/unset.js @@ -0,0 +1,11 @@ +import { ensureArray } from "../../util"; +import { $project } from "./project"; +const $unset = (collection, expr, options) => { + expr = ensureArray(expr); + const doc = {}; + for (const k of expr) doc[k] = 0; + return $project(collection, doc, options); +}; +export { + $unset +}; diff --git a/node_modules/mingo/dist/esm/operators/pipeline/unwind.js b/node_modules/mingo/dist/esm/operators/pipeline/unwind.js new file mode 100644 index 0000000..844af72 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/pipeline/unwind.js @@ -0,0 +1,54 @@ +import { Iterator, Lazy } from "../../lazy"; +import { + isArray, + isEmpty, + isString, + removeValue, + resolve, + resolveGraph, + setValue +} from "../../util"; +const $unwind = (collection, expr, _options) => { + if (isString(expr)) expr = { path: expr }; + const path = expr.path; + const field = path.substring(1); + const includeArrayIndex = expr?.includeArrayIndex || false; + const preserveNullAndEmptyArrays = expr.preserveNullAndEmptyArrays || false; + const format = (o, i) => { + if (includeArrayIndex !== false) o[includeArrayIndex] = i; + return o; + }; + let value; + return Lazy(() => { + for (; ; ) { + if (value instanceof Iterator) { + const tmp = value.next(); + if (!tmp.done) return tmp; + } + const wrapper = collection.next(); + if (wrapper.done) return wrapper; + const obj = wrapper.value; + value = resolve(obj, field); + if (isArray(value)) { + if (value.length === 0 && preserveNullAndEmptyArrays === true) { + value = null; + removeValue(obj, field); + return { value: format(obj, null), done: false }; + } else { + value = Lazy(value).map((item, i) => { + const newObj = resolveGraph(obj, field, { + preserveKeys: true + }); + setValue(newObj, field, item); + return format(newObj, i); + }); + } + } else if (!isEmpty(value) || preserveNullAndEmptyArrays === true) { + return { value: format(obj, null), done: false }; + } + } + }); +}; +export { + $unwind +}; diff --git a/node_modules/mingo/dist/esm/operators/projection/elemMatch.js b/node_modules/mingo/dist/esm/operators/projection/elemMatch.js new file mode 100644 index 0000000..ecd32c3 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/projection/elemMatch.js @@ -0,0 +1,18 @@ +import { Query } from "../../query"; +import { assert, isArray, resolve } from "../../util"; +const $elemMatch = (obj, expr, field, options) => { + const arr = resolve(obj, field); + const query = new Query(expr, options); + assert(isArray(arr), "$elemMatch: argument must resolve to array"); + const result = []; + for (let i = 0; i < arr.length; i++) { + if (query.test(arr[i])) { + if (options.useStrictMode) return [arr[i]]; + result.push(arr[i]); + } + } + return result.length > 0 ? result : void 0; +}; +export { + $elemMatch +}; diff --git a/node_modules/mingo/dist/esm/operators/projection/index.js b/node_modules/mingo/dist/esm/operators/projection/index.js new file mode 100644 index 0000000..0c4f9e6 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/projection/index.js @@ -0,0 +1,2 @@ +export * from "./elemMatch"; +export * from "./slice"; diff --git a/node_modules/mingo/dist/esm/operators/projection/slice.js b/node_modules/mingo/dist/esm/operators/projection/slice.js new file mode 100644 index 0000000..e2619d2 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/projection/slice.js @@ -0,0 +1,15 @@ +import { isArray, resolve } from "../../util"; +import { $slice as __slice } from "../expression/array/slice"; +const $slice = (obj, expr, field, options) => { + const xs = resolve(obj, field); + const exprAsArray = expr; + if (!isArray(xs)) return xs; + return __slice( + obj, + isArray(expr) ? [xs, ...exprAsArray] : [xs, expr], + options + ); +}; +export { + $slice +}; diff --git a/node_modules/mingo/dist/esm/operators/query/array/all.js b/node_modules/mingo/dist/esm/operators/query/array/all.js new file mode 100644 index 0000000..8484128 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/array/all.js @@ -0,0 +1,5 @@ +import { $all as __all, createQueryOperator } from "../../_predicates"; +const $all = createQueryOperator(__all); +export { + $all +}; diff --git a/node_modules/mingo/dist/esm/operators/query/array/elemMatch.js b/node_modules/mingo/dist/esm/operators/query/array/elemMatch.js new file mode 100644 index 0000000..b73a4d3 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/array/elemMatch.js @@ -0,0 +1,8 @@ +import { + $elemMatch as __elemMatch, + createQueryOperator +} from "../../_predicates"; +const $elemMatch = createQueryOperator(__elemMatch); +export { + $elemMatch +}; diff --git a/node_modules/mingo/dist/esm/operators/query/array/index.js b/node_modules/mingo/dist/esm/operators/query/array/index.js new file mode 100644 index 0000000..162a683 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/array/index.js @@ -0,0 +1,3 @@ +export * from "./all"; +export * from "./elemMatch"; +export * from "./size"; diff --git a/node_modules/mingo/dist/esm/operators/query/array/size.js b/node_modules/mingo/dist/esm/operators/query/array/size.js new file mode 100644 index 0000000..e2aeb17 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/array/size.js @@ -0,0 +1,5 @@ +import { $size as __size, createQueryOperator } from "../../_predicates"; +const $size = createQueryOperator(__size); +export { + $size +}; diff --git a/node_modules/mingo/dist/esm/operators/query/bitwise/_internal.js b/node_modules/mingo/dist/esm/operators/query/bitwise/_internal.js new file mode 100644 index 0000000..7c5b241 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/bitwise/_internal.js @@ -0,0 +1,18 @@ +import { isArray } from "../../../util"; +import { createQueryOperator } from "../../_predicates"; +const createBitwiseOperator = (predicate) => { + return createQueryOperator( + (value, mask, _options) => { + let b = 0; + if (isArray(mask)) { + for (const n of mask) b = b | 1 << n; + } else { + b = mask; + } + return predicate(value & b, b); + } + ); +}; +export { + createBitwiseOperator +}; diff --git a/node_modules/mingo/dist/esm/operators/query/bitwise/bitsAllClear.js b/node_modules/mingo/dist/esm/operators/query/bitwise/bitsAllClear.js new file mode 100644 index 0000000..c142137 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/bitwise/bitsAllClear.js @@ -0,0 +1,5 @@ +import { createBitwiseOperator } from "./_internal"; +const $bitsAllClear = createBitwiseOperator((result, _) => result == 0); +export { + $bitsAllClear +}; diff --git a/node_modules/mingo/dist/esm/operators/query/bitwise/bitsAllSet.js b/node_modules/mingo/dist/esm/operators/query/bitwise/bitsAllSet.js new file mode 100644 index 0000000..4014489 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/bitwise/bitsAllSet.js @@ -0,0 +1,7 @@ +import { createBitwiseOperator } from "./_internal"; +const $bitsAllSet = createBitwiseOperator( + (result, mask) => result == mask +); +export { + $bitsAllSet +}; diff --git a/node_modules/mingo/dist/esm/operators/query/bitwise/bitsAnyClear.js b/node_modules/mingo/dist/esm/operators/query/bitwise/bitsAnyClear.js new file mode 100644 index 0000000..1b181f5 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/bitwise/bitsAnyClear.js @@ -0,0 +1,7 @@ +import { createBitwiseOperator } from "./_internal"; +const $bitsAnyClear = createBitwiseOperator( + (result, mask) => result < mask +); +export { + $bitsAnyClear +}; diff --git a/node_modules/mingo/dist/esm/operators/query/bitwise/bitsAnySet.js b/node_modules/mingo/dist/esm/operators/query/bitwise/bitsAnySet.js new file mode 100644 index 0000000..3f400d0 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/bitwise/bitsAnySet.js @@ -0,0 +1,5 @@ +import { createBitwiseOperator } from "./_internal"; +const $bitsAnySet = createBitwiseOperator((result, _) => result > 0); +export { + $bitsAnySet +}; diff --git a/node_modules/mingo/dist/esm/operators/query/bitwise/index.js b/node_modules/mingo/dist/esm/operators/query/bitwise/index.js new file mode 100644 index 0000000..edbe2a0 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/bitwise/index.js @@ -0,0 +1,10 @@ +import { $bitsAllClear } from "./bitsAllClear"; +import { $bitsAllSet } from "./bitsAllSet"; +import { $bitsAnyClear } from "./bitsAnyClear"; +import { $bitsAnySet } from "./bitsAnySet"; +export { + $bitsAllClear, + $bitsAllSet, + $bitsAnyClear, + $bitsAnySet +}; diff --git a/node_modules/mingo/dist/esm/operators/query/comparison/eq.js b/node_modules/mingo/dist/esm/operators/query/comparison/eq.js new file mode 100644 index 0000000..aa67f20 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/comparison/eq.js @@ -0,0 +1,5 @@ +import { $eq as __eq, createQueryOperator } from "../../_predicates"; +const $eq = createQueryOperator(__eq); +export { + $eq +}; diff --git a/node_modules/mingo/dist/esm/operators/query/comparison/gt.js b/node_modules/mingo/dist/esm/operators/query/comparison/gt.js new file mode 100644 index 0000000..bec7589 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/comparison/gt.js @@ -0,0 +1,5 @@ +import { $gt as __gt, createQueryOperator } from "../../_predicates"; +const $gt = createQueryOperator(__gt); +export { + $gt +}; diff --git a/node_modules/mingo/dist/esm/operators/query/comparison/gte.js b/node_modules/mingo/dist/esm/operators/query/comparison/gte.js new file mode 100644 index 0000000..5f118ec --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/comparison/gte.js @@ -0,0 +1,5 @@ +import { $gte as __gte, createQueryOperator } from "../../_predicates"; +const $gte = createQueryOperator(__gte); +export { + $gte +}; diff --git a/node_modules/mingo/dist/esm/operators/query/comparison/in.js b/node_modules/mingo/dist/esm/operators/query/comparison/in.js new file mode 100644 index 0000000..304b60f --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/comparison/in.js @@ -0,0 +1,5 @@ +import { $in as __in, createQueryOperator } from "../../_predicates"; +const $in = createQueryOperator(__in); +export { + $in +}; diff --git a/node_modules/mingo/dist/esm/operators/query/comparison/index.js b/node_modules/mingo/dist/esm/operators/query/comparison/index.js new file mode 100644 index 0000000..26c14ca --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/comparison/index.js @@ -0,0 +1,18 @@ +import { $eq } from "./eq"; +import { $gt } from "./gt"; +import { $gte } from "./gte"; +import { $in } from "./in"; +import { $lt } from "./lt"; +import { $lte } from "./lte"; +import { $ne } from "./ne"; +import { $nin } from "./nin"; +export { + $eq, + $gt, + $gte, + $in, + $lt, + $lte, + $ne, + $nin +}; diff --git a/node_modules/mingo/dist/esm/operators/query/comparison/lt.js b/node_modules/mingo/dist/esm/operators/query/comparison/lt.js new file mode 100644 index 0000000..09b8f05 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/comparison/lt.js @@ -0,0 +1,5 @@ +import { $lt as __lt, createQueryOperator } from "../../_predicates"; +const $lt = createQueryOperator(__lt); +export { + $lt +}; diff --git a/node_modules/mingo/dist/esm/operators/query/comparison/lte.js b/node_modules/mingo/dist/esm/operators/query/comparison/lte.js new file mode 100644 index 0000000..234febd --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/comparison/lte.js @@ -0,0 +1,5 @@ +import { $lte as __lte, createQueryOperator } from "../../_predicates"; +const $lte = createQueryOperator(__lte); +export { + $lte +}; diff --git a/node_modules/mingo/dist/esm/operators/query/comparison/ne.js b/node_modules/mingo/dist/esm/operators/query/comparison/ne.js new file mode 100644 index 0000000..cb41c5e --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/comparison/ne.js @@ -0,0 +1,5 @@ +import { $ne as __ne, createQueryOperator } from "../../_predicates"; +const $ne = createQueryOperator(__ne); +export { + $ne +}; diff --git a/node_modules/mingo/dist/esm/operators/query/comparison/nin.js b/node_modules/mingo/dist/esm/operators/query/comparison/nin.js new file mode 100644 index 0000000..0f4851b --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/comparison/nin.js @@ -0,0 +1,5 @@ +import { $nin as __nin, createQueryOperator } from "../../_predicates"; +const $nin = createQueryOperator(__nin); +export { + $nin +}; diff --git a/node_modules/mingo/dist/esm/operators/query/element/exists.js b/node_modules/mingo/dist/esm/operators/query/element/exists.js new file mode 100644 index 0000000..e739c2e --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/element/exists.js @@ -0,0 +1,16 @@ +import { isArray, resolve, resolveGraph } from "../../../util"; +const $exists = (selector, value, _options) => { + const nested = selector.includes("."); + const b = !!value; + if (!nested || selector.match(/\.\d+$/)) { + return (o) => resolve(o, selector) !== void 0 === b; + } + return (o) => { + const path = resolveGraph(o, selector, { preserveIndex: true }); + const val = resolve(path, selector.substring(0, selector.lastIndexOf("."))); + return isArray(val) ? val.some((v) => v !== void 0) === b : val !== void 0 === b; + }; +}; +export { + $exists +}; diff --git a/node_modules/mingo/dist/esm/operators/query/element/index.js b/node_modules/mingo/dist/esm/operators/query/element/index.js new file mode 100644 index 0000000..702f535 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/element/index.js @@ -0,0 +1,2 @@ +export * from "./exists"; +export * from "./type"; diff --git a/node_modules/mingo/dist/esm/operators/query/element/type.js b/node_modules/mingo/dist/esm/operators/query/element/type.js new file mode 100644 index 0000000..c04bd46 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/element/type.js @@ -0,0 +1,5 @@ +import { $type as __type, createQueryOperator } from "../../_predicates"; +const $type = createQueryOperator(__type); +export { + $type +}; diff --git a/node_modules/mingo/dist/esm/operators/query/evaluation/expr.js b/node_modules/mingo/dist/esm/operators/query/evaluation/expr.js new file mode 100644 index 0000000..c912d39 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/evaluation/expr.js @@ -0,0 +1,7 @@ +import { computeValue } from "../../../core"; +function $expr(_, rhs, options) { + return (obj) => computeValue(obj, rhs, null, options); +} +export { + $expr +}; diff --git a/node_modules/mingo/dist/esm/operators/query/evaluation/index.js b/node_modules/mingo/dist/esm/operators/query/evaluation/index.js new file mode 100644 index 0000000..b19104a --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/evaluation/index.js @@ -0,0 +1,5 @@ +export * from "./expr"; +export * from "./jsonSchema"; +export * from "./mod"; +export * from "./regex"; +export * from "./where"; diff --git a/node_modules/mingo/dist/esm/operators/query/evaluation/jsonSchema.js b/node_modules/mingo/dist/esm/operators/query/evaluation/jsonSchema.js new file mode 100644 index 0000000..4a26859 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/evaluation/jsonSchema.js @@ -0,0 +1,13 @@ +import { MingoError } from "../../../util"; +function $jsonSchema(_, schema, options) { + if (!options?.jsonSchemaValidator) { + throw new MingoError( + "Missing option 'jsonSchemaValidator'. Configure to use '$jsonSchema' operator." + ); + } + const validate = options?.jsonSchemaValidator(schema); + return (obj) => validate(obj); +} +export { + $jsonSchema +}; diff --git a/node_modules/mingo/dist/esm/operators/query/evaluation/mod.js b/node_modules/mingo/dist/esm/operators/query/evaluation/mod.js new file mode 100644 index 0000000..46bb5d8 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/evaluation/mod.js @@ -0,0 +1,5 @@ +import { $mod as __mod, createQueryOperator } from "../../_predicates"; +const $mod = createQueryOperator(__mod); +export { + $mod +}; diff --git a/node_modules/mingo/dist/esm/operators/query/evaluation/regex.js b/node_modules/mingo/dist/esm/operators/query/evaluation/regex.js new file mode 100644 index 0000000..8d212f3 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/evaluation/regex.js @@ -0,0 +1,5 @@ +import { $regex as __regex, createQueryOperator } from "../../_predicates"; +const $regex = createQueryOperator(__regex); +export { + $regex +}; diff --git a/node_modules/mingo/dist/esm/operators/query/evaluation/where.js b/node_modules/mingo/dist/esm/operators/query/evaluation/where.js new file mode 100644 index 0000000..eb5aaf8 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/evaluation/where.js @@ -0,0 +1,13 @@ +import { assert, isFunction, truthy } from "../../../util"; +function $where(_, rhs, options) { + assert( + options.scriptEnabled, + "$where operator requires 'scriptEnabled' option to be true" + ); + const f = rhs; + assert(isFunction(f), "$where only accepts a Function object"); + return (obj) => truthy(f.call(obj), options?.useStrictMode); +} +export { + $where +}; diff --git a/node_modules/mingo/dist/esm/operators/query/index.js b/node_modules/mingo/dist/esm/operators/query/index.js new file mode 100644 index 0000000..65095f5 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/index.js @@ -0,0 +1,6 @@ +export * from "./array"; +export * from "./bitwise"; +export * from "./comparison"; +export * from "./element"; +export * from "./evaluation"; +export * from "./logical"; diff --git a/node_modules/mingo/dist/esm/operators/query/logical/and.js b/node_modules/mingo/dist/esm/operators/query/logical/and.js new file mode 100644 index 0000000..fe31051 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/logical/and.js @@ -0,0 +1,13 @@ +import { Query } from "../../../query"; +import { assert, isArray } from "../../../util"; +const $and = (_, rhs, options) => { + assert( + isArray(rhs), + "Invalid expression: $and expects value to be an Array." + ); + const queries = rhs.map((expr) => new Query(expr, options)); + return (obj) => queries.every((q) => q.test(obj)); +}; +export { + $and +}; diff --git a/node_modules/mingo/dist/esm/operators/query/logical/index.js b/node_modules/mingo/dist/esm/operators/query/logical/index.js new file mode 100644 index 0000000..7ee5e8a --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/logical/index.js @@ -0,0 +1,4 @@ +export * from "./and"; +export * from "./nor"; +export * from "./not"; +export * from "./or"; diff --git a/node_modules/mingo/dist/esm/operators/query/logical/nor.js b/node_modules/mingo/dist/esm/operators/query/logical/nor.js new file mode 100644 index 0000000..f484e43 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/logical/nor.js @@ -0,0 +1,13 @@ +import { assert, isArray } from "../../../util"; +import { $or } from "./or"; +const $nor = (_, rhs, options) => { + assert( + isArray(rhs), + "Invalid expression. $nor expects value to be an array." + ); + const f = $or("$or", rhs, options); + return (obj) => !f(obj); +}; +export { + $nor +}; diff --git a/node_modules/mingo/dist/esm/operators/query/logical/not.js b/node_modules/mingo/dist/esm/operators/query/logical/not.js new file mode 100644 index 0000000..3f3c23f --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/logical/not.js @@ -0,0 +1,11 @@ +import { Query } from "../../../query"; +import { normalize } from "../../../util"; +const $not = (selector, rhs, options) => { + const criteria = {}; + criteria[selector] = normalize(rhs); + const query = new Query(criteria, options); + return (obj) => !query.test(obj); +}; +export { + $not +}; diff --git a/node_modules/mingo/dist/esm/operators/query/logical/or.js b/node_modules/mingo/dist/esm/operators/query/logical/or.js new file mode 100644 index 0000000..b7d4024 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/query/logical/or.js @@ -0,0 +1,10 @@ +import { Query } from "../../../query"; +import { assert, isArray } from "../../../util"; +const $or = (_, rhs, options) => { + assert(isArray(rhs), "Invalid expression. $or expects value to be an Array"); + const queries = rhs.map((expr) => new Query(expr, options)); + return (obj) => queries.some((q) => q.test(obj)); +}; +export { + $or +}; diff --git a/node_modules/mingo/dist/esm/operators/update/_internal.js b/node_modules/mingo/dist/esm/operators/update/_internal.js new file mode 100644 index 0000000..baf3fc5 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/_internal.js @@ -0,0 +1,105 @@ +import { Context, initOptions } from "../../core"; +import * as booleanOperators from "../../operators/expression/boolean"; +import * as comparisonOperators from "../../operators/expression/comparison"; +import * as queryOperators from "../../operators/query"; +import { Query } from "../../query"; +import { + assert, + cloneDeep, + isArray, + isDate, + isObject, + isRegExp, + resolve, + walk +} from "../../util"; +const UPDATE_OPTIONS = { + cloneMode: "copy", + queryOptions: initOptions({ + context: Context.init().addQueryOps(queryOperators).addExpressionOps(booleanOperators).addExpressionOps(comparisonOperators) + }) +}; +const clone = (mode, val) => { + switch (mode) { + case "deep": + return cloneDeep(val); + case "copy": { + if (isDate(val)) return new Date(val); + if (isArray(val)) return [...val]; + if (isObject(val)) return { ...val }; + if (isRegExp(val)) return new RegExp(val); + return val; + } + default: + return val; + } +}; +const FILTER_IDENT_RE = /^[a-z]+[a-zA-Z0-9]*$/; +function tokenizePath(selector) { + if (!selector.includes(".$")) { + return [{ parent: selector, selector }, []]; + } + const begin = selector.indexOf(".$"); + const end = selector.indexOf("]"); + const parent = selector.substring(0, begin); + const child = selector.substring(begin + 3, end); + assert( + child === "" || FILTER_IDENT_RE.test(child), + "The filter must begin with a lowercase letter and contain only alphanumeric characters." + ); + const rest = selector.substring(end + 2); + const [next, elems] = rest ? tokenizePath(rest) : []; + return [ + { selector, parent, child: child || "$", next }, + [child, ...elems || []].filter(Boolean) + ]; +} +const applyUpdate = (o, n, q, f, opts) => { + const { parent, child: c, next } = n; + if (!c) { + let b = false; + const g = (u, k) => b = Boolean(f(u, k)) || b; + walk(o, parent, g, opts); + return b; + } + const t = resolve(o, parent); + if (!isArray(t)) return false; + return t.map((e, i) => { + if (q[c] && !q[c].test({ [c]: e })) return false; + return next ? applyUpdate(e, next, q, f, opts) : f(t, i); + }).some(Boolean); +}; +function walkExpression(expr, arrayFilter, options, callback) { + const res = []; + for (const [selector, val] of Object.entries(expr)) { + const [node, vars] = tokenizePath(selector); + if (!vars.length) { + if (callback(val, node, {})) res.push(node.parent); + } else { + const conditions = {}; + arrayFilter.forEach((o) => { + Object.keys(o).forEach((k) => { + vars.forEach((w) => { + if (k === w || k.startsWith(w + ".")) { + conditions[w] = conditions[w] || {}; + Object.assign(conditions[w], { [k]: o[k] }); + } + }); + }); + }); + const queries = {}; + for (const [k, condition] of Object.entries(conditions)) { + queries[k] = new Query(condition, options.queryOptions); + } + if (callback(val, node, queries)) res.push(node.parent); + } + } + return res; +} +export { + UPDATE_OPTIONS, + applyUpdate, + clone, + tokenizePath, + walkExpression +}; diff --git a/node_modules/mingo/dist/esm/operators/update/addToSet.js b/node_modules/mingo/dist/esm/operators/update/addToSet.js new file mode 100644 index 0000000..c5163b8 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/addToSet.js @@ -0,0 +1,31 @@ +import { has, intersection, isObject, unique } from "../../util"; +import { + applyUpdate, + clone, + UPDATE_OPTIONS, + walkExpression +} from "./_internal"; +const $addToSet = (obj, expr, arrayFilters = [], options = UPDATE_OPTIONS) => { + return walkExpression(expr, arrayFilters, options, (val, node, queries) => { + const args = { $each: [val] }; + if (isObject(val) && has(val, "$each")) { + Object.assign(args, val); + } + return applyUpdate( + obj, + node, + queries, + (o, k) => { + const prev = o[k] ||= []; + const common = intersection([prev, args.$each]); + if (common.length === args.$each.length) return false; + o[k] = clone(options.cloneMode, unique(prev.concat(args.$each))); + return true; + }, + { buildGraph: true } + ); + }); +}; +export { + $addToSet +}; diff --git a/node_modules/mingo/dist/esm/operators/update/bit.js b/node_modules/mingo/dist/esm/operators/update/bit.js new file mode 100644 index 0000000..7fd1392 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/bit.js @@ -0,0 +1,43 @@ +import { assert, isNumber } from "../../util"; +import { + applyUpdate, + UPDATE_OPTIONS, + walkExpression +} from "./_internal"; +const BIT_OPS = /* @__PURE__ */ new Set(["and", "or", "xor"]); +const $bit = (obj, expr, arrayFilters = [], options = UPDATE_OPTIONS) => { + return walkExpression(expr, arrayFilters, options, (val, node, queries) => { + const op = Object.keys(val); + assert( + op.length === 1 && BIT_OPS.has(op[0]), + `Invalid bit operator '${op[0]}'. Must be one of 'and', 'or', or 'xor'.` + ); + return applyUpdate( + obj, + node, + queries, + (o, k) => { + let n = o[k]; + const v = val[op[0]]; + if (n !== void 0 && !(isNumber(n) && isNumber(v))) return false; + n = n || 0; + switch (op[0]) { + case "and": + o[k] = n & v; + break; + case "or": + o[k] = n | v; + break; + case "xor": + o[k] = n ^ v; + break; + } + return o[k] !== n; + }, + { buildGraph: true } + ); + }); +}; +export { + $bit +}; diff --git a/node_modules/mingo/dist/esm/operators/update/currentDate.js b/node_modules/mingo/dist/esm/operators/update/currentDate.js new file mode 100644 index 0000000..ff84d3a --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/currentDate.js @@ -0,0 +1,23 @@ +import { + applyUpdate, + UPDATE_OPTIONS, + walkExpression +} from "./_internal"; +const $currentDate = (obj, expr, arrayFilters = [], options = UPDATE_OPTIONS) => { + const now = Date.now(); + return walkExpression(expr, arrayFilters, options, (_, node, queries) => { + return applyUpdate( + obj, + node, + queries, + (o, k) => { + o[k] = now; + return true; + }, + { buildGraph: true } + ); + }); +}; +export { + $currentDate +}; diff --git a/node_modules/mingo/dist/esm/operators/update/inc.js b/node_modules/mingo/dist/esm/operators/update/inc.js new file mode 100644 index 0000000..acd7a7a --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/inc.js @@ -0,0 +1,26 @@ +import { assert, isNumber, resolve } from "../../util"; +import { applyUpdate, UPDATE_OPTIONS, walkExpression } from "./_internal"; +const $inc = (obj, expr, arrayFilters = [], options = UPDATE_OPTIONS) => { + return walkExpression(expr, arrayFilters, options, (val, node, queries) => { + if (!node.child) { + const n = resolve(obj, node.parent); + assert( + n === void 0 || isNumber(n), + `cannot apply $inc to a value of non-numeric type` + ); + } + return applyUpdate( + obj, + node, + queries, + (o, k) => { + o[k] = (o[k] ||= 0) + val; + return true; + }, + { buildGraph: true } + ); + }); +}; +export { + $inc +}; diff --git a/node_modules/mingo/dist/esm/operators/update/index.js b/node_modules/mingo/dist/esm/operators/update/index.js new file mode 100644 index 0000000..29717dc --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/index.js @@ -0,0 +1,14 @@ +export * from "./addToSet"; +export * from "./bit"; +export * from "./currentDate"; +export * from "./inc"; +export * from "./max"; +export * from "./min"; +export * from "./mul"; +export * from "./pop"; +export * from "./pull"; +export * from "./pullAll"; +export * from "./push"; +export * from "./rename"; +export * from "./set"; +export * from "./unset"; diff --git a/node_modules/mingo/dist/esm/operators/update/max.js b/node_modules/mingo/dist/esm/operators/update/max.js new file mode 100644 index 0000000..6e1c42e --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/max.js @@ -0,0 +1,24 @@ +import { compare } from "../../util"; +import { + applyUpdate, + UPDATE_OPTIONS, + walkExpression +} from "./_internal"; +const $max = (obj, expr, arrayFilters = [], options = UPDATE_OPTIONS) => { + return walkExpression(expr, arrayFilters, options, (val, node, queries) => { + return applyUpdate( + obj, + node, + queries, + (o, k) => { + if (o[k] !== void 0 && compare(o[k], val) > -1) return false; + o[k] = val; + return true; + }, + { buildGraph: true } + ); + }); +}; +export { + $max +}; diff --git a/node_modules/mingo/dist/esm/operators/update/min.js b/node_modules/mingo/dist/esm/operators/update/min.js new file mode 100644 index 0000000..3314921 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/min.js @@ -0,0 +1,24 @@ +import { compare } from "../../util"; +import { + applyUpdate, + UPDATE_OPTIONS, + walkExpression +} from "./_internal"; +const $min = (obj, expr, arrayFilters = [], options = UPDATE_OPTIONS) => { + return walkExpression(expr, arrayFilters, options, (val, node, queries) => { + return applyUpdate( + obj, + node, + queries, + (o, k) => { + if (o[k] !== void 0 && compare(o[k], val) < 1) return false; + o[k] = val; + return true; + }, + { buildGraph: true } + ); + }); +}; +export { + $min +}; diff --git a/node_modules/mingo/dist/esm/operators/update/mul.js b/node_modules/mingo/dist/esm/operators/update/mul.js new file mode 100644 index 0000000..5c5041e --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/mul.js @@ -0,0 +1,23 @@ +import { + applyUpdate, + UPDATE_OPTIONS, + walkExpression +} from "./_internal"; +const $mul = (obj, expr, arrayFilters = [], options = UPDATE_OPTIONS) => { + return walkExpression(expr, arrayFilters, options, (val, node, queries) => { + return applyUpdate( + obj, + node, + queries, + (o, k) => { + const prev = o[k]; + o[k] = o[k] === void 0 ? 0 : o[k] * val; + return o[k] !== prev; + }, + { buildGraph: true } + ); + }); +}; +export { + $mul +}; diff --git a/node_modules/mingo/dist/esm/operators/update/pop.js b/node_modules/mingo/dist/esm/operators/update/pop.js new file mode 100644 index 0000000..da265d3 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/pop.js @@ -0,0 +1,27 @@ +import { assert, isArray } from "../../util"; +import { + applyUpdate, + UPDATE_OPTIONS, + walkExpression +} from "./_internal"; +const $pop = (obj, expr, arrayFilters = [], options = UPDATE_OPTIONS) => { + return walkExpression(expr, arrayFilters, options, (val, node, queries) => { + return applyUpdate(obj, node, queries, (o, k) => { + const arr = o[k]; + assert( + isArray(arr), + `path '${node.selector}' contains an element of non-array type.` + ); + if (!arr.length) return false; + if (val === -1) { + arr.splice(0, 1); + } else { + arr.pop(); + } + return true; + }); + }); +}; +export { + $pop +}; diff --git a/node_modules/mingo/dist/esm/operators/update/pull.js b/node_modules/mingo/dist/esm/operators/update/pull.js new file mode 100644 index 0000000..b6a31cb --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/pull.js @@ -0,0 +1,32 @@ +import { Query } from "../../query"; +import { isObject, isOperator } from "../../util"; +import { + applyUpdate, + UPDATE_OPTIONS, + walkExpression +} from "./_internal"; +const $pull = (obj, expr, arrayFilters = [], options = UPDATE_OPTIONS) => { + return walkExpression(expr, arrayFilters, options, (val, node, queries) => { + const wrap = !isObject(val) || Object.keys(val).some(isOperator); + const query = new Query( + wrap ? { k: val } : val, + options.queryOptions + ); + const pred = wrap ? (v) => query.test({ k: v }) : (v) => query.test(v); + return applyUpdate(obj, node, queries, (o, k) => { + const prev = o[k]; + const curr = new Array(); + const found = prev.map((v) => { + const b = pred(v); + if (!b) curr.push(v); + return b; + }).some(Boolean); + if (!found) return false; + o[k] = curr; + return true; + }); + }); +}; +export { + $pull +}; diff --git a/node_modules/mingo/dist/esm/operators/update/pullAll.js b/node_modules/mingo/dist/esm/operators/update/pullAll.js new file mode 100644 index 0000000..afe23f8 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/pullAll.js @@ -0,0 +1,12 @@ +import { UPDATE_OPTIONS } from "./_internal"; +import { $pull } from "./pull"; +const $pullAll = (obj, expr, arrayFilters = [], options = UPDATE_OPTIONS) => { + const pullExpr = {}; + Object.entries(expr).forEach(([k, v]) => { + pullExpr[k] = { $in: v }; + }); + return $pull(obj, pullExpr, arrayFilters, options); +}; +export { + $pullAll +}; diff --git a/node_modules/mingo/dist/esm/operators/update/push.js b/node_modules/mingo/dist/esm/operators/update/push.js new file mode 100644 index 0000000..50be019 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/push.js @@ -0,0 +1,50 @@ +import { compare, has, isEqual, isNumber, isObject, resolve } from "../../util"; +import { + applyUpdate, + clone, + UPDATE_OPTIONS, + walkExpression +} from "./_internal"; +const OPERATOR_MODIFIERS = Object.freeze([ + "$each", + "$slice", + "$sort", + "$position" +]); +const $push = (obj, expr, arrayFilters = [], options = UPDATE_OPTIONS) => { + return walkExpression(expr, arrayFilters, options, (val, node, queries) => { + const args = { + $each: [val] + }; + if (isObject(val) && OPERATOR_MODIFIERS.some((m) => has(val, m))) { + Object.assign(args, val); + } + return applyUpdate( + obj, + node, + queries, + (o, k) => { + const arr = o[k] ||= []; + const prev = arr.slice(0, args.$slice || arr.length); + const oldsize = arr.length; + const pos = isNumber(args.$position) ? args.$position : arr.length; + arr.splice(pos, 0, ...clone(options.cloneMode, args.$each)); + if (args.$sort) { + const sortKey = isObject(args.$sort) ? Object.keys(args.$sort || {}).pop() : ""; + const order = !sortKey ? args.$sort : args.$sort[sortKey]; + const f = !sortKey ? (a) => a : (a) => resolve(a, sortKey); + arr.sort((a, b) => order * compare(f(a), f(b))); + } + if (isNumber(args.$slice)) { + if (args.$slice < 0) arr.splice(0, arr.length + args.$slice); + else arr.splice(args.$slice); + } + return oldsize != arr.length || !isEqual(prev, arr); + }, + { descendArray: true, buildGraph: true } + ); + }); +}; +export { + $push +}; diff --git a/node_modules/mingo/dist/esm/operators/update/rename.js b/node_modules/mingo/dist/esm/operators/update/rename.js new file mode 100644 index 0000000..db0f3ff --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/rename.js @@ -0,0 +1,22 @@ +import { has } from "../../util"; +import { + applyUpdate, + UPDATE_OPTIONS, + walkExpression +} from "./_internal"; +import { $set } from "./set"; +const $rename = (obj, expr, arrayFilters = [], options = UPDATE_OPTIONS) => { + const res = []; + const changed = walkExpression(expr, arrayFilters, options, (val, node, queries) => { + return applyUpdate(obj, node, queries, (o, k) => { + if (!has(o, k)) return false; + res.push(...$set(obj, { [val]: o[k] }, arrayFilters, options)); + delete o[k]; + return true; + }); + }); + return Array.from(new Set(changed.concat(res))); +}; +export { + $rename +}; diff --git a/node_modules/mingo/dist/esm/operators/update/set.js b/node_modules/mingo/dist/esm/operators/update/set.js new file mode 100644 index 0000000..6382d54 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/set.js @@ -0,0 +1,25 @@ +import { isEqual } from "../../util"; +import { + applyUpdate, + clone, + UPDATE_OPTIONS, + walkExpression +} from "./_internal"; +const $set = (obj, expr, arrayFilters = [], options = UPDATE_OPTIONS) => { + return walkExpression(expr, arrayFilters, options, (val, node, queries) => { + return applyUpdate( + obj, + node, + queries, + (o, k) => { + if (isEqual(o[k], val)) return false; + o[k] = clone(options.cloneMode, val); + return true; + }, + { buildGraph: true } + ); + }); +}; +export { + $set +}; diff --git a/node_modules/mingo/dist/esm/operators/update/unset.js b/node_modules/mingo/dist/esm/operators/update/unset.js new file mode 100644 index 0000000..30e0bc0 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/update/unset.js @@ -0,0 +1,18 @@ +import { has, isArray } from "../../util"; +import { applyUpdate, UPDATE_OPTIONS, walkExpression } from "./_internal"; +const $unset = (obj, expr, arrayFilters = [], options = UPDATE_OPTIONS) => { + return walkExpression(expr, arrayFilters, options, (_, node, queries) => { + return applyUpdate(obj, node, queries, (o, k) => { + if (!has(o, k)) return false; + if (isArray(o)) { + o[k] = null; + } else { + delete o[k]; + } + return true; + }); + }); +}; +export { + $unset +}; diff --git a/node_modules/mingo/dist/esm/operators/window/_internal.js b/node_modules/mingo/dist/esm/operators/window/_internal.js new file mode 100644 index 0000000..96c4670 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/window/_internal.js @@ -0,0 +1,76 @@ +import { groupBy, isEqual, MingoError } from "../../util"; +import { $push } from "../accumulator"; +import { MILLIS_PER_DAY } from "../expression/date/_internal"; +import { isUnbounded } from "../pipeline/_internal"; +const MILLIS_PER_UNIT = { + week: MILLIS_PER_DAY * 7, + day: MILLIS_PER_DAY, + hour: MILLIS_PER_DAY / 24, + minute: 6e4, + second: 1e3, + millisecond: 1 +}; +const memo = /* @__PURE__ */ new WeakMap(); +function withMemo(collection, expr, cacheFn, fn) { + if (!isUnbounded(expr.parentExpr.output[expr.field].window)) { + return fn(cacheFn()); + } + if (!memo.has(collection)) { + memo.set(collection, { [expr.field]: cacheFn() }); + } + const data = memo.get(collection); + if (data[expr.field] === void 0) { + data[expr.field] = cacheFn(); + } + let failed = false; + try { + return fn(data[expr.field]); + } catch { + failed = true; + } finally { + if (failed || expr.documentNumber === collection.length) { + delete data[expr.field]; + if (Object.keys(data).length === 0) memo.delete(collection); + } + } +} +function rank(_, collection, expr, options, dense) { + return withMemo( + collection, + expr, + () => { + const sortKey = "$" + Object.keys(expr.parentExpr.sortBy)[0]; + const values = $push(collection, sortKey, options); + const groups = groupBy( + values, + (_2, n) => values[n], + options.hashFunction + ); + return { values, groups }; + }, + (input) => { + const { values, groups: partitions } = input; + if (partitions.size == collection.length) { + return expr.documentNumber; + } + const current = values[expr.documentNumber - 1]; + let i = 0; + let offset = 0; + for (const key of partitions.keys()) { + if (isEqual(current, key)) { + return dense ? i + 1 : offset + 1; + } + i++; + offset += partitions.get(key).length; + } + throw new MingoError( + "rank: invalid return value. please submit a bug report." + ); + } + ); +} +export { + MILLIS_PER_UNIT, + rank, + withMemo +}; diff --git a/node_modules/mingo/dist/esm/operators/window/denseRank.js b/node_modules/mingo/dist/esm/operators/window/denseRank.js new file mode 100644 index 0000000..7463ec0 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/window/denseRank.js @@ -0,0 +1,12 @@ +import { rank } from "./_internal"; +const $denseRank = (obj, collection, expr, options) => rank( + obj, + collection, + expr, + options, + true + /*dense*/ +); +export { + $denseRank +}; diff --git a/node_modules/mingo/dist/esm/operators/window/derivative.js b/node_modules/mingo/dist/esm/operators/window/derivative.js new file mode 100644 index 0000000..2d659ef --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/window/derivative.js @@ -0,0 +1,19 @@ +import { isNumber } from "../../util"; +import { $push } from "../accumulator"; +import { MILLIS_PER_UNIT } from "./_internal"; +const $derivative = (_, collection, expr, options) => { + if (collection.length < 2) return null; + const { input, unit } = expr.inputExpr; + const sortKey = "$" + Object.keys(expr.parentExpr.sortBy)[0]; + const values = [collection[0], collection[collection.length - 1]]; + const points = $push(values, [sortKey, input], options).filter( + ([x, y]) => isNumber(+x) && isNumber(+y) + ); + if (points.length !== 2) return null; + const [[x1, y1], [x2, y2]] = points; + const deltaX = (x2 - x1) / (MILLIS_PER_UNIT[unit] || 1); + return (y2 - y1) / deltaX; +}; +export { + $derivative +}; diff --git a/node_modules/mingo/dist/esm/operators/window/documentNumber.js b/node_modules/mingo/dist/esm/operators/window/documentNumber.js new file mode 100644 index 0000000..61cf8b1 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/window/documentNumber.js @@ -0,0 +1,4 @@ +const $documentNumber = (_obj, _collection, expr, _options) => expr.documentNumber; +export { + $documentNumber +}; diff --git a/node_modules/mingo/dist/esm/operators/window/expMovingAvg.js b/node_modules/mingo/dist/esm/operators/window/expMovingAvg.js new file mode 100644 index 0000000..2adec25 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/window/expMovingAvg.js @@ -0,0 +1,29 @@ +import { assert, isNumber } from "../../util"; +import { $push } from "../accumulator"; +import { withMemo } from "./_internal"; +const $expMovingAvg = (_, collection, expr, options) => { + const { input, N, alpha } = expr.inputExpr; + assert( + !(N && alpha), + `You must specify either N or alpha. You cannot specify both.` + ); + return withMemo( + collection, + expr, + () => { + const series = $push(collection, input, options).filter(isNumber); + return series.length === collection.length ? series : null; + }, + (series) => { + if (series === null) return null; + if (expr.documentNumber == 1) return series[0]; + const weight = N != void 0 ? 2 / (N + 1) : alpha; + const i = expr.documentNumber - 1; + series[i] = series[i] * weight + series[i - 1] * (1 - weight); + return series[i]; + } + ); +}; +export { + $expMovingAvg +}; diff --git a/node_modules/mingo/dist/esm/operators/window/index.js b/node_modules/mingo/dist/esm/operators/window/index.js new file mode 100644 index 0000000..62dd3dd --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/window/index.js @@ -0,0 +1,9 @@ +export * from "./denseRank"; +export * from "./derivative"; +export * from "./documentNumber"; +export * from "./expMovingAvg"; +export * from "./integral"; +export * from "./linearFill"; +export * from "./locf"; +export * from "./rank"; +export * from "./shift"; diff --git a/node_modules/mingo/dist/esm/operators/window/integral.js b/node_modules/mingo/dist/esm/operators/window/integral.js new file mode 100644 index 0000000..96686d7 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/window/integral.js @@ -0,0 +1,23 @@ +import { isNumber } from "../../util"; +import { $push } from "../accumulator"; +import { MILLIS_PER_UNIT } from "./_internal"; +const $integral = (_, collection, expr, options) => { + const { input, unit } = expr.inputExpr; + const sortKey = "$" + Object.keys(expr.parentExpr.sortBy)[0]; + const points = $push(collection, [sortKey, input], options).filter( + ([x, y]) => isNumber(+x) && isNumber(+y) + ); + if (points.length !== collection.length) return null; + let result = 0; + const size = collection.length; + for (let k = 1; k < size; k++) { + const [x1, y1] = points[k - 1]; + const [x2, y2] = points[k]; + const deltaX = (x2 - x1) / (MILLIS_PER_UNIT[unit] || 1); + result += 0.5 * (y1 + y2) * deltaX; + } + return result; +}; +export { + $integral +}; diff --git a/node_modules/mingo/dist/esm/operators/window/linearFill.js b/node_modules/mingo/dist/esm/operators/window/linearFill.js new file mode 100644 index 0000000..f2dcf7a --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/window/linearFill.js @@ -0,0 +1,48 @@ +import { isNumber } from "../../util"; +import { $push } from "../accumulator"; +import { withMemo } from "./_internal"; +const interpolate = (x1, y1, x2, y2, x) => y1 + (x - x1) * ((y2 - y1) / (x2 - x1)); +const $linearFill = (_, collection, expr, options) => { + return withMemo( + collection, + expr, + () => { + const sortKey = "$" + Object.keys(expr.parentExpr.sortBy)[0]; + const points = $push( + collection, + [sortKey, expr.inputExpr], + options + ).filter(([x, _2]) => isNumber(+x)); + if (points.length !== collection.length) return null; + let lindex = -1; + let rindex = 0; + while (rindex < points.length) { + while (lindex + 1 < points.length && isNumber(points[lindex + 1][1])) { + lindex++; + rindex = lindex; + } + while (rindex + 1 < points.length && !isNumber(points[rindex + 1][1])) { + rindex++; + } + if (rindex + 1 >= points.length) break; + rindex++; + while (lindex + 1 < rindex) { + points[lindex + 1][1] = interpolate( + points[lindex][0], + points[lindex][1], + points[rindex][0], + points[rindex][1], + points[lindex + 1][0] + ); + lindex++; + } + lindex = rindex; + } + return points.map(([_2, y]) => y); + }, + (values) => values[expr.documentNumber - 1] + ); +}; +export { + $linearFill +}; diff --git a/node_modules/mingo/dist/esm/operators/window/locf.js b/node_modules/mingo/dist/esm/operators/window/locf.js new file mode 100644 index 0000000..7c66df0 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/window/locf.js @@ -0,0 +1,20 @@ +import { isNil } from "../../util"; +import { $push } from "../accumulator/push"; +import { withMemo } from "./_internal"; +const $locf = (_, collection, expr, options) => { + return withMemo( + collection, + expr, + () => { + const values = $push(collection, expr.inputExpr, options); + for (let i = 1; i < values.length; i++) { + if (isNil(values[i])) values[i] = values[i - 1]; + } + return values; + }, + (series) => series[expr.documentNumber - 1] + ); +}; +export { + $locf +}; diff --git a/node_modules/mingo/dist/esm/operators/window/rank.js b/node_modules/mingo/dist/esm/operators/window/rank.js new file mode 100644 index 0000000..33ec3ac --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/window/rank.js @@ -0,0 +1,12 @@ +import { rank } from "./_internal"; +const $rank = (obj, collection, expr, options) => rank( + obj, + collection, + expr, + options, + false + /*dense*/ +); +export { + $rank +}; diff --git a/node_modules/mingo/dist/esm/operators/window/shift.js b/node_modules/mingo/dist/esm/operators/window/shift.js new file mode 100644 index 0000000..0497138 --- /dev/null +++ b/node_modules/mingo/dist/esm/operators/window/shift.js @@ -0,0 +1,12 @@ +import { computeValue } from "../../core"; +const $shift = (obj, collection, expr, options) => { + const input = expr.inputExpr; + const shiftedIndex = expr.documentNumber - 1 + input.by; + if (shiftedIndex < 0 || shiftedIndex > collection.length - 1) { + return input.default ? computeValue(obj, input.default, null, options) : null; + } + return computeValue(collection[shiftedIndex], input.output, null, options); +}; +export { + $shift +}; diff --git a/node_modules/mingo/dist/esm/query.js b/node_modules/mingo/dist/esm/query.js new file mode 100644 index 0000000..fea449b --- /dev/null +++ b/node_modules/mingo/dist/esm/query.js @@ -0,0 +1,93 @@ +import { getOperator, initOptions } from "./core"; +import { Cursor } from "./cursor"; +import { assert, cloneDeep, isObject, isOperator, normalize } from "./util"; +const TOP_LEVEL_OPS = new Set( + Array.from(["$and", "$or", "$nor", "$expr", "$jsonSchema"]) +); +class Query { + #compiled; + #options; + #condition; + constructor(condition, options) { + this.#condition = cloneDeep(condition); + this.#options = initOptions(options); + this.#compiled = []; + this.compile(); + } + compile() { + assert( + isObject(this.#condition), + `query criteria must be an object: ${JSON.stringify(this.#condition)}` + ); + const whereOperator = {}; + for (const [field, expr] of Object.entries(this.#condition)) { + if ("$where" === field) { + assert( + this.#options.scriptEnabled, + "$where operator requires 'scriptEnabled' option to be true." + ); + Object.assign(whereOperator, { field, expr }); + } else if (TOP_LEVEL_OPS.has(field)) { + this.processOperator(field, field, expr); + } else { + assert(!isOperator(field), `unknown top level operator: ${field}`); + for (const [operator, val] of Object.entries( + normalize(expr) + )) { + this.processOperator(field, operator, val); + } + } + if (whereOperator.field) { + this.processOperator( + whereOperator.field, + whereOperator.field, + whereOperator.expr + ); + } + } + } + processOperator(field, operator, value) { + const call = getOperator("query", operator, this.#options); + assert(!!call, `unknown query operator ${operator}`); + this.#compiled.push(call(field, value, this.#options)); + } + /** + * Checks if the object passes the query criteria. Returns true if so, false otherwise. + * + * @param obj The object to test + * @returns {boolean} + */ + test(obj) { + return this.#compiled.every((p) => p(obj)); + } + /** + * Returns a cursor to select matching documents from the input source. + * + * @param source A source providing a sequence of documents + * @param projection An optional projection criteria + * @returns {Cursor} A Cursor for iterating over the results + */ + find(collection, projection) { + return new Cursor( + collection, + (o) => this.test(o), + projection || {}, + this.#options + ); + } + /** + * Remove matched documents from the collection returning the remainder + * + * @param collection An array of documents + * @returns {Array} A new array with matching elements removed + */ + remove(collection) { + return collection.reduce((acc, obj) => { + if (!this.test(obj)) acc.push(obj); + return acc; + }, []); + } +} +export { + Query +}; diff --git a/node_modules/mingo/dist/esm/types.js b/node_modules/mingo/dist/esm/types.js new file mode 100644 index 0000000..922cd16 --- /dev/null +++ b/node_modules/mingo/dist/esm/types.js @@ -0,0 +1,14 @@ +const TIME_UNITS = [ + "year", + "quarter", + "month", + "week", + "day", + "hour", + "minute", + "second", + "millisecond" +]; +export { + TIME_UNITS +}; diff --git a/node_modules/mingo/dist/esm/updater.js b/node_modules/mingo/dist/esm/updater.js new file mode 100644 index 0000000..71ff79e --- /dev/null +++ b/node_modules/mingo/dist/esm/updater.js @@ -0,0 +1,32 @@ +import * as UPDATE_OPERATORS from "./operators/update"; +import { UPDATE_OPTIONS } from "./operators/update/_internal"; +import { Query } from "./query"; +import { assert, has } from "./util"; +function createUpdater(defaultOptions) { + defaultOptions = defaultOptions ?? UPDATE_OPTIONS; + return (obj, expr, arrayFilters = [], condition = {}, options = defaultOptions) => { + const entry = Object.entries(expr); + assert( + entry.length === 1, + "Update expression must contain only one operator." + ); + const [op, args] = entry[0]; + assert( + has(UPDATE_OPERATORS, op), + `Update operator '${op}' is not supported.` + ); + const mutate = UPDATE_OPERATORS[op]; + if (Object.keys(condition).length) { + const q = new Query(condition, options.queryOptions); + if (!q.test(obj)) return []; + } + return mutate(obj, args, arrayFilters, options); + }; +} +const update = createUpdater(); +const updateObject = update; +export { + createUpdater, + update, + updateObject +}; diff --git a/node_modules/mingo/dist/esm/util.js b/node_modules/mingo/dist/esm/util.js new file mode 100644 index 0000000..138936f --- /dev/null +++ b/node_modules/mingo/dist/esm/util.js @@ -0,0 +1,573 @@ +class MingoError extends Error { +} +const MISSING = Symbol("missing"); +const CYCLE_FOUND_ERROR = Object.freeze( + new Error("mingo: cycle detected while processing object/array") +); +const DEFAULT_HASH_FUNCTION = (value) => { + const s = stringify(value); + let hash = 0; + let i = s.length; + while (i) hash = (hash << 5) - hash ^ s.charCodeAt(--i); + return hash >>> 0; +}; +const isPrimitive = (v) => typeof v !== "object" && typeof v !== "function" || v === null; +const isScalar = (v) => isPrimitive(v) || isDate(v) || isRegExp(v); +const SORT_ORDER = { + undefined: 1, + null: 2, + number: 3, + string: 4, + symbol: 5, + object: 6, + array: 7, + arraybuffer: 8, + boolean: 9, + date: 10, + regexp: 11, + function: 12 +}; +const compare = (a, b) => { + if (a === MISSING) a = void 0; + if (b === MISSING) b = void 0; + const [u, v] = [a, b].map((n) => SORT_ORDER[typeOf(n)] || 0); + if (u !== v) return u - v; + if (isEqual(a, b)) return 0; + if (a < b) return -1; + if (a > b) return 1; + return 0; +}; +class ValueMap extends Map { + // The hash function + #hashFn = DEFAULT_HASH_FUNCTION; + // maps the hashcode to key set + #keyMap = /* @__PURE__ */ new Map(); + // returns a tuple of [, ]. Expects an object key. + #unpack = (key) => { + const hash = this.#hashFn(key); + return [(this.#keyMap.get(hash) || []).find((k) => isEqual(k, key)), hash]; + }; + constructor() { + super(); + } + /** + * Returns a new {@link ValueMap} object. + * @param fn An optional custom hash function + */ + static init(fn) { + const m = new ValueMap(); + if (fn) m.#hashFn = fn; + return m; + } + clear() { + super.clear(); + this.#keyMap.clear(); + } + /** + * @returns true if an element in the Map existed and has been removed, or false if the element does not exist. + */ + delete(key) { + if (isPrimitive(key)) return super.delete(key); + const [masterKey, hash] = this.#unpack(key); + if (!super.delete(masterKey)) return false; + this.#keyMap.set( + hash, + this.#keyMap.get(hash).filter((k) => !isEqual(k, masterKey)) + ); + return true; + } + /** + * Returns a specified element from the Map object. If the value that is associated to the provided key is an object, then you will get a reference to that object and any change made to that object will effectively modify it inside the Map. + * @returns Returns the element associated with the specified key. If no element is associated with the specified key, undefined is returned. + */ + get(key) { + if (isPrimitive(key)) return super.get(key); + const [masterKey, _] = this.#unpack(key); + return super.get(masterKey); + } + /** + * @returns boolean indicating whether an element with the specified key exists or not. + */ + has(key) { + if (isPrimitive(key)) return super.has(key); + const [masterKey, _] = this.#unpack(key); + return super.has(masterKey); + } + /** + * Adds a new element with a specified key and value to the Map. If an element with the same key already exists, the element will be updated. + */ + set(key, value) { + if (isPrimitive(key)) return super.set(key, value); + const [masterKey, hash] = this.#unpack(key); + if (super.has(masterKey)) { + super.set(masterKey, value); + } else { + super.set(key, value); + const keys = this.#keyMap.get(hash) || []; + keys.push(key); + this.#keyMap.set(hash, keys); + } + return this; + } + /** + * @returns the number of elements in the Map. + */ + get size() { + return super.size; + } +} +function assert(condition, message) { + if (!condition) throw new MingoError(message); +} +const STRING_REP = Object.keys(SORT_ORDER).reduce( + (memo, k) => { + memo["[object " + k[0].toUpperCase() + k.substring(1) + "]"] = k; + return memo; + }, + {} +); +function typeOf(v) { + const s = Object.prototype.toString.call(v); + return s === "[object Object]" ? v?.constructor?.name?.toLowerCase() || "object" : STRING_REP[s] || s.substring(8, s.length - 1).toLowerCase(); +} +const isBoolean = (v) => typeof v === "boolean"; +const isString = (v) => typeof v === "string"; +const isSymbol = (v) => typeof v === "symbol"; +const isNumber = (v) => !isNaN(v) && typeof v === "number"; +const isNotNaN = (v) => !(isNaN(v) && typeof v === "number"); +const isArray = Array.isArray; +function isObject(v) { + if (!v) return false; + const p = Object.getPrototypeOf(v); + return (p === Object.prototype || p === null) && typeOf(v) === "object"; +} +const isObjectLike = (v) => !isPrimitive(v); +const isDate = (v) => v instanceof Date; +const isRegExp = (v) => v instanceof RegExp; +const isFunction = (v) => typeof v === "function"; +const isNil = (v) => v === null || v === void 0; +const truthy = (arg, strict = true) => !!arg || strict && arg === ""; +const isEmpty = (x) => isNil(x) || isString(x) && !x || isArray(x) && x.length === 0 || isObject(x) && Object.keys(x).length === 0; +const ensureArray = (x) => isArray(x) ? x : [x]; +const has = (obj, prop) => !!obj && Object.prototype.hasOwnProperty.call(obj, prop); +const isTypedArray = (v) => typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView(v); +const cloneDeep = (v, refs) => { + if (isNil(v) || isBoolean(v) || isNumber(v) || isString(v)) return v; + if (isDate(v)) return new Date(v); + if (isRegExp(v)) return new RegExp(v); + if (isTypedArray(v)) { + const ctor = v.constructor; + return new ctor(v); + } + if (!(refs instanceof Set)) refs = /* @__PURE__ */ new Set(); + if (refs.has(v)) throw CYCLE_FOUND_ERROR; + refs.add(v); + try { + if (isArray(v)) { + const arr = new Array(v.length); + for (let i = 0; i < v.length; i++) arr[i] = cloneDeep(v[i], refs); + return arr; + } + if (isObject(v)) { + const obj = {}; + for (const k of Object.keys(v)) obj[k] = cloneDeep(v[k], refs); + return obj; + } + } finally { + refs.delete(v); + } + return v; +}; +const isMissing = (v) => v === MISSING; +function merge(target, input) { + if (isMissing(target) || isNil(target)) return input; + if (isMissing(input) || isNil(input)) return target; + if (isPrimitive(target) || isPrimitive(input)) return input; + if (isArray(target) && isArray(input)) { + assert( + target.length === input.length, + "arrays must be of equal length to merge." + ); + } + for (const k of Object.keys(input)) { + target[k] = merge(target[k], input[k]); + } + return target; +} +function intersection(input, hashFunction = DEFAULT_HASH_FUNCTION) { + const vmaps = [ValueMap.init(hashFunction), ValueMap.init(hashFunction)]; + if (input.length === 0) return []; + if (input.some((arr) => arr.length === 0)) return []; + if (input.length === 1) return [...input]; + input[input.length - 1].forEach((v) => vmaps[0].set(v, true)); + for (let i = input.length - 2; i > -1; i--) { + input[i].forEach((v) => { + if (vmaps[0].has(v)) vmaps[1].set(v, true); + }); + if (vmaps[1].size === 0) return []; + vmaps.reverse(); + vmaps[1].clear(); + } + return Array.from(vmaps[0].keys()); +} +function flatten(xs, depth = 1) { + const arr = new Array(); + function flatten2(ys, n) { + for (let i = 0, len = ys.length; i < len; i++) { + if (isArray(ys[i]) && (n > 0 || n < 0)) { + flatten2(ys[i], Math.max(-1, n - 1)); + } else { + arr.push(ys[i]); + } + } + } + flatten2(xs, depth); + return arr; +} +function getMembersOf(o) { + const props = {}; + while (o) { + for (const k of Object.getOwnPropertyNames(o)) + if (!(k in props)) props[k] = o[k]; + o = Object.getPrototypeOf(o); + } + return props; +} +function hasCustomString(o) { + while (o) { + if (Object.getOwnPropertyNames(o).includes("toString")) + return o["toString"] !== Object.prototype.toString; + o = Object.getPrototypeOf(o); + } + return false; +} +function isEqual(a, b) { + if (a === b || Object.is(a, b)) return true; + if (a === null || b === null) return false; + if (typeof a !== typeof b) return false; + if (typeof a !== "object") return false; + if (a.constructor !== b.constructor) return false; + if (a instanceof Date) return +a === +b; + if (a instanceof RegExp) return a.toString() === b.toString(); + const ctor = a.constructor; + if (ctor === Array || ctor === Object) { + const aKeys = Object.keys(a).sort(); + const bKeys = Object.keys(b).sort(); + if (aKeys.length !== bKeys.length) return false; + for (let i = 0, k = aKeys[i]; i < aKeys.length; k = aKeys[++i]) { + if (k !== bKeys[i] || !isEqual(a[k], b[k])) return false; + } + return true; + } + return hasCustomString(a) && a.toString() === b.toString(); +} +function unique(input, hashFunction = DEFAULT_HASH_FUNCTION) { + const m = ValueMap.init(hashFunction); + input.forEach((v) => m.set(v, true)); + return Array.from(m.keys()); +} +const stringify = (v, refs) => { + if (v === null) return "null"; + if (v === void 0) return "undefined"; + if (isString(v) || isNumber(v) || isBoolean(v)) return JSON.stringify(v); + if (isDate(v)) return v.toISOString(); + if (isRegExp(v) || isSymbol(v) || isFunction(v)) + return v.toString(); + if (!(refs instanceof Set)) refs = /* @__PURE__ */ new Set(); + if (refs.has(v)) throw CYCLE_FOUND_ERROR; + try { + refs.add(v); + if (isArray(v)) return "[" + v.map((s2) => stringify(s2, refs)).join(",") + "]"; + if (isObject(v)) { + const keys = Object.keys(v).sort(); + return "{" + keys.map((k) => `${k}:${stringify(v[k], refs)}`).join() + "}"; + } + const s = hasCustomString(v) ? v.toString() : stringify(getMembersOf(v), refs); + return typeOf(v) + "(" + s + ")"; + } finally { + refs.delete(v); + } +}; +function hashCode(value, hashFunction) { + if (isNil(value)) return null; + hashFunction = hashFunction || DEFAULT_HASH_FUNCTION; + return hashFunction(value); +} +function groupBy(collection, keyFn, hashFunction = DEFAULT_HASH_FUNCTION) { + if (collection.length < 1) return /* @__PURE__ */ new Map(); + const lookup = /* @__PURE__ */ new Map(); + const result = /* @__PURE__ */ new Map(); + for (let i = 0; i < collection.length; i++) { + const obj = collection[i]; + const key = keyFn(obj, i); + const hash = hashCode(key, hashFunction); + if (hash === null) { + if (result.has(null)) { + result.get(null).push(obj); + } else { + result.set(null, [obj]); + } + } else { + const existingKey = lookup.has(hash) ? lookup.get(hash).find((k) => isEqual(k, key)) : null; + if (isNil(existingKey)) { + result.set(key, [obj]); + if (lookup.has(hash)) { + lookup.get(hash).push(key); + } else { + lookup.set(hash, [key]); + } + } else { + result.get(existingKey).push(obj); + } + } + } + return result; +} +const MAX_ARRAY_PUSH = 5e4; +function into(target, ...rest) { + if (isArray(target)) { + for (const arr of rest) { + let i = Math.ceil(arr.length / MAX_ARRAY_PUSH); + let begin = 0; + while (i-- > 0) { + Array.prototype.push.apply( + target, + arr.slice(begin, begin + MAX_ARRAY_PUSH) + ); + begin += MAX_ARRAY_PUSH; + } + } + return target; + } else { + return rest.filter(isObjectLike).reduce((acc, item) => { + Object.assign(acc, item); + return acc; + }, target); + } +} +function getValue(obj, key) { + return isObjectLike(obj) ? obj[key] : void 0; +} +function unwrap(arr, depth) { + if (depth < 1) return arr; + while (depth-- && arr.length === 1) arr = arr[0]; + return arr; +} +function resolve(obj, selector, options) { + let depth = 0; + function resolve2(o, path) { + let value = o; + for (let i = 0; i < path.length; i++) { + const field = path[i]; + const isText = /^\d+$/.exec(field) === null; + if (isText && isArray(value)) { + if (i === 0 && depth > 0) break; + depth += 1; + const subpath = path.slice(i); + value = value.reduce((acc, item) => { + const v = resolve2(item, subpath); + if (v !== void 0) acc.push(v); + return acc; + }, []); + break; + } else { + value = getValue(value, field); + } + if (value === void 0) break; + } + return value; + } + const res = isScalar(obj) ? obj : resolve2(obj, selector.split(".")); + return isArray(res) && options?.unwrapArray ? unwrap(res, depth) : res; +} +function resolveGraph(obj, selector, options) { + const sep = selector.indexOf("."); + const key = sep == -1 ? selector : selector.substring(0, sep); + const next = selector.substring(sep + 1); + const hasNext = sep != -1; + if (isArray(obj)) { + const isIndex = /^\d+$/.test(key); + const arr = isIndex && options?.preserveIndex ? [...obj] : []; + if (isIndex) { + const index = parseInt(key); + let value2 = getValue(obj, index); + if (hasNext) { + value2 = resolveGraph(value2, next, options); + } + if (options?.preserveIndex) { + arr[index] = value2; + } else { + arr.push(value2); + } + } else { + for (const item of obj) { + const value2 = resolveGraph(item, selector, options); + if (options?.preserveMissing) { + arr.push(value2 == void 0 ? MISSING : value2); + } else if (value2 != void 0 || options?.preserveIndex) { + arr.push(value2); + } + } + } + return arr; + } + const res = options?.preserveKeys ? { ...obj } : {}; + let value = getValue(obj, key); + if (hasNext) { + value = resolveGraph(value, next, options); + } + if (value === void 0) return void 0; + res[key] = value; + return res; +} +function filterMissing(obj) { + if (isArray(obj)) { + for (let i = obj.length - 1; i >= 0; i--) { + if (obj[i] === MISSING) { + obj.splice(i, 1); + } else { + filterMissing(obj[i]); + } + } + } else if (isObject(obj)) { + for (const k in obj) { + if (has(obj, k)) { + filterMissing(obj[k]); + } + } + } +} +const NUMBER_RE = /^\d+$/; +function walk(obj, selector, fn, options) { + const names = selector.split("."); + const key = names[0]; + const next = names.slice(1).join("."); + if (names.length === 1) { + if (isObject(obj) || isArray(obj) && NUMBER_RE.test(key)) { + fn(obj, key); + } + } else { + if (options?.buildGraph && isNil(obj[key])) { + obj[key] = {}; + } + const item = obj[key]; + if (!item) return; + const isNextArrayIndex = !!(names.length > 1 && NUMBER_RE.test(names[1])); + if (isArray(item) && options?.descendArray && !isNextArrayIndex) { + item.forEach((e) => walk(e, next, fn, options)); + } else { + walk(item, next, fn, options); + } + } +} +function setValue(obj, selector, value) { + walk( + obj, + selector, + (item, key) => { + item[key] = isFunction(value) ? value(item[key]) : value; + }, + { buildGraph: true } + ); +} +function removeValue(obj, selector, options) { + walk( + obj, + selector, + (item, key) => { + if (isArray(item)) { + if (/^\d+$/.test(key)) { + item.splice(parseInt(key), 1); + } else if (options && options.descendArray) { + for (const elem of item) { + if (isObject(elem)) { + delete elem[key]; + } + } + } + } else if (isObject(item)) { + delete item[key]; + } + }, + options + ); +} +const OPERATOR_NAME_PATTERN = /^\$[a-zA-Z0-9_]+$/; +function isOperator(name) { + return OPERATOR_NAME_PATTERN.test(name); +} +function normalize(expr) { + if (isScalar(expr)) { + return isRegExp(expr) ? { $regex: expr } : { $eq: expr }; + } + if (isObjectLike(expr)) { + if (!Object.keys(expr).some(isOperator)) return { $eq: expr }; + if (has(expr, "$regex")) { + const newExpr = { ...expr }; + newExpr["$regex"] = new RegExp( + expr["$regex"], + expr["$options"] + ); + delete newExpr["$options"]; + return newExpr; + } + } + return expr; +} +function findInsertIndex(sorted, item, comparator = compare) { + let lo = 0; + let hi = sorted.length - 1; + while (lo <= hi) { + const mid = Math.round(lo + (hi - lo) / 2); + if (comparator(item, sorted[mid]) < 0) { + hi = mid - 1; + } else if (comparator(item, sorted[mid]) > 0) { + lo = mid + 1; + } else { + return mid; + } + } + return lo; +} +export { + MingoError, + ValueMap, + assert, + cloneDeep, + compare, + ensureArray, + filterMissing, + findInsertIndex, + flatten, + groupBy, + has, + hashCode, + intersection, + into, + isArray, + isBoolean, + isDate, + isEmpty, + isEqual, + isFunction, + isNil, + isNotNaN, + isNumber, + isObject, + isObjectLike, + isOperator, + isRegExp, + isString, + isSymbol, + merge, + normalize, + removeValue, + resolve, + resolveGraph, + setValue, + stringify, + truthy, + typeOf, + unique, + walk +}; diff --git a/node_modules/mingo/dist/types/aggregator.d.ts b/node_modules/mingo/dist/types/aggregator.d.ts new file mode 100644 index 0000000..02cee02 --- /dev/null +++ b/node_modules/mingo/dist/types/aggregator.d.ts @@ -0,0 +1,27 @@ +import { Options } from "./core"; +import { Iterator, Source } from "./lazy"; +import { AnyObject } from "./types"; +/** + * Provides functionality for the mongoDB aggregation pipeline + * + * @param pipeline an Array of pipeline operators + * @param options An optional Options to pass the aggregator + * @constructor + */ +export declare class Aggregator { + #private; + constructor(pipeline: AnyObject[], options?: Partial); + /** + * Returns an {@link Iterator} for lazy evaluation of the pipeline. + * + * @param collection An array or iterator object + * @returns {Iterator} an iterator object + */ + stream(collection: Source, options?: Options): Iterator; + /** + * Return the results of the aggregation as an array. + * + * @param collection + */ + run(collection: Source, options?: Options): T[]; +} diff --git a/node_modules/mingo/dist/types/core.d.ts b/node_modules/mingo/dist/types/core.d.ts new file mode 100644 index 0000000..9ebaa69 --- /dev/null +++ b/node_modules/mingo/dist/types/core.d.ts @@ -0,0 +1,194 @@ +import { Iterator } from "./lazy"; +import { Any, AnyObject, Callback, HashFunction, Predicate, WindowOperatorInput } from "./types"; +/** + * Resolves the given string to a Collection. + * This is useful for operators that require a second collection to use such as $lookup and $out. + * The collection is not cached and will be resolved each time it is used. + */ +export type CollectionResolver = (name: string) => AnyObject[]; +/** Specification for collation options */ +export interface CollationSpec { + readonly locale: string; + readonly caseLevel?: boolean; + readonly caseFirst?: "upper" | "lower" | "off"; + readonly strength?: 1 | 2 | 3; + readonly numericOrdering?: boolean; + readonly alternate?: string; + readonly maxVariable?: never; + readonly backwards?: never; +} +/** + * JSON schema validator + */ +export type JsonSchemaValidator = (schema: AnyObject) => Predicate; +/** + * Specified how input and output documents are processed. + */ +export declare enum ProcessingMode { + /** Do not clone inputs or outputs. Resulting documents may share references. @default */ + CLONE_OFF = 0, + /** Clone input documents to maintain immutability of original input. */ + CLONE_INPUT = 1, + /** Clone output documents to ensure distinct objects without shared references. */ + CLONE_OUTPUT = 2, + /** Clone input and output documents. */ + CLONE_ALL = 3 +} +/** + * Generic options interface passed down to all operators + */ +export interface Options { + /** The key that is used to lookup the ID value of a document. @default "_id". */ + readonly idKey: string; + /** The collation specification for string sorting operations. */ + readonly collation?: CollationSpec; + /** Determines how to treat inputs and outputs. @default ProcessingMode.CLONE_OFF. */ + readonly processingMode: ProcessingMode; + /** Enforces strict MongoDB compatibilty. See README. @default true. */ + readonly useStrictMode: boolean; + /** Enable or disable custom script execution using `$where`, `$accumulator`, and `$function` operators. @default true. */ + readonly scriptEnabled: boolean; + /** Enable or disable falling back to the global context for operators. @default true. */ + readonly useGlobalContext: boolean; + /** Hash function to replace the Effective Java default implementation. */ + readonly hashFunction?: HashFunction; + /** Function to resolve strings to arrays for use with operators that reference other collections such as; `$lookup`, `$out` and `$merge`. */ + readonly collectionResolver?: CollectionResolver; + /** JSON schema validator to use with the '$jsonSchema' operator. Required in order to use the operator. */ + readonly jsonSchemaValidator?: JsonSchemaValidator; + /** Global variables. */ + readonly variables?: Readonly; + /** Extra references to operators to be used for processing. */ + readonly context: Context; +} +interface LocalData { + /** The groupId computed for a group of documents. */ + readonly groupId?: Any; + /** Local user-defind variables. */ + readonly variables?: AnyObject; +} +/** Custom type to facilitate type checking for global options */ +export declare class ComputeOptions implements Options { + #private; + private constructor(); + /** + * Initialize new ComputeOptions. + * @returns {ComputeOptions} + */ + static init(options: Options, root?: Any, local?: LocalData): ComputeOptions; + /** + * Updates the internal state. + * + * @param root The new root context for this object. + * @param local The new local state to merge into current if it exists. + * @returns + */ + update(root?: Any, local?: LocalData): ComputeOptions; + getOptions(): Options; + get root(): unknown; + get local(): LocalData; + get idKey(): string; + get collation(): CollationSpec; + get processingMode(): ProcessingMode; + get useStrictMode(): boolean; + get scriptEnabled(): boolean; + get useGlobalContext(): boolean; + get hashFunction(): HashFunction; + get collectionResolver(): CollectionResolver; + get jsonSchemaValidator(): JsonSchemaValidator; + get variables(): Readonly; + get context(): Context; +} +/** + * Creates an Option from another where required keys are initialized. + * @param options Options + */ +export declare function initOptions(options?: Partial): Options; +/** + * Supported cloning modes. + * - "deep": Performs a recursive deep clone of the object. + * - "copy": Performs a shallow copy of the object. + * - "none": No cloning. Uses the value as given. + */ +export type CloneMode = "deep" | "copy" | "none"; +export interface UpdateOptions { + /** Specifies whether to deep clone values to persist in the internal store. @default "copy". */ + readonly cloneMode?: CloneMode; + /** Options to use for processing queries. Unless overriden 'useStrictMode' is false. */ + readonly queryOptions?: Partial; +} +/** + * The different groups of operators + */ +export declare enum OperatorType { + ACCUMULATOR = "accumulator", + EXPRESSION = "expression", + PIPELINE = "pipeline", + PROJECTION = "projection", + QUERY = "query", + WINDOW = "window" +} +export type AccumulatorOperator = (collection: Any[], expr: Any, options: Options) => R; +export type ExpressionOperator = (obj: AnyObject, expr: Any, options: Options) => R; +export type PipelineOperator = (collection: Iterator, expr: Any, options: Options) => Iterator; +export type ProjectionOperator = (obj: AnyObject, expr: Any, selector: string, options: Options) => Any; +export type QueryOperator = (selector: string, value: Any, options: Options) => (obj: AnyObject) => boolean; +export type WindowOperator = (obj: AnyObject, array: AnyObject[], expr: WindowOperatorInput, options: Options) => Any; +/** Interface for update operators */ +export type UpdateOperator = (obj: AnyObject, expr: AnyObject, arrayFilters: AnyObject[], options: UpdateOptions) => string[]; +type Operator = AccumulatorOperator | ExpressionOperator | PipelineOperator | ProjectionOperator | QueryOperator | WindowOperator; +type AccumulatorOps = Record; +type ExpressionOps = Record; +type ProjectionOps = Record; +type QueryOps = Record; +type PipelineOps = Record; +type WindowOps = Record; +/** Kinds of operators that can be registered. */ +export type OpType = "accumulator" | "expression" | "pipeline" | "projection" | "query" | "window"; +export declare class Context { + #private; + private constructor(); + static init(): Context; + static from(ctx?: Context): Context; + private addOperators; + getOperator(type: OpType, name: string): Callback | null; + addAccumulatorOps(ops: AccumulatorOps): Context; + addExpressionOps(ops: ExpressionOps): Context; + addQueryOps(ops: QueryOps): Context; + addPipelineOps(ops: PipelineOps): Context; + addProjectionOps(ops: ProjectionOps): Context; + addWindowOps(ops: WindowOps): Context; +} +/** + * Register global operators that are available when {@link Options.useGlobalContext} is enabled. + * + * @param type Operator type + * @param operators Map of operator name to functions + */ +export declare function useOperators(type: OpType, operators: Record): void; +/** + * Returns the operator function or undefined if it is not found + * @param type Type of operator + * @param name Name of the operator + * @param options + */ +export declare function getOperator(type: OpType, name: string, options: Pick): Operator; +/** + * Computes the value of the expression on the object for the given operator + * + * @param obj the current object from the collection + * @param expr the expression for the given field + * @param operator the operator to resolve the field with + * @param options {Object} extra options + * @returns {*} + */ +export declare function computeValue(obj: Any, expr: Any, operator: string | null, options?: Options): Any; +/** + * Redact an object + * @param {Object} obj The object to redact + * @param {*} expr The redact expression + * @param {*} options Options for value + * @return {*} returns the result of the redacted object + */ +export declare function redact(obj: AnyObject, expr: Any, options: ComputeOptions): Any; +export {}; diff --git a/node_modules/mingo/dist/types/cursor.d.ts b/node_modules/mingo/dist/types/cursor.d.ts new file mode 100644 index 0000000..faeecd7 --- /dev/null +++ b/node_modules/mingo/dist/types/cursor.d.ts @@ -0,0 +1,76 @@ +import { CollationSpec, Options } from "./core"; +import { Iterator, Source } from "./lazy"; +import { Any, AnyObject, Callback, Predicate } from "./types"; +/** + * Cursor to iterate and perform filtering on matched objects. + * This object must not be used directly. A cursor may be obtaine from calling `find()` on an instance of `Query`. + * + * @param collection The input source of the collection + * @param predicate A predicate function to test documents + * @param projection A projection criteria + * @param options Options + * @constructor + */ +export declare class Cursor { + #private; + constructor(source: Source, predicate: Predicate, projection: AnyObject, options?: Options); + /** Returns the iterator from running the query */ + private fetch; + /** Returns an iterator with the buffered data included */ + private fetchAll; + /** + * Return remaining objects in the cursor as an array. This method exhausts the cursor + * @returns {Array} + */ + all(): T[]; + /** + * Returns the number of objects return in the cursor. This method exhausts the cursor + * @returns {Number} + */ + count(): number; + /** + * Returns a cursor that begins returning results only after passing or skipping a number of documents. + * @param {Number} n the number of results to skip. + * @return {Cursor} Returns the cursor, so you can chain this call. + */ + skip(n: number): Cursor; + /** + * Constrains the size of a cursor's result set. + * @param {Number} n the number of results to limit to. + * @return {Cursor} Returns the cursor, so you can chain this call. + */ + limit(n: number): Cursor; + /** + * Returns results ordered according to a sort specification. + * @param {AnyObject} modifier an object of key and values specifying the sort order. 1 for ascending and -1 for descending + * @return {Cursor} Returns the cursor, so you can chain this call. + */ + sort(modifier: AnyObject): Cursor; + /** + * Specifies the collation for the cursor returned by the `mingo.Query.find` + * @param {*} spec + */ + collation(spec: CollationSpec): Cursor; + /** + * Returns the next document in a cursor. + * @returns {AnyObject | Boolean} + */ + next(): T; + /** + * Returns true if the cursor has documents and can be iterated. + * @returns {boolean} + */ + hasNext(): boolean; + /** + * Applies a function to each document in a cursor and collects the return values in an array. + * @param fn + * @returns {Array} + */ + map(fn: Callback): R[]; + /** + * Applies a JavaScript function for every document in a cursor. + * @param fn + */ + forEach(fn: Callback): void; + [Symbol.iterator](): Iterator; +} diff --git a/node_modules/mingo/dist/types/index.d.ts b/node_modules/mingo/dist/types/index.d.ts new file mode 100644 index 0000000..a4d440b --- /dev/null +++ b/node_modules/mingo/dist/types/index.d.ts @@ -0,0 +1,51 @@ +import "./init/basic"; +import { Aggregator } from "./aggregator"; +import { Options } from "./core"; +import { Cursor } from "./cursor"; +import { Source } from "./lazy"; +import { Query } from "./query"; +import { AnyObject } from "./types"; +import { createUpdater } from "./updater"; +export { Aggregator } from "./aggregator"; +export { Query } from "./query"; +export { createUpdater, update } from "./updater"; +/** + * Performs a query on a collection and returns a cursor object. + * Shorthand for `Query(criteria).find(collection, projection)` + * + * @param collection Array of objects + * @param criteria Query criteria + * @param projection Projection criteria + * @param options + * @returns {Cursor} A cursor of results + */ +export declare function find(collection: Source, criteria: AnyObject, projection?: AnyObject, options?: Partial): Cursor; +/** + * Returns a new array without objects which match the criteria + * + * @param collection Array of objects + * @param criteria Query criteria of objects to remove + * @param options + * @returns {Array} New filtered array + */ +export declare function remove(collection: AnyObject[], criteria: AnyObject, options?: Options): AnyObject[]; +/** + * Return the result collection after running the aggregation pipeline for the given collection. + * Shorthand for `(new Aggregator(pipeline, options)).run(collection)` + * + * @param collection array or stream of objects + * @param pipeline The pipeline operators to use + * @param options + * @returns {Array} New array of results + */ +export declare function aggregate(collection: Source, pipeline: AnyObject[], options?: Partial): AnyObject[]; +declare const _default: { + Aggregator: typeof Aggregator; + Query: typeof Query; + aggregate: typeof aggregate; + createUpdater: typeof createUpdater; + find: typeof find; + remove: typeof remove; + update: import("./updater").Updater; +}; +export default _default; diff --git a/node_modules/mingo/dist/types/init/basic.d.ts b/node_modules/mingo/dist/types/init/basic.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/mingo/dist/types/init/basic.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/mingo/dist/types/init/system.d.ts b/node_modules/mingo/dist/types/init/system.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/mingo/dist/types/init/system.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/mingo/dist/types/lazy.d.ts b/node_modules/mingo/dist/types/lazy.d.ts new file mode 100644 index 0000000..e5b2613 --- /dev/null +++ b/node_modules/mingo/dist/types/lazy.d.ts @@ -0,0 +1,99 @@ +import { Any, Callback, Predicate } from "./types"; +/** + * A value produced by a generator + */ +export interface IteratorResult { + readonly value?: T; + readonly done: boolean; +} +/** + * Simplified generator interface + */ +interface Generator { + next: () => T; +} +export type Source = Generator | Callback | Any[]; +/** + * Returns an iterator + * @param {*} source An iterable source (Array, Function, Generator, or Iterator) + */ +export declare function Lazy(source: Source): Iterator; +/** + * Concatenate multiple iterators and return a new iterator. + * + * @param iterators The iterators to concatenate + * @returns {Iterator} A new iterator + */ +export declare function concat(...iterators: Iterator[]): Iterator; +/** + * A lazy collection iterator yields a single value at a time upon request. + */ +export declare class Iterator { + #private; + private isDone; + /** + * @param {*} source An iterable object or function. + * Array - return one element per cycle + * Object{next:Function} - call next() for the next value (this also handles generator functions) + * Function - call to return the next value + * @param {Function} fn An optional transformation function + */ + constructor(source: Source); + /** + * Add an iteratee to this lazy sequence + */ + private push; + next(): IteratorResult; + /** + * Transform each item in the sequence to a new value + * @param {Function} f + */ + map(f: Callback): Iterator; + /** + * Select only items matching the given predicate + * @param {Function} pred + */ + filter(predicate: Predicate): Iterator; + /** + * Take given numbe for values from sequence + * @param {Number} n A number greater than 0 + */ + take(n: number): Iterator; + /** + * Drop a number of values from the sequence + * @param {Number} n Number of items to drop greater than 0 + */ + drop(n: number): Iterator; + /** + * Returns a new lazy object with results of the transformation + * The entire sequence is realized. + * + * @param {Callback} fn Tranform function of type (Array) => (Any) + */ + transform(fn: Callback): Iterator; + /** + * Returns the fully realized values of the iterators. + * The return value will be an array unless `lazy.first()` was used. + * The realized values are cached for subsequent calls. + */ + value(): T[]; + /** + * Execute the funcion for each value. Will stop when an execution returns false. + * @param {Function} f + * @returns {Boolean} false iff `f` return false for AnyVal execution, otherwise true + */ + each(f: Callback): boolean; + /** + * Returns the reduction of sequence according the reducing function + * + * @param {*} f a reducing function + * @param {*} initialValue + */ + reduce(f: Callback, initialValue?: Any): T; + /** + * Returns the number of matched items in the sequence + */ + size(): number; + [Symbol.iterator](): Iterator; +} +export {}; diff --git a/node_modules/mingo/dist/types/operators/_predicates.d.ts b/node_modules/mingo/dist/types/operators/_predicates.d.ts new file mode 100644 index 0000000..d7add09 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/_predicates.d.ts @@ -0,0 +1,133 @@ +/** + * Predicates used for Query and Expression operators. + */ +import { ExpressionOperator, Options, QueryOperator } from "../core"; +import { Any, AnyObject, BsonType, JsType, Predicate } from "../types"; +type PredicateOptions = Options & { + depth: number; +}; +type ConversionType = number | JsType | BsonType; +/** + * Returns a query operator created from the predicate + * + * @param predicate Predicate function + */ +export declare function createQueryOperator(predicate: Predicate): QueryOperator; +/** + * Returns an expression operator created from the predicate + * + * @param predicate Predicate function + */ +export declare function createExpressionOperator(predicate: Predicate): ExpressionOperator; +/** + * Checks that two values are equal. + * + * @param a The lhs operand as resolved from the object by the given selector + * @param b The rhs operand provided by the user + * @returns {*} + */ +export declare function $eq(a: Any, b: Any, options?: PredicateOptions): boolean; +/** + * Matches all values that are not equal to the value specified in the query. + * + * @param a + * @param b + * @returns {boolean} + */ +export declare function $ne(a: Any, b: Any, options?: PredicateOptions): boolean; +/** + * Matches any of the values that exist in an array specified in the query. + * + * @param a + * @param b + * @returns {*} + */ +export declare function $in(a: Any[], b: Any[], options?: PredicateOptions): boolean; +/** + * Matches values that do not exist in an array specified to the query. + * + * @param a + * @param b + * @returns {*|boolean} + */ +export declare function $nin(a: Any[], b: Any[], options?: PredicateOptions): boolean; +/** + * Matches values that are less than the value specified in the query. + * + * @param a + * @param b + * @returns {boolean} + */ +export declare function $lt(a: Any, b: Any, _options?: PredicateOptions): boolean; +/** + * Matches values that are less than or equal to the value specified in the query. + * + * @param a + * @param b + * @returns {boolean} + */ +export declare function $lte(a: Any, b: Any, _options?: PredicateOptions): boolean; +/** + * Matches values that are greater than the value specified in the query. + * + * @param a + * @param b + * @returns {boolean} + */ +export declare function $gt(a: Any, b: Any, _options?: PredicateOptions): boolean; +/** + * Matches values that are greater than or equal to the value specified in the query. + * + * @param a + * @param b + * @returns {boolean} + */ +export declare function $gte(a: Any, b: Any, _options?: PredicateOptions): boolean; +/** + * Performs a modulo operation on the value of a field and selects documents with a specified result. + * + * @param a + * @param b + * @returns {boolean} + */ +export declare function $mod(a: Any, b: number[], _options?: PredicateOptions): boolean; +/** + * Selects documents where values match a specified regular expression. + * + * @param a + * @param b + * @returns {boolean} + */ +export declare function $regex(a: Any, b: RegExp, options?: PredicateOptions): boolean; +/** + * Matches arrays that contain all elements specified in the query. + * + * @param values + * @param queries + * @returns boolean + */ +export declare function $all(values: Any[], queries: AnyObject[], options?: PredicateOptions): boolean; +/** + * Selects documents if the array field is a specified size. + * + * @param a + * @param b + * @returns {*|boolean} + */ +export declare function $size(a: Any[], b: number, _options?: PredicateOptions): boolean; +/** + * Selects documents if element in the array field matches all the specified $elemMatch condition. + * + * @param a {Any[]} element to match against + * @param b {AnyObject} subquery + */ +export declare function $elemMatch(a: Any[], b: AnyObject, options?: PredicateOptions): boolean; +/** + * Selects documents if a field is of the specified type. + * + * @param a + * @param b + * @returns {boolean} + */ +export declare function $type(a: Any, b: ConversionType | ConversionType[], options?: PredicateOptions): boolean; +export {}; diff --git a/node_modules/mingo/dist/types/operators/accumulator/_internal.d.ts b/node_modules/mingo/dist/types/operators/accumulator/_internal.d.ts new file mode 100644 index 0000000..9b0fcd4 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/_internal.d.ts @@ -0,0 +1,8 @@ +/** + * Compute the standard deviation of the data set + * @param {Array} array of numbers + * @param {Boolean} if true calculates a sample standard deviation, otherwise calculates a population stddev + * @return {Number} + */ +export declare function stddev(data: number[], sampled?: boolean): number; +export declare function covariance(dataset: number[][], sampled?: boolean): number; diff --git a/node_modules/mingo/dist/types/operators/accumulator/accumulator.d.ts b/node_modules/mingo/dist/types/operators/accumulator/accumulator.d.ts new file mode 100644 index 0000000..0af5b93 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/accumulator.d.ts @@ -0,0 +1,9 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Defines a custom accumulator function. + * + * @param {Any[]} collection The input array + * @param {*} expr The expression for the operator + * @param {Options} options Options + */ +export declare const $accumulator: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/addToSet.d.ts b/node_modules/mingo/dist/types/operators/accumulator/addToSet.d.ts new file mode 100644 index 0000000..139b674 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/addToSet.d.ts @@ -0,0 +1,10 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns an array of all the unique values for the selected field among for each document in that group. + * + * @param {Array} collection The input array + * @param {AnyObject} expr The right-hand side expression value of the operator + * @param {Options} options The options to use for this operation + * @returns {*} + */ +export declare const $addToSet: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/avg.d.ts b/node_modules/mingo/dist/types/operators/accumulator/avg.d.ts new file mode 100644 index 0000000..8ee5016 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/avg.d.ts @@ -0,0 +1,10 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns an average of all the values in a group. + * + * @param {Array} collection The input array + * @param {AnyObject} expr The right-hand side expression value of the operator + * @param {Options} options The options to use for this operation + * @returns {Number} + */ +export declare const $avg: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/bottom.d.ts b/node_modules/mingo/dist/types/operators/accumulator/bottom.d.ts new file mode 100644 index 0000000..76cefd0 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/bottom.d.ts @@ -0,0 +1,10 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns the bottom element within a group according to the specified sort order. + * + * @param {Any[]} collection The input array + * @param {AnyObject} expr The right-hand side expression value of the operator + * @param {Options} options The options to use for this operation + * @returns {*} + */ +export declare const $bottom: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/bottomN.d.ts b/node_modules/mingo/dist/types/operators/accumulator/bottomN.d.ts new file mode 100644 index 0000000..8fc3d16 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/bottomN.d.ts @@ -0,0 +1,12 @@ +import { AccumulatorOperator } from "../../core"; +import { Any } from "../../types"; +/** + * Returns an aggregation of the bottom n elements within a group, according to the specified sort order. + * If the group contains fewer than n elements, $bottomN returns all elements in the group. + * + * @param {Any[]} collection The input array + * @param {AnyObject} expr The right-hand side expression value of the operator + * @param {Options} options The options to use for this operation + * @returns {*} + */ +export declare const $bottomN: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/count.d.ts b/node_modules/mingo/dist/types/operators/accumulator/count.d.ts new file mode 100644 index 0000000..dfb4631 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/count.d.ts @@ -0,0 +1,9 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns the number of documents in the group or window. + * + * @param {Array} collection The input array + * @param {AnyObject} expr The right-hand side expression value of the operator + * @returns {*} + */ +export declare const $count: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/covariancePop.d.ts b/node_modules/mingo/dist/types/operators/accumulator/covariancePop.d.ts new file mode 100644 index 0000000..f6f41d4 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/covariancePop.d.ts @@ -0,0 +1,8 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns the population covariance of two numeric expressions. + * @param {Array} collection + * @param {AnyObject} expr + * @return {Number|null} + */ +export declare const $covariancePop: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/covarianceSamp.d.ts b/node_modules/mingo/dist/types/operators/accumulator/covarianceSamp.d.ts new file mode 100644 index 0000000..ab38427 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/covarianceSamp.d.ts @@ -0,0 +1,8 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns the sample covariance of two numeric expressions. + * @param {Array} collection + * @param {AnyObject} expr + * @return {Number|null} + */ +export declare const $covarianceSamp: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/first.d.ts b/node_modules/mingo/dist/types/operators/accumulator/first.d.ts new file mode 100644 index 0000000..0f80330 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/first.d.ts @@ -0,0 +1,9 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns the first value in a group. + * + * @param collection The input array + * @param expr The right-hand side expression value of the operator + * @returns {*} + */ +export declare const $first: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/firstN.d.ts b/node_modules/mingo/dist/types/operators/accumulator/firstN.d.ts new file mode 100644 index 0000000..ce5822e --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/firstN.d.ts @@ -0,0 +1,11 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns an aggregation of the first n elements within a group. The elements returned are meaningful only if in a specified sort order. + * If the group contains fewer than n elements, $firstN returns all elements in the group. + * + * @param {Array} collection The input array + * @param {AnyObject} expr The right-hand side expression value of the operator + * @param {Options} options The options to use for this operation + * @returns {*} + */ +export declare const $firstN: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/index.d.ts b/node_modules/mingo/dist/types/operators/accumulator/index.d.ts new file mode 100644 index 0000000..ef4feb0 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/index.d.ts @@ -0,0 +1,28 @@ +/** + * Group stage Accumulator Operators. https://docs.mongodb.com/manual/reference/operator/aggregation- + */ +export * from "./accumulator"; +export * from "./addToSet"; +export * from "./avg"; +export * from "./bottom"; +export * from "./bottomN"; +export * from "./count"; +export * from "./covariancePop"; +export * from "./covarianceSamp"; +export * from "./first"; +export * from "./firstN"; +export * from "./last"; +export * from "./lastN"; +export * from "./max"; +export * from "./maxN"; +export * from "./median"; +export * from "./mergeObjects"; +export * from "./min"; +export * from "./minN"; +export * from "./percentile"; +export * from "./push"; +export * from "./stdDevPop"; +export * from "./stdDevSamp"; +export * from "./sum"; +export * from "./top"; +export * from "./topN"; diff --git a/node_modules/mingo/dist/types/operators/accumulator/last.d.ts b/node_modules/mingo/dist/types/operators/accumulator/last.d.ts new file mode 100644 index 0000000..3848311 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/last.d.ts @@ -0,0 +1,10 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns the last value in the collection. + * + * @param collection The input array + * @param expr The right-hand side expression value of the operator + * @param options The options to use for this operation + * @returns + */ +export declare const $last: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/lastN.d.ts b/node_modules/mingo/dist/types/operators/accumulator/lastN.d.ts new file mode 100644 index 0000000..8eb3c13 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/lastN.d.ts @@ -0,0 +1,11 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns an aggregation of the last n elements within a group. The elements returned are meaningful only if in a specified sort order. + * If the group contains fewer than n elements, $lastN returns all elements in the group. + * + * @param {Array} collection The input array + * @param {AnyObject} expr The right-hand side expression value of the operator + * @param {Options} options The options to use for this operation + * @returns {*} + */ +export declare const $lastN: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/max.d.ts b/node_modules/mingo/dist/types/operators/accumulator/max.d.ts new file mode 100644 index 0000000..d1ae6a9 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/max.d.ts @@ -0,0 +1,9 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns the maximum value + * + * @param collection The input array + * @param expr The right-hand side expression value of the operator + * @param options to use for this operator + */ +export declare const $max: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/maxN.d.ts b/node_modules/mingo/dist/types/operators/accumulator/maxN.d.ts new file mode 100644 index 0000000..3a501b3 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/maxN.d.ts @@ -0,0 +1,11 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns an aggregation of the maxmimum value n elements within a group. + * If the group contains fewer than n elements, $maxN returns all elements in the group. + * + * @param {Array} collection The input array + * @param {AnyObject} expr The right-hand side expression value of the operator + * @param {Options} options The options to use for this operation + * @returns {*} + */ +export declare const $maxN: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/median.d.ts b/node_modules/mingo/dist/types/operators/accumulator/median.d.ts new file mode 100644 index 0000000..0b1384f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/median.d.ts @@ -0,0 +1,14 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns the median of the dataset. The 'expr.method' defaults to "approximate" to return a median value from the dataset. + * + * If 'expr.method' is "approximate", we return the smallest of the middle values when dataset is even. + * If 'expr.method' is "exact", we return the average of the middle values when dataset is even. + * For an odd dataset, the middle value is always returned regardless of 'expr.method'. + * + * @param collection The collection of objects. + * @param expr The operator expression. + * @param options Options to use for processing. + * @returns {Number} + */ +export declare const $median: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/mergeObjects.d.ts b/node_modules/mingo/dist/types/operators/accumulator/mergeObjects.d.ts new file mode 100644 index 0000000..8b34b41 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/mergeObjects.d.ts @@ -0,0 +1,10 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Combines multiple documents into a single document. + * + * @param {Array} collection The input array + * @param {AnyObject} _ The right-hand side expression value of the operator + * @param {Options} options The options to use for this operation + * @returns {Array|*} + */ +export declare const $mergeObjects: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/min.d.ts b/node_modules/mingo/dist/types/operators/accumulator/min.d.ts new file mode 100644 index 0000000..0674cff --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/min.d.ts @@ -0,0 +1,9 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns the minimum value. + * + * @param collection The input array + * @param expr The right-hand side expression value of the operator + * @param options to use for this operator + */ +export declare const $min: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/minN.d.ts b/node_modules/mingo/dist/types/operators/accumulator/minN.d.ts new file mode 100644 index 0000000..59d3f6b --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/minN.d.ts @@ -0,0 +1,11 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns an aggregation of the minimum value n elements within a group. + * If the group contains fewer than n elements, $minN returns all elements in the group. + * + * @param {Array} collection The input array + * @param {AnyObject} expr The right-hand side expression value of the operator + * @param {Options} options The options to use for this operation + * @returns {*} + */ +export declare const $minN: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/percentile.d.ts b/node_modules/mingo/dist/types/operators/accumulator/percentile.d.ts new file mode 100644 index 0000000..46f1a31 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/percentile.d.ts @@ -0,0 +1,13 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns an array of scalar values that correspond to specified percentile values. Uses "approximate" method by default. + * + * If 'expr.method' is "approximate", we return the closest value to the computed percentile from the dataset. + * If 'expr.method' is "exact", we return the computed percentile value as is which may not be found in the dataset. + * + * @param collection The collection of objects. + * @param expr The operator expression. + * @param options Options to use for processing. + * @returns {AnyObject|*} + */ +export declare const $percentile: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/push.d.ts b/node_modules/mingo/dist/types/operators/accumulator/push.d.ts new file mode 100644 index 0000000..5760c78 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/push.d.ts @@ -0,0 +1,11 @@ +import { AccumulatorOperator } from "../../core"; +import { Any } from "../../types"; +/** + * Returns an array of all values for the selected field among for each document in that group. + * + * @param {Any[]} collection The input array + * @param {Object} expr The right-hand side expression value of the operator + * @param {Options} options The options to use for this operation + * @returns {Any[]|*} + */ +export declare const $push: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/stdDevPop.d.ts b/node_modules/mingo/dist/types/operators/accumulator/stdDevPop.d.ts new file mode 100644 index 0000000..59a5a91 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/stdDevPop.d.ts @@ -0,0 +1,10 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns the population standard deviation of the input values. + * + * @param {Array} collection The input array + * @param {AnyObject} expr The right-hand side expression value of the operator + * @param {Options} options The options to use for this operation + * @return {Number} + */ +export declare const $stdDevPop: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/stdDevSamp.d.ts b/node_modules/mingo/dist/types/operators/accumulator/stdDevSamp.d.ts new file mode 100644 index 0000000..663ccb9 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/stdDevSamp.d.ts @@ -0,0 +1,8 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns the sample standard deviation of the input values. + * @param {Array} collection + * @param {AnyObject} expr + * @return {Number|null} + */ +export declare const $stdDevSamp: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/sum.d.ts b/node_modules/mingo/dist/types/operators/accumulator/sum.d.ts new file mode 100644 index 0000000..2851586 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/sum.d.ts @@ -0,0 +1,11 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns the sum of all the values in a group. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/ usage.} + * + * @param collection The input array + * @param expr The right-hand side expression value of the operator + * @returns + */ +export declare const $sum: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/top.d.ts b/node_modules/mingo/dist/types/operators/accumulator/top.d.ts new file mode 100644 index 0000000..dd64aba --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/top.d.ts @@ -0,0 +1,10 @@ +import { AccumulatorOperator } from "../../core"; +/** + * Returns the top element within a group according to the specified sort order. + * + * @param {Any[]} collection The input array + * @param {AnyObject} expr The right-hand side expression value of the operator + * @param {Options} options The options to use for this operation + * @returns {*} + */ +export declare const $top: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/accumulator/topN.d.ts b/node_modules/mingo/dist/types/operators/accumulator/topN.d.ts new file mode 100644 index 0000000..95ac1ef --- /dev/null +++ b/node_modules/mingo/dist/types/operators/accumulator/topN.d.ts @@ -0,0 +1,12 @@ +import { AccumulatorOperator } from "../../core"; +import { Any } from "../../types"; +/** + * Returns an aggregation of the top n elements within a group, according to the specified sort order. + * If the group contains fewer than n elements, $topN returns all elements in the group. + * + * @param {Any[]} collection The input array + * @param {AnyObject} expr The right-hand side expression value of the operator + * @param {Options} options The options to use for this operation + * @returns {*} + */ +export declare const $topN: AccumulatorOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/_internal.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/_internal.d.ts new file mode 100644 index 0000000..6d4a523 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/_internal.d.ts @@ -0,0 +1,7 @@ +/** + * Truncates integer value to number of places. If roundOff is specified round value instead to the number of places + * @param {Number} num + * @param {Number} places + * @param {Boolean} roundOff + */ +export declare function truncate(num: number, places?: number, roundOff?: boolean): number; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/abs.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/abs.d.ts new file mode 100644 index 0000000..e896424 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/abs.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the absolute value of a number. + * + * @param obj + * @param expr + * @return {Number|null|NaN} + */ +export declare const $abs: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/add.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/add.d.ts new file mode 100644 index 0000000..f92e3cb --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/add.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Computes the sum of an array of numbers. + * + * @param obj + * @param expr + * @param options + */ +export declare const $add: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/ceil.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/ceil.d.ts new file mode 100644 index 0000000..e974347 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/ceil.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the smallest integer greater than or equal to the specified number. + * + * @param obj + * @param expr + * @returns {number} + */ +export declare const $ceil: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/divide.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/divide.d.ts new file mode 100644 index 0000000..eace57d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/divide.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Takes two numbers and divides the first number by the second. + * + * @param obj + * @param expr + * @returns {number} + */ +export declare const $divide: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/exp.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/exp.d.ts new file mode 100644 index 0000000..19b135d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/exp.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Raises Euler’s number (i.e. e ) to the specified exponent and returns the result. + * + * @param obj + * @param expr + * @returns {number} + */ +export declare const $exp: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/floor.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/floor.d.ts new file mode 100644 index 0000000..e3ce8ae --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/floor.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the largest integer less than or equal to the specified number. + * + * @param obj + * @param expr + * @returns {number} + */ +export declare const $floor: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/index.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/index.d.ts new file mode 100644 index 0000000..6c247da --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/index.d.ts @@ -0,0 +1,16 @@ +export * from "./abs"; +export * from "./add"; +export * from "./ceil"; +export * from "./divide"; +export * from "./exp"; +export * from "./floor"; +export * from "./ln"; +export * from "./log"; +export * from "./log10"; +export * from "./mod"; +export * from "./multiply"; +export * from "./pow"; +export * from "./round"; +export * from "./sqrt"; +export * from "./subtract"; +export * from "./trunc"; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/ln.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/ln.d.ts new file mode 100644 index 0000000..0905283 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/ln.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Calculates the natural logarithm ln (i.e loge) of a number and returns the result as a double. + * + * @param obj + * @param expr + * @returns {number} + */ +export declare const $ln: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/log.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/log.d.ts new file mode 100644 index 0000000..02ec741 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/log.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Calculates the log of a number in the specified base and returns the result as a double. + * + * @param obj + * @param expr + * @returns {number} + */ +export declare const $log: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/log10.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/log10.d.ts new file mode 100644 index 0000000..79371be --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/log10.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Calculates the log base 10 of a number and returns the result as a double. + * + * @param obj + * @param expr + * @returns {number} + */ +export declare const $log10: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/mod.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/mod.d.ts new file mode 100644 index 0000000..19a338f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/mod.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Takes two numbers and calculates the modulo of the first number divided by the second. + * + * @param obj + * @param expr + * @returns {number} + */ +export declare const $mod: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/multiply.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/multiply.d.ts new file mode 100644 index 0000000..273a844 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/multiply.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Computes the product of an array of numbers. + * + * @param obj + * @param expr + * @returns {AnyObject} + */ +export declare const $multiply: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/pow.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/pow.d.ts new file mode 100644 index 0000000..9dfc5e7 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/pow.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Raises a number to the specified exponent and returns the result. + * + * @param obj + * @param expr + * @returns {AnyObject} + */ +export declare const $pow: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/round.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/round.d.ts new file mode 100644 index 0000000..bf2ad49 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/round.d.ts @@ -0,0 +1,7 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Rounds a number to to a whole integer or to a specified decimal place. + * @param {*} obj + * @param {*} expr + */ +export declare const $round: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/sqrt.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/sqrt.d.ts new file mode 100644 index 0000000..c14c4b5 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/sqrt.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Calculates the square root of a positive number and returns the result as a double. + * + * @param obj + * @param expr + * @returns {number} + */ +export declare const $sqrt: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/subtract.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/subtract.d.ts new file mode 100644 index 0000000..6c5ae48 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/subtract.d.ts @@ -0,0 +1,10 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Takes an array that contains two numbers or two dates and subtracts the second value from the first. + * + * @param obj + * @param expr + * @param options + * @returns {number} + */ +export declare const $subtract: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/arithmetic/trunc.d.ts b/node_modules/mingo/dist/types/operators/expression/arithmetic/trunc.d.ts new file mode 100644 index 0000000..3453fc6 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/arithmetic/trunc.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Truncates a number to a whole integer or to a specified decimal place. + * + * @param obj + * @param expr + * @returns {number} + */ +export declare const $trunc: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/arrayElemAt.d.ts b/node_modules/mingo/dist/types/operators/expression/array/arrayElemAt.d.ts new file mode 100644 index 0000000..20393a5 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/arrayElemAt.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the element at the specified array index. + * + * @param {AnyObject} obj + * @param {*} expr + * @return {*} + */ +export declare const $arrayElemAt: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/arrayToObject.d.ts b/node_modules/mingo/dist/types/operators/expression/array/arrayToObject.d.ts new file mode 100644 index 0000000..38c83c2 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/arrayToObject.d.ts @@ -0,0 +1,5 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Converts an array of key value pairs to a document. + */ +export declare const $arrayToObject: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/concatArrays.d.ts b/node_modules/mingo/dist/types/operators/expression/array/concatArrays.d.ts new file mode 100644 index 0000000..2f45d0a --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/concatArrays.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Concatenates arrays to return the concatenated array. + * + * @param obj + * @param expr + * @param options + */ +export declare const $concatArrays: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/filter.d.ts b/node_modules/mingo/dist/types/operators/expression/array/filter.d.ts new file mode 100644 index 0000000..565cea7 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/filter.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Selects a subset of the array to return an array with only the elements that match the filter condition. + * + * @param {AnyObject} obj The current document + * @param {*} expr The filter spec + * @return {*} + */ +export declare const $filter: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/first.d.ts b/node_modules/mingo/dist/types/operators/expression/array/first.d.ts new file mode 100644 index 0000000..69ce3fc --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/first.d.ts @@ -0,0 +1,5 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the first element in an array. + */ +export declare const $first: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/firstN.d.ts b/node_modules/mingo/dist/types/operators/expression/array/firstN.d.ts new file mode 100644 index 0000000..849c363 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/firstN.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns a specified number of elements from the beginning of an array. + * + * @param {AnyObject} obj + * @param {*} expr + * @return {*} + */ +export declare const $firstN: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/in.d.ts b/node_modules/mingo/dist/types/operators/expression/array/in.d.ts new file mode 100644 index 0000000..ff006c8 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/in.d.ts @@ -0,0 +1,8 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns a boolean indicating whether a specified value is in an array. + * + * @param {AnyObject} obj + * @param {Any[]} expr + */ +export declare const $in: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/index.d.ts b/node_modules/mingo/dist/types/operators/expression/array/index.d.ts new file mode 100644 index 0000000..54ed39b --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/index.d.ts @@ -0,0 +1,22 @@ +export * from "./arrayElemAt"; +export * from "./arrayToObject"; +export * from "./concatArrays"; +export * from "./filter"; +export * from "./first"; +export * from "./firstN"; +export * from "./in"; +export * from "./indexOfArray"; +export * from "./isArray"; +export * from "./last"; +export * from "./lastN"; +export * from "./map"; +export * from "./maxN"; +export * from "./minN"; +export * from "./nin"; +export * from "./range"; +export * from "./reduce"; +export * from "./reverseArray"; +export * from "./size"; +export * from "./slice"; +export * from "./sortArray"; +export * from "./zip"; diff --git a/node_modules/mingo/dist/types/operators/expression/array/indexOfArray.d.ts b/node_modules/mingo/dist/types/operators/expression/array/indexOfArray.d.ts new file mode 100644 index 0000000..12f6935 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/indexOfArray.d.ts @@ -0,0 +1,10 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Searches an array for an occurrence of a specified value and returns the array index of the first occurrence. + * If the substring is not found, returns -1. + * + * @param {AnyObject} obj + * @param {*} expr + * @return {*} + */ +export declare const $indexOfArray: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/isArray.d.ts b/node_modules/mingo/dist/types/operators/expression/array/isArray.d.ts new file mode 100644 index 0000000..7991dba --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/isArray.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Determines if the operand is an array. Returns a boolean. + * + * @param {AnyObject} obj + * @param {*} expr + * @return {Boolean} + */ +export declare const $isArray: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/last.d.ts b/node_modules/mingo/dist/types/operators/expression/array/last.d.ts new file mode 100644 index 0000000..b71f598 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/last.d.ts @@ -0,0 +1,5 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the last element in an array. + */ +export declare const $last: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/lastN.d.ts b/node_modules/mingo/dist/types/operators/expression/array/lastN.d.ts new file mode 100644 index 0000000..1032d58 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/lastN.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns a specified number of elements from the end of an array. + * + * @param {AnyObject} obj + * @param {*} expr + * @return {*} + */ +export declare const $lastN: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/map.d.ts b/node_modules/mingo/dist/types/operators/expression/array/map.d.ts new file mode 100644 index 0000000..4ffbe0d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/map.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Applies a sub-expression to each element of an array and returns the array of resulting values in order. + * + * @param obj + * @param expr + * @returns {Any[]|*} + */ +export declare const $map: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/maxN.d.ts b/node_modules/mingo/dist/types/operators/expression/array/maxN.d.ts new file mode 100644 index 0000000..0b987ae --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/maxN.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the n largest values in an array. + * + * @param {AnyObject} obj + * @param {*} expr + * @return {*} + */ +export declare const $maxN: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/minN.d.ts b/node_modules/mingo/dist/types/operators/expression/array/minN.d.ts new file mode 100644 index 0000000..1df1bba --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/minN.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the n smallest values in an array. + * + * @param {AnyObject} obj + * @param {*} expr + * @return {*} + */ +export declare const $minN: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/nin.d.ts b/node_modules/mingo/dist/types/operators/expression/array/nin.d.ts new file mode 100644 index 0000000..a43b8d3 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/nin.d.ts @@ -0,0 +1,8 @@ +/** + * Returns a boolean indicating whether a specified value is not an array. + * Note: This expression operator is missing from the documentation + * + * @param {Object} obj + * @param {Array} expr + */ +export declare const $nin: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/range.d.ts b/node_modules/mingo/dist/types/operators/expression/array/range.d.ts new file mode 100644 index 0000000..f5fee1c --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/range.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns an array whose elements are a generated sequence of numbers. + * + * @param {AnyObject} obj + * @param {*} expr + * @return {*} + */ +export declare const $range: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/reduce.d.ts b/node_modules/mingo/dist/types/operators/expression/array/reduce.d.ts new file mode 100644 index 0000000..6d48f18 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/reduce.d.ts @@ -0,0 +1,8 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Applies an expression to each element in an array and combines them into a single value. + * + * @param obj + * @param expr + */ +export declare const $reduce: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/reverseArray.d.ts b/node_modules/mingo/dist/types/operators/expression/array/reverseArray.d.ts new file mode 100644 index 0000000..66ab76b --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/reverseArray.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns an array with the elements in reverse order. + * + * @param {AnyObject} obj + * @param {*} expr + * @return {*} + */ +export declare const $reverseArray: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/size.d.ts b/node_modules/mingo/dist/types/operators/expression/array/size.d.ts new file mode 100644 index 0000000..95d1c6e --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/size.d.ts @@ -0,0 +1,8 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Counts and returns the total the number of items in an array. + * + * @param obj + * @param expr + */ +export declare const $size: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/slice.d.ts b/node_modules/mingo/dist/types/operators/expression/array/slice.d.ts new file mode 100644 index 0000000..cbe9035 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/slice.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns a subset of an array. + * + * @param {AnyObject} obj + * @param {*} expr + * @return {*} + */ +export declare const $slice: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/sortArray.d.ts b/node_modules/mingo/dist/types/operators/expression/array/sortArray.d.ts new file mode 100644 index 0000000..0483e4c --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/sortArray.d.ts @@ -0,0 +1,10 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Sorts an array based on its elements. The sort order is user specified. + * + * @param obj The target object + * @param expr The expression argument + * @param options Options + * @returns + */ +export declare const $sortArray: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/array/zip.d.ts b/node_modules/mingo/dist/types/operators/expression/array/zip.d.ts new file mode 100644 index 0000000..f3b87ef --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/array/zip.d.ts @@ -0,0 +1,12 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Merge two lists together. + * + * Transposes an array of input arrays so that the first element of the output array would be an array containing, + * the first element of the first input array, the first element of the second input array, etc. + * + * @param {Obj} obj + * @param {*} expr + * @return {*} + */ +export declare const $zip: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/bitwise/_internal.d.ts b/node_modules/mingo/dist/types/operators/expression/bitwise/_internal.d.ts new file mode 100644 index 0000000..4cc4fa5 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/bitwise/_internal.d.ts @@ -0,0 +1,2 @@ +import { ExpressionOperator } from "../../../core"; +export declare const bitwise: (op: string, compute: (n: number[]) => number) => ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/bitwise/bitAnd.d.ts b/node_modules/mingo/dist/types/operators/expression/bitwise/bitAnd.d.ts new file mode 100644 index 0000000..10b8253 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/bitwise/bitAnd.d.ts @@ -0,0 +1,8 @@ +/** + * Returns the result of a bitwise and operation on an array of int or long values. + * + * @param obj RawObject from collection + * @param expr Right hand side expression of operator + * @returns {Number} + */ +export declare const $bitAnd: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/bitwise/bitNot.d.ts b/node_modules/mingo/dist/types/operators/expression/bitwise/bitNot.d.ts new file mode 100644 index 0000000..53e576b --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/bitwise/bitNot.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the result of a bitwise not operation on a single argument or an array that contains a single int or long value. + * + * @param obj RawObject from collection + * @param expr Right hand side expression of operator + * @returns {Number} + */ +export declare const $bitNot: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/bitwise/bitOr.d.ts b/node_modules/mingo/dist/types/operators/expression/bitwise/bitOr.d.ts new file mode 100644 index 0000000..f0d71a6 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/bitwise/bitOr.d.ts @@ -0,0 +1,8 @@ +/** + * Returns the result of a bitwise or operation on an array of int or long values. + * + * @param obj RawObject from collection + * @param expr Right hand side expression of operator + * @returns {Number} + */ +export declare const $bitOr: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/bitwise/bitXor.d.ts b/node_modules/mingo/dist/types/operators/expression/bitwise/bitXor.d.ts new file mode 100644 index 0000000..8309d8b --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/bitwise/bitXor.d.ts @@ -0,0 +1,8 @@ +/** + * Returns the result of a bitwise xor (exclusive or) operation on an array of int and long values. + * + * @param obj RawObject from collection + * @param expr Right hand side expression of operator + * @returns {Number} + */ +export declare const $bitXor: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/bitwise/index.d.ts b/node_modules/mingo/dist/types/operators/expression/bitwise/index.d.ts new file mode 100644 index 0000000..cb0ab12 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/bitwise/index.d.ts @@ -0,0 +1,4 @@ +export * from "./bitAnd"; +export * from "./bitNot"; +export * from "./bitOr"; +export * from "./bitXor"; diff --git a/node_modules/mingo/dist/types/operators/expression/boolean/and.d.ts b/node_modules/mingo/dist/types/operators/expression/boolean/and.d.ts new file mode 100644 index 0000000..fb29fad --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/boolean/and.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns true only when all its expressions evaluate to true. Accepts any number of argument expressions. + * + * @param obj + * @param expr + * @returns {boolean} + */ +export declare const $and: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/boolean/index.d.ts b/node_modules/mingo/dist/types/operators/expression/boolean/index.d.ts new file mode 100644 index 0000000..2694f28 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/boolean/index.d.ts @@ -0,0 +1,3 @@ +export * from "./and"; +export * from "./not"; +export * from "./or"; diff --git a/node_modules/mingo/dist/types/operators/expression/boolean/not.d.ts b/node_modules/mingo/dist/types/operators/expression/boolean/not.d.ts new file mode 100644 index 0000000..5dc28e9 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/boolean/not.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the boolean value that is the opposite of its argument expression. Accepts a single argument expression. + * + * @param obj RawObject from collection + * @param expr Right hand side expression of operator + * @returns {boolean} + */ +export declare const $not: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/boolean/or.d.ts b/node_modules/mingo/dist/types/operators/expression/boolean/or.d.ts new file mode 100644 index 0000000..0f019d8 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/boolean/or.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns true when any of its expressions evaluates to true. Accepts any number of argument expressions. + * + * @param obj + * @param expr + * @returns {boolean} + */ +export declare const $or: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/comparison/cmp.d.ts b/node_modules/mingo/dist/types/operators/expression/comparison/cmp.d.ts new file mode 100644 index 0000000..ff5e42c --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/comparison/cmp.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Compares two values and returns the result of the comparison as an integer. + * + * @param obj + * @param expr + * @returns {number} + */ +export declare const $cmp: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/comparison/eq.d.ts b/node_modules/mingo/dist/types/operators/expression/comparison/eq.d.ts new file mode 100644 index 0000000..345852f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/comparison/eq.d.ts @@ -0,0 +1,4 @@ +/** + * Matches values that are equal to a specified value. + */ +export declare const $eq: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/comparison/gt.d.ts b/node_modules/mingo/dist/types/operators/expression/comparison/gt.d.ts new file mode 100644 index 0000000..1234571 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/comparison/gt.d.ts @@ -0,0 +1,4 @@ +/** + * Matches values that are greater than a specified value. + */ +export declare const $gt: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/comparison/gte.d.ts b/node_modules/mingo/dist/types/operators/expression/comparison/gte.d.ts new file mode 100644 index 0000000..b171f76 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/comparison/gte.d.ts @@ -0,0 +1,4 @@ +/** + * Matches values that are greater than or equal to a specified value. + */ +export declare const $gte: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/comparison/index.d.ts b/node_modules/mingo/dist/types/operators/expression/comparison/index.d.ts new file mode 100644 index 0000000..89712a1 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/comparison/index.d.ts @@ -0,0 +1,7 @@ +export * from "./cmp"; +export * from "./eq"; +export * from "./gt"; +export * from "./gte"; +export * from "./lt"; +export * from "./lte"; +export * from "./ne"; diff --git a/node_modules/mingo/dist/types/operators/expression/comparison/lt.d.ts b/node_modules/mingo/dist/types/operators/expression/comparison/lt.d.ts new file mode 100644 index 0000000..8f6d287 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/comparison/lt.d.ts @@ -0,0 +1,4 @@ +/** + * Matches values that are less than the value specified in the query. + */ +export declare const $lt: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/comparison/lte.d.ts b/node_modules/mingo/dist/types/operators/expression/comparison/lte.d.ts new file mode 100644 index 0000000..fcdf7d0 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/comparison/lte.d.ts @@ -0,0 +1,4 @@ +/** + * Matches values that are less than or equal to the value specified in the query. + */ +export declare const $lte: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/comparison/ne.d.ts b/node_modules/mingo/dist/types/operators/expression/comparison/ne.d.ts new file mode 100644 index 0000000..b78168c --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/comparison/ne.d.ts @@ -0,0 +1,4 @@ +/** + * Matches all values that are not equal to the value specified in the query. + */ +export declare const $ne: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/conditional/cond.d.ts b/node_modules/mingo/dist/types/operators/expression/conditional/cond.d.ts new file mode 100644 index 0000000..2a3ebb4 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/conditional/cond.d.ts @@ -0,0 +1,12 @@ +/** + * Conditional Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#conditional-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * A ternary operator that evaluates one expression, + * and depending on the result returns the value of one following expressions. + * + * @param obj + * @param expr + */ +export declare const $cond: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/conditional/ifNull.d.ts b/node_modules/mingo/dist/types/operators/expression/conditional/ifNull.d.ts new file mode 100644 index 0000000..7ed5f03 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/conditional/ifNull.d.ts @@ -0,0 +1,12 @@ +/** + * Conditional Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#conditional-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Evaluates an expression and returns the first non-null value. + * + * @param obj + * @param expr + * @returns {*} + */ +export declare const $ifNull: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/conditional/index.d.ts b/node_modules/mingo/dist/types/operators/expression/conditional/index.d.ts new file mode 100644 index 0000000..d9eed37 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/conditional/index.d.ts @@ -0,0 +1,3 @@ +export * from "./cond"; +export * from "./ifNull"; +export * from "./switch"; diff --git a/node_modules/mingo/dist/types/operators/expression/conditional/switch.d.ts b/node_modules/mingo/dist/types/operators/expression/conditional/switch.d.ts new file mode 100644 index 0000000..b483812 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/conditional/switch.d.ts @@ -0,0 +1,13 @@ +/** + * Conditional Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#conditional-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * An operator that evaluates a series of case expressions. When it finds an expression which + * evaluates to true, it returns the resulting expression for that case. If none of the cases + * evaluate to true, it returns the default expression. + * + * @param obj + * @param expr + */ +export declare const $switch: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/custom/function.d.ts b/node_modules/mingo/dist/types/operators/expression/custom/function.d.ts new file mode 100644 index 0000000..26504df --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/custom/function.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Defines a custom function. + * + * @param {*} obj The target object for this expression + * @param {*} expr The expression for the operator + * @param {Options} options Options + */ +export declare const $function: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/custom/index.d.ts b/node_modules/mingo/dist/types/operators/expression/custom/index.d.ts new file mode 100644 index 0000000..c9a947e --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/custom/index.d.ts @@ -0,0 +1 @@ +export * from "./function"; diff --git a/node_modules/mingo/dist/types/operators/expression/date/_internal.d.ts b/node_modules/mingo/dist/types/operators/expression/date/_internal.d.ts new file mode 100644 index 0000000..087dbda --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/_internal.d.ts @@ -0,0 +1,64 @@ +import { Options } from "../../../core"; +import { Any, TimeUnit } from "../../../types"; +export declare const LEAP_YEAR_REF_POINT = -1000000000; +export declare const DAYS_PER_WEEK = 7; +export declare const isLeapYear: (y: number) => boolean; +export declare const daysInYear: (year: number) => number; +export declare const daysInMonth: (d: Date) => number; +export declare const dayOfYear: (d: Date) => number; +/** Returns the ISO day of week. Mon=1,Tue=2,...,Sun=7 */ +export declare const isoWeekday: (date: Date, startOfWeek?: DayOfWeek) => number; +export declare function isoWeek(d: Date): number; +export declare function isoWeekYear(d: Date): number; +export declare const MINUTES_PER_HOUR = 60; +export declare const MILLIS_PER_DAY: number; +export declare const TIMEUNIT_IN_MILLIS: Record, number>; +export declare const DAYS_OF_WEEK: readonly ["monday", "mon", "tuesday", "tue", "wednesday", "wed", "thursday", "thu", "friday", "fri", "saturday", "sat", "sunday", "sun"]; +export type DayOfWeek = (typeof DAYS_OF_WEEK)[number]; +export declare const DAYS_OF_WEEK_SET: Set<"monday" | "mon" | "tuesday" | "tue" | "wednesday" | "wed" | "thursday" | "thu" | "friday" | "fri" | "saturday" | "sat" | "sunday" | "sun">; +export declare const DATE_FORMAT = "%Y-%m-%dT%H:%M:%S.%LZ"; +export declare const DATE_PART_INTERVAL: readonly [readonly ["year", 0, 9999], readonly ["month", 1, 12], readonly ["day", 1, 31], readonly ["hour", 0, 23], readonly ["minute", 0, 59], readonly ["second", 0, 59], readonly ["millisecond", 0, 999]]; +export interface DatePartFormatter { + name: string; + padding: number; + re: RegExp; +} +export declare const DATE_SYM_TABLE: Record; +/** + * Parse and return the timezone string as a number + * @param tzstr Timezone string matching '+/-hh[:][mm]' or Olson name. + */ +export declare function parseTimezone(tzstr?: string): number; +/** + * Formats the timezone for output + * @param tz A timezone object + */ +export declare function formatTimezone(minuteOffset: number): string; +/** + * Adjust the date by the given timezone + * @param d Date object + * @param minuteOffset number + */ +export declare function adjustDate(d: Date, minuteOffset: number): void; +/** + * Computes a date expression + * @param obj The target object + * @param expr Any value that resolves to a valid date expression. Valid expressions include a number, Date, or Object{date: number|Date, timezone?: string} + */ +export declare function computeDate(obj: Any, expr: Any, options: Options): Date; +export declare function padDigits(n: number, digits: number): string; +/** + * Sums the number of days in the Gregorian calendar in years: 'startYear', + * 'startYear'+1, .., 'endYear'-1. 'startYear' and 'endYear' are expected to be from the range + * (-1000'000'000; +1000'000'000). + * + * See {@link https://github.com/mongodb/mongo/blob/master/src/mongo/db/query/datetime/date_time_support.cpp#L762} + */ +export declare function daysBetweenYears(startYear: number, endYear: number): number; +export declare const dateDiffYear: (start: Date, end: Date) => number; +export declare const dateDiffMonth: (start: Date, end: Date) => number; +export declare const dateDiffQuarter: (start: Date, end: Date) => number; +export declare const dateDiffDay: (start: Date, end: Date) => number; +export declare const dateDiffWeek: (start: Date, end: Date, startOfWeek?: DayOfWeek) => number; +export declare const dateDiffHour: (start: Date, end: Date) => number; +export declare const dateAdd: (date: Date, unit: TimeUnit, amount: number, _timezone?: string) => Date; diff --git a/node_modules/mingo/dist/types/operators/expression/date/dateAdd.d.ts b/node_modules/mingo/dist/types/operators/expression/date/dateAdd.d.ts new file mode 100644 index 0000000..c986896 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/dateAdd.d.ts @@ -0,0 +1,7 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Increments a Date object by a specified number of time units. + * @param obj + * @param expr + */ +export declare const $dateAdd: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/dateDiff.d.ts b/node_modules/mingo/dist/types/operators/expression/date/dateDiff.d.ts new file mode 100644 index 0000000..cbf12bb --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/dateDiff.d.ts @@ -0,0 +1,8 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the difference between two dates. + * @param obj + * @param expr + * @param options Options + */ +export declare const $dateDiff: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/dateFromParts.d.ts b/node_modules/mingo/dist/types/operators/expression/date/dateFromParts.d.ts new file mode 100644 index 0000000..e44d177 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/dateFromParts.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Constructs and returns a Date object given the date’s constituent properties. + * + * @param obj The document + * @param expr The date expression + * @param options Options + */ +export declare const $dateFromParts: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/dateFromString.d.ts b/node_modules/mingo/dist/types/operators/expression/date/dateFromString.d.ts new file mode 100644 index 0000000..a25a94f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/dateFromString.d.ts @@ -0,0 +1,8 @@ +import { ExpressionOperator } from "../../../core"; +import { Any } from "../../../types"; +/** + * Converts a date/time string to a date object. + * @param obj + * @param expr + */ +export declare const $dateFromString: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/dateSubtract.d.ts b/node_modules/mingo/dist/types/operators/expression/date/dateSubtract.d.ts new file mode 100644 index 0000000..38703cd --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/dateSubtract.d.ts @@ -0,0 +1,7 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Decrements a Date object by a specified number of time units. + * @param obj + * @param expr + */ +export declare const $dateSubtract: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/dateToParts.d.ts b/node_modules/mingo/dist/types/operators/expression/date/dateToParts.d.ts new file mode 100644 index 0000000..78b73c8 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/dateToParts.d.ts @@ -0,0 +1,11 @@ +import { ExpressionOperator } from "../../../core"; +import { AnyObject } from "../../../types"; +/** + * Returns a document that contains the constituent parts of a given Date value as individual properties. + * The properties returned are year, month, day, hour, minute, second and millisecond. + * + * @param obj + * @param expr + * @param options + */ +export declare const $dateToParts: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/dateToString.d.ts b/node_modules/mingo/dist/types/operators/expression/date/dateToString.d.ts new file mode 100644 index 0000000..e892e04 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/dateToString.d.ts @@ -0,0 +1,22 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the date as a formatted string. + * + * %d Day of Month (2 digits, zero padded) 01-31 + * %G Year in ISO 8601 format 0000-9999 + * %H Hour (2 digits, zero padded, 24-hour clock) 00-23 + * %L Millisecond (3 digits, zero padded) 000-999 + * %m Month (2 digits, zero padded) 01-12 + * %M Minute (2 digits, zero padded) 00-59 + * %S Second (2 digits, zero padded) 00-60 + * %u Day of week number in ISO 8601 format (1-Monday, 7-Sunday) 1-7 + * %V Week of Year in ISO 8601 format 1-53 + * %Y Year (4 digits, zero padded) 0000-9999 + * %z The timezone offset from UTC. +/-[hh][mm] + * %Z The minutes offset from UTC as a number. For example, if the timezone offset (+/-[hhmm]) was +0445, the minutes offset is +285. +/-mmm + * %% Percent Character as a Literal % + * + * @param obj current object + * @param expr operator expression + */ +export declare const $dateToString: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/dateTrunc.d.ts b/node_modules/mingo/dist/types/operators/expression/date/dateTrunc.d.ts new file mode 100644 index 0000000..75be5e0 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/dateTrunc.d.ts @@ -0,0 +1,12 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Truncates a date. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateTrunc/} + * + * @param obj + * @param expr + * @param options + * @returns + */ +export declare const $dateTrunc: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/dayOfMonth.d.ts b/node_modules/mingo/dist/types/operators/expression/date/dayOfMonth.d.ts new file mode 100644 index 0000000..2a03a4c --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/dayOfMonth.d.ts @@ -0,0 +1,7 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the day of the month for a date as a number between 1 and 31. + * @param obj + * @param expr + */ +export declare const $dayOfMonth: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/dayOfWeek.d.ts b/node_modules/mingo/dist/types/operators/expression/date/dayOfWeek.d.ts new file mode 100644 index 0000000..e7c1b02 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/dayOfWeek.d.ts @@ -0,0 +1,7 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the day of the week for a date as a number between 1 (Sunday) and 7 (Saturday). + * @param obj + * @param expr + */ +export declare const $dayOfWeek: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/dayOfYear.d.ts b/node_modules/mingo/dist/types/operators/expression/date/dayOfYear.d.ts new file mode 100644 index 0000000..5bd0f5b --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/dayOfYear.d.ts @@ -0,0 +1,7 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the day of the year for a date as a number between 1 and 366 (leap year). + * @param obj + * @param expr + */ +export declare const $dayOfYear: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/hour.d.ts b/node_modules/mingo/dist/types/operators/expression/date/hour.d.ts new file mode 100644 index 0000000..612ce9d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/hour.d.ts @@ -0,0 +1,7 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the hour for a date as a number between 0 and 23. + * @param obj + * @param expr + */ +export declare const $hour: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/index.d.ts b/node_modules/mingo/dist/types/operators/expression/date/index.d.ts new file mode 100644 index 0000000..db2506f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/index.d.ts @@ -0,0 +1,21 @@ +export * from "./dateAdd"; +export * from "./dateDiff"; +export * from "./dateFromParts"; +export * from "./dateFromString"; +export * from "./dateSubtract"; +export * from "./dateToParts"; +export * from "./dateToString"; +export * from "./dateTrunc"; +export * from "./dayOfMonth"; +export * from "./dayOfWeek"; +export * from "./dayOfYear"; +export * from "./hour"; +export * from "./isoDayOfWeek"; +export * from "./isoWeek"; +export * from "./isoWeekYear"; +export * from "./millisecond"; +export * from "./minute"; +export * from "./month"; +export * from "./second"; +export * from "./week"; +export * from "./year"; diff --git a/node_modules/mingo/dist/types/operators/expression/date/isoDayOfWeek.d.ts b/node_modules/mingo/dist/types/operators/expression/date/isoDayOfWeek.d.ts new file mode 100644 index 0000000..4f24a68 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/isoDayOfWeek.d.ts @@ -0,0 +1,7 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the weekday number in ISO 8601 format, ranging from 1 (Monday) to 7 (Sunday). + * @param obj + * @param expr + */ +export declare const $isoDayOfWeek: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/isoWeek.d.ts b/node_modules/mingo/dist/types/operators/expression/date/isoWeek.d.ts new file mode 100644 index 0000000..dab536a --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/isoWeek.d.ts @@ -0,0 +1,8 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the week number in ISO 8601 format, ranging from 1 to 53. + * Week numbers start at 1 with the week (Monday through Sunday) that contains the year's first Thursday. + * @param obj + * @param expr + */ +export declare const $isoWeek: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/isoWeekYear.d.ts b/node_modules/mingo/dist/types/operators/expression/date/isoWeekYear.d.ts new file mode 100644 index 0000000..4e6dc06 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/isoWeekYear.d.ts @@ -0,0 +1,7 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the year number in ISO 8601 format. The year starts with the Monday of week 1 and ends with the Sunday of the last week. + * @param obj + * @param expr + */ +export declare const $isoWeekYear: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/millisecond.d.ts b/node_modules/mingo/dist/types/operators/expression/date/millisecond.d.ts new file mode 100644 index 0000000..a675073 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/millisecond.d.ts @@ -0,0 +1,7 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the milliseconds of a date as a number between 0 and 999. + * @param obj + * @param expr + */ +export declare const $millisecond: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/minute.d.ts b/node_modules/mingo/dist/types/operators/expression/date/minute.d.ts new file mode 100644 index 0000000..a7e2205 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/minute.d.ts @@ -0,0 +1,7 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the minute for a date as a number between 0 and 59. + * @param obj + * @param expr + */ +export declare const $minute: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/month.d.ts b/node_modules/mingo/dist/types/operators/expression/date/month.d.ts new file mode 100644 index 0000000..5700544 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/month.d.ts @@ -0,0 +1,7 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the month for a date as a number between 1 (January) and 12 (December). + * @param obj + * @param expr + */ +export declare const $month: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/second.d.ts b/node_modules/mingo/dist/types/operators/expression/date/second.d.ts new file mode 100644 index 0000000..f6c6c10 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/second.d.ts @@ -0,0 +1,7 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the seconds for a date as a number between 0 and 60 (leap seconds). + * @param obj + * @param expr + */ +export declare const $second: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/week.d.ts b/node_modules/mingo/dist/types/operators/expression/date/week.d.ts new file mode 100644 index 0000000..456352a --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/week.d.ts @@ -0,0 +1,8 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the week of the year for a date as a number between 0 and 53. + * Weeks begin on Sundays, and week 1 begins with the first Sunday of the year. Days preceding the first Sunday of the year are in week 0 + * @param obj + * @param expr + */ +export declare const $week: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/date/year.d.ts b/node_modules/mingo/dist/types/operators/expression/date/year.d.ts new file mode 100644 index 0000000..35c77f3 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/date/year.d.ts @@ -0,0 +1,7 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the year for a date as a number (e.g. 2014). + * @param obj + * @param expr + */ +export declare const $year: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/index.d.ts b/node_modules/mingo/dist/types/operators/expression/index.d.ts new file mode 100644 index 0000000..9cb850d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/index.d.ts @@ -0,0 +1,18 @@ +export * from "./arithmetic"; +export * from "./array"; +export * from "./bitwise"; +export * from "./boolean"; +export * from "./comparison"; +export * from "./conditional"; +export * from "./custom"; +export * from "./date"; +export * from "./literal"; +export * from "./median"; +export * from "./misc"; +export * from "./object"; +export * from "./percentile"; +export * from "./set"; +export * from "./string"; +export * from "./trignometry"; +export * from "./type"; +export * from "./variable"; diff --git a/node_modules/mingo/dist/types/operators/expression/literal.d.ts b/node_modules/mingo/dist/types/operators/expression/literal.d.ts new file mode 100644 index 0000000..9337266 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/literal.d.ts @@ -0,0 +1,8 @@ +import { ExpressionOperator } from "../../core"; +/** + * Return a value without parsing. + * @param obj + * @param expr + * @param options + */ +export declare const $literal: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/median.d.ts b/node_modules/mingo/dist/types/operators/expression/median.d.ts new file mode 100644 index 0000000..5bcdab7 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/median.d.ts @@ -0,0 +1,10 @@ +import { ExpressionOperator } from "../../core"; +/** + * Returns an approximation of the median, the 50th percentile, as a scalar value. + * + * @param obj The current object + * @param expr The operator expression + * @param options Options to use for processing + * @returns {number} + */ +export declare const $median: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/misc/getField.d.ts b/node_modules/mingo/dist/types/operators/expression/misc/getField.d.ts new file mode 100644 index 0000000..ef07b4b --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/misc/getField.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Adds, updates, or removes a specified field in a document. + * + * @param {*} obj The target object for this expression + * @param {*} expr The right-hand side of the operator + * @param {Options} options Options to use for operation + */ +export declare const $getField: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/misc/index.d.ts b/node_modules/mingo/dist/types/operators/expression/misc/index.d.ts new file mode 100644 index 0000000..e2b9fec --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/misc/index.d.ts @@ -0,0 +1,3 @@ +export * from "./getField"; +export * from "./rand"; +export * from "./sampleRate"; diff --git a/node_modules/mingo/dist/types/operators/expression/misc/rand.d.ts b/node_modules/mingo/dist/types/operators/expression/misc/rand.d.ts new file mode 100644 index 0000000..2af126f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/misc/rand.d.ts @@ -0,0 +1,10 @@ +import { Options } from "../../../core"; +import { Any, AnyObject } from "../../../types"; +/** + * Returns a random float between 0 and 1. + * + * @param {*} _obj The target object for this expression + * @param {*} _expr The right-hand side of the operator + * @param {Options} _options Options to use for operation + */ +export declare const $rand: (_obj: AnyObject, _expr: Any, _options: Options) => number; diff --git a/node_modules/mingo/dist/types/operators/expression/misc/sampleRate.d.ts b/node_modules/mingo/dist/types/operators/expression/misc/sampleRate.d.ts new file mode 100644 index 0000000..09d2791 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/misc/sampleRate.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Randomly select documents at a given rate. + * + * @param {*} obj The target object for this expression + * @param {*} expr The right-hand side of the operator + * @param {Options} options Options to use for operation + */ +export declare const $sampleRate: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/object/index.d.ts b/node_modules/mingo/dist/types/operators/expression/object/index.d.ts new file mode 100644 index 0000000..06d0767 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/object/index.d.ts @@ -0,0 +1,4 @@ +export * from "./mergeObjects"; +export * from "./objectToArray"; +export * from "./setField"; +export * from "./unsetField"; diff --git a/node_modules/mingo/dist/types/operators/expression/object/mergeObjects.d.ts b/node_modules/mingo/dist/types/operators/expression/object/mergeObjects.d.ts new file mode 100644 index 0000000..b2d0a96 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/object/mergeObjects.d.ts @@ -0,0 +1,10 @@ +import { ExpressionOperator } from "../../../core"; +import { AnyObject } from "../../../types"; +/** + * Combines multiple documents into a single document. + * + * @param {*} obj The target object for this expression + * @param {*} expr The right-hand side of the operator + * @param {Options} options Options to use for operation + */ +export declare const $mergeObjects: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/object/objectToArray.d.ts b/node_modules/mingo/dist/types/operators/expression/object/objectToArray.d.ts new file mode 100644 index 0000000..7573743 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/object/objectToArray.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Converts a document to an array of documents representing key-value pairs. + * + * @param {*} obj The target object for this expression + * @param {*} expr The right-hand side of the operator + * @param {Options} options Options to use for operation + */ +export declare const $objectToArray: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/object/setField.d.ts b/node_modules/mingo/dist/types/operators/expression/object/setField.d.ts new file mode 100644 index 0000000..cc17e4d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/object/setField.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Adds, updates, or removes a specified field in a document. + * + * @param {*} obj The target object for this expression + * @param {*} expr The right-hand side of the operator + * @param {Options} options Options to use for operation + */ +export declare const $setField: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/object/unsetField.d.ts b/node_modules/mingo/dist/types/operators/expression/object/unsetField.d.ts new file mode 100644 index 0000000..981dbef --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/object/unsetField.d.ts @@ -0,0 +1,9 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Adds, updates, or removes a specified field in a document. + * + * @param {*} obj The target object for this expression + * @param {*} expr The right-hand side of the operator + * @param {Options} options Options to use for operation + */ +export declare const $unsetField: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/percentile.d.ts b/node_modules/mingo/dist/types/operators/expression/percentile.d.ts new file mode 100644 index 0000000..74d86a1 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/percentile.d.ts @@ -0,0 +1,10 @@ +import { ExpressionOperator } from "../../core"; +/** + * Returns an array of scalar values that correspond to specified percentile values. + * + * @param obj The current object + * @param expr The operator expression + * @param options Options to use for processing + * @returns {Any[]} + */ +export declare const $percentile: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/set/allElementsTrue.d.ts b/node_modules/mingo/dist/types/operators/expression/set/allElementsTrue.d.ts new file mode 100644 index 0000000..81b11e8 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/set/allElementsTrue.d.ts @@ -0,0 +1,10 @@ +/** + * Set Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#set-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Returns true if all elements of a set evaluate to true, and false otherwise. + * @param obj + * @param expr + */ +export declare const $allElementsTrue: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/set/anyElementTrue.d.ts b/node_modules/mingo/dist/types/operators/expression/set/anyElementTrue.d.ts new file mode 100644 index 0000000..9af9b90 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/set/anyElementTrue.d.ts @@ -0,0 +1,10 @@ +/** + * Set Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#set-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Returns true if any elements of a set evaluate to true, and false otherwise. + * @param obj + * @param expr + */ +export declare const $anyElementTrue: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/set/index.d.ts b/node_modules/mingo/dist/types/operators/expression/set/index.d.ts new file mode 100644 index 0000000..f03004b --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/set/index.d.ts @@ -0,0 +1,7 @@ +export * from "./allElementsTrue"; +export * from "./anyElementTrue"; +export * from "./setDifference"; +export * from "./setEquals"; +export * from "./setIntersection"; +export * from "./setIsSubset"; +export * from "./setUnion"; diff --git a/node_modules/mingo/dist/types/operators/expression/set/setDifference.d.ts b/node_modules/mingo/dist/types/operators/expression/set/setDifference.d.ts new file mode 100644 index 0000000..a431e70 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/set/setDifference.d.ts @@ -0,0 +1,10 @@ +/** + * Set Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#set-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Returns elements of a set that do not appear in a second set. + * @param obj + * @param expr + */ +export declare const $setDifference: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/set/setEquals.d.ts b/node_modules/mingo/dist/types/operators/expression/set/setEquals.d.ts new file mode 100644 index 0000000..cf180f3 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/set/setEquals.d.ts @@ -0,0 +1,10 @@ +/** + * Set Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#set-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Returns true if two sets have the same elements. + * @param obj + * @param expr + */ +export declare const $setEquals: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/set/setIntersection.d.ts b/node_modules/mingo/dist/types/operators/expression/set/setIntersection.d.ts new file mode 100644 index 0000000..664d8fd --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/set/setIntersection.d.ts @@ -0,0 +1,10 @@ +/** + * Set Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#set-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the common elements of the input sets. + * @param obj + * @param expr + */ +export declare const $setIntersection: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/set/setIsSubset.d.ts b/node_modules/mingo/dist/types/operators/expression/set/setIsSubset.d.ts new file mode 100644 index 0000000..eb3bf04 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/set/setIsSubset.d.ts @@ -0,0 +1,12 @@ +/** + * Set Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#set-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Takes two arrays and returns true when the first array is a subset of the second, + * including when the first array equals the second array, and false otherwise. + * + * @param obj + * @param expr + */ +export declare const $setIsSubset: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/set/setUnion.d.ts b/node_modules/mingo/dist/types/operators/expression/set/setUnion.d.ts new file mode 100644 index 0000000..1ad1f4d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/set/setUnion.d.ts @@ -0,0 +1,10 @@ +/** + * Set Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#set-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Returns a set that holds all elements of the input sets. + * @param obj + * @param expr + */ +export declare const $setUnion: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/_internal.d.ts b/node_modules/mingo/dist/types/operators/expression/string/_internal.d.ts new file mode 100644 index 0000000..0ab359d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/_internal.d.ts @@ -0,0 +1,23 @@ +import { Options } from "../../../core"; +import { Any, AnyObject } from "../../../types"; +/** + * Trims the resolved string + * + * @param obj + * @param expr + * @param options + */ +export declare function trimString(obj: AnyObject, expr: Any, options: Options, trimOpts: { + left: boolean; + right: boolean; +}): string | null; +/** + * Performs a regex search + * + * @param obj + * @param expr + * @param opts + */ +export declare function regexSearch(obj: AnyObject, expr: Any, options: Options, reOpts: { + global: boolean; +}): Any[] | undefined; diff --git a/node_modules/mingo/dist/types/operators/expression/string/concat.d.ts b/node_modules/mingo/dist/types/operators/expression/string/concat.d.ts new file mode 100644 index 0000000..ac48995 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/concat.d.ts @@ -0,0 +1,12 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Concatenates two strings. + * + * @param obj + * @param expr + * @returns {string|*} + */ +export declare const $concat: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/index.d.ts b/node_modules/mingo/dist/types/operators/expression/string/index.d.ts new file mode 100644 index 0000000..aa1b5b0 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/index.d.ts @@ -0,0 +1,19 @@ +export * from "./concat"; +export * from "./indexOfBytes"; +export * from "./ltrim"; +export * from "./regexFind"; +export * from "./regexFindAll"; +export * from "./regexMatch"; +export * from "./replaceAll"; +export * from "./replaceOne"; +export * from "./rtrim"; +export * from "./split"; +export * from "./strcasecmp"; +export * from "./strLenBytes"; +export * from "./strLenCP"; +export * from "./substr"; +export * from "./substrBytes"; +export * from "./substrCP"; +export * from "./toLower"; +export * from "./toUpper"; +export * from "./trim"; diff --git a/node_modules/mingo/dist/types/operators/expression/string/indexOfBytes.d.ts b/node_modules/mingo/dist/types/operators/expression/string/indexOfBytes.d.ts new file mode 100644 index 0000000..1a591fc --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/indexOfBytes.d.ts @@ -0,0 +1,13 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Searches a string for an occurrence of a substring and returns the UTF-8 code point index of the first occurence. + * If the substring is not found, returns -1. + * + * @param {AnyObject} obj + * @param {*} expr + * @return {*} + */ +export declare const $indexOfBytes: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/ltrim.d.ts b/node_modules/mingo/dist/types/operators/expression/string/ltrim.d.ts new file mode 100644 index 0000000..b2eadab --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/ltrim.d.ts @@ -0,0 +1,11 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Removes whitespace characters, including null, or the specified characters from the beginning of a string. + * + * @param obj + * @param expr + */ +export declare const $ltrim: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/regexFind.d.ts b/node_modules/mingo/dist/types/operators/expression/string/regexFind.d.ts new file mode 100644 index 0000000..e43f60d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/regexFind.d.ts @@ -0,0 +1,11 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Applies a regular expression (regex) to a string and returns information on the first matched substring. + * + * @param obj + * @param expr + */ +export declare const $regexFind: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/regexFindAll.d.ts b/node_modules/mingo/dist/types/operators/expression/string/regexFindAll.d.ts new file mode 100644 index 0000000..f1b932f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/regexFindAll.d.ts @@ -0,0 +1,11 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Applies a regular expression (regex) to a string and returns information on the all matched substrings. + * + * @param obj + * @param expr + */ +export declare const $regexFindAll: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/regexMatch.d.ts b/node_modules/mingo/dist/types/operators/expression/string/regexMatch.d.ts new file mode 100644 index 0000000..fd63d1f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/regexMatch.d.ts @@ -0,0 +1,11 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Applies a regular expression (regex) to a string and returns a boolean that indicates if a match is found or not. + * + * @param obj + * @param expr + */ +export declare const $regexMatch: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/replaceAll.d.ts b/node_modules/mingo/dist/types/operators/expression/string/replaceAll.d.ts new file mode 100644 index 0000000..4d0062c --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/replaceAll.d.ts @@ -0,0 +1,11 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Replaces all instances of a matched string in a given input. + * + * @param {AnyObject} obj + * @param {Array} expr + */ +export declare const $replaceAll: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/replaceOne.d.ts b/node_modules/mingo/dist/types/operators/expression/string/replaceOne.d.ts new file mode 100644 index 0000000..06bb999 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/replaceOne.d.ts @@ -0,0 +1,11 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Replaces the first instance of a matched string in a given input. + * + * @param {AnyObject} obj + * @param {Array} expr + */ +export declare const $replaceOne: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/rtrim.d.ts b/node_modules/mingo/dist/types/operators/expression/string/rtrim.d.ts new file mode 100644 index 0000000..3b52b3f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/rtrim.d.ts @@ -0,0 +1,11 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Removes whitespace characters, including null, or the specified characters from the end of a string. + * + * @param obj + * @param expr + */ +export declare const $rtrim: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/split.d.ts b/node_modules/mingo/dist/types/operators/expression/string/split.d.ts new file mode 100644 index 0000000..124edd7 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/split.d.ts @@ -0,0 +1,13 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Splits a string into substrings based on a delimiter. + * If the delimiter is not found within the string, returns an array containing the original string. + * + * @param {AnyObject} obj + * @param {Array} expr + * @return {Array} Returns an array of substrings. + */ +export declare const $split: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/strLenBytes.d.ts b/node_modules/mingo/dist/types/operators/expression/string/strLenBytes.d.ts new file mode 100644 index 0000000..2747769 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/strLenBytes.d.ts @@ -0,0 +1,12 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the number of UTF-8 encoded bytes in the specified string. + * + * @param {AnyObject} obj + * @param {String} expr + * @return {Number} + */ +export declare const $strLenBytes: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/strLenCP.d.ts b/node_modules/mingo/dist/types/operators/expression/string/strLenCP.d.ts new file mode 100644 index 0000000..49897d2 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/strLenCP.d.ts @@ -0,0 +1,12 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the number of UTF-8 code points in the specified string. + * + * @param {AnyObject} obj + * @param {String} expr + * @return {Number} + */ +export declare const $strLenCP: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/strcasecmp.d.ts b/node_modules/mingo/dist/types/operators/expression/string/strcasecmp.d.ts new file mode 100644 index 0000000..e2c6efc --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/strcasecmp.d.ts @@ -0,0 +1,12 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Compares two strings and returns an integer that reflects the comparison. + * + * @param obj + * @param expr + * @returns {number} + */ +export declare const $strcasecmp: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/substr.d.ts b/node_modules/mingo/dist/types/operators/expression/string/substr.d.ts new file mode 100644 index 0000000..edd330b --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/substr.d.ts @@ -0,0 +1,13 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Returns a substring of a string, starting at a specified index position and including the specified number of characters. + * The index is zero-based. + * + * @param obj + * @param expr + * @returns {string} + */ +export declare const $substr: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/substrBytes.d.ts b/node_modules/mingo/dist/types/operators/expression/string/substrBytes.d.ts new file mode 100644 index 0000000..a5ba683 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/substrBytes.d.ts @@ -0,0 +1,15 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Returns a substring of a string, starting at a specified index position and including the specified number of characters. + * The index is zero-based. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrBytes/}. + * + * @param obj + * @param expr + * @returns {string} + */ +export declare const $substrBytes: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/substrCP.d.ts b/node_modules/mingo/dist/types/operators/expression/string/substrCP.d.ts new file mode 100644 index 0000000..14b9f1a --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/substrCP.d.ts @@ -0,0 +1,5 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +export declare const $substrCP: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/toLower.d.ts b/node_modules/mingo/dist/types/operators/expression/string/toLower.d.ts new file mode 100644 index 0000000..1e3e869 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/toLower.d.ts @@ -0,0 +1,12 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Converts a string to lowercase. + * + * @param obj + * @param expr + * @returns {string} + */ +export declare const $toLower: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/toUpper.d.ts b/node_modules/mingo/dist/types/operators/expression/string/toUpper.d.ts new file mode 100644 index 0000000..3e177ad --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/toUpper.d.ts @@ -0,0 +1,12 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Converts a string to uppercase. + * + * @param obj + * @param expr + * @returns {string} + */ +export declare const $toUpper: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/string/trim.d.ts b/node_modules/mingo/dist/types/operators/expression/string/trim.d.ts new file mode 100644 index 0000000..3c8872c --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/string/trim.d.ts @@ -0,0 +1,11 @@ +/** + * String Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#string-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Removes whitespace characters, including null, or the specified characters from the beginning and end of a string. + * + * @param obj + * @param expr + */ +export declare const $trim: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/_internal.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/_internal.d.ts new file mode 100644 index 0000000..014aa6f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/_internal.d.ts @@ -0,0 +1,8 @@ +import { ExpressionOperator } from "../../../core"; +import { Callback } from "../../../types"; +/** + * Returns an operator for a given trignometric function + * + * @param f The trignometric function + */ +export declare function createTrignometryOperator(f: Callback, fixedPoints?: Record): ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/acos.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/acos.d.ts new file mode 100644 index 0000000..3ca6db5 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/acos.d.ts @@ -0,0 +1,2 @@ +/** Returns the inverse cosine (arc cosine) of a value in radians. */ +export declare const $acos: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/acosh.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/acosh.d.ts new file mode 100644 index 0000000..5de59b5 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/acosh.d.ts @@ -0,0 +1,2 @@ +/** Returns the inverse hyperbolic cosine (hyperbolic arc cosine) of a value in radians. */ +export declare const $acosh: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/asin.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/asin.d.ts new file mode 100644 index 0000000..3da41ef --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/asin.d.ts @@ -0,0 +1,2 @@ +/** Returns the inverse sin (arc sine) of a value in radians. */ +export declare const $asin: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/asinh.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/asinh.d.ts new file mode 100644 index 0000000..c3737bb --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/asinh.d.ts @@ -0,0 +1,2 @@ +/** Returns the inverse hyperbolic sine (hyperbolic arc sine) of a value in radians. */ +export declare const $asinh: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/atan.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/atan.d.ts new file mode 100644 index 0000000..1abcc66 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/atan.d.ts @@ -0,0 +1,2 @@ +/** Returns the inverse tangent (arc tangent) of a value in radians. */ +export declare const $atan: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/atan2.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/atan2.d.ts new file mode 100644 index 0000000..fe12076 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/atan2.d.ts @@ -0,0 +1,4 @@ +import { ExpressionOperator } from "../../../core"; +/** + * Returns the inverse tangent (arc tangent) of y / x in radians, where y and x are the first and second values passed to the expression respectively. */ +export declare const $atan2: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/atanh.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/atanh.d.ts new file mode 100644 index 0000000..7ed1b60 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/atanh.d.ts @@ -0,0 +1,2 @@ +/** Returns the inverse hyperbolic tangent (hyperbolic arc tangent) of a value in radians. */ +export declare const $atanh: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/cos.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/cos.d.ts new file mode 100644 index 0000000..eb748b7 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/cos.d.ts @@ -0,0 +1,2 @@ +/** Returns the cosine of a value that is measured in radians. */ +export declare const $cos: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/cosh.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/cosh.d.ts new file mode 100644 index 0000000..af146d4 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/cosh.d.ts @@ -0,0 +1,2 @@ +/** Returns the hyperbolic cosine of a value that is measured in radians. */ +export declare const $cosh: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/degreesToRadians.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/degreesToRadians.d.ts new file mode 100644 index 0000000..b2cc30f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/degreesToRadians.d.ts @@ -0,0 +1,2 @@ +/** Converts a value from degrees to radians. */ +export declare const $degreesToRadians: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/index.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/index.d.ts new file mode 100644 index 0000000..5866fff --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/index.d.ts @@ -0,0 +1,14 @@ +export * from "./acos"; +export * from "./acosh"; +export * from "./asin"; +export * from "./asinh"; +export * from "./atan"; +export * from "./atan2"; +export * from "./atanh"; +export * from "./cos"; +export * from "./cosh"; +export * from "./degreesToRadians"; +export * from "./radiansToDegrees"; +export * from "./sin"; +export * from "./sinh"; +export * from "./tan"; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/radiansToDegrees.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/radiansToDegrees.d.ts new file mode 100644 index 0000000..1868049 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/radiansToDegrees.d.ts @@ -0,0 +1,2 @@ +/** Converts a value from radians to degrees. */ +export declare const $radiansToDegrees: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/sin.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/sin.d.ts new file mode 100644 index 0000000..4d532a1 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/sin.d.ts @@ -0,0 +1,2 @@ +/** Returns the sine of a value that is measured in radians. */ +export declare const $sin: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/sinh.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/sinh.d.ts new file mode 100644 index 0000000..8f9b9da --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/sinh.d.ts @@ -0,0 +1,2 @@ +/** Returns the hyperbolic sine of a value that is measured in radians. */ +export declare const $sinh: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/trignometry/tan.d.ts b/node_modules/mingo/dist/types/operators/expression/trignometry/tan.d.ts new file mode 100644 index 0000000..261b0e0 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/trignometry/tan.d.ts @@ -0,0 +1,2 @@ +/** Returns the tangent of a value that is measured in radians. */ +export declare const $tan: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/type/_internal.d.ts b/node_modules/mingo/dist/types/operators/expression/type/_internal.d.ts new file mode 100644 index 0000000..ac1b326 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/type/_internal.d.ts @@ -0,0 +1,10 @@ +import { Options } from "../../../core"; +import { Any, AnyObject } from "../../../types"; +export declare const MAX_INT = 2147483647; +export declare const MIN_INT = -2147483648; +export declare const MAX_LONG: number; +export declare const MIN_LONG: number; +export declare class TypeConvertError extends Error { + constructor(message: string); +} +export declare function toInteger(obj: AnyObject, expr: Any, options: Options, min: number, max: number): number | null; diff --git a/node_modules/mingo/dist/types/operators/expression/type/convert.d.ts b/node_modules/mingo/dist/types/operators/expression/type/convert.d.ts new file mode 100644 index 0000000..8981048 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/type/convert.d.ts @@ -0,0 +1,11 @@ +/** + * Type Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#type-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Converts a value to a specified type. + * + * @param obj + * @param expr + */ +export declare const $convert: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/type/index.d.ts b/node_modules/mingo/dist/types/operators/expression/type/index.d.ts new file mode 100644 index 0000000..f948e3c --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/type/index.d.ts @@ -0,0 +1,10 @@ +export * from "./convert"; +export * from "./isNumber"; +export * from "./toBool"; +export * from "./toDate"; +export * from "./toDecimal"; +export * from "./toDouble"; +export * from "./toInt"; +export * from "./toLong"; +export * from "./toString"; +export * from "./type"; diff --git a/node_modules/mingo/dist/types/operators/expression/type/isNumber.d.ts b/node_modules/mingo/dist/types/operators/expression/type/isNumber.d.ts new file mode 100644 index 0000000..fb070fb --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/type/isNumber.d.ts @@ -0,0 +1,11 @@ +/** + * Type Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#type-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Checks if the specified expression resolves to a numeric value + * + * @param obj + * @param expr + */ +export declare const $isNumber: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/type/toBool.d.ts b/node_modules/mingo/dist/types/operators/expression/type/toBool.d.ts new file mode 100644 index 0000000..0960b5d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/type/toBool.d.ts @@ -0,0 +1,11 @@ +/** + * Type Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#type-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Converts a value to a boolean. + * + * @param obj + * @param expr + */ +export declare const $toBool: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/type/toDate.d.ts b/node_modules/mingo/dist/types/operators/expression/type/toDate.d.ts new file mode 100644 index 0000000..5b79d16 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/type/toDate.d.ts @@ -0,0 +1,11 @@ +/** + * Type Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#type-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Converts a value to a date. If the value cannot be converted to a date, $toDate errors. If the value is null or missing, $toDate returns null. + * + * @param obj + * @param expr + */ +export declare const $toDate: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/type/toDecimal.d.ts b/node_modules/mingo/dist/types/operators/expression/type/toDecimal.d.ts new file mode 100644 index 0000000..bff1a51 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/type/toDecimal.d.ts @@ -0,0 +1,9 @@ +/** + * Type Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#type-expression-operators + */ +/** + * Converts a value to a decimal. If the value cannot be converted to a decimal, $toDecimal errors. + * If the value is null or missing, $toDecimal returns null. + * This is just an alias for `$toDouble` in this library. + */ +export declare const $toDecimal: import("../../../core").ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/type/toDouble.d.ts b/node_modules/mingo/dist/types/operators/expression/type/toDouble.d.ts new file mode 100644 index 0000000..82c8a38 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/type/toDouble.d.ts @@ -0,0 +1,11 @@ +/** + * Type Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#type-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Converts a value to a double. If the value cannot be converted to an double, $toDouble errors. If the value is null or missing, $toDouble returns null. + * + * @param obj + * @param expr + */ +export declare const $toDouble: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/type/toInt.d.ts b/node_modules/mingo/dist/types/operators/expression/type/toInt.d.ts new file mode 100644 index 0000000..7e3d60b --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/type/toInt.d.ts @@ -0,0 +1,10 @@ +/** + * Type Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#type-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Converts a value to an integer. If the value cannot be converted to an integer, $toInt errors. If the value is null or missing, $toInt returns null. + * @param obj + * @param expr + */ +export declare const $toInt: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/type/toLong.d.ts b/node_modules/mingo/dist/types/operators/expression/type/toLong.d.ts new file mode 100644 index 0000000..40d9f7d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/type/toLong.d.ts @@ -0,0 +1,10 @@ +/** + * Type Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#type-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Converts a value to a long. If the value cannot be converted to a long, $toLong errors. If the value is null or missing, $toLong returns null. + * @param obj + * @param expr + */ +export declare const $toLong: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/type/toString.d.ts b/node_modules/mingo/dist/types/operators/expression/type/toString.d.ts new file mode 100644 index 0000000..d093364 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/type/toString.d.ts @@ -0,0 +1,5 @@ +/** + * Type Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#type-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +export declare const $toString: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/type/type.d.ts b/node_modules/mingo/dist/types/operators/expression/type/type.d.ts new file mode 100644 index 0000000..af62a7d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/type/type.d.ts @@ -0,0 +1,5 @@ +/** + * Type Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#type-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +export declare const $type: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/expression/variable/index.d.ts b/node_modules/mingo/dist/types/operators/expression/variable/index.d.ts new file mode 100644 index 0000000..5931ab2 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/variable/index.d.ts @@ -0,0 +1 @@ +export * from "./let"; diff --git a/node_modules/mingo/dist/types/operators/expression/variable/let.d.ts b/node_modules/mingo/dist/types/operators/expression/variable/let.d.ts new file mode 100644 index 0000000..d30ec01 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/expression/variable/let.d.ts @@ -0,0 +1,13 @@ +/** + * Variable Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#variable-expression-operators + */ +import { ExpressionOperator } from "../../../core"; +/** + * Defines variables for use within the scope of a sub-expression and returns the result of the sub-expression. + * + * @param obj The target object for this expression + * @param expr The right-hand side of the operator + * @param options Options to use for this operattion + * @returns {*} + */ +export declare const $let: ExpressionOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/_internal.d.ts b/node_modules/mingo/dist/types/operators/pipeline/_internal.d.ts new file mode 100644 index 0000000..0c1b69d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/_internal.d.ts @@ -0,0 +1,23 @@ +import { Any, TimeUnit } from "../../types"; +export type Boundary = "current" | "unbounded" | number; +export interface WindowOutputOption { + readonly documents?: [Boundary, Boundary]; + readonly range?: [Boundary, Boundary]; + readonly unit?: TimeUnit; +} +export interface SetWindowFieldsInput { + readonly partitionBy?: Any; + readonly sortBy: Record; + readonly output: Record; +} +export interface WindowOperatorInput { + readonly parentExpr: SetWindowFieldsInput; + readonly inputExpr: Any; + readonly documentNumber: number; + readonly field: string; +} +/** Checks whether the specified window is unbounded. */ +export declare const isUnbounded: (window: WindowOutputOption) => boolean; diff --git a/node_modules/mingo/dist/types/operators/pipeline/addFields.d.ts b/node_modules/mingo/dist/types/operators/pipeline/addFields.d.ts new file mode 100644 index 0000000..ed5a788 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/addFields.d.ts @@ -0,0 +1,13 @@ +import { PipelineOperator } from "../../core"; +/** + * Adds new fields to documents. $addFields outputs documents that contain + * all existing fields from the input documents and newly added fields. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/ usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $addFields: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/bucket.d.ts b/node_modules/mingo/dist/types/operators/pipeline/bucket.d.ts new file mode 100644 index 0000000..a780309 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/bucket.d.ts @@ -0,0 +1,13 @@ +import { PipelineOperator } from "../../core"; +/** + * Categorizes incoming documents into groups, called buckets, based on a specified + * expression and bucket boundaries and outputs a document per each bucket. + * + * See {@link https://docs.mongodb.com/manual/reference/operator/aggregation/bucket/ usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $bucket: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/bucketAuto.d.ts b/node_modules/mingo/dist/types/operators/pipeline/bucketAuto.d.ts new file mode 100644 index 0000000..b3cfad1 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/bucketAuto.d.ts @@ -0,0 +1,13 @@ +import { PipelineOperator } from "../../core"; +/** + * Categorizes incoming documents into a specific number of groups, called buckets, based on a specified expression. + * Bucket boundaries are automatically determined in an attempt to evenly distribute the documents into the specified number of buckets. + * + * See {@link https://docs.mongodb.com/manual/reference/operator/aggregation/bucketAuto/ usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $bucketAuto: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/count.d.ts b/node_modules/mingo/dist/types/operators/pipeline/count.d.ts new file mode 100644 index 0000000..22e3e15 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/count.d.ts @@ -0,0 +1,12 @@ +import { PipelineOperator } from "../../core"; +/** + * Returns a count of the number of documents at this stage of the aggregation pipeline. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count usage}. + * + * @param collection + * @param expr + * @param _options + * @returns + */ +export declare const $count: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/densify.d.ts b/node_modules/mingo/dist/types/operators/pipeline/densify.d.ts new file mode 100644 index 0000000..964aa20 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/densify.d.ts @@ -0,0 +1,12 @@ +import { PipelineOperator } from "../../core"; +/** + * Creates new documents in a sequence of documents where certain values in a field are missing. + * + * {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $densify: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/facet.d.ts b/node_modules/mingo/dist/types/operators/pipeline/facet.d.ts new file mode 100644 index 0000000..0bacfa9 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/facet.d.ts @@ -0,0 +1,12 @@ +import { PipelineOperator } from "../../core"; +/** + * Processes multiple aggregation pipelines within a single stage on the same set of input documents. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $facet: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/fill.d.ts b/node_modules/mingo/dist/types/operators/pipeline/fill.d.ts new file mode 100644 index 0000000..086e168 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/fill.d.ts @@ -0,0 +1,12 @@ +import { PipelineOperator } from "../../core"; +/** + * Populates null and missing field values within documents. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/ usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $fill: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/graphLookup.d.ts b/node_modules/mingo/dist/types/operators/pipeline/graphLookup.d.ts new file mode 100644 index 0000000..6b409fb --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/graphLookup.d.ts @@ -0,0 +1,13 @@ +import { PipelineOperator } from "../../core"; +/** + * Performs a recursive search on a collection. + * To each output document, adds a new array field that contains the traversal results of the recursive search for that document. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/ usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $graphLookup: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/group.d.ts b/node_modules/mingo/dist/types/operators/pipeline/group.d.ts new file mode 100644 index 0000000..7a03ce2 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/group.d.ts @@ -0,0 +1,12 @@ +import { PipelineOperator } from "../../core"; +/** + * Separates documents into groups according to a "group key" and output one document for each unique group key. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $group: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/index.d.ts b/node_modules/mingo/dist/types/operators/pipeline/index.d.ts new file mode 100644 index 0000000..de9fb4e --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/index.d.ts @@ -0,0 +1,30 @@ +/** + * Pipeline Aggregation Stages. https://docs.mongodb.com/manual/reference/operator/aggregation- + */ +export * from "./addFields"; +export * from "./bucket"; +export * from "./bucketAuto"; +export * from "./count"; +export * from "./densify"; +export * from "./facet"; +export * from "./fill"; +export * from "./graphLookup"; +export * from "./group"; +export * from "./limit"; +export * from "./lookup"; +export * from "./match"; +export * from "./merge"; +export * from "./out"; +export * from "./project"; +export * from "./redact"; +export * from "./replaceRoot"; +export * from "./replaceWith"; +export * from "./sample"; +export * from "./set"; +export * from "./setWindowFields"; +export * from "./skip"; +export * from "./sort"; +export * from "./sortByCount"; +export * from "./unionWith"; +export * from "./unset"; +export * from "./unwind"; diff --git a/node_modules/mingo/dist/types/operators/pipeline/limit.d.ts b/node_modules/mingo/dist/types/operators/pipeline/limit.d.ts new file mode 100644 index 0000000..ff00155 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/limit.d.ts @@ -0,0 +1,12 @@ +import { PipelineOperator } from "../../core"; +/** + * Restricts the number of documents in an aggregation pipeline. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/ usage}. + * + * @param collection + * @param value + * @param options + * @returns + */ +export declare const $limit: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/lookup.d.ts b/node_modules/mingo/dist/types/operators/pipeline/lookup.d.ts new file mode 100644 index 0000000..7c56d2e --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/lookup.d.ts @@ -0,0 +1,11 @@ +import { PipelineOperator } from "../../core"; +/** + * Performs a left outer join to another collection to filter in documents from the "joined" collection for processing. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/ usage} + * + * @param collection + * @param expr + * @param options + */ +export declare const $lookup: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/match.d.ts b/node_modules/mingo/dist/types/operators/pipeline/match.d.ts new file mode 100644 index 0000000..a6b28b7 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/match.d.ts @@ -0,0 +1,12 @@ +import { PipelineOperator } from "../../core"; +/** + * Filters the document stream to allow only matching documents to pass unmodified into the next pipeline stage. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/match usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $match: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/merge.d.ts b/node_modules/mingo/dist/types/operators/pipeline/merge.d.ts new file mode 100644 index 0000000..d8e3ed7 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/merge.d.ts @@ -0,0 +1,14 @@ +import { PipelineOperator } from "../../core"; +/** + * Writes the resulting documents of the aggregation pipeline to a collection. + * + * NB: Object are deep cloned for outputing regardless of the ProcessingMode. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/ usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $merge: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/out.d.ts b/node_modules/mingo/dist/types/operators/pipeline/out.d.ts new file mode 100644 index 0000000..8c2bda4 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/out.d.ts @@ -0,0 +1,17 @@ +import { PipelineOperator } from "../../core"; +/** + * Takes the documents returned by the aggregation pipeline and writes them to a specified collection. + * + * Unlike in MongoDB, this operator can appear in any position in the pipeline and is + * useful for collecting intermediate results of an aggregation operation. + * + * Note: Object are deep cloned for output regardless of the {@link ProcessingMode}. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/ usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $out: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/project.d.ts b/node_modules/mingo/dist/types/operators/pipeline/project.d.ts new file mode 100644 index 0000000..beda3d3 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/project.d.ts @@ -0,0 +1,13 @@ +import { PipelineOperator } from "../../core"; +/** + * Reshapes each document in the stream, such as by adding new fields or removing existing fields. + * For each input document, outputs one document. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project usage}. + * + * @param collection + * @param expr + * @param opt + * @returns + */ +export declare const $project: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/redact.d.ts b/node_modules/mingo/dist/types/operators/pipeline/redact.d.ts new file mode 100644 index 0000000..14ed960 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/redact.d.ts @@ -0,0 +1,7 @@ +import { PipelineOperator } from "../../core"; +/** + * Restricts the contents of the documents based on information stored in the documents themselves. + * + * See {@link https://docs.mongodb.com/manual/reference/operator/aggregation/redact/ usage} + */ +export declare const $redact: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/replaceRoot.d.ts b/node_modules/mingo/dist/types/operators/pipeline/replaceRoot.d.ts new file mode 100644 index 0000000..a30a063 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/replaceRoot.d.ts @@ -0,0 +1,13 @@ +import { PipelineOperator } from "../../core"; +/** + * Replaces a document with the specified embedded document or new one. + * The replacement document can be any valid expression that resolves to a document. + * + * See {@link https://docs.mongodb.com/manual/reference/operator/aggregation/replaceRoot/ usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $replaceRoot: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/replaceWith.d.ts b/node_modules/mingo/dist/types/operators/pipeline/replaceWith.d.ts new file mode 100644 index 0000000..c626cf9 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/replaceWith.d.ts @@ -0,0 +1,12 @@ +import { PipelineOperator } from "../../core"; +/** + * Replaces the input document with the specified document. The operation replaces all existing fields in the input document, including the _id field. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/ usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $replaceWith: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/sample.d.ts b/node_modules/mingo/dist/types/operators/pipeline/sample.d.ts new file mode 100644 index 0000000..b999b7a --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/sample.d.ts @@ -0,0 +1,12 @@ +import { PipelineOperator } from "../../core"; +/** + * Randomly selects the specified number of documents from its input. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/ usage}. + * + * @param collection + * @param expr + * @param _options + * @returns + */ +export declare const $sample: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/set.d.ts b/node_modules/mingo/dist/types/operators/pipeline/set.d.ts new file mode 100644 index 0000000..d022523 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/set.d.ts @@ -0,0 +1,4 @@ +/** + * Alias for $addFields. + */ +export declare const $set: import("../../core").PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/setWindowFields.d.ts b/node_modules/mingo/dist/types/operators/pipeline/setWindowFields.d.ts new file mode 100644 index 0000000..33c9960 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/setWindowFields.d.ts @@ -0,0 +1,12 @@ +import { PipelineOperator } from "../../core"; +/** + * Groups documents into windows and applies one or more operators to the documents in each window. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/ usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $setWindowFields: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/skip.d.ts b/node_modules/mingo/dist/types/operators/pipeline/skip.d.ts new file mode 100644 index 0000000..953f383 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/skip.d.ts @@ -0,0 +1,12 @@ +import { PipelineOperator } from "../../core"; +/** + * Skips the first n documents where n is the specified skip number and passes the remaining documents unmodified to the pipeline. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip usage}. + * + * @param collection + * @param expr + * @param _options + * @returns + */ +export declare const $skip: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/sort.d.ts b/node_modules/mingo/dist/types/operators/pipeline/sort.d.ts new file mode 100644 index 0000000..0b4c159 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/sort.d.ts @@ -0,0 +1,12 @@ +import { PipelineOperator } from "../../core"; +/** + * Sorts all input documents and returns them to the pipeline in sorted order. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/ usage}. + * + * @param collection + * @param sortKeys + * @param options + * @returns + */ +export declare const $sort: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/sortByCount.d.ts b/node_modules/mingo/dist/types/operators/pipeline/sortByCount.d.ts new file mode 100644 index 0000000..0a3a035 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/sortByCount.d.ts @@ -0,0 +1,13 @@ +import { PipelineOperator } from "../../core"; +/** + * Groups incoming documents based on the value of a specified expression, + * then computes the count of documents in each distinct group. + * + * {@link https://docs.mongodb.com/manual/reference/operator/aggregation/sortByCount/ usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $sortByCount: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/unionWith.d.ts b/node_modules/mingo/dist/types/operators/pipeline/unionWith.d.ts new file mode 100644 index 0000000..b706976 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/unionWith.d.ts @@ -0,0 +1,11 @@ +import { PipelineOperator } from "../../core"; +/** + * Combines two aggregations into a single result set. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith usage}. + * + * @param collection + * @param expr + * @param opt + */ +export declare const $unionWith: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/unset.d.ts b/node_modules/mingo/dist/types/operators/pipeline/unset.d.ts new file mode 100644 index 0000000..5bc19a7 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/unset.d.ts @@ -0,0 +1,12 @@ +import { PipelineOperator } from "../../core"; +/** + * Removes/excludes fields from documents. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset usage}. + * + * @param collection + * @param expr + * @param options + * @returns {Iterator} + */ +export declare const $unset: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/pipeline/unwind.d.ts b/node_modules/mingo/dist/types/operators/pipeline/unwind.d.ts new file mode 100644 index 0000000..4c74fb9 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/pipeline/unwind.d.ts @@ -0,0 +1,13 @@ +import { PipelineOperator } from "../../core"; +/** + * Deconstructs an array field from the input documents to output a document for each element. Each output document replaces the array with an element value. + * For each input document, outputs n documents where n is the number of array elements and can be zero for an empty array. + * + * See {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/ usage}. + * + * @param collection + * @param expr + * @param options + * @returns + */ +export declare const $unwind: PipelineOperator; diff --git a/node_modules/mingo/dist/types/operators/projection/elemMatch.d.ts b/node_modules/mingo/dist/types/operators/projection/elemMatch.d.ts new file mode 100644 index 0000000..eb0f1b9 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/projection/elemMatch.d.ts @@ -0,0 +1,10 @@ +import { ProjectionOperator } from "../../core"; +/** + * Projects only the first element from an array that matches the specified $elemMatch condition. + * + * @param obj + * @param field + * @param expr + * @returns {*} + */ +export declare const $elemMatch: ProjectionOperator; diff --git a/node_modules/mingo/dist/types/operators/projection/index.d.ts b/node_modules/mingo/dist/types/operators/projection/index.d.ts new file mode 100644 index 0000000..0c4f9e6 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/projection/index.d.ts @@ -0,0 +1,2 @@ +export * from "./elemMatch"; +export * from "./slice"; diff --git a/node_modules/mingo/dist/types/operators/projection/slice.d.ts b/node_modules/mingo/dist/types/operators/projection/slice.d.ts new file mode 100644 index 0000000..7034e98 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/projection/slice.d.ts @@ -0,0 +1,9 @@ +import { ProjectionOperator } from "../../core"; +/** + * Limits the number of elements projected from an array. Supports skip and limit slices. + * + * @param obj + * @param field + * @param expr + */ +export declare const $slice: ProjectionOperator; diff --git a/node_modules/mingo/dist/types/operators/query/array/all.d.ts b/node_modules/mingo/dist/types/operators/query/array/all.d.ts new file mode 100644 index 0000000..a56b9eb --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/array/all.d.ts @@ -0,0 +1,4 @@ +/** + * Matches arrays that contain all elements specified in the query. + */ +export declare const $all: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/array/elemMatch.d.ts b/node_modules/mingo/dist/types/operators/query/array/elemMatch.d.ts new file mode 100644 index 0000000..47385af --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/array/elemMatch.d.ts @@ -0,0 +1,4 @@ +/** + * Selects documents if element in the array field matches all the specified $elemMatch conditions. + */ +export declare const $elemMatch: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/array/index.d.ts b/node_modules/mingo/dist/types/operators/query/array/index.d.ts new file mode 100644 index 0000000..162a683 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/array/index.d.ts @@ -0,0 +1,3 @@ +export * from "./all"; +export * from "./elemMatch"; +export * from "./size"; diff --git a/node_modules/mingo/dist/types/operators/query/array/size.d.ts b/node_modules/mingo/dist/types/operators/query/array/size.d.ts new file mode 100644 index 0000000..a4dbb9b --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/array/size.d.ts @@ -0,0 +1,4 @@ +/** + * Selects documents if the array field is a specified size. + */ +export declare const $size: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/bitwise/_internal.d.ts b/node_modules/mingo/dist/types/operators/query/bitwise/_internal.d.ts new file mode 100644 index 0000000..caae568 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/bitwise/_internal.d.ts @@ -0,0 +1,2 @@ +import { QueryOperator } from "../../../core"; +export declare const createBitwiseOperator: (predicate: (_1: number, _2: number) => boolean) => QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/bitwise/bitsAllClear.d.ts b/node_modules/mingo/dist/types/operators/query/bitwise/bitsAllClear.d.ts new file mode 100644 index 0000000..d7c6281 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/bitwise/bitsAllClear.d.ts @@ -0,0 +1,4 @@ +/** + * Matches numeric or binary values in which a set of bit positions all have a value of 0. + */ +export declare const $bitsAllClear: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/bitwise/bitsAllSet.d.ts b/node_modules/mingo/dist/types/operators/query/bitwise/bitsAllSet.d.ts new file mode 100644 index 0000000..e1b0376 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/bitwise/bitsAllSet.d.ts @@ -0,0 +1,4 @@ +/** + * Matches numeric or binary values in which a set of bit positions all have a value of 1. + */ +export declare const $bitsAllSet: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/bitwise/bitsAnyClear.d.ts b/node_modules/mingo/dist/types/operators/query/bitwise/bitsAnyClear.d.ts new file mode 100644 index 0000000..d78d06b --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/bitwise/bitsAnyClear.d.ts @@ -0,0 +1,4 @@ +/** + * Matches numeric or binary values in which any bit from a set of bit positions has a value of 0. + */ +export declare const $bitsAnyClear: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/bitwise/bitsAnySet.d.ts b/node_modules/mingo/dist/types/operators/query/bitwise/bitsAnySet.d.ts new file mode 100644 index 0000000..43c3d60 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/bitwise/bitsAnySet.d.ts @@ -0,0 +1,4 @@ +/** + * Matches numeric or binary values in which any bit from a set of bit positions has a value of 1. + */ +export declare const $bitsAnySet: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/bitwise/index.d.ts b/node_modules/mingo/dist/types/operators/query/bitwise/index.d.ts new file mode 100644 index 0000000..e09465d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/bitwise/index.d.ts @@ -0,0 +1,4 @@ +export { $bitsAllClear } from "./bitsAllClear"; +export { $bitsAllSet } from "./bitsAllSet"; +export { $bitsAnyClear } from "./bitsAnyClear"; +export { $bitsAnySet } from "./bitsAnySet"; diff --git a/node_modules/mingo/dist/types/operators/query/comparison/eq.d.ts b/node_modules/mingo/dist/types/operators/query/comparison/eq.d.ts new file mode 100644 index 0000000..d61a448 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/comparison/eq.d.ts @@ -0,0 +1,4 @@ +/** + * Matches values that are equal to a specified value. + */ +export declare const $eq: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/comparison/gt.d.ts b/node_modules/mingo/dist/types/operators/query/comparison/gt.d.ts new file mode 100644 index 0000000..2d79928 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/comparison/gt.d.ts @@ -0,0 +1,4 @@ +/** + * Matches values that are greater than a specified value. + */ +export declare const $gt: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/comparison/gte.d.ts b/node_modules/mingo/dist/types/operators/query/comparison/gte.d.ts new file mode 100644 index 0000000..2e4036c --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/comparison/gte.d.ts @@ -0,0 +1,4 @@ +/** + * Matches values that are greater than or equal to a specified value. + */ +export declare const $gte: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/comparison/in.d.ts b/node_modules/mingo/dist/types/operators/query/comparison/in.d.ts new file mode 100644 index 0000000..73d6b34 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/comparison/in.d.ts @@ -0,0 +1,4 @@ +/** + * Matches any of the values that exist in an array specified in the query. + */ +export declare const $in: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/comparison/index.d.ts b/node_modules/mingo/dist/types/operators/query/comparison/index.d.ts new file mode 100644 index 0000000..9e68ac9 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/comparison/index.d.ts @@ -0,0 +1,8 @@ +export { $eq } from "./eq"; +export { $gt } from "./gt"; +export { $gte } from "./gte"; +export { $in } from "./in"; +export { $lt } from "./lt"; +export { $lte } from "./lte"; +export { $ne } from "./ne"; +export { $nin } from "./nin"; diff --git a/node_modules/mingo/dist/types/operators/query/comparison/lt.d.ts b/node_modules/mingo/dist/types/operators/query/comparison/lt.d.ts new file mode 100644 index 0000000..df0981f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/comparison/lt.d.ts @@ -0,0 +1,4 @@ +/** + * Matches values that are less than the value specified in the query. + */ +export declare const $lt: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/comparison/lte.d.ts b/node_modules/mingo/dist/types/operators/query/comparison/lte.d.ts new file mode 100644 index 0000000..4cffd7d --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/comparison/lte.d.ts @@ -0,0 +1,4 @@ +/** + * Matches values that are less than or equal to the value specified in the query. + */ +export declare const $lte: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/comparison/ne.d.ts b/node_modules/mingo/dist/types/operators/query/comparison/ne.d.ts new file mode 100644 index 0000000..2b7e573 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/comparison/ne.d.ts @@ -0,0 +1,4 @@ +/** + * Matches all values that are not equal to the value specified in the query. + */ +export declare const $ne: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/comparison/nin.d.ts b/node_modules/mingo/dist/types/operators/query/comparison/nin.d.ts new file mode 100644 index 0000000..d6e829e --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/comparison/nin.d.ts @@ -0,0 +1,4 @@ +/** + * Matches values that do not exist in an array specified to the query. + */ +export declare const $nin: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/element/exists.d.ts b/node_modules/mingo/dist/types/operators/query/element/exists.d.ts new file mode 100644 index 0000000..31c736a --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/element/exists.d.ts @@ -0,0 +1,6 @@ +import { Options } from "../../../core"; +import { Any, AnyObject } from "../../../types"; +/** + * Matches documents that contain or do not contain a specified field, including documents where the field value is null. + */ +export declare const $exists: (selector: string, value: Any, _options: Options) => (o: AnyObject) => boolean; diff --git a/node_modules/mingo/dist/types/operators/query/element/index.d.ts b/node_modules/mingo/dist/types/operators/query/element/index.d.ts new file mode 100644 index 0000000..702f535 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/element/index.d.ts @@ -0,0 +1,2 @@ +export * from "./exists"; +export * from "./type"; diff --git a/node_modules/mingo/dist/types/operators/query/element/type.d.ts b/node_modules/mingo/dist/types/operators/query/element/type.d.ts new file mode 100644 index 0000000..f945882 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/element/type.d.ts @@ -0,0 +1,4 @@ +/** + * Selects documents if a field is of the specified type. + */ +export declare const $type: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/evaluation/expr.d.ts b/node_modules/mingo/dist/types/operators/query/evaluation/expr.d.ts new file mode 100644 index 0000000..ad352e3 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/evaluation/expr.d.ts @@ -0,0 +1,10 @@ +import { Options } from "../../../core"; +import { Any, Callback } from "../../../types"; +/** + * Allows the use of aggregation expressions within the query language. + * + * @param selector + * @param rhs + * @returns {Function} + */ +export declare function $expr(_: string, rhs: Any, options: Options): Callback; diff --git a/node_modules/mingo/dist/types/operators/query/evaluation/index.d.ts b/node_modules/mingo/dist/types/operators/query/evaluation/index.d.ts new file mode 100644 index 0000000..b19104a --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/evaluation/index.d.ts @@ -0,0 +1,5 @@ +export * from "./expr"; +export * from "./jsonSchema"; +export * from "./mod"; +export * from "./regex"; +export * from "./where"; diff --git a/node_modules/mingo/dist/types/operators/query/evaluation/jsonSchema.d.ts b/node_modules/mingo/dist/types/operators/query/evaluation/jsonSchema.d.ts new file mode 100644 index 0000000..b498691 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/evaluation/jsonSchema.d.ts @@ -0,0 +1,10 @@ +import { Options } from "../../../core"; +import { Any, Predicate } from "../../../types"; +/** + * Validate documents against the given JSON Schema. + * + * @param selector + * @param schema + * @returns {Function} + */ +export declare function $jsonSchema(_: string, schema: Any, options: Options): Predicate; diff --git a/node_modules/mingo/dist/types/operators/query/evaluation/mod.d.ts b/node_modules/mingo/dist/types/operators/query/evaluation/mod.d.ts new file mode 100644 index 0000000..cd84f85 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/evaluation/mod.d.ts @@ -0,0 +1,4 @@ +/** + * Performs a modulo operation on the value of a field and selects documents with a specified result. + */ +export declare const $mod: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/evaluation/regex.d.ts b/node_modules/mingo/dist/types/operators/query/evaluation/regex.d.ts new file mode 100644 index 0000000..30c48f5 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/evaluation/regex.d.ts @@ -0,0 +1,4 @@ +/** + * Selects documents where values match a specified regular expression. + */ +export declare const $regex: import("../../../core").QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/evaluation/where.d.ts b/node_modules/mingo/dist/types/operators/query/evaluation/where.d.ts new file mode 100644 index 0000000..0012d38 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/evaluation/where.d.ts @@ -0,0 +1,10 @@ +import { Options } from "../../../core"; +import { Any, Callback } from "../../../types"; +/** + * Matches documents that satisfy a JavaScript expression. + * + * @param selector + * @param rhs + * @returns {Function} + */ +export declare function $where(_: string, rhs: Any, options: Options): Callback; diff --git a/node_modules/mingo/dist/types/operators/query/index.d.ts b/node_modules/mingo/dist/types/operators/query/index.d.ts new file mode 100644 index 0000000..65095f5 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/index.d.ts @@ -0,0 +1,6 @@ +export * from "./array"; +export * from "./bitwise"; +export * from "./comparison"; +export * from "./element"; +export * from "./evaluation"; +export * from "./logical"; diff --git a/node_modules/mingo/dist/types/operators/query/logical/and.d.ts b/node_modules/mingo/dist/types/operators/query/logical/and.d.ts new file mode 100644 index 0000000..90ed30f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/logical/and.d.ts @@ -0,0 +1,9 @@ +import { QueryOperator } from "../../../core"; +/** + * Joins query clauses with a logical AND returns all documents that match the conditions of both clauses. + * + * @param selector + * @param rhs + * @returns {Function} + */ +export declare const $and: QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/logical/index.d.ts b/node_modules/mingo/dist/types/operators/query/logical/index.d.ts new file mode 100644 index 0000000..7ee5e8a --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/logical/index.d.ts @@ -0,0 +1,4 @@ +export * from "./and"; +export * from "./nor"; +export * from "./not"; +export * from "./or"; diff --git a/node_modules/mingo/dist/types/operators/query/logical/nor.d.ts b/node_modules/mingo/dist/types/operators/query/logical/nor.d.ts new file mode 100644 index 0000000..1fb75bf --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/logical/nor.d.ts @@ -0,0 +1,9 @@ +import { QueryOperator } from "../../../core"; +/** + * Joins query clauses with a logical NOR returns all documents that fail to match both clauses. + * + * @param selector + * @param rhs + * @returns {Function} + */ +export declare const $nor: QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/logical/not.d.ts b/node_modules/mingo/dist/types/operators/query/logical/not.d.ts new file mode 100644 index 0000000..89b69e1 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/logical/not.d.ts @@ -0,0 +1,9 @@ +import { QueryOperator } from "../../../core"; +/** + * Inverts the effect of a query expression and returns documents that do not match the query expression. + * + * @param selector + * @param rhs + * @returns {Function} + */ +export declare const $not: QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/query/logical/or.d.ts b/node_modules/mingo/dist/types/operators/query/logical/or.d.ts new file mode 100644 index 0000000..1b8a47c --- /dev/null +++ b/node_modules/mingo/dist/types/operators/query/logical/or.d.ts @@ -0,0 +1,9 @@ +import { QueryOperator } from "../../../core"; +/** + * Joins query clauses with a logical OR returns all documents that match the conditions of either clause. + * + * @param selector + * @param rhs + * @returns {Function} + */ +export declare const $or: QueryOperator; diff --git a/node_modules/mingo/dist/types/operators/update/_internal.d.ts b/node_modules/mingo/dist/types/operators/update/_internal.d.ts new file mode 100644 index 0000000..1b4854f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/_internal.d.ts @@ -0,0 +1,38 @@ +import { CloneMode, UpdateOptions } from "../../core"; +import { Query } from "../../query"; +import { Any, AnyObject, ArrayOrObject, Callback } from "../../types"; +import { WalkOptions } from "../../util"; +export declare const UPDATE_OPTIONS: UpdateOptions; +export declare const clone: (mode: CloneMode, val: Any) => Any; +export type PathNode = { + selector: string; + parent: string; + child?: string; + next?: PathNode; +}; +/** + * Tokenize a selector path to extract parts for the root, arrayFilter, and child + * @param selector The path to tokenize + * @returns {parent:string, elem:string, child:string} + */ +export declare function tokenizePath(selector: string): [PathNode, string[]]; +/** + * Applies an update function to a value to produce a new value to modify an object in-place. + * @param o The object or array to modify. + * @param n The path node of the update selector. + * @param q Map of positional identifiers to queries for filtering. + * @param f The update function which accepts containver value and key. + * @param opts The optional {@link WalkOptions} passed to the walk function. + */ +export declare const applyUpdate: (o: ArrayOrObject, n: PathNode, q: Record, f: Callback, opts?: WalkOptions) => boolean; +export type Action = (val: T, pathNode: PathNode, queries: Record) => boolean; +/** + * Walks the expression and apply the given action for each key-value pair. + * + * @param expr The expression for the update operator. + * @param arrayFilter Filter conditions passed to the operator. + * @param options The options provided by the caller. + * @param callback The action to apply for a given path and value. + * @returns {Any[]} + */ +export declare function walkExpression(expr: AnyObject, arrayFilter: AnyObject[], options: UpdateOptions, callback: Action): string[]; diff --git a/node_modules/mingo/dist/types/operators/update/addToSet.d.ts b/node_modules/mingo/dist/types/operators/update/addToSet.d.ts new file mode 100644 index 0000000..588baf9 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/addToSet.d.ts @@ -0,0 +1,4 @@ +import { UpdateOptions } from "../../core"; +import { AnyObject } from "../../types"; +/** Adds a value to an array unless the value is already present. */ +export declare const $addToSet: (obj: AnyObject, expr: AnyObject, arrayFilters?: AnyObject[], options?: UpdateOptions) => string[]; diff --git a/node_modules/mingo/dist/types/operators/update/bit.d.ts b/node_modules/mingo/dist/types/operators/update/bit.d.ts new file mode 100644 index 0000000..1a41903 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/bit.d.ts @@ -0,0 +1,4 @@ +import { UpdateOptions } from "../../core"; +import { AnyObject } from "../../types"; +/** Performs a bitwise update of a field. The operator supports AND, OR, and XOR.*/ +export declare const $bit: (obj: AnyObject, expr: AnyObject, arrayFilters?: AnyObject[], options?: UpdateOptions) => string[]; diff --git a/node_modules/mingo/dist/types/operators/update/currentDate.d.ts b/node_modules/mingo/dist/types/operators/update/currentDate.d.ts new file mode 100644 index 0000000..f1f7c52 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/currentDate.d.ts @@ -0,0 +1,4 @@ +import { UpdateOptions } from "../../core"; +import { AnyObject } from "../../types"; +/** Sets the value of a field to the current date. */ +export declare const $currentDate: (obj: AnyObject, expr: Record, arrayFilters?: AnyObject[], options?: UpdateOptions) => string[]; diff --git a/node_modules/mingo/dist/types/operators/update/inc.d.ts b/node_modules/mingo/dist/types/operators/update/inc.d.ts new file mode 100644 index 0000000..c0107d5 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/inc.d.ts @@ -0,0 +1,4 @@ +import { UpdateOptions } from "../../core"; +import { AnyObject } from "../../types"; +/** Increments a field by a specified value. */ +export declare const $inc: (obj: AnyObject, expr: Record, arrayFilters?: AnyObject[], options?: UpdateOptions) => string[]; diff --git a/node_modules/mingo/dist/types/operators/update/index.d.ts b/node_modules/mingo/dist/types/operators/update/index.d.ts new file mode 100644 index 0000000..29717dc --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/index.d.ts @@ -0,0 +1,14 @@ +export * from "./addToSet"; +export * from "./bit"; +export * from "./currentDate"; +export * from "./inc"; +export * from "./max"; +export * from "./min"; +export * from "./mul"; +export * from "./pop"; +export * from "./pull"; +export * from "./pullAll"; +export * from "./push"; +export * from "./rename"; +export * from "./set"; +export * from "./unset"; diff --git a/node_modules/mingo/dist/types/operators/update/max.d.ts b/node_modules/mingo/dist/types/operators/update/max.d.ts new file mode 100644 index 0000000..826e920 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/max.d.ts @@ -0,0 +1,4 @@ +import { UpdateOptions } from "../../core"; +import { AnyObject } from "../../types"; +/** Updates the value of the field to a specified value if the specified value is greater than the current value of the field. */ +export declare const $max: (obj: AnyObject, expr: AnyObject, arrayFilters?: AnyObject[], options?: UpdateOptions) => string[]; diff --git a/node_modules/mingo/dist/types/operators/update/min.d.ts b/node_modules/mingo/dist/types/operators/update/min.d.ts new file mode 100644 index 0000000..9a841e7 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/min.d.ts @@ -0,0 +1,4 @@ +import { UpdateOptions } from "../../core"; +import { AnyObject } from "../../types"; +/** Updates the value of the field to a specified value if the specified value is less than the current value of the field. */ +export declare const $min: (obj: AnyObject, expr: AnyObject, arrayFilters?: AnyObject[], options?: UpdateOptions) => string[]; diff --git a/node_modules/mingo/dist/types/operators/update/mul.d.ts b/node_modules/mingo/dist/types/operators/update/mul.d.ts new file mode 100644 index 0000000..e338e20 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/mul.d.ts @@ -0,0 +1,4 @@ +import { UpdateOptions } from "../../core"; +import { AnyObject } from "../../types"; +/** Multiply the value of a field by a number. */ +export declare const $mul: (obj: AnyObject, expr: Record, arrayFilters?: AnyObject[], options?: UpdateOptions) => string[]; diff --git a/node_modules/mingo/dist/types/operators/update/pop.d.ts b/node_modules/mingo/dist/types/operators/update/pop.d.ts new file mode 100644 index 0000000..e423106 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/pop.d.ts @@ -0,0 +1,4 @@ +import { UpdateOptions } from "../../core"; +import { AnyObject } from "../../types"; +/** Removes the first or last element of an array. */ +export declare const $pop: (obj: AnyObject, expr: Record, arrayFilters?: AnyObject[], options?: UpdateOptions) => string[]; diff --git a/node_modules/mingo/dist/types/operators/update/pull.d.ts b/node_modules/mingo/dist/types/operators/update/pull.d.ts new file mode 100644 index 0000000..329779a --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/pull.d.ts @@ -0,0 +1,4 @@ +import { UpdateOptions } from "../../core"; +import { AnyObject } from "../../types"; +/** Removes from an existing array all instances of a value or values that match a specified condition. */ +export declare const $pull: (obj: AnyObject, expr: AnyObject, arrayFilters?: AnyObject[], options?: UpdateOptions) => string[]; diff --git a/node_modules/mingo/dist/types/operators/update/pullAll.d.ts b/node_modules/mingo/dist/types/operators/update/pullAll.d.ts new file mode 100644 index 0000000..8dde2b2 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/pullAll.d.ts @@ -0,0 +1,4 @@ +import { UpdateOptions } from "../../core"; +import { Any, AnyObject } from "../../types"; +/** Removes all instances of the specified values from an existing array. */ +export declare const $pullAll: (obj: AnyObject, expr: Record, arrayFilters?: AnyObject[], options?: UpdateOptions) => string[]; diff --git a/node_modules/mingo/dist/types/operators/update/push.d.ts b/node_modules/mingo/dist/types/operators/update/push.d.ts new file mode 100644 index 0000000..000730c --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/push.d.ts @@ -0,0 +1,4 @@ +import { UpdateOptions } from "../../core"; +import { AnyObject } from "../../types"; +/** Appends a specified value to an array. */ +export declare const $push: (obj: AnyObject, expr: AnyObject, arrayFilters?: AnyObject[], options?: UpdateOptions) => string[]; diff --git a/node_modules/mingo/dist/types/operators/update/rename.d.ts b/node_modules/mingo/dist/types/operators/update/rename.d.ts new file mode 100644 index 0000000..d270a6f --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/rename.d.ts @@ -0,0 +1,4 @@ +import { UpdateOptions } from "../../core"; +import { AnyObject } from "../../types"; +/** Replaces the value of a field with the specified value. */ +export declare const $rename: (obj: AnyObject, expr: Record, arrayFilters?: AnyObject[], options?: UpdateOptions) => string[]; diff --git a/node_modules/mingo/dist/types/operators/update/set.d.ts b/node_modules/mingo/dist/types/operators/update/set.d.ts new file mode 100644 index 0000000..ad9061e --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/set.d.ts @@ -0,0 +1,4 @@ +import { UpdateOptions } from "../../core"; +import { Any, AnyObject } from "../../types"; +/** Replaces the value of a field with the specified value. */ +export declare const $set: (obj: AnyObject, expr: Record, arrayFilters?: AnyObject[], options?: UpdateOptions) => string[]; diff --git a/node_modules/mingo/dist/types/operators/update/unset.d.ts b/node_modules/mingo/dist/types/operators/update/unset.d.ts new file mode 100644 index 0000000..494b1a7 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/update/unset.d.ts @@ -0,0 +1,4 @@ +import { UpdateOptions } from "../../core"; +import { AnyObject } from "../../types"; +/** Deletes a particular field */ +export declare const $unset: (obj: AnyObject, expr: Record, arrayFilters?: AnyObject[], options?: UpdateOptions) => string[]; diff --git a/node_modules/mingo/dist/types/operators/window/_internal.d.ts b/node_modules/mingo/dist/types/operators/window/_internal.d.ts new file mode 100644 index 0000000..629d22e --- /dev/null +++ b/node_modules/mingo/dist/types/operators/window/_internal.d.ts @@ -0,0 +1,11 @@ +import { Options } from "../../core"; +import { Any, AnyObject, Callback, TimeUnit, WindowOperatorInput } from "../../types"; +export type WindowTimeUnit = Exclude; +export declare const MILLIS_PER_UNIT: Record; +/** + * Caches all computed values in a window sequence for reuse. + * This is only useful for operations with unbounded documents. + */ +export declare function withMemo(collection: AnyObject[], expr: WindowOperatorInput, cacheFn: Callback, fn: Callback): R; +/** Returns the position of a document in the $setWindowFields stage partition. */ +export declare function rank(_: AnyObject, collection: AnyObject[], expr: WindowOperatorInput, options: Options, dense: boolean): Any; diff --git a/node_modules/mingo/dist/types/operators/window/denseRank.d.ts b/node_modules/mingo/dist/types/operators/window/denseRank.d.ts new file mode 100644 index 0000000..fc0d3c9 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/window/denseRank.d.ts @@ -0,0 +1,3 @@ +import { WindowOperator } from "../../core"; +/** Returns the document position relative to other documents in the $setWindowFields stage partition. */ +export declare const $denseRank: WindowOperator; diff --git a/node_modules/mingo/dist/types/operators/window/derivative.d.ts b/node_modules/mingo/dist/types/operators/window/derivative.d.ts new file mode 100644 index 0000000..0b3f2dc --- /dev/null +++ b/node_modules/mingo/dist/types/operators/window/derivative.d.ts @@ -0,0 +1,5 @@ +import { WindowOperator } from "../../core"; +/** + * Returns the average rate of change within the specified window + */ +export declare const $derivative: WindowOperator; diff --git a/node_modules/mingo/dist/types/operators/window/documentNumber.d.ts b/node_modules/mingo/dist/types/operators/window/documentNumber.d.ts new file mode 100644 index 0000000..cb66a8e --- /dev/null +++ b/node_modules/mingo/dist/types/operators/window/documentNumber.d.ts @@ -0,0 +1,4 @@ +import { Options } from "../../core"; +import { Any, AnyObject, WindowOperatorInput } from "../../types"; +/** Returns the position of a document in the $setWindowFields stage partition. */ +export declare const $documentNumber: (_obj: AnyObject, _collection: AnyObject[], expr: WindowOperatorInput, _options: Options) => Any; diff --git a/node_modules/mingo/dist/types/operators/window/expMovingAvg.d.ts b/node_modules/mingo/dist/types/operators/window/expMovingAvg.d.ts new file mode 100644 index 0000000..bce8b89 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/window/expMovingAvg.d.ts @@ -0,0 +1,7 @@ +import { Options } from "../../core"; +import { Any, AnyObject, WindowOperatorInput } from "../../types"; +/** + * Returns the exponential moving average of numeric expressions applied to documents + * in a partition defined in the $setWindowFields stage. + */ +export declare const $expMovingAvg: (_: AnyObject, collection: AnyObject[], expr: WindowOperatorInput, options: Options) => Any; diff --git a/node_modules/mingo/dist/types/operators/window/index.d.ts b/node_modules/mingo/dist/types/operators/window/index.d.ts new file mode 100644 index 0000000..62dd3dd --- /dev/null +++ b/node_modules/mingo/dist/types/operators/window/index.d.ts @@ -0,0 +1,9 @@ +export * from "./denseRank"; +export * from "./derivative"; +export * from "./documentNumber"; +export * from "./expMovingAvg"; +export * from "./integral"; +export * from "./linearFill"; +export * from "./locf"; +export * from "./rank"; +export * from "./shift"; diff --git a/node_modules/mingo/dist/types/operators/window/integral.d.ts b/node_modules/mingo/dist/types/operators/window/integral.d.ts new file mode 100644 index 0000000..565c472 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/window/integral.d.ts @@ -0,0 +1,6 @@ +import { Options } from "../../core"; +import { Any, AnyObject, WindowOperatorInput } from "../../types"; +/** + * Returns the approximation of the area under a curve. + */ +export declare const $integral: (_: AnyObject, collection: AnyObject[], expr: WindowOperatorInput, options: Options) => Any; diff --git a/node_modules/mingo/dist/types/operators/window/linearFill.d.ts b/node_modules/mingo/dist/types/operators/window/linearFill.d.ts new file mode 100644 index 0000000..1ea7573 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/window/linearFill.d.ts @@ -0,0 +1,6 @@ +import { Options } from "../../core"; +import { Any, AnyObject, WindowOperatorInput } from "../../types"; +/** + * Fills null and missing fields in a window using linear interpolation based on surrounding field values. + */ +export declare const $linearFill: (_: AnyObject, collection: AnyObject[], expr: WindowOperatorInput, options: Options) => Any; diff --git a/node_modules/mingo/dist/types/operators/window/locf.d.ts b/node_modules/mingo/dist/types/operators/window/locf.d.ts new file mode 100644 index 0000000..8458d65 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/window/locf.d.ts @@ -0,0 +1,6 @@ +import { Options } from "../../core"; +import { Any, AnyObject, WindowOperatorInput } from "../../types"; +/** + * Last observation carried forward. Sets values for null and missing fields in a window to the last non-null value for the field. + */ +export declare const $locf: (_: AnyObject, collection: AnyObject[], expr: WindowOperatorInput, options: Options) => Any; diff --git a/node_modules/mingo/dist/types/operators/window/rank.d.ts b/node_modules/mingo/dist/types/operators/window/rank.d.ts new file mode 100644 index 0000000..d811210 --- /dev/null +++ b/node_modules/mingo/dist/types/operators/window/rank.d.ts @@ -0,0 +1,4 @@ +import { Options } from "../../core"; +import { Any, AnyObject, WindowOperatorInput } from "../../types"; +/** Returns the position of a document in the $setWindowFields stage partition. */ +export declare const $rank: (obj: AnyObject, collection: AnyObject[], expr: WindowOperatorInput, options: Options) => Any; diff --git a/node_modules/mingo/dist/types/operators/window/shift.d.ts b/node_modules/mingo/dist/types/operators/window/shift.d.ts new file mode 100644 index 0000000..902d10c --- /dev/null +++ b/node_modules/mingo/dist/types/operators/window/shift.d.ts @@ -0,0 +1,7 @@ +import { Options } from "../../core"; +import { Any, AnyObject, WindowOperatorInput } from "../../types"; +/** + * Returns the value from an expression applied to a document in a specified + * position relative to the current document in the $setWindowFields stage partition. + */ +export declare const $shift: (obj: AnyObject, collection: AnyObject[], expr: WindowOperatorInput, options: Options) => Any; diff --git a/node_modules/mingo/dist/types/query.d.ts b/node_modules/mingo/dist/types/query.d.ts new file mode 100644 index 0000000..dd15054 --- /dev/null +++ b/node_modules/mingo/dist/types/query.d.ts @@ -0,0 +1,39 @@ +import { Options } from "./core"; +import { Cursor } from "./cursor"; +import { Source } from "./lazy"; +import { AnyObject } from "./types"; +/** + * An object used to filter input documents + * + * @param {AnyObject} condition The condition for constructing predicates + * @param {Options} options Options for use by operators + * @constructor + */ +export declare class Query { + #private; + constructor(condition: AnyObject, options?: Partial); + private compile; + private processOperator; + /** + * Checks if the object passes the query criteria. Returns true if so, false otherwise. + * + * @param obj The object to test + * @returns {boolean} + */ + test(obj: T): boolean; + /** + * Returns a cursor to select matching documents from the input source. + * + * @param source A source providing a sequence of documents + * @param projection An optional projection criteria + * @returns {Cursor} A Cursor for iterating over the results + */ + find(collection: Source, projection?: AnyObject): Cursor; + /** + * Remove matched documents from the collection returning the remainder + * + * @param collection An array of documents + * @returns {Array} A new array with matching elements removed + */ + remove(collection: T[]): T[]; +} diff --git a/node_modules/mingo/dist/types/types.d.ts b/node_modules/mingo/dist/types/types.d.ts new file mode 100644 index 0000000..e3c6b79 --- /dev/null +++ b/node_modules/mingo/dist/types/types.d.ts @@ -0,0 +1,49 @@ +export type Any = unknown; +export type AnyObject = Record; +export type ArrayOrObject = AnyObject | Any[]; +/** @deprecated use {@link Any}. */ +export type AnyVal = Any; +/** @deprecated use {@link AnyObject}. */ +export type RawObject = AnyObject; +/** @deprecated use {@link Array}. */ +export type RawArray = Array; +export interface Callback { + (...args: T[]): R; +} +export interface Predicate { + (...args: T[]): boolean; +} +export interface Comparator { + (left: T, right: T): number; +} +/** + * Custom function to hash values to improve faster comparaisons + */ +export type HashFunction = (x: Any) => number; +type CommonTypes = "null" | "undefined" | "string" | "date" | "array" | "object"; +export type JsType = CommonTypes | "boolean" | "number" | "string" | "regexp" | "function"; +export type BsonType = CommonTypes | "bool" | "int" | "long" | "double" | "decimal" | "regex"; +export declare const TIME_UNITS: readonly ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"]; +/** Time unit for datetime periods */ +export type TimeUnit = (typeof TIME_UNITS)[number]; +export type Boundary = "current" | "unbounded" | number; +export interface WindowOutputOption { + readonly documents?: [Boundary, Boundary]; + readonly range?: [Boundary, Boundary]; + readonly unit?: TimeUnit; +} +export interface SetWindowFieldsInput { + readonly partitionBy?: Any; + readonly sortBy: Record; + readonly output: Record; +} +export interface WindowOperatorInput { + readonly parentExpr: SetWindowFieldsInput; + readonly inputExpr: Any; + readonly documentNumber: number; + readonly field: string; +} +export {}; diff --git a/node_modules/mingo/dist/types/updater.d.ts b/node_modules/mingo/dist/types/updater.d.ts new file mode 100644 index 0000000..264dcb3 --- /dev/null +++ b/node_modules/mingo/dist/types/updater.d.ts @@ -0,0 +1,38 @@ +import { UpdateOptions } from "./core"; +import * as UPDATE_OPERATORS from "./operators/update"; +import { AnyObject } from "./types"; +/** Define maps to enforce a single key from a union. */ +type OneKey = { + [P in K]: { + [Q in P]: V; + } & { + [Q in Exclude]?: never; + } extends infer O ? { + [Q in keyof O]: O[Q]; + } : never; +}[K]; +export type UpdateExpression = OneKey; +/** A function to process an update expression and modify the object. */ +export type Updater = (obj: AnyObject, expr: UpdateExpression, arrayFilters?: AnyObject[], condition?: AnyObject, options?: UpdateOptions) => string[]; +/** + * Creates a new updater function with default options. + * @param defaultOptions The default options. Defaults to no cloning with strict mode off for queries. + * @returns {Updater} + */ +export declare function createUpdater(defaultOptions?: UpdateOptions): Updater; +/** + * Updates the given object with the expression. + * + * @param obj The object to update. + * @param expr The update expressions. + * @param arrayFilters Filters to apply to nested items. + * @param conditions Conditions to validate before performing update. + * @param options Update options to override defaults. + * @returns {string[]} A list of modified field paths in the object. + */ +export declare const update: Updater; +/** + * @deprecated Use {@link update}. + */ +export declare const updateObject: Updater; +export {}; diff --git a/node_modules/mingo/dist/types/util.d.ts b/node_modules/mingo/dist/types/util.d.ts new file mode 100644 index 0000000..85e3420 --- /dev/null +++ b/node_modules/mingo/dist/types/util.d.ts @@ -0,0 +1,240 @@ +/** + * Utility constants and functions + */ +import { Any, ArrayOrObject, Callback, Comparator, HashFunction } from "./types"; +/** Represents an error reported by the mingo library. */ +export declare class MingoError extends Error { +} +/** + * Compare function which adheres to MongoDB comparison order. + * + * @param a The first value + * @param b The second value + * @returns {Number} + */ +export declare const compare: (a: T, b: T) => number; +/** + * A map implementation that uses value comparison for keys instead of referential identity. + * + * IMPORTANT! we assume objects are never modified once the hash is computed and put in the Map. + * Modifying an object after adding to the Map will cause incorrect behaviour. + */ +export declare class ValueMap extends Map { + #private; + private constructor(); + /** + * Returns a new {@link ValueMap} object. + * @param fn An optional custom hash function + */ + static init(fn?: HashFunction): ValueMap; + clear(): void; + /** + * @returns true if an element in the Map existed and has been removed, or false if the element does not exist. + */ + delete(key: K): boolean; + /** + * Returns a specified element from the Map object. If the value that is associated to the provided key is an object, then you will get a reference to that object and any change made to that object will effectively modify it inside the Map. + * @returns Returns the element associated with the specified key. If no element is associated with the specified key, undefined is returned. + */ + get(key: K): V | undefined; + /** + * @returns boolean indicating whether an element with the specified key exists or not. + */ + has(key: K): boolean; + /** + * Adds a new element with a specified key and value to the Map. If an element with the same key already exists, the element will be updated. + */ + set(key: K, value: V): this; + /** + * @returns the number of elements in the Map. + */ + get size(): number; +} +export declare function assert(condition: boolean, message: string): void; +/** + * Returns the name of type in lowercase including custom types. + * @param v Any value + */ +export declare function typeOf(v: Any): string; +export declare const isBoolean: (v: Any) => v is boolean; +export declare const isString: (v: Any) => v is string; +export declare const isSymbol: (v: Any) => boolean; +export declare const isNumber: (v: Any) => v is number; +export declare const isNotNaN: (v: Any) => boolean; +export declare const isArray: (arg: any) => arg is any[]; +export declare function isObject(v: Any): v is object; +export declare const isObjectLike: (v: Any) => boolean; +export declare const isDate: (v: Any) => v is Date; +export declare const isRegExp: (v: Any) => v is RegExp; +export declare const isFunction: (v: Any) => boolean; +export declare const isNil: (v: Any) => boolean; +export declare const truthy: (arg: Any, strict?: boolean) => boolean; +export declare const isEmpty: (x: Any) => boolean; +/** ensure a value is an array or wrapped within one. */ +export declare const ensureArray: (x: T | T[]) => T[]; +export declare const has: (obj: object, prop: string) => boolean; +/** + * Deep clone an object. + */ +export declare const cloneDeep: (v: T, refs?: Set) => T; +/** + * Deep merge objects or arrays. When the inputs have unmergeable types, the right hand value is returned. + * If inputs are arrays, elements in the same position are merged together. + * Remaining elements are appended to the target object. + * + * @param target Target object to merge into. + * @param input Source object to merge from. + * @private + */ +export declare function merge(target: Any, input: Any): Any; +/** + * Returns the intersection of multiple arrays. + * + * @param {Array} input An array of arrays from which to find intersection. + * @param {Function} hashFunction Custom function to hash values, default the hashCode method + * @return {Array} Array of intersecting values. + */ +export declare function intersection(input: Any[][], hashFunction?: HashFunction): Any[]; +/** + * Flatten the array + * + * @param xs The array to flatten + * @param depth The number of nested lists to iterate. @default 1 + */ +export declare function flatten(xs: Any[], depth?: number): Any[]; +/** + * Determine whether two values are the same or strictly equivalent. + * Checking whether values are the same only applies to built in objects. + * For user-defined objects this checks for only referential equality so + * two different instances with the same values are not equal. + * + * @param a The first value + * @param b The second value + * @return True if values are equivalent, false otherwise. + */ +export declare function isEqual(a: Any, b: Any): boolean; +/** + * Return a new unique version of the collection + * @param {Array} input The input collection + * @return {Array} + */ +export declare function unique(input: Any[], hashFunction?: HashFunction): Any[]; +/** + * Encode value to string using a simple non-colliding stable scheme. + * Handles user-defined types by processing keys on first non-empty prototype. + * If a user-defined type provides a "toString" function, it is used. + * + * @param value The value to convert to a string representation. + * @returns {string} + */ +export declare const stringify: (v: Any, refs?: Set) => string; +/** + * Generate hash code. + * This selected function is the result of benchmarking various hash functions. + * This version performs well and can hash 10^6 documents in ~3s with on average 100 collisions. + * + * @param value + * @returns {number|null} + */ +export declare function hashCode(value: Any, hashFunction?: HashFunction): number; +/** + * Groups the collection into sets by the returned key + * + * @param collection + * @param keyFn {Function} to compute the group key of an item in the collection + * @returns {Map} + */ +export declare function groupBy(collection: Any[], keyFn: Callback, hashFunction?: HashFunction): Map; +/** + * Merge elements into the dest + * + * @param {*} target The target object + * @param {*} rest The array of elements to merge into dest + * @private + */ +export declare function into(target: ArrayOrObject, ...rest: ArrayOrObject[]): ArrayOrObject; +/** Options to resolve() and resolveGraph() functions */ +interface ResolveOptions { + /** Unwrap the final array value. */ + unwrapArray?: boolean; + /** Replace "undefined" values with special MISSING symbol value. */ + preserveMissing?: boolean; + /** Preserve values for untouched keys of objects. */ + preserveKeys?: boolean; + /** Preserve untouched indexes in arrays. */ + preserveIndex?: boolean; +} +/** + * Resolve the value of the field (dot separated) on the given object + * @param obj {AnyObject} the object context + * @param selector {String} dot separated path to field + * @returns {*} + */ +export declare function resolve(obj: ArrayOrObject, selector: string, options?: Pick): Any; +/** + * Returns the full object to the resolved value given by the selector. + * + * @param obj {AnyObject} the object context + * @param selector {String} dot separated path to field + */ +export declare function resolveGraph(obj: ArrayOrObject, selector: string, options?: ResolveOptions): ArrayOrObject | undefined; +/** + * Filter out all MISSING values from the object in-place + * + * @param obj The object to filter + * @private + */ +export declare function filterMissing(obj: ArrayOrObject): void; +/** Options passed to the walk function. */ +export interface WalkOptions { + buildGraph?: boolean; + descendArray?: boolean; +} +/** + * Walk the object graph and execute the given transform function + * + * @param {AnyObject|Array} obj The object to traverse. + * @param {String} selector The selector to navigate. + * @param {Callback} fn Callback to execute for value at the end the traversal. + * @param {WalkOptions} options The opetions to use for the function. + * @return {*} + */ +export declare function walk(obj: ArrayOrObject, selector: string, fn: Callback, options?: WalkOptions): void; +/** + * Set the value of the given object field + * + * @param obj {AnyObject|Array} the object context + * @param selector {String} path to field + * @param value {*} the value to set. if it is function, it is invoked with the old value and must return the new value. + */ +export declare function setValue(obj: ArrayOrObject, selector: string, value: Any): void; +/** + * Removes an element from the container. + * If the selector resolves to an array and the leaf is a non-numeric key, + * the remove operation will be performed on objects of the array. + * + * @param obj {ArrayOrObject} object or array + * @param selector {String} dot separated path to element to remove + */ +export declare function removeValue(obj: ArrayOrObject, selector: string, options?: Pick): void; +/** + * Check whether the given name passes for an operator. We assume AnyVal field name starting with '$' is an operator. + * This is cheap and safe to do since keys beginning with '$' should be reserved for internal use. + * @param {String} name + */ +export declare function isOperator(name: string): boolean; +/** + * Simplify expression for easy evaluation with query operators map + * @param expr + * @returns {*} + */ +export declare function normalize(expr: Any): Any; +/** + * Find the insert index for the given key in a sorted array. + * + * @param sorted The sorted array to search + * @param item The search key + * @param comparator Optional custom compare function + */ +export declare function findInsertIndex(sorted: Any[], item: Any, comparator?: Comparator): number; +export {}; diff --git a/node_modules/mingo/init/basic/package.json b/node_modules/mingo/init/basic/package.json new file mode 100644 index 0000000..08cbfcd --- /dev/null +++ b/node_modules/mingo/init/basic/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../dist/cjs/init/basic.js", + "module": "../../dist/esm/init/basic.js", + "types": "../../dist/types/init/basic.d.ts", + "sideEffects": true +} \ No newline at end of file diff --git a/node_modules/mingo/init/system/package.json b/node_modules/mingo/init/system/package.json new file mode 100644 index 0000000..835a080 --- /dev/null +++ b/node_modules/mingo/init/system/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../dist/cjs/init/system.js", + "module": "../../dist/esm/init/system.js", + "types": "../../dist/types/init/system.d.ts", + "sideEffects": true +} \ No newline at end of file diff --git a/node_modules/mingo/lazy/package.json b/node_modules/mingo/lazy/package.json new file mode 100644 index 0000000..b296d43 --- /dev/null +++ b/node_modules/mingo/lazy/package.json @@ -0,0 +1,6 @@ +{ + "main": "../dist/cjs/lazy.js", + "module": "../dist/esm/lazy.js", + "types": "../dist/types/lazy.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/accumulator/package.json b/node_modules/mingo/operators/accumulator/package.json new file mode 100644 index 0000000..e7b3ddb --- /dev/null +++ b/node_modules/mingo/operators/accumulator/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../dist/cjs/operators/accumulator/index.js", + "module": "../../dist/esm/operators/accumulator/index.js", + "types": "../../dist/types/operators/accumulator/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/arithmetic/package.json b/node_modules/mingo/operators/expression/arithmetic/package.json new file mode 100644 index 0000000..a47d554 --- /dev/null +++ b/node_modules/mingo/operators/expression/arithmetic/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/arithmetic/index.js", + "module": "../../../dist/esm/operators/expression/arithmetic/index.js", + "types": "../../../dist/types/operators/expression/arithmetic/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/array/package.json b/node_modules/mingo/operators/expression/array/package.json new file mode 100644 index 0000000..110679c --- /dev/null +++ b/node_modules/mingo/operators/expression/array/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/array/index.js", + "module": "../../../dist/esm/operators/expression/array/index.js", + "types": "../../../dist/types/operators/expression/array/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/bitwise/package.json b/node_modules/mingo/operators/expression/bitwise/package.json new file mode 100644 index 0000000..bc75ff9 --- /dev/null +++ b/node_modules/mingo/operators/expression/bitwise/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/bitwise/index.js", + "module": "../../../dist/esm/operators/expression/bitwise/index.js", + "types": "../../../dist/types/operators/expression/bitwise/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/boolean/package.json b/node_modules/mingo/operators/expression/boolean/package.json new file mode 100644 index 0000000..0ec790b --- /dev/null +++ b/node_modules/mingo/operators/expression/boolean/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/boolean/index.js", + "module": "../../../dist/esm/operators/expression/boolean/index.js", + "types": "../../../dist/types/operators/expression/boolean/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/comparison/package.json b/node_modules/mingo/operators/expression/comparison/package.json new file mode 100644 index 0000000..4904bc2 --- /dev/null +++ b/node_modules/mingo/operators/expression/comparison/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/comparison/index.js", + "module": "../../../dist/esm/operators/expression/comparison/index.js", + "types": "../../../dist/types/operators/expression/comparison/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/conditional/package.json b/node_modules/mingo/operators/expression/conditional/package.json new file mode 100644 index 0000000..ac0ff8e --- /dev/null +++ b/node_modules/mingo/operators/expression/conditional/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/conditional/index.js", + "module": "../../../dist/esm/operators/expression/conditional/index.js", + "types": "../../../dist/types/operators/expression/conditional/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/custom/package.json b/node_modules/mingo/operators/expression/custom/package.json new file mode 100644 index 0000000..6020a37 --- /dev/null +++ b/node_modules/mingo/operators/expression/custom/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/custom/index.js", + "module": "../../../dist/esm/operators/expression/custom/index.js", + "types": "../../../dist/types/operators/expression/custom/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/date/package.json b/node_modules/mingo/operators/expression/date/package.json new file mode 100644 index 0000000..91a7806 --- /dev/null +++ b/node_modules/mingo/operators/expression/date/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/date/index.js", + "module": "../../../dist/esm/operators/expression/date/index.js", + "types": "../../../dist/types/operators/expression/date/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/misc/package.json b/node_modules/mingo/operators/expression/misc/package.json new file mode 100644 index 0000000..80787ac --- /dev/null +++ b/node_modules/mingo/operators/expression/misc/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/misc/index.js", + "module": "../../../dist/esm/operators/expression/misc/index.js", + "types": "../../../dist/types/operators/expression/misc/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/object/package.json b/node_modules/mingo/operators/expression/object/package.json new file mode 100644 index 0000000..18bd298 --- /dev/null +++ b/node_modules/mingo/operators/expression/object/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/object/index.js", + "module": "../../../dist/esm/operators/expression/object/index.js", + "types": "../../../dist/types/operators/expression/object/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/package.json b/node_modules/mingo/operators/expression/package.json new file mode 100644 index 0000000..159d1b4 --- /dev/null +++ b/node_modules/mingo/operators/expression/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../dist/cjs/operators/expression/index.js", + "module": "../../dist/esm/operators/expression/index.js", + "types": "../../dist/types/operators/expression/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/set/package.json b/node_modules/mingo/operators/expression/set/package.json new file mode 100644 index 0000000..f2d48ff --- /dev/null +++ b/node_modules/mingo/operators/expression/set/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/set/index.js", + "module": "../../../dist/esm/operators/expression/set/index.js", + "types": "../../../dist/types/operators/expression/set/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/string/package.json b/node_modules/mingo/operators/expression/string/package.json new file mode 100644 index 0000000..596dc2f --- /dev/null +++ b/node_modules/mingo/operators/expression/string/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/string/index.js", + "module": "../../../dist/esm/operators/expression/string/index.js", + "types": "../../../dist/types/operators/expression/string/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/trignometry/package.json b/node_modules/mingo/operators/expression/trignometry/package.json new file mode 100644 index 0000000..9c495f0 --- /dev/null +++ b/node_modules/mingo/operators/expression/trignometry/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/trignometry/index.js", + "module": "../../../dist/esm/operators/expression/trignometry/index.js", + "types": "../../../dist/types/operators/expression/trignometry/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/type/package.json b/node_modules/mingo/operators/expression/type/package.json new file mode 100644 index 0000000..2921008 --- /dev/null +++ b/node_modules/mingo/operators/expression/type/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/type/index.js", + "module": "../../../dist/esm/operators/expression/type/index.js", + "types": "../../../dist/types/operators/expression/type/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/expression/variable/package.json b/node_modules/mingo/operators/expression/variable/package.json new file mode 100644 index 0000000..32ac312 --- /dev/null +++ b/node_modules/mingo/operators/expression/variable/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/expression/variable/index.js", + "module": "../../../dist/esm/operators/expression/variable/index.js", + "types": "../../../dist/types/operators/expression/variable/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/pipeline/package.json b/node_modules/mingo/operators/pipeline/package.json new file mode 100644 index 0000000..b3c16a2 --- /dev/null +++ b/node_modules/mingo/operators/pipeline/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../dist/cjs/operators/pipeline/index.js", + "module": "../../dist/esm/operators/pipeline/index.js", + "types": "../../dist/types/operators/pipeline/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/projection/package.json b/node_modules/mingo/operators/projection/package.json new file mode 100644 index 0000000..3448a34 --- /dev/null +++ b/node_modules/mingo/operators/projection/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../dist/cjs/operators/projection/index.js", + "module": "../../dist/esm/operators/projection/index.js", + "types": "../../dist/types/operators/projection/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/query/array/package.json b/node_modules/mingo/operators/query/array/package.json new file mode 100644 index 0000000..538631b --- /dev/null +++ b/node_modules/mingo/operators/query/array/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/query/array/index.js", + "module": "../../../dist/esm/operators/query/array/index.js", + "types": "../../../dist/types/operators/query/array/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/query/bitwise/package.json b/node_modules/mingo/operators/query/bitwise/package.json new file mode 100644 index 0000000..ab96905 --- /dev/null +++ b/node_modules/mingo/operators/query/bitwise/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/query/bitwise/index.js", + "module": "../../../dist/esm/operators/query/bitwise/index.js", + "types": "../../../dist/types/operators/query/bitwise/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/query/comparison/package.json b/node_modules/mingo/operators/query/comparison/package.json new file mode 100644 index 0000000..faa4578 --- /dev/null +++ b/node_modules/mingo/operators/query/comparison/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/query/comparison/index.js", + "module": "../../../dist/esm/operators/query/comparison/index.js", + "types": "../../../dist/types/operators/query/comparison/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/query/element/package.json b/node_modules/mingo/operators/query/element/package.json new file mode 100644 index 0000000..a653c32 --- /dev/null +++ b/node_modules/mingo/operators/query/element/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/query/element/index.js", + "module": "../../../dist/esm/operators/query/element/index.js", + "types": "../../../dist/types/operators/query/element/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/query/evaluation/package.json b/node_modules/mingo/operators/query/evaluation/package.json new file mode 100644 index 0000000..2894078 --- /dev/null +++ b/node_modules/mingo/operators/query/evaluation/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/query/evaluation/index.js", + "module": "../../../dist/esm/operators/query/evaluation/index.js", + "types": "../../../dist/types/operators/query/evaluation/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/query/logical/package.json b/node_modules/mingo/operators/query/logical/package.json new file mode 100644 index 0000000..18bfa8d --- /dev/null +++ b/node_modules/mingo/operators/query/logical/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../../dist/cjs/operators/query/logical/index.js", + "module": "../../../dist/esm/operators/query/logical/index.js", + "types": "../../../dist/types/operators/query/logical/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/query/package.json b/node_modules/mingo/operators/query/package.json new file mode 100644 index 0000000..716469e --- /dev/null +++ b/node_modules/mingo/operators/query/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../dist/cjs/operators/query/index.js", + "module": "../../dist/esm/operators/query/index.js", + "types": "../../dist/types/operators/query/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/update/package.json b/node_modules/mingo/operators/update/package.json new file mode 100644 index 0000000..65c08b4 --- /dev/null +++ b/node_modules/mingo/operators/update/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../dist/cjs/operators/update/index.js", + "module": "../../dist/esm/operators/update/index.js", + "types": "../../dist/types/operators/update/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/operators/window/package.json b/node_modules/mingo/operators/window/package.json new file mode 100644 index 0000000..0349a43 --- /dev/null +++ b/node_modules/mingo/operators/window/package.json @@ -0,0 +1,6 @@ +{ + "main": "../../dist/cjs/operators/window/index.js", + "module": "../../dist/esm/operators/window/index.js", + "types": "../../dist/types/operators/window/index.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/package.json b/node_modules/mingo/package.json new file mode 100644 index 0000000..f4f1e29 --- /dev/null +++ b/node_modules/mingo/package.json @@ -0,0 +1,283 @@ +{ + "name": "mingo", + "version": "6.5.6", + "description": "MongoDB query language for in-memory objects", + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", + "types": "./dist/types/index.d.ts", + "scripts": {}, + "repository": { + "type": "git", + "url": "https://github.com/kofrasa/mingo.git" + }, + "files": [ + "**/*.js", + "**/*.ts", + "**/*.json", + "LICENSE", + "README.md" + ], + "devDependencies": {}, + "keywords": [ + "util", + "mongo", + "nosql", + "query", + "aggregate", + "filter", + "group", + "project", + "search", + "transform", + "update", + "modify" + ], + "author": { + "name": "Francis Asante", + "email": "kofrasa@gmail.com" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/kofrasa/mingo/issues" + }, + "lint-staged": { + "*.ts": "eslint --cache --fix" + }, + "exports": { + "./package.json": "./package.json", + "./util": { + "types": "./dist/types/util.d.ts", + "node": "./dist/cjs/util.js", + "require": "./dist/cjs/util.js", + "default": "./dist/esm/util.js" + }, + "./updater": { + "types": "./dist/types/updater.d.ts", + "node": "./dist/cjs/updater.js", + "require": "./dist/cjs/updater.js", + "default": "./dist/esm/updater.js" + }, + "./types": { + "types": "./dist/types/types.d.ts", + "node": "./dist/cjs/types.js", + "require": "./dist/cjs/types.js", + "default": "./dist/esm/types.js" + }, + "./query": { + "types": "./dist/types/query.d.ts", + "node": "./dist/cjs/query.js", + "require": "./dist/cjs/query.js", + "default": "./dist/esm/query.js" + }, + "./lazy": { + "types": "./dist/types/lazy.d.ts", + "node": "./dist/cjs/lazy.js", + "require": "./dist/cjs/lazy.js", + "default": "./dist/esm/lazy.js" + }, + ".": { + "types": "./dist/types/index.d.ts", + "node": "./dist/cjs/index.js", + "require": "./dist/cjs/index.js", + "default": "./dist/esm/index.js" + }, + "./cursor": { + "types": "./dist/types/cursor.d.ts", + "node": "./dist/cjs/cursor.js", + "require": "./dist/cjs/cursor.js", + "default": "./dist/esm/cursor.js" + }, + "./core": { + "types": "./dist/types/core.d.ts", + "node": "./dist/cjs/core.js", + "require": "./dist/cjs/core.js", + "default": "./dist/esm/core.js" + }, + "./aggregator": { + "types": "./dist/types/aggregator.d.ts", + "node": "./dist/cjs/aggregator.js", + "require": "./dist/cjs/aggregator.js", + "default": "./dist/esm/aggregator.js" + }, + "./operators/window": { + "types": "./dist/types/operators/window/index.d.ts", + "node": "./dist/cjs/operators/window/index.js", + "require": "./dist/cjs/operators/window/index.js", + "default": "./dist/esm/operators/window/index.js" + }, + "./operators/update": { + "types": "./dist/types/operators/update/index.d.ts", + "node": "./dist/cjs/operators/update/index.js", + "require": "./dist/cjs/operators/update/index.js", + "default": "./dist/esm/operators/update/index.js" + }, + "./operators/query": { + "types": "./dist/types/operators/query/index.d.ts", + "node": "./dist/cjs/operators/query/index.js", + "require": "./dist/cjs/operators/query/index.js", + "default": "./dist/esm/operators/query/index.js" + }, + "./operators/query/logical": { + "types": "./dist/types/operators/query/logical/index.d.ts", + "node": "./dist/cjs/operators/query/logical/index.js", + "require": "./dist/cjs/operators/query/logical/index.js", + "default": "./dist/esm/operators/query/logical/index.js" + }, + "./operators/query/evaluation": { + "types": "./dist/types/operators/query/evaluation/index.d.ts", + "node": "./dist/cjs/operators/query/evaluation/index.js", + "require": "./dist/cjs/operators/query/evaluation/index.js", + "default": "./dist/esm/operators/query/evaluation/index.js" + }, + "./operators/query/element": { + "types": "./dist/types/operators/query/element/index.d.ts", + "node": "./dist/cjs/operators/query/element/index.js", + "require": "./dist/cjs/operators/query/element/index.js", + "default": "./dist/esm/operators/query/element/index.js" + }, + "./operators/query/comparison": { + "types": "./dist/types/operators/query/comparison/index.d.ts", + "node": "./dist/cjs/operators/query/comparison/index.js", + "require": "./dist/cjs/operators/query/comparison/index.js", + "default": "./dist/esm/operators/query/comparison/index.js" + }, + "./operators/query/bitwise": { + "types": "./dist/types/operators/query/bitwise/index.d.ts", + "node": "./dist/cjs/operators/query/bitwise/index.js", + "require": "./dist/cjs/operators/query/bitwise/index.js", + "default": "./dist/esm/operators/query/bitwise/index.js" + }, + "./operators/query/array": { + "types": "./dist/types/operators/query/array/index.d.ts", + "node": "./dist/cjs/operators/query/array/index.js", + "require": "./dist/cjs/operators/query/array/index.js", + "default": "./dist/esm/operators/query/array/index.js" + }, + "./operators/projection": { + "types": "./dist/types/operators/projection/index.d.ts", + "node": "./dist/cjs/operators/projection/index.js", + "require": "./dist/cjs/operators/projection/index.js", + "default": "./dist/esm/operators/projection/index.js" + }, + "./operators/pipeline": { + "types": "./dist/types/operators/pipeline/index.d.ts", + "node": "./dist/cjs/operators/pipeline/index.js", + "require": "./dist/cjs/operators/pipeline/index.js", + "default": "./dist/esm/operators/pipeline/index.js" + }, + "./operators/expression": { + "types": "./dist/types/operators/expression/index.d.ts", + "node": "./dist/cjs/operators/expression/index.js", + "require": "./dist/cjs/operators/expression/index.js", + "default": "./dist/esm/operators/expression/index.js" + }, + "./operators/expression/variable": { + "types": "./dist/types/operators/expression/variable/index.d.ts", + "node": "./dist/cjs/operators/expression/variable/index.js", + "require": "./dist/cjs/operators/expression/variable/index.js", + "default": "./dist/esm/operators/expression/variable/index.js" + }, + "./operators/expression/type": { + "types": "./dist/types/operators/expression/type/index.d.ts", + "node": "./dist/cjs/operators/expression/type/index.js", + "require": "./dist/cjs/operators/expression/type/index.js", + "default": "./dist/esm/operators/expression/type/index.js" + }, + "./operators/expression/trignometry": { + "types": "./dist/types/operators/expression/trignometry/index.d.ts", + "node": "./dist/cjs/operators/expression/trignometry/index.js", + "require": "./dist/cjs/operators/expression/trignometry/index.js", + "default": "./dist/esm/operators/expression/trignometry/index.js" + }, + "./operators/expression/string": { + "types": "./dist/types/operators/expression/string/index.d.ts", + "node": "./dist/cjs/operators/expression/string/index.js", + "require": "./dist/cjs/operators/expression/string/index.js", + "default": "./dist/esm/operators/expression/string/index.js" + }, + "./operators/expression/set": { + "types": "./dist/types/operators/expression/set/index.d.ts", + "node": "./dist/cjs/operators/expression/set/index.js", + "require": "./dist/cjs/operators/expression/set/index.js", + "default": "./dist/esm/operators/expression/set/index.js" + }, + "./operators/expression/object": { + "types": "./dist/types/operators/expression/object/index.d.ts", + "node": "./dist/cjs/operators/expression/object/index.js", + "require": "./dist/cjs/operators/expression/object/index.js", + "default": "./dist/esm/operators/expression/object/index.js" + }, + "./operators/expression/misc": { + "types": "./dist/types/operators/expression/misc/index.d.ts", + "node": "./dist/cjs/operators/expression/misc/index.js", + "require": "./dist/cjs/operators/expression/misc/index.js", + "default": "./dist/esm/operators/expression/misc/index.js" + }, + "./operators/expression/date": { + "types": "./dist/types/operators/expression/date/index.d.ts", + "node": "./dist/cjs/operators/expression/date/index.js", + "require": "./dist/cjs/operators/expression/date/index.js", + "default": "./dist/esm/operators/expression/date/index.js" + }, + "./operators/expression/custom": { + "types": "./dist/types/operators/expression/custom/index.d.ts", + "node": "./dist/cjs/operators/expression/custom/index.js", + "require": "./dist/cjs/operators/expression/custom/index.js", + "default": "./dist/esm/operators/expression/custom/index.js" + }, + "./operators/expression/conditional": { + "types": "./dist/types/operators/expression/conditional/index.d.ts", + "node": "./dist/cjs/operators/expression/conditional/index.js", + "require": "./dist/cjs/operators/expression/conditional/index.js", + "default": "./dist/esm/operators/expression/conditional/index.js" + }, + "./operators/expression/comparison": { + "types": "./dist/types/operators/expression/comparison/index.d.ts", + "node": "./dist/cjs/operators/expression/comparison/index.js", + "require": "./dist/cjs/operators/expression/comparison/index.js", + "default": "./dist/esm/operators/expression/comparison/index.js" + }, + "./operators/expression/boolean": { + "types": "./dist/types/operators/expression/boolean/index.d.ts", + "node": "./dist/cjs/operators/expression/boolean/index.js", + "require": "./dist/cjs/operators/expression/boolean/index.js", + "default": "./dist/esm/operators/expression/boolean/index.js" + }, + "./operators/expression/bitwise": { + "types": "./dist/types/operators/expression/bitwise/index.d.ts", + "node": "./dist/cjs/operators/expression/bitwise/index.js", + "require": "./dist/cjs/operators/expression/bitwise/index.js", + "default": "./dist/esm/operators/expression/bitwise/index.js" + }, + "./operators/expression/array": { + "types": "./dist/types/operators/expression/array/index.d.ts", + "node": "./dist/cjs/operators/expression/array/index.js", + "require": "./dist/cjs/operators/expression/array/index.js", + "default": "./dist/esm/operators/expression/array/index.js" + }, + "./operators/expression/arithmetic": { + "types": "./dist/types/operators/expression/arithmetic/index.d.ts", + "node": "./dist/cjs/operators/expression/arithmetic/index.js", + "require": "./dist/cjs/operators/expression/arithmetic/index.js", + "default": "./dist/esm/operators/expression/arithmetic/index.js" + }, + "./operators/accumulator": { + "types": "./dist/types/operators/accumulator/index.d.ts", + "node": "./dist/cjs/operators/accumulator/index.js", + "require": "./dist/cjs/operators/accumulator/index.js", + "default": "./dist/esm/operators/accumulator/index.js" + }, + "./init/system": { + "types": "./dist/types/init/system.d.ts", + "node": "./dist/cjs/init/system.js", + "require": "./dist/cjs/init/system.js", + "default": "./dist/esm/init/system.js" + }, + "./init/basic": { + "types": "./dist/types/init/basic.d.ts", + "node": "./dist/cjs/init/basic.js", + "require": "./dist/cjs/init/basic.js", + "default": "./dist/esm/init/basic.js" + } + } +} \ No newline at end of file diff --git a/node_modules/mingo/query/package.json b/node_modules/mingo/query/package.json new file mode 100644 index 0000000..9520a5c --- /dev/null +++ b/node_modules/mingo/query/package.json @@ -0,0 +1,6 @@ +{ + "main": "../dist/cjs/query.js", + "module": "../dist/esm/query.js", + "types": "../dist/types/query.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/types/package.json b/node_modules/mingo/types/package.json new file mode 100644 index 0000000..dd78208 --- /dev/null +++ b/node_modules/mingo/types/package.json @@ -0,0 +1,6 @@ +{ + "main": "../dist/cjs/types.js", + "module": "../dist/esm/types.js", + "types": "../dist/types/types.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/updater/package.json b/node_modules/mingo/updater/package.json new file mode 100644 index 0000000..e5b604a --- /dev/null +++ b/node_modules/mingo/updater/package.json @@ -0,0 +1,6 @@ +{ + "main": "../dist/cjs/updater.js", + "module": "../dist/esm/updater.js", + "types": "../dist/types/updater.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/mingo/util/package.json b/node_modules/mingo/util/package.json new file mode 100644 index 0000000..4db216c --- /dev/null +++ b/node_modules/mingo/util/package.json @@ -0,0 +1,6 @@ +{ + "main": "../dist/cjs/util.js", + "module": "../dist/esm/util.js", + "types": "../dist/types/util.d.ts", + "sideEffects": false +} \ No newline at end of file diff --git a/node_modules/minimist/.eslintrc b/node_modules/minimist/.eslintrc new file mode 100644 index 0000000..bd1a5e0 --- /dev/null +++ b/node_modules/minimist/.eslintrc @@ -0,0 +1,29 @@ +{ + "root": true, + + "extends": "@ljharb/eslint-config/node/0.4", + + "rules": { + "array-element-newline": 0, + "complexity": 0, + "func-style": [2, "declaration"], + "max-lines-per-function": 0, + "max-nested-callbacks": 1, + "max-statements-per-line": 1, + "max-statements": 0, + "multiline-comment-style": 0, + "no-continue": 1, + "no-param-reassign": 1, + "no-restricted-syntax": 1, + "object-curly-newline": 0, + }, + + "overrides": [ + { + "files": "test/**", + "rules": { + "camelcase": 0, + }, + }, + ] +} diff --git a/node_modules/minimist/.github/FUNDING.yml b/node_modules/minimist/.github/FUNDING.yml new file mode 100644 index 0000000..a936622 --- /dev/null +++ b/node_modules/minimist/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/minimist +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/minimist/.nycrc b/node_modules/minimist/.nycrc new file mode 100644 index 0000000..55c3d29 --- /dev/null +++ b/node_modules/minimist/.nycrc @@ -0,0 +1,14 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "example", + "test" + ] +} diff --git a/node_modules/minimist/CHANGELOG.md b/node_modules/minimist/CHANGELOG.md new file mode 100644 index 0000000..c9a1e15 --- /dev/null +++ b/node_modules/minimist/CHANGELOG.md @@ -0,0 +1,298 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.2.8](https://github.com/minimistjs/minimist/compare/v1.2.7...v1.2.8) - 2023-02-09 + +### Merged + +- [Fix] Fix long option followed by single dash [`#17`](https://github.com/minimistjs/minimist/pull/17) +- [Tests] Remove duplicate test [`#12`](https://github.com/minimistjs/minimist/pull/12) +- [Fix] opt.string works with multiple aliases [`#10`](https://github.com/minimistjs/minimist/pull/10) + +### Fixed + +- [Fix] Fix long option followed by single dash (#17) [`#15`](https://github.com/minimistjs/minimist/issues/15) +- [Tests] Remove duplicate test (#12) [`#8`](https://github.com/minimistjs/minimist/issues/8) +- [Fix] Fix long option followed by single dash [`#15`](https://github.com/minimistjs/minimist/issues/15) +- [Fix] opt.string works with multiple aliases (#10) [`#9`](https://github.com/minimistjs/minimist/issues/9) +- [Fix] Fix handling of short option with non-trivial equals [`#5`](https://github.com/minimistjs/minimist/issues/5) +- [Tests] Remove duplicate test [`#8`](https://github.com/minimistjs/minimist/issues/8) +- [Fix] opt.string works with multiple aliases [`#9`](https://github.com/minimistjs/minimist/issues/9) + +### Commits + +- Merge tag 'v0.2.3' [`a026794`](https://github.com/minimistjs/minimist/commit/a0267947c7870fc5847cf2d437fbe33f392767da) +- [eslint] fix indentation and whitespace [`5368ca4`](https://github.com/minimistjs/minimist/commit/5368ca4147e974138a54cc0dc4cea8f756546b70) +- [eslint] fix indentation and whitespace [`e5f5067`](https://github.com/minimistjs/minimist/commit/e5f5067259ceeaf0b098d14bec910f87e58708c7) +- [eslint] more cleanup [`62fde7d`](https://github.com/minimistjs/minimist/commit/62fde7d935f83417fb046741531a9e2346a36976) +- [eslint] more cleanup [`36ac5d0`](https://github.com/minimistjs/minimist/commit/36ac5d0d95e4947d074e5737d94814034ca335d1) +- [meta] add `auto-changelog` [`73923d2`](https://github.com/minimistjs/minimist/commit/73923d223553fca08b1ba77e3fbc2a492862ae4c) +- [actions] add reusable workflows [`d80727d`](https://github.com/minimistjs/minimist/commit/d80727df77bfa9e631044d7f16368d8f09242c91) +- [eslint] add eslint; rules to enable later are warnings [`48bc06a`](https://github.com/minimistjs/minimist/commit/48bc06a1b41f00e9cdf183db34f7a51ba70e98d4) +- [eslint] fix indentation [`34b0f1c`](https://github.com/minimistjs/minimist/commit/34b0f1ccaa45183c3c4f06a91f9b405180a6f982) +- [readme] rename and add badges [`5df0fe4`](https://github.com/minimistjs/minimist/commit/5df0fe49211bd09a3636f8686a7cb3012c3e98f0) +- [Dev Deps] switch from `covert` to `nyc` [`a48b128`](https://github.com/minimistjs/minimist/commit/a48b128fdb8d427dfb20a15273f83e38d97bef07) +- [Dev Deps] update `covert`, `tape`; remove unnecessary `tap` [`f0fb958`](https://github.com/minimistjs/minimist/commit/f0fb958e9a1fe980cdffc436a211b0bda58f621b) +- [meta] create FUNDING.yml; add `funding` in package.json [`3639e0c`](https://github.com/minimistjs/minimist/commit/3639e0c819359a366387e425ab6eabf4c78d3caa) +- [meta] use `npmignore` to autogenerate an npmignore file [`be2e038`](https://github.com/minimistjs/minimist/commit/be2e038c342d8333b32f0fde67a0026b79c8150e) +- Only apps should have lockfiles [`282b570`](https://github.com/minimistjs/minimist/commit/282b570e7489d01b03f2d6d3dabf79cd3e5f84cf) +- isConstructorOrProto adapted from PR [`ef9153f`](https://github.com/minimistjs/minimist/commit/ef9153fc52b6cea0744b2239921c5dcae4697f11) +- [Dev Deps] update `@ljharb/eslint-config`, `aud` [`098873c`](https://github.com/minimistjs/minimist/commit/098873c213cdb7c92e55ae1ef5aa1af3a8192a79) +- [Dev Deps] update `@ljharb/eslint-config`, `aud` [`3124ed3`](https://github.com/minimistjs/minimist/commit/3124ed3e46306301ebb3c834874ce0241555c2c4) +- [meta] add `safe-publish-latest` [`4b927de`](https://github.com/minimistjs/minimist/commit/4b927de696d561c636b4f43bf49d4597cb36d6d6) +- [Tests] add `aud` in `posttest` [`b32d9bd`](https://github.com/minimistjs/minimist/commit/b32d9bd0ab340f4e9f8c3a97ff2a4424f25fab8c) +- [meta] update repo URLs [`f9fdfc0`](https://github.com/minimistjs/minimist/commit/f9fdfc032c54884d9a9996a390c63cd0719bbe1a) +- [actions] Avoid 0.6 tests due to build failures [`ba92fe6`](https://github.com/minimistjs/minimist/commit/ba92fe6ebbdc0431cca9a2ea8f27beb492f5e4ec) +- [Dev Deps] update `tape` [`950eaa7`](https://github.com/minimistjs/minimist/commit/950eaa74f112e04d23e9c606c67472c46739b473) +- [Dev Deps] add missing `npmignore` dev dep [`3226afa`](https://github.com/minimistjs/minimist/commit/3226afaf09e9d127ca369742437fe6e88f752d6b) +- Merge tag 'v0.2.2' [`980d7ac`](https://github.com/minimistjs/minimist/commit/980d7ac61a0b4bd552711251ac107d506b23e41f) + +## [v1.2.7](https://github.com/minimistjs/minimist/compare/v1.2.6...v1.2.7) - 2022-10-10 + +### Commits + +- [meta] add `auto-changelog` [`0ebf4eb`](https://github.com/minimistjs/minimist/commit/0ebf4ebcd5f7787a5524d31a849ef41316b83c3c) +- [actions] add reusable workflows [`e115b63`](https://github.com/minimistjs/minimist/commit/e115b63fa9d3909f33b00a2db647ff79068388de) +- [eslint] add eslint; rules to enable later are warnings [`f58745b`](https://github.com/minimistjs/minimist/commit/f58745b9bb84348e1be72af7dbba5840c7c13013) +- [Dev Deps] switch from `covert` to `nyc` [`ab03356`](https://github.com/minimistjs/minimist/commit/ab033567b9c8b31117cb026dc7f1e592ce455c65) +- [readme] rename and add badges [`236f4a0`](https://github.com/minimistjs/minimist/commit/236f4a07e4ebe5ee44f1496ec6974991ab293ffd) +- [meta] create FUNDING.yml; add `funding` in package.json [`783a49b`](https://github.com/minimistjs/minimist/commit/783a49bfd47e8335d3098a8cac75662cf71eb32a) +- [meta] use `npmignore` to autogenerate an npmignore file [`f81ece6`](https://github.com/minimistjs/minimist/commit/f81ece6aaec2fa14e69ff4f1e0407a8c4e2635a2) +- Only apps should have lockfiles [`56cad44`](https://github.com/minimistjs/minimist/commit/56cad44c7f879b9bb5ec18fcc349308024a89bfc) +- [Dev Deps] update `covert`, `tape`; remove unnecessary `tap` [`49c5f9f`](https://github.com/minimistjs/minimist/commit/49c5f9fb7e6a92db9eb340cc679de92fb3aacded) +- [Tests] add `aud` in `posttest` [`228ae93`](https://github.com/minimistjs/minimist/commit/228ae938f3cd9db9dfd8bd7458b076a7b2aef280) +- [meta] add `safe-publish-latest` [`01fc23f`](https://github.com/minimistjs/minimist/commit/01fc23f5104f85c75059972e01dd33796ab529ff) +- [meta] update repo URLs [`6b164c7`](https://github.com/minimistjs/minimist/commit/6b164c7d68e0b6bf32f894699effdfb7c63041dd) + +## [v1.2.6](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.6) - 2022-03-21 + +### Commits + +- test from prototype pollution PR [`bc8ecee`](https://github.com/minimistjs/minimist/commit/bc8ecee43875261f4f17eb20b1243d3ed15e70eb) +- isConstructorOrProto adapted from PR [`c2b9819`](https://github.com/minimistjs/minimist/commit/c2b981977fa834b223b408cfb860f933c9811e4d) +- security notice for additional prototype pollution issue [`ef88b93`](https://github.com/minimistjs/minimist/commit/ef88b9325f77b5ee643ccfc97e2ebda577e4c4e2) + +## [v1.2.5](https://github.com/minimistjs/minimist/compare/v1.2.4...v1.2.5) - 2020-03-12 + +## [v1.2.4](https://github.com/minimistjs/minimist/compare/v1.2.3...v1.2.4) - 2020-03-11 + +### Commits + +- security notice [`4cf1354`](https://github.com/minimistjs/minimist/commit/4cf1354839cb972e38496d35e12f806eea92c11f) +- additional test for constructor prototype pollution [`1043d21`](https://github.com/minimistjs/minimist/commit/1043d212c3caaf871966e710f52cfdf02f9eea4b) + +## [v1.2.3](https://github.com/minimistjs/minimist/compare/v1.2.2...v1.2.3) - 2020-03-10 + +### Commits + +- more failing proto pollution tests [`13c01a5`](https://github.com/minimistjs/minimist/commit/13c01a5327736903704984b7f65616b8476850cc) +- even more aggressive checks for protocol pollution [`38a4d1c`](https://github.com/minimistjs/minimist/commit/38a4d1caead72ef99e824bb420a2528eec03d9ab) + +## [v1.2.2](https://github.com/minimistjs/minimist/compare/v1.2.1...v1.2.2) - 2020-03-10 + +### Commits + +- failing test for protocol pollution [`0efed03`](https://github.com/minimistjs/minimist/commit/0efed0340ec8433638758f7ca0c77cb20a0bfbab) +- cleanup [`67d3722`](https://github.com/minimistjs/minimist/commit/67d3722413448d00a62963d2d30c34656a92d7e2) +- console.dir -> console.log [`47acf72`](https://github.com/minimistjs/minimist/commit/47acf72c715a630bf9ea013867f47f1dd69dfc54) +- don't assign onto __proto__ [`63e7ed0`](https://github.com/minimistjs/minimist/commit/63e7ed05aa4b1889ec2f3b196426db4500cbda94) + +## [v1.2.1](https://github.com/minimistjs/minimist/compare/v1.2.0...v1.2.1) - 2020-03-10 + +### Merged + +- move the `opts['--']` example back where it belongs [`#63`](https://github.com/minimistjs/minimist/pull/63) + +### Commits + +- add test [`6be5dae`](https://github.com/minimistjs/minimist/commit/6be5dae35a32a987bcf4137fcd6c19c5200ee909) +- fix bad boolean regexp [`ac3fc79`](https://github.com/minimistjs/minimist/commit/ac3fc796e63b95128fdbdf67ea7fad71bd59aa76) + +## [v1.2.0](https://github.com/minimistjs/minimist/compare/v1.1.3...v1.2.0) - 2015-08-24 + +### Commits + +- failing -k=v short test [`63416b8`](https://github.com/minimistjs/minimist/commit/63416b8cd1d0d70e4714564cce465a36e4dd26d7) +- kv short fix [`6bbe145`](https://github.com/minimistjs/minimist/commit/6bbe14529166245e86424f220a2321442fe88dc3) +- failing kv short test [`f72ab7f`](https://github.com/minimistjs/minimist/commit/f72ab7f4572adc52902c9b6873cc969192f01b10) +- fixed kv test [`f5a48c3`](https://github.com/minimistjs/minimist/commit/f5a48c3e50e40ca54f00c8e84de4b4d6e9897fa8) +- enforce space between arg key and value [`86b321a`](https://github.com/minimistjs/minimist/commit/86b321affe648a8e016c095a4f0efa9d9074f502) + +## [v1.1.3](https://github.com/minimistjs/minimist/compare/v1.1.2...v1.1.3) - 2015-08-06 + +### Commits + +- add failing test - boolean alias array [`0fa3c5b`](https://github.com/minimistjs/minimist/commit/0fa3c5b3dd98551ddecf5392831b4c21211743fc) +- fix boolean values with multiple aliases [`9c0a6e7`](https://github.com/minimistjs/minimist/commit/9c0a6e7de25a273b11bbf9a7464f0bd833779795) + +## [v1.1.2](https://github.com/minimistjs/minimist/compare/v1.1.1...v1.1.2) - 2015-07-22 + +### Commits + +- Convert boolean arguments to boolean values [`8f3dc27`](https://github.com/minimistjs/minimist/commit/8f3dc27cf833f1d54671b6d0bcb55c2fe19672a9) +- use non-ancient npm, node 0.12 and iojs [`61ed1d0`](https://github.com/minimistjs/minimist/commit/61ed1d034b9ec7282764ce76f3992b1a0b4906ae) +- an older npm for 0.8 [`25cf778`](https://github.com/minimistjs/minimist/commit/25cf778b1220e7838a526832ad6972f75244054f) + +## [v1.1.1](https://github.com/minimistjs/minimist/compare/v1.1.0...v1.1.1) - 2015-03-10 + +### Commits + +- check that they type of a value is a boolean, not just that it is currently set to a boolean [`6863198`](https://github.com/minimistjs/minimist/commit/6863198e36139830ff1f20ffdceaddd93f2c1db9) +- upgrade tape, fix type issues from old tape version [`806712d`](https://github.com/minimistjs/minimist/commit/806712df91604ed02b8e39aa372b84aea659ee34) +- test for setting a boolean to a null default [`8c444fe`](https://github.com/minimistjs/minimist/commit/8c444fe89384ded7d441c120915ea60620b01dd3) +- if the previous value was a boolean, without an default (or with an alias) don't make an array either [`e5f419a`](https://github.com/minimistjs/minimist/commit/e5f419a3b5b3bc3f9e5ac71b7040621af70ed2dd) + +## [v1.1.0](https://github.com/minimistjs/minimist/compare/v1.0.0...v1.1.0) - 2014-08-10 + +### Commits + +- add support for handling "unknown" options not registered with the parser. [`6f3cc5d`](https://github.com/minimistjs/minimist/commit/6f3cc5d4e84524932a6ef2ce3592acc67cdd4383) +- reformat package.json [`02ed371`](https://github.com/minimistjs/minimist/commit/02ed37115194d3697ff358e8e25e5e66bab1d9f8) +- coverage script [`e5531ba`](https://github.com/minimistjs/minimist/commit/e5531ba0479da3b8138d3d8cac545d84ccb1c8df) +- extra fn to get 100% coverage again [`a6972da`](https://github.com/minimistjs/minimist/commit/a6972da89e56bf77642f8ec05a13b6558db93498) + +## [v1.0.0](https://github.com/minimistjs/minimist/compare/v0.2.3...v1.0.0) - 2014-08-10 + +### Commits + +- added stopEarly option [`471c7e4`](https://github.com/minimistjs/minimist/commit/471c7e4a7e910fc7ad8f9df850a186daf32c64e9) +- fix list [`fef6ae7`](https://github.com/minimistjs/minimist/commit/fef6ae79c38b9dc1c49569abb7cd04eb965eac5e) + +## [v0.2.3](https://github.com/minimistjs/minimist/compare/v0.2.2...v0.2.3) - 2023-02-09 + +### Merged + +- [Fix] Fix long option followed by single dash [`#17`](https://github.com/minimistjs/minimist/pull/17) +- [Tests] Remove duplicate test [`#12`](https://github.com/minimistjs/minimist/pull/12) +- [Fix] opt.string works with multiple aliases [`#10`](https://github.com/minimistjs/minimist/pull/10) + +### Fixed + +- [Fix] Fix long option followed by single dash (#17) [`#15`](https://github.com/minimistjs/minimist/issues/15) +- [Tests] Remove duplicate test (#12) [`#8`](https://github.com/minimistjs/minimist/issues/8) +- [Fix] opt.string works with multiple aliases (#10) [`#9`](https://github.com/minimistjs/minimist/issues/9) + +### Commits + +- [eslint] fix indentation and whitespace [`e5f5067`](https://github.com/minimistjs/minimist/commit/e5f5067259ceeaf0b098d14bec910f87e58708c7) +- [eslint] more cleanup [`36ac5d0`](https://github.com/minimistjs/minimist/commit/36ac5d0d95e4947d074e5737d94814034ca335d1) +- [eslint] fix indentation [`34b0f1c`](https://github.com/minimistjs/minimist/commit/34b0f1ccaa45183c3c4f06a91f9b405180a6f982) +- isConstructorOrProto adapted from PR [`ef9153f`](https://github.com/minimistjs/minimist/commit/ef9153fc52b6cea0744b2239921c5dcae4697f11) +- [Dev Deps] update `@ljharb/eslint-config`, `aud` [`098873c`](https://github.com/minimistjs/minimist/commit/098873c213cdb7c92e55ae1ef5aa1af3a8192a79) +- [Dev Deps] add missing `npmignore` dev dep [`3226afa`](https://github.com/minimistjs/minimist/commit/3226afaf09e9d127ca369742437fe6e88f752d6b) + +## [v0.2.2](https://github.com/minimistjs/minimist/compare/v0.2.1...v0.2.2) - 2022-10-10 + +### Commits + +- [meta] add `auto-changelog` [`73923d2`](https://github.com/minimistjs/minimist/commit/73923d223553fca08b1ba77e3fbc2a492862ae4c) +- [actions] add reusable workflows [`d80727d`](https://github.com/minimistjs/minimist/commit/d80727df77bfa9e631044d7f16368d8f09242c91) +- [eslint] add eslint; rules to enable later are warnings [`48bc06a`](https://github.com/minimistjs/minimist/commit/48bc06a1b41f00e9cdf183db34f7a51ba70e98d4) +- [readme] rename and add badges [`5df0fe4`](https://github.com/minimistjs/minimist/commit/5df0fe49211bd09a3636f8686a7cb3012c3e98f0) +- [Dev Deps] switch from `covert` to `nyc` [`a48b128`](https://github.com/minimistjs/minimist/commit/a48b128fdb8d427dfb20a15273f83e38d97bef07) +- [Dev Deps] update `covert`, `tape`; remove unnecessary `tap` [`f0fb958`](https://github.com/minimistjs/minimist/commit/f0fb958e9a1fe980cdffc436a211b0bda58f621b) +- [meta] create FUNDING.yml; add `funding` in package.json [`3639e0c`](https://github.com/minimistjs/minimist/commit/3639e0c819359a366387e425ab6eabf4c78d3caa) +- [meta] use `npmignore` to autogenerate an npmignore file [`be2e038`](https://github.com/minimistjs/minimist/commit/be2e038c342d8333b32f0fde67a0026b79c8150e) +- Only apps should have lockfiles [`282b570`](https://github.com/minimistjs/minimist/commit/282b570e7489d01b03f2d6d3dabf79cd3e5f84cf) +- [meta] add `safe-publish-latest` [`4b927de`](https://github.com/minimistjs/minimist/commit/4b927de696d561c636b4f43bf49d4597cb36d6d6) +- [Tests] add `aud` in `posttest` [`b32d9bd`](https://github.com/minimistjs/minimist/commit/b32d9bd0ab340f4e9f8c3a97ff2a4424f25fab8c) +- [meta] update repo URLs [`f9fdfc0`](https://github.com/minimistjs/minimist/commit/f9fdfc032c54884d9a9996a390c63cd0719bbe1a) + +## [v0.2.1](https://github.com/minimistjs/minimist/compare/v0.2.0...v0.2.1) - 2020-03-12 + +## [v0.2.0](https://github.com/minimistjs/minimist/compare/v0.1.0...v0.2.0) - 2014-06-19 + +### Commits + +- support all-boolean mode [`450a97f`](https://github.com/minimistjs/minimist/commit/450a97f6e2bc85c7a4a13185c19a818d9a5ebe69) + +## [v0.1.0](https://github.com/minimistjs/minimist/compare/v0.0.10...v0.1.0) - 2014-05-12 + +### Commits + +- Provide a mechanism to segregate -- arguments [`ce4a1e6`](https://github.com/minimistjs/minimist/commit/ce4a1e63a7e8d5ab88d2a3768adefa6af98a445a) +- documented argv['--'] [`14db0e6`](https://github.com/minimistjs/minimist/commit/14db0e6dbc6d2b9e472adaa54dad7004b364634f) +- Adding a test-case for notFlags segregation [`715c1e3`](https://github.com/minimistjs/minimist/commit/715c1e3714be223f998f6c537af6b505f0236c16) + +## [v0.0.10](https://github.com/minimistjs/minimist/compare/v0.0.9...v0.0.10) - 2014-05-11 + +### Commits + +- dedicated boolean test [`46e448f`](https://github.com/minimistjs/minimist/commit/46e448f9f513cfeb2bcc8b688b9b47ba1e515c2b) +- dedicated num test [`9bf2d36`](https://github.com/minimistjs/minimist/commit/9bf2d36f1d3b8795be90b8f7de0a937f098aa394) +- aliased values treated as strings [`1ab743b`](https://github.com/minimistjs/minimist/commit/1ab743bad4484d69f1259bed42f9531de01119de) +- cover the case of already numbers, at 100% coverage [`b2bb044`](https://github.com/minimistjs/minimist/commit/b2bb04436599d77a2ce029e8e555e25b3aa55d13) +- another test for higher coverage [`3662624`](https://github.com/minimistjs/minimist/commit/3662624be976d5489d486a856849c048d13be903) + +## [v0.0.9](https://github.com/minimistjs/minimist/compare/v0.0.8...v0.0.9) - 2014-05-08 + +### Commits + +- Eliminate `longest` fn. [`824f642`](https://github.com/minimistjs/minimist/commit/824f642038d1b02ede68b6261d1d65163390929a) + +## [v0.0.8](https://github.com/minimistjs/minimist/compare/v0.0.7...v0.0.8) - 2014-02-20 + +### Commits + +- return '' if flag is string and empty [`fa63ed4`](https://github.com/minimistjs/minimist/commit/fa63ed4651a4ef4eefddce34188e0d98d745a263) +- handle joined single letters [`66c248f`](https://github.com/minimistjs/minimist/commit/66c248f0241d4d421d193b022e9e365f11178534) + +## [v0.0.7](https://github.com/minimistjs/minimist/compare/v0.0.6...v0.0.7) - 2014-02-08 + +### Commits + +- another swap of .test for .match [`d1da408`](https://github.com/minimistjs/minimist/commit/d1da40819acbe846d89a5c02721211e3c1260dde) + +## [v0.0.6](https://github.com/minimistjs/minimist/compare/v0.0.5...v0.0.6) - 2014-02-08 + +### Commits + +- use .test() instead of .match() to not crash on non-string values in the arguments array [`7e0d1ad`](https://github.com/minimistjs/minimist/commit/7e0d1add8c9e5b9b20a4d3d0f9a94d824c578da1) + +## [v0.0.5](https://github.com/minimistjs/minimist/compare/v0.0.4...v0.0.5) - 2013-09-18 + +### Commits + +- Improve '--' handling. [`b11822c`](https://github.com/minimistjs/minimist/commit/b11822c09cc9d2460f30384d12afc0b953c037a4) + +## [v0.0.4](https://github.com/minimistjs/minimist/compare/v0.0.3...v0.0.4) - 2013-09-17 + +## [v0.0.3](https://github.com/minimistjs/minimist/compare/v0.0.2...v0.0.3) - 2013-09-12 + +### Commits + +- failing test for single dash preceeding a double dash [`b465514`](https://github.com/minimistjs/minimist/commit/b465514b82c9ae28972d714facd951deb2ad762b) +- fix for the dot test [`6a095f1`](https://github.com/minimistjs/minimist/commit/6a095f1d364c8fab2d6753d2291a0649315d297a) + +## [v0.0.2](https://github.com/minimistjs/minimist/compare/v0.0.1...v0.0.2) - 2013-08-28 + +### Commits + +- allow dotted aliases & defaults [`321c33e`](https://github.com/minimistjs/minimist/commit/321c33e755485faaeb44eeb1c05d33b2e0a5a7c4) +- use a better version of ff [`e40f611`](https://github.com/minimistjs/minimist/commit/e40f61114cf7be6f7947f7b3eed345853a67dbbb) + +## [v0.0.1](https://github.com/minimistjs/minimist/compare/v0.0.0...v0.0.1) - 2013-06-25 + +### Commits + +- remove trailing commas [`6ff0fa0`](https://github.com/minimistjs/minimist/commit/6ff0fa055064f15dbe06d50b89d5173a6796e1db) + +## v0.0.0 - 2013-06-25 + +### Commits + +- half of the parse test ported [`3079326`](https://github.com/minimistjs/minimist/commit/307932601325087de6cf94188eb798ffc4f3088a) +- stripped down code and a passing test from optimist [`7cced88`](https://github.com/minimistjs/minimist/commit/7cced88d82e399d1a03ed23eb667f04d3f320d10) +- ported parse tests completely over [`9448754`](https://github.com/minimistjs/minimist/commit/944875452e0820df6830b1408c26a0f7d3e1db04) +- docs, package.json [`a5bf46a`](https://github.com/minimistjs/minimist/commit/a5bf46ac9bb3bd114a9c340276c62c1091e538d5) +- move more short tests into short.js [`503edb5`](https://github.com/minimistjs/minimist/commit/503edb5c41d89c0d40831ee517154fc13b0f18b9) +- default bool test was wrong, not the code [`1b9f5db`](https://github.com/minimistjs/minimist/commit/1b9f5db4741b49962846081b68518de824992097) +- passing long tests ripped out of parse.js [`7972c4a`](https://github.com/minimistjs/minimist/commit/7972c4aff1f4803079e1668006658e2a761a0428) +- badges [`84c0370`](https://github.com/minimistjs/minimist/commit/84c037063664d42878aace715fe6572ce01b6f3b) +- all the tests now ported, some failures [`64239ed`](https://github.com/minimistjs/minimist/commit/64239edfe92c711c4eb0da254fcdfad2a5fdb605) +- failing short test [`f8a5341`](https://github.com/minimistjs/minimist/commit/f8a534112dd1138d2fad722def56a848480c446f) +- fixed the numeric test [`6b034f3`](https://github.com/minimistjs/minimist/commit/6b034f37c79342c60083ed97fd222e16928aac51) diff --git a/node_modules/minimist/LICENSE b/node_modules/minimist/LICENSE new file mode 100644 index 0000000..ee27ba4 --- /dev/null +++ b/node_modules/minimist/LICENSE @@ -0,0 +1,18 @@ +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/minimist/README.md b/node_modules/minimist/README.md new file mode 100644 index 0000000..74da323 --- /dev/null +++ b/node_modules/minimist/README.md @@ -0,0 +1,121 @@ +# minimist [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +parse argument options + +This module is the guts of optimist's argument parser without all the +fanciful decoration. + +# example + +``` js +var argv = require('minimist')(process.argv.slice(2)); +console.log(argv); +``` + +``` +$ node example/parse.js -a beep -b boop +{ _: [], a: 'beep', b: 'boop' } +``` + +``` +$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz +{ + _: ['foo', 'bar', 'baz'], + x: 3, + y: 4, + n: 5, + a: true, + b: true, + c: true, + beep: 'boop' +} +``` + +# security + +Previous versions had a prototype pollution bug that could cause privilege +escalation in some circumstances when handling untrusted user input. + +Please use version 1.2.6 or later: + +* https://security.snyk.io/vuln/SNYK-JS-MINIMIST-2429795 (version <=1.2.5) +* https://snyk.io/vuln/SNYK-JS-MINIMIST-559764 (version <=1.2.3) + +# methods + +``` js +var parseArgs = require('minimist') +``` + +## var argv = parseArgs(args, opts={}) + +Return an argument object `argv` populated with the array arguments from `args`. + +`argv._` contains all the arguments that didn't have an option associated with +them. + +Numeric-looking arguments will be returned as numbers unless `opts.string` or +`opts.boolean` is set for that argument name. + +Any arguments after `'--'` will not be parsed and will end up in `argv._`. + +options can be: + +* `opts.string` - a string or array of strings argument names to always treat as +strings +* `opts.boolean` - a boolean, string or array of strings to always treat as +booleans. if `true` will treat all double hyphenated arguments without equal signs +as boolean (e.g. affects `--foo`, not `-f` or `--foo=bar`) +* `opts.alias` - an object mapping string names to strings or arrays of string +argument names to use as aliases +* `opts.default` - an object mapping string argument names to default values +* `opts.stopEarly` - when true, populate `argv._` with everything after the +first non-option +* `opts['--']` - when true, populate `argv._` with everything before the `--` +and `argv['--']` with everything after the `--`. Here's an example: + + ``` + > require('./')('one two three -- four five --six'.split(' '), { '--': true }) + { + _: ['one', 'two', 'three'], + '--': ['four', 'five', '--six'] + } + ``` + + Note that with `opts['--']` set, parsing for arguments still stops after the + `--`. + +* `opts.unknown` - a function which is invoked with a command line parameter not +defined in the `opts` configuration object. If the function returns `false`, the +unknown option is not added to `argv`. + +# install + +With [npm](https://npmjs.org) do: + +``` +npm install minimist +``` + +# license + +MIT + +[package-url]: https://npmjs.org/package/minimist +[npm-version-svg]: https://versionbadg.es/minimistjs/minimist.svg +[npm-badge-png]: https://nodei.co/npm/minimist.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/minimist.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/minimist.svg +[downloads-url]: https://npm-stat.com/charts.html?package=minimist +[codecov-image]: https://codecov.io/gh/minimistjs/minimist/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/minimistjs/minimist/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/minimistjs/minimist +[actions-url]: https://github.com/minimistjs/minimist/actions diff --git a/node_modules/minimist/example/parse.js b/node_modules/minimist/example/parse.js new file mode 100644 index 0000000..9d90ffb --- /dev/null +++ b/node_modules/minimist/example/parse.js @@ -0,0 +1,4 @@ +'use strict'; + +var argv = require('../')(process.argv.slice(2)); +console.log(argv); diff --git a/node_modules/minimist/index.js b/node_modules/minimist/index.js new file mode 100644 index 0000000..f020f39 --- /dev/null +++ b/node_modules/minimist/index.js @@ -0,0 +1,263 @@ +'use strict'; + +function hasKey(obj, keys) { + var o = obj; + keys.slice(0, -1).forEach(function (key) { + o = o[key] || {}; + }); + + var key = keys[keys.length - 1]; + return key in o; +} + +function isNumber(x) { + if (typeof x === 'number') { return true; } + if ((/^0x[0-9a-f]+$/i).test(x)) { return true; } + return (/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/).test(x); +} + +function isConstructorOrProto(obj, key) { + return (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__'; +} + +module.exports = function (args, opts) { + if (!opts) { opts = {}; } + + var flags = { + bools: {}, + strings: {}, + unknownFn: null, + }; + + if (typeof opts.unknown === 'function') { + flags.unknownFn = opts.unknown; + } + + if (typeof opts.boolean === 'boolean' && opts.boolean) { + flags.allBools = true; + } else { + [].concat(opts.boolean).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + }); + } + + var aliases = {}; + + function aliasIsBoolean(key) { + return aliases[key].some(function (x) { + return flags.bools[x]; + }); + } + + Object.keys(opts.alias || {}).forEach(function (key) { + aliases[key] = [].concat(opts.alias[key]); + aliases[key].forEach(function (x) { + aliases[x] = [key].concat(aliases[key].filter(function (y) { + return x !== y; + })); + }); + }); + + [].concat(opts.string).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + if (aliases[key]) { + [].concat(aliases[key]).forEach(function (k) { + flags.strings[k] = true; + }); + } + }); + + var defaults = opts.default || {}; + + var argv = { _: [] }; + + function argDefined(key, arg) { + return (flags.allBools && (/^--[^=]+$/).test(arg)) + || flags.strings[key] + || flags.bools[key] + || aliases[key]; + } + + function setKey(obj, keys, value) { + var o = obj; + for (var i = 0; i < keys.length - 1; i++) { + var key = keys[i]; + if (isConstructorOrProto(o, key)) { return; } + if (o[key] === undefined) { o[key] = {}; } + if ( + o[key] === Object.prototype + || o[key] === Number.prototype + || o[key] === String.prototype + ) { + o[key] = {}; + } + if (o[key] === Array.prototype) { o[key] = []; } + o = o[key]; + } + + var lastKey = keys[keys.length - 1]; + if (isConstructorOrProto(o, lastKey)) { return; } + if ( + o === Object.prototype + || o === Number.prototype + || o === String.prototype + ) { + o = {}; + } + if (o === Array.prototype) { o = []; } + if (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') { + o[lastKey] = value; + } else if (Array.isArray(o[lastKey])) { + o[lastKey].push(value); + } else { + o[lastKey] = [o[lastKey], value]; + } + } + + function setArg(key, val, arg) { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg) === false) { return; } + } + + var value = !flags.strings[key] && isNumber(val) + ? Number(val) + : val; + setKey(argv, key.split('.'), value); + + (aliases[key] || []).forEach(function (x) { + setKey(argv, x.split('.'), value); + }); + } + + Object.keys(flags.bools).forEach(function (key) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + }); + + var notFlags = []; + + if (args.indexOf('--') !== -1) { + notFlags = args.slice(args.indexOf('--') + 1); + args = args.slice(0, args.indexOf('--')); + } + + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + var key; + var next; + + if ((/^--.+=/).test(arg)) { + // Using [\s\S] instead of . because js doesn't support the + // 'dotall' regex modifier. See: + // http://stackoverflow.com/a/1068308/13216 + var m = arg.match(/^--([^=]+)=([\s\S]*)$/); + key = m[1]; + var value = m[2]; + if (flags.bools[key]) { + value = value !== 'false'; + } + setArg(key, value, arg); + } else if ((/^--no-.+/).test(arg)) { + key = arg.match(/^--no-(.+)/)[1]; + setArg(key, false, arg); + } else if ((/^--.+/).test(arg)) { + key = arg.match(/^--(.+)/)[1]; + next = args[i + 1]; + if ( + next !== undefined + && !(/^(-|--)[^-]/).test(next) + && !flags.bools[key] + && !flags.allBools + && (aliases[key] ? !aliasIsBoolean(key) : true) + ) { + setArg(key, next, arg); + i += 1; + } else if ((/^(true|false)$/).test(next)) { + setArg(key, next === 'true', arg); + i += 1; + } else { + setArg(key, flags.strings[key] ? '' : true, arg); + } + } else if ((/^-[^-]+/).test(arg)) { + var letters = arg.slice(1, -1).split(''); + + var broken = false; + for (var j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + + if (next === '-') { + setArg(letters[j], next, arg); + continue; + } + + if ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') { + setArg(letters[j], next.slice(1), arg); + broken = true; + break; + } + + if ( + (/[A-Za-z]/).test(letters[j]) + && (/-?\d+(\.\d*)?(e-?\d+)?$/).test(next) + ) { + setArg(letters[j], next, arg); + broken = true; + break; + } + + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], arg.slice(j + 2), arg); + broken = true; + break; + } else { + setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg); + } + } + + key = arg.slice(-1)[0]; + if (!broken && key !== '-') { + if ( + args[i + 1] + && !(/^(-|--)[^-]/).test(args[i + 1]) + && !flags.bools[key] + && (aliases[key] ? !aliasIsBoolean(key) : true) + ) { + setArg(key, args[i + 1], arg); + i += 1; + } else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) { + setArg(key, args[i + 1] === 'true', arg); + i += 1; + } else { + setArg(key, flags.strings[key] ? '' : true, arg); + } + } + } else { + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg)); + } + if (opts.stopEarly) { + argv._.push.apply(argv._, args.slice(i + 1)); + break; + } + } + } + + Object.keys(defaults).forEach(function (k) { + if (!hasKey(argv, k.split('.'))) { + setKey(argv, k.split('.'), defaults[k]); + + (aliases[k] || []).forEach(function (x) { + setKey(argv, x.split('.'), defaults[k]); + }); + } + }); + + if (opts['--']) { + argv['--'] = notFlags.slice(); + } else { + notFlags.forEach(function (k) { + argv._.push(k); + }); + } + + return argv; +}; diff --git a/node_modules/minimist/package.json b/node_modules/minimist/package.json new file mode 100644 index 0000000..c10a334 --- /dev/null +++ b/node_modules/minimist/package.json @@ -0,0 +1,75 @@ +{ + "name": "minimist", + "version": "1.2.8", + "description": "parse argument options", + "main": "index.js", + "devDependencies": { + "@ljharb/eslint-config": "^21.0.1", + "aud": "^2.0.2", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.6.3" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=auto", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "lint": "eslint --ext=js,mjs .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/6..latest", + "ff/5", + "firefox/latest", + "chrome/10", + "chrome/latest", + "safari/5.1", + "safari/latest", + "opera/12" + ] + }, + "repository": { + "type": "git", + "url": "git://github.com/minimistjs/minimist.git" + }, + "homepage": "https://github.com/minimistjs/minimist", + "keywords": [ + "argv", + "getopt", + "parser", + "optimist" + ], + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/node_modules/minimist/test/all_bool.js b/node_modules/minimist/test/all_bool.js new file mode 100644 index 0000000..befa0c9 --- /dev/null +++ b/node_modules/minimist/test/all_bool.js @@ -0,0 +1,34 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('flag boolean true (default all --args to boolean)', function (t) { + var argv = parse(['moo', '--honk', 'cow'], { + boolean: true, + }); + + t.deepEqual(argv, { + honk: true, + _: ['moo', 'cow'], + }); + + t.deepEqual(typeof argv.honk, 'boolean'); + t.end(); +}); + +test('flag boolean true only affects double hyphen arguments without equals signs', function (t) { + var argv = parse(['moo', '--honk', 'cow', '-p', '55', '--tacos=good'], { + boolean: true, + }); + + t.deepEqual(argv, { + honk: true, + tacos: 'good', + p: 55, + _: ['moo', 'cow'], + }); + + t.deepEqual(typeof argv.honk, 'boolean'); + t.end(); +}); diff --git a/node_modules/minimist/test/bool.js b/node_modules/minimist/test/bool.js new file mode 100644 index 0000000..e58d47e --- /dev/null +++ b/node_modules/minimist/test/bool.js @@ -0,0 +1,177 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('flag boolean default false', function (t) { + var argv = parse(['moo'], { + boolean: ['t', 'verbose'], + default: { verbose: false, t: false }, + }); + + t.deepEqual(argv, { + verbose: false, + t: false, + _: ['moo'], + }); + + t.deepEqual(typeof argv.verbose, 'boolean'); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); + +}); + +test('boolean groups', function (t) { + var argv = parse(['-x', '-z', 'one', 'two', 'three'], { + boolean: ['x', 'y', 'z'], + }); + + t.deepEqual(argv, { + x: true, + y: false, + z: true, + _: ['one', 'two', 'three'], + }); + + t.deepEqual(typeof argv.x, 'boolean'); + t.deepEqual(typeof argv.y, 'boolean'); + t.deepEqual(typeof argv.z, 'boolean'); + t.end(); +}); +test('boolean and alias with chainable api', function (t) { + var aliased = ['-h', 'derp']; + var regular = ['--herp', 'derp']; + var aliasedArgv = parse(aliased, { + boolean: 'herp', + alias: { h: 'herp' }, + }); + var propertyArgv = parse(regular, { + boolean: 'herp', + alias: { h: 'herp' }, + }); + var expected = { + herp: true, + h: true, + _: ['derp'], + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +test('boolean and alias with options hash', function (t) { + var aliased = ['-h', 'derp']; + var regular = ['--herp', 'derp']; + var opts = { + alias: { h: 'herp' }, + boolean: 'herp', + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var expected = { + herp: true, + h: true, + _: ['derp'], + }; + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +test('boolean and alias array with options hash', function (t) { + var aliased = ['-h', 'derp']; + var regular = ['--herp', 'derp']; + var alt = ['--harp', 'derp']; + var opts = { + alias: { h: ['herp', 'harp'] }, + boolean: 'h', + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var altPropertyArgv = parse(alt, opts); + var expected = { + harp: true, + herp: true, + h: true, + _: ['derp'], + }; + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.same(altPropertyArgv, expected); + t.end(); +}); + +test('boolean and alias using explicit true', function (t) { + var aliased = ['-h', 'true']; + var regular = ['--herp', 'true']; + var opts = { + alias: { h: 'herp' }, + boolean: 'h', + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var expected = { + herp: true, + h: true, + _: [], + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +// regression, see https://github.com/substack/node-optimist/issues/71 +test('boolean and --x=true', function (t) { + var parsed = parse(['--boool', '--other=true'], { + boolean: 'boool', + }); + + t.same(parsed.boool, true); + t.same(parsed.other, 'true'); + + parsed = parse(['--boool', '--other=false'], { + boolean: 'boool', + }); + + t.same(parsed.boool, true); + t.same(parsed.other, 'false'); + t.end(); +}); + +test('boolean --boool=true', function (t) { + var parsed = parse(['--boool=true'], { + default: { + boool: false, + }, + boolean: ['boool'], + }); + + t.same(parsed.boool, true); + t.end(); +}); + +test('boolean --boool=false', function (t) { + var parsed = parse(['--boool=false'], { + default: { + boool: true, + }, + boolean: ['boool'], + }); + + t.same(parsed.boool, false); + t.end(); +}); + +test('boolean using something similar to true', function (t) { + var opts = { boolean: 'h' }; + var result = parse(['-h', 'true.txt'], opts); + var expected = { + h: true, + _: ['true.txt'], + }; + + t.same(result, expected); + t.end(); +}); diff --git a/node_modules/minimist/test/dash.js b/node_modules/minimist/test/dash.js new file mode 100644 index 0000000..7078817 --- /dev/null +++ b/node_modules/minimist/test/dash.js @@ -0,0 +1,43 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('-', function (t) { + t.plan(6); + t.deepEqual(parse(['-n', '-']), { n: '-', _: [] }); + t.deepEqual(parse(['--nnn', '-']), { nnn: '-', _: [] }); + t.deepEqual(parse(['-']), { _: ['-'] }); + t.deepEqual(parse(['-f-']), { f: '-', _: [] }); + t.deepEqual( + parse(['-b', '-'], { boolean: 'b' }), + { b: true, _: ['-'] } + ); + t.deepEqual( + parse(['-s', '-'], { string: 's' }), + { s: '-', _: [] } + ); +}); + +test('-a -- b', function (t) { + t.plan(2); + t.deepEqual(parse(['-a', '--', 'b']), { a: true, _: ['b'] }); + t.deepEqual(parse(['--a', '--', 'b']), { a: true, _: ['b'] }); +}); + +test('move arguments after the -- into their own `--` array', function (t) { + t.plan(1); + t.deepEqual( + parse(['--name', 'John', 'before', '--', 'after'], { '--': true }), + { name: 'John', _: ['before'], '--': ['after'] } + ); +}); + +test('--- option value', function (t) { + // A multi-dash value is largely an edge case, but check the behaviour is as expected, + // and in particular the same for short option and long option (as made consistent in Jan 2023). + t.plan(2); + t.deepEqual(parse(['-n', '---']), { n: '---', _: [] }); + t.deepEqual(parse(['--nnn', '---']), { nnn: '---', _: [] }); +}); + diff --git a/node_modules/minimist/test/default_bool.js b/node_modules/minimist/test/default_bool.js new file mode 100644 index 0000000..4e9f625 --- /dev/null +++ b/node_modules/minimist/test/default_bool.js @@ -0,0 +1,37 @@ +'use strict'; + +var test = require('tape'); +var parse = require('../'); + +test('boolean default true', function (t) { + var argv = parse([], { + boolean: 'sometrue', + default: { sometrue: true }, + }); + t.equal(argv.sometrue, true); + t.end(); +}); + +test('boolean default false', function (t) { + var argv = parse([], { + boolean: 'somefalse', + default: { somefalse: false }, + }); + t.equal(argv.somefalse, false); + t.end(); +}); + +test('boolean default to null', function (t) { + var argv = parse([], { + boolean: 'maybe', + default: { maybe: null }, + }); + t.equal(argv.maybe, null); + + var argvLong = parse(['--maybe'], { + boolean: 'maybe', + default: { maybe: null }, + }); + t.equal(argvLong.maybe, true); + t.end(); +}); diff --git a/node_modules/minimist/test/dotted.js b/node_modules/minimist/test/dotted.js new file mode 100644 index 0000000..126ff03 --- /dev/null +++ b/node_modules/minimist/test/dotted.js @@ -0,0 +1,24 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('dotted alias', function (t) { + var argv = parse(['--a.b', '22'], { default: { 'a.b': 11 }, alias: { 'a.b': 'aa.bb' } }); + t.equal(argv.a.b, 22); + t.equal(argv.aa.bb, 22); + t.end(); +}); + +test('dotted default', function (t) { + var argv = parse('', { default: { 'a.b': 11 }, alias: { 'a.b': 'aa.bb' } }); + t.equal(argv.a.b, 11); + t.equal(argv.aa.bb, 11); + t.end(); +}); + +test('dotted default with no alias', function (t) { + var argv = parse('', { default: { 'a.b': 11 } }); + t.equal(argv.a.b, 11); + t.end(); +}); diff --git a/node_modules/minimist/test/kv_short.js b/node_modules/minimist/test/kv_short.js new file mode 100644 index 0000000..6d1b53a --- /dev/null +++ b/node_modules/minimist/test/kv_short.js @@ -0,0 +1,32 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('short -k=v', function (t) { + t.plan(1); + + var argv = parse(['-b=123']); + t.deepEqual(argv, { b: 123, _: [] }); +}); + +test('multi short -k=v', function (t) { + t.plan(1); + + var argv = parse(['-a=whatever', '-b=robots']); + t.deepEqual(argv, { a: 'whatever', b: 'robots', _: [] }); +}); + +test('short with embedded equals -k=a=b', function (t) { + t.plan(1); + + var argv = parse(['-k=a=b']); + t.deepEqual(argv, { k: 'a=b', _: [] }); +}); + +test('short with later equals like -ab=c', function (t) { + t.plan(1); + + var argv = parse(['-ab=c']); + t.deepEqual(argv, { a: true, b: 'c', _: [] }); +}); diff --git a/node_modules/minimist/test/long.js b/node_modules/minimist/test/long.js new file mode 100644 index 0000000..9fef51f --- /dev/null +++ b/node_modules/minimist/test/long.js @@ -0,0 +1,33 @@ +'use strict'; + +var test = require('tape'); +var parse = require('../'); + +test('long opts', function (t) { + t.deepEqual( + parse(['--bool']), + { bool: true, _: [] }, + 'long boolean' + ); + t.deepEqual( + parse(['--pow', 'xixxle']), + { pow: 'xixxle', _: [] }, + 'long capture sp' + ); + t.deepEqual( + parse(['--pow=xixxle']), + { pow: 'xixxle', _: [] }, + 'long capture eq' + ); + t.deepEqual( + parse(['--host', 'localhost', '--port', '555']), + { host: 'localhost', port: 555, _: [] }, + 'long captures sp' + ); + t.deepEqual( + parse(['--host=localhost', '--port=555']), + { host: 'localhost', port: 555, _: [] }, + 'long captures eq' + ); + t.end(); +}); diff --git a/node_modules/minimist/test/num.js b/node_modules/minimist/test/num.js new file mode 100644 index 0000000..074393e --- /dev/null +++ b/node_modules/minimist/test/num.js @@ -0,0 +1,38 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('nums', function (t) { + var argv = parse([ + '-x', '1234', + '-y', '5.67', + '-z', '1e7', + '-w', '10f', + '--hex', '0xdeadbeef', + '789', + ]); + t.deepEqual(argv, { + x: 1234, + y: 5.67, + z: 1e7, + w: '10f', + hex: 0xdeadbeef, + _: [789], + }); + t.deepEqual(typeof argv.x, 'number'); + t.deepEqual(typeof argv.y, 'number'); + t.deepEqual(typeof argv.z, 'number'); + t.deepEqual(typeof argv.w, 'string'); + t.deepEqual(typeof argv.hex, 'number'); + t.deepEqual(typeof argv._[0], 'number'); + t.end(); +}); + +test('already a number', function (t) { + var argv = parse(['-x', 1234, 789]); + t.deepEqual(argv, { x: 1234, _: [789] }); + t.deepEqual(typeof argv.x, 'number'); + t.deepEqual(typeof argv._[0], 'number'); + t.end(); +}); diff --git a/node_modules/minimist/test/parse.js b/node_modules/minimist/test/parse.js new file mode 100644 index 0000000..65d9d90 --- /dev/null +++ b/node_modules/minimist/test/parse.js @@ -0,0 +1,209 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('parse args', function (t) { + t.deepEqual( + parse(['--no-moo']), + { moo: false, _: [] }, + 'no' + ); + t.deepEqual( + parse(['-v', 'a', '-v', 'b', '-v', 'c']), + { v: ['a', 'b', 'c'], _: [] }, + 'multi' + ); + t.end(); +}); + +test('comprehensive', function (t) { + t.deepEqual( + parse([ + '--name=meowmers', 'bare', '-cats', 'woo', + '-h', 'awesome', '--multi=quux', + '--key', 'value', + '-b', '--bool', '--no-meep', '--multi=baz', + '--', '--not-a-flag', 'eek', + ]), + { + c: true, + a: true, + t: true, + s: 'woo', + h: 'awesome', + b: true, + bool: true, + key: 'value', + multi: ['quux', 'baz'], + meep: false, + name: 'meowmers', + _: ['bare', '--not-a-flag', 'eek'], + } + ); + t.end(); +}); + +test('flag boolean', function (t) { + var argv = parse(['-t', 'moo'], { boolean: 't' }); + t.deepEqual(argv, { t: true, _: ['moo'] }); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); +}); + +test('flag boolean value', function (t) { + var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], { + boolean: ['t', 'verbose'], + default: { verbose: true }, + }); + + t.deepEqual(argv, { + verbose: false, + t: true, + _: ['moo'], + }); + + t.deepEqual(typeof argv.verbose, 'boolean'); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); +}); + +test('newlines in params', function (t) { + var args = parse(['-s', 'X\nX']); + t.deepEqual(args, { _: [], s: 'X\nX' }); + + // reproduce in bash: + // VALUE="new + // line" + // node program.js --s="$VALUE" + args = parse(['--s=X\nX']); + t.deepEqual(args, { _: [], s: 'X\nX' }); + t.end(); +}); + +test('strings', function (t) { + var s = parse(['-s', '0001234'], { string: 's' }).s; + t.equal(s, '0001234'); + t.equal(typeof s, 'string'); + + var x = parse(['-x', '56'], { string: 'x' }).x; + t.equal(x, '56'); + t.equal(typeof x, 'string'); + t.end(); +}); + +test('stringArgs', function (t) { + var s = parse([' ', ' '], { string: '_' })._; + t.same(s.length, 2); + t.same(typeof s[0], 'string'); + t.same(s[0], ' '); + t.same(typeof s[1], 'string'); + t.same(s[1], ' '); + t.end(); +}); + +test('empty strings', function (t) { + var s = parse(['-s'], { string: 's' }).s; + t.equal(s, ''); + t.equal(typeof s, 'string'); + + var str = parse(['--str'], { string: 'str' }).str; + t.equal(str, ''); + t.equal(typeof str, 'string'); + + var letters = parse(['-art'], { + string: ['a', 't'], + }); + + t.equal(letters.a, ''); + t.equal(letters.r, true); + t.equal(letters.t, ''); + + t.end(); +}); + +test('string and alias', function (t) { + var x = parse(['--str', '000123'], { + string: 's', + alias: { s: 'str' }, + }); + + t.equal(x.str, '000123'); + t.equal(typeof x.str, 'string'); + t.equal(x.s, '000123'); + t.equal(typeof x.s, 'string'); + + var y = parse(['-s', '000123'], { + string: 'str', + alias: { str: 's' }, + }); + + t.equal(y.str, '000123'); + t.equal(typeof y.str, 'string'); + t.equal(y.s, '000123'); + t.equal(typeof y.s, 'string'); + + var z = parse(['-s123'], { + alias: { str: ['s', 'S'] }, + string: ['str'], + }); + + t.deepEqual( + z, + { _: [], s: '123', S: '123', str: '123' }, + 'opt.string works with multiple aliases' + ); + t.end(); +}); + +test('slashBreak', function (t) { + t.same( + parse(['-I/foo/bar/baz']), + { I: '/foo/bar/baz', _: [] } + ); + t.same( + parse(['-xyz/foo/bar/baz']), + { x: true, y: true, z: '/foo/bar/baz', _: [] } + ); + t.end(); +}); + +test('alias', function (t) { + var argv = parse(['-f', '11', '--zoom', '55'], { + alias: { z: 'zoom' }, + }); + t.equal(argv.zoom, 55); + t.equal(argv.z, argv.zoom); + t.equal(argv.f, 11); + t.end(); +}); + +test('multiAlias', function (t) { + var argv = parse(['-f', '11', '--zoom', '55'], { + alias: { z: ['zm', 'zoom'] }, + }); + t.equal(argv.zoom, 55); + t.equal(argv.z, argv.zoom); + t.equal(argv.z, argv.zm); + t.equal(argv.f, 11); + t.end(); +}); + +test('nested dotted objects', function (t) { + var argv = parse([ + '--foo.bar', '3', '--foo.baz', '4', + '--foo.quux.quibble', '5', '--foo.quux.o_O', + '--beep.boop', + ]); + + t.same(argv.foo, { + bar: 3, + baz: 4, + quux: { + quibble: 5, + o_O: true, + }, + }); + t.same(argv.beep, { boop: true }); + t.end(); +}); diff --git a/node_modules/minimist/test/parse_modified.js b/node_modules/minimist/test/parse_modified.js new file mode 100644 index 0000000..32965d1 --- /dev/null +++ b/node_modules/minimist/test/parse_modified.js @@ -0,0 +1,11 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('parse with modifier functions', function (t) { + t.plan(1); + + var argv = parse(['-b', '123'], { boolean: 'b' }); + t.deepEqual(argv, { b: true, _: [123] }); +}); diff --git a/node_modules/minimist/test/proto.js b/node_modules/minimist/test/proto.js new file mode 100644 index 0000000..6e629dd --- /dev/null +++ b/node_modules/minimist/test/proto.js @@ -0,0 +1,64 @@ +'use strict'; + +/* eslint no-proto: 0 */ + +var parse = require('../'); +var test = require('tape'); + +test('proto pollution', function (t) { + var argv = parse(['--__proto__.x', '123']); + t.equal({}.x, undefined); + t.equal(argv.__proto__.x, undefined); + t.equal(argv.x, undefined); + t.end(); +}); + +test('proto pollution (array)', function (t) { + var argv = parse(['--x', '4', '--x', '5', '--x.__proto__.z', '789']); + t.equal({}.z, undefined); + t.deepEqual(argv.x, [4, 5]); + t.equal(argv.x.z, undefined); + t.equal(argv.x.__proto__.z, undefined); + t.end(); +}); + +test('proto pollution (number)', function (t) { + var argv = parse(['--x', '5', '--x.__proto__.z', '100']); + t.equal({}.z, undefined); + t.equal((4).z, undefined); + t.equal(argv.x, 5); + t.equal(argv.x.z, undefined); + t.end(); +}); + +test('proto pollution (string)', function (t) { + var argv = parse(['--x', 'abc', '--x.__proto__.z', 'def']); + t.equal({}.z, undefined); + t.equal('...'.z, undefined); + t.equal(argv.x, 'abc'); + t.equal(argv.x.z, undefined); + t.end(); +}); + +test('proto pollution (constructor)', function (t) { + var argv = parse(['--constructor.prototype.y', '123']); + t.equal({}.y, undefined); + t.equal(argv.y, undefined); + t.end(); +}); + +test('proto pollution (constructor function)', function (t) { + var argv = parse(['--_.concat.constructor.prototype.y', '123']); + function fnToBeTested() {} + t.equal(fnToBeTested.y, undefined); + t.equal(argv.y, undefined); + t.end(); +}); + +// powered by snyk - https://github.com/backstage/backstage/issues/10343 +test('proto pollution (constructor function) snyk', function (t) { + var argv = parse('--_.constructor.constructor.prototype.foo bar'.split(' ')); + t.equal(function () {}.foo, undefined); + t.equal(argv.y, undefined); + t.end(); +}); diff --git a/node_modules/minimist/test/short.js b/node_modules/minimist/test/short.js new file mode 100644 index 0000000..4a7b843 --- /dev/null +++ b/node_modules/minimist/test/short.js @@ -0,0 +1,69 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('numeric short args', function (t) { + t.plan(2); + t.deepEqual(parse(['-n123']), { n: 123, _: [] }); + t.deepEqual( + parse(['-123', '456']), + { 1: true, 2: true, 3: 456, _: [] } + ); +}); + +test('short', function (t) { + t.deepEqual( + parse(['-b']), + { b: true, _: [] }, + 'short boolean' + ); + t.deepEqual( + parse(['foo', 'bar', 'baz']), + { _: ['foo', 'bar', 'baz'] }, + 'bare' + ); + t.deepEqual( + parse(['-cats']), + { c: true, a: true, t: true, s: true, _: [] }, + 'group' + ); + t.deepEqual( + parse(['-cats', 'meow']), + { c: true, a: true, t: true, s: 'meow', _: [] }, + 'short group next' + ); + t.deepEqual( + parse(['-h', 'localhost']), + { h: 'localhost', _: [] }, + 'short capture' + ); + t.deepEqual( + parse(['-h', 'localhost', '-p', '555']), + { h: 'localhost', p: 555, _: [] }, + 'short captures' + ); + t.end(); +}); + +test('mixed short bool and capture', function (t) { + t.same( + parse(['-h', 'localhost', '-fp', '555', 'script.js']), + { + f: true, p: 555, h: 'localhost', + _: ['script.js'], + } + ); + t.end(); +}); + +test('short and long', function (t) { + t.deepEqual( + parse(['-h', 'localhost', '-fp', '555', 'script.js']), + { + f: true, p: 555, h: 'localhost', + _: ['script.js'], + } + ); + t.end(); +}); diff --git a/node_modules/minimist/test/stop_early.js b/node_modules/minimist/test/stop_early.js new file mode 100644 index 0000000..52a6a91 --- /dev/null +++ b/node_modules/minimist/test/stop_early.js @@ -0,0 +1,17 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('stops parsing on the first non-option when stopEarly is set', function (t) { + var argv = parse(['--aaa', 'bbb', 'ccc', '--ddd'], { + stopEarly: true, + }); + + t.deepEqual(argv, { + aaa: 'bbb', + _: ['ccc', '--ddd'], + }); + + t.end(); +}); diff --git a/node_modules/minimist/test/unknown.js b/node_modules/minimist/test/unknown.js new file mode 100644 index 0000000..4f2e0ca --- /dev/null +++ b/node_modules/minimist/test/unknown.js @@ -0,0 +1,104 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('boolean and alias is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = ['-h', 'true', '--derp', 'true']; + var regular = ['--herp', 'true', '-d', 'true']; + var opts = { + alias: { h: 'herp' }, + boolean: 'h', + unknown: unknownFn, + }; + parse(aliased, opts); + parse(regular, opts); + + t.same(unknown, ['--derp', '-d']); + t.end(); +}); + +test('flag boolean true any double hyphen argument is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var argv = parse(['--honk', '--tacos=good', 'cow', '-p', '55'], { + boolean: true, + unknown: unknownFn, + }); + t.same(unknown, ['--tacos=good', 'cow', '-p']); + t.same(argv, { + honk: true, + _: [], + }); + t.end(); +}); + +test('string and alias is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = ['-h', 'hello', '--derp', 'goodbye']; + var regular = ['--herp', 'hello', '-d', 'moon']; + var opts = { + alias: { h: 'herp' }, + string: 'h', + unknown: unknownFn, + }; + parse(aliased, opts); + parse(regular, opts); + + t.same(unknown, ['--derp', '-d']); + t.end(); +}); + +test('default and alias is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = ['-h', 'hello']; + var regular = ['--herp', 'hello']; + var opts = { + default: { h: 'bar' }, + alias: { h: 'herp' }, + unknown: unknownFn, + }; + parse(aliased, opts); + parse(regular, opts); + + t.same(unknown, []); + t.end(); + unknownFn(); // exercise fn for 100% coverage +}); + +test('value following -- is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = ['--bad', '--', 'good', 'arg']; + var opts = { + '--': true, + unknown: unknownFn, + }; + var argv = parse(aliased, opts); + + t.same(unknown, ['--bad']); + t.same(argv, { + '--': ['good', 'arg'], + _: [], + }); + t.end(); +}); diff --git a/node_modules/minimist/test/whitespace.js b/node_modules/minimist/test/whitespace.js new file mode 100644 index 0000000..4fdaf1d --- /dev/null +++ b/node_modules/minimist/test/whitespace.js @@ -0,0 +1,10 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('whitespace should be whitespace', function (t) { + t.plan(1); + var x = parse(['-x', '\t']).x; + t.equal(x, '\t'); +}); diff --git a/node_modules/mkdirp/LICENSE b/node_modules/mkdirp/LICENSE new file mode 100644 index 0000000..432d1ae --- /dev/null +++ b/node_modules/mkdirp/LICENSE @@ -0,0 +1,21 @@ +Copyright 2010 James Halliday (mail@substack.net) + +This project is free software released under the MIT/X11 license: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/mkdirp/bin/cmd.js b/node_modules/mkdirp/bin/cmd.js new file mode 100644 index 0000000..d95de15 --- /dev/null +++ b/node_modules/mkdirp/bin/cmd.js @@ -0,0 +1,33 @@ +#!/usr/bin/env node + +var mkdirp = require('../'); +var minimist = require('minimist'); +var fs = require('fs'); + +var argv = minimist(process.argv.slice(2), { + alias: { m: 'mode', h: 'help' }, + string: [ 'mode' ] +}); +if (argv.help) { + fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout); + return; +} + +var paths = argv._.slice(); +var mode = argv.mode ? parseInt(argv.mode, 8) : undefined; + +(function next () { + if (paths.length === 0) return; + var p = paths.shift(); + + if (mode === undefined) mkdirp(p, cb) + else mkdirp(p, mode, cb) + + function cb (err) { + if (err) { + console.error(err.message); + process.exit(1); + } + else next(); + } +})(); diff --git a/node_modules/mkdirp/bin/usage.txt b/node_modules/mkdirp/bin/usage.txt new file mode 100644 index 0000000..f952aa2 --- /dev/null +++ b/node_modules/mkdirp/bin/usage.txt @@ -0,0 +1,12 @@ +usage: mkdirp [DIR1,DIR2..] {OPTIONS} + + Create each supplied directory including any necessary parent directories that + don't yet exist. + + If the directory already exists, do nothing. + +OPTIONS are: + + -m, --mode If a directory needs to be created, set the mode as an octal + permission string. + diff --git a/node_modules/mkdirp/index.js b/node_modules/mkdirp/index.js new file mode 100644 index 0000000..0890ac3 --- /dev/null +++ b/node_modules/mkdirp/index.js @@ -0,0 +1,102 @@ +var path = require('path'); +var fs = require('fs'); +var _0777 = parseInt('0777', 8); + +module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; + +function mkdirP (p, opts, f, made) { + if (typeof opts === 'function') { + f = opts; + opts = {}; + } + else if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 + } + if (!made) made = null; + + var cb = f || /* istanbul ignore next */ function () {}; + p = path.resolve(p); + + xfs.mkdir(p, mode, function (er) { + if (!er) { + made = made || p; + return cb(null, made); + } + switch (er.code) { + case 'ENOENT': + /* istanbul ignore if */ + if (path.dirname(p) === p) return cb(er); + mkdirP(path.dirname(p), opts, function (er, made) { + /* istanbul ignore if */ + if (er) cb(er, made); + else mkdirP(p, opts, cb, made); + }); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + xfs.stat(p, function (er2, stat) { + // if the stat fails, then that's super weird. + // let the original error be the failure reason. + if (er2 || !stat.isDirectory()) cb(er, made) + else cb(null, made); + }); + break; + } + }); +} + +mkdirP.sync = function sync (p, opts, made) { + if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 + } + if (!made) made = null; + + p = path.resolve(p); + + try { + xfs.mkdirSync(p, mode); + made = made || p; + } + catch (err0) { + switch (err0.code) { + case 'ENOENT' : + made = sync(path.dirname(p), opts, made); + sync(p, opts, made); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + var stat; + try { + stat = xfs.statSync(p); + } + catch (err1) /* istanbul ignore next */ { + throw err0; + } + /* istanbul ignore if */ + if (!stat.isDirectory()) throw err0; + break; + } + } + + return made; +}; diff --git a/node_modules/mkdirp/package.json b/node_modules/mkdirp/package.json new file mode 100644 index 0000000..951e58d --- /dev/null +++ b/node_modules/mkdirp/package.json @@ -0,0 +1,33 @@ +{ + "name": "mkdirp", + "description": "Recursively mkdir, like `mkdir -p`", + "version": "0.5.6", + "publishConfig": { + "tag": "legacy" + }, + "author": "James Halliday (http://substack.net)", + "main": "index.js", + "keywords": [ + "mkdir", + "directory" + ], + "repository": { + "type": "git", + "url": "https://github.com/substack/node-mkdirp.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "dependencies": { + "minimist": "^1.2.6" + }, + "devDependencies": { + "tap": "^16.0.1" + }, + "bin": "bin/cmd.js", + "license": "MIT", + "files": [ + "bin", + "index.js" + ] +} diff --git a/node_modules/mkdirp/readme.markdown b/node_modules/mkdirp/readme.markdown new file mode 100644 index 0000000..fc314bf --- /dev/null +++ b/node_modules/mkdirp/readme.markdown @@ -0,0 +1,100 @@ +# mkdirp + +Like `mkdir -p`, but in node.js! + +[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp) + +# example + +## pow.js + +```js +var mkdirp = require('mkdirp'); + +mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') +}); +``` + +Output + +``` +pow! +``` + +And now /tmp/foo/bar/baz exists, huzzah! + +# methods + +```js +var mkdirp = require('mkdirp'); +``` + +## mkdirp(dir, opts, cb) + +Create a new directory and any necessary subdirectories at `dir` with octal +permission string `opts.mode`. If `opts` is a non-object, it will be treated as +the `opts.mode`. + +If `opts.mode` isn't specified, it defaults to `0777`. + +`cb(err, made)` fires with the error or the first directory `made` +that had to be created, if any. + +You can optionally pass in an alternate `fs` implementation by passing in +`opts.fs`. Your implementation should have `opts.fs.mkdir(path, mode, cb)` and +`opts.fs.stat(path, cb)`. + +## mkdirp.sync(dir, opts) + +Synchronously create a new directory and any necessary subdirectories at `dir` +with octal permission string `opts.mode`. If `opts` is a non-object, it will be +treated as the `opts.mode`. + +If `opts.mode` isn't specified, it defaults to `0777`. + +Returns the first directory that had to be created, if any. + +You can optionally pass in an alternate `fs` implementation by passing in +`opts.fs`. Your implementation should have `opts.fs.mkdirSync(path, mode)` and +`opts.fs.statSync(path)`. + +# usage + +This package also ships with a `mkdirp` command. + +``` +usage: mkdirp [DIR1,DIR2..] {OPTIONS} + + Create each supplied directory including any necessary parent directories that + don't yet exist. + + If the directory already exists, do nothing. + +OPTIONS are: + + -m, --mode If a directory needs to be created, set the mode as an octal + permission string. + +``` + +# install + +With [npm](http://npmjs.org) do: + +``` +npm install mkdirp +``` + +to get the library, or + +``` +npm install -g mkdirp +``` + +to get the command. + +# license + +MIT diff --git a/node_modules/ms/index.js b/node_modules/ms/index.js new file mode 100644 index 0000000..ea734fb --- /dev/null +++ b/node_modules/ms/index.js @@ -0,0 +1,162 @@ +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function (val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} diff --git a/node_modules/ms/license.md b/node_modules/ms/license.md new file mode 100644 index 0000000..fa5d39b --- /dev/null +++ b/node_modules/ms/license.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 Vercel, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/ms/package.json b/node_modules/ms/package.json new file mode 100644 index 0000000..4997189 --- /dev/null +++ b/node_modules/ms/package.json @@ -0,0 +1,38 @@ +{ + "name": "ms", + "version": "2.1.3", + "description": "Tiny millisecond conversion utility", + "repository": "vercel/ms", + "main": "./index", + "files": [ + "index.js" + ], + "scripts": { + "precommit": "lint-staged", + "lint": "eslint lib/* bin/*", + "test": "mocha tests.js" + }, + "eslintConfig": { + "extends": "eslint:recommended", + "env": { + "node": true, + "es6": true + } + }, + "lint-staged": { + "*.js": [ + "npm run lint", + "prettier --single-quote --write", + "git add" + ] + }, + "license": "MIT", + "devDependencies": { + "eslint": "4.18.2", + "expect.js": "0.3.1", + "husky": "0.14.3", + "lint-staged": "5.0.0", + "mocha": "4.0.1", + "prettier": "2.0.5" + } +} diff --git a/node_modules/ms/readme.md b/node_modules/ms/readme.md new file mode 100644 index 0000000..0fc1abb --- /dev/null +++ b/node_modules/ms/readme.md @@ -0,0 +1,59 @@ +# ms + +![CI](https://github.com/vercel/ms/workflows/CI/badge.svg) + +Use this package to easily convert various time formats to milliseconds. + +## Examples + +```js +ms('2 days') // 172800000 +ms('1d') // 86400000 +ms('10h') // 36000000 +ms('2.5 hrs') // 9000000 +ms('2h') // 7200000 +ms('1m') // 60000 +ms('5s') // 5000 +ms('1y') // 31557600000 +ms('100') // 100 +ms('-3 days') // -259200000 +ms('-1h') // -3600000 +ms('-200') // -200 +``` + +### Convert from Milliseconds + +```js +ms(60000) // "1m" +ms(2 * 60000) // "2m" +ms(-3 * 60000) // "-3m" +ms(ms('10 hours')) // "10h" +``` + +### Time Format Written-Out + +```js +ms(60000, { long: true }) // "1 minute" +ms(2 * 60000, { long: true }) // "2 minutes" +ms(-3 * 60000, { long: true }) // "-3 minutes" +ms(ms('10 hours'), { long: true }) // "10 hours" +``` + +## Features + +- Works both in [Node.js](https://nodejs.org) and in the browser +- If a number is supplied to `ms`, a string with a unit is returned +- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`) +- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned + +## Related Packages + +- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time. + +## Caught a Bug? + +1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device +2. Link the package to the global module directory: `npm link` +3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms! + +As always, you can run the tests using: `npm test` diff --git a/node_modules/mz/HISTORY.md b/node_modules/mz/HISTORY.md new file mode 100644 index 0000000..6ebee21 --- /dev/null +++ b/node_modules/mz/HISTORY.md @@ -0,0 +1,66 @@ + +2.7.0 / 2017-09-13 +================== + + * feat: support fs.copyFile (#58) + +2.6.0 / 2016-11-22 +================== + + * Added fdatasync to fs api (#46) + +2.5.0 / 2016-11-04 +================== + + * feat: support fs.mkdtemp + +2.4.0 / 2016-03-23 +================== + + * add `fs.truncate()` [#34](https://github.com/normalize/mz/pull/34) + +2.3.1 / 2016-02-01 +================== + + * update `any-promise@v1` + +2.3.0 / 2016-01-30 +================== + + * feat(package): switch to `any-promise` to support more promise engines + +2.2.0 / 2016-01-24 +================== + + * feat(package): add index.js to files + +2.1.0 / 2015-10-15 +================== + + * support for readline library + +2.0.0 / 2015-05-24 +================== + + * support callbacks as well + +1.2.0 / 2014-12-16 +================== + + * refactor promisification to `thenify` and `thenify-all` + +1.1.0 / 2014-11-14 +================== + + * use `graceful-fs` if available + +1.0.1 / 2014-08-18 +================== + + * don't use `bluebird.promisify()` - unnecessarily wraps runtime errors, causing issues + +1.0.0 / 2014-06-18 +================== + + * use `bluebird` by default if found + * support node 0.8 diff --git a/node_modules/mz/LICENSE b/node_modules/mz/LICENSE new file mode 100644 index 0000000..1835f3d --- /dev/null +++ b/node_modules/mz/LICENSE @@ -0,0 +1,22 @@ + +The MIT License (MIT) + +Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/mz/README.md b/node_modules/mz/README.md new file mode 100644 index 0000000..50d6557 --- /dev/null +++ b/node_modules/mz/README.md @@ -0,0 +1,106 @@ + +# MZ - Modernize node.js + +[![NPM version][npm-image]][npm-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] +[![Dependency Status][david-image]][david-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +Modernize node.js to current ECMAScript specifications! +node.js will not update their API to ES6+ [for a while](https://github.com/joyent/node/issues/7549). +This library is a wrapper for various aspects of node.js' API. + +## Installation and Usage + +Set `mz` as a dependency and install it. + +```bash +npm i mz +``` + +Then prefix the relevant `require()`s with `mz/`: + +```js +var fs = require('mz/fs') + +fs.exists(__filename).then(function (exists) { + if (exists) // do something +}) +``` + +With ES2017, this will allow you to use async functions cleanly with node's core API: + +```js +const fs = require('mz/fs') + + +async function doSomething () { + if (await fs.exists(__filename)) // do something +} +``` + +## Promisification + +Many node methods are converted into promises. +Any properties that are deprecated or aren't asynchronous will simply be proxied. +The modules wrapped are: + +- `child_process` +- `crypto` +- `dns` +- `fs` (uses `graceful-fs` if available) +- `readline` +- `zlib` + +```js +var exec = require('mz/child_process').exec + +exec('node --version').then(function (stdout) { + console.log(stdout) +}) +``` + +## Promise Engine + +`mz` uses [`any-promise`](https://github.com/kevinbeaty/any-promise). + +## FAQ + +### Can I use this in production? + +Yes, Node 4.x ships with stable promises support. For older engines, +you should probably install your own promise implementation and register it with +`require('any-promise/register')('bluebird')`. + +### Will this make my app faster? + +Nope, probably slower actually. + +### Can I add more features? + +Sure. +Open an issue. + +Currently, the plans are to eventually support: + +- New APIs in node.js that are not available in older versions of node +- ECMAScript7 Streams + +[bluebird]: https://github.com/petkaantonov/bluebird + +[npm-image]: https://img.shields.io/npm/v/mz.svg?style=flat-square +[npm-url]: https://npmjs.org/package/mz +[github-tag]: http://img.shields.io/github/tag/normalize/mz.svg?style=flat-square +[github-url]: https://github.com/normalize/mz/tags +[travis-image]: https://img.shields.io/travis/normalize/mz.svg?style=flat-square +[travis-url]: https://travis-ci.org/normalize/mz +[coveralls-image]: https://img.shields.io/coveralls/normalize/mz.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/normalize/mz?branch=master +[david-image]: http://img.shields.io/david/normalize/mz.svg?style=flat-square +[david-url]: https://david-dm.org/normalize/mz +[license-image]: http://img.shields.io/npm/l/mz.svg?style=flat-square +[license-url]: LICENSE +[downloads-image]: http://img.shields.io/npm/dm/mz.svg?style=flat-square +[downloads-url]: https://npmjs.org/package/mz diff --git a/node_modules/mz/child_process.js b/node_modules/mz/child_process.js new file mode 100644 index 0000000..06d5d9e --- /dev/null +++ b/node_modules/mz/child_process.js @@ -0,0 +1,8 @@ + +require('thenify-all').withCallback( + require('child_process'), + exports, [ + 'exec', + 'execFile', + ] +) diff --git a/node_modules/mz/crypto.js b/node_modules/mz/crypto.js new file mode 100644 index 0000000..d8cff57 --- /dev/null +++ b/node_modules/mz/crypto.js @@ -0,0 +1,9 @@ + +require('thenify-all').withCallback( + require('crypto'), + exports, [ + 'pbkdf2', + 'pseudoRandomBytes', + 'randomBytes' + ] +) diff --git a/node_modules/mz/dns.js b/node_modules/mz/dns.js new file mode 100644 index 0000000..c103582 --- /dev/null +++ b/node_modules/mz/dns.js @@ -0,0 +1,16 @@ + +require('thenify-all').withCallback( + require('dns'), + exports, [ + 'lookup', + 'resolve', + 'resolve4', + 'resolve6', + 'resolveCname', + 'resolveMx', + 'resolveNs', + 'resolveSrv', + 'resolveTxt', + 'reverse' + ] +) diff --git a/node_modules/mz/fs.js b/node_modules/mz/fs.js new file mode 100644 index 0000000..1cfd2d7 --- /dev/null +++ b/node_modules/mz/fs.js @@ -0,0 +1,62 @@ + +var Promise = require('any-promise') +var fs +try { + fs = require('graceful-fs') +} catch(err) { + fs = require('fs') +} + +var api = [ + 'appendFile', + 'chmod', + 'chown', + 'close', + 'fchmod', + 'fchown', + 'fdatasync', + 'fstat', + 'fsync', + 'ftruncate', + 'futimes', + 'lchown', + 'link', + 'lstat', + 'mkdir', + 'open', + 'read', + 'readFile', + 'readdir', + 'readlink', + 'realpath', + 'rename', + 'rmdir', + 'stat', + 'symlink', + 'truncate', + 'unlink', + 'utimes', + 'write', + 'writeFile' +] + +typeof fs.access === 'function' && api.push('access') +typeof fs.copyFile === 'function' && api.push('copyFile') +typeof fs.mkdtemp === 'function' && api.push('mkdtemp') + +require('thenify-all').withCallback(fs, exports, api) + +exports.exists = function (filename, callback) { + // callback + if (typeof callback === 'function') { + return fs.stat(filename, function (err) { + callback(null, !err); + }) + } + // or promise + return new Promise(function (resolve) { + fs.stat(filename, function (err) { + resolve(!err) + }) + }) +} diff --git a/node_modules/mz/index.js b/node_modules/mz/index.js new file mode 100644 index 0000000..cef508d --- /dev/null +++ b/node_modules/mz/index.js @@ -0,0 +1,8 @@ +module.exports = { + fs: require('./fs'), + dns: require('./dns'), + zlib: require('./zlib'), + crypto: require('./crypto'), + readline: require('./readline'), + child_process: require('./child_process') +} diff --git a/node_modules/mz/package.json b/node_modules/mz/package.json new file mode 100644 index 0000000..de8d542 --- /dev/null +++ b/node_modules/mz/package.json @@ -0,0 +1,44 @@ +{ + "name": "mz", + "description": "modernize node.js to current ECMAScript standards", + "version": "2.7.0", + "author": { + "name": "Jonathan Ong", + "email": "me@jongleberry.com", + "url": "http://jongleberry.com", + "twitter": "https://twitter.com/jongleberry" + }, + "license": "MIT", + "repository": "normalize/mz", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + }, + "devDependencies": { + "istanbul": "^0.4.0", + "bluebird": "^3.0.0", + "mocha": "^3.0.0" + }, + "scripts": { + "test": "mocha --reporter spec", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot" + }, + "keywords": [ + "promisify", + "promise", + "thenify", + "then", + "es6" + ], + "files": [ + "index.js", + "child_process.js", + "crypto.js", + "dns.js", + "fs.js", + "readline.js", + "zlib.js" + ] +} diff --git a/node_modules/mz/readline.js b/node_modules/mz/readline.js new file mode 100644 index 0000000..eb70c46 --- /dev/null +++ b/node_modules/mz/readline.js @@ -0,0 +1,64 @@ +var readline = require('readline') +var Promise = require('any-promise') +var objectAssign = require('object-assign') +var Interface = readline.Interface + +function wrapCompleter (completer) { + if (completer.length === 2) return completer + + return function (line, cb) { + var result = completer(line) + + if (typeof result.then !== 'function') { + return cb(null, result) + } + + result.catch(cb).then(function (result) { + process.nextTick(function () { cb(null, result) }) + }) + } +} + +function InterfaceAsPromised (input, output, completer, terminal) { + if (arguments.length === 1) { + var options = input + + if (typeof options.completer === 'function') { + options = objectAssign({}, options, { + completer: wrapCompleter(options.completer) + }) + } + + Interface.call(this, options) + } else { + if (typeof completer === 'function') { + completer = wrapCompleter(completer) + } + + Interface.call(this, input, output, completer, terminal) + } +} + +InterfaceAsPromised.prototype = Object.create(Interface.prototype) + +InterfaceAsPromised.prototype.question = function (question, callback) { + if (typeof callback === 'function') { + return Interface.prototype.question.call(this, question, callback) + } + + var self = this + return new Promise(function (resolve) { + Interface.prototype.question.call(self, question, resolve) + }) +} + +objectAssign(exports, readline, { + Interface: InterfaceAsPromised, + createInterface: function (input, output, completer, terminal) { + if (arguments.length === 1) { + return new InterfaceAsPromised(input) + } + + return new InterfaceAsPromised(input, output, completer, terminal) + } +}) diff --git a/node_modules/mz/zlib.js b/node_modules/mz/zlib.js new file mode 100644 index 0000000..a05c26a --- /dev/null +++ b/node_modules/mz/zlib.js @@ -0,0 +1,13 @@ + +require('thenify-all').withCallback( + require('zlib'), + exports, [ + 'deflate', + 'deflateRaw', + 'gzip', + 'gunzip', + 'inflate', + 'inflateRaw', + 'unzip', + ] +) diff --git a/node_modules/nanoid/LICENSE b/node_modules/nanoid/LICENSE new file mode 100644 index 0000000..37f56aa --- /dev/null +++ b/node_modules/nanoid/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2017 Andrey Sitnik + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/nanoid/README.md b/node_modules/nanoid/README.md new file mode 100644 index 0000000..35abb57 --- /dev/null +++ b/node_modules/nanoid/README.md @@ -0,0 +1,39 @@ +# Nano ID + +Nano ID logo by Anton Lovchikov + +**English** | [Русский](./README.ru.md) | [简体中文](./README.zh-CN.md) | [Bahasa Indonesia](./README.id-ID.md) + +A tiny, secure, URL-friendly, unique string ID generator for JavaScript. + +> “An amazing level of senseless perfectionism, +> which is simply impossible not to respect.” + +* **Small.** 130 bytes (minified and gzipped). No dependencies. + [Size Limit] controls the size. +* **Fast.** It is 2 times faster than UUID. +* **Safe.** It uses hardware random generator. Can be used in clusters. +* **Short IDs.** It uses a larger alphabet than UUID (`A-Za-z0-9_-`). + So ID size was reduced from 36 to 21 symbols. +* **Portable.** Nano ID was ported + to [20 programming languages](#other-programming-languages). + +```js +import { nanoid } from 'nanoid' +model.id = nanoid() //=> "V1StGXR8_Z5jdHi6B-myT" +``` + +Supports modern browsers, IE [with Babel], Node.js and React Native. + +[online tool]: https://gitpod.io/#https://github.com/ai/nanoid/ +[with Babel]: https://developer.epages.com/blog/coding/how-to-transpile-node-modules-with-babel-and-webpack-in-a-monorepo/ +[Size Limit]: https://github.com/ai/size-limit + + + Sponsored by Evil Martians + + +## Docs +Read full docs **[here](https://github.com/ai/nanoid#readme)**. diff --git a/node_modules/nanoid/async/index.browser.cjs b/node_modules/nanoid/async/index.browser.cjs new file mode 100644 index 0000000..80d1871 --- /dev/null +++ b/node_modules/nanoid/async/index.browser.cjs @@ -0,0 +1,69 @@ +let random = async bytes => crypto.getRandomValues(new Uint8Array(bytes)) + +let customAlphabet = (alphabet, defaultSize = 21) => { + // First, a bitmask is necessary to generate the ID. The bitmask makes bytes + // values closer to the alphabet size. The bitmask calculates the closest + // `2^31 - 1` number, which exceeds the alphabet size. + // For example, the bitmask for the alphabet size 30 is 31 (00011111). + // `Math.clz32` is not used, because it is not available in browsers. + let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1 + // Though, the bitmask solution is not perfect since the bytes exceeding + // the alphabet size are refused. Therefore, to reliably generate the ID, + // the random bytes redundancy has to be satisfied. + + // Note: every hardware random generator call is performance expensive, + // because the system call for entropy collection takes a lot of time. + // So, to avoid additional system calls, extra bytes are requested in advance. + + // Next, a step determines how many random bytes to generate. + // The number of random bytes gets decided upon the ID size, mask, + // alphabet size, and magic number 1.6 (using 1.6 peaks at performance + // according to benchmarks). + + // `-~f => Math.ceil(f)` if f is a float + // `-~i => i + 1` if i is an integer + let step = -~((1.6 * mask * defaultSize) / alphabet.length) + + return async (size = defaultSize) => { + let id = '' + while (true) { + let bytes = crypto.getRandomValues(new Uint8Array(step)) + // A compact alternative for `for (var i = 0; i < step; i++)`. + let i = step | 0 + while (i--) { + // Adding `|| ''` refuses a random byte that exceeds the alphabet size. + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + } + } +} + +let nanoid = async (size = 21) => { + let id = '' + let bytes = crypto.getRandomValues(new Uint8Array((size |= 0))) + + // A compact alternative for `for (var i = 0; i < step; i++)`. + while (size--) { + // It is incorrect to use bytes exceeding the alphabet size. + // The following mask reduces the random byte in the 0-255 value + // range to the 0-63 value range. Therefore, adding hacks, such + // as empty string fallback or magic numbers, is unneccessary because + // the bitmask trims bytes down to the alphabet size. + let byte = bytes[size] & 63 + if (byte < 36) { + // `0-9a-z` + id += byte.toString(36) + } else if (byte < 62) { + // `A-Z` + id += (byte - 26).toString(36).toUpperCase() + } else if (byte < 63) { + id += '_' + } else { + id += '-' + } + } + return id +} + +module.exports = { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/index.browser.js b/node_modules/nanoid/async/index.browser.js new file mode 100644 index 0000000..fbaa230 --- /dev/null +++ b/node_modules/nanoid/async/index.browser.js @@ -0,0 +1,34 @@ +let random = async bytes => crypto.getRandomValues(new Uint8Array(bytes)) +let customAlphabet = (alphabet, defaultSize = 21) => { + let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1 + let step = -~((1.6 * mask * defaultSize) / alphabet.length) + return async (size = defaultSize) => { + let id = '' + while (true) { + let bytes = crypto.getRandomValues(new Uint8Array(step)) + let i = step | 0 + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + } + } +} +let nanoid = async (size = 21) => { + let id = '' + let bytes = crypto.getRandomValues(new Uint8Array((size |= 0))) + while (size--) { + let byte = bytes[size] & 63 + if (byte < 36) { + id += byte.toString(36) + } else if (byte < 62) { + id += (byte - 26).toString(36).toUpperCase() + } else if (byte < 63) { + id += '_' + } else { + id += '-' + } + } + return id +} +export { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/index.cjs b/node_modules/nanoid/async/index.cjs new file mode 100644 index 0000000..f1b0ad0 --- /dev/null +++ b/node_modules/nanoid/async/index.cjs @@ -0,0 +1,71 @@ +let crypto = require('crypto') + +let { urlAlphabet } = require('../url-alphabet/index.cjs') + +// `crypto.randomFill()` is a little faster than `crypto.randomBytes()`, +// because it is possible to use in combination with `Buffer.allocUnsafe()`. +let random = bytes => + new Promise((resolve, reject) => { + // `Buffer.allocUnsafe()` is faster because it doesn’t flush the memory. + // Memory flushing is unnecessary since the buffer allocation itself resets + // the memory with the new bytes. + crypto.randomFill(Buffer.allocUnsafe(bytes), (err, buf) => { + if (err) { + reject(err) + } else { + resolve(buf) + } + }) + }) + +let customAlphabet = (alphabet, defaultSize = 21) => { + // First, a bitmask is necessary to generate the ID. The bitmask makes bytes + // values closer to the alphabet size. The bitmask calculates the closest + // `2^31 - 1` number, which exceeds the alphabet size. + // For example, the bitmask for the alphabet size 30 is 31 (00011111). + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + // Though, the bitmask solution is not perfect since the bytes exceeding + // the alphabet size are refused. Therefore, to reliably generate the ID, + // the random bytes redundancy has to be satisfied. + + // Note: every hardware random generator call is performance expensive, + // because the system call for entropy collection takes a lot of time. + // So, to avoid additional system calls, extra bytes are requested in advance. + + // Next, a step determines how many random bytes to generate. + // The number of random bytes gets decided upon the ID size, mask, + // alphabet size, and magic number 1.6 (using 1.6 peaks at performance + // according to benchmarks). + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + + let tick = (id, size = defaultSize) => + random(step).then(bytes => { + // A compact alternative for `for (var i = 0; i < step; i++)`. + let i = step + while (i--) { + // Adding `|| ''` refuses a random byte that exceeds the alphabet size. + id += alphabet[bytes[i] & mask] || '' + if (id.length >= size) return id + } + return tick(id, size) + }) + + return size => tick('', size) +} + +let nanoid = (size = 21) => + random((size |= 0)).then(bytes => { + let id = '' + // A compact alternative for `for (var i = 0; i < step; i++)`. + while (size--) { + // It is incorrect to use bytes exceeding the alphabet size. + // The following mask reduces the random byte in the 0-255 value + // range to the 0-63 value range. Therefore, adding hacks, such + // as empty string fallback or magic numbers, is unneccessary because + // the bitmask trims bytes down to the alphabet size. + id += urlAlphabet[bytes[size] & 63] + } + return id + }) + +module.exports = { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/index.d.ts b/node_modules/nanoid/async/index.d.ts new file mode 100644 index 0000000..9e91965 --- /dev/null +++ b/node_modules/nanoid/async/index.d.ts @@ -0,0 +1,56 @@ +/** + * Generate secure URL-friendly unique ID. The non-blocking version. + * + * By default, the ID will have 21 symbols to have a collision probability + * similar to UUID v4. + * + * ```js + * import { nanoid } from 'nanoid/async' + * nanoid().then(id => { + * model.id = id + * }) + * ``` + * + * @param size Size of the ID. The default size is 21. + * @returns A promise with a random string. + */ +export function nanoid(size?: number): Promise + +/** + * A low-level function. + * Generate secure unique ID with custom alphabet. The non-blocking version. + * + * Alphabet must contain 256 symbols or less. Otherwise, the generator + * will not be secure. + * + * @param alphabet Alphabet used to generate the ID. + * @param defaultSize Size of the ID. The default size is 21. + * @returns A function that returns a promise with a random string. + * + * ```js + * import { customAlphabet } from 'nanoid/async' + * const nanoid = customAlphabet('0123456789абвгдеё', 5) + * nanoid().then(id => { + * model.id = id //=> "8ё56а" + * }) + * ``` + */ +export function customAlphabet( + alphabet: string, + defaultSize?: number +): (size?: number) => Promise + +/** + * Generate an array of random bytes collected from hardware noise. + * + * ```js + * import { random } from 'nanoid/async' + * random(5).then(bytes => { + * bytes //=> [10, 67, 212, 67, 89] + * }) + * ``` + * + * @param bytes Size of the array. + * @returns A promise with a random bytes array. + */ +export function random(bytes: number): Promise diff --git a/node_modules/nanoid/async/index.js b/node_modules/nanoid/async/index.js new file mode 100644 index 0000000..cec454a --- /dev/null +++ b/node_modules/nanoid/async/index.js @@ -0,0 +1,35 @@ +import crypto from 'crypto' +import { urlAlphabet } from '../url-alphabet/index.js' +let random = bytes => + new Promise((resolve, reject) => { + crypto.randomFill(Buffer.allocUnsafe(bytes), (err, buf) => { + if (err) { + reject(err) + } else { + resolve(buf) + } + }) + }) +let customAlphabet = (alphabet, defaultSize = 21) => { + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + let tick = (id, size = defaultSize) => + random(step).then(bytes => { + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length >= size) return id + } + return tick(id, size) + }) + return size => tick('', size) +} +let nanoid = (size = 21) => + random((size |= 0)).then(bytes => { + let id = '' + while (size--) { + id += urlAlphabet[bytes[size] & 63] + } + return id + }) +export { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/index.native.js b/node_modules/nanoid/async/index.native.js new file mode 100644 index 0000000..7c1d6f3 --- /dev/null +++ b/node_modules/nanoid/async/index.native.js @@ -0,0 +1,26 @@ +import { getRandomBytesAsync } from 'expo-random' +import { urlAlphabet } from '../url-alphabet/index.js' +let random = getRandomBytesAsync +let customAlphabet = (alphabet, defaultSize = 21) => { + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + let tick = (id, size = defaultSize) => + random(step).then(bytes => { + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length >= size) return id + } + return tick(id, size) + }) + return size => tick('', size) +} +let nanoid = (size = 21) => + random((size |= 0)).then(bytes => { + let id = '' + while (size--) { + id += urlAlphabet[bytes[size] & 63] + } + return id + }) +export { nanoid, customAlphabet, random } diff --git a/node_modules/nanoid/async/package.json b/node_modules/nanoid/async/package.json new file mode 100644 index 0000000..578cdb4 --- /dev/null +++ b/node_modules/nanoid/async/package.json @@ -0,0 +1,12 @@ +{ + "type": "module", + "main": "index.cjs", + "module": "index.js", + "react-native": { + "./index.js": "./index.native.js" + }, + "browser": { + "./index.js": "./index.browser.js", + "./index.cjs": "./index.browser.cjs" + } +} \ No newline at end of file diff --git a/node_modules/nanoid/bin/nanoid.cjs b/node_modules/nanoid/bin/nanoid.cjs new file mode 100644 index 0000000..c76db0f --- /dev/null +++ b/node_modules/nanoid/bin/nanoid.cjs @@ -0,0 +1,55 @@ +#!/usr/bin/env node + +let { nanoid, customAlphabet } = require('..') + +function print(msg) { + process.stdout.write(msg + '\n') +} + +function error(msg) { + process.stderr.write(msg + '\n') + process.exit(1) +} + +if (process.argv.includes('--help') || process.argv.includes('-h')) { + print(` + Usage + $ nanoid [options] + + Options + -s, --size Generated ID size + -a, --alphabet Alphabet to use + -h, --help Show this help + + Examples + $ nanoid --s 15 + S9sBF77U6sDB8Yg + + $ nanoid --size 10 --alphabet abc + bcabababca`) + process.exit() +} + +let alphabet, size +for (let i = 2; i < process.argv.length; i++) { + let arg = process.argv[i] + if (arg === '--size' || arg === '-s') { + size = Number(process.argv[i + 1]) + i += 1 + if (Number.isNaN(size) || size <= 0) { + error('Size must be positive integer') + } + } else if (arg === '--alphabet' || arg === '-a') { + alphabet = process.argv[i + 1] + i += 1 + } else { + error('Unknown argument ' + arg) + } +} + +if (alphabet) { + let customNanoid = customAlphabet(alphabet, size) + print(customNanoid()) +} else { + print(nanoid(size)) +} diff --git a/node_modules/nanoid/index.browser.cjs b/node_modules/nanoid/index.browser.cjs new file mode 100644 index 0000000..d21a91f --- /dev/null +++ b/node_modules/nanoid/index.browser.cjs @@ -0,0 +1,72 @@ +// This file replaces `index.js` in bundlers like webpack or Rollup, +// according to `browser` config in `package.json`. + +let { urlAlphabet } = require('./url-alphabet/index.cjs') + +let random = bytes => crypto.getRandomValues(new Uint8Array(bytes)) + +let customRandom = (alphabet, defaultSize, getRandom) => { + // First, a bitmask is necessary to generate the ID. The bitmask makes bytes + // values closer to the alphabet size. The bitmask calculates the closest + // `2^31 - 1` number, which exceeds the alphabet size. + // For example, the bitmask for the alphabet size 30 is 31 (00011111). + // `Math.clz32` is not used, because it is not available in browsers. + let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1 + // Though, the bitmask solution is not perfect since the bytes exceeding + // the alphabet size are refused. Therefore, to reliably generate the ID, + // the random bytes redundancy has to be satisfied. + + // Note: every hardware random generator call is performance expensive, + // because the system call for entropy collection takes a lot of time. + // So, to avoid additional system calls, extra bytes are requested in advance. + + // Next, a step determines how many random bytes to generate. + // The number of random bytes gets decided upon the ID size, mask, + // alphabet size, and magic number 1.6 (using 1.6 peaks at performance + // according to benchmarks). + + // `-~f => Math.ceil(f)` if f is a float + // `-~i => i + 1` if i is an integer + let step = -~((1.6 * mask * defaultSize) / alphabet.length) + + return (size = defaultSize) => { + let id = '' + while (true) { + let bytes = getRandom(step) + // A compact alternative for `for (var i = 0; i < step; i++)`. + let j = step | 0 + while (j--) { + // Adding `|| ''` refuses a random byte that exceeds the alphabet size. + id += alphabet[bytes[j] & mask] || '' + if (id.length === size) return id + } + } + } +} + +let customAlphabet = (alphabet, size = 21) => + customRandom(alphabet, size, random) + +let nanoid = (size = 21) => + crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => { + // It is incorrect to use bytes exceeding the alphabet size. + // The following mask reduces the random byte in the 0-255 value + // range to the 0-63 value range. Therefore, adding hacks, such + // as empty string fallback or magic numbers, is unneccessary because + // the bitmask trims bytes down to the alphabet size. + byte &= 63 + if (byte < 36) { + // `0-9a-z` + id += byte.toString(36) + } else if (byte < 62) { + // `A-Z` + id += (byte - 26).toString(36).toUpperCase() + } else if (byte > 62) { + id += '-' + } else { + id += '_' + } + return id + }, '') + +module.exports = { nanoid, customAlphabet, customRandom, urlAlphabet, random } diff --git a/node_modules/nanoid/index.browser.js b/node_modules/nanoid/index.browser.js new file mode 100644 index 0000000..7d3b876 --- /dev/null +++ b/node_modules/nanoid/index.browser.js @@ -0,0 +1,34 @@ +import { urlAlphabet } from './url-alphabet/index.js' +let random = bytes => crypto.getRandomValues(new Uint8Array(bytes)) +let customRandom = (alphabet, defaultSize, getRandom) => { + let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1 + let step = -~((1.6 * mask * defaultSize) / alphabet.length) + return (size = defaultSize) => { + let id = '' + while (true) { + let bytes = getRandom(step) + let j = step | 0 + while (j--) { + id += alphabet[bytes[j] & mask] || '' + if (id.length === size) return id + } + } + } +} +let customAlphabet = (alphabet, size = 21) => + customRandom(alphabet, size, random) +let nanoid = (size = 21) => + crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => { + byte &= 63 + if (byte < 36) { + id += byte.toString(36) + } else if (byte < 62) { + id += (byte - 26).toString(36).toUpperCase() + } else if (byte > 62) { + id += '-' + } else { + id += '_' + } + return id + }, '') +export { nanoid, customAlphabet, customRandom, urlAlphabet, random } diff --git a/node_modules/nanoid/index.cjs b/node_modules/nanoid/index.cjs new file mode 100644 index 0000000..c20e374 --- /dev/null +++ b/node_modules/nanoid/index.cjs @@ -0,0 +1,85 @@ +let crypto = require('crypto') + +let { urlAlphabet } = require('./url-alphabet/index.cjs') + +// It is best to make fewer, larger requests to the crypto module to +// avoid system call overhead. So, random numbers are generated in a +// pool. The pool is a Buffer that is larger than the initial random +// request size by this multiplier. The pool is enlarged if subsequent +// requests exceed the maximum buffer size. +const POOL_SIZE_MULTIPLIER = 128 +let pool, poolOffset + +let fillPool = bytes => { + if (!pool || pool.length < bytes) { + pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER) + crypto.randomFillSync(pool) + poolOffset = 0 + } else if (poolOffset + bytes > pool.length) { + crypto.randomFillSync(pool) + poolOffset = 0 + } + poolOffset += bytes +} + +let random = bytes => { + // `|=` convert `bytes` to number to prevent `valueOf` abusing and pool pollution + fillPool((bytes |= 0)) + return pool.subarray(poolOffset - bytes, poolOffset) +} + +let customRandom = (alphabet, defaultSize, getRandom) => { + // First, a bitmask is necessary to generate the ID. The bitmask makes bytes + // values closer to the alphabet size. The bitmask calculates the closest + // `2^31 - 1` number, which exceeds the alphabet size. + // For example, the bitmask for the alphabet size 30 is 31 (00011111). + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + // Though, the bitmask solution is not perfect since the bytes exceeding + // the alphabet size are refused. Therefore, to reliably generate the ID, + // the random bytes redundancy has to be satisfied. + + // Note: every hardware random generator call is performance expensive, + // because the system call for entropy collection takes a lot of time. + // So, to avoid additional system calls, extra bytes are requested in advance. + + // Next, a step determines how many random bytes to generate. + // The number of random bytes gets decided upon the ID size, mask, + // alphabet size, and magic number 1.6 (using 1.6 peaks at performance + // according to benchmarks). + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + + return (size = defaultSize) => { + let id = '' + while (true) { + let bytes = getRandom(step) + // A compact alternative for `for (let i = 0; i < step; i++)`. + let i = step + while (i--) { + // Adding `|| ''` refuses a random byte that exceeds the alphabet size. + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + } + } +} + +let customAlphabet = (alphabet, size = 21) => + customRandom(alphabet, size, random) + +let nanoid = (size = 21) => { + // `|=` convert `size` to number to prevent `valueOf` abusing and pool pollution + fillPool((size |= 0)) + let id = '' + // We are reading directly from the random pool to avoid creating new array + for (let i = poolOffset - size; i < poolOffset; i++) { + // It is incorrect to use bytes exceeding the alphabet size. + // The following mask reduces the random byte in the 0-255 value + // range to the 0-63 value range. Therefore, adding hacks, such + // as empty string fallback or magic numbers, is unneccessary because + // the bitmask trims bytes down to the alphabet size. + id += urlAlphabet[pool[i] & 63] + } + return id +} + +module.exports = { nanoid, customAlphabet, customRandom, urlAlphabet, random } diff --git a/node_modules/nanoid/index.d.cts b/node_modules/nanoid/index.d.cts new file mode 100644 index 0000000..3e111a3 --- /dev/null +++ b/node_modules/nanoid/index.d.cts @@ -0,0 +1,91 @@ +/** + * Generate secure URL-friendly unique ID. + * + * By default, the ID will have 21 symbols to have a collision probability + * similar to UUID v4. + * + * ```js + * import { nanoid } from 'nanoid' + * model.id = nanoid() //=> "Uakgb_J5m9g-0JDMbcJqL" + * ``` + * + * @param size Size of the ID. The default size is 21. + * @returns A random string. + */ +export function nanoid(size?: number): string + +/** + * Generate secure unique ID with custom alphabet. + * + * Alphabet must contain 256 symbols or less. Otherwise, the generator + * will not be secure. + * + * @param alphabet Alphabet used to generate the ID. + * @param defaultSize Size of the ID. The default size is 21. + * @returns A random string generator. + * + * ```js + * const { customAlphabet } = require('nanoid') + * const nanoid = customAlphabet('0123456789абвгдеё', 5) + * nanoid() //=> "8ё56а" + * ``` + */ +export function customAlphabet( + alphabet: string, + defaultSize?: number +): (size?: number) => string + +/** + * Generate unique ID with custom random generator and alphabet. + * + * Alphabet must contain 256 symbols or less. Otherwise, the generator + * will not be secure. + * + * ```js + * import { customRandom } from 'nanoid/format' + * + * const nanoid = customRandom('abcdef', 5, size => { + * const random = [] + * for (let i = 0; i < size; i++) { + * random.push(randomByte()) + * } + * return random + * }) + * + * nanoid() //=> "fbaef" + * ``` + * + * @param alphabet Alphabet used to generate a random string. + * @param size Size of the random string. + * @param random A random bytes generator. + * @returns A random string generator. + */ +export function customRandom( + alphabet: string, + size: number, + random: (bytes: number) => Uint8Array +): () => string + +/** + * URL safe symbols. + * + * ```js + * import { urlAlphabet } from 'nanoid' + * const nanoid = customAlphabet(urlAlphabet, 10) + * nanoid() //=> "Uakgb_J5m9" + * ``` + */ +export const urlAlphabet: string + +/** + * Generate an array of random bytes collected from hardware noise. + * + * ```js + * import { customRandom, random } from 'nanoid' + * const nanoid = customRandom("abcdef", 5, random) + * ``` + * + * @param bytes Size of the array. + * @returns An array of random bytes. + */ +export function random(bytes: number): Uint8Array diff --git a/node_modules/nanoid/index.d.ts b/node_modules/nanoid/index.d.ts new file mode 100644 index 0000000..3e111a3 --- /dev/null +++ b/node_modules/nanoid/index.d.ts @@ -0,0 +1,91 @@ +/** + * Generate secure URL-friendly unique ID. + * + * By default, the ID will have 21 symbols to have a collision probability + * similar to UUID v4. + * + * ```js + * import { nanoid } from 'nanoid' + * model.id = nanoid() //=> "Uakgb_J5m9g-0JDMbcJqL" + * ``` + * + * @param size Size of the ID. The default size is 21. + * @returns A random string. + */ +export function nanoid(size?: number): string + +/** + * Generate secure unique ID with custom alphabet. + * + * Alphabet must contain 256 symbols or less. Otherwise, the generator + * will not be secure. + * + * @param alphabet Alphabet used to generate the ID. + * @param defaultSize Size of the ID. The default size is 21. + * @returns A random string generator. + * + * ```js + * const { customAlphabet } = require('nanoid') + * const nanoid = customAlphabet('0123456789абвгдеё', 5) + * nanoid() //=> "8ё56а" + * ``` + */ +export function customAlphabet( + alphabet: string, + defaultSize?: number +): (size?: number) => string + +/** + * Generate unique ID with custom random generator and alphabet. + * + * Alphabet must contain 256 symbols or less. Otherwise, the generator + * will not be secure. + * + * ```js + * import { customRandom } from 'nanoid/format' + * + * const nanoid = customRandom('abcdef', 5, size => { + * const random = [] + * for (let i = 0; i < size; i++) { + * random.push(randomByte()) + * } + * return random + * }) + * + * nanoid() //=> "fbaef" + * ``` + * + * @param alphabet Alphabet used to generate a random string. + * @param size Size of the random string. + * @param random A random bytes generator. + * @returns A random string generator. + */ +export function customRandom( + alphabet: string, + size: number, + random: (bytes: number) => Uint8Array +): () => string + +/** + * URL safe symbols. + * + * ```js + * import { urlAlphabet } from 'nanoid' + * const nanoid = customAlphabet(urlAlphabet, 10) + * nanoid() //=> "Uakgb_J5m9" + * ``` + */ +export const urlAlphabet: string + +/** + * Generate an array of random bytes collected from hardware noise. + * + * ```js + * import { customRandom, random } from 'nanoid' + * const nanoid = customRandom("abcdef", 5, random) + * ``` + * + * @param bytes Size of the array. + * @returns An array of random bytes. + */ +export function random(bytes: number): Uint8Array diff --git a/node_modules/nanoid/index.js b/node_modules/nanoid/index.js new file mode 100644 index 0000000..9bc909d --- /dev/null +++ b/node_modules/nanoid/index.js @@ -0,0 +1,45 @@ +import crypto from 'crypto' +import { urlAlphabet } from './url-alphabet/index.js' +const POOL_SIZE_MULTIPLIER = 128 +let pool, poolOffset +let fillPool = bytes => { + if (!pool || pool.length < bytes) { + pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER) + crypto.randomFillSync(pool) + poolOffset = 0 + } else if (poolOffset + bytes > pool.length) { + crypto.randomFillSync(pool) + poolOffset = 0 + } + poolOffset += bytes +} +let random = bytes => { + fillPool((bytes |= 0)) + return pool.subarray(poolOffset - bytes, poolOffset) +} +let customRandom = (alphabet, defaultSize, getRandom) => { + let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1 + let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length) + return (size = defaultSize) => { + let id = '' + while (true) { + let bytes = getRandom(step) + let i = step + while (i--) { + id += alphabet[bytes[i] & mask] || '' + if (id.length === size) return id + } + } + } +} +let customAlphabet = (alphabet, size = 21) => + customRandom(alphabet, size, random) +let nanoid = (size = 21) => { + fillPool((size |= 0)) + let id = '' + for (let i = poolOffset - size; i < poolOffset; i++) { + id += urlAlphabet[pool[i] & 63] + } + return id +} +export { nanoid, customAlphabet, customRandom, urlAlphabet, random } diff --git a/node_modules/nanoid/nanoid.js b/node_modules/nanoid/nanoid.js new file mode 100644 index 0000000..ec242ea --- /dev/null +++ b/node_modules/nanoid/nanoid.js @@ -0,0 +1 @@ +export let nanoid=(t=21)=>crypto.getRandomValues(new Uint8Array(t)).reduce(((t,e)=>t+=(e&=63)<36?e.toString(36):e<62?(e-26).toString(36).toUpperCase():e<63?"_":"-"),""); \ No newline at end of file diff --git a/node_modules/nanoid/non-secure/index.cjs b/node_modules/nanoid/non-secure/index.cjs new file mode 100644 index 0000000..d51fcb6 --- /dev/null +++ b/node_modules/nanoid/non-secure/index.cjs @@ -0,0 +1,34 @@ +// This alphabet uses `A-Za-z0-9_-` symbols. +// The order of characters is optimized for better gzip and brotli compression. +// References to the same file (works both for gzip and brotli): +// `'use`, `andom`, and `rict'` +// References to the brotli default dictionary: +// `-26T`, `1983`, `40px`, `75px`, `bush`, `jack`, `mind`, `very`, and `wolf` +let urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' + +let customAlphabet = (alphabet, defaultSize = 21) => { + return (size = defaultSize) => { + let id = '' + // A compact alternative for `for (var i = 0; i < step; i++)`. + let i = size | 0 + while (i--) { + // `| 0` is more compact and faster than `Math.floor()`. + id += alphabet[(Math.random() * alphabet.length) | 0] + } + return id + } +} + +let nanoid = (size = 21) => { + let id = '' + // A compact alternative for `for (var i = 0; i < step; i++)`. + let i = size | 0 + while (i--) { + // `| 0` is more compact and faster than `Math.floor()`. + id += urlAlphabet[(Math.random() * 64) | 0] + } + return id +} + +module.exports = { nanoid, customAlphabet } diff --git a/node_modules/nanoid/non-secure/index.d.ts b/node_modules/nanoid/non-secure/index.d.ts new file mode 100644 index 0000000..4965322 --- /dev/null +++ b/node_modules/nanoid/non-secure/index.d.ts @@ -0,0 +1,33 @@ +/** + * Generate URL-friendly unique ID. This method uses the non-secure + * predictable random generator with bigger collision probability. + * + * ```js + * import { nanoid } from 'nanoid/non-secure' + * model.id = nanoid() //=> "Uakgb_J5m9g-0JDMbcJqL" + * ``` + * + * @param size Size of the ID. The default size is 21. + * @returns A random string. + */ +export function nanoid(size?: number): string + +/** + * Generate a unique ID based on a custom alphabet. + * This method uses the non-secure predictable random generator + * with bigger collision probability. + * + * @param alphabet Alphabet used to generate the ID. + * @param defaultSize Size of the ID. The default size is 21. + * @returns A random string generator. + * + * ```js + * import { customAlphabet } from 'nanoid/non-secure' + * const nanoid = customAlphabet('0123456789абвгдеё', 5) + * model.id = //=> "8ё56а" + * ``` + */ +export function customAlphabet( + alphabet: string, + defaultSize?: number +): (size?: number) => string diff --git a/node_modules/nanoid/non-secure/index.js b/node_modules/nanoid/non-secure/index.js new file mode 100644 index 0000000..2ea5827 --- /dev/null +++ b/node_modules/nanoid/non-secure/index.js @@ -0,0 +1,21 @@ +let urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' +let customAlphabet = (alphabet, defaultSize = 21) => { + return (size = defaultSize) => { + let id = '' + let i = size | 0 + while (i--) { + id += alphabet[(Math.random() * alphabet.length) | 0] + } + return id + } +} +let nanoid = (size = 21) => { + let id = '' + let i = size | 0 + while (i--) { + id += urlAlphabet[(Math.random() * 64) | 0] + } + return id +} +export { nanoid, customAlphabet } diff --git a/node_modules/nanoid/non-secure/package.json b/node_modules/nanoid/non-secure/package.json new file mode 100644 index 0000000..9930d6a --- /dev/null +++ b/node_modules/nanoid/non-secure/package.json @@ -0,0 +1,6 @@ +{ + "type": "module", + "main": "index.cjs", + "module": "index.js", + "react-native": "index.js" +} \ No newline at end of file diff --git a/node_modules/nanoid/package.json b/node_modules/nanoid/package.json new file mode 100644 index 0000000..a3d3f44 --- /dev/null +++ b/node_modules/nanoid/package.json @@ -0,0 +1,89 @@ +{ + "name": "nanoid", + "version": "3.3.11", + "description": "A tiny (116 bytes), secure URL-friendly unique string ID generator", + "keywords": [ + "uuid", + "random", + "id", + "url" + ], + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "author": "Andrey Sitnik ", + "license": "MIT", + "repository": "ai/nanoid", + "browser": { + "./index.js": "./index.browser.js", + "./async/index.js": "./async/index.browser.js", + "./async/index.cjs": "./async/index.browser.cjs", + "./index.cjs": "./index.browser.cjs" + }, + "react-native": "index.js", + "bin": "./bin/nanoid.cjs", + "sideEffects": false, + "types": "./index.d.ts", + "type": "module", + "main": "index.cjs", + "module": "index.js", + "exports": { + ".": { + "react-native": "./index.browser.js", + "browser": "./index.browser.js", + "require": { + "types": "./index.d.cts", + "default": "./index.cjs" + }, + "import": { + "types": "./index.d.ts", + "default": "./index.js" + }, + "default": "./index.js" + }, + "./package.json": "./package.json", + "./async/package.json": "./async/package.json", + "./async": { + "browser": "./async/index.browser.js", + "require": { + "types": "./index.d.cts", + "default": "./async/index.cjs" + }, + "import": { + "types": "./index.d.ts", + "default": "./async/index.js" + }, + "default": "./async/index.js" + }, + "./non-secure/package.json": "./non-secure/package.json", + "./non-secure": { + "require": { + "types": "./index.d.cts", + "default": "./non-secure/index.cjs" + }, + "import": { + "types": "./index.d.ts", + "default": "./non-secure/index.js" + }, + "default": "./non-secure/index.js" + }, + "./url-alphabet/package.json": "./url-alphabet/package.json", + "./url-alphabet": { + "require": { + "types": "./index.d.cts", + "default": "./url-alphabet/index.cjs" + }, + "import": { + "types": "./index.d.ts", + "default": "./url-alphabet/index.js" + }, + "default": "./url-alphabet/index.js" + } + } +} diff --git a/node_modules/nanoid/url-alphabet/index.cjs b/node_modules/nanoid/url-alphabet/index.cjs new file mode 100644 index 0000000..a332f0b --- /dev/null +++ b/node_modules/nanoid/url-alphabet/index.cjs @@ -0,0 +1,7 @@ +// This alphabet uses `A-Za-z0-9_-` symbols. +// The order of characters is optimized for better gzip and brotli compression. +// Same as in non-secure/index.js +let urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' + +module.exports = { urlAlphabet } diff --git a/node_modules/nanoid/url-alphabet/index.js b/node_modules/nanoid/url-alphabet/index.js new file mode 100644 index 0000000..c2782e5 --- /dev/null +++ b/node_modules/nanoid/url-alphabet/index.js @@ -0,0 +1,3 @@ +let urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' +export { urlAlphabet } diff --git a/node_modules/nanoid/url-alphabet/package.json b/node_modules/nanoid/url-alphabet/package.json new file mode 100644 index 0000000..9930d6a --- /dev/null +++ b/node_modules/nanoid/url-alphabet/package.json @@ -0,0 +1,6 @@ +{ + "type": "module", + "main": "index.cjs", + "module": "index.js", + "react-native": "index.js" +} \ No newline at end of file diff --git a/node_modules/node-hex/LICENSE b/node_modules/node-hex/LICENSE new file mode 100644 index 0000000..5c57da6 --- /dev/null +++ b/node_modules/node-hex/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Gabriel Llamas + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/node-hex/README.md b/node_modules/node-hex/README.md new file mode 100644 index 0000000..41c3150 --- /dev/null +++ b/node_modules/node-hex/README.md @@ -0,0 +1,37 @@ +node-hex +=== + +> forked from https://github.com/gagle/node-hex, return hex string instead of print to stdout + +#### Pretty-prints a Buffer #### + +[![npm][npm-image]][npm-url] + +___module_(buffer) : undefined__ +Prints the Buffer. No configuration, just give it a Buffer. + +```javascript +var hex = require('hex'); + +console.log(hex(buffer)); +``` + +``` +Offset 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F + +000000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +000010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +000020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +000030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +000040 54 41 47 42 72 65 61 6B 69 6E 67 20 54 68 65 20 TAGBreaking The +000050 4C 61 77 00 00 00 00 00 00 00 00 00 00 00 00 00 Law............. +000060 00 4A 75 64 61 73 20 50 72 69 65 73 74 00 00 00 .Judas Priest... +000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 ...............B +000080 72 69 74 69 73 68 20 53 74 65 65 6C 00 00 00 00 ritish Steel.... +000090 00 00 00 00 00 00 00 00 00 00 00 00 00 31 39 38 .............198 +0000A0 30 47 72 65 61 74 20 73 6F 6E 67 21 00 00 00 00 0Great song!.... +0000B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 89 ..............3. +``` + +[npm-image]: http://img.shields.io/npm/v/node-hex.svg?style=flat +[npm-url]: https://npmjs.org/package/node-hex diff --git a/node_modules/node-hex/lib/index.js b/node_modules/node-hex/lib/index.js new file mode 100644 index 0000000..67c5987 --- /dev/null +++ b/node_modules/node-hex/lib/index.js @@ -0,0 +1,53 @@ +'use strict'; + +var zero = function (n, max) { + n = n.toString(16).toUpperCase(); + while (n.length < max) { + n = '0' + n; + } + return n; +}; + +module.exports = function (buffer) { + var rows = Math.ceil(buffer.length / 16); + var last = buffer.length % 16 || 16; + var offsetLength = buffer.length.toString(16).length; + if (offsetLength < 6) offsetLength = 6; + + var i; + var str = ''; + + var b = 0; + var lastBytes; + var lastSpaces; + var v; + + for (i = 0; i < rows; i++) { + str += '\u001b[36m' + zero(b, offsetLength) + '\u001b[0m '; + lastBytes = i === rows - 1 ? last : 16; + lastSpaces = 16 - lastBytes; + + var j; + for (j = 0; j < lastBytes; j++) { + str += ' ' + zero(buffer[b], 2); + b++; + } + + for (j = 0; j < lastSpaces; j++) { + str += ' '; + } + + b -= lastBytes; + str += ' '; + + for (j = 0; j < lastBytes; j++) { + v = buffer[b]; + str += (v > 31 && v < 127) || v > 159 ? String.fromCharCode(v) : '.'; + b++; + } + + str += '\n'; + } + + return str; +}; diff --git a/node_modules/node-hex/package.json b/node_modules/node-hex/package.json new file mode 100644 index 0000000..bf4ca0c --- /dev/null +++ b/node_modules/node-hex/package.json @@ -0,0 +1,22 @@ +{ + "name": "node-hex", + "version": "1.0.1", + "description": "Pretty-prints a Buffer", + "keywords": [ + "hex", + "print", + "buffer" + ], + "repository": "git://github.com/node-modules/node-hex.git", + "engines": { + "node": ">=8.0.0" + }, + "license": "MIT", + "main": "lib/index.js", + "files": [ + "lib" + ], + "scripts": { + "test": "node test.js" + } +} diff --git a/node_modules/object-assign/index.js b/node_modules/object-assign/index.js new file mode 100644 index 0000000..0930cf8 --- /dev/null +++ b/node_modules/object-assign/index.js @@ -0,0 +1,90 @@ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +'use strict'; +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; diff --git a/node_modules/object-assign/license b/node_modules/object-assign/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/node_modules/object-assign/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/object-assign/package.json b/node_modules/object-assign/package.json new file mode 100644 index 0000000..503eb1e --- /dev/null +++ b/node_modules/object-assign/package.json @@ -0,0 +1,42 @@ +{ + "name": "object-assign", + "version": "4.1.1", + "description": "ES2015 `Object.assign()` ponyfill", + "license": "MIT", + "repository": "sindresorhus/object-assign", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "xo && ava", + "bench": "matcha bench.js" + }, + "files": [ + "index.js" + ], + "keywords": [ + "object", + "assign", + "extend", + "properties", + "es2015", + "ecmascript", + "harmony", + "ponyfill", + "prollyfill", + "polyfill", + "shim", + "browser" + ], + "devDependencies": { + "ava": "^0.16.0", + "lodash": "^4.16.4", + "matcha": "^0.7.0", + "xo": "^0.16.0" + } +} diff --git a/node_modules/object-assign/readme.md b/node_modules/object-assign/readme.md new file mode 100644 index 0000000..1be09d3 --- /dev/null +++ b/node_modules/object-assign/readme.md @@ -0,0 +1,61 @@ +# object-assign [![Build Status](https://travis-ci.org/sindresorhus/object-assign.svg?branch=master)](https://travis-ci.org/sindresorhus/object-assign) + +> ES2015 [`Object.assign()`](http://www.2ality.com/2014/01/object-assign.html) [ponyfill](https://ponyfill.com) + + +## Use the built-in + +Node.js 4 and up, as well as every evergreen browser (Chrome, Edge, Firefox, Opera, Safari), +support `Object.assign()` :tada:. If you target only those environments, then by all +means, use `Object.assign()` instead of this package. + + +## Install + +``` +$ npm install --save object-assign +``` + + +## Usage + +```js +const objectAssign = require('object-assign'); + +objectAssign({foo: 0}, {bar: 1}); +//=> {foo: 0, bar: 1} + +// multiple sources +objectAssign({foo: 0}, {bar: 1}, {baz: 2}); +//=> {foo: 0, bar: 1, baz: 2} + +// overwrites equal keys +objectAssign({foo: 0}, {foo: 1}, {foo: 2}); +//=> {foo: 2} + +// ignores null and undefined sources +objectAssign({foo: 0}, null, {bar: 1}, undefined); +//=> {foo: 0, bar: 1} +``` + + +## API + +### objectAssign(target, [source, ...]) + +Assigns enumerable own properties of `source` objects to the `target` object and returns the `target` object. Additional `source` objects will overwrite previous ones. + + +## Resources + +- [ES2015 spec - Object.assign](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign) + + +## Related + +- [deep-assign](https://github.com/sindresorhus/deep-assign) - Recursive `Object.assign()` + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/node_modules/object-inspect/.eslintrc b/node_modules/object-inspect/.eslintrc new file mode 100644 index 0000000..21f9039 --- /dev/null +++ b/node_modules/object-inspect/.eslintrc @@ -0,0 +1,53 @@ +{ + "root": true, + "extends": "@ljharb", + "rules": { + "complexity": 0, + "func-style": [2, "declaration"], + "indent": [2, 4], + "max-lines": 1, + "max-lines-per-function": 1, + "max-params": [2, 4], + "max-statements": 0, + "max-statements-per-line": [2, { "max": 2 }], + "no-magic-numbers": 0, + "no-param-reassign": 1, + "strict": 0, // TODO + }, + "overrides": [ + { + "files": ["test/**", "test-*", "example/**"], + "extends": "@ljharb/eslint-config/tests", + "rules": { + "id-length": 0, + }, + }, + { + "files": ["example/**"], + "rules": { + "no-console": 0, + }, + }, + { + "files": ["test/browser/**"], + "env": { + "browser": true, + }, + }, + { + "files": ["test/bigint*"], + "rules": { + "new-cap": [2, { "capIsNewExceptions": ["BigInt"] }], + }, + }, + { + "files": "index.js", + "globals": { + "HTMLElement": false, + }, + "rules": { + "no-use-before-define": 1, + }, + }, + ], +} diff --git a/node_modules/object-inspect/.github/FUNDING.yml b/node_modules/object-inspect/.github/FUNDING.yml new file mode 100644 index 0000000..730276b --- /dev/null +++ b/node_modules/object-inspect/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/object-inspect +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/object-inspect/.nycrc b/node_modules/object-inspect/.nycrc new file mode 100644 index 0000000..58a5db7 --- /dev/null +++ b/node_modules/object-inspect/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "instrumentation": false, + "sourceMap": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "example", + "test", + "test-core-js.js" + ] +} diff --git a/node_modules/object-inspect/CHANGELOG.md b/node_modules/object-inspect/CHANGELOG.md new file mode 100644 index 0000000..bdf9002 --- /dev/null +++ b/node_modules/object-inspect/CHANGELOG.md @@ -0,0 +1,424 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.13.4](https://github.com/inspect-js/object-inspect/compare/v1.13.3...v1.13.4) - 2025-02-04 + +### Commits + +- [Fix] avoid being fooled by a `Symbol.toStringTag` [`fa5870d`](https://github.com/inspect-js/object-inspect/commit/fa5870da468a525d2f20193700f70752f506cbf7) +- [Tests] fix tests in node v6.0 - v6.4 [`2abfe1b`](https://github.com/inspect-js/object-inspect/commit/2abfe1bc3c69f9293c07c5cd65a9d7d87a628b84) +- [Dev Deps] update `es-value-fixtures`, `for-each`, `has-symbols` [`3edfb01`](https://github.com/inspect-js/object-inspect/commit/3edfb01cc8cce220fba0dfdfe2dc8bc955758cdd) + +## [v1.13.3](https://github.com/inspect-js/object-inspect/compare/v1.13.2...v1.13.3) - 2024-11-09 + +### Commits + +- [actions] split out node 10-20, and 20+ [`44395a8`](https://github.com/inspect-js/object-inspect/commit/44395a8fc1deda6718a5e125e86b9ffcaa1c7580) +- [Fix] `quoteStyle`: properly escape only the containing quotes [`5137f8f`](https://github.com/inspect-js/object-inspect/commit/5137f8f7bea69a7fc671bb683fd35f244f38fc52) +- [Refactor] clean up `quoteStyle` code [`450680c`](https://github.com/inspect-js/object-inspect/commit/450680cd50de4e689ee3b8e1d6db3a1bcf3fc18c) +- [Tests] add `quoteStyle` escaping tests [`e997c59`](https://github.com/inspect-js/object-inspect/commit/e997c595aeaea84fd98ca35d7e1c3b5ab3ae26e0) +- [Dev Deps] update `auto-changelog`, `es-value-fixtures`, `tape` [`d5a469c`](https://github.com/inspect-js/object-inspect/commit/d5a469c99ec07ccaeafc36ac4b36a93285086d48) +- [Tests] replace `aud` with `npm audit` [`fb7815f`](https://github.com/inspect-js/object-inspect/commit/fb7815f9b72cae277a04f65bbb0543f85b88be62) +- [Dev Deps] update `mock-property` [`11c817b`](https://github.com/inspect-js/object-inspect/commit/11c817bf10392aa017755962ba6bc89d731359ee) + +## [v1.13.2](https://github.com/inspect-js/object-inspect/compare/v1.13.1...v1.13.2) - 2024-06-21 + +### Commits + +- [readme] update badges [`8a51e6b`](https://github.com/inspect-js/object-inspect/commit/8a51e6bedaf389ec40cc4659e9df53e8543d176e) +- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`ef05f58`](https://github.com/inspect-js/object-inspect/commit/ef05f58c9761a41416ab907299bf0fa79517014b) +- [Dev Deps] update `error-cause`, `has-tostringtag`, `tape` [`c0c6c26`](https://github.com/inspect-js/object-inspect/commit/c0c6c26c44cee6671f7c5d43d2b91d27c5c00d90) +- [Fix] Don't throw when `global` is not defined [`d4d0965`](https://github.com/inspect-js/object-inspect/commit/d4d096570f7dbd0e03266a96de11d05eb7b63e0f) +- [meta] add missing `engines.node` [`17a352a`](https://github.com/inspect-js/object-inspect/commit/17a352af6fe1ba6b70a19081674231eb1a50c940) +- [Dev Deps] update `globalthis` [`9c08884`](https://github.com/inspect-js/object-inspect/commit/9c08884aa662a149e2f11403f413927736b97da7) +- [Dev Deps] update `error-cause` [`6af352d`](https://github.com/inspect-js/object-inspect/commit/6af352d7c3929a4cc4c55768c27bf547a5e900f4) +- [Dev Deps] update `npmignore` [`94e617d`](https://github.com/inspect-js/object-inspect/commit/94e617d38831722562fa73dff4c895746861d267) +- [Dev Deps] update `mock-property` [`2ac24d7`](https://github.com/inspect-js/object-inspect/commit/2ac24d7e58cd388ad093c33249e413e05bbfd6c3) +- [Dev Deps] update `tape` [`46125e5`](https://github.com/inspect-js/object-inspect/commit/46125e58f1d1dcfb170ed3d1ea69da550ea8d77b) + +## [v1.13.1](https://github.com/inspect-js/object-inspect/compare/v1.13.0...v1.13.1) - 2023-10-19 + +### Commits + +- [Fix] in IE 8, global can !== window despite them being prototypes of each other [`30d0859`](https://github.com/inspect-js/object-inspect/commit/30d0859dc4606cf75c2410edcd5d5c6355f8d372) + +## [v1.13.0](https://github.com/inspect-js/object-inspect/compare/v1.12.3...v1.13.0) - 2023-10-14 + +### Commits + +- [New] add special handling for the global object [`431bab2`](https://github.com/inspect-js/object-inspect/commit/431bab21a490ee51d35395966a504501e8c685da) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`fd4f619`](https://github.com/inspect-js/object-inspect/commit/fd4f6193562b4b0e95dcf5c0201b4e8cbbc4f58d) +- [Dev Deps] update `mock-property`, `tape` [`b453f6c`](https://github.com/inspect-js/object-inspect/commit/b453f6ceeebf8a1b738a1029754092e0367a4134) +- [Dev Deps] update `error-cause` [`e8ffc57`](https://github.com/inspect-js/object-inspect/commit/e8ffc577d73b92bb6a4b00c44f14e3319e374888) +- [Dev Deps] update `tape` [`054b8b9`](https://github.com/inspect-js/object-inspect/commit/054b8b9b98633284cf989e582450ebfbbe53503c) +- [Dev Deps] temporarily remove `aud` due to breaking change in transitive deps [`2476845`](https://github.com/inspect-js/object-inspect/commit/2476845e0678dd290c541c81cd3dec8420782c52) +- [Dev Deps] pin `glob`, since v10.3.8+ requires a broken `jackspeak` [`383fa5e`](https://github.com/inspect-js/object-inspect/commit/383fa5eebc0afd705cc778a4b49d8e26452e49a8) +- [Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 [`68c244c`](https://github.com/inspect-js/object-inspect/commit/68c244c5174cdd877e5dcb8ee90aa3f44b2f25be) + +## [v1.12.3](https://github.com/inspect-js/object-inspect/compare/v1.12.2...v1.12.3) - 2023-01-12 + +### Commits + +- [Fix] in eg FF 24, collections lack forEach [`75fc226`](https://github.com/inspect-js/object-inspect/commit/75fc22673c82d45f28322b1946bb0eb41b672b7f) +- [actions] update rebase action to use reusable workflow [`250a277`](https://github.com/inspect-js/object-inspect/commit/250a277a095e9dacc029ab8454dcfc15de549dcd) +- [Dev Deps] update `aud`, `es-value-fixtures`, `tape` [`66a19b3`](https://github.com/inspect-js/object-inspect/commit/66a19b3209ccc3c5ef4b34c3cb0160e65d1ce9d5) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `error-cause` [`c43d332`](https://github.com/inspect-js/object-inspect/commit/c43d3324b48384a16fd3dc444e5fc589d785bef3) +- [Tests] add `@pkgjs/support` to `postlint` [`e2618d2`](https://github.com/inspect-js/object-inspect/commit/e2618d22a7a3fa361b6629b53c1752fddc9c4d80) + +## [v1.12.2](https://github.com/inspect-js/object-inspect/compare/v1.12.1...v1.12.2) - 2022-05-26 + +### Commits + +- [Fix] use `util.inspect` for a custom inspection symbol method [`e243bf2`](https://github.com/inspect-js/object-inspect/commit/e243bf2eda6c4403ac6f1146fddb14d12e9646c1) +- [meta] add support info [`ca20ba3`](https://github.com/inspect-js/object-inspect/commit/ca20ba35713c17068ca912a86c542f5e8acb656c) +- [Fix] ignore `cause` in node v16.9 and v16.10 where it has a bug [`86aa553`](https://github.com/inspect-js/object-inspect/commit/86aa553a4a455562c2c56f1540f0bf857b9d314b) + +## [v1.12.1](https://github.com/inspect-js/object-inspect/compare/v1.12.0...v1.12.1) - 2022-05-21 + +### Commits + +- [Tests] use `mock-property` [`4ec8893`](https://github.com/inspect-js/object-inspect/commit/4ec8893ea9bfd28065ca3638cf6762424bf44352) +- [meta] use `npmignore` to autogenerate an npmignore file [`07f868c`](https://github.com/inspect-js/object-inspect/commit/07f868c10bd25a9d18686528339bb749c211fc9a) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`b05244b`](https://github.com/inspect-js/object-inspect/commit/b05244b4f331e00c43b3151bc498041be77ccc91) +- [Dev Deps] update `@ljharb/eslint-config`, `error-cause`, `es-value-fixtures`, `functions-have-names`, `tape` [`d037398`](https://github.com/inspect-js/object-inspect/commit/d037398dcc5d531532e4c19c4a711ed677f579c1) +- [Fix] properly handle callable regexes in older engines [`848fe48`](https://github.com/inspect-js/object-inspect/commit/848fe48bd6dd0064ba781ee6f3c5e54a94144c37) + +## [v1.12.0](https://github.com/inspect-js/object-inspect/compare/v1.11.1...v1.12.0) - 2021-12-18 + +### Commits + +- [New] add `numericSeparator` boolean option [`2d2d537`](https://github.com/inspect-js/object-inspect/commit/2d2d537f5359a4300ce1c10241369f8024f89e11) +- [Robustness] cache more prototype methods [`191533d`](https://github.com/inspect-js/object-inspect/commit/191533da8aec98a05eadd73a5a6e979c9c8653e8) +- [New] ensure an Error’s `cause` is displayed [`53bc2ce`](https://github.com/inspect-js/object-inspect/commit/53bc2cee4e5a9cc4986f3cafa22c0685f340715e) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config` [`bc164b6`](https://github.com/inspect-js/object-inspect/commit/bc164b6e2e7d36b263970f16f54de63048b84a36) +- [Robustness] cache `RegExp.prototype.test` [`a314ab8`](https://github.com/inspect-js/object-inspect/commit/a314ab8271b905cbabc594c82914d2485a8daf12) +- [meta] fix auto-changelog settings [`5ed0983`](https://github.com/inspect-js/object-inspect/commit/5ed0983be72f73e32e2559997517a95525c7e20d) + +## [v1.11.1](https://github.com/inspect-js/object-inspect/compare/v1.11.0...v1.11.1) - 2021-12-05 + +### Commits + +- [meta] add `auto-changelog` [`7dbdd22`](https://github.com/inspect-js/object-inspect/commit/7dbdd228401d6025d8b7391476d88aee9ea9bbdf) +- [actions] reuse common workflows [`c8823bc`](https://github.com/inspect-js/object-inspect/commit/c8823bc0a8790729680709d45fb6e652432e91aa) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape` [`7532b12`](https://github.com/inspect-js/object-inspect/commit/7532b120598307497b712890f75af8056f6d37a6) +- [Refactor] use `has-tostringtag` to behave correctly in the presence of symbol shams [`94abb5d`](https://github.com/inspect-js/object-inspect/commit/94abb5d4e745bf33253942dea86b3e538d2ff6c6) +- [actions] update codecov uploader [`5ed5102`](https://github.com/inspect-js/object-inspect/commit/5ed51025267a00e53b1341357315490ac4eb0874) +- [Dev Deps] update `eslint`, `tape` [`37b2ad2`](https://github.com/inspect-js/object-inspect/commit/37b2ad26c08d94bfd01d5d07069a0b28ef4e2ad7) +- [meta] add `sideEffects` flag [`d341f90`](https://github.com/inspect-js/object-inspect/commit/d341f905ef8bffa6a694cda6ddc5ba343532cd4f) + +## [v1.11.0](https://github.com/inspect-js/object-inspect/compare/v1.10.3...v1.11.0) - 2021-07-12 + +### Commits + +- [New] `customInspect`: add `symbol` option, to mimic modern util.inspect behavior [`e973a6e`](https://github.com/inspect-js/object-inspect/commit/e973a6e21f8140c5837cf25e9d89bdde88dc3120) +- [Dev Deps] update `eslint` [`05f1cb3`](https://github.com/inspect-js/object-inspect/commit/05f1cb3cbcfe1f238e8b51cf9bc294305b7ed793) + +## [v1.10.3](https://github.com/inspect-js/object-inspect/compare/v1.10.2...v1.10.3) - 2021-05-07 + +### Commits + +- [Fix] handle core-js Symbol shams [`4acfc2c`](https://github.com/inspect-js/object-inspect/commit/4acfc2c4b503498759120eb517abad6d51c9c5d6) +- [readme] update badges [`95c323a`](https://github.com/inspect-js/object-inspect/commit/95c323ad909d6cbabb95dd6015c190ba6db9c1f2) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud` [`cb38f48`](https://github.com/inspect-js/object-inspect/commit/cb38f485de6ec7a95109b5a9bbd0a1deba2f6611) + +## [v1.10.2](https://github.com/inspect-js/object-inspect/compare/v1.10.1...v1.10.2) - 2021-04-17 + +### Commits + +- [Fix] use a robust check for a boxed Symbol [`87f12d6`](https://github.com/inspect-js/object-inspect/commit/87f12d6e69ce530be04659c81a4cd502943acac5) + +## [v1.10.1](https://github.com/inspect-js/object-inspect/compare/v1.10.0...v1.10.1) - 2021-04-17 + +### Commits + +- [Fix] use a robust check for a boxed bigint [`d5ca829`](https://github.com/inspect-js/object-inspect/commit/d5ca8298b6d2e5c7b9334a5b21b96ed95d225c91) + +## [v1.10.0](https://github.com/inspect-js/object-inspect/compare/v1.9.0...v1.10.0) - 2021-04-17 + +### Commits + +- [Tests] increase coverage [`d8abb8a`](https://github.com/inspect-js/object-inspect/commit/d8abb8a62c2f084919df994a433b346e0d87a227) +- [actions] use `node/install` instead of `node/run`; use `codecov` action [`4bfec2e`](https://github.com/inspect-js/object-inspect/commit/4bfec2e30aaef6ddef6cbb1448306f9f8b9520b7) +- [New] respect `Symbol.toStringTag` on objects [`799b58f`](https://github.com/inspect-js/object-inspect/commit/799b58f536a45e4484633a8e9daeb0330835f175) +- [Fix] do not allow Symbol.toStringTag to masquerade as builtins [`d6c5b37`](https://github.com/inspect-js/object-inspect/commit/d6c5b37d7e94427796b82432fb0c8964f033a6ab) +- [New] add `WeakRef` support [`b6d898e`](https://github.com/inspect-js/object-inspect/commit/b6d898ee21868c780a7ee66b28532b5b34ed7f09) +- [meta] do not publish github action workflow files [`918cdfc`](https://github.com/inspect-js/object-inspect/commit/918cdfc4b6fe83f559ff6ef04fe66201e3ff5cbd) +- [meta] create `FUNDING.yml` [`0bb5fc5`](https://github.com/inspect-js/object-inspect/commit/0bb5fc516dbcd2cd728bd89cee0b580acc5ce301) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`22c8dc0`](https://github.com/inspect-js/object-inspect/commit/22c8dc0cac113d70f4781e49a950070923a671be) +- [meta] use `prepublishOnly` script for npm 7+ [`e52ee09`](https://github.com/inspect-js/object-inspect/commit/e52ee09e8050b8dbac94ef57f786675567728223) +- [Dev Deps] update `eslint` [`7c4e6fd`](https://github.com/inspect-js/object-inspect/commit/7c4e6fdedcd27cc980e13c9ad834d05a96f3d40c) + +## [v1.9.0](https://github.com/inspect-js/object-inspect/compare/v1.8.0...v1.9.0) - 2020-11-30 + +### Commits + +- [Tests] migrate tests to Github Actions [`d262251`](https://github.com/inspect-js/object-inspect/commit/d262251e13e16d3490b5473672f6b6d6ff86675d) +- [New] add enumerable own Symbols to plain object output [`ee60c03`](https://github.com/inspect-js/object-inspect/commit/ee60c033088cff9d33baa71e59a362a541b48284) +- [Tests] add passing tests [`01ac3e4`](https://github.com/inspect-js/object-inspect/commit/01ac3e4b5a30f97875a63dc9b1416b3bd626afc9) +- [actions] add "Require Allow Edits" action [`c2d7746`](https://github.com/inspect-js/object-inspect/commit/c2d774680cde4ca4af332d84d4121b26f798ba9e) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `core-js` [`70058de`](https://github.com/inspect-js/object-inspect/commit/70058de1579fc54d1d15ed6c2dbe246637ce70ff) +- [Fix] hex characters in strings should be uppercased, to match node `assert` [`6ab8faa`](https://github.com/inspect-js/object-inspect/commit/6ab8faaa0abc08fe7a8e2afd8b39c6f1f0e00113) +- [Tests] run `nyc` on all tests [`4c47372`](https://github.com/inspect-js/object-inspect/commit/4c473727879ddc8e28b599202551ddaaf07b6210) +- [Tests] node 0.8 has an unpredictable property order; fix `groups` test by removing property [`f192069`](https://github.com/inspect-js/object-inspect/commit/f192069a978a3b60e6f0e0d45ac7df260ab9a778) +- [New] add enumerable properties to Function inspect result, per node’s `assert` [`fd38e1b`](https://github.com/inspect-js/object-inspect/commit/fd38e1bc3e2a1dc82091ce3e021917462eee64fc) +- [Tests] fix tests for node < 10, due to regex match `groups` [`2ac6462`](https://github.com/inspect-js/object-inspect/commit/2ac6462cc4f72eaa0b63a8cfee9aabe3008b2330) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config` [`44b59e2`](https://github.com/inspect-js/object-inspect/commit/44b59e2676a7f825ef530dfd19dafb599e3b9456) +- [Robustness] cache `Symbol.prototype.toString` [`f3c2074`](https://github.com/inspect-js/object-inspect/commit/f3c2074d8f32faf8292587c07c9678ea931703dd) +- [Dev Deps] update `eslint` [`9411294`](https://github.com/inspect-js/object-inspect/commit/94112944b9245e3302e25453277876402d207e7f) +- [meta] `require-allow-edits` no longer requires an explicit github token [`36c0220`](https://github.com/inspect-js/object-inspect/commit/36c02205de3c2b0e84d53777c5c9fd54a36c48ab) +- [actions] update rebase checkout action to v2 [`55a39a6`](https://github.com/inspect-js/object-inspect/commit/55a39a64e944f19c6a7d8efddf3df27700f20d14) +- [actions] switch Automatic Rebase workflow to `pull_request_target` event [`f59fd3c`](https://github.com/inspect-js/object-inspect/commit/f59fd3cf406c3a7c7ece140904a80bbc6bacfcca) +- [Dev Deps] update `eslint` [`a492bec`](https://github.com/inspect-js/object-inspect/commit/a492becec644b0155c9c4bc1caf6f9fac11fb2c7) + +## [v1.8.0](https://github.com/inspect-js/object-inspect/compare/v1.7.0...v1.8.0) - 2020-06-18 + +### Fixed + +- [New] add `indent` option [`#27`](https://github.com/inspect-js/object-inspect/issues/27) + +### Commits + +- [Tests] add codecov [`4324cbb`](https://github.com/inspect-js/object-inspect/commit/4324cbb1a2bd7710822a4151ff373570db22453e) +- [New] add `maxStringLength` option [`b3995cb`](https://github.com/inspect-js/object-inspect/commit/b3995cb71e15b5ee127a3094c43994df9d973502) +- [New] add `customInspect` option, to disable custom inspect methods [`28b9179`](https://github.com/inspect-js/object-inspect/commit/28b9179ee802bb3b90810100c11637db90c2fb6d) +- [Tests] add Date and RegExp tests [`3b28eca`](https://github.com/inspect-js/object-inspect/commit/3b28eca57b0367aeadffac604ea09e8bdae7d97b) +- [actions] add automatic rebasing / merge commit blocking [`0d9c6c0`](https://github.com/inspect-js/object-inspect/commit/0d9c6c044e83475ff0bfffb9d35b149834c83a2e) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js`, `tape`; add `aud` [`7c204f2`](https://github.com/inspect-js/object-inspect/commit/7c204f22b9e41bc97147f4d32d4cb045b17769a6) +- [readme] fix repo URLs, remove testling [`34ca9a0`](https://github.com/inspect-js/object-inspect/commit/34ca9a0dabfe75bd311f806a326fadad029909a3) +- [Fix] when truncating a deep array, note it as `[Array]` instead of just `[Object]` [`f74c82d`](https://github.com/inspect-js/object-inspect/commit/f74c82dd0b35386445510deb250f34c41be3ec0e) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`1a8a5ea`](https://github.com/inspect-js/object-inspect/commit/1a8a5ea069ea2bee89d77caedad83ffa23d35711) +- [Fix] do not be fooled by a function’s own `toString` method [`7cb5c65`](https://github.com/inspect-js/object-inspect/commit/7cb5c657a976f94715c19c10556a30f15bb7d5d7) +- [patch] indicate explicitly that anon functions are anonymous, to match node [`81ebdd4`](https://github.com/inspect-js/object-inspect/commit/81ebdd4215005144074bbdff3f6bafa01407910a) +- [Dev Deps] loosen the `core-js` dep [`e7472e8`](https://github.com/inspect-js/object-inspect/commit/e7472e8e242117670560bd995830c2a4d12080f5) +- [Dev Deps] update `tape` [`699827e`](https://github.com/inspect-js/object-inspect/commit/699827e6b37258b5203c33c78c009bf4b0e6a66d) +- [meta] add `safe-publish-latest` [`c5d2868`](https://github.com/inspect-js/object-inspect/commit/c5d2868d6eb33c472f37a20f89ceef2787046088) +- [Dev Deps] update `@ljharb/eslint-config` [`9199501`](https://github.com/inspect-js/object-inspect/commit/919950195d486114ccebacbdf9d74d7f382693b0) + +## [v1.7.0](https://github.com/inspect-js/object-inspect/compare/v1.6.0...v1.7.0) - 2019-11-10 + +### Commits + +- [Tests] use shared travis-ci configs [`19899ed`](https://github.com/inspect-js/object-inspect/commit/19899edbf31f4f8809acf745ce34ad1ce1bfa63b) +- [Tests] add linting [`a00f057`](https://github.com/inspect-js/object-inspect/commit/a00f057d917f66ea26dd37769c6b810ec4af97e8) +- [Tests] lint last file [`2698047`](https://github.com/inspect-js/object-inspect/commit/2698047b58af1e2e88061598ef37a75f228dddf6) +- [Tests] up to `node` `v12.7`, `v11.15`, `v10.16`, `v8.16`, `v6.17` [`589e87a`](https://github.com/inspect-js/object-inspect/commit/589e87a99cadcff4b600e6a303418e9d922836e8) +- [New] add support for `WeakMap` and `WeakSet` [`3ddb3e4`](https://github.com/inspect-js/object-inspect/commit/3ddb3e4e0c8287130c61a12e0ed9c104b1549306) +- [meta] clean up license so github can detect it properly [`27527bb`](https://github.com/inspect-js/object-inspect/commit/27527bb801520c9610c68cc3b55d6f20a2bee56d) +- [Tests] cover `util.inspect.custom` [`36d47b9`](https://github.com/inspect-js/object-inspect/commit/36d47b9c59056a57ef2f1491602c726359561800) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js`, `tape` [`b614eaa`](https://github.com/inspect-js/object-inspect/commit/b614eaac901da0e5c69151f534671f990a94cace) +- [Tests] fix coverage thresholds [`7b7b176`](https://github.com/inspect-js/object-inspect/commit/7b7b176e15f8bd6e8b2f261ff5a493c2fe78d9c2) +- [Tests] bigint tests now can run on unflagged node [`063af31`](https://github.com/inspect-js/object-inspect/commit/063af31ce9cd13c202e3b67c07ba06dc9b7c0f81) +- [Refactor] add early bailout to `isMap` and `isSet` checks [`fc51047`](https://github.com/inspect-js/object-inspect/commit/fc5104714a3671d37e225813db79470d6335683b) +- [meta] add `funding` field [`7f9953a`](https://github.com/inspect-js/object-inspect/commit/7f9953a113eec7b064a6393cf9f90ba15f1d131b) +- [Tests] Fix invalid strict-mode syntax with hexadecimal [`a8b5425`](https://github.com/inspect-js/object-inspect/commit/a8b542503b4af1599a275209a1a99f5fdedb1ead) +- [Dev Deps] update `@ljharb/eslint-config` [`98df157`](https://github.com/inspect-js/object-inspect/commit/98df1577314d9188a3fc3f17fdcf2fba697ae1bd) +- add copyright to LICENSE [`bb69fd0`](https://github.com/inspect-js/object-inspect/commit/bb69fd017a062d299e44da1f9b2c7dcd67f621e6) +- [Tests] use `npx aud` in `posttest` [`4838353`](https://github.com/inspect-js/object-inspect/commit/4838353593974cf7f905b9ef04c03c094f0cdbe2) +- [Tests] move `0.6` to allowed failures, because it won‘t build on travis [`1bff32a`](https://github.com/inspect-js/object-inspect/commit/1bff32aa52e8aea687f0856b28ba754b3e43ebf7) + +## [v1.6.0](https://github.com/inspect-js/object-inspect/compare/v1.5.0...v1.6.0) - 2018-05-02 + +### Commits + +- [New] add support for boxed BigInt primitives [`356c66a`](https://github.com/inspect-js/object-inspect/commit/356c66a410e7aece7162c8319880a5ef647beaa9) +- [Tests] up to `node` `v10.0`, `v9.11`, `v8.11`, `v6.14`, `v4.9` [`c77b65b`](https://github.com/inspect-js/object-inspect/commit/c77b65bba593811b906b9ec57561c5cba92e2db3) +- [New] Add support for upcoming `BigInt` [`1ac548e`](https://github.com/inspect-js/object-inspect/commit/1ac548e4b27e26466c28c9a5e63e5d4e0591c31f) +- [Tests] run bigint tests in CI with --harmony-bigint flag [`d31b738`](https://github.com/inspect-js/object-inspect/commit/d31b73831880254b5c6cf5691cda9a149fbc5f04) +- [Dev Deps] update `core-js`, `tape` [`ff9eff6`](https://github.com/inspect-js/object-inspect/commit/ff9eff67113341ee1aaf80c1c22d683f43bfbccf) +- [Docs] fix example to use `safer-buffer` [`48cae12`](https://github.com/inspect-js/object-inspect/commit/48cae12a73ec6cacc955175bc56bbe6aee6a211f) + +## [v1.5.0](https://github.com/inspect-js/object-inspect/compare/v1.4.1...v1.5.0) - 2017-12-25 + +### Commits + +- [New] add `quoteStyle` option [`f5a72d2`](https://github.com/inspect-js/object-inspect/commit/f5a72d26edb3959b048f74c056ca7100a6b091e4) +- [Tests] add more test coverage [`30ebe4e`](https://github.com/inspect-js/object-inspect/commit/30ebe4e1fa943b99ecbb85be7614256d536e2759) +- [Tests] require 0.6 to pass [`99a008c`](https://github.com/inspect-js/object-inspect/commit/99a008ccace189a60fd7da18bf00e32c9572b980) + +## [v1.4.1](https://github.com/inspect-js/object-inspect/compare/v1.4.0...v1.4.1) - 2017-12-19 + +### Commits + +- [Tests] up to `node` `v9.3`, `v8.9`, `v6.12` [`6674476`](https://github.com/inspect-js/object-inspect/commit/6674476cc56acaac1bde96c84fed5ef631911906) +- [Fix] `inspect(Object(-0))` should be “Object(-0)”, not “Object(0)” [`d0a031f`](https://github.com/inspect-js/object-inspect/commit/d0a031f1cbb3024ee9982bfe364dd18a7e4d1bd3) + +## [v1.4.0](https://github.com/inspect-js/object-inspect/compare/v1.3.0...v1.4.0) - 2017-10-24 + +### Commits + +- [Tests] add `npm run coverage` [`3b48fb2`](https://github.com/inspect-js/object-inspect/commit/3b48fb25db037235eeb808f0b2830aad7aa36f70) +- [Tests] remove commented-out osx builds [`71e24db`](https://github.com/inspect-js/object-inspect/commit/71e24db8ad6ee3b9b381c5300b0475f2ba595a73) +- [New] add support for `util.inspect.custom`, in node only. [`20cca77`](https://github.com/inspect-js/object-inspect/commit/20cca7762d7e17f15b21a90793dff84acce155df) +- [Tests] up to `node` `v8.6`; use `nvm install-latest-npm` to ensure new npm doesn’t break old node [`252952d`](https://github.com/inspect-js/object-inspect/commit/252952d230d8065851dd3d4d5fe8398aae068529) +- [Tests] up to `node` `v8.8` [`4aa868d`](https://github.com/inspect-js/object-inspect/commit/4aa868d3a62914091d489dd6ec6eed194ee67cd3) +- [Dev Deps] update `core-js`, `tape` [`59483d1`](https://github.com/inspect-js/object-inspect/commit/59483d1df418f852f51fa0db7b24aa6b0209a27a) + +## [v1.3.0](https://github.com/inspect-js/object-inspect/compare/v1.2.2...v1.3.0) - 2017-07-31 + +### Fixed + +- [Fix] Map/Set: work around core-js bug < v2.5.0 [`#9`](https://github.com/inspect-js/object-inspect/issues/9) + +### Commits + +- [New] add support for arrays with additional object keys [`0d19937`](https://github.com/inspect-js/object-inspect/commit/0d199374ee37959e51539616666f420ccb29acb9) +- [Tests] up to `node` `v8.2`, `v7.10`, `v6.11`; fix new npm breaking on older nodes [`e24784a`](https://github.com/inspect-js/object-inspect/commit/e24784a90c49117787157a12a63897c49cf89bbb) +- Only apps should have lockfiles [`c6faebc`](https://github.com/inspect-js/object-inspect/commit/c6faebcb2ee486a889a4a1c4d78c0776c7576185) +- [Dev Deps] update `tape` [`7345a0a`](https://github.com/inspect-js/object-inspect/commit/7345a0aeba7e91b888a079c10004d17696a7f586) + +## [v1.2.2](https://github.com/inspect-js/object-inspect/compare/v1.2.1...v1.2.2) - 2017-03-24 + +### Commits + +- [Tests] up to `node` `v7.7`, `v6.10`, `v4.8`; improve test matrix [`a2ddc15`](https://github.com/inspect-js/object-inspect/commit/a2ddc15a1f2c65af18076eea1c0eb9cbceb478a0) +- [Tests] up to `node` `v7.0`, `v6.9`, `v5.12`, `v4.6`, `io.js` `v3.3`; improve test matrix [`a48949f`](https://github.com/inspect-js/object-inspect/commit/a48949f6b574b2d4d2298109d8e8d0eb3e7a83e7) +- [Performance] check for primitive types as early as possible. [`3b8092a`](https://github.com/inspect-js/object-inspect/commit/3b8092a2a4deffd0575f94334f00194e2d48dad3) +- [Refactor] remove unneeded `else`s. [`7255034`](https://github.com/inspect-js/object-inspect/commit/725503402e08de4f96f6bf2d8edef44ac36f26b6) +- [Refactor] avoid recreating `lowbyte` function every time. [`81edd34`](https://github.com/inspect-js/object-inspect/commit/81edd3475bd15bdd18e84de7472033dcf5004aaa) +- [Fix] differentiate -0 from 0 [`521d345`](https://github.com/inspect-js/object-inspect/commit/521d3456b009da7bf1c5785c8a9df5a9f8718264) +- [Refactor] move object key gathering into separate function [`aca6265`](https://github.com/inspect-js/object-inspect/commit/aca626536eaeef697196c6e9db3e90e7e0355b6a) +- [Refactor] consolidate wrapping logic for boxed primitives into a function. [`4e440cd`](https://github.com/inspect-js/object-inspect/commit/4e440cd9065df04802a2a1dead03f48c353ca301) +- [Robustness] use `typeof` instead of comparing to literal `undefined` [`5ca6f60`](https://github.com/inspect-js/object-inspect/commit/5ca6f601937506daff8ed2fcf686363b55807b69) +- [Refactor] consolidate Map/Set notations. [`4e576e5`](https://github.com/inspect-js/object-inspect/commit/4e576e5d7ed2f9ec3fb7f37a0d16732eb10758a9) +- [Tests] ensure that this function remains anonymous, despite ES6 name inference. [`7540ae5`](https://github.com/inspect-js/object-inspect/commit/7540ae591278756db614fa4def55ca413150e1a3) +- [Refactor] explicitly coerce Error objects to strings. [`7f4ca84`](https://github.com/inspect-js/object-inspect/commit/7f4ca8424ee8dc2c0ca5a422d94f7fac40327261) +- [Refactor] split up `var` declarations for debuggability [`6f2c11e`](https://github.com/inspect-js/object-inspect/commit/6f2c11e6a85418586a00292dcec5e97683f89bc3) +- [Robustness] cache `Object.prototype.toString` [`df44a20`](https://github.com/inspect-js/object-inspect/commit/df44a20adfccf31529d60d1df2079bfc3c836e27) +- [Dev Deps] update `tape` [`3ec714e`](https://github.com/inspect-js/object-inspect/commit/3ec714eba57bc3f58a6eb4fca1376f49e70d300a) +- [Dev Deps] update `tape` [`beb72d9`](https://github.com/inspect-js/object-inspect/commit/beb72d969653747d7cde300393c28755375329b0) + +## [v1.2.1](https://github.com/inspect-js/object-inspect/compare/v1.2.0...v1.2.1) - 2016-04-09 + +### Fixed + +- [Fix] fix Boolean `false` object inspection. [`#7`](https://github.com/substack/object-inspect/pull/7) + +## [v1.2.0](https://github.com/inspect-js/object-inspect/compare/v1.1.0...v1.2.0) - 2016-04-09 + +### Fixed + +- [New] add support for inspecting String/Number/Boolean objects. [`#6`](https://github.com/inspect-js/object-inspect/issues/6) + +### Commits + +- [Dev Deps] update `tape` [`742caa2`](https://github.com/inspect-js/object-inspect/commit/742caa262cf7af4c815d4821c8bd0129c1446432) + +## [v1.1.0](https://github.com/inspect-js/object-inspect/compare/1.0.2...v1.1.0) - 2015-12-14 + +### Merged + +- [New] add ES6 Map/Set support. [`#4`](https://github.com/inspect-js/object-inspect/pull/4) + +### Fixed + +- [New] add ES6 Map/Set support. [`#3`](https://github.com/inspect-js/object-inspect/issues/3) + +### Commits + +- Update `travis.yml` to test on bunches of `iojs` and `node` versions. [`4c1fd65`](https://github.com/inspect-js/object-inspect/commit/4c1fd65cc3bd95307e854d114b90478324287fd2) +- [Dev Deps] update `tape` [`88a907e`](https://github.com/inspect-js/object-inspect/commit/88a907e33afbe408e4b5d6e4e42a33143f88848c) + +## [1.0.2](https://github.com/inspect-js/object-inspect/compare/1.0.1...1.0.2) - 2015-08-07 + +### Commits + +- [Fix] Cache `Object.prototype.hasOwnProperty` in case it's deleted later. [`1d0075d`](https://github.com/inspect-js/object-inspect/commit/1d0075d3091dc82246feeb1f9871cb2b8ed227b3) +- [Dev Deps] Update `tape` [`ca8d5d7`](https://github.com/inspect-js/object-inspect/commit/ca8d5d75635ddbf76f944e628267581e04958457) +- gitignore node_modules since this is a reusable modules. [`ed41407`](https://github.com/inspect-js/object-inspect/commit/ed41407811743ca530cdeb28f982beb96026af82) + +## [1.0.1](https://github.com/inspect-js/object-inspect/compare/1.0.0...1.0.1) - 2015-07-19 + +### Commits + +- Make `inspect` work with symbol primitives and objects, including in node 0.11 and 0.12. [`ddf1b94`](https://github.com/inspect-js/object-inspect/commit/ddf1b94475ab951f1e3bccdc0a48e9073cfbfef4) +- bump tape [`103d674`](https://github.com/inspect-js/object-inspect/commit/103d67496b504bdcfdd765d303a773f87ec106e2) +- use newer travis config [`d497276`](https://github.com/inspect-js/object-inspect/commit/d497276c1da14234bb5098a59cf20de75fbc316a) + +## [1.0.0](https://github.com/inspect-js/object-inspect/compare/0.4.0...1.0.0) - 2014-08-05 + +### Commits + +- error inspect works properly [`260a22d`](https://github.com/inspect-js/object-inspect/commit/260a22d134d3a8a482c67d52091c6040c34f4299) +- seen coverage [`57269e8`](https://github.com/inspect-js/object-inspect/commit/57269e8baa992a7439047f47325111fdcbcb8417) +- htmlelement instance coverage [`397ffe1`](https://github.com/inspect-js/object-inspect/commit/397ffe10a1980350868043ef9de65686d438979f) +- more element coverage [`6905cc2`](https://github.com/inspect-js/object-inspect/commit/6905cc2f7df35600177e613b0642b4df5efd3eca) +- failing test for type errors [`385b615`](https://github.com/inspect-js/object-inspect/commit/385b6152e49b51b68449a662f410b084ed7c601a) +- fn name coverage [`edc906d`](https://github.com/inspect-js/object-inspect/commit/edc906d40fca6b9194d304062c037ee8e398c4c2) +- server-side element test [`362d1d3`](https://github.com/inspect-js/object-inspect/commit/362d1d3e86f187651c29feeb8478110afada385b) +- custom inspect fn [`e89b0f6`](https://github.com/inspect-js/object-inspect/commit/e89b0f6fe6d5e03681282af83732a509160435a6) +- fixed browser test [`b530882`](https://github.com/inspect-js/object-inspect/commit/b5308824a1c8471c5617e394766a03a6977102a9) +- depth test, matches node [`1cfd9e0`](https://github.com/inspect-js/object-inspect/commit/1cfd9e0285a4ae1dff44101ad482915d9bf47e48) +- exercise hasOwnProperty path [`8d753fb`](https://github.com/inspect-js/object-inspect/commit/8d753fb362a534fa1106e4d80f2ee9bea06a66d9) +- more cases covered for errors [`c5c46a5`](https://github.com/inspect-js/object-inspect/commit/c5c46a569ec4606583497e8550f0d8c7ad39a4a4) +- \W obj key test case [`b0eceee`](https://github.com/inspect-js/object-inspect/commit/b0eceeea6e0eb94d686c1046e99b9e25e5005f75) +- coverage for explicit depth param [`e12b91c`](https://github.com/inspect-js/object-inspect/commit/e12b91cd59683362f3a0e80f46481a0211e26c15) + +## [0.4.0](https://github.com/inspect-js/object-inspect/compare/0.3.1...0.4.0) - 2014-03-21 + +### Commits + +- passing lowbyte interpolation test [`b847511`](https://github.com/inspect-js/object-inspect/commit/b8475114f5def7e7961c5353d48d3d8d9a520985) +- lowbyte test [`4a2b0e1`](https://github.com/inspect-js/object-inspect/commit/4a2b0e142667fc933f195472759385ac08f3946c) + +## [0.3.1](https://github.com/inspect-js/object-inspect/compare/0.3.0...0.3.1) - 2014-03-04 + +### Commits + +- sort keys [`a07b19c`](https://github.com/inspect-js/object-inspect/commit/a07b19cc3b1521a82d4fafb6368b7a9775428a05) + +## [0.3.0](https://github.com/inspect-js/object-inspect/compare/0.2.0...0.3.0) - 2014-03-04 + +### Commits + +- [] and {} instead of [ ] and { } [`654c44b`](https://github.com/inspect-js/object-inspect/commit/654c44b2865811f3519e57bb8526e0821caf5c6b) + +## [0.2.0](https://github.com/inspect-js/object-inspect/compare/0.1.3...0.2.0) - 2014-03-04 + +### Commits + +- failing holes test [`99cdfad`](https://github.com/inspect-js/object-inspect/commit/99cdfad03c6474740275a75636fe6ca86c77737a) +- regex already work [`e324033`](https://github.com/inspect-js/object-inspect/commit/e324033267025995ec97d32ed0a65737c99477a6) +- failing undef/null test [`1f88a00`](https://github.com/inspect-js/object-inspect/commit/1f88a00265d3209719dda8117b7e6360b4c20943) +- holes in the all example [`7d345f3`](https://github.com/inspect-js/object-inspect/commit/7d345f3676dcbe980cff89a4f6c243269ebbb709) +- check for .inspect(), fixes Buffer use-case [`c3f7546`](https://github.com/inspect-js/object-inspect/commit/c3f75466dbca125347d49847c05262c292f12b79) +- fixes for holes [`ce25f73`](https://github.com/inspect-js/object-inspect/commit/ce25f736683de4b92ff27dc5471218415e2d78d8) +- weird null behavior [`405c1ea`](https://github.com/inspect-js/object-inspect/commit/405c1ea72cd5a8cf3b498c3eaa903d01b9fbcab5) +- tape is actually a devDependency, upgrade [`703b0ce`](https://github.com/inspect-js/object-inspect/commit/703b0ce6c5817b4245a082564bccd877e0bb6990) +- put date in the example [`a342219`](https://github.com/inspect-js/object-inspect/commit/a3422190eeaa013215f46df2d0d37b48595ac058) +- passing the null test [`4ab737e`](https://github.com/inspect-js/object-inspect/commit/4ab737ebf862a75d247ebe51e79307a34d6380d4) + +## [0.1.3](https://github.com/inspect-js/object-inspect/compare/0.1.1...0.1.3) - 2013-07-26 + +### Commits + +- special isElement() check [`882768a`](https://github.com/inspect-js/object-inspect/commit/882768a54035d30747be9de1baf14e5aa0daa128) +- oh right old IEs don't have indexOf either [`36d1275`](https://github.com/inspect-js/object-inspect/commit/36d12756c38b08a74370b0bb696c809e529913a5) + +## [0.1.1](https://github.com/inspect-js/object-inspect/compare/0.1.0...0.1.1) - 2013-07-26 + +### Commits + +- tests! [`4422fd9`](https://github.com/inspect-js/object-inspect/commit/4422fd95532c2745aa6c4f786f35f1090be29998) +- fix for ie<9, doesn't have hasOwnProperty [`6b7d611`](https://github.com/inspect-js/object-inspect/commit/6b7d61183050f6da801ea04473211da226482613) +- fix for all IEs: no f.name [`4e0c2f6`](https://github.com/inspect-js/object-inspect/commit/4e0c2f6dfd01c306d067d7163319acc97c94ee50) +- badges [`5ed0d88`](https://github.com/inspect-js/object-inspect/commit/5ed0d88e4e407f9cb327fa4a146c17921f9680f3) + +## [0.1.0](https://github.com/inspect-js/object-inspect/compare/0.0.0...0.1.0) - 2013-07-26 + +### Commits + +- [Function] for functions [`ad5c485`](https://github.com/inspect-js/object-inspect/commit/ad5c485098fc83352cb540a60b2548ca56820e0b) + +## 0.0.0 - 2013-07-26 + +### Commits + +- working browser example [`34be6b6`](https://github.com/inspect-js/object-inspect/commit/34be6b6548f9ce92bdc3c27572857ba0c4a1218d) +- package.json etc [`cad51f2`](https://github.com/inspect-js/object-inspect/commit/cad51f23fc6bcf1a456ed6abe16088256c2f632f) +- docs complete [`b80cce2`](https://github.com/inspect-js/object-inspect/commit/b80cce2490c4e7183a9ee11ea89071f0abec4446) +- circular example [`4b4a7b9`](https://github.com/inspect-js/object-inspect/commit/4b4a7b92209e4e6b4630976cb6bcd17d14165a59) +- string rep [`7afb479`](https://github.com/inspect-js/object-inspect/commit/7afb479baa798d27f09e0a178b72ea327f60f5c8) diff --git a/node_modules/object-inspect/LICENSE b/node_modules/object-inspect/LICENSE new file mode 100644 index 0000000..ca64cc1 --- /dev/null +++ b/node_modules/object-inspect/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2013 James Halliday + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/object-inspect/example/all.js b/node_modules/object-inspect/example/all.js new file mode 100644 index 0000000..2f3355c --- /dev/null +++ b/node_modules/object-inspect/example/all.js @@ -0,0 +1,23 @@ +'use strict'; + +var inspect = require('../'); +var Buffer = require('safer-buffer').Buffer; + +var holes = ['a', 'b']; +holes[4] = 'e'; +holes[6] = 'g'; + +var obj = { + a: 1, + b: [3, 4, undefined, null], + c: undefined, + d: null, + e: { + regex: /^x/i, + buf: Buffer.from('abc'), + holes: holes + }, + now: new Date() +}; +obj.self = obj; +console.log(inspect(obj)); diff --git a/node_modules/object-inspect/example/circular.js b/node_modules/object-inspect/example/circular.js new file mode 100644 index 0000000..487a7c1 --- /dev/null +++ b/node_modules/object-inspect/example/circular.js @@ -0,0 +1,6 @@ +'use strict'; + +var inspect = require('../'); +var obj = { a: 1, b: [3, 4] }; +obj.c = obj; +console.log(inspect(obj)); diff --git a/node_modules/object-inspect/example/fn.js b/node_modules/object-inspect/example/fn.js new file mode 100644 index 0000000..9b5db8d --- /dev/null +++ b/node_modules/object-inspect/example/fn.js @@ -0,0 +1,5 @@ +'use strict'; + +var inspect = require('../'); +var obj = [1, 2, function f(n) { return n + 5; }, 4]; +console.log(inspect(obj)); diff --git a/node_modules/object-inspect/example/inspect.js b/node_modules/object-inspect/example/inspect.js new file mode 100644 index 0000000..e2df7c9 --- /dev/null +++ b/node_modules/object-inspect/example/inspect.js @@ -0,0 +1,10 @@ +'use strict'; + +/* eslint-env browser */ +var inspect = require('../'); + +var d = document.createElement('div'); +d.setAttribute('id', 'beep'); +d.innerHTML = 'woooiiiii'; + +console.log(inspect([d, { a: 3, b: 4, c: [5, 6, [7, [8, [9]]]] }])); diff --git a/node_modules/object-inspect/index.js b/node_modules/object-inspect/index.js new file mode 100644 index 0000000..a4b2d4c --- /dev/null +++ b/node_modules/object-inspect/index.js @@ -0,0 +1,544 @@ +var hasMap = typeof Map === 'function' && Map.prototype; +var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null; +var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null; +var mapForEach = hasMap && Map.prototype.forEach; +var hasSet = typeof Set === 'function' && Set.prototype; +var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null; +var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null; +var setForEach = hasSet && Set.prototype.forEach; +var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype; +var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; +var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype; +var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; +var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype; +var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; +var booleanValueOf = Boolean.prototype.valueOf; +var objectToString = Object.prototype.toString; +var functionToString = Function.prototype.toString; +var $match = String.prototype.match; +var $slice = String.prototype.slice; +var $replace = String.prototype.replace; +var $toUpperCase = String.prototype.toUpperCase; +var $toLowerCase = String.prototype.toLowerCase; +var $test = RegExp.prototype.test; +var $concat = Array.prototype.concat; +var $join = Array.prototype.join; +var $arrSlice = Array.prototype.slice; +var $floor = Math.floor; +var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null; +var gOPS = Object.getOwnPropertySymbols; +var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null; +var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object'; +// ie, `has-tostringtag/shams +var toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol') + ? Symbol.toStringTag + : null; +var isEnumerable = Object.prototype.propertyIsEnumerable; + +var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ( + [].__proto__ === Array.prototype // eslint-disable-line no-proto + ? function (O) { + return O.__proto__; // eslint-disable-line no-proto + } + : null +); + +function addNumericSeparator(num, str) { + if ( + num === Infinity + || num === -Infinity + || num !== num + || (num && num > -1000 && num < 1000) + || $test.call(/e/, str) + ) { + return str; + } + var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; + if (typeof num === 'number') { + var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num) + if (int !== num) { + var intStr = String(int); + var dec = $slice.call(str, intStr.length + 1); + return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, ''); + } + } + return $replace.call(str, sepRegex, '$&_'); +} + +var utilInspect = require('./util.inspect'); +var inspectCustom = utilInspect.custom; +var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; + +var quotes = { + __proto__: null, + 'double': '"', + single: "'" +}; +var quoteREs = { + __proto__: null, + 'double': /(["\\])/g, + single: /(['\\])/g +}; + +module.exports = function inspect_(obj, options, depth, seen) { + var opts = options || {}; + + if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) { + throw new TypeError('option "quoteStyle" must be "single" or "double"'); + } + if ( + has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number' + ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity + : opts.maxStringLength !== null + ) + ) { + throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); + } + var customInspect = has(opts, 'customInspect') ? opts.customInspect : true; + if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') { + throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`'); + } + + if ( + has(opts, 'indent') + && opts.indent !== null + && opts.indent !== '\t' + && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0) + ) { + throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); + } + if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') { + throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); + } + var numericSeparator = opts.numericSeparator; + + if (typeof obj === 'undefined') { + return 'undefined'; + } + if (obj === null) { + return 'null'; + } + if (typeof obj === 'boolean') { + return obj ? 'true' : 'false'; + } + + if (typeof obj === 'string') { + return inspectString(obj, opts); + } + if (typeof obj === 'number') { + if (obj === 0) { + return Infinity / obj > 0 ? '0' : '-0'; + } + var str = String(obj); + return numericSeparator ? addNumericSeparator(obj, str) : str; + } + if (typeof obj === 'bigint') { + var bigIntStr = String(obj) + 'n'; + return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; + } + + var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth; + if (typeof depth === 'undefined') { depth = 0; } + if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') { + return isArray(obj) ? '[Array]' : '[Object]'; + } + + var indent = getIndent(opts, depth); + + if (typeof seen === 'undefined') { + seen = []; + } else if (indexOf(seen, obj) >= 0) { + return '[Circular]'; + } + + function inspect(value, from, noIndent) { + if (from) { + seen = $arrSlice.call(seen); + seen.push(from); + } + if (noIndent) { + var newOpts = { + depth: opts.depth + }; + if (has(opts, 'quoteStyle')) { + newOpts.quoteStyle = opts.quoteStyle; + } + return inspect_(value, newOpts, depth + 1, seen); + } + return inspect_(value, opts, depth + 1, seen); + } + + if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable + var name = nameOf(obj); + var keys = arrObjKeys(obj, inspect); + return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : ''); + } + if (isSymbol(obj)) { + var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj); + return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString; + } + if (isElement(obj)) { + var s = '<' + $toLowerCase.call(String(obj.nodeName)); + var attrs = obj.attributes || []; + for (var i = 0; i < attrs.length; i++) { + s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts); + } + s += '>'; + if (obj.childNodes && obj.childNodes.length) { s += '...'; } + s += ''; + return s; + } + if (isArray(obj)) { + if (obj.length === 0) { return '[]'; } + var xs = arrObjKeys(obj, inspect); + if (indent && !singleLineValues(xs)) { + return '[' + indentedJoin(xs, indent) + ']'; + } + return '[ ' + $join.call(xs, ', ') + ' ]'; + } + if (isError(obj)) { + var parts = arrObjKeys(obj, inspect); + if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) { + return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }'; + } + if (parts.length === 0) { return '[' + String(obj) + ']'; } + return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }'; + } + if (typeof obj === 'object' && customInspect) { + if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) { + return utilInspect(obj, { depth: maxDepth - depth }); + } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') { + return obj.inspect(); + } + } + if (isMap(obj)) { + var mapParts = []; + if (mapForEach) { + mapForEach.call(obj, function (value, key) { + mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj)); + }); + } + return collectionOf('Map', mapSize.call(obj), mapParts, indent); + } + if (isSet(obj)) { + var setParts = []; + if (setForEach) { + setForEach.call(obj, function (value) { + setParts.push(inspect(value, obj)); + }); + } + return collectionOf('Set', setSize.call(obj), setParts, indent); + } + if (isWeakMap(obj)) { + return weakCollectionOf('WeakMap'); + } + if (isWeakSet(obj)) { + return weakCollectionOf('WeakSet'); + } + if (isWeakRef(obj)) { + return weakCollectionOf('WeakRef'); + } + if (isNumber(obj)) { + return markBoxed(inspect(Number(obj))); + } + if (isBigInt(obj)) { + return markBoxed(inspect(bigIntValueOf.call(obj))); + } + if (isBoolean(obj)) { + return markBoxed(booleanValueOf.call(obj)); + } + if (isString(obj)) { + return markBoxed(inspect(String(obj))); + } + // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other + /* eslint-env browser */ + if (typeof window !== 'undefined' && obj === window) { + return '{ [object Window] }'; + } + if ( + (typeof globalThis !== 'undefined' && obj === globalThis) + || (typeof global !== 'undefined' && obj === global) + ) { + return '{ [object globalThis] }'; + } + if (!isDate(obj) && !isRegExp(obj)) { + var ys = arrObjKeys(obj, inspect); + var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; + var protoTag = obj instanceof Object ? '' : 'null prototype'; + var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : ''; + var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : ''; + var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : ''); + if (ys.length === 0) { return tag + '{}'; } + if (indent) { + return tag + '{' + indentedJoin(ys, indent) + '}'; + } + return tag + '{ ' + $join.call(ys, ', ') + ' }'; + } + return String(obj); +}; + +function wrapQuotes(s, defaultStyle, opts) { + var style = opts.quoteStyle || defaultStyle; + var quoteChar = quotes[style]; + return quoteChar + s + quoteChar; +} + +function quote(s) { + return $replace.call(String(s), /"/g, '"'); +} + +function canTrustToString(obj) { + return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined')); +} +function isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); } +function isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); } +function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); } +function isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); } +function isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); } +function isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); } +function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); } + +// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives +function isSymbol(obj) { + if (hasShammedSymbols) { + return obj && typeof obj === 'object' && obj instanceof Symbol; + } + if (typeof obj === 'symbol') { + return true; + } + if (!obj || typeof obj !== 'object' || !symToString) { + return false; + } + try { + symToString.call(obj); + return true; + } catch (e) {} + return false; +} + +function isBigInt(obj) { + if (!obj || typeof obj !== 'object' || !bigIntValueOf) { + return false; + } + try { + bigIntValueOf.call(obj); + return true; + } catch (e) {} + return false; +} + +var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; }; +function has(obj, key) { + return hasOwn.call(obj, key); +} + +function toStr(obj) { + return objectToString.call(obj); +} + +function nameOf(f) { + if (f.name) { return f.name; } + var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); + if (m) { return m[1]; } + return null; +} + +function indexOf(xs, x) { + if (xs.indexOf) { return xs.indexOf(x); } + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) { return i; } + } + return -1; +} + +function isMap(x) { + if (!mapSize || !x || typeof x !== 'object') { + return false; + } + try { + mapSize.call(x); + try { + setSize.call(x); + } catch (s) { + return true; + } + return x instanceof Map; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakMap(x) { + if (!weakMapHas || !x || typeof x !== 'object') { + return false; + } + try { + weakMapHas.call(x, weakMapHas); + try { + weakSetHas.call(x, weakSetHas); + } catch (s) { + return true; + } + return x instanceof WeakMap; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakRef(x) { + if (!weakRefDeref || !x || typeof x !== 'object') { + return false; + } + try { + weakRefDeref.call(x); + return true; + } catch (e) {} + return false; +} + +function isSet(x) { + if (!setSize || !x || typeof x !== 'object') { + return false; + } + try { + setSize.call(x); + try { + mapSize.call(x); + } catch (m) { + return true; + } + return x instanceof Set; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakSet(x) { + if (!weakSetHas || !x || typeof x !== 'object') { + return false; + } + try { + weakSetHas.call(x, weakSetHas); + try { + weakMapHas.call(x, weakMapHas); + } catch (s) { + return true; + } + return x instanceof WeakSet; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isElement(x) { + if (!x || typeof x !== 'object') { return false; } + if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) { + return true; + } + return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function'; +} + +function inspectString(str, opts) { + if (str.length > opts.maxStringLength) { + var remaining = str.length - opts.maxStringLength; + var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : ''); + return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; + } + var quoteRE = quoteREs[opts.quoteStyle || 'single']; + quoteRE.lastIndex = 0; + // eslint-disable-next-line no-control-regex + var s = $replace.call($replace.call(str, quoteRE, '\\$1'), /[\x00-\x1f]/g, lowbyte); + return wrapQuotes(s, 'single', opts); +} + +function lowbyte(c) { + var n = c.charCodeAt(0); + var x = { + 8: 'b', + 9: 't', + 10: 'n', + 12: 'f', + 13: 'r' + }[n]; + if (x) { return '\\' + x; } + return '\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16)); +} + +function markBoxed(str) { + return 'Object(' + str + ')'; +} + +function weakCollectionOf(type) { + return type + ' { ? }'; +} + +function collectionOf(type, size, entries, indent) { + var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', '); + return type + ' (' + size + ') {' + joinedEntries + '}'; +} + +function singleLineValues(xs) { + for (var i = 0; i < xs.length; i++) { + if (indexOf(xs[i], '\n') >= 0) { + return false; + } + } + return true; +} + +function getIndent(opts, depth) { + var baseIndent; + if (opts.indent === '\t') { + baseIndent = '\t'; + } else if (typeof opts.indent === 'number' && opts.indent > 0) { + baseIndent = $join.call(Array(opts.indent + 1), ' '); + } else { + return null; + } + return { + base: baseIndent, + prev: $join.call(Array(depth + 1), baseIndent) + }; +} + +function indentedJoin(xs, indent) { + if (xs.length === 0) { return ''; } + var lineJoiner = '\n' + indent.prev + indent.base; + return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\n' + indent.prev; +} + +function arrObjKeys(obj, inspect) { + var isArr = isArray(obj); + var xs = []; + if (isArr) { + xs.length = obj.length; + for (var i = 0; i < obj.length; i++) { + xs[i] = has(obj, i) ? inspect(obj[i], obj) : ''; + } + } + var syms = typeof gOPS === 'function' ? gOPS(obj) : []; + var symMap; + if (hasShammedSymbols) { + symMap = {}; + for (var k = 0; k < syms.length; k++) { + symMap['$' + syms[k]] = syms[k]; + } + } + + for (var key in obj) { // eslint-disable-line no-restricted-syntax + if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue + if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue + if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) { + // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section + continue; // eslint-disable-line no-restricted-syntax, no-continue + } else if ($test.call(/[^\w$]/, key)) { + xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); + } else { + xs.push(key + ': ' + inspect(obj[key], obj)); + } + } + if (typeof gOPS === 'function') { + for (var j = 0; j < syms.length; j++) { + if (isEnumerable.call(obj, syms[j])) { + xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj)); + } + } + } + return xs; +} diff --git a/node_modules/object-inspect/package-support.json b/node_modules/object-inspect/package-support.json new file mode 100644 index 0000000..5cc12d0 --- /dev/null +++ b/node_modules/object-inspect/package-support.json @@ -0,0 +1,20 @@ +{ + "versions": [ + { + "version": "*", + "target": { + "node": "all" + }, + "response": { + "type": "time-permitting" + }, + "backing": { + "npm-funding": true, + "donations": [ + "https://github.com/ljharb", + "https://tidelift.com/funding/github/npm/object-inspect" + ] + } + } + ] +} diff --git a/node_modules/object-inspect/package.json b/node_modules/object-inspect/package.json new file mode 100644 index 0000000..9fd97ff --- /dev/null +++ b/node_modules/object-inspect/package.json @@ -0,0 +1,105 @@ +{ + "name": "object-inspect", + "version": "1.13.4", + "description": "string representations of objects in node and the browser", + "main": "index.js", + "sideEffects": false, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "@pkgjs/support": "^0.0.6", + "auto-changelog": "^2.5.0", + "core-js": "^2.6.12", + "error-cause": "^1.0.8", + "es-value-fixtures": "^1.7.1", + "eslint": "=8.8.0", + "for-each": "^0.3.4", + "functions-have-names": "^1.2.3", + "glob": "=10.3.7", + "globalthis": "^1.0.4", + "has-symbols": "^1.1.0", + "has-tostringtag": "^1.0.2", + "in-publish": "^2.0.1", + "jackspeak": "=2.1.1", + "make-arrow-function": "^1.2.0", + "mock-property": "^1.1.0", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "safer-buffer": "^2.1.2", + "semver": "^6.3.1", + "string.prototype.repeat": "^1.0.0", + "tape": "^5.9.0" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "pretest": "npm run lint", + "lint": "eslint --ext=js,mjs .", + "postlint": "npx @pkgjs/support validate", + "test": "npm run tests-only && npm run test:corejs", + "tests-only": "nyc tape 'test/*.js'", + "test:corejs": "nyc tape test-core-js.js 'test/*.js'", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "testling": { + "files": [ + "test/*.js", + "test/browser/*.js" + ], + "browsers": [ + "ie/6..latest", + "chrome/latest", + "firefox/latest", + "safari/latest", + "opera/latest", + "iphone/latest", + "ipad/latest", + "android/latest" + ] + }, + "repository": { + "type": "git", + "url": "git://github.com/inspect-js/object-inspect.git" + }, + "homepage": "https://github.com/inspect-js/object-inspect", + "keywords": [ + "inspect", + "util.inspect", + "object", + "stringify", + "pretty" + ], + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "browser": { + "./util.inspect.js": false + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "./test-core-js.js" + ] + }, + "support": true, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/object-inspect/readme.markdown b/node_modules/object-inspect/readme.markdown new file mode 100644 index 0000000..f91617d --- /dev/null +++ b/node_modules/object-inspect/readme.markdown @@ -0,0 +1,84 @@ +# object-inspect [![Version Badge][npm-version-svg]][package-url] + +string representations of objects in node and the browser + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +# example + +## circular + +``` js +var inspect = require('object-inspect'); +var obj = { a: 1, b: [3,4] }; +obj.c = obj; +console.log(inspect(obj)); +``` + +## dom element + +``` js +var inspect = require('object-inspect'); + +var d = document.createElement('div'); +d.setAttribute('id', 'beep'); +d.innerHTML = 'woooiiiii'; + +console.log(inspect([ d, { a: 3, b : 4, c: [5,6,[7,[8,[9]]]] } ])); +``` + +output: + +``` +[
    ...
    , { a: 3, b: 4, c: [ 5, 6, [ 7, [ 8, [ ... ] ] ] ] } ] +``` + +# methods + +``` js +var inspect = require('object-inspect') +``` + +## var s = inspect(obj, opts={}) + +Return a string `s` with the string representation of `obj` up to a depth of `opts.depth`. + +Additional options: + - `quoteStyle`: must be "single" or "double", if present. Default `'single'` for strings, `'double'` for HTML elements. + - `maxStringLength`: must be `0`, a positive integer, `Infinity`, or `null`, if present. Default `Infinity`. + - `customInspect`: When `true`, a custom inspect method function will be invoked (either undere the `util.inspect.custom` symbol, or the `inspect` property). When the string `'symbol'`, only the symbol method will be invoked. Default `true`. + - `indent`: must be "\t", `null`, or a positive integer. Default `null`. + - `numericSeparator`: must be a boolean, if present. Default `false`. If `true`, all numbers will be printed with numeric separators (eg, `1234.5678` will be printed as `'1_234.567_8'`) + +# install + +With [npm](https://npmjs.org) do: + +``` +npm install object-inspect +``` + +# license + +MIT + +[package-url]: https://npmjs.org/package/object-inspect +[npm-version-svg]: https://versionbadg.es/inspect-js/object-inspect.svg +[deps-svg]: https://david-dm.org/inspect-js/object-inspect.svg +[deps-url]: https://david-dm.org/inspect-js/object-inspect +[dev-deps-svg]: https://david-dm.org/inspect-js/object-inspect/dev-status.svg +[dev-deps-url]: https://david-dm.org/inspect-js/object-inspect#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/object-inspect.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/object-inspect.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/object-inspect.svg +[downloads-url]: https://npm-stat.com/charts.html?package=object-inspect +[codecov-image]: https://codecov.io/gh/inspect-js/object-inspect/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/inspect-js/object-inspect/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/object-inspect +[actions-url]: https://github.com/inspect-js/object-inspect/actions diff --git a/node_modules/object-inspect/test-core-js.js b/node_modules/object-inspect/test-core-js.js new file mode 100644 index 0000000..e53c400 --- /dev/null +++ b/node_modules/object-inspect/test-core-js.js @@ -0,0 +1,26 @@ +'use strict'; + +require('core-js'); + +var inspect = require('./'); +var test = require('tape'); + +test('Maps', function (t) { + t.equal(inspect(new Map([[1, 2]])), 'Map (1) {1 => 2}'); + t.end(); +}); + +test('WeakMaps', function (t) { + t.equal(inspect(new WeakMap([[{}, 2]])), 'WeakMap { ? }'); + t.end(); +}); + +test('Sets', function (t) { + t.equal(inspect(new Set([[1, 2]])), 'Set (1) {[ 1, 2 ]}'); + t.end(); +}); + +test('WeakSets', function (t) { + t.equal(inspect(new WeakSet([[1, 2]])), 'WeakSet { ? }'); + t.end(); +}); diff --git a/node_modules/object-inspect/test/bigint.js b/node_modules/object-inspect/test/bigint.js new file mode 100644 index 0000000..4ecc31d --- /dev/null +++ b/node_modules/object-inspect/test/bigint.js @@ -0,0 +1,58 @@ +'use strict'; + +var inspect = require('../'); +var test = require('tape'); +var hasToStringTag = require('has-tostringtag/shams')(); + +test('bigint', { skip: typeof BigInt === 'undefined' }, function (t) { + t.test('primitives', function (st) { + st.plan(3); + + st.equal(inspect(BigInt(-256)), '-256n'); + st.equal(inspect(BigInt(0)), '0n'); + st.equal(inspect(BigInt(256)), '256n'); + }); + + t.test('objects', function (st) { + st.plan(3); + + st.equal(inspect(Object(BigInt(-256))), 'Object(-256n)'); + st.equal(inspect(Object(BigInt(0))), 'Object(0n)'); + st.equal(inspect(Object(BigInt(256))), 'Object(256n)'); + }); + + t.test('syntactic primitives', function (st) { + st.plan(3); + + /* eslint-disable no-new-func */ + st.equal(inspect(Function('return -256n')()), '-256n'); + st.equal(inspect(Function('return 0n')()), '0n'); + st.equal(inspect(Function('return 256n')()), '256n'); + }); + + t.test('toStringTag', { skip: !hasToStringTag }, function (st) { + st.plan(1); + + var faker = {}; + faker[Symbol.toStringTag] = 'BigInt'; + st.equal( + inspect(faker), + '{ [Symbol(Symbol.toStringTag)]: \'BigInt\' }', + 'object lying about being a BigInt inspects as an object' + ); + }); + + t.test('numericSeparator', function (st) { + st.equal(inspect(BigInt(0), { numericSeparator: false }), '0n', '0n, numericSeparator false'); + st.equal(inspect(BigInt(0), { numericSeparator: true }), '0n', '0n, numericSeparator true'); + + st.equal(inspect(BigInt(1234), { numericSeparator: false }), '1234n', '1234n, numericSeparator false'); + st.equal(inspect(BigInt(1234), { numericSeparator: true }), '1_234n', '1234n, numericSeparator true'); + st.equal(inspect(BigInt(-1234), { numericSeparator: false }), '-1234n', '1234n, numericSeparator false'); + st.equal(inspect(BigInt(-1234), { numericSeparator: true }), '-1_234n', '1234n, numericSeparator true'); + + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/object-inspect/test/browser/dom.js b/node_modules/object-inspect/test/browser/dom.js new file mode 100644 index 0000000..210c0b2 --- /dev/null +++ b/node_modules/object-inspect/test/browser/dom.js @@ -0,0 +1,15 @@ +var inspect = require('../../'); +var test = require('tape'); + +test('dom element', function (t) { + t.plan(1); + + var d = document.createElement('div'); + d.setAttribute('id', 'beep'); + d.innerHTML = 'woooiiiii'; + + t.equal( + inspect([d, { a: 3, b: 4, c: [5, 6, [7, [8, [9]]]] }]), + '[
    ...
    , { a: 3, b: 4, c: [ 5, 6, [ 7, [ 8, [Object] ] ] ] } ]' + ); +}); diff --git a/node_modules/object-inspect/test/circular.js b/node_modules/object-inspect/test/circular.js new file mode 100644 index 0000000..5df4233 --- /dev/null +++ b/node_modules/object-inspect/test/circular.js @@ -0,0 +1,16 @@ +var inspect = require('../'); +var test = require('tape'); + +test('circular', function (t) { + t.plan(2); + var obj = { a: 1, b: [3, 4] }; + obj.c = obj; + t.equal(inspect(obj), '{ a: 1, b: [ 3, 4 ], c: [Circular] }'); + + var double = {}; + double.a = [double]; + double.b = {}; + double.b.inner = double.b; + double.b.obj = double; + t.equal(inspect(double), '{ a: [ [Circular] ], b: { inner: [Circular], obj: [Circular] } }'); +}); diff --git a/node_modules/object-inspect/test/deep.js b/node_modules/object-inspect/test/deep.js new file mode 100644 index 0000000..99ce32a --- /dev/null +++ b/node_modules/object-inspect/test/deep.js @@ -0,0 +1,12 @@ +var inspect = require('../'); +var test = require('tape'); + +test('deep', function (t) { + t.plan(4); + var obj = [[[[[[500]]]]]]; + t.equal(inspect(obj), '[ [ [ [ [ [Array] ] ] ] ] ]'); + t.equal(inspect(obj, { depth: 4 }), '[ [ [ [ [Array] ] ] ] ]'); + t.equal(inspect(obj, { depth: 2 }), '[ [ [Array] ] ]'); + + t.equal(inspect([[[{ a: 1 }]]], { depth: 3 }), '[ [ [ [Object] ] ] ]'); +}); diff --git a/node_modules/object-inspect/test/element.js b/node_modules/object-inspect/test/element.js new file mode 100644 index 0000000..47fa9e2 --- /dev/null +++ b/node_modules/object-inspect/test/element.js @@ -0,0 +1,53 @@ +var inspect = require('../'); +var test = require('tape'); + +test('element', function (t) { + t.plan(3); + var elem = { + nodeName: 'div', + attributes: [{ name: 'class', value: 'row' }], + getAttribute: function (key) { return key; }, + childNodes: [] + }; + var obj = [1, elem, 3]; + t.deepEqual(inspect(obj), '[ 1,
    , 3 ]'); + t.deepEqual(inspect(obj, { quoteStyle: 'single' }), "[ 1,
    , 3 ]"); + t.deepEqual(inspect(obj, { quoteStyle: 'double' }), '[ 1,
    , 3 ]'); +}); + +test('element no attr', function (t) { + t.plan(1); + var elem = { + nodeName: 'div', + getAttribute: function (key) { return key; }, + childNodes: [] + }; + var obj = [1, elem, 3]; + t.deepEqual(inspect(obj), '[ 1,
    , 3 ]'); +}); + +test('element with contents', function (t) { + t.plan(1); + var elem = { + nodeName: 'div', + getAttribute: function (key) { return key; }, + childNodes: [{ nodeName: 'b' }] + }; + var obj = [1, elem, 3]; + t.deepEqual(inspect(obj), '[ 1,
    ...
    , 3 ]'); +}); + +test('element instance', function (t) { + t.plan(1); + var h = global.HTMLElement; + global.HTMLElement = function (name, attr) { + this.nodeName = name; + this.attributes = attr; + }; + global.HTMLElement.prototype.getAttribute = function () {}; + + var elem = new global.HTMLElement('div', []); + var obj = [1, elem, 3]; + t.deepEqual(inspect(obj), '[ 1,
    , 3 ]'); + global.HTMLElement = h; +}); diff --git a/node_modules/object-inspect/test/err.js b/node_modules/object-inspect/test/err.js new file mode 100644 index 0000000..cc1d884 --- /dev/null +++ b/node_modules/object-inspect/test/err.js @@ -0,0 +1,48 @@ +var test = require('tape'); +var ErrorWithCause = require('error-cause/Error'); + +var inspect = require('../'); + +test('type error', function (t) { + t.plan(1); + var aerr = new TypeError(); + aerr.foo = 555; + aerr.bar = [1, 2, 3]; + + var berr = new TypeError('tuv'); + berr.baz = 555; + + var cerr = new SyntaxError(); + cerr.message = 'whoa'; + cerr['a-b'] = 5; + + var withCause = new ErrorWithCause('foo', { cause: 'bar' }); + var withCausePlus = new ErrorWithCause('foo', { cause: 'bar' }); + withCausePlus.foo = 'bar'; + var withUndefinedCause = new ErrorWithCause('foo', { cause: undefined }); + var withEnumerableCause = new Error('foo'); + withEnumerableCause.cause = 'bar'; + + var obj = [ + new TypeError(), + new TypeError('xxx'), + aerr, + berr, + cerr, + withCause, + withCausePlus, + withUndefinedCause, + withEnumerableCause + ]; + t.equal(inspect(obj), '[ ' + [ + '[TypeError]', + '[TypeError: xxx]', + '{ [TypeError] foo: 555, bar: [ 1, 2, 3 ] }', + '{ [TypeError: tuv] baz: 555 }', + '{ [SyntaxError: whoa] message: \'whoa\', \'a-b\': 5 }', + 'cause' in Error.prototype ? '[Error: foo]' : '{ [Error: foo] [cause]: \'bar\' }', + '{ [Error: foo] ' + ('cause' in Error.prototype ? '' : '[cause]: \'bar\', ') + 'foo: \'bar\' }', + 'cause' in Error.prototype ? '[Error: foo]' : '{ [Error: foo] [cause]: undefined }', + '{ [Error: foo] cause: \'bar\' }' + ].join(', ') + ' ]'); +}); diff --git a/node_modules/object-inspect/test/fakes.js b/node_modules/object-inspect/test/fakes.js new file mode 100644 index 0000000..a65c08c --- /dev/null +++ b/node_modules/object-inspect/test/fakes.js @@ -0,0 +1,29 @@ +'use strict'; + +var inspect = require('../'); +var test = require('tape'); +var hasToStringTag = require('has-tostringtag/shams')(); +var forEach = require('for-each'); + +test('fakes', { skip: !hasToStringTag }, function (t) { + forEach([ + 'Array', + 'Boolean', + 'Date', + 'Error', + 'Number', + 'RegExp', + 'String' + ], function (expected) { + var faker = {}; + faker[Symbol.toStringTag] = expected; + + t.equal( + inspect(faker), + '{ [Symbol(Symbol.toStringTag)]: \'' + expected + '\' }', + 'faker masquerading as ' + expected + ' is not shown as one' + ); + }); + + t.end(); +}); diff --git a/node_modules/object-inspect/test/fn.js b/node_modules/object-inspect/test/fn.js new file mode 100644 index 0000000..de3ca62 --- /dev/null +++ b/node_modules/object-inspect/test/fn.js @@ -0,0 +1,76 @@ +var inspect = require('../'); +var test = require('tape'); +var arrow = require('make-arrow-function')(); +var functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames(); + +test('function', function (t) { + t.plan(1); + var obj = [1, 2, function f(n) { return n; }, 4]; + t.equal(inspect(obj), '[ 1, 2, [Function: f], 4 ]'); +}); + +test('function name', function (t) { + t.plan(1); + var f = (function () { + return function () {}; + }()); + f.toString = function toStr() { return 'function xxx () {}'; }; + var obj = [1, 2, f, 4]; + t.equal(inspect(obj), '[ 1, 2, [Function (anonymous)] { toString: [Function: toStr] }, 4 ]'); +}); + +test('anon function', function (t) { + var f = (function () { + return function () {}; + }()); + var obj = [1, 2, f, 4]; + t.equal(inspect(obj), '[ 1, 2, [Function (anonymous)], 4 ]'); + + t.end(); +}); + +test('arrow function', { skip: !arrow }, function (t) { + t.equal(inspect(arrow), '[Function (anonymous)]'); + + t.end(); +}); + +test('truly nameless function', { skip: !arrow || !functionsHaveConfigurableNames }, function (t) { + function f() {} + Object.defineProperty(f, 'name', { value: false }); + t.equal(f.name, false); + t.equal( + inspect(f), + '[Function: f]', + 'named function with falsy `.name` does not hide its original name' + ); + + function g() {} + Object.defineProperty(g, 'name', { value: true }); + t.equal(g.name, true); + t.equal( + inspect(g), + '[Function: true]', + 'named function with truthy `.name` hides its original name' + ); + + var anon = function () {}; // eslint-disable-line func-style + Object.defineProperty(anon, 'name', { value: null }); + t.equal(anon.name, null); + t.equal( + inspect(anon), + '[Function (anonymous)]', + 'anon function with falsy `.name` does not hide its anonymity' + ); + + var anon2 = function () {}; // eslint-disable-line func-style + Object.defineProperty(anon2, 'name', { value: 1 }); + t.equal(anon2.name, 1); + t.equal( + inspect(anon2), + '[Function: 1]', + 'anon function with truthy `.name` hides its anonymity' + ); + + t.end(); +}); diff --git a/node_modules/object-inspect/test/global.js b/node_modules/object-inspect/test/global.js new file mode 100644 index 0000000..c57216a --- /dev/null +++ b/node_modules/object-inspect/test/global.js @@ -0,0 +1,17 @@ +'use strict'; + +var inspect = require('../'); + +var test = require('tape'); +var globalThis = require('globalthis')(); + +test('global object', function (t) { + /* eslint-env browser */ + var expected = typeof window === 'undefined' ? 'globalThis' : 'Window'; + t.equal( + inspect([globalThis]), + '[ { [object ' + expected + '] } ]' + ); + + t.end(); +}); diff --git a/node_modules/object-inspect/test/has.js b/node_modules/object-inspect/test/has.js new file mode 100644 index 0000000..01800de --- /dev/null +++ b/node_modules/object-inspect/test/has.js @@ -0,0 +1,15 @@ +'use strict'; + +var inspect = require('../'); +var test = require('tape'); +var mockProperty = require('mock-property'); + +test('when Object#hasOwnProperty is deleted', function (t) { + t.plan(1); + var arr = [1, , 3]; // eslint-disable-line no-sparse-arrays + + t.teardown(mockProperty(Array.prototype, 1, { value: 2 })); // this is needed to account for "in" vs "hasOwnProperty" + t.teardown(mockProperty(Object.prototype, 'hasOwnProperty', { 'delete': true })); + + t.equal(inspect(arr), '[ 1, , 3 ]'); +}); diff --git a/node_modules/object-inspect/test/holes.js b/node_modules/object-inspect/test/holes.js new file mode 100644 index 0000000..87fc8c8 --- /dev/null +++ b/node_modules/object-inspect/test/holes.js @@ -0,0 +1,15 @@ +var test = require('tape'); +var inspect = require('../'); + +var xs = ['a', 'b']; +xs[5] = 'f'; +xs[7] = 'j'; +xs[8] = 'k'; + +test('holes', function (t) { + t.plan(1); + t.equal( + inspect(xs), + "[ 'a', 'b', , , , 'f', , 'j', 'k' ]" + ); +}); diff --git a/node_modules/object-inspect/test/indent-option.js b/node_modules/object-inspect/test/indent-option.js new file mode 100644 index 0000000..89d8fce --- /dev/null +++ b/node_modules/object-inspect/test/indent-option.js @@ -0,0 +1,271 @@ +var test = require('tape'); +var forEach = require('for-each'); + +var inspect = require('../'); + +test('bad indent options', function (t) { + forEach([ + undefined, + true, + false, + -1, + 1.2, + Infinity, + -Infinity, + NaN + ], function (indent) { + t['throws']( + function () { inspect('', { indent: indent }); }, + TypeError, + inspect(indent) + ' is invalid' + ); + }); + + t.end(); +}); + +test('simple object with indent', function (t) { + t.plan(2); + + var obj = { a: 1, b: 2 }; + + var expectedSpaces = [ + '{', + ' a: 1,', + ' b: 2', + '}' + ].join('\n'); + var expectedTabs = [ + '{', + ' a: 1,', + ' b: 2', + '}' + ].join('\n'); + + t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two'); + t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs'); +}); + +test('two deep object with indent', function (t) { + t.plan(2); + + var obj = { a: 1, b: { c: 3, d: 4 } }; + + var expectedSpaces = [ + '{', + ' a: 1,', + ' b: {', + ' c: 3,', + ' d: 4', + ' }', + '}' + ].join('\n'); + var expectedTabs = [ + '{', + ' a: 1,', + ' b: {', + ' c: 3,', + ' d: 4', + ' }', + '}' + ].join('\n'); + + t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two'); + t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs'); +}); + +test('simple array with all single line elements', function (t) { + t.plan(2); + + var obj = [1, 2, 3, 'asdf\nsdf']; + + var expected = '[ 1, 2, 3, \'asdf\\nsdf\' ]'; + + t.equal(inspect(obj, { indent: 2 }), expected, 'two'); + t.equal(inspect(obj, { indent: '\t' }), expected, 'tabs'); +}); + +test('array with complex elements', function (t) { + t.plan(2); + + var obj = [1, { a: 1, b: { c: 1 } }, 'asdf\nsdf']; + + var expectedSpaces = [ + '[', + ' 1,', + ' {', + ' a: 1,', + ' b: {', + ' c: 1', + ' }', + ' },', + ' \'asdf\\nsdf\'', + ']' + ].join('\n'); + var expectedTabs = [ + '[', + ' 1,', + ' {', + ' a: 1,', + ' b: {', + ' c: 1', + ' }', + ' },', + ' \'asdf\\nsdf\'', + ']' + ].join('\n'); + + t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two'); + t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs'); +}); + +test('values', function (t) { + t.plan(2); + var obj = [{}, [], { 'a-b': 5 }]; + + var expectedSpaces = [ + '[', + ' {},', + ' [],', + ' {', + ' \'a-b\': 5', + ' }', + ']' + ].join('\n'); + var expectedTabs = [ + '[', + ' {},', + ' [],', + ' {', + ' \'a-b\': 5', + ' }', + ']' + ].join('\n'); + + t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two'); + t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs'); +}); + +test('Map', { skip: typeof Map !== 'function' }, function (t) { + var map = new Map(); + map.set({ a: 1 }, ['b']); + map.set(3, NaN); + + var expectedStringSpaces = [ + 'Map (2) {', + ' { a: 1 } => [ \'b\' ],', + ' 3 => NaN', + '}' + ].join('\n'); + var expectedStringTabs = [ + 'Map (2) {', + ' { a: 1 } => [ \'b\' ],', + ' 3 => NaN', + '}' + ].join('\n'); + var expectedStringTabsDoubleQuotes = [ + 'Map (2) {', + ' { a: 1 } => [ "b" ],', + ' 3 => NaN', + '}' + ].join('\n'); + + t.equal( + inspect(map, { indent: 2 }), + expectedStringSpaces, + 'Map keys are not indented (two)' + ); + t.equal( + inspect(map, { indent: '\t' }), + expectedStringTabs, + 'Map keys are not indented (tabs)' + ); + t.equal( + inspect(map, { indent: '\t', quoteStyle: 'double' }), + expectedStringTabsDoubleQuotes, + 'Map keys are not indented (tabs + double quotes)' + ); + + t.equal(inspect(new Map(), { indent: 2 }), 'Map (0) {}', 'empty Map should show as empty (two)'); + t.equal(inspect(new Map(), { indent: '\t' }), 'Map (0) {}', 'empty Map should show as empty (tabs)'); + + var nestedMap = new Map(); + nestedMap.set(nestedMap, map); + var expectedNestedSpaces = [ + 'Map (1) {', + ' [Circular] => Map (2) {', + ' { a: 1 } => [ \'b\' ],', + ' 3 => NaN', + ' }', + '}' + ].join('\n'); + var expectedNestedTabs = [ + 'Map (1) {', + ' [Circular] => Map (2) {', + ' { a: 1 } => [ \'b\' ],', + ' 3 => NaN', + ' }', + '}' + ].join('\n'); + t.equal(inspect(nestedMap, { indent: 2 }), expectedNestedSpaces, 'Map containing a Map should work (two)'); + t.equal(inspect(nestedMap, { indent: '\t' }), expectedNestedTabs, 'Map containing a Map should work (tabs)'); + + t.end(); +}); + +test('Set', { skip: typeof Set !== 'function' }, function (t) { + var set = new Set(); + set.add({ a: 1 }); + set.add(['b']); + var expectedStringSpaces = [ + 'Set (2) {', + ' {', + ' a: 1', + ' },', + ' [ \'b\' ]', + '}' + ].join('\n'); + var expectedStringTabs = [ + 'Set (2) {', + ' {', + ' a: 1', + ' },', + ' [ \'b\' ]', + '}' + ].join('\n'); + t.equal(inspect(set, { indent: 2 }), expectedStringSpaces, 'new Set([{ a: 1 }, ["b"]]) should show size and contents (two)'); + t.equal(inspect(set, { indent: '\t' }), expectedStringTabs, 'new Set([{ a: 1 }, ["b"]]) should show size and contents (tabs)'); + + t.equal(inspect(new Set(), { indent: 2 }), 'Set (0) {}', 'empty Set should show as empty (two)'); + t.equal(inspect(new Set(), { indent: '\t' }), 'Set (0) {}', 'empty Set should show as empty (tabs)'); + + var nestedSet = new Set(); + nestedSet.add(set); + nestedSet.add(nestedSet); + var expectedNestedSpaces = [ + 'Set (2) {', + ' Set (2) {', + ' {', + ' a: 1', + ' },', + ' [ \'b\' ]', + ' },', + ' [Circular]', + '}' + ].join('\n'); + var expectedNestedTabs = [ + 'Set (2) {', + ' Set (2) {', + ' {', + ' a: 1', + ' },', + ' [ \'b\' ]', + ' },', + ' [Circular]', + '}' + ].join('\n'); + t.equal(inspect(nestedSet, { indent: 2 }), expectedNestedSpaces, 'Set containing a Set should work (two)'); + t.equal(inspect(nestedSet, { indent: '\t' }), expectedNestedTabs, 'Set containing a Set should work (tabs)'); + + t.end(); +}); diff --git a/node_modules/object-inspect/test/inspect.js b/node_modules/object-inspect/test/inspect.js new file mode 100644 index 0000000..1abf81b --- /dev/null +++ b/node_modules/object-inspect/test/inspect.js @@ -0,0 +1,139 @@ +var test = require('tape'); +var hasSymbols = require('has-symbols/shams')(); +var utilInspect = require('../util.inspect'); +var repeat = require('string.prototype.repeat'); + +var inspect = require('..'); + +test('inspect', function (t) { + t.plan(5); + + var obj = [{ inspect: function xyzInspect() { return '!XYZ¡'; } }, []]; + var stringResult = '[ !XYZ¡, [] ]'; + var falseResult = '[ { inspect: [Function: xyzInspect] }, [] ]'; + + t.equal(inspect(obj), stringResult); + t.equal(inspect(obj, { customInspect: true }), stringResult); + t.equal(inspect(obj, { customInspect: 'symbol' }), falseResult); + t.equal(inspect(obj, { customInspect: false }), falseResult); + t['throws']( + function () { inspect(obj, { customInspect: 'not a boolean or "symbol"' }); }, + TypeError, + '`customInspect` must be a boolean or the string "symbol"' + ); +}); + +test('inspect custom symbol', { skip: !hasSymbols || !utilInspect || !utilInspect.custom }, function (t) { + t.plan(4); + + var obj = { inspect: function stringInspect() { return 'string'; } }; + obj[utilInspect.custom] = function custom() { return 'symbol'; }; + + var symbolResult = '[ symbol, [] ]'; + var stringResult = '[ string, [] ]'; + var falseResult = '[ { inspect: [Function: stringInspect]' + (utilInspect.custom ? ', [' + inspect(utilInspect.custom) + ']: [Function: custom]' : '') + ' }, [] ]'; + + var symbolStringFallback = utilInspect.custom ? symbolResult : stringResult; + var symbolFalseFallback = utilInspect.custom ? symbolResult : falseResult; + + t.equal(inspect([obj, []]), symbolStringFallback); + t.equal(inspect([obj, []], { customInspect: true }), symbolStringFallback); + t.equal(inspect([obj, []], { customInspect: 'symbol' }), symbolFalseFallback); + t.equal(inspect([obj, []], { customInspect: false }), falseResult); +}); + +test('symbols', { skip: !hasSymbols }, function (t) { + t.plan(2); + + var obj = { a: 1 }; + obj[Symbol('test')] = 2; + obj[Symbol.iterator] = 3; + Object.defineProperty(obj, Symbol('non-enum'), { + enumerable: false, + value: 4 + }); + + if (typeof Symbol.iterator === 'symbol') { + t.equal(inspect(obj), '{ a: 1, [Symbol(test)]: 2, [Symbol(Symbol.iterator)]: 3 }', 'object with symbols'); + t.equal(inspect([obj, []]), '[ { a: 1, [Symbol(test)]: 2, [Symbol(Symbol.iterator)]: 3 }, [] ]', 'object with symbols in array'); + } else { + // symbol sham key ordering is unreliable + t.match( + inspect(obj), + /^(?:{ a: 1, \[Symbol\(test\)\]: 2, \[Symbol\(Symbol.iterator\)\]: 3 }|{ a: 1, \[Symbol\(Symbol.iterator\)\]: 3, \[Symbol\(test\)\]: 2 })$/, + 'object with symbols (nondeterministic symbol sham key ordering)' + ); + t.match( + inspect([obj, []]), + /^\[ (?:{ a: 1, \[Symbol\(test\)\]: 2, \[Symbol\(Symbol.iterator\)\]: 3 }|{ a: 1, \[Symbol\(Symbol.iterator\)\]: 3, \[Symbol\(test\)\]: 2 }), \[\] \]$/, + 'object with symbols in array (nondeterministic symbol sham key ordering)' + ); + } +}); + +test('maxStringLength', function (t) { + t['throws']( + function () { inspect('', { maxStringLength: -1 }); }, + TypeError, + 'maxStringLength must be >= 0, or Infinity, not negative' + ); + + var str = repeat('a', 1e8); + + t.equal( + inspect([str], { maxStringLength: 10 }), + '[ \'aaaaaaaaaa\'... 99999990 more characters ]', + 'maxStringLength option limits output' + ); + + t.equal( + inspect(['f'], { maxStringLength: null }), + '[ \'\'... 1 more character ]', + 'maxStringLength option accepts `null`' + ); + + t.equal( + inspect([str], { maxStringLength: Infinity }), + '[ \'' + str + '\' ]', + 'maxStringLength option accepts ∞' + ); + + t.end(); +}); + +test('inspect options', { skip: !utilInspect.custom }, function (t) { + var obj = {}; + obj[utilInspect.custom] = function () { + return JSON.stringify(arguments); + }; + t.equal( + inspect(obj), + utilInspect(obj, { depth: 5 }), + 'custom symbols will use node\'s inspect' + ); + t.equal( + inspect(obj, { depth: 2 }), + utilInspect(obj, { depth: 2 }), + 'a reduced depth will be passed to node\'s inspect' + ); + t.equal( + inspect({ d1: obj }, { depth: 3 }), + '{ d1: ' + utilInspect(obj, { depth: 2 }) + ' }', + 'deep objects will receive a reduced depth' + ); + t.equal( + inspect({ d1: obj }, { depth: 1 }), + '{ d1: [Object] }', + 'unlike nodejs inspect, customInspect will not be used once the depth is exceeded.' + ); + t.end(); +}); + +test('inspect URL', { skip: typeof URL === 'undefined' }, function (t) { + t.match( + inspect(new URL('https://nodejs.org')), + /nodejs\.org/, // Different environments stringify it differently + 'url can be inspected' + ); + t.end(); +}); diff --git a/node_modules/object-inspect/test/lowbyte.js b/node_modules/object-inspect/test/lowbyte.js new file mode 100644 index 0000000..68a345d --- /dev/null +++ b/node_modules/object-inspect/test/lowbyte.js @@ -0,0 +1,12 @@ +var test = require('tape'); +var inspect = require('../'); + +var obj = { x: 'a\r\nb', y: '\x05! \x1f \x12' }; + +test('interpolate low bytes', function (t) { + t.plan(1); + t.equal( + inspect(obj), + "{ x: 'a\\r\\nb', y: '\\x05! \\x1F \\x12' }" + ); +}); diff --git a/node_modules/object-inspect/test/number.js b/node_modules/object-inspect/test/number.js new file mode 100644 index 0000000..8f287e8 --- /dev/null +++ b/node_modules/object-inspect/test/number.js @@ -0,0 +1,58 @@ +var test = require('tape'); +var v = require('es-value-fixtures'); +var forEach = require('for-each'); + +var inspect = require('../'); + +test('negative zero', function (t) { + t.equal(inspect(0), '0', 'inspect(0) === "0"'); + t.equal(inspect(Object(0)), 'Object(0)', 'inspect(Object(0)) === "Object(0)"'); + + t.equal(inspect(-0), '-0', 'inspect(-0) === "-0"'); + t.equal(inspect(Object(-0)), 'Object(-0)', 'inspect(Object(-0)) === "Object(-0)"'); + + t.end(); +}); + +test('numericSeparator', function (t) { + forEach(v.nonBooleans, function (nonBoolean) { + t['throws']( + function () { inspect(true, { numericSeparator: nonBoolean }); }, + TypeError, + inspect(nonBoolean) + ' is not a boolean' + ); + }); + + t.test('3 digit numbers', function (st) { + var failed = false; + for (var i = -999; i < 1000; i += 1) { + var actual = inspect(i); + var actualSepNo = inspect(i, { numericSeparator: false }); + var actualSepYes = inspect(i, { numericSeparator: true }); + var expected = String(i); + if (actual !== expected || actualSepNo !== expected || actualSepYes !== expected) { + failed = true; + t.equal(actual, expected); + t.equal(actualSepNo, expected); + t.equal(actualSepYes, expected); + } + } + + st.notOk(failed, 'all 3 digit numbers passed'); + + st.end(); + }); + + t.equal(inspect(1e3), '1000', '1000'); + t.equal(inspect(1e3, { numericSeparator: false }), '1000', '1000, numericSeparator false'); + t.equal(inspect(1e3, { numericSeparator: true }), '1_000', '1000, numericSeparator true'); + t.equal(inspect(-1e3), '-1000', '-1000'); + t.equal(inspect(-1e3, { numericSeparator: false }), '-1000', '-1000, numericSeparator false'); + t.equal(inspect(-1e3, { numericSeparator: true }), '-1_000', '-1000, numericSeparator true'); + + t.equal(inspect(1234.5678, { numericSeparator: true }), '1_234.567_8', 'fractional numbers get separators'); + t.equal(inspect(1234.56789, { numericSeparator: true }), '1_234.567_89', 'fractional numbers get separators'); + t.equal(inspect(1234.567891, { numericSeparator: true }), '1_234.567_891', 'fractional numbers get separators'); + + t.end(); +}); diff --git a/node_modules/object-inspect/test/quoteStyle.js b/node_modules/object-inspect/test/quoteStyle.js new file mode 100644 index 0000000..da23e63 --- /dev/null +++ b/node_modules/object-inspect/test/quoteStyle.js @@ -0,0 +1,26 @@ +'use strict'; + +var inspect = require('../'); +var test = require('tape'); + +test('quoteStyle option', function (t) { + t['throws'](function () { inspect(null, { quoteStyle: false }); }, 'false is not a valid value'); + t['throws'](function () { inspect(null, { quoteStyle: true }); }, 'true is not a valid value'); + t['throws'](function () { inspect(null, { quoteStyle: '' }); }, '"" is not a valid value'); + t['throws'](function () { inspect(null, { quoteStyle: {} }); }, '{} is not a valid value'); + t['throws'](function () { inspect(null, { quoteStyle: [] }); }, '[] is not a valid value'); + t['throws'](function () { inspect(null, { quoteStyle: 42 }); }, '42 is not a valid value'); + t['throws'](function () { inspect(null, { quoteStyle: NaN }); }, 'NaN is not a valid value'); + t['throws'](function () { inspect(null, { quoteStyle: function () {} }); }, 'a function is not a valid value'); + + t.equal(inspect('"', { quoteStyle: 'single' }), '\'"\'', 'double quote, quoteStyle: "single"'); + t.equal(inspect('"', { quoteStyle: 'double' }), '"\\""', 'double quote, quoteStyle: "double"'); + + t.equal(inspect('\'', { quoteStyle: 'single' }), '\'\\\'\'', 'single quote, quoteStyle: "single"'); + t.equal(inspect('\'', { quoteStyle: 'double' }), '"\'"', 'single quote, quoteStyle: "double"'); + + t.equal(inspect('`', { quoteStyle: 'single' }), '\'`\'', 'backtick, quoteStyle: "single"'); + t.equal(inspect('`', { quoteStyle: 'double' }), '"`"', 'backtick, quoteStyle: "double"'); + + t.end(); +}); diff --git a/node_modules/object-inspect/test/toStringTag.js b/node_modules/object-inspect/test/toStringTag.js new file mode 100644 index 0000000..95f8270 --- /dev/null +++ b/node_modules/object-inspect/test/toStringTag.js @@ -0,0 +1,40 @@ +'use strict'; + +var test = require('tape'); +var hasToStringTag = require('has-tostringtag/shams')(); + +var inspect = require('../'); + +test('Symbol.toStringTag', { skip: !hasToStringTag }, function (t) { + t.plan(4); + + var obj = { a: 1 }; + t.equal(inspect(obj), '{ a: 1 }', 'object, no Symbol.toStringTag'); + + obj[Symbol.toStringTag] = 'foo'; + t.equal(inspect(obj), '{ a: 1, [Symbol(Symbol.toStringTag)]: \'foo\' }', 'object with Symbol.toStringTag'); + + t.test('null objects', { skip: 'toString' in { __proto__: null } }, function (st) { + st.plan(2); + + var dict = { __proto__: null, a: 1 }; + st.equal(inspect(dict), '[Object: null prototype] { a: 1 }', 'null object with Symbol.toStringTag'); + + dict[Symbol.toStringTag] = 'Dict'; + st.equal(inspect(dict), '[Dict: null prototype] { a: 1, [Symbol(Symbol.toStringTag)]: \'Dict\' }', 'null object with Symbol.toStringTag'); + }); + + t.test('instances', function (st) { + st.plan(4); + + function C() { + this.a = 1; + } + st.equal(Object.prototype.toString.call(new C()), '[object Object]', 'instance, no toStringTag, Object.prototype.toString'); + st.equal(inspect(new C()), 'C { a: 1 }', 'instance, no toStringTag'); + + C.prototype[Symbol.toStringTag] = 'Class!'; + st.equal(Object.prototype.toString.call(new C()), '[object Class!]', 'instance, with toStringTag, Object.prototype.toString'); + st.equal(inspect(new C()), 'C [Class!] { a: 1 }', 'instance, with toStringTag'); + }); +}); diff --git a/node_modules/object-inspect/test/undef.js b/node_modules/object-inspect/test/undef.js new file mode 100644 index 0000000..e3f4961 --- /dev/null +++ b/node_modules/object-inspect/test/undef.js @@ -0,0 +1,12 @@ +var test = require('tape'); +var inspect = require('../'); + +var obj = { a: 1, b: [3, 4, undefined, null], c: undefined, d: null }; + +test('undef and null', function (t) { + t.plan(1); + t.equal( + inspect(obj), + '{ a: 1, b: [ 3, 4, undefined, null ], c: undefined, d: null }' + ); +}); diff --git a/node_modules/object-inspect/test/values.js b/node_modules/object-inspect/test/values.js new file mode 100644 index 0000000..15986cd --- /dev/null +++ b/node_modules/object-inspect/test/values.js @@ -0,0 +1,261 @@ +'use strict'; + +var inspect = require('../'); +var test = require('tape'); +var mockProperty = require('mock-property'); +var hasSymbols = require('has-symbols/shams')(); +var hasToStringTag = require('has-tostringtag/shams')(); +var forEach = require('for-each'); +var semver = require('semver'); + +test('values', function (t) { + t.plan(1); + var obj = [{}, [], { 'a-b': 5 }]; + t.equal(inspect(obj), '[ {}, [], { \'a-b\': 5 } ]'); +}); + +test('arrays with properties', function (t) { + t.plan(1); + var arr = [3]; + arr.foo = 'bar'; + var obj = [1, 2, arr]; + obj.baz = 'quux'; + obj.index = -1; + t.equal(inspect(obj), '[ 1, 2, [ 3, foo: \'bar\' ], baz: \'quux\', index: -1 ]'); +}); + +test('has', function (t) { + t.plan(1); + t.teardown(mockProperty(Object.prototype, 'hasOwnProperty', { 'delete': true })); + + t.equal(inspect({ a: 1, b: 2 }), '{ a: 1, b: 2 }'); +}); + +test('indexOf seen', function (t) { + t.plan(1); + var xs = [1, 2, 3, {}]; + xs.push(xs); + + var seen = []; + seen.indexOf = undefined; + + t.equal( + inspect(xs, {}, 0, seen), + '[ 1, 2, 3, {}, [Circular] ]' + ); +}); + +test('seen seen', function (t) { + t.plan(1); + var xs = [1, 2, 3]; + + var seen = [xs]; + seen.indexOf = undefined; + + t.equal( + inspect(xs, {}, 0, seen), + '[Circular]' + ); +}); + +test('seen seen seen', function (t) { + t.plan(1); + var xs = [1, 2, 3]; + + var seen = [5, xs]; + seen.indexOf = undefined; + + t.equal( + inspect(xs, {}, 0, seen), + '[Circular]' + ); +}); + +test('symbols', { skip: !hasSymbols }, function (t) { + var sym = Symbol('foo'); + t.equal(inspect(sym), 'Symbol(foo)', 'Symbol("foo") should be "Symbol(foo)"'); + if (typeof sym === 'symbol') { + // Symbol shams are incapable of differentiating boxed from unboxed symbols + t.equal(inspect(Object(sym)), 'Object(Symbol(foo))', 'Object(Symbol("foo")) should be "Object(Symbol(foo))"'); + } + + t.test('toStringTag', { skip: !hasToStringTag }, function (st) { + st.plan(1); + + var faker = {}; + faker[Symbol.toStringTag] = 'Symbol'; + st.equal( + inspect(faker), + '{ [Symbol(Symbol.toStringTag)]: \'Symbol\' }', + 'object lying about being a Symbol inspects as an object' + ); + }); + + t.end(); +}); + +test('Map', { skip: typeof Map !== 'function' }, function (t) { + var map = new Map(); + map.set({ a: 1 }, ['b']); + map.set(3, NaN); + var expectedString = 'Map (2) {' + inspect({ a: 1 }) + ' => ' + inspect(['b']) + ', 3 => NaN}'; + t.equal(inspect(map), expectedString, 'new Map([[{ a: 1 }, ["b"]], [3, NaN]]) should show size and contents'); + t.equal(inspect(new Map()), 'Map (0) {}', 'empty Map should show as empty'); + + var nestedMap = new Map(); + nestedMap.set(nestedMap, map); + t.equal(inspect(nestedMap), 'Map (1) {[Circular] => ' + expectedString + '}', 'Map containing a Map should work'); + + t.end(); +}); + +test('WeakMap', { skip: typeof WeakMap !== 'function' }, function (t) { + var map = new WeakMap(); + map.set({ a: 1 }, ['b']); + var expectedString = 'WeakMap { ? }'; + t.equal(inspect(map), expectedString, 'new WeakMap([[{ a: 1 }, ["b"]]]) should not show size or contents'); + t.equal(inspect(new WeakMap()), 'WeakMap { ? }', 'empty WeakMap should not show as empty'); + + t.end(); +}); + +test('Set', { skip: typeof Set !== 'function' }, function (t) { + var set = new Set(); + set.add({ a: 1 }); + set.add(['b']); + var expectedString = 'Set (2) {' + inspect({ a: 1 }) + ', ' + inspect(['b']) + '}'; + t.equal(inspect(set), expectedString, 'new Set([{ a: 1 }, ["b"]]) should show size and contents'); + t.equal(inspect(new Set()), 'Set (0) {}', 'empty Set should show as empty'); + + var nestedSet = new Set(); + nestedSet.add(set); + nestedSet.add(nestedSet); + t.equal(inspect(nestedSet), 'Set (2) {' + expectedString + ', [Circular]}', 'Set containing a Set should work'); + + t.end(); +}); + +test('WeakSet', { skip: typeof WeakSet !== 'function' }, function (t) { + var map = new WeakSet(); + map.add({ a: 1 }); + var expectedString = 'WeakSet { ? }'; + t.equal(inspect(map), expectedString, 'new WeakSet([{ a: 1 }]) should not show size or contents'); + t.equal(inspect(new WeakSet()), 'WeakSet { ? }', 'empty WeakSet should not show as empty'); + + t.end(); +}); + +test('WeakRef', { skip: typeof WeakRef !== 'function' }, function (t) { + var ref = new WeakRef({ a: 1 }); + var expectedString = 'WeakRef { ? }'; + t.equal(inspect(ref), expectedString, 'new WeakRef({ a: 1 }) should not show contents'); + + t.end(); +}); + +test('FinalizationRegistry', { skip: typeof FinalizationRegistry !== 'function' }, function (t) { + var registry = new FinalizationRegistry(function () {}); + var expectedString = 'FinalizationRegistry [FinalizationRegistry] {}'; + t.equal(inspect(registry), expectedString, 'new FinalizationRegistry(function () {}) should work normallys'); + + t.end(); +}); + +test('Strings', function (t) { + var str = 'abc'; + + t.equal(inspect(str), "'" + str + "'", 'primitive string shows as such'); + t.equal(inspect(str, { quoteStyle: 'single' }), "'" + str + "'", 'primitive string shows as such, single quoted'); + t.equal(inspect(str, { quoteStyle: 'double' }), '"' + str + '"', 'primitive string shows as such, double quoted'); + t.equal(inspect(Object(str)), 'Object(' + inspect(str) + ')', 'String object shows as such'); + t.equal(inspect(Object(str), { quoteStyle: 'single' }), 'Object(' + inspect(str, { quoteStyle: 'single' }) + ')', 'String object shows as such, single quoted'); + t.equal(inspect(Object(str), { quoteStyle: 'double' }), 'Object(' + inspect(str, { quoteStyle: 'double' }) + ')', 'String object shows as such, double quoted'); + + t.end(); +}); + +test('Numbers', function (t) { + var num = 42; + + t.equal(inspect(num), String(num), 'primitive number shows as such'); + t.equal(inspect(Object(num)), 'Object(' + inspect(num) + ')', 'Number object shows as such'); + + t.end(); +}); + +test('Booleans', function (t) { + t.equal(inspect(true), String(true), 'primitive true shows as such'); + t.equal(inspect(Object(true)), 'Object(' + inspect(true) + ')', 'Boolean object true shows as such'); + + t.equal(inspect(false), String(false), 'primitive false shows as such'); + t.equal(inspect(Object(false)), 'Object(' + inspect(false) + ')', 'Boolean false object shows as such'); + + t.end(); +}); + +test('Date', function (t) { + var now = new Date(); + t.equal(inspect(now), String(now), 'Date shows properly'); + t.equal(inspect(new Date(NaN)), 'Invalid Date', 'Invalid Date shows properly'); + + t.end(); +}); + +test('RegExps', function (t) { + t.equal(inspect(/a/g), '/a/g', 'regex shows properly'); + t.equal(inspect(new RegExp('abc', 'i')), '/abc/i', 'new RegExp shows properly'); + + var match = 'abc abc'.match(/[ab]+/); + delete match.groups; // for node < 10 + t.equal(inspect(match), '[ \'ab\', index: 0, input: \'abc abc\' ]', 'RegExp match object shows properly'); + + t.end(); +}); + +test('Proxies', { skip: typeof Proxy !== 'function' || !hasToStringTag }, function (t) { + var target = { proxy: true }; + var fake = new Proxy(target, { has: function () { return false; } }); + + // needed to work around a weird difference in node v6.0 - v6.4 where non-present properties are not logged + var isNode60 = semver.satisfies(process.version, '6.0 - 6.4'); + + forEach([ + 'Boolean', + 'Number', + 'String', + 'Symbol', + 'Date' + ], function (tag) { + target[Symbol.toStringTag] = tag; + + t.equal( + inspect(fake), + '{ ' + (isNode60 ? '' : 'proxy: true, ') + '[Symbol(Symbol.toStringTag)]: \'' + tag + '\' }', + 'Proxy for + ' + tag + ' shows as the target, which has no slots' + ); + }); + + t.end(); +}); + +test('fakers', { skip: !hasToStringTag }, function (t) { + var target = { proxy: false }; + + forEach([ + 'Boolean', + 'Number', + 'String', + 'Symbol', + 'Date' + ], function (tag) { + target[Symbol.toStringTag] = tag; + + t.equal( + inspect(target), + '{ proxy: false, [Symbol(Symbol.toStringTag)]: \'' + tag + '\' }', + 'Object pretending to be ' + tag + ' does not trick us' + ); + }); + + t.end(); +}); diff --git a/node_modules/object-inspect/util.inspect.js b/node_modules/object-inspect/util.inspect.js new file mode 100644 index 0000000..7784fab --- /dev/null +++ b/node_modules/object-inspect/util.inspect.js @@ -0,0 +1 @@ +module.exports = require('util').inspect; diff --git a/node_modules/once/LICENSE b/node_modules/once/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/node_modules/once/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/once/README.md b/node_modules/once/README.md new file mode 100644 index 0000000..1f1ffca --- /dev/null +++ b/node_modules/once/README.md @@ -0,0 +1,79 @@ +# once + +Only call a function once. + +## usage + +```javascript +var once = require('once') + +function load (file, cb) { + cb = once(cb) + loader.load('file') + loader.once('load', cb) + loader.once('error', cb) +} +``` + +Or add to the Function.prototype in a responsible way: + +```javascript +// only has to be done once +require('once').proto() + +function load (file, cb) { + cb = cb.once() + loader.load('file') + loader.once('load', cb) + loader.once('error', cb) +} +``` + +Ironically, the prototype feature makes this module twice as +complicated as necessary. + +To check whether you function has been called, use `fn.called`. Once the +function is called for the first time the return value of the original +function is saved in `fn.value` and subsequent calls will continue to +return this value. + +```javascript +var once = require('once') + +function load (cb) { + cb = once(cb) + var stream = createStream() + stream.once('data', cb) + stream.once('end', function () { + if (!cb.called) cb(new Error('not found')) + }) +} +``` + +## `once.strict(func)` + +Throw an error if the function is called twice. + +Some functions are expected to be called only once. Using `once` for them would +potentially hide logical errors. + +In the example below, the `greet` function has to call the callback only once: + +```javascript +function greet (name, cb) { + // return is missing from the if statement + // when no name is passed, the callback is called twice + if (!name) cb('Hello anonymous') + cb('Hello ' + name) +} + +function log (msg) { + console.log(msg) +} + +// this will print 'Hello anonymous' but the logical error will be missed +greet(null, once(msg)) + +// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second time +greet(null, once.strict(msg)) +``` diff --git a/node_modules/once/once.js b/node_modules/once/once.js new file mode 100644 index 0000000..2354067 --- /dev/null +++ b/node_modules/once/once.js @@ -0,0 +1,42 @@ +var wrappy = require('wrappy') +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) + + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} + +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} diff --git a/node_modules/once/package.json b/node_modules/once/package.json new file mode 100644 index 0000000..16815b2 --- /dev/null +++ b/node_modules/once/package.json @@ -0,0 +1,33 @@ +{ + "name": "once", + "version": "1.4.0", + "description": "Run a function exactly one time", + "main": "once.js", + "directories": { + "test": "test" + }, + "dependencies": { + "wrappy": "1" + }, + "devDependencies": { + "tap": "^7.0.1" + }, + "scripts": { + "test": "tap test/*.js" + }, + "files": [ + "once.js" + ], + "repository": { + "type": "git", + "url": "git://github.com/isaacs/once" + }, + "keywords": [ + "once", + "function", + "one", + "single" + ], + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "ISC" +} diff --git a/node_modules/os-name/cli.js b/node_modules/os-name/cli.js new file mode 100644 index 0000000..8413d2a --- /dev/null +++ b/node_modules/os-name/cli.js @@ -0,0 +1,28 @@ +#!/usr/bin/env node +'use strict'; +var pkg = require('./package.json'); +var osName = require('./'); +var argv = process.argv; + +function help() { + console.log([ + '', + ' ' + pkg.description, + '', + ' Example', + ' os-name', + ' OS X Mavericks' + ].join('\n')); +} + +if (argv.indexOf('--help') !== -1) { + help(); + return; +} + +if (argv.indexOf('--version') !== -1) { + console.log(pkg.version); + return; +} + +console.log(osName()); diff --git a/node_modules/os-name/index.js b/node_modules/os-name/index.js new file mode 100644 index 0000000..23993d9 --- /dev/null +++ b/node_modules/os-name/index.js @@ -0,0 +1,32 @@ +'use strict'; +var os = require('os'); +var osxRelease = require('osx-release'); +var winRelease = require('win-release'); + +module.exports = function (platform, release) { + if (!platform && release) { + throw new Error('You can\'t specify a `release` without specfying `platform`'); + } + + platform = platform || os.platform(); + release = release || os.release(); + + var id; + + if (platform === 'darwin') { + id = osxRelease(release).name; + return 'OS X' + (id ? ' ' + id : ''); + } + + if (platform === 'linux') { + id = release.replace(/^(\d+\.\d+).*/, '$1'); + return 'Linux' + (id ? ' ' + id : ''); + } + + if (platform === 'win32') { + id = winRelease(release); + return 'Windows' + (id ? ' ' + id : ''); + } + + return platform; +}; diff --git a/node_modules/os-name/package.json b/node_modules/os-name/package.json new file mode 100644 index 0000000..e72c2fa --- /dev/null +++ b/node_modules/os-name/package.json @@ -0,0 +1,47 @@ +{ + "name": "os-name", + "version": "1.0.3", + "description": "Get the name of the current operating system. Example: OS X Mavericks", + "license": "MIT", + "repository": "sindresorhus/os-name", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "bin": { + "os-name": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js", + "cli.js" + ], + "keywords": [ + "cli", + "bin", + "os", + "operating", + "system", + "platform", + "name", + "title", + "release", + "version", + "osx", + "windows", + "linux" + ], + "dependencies": { + "osx-release": "^1.0.0", + "win-release": "^1.0.0" + }, + "devDependencies": { + "mocha": "*" + } +} diff --git a/node_modules/os-name/readme.md b/node_modules/os-name/readme.md new file mode 100644 index 0000000..9940814 --- /dev/null +++ b/node_modules/os-name/readme.md @@ -0,0 +1,76 @@ +# os-name [![Build Status](https://travis-ci.org/sindresorhus/os-name.svg?branch=master)](https://travis-ci.org/sindresorhus/os-name) + +> Get the name of the current operating system. Example: `OS X Mavericks` + +Useful for analytics and debugging. + + +## Install + +```sh +$ npm install --save os-name +``` + + +## Usage + +```js +var os = require('os'); +var osName = require('os-name'); + +// on an OS X Mavericks system + +osName(); +//=> OS X Mavericks + +osName(os.platform(), os.release()); +//=> OS X Mavericks + +osName(os.platform()); +//=> OS X + +osName('linux', '3.13.0-24-generic'); +//=> Linux 3.13 + +osName('win32', '6.3.9600'); +//=> Windows 8.1 + +osName('win32'); +// Windows +``` + + +## API + +### osName([platform, release]) + +By default the name of the current operating system is returned. + +You can optionally supply a custom [`os.platform()`](http://nodejs.org/api/os.html#os_os_platform) and [`os.release()`](http://nodejs.org/api/os.html#os_os_release). + +Check out [getos](https://github.com/wblankenship/getos) if you need the Linux distribution name. + + +## CLI + +```sh +$ npm install --global os-name +``` + +```sh +$ os-name --help + + Example + os-name + OS X Mavericks +``` + + +## Contributing + +Production systems depend on this package for logging / tracking. Please be careful when introducing new output, and adhere to existing output format (whitespace, capitalization, etc.). + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/osx-release/cli.js b/node_modules/osx-release/cli.js new file mode 100644 index 0000000..4e05a43 --- /dev/null +++ b/node_modules/osx-release/cli.js @@ -0,0 +1,41 @@ +#!/usr/bin/env node +'use strict'; +var argv = require('minimist')(process.argv.slice(2)); +var pkg = require('./package.json'); +var osxRelease = require('./'); +var input = argv._[0]; + +function help() { + console.log([ + '', + ' ' + pkg.description, + '', + ' Usage', + ' osx-release [release]', + '', + ' Example', + ' osx-release', + ' Mavericks 10.9', + '', + ' osx-release 14.0.0', + ' Yosemite 10.10' + ].join('\n')); +} + +if (!input || argv.help) { + help(); + return; +} + +if (argv.version) { + console.log(pkg.version); + return; +} + +var output = osxRelease(input); + +if (!output.name || !output.version) { + process.exit(1); +} + +console.log(output.name + ' ' + output.version); diff --git a/node_modules/osx-release/index.js b/node_modules/osx-release/index.js new file mode 100644 index 0000000..7071581 --- /dev/null +++ b/node_modules/osx-release/index.js @@ -0,0 +1,24 @@ +'use strict'; +var os = require('os'); + +var nameMap = { + '15': 'El Capitan', + '14': 'Yosemite', + '13': 'Mavericks', + '12': 'Mountain Lion', + '11': 'Lion', + '10': 'Snow Leopard', + '9': 'Leopard', + '8': 'Tiger', + '7': 'Panther', + '6': 'Jaguar', + '5': 'Puma' +}; + +module.exports = function (release) { + release = (release || os.release()).split('.')[0]; + return { + name: nameMap[release], + version: '10.' + (Number(release) - 4) + }; +}; diff --git a/node_modules/osx-release/license b/node_modules/osx-release/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/node_modules/osx-release/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/osx-release/package.json b/node_modules/osx-release/package.json new file mode 100644 index 0000000..3a0c358 --- /dev/null +++ b/node_modules/osx-release/package.json @@ -0,0 +1,44 @@ +{ + "name": "osx-release", + "version": "1.1.0", + "description": "Get the name and version of a OS X release from the Darwin version. Example: 13.2.0 → {name: 'Mavericks', version: '10.9'}", + "license": "MIT", + "repository": "sindresorhus/osx-release", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "bin": "cli.js", + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js", + "cli.js" + ], + "keywords": [ + "cli-app", + "cli", + "bin", + "os", + "osx", + "darwin", + "operating", + "system", + "platform", + "name", + "title", + "release", + "version" + ], + "dependencies": { + "minimist": "^1.1.0" + }, + "devDependencies": { + "mocha": "*" + } +} diff --git a/node_modules/osx-release/readme.md b/node_modules/osx-release/readme.md new file mode 100644 index 0000000..59d39e4 --- /dev/null +++ b/node_modules/osx-release/readme.md @@ -0,0 +1,78 @@ +# osx-release [![Build Status](https://travis-ci.org/sindresorhus/osx-release.svg?branch=master)](https://travis-ci.org/sindresorhus/osx-release) + +> Get the name and version of a OS X release from the Darwin version. +> Example: `13.2.0` → `{name: 'Mavericks', version: '10.9'}` + + +## Install + +```sh +$ npm install --save osx-release +``` + + +## Usage + +```js +var os = require('os'); +var osxRelease = require('osx-release'); + +// on an OS X Mavericks system + +osxRelease(); +//=> {name: 'Mavericks', version: '10.9'} + +os.release(); +//=> 13.2.0 +// this is the Darwin kernel version + +osxRelease(os.release()); +//=> {name: 'Mavericks', version: '10.9'} + +osxRelease('14.0.0'); +//=> {name: 'Yosemite', version: '10.10'} +``` + + +## API + +### osxRelease([release]) + +#### release + +Type: `string` + +By default the current OS is used, but you can supply a custom [Darwin kernel version](http://en.wikipedia.org/wiki/Darwin_%28operating_system%29#Release_history), which is the output of [`os.release()`](http://nodejs.org/api/os.html#os_os_release). + + +## CLI + +```sh +$ npm install --global osx-release +``` + +```sh +$ osx-release --help + + Usage + osx-release [release] + + Example + osx-release + Mavericks 10.9 + + osx-release 14.0.0 + Yosemite 10.10 +``` + + +## Related + +- [os-name](https://github.com/sindresorhus/os-name) - Get the name of the current operating system. Example: `OS X Mavericks` +- [osx-version](https://github.com/sindresorhus/osx-version) - Get the OS X version of the current system. Example: `10.9.3` +- [win-release](https://github.com/sindresorhus/osx-version) - Get the name of a Windows version from the release number: `5.1.2600` → `XP` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/pause-stream/.npmignore b/node_modules/pause-stream/.npmignore new file mode 100644 index 0000000..13abef4 --- /dev/null +++ b/node_modules/pause-stream/.npmignore @@ -0,0 +1,3 @@ +node_modules +node_modules/* +npm_debug.log diff --git a/node_modules/pause-stream/LICENSE b/node_modules/pause-stream/LICENSE new file mode 100644 index 0000000..6a477d4 --- /dev/null +++ b/node_modules/pause-stream/LICENSE @@ -0,0 +1,231 @@ +Dual Licensed MIT and Apache 2 + +The MIT License + +Copyright (c) 2013 Dominic Tarr + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + ----------------------------------------------------------------------- + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (c) 2013 Dominic Tarr + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/node_modules/pause-stream/index.js b/node_modules/pause-stream/index.js new file mode 100644 index 0000000..0e0bf96 --- /dev/null +++ b/node_modules/pause-stream/index.js @@ -0,0 +1,3 @@ +//through@2 handles this by default! +module.exports = require('through') + diff --git a/node_modules/pause-stream/package.json b/node_modules/pause-stream/package.json new file mode 100644 index 0000000..2a22646 --- /dev/null +++ b/node_modules/pause-stream/package.json @@ -0,0 +1,35 @@ +{ + "name": "pause-stream", + "version": "0.0.11", + "description": "a ThroughStream that strictly buffers all readable events when paused.", + "main": "index.js", + "directories": { + "test": "test" + }, + "devDependencies": { + "stream-tester": "0.0.2", + "stream-spec": "~0.2.0" + }, + "scripts": { + "test": "node test/index.js && node test/pause-end.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/dominictarr/pause-stream.git" + }, + "keywords": [ + "stream", + "pipe", + "pause", + "drain", + "buffer" + ], + "author": "Dominic Tarr (dominictarr.com)", + "license": [ + "MIT", + "Apache2" + ], + "dependencies": { + "through": "~2.3" + } +} diff --git a/node_modules/pause-stream/readme.markdown b/node_modules/pause-stream/readme.markdown new file mode 100644 index 0000000..2366939 --- /dev/null +++ b/node_modules/pause-stream/readme.markdown @@ -0,0 +1,29 @@ +# PauseStream + +This is a `Stream` that will strictly buffer when paused. +Connect it to anything you need buffered. + +``` js + var ps = require('pause-stream')(); + + badlyBehavedStream.pipe(ps.pause()) + + aLittleLater(function (err, data) { + ps.pipe(createAnotherStream(data)) + ps.resume() + }) +``` + +`PauseStream` will buffer whenever paused. +it will buffer when yau have called `pause` manually. +but also when it's downstream `dest.write()===false`. +it will attempt to drain the buffer when you call resume +or the downstream emits `'drain'` + +`PauseStream` is tested using [stream-spec](https://github.com/dominictarr/stream-spec) +and [stream-tester](https://github.com/dominictarr/stream-tester) + +This is now the default case of +[through](https://github.com/dominictarr/through) + +https://github.com/dominictarr/pause-stream/commit/4a6fe3dc2c11091b1efbfde912e0473719ed9cc0 diff --git a/node_modules/pause-stream/test/index.js b/node_modules/pause-stream/test/index.js new file mode 100644 index 0000000..db8778d --- /dev/null +++ b/node_modules/pause-stream/test/index.js @@ -0,0 +1,17 @@ +var spec = require('stream-spec') +var tester = require('stream-tester') +var ps = require('..')() + +spec(ps) + .through({strict: false}) + .validateOnExit() + +var master = tester.createConsistent + +tester.createRandomStream(1000) //1k random numbers + .pipe(master = tester.createConsistentStream()) + .pipe(tester.createUnpauseStream()) + .pipe(ps) + .pipe(tester.createPauseStream()) + .pipe(master.createSlave()) + diff --git a/node_modules/pause-stream/test/pause-end.js b/node_modules/pause-stream/test/pause-end.js new file mode 100644 index 0000000..a6c27ef --- /dev/null +++ b/node_modules/pause-stream/test/pause-end.js @@ -0,0 +1,33 @@ + +var pause = require('..') +var assert = require('assert') + +var ps = pause() +var read = [], ended = false + +ps.on('data', function (i) { + read.push(i) +}) + +ps.on('end', function () { + ended = true +}) + +assert.deepEqual(read, []) + +ps.write(0) +ps.write(1) +ps.write(2) + +assert.deepEqual(read, [0, 1, 2]) + +ps.pause() + +assert.deepEqual(read, [0, 1, 2]) + +ps.end() +assert.equal(ended, false) +ps.resume() +assert.equal(ended, true) + + diff --git a/node_modules/picocolors/LICENSE b/node_modules/picocolors/LICENSE new file mode 100644 index 0000000..46c9b95 --- /dev/null +++ b/node_modules/picocolors/LICENSE @@ -0,0 +1,15 @@ +ISC License + +Copyright (c) 2021-2024 Oleksii Raspopov, Kostiantyn Denysov, Anton Verinov + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/node_modules/picocolors/README.md b/node_modules/picocolors/README.md new file mode 100644 index 0000000..8e47aa8 --- /dev/null +++ b/node_modules/picocolors/README.md @@ -0,0 +1,21 @@ +# picocolors + +The tiniest and the fastest library for terminal output formatting with ANSI colors. + +```javascript +import pc from "picocolors" + +console.log( + pc.green(`How are ${pc.italic(`you`)} doing?`) +) +``` + +- **No dependencies.** +- **14 times** smaller and **2 times** faster than chalk. +- Used by popular tools like PostCSS, SVGO, Stylelint, and Browserslist. +- Node.js v6+ & browsers support. Support for both CJS and ESM projects. +- TypeScript type declarations included. +- [`NO_COLOR`](https://no-color.org/) friendly. + +## Docs +Read **[full docs](https://github.com/alexeyraspopov/picocolors#readme)** on GitHub. diff --git a/node_modules/picocolors/package.json b/node_modules/picocolors/package.json new file mode 100644 index 0000000..372d4b6 --- /dev/null +++ b/node_modules/picocolors/package.json @@ -0,0 +1,25 @@ +{ + "name": "picocolors", + "version": "1.1.1", + "main": "./picocolors.js", + "types": "./picocolors.d.ts", + "browser": { + "./picocolors.js": "./picocolors.browser.js" + }, + "sideEffects": false, + "description": "The tiniest and the fastest library for terminal output formatting with ANSI colors", + "files": [ + "picocolors.*", + "types.d.ts" + ], + "keywords": [ + "terminal", + "colors", + "formatting", + "cli", + "console" + ], + "author": "Alexey Raspopov", + "repository": "alexeyraspopov/picocolors", + "license": "ISC" +} diff --git a/node_modules/picocolors/picocolors.browser.js b/node_modules/picocolors/picocolors.browser.js new file mode 100644 index 0000000..9dcf637 --- /dev/null +++ b/node_modules/picocolors/picocolors.browser.js @@ -0,0 +1,4 @@ +var x=String; +var create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x,blackBright:x,redBright:x,greenBright:x,yellowBright:x,blueBright:x,magentaBright:x,cyanBright:x,whiteBright:x,bgBlackBright:x,bgRedBright:x,bgGreenBright:x,bgYellowBright:x,bgBlueBright:x,bgMagentaBright:x,bgCyanBright:x,bgWhiteBright:x}}; +module.exports=create(); +module.exports.createColors = create; diff --git a/node_modules/picocolors/picocolors.d.ts b/node_modules/picocolors/picocolors.d.ts new file mode 100644 index 0000000..94e146a --- /dev/null +++ b/node_modules/picocolors/picocolors.d.ts @@ -0,0 +1,5 @@ +import { Colors } from "./types" + +declare const picocolors: Colors & { createColors: (enabled?: boolean) => Colors } + +export = picocolors diff --git a/node_modules/picocolors/picocolors.js b/node_modules/picocolors/picocolors.js new file mode 100644 index 0000000..e32df85 --- /dev/null +++ b/node_modules/picocolors/picocolors.js @@ -0,0 +1,75 @@ +let p = process || {}, argv = p.argv || [], env = p.env || {} +let isColorSupported = + !(!!env.NO_COLOR || argv.includes("--no-color")) && + (!!env.FORCE_COLOR || argv.includes("--color") || p.platform === "win32" || ((p.stdout || {}).isTTY && env.TERM !== "dumb") || !!env.CI) + +let formatter = (open, close, replace = open) => + input => { + let string = "" + input, index = string.indexOf(close, open.length) + return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close + } + +let replaceClose = (string, close, replace, index) => { + let result = "", cursor = 0 + do { + result += string.substring(cursor, index) + replace + cursor = index + close.length + index = string.indexOf(close, cursor) + } while (~index) + return result + string.substring(cursor) +} + +let createColors = (enabled = isColorSupported) => { + let f = enabled ? formatter : () => String + return { + isColorSupported: enabled, + reset: f("\x1b[0m", "\x1b[0m"), + bold: f("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m"), + dim: f("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m"), + italic: f("\x1b[3m", "\x1b[23m"), + underline: f("\x1b[4m", "\x1b[24m"), + inverse: f("\x1b[7m", "\x1b[27m"), + hidden: f("\x1b[8m", "\x1b[28m"), + strikethrough: f("\x1b[9m", "\x1b[29m"), + + black: f("\x1b[30m", "\x1b[39m"), + red: f("\x1b[31m", "\x1b[39m"), + green: f("\x1b[32m", "\x1b[39m"), + yellow: f("\x1b[33m", "\x1b[39m"), + blue: f("\x1b[34m", "\x1b[39m"), + magenta: f("\x1b[35m", "\x1b[39m"), + cyan: f("\x1b[36m", "\x1b[39m"), + white: f("\x1b[37m", "\x1b[39m"), + gray: f("\x1b[90m", "\x1b[39m"), + + bgBlack: f("\x1b[40m", "\x1b[49m"), + bgRed: f("\x1b[41m", "\x1b[49m"), + bgGreen: f("\x1b[42m", "\x1b[49m"), + bgYellow: f("\x1b[43m", "\x1b[49m"), + bgBlue: f("\x1b[44m", "\x1b[49m"), + bgMagenta: f("\x1b[45m", "\x1b[49m"), + bgCyan: f("\x1b[46m", "\x1b[49m"), + bgWhite: f("\x1b[47m", "\x1b[49m"), + + blackBright: f("\x1b[90m", "\x1b[39m"), + redBright: f("\x1b[91m", "\x1b[39m"), + greenBright: f("\x1b[92m", "\x1b[39m"), + yellowBright: f("\x1b[93m", "\x1b[39m"), + blueBright: f("\x1b[94m", "\x1b[39m"), + magentaBright: f("\x1b[95m", "\x1b[39m"), + cyanBright: f("\x1b[96m", "\x1b[39m"), + whiteBright: f("\x1b[97m", "\x1b[39m"), + + bgBlackBright: f("\x1b[100m", "\x1b[49m"), + bgRedBright: f("\x1b[101m", "\x1b[49m"), + bgGreenBright: f("\x1b[102m", "\x1b[49m"), + bgYellowBright: f("\x1b[103m", "\x1b[49m"), + bgBlueBright: f("\x1b[104m", "\x1b[49m"), + bgMagentaBright: f("\x1b[105m", "\x1b[49m"), + bgCyanBright: f("\x1b[106m", "\x1b[49m"), + bgWhiteBright: f("\x1b[107m", "\x1b[49m"), + } +} + +module.exports = createColors() +module.exports.createColors = createColors diff --git a/node_modules/picocolors/types.d.ts b/node_modules/picocolors/types.d.ts new file mode 100644 index 0000000..cd1aec4 --- /dev/null +++ b/node_modules/picocolors/types.d.ts @@ -0,0 +1,51 @@ +export type Formatter = (input: string | number | null | undefined) => string + +export interface Colors { + isColorSupported: boolean + + reset: Formatter + bold: Formatter + dim: Formatter + italic: Formatter + underline: Formatter + inverse: Formatter + hidden: Formatter + strikethrough: Formatter + + black: Formatter + red: Formatter + green: Formatter + yellow: Formatter + blue: Formatter + magenta: Formatter + cyan: Formatter + white: Formatter + gray: Formatter + + bgBlack: Formatter + bgRed: Formatter + bgGreen: Formatter + bgYellow: Formatter + bgBlue: Formatter + bgMagenta: Formatter + bgCyan: Formatter + bgWhite: Formatter + + blackBright: Formatter + redBright: Formatter + greenBright: Formatter + yellowBright: Formatter + blueBright: Formatter + magentaBright: Formatter + cyanBright: Formatter + whiteBright: Formatter + + bgBlackBright: Formatter + bgRedBright: Formatter + bgGreenBright: Formatter + bgYellowBright: Formatter + bgBlueBright: Formatter + bgMagentaBright: Formatter + bgCyanBright: Formatter + bgWhiteBright: Formatter +} diff --git a/node_modules/platform/LICENSE b/node_modules/platform/LICENSE new file mode 100644 index 0000000..598835f --- /dev/null +++ b/node_modules/platform/LICENSE @@ -0,0 +1,21 @@ +Copyright 2014-2020 Benjamin Tan +Copyright 2011-2013 John-David Dalton + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/platform/README.md b/node_modules/platform/README.md new file mode 100644 index 0000000..c2a15c0 --- /dev/null +++ b/node_modules/platform/README.md @@ -0,0 +1,76 @@ +# Platform.js v1.3.5 + +A platform detection library that works on nearly all JavaScript platforms. + +## Disclaimer + +Platform.js is for informational purposes only & **not** intended as a substitution for feature detection/inference checks. + +## Documentation + +* [doc/README.md](https://github.com/bestiejs/platform.js/blob/master/doc/README.md#readme) +* [wiki/Changelog](https://github.com/bestiejs/platform.js/wiki/Changelog) +* [wiki/Roadmap](https://github.com/bestiejs/platform.js/wiki/Roadmap) +* [platform.js demo](https://bestiejs.github.io/platform.js/) (See also [whatsmyua.info](https://www.whatsmyua.info/) for comparisons between platform.js and other platform detection libraries) + +## Installation + +In a browser: + +```html + +``` + +In an AMD loader: + +```js +require(['platform'], function(platform) {/*…*/}); +``` + +Using npm: + +```shell +$ npm i --save platform +``` + +In Node.js: + +```js +var platform = require('platform'); +``` + +Usage example: + +```js +// on IE10 x86 platform preview running in IE7 compatibility mode on Windows 7 64 bit edition +platform.name; // 'IE' +platform.version; // '10.0' +platform.layout; // 'Trident' +platform.os; // 'Windows Server 2008 R2 / 7 x64' +platform.description; // 'IE 10.0 x86 (platform preview; running in IE 7 mode) on Windows Server 2008 R2 / 7 x64' + +// or on an iPad +platform.name; // 'Safari' +platform.version; // '5.1' +platform.product; // 'iPad' +platform.manufacturer; // 'Apple' +platform.layout; // 'WebKit' +platform.os; // 'iOS 5.0' +platform.description; // 'Safari 5.1 on Apple iPad (iOS 5.0)' + +// or parsing a given UA string +var info = platform.parse('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7.2; en; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 11.52'); +info.name; // 'Opera' +info.version; // '11.52' +info.layout; // 'Presto' +info.os; // 'Mac OS X 10.7.2' +info.description; // 'Opera 11.52 (identifying as Firefox 4.0) on Mac OS X 10.7.2' +``` + +## Support + +Tested in Chrome 82-83, Firefox 77-78, IE 11, Edge 82-83, Safari 12-13, Node.js 4-14, & PhantomJS 2.1.1. + +## BestieJS + +Platform.js is part of the BestieJS *“Best in Class”* module collection. This means we promote solid browser/environment support, ES5+ precedents, unit testing, & plenty of documentation. diff --git a/node_modules/platform/package.json b/node_modules/platform/package.json new file mode 100644 index 0000000..31c9e64 --- /dev/null +++ b/node_modules/platform/package.json @@ -0,0 +1,30 @@ +{ + "name": "platform", + "version": "1.3.6", + "description": "A platform detection library that works on nearly all JavaScript platforms.", + "license": "MIT", + "main": "platform.js", + "keywords": "environment, platform, ua, useragent", + "author": "Benjamin Tan ", + "contributors": [ + "Benjamin Tan ", + "John-David Dalton ", + "Mathias Bynens " + ], + "repository": "bestiejs/platform.js", + "scripts": { + "doc": "docdown platform.js doc/README.md style=github title=\"Platform.js v${npm_package_version}\" toc=properties url=https://github.com/bestiejs/platform.js/blob/${npm_package_version}/platform.js", + "prepublishOnly": "node bump/bump.js ${npm_package_version}", + "test": "node test/test.js" + }, + "devDependencies": { + "docdown": "^0.7.3", + "qunit-extras": "^1.5.0", + "qunitjs": "^1.23.1", + "replace": "^1.1.0", + "requirejs": "^2.3.6" + }, + "files": [ + "platform.js" + ] +} diff --git a/node_modules/platform/platform.js b/node_modules/platform/platform.js new file mode 100644 index 0000000..e6d268b --- /dev/null +++ b/node_modules/platform/platform.js @@ -0,0 +1,1260 @@ +/*! + * Platform.js v1.3.6 + * Copyright 2014-2020 Benjamin Tan + * Copyright 2011-2013 John-David Dalton + * Available under MIT license + */ +;(function() { + 'use strict'; + + /** Used to determine if values are of the language type `Object`. */ + var objectTypes = { + 'function': true, + 'object': true + }; + + /** Used as a reference to the global object. */ + var root = (objectTypes[typeof window] && window) || this; + + /** Backup possible global object. */ + var oldRoot = root; + + /** Detect free variable `exports`. */ + var freeExports = objectTypes[typeof exports] && exports; + + /** Detect free variable `module`. */ + var freeModule = objectTypes[typeof module] && module && !module.nodeType && module; + + /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */ + var freeGlobal = freeExports && freeModule && typeof global == 'object' && global; + if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) { + root = freeGlobal; + } + + /** + * Used as the maximum length of an array-like object. + * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength) + * for more details. + */ + var maxSafeInteger = Math.pow(2, 53) - 1; + + /** Regular expression to detect Opera. */ + var reOpera = /\bOpera/; + + /** Possible global object. */ + var thisBinding = this; + + /** Used for native method references. */ + var objectProto = Object.prototype; + + /** Used to check for own properties of an object. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to resolve the internal `[[Class]]` of values. */ + var toString = objectProto.toString; + + /*--------------------------------------------------------------------------*/ + + /** + * Capitalizes a string value. + * + * @private + * @param {string} string The string to capitalize. + * @returns {string} The capitalized string. + */ + function capitalize(string) { + string = String(string); + return string.charAt(0).toUpperCase() + string.slice(1); + } + + /** + * A utility function to clean up the OS name. + * + * @private + * @param {string} os The OS name to clean up. + * @param {string} [pattern] A `RegExp` pattern matching the OS name. + * @param {string} [label] A label for the OS. + */ + function cleanupOS(os, pattern, label) { + // Platform tokens are defined at: + // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx + // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx + var data = { + '10.0': '10', + '6.4': '10 Technical Preview', + '6.3': '8.1', + '6.2': '8', + '6.1': 'Server 2008 R2 / 7', + '6.0': 'Server 2008 / Vista', + '5.2': 'Server 2003 / XP 64-bit', + '5.1': 'XP', + '5.01': '2000 SP1', + '5.0': '2000', + '4.0': 'NT', + '4.90': 'ME' + }; + // Detect Windows version from platform tokens. + if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) && + (data = data[/[\d.]+$/.exec(os)])) { + os = 'Windows ' + data; + } + // Correct character case and cleanup string. + os = String(os); + + if (pattern && label) { + os = os.replace(RegExp(pattern, 'i'), label); + } + + os = format( + os.replace(/ ce$/i, ' CE') + .replace(/\bhpw/i, 'web') + .replace(/\bMacintosh\b/, 'Mac OS') + .replace(/_PowerPC\b/i, ' OS') + .replace(/\b(OS X) [^ \d]+/i, '$1') + .replace(/\bMac (OS X)\b/, '$1') + .replace(/\/(\d)/, ' $1') + .replace(/_/g, '.') + .replace(/(?: BePC|[ .]*fc[ \d.]+)$/i, '') + .replace(/\bx86\.64\b/gi, 'x86_64') + .replace(/\b(Windows Phone) OS\b/, '$1') + .replace(/\b(Chrome OS \w+) [\d.]+\b/, '$1') + .split(' on ')[0] + ); + + return os; + } + + /** + * An iteration utility for arrays and objects. + * + * @private + * @param {Array|Object} object The object to iterate over. + * @param {Function} callback The function called per iteration. + */ + function each(object, callback) { + var index = -1, + length = object ? object.length : 0; + + if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) { + while (++index < length) { + callback(object[index], index, object); + } + } else { + forOwn(object, callback); + } + } + + /** + * Trim and conditionally capitalize string values. + * + * @private + * @param {string} string The string to format. + * @returns {string} The formatted string. + */ + function format(string) { + string = trim(string); + return /^(?:webOS|i(?:OS|P))/.test(string) + ? string + : capitalize(string); + } + + /** + * Iterates over an object's own properties, executing the `callback` for each. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} callback The function executed per own property. + */ + function forOwn(object, callback) { + for (var key in object) { + if (hasOwnProperty.call(object, key)) { + callback(object[key], key, object); + } + } + } + + /** + * Gets the internal `[[Class]]` of a value. + * + * @private + * @param {*} value The value. + * @returns {string} The `[[Class]]`. + */ + function getClassOf(value) { + return value == null + ? capitalize(value) + : toString.call(value).slice(8, -1); + } + + /** + * Host objects can return type values that are different from their actual + * data type. The objects we are concerned with usually return non-primitive + * types of "object", "function", or "unknown". + * + * @private + * @param {*} object The owner of the property. + * @param {string} property The property to check. + * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`. + */ + function isHostType(object, property) { + var type = object != null ? typeof object[property] : 'number'; + return !/^(?:boolean|number|string|undefined)$/.test(type) && + (type == 'object' ? !!object[property] : true); + } + + /** + * Prepares a string for use in a `RegExp` by making hyphens and spaces optional. + * + * @private + * @param {string} string The string to qualify. + * @returns {string} The qualified string. + */ + function qualify(string) { + return String(string).replace(/([ -])(?!$)/g, '$1?'); + } + + /** + * A bare-bones `Array#reduce` like utility function. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function called per iteration. + * @returns {*} The accumulated result. + */ + function reduce(array, callback) { + var accumulator = null; + each(array, function(value, index) { + accumulator = callback(accumulator, value, index, array); + }); + return accumulator; + } + + /** + * Removes leading and trailing whitespace from a string. + * + * @private + * @param {string} string The string to trim. + * @returns {string} The trimmed string. + */ + function trim(string) { + return String(string).replace(/^ +| +$/g, ''); + } + + /*--------------------------------------------------------------------------*/ + + /** + * Creates a new platform object. + * + * @memberOf platform + * @param {Object|string} [ua=navigator.userAgent] The user agent string or + * context object. + * @returns {Object} A platform object. + */ + function parse(ua) { + + /** The environment context object. */ + var context = root; + + /** Used to flag when a custom context is provided. */ + var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String'; + + // Juggle arguments. + if (isCustomContext) { + context = ua; + ua = null; + } + + /** Browser navigator object. */ + var nav = context.navigator || {}; + + /** Browser user agent string. */ + var userAgent = nav.userAgent || ''; + + ua || (ua = userAgent); + + /** Used to flag when `thisBinding` is the [ModuleScope]. */ + var isModuleScope = isCustomContext || thisBinding == oldRoot; + + /** Used to detect if browser is like Chrome. */ + var likeChrome = isCustomContext + ? !!nav.likeChrome + : /\bChrome\b/.test(ua) && !/internal|\n/i.test(toString.toString()); + + /** Internal `[[Class]]` value shortcuts. */ + var objectClass = 'Object', + airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject', + enviroClass = isCustomContext ? objectClass : 'Environment', + javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java), + phantomClass = isCustomContext ? objectClass : 'RuntimeObject'; + + /** Detect Java environments. */ + var java = /\bJava/.test(javaClass) && context.java; + + /** Detect Rhino. */ + var rhino = java && getClassOf(context.environment) == enviroClass; + + /** A character to represent alpha. */ + var alpha = java ? 'a' : '\u03b1'; + + /** A character to represent beta. */ + var beta = java ? 'b' : '\u03b2'; + + /** Browser document object. */ + var doc = context.document || {}; + + /** + * Detect Opera browser (Presto-based). + * http://www.howtocreate.co.uk/operaStuff/operaObject.html + * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini + */ + var opera = context.operamini || context.opera; + + /** Opera `[[Class]]`. */ + var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera)) + ? operaClass + : (opera = null); + + /*------------------------------------------------------------------------*/ + + /** Temporary variable used over the script's lifetime. */ + var data; + + /** The CPU architecture. */ + var arch = ua; + + /** Platform description array. */ + var description = []; + + /** Platform alpha/beta indicator. */ + var prerelease = null; + + /** A flag to indicate that environment features should be used to resolve the platform. */ + var useFeatures = ua == userAgent; + + /** The browser/environment version. */ + var version = useFeatures && opera && typeof opera.version == 'function' && opera.version(); + + /** A flag to indicate if the OS ends with "/ Version" */ + var isSpecialCasedOS; + + /* Detectable layout engines (order is important). */ + var layout = getLayout([ + { 'label': 'EdgeHTML', 'pattern': 'Edge' }, + 'Trident', + { 'label': 'WebKit', 'pattern': 'AppleWebKit' }, + 'iCab', + 'Presto', + 'NetFront', + 'Tasman', + 'KHTML', + 'Gecko' + ]); + + /* Detectable browser names (order is important). */ + var name = getName([ + 'Adobe AIR', + 'Arora', + 'Avant Browser', + 'Breach', + 'Camino', + 'Electron', + 'Epiphany', + 'Fennec', + 'Flock', + 'Galeon', + 'GreenBrowser', + 'iCab', + 'Iceweasel', + 'K-Meleon', + 'Konqueror', + 'Lunascape', + 'Maxthon', + { 'label': 'Microsoft Edge', 'pattern': '(?:Edge|Edg|EdgA|EdgiOS)' }, + 'Midori', + 'Nook Browser', + 'PaleMoon', + 'PhantomJS', + 'Raven', + 'Rekonq', + 'RockMelt', + { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' }, + 'SeaMonkey', + { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' }, + 'Sleipnir', + 'SlimBrowser', + { 'label': 'SRWare Iron', 'pattern': 'Iron' }, + 'Sunrise', + 'Swiftfox', + 'Vivaldi', + 'Waterfox', + 'WebPositive', + { 'label': 'Yandex Browser', 'pattern': 'YaBrowser' }, + { 'label': 'UC Browser', 'pattern': 'UCBrowser' }, + 'Opera Mini', + { 'label': 'Opera Mini', 'pattern': 'OPiOS' }, + 'Opera', + { 'label': 'Opera', 'pattern': 'OPR' }, + 'Chromium', + 'Chrome', + { 'label': 'Chrome', 'pattern': '(?:HeadlessChrome)' }, + { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' }, + { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' }, + { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' }, + { 'label': 'IE', 'pattern': 'IEMobile' }, + { 'label': 'IE', 'pattern': 'MSIE' }, + 'Safari' + ]); + + /* Detectable products (order is important). */ + var product = getProduct([ + { 'label': 'BlackBerry', 'pattern': 'BB10' }, + 'BlackBerry', + { 'label': 'Galaxy S', 'pattern': 'GT-I9000' }, + { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' }, + { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' }, + { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' }, + { 'label': 'Galaxy S5', 'pattern': 'SM-G900' }, + { 'label': 'Galaxy S6', 'pattern': 'SM-G920' }, + { 'label': 'Galaxy S6 Edge', 'pattern': 'SM-G925' }, + { 'label': 'Galaxy S7', 'pattern': 'SM-G930' }, + { 'label': 'Galaxy S7 Edge', 'pattern': 'SM-G935' }, + 'Google TV', + 'Lumia', + 'iPad', + 'iPod', + 'iPhone', + 'Kindle', + { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' }, + 'Nexus', + 'Nook', + 'PlayBook', + 'PlayStation Vita', + 'PlayStation', + 'TouchPad', + 'Transformer', + { 'label': 'Wii U', 'pattern': 'WiiU' }, + 'Wii', + 'Xbox One', + { 'label': 'Xbox 360', 'pattern': 'Xbox' }, + 'Xoom' + ]); + + /* Detectable manufacturers. */ + var manufacturer = getManufacturer({ + 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 }, + 'Alcatel': {}, + 'Archos': {}, + 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 }, + 'Asus': { 'Transformer': 1 }, + 'Barnes & Noble': { 'Nook': 1 }, + 'BlackBerry': { 'PlayBook': 1 }, + 'Google': { 'Google TV': 1, 'Nexus': 1 }, + 'HP': { 'TouchPad': 1 }, + 'HTC': {}, + 'Huawei': {}, + 'Lenovo': {}, + 'LG': {}, + 'Microsoft': { 'Xbox': 1, 'Xbox One': 1 }, + 'Motorola': { 'Xoom': 1 }, + 'Nintendo': { 'Wii U': 1, 'Wii': 1 }, + 'Nokia': { 'Lumia': 1 }, + 'Oppo': {}, + 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 }, + 'Sony': { 'PlayStation': 1, 'PlayStation Vita': 1 }, + 'Xiaomi': { 'Mi': 1, 'Redmi': 1 } + }); + + /* Detectable operating systems (order is important). */ + var os = getOS([ + 'Windows Phone', + 'KaiOS', + 'Android', + 'CentOS', + { 'label': 'Chrome OS', 'pattern': 'CrOS' }, + 'Debian', + { 'label': 'DragonFly BSD', 'pattern': 'DragonFly' }, + 'Fedora', + 'FreeBSD', + 'Gentoo', + 'Haiku', + 'Kubuntu', + 'Linux Mint', + 'OpenBSD', + 'Red Hat', + 'SuSE', + 'Ubuntu', + 'Xubuntu', + 'Cygwin', + 'Symbian OS', + 'hpwOS', + 'webOS ', + 'webOS', + 'Tablet OS', + 'Tizen', + 'Linux', + 'Mac OS X', + 'Macintosh', + 'Mac', + 'Windows 98;', + 'Windows ' + ]); + + /*------------------------------------------------------------------------*/ + + /** + * Picks the layout engine from an array of guesses. + * + * @private + * @param {Array} guesses An array of guesses. + * @returns {null|string} The detected layout engine. + */ + function getLayout(guesses) { + return reduce(guesses, function(result, guess) { + return result || RegExp('\\b' + ( + guess.pattern || qualify(guess) + ) + '\\b', 'i').exec(ua) && (guess.label || guess); + }); + } + + /** + * Picks the manufacturer from an array of guesses. + * + * @private + * @param {Array} guesses An object of guesses. + * @returns {null|string} The detected manufacturer. + */ + function getManufacturer(guesses) { + return reduce(guesses, function(result, value, key) { + // Lookup the manufacturer by product or scan the UA for the manufacturer. + return result || ( + value[product] || + value[/^[a-z]+(?: +[a-z]+\b)*/i.exec(product)] || + RegExp('\\b' + qualify(key) + '(?:\\b|\\w*\\d)', 'i').exec(ua) + ) && key; + }); + } + + /** + * Picks the browser name from an array of guesses. + * + * @private + * @param {Array} guesses An array of guesses. + * @returns {null|string} The detected browser name. + */ + function getName(guesses) { + return reduce(guesses, function(result, guess) { + return result || RegExp('\\b' + ( + guess.pattern || qualify(guess) + ) + '\\b', 'i').exec(ua) && (guess.label || guess); + }); + } + + /** + * Picks the OS name from an array of guesses. + * + * @private + * @param {Array} guesses An array of guesses. + * @returns {null|string} The detected OS name. + */ + function getOS(guesses) { + return reduce(guesses, function(result, guess) { + var pattern = guess.pattern || qualify(guess); + if (!result && (result = + RegExp('\\b' + pattern + '(?:/[\\d.]+|[ \\w.]*)', 'i').exec(ua) + )) { + result = cleanupOS(result, pattern, guess.label || guess); + } + return result; + }); + } + + /** + * Picks the product name from an array of guesses. + * + * @private + * @param {Array} guesses An array of guesses. + * @returns {null|string} The detected product name. + */ + function getProduct(guesses) { + return reduce(guesses, function(result, guess) { + var pattern = guess.pattern || qualify(guess); + if (!result && (result = + RegExp('\\b' + pattern + ' *\\d+[.\\w_]*', 'i').exec(ua) || + RegExp('\\b' + pattern + ' *\\w+-[\\w]*', 'i').exec(ua) || + RegExp('\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)', 'i').exec(ua) + )) { + // Split by forward slash and append product version if needed. + if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\d.]+/.test(result[0])) { + result[0] += ' ' + result[1]; + } + // Correct character case and cleanup string. + guess = guess.label || guess; + result = format(result[0] + .replace(RegExp(pattern, 'i'), guess) + .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ') + .replace(RegExp('(' + guess + ')[-_.]?(\\w)', 'i'), '$1 $2')); + } + return result; + }); + } + + /** + * Resolves the version using an array of UA patterns. + * + * @private + * @param {Array} patterns An array of UA patterns. + * @returns {null|string} The detected version. + */ + function getVersion(patterns) { + return reduce(patterns, function(result, pattern) { + return result || (RegExp(pattern + + '(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null; + }); + } + + /** + * Returns `platform.description` when the platform object is coerced to a string. + * + * @name toString + * @memberOf platform + * @returns {string} Returns `platform.description` if available, else an empty string. + */ + function toStringPlatform() { + return this.description || ''; + } + + /*------------------------------------------------------------------------*/ + + // Convert layout to an array so we can add extra details. + layout && (layout = [layout]); + + // Detect Android products. + // Browsers on Android devices typically provide their product IDS after "Android;" + // up to "Build" or ") AppleWebKit". + // Example: + // "Mozilla/5.0 (Linux; Android 8.1.0; Moto G (5) Plus) AppleWebKit/537.36 + // (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36" + if (/\bAndroid\b/.test(os) && !product && + (data = /\bAndroid[^;]*;(.*?)(?:Build|\) AppleWebKit)\b/i.exec(ua))) { + product = trim(data[1]) + // Replace any language codes (eg. "en-US"). + .replace(/^[a-z]{2}-[a-z]{2};\s*/i, '') + || null; + } + // Detect product names that contain their manufacturer's name. + if (manufacturer && !product) { + product = getProduct([manufacturer]); + } else if (manufacturer && product) { + product = product + .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.\\s]', 'i'), manufacturer + ' ') + .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.]?(\\w)', 'i'), manufacturer + ' $2'); + } + // Clean up Google TV. + if ((data = /\bGoogle TV\b/.exec(product))) { + product = data[0]; + } + // Detect simulators. + if (/\bSimulator\b/i.test(ua)) { + product = (product ? product + ' ' : '') + 'Simulator'; + } + // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS. + if (name == 'Opera Mini' && /\bOPiOS\b/.test(ua)) { + description.push('running in Turbo/Uncompressed mode'); + } + // Detect IE Mobile 11. + if (name == 'IE' && /\blike iPhone OS\b/.test(ua)) { + data = parse(ua.replace(/like iPhone OS/, '')); + manufacturer = data.manufacturer; + product = data.product; + } + // Detect iOS. + else if (/^iP/.test(product)) { + name || (name = 'Safari'); + os = 'iOS' + ((data = / OS ([\d_]+)/i.exec(ua)) + ? ' ' + data[1].replace(/_/g, '.') + : ''); + } + // Detect Kubuntu. + else if (name == 'Konqueror' && /^Linux\b/i.test(os)) { + os = 'Kubuntu'; + } + // Detect Android browsers. + else if ((manufacturer && manufacturer != 'Google' && + ((/Chrome/.test(name) && !/\bMobile Safari\b/i.test(ua)) || /\bVita\b/.test(product))) || + (/\bAndroid\b/.test(os) && /^Chrome/.test(name) && /\bVersion\//i.test(ua))) { + name = 'Android Browser'; + os = /\bAndroid\b/.test(os) ? os : 'Android'; + } + // Detect Silk desktop/accelerated modes. + else if (name == 'Silk') { + if (!/\bMobi/i.test(ua)) { + os = 'Android'; + description.unshift('desktop mode'); + } + if (/Accelerated *= *true/i.test(ua)) { + description.unshift('accelerated'); + } + } + // Detect UC Browser speed mode. + else if (name == 'UC Browser' && /\bUCWEB\b/.test(ua)) { + description.push('speed mode'); + } + // Detect PaleMoon identifying as Firefox. + else if (name == 'PaleMoon' && (data = /\bFirefox\/([\d.]+)\b/.exec(ua))) { + description.push('identifying as Firefox ' + data[1]); + } + // Detect Firefox OS and products running Firefox. + else if (name == 'Firefox' && (data = /\b(Mobile|Tablet|TV)\b/i.exec(ua))) { + os || (os = 'Firefox OS'); + product || (product = data[1]); + } + // Detect false positives for Firefox/Safari. + else if (!name || (data = !/\bMinefield\b/i.test(ua) && /\b(?:Firefox|Safari)\b/.exec(name))) { + // Escape the `/` for Firefox 1. + if (name && !product && /[\/,]|^[^(]+?\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) { + // Clear name of false positives. + name = null; + } + // Reassign a generic name. + if ((data = product || manufacturer || os) && + (product || manufacturer || /\b(?:Android|Symbian OS|Tablet OS|webOS)\b/.test(os))) { + name = /[a-z]+(?: Hat)?/i.exec(/\bAndroid\b/.test(os) ? os : data) + ' Browser'; + } + } + // Add Chrome version to description for Electron. + else if (name == 'Electron' && (data = (/\bChrome\/([\d.]+)\b/.exec(ua) || 0)[1])) { + description.push('Chromium ' + data); + } + // Detect non-Opera (Presto-based) versions (order is important). + if (!version) { + version = getVersion([ + '(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\d.]+$)|UCBrowser|YaBrowser)', + 'Version', + qualify(name), + '(?:Firefox|Minefield|NetFront)' + ]); + } + // Detect stubborn layout engines. + if ((data = + layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' || + /\bOpera\b/.test(name) && (/\bOPR\b/.test(ua) ? 'Blink' : 'Presto') || + /\b(?:Midori|Nook|Safari)\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' || + !layout && /\bMSIE\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') || + layout == 'WebKit' && /\bPlayStation\b(?! Vita\b)/i.test(name) && 'NetFront' + )) { + layout = [data]; + } + // Detect Windows Phone 7 desktop mode. + if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(ua) || 0)[1])) { + name += ' Mobile'; + os = 'Windows Phone ' + (/\+$/.test(data) ? data : data + '.x'); + description.unshift('desktop mode'); + } + // Detect Windows Phone 8.x desktop mode. + else if (/\bWPDesktop\b/i.test(ua)) { + name = 'IE Mobile'; + os = 'Windows Phone 8.x'; + description.unshift('desktop mode'); + version || (version = (/\brv:([\d.]+)/.exec(ua) || 0)[1]); + } + // Detect IE 11 identifying as other browsers. + else if (name != 'IE' && layout == 'Trident' && (data = /\brv:([\d.]+)/.exec(ua))) { + if (name) { + description.push('identifying as ' + name + (version ? ' ' + version : '')); + } + name = 'IE'; + version = data[1]; + } + // Leverage environment features. + if (useFeatures) { + // Detect server-side environments. + // Rhino has a global function while others have a global object. + if (isHostType(context, 'global')) { + if (java) { + data = java.lang.System; + arch = data.getProperty('os.arch'); + os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version'); + } + if (rhino) { + try { + version = context.require('ringo/engine').version.join('.'); + name = 'RingoJS'; + } catch(e) { + if ((data = context.system) && data.global.system == context.system) { + name = 'Narwhal'; + os || (os = data[0].os || null); + } + } + if (!name) { + name = 'Rhino'; + } + } + else if ( + typeof context.process == 'object' && !context.process.browser && + (data = context.process) + ) { + if (typeof data.versions == 'object') { + if (typeof data.versions.electron == 'string') { + description.push('Node ' + data.versions.node); + name = 'Electron'; + version = data.versions.electron; + } else if (typeof data.versions.nw == 'string') { + description.push('Chromium ' + version, 'Node ' + data.versions.node); + name = 'NW.js'; + version = data.versions.nw; + } + } + if (!name) { + name = 'Node.js'; + arch = data.arch; + os = data.platform; + version = /[\d.]+/.exec(data.version); + version = version ? version[0] : null; + } + } + } + // Detect Adobe AIR. + else if (getClassOf((data = context.runtime)) == airRuntimeClass) { + name = 'Adobe AIR'; + os = data.flash.system.Capabilities.os; + } + // Detect PhantomJS. + else if (getClassOf((data = context.phantom)) == phantomClass) { + name = 'PhantomJS'; + version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch); + } + // Detect IE compatibility modes. + else if (typeof doc.documentMode == 'number' && (data = /\bTrident\/(\d+)/i.exec(ua))) { + // We're in compatibility mode when the Trident version + 4 doesn't + // equal the document mode. + version = [version, doc.documentMode]; + if ((data = +data[1] + 4) != version[1]) { + description.push('IE ' + version[1] + ' mode'); + layout && (layout[1] = ''); + version[1] = data; + } + version = name == 'IE' ? String(version[1].toFixed(1)) : version[0]; + } + // Detect IE 11 masking as other browsers. + else if (typeof doc.documentMode == 'number' && /^(?:Chrome|Firefox)\b/.test(name)) { + description.push('masking as ' + name + ' ' + version); + name = 'IE'; + version = '11.0'; + layout = ['Trident']; + os = 'Windows'; + } + os = os && format(os); + } + // Detect prerelease phases. + if (version && (data = + /(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(version) || + /(?:alpha|beta)(?: ?\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) || + /\bMinefield\b/i.test(ua) && 'a' + )) { + prerelease = /b/i.test(data) ? 'beta' : 'alpha'; + version = version.replace(RegExp(data + '\\+?$'), '') + + (prerelease == 'beta' ? beta : alpha) + (/\d+\+?/.exec(data) || ''); + } + // Detect Firefox Mobile. + if (name == 'Fennec' || name == 'Firefox' && /\b(?:Android|Firefox OS|KaiOS)\b/.test(os)) { + name = 'Firefox Mobile'; + } + // Obscure Maxthon's unreliable version. + else if (name == 'Maxthon' && version) { + version = version.replace(/\.[\d.]+/, '.x'); + } + // Detect Xbox 360 and Xbox One. + else if (/\bXbox\b/i.test(product)) { + if (product == 'Xbox 360') { + os = null; + } + if (product == 'Xbox 360' && /\bIEMobile\b/.test(ua)) { + description.unshift('mobile mode'); + } + } + // Add mobile postfix. + else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) && + (os == 'Windows CE' || /Mobi/i.test(ua))) { + name += ' Mobile'; + } + // Detect IE platform preview. + else if (name == 'IE' && useFeatures) { + try { + if (context.external === null) { + description.unshift('platform preview'); + } + } catch(e) { + description.unshift('embedded'); + } + } + // Detect BlackBerry OS version. + // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp + else if ((/\bBlackBerry\b/.test(product) || /\bBB10\b/.test(ua)) && (data = + (RegExp(product.replace(/ +/g, ' *') + '/([.\\d]+)', 'i').exec(ua) || 0)[1] || + version + )) { + data = [data, /BB10/.test(ua)]; + os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0]; + version = null; + } + // Detect Opera identifying/masking itself as another browser. + // http://www.opera.com/support/kb/view/843/ + else if (this != forOwn && product != 'Wii' && ( + (useFeatures && opera) || + (/Opera/.test(name) && /\b(?:MSIE|Firefox)\b/i.test(ua)) || + (name == 'Firefox' && /\bOS X (?:\d+\.){2,}/.test(os)) || + (name == 'IE' && ( + (os && !/^Win/.test(os) && version > 5.5) || + /\bWindows XP\b/.test(os) && version > 8 || + version == 8 && !/\bTrident\b/.test(ua) + )) + ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) { + // When "identifying", the UA contains both Opera and the other browser's name. + data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : ''); + if (reOpera.test(name)) { + if (/\bIE\b/.test(data) && os == 'Mac OS') { + os = null; + } + data = 'identify' + data; + } + // When "masking", the UA contains only the other browser's name. + else { + data = 'mask' + data; + if (operaClass) { + name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2')); + } else { + name = 'Opera'; + } + if (/\bIE\b/.test(data)) { + os = null; + } + if (!useFeatures) { + version = null; + } + } + layout = ['Presto']; + description.push(data); + } + // Detect WebKit Nightly and approximate Chrome/Safari versions. + if ((data = (/\bAppleWebKit\/([\d.]+\+?)/i.exec(ua) || 0)[1])) { + // Correct build number for numeric comparison. + // (e.g. "532.5" becomes "532.05") + data = [parseFloat(data.replace(/\.(\d)$/, '.0$1')), data]; + // Nightly builds are postfixed with a "+". + if (name == 'Safari' && data[1].slice(-1) == '+') { + name = 'WebKit Nightly'; + prerelease = 'alpha'; + version = data[1].slice(0, -1); + } + // Clear incorrect browser versions. + else if (version == data[1] || + version == (data[2] = (/\bSafari\/([\d.]+\+?)/i.exec(ua) || 0)[1])) { + version = null; + } + // Use the full Chrome version when available. + data[1] = (/\b(?:Headless)?Chrome\/([\d.]+)/i.exec(ua) || 0)[1]; + // Detect Blink layout engine. + if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') { + layout = ['Blink']; + } + // Detect JavaScriptCore. + // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi + if (!useFeatures || (!likeChrome && !data[1])) { + layout && (layout[1] = 'like Safari'); + data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : data < 602 ? 9 : data < 604 ? 10 : data < 606 ? 11 : data < 608 ? 12 : '12'); + } else { + layout && (layout[1] = 'like Chrome'); + data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28'); + } + // Add the postfix of ".x" or "+" for approximate versions. + layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+')); + // Obscure version for some Safari 1-2 releases. + if (name == 'Safari' && (!version || parseInt(version) > 45)) { + version = data; + } else if (name == 'Chrome' && /\bHeadlessChrome/i.test(ua)) { + description.unshift('headless'); + } + } + // Detect Opera desktop modes. + if (name == 'Opera' && (data = /\bzbov|zvav$/.exec(os))) { + name += ' '; + description.unshift('desktop mode'); + if (data == 'zvav') { + name += 'Mini'; + version = null; + } else { + name += 'Mobile'; + } + os = os.replace(RegExp(' *' + data + '$'), ''); + } + // Detect Chrome desktop mode. + else if (name == 'Safari' && /\bChrome\b/.exec(layout && layout[1])) { + description.unshift('desktop mode'); + name = 'Chrome Mobile'; + version = null; + + if (/\bOS X\b/.test(os)) { + manufacturer = 'Apple'; + os = 'iOS 4.3+'; + } else { + os = null; + } + } + // Newer versions of SRWare Iron uses the Chrome tag to indicate its version number. + else if (/\bSRWare Iron\b/.test(name) && !version) { + version = getVersion('Chrome'); + } + // Strip incorrect OS versions. + if (version && version.indexOf((data = /[\d.]+$/.exec(os))) == 0 && + ua.indexOf('/' + data + '-') > -1) { + os = trim(os.replace(data, '')); + } + // Ensure OS does not include the browser name. + if (os && os.indexOf(name) != -1 && !RegExp(name + ' OS').test(os)) { + os = os.replace(RegExp(' *' + qualify(name) + ' *'), ''); + } + // Add layout engine. + if (layout && !/\b(?:Avant|Nook)\b/.test(name) && ( + /Browser|Lunascape|Maxthon/.test(name) || + name != 'Safari' && /^iOS/.test(os) && /\bSafari\b/.test(layout[1]) || + /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(name) && layout[1])) { + // Don't add layout details to description if they are falsey. + (data = layout[layout.length - 1]) && description.push(data); + } + // Combine contextual information. + if (description.length) { + description = ['(' + description.join('; ') + ')']; + } + // Append manufacturer to description. + if (manufacturer && product && product.indexOf(manufacturer) < 0) { + description.push('on ' + manufacturer); + } + // Append product to description. + if (product) { + description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product); + } + // Parse the OS into an object. + if (os) { + data = / ([\d.+]+)$/.exec(os); + isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/'; + os = { + 'architecture': 32, + 'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os, + 'version': data ? data[1] : null, + 'toString': function() { + var version = this.version; + return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : ''); + } + }; + } + // Add browser/OS architecture. + if ((data = /\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(arch)) && !/\bi686\b/i.test(arch)) { + if (os) { + os.architecture = 64; + os.family = os.family.replace(RegExp(' *' + data), ''); + } + if ( + name && (/\bWOW64\b/i.test(ua) || + (useFeatures && /\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\bWin64; x64\b/i.test(ua))) + ) { + description.unshift('32-bit'); + } + } + // Chrome 39 and above on OS X is always 64-bit. + else if ( + os && /^OS X/.test(os.family) && + name == 'Chrome' && parseFloat(version) >= 39 + ) { + os.architecture = 64; + } + + ua || (ua = null); + + /*------------------------------------------------------------------------*/ + + /** + * The platform object. + * + * @name platform + * @type Object + */ + var platform = {}; + + /** + * The platform description. + * + * @memberOf platform + * @type string|null + */ + platform.description = ua; + + /** + * The name of the browser's layout engine. + * + * The list of common layout engines include: + * "Blink", "EdgeHTML", "Gecko", "Trident" and "WebKit" + * + * @memberOf platform + * @type string|null + */ + platform.layout = layout && layout[0]; + + /** + * The name of the product's manufacturer. + * + * The list of manufacturers include: + * "Apple", "Archos", "Amazon", "Asus", "Barnes & Noble", "BlackBerry", + * "Google", "HP", "HTC", "LG", "Microsoft", "Motorola", "Nintendo", + * "Nokia", "Samsung" and "Sony" + * + * @memberOf platform + * @type string|null + */ + platform.manufacturer = manufacturer; + + /** + * The name of the browser/environment. + * + * The list of common browser names include: + * "Chrome", "Electron", "Firefox", "Firefox for iOS", "IE", + * "Microsoft Edge", "PhantomJS", "Safari", "SeaMonkey", "Silk", + * "Opera Mini" and "Opera" + * + * Mobile versions of some browsers have "Mobile" appended to their name: + * eg. "Chrome Mobile", "Firefox Mobile", "IE Mobile" and "Opera Mobile" + * + * @memberOf platform + * @type string|null + */ + platform.name = name; + + /** + * The alpha/beta release indicator. + * + * @memberOf platform + * @type string|null + */ + platform.prerelease = prerelease; + + /** + * The name of the product hosting the browser. + * + * The list of common products include: + * + * "BlackBerry", "Galaxy S4", "Lumia", "iPad", "iPod", "iPhone", "Kindle", + * "Kindle Fire", "Nexus", "Nook", "PlayBook", "TouchPad" and "Transformer" + * + * @memberOf platform + * @type string|null + */ + platform.product = product; + + /** + * The browser's user agent string. + * + * @memberOf platform + * @type string|null + */ + platform.ua = ua; + + /** + * The browser/environment version. + * + * @memberOf platform + * @type string|null + */ + platform.version = name && version; + + /** + * The name of the operating system. + * + * @memberOf platform + * @type Object + */ + platform.os = os || { + + /** + * The CPU architecture the OS is built for. + * + * @memberOf platform.os + * @type number|null + */ + 'architecture': null, + + /** + * The family of the OS. + * + * Common values include: + * "Windows", "Windows Server 2008 R2 / 7", "Windows Server 2008 / Vista", + * "Windows XP", "OS X", "Linux", "Ubuntu", "Debian", "Fedora", "Red Hat", + * "SuSE", "Android", "iOS" and "Windows Phone" + * + * @memberOf platform.os + * @type string|null + */ + 'family': null, + + /** + * The version of the OS. + * + * @memberOf platform.os + * @type string|null + */ + 'version': null, + + /** + * Returns the OS string. + * + * @memberOf platform.os + * @returns {string} The OS string. + */ + 'toString': function() { return 'null'; } + }; + + platform.parse = parse; + platform.toString = toStringPlatform; + + if (platform.version) { + description.unshift(version); + } + if (platform.name) { + description.unshift(name); + } + if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) { + description.push(product ? '(' + os + ')' : 'on ' + os); + } + if (description.length) { + platform.description = description.join(' '); + } + return platform; + } + + /*--------------------------------------------------------------------------*/ + + // Export platform. + var platform = parse(); + + // Some AMD build optimizers, like r.js, check for condition patterns like the following: + if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) { + // Expose platform on the global object to prevent errors when platform is + // loaded by a script tag in the presence of an AMD loader. + // See http://requirejs.org/docs/errors.html#mismatch for more details. + root.platform = platform; + + // Define as an anonymous module so platform can be aliased through path mapping. + define(function() { + return platform; + }); + } + // Check for `exports` after `define` in case a build optimizer adds an `exports` object. + else if (freeExports && freeModule) { + // Export for CommonJS support. + forOwn(platform, function(value, key) { + freeExports[key] = value; + }); + } + else { + // Export to the global object. + root.platform = platform; + } +}.call(this)); diff --git a/node_modules/postcss/LICENSE b/node_modules/postcss/LICENSE new file mode 100644 index 0000000..da057b4 --- /dev/null +++ b/node_modules/postcss/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2013 Andrey Sitnik + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/postcss/README.md b/node_modules/postcss/README.md new file mode 100644 index 0000000..05fed07 --- /dev/null +++ b/node_modules/postcss/README.md @@ -0,0 +1,29 @@ +# PostCSS + +Philosopher’s stone, logo of PostCSS + +PostCSS is a tool for transforming styles with JS plugins. +These plugins can lint your CSS, support variables and mixins, +transpile future CSS syntax, inline images, and more. + +PostCSS is used by industry leaders including Wikipedia, Twitter, Alibaba, +and JetBrains. The [Autoprefixer] and [Stylelint] PostCSS plugins are some of the most popular CSS tools. + +--- + +  Built by + Evil Martians, go-to agency for developer tools. + +--- + +[Abstract Syntax Tree]: https://en.wikipedia.org/wiki/Abstract_syntax_tree +[Evil Martians]: https://evilmartians.com/?utm_source=postcss +[Autoprefixer]: https://github.com/postcss/autoprefixer +[Stylelint]: https://stylelint.io/ +[plugins]: https://github.com/postcss/postcss#plugins + + +## Docs +Read full docs **[here](https://postcss.org/)**. diff --git a/node_modules/postcss/lib/at-rule.d.ts b/node_modules/postcss/lib/at-rule.d.ts new file mode 100644 index 0000000..89fb505 --- /dev/null +++ b/node_modules/postcss/lib/at-rule.d.ts @@ -0,0 +1,140 @@ +import Container, { + ContainerProps, + ContainerWithChildren +} from './container.js' + +declare namespace AtRule { + export interface AtRuleRaws extends Record { + /** + * The space symbols after the last child of the node to the end of the node. + */ + after?: string + + /** + * The space between the at-rule name and its parameters. + */ + afterName?: string + + /** + * The space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + */ + before?: string + + /** + * The symbols between the last parameter and `{` for rules. + */ + between?: string + + /** + * The rule’s selector with comments. + */ + params?: { + raw: string + value: string + } + + /** + * Contains `true` if the last child has an (optional) semicolon. + */ + semicolon?: boolean + } + + export interface AtRuleProps extends ContainerProps { + /** Name of the at-rule. */ + name: string + /** Parameters following the name of the at-rule. */ + params?: number | string + /** Information used to generate byte-to-byte equal node string as it was in the origin input. */ + raws?: AtRuleRaws + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { AtRule_ as default } +} + +/** + * Represents an at-rule. + * + * ```js + * Once (root, { AtRule }) { + * let media = new AtRule({ name: 'media', params: 'print' }) + * media.append(…) + * root.append(media) + * } + * ``` + * + * If it’s followed in the CSS by a `{}` block, this node will have + * a nodes property representing its children. + * + * ```js + * const root = postcss.parse('@charset "UTF-8"; @media print {}') + * + * const charset = root.first + * charset.type //=> 'atrule' + * charset.nodes //=> undefined + * + * const media = root.last + * media.nodes //=> [] + * ``` + */ +declare class AtRule_ extends Container { + /** + * An array containing the layer’s children. + * + * ```js + * const root = postcss.parse('@layer example { a { color: black } }') + * const layer = root.first + * layer.nodes.length //=> 1 + * layer.nodes[0].selector //=> 'a' + * ``` + * + * Can be `undefinded` if the at-rule has no body. + * + * ```js + * const root = postcss.parse('@layer a, b, c;') + * const layer = root.first + * layer.nodes //=> undefined + * ``` + */ + nodes: Container['nodes'] | undefined + parent: ContainerWithChildren | undefined + + raws: AtRule.AtRuleRaws + type: 'atrule' + /** + * The at-rule’s name immediately follows the `@`. + * + * ```js + * const root = postcss.parse('@media print {}') + * const media = root.first + * media.name //=> 'media' + * ``` + */ + get name(): string + set name(value: string) + + /** + * The at-rule’s parameters, the values that follow the at-rule’s name + * but precede any `{}` block. + * + * ```js + * const root = postcss.parse('@media print, screen {}') + * const media = root.first + * media.params //=> 'print, screen' + * ``` + */ + get params(): string + + set params(value: string) + + constructor(defaults?: AtRule.AtRuleProps) + assign(overrides: AtRule.AtRuleProps | object): this + clone(overrides?: Partial): this + cloneAfter(overrides?: Partial): this + cloneBefore(overrides?: Partial): this +} + +declare class AtRule extends AtRule_ {} + +export = AtRule diff --git a/node_modules/postcss/lib/at-rule.js b/node_modules/postcss/lib/at-rule.js new file mode 100644 index 0000000..9486447 --- /dev/null +++ b/node_modules/postcss/lib/at-rule.js @@ -0,0 +1,25 @@ +'use strict' + +let Container = require('./container') + +class AtRule extends Container { + constructor(defaults) { + super(defaults) + this.type = 'atrule' + } + + append(...children) { + if (!this.proxyOf.nodes) this.nodes = [] + return super.append(...children) + } + + prepend(...children) { + if (!this.proxyOf.nodes) this.nodes = [] + return super.prepend(...children) + } +} + +module.exports = AtRule +AtRule.default = AtRule + +Container.registerAtRule(AtRule) diff --git a/node_modules/postcss/lib/comment.d.ts b/node_modules/postcss/lib/comment.d.ts new file mode 100644 index 0000000..6f1f66f --- /dev/null +++ b/node_modules/postcss/lib/comment.d.ts @@ -0,0 +1,68 @@ +import Container from './container.js' +import Node, { NodeProps } from './node.js' + +declare namespace Comment { + export interface CommentRaws extends Record { + /** + * The space symbols before the node. + */ + before?: string + + /** + * The space symbols between `/*` and the comment’s text. + */ + left?: string + + /** + * The space symbols between the comment’s text. + */ + right?: string + } + + export interface CommentProps extends NodeProps { + /** Information used to generate byte-to-byte equal node string as it was in the origin input. */ + raws?: CommentRaws + /** Content of the comment. */ + text: string + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Comment_ as default } +} + +/** + * It represents a class that handles + * [CSS comments](https://developer.mozilla.org/en-US/docs/Web/CSS/Comments) + * + * ```js + * Once (root, { Comment }) { + * const note = new Comment({ text: 'Note: …' }) + * root.append(note) + * } + * ``` + * + * Remember that CSS comments inside selectors, at-rule parameters, + * or declaration values will be stored in the `raws` properties + * explained above. + */ +declare class Comment_ extends Node { + parent: Container | undefined + raws: Comment.CommentRaws + type: 'comment' + /** + * The comment's text. + */ + get text(): string + + set text(value: string) + + constructor(defaults?: Comment.CommentProps) + assign(overrides: Comment.CommentProps | object): this + clone(overrides?: Partial): this + cloneAfter(overrides?: Partial): this + cloneBefore(overrides?: Partial): this +} + +declare class Comment extends Comment_ {} + +export = Comment diff --git a/node_modules/postcss/lib/comment.js b/node_modules/postcss/lib/comment.js new file mode 100644 index 0000000..c566506 --- /dev/null +++ b/node_modules/postcss/lib/comment.js @@ -0,0 +1,13 @@ +'use strict' + +let Node = require('./node') + +class Comment extends Node { + constructor(defaults) { + super(defaults) + this.type = 'comment' + } +} + +module.exports = Comment +Comment.default = Comment diff --git a/node_modules/postcss/lib/container.d.ts b/node_modules/postcss/lib/container.d.ts new file mode 100644 index 0000000..c2b310b --- /dev/null +++ b/node_modules/postcss/lib/container.d.ts @@ -0,0 +1,483 @@ +import AtRule from './at-rule.js' +import Comment from './comment.js' +import Declaration from './declaration.js' +import Node, { ChildNode, ChildProps, NodeProps } from './node.js' +import { Root } from './postcss.js' +import Rule from './rule.js' + +declare namespace Container { + export type ContainerWithChildren = { + nodes: Child[] + } & ( + | AtRule + | Root + | Rule + ) + + export interface ValueOptions { + /** + * String that’s used to narrow down values and speed up the regexp search. + */ + fast?: string + + /** + * An array of property names. + */ + props?: readonly string[] + } + + export interface ContainerProps extends NodeProps { + nodes?: readonly (ChildProps | Node)[] + } + + /** + * All types that can be passed into container methods to create or add a new + * child node. + */ + export type NewChild = + | ChildProps + | Node + | readonly ChildProps[] + | readonly Node[] + | readonly string[] + | string + | undefined + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Container_ as default } +} + +/** + * The `Root`, `AtRule`, and `Rule` container nodes + * inherit some common methods to help work with their children. + * + * Note that all containers can store any content. If you write a rule inside + * a rule, PostCSS will parse it. + */ +declare abstract class Container_ extends Node { + /** + * An array containing the container’s children. + * + * ```js + * const root = postcss.parse('a { color: black }') + * root.nodes.length //=> 1 + * root.nodes[0].selector //=> 'a' + * root.nodes[0].nodes[0].prop //=> 'color' + * ``` + */ + nodes: Child[] | undefined + + /** + * The container’s first child. + * + * ```js + * rule.first === rules.nodes[0] + * ``` + */ + get first(): Child | undefined + + /** + * The container’s last child. + * + * ```js + * rule.last === rule.nodes[rule.nodes.length - 1] + * ``` + */ + get last(): Child | undefined + /** + * Inserts new nodes to the end of the container. + * + * ```js + * const decl1 = new Declaration({ prop: 'color', value: 'black' }) + * const decl2 = new Declaration({ prop: 'background-color', value: 'white' }) + * rule.append(decl1, decl2) + * + * root.append({ name: 'charset', params: '"UTF-8"' }) // at-rule + * root.append({ selector: 'a' }) // rule + * rule.append({ prop: 'color', value: 'black' }) // declaration + * rule.append({ text: 'Comment' }) // comment + * + * root.append('a {}') + * root.first.append('color: black; z-index: 1') + * ``` + * + * @param nodes New nodes. + * @return This node for methods chain. + */ + append(...nodes: Container.NewChild[]): this + assign(overrides: Container.ContainerProps | object): this + clone(overrides?: Partial): this + + cloneAfter(overrides?: Partial): this + + cloneBefore(overrides?: Partial): this + /** + * Iterates through the container’s immediate children, + * calling `callback` for each child. + * + * Returning `false` in the callback will break iteration. + * + * This method only iterates through the container’s immediate children. + * If you need to recursively iterate through all the container’s descendant + * nodes, use `Container#walk`. + * + * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe + * if you are mutating the array of child nodes during iteration. + * PostCSS will adjust the current index to match the mutations. + * + * ```js + * const root = postcss.parse('a { color: black; z-index: 1 }') + * const rule = root.first + * + * for (const decl of rule.nodes) { + * decl.cloneBefore({ prop: '-webkit-' + decl.prop }) + * // Cycle will be infinite, because cloneBefore moves the current node + * // to the next index + * } + * + * rule.each(decl => { + * decl.cloneBefore({ prop: '-webkit-' + decl.prop }) + * // Will be executed only for color and z-index + * }) + * ``` + * + * @param callback Iterator receives each node and index. + * @return Returns `false` if iteration was broke. + */ + each( + callback: (node: Child, index: number) => false | void + ): false | undefined + + /** + * Returns `true` if callback returns `true` + * for all of the container’s children. + * + * ```js + * const noPrefixes = rule.every(i => i.prop[0] !== '-') + * ``` + * + * @param condition Iterator returns true or false. + * @return Is every child pass condition. + */ + every( + condition: (node: Child, index: number, nodes: Child[]) => boolean + ): boolean + /** + * Returns a `child`’s index within the `Container#nodes` array. + * + * ```js + * rule.index( rule.nodes[2] ) //=> 2 + * ``` + * + * @param child Child of the current container. + * @return Child index. + */ + index(child: Child | number): number + + /** + * Insert new node after old node within the container. + * + * @param oldNode Child or child’s index. + * @param newNode New node. + * @return This node for methods chain. + */ + insertAfter(oldNode: Child | number, newNode: Container.NewChild): this + + /** + * Traverses the container’s descendant nodes, calling callback + * for each comment node. + * + * Like `Container#each`, this method is safe + * to use if you are mutating arrays during iteration. + * + * ```js + * root.walkComments(comment => { + * comment.remove() + * }) + * ``` + * + * @param callback Iterator receives each node and index. + * @return Returns `false` if iteration was broke. + */ + + /** + * Insert new node before old node within the container. + * + * ```js + * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop })) + * ``` + * + * @param oldNode Child or child’s index. + * @param newNode New node. + * @return This node for methods chain. + */ + insertBefore(oldNode: Child | number, newNode: Container.NewChild): this + /** + * Inserts new nodes to the start of the container. + * + * ```js + * const decl1 = new Declaration({ prop: 'color', value: 'black' }) + * const decl2 = new Declaration({ prop: 'background-color', value: 'white' }) + * rule.prepend(decl1, decl2) + * + * root.append({ name: 'charset', params: '"UTF-8"' }) // at-rule + * root.append({ selector: 'a' }) // rule + * rule.append({ prop: 'color', value: 'black' }) // declaration + * rule.append({ text: 'Comment' }) // comment + * + * root.append('a {}') + * root.first.append('color: black; z-index: 1') + * ``` + * + * @param nodes New nodes. + * @return This node for methods chain. + */ + prepend(...nodes: Container.NewChild[]): this + + /** + * Add child to the end of the node. + * + * ```js + * rule.push(new Declaration({ prop: 'color', value: 'black' })) + * ``` + * + * @param child New node. + * @return This node for methods chain. + */ + push(child: Child): this + + /** + * Removes all children from the container + * and cleans their parent properties. + * + * ```js + * rule.removeAll() + * rule.nodes.length //=> 0 + * ``` + * + * @return This node for methods chain. + */ + removeAll(): this + + /** + * Removes node from the container and cleans the parent properties + * from the node and its children. + * + * ```js + * rule.nodes.length //=> 5 + * rule.removeChild(decl) + * rule.nodes.length //=> 4 + * decl.parent //=> undefined + * ``` + * + * @param child Child or child’s index. + * @return This node for methods chain. + */ + removeChild(child: Child | number): this + + replaceValues( + pattern: RegExp | string, + replaced: { (substring: string, ...args: any[]): string } | string + ): this + /** + * Passes all declaration values within the container that match pattern + * through callback, replacing those values with the returned result + * of callback. + * + * This method is useful if you are using a custom unit or function + * and need to iterate through all values. + * + * ```js + * root.replaceValues(/\d+rem/, { fast: 'rem' }, string => { + * return 15 * parseInt(string) + 'px' + * }) + * ``` + * + * @param pattern Replace pattern. + * @param {object} options Options to speed up the search. + * @param replaced String to replace pattern or callback + * that returns a new value. The callback + * will receive the same arguments + * as those passed to a function parameter + * of `String#replace`. + * @return This node for methods chain. + */ + replaceValues( + pattern: RegExp | string, + options: Container.ValueOptions, + replaced: { (substring: string, ...args: any[]): string } | string + ): this + + /** + * Returns `true` if callback returns `true` for (at least) one + * of the container’s children. + * + * ```js + * const hasPrefix = rule.some(i => i.prop[0] === '-') + * ``` + * + * @param condition Iterator returns true or false. + * @return Is some child pass condition. + */ + some( + condition: (node: Child, index: number, nodes: Child[]) => boolean + ): boolean + + /** + * Traverses the container’s descendant nodes, calling callback + * for each node. + * + * Like container.each(), this method is safe to use + * if you are mutating arrays during iteration. + * + * If you only need to iterate through the container’s immediate children, + * use `Container#each`. + * + * ```js + * root.walk(node => { + * // Traverses all descendant nodes. + * }) + * ``` + * + * @param callback Iterator receives each node and index. + * @return Returns `false` if iteration was broke. + */ + walk( + callback: (node: ChildNode, index: number) => false | void + ): false | undefined + + /** + * Traverses the container’s descendant nodes, calling callback + * for each at-rule node. + * + * If you pass a filter, iteration will only happen over at-rules + * that have matching names. + * + * Like `Container#each`, this method is safe + * to use if you are mutating arrays during iteration. + * + * ```js + * root.walkAtRules(rule => { + * if (isOld(rule.name)) rule.remove() + * }) + * + * let first = false + * root.walkAtRules('charset', rule => { + * if (!first) { + * first = true + * } else { + * rule.remove() + * } + * }) + * ``` + * + * @param name String or regular expression to filter at-rules by name. + * @param callback Iterator receives each node and index. + * @return Returns `false` if iteration was broke. + */ + walkAtRules( + nameFilter: RegExp | string, + callback: (atRule: AtRule, index: number) => false | void + ): false | undefined + walkAtRules( + callback: (atRule: AtRule, index: number) => false | void + ): false | undefined + + walkComments( + callback: (comment: Comment, indexed: number) => false | void + ): false | undefined + walkComments( + callback: (comment: Comment, indexed: number) => false | void + ): false | undefined + + /** + * Traverses the container’s descendant nodes, calling callback + * for each declaration node. + * + * If you pass a filter, iteration will only happen over declarations + * with matching properties. + * + * ```js + * root.walkDecls(decl => { + * checkPropertySupport(decl.prop) + * }) + * + * root.walkDecls('border-radius', decl => { + * decl.remove() + * }) + * + * root.walkDecls(/^background/, decl => { + * decl.value = takeFirstColorFromGradient(decl.value) + * }) + * ``` + * + * Like `Container#each`, this method is safe + * to use if you are mutating arrays during iteration. + * + * @param prop String or regular expression to filter declarations + * by property name. + * @param callback Iterator receives each node and index. + * @return Returns `false` if iteration was broke. + */ + walkDecls( + propFilter: RegExp | string, + callback: (decl: Declaration, index: number) => false | void + ): false | undefined + walkDecls( + callback: (decl: Declaration, index: number) => false | void + ): false | undefined + /** + * Traverses the container’s descendant nodes, calling callback + * for each rule node. + * + * If you pass a filter, iteration will only happen over rules + * with matching selectors. + * + * Like `Container#each`, this method is safe + * to use if you are mutating arrays during iteration. + * + * ```js + * const selectors = [] + * root.walkRules(rule => { + * selectors.push(rule.selector) + * }) + * console.log(`Your CSS uses ${ selectors.length } selectors`) + * ``` + * + * @param selector String or regular expression to filter rules by selector. + * @param callback Iterator receives each node and index. + * @return Returns `false` if iteration was broke. + */ + walkRules( + selectorFilter: RegExp | string, + callback: (rule: Rule, index: number) => false | void + ): false | undefined + walkRules( + callback: (rule: Rule, index: number) => false | void + ): false | undefined + /** + * An internal method that converts a {@link NewChild} into a list of actual + * child nodes that can then be added to this container. + * + * This ensures that the nodes' parent is set to this container, that they use + * the correct prototype chain, and that they're marked as dirty. + * + * @param mnodes The new node or nodes to add. + * @param sample A node from whose raws the new node's `before` raw should be + * taken. + * @param type This should be set to `'prepend'` if the new nodes will be + * inserted at the beginning of the container. + * @hidden + */ + protected normalize( + nodes: Container.NewChild, + sample: Node | undefined, + type?: 'prepend' | false + ): Child[] +} + +declare class Container< + Child extends Node = ChildNode +> extends Container_ {} + +export = Container diff --git a/node_modules/postcss/lib/container.js b/node_modules/postcss/lib/container.js new file mode 100644 index 0000000..edb07cc --- /dev/null +++ b/node_modules/postcss/lib/container.js @@ -0,0 +1,447 @@ +'use strict' + +let Comment = require('./comment') +let Declaration = require('./declaration') +let Node = require('./node') +let { isClean, my } = require('./symbols') + +let AtRule, parse, Root, Rule + +function cleanSource(nodes) { + return nodes.map(i => { + if (i.nodes) i.nodes = cleanSource(i.nodes) + delete i.source + return i + }) +} + +function markTreeDirty(node) { + node[isClean] = false + if (node.proxyOf.nodes) { + for (let i of node.proxyOf.nodes) { + markTreeDirty(i) + } + } +} + +class Container extends Node { + get first() { + if (!this.proxyOf.nodes) return undefined + return this.proxyOf.nodes[0] + } + + get last() { + if (!this.proxyOf.nodes) return undefined + return this.proxyOf.nodes[this.proxyOf.nodes.length - 1] + } + + append(...children) { + for (let child of children) { + let nodes = this.normalize(child, this.last) + for (let node of nodes) this.proxyOf.nodes.push(node) + } + + this.markDirty() + + return this + } + + cleanRaws(keepBetween) { + super.cleanRaws(keepBetween) + if (this.nodes) { + for (let node of this.nodes) node.cleanRaws(keepBetween) + } + } + + each(callback) { + if (!this.proxyOf.nodes) return undefined + let iterator = this.getIterator() + + let index, result + while (this.indexes[iterator] < this.proxyOf.nodes.length) { + index = this.indexes[iterator] + result = callback(this.proxyOf.nodes[index], index) + if (result === false) break + + this.indexes[iterator] += 1 + } + + delete this.indexes[iterator] + return result + } + + every(condition) { + return this.nodes.every(condition) + } + + getIterator() { + if (!this.lastEach) this.lastEach = 0 + if (!this.indexes) this.indexes = {} + + this.lastEach += 1 + let iterator = this.lastEach + this.indexes[iterator] = 0 + + return iterator + } + + getProxyProcessor() { + return { + get(node, prop) { + if (prop === 'proxyOf') { + return node + } else if (!node[prop]) { + return node[prop] + } else if ( + prop === 'each' || + (typeof prop === 'string' && prop.startsWith('walk')) + ) { + return (...args) => { + return node[prop]( + ...args.map(i => { + if (typeof i === 'function') { + return (child, index) => i(child.toProxy(), index) + } else { + return i + } + }) + ) + } + } else if (prop === 'every' || prop === 'some') { + return cb => { + return node[prop]((child, ...other) => + cb(child.toProxy(), ...other) + ) + } + } else if (prop === 'root') { + return () => node.root().toProxy() + } else if (prop === 'nodes') { + return node.nodes.map(i => i.toProxy()) + } else if (prop === 'first' || prop === 'last') { + return node[prop].toProxy() + } else { + return node[prop] + } + }, + + set(node, prop, value) { + if (node[prop] === value) return true + node[prop] = value + if (prop === 'name' || prop === 'params' || prop === 'selector') { + node.markDirty() + } + return true + } + } + } + + index(child) { + if (typeof child === 'number') return child + if (child.proxyOf) child = child.proxyOf + return this.proxyOf.nodes.indexOf(child) + } + + insertAfter(exist, add) { + let existIndex = this.index(exist) + let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse() + existIndex = this.index(exist) + for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node) + + let index + for (let id in this.indexes) { + index = this.indexes[id] + if (existIndex < index) { + this.indexes[id] = index + nodes.length + } + } + + this.markDirty() + + return this + } + + insertBefore(exist, add) { + let existIndex = this.index(exist) + let type = existIndex === 0 ? 'prepend' : false + let nodes = this.normalize( + add, + this.proxyOf.nodes[existIndex], + type + ).reverse() + existIndex = this.index(exist) + for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node) + + let index + for (let id in this.indexes) { + index = this.indexes[id] + if (existIndex <= index) { + this.indexes[id] = index + nodes.length + } + } + + this.markDirty() + + return this + } + + normalize(nodes, sample) { + if (typeof nodes === 'string') { + nodes = cleanSource(parse(nodes).nodes) + } else if (typeof nodes === 'undefined') { + nodes = [] + } else if (Array.isArray(nodes)) { + nodes = nodes.slice(0) + for (let i of nodes) { + if (i.parent) i.parent.removeChild(i, 'ignore') + } + } else if (nodes.type === 'root' && this.type !== 'document') { + nodes = nodes.nodes.slice(0) + for (let i of nodes) { + if (i.parent) i.parent.removeChild(i, 'ignore') + } + } else if (nodes.type) { + nodes = [nodes] + } else if (nodes.prop) { + if (typeof nodes.value === 'undefined') { + throw new Error('Value field is missed in node creation') + } else if (typeof nodes.value !== 'string') { + nodes.value = String(nodes.value) + } + nodes = [new Declaration(nodes)] + } else if (nodes.selector || nodes.selectors) { + nodes = [new Rule(nodes)] + } else if (nodes.name) { + nodes = [new AtRule(nodes)] + } else if (nodes.text) { + nodes = [new Comment(nodes)] + } else { + throw new Error('Unknown node type in node creation') + } + + let processed = nodes.map(i => { + /* c8 ignore next */ + if (!i[my]) Container.rebuild(i) + i = i.proxyOf + if (i.parent) i.parent.removeChild(i) + if (i[isClean]) markTreeDirty(i) + + if (!i.raws) i.raws = {} + if (typeof i.raws.before === 'undefined') { + if (sample && typeof sample.raws.before !== 'undefined') { + i.raws.before = sample.raws.before.replace(/\S/g, '') + } + } + i.parent = this.proxyOf + return i + }) + + return processed + } + + prepend(...children) { + children = children.reverse() + for (let child of children) { + let nodes = this.normalize(child, this.first, 'prepend').reverse() + for (let node of nodes) this.proxyOf.nodes.unshift(node) + for (let id in this.indexes) { + this.indexes[id] = this.indexes[id] + nodes.length + } + } + + this.markDirty() + + return this + } + + push(child) { + child.parent = this + this.proxyOf.nodes.push(child) + return this + } + + removeAll() { + for (let node of this.proxyOf.nodes) node.parent = undefined + this.proxyOf.nodes = [] + + this.markDirty() + + return this + } + + removeChild(child) { + child = this.index(child) + this.proxyOf.nodes[child].parent = undefined + this.proxyOf.nodes.splice(child, 1) + + let index + for (let id in this.indexes) { + index = this.indexes[id] + if (index >= child) { + this.indexes[id] = index - 1 + } + } + + this.markDirty() + + return this + } + + replaceValues(pattern, opts, callback) { + if (!callback) { + callback = opts + opts = {} + } + + this.walkDecls(decl => { + if (opts.props && !opts.props.includes(decl.prop)) return + if (opts.fast && !decl.value.includes(opts.fast)) return + + decl.value = decl.value.replace(pattern, callback) + }) + + this.markDirty() + + return this + } + + some(condition) { + return this.nodes.some(condition) + } + + walk(callback) { + return this.each((child, i) => { + let result + try { + result = callback(child, i) + } catch (e) { + throw child.addToError(e) + } + if (result !== false && child.walk) { + result = child.walk(callback) + } + + return result + }) + } + + walkAtRules(name, callback) { + if (!callback) { + callback = name + return this.walk((child, i) => { + if (child.type === 'atrule') { + return callback(child, i) + } + }) + } + if (name instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'atrule' && name.test(child.name)) { + return callback(child, i) + } + }) + } + return this.walk((child, i) => { + if (child.type === 'atrule' && child.name === name) { + return callback(child, i) + } + }) + } + + walkComments(callback) { + return this.walk((child, i) => { + if (child.type === 'comment') { + return callback(child, i) + } + }) + } + + walkDecls(prop, callback) { + if (!callback) { + callback = prop + return this.walk((child, i) => { + if (child.type === 'decl') { + return callback(child, i) + } + }) + } + if (prop instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'decl' && prop.test(child.prop)) { + return callback(child, i) + } + }) + } + return this.walk((child, i) => { + if (child.type === 'decl' && child.prop === prop) { + return callback(child, i) + } + }) + } + + walkRules(selector, callback) { + if (!callback) { + callback = selector + + return this.walk((child, i) => { + if (child.type === 'rule') { + return callback(child, i) + } + }) + } + if (selector instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'rule' && selector.test(child.selector)) { + return callback(child, i) + } + }) + } + return this.walk((child, i) => { + if (child.type === 'rule' && child.selector === selector) { + return callback(child, i) + } + }) + } +} + +Container.registerParse = dependant => { + parse = dependant +} + +Container.registerRule = dependant => { + Rule = dependant +} + +Container.registerAtRule = dependant => { + AtRule = dependant +} + +Container.registerRoot = dependant => { + Root = dependant +} + +module.exports = Container +Container.default = Container + +/* c8 ignore start */ +Container.rebuild = node => { + if (node.type === 'atrule') { + Object.setPrototypeOf(node, AtRule.prototype) + } else if (node.type === 'rule') { + Object.setPrototypeOf(node, Rule.prototype) + } else if (node.type === 'decl') { + Object.setPrototypeOf(node, Declaration.prototype) + } else if (node.type === 'comment') { + Object.setPrototypeOf(node, Comment.prototype) + } else if (node.type === 'root') { + Object.setPrototypeOf(node, Root.prototype) + } + + node[my] = true + + if (node.nodes) { + node.nodes.forEach(child => { + Container.rebuild(child) + }) + } +} +/* c8 ignore stop */ diff --git a/node_modules/postcss/lib/css-syntax-error.d.ts b/node_modules/postcss/lib/css-syntax-error.d.ts new file mode 100644 index 0000000..e540d84 --- /dev/null +++ b/node_modules/postcss/lib/css-syntax-error.d.ts @@ -0,0 +1,248 @@ +import { FilePosition } from './input.js' + +declare namespace CssSyntaxError { + /** + * A position that is part of a range. + */ + export interface RangePosition { + /** + * The column number in the input. + */ + column: number + + /** + * The line number in the input. + */ + line: number + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { CssSyntaxError_ as default } +} + +/** + * The CSS parser throws this error for broken CSS. + * + * Custom parsers can throw this error for broken custom syntax using + * the `Node#error` method. + * + * PostCSS will use the input source map to detect the original error location. + * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS, + * PostCSS will show the original position in the Sass file. + * + * If you need the position in the PostCSS input + * (e.g., to debug the previous compiler), use `error.input.file`. + * + * ```js + * // Raising error from plugin + * throw node.error('Unknown variable', { plugin: 'postcss-vars' }) + * ``` + * + * ```js + * // Catching and checking syntax error + * try { + * postcss.parse('a{') + * } catch (error) { + * if (error.name === 'CssSyntaxError') { + * error //=> CssSyntaxError + * } + * } + * ``` + */ +declare class CssSyntaxError_ extends Error { + /** + * Source column of the error. + * + * ```js + * error.column //=> 1 + * error.input.column //=> 4 + * ``` + * + * PostCSS will use the input source map to detect the original location. + * If you need the position in the PostCSS input, use `error.input.column`. + */ + column?: number + + /** + * Source column of the error's end, exclusive. Provided if the error pertains + * to a range. + * + * ```js + * error.endColumn //=> 1 + * error.input.endColumn //=> 4 + * ``` + * + * PostCSS will use the input source map to detect the original location. + * If you need the position in the PostCSS input, use `error.input.endColumn`. + */ + endColumn?: number + + /** + * Source line of the error's end, exclusive. Provided if the error pertains + * to a range. + * + * ```js + * error.endLine //=> 3 + * error.input.endLine //=> 4 + * ``` + * + * PostCSS will use the input source map to detect the original location. + * If you need the position in the PostCSS input, use `error.input.endLine`. + */ + endLine?: number + + /** + * Absolute path to the broken file. + * + * ```js + * error.file //=> 'a.sass' + * error.input.file //=> 'a.css' + * ``` + * + * PostCSS will use the input source map to detect the original location. + * If you need the position in the PostCSS input, use `error.input.file`. + */ + file?: string + + /** + * Input object with PostCSS internal information + * about input file. If input has source map + * from previous tool, PostCSS will use origin + * (for example, Sass) source. You can use this + * object to get PostCSS input source. + * + * ```js + * error.input.file //=> 'a.css' + * error.file //=> 'a.sass' + * ``` + */ + input?: FilePosition + + /** + * Source line of the error. + * + * ```js + * error.line //=> 2 + * error.input.line //=> 4 + * ``` + * + * PostCSS will use the input source map to detect the original location. + * If you need the position in the PostCSS input, use `error.input.line`. + */ + line?: number + + /** + * Full error text in the GNU error format + * with plugin, file, line and column. + * + * ```js + * error.message //=> 'a.css:1:1: Unclosed block' + * ``` + */ + message: string + + /** + * Always equal to `'CssSyntaxError'`. You should always check error type + * by `error.name === 'CssSyntaxError'` + * instead of `error instanceof CssSyntaxError`, + * because npm could have several PostCSS versions. + * + * ```js + * if (error.name === 'CssSyntaxError') { + * error //=> CssSyntaxError + * } + * ``` + */ + name: 'CssSyntaxError' + + /** + * Plugin name, if error came from plugin. + * + * ```js + * error.plugin //=> 'postcss-vars' + * ``` + */ + plugin?: string + + /** + * Error message. + * + * ```js + * error.message //=> 'Unclosed block' + * ``` + */ + reason: string + + /** + * Source code of the broken file. + * + * ```js + * error.source //=> 'a { b {} }' + * error.input.source //=> 'a b { }' + * ``` + */ + source?: string + + stack: string + + /** + * Instantiates a CSS syntax error. Can be instantiated for a single position + * or for a range. + * @param message Error message. + * @param lineOrStartPos If for a single position, the line number, or if for + * a range, the inclusive start position of the error. + * @param columnOrEndPos If for a single position, the column number, or if for + * a range, the exclusive end position of the error. + * @param source Source code of the broken file. + * @param file Absolute path to the broken file. + * @param plugin PostCSS plugin name, if error came from plugin. + */ + constructor( + message: string, + lineOrStartPos?: CssSyntaxError.RangePosition | number, + columnOrEndPos?: CssSyntaxError.RangePosition | number, + source?: string, + file?: string, + plugin?: string + ) + + /** + * Returns a few lines of CSS source that caused the error. + * + * If the CSS has an input source map without `sourceContent`, + * this method will return an empty string. + * + * ```js + * error.showSourceCode() //=> " 4 | } + * // 5 | a { + * // > 6 | bad + * // | ^ + * // 7 | } + * // 8 | b {" + * ``` + * + * @param color Whether arrow will be colored red by terminal + * color codes. By default, PostCSS will detect + * color support by `process.stdout.isTTY` + * and `process.env.NODE_DISABLE_COLORS`. + * @return Few lines of CSS source that caused the error. + */ + showSourceCode(color?: boolean): string + + /** + * Returns error position, message and source code of the broken part. + * + * ```js + * error.toString() //=> "CssSyntaxError: app.css:1:1: Unclosed block + * // > 1 | a { + * // | ^" + * ``` + * + * @return Error position, message and source code. + */ + toString(): string +} + +declare class CssSyntaxError extends CssSyntaxError_ {} + +export = CssSyntaxError diff --git a/node_modules/postcss/lib/css-syntax-error.js b/node_modules/postcss/lib/css-syntax-error.js new file mode 100644 index 0000000..275a4f6 --- /dev/null +++ b/node_modules/postcss/lib/css-syntax-error.js @@ -0,0 +1,133 @@ +'use strict' + +let pico = require('picocolors') + +let terminalHighlight = require('./terminal-highlight') + +class CssSyntaxError extends Error { + constructor(message, line, column, source, file, plugin) { + super(message) + this.name = 'CssSyntaxError' + this.reason = message + + if (file) { + this.file = file + } + if (source) { + this.source = source + } + if (plugin) { + this.plugin = plugin + } + if (typeof line !== 'undefined' && typeof column !== 'undefined') { + if (typeof line === 'number') { + this.line = line + this.column = column + } else { + this.line = line.line + this.column = line.column + this.endLine = column.line + this.endColumn = column.column + } + } + + this.setMessage() + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, CssSyntaxError) + } + } + + setMessage() { + this.message = this.plugin ? this.plugin + ': ' : '' + this.message += this.file ? this.file : '' + if (typeof this.line !== 'undefined') { + this.message += ':' + this.line + ':' + this.column + } + this.message += ': ' + this.reason + } + + showSourceCode(color) { + if (!this.source) return '' + + let css = this.source + if (color == null) color = pico.isColorSupported + + let aside = text => text + let mark = text => text + let highlight = text => text + if (color) { + let { bold, gray, red } = pico.createColors(true) + mark = text => bold(red(text)) + aside = text => gray(text) + if (terminalHighlight) { + highlight = text => terminalHighlight(text) + } + } + + let lines = css.split(/\r?\n/) + let start = Math.max(this.line - 3, 0) + let end = Math.min(this.line + 2, lines.length) + let maxWidth = String(end).length + + return lines + .slice(start, end) + .map((line, index) => { + let number = start + 1 + index + let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | ' + if (number === this.line) { + if (line.length > 160) { + let padding = 20 + let subLineStart = Math.max(0, this.column - padding) + let subLineEnd = Math.max( + this.column + padding, + this.endColumn + padding + ) + let subLine = line.slice(subLineStart, subLineEnd) + + let spacing = + aside(gutter.replace(/\d/g, ' ')) + + line + .slice(0, Math.min(this.column - 1, padding - 1)) + .replace(/[^\t]/g, ' ') + + return ( + mark('>') + + aside(gutter) + + highlight(subLine) + + '\n ' + + spacing + + mark('^') + ) + } + + let spacing = + aside(gutter.replace(/\d/g, ' ')) + + line.slice(0, this.column - 1).replace(/[^\t]/g, ' ') + + return ( + mark('>') + + aside(gutter) + + highlight(line) + + '\n ' + + spacing + + mark('^') + ) + } + + return ' ' + aside(gutter) + highlight(line) + }) + .join('\n') + } + + toString() { + let code = this.showSourceCode() + if (code) { + code = '\n\n' + code + '\n' + } + return this.name + ': ' + this.message + code + } +} + +module.exports = CssSyntaxError +CssSyntaxError.default = CssSyntaxError diff --git a/node_modules/postcss/lib/declaration.d.ts b/node_modules/postcss/lib/declaration.d.ts new file mode 100644 index 0000000..d489b42 --- /dev/null +++ b/node_modules/postcss/lib/declaration.d.ts @@ -0,0 +1,151 @@ +import { ContainerWithChildren } from './container.js' +import Node from './node.js' + +declare namespace Declaration { + export interface DeclarationRaws extends Record { + /** + * The space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + */ + before?: string + + /** + * The symbols between the property and value for declarations. + */ + between?: string + + /** + * The content of the important statement, if it is not just `!important`. + */ + important?: string + + /** + * Declaration value with comments. + */ + value?: { + raw: string + value: string + } + } + + export interface DeclarationProps { + /** Whether the declaration has an `!important` annotation. */ + important?: boolean + /** Name of the declaration. */ + prop: string + /** Information used to generate byte-to-byte equal node string as it was in the origin input. */ + raws?: DeclarationRaws + /** Value of the declaration. */ + value: string + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Declaration_ as default } +} + +/** + * It represents a class that handles + * [CSS declarations](https://developer.mozilla.org/en-US/docs/Web/CSS/Syntax#css_declarations) + * + * ```js + * Once (root, { Declaration }) { + * const color = new Declaration({ prop: 'color', value: 'black' }) + * root.append(color) + * } + * ``` + * + * ```js + * const root = postcss.parse('a { color: black }') + * const decl = root.first?.first + * + * decl.type //=> 'decl' + * decl.toString() //=> ' color: black' + * ``` + */ +declare class Declaration_ extends Node { + parent: ContainerWithChildren | undefined + raws: Declaration.DeclarationRaws + + type: 'decl' + + /** + * It represents a specificity of the declaration. + * + * If true, the CSS declaration will have an + * [important](https://developer.mozilla.org/en-US/docs/Web/CSS/important) + * specifier. + * + * ```js + * const root = postcss.parse('a { color: black !important; color: red }') + * + * root.first.first.important //=> true + * root.first.last.important //=> undefined + * ``` + */ + get important(): boolean + set important(value: boolean) + + /** + * The property name for a CSS declaration. + * + * ```js + * const root = postcss.parse('a { color: black }') + * const decl = root.first.first + * + * decl.prop //=> 'color' + * ``` + */ + get prop(): string + + set prop(value: string) + + /** + * The property value for a CSS declaration. + * + * Any CSS comments inside the value string will be filtered out. + * CSS comments present in the source value will be available in + * the `raws` property. + * + * Assigning new `value` would ignore the comments in `raws` + * property while compiling node to string. + * + * ```js + * const root = postcss.parse('a { color: black }') + * const decl = root.first.first + * + * decl.value //=> 'black' + * ``` + */ + get value(): string + set value(value: string) + + /** + * It represents a getter that returns `true` if a declaration starts with + * `--` or `$`, which are used to declare variables in CSS and SASS/SCSS. + * + * ```js + * const root = postcss.parse(':root { --one: 1 }') + * const one = root.first.first + * + * one.variable //=> true + * ``` + * + * ```js + * const root = postcss.parse('$one: 1') + * const one = root.first + * + * one.variable //=> true + * ``` + */ + get variable(): boolean + constructor(defaults?: Declaration.DeclarationProps) + + assign(overrides: Declaration.DeclarationProps | object): this + clone(overrides?: Partial): this + cloneAfter(overrides?: Partial): this + cloneBefore(overrides?: Partial): this +} + +declare class Declaration extends Declaration_ {} + +export = Declaration diff --git a/node_modules/postcss/lib/declaration.js b/node_modules/postcss/lib/declaration.js new file mode 100644 index 0000000..65a03aa --- /dev/null +++ b/node_modules/postcss/lib/declaration.js @@ -0,0 +1,24 @@ +'use strict' + +let Node = require('./node') + +class Declaration extends Node { + get variable() { + return this.prop.startsWith('--') || this.prop[0] === '$' + } + + constructor(defaults) { + if ( + defaults && + typeof defaults.value !== 'undefined' && + typeof defaults.value !== 'string' + ) { + defaults = { ...defaults, value: String(defaults.value) } + } + super(defaults) + this.type = 'decl' + } +} + +module.exports = Declaration +Declaration.default = Declaration diff --git a/node_modules/postcss/lib/document.d.ts b/node_modules/postcss/lib/document.d.ts new file mode 100644 index 0000000..f9e8063 --- /dev/null +++ b/node_modules/postcss/lib/document.d.ts @@ -0,0 +1,69 @@ +import Container, { ContainerProps } from './container.js' +import { ProcessOptions } from './postcss.js' +import Result from './result.js' +import Root from './root.js' + +declare namespace Document { + export interface DocumentProps extends ContainerProps { + nodes?: readonly Root[] + + /** + * Information to generate byte-to-byte equal node string as it was + * in the origin input. + * + * Every parser saves its own properties. + */ + raws?: Record + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Document_ as default } +} + +/** + * Represents a file and contains all its parsed nodes. + * + * **Experimental:** some aspects of this node could change within minor + * or patch version releases. + * + * ```js + * const document = htmlParser( + * '' + * ) + * document.type //=> 'document' + * document.nodes.length //=> 2 + * ``` + */ +declare class Document_ extends Container { + nodes: Root[] + parent: undefined + type: 'document' + + constructor(defaults?: Document.DocumentProps) + + assign(overrides: Document.DocumentProps | object): this + clone(overrides?: Partial): this + cloneAfter(overrides?: Partial): this + cloneBefore(overrides?: Partial): this + + /** + * Returns a `Result` instance representing the document’s CSS roots. + * + * ```js + * const root1 = postcss.parse(css1, { from: 'a.css' }) + * const root2 = postcss.parse(css2, { from: 'b.css' }) + * const document = postcss.document() + * document.append(root1) + * document.append(root2) + * const result = document.toResult({ to: 'all.css', map: true }) + * ``` + * + * @param opts Options. + * @return Result with current document’s CSS. + */ + toResult(options?: ProcessOptions): Result +} + +declare class Document extends Document_ {} + +export = Document diff --git a/node_modules/postcss/lib/document.js b/node_modules/postcss/lib/document.js new file mode 100644 index 0000000..4468991 --- /dev/null +++ b/node_modules/postcss/lib/document.js @@ -0,0 +1,33 @@ +'use strict' + +let Container = require('./container') + +let LazyResult, Processor + +class Document extends Container { + constructor(defaults) { + // type needs to be passed to super, otherwise child roots won't be normalized correctly + super({ type: 'document', ...defaults }) + + if (!this.nodes) { + this.nodes = [] + } + } + + toResult(opts = {}) { + let lazy = new LazyResult(new Processor(), this, opts) + + return lazy.stringify() + } +} + +Document.registerLazyResult = dependant => { + LazyResult = dependant +} + +Document.registerProcessor = dependant => { + Processor = dependant +} + +module.exports = Document +Document.default = Document diff --git a/node_modules/postcss/lib/fromJSON.d.ts b/node_modules/postcss/lib/fromJSON.d.ts new file mode 100644 index 0000000..e1deedb --- /dev/null +++ b/node_modules/postcss/lib/fromJSON.d.ts @@ -0,0 +1,9 @@ +import { JSONHydrator } from './postcss.js' + +interface FromJSON extends JSONHydrator { + default: FromJSON +} + +declare const fromJSON: FromJSON + +export = fromJSON diff --git a/node_modules/postcss/lib/fromJSON.js b/node_modules/postcss/lib/fromJSON.js new file mode 100644 index 0000000..c9ac1a8 --- /dev/null +++ b/node_modules/postcss/lib/fromJSON.js @@ -0,0 +1,54 @@ +'use strict' + +let AtRule = require('./at-rule') +let Comment = require('./comment') +let Declaration = require('./declaration') +let Input = require('./input') +let PreviousMap = require('./previous-map') +let Root = require('./root') +let Rule = require('./rule') + +function fromJSON(json, inputs) { + if (Array.isArray(json)) return json.map(n => fromJSON(n)) + + let { inputs: ownInputs, ...defaults } = json + if (ownInputs) { + inputs = [] + for (let input of ownInputs) { + let inputHydrated = { ...input, __proto__: Input.prototype } + if (inputHydrated.map) { + inputHydrated.map = { + ...inputHydrated.map, + __proto__: PreviousMap.prototype + } + } + inputs.push(inputHydrated) + } + } + if (defaults.nodes) { + defaults.nodes = json.nodes.map(n => fromJSON(n, inputs)) + } + if (defaults.source) { + let { inputId, ...source } = defaults.source + defaults.source = source + if (inputId != null) { + defaults.source.input = inputs[inputId] + } + } + if (defaults.type === 'root') { + return new Root(defaults) + } else if (defaults.type === 'decl') { + return new Declaration(defaults) + } else if (defaults.type === 'rule') { + return new Rule(defaults) + } else if (defaults.type === 'comment') { + return new Comment(defaults) + } else if (defaults.type === 'atrule') { + return new AtRule(defaults) + } else { + throw new Error('Unknown node type: ' + json.type) + } +} + +module.exports = fromJSON +fromJSON.default = fromJSON diff --git a/node_modules/postcss/lib/input.d.ts b/node_modules/postcss/lib/input.d.ts new file mode 100644 index 0000000..3207da3 --- /dev/null +++ b/node_modules/postcss/lib/input.d.ts @@ -0,0 +1,227 @@ +import { CssSyntaxError, ProcessOptions } from './postcss.js' +import PreviousMap from './previous-map.js' + +declare namespace Input { + export interface FilePosition { + /** + * Column of inclusive start position in source file. + */ + column: number + + /** + * Column of exclusive end position in source file. + */ + endColumn?: number + + /** + * Line of exclusive end position in source file. + */ + endLine?: number + + /** + * Offset of exclusive end position in source file. + */ + endOffset?: number + + /** + * Absolute path to the source file. + */ + file?: string + + /** + * Line of inclusive start position in source file. + */ + line: number + + /** + * Offset of inclusive start position in source file. + */ + offset: number + + /** + * Source code. + */ + source?: string + + /** + * URL for the source file. + */ + url: string + } + + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { Input_ as default } +} + +/** + * Represents the source CSS. + * + * ```js + * const root = postcss.parse(css, { from: file }) + * const input = root.source.input + * ``` + */ +declare class Input_ { + /** + * Input CSS source. + * + * ```js + * const input = postcss.parse('a{}', { from: file }).input + * input.css //=> "a{}" + * ``` + */ + css: string + + /** + * Input source with support for non-CSS documents. + * + * ```js + * const input = postcss.parse('a{}', { from: file, document: '' }).input + * input.document //=> "" + * input.css //=> "a{}" + * ``` + */ + document: string + + /** + * The absolute path to the CSS source file defined + * with the `from` option. + * + * ```js + * const root = postcss.parse(css, { from: 'a.css' }) + * root.source.input.file //=> '/home/ai/a.css' + * ``` + */ + file?: string + + /** + * The flag to indicate whether or not the source code has Unicode BOM. + */ + hasBOM: boolean + + /** + * The unique ID of the CSS source. It will be created if `from` option + * is not provided (because PostCSS does not know the file path). + * + * ```js + * const root = postcss.parse(css) + * root.source.input.file //=> undefined + * root.source.input.id //=> "" + * ``` + */ + id?: string + + /** + * The input source map passed from a compilation step before PostCSS + * (for example, from Sass compiler). + * + * ```js + * root.source.input.map.consumer().sources //=> ['a.sass'] + * ``` + */ + map: PreviousMap + + /** + * The CSS source identifier. Contains `Input#file` if the user + * set the `from` option, or `Input#id` if they did not. + * + * ```js + * const root = postcss.parse(css, { from: 'a.css' }) + * root.source.input.from //=> "/home/ai/a.css" + * + * const root = postcss.parse(css) + * root.source.input.from //=> "" + * ``` + */ + get from(): string + + /** + * @param css Input CSS source. + * @param opts Process options. + */ + constructor(css: string, opts?: ProcessOptions) + + /** + * Returns `CssSyntaxError` with information about the error and its position. + */ + error( + message: string, + start: + | { + column: number + line: number + } + | { + offset: number + }, + end: + | { + column: number + line: number + } + | { + offset: number + }, + opts?: { plugin?: CssSyntaxError['plugin'] } + ): CssSyntaxError + error( + message: string, + line: number, + column: number, + opts?: { plugin?: CssSyntaxError['plugin'] } + ): CssSyntaxError + error( + message: string, + offset: number, + opts?: { plugin?: CssSyntaxError['plugin'] } + ): CssSyntaxError + + /** + * Converts source line and column to offset. + * + * @param line Source line. + * @param column Source column. + * @return Source offset. + */ + fromLineAndColumn(line: number, column: number): number + + /** + * Converts source offset to line and column. + * + * @param offset Source offset. + */ + fromOffset(offset: number): { col: number; line: number } | null + + /** + * Reads the input source map and returns a symbol position + * in the input source (e.g., in a Sass file that was compiled + * to CSS before being passed to PostCSS). Optionally takes an + * end position, exclusive. + * + * ```js + * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 } + * root.source.input.origin(1, 1, 1, 4) + * //=> { file: 'a.css', line: 3, column: 1, endLine: 3, endColumn: 4 } + * ``` + * + * @param line Line for inclusive start position in input CSS. + * @param column Column for inclusive start position in input CSS. + * @param endLine Line for exclusive end position in input CSS. + * @param endColumn Column for exclusive end position in input CSS. + * + * @return Position in input source. + */ + origin( + line: number, + column: number, + endLine?: number, + endColumn?: number + ): false | Input.FilePosition + + /** Converts this to a JSON-friendly object representation. */ + toJSON(): object +} + +declare class Input extends Input_ {} + +export = Input diff --git a/node_modules/postcss/lib/input.js b/node_modules/postcss/lib/input.js new file mode 100644 index 0000000..bb0ccf5 --- /dev/null +++ b/node_modules/postcss/lib/input.js @@ -0,0 +1,265 @@ +'use strict' + +let { nanoid } = require('nanoid/non-secure') +let { isAbsolute, resolve } = require('path') +let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js') +let { fileURLToPath, pathToFileURL } = require('url') + +let CssSyntaxError = require('./css-syntax-error') +let PreviousMap = require('./previous-map') +let terminalHighlight = require('./terminal-highlight') + +let lineToIndexCache = Symbol('lineToIndexCache') + +let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator) +let pathAvailable = Boolean(resolve && isAbsolute) + +function getLineToIndex(input) { + if (input[lineToIndexCache]) return input[lineToIndexCache] + let lines = input.css.split('\n') + let lineToIndex = new Array(lines.length) + let prevIndex = 0 + + for (let i = 0, l = lines.length; i < l; i++) { + lineToIndex[i] = prevIndex + prevIndex += lines[i].length + 1 + } + + input[lineToIndexCache] = lineToIndex + return lineToIndex +} + +class Input { + get from() { + return this.file || this.id + } + + constructor(css, opts = {}) { + if ( + css === null || + typeof css === 'undefined' || + (typeof css === 'object' && !css.toString) + ) { + throw new Error(`PostCSS received ${css} instead of CSS string`) + } + + this.css = css.toString() + + if (this.css[0] === '\uFEFF' || this.css[0] === '\uFFFE') { + this.hasBOM = true + this.css = this.css.slice(1) + } else { + this.hasBOM = false + } + + this.document = this.css + if (opts.document) this.document = opts.document.toString() + + if (opts.from) { + if ( + !pathAvailable || + /^\w+:\/\//.test(opts.from) || + isAbsolute(opts.from) + ) { + this.file = opts.from + } else { + this.file = resolve(opts.from) + } + } + + if (pathAvailable && sourceMapAvailable) { + let map = new PreviousMap(this.css, opts) + if (map.text) { + this.map = map + let file = map.consumer().file + if (!this.file && file) this.file = this.mapResolve(file) + } + } + + if (!this.file) { + this.id = '' + } + if (this.map) this.map.file = this.from + } + + error(message, line, column, opts = {}) { + let endColumn, endLine, endOffset, offset, result + + if (line && typeof line === 'object') { + let start = line + let end = column + if (typeof start.offset === 'number') { + offset = start.offset + let pos = this.fromOffset(offset) + line = pos.line + column = pos.col + } else { + line = start.line + column = start.column + offset = this.fromLineAndColumn(line, column) + } + if (typeof end.offset === 'number') { + endOffset = end.offset + let pos = this.fromOffset(endOffset) + endLine = pos.line + endColumn = pos.col + } else { + endLine = end.line + endColumn = end.column + endOffset = this.fromLineAndColumn(end.line, end.column) + } + } else if (!column) { + offset = line + let pos = this.fromOffset(offset) + line = pos.line + column = pos.col + } else { + offset = this.fromLineAndColumn(line, column) + } + + let origin = this.origin(line, column, endLine, endColumn) + if (origin) { + result = new CssSyntaxError( + message, + origin.endLine === undefined + ? origin.line + : { column: origin.column, line: origin.line }, + origin.endLine === undefined + ? origin.column + : { column: origin.endColumn, line: origin.endLine }, + origin.source, + origin.file, + opts.plugin + ) + } else { + result = new CssSyntaxError( + message, + endLine === undefined ? line : { column, line }, + endLine === undefined ? column : { column: endColumn, line: endLine }, + this.css, + this.file, + opts.plugin + ) + } + + result.input = { column, endColumn, endLine, endOffset, line, offset, source: this.css } + if (this.file) { + if (pathToFileURL) { + result.input.url = pathToFileURL(this.file).toString() + } + result.input.file = this.file + } + + return result + } + + fromLineAndColumn(line, column) { + let lineToIndex = getLineToIndex(this) + let index = lineToIndex[line - 1] + return index + column - 1 + } + + fromOffset(offset) { + let lineToIndex = getLineToIndex(this) + let lastLine = lineToIndex[lineToIndex.length - 1] + + let min = 0 + if (offset >= lastLine) { + min = lineToIndex.length - 1 + } else { + let max = lineToIndex.length - 2 + let mid + while (min < max) { + mid = min + ((max - min) >> 1) + if (offset < lineToIndex[mid]) { + max = mid - 1 + } else if (offset >= lineToIndex[mid + 1]) { + min = mid + 1 + } else { + min = mid + break + } + } + } + return { + col: offset - lineToIndex[min] + 1, + line: min + 1 + } + } + + mapResolve(file) { + if (/^\w+:\/\//.test(file)) { + return file + } + return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file) + } + + origin(line, column, endLine, endColumn) { + if (!this.map) return false + let consumer = this.map.consumer() + + let from = consumer.originalPositionFor({ column, line }) + if (!from.source) return false + + let to + if (typeof endLine === 'number') { + to = consumer.originalPositionFor({ column: endColumn, line: endLine }) + } + + let fromUrl + + if (isAbsolute(from.source)) { + fromUrl = pathToFileURL(from.source) + } else { + fromUrl = new URL( + from.source, + this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile) + ) + } + + let result = { + column: from.column, + endColumn: to && to.column, + endLine: to && to.line, + line: from.line, + url: fromUrl.toString() + } + + if (fromUrl.protocol === 'file:') { + if (fileURLToPath) { + result.file = fileURLToPath(fromUrl) + } else { + /* c8 ignore next 2 */ + throw new Error(`file: protocol is not available in this PostCSS build`) + } + } + + let source = consumer.sourceContentFor(from.source) + if (source) result.source = source + + return result + } + + toJSON() { + let json = {} + for (let name of ['hasBOM', 'css', 'file', 'id']) { + if (this[name] != null) { + json[name] = this[name] + } + } + if (this.map) { + json.map = { ...this.map } + if (json.map.consumerCache) { + json.map.consumerCache = undefined + } + } + return json + } +} + +module.exports = Input +Input.default = Input + +if (terminalHighlight && terminalHighlight.registerInput) { + terminalHighlight.registerInput(Input) +} diff --git a/node_modules/postcss/lib/lazy-result.d.ts b/node_modules/postcss/lib/lazy-result.d.ts new file mode 100644 index 0000000..2eb7279 --- /dev/null +++ b/node_modules/postcss/lib/lazy-result.d.ts @@ -0,0 +1,190 @@ +import Document from './document.js' +import { SourceMap } from './postcss.js' +import Processor from './processor.js' +import Result, { Message, ResultOptions } from './result.js' +import Root from './root.js' +import Warning from './warning.js' + +declare namespace LazyResult { + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { LazyResult_ as default } +} + +/** + * A Promise proxy for the result of PostCSS transformations. + * + * A `LazyResult` instance is returned by `Processor#process`. + * + * ```js + * const lazy = postcss([autoprefixer]).process(css) + * ``` + */ +declare class LazyResult_ + implements PromiseLike> +{ + /** + * Processes input CSS through synchronous and asynchronous plugins + * and calls onRejected for each error thrown in any plugin. + * + * It implements standard Promise API. + * + * ```js + * postcss([autoprefixer]).process(css).then(result => { + * console.log(result.css) + * }).catch(error => { + * console.error(error) + * }) + * ``` + */ + catch: Promise>['catch'] + + /** + * Processes input CSS through synchronous and asynchronous plugins + * and calls onFinally on any error or when all plugins will finish work. + * + * It implements standard Promise API. + * + * ```js + * postcss([autoprefixer]).process(css).finally(() => { + * console.log('processing ended') + * }) + * ``` + */ + finally: Promise>['finally'] + + /** + * Processes input CSS through synchronous and asynchronous plugins + * and calls `onFulfilled` with a Result instance. If a plugin throws + * an error, the `onRejected` callback will be executed. + * + * It implements standard Promise API. + * + * ```js + * postcss([autoprefixer]).process(css, { from: cssPath }).then(result => { + * console.log(result.css) + * }) + * ``` + */ + then: Promise>['then'] + + /** + * An alias for the `css` property. Use it with syntaxes + * that generate non-CSS output. + * + * This property will only work with synchronous plugins. + * If the processor contains any asynchronous plugins + * it will throw an error. + * + * PostCSS runners should always use `LazyResult#then`. + */ + get content(): string + + /** + * Processes input CSS through synchronous plugins, converts `Root` + * to a CSS string and returns `Result#css`. + * + * This property will only work with synchronous plugins. + * If the processor contains any asynchronous plugins + * it will throw an error. + * + * PostCSS runners should always use `LazyResult#then`. + */ + get css(): string + + /** + * Processes input CSS through synchronous plugins + * and returns `Result#map`. + * + * This property will only work with synchronous plugins. + * If the processor contains any asynchronous plugins + * it will throw an error. + * + * PostCSS runners should always use `LazyResult#then`. + */ + get map(): SourceMap + + /** + * Processes input CSS through synchronous plugins + * and returns `Result#messages`. + * + * This property will only work with synchronous plugins. If the processor + * contains any asynchronous plugins it will throw an error. + * + * PostCSS runners should always use `LazyResult#then`. + */ + get messages(): Message[] + + /** + * Options from the `Processor#process` call. + */ + get opts(): ResultOptions + + /** + * Returns a `Processor` instance, which will be used + * for CSS transformations. + */ + get processor(): Processor + + /** + * Processes input CSS through synchronous plugins + * and returns `Result#root`. + * + * This property will only work with synchronous plugins. If the processor + * contains any asynchronous plugins it will throw an error. + * + * PostCSS runners should always use `LazyResult#then`. + */ + get root(): RootNode + + /** + * Returns the default string description of an object. + * Required to implement the Promise interface. + */ + get [Symbol.toStringTag](): string + + /** + * @param processor Processor used for this transformation. + * @param css CSS to parse and transform. + * @param opts Options from the `Processor#process` or `Root#toResult`. + */ + constructor(processor: Processor, css: string, opts: ResultOptions) + + /** + * Run plugin in async way and return `Result`. + * + * @return Result with output content. + */ + async(): Promise> + + /** + * Run plugin in sync way and return `Result`. + * + * @return Result with output content. + */ + sync(): Result + + /** + * Alias for the `LazyResult#css` property. + * + * ```js + * lazy + '' === lazy.css + * ``` + * + * @return Output CSS. + */ + toString(): string + + /** + * Processes input CSS through synchronous plugins + * and calls `Result#warnings`. + * + * @return Warnings from plugins. + */ + warnings(): Warning[] +} + +declare class LazyResult< + RootNode = Document | Root +> extends LazyResult_ {} + +export = LazyResult diff --git a/node_modules/postcss/lib/lazy-result.js b/node_modules/postcss/lib/lazy-result.js new file mode 100644 index 0000000..1ea52b8 --- /dev/null +++ b/node_modules/postcss/lib/lazy-result.js @@ -0,0 +1,550 @@ +'use strict' + +let Container = require('./container') +let Document = require('./document') +let MapGenerator = require('./map-generator') +let parse = require('./parse') +let Result = require('./result') +let Root = require('./root') +let stringify = require('./stringify') +let { isClean, my } = require('./symbols') +let warnOnce = require('./warn-once') + +const TYPE_TO_CLASS_NAME = { + atrule: 'AtRule', + comment: 'Comment', + decl: 'Declaration', + document: 'Document', + root: 'Root', + rule: 'Rule' +} + +const PLUGIN_PROPS = { + AtRule: true, + AtRuleExit: true, + Comment: true, + CommentExit: true, + Declaration: true, + DeclarationExit: true, + Document: true, + DocumentExit: true, + Once: true, + OnceExit: true, + postcssPlugin: true, + prepare: true, + Root: true, + RootExit: true, + Rule: true, + RuleExit: true +} + +const NOT_VISITORS = { + Once: true, + postcssPlugin: true, + prepare: true +} + +const CHILDREN = 0 + +function isPromise(obj) { + return typeof obj === 'object' && typeof obj.then === 'function' +} + +function getEvents(node) { + let key = false + let type = TYPE_TO_CLASS_NAME[node.type] + if (node.type === 'decl') { + key = node.prop.toLowerCase() + } else if (node.type === 'atrule') { + key = node.name.toLowerCase() + } + + if (key && node.append) { + return [ + type, + type + '-' + key, + CHILDREN, + type + 'Exit', + type + 'Exit-' + key + ] + } else if (key) { + return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key] + } else if (node.append) { + return [type, CHILDREN, type + 'Exit'] + } else { + return [type, type + 'Exit'] + } +} + +function toStack(node) { + let events + if (node.type === 'document') { + events = ['Document', CHILDREN, 'DocumentExit'] + } else if (node.type === 'root') { + events = ['Root', CHILDREN, 'RootExit'] + } else { + events = getEvents(node) + } + + return { + eventIndex: 0, + events, + iterator: 0, + node, + visitorIndex: 0, + visitors: [] + } +} + +function cleanMarks(node) { + node[isClean] = false + if (node.nodes) node.nodes.forEach(i => cleanMarks(i)) + return node +} + +let postcss = {} + +class LazyResult { + get content() { + return this.stringify().content + } + + get css() { + return this.stringify().css + } + + get map() { + return this.stringify().map + } + + get messages() { + return this.sync().messages + } + + get opts() { + return this.result.opts + } + + get processor() { + return this.result.processor + } + + get root() { + return this.sync().root + } + + get [Symbol.toStringTag]() { + return 'LazyResult' + } + + constructor(processor, css, opts) { + this.stringified = false + this.processed = false + + let root + if ( + typeof css === 'object' && + css !== null && + (css.type === 'root' || css.type === 'document') + ) { + root = cleanMarks(css) + } else if (css instanceof LazyResult || css instanceof Result) { + root = cleanMarks(css.root) + if (css.map) { + if (typeof opts.map === 'undefined') opts.map = {} + if (!opts.map.inline) opts.map.inline = false + opts.map.prev = css.map + } + } else { + let parser = parse + if (opts.syntax) parser = opts.syntax.parse + if (opts.parser) parser = opts.parser + if (parser.parse) parser = parser.parse + + try { + root = parser(css, opts) + } catch (error) { + this.processed = true + this.error = error + } + + if (root && !root[my]) { + /* c8 ignore next 2 */ + Container.rebuild(root) + } + } + + this.result = new Result(processor, root, opts) + this.helpers = { ...postcss, postcss, result: this.result } + this.plugins = this.processor.plugins.map(plugin => { + if (typeof plugin === 'object' && plugin.prepare) { + return { ...plugin, ...plugin.prepare(this.result) } + } else { + return plugin + } + }) + } + + async() { + if (this.error) return Promise.reject(this.error) + if (this.processed) return Promise.resolve(this.result) + if (!this.processing) { + this.processing = this.runAsync() + } + return this.processing + } + + catch(onRejected) { + return this.async().catch(onRejected) + } + + finally(onFinally) { + return this.async().then(onFinally, onFinally) + } + + getAsyncError() { + throw new Error('Use process(css).then(cb) to work with async plugins') + } + + handleError(error, node) { + let plugin = this.result.lastPlugin + try { + if (node) node.addToError(error) + this.error = error + if (error.name === 'CssSyntaxError' && !error.plugin) { + error.plugin = plugin.postcssPlugin + error.setMessage() + } else if (plugin.postcssVersion) { + if (process.env.NODE_ENV !== 'production') { + let pluginName = plugin.postcssPlugin + let pluginVer = plugin.postcssVersion + let runtimeVer = this.result.processor.version + let a = pluginVer.split('.') + let b = runtimeVer.split('.') + + if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) { + // eslint-disable-next-line no-console + console.error( + 'Unknown error from PostCSS plugin. Your current PostCSS ' + + 'version is ' + + runtimeVer + + ', but ' + + pluginName + + ' uses ' + + pluginVer + + '. Perhaps this is the source of the error below.' + ) + } + } + } + } catch (err) { + /* c8 ignore next 3 */ + // eslint-disable-next-line no-console + if (console && console.error) console.error(err) + } + return error + } + + prepareVisitors() { + this.listeners = {} + let add = (plugin, type, cb) => { + if (!this.listeners[type]) this.listeners[type] = [] + this.listeners[type].push([plugin, cb]) + } + for (let plugin of this.plugins) { + if (typeof plugin === 'object') { + for (let event in plugin) { + if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) { + throw new Error( + `Unknown event ${event} in ${plugin.postcssPlugin}. ` + + `Try to update PostCSS (${this.processor.version} now).` + ) + } + if (!NOT_VISITORS[event]) { + if (typeof plugin[event] === 'object') { + for (let filter in plugin[event]) { + if (filter === '*') { + add(plugin, event, plugin[event][filter]) + } else { + add( + plugin, + event + '-' + filter.toLowerCase(), + plugin[event][filter] + ) + } + } + } else if (typeof plugin[event] === 'function') { + add(plugin, event, plugin[event]) + } + } + } + } + } + this.hasListener = Object.keys(this.listeners).length > 0 + } + + async runAsync() { + this.plugin = 0 + for (let i = 0; i < this.plugins.length; i++) { + let plugin = this.plugins[i] + let promise = this.runOnRoot(plugin) + if (isPromise(promise)) { + try { + await promise + } catch (error) { + throw this.handleError(error) + } + } + } + + this.prepareVisitors() + if (this.hasListener) { + let root = this.result.root + while (!root[isClean]) { + root[isClean] = true + let stack = [toStack(root)] + while (stack.length > 0) { + let promise = this.visitTick(stack) + if (isPromise(promise)) { + try { + await promise + } catch (e) { + let node = stack[stack.length - 1].node + throw this.handleError(e, node) + } + } + } + } + + if (this.listeners.OnceExit) { + for (let [plugin, visitor] of this.listeners.OnceExit) { + this.result.lastPlugin = plugin + try { + if (root.type === 'document') { + let roots = root.nodes.map(subRoot => + visitor(subRoot, this.helpers) + ) + + await Promise.all(roots) + } else { + await visitor(root, this.helpers) + } + } catch (e) { + throw this.handleError(e) + } + } + } + } + + this.processed = true + return this.stringify() + } + + runOnRoot(plugin) { + this.result.lastPlugin = plugin + try { + if (typeof plugin === 'object' && plugin.Once) { + if (this.result.root.type === 'document') { + let roots = this.result.root.nodes.map(root => + plugin.Once(root, this.helpers) + ) + + if (isPromise(roots[0])) { + return Promise.all(roots) + } + + return roots + } + + return plugin.Once(this.result.root, this.helpers) + } else if (typeof plugin === 'function') { + return plugin(this.result.root, this.result) + } + } catch (error) { + throw this.handleError(error) + } + } + + stringify() { + if (this.error) throw this.error + if (this.stringified) return this.result + this.stringified = true + + this.sync() + + let opts = this.result.opts + let str = stringify + if (opts.syntax) str = opts.syntax.stringify + if (opts.stringifier) str = opts.stringifier + if (str.stringify) str = str.stringify + + let map = new MapGenerator(str, this.result.root, this.result.opts) + let data = map.generate() + this.result.css = data[0] + this.result.map = data[1] + + return this.result + } + + sync() { + if (this.error) throw this.error + if (this.processed) return this.result + this.processed = true + + if (this.processing) { + throw this.getAsyncError() + } + + for (let plugin of this.plugins) { + let promise = this.runOnRoot(plugin) + if (isPromise(promise)) { + throw this.getAsyncError() + } + } + + this.prepareVisitors() + if (this.hasListener) { + let root = this.result.root + while (!root[isClean]) { + root[isClean] = true + this.walkSync(root) + } + if (this.listeners.OnceExit) { + if (root.type === 'document') { + for (let subRoot of root.nodes) { + this.visitSync(this.listeners.OnceExit, subRoot) + } + } else { + this.visitSync(this.listeners.OnceExit, root) + } + } + } + + return this.result + } + + then(onFulfilled, onRejected) { + if (process.env.NODE_ENV !== 'production') { + if (!('from' in this.opts)) { + warnOnce( + 'Without `from` option PostCSS could generate wrong source map ' + + 'and will not find Browserslist config. Set it to CSS file path ' + + 'or to `undefined` to prevent this warning.' + ) + } + } + return this.async().then(onFulfilled, onRejected) + } + + toString() { + return this.css + } + + visitSync(visitors, node) { + for (let [plugin, visitor] of visitors) { + this.result.lastPlugin = plugin + let promise + try { + promise = visitor(node, this.helpers) + } catch (e) { + throw this.handleError(e, node.proxyOf) + } + if (node.type !== 'root' && node.type !== 'document' && !node.parent) { + return true + } + if (isPromise(promise)) { + throw this.getAsyncError() + } + } + } + + visitTick(stack) { + let visit = stack[stack.length - 1] + let { node, visitors } = visit + + if (node.type !== 'root' && node.type !== 'document' && !node.parent) { + stack.pop() + return + } + + if (visitors.length > 0 && visit.visitorIndex < visitors.length) { + let [plugin, visitor] = visitors[visit.visitorIndex] + visit.visitorIndex += 1 + if (visit.visitorIndex === visitors.length) { + visit.visitors = [] + visit.visitorIndex = 0 + } + this.result.lastPlugin = plugin + try { + return visitor(node.toProxy(), this.helpers) + } catch (e) { + throw this.handleError(e, node) + } + } + + if (visit.iterator !== 0) { + let iterator = visit.iterator + let child + while ((child = node.nodes[node.indexes[iterator]])) { + node.indexes[iterator] += 1 + if (!child[isClean]) { + child[isClean] = true + stack.push(toStack(child)) + return + } + } + visit.iterator = 0 + delete node.indexes[iterator] + } + + let events = visit.events + while (visit.eventIndex < events.length) { + let event = events[visit.eventIndex] + visit.eventIndex += 1 + if (event === CHILDREN) { + if (node.nodes && node.nodes.length) { + node[isClean] = true + visit.iterator = node.getIterator() + } + return + } else if (this.listeners[event]) { + visit.visitors = this.listeners[event] + return + } + } + stack.pop() + } + + walkSync(node) { + node[isClean] = true + let events = getEvents(node) + for (let event of events) { + if (event === CHILDREN) { + if (node.nodes) { + node.each(child => { + if (!child[isClean]) this.walkSync(child) + }) + } + } else { + let visitors = this.listeners[event] + if (visitors) { + if (this.visitSync(visitors, node.toProxy())) return + } + } + } + } + + warnings() { + return this.sync().warnings() + } +} + +LazyResult.registerPostcss = dependant => { + postcss = dependant +} + +module.exports = LazyResult +LazyResult.default = LazyResult + +Root.registerLazyResult(LazyResult) +Document.registerLazyResult(LazyResult) diff --git a/node_modules/postcss/lib/list.d.ts b/node_modules/postcss/lib/list.d.ts new file mode 100644 index 0000000..e262ad3 --- /dev/null +++ b/node_modules/postcss/lib/list.d.ts @@ -0,0 +1,60 @@ +declare namespace list { + type List = { + /** + * Safely splits comma-separated values (such as those for `transition-*` + * and `background` properties). + * + * ```js + * Once (root, { list }) { + * list.comma('black, linear-gradient(white, black)') + * //=> ['black', 'linear-gradient(white, black)'] + * } + * ``` + * + * @param str Comma-separated values. + * @return Split values. + */ + comma(str: string): string[] + + default: List + + /** + * Safely splits space-separated values (such as those for `background`, + * `border-radius`, and other shorthand properties). + * + * ```js + * Once (root, { list }) { + * list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)'] + * } + * ``` + * + * @param str Space-separated values. + * @return Split values. + */ + space(str: string): string[] + + /** + * Safely splits values. + * + * ```js + * Once (root, { list }) { + * list.split('1px calc(10% + 1px)', [' ', '\n', '\t']) //=> ['1px', 'calc(10% + 1px)'] + * } + * ``` + * + * @param string separated values. + * @param separators array of separators. + * @param last boolean indicator. + * @return Split values. + */ + split( + string: string, + separators: readonly string[], + last: boolean + ): string[] + } +} + +declare const list: list.List + +export = list diff --git a/node_modules/postcss/lib/list.js b/node_modules/postcss/lib/list.js new file mode 100644 index 0000000..1b31f98 --- /dev/null +++ b/node_modules/postcss/lib/list.js @@ -0,0 +1,58 @@ +'use strict' + +let list = { + comma(string) { + return list.split(string, [','], true) + }, + + space(string) { + let spaces = [' ', '\n', '\t'] + return list.split(string, spaces) + }, + + split(string, separators, last) { + let array = [] + let current = '' + let split = false + + let func = 0 + let inQuote = false + let prevQuote = '' + let escape = false + + for (let letter of string) { + if (escape) { + escape = false + } else if (letter === '\\') { + escape = true + } else if (inQuote) { + if (letter === prevQuote) { + inQuote = false + } + } else if (letter === '"' || letter === "'") { + inQuote = true + prevQuote = letter + } else if (letter === '(') { + func += 1 + } else if (letter === ')') { + if (func > 0) func -= 1 + } else if (func === 0) { + if (separators.includes(letter)) split = true + } + + if (split) { + if (current !== '') array.push(current.trim()) + current = '' + split = false + } else { + current += letter + } + } + + if (last || current !== '') array.push(current.trim()) + return array + } +} + +module.exports = list +list.default = list diff --git a/node_modules/postcss/lib/map-generator.js b/node_modules/postcss/lib/map-generator.js new file mode 100644 index 0000000..89069d3 --- /dev/null +++ b/node_modules/postcss/lib/map-generator.js @@ -0,0 +1,368 @@ +'use strict' + +let { dirname, relative, resolve, sep } = require('path') +let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js') +let { pathToFileURL } = require('url') + +let Input = require('./input') + +let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator) +let pathAvailable = Boolean(dirname && resolve && relative && sep) + +class MapGenerator { + constructor(stringify, root, opts, cssString) { + this.stringify = stringify + this.mapOpts = opts.map || {} + this.root = root + this.opts = opts + this.css = cssString + this.originalCSS = cssString + this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute + + this.memoizedFileURLs = new Map() + this.memoizedPaths = new Map() + this.memoizedURLs = new Map() + } + + addAnnotation() { + let content + + if (this.isInline()) { + content = + 'data:application/json;base64,' + this.toBase64(this.map.toString()) + } else if (typeof this.mapOpts.annotation === 'string') { + content = this.mapOpts.annotation + } else if (typeof this.mapOpts.annotation === 'function') { + content = this.mapOpts.annotation(this.opts.to, this.root) + } else { + content = this.outputFile() + '.map' + } + let eol = '\n' + if (this.css.includes('\r\n')) eol = '\r\n' + + this.css += eol + '/*# sourceMappingURL=' + content + ' */' + } + + applyPrevMaps() { + for (let prev of this.previous()) { + let from = this.toUrl(this.path(prev.file)) + let root = prev.root || dirname(prev.file) + let map + + if (this.mapOpts.sourcesContent === false) { + map = new SourceMapConsumer(prev.text) + if (map.sourcesContent) { + map.sourcesContent = null + } + } else { + map = prev.consumer() + } + + this.map.applySourceMap(map, from, this.toUrl(this.path(root))) + } + } + + clearAnnotation() { + if (this.mapOpts.annotation === false) return + + if (this.root) { + let node + for (let i = this.root.nodes.length - 1; i >= 0; i--) { + node = this.root.nodes[i] + if (node.type !== 'comment') continue + if (node.text.startsWith('# sourceMappingURL=')) { + this.root.removeChild(i) + } + } + } else if (this.css) { + this.css = this.css.replace(/\n*\/\*#[\S\s]*?\*\/$/gm, '') + } + } + + generate() { + this.clearAnnotation() + if (pathAvailable && sourceMapAvailable && this.isMap()) { + return this.generateMap() + } else { + let result = '' + this.stringify(this.root, i => { + result += i + }) + return [result] + } + } + + generateMap() { + if (this.root) { + this.generateString() + } else if (this.previous().length === 1) { + let prev = this.previous()[0].consumer() + prev.file = this.outputFile() + this.map = SourceMapGenerator.fromSourceMap(prev, { + ignoreInvalidMapping: true + }) + } else { + this.map = new SourceMapGenerator({ + file: this.outputFile(), + ignoreInvalidMapping: true + }) + this.map.addMapping({ + generated: { column: 0, line: 1 }, + original: { column: 0, line: 1 }, + source: this.opts.from + ? this.toUrl(this.path(this.opts.from)) + : '' + }) + } + + if (this.isSourcesContent()) this.setSourcesContent() + if (this.root && this.previous().length > 0) this.applyPrevMaps() + if (this.isAnnotation()) this.addAnnotation() + + if (this.isInline()) { + return [this.css] + } else { + return [this.css, this.map] + } + } + + generateString() { + this.css = '' + this.map = new SourceMapGenerator({ + file: this.outputFile(), + ignoreInvalidMapping: true + }) + + let line = 1 + let column = 1 + + let noSource = '' + let mapping = { + generated: { column: 0, line: 0 }, + original: { column: 0, line: 0 }, + source: '' + } + + let last, lines + this.stringify(this.root, (str, node, type) => { + this.css += str + + if (node && type !== 'end') { + mapping.generated.line = line + mapping.generated.column = column - 1 + if (node.source && node.source.start) { + mapping.source = this.sourcePath(node) + mapping.original.line = node.source.start.line + mapping.original.column = node.source.start.column - 1 + this.map.addMapping(mapping) + } else { + mapping.source = noSource + mapping.original.line = 1 + mapping.original.column = 0 + this.map.addMapping(mapping) + } + } + + lines = str.match(/\n/g) + if (lines) { + line += lines.length + last = str.lastIndexOf('\n') + column = str.length - last + } else { + column += str.length + } + + if (node && type !== 'start') { + let p = node.parent || { raws: {} } + let childless = + node.type === 'decl' || (node.type === 'atrule' && !node.nodes) + if (!childless || node !== p.last || p.raws.semicolon) { + if (node.source && node.source.end) { + mapping.source = this.sourcePath(node) + mapping.original.line = node.source.end.line + mapping.original.column = node.source.end.column - 1 + mapping.generated.line = line + mapping.generated.column = column - 2 + this.map.addMapping(mapping) + } else { + mapping.source = noSource + mapping.original.line = 1 + mapping.original.column = 0 + mapping.generated.line = line + mapping.generated.column = column - 1 + this.map.addMapping(mapping) + } + } + } + }) + } + + isAnnotation() { + if (this.isInline()) { + return true + } + if (typeof this.mapOpts.annotation !== 'undefined') { + return this.mapOpts.annotation + } + if (this.previous().length) { + return this.previous().some(i => i.annotation) + } + return true + } + + isInline() { + if (typeof this.mapOpts.inline !== 'undefined') { + return this.mapOpts.inline + } + + let annotation = this.mapOpts.annotation + if (typeof annotation !== 'undefined' && annotation !== true) { + return false + } + + if (this.previous().length) { + return this.previous().some(i => i.inline) + } + return true + } + + isMap() { + if (typeof this.opts.map !== 'undefined') { + return !!this.opts.map + } + return this.previous().length > 0 + } + + isSourcesContent() { + if (typeof this.mapOpts.sourcesContent !== 'undefined') { + return this.mapOpts.sourcesContent + } + if (this.previous().length) { + return this.previous().some(i => i.withContent()) + } + return true + } + + outputFile() { + if (this.opts.to) { + return this.path(this.opts.to) + } else if (this.opts.from) { + return this.path(this.opts.from) + } else { + return 'to.css' + } + } + + path(file) { + if (this.mapOpts.absolute) return file + if (file.charCodeAt(0) === 60 /* `<` */) return file + if (/^\w+:\/\//.test(file)) return file + let cached = this.memoizedPaths.get(file) + if (cached) return cached + + let from = this.opts.to ? dirname(this.opts.to) : '.' + + if (typeof this.mapOpts.annotation === 'string') { + from = dirname(resolve(from, this.mapOpts.annotation)) + } + + let path = relative(from, file) + this.memoizedPaths.set(file, path) + + return path + } + + previous() { + if (!this.previousMaps) { + this.previousMaps = [] + if (this.root) { + this.root.walk(node => { + if (node.source && node.source.input.map) { + let map = node.source.input.map + if (!this.previousMaps.includes(map)) { + this.previousMaps.push(map) + } + } + }) + } else { + let input = new Input(this.originalCSS, this.opts) + if (input.map) this.previousMaps.push(input.map) + } + } + + return this.previousMaps + } + + setSourcesContent() { + let already = {} + if (this.root) { + this.root.walk(node => { + if (node.source) { + let from = node.source.input.from + if (from && !already[from]) { + already[from] = true + let fromUrl = this.usesFileUrls + ? this.toFileUrl(from) + : this.toUrl(this.path(from)) + this.map.setSourceContent(fromUrl, node.source.input.css) + } + } + }) + } else if (this.css) { + let from = this.opts.from + ? this.toUrl(this.path(this.opts.from)) + : '' + this.map.setSourceContent(from, this.css) + } + } + + sourcePath(node) { + if (this.mapOpts.from) { + return this.toUrl(this.mapOpts.from) + } else if (this.usesFileUrls) { + return this.toFileUrl(node.source.input.from) + } else { + return this.toUrl(this.path(node.source.input.from)) + } + } + + toBase64(str) { + if (Buffer) { + return Buffer.from(str).toString('base64') + } else { + return window.btoa(unescape(encodeURIComponent(str))) + } + } + + toFileUrl(path) { + let cached = this.memoizedFileURLs.get(path) + if (cached) return cached + + if (pathToFileURL) { + let fileURL = pathToFileURL(path).toString() + this.memoizedFileURLs.set(path, fileURL) + + return fileURL + } else { + throw new Error( + '`map.absolute` option is not available in this PostCSS build' + ) + } + } + + toUrl(path) { + let cached = this.memoizedURLs.get(path) + if (cached) return cached + + if (sep === '\\') { + path = path.replace(/\\/g, '/') + } + + let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent) + this.memoizedURLs.set(path, url) + + return url + } +} + +module.exports = MapGenerator diff --git a/node_modules/postcss/lib/no-work-result.d.ts b/node_modules/postcss/lib/no-work-result.d.ts new file mode 100644 index 0000000..094f30a --- /dev/null +++ b/node_modules/postcss/lib/no-work-result.d.ts @@ -0,0 +1,46 @@ +import LazyResult from './lazy-result.js' +import { SourceMap } from './postcss.js' +import Processor from './processor.js' +import Result, { Message, ResultOptions } from './result.js' +import Root from './root.js' +import Warning from './warning.js' + +declare namespace NoWorkResult { + // eslint-disable-next-line @typescript-eslint/no-use-before-define + export { NoWorkResult_ as default } +} + +/** + * A Promise proxy for the result of PostCSS transformations. + * This lazy result instance doesn't parse css unless `NoWorkResult#root` or `Result#root` + * are accessed. See the example below for details. + * A `NoWork` instance is returned by `Processor#process` ONLY when no plugins defined. + * + * ```js + * const noWorkResult = postcss().process(css) // No plugins are defined. + * // CSS is not parsed + * let root = noWorkResult.root // now css is parsed because we accessed the root + * ``` + */ +declare class NoWorkResult_ implements LazyResult { + catch: Promise>['catch'] + finally: Promise>['finally'] + then: Promise>['then'] + get content(): string + get css(): string + get map(): SourceMap + get messages(): Message[] + get opts(): ResultOptions + get processor(): Processor + get root(): Root + get [Symbol.toStringTag](): string + constructor(processor: Processor, css: string, opts: ResultOptions) + async(): Promise> + sync(): Result + toString(): string + warnings(): Warning[] +} + +declare class NoWorkResult extends NoWorkResult_ {} + +export = NoWorkResult diff --git a/node_modules/postcss/lib/no-work-result.js b/node_modules/postcss/lib/no-work-result.js new file mode 100644 index 0000000..dd46182 --- /dev/null +++ b/node_modules/postcss/lib/no-work-result.js @@ -0,0 +1,138 @@ +'use strict' + +let MapGenerator = require('./map-generator') +let parse = require('./parse') +const Result = require('./result') +let stringify = require('./stringify') +let warnOnce = require('./warn-once') + +class NoWorkResult { + get content() { + return this.result.css + } + + get css() { + return this.result.css + } + + get map() { + return this.result.map + } + + get messages() { + return [] + } + + get opts() { + return this.result.opts + } + + get processor() { + return this.result.processor + } + + get root() { + if (this._root) { + return this._root + } + + let root + let parser = parse + + try { + root = parser(this._css, this._opts) + } catch (error) { + this.error = error + } + + if (this.error) { + throw this.error + } else { + this._root = root + return root + } + } + + get [Symbol.toStringTag]() { + return 'NoWorkResult' + } + + constructor(processor, css, opts) { + css = css.toString() + this.stringified = false + + this._processor = processor + this._css = css + this._opts = opts + this._map = undefined + let root + + let str = stringify + this.result = new Result(this._processor, root, this._opts) + this.result.css = css + + let self = this + Object.defineProperty(this.result, 'root', { + get() { + return self.root + } + }) + + let map = new MapGenerator(str, root, this._opts, css) + if (map.isMap()) { + let [generatedCSS, generatedMap] = map.generate() + if (generatedCSS) { + this.result.css = generatedCSS + } + if (generatedMap) { + this.result.map = generatedMap + } + } else { + map.clearAnnotation() + this.result.css = map.css + } + } + + async() { + if (this.error) return Promise.reject(this.error) + return Promise.resolve(this.result) + } + + catch(onRejected) { + return this.async().catch(onRejected) + } + + finally(onFinally) { + return this.async().then(onFinally, onFinally) + } + + sync() { + if (this.error) throw this.error + return this.result + } + + then(onFulfilled, onRejected) { + if (process.env.NODE_ENV !== 'production') { + if (!('from' in this._opts)) { + warnOnce( + 'Without `from` option PostCSS could generate wrong source map ' + + 'and will not find Browserslist config. Set it to CSS file path ' + + 'or to `undefined` to prevent this warning.' + ) + } + } + + return this.async().then(onFulfilled, onRejected) + } + + toString() { + return this._css + } + + warnings() { + return [] + } +} + +module.exports = NoWorkResult +NoWorkResult.default = NoWorkResult diff --git a/node_modules/postcss/lib/node.d.ts b/node_modules/postcss/lib/node.d.ts new file mode 100644 index 0000000..a09fe4d --- /dev/null +++ b/node_modules/postcss/lib/node.d.ts @@ -0,0 +1,556 @@ +import AtRule = require('./at-rule.js') +import { AtRuleProps } from './at-rule.js' +import Comment, { CommentProps } from './comment.js' +import Container, { NewChild } from './container.js' +import CssSyntaxError from './css-syntax-error.js' +import Declaration, { DeclarationProps } from './declaration.js' +import Document from './document.js' +import Input from './input.js' +import { Stringifier, Syntax } from './postcss.js' +import Result from './result.js' +import Root from './root.js' +import Rule, { RuleProps } from './rule.js' +import Warning, { WarningOptions } from './warning.js' + +declare namespace Node { + export type ChildNode = AtRule.default | Comment | Declaration | Rule + + export type AnyNode = + | AtRule.default + | Comment + | Declaration + | Document + | Root + | Rule + + export type ChildProps = + | AtRuleProps + | CommentProps + | DeclarationProps + | RuleProps + + export interface Position { + /** + * Source line in file. In contrast to `offset` it starts from 1. + */ + column: number + + /** + * Source column in file. + */ + line: number + + /** + * Source offset in file. It starts from 0. + */ + offset: number + } + + export interface Range { + /** + * End position, exclusive. + */ + end: Position + + /** + * Start position, inclusive. + */ + start: Position + } + + /** + * Source represents an interface for the {@link Node.source} property. + */ + export interface Source { + /** + * The inclusive ending position for the source + * code of a node. + * + * However, `end.offset` of a non `Root` node is the exclusive position. + * See https://github.com/postcss/postcss/pull/1879 for details. + * + * ```js + * const root = postcss.parse('a { color: black }') + * const a = root.first + * const color = a.first + * + * // The offset of `Root` node is the inclusive position + * css.source.end // { line: 1, column: 19, offset: 18 } + * + * // The offset of non `Root` node is the exclusive position + * a.source.end // { line: 1, column: 18, offset: 18 } + * color.source.end // { line: 1, column: 16, offset: 16 } + * ``` + */ + end?: Position + + /** + * The source file from where a node has originated. + */ + input: Input + + /** + * The inclusive starting position for the source + * code of a node. + */ + start?: Position + } + + /** + * Interface represents an interface for an object received + * as parameter by Node class constructor. + */ + export interface NodeProps { + source?: Source + } + + export interface NodeErrorOptions { + /** + * An ending index inside a node's string that should be highlighted as + * source of error. + */ + endIndex?: number + /** + * An index inside a node's string that should be highlighted as source + * of error. + */ + index?: number + /** + * Plugin name that created this error. PostCSS will set it automatically. + */ + plugin?: string + /** + * A word inside a node's string, that should be highlighted as source + * of error. + */ + word?: string + } + + // eslint-disable-next-line @typescript-eslint/no-shadow + class Node extends Node_ {} + export { Node as default } +} + +/** + * It represents an abstract class that handles common + * methods for other CSS abstract syntax tree nodes. + * + * Any node that represents CSS selector or value should + * not extend the `Node` class. + */ +declare abstract class Node_ { + /** + * It represents parent of the current node. + * + * ```js + * root.nodes[0].parent === root //=> true + * ``` + */ + parent: Container | Document | undefined + + /** + * It represents unnecessary whitespace and characters present + * in the css source code. + * + * Information to generate byte-to-byte equal node string as it was + * in the origin input. + * + * The properties of the raws object are decided by parser, + * the default parser uses the following properties: + * + * * `before`: the space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + * * `after`: the space symbols after the last child of the node + * to the end of the node. + * * `between`: the symbols between the property and value + * for declarations, selector and `{` for rules, or last parameter + * and `{` for at-rules. + * * `semicolon`: contains true if the last child has + * an (optional) semicolon. + * * `afterName`: the space between the at-rule name and its parameters. + * * `left`: the space symbols between `/*` and the comment’s text. + * * `right`: the space symbols between the comment’s text + * and */. + * - `important`: the content of the important statement, + * if it is not just `!important`. + * + * PostCSS filters out the comments inside selectors, declaration values + * and at-rule parameters but it stores the origin content in raws. + * + * ```js + * const root = postcss.parse('a {\n color:black\n}') + * root.first.first.raws //=> { before: '\n ', between: ':' } + * ``` + */ + raws: any + + /** + * It represents information related to origin of a node and is required + * for generating source maps. + * + * The nodes that are created manually using the public APIs + * provided by PostCSS will have `source` undefined and + * will be absent in the source map. + * + * For this reason, the plugin developer should consider + * duplicating nodes as the duplicate node will have the + * same source as the original node by default or assign + * source to a node created manually. + * + * ```js + * decl.source.input.from //=> '/home/ai/source.css' + * decl.source.start //=> { line: 10, column: 2 } + * decl.source.end //=> { line: 10, column: 12 } + * ``` + * + * ```js + * // Incorrect method, source not specified! + * const prefixed = postcss.decl({ + * prop: '-moz-' + decl.prop, + * value: decl.value + * }) + * + * // Correct method, source is inherited when duplicating. + * const prefixed = decl.clone({ + * prop: '-moz-' + decl.prop + * }) + * ``` + * + * ```js + * if (atrule.name === 'add-link') { + * const rule = postcss.rule({ + * selector: 'a', + * source: atrule.source + * }) + * + * atrule.parent.insertBefore(atrule, rule) + * } + * ``` + */ + source?: Node.Source + + /** + * It represents type of a node in + * an abstract syntax tree. + * + * A type of node helps in identification of a node + * and perform operation based on it's type. + * + * ```js + * const declaration = new Declaration({ + * prop: 'color', + * value: 'black' + * }) + * + * declaration.type //=> 'decl' + * ``` + */ + type: string + + constructor(defaults?: object) + + /** + * Insert new node after current node to current node’s parent. + * + * Just alias for `node.parent.insertAfter(node, add)`. + * + * ```js + * decl.after('color: black') + * ``` + * + * @param newNode New node. + * @return This node for methods chain. + */ + after( + newNode: Node | Node.ChildProps | readonly Node[] | string | undefined + ): this + + /** + * It assigns properties to an existing node instance. + * + * ```js + * decl.assign({ prop: 'word-wrap', value: 'break-word' }) + * ``` + * + * @param overrides New properties to override the node. + * + * @return `this` for method chaining. + */ + assign(overrides: object): this + + /** + * Insert new node before current node to current node’s parent. + * + * Just alias for `node.parent.insertBefore(node, add)`. + * + * ```js + * decl.before('content: ""') + * ``` + * + * @param newNode New node. + * @return This node for methods chain. + */ + before( + newNode: Node | Node.ChildProps | readonly Node[] | string | undefined + ): this + + /** + * Clear the code style properties for the node and its children. + * + * ```js + * node.raws.before //=> ' ' + * node.cleanRaws() + * node.raws.before //=> undefined + * ``` + * + * @param keepBetween Keep the `raws.between` symbols. + */ + cleanRaws(keepBetween?: boolean): void + + /** + * It creates clone of an existing node, which includes all the properties + * and their values, that includes `raws` but not `type`. + * + * ```js + * decl.raws.before //=> "\n " + * const cloned = decl.clone({ prop: '-moz-' + decl.prop }) + * cloned.raws.before //=> "\n " + * cloned.toString() //=> -moz-transform: scale(0) + * ``` + * + * @param overrides New properties to override in the clone. + * + * @return Duplicate of the node instance. + */ + clone(overrides?: object): this + + /** + * Shortcut to clone the node and insert the resulting cloned node + * after the current node. + * + * @param overrides New properties to override in the clone. + * @return New node. + */ + cloneAfter(overrides?: object): this + + /** + * Shortcut to clone the node and insert the resulting cloned node + * before the current node. + * + * ```js + * decl.cloneBefore({ prop: '-moz-' + decl.prop }) + * ``` + * + * @param overrides Mew properties to override in the clone. + * + * @return New node + */ + cloneBefore(overrides?: object): this + + /** + * It creates an instance of the class `CssSyntaxError` and parameters passed + * to this method are assigned to the error instance. + * + * The error instance will have description for the + * error, original position of the node in the + * source, showing line and column number. + * + * If any previous map is present, it would be used + * to get original position of the source. + * + * The Previous Map here is referred to the source map + * generated by previous compilation, example: Less, + * Stylus and Sass. + * + * This method returns the error instance instead of + * throwing it. + * + * ```js + * if (!variables[name]) { + * throw decl.error(`Unknown variable ${name}`, { word: name }) + * // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black + * // color: $black + * // a + * // ^ + * // background: white + * } + * ``` + * + * @param message Description for the error instance. + * @param options Options for the error instance. + * + * @return Error instance is returned. + */ + error(message: string, options?: Node.NodeErrorOptions): CssSyntaxError + + /** + * Returns the next child of the node’s parent. + * Returns `undefined` if the current node is the last child. + * + * ```js + * if (comment.text === 'delete next') { + * const next = comment.next() + * if (next) { + * next.remove() + * } + * } + * ``` + * + * @return Next node. + */ + next(): Node.ChildNode | undefined + + /** + * Get the position for a word or an index inside the node. + * + * @param opts Options. + * @return Position. + */ + positionBy(opts?: Pick): Node.Position + + /** + * Convert string index to line/column. + * + * @param index The symbol number in the node’s string. + * @return Symbol position in file. + */ + positionInside(index: number): Node.Position + + /** + * Returns the previous child of the node’s parent. + * Returns `undefined` if the current node is the first child. + * + * ```js + * const annotation = decl.prev() + * if (annotation.type === 'comment') { + * readAnnotation(annotation.text) + * } + * ``` + * + * @return Previous node. + */ + prev(): Node.ChildNode | undefined + + /** + * Get the range for a word or start and end index inside the node. + * The start index is inclusive; the end index is exclusive. + * + * @param opts Options. + * @return Range. + */ + rangeBy( + opts?: Pick + ): Node.Range + + /** + * Returns a `raws` value. If the node is missing + * the code style property (because the node was manually built or cloned), + * PostCSS will try to autodetect the code style property by looking + * at other nodes in the tree. + * + * ```js + * const root = postcss.parse('a { background: white }') + * root.nodes[0].append({ prop: 'color', value: 'black' }) + * root.nodes[0].nodes[1].raws.before //=> undefined + * root.nodes[0].nodes[1].raw('before') //=> ' ' + * ``` + * + * @param prop Name of code style property. + * @param defaultType Name of default value, it can be missed + * if the value is the same as prop. + * @return {string} Code style value. + */ + raw(prop: string, defaultType?: string): string + + /** + * It removes the node from its parent and deletes its parent property. + * + * ```js + * if (decl.prop.match(/^-webkit-/)) { + * decl.remove() + * } + * ``` + * + * @return `this` for method chaining. + */ + remove(): this + + /** + * Inserts node(s) before the current node and removes the current node. + * + * ```js + * AtRule: { + * mixin: atrule => { + * atrule.replaceWith(mixinRules[atrule.params]) + * } + * } + * ``` + * + * @param nodes Mode(s) to replace current one. + * @return Current node to methods chain. + */ + replaceWith(...nodes: NewChild[]): this + + /** + * Finds the Root instance of the node’s tree. + * + * ```js + * root.nodes[0].nodes[0].root() === root + * ``` + * + * @return Root parent. + */ + root(): Root + + /** + * Fix circular links on `JSON.stringify()`. + * + * @return Cleaned object. + */ + toJSON(): object + + /** + * It compiles the node to browser readable cascading style sheets string + * depending on it's type. + * + * ```js + * new Rule({ selector: 'a' }).toString() //=> "a {}" + * ``` + * + * @param stringifier A syntax to use in string generation. + * @return CSS string of this node. + */ + toString(stringifier?: Stringifier | Syntax): string + + /** + * It is a wrapper for {@link Result#warn}, providing convenient + * way of generating warnings. + * + * ```js + * Declaration: { + * bad: (decl, { result }) => { + * decl.warn(result, 'Deprecated property: bad') + * } + * } + * ``` + * + * @param result The `Result` instance that will receive the warning. + * @param message Description for the warning. + * @param options Options for the warning. + * + * @return `Warning` instance is returned + */ + warn(result: Result, message: string, options?: WarningOptions): Warning + + /** + * If this node isn't already dirty, marks it and its ancestors as such. This + * indicates to the LazyResult processor that the {@link Root} has been + * modified by the current plugin and may need to be processed again by other + * plugins. + */ + protected markDirty(): void +} + +declare class Node extends Node_ {} + +export = Node diff --git a/node_modules/postcss/lib/node.js b/node_modules/postcss/lib/node.js new file mode 100644 index 0000000..b403b71 --- /dev/null +++ b/node_modules/postcss/lib/node.js @@ -0,0 +1,449 @@ +'use strict' + +let CssSyntaxError = require('./css-syntax-error') +let Stringifier = require('./stringifier') +let stringify = require('./stringify') +let { isClean, my } = require('./symbols') + +function cloneNode(obj, parent) { + let cloned = new obj.constructor() + + for (let i in obj) { + if (!Object.prototype.hasOwnProperty.call(obj, i)) { + /* c8 ignore next 2 */ + continue + } + if (i === 'proxyCache') continue + let value = obj[i] + let type = typeof value + + if (i === 'parent' && type === 'object') { + if (parent) cloned[i] = parent + } else if (i === 'source') { + cloned[i] = value + } else if (Array.isArray(value)) { + cloned[i] = value.map(j => cloneNode(j, cloned)) + } else { + if (type === 'object' && value !== null) value = cloneNode(value) + cloned[i] = value + } + } + + return cloned +} + +function sourceOffset(inputCSS, position) { + // Not all custom syntaxes support `offset` in `source.start` and `source.end` + if (position && typeof position.offset !== 'undefined') { + return position.offset + } + + let column = 1 + let line = 1 + let offset = 0 + + for (let i = 0; i < inputCSS.length; i++) { + if (line === position.line && column === position.column) { + offset = i + break + } + + if (inputCSS[i] === '\n') { + column = 1 + line += 1 + } else { + column += 1 + } + } + + return offset +} + +class Node { + get proxyOf() { + return this + } + + constructor(defaults = {}) { + this.raws = {} + this[isClean] = false + this[my] = true + + for (let name in defaults) { + if (name === 'nodes') { + this.nodes = [] + for (let node of defaults[name]) { + if (typeof node.clone === 'function') { + this.append(node.clone()) + } else { + this.append(node) + } + } + } else { + this[name] = defaults[name] + } + } + } + + addToError(error) { + error.postcssNode = this + if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) { + let s = this.source + error.stack = error.stack.replace( + /\n\s{4}at /, + `$&${s.input.from}:${s.start.line}:${s.start.column}$&` + ) + } + return error + } + + after(add) { + this.parent.insertAfter(this, add) + return this + } + + assign(overrides = {}) { + for (let name in overrides) { + this[name] = overrides[name] + } + return this + } + + before(add) { + this.parent.insertBefore(this, add) + return this + } + + cleanRaws(keepBetween) { + delete this.raws.before + delete this.raws.after + if (!keepBetween) delete this.raws.between + } + + clone(overrides = {}) { + let cloned = cloneNode(this) + for (let name in overrides) { + cloned[name] = overrides[name] + } + return cloned + } + + cloneAfter(overrides = {}) { + let cloned = this.clone(overrides) + this.parent.insertAfter(this, cloned) + return cloned + } + + cloneBefore(overrides = {}) { + let cloned = this.clone(overrides) + this.parent.insertBefore(this, cloned) + return cloned + } + + error(message, opts = {}) { + if (this.source) { + let { end, start } = this.rangeBy(opts) + return this.source.input.error( + message, + { column: start.column, line: start.line }, + { column: end.column, line: end.line }, + opts + ) + } + return new CssSyntaxError(message) + } + + getProxyProcessor() { + return { + get(node, prop) { + if (prop === 'proxyOf') { + return node + } else if (prop === 'root') { + return () => node.root().toProxy() + } else { + return node[prop] + } + }, + + set(node, prop, value) { + if (node[prop] === value) return true + node[prop] = value + if ( + prop === 'prop' || + prop === 'value' || + prop === 'name' || + prop === 'params' || + prop === 'important' || + /* c8 ignore next */ + prop === 'text' + ) { + node.markDirty() + } + return true + } + } + } + + /* c8 ignore next 3 */ + markClean() { + this[isClean] = true + } + + markDirty() { + if (this[isClean]) { + this[isClean] = false + let next = this + while ((next = next.parent)) { + next[isClean] = false + } + } + } + + next() { + if (!this.parent) return undefined + let index = this.parent.index(this) + return this.parent.nodes[index + 1] + } + + positionBy(opts = {}) { + let pos = this.source.start + if (opts.index) { + pos = this.positionInside(opts.index) + } else if (opts.word) { + let inputString = + 'document' in this.source.input + ? this.source.input.document + : this.source.input.css + let stringRepresentation = inputString.slice( + sourceOffset(inputString, this.source.start), + sourceOffset(inputString, this.source.end) + ) + let index = stringRepresentation.indexOf(opts.word) + if (index !== -1) pos = this.positionInside(index) + } + return pos + } + + positionInside(index) { + let column = this.source.start.column + let line = this.source.start.line + let inputString = + 'document' in this.source.input + ? this.source.input.document + : this.source.input.css + let offset = sourceOffset(inputString, this.source.start) + let end = offset + index + + for (let i = offset; i < end; i++) { + if (inputString[i] === '\n') { + column = 1 + line += 1 + } else { + column += 1 + } + } + + return { column, line, offset: end } + } + + prev() { + if (!this.parent) return undefined + let index = this.parent.index(this) + return this.parent.nodes[index - 1] + } + + rangeBy(opts = {}) { + let inputString = + 'document' in this.source.input + ? this.source.input.document + : this.source.input.css + let start = { + column: this.source.start.column, + line: this.source.start.line, + offset: sourceOffset(inputString, this.source.start) + } + let end = this.source.end + ? { + column: this.source.end.column + 1, + line: this.source.end.line, + offset: + typeof this.source.end.offset === 'number' + ? // `source.end.offset` is exclusive, so we don't need to add 1 + this.source.end.offset + : // Since line/column in this.source.end is inclusive, + // the `sourceOffset(... , this.source.end)` returns an inclusive offset. + // So, we add 1 to convert it to exclusive. + sourceOffset(inputString, this.source.end) + 1 + } + : { + column: start.column + 1, + line: start.line, + offset: start.offset + 1 + } + + if (opts.word) { + let stringRepresentation = inputString.slice( + sourceOffset(inputString, this.source.start), + sourceOffset(inputString, this.source.end) + ) + let index = stringRepresentation.indexOf(opts.word) + if (index !== -1) { + start = this.positionInside(index) + end = this.positionInside(index + opts.word.length) + } + } else { + if (opts.start) { + start = { + column: opts.start.column, + line: opts.start.line, + offset: sourceOffset(inputString, opts.start) + } + } else if (opts.index) { + start = this.positionInside(opts.index) + } + + if (opts.end) { + end = { + column: opts.end.column, + line: opts.end.line, + offset: sourceOffset(inputString, opts.end) + } + } else if (typeof opts.endIndex === 'number') { + end = this.positionInside(opts.endIndex) + } else if (opts.index) { + end = this.positionInside(opts.index + 1) + } + } + + if ( + end.line < start.line || + (end.line === start.line && end.column <= start.column) + ) { + end = { + column: start.column + 1, + line: start.line, + offset: start.offset + 1 + } + } + + return { end, start } + } + + raw(prop, defaultType) { + let str = new Stringifier() + return str.raw(this, prop, defaultType) + } + + remove() { + if (this.parent) { + this.parent.removeChild(this) + } + this.parent = undefined + return this + } + + replaceWith(...nodes) { + if (this.parent) { + let bookmark = this + let foundSelf = false + for (let node of nodes) { + if (node === this) { + foundSelf = true + } else if (foundSelf) { + this.parent.insertAfter(bookmark, node) + bookmark = node + } else { + this.parent.insertBefore(bookmark, node) + } + } + + if (!foundSelf) { + this.remove() + } + } + + return this + } + + root() { + let result = this + while (result.parent && result.parent.type !== 'document') { + result = result.parent + } + return result + } + + toJSON(_, inputs) { + let fixed = {} + let emitInputs = inputs == null + inputs = inputs || new Map() + let inputsNextIndex = 0 + + for (let name in this) { + if (!Object.prototype.hasOwnProperty.call(this, name)) { + /* c8 ignore next 2 */ + continue + } + if (name === 'parent' || name === 'proxyCache') continue + let value = this[name] + + if (Array.isArray(value)) { + fixed[name] = value.map(i => { + if (typeof i === 'object' && i.toJSON) { + return i.toJSON(null, inputs) + } else { + return i + } + }) + } else if (typeof value === 'object' && value.toJSON) { + fixed[name] = value.toJSON(null, inputs) + } else if (name === 'source') { + if (value == null) continue + let inputId = inputs.get(value.input) + if (inputId == null) { + inputId = inputsNextIndex + inputs.set(value.input, inputsNextIndex) + inputsNextIndex++ + } + fixed[name] = { + end: value.end, + inputId, + start: value.start + } + } else { + fixed[name] = value + } + } + + if (emitInputs) { + fixed.inputs = [...inputs.keys()].map(input => input.toJSON()) + } + + return fixed + } + + toProxy() { + if (!this.proxyCache) { + this.proxyCache = new Proxy(this, this.getProxyProcessor()) + } + return this.proxyCache + } + + toString(stringifier = stringify) { + if (stringifier.stringify) stringifier = stringifier.stringify + let result = '' + stringifier(this, i => { + result += i + }) + return result + } + + warn(result, text, opts = {}) { + let data = { node: this } + for (let i in opts) data[i] = opts[i] + return result.warn(text, data) + } +} + +module.exports = Node +Node.default = Node diff --git a/node_modules/postcss/lib/parse.d.ts b/node_modules/postcss/lib/parse.d.ts new file mode 100644 index 0000000..4c943a4 --- /dev/null +++ b/node_modules/postcss/lib/parse.d.ts @@ -0,0 +1,9 @@ +import { Parser } from './postcss.js' + +interface Parse extends Parser { + default: Parse +} + +declare const parse: Parse + +export = parse diff --git a/node_modules/postcss/lib/parse.js b/node_modules/postcss/lib/parse.js new file mode 100644 index 0000000..00a1037 --- /dev/null +++ b/node_modules/postcss/lib/parse.js @@ -0,0 +1,42 @@ +'use strict' + +let Container = require('./container') +let Input = require('./input') +let Parser = require('./parser') + +function parse(css, opts) { + let input = new Input(css, opts) + let parser = new Parser(input) + try { + parser.parse() + } catch (e) { + if (process.env.NODE_ENV !== 'production') { + if (e.name === 'CssSyntaxError' && opts && opts.from) { + if (/\.scss$/i.test(opts.from)) { + e.message += + '\nYou tried to parse SCSS with ' + + 'the standard CSS parser; ' + + 'try again with the postcss-scss parser' + } else if (/\.sass/i.test(opts.from)) { + e.message += + '\nYou tried to parse Sass with ' + + 'the standard CSS parser; ' + + 'try again with the postcss-sass parser' + } else if (/\.less$/i.test(opts.from)) { + e.message += + '\nYou tried to parse Less with ' + + 'the standard CSS parser; ' + + 'try again with the postcss-less parser' + } + } + } + throw e + } + + return parser.root +} + +module.exports = parse +parse.default = parse + +Container.registerParse(parse) diff --git a/node_modules/postcss/lib/parser.js b/node_modules/postcss/lib/parser.js new file mode 100644 index 0000000..64fb5d8 --- /dev/null +++ b/node_modules/postcss/lib/parser.js @@ -0,0 +1,611 @@ +'use strict' + +let AtRule = require('./at-rule') +let Comment = require('./comment') +let Declaration = require('./declaration') +let Root = require('./root') +let Rule = require('./rule') +let tokenizer = require('./tokenize') + +const SAFE_COMMENT_NEIGHBOR = { + empty: true, + space: true +} + +function findLastWithPosition(tokens) { + for (let i = tokens.length - 1; i >= 0; i--) { + let token = tokens[i] + let pos = token[3] || token[2] + if (pos) return pos + } +} + +class Parser { + constructor(input) { + this.input = input + + this.root = new Root() + this.current = this.root + this.spaces = '' + this.semicolon = false + + this.createTokenizer() + this.root.source = { input, start: { column: 1, line: 1, offset: 0 } } + } + + atrule(token) { + let node = new AtRule() + node.name = token[1].slice(1) + if (node.name === '') { + this.unnamedAtrule(node, token) + } + this.init(node, token[2]) + + let type + let prev + let shift + let last = false + let open = false + let params = [] + let brackets = [] + + while (!this.tokenizer.endOfFile()) { + token = this.tokenizer.nextToken() + type = token[0] + + if (type === '(' || type === '[') { + brackets.push(type === '(' ? ')' : ']') + } else if (type === '{' && brackets.length > 0) { + brackets.push('}') + } else if (type === brackets[brackets.length - 1]) { + brackets.pop() + } + + if (brackets.length === 0) { + if (type === ';') { + node.source.end = this.getPosition(token[2]) + node.source.end.offset++ + this.semicolon = true + break + } else if (type === '{') { + open = true + break + } else if (type === '}') { + if (params.length > 0) { + shift = params.length - 1 + prev = params[shift] + while (prev && prev[0] === 'space') { + prev = params[--shift] + } + if (prev) { + node.source.end = this.getPosition(prev[3] || prev[2]) + node.source.end.offset++ + } + } + this.end(token) + break + } else { + params.push(token) + } + } else { + params.push(token) + } + + if (this.tokenizer.endOfFile()) { + last = true + break + } + } + + node.raws.between = this.spacesAndCommentsFromEnd(params) + if (params.length) { + node.raws.afterName = this.spacesAndCommentsFromStart(params) + this.raw(node, 'params', params) + if (last) { + token = params[params.length - 1] + node.source.end = this.getPosition(token[3] || token[2]) + node.source.end.offset++ + this.spaces = node.raws.between + node.raws.between = '' + } + } else { + node.raws.afterName = '' + node.params = '' + } + + if (open) { + node.nodes = [] + this.current = node + } + } + + checkMissedSemicolon(tokens) { + let colon = this.colon(tokens) + if (colon === false) return + + let founded = 0 + let token + for (let j = colon - 1; j >= 0; j--) { + token = tokens[j] + if (token[0] !== 'space') { + founded += 1 + if (founded === 2) break + } + } + // If the token is a word, e.g. `!important`, `red` or any other valid property's value. + // Then we need to return the colon after that word token. [3] is the "end" colon of that word. + // And because we need it after that one we do +1 to get the next one. + throw this.input.error( + 'Missed semicolon', + token[0] === 'word' ? token[3] + 1 : token[2] + ) + } + + colon(tokens) { + let brackets = 0 + let prev, token, type + for (let [i, element] of tokens.entries()) { + token = element + type = token[0] + + if (type === '(') { + brackets += 1 + } + if (type === ')') { + brackets -= 1 + } + if (brackets === 0 && type === ':') { + if (!prev) { + this.doubleColon(token) + } else if (prev[0] === 'word' && prev[1] === 'progid') { + continue + } else { + return i + } + } + + prev = token + } + return false + } + + comment(token) { + let node = new Comment() + this.init(node, token[2]) + node.source.end = this.getPosition(token[3] || token[2]) + node.source.end.offset++ + + let text = token[1].slice(2, -2) + if (/^\s*$/.test(text)) { + node.text = '' + node.raws.left = text + node.raws.right = '' + } else { + let match = text.match(/^(\s*)([^]*\S)(\s*)$/) + node.text = match[2] + node.raws.left = match[1] + node.raws.right = match[3] + } + } + + createTokenizer() { + this.tokenizer = tokenizer(this.input) + } + + decl(tokens, customProperty) { + let node = new Declaration() + this.init(node, tokens[0][2]) + + let last = tokens[tokens.length - 1] + if (last[0] === ';') { + this.semicolon = true + tokens.pop() + } + + node.source.end = this.getPosition( + last[3] || last[2] || findLastWithPosition(tokens) + ) + node.source.end.offset++ + + while (tokens[0][0] !== 'word') { + if (tokens.length === 1) this.unknownWord(tokens) + node.raws.before += tokens.shift()[1] + } + node.source.start = this.getPosition(tokens[0][2]) + + node.prop = '' + while (tokens.length) { + let type = tokens[0][0] + if (type === ':' || type === 'space' || type === 'comment') { + break + } + node.prop += tokens.shift()[1] + } + + node.raws.between = '' + + let token + while (tokens.length) { + token = tokens.shift() + + if (token[0] === ':') { + node.raws.between += token[1] + break + } else { + if (token[0] === 'word' && /\w/.test(token[1])) { + this.unknownWord([token]) + } + node.raws.between += token[1] + } + } + + if (node.prop[0] === '_' || node.prop[0] === '*') { + node.raws.before += node.prop[0] + node.prop = node.prop.slice(1) + } + + let firstSpaces = [] + let next + while (tokens.length) { + next = tokens[0][0] + if (next !== 'space' && next !== 'comment') break + firstSpaces.push(tokens.shift()) + } + + this.precheckMissedSemicolon(tokens) + + for (let i = tokens.length - 1; i >= 0; i--) { + token = tokens[i] + if (token[1].toLowerCase() === '!important') { + node.important = true + let string = this.stringFrom(tokens, i) + string = this.spacesFromEnd(tokens) + string + if (string !== ' !important') node.raws.important = string + break + } else if (token[1].toLowerCase() === 'important') { + let cache = tokens.slice(0) + let str = '' + for (let j = i; j > 0; j--) { + let type = cache[j][0] + if (str.trim().startsWith('!') && type !== 'space') { + break + } + str = cache.pop()[1] + str + } + if (str.trim().startsWith('!')) { + node.important = true + node.raws.important = str + tokens = cache + } + } + + if (token[0] !== 'space' && token[0] !== 'comment') { + break + } + } + + let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment') + + if (hasWord) { + node.raws.between += firstSpaces.map(i => i[1]).join('') + firstSpaces = [] + } + this.raw(node, 'value', firstSpaces.concat(tokens), customProperty) + + if (node.value.includes(':') && !customProperty) { + this.checkMissedSemicolon(tokens) + } + } + + doubleColon(token) { + throw this.input.error( + 'Double colon', + { offset: token[2] }, + { offset: token[2] + token[1].length } + ) + } + + emptyRule(token) { + let node = new Rule() + this.init(node, token[2]) + node.selector = '' + node.raws.between = '' + this.current = node + } + + end(token) { + if (this.current.nodes && this.current.nodes.length) { + this.current.raws.semicolon = this.semicolon + } + this.semicolon = false + + this.current.raws.after = (this.current.raws.after || '') + this.spaces + this.spaces = '' + + if (this.current.parent) { + this.current.source.end = this.getPosition(token[2]) + this.current.source.end.offset++ + this.current = this.current.parent + } else { + this.unexpectedClose(token) + } + } + + endFile() { + if (this.current.parent) this.unclosedBlock() + if (this.current.nodes && this.current.nodes.length) { + this.current.raws.semicolon = this.semicolon + } + this.current.raws.after = (this.current.raws.after || '') + this.spaces + this.root.source.end = this.getPosition(this.tokenizer.position()) + } + + freeSemicolon(token) { + this.spaces += token[1] + if (this.current.nodes) { + let prev = this.current.nodes[this.current.nodes.length - 1] + if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) { + prev.raws.ownSemicolon = this.spaces + this.spaces = '' + prev.source.end = this.getPosition(token[2]) + prev.source.end.offset += prev.raws.ownSemicolon.length + } + } + } + + // Helpers + + getPosition(offset) { + let pos = this.input.fromOffset(offset) + return { + column: pos.col, + line: pos.line, + offset + } + } + + init(node, offset) { + this.current.push(node) + node.source = { + input: this.input, + start: this.getPosition(offset) + } + node.raws.before = this.spaces + this.spaces = '' + if (node.type !== 'comment') this.semicolon = false + } + + other(start) { + let end = false + let type = null + let colon = false + let bracket = null + let brackets = [] + let customProperty = start[1].startsWith('--') + + let tokens = [] + let token = start + while (token) { + type = token[0] + tokens.push(token) + + if (type === '(' || type === '[') { + if (!bracket) bracket = token + brackets.push(type === '(' ? ')' : ']') + } else if (customProperty && colon && type === '{') { + if (!bracket) bracket = token + brackets.push('}') + } else if (brackets.length === 0) { + if (type === ';') { + if (colon) { + this.decl(tokens, customProperty) + return + } else { + break + } + } else if (type === '{') { + this.rule(tokens) + return + } else if (type === '}') { + this.tokenizer.back(tokens.pop()) + end = true + break + } else if (type === ':') { + colon = true + } + } else if (type === brackets[brackets.length - 1]) { + brackets.pop() + if (brackets.length === 0) bracket = null + } + + token = this.tokenizer.nextToken() + } + + if (this.tokenizer.endOfFile()) end = true + if (brackets.length > 0) this.unclosedBracket(bracket) + + if (end && colon) { + if (!customProperty) { + while (tokens.length) { + token = tokens[tokens.length - 1][0] + if (token !== 'space' && token !== 'comment') break + this.tokenizer.back(tokens.pop()) + } + } + this.decl(tokens, customProperty) + } else { + this.unknownWord(tokens) + } + } + + parse() { + let token + while (!this.tokenizer.endOfFile()) { + token = this.tokenizer.nextToken() + + switch (token[0]) { + case 'space': + this.spaces += token[1] + break + + case ';': + this.freeSemicolon(token) + break + + case '}': + this.end(token) + break + + case 'comment': + this.comment(token) + break + + case 'at-word': + this.atrule(token) + break + + case '{': + this.emptyRule(token) + break + + default: + this.other(token) + break + } + } + this.endFile() + } + + precheckMissedSemicolon(/* tokens */) { + // Hook for Safe Parser + } + + raw(node, prop, tokens, customProperty) { + let token, type + let length = tokens.length + let value = '' + let clean = true + let next, prev + + for (let i = 0; i < length; i += 1) { + token = tokens[i] + type = token[0] + if (type === 'space' && i === length - 1 && !customProperty) { + clean = false + } else if (type === 'comment') { + prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty' + next = tokens[i + 1] ? tokens[i + 1][0] : 'empty' + if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) { + if (value.slice(-1) === ',') { + clean = false + } else { + value += token[1] + } + } else { + clean = false + } + } else { + value += token[1] + } + } + if (!clean) { + let raw = tokens.reduce((all, i) => all + i[1], '') + node.raws[prop] = { raw, value } + } + node[prop] = value + } + + rule(tokens) { + tokens.pop() + + let node = new Rule() + this.init(node, tokens[0][2]) + + node.raws.between = this.spacesAndCommentsFromEnd(tokens) + this.raw(node, 'selector', tokens) + this.current = node + } + + spacesAndCommentsFromEnd(tokens) { + let lastTokenType + let spaces = '' + while (tokens.length) { + lastTokenType = tokens[tokens.length - 1][0] + if (lastTokenType !== 'space' && lastTokenType !== 'comment') break + spaces = tokens.pop()[1] + spaces + } + return spaces + } + + // Errors + + spacesAndCommentsFromStart(tokens) { + let next + let spaces = '' + while (tokens.length) { + next = tokens[0][0] + if (next !== 'space' && next !== 'comment') break + spaces += tokens.shift()[1] + } + return spaces + } + + spacesFromEnd(tokens) { + let lastTokenType + let spaces = '' + while (tokens.length) { + lastTokenType = tokens[tokens.length - 1][0] + if (lastTokenType !== 'space') break + spaces = tokens.pop()[1] + spaces + } + return spaces + } + + stringFrom(tokens, from) { + let result = '' + for (let i = from; i < tokens.length; i++) { + result += tokens[i][1] + } + tokens.splice(from, tokens.length - from) + return result + } + + unclosedBlock() { + let pos = this.current.source.start + throw this.input.error('Unclosed block', pos.line, pos.column) + } + + unclosedBracket(bracket) { + throw this.input.error( + 'Unclosed bracket', + { offset: bracket[2] }, + { offset: bracket[2] + 1 } + ) + } + + unexpectedClose(token) { + throw this.input.error( + 'Unexpected }', + { offset: token[2] }, + { offset: token[2] + 1 } + ) + } + + unknownWord(tokens) { + throw this.input.error( + 'Unknown word ' + tokens[0][1], + { offset: tokens[0][2] }, + { offset: tokens[0][2] + tokens[0][1].length } + ) + } + + unnamedAtrule(node, token) { + throw this.input.error( + 'At-rule without name', + { offset: token[2] }, + { offset: token[2] + token[1].length } + ) + } +} + +module.exports = Parser diff --git a/node_modules/postcss/lib/postcss.d.mts b/node_modules/postcss/lib/postcss.d.mts new file mode 100644 index 0000000..d343f3c --- /dev/null +++ b/node_modules/postcss/lib/postcss.d.mts @@ -0,0 +1,69 @@ +export { + // Type-only exports + AcceptedPlugin, + + AnyNode, + atRule, + AtRule, + AtRuleProps, + Builder, + ChildNode, + ChildProps, + comment, + Comment, + CommentProps, + Container, + ContainerProps, + CssSyntaxError, + decl, + Declaration, + DeclarationProps, + // postcss function / namespace + default, + document, + Document, + DocumentProps, + FilePosition, + fromJSON, + Helpers, + Input, + + JSONHydrator, + // This is a class, but it’s not re-exported. That’s why it’s exported as type-only here. + type LazyResult, + list, + Message, + Node, + NodeErrorOptions, + NodeProps, + OldPlugin, + parse, + Parser, + // @ts-expect-error This value exists, but it’s untyped. + plugin, + Plugin, + PluginCreator, + Position, + Postcss, + ProcessOptions, + Processor, + Result, + root, + Root, + RootProps, + rule, + Rule, + RuleProps, + Source, + SourceMap, + SourceMapOptions, + Stringifier, + // Value exports from postcss.mjs + stringify, + Syntax, + TransformCallback, + Transformer, + Warning, + + WarningOptions +} from './postcss.js' diff --git a/node_modules/postcss/lib/postcss.d.ts b/node_modules/postcss/lib/postcss.d.ts new file mode 100644 index 0000000..c5e3605 --- /dev/null +++ b/node_modules/postcss/lib/postcss.d.ts @@ -0,0 +1,458 @@ +import { RawSourceMap, SourceMapGenerator } from 'source-map-js' + +import AtRule, { AtRuleProps } from './at-rule.js' +import Comment, { CommentProps } from './comment.js' +import Container, { ContainerProps, NewChild } from './container.js' +import CssSyntaxError from './css-syntax-error.js' +import Declaration, { DeclarationProps } from './declaration.js' +import Document, { DocumentProps } from './document.js' +import Input, { FilePosition } from './input.js' +import LazyResult from './lazy-result.js' +import list from './list.js' +import Node, { + AnyNode, + ChildNode, + ChildProps, + NodeErrorOptions, + NodeProps, + Position, + Source +} from './node.js' +import Processor from './processor.js' +import Result, { Message } from './result.js' +import Root, { RootProps } from './root.js' +import Rule, { RuleProps } from './rule.js' +import Warning, { WarningOptions } from './warning.js' + +type DocumentProcessor = ( + document: Document, + helper: postcss.Helpers +) => Promise | void +type RootProcessor = ( + root: Root, + helper: postcss.Helpers +) => Promise | void +type DeclarationProcessor = ( + decl: Declaration, + helper: postcss.Helpers +) => Promise | void +type RuleProcessor = ( + rule: Rule, + helper: postcss.Helpers +) => Promise | void +type AtRuleProcessor = ( + atRule: AtRule, + helper: postcss.Helpers +) => Promise | void +type CommentProcessor = ( + comment: Comment, + helper: postcss.Helpers +) => Promise | void + +interface Processors { + /** + * Will be called on all`AtRule` nodes. + * + * Will be called again on node or children changes. + */ + AtRule?: { [name: string]: AtRuleProcessor } | AtRuleProcessor + + /** + * Will be called on all `AtRule` nodes, when all children will be processed. + * + * Will be called again on node or children changes. + */ + AtRuleExit?: { [name: string]: AtRuleProcessor } | AtRuleProcessor + + /** + * Will be called on all `Comment` nodes. + * + * Will be called again on node or children changes. + */ + Comment?: CommentProcessor + + /** + * Will be called on all `Comment` nodes after listeners + * for `Comment` event. + * + * Will be called again on node or children changes. + */ + CommentExit?: CommentProcessor + + /** + * Will be called on all `Declaration` nodes after listeners + * for `Declaration` event. + * + * Will be called again on node or children changes. + */ + Declaration?: { [prop: string]: DeclarationProcessor } | DeclarationProcessor + + /** + * Will be called on all `Declaration` nodes. + * + * Will be called again on node or children changes. + */ + DeclarationExit?: + | { [prop: string]: DeclarationProcessor } + | DeclarationProcessor + + /** + * Will be called on `Document` node. + * + * Will be called again on children changes. + */ + Document?: DocumentProcessor + + /** + * Will be called on `Document` node, when all children will be processed. + * + * Will be called again on children changes. + */ + DocumentExit?: DocumentProcessor + + /** + * Will be called on `Root` node once. + */ + Once?: RootProcessor + + /** + * Will be called on `Root` node once, when all children will be processed. + */ + OnceExit?: RootProcessor + + /** + * Will be called on `Root` node. + * + * Will be called again on children changes. + */ + Root?: RootProcessor + + /** + * Will be called on `Root` node, when all children will be processed. + * + * Will be called again on children changes. + */ + RootExit?: RootProcessor + + /** + * Will be called on all `Rule` nodes. + * + * Will be called again on node or children changes. + */ + Rule?: RuleProcessor + + /** + * Will be called on all `Rule` nodes, when all children will be processed. + * + * Will be called again on node or children changes. + */ + RuleExit?: RuleProcessor +} + +declare namespace postcss { + export { + AnyNode, + AtRule, + AtRuleProps, + ChildNode, + ChildProps, + Comment, + CommentProps, + Container, + ContainerProps, + CssSyntaxError, + Declaration, + DeclarationProps, + Document, + DocumentProps, + FilePosition, + Input, + LazyResult, + list, + Message, + NewChild, + Node, + NodeErrorOptions, + NodeProps, + Position, + Processor, + Result, + Root, + RootProps, + Rule, + RuleProps, + Source, + Warning, + WarningOptions + } + + export type SourceMap = { + toJSON(): RawSourceMap + } & SourceMapGenerator + + export type Helpers = { postcss: Postcss; result: Result } & Postcss + + export interface Plugin extends Processors { + postcssPlugin: string + prepare?: (result: Result) => Processors + } + + export interface PluginCreator { + (opts?: PluginOptions): Plugin | Processor + postcss: true + } + + export interface Transformer extends TransformCallback { + postcssPlugin: string + postcssVersion: string + } + + export interface TransformCallback { + (root: Root, result: Result): Promise | void + } + + export interface OldPlugin extends Transformer { + (opts?: T): Transformer + postcss: Transformer + } + + export type AcceptedPlugin = + | { + postcss: Processor | TransformCallback + } + | OldPlugin + | Plugin + | PluginCreator + | Processor + | TransformCallback + + export interface Parser { + ( + css: { toString(): string } | string, + opts?: Pick + ): RootNode + } + + export interface Builder { + (part: string, node?: AnyNode, type?: 'end' | 'start'): void + } + + export interface Stringifier { + (node: AnyNode, builder: Builder): void + } + + export interface JSONHydrator { + (data: object): Node + (data: object[]): Node[] + } + + export interface Syntax { + /** + * Function to generate AST by string. + */ + parse?: Parser + + /** + * Class to generate string by AST. + */ + stringify?: Stringifier + } + + export interface SourceMapOptions { + /** + * Use absolute path in generated source map. + */ + absolute?: boolean + + /** + * Indicates that PostCSS should add annotation comments to the CSS. + * By default, PostCSS will always add a comment with a path + * to the source map. PostCSS will not add annotations to CSS files + * that do not contain any comments. + * + * By default, PostCSS presumes that you want to save the source map as + * `opts.to + '.map'` and will use this path in the annotation comment. + * A different path can be set by providing a string value for annotation. + * + * If you have set `inline: true`, annotation cannot be disabled. + */ + annotation?: ((file: string, root: Root) => string) | boolean | string + + /** + * Override `from` in map’s sources. + */ + from?: string + + /** + * Indicates that the source map should be embedded in the output CSS + * as a Base64-encoded comment. By default, it is `true`. + * But if all previous maps are external, not inline, PostCSS will not embed + * the map even if you do not set this option. + * + * If you have an inline source map, the result.map property will be empty, + * as the source map will be contained within the text of `result.css`. + */ + inline?: boolean + + /** + * Source map content from a previous processing step (e.g., Sass). + * + * PostCSS will try to read the previous source map + * automatically (based on comments within the source CSS), but you can use + * this option to identify it manually. + * + * If desired, you can omit the previous map with prev: `false`. + */ + prev?: ((file: string) => string) | boolean | object | string + + /** + * Indicates that PostCSS should set the origin content (e.g., Sass source) + * of the source map. By default, it is true. But if all previous maps do not + * contain sources content, PostCSS will also leave it out even if you + * do not set this option. + */ + sourcesContent?: boolean + } + + export interface ProcessOptions { + /** + * Input file if it is not simple CSS file, but HTML with + .order-card { + padding: 34rpx 20rpx 40rpx 20rpx; + background: #ffffff; + border-radius: 20rpx; + margin: 20rpx 30rpx; + + .order-card-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 40rpx; + + &__left { + font-weight: 500; + font-size: 30rpx; + color: #333333; + line-height: 34rpx; + text-align: left; + font-style: normal; + } + + &__right { + font-weight: 500; + font-size: 24rpx; + color: #666666; + line-height: 33rpx; + text-align: left; + font-style: normal; + display: flex; + align-items: center; + + &__img { + width: 23rpx; + height: 24rpx; + margin-right: 7rpx; + } + } + } + + .order-card-content { + display: flex; + justify-content: flex-start; + align-items: flex-start; + + &__left { + margin-right: 30rpx; + + &__img { + width: 172rpx; + height: 172rpx; + border-radius: 20rpx; + } + } + + &__right { + &__price { + font-weight: 500; + font-size: 26rpx; + color: #333333; + line-height: 34rpx; + text-align: left; + font-style: normal; + margin-bottom: 14rpx; + } + + &__scope { + font-weight: 400; + font-size: 26rpx; + color: #666666; + line-height: 34rpx; + text-align: left; + font-style: normal; + margin-bottom: 27rpx; + } + + &__button { + width: 438rpx; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + font-size: 26rpx; + color: #666666; + &__btn { + display: flex; + align-items: center; + justify-content: center; + font-weight: 400; + font-size: 26rpx; + color: #E8101E; + line-height: 37rpx; + text-align: left; + font-style: normal; + width: 160rpx; + height: 58rpx; + border-radius: 32rpx; + border: 2rpx solid #E8101E; + } + } + } + } + } + \ No newline at end of file diff --git a/static/images/tabbar/new_my_gray.png b/static/images/tabbar/new_my_gray.png new file mode 100644 index 0000000..6db8a24 Binary files /dev/null and b/static/images/tabbar/new_my_gray.png differ diff --git a/unpackage/cache/appleConfig.ini b/unpackage/cache/appleConfig.ini new file mode 100644 index 0000000..2b936d2 --- /dev/null +++ b/unpackage/cache/appleConfig.ini @@ -0,0 +1,17 @@ +[appleAppid] +appleAppid=cn.mrrsj + +[iosStyle] +iosStyle= + +[universalLinks] +universalLinks=https://app.mrrweb.com.cn/ +spaceid=mp-908e3a8e-a3ae-4a70-aaa7-545c9d98f662 + +[universalLinks_qq] +universalLinks_qq= +spaceid_qq= + +[universalLinks_weibo] +universalLinks_weibo= +spaceid_weibo= diff --git a/unpackage/cache/certdataios b/unpackage/cache/certdataios new file mode 100644 index 0000000..f255ef4 --- /dev/null +++ b/unpackage/cache/certdataios @@ -0,0 +1,3 @@ +iosProfile=E:/sjsyrzs/sj/cs/mrrsj.mobileprovision +ioscertFile=E:/sjsyrzs/sj/cs/cs.p12 +ioscertPassword=ep/Tdjka4Y7WYqDB6/S7dw== diff --git a/unpackage/debug/.ios.ins b/unpackage/debug/.ios.ins new file mode 100644 index 0000000..3b526db --- /dev/null +++ b/unpackage/debug/.ios.ins @@ -0,0 +1 @@ +forceInstall \ No newline at end of file diff --git a/unpackage/debug/.roid.ins b/unpackage/debug/.roid.ins new file mode 100644 index 0000000..3b526db --- /dev/null +++ b/unpackage/debug/.roid.ins @@ -0,0 +1 @@ +forceInstall \ No newline at end of file diff --git a/unpackage/debug/android_debug.apk b/unpackage/debug/android_debug.apk new file mode 100644 index 0000000..ad997ec Binary files /dev/null and b/unpackage/debug/android_debug.apk differ diff --git a/unpackage/debug/iOS_debug.ipa b/unpackage/debug/iOS_debug.ipa new file mode 100644 index 0000000..97ff290 Binary files /dev/null and b/unpackage/debug/iOS_debug.ipa differ diff --git a/unpackage/dist/build/.automator/app-plus/.automator.json b/unpackage/dist/build/.automator/app-plus/.automator.json new file mode 100644 index 0000000..e69de29 diff --git a/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/index.uts.ts b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/index.uts.ts new file mode 100644 index 0000000..ebba851 --- /dev/null +++ b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/index.uts.ts @@ -0,0 +1,152 @@ +import { UTSAndroid } from 'io.dcloud.uts'; +import Context from 'android.content.Context'; +import TIMPushManager from 'com.tencent.qcloud.tim.push.TIMPushManager'; +import TIMPushConfig from 'com.tencent.qcloud.tim.push.config.TIMPushConfig'; +import { PushCallbackOptions } from './push-callback-options.uts'; +import { PushListenerOptions } from './push-listener-options.uts'; +import PushCallback from './push-callback.uts'; +import PushListener from './push-listener.uts'; + +const context: Context | null = UTSAndroid.getAppContext(); +console.warn('Push | package.name:', context?.getPackageName()); +TIMPushConfig.getInstance().setRunningPlatform(2); +const Push = TIMPushManager.getInstance(); + +export class EVENT { + static MESSAGE_RECEIVED: string = 'message_received' + static MESSAGE_REVOKED: string = 'message_revoked' + static NOTIFICATION_CLICKED: string = 'notification_clicked' +} + +let disableNotification = false; +export function disablePostNotificationInForeground(disable: boolean): void { + console.log('Push | disablePostNotificationInForeground', disable); + disableNotification = disable; + Push.disablePostNotificationInForeground(disableNotification); +} + +export function registerPush(SDKAppID: number, appKey: string, onSuccess: (data: string) => void, onError?: (errCode: number, errMsg: string) => void): void { + if (SDKAppID == 0) { + onError?.(9010001, 'Invalid SDKAppID'); + } else if (appKey == '') { + onError?.(9010002, 'Invalid appKey'); + } + const pushCbOptions: PushCallbackOptions = { + apiName: 'registerPush', + success: (res?: any) => { + Push.disablePostNotificationInForeground(disableNotification); + // 强转下类型,避免类型推断错误 + let token: string = res as string; + onSuccess(token); + }, + fail: (errCode: number, errMsg: string) => { + onError?.(errCode, errMsg); + } + }; + // 注意!!! 这里不要写成 new PushCallback({ api, success, fail }),否则会因类型推断不一致导致编译错误 + Push.registerPush(context, SDKAppID.toInt(), appKey, new PushCallback(pushCbOptions)); +} + +export function setRegistrationID(registrationID: string, onSuccess: () => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'setRegistrationID', + success: (res?: any) => { + onSuccess(); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + } + }; + // 注意!!! 这里不要写成 new PushCallback({ api, success, fail }),否则会因类型推断不一致导致编译错误 + Push.setRegistrationID(registrationID, new PushCallback(pushCbOptions)); +} + +export function getRegistrationID(onSuccess: (registrationID: string) => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'getRegistrationID', + success: (res?: any) => { + // 强转下类型,避免类型推断错误 + let registrationID: string = res as string; + onSuccess(registrationID); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + } + }; + // 注意!!! 这里不要写成 new PushCallback({ api, success, fail }),否则会因类型推断不一致导致编译错误 + Push.getRegistrationID(new PushCallback(pushCbOptions)); +} + +export function unRegisterPush(onSuccess: () => void, onError?: (errCode: number, errMsg: string) => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'unRegisterPush', + success: (res?: any) => { + onSuccess(); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + }, + }; + // 注意!!! 这里不要写成 new PushCallback({ api, success, fail }),否则会因类型推断不一致导致编译错误 + Push.unRegisterPush(new PushCallback(pushCbOptions)); +} + +export function createNotificationChannel(options: any, onSuccess: (extInfo: string) => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'createNotificationChannel', + success: (res?: any) => { + let ret: string = res as string; + onSuccess(ret); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + }, + }; + Push.callExperimentalAPI('createNotificationChannel', JSON.stringify(options), new PushCallback(pushCbOptions)); +} + +export function getNotificationExtInfo(onSuccess: (extInfo: string) => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'getNotificationExtInfo', + success: (res?: any) => { + let ret: string = res as string; + onSuccess(ret); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + }, + }; + Push.callExperimentalAPI('getNotificationExtInfo', null, new PushCallback(pushCbOptions)); +} + +const listenerMap = new Map void>>(); + +const pushListenerOptions: PushListenerOptions = { + listener: (eventName: string, data: any) => { + listenerMap.get(eventName)?.forEach(item => { + item(data); + }); + }, +}; + +const pushListener = new PushListener(pushListenerOptions); + +@UTSJS.keepAlive +export function addPushListener(eventName: string, listener: (res: any) => void): void { + if(listenerMap.size === 0) { + Push.addPushListener(pushListener); + } + const listeners:Array<(res: any) => void> = [listener]; + listenerMap.get(eventName)?.forEach(item => { + listeners.push(item); + }) + listenerMap.set(eventName, listeners); +} + + +export function removePushListener(eventName: string, listener?: (res: any) => void): void { + listenerMap.delete(eventName); + if(listenerMap.size === 0) { + Push.removePushListener(pushListener); + } +} diff --git a/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback-options.uts.ts b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback-options.uts.ts new file mode 100644 index 0000000..ab6f7bf --- /dev/null +++ b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback-options.uts.ts @@ -0,0 +1,5 @@ +export type PushCallbackOptions = { + apiName: string + success: (res?: any) => void + fail: (errCode: number, errMsg: string) => void +} diff --git a/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback.uts.ts b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback.uts.ts new file mode 100644 index 0000000..32c9f57 --- /dev/null +++ b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback.uts.ts @@ -0,0 +1,28 @@ +import TIMPushCallback from 'com.tencent.qcloud.tim.push.TIMPushCallback'; +import { PushCallbackOptions } from './push-callback-options.uts'; + +const LOG_PREFIX: string = 'Push |'; +export default class PushCallback implements TIMPushCallback { + private apiName: string; + private success: (data?: any) => void; + private fail: (errCode: number, errMsg: string) => void; + + constructor(options: PushCallbackOptions) { + this.apiName = options.apiName; + this.success = options.success; + this.fail = options.fail; + } + + override onSuccess(data?: any) { + console.log(`${LOG_PREFIX} ${this.apiName} ok, data:`, data); + if (data == null) { + this.success?.(''); + } else { + this.success?.(data); + } + } + + override onError(errCode: Int, errMsg: string, data?: any) { + this.fail?.(errCode as number, errMsg); + } +} \ No newline at end of file diff --git a/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener-options.uts.ts b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener-options.uts.ts new file mode 100644 index 0000000..a155ba2 --- /dev/null +++ b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener-options.uts.ts @@ -0,0 +1,3 @@ +export type PushListenerOptions = { + listener: (eventType: string, data: any) => void +} diff --git a/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener.uts.ts b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener.uts.ts new file mode 100644 index 0000000..5c39c24 --- /dev/null +++ b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener.uts.ts @@ -0,0 +1,25 @@ +import TIMPushListener from 'com.tencent.qcloud.tim.push.TIMPushListener'; +import TIMPushMessage from 'com.tencent.qcloud.tim.push.TIMPushMessage'; +import { PushListenerOptions } from './push-listener-options.uts'; + +const LOG_PREFIX: string = 'Push | PushListener'; +export default class PushListener implements TIMPushListener { + private listener: (eventType: string, data: any) => void; + + constructor(options: PushListenerOptions) { + this.listener = options.listener; + console.log(`${LOG_PREFIX} ok`); + } + + override onRecvPushMessage(message: TIMPushMessage) { + this.listener('message_received', { data: message }); + } + + override onRevokePushMessage(messageID: string) { + this.listener('message_revoked', { data: messageID }); + } + + override onNotificationClicked(ext: string) { + this.listener('notification_clicked', { data: ext }); + } +} \ No newline at end of file diff --git a/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-ios/index.uts.ts b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-ios/index.uts.ts new file mode 100644 index 0000000..0d58ad2 --- /dev/null +++ b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-ios/index.uts.ts @@ -0,0 +1,125 @@ +import { TIMPushManager } from "TIMPush" +import { NSObject } from "DCloudUTSFoundation" +import PushListener from './push-listener.uts' +import { PushListenerOptions } from './push-listener-options.uts' + +const LOG_PREFIX = 'Push |'; + +export class EVENT { + static MESSAGE_RECEIVED: string = 'message_received' + static MESSAGE_REVOKED: string = 'message_revoked' + static NOTIFICATION_CLICKED: string = 'notification_clicked' +} + +function setRunningPlatform(): void { + console.log(LOG_PREFIX, 'setRunningPlatform'); + const param = new NSString("{\"runningPlatform\":2}"); + TIMPushManager.callExperimentalAPI('setPushConfig', param = param, succ = (ext?: NSObject): void => { + let platform: string = ext as string; + console.log(LOG_PREFIX, 'setRunningPlatform ok. platform:', platform); + }, fail = (code?: Int32 ,desc?:String): void => { + console.log(LOG_PREFIX, `setRunningPlatform fail. code: ${code}, desc: ${desc}`); + } + ); +} + +let disableNotification = false; + +export function disablePostNotificationInForeground(_disable: boolean): void { + console.log(LOG_PREFIX, 'disablePostNotificationInForeground', _disable); + disableNotification = _disable; + TIMPushManager.disablePostNotificationInForeground(disable = disableNotification); +} + +export function registerPush(SDKAppID: number, appKey: string, onSuccess: (data: string) => void, onError?: (errCode: number, errMsg: string) => void): void { + if (SDKAppID == 0) { + onError?.(9010001, 'Invalid SDKAppID'); + } else if (appKey == '') { + onError?.(9010002, 'Invalid appKey'); + } + setRunningPlatform(); + TIMPushManager.registerPush(SDKAppID.toInt32(), appKey = appKey, succ = (deviceToken?: Data): void => { + TIMPushManager.disablePostNotificationInForeground(disable = disableNotification); + console.log('devicetoken ->', deviceToken, deviceToken?.count); + onSuccess(''); + }, fail = (code?: Int32 ,desc?:String): void => { + onError?.(code as number, desc as string); + } + ); +} + +export function unRegisterPush(onSuccess: () => void, onError: (errCode: number, errMsg: string) => void): void { + TIMPushManager.unRegisterPush((): void => { + onSuccess(); + }, fail = (code?: Int32 ,desc?:String): void => { + onError(code as number, desc as string); + } + ); +} + +export function setRegistrationID(registrationID: string, onSuccess: () => void): void { + console.log(LOG_PREFIX, 'setRegistrationID', `registrationID:${registrationID}`); + TIMPushManager.setRegistrationID(registrationID, callback = (): void => { + console.log(LOG_PREFIX, 'setRegistrationID ok'); + onSuccess(); + }); +} + +export function getRegistrationID(onSuccess: (registrationID: string) => void): void { + TIMPushManager.getRegistrationID((value ?: string): void => { + // 这里需要转一下,否则会有问题 + let ret: string = value as string; + onSuccess(ret); + }); +} + +export function createNotificationChannel(options: any, onSuccess: (data: string) => void): void { + // 空实现 +} + +// 注意!!!这里的 extInfo 不能写成 ext,否则会跟内部的 ext?:NSObject 有冲突;也不能写成 extension,否则会导致编译错误 +export function getNotificationExtInfo(onSuccess: (extInfo: string) => void): void { + console.log(LOG_PREFIX, 'getNotificationExtInfo'); + TIMPushManager.callExperimentalAPI('getNotificationExtInfo', param = {}, succ = (ext?: NSObject): void => { + let str: string = ext as string; + console.log(LOG_PREFIX, 'getNotificationExtInfo ok. ext:', str); + onSuccess(str); + }, fail = (code?: Int32 ,desc?:String): void => { + // 空实现 + } + ); +} + + +const listenerMap = new Map void>>(); + +const pushListenerOptions: PushListenerOptions = { + listener: (eventName: string, data: any) => { + listenerMap.get(eventName)?.forEach(item => { + item(data); + }); + }, +}; + +const pushListener = new PushListener(pushListenerOptions); + +@UTSJS.keepAlive +export function addPushListener(eventName: string, _listener: (res: any) => void): void { + console.log(LOG_PREFIX, 'addPushListener', eventName); + if(listenerMap.size === 0) { + TIMPushManager.addPushListener(listener = pushListener); + } + const listeners:Array<(res: any) => void> = [_listener]; + listenerMap.get(eventName)?.forEach(item => { + listeners.push(item); + }) + listenerMap.set(eventName, listeners); +} + +export function removePushListener(eventName: string, _listener?: (res: any) => void): void { + console.log(LOG_PREFIX, 'removePushListener', eventName); + listenerMap.delete(eventName); + if(listenerMap.size === 0) { + TIMPushManager.removePushListener(listener = pushListener); + } +} \ No newline at end of file diff --git a/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener-options.uts.ts b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener-options.uts.ts new file mode 100644 index 0000000..db8c8ff --- /dev/null +++ b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener-options.uts.ts @@ -0,0 +1,3 @@ +export type PushListenerOptions = { + listener: (eventType: string, data: any) => void +} diff --git a/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener.uts.ts b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener.uts.ts new file mode 100644 index 0000000..5e87c34 --- /dev/null +++ b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener.uts.ts @@ -0,0 +1,24 @@ +import { TIMPushListener, TIMPushMessage} from "TIMPush" +import { PushListenerOptions } from './push-listener-options.uts'; + +const LOG_PREFIX: string = 'Push | PushListener'; +export default class PushListener implements TIMPushListener { + private listener: (eventType: string, data: any) => void; + + constructor(options: PushListenerOptions) { + this.listener = options.listener; + console.log(`${LOG_PREFIX} ok`); + } + + onRecvPushMessage(message: TIMPushMessage) { + this.listener('message_received', { data: message }); + } + + onRevokePushMessage(messageID: string) { + this.listener('message_revoked', { data: messageID }); + } + + onNotificationClicked(ext: string) { + this.listener('notification_clicked', { data: ext }); + } +} \ No newline at end of file diff --git a/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/interface.uts.ts b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/interface.uts.ts new file mode 100644 index 0000000..a4f9c94 --- /dev/null +++ b/unpackage/dist/build/.tsc/app-android/uni_modules/TencentCloud-Push/utssdk/interface.uts.ts @@ -0,0 +1,26 @@ +export interface Push { + setRegistrationID(registrationID: string, onSuccess: () => void): void, + registerPush(SDKAppID: number, appKey: string, onSuccess: (data: string) => void, onError?: (errCode: number, errMsg: string) => void): void, + getRegistrationID(onSuccess: (registrationID: string) => void): void, + unRegisterPush(onSuccess: () => void, onError?: (errCode: number, errMsg: string) => void): void, + getNotificationExtInfo(onSuccess: (extInfo: string) => void): void + addPushListener(eventName: string, listener: (res: any) => void): void + removePushListener(eventName: string, listener?: (res: any) => void): void + disablePostNotificationInForeground(disable: boolean): void + createNotificationChannel(options: any, onSuccess: (data: string) => void): void +} + +export type SetRegistrationID = (registrationID: string, onSuccess: () => void) => void; +export type RegisterPush = (SDKAppID: number, appKey: string, onSuccess: (data: string) => void, onError?: (errCode: number, errMsg: string) => void) => void; +export type GetRegistrationID = (onSuccess: (registrationID: string) => void) => void; +export type UnRegisterPush = (onSuccess: () => void, onError?: (errCode: number, errMsg: string) => void) => void; +export type GetNotificationExtInfo = (onSuccess: (extInfo: string) => void) => void; +export type AddPushListener = (eventName: string, listener: (res: any) => void) => void; +export type RemovePushListener = (eventName: string, listener?: (res: any) => void) => void; +export type DisablePostNotificationInForeground = (disable: boolean) => void; +export type CreateNotificationChannel = (options: any, onSuccess: (data: string) => void) => void; +export enum EVENT { + MESSAGE_RECEIVED = 'message_received', + MESSAGE_REVOKED = 'message_revoked', + NOTIFICATION_CLICKED = 'notification_clicked' +} \ No newline at end of file diff --git a/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/index.uts.ts b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/index.uts.ts new file mode 100644 index 0000000..ebba851 --- /dev/null +++ b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/index.uts.ts @@ -0,0 +1,152 @@ +import { UTSAndroid } from 'io.dcloud.uts'; +import Context from 'android.content.Context'; +import TIMPushManager from 'com.tencent.qcloud.tim.push.TIMPushManager'; +import TIMPushConfig from 'com.tencent.qcloud.tim.push.config.TIMPushConfig'; +import { PushCallbackOptions } from './push-callback-options.uts'; +import { PushListenerOptions } from './push-listener-options.uts'; +import PushCallback from './push-callback.uts'; +import PushListener from './push-listener.uts'; + +const context: Context | null = UTSAndroid.getAppContext(); +console.warn('Push | package.name:', context?.getPackageName()); +TIMPushConfig.getInstance().setRunningPlatform(2); +const Push = TIMPushManager.getInstance(); + +export class EVENT { + static MESSAGE_RECEIVED: string = 'message_received' + static MESSAGE_REVOKED: string = 'message_revoked' + static NOTIFICATION_CLICKED: string = 'notification_clicked' +} + +let disableNotification = false; +export function disablePostNotificationInForeground(disable: boolean): void { + console.log('Push | disablePostNotificationInForeground', disable); + disableNotification = disable; + Push.disablePostNotificationInForeground(disableNotification); +} + +export function registerPush(SDKAppID: number, appKey: string, onSuccess: (data: string) => void, onError?: (errCode: number, errMsg: string) => void): void { + if (SDKAppID == 0) { + onError?.(9010001, 'Invalid SDKAppID'); + } else if (appKey == '') { + onError?.(9010002, 'Invalid appKey'); + } + const pushCbOptions: PushCallbackOptions = { + apiName: 'registerPush', + success: (res?: any) => { + Push.disablePostNotificationInForeground(disableNotification); + // 强转下类型,避免类型推断错误 + let token: string = res as string; + onSuccess(token); + }, + fail: (errCode: number, errMsg: string) => { + onError?.(errCode, errMsg); + } + }; + // 注意!!! 这里不要写成 new PushCallback({ api, success, fail }),否则会因类型推断不一致导致编译错误 + Push.registerPush(context, SDKAppID.toInt(), appKey, new PushCallback(pushCbOptions)); +} + +export function setRegistrationID(registrationID: string, onSuccess: () => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'setRegistrationID', + success: (res?: any) => { + onSuccess(); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + } + }; + // 注意!!! 这里不要写成 new PushCallback({ api, success, fail }),否则会因类型推断不一致导致编译错误 + Push.setRegistrationID(registrationID, new PushCallback(pushCbOptions)); +} + +export function getRegistrationID(onSuccess: (registrationID: string) => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'getRegistrationID', + success: (res?: any) => { + // 强转下类型,避免类型推断错误 + let registrationID: string = res as string; + onSuccess(registrationID); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + } + }; + // 注意!!! 这里不要写成 new PushCallback({ api, success, fail }),否则会因类型推断不一致导致编译错误 + Push.getRegistrationID(new PushCallback(pushCbOptions)); +} + +export function unRegisterPush(onSuccess: () => void, onError?: (errCode: number, errMsg: string) => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'unRegisterPush', + success: (res?: any) => { + onSuccess(); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + }, + }; + // 注意!!! 这里不要写成 new PushCallback({ api, success, fail }),否则会因类型推断不一致导致编译错误 + Push.unRegisterPush(new PushCallback(pushCbOptions)); +} + +export function createNotificationChannel(options: any, onSuccess: (extInfo: string) => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'createNotificationChannel', + success: (res?: any) => { + let ret: string = res as string; + onSuccess(ret); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + }, + }; + Push.callExperimentalAPI('createNotificationChannel', JSON.stringify(options), new PushCallback(pushCbOptions)); +} + +export function getNotificationExtInfo(onSuccess: (extInfo: string) => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'getNotificationExtInfo', + success: (res?: any) => { + let ret: string = res as string; + onSuccess(ret); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + }, + }; + Push.callExperimentalAPI('getNotificationExtInfo', null, new PushCallback(pushCbOptions)); +} + +const listenerMap = new Map void>>(); + +const pushListenerOptions: PushListenerOptions = { + listener: (eventName: string, data: any) => { + listenerMap.get(eventName)?.forEach(item => { + item(data); + }); + }, +}; + +const pushListener = new PushListener(pushListenerOptions); + +@UTSJS.keepAlive +export function addPushListener(eventName: string, listener: (res: any) => void): void { + if(listenerMap.size === 0) { + Push.addPushListener(pushListener); + } + const listeners:Array<(res: any) => void> = [listener]; + listenerMap.get(eventName)?.forEach(item => { + listeners.push(item); + }) + listenerMap.set(eventName, listeners); +} + + +export function removePushListener(eventName: string, listener?: (res: any) => void): void { + listenerMap.delete(eventName); + if(listenerMap.size === 0) { + Push.removePushListener(pushListener); + } +} diff --git a/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback-options.uts.ts b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback-options.uts.ts new file mode 100644 index 0000000..ab6f7bf --- /dev/null +++ b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback-options.uts.ts @@ -0,0 +1,5 @@ +export type PushCallbackOptions = { + apiName: string + success: (res?: any) => void + fail: (errCode: number, errMsg: string) => void +} diff --git a/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback.uts.ts b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback.uts.ts new file mode 100644 index 0000000..32c9f57 --- /dev/null +++ b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback.uts.ts @@ -0,0 +1,28 @@ +import TIMPushCallback from 'com.tencent.qcloud.tim.push.TIMPushCallback'; +import { PushCallbackOptions } from './push-callback-options.uts'; + +const LOG_PREFIX: string = 'Push |'; +export default class PushCallback implements TIMPushCallback { + private apiName: string; + private success: (data?: any) => void; + private fail: (errCode: number, errMsg: string) => void; + + constructor(options: PushCallbackOptions) { + this.apiName = options.apiName; + this.success = options.success; + this.fail = options.fail; + } + + override onSuccess(data?: any) { + console.log(`${LOG_PREFIX} ${this.apiName} ok, data:`, data); + if (data == null) { + this.success?.(''); + } else { + this.success?.(data); + } + } + + override onError(errCode: Int, errMsg: string, data?: any) { + this.fail?.(errCode as number, errMsg); + } +} \ No newline at end of file diff --git a/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener-options.uts.ts b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener-options.uts.ts new file mode 100644 index 0000000..a155ba2 --- /dev/null +++ b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener-options.uts.ts @@ -0,0 +1,3 @@ +export type PushListenerOptions = { + listener: (eventType: string, data: any) => void +} diff --git a/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener.uts.ts b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener.uts.ts new file mode 100644 index 0000000..5c39c24 --- /dev/null +++ b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener.uts.ts @@ -0,0 +1,25 @@ +import TIMPushListener from 'com.tencent.qcloud.tim.push.TIMPushListener'; +import TIMPushMessage from 'com.tencent.qcloud.tim.push.TIMPushMessage'; +import { PushListenerOptions } from './push-listener-options.uts'; + +const LOG_PREFIX: string = 'Push | PushListener'; +export default class PushListener implements TIMPushListener { + private listener: (eventType: string, data: any) => void; + + constructor(options: PushListenerOptions) { + this.listener = options.listener; + console.log(`${LOG_PREFIX} ok`); + } + + override onRecvPushMessage(message: TIMPushMessage) { + this.listener('message_received', { data: message }); + } + + override onRevokePushMessage(messageID: string) { + this.listener('message_revoked', { data: messageID }); + } + + override onNotificationClicked(ext: string) { + this.listener('notification_clicked', { data: ext }); + } +} \ No newline at end of file diff --git a/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/index.uts.ts b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/index.uts.ts new file mode 100644 index 0000000..0d58ad2 --- /dev/null +++ b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/index.uts.ts @@ -0,0 +1,125 @@ +import { TIMPushManager } from "TIMPush" +import { NSObject } from "DCloudUTSFoundation" +import PushListener from './push-listener.uts' +import { PushListenerOptions } from './push-listener-options.uts' + +const LOG_PREFIX = 'Push |'; + +export class EVENT { + static MESSAGE_RECEIVED: string = 'message_received' + static MESSAGE_REVOKED: string = 'message_revoked' + static NOTIFICATION_CLICKED: string = 'notification_clicked' +} + +function setRunningPlatform(): void { + console.log(LOG_PREFIX, 'setRunningPlatform'); + const param = new NSString("{\"runningPlatform\":2}"); + TIMPushManager.callExperimentalAPI('setPushConfig', param = param, succ = (ext?: NSObject): void => { + let platform: string = ext as string; + console.log(LOG_PREFIX, 'setRunningPlatform ok. platform:', platform); + }, fail = (code?: Int32 ,desc?:String): void => { + console.log(LOG_PREFIX, `setRunningPlatform fail. code: ${code}, desc: ${desc}`); + } + ); +} + +let disableNotification = false; + +export function disablePostNotificationInForeground(_disable: boolean): void { + console.log(LOG_PREFIX, 'disablePostNotificationInForeground', _disable); + disableNotification = _disable; + TIMPushManager.disablePostNotificationInForeground(disable = disableNotification); +} + +export function registerPush(SDKAppID: number, appKey: string, onSuccess: (data: string) => void, onError?: (errCode: number, errMsg: string) => void): void { + if (SDKAppID == 0) { + onError?.(9010001, 'Invalid SDKAppID'); + } else if (appKey == '') { + onError?.(9010002, 'Invalid appKey'); + } + setRunningPlatform(); + TIMPushManager.registerPush(SDKAppID.toInt32(), appKey = appKey, succ = (deviceToken?: Data): void => { + TIMPushManager.disablePostNotificationInForeground(disable = disableNotification); + console.log('devicetoken ->', deviceToken, deviceToken?.count); + onSuccess(''); + }, fail = (code?: Int32 ,desc?:String): void => { + onError?.(code as number, desc as string); + } + ); +} + +export function unRegisterPush(onSuccess: () => void, onError: (errCode: number, errMsg: string) => void): void { + TIMPushManager.unRegisterPush((): void => { + onSuccess(); + }, fail = (code?: Int32 ,desc?:String): void => { + onError(code as number, desc as string); + } + ); +} + +export function setRegistrationID(registrationID: string, onSuccess: () => void): void { + console.log(LOG_PREFIX, 'setRegistrationID', `registrationID:${registrationID}`); + TIMPushManager.setRegistrationID(registrationID, callback = (): void => { + console.log(LOG_PREFIX, 'setRegistrationID ok'); + onSuccess(); + }); +} + +export function getRegistrationID(onSuccess: (registrationID: string) => void): void { + TIMPushManager.getRegistrationID((value ?: string): void => { + // 这里需要转一下,否则会有问题 + let ret: string = value as string; + onSuccess(ret); + }); +} + +export function createNotificationChannel(options: any, onSuccess: (data: string) => void): void { + // 空实现 +} + +// 注意!!!这里的 extInfo 不能写成 ext,否则会跟内部的 ext?:NSObject 有冲突;也不能写成 extension,否则会导致编译错误 +export function getNotificationExtInfo(onSuccess: (extInfo: string) => void): void { + console.log(LOG_PREFIX, 'getNotificationExtInfo'); + TIMPushManager.callExperimentalAPI('getNotificationExtInfo', param = {}, succ = (ext?: NSObject): void => { + let str: string = ext as string; + console.log(LOG_PREFIX, 'getNotificationExtInfo ok. ext:', str); + onSuccess(str); + }, fail = (code?: Int32 ,desc?:String): void => { + // 空实现 + } + ); +} + + +const listenerMap = new Map void>>(); + +const pushListenerOptions: PushListenerOptions = { + listener: (eventName: string, data: any) => { + listenerMap.get(eventName)?.forEach(item => { + item(data); + }); + }, +}; + +const pushListener = new PushListener(pushListenerOptions); + +@UTSJS.keepAlive +export function addPushListener(eventName: string, _listener: (res: any) => void): void { + console.log(LOG_PREFIX, 'addPushListener', eventName); + if(listenerMap.size === 0) { + TIMPushManager.addPushListener(listener = pushListener); + } + const listeners:Array<(res: any) => void> = [_listener]; + listenerMap.get(eventName)?.forEach(item => { + listeners.push(item); + }) + listenerMap.set(eventName, listeners); +} + +export function removePushListener(eventName: string, _listener?: (res: any) => void): void { + console.log(LOG_PREFIX, 'removePushListener', eventName); + listenerMap.delete(eventName); + if(listenerMap.size === 0) { + TIMPushManager.removePushListener(listener = pushListener); + } +} \ No newline at end of file diff --git a/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener-options.uts.ts b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener-options.uts.ts new file mode 100644 index 0000000..db8c8ff --- /dev/null +++ b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener-options.uts.ts @@ -0,0 +1,3 @@ +export type PushListenerOptions = { + listener: (eventType: string, data: any) => void +} diff --git a/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener.uts.ts b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener.uts.ts new file mode 100644 index 0000000..5e87c34 --- /dev/null +++ b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener.uts.ts @@ -0,0 +1,24 @@ +import { TIMPushListener, TIMPushMessage} from "TIMPush" +import { PushListenerOptions } from './push-listener-options.uts'; + +const LOG_PREFIX: string = 'Push | PushListener'; +export default class PushListener implements TIMPushListener { + private listener: (eventType: string, data: any) => void; + + constructor(options: PushListenerOptions) { + this.listener = options.listener; + console.log(`${LOG_PREFIX} ok`); + } + + onRecvPushMessage(message: TIMPushMessage) { + this.listener('message_received', { data: message }); + } + + onRevokePushMessage(messageID: string) { + this.listener('message_revoked', { data: messageID }); + } + + onNotificationClicked(ext: string) { + this.listener('notification_clicked', { data: ext }); + } +} \ No newline at end of file diff --git a/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/interface.uts.ts b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/interface.uts.ts new file mode 100644 index 0000000..a4f9c94 --- /dev/null +++ b/unpackage/dist/build/.tsc/app-ios/uni_modules/TencentCloud-Push/utssdk/interface.uts.ts @@ -0,0 +1,26 @@ +export interface Push { + setRegistrationID(registrationID: string, onSuccess: () => void): void, + registerPush(SDKAppID: number, appKey: string, onSuccess: (data: string) => void, onError?: (errCode: number, errMsg: string) => void): void, + getRegistrationID(onSuccess: (registrationID: string) => void): void, + unRegisterPush(onSuccess: () => void, onError?: (errCode: number, errMsg: string) => void): void, + getNotificationExtInfo(onSuccess: (extInfo: string) => void): void + addPushListener(eventName: string, listener: (res: any) => void): void + removePushListener(eventName: string, listener?: (res: any) => void): void + disablePostNotificationInForeground(disable: boolean): void + createNotificationChannel(options: any, onSuccess: (data: string) => void): void +} + +export type SetRegistrationID = (registrationID: string, onSuccess: () => void) => void; +export type RegisterPush = (SDKAppID: number, appKey: string, onSuccess: (data: string) => void, onError?: (errCode: number, errMsg: string) => void) => void; +export type GetRegistrationID = (onSuccess: (registrationID: string) => void) => void; +export type UnRegisterPush = (onSuccess: () => void, onError?: (errCode: number, errMsg: string) => void) => void; +export type GetNotificationExtInfo = (onSuccess: (extInfo: string) => void) => void; +export type AddPushListener = (eventName: string, listener: (res: any) => void) => void; +export type RemovePushListener = (eventName: string, listener?: (res: any) => void) => void; +export type DisablePostNotificationInForeground = (disable: boolean) => void; +export type CreateNotificationChannel = (options: any, onSuccess: (data: string) => void) => void; +export enum EVENT { + MESSAGE_RECEIVED = 'message_received', + MESSAGE_REVOKED = 'message_revoked', + NOTIFICATION_CLICKED = 'notification_clicked' +} \ No newline at end of file diff --git a/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/index.uts b/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/index.uts new file mode 100644 index 0000000..5e4c94a --- /dev/null +++ b/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/index.uts @@ -0,0 +1,138 @@ +import { UTSAndroid } from 'io.dcloud.uts'; +import Context from 'android.content.Context'; +import TIMPushManager from 'com.tencent.qcloud.tim.push.TIMPushManager'; +import TIMPushConfig from 'com.tencent.qcloud.tim.push.config.TIMPushConfig'; +import { PushCallbackOptions } from './push-callback-options.uts'; +import { PushListenerOptions } from './push-listener-options.uts'; +import PushCallback from './push-callback.uts'; +import PushListener from './push-listener.uts'; +const context: Context | null = UTSAndroid.getAppContext(); +console.warn('Push | package.name:', context?.getPackageName()); +TIMPushConfig.getInstance().setRunningPlatform(2); +const Push = TIMPushManager.getInstance(); +export class EVENT { + static MESSAGE_RECEIVED: string = 'message_received'; + static MESSAGE_REVOKED: string = 'message_revoked'; + static NOTIFICATION_CLICKED: string = 'notification_clicked'; +} +let disableNotification = false; +export function disablePostNotificationInForeground(disable: boolean): void { + console.log('Push | disablePostNotificationInForeground', disable); + disableNotification = disable; + Push.disablePostNotificationInForeground(disableNotification); +} +export function registerPush(SDKAppID: number, appKey: string, onSuccess: (data: string) => void, onError?: (errCode: number, errMsg: string) => void): void { + if (SDKAppID == 0) { + onError?.(9010001, 'Invalid SDKAppID'); + } + else if (appKey == '') { + onError?.(9010002, 'Invalid appKey'); + } + const pushCbOptions: PushCallbackOptions = { + apiName: 'registerPush', + success: (res?: any) => { + Push.disablePostNotificationInForeground(disableNotification); + // 强转下类型,避免类型推断错误 + let token: string = res as string; + onSuccess(token); + }, + fail: (errCode: number, errMsg: string) => { + onError?.(errCode, errMsg); + } + }; + // 注意!!! 这里不要写成 new PushCallback({ api, success, fail }),否则会因类型推断不一致导致编译错误 + Push.registerPush(context, SDKAppID.toInt(), appKey, new PushCallback(pushCbOptions)); +} +export function setRegistrationID(registrationID: string, onSuccess: () => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'setRegistrationID', + success: (res?: any) => { + onSuccess(); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + } + }; + // 注意!!! 这里不要写成 new PushCallback({ api, success, fail }),否则会因类型推断不一致导致编译错误 + Push.setRegistrationID(registrationID, new PushCallback(pushCbOptions)); +} +export function getRegistrationID(onSuccess: (registrationID: string) => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'getRegistrationID', + success: (res?: any) => { + // 强转下类型,避免类型推断错误 + let registrationID: string = res as string; + onSuccess(registrationID); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + } + }; + // 注意!!! 这里不要写成 new PushCallback({ api, success, fail }),否则会因类型推断不一致导致编译错误 + Push.getRegistrationID(new PushCallback(pushCbOptions)); +} +export function unRegisterPush(onSuccess: () => void, onError?: (errCode: number, errMsg: string) => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'unRegisterPush', + success: (res?: any) => { + onSuccess(); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + }, + }; + // 注意!!! 这里不要写成 new PushCallback({ api, success, fail }),否则会因类型推断不一致导致编译错误 + Push.unRegisterPush(new PushCallback(pushCbOptions)); +} +export function createNotificationChannel(options: any, onSuccess: (extInfo: string) => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'createNotificationChannel', + success: (res?: any) => { + let ret: string = res as string; + onSuccess(ret); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + }, + }; + Push.callExperimentalAPI('createNotificationChannel', JSON.stringify(options), new PushCallback(pushCbOptions)); +} +export function getNotificationExtInfo(onSuccess: (extInfo: string) => void): void { + const pushCbOptions: PushCallbackOptions = { + apiName: 'getNotificationExtInfo', + success: (res?: any) => { + let ret: string = res as string; + onSuccess(ret); + }, + fail: (errCode: number, errMsg: string) => { + // 空实现 + }, + }; + Push.callExperimentalAPI('getNotificationExtInfo', null, new PushCallback(pushCbOptions)); +} +const listenerMap = new Map void>>(); +const pushListenerOptions: PushListenerOptions = { + listener: (eventName: string, data: any) => { + listenerMap.get(eventName)?.forEach(item => { + item(data); + }); + }, +}; +const pushListener = new PushListener(pushListenerOptions); +@UTSJS.keepAlive +export function addPushListener(eventName: string, listener: (res: any) => void): void { + if (listenerMap.size === 0) { + Push.addPushListener(pushListener); + } + const listeners: Array<(res: any) => void> = [listener]; + listenerMap.get(eventName)?.forEach(item => { + listeners.push(item); + }); + listenerMap.set(eventName, listeners); +} +export function removePushListener(eventName: string, listener?: (res: any) => void): void { + listenerMap.delete(eventName); + if (listenerMap.size === 0) { + Push.removePushListener(pushListener); + } +} diff --git a/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback-options.uts b/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback-options.uts new file mode 100644 index 0000000..771df06 --- /dev/null +++ b/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback-options.uts @@ -0,0 +1,5 @@ +export type PushCallbackOptions = { + apiName: string; + success: (res?: any) => void; + fail: (errCode: number, errMsg: string) => void; +}; diff --git a/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback.uts b/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback.uts new file mode 100644 index 0000000..4b79987 --- /dev/null +++ b/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-callback.uts @@ -0,0 +1,25 @@ +import TIMPushCallback from 'com.tencent.qcloud.tim.push.TIMPushCallback'; +import { PushCallbackOptions } from './push-callback-options.uts'; +const LOG_PREFIX: string = 'Push |'; +export default class PushCallback implements TIMPushCallback { + private apiName: string; + private success: (data?: any) => void; + private fail: (errCode: number, errMsg: string) => void; + constructor(options: PushCallbackOptions) { + this.apiName = options.apiName; + this.success = options.success; + this.fail = options.fail; + } + override onSuccess(data?: any) { + console.log(`${LOG_PREFIX} ${this.apiName} ok, data:`, data); + if (data == null) { + this.success?.(''); + } + else { + this.success?.(data); + } + } + override onError(errCode: Int, errMsg: string, data?: any) { + this.fail?.(errCode as number, errMsg); + } +} diff --git a/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener-options.uts b/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener-options.uts new file mode 100644 index 0000000..1939b1a --- /dev/null +++ b/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener-options.uts @@ -0,0 +1,3 @@ +export type PushListenerOptions = { + listener: (eventType: string, data: any) => void; +}; diff --git a/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener.uts b/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener.uts new file mode 100644 index 0000000..2d6d1a5 --- /dev/null +++ b/unpackage/dist/build/.uvue/app-android/uni_modules/TencentCloud-Push/utssdk/app-android/push-listener.uts @@ -0,0 +1,20 @@ +import TIMPushListener from 'com.tencent.qcloud.tim.push.TIMPushListener'; +import TIMPushMessage from 'com.tencent.qcloud.tim.push.TIMPushMessage'; +import { PushListenerOptions } from './push-listener-options.uts'; +const LOG_PREFIX: string = 'Push | PushListener'; +export default class PushListener implements TIMPushListener { + private listener: (eventType: string, data: any) => void; + constructor(options: PushListenerOptions) { + this.listener = options.listener; + console.log(`${LOG_PREFIX} ok`); + } + override onRecvPushMessage(message: TIMPushMessage) { + this.listener('message_received', { data: message }); + } + override onRevokePushMessage(messageID: string) { + this.listener('message_revoked', { data: messageID }); + } + override onNotificationClicked(ext: string) { + this.listener('notification_clicked', { data: ext }); + } +} diff --git a/unpackage/dist/build/.uvue/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/index.uts b/unpackage/dist/build/.uvue/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/index.uts new file mode 100644 index 0000000..16a5543 --- /dev/null +++ b/unpackage/dist/build/.uvue/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/index.uts @@ -0,0 +1,105 @@ +import { TIMPushManager } from "TIMPush"; +import { NSObject } from "DCloudUTSFoundation"; +import PushListener from './push-listener.uts'; +import { PushListenerOptions } from './push-listener-options.uts'; +const LOG_PREFIX = 'Push |'; +export class EVENT { + static MESSAGE_RECEIVED: string = 'message_received'; + static MESSAGE_REVOKED: string = 'message_revoked'; + static NOTIFICATION_CLICKED: string = 'notification_clicked'; +} +function setRunningPlatform(): void { + console.log(LOG_PREFIX, 'setRunningPlatform'); + const param = new NSString("{\"runningPlatform\":2}"); + TIMPushManager.callExperimentalAPI('setPushConfig', param = param, succ = (ext?: NSObject): void => { + let platform: string = ext as string; + console.log(LOG_PREFIX, 'setRunningPlatform ok. platform:', platform); + }, fail = (code?: Int32, desc?: String): void => { + console.log(LOG_PREFIX, `setRunningPlatform fail. code: ${code}, desc: ${desc}`); + }); +} +let disableNotification = false; +export function disablePostNotificationInForeground(_disable: boolean): void { + console.log(LOG_PREFIX, 'disablePostNotificationInForeground', _disable); + disableNotification = _disable; + TIMPushManager.disablePostNotificationInForeground(disable = disableNotification); +} +export function registerPush(SDKAppID: number, appKey: string, onSuccess: (data: string) => void, onError?: (errCode: number, errMsg: string) => void): void { + if (SDKAppID == 0) { + onError?.(9010001, 'Invalid SDKAppID'); + } + else if (appKey == '') { + onError?.(9010002, 'Invalid appKey'); + } + setRunningPlatform(); + TIMPushManager.registerPush(SDKAppID.toInt32(), appKey = appKey, succ = (deviceToken?: Data): void => { + TIMPushManager.disablePostNotificationInForeground(disable = disableNotification); + console.log('devicetoken ->', deviceToken, deviceToken?.count); + onSuccess(''); + }, fail = (code?: Int32, desc?: String): void => { + onError?.(code as number, desc as string); + }); +} +export function unRegisterPush(onSuccess: () => void, onError: (errCode: number, errMsg: string) => void): void { + TIMPushManager.unRegisterPush((): void => { + onSuccess(); + }, fail = (code?: Int32, desc?: String): void => { + onError(code as number, desc as string); + }); +} +export function setRegistrationID(registrationID: string, onSuccess: () => void): void { + console.log(LOG_PREFIX, 'setRegistrationID', `registrationID:${registrationID}`); + TIMPushManager.setRegistrationID(registrationID, callback = (): void => { + console.log(LOG_PREFIX, 'setRegistrationID ok'); + onSuccess(); + }); +} +export function getRegistrationID(onSuccess: (registrationID: string) => void): void { + TIMPushManager.getRegistrationID((value?: string): void => { + // 这里需要转一下,否则会有问题 + let ret: string = value as string; + onSuccess(ret); + }); +} +export function createNotificationChannel(options: any, onSuccess: (data: string) => void): void { + // 空实现 +} +// 注意!!!这里的 extInfo 不能写成 ext,否则会跟内部的 ext?:NSObject 有冲突;也不能写成 extension,否则会导致编译错误 +export function getNotificationExtInfo(onSuccess: (extInfo: string) => void): void { + console.log(LOG_PREFIX, 'getNotificationExtInfo'); + TIMPushManager.callExperimentalAPI('getNotificationExtInfo', param = {}, succ = (ext?: NSObject): void => { + let str: string = ext as string; + console.log(LOG_PREFIX, 'getNotificationExtInfo ok. ext:', str); + onSuccess(str); + }, fail = (code?: Int32, desc?: String): void => { + // 空实现 + }); +} +const listenerMap = new Map void>>(); +const pushListenerOptions: PushListenerOptions = { + listener: (eventName: string, data: any) => { + listenerMap.get(eventName)?.forEach(item => { + item(data); + }); + }, +}; +const pushListener = new PushListener(pushListenerOptions); +@UTSJS.keepAlive +export function addPushListener(eventName: string, _listener: (res: any) => void): void { + console.log(LOG_PREFIX, 'addPushListener', eventName); + if (listenerMap.size === 0) { + TIMPushManager.addPushListener(listener = pushListener); + } + const listeners: Array<(res: any) => void> = [_listener]; + listenerMap.get(eventName)?.forEach(item => { + listeners.push(item); + }); + listenerMap.set(eventName, listeners); +} +export function removePushListener(eventName: string, _listener?: (res: any) => void): void { + console.log(LOG_PREFIX, 'removePushListener', eventName); + listenerMap.delete(eventName); + if (listenerMap.size === 0) { + TIMPushManager.removePushListener(listener = pushListener); + } +} diff --git a/unpackage/dist/build/.uvue/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener-options.uts b/unpackage/dist/build/.uvue/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener-options.uts new file mode 100644 index 0000000..1939b1a --- /dev/null +++ b/unpackage/dist/build/.uvue/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener-options.uts @@ -0,0 +1,3 @@ +export type PushListenerOptions = { + listener: (eventType: string, data: any) => void; +}; diff --git a/unpackage/dist/build/.uvue/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener.uts b/unpackage/dist/build/.uvue/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener.uts new file mode 100644 index 0000000..c6ae65f --- /dev/null +++ b/unpackage/dist/build/.uvue/app-ios/uni_modules/TencentCloud-Push/utssdk/app-ios/push-listener.uts @@ -0,0 +1,19 @@ +import { TIMPushListener, TIMPushMessage } from "TIMPush"; +import { PushListenerOptions } from './push-listener-options.uts'; +const LOG_PREFIX: string = 'Push | PushListener'; +export default class PushListener implements TIMPushListener { + private listener: (eventType: string, data: any) => void; + constructor(options: PushListenerOptions) { + this.listener = options.listener; + console.log(`${LOG_PREFIX} ok`); + } + onRecvPushMessage(message: TIMPushMessage) { + this.listener('message_received', { data: message }); + } + onRevokePushMessage(messageID: string) { + this.listener('message_revoked', { data: messageID }); + } + onNotificationClicked(ext: string) { + this.listener('notification_clicked', { data: ext }); + } +} diff --git a/unpackage/dist/build/app-plus/__uniappchooselocation.js b/unpackage/dist/build/app-plus/__uniappchooselocation.js new file mode 100644 index 0000000..3ed09dd --- /dev/null +++ b/unpackage/dist/build/app-plus/__uniappchooselocation.js @@ -0,0 +1 @@ +!function(e){var t={};function A(a){if(t[a])return t[a].exports;var i=t[a]={i:a,l:!1,exports:{}};return e[a].call(i.exports,i,i.exports,A),i.l=!0,i.exports}A.m=e,A.c=t,A.d=function(e,t,a){A.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},A.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},A.t=function(e,t){if(1&t&&(e=A(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(A.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)A.d(a,i,function(t){return e[t]}.bind(null,i));return a},A.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return A.d(t,"a",t),t},A.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},A.p="",A(A.s=41)}([function(e,t){e.exports={}},function(e,t,A){"use strict";function a(e,t,A,a,i,n,o,s,r,c){var l,u="function"==typeof e?e.options:e;if(r){u.components||(u.components={});var d=Object.prototype.hasOwnProperty;for(var h in r)d.call(r,h)&&!d.call(u.components,h)&&(u.components[h]=r[h])}if(c&&((c.beforeCreate||(c.beforeCreate=[])).unshift((function(){this[c.__module]=this})),(u.mixins||(u.mixins=[])).push(c)),t&&(u.render=t,u.staticRenderFns=A,u._compiled=!0),a&&(u.functional=!0),n&&(u._scopeId="data-v-"+n),o?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},u._ssrRegister=l):i&&(l=s?function(){i.call(this,this.$root.$options.shadowRoot)}:i),l)if(u.functional){u._injectStyles=l;var f=u.render;u.render=function(e,t){return l.call(t),f(e,t)}}else{var g=u.beforeCreate;u.beforeCreate=g?[].concat(g,l):[l]}return{exports:e,options:u}}A.d(t,"a",(function(){return a}))},function(e,t,A){"use strict";var a;Object.defineProperty(t,"__esModule",{value:!0}),t.weexPlus=t.default=void 0,a="function"==typeof getUni?getUni:function(){var e=function(e){return"function"==typeof e},t=function(e){return e.then((function(e){return[null,e]})).catch((function(e){return[e]}))},A=/^\$|^on|^create|Sync$|Manager$|^pause/,a=["os","getCurrentSubNVue","getSubNVueById","stopRecord","stopVoice","stopBackgroundAudio","stopPullDownRefresh","hideKeyboard","hideToast","hideLoading","showNavigationBarLoading","hideNavigationBarLoading","canIUse","navigateBack","closeSocket","pageScrollTo","drawCanvas"],n=function(e){return(!A.test(e)||"createBLEConnection"===e)&&!~a.indexOf(e)},o=function(A){return function(){for(var a=arguments.length,i=Array(a>1?a-1:0),n=1;n0&&void 0!==arguments[0]?arguments[0]:{};return e(o.success)||e(o.fail)||e(o.complete)?A.apply(void 0,[o].concat(i)):t(new Promise((function(e,t){A.apply(void 0,[Object.assign({},o,{success:e,fail:t})].concat(i)),Promise.prototype.finally=function(e){var t=this.constructor;return this.then((function(A){return t.resolve(e()).then((function(){return A}))}),(function(A){return t.resolve(e()).then((function(){throw A}))}))}})))}},s=[],r=void 0;function c(e){s.forEach((function(t){return t({origin:r,data:e})}))}var l=i.webview.currentWebview().id,u=new BroadcastChannel("UNI-APP-SUBNVUE");function d(e){var t=i.webview.getWebviewById(e);return t&&!t.$processed&&function(e){e.$processed=!0;var t=i.webview.currentWebview().id===e.id,A="uniNView"===e.__uniapp_origin_type&&e.__uniapp_origin_id,a=e.id;if(e.postMessage=function(e){A?u.postMessage({data:e,to:t?A:a}):w({type:"UniAppSubNVue",data:e})},e.onMessage=function(e){s.push(e)},e.__uniapp_mask_id){r=e.__uniapp_host;var n=e.__uniapp_mask,o=i.webview.getWebviewById(e.__uniapp_mask_id);o=o.parent()||o;var c=e.show,l=e.hide,d=e.close,h=function(){o.setStyle({mask:n})},f=function(){o.setStyle({mask:"none"})};e.show=function(){h();for(var t=arguments.length,A=Array(t),a=0;a1&&void 0!==arguments[1]?arguments[1]:"GET",A=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"application/x-www-form-urlencoded";return"object"===(void 0===e?"undefined":j(e))?"POST"===t.toUpperCase()&&"application/json"===A.toLowerCase()?JSON.stringify(e):Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&"):e},G=weex.requireModule("plusstorage"),T=weex.requireModule("clipboard"),Q=function(){if("function"==typeof getUniEmitter)return getUniEmitter;var e={$on:function(){console.warn("uni.$on failed")},$off:function(){console.warn("uni.$off failed")},$once:function(){console.warn("uni.$once failed")},$emit:function(){console.warn("uni.$emit failed")}};return function(){return e}}();function U(e,t,A){return e[t].apply(e,A)}var F=Object.freeze({loadFontFace:function(t){var A=t.family,a=t.source,i=(t.desc,t.success),n=(t.fail,t.complete);E.addRule("fontFace",{fontFamily:A,src:a.replace(/"/g,"'")});var o={errMsg:"loadFontFace:ok",status:"loaded"};e(i)&&i(o),e(n)&&n(o)},ready:N,request:function(t){var A=t.url,a=t.data,i=t.header,n=t.method,o=void 0===n?"GET":n,s=t.dataType,r=void 0===s?"json":s,c=(t.responseType,t.success),l=t.fail,u=t.complete,d=!1,h=!1,f={};if(i)for(var g in i)h||"content-type"!==g.toLowerCase()?f[g]=i[g]:(h=!0,f["Content-Type"]=i[g]);return"GET"===o&&a&&(A=A+(~A.indexOf("?")?"&"===A.substr(-1)||"?"===A.substr(-1)?"":"&":"?")+P(a)),O.fetch({url:A,method:o,headers:f,type:"json"===r?"json":"text",body:"GET"!==o?P(a,o,f["Content-Type"]):""},(function(t){var A=t.status,a=(t.ok,t.statusText,t.data),i=t.headers,n={};!A||-1===A||d?(n.errMsg="request:fail",e(l)&&l(n)):(n.data=a,n.statusCode=A,n.header=i,e(c)&&c(n)),e(u)&&u(n)})),{abort:function(){d=!0}}},getStorage:function(t){var A=t.key,a=(t.data,t.success),i=t.fail,n=t.complete;G.getItem(A+"__TYPE",(function(t){if("success"===t.result){var o=t.data;G.getItem(A,(function(t){if("success"===t.result){var A=t.data;o&&A?("String"!==o&&(A=JSON.parse(A)),e(a)&&a({errMsg:"getStorage:ok",data:A})):(t.errMsg="setStorage:fail",e(i)&&i(t))}else t.errMsg="setStorage:fail",e(i)&&i(t);e(n)&&n(t)}))}else t.errMsg="setStorage:fail",e(i)&&i(t),e(n)&&n(t)}))},setStorage:function(t){var A=t.key,a=t.data,i=t.success,n=t.fail,o=t.complete,s="String";"object"===(void 0===a?"undefined":j(a))&&(s="Object",a=JSON.stringify(a)),G.setItem(A,a,(function(t){"success"===t.result?G.setItem(A+"__TYPE",s,(function(t){"success"===t.result?e(i)&&i({errMsg:"setStorage:ok"}):(t.errMsg="setStorage:fail",e(n)&&n(t))})):(t.errMsg="setStorage:fail",e(n)&&n(t)),e(o)&&o(t)}))},removeStorage:function(t){var A=t.key,a=(t.data,t.success),i=t.fail,n=t.complete;G.removeItem(A,(function(t){"success"===t.result?e(a)&&a({errMsg:"removeStorage:ok"}):(t.errMsg="removeStorage:fail",e(i)&&i(t)),e(n)&&n(t)})),G.removeItem(A+"__TYPE")},clearStorage:function(e){e.key,e.data,e.success,e.fail,e.complete},getClipboardData:function(t){var A=t.success,a=(t.fail,t.complete);T.getString((function(t){var i={errMsg:"getClipboardData:ok",data:t.data};e(A)&&A(i),e(a)&&a(i)}))},setClipboardData:function(t){var A=t.data,a=t.success,i=(t.fail,t.complete),n={errMsg:"setClipboardData:ok"};T.setString(A),e(a)&&a(n),e(i)&&i(n)},onSubNVueMessage:c,getSubNVueById:d,getCurrentSubNVue:function(){return d(i.webview.currentWebview().id)},$on:function(){return U(Q(),"$on",[].concat(Array.prototype.slice.call(arguments)))},$off:function(){return U(Q(),"$off",[].concat(Array.prototype.slice.call(arguments)))},$once:function(){return U(Q(),"$once",[].concat(Array.prototype.slice.call(arguments)))},$emit:function(){return U(Q(),"$emit",[].concat(Array.prototype.slice.call(arguments)))}}),R={os:{nvue:!0}},V={};return"undefined"!=typeof Proxy?V=new Proxy({},{get:function(e,t){if("os"===t)return{nvue:!0};if("postMessage"===t)return w;if("requireNativePlugin"===t)return I;if("onNavigationBarButtonTap"===t)return S;if("onNavigationBarSearchInputChanged"===t)return C;if("onNavigationBarSearchInputConfirmed"===t)return D;if("onNavigationBarSearchInputClicked"===t)return L;var A=F[t];return A||(A=b(t)),n(t)?o(A):A}}):(Object.keys(R).forEach((function(e){V[e]=R[e]})),V.postMessage=w,V.requireNativePlugin=I,V.onNavigationBarButtonTap=S,V.onNavigationBarSearchInputChanged=C,V.onNavigationBarSearchInputConfirmed=D,V.onNavigationBarSearchInputClicked=L,Object.keys({uploadFile:!0,downloadFile:!0,chooseImage:!0,previewImage:!0,getImageInfo:!0,saveImageToPhotosAlbum:!0,chooseVideo:!0,saveVideoToPhotosAlbum:!0,saveFile:!0,getSavedFileList:!0,getSavedFileInfo:!0,removeSavedFile:!0,openDocument:!0,setStorage:!0,getStorage:!0,getStorageInfo:!0,removeStorage:!0,clearStorage:!0,getLocation:!0,chooseLocation:!0,openLocation:!0,getSystemInfo:!0,getNetworkType:!0,makePhoneCall:!0,scanCode:!0,setScreenBrightness:!0,getScreenBrightness:!0,setKeepScreenOn:!0,vibrateLong:!0,vibrateShort:!0,addPhoneContact:!0,showToast:!0,showLoading:!0,hideToast:!0,hideLoading:!0,showModal:!0,showActionSheet:!0,setNavigationBarTitle:!0,setNavigationBarColor:!0,navigateTo:!0,redirectTo:!0,reLaunch:!0,switchTab:!0,navigateBack:!0,getProvider:!0,login:!0,getUserInfo:!0,share:!0,requestPayment:!0,subscribePush:!0,unsubscribePush:!0,onPush:!0,offPush:!0}).forEach((function(e){var t=F[e];t||(t=b(e)),n(e)?V[e]=o(t):V[e]=t}))),V};var i=new WeexPlus(weex);t.weexPlus=i;var n=a(weex,i,BroadcastChannel);t.default=n},function(e,t,A){Vue.prototype.__$appStyle__={},Vue.prototype.__merge_style&&Vue.prototype.__merge_style(A(4).default,Vue.prototype.__$appStyle__)},function(e,t,A){"use strict";A.r(t);var a=A(0),i=A.n(a);for(var n in a)"default"!==n&&function(e){A.d(t,e,(function(){return a[e]}))}(n);t.default=i.a},function(e,t,A){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var A={onLoad:function(){this.initMessage()},methods:{initMessage:function(){var t=this,A=e.webview.currentWebview().extras||{},a=A.from,i=(A.callback,A.runtime),n=A.data,o=void 0===n?{}:n,s=A.useGlobalEvent;this.__from=a,this.__runtime=i,this.__page=e.webview.currentWebview().id,this.__useGlobalEvent=s,this.data=JSON.parse(JSON.stringify(o)),e.key.addEventListener("backbutton",(function(){"function"==typeof t.onClose?t.onClose():e.webview.currentWebview().close("auto")}));var r=this,c=function(e){var t=e.data&&e.data.__message;t&&r.__onMessageCallback&&r.__onMessageCallback(t.data)};this.__useGlobalEvent?weex.requireModule("globalEvent").addEventListener("plusMessage",c):new BroadcastChannel(this.__page).onmessage=c},postMessage:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},A=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=JSON.parse(JSON.stringify({__message:{__page:this.__page,data:t,keep:A}})),i=this.__from;if("v8"===this.__runtime)if(this.__useGlobalEvent)e.webview.postMessageToUniNView(a,i);else{var n=new BroadcastChannel(i);n.postMessage(a)}else{var o=e.webview.getWebviewById(i);o&&o.evalJS("__plusMessage&&__plusMessage(".concat(JSON.stringify({data:a}),")"))}},onMessage:function(e){this.__onMessageCallback=e}}};t.default=A}).call(this,A(2).weexPlus)},function(e,t,A){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var A={data:function(){return{locale:"en",fallbackLocale:"en",localization:{en:{done:"OK",cancel:"Cancel"},zh:{done:"完成",cancel:"取消"},"zh-hans":{},"zh-hant":{},messages:{}}}},onLoad:function(){this.initLocale()},created:function(){this.initLocale()},methods:{initLocale:function(){if(!this.__initLocale){this.__initLocale=!0;var t=(e.webview.currentWebview().extras||{}).data||{};if(t.messages&&(this.localization.messages=t.messages),t.locale)this.locale=t.locale.toLowerCase();else{var A=e.os.language.toLowerCase().split("/")[0].replace("_","-").split("-"),a=A[1];a&&(A[1]={chs:"hans",cn:"hans",sg:"hans",cht:"hant",tw:"hant",hk:"hant",mo:"hant"}[a]||a),A.length=A.length>2?2:A.length,this.locale=A.join("-")}}},localize:function(e){var t=this.locale,A=t.split("-")[0],a=this.fallbackLocale,i=this.localization;function n(e){return i[e]||{}}return n("messages")[e]||n(t)[e]||n(A)[e]||n(a)[e]||e}}};t.default=A}).call(this,A(2).weexPlus)},function(e,t,A){"use strict";var a=A(29),i=A(12),n=A(1);var o=Object(n.a)(i.default,a.b,a.c,!1,null,null,"14d2bcf2",!1,a.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(A(36).default,this.options.style):Object.assign(this.options.style,A(36).default)}).call(o),t.default=o.exports},,,,,function(e,t,A){"use strict";var a=A(13),i=A.n(a);t.default=i.a},function(e,t,A){"use strict";(function(e,a){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=o(A(5)),n=o(A(6));function o(e){return e&&e.__esModule?e:{default:e}}function s(e,t){var A=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),A.push.apply(A,a)}return A}function r(e,t,A){return t in e?Object.defineProperty(e,t,{value:A,enumerable:!0,configurable:!0,writable:!0}):e[t]=A,e}weex.requireModule("dom").addRule("fontFace",{fontFamily:"unichooselocation",src:"url('data:font/truetype;charset=utf-8;base64,AAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzI8gE4kAAABfAAAAFZjbWFw4nGd6QAAAegAAAGyZ2x5Zn61L/EAAAOoAAACJGhlYWQXJ/zZAAAA4AAAADZoaGVhB94DhgAAALwAAAAkaG10eBQAAAAAAAHUAAAAFGxvY2EBUAGyAAADnAAAAAxtYXhwARMAZgAAARgAAAAgbmFtZWs+cdAAAAXMAAAC2XBvc3SV1XYLAAAIqAAAAE4AAQAAA4D/gABcBAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAUAAQAAAAEAAFP+qyxfDzz1AAsEAAAAAADaBFxuAAAAANoEXG4AAP+gBAADYAAAAAgAAgAAAAAAAAABAAAABQBaAAQAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQQAAZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA5grsMgOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAFAAAAAwAAACwAAAAEAAABcgABAAAAAABsAAMAAQAAACwAAwAKAAABcgAEAEAAAAAKAAgAAgAC5grmHOZR7DL//wAA5grmHOZR7DL//wAAAAAAAAAAAAEACgAKAAoACgAAAAQAAwACAAEAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAEAAAAAAAAAABAAA5goAAOYKAAAABAAA5hwAAOYcAAAAAwAA5lEAAOZRAAAAAgAA7DIAAOwyAAAAAQAAAAAAAAB+AKAA0gESAAQAAP+gA+ADYAAAAAkAMQBZAAABIx4BMjY0JiIGBSMuASc1NCYiBh0BDgEHIyIGFBY7AR4BFxUUFjI2PQE+ATczMjY0JgE1NCYiBh0BLgEnMzI2NCYrAT4BNxUUFjI2PQEeARcjIgYUFjsBDgECAFABLUQtLUQtAg8iD9OcEhwSnNMPIg4SEg4iD9OcEhwSnNMPIg4SEv5SEhwSga8OPg4SEg4+Dq+BEhwSga8OPg4SEg4+Dq8BgCItLUQtLQKc0w8iDhISDiIP05wSHBKc0w8iDhISDiIP05wSHBL+gj4OEhIOPg6vgRIcEoGvDj4OEhIOPg6vgRIcEoGvAAEAAAAAA4ECgQAQAAABPgEeAQcBDgEvASY0NhYfAQM2DCIbAgz+TA0kDfcMGiIN1wJyDQIZIg3+IQ4BDf4NIhoBDd0AAQAAAAADAgKCAB0AAAE3PgEuAgYPAScmIgYUHwEHBhQWMj8BFxYyNjQnAjy4CAYGEBcWCLe3DSIaDLi4DBkjDbe3DSMZDAGAtwgWFxAGBgi4uAwaIg23tw0jGQy4uAwZIw0AAAIAAP/fA6EDHgAVACYAACUnPgE3LgEnDgEHHgEXMjY3FxYyNjQlBiIuAjQ+AjIeAhQOAQOX2CcsAQTCkpLCAwPCkj5uLdkJGRH+ijV0Z08rK09ndGdPLCxPE9MtckGSwgQEwpKSwgMoJdQIEhi3FixOaHNnTywsT2dzaE4AAAAAAAASAN4AAQAAAAAAAAAVAAAAAQAAAAAAAQARABUAAQAAAAAAAgAHACYAAQAAAAAAAwARAC0AAQAAAAAABAARAD4AAQAAAAAABQALAE8AAQAAAAAABgARAFoAAQAAAAAACgArAGsAAQAAAAAACwATAJYAAwABBAkAAAAqAKkAAwABBAkAAQAiANMAAwABBAkAAgAOAPUAAwABBAkAAwAiAQMAAwABBAkABAAiASUAAwABBAkABQAWAUcAAwABBAkABgAiAV0AAwABBAkACgBWAX8AAwABBAkACwAmAdUKQ3JlYXRlZCBieSBpY29uZm9udAp1bmljaG9vc2Vsb2NhdGlvblJlZ3VsYXJ1bmljaG9vc2Vsb2NhdGlvbnVuaWNob29zZWxvY2F0aW9uVmVyc2lvbiAxLjB1bmljaG9vc2Vsb2NhdGlvbkdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAAoAQwByAGUAYQB0AGUAZAAgAGIAeQAgAGkAYwBvAG4AZgBvAG4AdAAKAHUAbgBpAGMAaABvAG8AcwBlAGwAbwBjAGEAdABpAG8AbgBSAGUAZwB1AGwAYQByAHUAbgBpAGMAaABvAG8AcwBlAGwAbwBjAGEAdABpAG8AbgB1AG4AaQBjAGgAbwBvAHMAZQBsAG8AYwBhAHQAaQBvAG4AVgBlAHIAcwBpAG8AbgAgADEALgAwAHUAbgBpAGMAaABvAG8AcwBlAGwAbwBjAGEAdABpAG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAQIBAwEEAQUBBgAKbXlsb2NhdGlvbgZ4dWFuemUFY2xvc2UGc291c3VvAAAAAA==')"});var c=weex.requireModule("mapSearch"),l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAACcCAMAAAC3Fl5oAAAB3VBMVEVMaXH/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/EhL/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/Dw//AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/GRn/NTX/Dw//Fhb/AAD/AAD/AAD/GRn/GRn/Y2P/AAD/AAD/ExP/Ghr/AAD/AAD/MzP/GRn/AAD/Hh7/AAD/RUX/AAD/AAD/AAD/AAD/AAD/AAD/Dg7/AAD/HR3/Dw//FRX/SUn/AAD/////kJD/DQ3/Zmb/+/v/wMD/mJj/6en/vb3/1NT//Pz/ODj/+fn/3Nz/nJz/j4//9/f/7e3/9vb/7Oz/2Nj/x8f/Ozv/+Pj/3d3/nZ3/2dn//f3/6Oj/2tr/v7//09P/vr7/mZn/l5cdSvP3AAAAe3RSTlMAAhLiZgTb/vztB/JMRhlp6lQW86g8mQ4KFPs3UCH5U8huwlesWtTYGI7RsdVeJGfTW5rxnutLsvXWF8vQNdo6qQbuz7D4hgVIx2xtw8GC1TtZaIw0i84P98tU0/fsj7PKaAgiZZxeVfo8Z52eg1P0nESrENnjXVPUgw/uuSmDAAADsUlEQVR42u3aZ3cTRxgF4GtbYleSLdnGcsENG2ODjbExEHrvhAQCIb1Bem+QdkeuuFMNBBJIfmuOckzZI8/srHYmH3Lm+QNXK632LTvQ03Tu/IWeU/tTGTKT2n+q58L5c00wpXJd47DHEt5w47pKxLbhdLdPKb/7dBYxVLxw1GcI/2h1BcpzKNFHLX2JQ4gumaiitqpEEhEdOMJI9h5AFC3feYzI+7IF2tpSLEOqDXpObPRYFm/jCWho/4Ble7MdoT7fzhhq9yHEz28wltU1UPrJZ0wd66HwicfYvEFIfePTAP8tSLTupBHvtGJFH9bSkNrNWEHzERrT34xSH9Ogr1CijkbVAUH1KRqVqkdQAw07iIAaGlcTqI+/0LjeJJ5J0IIEnkpXMdzs4sTtW9dnZq7fuj2xOMtwVWk88RHDjBYejYvnjD8qjOpfQsUqhvj7oSjxcJIhVj3pyKqpNjYvVjQ/RrXq5YABKi3MCYm5BSrtWO5v11DlmlC4RpU1WRS9SJU7QukOVbpQ9JLu549+Dd0AUOlTbkGEuk85vxLAK5QbuytC3R2j3HoAjZSbFxrmKTcCoJdSk0LLJKV6gSaPMqNTQsvUKGW8JrxKqUWhaZFSeWyh1LTQNE2pHF6mzOy40DQ+S5mLimJcENoKlOnBWsr8KbRNUGYt5LXgd6HtD3lNQIoyN4S2G5RJIUOZm0LbTcqsBqVmhLYZSlkPsP4VWf+Rrd+m1v9o9h8Vv5p42C1R5qL1x7WRglOgVN52yfwNOBu76P+lLPoYidu23KPciIHGa07ZeIW1jvcNtI7q5vexCPGYCmf+m/Y9a3sAwQ5bI9T7ukPgPcn9GToEao+xk1OixJT+GIsvNAbx6eAgPq0xiF+KtkpYKhRXCQ8eFFcJhSWGu3rZ8jJkCM8kz9K4TUnrC6mAgzTsB9tLwQ2W15qfosQ2GrQNpZr7aczbzVjBZsvLcaC1g0bsbIVEnU8DOr6H1KDH2LwtUBi0/JII6Dxm9zUXkH+XMWzfh1Dte1i2Pe3QkC77Zel7aehpO8wyHG6Dtt0NjKxhN6I4uSli/TqJiJJDUQ4NDCURXTrXRy1XcumyD24M+AzhD1RXIIZsl/LoyZmurJHDM7s8lvB2FQ/PmPJ6PseAXP5HGMYAAC7ABbgAF+ACXIALcAEuwAW4ABfgAlyAC3ABLsAFuID/d8Cx4NEt8/byOf0wLnis8zjMq9/Kp7bWw4JOj8u8TlhRl+G/Mp2wpOX48GffvvZ1CyL4B53LAS6zb08EAAAAAElFTkSuQmCC";var u={mixins:[i.default,n.default],data:function(){return{positionIcon:l,mapScale:16,userKeyword:"",showLocation:!0,latitude:39.908692,longitude:116.397477,nearList:[],nearSelectedIndex:-1,nearLoading:!1,nearLoadingEnd:!1,noNearData:!1,isUserLocation:!1,statusBarHeight:20,mapHeight:250,markers:[{id:"location",latitude:39.908692,longitude:116.397477,zIndex:"1",iconPath:l,width:26,height:36}],showSearch:!1,searchList:[],searchSelectedIndex:-1,searchLoading:!1,searchEnd:!1,noSearchData:!1,localization:{en:{search_tips:"Search for a place",no_found:"No results found",nearby:"Nearby",more:"More"},zh:{search_tips:"搜索地点",no_found:"对不起,没有搜索到相关数据",nearby:"附近",more:"更多"}},searchNearFlag:!0,searchMethod:"poiSearchNearBy"}},computed:{disableOK:function(){return this.nearSelectedIndex<0&&this.searchSelectedIndex<0},searchMethods:function(){return[{title:this.localize("nearby"),method:"poiSearchNearBy"},{title:this.localize("more"),method:"poiKeywordsSearch"}]}},filters:{distance:function(e){return e>100?"".concat(e>1e3?(e/1e3).toFixed(1)+"k":e.toFixed(0),"m | "):e>0?"100m内 | ":""}},watch:{searchMethod:function(){this._searchPageIndex=1,this.searchEnd=!1,this.searchList=[],this._searchKeyword&&this.search()}},onLoad:function(){this.statusBarHeight=e.navigator.getStatusbarHeight(),this.mapHeight=e.screen.resolutionHeight/2;var t=this.data;this.userKeyword=t.keyword||"",this._searchInputTimer=null,this._searchPageIndex=1,this._searchKeyword="",this._nearPageIndex=1,this._hasUserLocation=!1,this._userLatitude=0,this._userLongitude=0},onReady:function(){this.mapContext=this.$refs.map1,this.data.latitude&&this.data.longitude?(this._hasUserLocation=!0,this.moveToCenter({latitude:this.data.latitude,longitude:this.data.longitude})):this.getUserLocation()},onUnload:function(){this.clearSearchTimer()},methods:{cancelClick:function(){this.postMessage({event:"cancel"})},doneClick:function(){if(!this.disableOK){var e=this.showSearch&&this.searchSelectedIndex>=0?this.searchList[this.searchSelectedIndex]:this.nearList[this.nearSelectedIndex],t={name:e.name,address:e.address,latitude:e.location.latitude,longitude:e.location.longitude};this.postMessage({event:"selected",detail:t})}},getUserLocation:function(){var t=this;e.geolocation.getCurrentPosition((function(e){var A=e.coordsType,a=e.coords;false?t.wgs84togcjo2(a,(function(e){t.getUserLocationSuccess(e)})):t.getUserLocationSuccess(a)}),(function(e){t._hasUserLocation=!0,a("log","Gelocation Error: code - "+e.code+"; message - "+e.message," at template/__uniappchooselocation.nvue:292")}),{geocode:!1,coordsType:"gcj02"})},getUserLocationSuccess:function(e){this._userLatitude=e.latitude,this._userLongitude=e.longitude,this._hasUserLocation=!0,this.moveToCenter({latitude:e.latitude,longitude:e.longitude})},searchclick:function(t){this.showSearch=t,!1===t&&e.key.hideSoftKeybord()},showSearchView:function(){this.searchList=[],this.showSearch=!0},hideSearchView:function(){this.showSearch=!1,e.key.hideSoftKeybord(),this.noSearchData=!1,this.searchSelectedIndex=-1,this._searchKeyword=""},onregionchange:function(e){var t=this,A=e.detail,a=A.type||e.type;"drag"===(A.causedBy||e.causedBy)&&"end"===a&&this.mapContext.getCenterLocation((function(e){t.searchNearFlag?t.moveToCenter({latitude:e.latitude,longitude:e.longitude}):t.searchNearFlag=!t.searchNearFlag}))},onItemClick:function(e,t){this.searchNearFlag=!1,t.stopPropagation&&t.stopPropagation(),this.nearSelectedIndex!==e&&(this.nearSelectedIndex=e),this.moveToLocation(this.nearList[e]&&this.nearList[e].location)},moveToCenter:function(e){this.latitude===e.latitude&&this.longitude===e.longitude||(this.latitude=e.latitude,this.longitude=e.longitude,this.updateCenter(e),this.moveToLocation(e),this.isUserLocation=this._userLatitude===e.latitude&&this._userLongitude===e.longitude)},updateCenter:function(e){var t=this;this.nearSelectedIndex=-1,this.nearList=[],this._hasUserLocation&&(this._nearPageIndex=1,this.nearLoadingEnd=!1,this.reverseGeocode(e),this.searchNearByPoint(e),this.onItemClick(0,{stopPropagation:function(){t.searchNearFlag=!0}}),this.$refs.nearListLoadmore.resetLoadmore())},searchNear:function(){this.nearLoadingEnd||this.searchNearByPoint({latitude:this.latitude,longitude:this.longitude})},searchNearByPoint:function(e){var t=this;this.noNearData=!1,this.nearLoading=!0,c.poiSearchNearBy({point:{latitude:e.latitude,longitude:e.longitude},key:this.userKeyword,sortrule:1,index:this._nearPageIndex,radius:1e3},(function(e){t.nearLoading=!1,t._nearPageIndex=e.pageIndex+1,t.nearLoadingEnd=e.pageIndex===e.pageNumber,e.poiList&&e.poiList.length?(t.fixPois(e.poiList),t.nearList=t.nearList.concat(e.poiList),t.fixNearList()):t.noNearData=0===t.nearList.length}))},moveToLocation:function(e){e&&this.mapContext.moveToLocation(function(e){for(var t=1;t=2&&"地图位置"===e[0].name){var t=this.getAddressStart(e[1]),A=e[0].address;A.startsWith(t)&&(e[0].name=A.substring(t.length))}},onsearchinput:function(e){var t=this,A=e.detail.value.replace(/^\s+|\s+$/g,"");this.clearSearchTimer(),this._searchInputTimer=setTimeout((function(){clearTimeout(t._searchInputTimer),t._searchPageIndex=1,t.searchEnd=!1,t._searchKeyword=A,t.searchList=[],t.search()}),300)},clearSearchTimer:function(){this._searchInputTimer&&clearTimeout(this._searchInputTimer)},search:function(){var e=this;0===this._searchKeyword.length||this._searchEnd||this.searchLoading||(this.searchLoading=!0,this.noSearchData=!1,c[this.searchMethod]({point:{latitude:this.latitude,longitude:this.longitude},key:this._searchKeyword,sortrule:1,index:this._searchPageIndex,radius:5e4},(function(t){e.searchLoading=!1,e._searchPageIndex=t.pageIndex+1,e.searchEnd=t.pageIndex===t.pageNumber,t.poiList&&t.poiList.length?(e.fixPois(t.poiList),e.searchList=e.searchList.concat(t.poiList)):e.noSearchData=0===e.searchList.length})))},onSearchListTouchStart:function(){e.key.hideSoftKeybord()},onSearchItemClick:function(e,t){t.stopPropagation(),this.searchSelectedIndex!==e&&(this.searchSelectedIndex=e),this.moveToLocation(this.searchList[e]&&this.searchList[e].location)},getAddressStart:function(e){var t=e.addressOrigin||e.address;return e.province+(e.province===e.city?"":e.city)+(/^\d+$/.test(e.district)?"":t.startsWith(e.district)?"":e.district)},fixPois:function(e){for(var t=0;t1?t-1:0),a=1;a1){var r=o.pop();s=o.join("---COMMA---"),0===r.indexOf(" at ")?s+=r:s+="---COMMA---"+r}else s=o[0];console[n](s)}},function(e,t,A){"use strict";A.r(t);var a=A(14),i=A.n(a);for(var n in a)"default"!==n&&function(e){A.d(t,e,(function(){return a[e]}))}(n);t.default=i.a},,,,,function(e,t,A){"use strict";A.r(t);A(3);var a=A(7);a.default.mpType="page",a.default.route="template/__uniappchooselocation",a.default.el="#root",new Vue(a.default)}]); \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/__uniapperror.png b/unpackage/dist/build/app-plus/__uniapperror.png new file mode 100644 index 0000000..4743b25 Binary files /dev/null and b/unpackage/dist/build/app-plus/__uniapperror.png differ diff --git a/unpackage/dist/build/app-plus/__uniappes6.js b/unpackage/dist/build/app-plus/__uniappes6.js new file mode 100644 index 0000000..d4018e8 --- /dev/null +++ b/unpackage/dist/build/app-plus/__uniappes6.js @@ -0,0 +1 @@ +!function(t){"use strict";!function(t){var r={};function n(e){if(r[e])return r[e].exports;var o=r[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=r,n.d=function(t,r,e){n.o(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:e})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,r){if(1&r&&(t=n(t)),8&r)return t;if(4&r&&"object"==typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(n.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:t}),2&r&&"string"!=typeof t)for(var o in t)n.d(e,o,function(r){return t[r]}.bind(null,o));return e},n.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(r,"a",r),r},n.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},n.p="",n(n.s=0)}([function(t,r,n){n(1),n(54),n(61),n(66),n(68),n(69),n(70),n(71),n(73),n(74),n(76),n(84),n(85),n(86),n(95),n(96),n(98),n(99),n(100),n(102),n(103),n(104),n(105),n(106),n(107),n(109),n(110),n(111),n(112),n(121),n(124),n(125),n(127),n(129),n(130),n(131),n(132),n(133),n(135),n(137),n(140),n(141),n(143),n(145),n(146),n(147),n(148),n(150),n(151),n(152),n(153),n(154),n(156),n(157),n(159),n(160),n(161),n(162),n(163),n(164),n(165),n(166),n(167),n(168),n(170),n(171),n(172),n(174),n(178),n(179),n(180),n(181),n(187),n(189),n(192),n(193),n(194),n(195),n(196),n(197),n(198),n(199),n(201),n(202),n(203),n(206),n(207),n(208),n(209),n(210),n(211),n(212),n(213),n(214),n(215),n(216),t.exports=n(217)},function(r,n,e){var o=e(2),i=e(6),u=e(45),c=e(14),a=e(46),f=e(39),s=e(47),l=e(48),p=e(51),g=e(49),v=e(52),h=g("isConcatSpreadable"),d=v>=51||!i(function(){var t=[];return t[h]=!1,t.concat()[0]!==t}),x=p("concat"),y=function(r){if(!c(r))return!1;var n=r[h];return n!==t?!!n:u(r)};o({target:"Array",proto:!0,forced:!d||!x},{concat:function(t){var r,n,e,o,i,u=a(this),c=l(u,0),p=0;for(r=-1,e=arguments.length;r9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n=9007199254740991)throw TypeError("Maximum allowed index exceeded");s(c,p++,i)}return c.length=p,c}})},function(r,n,e){var o=e(3),i=e(4).f,u=e(18),c=e(21),a=e(25),f=e(32),s=e(44);r.exports=function(r,n){var e,l,p,g,v,h=r.target,d=r.global,x=r.stat;if(e=d?o:x?o[h]||a(h,{}):(o[h]||{}).prototype)for(l in n){if(g=n[l],p=r.noTargetGet?(v=i(e,l))&&v.value:e[l],!s(d?l:h+(x?".":"#")+l,r.forced)&&p!==t){if(typeof g==typeof p)continue;f(g,p)}(r.sham||p&&p.sham)&&u(g,"sham",!0),c(e,l,g,r)}}},function(t,r){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof global&&global)||Function("return this")()},function(t,r,n){var e=n(5),o=n(7),i=n(8),u=n(9),c=n(13),a=n(15),f=n(16),s=Object.getOwnPropertyDescriptor;r.f=e?s:function(t,r){if(t=u(t),r=c(r,!0),f)try{return s(t,r)}catch(t){}if(a(t,r))return i(!o.f.call(t,r),t[r])}},function(t,r,n){var e=n(6);t.exports=!e(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,r){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,r,n){var e={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!e.call({1:2},1);r.f=i?function(t){var r=o(this,t);return!!r&&r.enumerable}:e},function(t,r){t.exports=function(t,r){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:r}}},function(t,r,n){var e=n(10),o=n(12);t.exports=function(t){return e(o(t))}},function(t,r,n){var e=n(6),o=n(11),i="".split;t.exports=e(function(){return!Object("z").propertyIsEnumerable(0)})?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},function(t,r){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(r,n){r.exports=function(r){if(r==t)throw TypeError("Can't call method on "+r);return r}},function(t,r,n){var e=n(14);t.exports=function(t,r){if(!e(t))return t;var n,o;if(r&&"function"==typeof(n=t.toString)&&!e(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!e(o=n.call(t)))return o;if(!r&&"function"==typeof(n=t.toString)&&!e(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,r){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,r){var n={}.hasOwnProperty;t.exports=function(t,r){return n.call(t,r)}},function(t,r,n){var e=n(5),o=n(6),i=n(17);t.exports=!e&&!o(function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a})},function(t,r,n){var e=n(3),o=n(14),i=e.document,u=o(i)&&o(i.createElement);t.exports=function(t){return u?i.createElement(t):{}}},function(t,r,n){var e=n(5),o=n(19),i=n(8);t.exports=e?function(t,r,n){return o.f(t,r,i(1,n))}:function(t,r,n){return t[r]=n,t}},function(t,r,n){var e=n(5),o=n(16),i=n(20),u=n(13),c=Object.defineProperty;r.f=e?c:function(t,r,n){if(i(t),r=u(r,!0),i(n),o)try{return c(t,r,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[r]=n.value),t}},function(t,r,n){var e=n(14);t.exports=function(t){if(!e(t))throw TypeError(String(t)+" is not an object");return t}},function(t,r,n){var e=n(3),o=n(22),i=n(18),u=n(15),c=n(25),a=n(26),f=n(27),s=f.get,l=f.enforce,p=String(a).split("toString");o("inspectSource",function(t){return a.call(t)}),(t.exports=function(t,r,n,o){var a=!!o&&!!o.unsafe,f=!!o&&!!o.enumerable,s=!!o&&!!o.noTargetGet;"function"==typeof n&&("string"!=typeof r||u(n,"name")||i(n,"name",r),l(n).source=p.join("string"==typeof r?r:"")),t!==e?(a?!s&&t[r]&&(f=!0):delete t[r],f?t[r]=n:i(t,r,n)):f?t[r]=n:c(r,n)})(Function.prototype,"toString",function(){return"function"==typeof this&&s(this).source||a.call(this)})},function(r,n,e){var o=e(23),i=e(24);(r.exports=function(r,n){return i[r]||(i[r]=n!==t?n:{})})("versions",[]).push({version:"3.3.6",mode:o?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,r){t.exports=!1},function(t,r,n){var e=n(3),o=n(25),i=e["__core-js_shared__"]||o("__core-js_shared__",{});t.exports=i},function(t,r,n){var e=n(3),o=n(18);t.exports=function(t,r){try{o(e,t,r)}catch(n){e[t]=r}return r}},function(t,r,n){var e=n(22);t.exports=e("native-function-to-string",Function.toString)},function(t,r,n){var e,o,i,u=n(28),c=n(3),a=n(14),f=n(18),s=n(15),l=n(29),p=n(31),g=c.WeakMap;if(u){var v=new g,h=v.get,d=v.has,x=v.set;e=function(t,r){return x.call(v,t,r),r},o=function(t){return h.call(v,t)||{}},i=function(t){return d.call(v,t)}}else{var y=l("state");p[y]=!0,e=function(t,r){return f(t,y,r),r},o=function(t){return s(t,y)?t[y]:{}},i=function(t){return s(t,y)}}t.exports={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(r){var n;if(!a(r)||(n=o(r)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}}},function(t,r,n){var e=n(3),o=n(26),i=e.WeakMap;t.exports="function"==typeof i&&/native code/.test(o.call(i))},function(t,r,n){var e=n(22),o=n(30),i=e("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(r,n){var e=0,o=Math.random();r.exports=function(r){return"Symbol("+String(r===t?"":r)+")_"+(++e+o).toString(36)}},function(t,r){t.exports={}},function(t,r,n){var e=n(15),o=n(33),i=n(4),u=n(19);t.exports=function(t,r){for(var n=o(r),c=u.f,a=i.f,f=0;fa;)e(c,n=r[a++])&&(~i(f,n)||f.push(n));return f}},function(t,r,n){var e=n(9),o=n(39),i=n(41),u=function(t){return function(r,n,u){var c,a=e(r),f=o(a.length),s=i(u,f);if(t&&n!=n){for(;f>s;)if((c=a[s++])!=c)return!0}else for(;f>s;s++)if((t||s in a)&&a[s]===n)return t||s||0;return!t&&-1}};t.exports={includes:u(!0),indexOf:u(!1)}},function(t,r,n){var e=n(40),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},function(t,r){var n=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:n)(t)}},function(t,r,n){var e=n(40),o=Math.max,i=Math.min;t.exports=function(t,r){var n=e(t);return n<0?o(n+r,0):i(n,r)}},function(t,r){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,r){r.f=Object.getOwnPropertySymbols},function(t,r,n){var e=n(6),o=/#|\.prototype\./,i=function(t,r){var n=c[u(t)];return n==f||n!=a&&("function"==typeof r?e(r):!!r)},u=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},c=i.data={},a=i.NATIVE="N",f=i.POLYFILL="P";t.exports=i},function(t,r,n){var e=n(11);t.exports=Array.isArray||function(t){return"Array"==e(t)}},function(t,r,n){var e=n(12);t.exports=function(t){return Object(e(t))}},function(t,r,n){var e=n(13),o=n(19),i=n(8);t.exports=function(t,r,n){var u=e(r);u in t?o.f(t,u,i(0,n)):t[u]=n}},function(r,n,e){var o=e(14),i=e(45),u=e(49)("species");r.exports=function(r,n){var e;return i(r)&&("function"!=typeof(e=r.constructor)||e!==Array&&!i(e.prototype)?o(e)&&null===(e=e[u])&&(e=t):e=t),new(e===t?Array:e)(0===n?0:n)}},function(t,r,n){var e=n(3),o=n(22),i=n(30),u=n(50),c=e.Symbol,a=o("wks");t.exports=function(t){return a[t]||(a[t]=u&&c[t]||(u?c:i)("Symbol."+t))}},function(t,r,n){var e=n(6);t.exports=!!Object.getOwnPropertySymbols&&!e(function(){return!String(Symbol())})},function(t,r,n){var e=n(6),o=n(49),i=n(52),u=o("species");t.exports=function(t){return i>=51||!e(function(){var r=[];return(r.constructor={})[u]=function(){return{foo:1}},1!==r[t](Boolean).foo})}},function(t,r,n){var e,o,i=n(3),u=n(53),c=i.process,a=c&&c.versions,f=a&&a.v8;f?o=(e=f.split("."))[0]+e[1]:u&&(!(e=u.match(/Edge\/(\d+)/))||e[1]>=74)&&(e=u.match(/Chrome\/(\d+)/))&&(o=e[1]),t.exports=o&&+o},function(t,r,n){var e=n(34);t.exports=e("navigator","userAgent")||""},function(t,r,n){var e=n(2),o=n(55),i=n(56);e({target:"Array",proto:!0},{copyWithin:o}),i("copyWithin")},function(r,n,e){var o=e(46),i=e(41),u=e(39),c=Math.min;r.exports=[].copyWithin||function(r,n){var e=o(this),a=u(e.length),f=i(r,a),s=i(n,a),l=arguments.length>2?arguments[2]:t,p=c((l===t?a:i(l,a))-s,a-f),g=1;for(s0;)s in e?e[f]=e[s]:delete e[f],f+=g,s+=g;return e}},function(r,n,e){var o=e(49),i=e(57),u=e(18),c=o("unscopables"),a=Array.prototype;a[c]==t&&u(a,c,i(null)),r.exports=function(t){a[c][t]=!0}},function(r,n,e){var o=e(20),i=e(58),u=e(42),c=e(31),a=e(60),f=e(17),s=e(29)("IE_PROTO"),l=function(){},p=function(){var t,r=f("iframe"),n=u.length;for(r.style.display="none",a.appendChild(r),r.src=String("javascript:"),(t=r.contentWindow.document).open(),t.write(" + View + + + + +
    + + + + + + diff --git a/unpackage/dist/build/app-plus/androidPrivacy.json b/unpackage/dist/build/app-plus/androidPrivacy.json new file mode 100644 index 0000000..d5a70e6 --- /dev/null +++ b/unpackage/dist/build/app-plus/androidPrivacy.json @@ -0,0 +1,32 @@ +{ + "version" : "1", + "prompt" : "template", + "title" : "美融融平台服务协议及隐私政策", + "message" : "您注册为美融融用户的过程中,需要完成我们的注册流程并且以点击的形式在线签署以下协议, 请您务必仔细阅读、充分理解协议中的条款内容后点击同意: 《美融融商家服务协议》《隐私政策》", + "buttonAccept" : "同意", + "buttonRefuse" : "不同意", + "hrefLoader" : "system", + "backToExit" : "false", + "disagreeMode" : { + "support" : false, + "loadNativePlugins" : false, + "visitorEntry" : false, + "showAlways" : false + }, + "styles" : { + "backgroundColor" : "#ffffff", + "borderRadius" : "5px", + "title" : { + "color" : "#000000" + }, + "buttonAccept" : { + "color" : "#f00" + }, + "buttonRefuse" : { + "color" : "#000" + }, + "buttonVisitor" : { + "color" : "#00ffff" + } + } +} diff --git a/unpackage/dist/build/app-plus/app-config-service.js b/unpackage/dist/build/app-plus/app-config-service.js new file mode 100644 index 0000000..8c2c221 --- /dev/null +++ b/unpackage/dist/build/app-plus/app-config-service.js @@ -0,0 +1,8 @@ + +var isReady=false;var onReadyCallbacks=[]; +var isServiceReady=false;var onServiceReadyCallbacks=[]; +var __uniConfig = {"pages":["pages/home/home","pages/message/message","pages/message/settings","pages/message/message_setting","pages/ruzhu/ruzhu","pages/login/login","pages/artisan/service-list","pages/service/class","pages/artisan/add-service","pages/order/userorder-list","pages/order/userorder-detail","pages/order/pay","pages/order/submit","pages/order/pay-success","pages/service/appointment","pages/service/detail","pages/my/my","pages/add/add","pages/my/profile","pages/ruzhu/complete","pages/ruzhu/submitres","pages/artisan/my","pages/artisan/profile","pages/artisan/service-time","pages/artisan/service-skills","pages/artisan/syr-info-change","pages/artisan/qualification_syr_change","pages/artisan/service-area","pages/artisan/belong_shop","pages/settings/index","pages/settings/paypsd","pages/settings/password","pages/address/list","pages/address/search","pages/address/newSearch","pages/address/selectCity","pages/address/selectAddress","pages/address/add","pages/address/revise","pages/share/syrandsjshare","pages/share/usershare","pages/contact/contact","pages/wallet/wallet","pages/wallet/withdraw","pages/wallet/bindaccount","pages/wallet/bindway","pages/order/all-orders","pages/user/store-detail","pages/user/store-detail-information","pages/user/store-syr-list","pages/user/employee-detail","pages/user/qualifications","pages/agreement/agreement","pages/artisan/unavailable-time","pages/artisan/index","pages/service/store-list","pages/order/artisanorder-detail","pages/demo/demo","pages/user/syr-detail","pages/demo/detail","pages/xieyi/xieyi","pages/demo/kydemo","pages/complaint/add-complaint","pages/complaint/detail","pages/complaint/list","pages/ruzhu/stopuse","pages/shop/buy-service","pages/shop/buy-order","pages/shop/service-detail","pages/shop/create-order","pages/shop/pay-order","pages/shop/pay-success","pages/shop/servicesyr-home","pages/shop/buyorder-detail","pages/shop/business-time","pages/shop/service-skills","pages/shop/sj-info-change","pages/shop/qualification_sj_change","pages/syr/home","pages/shop/staff/manage","pages/shop/staff/addStaff","pages/shop/staff/staffDetail","pages/shop/staff/record","pages/shop/staff/detail","pages/shop/staff/distribution-service","pages/shop/staff/selectSyr","pages/shop/staff/serviceList","pages/shop/staff/unbundleList","pages/shop/photoAlbum/photoManage","pages/shop/photoAlbum/addPhoto","pages/shop/photoAlbum/videoList","pages/shop/set","pages/syr/my","pages/syr/userorders","pages/syr/shoporders","pages/syr/userorder-detail","pages/syr/shoporder-detail","pages/syr/manHour/saleList","pages/syr/manHourDetail","pages/syr/migration","pages/syr/manHour/list","pages/syr/manHour/addManHour","pages/syr/workstation/buyList","pages/syr/workstation/buyWorkstation","pages/syr/workstation/workstationDetail","pages/syr/workstation/workstationOrder","pages/shop/manHour/list","pages/shop/manHour/saleList","pages/shop/manHour/addManHour","pages/shop/manHour/buyManHour","pages/shop/userorder-detail","pages/shop/workSpace/list","pages/shop/workSpace/saleList","pages/shop/userorders","pages/shop/add-service","pages/shop/workSpace/addWorkSpace","pages/shop/SellerDetail","pages/shop/manHour/manHourDetail","pages/shop/pay","pages/shop/manHour/manHourOrder","pages/shop/manHourDetail","pages/shop/groupBuying/list","pages/shop/groupBuying/addGroupBuying","pages/shop/groupBuying/selectServe","pages/shop/add-img-text","pages/recruit/recruit","pages/recruit/recruit2","pages/wallet/withdrawCash","pages/wallet/alipay","pages/wallet/alipayAccount","pages/promotion/promotion","pages/promotion/selectServe","pages/promotion/setUpServe","pages/promotion/effect","pages/selfOperated/agreement","pages/selfOperated/addWe","pages/selfOperated/list","pages/selfOperated/detail","pages/selfOperated/selectSyr","pages/selfOperated/serveList","pages/blogPopup/blogPopup","pages/album/index"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"uni-app","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8"},"tabBar":{"color":"#999","selectedColor":"#E8101E","backgroundColor":"#fff","list":[{"iconPath":"/static/images/tabbar/home_icon_dis.png","text":"首页","selectedIconPath":"/static/images/tabbar/home_icon_active.png","pagePath":"pages/home/home"},{"iconPath":"/static/images/tabbar/new_message_gray.png","text":"消息","selectedIconPath":"/static/images/tabbar/new_message.png","pagePath":"pages/message/message"},{"iconPath":"/static/images/tabbar/my_icon_dis.png","text":"我的","selectedIconPath":"/static/images/tabbar/my_icon_active.png","pagePath":"pages/my/my"}]},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"美融融商家","compilerVersion":"5.03","entryPagePath":"pages/home/home","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}}; +var __uniRoutes = [{"path":"/pages/home/home","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"","navigationBarTextStyle":"white","navigationStyle":"custom","enablePullDownRefresh":true}},{"path":"/pages/message/message","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationStyle":"custom"}},{"path":"/pages/message/settings","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/message/message_setting","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/ruzhu/ruzhu","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/login/login","meta":{},"window":{"navigationBarTitleText":"登录","navigationStyle":"custom"}},{"path":"/pages/artisan/service-list","meta":{},"window":{"navigationBarTitleText":"","navigationStyle":"custom"}},{"path":"/pages/service/class","meta":{},"window":{"navigationBarTitleText":"","navigationStyle":"custom","enablePullDownRefresh":true}},{"path":"/pages/artisan/add-service","meta":{},"window":{"navigationBarTitleText":"添加服务","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black"}},{"path":"/pages/order/userorder-list","meta":{},"window":{"navigationBarTitleText":"订单","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/order/userorder-detail","meta":{},"window":{"navigationBarTitleText":"订单详情","navigationBarBackgroundColor":"#FFFFFF","navigationStyle":"custom"}},{"path":"/pages/order/pay","meta":{},"window":{"navigationBarBackgroundColor":"#FFFFFF","navigationStyle":"custom"}},{"path":"/pages/order/submit","meta":{},"window":{"navigationBarTitleText":"订单详情","navigationBarBackgroundColor":"#FFFFFF","navigationStyle":"custom"}},{"path":"/pages/order/pay-success","meta":{},"window":{"navigationBarTitleText":"支付成功","navigationBarBackgroundColor":"#FFFFFF","navigationStyle":"custom"}},{"path":"/pages/service/appointment","meta":{},"window":{"navigationBarTitleText":"预约到家","navigationStyle":"custom","bounce":"none"}},{"path":"/pages/service/detail","meta":{"isNVue":true},"window":{"navigationStyle":"custom","navigationBarTextStyle":"black"}},{"path":"/pages/my/my","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationStyle":"custom","bounce":"none"}},{"path":"/pages/add/add","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/my/profile","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/ruzhu/complete","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/ruzhu/submitres","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/artisan/my","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/artisan/profile","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/artisan/service-time","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/artisan/service-skills","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/artisan/syr-info-change","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/artisan/qualification_syr_change","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/artisan/service-area","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/artisan/belong_shop","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/settings/index","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/settings/paypsd","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/settings/password","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/address/list","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/address/search","meta":{"isNVue":true},"window":{"navigationStyle":"custom"}},{"path":"/pages/address/newSearch","meta":{"isNVue":true},"window":{"navigationStyle":"custom"}},{"path":"/pages/address/selectCity","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/address/selectAddress","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/address/add","meta":{"isNVue":true},"window":{"navigationStyle":"custom"}},{"path":"/pages/address/revise","meta":{"isNVue":true},"window":{"navigationStyle":"custom"}},{"path":"/pages/share/syrandsjshare","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/share/usershare","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/contact/contact","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/wallet/wallet","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/wallet/withdraw","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/wallet/bindaccount","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/wallet/bindway","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/order/all-orders","meta":{},"window":{"navigationStyle":"custom","enablePullDownRefresh":true}},{"path":"/pages/user/store-detail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/user/store-detail-information","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/user/store-syr-list","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/user/employee-detail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/user/qualifications","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/agreement/agreement","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/artisan/unavailable-time","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/artisan/index","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/service/store-list","meta":{},"window":{"navigationBarTitleText":"","navigationStyle":"custom","bounce":"none"}},{"path":"/pages/order/artisanorder-detail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/demo/demo","meta":{"isNVue":true},"window":{"navigationBarTitleText":""}},{"path":"/pages/user/syr-detail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/demo/detail","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/xieyi/xieyi","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/demo/kydemo","meta":{},"window":{"navigationBarTitleText":""}},{"path":"/pages/complaint/add-complaint","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/complaint/detail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/complaint/list","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/ruzhu/stopuse","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/buy-service","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/buy-order","meta":{},"window":{"navigationBarTitleText":"订购服务","backgroundColorTop":"#FFFFFF","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/shop/service-detail","meta":{"isNVue":true},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/create-order","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/pay-order","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/pay-success","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/servicesyr-home","meta":{"isNVue":true},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/buyorder-detail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/business-time","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/service-skills","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/sj-info-change","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/qualification_sj_change","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/syr/home","meta":{},"window":{"navigationStyle":"custom","enablePullDownRefresh":true,"bounce":"none"}},{"path":"/pages/shop/staff/manage","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/staff/addStaff","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/staff/staffDetail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/staff/record","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/staff/detail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/staff/distribution-service","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/staff/selectSyr","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/staff/serviceList","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/staff/unbundleList","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/photoAlbum/photoManage","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/photoAlbum/addPhoto","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/photoAlbum/videoList","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/set","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/syr/my","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/syr/userorders","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/syr/shoporders","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/syr/userorder-detail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/syr/shoporder-detail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/syr/manHour/saleList","meta":{},"window":{"navigationStyle":"custom","enablePullDownRefresh":true}},{"path":"/pages/syr/manHourDetail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/syr/migration","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/syr/manHour/list","meta":{},"window":{"navigationStyle":"custom","enablePullDownRefresh":true}},{"path":"/pages/syr/manHour/addManHour","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/syr/workstation/buyList","meta":{},"window":{"navigationStyle":"custom","enablePullDownRefresh":true}},{"path":"/pages/syr/workstation/buyWorkstation","meta":{},"window":{"navigationStyle":"custom","bounce":"none","enablePullDownRefresh":true}},{"path":"/pages/syr/workstation/workstationDetail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/syr/workstation/workstationOrder","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/manHour/list","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/manHour/saleList","meta":{},"window":{"navigationStyle":"custom","enablePullDownRefresh":true}},{"path":"/pages/shop/manHour/addManHour","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/manHour/buyManHour","meta":{},"window":{"navigationStyle":"custom","bounce":"none","enablePullDownRefresh":true}},{"path":"/pages/shop/userorder-detail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/workSpace/list","meta":{},"window":{"navigationStyle":"custom","enablePullDownRefresh":true}},{"path":"/pages/shop/workSpace/saleList","meta":{},"window":{"navigationStyle":"custom","enablePullDownRefresh":true}},{"path":"/pages/shop/userorders","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/add-service","meta":{},"window":{"navigationBarTitleText":"添加服务","navigationBarBackgroundColor":"#FFFFFF","navigationBarTextStyle":"black"}},{"path":"/pages/shop/workSpace/addWorkSpace","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/SellerDetail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/manHour/manHourDetail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/pay","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/manHour/manHourOrder","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/manHourDetail","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/groupBuying/list","meta":{},"window":{"navigationStyle":"custom","enablePullDownRefresh":true}},{"path":"/pages/shop/groupBuying/addGroupBuying","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/groupBuying/selectServe","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/shop/add-img-text","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/recruit/recruit","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/recruit/recruit2","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/wallet/withdrawCash","meta":{},"window":{"navigationStyle":"custom","bounce":"none"}},{"path":"/pages/wallet/alipay","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/wallet/alipayAccount","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/promotion/promotion","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/promotion/selectServe","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/promotion/setUpServe","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/promotion/effect","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/selfOperated/agreement","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/selfOperated/addWe","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/selfOperated/list","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/selfOperated/detail","meta":{"isNVue":true},"window":{"navigationStyle":"custom"}},{"path":"/pages/selfOperated/selectSyr","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/selfOperated/serveList","meta":{},"window":{"navigationStyle":"custom"}},{"path":"/pages/blogPopup/blogPopup","meta":{},"window":{"navigationBarTitleText":"","enablePullDownRefresh":false,"navigationStyle":"custom","animationType":"fade-in","background":"transparent","backgroundColor":"transparent","webviewBGTransparent":true,"mask":"none","bounce":"none","softinputMode":"adjustResize"}},{"path":"/pages/album/index","meta":{"isNVue":true},"window":{"navigationStyle":"custom"}}]; +__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); +__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); +service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}}); diff --git a/unpackage/dist/build/app-plus/app-config.js b/unpackage/dist/build/app-plus/app-config.js new file mode 100644 index 0000000..d899cd3 --- /dev/null +++ b/unpackage/dist/build/app-plus/app-config.js @@ -0,0 +1 @@ +(function(e){function r(r){for(var n,l,i=r[0],p=r[1],a=r[2],c=0,s=[];c0&&void 0!==arguments[0])||arguments[0];this.isLoad=!1,e&&(this.page=1,this.limit=10);var i="/syr/workSeatOrder/list";n.default.post(i,{state:this.state,page:this.page,limit:this.limit}).then((function(i){e?(t.services=i.data.list,t.count=i.data.count):(t.services=[].concat((0,r.default)(t.services),(0,r.default)(i.data.list)),t.count=i.data.count)})).finally((function(){t.isLoad=!0,uni.stopPullDownRefresh()}))},switchTab:function(t,e){this.currentTab=t,this.state=e,this.getServicesList()},goDetail:function(t){uni.navigateTo({url:"/pages/shop/manHourDetail?id=".concat(t.id,"&identity=1")})},goPay:function(e){t("log",22222,e," at pages/syr/workstation/buyList.vue:146"),uni.redirectTo({url:"/pages/shop/pay?id=".concat(e.id,"&money=").concat(e.order_money,"&title=").concat(e.title,"&number=").concat(e.number,"&identity=1")})},goRefund:function(e){var i=this;uni.showModal({title:"\u7533\u8bf7\u9000\u6b3e",content:"\u786e\u5b9a\u8981\u7533\u8bf7\u9000\u6b3e\u5417\uff1f\uff08\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u652f\u4ed8\u91d1\u989d\u5c06\u539f\u8def\u9000\u56de\uff09",success:function(s){if(s.confirm){var a={orderNo:e.number,amount:e.pay_money,sjid:e.id},r="";1==e.pay_kind?r="":2==e.pay_kind?r="/syr/workSeatOrder/weChatRefund":3==e.pay_kind&&(r="/syr/workSeatOrder/aliRefund"),n.default.post(r,a).then((function(t){1==t.code||200==t.code?(uni.showToast({title:"\u7533\u8bf7\u9000\u6b3e\uff01",icon:"none"}),i.getServicesList()):uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){return t("log",e," at pages/syr/workstation/buyList.vue:180")}))}}})},cancel:function(e){var i=this;uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f",success:function(s){if(s.confirm){var a={order_no:e.number};n.default.post("/syr/workSeatOrder/cancel",a).then((function(t){200==t.code?(uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),i.getServicesList()):uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){return t("log",e," at pages/syr/workstation/buyList.vue:206")}))}}})}}};e.default=d}).call(this,i("f3b9")["default"])},"00c1":function(t,e,i){"use strict";i.r(e);var s=i("1441"),a=i("94db");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"2d17a374",null,!1,s["a"],void 0);e["default"]=n.exports},"011c":function(t,e,i){"use strict";i.r(e);var s=i("8c5f"),a=i("a03e");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"a3a85d48",null,!1,s["a"],void 0);e["default"]=n.exports},"016f":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","detail-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u8ba2\u5355\u8be6\u60c5","show-back":!0,"title-color":"#333333",backgroundColor:t.backgroundColor,_i:1}}),i("view",{staticClass:t._$s(2,"sc","content-part"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","status-section"),attrs:{_i:3}},[i("image",{staticClass:t._$s(4,"sc","status-section-image"),attrs:{src:t._$s(4,"a-src",t.stateItem.icon),_i:4}}),i("text",{staticClass:t._$s(5,"sc","status-text"),attrs:{_i:5}},[t._v(t._$s(5,"t0-0",t._s(t.stateItem.text)))])]),t._$s(6,"i",0==t.identity)?i("view",{staticClass:t._$s(6,"sc","syr-card"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","syr-card-header"),attrs:{_i:7}}),i("view",{staticClass:t._$s(8,"sc","syr-card-footer flex-row-center-between"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","syr-card-footer-left flex-row-center"),attrs:{_i:9}},[i("image",{staticClass:t._$s(10,"sc","syr-card-footer-left-img"),attrs:{src:t._$s(10,"a-src",t.orderInfo.head_photo),_i:10}}),i("view",{staticClass:t._$s(11,"sc","syr-card-footer-left-text"),attrs:{_i:11}},[t._v(t._$s(11,"t0-0",t._s(t.orderInfo.name+" "+t.orderInfo.account)))])]),i("image",{staticClass:t._$s(12,"sc","syr-card-footer-right"),attrs:{_i:12},on:{click:function(e){return t.contactService(t.orderInfo.account)}}})])]):t._e(),i("view",{staticClass:t._$s(13,"sc","order-card time-card"),attrs:{_i:13}},[i("view",{staticClass:t._$s(14,"sc","card_title"),attrs:{_i:14}}),i("view",{staticClass:t._$s(15,"sc","service-real"),attrs:{_i:15}},[i("view",{staticClass:t._$s(16,"sc","card_time"),attrs:{_i:16}},[t._v(t._$s(16,"t0-0",t._s(t.formatDateTime(t.orderInfo.reserve_start_time))))]),i("view",{staticClass:t._$s(17,"sc","card_time"),attrs:{_i:17}},[t._v(t._$s(17,"t0-0",t._s(t.formatDateTime(t.orderInfo.reserve_end_time))))])])]),i("view",{staticClass:t._$s(18,"sc","booking-card"),attrs:{_i:18}},[i("view",{staticClass:t._$s(19,"sc","card_title"),attrs:{_i:19}}),i("view",{staticClass:t._$s(20,"sc","service-item"),attrs:{_i:20}},[t._$s(21,"i",t.orderInfo.photo&&0!=t.orderInfo.photo.length)?i("image",{staticClass:t._$s(21,"sc","service-image"),attrs:{src:t._$s(21,"a-src",t.photo[0]),_i:21}}):t._e(),i("view",{staticClass:t._$s(22,"sc","service-info"),attrs:{_i:22}},[i("view",{staticClass:t._$s(23,"sc","service-box"),attrs:{_i:23}},[i("view",{staticClass:t._$s(24,"sc","service-name-row"),attrs:{_i:24}},[i("text",{staticClass:t._$s(25,"sc","service-name white-space-nowrap"),attrs:{_i:25}},[t._v(t._$s(25,"t0-0",t._s(t.orderInfo.title)))]),i("text",{staticClass:t._$s(26,"sc","service-name-num"),attrs:{_i:26}})]),t._$s(27,"i",t.orderInfo.second_class_title)?i("text",{staticClass:t._$s(27,"sc","service-subtitle white-space-nowrap"),attrs:{_i:27}},[t._v(t._$s(27,"t0-0",t._s(0==t.identity?"\u670d\u52a1\u8303\u56f4":"\u4f7f\u7528\u573a\u666f"))+t._$s(27,"t0-1",t._s(t.orderInfo.first_class_title+" "+t.orderInfo.second_class_title.join("\u3001"))))]):t._e()]),i("view",{staticClass:t._$s(28,"sc","service-price"),attrs:{_i:28}},[i("text",[t._v(t._$s(29,"t0-0",t._s(t.orderInfo.price)))])])])]),i("view",{staticClass:t._$s(30,"sc","service-real-1"),attrs:{_i:30}},[i("text",{staticClass:t._$s(31,"sc","real-lable"),attrs:{_i:31}}),i("view",{staticClass:t._$s(32,"sc","real-price"),attrs:{_i:32}},[i("text",{staticClass:t._$s(33,"sc","icon"),attrs:{_i:33}}),i("text",{staticClass:t._$s(34,"sc","price"),attrs:{_i:34}},[t._v(t._$s(34,"t0-0",t._s(t.orderInfo.order_money)))])])])]),i("view",{staticClass:t._$s(35,"sc","order-card info-card"),attrs:{_i:35}},[i("view",{staticClass:t._$s(36,"sc","card_title"),attrs:{_i:36}}),i("view",{staticClass:t._$s(37,"sc","info-item"),attrs:{_i:37}},[i("text",{staticClass:t._$s(38,"sc","label"),attrs:{_i:38}}),i("text",{staticClass:t._$s(39,"sc","value"),attrs:{_i:39}},[t._v(t._$s(39,"t0-0",t._s(t.orderInfo.number)))])]),t._$s(40,"i",t.orderInfo.server_code)?i("view",{staticClass:t._$s(40,"sc","info-item"),attrs:{_i:40}},[i("text",{staticClass:t._$s(41,"sc","label"),attrs:{_i:41}}),i("text",{staticClass:t._$s(42,"sc","value"),attrs:{_i:42}},[t._v(t._$s(42,"t0-0",t._s(t.orderInfo.server_code)))])]):t._e(),i("view",{staticClass:t._$s(43,"sc","info-item"),attrs:{_i:43}},[i("text",{staticClass:t._$s(44,"sc","label"),attrs:{_i:44}}),i("text",{staticClass:t._$s(45,"sc","value"),attrs:{_i:45}},[t._v(t._$s(45,"t0-0",t._s(t.orderInfo.add_time)))])]),i("view",{staticClass:t._$s(46,"sc","info-item"),attrs:{_i:46}},[i("text",{staticClass:t._$s(47,"sc","label"),attrs:{_i:47}}),i("text",{staticClass:t._$s(48,"sc","value"),attrs:{_i:48}},[t._v(t._$s(48,"t0-0",t._s(t.orderInfo.service_duration)))])]),t._$s(49,"i",1!=t.orderInfo.state&&t.orderInfo.pay_kind)?i("view",{staticClass:t._$s(49,"sc","info-item"),attrs:{_i:49}},[i("text",{staticClass:t._$s(50,"sc","label"),attrs:{_i:50}}),i("text",{staticClass:t._$s(51,"sc","value"),attrs:{_i:51}},[t._v(t._$s(51,"t0-0",t._s(1==t.orderInfo.pay_kind?"\u8d26\u6237\u4f59\u989d":2==t.orderInfo.pay_kind?"\u5fae\u4fe1\u652f\u4ed8":3==t.orderInfo.pay_kind?"\u652f\u4ed8\u5b9d\u652f\u4ed8":"")))])]):t._e(),t._$s(52,"i",1!=t.orderInfo.state&&t.orderInfo.pay_time)?i("view",{staticClass:t._$s(52,"sc","info-item"),attrs:{_i:52}},[i("text",{staticClass:t._$s(53,"sc","label"),attrs:{_i:53}}),i("text",{staticClass:t._$s(54,"sc","value"),attrs:{_i:54}},[t._v(t._$s(54,"t0-0",t._s(t.orderInfo.pay_time)))])]):t._e(),t._$s(55,"i",t.orderInfo.state>=3&&t.orderInfo.get_time)?i("view",{staticClass:t._$s(55,"sc","info-item"),attrs:{_i:55}},[i("text",{staticClass:t._$s(56,"sc","label"),attrs:{_i:56}}),i("text",{staticClass:t._$s(57,"sc","value"),attrs:{_i:57}},[t._v(t._$s(57,"t0-0",t._s(t.orderInfo.get_time)))])]):t._e(),t._$s(58,"i",t.orderInfo.state>=4&&t.orderInfo.start_time)?i("view",{staticClass:t._$s(58,"sc","info-item"),attrs:{_i:58}},[i("text",{staticClass:t._$s(59,"sc","label"),attrs:{_i:59}}),i("text",{staticClass:t._$s(60,"sc","value"),attrs:{_i:60}},[t._v(t._$s(60,"t0-0",t._s(t.orderInfo.start_time)))])]):t._e(),t._$s(61,"i",t.orderInfo.state>=5&&t.orderInfo.end_time)?i("view",{staticClass:t._$s(61,"sc","info-item"),attrs:{_i:61}},[i("text",{staticClass:t._$s(62,"sc","label"),attrs:{_i:62}}),i("text",{staticClass:t._$s(63,"sc","value"),attrs:{_i:63}},[t._v(t._$s(63,"t0-0",t._s(t.orderInfo.end_time)))])]):t._e()])]),i("view",{directives:[{name:"show",rawName:"v-show",value:t._$s(64,"v-show",5!=t.orderInfo.state),expression:"_$s(64,'v-show',orderInfo.state != 5)"}],staticClass:t._$s(64,"sc","bottom-buttons"),attrs:{_i:64}},[t._$s(65,"i",2==t.orderInfo.state||3==t.orderInfo.state)?i("view",{staticClass:t._$s(65,"sc","handel-button btn-border"),attrs:{_i:65},on:{click:function(e){return e.stopPropagation(),t.refund(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(66,"sc","button-text"),attrs:{_i:66}})]):t._e(),t._$s(67,"i",1==t.orderInfo.state)?i("view",{staticClass:t._$s(67,"sc","handel-button btn-border"),attrs:{_i:67},on:{click:function(e){return e.stopPropagation(),t.cancelOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(68,"sc","button-text"),attrs:{_i:68}})]):t._e(),t._$s(69,"i",1==t.orderInfo.state)?i("view",{staticClass:t._$s(69,"sc","handel-button btn-bg"),attrs:{_i:69},on:{click:function(e){return e.stopPropagation(),t.goPay(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(70,"sc","button-text"),attrs:{_i:70}})]):t._e()]),i("view",{staticClass:t._$s(71,"sc","permission"),class:t._$s(71,"c",{transform:t.isShowPer}),attrs:{_i:71}},[i("view",{staticClass:t._$s(72,"sc","per-tit"),attrs:{_i:72}}),i("view",{staticClass:t._$s(73,"sc","per-cont"),attrs:{_i:73}})])],1)},r=[]},"01d1":function(t,e,i){"use strict";i.r(e);var s=i("e243"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"01da":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=i("2537"),n=s(i("16bb"));s(i("1942"));function o(t,e){var i="undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=function(t,e){if(!t)return;if("string"===typeof t)return d(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);"Object"===i&&t.constructor&&(i=t.constructor.name);if("Map"===i||"Set"===i)return Array.from(t);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return d(t,e)}(t))||e&&t&&"number"===typeof t.length){i&&(t=i);var s=0,a=function(){};return{s:a,n:function(){return s>=t.length?{done:!0}:{done:!1,value:t[s++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,c=!0,n=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return c=t.done,t},e:function(t){n=!0,r=t},f:function(){try{c||null==i.return||i.return()}finally{if(n)throw r}}}}function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i0&&void 0!==e[0]?e[0]:["setVersion","searchCity","userAdrees","startLocate","isLocation"],r={},i.prev=2,n=o(s),i.prev=4,n.s();case 6:if((d=n.n()).done){i.next=20;break}return l=d.value,i.prev=8,i.next=11,uni.getStorageSync(l);case 11:u=i.sent,r[l]=u,i.next=18;break;case 15:i.prev=15,i.t0=i["catch"](8),r[l]=null;case 18:i.next=6;break;case 20:i.next=25;break;case 22:i.prev=22,i.t1=i["catch"](4),n.e(i.t1);case 25:return i.prev=25,n.f(),i.finish(25);case 28:return i.next=30,uni.clearStorage();case 30:f=o(s),i.prev=31,f.s();case 33:if((_=f.n()).done){i.next=40;break}if(p=_.value,null===r[p]){i.next=38;break}return i.next=38,uni.setStorageSync(p,r[p]);case 38:i.next=33;break;case 40:i.next=45;break;case 42:i.prev=42,i.t2=i["catch"](31),f.e(i.t2);case 45:return i.prev=45,f.f(),i.finish(45);case 48:t("log","\u5df2\u6e05\u9664\u6240\u6709\u7f13\u5b58\uff0c\u4fdd\u7559\u6307\u5b9akey"," at pages/settings/index.vue:311"),(0,c.unRegisterPush)((function(e){t("log","\u53cd\u6ce8\u518c\u63a8\u9001\u6210\u529f",e," at pages/settings/index.vue:317")}),(function(e){t("error","\u53cd\u6ce8\u518c\u63a8\u9001\u5931\u8d25",e," at pages/settings/index.vue:322")})),i.next=55;break;case 52:i.prev=52,i.t3=i["catch"](2),t("error","\u64cd\u4f5c\u5931\u8d25\uff1a",i.t3," at pages/settings/index.vue:327");case 55:case"end":return i.stop()}}),i,null,[[2,52],[4,22,25,28],[8,15],[31,42,45,48]])})))()},clearStorage:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t,e.next=3,uni.showModal({title:"\u63d0\u793a",content:"\u786e\u5b9a\u8981\u6e05\u9664\u7f13\u5b58\u5417\uff1f",success:function(){var e=(0,r.default)(a.default.mark((function e(i){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:i.confirm&&plus.cache.clear(function(){uni.showToast({title:"\u6e05\u9664\u6210\u529f",icon:"none"}),this.cacheSize="0 MB"}.bind(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()});case 3:case"end":return e.stop()}}),e)})))()},deleteAccount:function(){var t=this;return(0,r.default)(a.default.mark((function e(){var i;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return i=t,e.next=3,uni.showModal({title:"\u63d0\u793a",content:"\u672c\u6b21\u6ce8\u9500\u5c06\u8981\u505c\u6b62\u4f7f\u7528\u7f8e\u878d\u878d\u6240\u6709\u6743\u529b\uff0c\u8bf7\u786e\u8ba4\u60a8\u6ca1\u6709\u672a\u5b8c\u6210\u7684\u8ba2\u5355\uff0c\u68c0\u67e5\u8d26\u6237\u4f59\u989d\uff0c\u662f\u5426\u6ce8\u9500\uff1f",success:function(){var e=(0,r.default)(a.default.mark((function e(s){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:s.confirm&&n.default.post("/sj/cancellation").then((function(e){1!=e.state&&200!=e.code||(t.$store.commit("setMessageNum",0),i.clearAllExceptSpecified(),uni.reLaunch({url:"/pages/home/home"}))}));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()});case 3:case"end":return e.stop()}}),e)})))()},logout:function(){var t=this;return(0,r.default)(a.default.mark((function e(){var i;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return i=t,e.next=3,uni.showModal({title:"\u63d0\u793a",content:"\u786e\u5b9a\u8981\u9000\u51fa\u767b\u5f55\u5417\uff1f",success:function(){var e=(0,r.default)(a.default.mark((function e(s){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(!s.confirm){e.next=5;break}return e.next=3,i.clearAllExceptSpecified();case 3:t.$store.commit("setMessageNum",0),uni.reLaunch({url:"/pages/my/my"});case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()});case 3:case"end":return e.stop()}}),e)})))()}}};e.default=l}).call(this,i("f3b9")["default"])},"0221":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={data:function(){return{verifyCode:"",qrCodeUrl:"",realName:"",counting:!1,count:60,way:""}},computed:{countText:function(){return this.counting?"".concat(this.count,"s"):"\u83b7\u53d6\u9a8c\u8bc1\u7801"},canSubmit:function(){return this.verifyCode&&this.qrCodeUrl&&this.realName}},onLoad:function(t){this.way=t.way},methods:{getVerifyCode:function(){var t=this;if(!this.counting){this.counting=!0,this.count=60;var e=setInterval((function(){t.count>0?t.count--:(t.counting=!1,clearInterval(e))}),1e3);uni.showToast({title:"\u9a8c\u8bc1\u7801\u5df2\u53d1\u9001",icon:"none"})}},uploadQRCode:function(){var t=this;uni.chooseImage({count:1,sizeType:["original","compressed"],sourceType:["album","camera"],success:function(e){t.qrCodeUrl=e.tempFilePaths[0]}})},handleSubmit:function(){this.canSubmit&&(6===this.verifyCode.length?this.realName.trim()?(uni.showLoading({title:"\u63d0\u4ea4\u4e2d..."}),setTimeout((function(){uni.hideLoading(),uni.showToast({title:"\u7ed1\u5b9a\u6210\u529f",icon:"success",duration:2e3,success:function(){setTimeout((function(){uni.navigateBack({delta:1})}),2e3)}})}),1500)):uni.showToast({title:"\u8bf7\u8f93\u5165\u771f\u5b9e\u59d3\u540d",icon:"none"}):uni.showToast({title:"\u8bf7\u8f93\u51656\u4f4d\u9a8c\u8bc1\u7801",icon:"none"}))}}};e.default=s},"026a":function(t,e,i){"use strict";i.r(e);var s=i("c4d8"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"026f":function(t,e,i){"use strict";i.r(e);var s=i("d009"),a=i("8a39");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"06b65fae",null,!1,s["a"],void 0);e["default"]=n.exports},"028e":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c=s(i("5750")),n={name:"uv-badge",mixins:[a.default,r.default,c.default],computed:{boxStyle:function(){return{}},badgeStyle:function(){var t={};if(this.color&&(t.color=this.color),this.bgColor&&!this.inverted&&(t.backgroundColor=this.bgColor),this.absolute&&(t.position="absolute",this.offset.length)){var e=this.offset[0],i=this.offset[1]||e;t.top=this.$uv.addUnit(e),t.right=this.$uv.addUnit(i)}return t},showValue:function(){switch(this.numberType){case"overflow":return Number(this.value)>Number(this.max)?this.max+"+":this.value;case"ellipsis":return Number(this.value)>Number(this.max)?"...":this.value;case"limit":return Number(this.value)>999?Number(this.value)>=9999?Math.floor(this.value/1e4*100)/100+"w":Math.floor(this.value/1e3*100)/100+"k":this.value;default:return Number(this.value)}},propsType:function(){return this.type||"error"}}};e.default=n},"02f7":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this.$createElement,e=this._self._c||t;return e("view",{staticClass:this._$s(0,"sc","search-address-page"),attrs:{_i:0}},[e("custom-navbar",{attrs:{title:"\u9009\u62e9\u57ce\u5e02",showBack:!0,backgroundColor:"#FAFAFA",_i:1}}),e("hao-indexList",{attrs:{letters:this.letters,idValue:"adcode",nameValue:"name",currentCity:this.currentCity,hotCity:this.hotCity,cityList:this.cityList,_i:2},on:{haoTap:this.haoTap}})],1)},r=[]},"0394":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=i("d6c4"),o={data:function(){return{isAppSettingReturn:!1,showTestDialog:!1,value:!0,isEnabled:!0,stateList:[],dialogBgImage:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dc1ad615-54be-4274-9fd8-e13a9b15b8db.png"}},onShow:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.getReceiveState();case 2:t.isEnabled=(0,n.isNotificationsEnabled)(),t.isAppSettingReturn&&(t.showChangeState(),t.isAppSettingReturn=!1);case 4:case"end":return e.stop()}}),e)})))()},onLoad:function(){},computed:{isEnabledValue:function(){return this.isEnabled?"\u5df2\u5f00\u542f":"\u524d\u5f80\u5f00\u542f"}},methods:{closeDialog:function(){try{this.showTestDialog=!1}catch(err){t("error","\u5173\u95ed\u5f39\u7a97\u5931\u8d25:",err," at pages/message/settings.vue:152"),this.$set(this,"showTestDialog",!1)}},getReceiveState:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,c.default.post("/sj/push/getReceiveState").then((function(e){t.stateList=e.data.list,t.value=1==t.stateList[1].state}));case 2:case"end":return e.stop()}}),e)})))()},showChangeState:function(){var e=this.isEnabled?1:2;t("log","state",this.stateList[0].state,e," at pages/message/settings.vue:166"),this.stateList[0].state!=e&&c.default.post("/sj/push/setReceiveState",{message_type_id:-1,message_kind_id:0,state:e}).then((function(e){t("log","setReceiveState",e," at pages/message/settings.vue:173")}))},changeVoice:function(e){var i=e?1:2;c.default.post("/sj/push/setReceiveState",{message_type_id:-2,message_kind_id:0,state:i}).then((function(e){t("log","setReceiveState",e," at pages/message/settings.vue:184")}))},navigateTo:function(t){uni.navigateTo({url:t})},goPermissions:function(){this.isEnabled||((0,n.permissions)(!0),this.isAppSettingReturn=!0)}}};e.default=o}).call(this,i("f3b9")["default"])},"03d4":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5e97\u94fa\u56fe\u7247",leftImg:"/static/images/back.png",showUser:!0,backgroundColor:"#fff",titleColor:"#000",borderBottom:"none",_i:1},scopedSlots:t._u([{key:"right",fn:function(e,s,a){return[i("text",{staticClass:s._$s("3-"+a,"sc","custom-right"),attrs:{_i:"3-"+a},on:{click:t.toggleManage}},[t._v(s._$s("3-"+a,"t0-0",t._s(t.isManage?"\u53d6\u6d88":"\u7ba1\u7406")))])]}}])}),i("view",{staticClass:t._$s(4,"sc","review"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","review-title"),attrs:{_i:5}},[i("text",{staticClass:t._$s(6,"sc","review-title-text"),attrs:{_i:6}})])]),i("view",{staticClass:t._$s(7,"sc","container-card"),attrs:{_i:7}},[t._$s(8,"i",1==t.type)?i("view",{staticClass:t._$s(8,"sc","card-content flex-row-center"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","card-content-page"),attrs:{_i:9}},[t._v(t._$s(9,"t0-0",t._s(t.imgVideoList.length)))]),t._$s(10,"i",!(1==t.class_type&&t.imgVideoList&&t.imgVideoList.length))?i("view",{staticClass:t._$s(10,"sc","content-default"),attrs:{_i:10},on:{click:function(e){return t.goAdd(t.class_type)}}},[i("image",{staticClass:t._$s(11,"sc","content-default-img"),attrs:{_i:11}}),i("text",{staticClass:t._$s(12,"sc","content-default-text"),attrs:{_i:12}})]):t._e(),t._l(t._$s(13,"f",{forItems:t.imgVideoList}),(function(e,s,a,r){return t._$s("13-"+r,"i",t.imgVideoList)?i("view",{key:t._$s(13,"f",{forIndex:a,key:s}),staticClass:t._$s("13-"+r,"sc","content-photo"),attrs:{_i:"13-"+r},on:{click:function(i){t.isManage?t.toggleSelect(s):t.goAdd(t.class_type,e)}}},[t._$s("14-"+r,"i",t.isManage)?i("image",{staticClass:t._$s("14-"+r,"sc","content-photo-select"),attrs:{src:t._$s("14-"+r,"a-src",t.selectedItems.includes(s)?"/static/images/icons/yes_icon.png":"/static/images/icons/no_icon2.png"),_i:"14-"+r}}):t._e(),i("image",{staticClass:t._$s("15-"+r,"sc","content-photo-img"),attrs:{src:t._$s("15-"+r,"a-src",t.getItem(e).url),_i:"15-"+r}}),i("view",{staticClass:t._$s("16-"+r,"sc","content-photo-title"),attrs:{_i:"16-"+r}},[t._v(t._$s("16-"+r,"t0-0",t._s(t.getItem(e).name)))]),t._$s("17-"+r,"i",1==e.apply_state)?i("view",{staticClass:t._$s("17-"+r,"sc","content-photo-mask"),attrs:{_i:"17-"+r}},[i("image",{staticClass:t._$s("18-"+r,"sc","photo-mask-img"),attrs:{_i:"18-"+r}}),i("text",{staticClass:t._$s("19-"+r,"sc","photo-mask-text"),attrs:{_i:"19-"+r}})]):t._e()]):t._e()}))],2):i("view",{staticClass:t._$s(20,"sc","card-content flex-row-center"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","card-content-page"),attrs:{_i:21}},[t._v(t._$s(21,"t0-0",t._s(t.imgVideoList.length)))]),t._$s(22,"i",!(1==t.class_type&&t.imgVideoList&&t.imgVideoList.length))?i("view",{staticClass:t._$s(22,"sc","content-default content-default2"),attrs:{_i:22},on:{click:function(e){return t.goAdd(t.class_type)}}},[i("image",{staticClass:t._$s(23,"sc","content-default-img"),attrs:{_i:23}}),i("text",{staticClass:t._$s(24,"sc","content-default-text"),attrs:{_i:24}})]):t._e(),t._l(t._$s(25,"f",{forItems:t.imgVideoList}),(function(e,s,a,r){return t._$s("25-"+r,"i",t.imgVideoList)?i("view",{key:t._$s(25,"f",{forIndex:a,key:s}),staticClass:t._$s("25-"+r,"sc","content-photo content-video"),attrs:{_i:"25-"+r},on:{click:function(i){t.isManage?t.toggleSelect(s):t.goAdd(t.class_type,e)}}},[t._$s("26-"+r,"i",t.isManage)?i("image",{staticClass:t._$s("26-"+r,"sc","content-photo-select"),attrs:{src:t._$s("26-"+r,"a-src",t.selectedItems.includes(s)?"/static/images/icons/yes_icon.png":"/static/images/icons/no_icon2.png"),_i:"26-"+r}}):t._e(),i("image",{staticClass:t._$s("27-"+r,"sc","content-photo-video"),attrs:{src:t._$s("27-"+r,"a-src",t.getItem(e).url),_i:"27-"+r}}),i("view",{staticClass:t._$s("28-"+r,"sc","content-photo-title"),attrs:{_i:"28-"+r}},[t._v(t._$s("28-"+r,"t0-0",t._s(t.getItem(e).name)))]),i("view",{staticClass:t._$s("29-"+r,"sc","content-photo-play"),attrs:{_i:"29-"+r}},[i("image",{staticClass:t._$s("30-"+r,"sc","content-photo-play-img"),attrs:{_i:"30-"+r}})]),t._$s("31-"+r,"i",1==e.apply_state)?i("view",{staticClass:t._$s("31-"+r,"sc","content-photo-mask"),attrs:{_i:"31-"+r}},[i("image",{staticClass:t._$s("32-"+r,"sc","photo-mask-img"),attrs:{_i:"32-"+r}}),i("view",{staticClass:t._$s("33-"+r,"sc","photo-mask-text"),attrs:{_i:"33-"+r}})]):t._e(),t._$s("34-"+r,"i",3==e.apply_state)?i("view",{staticClass:t._$s("34-"+r,"sc","content-photo-mask"),attrs:{_i:"34-"+r}},[i("image",{staticClass:t._$s("35-"+r,"sc","photo-mask-img"),attrs:{_i:"35-"+r}}),i("view",{staticClass:t._$s("36-"+r,"sc","photo-mask-text"),attrs:{_i:"36-"+r}})]):t._e()]):t._e()}))],2)]),t._$s(37,"i",t.isManage)?i("view",{staticClass:t._$s(37,"sc","container-buttons flex-row-center-center"),attrs:{_i:37}},[i("view",{staticClass:t._$s(38,"sc","container-buttons-sure2 flex-row-center-center"),attrs:{_i:38},on:{click:t.handleDelete}})]):t._e()],1)},r=[]},"040e":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"buyOrderCard",props:{info:{type:Object}},data:function(){return{}},created:function(){},computed:{distance:function(){return this.info.distance.toFixed(2)},photo:function(){return JSON.parse(this.info.photo)},second_class_title:function(){return this.info.second_class_title.join("\u3001")}},methods:{placeOrder:function(){this.$emit("placeOrder",this.info.id)}}};e.default=s},"0430":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("6473")),r={components:{customNavbar:a.default},data:function(){return{orderId:"",serviceType:1}},onLoad:function(t){t.orderId&&(this.orderId=t.orderId),t.serviceType&&(this.serviceType=t.serviceType)},methods:{goToOrder:function(){1==this.serviceType?uni.redirectTo({url:"/pages/order/userorder-detail?id=".concat(this.orderId)}):uni.redirectTo({url:"/pages/order/userorder-detail?id=".concat(this.orderId,"&serviceType=2")})}}};e.default=r},"043a":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("f8df")),n=s(i("16bb")),o={components:{CommonList:c.default},data:function(){return{selectItem:{},apiObj:{list:{2:"/sj/serversPromotion/list",1:"/syr/serversPromotion/list"},switch:{2:"/sj/serversPromotion/switch",1:"/syr/serversPromotion/switch"}},identityIndex:2,tabsList:[{name:"\u63a8\u5e7f\u4e2d"},{name:"\u5df2\u5931\u6548"}],tabsIndex:0,keyword:"",listQuery:{state:1,title:""}}},computed:{},onLoad:function(){var t=this;return(0,r.default)(a.default.mark((function e(){var i;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:i=uni.getSystemInfoSync(),t.statusBarHeight=i.statusBarHeight,t.$nextTick((function(){t.search()}));case 3:case"end":return e.stop()}}),e)})))()},methods:{goEffect:function(t){uni.navigateTo({url:"/pages/promotion/effect?id=".concat(t.id)})},editServr:function(t){var e=[t],i=encodeURIComponent(JSON.stringify(e));uni.navigateTo({url:"/pages/promotion/setUpServe?type=2&selectedItems=".concat(i)})},copyServr:function(t){var e=[t],i=encodeURIComponent(JSON.stringify(e));uni.navigateTo({url:"/pages/promotion/setUpServe?selectedItems=".concat(i)})},changtabs:function(t){var e=this;this.listQuery.state=t+1,this.tabsIndex=t,this.$nextTick((function(){e.search()}))},openModal:function(t){this.selectItem=t,this.$refs.modal.open()},closeModal:function(){this.$refs.modal.close()},sureModal:function(){var e=this;this.$refs.modal.close();var i={id:this.selectItem.id,state:2};n.default.post(this.apiObj.switch[this.identityIndex],i).then((function(t){200==t.code?(uni.showToast({title:"\u63d0\u4ea4\u6210\u529f",icon:"none"}),e.search()):uni.showToast({title:"\u63d0\u4ea4\u5931\u8d25",icon:"none"})})).catch((function(e){t("error",e," at pages/promotion/promotion.vue:196")}))},percentage:function(t){var e=(100*t).toFixed(1);return"".concat(e,"%")},search:function(){this.$refs.groupRef.manualRefresh(this.listQuery)},goToGuide:function(){uni.navigateTo({url:"/pages/agreement/agreement?type=13&title=\u63a8\u5e7f\u670d\u52a1\u8bf4\u660e"})},goSelectServe:function(){uni.navigateTo({url:"/pages/promotion/selectServe"})}}};e.default=o}).call(this,i("f3b9")["default"])},"0456":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("34cf")),c=s(i("ee10")),n=s(i("7ca3")),o=s(i("16bb")),d=s(i("668a")),l=(i("53d1"),s(i("eae7")),s(i("91d2"))),u=s(i("32a4"));function f(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function _(t){for(var e=1;e7&&this.originalData.name!==e.name)return t("log","\u667a\u80fd\u5224\u65ad\uff1a\u7533\u8bf7\u8bb0\u5f55\u5df2\u8fc7\u671f\uff0c\u5ffd\u7565\u5386\u53f2\u8bb0\u5f55"," at pages/shop/sj-info-change.vue:410"),{isValid:!1,status:null,backText:""}}return{isValid:!0,status:e.apply_state,backText:e.back_text||""}},loadApplyDetails:function(){var e=this;return(0,c.default)(a.default.mark((function i(){var s,r,c;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,t("log","\u5f00\u59cb\u52a0\u8f7d\u7533\u8bf7\u8be6\u60c5..."," at pages/shop/sj-info-change.vue:428"),i.next=4,o.default.post("/sj/userSjAuth/details",{apply_type:e.applyType});case 4:s=i.sent,t("log","\u7533\u8bf7\u8be6\u60c5\u63a5\u53e3\u8fd4\u56de:",s," at pages/shop/sj-info-change.vue:431"),200===s.code&&s.data?(r=s.data,c=e.intelligentStatusCheck(r),c.isValid?(e.applyId=r.id,e.auditStatus=c.status,e.backText=c.backText,t("log","\u5ba1\u6838\u72b6\u6001:",e.auditStatus," at pages/shop/sj-info-change.vue:446"),t("log","\u9a73\u56de\u539f\u56e0:",e.backText," at pages/shop/sj-info-change.vue:447"),2===e.auditStatus&&(t("log","\u5ba1\u6838\u901a\u8fc7\uff0c\u5f3a\u5236\u6e05\u9664\u9a73\u56de\u76f8\u5173\u72b6\u6001"," at pages/shop/sj-info-change.vue:450"),e.backText="",e.hasResubmitted=!1),1!==e.auditStatus&&3!==e.auditStatus||(e.pendingData={head_photo:r.head_photo||e.originalData.head_photo,name:r.name||e.originalData.name,dependency:r.dependency||e.originalData.dependency,address:r.address||e.originalData.address,major:r.major||e.originalData.major,dependency_code:r.dependency_code||e.originalData.dependency_code,dependency_province:r.dependency_province||e.originalData.dependency_province,dependency_city:r.dependency_city||e.originalData.dependency_city,longitude:r.longitude||e.originalData.longitude,latitude:r.latitude||e.originalData.latitude,experienceText:e.getExperienceText(r.major||e.originalData.major)}),2===e.auditStatus&&(e.originalData=_({},e.pendingData))):(e.auditStatus=null,e.backText="",e.applyId=null),e.updatePageStatus()):(t("log","\u7533\u8bf7\u8be6\u60c5\u8fd4\u56de\u6570\u636e\u4e3a\u7a7a\u6216code\u4e0d\u4e3a200:",s," at pages/shop/sj-info-change.vue:479"),e.backText="",e.updatePageStatus()),i.next=14;break;case 9:i.prev=9,i.t0=i["catch"](0),t("error","\u52a0\u8f7d\u7533\u8bf7\u8be6\u60c5\u5931\u8d25:",i.t0," at pages/shop/sj-info-change.vue:484"),e.backText="",e.updatePageStatus();case 14:case"end":return i.stop()}}),i,null,[[0,9]])})))()},updatePageStatus:function(){t("log","\u66f4\u65b0\u9875\u9762\u72b6\u6001\uff0c\u5ba1\u6838\u72b6\u6001:",this.auditStatus," at pages/shop/sj-info-change.vue:492"),3!==this.auditStatus&&(this.backText=""),this.hasResubmitted&&3===this.auditStatus&&(t("log","\u68c0\u6d4b\u5230\u5df2\u91cd\u65b0\u63d0\u4ea4\uff0c\u5f3a\u5236\u8bbe\u7f6e\u4e3a\u5ba1\u6838\u4e2d\u72b6\u6001"," at pages/shop/sj-info-change.vue:499"),this.auditStatus=1,this.backText=""),1===this.auditStatus?(this.showAuditTip=!0,this.buttonType="view",this.editable=!1,this.showPendingData=!1,this.displayData=_({},this.originalData)):3===this.auditStatus?(this.showAuditTip=!1,this.buttonType="reject",this.editable=!1,this.showPendingData=!1,this.displayData=_({},this.originalData)):(this.showAuditTip=!1,this.buttonType="change",this.editable=!1,this.showPendingData=!1,this.displayData=_({},this.originalData)),this.updateNavTitle()},updateNavTitle:function(){this.editable||this.showPendingData?this.navTitle="\u95e8\u5e97\u4fe1\u606f\u53d8\u66f4":this.navTitle="\u95e8\u5e97\u4fe1\u606f"},getExperienceText:function(t){return["","\u5b9e\u4e60","1-3\u5e74","3-5\u5e74","5-10\u5e74","10\u5e74\u4ee5\u4e0a"][t]||""},startChange:function(){this.editable=!0,this.buttonType="edit",this.displayData=_({},this.pendingData),this.updateNavTitle()},cancelChange:function(){this.editable=!1,this.buttonType="change",this.displayData=_({},this.originalData),this.updateNavTitle()},togglePendingData:function(){this.showPendingData=!this.showPendingData,this.showPendingData?this.displayData=_({},this.pendingData):this.displayData=_({},this.originalData),this.updateNavTitle()},submitChange:function(){var e=this;return(0,c.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(t("log","\u5f00\u59cb\u63d0\u4ea4\u53d8\u66f4..."," at pages/shop/sj-info-change.vue:565"),t("log","\u63d0\u4ea4\u524d\u7684displayData:",e.displayData," at pages/shop/sj-info-change.vue:566"),e.validateForm()){i.next=4;break}return i.abrupt("return");case 4:return i.prev=4,uni.showLoading({title:"\u63d0\u4ea4\u4e2d..."}),e.pendingData=_({},e.displayData),s={apply_type:e.applyType,head_photo:e.displayData.head_photo,name:e.displayData.name,dependency:e.displayData.dependency,address:e.displayData.address,longitude:e.displayData.longitude,latitude:e.displayData.latitude,dependency_code:e.displayData.dependency_code,dependency_province:e.displayData.dependency_province,dependency_city:e.displayData.dependency_city,major:e.displayData.major},t("log","\u63d0\u4ea4\u7684\u6570\u636e:",s," at pages/shop/sj-info-change.vue:591"),i.next=11,o.default.post("/sj/userSjAuth/apply",s);case 11:r=i.sent,uni.hideLoading(),200===r.code?(uni.showToast({title:"\u63d0\u4ea4\u6210\u529f",icon:"none"}),e.backText="",e.auditStatus=1,e.hasResubmitted=!0,e.pendingData=_({},e.displayData),e.editable=!1,e.buttonType="view",e.showAuditTip=!0,e.showPendingData=!1,setTimeout((function(){e.loadApplyDetails()}),1500)):uni.showToast({title:r.msg||"\u63d0\u4ea4\u5931\u8d25",icon:"none"}),i.next=21;break;case 16:i.prev=16,i.t0=i["catch"](4),uni.hideLoading(),t("error","\u63d0\u4ea4\u5931\u8d25:",i.t0," at pages/shop/sj-info-change.vue:620"),uni.showToast({title:"\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u91cd\u8bd5",icon:"none"});case 21:case"end":return i.stop()}}),i,null,[[4,16]])})))()},validateForm:function(){return this.displayData.head_photo?this.displayData.name?this.displayData.dependency?this.displayData.address?!!this.displayData.major||(uni.showToast({title:"\u8bf7\u9009\u62e9\u4e13\u4e1a\u7ecf\u9a8c",icon:"none"}),!1):(uni.showToast({title:"\u8bf7\u9009\u62e9\u95e8\u5e97\u8be6\u7ec6\u5730\u5740",icon:"none"}),!1):(uni.showToast({title:"\u8bf7\u9009\u62e9\u95e8\u5e97\u6240\u5728\u5730",icon:"none"}),!1):(uni.showToast({title:"\u8bf7\u8f93\u5165\u5e97\u94fa\u540d\u79f0",icon:"none"}),!1):(uni.showToast({title:"\u8bf7\u4e0a\u4f20\u5e97\u94falogo",icon:"none"}),!1)},getButtonAreaHeight:function(){var t=this;setTimeout((function(){var e=uni.createSelectorQuery().in(t);e.select(".bottom-actions").boundingClientRect((function(e){e&&(t.buttonAreaHeight=e.height+20)})).exec()}),100)},showTipPopup:function(t){var e={store_logo:{title:"\u5982\u4f55\u67e5\u770b\u5e97\u94falogo",image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/98ad5649-db6d-4453-a308-c592fe155ed9"},store_name:{title:"\u5982\u4f55\u67e5\u770b\u5e97\u94fa\u540d\u79f0",image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/4a2dc8c2-98d4-4465-ae31-b2ea2d13aa23"}};e[t]&&(this.currentTipType=t,this.tipTitle=e[t].title,this.tipImage=e[t].image,this.showTipPopupFlag=!0)},hideTipPopup:function(){this.showTipPopupFlag=!1},chooseImage:function(t){var e=this;return(0,c.default)(a.default.mark((function i(){var s,r,c,n,o,d,f,_,p,v,h;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(e.editable){i.next=2;break}return i.abrupt("return");case 2:return s=uni.getSystemInfoSync(),r="ios"===s.platform,i.next=6,new Promise((function(t,e){uni.showActionSheet({itemList:["\u62cd\u7167","\u4ece\u76f8\u518c\u9009\u62e9"],success:t,fail:e})})).catch((function(){return{tapIndex:-1}}));case 6:if(c=i.sent,-1!==c.tapIndex){i.next=9;break}return i.abrupt("return");case 9:if(0!==c.tapIndex){i.next=35;break}if(!r){i.next=14;break}e._openCamera(t,["camera"]),i.next=33;break;case 14:return e.isShowCameraPer=!0,i.next=17,l.default.checkPermission("camera","\u9700\u8981\u76f8\u673a\u6743\u9650\u4ee5\u62cd\u7167");case 17:if(n=i.sent,o=n.granted,!o){i.next=23;break}return e.isShowCameraPer=!1,e._openCamera(t,["camera"]),i.abrupt("return");case 23:return e.isShowCameraPer=!1,i.next=26,e.showPermissionDialog("\u76f8\u673a\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u8bbf\u95ee\u60a8\u7684\u76f8\u673a\u6743\u9650\uff0c\u4ee5\u4fbf\u60a8\u62cd\u7167\u4e0a\u4f20\u5e97\u94falogo");case 26:if(d=i.sent,d){i.next=29;break}return i.abrupt("return");case 29:return i.next=31,l.default.requestPermission("camera","\u9700\u8981\u76f8\u673a\u6743\u9650\u4ee5\u62cd\u7167");case 31:f=i.sent,f?e._openCamera(t,["camera"]):u.default.openAppSettings();case 33:i.next=59;break;case 35:if(1!==c.tapIndex){i.next=59;break}if(!r){i.next=40;break}e._openCamera(t,["album"]),i.next=59;break;case 40:return e.isShowStoragePer=!0,i.next=43,l.default.checkPermission("photo_library","\u9700\u8981\u5b58\u50a8\u6743\u9650\u4ee5\u9009\u62e9\u7167\u7247");case 43:if(_=i.sent,p=_.granted,!p){i.next=49;break}return e.isShowStoragePer=!1,e._openCamera(t,["album"]),i.abrupt("return");case 49:return e.isShowStoragePer=!1,i.next=52,e.showPermissionDialog("\u5b58\u50a8\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u8bbf\u95ee\u60a8\u7684\u76f8\u518c\u6743\u9650\uff0c\u4ee5\u4fbf\u60a8\u4e0a\u4f20\u5e97\u94falogo");case 52:if(v=i.sent,v){i.next=55;break}return i.abrupt("return");case 55:return i.next=57,l.default.requestPermission("photo_library","\u9700\u8981\u5b58\u50a8\u6743\u9650\u4ee5\u9009\u62e9\u7167\u7247");case 57:h=i.sent,h?e._openCamera(t,["album"]):u.default.openAppSettings();case 59:case"end":return i.stop()}}),i)})))()},_openCamera:function(e,i){var s=this;return(0,c.default)(a.default.mark((function e(){var r,c,n,o;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,new Promise((function(t,e){uni.chooseImage({count:1,sizeType:["compressed"],sourceType:i,success:t,fail:e})}));case 3:if(r=e.sent,r.tempFilePaths&&0!==r.tempFilePaths.length){e.next=6;break}return e.abrupt("return");case 6:return c=r.tempFilePaths[0],n={path:c,size:0},e.next=10,s.directUpload(n,s.userId,s.identity+1);case 10:o=e.sent,o&&(s.displayData.head_photo=o,t("log","\u56fe\u7247\u4e0a\u4f20\u6210\u529f\uff0chead_photo \u66f4\u65b0\u4e3a:",o," at pages/shop/sj-info-change.vue:769")),e.next=18;break;case 14:e.prev=14,e.t0=e["catch"](0),t("log","\u4e0a\u4f20\u56fe\u7247\u9519\u8bef:",e.t0," at pages/shop/sj-info-change.vue:772"),e.t0.errMsg&&e.t0.errMsg.includes("cancel")||uni.showToast({title:"\u4e0a\u4f20\u5931\u8d25",icon:"none"});case 18:case"end":return e.stop()}}),e,null,[[0,14]])})))()},showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))},openCamera:function(e){var i=this;return(0,c.default)(a.default.mark((function e(){var s,r,c,n;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,new Promise((function(t,e){uni.chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:t,fail:e})}));case 3:if(s=e.sent,s.tempFilePaths&&0!==s.tempFilePaths.length){e.next=6;break}return e.abrupt("return");case 6:return r=s.tempFilePaths[0],c={path:r,size:0},e.next=10,i.directUpload(c,i.userId,i.identity+1);case 10:n=e.sent,n&&(i.displayData.head_photo=n,t("log","\u56fe\u7247\u4e0a\u4f20\u6210\u529f\uff0chead_photo \u66f4\u65b0\u4e3a:",n," at pages/shop/sj-info-change.vue:814")),e.next=18;break;case 14:e.prev=14,e.t0=e["catch"](0),t("log","\u4e0a\u4f20\u56fe\u7247\u9519\u8bef:",e.t0," at pages/shop/sj-info-change.vue:817"),e.t0.errMsg&&e.t0.errMsg.includes("cancel")||uni.showToast({title:"\u4e0a\u4f20\u5931\u8d25",icon:"none"});case 18:case"end":return e.stop()}}),e,null,[[0,14]])})))()},directUpload:function(e,i,s){return(0,c.default)(a.default.mark((function r(){var c,n,d,l,u,f,_;return a.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:return a.prev=0,c=(new Date).getTime(),n=1==s?"yh":2==s?"syr":3==s?"sj":"",d="jpg",e.path.includes(".")&&(l=e.path.split("."),u=l[l.length-1].toLowerCase(),u&&u.length<=4&&(d=u)),f="".concat(i,"_").concat(n,"_").concat(c,".").concat(d),t("log","\u5b89\u5168\u6587\u4ef6\u540d:",f," at pages/shop/sj-info-change.vue:840"),a.next=9,o.default.post("/user/getalioss",{type:s,kind:1});case 9:return _=a.sent,a.next=12,new Promise((function(t,i){uni.uploadFile({url:_.host,filePath:e.path,name:"file",formData:{key:_.dir+f,policy:_.policy,OSSAccessKeyId:_.ossAccessKeyId,success_action_status:"200",signature:_.signature},success:function(e){if(200===e.statusCode){var s="".concat(_.host,"/").concat(_.dir).concat(f);t(s)}else i(new Error("\u4e0a\u4f20\u5931\u8d25"))},fail:i})}));case 12:return a.abrupt("return",a.sent);case 15:throw a.prev=15,a.t0=a["catch"](0),t("error","\u76f4\u63a5\u4e0a\u4f20\u5931\u8d25:",a.t0," at pages/shop/sj-info-change.vue:868"),a.t0;case 19:case"end":return a.stop()}}),r,null,[[0,15]])})))()},showLocationPopup:function(){this.editable&&(this.showLocationPopupFlag=!0)},hideLocationPopup:function(){this.showLocationPopupFlag=!1},bindChangeLocation:function(t){this.locationValue=t.detail.value;var e=t.detail.value[0]||0,i=t.detail.value[1]||0;this.locatinCitys=this.ChinaCitys[e].citys,this.locationAreas=this.locatinCitys[i].areas},confirmLocationSelect:function(){var t=this.locationValue,e=t[0]||0,i=t[1]||0,s=t[2]||0,a=this.ChinaCitys[e].province,r=this.locatinCitys[i].city,c=this.locationAreas[s].area;if(this.displayData.dependency=a+"-"+r+"-"+c,this.displayData.address="",this.displayData.longitude="",this.displayData.latitude="",this.ChinaCitys[e]&&this.ChinaCitys[e].code){var n=this.ChinaCitys[e].code.toString();this.displayData.dependency_province=n.substring(0,6)}if(this.locatinCitys[i]&&this.locatinCitys[i].code){var o=this.locatinCitys[i].code.toString();this.displayData.dependency_city=o.substring(0,6)}if(this.locationAreas[s]&&this.locationAreas[s].code){var d=this.locationAreas[s].code.toString();this.displayData.dependency_code=d.substring(0,6)}this.hideLocationPopup()},getAddressInfo:function(){var t=this;return(0,c.default)(a.default.mark((function e(){var i,s,r,c,n,o;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t.editable){e.next=2;break}return e.abrupt("return");case 2:if(i=uni.getSystemInfoSync(),s="ios"===i.platform,!s){e.next=8;break}t._navigateToAddress(),e.next=27;break;case 8:return t.isShowLocationPer=!0,e.next=11,l.default.checkPermission("location","\u9700\u8981\u5b9a\u4f4d\u6743\u9650\u4ee5\u83b7\u53d6\u60a8\u7684\u4f4d\u7f6e");case 11:if(r=e.sent,c=r.granted,!c){e.next=17;break}return t.isShowLocationPer=!1,t._navigateToAddress(),e.abrupt("return");case 17:return t.isShowLocationPer=!1,e.next=20,t.showPermissionDialog("\u5b9a\u4f4d\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u8bbf\u95ee\u60a8\u7684\u4f4d\u7f6e\u6743\u9650\uff0c\u4ee5\u4fbf\u4e3a\u60a8\u9009\u62e9\u66f4\u7cbe\u51c6\u7684\u5730\u5740");case 20:if(n=e.sent,n){e.next=23;break}return e.abrupt("return");case 23:return e.next=25,l.default.requestPermission("location","\u9700\u8981\u5b9a\u4f4d\u6743\u9650\u4ee5\u83b7\u53d6\u60a8\u7684\u4f4d\u7f6e");case 25:o=e.sent,o?t._navigateToAddress():u.default.openAppSettings();case 27:case"end":return e.stop()}}),e)})))()},_navigateToAddress:function(){var e="source=sj_info";if(this.displayData.dependency){var i=encodeURIComponent(this.displayData.dependency);e+="&dependency=".concat(i),this.displayData.dependency_code&&(e+="&dependency_code=".concat(this.displayData.dependency_code))}this.displayData.longitude&&this.displayData.latitude&&(e+="&longitude=".concat(this.displayData.longitude,"&latitude=").concat(this.displayData.latitude)),this.fromAddressPage=!0,uni.navigateTo({url:"/pages/address/search?".concat(e),success:function(){return t("log","\u6210\u529f\u8df3\u8f6c\u5230\u5730\u5740\u9009\u62e9\u9875\u9762"," at pages/shop/sj-info-change.vue:961")},fail:function(e){return t("error","\u8df3\u8f6c\u5730\u5740\u9009\u62e9\u9875\u9762\u5931\u8d25:",e," at pages/shop/sj-info-change.vue:962")}})},handleAddressSelected:function(e){if(e){var i="";if(e.name?i=e.name:e.address&&(i=e.address),i){if(this.displayData.address=i,this.pendingData.address=i,e.location){var s=e.location.split(","),a=(0,r.default)(s,2),c=a[0],n=a[1];this.displayData.longitude=c||"",this.displayData.latitude=n||"",this.pendingData.longitude=c||"",this.pendingData.latitude=n||""}if(e.pname||e.cityname||e.adname){var o=[];e.pname&&o.push(e.pname),e.cityname&&o.push(e.cityname),e.adname&&o.push(e.adname),this.displayData.dependency=o.join("-"),this.pendingData.dependency=o.join("-")}t("log","\u5730\u5740\u66f4\u65b0\u5b8c\u6210:",{address:this.displayData.address,dependency:this.displayData.dependency,longitude:this.displayData.longitude,latitude:this.displayData.latitude}," at pages/shop/sj-info-change.vue:996"),this.$forceUpdate()}}},openExperiencePicker:function(){var e=this;this.editable&&uni.showActionSheet({itemList:["\u5b9e\u4e60","1-3\u5e74","3-5\u5e74","5-10\u5e74","10\u5e74\u4ee5\u4e0a"],success:function(i){e.displayData.major=i.tapIndex+1,e.displayData.experienceText=["\u5b9e\u4e60","1-3\u5e74","3-5\u5e74","5-10\u5e74","10\u5e74\u4ee5\u4e0a"][i.tapIndex],t("log","\u9009\u62e9\u4e13\u4e1a\u7ecf\u9a8c:",e.displayData.major,e.displayData.experienceText," at pages/shop/sj-info-change.vue:1014")}})}}};e.default=p}).call(this,i("f3b9")["default"])},"0507":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","order-card"),attrs:{_i:0},on:{click:t.goDetail}},[i("view",{staticClass:t._$s(1,"sc","orderNumBox"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","order-id white-space-nowrap"),attrs:{_i:2}},[t._v(t._$s(2,"t0-0",t._s(t.dataItem.number)))]),i("view",{staticClass:t._$s(3,"sc","stateText"),attrs:{_i:3}},[t._v(t._$s(3,"t0-0",t._s(t.stateText)))])]),i("view",{staticClass:t._$s(4,"sc","service-container"),attrs:{_i:4},on:{click:function(e){return t.$emit("goOrderDetail",t.dataItem.id)}}},[i("image",{staticClass:t._$s(5,"sc","service-img"),attrs:{src:t._$s(5,"a-src",t.photo[0]),_i:5}}),i("view",{staticClass:t._$s(6,"sc","service-info"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","topInfo"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","price_title"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","service-type white-space-nowrap"),attrs:{_i:9}},[t._v(t._$s(9,"t0-0",t._s(t.dataItem.title)))]),i("view",{staticClass:t._$s(10,"sc","service-price"),attrs:{_i:10}},[t._v(t._$s(10,"t0-0",t._s(Number(t.dataItem.order_money))))])]),i("view",{staticClass:t._$s(11,"sc","service_subTitle white-space-nowrap"),attrs:{_i:11}},[t._v(t._$s(11,"t0-0",t._s(t.dataItem.first_class_title+" "+t.dataItem.second_class_title.join("\u3001"))))])]),i("view",{staticClass:t._$s(12,"sc","service-address"),attrs:{_i:12}},[t._v(t._$s(12,"t0-0",t._s(t.dataItem.add_time)))])])]),i("view",{staticClass:t._$s(13,"sc","time-info"),attrs:{_i:13}},[t._v(t._$s(13,"t0-0",t._s(t.useTime)))]),t._$s(14,"i",t.dataItem.state>=1&&t.dataItem.state<5)?i("view",{staticClass:t._$s(14,"sc","button-group"),attrs:{_i:14}},[t._$s(15,"i",2==t.dataItem.state||3==t.dataItem.state)?i("view",{staticClass:t._$s(15,"sc","btn cancel-btn"),attrs:{_i:15},on:{click:function(e){return e.stopPropagation(),t.emitRefund(e)}}}):t._e(),t._$s(16,"i",1==t.dataItem.state)?i("view",{staticClass:t._$s(16,"sc","btn cancel-btn"),attrs:{_i:16},on:{click:function(e){return e.stopPropagation(),t.emitCancel(e)}}}):t._e(),t._$s(17,"i",1==t.dataItem.state)?i("view",{staticClass:t._$s(17,"sc","btn accept-btn"),attrs:{_i:17},on:{click:function(e){return e.stopPropagation(),t.emitGoPay(e)}}}):t._e()]):t._e()])},a=[]},"0514":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("7ca3")),n=s(i("d5b0")),o=s(i("5443")),d=s(i("6473")),l=s(i("16bb"));function u(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function f(t){for(var e=1;e0},isAccountDisabled:function(){var t;return 2===(null===(t=this.userInfo)||void 0===t?void 0:t.is_ok)},currentCardList:function(){var t=this;return this.cardList.filter((function(e){return t.checkShow(e)})).map((function(e){var i;return f(f({},e),{},{list:null===(i=e.list)||void 0===i?void 0:i.filter((function(e){return t.checkShow(e)}))})}))},backgroundColor:function(){return this.scrollTop>10?"rgba(255, 255, 255, ".concat(.02*this.scrollTop,");"):"transparent"}},onLoad:function(){uni.hideTabBar();var t=uni.getSystemInfoSync(),e=t.statusBarHeight,i="ios"===t.platform?44:48;this.cssVars={"--status-bar-height":"".concat(e,"px"),"--nav-main-height":"".concat(i,"px")}},onShow:function(){this.isLogin=!!uni.getStorageSync("accessToken"),this.isLogin&&this.getUserInfo()},methods:{checkAccess:function(t){if(!this.isAccountDisabled)return!0;return!(!t.type||!["logout"].includes(t.type))||(!(!t.path||!["/subPackages/other/contact/contact"].includes(t.path))||(this.showStopUseModal(),!1))},showStopUseModal:function(){uni.showModal({title:"\u63d0\u793a",content:"\u60a8\u7684\u8d26\u53f7\u5df2\u505c\u6b62\u4f7f\u7528\u3002\u82e5\u6709\u7591\u95ee\u6216\u6062\u590d\u9700\u6c42\uff0c\u8bf7\u5c3d\u5feb\u8054\u7cfb\u5e73\u53f0\u5de5\u4f5c\u4eba\u5458\u6838\u5b9e\u5904\u7406\u3002",showCancel:!1,confirmText:"\u6211\u77e5\u9053\u4e86"})},checkShow:function(t){return(void 0==t.id_type||t.id_type==this.id_type)&&(void 0!=t.isNeedLogin?this.isLogin:void 0==t.self_state||(t.self_state?1==this.userInfo.self_state:1!=this.userInfo.self_state))},goToRights:function(){this.isAccountDisabled?this.showStopUseModal():uni.navigateTo({url:"/subPackages/other/agreement/agreement?type=16&title=\u6743\u76ca\u8bf4\u660e"})},goToWallet:function(){uni.navigateTo({url:"/pages/wallet/wallet"})},saveToast:function(){setTimeout((function(){uni.showToast({title:"\u4fdd\u5b58\u6210\u529f\uff01",icon:"none"})}),500)},getAvatar:function(e){var i=this;return(0,r.default)(a.default.mark((function s(){var r,c,n,o;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(!i.isAccountDisabled){s.next=3;break}return i.showStopUseModal(),s.abrupt("return");case 3:return t("log","getAvatar:",e," at pages/my/my.vue:438"),r=e.detail.avatarUrl,s.prev=5,c="".concat(Date.now(),"-").concat(Math.floor(1e3*Math.random()),".jpg"),uni.showLoading({title:"\u4e0a\u4f20\u4e2d...",mask:!0}),s.next=10,i.getOssUploadConfig(c);case 10:if(n=s.sent,n){s.next=15;break}return uni.hideLoading(),uni.showToast({title:"\u83b7\u53d6\u4e0a\u4f20\u914d\u7f6e\u5931\u8d25",icon:"none"}),s.abrupt("return");case 15:return s.next=17,i.uploadToOss(r,n);case 17:o="".concat(n.host,"/").concat(n.dir).concat(c),uni.hideLoading(),uni.showToast({title:"\u5934\u50cf\u4e0a\u4f20\u6210\u529f"}),t("log","OSS\u56fe\u7247URL:",o," at pages/my/my.vue:472"),i.saveProfile(o),s.next=28;break;case 24:s.prev=24,s.t0=s["catch"](5),uni.hideLoading(),t("error","\u5934\u50cf\u4e0a\u4f20\u5f02\u5e38:",s.t0," at pages/my/my.vue:476");case 28:case"end":return s.stop()}}),s,null,[[5,24]])})))()},saveProfile:function(t){var e=this;if(this.isAccountDisabled)this.showStopUseModal();else{uni.showLoading({title:"\u4fdd\u5b58\u4e2d..."});var i=t,s=this.userInfo,a=s.nick_name,r=s.sex,c=s.dependency;l.default.post("/syr/User/editUser",{nick_name:a,head_photo:i,sex:r,dependency:c}).then((function(i){uni.hideLoading(),e.userInfo.head_photo=t,uni.showToast({title:"\u4fdd\u5b58\u6210\u529f\uff01",icon:"none"})}))}},getOssUploadConfig:function(e){var i=this;return(0,r.default)(a.default.mark((function s(){var r;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(!i.isAccountDisabled){s.next=3;break}return i.showStopUseModal(),s.abrupt("return");case 3:return s.prev=3,s.next=6,l.default.post("/user/getalioss",{type:1,kind:1,filename:e});case 6:return r=s.sent,s.abrupt("return",f(f({},r),{},{filename:e}));case 10:throw s.prev=10,s.t0=s["catch"](3),t("error","\u83b7\u53d6OSS\u914d\u7f6e\u5931\u8d25:",s.t0," at pages/my/my.vue:530"),s.t0;case 14:case"end":return s.stop()}}),s,null,[[3,10]])})))()},uploadToOss:function(t,e){return(0,r.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.abrupt("return",new Promise((function(i,s){var a={name:e.filename,policy:e.policy,OSSAccessKeyId:e.ossAccessKeyId,signature:e.signature,success_action_status:"200",key:e.dir+e.filename||e.dir+t.split("/").pop()};uni.uploadFile({url:e.host,filePath:t,name:"file",formData:a,timeout:3e4,success:function(t){200===t.statusCode?i():s(new Error("OSS\u4e0a\u4f20\u5931\u8d25\uff0c\u72b6\u6001\u7801: ".concat(t.statusCode)))},fail:function(t){s(new Error("\u4e0a\u4f20\u8bf7\u6c42\u5931\u8d25: ".concat(t.errMsg)))}})})));case 1:case"end":return i.stop()}}),i)})))()},closePopup:function(){this.tipShow=!1},okBtn:function(){if(this.isAccountDisabled)this.showStopUseModal();else if("tjRuzhu"==this.tipType){var t,e;if(getApp().globalData.artisanType=2,2==this.userInfo.is_ok)return void uni.navigateTo({url:"/subPackages/ruzhu/stopuse"});if(1==this.userInfo.id_type&&1==(null===(t=this.userInfo.auth_info)||void 0===t?void 0:t.id_type))return void uni.navigateTo({url:"/subPackages/ruzhu/complete?id_type=1"});null!==(e=this.userInfo.auth_info)&&void 0!==e&&e.apply_state?1==this.userInfo.auth_info.apply_state?uni.navigateTo({url:"/subPackages/ruzhu/submitres?applyState=1"}):2==this.userInfo.auth_info.apply_state?uni.navigateTo({url:"/subPackages/ruzhu/submitres?applyState=2"}):3==this.userInfo.auth_info.apply_state&&uni.navigateTo({url:"/subPackages/ruzhu/submitres?applyState=3"}):uni.navigateTo({url:"/subPackages/ruzhu/complete"})}else"login"==this.tipType&&uni.navigateTo({url:"/pages/blogPopup/blogPopup"})},getUserInfo:function(){var t=this;l.default.post("/sj/user/getUser").then((function(e){t.userInfo=e.data,uni.setStorageSync("syrId",e.data.id)})),this.getInviteList()},goLogin:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(!t.isAccountDisabled){e.next=3;break}return t.showStopUseModal(),e.abrupt("return");case 3:t.tipsText="\u60a8\u73b0\u5728\u8fd8\u672a\u767b\u5f55\uff0c\u662f\u5426\u786e\u5b9a\u767b\u5f55\uff1f",t.tipShow=!0,t.tipType="login",uni.hideTabBar();case 7:case"end":return e.stop()}}),e)})))()},goToOrderList:function(t){this.isAccountDisabled?this.showStopUseModal():this.isLogin||uni.showToast({title:"\u60a8\u6682\u672a\u767b\u5f55\uff0c\u65e0\u6cd5\u4f7f\u7528\u6b64\u529f\u80fd\uff01",icon:"none"})},logout:function(){uni.showModal({title:"\u63d0\u793a",content:"\u786e\u5b9a\u8981\u9000\u51fa\u767b\u5f55\u5417\uff1f",success:function(t){t.confirm&&(uni.clearStorageSync(),uni.reLaunch({url:"/pages/home/home"}))}})},handleFunction:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(!e.isLogin||"setting"!==t.type){i.next=3;break}return uni.navigateTo({url:"/pages/settings/index"}),i.abrupt("return");case 3:if(e.checkAccess(t)){i.next=5;break}return i.abrupt("return");case 5:if("/pages/ruzhu/ruzhu"!=t.path){i.next=8;break}return l.default.post("/sj/userSjAuth/details",{type:1}).then((function(e){200==e.code&&e.data&&2!=e.data.apply_state?uni.navigateTo({url:"/pages/ruzhu/submitres?identity=".concat(e.data.id_type,"&applyState=").concat(e.data.apply_state)}):uni.navigateTo({url:t.path})})),i.abrupt("return");case 8:if(!t.type){i.next=12;break}uni.navigateTo({url:"".concat(t.path,"?type=").concat(t.type)}),i.next=19;break;case 12:if(1!=t.go_id_type||0!=(null===(s=e.userInfo)||void 0===s?void 0:s.id_type)){i.next=15;break}return uni.showToast({title:"\u60a8\u6682\u672a\u5165\u9a7b\uff0c\u65e0\u6cd5\u4f7f\u7528".concat(t.title,"\uff01"),icon:"none"}),i.abrupt("return");case 15:if(e.isLogin||!t.go_id_type){i.next=18;break}return uni.showToast({title:"\u60a8\u6682\u672a\u767b\u5f55\uff0c\u65e0\u6cd5\u4f7f\u7528".concat(t.title,"\uff01"),icon:"none"}),i.abrupt("return");case 18:uni.navigateTo({url:"".concat(t.path)});case 19:case"end":return i.stop()}}),i)})))()},goToProfile:function(){this.isAccountDisabled?this.showStopUseModal():0!=this.userInfo.id_type&&uni.navigateTo({url:"/pages/artisan/profile"})},goToInviteList:function(){this.isAccountDisabled?this.showStopUseModal():0!=this.userInfo.id_type&&uni.navigateTo({url:"/subPackages/affiliated/inviteList?type="+this.id_type})},getInviteList:function(){var t=this;l.default.post("/syr/sjSyrBind/inviteList",{page:1,limit:999}).then((function(e){t.inviteList=e.data.list}))},goTypeSelect:function(){this.isAccountDisabled?this.showStopUseModal():l.default.post("/syr/userSyrAuth/details",{type:1,id_type:1}).then((function(t){200==t.code&&t.data&&2!=t.data.apply_state?uni.navigateTo({url:"/subPackages/ruzhu/submitres?identity=".concat(t.data.id_type,"&applyState=").concat(t.data.apply_state)}):uni.navigateTo({url:"/subPackages/ruzhu/typeSelect?id_type=1"})}))}}};e.default=_}).call(this,i("f3b9")["default"])},"0560":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getToken=function(){return uni.getStorageSync("accessToken")},e.removeToken=function(){uni.removeStorageSync("accessToken"),uni.removeStorageSync("refreshToken")},e.setToken=function(t){uni.setStorageSync("accessToken",t)}},"0596":function(t,e,i){"use strict";i.r(e);var s=i("60a0"),a=i("95c0");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"bba8a922",null,!1,s["a"],void 0);e["default"]=n.exports},"05a1":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("7ca3")),c=s(i("ee10")),n=s(i("af34")),o=s(i("16bb"));function d(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function l(t){for(var e=1;e0)){i.next=10;break}return i.next=6,e.getCurrentEffectiveSkillIds();case 6:r=i.sent,c=(0,n.default)(r).sort().join(","),o=(0,n.default)(s).sort().join(","),c!==o&&(t("log","\u68c0\u6d4b\u5230\u6280\u80fd\u5df2\u53d8\u66f4\uff0c\u6e05\u7406\u9a73\u56de\u76f8\u5173\u5b58\u50a8"," at pages/artisan/service-skills.vue:188"),uni.removeStorageSync("rejectedSkills"),uni.removeStorageSync("lastRejectTime"));case 10:i.next=15;break;case 12:i.prev=12,i.t0=i["catch"](0),t("error","\u6e05\u7406\u9a73\u56de\u6280\u80fd\u5b58\u50a8\u5931\u8d25:",i.t0," at pages/artisan/service-skills.vue:194");case 15:case"end":return i.stop()}}),i,null,[[0,12]])})))()},getButtonAreaHeight:function(){var t=this;setTimeout((function(){var e=uni.createSelectorQuery().in(t);e.select(".bottom-actions").boundingClientRect((function(e){e&&(t.buttonAreaHeight=e.height+20)})).exec()}),100)},updateNavTitle:function(){this.editable||this.showPendingSkills?this.navTitle="\u670d\u52a1\u6280\u80fd\u53d8\u66f4":this.navTitle="\u670d\u52a1\u6280\u80fd"},loadServiceSkills:function(){var e=this;return(0,c.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,o.default.post("/user/firstclass");case 3:s=i.sent,e.serviceList=s.data.map((function(t){return l(l({},t),{},{checked:!1})})),t("log","\u670d\u52a1\u6280\u80fd\u5217\u8868:",e.serviceList," at pages/artisan/service-skills.vue:228"),i.next=12;break;case 8:i.prev=8,i.t0=i["catch"](0),t("error","\u52a0\u8f7d\u670d\u52a1\u6280\u80fd\u5931\u8d25:",i.t0," at pages/artisan/service-skills.vue:230"),uni.showToast({title:"\u52a0\u8f7d\u670d\u52a1\u6280\u80fd\u5931\u8d25",icon:"none"});case 12:case"end":return i.stop()}}),i,null,[[0,8]])})))()},loadApplyDetails:function(){var e=this;return(0,c.default)(a.default.mark((function i(){var s,r,c;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,t("log","\u5f00\u59cb\u52a0\u8f7d\u624b\u827a\u4eba\u7533\u8bf7\u8be6\u60c5..."," at pages/artisan/service-skills.vue:241"),i.next=4,o.default.post("/syr/userSyrAuth/details",{apply_type:2});case 4:if(s=i.sent,t("log","\u624b\u827a\u4eba\u7533\u8bf7\u8be6\u60c5\u63a5\u53e3\u8fd4\u56de:",s," at pages/artisan/service-skills.vue:246"),200!==s.code||!s.data){i.next=43;break}if(r=s.data,e.applyId=r.id,e.auditStatus=r.apply_state,e.backText=r.back_text||"",t("log","\u5ba1\u6838\u72b6\u6001:",e.auditStatus," at pages/artisan/service-skills.vue:254"),t("log","\u539f\u59cbservers_kill\u6570\u636e:",r.servers_kill," at pages/artisan/service-skills.vue:255"),!r.servers_kill){i.next=38;break}if(c=[],Array.isArray(r.servers_kill)?c=r.servers_kill.map((function(t){var e=parseInt(t);return isNaN(e)?null:e})).filter((function(t){return null!==t})):"string"===typeof r.servers_kill&&(c=r.servers_kill.split(",").map((function(t){var e=parseInt(t.trim());return isNaN(e)?null:e})).filter((function(t){return null!==t}))),t("log","\u89e3\u6790\u540e\u7684\u6280\u80fdID:",c," at pages/artisan/service-skills.vue:273"),1!==e.auditStatus){i.next=23;break}e.selectedSkills=(0,n.default)(c),t("log","\u5ba1\u6838\u4e2d\uff0c\u5f85\u5ba1\u6838\u6280\u80fd:",e.selectedSkills," at pages/artisan/service-skills.vue:278"),uni.setStorageSync("lastApplyTime",(new Date).getTime()),i.next=37;break;case 23:if(3!==e.auditStatus){i.next=28;break}return i.next=26,e.handleRejectedSkills(c);case 26:i.next=37;break;case 28:if(2!==e.auditStatus){i.next=37;break}return e.currentSkills=(0,n.default)(c),e.originalSkills=(0,n.default)(c),e.selectedSkills=(0,n.default)(c),t("log","\u5ba1\u6838\u901a\u8fc7\uff0c\u8bbe\u7f6e\u5f53\u524d\u751f\u6548\u6280\u80fd:",e.currentSkills," at pages/artisan/service-skills.vue:289"),uni.removeStorageSync("rejectedSkills"),uni.removeStorageSync("lastRejectTime"),i.next=37,e.forceReloadCurrentSkills();case 37:e.updateCheckedStatus();case 38:if(2===e.auditStatus){i.next=41;break}return i.next=41,e.loadCurrentEffectiveSkills();case 41:i.next=48;break;case 43:return t("log","\u7533\u8bf7\u8be6\u60c5\u8fd4\u56de\u6570\u636e\u4e3a\u7a7a\u6216code\u4e0d\u4e3a200:",s," at pages/artisan/service-skills.vue:307"),uni.removeStorageSync("rejectedSkills"),uni.removeStorageSync("lastRejectTime"),i.next=48,e.loadCurrentEffectiveSkills();case 48:e.updatePageStatus(),i.next=57;break;case 51:return i.prev=51,i.t0=i["catch"](0),t("error","\u52a0\u8f7d\u7533\u8bf7\u8be6\u60c5\u5931\u8d25:",i.t0," at pages/artisan/service-skills.vue:318"),i.next=56,e.loadCurrentEffectiveSkills();case 56:e.updatePageStatus();case 57:case"end":return i.stop()}}),i,null,[[0,51]])})))()},forceReloadCurrentSkills:function(){var e=this;return(0,c.default)(a.default.mark((function i(){var s,r,c;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,t("log","\u5f3a\u5236\u91cd\u65b0\u52a0\u8f7d\u5f53\u524d\u751f\u6548\u6280\u80fd..."," at pages/artisan/service-skills.vue:328"),i.next=4,e.getCurrentEffectiveSkillIds();case 4:s=i.sent,r=(0,n.default)(e.currentSkills).sort().join(","),c=(0,n.default)(s).sort().join(","),t("log","\u7533\u8bf7\u901a\u8fc7\u6280\u80fd:",r," at pages/artisan/service-skills.vue:335"),t("log","\u5f53\u524d\u751f\u6548\u6280\u80fd:",c," at pages/artisan/service-skills.vue:336"),r!==c?t("log","\u6570\u636e\u4e0d\u4e00\u81f4\uff0c\u4f7f\u7528\u7533\u8bf7\u901a\u8fc7\u7684\u6570\u636e"," at pages/artisan/service-skills.vue:339"):(t("log","\u6570\u636e\u4e00\u81f4\uff0c\u4f7f\u7528\u5f53\u524d\u751f\u6548\u6570\u636e"," at pages/artisan/service-skills.vue:342"),e.currentSkills=(0,n.default)(s),e.originalSkills=(0,n.default)(s),e.selectedSkills=(0,n.default)(s)),e.updateCheckedStatus(),i.next=16;break;case 13:i.prev=13,i.t0=i["catch"](0),t("error","\u5f3a\u5236\u91cd\u65b0\u52a0\u8f7d\u5f53\u524d\u751f\u6548\u6280\u80fd\u5931\u8d25:",i.t0," at pages/artisan/service-skills.vue:350");case 16:case"end":return i.stop()}}),i,null,[[0,13]])})))()},handleRejectedSkills:function(e){var i=this;return(0,c.default)(a.default.mark((function s(){var r,c,o,d,l;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return r=uni.getStorageSync("rejectedSkills"),uni.getStorageSync("lastRejectTime"),s.next=4,i.getCurrentEffectiveSkillIds();case 4:if(c=s.sent,o=(0,n.default)(e).sort().join(","),d=r?(0,n.default)(r).sort().join(","):"",l=(0,n.default)(c).sort().join(","),t("log","\u9a73\u56de\u6570\u636e\u6bd4\u8f83:",{rejectedSorted:o,storedSorted:d,currentSorted:l}," at pages/artisan/service-skills.vue:366"),o!==l){s.next=16;break}return t("log","\u9a73\u56de\u6570\u636e\u4e0e\u5f53\u524d\u751f\u6548\u6280\u80fd\u76f8\u540c\uff0c\u53ef\u80fd\u6570\u636e\u8fc7\u65f6\uff0c\u5ffd\u7565\u672c\u6b21\u9a73\u56de\u6570\u636e"," at pages/artisan/service-skills.vue:374"),i.selectedSkills=(0,n.default)(c),uni.removeStorageSync("rejectedSkills"),uni.removeStorageSync("lastRejectTime"),i.backText="",s.abrupt("return");case 16:o!==d&&(t("log","\u53d1\u73b0\u65b0\u7684\u9a73\u56de\u6570\u636e\uff0c\u66f4\u65b0\u5b58\u50a8:",e," at pages/artisan/service-skills.vue:385"),uni.setStorageSync("rejectedSkills",e),uni.setStorageSync("lastRejectTime",(new Date).getTime())),i.selectedSkills=(0,n.default)(e),t("log","\u5ba1\u6838\u9a73\u56de\uff0c\u88ab\u9a73\u56de\u6280\u80fd:",i.selectedSkills," at pages/artisan/service-skills.vue:391");case 19:case"end":return s.stop()}}),s)})))()},getCurrentEffectiveSkillIds:function(){return(0,c.default)(a.default.mark((function e(){var i,s,r;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,i={type:2,_t:(new Date).getTime()},e.next=4,o.default.post("/user/getuser",i);case 4:if(s=e.sent,1!==s.state||!s.data||!s.data.servers_kill){e.next=10;break}return r=[],Array.isArray(s.data.servers_kill)?r=s.data.servers_kill.map((function(t){return parseInt(t)})).filter((function(t){return!isNaN(t)})):"string"===typeof s.data.servers_kill&&(r=s.data.servers_kill.split(",").map((function(t){return parseInt(t.trim())})).filter((function(t){return!isNaN(t)}))),t("log","\u83b7\u53d6\u5230\u7684\u5f53\u524d\u751f\u6548\u6280\u80fdID:",r," at pages/artisan/service-skills.vue:410"),e.abrupt("return",r);case 10:return e.abrupt("return",[]);case 13:return e.prev=13,e.t0=e["catch"](0),t("error","\u83b7\u53d6\u5f53\u524d\u751f\u6548\u6280\u80fd\u5931\u8d25:",e.t0," at pages/artisan/service-skills.vue:415"),e.abrupt("return",[]);case 17:case"end":return e.stop()}}),e,null,[[0,13]])})))()},loadCurrentEffectiveSkills:function(){var e=this;return(0,c.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,t("log","\u5f00\u59cb\u52a0\u8f7d\u5f53\u524d\u751f\u6548\u7684\u670d\u52a1\u6280\u80fd..."," at pages/artisan/service-skills.vue:423"),i.next=4,e.getCurrentEffectiveSkillIds();case 4:s=i.sent,e.currentSkills=(0,n.default)(s),e.originalSkills=(0,n.default)(s),t("log","\u5f53\u524d\u751f\u6548\u7684\u6280\u80fdID:",e.currentSkills," at pages/artisan/service-skills.vue:429"),null!==e.auditStatus&&3!==e.auditStatus||(e.selectedSkills=(0,n.default)(s)),e.updateCheckedStatus(),i.next=19;break;case 12:i.prev=12,i.t0=i["catch"](0),t("error","\u52a0\u8f7d\u5f53\u524d\u751f\u6548\u6280\u80fd\u5931\u8d25:",i.t0," at pages/artisan/service-skills.vue:440"),e.currentSkills=[],e.originalSkills=[],1!==e.auditStatus&&(e.selectedSkills=[]),e.updateCheckedStatus();case 19:case"end":return i.stop()}}),i,null,[[0,12]])})))()},isCurrentSkillSelected:function(t){return this.currentSkills.includes(t)},updateCheckedStatus:function(){var e=this;t("log","\u66f4\u65b0\u9009\u4e2d\u72b6\u6001\uff0c\u5f53\u524d\u670d\u52a1\u6280\u80fd\u5217\u8868:",this.serviceList," at pages/artisan/service-skills.vue:457"),t("log","\u8981\u9009\u4e2d\u7684\u6280\u80fdID:",this.selectedSkills," at pages/artisan/service-skills.vue:458"),this.serviceList.forEach((function(t){t.checked=e.selectedSkills.includes(t.id)}))},updatePageStatus:function(){if(t("log","\u66f4\u65b0\u9875\u9762\u72b6\u6001\uff0c\u5ba1\u6838\u72b6\u6001:",this.auditStatus," at pages/artisan/service-skills.vue:466"),1===this.auditStatus)this.showAuditTip=!0,this.buttonType="view",this.editable=!1,this.showPendingSkills=!1;else if(3===this.auditStatus){var e=uni.getStorageSync("rejectedSkills"),i=e?(0,n.default)(e).sort().join(","):"",s=(0,n.default)(this.currentSkills).sort().join(",");t("log","\u9a73\u56de\u6570\u636e\u6709\u6548\u6027\u68c0\u67e5:",{rejectedSorted:i,currentSorted:s}," at pages/artisan/service-skills.vue:479"),i===s?(t("log","\u9a73\u56de\u6570\u636e\u65e0\u6548\uff0c\u6309\u65e0\u7533\u8bf7\u72b6\u6001\u5904\u7406"," at pages/artisan/service-skills.vue:486"),this.showAuditTip=!1,this.buttonType="change",this.editable=!1,this.showPendingSkills=!1,this.backText="",uni.removeStorageSync("rejectedSkills"),uni.removeStorageSync("lastRejectTime")):(this.showAuditTip=!1,this.buttonType="change",this.editable=!1,this.showPendingSkills=!1)}else 2===this.auditStatus?(this.showAuditTip=!1,this.buttonType="change",this.editable=!1,this.showPendingSkills=!1,t("log","\u5ba1\u6838\u901a\u8fc7\u72b6\u6001\uff0c\u5f53\u524d\u751f\u6548\u6280\u80fd:",this.currentSkills," at pages/artisan/service-skills.vue:507")):(this.showAuditTip=!1,this.buttonType="change",this.editable=!1,this.showPendingSkills=!1);this.updateNavTitle(),t("log","\u6700\u7ec8\u9875\u9762\u72b6\u6001:",{showAuditTip:this.showAuditTip,buttonType:this.buttonType,editable:this.editable,showPendingSkills:this.showPendingSkills,currentSkills:this.currentSkills,selectedSkills:this.selectedSkills,backText:this.backText}," at pages/artisan/service-skills.vue:517")},toggleSkillSelect:function(e){this.editable&&(this.$set(this.serviceList[e],"checked",!this.serviceList[e].checked),this.selectedSkills=this.serviceList.filter((function(t){return t.checked})).map((function(t){return t.id})),t("log","\u5f53\u524d\u9009\u4e2d\u7684\u6280\u80fdID:",this.selectedSkills," at pages/artisan/service-skills.vue:539"))},togglePendingSkills:function(){this.showPendingSkills=!this.showPendingSkills,this.updateNavTitle()},startChange:function(){this.editable=!0,this.buttonType="edit",this.showPendingSkills=!0,this.updateNavTitle()},cancelChange:function(){this.selectedSkills=(0,n.default)(this.originalSkills),this.updateCheckedStatus(),this.editable=!1,this.buttonType="change",this.showPendingSkills=!1,this.updateNavTitle()},submitChange:function(){var e=this;return(0,c.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(0!==e.selectedSkills.length){i.next=3;break}return uni.showToast({title:"\u8bf7\u81f3\u5c11\u9009\u62e9\u4e00\u4e2a\u670d\u52a1\u6280\u80fd",icon:"none"}),i.abrupt("return");case 3:if(e.hasChanges){i.next=6;break}return uni.showToast({title:"\u672a\u68c0\u6d4b\u5230\u53d8\u66f4",icon:"none"}),i.abrupt("return");case 6:return i.prev=6,uni.showLoading({title:"\u63d0\u4ea4\u4e2d..."}),s={apply_type:2,servers_kill:e.selectedSkills},t("log","\u63d0\u4ea4\u7684\u6570\u636e:",s," at pages/artisan/service-skills.vue:599"),i.next=12,o.default.post("/syr/userSyrAuth/apply",s);case 12:r=i.sent,uni.hideLoading(),200===r.code?(uni.showToast({title:"\u63d0\u4ea4\u6210\u529f",icon:"none"}),uni.removeStorageSync("rejectedSkills"),uni.removeStorageSync("lastRejectTime"),uni.setStorageSync("lastApplyTime",(new Date).getTime()),e.showAuditTip=!0,e.editable=!1,e.buttonType="view",e.auditStatus=1,e.showPendingSkills=!1,e.updateNavTitle(),setTimeout((0,c.default)(a.default.mark((function t(){return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,e.loadApplyDetails();case 2:case"end":return t.stop()}}),t)}))),1e3),setTimeout((function(){e.loadApplyDetails()}),1e3)):uni.showToast({title:r.msg||"\u63d0\u4ea4\u5931\u8d25",icon:"none"}),i.next=22;break;case 17:i.prev=17,i.t0=i["catch"](6),uni.hideLoading(),t("error","\u63d0\u4ea4\u53d8\u66f4\u5931\u8d25:",i.t0," at pages/artisan/service-skills.vue:644"),uni.showToast({title:"\u63d0\u4ea4\u5931\u8d25",icon:"none"});case 22:case"end":return i.stop()}}),i,null,[[6,17]])})))()}}};e.default=u}).call(this,i("f3b9")["default"])},"05b3":function(t,e,i){"use strict";i.r(e);var s=i("8a07"),a=i("755f");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"05d1":function(t,e,i){"use strict";i.r(e);var s=i("832a"),a=i("e098");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"5d1bda6c",null,!1,s["a"],void 0);e["default"]=n.exports},"05fc":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uvLine:i("9b27").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","uv-divider"),style:t._$s(0,"s",[t.$uv.addStyle(t.customStyle)]),attrs:{_i:0},on:{click:t.click}},[i("uv-line",{attrs:{color:t.lineColor,customStyle:t.leftLineStyle,hairline:t.hairline,dashed:t.dashed,_i:1}}),t._$s(2,"i",t.dot)?i("text",{staticClass:t._$s(2,"sc","uv-divider__dot"),attrs:{_i:2}}):t._$s(3,"e",t.text)?i("text",{staticClass:t._$s(3,"sc","uv-divider__text"),style:t._$s(3,"s",[t.textStyle]),attrs:{_i:3}},[t._v(t._$s(3,"t0-0",t._s(t.text)))]):t._e(),i("uv-line",{attrs:{color:t.lineColor,customStyle:t.rightLineStyle,hairline:t.hairline,dashed:t.dashed,_i:4}})],1)},r=[]},"0637":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uniPopup:i("c3a6").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",[i("uni-popup",{ref:"popup",attrs:{_i:1},on:{change:t.popChange}},[i("view",{staticClass:t._$s(2,"sc","pop-cards"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","pop-cards-title"),attrs:{_i:3}},[t._v(t._$s(3,"t0-0",t._s(t.title))),i("image",{staticClass:t._$s(4,"sc","pop-close"),attrs:{_i:4},on:{click:t.close}})]),i("view",{staticClass:t._$s(5,"sc","pop-btn"),attrs:{_i:5},on:{click:t.goAdd}},[t._v(t._$s(5,"t0-0",t._s(t.btnText)))])])])],1)},r=[]},"0680":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.createAnimation=function(t,e){if(!e)return;return clearTimeout(e.timer),new d(t,e)};var a=s(i("7ca3")),r=s(i("67ad")),c=s(i("0bdb"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function o(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=this.$.$refs["ani"].ref;if(i)return new Promise((function(s,a){nvueAnimation.transition(i,o({styles:t},e),(function(t){s()}))}))}},{key:"_nvueNextAnimate",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=arguments.length>2?arguments[2]:void 0,a=t[i];if(a){var r=a.styles,c=a.config;this._animateRun(r,c).then((function(){i+=1,e._nvueNextAnimate(t,i,s)}))}else this.currentStepAnimates={},"function"===typeof s&&s(),this.isEnd=!0}},{key:"step",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.animation.step(t),this}},{key:"run",value:function(t){this.$.animationData=this.animation.export(),this.$.timer=setTimeout((function(){"function"===typeof t&&t()}),this.$.durationTime)}}]),t}(),l=["matrix","matrix3d","rotate","rotate3d","rotateX","rotateY","rotateZ","scale","scale3d","scaleX","scaleY","scaleZ","skew","skewX","skewY","translate","translate3d","translateX","translateY","translateZ"];l.concat(["opacity","backgroundColor"],["width","height","left","right","top","bottom"]).forEach((function(t){d.prototype[t]=function(){var e;return(e=this.animation)[t].apply(e,arguments),this}}))},"068e":function(t,e,i){"use strict";i.r(e);var s=i("4328"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"06bd":function(t,e,i){"use strict";i.r(e);var s=i("41ad"),a=i("90e2");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"06be":function(t,e,i){"use strict";i.r(e);var s=i("2a21"),a=i("6497");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"06c4":function(t,e,i){"use strict";i.r(e);var s=i("73bd"),a=i("816c");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"77e40102",null,!1,s["a"],void 0);e["default"]=n.exports},"074f":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("d5b0")),o=s(i("f8df")),d={components:{TabBar:n.default,CommonList:o.default},data:function(){return{nums:[0,0],statusBarHeight:0,queryData:{}}},onShow:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:uni.getStorageSync("accessToken")&&t.$nextTick((function(){t.search()}));case 1:case"end":return e.stop()}}),e)})))()},onLoad:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:uni.hideTabBar(),t.statusBarHeight=t.getRpxStatusBarHeight();case 2:case"end":return e.stop()}}),e)})))()},methods:{goMessageSetting:function(){uni.getStorageSync("accessToken")?uni.navigateTo({url:"/pages/message/settings"}):uni.navigateTo({url:"/pages/blogPopup/blogPopup"})},messageUnreadNum:function(e){return(0,r.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,c.default.post("/sj/push/messageUnreadNum",{message_type_id:e});case 3:if(s=i.sent,t("log","\u6d88\u606f\u6570\u91cf",s," at pages/message/message.vue:128"),200!=s.code){i.next=9;break}return i.abrupt("return",s.data.count<=99?s.data.count:"99+");case 9:return i.abrupt("return",0);case 10:i.next=15;break;case 12:i.prev=12,i.t0=i["catch"](0),t("error","\u83b7\u53d6\u6570\u91cf\u5931\u8d25",i.t0," at pages/message/message.vue:136");case 15:case"end":return i.stop()}}),i,null,[[0,12]])})))()},messageReadAll:function(){var t=this;c.default.post("/sj/push/messageReadAll").then(function(){var e=(0,r.default)(a.default.mark((function e(i){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:200==i.code?(t.search(),t.messageUpudateNum(),uni.showToast({title:"\u6e05\u9664\u6210\u529f",icon:"none"})):uni.showToast({title:i.msg,icon:"none"});case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())},goToCouponNotice:function(){uni.navigateTo({url:"/pages/message/coupon_notice"})},search:function(){this.$refs.groupRef.manualRefresh(this.queryData)},formatParams:function(t){var e="";for(var i in t)t.hasOwnProperty(i)&&(e+="".concat(i,"=").concat(encodeURIComponent(t[i]),"&"));return e.slice(0,-1)},goOrder:function(e){t("log","order",e," at pages/message/message.vue:180"),uni.navigateTo({url:"".concat(e.ext.path,"?").concat(this.formatParams(e.ext.data),"&push_id=").concat(e.id),success:function(e){t("log","\u9875\u9762\u8df3\u8f6c\u6210\u529f",e," at pages/message/message.vue:186")},fail:function(e){t("error","\u9875\u9762\u8df3\u8f6c\u5931\u8d25",e," at pages/message/message.vue:190")}})}}};e.default=d}).call(this,i("f3b9")["default"])},"0751":function(t,e,i){"use strict";i.r(e);var s=i("f4de"),a=i("7b5a");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"455dedc4",null,!1,s["a"],void 0);e["default"]=n.exports},"0785":function(t,e,i){"use strict";i.r(e);var s=i("ec63"),a=i("893b");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"079d":function(t,e,i){"use strict";i.r(e);var s=i("ce02"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"07f4":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e0||uni.showToast({title:"\u8bc6\u522b\u5b8c\u6210\uff0c\u4f46\u672a\u83b7\u53d6\u5230\u6709\u6548\u4fe1\u606f",icon:"none",duration:3e3}),s.next=23;break;case 19:s.prev=19,s.t0=s["catch"](0),uni.showToast({title:s.t0.message||"\u8bc6\u522b\u5931\u8d25\uff0c\u8bf7\u624b\u52a8\u586b\u5199",icon:"none"}),t("error","\u8425\u4e1a\u6267\u7167\u8bc6\u522b\u5931\u8d25:",s.t0," at pages/shop/qualification_sj_change.vue:469");case 23:return s.prev=23,i.isRecognizing=!1,s.finish(23);case 26:case"end":return s.stop()}}),s,null,[[0,19,23,26]])})))()},checkBusinessLicenseRecognition:function(t){for(var e=0,i=["uscc_num","uscc_name","legal_name","uscc_type"];e7&&this.originalData.uscc_name!==e.uscc_name)return t("log","\u667a\u80fd\u5224\u65ad\uff1a\u7533\u8bf7\u8bb0\u5f55\u5df2\u8fc7\u671f\uff0c\u5ffd\u7565\u5386\u53f2\u8bb0\u5f55"," at pages/shop/qualification_sj_change.vue:986"),{isValid:!1,status:null,backText:""}}return{isValid:!0,status:e.apply_state,backText:e.back_text||""}},updatePageStatus:function(){t("log","\u66f4\u65b0\u9875\u9762\u72b6\u6001\uff0c\u5ba1\u6838\u72b6\u6001:",this.auditStatus," at pages/shop/qualification_sj_change.vue:1003"),t("log","\u5f53\u524d\u9a73\u56de\u539f\u56e0:",this.backText," at pages/shop/qualification_sj_change.vue:1004"),3!==this.auditStatus&&(this.backText="",t("log","\u975e\u9a73\u56de\u72b6\u6001\uff0c\u5f3a\u5236\u6e05\u9664\u9a73\u56de\u539f\u56e0"," at pages/shop/qualification_sj_change.vue:1009")),1===this.auditStatus?(this.showAuditTip=!0,this.buttonType="view",this.editable=!1,this.showPendingData?this.displayData=_({},this.pendingData):this.displayData=_({},this.originalData)):2===this.auditStatus?(this.showAuditTip=!1,this.buttonType="change",this.editable=!1,this.showPendingData=!1,this.displayData=_({},this.originalData),t("log","\u5ba1\u6838\u901a\u8fc7\uff0c\u663e\u793a\u6700\u65b0\u6570\u636e:",this.displayData," at pages/shop/qualification_sj_change.vue:1030")):3===this.auditStatus?(this.showAuditTip=!1,this.buttonType="reject",this.editable=!1,this.showPendingData=!1,this.displayData=_({},this.originalData)):(this.showAuditTip=!1,this.buttonType="change",this.editable=!1,this.showPendingData=!1,this.displayData=_({},this.originalData)),this.updateNavTitle(),t("log","\u6700\u7ec8\u9875\u9762\u72b6\u6001:",{auditStatus:this.auditStatus,backText:this.backText,buttonType:this.buttonType,editable:this.editable,showPendingData:this.showPendingData,displayData:this.displayData}," at pages/shop/qualification_sj_change.vue:1047")},updateNavTitle:function(){this.editable||this.showPendingData?this.navTitle="\u8d44\u8d28\u4fe1\u606f\u53d8\u66f4":this.navTitle="\u8d44\u8d28\u4fe1\u606f"},startChange:function(){this.editable=!0,this.buttonType="edit",this.displayData=_({},this.pendingData),this.updateNavTitle()},cancelChange:function(){this.editable=!1,this.buttonType="change",this.displayData=_({},this.originalData),this.updateNavTitle()},togglePendingData:function(){this.showPendingData=!this.showPendingData,t("log","\u5207\u6362\u663e\u793a\u5f85\u5ba1\u6838\u6570\u636e:",this.showPendingData," at pages/shop/qualification_sj_change.vue:1085"),this.showPendingData?(this.displayData=_({},this.pendingData),t("log","\u663e\u793apendingData:",this.displayData," at pages/shop/qualification_sj_change.vue:1090")):(this.displayData=_({},this.originalData),t("log","\u663e\u793aoriginalData:",this.displayData," at pages/shop/qualification_sj_change.vue:1094")),this.updateNavTitle()},submitChange:function(){var e=this;return(0,n.default)(a.default.mark((function i(){var s,r,c,n,d,l,u,f,p;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(t("log","\u5f00\u59cb\u63d0\u4ea4\u8d44\u8d28\u4fe1\u606f\u53d8\u66f4..."," at pages/shop/qualification_sj_change.vue:1101"),e.validateForm()){i.next=3;break}return i.abrupt("return");case 3:return i.prev=3,uni.showLoading({title:"\u63d0\u4ea4\u4e2d..."}),i.next=7,o.default.post("/user/check",{name:e.displayData.legal_name,idcard:e.displayData.legal_idcard_num});case 7:if(r=i.sent,"401"!=r.Code){i.next=12;break}return uni.hideLoading(),uni.showToast({title:"\u60a8\u7684\u8eab\u4efd\u8bc1\u53f7\u4e0e\u59d3\u540d\u4e0d\u5339\u914d",icon:"none"}),i.abrupt("return");case 12:if("1"==(null===(s=r.ResultObject)||void 0===s?void 0:s.BizCode)){i.next=16;break}return uni.hideLoading(),uni.showToast({title:"\u60a8\u7684\u8eab\u4efd\u8bc1\u53f7\u4e0e\u59d3\u540d\u4e0d\u5339\u914d",icon:"none"}),i.abrupt("return");case 16:return c={apply_type:e.applyType,uscc_type:e.displayData.uscc_type,uscc_photo:e.displayData.uscc_photo,uscc_num:e.displayData.uscc_num,uscc_name:e.displayData.uscc_name,uscc_expiry_type:e.displayData.uscc_expiry_type,uscc_expiry:e.displayData.uscc_expiry,legal_name:e.displayData.legal_name,legal_phone:e.displayData.legal_phone,legal_idcard_num:e.displayData.legal_idcard_num,legal_idcard_expiry_type:e.displayData.legal_idcard_expiry_type,legal_idcard_expiry:e.displayData.legal_idcard_expiry,legal_idcard_positive:e.displayData.legal_idcard_positive,legal_idcard_negative:e.displayData.legal_idcard_negative},1===e.displayData.uscc_expiry_type?c.uscc_expiry="\u957f\u4e45":2===e.displayData.uscc_expiry_type&&(n=e.formatDateForBackend(e.displayData.license_start_date),d=e.formatDateForBackend(e.displayData.license_end_date),c.uscc_expiry="".concat(n," \u2014\u2014 ").concat(d)),1===e.displayData.legal_idcard_expiry_type?c.legal_idcard_expiry="\u957f\u4e45":2===e.displayData.legal_idcard_expiry_type&&(l=e.formatDateForBackend(e.displayData.idcard_start_date),u=e.formatDateForBackend(e.displayData.idcard_end_date),c.legal_idcard_expiry="".concat(l," \u2014\u2014 ").concat(u)),t("log","\u63d0\u4ea4\u7684\u6570\u636e:",c," at pages/shop/qualification_sj_change.vue:1171"),i.next=22,o.default.post("/sj/userSjAuth/apply",c);case 22:f=i.sent,uni.hideLoading(),200===f.code?(uni.showToast({title:"\u63d0\u4ea4\u6210\u529f",icon:"none"}),e.pendingData=_({},e.displayData),t("log","\u63d0\u4ea4\u6210\u529f\uff0c\u66f4\u65b0pendingData:",e.pendingData," at pages/shop/qualification_sj_change.vue:1185"),e.auditStatus=1,e.backText="",e.hasResubmitted=!0,e.applyId=(null===(p=f.data)||void 0===p?void 0:p.id)||e.applyId,t("log","\u7533\u8bf7ID:",e.applyId," at pages/shop/qualification_sj_change.vue:1192"),e.editable=!1,e.buttonType="view",e.showAuditTip=!0,e.showPendingData=!1,e.displayData=_({},e.originalData),e.updateNavTitle(),setTimeout((function(){e.loadApplyDetails()}),1500)):uni.showToast({title:f.msg||"\u63d0\u4ea4\u5931\u8d25",icon:"none"}),i.next=32;break;case 27:i.prev=27,i.t0=i["catch"](3),uni.hideLoading(),t("error","\u63d0\u4ea4\u5931\u8d25:",i.t0," at pages/shop/qualification_sj_change.vue:1214"),uni.showToast({title:"\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u91cd\u8bd5",icon:"none"});case 32:case"end":return i.stop()}}),i,null,[[3,27]])})))()},showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))},validateForm:function(){for(var t=this,e=[{field:"uscc_photo",message:"\u8bf7\u4e0a\u4f20\u8425\u4e1a\u6267\u7167\u7167\u7247"},{field:"uscc_type",message:"\u8bf7\u8f93\u5165\u5546\u6237\u7c7b\u578b"},{field:"uscc_num",message:"\u8bf7\u8f93\u5165\u8425\u4e1a\u6267\u7167\u53f7\u7801"},{field:"uscc_name",message:"\u8bf7\u8f93\u5165\u4f01\u4e1a\u540d\u79f0"},{field:"legal_idcard_positive",message:"\u8bf7\u4e0a\u4f20\u8eab\u4efd\u8bc1\u6b63\u9762\u7167\u7247"},{field:"legal_idcard_negative",message:"\u8bf7\u4e0a\u4f20\u8eab\u4efd\u8bc1\u53cd\u9762\u7167\u7247"},{field:"legal_name",message:"\u8bf7\u8f93\u5165\u6cd5\u4eba\u4ee3\u8868"},{field:"legal_phone",message:"\u8bf7\u8f93\u5165\u6cd5\u4eba\u8054\u7cfb\u65b9\u5f0f"},{field:"legal_idcard_num",message:"\u8bf7\u8f93\u5165\u6cd5\u4eba\u8eab\u4efd\u8bc1\u53f7"},{condition:function(){return!t.displayData.legal_idcard_expiry_type},message:"\u8bf7\u9009\u62e9\u8eab\u4efd\u8bc1\u6709\u6548\u671f\u7c7b\u578b"},{condition:function(){return!t.displayData.idcard_start_date},message:"\u8bf7\u9009\u62e9\u8eab\u4efd\u8bc1\u5f00\u59cb\u65e5\u671f"},{condition:function(){return 2===t.displayData.legal_idcard_expiry_type&&!t.displayData.idcard_end_date},message:"\u8bf7\u9009\u62e9\u8eab\u4efd\u8bc1\u7ed3\u675f\u65e5\u671f"}],i=0,s=e;i=0?r:0,c,n],this.showDatePickerFlag=!0},hideDatePicker:function(){this.showDatePickerFlag=!1},bindDateChange:function(t){this.dateValue=t.detail.value},confirmDate:function(){var t=(0,r.default)(this.dateValue,3),e=t[0],i=t[1],s=t[2],a=this.years[e],c=this.months[i],n=this.days[s],o="".concat(a,"\u5e74").concat(c,"\u6708").concat(n,"\u65e5"),d=new Date(a,c-1,n),l=new Date;if(l.setHours(0,0,0,0),this.currentDateField.endsWith("_start_date")){if(d>l)return void uni.showToast({title:"\u5f00\u59cb\u65e5\u671f\u4e0d\u80fd\u665a\u4e8e\u4eca\u5929",icon:"none"});var u=this.currentDateField.replace("_start_date","_end_date");if(this.displayData[u]&&"\u957f\u4e45\u6709\u6548"!==this.displayData[u]){var f=this.displayData[u],_=f.match(/(\d+)\u5e74(\d+)\u6708(\d+)\u65e5/);if(_){var p=new Date(parseInt(_[1]),parseInt(_[2])-1,parseInt(_[3]));if(d>p)return void uni.showToast({title:"\u5f00\u59cb\u65e5\u671f\u4e0d\u80fd\u665a\u4e8e\u7ed3\u675f\u65e5\u671f",icon:"none"})}}if("idcard_start_date"===this.currentDateField){var v=a+20,h="".concat(v,"\u5e74").concat(c,"\u6708").concat(n,"\u65e5");this.displayData.idcard_end_date=h}}else if(this.currentDateField.endsWith("_end_date")){var m=this.currentDateField.replace("_end_date","_start_date");if(this.displayData[m]){var g=this.displayData[m],y=g.match(/(\d+)\u5e74(\d+)\u6708(\d+)\u65e5/);if(y){var b=new Date(parseInt(y[1]),parseInt(y[2])-1,parseInt(y[3]));if(d<=b)return void uni.showToast({title:"\u7ed3\u675f\u65e5\u671f\u5fc5\u987b\u665a\u4e8e\u5f00\u59cb\u65e5\u671f",icon:"none"})}}else if(d=t.length?{done:!0}:{done:!1,value:t[s++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,c=!0,n=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return c=t.done,t},e:function(t){n=!0,r=t},f:function(){try{c||null==i.return||i.return()}finally{if(n)throw r}}}}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i1024*i.maxSize*1024)){s.next=3;break}return uni.showToast({title:"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7".concat(i.maxSize,"MB"),icon:"none"}),s.abrupt("return",Promise.reject(new Error("\u6587\u4ef6\u5927\u5c0f\u8d85\u51fa\u9650\u5236")));case 3:return r=(new Date).getTime(),"image/*"==i.accept?c=e.path.split("."):"video/*"==i.accept&&(c=e.tempFilePath.split(".")),t("log","imageType",c," at components/ali-oss-uploader/ali-oss-uploader.vue:308"),n=1==i.type?"yh":2==i.type?"syr":3==i.type?"sj":"",o="".concat(i.userId,"_").concat(n,"_").concat(r,".").concat(c[c.length-1]),t("log","name",o," at components/ali-oss-uploader/ali-oss-uploader.vue:312"),s.prev=9,s.next=12,i.getOssConfig();case 12:return d=s.sent,s.next=15,i.uploadToOss(e,d,o);case 15:if(s.sent,l="".concat(d.host,"/").concat(d.dir).concat(o),"image/*"!=i.accept){s.next=26;break}return u=["".concat(l)],i.fileList=i.fileList.concat(u),i.$emit("input",i.fileList),i.$emit("change",i.fileList),i.$emit("success",u),s.abrupt("return",u);case 26:if("video/*"!=i.accept){s.next=33;break}return f=l,i.oneFile=l,i.$emit("input",i.oneFile),i.$emit("change",i.oneFile),i.$emit("success",f),s.abrupt("return",f);case 33:s.next=40;break;case 35:throw s.prev=35,s.t0=s["catch"](9),t("error","\u4e0a\u4f20\u5931\u8d25:",s.t0," at components/ali-oss-uploader/ali-oss-uploader.vue:337"),i.$emit("error",s.t0),s.t0;case 40:case"end":return s.stop()}}),s,null,[[9,35]])})))()},getOssConfig:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,n.default.post("/user/getalioss",{type:e.type,kind:e.kind});case 3:return s=i.sent,i.abrupt("return",s);case 7:throw i.prev=7,i.t0=i["catch"](0),t("error","\u83b7\u53d6OSS\u914d\u7f6e\u5931\u8d25:",i.t0," at components/ali-oss-uploader/ali-oss-uploader.vue:349"),i.t0;case 11:case"end":return i.stop()}}),i,null,[[0,7]])})))()},uploadToOss:function(t,e,i){var s=this;return new Promise((function(a,r){var c,n={};n.name=i,n.policy=e.policy,n.OSSAccessKeyId=e.ossAccessKeyId,n.success_action_status="200",n.signature=e.signature,n.key=e.dir+i,n.file=t,"image/*"==s.accept?c=t.path:"video/*"==s.accept&&(c=t.tempFilePath),uni.uploadFile({url:e.host,filePath:c,name:"file",formData:{key:e.dir+i,policy:e.policy,OSSAccessKeyId:e.ossAccessKeyId,success_action_status:200,signature:e.signature},success:function(t){a("".concat(e.host,"/").concat(e.dir).concat(i))}})}))},handlePreview:function(t){uni.previewImage({current:t,urls:this.fileList.map((function(t){return t.url}))})},handleDelete:function(t){if("image/*"==this.accept){var e=this.fileList[t];this.fileList.splice(t,1),this.$emit("input",this.fileList),this.$emit("change",this.fileList),this.$emit("delete",e,t)}else if("video/*"==this.accept){var i=this.oneFile;this.oneFile="",this.$emit("input",this.oneFile),this.$emit("change",this.oneFile),this.$emit("delete",i)}}}};e.default=f}).call(this,i("f3b9")["default"])},"0b4e":function(t,e,i){"use strict";i.r(e);var s=i("c220"),a=i("7b7b");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"379278b8",null,!1,s["a"],void 0);e["default"]=n.exports},"0b59":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("16bb")),r=s(i("2251")),c=s(i("6bf1")),n=s(i("06c4")),o=s(i("f8df")),d=s(i("3da9")),l={components:{searchBox:c.default,serviecFirstTab:r.default,FilterPanel:n.default,CommonList:o.default,shopCard:d.default},data:function(){return{statusBarHeight:0,queryData:{type:2,userLngz:"",userLat:""},activeId:"",tabs:[]}},onLoad:function(){this.getLocation();var t=uni.getSystemInfoSync();this.statusBarHeight=t.statusBarHeight,this.getFirstClass()},methods:{searchConfrim:function(t){this.search()},getLocation:function(){var t={},e=uni.getStorageSync("userAdrees");t=e?e.addressRes:getApp().globalData.addressRes,this.queryData.userLat=t.latitude,this.queryData.userLngz=t.longitude},search:function(){this.$refs.groupRef.manualRefresh(this.queryData)},tabClick:function(t){this.activeId=t,this.queryData.first_class=t,this.search()},getFirstClass:function(){var t=this;a.default.post("/user/firstclass").then((function(e){t.queryData.first_class=e.data[0].id,t.activeId=e.data[0].id,t.tabs=e.data,t.search()}))},handleFilter:function(e){t("log","\u7b5b\u9009\u7ed3\u679c\uff1a",e," at pages/service/store-list.vue:104")}}};e.default=l}).call(this,i("f3b9")["default"])},"0bcc":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","effect"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u63a8\u5e7f\u6548\u679c",backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","effect-selectTime"),attrs:{_i:2}},[i("selectActiveTime",{attrs:{type:"daterange",_i:3},on:{change:t.timeChange},model:{value:t._$s(3,"v-model",t.timeList),callback:function(e){t.timeList=e},expression:"timeList"}})],1),i("CommonList",{ref:"groupRef",attrs:{apiUrl:t.apiObj.effect[t.identityIndex],listScrollHeight:"calc(100vh - "+(2*t.statusBarHeight+300)+"rpx)",_i:4},scopedSlots:t._u([{key:"listData",fn:function(e,s,a){var r=e.list;return[i("view",{staticClass:s._$s("6-"+a,"sc","order-container"),attrs:{_i:"6-"+a}},t._l(s._$s("7-"+a,"f",{forItems:r}),(function(e,r,c,n){return i("view",{key:s._$s("7-"+a,"f",{forIndex:c,key:r}),staticClass:s._$s("7-"+a+n,"sc","order-card"),attrs:{_i:"7-"+a+n}},[i("view",{staticClass:s._$s("8-"+a+n,"sc","order-number"),attrs:{_i:"8-"+a+n}},[i("text",{staticClass:s._$s("9-"+a+n,"sc","label"),attrs:{_i:"9-"+a+n}},[t._v("\u8ba2\u5355\u7f16\u53f7\uff1a")]),i("text",{staticClass:s._$s("10-"+a+n,"sc","number"),attrs:{_i:"10-"+a+n}},[t._v(s._$s("10-"+a+n,"t0-0",t._s(e.number)))]),i("text",{staticClass:s._$s("11-"+a+n,"sc","copy-btn"),attrs:{_i:"11-"+a+n},on:{click:function(i){return t.copyOrderNo(e.number)}}},[t._v("\u590d\u5236")])]),i("view",{staticClass:s._$s("12-"+a+n,"sc","service-info"),attrs:{_i:"12-"+a+n}},[i("image",{staticClass:s._$s("13-"+a+n,"sc","service-img"),attrs:{src:s._$s("13-"+a+n,"a-src",e.order_photo[0]),mode:"aspectFill",_i:"13-"+a+n}}),i("view",{staticClass:s._$s("14-"+a+n,"sc","service-detail"),attrs:{_i:"14-"+a+n}},[i("text",{staticClass:s._$s("15-"+a+n,"sc","service-name"),attrs:{_i:"15-"+a+n}},[t._v(s._$s("15-"+a+n,"t0-0",t._s(e.server_title)))]),i("text",{staticClass:s._$s("16-"+a+n,"sc","order-time"),attrs:{_i:"16-"+a+n}},[t._v(s._$s("16-"+a+n,"t0-0",t._s(e.pay_time)))]),i("text",{staticClass:s._$s("17-"+a+n,"sc","order-status"),attrs:{_i:"17-"+a+n}},[t._v(" \u8ba2\u5355\u72b6\u6001\uff1a"),i("text",{staticStyle:{color:"#E8101E"},attrs:{_i:"18-"+a+n}},[t._v(s._$s("18-"+a+n,"t0-0",t._s(t.getDescriptionByNumber(e.state))))])])])]),i("view",{staticClass:s._$s("19-"+a+n,"sc","amount-info"),attrs:{_i:"19-"+a+n}},[i("view",{staticClass:s._$s("20-"+a+n,"sc","amount-item"),attrs:{_i:"20-"+a+n}},[i("text",{staticClass:s._$s("21-"+a+n,"sc","amount-label"),attrs:{_i:"21-"+a+n}},[t._v("\u5b9e\u4ed8\u91d1\u989d")]),i("text",{staticClass:s._$s("22-"+a+n,"sc","amount-value"),attrs:{_i:"22-"+a+n}},[i("text",{staticStyle:{"font-size":"24rpx"},attrs:{_i:"23-"+a+n}},[t._v("\xa5")]),t._v(s._$s("22-"+a+n,"t1-0",t._s(e.pay_money)))])]),i("view",{staticClass:s._$s("24-"+a+n,"sc","amount-item"),attrs:{_i:"24-"+a+n}},[i("text",{staticClass:s._$s("25-"+a+n,"sc","amount-label"),attrs:{_i:"25-"+a+n}},[t._v("\u4f63\u91d1\u6bd4\u4f8b")]),i("text",{staticClass:s._$s("26-"+a+n,"sc","amount-value"),attrs:{_i:"26-"+a+n}},[t._v(s._$s("26-"+a+n,"t0-0",t._s(t.percentage(e.commission_rate))))])]),i("view",{staticClass:s._$s("27-"+a+n,"sc","amount-item"),attrs:{_i:"27-"+a+n}},[i("text",{staticClass:s._$s("28-"+a+n,"sc","amount-label"),attrs:{_i:"28-"+a+n}},[t._v("\u9884\u4f30\u4f63\u91d1")]),i("text",{staticClass:s._$s("29-"+a+n,"sc","amount-value"),attrs:{_i:"29-"+a+n}},[i("text",{staticStyle:{"font-size":"24rpx"},attrs:{_i:"30-"+a+n}},[t._v("\xa5")]),t._v(s._$s("29-"+a+n,"t1-0",t._s(e.estimate_commission)))])])])])})),0)]}},{key:"empty",fn:function(t,e,s){return[i("noData",{attrs:{_i:"32-"+s}})]}}])})],1)},r=[]},"0bdb":function(t,e,i){var s=i("d551");function a(t,e){for(var i=0;i10?"rgba(255, 255, 255, ".concat(Math.min(.02*this.scrollTop,1),")"):"transparent"},stateItem:function(){var t=this,e=[{text:"\u5f85\u652f\u4ed8",icon:"/static/images/icons/pay.png",state:"1"},{text:"\u5f85\u63a5\u5355",icon:"/static/images/icons/pending.png",state:"2"},{text:"\u5f85\u670d\u52a1",icon:"/static/images/icons/pendingService.png",state:"3"},{text:"\u670d\u52a1\u4e2d",icon:"/static/images/icons/pendingService.png",state:"4"},{text:"\u5df2\u5b8c\u6210",icon:"/static/images/icons/payOk.png",state:"5"},{text:"\u5f85\u8bc4\u4ef7",icon:"/static/images/icons/pending.png",state:"6"},{text:"\u5df2\u53d6\u6d88",icon:"/static/images/evaluate/cancel.png",state:"7"}].find((function(e){return e.state==t.orderInfo.state}))||{};return e}},methods:(a={messageRead:function(e){var i=this;d.default.post("/sj/push/messageRead",{id:e}).then((function(e){t("log","messageRead:",e," at pages/shop/userorder-detail.vue:390"),i.messageUpudateNum()}))},getGroupType:function(t){var e,i=null===(e=[{id:1,text:"\u62fc\u56e2\u4e2d"},{id:2,text:"\u5df2\u6210\u56e2"},{id:3,text:"\u62fc\u56e2\u5931\u8d25"}].find((function(e){return e.id==t})))||void 0===e?void 0:e.text;return i},formatDateTime:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!t)return"";var i=new Date(t.replace(/-/g,"/")),s=i.getFullYear(),a=String(i.getMonth()+1).padStart(2,"0"),r=String(i.getDate()).padStart(2,"0"),c=String(i.getHours()).padStart(2,"0"),n=String(i.getMinutes()).padStart(2,"0"),o=String(i.getSeconds()).padStart(2,"0");return e?"".concat(s,"-").concat(a,"-").concat(r," ").concat(c,":").concat(n,":").concat(o):"".concat(s,"-").concat(a,"-").concat(r," ").concat(c,":").concat(n)},formatDateAndAddMinutes:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!t)return{original:"",afterAddingMinutes:""};var i=new Date(t.replace(/-/g,"/"));function s(t){var e=t.getFullYear(),i=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),a=String(t.getHours()).padStart(2,"0"),r=String(t.getMinutes()).padStart(2,"0");return"".concat(e,"\u5e74").concat(i,"\u6708").concat(s,"\u65e5 ").concat(a,":").concat(r)}var a=s(i),r=new Date(i);r.setMinutes(r.getMinutes()+e);var c=s(r);return{original:a,afterAddingMinutes:c}},getOrderDetail:function(){var e=this;d.default.post(this.urls[this.serviceType].detail,{id:this.id,sjid:this.userInfo.id}).then((function(i){e.orderInfo=i.data,e.reservation_address_arr=i.data.reservation_address_arr,i.data.user_sj&&(e.user_sj=i.data.user_sj,e.calculateDistance()),t("log",e.orderInfo," at pages/shop/userorder-detail.vue:486")}))},openShopMap:function(){this.user_sj.latitude&&this.user_sj.longitude?l.default.goMap({latitude:parseFloat(this.user_sj.latitude),longitude:parseFloat(this.user_sj.longitude),name:this.user_sj.name||"\u5e97\u94fa\u4f4d\u7f6e",address:this.user_sj.address||""}):uni.showToast({title:"\u6682\u65e0\u5e97\u94fa\u4f4d\u7f6e\u4fe1\u606f",icon:"none"})},calculateDistance:function(){this.user_sj.latitude&&this.user_sj.longitude&&(this.distance=l.default.calcDistance(parseFloat(this.user_sj.latitude),parseFloat(this.user_sj.longitude),getApp().globalData.latitude||0,getApp().globalData.longitude||0))},cancelOrder:function(e,i){var s=this;e.preventDefault(),e.stopPropagation(),uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f\uff08\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u652f\u4ed8\u91d1\u989d\u5c06\u539f\u8def\u9000\u56de\uff09",success:function(e){if(e.confirm){var a={orderNo:i.number,amount:i.pay_money,sjid:s.userInfo.id},r="";if(1==i.pay_kind?r="":2==i.pay_kind?r=s.urls[s.serviceType].weChatRefund:3==i.pay_kind&&(r=s.urls[s.serviceType].aliRefund),t("log",a,r," at pages/shop/userorder-detail.vue:560"),s.clickType)return;s.clickType=!0,d.default.post(r,a).then((function(t){if(1==t.state){uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),s.getOrderDetail();var e=getCurrentPages(),i=e[e.length-2];i&&(i.$vm.getOrderNumber(),i.$vm.getOrderList())}else uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){t("log",e," at pages/shop/userorder-detail.vue:587")})).finally((function(){s.clickType=!1}))}}})},startOrder:function(t,e){t.preventDefault(),t.stopPropagation(),this.showInput=!0},onConfirm:function(e){var i=this;this.showInput=!1,this.clickType||(this.clickType=!0,d.default.post(this.urls[this.serviceType].startOrder,{id:this.orderInfo.id,server_code:e,sjid:this.userInfo.id}).then((function(e){if(t("log",e," at pages/shop/userorder-detail.vue:616"),1==e.state){uni.showToast({title:e.msg,icon:"none"}),i.getOrderDetail();var s=getCurrentPages(),a=s[s.length-2];a&&(a.$vm.getOrderNumber(),a.$vm.getOrderList())}else 2==e.state&&uni.showToast({title:e.msg,icon:"none"});i.handelOrder={}})).finally((function(){i.clickType=!1})))},endOrder:function(t,e){var i=this;t.preventDefault(),t.stopPropagation(),this.clickType||(this.clickType=!0,d.default.post(this.urls[this.serviceType].endOrder,{id:e.id,sjid:this.userInfo.id}).then((function(t){if(1==t.state){uni.showToast({title:t.msg,icon:"none"}),i.getOrderDetail();var e=getCurrentPages(),s=e[e.length-2];s&&(s.$vm.getOrderNumber(),s.$vm.getOrderList())}})).finally((function(){i.clickType=!1})))},showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))},contactService:function(e){var i=this;return(0,o.default)(r.default.mark((function s(){var a,c,n,o,d,l,u;return r.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(a=uni.getSystemInfoSync(),"ios"!==a.platform){s.next=5;break}uni.makePhoneCall({phoneNumber:e}),s.next=35;break;case 5:return c="",c="ios"===a.platform?"phone":"android.permission.CALL_PHONE",i.isShowPer=!0,n=!plus.storage.getItem("perm_".concat(c)),n&&(i.isShowPer=!0),s.next=12,_.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 12:if(o=s.sent,d=o.granted,!d){s.next=18;break}return i.isShowPer=!1,uni.makePhoneCall({phoneNumber:e}),s.abrupt("return");case 18:return i.isShowPer=!1,s.next=21,i.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 21:if(l=s.sent,l){s.next=24;break}return s.abrupt("return");case 24:return s.next=26,_.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 26:if(u=s.sent,t("log","result",u," at pages/shop/userorder-detail.vue:732"),!u){s.next=33;break}return uni.makePhoneCall({phoneNumber:e}),s.abrupt("return");case 33:return f.default.openAppSettings(),s.abrupt("return");case 35:case"end":return s.stop()}}),s)})))()},openMap:function(){var t=this;return(0,o.default)(r.default.mark((function e(){var i,s,a,c,n;return r.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(i=uni.getSystemInfoSync(),"ios"!==i.platform){e.next=5;break}t._openLocation(t.reservation_address_arr),e.next=24;break;case 5:return t.isShowLocationPer=!0,e.next=8,_.default.checkPermission("location","\u9700\u8981\u4f4d\u7f6e\u6743\u9650\u4ee5\u6253\u5f00\u5730\u56fe");case 8:if(s=e.sent,a=s.granted,!a){e.next=14;break}return t.isShowLocationPer=!1,t._openLocation(t.reservation_address_arr),e.abrupt("return");case 14:return t.isShowLocationPer=!1,e.next=17,t.showPermissionDialog("\u4f4d\u7f6e\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u60a8\u7684\u4f4d\u7f6e\u6743\u9650\uff0c\u4ee5\u4fbf\u5728\u5730\u56fe\u4e0a\u663e\u793a\u4f4d\u7f6e");case 17:if(c=e.sent,c){e.next=20;break}return e.abrupt("return");case 20:return e.next=22,_.default.requestPermission("location","\u9700\u8981\u4f4d\u7f6e\u6743\u9650\u4ee5\u6253\u5f00\u5730\u56fe");case 22:n=e.sent,n?t._openLocation(t.reservation_address_arr):f.default.openAppSettings();case 24:case"end":return e.stop()}}),e)})))()}},(0,c.default)(a,"openShopMap",(function(){var t=this;return(0,o.default)(r.default.mark((function e(){var i,s,a,c,n;return r.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t.user_sj.latitude&&t.user_sj.longitude){e.next=3;break}return uni.showToast({title:"\u6682\u65e0\u5e97\u94fa\u4f4d\u7f6e\u4fe1\u606f",icon:"none"}),e.abrupt("return");case 3:if(i=uni.getSystemInfoSync(),"ios"!==i.platform){e.next=8;break}t._openLocation(t.user_sj),e.next=27;break;case 8:return t.isShowLocationPer=!0,e.next=11,_.default.checkPermission("location","\u9700\u8981\u4f4d\u7f6e\u6743\u9650\u4ee5\u6253\u5f00\u5730\u56fe");case 11:if(s=e.sent,a=s.granted,!a){e.next=17;break}return t.isShowLocationPer=!1,t._openLocation(t.user_sj),e.abrupt("return");case 17:return t.isShowLocationPer=!1,e.next=20,t.showPermissionDialog("\u4f4d\u7f6e\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u60a8\u7684\u4f4d\u7f6e\u6743\u9650\uff0c\u4ee5\u4fbf\u5728\u5730\u56fe\u4e0a\u663e\u793a\u5e97\u94fa\u4f4d\u7f6e");case 20:if(c=e.sent,c){e.next=23;break}return e.abrupt("return");case 23:return e.next=25,_.default.requestPermission("location","\u9700\u8981\u4f4d\u7f6e\u6743\u9650\u4ee5\u6253\u5f00\u5730\u56fe");case 25:n=e.sent,n?t._openLocation(t.user_sj):f.default.openAppSettings();case 27:case"end":return e.stop()}}),e)})))()})),(0,c.default)(a,"_openLocation",(function(t){l.default.goMap({latitude:parseFloat(t.latitude),longitude:parseFloat(t.longitude),name:t.name||t.house_number||"\u4f4d\u7f6e",address:t.address||t.server_address||""})})),a)};e.default=p}).call(this,i("f3b9")["default"])},"0c3e":function(t,e,i){"use strict";i.r(e);var s=i("c1a0"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"0c3f":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uvAlbum:i("abc5").default,uvCode:i("3e0f").default,agreeRadio:i("a6d8").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","login-mask"),style:t._$s(0,"s",{background:t.maskShow?"rgba(0, 0, 0, 0.5)":"transparent"}),attrs:{_i:0},on:{click:t.closeWindow}},[i("view",{directives:[{name:"show",rawName:"v-show",value:t._$s(1,"v-show",t.maskShow),expression:"_$s(1,'v-show',maskShow)"}],staticClass:t._$s(1,"sc","login-popup"),attrs:{_i:1},on:{click:function(t){t.stopPropagation(),t.preventDefault()}}},[i("view",{staticClass:t._$s(2,"sc","popup-header"),attrs:{_i:2}},[i("text",{staticClass:t._$s(3,"sc","popup-title"),attrs:{_i:3}})]),i("image",{staticClass:t._$s(4,"sc","popup-close"),attrs:{_i:4},on:{click:t.closeWindow}}),i("view",{staticClass:t._$s(5,"sc","login-tabs"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","tab-item"),class:t._$s(6,"c",{active:"code"===t.loginType}),attrs:{_i:6},on:{click:function(e){t.loginType="code"}}}),i("view",{staticClass:t._$s(7,"sc","tab-line"),attrs:{_i:7}}),i("view",{staticClass:t._$s(8,"sc","tab-item"),class:t._$s(8,"c",{active:"account"===t.loginType}),attrs:{_i:8},on:{click:function(e){t.loginType="account"}}}),i("view",{staticClass:t._$s(9,"sc","tab-line"),attrs:{_i:9}}),i("view",{staticClass:t._$s(10,"sc","tab-item"),class:t._$s(10,"c",{active:"onekey"===t.loginType}),attrs:{_i:10},on:{click:t.handleOnekeyTab}})]),i("view",{staticClass:t._$s(11,"sc","input-area"),attrs:{_i:11}},[t._$s(12,"i","code"===t.loginType)?[i("view",{staticClass:t._$s(13,"sc","input-item"),attrs:{_i:13}},[i("uv-album",{attrs:{_i:14}}),i("image",{staticClass:t._$s(15,"sc","input-icon-phone"),attrs:{_i:15}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.phone,expression:"phone"}],staticClass:t._$s(16,"sc","input-text"),attrs:{_i:16},domProps:{value:t._$s(16,"v-model",t.phone)},on:{input:[function(e){e.target.composing||(t.phone=e.target.value)},t.handlePhoneInput]}})],1),t._$s(17,"i",t.phoneError)?i("text",{staticClass:t._$s(17,"sc","input-error"),attrs:{_i:17}},[t._v(t._$s(17,"t0-0",t._s(t.phoneError)))]):t._e(),i("view",{staticClass:t._$s(18,"sc","input-item"),attrs:{_i:18}},[i("image",{staticClass:t._$s(19,"sc","input-icon-password"),attrs:{_i:19}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.code,expression:"code"}],staticClass:t._$s(20,"sc","input-text"),attrs:{_i:20},domProps:{value:t._$s(20,"v-model",t.code)},on:{input:function(e){e.target.composing||(t.code=e.target.value)}}}),i("uv-code",{ref:"code",attrs:{keepRunning:!0,seconds:t.seconds,_i:21},on:{end:t.end,start:t.start,change:t.codeChange}}),i("text",{staticClass:t._$s(22,"sc","get-code-btn"),class:t._$s(22,"c",{running:t.runningCode,noPhone:!t.phone}),attrs:{_i:22},on:{click:t.getCode}},[t._v(t._$s(22,"t0-0",t._s(t.tips)))])],1)]:t._$s(23,"e","account"===t.loginType)?[i("view",{staticClass:t._$s(24,"sc","input-item"),attrs:{_i:24}},[i("image",{staticClass:t._$s(25,"sc","input-icon-phone"),attrs:{_i:25}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.phone,expression:"phone"}],staticClass:t._$s(26,"sc","input-text"),attrs:{_i:26},domProps:{value:t._$s(26,"v-model",t.phone)},on:{input:[function(e){e.target.composing||(t.phone=e.target.value)},t.handlePhoneInput]}})]),t._$s(27,"i",t.phoneError)?i("text",{staticClass:t._$s(27,"sc","input-error"),attrs:{_i:27}}):t._e(),i("view",{staticClass:t._$s(28,"sc","input-item"),attrs:{_i:28}},[i("image",{staticClass:t._$s(29,"sc","input-icon-password"),attrs:{_i:29}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],staticClass:t._$s(30,"sc","input-text"),attrs:{password:t._$s(30,"a-password",!t.showPassword),_i:30},domProps:{value:t._$s(30,"v-model",t.password)},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}}),t._$s(31,"i",!t.showPassword)?i("image",{staticClass:t._$s(31,"sc","look-icon"),attrs:{_i:31},on:{click:function(e){e.stopPropagation(),t.showPassword=!0}}}):i("image",{staticClass:t._$s(32,"sc","look-icon"),attrs:{_i:32},on:{click:function(e){e.stopPropagation(),t.showPassword=!1}}})])]:t._e()],2),i("view",{staticClass:t._$s(33,"sc","login-btn"),class:t._$s(33,"c",{active:t.canLogin}),attrs:{_i:33},on:{click:t.handleLogin}}),i("view",{staticClass:t._$s(34,"sc","agree"),attrs:{_i:34}},[i("agree-radio",{staticClass:t._$s(35,"sc","agree-btn"),attrs:{isAgree:t.isAgree,_i:35},on:{"change-agree":t.changeAgree}}),i("view",{staticClass:t._$s(36,"sc","agree-card"),attrs:{_i:36}},[i("text",{staticClass:t._$s(37,"sc","agree-text"),attrs:{_i:37}}),i("text",{staticClass:t._$s(38,"sc","agreement"),attrs:{_i:38},on:{click:function(e){return t.goAgreement(28)}}}),i("text",{staticClass:t._$s(39,"sc","agreement"),attrs:{_i:39},on:{click:function(e){return t.goAgreement(26)}}})])],1)])])},r=[]},"0c4e":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","serveList"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","header-card positonFixed"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","header-top flex-row-center"),style:t._$s(2,"s",{height:"88rpx",paddingTop:t.statusBarHeight+"rpx"}),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","left-area"),attrs:{_i:3},on:{click:t.goBack}},[i("image",{staticClass:t._$s(4,"sc","back-icon"),attrs:{_i:4}}),i("image",{staticClass:t._$s(5,"sc","left-area-img"),attrs:{_i:5}})])]),i("searchBox",{attrs:{placeholder:"\u8bf7\u641c\u7d22\u670d\u52a1\u540d\u79f0","bg-clor":"transparent",_i:6},on:{confirm:t.searchConfrim,search:t.searchConfrim},model:{value:t._$s(6,"v-model",t.queryData.title),callback:function(e){t.$set(t.queryData,"title",e)},expression:"queryData.title"}}),i("view",{staticClass:t._$s(7,"sc","header-bottom"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","header-bottom-tip flex-row-center"),attrs:{_i:8}},[i("image",{staticClass:t._$s(9,"sc","header-bottom-tip-icon"),attrs:{_i:9}}),i("text",{staticClass:t._$s(10,"sc","header-bottom-tip-text"),attrs:{_i:10}}),i("view",{staticClass:t._$s(11,"sc","header-bottom-tip-btn flex-row-center-center"),attrs:{_i:11},on:{click:function(e){return t.goAgreement()}}},[i("text"),i("image",{staticClass:t._$s(13,"sc","header-bottom-tip-btn-icon"),attrs:{_i:13}})])])])],1),i("view",{staticClass:t._$s(14,"sc","serveList-content"),attrs:{_i:14}},[i("view",{staticClass:t._$s(15,"sc","header-card"),attrs:{_i:15}},[i("view",{staticClass:t._$s(16,"sc","header-top flex-row-center"),style:t._$s(16,"s",{height:t.statusBarHeight+88+"rpx"}),attrs:{_i:16}},[i("view",{staticClass:t._$s(17,"sc","left-area"),attrs:{_i:17},on:{click:t.goBack}},[i("image",{staticClass:t._$s(18,"sc","back-icon"),attrs:{_i:18}}),i("image",{staticClass:t._$s(19,"sc","left-area-img"),attrs:{_i:19}})])]),i("searchBox",{attrs:{placeholder:"\u641c\u7d22\u624b\u827a\u4eba\u540d\u79f0","bg-clor":"transparent",_i:20},on:{confirm:t.searchConfrim,search:t.searchConfrim},model:{value:t._$s(20,"v-model",t.queryData.title),callback:function(e){t.$set(t.queryData,"title",e)},expression:"queryData.title"}})],1),i("CommonList",{ref:"groupRef",attrs:{apiUrl:"/user/serversSelf/list",refresherEnabled:!0,listScrollHeight:"calc(100vh - "+(t.statusBarHeight+280)+"rpx)",_i:21},scopedSlots:t._u([{key:"headerScroll",fn:function(e,s,a){return[i("view",{staticClass:s._$s("23-"+a,"sc","serveList-tabs"),attrs:{_i:"23-"+a}},[i("serviecFirstTab",{attrs:{tabs:t.tabs,bgColor:"transparent",activeId:t.queryData.first_class,activeColor:"#E8101E",_i:"24-"+a},on:{"tab-click":t.tabClick}}),i("view",{staticClass:s._$s("25-"+a,"sc","icon-tabs"),attrs:{_i:"25-"+a}},t._l(s._$s("26-"+a,"f",{forItems:t.iconTabs}),(function(e,r,c,n){return i("view",{key:s._$s("26-"+a,"f",{forIndex:c,key:e.id}),staticClass:s._$s("26-"+a+n,"sc","icon-tab flex-row-center-center"),class:s._$s("26-"+a+n,"c",{active:t.queryData.second_class==e.id}),attrs:{_i:"26-"+a+n},on:{click:function(i){return t.getSecondlist(e.id)}}},[i("text",{staticClass:s._$s("27-"+a+n,"sc","icon-text"),attrs:{_i:"27-"+a+n}},[t._v(s._$s("27-"+a+n,"t0-0",t._s(e.title)))])])})),0)],1)]}},{key:"listData",fn:function(e,s,a){var r=e.list;return[i("selfCardList",{staticClass:s._$s("29-"+a,"sc","trans-y"),attrs:{goodsList:r,_i:"29-"+a},on:{"self-click":t.selfClick}})]}},{key:"empty",fn:function(t,e,s){return[i("noData",{staticClass:e._$s("31-"+s,"sc","trans-y"),attrs:{_i:"31-"+s}})]}}])})],1)])},r=[]},"0c4f":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","personal-info-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:t.navTitle,showBack:!0,_i:1}}),t._$s(2,"i",t.editable)?i("view",{staticClass:t._$s(2,"sc","change-tip"),attrs:{_i:2}},[i("text")]):t._e(),i("view",{staticClass:t._$s(4,"sc","content-area"),style:t._$s(4,"s",{paddingBottom:t.buttonAreaHeight+"px"}),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","section"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","section-title"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","title-bar"),attrs:{_i:7}}),i("text",{staticClass:t._$s(8,"sc","title-text"),attrs:{_i:8}})]),i("view",{staticClass:t._$s(9,"sc","form-item box-cont"),attrs:{_i:9}},[i("view",{staticClass:t._$s(10,"sc","label-wrapper"),attrs:{_i:10}},[i("text",{staticClass:t._$s(11,"sc","label required"),attrs:{_i:11}}),i("image",{staticClass:t._$s(12,"sc","label-icon"),attrs:{_i:12},on:{click:function(e){return t.showTipPopup("head_photo")}}})]),i("view",{staticClass:t._$s(13,"sc","upload-box"),attrs:{_i:13},on:{click:function(e){return t.chooseImage("head_photo")}}},[i("view",{staticClass:t._$s(14,"sc","upload-camera head_photo-upload"),attrs:{_i:14}},[t._$s(15,"i",t.displayData.head_photo)?i("image",{staticClass:t._$s(15,"sc","preview-image"),attrs:{src:t._$s(15,"a-src",t.displayData.head_photo),_i:15}}):i("image",{staticClass:t._$s(16,"sc","camera-icon"),attrs:{_i:16}})])]),i("view",{staticClass:t._$s(17,"sc","upload-tip"),attrs:{_i:17}})]),i("view",{staticClass:t._$s(18,"sc","section"),attrs:{_i:18}},[i("view",{staticClass:t._$s(19,"sc","box-cont"),attrs:{_i:19}},[i("view",{staticClass:t._$s(20,"sc","form-item"),attrs:{_i:20}},[i("text",{staticClass:t._$s(21,"sc","label required"),attrs:{_i:21}}),i("view",{staticClass:t._$s(22,"sc","upload-tip-sfz"),attrs:{_i:22}}),i("view",{staticClass:t._$s(23,"sc","idcard-upload-vertical-container"),attrs:{_i:23}},[i("view",{staticClass:t._$s(24,"sc","idcard-upload-vertical-item"),attrs:{_i:24}},[i("view",{staticClass:t._$s(25,"sc","upload-box"),attrs:{_i:25},on:{click:function(e){return t.chooseImage("idcard_positive")}}},[i("view",{staticClass:t._$s(26,"sc","upload-camera idcard-front"),attrs:{_i:26}},[t._$s(27,"i",t.displayData.idcard_positive)?i("image",{staticClass:t._$s(27,"sc","preview-image"),attrs:{src:t._$s(27,"a-src",t.displayData.idcard_positive),_i:27}}):i("image",{staticClass:t._$s(28,"sc","camera-icon"),attrs:{_i:28}})])]),i("text",{staticClass:t._$s(29,"sc","upload-label required"),attrs:{_i:29}})]),i("view",{staticClass:t._$s(30,"sc","idcard-upload-vertical-item"),attrs:{_i:30}},[i("view",{staticClass:t._$s(31,"sc","upload-box"),attrs:{_i:31},on:{click:function(e){return t.chooseImage("idcard_negative")}}},[i("view",{staticClass:t._$s(32,"sc","upload-camera idcard-back"),attrs:{_i:32}},[t._$s(33,"i",t.displayData.idcard_negative)?i("image",{staticClass:t._$s(33,"sc","preview-image"),attrs:{src:t._$s(33,"a-src",t.displayData.idcard_negative),_i:33}}):i("image",{staticClass:t._$s(34,"sc","camera-icon"),attrs:{_i:34}})])]),i("text",{staticClass:t._$s(35,"sc","upload-label required"),attrs:{_i:35}})])])])])]),i("view",{staticClass:t._$s(36,"sc","form-item-one box-cont"),attrs:{_i:36}},[i("text",{staticClass:t._$s(37,"sc","label required"),attrs:{_i:37}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.displayData.name,expression:"displayData.name"}],staticClass:t._$s(38,"sc","input"),attrs:{disabled:t._$s(38,"a-disabled",!t.editable),_i:38},domProps:{value:t._$s(38,"v-model",t.displayData.name)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"name",e.target.value)}}})]),i("view",{staticClass:t._$s(39,"sc","form-item-one box-cont"),attrs:{_i:39}},[i("text",{staticClass:t._$s(40,"sc","label required"),attrs:{_i:40}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.displayData.account,expression:"displayData.account"}],staticClass:t._$s(41,"sc","input"),attrs:{disabled:t._$s(41,"a-disabled",!t.editable),_i:41},domProps:{value:t._$s(41,"v-model",t.displayData.account)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"account",e.target.value)}}})]),i("view",{staticClass:t._$s(42,"sc","form-item-one box-cont"),attrs:{_i:42}},[i("text",{staticClass:t._$s(43,"sc","label required"),attrs:{_i:43}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.displayData.second_phone,expression:"displayData.second_phone"}],staticClass:t._$s(44,"sc","input"),attrs:{disabled:t._$s(44,"a-disabled",!t.editable),_i:44},domProps:{value:t._$s(44,"v-model",t.displayData.second_phone)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"second_phone",e.target.value)}}})]),i("view",{staticClass:t._$s(45,"sc","form-item-one box-cont"),attrs:{_i:45}},[i("text",{staticClass:t._$s(46,"sc","label required"),attrs:{_i:46}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.displayData.idcard_num,expression:"displayData.idcard_num"}],staticClass:t._$s(47,"sc","input"),attrs:{disabled:t._$s(47,"a-disabled",!t.editable),_i:47},domProps:{value:t._$s(47,"v-model",t.displayData.idcard_num)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"idcard_num",e.target.value)}}})]),i("view",{staticClass:t._$s(48,"sc","form-item box-cont"),attrs:{_i:48}},[i("text",{staticClass:t._$s(49,"sc","label required"),attrs:{_i:49}}),i("view",{staticClass:t._$s(50,"sc","radio-group"),attrs:{_i:50}},[i("view",{staticClass:t._$s(51,"sc","radio-item"),attrs:{_i:51},on:{click:function(e){t.editable&&t.setIdCardValidType(1)}}},[i("view",{staticClass:t._$s(52,"sc","radio"),class:t._$s(52,"c",{checked:1===t.displayData.idcard_expiry_type}),attrs:{_i:52}},[t._$s(53,"i",1===t.displayData.idcard_expiry_type)?i("image",{staticClass:t._$s(53,"sc","radio-icon-image"),attrs:{_i:53}}):t._e()]),i("text",{staticClass:t._$s(54,"sc","radio-label"),attrs:{_i:54}})]),i("view",{staticClass:t._$s(55,"sc","radio-item"),attrs:{_i:55},on:{click:function(e){t.editable&&t.setIdCardValidType(2)}}},[i("view",{staticClass:t._$s(56,"sc","radio"),class:t._$s(56,"c",{checked:2===t.displayData.idcard_expiry_type}),attrs:{_i:56}},[t._$s(57,"i",2===t.displayData.idcard_expiry_type)?i("image",{staticClass:t._$s(57,"sc","radio-icon-image"),attrs:{_i:57}}):t._e()]),i("text",{staticClass:t._$s(58,"sc","radio-label"),attrs:{_i:58}})])])]),i("view",{staticClass:t._$s(59,"sc","box-cont"),attrs:{_i:59}},[i("view",{staticClass:t._$s(60,"sc","date-range-container"),attrs:{_i:60}},[i("view",{staticClass:t._$s(61,"sc","date-item"),attrs:{_i:61}},[i("text",{staticClass:t._$s(62,"sc","date-label"),attrs:{_i:62}}),i("view",{staticClass:t._$s(63,"sc","date-picker-box"),attrs:{_i:63},on:{click:function(e){t.editable&&t.openDatePicker("idcard_start_date")}}},[i("text",{class:t._$s(64,"c",t.displayData.idcard_start_date?"date-value":"placeholder"),attrs:{_i:64}},[t._v(t._$s(64,"t0-0",t._s(t.formatDateForDisplay(t.displayData.idcard_start_date)||"\u9009\u62e9\u65e5\u671f")))]),i("view",{staticClass:t._$s(65,"sc","date-divider"),attrs:{_i:65}}),i("image",{staticClass:t._$s(66,"sc","date-arrow"),attrs:{_i:66}})])]),i("view",{staticClass:t._$s(67,"sc","date-item"),attrs:{_i:67}},[i("text",{staticClass:t._$s(68,"sc","date-label"),attrs:{_i:68}}),i("view",{staticClass:t._$s(69,"sc","date-picker-box"),class:t._$s(69,"c",{disabled:1===t.displayData.idcard_expiry_type}),attrs:{_i:69},on:{click:function(e){t.editable&&1!==t.displayData.idcard_expiry_type&&t.openDatePicker("idcard_end_date")}}},[i("text",{class:t._$s(70,"c",t.displayData.idcard_end_date?"date-value":"placeholder"),attrs:{_i:70}},[t._v(t._$s(70,"t0-0",t._s(t.formatDateForDisplay(t.displayData.idcard_end_date)||"\u9009\u62e9\u65e5\u671f")))]),i("view",{staticClass:t._$s(71,"sc","date-divider"),attrs:{_i:71}}),i("image",{staticClass:t._$s(72,"sc","date-arrow"),attrs:{src:t._$s(72,"a-src",t.editable&&1!==t.displayData.idcard_expiry_type?"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ce52b49f-2261-49ca-96ed-e9ad47049649":"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/bb9a757f-a36c-46bb-a59f-2caddac5365b"),_i:72}})])])])])]),i("view",{staticClass:t._$s(73,"sc","section"),attrs:{_i:73}},[i("view",{staticClass:t._$s(74,"sc","box-cont"),attrs:{_i:74}},[i("view",{staticClass:t._$s(75,"sc","form-item"),attrs:{_i:75}},[i("text",{staticClass:t._$s(76,"sc","label required"),attrs:{_i:76}}),i("textarea",{directives:[{name:"model",rawName:"v-model",value:t.displayData.detail,expression:"displayData.detail"}],staticClass:t._$s(77,"sc","textarea"),attrs:{disabled:t._$s(77,"a-disabled",!t.editable),_i:77},domProps:{value:t._$s(77,"v-model",t.displayData.detail)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"detail",e.target.value)}}})])])]),i("view",{staticClass:t._$s(78,"sc","section"),attrs:{_i:78}},[i("view",{staticClass:t._$s(79,"sc","form-item-two box-cont"),attrs:{_i:79},on:{click:function(e){t.editable&&t.showLocationPopup()}}},[i("text",{staticClass:t._$s(80,"sc","label required"),attrs:{_i:80}}),i("view",{staticClass:t._$s(81,"sc","picker-content"),attrs:{_i:81}},[i("text",{class:t._$s(82,"c",t.displayData.dependency?"picker-value":"placeholder"),attrs:{_i:82}},[t._v(t._$s(82,"t0-0",t._s(t.displayData.dependency||"\u8bf7\u9009\u62e9")))]),t._$s(83,"i",t.editable)?i("image",{staticClass:t._$s(83,"sc","arrow-right"),attrs:{_i:83}}):t._e()])]),i("view",{staticClass:t._$s(84,"sc","form-item-two box-cont"),attrs:{_i:84},on:{click:function(e){t.editable&&t.getAddressInfo()}}},[i("text",{staticClass:t._$s(85,"sc","label required"),attrs:{_i:85}}),i("view",{staticClass:t._$s(86,"sc","picker-content"),attrs:{_i:86}},[i("text",{class:t._$s(87,"c",t.displayData.address?"picker-value":"placeholder"),attrs:{_i:87}},[t._v(t._$s(87,"t0-0",t._s(t.displayData.address||"\u8bf7\u9009\u62e9")))]),t._$s(88,"i",t.editable)?i("image",{staticClass:t._$s(88,"sc","arrow-right"),attrs:{_i:88}}):t._e()])])]),i("view",{staticClass:t._$s(89,"sc","section"),attrs:{_i:89}},[i("view",{staticClass:t._$s(90,"sc","section-title"),attrs:{_i:90}},[i("view",{staticClass:t._$s(91,"sc","title-bar"),attrs:{_i:91}}),i("text",{staticClass:t._$s(92,"sc","title-text"),attrs:{_i:92}})]),i("view",{staticClass:t._$s(93,"sc","form-item-two box-cont"),attrs:{_i:93},on:{click:function(e){t.editable&&t.openExperiencePicker()}}},[i("text",{staticClass:t._$s(94,"sc","label required"),attrs:{_i:94}}),i("view",{staticClass:t._$s(95,"sc","picker-content"),attrs:{_i:95}},[i("text",{class:t._$s(96,"c",t.displayData.major?"picker-value":"placeholder"),attrs:{_i:96}},[t._v(t._$s(96,"t0-0",t._s(t.getExperienceText(t.displayData.major)||"\u8bf7\u9009\u62e9")))]),t._$s(97,"i",t.editable)?i("image",{staticClass:t._$s(97,"sc","arrow-right"),attrs:{_i:97}}):t._e()])]),i("view",{staticClass:t._$s(98,"sc","form-item-two box-cont"),attrs:{_i:98},on:{click:function(e){t.editable&&t.openWorkStatusPicker()}}},[i("text",{staticClass:t._$s(99,"sc","label required"),attrs:{_i:99}}),i("view",{staticClass:t._$s(100,"sc","picker-content"),attrs:{_i:100}},[i("text",{class:t._$s(101,"c",t.displayData.work_state?"picker-value":"placeholder"),attrs:{_i:101}},[t._v(t._$s(101,"t0-0",t._s(t.getWorkStatusText(t.displayData.work_state)||"\u8bf7\u9009\u62e9")))]),t._$s(102,"i",t.editable)?i("image",{staticClass:t._$s(102,"sc","arrow-right"),attrs:{_i:102}}):t._e()])])]),i("view",{staticClass:t._$s(103,"sc","popup"),class:t._$s(103,"c",{show:t.showDatePickerFlag}),attrs:{_i:103}},[i("view",{staticClass:t._$s(104,"sc","popup-mask"),attrs:{_i:104},on:{click:t.hideDatePicker}}),i("view",{staticClass:t._$s(105,"sc","popup-content"),attrs:{_i:105}},[i("view",{staticClass:t._$s(106,"sc","popup-header"),attrs:{_i:106}},[i("text",{staticClass:t._$s(107,"sc","cancel-text"),attrs:{_i:107},on:{click:t.hideDatePicker}}),i("text",{staticClass:t._$s(108,"sc","title"),attrs:{_i:108}}),i("text",{staticClass:t._$s(109,"sc","confirm-text"),attrs:{_i:109},on:{click:t.confirmDate}})]),i("view",{staticClass:t._$s(110,"sc","region-body"),attrs:{_i:110}},[i("picker-view",{staticClass:t._$s(111,"sc","picker-scroll"),attrs:{value:t._$s(111,"a-value",t.dateValue),"indicator-style":t._$s(111,"a-indicator-style",t.indicatorStyle),_i:111},on:{change:t.bindDateChange}},[i("picker-view-column",t._l(t._$s(113,"f",{forItems:t.years}),(function(e,s,a,r){return i("view",{key:t._$s(113,"f",{forIndex:a,key:s}),staticClass:t._$s("113-"+r,"sc","picker-item"),attrs:{_i:"113-"+r}},[t._v(t._$s("113-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",t._l(t._$s(115,"f",{forItems:t.months}),(function(e,s,a,r){return i("view",{key:t._$s(115,"f",{forIndex:a,key:s}),staticClass:t._$s("115-"+r,"sc","picker-item"),attrs:{_i:"115-"+r}},[t._v(t._$s("115-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",t._l(t._$s(117,"f",{forItems:t.days}),(function(e,s,a,r){return i("view",{key:t._$s(117,"f",{forIndex:a,key:s}),staticClass:t._$s("117-"+r,"sc","picker-item"),attrs:{_i:"117-"+r}},[t._v(t._$s("117-"+r,"t0-0",t._s(e)))])})),0)])])])]),i("view",{staticClass:t._$s(118,"sc","popup"),class:t._$s(118,"c",{show:t.showLocationPopupFlag}),attrs:{_i:118}},[i("view",{staticClass:t._$s(119,"sc","popup-mask"),attrs:{_i:119},on:{click:t.hideLocationPopup}}),i("view",{staticClass:t._$s(120,"sc","popup-content"),attrs:{_i:120}},[i("view",{staticClass:t._$s(121,"sc","popup-header"),attrs:{_i:121}},[i("text",{staticClass:t._$s(122,"sc","popup-title"),attrs:{_i:122}}),i("text",{staticClass:t._$s(123,"sc","popup-close"),attrs:{_i:123},on:{click:t.hideLocationPopup}})]),i("view",{staticClass:t._$s(124,"sc","region-body"),attrs:{_i:124}},[i("picker-view",{staticClass:t._$s(125,"sc","picker-scroll"),attrs:{"indicator-style":t._$s(125,"a-indicator-style",t.indicatorStyle),value:t._$s(125,"a-value",t.locationValue),_i:125},on:{change:t.bindChangeLocation}},[i("picker-view-column",t._l(t._$s(127,"f",{forItems:t.ChinaCitys}),(function(e,s,a,r){return i("view",{key:t._$s(127,"f",{forIndex:a,key:s}),staticClass:t._$s("127-"+r,"sc","picker-item"),attrs:{_i:"127-"+r}},[t._v(t._$s("127-"+r,"t0-0",t._s(e.province)))])})),0),i("picker-view-column",t._l(t._$s(129,"f",{forItems:t.locatinCitys}),(function(e,s,a,r){return i("view",{key:t._$s(129,"f",{forIndex:a,key:s}),staticClass:t._$s("129-"+r,"sc","picker-item"),attrs:{_i:"129-"+r}},[t._v(t._$s("129-"+r,"t0-0",t._s(e.city)))])})),0),i("picker-view-column",t._l(t._$s(131,"f",{forItems:t.locationAreas}),(function(e,s,a,r){return i("view",{key:t._$s(131,"f",{forIndex:a,key:s}),staticClass:t._$s("131-"+r,"sc","picker-item"),attrs:{_i:"131-"+r}},[t._v(t._$s("131-"+r,"t0-0",t._s(e.area)))])})),0)])]),i("view",{staticClass:t._$s(132,"sc","popup-footer"),attrs:{_i:132}},[i("view",{staticClass:t._$s(133,"sc","popup-btn cancel"),attrs:{_i:133},on:{click:t.hideLocationPopup}},[i("text",{staticClass:t._$s(134,"sc","btn-text"),attrs:{_i:134}})]),i("view",{staticClass:t._$s(135,"sc","popup-btn confirm"),attrs:{_i:135},on:{click:t.confirmLocationSelect}},[i("text",{staticClass:t._$s(136,"sc","btn-text"),attrs:{_i:136}})])])])]),i("view",{staticClass:t._$s(137,"sc","tip-popup"),class:t._$s(137,"c",{show:t.showTipPopupFlag}),attrs:{_i:137}},[i("view",{staticClass:t._$s(138,"sc","tip-popup-mask"),attrs:{_i:138},on:{click:t.hideTipPopup}}),i("view",{staticClass:t._$s(139,"sc","tip-popup-content"),attrs:{_i:139}},[i("image",{staticClass:t._$s(140,"sc","tip-popup-bg"),attrs:{_i:140}}),i("view",{staticClass:t._$s(141,"sc","tip-popup-body"),attrs:{_i:141}},[i("view",{staticClass:t._$s(142,"sc","tip-title"),attrs:{_i:142}},[t._v(t._$s(142,"t0-0",t._s(t.tipTitle)))]),i("view",{staticClass:t._$s(143,"sc","tip-image-container"),attrs:{_i:143}},[i("image",{staticClass:t._$s(144,"sc","tip-image"),class:t._$s(144,"c",t.currentTipType),attrs:{src:t._$s(144,"a-src",t.tipImage),_i:144}})]),i("view",{staticClass:t._$s(145,"sc","tip-buttons"),attrs:{_i:145}},[i("view",{staticClass:t._$s(146,"sc","tip-btn cancel"),attrs:{_i:146},on:{click:t.hideTipPopup}},[i("text",{staticClass:t._$s(147,"sc","btn-text"),attrs:{_i:147}})]),i("view",{staticClass:t._$s(148,"sc","tip-btn confirm"),attrs:{_i:148},on:{click:t.hideTipPopup}},[i("text",{staticClass:t._$s(149,"sc","btn-text"),attrs:{_i:149}})])])])])]),i("view",{staticClass:t._$s(150,"sc","safe-bottom"),attrs:{_i:150}})]),i("view",{ref:"buttonArea",staticClass:t._$s(151,"sc","bottom-actions"),attrs:{_i:151}},[t._$s(152,"i",t.shouldShowRejectReason)?i("view",{staticClass:t._$s(152,"sc","reject-reason"),attrs:{_i:152}},[i("view",{staticClass:t._$s(153,"sc","reject-title"),attrs:{_i:153}}),i("view",{staticClass:t._$s(154,"sc","reject-detail"),attrs:{_i:154}},[t._v(t._$s(154,"t0-0",t._s(t.backText)))])]):t._e(),t._$s(155,"i",t.showAuditTip)?i("view",{staticClass:t._$s(155,"sc","audit-tip"),attrs:{_i:155}},[i("text",{staticClass:t._$s(156,"sc","audit-text"),attrs:{_i:156}})]):t._e(),t._$s(157,"i","change"===t.buttonType)?i("view",{staticClass:t._$s(157,"sc","action-btn change-info-btn"),attrs:{_i:157},on:{click:t.startChange}},[i("text",{staticClass:t._$s(158,"sc","btn-text"),attrs:{_i:158}})]):t._e(),t._$s(159,"i","edit"===t.buttonType)?i("view",{staticClass:t._$s(159,"sc","action-buttons-row"),attrs:{_i:159}},[i("view",{staticClass:t._$s(160,"sc","action-btn cancel-btn"),attrs:{_i:160},on:{click:t.cancelChange}},[i("text",{staticClass:t._$s(161,"sc","btn-text cancel-text"),attrs:{_i:161}})]),i("view",{staticClass:t._$s(162,"sc","action-btn submit-btn"),attrs:{_i:162},on:{click:t.submitChange}},[i("text",{staticClass:t._$s(163,"sc","btn-text"),attrs:{_i:163}})])]):t._e(),t._$s(164,"i","view"===t.buttonType)?i("view",{staticClass:t._$s(164,"sc","action-btn view-change-btn"),attrs:{_i:164},on:{click:t.togglePendingData}},[i("text",{staticClass:t._$s(165,"sc","btn-text"),attrs:{_i:165}},[t._v(t._$s(165,"t0-0",t._s(t.showPendingData?"\u8fd4\u56de":"\u67e5\u770b\u6211\u7684\u53d8\u66f4")))])]):t._e(),t._$s(166,"i","reject"===t.buttonType)?i("view",{staticClass:t._$s(166,"sc","action-btn resubmit-btn"),attrs:{_i:166},on:{click:t.startChange}},[i("text",{staticClass:t._$s(167,"sc","btn-text"),attrs:{_i:167}})]):t._e()])],1)},r=[]},"0c95":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","service-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5de5\u4f4d\u7ba1\u7406",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","flexed"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","headerBox"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","search-box"),attrs:{_i:4}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.title,expression:"title"}],staticClass:t._$s(5,"sc","search-inp"),attrs:{_i:5},domProps:{value:t._$s(5,"v-model",t.title)},on:{confirm:t.getServicesList,input:function(e){e.target.composing||(t.title=e.target.value)}}}),i("image",{staticClass:t._$s(6,"sc","search-icon"),attrs:{_i:6},on:{click:t.getServicesList}})]),i("view",{staticClass:t._$s(7,"sc","addBox"),attrs:{_i:7},on:{click:function(e){t.showTip=!0}}},[i("image",{staticClass:t._$s(8,"sc","addIcon"),attrs:{_i:8}}),i("text",{staticClass:t._$s(9,"sc","addText"),attrs:{_i:9}})])]),i("view",{staticClass:t._$s(10,"sc","tab-container"),attrs:{_i:10}},t._l(t._$s(11,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("view",{key:t._$s(11,"f",{forIndex:a,key:s}),class:t._$s("11-"+r,"c",["tab-item",{active:t.currentTab===s}]),attrs:{_i:"11-"+r},on:{click:function(i){return t.switchTab(s,e.id)}}},[t._v(t._$s("11-"+r,"t0-0",t._s(e.text)))])})),0)]),t._$s(12,"i",0!=t.services.length||!t.services)?i("view",{staticClass:t._$s(12,"sc","service-list"),attrs:{_i:12}},t._l(t._$s(13,"f",{forItems:t.services}),(function(e,s,a,r){return i("work-space-card",{key:t._$s(13,"f",{forIndex:a,key:s}),attrs:{index:s,info:e,_i:"13-"+r},on:{viewEdit:t.viewEdit,viewList:t.viewList,viewRemove:t.viewRemove,changeSlide:t.changeSlide,deletemanHour:t.deletemanHour}})})),1):i("noData",{attrs:{_i:14}}),t._$s(15,"i",t.hasMore)?i("view",{staticClass:t._$s(15,"sc","load-more"),attrs:{_i:15}},[i("text")]):t._e(),i("tipsPopup",{attrs:{show:t.showTip,_i:17},on:{okBtn:t.addService,closePopup:function(e){t.showTip=!1}}})],1)},r=[]},"0cb9":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","filter-container"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","filter-bar"),attrs:{_i:1}},t._l(t._$s(2,"f",{forItems:t.filterTabs}),(function(e,s,a,r){return i("view",{key:t._$s(2,"f",{forIndex:a,key:s}),staticClass:t._$s("2-"+r,"sc","filter-item"),class:t._$s("2-"+r,"c",{active:t.activeIndex===s,"has-value":t.hasValue(e.key)}),attrs:{_i:"2-"+r},on:{click:function(e){return e.stopPropagation(),t.toggleFilter(s)}}},[i("text",{staticClass:t._$s("3-"+r,"sc","filter-text"),attrs:{_i:"3-"+r}},[t._v(t._$s("3-"+r,"t0-0",t._s(e.label)))]),i("image",{staticClass:t._$s("4-"+r,"sc","arrow-icon"),attrs:{src:t._$s("4-"+r,"a-src",t.activeIndex===s?t.arrowUp:t.arrowDown),_i:"4-"+r}})])})),0),t._$s(5,"i",t.showDropdown||t.isAnimating)?i("view",{staticClass:t._$s(5,"sc","filter-mask"),class:t._$s(5,"c",{"mask-show":t.showDropdown,"mask-hide":!t.showDropdown&&t.isAnimating}),style:t._$s(5,"s",{top:t.maskTop+"px"}),attrs:{_i:5},on:{click:t.closeFilter}}):t._e(),t._$s(6,"i",t.showDropdown||t.isAnimating)?i("view",{staticClass:t._$s(6,"sc","filter-panel"),class:t._$s(6,"c",{"panel-show":t.showDropdown,"panel-hide":!t.showDropdown&&t.isAnimating}),style:t._$s(6,"s",{top:t.panelTop+"px"}),attrs:{_i:6}},[t._$s(7,"i",0===t.activeIndex)?i("view",{staticClass:t._$s(7,"sc","filter-content service-type"),class:t._$s(7,"c",{"content-active":t.showDropdown}),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","option-list"),attrs:{_i:8}},t._l(t._$s(9,"f",{forItems:t.serviceOptions}),(function(e,s,a,r){return i("view",{key:t._$s(9,"f",{forIndex:a,key:s}),staticClass:t._$s("9-"+r,"sc","option-item"),class:t._$s("9-"+r,"c",{active:t.selectedService===e.value}),attrs:{_i:"9-"+r},on:{click:function(i){return t.selectService(e.value)}}},[i("text",{staticClass:t._$s("10-"+r,"sc","option-text"),attrs:{_i:"10-"+r}},[t._v(t._$s("10-"+r,"t0-0",t._s(e.label)))]),t._$s("11-"+r,"i",t.selectedService===e.value)?i("image",{staticClass:t._$s("11-"+r,"sc","check-icon"),attrs:{src:t._$s("11-"+r,"a-src",t.checkIcon),_i:"11-"+r}}):t._e()])})),0)]):t._e(),t._$s(12,"i",1===t.activeIndex)?i("view",{staticClass:t._$s(12,"sc","filter-content distance"),class:t._$s(12,"c",{"content-active":t.showDropdown}),attrs:{_i:12}},[i("view",{staticClass:t._$s(13,"sc","option-buttons distance-buttons"),attrs:{_i:13}},t._l(t._$s(14,"f",{forItems:t.distanceOptions}),(function(e,s,a,r){return i("view",{key:t._$s(14,"f",{forIndex:a,key:s}),staticClass:t._$s("14-"+r,"sc","option-button"),class:t._$s("14-"+r,"c",{active:t.selectedDistance===e.value}),attrs:{_i:"14-"+r},on:{click:function(i){return t.selectDistance(e.value)}}},[i("text",{staticClass:t._$s("15-"+r,"sc","button-text"),attrs:{_i:"15-"+r}},[t._v(t._$s("15-"+r,"t0-0",t._s(e.label)))])])})),0),i("view",{staticClass:t._$s(16,"sc","action-buttons"),attrs:{_i:16}},[i("button",{staticClass:t._$s(17,"sc","btn reset"),attrs:{_i:17},on:{click:t.resetFilter}}),i("button",{staticClass:t._$s(18,"sc","btn confirm"),attrs:{_i:18},on:{click:t.confirmFilter}})])]):t._e(),t._$s(19,"i",2===t.activeIndex)?i("view",{staticClass:t._$s(19,"sc","filter-content price"),class:t._$s(19,"c",{"content-active":t.showDropdown}),attrs:{_i:19}},[i("view",{staticClass:t._$s(20,"sc","option-buttons price-buttons"),attrs:{_i:20}},[t._l(t._$s(21,"f",{forItems:t.priceOptions}),(function(e,s,a,r){return i("view",{key:t._$s(21,"f",{forIndex:a,key:s}),staticClass:t._$s("21-"+r,"sc","option-button"),class:t._$s("21-"+r,"c",{active:t.selectedPrice===e.value,custom:"custom"===e.value}),attrs:{_i:"21-"+r},on:{click:function(i){return t.selectPrice(e.value)}}},[i("text",{staticClass:t._$s("22-"+r,"sc","button-text"),attrs:{_i:"22-"+r}},[t._v(t._$s("22-"+r,"t0-0",t._s(e.label)))])])})),i("view",{staticClass:t._$s(23,"sc","custom-price-container"),class:t._$s(23,"c",{expanded:"custom"===t.selectedPrice,active:"custom"===t.selectedPrice}),attrs:{_i:23},on:{click:t.handleCustomPriceClick}},[i("view",{staticClass:t._$s(24,"sc","custom-price-inner"),attrs:{_i:24}},[i("view",{staticClass:t._$s(25,"sc","custom-button-content"),attrs:{_i:25}},[i("text")]),i("view",{staticClass:t._$s(27,"sc","custom-input-content"),attrs:{_i:27}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.customMin,expression:"customMin"}],staticClass:t._$s(28,"sc","price-input"),attrs:{_i:28},domProps:{value:t._$s(28,"v-model",t.customMin)},on:{input:[function(e){e.target.composing||(t.customMin=e.target.value)},t.validatePrice],click:function(t){t.stopPropagation()}}}),i("text",{staticClass:t._$s(29,"sc","separator"),attrs:{_i:29}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.customMax,expression:"customMax"}],staticClass:t._$s(30,"sc","price-input"),attrs:{_i:30},domProps:{value:t._$s(30,"v-model",t.customMax)},on:{input:[function(e){e.target.composing||(t.customMax=e.target.value)},t.validatePrice],click:function(t){t.stopPropagation()}}})])])])],2),i("view",{staticClass:t._$s(31,"sc","action-buttons"),attrs:{_i:31}},[i("button",{staticClass:t._$s(32,"sc","btn reset"),attrs:{_i:32},on:{click:t.resetFilter}}),i("button",{staticClass:t._$s(33,"sc","btn confirm"),attrs:{_i:33},on:{click:t.confirmFilter}})])]):t._e(),t._$s(34,"i",3===t.activeIndex)?i("view",{staticClass:t._$s(34,"sc","filter-content sort"),class:t._$s(34,"c",{"content-active":t.showDropdown}),attrs:{_i:34}},[i("view",{staticClass:t._$s(35,"sc","option-list"),attrs:{_i:35}},t._l(t._$s(36,"f",{forItems:t.sortOptions}),(function(e,s,a,r){return i("view",{key:t._$s(36,"f",{forIndex:a,key:s}),staticClass:t._$s("36-"+r,"sc","option-item"),class:t._$s("36-"+r,"c",{active:t.selectedSort===e.value}),attrs:{_i:"36-"+r},on:{click:function(i){return t.selectSort(e.value)}}},[i("text",{staticClass:t._$s("37-"+r,"sc","option-text"),attrs:{_i:"37-"+r}},[t._v(t._$s("37-"+r,"t0-0",t._s(e.label)))]),t._$s("38-"+r,"i",t.selectedSort===e.value)?i("image",{staticClass:t._$s("38-"+r,"sc","check-icon"),attrs:{src:t._$s("38-"+r,"a-src",t.checkIcon),_i:"38-"+r}}):t._e()])})),0)]):t._e()]):t._e()])},a=[]},"0cd8":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"noLogin",data:function(){return{}},props:{tipText:{type:String,default:"\u60a8\u8fd8\u6ca1\u6709\u767b\u5f55\uff0c\u8bf7\u767b\u5f55\u540e\u67e5\u770b\u8ba2\u5355"}},components:{},methods:{goLogin:function(){uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}}};e.default=s},"0d03":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","my-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u4e2a\u4eba\u4e2d\u5fc3",showBack:!0,borderBottom:"none",backgroundColor:"linear-gradient( 106deg, #FFE1E1 0%, #CCD8F7 100%)",_i:1}}),i("view",{staticClass:t._$s(2,"sc","user-info"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","user-header"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","avatar-wrap"),attrs:{_i:4}},[t._$s(5,"i",t.userInfo.head_photo)?i("image",{staticClass:t._$s(5,"sc","avatar"),attrs:{src:t._$s(5,"a-src",t.userInfo.head_photo),_i:5}}):t._e()]),i("view",{staticClass:t._$s(6,"sc","user-detail"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","name-wrap"),attrs:{_i:7}},[i("text",{staticClass:t._$s(8,"sc","name"),attrs:{_i:8}},[t._v(t._$s(8,"t0-0",t._s(t.userInfo.name)))]),i("view",{staticClass:t._$s(9,"sc","amount-box"),attrs:{_i:9},on:{click:function(e){return t.navigateTo("/pages/wallet/wallet")}}},[i("image",{staticClass:t._$s(10,"sc","amount-img"),attrs:{_i:10}}),i("text",{staticClass:t._$s(11,"sc","amount-lable"),attrs:{_i:11}}),i("text",{staticClass:t._$s(12,"sc","amount-text"),attrs:{_i:12}},[t._v(t._$s(12,"t0-0",t._s(t.userInfo.money)))])])])]),i("view",{staticClass:t._$s(13,"sc","edit-profile"),attrs:{_i:13},on:{click:t.goArtisanProfile}},[i("text",{staticClass:t._$s(14,"sc","edit-text"),attrs:{_i:14}}),i("image",{attrs:{_i:15}})])]),i("view",{staticClass:t._$s(16,"sc","module box-cont"),attrs:{_i:16}},[i("view",{staticClass:t._$s(17,"sc","module-lable"),attrs:{_i:17}}),i("view",{staticClass:t._$s(18,"sc","module-cont"),attrs:{_i:18}},t._l(t._$s(19,"f",{forItems:t.tradeList}),(function(e,s,a,r){return i("image",{key:t._$s(19,"f",{forIndex:a,key:e.id}),staticClass:t._$s("19-"+r,"sc","module-cont-img"),attrs:{src:t._$s("19-"+r,"a-src",e.imgUrl),_i:"19-"+r},on:{click:function(i){return t.navigateTo(e.pathUrl)}}})})),0)]),i("view",{staticClass:t._$s(20,"sc","module box-cont module-order"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","module-lable"),attrs:{_i:21}}),i("view",{staticClass:t._$s(22,"sc","module-cont"),attrs:{_i:22}},t._l(t._$s(23,"f",{forItems:t.orderTypeList}),(function(e,s,a,r){return i("image",{key:t._$s(23,"f",{forIndex:a,key:e.id}),staticClass:t._$s("23-"+r,"sc","module-cont-img"),attrs:{src:t._$s("23-"+r,"a-src",e.imgUrl),_i:"23-"+r},on:{click:function(i){return t.navigateTo(e.pathUrl)}}})})),0)]),i("view",{staticClass:t._$s(24,"sc","module box-cont module-order"),attrs:{_i:24}},[i("view",{staticClass:t._$s(25,"sc","module-lable"),attrs:{_i:25}}),i("view",{staticClass:t._$s(26,"sc","module-cont"),attrs:{_i:26}},t._l(t._$s(27,"f",{forItems:t.marketingTypeList}),(function(e,s,a,r){return i("image",{key:t._$s(27,"f",{forIndex:a,key:e.id}),staticClass:t._$s("27-"+r,"sc","module-cont-img"),attrs:{src:t._$s("27-"+r,"a-src",e.imgUrl),_i:"27-"+r},on:{click:function(i){return t.navigateTo(e.pathUrl)}}})})),0)]),t._$s(28,"i",0==t.userInfo.self_state)?i("image",{staticClass:t._$s(28,"sc","module-banner"),attrs:{_i:28},on:{click:t.goAgreement}}):i("view",{staticClass:t._$s(29,"sc","module box-cont module-order"),attrs:{_i:29}},[i("view",{staticClass:t._$s(30,"sc","module-lable"),attrs:{_i:30}}),i("view",{staticClass:t._$s(31,"sc","module-cont"),attrs:{_i:31}},t._l(t._$s(32,"f",{forItems:t.selfOperatedList}),(function(e,s,a,r){return i("image",{key:t._$s(32,"f",{forIndex:a,key:e.id}),staticClass:t._$s("32-"+r,"sc","module-cont-img"),attrs:{src:t._$s("32-"+r,"a-src",e.imgUrl),_i:"32-"+r},on:{click:function(i){return t.navigateTo(e.pathUrl)}}})})),0)]),i("view",{staticClass:t._$s(33,"sc","function-list"),attrs:{_i:33}},[i("view",{staticClass:t._$s(34,"sc","function-item"),attrs:{_i:34},on:{click:function(e){return t.navigateTo("/pages/contact/contact")}}},[i("text",{staticClass:t._$s(35,"sc","function-text"),attrs:{_i:35}}),i("image",{staticClass:t._$s(36,"sc","right_gray"),attrs:{_i:36}})])])])],1)},r=[]},"0d59":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("e26b")),n=i("53d1"),o=s(i("669f")),d=s(i("2251")),l=s(i("f8df")),u=s(i("16bb")),f={components:{serviecFirstTab:d.default,CommonList:l.default,OrderCard:o.default,serviceCodeInput:c.default},data:function(){var t=new Date;return{clickType:!1,serviceType:1,urls:{1:{weChatRefund:"/syr/yhwechatrefund",aliRefund:"/syr/yhalirefund",startOrder:"/syr/yhstartserver",endOrder:"/syr/yhendserver",sureOrder:"/syr/yhordersure",list:"/syr/syrgetyhorder"},2:{ordernum:"/syr/orderSelf/orderNum",weChatRefund:"/syr/orderSelf/weChatRefund",aliRefund:"/syr/orderSelf/aliRefund",startOrder:"/syr/orderSelf/start",endOrder:"/syr/orderSelf/end",sureOrder:"/syr/orderSelf/sure",list:"/syr/orderSelf/list"}},showInput:!1,handelOrder:{},statusBarHeight:0,listQuery:{syrid:"",state:""},activeId:"",tabs:[{id:"",title:"\u5168\u90e8"},{id:3,title:"\u5f85\u5f00\u59cb"},{id:4,title:"\u8fdb\u884c\u4e2d"},{id:5,title:"\u5df2\u5b8c\u6210"},{id:7,title:"\u5df2\u53d6\u6d88"}],userInfo:{},isRefreshing:!1,currentYear:t.getFullYear(),currentMonth:t.getMonth()+1,orderList:[],artisanType:getApp().globalData.artisanType}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r,c;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return t.serviceType&&(e.serviceType=t.serviceType),s=uni.getSystemInfoSync(),e.statusBarHeight=s.statusBarHeight,i.next=5,u.default.post("/user/getuser",{type:2});case 5:r=i.sent,c=r.data,e.userInfo=c,e.listQuery.syrid=e.userInfo.id,e.search();case 10:case"end":return i.stop()}}),i)})))()},onPullDownRefresh:function(){this.onRefresh()},methods:{search:function(){this.$refs.groupRef.manualRefresh(this.listQuery)},tabClick:function(t,e,i){this.activeId=t,this.listQuery.state=t,this.search()},confirmOrder:function(t,e){var i=this,s=this.urls[this.serviceType].sureOrder;this.clickType||(this.clickType=!0,u.default.post(s,{syrid:this.userInfo.id,id:e.id}).then((function(t){uni.showToast({title:"\u5df2\u63a5\u5355",icon:"none"}),i.$refs.groupRef.manualRefresh(i.listQuery)})).finally((function(){i.clickType=!1})))},cancelOrder:function(e,i){var s=this;uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f\uff08\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u652f\u4ed8\u91d1\u989d\u5c06\u539f\u8def\u9000\u56de\uff09",success:function(e){if(e.confirm){var a={orderNo:i.number,amount:i.pay_money,syrid:s.userInfo.id},r="";1==i.pay_kind?r="":2==i.pay_kind?r=s.urls[s.serviceType].weChatRefund:3==i.pay_kind&&(r=s.urls[s.serviceType].aliRefund),t("log",a,r," at pages/syr/userorders.vue:180"),u.default.post(r,a).then((function(e){t("log","\u53d6\u6d88\u8ba2\u5355\u8fd4\u56de\u7ed3\u679c",e," at pages/syr/userorders.vue:184"),1==e.state||1==e.code||200==e.code?s.$refs.groupRef.manualRefresh(s.listQuery):uni.showToast({title:e.msg,icon:"none"})})).catch((function(e){t("log",e," at pages/syr/userorders.vue:195")}))}}})},startOrder:function(t,e){this.showInput=!0,this.handelOrder=e},onConfirm:function(e){var i=this;this.showInput=!1,u.default.post(this.urls[this.serviceType].startOrder,{id:this.handelOrder.id,server_code:e,syrid:this.userInfo.id}).then((function(e){t("log",e," at pages/syr/userorders.vue:216"),1==e.state||200==e.code?(uni.showToast({title:e.msg,icon:"none"}),i.$refs.groupRef.manualRefresh(i.listQuery)):2!=e.state&&500!=e.code||uni.showToast({title:e.msg,icon:"none"}),i.handelOrder={}}))},goOrderDetail:function(t){var e="";e="/pages/syr/userorder-detail?id=".concat(t.id),"order_self"==t.table_source&&(e="/pages/syr/userorder-detail?id=".concat(t.id,"&serviceType=2")),uni.navigateTo({url:e})},endOrder:(0,n.debounce)((function(e,i){var s=this;u.default.post(this.urls[this.serviceType].endOrder,{id:i.id,syrid:this.userInfo.id}).then((function(e){t("log","res====================",e," at pages/syr/userorders.vue:252"),1!=e.state&&200!=e.code||(uni.showToast({title:e.msg,icon:"none"}),s.$refs.groupRef.manualRefresh(s.listQuery))}))}),500)}};e.default=f}).call(this,i("f3b9")["default"])},"0dc6":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uvPopup:i("05d1").default,uvToolbar:i("5333").default,uvLoadingIcon:i("c9c1").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uv-popup",{ref:"pickerPopup",attrs:{mode:"bottom",round:t.round,"close-on-click-overlay":t.closeOnClickOverlay,_i:0},on:{change:t.popupChange}},[i("view",{staticClass:t._$s(1,"sc","uv-picker"),attrs:{_i:1}},[t._$s(2,"i",t.showToolbar)?i("uv-toolbar",{attrs:{cancelColor:t.cancelColor,confirmColor:t.confirmColor,cancelText:t.cancelText,confirmText:t.confirmText,title:t.title,_i:2},on:{cancel:t.cancel,confirm:t.confirm}}):t._e(),i("picker-view",{staticClass:t._$s(3,"sc","uv-picker__view"),style:t._$s(3,"s",{height:""+t.$uv.addUnit(t.visibleItemCount*t.itemHeight)}),attrs:{indicatorStyle:t._$s(3,"a-indicatorStyle","height: "+t.$uv.addUnit(t.itemHeight)),value:t._$s(3,"a-value",t.innerIndex),immediateChange:t._$s(3,"a-immediateChange",t.immediateChange),_i:3},on:{change:t.changeHandler}},t._l(t._$s(4,"f",{forItems:t.innerColumns}),(function(e,s,a,r){return i("picker-view-column",{key:t._$s(4,"f",{forIndex:a,key:s}),staticClass:t._$s("4-"+r,"sc","uv-picker__view__column"),attrs:{_i:"4-"+r}},t._l(t._$s("5-"+r,"f",{forItems:e}),(function(a,c,n,o){return t._$s("5-"+r+"-"+o,"i",t.$uv.test.array(e))?i("text",{key:t._$s("5-"+r,"f",{forIndex:n,key:c}),staticClass:t._$s("5-"+r+"-"+o,"sc","uv-picker__view__column__item uv-line-1"),style:t._$s("5-"+r+"-"+o,"s",[{height:t.$uv.addUnit(t.itemHeight),lineHeight:t.$uv.addUnit(t.itemHeight),fontWeight:c===t.innerIndex[s]?"bold":"normal"},t.textStyle(s,c)]),attrs:{_i:"5-"+r+"-"+o}},[t._v(t._$s("5-"+r+"-"+o,"t0-0",t._s(t.getItemText(a))))]):t._e()})),0)})),0),t._$s(6,"i",t.loading)?i("view",{staticClass:t._$s(6,"sc","uv-picker--loading"),attrs:{_i:6}},[i("uv-loading-icon",{attrs:{mode:"circle",_i:7}})],1):t._e()],1)])},r=[]},"0dca":function(t,e,i){"use strict";i.r(e);var s=i("8d6d"),a=i("d2db");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"0eb0":function(t,e,i){"use strict";i.r(e);var s=i("1ef4"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"0ee4":function(t,e){var i;i=function(){return this}();try{i=i||new Function("return this")()}catch(s){"object"===typeof window&&(i=window)}t.exports=i},"0f37":function(t,e,i){"use strict";i.r(e);var s=i("0dc6"),a=i("09a8");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"439b7456",null,!1,s["a"],void 0);e["default"]=n.exports},"0f90":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","syr-list-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u95e8\u5e97\u624b\u827a\u4eba\u5217\u8868","show-back":!0,backgroundColor:"#fff",_i:1}}),i("scroll-view",{staticClass:t._$s(2,"sc","syr-list-scroll"),style:t._$s(2,"s",{height:t.scrollViewHeight+"px"}),attrs:{_i:2},on:{scrolltolower:t.loadMore}},[i("view",{staticClass:t._$s(3,"sc","syr-list-container"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","syr-grid"),attrs:{_i:4}},t._l(t._$s(5,"f",{forItems:t.artisanList}),(function(e,s,a,r){return i("view",{key:t._$s(5,"f",{forIndex:a,key:e.id}),staticClass:t._$s("5-"+r,"sc","syr-card"),attrs:{_i:"5-"+r},on:{click:function(i){return t.goArtisanDetail(e)}}},[i("view",{staticClass:t._$s("6-"+r,"sc","syr-avatar-container"),attrs:{_i:"6-"+r}},[i("image",{staticClass:t._$s("7-"+r,"sc","syr-avatar"),attrs:{src:t._$s("7-"+r,"a-src",e.avatar||t.defaultAvatar),_i:"7-"+r}})]),i("view",{staticClass:t._$s("8-"+r,"sc","syr-info"),attrs:{_i:"8-"+r}},[i("view",{staticClass:t._$s("9-"+r,"sc","syr-name-row"),attrs:{_i:"9-"+r}},[i("text",{staticClass:t._$s("10-"+r,"sc","syr-name"),attrs:{_i:"10-"+r}},[t._v(t._$s("10-"+r,"t0-0",t._s(e.name)))]),i("view",{staticClass:t._$s("11-"+r,"sc","syr-distance"),attrs:{_i:"11-"+r}},[i("image",{staticClass:t._$s("12-"+r,"sc","distance-icon"),attrs:{_i:"12-"+r}}),i("text",{staticClass:t._$s("13-"+r,"sc","distance-text"),attrs:{_i:"13-"+r}},[t._v(t._$s("13-"+r,"t0-0",t._s(t.formatDistance(e.distance))))])])]),i("view",{staticClass:t._$s("14-"+r,"sc","syr-experience-row"),attrs:{_i:"14-"+r}},[i("text",{staticClass:t._$s("15-"+r,"sc","syr-experience"),attrs:{_i:"15-"+r}}),i("image",{staticClass:t._$s("16-"+r,"sc","experience-icon"),attrs:{_i:"16-"+r},on:{click:function(i){return i.stopPropagation(),t.goQualification(e)}}})]),i("view",{staticClass:t._$s("17-"+r,"sc","syr-join-row"),attrs:{_i:"17-"+r}},[i("text",{staticClass:t._$s("18-"+r,"sc","syr-join"),attrs:{_i:"18-"+r}},[t._v(t._$s("18-"+r,"t0-0",t._s(t.formatWorkingYears(e.working_years))))])])])])})),0),i("view",{staticClass:t._$s(19,"sc","loading-status"),attrs:{_i:19}},[t._$s(20,"i",t.loading)?i("text",{staticClass:t._$s(20,"sc","loading-text"),attrs:{_i:20}}):t._e(),t._$s(21,"i",t.finished&&t.artisanList.length>0)?i("text",{staticClass:t._$s(21,"sc","no-more-text"),attrs:{_i:21}}):t._e()])])])],1)},r=[]},"0ff7":function(t,e,i){"use strict";i.r(e);var s=i("255a"),a=i("1413");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"4b12a886",null,!1,s["a"],void 0);e["default"]=n.exports},"105e":function(t,e,i){"use strict";i.r(e);var s=i("b104"),a=i("7a6f");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"60ff2896",null,!1,s["a"],void 0);e["default"]=n.exports},"10ab":function(t,e,i){"use strict";e.byteLength=function(t){var e=d(t),i=e[0],s=e[1];return 3*(i+s)/4-s},e.toByteArray=function(t){var e,i,s=d(t),c=s[0],n=s[1],o=new r(function(t,e,i){return 3*(e+i)/4-i}(0,c,n)),l=0,u=n>0?c-4:c;for(i=0;i>16&255,o[l++]=e>>8&255,o[l++]=255&e;2===n&&(e=a[t.charCodeAt(i)]<<2|a[t.charCodeAt(i+1)]>>4,o[l++]=255&e);1===n&&(e=a[t.charCodeAt(i)]<<10|a[t.charCodeAt(i+1)]<<4|a[t.charCodeAt(i+2)]>>2,o[l++]=e>>8&255,o[l++]=255&e);return o},e.fromByteArray=function(t){for(var e,i=t.length,a=i%3,r=[],c=0,n=i-a;cn?n:c+16383));1===a?(e=t[i-1],r.push(s[e>>2]+s[e<<4&63]+"==")):2===a&&(e=(t[i-2]<<8)+t[i-1],r.push(s[e>>10]+s[e>>4&63]+s[e<<2&63]+"="));return r.join("")};for(var s=[],a=[],r="undefined"!==typeof Uint8Array?Uint8Array:Array,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,o=c.length;n0)throw new Error("Invalid string. Length must be a multiple of 4");var i=t.indexOf("=");-1===i&&(i=e);var s=i===e?0:4-i%4;return[i,s]}function l(t){return s[t>>18&63]+s[t>>12&63]+s[t>>6&63]+s[63&t]}function u(t,e,i){for(var s,a=[],r=e;r\n
    \n
    ".concat(s,"
    \n
    ").concat(a,"
    \n
    \n "),t}),{}):{},r="";if(e.map((function(t){a[t]?r+=a[t]:i("log",t+"\u672a\u914d\u7f6e\u63d0\u793a\u8bed"," at utils/permissionTips.js:48")})),!r)return null;var c=uni.getSystemInfoSync(),n=new plus.webview.create("/static/permissionTips.html","permissionTips",{"uni-app":"none",top:c.statusBarHeight,left:0,width:c.screenWidth,height:c.screenHeight-c.statusBarHeight,background:"transparent"},{permissionInfo:r});return n.show(),n}(s)})),a.onComplete((function(t){e&&e.close&&e.close(),e&&e.destroy&&e.destroy(),e=null}))};var s=uni.getSystemInfoSync().platform}).call(this,i("0ee4"),i("f3b9")["default"])},1185:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("af34")),c=s(i("ee10")),n=s(i("16bb")),o=s(i("7bd1")),d=s(i("e26b")),l={data:function(){return{clickType:!1,startItem:null,showInput:!1,state:void 0,currentTab:0,tabs:[{id:void 0,text:"\u5168\u90e8"},{id:2,text:"\u5f85\u63a5\u5355"},{id:3,text:"\u5f85\u5f00\u59cb"},{id:4,text:"\u8fdb\u884c\u4e2d"},{id:5,text:"\u5df2\u5b8c\u6210"},{id:7,text:"\u5df2\u53d6\u6d88"}],services:[],hasMore:!1,startX:0,moveX:0,currentIndex:-1,count:0,isLoad:!0,page:1,limit:10}},components:{orderCard:o.default,serviceCodeInput:d.default},onLoad:function(){this.getServicesList()},onPullDownRefresh:function(){this.getServicesList()},onReachBottom:function(){var e=this;return(0,c.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(t("log","onReachBottom"," at pages/shop/workSpace/saleList.vue:96"),!(e.count<=e.page*e.limit)&&e.isLoad){i.next=3;break}return i.abrupt("return");case 3:e.page++,e.getServicesList(!1);case 5:case"end":return i.stop()}}),i)})))()},methods:{getServicesList:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.isLoad=!1,e&&(this.page=1,this.limit=10);var i="/sj/workSeatOrder/list";n.default.post(i,{state:this.state,page:this.page,limit:this.limit}).then((function(i){e?(t.services=i.data.list,t.count=i.data.count):(t.services=[].concat((0,r.default)(t.services),(0,r.default)(i.data.list)),t.count=i.data.count)})).finally((function(){uni.stopPullDownRefresh(),t.isLoad=!0}))},switchTab:function(t,e){this.currentTab=t,this.state=e,this.getServicesList()},cancel:function(e){var i=this;uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f\uff08\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u652f\u4ed8\u91d1\u989d\u5c06\u539f\u8def\u9000\u56de\uff09",success:function(s){if(s.confirm){var a;a={orderNo:e.number,amount:e.pay_money,sjid:e.id};var r="";if(1==e.pay_kind?r="":2==e.pay_kind?r="/sj/workSeatOrder/weChatRefund":3==e.pay_kind&&(r="/sj/workSeatOrder/aliRefund"),i.clickType)return;i.clickType=!0,n.default.post(r,a).then((function(t){1!=t.code&&200!=t.code||i.getServicesList()})).catch((function(e){return t("log",e," at pages/shop/workSpace/saleList.vue:168")})).finally((function(){i.clickType=!1}))}}})},startServe:function(t){this.startItem=t,this.showInput=!0},accept:function(t){var e=this;this.clickType||(this.clickType=!0,n.default.post("/sj/workSeatOrder/sure",{id:t.id}).then((function(t){uni.showToast({title:"\u5df2\u63a5\u5355",icon:"none"}),200==t.code&&e.getServicesList()})).finally((function(){e.clickType=!1})))},goDetail:function(t){uni.navigateTo({url:"/pages/shop/SellerDetail?order_id=".concat(t.id)})},done:function(t){var e=this;this.clickType||(this.clickType=!0,n.default.post("/sj/workSeatOrder/end",{id:t.id}).then((function(t){200==t.code&&e.getServicesList()})).finally((function(){e.clickType=!1})))},onConfirm:function(t){var e=this;this.showInput=!1,this.clickType||(this.clickType=!0,n.default.post("/sj/workSeatOrder/start",{id:this.startItem.id,server_code:t}).then((function(t){200==t.code&&e.getServicesList()})).finally((function(){e.clickType=!1})))}}};e.default=l}).call(this,i("f3b9")["default"])},"11ba":function(t,e,i){"use strict";i.r(e);var s=i("f805"),a=i("98d7");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"a9f6f654",null,!1,s["a"],void 0);e["default"]=n.exports},"11f4":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","detail-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u8ba2\u5355\u8be6\u60c5","show-back":!0,"title-color":"#333333",backgroundColor:t.backgroundColor,_i:1}}),i("view",{staticClass:t._$s(2,"sc","content-part"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","status-section"),attrs:{_i:3}},[i("image",{staticClass:t._$s(4,"sc","status-section-image"),attrs:{src:t._$s(4,"a-src",t.stateItem.icon),_i:4}}),i("text",{staticClass:t._$s(5,"sc","status-text"),attrs:{_i:5}},[t._v(t._$s(5,"t0-0",t._s(t.stateItem.text)))])]),i("view",{staticClass:t._$s(6,"sc","booking-card"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","card_title"),attrs:{_i:7}}),i("view",{staticClass:t._$s(8,"sc","service-item"),attrs:{_i:8}},[t._$s(9,"i",t.orderInfo.photo&&0!=t.orderInfo.photo.length)?i("image",{staticClass:t._$s(9,"sc","service-image"),attrs:{src:t._$s(9,"a-src",t.orderInfo.photo[0]),_i:9}}):t._e(),i("view",{staticClass:t._$s(10,"sc","service-info"),attrs:{_i:10}},[i("view",{staticClass:t._$s(11,"sc","service-box"),attrs:{_i:11}},[i("text",{staticClass:t._$s(12,"sc","service-name white-space-nowrap"),attrs:{_i:12}},[t._v(t._$s(12,"t0-0",t._s(t.orderInfo.title)))]),i("text",{staticClass:t._$s(13,"sc","service-subtitle white-space-nowrap"),attrs:{_i:13}},[t._v(t._$s(13,"t0-0",t._s(t.orderInfo.first_class_title+" "+t.orderInfo.second_class_title.join("\u3001"))))])]),i("view",{staticClass:t._$s(14,"sc","service-price"),attrs:{_i:14}},[i("text",[t._v(t._$s(15,"t0-0",t._s(t.orderInfo.price)))])])])]),i("view",{staticClass:t._$s(16,"sc","service-real"),attrs:{_i:16}},[i("view",{staticClass:t._$s(17,"sc","card_time"),attrs:{_i:17}},[t._v(t._$s(17,"t0-0",t._s(t.formatDateAndAddMinutes(t.orderInfo.reserve_start_time).original)))]),i("view",{staticClass:t._$s(18,"sc","card_time"),attrs:{_i:18}},[t._v(t._$s(18,"t0-0",t._s(t.formatDateAndAddMinutes(t.orderInfo.reserve_end_time).original)))])])]),i("view",{staticClass:t._$s(19,"sc","order-card"),attrs:{_i:19}},[i("view",{staticClass:t._$s(20,"sc","card_title"),attrs:{_i:20}}),i("view",{staticClass:t._$s(21,"sc","info-item"),attrs:{_i:21}},[i("text",{staticClass:t._$s(22,"sc","label"),attrs:{_i:22}}),i("text",{staticClass:t._$s(23,"sc","value"),attrs:{_i:23}},[t._v(t._$s(23,"t0-0",t._s(t.orderInfo.number)))])]),i("view",{staticClass:t._$s(24,"sc","info-item"),attrs:{_i:24}},[i("text",{staticClass:t._$s(25,"sc","label"),attrs:{_i:25}}),i("text",{staticClass:t._$s(26,"sc","value"),attrs:{_i:26}},[t._v(t._$s(26,"t0-0",t._s(t.orderInfo.add_time)))])]),t._$s(27,"i",1!=t.orderInfo.state)?i("view",{staticClass:t._$s(27,"sc","info-item"),attrs:{_i:27}},[i("text",{staticClass:t._$s(28,"sc","label"),attrs:{_i:28}}),i("text",{staticClass:t._$s(29,"sc","value"),attrs:{_i:29}},[t._v(t._$s(29,"t0-0",t._s(1==t.orderInfo.pay_kind?"\u8d26\u6237\u4f59\u989d":2==t.orderInfo.pay_kind?"\u5fae\u4fe1\u652f\u4ed8":3==t.orderInfo.pay_kind?"\u652f\u4ed8\u5b9d\u652f\u4ed8":"")))])]):t._e(),t._$s(30,"i",1!=t.orderInfo.state)?i("view",{staticClass:t._$s(30,"sc","info-item"),attrs:{_i:30}},[i("text",{staticClass:t._$s(31,"sc","label"),attrs:{_i:31}}),i("text",{staticClass:t._$s(32,"sc","value"),attrs:{_i:32}},[t._v(t._$s(32,"t0-0",t._s(t.orderInfo.order_money)))])]):t._e(),t._$s(33,"i",1!=t.orderInfo.state)?i("view",{staticClass:t._$s(33,"sc","info-item"),attrs:{_i:33}},[i("text",{staticClass:t._$s(34,"sc","label"),attrs:{_i:34}}),i("text",{staticClass:t._$s(35,"sc","value"),attrs:{_i:35}},[t._v(t._$s(35,"t0-0",t._s(t.orderInfo.pay_time)))])]):t._e()]),i("view",{staticClass:t._$s(36,"sc","shop_card"),attrs:{_i:36}},[i("view",{staticClass:t._$s(37,"sc","card_title"),attrs:{_i:37}}),i("view",{staticClass:t._$s(38,"sc","shop_title_box"),attrs:{_i:38}},[i("image",{staticClass:t._$s(39,"sc","shop_photo"),attrs:{src:t._$s(39,"a-src",t.orderInfo.head_photo),_i:39}}),i("view",{staticClass:t._$s(40,"sc","shop_title"),attrs:{_i:40}},[t._v(t._$s(40,"t0-0",t._s(t.orderInfo.name)))])]),i("view",{staticClass:t._$s(41,"sc","service_content"),attrs:{_i:41}},[t._v(t._$s(41,"t0-0",t._s(t.orderInfo.first_class_title+" "+t.orderInfo.second_class_title.join("\u3001"))))]),i("view",{staticClass:t._$s(42,"sc","shop_address"),attrs:{_i:42}},[i("image",{staticClass:t._$s(43,"sc","shop_icon"),attrs:{_i:43}}),i("text",[t._v(t._$s(44,"t0-0",t._s(t.orderInfo.dependency))+t._$s(44,"t0-1",t._s(t.orderInfo.address)))])]),i("view",{staticClass:t._$s(45,"sc","shop_address mt_10"),attrs:{_i:45}},[i("image",{staticClass:t._$s(46,"sc","shop_icon"),attrs:{_i:46}}),i("text",[t._v(t._$s(47,"t0-0",t._s(t.orderInfo.phone)))])])])]),i("view",{staticClass:t._$s(48,"sc","bottom-buttons"),attrs:{_i:48}},[t._$s(49,"i",2==t.orderInfo.state||3==t.orderInfo.state)?i("view",{staticClass:t._$s(49,"sc","handel-button btn-border"),attrs:{_i:49},on:{click:function(e){return e.stopPropagation(),t.cancelOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(50,"sc","button-text"),attrs:{_i:50}})]):t._e(),t._$s(51,"i",2==t.orderInfo.state)?i("view",{staticClass:t._$s(51,"sc","handel-button btn-bg"),attrs:{_i:51},on:{click:function(e){return e.stopPropagation(),t.confirmOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(52,"sc","button-text"),attrs:{_i:52}})]):t._e(),t._$s(53,"i",3==t.orderInfo.state)?i("view",{staticClass:t._$s(53,"sc","handel-button btn-bg"),attrs:{_i:53},on:{click:function(e){return e.stopPropagation(),t.startOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(54,"sc","button-text"),attrs:{_i:54}})]):t._e(),t._$s(55,"i",4==t.orderInfo.state)?i("view",{staticClass:t._$s(55,"sc","handel-button btn-bg"),attrs:{_i:55},on:{click:function(e){return e.stopPropagation(),t.endOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(56,"sc","button-text"),attrs:{_i:56}})]):t._e()]),i("serviceCodeInput",{attrs:{show:t.showInput,_i:57},on:{close:function(e){t.showInput=!1},confirm:t.onConfirm}}),i("view",{staticClass:t._$s(58,"sc","permission"),class:t._$s(58,"c",{transform:t.isShowPer}),attrs:{_i:58}},[i("view",{staticClass:t._$s(59,"sc","per-tit"),attrs:{_i:59}}),i("view",{staticClass:t._$s(60,"sc","per-cont"),attrs:{_i:60}})])],1)},r=[]},"127e":function(t,e,i){var s=i("3b2d"),a=i("9fc1")();t.exports=a;try{regeneratorRuntime=a}catch(r){"object"===("undefined"===typeof globalThis?"undefined":s(globalThis))?globalThis.regeneratorRuntime=a:Function("r","regeneratorRuntime = r")(a)}},"12c3":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("cd5a")),o=s(i("e26b")),d=s(i("32a4")),l=s(i("91d2")),u={components:{serviceCodeInput:o.default},data:function(){return{clickType:!1,isShowPer:!1,id:"",staffInfo:{avatar:"/static/images/staff.jpg",name:"\u4e2d\u533b\u7406\u7597\u8c22\u98de",rating:5},showInput:!1,userInfo:{},orderInfo:{},reservation_address_arr:{},user_syr:{},scrollTop:0}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(e.id=t.id,!t.id){i.next=8;break}return i.next=4,c.default.post("/user/getuser",{type:2});case 4:s=i.sent,r=s.data,e.userInfo=r,e.getOrderDetail();case 8:case"end":return i.stop()}}),i)})))()},onPageScroll:function(t){this.scrollTop=t.scrollTop},computed:{backgroundColor:function(){return this.scrollTop>10?"rgba(255, 255, 255, ".concat(.02*this.scrollTop,");"):"transparent"},stateItem:function(){var t=this,e=[{text:"\u5f85\u652f\u4ed8",icon:"/static/images/icons/pay.png",state:"1"},{text:"\u5f85\u63a5\u5355",icon:"/static/images/icons/pending.png",state:"2"},{text:"\u5f85\u670d\u52a1",icon:"/static/images/icons/pendingService.png",state:"3"},{text:"\u670d\u52a1\u4e2d",icon:"/static/images/icons/pendingService.png",state:"4"},{text:"\u5df2\u5b8c\u6210",icon:"/static/images/icons/payOk.png",state:"5"},{text:"\u5f85\u8bc4\u4ef7",icon:"/static/images/icons/pending.png",state:"6"},{text:"\u5df2\u53d6\u6d88",icon:"/static/images/evaluate/cancel.png",state:"7"}].find((function(e){return e.state==t.orderInfo.state}))||{};return e}},methods:{formatDateAndAddMinutes:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!t)return{original:"",afterAddingMinutes:""};var i=new Date(t.replace(/-/g,"/"));function s(t){var e=t.getFullYear(),i=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),a=String(t.getHours()).padStart(2,"0"),r=String(t.getMinutes()).padStart(2,"0");return"".concat(e,"\u5e74").concat(i,"\u6708").concat(s,"\u65e5 ").concat(a,":").concat(r)}var a=s(i),r=new Date(i);r.setMinutes(r.getMinutes()+e);var c=s(r);return{original:a,afterAddingMinutes:c}},getOrderDetail:function(){var e=this;c.default.post("/syr/sjorderdetail",{id:this.id,syrid:this.userInfo.id}).then((function(i){e.orderInfo=i.data,e.reservation_address_arr=i.data.reservation_address_arr,t("log",e.orderInfo," at pages/syr/shoporder-detail.vue:315")}))},cancelOrder:function(e,i){var s=this;e.preventDefault(),e.stopPropagation(),uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f\uff08\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u652f\u4ed8\u91d1\u989d\u5c06\u539f\u8def\u9000\u56de\uff09",success:function(e){if(e.confirm){var a={orderNo:i.number,amount:i.pay_money,syrid:s.userInfo.id},r="";if(1==i.pay_kind?r="":2==i.pay_kind?r="/syr/sjwechatrefund":3==i.pay_kind&&(r="/syr/sjalirefund"),t("log",a,r," at pages/syr/shoporder-detail.vue:345"),s.clickType)return;s.clickType=!0,c.default.post(r,a).then((function(t){if(1==t.state||1==t.code||200==t.code){uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),s.getOrderDetail();var e=getCurrentPages(),i=e[e.length-2];i&&(i.$vm.getOrderNumber(),i.$vm.getOrderList())}else uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){t("log",e," at pages/syr/shoporder-detail.vue:374")})).finally((function(){s.clickType=!1}))}}})},confirmOrder:function(t,e){var i=this;t.preventDefault(),t.stopPropagation(),this.clickType||(this.clickType=!0,c.default.post("/syr/sjordersure",{id:e.id,syrid:this.userInfo.id}).then((function(t){uni.showToast({title:"\u5df2\u63a5\u5355",icon:"none"}),i.getOrderDetail();var e=getCurrentPages(),s=e[e.length-2];s&&(s.$vm.getOrderNumber(),s.$vm.getOrderList())})).finally((function(){i.clickType=!1})))},startOrder:function(t,e){t.preventDefault(),t.stopPropagation(),this.showInput=!0},onConfirm:function(e){var i=this;this.showInput=!1,this.clickType||(this.clickType=!0,c.default.post("/syr/sjstartserver",{id:this.orderInfo.id,server_code:e,syrid:this.userInfo.id}).then((function(e){if(t("log",e," at pages/syr/shoporder-detail.vue:438"),1==e.state){uni.showToast({title:e.msg,icon:"none"}),i.getOrderDetail();var s=getCurrentPages(),a=s[s.length-2];a&&(a.$vm.getOrderNumber(),a.$vm.getOrderList())}else 2==e.state&&uni.showToast({title:e.msg,icon:"none"});i.handelOrder={}})).finally((function(){i.clickType=!1})))},endOrder:function(t,e){var i=this;t.preventDefault(),t.stopPropagation(),this.clickType||(this.clickType=!0,c.default.post("/syr/sjendserver",{id:e.id,syrid:this.userInfo.id}).then((function(t){if(1==t.state){uni.showToast({title:t.msg,icon:"none"}),i.getOrderDetail();var e=getCurrentPages(),s=e[e.length-2];s&&(s.$vm.getOrderNumber(),s.$vm.getOrderList())}})).finally((function(){i.clickType=!1})))},showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))},contactService:function(e){var i=this;return(0,r.default)(a.default.mark((function s(){var r,c,n,o,u,f,_;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(r=uni.getSystemInfoSync(),"ios"!==r.platform){s.next=5;break}uni.makePhoneCall({phoneNumber:e}),s.next=35;break;case 5:return c="",c="ios"===r.platform?"phone":"android.permission.CALL_PHONE",i.isShowPer=!0,n=!plus.storage.getItem("perm_".concat(c)),n&&(i.isShowPer=!0),s.next=12,l.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 12:if(o=s.sent,u=o.granted,!u){s.next=18;break}return i.isShowPer=!1,uni.makePhoneCall({phoneNumber:e}),s.abrupt("return");case 18:return i.isShowPer=!1,s.next=21,i.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 21:if(f=s.sent,f){s.next=24;break}return s.abrupt("return");case 24:return s.next=26,l.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 26:if(_=s.sent,t("log","result",_," at pages/syr/shoporder-detail.vue:562"),!_){s.next=33;break}return uni.makePhoneCall({phoneNumber:e}),s.abrupt("return");case 33:return d.default.openAppSettings(),s.abrupt("return");case 35:case"end":return s.stop()}}),s)})))()},openMap:function(){n.default.goMap({latitude:parseFloat(this.reservation_address_arr.latitude),longitude:parseFloat(this.reservation_address_arr.longitude),name:this.reservation_address_arr.name,address:this.reservation_address_arr.address})}}};e.default=u}).call(this,i("f3b9")["default"])},"12c5":function(t,e,i){"use strict";i.r(e);var s=i("a89d"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"12e3":function(t,e,i){"use strict";(function(t){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +var s=i("10ab"),a=i("ba37"),r=i("b0e4");function c(){return o.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function n(t,e){if(c()=c())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+c().toString(16)+" bytes");return 0|t}function p(t,e){if(o.isBuffer(t))return t.length;if("undefined"!==typeof ArrayBuffer&&"function"===typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!==typeof t&&(t=""+t);var i=t.length;if(0===i)return 0;for(var s=!1;;)switch(e){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":case void 0:return R(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return q(t).length;default:if(s)return R(t).length;e=(""+e).toLowerCase(),s=!0}}function v(t,e,i){var s=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===i||i>this.length)&&(i=this.length),i<=0)return"";if(i>>>=0,e>>>=0,i<=e)return"";t||(t="utf8");while(1)switch(t){case"hex":return I(this,e,i);case"utf8":case"utf-8":return S(this,e,i);case"ascii":return D(this,e,i);case"latin1":case"binary":return T(this,e,i);case"base64":return k(this,e,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,e,i);default:if(s)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),s=!0}}function h(t,e,i){var s=t[e];t[e]=t[i],t[i]=s}function m(t,e,i,s,a){if(0===t.length)return-1;if("string"===typeof i?(s=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),i=+i,isNaN(i)&&(i=a?0:t.length-1),i<0&&(i=t.length+i),i>=t.length){if(a)return-1;i=t.length-1}else if(i<0){if(!a)return-1;i=0}if("string"===typeof e&&(e=o.from(e,s)),o.isBuffer(e))return 0===e.length?-1:g(t,e,i,s,a);if("number"===typeof e)return e&=255,o.TYPED_ARRAY_SUPPORT&&"function"===typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(t,e,i):Uint8Array.prototype.lastIndexOf.call(t,e,i):g(t,[e],i,s,a);throw new TypeError("val must be string, number or Buffer")}function g(t,e,i,s,a){var r,c=1,n=t.length,o=e.length;if(void 0!==s&&(s=String(s).toLowerCase(),"ucs2"===s||"ucs-2"===s||"utf16le"===s||"utf-16le"===s)){if(t.length<2||e.length<2)return-1;c=2,n/=2,o/=2,i/=2}function d(t,e){return 1===c?t[e]:t.readUInt16BE(e*c)}if(a){var l=-1;for(r=i;rn&&(i=n-o),r=i;r>=0;r--){for(var u=!0,f=0;fa&&(s=a)):s=a;var r=e.length;if(r%2!==0)throw new TypeError("Invalid hex string");s>r/2&&(s=r/2);for(var c=0;c>8,a=i%256,r.push(a),r.push(s)}return r}(e,t.length-i),t,i,s)}function k(t,e,i){return 0===e&&i===t.length?s.fromByteArray(t):s.fromByteArray(t.slice(e,i))}function S(t,e,i){i=Math.min(t.length,i);var s=[],a=e;while(a239?4:d>223?3:d>191?2:1;if(a+u<=i)switch(u){case 1:d<128&&(l=d);break;case 2:r=t[a+1],128===(192&r)&&(o=(31&d)<<6|63&r,o>127&&(l=o));break;case 3:r=t[a+1],c=t[a+2],128===(192&r)&&128===(192&c)&&(o=(15&d)<<12|(63&r)<<6|63&c,o>2047&&(o<55296||o>57343)&&(l=o));break;case 4:r=t[a+1],c=t[a+2],n=t[a+3],128===(192&r)&&128===(192&c)&&128===(192&n)&&(o=(15&d)<<18|(63&r)<<12|(63&c)<<6|63&n,o>65535&&o<1114112&&(l=o))}null===l?(l=65533,u=1):l>65535&&(l-=65536,s.push(l>>>10&1023|55296),l=56320|1023&l),s.push(l),a+=u}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var i="",s=0;while(s0&&(t=this.toString("hex",0,i).match(/.{2}/g).join(" "),this.length>i&&(t+=" ... ")),""},o.prototype.compare=function(t,e,i,s,a){if(!o.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===i&&(i=t?t.length:0),void 0===s&&(s=0),void 0===a&&(a=this.length),e<0||i>t.length||s<0||a>this.length)throw new RangeError("out of range index");if(s>=a&&e>=i)return 0;if(s>=a)return-1;if(e>=i)return 1;if(e>>>=0,i>>>=0,s>>>=0,a>>>=0,this===t)return 0;for(var r=a-s,c=i-e,n=Math.min(r,c),d=this.slice(s,a),l=t.slice(e,i),u=0;ua)&&(i=a),t.length>0&&(i<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");s||(s="utf8");for(var r=!1;;)switch(s){case"hex":return y(this,t,e,i);case"utf8":case"utf-8":return b(this,t,e,i);case"ascii":return w(this,t,e,i);case"latin1":case"binary":return $(this,t,e,i);case"base64":return C(this,t,e,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,t,e,i);default:if(r)throw new TypeError("Unknown encoding: "+s);s=(""+s).toLowerCase(),r=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function D(t,e,i){var s="";i=Math.min(t.length,i);for(var a=e;as)&&(i=s);for(var a="",r=e;ri)throw new RangeError("Trying to access beyond buffer length")}function j(t,e,i,s,a,r){if(!o.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>a||et.length)throw new RangeError("Index out of range")}function L(t,e,i,s){e<0&&(e=65535+e+1);for(var a=0,r=Math.min(t.length-i,2);a>>8*(s?a:1-a)}function A(t,e,i,s){e<0&&(e=4294967295+e+1);for(var a=0,r=Math.min(t.length-i,4);a>>8*(s?a:3-a)&255}function F(t,e,i,s,a,r){if(i+s>t.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("Index out of range")}function M(t,e,i,s,r){return r||F(t,0,i,4),a.write(t,e,i,s,23,4),i+4}function N(t,e,i,s,r){return r||F(t,0,i,8),a.write(t,e,i,s,52,8),i+8}o.prototype.slice=function(t,e){var i,s=this.length;if(t=~~t,e=void 0===e?s:~~e,t<0?(t+=s,t<0&&(t=0)):t>s&&(t=s),e<0?(e+=s,e<0&&(e=0)):e>s&&(e=s),e0&&(a*=256))s+=this[t+--e]*a;return s},o.prototype.readUInt8=function(t,e){return e||O(t,1,this.length),this[t]},o.prototype.readUInt16LE=function(t,e){return e||O(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUInt16BE=function(t,e){return e||O(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUInt32LE=function(t,e){return e||O(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUInt32BE=function(t,e){return e||O(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readIntLE=function(t,e,i){t|=0,e|=0,i||O(t,e,this.length);var s=this[t],a=1,r=0;while(++r=a&&(s-=Math.pow(2,8*e)),s},o.prototype.readIntBE=function(t,e,i){t|=0,e|=0,i||O(t,e,this.length);var s=e,a=1,r=this[t+--s];while(s>0&&(a*=256))r+=this[t+--s]*a;return a*=128,r>=a&&(r-=Math.pow(2,8*e)),r},o.prototype.readInt8=function(t,e){return e||O(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){e||O(t,2,this.length);var i=this[t]|this[t+1]<<8;return 32768&i?4294901760|i:i},o.prototype.readInt16BE=function(t,e){e||O(t,2,this.length);var i=this[t+1]|this[t]<<8;return 32768&i?4294901760|i:i},o.prototype.readInt32LE=function(t,e){return e||O(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return e||O(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readFloatLE=function(t,e){return e||O(t,4,this.length),a.read(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return e||O(t,4,this.length),a.read(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return e||O(t,8,this.length),a.read(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return e||O(t,8,this.length),a.read(this,t,!1,52,8)},o.prototype.writeUIntLE=function(t,e,i,s){if(t=+t,e|=0,i|=0,!s){var a=Math.pow(2,8*i)-1;j(this,t,e,i,a,0)}var r=1,c=0;this[e]=255&t;while(++c=0&&(c*=256))this[e+r]=t/c&255;return e+i},o.prototype.writeUInt8=function(t,e,i){return t=+t,e|=0,i||j(this,t,e,1,255,0),o.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},o.prototype.writeUInt16LE=function(t,e,i){return t=+t,e|=0,i||j(this,t,e,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):L(this,t,e,!0),e+2},o.prototype.writeUInt16BE=function(t,e,i){return t=+t,e|=0,i||j(this,t,e,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):L(this,t,e,!1),e+2},o.prototype.writeUInt32LE=function(t,e,i){return t=+t,e|=0,i||j(this,t,e,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):A(this,t,e,!0),e+4},o.prototype.writeUInt32BE=function(t,e,i){return t=+t,e|=0,i||j(this,t,e,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):A(this,t,e,!1),e+4},o.prototype.writeIntLE=function(t,e,i,s){if(t=+t,e|=0,!s){var a=Math.pow(2,8*i-1);j(this,t,e,i,a-1,-a)}var r=0,c=1,n=0;this[e]=255&t;while(++r>0)-n&255;return e+i},o.prototype.writeIntBE=function(t,e,i,s){if(t=+t,e|=0,!s){var a=Math.pow(2,8*i-1);j(this,t,e,i,a-1,-a)}var r=i-1,c=1,n=0;this[e+r]=255&t;while(--r>=0&&(c*=256))t<0&&0===n&&0!==this[e+r+1]&&(n=1),this[e+r]=(t/c>>0)-n&255;return e+i},o.prototype.writeInt8=function(t,e,i){return t=+t,e|=0,i||j(this,t,e,1,127,-128),o.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,i){return t=+t,e|=0,i||j(this,t,e,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):L(this,t,e,!0),e+2},o.prototype.writeInt16BE=function(t,e,i){return t=+t,e|=0,i||j(this,t,e,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):L(this,t,e,!1),e+2},o.prototype.writeInt32LE=function(t,e,i){return t=+t,e|=0,i||j(this,t,e,4,2147483647,-2147483648),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):A(this,t,e,!0),e+4},o.prototype.writeInt32BE=function(t,e,i){return t=+t,e|=0,i||j(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):A(this,t,e,!1),e+4},o.prototype.writeFloatLE=function(t,e,i){return M(this,t,e,!0,i)},o.prototype.writeFloatBE=function(t,e,i){return M(this,t,e,!1,i)},o.prototype.writeDoubleLE=function(t,e,i){return N(this,t,e,!0,i)},o.prototype.writeDoubleBE=function(t,e,i){return N(this,t,e,!1,i)},o.prototype.copy=function(t,e,i,s){if(i||(i=0),s||0===s||(s=this.length),e>=t.length&&(e=t.length),e||(e=0),s>0&&s=this.length)throw new RangeError("sourceStart out of bounds");if(s<0)throw new RangeError("sourceEnd out of bounds");s>this.length&&(s=this.length),t.length-e=0;--a)t[a+e]=this[a+i];else if(r<1e3||!o.TYPED_ARRAY_SUPPORT)for(a=0;a>>=0,i=void 0===i?this.length:i>>>0,t||(t=0),"number"===typeof t)for(r=e;r55295&&i<57344){if(!a){if(i>56319){(e-=3)>-1&&r.push(239,191,189);continue}if(c+1===s){(e-=3)>-1&&r.push(239,191,189);continue}a=i;continue}if(i<56320){(e-=3)>-1&&r.push(239,191,189),a=i;continue}i=65536+(a-55296<<10|i-56320)}else a&&(e-=3)>-1&&r.push(239,191,189);if(a=null,i<128){if((e-=1)<0)break;r.push(i)}else if(i<2048){if((e-=2)<0)break;r.push(i>>6|192,63&i|128)}else if(i<65536){if((e-=3)<0)break;r.push(i>>12|224,i>>6&63|128,63&i|128)}else{if(!(i<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;r.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return r}function q(t){return s.toByteArray(function(t){if(t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(E,""),t.length<2)return"";while(t.length%4!==0)t+="=";return t}(t))}function U(t,e,i,s){for(var a=0;a=e.length||a>=t.length)break;e[a+i]=t[a]}return a}}).call(this,i("0ee4"))},"12f9":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={}},1300:function(t,e,i){"use strict";i.r(e);var s=i("caa1"),a=i("31da");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"2348ec74",null,!1,s["a"],void 0);e["default"]=n.exports},1308:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("93a6")),n=s(i("a6d8")),o=s(i("16bb")),d={components:{AliOssUploader:c.default,AgreeRadio:n.default},data:function(){return{photo:[],number:"",queryData:{title_id:null,text:"",photos:[],phone:"",sex:1,name:"",order_number:"",user_id:""},appealtitle:[],title:"",isShowPer:!1,nowQer:"xc"}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.next=2,o.default.post("/user/getuser",{type:1});case 2:s=i.sent,e.queryData.user_id=s.data.id,e.queryData.order_number=t.number,e.getappealtitle();case 6:case"end":return i.stop()}}),i)})))()},methods:{ckeckisShowPer:function(e){t("log","this.isShowPer==========",e," at pages/complaint/add-complaint.vue:151"),this.isShowPer=e,t("log","this.isShowPer==========",this.isShowPer," at pages/complaint/add-complaint.vue:153")},ckecknowQer:function(t){this.nowQer=t},getUserInfo:function(){var t=this;o.default.post("/user/getuser",{type:1}).then((function(e){t.userInfo=e.data}))},getappealtitle:function(){var t=this;o.default.post("/user/getappealtitle").then((function(e){t.appealtitle=e.data}))},openappealtitle:function(){var t,e=this;t=this.appealtitle.map((function(t){return t.title})),uni.showActionSheet({itemList:t,success:function(t){e.queryData.title_id=e.appealtitle[t.tapIndex].id,e.title=e.appealtitle[t.tapIndex].title}})},changeSex:function(t){this.queryData.sex=t},onUploadSuccess:function(){},onUploadError:function(){},onFileDelete:function(){},submit:function(){this.queryData.order_number?this.queryData.title_id?this.queryData.text?this.queryData.name?this.queryData.phone?this.queryData.sex?o.default.post("/user/orderappeal",this.queryData).then((function(t){1==t.state?uni.showToast({title:"\u63d0\u4ea4\u6210\u529f",icon:"none"}):uni.showToast({title:t.msg,icon:"none"})})):uni.showToast({title:"\u8bf7\u9009\u62e9\u6027\u522b",icon:"none"}):uni.showToast({title:"\u8bf7\u586b\u5199\u8054\u7cfb\u65b9\u5f0f",icon:"none"}):uni.showToast({title:"\u8bf7\u586b\u5199\u8054\u7cfb\u4eba\u59d3\u540d",icon:"none"}):uni.showToast({title:"\u8bf7\u586b\u5199\u7533\u8bc9\u5185\u5bb9",icon:"none"}):uni.showToast({title:"\u8bf7\u9009\u62e9\u7533\u8bc9\u539f\u56e0",icon:"none"}):uni.showToast({title:"\u8bf7\u91cd\u65b0\u7533\u8bc9",icon:"none"})}}};e.default=d}).call(this,i("f3b9")["default"])},1353:function(t,e,i){"use strict";i.r(e);var s=i("ec35"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"13d6":function(t,e,i){"use strict";i.r(e);var s=i("e705"),a=i("9ddb");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"13fb":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("16bb")),r={data:function(){return{showNewPassword:!1,newPassword:"",showSurePassword:!1,surePassword:"",pwdErrorMsg:"",phone:uni.getStorageSync("loginAccount")}},computed:{canSubmit:function(){return!this.pwdErrorMsg&&this.newPassword&&this.surePassword&&this.newPassword===this.surePassword}},onLoad:function(){this.phone=uni.getStorageSync("loginAccount")||""},methods:{validatePassword:function(t){if(t.length<6||t.length>20)return{valid:!1,msg:"\u5bc6\u7801\u957f\u5ea6\u9700\u57286-20\u4f4d\u4e4b\u95f4"};if(/(?:[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\u4E00-\u9FA5\uFEFF-\uFFEF]|\uD83C[\uDDE0-\uDDFF\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F\uDE80-\uDEFF])/g.test(t))return{valid:!1,msg:"\u5bc6\u7801\u4e0d\u53ef\u5305\u542b\u7a7a\u683c\u3001\u4e2d\u6587\u6216\u7279\u6b8a\u8868\u60c5"};return/^(?=.*[A-Za-z])(?=.*\d)[\w\W]{6,20}$/.test(t)?this.phone&&t.includes(this.phone)?{valid:!1,msg:"\u5bc6\u7801\u4e0d\u53ef\u5305\u542b\u8d26\u53f7/\u624b\u673a\u53f7\uff0c\u5b58\u5728\u5b89\u5168\u98ce\u9669"}:{valid:!0,msg:""}:{valid:!1,msg:"\u5bc6\u7801\u9700\u5305\u542b\u6570\u5b57+\u5b57\u6bcd/\u7b26\u53f7\u7ec4\u5408"}},checkPwdError:function(){if(this.newPassword){var t=this.validatePassword(this.newPassword),e=t.valid,i=t.msg;this.pwdErrorMsg=e?"":i}else this.pwdErrorMsg=""},submit:function(){var t=this.validatePassword(this.newPassword),e=t.valid,i=t.msg;e?this.newPassword===this.surePassword?a.default.post("/sj/passwordSet",{account:this.phone,password:this.surePassword}).then((function(t){200==t.code?(uni.showToast({title:"\u5bc6\u7801\u8bbe\u7f6e\u6210\u529f",icon:"success"}),setTimeout((function(){uni.navigateBack()}),1500)):uni.showToast({title:t.msg,icon:"none"})})).catch((function(t){uni.showToast({title:t.msg,icon:"none"})})):uni.showToast({title:"\u4e24\u6b21\u8f93\u5165\u7684\u5bc6\u7801\u4e0d\u4e00\u81f4",icon:"none"}):uni.showToast({title:i,icon:"none"})}}};e.default=r},1413:function(t,e,i){"use strict";i.r(e);var s=i("2372"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},1441:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uvSafeBottom:i("8b9e").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","uv-tabbar"),attrs:{_i:0}},[i("view",{ref:"uv-tabbar__content",staticClass:t._$s(1,"sc","uv-tabbar__content"),class:t._$s(1,"c",[t.border&&"uv-border-top",t.fixed&&"uv-tabbar--fixed"]),style:t._$s(1,"s",[t.tabbarStyle]),attrs:{_i:1},on:{touchmove:function(e){return e.stopPropagation(),e.preventDefault(),t.noop(e)}}},[i("view",{staticClass:t._$s(2,"sc","uv-tabbar__content__item-wrapper"),attrs:{_i:2}},[t._t("default",null,{_i:3})],2),t._$s(4,"i",t.safeAreaInsetBottom)?i("uv-safe-bottom",{attrs:{_i:4}}):t._e()],1),t._$s(5,"i",t.placeholder)?i("view",{staticClass:t._$s(5,"sc","uv-tabbar__placeholder"),style:t._$s(5,"s",{height:t.placeholderHeight+"px"}),attrs:{_i:5}}):t._e()])},r=[]},"145a":function(t,e,i){"use strict";var s;Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];i?s||(s=!0,"function"===typeof t&&t(),setTimeout((function(){s=!1}),e)):s||(s=!0,setTimeout((function(){s=!1,"function"===typeof t&&t()}),e))};e.default=a},"14db":function(t,e,i){"use strict";i.r(e);var s=i("df31"),a=i("1b0e");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"817d209a",null,!1,s["a"],void 0);e["default"]=n.exports},"14fa":function(t,e,i){"use strict";i.r(e);var s=i("e2c2"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},1521:function(t,e,i){"use strict";i.r(e);var s=i("5c93"),a=i("6f37");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"c674ec72",null,!1,s["a"],void 0);e["default"]=n.exports},1593:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,aliOssUploader:i("93a6").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",[i("custom-navbar",{attrs:{title:t.customTitle,showBack:!t.isClassSelect,backgroundColor:"#FFFFFF",_i:1}}),i("class_select",{directives:[{name:"show",rawName:"v-show",value:t._$s(2,"v-show",t.isClassSelect),expression:"_$s(2,'v-show',isClassSelect)"}],attrs:{classId:t.formData.first_class_id,secondClassId:t.formData.second_class_ids,_i:2},on:{changeClass:function(e){return t.formData.first_class_id=e},changeSecondClass:function(e){return t.formData.second_class_ids=e},changeTypeText:function(e){return t.serviceType=e},closeClassSelect:t.endSelect}}),i("view",{directives:[{name:"show",rawName:"v-show",value:t._$s(3,"v-show",!t.isClassSelect),expression:"_$s(3,'v-show',!isClassSelect)"}],staticClass:t._$s(3,"sc","add-service"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","form-container"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","form-item"),attrs:{_i:5}},[i("text",{staticClass:t._$s(6,"sc","form-label"),attrs:{_i:6}}),i("view",{staticClass:t._$s(7,"sc","form-right"),attrs:{_i:7},on:{click:function(){return t.isClassSelect=!0}}},[i("text",{class:t._$s(8,"c",["form-value",t.formData.first_class_id?"":"placeholder"]),attrs:{_i:8}},[t._v(t._$s(8,"t0-0",t._s(t.serviceType||"\u8bf7\u9009\u62e9\u5206\u7c7b")))]),i("image",{staticClass:t._$s(9,"sc","arrow-right"),attrs:{_i:9}})])]),i("view",{staticClass:t._$s(10,"sc","form-item-up"),attrs:{_i:10}},[i("text",{staticClass:t._$s(11,"sc","form-label"),attrs:{_i:11}}),i("view",{staticClass:t._$s(12,"sc","form-input-box"),attrs:{_i:12}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.title,expression:"formData.title"}],staticClass:t._$s(13,"sc","form-input"),attrs:{_i:13},domProps:{value:t._$s(13,"v-model",t.formData.title)},on:{input:function(e){e.target.composing||t.$set(t.formData,"title",e.target.value)}}})])]),i("view",{staticClass:t._$s(14,"sc","form-item-up"),attrs:{_i:14}},[i("view",[i("text",{staticClass:t._$s(16,"sc","form-label"),attrs:{_i:16}}),i("text",{staticClass:t._$s(17,"sc","redTip"),attrs:{_i:17}})]),i("view",{staticClass:t._$s(18,"sc","content_box"),attrs:{_i:18}},[i("view",{staticClass:t._$s(19,"sc","form-input-box small_input"),attrs:{_i:19}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.price,expression:"formData.price"}],staticClass:t._$s(20,"sc","form-input"),attrs:{_i:20},domProps:{value:t._$s(20,"v-model",t.formData.price)},on:{input:function(e){e.target.composing||t.$set(t.formData,"price",e.target.value)}}})]),i("text",{staticClass:t._$s(21,"sc","unit"),attrs:{_i:21}})])]),i("view",{staticClass:t._$s(22,"sc","form-item-up"),attrs:{_i:22}},[i("text",{staticClass:t._$s(23,"sc","form-label"),attrs:{_i:23}}),i("view",{staticClass:t._$s(24,"sc","form-input-box"),attrs:{_i:24}},[i("textarea",{directives:[{name:"model",rawName:"v-model",value:t.formData.detail,expression:"formData.detail"}],staticClass:t._$s(25,"sc","form-textarea"),attrs:{_i:25},domProps:{value:t._$s(25,"v-model",t.formData.detail)},on:{input:function(e){e.target.composing||t.$set(t.formData,"detail",e.target.value)}}})])]),i("view",{staticClass:t._$s(26,"sc","form-item-up upload-item"),attrs:{_i:26}},[i("view",[i("text",{staticClass:t._$s(28,"sc","form-label"),attrs:{_i:28}}),i("text",{staticClass:t._$s(29,"sc","redTip"),attrs:{_i:29}})]),i("ali-oss-uploader",{attrs:{"max-count":9,"max-size":5,width:"654rpx",type:t.artisanType+1,"user-id":t.formData.publish_user_id,"button-text":"\u4e0a\u4f20\u56fe\u7247",tips:"\u6700\u591a\u4e0a\u4f203\u5f20\u56fe\u7247\uff0c\u6bcf\u5f20\u4e0d\u8d85\u8fc75MB",_i:30},on:{success:t.onUploadSuccess,error:t.onUploadError,delete:t.onFileDelete,ckeckisShowPer:t.ckeckisShowPer,ckecknowQer:t.ckecknowQer},model:{value:t._$s(30,"v-model",t.formData.photo),callback:function(e){t.$set(t.formData,"photo",e)},expression:"formData.photo"}})],1)]),i("view",{staticClass:t._$s(31,"sc","bottom-buttons"),attrs:{_i:31}},[t._$s(32,"i",!t.state||0==t.state)?i("button",{staticClass:t._$s(32,"sc","btn-draft"),attrs:{_i:32},on:{click:t.saveDraft}}):t._e(),i("button",{staticClass:t._$s(33,"sc","btn-submit"),class:t._$s(33,"c",{"btn-submit2":0!=t.state}),attrs:{_i:33},on:{click:t.submitForm}})]),t._$s(34,"i",t.isShow)?i("view",{staticClass:t._$s(34,"sc","mask"),attrs:{_i:34},on:{click:function(e){t.isShow=!1}}}):t._e(),i("view",{staticClass:t._$s(35,"sc","permission"),class:t._$s(35,"c",{transform:t.isShowPer&&"xc"===t.nowQer}),attrs:{_i:35}},[i("view",{staticClass:t._$s(36,"sc","per-tit"),attrs:{_i:36}}),i("view",{staticClass:t._$s(37,"sc","per-cont"),attrs:{_i:37}})]),i("view",{staticClass:t._$s(38,"sc","permission"),class:t._$s(38,"c",{transform:t.isShowPer&&"xj"===t.nowQer}),attrs:{_i:38}},[i("view",{staticClass:t._$s(39,"sc","per-tit"),attrs:{_i:39}}),i("view",{staticClass:t._$s(40,"sc","per-cont"),attrs:{_i:40}})])])],1)},r=[]},"160b":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","custom-tabbar"),style:t._$s(0,"s",{paddingBottom:t.safeBottom+"px"}),attrs:{_i:0}},t._l(t._$s(1,"f",{forItems:t.tabList}),(function(e,s,a,r){return i("view",{key:t._$s(1,"f",{forIndex:a,key:s}),staticClass:t._$s("1-"+r,"sc","tab-item"),attrs:{_i:"1-"+r},on:{click:function(e){return t.handleSwitch(s)}}},[i("image",{staticClass:t._$s("2-"+r,"sc","tab-icon"),attrs:{src:t._$s("2-"+r,"a-src",t.currentIndex===s?e.selectedIcon:e.icon),_i:"2-"+r}}),i("text",{staticClass:t._$s("3-"+r,"sc","tab-text"),class:t._$s("3-"+r,"c",{active:t.currentIndex===s}),attrs:{_i:"3-"+r}},[t._v(t._$s("3-"+r,"t0-0",t._s(e.text)))]),t._$s("4-"+r,"i",e.badge)?i("view",{staticClass:t._$s("4-"+r,"sc","tab-badge"),style:t._$s("4-"+r,"s",{backgroundColor:e.badgeColor||"#ff4d4f"}),attrs:{_i:"4-"+r}},[t._v(t._$s("4-"+r,"t0-0",t._s(!0===e.badge?"":e.badge)))]):t._e()])})),0)},a=[]},"162b":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("af34")),c=s(i("ee10")),n=s(i("16bb")),o=s(i("f16c")),d={data:function(){return{state:void 0,currentTab:0,tabs:[{id:void 0,text:"\u5168\u90e8"},{id:2,text:"\u5f85\u63a5\u5355"},{id:3,text:"\u5f85\u670d\u52a1"},{id:4,text:"\u670d\u52a1\u4e2d"},{id:5,text:"\u5df2\u5b8c\u6210"},{id:7,text:"\u5df2\u53d6\u6d88"}],services:[],hasMore:!1,startX:0,moveX:0,currentIndex:-1,count:0,isLoad:!0,page:1,limit:10}},components:{orderCard:o.default},onLoad:function(){this.getServicesList()},onPullDownRefresh:function(){this.getServicesList()},onReachBottom:function(){var e=this;return(0,c.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(t("log","onReachBottom"," at pages/shop/manHour/saleList.vue:106"),!(e.count<=e.page*e.limit)&&e.isLoad){i.next=3;break}return i.abrupt("return");case 3:e.page++,e.getServicesList(!1);case 5:case"end":return i.stop()}}),i)})))()},methods:{reOrder:function(t){uni.navigateTo({url:"/pages/shop/manHour/manHourDetail?id=".concat(t.work_hour_id,"&type=reorder&orderId=").concat(t.id)})},getServicesList:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.isLoad=!1,e&&(this.page=1,this.limit=10);var i="/sj/workHourOrder/list";n.default.post(i,{state:this.state,page:this.page,limit:this.limit}).then((function(i){e?(t.services=i.data.list,t.count=i.data.count):(t.services=[].concat((0,r.default)(t.services),(0,r.default)(i.data.list)),t.count=i.data.count)})).finally((function(){uni.stopPullDownRefresh(),t.isLoad=!0}))},switchTab:function(t,e){this.currentTab=t,this.state=e,this.getServicesList()},goDetail:function(t){uni.navigateTo({url:"/pages/shop/manHourDetail?order_id=".concat(t.id)})},goPay:function(t){uni.redirectTo({url:"/pages/shop/pay?id=".concat(t.id,"&money=").concat(t.order_money,"&title=").concat(t.title,"&number=").concat(t.number,"&identity=0")})},goRefund:function(e){var i=this;uni.showModal({title:"\u7533\u8bf7\u9000\u6b3e",content:"\u786e\u5b9a\u8981\u7533\u8bf7\u9000\u6b3e\u5417\uff1f\uff08\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u652f\u4ed8\u91d1\u989d\u5c06\u539f\u8def\u9000\u56de\uff09",success:function(s){if(s.confirm){var a={orderNo:e.number,amount:e.pay_money,sjid:e.id},r="";1==e.pay_kind?r="":2==e.pay_kind?r="/sj/workHourOrder/weChatRefund":3==e.pay_kind&&(r="/sj/workHourOrder/aliRefund"),n.default.post(r,a).then((function(t){1==t.code||200==t.code?(uni.showToast({title:"\u7533\u8bf7\u9000\u6b3e\uff01",icon:"none"}),i.getServicesList()):uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){return t("log",e," at pages/shop/manHour/saleList.vue:189")}))}}})},cancel:function(e){var i=this;uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f",success:function(s){if(s.confirm){var a={order_no:e.number};n.default.post("/sj/workHourOrder/cancel",a).then((function(t){200==t.code?(uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),i.getServicesList()):uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){return t("log",e," at pages/shop/manHour/saleList.vue:215")}))}}})}}};e.default=d}).call(this,i("f3b9")["default"])},"162c":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","service-grid"),attrs:{_i:0}},t._l(t._$s(1,"f",{forItems:t.services}),(function(e,s,a,r){return i("view",{key:t._$s(1,"f",{forIndex:a,key:t.services.id}),staticClass:t._$s("1-"+r,"sc","service-item"),style:t._$s("1-"+r,"s","width: "+t.width),attrs:{_i:"1-"+r},on:{click:function(i){return t.onServiceClick(e)}}},[t._$s("2-"+r,"i",e.photo&&0!=e.photo.length)?i("image",{staticClass:t._$s("2-"+r,"sc","service-image"),style:t._$s("2-"+r,"s","width: "+t.width),attrs:{src:t._$s("2-"+r,"a-src",e.photo[0]),_i:"2-"+r}}):t._e(),i("text",{staticClass:t._$s("3-"+r,"sc","service-tag"),attrs:{_i:"3-"+r}},[t._v(t._$s("3-"+r,"t0-0",t._s(1==e.server_kind?"\u5230\u5bb6":2==e.server_kind?"\u5230\u5e97":"")))]),i("view",{staticClass:t._$s("4-"+r,"sc","service-info"),attrs:{_i:"4-"+r}},[i("view",{staticClass:t._$s("5-"+r,"sc","service-title"),attrs:{_i:"5-"+r}},[t._$s("6-"+r,"i",e.team_buy&&0!=Object.keys(e.team_buy).length)?i("image",{staticClass:t._$s("6-"+r,"sc","service-title-type"),attrs:{_i:"6-"+r}}):t._e(),i("text",{staticClass:t._$s("7-"+r,"sc","service-title-text"),attrs:{_i:"7-"+r}},[t._v(t._$s("7-"+r,"t0-0",t._s(e.title)))])]),i("view",{staticClass:t._$s("8-"+r,"sc","service-row"),attrs:{_i:"8-"+r}},[t._$s("9-"+r,"i",e.team_buy&&0!=Object.keys(e.team_buy).length)?i("view",{staticClass:t._$s("9-"+r,"sc","service-price"),attrs:{_i:"9-"+r}},[i("text",{staticClass:t._$s("10-"+r,"sc","price-symbol"),attrs:{_i:"10-"+r}}),i("text",{staticClass:t._$s("11-"+r,"sc","price-value"),style:t._$s("11-"+r,"s",{"font-size":t.formatPriceSize(e.team_buy.price,36,5)+"rpx"}),attrs:{_i:"11-"+r}},[t._v(t._$s("11-"+r,"t0-0",t._s(e.team_buy.price)))])]):i("view",{staticClass:t._$s("12-"+r,"sc","service-price"),attrs:{_i:"12-"+r}},[i("text",{staticClass:t._$s("13-"+r,"sc","price-symbol"),attrs:{_i:"13-"+r}}),i("text",{staticClass:t._$s("14-"+r,"sc","price-value"),attrs:{_i:"14-"+r}},[t._v(t._$s("14-"+r,"t0-0",t._s(e.server_price)))])]),i("text",{staticClass:t._$s("15-"+r,"sc","service-sales"),attrs:{_i:"15-"+r}},[t._v(t._$s("15-"+r,"t0-0",t._s(e.sales_num)))])]),t._$s("16-"+r,"i",2==e.server_kind)?i("view",{staticClass:t._$s("16-"+r,"sc","service-shop"),attrs:{_i:"16-"+r}},[i("text",{staticClass:t._$s("17-"+r,"sc","shop-text text-overflow-1"),attrs:{_i:"17-"+r}},[t._v(t._$s("17-"+r,"t0-0",t._s(e.shop_name)))])]):t._e()])])})),0)},a=[]},1633:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n={data:function(){return{cardList:{1:[{title:"\u5e97\u94fa\u4e3b\u56fe",id:1},{title:"\u73af\u5883\u56fe\u7247",id:2},{title:"\u4f5c\u54c1\u5c55\u793a",id:3},{title:"\u5176\u4ed6",id:4}],2:[{title:"\u5e97\u94fa\u4e3b\u89c6\u9891",id:1},{title:"\u5176\u4ed6",id:4}]},imgVideoList:{},type:2}},onShow:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.getList();case 2:case"end":return e.stop()}}),e)})))()},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:t.type&&(e.type=t.type);case 1:case"end":return i.stop()}}),i)})))()},methods:{getItem:function(t){var e={name:"",url:""};return 1==t.apply_state?(e.url=t.auth_url,e.name=t.auth_name):(e.url=t.url||t.auth_url,e.name=t.name||t.auth_name),2==t.type&&(e.url=e.url+"?x-oss-process=video/snapshot,t_1000,m_fast,f_jpg,w_600,ar_auto"),e},goList:function(t){uni.navigateTo({url:"/pages/shop/photoAlbum/videoList?id=".concat(t,"&type=").concat(this.type)})},goAdd:function(e,i){if(t("log",11111,e," at pages/shop/photoAlbum/photoManage.vue:154"),e){var s="/pages/shop/photoAlbum/addPhoto?id=".concat(e,"&type=").concat(this.type);i&&(s+="&item=".concat(encodeURIComponent(JSON.stringify(i)))),uni.navigateTo({url:s})}else uni.showToast({title:"\u53c2\u6570\u5f02\u5e38\uff0c\u65e0\u6cd5\u4e0a\u4f20",icon:"none",duration:2e3})},getList:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,c.default.post("/sj/imgVideo/list",{type:t.type}).then((function(e){200==e.code&&(t.imgVideoList=e.data.list[t.type])}));case 2:case"end":return e.stop()}}),e)})))()}}};e.default=n}).call(this,i("f3b9")["default"])},"167b":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c=s(i("1101")),n={name:"uv-search",emits:["click","input","change","clear","search","custom","focus","blur","clickIcon","update:modelValue"],mixins:[a.default,r.default,c.default],data:function(){return{keyword:"",showClear:!1,show:!1,focused:this.focus}},created:function(){this.keyword=this.value},watch:{value:function(t){this.keyword=t},modelValue:function(t){this.keyword=t}},computed:{showActionBtn:function(){return!this.animation&&this.showAction}},methods:{keywordChange:function(){this.$emit("input",this.keyword),this.$emit("update:modelValue",this.keyword),this.$emit("change",this.keyword)},inputChange:function(t){this.keyword=t.detail.value,this.keywordChange()},clear:function(){var t=this;this.keyword="",this.$nextTick((function(){t.$emit("clear")})),this.keywordChange()},search:function(t){this.$emit("search",t.detail.value);try{uni.hideKeyboard()}catch(t){}},custom:function(){this.$emit("custom",this.keyword);try{uni.hideKeyboard()}catch(t){}},getFocus:function(){this.focused=!0,this.animation&&this.showAction&&(this.show=!0),this.$emit("focus",this.keyword)},blur:function(){var t=this;setTimeout((function(){t.focused=!1}),100),this.show=!1,this.$emit("blur",this.keyword)},clickHandler:function(){this.disabled&&this.$emit("click")},clickIcon:function(){this.$emit("clickIcon")}}};e.default=n},1687:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("af34")),n=s(i("d5b0")),o=s(i("16bb")),d=(s(i("32a4")),s(i("91d2")),i("53d1")),l=(i("fa2b"),{components:{TabBar:n.default},data:function(){return{isShowPer:!1,OrderType:[{id:0,title:"\u5168\u90e8\u8ba2\u5355",url:"/user/order/list"},{id:1,title:"\u666e\u901a\u8ba2\u5355",url:"/user/userorders"},{id:2,title:"\u81ea\u8425\u8ba2\u5355",url:"/user/orderSelf/list"}],urls:{order:{cancelorder:"/user/cancelorder",deleteorder:"/user/deleteorder"},order_self:{cancelorder:"/user/orderSelf/cancel",deleteorder:"/user/orderSelf/del"}},OrderTypeIndex:0,tabs:[{id:0,title:"\u5168\u90e8"},{id:1,title:"\u5f85\u652f\u4ed8"},{id:2,title:"\u5f85\u63a5\u5355"},{id:3,title:"\u5f85\u670d\u52a1"},{id:4,title:"\u670d\u52a1\u4e2d"},{id:5,title:"\u5df2\u5b8c\u6210"},{id:7,title:"\u5df2\u53d6\u6d88"}],currentTab:0,isRefreshing:!1,hasMore:!0,orderList:[],formData:{page:1,limit:10},isLogin:!1}},computed:{},onLoad:function(){uni.hideTabBar(),this.handleOrderTypeFromGlobal()},onShow:function(){this.isLogin=!!uni.getStorageSync("accessToken"),this.isLogin&&(this.handleOrderTypeFromGlobal(),this.orderList=[],this.formData.page=1,this.loadOrders())},methods:{getGroupType:function(t){var e={1:"/static/images/pintuan_ing.png",2:"/static/images/pintuan_done.png",3:"/static/images/pintuan_fail.png"};return e[t]||""},switchOrderTab:function(t){this.OrderTypeIndex=t,this.orderList=[],this.formData.page=1,delete this.formData.state,this.currentTab=0,this.loadOrders()},switchTab:function(t){this.currentTab=t,this.orderList=[],this.formData.page=1,0!=this.currentTab?this.formData.state=this.currentTab:delete this.formData.state,this.loadOrders()},loadOrders:function(){var t=this;o.default.post(this.OrderType[this.OrderTypeIndex].url,this.formData).then((function(e){t.orderList=[].concat((0,c.default)(t.orderList),(0,c.default)(e.data)),e.count==t.orderList.length?t.hasMore=!1:(t.hasMore=!0,t.formData.page=t.formData.page+1),t.isRefreshing=!1}))},onRefresh:function(){this.isRefreshing=!0,this.formData.page=1,this.orderList=[],this.loadOrders()},loadMore:function(){this.hasMore&&this.loadOrders()},goDetail:function(e){t("log","order",e," at pages/order/userorder-list.vue:315"),"order"==e.table_source?uni.navigateTo({url:"/pages/order/userorder-detail?id=".concat(e.id)}):"order_self"==e.table_source&&uni.navigateTo({url:"/pages/order/userorder-detail?id=".concat(e.id,"&serviceType=2")})},deleteOrder:(0,d.debounce)(function(){var t=(0,r.default)(a.default.mark((function t(e){var i=this;return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:uni.showModal({title:"\u63d0\u793a",content:"\u786e\u5b9a\u8981\u5220\u9664\u8be5\u8ba2\u5355\u5417\uff1f",success:function(t){t.confirm&&o.default.post(i.urls[e.table_source].deleteorder,{id:e.id}).then((function(t){uni.showToast({title:"\u5220\u9664\u6210\u529f\uff01",icon:"none"}),i.formData.page=1,i.orderList=[],i.loadOrders()}))}});case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),500),showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))},handleOrderTypeFromGlobal:function(){var e=getApp().globalData.selectedOrderType;if(t("log","\u63a5\u6536\u5230\u7684\u8ba2\u5355\u7c7b\u578b:",e," at pages/order/userorder-list.vue:370"),e){this.currentTab={unpaid:1,unaccepted:2,unserved:3,finnish:5}[e]||0,t("log","\u6620\u5c04\u540e\u7684currentTab:",this.currentTab," at pages/order/userorder-list.vue:383"),0!==this.currentTab?this.formData.state=this.currentTab:delete this.formData.state,getApp().globalData.selectedOrderType=null}},contactService:function(t){return(0,r.default)(a.default.mark((function t(){return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:uni.navigateTo({url:"/pages/contact/contact"});case 1:case"end":return t.stop()}}),t)})))()},cancelService:function(e){var i=this;return(0,r.default)(a.default.mark((function s(){var r;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return r="",s.next=3,o.default.post("/user/getuser",{type:1}).then((function(e){t("log",e," at pages/order/userorder-list.vue:460"),r=e.data.id}));case 3:t("log",e," at pages/order/userorder-list.vue:463"),uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f",success:function(s){if(s.confirm){var a={orderNo:e.number,amount:e.pay_money,cancel_state:1,cancel_id:r};o.default.post(i.urls[e.table_source].cancelorder,a).then((function(t){uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),i.formData.page=1,i.orderList=[],i.loadOrders()})).catch((function(e){t("log",e," at pages/order/userorder-list.vue:485")}))}}});case 5:case"end":return s.stop()}}),s)})))()},refoundService:function(e){var i=this;return(0,r.default)(a.default.mark((function s(){var r;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return r="",s.next=3,o.default.post("/user/getuser",{type:1}).then((function(e){t("log",e," at pages/order/userorder-list.vue:497"),r=e.data.id}));case 3:uni.showModal({title:"\u7533\u8bf7\u9000\u6b3e",content:"\u786e\u5b9a\u7533\u8bf7\u9000\u6b3e\uff1f\u9000\u6b3e\u540e\u5219\u8ba2\u5355\u53d6\u6d88\uff01",success:function(s){if(s.confirm){var a={orderNo:e.number,amount:e.pay_money,cancel_state:1,cancel_id:r},c="";1==e.pay_kind?c="":2==e.pay_kind?c="/user/wechatrefund":3==e.pay_kind&&(c="/user/alirefund"),t("log",a,c," at pages/order/userorder-list.vue:520"),o.default.post(c,a).then((function(e){t("log","\u7533\u8bf7\u9000\u6b3e\u8ba2\u5355\u8fd4\u56de\u7ed3\u679c",e," at pages/order/userorder-list.vue:522"),uni.showToast({title:"\u7533\u8bf7\u9000\u6b3e\u6210\u529f\uff01",icon:"none"}),i.formData.page=1,i.orderList=[],i.loadOrders()})).catch((function(e){t("log",e," at pages/order/userorder-list.vue:531")}))}}});case 4:case"end":return s.stop()}}),s)})))()},payOrder:function(t){"order_self"==t.table_source?uni.navigateTo({url:"/pages/order/pay?id=".concat(t.id,"&money=").concat(t.order_money,"&title=").concat(t.server_title,"&number=").concat(t.number,"&table_source=order_self")}):uni.navigateTo({url:"/pages/order/pay?id=".concat(t.id,"&money=").concat(t.order_money,"&title=").concat(t.server_title,"&number=").concat(t.number)})},reviewOrder:function(t){uni.navigateTo({url:"/pages/evaluate/comment?id=".concat(t.id,"&evaluator_type=3&order_type=1&order_kind=").concat(t.order_kind)})},goEvaluateDetail:function(t){uni.navigateTo({url:"/pages/evaluate/evaluationDetails?order_id=".concat(t.id,"&order_type=1")})},orderAgain:function(e){t("log",1111111,e," at pages/order/userorder-list.vue:568"),"order_self"==e.table_source?uni.navigateTo({url:"/pages/selfOperated/detail?id="+e.server_id}):uni.navigateTo({url:"/pages/service/detail?id="+e.server_id})},addComplaint:function(t){uni.navigateTo({url:"/pages/complaint/add-complaint?number="+t.number})},lookComplaint:function(t){uni.navigateTo({url:"/pages/complaint/detail?number="+t.number})},goLogin:function(){uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}}});e.default=l}).call(this,i("f3b9")["default"])},"16bb":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r=s(i("127e")),c=s(i("ee10")),n=s(i("7ca3")),o=i("0560"),d=i("3237");function l(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function u(t){for(var e=1;e=200&&c<300)){t.next=3;break}return t.abrupt("return",n);case 3:if(401!==c){t.next=7;break}return t.next=6,y(e,s,a);case 6:return t.abrupt("return",t.sent);case 7:return uni.showToast({title:n.message||"\u8bf7\u6c42\u5931\u8d25",icon:"none"}),t.abrupt("return",Promise.reject(n));case 9:case"end":return t.stop()}}),t)})));return function(e,i,s,a){return t.apply(this,arguments)}}(),g=function(){var e=(0,c.default)(r.default.mark((function e(i,s){var c,o,l;return r.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(o=uni.getStorageSync("baseUrl"),""==uni.getStorageSync("setVersion").VersionCode&&(0,d.setVersion)(),o){e.next=5;break}return e.next=5,new Promise((function(e,i){uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType},success:function(i){200==i.data.code&&(uni.setStorageSync("baseUrl",i.data.data.url),o=i.data.data.url,e(o)),t("log","\u8bf7\u6c42\u6210\u529f",i.data," at utils/request.js:121")},fail:function(e){t("log","\u8bf7\u6c42\u5931\u8d25",e," at utils/request.js:124")},complete:function(){t("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/request.js:127")}})}));case 5:return a=o,t("log","\u751f\u4ea7\u73af\u5883"," at utils/request.js:147"),c={baseURL:a},(0,n.default)(c,"baseURL",a),(0,n.default)(c,"header",{"content-type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType}),(0,n.default)(c,"timeout",6e4),l=c,i=u(u(u({},l),i),{},{url:s?i.url:"".concat(l.baseURL).concat(i.url)}),i=h(i),e.abrupt("return",new Promise((function(t,e){uni.request(u(u({},i),{},{success:function(s){t(m(i,s,t,e))},fail:function(t){uni.showToast({title:"\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5",icon:"none"}),e(t)}}))})));case 10:case"end":return e.stop()}}),e)})));return function(t,i){return e.apply(this,arguments)}}();function y(t,e,i){return b.apply(this,arguments)}function b(){return b=(0,c.default)(r.default.mark((function t(e,i,s){var a,c;return r.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if((0,o.getToken)()){t.next=2;break}return t.abrupt("return",C());case 2:if(!f){t.next=4;break}return t.abrupt("return",p((function(t){e.header["Authorization"]="Bearer ".concat(t),g(e,!0).then(i).catch(s)})));case 4:return f=!0,t.prev=5,t.next=8,w();case 8:return a=t.sent,(0,o.setToken)(a),v(a),e.header["Authorization"]="Bearer ".concat(a),t.next=14,g(e,!0);case 14:return c=t.sent,t.abrupt("return",c);case 18:return t.prev=18,t.t0=t["catch"](5),(0,o.removeToken)(),C(),t.abrupt("return",t.t0);case 23:return t.prev=23,f=!1,t.finish(23);case 26:case"end":return t.stop()}}),t,null,[[5,18,23,26]])}))),b.apply(this,arguments)}function w(){return $.apply(this,arguments)}function $(){return $=(0,c.default)(r.default.mark((function t(){var e,i;return r.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(e=uni.getStorageSync("refreshToken"),e){t.next=3;break}throw new Error("No refresh token");case 3:return t.next=5,g({url:"/sj/refreshtoken",data:{refresh_token:uni.getStorageSync("refreshToken"),deviceid:getApp().globalData.deviceid},method:"POST"});case 5:if(i=t.sent,1!=i.state&&200!=i.code){t.next=10;break}return uni.setStorageSync("accessToken",i.access_token),uni.setStorageSync("refreshToken",i.refresh_token),t.abrupt("return",i.access_token);case 10:throw new Error("Refresh token failed");case 11:case"end":return t.stop()}}),t)}))),$.apply(this,arguments)}function C(){uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}var x={get:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return g(u({url:t,data:e,method:"GET"},i))},post:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return g(u({url:t,data:e,method:"POST"},i))},put:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return g(u({url:t,data:e,method:"PUT"},i))},delete:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return g(u({url:t,data:e,method:"DELETE"},i))}};e.default=x}).call(this,i("f3b9")["default"])},1701:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","order-card"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","orderNumBox"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","order-id white-space-nowrap"),attrs:{_i:2}},[t._v(t._$s(2,"t0-0",t._s(t.dataItem.number)))]),t._$s(3,"i",t.showState)?i("view",{staticClass:t._$s(3,"sc","stateText"),class:t._$s(3,"c",{stateText2:t.dataItem.state>4&&7!==t.dataItem.state,stateText3:7===t.dataItem.state}),attrs:{_i:3}},[t._v(t._$s(3,"t0-0",t._s(t.stateText)))]):i("image",{staticClass:t._$s(4,"sc","rightArrow"),attrs:{_i:4},on:{click:function(e){return t.$emit("goOrderDetail",t.dataItem)}}})]),i("view",{staticClass:t._$s(5,"sc","service-container"),class:t._$s(5,"c",{noFotter:!t.dataItem.reservation_time&&!t.dataItem.reserve_end_time||t.haveButton}),attrs:{_i:5},on:{click:function(e){return t.$emit("goOrderDetail",t.dataItem)}}},[i("image",{staticClass:t._$s(6,"sc","service-img"),attrs:{src:t._$s(6,"a-src",t.dataItem.order_photo?t.dataItem.order_photo[0]:JSON.parse(t.dataItem.photo)[0]),_i:6}}),i("view",{staticClass:t._$s(7,"sc","service-info"),attrs:{_i:7}},[i("view",[i("view",{staticClass:t._$s(9,"sc","service-type"),attrs:{_i:9}},[t._$s(10,"i",t.dataItem.team_buy_id)?i("view",{staticClass:t._$s(10,"sc","service-name-type"),attrs:{_i:10}},[t._v(t._$s(10,"t0-0",t._s(t.getGroupType)))]):t._e(),i("text",{staticClass:t._$s(11,"sc","service-name-text"),attrs:{_i:11}},[t._v(t._$s(11,"t0-0",t._s(t.dataItem.server_title)))])]),t._$s(12,"i",t.dataItem.add_time)?i("view",{staticClass:t._$s(12,"sc","service-time"),attrs:{_i:12}},[t._v(t._$s(12,"t0-0",t._s(t.dataItem.add_time)))]):t._e()]),i("view",{staticClass:t._$s(13,"sc","service-price"),attrs:{_i:13}},[t._$s(14,"i",t.dataItem.team_buy_id)?i("text",{attrs:{_i:14}},[t._v(t._$s(14,"t0-0",t._s("\u56e2\u8d2d\u4ef7: ")))]):t._e(),i("text",[t._v(t._$s(15,"t0-0",t._s(t.dataItem.order_money)))])])])]),t._$s(16,"i",t.dataItem.reservation_time||t.dataItem.reserve_end_time)?i("view",{staticClass:t._$s(16,"sc","time-info"),attrs:{_i:16}},[i("image",{staticClass:t._$s(17,"sc","time-info-img"),attrs:{src:t._$s(17,"a-src",t.dataItem.order_shopheadphoto_other),_i:17}}),i("text",{staticClass:t._$s(18,"sc","time-info-name"),attrs:{_i:18}},[t._v(t._$s(18,"t0-0",t._s(t.dataItem.order_shop_other)))]),i("text",{staticClass:t._$s(19,"sc","time-info-text1"),attrs:{_i:19}}),i("text",{staticClass:t._$s(20,"sc","time-info-text2"),attrs:{_i:20}},[t._v(t._$s(20,"t0-0",t._s(t.useTime)))])]):t._e(),t._$s(21,"i",t.haveButton)?i("view",{staticClass:t._$s(21,"sc","button-group"),attrs:{_i:21}},[t._$s(22,"i",2==t.dataItem.state||3==t.dataItem.state)?i("view",{staticClass:t._$s(22,"sc","btn cancel-btn"),attrs:{_i:22},on:{click:function(e){return e.stopPropagation(),t.emitCancel(e)}}}):t._e(),t._$s(23,"i",3==t.dataItem.state)?i("view",{staticClass:t._$s(23,"sc","btn accept-btn"),attrs:{_i:23},on:{click:function(e){return e.stopPropagation(),t.emitStart(e)}}}):t._e(),t._$s(24,"i",4==t.dataItem.state)?i("view",{staticClass:t._$s(24,"sc","btn accept-btn"),attrs:{_i:24},on:{click:function(e){return e.stopPropagation(),t.emitDone(e)}}}):t._e()]):t._e()])},a=[]},"171c":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n={data:function(){return{currentTime:"09:00-21:00",originalTime:"09:00-21:00",tempTime:"",showTimePickerFlag:!1,showBottomActions:!1,pickerValue:[8,0,0,18,0],hours:Array.from({length:24},(function(t,e){return e<10?"0".concat(e):"".concat(e)})),minutes:Array.from({length:60},(function(t,e){return e<10?"0".concat(e):"".concat(e)})),timeType:"start",indicatorStyle:"height: 68rpx;",startTime:{hour:"09",minute:"00"},endTime:{hour:"21",minute:"00"}}},onLoad:function(){this.loadCurrentTime()},methods:{loadCurrentTime:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,c.default.post("/user/getuser",{type:3});case 3:if(s=i.sent,t("log","\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u54cd\u5e94:",s," at pages/shop/business-time.vue:131"),1!==s.state||!s.data){i.next=9;break}s.data.business_time?(e.currentTime=s.data.business_time,e.originalTime=s.data.business_time,e.parseTimeString(s.data.business_time),t("log","\u6210\u529f\u83b7\u53d6\u8425\u4e1a\u65f6\u95f4:",s.data.business_time," at pages/shop/business-time.vue:139")):(t("log","\u672a\u627e\u5230\u8425\u4e1a\u65f6\u95f4\u5b57\u6bb5\uff0c\u4f7f\u7528\u9ed8\u8ba4\u503c"," at pages/shop/business-time.vue:142"),e.currentTime="09:00-21:00",e.originalTime="09:00-21:00",e.parseTimeString("09:00-21:00")),i.next=10;break;case 9:throw new Error(s.msg||"\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u5931\u8d25");case 10:i.next=18;break;case 12:i.prev=12,i.t0=i["catch"](0),t("error","\u52a0\u8f7d\u8425\u4e1a\u65f6\u95f4\u5931\u8d25:",i.t0," at pages/shop/business-time.vue:151"),e.currentTime="09:00-21:00",e.originalTime="09:00-21:00",e.parseTimeString("09:00-21:00");case 18:case"end":return i.stop()}}),i,null,[[0,12]])})))()},parseTimeString:function(t){var e=t.split("-");if(2===e.length){var i=e[0].split(":"),s=e[1].split(":");2===i.length&&(this.startTime.hour=i[0],this.startTime.minute=i[1]),2===s.length&&(this.endTime.hour=s[0],this.endTime.minute=s[1]),this.updatePickerValue()}},updatePickerValue:function(){var t=this.hours.indexOf(this.startTime.hour),e=this.minutes.indexOf(this.startTime.minute),i=this.hours.indexOf(this.endTime.hour),s=this.minutes.indexOf(this.endTime.minute);this.pickerValue=[t>=0?t:8,e>=0?e:0,0,i>=0?i:18,s>=0?s:0]},showTimePicker:function(){this.originalTime=this.currentTime,this.showTimePickerFlag=!0},hideTimePicker:function(){this.showTimePickerFlag=!1},switchTimeType:function(t){this.timeType=t},handleTimeChange:function(t){var e=t.detail.value;this.pickerValue=e,this.startTime.hour=this.hours[e[0]],this.startTime.minute=this.minutes[e[1]],this.endTime.hour=this.hours[e[3]],this.endTime.minute=this.minutes[e[4]]},formatTime:function(t){return"".concat(t.hour,":").concat(t.minute)},confirmTime:function(){var e="".concat(this.formatTime(this.startTime),"-").concat(this.formatTime(this.endTime));t("log","\u9009\u62e9\u7684\u65f6\u95f4:",e," at pages/shop/business-time.vue:240"),this.validateTime(this.startTime,this.endTime)?(this.tempTime=e,this.showBottomActions=!0,this.hideTimePicker(),this.currentTime=e,t("log","\u4e34\u65f6\u5b58\u50a8\u7684\u65f6\u95f4:",this.tempTime," at pages/shop/business-time.vue:257")):uni.showToast({title:"\u7ed3\u675f\u65f6\u95f4\u5fc5\u987b\u665a\u4e8e\u5f00\u59cb\u65f6\u95f4",icon:"none"})},cancelChange:function(){this.currentTime=this.originalTime,this.showBottomActions=!1,this.tempTime=""},submitChange:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(e.tempTime){i.next=3;break}return uni.showToast({title:"\u8bf7\u5148\u9009\u62e9\u8425\u4e1a\u65f6\u95f4",icon:"none"}),i.abrupt("return");case 3:return i.prev=3,s={apply_type:1,business_time:e.tempTime},t("log","\u63d0\u4ea4\u53c2\u6570:",s," at pages/shop/business-time.vue:287"),t("log","\u8bf7\u6c42URL:","/sj/userSjAuth/apply"," at pages/shop/business-time.vue:288"),i.next=9,c.default.post("/sj/userSjAuth/apply",s);case 9:r=i.sent,uni.hideLoading(),t("log","\u63d0\u4ea4\u63a5\u53e3\u54cd\u5e94:",r," at pages/shop/business-time.vue:293"),200===r.code?(e.showBottomActions=!1,e.tempTime="",e.originalTime=e.currentTime,uni.showToast({title:"\u8425\u4e1a\u65f6\u95f4\u66f4\u65b0\u6210\u529f",icon:"none"}),setTimeout((function(){uni.navigateBack()}),1500)):uni.showToast({title:r.msg||"\u63d0\u4ea4\u5931\u8d25",icon:"none"}),i.next=20;break;case 15:i.prev=15,i.t0=i["catch"](3),uni.hideLoading(),t("error","\u63d0\u4ea4\u8425\u4e1a\u65f6\u95f4\u53d8\u66f4\u5931\u8d25:",i.t0," at pages/shop/business-time.vue:317"),uni.showToast({title:"\u63d0\u4ea4\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5",icon:"none"});case 20:case"end":return i.stop()}}),i,null,[[3,15]])})))()},validateTime:function(t,e){var i=new Date("2000/01/01 ".concat(t.hour,":").concat(t.minute)),s=new Date("2000/01/01 ".concat(e.hour,":").concat(e.minute));return s>i}}};e.default=n}).call(this,i("f3b9")["default"])},1762:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","project"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","project-tabs"),attrs:{_i:1}},[i("scroll-view",{staticClass:t._$s(2,"sc","tab-scroll"),attrs:{_i:2},on:{touchmove:function(t){t.preventDefault(),t.stopPropagation()}}},[i("view",{staticClass:t._$s(3,"sc","tab-container"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","tab-card"),attrs:{_i:4}},[i("text",{staticClass:t._$s(5,"sc","tab-text"),class:t._$s(5,"c",{active:1==t.activeId}),attrs:{_i:5},on:{click:function(e){return t.clickTap(1)}}}),t._$s(6,"i",1==t.activeId)?i("view",{staticClass:t._$s(6,"sc","tab-active-indicator"),attrs:{_i:6}}):t._e()]),i("view",{staticClass:t._$s(7,"sc","tab-card"),attrs:{_i:7}},[i("text",{staticClass:t._$s(8,"sc","tab-text"),class:t._$s(8,"c",{active:2==t.activeId}),attrs:{_i:8},on:{click:function(e){return t.clickTap(2)}}}),i("image",{staticClass:t._$s(9,"sc","tab-card-price-img"),attrs:{src:t._$s(9,"a-src",t.priceList[t.priceIndex].src),_i:9}}),t._$s(10,"i",2==t.activeId)?i("view",{staticClass:t._$s(10,"sc","tab-active-indicator"),attrs:{_i:10}}):t._e()]),i("view",{staticClass:t._$s(11,"sc","tab-card"),attrs:{_i:11}},[i("text",{staticClass:t._$s(12,"sc","tab-text"),class:t._$s(12,"c",{active:t.showPopup||t.popId}),attrs:{_i:12},on:{click:function(e){return t.clickTap(3)}}})])])]),i("view",{staticClass:t._$s(13,"sc","time-filter-popup"),class:t._$s(13,"c",{show:t.showPopup}),attrs:{_i:13}},[i("view",{staticClass:t._$s(14,"sc","time-filter-popup-tabs"),attrs:{_i:14}},t._l(t._$s(15,"f",{forItems:t.tabsPopList}),(function(e,s,a,r){return i("view",{key:t._$s(15,"f",{forIndex:a,key:e.id}),staticClass:t._$s("15-"+r,"sc","time-filter-popup-tab"),class:t._$s("15-"+r,"c",{active:e.id==t.popId}),attrs:{_i:"15-"+r},on:{click:function(i){return t.clickPopTap(e)}}},[t._v(t._$s("15-"+r,"t0-0",t._s(e.name)))])})),0)])]),i("view",{class:t._$s(16,"c",{popMsk:t.showPopup}),attrs:{_i:16},on:{click:function(e){t.showPopup=!1}}})])},a=[]},1775:function(t,e,i){"use strict";i.r(e);var s=i("5496"),a=i("d7a6");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"385f0392",null,!1,s["a"],void 0);e["default"]=n.exports},1788:function(t,e,i){"use strict";i.r(e);var s=i("e53d"),a=i("12c5");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"78bf2080",null,!1,s["a"],void 0);e["default"]=n.exports},"17a5":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("16bb")),r={data:function(){return{bjSrc:"/static/images/recruit/bj2.png",info:{}}},onLoad:function(){this.getrecruit()},methods:{getrecruit:function(){var t=this;a.default.post("/user/getRecruitment").then((function(e){t.info=e.data}))}}};e.default=r},"17cd":function(t,e,i){"use strict";i.r(e);var s=i("7ae6"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},1880:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u62db\u52df",showBack:!0,backgroundColor:"#fff",_i:1}}),i("view",{staticClass:t._$s(2,"sc","content"),attrs:{_i:2}},[i("image",{staticClass:t._$s(3,"sc","bjImg"),attrs:{src:t._$s(3,"a-src",t.bjSrc),_i:3}}),i("image",{staticClass:t._$s(4,"sc","imgCard"),attrs:{src:t._$s(4,"a-src",t.info.friend_img),_i:4}})])],1)},r=[]},"18ca":function(t,e,i){"use strict";i.r(e);var s=i("c3dc"),a=i("e118");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"f5b5acac",null,!1,s["a"],void 0);e["default"]=n.exports},1930:function(t,e,i){"use strict";i.r(e);var s=i("2153"),a=i("6529");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},1942:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r=s(i("127e")),c=s(i("ee10")),n=s(i("16bb"));function o(){var t=uni.getSystemInfoSync();return a=t.appWgtVersion,a}function d(){return new Promise(function(){var e=(0,c.default)(r.default.mark((function e(i,s){var a,c,o,d;return r.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,uni.getSystemInfoSync();case 2:if(a=e.sent,c=a.deviceBrand,t("log","deviceBrand",c," at utils/uploadApp.js:30"),o="apple"==c?"1":"huawei"==c?"2":"honor"==c?"3":"xiaomi"==c?"4":"oppo"==c?"5":"vivo"==c?"6":"",o){e.next=8;break}return e.abrupt("return");case 8:return e.next=10,n.default.post("/sj/getAppVersion",{type:o});case 10:d=e.sent,t("log","response",d," at utils/uploadApp.js:38"),i({version:d.data.version,downloadUrl:d.data.url});case 13:case"end":return e.stop()}}),e)})));return function(t,i){return e.apply(this,arguments)}}())}function l(t,e){for(var i=t.split(".").map(Number),s=e.split(".").map(Number),a=0;ac)return!1}return!1}function u(t){uni.showModal({title:"\u53d1\u73b0\u65b0\u7248\u672c",content:"\u662f\u5426\u66f4\u65b0\u6700\u65b0\u7248\u672c\uff1f",confirmText:"\u7acb\u5373\u66f4\u65b0",cancelText:"\u7a0d\u540e\u518d\u8bf4",success:function(e){e.confirm&&plus.runtime.openURL(t.downloadUrl)}})}var f={uploadApp:function(e){return(0,c.default)(r.default.mark((function i(){var s,a;return r.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(i.prev=0,s=o(),s){i.next=4;break}return i.abrupt("return");case 4:return i.next=6,d();case 6:if(a=i.sent,t("log","updateInfo",a," at utils/uploadApp.js:157"),!l(s,a.version)){i.next=12;break}u(a),i.next=15;break;case 12:if("onLaunch"!=e){i.next=14;break}return i.abrupt("return");case 14:uni.showToast({title:"\u5f53\u524d\u5df2\u662f\u6700\u65b0\u7248\u672c",icon:"none"});case 15:i.next=21;break;case 17:i.prev=17,i.t0=i["catch"](0),t("error","\u68c0\u67e5\u66f4\u65b0\u5931\u8d25:",i.t0," at utils/uploadApp.js:168"),uni.showToast({title:"\u68c0\u67e5\u66f4\u65b0\u5931\u8d25",icon:"none"});case 21:case"end":return i.stop()}}),i,null,[[0,17]])})))()}};e.default=f}).call(this,i("f3b9")["default"])},"19e0":function(t,e,i){"use strict";i.r(e);var s=i("a7a3"),a=i("77bd");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"bd62643c",null,!1,s["a"],void 0);e["default"]=n.exports},"1a26":function(t,e,i){"use strict";i.r(e);var s=i("e4d6"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"1a2f":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this.$createElement,e=this._self._c||t;return e("view",{staticClass:this._$s(0,"sc","select-serve"),attrs:{_i:0}},[e("custom-navbar",{attrs:{title:"\u9009\u62e9\u670d\u52a1",backgroundColor:"#FFFFFF",_i:1}}),e("view",{staticClass:this._$s(2,"sc","select-tip"),attrs:{_i:2}},[e("text")]),e("serveList",{ref:"serveList",attrs:{_i:4}}),e("view",{staticClass:this._$s(5,"sc","select-serve-footer"),attrs:{_i:5}},[e("view",{staticClass:this._$s(6,"sc","select-serve-footer__btn"),attrs:{_i:6},on:{click:this.submit}})])],1)},r=[]},"1ab0":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"PopupPicker",props:{show:{type:Boolean,default:!1},title:{type:String,default:"\u8bf7\u9009\u62e9"},columns:{type:Array,default:function(){return[]}},value:{type:Array,default:function(){return[]}},labelKey:{type:String,default:"label"}},data:function(){return{currentValue:this.value}},watch:{value:{handler:function(t){this.currentValue=t},immediate:!0}},methods:{handleChange:function(t){this.currentValue=t.detail.value},handleClose:function(){var t=this;this.$emit("close"),setTimeout((function(){t.show=!1}),300)},handleConfirm:function(){var t=this,e=this.currentValue.map((function(e,i){var s=t.columns[i];return s[e]}));this.$emit("confirm",{value:this.currentValue,items:e}),this.handleClose()}}};e.default=s},"1b0e":function(t,e,i){"use strict";i.r(e);var s=i("be48"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"1b52":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("af34")),c=s(i("ee10")),n=i("c3e2"),o=s(i("cd5a")),d=s(i("91d2")),l=s(i("f8df")),u=s(i("16bb")),f=s(i("5e85")),_=s(i("4c51")),p={components:{projectTabs:f.default,CommonList:l.default,serviceCardList:_.default},data:function(){return{imgVideoList:{},count:1,sjdetail:{qualifications:[]},distance:12.31,queryData:{publish_user_id:null,server_kind:2,page:1,limit:10,order_type:1},tabsPopList:[],showPopup:!1,userObj:{},autoShare:!1,autoShareExecuted:!1,activeTab:"projects",artisanList:[],artisanLoading:!1,artisanFinished:!1,artisanPage:1,artisanLimit:10,artisanTotal:0,scrollLeft:0,showMockArtisans:!1,mockArtisanList:[{id:1,name:"\u5f20\u7f8e\u7532\u5e08",avatar:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:2,name:"\u674e\u7f8e\u776b\u5e08",avatar:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:3,name:"\u738b\u7f8e\u5bb9\u5e08",avatar:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:4,name:"\u5218\u7eb9\u7ee3\u5e08",avatar:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:5,name:"\u9648\u9020\u578b\u5e08",avatar:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:6,name:"\u8d75\u76ae\u80a4\u5e08",avatar:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:7,name:"\u94b1\u7f8e\u53d1\u5e08",avatar:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:8,name:"\u5b59\u6309\u6469\u5e08",avatar:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"}]}},computed:{headPhoto:function(){return"-"!=this.sjdetail.head_photo&&this.sjdetail.head_photo?this.sjdetail.head_photo:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40"},displayArtisanList:function(){return this.artisanList.length>0?this.artisanList:this.mockArtisanList},displayArtisanCount:function(){return this.artisanList.length>0?this.artisanList.length:this.mockArtisanList.length}},onLoad:function(e){var i=this;t("log",e," at pages/user/store-detail.vue:326"),this.queryData.publish_user_id=e.id,"1"===e.autoShare&&(this.autoShare=!0);var s=uni.getStorageSync("userAdrees");s?(this.userObj.userLngz=s.longitude,this.userObj.userLat=s.latitude):(this.userObj.userLngz="117.330043",this.userObj.userLat="38.372266"),this.userObj.id=e.id,this.getShopDetail(),this.$nextTick((function(){i.search()})),this.getArtisanList(),this.getImgVideoList()},methods:{goAlbum:function(){uni.navigateTo({url:"/pages/album/index?id=".concat(this.queryData.publish_user_id,"&user_type=2")})},getImgVideoList:function(){var t=this;u.default.post("/user/imgVideo/main",{user_id:this.queryData.publish_user_id,user_type:2}).then((function(e){200==e.code&&(t.imgVideoList=e.data)}))},listSuccess:function(t){t.count&&(this.count=t.count<=4?t.count:4),t.list&&(this.projectList=t.list,this.updateDisplayedProjects())},updateDisplayedProjects:function(){this.showAllProjects?this.displayedProjects=this.projectList:this.displayedProjects=this.projectList.slice(0,5)},loadMoreProjects:function(){this.showAllProjects=!0,this.updateDisplayedProjects(),this.search()},scrollToSection:function(t){"artisans-section"===t&&0===this.displayArtisanList.length||(this.activeTab="projects-section"===t?"projects":"artisans",uni.createSelectorQuery().select("#".concat(t)).boundingClientRect((function(t){t&&uni.createSelectorQuery().selectViewport().scrollOffset((function(e){var i=t.top+e.scrollTop-130;uni.pageScrollTo({scrollTop:i,duration:300})})).exec()})).exec())},viewAllArtisans:function(){uni.navigateTo({url:"/pages/user/store-syr-list?shopId=".concat(this.queryData.publish_user_id)})},openMap:function(){o.default.goMap({latitude:parseFloat(this.sjdetail.latitude),longitude:parseFloat(this.sjdetail.longitude),name:this.sjdetail.name,address:this.sjdetail.address})},contactService:function(t){var e=this;return(0,c.default)(a.default.mark((function i(){var s,r,c,n,o,l,u;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(s=uni.getSystemInfoSync(),"ios"!==s.platform){i.next=5;break}uni.makePhoneCall({phoneNumber:t}),i.next=27;break;case 5:return r="ios"===s.platform?"phone":"android.permission.CALL_PHONE",e.isShowPer=!0,c=!plus.storage.getItem("perm_".concat(r)),c&&(e.isShowPer=!0),i.next=11,d.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 11:if(n=i.sent,o=n.granted,!o){i.next=17;break}return e.isShowPer=!1,uni.makePhoneCall({phoneNumber:t}),i.abrupt("return");case 17:return e.isShowPer=!1,i.next=20,e.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 20:if(l=i.sent,l){i.next=23;break}return i.abrupt("return");case 23:return i.next=25,d.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 25:u=i.sent,u?uni.makePhoneCall({phoneNumber:t}):locationService.openAppSettings();case 27:case"end":return i.stop()}}),i)})))()},contactCustomer:function(){},viewBusinessLicense:function(){},getArtisanList:function(){var e=this;if(!this.artisanLoading&&!this.artisanFinished){this.artisanLoading=!0;var i={sjid:this.queryData.publish_user_id};if(t("log","\u8bf7\u6c42\u624b\u827a\u4eba\u5217\u8868\u53c2\u6570:",i," at pages/user/store-detail.vue:537"),this.showMockArtisans)return t("log","\u4f7f\u7528\u6a21\u62df\u624b\u827a\u4eba\u6570\u636e"," at pages/user/store-detail.vue:541"),this.artisanList=this.mockArtisanList,void(this.artisanLoading=!1);u.default.post("/user/sjSyrBind/syrList",i).then((function(i){if(t("log","\u624b\u827a\u4eba\u5217\u8868\u63a5\u53e3\u8fd4\u56de:",i," at pages/user/store-detail.vue:551"),200===i.code){var s=i.data||{},a=s.list||[],c=s.count||a.length||0;t("log","\u83b7\u53d6\u5230\u624b\u827a\u4eba\u6570\u636e:",a,"\u603b\u6570:",c," at pages/user/store-detail.vue:559");var n=e.formatArtisanList(s);t("log","\u683c\u5f0f\u5316\u540e\u7684\u624b\u827a\u4eba\u6570\u636e:",n," at pages/user/store-detail.vue:563"),1===e.artisanPage?e.artisanList=n:e.artisanList=[].concat((0,r.default)(e.artisanList),(0,r.default)(n)),e.artisanTotal=c,a.length0)if(l>=12){var u=Math.floor(l/12);r="".concat(u,"\u5e74\u7ecf\u9a8c")}else r="".concat(l,"\u4e2a\u6708\u7ecf\u9a8c")}var f=s.length>0?s[0]:"\u4e13\u4e1a\u6280\u5e08",_=["\u9ad8\u7ea7\u7f8e\u7532\u5e08","\u7f8e\u776b\u4e13\u5bb6","\u7f8e\u5bb9\u987e\u95ee","\u7eb9\u7ee3\u5927\u5e08","\u9020\u578b\u8bbe\u8ba1","\u76ae\u80a4\u7ba1\u7406","\u53d1\u578b\u603b\u76d1","\u6309\u6469\u7406\u7597"],p=i%_.length;return{id:e.id||i,name:e.name||e.nick_name||"\u624b\u827a\u4eba".concat(i+1),avatar:e.head_photo||"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png",experience:r,tag:f||_[p],serviceCount:e.service_count||0,goodRating:e.good_rating||"100%"}})):[]},viewArtisanDetail:function(t){uni.navigateTo({url:"/pages/user/employee-detail?id=".concat(t.id)})},setShare:function(e){var i=this,s=(getCurrentPages(),function(e){return{provider:"weixin",scene:"WXSceneSession",type:5,title:"\u597d\u53cb\u521a\u63a8\u4e86\u4e2a\u8d85\u8d5e\u5546\u5bb6\uff01\u70b9\u5f00\u8ba4\u8bc6TA ~",miniProgram:{id:"gh_89c92e18b70b",path:"/subPackages/user/store-detail?id=".concat(i.sjdetail.id),type:i.$store.state.wxShareType,webUrl:"https://www.baidu.com/"},imageUrl:e,success:function(e){t("log","\u5206\u4eab\u6210\u529f:",JSON.stringify(e)," at pages/user/store-detail.vue:699"),setTimeout((function(){uni.navigateBack({delta:1,success:function(){uni.showToast({title:"\u5206\u4eab\u6210\u529f",icon:"success",duration:1e3})}})}),500)},fail:function(e){t("log","\u5206\u4eab\u5931\u8d25:",JSON.stringify(e)," at pages/user/store-detail.vue:718"),uni.showToast({title:"\u5206\u4eab\u5931\u8d25",icon:"none",duration:1e3}),setTimeout((function(){uni.navigateBack({delta:1,success:function(){uni.showToast({title:"\u5206\u4eab\u5931\u8d25",icon:"none",duration:2e3})}})}),1500)}}});uni.share(s(e)).catch((function(){t("log","\u9996\u6b21\u5206\u4eab\u56fe\u7247\u65e0\u6548\uff0c\u5c1d\u8bd5\u5907\u7528\u56fe\u7247\u5206\u4eab..."," at pages/user/store-detail.vue:745"),uni.share(s("https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40"))}))},goInvite:function(){var e=this;return(0,c.default)(a.default.mark((function i(){var s,r,o,d,l,u;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return s=e,r="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40",o=getCurrentPages(),d=o[o.length-1],l=null,i.next=7,d.$getAppWebview();case 7:return u=i.sent,i.next=10,new plus.nativeObj.Bitmap("store-detail");case 10:l=i.sent,u.draw(l,(function(){t("log","\u622a\u5c4f\u7ed8\u5236\u56fe\u7247\u6210\u529f",l," at pages/user/store-detail.vue:764"),l.save("_doc/a.jpg",{},function(){var e=(0,c.default)(a.default.mark((function e(i){var c;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=i.target,e.prev=1,e.next=4,(0,n.handleImgSizeUni)(i.target);case 4:c=e.sent,t("log","\u5904\u7406\u540e\u7684\u56fe\u7247\u5730\u5740\uff1a",c," at pages/user/store-detail.vue:772"),r=c,e.next=12;break;case 9:e.prev=9,e.t0=e["catch"](1),t("error","\u5904\u7406\u5931\u8d25\uff1a",e.t0," at pages/user/store-detail.vue:776");case 12:s.setShare(r),l.clear();case 14:case"end":return e.stop()}}),e,null,[[1,9]])})));return function(t){return e.apply(this,arguments)}}(),(function(e){s.setShare(r),t("log","\u4fdd\u5b58\u56fe\u7247\u5931\u8d25\uff1a"+JSON.stringify(e)," at pages/user/store-detail.vue:783")}))}),(function(e){s.setShare(r),t("log","\u622a\u5c4f\u7ed8\u5236\u56fe\u7247\u5931\u8d25\uff1a"+JSON.stringify(e)," at pages/user/store-detail.vue:789")}));case 12:case"end":return i.stop()}}),i)})))()},previewImage:function(t){},clickTap:function(t){t.order_type&&(this.queryData.order_type=t.order_type,this.search())},clickPopTap:function(t){this.queryData.first_class=t,this.search()},goInformation:function(){uni.navigateTo({url:"/pages/user/store-detail-information?id=".concat(this.queryData.publish_user_id)})},getShopDetail:function(){var e=this;u.default.post("/user/sjdetail",this.userObj).then((function(t){e.sjdetail=t.data,e.tabsPopList=[],e.sjdetail.servers_kill.forEach((function(t,i){var s={id:t,name:e.sjdetail.servers_kill_arr[i],active:!1};e.tabsPopList.push(s)})),e.autoShare&&!e.autoShareExecuted&&(e.autoShareExecuted=!0,setTimeout((function(){e.autoTriggerShare()}),800))})).catch((function(i){t("log",i," at pages/user/store-detail.vue:842"),e.autoShareLoading&&(uni.hideLoading(),e.autoShareLoading=!1,uni.showToast({title:"\u52a0\u8f7d\u5931\u8d25",icon:"none"}))}))},autoTriggerShare:function(){t("log","\u5f00\u59cb\u81ea\u52a8\u5206\u4eab"," at pages/user/store-detail.vue:857"),this.goInvite()},search:function(){var t=this;this.showAllProjects=!1,this.$nextTick((function(){var e;null===(e=t.$refs.groupRef)||void 0===e||e.manualRefresh(t.queryData)}))}}};e.default=p}).call(this,i("f3b9")["default"])},"1b66":function(t,e,i){"use strict";i.r(e);var s=i("356b"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"1b8d":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("6473")),r={components:{customNavbar:a.default},data:function(){return{orderId:"",path:"",identity:""}},onLoad:function(t){t.orderId&&(this.orderId=t.orderId),t.path&&(this.path=t.path),t.identity&&(this.identity=t.identity)},methods:{goToOrder:function(){this.path?uni.redirectTo({url:"".concat(this.path,"?id=").concat(this.orderId,"&identity=").concat(this.identity)}):uni.redirectTo({url:"/pages/shop/buyorder-detail?id="+this.orderId})}}};e.default=r},"1b9c":function(t,e,i){"use strict";i.r(e);var s=i("5d3f"),a=i("26f0");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"1f7a69c0",null,!1,s["a"],void 0);e["default"]=n.exports},"1ba2":function(t,e,i){"use strict";i.r(e);var s=i("9486"),a=i("6be3");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"6130edbe",null,!1,s["a"],void 0);e["default"]=n.exports},"1c43":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={baseURL:"",header:{},method:"GET",dataType:"json",paramsSerializer:null,responseType:"text",custom:{},timeout:6e4,sslVerify:!0,firstIpv4:!1,validateStatus:function(t){return t>=200&&t<300},forcedJSONParsing:!0}},"1c56":function(t,e,i){"use strict";i.r(e);var s=i("cf63"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"1c5d":function(t,e,i){"use strict";i.r(e);var s=i("3d13"),a=i("28ff");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"2c7f2a48",null,!1,s["a"],void 0);e["default"]=n.exports},"1c64":function(t,e,i){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i={name:"OrderCard",props:{dataItem:{type:Object},typeId:{type:Number},showState:{type:Boolean,default:!0},haveButton:{type:Boolean,default:!0}},computed:{useTime:function(){var e=this.dataItem.reservation_time,i=this.dataItem.server_time||0;return e?function(e,i){if(!e)return"";var s=e.replace(/-/g,"/"),a=new Date(s);if(isNaN(a.getTime()))return t("error","\u65e0\u6548\u7684\u5f00\u59cb\u65f6\u95f4\u683c\u5f0f:",e," at pages/shop/components/orderCard.vue:97"),"";var r=new Date(a.getTime()+60*i*1e3),c=function(t){return t.getFullYear()+"\u5e74"},n=function(t){var e=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0");return"".concat(e,"\u6708").concat(i)},o=function(t){var e=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0");return"".concat(e,":").concat(i)},d=a.getFullYear()===r.getFullYear()&&a.getMonth()===r.getMonth()&&a.getDate()===r.getDate();return d?"".concat(c(a)).concat(n(a)," ").concat(o(a),"-").concat(o(r)):"".concat(c(a)).concat(n(a)," ").concat(o(a),"-").concat(c(r)).concat(n(r)," ").concat(o(r))}(e,i):""},stateText:function(){return["","\u5f85\u652f\u4ed8","\u5f85\u63a5\u5355","\u5f85\u5f00\u59cb","\u8fdb\u884c\u4e2d","\u5df2\u5b8c\u6210","\u5df2\u8bc4\u4ef7","\u5df2\u53d6\u6d88"][this.dataItem.state]},getGroupType:function(){var t,e=this,i=null===(t=[{id:1,text:"\u56e2\u8d2d\u4e2d"},{id:2,text:"\u5df2\u6210\u56e2"},{id:3,text:"\u62fc\u56e2\u5931\u8d25"}].find((function(t){return t.id==e.dataItem.team_buy_order_state})))||void 0===t?void 0:t.text;return i}},methods:{emitCancel:function(){this.$emit("cancel")},emitAccept:function(){this.$emit("accept")},emitStart:function(){this.$emit("start")},emitDone:function(){this.$emit("done")}}};e.default=i}).call(this,i("f3b9")["default"])},"1c6c":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","add-alipay"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:t.customName.popTitle,showBack:!0,_i:1}}),i("view",{staticClass:t._$s(2,"sc","form"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","form-item"),attrs:{_i:3}},[i("text",[t._v(t._$s(4,"t0-0",t._s(t.customName.name)))]),i("input",{directives:[{name:"model",rawName:"v-model",value:t.queryData.card_no,expression:"queryData.card_no"}],attrs:{maxlength:t._$s(5,"a-maxlength",1==t.customName.value?255:30),placeholder:t._$s(5,"a-placeholder","\u8bf7\u8f93\u5165"+t.customName.name),_i:5},domProps:{value:t._$s(5,"v-model",t.queryData.card_no)},on:{input:function(e){e.target.composing||t.$set(t.queryData,"card_no",e.target.value)}}})]),t._$s(6,"i",3==t.queryData.type)?i("view",{staticClass:t._$s(6,"sc","form-item"),attrs:{_i:6}},[i("text"),i("input",{directives:[{name:"model",rawName:"v-model",value:t.queryData.bank,expression:"queryData.bank"}],attrs:{_i:8},domProps:{value:t._$s(8,"v-model",t.queryData.bank)},on:{input:function(e){e.target.composing||t.$set(t.queryData,"bank",e.target.value)}}})]):t._e(),i("view",{staticClass:t._$s(9,"sc","form-item"),attrs:{_i:9}},[i("text"),i("input",{directives:[{name:"model",rawName:"v-model",value:t.queryData.name,expression:"queryData.name"}],attrs:{_i:11},domProps:{value:t._$s(11,"v-model",t.queryData.name)},on:{input:function(e){e.target.composing||t.$set(t.queryData,"name",e.target.value)}}})]),i("view",{staticClass:t._$s(12,"sc","form-item"),attrs:{_i:12}},[i("text"),i("input",{directives:[{name:"model",rawName:"v-model",value:t.queryData.phone,expression:"queryData.phone"}],attrs:{_i:14},domProps:{value:t._$s(14,"v-model",t.queryData.phone)},on:{input:function(e){e.target.composing||t.$set(t.queryData,"phone",e.target.value)}}})]),t._$s(15,"i",3==t.queryData.type)?i("view",{staticClass:t._$s(15,"sc","form-item"),attrs:{_i:15}},[i("text"),i("input",{directives:[{name:"model",rawName:"v-model",value:t.queryData.bank_name,expression:"queryData.bank_name"}],attrs:{_i:17},domProps:{value:t._$s(17,"v-model",t.queryData.bank_name)},on:{input:function(e){e.target.composing||t.$set(t.queryData,"bank_name",e.target.value)}}})]):t._e(),t._$s(18,"i",3==t.queryData.type)?i("view",{staticClass:t._$s(18,"sc","tip"),attrs:{_i:18}}):t._e(),i("view",{staticClass:t._$s(19,"sc","default-option"),attrs:{_i:19}},[t._$s(20,"i",t.queryData.is_default)?i("image",{staticClass:t._$s(20,"sc","default-wrapper-img"),attrs:{_i:20},on:{click:t.setDefault}}):i("image",{staticClass:t._$s(21,"sc","default-wrapper-img"),attrs:{_i:21},on:{click:t.setDefault}}),i("text",{staticClass:t._$s(22,"sc","default-text"),attrs:{_i:22}})])]),i("view",{staticClass:t._$s(23,"sc","btn-group"),attrs:{_i:23}},[i("button",{staticClass:t._$s(24,"sc","cancel"),class:t._$s(24,"c",{"cancel-active":t.isFormFilled}),attrs:{_i:24},on:{click:t.goBack}}),i("button",{staticClass:t._$s(25,"sc","confirm"),class:t._$s(25,"c",{"confirm-active":t.isFormFilled}),attrs:{_i:25},on:{click:t.confirmAdd}})])],1)},r=[]},"1d78":function(t,e,i){"use strict";i.r(e);var s=i("5034"),a=i("2408");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"19c9b517",null,!1,s["a"],void 0);e["default"]=n.exports},"1dab":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,stepTab:i("11ba").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","ruzhu-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:t.navTitle,showBack:!0,_i:1}}),i("step-tab",{attrs:{currentStep:t.currentStep,identity:t.identity,_i:2}}),i("view",{staticClass:t._$s(3,"sc","content"),attrs:{_i:3}},[t._$s(4,"i",0===t.currentStep)?i("view",{staticClass:t._$s(4,"sc","xieyi_content"),attrs:{_i:4}},[i("rich-text",{attrs:{nodes:t._$s(5,"a-nodes",t.textData.text),_i:5}})]):t._$s(6,"e",1===t.currentStep)?i("view",{attrs:{_i:6}},[i("qualification-info",{ref:"qualificationInfo",attrs:{_i:7}})],1):t._$s(8,"e",2===t.currentStep)?i("view",{attrs:{_i:8}},[i("store-info",{ref:"storeInfo",attrs:{_i:9}})],1):t._e()]),i("view",{staticClass:t._$s(10,"sc","kong"),attrs:{_i:10}}),i("view",{staticClass:t._$s(11,"sc","bottom-fixed"),attrs:{_i:11}},[t._$s(12,"i",0===t.currentStep)?i("view",{staticClass:t._$s(12,"sc","step-0-buttons"),attrs:{_i:12}},[i("view",{staticClass:t._$s(13,"sc","agree"),attrs:{_i:13}},[t._$s(14,"i",!t.isAgree)?i("image",{staticClass:t._$s(14,"sc","agree-btn"),attrs:{_i:14},on:{click:function(e){t.isAgree=!0}}}):i("image",{staticClass:t._$s(15,"sc","agree-btn"),attrs:{_i:15},on:{click:function(e){t.isAgree=!1}}}),i("text",{staticClass:t._$s(16,"sc","agree-tip"),attrs:{_i:16}})]),i("view",{staticClass:t._$s(17,"sc","next-btn"),attrs:{_i:17},on:{click:t.goNext}},[i("text",{staticClass:t._$s(18,"sc","next-text"),attrs:{_i:18}})])]):t._$s(19,"e",1===t.currentStep)?i("view",{staticClass:t._$s(19,"sc","step-1-buttons"),attrs:{_i:19}},[i("view",{staticClass:t._$s(20,"sc","button-row"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","prev-btn"),attrs:{_i:21},on:{click:t.goPrev}},[i("text",{staticClass:t._$s(22,"sc","prev-text"),attrs:{_i:22}})]),i("view",{staticClass:t._$s(23,"sc","next-btn"),attrs:{_i:23},on:{click:t.goNext}},[i("text",{staticClass:t._$s(24,"sc","next-text"),attrs:{_i:24}})])])]):t._$s(25,"e",2===t.currentStep)?i("view",{staticClass:t._$s(25,"sc","step-2-buttons"),attrs:{_i:25}},[i("view",{staticClass:t._$s(26,"sc","button-row"),attrs:{_i:26}},[i("view",{staticClass:t._$s(27,"sc","prev-btn"),attrs:{_i:27},on:{click:t.goPrev}},[i("text",{staticClass:t._$s(28,"sc","prev-text"),attrs:{_i:28}})]),i("view",{staticClass:t._$s(29,"sc","submit-btn"),attrs:{_i:29},on:{click:t.submitApplication}},[i("text",{staticClass:t._$s(30,"sc","submit-text"),attrs:{_i:30}})])])]):t._e()])],1)},r=[]},"1e2a":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={data:function(){return{hasShowMore:!1,compositeStraList:[]}},computed:{evaluatorPhoto:function(){return this.evaluateObj.evaluator_head_photo?1==this.evaluateObj.anonymity?"/static/images/evaluate/photo.jpg":this.evaluateObj.evaluator_head_photo:""},evaluatorName:function(){return this.evaluateObj.evaluator_name?1==this.evaluateObj.anonymity?"\u533f\u540d\u7528\u6237":this.evaluateObj.evaluator_name:""},photos:function(){return this.evaluateObj.images?this.evaluateObj.images.split(","):[]},formattedCreateTime:function(){var t;if(null===(t=this.evaluateObj)||void 0===t||!t.create_time)return"";var e=this.evaluateObj.create_time.split(" ")[0];if(!e)return"";var i=e.replace(/-/g,"/"),s=new Date(i);if(isNaN(s.getTime()))return"";var a=s.getFullYear(),r=s.getMonth()+1,c=s.getDate();return"".concat(a,"\u5e74").concat(r,"\u6708").concat(c,"\u65e5")},getComposite:function(){return this.evaluateObj.composite?"/static/images/evaluate/score".concat(Math.floor(this.evaluateObj.composite),".png"):""}},props:{evaluateObj:{type:Object,default:function(){return{}}},isAllImg:{type:Boolean,default:!1}},methods:{showMore:function(){this.hasShowMore=!this.hasShowMore},imgPreview:function(t){uni.previewImage({current:t,urls:this.photos})},getStar:function(t){if(!this.evaluateObj.composite)return"";var e=this.evaluateObj.composite;return e>=t?"/static/images/evaluate/star_red.png":et-1?"/static/images/evaluate/star2.png":"/static/images/evaluate/star_ash2.png"},handleDecimal:function(t){var e=-1===Math.sign(t)?Math.ceil(t):Math.floor(t),i=t-e;return i>.5?e+.5:e},goDetail:function(){this.$emit("goDetail",this.evaluateObj)}}};e.default=s},"1e31":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","search"),style:t._$s(0,"s",{background:t.bgClor}),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","search-right"),style:t._$s(1,"s",{width:t.width,height:t.height,border:t.border}),attrs:{_i:1}},[i("input",{staticClass:t._$s(2,"sc","search-inp"),attrs:{placeholder:t._$s(2,"a-placeholder",t.placeholder),value:t._$s(2,"a-value",t.value),_i:2},on:{input:t.onInput,confirm:t.onConfirm}}),i("view",{staticClass:t._$s(3,"sc","btn_search"),attrs:{_i:3},on:{click:function(e){return e.stopPropagation(),t.onSearch(e)}}}),i("image",{staticClass:t._$s(4,"sc","search-icon"),attrs:{_i:4},on:{click:function(e){return e.stopPropagation(),t.onSearch(e)}}})])])},a=[]},"1ea2":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e=4||t.cashObj.cash_state<1}),attrs:{_i:18}},[t._v(t._$s(18,"t0-0",t._s(t.getTabName(t.cashObj.cash_state))))])]),t._$s(19,"i",t.cashObj.cash_back_text)?i("view",{staticClass:t._$s(19,"sc","pop-card pop-border-bottom"),attrs:{_i:19}},[i("view",{staticClass:t._$s(20,"sc","pop-card-title"),attrs:{_i:20}}),i("view",{staticClass:t._$s(21,"sc","pop-card-text1 popRed"),attrs:{_i:21}},[t._v(t._$s(21,"t0-0",t._s(t.cashObj.cash_back_text)))])]):t._e(),i("view",{staticClass:t._$s(22,"sc","pop-card"),attrs:{_i:22}},[i("view",{staticClass:t._$s(23,"sc","pop-card-title"),attrs:{_i:23}})]),t._$s(24,"i",3==t.cashObj.cash_kind)?i("view",{attrs:{_i:24}},[i("view",{staticClass:t._$s(25,"sc","pop-card pop-border-bottom"),attrs:{_i:25}},[i("view",{staticClass:t._$s(26,"sc","pop-card-title"),attrs:{_i:26}}),i("view",{staticClass:t._$s(27,"sc","pop-card-text1"),attrs:{_i:27}},[t._v(t._$s(27,"t0-0",t._s(t.cashObj.cash_identity)))])]),i("view",{staticClass:t._$s(28,"sc","pop-card pop-border-bottom"),attrs:{_i:28}},[i("view",{staticClass:t._$s(29,"sc","pop-card-title"),attrs:{_i:29}}),i("view",{staticClass:t._$s(30,"sc","pop-card-text1"),attrs:{_i:30}},[t._v(t._$s(30,"t0-0",t._s(t.cashObj.cash_bank)))])]),i("view",{staticClass:t._$s(31,"sc","pop-card pop-border-bottom"),attrs:{_i:31}},[i("view",{staticClass:t._$s(32,"sc","pop-card-title"),attrs:{_i:32}}),i("view",{staticClass:t._$s(33,"sc","pop-card-text1"),attrs:{_i:33}},[t._v(t._$s(33,"t0-0",t._s(t.cashObj.cash_name)))])]),i("view",{staticClass:t._$s(34,"sc","pop-card pop-border-bottom"),attrs:{_i:34}},[i("view",{staticClass:t._$s(35,"sc","pop-card-title"),attrs:{_i:35}}),i("view",{staticClass:t._$s(36,"sc","pop-card-text1"),attrs:{_i:36}},[t._v(t._$s(36,"t0-0",t._s(t.cashObj.cash_phone)))])]),i("view",{staticClass:t._$s(37,"sc","pop-card pop-border-bottom"),attrs:{_i:37}},[i("view",{staticClass:t._$s(38,"sc","pop-card-title"),attrs:{_i:38}}),i("view",{staticClass:t._$s(39,"sc","pop-card-text1"),attrs:{_i:39}},[t._v(t._$s(39,"t0-0",t._s(t.cashObj.cash_bank_name)))])])]):t._e(),t._$s(40,"i",1==t.cashObj.cash_kind)?i("view",{attrs:{_i:40}},[i("view",{staticClass:t._$s(41,"sc","pop-card pop-border-bottom"),attrs:{_i:41}},[i("view",{staticClass:t._$s(42,"sc","pop-card-title"),attrs:{_i:42}}),i("view",{staticClass:t._$s(43,"sc","pop-card-text1"),attrs:{_i:43}},[t._v(t._$s(43,"t0-0",t._s(t.cashObj.cash_identity)))])]),i("view",{staticClass:t._$s(44,"sc","pop-card pop-border-bottom"),attrs:{_i:44}},[i("view",{staticClass:t._$s(45,"sc","pop-card-title"),attrs:{_i:45}}),i("view",{staticClass:t._$s(46,"sc","pop-card-text1"),attrs:{_i:46}},[t._v(t._$s(46,"t0-0",t._s(t.cashObj.cash_name)))])]),i("view",{staticClass:t._$s(47,"sc","pop-card pop-border-bottom"),attrs:{_i:47}},[i("view",{staticClass:t._$s(48,"sc","pop-card-title"),attrs:{_i:48}}),i("view",{staticClass:t._$s(49,"sc","pop-card-text1"),attrs:{_i:49}},[t._v(t._$s(49,"t0-0",t._s(t.cashObj.cash_phone)))])])]):t._e(),i("view",{staticClass:t._$s(50,"sc","pop-btn"),attrs:{_i:50},on:{click:t.close}})])])])],1)},r=[]},2137:function(t,e,i){"use strict";i.r(e);var s=i("254b"),a=i("956b");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"c3499256",null,!1,s["a"],void 0);e["default"]=n.exports},2153:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","syrAdmin"),attrs:{_i:0}},[i("view",{directives:[{name:"show",rawName:"v-show",value:t._$s(1,"v-show",0==t.currentIndex),expression:"_$s(1,'v-show',currentIndex == 0)"}],staticClass:t._$s(1,"sc","artisan-page"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","bg"),attrs:{_i:2}},[i("custom-navbar",{attrs:{title:"\u5171\u4eab\u624b\u827a\u4eba","show-back":!0,"title-color":"#000000",backgroundColor:"transparent",_i:3}}),i("view",{staticClass:t._$s(4,"sc","profile-section"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","profile-info"),attrs:{_i:5}},[t._$s(6,"i",t.userInfo.head_photo)?i("image",{staticClass:t._$s(6,"sc","avatar"),attrs:{src:t._$s(6,"a-src",t.userInfo.head_photo),_i:6}}):t._e(),i("view",{staticClass:t._$s(7,"sc","info-content"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","name"),attrs:{_i:8}},[t._v(t._$s(8,"t0-0",t._s(t.userInfo.name)))]),i("view",{staticClass:t._$s(9,"sc","welcome"),attrs:{_i:9}})])]),i("view",{staticClass:t._$s(10,"sc","center-btn"),attrs:{_i:10},on:{click:t.goRoleMy}},[i("view",{staticClass:t._$s(11,"sc","center-text"),attrs:{_i:11}}),i("image",{staticClass:t._$s(12,"sc","center_icon"),attrs:{_i:12}})])])],1),i("view",{staticClass:t._$s(13,"sc","switch-section"),attrs:{_i:13}},[i("view",{staticClass:t._$s(14,"sc","center-btn"),attrs:{_i:14}},[i("text",{staticClass:t._$s(15,"sc","switch-tip"),attrs:{_i:15},on:{click:t.goMoreSetting}}),i("image",{staticClass:t._$s(16,"sc","center_icon"),attrs:{_i:16}})]),i("view",{staticClass:t._$s(17,"sc","switch-box"),class:t._$s(17,"c",{disswitch:2==t.userInfo.order_taking}),attrs:{_i:17},on:{click:function(e){return t.handleSwitchChange()}}},[t._$s(18,"i",1==t.userInfo.order_taking)?i("text",{staticClass:t._$s(18,"sc","switch-text"),attrs:{_i:18}}):t._e(),i("view",{staticClass:t._$s(19,"sc","switch-yuan"),attrs:{_i:19}}),t._$s(20,"i",2==t.userInfo.order_taking)?i("text",{staticClass:t._$s(20,"sc","switch-text"),attrs:{_i:20}}):t._e()])]),i("view",{staticClass:t._$s(21,"sc","order-class"),style:t._$s(21,"s",{paddingBottom:(t.count,"40rpx")}),attrs:{_i:21}},[i("view",{staticClass:t._$s(22,"sc","order-types"),attrs:{_i:22}},[i("view",{staticClass:t._$s(23,"sc","order-type-item"),class:t._$s(23,"c",{active:0==t.typeId}),attrs:{_i:23},on:{click:function(e){return t.searchTypeOrder(0)}}},[i("text",{staticClass:t._$s(24,"sc","type-name"),attrs:{_i:24}}),i("view",{staticClass:t._$s(25,"sc","active-line"),style:t._$s(25,"s",{visibility:0==t.typeId?"visible":"hidden"}),attrs:{_i:25}})]),i("view",{staticClass:t._$s(26,"sc","order-type-item"),class:t._$s(26,"c",{active:3==t.typeId}),attrs:{_i:26},on:{click:function(e){return t.searchTypeOrder(3)}}},[i("text",{staticClass:t._$s(27,"sc","type-name"),attrs:{_i:27}}),i("view",{staticClass:t._$s(28,"sc","active-line"),style:t._$s(28,"s",{visibility:3==t.typeId?"visible":"hidden"}),attrs:{_i:28}})]),i("view",{staticClass:t._$s(29,"sc","order-type-item"),class:t._$s(29,"c",{active:1==t.typeId}),attrs:{_i:29},on:{click:function(e){return t.searchTypeOrder(1)}}},[i("text",{staticClass:t._$s(30,"sc","type-name"),attrs:{_i:30}}),i("view",{staticClass:t._$s(31,"sc","active-line"),style:t._$s(31,"s",{visibility:1==t.typeId?"visible":"hidden"}),attrs:{_i:31}})]),i("view",{staticClass:t._$s(32,"sc","order-type-item"),class:t._$s(32,"c",{active:2==t.typeId}),attrs:{_i:32},on:{click:function(e){return t.searchTypeOrder(2)}}},[i("text",{staticClass:t._$s(33,"sc","type-name"),attrs:{_i:33}}),i("view",{staticClass:t._$s(34,"sc","active-line"),style:t._$s(34,"s",{visibility:2==t.typeId?"visible":"hidden"}),attrs:{_i:34}})])]),i("scroll-view",{staticClass:t._$s(35,"sc","order-state"),attrs:{_i:35}},[i("view",{staticClass:t._$s(36,"sc","order-state-item"),class:t._$s(36,"c",{active:2==t.stateOrder}),attrs:{_i:36},on:{click:function(e){return t.handleOrderState(2)}}},[i("text",{staticClass:t._$s(37,"sc","state-name"),attrs:{_i:37}},[t._v(t._$s(37,"t0-0",t._s(t.ordernum.djd)))])]),i("view",{staticClass:t._$s(38,"sc","order-state-item"),class:t._$s(38,"c",{active:3==t.stateOrder}),attrs:{_i:38},on:{click:function(e){return t.handleOrderState(3,0)}}},[i("text",{staticClass:t._$s(39,"sc","state-name"),attrs:{_i:39}},[t._v(t._$s(39,"t0-0",t._s(t.ordernum.dfw)))])]),i("view",{staticClass:t._$s(40,"sc","order-state-item"),class:t._$s(40,"c",{active:4==t.stateOrder}),attrs:{_i:40},on:{click:function(e){return t.handleOrderState(4)}}},[i("text",{staticClass:t._$s(41,"sc","state-name"),attrs:{_i:41}},[t._v(t._$s(41,"t0-0",t._s(t.ordernum.dwc)))])])])]),t._$s(42,"i",0!=t.count)?i("view",{staticClass:t._$s(42,"sc","order-list"),attrs:{_i:42}},t._l(t._$s(43,"f",{forItems:t.orderList}),(function(e,s,a,r){return i("view",{key:t._$s(43,"f",{forIndex:a,key:e.id}),staticClass:t._$s("43-"+r,"sc","order_item"),attrs:{_i:"43-"+r}},[t._$s("44-"+r,"i",2!=t.typeId)?i("OrderCard",{attrs:{dataItem:e,typeId:t.typeId,_i:"44-"+r},on:{cancel:function(i){return t.cancelOrder(i,e)},accept:function(i){return t.confirmOrder(i,e)},start:function(i){return t.startOrder(i,e)},done:function(i){return t.endOrder(i,e)},goOrderDetail:t.goOrderDetail}}):i("WorkHourOrderCard",{attrs:{showState:!1,dataItem:e,typeId:t.typeId,_i:"45-"+r},on:{cancel:function(i){return t.cancelOrder(i,e)},accept:function(i){return t.confirmOrder(i,e)},start:function(i){return t.startOrder(i,e)},done:function(i){return t.endOrder(i,e)},goOrderDetail:t.goOrderDetail}})],1)})),0):i("view",{staticClass:t._$s(46,"sc","nothings-box"),attrs:{_i:46}},[i("text",{staticClass:t._$s(47,"sc","nothings-text"),attrs:{_i:47}})]),i("serviceCodeInput",{attrs:{show:t.showInput,_i:48},on:{close:function(e){t.showInput=!1},confirm:t.onConfirm}})],1),i("MyPage",{directives:[{name:"show",rawName:"v-show",value:t._$s(49,"v-show",1==t.currentIndex),expression:"_$s(49,'v-show',currentIndex == 1)"}],attrs:{_i:49}}),i("MyTabBar",{attrs:{tabList:t.tabList,currentIndex:t.currentIndex,_i:50},on:{change:t.changeIndex}})],1)},r=[]},"21c8":function(t,e,i){"use strict";i.r(e);var s=i("4789"),a=i("09d9");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},2203:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("af34")),c=s(i("ee10")),n=s(i("16bb")),o=s(i("6a74")),d=s(i("d354")),l={data:function(){return{title:"",state:2,currentTab:0,showTip:!1,tabs:[{id:2,text:"\u5df2\u4e0a\u67b6"},{id:1,text:"\u5ba1\u6838\u4e2d"},{id:3,text:"\u4e0b\u67b6"},{id:0,text:"\u8349\u7a3f"},{id:4,text:"\u9a73\u56de"}],page:1,limit:10,services:[],hasMore:!1,startX:0,moveX:0,currentIndex:-1,count:0,isLoad:!0}},components:{workSpaceCard:d.default,tipsPopup:o.default},onLoad:function(){t("log","\u5de5\u65f6\u7ba1\u7406\u9875\u9762\u52a0\u8f7d"," at pages/shop/workSpace/list.vue:101"),this.getServicesList(),this.getClass()},onPullDownRefresh:function(){this.getServicesList()},onReachBottom:function(){var e=this;return(0,c.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(t("log","onReachBottom"," at pages/shop/workSpace/list.vue:109"),!(e.count<=e.page*e.limit)&&e.isLoad){i.next=3;break}return i.abrupt("return");case 3:e.page++,e.getServicesList(!1);case 5:case"end":return i.stop()}}),i)})))()},methods:{getServicesList:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.isLoad=!1,e&&(this.page=1,this.limit=10);var i="/sj/workSeat/list";n.default.post(i,{state:this.state,title:this.title,page:this.page,limit:this.limit}).then((function(i){e?(t.services=i.data.list,t.count=i.data.count):(t.services=[].concat((0,r.default)(t.services),(0,r.default)(i.data.list)),t.count=i.data.count)})).finally((function(){t.isLoad=!0,uni.stopPullDownRefresh()}))},getClass:function(){var t=this;n.default.post("/sj/workSeat/classList").then((function(e){t.$store.commit("setWorkSpaceSJClassList",e.data)}))},switchTab:function(t,e){this.currentTab=t,this.state=e,this.getServicesList()},viewEdit:function(t){uni.navigateTo({url:"/pages/shop/workSpace/addWorkSpace?id=".concat(t.id,"&state=").concat(t.state)})},viewList:function(t){var e=this;n.default.post("/sj/workSeat/switch",{id:t.id,state:2}).then((function(t){200==t.code?(uni.showToast({title:"\u4e0a\u67b6\u6210\u529f",icon:"none"}),e.getServicesList()):uni.showToast({title:t.msg,icon:"none"})}))},viewRemove:function(t){var e=this;uni.showModal({title:"\u63d0\u793a",content:"\u786e\u5b9a\u8981\u4e0b\u67b6\u8be5\u670d\u52a1\u5417\uff1f",success:function(i){i.confirm&&n.default.post("/sj/workSeat/switch",{id:t.id,state:3}).then((function(t){200==t.code?(uni.showToast({title:"\u4e0b\u67b6\u6210\u529f",icon:"none"}),e.getServicesList()):uni.showToast({title:t.msg,icon:"none"})}))}})},addService:function(){uni.navigateTo({url:"/pages/shop/workSpace/addWorkSpace"})},deletemanHour:function(t){var e=this;uni.showModal({title:"\u63d0\u793a",content:"\u786e\u5b9a\u8981\u5220\u9664\u8be5\u670d\u52a1\u5417\uff1f",success:function(i){i.confirm&&n.default.post("/sj/workSeat/del",{id:t.id}).then((function(t){200==t.code?(uni.showToast({title:"\u5220\u9664\u6210\u529f",icon:"none"}),e.getServicesList()):uni.showToast({title:t.msg,icon:"none"})}))}})},resetSlide:function(){var t=this;this.services.forEach((function(e,i){i!==t.currentIndex&&t.$set(e,"slideX",0)}))},changeSlide:function(e){var i=e.index,s=e.type,a=void 0===s?"slideX":s,r=e.slide,c=void 0===r?0:r;t("log",i,a,c,9999," at pages/shop/workSpace/list.vue:256"),this.services[i]&&this.$set(this.services[i],a,c)}}};e.default=l}).call(this,i("f3b9")["default"])},2225:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("af34")),c=s(i("ee10")),n=s(i("47c6")),o=s(i("6473")),d=i("53d1"),l=s(i("16bb")),u={components:{customNavbar:o.default,selectTimePage:n.default},data:function(){return{serviceTimeNum:3,serviceId:"",syrorsjInfo:{},reservation_address:{},s1:"",s2:"",s3:"",selected_date:"",selected_time:"",server_kind:null,selectedTime:null,dateList:["\u4eca\u5929","\u660e\u5929","\u540e\u5929"],timeOptions:[],selectedDateIndex:0,selectedTimeIndex:0,sureTimeDataIndex:0,showTimePicker:!1,service:{photo:[],server_kind:"",title:"",server_price:""},remark:"",orderInfo:{originalPrice:.01,totalPrice:.01},isSubmit:!1,stateConfig:{1:{class:"state-available",text:"\u53ef\u7ea6"},2:{class:"state-full",text:"\u7ea6\u6ee1"},3:{class:"state-rest",text:"\u4f11\u606f"},4:{class:"state-locked",text:"\u9501\u5b9a"},5:{class:"state-unavailable",text:"\u4e0d\u53ef\u7528"}}}},onLoad:function(e){var i=this;return(0,c.default)(a.default.mark((function s(){var r,c,n,o;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(s.prev=0,!e.id){s.next=20;break}return i.name=e.name,s.next=5,l.default.post("/user/serverdetail",{id:e.id});case 5:if(r=s.sent,1!==r.state){s.next=20;break}return i.service=r.data,i.service.server_time&&(i.serviceTimeNum=Math.ceil(i.service.server_time/10)),i.server_kind=r.data.server_kind,1==r.data.server_kind?c="/user/syrdetail":2==r.data.server_kind&&(c="/user/sjdetail"),s.next=13,l.default.post(c,{id:r.data.publish_user_id});case 13:if(n=s.sent,i.syrorsjInfo=n.data,1!=r.data.server_kind){s.next=20;break}return o=i.getDateStr(0),i.getyestimearrFirst(o,"today"),s.next=20,i.getDefaultAddress(e.id);case 20:s.next=25;break;case 22:s.prev=22,s.t0=s["catch"](0),t("log","\u62a5\u9519",s.t0," at pages/order/submit.vue:238");case 25:case"end":return s.stop()}}),s,null,[[0,22]])})))()},methods:{getItemClass:function(t){var e;return(null===(e=this.stateConfig[t])||void 0===e?void 0:e.class)||"state-unknown"},getDefaultAddress:function(e){var i=this;l.default.post("/user/getdefaultaddress",{id:e}).then((function(e){t("log","res============",e," at pages/order/submit.vue:253"),e.data&&e.data.is_ok&&(i.reservation_address=e.data,i.reservation_address_id=e.data.id)})).catch((function(e){t("log","err",e," at pages/order/submit.vue:260")}))},getyestimearrFirst:function(e,i){var s=this;s.timeOptions=[],l.default.post("/user/reserve/timeList",{user_syr_id:this.service.publish_user_id}).then(function(){var t=(0,c.default)(a.default.mark((function t(e){var i;return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:s.timeOptions=[].concat((0,r.default)(s.timeOptions),[e.data.today,e.data.tomorrow,e.data.after]),i={1:"\u53ef\u7ea6",2:"\u7ea6\u6ee1",3:"\u4f11\u606f",4:"\u9501\u5b9a",5:"\u4e0d\u53ef\u7528"},s.timeOptions.forEach((function(t){t.forEach((function(t){t.stateName=i[t.state]}))}));case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).catch((function(e){t("log","\u62a5\u9519",e," at pages/order/submit.vue:320")}))},getyestimearr:function(e,i){var s=this;return(0,c.default)(a.default.mark((function e(){var i;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return i=s,i.timeOptions=[],e.next=4,l.default.post("/user/reserve/timeList",{user_syr_id:s.service.publish_user_id}).then((function(t){i.timeOptions=[].concat((0,r.default)(i.timeOptions),[t.data.today,t.data.tomorrow,t.data.after]);var e={1:"\u53ef\u7ea6",2:"\u7ea6\u6ee1",3:"\u4f11\u606f",4:"\u9501\u5b9a",5:"\u4e0d\u53ef\u7528"};i.timeOptions.forEach((function(t){t.forEach((function(t){t.stateName=e[t.state]}))}))})).catch((function(e){t("log","\u62a5\u9519",e," at pages/order/submit.vue:352")}));case 4:case"end":return e.stop()}}),e)})))()},getDateStr:function(t){var e=new Date;return e.setDate(e.getDate()+t),"".concat(e.getFullYear(),"-").concat((e.getMonth()+1).toString().padStart(2,"0"),"-").concat(e.getDate().toString().padStart(2,"0"))},goToDetail:function(t){uni.navigateTo({url:"/pages/service/detail?id="+t})},openTimePicker:function(){var e=this;return(0,c.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return t("log","\u6253\u5f00\u65f6\u95f4\u9009\u62e9\u5f39\u6846",e.selected_date," at pages/order/submit.vue:372"),t("log",e.service," at pages/order/submit.vue:373"),i.next=4,e.getyestimearr(e.selected_date);case 4:e.$refs.selecTime.openTime();case 5:case"end":return i.stop()}}),i)})))()},sureTime:function(e){t("log","\u9009\u62e9\u65f6\u95f4",e," at pages/order/submit.vue:379"),Object.keys(e).length&&(this.selectedTime="".concat(this.dateList[e.selectedDateIndex]," ").concat(e.time.show_time),this.selected_date=this.getDateStr(e.selectedDateIndex),this.selected_time=e.time.show_time,this.selectedTimeIndex=e.selectedTimeIndex,this.selectedDateIndex=e.selectedDateIndex)},closeTime:function(){t("log","\u5173\u95ed\u65f6\u95f4\u9009\u62e9\u5f39\u6846"," at pages/order/submit.vue:391")},goToAddress:function(){uni.navigateTo({url:"/pages/address/list?id="+this.service.id})},addReservation:function(t){this.reservation_address_id=t.id,this.reservation_address=t},submitOrder:(0,d.debounce)((0,c.default)(a.default.mark((function e(){var i,s,r=this;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(0!=this.selected_time.length||1!=this.server_kind){e.next=3;break}return uni.showToast({title:"\u8bf7\u9009\u62e9\u65f6\u95f4",icon:"none"}),e.abrupt("return");case 3:if(!this.isSubmit){e.next=5;break}return e.abrupt("return");case 5:if(e.prev=5,uni.showLoading({title:"\u63d0\u4ea4\u4e2d..."}),i={},1!=this.service.server_kind){e.next=15;break}if(this.reservation_address_id){e.next=12;break}return uni.showToast({title:"\u8bf7\u9009\u62e9\u5230\u5bb6\u5730\u5740",icon:"none"}),e.abrupt("return");case 12:i={server_id:this.service.id,server_title:this.service.title,server_type_first_id:this.service.first_class_id,server_type_secod_id:this.service.second_class_id,order_kind:this.service.server_kind,order_type:3,order_money:this.service.server_price,reservation_time:"".concat(this.selected_date," ").concat(this.selected_time,":00"),reservation_address_id:this.reservation_address_id,remark:this.remark},e.next=16;break;case 15:i={server_id:this.service.id,server_title:this.service.title,server_type_first_id:this.service.first_class_id,server_type_secod_id:this.service.second_class_id,order_kind:this.service.server_kind,order_type:3,order_money:this.service.server_price,remark:this.remark};case 16:return e.next=18,l.default.post("/user/creatorder",i);case 18:s=e.sent,uni.hideLoading(),1===s.state?(uni.showToast({title:"\u63d0\u4ea4\u6210\u529f",icon:"none",duration:2e3}),this.isSubmit=!0,setTimeout((function(){uni.redirectTo({url:"/pages/order/pay?id=".concat(s.data.id,"&money=").concat(r.service.server_price,"&title=").concat(r.service.title,"&number=").concat(s.data.number)})}),500)):(uni.showToast({title:s.msg||"\u63d0\u4ea4\u5931\u8d25",icon:"none"}),this.isSubmit=!1),e.next=29;break;case 23:e.prev=23,e.t0=e["catch"](5),uni.hideLoading(),uni.showToast({title:"\u63d0\u4ea4\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5",icon:"none"}),t("error","\u63d0\u4ea4\u8ba2\u5355\u5931\u8d25:",e.t0," at pages/order/submit.vue:489"),this.isSubmit=!1;case 29:case"end":return e.stop()}}),e,this,[[5,23]])}))),500)}};e.default=u}).call(this,i("f3b9")["default"])},2251:function(t,e,i){"use strict";i.r(e);var s=i("3b06"),a=i("c11a");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"b2b1d8cc",null,!1,s["a"],void 0);e["default"]=n.exports},"225e":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uvIcon:i("08d8").default,uvLink:i("0596").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$s(0,"i",t.show)?i("view",{staticClass:t._$s(0,"sc","uv-text"),class:t._$s(0,"c",[]),style:t._$s(0,"s",{margin:t.margin,justifyContent:"left"===t.align?"flex-start":"center"===t.align?"center":"flex-end"}),attrs:{_i:0},on:{click:t.clickHandler}},[t._$s(1,"i","price"===t.mode)?i("text",{class:t._$s(1,"c",["uv-text__price",t.type&&"uv-text__value--"+t.type]),style:t._$s(1,"s",[t.valueStyle]),attrs:{_i:1}}):t._e(),t._$s(2,"i",t.prefixIcon)?i("view",{staticClass:t._$s(2,"sc","uv-text__prefix-icon"),attrs:{_i:2}},[i("uv-icon",{attrs:{name:t.prefixIcon,customStyle:t.$uv.addStyle(t.iconStyle),_i:3}})],1):t._e(),t._$s(4,"i","link"===t.mode)?i("uv-link",{attrs:{text:t.value,href:t.href,underLine:!0,_i:4}}):t._$s(5,"e",t.openType&&t.isMp)?[i("button",{staticClass:t._$s(6,"sc","uv-reset-button uv-text__value"),style:t._$s(6,"s",[t.valueStyle]),attrs:{openType:t._$s(6,"a-openType",t.openType),lang:t._$s(6,"a-lang",t.lang),"session-from":t._$s(6,"a-session-from",t.sessionFrom),"send-message-title":t._$s(6,"a-send-message-title",t.sendMessageTitle),"send-message-path":t._$s(6,"a-send-message-path",t.sendMessagePath),"send-message-img":t._$s(6,"a-send-message-img",t.sendMessageImg),"show-message-card":t._$s(6,"a-show-message-card",t.showMessageCard),"app-parameter":t._$s(6,"a-app-parameter",t.appParameter),_i:6},on:{getuserinfo:t.onGetUserInfo,contact:t.onContact,getphonenumber:t.onGetPhoneNumber,error:t.onError,launchapp:t.onLaunchApp,opensetting:t.onOpenSetting}},[t._v(t._$s(6,"t0-0",t._s(t.value)))])]:i("text",{staticClass:t._$s(7,"sc","uv-text__value"),class:t._$s(7,"c",[t.type&&"uv-text__value--"+t.type,t.lines&&"uv-line-"+t.lines]),style:t._$s(7,"s",[t.valueStyle]),attrs:{_i:7}},[t._v(t._$s(7,"t0-0",t._s(t.value)))]),t._$s(8,"i",t.suffixIcon)?i("view",{staticClass:t._$s(8,"sc","uv-text__suffix-icon"),attrs:{_i:8}},[i("uv-icon",{attrs:{name:t.suffixIcon,customStyle:t.$uv.addStyle(t.iconStyle),_i:9}})],1):t._e()],2):t._e()},r=[]},"227c":function(t,e,i){"use strict";i.r(e);var s=i("ec50"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},2320:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,uvCountDown:i("b054").default,agreeRadio:i("a6d8").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","pay-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u652f\u4ed8\u8ba2\u5355",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","amount-section"),attrs:{_i:2}},[i("image",{staticClass:t._$s(3,"sc","pay_icon"),attrs:{_i:3}}),i("view",{staticClass:t._$s(4,"sc","amount"),attrs:{_i:4}},[i("text",{staticClass:t._$s(5,"sc","symbol"),attrs:{_i:5}}),i("text",{staticClass:t._$s(6,"sc","value"),attrs:{_i:6}},[t._v(t._$s(6,"t0-0",t._s(t.orderInfo.pay_money)))])]),t._$s(7,"i",t.countdown)?i("view",{staticClass:t._$s(7,"sc","countdown"),attrs:{_i:7}},[i("uv-count-down",{attrs:{time:1e3*t.countdown,format:"mm:ss",_i:8},on:{finish:t.finish}})],1):t._e()]),i("view",{staticClass:t._$s(9,"sc","method-section"),attrs:{_i:9}},[i("view",{staticClass:t._$s(10,"sc","section-title"),attrs:{_i:10}}),i("view",{staticClass:t._$s(11,"sc","method-list"),attrs:{_i:11}},t._l(t._$s(12,"f",{forItems:t.methodList}),(function(e,s,a,r){return i("view",{key:t._$s(12,"f",{forIndex:a,key:s}),staticClass:t._$s("12-"+r,"sc","method-item"),attrs:{_i:"12-"+r},on:{click:function(i){return t.selectMethod(e)}}},[i("view",{staticClass:t._$s("13-"+r,"sc","method-info"),attrs:{_i:"13-"+r}},[i("image",{staticClass:t._$s("14-"+r,"sc","method-icon"),attrs:{src:t._$s("14-"+r,"a-src",e.icon),_i:"14-"+r}}),i("text",{staticClass:t._$s("15-"+r,"sc","method-name"),attrs:{_i:"15-"+r}},[t._v(t._$s("15-"+r,"t0-0",t._s(e.name)))])]),i("agree-radio",{attrs:{isAgree:e.selected,yesImg:"/static/images/icons/yes_icon.png",radioSize:"40rpx",noImg:"/static/images/icons/no_icon.png",_i:"16-"+r}})],1)})),0)]),i("view",{staticClass:t._$s(17,"sc","footer"),attrs:{_i:17}},[i("view",{staticClass:t._$s(18,"sc","pay-btn"),attrs:{_i:18},on:{click:t.confirmPay}})])],1)},r=[]},2372:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("127e")),n=s(i("7ca3")),o=s(i("34cf")),d=s(i("ee10")),l=s(i("16bb")),u=s(i("668a")),f=i("53d1");function _(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function p(t){for(var e=1;e0&&this.restoreServiceSkillsSelection(),this.formData.apply_state){this.messageMethodText=["\u670b\u53cb\u5708","\u6296\u97f3","\u5730\u63a8","\u670b\u53cb\u4ecb\u7ecd","\u5fae\u535a"][this.formData.apply_state-1]||""}if(this.formData.major){this.experienceText=["\u5b9e\u4e60","1-3\u5e74","3-5\u5e74","5-10\u5e74","10\u5e74\u4ee5\u4e0a"][this.formData.major-1]||""}}this.loadInviteStateFromLocal(),this.checkGlobalData(),this.formData.invite_code_other&&this.validateInviteCode(this.formData.invite_code_other)},onHide:function(){this.saveFormDataToLocal()}},(0,n.default)(r,"onUnload",(function(){this.saveFormDataToLocal()})),(0,n.default)(r,"methods",(a={loadInviteStateFromLocal:function(){try{var e=uni.getStorageSync("store_invite_state");e?(t("log","\u52a0\u8f7d\u9080\u8bf7\u7801\u9a8c\u8bc1\u72b6\u6001:",e," at pages/ruzhu/sj-info.vue:502"),this.inviterInfo=e.inviterInfo||null,this.inviteCodeError=e.inviteCodeError||!1,this.currentValidatingCode=e.currentValidatingCode||"","13131313"===this.formData.invite_code_other&&(t("log","\u68c0\u6d4b\u5230\u7279\u6b8a\u9080\u8bf7\u780113131313\uff0c\u91cd\u7f6e\u9a8c\u8bc1\u72b6\u6001"," at pages/ruzhu/sj-info.vue:511"),this.inviteCodeError=!1,this.inviterInfo=null,this.currentValidatingCode="13131313"),this.currentValidatingCode===this.formData.invite_code_other||this.formData.invite_code_other&&""!==this.formData.invite_code_other.trim()&&(t("log","\u9080\u8bf7\u7801\u4e0d\u4e00\u81f4\uff0c\u91cd\u65b0\u9a8c\u8bc1:",this.formData.invite_code_other," at pages/ruzhu/sj-info.vue:523"),this.handleInviteCodeInput({detail:{value:this.formData.invite_code_other}}))):this.resetInviteCodeState()}catch(i){t("log","\u52a0\u8f7d\u9080\u8bf7\u7801\u9a8c\u8bc1\u72b6\u6001\u5931\u8d25:",i," at pages/ruzhu/sj-info.vue:532"),this.resetInviteCodeState()}},resetInviteCodeState:function(){this.inviteCodeValidating=!1,this.inviteCodeError=!1,this.inviterInfo=null,this.currentValidatingCode="",this.shakeInviteError=!1},saveInviteStateToLocal:function(){try{var e={inviterInfo:this.inviterInfo,inviteCodeError:this.inviteCodeError,currentValidatingCode:this.currentValidatingCode||this.formData.invite_code_other||""};uni.setStorageSync("store_invite_state",e),t("log","\u9080\u8bf7\u7801\u9a8c\u8bc1\u72b6\u6001\u5df2\u4fdd\u5b58:",{hasInviterInfo:!!this.inviterInfo,inviteCodeError:this.inviteCodeError,currentValidatingCode:this.currentValidatingCode}," at pages/ruzhu/sj-info.vue:556")}catch(i){t("log","\u4fdd\u5b58\u9080\u8bf7\u7801\u9a8c\u8bc1\u72b6\u6001\u5931\u8d25:",i," at pages/ruzhu/sj-info.vue:562")}},triggerInviteErrorShake:function(){var e=this;this.shakeInviteError=!0,this.$nextTick((function(){var i=uni.createSelectorQuery().in(e);i.select(".invite-code-container").boundingClientRect((function(e){if(e){var i=uni.getSystemInfoSync().windowHeight,s=e.top/i,a=(e.top+e.height)/i;if(s>=0&&s<.7&&a<=1)return void t("log","\u9080\u8bf7\u7801\u5bb9\u5668\u5df2\u5728\u53ef\u89c6\u533a\u57df\u5185\uff0c\u4e0d\u9700\u8981\u6eda\u52a8"," at pages/ruzhu/sj-info.vue:588");uni.pageScrollTo({scrollTop:e.top-50,duration:300})}})).exec()})),setTimeout((function(){e.shakeInviteError=!1}),500)},handleInviteCodeInput:function(e){var i=this,s=e.detail?e.detail.value:this.formData.invite_code_other;if(t("log","\u9080\u8bf7\u7801\u8f93\u5165:",s," at pages/ruzhu/sj-info.vue:611"),this.inviteCodeValidating=!1,this.inviteCodeError=!1,this.inviterInfo=null,!s||""===s.trim())return this.formData.invite_code_other="",this.saveFormDataToLocalDebounce(),void this.saveInviteStateToLocal();if(this.formData.invite_code_other=s,this.saveFormDataToLocalDebounce(),"13131313"===s){t("log","\u68c0\u6d4b\u5230\u7279\u6b8a\u9080\u8bf7\u780113131313\uff0c\u7acb\u5373\u901a\u8fc7"," at pages/ruzhu/sj-info.vue:632"),this.inviteValidationTimer&&(clearTimeout(this.inviteValidationTimer),this.inviteValidationTimer=null),this.inviteCodeValidating=!1,this.inviteCodeError=!1,this.inviterInfo=null,this.currentValidatingCode=s;var a={inviterInfo:null,inviteCodeError:!1,currentValidatingCode:s};return uni.setStorageSync("store_invite_state",a),void this.$forceUpdate()}this.currentValidatingCode=s,this.saveInviteStateToLocal(),this.inviteValidationTimer&&(clearTimeout(this.inviteValidationTimer),this.inviteValidationTimer=null),this.inviteValidationTimer=setTimeout((function(){if(i.formData.invite_code_other===i.currentValidatingCode)if("13131313"!==i.formData.invite_code_other)t("log","\u5f00\u59cb\u9a8c\u8bc1\u9080\u8bf7\u7801:",i.formData.invite_code_other," at pages/ruzhu/sj-info.vue:696"),i.validateInviteCode(i.formData.invite_code_other),i.inviteValidationTimer=null;else{t("log","\u53cc\u91cd\u68c0\u67e5\uff1a\u68c0\u6d4b\u5230\u7279\u6b8a\u9080\u8bf7\u780113131313"," at pages/ruzhu/sj-info.vue:681"),i.inviteCodeValidating=!1,i.inviteCodeError=!1,i.inviterInfo=null,i.currentValidatingCode="13131313";uni.setStorageSync("store_invite_state",{inviterInfo:null,inviteCodeError:!1,currentValidatingCode:"13131313"})}else t("log","\u9080\u8bf7\u7801\u5df2\u53d8\u5316\uff0c\u53d6\u6d88\u9a8c\u8bc1"," at pages/ruzhu/sj-info.vue:675")}),600)},validateInviteCode:function(e){var i=this;return(0,d.default)(c.default.mark((function s(){var a,r,n,o,d;return c.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(t("log","\u5f00\u59cb\u9a8c\u8bc1\u9080\u8bf7\u7801:",e," at pages/ruzhu/sj-info.vue:706"),"13131313"!==e){s.next=11;break}return t("log","\u7279\u6b8a\u9080\u8bf7\u780113131313\uff0c\u76f4\u63a5\u901a\u8fc7"," at pages/ruzhu/sj-info.vue:710"),i.inviteCodeValidating=!1,i.inviteCodeError=!1,i.inviterInfo=null,i.currentValidatingCode=e,a={inviterInfo:null,inviteCodeError:!1,currentValidatingCode:e},uni.setStorageSync("store_invite_state",a),i.$forceUpdate(),s.abrupt("return");case 11:if(e&&""!==e.trim()){s.next=19;break}return i.inviteCodeValidating=!1,i.inviteCodeError=!1,i.inviterInfo=null,i.currentValidatingCode="",r={inviterInfo:null,inviteCodeError:!1,currentValidatingCode:""},uni.setStorageSync("store_invite_state",r),s.abrupt("return");case 19:return i.inviteCodeValidating=!0,i.inviteCodeError=!1,i.inviterInfo=null,i.currentValidatingCode=e,s.prev=23,s.next=26,l.default.post("/user/user/getInvite",{invite_code:e});case 26:n=s.sent,t("log","\u9080\u8bf7\u7801\u9a8c\u8bc1\u54cd\u5e94:",n," at pages/ruzhu/sj-info.vue:755"),i.inviteCodeValidating=!1,n&&200===n.code&&n.data?(o=n.data,o.account?(i.inviterInfo=o,i.inviteCodeError=!1,t("log","\u9080\u8bf7\u7801\u9a8c\u8bc1\u901a\u8fc7\uff0c\u9080\u8bf7\u4eba:",o," at pages/ruzhu/sj-info.vue:768")):(t("log","\u63a5\u53e3\u8fd4\u56de\u6570\u636e\u65e0\u6548\uff0c\u6ca1\u6709account\u5b57\u6bb5:",o," at pages/ruzhu/sj-info.vue:771"),i.inviterInfo=null,i.inviteCodeError=!0)):(t("log","\u63a5\u53e3\u8fd4\u56de\u9519\u8bef:",(null===n||void 0===n?void 0:n.msg)||"\u672a\u77e5\u9519\u8bef"," at pages/ruzhu/sj-info.vue:777"),i.inviterInfo=null,i.inviteCodeError=!0),s.next=38;break;case 32:s.prev=32,s.t0=s["catch"](23),t("error","\u9a8c\u8bc1\u9080\u8bf7\u7801\u5931\u8d25:",s.t0," at pages/ruzhu/sj-info.vue:782"),i.inviteCodeValidating=!1,i.inviteCodeError=!0,i.inviterInfo=null;case 38:return s.prev=38,d={inviterInfo:i.inviterInfo,inviteCodeError:i.inviteCodeError,currentValidatingCode:i.currentValidatingCode},uni.setStorageSync("store_invite_state",d),s.finish(38);case 42:case"end":return s.stop()}}),s,null,[[23,32,38,42]])})))()},loadFormDataFromLocal:function(){try{var e=uni.getStorageSync("store_info_form_data");if(e){t("log","\u4ece\u672c\u5730\u5b58\u50a8\u52a0\u8f7d\u95e8\u5e97\u6570\u636e:",e," at pages/ruzhu/sj-info.vue:803");var i=uni.getStorageSync("store_invite_state");return i&&(this.inviterInfo=i.inviterInfo,this.inviteCodeError=i.inviteCodeError||!1,this.currentValidatingCode=i.currentValidatingCode||"",t("log","\u52a0\u8f7d\u9080\u8bf7\u7801\u9a8c\u8bc1\u72b6\u6001:",i," at pages/ruzhu/sj-info.vue:811")),e}}catch(s){t("log","\u8bfb\u53d6\u95e8\u5e97\u6570\u636e\u5931\u8d25:",s," at pages/ruzhu/sj-info.vue:817")}return null},saveFormDataToLocal:function(){try{uni.setStorageSync("store_info_form_data",this.formData);var e={inviterInfo:this.inviterInfo,inviteCodeError:this.inviteCodeError,currentValidatingCode:this.currentValidatingCode};uni.setStorageSync("store_invite_state",e),t("log","\u95e8\u5e97\u6570\u636e\u5df2\u4fdd\u5b58\u5230\u672c\u5730\u5b58\u50a8"," at pages/ruzhu/sj-info.vue:834")}catch(i){t("log","\u4fdd\u5b58\u95e8\u5e97\u6570\u636e\u5931\u8d25:",i," at pages/ruzhu/sj-info.vue:836")}},saveFormDataToLocalDebounce:function(){var t=this;this._saveDebounce||(this._saveDebounce=(0,f.debounce)((function(){t.saveFormDataToLocal()}),500)),this._saveDebounce()},clearFormDataLocal:function(){try{uni.removeStorageSync("store_info_form_data"),t("log","\u5df2\u6e05\u7a7a\u95e8\u5e97\u6570\u636e"," at pages/ruzhu/sj-info.vue:855")}catch(e){t("log","\u6e05\u7a7a\u95e8\u5e97\u6570\u636e\u5931\u8d25:",e," at pages/ruzhu/sj-info.vue:857")}},updateSelectedServicesText:function(){var t=this;if(this.formData.servers_kill&&this.formData.servers_kill.length>0)if(this.serviceList.length>0){var e=this.serviceList.filter((function(e){return t.formData.servers_kill.includes(e.id)})).map((function(t){return t.checked=!0,t.title}));this.selectedServicesText=e.join("\u3001")}else this.selectedServicesText="\u5df2\u9009\u62e9".concat(this.formData.servers_kill.length,"\u9879");else this.selectedServicesText=""},setupAddressListener:function(){var t=this;this.addressListener=function(e){t.handleAddressSelected(e)},uni.$on("address-selected",this.addressListener)},checkAddressData:function(){try{var t=uni.getStorageSync("sj_selected_address");if(t)return this.handleAddressSelected(t),void uni.removeStorageSync("sj_selected_address")}catch(i){}getApp().globalData&&getApp().globalData.selectedAddress&&(this.handleAddressSelected(getApp().globalData.selectedAddress),delete getApp().globalData.selectedAddress);try{var e=uni.getStorageSync("selectedAddress");e&&(this.handleAddressSelected(e),uni.removeStorageSync("selectedAddress"))}catch(i){}},handleAddressSelected:function(t){if(t){var e="";if(t.name?e=t.name:t.address&&(e=t.address),e){if(this.formData.address=e,t.location){var i=t.location.split(","),s=(0,o.default)(i,2),a=s[0],r=s[1];this.formData.longitude=a||"",this.formData.latitude=r||""}if(t.pname||t.cityname||t.adname){var c=[];t.pname&&c.push(t.pname),t.cityname&&c.push(t.cityname),t.adname&&c.push(t.adname),this.formData.dependency=c.join("-")}this.saveFormDataToLocal(),this.$forceUpdate()}}},checkGlobalData:function(){getApp().globalData.storeInfoData&&(Object.assign(this.formData,getApp().globalData.storeInfoData),this.saveFormDataToLocal(),getApp().globalData.qualificationData=null)}},(0,n.default)(a,"updateSelectedServicesText",(function(){var t=this;if(this.formData.servers_kill&&this.formData.servers_kill.length>0&&this.serviceList.length>0){var e=this.serviceList.filter((function(e){return t.formData.servers_kill.includes(e.id)})).map((function(t){return t.checked=!0,t.title}));this.selectedServicesText=e.join("\u3001")}})),(0,n.default)(a,"getUserInfo",(function(){var t=this;l.default.post("/sj/User/getUser").then((function(e){t.userId=e.data.id}))})),(0,n.default)(a,"getFormData",(function(){return this.formData})),(0,n.default)(a,"preloadTipImages",(function(){var e=this,i=[this.tipPopupBg,"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/98ad5649-db6d-4453-a308-c592fe155ed9","https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/4a2dc8c2-98d4-4465-ae31-b2ea2d13aa23"];t("log","\u5f00\u59cb\u9884\u52a0\u8f7d\u63d0\u793a\u5f39\u7a97\u56fe\u7247..."," at pages/ruzhu/sj-info.vue:997");var s=i.map((function(t){return e.loadImage(t)}));Promise.all(s).then((function(){t("log","\u6240\u6709\u63d0\u793a\u5f39\u7a97\u56fe\u7247\u9884\u52a0\u8f7d\u5b8c\u6210"," at pages/ruzhu/sj-info.vue:1004"),e.tipImagesPreloaded=!0})).catch((function(i){t("warn","\u90e8\u5206\u56fe\u7247\u9884\u52a0\u8f7d\u5931\u8d25:",i," at pages/ruzhu/sj-info.vue:1008"),e.tipImagesPreloaded=!0}))})),(0,n.default)(a,"loadImage",(function(e){return new Promise((function(i,s){var a=new Image;a.onload=function(){t("log","\u56fe\u7247\u52a0\u8f7d\u6210\u529f:",e," at pages/ruzhu/sj-info.vue:1019"),i()},a.onerror=function(){t("warn","\u56fe\u7247\u52a0\u8f7d\u5931\u8d25:",e," at pages/ruzhu/sj-info.vue:1023"),s(new Error("\u56fe\u7247\u52a0\u8f7d\u5931\u8d25: ".concat(e)))},a.src=e}))})),(0,n.default)(a,"showTipPopup",(function(e){var i=this,s={head_photo:{title:"\u5982\u4f55\u67e5\u770b\u5e97\u94falogo",image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/98ad5649-db6d-4453-a308-c592fe155ed9"},name:{title:"\u5982\u4f55\u67e5\u770b\u5e97\u94fa\u540d\u79f0",image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/4a2dc8c2-98d4-4465-ae31-b2ea2d13aa23"}};s[e]&&(this.currentTipType=e,this.tipTitle=s[e].title,this.tipImage=s[e].image,this.tipImagesPreloaded?this.showTipPopupFlag=!0:(t("log","\u56fe\u7247\u8fd8\u672a\u9884\u52a0\u8f7d\u5b8c\u6210\uff0c\u7acb\u5373\u52a0\u8f7d\u5f53\u524d\u56fe\u7247"," at pages/ruzhu/sj-info.vue:1052"),this.loadImage(this.tipImage).then((function(){i.showTipPopupFlag=!0})).catch((function(){i.showTipPopupFlag=!0}))))})),(0,n.default)(a,"hideTipPopup",(function(){this.showTipPopupFlag=!1})),(0,n.default)(a,"loadServiceSkills",(function(){var e=this;return(0,d.default)(c.default.mark((function i(){var s;return c.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,l.default.post("/sj/firstclass");case 3:s=i.sent,e.serviceList=s.data.map((function(t){return p(p({},t),{},{checked:!1})})),e.restoreServiceSkillsSelection(),e.updateSelectedServicesText(),i.next=12;break;case 9:i.prev=9,i.t0=i["catch"](0),t("error","\u52a0\u8f7d\u670d\u52a1\u6280\u80fd\u5931\u8d25:",i.t0," at pages/ruzhu/sj-info.vue:1081");case 12:case"end":return i.stop()}}),i,null,[[0,9]])})))()})),(0,n.default)(a,"restoreServiceSkillsSelection",(function(){var t=this;this.formData.servers_kill&&this.formData.servers_kill.length>0&&(this.serviceList.forEach((function(e){e.checked=t.formData.servers_kill.includes(e.id)})),this.updateSelectedServicesText())})),(0,n.default)(a,"chooseImage",(function(t){this.openCamera(t)})),(0,n.default)(a,"openCamera",(function(e){var i=this;return(0,d.default)(c.default.mark((function s(){var a,r,n,o;return c.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return s.prev=0,s.next=3,new Promise((function(t,e){uni.chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:t,fail:e})}));case 3:if(a=s.sent,a.tempFilePaths&&0!==a.tempFilePaths.length){s.next=6;break}return s.abrupt("return");case 6:return r=a.tempFilePaths[0],n={path:r,size:0},s.next=10,i.directUpload(n,i.userId,i.identity+1);case 10:o=s.sent,o&&(i.formData[e]=o,i.saveFormDataToLocal()),s.next=17;break;case 14:s.prev=14,s.t0=s["catch"](0),t("log","\u4e0a\u4f20\u56fe\u7247\u9519\u8bef:",s.t0," at pages/ruzhu/sj-info.vue:1125");case 17:case"end":return s.stop()}}),s,null,[[0,14]])})))()})),(0,n.default)(a,"directUpload",(function(e,i,s){return(0,d.default)(c.default.mark((function a(){var r,n,o,d,u,f,_;return c.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:return a.prev=0,r=(new Date).getTime(),n=1==s?"yh":2==s?"syr":3==s?"sj":"",o="jpg",e.path.includes(".")&&(d=e.path.split("."),u=d[d.length-1].toLowerCase(),u&&u.length<=4&&(o=u)),f="".concat(i,"_").concat(n,"_").concat(r,".").concat(o),a.next=8,l.default.post("/user/getalioss",{type:s,kind:1});case 8:return _=a.sent,a.next=11,new Promise((function(t,i){uni.uploadFile({url:_.host,filePath:e.path,name:"file",formData:{key:_.dir+f,policy:_.policy,OSSAccessKeyId:_.ossAccessKeyId,success_action_status:"200",signature:_.signature},success:function(e){if(200===e.statusCode){var s="".concat(_.host,"/").concat(_.dir).concat(f);t(s)}else i(new Error("\u4e0a\u4f20\u5931\u8d25"))},fail:i})}));case 11:return a.abrupt("return",a.sent);case 14:throw a.prev=14,a.t0=a["catch"](0),t("error","\u76f4\u63a5\u4e0a\u4f20\u5931\u8d25:",a.t0," at pages/ruzhu/sj-info.vue:1171"),a.t0;case 18:case"end":return a.stop()}}),a,null,[[0,14]])})))()})),(0,n.default)(a,"openTimePicker",(function(){this.showTimePicker=!0})),(0,n.default)(a,"hideTimePopup",(function(){this.showTimePicker=!1})),(0,n.default)(a,"switchTimeType",(function(t){this.timeType=t})),(0,n.default)(a,"handleTimeChange",(function(t){var e=t.detail.value;this.pickerValue=e})),(0,n.default)(a,"formatTime",(function(t){return"".concat(t.hour,":").concat(t.minute)})),(0,n.default)(a,"confirmTime",(function(){this.formData.business_time="".concat(this.formatTime(this.startTime),"-").concat(this.formatTime(this.endTime)),this.saveFormDataToLocal(),this.hideTimePopup()})),(0,n.default)(a,"showServicePopup",(function(){this.showServicePopupFlag=!0})),(0,n.default)(a,"hideServicePopup",(function(){this.showServicePopupFlag=!1})),(0,n.default)(a,"toggleServiceSelect",(function(t){this.$set(this.serviceList[t],"checked",!this.serviceList[t].checked)})),(0,n.default)(a,"confirmServiceSelect",(function(){var t=this.serviceList.filter((function(t){return t.checked})).map((function(t){return t.title})),e=this.serviceList.filter((function(t){return t.checked})).map((function(t){return t.id}));0!==t.length?(this.formData.servers_kill=e,this.selectedServicesText=t.join("\u3001"),this.saveFormDataToLocal(),this.hideServicePopup()):uni.showToast({title:"\u8bf7\u81f3\u5c11\u9009\u62e9\u4e00\u4e2a\u670d\u52a1\u6280\u80fd",icon:"none"})})),(0,n.default)(a,"showLocationPopup",(function(){this.showLocationPopupFlag=!0})),(0,n.default)(a,"hideLocationPopup",(function(){this.showLocationPopupFlag=!1})),(0,n.default)(a,"bindChangeLocation",(function(t){this.locationValue=t.detail.value;var e=t.detail.value[0]||0,i=t.detail.value[1]||0;this.locatinCitys=this.ChinaCitys[e].citys,this.locationAreas=this.locatinCitys[i].areas})),(0,n.default)(a,"confirmLocationSelect",(function(){var t=this.locationValue,e=t[0]||0,i=t[1]||0,s=t[2]||0,a=this.ChinaCitys[e].province,r=this.locatinCitys[i].city,c=this.locationAreas[s].area;if(this.formData.dependency=a+"-"+r+"-"+c,this.formData.address="",this.formData.longitude="",this.formData.latitude="",this.ChinaCitys[e]&&this.ChinaCitys[e].code){var n=this.ChinaCitys[e].code.toString();this.formData.dependency_province=n.substring(0,6)}if(this.locatinCitys[i]&&this.locatinCitys[i].code){var o=this.locatinCitys[i].code.toString();this.formData.dependency_city=o.substring(0,6)}if(this.locationAreas[s]&&this.locationAreas[s].code){var d=this.locationAreas[s].code.toString();this.formData.dependency_code=d.substring(0,6)}this.saveFormDataToLocal(),this.hideLocationPopup()})),(0,n.default)(a,"getAddressInfo",(function(){this.saveFormDataToLocal();var e="source=sj_info";if(this.formData.dependency){var i=encodeURIComponent(this.formData.dependency);e+="&dependency=".concat(i),this.formData.dependency_code&&(e+="&dependency_code=".concat(this.formData.dependency_code)),t("log","\u4f20\u9012\u7684\u5730\u533a\u4fe1\u606f:",this.formData.dependency," at pages/ruzhu/sj-info.vue:1313"),t("log","\u7f16\u7801\u540e\u7684\u5730\u533a\u4fe1\u606f:",i," at pages/ruzhu/sj-info.vue:1314")}this.formData.longitude&&this.formData.latitude&&(e+="&longitude=".concat(this.formData.longitude,"&latitude=").concat(this.formData.latitude)),t("log","\u8df3\u8f6cURL\u53c2\u6570:",e," at pages/ruzhu/sj-info.vue:1322"),uni.navigateTo({url:"/pages/address/search?".concat(e)})})),(0,n.default)(a,"openMessageMethodPicker",(function(){var t=this;uni.showActionSheet({itemList:["\u670b\u53cb\u5708","\u6296\u97f3","\u5730\u63a8","\u670b\u53cb\u4ecb\u7ecd","\u5fae\u535a"],success:function(e){t.formData.apply_state=e.tapIndex+1,t.messageMethodText=["\u670b\u53cb\u5708","\u6296\u97f3","\u5730\u63a8","\u670b\u53cb\u4ecb\u7ecd","\u5fae\u535a"][e.tapIndex],t.saveFormDataToLocal()}})})),(0,n.default)(a,"openExperiencePicker",(function(){var t=this;uni.showActionSheet({itemList:["\u5b9e\u4e60","1-3\u5e74","3-5\u5e74","5-10\u5e74","10\u5e74\u4ee5\u4e0a"],success:function(e){t.formData.major=e.tapIndex+1,t.experienceText=["\u5b9e\u4e60","1-3\u5e74","3-5\u5e74","5-10\u5e74","10\u5e74\u4ee5\u4e0a"][e.tapIndex],t.saveFormDataToLocal()}})})),(0,n.default)(a,"saveFormData",(function(){if(!this.formData.head_photo)return uni.showToast({title:"\u8bf7\u4e0a\u4f20\u5e97\u94falogo",icon:"none"}),!1;if(!this.formData.name)return uni.showToast({title:"\u8bf7\u8f93\u5165\u5e97\u94fa\u540d\u79f0",icon:"none"}),!1;if(!this.formData.business_time)return uni.showToast({title:"\u8bf7\u9009\u62e9\u8425\u4e1a\u65f6\u95f4",icon:"none"}),!1;if(0===this.formData.servers_kill.length)return uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u6280\u80fd",icon:"none"}),!1;if(!this.formData.dependency)return uni.showToast({title:"\u8bf7\u9009\u62e9\u95e8\u5e97\u6240\u5728\u5730",icon:"none"}),!1;if(!this.formData.address)return uni.showToast({title:"\u8bf7\u9009\u62e9\u95e8\u5e97\u8be6\u7ec6\u5730\u5740",icon:"none"}),!1;if(!this.formData.invite_code_other)return uni.showToast({title:"\u8bf7\u8f93\u5165\u9080\u8bf7\u7801",icon:"none"}),!1;if(this.inviteCodeValidating)return uni.showToast({title:"\u9080\u8bf7\u7801\u9a8c\u8bc1\u4e2d\uff0c\u8bf7\u7a0d\u5019",icon:"none"}),!1;if("13131313"===this.formData.invite_code_other);else if(this.inviteCodeError||!this.inviterInfo)return this.triggerInviteErrorShake(),!1;return this.formData.major?(getApp().globalData.storeInfoData=this.formData,!0):(uni.showToast({title:"\u8bf7\u9009\u62e9\u4e13\u4e1a\u7ecf\u9a8c",icon:"none"}),!1)})),a)),r);e.default=v}).call(this,i("f3b9")["default"])},"237f":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n={data:function(){return{syrid:"",userInfo:{},bindsyr:{},syrInfo:{qualifications:[],health_card:""}}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return t.syrid&&(e.syrid=Number(t.syrid)),3,i.next=4,c.default.post("/user/getuser",{type:3});case 4:s=i.sent,e.userInfo=s.data,e.getbindsyr();case 7:case"end":return i.stop()}}),i)})))()},methods:{goServiceList:function(){uni.navigateTo({url:"/pages/shop/staff/serviceList?syrid=".concat(this.syrid,"&isBack=1")})},goBack:function(){uni.navigateBack()},handlePreview:function(t){uni.previewImage({current:0,urls:[t]})},getbindsyr:function(){var t=this,e={sjid:this.userInfo.id,syrid:this.syrid};c.default.post("/sj/getbindsyr",e).then((function(e){200==e.code&&(t.bindsyr=e.data,t.syrInfo=e.data.syr)}))}}};e.default=n},"23d8":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={data:function(){return{}},watch:{value:{immediate:!0,handler:function(t){var e=this;t&&this.$nextTick((function(){e.$refs.popup.open("bottom")}))}}},props:{value:{type:Boolean,default:!1},cashObj:{type:Object,default:function(){return{}}}},methods:{popChange:function(t){this.$emit("input",t.show)},getTabName:function(t){return 1==t||2==t?"\u5ba1\u6838\u4e2d":3==t?"\u5df2\u6253\u6b3e":"\u5df2\u9a73\u56de"},close:function(){this.$refs.popup.close()}}};e.default=s},2407:function(t,e,i){"use strict";i.r(e);var s=i("70ba"),a=i("01d1");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"7d3f3197",null,!1,s["a"],void 0);e["default"]=n.exports},2408:function(t,e,i){"use strict";i.r(e);var s=i("1f6e"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"240a":function(t,e,i){"use strict";i.r(e);var s=i("5f7d"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"24da":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,uvRadioGroup:i("2137").default,uvRadio:i("b3e7").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","add-group-buying"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:t.title,backgroundColor:"#FFFFFF",_i:1}}),t._$s(2,"i",t.tip&&t.formData.id)?i("view",{staticClass:t._$s(2,"sc","tip"),attrs:{_i:2}},[i("image",{staticClass:t._$s(3,"sc","tip-icon"),attrs:{_i:3}}),i("text",[t._v(t._$s(4,"t0-0",t._s(t.tip)))])]):t._e(),i("view",{staticClass:t._$s(5,"sc","add-service"),class:t._$s(5,"c",{tipTop:t.tip}),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","form-item-up"),attrs:{_i:6}},[i("text",{staticClass:t._$s(7,"sc","form-label"),attrs:{_i:7}}),i("view",{staticClass:t._$s(8,"sc","form-input-box"),attrs:{_i:8}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.title,expression:"formData.title"}],staticClass:t._$s(9,"sc","form-input"),attrs:{disabled:t._$s(9,"a-disabled",t.disabled),_i:9},domProps:{value:t._$s(9,"v-model",t.formData.title)},on:{input:function(e){e.target.composing||t.$set(t.formData,"title",e.target.value)}}})])]),i("view",{staticClass:t._$s(10,"sc","form-item-up flex-wrap__warp"),attrs:{_i:10}},[i("text",{staticClass:t._$s(11,"sc","form-label"),attrs:{_i:11}}),i("view",{staticClass:t._$s(12,"sc","form-input-card"),attrs:{_i:12}},[i("selectActiveTime",{attrs:{disabled:t.disabled,_i:13},model:{value:t._$s(13,"v-model",t.tiemValue),callback:function(e){t.tiemValue=e},expression:"tiemValue"}})],1)]),i("view",{staticClass:t._$s(14,"sc","form-item-up"),attrs:{_i:14}},[i("text",{staticClass:t._$s(15,"sc","form-label"),attrs:{_i:15}}),i("view",{staticClass:t._$s(16,"sc","form-input-box box-width-190"),attrs:{_i:16}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.person_num,expression:"formData.person_num"}],staticClass:t._$s(17,"sc","form-input"),attrs:{disabled:t._$s(17,"a-disabled",t.disabled),_i:17},domProps:{value:t._$s(17,"v-model",t.formData.person_num)},on:{input:function(e){e.target.composing||t.$set(t.formData,"person_num",e.target.value)}}})]),i("text",{staticClass:t._$s(18,"sc","redTip"),attrs:{_i:18}})]),i("view",{staticClass:t._$s(19,"sc","form-item-up"),attrs:{_i:19}},[i("text",{staticClass:t._$s(20,"sc","form-label"),attrs:{_i:20}}),i("view",{staticClass:t._$s(21,"sc","form-input-box box-width-190"),attrs:{_i:21}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.team_num,expression:"formData.team_num"}],staticClass:t._$s(22,"sc","form-input"),attrs:{disabled:t._$s(22,"a-disabled",t.disabled),_i:22},domProps:{value:t._$s(22,"v-model",t.formData.team_num)},on:{input:function(e){e.target.composing||t.$set(t.formData,"team_num",e.target.value)}}})]),i("text",{staticClass:t._$s(23,"sc","redTip"),attrs:{_i:23}})]),t._$s(24,"i",!t.disabled)?i("view",{staticClass:t._$s(24,"sc","form-item-up"),attrs:{_i:24},on:{click:t.selectServe}},[i("text",{staticClass:t._$s(25,"sc","form-label"),attrs:{_i:25}}),i("view",{staticClass:t._$s(26,"sc","form-input-select"),attrs:{_i:26}},[i("text",[t._v(t._$s(27,"t0-0",t._s(t.serveDetail.title?t.serveDetail.title:"\u9009\u62e9\u670d\u52a1")))]),i("image",{staticClass:t._$s(28,"sc","form-input-select__img"),attrs:{_i:28}})])]):t._e(),t._$s(29,"i",t.serveDetail.id)?i("view",{staticClass:t._$s(29,"sc","form-item-up"),attrs:{_i:29}},[i("serveCard",{attrs:{info:t.serveDetail,showRadio:!1,_i:30}})],1):t._e(),t._$s(31,"i",t.serveDetail.id)?i("view",{staticClass:t._$s(31,"sc","form-item-up"),attrs:{_i:31}},[i("text",{staticClass:t._$s(32,"sc","form-label"),attrs:{_i:32}}),i("view",{staticClass:t._$s(33,"sc","form-input-box box-width-190"),attrs:{_i:33}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.price,expression:"formData.price"}],staticClass:t._$s(34,"sc","form-input"),attrs:{disabled:t._$s(34,"a-disabled",t.disabled),_i:34},domProps:{value:t._$s(34,"v-model",t.formData.price)},on:{input:function(e){e.target.composing||t.$set(t.formData,"price",e.target.value)}}})])]):t._e(),i("view",{staticClass:t._$s(35,"sc","form-item-up"),attrs:{_i:35}},[i("text",{staticClass:t._$s(36,"sc","form-label"),attrs:{_i:36}}),i("view",{staticClass:t._$s(37,"sc","form-radio-box"),attrs:{_i:37}},[i("uv-radio-group",{attrs:{placement:"row",labelColor:"#333333",labelSize:"28rpx",disabled:t.disabled,_i:38},model:{value:t._$s(38,"v-model",t.formData.quota_type),callback:function(e){t.$set(t.formData,"quota_type",e)},expression:"formData.quota_type"}},[i("uv-radio",{attrs:{name:1,activeColor:"#E8101E",label:"\u9650\u8d2d",_i:39},scopedSlots:t._u([{key:"icon",fn:function(e,s,a){return[i("image",{directives:[{name:"show",rawName:"v-show",value:s._$s("41-"+a,"v-show",1==t.formData.quota_type),expression:"_svm._$s((\"41-\"+_si),'v-show',formData.quota_type==1)"}],staticClass:s._$s("41-"+a,"sc","radioYes"),attrs:{src:"/static/images/shop/pintuan/yes.png",_i:"41-"+a}})]}}])}),i("uv-radio",{attrs:{name:2,activeColor:"#E8101E",label:"\u4e0d\u9650\u8d2d",_i:42},on:{change:function(e){t.formData.person_quota=null}},scopedSlots:t._u([{key:"icon",fn:function(e,s,a){return[i("image",{directives:[{name:"show",rawName:"v-show",value:s._$s("44-"+a,"v-show",2==t.formData.quota_type),expression:"_svm._$s((\"44-\"+_si),'v-show',formData.quota_type==2)"}],staticClass:s._$s("44-"+a,"sc","radioYes"),attrs:{src:"/static/images/shop/pintuan/yes.png",_i:"44-"+a}})]}}])})],1)],1)]),i("view",{staticClass:t._$s(45,"sc","form-item-up"),attrs:{_i:45}},[i("text",{staticClass:t._$s(46,"sc","form-label"),attrs:{_i:46}}),i("view",{staticClass:t._$s(47,"sc","form-input-box box-width-190"),attrs:{_i:47}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.person_quota,expression:"formData.person_quota"}],staticClass:t._$s(48,"sc","form-input"),attrs:{disabled:t._$s(48,"a-disabled",t.disabled||2==t.formData.quota_type&&null==t.formData.person_quota),_i:48},domProps:{value:t._$s(48,"v-model",t.formData.person_quota)},on:{input:function(e){e.target.composing||t.$set(t.formData,"person_quota",e.target.value)}}})])]),i("view",{staticClass:t._$s(49,"sc","form-item-up"),attrs:{_i:49}},[i("text",{staticClass:t._$s(50,"sc","form-label"),attrs:{_i:50}}),i("view",{staticClass:t._$s(51,"sc","form-radio-box2"),attrs:{_i:51}},[i("uv-radio-group",{attrs:{placement:"row",labelColor:"#333333",labelSize:"28rpx",disabled:t.disabled,_i:52},model:{value:t._$s(52,"v-model",t.formData.time_quota),callback:function(e){t.$set(t.formData,"time_quota",e)},expression:"formData.time_quota"}},[i("uv-radio",{attrs:{name:12,activeColor:"#E8101E",label:"12\u5c0f\u65f6",_i:53},scopedSlots:t._u([{key:"icon",fn:function(e,s,a){return[i("image",{directives:[{name:"show",rawName:"v-show",value:s._$s("55-"+a,"v-show",12==t.formData.time_quota),expression:"_svm._$s((\"55-\"+_si),'v-show',formData.time_quota==12)"}],staticClass:s._$s("55-"+a,"sc","radioYes"),attrs:{src:"/static/images/shop/pintuan/yes.png",_i:"55-"+a}})]}}])}),i("uv-radio",{attrs:{name:24,activeColor:"#E8101E",label:"24\u5c0f\u65f6",_i:56},scopedSlots:t._u([{key:"icon",fn:function(e,s,a){return[i("image",{directives:[{name:"show",rawName:"v-show",value:s._$s("58-"+a,"v-show",24==t.formData.time_quota),expression:"_svm._$s((\"58-\"+_si),'v-show',formData.time_quota==24)"}],staticClass:s._$s("58-"+a,"sc","radioYes"),attrs:{src:"/static/images/shop/pintuan/yes.png",_i:"58-"+a}})]}}])}),i("uv-radio",{attrs:{name:48,activeColor:"#E8101E",label:"48\u5c0f\u65f6",_i:59},scopedSlots:t._u([{key:"icon",fn:function(e,s,a){return[i("image",{directives:[{name:"show",rawName:"v-show",value:s._$s("61-"+a,"v-show",48==t.formData.time_quota),expression:"_svm._$s((\"61-\"+_si),'v-show',formData.time_quota==48)"}],staticClass:s._$s("61-"+a,"sc","radioYes"),attrs:{src:"/static/images/shop/pintuan/yes.png",_i:"61-"+a}})]}}])})],1)],1),i("view",{staticClass:t._$s(62,"sc","blackTip"),attrs:{_i:62}})])]),t._$s(63,"i",!t.disabled)?i("view",{staticClass:t._$s(63,"sc","select-serve-footer"),attrs:{_i:63}},[i("view",{staticClass:t._$s(64,"sc","select-serve-footer__btn"),attrs:{_i:64},on:{click:t.submit}})]):t._e()],1)},r=[]},2537:function(t,e,i){"use strict";i.r(e),i.d(e,"EVENT",(function(){return _})),i.d(e,"disablePostNotificationInForeground",(function(){return p})),i.d(e,"registerPush",(function(){return v})),i.d(e,"unRegisterPush",(function(){return h})),i.d(e,"setRegistrationID",(function(){return m})),i.d(e,"getRegistrationID",(function(){return g})),i.d(e,"createNotificationChannel",(function(){return y})),i.d(e,"getNotificationExtInfo",(function(){return b})),i.d(e,"addPushListener",(function(){return w})),i.d(e,"removePushListener",(function(){return $}));const{registerUTSInterface:s,initUTSProxyClass:a,initUTSProxyFunction:r,initUTSPackageName:c,initUTSIndexClassName:n,initUTSClassName:o}=uni,d="TencentCloudPush",l="\u3010\u5b98\u65b9\u3011uni-app \u817e\u8baf\u4e91\u63a8\u9001\u670d\u52a1\uff08Push\uff09",u=c(d,!0),f=n(d,!0),_=a(Object.assign({moduleName:l,moduleType:"",errMsg:"",package:u,class:o(d,"EVENTByJs",!0)},{constructor:{params:[]},methods:{},staticMethods:{},props:[],staticProps:["MESSAGE_RECEIVED","MESSAGE_REVOKED","NOTIFICATION_CLICKED"],setters:{},staticSetters:{MESSAGE_RECEIVED:{name:"MESSAGE_RECEIVED",type:"string"},MESSAGE_REVOKED:{name:"MESSAGE_REVOKED",type:"string"},NOTIFICATION_CLICKED:{name:"NOTIFICATION_CLICKED",type:"string"}}})),p=r(!1,{moduleName:l,moduleType:"",errMsg:"",main:!0,package:u,class:f,name:"disablePostNotificationInForegroundByJs",keepAlive:!1,params:[{name:"_disable",type:"boolean"}],return:""}),v=r(!1,{moduleName:l,moduleType:"",errMsg:"",main:!0,package:u,class:f,name:"registerPushByJs",keepAlive:!1,params:[{name:"SDKAppID",type:"number"},{name:"appKey",type:"string"},{name:"onSuccess",type:"UTSCallback"},{name:"onError",type:"UTSCallback"}],return:""}),h=r(!1,{moduleName:l,moduleType:"",errMsg:"",main:!0,package:u,class:f,name:"unRegisterPushByJs",keepAlive:!1,params:[{name:"onSuccess",type:"UTSCallback"},{name:"onError",type:"UTSCallback"}],return:""}),m=r(!1,{moduleName:l,moduleType:"",errMsg:"",main:!0,package:u,class:f,name:"setRegistrationIDByJs",keepAlive:!1,params:[{name:"registrationID",type:"string"},{name:"onSuccess",type:"UTSCallback"}],return:""}),g=r(!1,{moduleName:l,moduleType:"",errMsg:"",main:!0,package:u,class:f,name:"getRegistrationIDByJs",keepAlive:!1,params:[{name:"onSuccess",type:"UTSCallback"}],return:""}),y=r(!1,{moduleName:l,moduleType:"",errMsg:"",main:!0,package:u,class:f,name:"createNotificationChannelByJs",keepAlive:!1,params:[{name:"options",type:"any"},{name:"onSuccess",type:"UTSCallback"}],return:""}),b=r(!1,{moduleName:l,moduleType:"",errMsg:"",main:!0,package:u,class:f,name:"getNotificationExtInfoByJs",keepAlive:!1,params:[{name:"onSuccess",type:"UTSCallback"}],return:""}),w=r(!1,{moduleName:l,moduleType:"",errMsg:"",main:!0,package:u,class:f,name:"addPushListenerByJs",keepAlive:!0,params:[{name:"eventName",type:"string"},{name:"_listener",type:"UTSCallback"}],return:""}),$=r(!1,{moduleName:l,moduleType:"",errMsg:"",main:!0,package:u,class:f,name:"removePushListenerByJs",keepAlive:!1,params:[{name:"eventName",type:"string"},{name:"_listener",type:"UTSCallback"}],return:""})},2546:function(t,e,i){"use strict";i.r(e);var s=i("a8a2"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"254b":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this.$createElement,e=this._self._c||t;return e("view",{staticClass:this._$s(0,"sc","uv-radio-group"),class:this._$s(0,"c",this.bemClass),style:this._$s(0,"s",[this.$uv.addStyle(this.customStyle)]),attrs:{_i:0}},[this._t("default",null,{_i:1})],2)},a=[]},"255a":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","store-info-page"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","section-title"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","title-bar"),attrs:{_i:2}}),i("text")]),i("view",{staticClass:t._$s(4,"sc","form-item box-cont"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","label-wrapper"),attrs:{_i:5}},[i("text",{staticClass:t._$s(6,"sc","label required"),attrs:{_i:6}}),i("image",{staticClass:t._$s(7,"sc","label-icon"),attrs:{_i:7},on:{click:function(e){return t.showTipPopup("head_photo")}}})]),i("view",{staticClass:t._$s(8,"sc","upload-box"),attrs:{_i:8},on:{click:function(e){return t.chooseImage("head_photo")}}},[t._$s(9,"i",t.formData.head_photo)?i("image",{staticClass:t._$s(9,"sc","logo-image"),attrs:{src:t._$s(9,"a-src",t.formData.head_photo),_i:9}}):i("view",{staticClass:t._$s(10,"sc","upload-placeholder"),attrs:{_i:10}},[i("image",{staticClass:t._$s(11,"sc","upload-icon"),attrs:{_i:11}})])])]),i("view",{staticClass:t._$s(12,"sc","form-item-one box-cont"),attrs:{_i:12}},[i("view",{staticClass:t._$s(13,"sc","label-wrapper"),attrs:{_i:13}},[i("text",{staticClass:t._$s(14,"sc","label required"),attrs:{_i:14}}),i("image",{staticClass:t._$s(15,"sc","label-icon"),attrs:{_i:15},on:{click:function(e){return t.showTipPopup("name")}}})]),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.name,expression:"formData.name"}],staticClass:t._$s(16,"sc","input"),attrs:{_i:16},domProps:{value:t._$s(16,"v-model",t.formData.name)},on:{input:[function(e){e.target.composing||t.$set(t.formData,"name",e.target.value)},t.saveFormDataToLocalDebounce]}})]),i("view",{staticClass:t._$s(17,"sc","form-item-two box-cont"),attrs:{_i:17},on:{click:t.openTimePicker}},[i("text",{staticClass:t._$s(18,"sc","label required"),attrs:{_i:18}}),i("view",{staticClass:t._$s(19,"sc","picker-content"),attrs:{_i:19}},[i("text",{class:t._$s(20,"c",t.formData.business_time?"picker-value":"placeholder"),attrs:{_i:20}},[t._v(t._$s(20,"t0-0",t._s(t.formData.business_time||"\u8bf7\u8f93\u5165\u8425\u4e1a\u65f6\u95f4")))]),i("image",{staticClass:t._$s(21,"sc","arrow-right"),attrs:{_i:21}})])]),i("view",{staticClass:t._$s(22,"sc","form-item-two box-cont"),attrs:{_i:22},on:{click:t.showServicePopup}},[i("text",{staticClass:t._$s(23,"sc","label required"),attrs:{_i:23}}),i("view",{staticClass:t._$s(24,"sc","picker-content"),attrs:{_i:24}},[t._$s(25,"i",t.formData.servers_kill)?i("text",{class:t._$s(25,"c",t.formData.servers_kill.length>0?"picker-value":"placeholder"),attrs:{_i:25}},[t._v(t._$s(25,"t0-0",t._s(t.selectedServicesText||"\u8bf7\u9009\u62e9")))]):t._e(),i("image",{staticClass:t._$s(26,"sc","arrow-right"),attrs:{_i:26}})])]),i("view",{staticClass:t._$s(27,"sc","form-item-two box-cont"),attrs:{_i:27},on:{click:t.showLocationPopup}},[i("text",{staticClass:t._$s(28,"sc","label required"),attrs:{_i:28}}),i("view",{staticClass:t._$s(29,"sc","picker-content"),attrs:{_i:29}},[i("text",{class:t._$s(30,"c",t.formData.dependency?"picker-value":"placeholder"),attrs:{_i:30}},[t._v(t._$s(30,"t0-0",t._s(t.formData.dependency||"\u8bf7\u9009\u62e9")))]),i("image",{staticClass:t._$s(31,"sc","arrow-right"),attrs:{_i:31}})])]),i("view",{staticClass:t._$s(32,"sc","form-item-two box-cont"),attrs:{_i:32},on:{click:t.getAddressInfo}},[i("text",{staticClass:t._$s(33,"sc","label required"),attrs:{_i:33}}),i("view",{staticClass:t._$s(34,"sc","picker-content"),attrs:{_i:34}},[i("text",{class:t._$s(35,"c",t.formData.address?"picker-value":"placeholder"),attrs:{_i:35}},[t._v(t._$s(35,"t0-0",t._s(t.formData.address||"\u8bf7\u9009\u62e9")))]),i("image",{staticClass:t._$s(36,"sc","arrow-right"),attrs:{_i:36}})])]),i("view",{staticClass:t._$s(37,"sc","section-title"),attrs:{_i:37}},[i("view",{staticClass:t._$s(38,"sc","title-bar"),attrs:{_i:38}}),i("text")]),i("view",{staticClass:t._$s(40,"sc","form-item-one-yqr box-cont invite-code-container"),attrs:{_i:40}},[i("view",{staticClass:t._$s(41,"sc","invite-code-top"),attrs:{_i:41}},[i("view",{staticClass:t._$s(42,"sc","label-wrapper"),attrs:{_i:42}},[i("text",{staticClass:t._$s(43,"sc","label required"),attrs:{_i:43}})]),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.invite_code_other,expression:"formData.invite_code_other"}],staticClass:t._$s(44,"sc","input"),attrs:{_i:44},domProps:{value:t._$s(44,"v-model",t.formData.invite_code_other)},on:{input:[function(e){e.target.composing||t.$set(t.formData,"invite_code_other",e.target.value)},t.handleInviteCodeInput]}})]),i("view",{staticClass:t._$s(45,"sc","divider"),attrs:{_i:45}}),i("view",{staticClass:t._$s(46,"sc","invite-info-container"),attrs:{_i:46}},[t._$s(47,"i",!t.formData.invite_code_other)?i("text",{staticClass:t._$s(47,"sc","invite-tip"),attrs:{_i:47}}):t._$s(48,"e",t.inviteCodeValidating)?i("view",{staticClass:t._$s(48,"sc","invite-validating"),attrs:{_i:48}},[i("text")]):t._$s(50,"e",t.inviteCodeError)?i("view",{staticClass:t._$s(50,"sc","invite-error"),class:t._$s(50,"c",{"shake-animation":t.shakeInviteError}),attrs:{_i:50}},[i("text")]):t._$s(52,"e","13131313"===t.formData.invite_code_other&&!t.inviterInfo)?i("view",{staticClass:t._$s(52,"sc","invite-tip"),attrs:{_i:52}}):t._$s(53,"e",t.inviterInfo)?i("view",{staticClass:t._$s(53,"sc","inviter-info"),attrs:{_i:53}},[i("text",{staticClass:t._$s(54,"sc","inviter-label"),attrs:{_i:54}}),i("text",{staticClass:t._$s(55,"sc","inviter-name"),attrs:{_i:55}},[t._v(t._$s(55,"t0-0",t._s(t.inviterInfo.name||t.inviterInfo.nick_name)))]),i("text",{staticClass:t._$s(56,"sc","inviter-divider"),attrs:{_i:56}}),i("text",{staticClass:t._$s(57,"sc","inviter-phone"),attrs:{_i:57}},[t._v(t._$s(57,"t0-0",t._s(t.inviterInfo.account)))])]):i("view",{staticClass:t._$s(58,"sc","invite-error"),class:t._$s(58,"c",{"shake-animation":t.shakeInviteError}),attrs:{_i:58}},[i("text")])])]),i("view",{staticClass:t._$s(60,"sc","form-item-two box-cont"),attrs:{_i:60},on:{click:t.openExperiencePicker}},[i("text",{staticClass:t._$s(61,"sc","label required"),attrs:{_i:61}}),i("view",{staticClass:t._$s(62,"sc","picker-content"),attrs:{_i:62}},[i("text",{class:t._$s(63,"c",t.formData.major?"picker-value":"placeholder"),attrs:{_i:63}},[t._v(t._$s(63,"t0-0",t._s(t.experienceText||"\u8bf7\u9009\u62e9")))]),i("image",{staticClass:t._$s(64,"sc","arrow-right"),attrs:{_i:64}})])]),i("view",{staticClass:t._$s(65,"sc","popup"),class:t._$s(65,"c",{show:t.showServicePopupFlag}),attrs:{_i:65}},[i("view",{staticClass:t._$s(66,"sc","popup-mask"),attrs:{_i:66},on:{click:t.hideServicePopup}}),i("view",{staticClass:t._$s(67,"sc","popup-content"),attrs:{_i:67}},[i("view",{staticClass:t._$s(68,"sc","popup-header"),attrs:{_i:68}},[i("text",{staticClass:t._$s(69,"sc","popup-title"),attrs:{_i:69}}),i("text",{staticClass:t._$s(70,"sc","popup-close"),attrs:{_i:70},on:{click:t.hideServicePopup}})]),i("view",{staticClass:t._$s(71,"sc","popup-body"),attrs:{_i:71}},[i("view",{staticClass:t._$s(72,"sc","checkbox-list"),attrs:{_i:72}},t._l(t._$s(73,"f",{forItems:t.serviceList}),(function(e,s,a,r){return i("view",{key:t._$s(73,"f",{forIndex:a,key:s}),staticClass:t._$s("73-"+r,"sc","checkbox-item"),attrs:{_i:"73-"+r},on:{click:function(e){return t.toggleServiceSelect(s)}}},[i("view",{staticClass:t._$s("74-"+r,"sc","checkbox"),class:t._$s("74-"+r,"c",{checked:e.checked}),attrs:{_i:"74-"+r}},[t._$s("75-"+r,"i",e.checked)?i("image",{staticClass:t._$s("75-"+r,"sc","check-icon"),attrs:{_i:"75-"+r}}):t._e()]),i("text",{staticClass:t._$s("76-"+r,"sc","checkbox-label"),attrs:{_i:"76-"+r}},[t._v(t._$s("76-"+r,"t0-0",t._s(e.title)))])])})),0)]),i("view",{staticClass:t._$s(77,"sc","popup-footer"),attrs:{_i:77}},[i("view",{staticClass:t._$s(78,"sc","popup-btn cancel"),attrs:{_i:78},on:{click:t.hideServicePopup}},[i("text",{staticClass:t._$s(79,"sc","btn-text"),attrs:{_i:79}})]),i("view",{staticClass:t._$s(80,"sc","popup-btn confirm"),attrs:{_i:80},on:{click:t.confirmServiceSelect}},[i("text",{staticClass:t._$s(81,"sc","btn-text"),attrs:{_i:81}})])])])]),i("view",{staticClass:t._$s(82,"sc","popup"),class:t._$s(82,"c",{show:t.showLocationPopupFlag}),attrs:{_i:82}},[i("view",{staticClass:t._$s(83,"sc","popup-mask"),attrs:{_i:83},on:{click:t.hideLocationPopup}}),i("view",{staticClass:t._$s(84,"sc","popup-content"),attrs:{_i:84}},[i("view",{staticClass:t._$s(85,"sc","popup-header"),attrs:{_i:85}},[i("text",{staticClass:t._$s(86,"sc","popup-title"),attrs:{_i:86}}),i("text",{staticClass:t._$s(87,"sc","popup-close"),attrs:{_i:87},on:{click:t.hideLocationPopup}})]),i("view",{staticClass:t._$s(88,"sc","region-body"),attrs:{_i:88}},[i("picker-view",{staticClass:t._$s(89,"sc","picker-scroll"),attrs:{"indicator-style":t._$s(89,"a-indicator-style",t.indicatorStyle),value:t._$s(89,"a-value",t.locationValue),_i:89},on:{change:t.bindChangeLocation}},[i("picker-view-column",t._l(t._$s(91,"f",{forItems:t.ChinaCitys}),(function(e,s,a,r){return i("view",{key:t._$s(91,"f",{forIndex:a,key:s}),staticClass:t._$s("91-"+r,"sc","picker-item"),attrs:{_i:"91-"+r}},[t._v(t._$s("91-"+r,"t0-0",t._s(e.province)))])})),0),i("picker-view-column",t._l(t._$s(93,"f",{forItems:t.locatinCitys}),(function(e,s,a,r){return i("view",{key:t._$s(93,"f",{forIndex:a,key:s}),staticClass:t._$s("93-"+r,"sc","picker-item"),attrs:{_i:"93-"+r}},[t._v(t._$s("93-"+r,"t0-0",t._s(e.city)))])})),0),i("picker-view-column",t._l(t._$s(95,"f",{forItems:t.locationAreas}),(function(e,s,a,r){return i("view",{key:t._$s(95,"f",{forIndex:a,key:s}),staticClass:t._$s("95-"+r,"sc","picker-item"),attrs:{_i:"95-"+r}},[t._v(t._$s("95-"+r,"t0-0",t._s(e.area)))])})),0)])]),i("view",{staticClass:t._$s(96,"sc","popup-footer"),attrs:{_i:96}},[i("view",{staticClass:t._$s(97,"sc","popup-btn cancel"),attrs:{_i:97},on:{click:t.hideLocationPopup}},[i("text",{staticClass:t._$s(98,"sc","btn-text"),attrs:{_i:98}})]),i("view",{staticClass:t._$s(99,"sc","popup-btn confirm"),attrs:{_i:99},on:{click:t.confirmLocationSelect}},[i("text",{staticClass:t._$s(100,"sc","btn-text"),attrs:{_i:100}})])])])]),i("view",{staticClass:t._$s(101,"sc","popup"),class:t._$s(101,"c",{show:t.showTimePicker}),attrs:{_i:101}},[i("view",{staticClass:t._$s(102,"sc","popup-mask"),attrs:{_i:102},on:{click:t.hideTimePopup}}),i("view",{staticClass:t._$s(103,"sc","popup-content"),attrs:{_i:103}},[i("view",{staticClass:t._$s(104,"sc","popup-header"),attrs:{_i:104}},[i("text",{staticClass:t._$s(105,"sc","cancel-text"),attrs:{_i:105},on:{click:t.hideTimePopup}}),i("text",{staticClass:t._$s(106,"sc","title"),attrs:{_i:106}}),i("text",{staticClass:t._$s(107,"sc","confirm-text"),attrs:{_i:107},on:{click:t.confirmTime}})]),i("view",{staticClass:t._$s(108,"sc","time-range"),attrs:{_i:108}},[i("view",{staticClass:t._$s(109,"sc","time-block"),class:t._$s(109,"c",{active:"start"===t.timeType}),attrs:{_i:109},on:{click:function(e){return t.switchTimeType("start")}}},[i("text",{staticClass:t._$s(110,"sc","time-value"),attrs:{_i:110}},[t._v(t._$s(110,"t0-0",t._s(t.formatTime(t.startTime))))]),i("text",{staticClass:t._$s(111,"sc","time-label"),attrs:{_i:111}})]),i("text",{staticClass:t._$s(112,"sc","time-separator"),attrs:{_i:112}}),i("view",{staticClass:t._$s(113,"sc","time-block"),class:t._$s(113,"c",{active:"end"===t.timeType}),attrs:{_i:113},on:{click:function(e){return t.switchTimeType("end")}}},[i("text",{staticClass:t._$s(114,"sc","time-value"),attrs:{_i:114}},[t._v(t._$s(114,"t0-0",t._s(t.formatTime(t.endTime))))]),i("text",{staticClass:t._$s(115,"sc","time-label"),attrs:{_i:115}})])]),i("view",{staticClass:t._$s(116,"sc","region-body"),attrs:{_i:116}},[i("picker-view",{staticClass:t._$s(117,"sc","picker-scroll"),attrs:{value:t._$s(117,"a-value",t.pickerValue),"indicator-style":t._$s(117,"a-indicator-style",t.indicatorStyle),_i:117},on:{change:t.handleTimeChange}},[i("picker-view-column",t._l(t._$s(119,"f",{forItems:t.hours}),(function(e,s,a,r){return i("view",{key:t._$s(119,"f",{forIndex:a,key:s}),staticClass:t._$s("119-"+r,"sc","picker-item"),attrs:{_i:"119-"+r}},[t._v(t._$s("119-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",t._l(t._$s(121,"f",{forItems:t.minutes}),(function(e,s,a,r){return i("view",{key:t._$s(121,"f",{forIndex:a,key:s}),staticClass:t._$s("121-"+r,"sc","picker-item"),attrs:{_i:"121-"+r}},[t._v(t._$s("121-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",[i("view",{staticClass:t._$s(123,"sc","picker-item"),attrs:{_i:123}})]),i("picker-view-column",t._l(t._$s(125,"f",{forItems:t.hours}),(function(e,s,a,r){return i("view",{key:t._$s(125,"f",{forIndex:a,key:s}),staticClass:t._$s("125-"+r,"sc","picker-item"),attrs:{_i:"125-"+r}},[t._v(t._$s("125-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",t._l(t._$s(127,"f",{forItems:t.minutes}),(function(e,s,a,r){return i("view",{key:t._$s(127,"f",{forIndex:a,key:s}),staticClass:t._$s("127-"+r,"sc","picker-item"),attrs:{_i:"127-"+r}},[t._v(t._$s("127-"+r,"t0-0",t._s(e)))])})),0)])])])]),i("view",{staticClass:t._$s(128,"sc","tip-popup"),class:t._$s(128,"c",{show:t.showTipPopupFlag}),attrs:{_i:128}},[i("view",{staticClass:t._$s(129,"sc","tip-popup-mask"),attrs:{_i:129},on:{click:t.hideTipPopup}}),i("view",{staticClass:t._$s(130,"sc","tip-popup-content"),attrs:{_i:130}},[i("image",{staticClass:t._$s(131,"sc","tip-popup-bg"),attrs:{_i:131}}),i("view",{staticClass:t._$s(132,"sc","tip-popup-body"),attrs:{_i:132}},[i("view",{staticClass:t._$s(133,"sc","tip-title"),attrs:{_i:133}},[t._v(t._$s(133,"t0-0",t._s(t.tipTitle)))]),i("view",{staticClass:t._$s(134,"sc","tip-image-container"),attrs:{_i:134}},[i("image",{staticClass:t._$s(135,"sc","tip-image"),class:t._$s(135,"c",t.currentTipType),attrs:{src:t._$s(135,"a-src",t.tipImage),_i:135}})]),i("view",{staticClass:t._$s(136,"sc","tip-buttons"),attrs:{_i:136}},[i("view",{staticClass:t._$s(137,"sc","tip-btn cancel"),attrs:{_i:137},on:{click:t.hideTipPopup}},[i("text",{staticClass:t._$s(138,"sc","btn-text"),attrs:{_i:138}})]),i("view",{staticClass:t._$s(139,"sc","tip-btn confirm"),attrs:{_i:139},on:{click:t.hideTipPopup}},[i("text",{staticClass:t._$s(140,"sc","btn-text"),attrs:{_i:140}})])])])])])])},a=[]},2561:function(t,e,i){"use strict";i.r(e);var s=i("cdf0"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"25dc":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("7ca3")),c=s(i("3b2d")),n=s(i("ee10")),o=s(i("af34")),d=s(i("16bb")),l=s(i("668a"));function u(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function f(t){for(var e=1;e0;return t("log","\u662f\u5426\u663e\u793a\u9a73\u56de\u539f\u56e0:",{shouldShow:e,auditStatus:this.auditStatus,showPendingArea:this.showPendingArea,backText:this.backText}," at pages/artisan/service-area.vue:225"),e}},onLoad:function(){this.initPage()},onReady:function(){this.getButtonAreaHeight()},methods:{initPage:function(){var e=this;return(0,n.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return e.isLoading=!0,i.prev=1,i.next=4,e.initAreaData();case 4:return i.next=6,e.loadCurrentEffectiveAreas();case 6:return i.next=8,e.loadApplyDetails();case 8:e.updatePageStatus(),i.next=14;break;case 11:i.prev=11,i.t0=i["catch"](1),t("error","\u521d\u59cb\u5316\u9875\u9762\u5931\u8d25:",i.t0," at pages/artisan/service-area.vue:258");case 14:return i.prev=14,e.isLoading=!1,i.finish(14);case 17:case"end":return i.stop()}}),i,null,[[1,11,14,17]])})))()},initAreaData:function(){var t=this;return new Promise((function(e){l.default&&l.default.length>0&&(t.ChinaCitys=l.default),e()}))},getButtonAreaHeight:function(){var t=this;setTimeout((function(){var e=uni.createSelectorQuery().in(t);e.select(".bottom-actions").boundingClientRect((function(e){e&&(t.buttonAreaHeight=e.height+20)})).exec()}),100)},updateNavTitle:function(){this.editable||this.showPendingArea?this.navTitle="\u670d\u52a1\u533a\u57df\u53d8\u66f4":this.navTitle="\u670d\u52a1\u533a\u57df"},loadApplyDetails:function(){var e=this;return(0,n.default)(a.default.mark((function i(){var s,r,n,l;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,t("log","\u5f00\u59cb\u52a0\u8f7d\u7533\u8bf7\u8be6\u60c5..."," at pages/artisan/service-area.vue:298"),i.next=4,d.default.post("/syr/userSyrAuth/details",{apply_type:3});case 4:if(s=i.sent,t("log","\u5b8c\u6574\u7684\u7533\u8bf7\u8be6\u60c5\u8fd4\u56de:",JSON.stringify(s,null,2)," at pages/artisan/service-area.vue:303"),200!==s.code||!s.data){i.next=20;break}return n=s.data,e.applyId=n.id,e.auditStatus=n.apply_state,e.backText=n.back_text||"",t("log","\u5ba1\u6838\u72b6\u6001:",e.auditStatus," at pages/artisan/service-area.vue:311"),t("log","servers_region\u5b57\u6bb5:",n.servers_region," at pages/artisan/service-area.vue:312"),t("log","servers_region\u7c7b\u578b:",(0,c.default)(n.servers_region)," at pages/artisan/service-area.vue:313"),t("log","servers_region\u957f\u5ea6:",null===(r=n.servers_region)||void 0===r?void 0:r.length," at pages/artisan/service-area.vue:314"),n.servers_region&&n.servers_region.length>0?(t("log","\u7533\u8bf7\u8be6\u60c5\u4e2d\u7684\u670d\u52a1\u533a\u57df:",n.servers_region," at pages/artisan/service-area.vue:318"),1===e.auditStatus?(e.selectedAreas=(0,o.default)(n.servers_region),t("log","\u5ba1\u6838\u4e2d\uff0c\u5f85\u5ba1\u6838\u533a\u57df:",e.selectedAreas," at pages/artisan/service-area.vue:321")):3===e.auditStatus&&(e.selectedAreas=(0,o.default)(n.servers_region),t("log","\u5ba1\u6838\u9a73\u56de\uff0c\u88ab\u9a73\u56de\u533a\u57df:",e.selectedAreas," at pages/artisan/service-area.vue:324"))):(t("log","\u63a5\u53e3\u8fd4\u56de\u7684\u670d\u52a1\u533a\u57df\u4e3a\u7a7a"," at pages/artisan/service-area.vue:327"),n.service_area?(t("log","\u4eceservice_area\u5b57\u6bb5\u83b7\u53d6\u6570\u636e:",n.service_area," at pages/artisan/service-area.vue:330"),l=Array.isArray(n.service_area)?n.service_area:[n.service_area],1!==e.auditStatus&&3!==e.auditStatus||(e.selectedAreas=l)):(t("log","\u6240\u6709\u670d\u52a1\u533a\u57df\u5b57\u6bb5\u90fd\u4e3a\u7a7a"," at pages/artisan/service-area.vue:336"),1===e.auditStatus&&t("warn","\u5ba1\u6838\u4e2d\u72b6\u6001\u4f46\u65e0\u5f85\u5ba1\u6838\u533a\u57df\u6570\u636e\uff0c\u8fd9\u53ef\u80fd\u662f\u6570\u636e\u5f02\u5e38"," at pages/artisan/service-area.vue:339"))),i.next=18,e.loadCurrentEffectiveAreas();case 18:i.next=23;break;case 20:return t("log","\u7533\u8bf7\u8be6\u60c5\u8fd4\u56de\u6570\u636e\u4e3a\u7a7a\u6216code\u4e0d\u4e3a200:",s," at pages/artisan/service-area.vue:348"),i.next=23,e.loadCurrentEffectiveAreas();case 23:i.next=30;break;case 25:return i.prev=25,i.t0=i["catch"](0),t("error","\u52a0\u8f7d\u7533\u8bf7\u8be6\u60c5\u5931\u8d25:",i.t0," at pages/artisan/service-area.vue:353"),i.next=30,e.loadCurrentEffectiveAreas();case 30:case"end":return i.stop()}}),i,null,[[0,25]])})))()},loadCurrentEffectiveAreas:function(){var e=this;return(0,n.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,t("log","\u5f00\u59cb\u52a0\u8f7d\u5f53\u524d\u751f\u6548\u7684\u670d\u52a1\u533a\u57df..."," at pages/artisan/service-area.vue:361"),i.next=4,d.default.post("/user/getuser",{type:2});case 4:s=i.sent,1===s.state&&s.data&&(s.data.servers_region&&s.data.servers_region.length>0?(e.currentAreas=(0,o.default)(s.data.servers_region),e.originalAreas=(0,o.default)(s.data.servers_region)):s.data.service_area?(e.currentAreas=[s.data.service_area],e.originalAreas=[s.data.service_area]):(e.currentAreas=[],e.originalAreas=[]),t("log","\u5f53\u524d\u751f\u6548\u7684\u533a\u57df:",e.currentAreas," at pages/artisan/service-area.vue:380"),e.parseOriginalCity(),null===e.auditStatus||2===e.auditStatus?(e.selectedAreas=(0,o.default)(e.currentAreas),t("log","\u65e0\u7533\u8bf7\u6216\u5ba1\u6838\u901a\u8fc7\uff0c\u540c\u6b65\u9009\u4e2d\u533a\u57df:",e.selectedAreas," at pages/artisan/service-area.vue:388")):t("log","\u5ba1\u6838\u4e2d\u6216\u5ba1\u6838\u9a73\u56de\u72b6\u6001\uff0c\u4fdd\u6301\u9009\u4e2d\u533a\u57df\u4e0d\u53d8:",e.selectedAreas," at pages/artisan/service-area.vue:390"),e.updatePageStatus()),i.next=15;break;case 8:i.prev=8,i.t0=i["catch"](0),t("error","\u52a0\u8f7d\u5f53\u524d\u751f\u6548\u533a\u57df\u5931\u8d25:",i.t0," at pages/artisan/service-area.vue:397"),e.currentAreas=[],e.originalAreas=[],1!==e.auditStatus&&3!==e.auditStatus&&(e.selectedAreas=[]),e.updatePageStatus();case 15:case"end":return i.stop()}}),i,null,[[0,8]])})))()},parseOriginalCity:function(){if(this.currentAreas.length>0){var e=this.currentAreas[0],i=e.split("-");i.length>=2&&(this.originalCity=i[1],t("log","\u539f\u59cb\u57ce\u5e02:",this.originalCity," at pages/artisan/service-area.vue:414"))}},updatePageStatus:function(){t("log","\u66f4\u65b0\u9875\u9762\u72b6\u6001\uff0c\u5ba1\u6838\u72b6\u6001:",this.auditStatus," at pages/artisan/service-area.vue:421"),this.showAuditTip=!1,this.showPendingArea=!1,this.editable=!1,1===this.auditStatus?(this.showAuditTip=!0,this.buttonType="view",this.showPendingArea=!1):3===this.auditStatus?(this.showAuditTip=!1,this.buttonType="change",this.showPendingArea=!1,t("log","\u9a73\u56de\u539f\u56e0:",this.backText," at pages/artisan/service-area.vue:441"),t("log","\u5f53\u524dselectedAreas:",this.selectedAreas," at pages/artisan/service-area.vue:442")):(this.showAuditTip=!1,this.buttonType="change",this.showPendingArea=!1),this.updateNavTitle(),t("log","\u6700\u7ec8\u9875\u9762\u72b6\u6001:",{showAuditTip:this.showAuditTip,buttonType:this.buttonType,editable:this.editable,showPendingArea:this.showPendingArea,auditStatus:this.auditStatus,backText:this.backText}," at pages/artisan/service-area.vue:452")},togglePendingArea:function(){var e=this;this.preventStatusOverride=!0,this.showPendingArea=!this.showPendingArea,t("log","\u5207\u6362\u5f85\u5ba1\u6838\u533a\u57df\u663e\u793a:",this.showPendingArea,"\u5ba1\u6838\u72b6\u6001:",this.auditStatus," at pages/artisan/service-area.vue:467"),t("log","\u5f53\u524dselectedAreas:",this.selectedAreas," at pages/artisan/service-area.vue:468"),t("log","\u5f53\u524dselectedAreas\u957f\u5ea6:",this.selectedAreas.length," at pages/artisan/service-area.vue:469"),this.showPendingArea&&1===this.auditStatus&&0===this.selectedAreas.length?(t("warn","\u5ba1\u6838\u4e2d\u72b6\u6001\u4f46\u9009\u4e2d\u533a\u57df\u4e3a\u7a7a\uff0c\u91cd\u65b0\u52a0\u8f7d\u6570\u636e"," at pages/artisan/service-area.vue:472"),t("log","\u91cd\u65b0\u52a0\u8f7d\u524d\u7684\u6570\u636e\u72b6\u6001:",{auditStatus:this.auditStatus,selectedAreas:this.selectedAreas,currentAreas:this.currentAreas}," at pages/artisan/service-area.vue:473"),this.loadApplyDetails().finally((function(){t("log","\u91cd\u65b0\u52a0\u8f7d\u540e\u7684\u6570\u636e\u72b6\u6001:",{auditStatus:e.auditStatus,selectedAreas:e.selectedAreas,currentAreas:e.currentAreas}," at pages/artisan/service-area.vue:479"),setTimeout((function(){e.preventStatusOverride=!1}),100)}))):setTimeout((function(){e.preventStatusOverride=!1}),100),this.updateNavTitle()},startChange:function(){this.editable=!0,this.buttonType="edit",this.showPendingArea=!0,this.updateNavTitle()},showRegionPopup:function(){this.editable&&(this.currentTab=0,this.cityList=[],this.districtList=[],this.selectedProvince=null,this.selectedCity=null,this.currentSelectedCity="",this.showRegionPopupFlag=!0)},hideRegionPopup:function(){this.showRegionPopupFlag=!1},switchTab:function(t){t1&&void 0!==arguments[1]?arguments[1]:{},i=e.method||t.method||"GET",s={baseURL:e.baseURL||t.baseURL||"",method:i,url:e.url||"",params:e.params||{},custom:n(n({},t.custom||{}),e.custom||{}),header:(0,r.deepMerge)(t.header||{},e.header||{})},a=["getTask","validateStatus","paramsSerializer","forcedJSONParsing"];if(s=n(n({},s),o(a,t,e)),"DOWNLOAD"===i){var c=["timeout"];s=n(n({},s),o(c,t,e))}else if("UPLOAD"===i){delete s.header["content-type"],delete s.header["Content-Type"];var d=["files","filePath","name","timeout","formData"];d.forEach((function(t){(0,r.isUndefined)(e[t])||(s[t]=e[t])})),(0,r.isUndefined)(s.timeout)&&!(0,r.isUndefined)(t.timeout)&&(s["timeout"]=t["timeout"])}else{var l=["data","timeout","dataType","responseType","sslVerify","firstIpv4"];s=n(n({},s),o(l,t,e))}return s}},2690:function(t,e,i){"use strict";i.r(e);var s=i("a34e"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"26f0":function(t,e,i){"use strict";i.r(e);var s=i("cb67"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},2721:function(t,e,i){"use strict";i.r(e);var s=i("7567"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"27eb":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","unavailable-time-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u4e0d\u53ef\u670d\u52a1\u65f6\u95f4","show-back":!0,_i:1}}),i("view",{staticClass:t._$s(2,"sc","content"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","time-list"),attrs:{_i:3}},t._l(t._$s(4,"f",{forItems:t.timeSlots}),(function(e,s,a,r){return i("view",{key:t._$s(4,"f",{forIndex:a,key:e.id}),staticClass:t._$s("4-"+r,"sc","time-item"),attrs:{_i:"4-"+r}},[i("view",{staticClass:t._$s("5-"+r,"sc","time-info"),attrs:{_i:"5-"+r}},[i("text",{staticClass:t._$s("6-"+r,"sc","date"),attrs:{_i:"6-"+r}},[t._v(t._$s("6-"+r,"t0-0",t._s(e.date)))]),i("text",{staticClass:t._$s("7-"+r,"sc","time"),attrs:{_i:"7-"+r}},[t._v(t._$s("7-"+r,"t0-0",t._s(e.time_start))+t._$s("7-"+r,"t0-1",t._s(e.time_end)))])]),i("view",{staticClass:t._$s("8-"+r,"sc","action-btns"),attrs:{_i:"8-"+r}},[i("text",{staticClass:t._$s("9-"+r,"sc","delete-btn"),attrs:{_i:"9-"+r},on:{click:function(i){return t.deleteTimeSlot(e.id)}}})])])})),0),i("view",{staticClass:t._$s(10,"sc","add-btn"),attrs:{_i:10},on:{click:t.showTimePicker}},[i("text",{staticClass:t._$s(11,"sc","add-icon"),attrs:{_i:11}}),i("text",{staticClass:t._$s(12,"sc","add-text"),attrs:{_i:12}})])]),t._$s(13,"i",t.showTimePickerFlag)?i("view",{staticClass:t._$s(13,"sc","popup"),class:t._$s(13,"c",{show:t.showTimePickerFlag}),attrs:{_i:13}},[i("view",{staticClass:t._$s(14,"sc","popup-mask"),attrs:{_i:14},on:{click:t.closeTimePicker}}),i("view",{staticClass:t._$s(15,"sc","time-picker"),attrs:{_i:15}},[i("view",{staticClass:t._$s(16,"sc","picker-header"),attrs:{_i:16}},[i("text",{staticClass:t._$s(17,"sc","cancel-btn"),attrs:{_i:17},on:{click:t.closeTimePicker}}),i("text",{staticClass:t._$s(18,"sc","title"),attrs:{_i:18}}),i("text",{staticClass:t._$s(19,"sc","confirm-btn"),attrs:{_i:19},on:{click:t.confirmTime}})]),i("view",{staticClass:t._$s(20,"sc","picker-content"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","date-picker"),attrs:{_i:21}},[i("text",{staticClass:t._$s(22,"sc","label"),attrs:{_i:22}}),i("picker",{attrs:{value:t._$s(23,"a-value",t.currentDate),start:t._$s(23,"a-start",t.minDate),_i:23},on:{change:t.handleDateChange}},[i("view",{staticClass:t._$s(24,"sc","picker-value"),attrs:{_i:24}},[t._v(t._$s(24,"t0-0",t._s(t.currentDate)))])])]),i("view",{staticClass:t._$s(25,"sc","time-picker-item"),attrs:{_i:25}},[i("text",{staticClass:t._$s(26,"sc","label"),attrs:{_i:26}}),i("picker",{attrs:{value:t._$s(27,"a-value",t.startTime),_i:27},on:{change:t.handleStartTimeChange}},[i("view",{staticClass:t._$s(28,"sc","picker-value"),attrs:{_i:28}},[t._v(t._$s(28,"t0-0",t._s(t.startTime)))])])]),i("view",{staticClass:t._$s(29,"sc","time-picker-item"),attrs:{_i:29}},[i("text",{staticClass:t._$s(30,"sc","label"),attrs:{_i:30}}),i("picker",{attrs:{value:t._$s(31,"a-value",t.endTime),start:t._$s(31,"a-start",t.minTime),_i:31},on:{change:t.handleEndTimeChange}},[i("view",{staticClass:t._$s(32,"sc","picker-value"),attrs:{_i:32}},[t._v(t._$s(32,"t0-0",t._s(t.endTime)))])])])])])]):t._e()],1)},r=[]},"27fa":function(t,e,i){"use strict";i.r(e);var s=i("e4b7"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},2849:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","service-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u670d\u52a1\u5217\u8868",showBack:!0,backgroundColor:"#FFFFFF","show-headle":!0,headleSrc:"/static/images/add_icon.png",_i:1},on:{onHeadleClick:t.addService}}),i("view",{staticClass:t._$s(2,"sc","flexed"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","search-box"),attrs:{_i:3}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.title,expression:"title"}],staticClass:t._$s(4,"sc","search-inp"),attrs:{_i:4},domProps:{value:t._$s(4,"v-model",t.title)},on:{confirm:t.getServicesList,input:function(e){e.target.composing||(t.title=e.target.value)}}}),i("image",{staticClass:t._$s(5,"sc","search-icon"),attrs:{_i:5},on:{click:t.getServicesList}})]),i("view",{staticClass:t._$s(6,"sc","tab-container"),attrs:{_i:6}},t._l(t._$s(7,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("view",{key:t._$s(7,"f",{forIndex:a,key:s}),class:t._$s("7-"+r,"c",["tab-item",{active:t.currentTab===s}]),attrs:{_i:"7-"+r},on:{click:function(i){return t.switchTab(s,e.id)}}},[t._v(t._$s("7-"+r,"t0-0",t._s(e.text)))])})),0)]),t._$s(8,"i",0!=t.services.length||!t.services)?i("view",{staticClass:t._$s(8,"sc","service-list"),attrs:{_i:8}},t._l(t._$s(9,"f",{forItems:t.services}),(function(e,s,a,r){return i("view",{key:t._$s(9,"f",{forIndex:a,key:s}),staticClass:t._$s("9-"+r,"sc","service-item"),attrs:{_i:"9-"+r},on:{touchstart:function(e){return t.touchStart(e,s)},touchmove:t.touchMove,touchend:t.touchEnd,mousedown:function(e){return t.mouseDown(e,s)},mousemove:t.mouseMove,mouseup:t.mouseUp,mouseleave:t.mouseUp}},[t._$s("10-"+r,"i",0==e.state)?i("view",{staticClass:t._$s("10-"+r,"sc","delete-btn"),style:t._$s("10-"+r,"s",{transform:"translateX("+(e.slideX||0)+"rpx)"}),attrs:{_i:"10-"+r},on:{click:function(i){return t.deleteService(e)}}},[i("text")]):t._e(),i("view",{staticClass:t._$s("12-"+r,"sc","service-content"),style:t._$s("12-"+r,"s",{transform:"translateX("+(e.slideX||0)+"rpx)"}),attrs:{_i:"12-"+r}},[i("image",{staticClass:t._$s("13-"+r,"sc","service-image"),attrs:{src:t._$s("13-"+r,"a-src",e.photo[0]),_i:"13-"+r}}),i("view",{staticClass:t._$s("14-"+r,"sc","service-info"),attrs:{_i:"14-"+r}},[i("view",{staticClass:t._$s("15-"+r,"sc","service-title text-overflow"),attrs:{_i:"15-"+r}},[t._v(t._$s("15-"+r,"t0-0",t._s(e.title)))]),i("view",{staticClass:t._$s("16-"+r,"sc","service-price"),attrs:{_i:"16-"+r}},[i("text",{staticClass:t._$s("17-"+r,"sc","price-symbol"),attrs:{_i:"17-"+r}}),i("text",{staticClass:t._$s("18-"+r,"sc","price-value"),attrs:{_i:"18-"+r}},[t._v(t._$s("18-"+r,"t0-0",t._s(e.server_price)))]),i("text",{staticClass:t._$s("19-"+r,"sc","price-unit"),attrs:{_i:"19-"+r}})])]),i("view",{class:t._$s("20-"+r,"c",["status-tag","state"+e.state]),attrs:{_i:"20-"+r}},[i("text",{staticClass:t._$s("21-"+r,"sc","status-text"),attrs:{_i:"21-"+r}},[t._v(t._$s("21-"+r,"t0-0",t._s(0==e.state?"\u8349\u7a3f":1==e.state?"\u5ba1\u6838\u4e2d":2==e.state?"\u5df2\u4e0a\u67b6":3==e.state?"\u4e0b\u67b6":4==e.state?"\u9a73\u56de":"")))])]),i("view",{staticClass:t._$s("22-"+r,"sc","btns"),attrs:{_i:"22-"+r}},[t._$s("23-"+r,"i",2==e.state)?i("view",{staticClass:t._$s("23-"+r,"sc","view-btn"),attrs:{_i:"23-"+r},on:{click:function(i){return t.viewRemove(e)}}},[i("image",{staticClass:t._$s("24-"+r,"sc","view-icon"),attrs:{_i:"24-"+r}}),i("text",{staticClass:t._$s("25-"+r,"sc","view-text"),attrs:{_i:"25-"+r}})]):t._e(),t._$s("26-"+r,"i",3==e.state)?i("view",{staticClass:t._$s("26-"+r,"sc","view-btn"),attrs:{_i:"26-"+r},on:{click:function(i){return t.viewList(e)}}},[i("image",{staticClass:t._$s("27-"+r,"sc","view-icon"),attrs:{_i:"27-"+r}}),i("text",{staticClass:t._$s("28-"+r,"sc","view-text"),attrs:{_i:"28-"+r}})]):t._e(),i("view",{staticClass:t._$s("29-"+r,"sc","view-btn"),attrs:{_i:"29-"+r},on:{click:function(i){return t.viewEdit(e)}}},[i("image",{staticClass:t._$s("30-"+r,"sc","view-icon"),attrs:{_i:"30-"+r}}),i("text",{staticClass:t._$s("31-"+r,"sc","view-text"),attrs:{_i:"31-"+r}})])])])])})),0):i("view",{staticClass:t._$s(32,"sc","service-nothings"),attrs:{_i:32}},[i("text",{staticClass:t._$s(33,"sc","nothings-text"),attrs:{_i:33}})]),t._$s(34,"i",t.hasMore)?i("view",{staticClass:t._$s(34,"sc","load-more"),attrs:{_i:34}},[i("text")]):t._e(),i("view",{staticClass:t._$s(36,"sc","serviceBtn-box"),attrs:{_i:36},on:{click:t.addService}},[i("view",{staticClass:t._$s(37,"sc","serviceBtn-card"),attrs:{_i:37}},[i("text",{staticClass:t._$s(38,"sc","serviceBtn-text"),attrs:{_i:38}})])])],1)},r=[]},2863:function(t,e,i){"use strict";i.r(e);var s=i("f972"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},2891:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("af34")),r={name:"class_select",props:{classId:{type:Number},secondClassId:{type:Array}},data:function(){return{secondClassList:[],classList:[]}},created:function(){this.getClass()},computed:{},watch:{secondClassId:function(){var t=this;if(this.secondClassId&&(!this.secondClassId||0!=this.secondClassId.length)){this.getClass();var e="";this.classId&&this.classList.forEach((function(i){i.id==t.classId&&(e+=i.title)})),this.secondClassId&&this.secondClassId.length>0&&this.secondClassList.forEach((function(i){t.secondClassId.includes(i.id)&&(e=e+" "+i.title)})),this.$emit("changeTypeText",e)}}},methods:{handleClose:function(){var t=this,e="";this.classId&&this.classList.forEach((function(i){i.id==t.classId&&(e+=i.title)})),this.secondClassId&&this.secondClassList.forEach((function(i){t.secondClassId.includes(i.id)&&(e=e+" "+i.title)})),this.$emit("closeClassSelect",e)},changeClass:function(t){t!=this.classId&&(this.$emit("changeClass",t),this.$emit("changeSecondClass",[]),this.getSecondClass(t))},changeSecondClass:function(t){var e=this.secondClassId,i=function(t,e){if(!Array.isArray(t)||!Array.isArray(e))return!1;return t.some((function(t){return e.some((function(e){return e&&void 0!==e.id&&Number(e.id)===t}))}))}(e,this.secondClassList);i?e.includes(t)?this.$emit("changeSecondClass",e.filter((function(e){return e!=t}))):this.$emit("changeSecondClass",[].concat((0,a.default)(e),[t])):this.$emit("changeSecondClass",[t])},getSecondClass:function(t){var e=this.classList.find((function(e){return e.id==t}));this.secondClassList=e.data},getClass:function(){this.classList=JSON.parse(uni.getStorageSync("classList")),this.classId?this.getSecondClass(this.classId):this.changeClass(this.classList[0].id)}}};e.default=r},"28ff":function(t,e,i){"use strict";i.r(e);var s=i("040e"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"291d":function(t,e,i){"use strict";i.r(e);var s=i("7516"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"291da":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=i("d6c4"),r=s(i("a6d8")),c=s(i("16bb")),n=s(i("42ef")),o=uni.requireNativePlugin("AliCloud-NirvanaPns"),d={components:{AgreeRadio:r.default},data:function(){return{isFirst:!1,showPassword:!1,maskShow:!0,loginType:"code",phone:"",code:"",password:"",account:"",isAgree:!1,tips:"",seconds:60,phoneError:"",runningCode:!1}},onLoad:function(){this.isFirst=!0,this.handleOnekeyTab()},computed:{canLogin:function(){return"code"===this.loginType?this.isAgree&&this.phone&&this.code&&this.code.length>=4&&!this.phoneError:"account"===this.loginType?this.isAgree&&this.phone&&this.password&&!this.phoneError:"onekey"===this.loginType&&this.isAgree}},methods:{checkAndroidPermission:function(){var e=this,i=["android.permission.READ_PHONE_STATE"];plus.android.requestPermissions(i,(function(s){var a=s.granted,r=s.neverDenied;t("log",11111111,s," at pages/blogPopup/blogPopup.vue:150"),r.length>0?uni.showModal({title:"\u6743\u9650\u63d0\u793a",content:"\u9700\u8981\u60a8\u5f00\u542f\u8bbe\u5907\u4fe1\u606f\u548c\u77ed\u4fe1\u6743\u9650\u624d\u80fd\u4f7f\u7528\u4e00\u952e\u767b\u5f55",success:function(t){t.confirm&&plus.android.openSettings()}}):a.length===i.length&&e.checkOperatorAuth()}),(function(e){t("error","\u7533\u8bf7\u6743\u9650\u5931\u8d25\uff1a",e," at pages/blogPopup/blogPopup.vue:167")}))},changeAgree:function(t){this.isAgree=t},goAgreement:function(t){uni.navigateTo({url:"/pages/agreement/agreement?type="+t})},codeChange:function(t){this.tips=t},getPhoneCodeCount:function(t){var e=(new Date).toISOString().split("T")[0],i="code_count_".concat(t,"_").concat(e),s=uni.getStorageSync(i)||0;return Number(s)},updatePhoneCodeCount:function(t){var e=(new Date).toISOString().split("T")[0],i="code_count_".concat(t,"_").concat(e),s=this.getPhoneCodeCount(t);uni.setStorageSync(i,s+1)},getCode:function(){var t=this;if(this.phoneError)uni.showToast({title:this.phoneError,icon:"none"});else if(this.phone){var e=this.getPhoneCodeCount(this.phone);e>=10?uni.showToast({title:"\u4eca\u65e5\u83b7\u53d6\u9a8c\u8bc1\u7801\u6b21\u6570\u5df2\u8fbe\u4e0a\u9650\uff0c\u8bf7\u660e\u65e5\u518d\u8bd5",icon:"none",duration:2e3}):this.$refs.code.canGetCode?(uni.showLoading({title:"\u6b63\u5728\u83b7\u53d6\u9a8c\u8bc1\u7801"}),c.default.post("/user/sendcode",{account:this.phone,type:2}).then((function(e){uni.hideLoading(),1==e.state?(uni.showToast({title:e.msg,icon:"none"}),t.$refs.code.start(),t.updatePhoneCodeCount(t.phone)):uni.showToast({title:e.msg,icon:"none"})})).catch((function(t){uni.hideLoading(),uni.showToast({title:t.msg,icon:"none"})}))):uni.$uv.toast("\u5012\u8ba1\u65f6\u7ed3\u675f\u540e\u518d\u53d1\u9001")}else uni.showToast({title:"\u8bf7\u8f93\u5165\u624b\u673a\u53f7",icon:"none"})},end:function(){this.runningCode=!1},start:function(){this.runningCode=!0},closeWindow:function(){uni.navigateBack({delta:1})},handleOnekeyTab:function(){var e=this;try{o.accelerateLoginPage(5e3,(function(i){t("log","\u52a0\u901f\u6388\u6743\u9875\u7ed3\u679c\uff1a",JSON.stringify(i)," at pages/blogPopup/blogPopup.vue:295"),"600000"===i.resultCode?(t("log","\u52a0\u901f\u6388\u6743\u9875\u62c9\u8d77\u6210\u529f"," at pages/blogPopup/blogPopup.vue:298"),setTimeout((function(){try{var i=n.default.buildSheet();e._presentLoginController(i)}catch(s){e.maskShow=!0,t("error","\u6784\u5efa\u767b\u5f55\u914d\u7f6e\u6216\u8c03\u7528\u767b\u5f55\u63a7\u5236\u5668\u5931\u8d25\uff1a",s," at pages/blogPopup/blogPopup.vue:307")}}),100)):(e.isFirst||(600004==i.resultCode||600008==i.resultCode?uni.showToast({title:"\u8702\u7a9d\u7f51\u7edc\u672a\u5f00\u542f",icon:"none"}):600007==i.resultCode||600009==i.resultCode?uni.showToast({title:"\u672a\u68c0\u6d4b\u5230sim\u5361",icon:"none"}):uni.showToast({title:"\u5524\u8d77\u6388\u6743\u9875\u5931\u8d25",icon:"none"})),e.maskShow=!0,e.isFirst=!1,t("error","\u6388\u6743\u9875\u52a0\u901f\u62c9\u8d77\u5931\u8d25\uff1a",i," at pages/blogPopup/blogPopup.vue:333"))}))}catch(i){this.maskShow=!0,t("error","\u8df3\u8f6c\u5230\u767b\u5f55\u9875\u65f6\u53d1\u751f\u9519\u8bef\uff1a",i," at pages/blogPopup/blogPopup.vue:339")}},getPwdErrorCount:function(t){var e="pwd_error_count_".concat(t);return Number(uni.getStorageSync(e))||0},updatePwdErrorCount:function(t,e){var i="pwd_error_count_".concat(t);uni.setStorageSync(i,e)},getPwdLockTime:function(t){var e="pwd_lock_time_".concat(t);return Number(uni.getStorageSync(e))||0},setPwdLock:function(t){var e="pwd_lock_time_".concat(t);uni.setStorageSync(e,Date.now())},clearPwdLockCache:function(t){uni.removeStorageSync("pwd_error_count_".concat(t)),uni.removeStorageSync("pwd_lock_time_".concat(t))},checkAccountLocked:function(t){var e=this.getPwdLockTime(t);if(!e)return{isLocked:!1,remainingTime:0};var i=Date.now(),s=Math.ceil((e+36e5-i)/1e3);return s>0?{isLocked:!0,remainingTime:s}:(this.clearPwdLockCache(t),{isLocked:!1,remainingTime:0})},handleLogin:function(){var e=this,i=this;if(this.phoneError)uni.showToast({title:this.phoneError,icon:"none"});else if("code"===this.loginType){if(!this.phone)return void uni.showToast({title:"\u8bf7\u8f93\u5165\u624b\u673a\u53f7",icon:"none"});if(!i.code)return uni.showToast({title:"\u8bf7\u8f93\u5165\u9a8c\u8bc1\u7801",icon:"none"}),!1;if(this.code.length<4)return uni.showToast({title:"\u8bf7\u8f93\u5165\u6b63\u786e\u9a8c\u8bc1\u7801",icon:"none"}),!1;if(!i.isAgree)return uni.showToast({title:"\u8bf7\u5148\u9605\u8bfb\u5e76\u540c\u610f\u300a\u7528\u6237\u6ce8\u518c\u534f\u8bae\u300b\u4e0e\u300a\u9690\u79c1\u653f\u7b56\u300b",icon:"none"}),!1;c.default.post("/sj/codelogin",{account:i.phone,code:i.code,deviceid:getApp().globalData.deviceid}).then((function(t){200==t.code?(uni.setStorageSync("accessToken",t.data.access_token),uni.setStorageSync("refreshToken",t.data.refresh_token),uni.setStorageSync("refresh_token_expries",t.data.refresh_token_expries),uni.setStorageSync("loginAccount",i.phone),(0,a.registPush)(),e.messageUpudateNum(),e.closeWindow()):uni.showToast({title:t.msg,icon:"none"})})).catch((function(t){uni.showToast({title:t.msg,icon:"none"})}))}else if("account"===this.loginType){var s=this.checkAccountLocked(this.phone),r=s.isLocked,n=s.remainingTime;if(r){var o=Math.floor(n/3600),d=Math.floor(n%3600/60),l=n%60,u="";return u=o>0?"\u8be5\u8d26\u53f7\u56e0\u591a\u6b21\u5bc6\u7801\u9519\u8bef\u5df2\u9501\u5b9a\uff0c\u8bf7".concat(o,"\u5c0f\u65f6").concat(d,"\u5206\u949f\u540e\u91cd\u8bd5"):d>0?"\u8be5\u8d26\u53f7\u56e0\u591a\u6b21\u5bc6\u7801\u9519\u8bef\u5df2\u9501\u5b9a\uff0c\u8bf7".concat(d,"\u5206\u949f").concat(l,"\u79d2\u540e\u91cd\u8bd5"):"\u8be5\u8d26\u53f7\u56e0\u591a\u6b21\u5bc6\u7801\u9519\u8bef\u5df2\u9501\u5b9a\uff0c\u8bf7".concat(l,"\u79d2\u540e\u91cd\u8bd5\u6216\u627e\u56de\u5bc6\u7801"),uni.showToast({title:u,icon:"none",duration:3e3}),!1}var f=i.validatePassword(i.password);if(!this.phone)return void uni.showToast({title:"\u8bf7\u8f93\u5165\u624b\u673a\u53f7",icon:"none"});if(!i.password)return uni.showToast({title:"\u8bf7\u8f93\u5165\u5bc6\u7801",icon:"none"}),!1;if(!f)return uni.showToast({title:"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u5bc6\u7801\uff086-20\u4f4d\u5b57\u6bcd + \u6570\u5b57/\u7b26\u53f7\u7ec4\u5408\uff09",icon:"none"}),!1;if(!i.isAgree)return uni.showToast({title:"\u8bf7\u5148\u9605\u8bfb\u5e76\u540c\u610f\u300a\u7528\u6237\u6ce8\u518c\u534f\u8bae\u300b\u4e0e\u300a\u9690\u79c1\u653f\u7b56\u300b",icon:"none"}),!1;c.default.post("/sj/accountlogin",{account:i.phone,password:i.password,deviceid:getApp().globalData.deviceid}).then((function(e){if(t("log",e," at pages/blogPopup/blogPopup.vue:562"),200==e.code)i.clearPwdLockCache(i.phone),uni.setStorageSync("accessToken",e.data.access_token),uni.setStorageSync("refreshToken",e.data.refresh_token),uni.setStorageSync("refresh_token_expries",e.data.refresh_token_expries),uni.setStorageSync("loginAccount",i.phone),(0,a.registPush)(),i.messageUpudateNum(),i.closeWindow();else if(502===e.code){var s=i.getPwdErrorCount(i.phone),r=5-s-1;r>0?(i.updatePwdErrorCount(i.phone,s+1),uni.showToast({title:"\u5bc6\u7801\u9519\u8bef\uff0c\u8fd8\u6709".concat(r,"\u6b21\u673a\u4f1a"),icon:"none",duration:2e3})):(i.updatePwdErrorCount(i.phone,5),i.setPwdLock(i.phone),uni.showToast({title:"\u8be5\u8d26\u53f7\u56e0\u591a\u6b21\u5bc6\u7801\u9519\u8bef\u5df2\u9501\u5b9a\uff0c\u8bf71\u5c0f\u65f6\u540e\u91cd\u8bd5\u6216\u627e\u56de\u5bc6\u7801",icon:"none",duration:3e3}))}else uni.showToast({title:e.msg,icon:"none"})})).catch((function(t){uni.showToast({title:t.msg,icon:"none"})}))}},validatePassword:function(t){return/^(?=.*[A-Za-z])(?=.*\d)[\w\W]{6,20}$/.test(t)},quitLoginPage:function(){o.quitLoginPage(),this.maskShow=!0},_presentLoginController:function(e){var i=this,s=this;uni.showLoading({mask:!0}),o.getLoginToken(5e3,e,(function(e){uni.hideLoading(),t("log","tokenResult:",JSON.stringify(e)," at pages/blogPopup/blogPopup.vue:643"),"600001"==e.resultCode?(t("log","\u6388\u6743\u9875\u62c9\u8d77\u6210\u529f"," at pages/blogPopup/blogPopup.vue:646"),i.maskShow=!1,o.setCheckboxIsChecked(!1)):"600000"==e.resultCode?(t("log","\u83b7\u53d6Token\u6210\u529f\uff0c\u63a5\u4e0b\u6765\u62ff\u7740\u7ed3\u679c\u91cc\u9762\u7684Token\u53bb\u670d\u52a1\u7aef\u6362\u53d6\u624b\u673a\u53f7\u7801\uff0cSDK\u670d\u52a1\u5230\u6b64\u7ed3\u675f"," at pages/blogPopup/blogPopup.vue:650"),c.default.post("/sj/phoneLogin",{token:e.token}).then((function(t){200==t.code?(uni.setStorageSync("accessToken",t.data.access_token),uni.setStorageSync("refreshToken",t.data.refresh_token),uni.setStorageSync("refresh_token_expries",t.data.refresh_token_expries),uni.setStorageSync("loginAccount",t.data.account),(0,a.registPush)(),s.messageUpudateNum(),s.closeWindow()):uni.showToast({title:t.msg,icon:"none"})})).catch((function(t){uni.showToast({title:t.msg,icon:"none"})})).finally((function(){i.quitLoginPage()}))):(e.msg&&(i.isFirst||uni.showToast({title:e.msg,icon:"none"})),i.maskShow=!0,i.quitLoginPage()),i.isFirst=!1}),(function(s){switch(t("log",JSON.stringify(s)," at pages/blogPopup/blogPopup.vue:699"),s.resultCode){case"700000":i.closeWindow(),i.quitLoginPage(),t("log","\u7528\u6237\u70b9\u51fb\u4e86\u8fd4\u56de"," at pages/blogPopup/blogPopup.vue:704");break;case"700001":i.quitLoginPage(),t("log","\u7528\u6237\u5207\u6362\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f"," at pages/blogPopup/blogPopup.vue:708");break;case"700002":t("log","\u7528\u6237\u70b9\u51fb\u767b\u5f55\u6309\u94ae"," at pages/blogPopup/blogPopup.vue:711"),s.result.isChecked||e.uiConfig.setPrivacyAlertIsNeedShow||plus.nativeUI.toast("\u8bf7\u540c\u610f\u670d\u52a1\u6761\u6b3e");break;case"700003":t("log","\u7528\u6237\u70b9\u51fbcheckBox"," at pages/blogPopup/blogPopup.vue:719");break;case"700004":t("log","\u7528\u6237\u70b9\u51fb\u534f\u8bae"," at pages/blogPopup/blogPopup.vue:722");break;case"700010":i.closeWindow(),t("log","\u7528\u6237\u70b9\u51fb\u8fd4\u56de\u6309\u94ae\uff0cAndroid\u4e13\u7528"," at pages/blogPopup/blogPopup.vue:726"),i.quitLoginPage();break;case"700011":i.closeWindow(),t("log","\u7528\u6237\u4f7f\u7528\u7269\u7406\u8fd4\u56de\u952e\uff0cAndroid\u4e13\u7528"," at pages/blogPopup/blogPopup.vue:731"),i.quitLoginPage();break;case"700006":t("log","\u5f39\u51fa\u4e8c\u6b21\u6388\u6743\u5f39\u7a97"," at pages/blogPopup/blogPopup.vue:735");break;case"700007":t("log","\u5173\u95ed\u4e8c\u6b21\u6388\u6743\u5f39\u7a97"," at pages/blogPopup/blogPopup.vue:738");break;case"700008":t("log","\u70b9\u51fb\u4e8c\u6b21\u6388\u6743\u5f39\u7a97\u786e\u8ba4\u6309\u94ae"," at pages/blogPopup/blogPopup.vue:741");break;case"700009":t("log","\u70b9\u51fb\u4e8c\u6b21\u6388\u6743\u5f39\u7a97\u534f\u8bae"," at pages/blogPopup/blogPopup.vue:744");break}}),(function(e){t("log","\u70b9\u51fb\u4e86\u81ea\u5b9a\u4e49\u63a7\u4ef6 "+JSON.stringify(e)," at pages/blogPopup/blogPopup.vue:749"),"close"==e.widgetId?o.quitLoginPage():"closePrivacyAlert"==e.widgetId?o.closePrivactAlertView():plus.nativeUI.toast("\u70b9\u51fb\u4e86\u81ea\u5b9a\u4e49\u6309\u94ae\uff0cwidgetId\uff1a"+e.widgetId)}))},handlePhoneInput:function(){this.phone=this.phone.replace(/\D/g,""),"code"===this.loginType&&this.phone.length>0&&!uni.$uv.test.mobile(this.phone)?this.phoneError="\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7":"account"===this.loginType&&this.phone.length>0&&this.phone.length<6?this.phoneError="\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u8d26\u53f7":this.phoneError=""}}};e.default=d}).call(this,i("f3b9")["default"])},2988:function(t,e,i){"use strict";i.r(e);var s=i("61f3"),a=i("9112");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},2994:function(t,e,i){"use strict";i.r(e);var s=i("1fed"),a=i("a646");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"29cb":function(t,e,i){"use strict";i.r(e);var s=i("9c92"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"29e0":function(t,e,i){"use strict";i.r(e);var s=i("483a"),a=i("9195");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"29f0":function(t,e,i){"use strict";i.r(e);var s=i("0cb9"),a=i("51ca");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"43f8aca8",null,!1,s["a"],void 0);e["default"]=n.exports},"2a21":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","migration-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u8fc1\u79fb\u8bf4\u660e",showBack:!0,borderBottom:"none",backgroundColor:"#fff",_i:1}}),i("view",{staticClass:t._$s(2,"sc","content-container"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","section"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","section-header"),attrs:{_i:4}},[i("image",{staticClass:t._$s(5,"sc","section-icon"),attrs:{_i:5}}),i("view",{staticClass:t._$s(6,"sc","section-title"),attrs:{_i:6}})]),i("view",{staticClass:t._$s(7,"sc","section-content"),attrs:{_i:7}})]),t._$s(8,"i",t.originalId)?i("view",{staticClass:t._$s(8,"sc","jump-section"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","jump-button"),attrs:{_i:9},on:{click:t.jumpToWeixinMiniProgram}},[i("text",{staticClass:t._$s(10,"sc","button-text"),attrs:{_i:10}})])]):t._e()])],1)},r=[]},"2a2c":function(t,e,i){"use strict";i.r(e);var s=i("9aa2"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"2b56":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","share-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5206\u4eab",showBack:!0,_i:1}}),i("view",{staticClass:t._$s(2,"sc","invite"),attrs:{_i:2}},[i("text",{staticClass:t._$s(3,"sc","invite-num"),attrs:{_i:3}},[t._v(t._$s(3,"t0-0",t._s(t.userInfo.invite_code)))]),i("text",{staticClass:t._$s(4,"sc","invite-tit"),attrs:{_i:4}})]),i("view",{staticClass:t._$s(5,"sc","invite-lists"),attrs:{_i:5}},[i("text",{staticClass:t._$s(6,"sc","invite-lists-tit"),attrs:{_i:6}}),i("view",{staticClass:t._$s(7,"sc","invite-lists-cont"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","invite-list-tit"),attrs:{_i:8}},[i("text",{staticClass:t._$s(9,"sc","title tit1"),attrs:{_i:9}}),i("text",{staticClass:t._$s(10,"sc","title tit2"),attrs:{_i:10}}),i("text",{staticClass:t._$s(11,"sc","title tit3"),attrs:{_i:11}}),i("text",{staticClass:t._$s(12,"sc","title tit4"),attrs:{_i:12}})]),t._$s(13,"i",0!=t.invitelist.length)?i("view",{attrs:{_i:13}},t._l(t._$s(14,"f",{forItems:t.invitelist}),(function(e,s,a,r){return i("view",{key:t._$s(14,"f",{forIndex:a,key:e.id}),staticClass:t._$s("14-"+r,"sc","invite-list-item"),attrs:{_i:"14-"+r}},[i("text",{staticClass:t._$s("15-"+r,"sc","item-title tit1"),attrs:{_i:"15-"+r}},[t._v(t._$s("15-"+r,"t0-0",t._s(e.name)))]),i("text",{staticClass:t._$s("16-"+r,"sc","item-title tit2"),attrs:{_i:"16-"+r}},[t._v(t._$s("16-"+r,"t0-0",t._s(e.account)))]),i("text",{staticClass:t._$s("17-"+r,"sc","item-title tit3"),attrs:{_i:"17-"+r}},[t._v(t._$s("17-"+r,"t0-0",t._s(e.type)))]),i("text",{staticClass:t._$s("18-"+r,"sc","item-title tit4"),attrs:{_i:"18-"+r}},[t._v(t._$s("18-"+r,"t0-0",t._s(e.applyyes_time)))])])})),0):i("view",{staticClass:t._$s(19,"sc","nothing-box"),attrs:{_i:19}},[i("text",{staticClass:t._$s(20,"sc","nothing-text"),attrs:{_i:20}})])])])],1)},r=[]},"2b67":function(t,e,i){"use strict";i.r(e);var s=i("655b"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"2bd7":function(t,e,i){"use strict";i.r(e);var s=i("87fa"),a=i("2bee");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"ce4f0616",null,!1,s["a"],void 0);e["default"]=n.exports},"2bee":function(t,e,i){"use strict";i.r(e);var s=i("79a8"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"2c0a":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","set-page"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","home-navbar"),attrs:{_i:1}},[i("custom-navbar",{attrs:{title:"\u8425\u4e1a\u8bbe\u7f6e","show-back":!0,"title-color":"#333333",backgroundColor:"#FFFFFF",_i:2}})],1),i("view",{staticClass:t._$s(3,"sc","set_item"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","set_item_left"),attrs:{_i:4},on:{click:t.goMoreSetting}},[i("image",{staticClass:t._$s(5,"sc","set_item_left_logo"),attrs:{_i:5}}),i("text",{staticClass:t._$s(6,"sc","text"),attrs:{_i:6}})]),i("view",{staticClass:t._$s(7,"sc","set_item_right"),attrs:{_i:7},on:{click:t.changeOrderTaking}},[t._$s(8,"i",1==t.userInfo.order_taking)?i("view",{staticClass:t._$s(8,"sc","btn_change btn_change_yes"),attrs:{_i:8}}):i("view",{staticClass:t._$s(9,"sc","btn_change btn_change_no"),attrs:{_i:9}}),i("view",{staticClass:t._$s(10,"sc","btn_change_ball"),style:t._$s(10,"s",{left:2==t.userInfo.order_taking?"8rpx":"88rpx"}),attrs:{_i:10}})])])])},r=[]},"2c2a":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,uvDivider:i("746b").default,uvOverlay:i("1d78").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","addTextAndImg"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u6dfb\u52a0\u56fe\u6587","show-back":!0,_i:1}}),t._$s(2,"i",0==t.list.length)?i("view",{staticClass:t._$s(2,"sc","firstAdd"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","firstAdd-garden"),attrs:{_i:3},on:{click:function(e){t.showPop=!0}}},[i("image",{staticClass:t._$s(4,"sc","firstAdd-garden-img"),attrs:{_i:4}})]),i("view",{staticClass:t._$s(5,"sc","firstAdd-text"),attrs:{_i:5}})]):i("view",{staticClass:t._$s(6,"sc","addTextAndImg-content"),attrs:{_i:6}},t._l(t._$s(7,"f",{forItems:t.list}),(function(e,s,a,r){return i("view",{key:t._$s(7,"f",{forIndex:a,key:s}),staticClass:t._$s("7-"+r,"sc","addTextAndImg-content-card"),attrs:{_i:"7-"+r}},[t._$s("8-"+r,"i",1==e.type)?i("uv-divider",{attrs:{dashed:!0,_i:"8-"+r}}):t._e(),t._$s("9-"+r,"i",2==e.type)?i("view",{staticClass:t._$s("9-"+r,"sc","addTextAndImg-content-card-text"),attrs:{_i:"9-"+r}},[t._v(t._$s("9-"+r,"t0-0",t._s(e.value)))]):t._$s("10-"+r,"e",3==e.type||4==e.type)?i("image",{attrs:{src:t._$s("10-"+r,"a-src",e.value),_i:"10-"+r}}):t._e(),i("view",{staticClass:t._$s("11-"+r,"sc","addTextAndImg-content-card-btns"),attrs:{_i:"11-"+r}},t._l(t._$s("12-"+r,"f",{forItems:t.btns}),(function(e,a,c,n){return t._$s("12-"+r+"-"+n,"i",!(0==s&&2==e.id)&&!(s==t.list.length-1&&3==e.id))?i("view",{key:t._$s("12-"+r,"f",{forIndex:c,key:e.id}),staticClass:t._$s("12-"+r+"-"+n,"sc","addTextAndImg-content-card-btns-btn"),attrs:{_i:"12-"+r+"-"+n},on:{click:function(i){return i.stopPropagation(),t.handleCard(e.id,s)}}},[t._v(t._$s("12-"+r+"-"+n,"t0-0",t._s(e.text)))]):t._e()})),0)],1)})),0),t._$s(13,"i",0!=t.list.length)?i("view",{staticClass:t._$s(13,"sc","bottom-buttons"),attrs:{_i:13}},[i("button",{staticClass:t._$s(14,"sc","btn-submit"),attrs:{_i:14},on:{click:t.submitForm}})]):t._e(),i("uv-overlay",{attrs:{show:t.showPop,_i:15},on:{click:function(e){t.showPop=!1}}},[i("view",{staticClass:t._$s(16,"sc","pop-cards"),attrs:{_i:16}},[t._l(t._$s(17,"f",{forItems:t.addWays}),(function(e,s,a,r){return i("view",{key:t._$s(17,"f",{forIndex:a,key:e.id}),staticClass:t._$s("17-"+r,"sc","pop-cards-card"),attrs:{_i:"17-"+r},on:{click:function(i){return i.stopPropagation(),t.addContent(e.id)}}},[i("image",{staticClass:t._$s("18-"+r,"sc","pop-cards-card-img"),attrs:{src:t._$s("18-"+r,"a-src",e.url),_i:"18-"+r}}),i("view",{staticClass:t._$s("19-"+r,"sc","pop-cards-card-text"),attrs:{_i:"19-"+r}},[t._v(t._$s("19-"+r,"t0-0",t._s(e.text)))])])})),i("view",{staticClass:t._$s(20,"sc","pop-cards-close"),attrs:{_i:20}})],2)]),i("uv-overlay",{attrs:{show:t.showTextarea,_i:21},on:{click:t.setTextarea}},[i("view",{staticClass:t._$s(22,"sc","pop-textarea"),attrs:{_i:22},on:{click:function(t){t.stopPropagation()}}},[i("textarea",{directives:[{name:"model",rawName:"v-model",value:t.textareaValue,expression:"textareaValue"}],attrs:{_i:23},domProps:{value:t._$s(23,"v-model",t.textareaValue)},on:{input:function(e){e.target.composing||(t.textareaValue=e.target.value)}}})])]),i("view",{staticClass:t._$s(24,"sc","permission"),class:t._$s(24,"c",{transform:t.isShowPer&&"xc"===t.nowQer}),attrs:{_i:24}},[i("view",{staticClass:t._$s(25,"sc","per-tit"),attrs:{_i:25}}),i("view",{staticClass:t._$s(26,"sc","per-cont"),attrs:{_i:26}})]),i("view",{staticClass:t._$s(27,"sc","permission"),class:t._$s(27,"c",{transform:t.isShowPer&&"xj"===t.nowQer}),attrs:{_i:27}},[i("view",{staticClass:t._$s(28,"sc","per-tit"),attrs:{_i:28}}),i("view",{staticClass:t._$s(29,"sc","per-cont"),attrs:{_i:29}})])],1)},r=[]},"2cb5":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e=0)?i("view",{staticClass:t._$s(8,"sc","shop-distance"),attrs:{_i:8}},[i("image",{staticClass:t._$s(9,"sc","position"),attrs:{_i:9}}),i("text",{staticClass:t._$s(10,"sc","shop-distance__right"),attrs:{_i:10}},[t._v(t._$s(10,"t0-0",t._s(t.shop.distance.toFixed(2))))])]):t._e()]),i("view",{staticClass:t._$s(11,"sc","time"),attrs:{_i:11}},[i("text",{staticClass:t._$s(12,"sc","num_medium_text"),attrs:{_i:12}},[t._v(t._$s(12,"t0-0",t._s(t.shop.business_time)))])]),i("scroll-view",{staticClass:t._$s(13,"sc","shop-info-left"),attrs:{_i:13}},[i("view",{staticClass:t._$s(14,"sc","shop-info-left-list"),attrs:{_i:14}},t._l(t._$s(15,"f",{forItems:t.shop.servers_kill_arr}),(function(e,s,a,r){return i("text",{key:t._$s(15,"f",{forIndex:a,key:"15-"+r}),staticClass:t._$s("15-"+r,"sc","shop-tags"),attrs:{_i:"15-"+r}},[t._v(t._$s("15-"+r,"t0-0",t._s(e)))])})),0)])])])])]),i("scroll-view",{},[i("view",{staticClass:t._$s(17,"sc","shop-list"),attrs:{_i:17}},t._l(t._$s(18,"f",{forItems:t.shop.servers_list}),(function(e,s,a,r){return i("view",{key:t._$s(18,"f",{forIndex:a,key:s}),staticClass:t._$s("18-"+r,"sc","shop-list-item"),attrs:{_i:"18-"+r},on:{click:function(i){return i.stopPropagation(),t.goToService(i,e)}}},[i("image",{staticClass:t._$s("19-"+r,"sc","shop-list-item__photo"),attrs:{src:t._$s("19-"+r,"a-src",e.photo[0]),_i:"19-"+r}}),i("view",{staticClass:t._$s("20-"+r,"sc","shop-list-item__title text-overflow-1"),attrs:{_i:"20-"+r}},[t._$s("21-"+r,"i",e.team_buy.length>0)?i("text",{staticClass:t._$s("21-"+r,"sc","shop-list-item__title__tip"),attrs:{_i:"21-"+r}}):t._e(),t._v(t._$s("20-"+r,"t1-0",t._s(e.title)))]),i("view",{staticClass:t._$s("22-"+r,"sc","shop-list-item__price"),attrs:{_i:"22-"+r}},[i("text"),t._v(t._$s("22-"+r,"t1-0",t._s(e.team_buy.length>0?e.team_buy.price:e.server_price)))])])})),0)])])},a=[]},"2cda":function(t,e,i){"use strict";i.r(e);var s=i("5e34"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"2d07":function(t,e,i){"use strict";i.r(e);var s=i("6159"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"2d95":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"ServeCard",props:{value:Number,info:{type:Object,default:function(){return{}}},showRadio:{type:Boolean,default:!0}},model:{prop:"value",event:"selectDetail"},computed:{},data:function(){return{}},methods:{}};e.default=s},"2d958":function(t,e,i){"use strict";i.r(e);var s=i("80d3"),a=i("8d07");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"2da2":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"wm-watermark",props:{text:{type:String,default:""},imgUrl:{type:String,default:""},opacity:{type:[Number,String],default:.6},num:{type:Number,default:8}},data:function(){return{}}};e.default=s},"2de4":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"NumberBox",props:{value:{type:[Number,String]},maxValue:{type:Number,default:30}},watch:{},data:function(){return{}},methods:{calculate:function(t){var e=this,i=Number(this.value)+t;if(i>this.maxValue){if(i-1)return void this.$nextTick((function(){e.$emit("input",0)}));uni.showToast({title:"\u4e0d\u80fd\u5c0f\u4e8e0%",icon:"none"})}else this.$nextTick((function(){e.$emit("input",i)}))},changeInput:function(t){var e=this,i=t.detail.value;this.$emit("input",i);var s=Number(i);isNaN(s)&&(s=0),s>this.maxValue?(s=this.maxValue,this.$nextTick((function(){e.$emit("input",s)}))):s<0&&(s=0,this.$nextTick((function(){e.$emit("input",s)})))}}};e.default=s},"2e00":function(t,e,i){"use strict";i.r(e);var s=i("1c64"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"2e0a":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,jpVerificationLiteralness:i("db3d").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),class:t._$s(0,"c",{isActive:t.isCode}),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u8d44\u8d28\u8ba4\u8bc1",showBack:!0,backgroundColor:"#fff",_i:1}}),t._$s(2,"i",!t.isCode)?i("view",{staticClass:t._$s(2,"sc","nocode"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","node-title"),attrs:{_i:3}}),i("view",{staticClass:t._$s(4,"sc","container-code"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","code-input"),attrs:{_i:5}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.value,expression:"value"}],staticClass:t._$s(6,"sc","uni-input"),attrs:{_i:6},domProps:{value:t._$s(6,"v-model",t.value)},on:{input:function(e){e.target.composing||(t.value=e.target.value)}}})]),i("jp-verification-literalness",{ref:"literalness",attrs:{contentWidth:115,contentHeight:35,_i:7}})],1),i("view",{staticClass:t._$s(8,"sc","node-btn"),class:t._$s(8,"c",{active:4==t.value.length}),attrs:{_i:8},on:{click:t.submit}})]):t._e(),t._$s(9,"i",t.isCode)?i("view",{staticClass:t._$s(9,"sc","isCode"),attrs:{_i:9}},[i("view",{staticClass:t._$s(10,"sc","isCode-title"),attrs:{_i:10}}),t._$s(11,"i",t.syrdetail.health_card)?i("view",{staticClass:t._$s(11,"sc","isCode-card"),attrs:{_i:11}},[i("view",{staticClass:t._$s(12,"sc","isCode-card-title"),attrs:{_i:12}},[i("image",{staticClass:t._$s(13,"sc","isCode-card-title__img"),attrs:{_i:13}})]),i("view",{staticClass:t._$s(14,"sc","isCode-card-card"),attrs:{_i:14}},[i("image",{staticClass:t._$s(15,"sc","isCode-card-card__img"),attrs:{src:t._$s(15,"a-src",t.syrdetail.health_card),_i:15}}),i("wmWatermark",{attrs:{text:"\u7f8e\u878d\u878d\u4e13\u7528",_i:16}})],1)]):t._e(),t._$s(17,"i",t.syrdetail.qualifications[0])?i("view",{staticClass:t._$s(17,"sc","isCode-card"),attrs:{_i:17}},[i("view",{staticClass:t._$s(18,"sc","isCode-card-title"),attrs:{_i:18}},[i("image",{staticClass:t._$s(19,"sc","isCode-card-title__img"),attrs:{_i:19}})]),i("view",{staticClass:t._$s(20,"sc","isCode-card-card"),attrs:{_i:20}},[i("image",{staticClass:t._$s(21,"sc","isCode-card-card__img"),attrs:{src:t._$s(21,"a-src",t.syrdetail.qualifications[0]),_i:21}}),i("wmWatermark",{attrs:{text:"\u7f8e\u878d\u878d\u4e13\u7528",_i:22}})],1)]):t._e(),t._$s(23,"i",t.syrdetail.uscc_photo)?i("view",{staticClass:t._$s(23,"sc","isCode-card"),attrs:{_i:23}},[i("view",{staticClass:t._$s(24,"sc","isCode-card-title"),attrs:{_i:24}},[i("image",{staticClass:t._$s(25,"sc","isCode-card-title__img"),attrs:{_i:25}})]),i("view",{staticClass:t._$s(26,"sc","isCode-card-card"),attrs:{_i:26}},[i("image",{staticClass:t._$s(27,"sc","isCode-card-card__img"),attrs:{src:t._$s(27,"a-src",t.syrdetail.uscc_photo),_i:27}}),i("wmWatermark",{attrs:{text:"\u7f8e\u878d\u878d\u4e13\u7528",_i:28}})],1)]):t._e(),t._$s(29,"i",t.syrdetail.shop_photo)?i("view",{staticClass:t._$s(29,"sc","isCode-card"),attrs:{_i:29}},[i("view",{staticClass:t._$s(30,"sc","isCode-card-title"),attrs:{_i:30}},[i("image",{staticClass:t._$s(31,"sc","isCode-card-title__img"),attrs:{_i:31}})]),i("view",{staticClass:t._$s(32,"sc","isCode-card-card"),attrs:{_i:32}},[i("image",{staticClass:t._$s(33,"sc","isCode-card-card__img"),attrs:{src:t._$s(33,"a-src",t.syrdetail.shop_photo),_i:33}})])]):t._e()]):t._e(),i("canvas",{})],1)},r=[]},"2e14":function(t,e,i){"use strict";i.r(e);var s=i("1c6c"),a=i("14fa");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"2832c752",null,!1,s["a"],void 0);e["default"]=n.exports},"2ea2":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","service-list"),attrs:{_i:0}},t._l(t._$s(1,"f",{forItems:t.list}),(function(e,s,a,r){return i("view",{key:t._$s(1,"f",{forIndex:a,key:s}),staticClass:t._$s("1-"+r,"sc","service-item"),attrs:{_i:"1-"+r},on:{click:function(i){return t.goSyrHome(e)}}},[i("image",{staticClass:t._$s("2-"+r,"sc","avatar"),attrs:{src:t._$s("2-"+r,"a-src",e.head_photo),_i:"2-"+r}}),i("view",{staticClass:t._$s("3-"+r,"sc","item-right"),attrs:{_i:"3-"+r}},[i("view",{staticClass:t._$s("4-"+r,"sc","top-info"),attrs:{_i:"4-"+r}},[i("text",{staticClass:t._$s("5-"+r,"sc","name text-overflow-1"),attrs:{_i:"5-"+r}},[t._v(t._$s("5-"+r,"t0-0",t._s(e.name)))]),i("view",{staticClass:t._$s("6-"+r,"sc","distance"),attrs:{_i:"6-"+r}},[i("image",{staticClass:t._$s("7-"+r,"sc","position"),attrs:{_i:"7-"+r}}),i("text",[t._v(t._$s("8-"+r,"t0-0",t._s(e.distance.toFixed(2))))])])]),i("view",{staticClass:t._$s("9-"+r,"sc","services"),attrs:{_i:"9-"+r}},t._l(t._$s("10-"+r,"f",{forItems:e.servers_kill_arr}),(function(s,a,c,n){return i("view",{key:t._$s("10-"+r,"f",{forIndex:c,key:a}),staticClass:t._$s("10-"+r+"-"+n,"sc","service-tag"),attrs:{_i:"10-"+r+"-"+n}},[i("view",[t._v(t._$s("11-"+r+"-"+n,"t0-0",t._s(s)))]),t._$s("12-"+r+"-"+n,"i",e.servers_kill_arr[a+1])?i("view",{staticClass:t._$s("12-"+r+"-"+n,"sc","split"),attrs:{_i:"12-"+r+"-"+n}}):t._e()])})),0),i("view",{staticClass:t._$s("13-"+r,"sc","time_box"),attrs:{_i:"13-"+r}},[t._$s("14-"+r,"i",e.earliest_reserve_time)?i("view",{staticClass:t._$s("14-"+r,"sc","time"),attrs:{_i:"14-"+r}},[t._v(t._$s("14-"+r,"t0-0",t._s(t.formatTimeToRelative(e.earliest_reserve_time))))]):i("view",{staticClass:t._$s("15-"+r,"sc","no-time1"),attrs:{_i:"15-"+r}}),i("view",{staticClass:t._$s("16-"+r,"sc","order-btn"),class:t._$s("16-"+r,"c",{orderBtnNo:!e.earliest_reserve_time}),attrs:{_i:"16-"+r}},[t._v(t._$s("16-"+r,"t0-0",t._s(t.btnText)))])])])])})),0)},a=[]},"2eb5":function(t,e,i){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i={name:"FilterPanel",props:{dateOptions:{type:Array,default:function(){return[{label:"\u4eca\u65e5\u53ef\u7ea6",value:"today"},{label:"\u8fd1\u4e24\u65e5\u53ef\u7ea6",value:"twoDays"},{label:"\u8fd1\u4e09\u65e5\u53ef\u7ea6",value:"threeDays"}]}},distanceOptions:{type:Array,default:function(){return[{label:"500m",value:.5},{label:"2km",value:2},{label:"5km",value:5},{label:"10km",value:10},{label:"20km",value:20}]}},tabOptions:{type:Array,default:function(){return[{label:"\u670d\u52a1\u65f6\u95f4",value:"time"},{label:"\u9644\u8fd1",value:"distance"}]}}},data:function(){return{popTab:"",activeTab:"",selectedDate:"",selectedDistance:""}},methods:{handleTabClick:function(e){t("log",111111," at pages/service/components/intmentFilter.vue:122"),this.activeTab==e?(this.activeTab="",this.reset()):(this.activeTab=e,this.popTab=e)},selectDate:function(t){this.selectedDistance="",this.selectedDate=t},selectDistance:function(t){this.selectedDate="",this.selectedDistance=t},reset:function(){this.selectedDate="",this.selectedDistance=""},confirm:function(){var t={selectedDistance:this.selectedDistance,selectedDate:this.selectedDate};this.$emit("filterConfirm",t),this.activeTab=""},closeAllPopups:function(){this.activeTab=""}}};e.default=i}).call(this,i("f3b9")["default"])},"2ed1":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","serve-lists"),attrs:{_i:0}},t._l(t._$s(1,"f",{forItems:t.info}),(function(e,s,a,r){return i("view",{key:t._$s(1,"f",{forIndex:a,key:s}),staticClass:t._$s("1-"+r,"sc","serve-lists__list"),attrs:{_i:"1-"+r}},[i("view",{staticClass:t._$s("2-"+r,"sc","serve-card"),attrs:{_i:"2-"+r},on:{click:function(i){return t.selectType(e)}}},[i("view",[t._$s("4-"+r,"i",e.disabled)?i("image",{staticClass:t._$s("4-"+r,"sc","serve-card-left__img"),attrs:{_i:"4-"+r}}):i("view",{staticClass:t._$s("5-"+r,"sc","serve-card-left"),attrs:{_i:"5-"+r}})]),i("view",{staticClass:t._$s("6-"+r,"sc","serve-card-right"),attrs:{_i:"6-"+r}},[i("image",{staticClass:t._$s("7-"+r,"sc","serve-card-right__img"),attrs:{src:t._$s("7-"+r,"a-src",e.photo[0]),_i:"7-"+r}}),i("view",{staticClass:t._$s("8-"+r,"sc","serve-card-right__content"),attrs:{_i:"8-"+r}},[i("view",[i("view",{staticClass:t._$s("10-"+r,"sc","serve-card-right__content__title"),attrs:{_i:"10-"+r}},[t._v(t._$s("10-"+r,"t0-0",t._s(e.title)))]),i("view",{staticClass:t._$s("11-"+r,"sc","serve-card-right__content__price"),attrs:{_i:"11-"+r}},[i("text",[t._v(t._$s("12-"+r,"t0-0",t._s(e.server_price)))]),t._v(t._$s("11-"+r,"t1-0",t._s(" "))+t._$s("11-"+r,"t1-1",t._s(e.server_time)))])]),i("view",{staticClass:t._$s("13-"+r,"sc","serve-card-right__content__sales"),attrs:{_i:"13-"+r}},[t._v(t._$s("13-"+r,"t0-0",t._s(e.sales_num)))])])])])])})),0)},a=[]},"2efa":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","service-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5de5\u65f6\u7ba1\u7406",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","flexed"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","headerBox"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","search-box"),attrs:{_i:4}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.title,expression:"title"}],staticClass:t._$s(5,"sc","search-inp"),attrs:{_i:5},domProps:{value:t._$s(5,"v-model",t.title)},on:{confirm:t.getServicesList,input:function(e){e.target.composing||(t.title=e.target.value)}}}),i("image",{staticClass:t._$s(6,"sc","search-icon"),attrs:{_i:6},on:{click:t.getServicesList}})]),i("view",{staticClass:t._$s(7,"sc","addBox"),attrs:{_i:7},on:{click:function(e){t.showTip=!0}}},[i("image",{staticClass:t._$s(8,"sc","addIcon"),attrs:{_i:8}}),i("text",{staticClass:t._$s(9,"sc","addText"),attrs:{_i:9}})])]),i("view",{staticClass:t._$s(10,"sc","tab-container"),attrs:{_i:10}},t._l(t._$s(11,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("view",{key:t._$s(11,"f",{forIndex:a,key:s}),class:t._$s("11-"+r,"c",["tab-item",{active:t.currentTab===s}]),attrs:{_i:"11-"+r},on:{click:function(i){return t.switchTab(s,e.id)}}},[t._v(t._$s("11-"+r,"t0-0",t._s(e.text)))])})),0)]),t._$s(12,"i",0!=t.services.length||!t.services)?i("view",{staticClass:t._$s(12,"sc","service-list"),attrs:{_i:12}},t._l(t._$s(13,"f",{forItems:t.services}),(function(e,s,a,r){return i("manHourCard",{key:t._$s(13,"f",{forIndex:a,key:"13-"+r}),attrs:{index:s,info:e,_i:"13-"+r},on:{viewEdit:t.viewEdit,viewList:t.viewList,viewRemove:t.viewRemove,changeSlide:t.changeSlide,deletemanHour:t.deletemanHour}})})),1):i("noData",{attrs:{_i:14}}),t._$s(15,"i",t.hasMore)?i("view",{staticClass:t._$s(15,"sc","load-more"),attrs:{_i:15}},[i("text")]):t._e(),i("tipsPopup",{attrs:{show:t.showTip,_i:17},on:{okBtn:t.addService,closePopup:function(e){t.showTip=!1}}})],1)},r=[]},"2f74":function(t,e,i){"use strict";i.r(e);var s=i("9146"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"2fb3":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={props:{tabList:{type:Array,required:!0},currentIndex:{type:Number,default:0}},data:function(){return{safeBottom:0}},created:function(){var t=this;uni.getSystemInfo({success:function(e){t.safeBottom=e.safeAreaInsets.bottom}})},methods:{handleSwitch:function(t){t!==this.currentIndex&&this.$emit("change",t)}}};e.default=s},"2fe6":function(t,e,i){"use strict";i.r(e);var s=i("d763"),a=i("2d07");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"302d":function(t,e,i){"use strict";i.r(e);var s=i("7af9"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},3067:function(t,e,i){"use strict";i.r(e);var s=i("c6b7"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"30d2":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","agree-radio"),style:t._$s(0,"s",{width:t.radioSize,height:t.radioSize}),attrs:{_i:0}},[t._$s(1,"i",!t.isAgree)?i("image",{staticClass:t._$s(1,"sc","agree-btn"),style:t._$s(1,"s",{width:t.radioSize,height:t.radioSize}),attrs:{src:t._$s(1,"a-src",t.noImg),_i:1},on:{click:function(e){return t.changeAgree(!0)}}}):i("image",{staticClass:t._$s(2,"sc","agree-btn"),style:t._$s(2,"s",{width:t.radioSize,height:t.radioSize}),attrs:{src:t._$s(2,"a-src",t.yesImg),_i:2},on:{click:function(e){return t.changeAgree(!1)}}})])},a=[]},"30d3":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$s(0,"i",t.show)?i("view",{staticClass:t._$s(0,"sc","tips-popup"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","mask"),attrs:{_i:1}}),i("view",{staticClass:t._$s(2,"sc","popup-content"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","popup-header"),attrs:{_i:3}},[i("text",{staticClass:t._$s(4,"sc","popup-title"),attrs:{_i:4}},[t._v(t._$s(4,"t0-0",t._s(t.title)))])]),i("view",{staticClass:t._$s(5,"sc","popup-body"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","rule-item"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","rule-text"),attrs:{_i:7}},[t._t("default",null,{_i:8})],2)])]),i("view",{staticClass:t._$s(9,"sc","btn_box"),attrs:{_i:9}},[i("view",{staticClass:t._$s(10,"sc","btn"),attrs:{_i:10},on:{click:t.goAdd}},[t._v(t._$s(10,"t0-0",t._s(t.sureText)))]),i("view",{staticClass:t._$s(11,"sc","btn"),attrs:{_i:11},on:{click:t.handleClose}},[t._v(t._$s(11,"t0-0",t._s(t.closeText)))])])])]):t._e()},a=[]},"30e5":function(t,e,i){"use strict";i.r(e);var s=i("ce11"),a=i("5bec");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},3144:function(t,e,i){"use strict";i.r(e);var s=i("85b6"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"315b":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"OrderCard",props:{dataItem:{type:Object},typeId:{type:Number},showState:{type:Boolean,default:!0},haveButton:{type:Boolean,default:!0}},computed:{useTime:function(){var t=this.dataItem.reservation_time,e=this.dataItem.server_time||0;return t?function(t,e){if(!t)return"";var i=t.replace(/-/g,"/"),s=new Date(i);if(isNaN(s.getTime()))throw new Error("\u65e0\u6548\u7684\u5f00\u59cb\u65f6\u95f4\u683c\u5f0f\uff0c\u8bf7\u4f7f\u7528\u7c7b\u4f3c'2025-08-04 14:00:00'\u7684\u683c\u5f0f");var a=new Date(s.getTime()+60*e*1e3),r=function(t){var e=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0");return"".concat(e,".").concat(i)},c=function(t){var e=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0");return"".concat(e,":").concat(i)},n=r(s),o=c(s),d=r(a),l=c(a);return"".concat(n," ").concat(o,"-").concat(d," ").concat(l)}(t,e):""},stateText:function(){return["","\u5f85\u652f\u4ed8","\u5f85\u63a5\u5355","\u5f85\u5f00\u59cb","\u8fdb\u884c\u4e2d","\u5df2\u5b8c\u6210","\u5df2\u8bc4\u4ef7","\u5df2\u53d6\u6d88"][this.dataItem.state]},getGroupType:function(){var t,e=this,i=null===(t=[{id:1,text:"\u56e2\u8d2d\u4e2d"},{id:2,text:"\u5df2\u6210\u56e2"},{id:3,text:"\u62fc\u56e2\u5931\u8d25"}].find((function(t){return t.id==e.dataItem.team_buy_order_state})))||void 0===t?void 0:t.text;return i}},methods:{emitCancel:function(){this.$emit("cancel")},emitAccept:function(){this.$emit("accept")},emitStart:function(){this.$emit("start")},emitDone:function(){this.$emit("done")}}};e.default=s},"319f":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={props:{goodsList:{type:Array,required:!0,default:function(){return[]}}},data:function(){return{}},methods:{onselfClick:function(t){this.$emit("self-click",t)}}};e.default=s},"31a2":function(t,e,i){"use strict";i.r(e);var s=i("9a63"),a=i("17cd");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"0545a0bc",null,!1,s["a"],void 0);e["default"]=n.exports},"31da":function(t,e,i){"use strict";i.r(e);var s=i("41fe"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"31df":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={agreeRadio:i("a6d8").default,aliOssUploader:i("93a6").default,popupPicker:i("2077").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","add-service"),attrs:{_i:0}},[t._$s(1,"i",t.formData.back_text&&4==t.formData.state)?i("view",{staticClass:t._$s(1,"sc","tip"),attrs:{_i:1}},[i("image",{staticClass:t._$s(2,"sc","tip-icon"),attrs:{_i:2}}),i("text",[t._v(t._$s(3,"t0-0",t._s(t.formData.back_text)))])]):t._e(),i("view",{staticClass:t._$s(4,"sc","form-container"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","form-item"),attrs:{_i:5}},[i("text",{staticClass:t._$s(6,"sc","form-label required"),attrs:{_i:6}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.title,expression:"formData.title"}],staticClass:t._$s(7,"sc","form-input"),attrs:{_i:7},domProps:{value:t._$s(7,"v-model",t.formData.title)},on:{input:function(e){e.target.composing||t.$set(t.formData,"title",e.target.value)}}})]),i("view",{staticClass:t._$s(8,"sc","form-item"),attrs:{_i:8}},[i("text",{staticClass:t._$s(9,"sc","form-label required"),attrs:{_i:9}}),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.formData.server_price,expression:"formData.server_price",modifiers:{number:!0}}],staticClass:t._$s(10,"sc","form-input"),attrs:{_i:10},domProps:{value:t._$s(10,"v-model",t.formData.server_price)},on:{input:[function(e){e.target.composing||t.$set(t.formData,"server_price",t._n(e.target.value))},t.inpPrice],blur:[t.inpPrice,function(e){return t.$forceUpdate()}],confirm:t.inpPrice}})]),i("view",{staticClass:t._$s(11,"sc","form-item"),attrs:{_i:11}},[i("text",{staticClass:t._$s(12,"sc","form-label required"),attrs:{_i:12}}),i("view",{staticClass:t._$s(13,"sc","form-right"),attrs:{_i:13},on:{click:t.openServiceTypePicker}},[i("text",{class:t._$s(14,"c",["form-value",t.formData.first_class_id?"":"placeholder"]),attrs:{_i:14}},[t._v(t._$s(14,"t0-0",t._s(t.serviceType||"\u9009\u62e9\u5206\u7c7b")))]),i("image",{staticClass:t._$s(15,"sc","arrow-right"),attrs:{_i:15}})])]),t._$s(16,"i",t.showCategory)?i("view",{staticClass:t._$s(16,"sc","form-item"),attrs:{_i:16}},[i("text",{staticClass:t._$s(17,"sc","form-label required"),attrs:{_i:17}}),i("view",{staticClass:t._$s(18,"sc","form-right"),attrs:{_i:18},on:{click:t.openCategoryPicker}},[i("text",{class:t._$s(19,"c",["form-value",t.formData.second_class_id?"":"placeholder"]),attrs:{_i:19}},[t._v(t._$s(19,"t0-0",t._s(t.category||"\u9009\u62e9\u5b50\u7c7b")))]),i("image",{staticClass:t._$s(20,"sc","arrow-right"),attrs:{_i:20}})])]):t._e(),t._$s(21,"i",1==t.artisanType)?i("view",{staticClass:t._$s(21,"sc","form-item shopsale-box"),attrs:{_i:21}},[i("view",{staticClass:t._$s(22,"sc","form-label required"),attrs:{_i:22}},[t._v(t._$s(22,"t0-0",t._s(t.showShopPrice?"\u95e8\u5e97\u4e0b\u5355\u8d2d\u4e70\u540e\uff0c\u60a8\u9700\u5230\u5230\u5bb6\u81f3\u95e8\u5e97\u8fdb\u884c\u670d\u52a1\uff0c\u95e8\u5e97\u7aef\u5c55\u793a\u4ef7\u683c\u4e3a":""))),t._$s(23,"i",t.showShopPrice)?i("text",{attrs:{_i:23}},[t._v(t._$s(23,"t0-0",t._s(t.shopPrice)))]):t._e(),t._v(t._$s(22,"t2-0",t._s(t.showShopPrice?"\u5143\u3002":"")))]),i("view",{staticClass:t._$s(24,"sc","shopsale-change"),attrs:{_i:24}},[i("view",{staticClass:t._$s(25,"sc","shopsale-option"),attrs:{_i:25},on:{click:function(e){return t.changeSale(2)}}},[i("agree-radio",{attrs:{isAgree:2==t.formData.sj_see,_i:26}}),i("text",{staticClass:t._$s(27,"sc","option-text"),attrs:{_i:27}})],1),i("view",{staticClass:t._$s(28,"sc","shopsale-option"),attrs:{_i:28},on:{click:function(e){return t.changeSale(1)}}},[i("agree-radio",{attrs:{isAgree:1==t.formData.sj_see,_i:29}}),i("text",{staticClass:t._$s(30,"sc","option-text"),attrs:{_i:30}})],1)])]):t._e(),i("view",{staticClass:t._$s(31,"sc","form-item"),attrs:{_i:31}},[i("text",{staticClass:t._$s(32,"sc","form-label required"),attrs:{_i:32}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.server_time,expression:"formData.server_time"}],staticClass:t._$s(33,"sc","form-input"),attrs:{_i:33},domProps:{value:t._$s(33,"v-model",t.formData.server_time)},on:{input:function(e){e.target.composing||t.$set(t.formData,"server_time",e.target.value)}}}),i("text",{staticClass:t._$s(34,"sc","pr-240"),attrs:{_i:34}})]),i("view",{staticClass:t._$s(35,"sc","form-step"),attrs:{_i:35}},[i("view",{staticClass:t._$s(36,"sc","form-item"),attrs:{_i:36}},[i("text",{staticClass:t._$s(37,"sc","form-label"),attrs:{_i:37}}),i("view",{staticClass:t._$s(38,"sc","form-detail"),attrs:{_i:38}},[i("text",{attrs:{_i:39},on:{click:t.goImgAndText}},[t._v(t._$s(39,"t0-0",t._s(t.formData.graphic_details?"\u5df2\u8bbe\u7f6e":"\u53bb\u8bbe\u7f6e")))])])])]),i("view",{staticClass:t._$s(40,"sc","form-step"),attrs:{_i:40}},[i("view",{staticClass:t._$s(41,"sc","form-item"),attrs:{_i:41}},[i("text",{staticClass:t._$s(42,"sc","form-label required"),attrs:{_i:42}}),i("view",{staticClass:t._$s(43,"sc","form-detail"),attrs:{_i:43}},[i("text",{attrs:{_i:44},on:{click:t.showDetailCont}}),t._$s(45,"i",t.isShow)?i("scroll-view",{staticClass:t._$s(45,"sc","detail-cont"),attrs:{_i:45}},t._l(t._$s(46,"f",{forItems:t.nowDetailList}),(function(e,s,a,r){return i("view",{key:t._$s(46,"f",{forIndex:a,key:"46-"+r}),staticClass:t._$s("46-"+r,"sc","detail-item"),attrs:{_i:"46-"+r},on:{click:function(i){return t.addDetailItem(e)}}},[t._v(t._$s("46-"+r,"t0-0",t._s(e.detailItem)))])})),0):t._e()])]),t._l(t._$s(47,"f",{forItems:t.formData.detail}),(function(e,s,a,r){return i("view",{key:t._$s(47,"f",{forIndex:a,key:"47-"+r}),staticClass:t._$s("47-"+r,"sc","step"),attrs:{_i:"47-"+r}},[i("text",{staticClass:t._$s("48-"+r,"sc","form-label lable-view"),attrs:{_i:"48-"+r}},[t._v(t._$s("48-"+r,"t0-0",t._s(e.title)))]),i("textarea",{directives:[{name:"model",rawName:"v-model",value:t.formData.detail[s].text,expression:"formData.detail[i].text"}],staticClass:t._$s("49-"+r,"sc","step-textarea"),attrs:{_i:"49-"+r},domProps:{value:t._$s("49-"+r,"v-model",t.formData.detail[s].text)},on:{input:function(e){e.target.composing||t.$set(t.formData.detail[s],"text",e.target.value)}}}),i("image",{staticClass:t._$s("50-"+r,"sc","delete-icon"),attrs:{_i:"50-"+r},on:{click:function(i){return t.deleteDetailItem(e,s)}}})])}))],2),i("view",{staticClass:t._$s(51,"sc","form-step"),attrs:{_i:51}},[i("view",{staticClass:t._$s(52,"sc","form-item"),attrs:{_i:52}},[i("text",{staticClass:t._$s(53,"sc","form-label required"),attrs:{_i:53}}),i("text",{attrs:{_i:54},on:{click:t.addStep}})]),t._l(t._$s(55,"f",{forItems:t.formData.process}),(function(e,s,a,r){return i("view",{key:t._$s(55,"f",{forIndex:a,key:"55-"+r}),staticClass:t._$s("55-"+r,"sc","step"),attrs:{_i:"55-"+r}},[i("text",{staticClass:t._$s("56-"+r,"sc","form-label"),attrs:{_i:"56-"+r}},[t._v(t._$s("56-"+r,"t0-0",t._s(s+1)))]),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.process[s].text,expression:"formData.process[i].text"}],staticClass:t._$s("57-"+r,"sc","step-inp"),attrs:{_i:"57-"+r},domProps:{value:t._$s("57-"+r,"v-model",t.formData.process[s].text)},on:{input:function(e){e.target.composing||t.$set(t.formData.process[s],"text",e.target.value)}}}),i("image",{staticClass:t._$s("58-"+r,"sc","delete-icon"),attrs:{_i:"58-"+r},on:{click:function(e){return t.deleteStep(s)}}})])}))],2),i("view",{staticClass:t._$s(59,"sc","form-item-up upload-item"),attrs:{_i:59}},[i("view",[i("text",{staticClass:t._$s(61,"sc","form-label"),attrs:{_i:61}}),i("text",{staticClass:t._$s(62,"sc","upload-tip"),attrs:{_i:62}})]),i("ali-oss-uploader",{attrs:{"max-count":1,"max-size":100,type:t.artisanType+1,"user-id":t.formData.publish_user_id,width:"654rpx",kind:2,"file-string":t.formData.video,accept:"video/*","button-text":"\u4e0a\u4f20\u89c6\u9891",_i:63},on:{success:t.uploadVideoSuc,error:t.uploadVideoErr,delete:t.uploadVideoDel,ckeckisShowPer:t.ckeckisShowPer,ckecknowQer:t.ckecknowQer}})],1),i("view",{staticClass:t._$s(64,"sc","form-item-up upload-item"),attrs:{_i:64}},[i("view",[i("text",{staticClass:t._$s(66,"sc","form-label required"),attrs:{_i:66}}),i("text",{staticClass:t._$s(67,"sc","upload-tip"),attrs:{_i:67}})]),i("ali-oss-uploader",{attrs:{"max-count":9,"max-size":5,width:"654rpx",type:t.artisanType+1,"user-id":t.formData.publish_user_id,"button-text":"\u4e0a\u4f20\u56fe\u7247",tips:"\u6700\u591a\u4e0a\u4f203\u5f20\u56fe\u7247\uff0c\u6bcf\u5f20\u4e0d\u8d85\u8fc75MB",_i:68},on:{success:t.onUploadSuccess,error:t.onUploadError,delete:t.onFileDelete,ckeckisShowPer:t.ckeckisShowPer,ckecknowQer:t.ckecknowQer},model:{value:t._$s(68,"v-model",t.formData.photo),callback:function(e){t.$set(t.formData,"photo",e)},expression:"formData.photo"}})],1)]),i("view",{staticClass:t._$s(69,"sc","bottom-buttons"),attrs:{_i:69}},[t._$s(70,"i",!t.state||0==t.state)?i("button",{staticClass:t._$s(70,"sc","btn-draft"),attrs:{_i:70},on:{click:t.saveDraft}}):t._e(),i("button",{staticClass:t._$s(71,"sc","btn-submit"),attrs:{_i:71},on:{click:t.submitForm}})]),i("popup-picker",{attrs:{show:t.showServiceTypePicker,title:"\u9009\u62e9\u670d\u52a1\u7c7b\u578b",columns:[t.serviceTypes],value:[t.selectedServiceTypeIndex],_i:72},on:{close:function(e){t.showServiceTypePicker=!1},confirm:t.handleServiceTypeConfirm}}),i("popup-picker",{attrs:{show:t.showCategoryPicker,title:"\u9009\u62e9\u670d\u52a1\u5206\u7c7b",columns:[t.categoryAll],value:[t.selectedCategoryIndex],_i:73},on:{close:function(e){t.showCategoryPicker=!1},confirm:t.handleCategoryConfirm}}),t._$s(74,"i",t.isShow)?i("view",{staticClass:t._$s(74,"sc","mask"),attrs:{_i:74},on:{click:function(e){t.isShow=!1}}}):t._e(),i("view",{staticClass:t._$s(75,"sc","permission"),class:t._$s(75,"c",{transform:t.isShowPer&&"xc"===t.nowQer}),attrs:{_i:75}},[i("view",{staticClass:t._$s(76,"sc","per-tit"),attrs:{_i:76}}),i("view",{staticClass:t._$s(77,"sc","per-cont"),attrs:{_i:77}})]),i("view",{staticClass:t._$s(78,"sc","permission"),class:t._$s(78,"c",{transform:t.isShowPer&&"xj"===t.nowQer}),attrs:{_i:78}},[i("view",{staticClass:t._$s(79,"sc","per-tit"),attrs:{_i:79}}),i("view",{staticClass:t._$s(80,"sc","per-cont"),attrs:{_i:80}})])],1)},r=[]},"31ed":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","qualification-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:t.navTitle,showBack:!0,_i:1}}),t._$s(2,"i",t.editable)?i("view",{staticClass:t._$s(2,"sc","change-tip"),attrs:{_i:2}},[i("text")]):t._e(),i("view",{staticClass:t._$s(4,"sc","content-area"),style:t._$s(4,"s",{paddingBottom:t.buttonAreaHeight+"px"}),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","section"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","section-title"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","title-bar"),attrs:{_i:7}}),i("text",{staticClass:t._$s(8,"sc","title-text"),attrs:{_i:8}})]),i("view",{staticClass:t._$s(9,"sc","form-item box-cont"),attrs:{_i:9}},[i("text",{staticClass:t._$s(10,"sc","label required"),attrs:{_i:10}}),i("view",{staticClass:t._$s(11,"sc","upload-tip"),attrs:{_i:11}}),i("view",{staticClass:t._$s(12,"sc","upload-container"),attrs:{_i:12}},[i("view",{staticClass:t._$s(13,"sc","upload-box"),attrs:{_i:13},on:{click:function(e){t.editable&&t.chooseImage("uscc_photo")}}},[i("view",{staticClass:t._$s(14,"sc","upload-camera license-upload"),attrs:{_i:14}},[t._$s(15,"i",t.displayData.uscc_photo)?i("image",{staticClass:t._$s(15,"sc","preview-image"),attrs:{src:t._$s(15,"a-src",t.displayData.uscc_photo),_i:15}}):i("image",{staticClass:t._$s(16,"sc","camera-icon"),attrs:{_i:16}})])]),i("text",{staticClass:t._$s(17,"sc","upload-label required"),attrs:{_i:17}})])]),i("view",{staticClass:t._$s(18,"sc","form-item-one box-cont"),attrs:{_i:18}},[i("view",{staticClass:t._$s(19,"sc","label-wrapper"),attrs:{_i:19}},[i("text",{staticClass:t._$s(20,"sc","label required"),attrs:{_i:20}})]),i("input",{directives:[{name:"model",rawName:"v-model",value:t.displayData.uscc_type,expression:"displayData.uscc_type"}],staticClass:t._$s(21,"sc","input"),attrs:{disabled:t._$s(21,"a-disabled",!t.editable),_i:21},domProps:{value:t._$s(21,"v-model",t.displayData.uscc_type)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"uscc_type",e.target.value)}}})]),i("view",{staticClass:t._$s(22,"sc","form-item-one box-cont"),attrs:{_i:22}},[i("view",{staticClass:t._$s(23,"sc","label-wrapper"),attrs:{_i:23}},[i("text",{staticClass:t._$s(24,"sc","label required"),attrs:{_i:24}}),i("image",{staticClass:t._$s(25,"sc","label-icon"),attrs:{_i:25},on:{click:function(e){return t.showTipPopup("uscc_num")}}})]),i("input",{directives:[{name:"model",rawName:"v-model",value:t.displayData.uscc_num,expression:"displayData.uscc_num"}],staticClass:t._$s(26,"sc","input"),attrs:{disabled:t._$s(26,"a-disabled",!t.editable),_i:26},domProps:{value:t._$s(26,"v-model",t.displayData.uscc_num)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"uscc_num",e.target.value)}}})]),i("view",{staticClass:t._$s(27,"sc","form-item-one box-cont"),attrs:{_i:27}},[i("view",{staticClass:t._$s(28,"sc","label-wrapper"),attrs:{_i:28}},[i("text",{staticClass:t._$s(29,"sc","label required"),attrs:{_i:29}}),i("image",{staticClass:t._$s(30,"sc","label-icon"),attrs:{_i:30},on:{click:function(e){return t.showTipPopup("uscc_name")}}})]),i("input",{directives:[{name:"model",rawName:"v-model",value:t.displayData.uscc_name,expression:"displayData.uscc_name"}],staticClass:t._$s(31,"sc","input"),attrs:{disabled:t._$s(31,"a-disabled",!t.editable),_i:31},domProps:{value:t._$s(31,"v-model",t.displayData.uscc_name)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"uscc_name",e.target.value)}}})])]),i("view",{staticClass:t._$s(32,"sc","section"),attrs:{_i:32}},[i("view",{staticClass:t._$s(33,"sc","section-title"),attrs:{_i:33}},[i("view",{staticClass:t._$s(34,"sc","title-bar"),attrs:{_i:34}}),i("text")]),i("view",{staticClass:t._$s(36,"sc","section"),attrs:{_i:36}},[i("view",{staticClass:t._$s(37,"sc","box-cont"),attrs:{_i:37}},[i("view",{staticClass:t._$s(38,"sc","form-item"),attrs:{_i:38}},[i("text",{staticClass:t._$s(39,"sc","label required"),attrs:{_i:39}}),i("view",{staticClass:t._$s(40,"sc","upload-tip"),attrs:{_i:40}}),i("view",{staticClass:t._$s(41,"sc","idcard-upload-vertical-container"),attrs:{_i:41}},[i("view",{staticClass:t._$s(42,"sc","idcard-upload-vertical-item"),attrs:{_i:42}},[i("view",{staticClass:t._$s(43,"sc","upload-box"),attrs:{_i:43},on:{click:function(e){t.editable&&t.chooseImage("legal_idcard_positive")}}},[i("view",{staticClass:t._$s(44,"sc","upload-camera idcard-front"),attrs:{_i:44}},[t._$s(45,"i",t.displayData.legal_idcard_positive)?i("image",{staticClass:t._$s(45,"sc","preview-image"),attrs:{src:t._$s(45,"a-src",t.displayData.legal_idcard_positive),_i:45}}):i("image",{staticClass:t._$s(46,"sc","camera-icon"),attrs:{_i:46}})])]),i("text",{staticClass:t._$s(47,"sc","upload-label required"),attrs:{_i:47}})]),i("view",{staticClass:t._$s(48,"sc","idcard-upload-vertical-item"),attrs:{_i:48}},[i("view",{staticClass:t._$s(49,"sc","upload-box"),attrs:{_i:49},on:{click:function(e){t.editable&&t.chooseImage("legal_idcard_negative")}}},[i("view",{staticClass:t._$s(50,"sc","upload-camera idcard-back"),attrs:{_i:50}},[t._$s(51,"i",t.displayData.legal_idcard_negative)?i("image",{staticClass:t._$s(51,"sc","preview-image"),attrs:{src:t._$s(51,"a-src",t.displayData.legal_idcard_negative),_i:51}}):i("image",{staticClass:t._$s(52,"sc","camera-icon"),attrs:{_i:52}})])]),i("text",{staticClass:t._$s(53,"sc","upload-label required"),attrs:{_i:53}})])])])])]),i("view",{staticClass:t._$s(54,"sc","form-item-one box-cont"),attrs:{_i:54}},[i("view",{staticClass:t._$s(55,"sc","label-wrapper"),attrs:{_i:55}},[i("text",{staticClass:t._$s(56,"sc","label required"),attrs:{_i:56}}),i("image",{staticClass:t._$s(57,"sc","label-icon"),attrs:{_i:57},on:{click:function(e){return t.showTipPopup("legal_name")}}})]),i("input",{directives:[{name:"model",rawName:"v-model",value:t.displayData.legal_name,expression:"displayData.legal_name"}],staticClass:t._$s(58,"sc","input"),attrs:{disabled:t._$s(58,"a-disabled",!t.editable),_i:58},domProps:{value:t._$s(58,"v-model",t.displayData.legal_name)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"legal_name",e.target.value)}}})]),i("view",{staticClass:t._$s(59,"sc","form-item-one box-cont"),attrs:{_i:59}},[i("text",{staticClass:t._$s(60,"sc","label required"),attrs:{_i:60}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.displayData.legal_phone,expression:"displayData.legal_phone"}],staticClass:t._$s(61,"sc","input"),attrs:{disabled:t._$s(61,"a-disabled",!t.editable),_i:61},domProps:{value:t._$s(61,"v-model",t.displayData.legal_phone)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"legal_phone",e.target.value)}}})]),i("view",{staticClass:t._$s(62,"sc","form-item-one box-cont"),attrs:{_i:62}},[i("text",{staticClass:t._$s(63,"sc","label required"),attrs:{_i:63}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.displayData.legal_idcard_num,expression:"displayData.legal_idcard_num"}],staticClass:t._$s(64,"sc","input"),attrs:{disabled:t._$s(64,"a-disabled",!t.editable),_i:64},domProps:{value:t._$s(64,"v-model",t.displayData.legal_idcard_num)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"legal_idcard_num",e.target.value)}}})]),i("view",{staticClass:t._$s(65,"sc","form-item box-cont"),attrs:{_i:65}},[i("text",{staticClass:t._$s(66,"sc","label required"),attrs:{_i:66}}),i("view",{staticClass:t._$s(67,"sc","radio-group"),attrs:{_i:67}},[i("view",{staticClass:t._$s(68,"sc","radio-item"),attrs:{_i:68},on:{click:function(e){t.editable&&t.setIdcardValidType("permanent")}}},[i("view",{staticClass:t._$s(69,"sc","radio"),class:t._$s(69,"c",{checked:1===t.displayData.legal_idcard_expiry_type}),attrs:{_i:69}},[t._$s(70,"i",1===t.displayData.legal_idcard_expiry_type)?i("image",{staticClass:t._$s(70,"sc","radio-icon-image"),attrs:{_i:70}}):t._e()]),i("text",{staticClass:t._$s(71,"sc","radio-label"),attrs:{_i:71}})]),i("view",{staticClass:t._$s(72,"sc","radio-item"),attrs:{_i:72},on:{click:function(e){t.editable&&t.setIdcardValidType("date")}}},[i("view",{staticClass:t._$s(73,"sc","radio"),class:t._$s(73,"c",{checked:2===t.displayData.legal_idcard_expiry_type}),attrs:{_i:73}},[t._$s(74,"i",2===t.displayData.legal_idcard_expiry_type)?i("image",{staticClass:t._$s(74,"sc","radio-icon-image"),attrs:{_i:74}}):t._e()]),i("text",{staticClass:t._$s(75,"sc","radio-label"),attrs:{_i:75}})])])]),i("view",{staticClass:t._$s(76,"sc","box-cont"),attrs:{_i:76}},[i("view",{staticClass:t._$s(77,"sc","date-range-container"),attrs:{_i:77}},[i("view",{staticClass:t._$s(78,"sc","date-item"),attrs:{_i:78}},[i("text",{staticClass:t._$s(79,"sc","date-label"),attrs:{_i:79}}),i("view",{staticClass:t._$s(80,"sc","date-picker-box"),attrs:{_i:80},on:{click:function(e){t.editable&&t.openDatePicker("idcard_start_date")}}},[i("text",{class:t._$s(81,"c",t.displayData.idcard_start_date?"date-value":"placeholder"),attrs:{_i:81}},[t._v(t._$s(81,"t0-0",t._s(t.formatDateForDisplay(t.displayData.idcard_start_date)||"\u8bf7\u9009\u62e9\u65e5\u671f")))]),i("view",{staticClass:t._$s(82,"sc","date-divider"),attrs:{_i:82}}),i("image",{staticClass:t._$s(83,"sc","date-arrow"),attrs:{_i:83}})])]),i("view",{staticClass:t._$s(84,"sc","date-item"),attrs:{_i:84}},[i("text",{staticClass:t._$s(85,"sc","date-label"),attrs:{_i:85}}),i("view",{staticClass:t._$s(86,"sc","date-picker-box"),class:t._$s(86,"c",{disabled:1===t.displayData.legal_idcard_expiry_type}),attrs:{_i:86},on:{click:function(e){t.editable&&1!==t.displayData.legal_idcard_expiry_type&&t.openDatePicker("idcard_end_date")}}},[i("text",{class:t._$s(87,"c",t.displayData.idcard_end_date?"date-value":"placeholder"),attrs:{_i:87}},[t._v(t._$s(87,"t0-0",t._s(t.formatDateForDisplay(t.displayData.idcard_end_date)||"\u8bf7\u9009\u62e9\u65e5\u671f")))]),i("view",{staticClass:t._$s(88,"sc","date-divider"),attrs:{_i:88}}),i("image",{staticClass:t._$s(89,"sc","date-arrow"),attrs:{src:t._$s(89,"a-src",1===t.displayData.legal_idcard_expiry_type?"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/bb9a757f-a36c-46bb-a59f-2caddac5365b":"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ce52b49f-2261-49ca-96ed-e9ad47049649"),_i:89}})])])])])]),i("view",{staticClass:t._$s(90,"sc","safe-bottom"),attrs:{_i:90}})]),i("view",{ref:"buttonArea",staticClass:t._$s(91,"sc","bottom-actions"),attrs:{_i:91}},[t._$s(92,"i",t.shouldShowRejectReason)?i("view",{staticClass:t._$s(92,"sc","reject-reason"),attrs:{_i:92}},[i("view",{staticClass:t._$s(93,"sc","reject-title"),attrs:{_i:93}}),i("view",{staticClass:t._$s(94,"sc","reject-detail"),attrs:{_i:94}},[t._v(t._$s(94,"t0-0",t._s(t.backText)))])]):t._e(),t._$s(95,"i",t.showAuditTip)?i("view",{staticClass:t._$s(95,"sc","audit-tip"),attrs:{_i:95}},[i("text",{staticClass:t._$s(96,"sc","audit-text"),attrs:{_i:96}})]):t._e(),t._$s(97,"i","change"===t.buttonType)?i("view",{staticClass:t._$s(97,"sc","action-btn change-info-btn"),attrs:{_i:97},on:{click:t.startChange}},[i("text",{staticClass:t._$s(98,"sc","btn-text"),attrs:{_i:98}})]):t._e(),t._$s(99,"i","edit"===t.buttonType)?i("view",{staticClass:t._$s(99,"sc","action-buttons-row"),attrs:{_i:99}},[i("view",{staticClass:t._$s(100,"sc","action-btn cancel-btn"),attrs:{_i:100},on:{click:t.cancelChange}},[i("text",{staticClass:t._$s(101,"sc","btn-text cancel-text"),attrs:{_i:101}})]),i("view",{staticClass:t._$s(102,"sc","action-btn submit-btn"),attrs:{_i:102},on:{click:t.submitChange}},[i("text",{staticClass:t._$s(103,"sc","btn-text"),attrs:{_i:103}})])]):t._e(),t._$s(104,"i","view"===t.buttonType)?i("view",{staticClass:t._$s(104,"sc","action-btn view-change-btn"),attrs:{_i:104},on:{click:t.togglePendingData}},[i("text",{staticClass:t._$s(105,"sc","btn-text"),attrs:{_i:105}},[t._v(t._$s(105,"t0-0",t._s(t.showPendingData?"\u8fd4\u56de":"\u67e5\u770b\u6211\u7684\u53d8\u66f4")))])]):t._e(),t._$s(106,"i","reject"===t.buttonType)?i("view",{staticClass:t._$s(106,"sc","action-btn resubmit-btn"),attrs:{_i:106},on:{click:t.startChange}},[i("text",{staticClass:t._$s(107,"sc","btn-text"),attrs:{_i:107}})]):t._e()]),i("view",{staticClass:t._$s(108,"sc","popup"),class:t._$s(108,"c",{show:t.showMerchantTypePickerFlag}),attrs:{_i:108}},[i("view",{staticClass:t._$s(109,"sc","popup-mask"),attrs:{_i:109},on:{click:t.hideMerchantTypePicker}}),i("view",{staticClass:t._$s(110,"sc","popup-content"),attrs:{_i:110}},[i("view",{staticClass:t._$s(111,"sc","popup-header"),attrs:{_i:111}},[i("text",{staticClass:t._$s(112,"sc","popup-title"),attrs:{_i:112}}),i("text",{staticClass:t._$s(113,"sc","popup-close"),attrs:{_i:113},on:{click:t.hideMerchantTypePicker}})]),i("view",{staticClass:t._$s(114,"sc","popup-body"),attrs:{_i:114}},[i("view",{staticClass:t._$s(115,"sc","radio-list"),attrs:{_i:115}},t._l(t._$s(116,"f",{forItems:t.merchantTypeList}),(function(e,s,a,r){return i("view",{key:t._$s(116,"f",{forIndex:a,key:s}),staticClass:t._$s("116-"+r,"sc","radio-item"),attrs:{_i:"116-"+r},on:{click:function(i){return t.selectMerchantType(e)}}},[i("view",{staticClass:t._$s("117-"+r,"sc","radio"),class:t._$s("117-"+r,"c",{checked:t.displayData.uscc_type===e.value}),attrs:{_i:"117-"+r}},[t._$s("118-"+r,"i",t.displayData.uscc_type===e.value)?i("image",{staticClass:t._$s("118-"+r,"sc","radio-icon-image"),attrs:{_i:"118-"+r}}):t._e()]),i("text",{staticClass:t._$s("119-"+r,"sc","radio-label"),attrs:{_i:"119-"+r}},[t._v(t._$s("119-"+r,"t0-0",t._s(e.label)))])])})),0)]),i("view",{staticClass:t._$s(120,"sc","popup-footer"),attrs:{_i:120}},[i("view",{staticClass:t._$s(121,"sc","popup-btn confirm"),attrs:{_i:121},on:{click:t.confirmMerchantType}},[i("text",{staticClass:t._$s(122,"sc","btn-text"),attrs:{_i:122}})])])])]),i("view",{staticClass:t._$s(123,"sc","popup"),class:t._$s(123,"c",{show:t.showDatePickerFlag}),attrs:{_i:123}},[i("view",{staticClass:t._$s(124,"sc","popup-mask"),attrs:{_i:124},on:{click:t.hideDatePicker}}),i("view",{staticClass:t._$s(125,"sc","popup-content"),attrs:{_i:125}},[i("view",{staticClass:t._$s(126,"sc","popup-header"),attrs:{_i:126}},[i("text",{staticClass:t._$s(127,"sc","cancel-text"),attrs:{_i:127},on:{click:t.hideDatePicker}}),i("text",{staticClass:t._$s(128,"sc","title"),attrs:{_i:128}}),i("text",{staticClass:t._$s(129,"sc","confirm-text"),attrs:{_i:129},on:{click:t.confirmDate}})]),i("view",{staticClass:t._$s(130,"sc","region-body"),attrs:{_i:130}},[i("picker-view",{staticClass:t._$s(131,"sc","picker-scroll"),attrs:{value:t._$s(131,"a-value",t.dateValue),"indicator-style":t._$s(131,"a-indicator-style",t.indicatorStyle),_i:131},on:{change:t.bindDateChange}},[i("picker-view-column",t._l(t._$s(133,"f",{forItems:t.years}),(function(e,s,a,r){return i("view",{key:t._$s(133,"f",{forIndex:a,key:s}),staticClass:t._$s("133-"+r,"sc","picker-item"),attrs:{_i:"133-"+r}},[t._v(t._$s("133-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",t._l(t._$s(135,"f",{forItems:t.months}),(function(e,s,a,r){return i("view",{key:t._$s(135,"f",{forIndex:a,key:s}),staticClass:t._$s("135-"+r,"sc","picker-item"),attrs:{_i:"135-"+r}},[t._v(t._$s("135-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",t._l(t._$s(137,"f",{forItems:t.days}),(function(e,s,a,r){return i("view",{key:t._$s(137,"f",{forIndex:a,key:s}),staticClass:t._$s("137-"+r,"sc","picker-item"),attrs:{_i:"137-"+r}},[t._v(t._$s("137-"+r,"t0-0",t._s(e)))])})),0)])])])]),i("view",{staticClass:t._$s(138,"sc","tip-popup"),class:t._$s(138,"c",{show:t.showTipPopupFlag}),attrs:{_i:138}},[i("view",{staticClass:t._$s(139,"sc","tip-popup-mask"),attrs:{_i:139},on:{click:t.hideTipPopup}}),i("view",{staticClass:t._$s(140,"sc","tip-popup-content"),attrs:{_i:140}},[i("image",{staticClass:t._$s(141,"sc","tip-popup-bg"),attrs:{_i:141}}),i("view",{staticClass:t._$s(142,"sc","tip-popup-body"),attrs:{_i:142}},[i("view",{staticClass:t._$s(143,"sc","tip-title"),attrs:{_i:143}},[t._v(t._$s(143,"t0-0",t._s(t.tipTitle)))]),i("view",{staticClass:t._$s(144,"sc","tip-image-container"),attrs:{_i:144}},[i("image",{staticClass:t._$s(145,"sc","tip-image"),attrs:{src:t._$s(145,"a-src",t.tipImage),_i:145}})]),i("view",{staticClass:t._$s(146,"sc","tip-buttons"),attrs:{_i:146}},[i("view",{staticClass:t._$s(147,"sc","tip-btn cancel"),attrs:{_i:147},on:{click:t.hideTipPopup}},[i("text",{staticClass:t._$s(148,"sc","btn-text"),attrs:{_i:148}})]),i("view",{staticClass:t._$s(149,"sc","tip-btn confirm"),attrs:{_i:149},on:{click:t.hideTipPopup}},[i("text",{staticClass:t._$s(150,"sc","btn-text"),attrs:{_i:150}})])])])])]),i("view",{staticClass:t._$s(151,"sc","permission"),class:t._$s(151,"c",{transform:t.isShowStoragePer}),attrs:{_i:151}},[i("view",{staticClass:t._$s(152,"sc","per-tit"),attrs:{_i:152}}),i("view",{staticClass:t._$s(153,"sc","per-cont"),attrs:{_i:153}})]),i("view",{staticClass:t._$s(154,"sc","permission"),class:t._$s(154,"c",{transform:t.isShowCameraPer}),attrs:{_i:154}},[i("view",{staticClass:t._$s(155,"sc","per-tit"),attrs:{_i:155}}),i("view",{staticClass:t._$s(156,"sc","per-cont"),attrs:{_i:156}})])],1)},r=[]},"31fd":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u63d0\u4ea4\u8ba2\u5355",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),t._$s(2,"i",t.timeOptions.length>0)?i("select-time-page2",{ref:"selecTime",attrs:{timeOptions:t.timeOptions,service:t.manHourInfo,url:"/syr/reserve/timeCheck",identity:1,_i:2},on:{changeTime:t.changeTime}}):t._e(),t._$s(3,"i",t.selectTime)?i("view",{staticClass:t._$s(3,"sc","container-time"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","container-time__left"),attrs:{_i:4}}),i("view",{staticClass:t._$s(5,"sc","container-time__right"),attrs:{_i:5}},[t._v(t._$s(5,"t0-0",t._s(t.selectTime)))])]):t._e(),i("view",{staticClass:t._$s(6,"sc","container-syr"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","container-syr__user"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","container-syr__user_picker"),attrs:{_i:8}},[i("image",{staticClass:t._$s(9,"sc","container-syr__user__picker__img"),attrs:{src:t._$s(9,"a-src",t.userSyr.head_photo),_i:9}})]),i("view",{staticClass:t._$s(10,"sc","container-syr__user__introduce"),attrs:{_i:10}},[i("view",{staticClass:t._$s(11,"sc","container-syr__user__introduce__name"),attrs:{_i:11}},[t._v(t._$s(11,"t0-0",t._s(t.workSeat.title)))]),i("view",{staticClass:t._$s(12,"sc","container-syr__user__introduce__price"),attrs:{_i:12}},[t._v(t._$s(12,"t0-0",t._s(t.workSeat.price)))])]),i("view",{staticClass:t._$s(13,"sc","container-syr__user__line"),attrs:{_i:13}}),i("view",{staticClass:t._$s(14,"sc","container-syr__user__detail"),attrs:{_i:14}},[i("view",{staticClass:t._$s(15,"sc","container-syr__user__detail__name"),attrs:{_i:15}}),i("view",{staticClass:t._$s(16,"sc","container-syr__user__detail__price"),attrs:{_i:16}},[t._v(t._$s(16,"t0-0",t._s(t.totalPrice)))])]),i("view",{staticClass:t._$s(17,"sc","container-syr__user__detail"),attrs:{_i:17}},[i("view",{staticClass:t._$s(18,"sc","container-syr__user__detail__name"),attrs:{_i:18}}),i("view",{staticClass:t._$s(19,"sc","container-syr__user__detail__price"),attrs:{_i:19}},[t._v(t._$s(19,"t0-0",t._s(t.totalPrice)))])])])]),i("view",{staticClass:t._$s(20,"sc","container-footer"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","container-footer__left"),attrs:{_i:21}},[i("view",{staticClass:t._$s(22,"sc","container-footer__left__price"),attrs:{_i:22}},[t._v(t._$s(22,"t0-0",t._s(t.totalPrice)))]),i("view",{staticClass:t._$s(23,"sc","container-footer__left__title"),attrs:{_i:23}})]),i("view",{staticClass:t._$s(24,"sc","container-footer__right"),attrs:{_i:24},on:{click:t.submit}})])],1)},r=[]},"320d":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("7ca3")),c=s(i("ee10")),n=s(i("6473")),o=(i("53d1"),s(i("16bb")));function d(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function l(t){for(var e=1;e2&&(e=i[0]+"."+i.slice(1).join("")),i.length>1&&(e=i[0]+"."+i[1].slice(0,2)),e.startsWith(".")&&(e="0"+e),this.$set(this.formData,"server_price",e)},saveDraft:(0,l.debounce)((function(){var t=this;if(!this.isDraft){var e=v(v({},this.formData),{},{second_class_ids:this.formData.second_class_ids.join(","),state:1,photo:JSON.stringify(this.formData.photo)});if(this.formData.title)if(e.price)if(e.price<.1)uni.showToast({title:"\u5de5\u65f6\u4ef7\u683c\u4e0d\u80fd\u5c0f\u4e8e0.1",icon:"none"});else if(this.formData.photo&&0!==this.formData.photo.length){e.state=0;var i=null;i=e.id?"/syr/workHour/edit":"/syr/workHour/add",n.default.post(i,e).then((function(e){if(200==e.code){t.isDraft=!0;var i=getCurrentPages(),s=i[i.length-2];uni.showToast({title:e.msg,icon:"success",duration:1e3}),setTimeout((function(){uni.navigateBack({delta:1,success:function(){s.$vm.currentTab=3,s.$vm.state=0,s.$vm.getServicesList()}})}),500)}else uni.showToast({title:e.msg,icon:"none"}),t.isDraft=!1}))}else uni.showToast({title:"\u8bf7\u4e0a\u4f20\u670d\u52a1\u56fe\u7247",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u5de5\u65f6\u4ef7\u683c",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u5de5\u65f6\u540d\u79f0",icon:"none"})}}),500),submitForm:(0,l.debounce)((function(){var e=this,i=v(v({},this.formData),{},{second_class_ids:this.formData.second_class_ids.join(","),state:1,photo:JSON.stringify(this.formData.photo)});if(t("log",i," at pages/syr/manHour/addManHour.vue:373"),!this.isAdd)if(i.first_class_id)if(i.second_class_ids.length<1)uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u5b50\u7c7b",icon:"none"});else if(this.formData.title)if(i.price)if(i.price<.1)uni.showToast({title:"\u5de5\u65f6\u4ef7\u683c\u4e0d\u80fd\u5c0f\u4e8e0.1",icon:"none"});else if(this.formData.detail)if(this.formData.photo&&0!==this.formData.photo.length){2==this.artisanType&&delete this.formData.sj_see,delete this.formData.state;var s=null;s=this.formData.id?"/syr/workHour/edit":"/syr/workHour/add",this.isAdd=!0,n.default.post(s,i).then((function(t){if(200==t.code){var i=getCurrentPages(),s=i[i.length-2];uni.showToast({title:t.msg,icon:"success",duration:600,mask:!0}),setTimeout((function(){uni.navigateBack({delta:1,success:function(){s.$vm.currentTab=1,s.$vm.state=1,s.$vm.getServicesList()}})}),500)}else uni.showToast({title:t.msg,icon:"none"}),e.isAdd=!1}))}else uni.showToast({title:"\u8bf7\u4e0a\u4f20\u670d\u52a1\u56fe\u7247",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u5de5\u65f6\u63cf\u8ff0",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u5de5\u65f6\u4ef7\u683c",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u5de5\u65f6\u540d\u79f0",icon:"none"});else uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u5206\u7c7b",icon:"none"})}),500),endSelect:function(t){this.isClassSelect=!1,this.serviceType=t}}};e.default=h}).call(this,i("f3b9")["default"])},3237:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.getBaseUrl=function(){return d.apply(this,arguments)},e.setVersion=function(){var e=uni.getSystemInfoSync();c=e.appWgtVersion,n=e.deviceBrand,t("log","DeviceType",n," at utils/version.js:26"),o=e.platform,"android"===o?o="sj_android":"ios"===o&&(o="sj_ios");var i={VersionCode:c||"",DeviceBrand:o||"",DeviceType:n||""};uni.setStorageSync("setVersion",i)};var a=s(i("127e")),r=s(i("ee10")),c="",n="",o="";function d(){return d=(0,r.default)(a.default.mark((function e(){var i;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return i=uni.getStorageSync("setVersion"),e.next=3,uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:i.VersionCode,DeviceBrand:i.DeviceBrand,DeviceType:i.DeviceType},success:function(t){return 200==t.data.code&&uni.setStorageSync("baseUrl",t.data.data.url),t.data.data.url},fail:function(e){return t("log","\u8bf7\u6c42\u5931\u8d25",e," at utils/version.js:82"),"http://60.247.146.5:93"},complete:function(){t("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/version.js:86")}});case 3:case"end":return e.stop()}}),e)}))),d.apply(this,arguments)}}).call(this,i("f3b9")["default"])},"329e":function(t,e,i){"use strict";i.r(e);var s=i("2f74");for(var a in s)["default"].indexOf(a)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(a);var r=i("828b"),c=Object(r["a"])(s["default"],void 0,void 0,!1,null,null,null,!1,void 0,void 0);e["default"]=c.exports},"32a4":function(t,e,i){"use strict";(function(t,s){var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=a(i("127e")),c=a(i("ee10")),n={isLocationEnabled:function(){var t=this;return new Promise((function(e,i){t._checkAppLocation().then(e).catch(i)}))},_checkAppLocation:function(){return new Promise((function(e){plus.geolocation.getCurrentPosition((function(){return e(!0)}),(function(i){t("log",i,"---------------------"," at utils/locationService.js:48"),2===i.code||i.code,e(!1)}),{provider:"system",enableHighAccuracy:!1})}))},_checkWxLocation:function(){return new Promise((function(t){s.getSetting({success:function(e){var i=e.authSetting||{};t(!1!==i["scope.userLocation"])},fail:function(){t(!1)}})}))},_checkH5Location:function(){return new Promise((function(t){navigator.permissions&&navigator.permissions.query?navigator.permissions.query({name:"geolocation"}).then((function(e){t("denied"!==e.state)})).catch((function(){t("geolocation"in navigator)})):t("geolocation"in navigator)}))},requestLocationPermission:function(){return new Promise((function(t){uni.authorize({scope:"scope.userLocation",success:function(){return t(!0)},fail:function(){return t(!1)}})}))},openSystemLocationSetting:function(){if("Android"===plus.os.name){var t=plus.android.importClass("android.content.Intent"),e=plus.android.importClass("android.provider.Settings"),i=plus.android.runtimeMainActivity(),s=new t(e.ACTION_LOCATION_SOURCE_SETTINGS);i.startActivity(s)}else if("iOS"===plus.os.name){var a=plus.ios.importClass("UIApplication"),r=plus.ios.importClass("NSURL"),c=r.URLWithString("App-Prefs:root=Privacy&path=LOCATION"),n=a.sharedApplication();plus.ios.invoke(n,"openURL:",c)}},openAppSettings:function(){if("Android"===plus.os.name){var t=plus.android.importClass("android.content.Intent"),e=plus.android.importClass("android.provider.Settings"),i=plus.android.importClass("android.net.Uri"),s=plus.android.runtimeMainActivity(),a=new t;a.setAction(e.ACTION_APPLICATION_DETAILS_SETTINGS);var r=i.fromParts("package",s.getPackageName(),null);a.setData(r),s.startActivity(a)}else if("iOS"===plus.os.name){var c=plus.ios.invoke("UIApplication","sharedApplication"),n=plus.ios.invoke("NSURL","URLWithString:","app-settings:");plus.ios.invoke(c,"openURL:options:completionHandler:",n),plus.ios.deleteObject(n),plus.ios.deleteObject(c)}},getCurrentPosition:function(){var t=arguments,e=this;return(0,c.default)(r.default.mark((function i(){var s;return r.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return t.length>0&&void 0!==t[0]?t[0]:{},i.next=3,e.isLocationEnabled();case 3:if(s=i.sent,s){i.next=7;break}return i.abrupt("return",s);case 7:return i.abrupt("return",s);case 8:case"end":return i.stop()}}),i)})))()}};e.default=n}).call(this,i("f3b9")["default"],i("ed83")["default"])},"32b9":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$s(0,"i",t.show)?i("view",{class:t._$s(0,"c",["uv-toolbar",{"uv-border-bottom":t.showBorder}]),attrs:{_i:0},on:{touchmove:function(e){return e.stopPropagation(),e.preventDefault(),t.noop(e)}}},[i("view",{staticClass:t._$s(1,"sc","uv-toolbar__cancel__wrapper"),attrs:{_i:1}},[i("text",{staticClass:t._$s(2,"sc","uv-toolbar__wrapper__cancel"),style:t._$s(2,"s",{color:t.cancelColor}),attrs:{_i:2},on:{click:t.cancel}},[t._v(t._$s(2,"t0-0",t._s(t.cancelText)))])]),t._$s(3,"i",t.title)?i("text",{staticClass:t._$s(3,"sc","uv-toolbar__title uv-line-1"),attrs:{_i:3}},[t._v(t._$s(3,"t0-0",t._s(t.title)))]):t._e(),i("view",{staticClass:t._$s(4,"sc","uv-toolbar__confirm__wrapper"),attrs:{_i:4}},[i("text",{staticClass:t._$s(5,"sc","uv-toolbar__wrapper__confirm"),style:t._$s(5,"s",{color:t.confirmColor}),attrs:{_i:5},on:{click:t.confirm}},[t._v(t._$s(5,"t0-0",t._s(t.confirmText)))])])]):t._e()},a=[]},3409:function(t,e,i){"use strict";i.r(e);var s=i("ab3c"),a=i("b92e");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"343c":function(t,e,i){"use strict";i.r(e);var s=i("56e7"),a=i("5baf");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"bcbe6396",null,!1,s["a"],void 0);e["default"]=n.exports},"343e":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uvTabbar:i("00c1").default,uvTabbarItem:i("5813").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uv-tabbar",{attrs:{fixed:!0,value:t.selected,activeColor:"#ee0a24",placeholder:!1,safeAreaInsetBottom:!1,customStyle:{height:"110rpx"},_i:0},on:{change:t.change1}},t._l(t._$s(1,"f",{forItems:t.$store.state.tabbarList}),(function(e,s,a,r){return i("uv-tabbar-item",{key:t._$s(1,"f",{forIndex:a,key:s}),attrs:{badge:t.getNum(s),customStyle:{height:"110rpx"},_i:"1-"+r},scopedSlots:t._u([{key:"active-icon",fn:function(t,s,a){return[i("image",{staticClass:s._$s("3-"+r+"-"+a,"sc","icon"),attrs:{src:s._$s("3-"+r+"-"+a,"a-src",e.selectedIconPath),_i:"3-"+r+"-"+a}})]}},{key:"inactive-icon",fn:function(t,s,a){return[i("image",{staticClass:s._$s("5-"+r+"-"+a,"sc","icon"),attrs:{src:s._$s("5-"+r+"-"+a,"a-src",e.iconPath),_i:"5-"+r+"-"+a}})]}}],null,!0)})})),1)},r=[]},"344f":function(t,e,i){"use strict";i.r(e);var s=i("0b59"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"34c3":function(t,e,i){"use strict";i.r(e);var s=i("4d62"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"34cf":function(t,e,i){var s=i("ed45"),a=i("7172"),r=i("6382"),c=i("dd3e");t.exports=function(t,e){return s(t)||a(t,e)||r(t,e)||c()},t.exports.__esModule=!0,t.exports["default"]=t.exports},"34f3":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","class_select"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","classList"),attrs:{_i:1}},t._l(t._$s(2,"f",{forItems:t.classList}),(function(e,s,a,r){return i("view",{key:t._$s(2,"f",{forIndex:a,key:"2-"+r}),staticClass:t._$s("2-"+r,"sc","classItem"),attrs:{_i:"2-"+r},on:{click:function(i){return t.changeClass(e.id)}}},[i("image",{staticClass:t._$s("3-"+r,"sc","classIcon"),attrs:{src:t._$s("3-"+r,"a-src",e.photo),_i:"3-"+r}}),i("view",{staticClass:t._$s("4-"+r,"sc","text"),class:t._$s("4-"+r,"c",{activeText:e.id==t.classId}),attrs:{_i:"4-"+r}},[t._v(t._$s("4-"+r,"t0-0",t._s(e.title)))])])})),0),i("view",{staticClass:t._$s(5,"sc","secondClass"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","secondClassTitle"),attrs:{_i:6}}),i("view",{staticClass:t._$s(7,"sc","secondClassList"),attrs:{_i:7}},t._l(t._$s(8,"f",{forItems:t.secondClassList}),(function(e,s,a,r){return i("view",{key:t._$s(8,"f",{forIndex:a,key:"8-"+r}),staticClass:t._$s("8-"+r,"sc","secondClassItem"),class:t._$s("8-"+r,"c",{secondClassItemActive:t.secondClassId.includes(e.id)}),attrs:{_i:"8-"+r},on:{click:function(i){return t.changeSecondClass(e.id)}}},[t._v(t._$s("8-"+r,"t0-0",t._s(e.title)))])})),0)]),i("view",{staticClass:t._$s(9,"sc","tips"),attrs:{_i:9}},[i("text",{staticClass:t._$s(10,"sc","red"),attrs:{_i:10}}),i("text")]),i("view",{staticClass:t._$s(12,"sc","fixBottomBtn"),attrs:{_i:12}},[i("view",{staticClass:t._$s(13,"sc","btn"),attrs:{_i:13},on:{click:t.handleClose}})])])},a=[]},"353b":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("9827")),r=a.default;e.default=r},"356b":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"tips-popup",props:{show:{type:Boolean,default:!1}},methods:{handleClose:function(){this.$emit("closePopup",!1)},goAdd:function(){this.$emit("closePopup",!1),this.$emit("okBtn",!1)}}};e.default=s},"35dc":function(t,e,i){"use strict";i.r(e);var s=i("ece0"),a=i("9148");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"360f":function(t,e,i){"use strict";i.r(e);var s=i("bf46"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},3650:function(t,e,i){"use strict";i.r(e);var s=i("94a4"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"36b8":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u6dfb\u52a0\u5458\u5de5",leftImg:"/static/images/back.png",showUser:!0,backgroundColor:"transparent",titleColor:"#000",borderBottom:"none",_i:1},scopedSlots:t._u([{key:"right",fn:function(e,s,a){return[i("view",{staticClass:s._$s("3-"+a,"sc","navbar-right"),attrs:{_i:"3-"+a},on:{click:t.goRecord}},[i("image",{staticClass:s._$s("4-"+a,"sc","navbar-right-img"),attrs:{src:"/static/images/icons/record.png",_i:"4-"+a}}),i("view",{staticClass:s._$s("5-"+a,"sc","navbar-right-text"),attrs:{_i:"5-"+a}},[t._v("\u9080\u8bf7\u8bb0\u5f55")])])]}}])}),i("searchBox",{staticClass:t._$s(6,"sc","searchBox"),attrs:{placeholder:"\u8bf7\u8f93\u5165\u5458\u5de5\u624b\u673a\u53f7",bgClor:"transparent",_i:6},on:{confirm:t.search,search:t.search},model:{value:t._$s(6,"v-model",t.queryData.phone),callback:function(e){t.$set(t.queryData,"phone",e)},expression:"queryData.phone"}}),i("scroll-view",{style:t._$s(7,"s",{height:"calc(100vh - "+(t.statusBarHeight+200)+"rpx)"}),attrs:{_i:7}},[t._$s(8,"i",t.sryDetail&&t.sryDetail.id)?i("view",{staticClass:t._$s(8,"sc","page-container"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","user-info"),attrs:{_i:9}},[i("image",{staticClass:t._$s(10,"sc","avatar"),attrs:{src:t._$s(10,"a-src",t.sryDetail.head_photo),_i:10}}),i("view",{staticClass:t._$s(11,"sc","user-detail"),attrs:{_i:11}},[i("view",{staticClass:t._$s(12,"sc","flex-row-center-between"),attrs:{_i:12}},[i("text",{staticClass:t._$s(13,"sc","user-name"),attrs:{_i:13}},[t._v(t._$s(13,"t0-0",t._s(t.sryDetail.name)))]),i("view",{staticClass:t._$s(14,"sc","enter-btn flex-row-center"),attrs:{_i:14},on:{click:t.goDetail}})]),i("view",{staticClass:t._$s(15,"sc","tags"),attrs:{_i:15}},[i("text",[t._v(t._$s(16,"t0-0",t._s(t.sryDetail.servers_kill_arr_text)))])])])]),i("view",{staticClass:t._$s(17,"sc","service-list"),attrs:{_i:17}},[i("view",{staticClass:t._$s(18,"sc","marketing-center"),attrs:{_i:18}},[i("view",{staticClass:t._$s(19,"sc","flex-row-center"),attrs:{_i:19}},[i("view",{staticClass:t._$s(20,"sc","mc-line"),attrs:{_i:20}}),i("text",{staticClass:t._$s(21,"sc","mc-title"),attrs:{_i:21}})]),i("view",{staticClass:t._$s(22,"sc","select-btn"),attrs:{_i:22},on:{click:t.goServiceList}},[i("text"),i("image",{staticClass:t._$s(24,"sc","select-btn-img"),attrs:{_i:24}})])]),i("view",{staticClass:t._$s(25,"sc","service-title"),attrs:{_i:25}},[i("text")]),t._l(t._$s(27,"f",{forItems:t.mergeServiceList.slice(0,10)}),(function(e,s,a,r){return i("view",{key:t._$s(27,"f",{forIndex:a,key:s}),staticClass:t._$s("27-"+r,"sc","service-item"),attrs:{_i:"27-"+r}},[i("text",{staticClass:t._$s("28-"+r,"sc","item-index flex-row-center-center"),attrs:{_i:"28-"+r}},[t._v(t._$s("28-"+r,"t0-0",t._s(s+1)))]),i("view",{staticClass:t._$s("29-"+r,"sc","item-info"),attrs:{_i:"29-"+r}},[i("text",{staticClass:t._$s("30-"+r,"sc","item-name"),attrs:{_i:"30-"+r}},[t._v(t._$s("30-"+r,"t0-0",t._s(e.title))+t._$s("30-"+r,"t0-1",t._s(e.server_price)))])]),i("text",{staticClass:t._$s("31-"+r,"sc","item-duration"),attrs:{_i:"31-"+r}},[t._v(t._$s("31-"+r,"t0-0",t._s(e.server_time)))])])}))],2)]):t._e(),t._$s(32,"i",t.sryDetail&&t.sryDetail.id)?i("view",{staticClass:t._$s(32,"sc","container-tip"),attrs:{_i:32}},[i("view",{staticClass:t._$s(33,"sc","tip-title flex-row-center"),attrs:{_i:33}},[i("image",{staticClass:t._$s(34,"sc","tip-icon"),attrs:{_i:34}})]),i("view",{staticClass:t._$s(35,"sc","tip-text"),attrs:{_i:35}},[i("text"),i("text")])]):t._e(),t._$s(38,"i",!t.sryDetail||!t.sryDetail.id)?i("view",{staticClass:t._$s(38,"sc","container-tip"),attrs:{_i:38}},[i("view",{staticClass:t._$s(39,"sc","tip-title flex-row-center"),attrs:{_i:39}},[i("image",{staticClass:t._$s(40,"sc","tip-icon"),attrs:{_i:40}})]),i("view",{staticClass:t._$s(41,"sc","tip-text"),attrs:{_i:41}},[i("text"),i("text"),i("text")])]):t._e(),t._$s(45,"i",t.sryDetail&&t.sryDetail.id&&1!=t.sryDetail.bind_state)?i("view",{staticClass:t._$s(45,"sc","agreement-footer"),attrs:{_i:45},on:{click:t.sjinvitesyr}},[i("view",{staticClass:t._$s(46,"sc","agreement-btn"),attrs:{_i:46}})]):t._e()])],1)},r=[]},"378d":function(t,e,i){"use strict";i.r(e);var s=i("aa26e"),a=i("ce2f");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"6d81e86d",null,!1,s["a"],void 0);e["default"]=n.exports},3828:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c=s(i("915d")),n={name:"uv-code",mixins:[a.default,r.default,c.default],data:function(){return{secNum:this.seconds,timer:null,canGetCode:!0}},mounted:function(){this.checkKeepRunning()},watch:{seconds:{immediate:!0,handler:function(t){this.secNum=t}}},methods:{checkKeepRunning:function(){var t=Number(uni.getStorageSync(this.uniqueKey+"_$uCountDownTimestamp"));if(!t)return this.changeEvent(this.startText);var e=Math.floor(+new Date/1e3);this.keepRunning&&t&&t>e?(this.secNum=t-e,uni.removeStorageSync(this.uniqueKey+"_$uCountDownTimestamp"),this.start()):this.changeEvent(this.startText)},start:function(){var t=this;this.timer&&(clearInterval(this.timer),this.timer=null),this.$emit("start"),this.canGetCode=!1,this.changeEvent(this.changeText.replace(/x|X/,this.secNum)),this.timer=setInterval((function(){--t.secNum?t.changeEvent(t.changeText.replace(/x|X/,t.secNum)):(clearInterval(t.timer),t.timer=null,t.changeEvent(t.endText),t.secNum=t.seconds,t.$emit("end"),t.canGetCode=!0)}),1e3),this.setTimeToStorage()},reset:function(){this.canGetCode=!0,clearInterval(this.timer),this.secNum=this.seconds,this.changeEvent(this.endText)},changeEvent:function(t){this.$emit("change",t)},setTimeToStorage:function(){if(this.keepRunning&&this.timer&&this.secNum>0&&this.secNum<=this.seconds){var t=Math.floor(+new Date/1e3);uni.setStorage({key:this.uniqueKey+"_$uCountDownTimestamp",data:t+Number(this.secNum)})}}},beforeDestroy:function(){this.setTimeToStorage(),clearTimeout(this.timer),this.timer=null}};e.default=n},"391f":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","order-card"),attrs:{_i:0},on:{click:t.goDetail}},[i("view",{staticClass:t._$s(1,"sc","orderNumBox"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","order-id white-space-nowrap"),attrs:{_i:2}},[t._v(t._$s(2,"t0-0",t._s(t.dataItem.number)))]),t._$s(3,"i",t.showState)?i("view",{staticClass:t._$s(3,"sc","stateText"),class:t._$s(3,"c",{stateText2:t.dataItem.state>4&&7!==t.dataItem.state,stateText3:7===t.dataItem.state}),attrs:{_i:3}},[t._v(t._$s(3,"t0-0",t._s(t.stateText)))]):t._e()]),i("view",{staticClass:t._$s(4,"sc","service-container"),attrs:{_i:4},on:{click:function(e){return t.$emit("goOrderDetail",t.dataItem)}}},[i("image",{staticClass:t._$s(5,"sc","service-img"),attrs:{src:t._$s(5,"a-src",t.photo[0]),_i:5}}),i("view",{staticClass:t._$s(6,"sc","service-info"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","topInfo"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","price_title"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","service-type white-space-nowrap"),attrs:{_i:9}},[t._v(t._$s(9,"t0-0",t._s(t.dataItem.title)))])]),i("view",{staticClass:t._$s(10,"sc","service-address"),attrs:{_i:10}},[t._v(t._$s(10,"t0-0",t._s(t.dataItem.add_time)))])]),i("view",{staticClass:t._$s(11,"sc","service-price"),attrs:{_i:11}},[i("text"),t._v(t._$s(11,"t1-0",t._s(Number(t.dataItem.order_money))))])])]),i("view",{staticClass:t._$s(13,"sc","time-info"),attrs:{_i:13}},[i("text"),t._v(t._$s(13,"t1-0",t._s(t.useTime)))]),t._$s(15,"i",t.dataItem.state>1&&t.dataItem.state<5)?i("view",{staticClass:t._$s(15,"sc","button-group"),attrs:{_i:15}},[t._$s(16,"i",2==t.dataItem.state||3==t.dataItem.state)?i("view",{staticClass:t._$s(16,"sc","btn cancel-btn"),attrs:{_i:16},on:{click:function(e){return e.stopPropagation(),t.emitCancel(e)}}}):t._e(),t._$s(17,"i",2==t.dataItem.state)?i("view",{staticClass:t._$s(17,"sc","btn accept-btn"),attrs:{_i:17},on:{click:function(e){return e.stopPropagation(),t.emitAccept(e)}}}):t._e(),t._$s(18,"i",3==t.dataItem.state)?i("view",{staticClass:t._$s(18,"sc","btn accept-btn"),attrs:{_i:18},on:{click:function(e){return e.stopPropagation(),t.emitStart(e)}}}):t._e(),t._$s(19,"i",4==t.dataItem.state)?i("view",{staticClass:t._$s(19,"sc","btn accept-btn"),attrs:{_i:19},on:{click:function(e){return e.stopPropagation(),t.emitDone(e)}}}):t._e()]):t._e()])},a=[]},3959:function(t,e,i){"use strict";i.r(e);var s=i("f9c0"),a=i("8b1b");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"26773b1c",null,!1,s["a"],void 0);e["default"]=n.exports},3979:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uniPopup:i("c3a6").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",[i("uni-popup",{ref:"popup",attrs:{type:"bottom","border-radius":"20rpx",_i:1},on:{change:t.change}},[i("view",{staticClass:t._$s(2,"sc","filter-popup"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","filter-popup__header"),attrs:{_i:3}}),i("view",{staticClass:t._$s(4,"sc","filter-popup__content"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","filter-popup__content__left"),attrs:{_i:5}},t._l(t._$s(6,"f",{forItems:t.filterList}),(function(e,s,a,r){return i("view",{key:t._$s(6,"f",{forIndex:a,key:e.id}),staticClass:t._$s("6-"+r,"sc","filter-popup__content__left__item"),class:t._$s("6-"+r,"c",{active:t.selectTabId===e.id}),attrs:{_i:"6-"+r},on:{click:function(i){return t.handleTap(e.id)}}},[i("view",{directives:[{name:"show",rawName:"v-show",value:t._$s("7-"+r,"v-show",t.filterListSelectLists[e.id]),expression:"_$s((\"7-\"+$30),'v-show',filterListSelectLists[item.id])"}],staticClass:t._$s("7-"+r,"sc","filter-popup__content__left__item__point"),attrs:{_i:"7-"+r}}),t._v(t._$s("6-"+r,"t1-0",t._s(e.title)))])})),0),i("scroll-view",{staticClass:t._$s(8,"sc","filter-popup__content__right"),attrs:{"scroll-into-view":t._$s(8,"a-scroll-into-view",t.targetId),_i:8}},[t._t("default",null,{_i:9})],2)]),i("view",{staticClass:t._$s(10,"sc","filter-popup__footer"),attrs:{_i:10}},[i("view",{staticClass:t._$s(11,"sc","filter-popup__footer__sure filter-popup__footer__btn"),attrs:{_i:11},on:{click:t.sure}}),i("view",{staticClass:t._$s(12,"sc","filter-popup__footer__reset filter-popup__footer__btn"),attrs:{_i:12},on:{click:t.reset}})])])])],1)},r=[]},39798:function(t,e,i){"use strict";i.r(e);var s=i("dbf7"),a=i("a43d");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"39ef":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n={data:function(){return{userInfo:{},state:[3,4,5,6,7],orderCount:0,servicesCount:0,marketingTypeList:[{id:0,imgUrl:"/static/images/tab/promotion_order.png",pathUrl:"/pages/promotion/promotion"}],selfOperatedList:[{id:0,imgUrl:"/static/images/tab/SelfOperatedServe.png",pathUrl:"/pages/selfOperated/list"},{id:1,imgUrl:"/static/images/tab/SelfOperatedOrder.png",pathUrl:"/pages/syr/userorders?serviceType=2"}],tradeList:[{id:0,title:"\u670d\u52a1\u7ba1\u7406",des:"\u670d\u52a1\u7684\u53d1\u5e03\u4e0e\u7ba1\u7406",imgUrl:"/static/images/tab/service_gl.png",pathUrl:"/pages/artisan/service-list"},{id:1,title:"\u5de5\u65f6\u7ba1\u7406",des:"\u5de5\u65f6\u7684\u53d1\u5e03\u4e0e\u7ba1\u7406",imgUrl:"/static/images/tab/time_gl.png",pathUrl:"/pages/syr/manHour/list"},{id:3,title:"\u8d2d\u4e70\u5de5\u4f4d",des:"\u53ef\u8d2d\u4e70\u5546\u5bb6\u7684\u5de5\u4f4d",imgUrl:"/static/images/tab/buy_station.png",pathUrl:"/pages/syr/workstation/buyWorkstation"}],orderTypeList:[{id:0,title:"\u7528\u6237\u8ba2\u5355",des:"\u5356\u7ed9\u7528\u6237\u7684\u670d\u52a1\u8ba2\u5355",imgUrl:"/static/images/tab/user_order.png",pathUrl:"/pages/syr/userorders"},{id:1,title:"\u5546\u6237\u8ba2\u5355",des:"\u5356\u7ed9\u5546\u5bb6\u7684\u670d\u52a1\u8ba2\u5355",imgUrl:"/static/images/tab/shop_order.png",pathUrl:"/pages/syr/shoporders"},{id:2,title:"\u5de5\u65f6\u8ba2\u5355",des:"\u6211\u552e\u5356\u7684\u5de5\u65f6\u8ba2\u5355",imgUrl:"/static/images/tab/job_time_order.png",pathUrl:"/pages/syr/manHour/saleList"},{id:3,title:"\u5de5\u4f4d\u8ba2\u5355",des:"\u6211\u4e70\u7684\u5546\u5bb6\u5de5\u4f4d\u8ba2\u5355",imgUrl:"/static/images/tab/job_position_order.png",pathUrl:"/pages/syr/workstation/buyList"}]}},created:function(){var t=this;return(0,r.default)(a.default.mark((function e(){var i,s;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,c.default.post("/user/getuser",{type:2});case 2:i=e.sent,s=i.data,t.userInfo=s;case 5:case"end":return e.stop()}}),e)})))()},methods:{goArtisanProfile:function(){uni.navigateTo({url:"/pages/artisan/profile"})},goAgreement:function(){uni.navigateTo({url:"/pages/selfOperated/agreement?title=\u5e73\u53f0\u81ea\u8425\u9879\u76ee\u4ecb\u7ecd&type=18"})},navigateTo:function(t){uni.navigateTo({url:t})}}};e.default=n},"39f7":function(t,e,i){"use strict";i.r(e);var s=i("028e"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"3a16":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("af34")),r=s(i("16bb")),c={data:function(){return{artisanList:[],loading:!1,finished:!1,page:1,limit:10,total:0,shopId:null,scrollViewHeight:0,defaultAvatar:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40"}},onLoad:function(e){e.shopId?this.shopId=e.shopId:e.id&&(this.shopId=e.id),t("log","\u63a5\u6536\u5230\u7684\u5e97\u94faID:",this.shopId," at pages/user/store-syr-list.vue:116"),this.calculateScrollHeight(),this.getArtisanList()},onReady:function(){var t=this;setTimeout((function(){t.calculateScrollHeight()}),100)},methods:{calculateScrollHeight:function(){var t=uni.getSystemInfoSync(),e=t.statusBarHeight||0;this.scrollViewHeight=t.windowHeight-(44+e)},getArtisanList:function(){var e=this;if(!this.loading&&!this.finished){this.loading=!0;var i=this.getUserLocation();t("log","\u83b7\u53d6\u5230\u7684\u7528\u6237\u4f4d\u7f6e:",i," at pages/user/store-syr-list.vue:154");var s={page:this.page,limit:this.limit};this.shopId&&(s.sjid=this.shopId),i&&(s.userLat=i.latitude,s.userLngz=i.longitude),r.default.post("/user/sjSyrBind/syrList",s).then((function(s){if(t("log","\u624b\u827a\u4eba\u5217\u8868\u63a5\u53e3\u8fd4\u56de:",s," at pages/user/store-syr-list.vue:174"),200===s.code){var r=s.data||{},c=r.list||[],n=r.count||c.length||0,o=e.formatArtisanList(c,i);t("log","\u683c\u5f0f\u5316\u540e\u7684\u5217\u8868\uff08\u5305\u542b\u8ddd\u79bb\uff09:",o," at pages/user/store-syr-list.vue:183"),1===e.page?e.artisanList=o:e.artisanList=[].concat((0,a.default)(e.artisanList),(0,a.default)(o)),e.total=n,c.length1&&void 0!==arguments[1]?arguments[1]:null;if(!e||0===e.length)return[];s||(s=this.getUserLocation());var a=[{id:1,name:"\u6885\u5b50",working_years:"1\u5e746\u4e2a\u6708",distance:32.29},{id:2,name:"\u738b\u5b89\u5b87",working_years:"10\u5e7410\u4e2a\u6708",distance:2.29},{id:3,name:"\u738b\u5b89\u5b87...",working_years:"10\u5e7410\u4e2a\u6708",distance:2.29},{id:4,name:"\u6885\u5b50",working_years:"1\u5e746\u4e2a\u6708",distance:2.29}];e.length;return e.map((function(e){var a="0\u5e740\u4e2a\u6708";if(e.working_years)a=e.working_years;else if(e.add_time){var r=new Date(e.add_time),c=new Date,n=c.getFullYear()-r.getFullYear(),o=c.getMonth()-r.getMonth(),d=12*n+o;d<0&&(d=0);var l=Math.floor(d/12),u=d%12;a="".concat(l,"\u5e74").concat(u,"\u4e2a\u6708")}var f=null;if(s&&s.latitude&&s.longitude&&e.latitude&&e.longitude)try{var _=parseFloat(s.latitude),p=parseFloat(s.longitude),v=parseFloat(e.latitude),h=parseFloat(e.longitude);f=i.calculateDistance(_,p,v,h),t("log","\u8ba1\u7b97\u8ddd\u79bb: \u7528\u6237(".concat(_,",").concat(p,") -> \u624b\u827a\u4eba(").concat(v,",").concat(h,") = ").concat(f,"km")," at pages/user/store-syr-list.vue:270")}catch(m){t("error","\u8ba1\u7b97\u8ddd\u79bb\u5931\u8d25:",m," at pages/user/store-syr-list.vue:272")}return{id:e.id||e.user_id||"",name:e.name||e.nick_name||"\u624b\u827a\u4eba",avatar:e.head_photo,working_years:a,distance:f,latitude:e.latitude,longitude:e.longitude,service_count:e.service_count||0,good_rating:e.good_rating||"100%",default_times:e.default_times,work_state:e.work_state,is_ok:e.is_ok,is_del:e.is_del}}))},formatWorkingYears:function(e){if("string"===typeof e)return e;try{var i=parseInt(e);if(!isNaN(i)){var s=Math.floor(i/12),a=i%12;return"".concat(s,"\u5e74").concat(a,"\u4e2a\u6708")}}catch(r){t("error","\u683c\u5f0f\u5316\u4ece\u4e1a\u5e74\u9650\u5931\u8d25:",r," at pages/user/store-syr-list.vue:311")}return"0\u5e740\u4e2a\u6708"},calculateDistance:function(t,e,i,s){var a=function(t){return t*Math.PI/180},r=a(i-t),c=a(s-e),n=Math.sin(r/2)*Math.sin(r/2)+Math.cos(a(t))*Math.cos(a(i))*Math.sin(c/2)*Math.sin(c/2),o=2*Math.atan2(Math.sqrt(n),Math.sqrt(1-n)),d=6371*o;return parseFloat(d.toFixed(2))},getUserLocation:function(){var t={},e=uni.getStorageSync("userAdrees");return t=e?e.addressRes:getApp().globalData.addressRes,t&&t.latitude&&t.longitude?{latitude:parseFloat(t.latitude),longitude:parseFloat(t.longitude),address:t.address}:null},formatDistance:function(t){if(!t&&0!==t)return"\u8ddd\u79bb\u672a\u77e5";var e="string"===typeof t?parseFloat(t):t;return isNaN(e)?t:"".concat(e.toFixed(2),"Km")},loadMore:function(){this.finished||this.getArtisanList()},goArtisanDetail:function(t){uni.navigateTo({url:"/pages/user/employee-detail?id=".concat(t.id)})},goQualification:function(t){uni.navigateTo({url:"/pages/user/qualifications?id=".concat(t.id)})},onPullDownRefresh:function(){this.page=1,this.finished=!1,this.artisanList=[],this.getArtisanList(),uni.stopPullDownRefresh()}}};e.default=c}).call(this,i("f3b9")["default"])},"3aef":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){if(t&&!(0,a.default)(e))return(0,r.default)(t,e);return e};var a=s(i("f6ee")),r=s(i("6ba4"))},"3b00":function(t,e,i){"use strict";i.r(e);var s=i("6533"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"3b06":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","service-first-tab"),style:t._$s(0,"s",[{backgroundColor:t.bgColor},{"--active-color":t.activeColor},{"--inactive-color":t.inactiveColor},{"--tab-padding-top":t.tabPaddingTop},{"--tab-padding-bottom":t.tabPaddingBottom}]),attrs:{_i:0}},[i("scroll-view",{staticClass:t._$s(1,"sc","tab-scroll"),attrs:{_i:1},on:{touchmove:function(t){t.preventDefault(),t.stopPropagation()}}},[i("view",{staticClass:t._$s(2,"sc","tab-container"),attrs:{_i:2}},t._l(t._$s(3,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("view",{key:t._$s(3,"f",{forIndex:a,key:e.id}),class:t._$s("3-"+r,"c",["tab-item",{active:t.activeId==e.id}]),style:t._$s("3-"+r,"s",{paddingTop:t.tabPaddingTop,paddingBottom:t.tabPaddingBottom}),attrs:{_i:"3-"+r},on:{click:function(i){return t.handleTabClick(e)}}},[i("text",{staticClass:t._$s("4-"+r,"sc","tab-text"),attrs:{_i:"4-"+r}},[t._v(t._$s("4-"+r,"t0-0",t._s(e.title)))]),t._$s("5-"+r,"i",t.activeId==e.id)?i("view",{staticClass:t._$s("5-"+r,"sc","tab-active-indicator"),attrs:{_i:"5-"+r}}):t._e()])})),0)])])},a=[]},"3b2d":function(t,e){function i(e){return t.exports=i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports["default"]=t.exports,i(e)}t.exports=i,t.exports.__esModule=!0,t.exports["default"]=t.exports},"3b4f":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","service-time-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u670d\u52a1\u65f6\u95f4",showBack:!0,_i:1}}),i("view",{staticClass:t._$s(2,"sc","content"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","section-card"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","section-header"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","title-bar"),attrs:{_i:5}}),i("text",{staticClass:t._$s(6,"sc","section-title"),attrs:{_i:6}})]),i("view",{staticClass:t._$s(7,"sc","time-display-section"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","time-value-box"),attrs:{_i:8}},[i("text",{staticClass:t._$s(9,"sc","time-value"),attrs:{_i:9}}),i("text",{staticClass:t._$s(10,"sc","time-value2"),attrs:{_i:10}},[t._v(t._$s(10,"t0-0",t._s(t.currentTime)))])]),t._$s(11,"i",!t.showBottomActions&&!t.showTimePickerFlag)?i("view",{staticClass:t._$s(11,"sc","change-button"),attrs:{_i:11},on:{click:t.showTimePicker}},[i("text",{staticClass:t._$s(12,"sc","change-text"),attrs:{_i:12}}),i("image",{staticClass:t._$s(13,"sc","arrow-right"),attrs:{_i:13}})]):t._e()])]),i("view",{staticClass:t._$s(14,"sc","popup"),class:t._$s(14,"c",{show:t.showTimePickerFlag}),attrs:{_i:14}},[i("view",{staticClass:t._$s(15,"sc","popup-mask"),attrs:{_i:15},on:{click:t.hideTimePicker}}),i("view",{staticClass:t._$s(16,"sc","popup-content"),attrs:{_i:16}},[i("view",{staticClass:t._$s(17,"sc","popup-header"),attrs:{_i:17}},[i("text",{staticClass:t._$s(18,"sc","cancel-text"),attrs:{_i:18},on:{click:t.hideTimePicker}}),i("text",{staticClass:t._$s(19,"sc","title"),attrs:{_i:19}}),i("text",{staticClass:t._$s(20,"sc","confirm-text"),attrs:{_i:20},on:{click:t.confirmTime}})]),i("view",{staticClass:t._$s(21,"sc","time-range"),attrs:{_i:21}},[i("view",{staticClass:t._$s(22,"sc","time-block"),class:t._$s(22,"c",{active:"start"===t.timeType}),attrs:{_i:22},on:{click:function(e){return t.switchTimeType("start")}}},[i("text",{staticClass:t._$s(23,"sc","time-value-picker"),attrs:{_i:23}},[t._v(t._$s(23,"t0-0",t._s(t.formatTime(t.startTime))))]),i("text",{staticClass:t._$s(24,"sc","time-label"),attrs:{_i:24}})]),i("text",{staticClass:t._$s(25,"sc","time-separator"),attrs:{_i:25}}),i("view",{staticClass:t._$s(26,"sc","time-block"),class:t._$s(26,"c",{active:"end"===t.timeType}),attrs:{_i:26},on:{click:function(e){return t.switchTimeType("end")}}},[i("text",{staticClass:t._$s(27,"sc","time-value-picker"),attrs:{_i:27}},[t._v(t._$s(27,"t0-0",t._s(t.formatTime(t.endTime))))]),i("text",{staticClass:t._$s(28,"sc","time-label"),attrs:{_i:28}})])]),i("view",{staticClass:t._$s(29,"sc","region-body"),attrs:{_i:29}},[i("picker-view",{staticClass:t._$s(30,"sc","picker-scroll"),attrs:{value:t._$s(30,"a-value",t.pickerValue),"indicator-style":t._$s(30,"a-indicator-style",t.indicatorStyle),_i:30},on:{change:t.handleTimeChange}},[i("picker-view-column",t._l(t._$s(32,"f",{forItems:t.hours}),(function(e,s,a,r){return i("view",{key:t._$s(32,"f",{forIndex:a,key:s}),staticClass:t._$s("32-"+r,"sc","picker-item"),attrs:{_i:"32-"+r}},[t._v(t._$s("32-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",t._l(t._$s(34,"f",{forItems:t.minutes}),(function(e,s,a,r){return i("view",{key:t._$s(34,"f",{forIndex:a,key:s}),staticClass:t._$s("34-"+r,"sc","picker-item"),attrs:{_i:"34-"+r}},[t._v(t._$s("34-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",[i("view",{staticClass:t._$s(36,"sc","picker-item"),attrs:{_i:36}})]),i("picker-view-column",t._l(t._$s(38,"f",{forItems:t.hours}),(function(e,s,a,r){return i("view",{key:t._$s(38,"f",{forIndex:a,key:s}),staticClass:t._$s("38-"+r,"sc","picker-item"),attrs:{_i:"38-"+r}},[t._v(t._$s("38-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",t._l(t._$s(40,"f",{forItems:t.minutes}),(function(e,s,a,r){return i("view",{key:t._$s(40,"f",{forIndex:a,key:s}),staticClass:t._$s("40-"+r,"sc","picker-item"),attrs:{_i:"40-"+r}},[t._v(t._$s("40-"+r,"t0-0",t._s(e)))])})),0)])])])]),t._$s(41,"i",t.showBottomActions)?i("view",{staticClass:t._$s(41,"sc","bottom-actions"),attrs:{_i:41}},[i("view",{staticClass:t._$s(42,"sc","action-buttons"),attrs:{_i:42}},[i("button",{staticClass:t._$s(43,"sc","btn-cancel-large"),attrs:{_i:43},on:{click:t.cancelChange}}),i("button",{staticClass:t._$s(44,"sc","btn-confirm-large"),attrs:{_i:44},on:{click:t.submitChange}})])]):t._e()])],1)},r=[]},"3b58":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,uvModal:i("ad36").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","select-serve"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u8bbe\u7f6e\u4f63\u91d1",backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","select-tip"),attrs:{_i:2}},[i("text")]),t._l(t._$s(4,"f",{forItems:t.selectedItems}),(function(e,s,a,r){return i("view",{key:t._$s(4,"f",{forIndex:a,key:s}),staticClass:t._$s("4-"+r,"sc","serve-card"),attrs:{_i:"4-"+r}},[i("image",{staticClass:t._$s("5-"+r,"sc","serve-card__img"),attrs:{src:t._$s("5-"+r,"a-src",e.photo[0]),_i:"5-"+r}}),i("view",{staticClass:t._$s("6-"+r,"sc","serve-card-right"),attrs:{_i:"6-"+r}},[i("view",{staticClass:t._$s("7-"+r,"sc","serve-card-right-text"),attrs:{_i:"7-"+r}},[t._v(t._$s("7-"+r,"t0-0",t._s(e.title)))]),i("view",{staticClass:t._$s("8-"+r,"sc","serve-card-right-price"),attrs:{_i:"8-"+r}},[i("text",[t._v(t._$s("9-"+r,"t0-0",t._s(e.server_price)))])]),i("view",{staticClass:t._$s("10-"+r,"sc","serve-card-right-number"),attrs:{_i:"10-"+r}},[i("text",{staticClass:t._$s("11-"+r,"sc","serve-card-right-number-text"),attrs:{_i:"11-"+r}}),i("view",{staticClass:t._$s("12-"+r,"sc","numberValue"),attrs:{_i:"12-"+r}},[i("view",{staticClass:t._$s("13-"+r,"sc","fuHao"),attrs:{_i:"13-"+r},on:{click:function(i){return t.calculate(e,-1)}}}),i("view",{staticClass:t._$s("14-"+r,"sc","numberValue-card"),attrs:{_i:"14-"+r}},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.numberValue,expression:"item.numberValue"}],staticClass:t._$s("15-"+r,"sc","numberValue-input"),attrs:{_i:"15-"+r},domProps:{value:t._$s("15-"+r,"v-model",e.numberValue)},on:{input:[function(i){i.target.composing||t.$set(e,"numberValue",i.target.value)},function(i){return t.changeInput(e,i)}]}}),i("text",{staticClass:t._$s("16-"+r,"sc","percentage"),attrs:{_i:"16-"+r}})]),i("view",{staticClass:t._$s("17-"+r,"sc","fuHao"),attrs:{_i:"17-"+r},on:{click:function(i){return t.calculate(e,1)}}})])]),i("view",{directives:[{name:"show",rawName:"v-show",value:t._$s("18-"+r,"v-show",t.estimate(e.numberValue,e.server_price)),expression:"_$s((\"18-\"+$30),'v-show',estimate(item.numberValue,item.server_price))"}],staticClass:t._$s("18-"+r,"sc","serve-card-right-estimate"),attrs:{_i:"18-"+r}},[t._v(t._$s("18-"+r,"t0-0",t._s(t.estimate(e.numberValue,e.server_price)))),i("image",{staticClass:t._$s("19-"+r,"sc","serve-card-right-estimate-img"),attrs:{_i:"19-"+r},on:{click:t.openModal}})])])])})),i("view",{staticClass:t._$s(20,"sc","select-serve-footer"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","select-serve-footer__btn"),attrs:{_i:21},on:{click:t.submit}})]),i("uv-modal",{ref:"modal",attrs:{title:"\u63d0\u793a",width:"620rpx",_i:22},scopedSlots:t._u([{key:"confirmButton",fn:function(e,s,a){return[i("view",{staticClass:s._$s("26-"+a,"sc","closeModal"),attrs:{type:"default",_i:"26-"+a},on:{click:t.closeModal}},[t._v("\u786e\u5b9a")])]}}])},[i("view",{staticClass:t._$s(23,"sc","slot-content"),attrs:{_i:23}},[i("text")])])],2)},r=[]},"3bdd":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n={data:function(){return{currentTime:"09:00-21:00",originalTime:"09:00-21:00",tempTime:"",showTimePickerFlag:!1,showBottomActions:!1,pickerValue:[8,0,0,18,0],hours:Array.from({length:24},(function(t,e){return e<10?"0".concat(e):"".concat(e)})),minutes:Array.from({length:60},(function(t,e){return e<10?"0".concat(e):"".concat(e)})),timeType:"start",indicatorStyle:"height: 68rpx;",startTime:{hour:"09",minute:"00"},endTime:{hour:"21",minute:"00"}}},onLoad:function(){this.loadCurrentTime()},methods:{loadCurrentTime:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,c.default.post("/user/getuser",{type:2});case 3:if(s=i.sent,t("log","\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u54cd\u5e94:",s," at pages/artisan/service-time.vue:131"),1!==s.state||!s.data){i.next=9;break}s.data.default_times?(e.currentTime=s.data.default_times,e.originalTime=s.data.default_times,e.parseTimeString(s.data.default_times),t("log","\u6210\u529f\u83b7\u53d6\u670d\u52a1\u65f6\u95f4:",s.data.default_times," at pages/artisan/service-time.vue:140")):(t("log","\u672a\u627e\u5230\u670d\u52a1\u65f6\u95f4\u5b57\u6bb5\uff0c\u4f7f\u7528\u9ed8\u8ba4\u503c"," at pages/artisan/service-time.vue:143"),e.currentTime="09:00-21:00",e.originalTime="09:00-21:00",e.parseTimeString("09:00-21:00")),i.next=10;break;case 9:throw new Error(s.msg||"\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u5931\u8d25");case 10:i.next=18;break;case 12:i.prev=12,i.t0=i["catch"](0),t("error","\u52a0\u8f7d\u670d\u52a1\u65f6\u95f4\u5931\u8d25:",i.t0," at pages/artisan/service-time.vue:152"),e.currentTime="09:00-21:00",e.originalTime="09:00-21:00",e.parseTimeString("09:00-21:00");case 18:case"end":return i.stop()}}),i,null,[[0,12]])})))()},parseTimeString:function(t){var e=t.split("-");if(2===e.length){var i=e[0].split(":"),s=e[1].split(":");2===i.length&&(this.startTime.hour=i[0],this.startTime.minute=i[1]),2===s.length&&(this.endTime.hour=s[0],this.endTime.minute=s[1]),this.updatePickerValue()}},updatePickerValue:function(){var t=this.hours.indexOf(this.startTime.hour),e=this.minutes.indexOf(this.startTime.minute),i=this.hours.indexOf(this.endTime.hour),s=this.minutes.indexOf(this.endTime.minute);this.pickerValue=[t>=0?t:8,e>=0?e:0,0,i>=0?i:18,s>=0?s:0]},showTimePicker:function(){this.originalTime=this.currentTime,this.showTimePickerFlag=!0},hideTimePicker:function(){this.showTimePickerFlag=!1},switchTimeType:function(t){this.timeType=t},handleTimeChange:function(t){var e=t.detail.value;this.pickerValue=e,this.startTime.hour=this.hours[e[0]],this.startTime.minute=this.minutes[e[1]],this.endTime.hour=this.hours[e[3]],this.endTime.minute=this.minutes[e[4]]},formatTime:function(t){return"".concat(t.hour,":").concat(t.minute)},confirmTime:function(){var e="".concat(this.formatTime(this.startTime),"-").concat(this.formatTime(this.endTime));t("log","\u9009\u62e9\u7684\u65f6\u95f4:",e," at pages/artisan/service-time.vue:241"),this.validateTime(this.startTime,this.endTime)?(this.tempTime=e,this.showBottomActions=!0,this.hideTimePicker(),this.currentTime=e,t("log","\u4e34\u65f6\u5b58\u50a8\u7684\u65f6\u95f4:",this.tempTime," at pages/artisan/service-time.vue:258")):uni.showToast({title:"\u7ed3\u675f\u65f6\u95f4\u5fc5\u987b\u665a\u4e8e\u5f00\u59cb\u65f6\u95f4",icon:"none"})},cancelChange:function(){this.currentTime=this.originalTime,this.showBottomActions=!1,this.tempTime=""},submitChange:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(e.tempTime){i.next=3;break}return uni.showToast({title:"\u8bf7\u5148\u9009\u62e9\u670d\u52a1\u65f6\u95f4",icon:"none"}),i.abrupt("return");case 3:return i.prev=3,s={apply_type:1,default_times:e.tempTime},t("log","\u63d0\u4ea4\u53c2\u6570:",s," at pages/artisan/service-time.vue:288"),t("log","\u8bf7\u6c42URL:","/syr/userSyrAuth/apply"," at pages/artisan/service-time.vue:289"),i.next=9,c.default.post("/syr/userSyrAuth/apply",s);case 9:r=i.sent,uni.hideLoading(),t("log","\u63d0\u4ea4\u63a5\u53e3\u54cd\u5e94:",r," at pages/artisan/service-time.vue:294"),200===r.code?(e.showBottomActions=!1,e.tempTime="",e.originalTime=e.currentTime,uni.showToast({title:"\u670d\u52a1\u65f6\u95f4\u66f4\u65b0\u6210\u529f",icon:"none"}),setTimeout((function(){uni.navigateBack()}),1500)):uni.showToast({title:r.msg||"\u63d0\u4ea4\u5931\u8d25",icon:"none"}),i.next=20;break;case 15:i.prev=15,i.t0=i["catch"](3),uni.hideLoading(),t("error","\u63d0\u4ea4\u670d\u52a1\u65f6\u95f4\u53d8\u66f4\u5931\u8d25:",i.t0," at pages/artisan/service-time.vue:318"),uni.showToast({title:"\u63d0\u4ea4\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5",icon:"none"});case 20:case"end":return i.stop()}}),i,null,[[3,15]])})))()},validateTime:function(t,e){var i=new Date("2000/01/01 ".concat(t.hour,":").concat(t.minute)),s=new Date("2000/01/01 ".concat(e.hour,":").concat(e.minute));return s>i}}};e.default=n}).call(this,i("f3b9")["default"])},"3be0":function(t,e,i){"use strict";i.r(e);var s=i("9285"),a=i("0c3e");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"3c12":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e=0?r:0,c,n],this.showDatePickerFlag=!0},hideDatePicker:function(){this.showDatePickerFlag=!1},bindDateChange:function(t){this.dateValue=t.detail.value},confirmDate:function(){var t=(0,c.default)(this.dateValue,3),e=t[0],i=t[1],s=t[2],a=this.years[e],r=this.months[i],n=this.days[s],o="".concat(a,"\u5e74").concat(r,"\u6708").concat(n,"\u65e5"),d=new Date(a,r-1,n),l=new Date;if(l.setHours(0,0,0,0),this.currentDateField.endsWith("_start_date")){if(d>l)return void uni.showToast({title:"\u5f00\u59cb\u65e5\u671f\u4e0d\u80fd\u665a\u4e8e\u4eca\u5929",icon:"none"});var u=this.currentDateField.replace("_start_date","_end_date");if(this.formData[u]&&"\u957f\u4e45\u6709\u6548"!==this.formData[u]){var f=this.formData[u],_=f.match(/(\d+)\u5e74(\d+)\u6708(\d+)\u65e5/);if(_){var p=new Date(parseInt(_[1]),parseInt(_[2])-1,parseInt(_[3]));if(d>p)return void uni.showToast({title:"\u5f00\u59cb\u65e5\u671f\u4e0d\u80fd\u665a\u4e8e\u7ed3\u675f\u65e5\u671f",icon:"none"})}}if("idcard_start_date"===this.currentDateField)if("date"===this.formData.legal_idcard_expiry_type){var v=a+20,h="".concat(v,"\u5e74").concat(r,"\u6708").concat(n,"\u65e5");this.formData.idcard_end_date=h}else"permanent"===this.formData.legal_idcard_expiry_type&&(this.formData.idcard_end_date="\u957f\u4e45\u6709\u6548")}else if(this.currentDateField.endsWith("_end_date")){var m=this.currentDateField.replace("_end_date","_start_date");if(this.formData[m]){var g=this.formData[m],y=g.match(/(\d+)\u5e74(\d+)\u6708(\d+)\u65e5/);if(y){var b=new Date(parseInt(y[1]),parseInt(y[2])-1,parseInt(y[3]));if(d<=b)return void uni.showToast({title:"\u7ed3\u675f\u65e5\u671f\u5fc5\u987b\u665a\u4e8e\u5f00\u59cb\u65e5\u671f",icon:"none"})}}else if(d0||uni.showToast({title:"\u8bc6\u522b\u5b8c\u6210\uff0c\u4f46\u672a\u83b7\u53d6\u5230\u6709\u6548\u4fe1\u606f",icon:"none",duration:3e3}),s.next=23;break;case 19:s.prev=19,s.t0=s["catch"](0),uni.showToast({title:s.t0.message||"\u8bc6\u522b\u5931\u8d25\uff0c\u8bf7\u624b\u52a8\u586b\u5199",icon:"none"}),t("error","\u8425\u4e1a\u6267\u7167\u8bc6\u522b\u5931\u8d25:",s.t0," at pages/ruzhu/qualification_sj.vue:955");case 23:return s.prev=23,i.isRecognizing=!1,uni.hideLoading(),s.finish(23);case 27:case"end":return s.stop()}}),s,null,[[0,19,23,27]])})))()},checkBusinessLicenseRecognition:function(t){for(var e=0,i=["uscc_num","uscc_name","legal_name","uscc_type"];e0&&(this.moveX=0),this.moveX<-160&&(this.moveX=-160),this.$set(this.services[this.currentIndex],"slideX",this.moveX)))},touchEnd:function(t){3==this.currentTab&&-1!==this.currentIndex&&(t.preventDefault(),t.stopPropagation(),this.moveX<-80?this.$set(this.services[this.currentIndex],"slideX",-160):this.$set(this.services[this.currentIndex],"slideX",0),this.currentIndex=-1)},mouseDown:function(t,e){3==this.currentTab&&(t.preventDefault(),t.stopPropagation(),this.startX=t.clientX,this.currentIndex=e)},mouseMove:function(t){3==this.currentTab&&-1!==this.currentIndex&&(t.preventDefault(),t.stopPropagation(),this.moveX=t.clientX-this.startX,this.moveX>0&&(this.moveX=0),this.moveX<-160&&(this.moveX=-160),this.$set(this.services[this.currentIndex],"slideX",this.moveX))},mouseUp:function(t){3==this.currentTab&&-1!==this.currentIndex&&(t.preventDefault(),t.stopPropagation(),this.moveX<-80?this.$set(this.services[this.currentIndex],"slideX",-160):this.$set(this.services[this.currentIndex],"slideX",0),this.currentIndex=-1)}}};e.default=s},4212:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this.$createElement,e=this._self._c||t;return e("view",{staticClass:this._$s(0,"sc","content"),attrs:{_i:0}},[e("rich-text",{attrs:{nodes:this._$s(1,"a-nodes",this.textData.text),_i:1}})])},a=[]},4219:function(t,e,i){"use strict";i.r(e);var s=i("1308"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},4234:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"noData",data:function(){return{}},props:{tipText:{type:String,default:"\u6682\u65e0\u6570\u636e\u54e6\uff5e"},top:{type:String,default:"154rpx"}},components:{},methods:{}};e.default=s},4251:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","submitres-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"",backgroundColor:"transparent","show-back":!0,_i:1}}),t._$s(2,"i",1==t.applyState)?i("view",{staticClass:t._$s(2,"sc","success-page"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","content"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","success-icon"),attrs:{_i:4}},[i("image",{staticClass:t._$s(5,"sc","icon-image"),attrs:{_i:5}})]),i("text",{staticClass:t._$s(6,"sc","success-title"),attrs:{_i:6}}),i("text",{staticClass:t._$s(7,"sc","success-tip"),attrs:{_i:7}}),i("view",{staticClass:t._$s(8,"sc","btn-back"),attrs:{_i:8},on:{click:t.goBack}},[i("text",{staticClass:t._$s(9,"sc","btn-text"),attrs:{_i:9}})])])]):t._e(),t._$s(10,"i",3==t.applyState)?i("view",{staticClass:t._$s(10,"sc","fail-page"),attrs:{_i:10}},[i("view",{staticClass:t._$s(11,"sc","content"),attrs:{_i:11}},[i("view",{staticClass:t._$s(12,"sc","fail-icon"),attrs:{_i:12}},[i("image",{staticClass:t._$s(13,"sc","icon-image"),attrs:{_i:13}})]),i("text",{staticClass:t._$s(14,"sc","success-title"),attrs:{_i:14}}),i("text",{staticClass:t._$s(15,"sc","success-tip"),attrs:{_i:15}},[t._v(t._$s(15,"t0-0",t._s(t.backMag)))]),i("view",{staticClass:t._$s(16,"sc","btn-back"),attrs:{_i:16},on:{click:t.goRuzhu}},[i("text",{staticClass:t._$s(17,"sc","btn-text"),attrs:{_i:17}})]),i("view",{staticClass:t._$s(18,"sc","fail-back-btn"),attrs:{_i:18},on:{click:t.goBack}},[i("text",{staticClass:t._$s(19,"sc","btn-text"),attrs:{_i:19}})])])]):t._e()],1)},r=[]},4288:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","my-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u4e2a\u4eba\u4e2d\u5fc3",showBack:!0,borderBottom:"none",backgroundColor:"linear-gradient( 106deg, #FFE1E1 0%, #CCD8F7 100%)",_i:1}}),i("view",{staticClass:t._$s(2,"sc","user-info"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","user-header"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","avatar-wrap"),attrs:{_i:4}},[t._$s(5,"i",t.userInfo.head_photo)?i("image",{staticClass:t._$s(5,"sc","avatar"),attrs:{src:t._$s(5,"a-src",t.userInfo.head_photo),_i:5}}):t._e()]),i("view",{staticClass:t._$s(6,"sc","user-detail"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","name-wrap"),attrs:{_i:7}},[i("text",{staticClass:t._$s(8,"sc","name"),attrs:{_i:8}},[t._v(t._$s(8,"t0-0",t._s(t.userInfo.name)))]),i("view",{staticClass:t._$s(9,"sc","amount-box"),attrs:{_i:9},on:{click:function(e){return t.navigateTo("/pages/wallet/wallet")}}},[i("image",{staticClass:t._$s(10,"sc","amount-img"),attrs:{_i:10}}),i("text",{staticClass:t._$s(11,"sc","amount-lable"),attrs:{_i:11}}),i("text",{staticClass:t._$s(12,"sc","amount-text"),attrs:{_i:12}},[t._v(t._$s(12,"t0-0",t._s(t.userInfo.money)))])])])]),i("view",{staticClass:t._$s(13,"sc","edit-profile"),attrs:{_i:13},on:{click:t.goArtisanProfile}},[i("text",{staticClass:t._$s(14,"sc","edit-text"),attrs:{_i:14}}),i("image",{attrs:{_i:15}})])]),i("view",{staticClass:t._$s(16,"sc","module box-cont"),attrs:{_i:16}},[i("view",{staticClass:t._$s(17,"sc","module-lable"),attrs:{_i:17}}),i("view",{staticClass:t._$s(18,"sc","module-cont"),attrs:{_i:18}},t._l(t._$s(19,"f",{forItems:t.tradeList}),(function(e,s,a,r){return i("image",{key:t._$s(19,"f",{forIndex:a,key:e.id}),staticClass:t._$s("19-"+r,"sc","module-cont-img"),attrs:{src:t._$s("19-"+r,"a-src",e.imgUrl),_i:"19-"+r},on:{click:function(i){return t.navigateTo(e.pathUrl)}}})})),0)]),i("view",{staticClass:t._$s(20,"sc","module box-cont module-order"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","module-lable"),attrs:{_i:21}}),i("view",{staticClass:t._$s(22,"sc","module-cont"),attrs:{_i:22}},t._l(t._$s(23,"f",{forItems:t.orderTypeList}),(function(e,s,a,r){return i("image",{key:t._$s(23,"f",{forIndex:a,key:e.id}),staticClass:t._$s("23-"+r,"sc","module-cont-img"),attrs:{src:t._$s("23-"+r,"a-src",e.imgUrl),_i:"23-"+r},on:{click:function(i){return t.navigateTo(e.pathUrl)}}})})),0)]),i("view",{staticClass:t._$s(24,"sc","module box-cont module-order"),attrs:{_i:24}},[i("view",{staticClass:t._$s(25,"sc","module-lable"),attrs:{_i:25}}),i("view",{staticClass:t._$s(26,"sc","module-cont"),attrs:{_i:26}},t._l(t._$s(27,"f",{forItems:t.marketingTypeList}),(function(e,s,a,r){return i("image",{key:t._$s(27,"f",{forIndex:a,key:e.id}),staticClass:t._$s("27-"+r,"sc","module-cont-img"),attrs:{src:t._$s("27-"+r,"a-src",e.imgUrl),_i:"27-"+r},on:{click:function(i){return t.navigateTo(e.pathUrl)}}})})),0)]),t._$s(28,"i",0==t.userInfo.self_state)?i("image",{staticClass:t._$s(28,"sc","module-banner"),attrs:{_i:28},on:{click:t.goAgreement}}):i("view",{staticClass:t._$s(29,"sc","module box-cont module-order"),attrs:{_i:29}},[i("view",{staticClass:t._$s(30,"sc","module-lable"),attrs:{_i:30}}),i("view",{staticClass:t._$s(31,"sc","module-cont"),attrs:{_i:31}},t._l(t._$s(32,"f",{forItems:t.selfOperatedList}),(function(e,s,a,r){return i("image",{key:t._$s(32,"f",{forIndex:a,key:e.id}),staticClass:t._$s("32-"+r,"sc","module-cont-img"),attrs:{src:t._$s("32-"+r,"a-src",e.imgUrl),_i:"32-"+r},on:{click:function(i){return t.navigateTo(e.pathUrl)}}})})),0)]),i("view",{staticClass:t._$s(33,"sc","function-list"),attrs:{_i:33}},[i("view",{staticClass:t._$s(34,"sc","function-item"),attrs:{_i:34},on:{click:function(e){return t.navigateTo("/pages/contact/contact")}}},[i("text",{staticClass:t._$s(35,"sc","function-text"),attrs:{_i:35}}),i("image",{staticClass:t._$s(36,"sc","right_gray"),attrs:{_i:36}})])])])],1)},r=[]},4292:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("34cf")),r={name:"ServiceListItem",props:{list:{type:Array,default:function(){return[]}}},methods:{formatTimeToRelative:function(t){var e=t.split(" "),i=(0,a.default)(e,2),s=i[0],r=i[1],c=s.split("-").map(Number),n=(0,a.default)(c,3),o=n[0],d=n[1],l=n[2],u=r.split(":").map(Number),f=(0,a.default)(u,2),_=f[0],p=f[1],v=new Date(o,d-1,l,_,p),h=new Date;h.setHours(0,0,0,0);var m=new Date(h);m.setDate(m.getDate()+1);var g=new Date(v);g.setHours(0,0,0,0);var y="".concat(_.toString().padStart(2,"0"),":").concat(p.toString().padStart(2,"0"));return g.getTime()===h.getTime()?"\u4eca".concat(y):g.getTime()===m.getTime()?"\u660e".concat(y):t},goServerDetail:function(t){}}};e.default=r},"42a1":function(t,e,i){"use strict";i.r(e);var s=i("55e8"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"42bd":function(t,e,i){"use strict";i.r(e);var s=i("83bc"),a=i("1f50");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"42ef":function(t,e,i){(function(e){var i=uni.getSystemInfoSync().platform,s=uni.getSystemInfoSync().screenWidth,a=uni.getSystemInfoSync().screenHeight;function r(t,e){return"android"==i?t:"ios"==i?e:""}function c(t,e){return s-t-e}function n(t,i,s){return e("log",t," at utils/ui-config.js:18"),e("log",t-s-i," at utils/ui-config.js:19"),t-s-i}t.exports={buildFullscreen:function(){var t=parseInt((plus.screen.resolutionHeight-80)/20),e=String(1*t-10),i=String(5*t),s=String(6*t+20),a=String(9*t),r=String(12*t);return{uiConfig:{setStatusBarStyle:"1",setNavUi:{text:"\u4e00\u952e\u767b\u5f55",textColor:"#FFFFFF",bgColor:"#0faeff",bottomBgColor:"#FF0000",returnImgPath:"static/nav_back.png",returnImgWidth:"24",returnImgHeight:"24"},setLogoUi:{imgPath:"static/mytel_app_launcher.png",top:e},setSloganUi:{top:i},setNumberUi:{top:s},setLoginBtnUi:{top:a},setCheckBoxUi:{top:10},setSwitchUi:{textColor:"#0faeff",top:r},setPrivacyUi:{expandAuthPageCheckedScope:!0},setAppPrivacyOne:{title:"\u7528\u6237\u534f\u8bae",url:"https://www.taobao.com"},setAppPrivacyTwo:{title:"\u9690\u79c1\u653f\u7b56",url:"https://www.taobao.com"},setAppPrivacyThree:{title:"\u670d\u52a1\u534f\u8bae",url:"https://www.taobao.com"}}}},buildPrivacyAlertFullscreen:function(){var t=parseInt((plus.screen.resolutionHeight-80)/20),e=String(1*t-10),i=String(5*t),s=String(6*t+20),a=String(9*t),o=String(12*t);return{uiConfig:{setStatusBarStyle:"1",setNavUi:{text:"\u4e00\u952e\u767b\u5f55",textColor:"#FFFFFF",bgColor:"#0faeff",returnImgPath:"static/nav_back.png",returnImgWidth:"24",returnImgHeight:"24"},setLogoUi:{imgPath:"static/mytel_app_launcher.png",top:e},setSloganUi:{top:i},setNumberUi:{top:s},setCheckBoxUi:{top:10},setLoginBtnUi:{top:a},setSwitchUi:{textColor:"#0faeff",top:o},setPrivacyUi:{expandAuthPageCheckedScope:!0},setAppPrivacyOne:{title:"\u7528\u6237\u534f\u8bae",url:"https://www.taobao.com"},setAppPrivacyTwo:{title:"\u9690\u79c1\u653f\u7b56",url:"https://www.taobao.com"},setAppPrivacyThree:{title:"\u670d\u52a1\u534f\u8bae",url:"https://www.taobao.com"},setPrivacyAlertIsNeedShow:!0,setPrivacyAlertUi:{needAutoLogin:!0,radius:[10,10,10,10],backgroundColor:"#FFFFFF",width:r(300,c(20,20)),height:r(400,200)},setPrivacyAlertMaskUi:{needShow:!0,tapMaskClosed:!0,color:"#000000",alpha:.5},setPrivacyAlertTitleUi:{backgroundColor:"#FFFFFF",alignment:1,text:"\u8bf7\u540c\u610f",textSize:r(16,20),textColor:"#000000",top:10},setPrivacyAlertCloseUi:{needShow:!0,top:0,left:r(335,n(c(20,20),40,15))},setPrivacyAlertContentUi:{backgroundColor:"#FFFFFF",textSize:r(14,18),alignment:1,top:r(10,50),width:335,left:40},setPrivacyAlertConfirmUi:{text:"\u6211\u5df2\u9605\u8bfb",color:"#FF7F00",textColor:"#000000",textSize:r(17,18),width:r(100,150),top:r(40,130),height:50,left:r(170,210)}},privacyAlertWidgets:[{widgetId:"closePrivacyAlert",type:"Button",textContent:"\u53d6\u6d88",textSize:r(17,18),textColor:"#000000",borderColor:"#FF7F00",borderWidth:1,backgroundColor:"#FFFFFF",left:r(30,40),top:r(40,130),width:r(100,150),height:50}]}},buildFullscreenPrivacyActionSheetStyle:function(){var t=parseInt((plus.screen.resolutionHeight-80)/20),e=String(1*t-10),i=String(5*t),n=String(6*t+20),o=String(9*t),d=String(12*t);return{uiConfig:{setStatusBarStyle:"1",setNavUi:{text:"\u4e00\u952e\u767b\u5f55",textColor:"#FFFFFF",bgColor:"#0faeff",returnImgPath:"static/nav_back.png",returnImgWidth:"24",returnImgHeight:"24"},setLogoUi:{imgPath:"static/mytel_app_launcher.png",top:e},setSloganUi:{top:i},setNumberUi:{top:n},setLoginBtnUi:{top:o},setCheckBoxUi:{top:10},setSwitchUi:{textColor:"#0faeff",top:d},setPrivacyUi:{expandAuthPageCheckedScope:!0},setAppPrivacyOne:{title:"\u7528\u6237\u534f\u8bae",url:"https://www.taobao.com"},setAppPrivacyTwo:{title:"\u9690\u79c1\u653f\u7b56",url:"https://www.taobao.com"},setAppPrivacyThree:{title:"\u670d\u52a1\u534f\u8bae",url:"https://www.taobao.com"},setPrivacyAlertIsNeedShow:!0,setPrivacyAlertUi:{needAutoLogin:!1,radius:[10,0,0,10],backgroundColor:"#FFFFFF",width:s,height:r(400,300),top:a-r(400,300)},setPrivacyAlertMaskUi:{needShow:!0,tapMaskClosed:!0,color:"#000000",alpha:.5},setPrivacyAlertTitleUi:{backgroundColor:"#FFFFFF",alignment:1,text:"\u8bf7\u540c\u610f",textSize:r(16,20),textColor:"#000000",top:10},setPrivacyAlertCloseUi:{needShow:!1},setPrivacyAlertContentUi:{backgroundColor:"#FFFFFF",textSize:r(14,18),alignment:1,top:r(10,50),width:335,left:40},setPrivacyAlertConfirmUi:{text:"\u6211\u5df2\u9605\u8bfb",color:"#FF7F00",textColor:"#FFFFFF",textSize:r(17,18),width:c(20,20),top:r(40,130),height:50,left:20}},privacyAlertWidgets:[{widgetId:"closePrivacyAlert",type:"Button",textContent:"\u53d6\u6d88",textSize:r(17,18),textColor:"#000000",borderColor:"#FF7F00",borderWidth:1,backgroundColor:"#FFFFFF",left:20,top:r(100,200),width:c(20,20),height:50}]}},buildFullscreenPrivacyLandscapeAlertStyle:function(){var t=parseInt((plus.screen.resolutionHeight-80)/20),e=String(1*t-30),i=String(2*t+30),s=String(3*t+40),a=String(4*t+60);return{uiConfig:{supportedInterfaceOrientations:24,setScreenOrientation:6,setStatusBarStyle:"1",setNavUi:{text:"\u4e00\u952e\u767b\u5f55",textColor:"#FFFFFF",bgColor:"#0faeff",returnImgPath:"static/nav_back.png",returnImgWidth:"24",returnImgHeight:"24"},setLogoUi:{imgPath:"static/mytel_app_launcher.png",top:e},setSloganHidden:!0,setNumberUi:{top:i},setLoginBtnUi:{top:s},setSwitchUi:{textColor:"#0faeff",top:a},setPrivacyUi:{expandAuthPageCheckedScope:!0},setAppPrivacyOne:{title:"\u7528\u6237\u534f\u8bae",url:"https://www.taobao.com"},setAppPrivacyTwo:{title:"\u9690\u79c1\u653f\u7b56",url:"https://www.taobao.com"},setAppPrivacyThree:{title:"\u670d\u52a1\u534f\u8bae",url:"https://www.taobao.com"},setPrivacyAlertIsNeedShow:!0,setPrivacyAlertUi:{needAutoLogin:!1,radius:[10,10,10,10],backgroundColor:"#FFFFFF",width:r(300,c(20,20)),height:r(300,200)},setPrivacyAlertMaskUi:{needShow:!0,tapMaskClosed:!0,color:"#000000",alpha:.5},setPrivacyAlertTitleUi:{backgroundColor:"#FFFFFF",alignment:1,text:"\u8bf7\u540c\u610f",textSize:r(16,20),textColor:"#000000",top:10},setPrivacyAlertCloseUi:{needShow:!0,top:0,left:r(335,n(c(20,20),40,15))},setPrivacyAlertContentUi:{backgroundColor:"#FFFFFF",textSize:r(14,18),alignment:1,top:r(10,50),width:335,left:40},setPrivacyAlertConfirmUi:{text:"\u6211\u5df2\u9605\u8bfb",color:"#FF7F00",textColor:"#FFFFFF",textSize:r(17,18),width:r(100,150),top:r(40,130),height:50,left:r(170,210)}},privacyAlertWidgets:[{widgetId:"closePrivacyAlert",type:"Button",textContent:"\u53d6\u6d88",textSize:r(17,18),textColor:"#000000",borderColor:"#FF7F00",borderWidth:1,backgroundColor:"#FFFFFF",left:r(30,40),top:r(40,130),width:r(100,150),height:50}]}},buildFullscreenPrivacyLandscapeActionSheetStyle:function(){var t=parseInt((plus.screen.resolutionHeight-80)/20);e("log",t," at utils/ui-config.js:439");var i=String(1*t-30),c=String(2*t+30),n=String(3*t+40),o=String(4*t+60);return{uiConfig:{supportedInterfaceOrientations:24,setScreenOrientation:6,setStatusBarStyle:"1",setNavUi:{text:"\u4e00\u952e\u767b\u5f55",textColor:"#FFFFFF",bgColor:"#0faeff",returnImgPath:"static/nav_back.png",returnImgWidth:"24",returnImgHeight:"24"},setLogoUi:{imgPath:"static/mytel_app_launcher.png",top:i},setSloganHidden:!0,setNumberUi:{top:c},setLoginBtnUi:{top:n},setSwitchUi:{textColor:"#0faeff",top:o},setPrivacyUi:{expandAuthPageCheckedScope:!0},setAppPrivacyOne:{title:"\u7528\u6237\u534f\u8bae",url:"https://www.taobao.com"},setAppPrivacyTwo:{title:"\u9690\u79c1\u653f\u7b56",url:"https://www.taobao.com"},setAppPrivacyThree:{title:"\u670d\u52a1\u534f\u8bae",url:"https://www.taobao.com"},setPrivacyAlertIsNeedShow:!0,setPrivacyAlertUi:{needAutoLogin:!1,radius:r([10,10,0,0],[10,0,0,10]),backgroundColor:"#FFFFFF",width:r(a-120,400),height:r(240,300),top:r(s-240,a-300),left:r(30,.5*(s-400))},setPrivacyAlertMaskUi:{needShow:!0,tapMaskClosed:!0,color:"#000000",alpha:.5},setPrivacyAlertTitleUi:{backgroundColor:"#FFFFFF",alignment:1,text:"\u8bf7\u540c\u610f",textSize:r(16,20),textColor:"#000000",top:10},setPrivacyAlertCloseUi:{needShow:!1},setPrivacyAlertContentUi:{backgroundColor:"#FFFFFF",textSize:r(14,18),alignment:1,top:r(10,50),width:335,left:40},setPrivacyAlertConfirmUi:{text:"\u6211\u5df2\u9605\u8bfb",color:"#FF7F00",textColor:"#FFFFFF",textSize:r(17,18),width:r(a-400,360),top:r(10,130),height:r(40,50),left:r(140,20)}},privacyAlertWidgets:[{widgetId:"closePrivacyAlert",type:"Button",textContent:"\u53d6\u6d88",textSize:r(17,18),textColor:"#000000",borderColor:"#FF7F00",borderWidth:1,backgroundColor:"#FFFFFF",left:r(140,20),top:r(60,200),width:r(a-400,360),height:r(42,50)}]}},buildAlert:function(){plus.display.resolutionHeight;var t=plus.display.resolutionWidth,e=parseInt(.8*t),i=parseInt(e/.618),s=parseInt(i/10),a=String(.3*s),c=String(2.5*s),n=String(3.2*s),o=String(4.3*s),d=String(6*s);return{uiConfig:{setDialogTheme:{width:String(e),height:String(i)},setNavUi:{text:"\u4e00\u952e\u767b\u5f55",textColor:"#000000",bgColor:"#00FFFFFF",returnImgPath:"static/close_black.png",returnImgWidth:"24",returnImgHeight:"24"},setLogoUi:{imgPath:"static/mytel_app_launcher.png",top:a},setSloganUi:{top:c},setNumberUi:{top:n,textSize:r("23","24")},setLoginBtnUi:{top:o},setSwitchUi:{textColor:"#0faeff",top:d},setPrivacyUi:{expandAuthPageCheckedScope:!0},setAppPrivacyOne:{title:"\u7528\u6237\u534f\u8bae",url:"https://www.taobao.com"},setAppPrivacyTwo:{title:"\u9690\u79c1\u653f\u7b56",url:"https://www.taobao.com"},setAppPrivacyThree:{title:"\u670d\u52a1\u534f\u8bae",url:"https://www.taobao.com"}}}},buildSheet:function(){plus.display.resolutionHeight;var t=parseInt(45),e=(String(.3*t),String(1.8*t)),i=String(.6*t),s=String(3.2*t),a=String(4.8*t),c=String(7.2*t);return{uiConfig:{setDialogTheme:{height:String(450),isBottom:"true"},setNavUi:{text:"\u4e00\u952e\u767b\u5f55",textSize:"15",textColor:"#FF333333",bgColor:"#FFFFFFFF",returnImgPath:"static/images/icons/close.png",returnImgWidth:"20",returnImgHeight:"20"},setSloganUi:{textSize:"12",top:e},setNumberUi:{top:i,textSize:r("28","28")},setLoginBtnUi:{top:s,textSize:"15",imgPath:"static/images/background/buttonBj.png",width:"295",height:"49"},setSwitchUi:{textColor:"#0faeff",top:c},setCheckBoxUi:{defaultChecked:"true",unCheckedImgPath:"static/images/agree_n.png",checkedImgPath:"static/images/agree_y.png",width:"14",checkBoxPostion:"top",top:3},setPrivacyUi:{expandAuthPageCheckedScope:!0,textSize:"13",vendorPrivacyPrefix:"\u300a",vendorPrivacySuffix:"\u300b",top:a,beforeText:"\u672a\u6ce8\u518c\u624b\u673a\u53f7\u767b\u5f55\u540e\u5c06\u81ea\u52a8\u751f\u6210\u8d26\u53f7\uff0c\u4e14\u4ee3\u8868\u60a8\u5df2\u9605\u8bfb\u5e76\u540c\u610f\uff0c",conectTexts:"[' ',' ',' ']",baseColor:"#898989 ",oneColor:"#E8101E",twoColor:"#E8101E",threeColor:"#E8101E"},setAppPrivacyOne:{title:"\u300a\u7528\u6237\u6ce8\u518c\u534f\u8bae\u300b",url:"https://www.mrrweb.com.cn/junit/system/sjappzcxy"},setAppPrivacyTwo:{title:"\u300a\u9690\u79c1\u653f\u7b56\u300b",url:"https://www.mrrweb.com.cn/junit/system/sjappyszc"}}}},buildFullscreenAndImageBg:function(){var t=plus.screen.resolutionHeight,e=plus.screen.resolutionWidth,i=t-80,s=parseInt(i/20),a=String(11*s),c=String(13*s);return{uiConfig:{setStatusBarStyle:"1",setNavHidden:"true",setLogoHidden:"true",setSloganHidden:"true",setSwitchHidden:"true",setBackgroundUi:{backgroundColor:"#01001C",imagePath:"static/background.png"},setNumberUi:{top:a,textColor:"#FFFFFF"},setLoginBtnUi:{top:c},setPrivacyUi:{expandAuthPageCheckedScope:!0}},widgets:[{widgetId:"close",type:"Button",left:"25",top:r("0","64"),width:"24",height:"24",backgroundImage:"static/close_white.png"},{widgetId:"line",type:"Text",alignment:"1",textContent:"-\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55-",textSize:"13",textColor:"#FFFFFF",backgroundColor:"#00FFFFFF",left:"10",top:String(16*s),width:String(e-20),height:"20"},{widgetId:"alipay",type:"Button",left:String(.5*e-20-50),top:String(17*s),width:"50",height:"50",backgroundImage:"static/alipay_icon.png"},{widgetId:"taobao",type:"Button",left:String(.5*e+20),top:String(17*s),width:"50",height:"50",backgroundImage:"static/taobao_icon.png"}]}},buildFullscreenAndVideoBg:function(){var t=plus.screen.resolutionHeight,e=plus.screen.resolutionWidth,i=t-80,s=parseInt(i/20),a=String(11*s),c=String(13*s);return{uiConfig:{setStatusBarStyle:"1",setNavHidden:"true",setLogoHidden:"true",setSloganHidden:"true",setSwitchHidden:"true",setBackgroundUi:{backgroundColor:"#01001C",videoPath:"static/background_video.mp4"},setNumberUi:{top:a,textColor:"#FFFFFF"},setLoginBtnUi:{top:c},setPrivacyUi:{expandAuthPageCheckedScope:!0}},widgets:[{widgetId:"close",type:"Button",left:"25",top:r("0","64"),width:"24",height:"24",backgroundImage:"static/close_white.png"},{widgetId:"line",type:"Text",alignment:"1",textContent:"-\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55-",textSize:"13",textColor:"#FFFFFF",backgroundColor:"#00FFFFFF",left:"10",top:String(16*s),width:String(e-20),height:"20"},{widgetId:"alipay",type:"Button",left:String(.5*e-20-50),top:String(17*s),width:"50",height:"50",backgroundImage:"static/alipay_icon.png"},{widgetId:"taobao",type:"Button",left:String(.5*e+20),top:String(17*s),width:"50",height:"50",backgroundImage:"static/taobao_icon.png"}]}},buildFullscreenAndGifBg:function(){var t=plus.screen.resolutionHeight,e=plus.screen.resolutionWidth,i=t-80,s=parseInt(i/20),a=String(11*s),c=String(13*s);return{uiConfig:{setStatusBarStyle:"1",setNavHidden:"true",setLogoHidden:"true",setSloganHidden:"true",setSwitchHidden:"true",setBackgroundUi:{backgroundColor:"#01001C",gifPath:"static/background_gif.gif"},setNumberUi:{top:a,textColor:"#FFFFFF"},setLoginBtnUi:{top:c},setPrivacyUi:{expandAuthPageCheckedScope:!0}},widgets:[{widgetId:"close",type:"Button",left:"25",top:r("0","64"),width:"24",height:"24",backgroundImage:"static/close_white.png"},{widgetId:"line",type:"Text",alignment:"1",textContent:"-\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55-",textSize:"13",textColor:"#FFFFFF",backgroundColor:"#00FFFFFF",left:"10",top:String(16*s),width:String(e-20),height:"20"},{widgetId:"alipay",type:"Button",left:String(.5*e-20-50),top:String(17*s),width:"50",height:"50",backgroundImage:"static/alipay_icon.png"},{widgetId:"taobao",type:"Button",left:String(.5*e+20),top:String(17*s),width:"50",height:"50",backgroundImage:"static/taobao_icon.png"}]}},buildFullscreenAndWebviewBg:function(){var t=plus.screen.resolutionHeight,e=plus.screen.resolutionWidth,i=t-80,s=parseInt(i/20),a=String(7*s),c=String(9*s),n=String(12*s);return{uiConfig:{setStatusBarStyle:"1",setNavHidden:"true",setLogoHidden:"true",setSwitchHidden:"true",setBackgroundUi:{webviewPath:"static/background_web.html"},setNumberUi:{top:a,textColor:"#FFFFFF"},setSloganUi:{textColor:"#FFFFFF",textSize:r("16","17"),top:c},setLoginBtnUi:{top:n},setPrivacyUi:{expandAuthPageCheckedScope:!0}},widgets:[{widgetId:"close",type:"Button",left:"25",top:r("0","64"),width:"24",height:"24",backgroundImage:"static/close_white.png"},{widgetId:"line",type:"Text",alignment:"1",textContent:"-\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55-",textSize:"13",textColor:"#FFFFFF",backgroundColor:"#00FFFFFF",left:"10",top:String(15*s),width:String(e-20),height:"20"},{widgetId:"alipay",type:"Button",left:String(.5*e-20-50),top:String(16*s),width:"50",height:"50",backgroundImage:"static/alipay_icon.png"},{widgetId:"taobao",type:"Button",left:String(.5*e+20),top:String(16*s),width:"50",height:"50",backgroundImage:"static/taobao_icon.png"}]}},buildFullscreenAndWeexViewBg:function(){var t=plus.screen.resolutionHeight,e=plus.screen.resolutionWidth,i=t-80,s=parseInt(i/20),a=String(7*s),c=String(9*s),n=String(12*s);return{uiConfig:{setStatusBarStyle:"1",setNavHidden:"true",setLogoHidden:"true",setSwitchHidden:"true",setBackgroundUi:{backgroundColor:"#1E5372",weexJsPath:"static/background_weex.js"},setNumberUi:{top:a,textColor:"#FFFFFF"},setSloganUi:{textColor:"#FFFFFF",textSize:r("16","17"),top:c},setLoginBtnUi:{top:n},setPrivacyUi:{expandAuthPageCheckedScope:!0}},widgets:[{widgetId:"close",type:"Button",left:"25",top:r("0","64"),width:"24",height:"24",backgroundImage:"static/close_white.png"},{widgetId:"line",type:"Text",alignment:"1",textContent:"-\u5176\u4ed6\u65b9\u5f0f\u767b\u5f55-",textSize:"13",textColor:"#FFFFFF",backgroundColor:"#00FFFFFF",left:"10",top:String(15*s),width:String(e-20),height:"20"},{widgetId:"alipay",type:"Button",left:String(.5*e-20-50),top:String(16*s),width:"50",height:"50",backgroundImage:"static/alipay_icon.png"},{widgetId:"taobao",type:"Button",left:String(.5*e+20),top:String(16*s),width:"50",height:"50",backgroundImage:"static/taobao_icon.png"}]}},buildFullscreenGlobalFontName:function(){var t=parseInt((plus.screen.resolutionHeight-80)/20),e=String(1*t-10),i=String(5*t),s=String(6*t+20),a=String(9*t),o=String(12*t);return{uiConfig:{globalFontName:r("serif","STHeitiSC-Medium"),setStatusBarStyle:"1",setNavUi:{text:"\u4e00\u952e\u767b\u5f55",textColor:"#FFFFFF",bgColor:"#0faeff",returnImgPath:"static/nav_back.png",returnImgWidth:"24",returnImgHeight:"24",fontName:r("static/fonts/globalFont.ttf","PingFangSC-Regular")},setLogoUi:{imgPath:"static/mytel_app_launcher.png",top:e},setSloganUi:{top:i},setNumberUi:{top:s},setLoginBtnUi:{top:a},setSwitchUi:{textColor:"#0faeff",top:o},setPrivacyUi:{expandAuthPageCheckedScope:!0},setAppPrivacyOne:{title:"\u7528\u6237\u534f\u8bae",url:"https://www.taobao.com"},setAppPrivacyTwo:{title:"\u9690\u79c1\u653f\u7b56",url:"https://www.taobao.com"},setAppPrivacyThree:{title:"\u670d\u52a1\u534f\u8bae",url:"https://www.taobao.com"},setPrivacyAlertIsNeedShow:!0,setPrivacyAlertUi:{needAutoLogin:!1,radius:[10,10,10,10],backgroundColor:"#FFFFFF",width:r(300,c(20,20)),height:r(400,200)},setPrivacyAlertMaskUi:{needShow:!0,tapMaskClosed:!0,color:"#000000",alpha:.5},setPrivacyAlertTitleUi:{backgroundColor:"#FFFFFF",alignment:1,text:"\u8bf7\u540c\u610f",textSize:r(16,20),textColor:"#000000",top:10},setPrivacyAlertCloseUi:{needShow:!0,top:0,left:r(335,n(c(20,20),40,15))},setPrivacyAlertContentUi:{backgroundColor:"#FFFFFF",textSize:r(14,18),alignment:1,top:r(10,50),width:335,left:40},setPrivacyAlertConfirmUi:{text:"\u6211\u5df2\u9605\u8bfb",color:"#FF7F00",textColor:"#FFFFFF",textSize:18,width:r(100,150),top:r(40,130),height:50,left:r(170,210)}},privacyAlertWidgets:[{widgetId:"closePrivacyAlert",type:"Button",textContent:"\u53d6\u6d88",textSize:18,textColor:"#000000",borderColor:"#FF7F00",borderWidth:1,backgroundColor:"#FFFFFF",left:r(30,40),top:r(40,130),width:r(100,150),height:50}]}},buildFullscreenSingleFontName:function(){var t=parseInt((plus.screen.resolutionHeight-80)/20),e=String(1*t-10),i=String(5*t),s=String(6*t+20),a=String(9*t),o=String(12*t);return{uiConfig:{globalFontName:r("static/fonts/globalFont.ttf","STHeitiSC-Medium"),setStatusBarStyle:"1",setNavUi:{text:"\u4e00\u952e\u767b\u5f55",textColor:"#FFFFFF",bgColor:"#0faeff",returnImgPath:"static/nav_back.png",returnImgWidth:"24",returnImgHeight:"24",fontName:r("static/fonts/globalFont.ttf","static/testFont.ttf")},setLogoUi:{imgPath:"static/mytel_app_launcher.png",top:e},setSloganUi:{top:i},setNumberUi:{top:s,fontName:"static/fonts/testFont.ttf",textSize:25},setLoginBtnUi:{top:a},setSwitchUi:{textColor:"#0faeff",top:o},setPrivacyUi:{expandAuthPageCheckedScope:!0},setAppPrivacyOne:{title:"\u7528\u6237\u534f\u8bae",url:"https://www.taobao.com"},setAppPrivacyTwo:{title:"\u9690\u79c1\u653f\u7b56",url:"https://www.taobao.com"},setAppPrivacyThree:{title:"\u670d\u52a1\u534f\u8bae",url:"https://www.taobao.com"},setPrivacyAlertIsNeedShow:!0,setPrivacyAlertUi:{needAutoLogin:!1,radius:[10,10,10,10],backgroundColor:"#FFFFFF",width:r(300,c(20,20)),height:r(400,200)},setPrivacyAlertMaskUi:{needShow:!0,tapMaskClosed:!0,color:"#000000",alpha:.5},setPrivacyAlertTitleUi:{backgroundColor:"#FFFFFF",alignment:1,text:"\u8bf7\u540c\u610f",textSize:r(16,20),textColor:"#000000",top:10},setPrivacyAlertCloseUi:{needShow:!0,top:0,left:r(335,n(c(20,20),40,15))},setPrivacyAlertContentUi:{backgroundColor:"#FFFFFF",textSize:r(14,18),alignment:1,top:r(10,50),width:335,left:40},setPrivacyAlertConfirmUi:{text:"\u6211\u5df2\u9605\u8bfb",color:"#FF7F00",textColor:"#FFFFFF",textSize:18,width:r(100,150),top:r(40,130),height:50,fontName:"static/fonts/testFont.ttf",left:r(170,210)}},privacyAlertWidgets:[{widgetId:"closePrivacyAlert",type:"Button",textContent:"\u53d6\u6d88",textSize:18,textColor:"#000000",borderColor:"#FF7F00",borderWidth:1,backgroundColor:"#FFFFFF",left:r(30,40),top:r(40,130),width:r(100,150),height:50}]}},buildFullscreenPrivacySignalColor:function(){var t=parseInt((plus.screen.resolutionHeight-80)/20),e=String(1*t-10),i=String(5*t),s=String(6*t+20),a=String(9*t),o=String(12*t);return{uiConfig:{setStatusBarStyle:"1",setNavUi:{text:"\u4e00\u952e\u767b\u5f55",textColor:"#FFFFFF",bgColor:"#0faeff",returnImgPath:"static/nav_back.png",returnImgWidth:"24",returnImgHeight:"24"},setLogoUi:{imgPath:"static/mytel_app_launcher.png",top:e},setSloganUi:{top:i},setNumberUi:{top:s},setLoginBtnUi:{top:a},setSwitchUi:{textColor:"#0faeff",top:o},setPrivacyUi:{expandAuthPageCheckedScope:!0,operatorColor:"#F534D2",oneColor:"#FF0000",twoColor:"#00FF00",threeColor:"#0000FF",beforeText:"\u8bf7\u9605\u8bfb\u5e76\u540c\u610f",endText:"\uff0c\u8c22\u8c22"},setAppPrivacyOne:{title:"\u7528\u6237\u534f\u8bae",url:"https://www.taobao.com"},setAppPrivacyTwo:{title:"\u9690\u79c1\u653f\u7b56",url:"https://www.taobao.com"},setAppPrivacyThree:{title:"\u670d\u52a1\u534f\u8bae",url:"https://www.taobao.com"},setPrivacyAlertIsNeedShow:!0,setPrivacyAlertUi:{needAutoLogin:!1,radius:[10,10,10,10],backgroundColor:"#FFFFFF",width:r(300,c(20,20)),height:r(400,200)},setPrivacyAlertMaskUi:{needShow:!0,tapMaskClosed:!0,color:"#000000",alpha:.5},setPrivacyAlertTitleUi:{backgroundColor:"#FFFFFF",alignment:1,text:"\u8bf7\u540c\u610f",textSize:r(16,20),textColor:"#000000",top:10},setPrivacyAlertCloseUi:{needShow:!0,top:0,left:r(335,n(c(20,20),40,15))},setPrivacyAlertContentUi:{backgroundColor:"#FFFFFF",textSize:r(14,18),alignment:1,top:r(10,50),width:335,left:40,privacyAlertOperatorColor:"#F534D2",privacyAlertOneColor:"#FF0000",privacyAlertTwoColor:"#00FF00",privacyAlertThreeColor:"#0000FF",privacyAlertBeforeText:"\u8bf7\u9605\u8bfb\u5e76\u540c\u610f",privacyAlertEndText:"\uff0c\u8c22\u8c22"},setPrivacyAlertConfirmUi:{text:"\u6211\u5df2\u9605\u8bfb",color:"#FF7F00",textColor:"#FFFFFF",textSize:18,width:r(100,150),top:r(40,130),height:50,left:r(170,210)}},privacyAlertWidgets:[{widgetId:"closePrivacyAlert",type:"Button",textContent:"\u53d6\u6d88",textSize:18,textColor:"#000000",borderColor:"#FF7F00",borderWidth:1,backgroundColor:"#FFFFFF",left:r(30,40),top:r(40,130),width:r(100,150),height:50}]}}}}).call(this,i("f3b9")["default"])},4328:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("635f")),r=s(i("16bb")),c=s(i("2251")),n=s(i("6bf1")),o=s(i("06c4")),d=s(i("f8df")),l={components:{searchBox:n.default,serviecFirstTab:c.default,FilterPanel:o.default,CommonList:d.default,syrCardList:a.default},data:function(){return{statusBarHeight:0,queryData:{type:1},activeId:"",tabs:[]}},onLoad:function(){this.getLocation();var t=uni.getSystemInfoSync();this.statusBarHeight=t.statusBarHeight,this.getFirstClass()},methods:{getLocation:function(){var t={},e=uni.getStorageSync("userAdrees");t=e?e.addressRes:getApp().globalData.addressRes,this.queryData.userLat=t.latitude,this.queryData.userLngz=t.longitude},search:function(){this.$refs.groupRef.manualRefresh(this.queryData)},searchConfrim:function(t){this.search()},tabClick:function(t){this.activeId=t,this.queryData.first_class=t,this.search()},getFirstClass:function(){var t=this;r.default.post("/user/firstclass").then((function(e){t.queryData.first_class=e.data[0].id,t.activeId=e.data[0].id,t.tabs=e.data,t.search()}))},handleFilter:function(e){t("log","\u7b5b\u9009\u7ed3\u679c\uff1a",e," at pages/service/appointment.vue:102"),this.queryData.distance=e.selectedDistance}}};e.default=l}).call(this,i("f3b9")["default"])},"436e":function(t,e,i){"use strict";i.r(e);var s=i("ad84"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"440f":function(t,e,i){"use strict";i.r(e);var s=i("85e3"),a=i("2863");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},4436:function(t,e,i){"use strict";i.r(e);var s=i("4b3d"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},4462:function(t,e,i){"use strict";i.r(e);var s=i("a202"),a=i("fc57");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},4479:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={data:function(){return{activeId:1,showPopup:!1,tabsList:[],popId:null,priceIndex:0,priceList:[{id:null,src:"/static/images/syr/price1.png"},{id:2,src:"/static/images/syr/price2.png"},{id:3,src:"/static/images/syr/price3.png"}]}},props:{tabsPopList:{type:Array,default:function(){return[]}}},methods:{clickPopTap:function(t){this.popId=this.popId===t.id?null:t.id,this.confirmPopup()},resetPopup:function(){this.popId=null,this.$emit("clickPopTap",null)},confirmPopup:function(){this.showPopup=!1,this.$emit("clickPopTap",this.popId)},clickTap:function(t){var e={order_type:null,msk:!1};3==t?(this.showPopup=!this.showPopup,e.msk=this.showPopup,this.$emit("clickTap",e)):2==t?(this.activeId=t,this.showPopup=!1,this.priceIndex=1===this.priceIndex?2:1,e.order_type=this.priceList[this.priceIndex].id,this.$emit("clickTap",e)):(this.priceIndex=0,this.activeId=t,this.showPopup=!1,e.order_type=this.activeId,this.$emit("clickTap",e))}}};e.default=s},"44b6":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("af34")),c=s(i("ee10")),n=s(i("cab6")),o=s(i("666e")),d=s(i("16bb")),l=s(i("378d")),u=s(i("011c")),f={name:"buyManHour",data:function(){return{statusBarHeight:0,filterShow:!1,isLoad:!0,count:0,customizeTime:"",showTimeFilter:!1,title:"",tabs:[],tabsIndex:0,queryData:{page:1,limit:10},start_price:null,end_price:null,filterListId:null,infoDetailLists:[],filterListSelectLists:[],filterDetailsLists:[{id:1,title:"\u8425\u4e1a\u65f6\u95f4",details:[{id:1,name:"\u8425\u4e1a\u4e2d",value:""},{id:2,name:"24\u5c0f\u65f6\u8425\u4e1a",value:"00:00-23:59"},{id:3,name:"9-12\u65f6",value:"9:00-12:00"},{id:4,name:"12-14\u65f6",value:"12:00-14:00"},{id:5,name:"14-18\u65f6",value:"14:00-18:00"},{id:6,name:"18-24\u65f6",value:"18:00-23:59"},{id:7,name:"0-9\u65f6",value:"0:00-12:00"}]},{id:2,title:"\u4ef7\u683c",details:[{id:1,name:"0-10\u5143",value:"0-10"},{id:2,name:"10-30\u5143",value:"10-30"},{id:3,name:"30-50\u5143",value:"30-50"},{id:4,name:"50-100\u5143",value:"50-100"},{id:5,name:"100-300\u5143",value:"100-300"},{id:6,name:"300+",value:"300-"}]},{id:3,title:"\u6392\u5e8f",details:[{id:1,name:"\u4ef7\u683c\u6700\u4f4e",value:"1"},{id:2,name:"\u4ef7\u683c\u6700\u9ad8",value:"2"},{id:3,name:"\u9500\u91cf\u6700\u9ad8",value:"3"}]}],serviceHours:[{id:1,title:"\u4eca\u65e5\u53ef\u7ea6"},{id:2,title:"\u8fd1\u4e24\u65e5\u53ef\u7ea6"},{id:3,title:"\u8fd1\u4e09\u65e5\u53ef\u7ea6"}],serviceHoursIndex:null,serverlist:[]}},components:{buyOrderCard:l.default,filterPopup:o.default,filterCard:u.default,timePicker:n.default},onLoad:function(){var t=this;return(0,c.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t.statusBarHeight=uni.getSystemInfoSync().statusBarHeight,e.next=3,t.getClass();case 3:return e.next=5,t.refreshList();case 5:t.filterDetailsLists[0].details[0].value=t.getCurrentToEndOfDay();case 6:case"end":return e.stop()}}),e)})))()},onPullDownRefresh:function(){this.refreshList()},onReachBottom:function(){var e=this;return(0,c.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(t("log","onReachBottom"," at pages/shop/manHour/buyManHour.vue:340"),!(e.count<=e.queryData.page*e.queryData.limit)&&e.isLoad){i.next=3;break}return i.abrupt("return");case 3:e.queryData.page++,e.refreshList(!1);case 5:case"end":return i.stop()}}),i)})))()},methods:{filterChange:function(t){this.filterShow=t.show},placeOrder:function(e){t("log","\u4e0b\u5355\u5de5\u65f6ID",e," at pages/shop/manHour/buyManHour.vue:355"),uni.navigateTo({url:"/pages/shop/manHour/manHourDetail?id=".concat(e)})},getCurrentToEndOfDay:function(){var t=new Date,e=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0");return"".concat(e,":").concat(i,"-").concat(e,":").concat(i)},openTimePopup:function(){this.$refs.timePopup.openTimePopup()},openFilter:function(){this.$refs.filterPopup.open()},refreshList:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e&&(this.queryData.page=1,this.queryData.limit=10),this.queryData.title=this.title,d.default.post("/sj/workHour/list",this.queryData).then((function(i){e?(t.serverlist=i.data.list,t.count=i.data.count):(t.serverlist=[].concat((0,r.default)(t.serverlist),(0,r.default)(i.data.list)),t.count=i.data.count)})).finally((function(){t.isLoad=!0,uni.stopPullDownRefresh()}))},getClass:function(){var e=this;return(0,c.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.next=2,d.default.post("/sj/workHour/classList").then((function(i){t("log","\u83b7\u53d6\u5de5\u65f6\u5206\u7c7b\u5217\u8868",i," at pages/shop/manHour/buyManHour.vue:396"),200==i.code&&(e.tabs=i.data,e.queryData.first_class_id=e.tabs[0].id,e.$store.commit("setworkHourSJClassList",i.data))}));case 2:case"end":return i.stop()}}),i)})))()},selctServiceHours:function(t,e){var i=this;return(0,c.default)(a.default.mark((function s(){return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return i.serviceHoursIndex=t.id,s.next=3,i.getDate(e);case 3:i.queryData.page=1,i.refreshList(),i.showTimeFilter=!1;case 6:case"end":return s.stop()}}),s)})))()},getDate:function(t){this.queryData.date=[];var e=new Date;e.setTime(e.getTime());var i=e.getMonth()+1;i<=9&&(i="0"+i);var s=e.getDate();s<=9&&(s="0"+s);var a=e.getFullYear()+"-"+i+"-"+s,r=new Date;r.setTime(r.getTime()+864e5);var c=r.getMonth()+1;c<=9&&(c="0"+c);var n=r.getDate();n<=9&&(n="0"+n);var o=r.getFullYear()+"-"+c+"-"+n,d=new Date;d.setTime(d.getTime()+1728e5);var l=d.getMonth()+1;l<=9&&(l="0"+l);var u=d.getDate();u<=9&&(u="0"+u);var f=d.getFullYear()+"-"+l+"-"+u;return 0==t?this.queryData.date=["".concat(a)]:1==t?this.queryData.date=["".concat(a),"".concat(o)]:2==t?this.queryData.date=["".concat(a),"".concat(o),"".concat(f)]:void 0},getFirstlist:function(e,i){this.tabsIndex=i;var s=e.id;e.ratio,e.title;this.queryData.first_class_id=s,delete this.queryData.second_class_id,this.queryData.page=1,t("log","tab",this.queryData," at pages/shop/manHour/buyManHour.vue:471"),this.refreshList()},getSecondlist:function(t){var e=t.id;t.ratio,t.title;this.queryData.second_class_id=e,this.queryData.page=1,this.refreshList()},handleSelectLists:function(e,i){e.length>0?this.$set(this.filterListSelectLists,i,!0):this.$set(this.filterListSelectLists,i,!1),t("log","\u5f53\u524d\u9009\u62e9\u7684\u7b5b\u9009\u5217\u8868",this.filterListSelectLists," at pages/shop/manHour/buyManHour.vue:490")},resetFilter:function(){this.infoDetailLists=[],this.filterListSelectLists=[],delete this.queryData.price,delete this.queryData.times,delete this.queryData.sort,this.customizeTime="",this.start_price=null,this.end_price=null,this.refreshList(),t("log","\u91cd\u7f6e\u7b5b\u9009\u6761\u4ef6"," at pages/shop/manHour/buyManHour.vue:503")},sureFilter:function(){this.customizeTime&&(this.queryData.times?this.queryData.times="".concat(this.queryData.times,",").concat(this.customizeTime):this.queryData.times=this.customizeTime),this.start_price||this.end_price?(this.queryData.price="".concat(this.start_price||0,"-").concat(this.end_price||""),this.$set(this.filterListSelectLists,2,!0)):this.$set(this.filterListSelectLists,2,!1),this.queryData.page=1,this.refreshList()},selectDetailTime:function(e){this.handleSelectLists(e,1),this.$set(this.infoDetailLists,0,e),this.queryData.times=e.join(","),t("log","\u9009\u62e9\u7684\u65f6\u95f4\u6bb5",e," at pages/shop/manHour/buyManHour.vue:529")},selectDetailPrice:function(e){if(e[0]){var i=e[0].split("-");this.start_price=i[0],this.end_price=i[1]||null}else this.start_price=null,this.end_price=null;this.handleSelectLists(e,2),this.$set(this.infoDetailLists,1,e),t("log","\u9009\u62e9\u7684\u4ef7\u683c\u533a\u95f4",e," at pages/shop/manHour/buyManHour.vue:543")},selectDetailSort:function(e){this.handleSelectLists(e,3),this.$set(this.infoDetailLists,2,e),this.queryData.sort=e[0],t("log","\u9009\u62e9\u7684\u6392\u5e8f\u65b9\u5f0f",e," at pages/shop/manHour/buyManHour.vue:551")},confirmTime:function(e){t("log","\u9009\u62e9\u7684\u65f6\u95f4",e," at pages/shop/manHour/buyManHour.vue:555"),this.customizeTime=e,this.$set(this.filterListSelectLists,1,!0)}}};e.default=f}).call(this,i("f3b9")["default"])},"44c1":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$s(0,"i",t.show)?i("view",{staticClass:t._$s(0,"sc","tips-popup"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","mask"),attrs:{_i:1}}),i("view",{staticClass:t._$s(2,"sc","popup-content"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","popup-header"),attrs:{_i:3}},[i("text",{staticClass:t._$s(4,"sc","popup-title"),attrs:{_i:4}})]),i("view",{staticClass:t._$s(5,"sc","popup-body"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","rule-item"),attrs:{_i:6}},[i("text",{staticClass:t._$s(7,"sc","rule-text"),attrs:{_i:7}})])]),i("view",{staticClass:t._$s(8,"sc","btn_box"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","btn"),attrs:{_i:9},on:{click:t.goAdd}}),i("view",{staticClass:t._$s(10,"sc","btn"),attrs:{_i:10},on:{click:t.handleClose}})])])]):t._e()},a=[]},"44f0":function(t,e,i){"use strict";i.r(e);var s=i("0430"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},4543:function(t,e,i){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i={data:function(){return{showTimePicker:!0,pickerValue:[19,34,0,20,34],hours:Array.from({length:24},(function(t,e){return e<10?"0".concat(e):"".concat(e)})),minutes:Array.from({length:60},(function(t,e){return e<10?"0".concat(e):"".concat(e)})),timeType:"start",indicatorStyle:"height: 80rpx;"}},computed:{startTime:function(){return{hour:this.hours[this.pickerValue[0]],minute:this.minutes[this.pickerValue[1]]}},endTime:function(){return{hour:this.hours[this.pickerValue[3]],minute:this.minutes[this.pickerValue[4]]}}},methods:{openTimePicker:function(){this.showTimePicker=!0,setTimeout((function(){var t=document.querySelector(".popup-mask");t&&t.classList.add("show")}),0)},closeTimePicker:function(){var t=this,e=document.querySelector(".popup-mask");e&&e.classList.remove("show"),setTimeout((function(){t.showTimePicker=!1}),300)},switchTimeType:function(t){this.timeType=t},handleTimeChange:function(e){var i=e.detail.value;t("log",i," at pages/add/add.vue:113");var s=60*parseInt(this.hours[i[0]])+parseInt(this.minutes[i[1]]),a=60*parseInt(this.hours[i[3]])+parseInt(this.minutes[i[4]]);if(s>=a){var r=(parseInt(this.hours[i[0]])+1)%24;i[3]=r,i[4]=i[1]}this.pickerValue=i},formatTime:function(t){return"".concat(t.hour,":").concat(t.minute)},confirmTime:function(){var e={start:this.formatTime(this.startTime),end:this.formatTime(this.endTime)};t("log","Selected time range:",e," at pages/add/add.vue:137"),this.closeTimePicker()}}};e.default=i}).call(this,i("f3b9")["default"])},"45e7":function(t,e,i){"use strict";i.r(e);var s=i("f7ad"),a=i("97f9");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"467d":function(t,e,i){"use strict";i.r(e);var s=i("f7ba"),a=i("afed");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},4788:function(t,e,i){"use strict";i.r(e);var s=i("13fb"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},4789:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u670d\u52a1\u9879\u76ee",leftImg:"/static/images/whiteBack.png",showUser:!0,backgroundColor:"linear-gradient( 134deg, #F52540 0%, #E8101E 100%)",showHeadle:!1,titleColor:"#fff",borderBottom:"none",_i:1}}),i("serviecFirstTab",{attrs:{tabs:t.tabs,activeId:t.activeId,activeColor:"#E8101E",bgColor:"#fff",_i:2},on:{"tab-click":t.tabClick}}),i("view",{staticClass:t._$s(3,"sc","service-list"),attrs:{_i:3}},t._l(t._$s(4,"f",{forItems:t.getList}),(function(e,s,a,r){return i("view",{key:t._$s(4,"f",{forIndex:a,key:s}),staticClass:t._$s("4-"+r,"sc","service-item flex-row-center-between"),attrs:{_i:"4-"+r}},[i("view",{staticClass:t._$s("5-"+r,"sc","item-left flex-row-start"),attrs:{_i:"5-"+r}},[i("image",{staticClass:t._$s("6-"+r,"sc","item-left-photo"),attrs:{src:t._$s("6-"+r,"a-src",e.photo[0]),_i:"6-"+r}}),i("view",{staticClass:t._$s("7-"+r,"sc","item-left-texts"),attrs:{_i:"7-"+r}},[i("view",{staticClass:t._$s("8-"+r,"sc","item-left-text1"),attrs:{_i:"8-"+r}},[t._v(t._$s("8-"+r,"t0-0",t._s(e.title)))]),i("view",{staticClass:t._$s("9-"+r,"sc","flex-row-center"),attrs:{_i:"9-"+r}},[i("text",{staticClass:t._$s("10-"+r,"sc","item-left-text2"),attrs:{_i:"10-"+r}}),i("text",{staticClass:t._$s("11-"+r,"sc","item-left-text2"),attrs:{_i:"11-"+r}},[t._v(t._$s("11-"+r,"t0-0",t._s(e.server_price)))]),i("view",{staticClass:t._$s("12-"+r,"sc","item-left-line"),attrs:{_i:"12-"+r}}),i("text",{staticClass:t._$s("13-"+r,"sc","item-left-text2"),attrs:{_i:"13-"+r}},[t._v(t._$s("13-"+r,"t0-0",t._s(e.server_time)))])])])]),t._$s("14-"+r,"i",e.is_choice)?i("image",{staticClass:t._$s("14-"+r,"sc","item-right"),attrs:{_i:"14-"+r},on:{click:function(i){return t.changeType(e)}}}):i("image",{staticClass:t._$s("15-"+r,"sc","item-right"),attrs:{_i:"15-"+r},on:{click:function(i){return t.changeType(e)}}})])})),0),i("view",{staticClass:t._$s(16,"sc","container-footer"),attrs:{_i:16}},[t._$s(17,"i",0==t.isBack)?i("view",{staticClass:t._$s(17,"sc","container-footer-btn flex-row-center-center"),attrs:{_i:17},on:{click:t.sure}},[i("text")]):i("view",{staticClass:t._$s(19,"sc","container-footer-btn flex-row-center-center"),attrs:{_i:19},on:{click:t.back}},[i("text")])])],1)},r=[]},4794:function(t,e,i){"use strict";i.r(e);var s=i("1880"),a=i("f8bd");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"47a9":function(t,e){t.exports=function(t){return t&&t.__esModule?t:{default:t}},t.exports.__esModule=!0,t.exports["default"]=t.exports},"47c6":function(t,e,i){"use strict";i.r(e);var s=i("798e"),a=i("fa13");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"483a":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","orders-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5168\u90e8\u8ba2\u5355","show-back":!0,backgroundColor:"#fff",_i:1}}),i("view",{staticClass:t._$s(2,"sc","order-list"),attrs:{_i:2}},[t._l(t._$s(3,"f",{forItems:t.orderList}),(function(e,s,a,r){return i("view",{key:t._$s(3,"f",{forIndex:a,key:s}),staticClass:t._$s("3-"+r,"sc","order-item"),attrs:{_i:"3-"+r}},[i("text",{staticClass:t._$s("4-"+r,"sc","order-date"),attrs:{_i:"4-"+r}},[t._v(t._$s("4-"+r,"t0-0",t._s(e.add_time)))]),i("view",{staticClass:t._$s("5-"+r,"sc","order-content"),attrs:{_i:"5-"+r}},[i("image",{staticClass:t._$s("6-"+r,"sc","service-image"),attrs:{src:t._$s("6-"+r,"a-src",e.order_photo[0]),_i:"6-"+r}}),i("view",{staticClass:t._$s("7-"+r,"sc","order-info"),attrs:{_i:"7-"+r}},[i("view",{staticClass:t._$s("8-"+r,"sc","service-name text-overflow-1"),attrs:{_i:"8-"+r}},[t._v(t._$s("8-"+r,"t0-0",t._s(e.server_title)))]),i("view",{staticClass:t._$s("9-"+r,"sc","price"),attrs:{_i:"9-"+r}},[i("text",{staticClass:t._$s("10-"+r,"sc","currency"),attrs:{_i:"10-"+r}}),i("text",{staticClass:t._$s("11-"+r,"sc","amount"),attrs:{_i:"11-"+r}},[t._v(t._$s("11-"+r,"t0-0",t._s(e.pay_money)))])]),t._$s("12-"+r,"i",1==e.order_kind)?i("view",{staticClass:t._$s("12-"+r,"sc","address"),attrs:{_i:"12-"+r}},[i("image",{staticClass:t._$s("13-"+r,"sc","location-icon"),attrs:{_i:"13-"+r}}),i("text",{staticClass:t._$s("14-"+r,"sc","address-text text-overflow-1"),attrs:{_i:"14-"+r}},[t._v(t._$s("14-"+r,"t0-0",t._s(e.reservation_address)))])]):t._e()])]),i("view",{staticClass:t._$s("15-"+r,"sc","order-status"),attrs:{_i:"15-"+r}},[i("text",{staticClass:t._$s("16-"+r,"sc","status-text"),attrs:{_i:"16-"+r}},[t._v(t._$s("16-"+r,"t0-0",t._s(1==e.state?"\u5f85\u652f\u4ed8":2==e.state?"\u5f85\u63a5\u5355":3==e.state?"\u5f85\u670d\u52a1":4==e.state?"\u5f85\u5b8c\u6210":5==e.state?"\u5df2\u5b8c\u6210":6==e.state?"\u5f85\u8bc4\u4ef7":7==e.state?"\u5df2\u53d6\u6d88":"")))])])])})),i("view",{staticClass:t._$s(17,"sc","load-more"),attrs:{_i:17},on:{click:t.loadPreviousMonth}},[i("view",[i("text",{staticClass:t._$s(19,"sc","load-text"),attrs:{_i:19}}),i("text",{staticClass:t._$s(20,"sc","load-date"),attrs:{_i:20}},[t._v(t._$s(20,"t0-0",t._s(t.nextMonthText)))]),i("text",{staticClass:t._$s(21,"sc","load-text"),attrs:{_i:21}})])])],2)],1)},r=[]},4852:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","address-list"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5e38\u7528\u5730\u5740","show-back":!0,_i:1}}),i("scroll-view",{staticClass:t._$s(2,"sc","address-scroll"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","address-list-content"),attrs:{_i:3}},t._l(t._$s(4,"f",{forItems:t.addressList}),(function(e,s,a,r){return i("view",{key:t._$s(4,"f",{forIndex:a,key:s}),staticClass:t._$s("4-"+r,"sc","address-item"),class:t._$s("4-"+r,"c",{"no-select":!e.is_ok}),attrs:{_i:"4-"+r},on:{click:function(i){return t.selectAddress(e)}}},[i("view",{staticClass:t._$s("5-"+r,"sc","address-info"),attrs:{_i:"5-"+r}},[i("view",{staticClass:t._$s("6-"+r,"sc","address-header"),attrs:{_i:"6-"+r}},[i("text",{staticClass:t._$s("7-"+r,"sc","name"),attrs:{_i:"7-"+r}},[t._v(t._$s("7-"+r,"t0-0",t._s(e.name)))]),i("text",{staticClass:t._$s("8-"+r,"sc","phone"),attrs:{_i:"8-"+r}},[t._v(t._$s("8-"+r,"t0-0",t._s(e.call_phone)))])]),i("view",{staticClass:t._$s("9-"+r,"sc","address-detail"),attrs:{_i:"9-"+r}},[i("text",{staticClass:t._$s("10-"+r,"sc","detail-title"),attrs:{_i:"10-"+r}},[t._v(t._$s("10-"+r,"t0-0",t._s(e.house_number)))]),i("text",{staticClass:t._$s("11-"+r,"sc","detail-desc"),attrs:{_i:"11-"+r}},[t._v(t._$s("11-"+r,"t0-0",t._s(e.server_address)))])])]),i("view",{staticClass:t._$s("12-"+r,"sc","address-actions"),attrs:{_i:"12-"+r}},[i("view",{staticClass:t._$s("13-"+r,"sc","default-check"),attrs:{_i:"13-"+r},on:{click:function(i){return i.stopPropagation(),t.toggleDefault(e)}}},[t._$s("14-"+r,"i",2==e.is_default)?i("image",{staticClass:t._$s("14-"+r,"sc","agree-btn"),attrs:{_i:"14-"+r}}):i("image",{staticClass:t._$s("15-"+r,"sc","agree-btn"),attrs:{_i:"15-"+r}}),i("text",{staticClass:t._$s("16-"+r,"sc","text-default"),attrs:{_i:"16-"+r}})]),i("view",{staticClass:t._$s("17-"+r,"sc","action-btns"),attrs:{_i:"17-"+r}},[i("view",{staticClass:t._$s("18-"+r,"sc","action-item"),attrs:{_i:"18-"+r},on:{click:function(i){return i.stopPropagation(),t.reviseAddress(e)}}},[i("image",{staticClass:t._$s("19-"+r,"sc","action-item__revise"),attrs:{_i:"19-"+r}}),i("text",{staticClass:t._$s("20-"+r,"sc","text-default"),attrs:{_i:"20-"+r}})]),i("view",{staticClass:t._$s("21-"+r,"sc","action-item"),attrs:{_i:"21-"+r},on:{click:function(i){return i.stopPropagation(),t.deleteAddress(e)}}},[i("image",{staticClass:t._$s("22-"+r,"sc","action-item__delect"),attrs:{_i:"22-"+r}}),i("text",{staticClass:t._$s("23-"+r,"sc","text-default"),attrs:{_i:"23-"+r}})])])])])})),0)]),i("view",{staticClass:t._$s(24,"sc","fixed-kong"),attrs:{_i:24}}),i("view",{staticClass:t._$s(25,"sc","bottom-fixed"),attrs:{_i:25}},[i("view",{staticClass:t._$s(26,"sc","add-btn"),attrs:{_i:26},on:{click:t.addAddress}},[i("text",{staticClass:t._$s(27,"sc","add-text"),attrs:{_i:27}})])])],1)},r=[]},4860:function(t,e,i){"use strict";i.r(e);var s=i("62d6"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"498b":function(t,e,i){"use strict";i.r(e);var s=i("ebc0"),a=i("302d");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"49b4":function(t,e,i){"use strict";i.r(e);var s=i("0cd8"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"49b6":function(t,e,i){"use strict";i.r(e);var s=i("503f"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"4a0a":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e9?"14rpx":"20rpx"],customStyle:t.badgeStyle,isDot:t.dot,value:t.badge||(t.dot?1:null),show:t.dot||t.badge>0,_i:6}})],2),t._t("text",[i("text",{staticClass:t._$s(8,"sc","uv-tabbar-item__text"),style:t._$s(8,"s",{color:t.isActive?t.parentData.activeColor:t.parentData.inactiveColor}),attrs:{_i:8}},[t._v(t._$s(8,"t0-0",t._s(t.text)))])],{_i:7})],2)},r=[]},"4aa1":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.createAnimation=function(t,e){if(!e)return;return clearTimeout(e.timer),new d(t,e)};var a=s(i("7ca3")),r=s(i("67ad")),c=s(i("0bdb"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function o(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=this.$.$refs["ani"].ref;if(i)return new Promise((function(s,a){nvueAnimation.transition(i,o({styles:t},e),(function(t){s()}))}))}},{key:"_nvueNextAnimate",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=arguments.length>2?arguments[2]:void 0,a=t[i];if(a){var r=a.styles,c=a.config;this._animateRun(r,c).then((function(){i+=1,e._nvueNextAnimate(t,i,s)}))}else this.currentStepAnimates={},"function"===typeof s&&s(),this.isEnd=!0}},{key:"step",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.animation.step(t),this}},{key:"run",value:function(t){this.$.animationData=this.animation.export(),this.$.timer=setTimeout((function(){"function"===typeof t&&t()}),this.$.durationTime)}}]),t}(),l=["matrix","matrix3d","rotate","rotate3d","rotateX","rotateY","rotateZ","scale","scale3d","scaleX","scaleY","scaleZ","skew","skewX","skewY","translate","translate3d","translateX","translateY","translateZ"];l.concat(["opacity","backgroundColor"],["width","height","left","right","top","bottom"]).forEach((function(t){d.prototype[t]=function(){var e;return(e=this.animation)[t].apply(e,arguments),this}}))},"4aaf":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default,filterCard:i("011c").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),class:t._$s(0,"c",{popupShow:t.filterShow}),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u8ba2\u5de5\u65f6",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","flexed"),style:t._$s(2,"s",{top:2*t.statusBarHeight+88+"rpx"}),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","headerBox"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","search-box"),attrs:{_i:4}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.title,expression:"title"}],staticClass:t._$s(5,"sc","search-inp"),attrs:{_i:5},domProps:{value:t._$s(5,"v-model",t.title)},on:{confirm:t.refreshList,input:function(e){e.target.composing||(t.title=e.target.value)}}}),i("image",{staticClass:t._$s(6,"sc","search-icon"),attrs:{_i:6},on:{click:t.refreshList}})])]),i("scroll-view",{staticClass:t._$s(7,"sc","main-tab-scroll"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","main-tabs"),attrs:{_i:8}},t._l(t._$s(9,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("view",{key:t._$s(9,"f",{forIndex:a,key:e.id}),class:t._$s("9-"+r,"c",["main-tab",{active:t.queryData.first_class_id==e.id}]),attrs:{_i:"9-"+r},on:{click:function(i){return t.getFirstlist(e,s)}}},[i("text",{staticClass:t._$s("10-"+r,"sc","tab-text"),attrs:{_i:"10-"+r}},[t._v(t._$s("10-"+r,"t0-0",t._s(e.title)))])])})),0)]),t._$s(11,"i",t.tabs.length>0)?i("scroll-view",{staticClass:t._$s(11,"sc","icon-tab-scroll"),attrs:{_i:11}},[i("view",{staticClass:t._$s(12,"sc","icon-tabs"),attrs:{_i:12}},t._l(t._$s(13,"f",{forItems:t.tabs[t.tabsIndex].data}),(function(e,s,a,r){return i("view",{key:t._$s(13,"f",{forIndex:a,key:e.id}),staticClass:t._$s("13-"+r,"sc","icon-tab"),class:t._$s("13-"+r,"c",{active:t.queryData.second_class_id==e.id}),attrs:{_i:"13-"+r},on:{click:function(i){return t.getSecondlist(e)}}},[i("image",{staticClass:t._$s("14-"+r,"sc","icon-img"),attrs:{src:t._$s("14-"+r,"a-src",e.photo),_i:"14-"+r}}),i("text",{staticClass:t._$s("15-"+r,"sc","icon-text"),attrs:{_i:"15-"+r}},[t._v(t._$s("15-"+r,"t0-0",t._s(e.title)))])])})),0)]):t._e(),i("view",{staticClass:t._$s(16,"sc","filter"),attrs:{_i:16}},[i("view",{staticClass:t._$s(17,"sc","filter__left"),attrs:{_i:17}},[i("view",{staticClass:t._$s(18,"sc","filter__text"),attrs:{_i:18},on:{click:function(e){t.showTimeFilter=!t.showTimeFilter}}}),i("image",{staticClass:t._$s(19,"sc","filter-icon"),attrs:{_i:19}})]),i("view",{staticClass:t._$s(20,"sc","filter__right"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","filter__text"),attrs:{_i:21},on:{click:t.openFilter}}),i("image",{staticClass:t._$s(22,"sc","filter-icon"),attrs:{_i:22}})])]),i("view",{directives:[{name:"show",rawName:"v-show",value:t._$s(23,"v-show",t.showTimeFilter),expression:"_$s(23,'v-show',showTimeFilter)"}],staticClass:t._$s(23,"sc","filter__left__select__bj"),attrs:{_i:23},on:{click:function(e){t.showTimeFilter=!1}}}),i("view",{staticClass:t._$s(24,"sc","filter__left__select"),class:t._$s(24,"c",{show:t.showTimeFilter}),attrs:{_i:24}},t._l(t._$s(25,"f",{forItems:t.serviceHours}),(function(e,s,a,r){return i("view",{key:t._$s(25,"f",{forIndex:a,key:e.id}),class:t._$s("25-"+r,"c",["filter__left__select__item",{active:t.serviceHoursIndex===e.id}]),attrs:{_i:"25-"+r},on:{click:function(i){return t.selctServiceHours(e,s)}}},[i("view",{staticClass:t._$s("26-"+r,"sc","filter__left__select__item__title"),attrs:{_i:"26-"+r}},[t._v(t._$s("26-"+r,"t0-0",t._s(e.title))),t._$s("27-"+r,"i",t.serviceHoursIndex===e.id)?i("image",{staticClass:t._$s("27-"+r,"sc","filter__left__select__item__title__icon"),attrs:{_i:"27-"+r}}):t._e()])])})),0)]),t._$s(28,"i",t.serverlist.length)?i("view",{staticClass:t._$s(28,"sc","server-list"),attrs:{_i:28}},t._l(t._$s(29,"f",{forItems:t.serverlist}),(function(e,s,a,r){return i("buy-order-card",{key:t._$s(29,"f",{forIndex:a,key:s}),attrs:{info:e,_i:"29-"+r},on:{placeOrder:t.placeOrder}})})),1):i("noData",{attrs:{_i:30}}),i("filterPopup",{ref:"filterPopup",attrs:{filterListSelectLists:t.filterListSelectLists,_i:31},on:{change:t.filterChange,reset:t.resetFilter,sure:t.sureFilter}},[i("filterCard",{attrs:{info:t.filterDetailsLists[0],infoDetailList:t.infoDetailLists[0],_i:32},on:{selectDetail:t.selectDetailTime}},[i("view",{staticClass:t._$s(33,"sc","time-customize"),attrs:{_i:33},on:{click:t.openTimePopup}},[t._v(t._$s(33,"t0-0",t._s(t.customizeTime?t.customizeTime:"\u81ea\u5b9a\u4e49")))])]),i("filterCard",{attrs:{info:t.filterDetailsLists[1],isSingle:!0,infoDetailList:t.infoDetailLists[1],_i:34},on:{selectDetail:t.selectDetailPrice}},[i("view",{staticClass:t._$s(35,"sc","price-input"),attrs:{_i:35}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.start_price,expression:"start_price"}],staticClass:t._$s(36,"sc","price-input-field"),attrs:{_i:36},domProps:{value:t._$s(36,"v-model",t.start_price)},on:{input:function(e){e.target.composing||(t.start_price=e.target.value)}}}),i("text",{staticClass:t._$s(37,"sc","price-separator"),attrs:{_i:37}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.end_price,expression:"end_price"}],staticClass:t._$s(38,"sc","price-input-field"),attrs:{_i:38},domProps:{value:t._$s(38,"v-model",t.end_price)},on:{input:function(e){e.target.composing||(t.end_price=e.target.value)}}})])]),i("filterCard",{attrs:{info:t.filterDetailsLists[2],isSingle:!0,infoDetailList:t.infoDetailLists[2],_i:39},on:{selectDetail:t.selectDetailSort}})],1),i("timePicker",{ref:"timePopup",attrs:{_i:40},on:{confirmTime:t.confirmTime}})],1)},r=[]},"4b35":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s=i("9466"),a={name:"lime-painter-view",mixins:[(0,s.children)("painter"),(0,s.parent)("painter")],props:{id:String,type:{type:String,default:"view"},css:[String,Object]},data:function(){return{el:{css:{},views:[]}}},mounted:function(){}};e.default=a},"4b3d":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={data:function(){return{hasSelectedAccount:!1}},methods:{bindWechat:function(){uni.navigateTo({url:"/pages/wallet/bindway?way=\u5fae\u4fe1"})},bindAlipay:function(){uni.navigateTo({url:"/pages/wallet/bindway?way=\u652f\u4ed8\u5b9d"})},bindBankCard:function(){uni.navigateTo({url:"/pages/wallet/bind-bankcard"})}}};e.default=s},"4bce":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("7ca3")),c=s(i("ee10")),n=s(i("16bb")),o=s(i("2077")),d=s(i("86f7")),l=i("53d1"),u=s(i("93a6")),f=s(i("cd5a")),_=s(i("9499"));function p(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function v(t){for(var e=1;e2&&(e=i[0]+"."+i.slice(1).join("")),i.length>1&&(e=i[0]+"."+i[1].slice(0,2)),e.startsWith(".")&&(e="0"+e),this.$set(this.formData,"server_price",e)},saveDraft:(0,l.debounce)((function(){var t=this;if(!this.isDraft){var e=v(v({},this.formData),{},{second_class_ids:this.formData.second_class_ids.join(","),state:1,photo:JSON.stringify(this.formData.photo)});if(this.formData.title)if(e.price)if(e.price<.1)uni.showToast({title:"\u5de5\u65f6\u4ef7\u683c\u4e0d\u80fd\u5c0f\u4e8e0.1",icon:"none"});else if(this.formData.photo&&0!==this.formData.photo.length){e.state=0;var i=null;i=e.id?"/sj/workSeat/edit":"/sj/workSeat/add",n.default.post(i,e).then((function(e){if(200==e.code){t.isDraft=!0;var i=getCurrentPages(),s=i[i.length-2];uni.showToast({title:e.msg,icon:"success",duration:1e3}),setTimeout((function(){uni.navigateBack({delta:1,success:function(){s.$vm.currentTab=3,s.$vm.state=0,s.$vm.getServicesList()}})}),500)}else uni.showToast({title:e.msg,icon:"none"}),t.isDraft=!1}))}else uni.showToast({title:"\u8bf7\u4e0a\u4f20\u670d\u52a1\u56fe\u7247",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u5de5\u65f6\u4ef7\u683c",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u5de5\u65f6\u540d\u79f0",icon:"none"})}}),500),submitForm:(0,l.debounce)((function(){var e=this,i=v(v({},this.formData),{},{second_class_ids:this.formData.second_class_ids.join(","),state:1,photo:JSON.stringify(this.formData.photo)});if(t("log",i," at pages/shop/workSpace/addWorkSpace.vue:373"),!this.isAdd)if(i.first_class_id)if(i.second_class_ids.length<1)uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u5b50\u7c7b",icon:"none"});else if(this.formData.title)if(i.price)if(i.price<.1)uni.showToast({title:"\u5de5\u65f6\u4ef7\u683c\u4e0d\u80fd\u5c0f\u4e8e0.1",icon:"none"});else if(this.formData.detail)if(this.formData.photo&&0!==this.formData.photo.length){2==this.artisanType&&delete this.formData.sj_see,delete this.formData.state;var s=null;s=this.formData.id?"/sj/workSeat/edit":"/sj/workSeat/add",this.isAdd=!0,n.default.post(s,i).then((function(t){if(200==t.code){var i=getCurrentPages(),s=i[i.length-2];uni.showToast({title:t.msg,icon:"success",duration:600,mask:!0}),setTimeout((function(){uni.navigateBack({delta:1,success:function(){s.$vm.currentTab=1,s.$vm.state=1,s.$vm.getServicesList()}})}),500)}else uni.showToast({title:t.msg,icon:"none"}),e.isAdd=!1}))}else uni.showToast({title:"\u8bf7\u4e0a\u4f20\u670d\u52a1\u56fe\u7247",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u5de5\u65f6\u63cf\u8ff0",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u5de5\u65f6\u4ef7\u683c",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u5de5\u65f6\u540d\u79f0",icon:"none"});else uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u5206\u7c7b",icon:"none"})}),500),endSelect:function(t){this.isClassSelect=!1,this.serviceType=t}}};e.default=h}).call(this,i("f3b9")["default"])},"4c3d":function(t,e,i){"use strict";i.r(e);var s=i("31fd"),a=i("2a2c");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"9c94eae8",null,!1,s["a"],void 0);e["default"]=n.exports},"4c51":function(t,e,i){"use strict";i.r(e);var s=i("3d95"),a=i("d60e");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"1457b2d8",null,!1,s["a"],void 0);e["default"]=n.exports},"4c88":function(t,e,i){"use strict";i.r(e);var s=i("68df"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"4d62":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c={data:function(){return{imageUrl:""}},methods:{selectFile:function(){this.$refs.fileInput.click()},handleUpload:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return s=t.target.files[0],i.next=3,ossUpload.upload(s);case 3:r=i.sent,200===r.status?(e.imageUrl=r.url,uni.showToast({title:"\u4e0a\u4f20\u6210\u529f"})):uni.showToast({title:"\u4e0a\u4f20\u5931\u8d25",icon:"none"});case 5:case"end":return i.stop()}}),i)})))()}}};e.default=c},"4dae":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","project"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","project-tabs"),attrs:{_i:1}},[i("scroll-view",{staticClass:t._$s(2,"sc","tab-scroll"),attrs:{_i:2},on:{touchmove:function(t){t.preventDefault(),t.stopPropagation()}}},[i("view",{staticClass:t._$s(3,"sc","tab-container"),attrs:{_i:3}},t._l(t._$s(4,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("view",{key:t._$s(4,"f",{forIndex:a,key:s}),staticClass:t._$s("4-"+r,"sc","tab-card"),class:t._$s("4-"+r,"c",{active:t.activeId==e.id}),attrs:{_i:"4-"+r},on:{click:function(i){return t.clickTap(e.id)}}},[i("text",{staticClass:t._$s("5-"+r,"sc","tab-text"),attrs:{_i:"5-"+r}},[t._v(t._$s("5-"+r,"t0-0",t._s(e.name)))]),t._$s("6-"+r,"i",e.id)?i("image",{staticClass:t._$s("6-"+r,"sc","tab-card-price-img"),attrs:{src:t._$s("6-"+r,"a-src",t.activeId==e.id?t.sortList[t.sortIndex].src:t.sortList[0].src),_i:"6-"+r}}):t._e()])})),0)])])])},a=[]},"4dbc":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u9080\u8bf7\u8bb0\u5f55",leftImg:"/static/images/back.png",showUser:!0,backgroundColor:"#fff",titleColor:"#333333",borderBottom:"none",_i:1}}),i("view",{staticClass:t._$s(2,"sc","tab-container"),attrs:{_i:2}},t._l(t._$s(3,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("view",{key:t._$s(3,"f",{forIndex:a,key:s}),class:t._$s("3-"+r,"c",["tab-item",{active:t.queryData.state===e.id}]),attrs:{_i:"3-"+r},on:{click:function(i){return t.switchTab(s,e.id)}}},[t._v(t._$s("3-"+r,"t0-0",t._s(e.text)))])})),0),i("CommonList",{ref:"groupRef",attrs:{apiUrl:"/sj/sjinvitelist",listScrollHeight:"calc(100vh - "+(t.statusBarHeight+264)+"rpx)",_i:4},scopedSlots:t._u([{key:"listData",fn:function(e,s,a){var r=e.list;return[i("view",{staticClass:s._$s("6-"+a,"sc","invite-list"),attrs:{_i:"6-"+a}},t._l(s._$s("7-"+a,"f",{forItems:r}),(function(e,r,c,n){return s._$s("7-"+a+n,"i",e.syr)?i("view",{key:s._$s("7-"+a,"f",{forIndex:c,key:e.id}),staticClass:s._$s("7-"+a+n,"sc","invite-item"),attrs:{_i:"7-"+a+n}},[i("view",{staticClass:s._$s("8-"+a+n,"sc","stateText"),class:s._$s("8-"+a+n,"c",{stateText2:"\u62d2\u7edd"==e.state}),attrs:{_i:"8-"+a+n}},[t._v(s._$s("8-"+a+n,"t0-0",t._s(e.state)))]),i("view",{staticClass:s._$s("9-"+a+n,"sc","flex-row-center item-card"),attrs:{_i:"9-"+a+n}},[i("image",{staticClass:s._$s("10-"+a+n,"sc","item-avatar"),attrs:{src:s._$s("10-"+a+n,"a-src",e.syr.head_photo),mode:"aspectFill",_i:"10-"+a+n}}),i("view",{staticClass:s._$s("11-"+a+n,"sc","item-info"),attrs:{_i:"11-"+a+n}},[i("view",{staticClass:s._$s("12-"+a+n,"sc","info-header"),attrs:{_i:"12-"+a+n}},[i("text",{staticClass:s._$s("13-"+a+n,"sc","info-name"),attrs:{_i:"13-"+a+n}},[t._v(s._$s("13-"+a+n,"t0-0",t._s(e.syr.name)))])]),i("view",{staticClass:s._$s("14-"+a+n,"sc","info-time mt_6"),attrs:{_i:"14-"+a+n}},[t._v(s._$s("14-"+a+n,"t0-0",t._s(e.create_time)))]),s._$s("15-"+a+n,"i","\u540c\u610f"==e.state)?i("view",{staticClass:s._$s("15-"+a+n,"sc","info-time"),attrs:{_i:"15-"+a+n}},[t._v(s._$s("15-"+a+n,"t0-0",t._s(e.update_time||e.create_time)))]):t._e(),s._$s("16-"+a+n,"i","\u62d2\u7edd"==e.state)?i("view",{staticClass:s._$s("16-"+a+n,"sc","info-time"),attrs:{_i:"16-"+a+n}},[t._v(s._$s("16-"+a+n,"t0-0",t._s(e.update_time)))]):t._e()])]),s._$s("17-"+a+n,"i","\u62d2\u7edd"==e.state&&e.back_text)?i("view",{staticClass:s._$s("17-"+a+n,"sc","info-reason"),attrs:{_i:"17-"+a+n}},[i("text",{staticClass:s._$s("18-"+a+n,"sc","reason-label"),attrs:{_i:"18-"+a+n}},[t._v("\u62d2\u7edd\u539f\u56e0:")]),i("text",{staticClass:s._$s("19-"+a+n,"sc","reason-content"),attrs:{_i:"19-"+a+n}},[t._v(s._$s("19-"+a+n,"t0-0",t._s(e.back_text)))])]):t._e()]):t._e()})),0)]}},{key:"empty",fn:function(t,e,s){return[i("noData",{attrs:{_i:"21-"+s}})]}}])})],1)},r=[]},"4e2b":function(t,e,i){"use strict";i.r(e);var s=i("d87b"),a=i("3b00");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"4e2c":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("16bb")),r=s(i("6473")),c={data:function(){return{isLogin:!1,sjId:null,userInfo:{}}},components:{CustomNavbar:r.default},onShow:function(){},computed:{},onLoad:function(){this.isLogin=!!uni.getStorageSync("accessToken"),this.isLogin&&this.getUserInfo()},methods:{goMoreSetting:function(){},changeOrderTaking:function(){var t=this,e=1==this.userInfo.order_taking?2:1;a.default.post("/sj/sjordertaking",{order_taking:e,sjid:this.sjId}).then((function(i){t.userInfo.order_taking=e,t.getUserInfo()}))},getUserInfo:function(){var t=this;a.default.post("/sj/user/getUser").then((function(e){t.userInfo=e.data,uni.setStorageSync("sjId",e.data.id),t.sjId=e.data.id}))}}};e.default=c},"4e39":function(t,e,i){"use strict";i.r(e);var s=i("8935"),a=i("4436");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"4e4a":function(t,e,i){"use strict";i.r(e);var s=i("4852"),a=i("8412");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"3f7e40b8",null,!1,s["a"],void 0);e["default"]=n.exports},"4e65":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c=s(i("5dec")),n={name:"uv-checkbox-group",mixins:[a.default,r.default,c.default],computed:{parentData:function(){var t=[];return this.value.length?t=this.value:this.modelValue.length&&(t=this.modelValue),[t,this.disabled,this.inactiveColor,this.activeColor,this.size,this.labelDisabled,this.shape,this.iconSize,this.borderBottom,this.placement,this.labelSize,this.labelColor]},bemClass:function(){return this.bem("checkbox-group",["placement"])}},watch:{parentData:function(){this.children.length&&this.children.map((function(t){"function"===typeof t.init&&t.init()}))}},data:function(){return{}},created:function(){this.children=[]},methods:{unCheckedOther:function(t){var e=[];this.children.map((function(t){t.isChecked&&e.push(t.name)})),this.$emit("input",e),this.$emit("change",e)}}};e.default=n},"4ee8":function(t,e,i){"use strict";i.r(e);var s=i("f837"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"4f09":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uniPopup:i("c3a6").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-popup",{ref:"popup",attrs:{type:"bottom","border-radius":"20rpx 20rpx 0 0","background-color":"#fff",_i:0}},[i("view",{staticClass:t._$s(1,"sc","region-body"),attrs:{_i:1}},[i("image",{staticClass:t._$s(2,"sc","region-body__close"),attrs:{_i:2},on:{click:t.close}}),i("view",{staticClass:t._$s(3,"sc","region-body__header"),attrs:{_i:3}}),i("picker-view",{staticClass:t._$s(4,"sc","picker-scroll"),attrs:{"indicator-style":t._$s(4,"a-indicator-style",t.indicatorStyle),_i:4},on:{change:t.handleTimeChange},model:{value:t._$s(4,"v-model",t.pickerValue),callback:function(e){t.pickerValue=e},expression:"pickerValue"}},[t._$s(5,"i",t.pickerShowList[0])?i("picker-view-column",{attrs:{_i:5}},t._l(t._$s(6,"f",{forItems:t.years}),(function(e,s,a,r){return i("view",{key:t._$s(6,"f",{forIndex:a,key:s}),staticClass:t._$s("6-"+r,"sc","picker-item"),attrs:{_i:"6-"+r}},[t._v(t._$s("6-"+r,"t0-0",t._s(e)))])})),0):t._e(),t._$s(7,"i",t.pickerShowList[1])?i("picker-view-column",{attrs:{_i:7}},t._l(t._$s(8,"f",{forItems:t.months}),(function(e,s,a,r){return i("view",{key:t._$s(8,"f",{forIndex:a,key:s}),staticClass:t._$s("8-"+r,"sc","picker-item"),attrs:{_i:"8-"+r}},[t._v(t._$s("8-"+r,"t0-0",t._s(e)))])})),0):t._e(),t._$s(9,"i",t.pickerShowList[2])?i("picker-view-column",{attrs:{_i:9}},t._l(t._$s(10,"f",{forItems:t.dates[t.pickerValue[0]][t.pickerValue[1]]}),(function(e,s,a,r){return i("view",{key:t._$s(10,"f",{forIndex:a,key:s}),staticClass:t._$s("10-"+r,"sc","picker-item"),attrs:{_i:"10-"+r}},[t._v(t._$s("10-"+r,"t0-0",t._s(e)))])})),0):t._e(),t._$s(11,"i",t.pickerShowList[3])?i("picker-view-column",{attrs:{_i:11}},t._l(t._$s(12,"f",{forItems:t.hours}),(function(e,s,a,r){return i("view",{key:t._$s(12,"f",{forIndex:a,key:s}),staticClass:t._$s("12-"+r,"sc","picker-item"),attrs:{_i:"12-"+r}},[t._v(t._$s("12-"+r,"t0-0",t._s(e)))])})),0):t._e(),t._$s(13,"i",t.pickerShowList[4])?i("picker-view-column",{attrs:{_i:13}},t._l(t._$s(14,"f",{forItems:t.minutes}),(function(e,s,a,r){return i("view",{key:t._$s(14,"f",{forIndex:a,key:s}),staticClass:t._$s("14-"+r,"sc","picker-item"),attrs:{_i:"14-"+r}},[t._v(t._$s("14-"+r,"t0-0",t._s(e)))])})),0):t._e()]),i("view",{staticClass:t._$s(15,"sc","region-body__btn"),class:t._$s(15,"c",{noSure:t.timeCompareComputed}),attrs:{_i:15},on:{click:t.confirmTime}},[t._v(t._$s(15,"t0-0",t._s("("+t.formatTime+")")))])])])},r=[]},"4f10":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$s(0,"i",t.show&&(0!==Number(t.value)||t.showZero||t.isDot))?i("text",{staticClass:t._$s(0,"sc","uv-badge"),class:t._$s(0,"c",[t.isDot?"uv-badge--dot":"uv-badge--not-dot",t.inverted&&"uv-badge--inverted","horn"===t.shape&&"uv-badge--horn","uv-badge--"+t.propsType+(t.inverted?"--inverted":"")]),style:t._$s(0,"s",[t.$uv.addStyle(t.customStyle),t.badgeStyle]),attrs:{_i:0}},[t._v(t._$s(0,"t0-0",t._s(t.isDot?"":t.showValue)))]):t._e()},a=[]},"4f1b":function(t,e,i){"use strict";i.r(e);var s=i("1701"),a=i("2e00");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"2643157d",null,!1,s["a"],void 0);e["default"]=n.exports},"4f38":function(t,e,i){"use strict";i.r(e);var s=i("d039"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"4f87":function(t,e,i){"use strict";i.r(e);var s=i("e9d8"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"4fdb":function(t,e,i){"use strict";i.r(e);var s=i("697c"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"500c":function(t,e,i){"use strict";i.r(e);var s=i("3bdd"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},5034:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uvTransition:i("2fe6").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uv-transition",{attrs:{show:t.show,mode:"fade","custom-class":"uv-overlay",duration:t.duration,"custom-style":t.overlayStyle,_i:0},on:{click:t.clickHandler,touchmove:function(e){return e.stopPropagation(),e.preventDefault(),t.clear(e)}}},[t._t("default",null,{_i:1})],2)},r=[]},"503f":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("af34")),c=s(i("ee10")),n=s(i("7ca3")),o=s(i("16bb"));function d(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function l(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};this.queryData=l(l({},this.queryData),{},(0,n.default)({},this.pageConfig.pageKey,1),t),this.fetchListData()},clearList:function(){this.listData=[],this.queryData[this.pageConfig.pageKey]=1,this.hasMore=!0},scrollToTop:function(){0==this.scrollTop?this.scrollTop=.1:this.scrollTop=0}}};e.default=u}).call(this,i("f3b9")["default"])},"50c6":function(t,e,i){"use strict";i.r(e);var s=i("b7b6"),a=i("e6d5");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"341d1893",null,!1,s["a"],void 0);e["default"]=n.exports},5115:function(t,e,i){"use strict";i.r(e);var s=i("4e65"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},5125:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"search-box",props:{value:{type:String,default:""},placeholder:{type:String,default:"\u8bf7\u8f93\u5165\u641c\u7d22\u5185\u5bb9"},showBack:{type:Boolean,default:!0},width:{type:String},height:{type:String},border:{type:String},bgClor:{type:String,default:"linear-gradient(134deg, #f52540 0%, #e8101e 100%)"}},data:function(){return{statusBarHeight:0}},computed:{searchStyle:function(){return{}}},created:function(){var t=uni.getSystemInfoSync();this.statusBarHeight=t.statusBarHeight},methods:{goBack:function(){uni.navigateBack()},onSearch:function(t){this.$emit("search")},onInput:function(t){this.$emit("input",t.detail.value||t.target.value)},onConfirm:function(t){this.$emit("confirm",t.detail.value||t.target.value)}}};e.default=s},5135:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("f3ca")),n=(s(i("6731")),s(i("dd4c"))),o=s(i("b619")),d=s(i("16bb")),l={components:{searchBox:o.default,haoIndexList:c.default},data:function(){return{letters:["A","B","C","D","E","F","G","H","J","K","L","M","N","O","P","Q","R","S","T","W","X","Y","Z"],currentCity:{adcode:"430100",name:"\u957f\u6c99\u5e02"},hotCity:[{adcode:"510100",name:"\u6210\u90fd\u5e02",center:"104.066301,30.572961",citycode:"028"},{citycode:"0317",adcode:"130983",name:"\u9ec4\u9a85\u5e02",center:"117.330043,38.372266"},{citycode:"0633",adcode:"371100",name:"\u65e5\u7167\u5e02",center:"119.52685,35.416912"},{citycode:"0833",adcode:"511100",name:"\u4e50\u5c71\u5e02",center:"103.766085,29.552275"}],cityList:n.default}},onLoad:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.getHotCity();case 2:case"end":return e.stop()}}),e)})))()},methods:{getHotCity:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,d.default.post("/user/getHotCity").then((function(e){200==e.code&&(t.hotCity=e.data.obj_list)}));case 2:case"end":return e.stop()}}),e)})))()},haoTap:function(t){var e=t.name.split(","),i={center:t.center,name:e[0]};uni.setStorageSync("searchCity",i),uni.navigateBack()}}};e.default=l},5137:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("7ca3")),r=s(i("f8df")),c=s(i("16bb"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function o(t){for(var e=1;e=500&&this.popupHeight>=500},bg:function(){return""===this.backgroundColor||"none"===this.backgroundColor?"transparent":this.backgroundColor}},mounted:function(){var t=this;(function(){var e=uni.getSystemInfoSync(),i=e.windowWidth,s=e.windowHeight,a=e.windowTop,r=e.safeArea,c=(e.screenHeight,e.safeAreaInsets);t.popupWidth=i,t.popupHeight=s+(a||0),r&&t.safeArea?t.safeAreaInsets=c.bottom:t.safeAreaInsets=0})()},destroyed:function(){this.setH5Visible()},activated:function(){this.setH5Visible(!this.showPopup)},deactivated:function(){this.setH5Visible(!0)},created:function(){null===this.isMaskClick&&null===this.maskClick?this.mkclick=!0:this.mkclick=null!==this.isMaskClick?this.isMaskClick:this.maskClick,this.animation?this.duration=300:this.duration=0,this.messageChild=null,this.clearPropagation=!1,this.maskClass.backgroundColor=this.maskBackgroundColor},methods:{setH5Visible:function(){},closeMask:function(){this.maskShow=!1},disableMask:function(){this.mkclick=!1},clear:function(t){t.stopPropagation(),this.clearPropagation=!0},open:function(e){if(!this.showPopup){e&&-1!==["top","center","bottom","left","right","message","dialog","share"].indexOf(e)||(e=this.type),this.config[e]?(this[this.config[e]](),this.$emit("change",{show:!0,type:e})):t("error","\u7f3a\u5c11\u7c7b\u578b\uff1a",e," at uni_modules/uni-popup/components/uni-popup/uni-popup.vue:310")}},close:function(t){var e=this;this.showTrans=!1,this.$emit("change",{show:!1,type:this.type}),clearTimeout(this.timer),this.timer=setTimeout((function(){e.showPopup=!1}),300)},touchstart:function(){this.clearPropagation=!1},onTap:function(){this.clearPropagation?this.clearPropagation=!1:(this.$emit("maskClick"),this.mkclick&&this.close())},top:function(t){var e=this;this.popupstyle=this.isDesktop?"fixforpc-top":"top",this.ani=["slide-top"],this.transClass={position:"fixed",left:0,right:0,backgroundColor:this.bg,borderRadius:this.borderRadius||"0"},t||(this.showPopup=!0,this.showTrans=!0,this.$nextTick((function(){e.showPoptrans(),e.messageChild&&"message"===e.type&&e.messageChild.timerClose()})))},bottom:function(t){this.popupstyle="bottom",this.ani=["slide-bottom"],this.transClass={position:"fixed",left:0,right:0,bottom:0,paddingBottom:this.safeAreaInsets+"px",backgroundColor:this.bg,borderRadius:this.borderRadius||"0"},t||this.showPoptrans()},center:function(t){this.popupstyle="center",this.ani=["zoom-out","fade"],this.transClass={position:"fixed",display:"flex",flexDirection:"column",bottom:0,left:0,right:0,top:0,justifyContent:"center",alignItems:"center",borderRadius:this.borderRadius||"0"},t||this.showPoptrans()},left:function(t){this.popupstyle="left",this.ani=["slide-left"],this.transClass={position:"fixed",left:0,bottom:0,top:0,backgroundColor:this.bg,borderRadius:this.borderRadius||"0",display:"flex",flexDirection:"column"},t||this.showPoptrans()},right:function(t){this.popupstyle="right",this.ani=["slide-right"],this.transClass={position:"fixed",bottom:0,right:0,top:0,backgroundColor:this.bg,borderRadius:this.borderRadius||"0",display:"flex",flexDirection:"column"},t||this.showPoptrans()},showPoptrans:function(){var t=this;this.$nextTick((function(){t.showPopup=!0,t.showTrans=!0}))}}};e.default=i}).call(this,i("f3b9")["default"])},5307:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s=i("9466"),a={name:"lime-painter-image",mixins:[(0,s.children)("painter")],props:{id:String,css:[String,Object],src:String},data:function(){return{type:"image",el:{css:{},src:null}}}};e.default=a},5324:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uvIcon:i("08d8").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","uv-search"),style:t._$s(0,"s",[{margin:t.margin},t.$uv.addStyle(t.customStyle)]),attrs:{_i:0},on:{click:t.clickHandler}},[i("view",{staticClass:t._$s(1,"sc","uv-search__content"),style:t._$s(1,"s",[{backgroundColor:t.bgColor,borderRadius:"round"==t.shape?"100px":"4px",borderColor:t.borderColor},t.$uv.addStyle(t.boxStyle)]),attrs:{_i:1}},[t._$s(2,"i",t.disabled)?i("view",{staticClass:t._$s(2,"sc","uv-search__content__disabled"),attrs:{_i:2}}):t._e(),t._t("prefix",[i("view",{staticClass:t._$s(4,"sc","uv-search__content__icon"),attrs:{_i:4}},[i("uv-icon",{attrs:{size:t.searchIconSize,name:t.searchIcon,color:t.searchIconColor?t.searchIconColor:t.color,_i:5},on:{click:t.clickIcon}})],1)],{_i:3}),i("input",{staticClass:t._$s(6,"sc","uv-search__content__input"),style:t._$s(6,"s",[{textAlign:t.inputAlign,color:t.color,backgroundColor:t.bgColor,height:t.$uv.addUnit(t.height)},t.inputStyle]),attrs:{value:t._$s(6,"a-value",t.keyword),disabled:t._$s(6,"a-disabled",t.disabled),focus:t._$s(6,"a-focus",t.focus),maxlength:t._$s(6,"a-maxlength",t.maxlength),placeholder:t._$s(6,"a-placeholder",t.placeholder),"placeholder-style":t._$s(6,"a-placeholder-style","color: "+t.placeholderColor),_i:6},on:{blur:t.blur,confirm:t.search,input:t.inputChange,focus:t.getFocus}}),t._$s(7,"i",t.keyword&&t.clearabled&&t.focused)?i("view",{staticClass:t._$s(7,"sc","uv-search__content__icon uv-search__content__close"),attrs:{_i:7},on:{click:t.clear}},[i("uv-icon",{attrs:{name:"close",size:"11",color:"#ffffff",customStyle:"line-height: 12px",_i:8}})],1):t._e(),t._t("suffix",null,{_i:9})],2),i("text",{staticClass:t._$s(10,"sc","uv-search__action"),class:t._$s(10,"c",[(t.showActionBtn||t.show)&&"uv-search__action--active"]),style:t._$s(10,"s",[t.actionStyle]),attrs:{_i:10},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.custom(e)}}},[t._v(t._$s(10,"t0-0",t._s(t.actionText)))])])},r=[]},5333:function(t,e,i){"use strict";i.r(e);var s=i("32b9"),a=i("4fdb");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"4f83f6e0",null,!1,s["a"],void 0);e["default"]=n.exports},"533b":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={aliOssUploader:i("93a6").default},a=function(){var t=this.$createElement,e=this._self._c||t;return e("view",[e("ali-oss-uploader",{attrs:{"max-count":1,"max-size":100,type:this.artisanType+1,"user-id":this.userId,kind:2,"file-string":this.video,accept:"video/*","button-text":"\u4e0a\u4f20\u89c6\u9891",_i:1},on:{success:this.onUploadSuccess,error:this.onUploadError,delete:this.onFileDelete}})],1)},r=[]},5390:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uvIcon:i("08d8").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","uv-checkbox"),class:t._$s(0,"c",["uv-checkbox-label--"+t.parentData.iconPlacement,t.parentData.borderBottom&&"column"===t.parentData.placement&&"uv-border-bottom"]),style:t._$s(0,"s",[t.checkboxStyle]),attrs:{_i:0},on:{click:function(e){return e.stopPropagation(),t.wrapperClickHandler(e)}}},[i("view",{staticClass:t._$s(1,"sc","uv-checkbox__icon-wrap"),class:t._$s(1,"c",t.iconClasses),style:t._$s(1,"s",[t.iconWrapStyle]),attrs:{_i:1},on:{click:function(e){return e.stopPropagation(),t.iconClickHandler(e)}}},[t._t("icon",[i("uv-icon",{staticClass:t._$s(3,"sc","uv-checkbox__icon-wrap__icon"),attrs:{name:"checkbox-mark",size:t.elIconSize,color:t.elIconColor,_i:3}})],{_i:2})],2),i("view",{staticClass:t._$s(4,"sc","uv-checkbox__label-wrap"),attrs:{_i:4},on:{click:function(e){return e.stopPropagation(),t.labelClickHandler(e)}}},[t._t("default",[i("text",{style:t._$s(6,"s",{color:t.elDisabled?t.elInactiveColor:t.elLabelColor,fontSize:t.elLabelSize,lineHeight:t.elLabelSize}),attrs:{_i:6}},[t._v(t._$s(6,"t0-0",t._s(t.label)))])],{_i:5})],2)])},r=[]},"539f":function(t,e,i){"use strict";i.r(e);var s=i("4543"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"53ae":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default,uvPopup:i("05d1").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5458\u5de5\u7ba1\u7406",leftImg:"/static/images/whiteBack.png",showUser:!0,backgroundColor:"linear-gradient( 134deg, #F52540 0%, #E8101E 100%)",headleSrc:"/static/images/recruit/guide.png",showHeadle:!1,titleColor:"#fff",borderBottom:"none",_i:1},on:{onHeadleClick:t.openPop}}),i("searchBox",{attrs:{placeholder:"\u624b\u827a\u4eba\u540d\u5b57/\u624b\u673a\u53f7",showAdd:!0,_i:2},on:{confirm:t.search,search:t.search,add:t.goAddStaff},model:{value:t._$s(2,"v-model",t.queryData.nameorphone),callback:function(e){t.$set(t.queryData,"nameorphone",e)},expression:"queryData.nameorphone"}}),i("div",{staticClass:t._$s(3,"sc","tab-nav"),attrs:{_i:3}},t._l(t._$s(4,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("div",{key:t._$s(4,"f",{forIndex:a,key:e.id}),staticClass:t._$s("4-"+r,"sc","tab-item"),class:t._$s("4-"+r,"c",{active:t.queryData.state===e.id}),attrs:{_i:"4-"+r},on:{click:function(i){return t.switchTab(e.id)}}},[t._v(t._$s("4-"+r,"t0-0",t._s(e.name)))])})),0),i("CommonList",{ref:"groupRef",attrs:{apiUrl:"/sj/sjstafflist",listScrollHeight:"calc(100vh - "+(t.statusBarHeight+350)+"rpx)",_i:5},scopedSlots:t._u([{key:"listData",fn:function(e,s,a){var r=e.list;return[i("view",{staticClass:s._$s("7-"+a,"sc","scoll-lists"),attrs:{_i:"7-"+a}},t._l(s._$s("8-"+a,"f",{forItems:r}),(function(e,r,c,n){return s._$s("8-"+a+n,"i",e.syr)?i("view",{key:s._$s("8-"+a,"f",{forIndex:c,key:r}),staticClass:s._$s("8-"+a+n,"sc","list-item"),attrs:{_i:"8-"+a+n},on:{click:function(i){return t.goDetail(e)}}},[i("view",{staticClass:s._$s("9-"+a+n,"sc","item-left"),attrs:{_i:"9-"+a+n}},[i("image",{staticClass:s._$s("10-"+a+n,"sc","item-left-img"),attrs:{src:s._$s("10-"+a+n,"a-src",e.syr.head_photo),mode:"aspectFill",_i:"10-"+a+n}}),i("view",{staticClass:s._$s("11-"+a+n,"sc","item-left-tab flex-row-center-center"),class:s._$s("11-"+a+n,"c",{noTab:2==e.state}),attrs:{_i:"11-"+a+n}},[t._v(s._$s("11-"+a+n,"t0-0",t._s(t.typName(e.state))))])]),i("view",{staticClass:s._$s("12-"+a+n,"sc","item-right"),attrs:{_i:"12-"+a+n}},[i("view",{staticClass:s._$s("13-"+a+n,"sc","item-right-text1 flex-row-center-between"),attrs:{_i:"13-"+a+n}},[i("text",{attrs:{_i:"14-"+a+n}},[t._v(s._$s("14-"+a+n,"t0-0",t._s(e.syr.name)))]),s._$s("15-"+a+n,"i",1==e.state)?i("view",{staticClass:s._$s("15-"+a+n,"sc","switch-box"),class:s._$s("15-"+a+n,"c",{disswitch:1!=e.sj_state}),attrs:{_i:"15-"+a+n},on:{click:function(i){return i.stopPropagation(),t.handleSwitchChange(e)}}},[s._$s("16-"+a+n,"i",1==e.sj_state)?i("text",{staticClass:s._$s("16-"+a+n,"sc","switch-text"),attrs:{_i:"16-"+a+n}},[t._v("\u63a5\u5355")]):t._e(),i("view",{staticClass:s._$s("17-"+a+n,"sc","switch-yuan"),attrs:{_i:"17-"+a+n}}),s._$s("18-"+a+n,"i",1!=e.sj_state)?i("text",{staticClass:s._$s("18-"+a+n,"sc","switch-text"),attrs:{_i:"18-"+a+n}},[t._v("\u4e0d\u63a5\u5355")]):t._e()]):t._e()]),i("view",{staticClass:s._$s("19-"+a+n,"sc","item-right-text2"),attrs:{_i:"19-"+a+n}},[t._v(s._$s("19-"+a+n,"t0-0",t._s(e.bind_time)))]),i("view",{staticClass:s._$s("20-"+a+n,"sc","item-right-text3"),attrs:{_i:"20-"+a+n}},[i("text",{attrs:{_i:"21-"+a+n}},[t._v("\u5206\u914d\u9879\u76ee")]),i("image",{staticClass:s._$s("22-"+a+n,"sc","item-right-text3-icon"),attrs:{src:"/static/images/icons/right_gray8.png",_i:"22-"+a+n}})])])]):t._e()})),0)]}},{key:"empty",fn:function(t,e,s){return[i("noData",{attrs:{_i:"24-"+s}})]}}])}),i("uv-popup",{ref:"popup",attrs:{bgColor:"",_i:25}},[i("view",{staticClass:t._$s(26,"sc","pop-content"),attrs:{_i:26}},[i("text",{staticClass:t._$s(27,"sc","pop-content-title"),attrs:{_i:27}}),i("text",{staticClass:t._$s(28,"sc","pop-content-text"),attrs:{_i:28}}),i("text",{staticClass:t._$s(29,"sc","pop-content-text"),attrs:{_i:29}}),i("text",{staticClass:t._$s(30,"sc","pop-content-text"),attrs:{_i:30}}),i("view",{staticClass:t._$s(31,"sc","pop-content-btns"),attrs:{_i:31}},[i("view",{staticClass:t._$s(32,"sc","pop-content-close"),attrs:{_i:32},on:{click:t.closePop}}),i("view",{staticClass:t._$s(33,"sc","pop-content-sure"),attrs:{_i:33},on:{click:t.closePop}})])])])],1)},r=[]},"53d1":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.debounce=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=null,a=!1;return function(){for(var r=this,c=arguments.length,n=new Array(c),o=0;o0)?i("view",{staticClass:t._$s(23,"sc","inviteMessage"),attrs:{_i:23}},[i("view",{staticClass:t._$s(24,"sc","inviteMessage_content"),attrs:{_i:24}},[i("image",{staticClass:t._$s(25,"sc","inviteMessage_img"),attrs:{_i:25}}),i("view",{staticClass:t._$s(26,"sc","inviteMessage_text"),attrs:{_i:26}},[t._v(t._$s(26,"t0-0",t._s(t.inviteList.length)))])]),i("image",{staticClass:t._$s(27,"sc","btn_img"),attrs:{_i:27},on:{click:t.goToInviteList}})]):t._e()]):i("view",{staticClass:t._$s(28,"sc","user-section"),attrs:{_i:28}},[i("view",{staticClass:t._$s(29,"sc","user-info"),attrs:{_i:29}},[i("view",{staticClass:t._$s(30,"sc","user-info-left"),attrs:{_i:30},on:{click:t.goLogin}},[i("image",{staticClass:t._$s(31,"sc","avatar"),attrs:{_i:31}}),i("view",{staticClass:t._$s(32,"sc","user-detail"),attrs:{_i:32}},[i("text",{staticClass:t._$s(33,"sc","nickname"),attrs:{_i:33}}),i("text",{staticClass:t._$s(34,"sc","user-detail-tip"),attrs:{_i:34}})])])])]),i("view",{staticClass:t._$s(35,"sc","order-card"),attrs:{_i:35}},[t._l(t._$s(36,"f",{forItems:t.currentCardList}),(function(e,s,a,r){return[t._$s("37-"+r,"i","line"==e.type)?i("view",{key:t._$s(36,"f",{forIndex:a,keyIndex:0,key:"36-0"+r}),staticClass:t._$s("37-"+r,"sc","function-list"),attrs:{_i:"37-"+r}},[i("view",{staticClass:t._$s("38-"+r,"sc","function-title"),attrs:{_i:"38-"+r}},[t._v(t._$s("38-"+r,"t0-0",t._s(e.title)))]),i("view",{staticClass:t._$s("39-"+r,"sc","function-grid"),attrs:{_i:"39-"+r}},t._l(t._$s("40-"+r,"f",{forItems:e.list}),(function(e,s,a,c){return i("view",{key:t._$s("40-"+r,"f",{forIndex:a,key:s}),staticClass:t._$s("40-"+r+"-"+c,"sc","grid-item"),attrs:{_i:"40-"+r+"-"+c},on:{click:function(i){return t.handleFunction(e)}}},[i("view",{staticClass:t._$s("41-"+r+"-"+c,"sc","icon-wrapper"),attrs:{_i:"41-"+r+"-"+c}},[i("image",{staticClass:t._$s("42-"+r+"-"+c,"sc","grid-icon"),attrs:{src:t._$s("42-"+r+"-"+c,"a-src",e.icon),_i:"42-"+r+"-"+c}})]),i("text",{staticClass:t._$s("43-"+r+"-"+c,"sc","grid-text"),attrs:{_i:"43-"+r+"-"+c}},[t._v(t._$s("43-"+r+"-"+c,"t0-0",t._s(e.text)))])])})),0)]):t._e(),t._$s("44-"+r,"i","lineCard"==e.type)?i("view",{key:t._$s(36,"f",{forIndex:a,keyIndex:1,key:"36-1"+r}),staticClass:t._$s("44-"+r,"sc","function-list"),attrs:{_i:"44-"+r}},[i("view",{staticClass:t._$s("45-"+r,"sc","lineCard-title"),attrs:{_i:"45-"+r}},[t._v(t._$s("45-"+r,"t0-0",t._s(e.title)))]),i("view",{staticClass:t._$s("46-"+r,"sc","lineCard-grid"),attrs:{_i:"46-"+r}},t._l(t._$s("47-"+r,"f",{forItems:e.list}),(function(e,s,a,c){return i("image",{key:t._$s("47-"+r,"f",{forIndex:a,key:"47-"+r+"-"+c}),attrs:{src:t._$s("47-"+r+"-"+c,"a-src",e.url),_i:"47-"+r+"-"+c},on:{click:function(i){return t.handleFunction(e)}}})})),0)]):t._e(),t._$s("48-"+r,"i","imagePure"==e.type)?i("view",{key:t._$s(36,"f",{forIndex:a,keyIndex:2,key:"36-2"+r}),staticClass:t._$s("48-"+r,"sc","imagePure"),attrs:{_i:"48-"+r}},[i("image",{attrs:{src:t._$s("49-"+r,"a-src",e.url),_i:"49-"+r},on:{click:function(i){return t.handleFunction(e)}}})]):t._e(),t._$s("50-"+r,"i","image"==e.type)?i("view",{key:t._$s(36,"f",{forIndex:a,keyIndex:3,key:"36-3"+r}),staticClass:t._$s("50-"+r,"sc","image-list"),attrs:{_i:"50-"+r}},[i("view",{staticClass:t._$s("51-"+r,"sc","image-title"),attrs:{_i:"51-"+r}},[t._v(t._$s("51-"+r,"t0-0",t._s(e.title)))]),i("image",{attrs:{src:t._$s("52-"+r,"a-src",e.url),_i:"52-"+r},on:{click:function(i){return t.handleFunction(e)}}})]):t._e(),t._$s("53-"+r,"i","imageText"==e.type)?i("view",{key:t._$s(36,"f",{forIndex:a,keyIndex:4,key:"36-4"+r}),staticClass:t._$s("53-"+r,"sc","imageText-list"),attrs:{_i:"53-"+r}},[i("view",{staticClass:t._$s("54-"+r,"sc","imageText-title"),attrs:{_i:"54-"+r}},[t._v(t._$s("54-"+r,"t0-0",t._s(e.title)))]),i("view",{staticClass:t._$s("55-"+r,"sc","imageText-content"),attrs:{_i:"55-"+r}},[i("image",{attrs:{src:t._$s("56-"+r,"a-src",e.url),_i:"56-"+r}}),i("view",{staticClass:t._$s("57-"+r,"sc","text-status"),attrs:{_i:"57-"+r}}),i("view",{staticClass:t._$s("58-"+r,"sc","text-next"),attrs:{_i:"58-"+r}},[i("text")]),i("view",{staticClass:t._$s("60-"+r,"sc","text-next"),attrs:{_i:"60-"+r}})])]):t._e()]}))],2),i("tipsPopup2",{attrs:{show:t.tipShow,_i:61},on:{closePopup:t.closePopup,okBtn:t.okBtn}},[t._v(t._$s(61,"t0-0",t._s(t.tipsText)))]),i("TabBar",{attrs:{selected:2,_i:62}})],1)},a=[]},"56e7":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5de5\u65f6\u8be6\u60c5",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","container-header"),attrs:{_i:2}},[i("swiper",{staticClass:t._$s(3,"sc","container-header__swiper"),attrs:{_i:3}},t._l(t._$s(4,"f",{forItems:t.workHour.photo}),(function(e,s,a,r){return i("swiper-item",{key:t._$s(4,"f",{forIndex:a,key:s}),staticClass:t._$s("4-"+r,"sc","container-header__swiper__item"),attrs:{_i:"4-"+r}},[i("image",{staticClass:t._$s("5-"+r,"sc","container-header__swiper__item__img"),attrs:{src:t._$s("5-"+r,"a-src",e),_i:"5-"+r}})])})),0)]),i("view",{staticClass:t._$s(6,"sc","container-content"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","container-content__card"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","container-content__card__title"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","container-content__card__title__text"),attrs:{_i:9}},[t._v(t._$s(9,"t0-0",t._s(t.workHour.title)))]),i("view",{staticClass:t._$s(10,"sc","container-content__card__title__price"),attrs:{_i:10}},[t._v(t._$s(10,"t0-0",t._s(t.workHour.price)))])])]),i("view",{staticClass:t._$s(11,"sc","container-content__card2"),attrs:{_i:11}},[i("view",{staticClass:t._$s(12,"sc","container-content__card2__syr"),attrs:{_i:12}},[i("image",{staticClass:t._$s(13,"sc","container-content__card2__syr__img"),attrs:{src:t._$s(13,"a-src",t.userSyr.head_photo),_i:13}}),i("view",{staticClass:t._$s(14,"sc","container-content__card2__syr__text"),attrs:{_i:14}},[t._v(t._$s(14,"t0-0",t._s(t.userSyr.name)))])])]),i("view",{staticClass:t._$s(15,"sc","container-content__card2"),attrs:{_i:15}},[i("view",{staticClass:t._$s(16,"sc","container-content__card2__Serve"),attrs:{_i:16}},[i("view",{staticClass:t._$s(17,"sc","container-content__card2__Serve__title"),attrs:{_i:17}}),i("view",{staticClass:t._$s(18,"sc","container-content__card2__Serve__card"),attrs:{_i:18}},[i("view",{staticClass:t._$s(19,"sc","container-content__card2__Serve__card__content"),attrs:{_i:19}},[t._v(t._$s(19,"t0-0",t._s(t.workHour.first_class_title))+t._$s(19,"t0-1",t._s(t.workHour.second_class_title)))]),i("view",{staticClass:t._$s(20,"sc","container-content__card2__Serve__card__remark"),attrs:{_i:20}})])])]),i("view",{staticClass:t._$s(21,"sc","container-content__card2"),attrs:{_i:21}},[i("view",{staticClass:t._$s(22,"sc","container-content__card2__Serve"),attrs:{_i:22}},[i("view",{staticClass:t._$s(23,"sc","container-content__card2__Serve__title"),attrs:{_i:23}}),i("view",{staticClass:t._$s(24,"sc","container-content__card2__Serve__card"),attrs:{_i:24}},[i("view",{staticClass:t._$s(25,"sc","container-content__card2__Serve__card__content"),attrs:{_i:25}},[t._v(t._$s(25,"t0-0",t._s(t.workHour.detail)))])])])])]),i("view",{staticClass:t._$s(26,"sc","container-footer"),attrs:{_i:26}},[i("view",{staticClass:t._$s(27,"sc","container-footer__btn"),attrs:{_i:27},on:{click:t.goOrder}})]),i("view")],1)},r=[]},5750:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e0&&void 0!==arguments[0])||arguments[0];this.isLoad=!1,e&&(this.page=1,this.limit=10);var i="/syr/workHour/list";n.default.post(i,{state:this.state,page:this.page,limit:this.limit,title:this.title}).then((function(i){e?(t.services=i.data.list,t.count=i.data.count):(t.services=[].concat((0,r.default)(t.services),(0,r.default)(i.data.list)),t.count=i.data.count)})).finally((function(){t.isLoad=!0,uni.stopPullDownRefresh()}))},switchTab:function(t,e){this.currentTab=t,this.state=e,this.getServicesList()},viewRemove:function(t){var e=this;uni.showModal({title:"\u63d0\u793a",content:"\u786e\u5b9a\u8981\u4e0b\u67b6\u8be5\u670d\u52a1\u5417\uff1f",success:function(i){i.confirm&&n.default.post("/syr/workHour/switch",{id:t.id,state:3}).then((function(t){200==t.code?(uni.showToast({title:"\u4e0b\u67b6\u6210\u529f",icon:"none"}),e.getServicesList()):uni.showToast({title:t.msg,icon:"none"})}))}})},viewList:function(t){var e=this;n.default.post("/syr/workHour/switch",{id:t.id,state:2}).then((function(t){200==t.code?(uni.showToast({title:"\u4e0a\u67b6\u6210\u529f",icon:"none"}),e.getServicesList()):uni.showToast({title:t.msg,icon:"none"})}))},viewEdit:function(t){uni.navigateTo({url:"/pages/syr/manHour/addManHour?id=".concat(t.id,"&state=").concat(t.state)})},addService:function(){uni.navigateTo({url:"/pages/syr/manHour/addManHour"})},deletemanHour:function(t){var e=this;uni.showModal({title:"\u63d0\u793a",content:"\u786e\u5b9a\u8981\u5220\u9664\u8be5\u670d\u52a1\u5417\uff1f",success:function(i){i.confirm&&n.default.post("/syr/workHour/del",{id:t.id}).then((function(t){200==t.code?(uni.showToast({title:"\u5220\u9664\u6210\u529f",icon:"none"}),e.getServicesList()):uni.showToast({title:t.msg,icon:"none"})}))}})},resetSlide:function(){var t=this;this.services.forEach((function(e,i){i!==t.currentIndex&&t.$set(e,"slideX",0)}))},changeSlide:function(e){var i=e.index,s=e.type,a=void 0===s?"slideX":s,r=e.slide,c=void 0===r?0:r;t("log",i,a,c,9999," at pages/syr/manHour/list.vue:262"),this.services[i]&&this.$set(this.services[i],a,c)}}};e.default=l}).call(this,i("f3b9")["default"])},5782:function(t,e,i){"use strict";i.r(e);var s=i("225e"),a=i("d492");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"0f377d1e",null,!1,s["a"],void 0);e["default"]=n.exports},5813:function(t,e,i){"use strict";i.r(e);var s=i("4a8d"),a=i("cd27");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"c091d07e",null,!1,s["a"],void 0);e["default"]=n.exports},"586d":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uvIcon:i("08d8").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","uv-input"),class:t._$s(0,"c",t.inputClass),style:t._$s(0,"s",[t.wrapperStyle]),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","uv-input__content"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","uv-input__content__prefix-icon"),attrs:{_i:2}},[t._t("prefix",[t._$s(4,"i",t.prefixIcon)?i("uv-icon",{attrs:{name:t.prefixIcon,size:"18",customStyle:t.prefixIconStyle,_i:4}}):t._e()],{_i:3})],2),i("view",{staticClass:t._$s(5,"sc","uv-input__content__field-wrapper"),attrs:{_i:5},on:{click:t.clickHandler}},[i("input",{staticClass:t._$s(6,"sc","uv-input__content__field-wrapper__field"),style:t._$s(6,"s",[t.inputStyle]),attrs:{type:t._$s(6,"a-type",t.type),focus:t._$s(6,"a-focus",t.focus),cursor:t._$s(6,"a-cursor",t.cursor),value:t._$s(6,"a-value",t.innerValue),"auto-blur":t._$s(6,"a-auto-blur",t.autoBlur),disabled:t._$s(6,"a-disabled",t.disabled||t.readonly),maxlength:t._$s(6,"a-maxlength",t.maxlength),placeholder:t._$s(6,"a-placeholder",t.placeholder),"placeholder-style":t._$s(6,"a-placeholder-style",t.placeholderStyle),"placeholder-class":t._$s(6,"a-placeholder-class",t.placeholderClass),"confirm-type":t._$s(6,"a-confirm-type",t.confirmType),"confirm-hold":t._$s(6,"a-confirm-hold",t.confirmHold),"hold-keyboard":t._$s(6,"a-hold-keyboard",t.holdKeyboard),"cursor-spacing":t._$s(6,"a-cursor-spacing",t.cursorSpacing),"adjust-position":t._$s(6,"a-adjust-position",t.adjustPosition),"selection-end":t._$s(6,"a-selection-end",t.selectionEnd),"selection-start":t._$s(6,"a-selection-start",t.selectionStart),password:t._$s(6,"a-password",t.password||"password"===t.type||void 0),ignoreCompositionEvent:t._$s(6,"a-ignoreCompositionEvent",t.ignoreCompositionEvent),_i:6},on:{input:t.onInput,blur:t.onBlur,focus:t.onFocus,confirm:t.onConfirm,keyboardheightchange:t.onkeyboardheightchange}})]),t._$s(7,"i",t.isShowClear)?i("view",{staticClass:t._$s(7,"sc","uv-input__content__clear"),attrs:{_i:7},on:{click:t.onClear}},[i("uv-icon",{attrs:{name:"close",size:"11",color:"#ffffff",customStyle:"line-height: 12px",_i:8}})],1):t._e(),i("view",{staticClass:t._$s(9,"sc","uv-input__content__subfix-icon"),attrs:{_i:9}},[t._t("suffix",[t._$s(11,"i",t.suffixIcon)?i("uv-icon",{attrs:{name:t.suffixIcon,size:"18",customStyle:t.suffixIconStyle,_i:11}}):t._e()],{_i:10})],2)])])},r=[]},"58a0":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e=10?t.timeData.hours:"0"+t.timeData.hours)))]),i("text",{staticClass:t._$s(16,"sc","time__item"),attrs:{_i:16}},[t._v(t._$s(16,"t0-0",t._s(t.timeData.minutes>=10?t.timeData.minutes:"0"+t.timeData.minutes)))]),i("text",{staticClass:t._$s(17,"sc","time__item"),attrs:{_i:17}},[t._v(t._$s(17,"t0-0",t._s(t.timeData.seconds>=10?t.timeData.seconds:"0"+t.timeData.seconds)))])])]),i("span",{staticClass:t._$s(18,"sc","invite-time-line2"),attrs:{_i:18}})],1):t._e(),i("view",{staticClass:t._$s(19,"sc","invite-time-items"),attrs:{_i:19}},t._l(t._$s(20,"f",{forItems:t.orderInfo.team_buy.person_num}),(function(e,s,a,r){return i("view",{key:t._$s(20,"f",{forIndex:a,key:"20-"+r}),staticClass:t._$s("20-"+r,"sc","invite-time-item"),attrs:{_i:"20-"+r}},[t._$s("21-"+r,"i",t.orderInfo.team_buy.head_photos[e-1])?i("image",{staticClass:t._$s("21-"+r,"sc","invite-time-item-img"),attrs:{src:t._$s("21-"+r,"a-src",t.orderInfo.team_buy.head_photos[e-1]),_i:"21-"+r}}):i("image",{staticClass:t._$s("22-"+r,"sc","invite-time-item-img"),attrs:{_i:"22-"+r}})])})),0),i("view",{staticClass:t._$s(23,"sc","invite-btn"),attrs:{_i:23},on:{click:t.goInvite}},[t._$s(24,"i",1==t.orderInfo.team_buy_order_state)?i("view",{staticClass:t._$s(24,"sc","invite-btn-wx"),attrs:{_i:24}},[i("image",{staticClass:t._$s(25,"sc","invite-btn-wx-img"),attrs:{_i:25}}),t._v(t._$s(24,"t1-0",t._s(t.orderInfo.team_buy.person_num-t.orderInfo.team_buy.pay_person_num)))]):i("view",{staticClass:t._$s(26,"sc","invite-btn-wx"),attrs:{_i:26}})])]):t._e(),t._$s(27,"i",1==t.orderInfo.order_kind||3==t.orderInfo.order_kind)?i("view",{staticClass:t._$s(27,"sc","service-card"),attrs:{_i:27}},[i("view",{staticClass:t._$s(28,"sc","location-info"),attrs:{_i:28}},[i("image",{staticClass:t._$s(29,"sc","location-icon"),attrs:{_i:29}}),i("view",{staticClass:t._$s(30,"sc","address-info"),attrs:{_i:30}},[i("view",{staticClass:t._$s(31,"sc","name-phone"),attrs:{_i:31}},[i("text",{staticClass:t._$s(32,"sc","name"),attrs:{_i:32}},[t._v(t._$s(32,"t0-0",t._s(t.reservation_address_arr.name)))]),i("text",{staticClass:t._$s(33,"sc","phone"),attrs:{_i:33}},[t._v(t._$s(33,"t0-0",t._s(t.reservation_address_arr.call_phone)))])]),i("text",{staticClass:t._$s(34,"sc","address"),attrs:{_i:34}},[t._v(t._$s(34,"t0-0",t._s(t.reservation_address_arr.server_address)))])])]),i("image",{staticClass:t._$s(35,"sc","divider"),attrs:{_i:35}}),i("view",{staticClass:t._$s(36,"sc","staff-info"),attrs:{_i:36}},[i("image",{staticClass:t._$s(37,"sc","staff-avatar"),attrs:{src:t._$s(37,"a-src",t.user_syr.head_photo),_i:37}}),i("view",{staticClass:t._$s(38,"sc","staff-detail"),attrs:{_i:38}},[i("text",{staticClass:t._$s(39,"sc","staff-name"),attrs:{_i:39}},[t._v(t._$s(39,"t0-0",t._s(t.user_syr.name)))]),i("view",{staticClass:t._$s(40,"sc","rating"),attrs:{_i:40}})])])]):t._e(),t._$s(41,"i",2==t.orderInfo.order_kind)?i("view",{staticClass:t._$s(41,"sc","service-shop"),attrs:{_i:41}},[i("view",{staticClass:t._$s(42,"sc","shop-info"),attrs:{_i:42}},[i("view",{staticClass:t._$s(43,"sc","shop-info1"),attrs:{_i:43}},[i("view",{staticClass:t._$s(44,"sc","shop-info1-left"),attrs:{_i:44}},[i("image",{staticClass:t._$s(45,"sc","shop-logo"),attrs:{src:t._$s(45,"a-src",t.user_sj.head_photo),_i:45}}),i("view",{staticClass:t._$s(46,"sc","shop-info-right"),attrs:{_i:46}},[i("text",{staticClass:t._$s(47,"sc","shop-name"),attrs:{_i:47}},[t._v(t._$s(47,"t0-0",t._s(t.user_sj.name)))]),i("view",{staticClass:t._$s(48,"sc","shop-distance"),attrs:{_i:48}},[i("image",{staticClass:t._$s(49,"sc","distance-icon"),attrs:{_i:49}}),i("text",{staticClass:t._$s(50,"sc","distance-text"),attrs:{_i:50}},[t._v(t._$s(50,"t0-0",t._s(t.distance)))])])])]),i("view",{staticClass:t._$s(51,"sc","shop-info1-right"),attrs:{_i:51}},[i("view",{staticClass:t._$s(52,"sc","shop-info1-right-item"),attrs:{_i:52}},[i("image",{staticClass:t._$s(53,"sc","btn-map"),attrs:{_i:53},on:{click:t.openMap}}),i("view",{staticClass:t._$s(54,"sc","shop-info1-right-item-text"),attrs:{_i:54}})]),i("view",{staticClass:t._$s(55,"sc","shop-info1-right-item"),attrs:{_i:55}},[i("image",{staticClass:t._$s(56,"sc","btn-phone"),attrs:{_i:56},on:{click:function(e){return t.contactService(t.user_sj.account)}}}),i("view",{staticClass:t._$s(57,"sc","shop-info1-right-item-text"),attrs:{_i:57}})])])]),i("view",{staticClass:t._$s(58,"sc","shop-info2"),attrs:{_i:58}},[i("text",{staticClass:t._$s(59,"sc","shop-time"),attrs:{_i:59}},[t._v(t._$s(59,"t0-0",t._s(t.user_sj.business_time)))]),i("text",{staticClass:t._$s(60,"sc","shop-address"),attrs:{_i:60}},[t._v(t._$s(60,"t0-0",t._s(t.user_sj.account)))]),i("text",{staticClass:t._$s(61,"sc","shop-address mt-10"),attrs:{_i:61}},[t._v(t._$s(61,"t0-0",t._s(t.user_sj.address)))])])])]):t._e(),i("view",{staticClass:t._$s(62,"sc","booking-card"),attrs:{_i:62}},[i("view",{staticClass:t._$s(63,"sc","card-header"),attrs:{_i:63}},[i("text",{staticClass:t._$s(64,"sc","card-title"),attrs:{_i:64}}),i("view",[t._$s(66,"i",1==t.orderInfo.order_kind||3==t.orderInfo.order_kind)?i("text",{staticClass:t._$s(66,"sc","update-time"),attrs:{_i:66}},[t._v(t._$s(66,"t0-0",t._s(t.orderInfo.reservation_time)))]):t._e()])]),i("view",{staticClass:t._$s(67,"sc","service-item"),attrs:{_i:67}},[t._$s(68,"i",t.orderInfo.server_photo&&0!=t.orderInfo.server_photo.length)?i("image",{staticClass:t._$s(68,"sc","service-image"),attrs:{src:t._$s(68,"a-src",t.orderInfo.server_photo[0]),_i:68}}):t._e(),i("view",{staticClass:t._$s(69,"sc","service-info"),attrs:{_i:69}},[i("view",{staticClass:t._$s(70,"sc","service-name"),attrs:{_i:70}},[t._v(t._$s(70,"t0-0",t._s(t.orderInfo.server_title))),i("view",{staticClass:t._$s(71,"sc","service-name-num"),attrs:{_i:71}})]),t._$s(72,"i",t.orderInfo.team_buy_id)?i("view",{staticClass:t._$s(72,"sc","group-price"),attrs:{_i:72}},[i("view",{staticClass:t._$s(73,"sc","service-price"),attrs:{_i:73}},[t._v(t._$s(73,"t0-0",t._s(t.orderInfo.cost_money)))]),i("view",{staticClass:t._$s(74,"sc","service-price2"),attrs:{_i:74}},[i("text",[t._v(t._$s(75,"t0-0",t._s(t.orderInfo.order_money)))])])]):i("text",{staticClass:t._$s(76,"sc","service-price2"),attrs:{_i:76}},[i("text",[t._v(t._$s(77,"t0-0",t._s(t.orderInfo.order_money)))])])])]),i("view",{staticClass:t._$s(78,"sc","service-real"),attrs:{_i:78}},[i("text",{staticClass:t._$s(79,"sc","real-lable"),attrs:{_i:79}}),i("text",{staticClass:t._$s(80,"sc","real-price"),attrs:{_i:80}},[t._v(t._$s(80,"t0-0",t._s(t.orderInfo.pay_money||0)))])])]),i("view",{staticClass:t._$s(81,"sc","order-card"),attrs:{_i:81}},[i("text",{staticClass:t._$s(82,"sc","card-title"),attrs:{_i:82}}),i("view",{staticClass:t._$s(83,"sc","info-item"),attrs:{_i:83}},[i("text",{staticClass:t._$s(84,"sc","label"),attrs:{_i:84}}),i("text",{staticClass:t._$s(85,"sc","value"),attrs:{_i:85}},[t._v(t._$s(85,"t0-0",t._s(t.orderInfo.team_buy_id?"\u62fc\u56e2\u8ba2\u5355":"\u666e\u901a\u8ba2\u5355")))])]),i("view",{staticClass:t._$s(86,"sc","info-item"),attrs:{_i:86}},[i("text",{staticClass:t._$s(87,"sc","label"),attrs:{_i:87}}),i("text",{staticClass:t._$s(88,"sc","value"),attrs:{_i:88}},[t._v(t._$s(88,"t0-0",t._s(t.orderInfo.server_code)))])]),i("view",{staticClass:t._$s(89,"sc","info-item"),attrs:{_i:89}},[i("text",{staticClass:t._$s(90,"sc","label"),attrs:{_i:90}}),i("text",{staticClass:t._$s(91,"sc","value"),attrs:{_i:91}},[t._v(t._$s(91,"t0-0",t._s(t.orderInfo.number)))])]),t._$s(92,"i",t.orderInfo.add_time)?i("view",{staticClass:t._$s(92,"sc","info-item"),attrs:{_i:92}},[i("text",{staticClass:t._$s(93,"sc","label"),attrs:{_i:93}}),i("text",{staticClass:t._$s(94,"sc","value"),attrs:{_i:94}},[t._v(t._$s(94,"t0-0",t._s(t.orderInfo.add_time)))])]):t._e(),t._$s(95,"i",t.orderInfo.pay_kind)?i("view",{staticClass:t._$s(95,"sc","info-item"),attrs:{_i:95}},[i("text",{staticClass:t._$s(96,"sc","label"),attrs:{_i:96}}),i("text",{staticClass:t._$s(97,"sc","value"),attrs:{_i:97}},[t._v(t._$s(97,"t0-0",t._s(1==t.orderInfo.pay_kind?"\u8d26\u6237\u4f59\u989d":2==t.orderInfo.pay_kind?"\u5fae\u4fe1\u652f\u4ed8":3==t.orderInfo.pay_kind?"\u652f\u4ed8\u5b9d\u652f\u4ed8":"")))])]):t._e(),t._$s(98,"i",t.orderInfo.pay_time)?i("view",{staticClass:t._$s(98,"sc","info-item"),attrs:{_i:98}},[i("text",{staticClass:t._$s(99,"sc","label"),attrs:{_i:99}}),i("text",{staticClass:t._$s(100,"sc","value"),attrs:{_i:100}},[t._v(t._$s(100,"t0-0",t._s(t.orderInfo.pay_time)))])]):t._e(),t._$s(101,"i",1!=t.orderInfo.state&&2!=t.orderInfo.state&&3!=t.orderInfo.state&&t.orderInfo.server_start_time)?i("view",{staticClass:t._$s(101,"sc","info-item"),attrs:{_i:101}},[i("text",{staticClass:t._$s(102,"sc","label"),attrs:{_i:102}}),i("text",{staticClass:t._$s(103,"sc","value"),attrs:{_i:103}},[t._v(t._$s(103,"t0-0",t._s(t.orderInfo.server_start_time)))])]):t._e(),t._$s(104,"i",1!=t.orderInfo.state&&2!=t.orderInfo.state&&3!=t.orderInfo.state&&4!=t.orderInfo.state&&t.orderInfo.server_end_time)?i("view",{staticClass:t._$s(104,"sc","info-item"),attrs:{_i:104}},[i("text",{staticClass:t._$s(105,"sc","label"),attrs:{_i:105}}),i("text",{staticClass:t._$s(106,"sc","value"),attrs:{_i:106}},[t._v(t._$s(106,"t0-0",t._s(t.orderInfo.server_end_time)))])]):t._e()])]),i("view",{staticClass:t._$s(107,"sc","bottom-buttons"),attrs:{_i:107}},[i("view",{staticClass:t._$s(108,"sc","contact-button"),attrs:{_i:108}}),t._$s(109,"i",1==t.orderInfo.state)?i("view",{staticClass:t._$s(109,"sc","handel-button btn-border"),attrs:{_i:109},on:{click:t.cancelService}},[i("text",{staticClass:t._$s(110,"sc","button-text"),attrs:{_i:110}})]):t._e(),t._$s(111,"i",2==t.orderInfo.state||3==t.orderInfo.state)?i("view",{staticClass:t._$s(111,"sc","handel-button btn-border"),attrs:{_i:111},on:{click:t.refoundService}},[i("text",{staticClass:t._$s(112,"sc","button-text"),attrs:{_i:112}})]):t._e(),t._$s(113,"i",1==t.orderInfo.state)?i("view",{staticClass:t._$s(113,"sc","handel-button btn-bg"),attrs:{_i:113},on:{click:t.payOrder}},[i("text",{staticClass:t._$s(114,"sc","button-text"),attrs:{_i:114}})]):t._e(),t._$s(115,"i",5==t.orderInfo.state&&2==t.orderInfo.evaluate)?i("view",{staticClass:t._$s(115,"sc","handel-button btn-border"),attrs:{_i:115},on:{click:t.reviewOrder}},[i("text",{staticClass:t._$s(116,"sc","button-text"),attrs:{_i:116}})]):t._e(),t._$s(117,"i",5==t.orderInfo.state&&1==t.orderInfo.evaluate)?i("view",{staticClass:t._$s(117,"sc","handel-button btn-border"),attrs:{_i:117},on:{click:t.goEvaluateDetail}},[i("text",{staticClass:t._$s(118,"sc","button-text"),attrs:{_i:118}})]):t._e(),t._$s(119,"i",5==t.orderInfo.state||6==t.orderInfo.state)?i("view",{staticClass:t._$s(119,"sc","handel-button btn-bg"),attrs:{_i:119},on:{click:t.orderAgain}},[i("text",{staticClass:t._$s(120,"sc","button-text"),attrs:{_i:120}})]):t._e()]),i("view",{staticClass:t._$s(121,"sc","permission"),class:t._$s(121,"c",{transform:t.isShowPer}),attrs:{_i:121}},[i("view",{staticClass:t._$s(122,"sc","per-tit"),attrs:{_i:122}}),i("view",{staticClass:t._$s(123,"sc","per-cont"),attrs:{_i:123}})]),t._$s(124,"i",t.orderInfo.team_buy_id)?i("l-painter",{ref:"painter",attrs:{hidden:!0,css:" width: 420rpx; height: 336rpx;position: relative;background-image:url(https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/8b8dd83f-ccde-406a-b236-2cf27db682e0)",_i:124}},[i("l-painter-image",{attrs:{src:t.orderInfo.server_photo[0],css:" width: 205rpx; height: 205rpx; position: absolute;left:34rpx;top:108rpx;z-index:2;border-radius:20rpx;object-fit:cover",_i:125}}),i("l-painter-view",{attrs:{css:"display: inline-block;z-index:2;position: absolute;left:255rpx;top:108rpx;",_i:126}},[i("l-painter-view",{attrs:{css:"display: inline-block;background:rgba(253, 218, 226, 1);border-radius: 17rpx 17rpx 17rpx 0rpx;padding: 6rpx 10rpx;",_i:127}},[i("l-painter-image",{attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/8406740b-0448-447e-8d61-df91f1339bd4",css:" width: 14rpx;height: 19rpx;",_i:128}}),i("l-painter-text",{attrs:{text:"\u7acb\u7701"+t.formatPriceNumber(this.orderInfo.cost_money-this.orderInfo.order_money)+"\u5143",css:"font-weight: 500;font-size: "+t.formatPriceSize(t.formatPriceNumber(this.orderInfo.cost_money-this.orderInfo.order_money),18,2)+"rpx;color: #E8101E;line-height: 25rpx;text-align: left;font-style: normal;",_i:129}})],1),i("l-painter-view",{attrs:{css:"margin-top:44rpx;",_i:130}},[i("l-painter-text",{attrs:{text:"\xa5",css:"font-weight: 500;font-size: 26rpx;color: #E8101E;line-height: 48rpx;text-align: left;font-style: normal;",_i:131}}),i("l-painter-text",{attrs:{text:t.formatPriceNumber(this.orderInfo.order_money),css:"font-weight: 500;font-size:"+t.formatPriceSize(t.formatPriceNumber(this.orderInfo.order_money),56,3)+"rpx;color: #E8101E;line-height: 34rpx;text-align: left;font-style: normal;",_i:132}})],1),i("l-painter-view",{attrs:{css:"margin-top:0rpx;",_i:133}},[i("l-painter-text",{attrs:{text:"\u539f\u4ef7\xa5"+t.formatPriceNumber(this.orderInfo.cost_money),css:"text-decoration: line-through;font-weight: 400;font-size:"+t.formatPriceSize(t.formatPriceNumber(this.orderInfo.cost_money),24,4)+"rpx;color: #CACCCC;line-height: 33rpx;text-align: left;font-style: normal;",_i:134}})],1),i("l-painter-view",{attrs:{css:"width: 143rpx; height: 50rpx;background-image:url(https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/c4f3c552-67f2-4b1e-9aeb-ab8c4cf1c97e);display: inline-block;border-radius: 25rpx;",_i:135}})],1)],1):t._e()],1)},r=[]},"5d77":function(t,e,i){"use strict";i.r(e);var s=i("1dab"),a=i("b517");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"5d93":function(t,e,i){"use strict";i.r(e);var s=i("569d"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"5dec":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e=e.height;t.singleWidth=i?t.singleSize:e.width/e.height*t.$uv.getPx(t.singleSize),t.singleHeight=i?e.height/e.width*t.singleWidth:t.singleSize},fail:function(){t.getComponentWidth()}})},getComponentWidth:function(){var t=this;return(0,n.default)(c.default.mark((function e(){return c.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.$uv.sleep(30);case 2:t.$uGetRect(".uv-album__row").then((function(e){t.singleWidth=e.width*t.singlePercent}));case 3:case"end":return e.stop()}}),e)})))()}}};e.default=f},"5e85":function(t,e,i){"use strict";i.r(e);var s=i("1762"),a=i("db33");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"5e91":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e0&&void 0!==c[0]?c[0]:{},i=c.length>1&&void 0!==c[1]?c[1]:{},s={},"string"===typeof e?(s.url=this.mixinParam(e,i),s.type="navigateTo"):(s=(0,o.deepMerge)(this.config,e),s.url=this.mixinParam(e.url,e.params)),s.url!==(0,o.page)()){t.next=6;break}return t.abrupt("return");case 6:if(i.intercept&&(s.intercept=i.intercept),s.params=i,s=(0,o.deepMerge)(this.config,s),"function"!==typeof s.intercept){t.next=16;break}return t.next=12,new Promise((function(t,e){s.intercept(s,t)}));case 12:r=t.sent,r&&this.openPage(s),t.next=17;break;case 16:this.openPage(s);case 17:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}()},{key:"openPage",value:function(t){var e=t.url,i=(t.type,t.delta),s=t.animationType,a=t.animationDuration,r=t.events;"navigateTo"!=t.type&&"to"!=t.type||uni.navigateTo({url:e,animationType:s,animationDuration:a,events:r}),"redirectTo"!=t.type&&"redirect"!=t.type||uni.redirectTo({url:e}),"switchTab"!=t.type&&"tab"!=t.type||uni.switchTab({url:e}),"reLaunch"!=t.type&&"launch"!=t.type||uni.reLaunch({url:e}),"navigateBack"!=t.type&&"back"!=t.type||uni.navigateBack({delta:i})}}]),t}(),l=(new d).route;e.default=l},6125:function(t,e,i){"use strict";i.r(e);var s=i("622b"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},6159:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("af34")),r=s(i("3b2d")),c=s(i("7ca3")),n=s(i("12f9")),o=s(i("8547")),d=i("0680");function l(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function u(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};t.duration&&(this.durationTime=t.duration),this.animation=(0,d.createAnimation)(Object.assign(this.config,t),this)},onClick:function(){this.$emit("click",{detail:this.isShow})},step:function(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.animation){for(var s in e)try{var c;if("object"===(0,r.default)(e[s]))(c=this.animation)[s].apply(c,(0,a.default)(e[s]));else this.animation[s](e[s])}catch(n){t("error","\u65b9\u6cd5 ".concat(s," \u4e0d\u5b58\u5728")," at uni_modules/uv-transition/components/uv-transition/uv-transition.vue:166")}return this.animation.step(i),this}},run:function(t){this.animation&&this.animation.run(t)},open:function(){var t=this;clearTimeout(this.timer),this.transform="",this.isShow=!0;var e=this.styleInit(!1),i=e.opacity,s=e.transform;"undefined"!==typeof i&&(this.opacity=i),this.transform=s,this.$nextTick((function(){t.timer=setTimeout((function(){t.animation=(0,d.createAnimation)(t.config,t),t.tranfromInit(!1).step(),t.animation.run(),t.$emit("change",{detail:t.isShow})}),20)}))},close:function(t){var e=this;this.animation&&this.tranfromInit(!0).step().run((function(){e.isShow=!1,e.animationData=null,e.animation=null;var t=e.styleInit(!1),i=t.opacity,s=t.transform;e.opacity=i||1,e.transform=s,e.$emit("change",{detail:e.isShow})}))},styleInit:function(t){var e=this,i={transform:""},s=function(t,s){"fade"===s?i.opacity=e.animationType(t)[s]:i.transform+=e.animationType(t)[s]+" "};return"string"===typeof this.mode?s(t,this.mode):this.mode.forEach((function(e){s(t,e)})),i},tranfromInit:function(t){var e=this,i=function(t,i){var s=null;"fade"===i?s=t?0:1:(s=t?"-100%":"0","zoom-in"===i&&(s=t?.8:1),"zoom-out"===i&&(s=t?1.2:1),"slide-right"===i&&(s=t?"100%":"0"),"slide-bottom"===i&&(s=t?"100%":"0")),e.animation[e.animationMode()[i]](s)};return"string"===typeof this.mode?i(t,this.mode):this.mode.forEach((function(e){i(t,e)})),this.animation},animationType:function(t){return{fade:t?1:0,"slide-top":"translateY(".concat(t?"0":"-100%",")"),"slide-right":"translateX(".concat(t?"0":"100%",")"),"slide-bottom":"translateY(".concat(t?"0":"100%",")"),"slide-left":"translateX(".concat(t?"0":"-100%",")"),"zoom-in":"scaleX(".concat(t?1:.8,") scaleY(").concat(t?1:.8,")"),"zoom-out":"scaleX(".concat(t?1:1.2,") scaleY(").concat(t?1:1.2,")")}},animationMode:function(){return{fade:"opacity","slide-top":"translateY","slide-right":"translateX","slide-bottom":"translateY","slide-left":"translateX","zoom-in":"scale","zoom-out":"scale"}},toLine:function(t){return t.replace(/([A-Z])/g,"-$1").toLowerCase()}}};e.default=f}).call(this,i("f3b9")["default"])},"61f3":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",[i("custom-navbar",{attrs:{title:t.title,"show-back":!0,"title-color":"#000","background-color":"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","content"),attrs:{_i:2}},[t._l(t._$s(3,"f",{forItems:t.contentList}),(function(e,s,a,r){return[t._$s("4-"+r,"i","text"===e.type)?i("rich-text",{key:t._$s(3,"f",{forIndex:a,keyIndex:0,key:s+"_0"}),attrs:{nodes:t._$s("4-"+r,"a-nodes",e.content),_i:"4-"+r}}):t._$s("5-"+r,"e","image"===e.type)?i("view",{key:t._$s(3,"f",{forIndex:a,keyIndex:-1,key:"3--1"+r}),staticClass:t._$s("5-"+r,"sc","image-container"),attrs:{_i:"5-"+r},on:{click:function(i){return t.previewImage(e.src,s)}}},[i("image",{staticClass:t._$s("6-"+r,"sc","clickable-image"),attrs:{src:t._$s("6-"+r,"a-src",e.src),_i:"6-"+r}})]):t._e()]}))],2)],1)},r=[]},6204:function(t,e,i){"use strict";i.r(e);var s=i("7191"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},6227:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("af34")),r=s(i("3b2d")),c=s(i("16bb")),n=s(i("30e5")),o={components:{evaluationList:n.default},data:function(){return{artisanId:null,artisanInfo:{},scrollViewHeight:0,defaultAvatar:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40",commentCount:0,commentList:[],loadingComments:!1,commentsFinished:!1,commentPage:1,commentLimit:10,worksList:[],loadingWorks:!1,worksFinished:!1,workPage:1,workLimit:12,showMockComments:!0,mockComments:[{userName:"\u4e03\u559c",avatar:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40",time:"2025\u5e749\u670812\u65e5",content:'\u4e0a\u5468\u53bb\u5bb6\u9644\u8fd1\u7684"\u751c\u7cef\u7f8e\u7532"\u505a\u6b3e\u5f0f\uff0c\u4f53\u9a8c\u611f\u8fdc\u8d85\u9884\u671f\uff01\u5e97\u9762\u4e0d\u5927\u4f46\u6536\u62fe\u5f97\u5f88\u6574\u6d01\uff0c\u6d45\u6a59\u8272\u5899\u9762\u7eff\u690d...',tab:"\u8d2d\u4e70 #\u5c0f\u86ee\u8170\u5c0f\u86ee\u8170\u5c0f\u86ee\u8170\u5c0f\u86ee\u8170...",type:"\u8fd8\u53ef\u4ee5 4.0\u5206"},{userName:"\u9ed8\u8ba4\u540d\u79f0\u9ed8\u8ba4\u5934\u50cf",avatar:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40",time:"2025\u5e748\u670820\u65e5",content:'\u6211\u5e26\u4e86\u5f20\u788e\u94bb\u6cd5\u5f0f\u7532\u7684\u7f51\u56fe\uff0c\u7f8e\u7532\u5e08\u9759\u9759\u770b\u4e86\u4f1a\u513f\u6ca1\u76f4\u63a5\u8bf4"\u505a\u4e0d\u4e86"\uff0c\u800c\u662f\u5efa\u8bae\uff1a"\u4f60\u6307\u7532\u504f\u77ed..."',tab:"\u8d2d\u4e70 #\u5c0f\u86ee\u8170",type:"\u4e00\u822c 3.0\u5206"},{userName:"\u7528\u6237123",avatar:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40",time:"2025\u5e747\u670815\u65e5",content:"\u670d\u52a1\u6001\u5ea6\u7279\u522b\u597d\uff0c\u6280\u672f\u4e5f\u5f88\u4e13\u4e1a\uff0c\u505a\u51fa\u6765\u7684\u6548\u679c\u548c\u6211\u60f3\u8c61\u4e2d\u7684\u4e00\u6a21\u4e00\u6837\uff0c\u4e0b\u6b21\u8fd8\u4f1a\u518d\u6765\uff01",tab:"\u8d2d\u4e70 #\u6cd5\u5f0f\u7f8e\u7532",type:"\u975e\u5e38\u6ee1\u610f 5.0\u5206"},{userName:"\u7f8e\u7532\u7231\u597d\u8005",avatar:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40",time:"2025\u5e746\u670828\u65e5",content:"\u989c\u8272\u642d\u914d\u5f97\u5f88\u6f02\u4eae\uff0c\u7ec6\u8282\u5904\u7406\u5f97\u5f88\u5230\u4f4d\uff0c\u6574\u4e2a\u7f8e\u7532\u8fc7\u7a0b\u975e\u5e38\u8212\u9002\uff0c\u5f3a\u70c8\u63a8\u8350\uff01",tab:"\u8d2d\u4e70 #\u6e10\u53d8\u7f8e\u7532",type:"\u8d85\u51fa\u671f\u5f85 4.5\u5206"}]}},onLoad:function(e){e.id&&(this.artisanId=e.id),t("log","\u63a5\u6536\u5230\u7684\u5458\u5de5ID:",this.artisanId,"\u7c7b\u578b:",(0,r.default)(this.artisanId)," at pages/user/employee-detail.vue:221"),this.calculateScrollHeight(),this.getArtisanDetail(),this.getWorksList(),this.commentCount=4},onReady:function(){var t=this;setTimeout((function(){t.calculateScrollHeight()}),100)},methods:{goList:function(){uni.navigateTo({url:"/pages/evaluate/evaluationList?evaluated_id=".concat(this.artisanInfo.id,"&evaluated_type=1")})},calculateScrollHeight:function(){var t=uni.getSystemInfoSync(),e=t.statusBarHeight||0;this.scrollViewHeight=t.windowHeight-(44+e+100)},getArtisanDetail:function(){var e,i,s=this;if(this.artisanId){var a={},r=uni.getStorageSync("userAdrees");a=r?r.addressRes:getApp().globalData.addressRes;var n=null===(e=a)||void 0===e?void 0:e.latitude,o=null===(i=a)||void 0===i?void 0:i.longitude;t("log","\u7528\u6237\u4f4d\u7f6e\u4fe1\u606f:",{userLat:n,userLngz:o}," at pages/user/employee-detail.vue:280");var d={id:this.artisanId,userLat:n,userLngz:o};t("log","\u8bf7\u6c42\u53c2\u6570:",d," at pages/user/employee-detail.vue:291"),c.default.post("/user/syrdetail",d).then((function(e){if(t("log","\u624b\u827a\u4eba\u8be6\u60c5\u63a5\u53e3\u8fd4\u56de:",e," at pages/user/employee-detail.vue:296"),1===e.state){if(s.artisanInfo=e.data||{},s.artisanInfo.distance?(s.artisanInfo.distance=parseFloat(s.artisanInfo.distance).toFixed(2),t("log","\u683c\u5f0f\u5316\u540e\u7684\u8ddd\u79bb:",s.artisanInfo.distance," at pages/user/employee-detail.vue:304")):t("log","\u63a5\u53e3\u6ca1\u6709\u8fd4\u56dedistance\u5b57\u6bb5"," at pages/user/employee-detail.vue:306"),s.artisanInfo.default_times&&""!==s.artisanInfo.default_times.trim()?(s.artisanInfo.service_time=s.artisanInfo.default_times,t("log","\u4f7f\u7528default_times\u4f5c\u4e3a\u670d\u52a1\u65f6\u95f4:",s.artisanInfo.service_time," at pages/user/employee-detail.vue:312")):(s.artisanInfo.service_time="09:00-21:00",t("log","\u672a\u627e\u5230\u670d\u52a1\u65f6\u95f4\uff0c\u4f7f\u7528\u9ed8\u8ba4\u503c"," at pages/user/employee-detail.vue:315")),s.artisanInfo.working_years&&"0\u5e741\u4e2a\u6708"!==s.artisanInfo.working_years)t("log","\u4f7f\u7528\u63a5\u53e3\u8fd4\u56de\u7684\u4ece\u4e1a\u5e74\u9650:",s.artisanInfo.working_years," at pages/user/employee-detail.vue:320");else if(s.artisanInfo.applyyes_time){var i=s.artisanInfo.applyyes_time.replace(" ","T"),a=new Date(i);if(isNaN(a.getTime()))return s.artisanInfo.working_years="0\u5e740\u4e2a\u6708",void t("log","\u65e5\u671f\u683c\u5f0f\u89e3\u6790\u5931\u8d25\uff0c\u4ece\u4e1a\u5e74\u9650\u9ed8\u8ba40\u5e740\u4e2a\u6708"," at pages/user/employee-detail.vue:330");var r=new Date,c=r.getFullYear()-a.getFullYear(),n=r.getMonth()-a.getMonth(),o=12*c+n;o<=0&&(o=1);var d=Math.floor(o/12),l=o%12;s.artisanInfo.working_years="".concat(d,"\u5e74").concat(l,"\u4e2a\u6708"),t("log","\u91cd\u65b0\u8ba1\u7b97\u7684\u4ece\u4e1a\u5e74\u9650:",s.artisanInfo.working_years," at pages/user/employee-detail.vue:349")}else s.artisanInfo.working_years="0\u5e741\u4e2a\u6708";t("log","\u5904\u7406\u540e\u7684\u624b\u827a\u4eba\u4fe1\u606f:",s.artisanInfo," at pages/user/employee-detail.vue:355")}else t("error","\u83b7\u53d6\u624b\u827a\u4eba\u8be6\u60c5\u5931\u8d25:",e," at pages/user/employee-detail.vue:357"),uni.showToast({title:e.msg||"\u83b7\u53d6\u624b\u827a\u4eba\u8be6\u60c5\u5931\u8d25",icon:"none"})})).catch((function(e){t("error","\u83b7\u53d6\u624b\u827a\u4eba\u8be6\u60c5\u5931\u8d25:",e," at pages/user/employee-detail.vue:365"),uni.showToast({title:"\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u91cd\u8bd5",icon:"none"})}))}else t("error","\u624b\u827a\u4ebaID\u4e3a\u7a7a"," at pages/user/employee-detail.vue:265")},getWorksList:function(){var e=this;if(!this.loadingWorks&&!this.worksFinished&&this.artisanId){this.loadingWorks=!0;var i={artisan_id:this.artisanId,page:this.workPage,limit:this.workLimit};t("log","\u8bf7\u6c42\u4f5c\u54c1\u5217\u8868\u53c2\u6570:",i," at pages/user/employee-detail.vue:387"),setTimeout((function(){var t=[{id:1,image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:2,image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:3,image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:4,image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:5,image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:6,image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:7,image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:8,image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:9,image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"},{id:10,image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png"}];1===e.workPage?e.worksList=t:e.worksList=[].concat((0,a.default)(e.worksList),t),t.length0&&(i.$set(t,"selectSjItem",t.sj_list[0]),i.$set(t,"showSj",!1))})),this.syrList=s,t("log",11111,this.syrList," at pages/selfOperated/selectSyr.vue:247"),0==e.data.count&&0!=this.queryData.servers_region.length&&(this.queryData.servers_region="",setTimeout((function(){i.search()}),200))},openPopup:function(t){this.openTiem=t,this.$refs.popup.open()},closePopup:function(){this.$refs.popup.close()},handleConfirm:function(){this.closePopup()},searchConfrim:function(t){this.search()},search:function(){this.$refs.groupRef.manualRefresh(this.queryData)},selectSyr:function(t){if(0!=this.queryData.servers_region.length){var e=getCurrentPages(),i=e[e.length-2];i&&(this.$store.commit("setreservationSyr",t),uni.navigateBack())}}}};e.default=o}).call(this,i("f3b9")["default"])},6292:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("2251")),o={components:{serviecFirstTab:n.default},data:function(){return{activeId:"",tabs:[],userInfo:{},serviceList:{},isBack:0}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return t.isBack&&(e.isBack=t.isBack),3,i.next=4,c.default.post("/user/getuser",{type:3});case 4:s=i.sent,e.userInfo=s.data,t.syrid?e.sjservers(Number(t.syrid)):e.serviceList=e.$store.state.sjServiceList,e.sjfirstclass();case 8:case"end":return i.stop()}}),i)})))()},computed:{getList:function(){return this.serviceList[String(this.activeId)]||[]}},methods:{changeType:function(t){0==this.isBack&&(t.is_choice=!t.is_choice)},tabClick:function(t){this.activeId=t},sjfirstclass:function(){var t=this;c.default.post("/sj/sjfirstclass",{sjid:this.userInfo.id}).then((function(e){200==e.code&&(t.tabs=e.data,t.activeId=e.data[0].id)}))},sjservers:function(t){var e=this;c.default.post("/sj/sjservers",{sjid:this.userInfo.id,syrid:t}).then((function(t){200==t.code&&(e.serviceList=t.data)}))},sure:function(){this.$store.commit("setSjServiceList",this.serviceList);var t=getCurrentPages(),e=t[t.length-2];e&&(e.$vm&&"function"===typeof e.$vm.makeservers&&e.$vm.makeservers(),uni.navigateBack())},back:function(){uni.navigateBack()}}};e.default=o},"62af":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"manHourCard",props:{info:{type:Object},index:{type:Number}},data:function(){return{currentIndex:""}},computed:{photo:function(){return JSON.parse(this.info.photo)},price:function(){return Number(this.info.price)}},methods:{touchStart:function(t,e){0==this.info.state&&(t.preventDefault(),t.stopPropagation(),t.touches&&t.touches[0]&&(this.startX=t.touches[0].clientX,this.currentIndex=e))},touchMove:function(t){0===this.info.state&&(t.preventDefault(),t.stopPropagation(),t.touches&&t.touches[0]&&(this.moveX=t.touches[0].clientX-this.startX,this.moveX>0&&(this.moveX=0),this.moveX<-160&&(this.moveX=-160),this.$emit("changeSlide",{index:this.currentIndex,slide:this.moveX})))},touchEnd:function(t){0===this.info.state&&(t.preventDefault(),t.stopPropagation(),this.moveX<-80?this.$emit("changeSlide",{index:this.currentIndex,slide:-160}):this.$emit("changeSlide",{index:this.currentIndex}),this.currentIndex=-1)},mouseDown:function(t,e){0===this.info.state&&(t.preventDefault(),t.stopPropagation(),this.startX=t.clientX,this.currentIndex=e)},mouseMove:function(t){0===this.info.state&&(t.preventDefault(),t.stopPropagation(),this.moveX=t.clientX-this.startX,this.moveX>0&&(this.moveX=0),this.moveX<-160&&(this.moveX=-160),this.$emit("changeSlide",{index:this.currentIndex,slide:this.moveX}))},mouseUp:function(t){0===this.info.state&&(t.preventDefault(),t.stopPropagation(),this.moveX<-80?this.$emit("changeSlide",{index:this.currentIndex,slide:-160}):this.$emit("changeSlide",{index:this.currentIndex}),this.currentIndex=-1)}}};e.default=s},"62d6":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("2077")),o=s(i("86f7")),d=(s(i("d76c")),i("53d1")),l=s(i("93a6")),u=(s(i("91d2")),s(i("32a4")),s(i("cd5a")));function f(t,e){var i="undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=function(t,e){if(!t)return;if("string"===typeof t)return _(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);"Object"===i&&t.constructor&&(i=t.constructor.name);if("Map"===i||"Set"===i)return Array.from(t);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return _(t,e)}(t))||e&&t&&"number"===typeof t.length){i&&(t=i);var s=0,a=function(){};return{s:a,n:function(){return s>=t.length?{done:!0}:{done:!1,value:t[s++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,c=!0,n=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return c=t.done,t},e:function(t){n=!0,r=t},f:function(){try{c||null==i.return||i.return()}finally{if(n)throw r}}}}function _(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i2&&(e=i[0]+"."+i.slice(1).join("")),i.length>1&&(e=i[0]+"."+i[1].slice(0,2)),e.startsWith(".")&&(e="0"+e),this.$set(this.formData,"server_price",e)},addDetailItem:function(t){var e={title:t.detailItem,text:"",photo:""},i=this.detailList.find((function(e){return e.id==t.id}));i&&(i.choose=!0),this.formData.detail.push(e),this.isShow=!1},deleteDetailItem:function(t,e){var i=this.detailList.find((function(e){return e.detailItem==t.title}));i&&(i.choose=!1),this.formData.detail.splice(e,1)},deleteStep:function(t){this.formData.process.splice(t,1)},showDetailCont:function(){this.nowDetailList=this.detailList.filter((function(t){return!t.choose})),this.isShow=!0},addStep:function(){var t=this.formData.process.length+1,e={title:"\u7b2c"+t+"\u6b65",text:"",photo:""};this.formData.process.push(e)},deleteVideo:function(){this.formData.video=""},saveDraft:(0,d.debounce)((function(){var t=this;if(!this.isDraft){var e=this.formData,i=e.title,s=e.server_price,a=e.server_time,r=e.first_class_id,n=e.second_class_id,o=e.detail,d=e.process,l=e.video,u=e.photo,f={title:i,server_price:s,server_time:a,first_class_id:r,second_class_id:n,detail:o,process:d,video:l,photo:u},_=Object.values(f).every((function(t){return Array.isArray(t)?0===t.length:!t}));if(_)uni.showToast({title:"\u8bf7\u81f3\u5c11\u586b\u5199\u4e00\u9879\u5185\u5bb9",icon:"none"});else{this.formData.state=0;var p=null;p=this.formData.id?"/user/serverchange":"/user/serveradd",c.default.post(p,this.formData).then((function(e){if(1==e.state){t.isDraft=!0;var i=getCurrentPages(),s=i[i.length-2];uni.showToast({title:e.msg,icon:"success",duration:1e3}),setTimeout((function(){uni.navigateBack({delta:1,success:function(){s.$vm.currentTab=3,s.$vm.state=0,s.$vm.getServicesList()}})}),500)}else uni.showToast({title:e.msg,icon:"none"}),t.isDraft=!1}))}}}),500),submitForm:(0,d.debounce)((function(){var t=this;if(!this.isAdd)if(this.formData.title)if(this.formData.server_price)if(this.formData.first_class_id)if(!this.showCategory||this.formData.second_class_id)if(this.formData.server_time)if(this.formData.server_time<10)uni.showToast({title:"\u670d\u52a1\u65f6\u957f\u6700\u77ed\u4e3a10\u5206\u949f",icon:"none"});else if(this.formData.sj_see||1!=this.artisanType)if(this.formData.detail&&this.formData.detail.length>0){var e,i=f(this.formData.detail);try{for(i.s();!(e=i.n()).done;){var s=e.value;if(!s.title||!s.text)return void uni.showToast({title:"\u8bf7\u5b8c\u5584\u670d\u52a1\u7b80\u4ecb\u5185\u5bb9",icon:"none"})}}catch(err){i.e(err)}finally{i.f()}if(this.formData.process&&this.formData.process.length>0){var a,r=f(this.formData.process);try{for(r.s();!(a=r.n()).done;){var n=a.value;if(!n.text)return void uni.showToast({title:"\u8bf7\u5b8c\u5584\u670d\u52a1\u6d41\u7a0b\u5185\u5bb9",icon:"none"})}}catch(err){r.e(err)}finally{r.f()}if(this.formData.photo&&0!==this.formData.photo.length){2==this.artisanType&&delete this.formData.sj_see,delete this.formData.state;var o=null;o=this.formData.id?"/user/serverupdate":"/user/serveradd",c.default.post(o,this.formData).then((function(e){if(1==e.state){var i=getCurrentPages(),s=i[i.length-2];uni.showToast({title:e.msg,icon:"success",duration:600,mask:!0}),t.isAdd=!0,setTimeout((function(){uni.navigateBack({delta:1,success:function(){s.$vm.currentTab=1,s.$vm.state=1,s.$vm.getServicesList()}})}),500)}else uni.showToast({title:e.msg,icon:"none"}),t.isAdd=!1}))}else uni.showToast({title:"\u8bf7\u4e0a\u4f20\u670d\u52a1\u56fe\u7247",icon:"none"})}else uni.showToast({title:"\u8bf7\u6dfb\u52a0\u670d\u52a1\u6d41\u7a0b\u5185\u5bb9",icon:"none"})}else uni.showToast({title:"\u8bf7\u6dfb\u52a0\u670d\u52a1\u7b80\u4ecb\u5185\u5bb9",icon:"none"});else uni.showToast({title:"\u8bf7\u9009\u62e9\u662f\u5426\u5141\u8bb8\u5728\u95e8\u5e97\u7aef\u552e\u5356",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u670d\u52a1\u65f6\u957f",icon:"none"});else uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u5b50\u7c7b",icon:"none"});else uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u5206\u7c7b",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u670d\u52a1\u4ef7\u683c",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u670d\u52a1\u540d\u79f0",icon:"none"})}),500),openServiceTypePicker:function(){t("log","open"," at pages/shop/add-service.vue:766"),this.showServiceTypePicker=!0},openCategoryPicker:function(){this.formData.first_class_id?this.showCategoryPicker=!0:uni.showToast({title:"\u8bf7\u5148\u9009\u62e9\u670d\u52a1\u5206\u7c7b",icon:"none"})},handleServiceTypeConfirm:function(e){var i=this;t("log","e",e," at pages/shop/add-service.vue:786");var s=e.items[0];this.formData.first_class_id=s.id,this.serviceType=s.title,this.ratio=s.ratio;var a=s.id;c.default.post("/user/secondclass",{id:a}).then((function(t){0!=t.data.length&&t.data?(i.categoryAll=t.data,i.showCategory=!0):i.showCategory=!1}))},handleCategoryConfirm:function(t){var e=t.items[0];this.formData.second_class_id=e.id,this.category=e.title}}};e.default=p}).call(this,i("f3b9")["default"])},6303:function(t,e,i){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i={name:"OrderCard",props:{dataItem:{type:Object},typeId:{type:Number},showState:{type:Boolean,default:!0}},computed:{photo:function(){return JSON.parse(this.dataItem.photo)},useTime:function(){var e=this.dataItem.reserve_start_time,i=this.dataItem.reserve_end_time;return function(e,i){if(!e||!i)return"\u672a\u8bbe\u7f6e";var s=new Date(e.replace(/-/g,"/")),a=new Date(i.replace(/-/g,"/"));if(isNaN(s.getTime())||isNaN(a.getTime()))return t("error","\u65e0\u6548\u7684\u65f6\u95f4\u683c\u5f0f"," at pages/shop/manHour/components/orderCard.vue:93"),"\u65f6\u95f4\u683c\u5f0f\u9519\u8bef";var r=function(t){return t.getFullYear()+"\u5e74"},c=function(t){var e=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0");return"".concat(e,"\u6708").concat(i)},n=function(t){var e=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0");return"".concat(e,":").concat(i)},o=s.getFullYear()===a.getFullYear()&&s.getMonth()===a.getMonth()&&s.getDate()===a.getDate();return o?"".concat(r(s)).concat(c(s)," ").concat(n(s),"-").concat(n(a)):"".concat(r(s)).concat(c(s)," ").concat(n(s),"-").concat(r(a)).concat(c(a)," ").concat(n(a))}(e,i)},stateText:function(){return["","\u5f85\u652f\u4ed8","\u5f85\u63a5\u5355","\u5f85\u670d\u52a1","\u670d\u52a1\u4e2d","\u5df2\u5b8c\u6210","\u5df2\u8bc4\u4ef7","\u5df2\u53d6\u6d88"][this.dataItem.state]}},methods:{emitCancel:function(){this.$emit("cancel",this.dataItem)},emitAccept:function(){this.$emit("accept",this.dataItem)},emitStart:function(){this.$emit("start",this.dataItem)},emitDone:function(){this.$emit("done",this.dataItem)},goDetail:function(){this.$emit("goDetail",this.dataItem)},emitGoPay:function(){this.$emit("goPay",this.dataItem)},emitRefund:function(){this.$emit("goRefund",this.dataItem)},emitReOrder:function(){this.$emit("reOrder",this.dataItem)}}};e.default=i}).call(this,i("f3b9")["default"])},"635f":function(t,e,i){"use strict";i.r(e);var s=i("2ea2"),a=i("abbe");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"77361cab",null,!1,s["a"],void 0);e["default"]=n.exports},6367:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("951c")),r=s(i("8f59"));a.default.use(r.default);var c=new r.default.Store({state:{messageNum:0,sjServiceList:{},tabbarList:[],reservationTime:{},reservationSyr:{},reservationAddress:{},selectStore:{},wxShareType:0,searchCity:{center:"117.330043,38.372266",name:"\u9ec4\u9a85"},systemInfo:uni.getSystemInfoSync(),isLocation:!1,baseUrl:"",version:{VersionCode:"",DeviceBrand:"",DeviceType:""},sjInfo:{},workSpaceSJClassList:[],workHourSJClassList:[]},mutations:{setMessageNum:function(t,e){t.messageNum=e},clearServiceState:function(t){t.reservationTime={},t.reservationSyr={},t.reservationAddress={},t.selectStore={}},setTabbarList:function(t,e){t.tabbarList=e},setSjServiceList:function(t,e){t.sjServiceList=e},setSelectStore:function(t,e){t.selectStore=e},setreservationTime:function(t,e){t.reservationTime=e},setreservationSyr:function(t,e){t.reservationSyr=e,t.reservationTime={}},setreservationAddress:function(t,e){t.reservationAddress=e,t.reservationTime={},t.reservationSyr={}},setreservationAddress2:function(t,e){t.reservationAddress=e},setLocation:function(t,e){t.isLocation=e},unpdateCity:function(t,e){t.searchCity.center=e.center,t.searchCity.name=e.name},setBaseUrl:function(t,e){t.baseUrl=e},setVersion:function(t,e){t.version=e},setSjInfo:function(t,e){t.sjInfo=e},setWorkSpaceSJClassList:function(t,e){t.workSpaceSJClassList=e},setworkHourSJClassList:function(t,e){t.workHourSJClassList=e}},actions:{}}),n=c;e.default=n},6382:function(t,e,i){var s=i("6454");t.exports=function(t,e){if(t){if("string"===typeof t)return s(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?s(t,e):void 0}},t.exports.__esModule=!0,t.exports["default"]=t.exports},6401:function(t,e,i){"use strict";i.r(e);var s=i("03d4"),a=i("291d");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},6454:function(t,e){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i1&&void 0!==arguments[1]?arguments[1]:15;return+parseFloat(Number(t).toPrecision(e))}function n(t){var e=t.toString().split(/[eE]/),i=(e[0].split(".")[1]||"").length-+(e[1]||0);return i>0?i:0}function o(t){if(-1===t.toString().indexOf("e"))return Number(t.toString().replace(".",""));var e=n(t);return e>0?c(Number(t)*Math.pow(10,e)):Number(t)}function d(e){r&&(e>Number.MAX_SAFE_INTEGER||e2)return l(e,u);var s=e[0],a=e[1],r=o(s),c=o(a),f=n(s)+n(a),_=r*c;return d(_),_/Math.pow(10,f)}function f(){for(var t=arguments.length,e=new Array(t),i=0;i2)return l(e,f);var s=e[0],a=e[1],r=Math.pow(10,Math.max(n(s),n(a)));return(u(s,r)+u(a,r))/r}function _(){for(var t=arguments.length,e=new Array(t),i=0;i2)return l(e,_);var s=e[0],a=e[1],r=Math.pow(10,Math.max(n(s),n(a)));return(u(s,r)-u(a,r))/r}function p(){for(var t=arguments.length,e=new Array(t),i=0;i2)return l(e,p);var s=e[0],a=e[1],r=o(s),f=o(a);return d(r),d(f),u(r/f,c(Math.pow(10,n(a)-n(s))))}function v(t,e){var i=Math.pow(10,e),s=p(Math.round(Math.abs(u(t,i))),i);return t<0&&0!==s&&(s=u(s,-1)),s}function h(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];r=t}var m={times:u,plus:f,minus:_,divide:p,round:v,enableBoundaryChecking:h};e.default=m}).call(this,i("f3b9")["default"])},6529:function(t,e,i){"use strict";i.r(e);var s=i("d84c"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},6533:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("7ca3")),c=s(i("ee10")),n=s(i("16bb")),o=s(i("cd5a")),d=s(i("e26b")),l=s(i("32a4")),u=s(i("91d2"));function f(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function _(t){for(var e=1;e10?"rgba(255, 255, 255, ".concat(Math.min(.02*this.scrollTop,1),")"):"transparent"},stateItem:function(){var t=this,e=[{text:"\u5f85\u652f\u4ed8",icon:"/static/images/icons/pay.png",state:"1"},{text:"\u5f85\u63a5\u5355",icon:"/static/images/icons/pending.png",state:"2"},{text:0==this.identity?"\u5f85\u5f00\u59cb":"\u5f85\u670d\u52a1",icon:"/static/images/icons/pendingService.png",state:"3"},{text:0==this.identity?"\u8fdb\u884c\u4e2d":"\u670d\u52a1\u4e2d",icon:"/static/images/icons/pendingService.png",state:"4"},{text:"\u5df2\u5b8c\u6210",icon:"/static/images/icons/payOk.png",state:"5"},{text:"\u5f85\u8bc4\u4ef7",icon:"/static/images/icons/pending.png",state:"6"},{text:"\u5df2\u53d6\u6d88",icon:"/static/images/evaluate/cancel.png",state:"7"}],i=e.find((function(e){return e.state==t.orderInfo.state}))||{};return i},photo:function(){return JSON.parse(this.orderInfo.photo)}},methods:{messageRead:function(e){var i=this;n.default.post("/sj/push/messageRead",{id:e}).then((function(e){t("log","messageRead:",e," at pages/shop/SellerDetail.vue:320"),i.messageUpudateNum()}))},formatDateTime:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!t)return"";var i=new Date(t.replace(/-/g,"/")),s=i.getFullYear(),a=String(i.getMonth()+1).padStart(2,"0"),r=String(i.getDate()).padStart(2,"0"),c=String(i.getHours()).padStart(2,"0"),n=String(i.getMinutes()).padStart(2,"0"),o=String(i.getSeconds()).padStart(2,"0");return e?"".concat(s,"-").concat(a,"-").concat(r," ").concat(c,":").concat(n,":").concat(o):"".concat(s,"-").concat(a,"-").concat(r," ").concat(c,":").concat(n)},formatDateAndAddMinutes:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!t)return{original:"",afterAddingMinutes:""};var i=new Date(t.replace(/-/g,"/"));function s(t){var e=t.getFullYear(),i=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),a=String(t.getHours()).padStart(2,"0"),r=String(t.getMinutes()).padStart(2,"0");return"".concat(e,"-").concat(i,"-").concat(s," ").concat(a,":").concat(r,":").concat(seconds)}var a=s(i),r=new Date(i);r.setMinutes(r.getMinutes()+e);var c=s(r);return{original:a,afterAddingMinutes:c}},getOrderDetail:function(){var t=this;n.default.post(this.interfaceList[this.identity].details,{id:this.id}).then((function(e){var i;0==t.identity?t.orderInfo=e.data?_(_(_(_({},e.data.order),e.data.work_seat),e.data.user_syr),{},{work_hour_id:e.data.work_seat.id,order_id:e.data.order.id,user_sj_id:e.data.user_syr.id}):{}:1==t.identity&&(t.orderInfo=e.data?_(_(_(_({},e.data.order),e.data.work_hour),e.data.user_sj),{},{work_hour_id:e.data.work_hour.id,order_id:e.data.order.id,user_sj_id:e.data.user_sj.id}):{}),t.orderInfo.service_duration=t.calculateServiceDuration(),null===(i=t.orderInfo.second_class_title)||void 0===i||i.join("\u3001")}))},calculateServiceDuration:function(){if(!this.orderInfo.reserve_start_time||!this.orderInfo.reserve_end_time)return"--";try{var e=new Date(this.orderInfo.reserve_start_time.replace(/-/g,"/")),i=new Date(this.orderInfo.reserve_end_time.replace(/-/g,"/")),s=i.getTime()-e.getTime();if(s<=0)return"--";var a=Math.floor(s/6e4);return"".concat(a,"\u5206\u949f")}catch(r){return t("error","\u8ba1\u7b97\u670d\u52a1\u65f6\u957f\u5931\u8d25:",r," at pages/shop/SellerDetail.vue:430"),"--"}},cancelOrder:function(e,i){var s=this;e.preventDefault(),e.stopPropagation(),uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f\uff08\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u652f\u4ed8\u91d1\u989d\u5c06\u539f\u8def\u9000\u56de\uff09",success:function(e){if(e.confirm){var a;0==s.identity?a={orderNo:i.number,amount:i.pay_money,sjid:s.userInfo.id}:1==s.identity&&(a={orderNo:i.number,amount:i.pay_money,syrid:s.userInfo.id});var r="";if(1==i.pay_kind?r="":2==i.pay_kind?r=s.interfaceList[s.identity].weChatRefund:3==i.pay_kind&&(r=s.interfaceList[s.identity].aliRefund),s.clickType)return;s.clickType=!0,n.default.post(r,a).then((function(t){if(1==t.state||1==t.code||200==t.code){uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),s.getOrderDetail();var e=getCurrentPages(),i=e[e.length-2];i&&(i.$vm.getOrderNumber(),i.$vm.getOrderList())}else uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){return t("log",e," at pages/shop/SellerDetail.vue:494")})).finally((function(){s.clickType=!1}))}}})},confirmOrder:function(e,i){var s=this;t("log",i," at pages/shop/SellerDetail.vue:502"),e.preventDefault(),e.stopPropagation(),this.clickType||(this.clickType=!0,n.default.post(this.interfaceList[this.identity].sureOrder,{id:i.order_id}).then((function(t){uni.showToast({title:"\u5df2\u63a5\u5355",icon:"none"}),s.getOrderDetail();var e=getCurrentPages(),i=e[e.length-2];i&&(i.$vm.getOrderNumber(),i.$vm.getOrderList())})).finally((function(){s.clickType=!1})))},startOrder:function(t,e){t.preventDefault(),t.stopPropagation(),this.showInput=!0},onConfirm:function(t){var e=this;this.showInput=!1,this.clickType||(this.clickType=!0,n.default.post(this.interfaceList[this.identity].startOrder,{id:this.orderInfo.order_id,server_code:t}).then((function(t){if(200==t.code){uni.showToast({title:t.msg,icon:"none"}),e.getOrderDetail();var i=getCurrentPages(),s=i[i.length-2];s&&(s.$vm.getOrderNumber(),s.$vm.getOrderList())}e.handelOrder={}})).finally((function(){e.clickType=!1})))},endOrder:function(t,e){var i=this;t.preventDefault(),t.stopPropagation(),this.clickType||(this.clickType=!0,n.default.post(this.interfaceList[this.identity].endOrder,{id:e.order_id}).then((function(t){if(200==t.code){uni.showToast({title:t.msg,icon:"none"}),i.getOrderDetail();var e=getCurrentPages(),s=e[e.length-2];s&&(s.$vm.getOrderNumber(),s.$vm.getOrderList())}})).finally((function(){i.clickType=!1})))},showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))},contactService:function(t){var e=this;return(0,c.default)(a.default.mark((function i(){var s,r,c,n,o,d,f;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(s=uni.getSystemInfoSync(),"ios"!==s.platform){i.next=5;break}uni.makePhoneCall({phoneNumber:t}),i.next=27;break;case 5:return r="ios"===s.platform?"phone":"android.permission.CALL_PHONE",e.isShowPer=!0,c=!plus.storage.getItem("perm_".concat(r)),c&&(e.isShowPer=!0),i.next=11,u.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 11:if(n=i.sent,o=n.granted,!o){i.next=17;break}return e.isShowPer=!1,uni.makePhoneCall({phoneNumber:t}),i.abrupt("return");case 17:return e.isShowPer=!1,i.next=20,e.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 20:if(d=i.sent,d){i.next=23;break}return i.abrupt("return");case 23:return i.next=25,u.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 25:f=i.sent,f?uni.makePhoneCall({phoneNumber:t}):l.default.openAppSettings();case 27:case"end":return i.stop()}}),i)})))()},openMap:function(){o.default.goMap({latitude:parseFloat(this.reservation_address_arr.latitude),longitude:parseFloat(this.reservation_address_arr.longitude),name:this.reservation_address_arr.house_number,address:this.reservation_address_arr.server_address})}}};e.default=p}).call(this,i("f3b9")["default"])},6539:function(t,e,i){"use strict";i.r(e);var s=i("67d0"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},6549:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5de5\u65f6\u8be6\u60c5",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","container-header"),attrs:{_i:2}},[i("swiper",{staticClass:t._$s(3,"sc","container-header__swiper"),attrs:{_i:3}},t._l(t._$s(4,"f",{forItems:t.work_seat.photo}),(function(e,s,a,r){return i("swiper-item",{key:t._$s(4,"f",{forIndex:a,key:s}),staticClass:t._$s("4-"+r,"sc","container-header__swiper__item"),attrs:{_i:"4-"+r}},[i("image",{staticClass:t._$s("5-"+r,"sc","container-header__swiper__item__img"),attrs:{src:t._$s("5-"+r,"a-src",e),_i:"5-"+r}})])})),0)]),i("view",{staticClass:t._$s(6,"sc","container-content"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","container-content__card"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","container-content__card__title"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","container-content__card__title__text"),attrs:{_i:9}},[t._v(t._$s(9,"t0-0",t._s(t.work_seat.title)))]),i("view",{staticClass:t._$s(10,"sc","container-content__card__title__price"),attrs:{_i:10}},[t._v(t._$s(10,"t0-0",t._s(t.work_seat.price)))])])]),i("view",{staticClass:t._$s(11,"sc","container-content__card2"),attrs:{_i:11}},[i("view",{staticClass:t._$s(12,"sc","container-content__card2__syr"),attrs:{_i:12}},[i("image",{staticClass:t._$s(13,"sc","container-content__card2__syr__img"),attrs:{src:t._$s(13,"a-src",t.user_sj.head_photo),_i:13}}),i("view",{staticClass:t._$s(14,"sc","container-content__card2__syr__text"),attrs:{_i:14}},[t._v(t._$s(14,"t0-0",t._s(t.user_sj.name)))])]),i("view",{staticClass:t._$s(15,"sc","shop_address"),attrs:{_i:15},on:{click:function(e){return t.openMap()}}},[i("image",{staticClass:t._$s(16,"sc","shop_icon"),attrs:{_i:16}}),i("text",[t._v(t._$s(17,"t0-0",t._s(t.user_sj.dependency))+t._$s(17,"t0-1",t._s(t.user_sj.address)))])]),i("view",{staticClass:t._$s(18,"sc","shop_address"),attrs:{_i:18},on:{click:function(e){return t.contactService(t.user_sj.phone)}}},[i("image",{staticClass:t._$s(19,"sc","shop_icon"),attrs:{_i:19}}),i("text",[t._v(t._$s(20,"t0-0",t._s(t.user_sj.phone)))])])]),i("view",{staticClass:t._$s(21,"sc","container-content__card2"),attrs:{_i:21}},[i("view",{staticClass:t._$s(22,"sc","container-content__card2__Serve"),attrs:{_i:22}},[i("view",{staticClass:t._$s(23,"sc","container-content__card2__Serve__title"),attrs:{_i:23}}),i("view",{staticClass:t._$s(24,"sc","container-content__card2__Serve__card"),attrs:{_i:24}},[i("view",{staticClass:t._$s(25,"sc","container-content__card2__Serve__card__content"),attrs:{_i:25}},[t._v(t._$s(25,"t0-0",t._s(t.work_seat.first_class_title))+t._$s(25,"t0-1",t._s(t.work_seat.second_class_title)))]),i("view",{staticClass:t._$s(26,"sc","container-content__card2__Serve__card__remark"),attrs:{_i:26}})])])]),i("view",{staticClass:t._$s(27,"sc","container-content__card2"),attrs:{_i:27}},[i("view",{staticClass:t._$s(28,"sc","container-content__card2__Serve"),attrs:{_i:28}},[i("view",{staticClass:t._$s(29,"sc","container-content__card2__Serve__title"),attrs:{_i:29}}),i("view",{staticClass:t._$s(30,"sc","container-content__card2__Serve__card"),attrs:{_i:30}},[i("view",{staticClass:t._$s(31,"sc","container-content__card2__Serve__card__content"),attrs:{_i:31}},[t._v(t._$s(31,"t0-0",t._s(t.work_seat.detail)))])])])])]),i("view",{staticClass:t._$s(32,"sc","container-footer"),attrs:{_i:32}},[i("view",{staticClass:t._$s(33,"sc","container-footer__btn"),attrs:{_i:33},on:{click:t.goOrder}})]),i("view")],1)},r=[]},"655b":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("91d2")),n=s(i("32a4")),o={data:function(){return{isShowPer:!1,phone:"19950079687"}},onLoad:function(t){this.phone=t.phone||"19950079687"},methods:{callPhone:function(){var t=this;return(0,r.default)(a.default.mark((function e(){var i,s,r,o,d;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(i=uni.getSystemInfoSync(),"ios"!==i.platform){e.next=5;break}uni.makePhoneCall({phoneNumber:t.phone}),e.next=25;break;case 5:return"android.permission.CALL_PHONE",t.isShowPer=!0,e.next=9,c.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5ba2\u670d");case 9:if(s=e.sent,r=s.granted,!r){e.next=15;break}return t.isShowPer=!1,uni.makePhoneCall({phoneNumber:t.phone}),e.abrupt("return");case 15:return t.isShowPer=!1,e.next=18,t.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5ba2\u670d");case 18:if(o=e.sent,o){e.next=21;break}return e.abrupt("return");case 21:return e.next=23,c.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5ba2\u670d");case 23:d=e.sent,d?uni.makePhoneCall({phoneNumber:t.phone}):n.default.openAppSettings();case 25:case"end":return e.stop()}}),e)})))()},showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))}}};e.default=o},6573:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","contact-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u8054\u7cfb\u5ba2\u670d","show-back":!0,"title-color":"#000","background-color":"transparent",_i:1}}),i("view",{staticClass:t._$s(2,"sc","contact-cont"),attrs:{_i:2}},[i("image",{staticClass:t._$s(3,"sc","contact-icon"),attrs:{_i:3}}),i("text",{staticClass:t._$s(4,"sc","contact-phone"),attrs:{_i:4}},[t._v(t._$s(4,"t0-0",t._s(t.phone)))]),i("text",{staticClass:t._$s(5,"sc","contact-time"),attrs:{_i:5}})]),i("view",{staticClass:t._$s(6,"sc","btn-box"),attrs:{_i:6},on:{click:t.callPhone}},[i("text",{staticClass:t._$s(7,"sc","btn-text"),attrs:{_i:7}})]),i("view",{staticClass:t._$s(8,"sc","permission"),class:t._$s(8,"c",{transform:t.isShowPer}),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","per-tit"),attrs:{_i:9}}),i("view",{staticClass:t._$s(10,"sc","per-cont"),attrs:{_i:10}})])],1)},r=[]},"65f8":function(t,e,i){"use strict";i.r(e);var s=i("9de9"),a=i("84e6");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"662c":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n={data:function(){return{userInfo:{},state:[3,4,5,6,7],orderCount:0,servicesCount:0,marketingTypeList:[{id:0,imgUrl:"/static/images/tab/promotion_order.png",pathUrl:"/pages/promotion/promotion"}],selfOperatedList:[{id:0,imgUrl:"/static/images/tab/SelfOperatedServe.png",pathUrl:"/pages/selfOperated/list"},{id:1,imgUrl:"/static/images/tab/SelfOperatedOrder.png",pathUrl:"/pages/syr/userorders?serviceType=2"}],tradeList:[{id:0,title:"\u670d\u52a1\u7ba1\u7406",des:"\u670d\u52a1\u7684\u53d1\u5e03\u4e0e\u7ba1\u7406",imgUrl:"/static/images/tab/service_gl.png",pathUrl:"/pages/artisan/service-list"},{id:1,title:"\u5de5\u65f6\u7ba1\u7406",des:"\u5de5\u65f6\u7684\u53d1\u5e03\u4e0e\u7ba1\u7406",imgUrl:"/static/images/tab/time_gl.png",pathUrl:"/pages/syr/manHour/list"},{id:3,title:"\u8d2d\u4e70\u5de5\u4f4d",des:"\u53ef\u8d2d\u4e70\u5546\u5bb6\u7684\u5de5\u4f4d",imgUrl:"/static/images/tab/buy_station.png",pathUrl:"/pages/syr/workstation/buyWorkstation"}],orderTypeList:[{id:0,title:"\u7528\u6237\u8ba2\u5355",des:"\u5356\u7ed9\u7528\u6237\u7684\u670d\u52a1\u8ba2\u5355",imgUrl:"/static/images/tab/user_order.png",pathUrl:"/pages/syr/userorders"},{id:1,title:"\u5546\u6237\u8ba2\u5355",des:"\u5356\u7ed9\u5546\u5bb6\u7684\u670d\u52a1\u8ba2\u5355",imgUrl:"/static/images/tab/shop_order.png",pathUrl:"/pages/syr/shoporders"},{id:2,title:"\u5de5\u65f6\u8ba2\u5355",des:"\u6211\u552e\u5356\u7684\u5de5\u65f6\u8ba2\u5355",imgUrl:"/static/images/tab/job_time_order.png",pathUrl:"/pages/syr/manHour/saleList"},{id:3,title:"\u5de5\u4f4d\u8ba2\u5355",des:"\u6211\u4e70\u7684\u5546\u5bb6\u5de5\u4f4d\u8ba2\u5355",imgUrl:"/static/images/tab/job_position_order.png",pathUrl:"/pages/syr/workstation/buyList"}]}},created:function(){var t=this;return(0,r.default)(a.default.mark((function e(){var i,s;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,c.default.post("/user/getuser",{type:2});case 2:i=e.sent,s=i.data,t.userInfo=s;case 5:case"end":return e.stop()}}),e)})))()},methods:{goArtisanProfile:function(){uni.navigateTo({url:"/pages/artisan/profile"})},goAgreement:function(){uni.navigateTo({url:"/pages/selfOperated/agreement?title=\u5e73\u53f0\u81ea\u8425\u9879\u76ee\u4ecb\u7ecd&type=18"})},navigateTo:function(t){uni.navigateTo({url:t})}}};e.default=n},"666e":function(t,e,i){"use strict";i.r(e);var s=i("3979"),a=i("3650");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"91327f22",null,!1,s["a"],void 0);e["default"]=n.exports},6677:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("7ca3")),c=s(i("ee10")),n=s(i("16bb")),o=s(i("cd5a")),d=s(i("e26b")),l=s(i("32a4")),u=s(i("91d2"));function f(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function _(t){for(var e=1;e10?"rgba(255, 255, 255, ".concat(.02*this.scrollTop,");"):"transparent"},stateItem:function(){var t=this,e=[{text:"\u5f85\u652f\u4ed8",icon:"/static/images/icons/pay.png",state:"1"},{text:"\u5f85\u63a5\u5355",icon:"/static/images/icons/pending.png",state:"2"},{text:"\u5f85\u670d\u52a1",icon:"/static/images/icons/pendingService.png",state:"3"},{text:"\u670d\u52a1\u4e2d",icon:"/static/images/icons/pendingService.png",state:"4"},{text:"\u5df2\u5b8c\u6210",icon:"/static/images/icons/payOk.png",state:"5"},{text:"\u5f85\u8bc4\u4ef7",icon:"/static/images/icons/pending.png",state:"6"},{text:"\u5df2\u53d6\u6d88",icon:"/static/images/evaluate/cancel.png",state:"7"}].find((function(e){return e.state==t.orderInfo.state}))||{};return e},photo:function(){return JSON.parse(this.orderInfo.photo)}},methods:{formatDateTime:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!t)return"";var i=new Date(t.replace(/-/g,"/")),s=i.getFullYear(),a=String(i.getMonth()+1).padStart(2,"0"),r=String(i.getDate()).padStart(2,"0"),c=String(i.getHours()).padStart(2,"0"),n=String(i.getMinutes()).padStart(2,"0"),o=String(i.getSeconds()).padStart(2,"0");return e?"".concat(s,"-").concat(a,"-").concat(r," ").concat(c,":").concat(n,":").concat(o):"".concat(s,"-").concat(a,"-").concat(r," ").concat(c,":").concat(n)},formatDateAndAddMinutes:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!t)return{original:"",afterAddingMinutes:""};var i=new Date(t.replace(/-/g,"/"));function s(t){var e=t.getFullYear(),i=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),a=String(t.getHours()).padStart(2,"0"),r=String(t.getMinutes()).padStart(2,"0");return"".concat(e,"\u5e74").concat(i,"\u6708").concat(s,"\u65e5 ").concat(a,":").concat(r)}var a=s(i),r=new Date(i);r.setMinutes(r.getMinutes()+e);var c=s(r);return{original:a,afterAddingMinutes:c}},getOrderDetail:function(){var e=this;n.default.post(this.interfaceList[this.identity].details,{id:this.id}).then((function(i){0==e.identity?e.orderInfo=i.data?_(_(_(_({},i.data.order),i.data.work_hour),i.data.user_syr),{},{work_hour_id:i.data.work_hour.id,order_id:i.data.order.id,user_sj_id:i.data.user_syr.id}):{}:1==e.identity&&(e.orderInfo=i.data?_(_(_(_({},i.data.order),i.data.work_seat),i.data.user_sj),{},{work_hour_id:i.data.work_seat.id,order_id:i.data.order.id,user_sj_id:i.data.user_sj.id}):{}),e.orderInfo.service_duration=e.calculateServiceDuration(),t("log",22222,e.orderInfo," at pages/shop/manHourDetail.vue:417")}))},calculateServiceDuration:function(){if(!this.orderInfo.reserve_start_time||!this.orderInfo.reserve_end_time)return"--";try{var e=new Date(this.orderInfo.reserve_start_time.replace(/-/g,"/")),i=new Date(this.orderInfo.reserve_end_time.replace(/-/g,"/")),s=i.getTime()-e.getTime();if(s<=0)return"--";var a=Math.floor(s/6e4);return"".concat(a,"\u5206\u949f")}catch(r){return t("error","\u8ba1\u7b97\u670d\u52a1\u65f6\u957f\u5931\u8d25:",r," at pages/shop/manHourDetail.vue:446"),"--"}},refund:function(e,i){var s=this;e.preventDefault(),e.stopPropagation(),uni.showModal({title:"\u7533\u8bf7\u9000\u6b3e",content:"\u786e\u5b9a\u8981\u7533\u8bf7\u9000\u6b3e\u5417\uff1f\uff08\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u652f\u4ed8\u91d1\u989d\u5c06\u539f\u8def\u9000\u56de\uff09",success:function(e){if(e.confirm){var a;0==s.identity?a={orderNo:i.number,amount:i.pay_money,sjid:s.userInfo.id}:1==s.identity&&(a={orderNo:i.number,amount:i.pay_money,syrid:s.userInfo.id});var r="";1==i.pay_kind?r="":2==i.pay_kind?r=s.interfaceList[s.identity].weChatRefund:3==i.pay_kind&&(r=s.interfaceList[s.identity].aliRefund),n.default.post(r,a).then((function(t){if(1==t.code||200==t.code){uni.showToast({title:"\u7533\u8bf7\u9000\u6b3e\uff01",icon:"none"}),s.getOrderDetail();var e=getCurrentPages(),i=e[e.length-2];i&&(i.$vm.getOrderNumber(),i.$vm.getOrderList())}else uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){return t("log",e," at pages/shop/manHourDetail.vue:506")}))}}})},cancelOrder:function(e,i){var s=this;e.preventDefault(),e.stopPropagation(),uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f",success:function(e){if(e.confirm){var a={order_no:i.number},r=s.interfaceList[s.identity].cancel;n.default.post(r,a).then((function(t){if(200==t.code||1==t.code){uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),s.getOrderDetail();var e=getCurrentPages(),i=e[e.length-2];i&&(i.$vm.getOrderNumber(),i.$vm.getOrderList())}else uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){return t("log",e," at pages/shop/manHourDetail.vue:548")}))}}})},goPay:function(t,e){uni.redirectTo({url:"/pages/shop/pay?id=".concat(e.id,"&money=").concat(e.order_money,"&title=").concat(e.title,"&number=").concat(e.number,"&identity=").concat(this.identity)})},showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))},contactService:function(t){var e=this;return(0,c.default)(a.default.mark((function i(){var s,r,c,n,o,d,f;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(s=uni.getSystemInfoSync(),"ios"!==s.platform){i.next=5;break}uni.makePhoneCall({phoneNumber:t}),i.next=27;break;case 5:return r="ios"===s.platform?"phone":"android.permission.CALL_PHONE",e.isShowPer=!0,c=!plus.storage.getItem("perm_".concat(r)),c&&(e.isShowPer=!0),i.next=11,u.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 11:if(n=i.sent,o=n.granted,!o){i.next=17;break}return e.isShowPer=!1,uni.makePhoneCall({phoneNumber:t}),i.abrupt("return");case 17:return e.isShowPer=!1,i.next=20,e.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 20:if(d=i.sent,d){i.next=23;break}return i.abrupt("return");case 23:return i.next=25,u.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 25:f=i.sent,f?uni.makePhoneCall({phoneNumber:t}):l.default.openAppSettings();case 27:case"end":return i.stop()}}),i)})))()},openMap:function(){o.default.goMap({latitude:parseFloat(this.orderInfo.latitude),longitude:parseFloat(this.orderInfo.longitude),name:this.orderInfo.name,address:this.orderInfo.address})}}};e.default=p}).call(this,i("f3b9")["default"])},"668a":function(t){t.exports=JSON.parse('[{"province":"\u5317\u4eac\u5e02","code":"110000","citys":[{"city":"\u5317\u4eac\u5e02","code":"110100000000","areas":[{"area":"\u4e1c\u57ce\u533a","code":"110101000000"},{"area":"\u897f\u57ce\u533a","code":"110102000000"},{"area":"\u671d\u9633\u533a","code":"110105000000"},{"area":"\u4e30\u53f0\u533a","code":"110106000000"},{"area":"\u77f3\u666f\u5c71\u533a","code":"110107000000"},{"area":"\u6d77\u6dc0\u533a","code":"110108000000"},{"area":"\u95e8\u5934\u6c9f\u533a","code":"110109000000"},{"area":"\u623f\u5c71\u533a","code":"110111000000"},{"area":"\u901a\u5dde\u533a","code":"110112000000"},{"area":"\u987a\u4e49\u533a","code":"110113000000"},{"area":"\u660c\u5e73\u533a","code":"110114000000"},{"area":"\u5927\u5174\u533a","code":"110115000000"},{"area":"\u6000\u67d4\u533a","code":"110116000000"},{"area":"\u5e73\u8c37\u533a","code":"110117000000"},{"area":"\u5bc6\u4e91\u533a","code":"110118000000"},{"area":"\u5ef6\u5e86\u533a","code":"110119000000"}]}]},{"province":"\u5929\u6d25\u5e02","code":"120000","citys":[{"city":"\u5929\u6d25\u5e02","code":"120100000000","areas":[{"area":"\u548c\u5e73\u533a","code":"120101000000"},{"area":"\u6cb3\u4e1c\u533a","code":"120102000000"},{"area":"\u6cb3\u897f\u533a","code":"120103000000"},{"area":"\u5357\u5f00\u533a","code":"120104000000"},{"area":"\u6cb3\u5317\u533a","code":"120105000000"},{"area":"\u7ea2\u6865\u533a","code":"120106000000"},{"area":"\u4e1c\u4e3d\u533a","code":"120110000000"},{"area":"\u897f\u9752\u533a","code":"120111000000"},{"area":"\u6d25\u5357\u533a","code":"120112000000"},{"area":"\u5317\u8fb0\u533a","code":"120113000000"},{"area":"\u6b66\u6e05\u533a","code":"120114000000"},{"area":"\u5b9d\u577b\u533a","code":"120115000000"},{"area":"\u6ee8\u6d77\u65b0\u533a","code":"120116000000"},{"area":"\u5b81\u6cb3\u533a","code":"120117000000"},{"area":"\u9759\u6d77\u533a","code":"120118000000"},{"area":"\u84df\u5dde\u533a","code":"120119000000"}]}]},{"province":"\u6cb3\u5317\u7701","code":"130000","citys":[{"city":"\u77f3\u5bb6\u5e84\u5e02","code":"130100000000","areas":[{"area":"\u957f\u5b89\u533a","code":"130102000000"},{"area":"\u6865\u897f\u533a","code":"130104000000"},{"area":"\u65b0\u534e\u533a","code":"130105000000"},{"area":"\u4e95\u9649\u77ff\u533a","code":"130107000000"},{"area":"\u88d5\u534e\u533a","code":"130108000000"},{"area":"\u85c1\u57ce\u533a","code":"130109000000"},{"area":"\u9e7f\u6cc9\u533a","code":"130110000000"},{"area":"\u683e\u57ce\u533a","code":"130111000000"},{"area":"\u4e95\u9649\u53bf","code":"130121000000"},{"area":"\u6b63\u5b9a\u53bf","code":"130123000000"},{"area":"\u884c\u5510\u53bf","code":"130125000000"},{"area":"\u7075\u5bff\u53bf","code":"130126000000"},{"area":"\u9ad8\u9091\u53bf","code":"130127000000"},{"area":"\u6df1\u6cfd\u53bf","code":"130128000000"},{"area":"\u8d5e\u7687\u53bf","code":"130129000000"},{"area":"\u65e0\u6781\u53bf","code":"130130000000"},{"area":"\u5e73\u5c71\u53bf","code":"130131000000"},{"area":"\u5143\u6c0f\u53bf","code":"130132000000"},{"area":"\u8d75\u53bf","code":"130133000000"},{"area":"\u77f3\u5bb6\u5e84\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"130171000000"},{"area":"\u77f3\u5bb6\u5e84\u5faa\u73af\u5316\u5de5\u56ed\u533a","code":"130172000000"},{"area":"\u8f9b\u96c6\u5e02","code":"130181000000"},{"area":"\u664b\u5dde\u5e02","code":"130183000000"},{"area":"\u65b0\u4e50\u5e02","code":"130184000000"}]},{"city":"\u5510\u5c71\u5e02","code":"130200000000","areas":[{"area":"\u8def\u5357\u533a","code":"130202000000"},{"area":"\u8def\u5317\u533a","code":"130203000000"},{"area":"\u53e4\u51b6\u533a","code":"130204000000"},{"area":"\u5f00\u5e73\u533a","code":"130205000000"},{"area":"\u4e30\u5357\u533a","code":"130207000000"},{"area":"\u4e30\u6da6\u533a","code":"130208000000"},{"area":"\u66f9\u5983\u7538\u533a","code":"130209000000"},{"area":"\u6ee6\u5357\u53bf","code":"130224000000"},{"area":"\u4e50\u4ead\u53bf","code":"130225000000"},{"area":"\u8fc1\u897f\u53bf","code":"130227000000"},{"area":"\u7389\u7530\u53bf","code":"130229000000"},{"area":"\u6cb3\u5317\u5510\u5c71\u82a6\u53f0\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"130271000000"},{"area":"\u5510\u5c71\u5e02\u6c49\u6cbd\u7ba1\u7406\u533a","code":"130272000000"},{"area":"\u5510\u5c71\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"130273000000"},{"area":"\u6cb3\u5317\u5510\u5c71\u6d77\u6e2f\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"130274000000"},{"area":"\u9075\u5316\u5e02","code":"130281000000"},{"area":"\u8fc1\u5b89\u5e02","code":"130283000000"},{"area":"\u6ee6\u5dde\u5e02","code":"130284000000"}]},{"city":"\u79e6\u7687\u5c9b\u5e02","code":"130300000000","areas":[{"area":"\u6d77\u6e2f\u533a","code":"130302000000"},{"area":"\u5c71\u6d77\u5173\u533a","code":"130303000000"},{"area":"\u5317\u6234\u6cb3\u533a","code":"130304000000"},{"area":"\u629a\u5b81\u533a","code":"130306000000"},{"area":"\u9752\u9f99\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"130321000000"},{"area":"\u660c\u9ece\u53bf","code":"130322000000"},{"area":"\u5362\u9f99\u53bf","code":"130324000000"},{"area":"\u79e6\u7687\u5c9b\u5e02\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"130371000000"},{"area":"\u5317\u6234\u6cb3\u65b0\u533a","code":"130372000000"}]},{"city":"\u90af\u90f8\u5e02","code":"130400000000","areas":[{"area":"\u90af\u5c71\u533a","code":"130402000000"},{"area":"\u4e1b\u53f0\u533a","code":"130403000000"},{"area":"\u590d\u5174\u533a","code":"130404000000"},{"area":"\u5cf0\u5cf0\u77ff\u533a","code":"130406000000"},{"area":"\u80a5\u4e61\u533a","code":"130407000000"},{"area":"\u6c38\u5e74\u533a","code":"130408000000"},{"area":"\u4e34\u6f33\u53bf","code":"130423000000"},{"area":"\u6210\u5b89\u53bf","code":"130424000000"},{"area":"\u5927\u540d\u53bf","code":"130425000000"},{"area":"\u6d89\u53bf","code":"130426000000"},{"area":"\u78c1\u53bf","code":"130427000000"},{"area":"\u90b1\u53bf","code":"130430000000"},{"area":"\u9e21\u6cfd\u53bf","code":"130431000000"},{"area":"\u5e7f\u5e73\u53bf","code":"130432000000"},{"area":"\u9986\u9676\u53bf","code":"130433000000"},{"area":"\u9b4f\u53bf","code":"130434000000"},{"area":"\u66f2\u5468\u53bf","code":"130435000000"},{"area":"\u90af\u90f8\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"130471000000"},{"area":"\u90af\u90f8\u5180\u5357\u65b0\u533a","code":"130473000000"},{"area":"\u6b66\u5b89\u5e02","code":"130481000000"}]},{"city":"\u90a2\u53f0\u5e02","code":"130500000000","areas":[{"area":"\u8944\u90fd\u533a","code":"130502000000"},{"area":"\u4fe1\u90fd\u533a","code":"130503000000"},{"area":"\u4efb\u6cfd\u533a","code":"130505000000"},{"area":"\u5357\u548c\u533a","code":"130506000000"},{"area":"\u4e34\u57ce\u53bf","code":"130522000000"},{"area":"\u5185\u4e18\u53bf","code":"130523000000"},{"area":"\u67cf\u4e61\u53bf","code":"130524000000"},{"area":"\u9686\u5c27\u53bf","code":"130525000000"},{"area":"\u5b81\u664b\u53bf","code":"130528000000"},{"area":"\u5de8\u9e7f\u53bf","code":"130529000000"},{"area":"\u65b0\u6cb3\u53bf","code":"130530000000"},{"area":"\u5e7f\u5b97\u53bf","code":"130531000000"},{"area":"\u5e73\u4e61\u53bf","code":"130532000000"},{"area":"\u5a01\u53bf","code":"130533000000"},{"area":"\u6e05\u6cb3\u53bf","code":"130534000000"},{"area":"\u4e34\u897f\u53bf","code":"130535000000"},{"area":"\u6cb3\u5317\u90a2\u53f0\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"130571000000"},{"area":"\u5357\u5bab\u5e02","code":"130581000000"},{"area":"\u6c99\u6cb3\u5e02","code":"130582000000"}]},{"city":"\u4fdd\u5b9a\u5e02","code":"130600000000","areas":[{"area":"\u7ade\u79c0\u533a","code":"130602000000"},{"area":"\u83b2\u6c60\u533a","code":"130606000000"},{"area":"\u6ee1\u57ce\u533a","code":"130607000000"},{"area":"\u6e05\u82d1\u533a","code":"130608000000"},{"area":"\u5f90\u6c34\u533a","code":"130609000000"},{"area":"\u6d9e\u6c34\u53bf","code":"130623000000"},{"area":"\u961c\u5e73\u53bf","code":"130624000000"},{"area":"\u5b9a\u5174\u53bf","code":"130626000000"},{"area":"\u5510\u53bf","code":"130627000000"},{"area":"\u9ad8\u9633\u53bf","code":"130628000000"},{"area":"\u5bb9\u57ce\u53bf","code":"130629000000"},{"area":"\u6d9e\u6e90\u53bf","code":"130630000000"},{"area":"\u671b\u90fd\u53bf","code":"130631000000"},{"area":"\u5b89\u65b0\u53bf","code":"130632000000"},{"area":"\u6613\u53bf","code":"130633000000"},{"area":"\u66f2\u9633\u53bf","code":"130634000000"},{"area":"\u8821\u53bf","code":"130635000000"},{"area":"\u987a\u5e73\u53bf","code":"130636000000"},{"area":"\u535a\u91ce\u53bf","code":"130637000000"},{"area":"\u96c4\u53bf","code":"130638000000"},{"area":"\u4fdd\u5b9a\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"130671000000"},{"area":"\u4fdd\u5b9a\u767d\u6c9f\u65b0\u57ce","code":"130672000000"},{"area":"\u6dbf\u5dde\u5e02","code":"130681000000"},{"area":"\u5b9a\u5dde\u5e02","code":"130682000000"},{"area":"\u5b89\u56fd\u5e02","code":"130683000000"},{"area":"\u9ad8\u7891\u5e97\u5e02","code":"130684000000"}]},{"city":"\u5f20\u5bb6\u53e3\u5e02","code":"130700000000","areas":[{"area":"\u6865\u4e1c\u533a","code":"130702000000"},{"area":"\u6865\u897f\u533a","code":"130703000000"},{"area":"\u5ba3\u5316\u533a","code":"130705000000"},{"area":"\u4e0b\u82b1\u56ed\u533a","code":"130706000000"},{"area":"\u4e07\u5168\u533a","code":"130708000000"},{"area":"\u5d07\u793c\u533a","code":"130709000000"},{"area":"\u5f20\u5317\u53bf","code":"130722000000"},{"area":"\u5eb7\u4fdd\u53bf","code":"130723000000"},{"area":"\u6cbd\u6e90\u53bf","code":"130724000000"},{"area":"\u5c1a\u4e49\u53bf","code":"130725000000"},{"area":"\u851a\u53bf","code":"130726000000"},{"area":"\u9633\u539f\u53bf","code":"130727000000"},{"area":"\u6000\u5b89\u53bf","code":"130728000000"},{"area":"\u6000\u6765\u53bf","code":"130730000000"},{"area":"\u6dbf\u9e7f\u53bf","code":"130731000000"},{"area":"\u8d64\u57ce\u53bf","code":"130732000000"},{"area":"\u5f20\u5bb6\u53e3\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"130771000000"},{"area":"\u5f20\u5bb6\u53e3\u5e02\u5bdf\u5317\u7ba1\u7406\u533a","code":"130772000000"},{"area":"\u5f20\u5bb6\u53e3\u5e02\u585e\u5317\u7ba1\u7406\u533a","code":"130773000000"}]},{"city":"\u627f\u5fb7\u5e02","code":"130800000000","areas":[{"area":"\u53cc\u6865\u533a","code":"130802000000"},{"area":"\u53cc\u6ee6\u533a","code":"130803000000"},{"area":"\u9e70\u624b\u8425\u5b50\u77ff\u533a","code":"130804000000"},{"area":"\u627f\u5fb7\u53bf","code":"130821000000"},{"area":"\u5174\u9686\u53bf","code":"130822000000"},{"area":"\u6ee6\u5e73\u53bf","code":"130824000000"},{"area":"\u9686\u5316\u53bf","code":"130825000000"},{"area":"\u4e30\u5b81\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"130826000000"},{"area":"\u5bbd\u57ce\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"130827000000"},{"area":"\u56f4\u573a\u6ee1\u65cf\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","code":"130828000000"},{"area":"\u627f\u5fb7\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"130871000000"},{"area":"\u5e73\u6cc9\u5e02","code":"130881000000"}]},{"city":"\u6ca7\u5dde\u5e02","code":"130900000000","areas":[{"area":"\u65b0\u534e\u533a","code":"130902000000"},{"area":"\u8fd0\u6cb3\u533a","code":"130903000000"},{"area":"\u6ca7\u53bf","code":"130921000000"},{"area":"\u9752\u53bf","code":"130922000000"},{"area":"\u4e1c\u5149\u53bf","code":"130923000000"},{"area":"\u6d77\u5174\u53bf","code":"130924000000"},{"area":"\u76d0\u5c71\u53bf","code":"130925000000"},{"area":"\u8083\u5b81\u53bf","code":"130926000000"},{"area":"\u5357\u76ae\u53bf","code":"130927000000"},{"area":"\u5434\u6865\u53bf","code":"130928000000"},{"area":"\u732e\u53bf","code":"130929000000"},{"area":"\u5b5f\u6751\u56de\u65cf\u81ea\u6cbb\u53bf","code":"130930000000"},{"area":"\u6cb3\u5317\u6ca7\u5dde\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"130971000000"},{"area":"\u6ca7\u5dde\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"130972000000"},{"area":"\u6ca7\u5dde\u6e24\u6d77\u65b0\u533a","code":"130973000000"},{"area":"\u6cca\u5934\u5e02","code":"130981000000"},{"area":"\u4efb\u4e18\u5e02","code":"130982000000"},{"area":"\u9ec4\u9a85\u5e02","code":"130983000000"},{"area":"\u6cb3\u95f4\u5e02","code":"130984000000"}]},{"city":"\u5eca\u574a\u5e02","code":"131000000000","areas":[{"area":"\u5b89\u6b21\u533a","code":"131002000000"},{"area":"\u5e7f\u9633\u533a","code":"131003000000"},{"area":"\u56fa\u5b89\u53bf","code":"131022000000"},{"area":"\u6c38\u6e05\u53bf","code":"131023000000"},{"area":"\u9999\u6cb3\u53bf","code":"131024000000"},{"area":"\u5927\u57ce\u53bf","code":"131025000000"},{"area":"\u6587\u5b89\u53bf","code":"131026000000"},{"area":"\u5927\u5382\u56de\u65cf\u81ea\u6cbb\u53bf","code":"131028000000"},{"area":"\u5eca\u574a\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"131071000000"},{"area":"\u9738\u5dde\u5e02","code":"131081000000"},{"area":"\u4e09\u6cb3\u5e02","code":"131082000000"}]},{"city":"\u8861\u6c34\u5e02","code":"131100000000","areas":[{"area":"\u6843\u57ce\u533a","code":"131102000000"},{"area":"\u5180\u5dde\u533a","code":"131103000000"},{"area":"\u67a3\u5f3a\u53bf","code":"131121000000"},{"area":"\u6b66\u9091\u53bf","code":"131122000000"},{"area":"\u6b66\u5f3a\u53bf","code":"131123000000"},{"area":"\u9976\u9633\u53bf","code":"131124000000"},{"area":"\u5b89\u5e73\u53bf","code":"131125000000"},{"area":"\u6545\u57ce\u53bf","code":"131126000000"},{"area":"\u666f\u53bf","code":"131127000000"},{"area":"\u961c\u57ce\u53bf","code":"131128000000"},{"area":"\u6cb3\u5317\u8861\u6c34\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"131171000000"},{"area":"\u8861\u6c34\u6ee8\u6e56\u65b0\u533a","code":"131172000000"},{"area":"\u6df1\u5dde\u5e02","code":"131182000000"}]},{"city":"\u96c4\u5b89\u65b0\u533a","code":"133100000000","areas":[{"area":"\u96c4\u5b89\u65b0\u533a","code":"133100000000"}]}]},{"province":"\u5c71\u897f\u7701","code":"140000","citys":[{"city":"\u592a\u539f\u5e02","code":"140100000000","areas":[{"area":"\u5c0f\u5e97\u533a","code":"140105000000"},{"area":"\u8fce\u6cfd\u533a","code":"140106000000"},{"area":"\u674f\u82b1\u5cad\u533a","code":"140107000000"},{"area":"\u5c16\u8349\u576a\u533a","code":"140108000000"},{"area":"\u4e07\u67cf\u6797\u533a","code":"140109000000"},{"area":"\u664b\u6e90\u533a","code":"140110000000"},{"area":"\u6e05\u5f90\u53bf","code":"140121000000"},{"area":"\u9633\u66f2\u53bf","code":"140122000000"},{"area":"\u5a04\u70e6\u53bf","code":"140123000000"},{"area":"\u5c71\u897f\u8f6c\u578b\u7efc\u5408\u6539\u9769\u793a\u8303\u533a","code":"140171000000"},{"area":"\u53e4\u4ea4\u5e02","code":"140181000000"}]},{"city":"\u5927\u540c\u5e02","code":"140200000000","areas":[{"area":"\u65b0\u8363\u533a","code":"140212000000"},{"area":"\u5e73\u57ce\u533a","code":"140213000000"},{"area":"\u4e91\u5188\u533a","code":"140214000000"},{"area":"\u4e91\u5dde\u533a","code":"140215000000"},{"area":"\u9633\u9ad8\u53bf","code":"140221000000"},{"area":"\u5929\u9547\u53bf","code":"140222000000"},{"area":"\u5e7f\u7075\u53bf","code":"140223000000"},{"area":"\u7075\u4e18\u53bf","code":"140224000000"},{"area":"\u6d51\u6e90\u53bf","code":"140225000000"},{"area":"\u5de6\u4e91\u53bf","code":"140226000000"},{"area":"\u5c71\u897f\u5927\u540c\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"140271000000"}]},{"city":"\u9633\u6cc9\u5e02","code":"140300000000","areas":[{"area":"\u57ce\u533a","code":"140302000000"},{"area":"\u77ff\u533a","code":"140303000000"},{"area":"\u90ca\u533a","code":"140311000000"},{"area":"\u5e73\u5b9a\u53bf","code":"140321000000"},{"area":"\u76c2\u53bf","code":"140322000000"}]},{"city":"\u957f\u6cbb\u5e02","code":"140400000000","areas":[{"area":"\u6f5e\u5dde\u533a","code":"140403000000"},{"area":"\u4e0a\u515a\u533a","code":"140404000000"},{"area":"\u5c6f\u7559\u533a","code":"140405000000"},{"area":"\u6f5e\u57ce\u533a","code":"140406000000"},{"area":"\u8944\u57a3\u53bf","code":"140423000000"},{"area":"\u5e73\u987a\u53bf","code":"140425000000"},{"area":"\u9ece\u57ce\u53bf","code":"140426000000"},{"area":"\u58f6\u5173\u53bf","code":"140427000000"},{"area":"\u957f\u5b50\u53bf","code":"140428000000"},{"area":"\u6b66\u4e61\u53bf","code":"140429000000"},{"area":"\u6c81\u53bf","code":"140430000000"},{"area":"\u6c81\u6e90\u53bf","code":"140431000000"}]},{"city":"\u664b\u57ce\u5e02","code":"140500000000","areas":[{"area":"\u57ce\u533a","code":"140502000000"},{"area":"\u6c81\u6c34\u53bf","code":"140521000000"},{"area":"\u9633\u57ce\u53bf","code":"140522000000"},{"area":"\u9675\u5ddd\u53bf","code":"140524000000"},{"area":"\u6cfd\u5dde\u53bf","code":"140525000000"},{"area":"\u9ad8\u5e73\u5e02","code":"140581000000"}]},{"city":"\u6714\u5dde\u5e02","code":"140600000000","areas":[{"area":"\u6714\u57ce\u533a","code":"140602000000"},{"area":"\u5e73\u9c81\u533a","code":"140603000000"},{"area":"\u5c71\u9634\u53bf","code":"140621000000"},{"area":"\u5e94\u53bf","code":"140622000000"},{"area":"\u53f3\u7389\u53bf","code":"140623000000"},{"area":"\u5c71\u897f\u6714\u5dde\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"140671000000"},{"area":"\u6000\u4ec1\u5e02","code":"140681000000"}]},{"city":"\u664b\u4e2d\u5e02","code":"140700000000","areas":[{"area":"\u6986\u6b21\u533a","code":"140702000000"},{"area":"\u592a\u8c37\u533a","code":"140703000000"},{"area":"\u6986\u793e\u53bf","code":"140721000000"},{"area":"\u5de6\u6743\u53bf","code":"140722000000"},{"area":"\u548c\u987a\u53bf","code":"140723000000"},{"area":"\u6614\u9633\u53bf","code":"140724000000"},{"area":"\u5bff\u9633\u53bf","code":"140725000000"},{"area":"\u7941\u53bf","code":"140727000000"},{"area":"\u5e73\u9065\u53bf","code":"140728000000"},{"area":"\u7075\u77f3\u53bf","code":"140729000000"},{"area":"\u4ecb\u4f11\u5e02","code":"140781000000"}]},{"city":"\u8fd0\u57ce\u5e02","code":"140800000000","areas":[{"area":"\u76d0\u6e56\u533a","code":"140802000000"},{"area":"\u4e34\u7317\u53bf","code":"140821000000"},{"area":"\u4e07\u8363\u53bf","code":"140822000000"},{"area":"\u95fb\u559c\u53bf","code":"140823000000"},{"area":"\u7a37\u5c71\u53bf","code":"140824000000"},{"area":"\u65b0\u7edb\u53bf","code":"140825000000"},{"area":"\u7edb\u53bf","code":"140826000000"},{"area":"\u57a3\u66f2\u53bf","code":"140827000000"},{"area":"\u590f\u53bf","code":"140828000000"},{"area":"\u5e73\u9646\u53bf","code":"140829000000"},{"area":"\u82ae\u57ce\u53bf","code":"140830000000"},{"area":"\u6c38\u6d4e\u5e02","code":"140881000000"},{"area":"\u6cb3\u6d25\u5e02","code":"140882000000"}]},{"city":"\u5ffb\u5dde\u5e02","code":"140900000000","areas":[{"area":"\u5ffb\u5e9c\u533a","code":"140902000000"},{"area":"\u5b9a\u8944\u53bf","code":"140921000000"},{"area":"\u4e94\u53f0\u53bf","code":"140922000000"},{"area":"\u4ee3\u53bf","code":"140923000000"},{"area":"\u7e41\u5cd9\u53bf","code":"140924000000"},{"area":"\u5b81\u6b66\u53bf","code":"140925000000"},{"area":"\u9759\u4e50\u53bf","code":"140926000000"},{"area":"\u795e\u6c60\u53bf","code":"140927000000"},{"area":"\u4e94\u5be8\u53bf","code":"140928000000"},{"area":"\u5ca2\u5c9a\u53bf","code":"140929000000"},{"area":"\u6cb3\u66f2\u53bf","code":"140930000000"},{"area":"\u4fdd\u5fb7\u53bf","code":"140931000000"},{"area":"\u504f\u5173\u53bf","code":"140932000000"},{"area":"\u4e94\u53f0\u5c71\u98ce\u666f\u540d\u80dc\u533a","code":"140971000000"},{"area":"\u539f\u5e73\u5e02","code":"140981000000"}]},{"city":"\u4e34\u6c7e\u5e02","code":"141000000000","areas":[{"area":"\u5c27\u90fd\u533a","code":"141002000000"},{"area":"\u66f2\u6c83\u53bf","code":"141021000000"},{"area":"\u7ffc\u57ce\u53bf","code":"141022000000"},{"area":"\u8944\u6c7e\u53bf","code":"141023000000"},{"area":"\u6d2a\u6d1e\u53bf","code":"141024000000"},{"area":"\u53e4\u53bf","code":"141025000000"},{"area":"\u5b89\u6cfd\u53bf","code":"141026000000"},{"area":"\u6d6e\u5c71\u53bf","code":"141027000000"},{"area":"\u5409\u53bf","code":"141028000000"},{"area":"\u4e61\u5b81\u53bf","code":"141029000000"},{"area":"\u5927\u5b81\u53bf","code":"141030000000"},{"area":"\u96b0\u53bf","code":"141031000000"},{"area":"\u6c38\u548c\u53bf","code":"141032000000"},{"area":"\u84b2\u53bf","code":"141033000000"},{"area":"\u6c7e\u897f\u53bf","code":"141034000000"},{"area":"\u4faf\u9a6c\u5e02","code":"141081000000"},{"area":"\u970d\u5dde\u5e02","code":"141082000000"}]},{"city":"\u5415\u6881\u5e02","code":"141100000000","areas":[{"area":"\u79bb\u77f3\u533a","code":"141102000000"},{"area":"\u6587\u6c34\u53bf","code":"141121000000"},{"area":"\u4ea4\u57ce\u53bf","code":"141122000000"},{"area":"\u5174\u53bf","code":"141123000000"},{"area":"\u4e34\u53bf","code":"141124000000"},{"area":"\u67f3\u6797\u53bf","code":"141125000000"},{"area":"\u77f3\u697c\u53bf","code":"141126000000"},{"area":"\u5c9a\u53bf","code":"141127000000"},{"area":"\u65b9\u5c71\u53bf","code":"141128000000"},{"area":"\u4e2d\u9633\u53bf","code":"141129000000"},{"area":"\u4ea4\u53e3\u53bf","code":"141130000000"},{"area":"\u5b5d\u4e49\u5e02","code":"141181000000"},{"area":"\u6c7e\u9633\u5e02","code":"141182000000"}]}]},{"province":"\u5185\u8499\u53e4\u81ea\u6cbb\u533a","code":"150000","citys":[{"city":"\u547c\u548c\u6d69\u7279\u5e02","code":"150100000000","areas":[{"area":"\u65b0\u57ce\u533a","code":"150102000000"},{"area":"\u56de\u6c11\u533a","code":"150103000000"},{"area":"\u7389\u6cc9\u533a","code":"150104000000"},{"area":"\u8d5b\u7f55\u533a","code":"150105000000"},{"area":"\u571f\u9ed8\u7279\u5de6\u65d7","code":"150121000000"},{"area":"\u6258\u514b\u6258\u53bf","code":"150122000000"},{"area":"\u548c\u6797\u683c\u5c14\u53bf","code":"150123000000"},{"area":"\u6e05\u6c34\u6cb3\u53bf","code":"150124000000"},{"area":"\u6b66\u5ddd\u53bf","code":"150125000000"},{"area":"\u547c\u548c\u6d69\u7279\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"150172000000"}]},{"city":"\u5305\u5934\u5e02","code":"150200000000","areas":[{"area":"\u4e1c\u6cb3\u533a","code":"150202000000"},{"area":"\u6606\u90fd\u4ed1\u533a","code":"150203000000"},{"area":"\u9752\u5c71\u533a","code":"150204000000"},{"area":"\u77f3\u62d0\u533a","code":"150205000000"},{"area":"\u767d\u4e91\u9102\u535a\u77ff\u533a","code":"150206000000"},{"area":"\u4e5d\u539f\u533a","code":"150207000000"},{"area":"\u571f\u9ed8\u7279\u53f3\u65d7","code":"150221000000"},{"area":"\u56fa\u9633\u53bf","code":"150222000000"},{"area":"\u8fbe\u5c14\u7f55\u8302\u660e\u5b89\u8054\u5408\u65d7","code":"150223000000"},{"area":"\u5305\u5934\u7a00\u571f\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"150271000000"}]},{"city":"\u4e4c\u6d77\u5e02","code":"150300000000","areas":[{"area":"\u6d77\u52c3\u6e7e\u533a","code":"150302000000"},{"area":"\u6d77\u5357\u533a","code":"150303000000"},{"area":"\u4e4c\u8fbe\u533a","code":"150304000000"}]},{"city":"\u8d64\u5cf0\u5e02","code":"150400000000","areas":[{"area":"\u7ea2\u5c71\u533a","code":"150402000000"},{"area":"\u5143\u5b9d\u5c71\u533a","code":"150403000000"},{"area":"\u677e\u5c71\u533a","code":"150404000000"},{"area":"\u963f\u9c81\u79d1\u5c14\u6c81\u65d7","code":"150421000000"},{"area":"\u5df4\u6797\u5de6\u65d7","code":"150422000000"},{"area":"\u5df4\u6797\u53f3\u65d7","code":"150423000000"},{"area":"\u6797\u897f\u53bf","code":"150424000000"},{"area":"\u514b\u4ec0\u514b\u817e\u65d7","code":"150425000000"},{"area":"\u7fc1\u725b\u7279\u65d7","code":"150426000000"},{"area":"\u5580\u5587\u6c81\u65d7","code":"150428000000"},{"area":"\u5b81\u57ce\u53bf","code":"150429000000"},{"area":"\u6556\u6c49\u65d7","code":"150430000000"}]},{"city":"\u901a\u8fbd\u5e02","code":"150500000000","areas":[{"area":"\u79d1\u5c14\u6c81\u533a","code":"150502000000"},{"area":"\u79d1\u5c14\u6c81\u5de6\u7ffc\u4e2d\u65d7","code":"150521000000"},{"area":"\u79d1\u5c14\u6c81\u5de6\u7ffc\u540e\u65d7","code":"150522000000"},{"area":"\u5f00\u9c81\u53bf","code":"150523000000"},{"area":"\u5e93\u4f26\u65d7","code":"150524000000"},{"area":"\u5948\u66fc\u65d7","code":"150525000000"},{"area":"\u624e\u9c81\u7279\u65d7","code":"150526000000"},{"area":"\u901a\u8fbd\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"150571000000"},{"area":"\u970d\u6797\u90ed\u52d2\u5e02","code":"150581000000"}]},{"city":"\u9102\u5c14\u591a\u65af\u5e02","code":"150600000000","areas":[{"area":"\u4e1c\u80dc\u533a","code":"150602000000"},{"area":"\u5eb7\u5df4\u4ec0\u533a","code":"150603000000"},{"area":"\u8fbe\u62c9\u7279\u65d7","code":"150621000000"},{"area":"\u51c6\u683c\u5c14\u65d7","code":"150622000000"},{"area":"\u9102\u6258\u514b\u524d\u65d7","code":"150623000000"},{"area":"\u9102\u6258\u514b\u65d7","code":"150624000000"},{"area":"\u676d\u9526\u65d7","code":"150625000000"},{"area":"\u4e4c\u5ba1\u65d7","code":"150626000000"},{"area":"\u4f0a\u91d1\u970d\u6d1b\u65d7","code":"150627000000"}]},{"city":"\u547c\u4f26\u8d1d\u5c14\u5e02","code":"150700000000","areas":[{"area":"\u6d77\u62c9\u5c14\u533a","code":"150702000000"},{"area":"\u624e\u8d49\u8bfa\u5c14\u533a","code":"150703000000"},{"area":"\u963f\u8363\u65d7","code":"150721000000"},{"area":"\u83ab\u529b\u8fbe\u74e6\u8fbe\u65a1\u5c14\u65cf\u81ea\u6cbb\u65d7","code":"150722000000"},{"area":"\u9102\u4f26\u6625\u81ea\u6cbb\u65d7","code":"150723000000"},{"area":"\u9102\u6e29\u514b\u65cf\u81ea\u6cbb\u65d7","code":"150724000000"},{"area":"\u9648\u5df4\u5c14\u864e\u65d7","code":"150725000000"},{"area":"\u65b0\u5df4\u5c14\u864e\u5de6\u65d7","code":"150726000000"},{"area":"\u65b0\u5df4\u5c14\u864e\u53f3\u65d7","code":"150727000000"},{"area":"\u6ee1\u6d32\u91cc\u5e02","code":"150781000000"},{"area":"\u7259\u514b\u77f3\u5e02","code":"150782000000"},{"area":"\u624e\u5170\u5c6f\u5e02","code":"150783000000"},{"area":"\u989d\u5c14\u53e4\u7eb3\u5e02","code":"150784000000"},{"area":"\u6839\u6cb3\u5e02","code":"150785000000"}]},{"city":"\u5df4\u5f66\u6dd6\u5c14\u5e02","code":"150800000000","areas":[{"area":"\u4e34\u6cb3\u533a","code":"150802000000"},{"area":"\u4e94\u539f\u53bf","code":"150821000000"},{"area":"\u78f4\u53e3\u53bf","code":"150822000000"},{"area":"\u4e4c\u62c9\u7279\u524d\u65d7","code":"150823000000"},{"area":"\u4e4c\u62c9\u7279\u4e2d\u65d7","code":"150824000000"},{"area":"\u4e4c\u62c9\u7279\u540e\u65d7","code":"150825000000"},{"area":"\u676d\u9526\u540e\u65d7","code":"150826000000"}]},{"city":"\u4e4c\u5170\u5bdf\u5e03\u5e02","code":"150900000000","areas":[{"area":"\u96c6\u5b81\u533a","code":"150902000000"},{"area":"\u5353\u8d44\u53bf","code":"150921000000"},{"area":"\u5316\u5fb7\u53bf","code":"150922000000"},{"area":"\u5546\u90fd\u53bf","code":"150923000000"},{"area":"\u5174\u548c\u53bf","code":"150924000000"},{"area":"\u51c9\u57ce\u53bf","code":"150925000000"},{"area":"\u5bdf\u54c8\u5c14\u53f3\u7ffc\u524d\u65d7","code":"150926000000"},{"area":"\u5bdf\u54c8\u5c14\u53f3\u7ffc\u4e2d\u65d7","code":"150927000000"},{"area":"\u5bdf\u54c8\u5c14\u53f3\u7ffc\u540e\u65d7","code":"150928000000"},{"area":"\u56db\u5b50\u738b\u65d7","code":"150929000000"},{"area":"\u4e30\u9547\u5e02","code":"150981000000"}]},{"city":"\u5174\u5b89\u76df","code":"152200000000","areas":[{"area":"\u4e4c\u5170\u6d69\u7279\u5e02","code":"152201000000"},{"area":"\u963f\u5c14\u5c71\u5e02","code":"152202000000"},{"area":"\u79d1\u5c14\u6c81\u53f3\u7ffc\u524d\u65d7","code":"152221000000"},{"area":"\u79d1\u5c14\u6c81\u53f3\u7ffc\u4e2d\u65d7","code":"152222000000"},{"area":"\u624e\u8d49\u7279\u65d7","code":"152223000000"},{"area":"\u7a81\u6cc9\u53bf","code":"152224000000"}]},{"city":"\u9521\u6797\u90ed\u52d2\u76df","code":"152500000000","areas":[{"area":"\u4e8c\u8fde\u6d69\u7279\u5e02","code":"152501000000"},{"area":"\u9521\u6797\u6d69\u7279\u5e02","code":"152502000000"},{"area":"\u963f\u5df4\u560e\u65d7","code":"152522000000"},{"area":"\u82cf\u5c3c\u7279\u5de6\u65d7","code":"152523000000"},{"area":"\u82cf\u5c3c\u7279\u53f3\u65d7","code":"152524000000"},{"area":"\u4e1c\u4e4c\u73e0\u7a46\u6c81\u65d7","code":"152525000000"},{"area":"\u897f\u4e4c\u73e0\u7a46\u6c81\u65d7","code":"152526000000"},{"area":"\u592a\u4ec6\u5bfa\u65d7","code":"152527000000"},{"area":"\u9576\u9ec4\u65d7","code":"152528000000"},{"area":"\u6b63\u9576\u767d\u65d7","code":"152529000000"},{"area":"\u6b63\u84dd\u65d7","code":"152530000000"},{"area":"\u591a\u4f26\u53bf","code":"152531000000"},{"area":"\u4e4c\u62c9\u76d6\u7ba1\u7406\u533a\u7ba1\u59d4\u4f1a","code":"152571000000"}]},{"city":"\u963f\u62c9\u5584\u76df","code":"152900000000","areas":[{"area":"\u963f\u62c9\u5584\u5de6\u65d7","code":"152921000000"},{"area":"\u963f\u62c9\u5584\u53f3\u65d7","code":"152922000000"},{"area":"\u989d\u6d4e\u7eb3\u65d7","code":"152923000000"},{"area":"\u5185\u8499\u53e4\u963f\u62c9\u5584\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"152971000000"}]}]},{"province":"\u8fbd\u5b81\u7701","code":"210000","citys":[{"city":"\u6c88\u9633\u5e02","code":"210100000000","areas":[{"area":"\u548c\u5e73\u533a","code":"210102000000"},{"area":"\u6c88\u6cb3\u533a","code":"210103000000"},{"area":"\u5927\u4e1c\u533a","code":"210104000000"},{"area":"\u7687\u59d1\u533a","code":"210105000000"},{"area":"\u94c1\u897f\u533a","code":"210106000000"},{"area":"\u82cf\u5bb6\u5c6f\u533a","code":"210111000000"},{"area":"\u6d51\u5357\u533a","code":"210112000000"},{"area":"\u6c88\u5317\u65b0\u533a","code":"210113000000"},{"area":"\u4e8e\u6d2a\u533a","code":"210114000000"},{"area":"\u8fbd\u4e2d\u533a","code":"210115000000"},{"area":"\u5eb7\u5e73\u53bf","code":"210123000000"},{"area":"\u6cd5\u5e93\u53bf","code":"210124000000"},{"area":"\u65b0\u6c11\u5e02","code":"210181000000"}]},{"city":"\u5927\u8fde\u5e02","code":"210200000000","areas":[{"area":"\u4e2d\u5c71\u533a","code":"210202000000"},{"area":"\u897f\u5c97\u533a","code":"210203000000"},{"area":"\u6c99\u6cb3\u53e3\u533a","code":"210204000000"},{"area":"\u7518\u4e95\u5b50\u533a","code":"210211000000"},{"area":"\u65c5\u987a\u53e3\u533a","code":"210212000000"},{"area":"\u91d1\u5dde\u533a","code":"210213000000"},{"area":"\u666e\u5170\u5e97\u533a","code":"210214000000"},{"area":"\u957f\u6d77\u53bf","code":"210224000000"},{"area":"\u74e6\u623f\u5e97\u5e02","code":"210281000000"},{"area":"\u5e84\u6cb3\u5e02","code":"210283000000"}]},{"city":"\u978d\u5c71\u5e02","code":"210300000000","areas":[{"area":"\u94c1\u4e1c\u533a","code":"210302000000"},{"area":"\u94c1\u897f\u533a","code":"210303000000"},{"area":"\u7acb\u5c71\u533a","code":"210304000000"},{"area":"\u5343\u5c71\u533a","code":"210311000000"},{"area":"\u53f0\u5b89\u53bf","code":"210321000000"},{"area":"\u5cab\u5ca9\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"210323000000"},{"area":"\u6d77\u57ce\u5e02","code":"210381000000"}]},{"city":"\u629a\u987a\u5e02","code":"210400000000","areas":[{"area":"\u65b0\u629a\u533a","code":"210402000000"},{"area":"\u4e1c\u6d32\u533a","code":"210403000000"},{"area":"\u671b\u82b1\u533a","code":"210404000000"},{"area":"\u987a\u57ce\u533a","code":"210411000000"},{"area":"\u629a\u987a\u53bf","code":"210421000000"},{"area":"\u65b0\u5bbe\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"210422000000"},{"area":"\u6e05\u539f\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"210423000000"}]},{"city":"\u672c\u6eaa\u5e02","code":"210500000000","areas":[{"area":"\u5e73\u5c71\u533a","code":"210502000000"},{"area":"\u6eaa\u6e56\u533a","code":"210503000000"},{"area":"\u660e\u5c71\u533a","code":"210504000000"},{"area":"\u5357\u82ac\u533a","code":"210505000000"},{"area":"\u672c\u6eaa\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"210521000000"},{"area":"\u6853\u4ec1\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"210522000000"}]},{"city":"\u4e39\u4e1c\u5e02","code":"210600000000","areas":[{"area":"\u5143\u5b9d\u533a","code":"210602000000"},{"area":"\u632f\u5174\u533a","code":"210603000000"},{"area":"\u632f\u5b89\u533a","code":"210604000000"},{"area":"\u5bbd\u7538\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"210624000000"},{"area":"\u4e1c\u6e2f\u5e02","code":"210681000000"},{"area":"\u51e4\u57ce\u5e02","code":"210682000000"}]},{"city":"\u9526\u5dde\u5e02","code":"210700000000","areas":[{"area":"\u53e4\u5854\u533a","code":"210702000000"},{"area":"\u51cc\u6cb3\u533a","code":"210703000000"},{"area":"\u592a\u548c\u533a","code":"210711000000"},{"area":"\u9ed1\u5c71\u53bf","code":"210726000000"},{"area":"\u4e49\u53bf","code":"210727000000"},{"area":"\u51cc\u6d77\u5e02","code":"210781000000"},{"area":"\u5317\u9547\u5e02","code":"210782000000"}]},{"city":"\u8425\u53e3\u5e02","code":"210800000000","areas":[{"area":"\u7ad9\u524d\u533a","code":"210802000000"},{"area":"\u897f\u5e02\u533a","code":"210803000000"},{"area":"\u9c85\u9c7c\u5708\u533a","code":"210804000000"},{"area":"\u8001\u8fb9\u533a","code":"210811000000"},{"area":"\u76d6\u5dde\u5e02","code":"210881000000"},{"area":"\u5927\u77f3\u6865\u5e02","code":"210882000000"}]},{"city":"\u961c\u65b0\u5e02","code":"210900000000","areas":[{"area":"\u6d77\u5dde\u533a","code":"210902000000"},{"area":"\u65b0\u90b1\u533a","code":"210903000000"},{"area":"\u592a\u5e73\u533a","code":"210904000000"},{"area":"\u6e05\u6cb3\u95e8\u533a","code":"210905000000"},{"area":"\u7ec6\u6cb3\u533a","code":"210911000000"},{"area":"\u961c\u65b0\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","code":"210921000000"},{"area":"\u5f70\u6b66\u53bf","code":"210922000000"}]},{"city":"\u8fbd\u9633\u5e02","code":"211000000000","areas":[{"area":"\u767d\u5854\u533a","code":"211002000000"},{"area":"\u6587\u5723\u533a","code":"211003000000"},{"area":"\u5b8f\u4f1f\u533a","code":"211004000000"},{"area":"\u5f13\u957f\u5cad\u533a","code":"211005000000"},{"area":"\u592a\u5b50\u6cb3\u533a","code":"211011000000"},{"area":"\u8fbd\u9633\u53bf","code":"211021000000"},{"area":"\u706f\u5854\u5e02","code":"211081000000"}]},{"city":"\u76d8\u9526\u5e02","code":"211100000000","areas":[{"area":"\u53cc\u53f0\u5b50\u533a","code":"211102000000"},{"area":"\u5174\u9686\u53f0\u533a","code":"211103000000"},{"area":"\u5927\u6d3c\u533a","code":"211104000000"},{"area":"\u76d8\u5c71\u53bf","code":"211122000000"}]},{"city":"\u94c1\u5cad\u5e02","code":"211200000000","areas":[{"area":"\u94f6\u5dde\u533a","code":"211202000000"},{"area":"\u6e05\u6cb3\u533a","code":"211204000000"},{"area":"\u94c1\u5cad\u53bf","code":"211221000000"},{"area":"\u897f\u4e30\u53bf","code":"211223000000"},{"area":"\u660c\u56fe\u53bf","code":"211224000000"},{"area":"\u8c03\u5175\u5c71\u5e02","code":"211281000000"},{"area":"\u5f00\u539f\u5e02","code":"211282000000"}]},{"city":"\u671d\u9633\u5e02","code":"211300000000","areas":[{"area":"\u53cc\u5854\u533a","code":"211302000000"},{"area":"\u9f99\u57ce\u533a","code":"211303000000"},{"area":"\u671d\u9633\u53bf","code":"211321000000"},{"area":"\u5efa\u5e73\u53bf","code":"211322000000"},{"area":"\u5580\u5587\u6c81\u5de6\u7ffc\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","code":"211324000000"},{"area":"\u5317\u7968\u5e02","code":"211381000000"},{"area":"\u51cc\u6e90\u5e02","code":"211382000000"}]},{"city":"\u846b\u82a6\u5c9b\u5e02","code":"211400000000","areas":[{"area":"\u8fde\u5c71\u533a","code":"211402000000"},{"area":"\u9f99\u6e2f\u533a","code":"211403000000"},{"area":"\u5357\u7968\u533a","code":"211404000000"},{"area":"\u7ee5\u4e2d\u53bf","code":"211421000000"},{"area":"\u5efa\u660c\u53bf","code":"211422000000"},{"area":"\u5174\u57ce\u5e02","code":"211481000000"}]}]},{"province":"\u5409\u6797\u7701","code":"220000","citys":[{"city":"\u957f\u6625\u5e02","code":"220100000000","areas":[{"area":"\u5357\u5173\u533a","code":"220102000000"},{"area":"\u5bbd\u57ce\u533a","code":"220103000000"},{"area":"\u671d\u9633\u533a","code":"220104000000"},{"area":"\u4e8c\u9053\u533a","code":"220105000000"},{"area":"\u7eff\u56ed\u533a","code":"220106000000"},{"area":"\u53cc\u9633\u533a","code":"220112000000"},{"area":"\u4e5d\u53f0\u533a","code":"220113000000"},{"area":"\u519c\u5b89\u53bf","code":"220122000000"},{"area":"\u957f\u6625\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"220171000000"},{"area":"\u957f\u6625\u51c0\u6708\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"220172000000"},{"area":"\u957f\u6625\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"220173000000"},{"area":"\u957f\u6625\u6c7d\u8f66\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"220174000000"},{"area":"\u6986\u6811\u5e02","code":"220182000000"},{"area":"\u5fb7\u60e0\u5e02","code":"220183000000"},{"area":"\u516c\u4e3b\u5cad\u5e02","code":"220184000000"}]},{"city":"\u5409\u6797\u5e02","code":"220200000000","areas":[{"area":"\u660c\u9091\u533a","code":"220202000000"},{"area":"\u9f99\u6f6d\u533a","code":"220203000000"},{"area":"\u8239\u8425\u533a","code":"220204000000"},{"area":"\u4e30\u6ee1\u533a","code":"220211000000"},{"area":"\u6c38\u5409\u53bf","code":"220221000000"},{"area":"\u5409\u6797\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"220271000000"},{"area":"\u5409\u6797\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"220272000000"},{"area":"\u5409\u6797\u4e2d\u56fd\u65b0\u52a0\u5761\u98df\u54c1\u533a","code":"220273000000"},{"area":"\u86df\u6cb3\u5e02","code":"220281000000"},{"area":"\u6866\u7538\u5e02","code":"220282000000"},{"area":"\u8212\u5170\u5e02","code":"220283000000"},{"area":"\u78d0\u77f3\u5e02","code":"220284000000"}]},{"city":"\u56db\u5e73\u5e02","code":"220300000000","areas":[{"area":"\u94c1\u897f\u533a","code":"220302000000"},{"area":"\u94c1\u4e1c\u533a","code":"220303000000"},{"area":"\u68a8\u6811\u53bf","code":"220322000000"},{"area":"\u4f0a\u901a\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"220323000000"},{"area":"\u53cc\u8fbd\u5e02","code":"220382000000"}]},{"city":"\u8fbd\u6e90\u5e02","code":"220400000000","areas":[{"area":"\u9f99\u5c71\u533a","code":"220402000000"},{"area":"\u897f\u5b89\u533a","code":"220403000000"},{"area":"\u4e1c\u4e30\u53bf","code":"220421000000"},{"area":"\u4e1c\u8fbd\u53bf","code":"220422000000"}]},{"city":"\u901a\u5316\u5e02","code":"220500000000","areas":[{"area":"\u4e1c\u660c\u533a","code":"220502000000"},{"area":"\u4e8c\u9053\u6c5f\u533a","code":"220503000000"},{"area":"\u901a\u5316\u53bf","code":"220521000000"},{"area":"\u8f89\u5357\u53bf","code":"220523000000"},{"area":"\u67f3\u6cb3\u53bf","code":"220524000000"},{"area":"\u6885\u6cb3\u53e3\u5e02","code":"220581000000"},{"area":"\u96c6\u5b89\u5e02","code":"220582000000"}]},{"city":"\u767d\u5c71\u5e02","code":"220600000000","areas":[{"area":"\u6d51\u6c5f\u533a","code":"220602000000"},{"area":"\u6c5f\u6e90\u533a","code":"220605000000"},{"area":"\u629a\u677e\u53bf","code":"220621000000"},{"area":"\u9756\u5b87\u53bf","code":"220622000000"},{"area":"\u957f\u767d\u671d\u9c9c\u65cf\u81ea\u6cbb\u53bf","code":"220623000000"},{"area":"\u4e34\u6c5f\u5e02","code":"220681000000"}]},{"city":"\u677e\u539f\u5e02","code":"220700000000","areas":[{"area":"\u5b81\u6c5f\u533a","code":"220702000000"},{"area":"\u524d\u90ed\u5c14\u7f57\u65af\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","code":"220721000000"},{"area":"\u957f\u5cad\u53bf","code":"220722000000"},{"area":"\u4e7e\u5b89\u53bf","code":"220723000000"},{"area":"\u5409\u6797\u677e\u539f\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"220771000000"},{"area":"\u6276\u4f59\u5e02","code":"220781000000"}]},{"city":"\u767d\u57ce\u5e02","code":"220800000000","areas":[{"area":"\u6d2e\u5317\u533a","code":"220802000000"},{"area":"\u9547\u8d49\u53bf","code":"220821000000"},{"area":"\u901a\u6986\u53bf","code":"220822000000"},{"area":"\u5409\u6797\u767d\u57ce\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"220871000000"},{"area":"\u6d2e\u5357\u5e02","code":"220881000000"},{"area":"\u5927\u5b89\u5e02","code":"220882000000"}]},{"city":"\u5ef6\u8fb9\u671d\u9c9c\u65cf\u81ea\u6cbb\u5dde","code":"222400000000","areas":[{"area":"\u5ef6\u5409\u5e02","code":"222401000000"},{"area":"\u56fe\u4eec\u5e02","code":"222402000000"},{"area":"\u6566\u5316\u5e02","code":"222403000000"},{"area":"\u73f2\u6625\u5e02","code":"222404000000"},{"area":"\u9f99\u4e95\u5e02","code":"222405000000"},{"area":"\u548c\u9f99\u5e02","code":"222406000000"},{"area":"\u6c6a\u6e05\u53bf","code":"222424000000"},{"area":"\u5b89\u56fe\u53bf","code":"222426000000"}]}]},{"province":"\u9ed1\u9f99\u6c5f\u7701","code":"230000","citys":[{"city":"\u54c8\u5c14\u6ee8\u5e02","code":"230100000000","areas":[{"area":"\u9053\u91cc\u533a","code":"230102000000"},{"area":"\u5357\u5c97\u533a","code":"230103000000"},{"area":"\u9053\u5916\u533a","code":"230104000000"},{"area":"\u5e73\u623f\u533a","code":"230108000000"},{"area":"\u677e\u5317\u533a","code":"230109000000"},{"area":"\u9999\u574a\u533a","code":"230110000000"},{"area":"\u547c\u5170\u533a","code":"230111000000"},{"area":"\u963f\u57ce\u533a","code":"230112000000"},{"area":"\u53cc\u57ce\u533a","code":"230113000000"},{"area":"\u4f9d\u5170\u53bf","code":"230123000000"},{"area":"\u65b9\u6b63\u53bf","code":"230124000000"},{"area":"\u5bbe\u53bf","code":"230125000000"},{"area":"\u5df4\u5f66\u53bf","code":"230126000000"},{"area":"\u6728\u5170\u53bf","code":"230127000000"},{"area":"\u901a\u6cb3\u53bf","code":"230128000000"},{"area":"\u5ef6\u5bff\u53bf","code":"230129000000"},{"area":"\u5c1a\u5fd7\u5e02","code":"230183000000"},{"area":"\u4e94\u5e38\u5e02","code":"230184000000"}]},{"city":"\u9f50\u9f50\u54c8\u5c14\u5e02","code":"230200000000","areas":[{"area":"\u9f99\u6c99\u533a","code":"230202000000"},{"area":"\u5efa\u534e\u533a","code":"230203000000"},{"area":"\u94c1\u950b\u533a","code":"230204000000"},{"area":"\u6602\u6602\u6eaa\u533a","code":"230205000000"},{"area":"\u5bcc\u62c9\u5c14\u57fa\u533a","code":"230206000000"},{"area":"\u78be\u5b50\u5c71\u533a","code":"230207000000"},{"area":"\u6885\u91cc\u65af\u8fbe\u65a1\u5c14\u65cf\u533a","code":"230208000000"},{"area":"\u9f99\u6c5f\u53bf","code":"230221000000"},{"area":"\u4f9d\u5b89\u53bf","code":"230223000000"},{"area":"\u6cf0\u6765\u53bf","code":"230224000000"},{"area":"\u7518\u5357\u53bf","code":"230225000000"},{"area":"\u5bcc\u88d5\u53bf","code":"230227000000"},{"area":"\u514b\u5c71\u53bf","code":"230229000000"},{"area":"\u514b\u4e1c\u53bf","code":"230230000000"},{"area":"\u62dc\u6cc9\u53bf","code":"230231000000"},{"area":"\u8bb7\u6cb3\u5e02","code":"230281000000"}]},{"city":"\u9e21\u897f\u5e02","code":"230300000000","areas":[{"area":"\u9e21\u51a0\u533a","code":"230302000000"},{"area":"\u6052\u5c71\u533a","code":"230303000000"},{"area":"\u6ef4\u9053\u533a","code":"230304000000"},{"area":"\u68a8\u6811\u533a","code":"230305000000"},{"area":"\u57ce\u5b50\u6cb3\u533a","code":"230306000000"},{"area":"\u9ebb\u5c71\u533a","code":"230307000000"},{"area":"\u9e21\u4e1c\u53bf","code":"230321000000"},{"area":"\u864e\u6797\u5e02","code":"230381000000"},{"area":"\u5bc6\u5c71\u5e02","code":"230382000000"}]},{"city":"\u9e64\u5c97\u5e02","code":"230400000000","areas":[{"area":"\u5411\u9633\u533a","code":"230402000000"},{"area":"\u5de5\u519c\u533a","code":"230403000000"},{"area":"\u5357\u5c71\u533a","code":"230404000000"},{"area":"\u5174\u5b89\u533a","code":"230405000000"},{"area":"\u4e1c\u5c71\u533a","code":"230406000000"},{"area":"\u5174\u5c71\u533a","code":"230407000000"},{"area":"\u841d\u5317\u53bf","code":"230421000000"},{"area":"\u7ee5\u6ee8\u53bf","code":"230422000000"}]},{"city":"\u53cc\u9e2d\u5c71\u5e02","code":"230500000000","areas":[{"area":"\u5c16\u5c71\u533a","code":"230502000000"},{"area":"\u5cad\u4e1c\u533a","code":"230503000000"},{"area":"\u56db\u65b9\u53f0\u533a","code":"230505000000"},{"area":"\u5b9d\u5c71\u533a","code":"230506000000"},{"area":"\u96c6\u8d24\u53bf","code":"230521000000"},{"area":"\u53cb\u8c0a\u53bf","code":"230522000000"},{"area":"\u5b9d\u6e05\u53bf","code":"230523000000"},{"area":"\u9976\u6cb3\u53bf","code":"230524000000"}]},{"city":"\u5927\u5e86\u5e02","code":"230600000000","areas":[{"area":"\u8428\u5c14\u56fe\u533a","code":"230602000000"},{"area":"\u9f99\u51e4\u533a","code":"230603000000"},{"area":"\u8ba9\u80e1\u8def\u533a","code":"230604000000"},{"area":"\u7ea2\u5c97\u533a","code":"230605000000"},{"area":"\u5927\u540c\u533a","code":"230606000000"},{"area":"\u8087\u5dde\u53bf","code":"230621000000"},{"area":"\u8087\u6e90\u53bf","code":"230622000000"},{"area":"\u6797\u7538\u53bf","code":"230623000000"},{"area":"\u675c\u5c14\u4f2f\u7279\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","code":"230624000000"},{"area":"\u5927\u5e86\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"230671000000"}]},{"city":"\u4f0a\u6625\u5e02","code":"230700000000","areas":[{"area":"\u4f0a\u7f8e\u533a","code":"230717000000"},{"area":"\u4e4c\u7fe0\u533a","code":"230718000000"},{"area":"\u53cb\u597d\u533a","code":"230719000000"},{"area":"\u5609\u836b\u53bf","code":"230722000000"},{"area":"\u6c64\u65fa\u53bf","code":"230723000000"},{"area":"\u4e30\u6797\u53bf","code":"230724000000"},{"area":"\u5927\u7b90\u5c71\u53bf","code":"230725000000"},{"area":"\u5357\u5c94\u53bf","code":"230726000000"},{"area":"\u91d1\u6797\u533a","code":"230751000000"},{"area":"\u94c1\u529b\u5e02","code":"230781000000"}]},{"city":"\u4f73\u6728\u65af\u5e02","code":"230800000000","areas":[{"area":"\u5411\u9633\u533a","code":"230803000000"},{"area":"\u524d\u8fdb\u533a","code":"230804000000"},{"area":"\u4e1c\u98ce\u533a","code":"230805000000"},{"area":"\u90ca\u533a","code":"230811000000"},{"area":"\u6866\u5357\u53bf","code":"230822000000"},{"area":"\u6866\u5ddd\u53bf","code":"230826000000"},{"area":"\u6c64\u539f\u53bf","code":"230828000000"},{"area":"\u540c\u6c5f\u5e02","code":"230881000000"},{"area":"\u5bcc\u9526\u5e02","code":"230882000000"},{"area":"\u629a\u8fdc\u5e02","code":"230883000000"}]},{"city":"\u4e03\u53f0\u6cb3\u5e02","code":"230900000000","areas":[{"area":"\u65b0\u5174\u533a","code":"230902000000"},{"area":"\u6843\u5c71\u533a","code":"230903000000"},{"area":"\u8304\u5b50\u6cb3\u533a","code":"230904000000"},{"area":"\u52c3\u5229\u53bf","code":"230921000000"}]},{"city":"\u7261\u4e39\u6c5f\u5e02","code":"231000000000","areas":[{"area":"\u4e1c\u5b89\u533a","code":"231002000000"},{"area":"\u9633\u660e\u533a","code":"231003000000"},{"area":"\u7231\u6c11\u533a","code":"231004000000"},{"area":"\u897f\u5b89\u533a","code":"231005000000"},{"area":"\u6797\u53e3\u53bf","code":"231025000000"},{"area":"\u7ee5\u82ac\u6cb3\u5e02","code":"231081000000"},{"area":"\u6d77\u6797\u5e02","code":"231083000000"},{"area":"\u5b81\u5b89\u5e02","code":"231084000000"},{"area":"\u7a46\u68f1\u5e02","code":"231085000000"},{"area":"\u4e1c\u5b81\u5e02","code":"231086000000"}]},{"city":"\u9ed1\u6cb3\u5e02","code":"231100000000","areas":[{"area":"\u7231\u8f89\u533a","code":"231102000000"},{"area":"\u900a\u514b\u53bf","code":"231123000000"},{"area":"\u5b59\u5434\u53bf","code":"231124000000"},{"area":"\u5317\u5b89\u5e02","code":"231181000000"},{"area":"\u4e94\u5927\u8fde\u6c60\u5e02","code":"231182000000"},{"area":"\u5ae9\u6c5f\u5e02","code":"231183000000"}]},{"city":"\u7ee5\u5316\u5e02","code":"231200000000","areas":[{"area":"\u5317\u6797\u533a","code":"231202000000"},{"area":"\u671b\u594e\u53bf","code":"231221000000"},{"area":"\u5170\u897f\u53bf","code":"231222000000"},{"area":"\u9752\u5188\u53bf","code":"231223000000"},{"area":"\u5e86\u5b89\u53bf","code":"231224000000"},{"area":"\u660e\u6c34\u53bf","code":"231225000000"},{"area":"\u7ee5\u68f1\u53bf","code":"231226000000"},{"area":"\u5b89\u8fbe\u5e02","code":"231281000000"},{"area":"\u8087\u4e1c\u5e02","code":"231282000000"},{"area":"\u6d77\u4f26\u5e02","code":"231283000000"}]},{"city":"\u5927\u5174\u5b89\u5cad\u5730\u533a","code":"232700000000","areas":[{"area":"\u6f20\u6cb3\u5e02","code":"232701000000"},{"area":"\u547c\u739b\u53bf","code":"232721000000"},{"area":"\u5854\u6cb3\u53bf","code":"232722000000"},{"area":"\u52a0\u683c\u8fbe\u5947\u533a","code":"232761000000"},{"area":"\u677e\u5cad\u533a","code":"232762000000"},{"area":"\u65b0\u6797\u533a","code":"232763000000"},{"area":"\u547c\u4e2d\u533a","code":"232764000000"}]}]},{"province":"\u4e0a\u6d77\u5e02","code":"310000","citys":[{"city":"\u4e0a\u6d77\u5e02","code":"310100000000","areas":[{"area":"\u9ec4\u6d66\u533a","code":"310101000000"},{"area":"\u5f90\u6c47\u533a","code":"310104000000"},{"area":"\u957f\u5b81\u533a","code":"310105000000"},{"area":"\u9759\u5b89\u533a","code":"310106000000"},{"area":"\u666e\u9640\u533a","code":"310107000000"},{"area":"\u8679\u53e3\u533a","code":"310109000000"},{"area":"\u6768\u6d66\u533a","code":"310110000000"},{"area":"\u95f5\u884c\u533a","code":"310112000000"},{"area":"\u5b9d\u5c71\u533a","code":"310113000000"},{"area":"\u5609\u5b9a\u533a","code":"310114000000"},{"area":"\u6d66\u4e1c\u65b0\u533a","code":"310115000000"},{"area":"\u91d1\u5c71\u533a","code":"310116000000"},{"area":"\u677e\u6c5f\u533a","code":"310117000000"},{"area":"\u9752\u6d66\u533a","code":"310118000000"},{"area":"\u5949\u8d24\u533a","code":"310120000000"},{"area":"\u5d07\u660e\u533a","code":"310151000000"}]}]},{"province":"\u6c5f\u82cf\u7701","code":"320000","citys":[{"city":"\u5357\u4eac\u5e02","code":"320100000000","areas":[{"area":"\u7384\u6b66\u533a","code":"320102000000"},{"area":"\u79e6\u6dee\u533a","code":"320104000000"},{"area":"\u5efa\u90ba\u533a","code":"320105000000"},{"area":"\u9f13\u697c\u533a","code":"320106000000"},{"area":"\u6d66\u53e3\u533a","code":"320111000000"},{"area":"\u6816\u971e\u533a","code":"320113000000"},{"area":"\u96e8\u82b1\u53f0\u533a","code":"320114000000"},{"area":"\u6c5f\u5b81\u533a","code":"320115000000"},{"area":"\u516d\u5408\u533a","code":"320116000000"},{"area":"\u6ea7\u6c34\u533a","code":"320117000000"},{"area":"\u9ad8\u6df3\u533a","code":"320118000000"}]},{"city":"\u65e0\u9521\u5e02","code":"320200000000","areas":[{"area":"\u9521\u5c71\u533a","code":"320205000000"},{"area":"\u60e0\u5c71\u533a","code":"320206000000"},{"area":"\u6ee8\u6e56\u533a","code":"320211000000"},{"area":"\u6881\u6eaa\u533a","code":"320213000000"},{"area":"\u65b0\u5434\u533a","code":"320214000000"},{"area":"\u6c5f\u9634\u5e02","code":"320281000000"},{"area":"\u5b9c\u5174\u5e02","code":"320282000000"}]},{"city":"\u5f90\u5dde\u5e02","code":"320300000000","areas":[{"area":"\u9f13\u697c\u533a","code":"320302000000"},{"area":"\u4e91\u9f99\u533a","code":"320303000000"},{"area":"\u8d3e\u6c6a\u533a","code":"320305000000"},{"area":"\u6cc9\u5c71\u533a","code":"320311000000"},{"area":"\u94dc\u5c71\u533a","code":"320312000000"},{"area":"\u4e30\u53bf","code":"320321000000"},{"area":"\u6c9b\u53bf","code":"320322000000"},{"area":"\u7762\u5b81\u53bf","code":"320324000000"},{"area":"\u5f90\u5dde\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"320371000000"},{"area":"\u65b0\u6c82\u5e02","code":"320381000000"},{"area":"\u90b3\u5dde\u5e02","code":"320382000000"}]},{"city":"\u5e38\u5dde\u5e02","code":"320400000000","areas":[{"area":"\u5929\u5b81\u533a","code":"320402000000"},{"area":"\u949f\u697c\u533a","code":"320404000000"},{"area":"\u65b0\u5317\u533a","code":"320411000000"},{"area":"\u6b66\u8fdb\u533a","code":"320412000000"},{"area":"\u91d1\u575b\u533a","code":"320413000000"},{"area":"\u6ea7\u9633\u5e02","code":"320481000000"}]},{"city":"\u82cf\u5dde\u5e02","code":"320500000000","areas":[{"area":"\u864e\u4e18\u533a","code":"320505000000"},{"area":"\u5434\u4e2d\u533a","code":"320506000000"},{"area":"\u76f8\u57ce\u533a","code":"320507000000"},{"area":"\u59d1\u82cf\u533a","code":"320508000000"},{"area":"\u5434\u6c5f\u533a","code":"320509000000"},{"area":"\u82cf\u5dde\u5de5\u4e1a\u56ed\u533a","code":"320576000000"},{"area":"\u5e38\u719f\u5e02","code":"320581000000"},{"area":"\u5f20\u5bb6\u6e2f\u5e02","code":"320582000000"},{"area":"\u6606\u5c71\u5e02","code":"320583000000"},{"area":"\u592a\u4ed3\u5e02","code":"320585000000"}]},{"city":"\u5357\u901a\u5e02","code":"320600000000","areas":[{"area":"\u901a\u5dde\u533a","code":"320612000000"},{"area":"\u5d07\u5ddd\u533a","code":"320613000000"},{"area":"\u6d77\u95e8\u533a","code":"320614000000"},{"area":"\u5982\u4e1c\u53bf","code":"320623000000"},{"area":"\u5357\u901a\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"320671000000"},{"area":"\u542f\u4e1c\u5e02","code":"320681000000"},{"area":"\u5982\u768b\u5e02","code":"320682000000"},{"area":"\u6d77\u5b89\u5e02","code":"320685000000"}]},{"city":"\u8fde\u4e91\u6e2f\u5e02","code":"320700000000","areas":[{"area":"\u8fde\u4e91\u533a","code":"320703000000"},{"area":"\u6d77\u5dde\u533a","code":"320706000000"},{"area":"\u8d63\u6986\u533a","code":"320707000000"},{"area":"\u4e1c\u6d77\u53bf","code":"320722000000"},{"area":"\u704c\u4e91\u53bf","code":"320723000000"},{"area":"\u704c\u5357\u53bf","code":"320724000000"},{"area":"\u8fde\u4e91\u6e2f\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"320771000000"}]},{"city":"\u6dee\u5b89\u5e02","code":"320800000000","areas":[{"area":"\u6dee\u5b89\u533a","code":"320803000000"},{"area":"\u6dee\u9634\u533a","code":"320804000000"},{"area":"\u6e05\u6c5f\u6d66\u533a","code":"320812000000"},{"area":"\u6d2a\u6cfd\u533a","code":"320813000000"},{"area":"\u6d9f\u6c34\u53bf","code":"320826000000"},{"area":"\u76f1\u7719\u53bf","code":"320830000000"},{"area":"\u91d1\u6e56\u53bf","code":"320831000000"},{"area":"\u6dee\u5b89\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"320871000000"}]},{"city":"\u76d0\u57ce\u5e02","code":"320900000000","areas":[{"area":"\u4ead\u6e56\u533a","code":"320902000000"},{"area":"\u76d0\u90fd\u533a","code":"320903000000"},{"area":"\u5927\u4e30\u533a","code":"320904000000"},{"area":"\u54cd\u6c34\u53bf","code":"320921000000"},{"area":"\u6ee8\u6d77\u53bf","code":"320922000000"},{"area":"\u961c\u5b81\u53bf","code":"320923000000"},{"area":"\u5c04\u9633\u53bf","code":"320924000000"},{"area":"\u5efa\u6e56\u53bf","code":"320925000000"},{"area":"\u76d0\u57ce\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"320971000000"},{"area":"\u4e1c\u53f0\u5e02","code":"320981000000"}]},{"city":"\u626c\u5dde\u5e02","code":"321000000000","areas":[{"area":"\u5e7f\u9675\u533a","code":"321002000000"},{"area":"\u9097\u6c5f\u533a","code":"321003000000"},{"area":"\u6c5f\u90fd\u533a","code":"321012000000"},{"area":"\u5b9d\u5e94\u53bf","code":"321023000000"},{"area":"\u626c\u5dde\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"321071000000"},{"area":"\u4eea\u5f81\u5e02","code":"321081000000"},{"area":"\u9ad8\u90ae\u5e02","code":"321084000000"}]},{"city":"\u9547\u6c5f\u5e02","code":"321100000000","areas":[{"area":"\u4eac\u53e3\u533a","code":"321102000000"},{"area":"\u6da6\u5dde\u533a","code":"321111000000"},{"area":"\u4e39\u5f92\u533a","code":"321112000000"},{"area":"\u9547\u6c5f\u65b0\u533a","code":"321171000000"},{"area":"\u4e39\u9633\u5e02","code":"321181000000"},{"area":"\u626c\u4e2d\u5e02","code":"321182000000"},{"area":"\u53e5\u5bb9\u5e02","code":"321183000000"}]},{"city":"\u6cf0\u5dde\u5e02","code":"321200000000","areas":[{"area":"\u6d77\u9675\u533a","code":"321202000000"},{"area":"\u9ad8\u6e2f\u533a","code":"321203000000"},{"area":"\u59dc\u5830\u533a","code":"321204000000"},{"area":"\u5174\u5316\u5e02","code":"321281000000"},{"area":"\u9756\u6c5f\u5e02","code":"321282000000"},{"area":"\u6cf0\u5174\u5e02","code":"321283000000"}]},{"city":"\u5bbf\u8fc1\u5e02","code":"321300000000","areas":[{"area":"\u5bbf\u57ce\u533a","code":"321302000000"},{"area":"\u5bbf\u8c6b\u533a","code":"321311000000"},{"area":"\u6cad\u9633\u53bf","code":"321322000000"},{"area":"\u6cd7\u9633\u53bf","code":"321323000000"},{"area":"\u6cd7\u6d2a\u53bf","code":"321324000000"},{"area":"\u5bbf\u8fc1\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"321371000000"}]}]},{"province":"\u6d59\u6c5f\u7701","code":"330000","citys":[{"city":"\u676d\u5dde\u5e02","code":"330100000000","areas":[{"area":"\u4e0a\u57ce\u533a","code":"330102000000"},{"area":"\u62f1\u5885\u533a","code":"330105000000"},{"area":"\u897f\u6e56\u533a","code":"330106000000"},{"area":"\u6ee8\u6c5f\u533a","code":"330108000000"},{"area":"\u8427\u5c71\u533a","code":"330109000000"},{"area":"\u4f59\u676d\u533a","code":"330110000000"},{"area":"\u5bcc\u9633\u533a","code":"330111000000"},{"area":"\u4e34\u5b89\u533a","code":"330112000000"},{"area":"\u4e34\u5e73\u533a","code":"330113000000"},{"area":"\u94b1\u5858\u533a","code":"330114000000"},{"area":"\u6850\u5e90\u53bf","code":"330122000000"},{"area":"\u6df3\u5b89\u53bf","code":"330127000000"},{"area":"\u5efa\u5fb7\u5e02","code":"330182000000"}]},{"city":"\u5b81\u6ce2\u5e02","code":"330200000000","areas":[{"area":"\u6d77\u66d9\u533a","code":"330203000000"},{"area":"\u6c5f\u5317\u533a","code":"330205000000"},{"area":"\u5317\u4ed1\u533a","code":"330206000000"},{"area":"\u9547\u6d77\u533a","code":"330211000000"},{"area":"\u911e\u5dde\u533a","code":"330212000000"},{"area":"\u5949\u5316\u533a","code":"330213000000"},{"area":"\u8c61\u5c71\u53bf","code":"330225000000"},{"area":"\u5b81\u6d77\u53bf","code":"330226000000"},{"area":"\u4f59\u59da\u5e02","code":"330281000000"},{"area":"\u6148\u6eaa\u5e02","code":"330282000000"}]},{"city":"\u6e29\u5dde\u5e02","code":"330300000000","areas":[{"area":"\u9e7f\u57ce\u533a","code":"330302000000"},{"area":"\u9f99\u6e7e\u533a","code":"330303000000"},{"area":"\u74ef\u6d77\u533a","code":"330304000000"},{"area":"\u6d1e\u5934\u533a","code":"330305000000"},{"area":"\u6c38\u5609\u53bf","code":"330324000000"},{"area":"\u5e73\u9633\u53bf","code":"330326000000"},{"area":"\u82cd\u5357\u53bf","code":"330327000000"},{"area":"\u6587\u6210\u53bf","code":"330328000000"},{"area":"\u6cf0\u987a\u53bf","code":"330329000000"},{"area":"\u745e\u5b89\u5e02","code":"330381000000"},{"area":"\u4e50\u6e05\u5e02","code":"330382000000"},{"area":"\u9f99\u6e2f\u5e02","code":"330383000000"}]},{"city":"\u5609\u5174\u5e02","code":"330400000000","areas":[{"area":"\u5357\u6e56\u533a","code":"330402000000"},{"area":"\u79c0\u6d32\u533a","code":"330411000000"},{"area":"\u5609\u5584\u53bf","code":"330421000000"},{"area":"\u6d77\u76d0\u53bf","code":"330424000000"},{"area":"\u6d77\u5b81\u5e02","code":"330481000000"},{"area":"\u5e73\u6e56\u5e02","code":"330482000000"},{"area":"\u6850\u4e61\u5e02","code":"330483000000"}]},{"city":"\u6e56\u5dde\u5e02","code":"330500000000","areas":[{"area":"\u5434\u5174\u533a","code":"330502000000"},{"area":"\u5357\u6d54\u533a","code":"330503000000"},{"area":"\u5fb7\u6e05\u53bf","code":"330521000000"},{"area":"\u957f\u5174\u53bf","code":"330522000000"},{"area":"\u5b89\u5409\u53bf","code":"330523000000"}]},{"city":"\u7ecd\u5174\u5e02","code":"330600000000","areas":[{"area":"\u8d8a\u57ce\u533a","code":"330602000000"},{"area":"\u67ef\u6865\u533a","code":"330603000000"},{"area":"\u4e0a\u865e\u533a","code":"330604000000"},{"area":"\u65b0\u660c\u53bf","code":"330624000000"},{"area":"\u8bf8\u66a8\u5e02","code":"330681000000"},{"area":"\u5d4a\u5dde\u5e02","code":"330683000000"}]},{"city":"\u91d1\u534e\u5e02","code":"330700000000","areas":[{"area":"\u5a7a\u57ce\u533a","code":"330702000000"},{"area":"\u91d1\u4e1c\u533a","code":"330703000000"},{"area":"\u6b66\u4e49\u53bf","code":"330723000000"},{"area":"\u6d66\u6c5f\u53bf","code":"330726000000"},{"area":"\u78d0\u5b89\u53bf","code":"330727000000"},{"area":"\u5170\u6eaa\u5e02","code":"330781000000"},{"area":"\u4e49\u4e4c\u5e02","code":"330782000000"},{"area":"\u4e1c\u9633\u5e02","code":"330783000000"},{"area":"\u6c38\u5eb7\u5e02","code":"330784000000"}]},{"city":"\u8862\u5dde\u5e02","code":"330800000000","areas":[{"area":"\u67ef\u57ce\u533a","code":"330802000000"},{"area":"\u8862\u6c5f\u533a","code":"330803000000"},{"area":"\u5e38\u5c71\u53bf","code":"330822000000"},{"area":"\u5f00\u5316\u53bf","code":"330824000000"},{"area":"\u9f99\u6e38\u53bf","code":"330825000000"},{"area":"\u6c5f\u5c71\u5e02","code":"330881000000"}]},{"city":"\u821f\u5c71\u5e02","code":"330900000000","areas":[{"area":"\u5b9a\u6d77\u533a","code":"330902000000"},{"area":"\u666e\u9640\u533a","code":"330903000000"},{"area":"\u5cb1\u5c71\u53bf","code":"330921000000"},{"area":"\u5d4a\u6cd7\u53bf","code":"330922000000"}]},{"city":"\u53f0\u5dde\u5e02","code":"331000000000","areas":[{"area":"\u6912\u6c5f\u533a","code":"331002000000"},{"area":"\u9ec4\u5ca9\u533a","code":"331003000000"},{"area":"\u8def\u6865\u533a","code":"331004000000"},{"area":"\u4e09\u95e8\u53bf","code":"331022000000"},{"area":"\u5929\u53f0\u53bf","code":"331023000000"},{"area":"\u4ed9\u5c45\u53bf","code":"331024000000"},{"area":"\u6e29\u5cad\u5e02","code":"331081000000"},{"area":"\u4e34\u6d77\u5e02","code":"331082000000"},{"area":"\u7389\u73af\u5e02","code":"331083000000"}]},{"city":"\u4e3d\u6c34\u5e02","code":"331100000000","areas":[{"area":"\u83b2\u90fd\u533a","code":"331102000000"},{"area":"\u9752\u7530\u53bf","code":"331121000000"},{"area":"\u7f19\u4e91\u53bf","code":"331122000000"},{"area":"\u9042\u660c\u53bf","code":"331123000000"},{"area":"\u677e\u9633\u53bf","code":"331124000000"},{"area":"\u4e91\u548c\u53bf","code":"331125000000"},{"area":"\u5e86\u5143\u53bf","code":"331126000000"},{"area":"\u666f\u5b81\u7572\u65cf\u81ea\u6cbb\u53bf","code":"331127000000"},{"area":"\u9f99\u6cc9\u5e02","code":"331181000000"}]}]},{"province":"\u5b89\u5fbd\u7701","code":"340000","citys":[{"city":"\u5408\u80a5\u5e02","code":"340100000000","areas":[{"area":"\u7476\u6d77\u533a","code":"340102000000"},{"area":"\u5e90\u9633\u533a","code":"340103000000"},{"area":"\u8700\u5c71\u533a","code":"340104000000"},{"area":"\u5305\u6cb3\u533a","code":"340111000000"},{"area":"\u957f\u4e30\u53bf","code":"340121000000"},{"area":"\u80a5\u4e1c\u53bf","code":"340122000000"},{"area":"\u80a5\u897f\u53bf","code":"340123000000"},{"area":"\u5e90\u6c5f\u53bf","code":"340124000000"},{"area":"\u5408\u80a5\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"340176000000"},{"area":"\u5408\u80a5\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"340177000000"},{"area":"\u5408\u80a5\u65b0\u7ad9\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"340178000000"},{"area":"\u5de2\u6e56\u5e02","code":"340181000000"}]},{"city":"\u829c\u6e56\u5e02","code":"340200000000","areas":[{"area":"\u955c\u6e56\u533a","code":"340202000000"},{"area":"\u9e20\u6c5f\u533a","code":"340207000000"},{"area":"\u5f0b\u6c5f\u533a","code":"340209000000"},{"area":"\u6e7e\u6c9a\u533a","code":"340210000000"},{"area":"\u7e41\u660c\u533a","code":"340212000000"},{"area":"\u5357\u9675\u53bf","code":"340223000000"},{"area":"\u829c\u6e56\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"340271000000"},{"area":"\u5b89\u5fbd\u829c\u6e56\u4e09\u5c71\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"340272000000"},{"area":"\u65e0\u4e3a\u5e02","code":"340281000000"}]},{"city":"\u868c\u57e0\u5e02","code":"340300000000","areas":[{"area":"\u9f99\u5b50\u6e56\u533a","code":"340302000000"},{"area":"\u868c\u5c71\u533a","code":"340303000000"},{"area":"\u79b9\u4f1a\u533a","code":"340304000000"},{"area":"\u6dee\u4e0a\u533a","code":"340311000000"},{"area":"\u6000\u8fdc\u53bf","code":"340321000000"},{"area":"\u4e94\u6cb3\u53bf","code":"340322000000"},{"area":"\u56fa\u9547\u53bf","code":"340323000000"},{"area":"\u868c\u57e0\u5e02\u9ad8\u65b0\u6280\u672f\u5f00\u53d1\u533a","code":"340371000000"},{"area":"\u868c\u57e0\u5e02\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"340372000000"}]},{"city":"\u6dee\u5357\u5e02","code":"340400000000","areas":[{"area":"\u5927\u901a\u533a","code":"340402000000"},{"area":"\u7530\u5bb6\u5eb5\u533a","code":"340403000000"},{"area":"\u8c22\u5bb6\u96c6\u533a","code":"340404000000"},{"area":"\u516b\u516c\u5c71\u533a","code":"340405000000"},{"area":"\u6f58\u96c6\u533a","code":"340406000000"},{"area":"\u51e4\u53f0\u53bf","code":"340421000000"},{"area":"\u5bff\u53bf","code":"340422000000"}]},{"city":"\u9a6c\u978d\u5c71\u5e02","code":"340500000000","areas":[{"area":"\u82b1\u5c71\u533a","code":"340503000000"},{"area":"\u96e8\u5c71\u533a","code":"340504000000"},{"area":"\u535a\u671b\u533a","code":"340506000000"},{"area":"\u5f53\u6d82\u53bf","code":"340521000000"},{"area":"\u542b\u5c71\u53bf","code":"340522000000"},{"area":"\u548c\u53bf","code":"340523000000"}]},{"city":"\u6dee\u5317\u5e02","code":"340600000000","areas":[{"area":"\u675c\u96c6\u533a","code":"340602000000"},{"area":"\u76f8\u5c71\u533a","code":"340603000000"},{"area":"\u70c8\u5c71\u533a","code":"340604000000"},{"area":"\u6fc9\u6eaa\u53bf","code":"340621000000"}]},{"city":"\u94dc\u9675\u5e02","code":"340700000000","areas":[{"area":"\u94dc\u5b98\u533a","code":"340705000000"},{"area":"\u4e49\u5b89\u533a","code":"340706000000"},{"area":"\u90ca\u533a","code":"340711000000"},{"area":"\u679e\u9633\u53bf","code":"340722000000"}]},{"city":"\u5b89\u5e86\u5e02","code":"340800000000","areas":[{"area":"\u8fce\u6c5f\u533a","code":"340802000000"},{"area":"\u5927\u89c2\u533a","code":"340803000000"},{"area":"\u5b9c\u79c0\u533a","code":"340811000000"},{"area":"\u6000\u5b81\u53bf","code":"340822000000"},{"area":"\u592a\u6e56\u53bf","code":"340825000000"},{"area":"\u5bbf\u677e\u53bf","code":"340826000000"},{"area":"\u671b\u6c5f\u53bf","code":"340827000000"},{"area":"\u5cb3\u897f\u53bf","code":"340828000000"},{"area":"\u5b89\u5fbd\u5b89\u5e86\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"340871000000"},{"area":"\u6850\u57ce\u5e02","code":"340881000000"},{"area":"\u6f5c\u5c71\u5e02","code":"340882000000"}]},{"city":"\u9ec4\u5c71\u5e02","code":"341000000000","areas":[{"area":"\u5c6f\u6eaa\u533a","code":"341002000000"},{"area":"\u9ec4\u5c71\u533a","code":"341003000000"},{"area":"\u5fbd\u5dde\u533a","code":"341004000000"},{"area":"\u6b59\u53bf","code":"341021000000"},{"area":"\u4f11\u5b81\u53bf","code":"341022000000"},{"area":"\u9edf\u53bf","code":"341023000000"},{"area":"\u7941\u95e8\u53bf","code":"341024000000"}]},{"city":"\u6ec1\u5dde\u5e02","code":"341100000000","areas":[{"area":"\u7405\u740a\u533a","code":"341102000000"},{"area":"\u5357\u8c2f\u533a","code":"341103000000"},{"area":"\u6765\u5b89\u53bf","code":"341122000000"},{"area":"\u5168\u6912\u53bf","code":"341124000000"},{"area":"\u5b9a\u8fdc\u53bf","code":"341125000000"},{"area":"\u51e4\u9633\u53bf","code":"341126000000"},{"area":"\u4e2d\u65b0\u82cf\u6ec1\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"341171000000"},{"area":"\u6ec1\u5dde\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"341172000000"},{"area":"\u5929\u957f\u5e02","code":"341181000000"},{"area":"\u660e\u5149\u5e02","code":"341182000000"}]},{"city":"\u961c\u9633\u5e02","code":"341200000000","areas":[{"area":"\u988d\u5dde\u533a","code":"341202000000"},{"area":"\u988d\u4e1c\u533a","code":"341203000000"},{"area":"\u988d\u6cc9\u533a","code":"341204000000"},{"area":"\u4e34\u6cc9\u53bf","code":"341221000000"},{"area":"\u592a\u548c\u53bf","code":"341222000000"},{"area":"\u961c\u5357\u53bf","code":"341225000000"},{"area":"\u988d\u4e0a\u53bf","code":"341226000000"},{"area":"\u961c\u9633\u5408\u80a5\u73b0\u4ee3\u4ea7\u4e1a\u56ed\u533a","code":"341271000000"},{"area":"\u961c\u9633\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"341272000000"},{"area":"\u754c\u9996\u5e02","code":"341282000000"}]},{"city":"\u5bbf\u5dde\u5e02","code":"341300000000","areas":[{"area":"\u57c7\u6865\u533a","code":"341302000000"},{"area":"\u7800\u5c71\u53bf","code":"341321000000"},{"area":"\u8427\u53bf","code":"341322000000"},{"area":"\u7075\u74a7\u53bf","code":"341323000000"},{"area":"\u6cd7\u53bf","code":"341324000000"},{"area":"\u5bbf\u5dde\u9a6c\u978d\u5c71\u73b0\u4ee3\u4ea7\u4e1a\u56ed\u533a","code":"341371000000"},{"area":"\u5bbf\u5dde\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"341372000000"}]},{"city":"\u516d\u5b89\u5e02","code":"341500000000","areas":[{"area":"\u91d1\u5b89\u533a","code":"341502000000"},{"area":"\u88d5\u5b89\u533a","code":"341503000000"},{"area":"\u53f6\u96c6\u533a","code":"341504000000"},{"area":"\u970d\u90b1\u53bf","code":"341522000000"},{"area":"\u8212\u57ce\u53bf","code":"341523000000"},{"area":"\u91d1\u5be8\u53bf","code":"341524000000"},{"area":"\u970d\u5c71\u53bf","code":"341525000000"}]},{"city":"\u4eb3\u5dde\u5e02","code":"341600000000","areas":[{"area":"\u8c2f\u57ce\u533a","code":"341602000000"},{"area":"\u6da1\u9633\u53bf","code":"341621000000"},{"area":"\u8499\u57ce\u53bf","code":"341622000000"},{"area":"\u5229\u8f9b\u53bf","code":"341623000000"}]},{"city":"\u6c60\u5dde\u5e02","code":"341700000000","areas":[{"area":"\u8d35\u6c60\u533a","code":"341702000000"},{"area":"\u4e1c\u81f3\u53bf","code":"341721000000"},{"area":"\u77f3\u53f0\u53bf","code":"341722000000"},{"area":"\u9752\u9633\u53bf","code":"341723000000"}]},{"city":"\u5ba3\u57ce\u5e02","code":"341800000000","areas":[{"area":"\u5ba3\u5dde\u533a","code":"341802000000"},{"area":"\u90ce\u6eaa\u53bf","code":"341821000000"},{"area":"\u6cfe\u53bf","code":"341823000000"},{"area":"\u7ee9\u6eaa\u53bf","code":"341824000000"},{"area":"\u65cc\u5fb7\u53bf","code":"341825000000"},{"area":"\u5ba3\u57ce\u5e02\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"341871000000"},{"area":"\u5b81\u56fd\u5e02","code":"341881000000"},{"area":"\u5e7f\u5fb7\u5e02","code":"341882000000"}]}]},{"province":"\u798f\u5efa\u7701","code":"350000","citys":[{"city":"\u798f\u5dde\u5e02","code":"350100000000","areas":[{"area":"\u9f13\u697c\u533a","code":"350102000000"},{"area":"\u53f0\u6c5f\u533a","code":"350103000000"},{"area":"\u4ed3\u5c71\u533a","code":"350104000000"},{"area":"\u9a6c\u5c3e\u533a","code":"350105000000"},{"area":"\u664b\u5b89\u533a","code":"350111000000"},{"area":"\u957f\u4e50\u533a","code":"350112000000"},{"area":"\u95fd\u4faf\u53bf","code":"350121000000"},{"area":"\u8fde\u6c5f\u53bf","code":"350122000000"},{"area":"\u7f57\u6e90\u53bf","code":"350123000000"},{"area":"\u95fd\u6e05\u53bf","code":"350124000000"},{"area":"\u6c38\u6cf0\u53bf","code":"350125000000"},{"area":"\u5e73\u6f6d\u53bf","code":"350128000000"},{"area":"\u798f\u6e05\u5e02","code":"350181000000"}]},{"city":"\u53a6\u95e8\u5e02","code":"350200000000","areas":[{"area":"\u601d\u660e\u533a","code":"350203000000"},{"area":"\u6d77\u6ca7\u533a","code":"350205000000"},{"area":"\u6e56\u91cc\u533a","code":"350206000000"},{"area":"\u96c6\u7f8e\u533a","code":"350211000000"},{"area":"\u540c\u5b89\u533a","code":"350212000000"},{"area":"\u7fd4\u5b89\u533a","code":"350213000000"}]},{"city":"\u8386\u7530\u5e02","code":"350300000000","areas":[{"area":"\u57ce\u53a2\u533a","code":"350302000000"},{"area":"\u6db5\u6c5f\u533a","code":"350303000000"},{"area":"\u8354\u57ce\u533a","code":"350304000000"},{"area":"\u79c0\u5c7f\u533a","code":"350305000000"},{"area":"\u4ed9\u6e38\u53bf","code":"350322000000"}]},{"city":"\u4e09\u660e\u5e02","code":"350400000000","areas":[{"area":"\u4e09\u5143\u533a","code":"350404000000"},{"area":"\u6c99\u53bf\u533a","code":"350405000000"},{"area":"\u660e\u6eaa\u53bf","code":"350421000000"},{"area":"\u6e05\u6d41\u53bf","code":"350423000000"},{"area":"\u5b81\u5316\u53bf","code":"350424000000"},{"area":"\u5927\u7530\u53bf","code":"350425000000"},{"area":"\u5c24\u6eaa\u53bf","code":"350426000000"},{"area":"\u5c06\u4e50\u53bf","code":"350428000000"},{"area":"\u6cf0\u5b81\u53bf","code":"350429000000"},{"area":"\u5efa\u5b81\u53bf","code":"350430000000"},{"area":"\u6c38\u5b89\u5e02","code":"350481000000"}]},{"city":"\u6cc9\u5dde\u5e02","code":"350500000000","areas":[{"area":"\u9ca4\u57ce\u533a","code":"350502000000"},{"area":"\u4e30\u6cfd\u533a","code":"350503000000"},{"area":"\u6d1b\u6c5f\u533a","code":"350504000000"},{"area":"\u6cc9\u6e2f\u533a","code":"350505000000"},{"area":"\u60e0\u5b89\u53bf","code":"350521000000"},{"area":"\u5b89\u6eaa\u53bf","code":"350524000000"},{"area":"\u6c38\u6625\u53bf","code":"350525000000"},{"area":"\u5fb7\u5316\u53bf","code":"350526000000"},{"area":"\u91d1\u95e8\u53bf","code":"350527000000"},{"area":"\u77f3\u72ee\u5e02","code":"350581000000"},{"area":"\u664b\u6c5f\u5e02","code":"350582000000"},{"area":"\u5357\u5b89\u5e02","code":"350583000000"}]},{"city":"\u6f33\u5dde\u5e02","code":"350600000000","areas":[{"area":"\u8297\u57ce\u533a","code":"350602000000"},{"area":"\u9f99\u6587\u533a","code":"350603000000"},{"area":"\u9f99\u6d77\u533a","code":"350604000000"},{"area":"\u957f\u6cf0\u533a","code":"350605000000"},{"area":"\u4e91\u9704\u53bf","code":"350622000000"},{"area":"\u6f33\u6d66\u53bf","code":"350623000000"},{"area":"\u8bcf\u5b89\u53bf","code":"350624000000"},{"area":"\u4e1c\u5c71\u53bf","code":"350626000000"},{"area":"\u5357\u9756\u53bf","code":"350627000000"},{"area":"\u5e73\u548c\u53bf","code":"350628000000"},{"area":"\u534e\u5b89\u53bf","code":"350629000000"}]},{"city":"\u5357\u5e73\u5e02","code":"350700000000","areas":[{"area":"\u5ef6\u5e73\u533a","code":"350702000000"},{"area":"\u5efa\u9633\u533a","code":"350703000000"},{"area":"\u987a\u660c\u53bf","code":"350721000000"},{"area":"\u6d66\u57ce\u53bf","code":"350722000000"},{"area":"\u5149\u6cfd\u53bf","code":"350723000000"},{"area":"\u677e\u6eaa\u53bf","code":"350724000000"},{"area":"\u653f\u548c\u53bf","code":"350725000000"},{"area":"\u90b5\u6b66\u5e02","code":"350781000000"},{"area":"\u6b66\u5937\u5c71\u5e02","code":"350782000000"},{"area":"\u5efa\u74ef\u5e02","code":"350783000000"}]},{"city":"\u9f99\u5ca9\u5e02","code":"350800000000","areas":[{"area":"\u65b0\u7f57\u533a","code":"350802000000"},{"area":"\u6c38\u5b9a\u533a","code":"350803000000"},{"area":"\u957f\u6c40\u53bf","code":"350821000000"},{"area":"\u4e0a\u676d\u53bf","code":"350823000000"},{"area":"\u6b66\u5e73\u53bf","code":"350824000000"},{"area":"\u8fde\u57ce\u53bf","code":"350825000000"},{"area":"\u6f33\u5e73\u5e02","code":"350881000000"}]},{"city":"\u5b81\u5fb7\u5e02","code":"350900000000","areas":[{"area":"\u8549\u57ce\u533a","code":"350902000000"},{"area":"\u971e\u6d66\u53bf","code":"350921000000"},{"area":"\u53e4\u7530\u53bf","code":"350922000000"},{"area":"\u5c4f\u5357\u53bf","code":"350923000000"},{"area":"\u5bff\u5b81\u53bf","code":"350924000000"},{"area":"\u5468\u5b81\u53bf","code":"350925000000"},{"area":"\u67d8\u8363\u53bf","code":"350926000000"},{"area":"\u798f\u5b89\u5e02","code":"350981000000"},{"area":"\u798f\u9f0e\u5e02","code":"350982000000"}]}]},{"province":"\u6c5f\u897f\u7701","code":"360000","citys":[{"city":"\u5357\u660c\u5e02","code":"360100000000","areas":[{"area":"\u4e1c\u6e56\u533a","code":"360102000000"},{"area":"\u897f\u6e56\u533a","code":"360103000000"},{"area":"\u9752\u4e91\u8c31\u533a","code":"360104000000"},{"area":"\u9752\u5c71\u6e56\u533a","code":"360111000000"},{"area":"\u65b0\u5efa\u533a","code":"360112000000"},{"area":"\u7ea2\u8c37\u6ee9\u533a","code":"360113000000"},{"area":"\u5357\u660c\u53bf","code":"360121000000"},{"area":"\u5b89\u4e49\u53bf","code":"360123000000"},{"area":"\u8fdb\u8d24\u53bf","code":"360124000000"}]},{"city":"\u666f\u5fb7\u9547\u5e02","code":"360200000000","areas":[{"area":"\u660c\u6c5f\u533a","code":"360202000000"},{"area":"\u73e0\u5c71\u533a","code":"360203000000"},{"area":"\u6d6e\u6881\u53bf","code":"360222000000"},{"area":"\u4e50\u5e73\u5e02","code":"360281000000"}]},{"city":"\u840d\u4e61\u5e02","code":"360300000000","areas":[{"area":"\u5b89\u6e90\u533a","code":"360302000000"},{"area":"\u6e58\u4e1c\u533a","code":"360313000000"},{"area":"\u83b2\u82b1\u53bf","code":"360321000000"},{"area":"\u4e0a\u6817\u53bf","code":"360322000000"},{"area":"\u82a6\u6eaa\u53bf","code":"360323000000"}]},{"city":"\u4e5d\u6c5f\u5e02","code":"360400000000","areas":[{"area":"\u6fc2\u6eaa\u533a","code":"360402000000"},{"area":"\u6d54\u9633\u533a","code":"360403000000"},{"area":"\u67f4\u6851\u533a","code":"360404000000"},{"area":"\u6b66\u5b81\u53bf","code":"360423000000"},{"area":"\u4fee\u6c34\u53bf","code":"360424000000"},{"area":"\u6c38\u4fee\u53bf","code":"360425000000"},{"area":"\u5fb7\u5b89\u53bf","code":"360426000000"},{"area":"\u90fd\u660c\u53bf","code":"360428000000"},{"area":"\u6e56\u53e3\u53bf","code":"360429000000"},{"area":"\u5f6d\u6cfd\u53bf","code":"360430000000"},{"area":"\u745e\u660c\u5e02","code":"360481000000"},{"area":"\u5171\u9752\u57ce\u5e02","code":"360482000000"},{"area":"\u5e90\u5c71\u5e02","code":"360483000000"}]},{"city":"\u65b0\u4f59\u5e02","code":"360500000000","areas":[{"area":"\u6e1d\u6c34\u533a","code":"360502000000"},{"area":"\u5206\u5b9c\u53bf","code":"360521000000"}]},{"city":"\u9e70\u6f6d\u5e02","code":"360600000000","areas":[{"area":"\u6708\u6e56\u533a","code":"360602000000"},{"area":"\u4f59\u6c5f\u533a","code":"360603000000"},{"area":"\u8d35\u6eaa\u5e02","code":"360681000000"}]},{"city":"\u8d63\u5dde\u5e02","code":"360700000000","areas":[{"area":"\u7ae0\u8d21\u533a","code":"360702000000"},{"area":"\u5357\u5eb7\u533a","code":"360703000000"},{"area":"\u8d63\u53bf\u533a","code":"360704000000"},{"area":"\u4fe1\u4e30\u53bf","code":"360722000000"},{"area":"\u5927\u4f59\u53bf","code":"360723000000"},{"area":"\u4e0a\u72b9\u53bf","code":"360724000000"},{"area":"\u5d07\u4e49\u53bf","code":"360725000000"},{"area":"\u5b89\u8fdc\u53bf","code":"360726000000"},{"area":"\u5b9a\u5357\u53bf","code":"360728000000"},{"area":"\u5168\u5357\u53bf","code":"360729000000"},{"area":"\u5b81\u90fd\u53bf","code":"360730000000"},{"area":"\u4e8e\u90fd\u53bf","code":"360731000000"},{"area":"\u5174\u56fd\u53bf","code":"360732000000"},{"area":"\u4f1a\u660c\u53bf","code":"360733000000"},{"area":"\u5bfb\u4e4c\u53bf","code":"360734000000"},{"area":"\u77f3\u57ce\u53bf","code":"360735000000"},{"area":"\u745e\u91d1\u5e02","code":"360781000000"},{"area":"\u9f99\u5357\u5e02","code":"360783000000"}]},{"city":"\u5409\u5b89\u5e02","code":"360800000000","areas":[{"area":"\u5409\u5dde\u533a","code":"360802000000"},{"area":"\u9752\u539f\u533a","code":"360803000000"},{"area":"\u5409\u5b89\u53bf","code":"360821000000"},{"area":"\u5409\u6c34\u53bf","code":"360822000000"},{"area":"\u5ce1\u6c5f\u53bf","code":"360823000000"},{"area":"\u65b0\u5e72\u53bf","code":"360824000000"},{"area":"\u6c38\u4e30\u53bf","code":"360825000000"},{"area":"\u6cf0\u548c\u53bf","code":"360826000000"},{"area":"\u9042\u5ddd\u53bf","code":"360827000000"},{"area":"\u4e07\u5b89\u53bf","code":"360828000000"},{"area":"\u5b89\u798f\u53bf","code":"360829000000"},{"area":"\u6c38\u65b0\u53bf","code":"360830000000"},{"area":"\u4e95\u5188\u5c71\u5e02","code":"360881000000"}]},{"city":"\u5b9c\u6625\u5e02","code":"360900000000","areas":[{"area":"\u8881\u5dde\u533a","code":"360902000000"},{"area":"\u5949\u65b0\u53bf","code":"360921000000"},{"area":"\u4e07\u8f7d\u53bf","code":"360922000000"},{"area":"\u4e0a\u9ad8\u53bf","code":"360923000000"},{"area":"\u5b9c\u4e30\u53bf","code":"360924000000"},{"area":"\u9756\u5b89\u53bf","code":"360925000000"},{"area":"\u94dc\u9f13\u53bf","code":"360926000000"},{"area":"\u4e30\u57ce\u5e02","code":"360981000000"},{"area":"\u6a1f\u6811\u5e02","code":"360982000000"},{"area":"\u9ad8\u5b89\u5e02","code":"360983000000"}]},{"city":"\u629a\u5dde\u5e02","code":"361000000000","areas":[{"area":"\u4e34\u5ddd\u533a","code":"361002000000"},{"area":"\u4e1c\u4e61\u533a","code":"361003000000"},{"area":"\u5357\u57ce\u53bf","code":"361021000000"},{"area":"\u9ece\u5ddd\u53bf","code":"361022000000"},{"area":"\u5357\u4e30\u53bf","code":"361023000000"},{"area":"\u5d07\u4ec1\u53bf","code":"361024000000"},{"area":"\u4e50\u5b89\u53bf","code":"361025000000"},{"area":"\u5b9c\u9ec4\u53bf","code":"361026000000"},{"area":"\u91d1\u6eaa\u53bf","code":"361027000000"},{"area":"\u8d44\u6eaa\u53bf","code":"361028000000"},{"area":"\u5e7f\u660c\u53bf","code":"361030000000"}]},{"city":"\u4e0a\u9976\u5e02","code":"361100000000","areas":[{"area":"\u4fe1\u5dde\u533a","code":"361102000000"},{"area":"\u5e7f\u4e30\u533a","code":"361103000000"},{"area":"\u5e7f\u4fe1\u533a","code":"361104000000"},{"area":"\u7389\u5c71\u53bf","code":"361123000000"},{"area":"\u94c5\u5c71\u53bf","code":"361124000000"},{"area":"\u6a2a\u5cf0\u53bf","code":"361125000000"},{"area":"\u5f0b\u9633\u53bf","code":"361126000000"},{"area":"\u4f59\u5e72\u53bf","code":"361127000000"},{"area":"\u9131\u9633\u53bf","code":"361128000000"},{"area":"\u4e07\u5e74\u53bf","code":"361129000000"},{"area":"\u5a7a\u6e90\u53bf","code":"361130000000"},{"area":"\u5fb7\u5174\u5e02","code":"361181000000"}]}]},{"province":"\u5c71\u4e1c\u7701","code":"370000","citys":[{"city":"\u6d4e\u5357\u5e02","code":"370100000000","areas":[{"area":"\u5386\u4e0b\u533a","code":"370102000000"},{"area":"\u5e02\u4e2d\u533a","code":"370103000000"},{"area":"\u69d0\u836b\u533a","code":"370104000000"},{"area":"\u5929\u6865\u533a","code":"370105000000"},{"area":"\u5386\u57ce\u533a","code":"370112000000"},{"area":"\u957f\u6e05\u533a","code":"370113000000"},{"area":"\u7ae0\u4e18\u533a","code":"370114000000"},{"area":"\u6d4e\u9633\u533a","code":"370115000000"},{"area":"\u83b1\u829c\u533a","code":"370116000000"},{"area":"\u94a2\u57ce\u533a","code":"370117000000"},{"area":"\u5e73\u9634\u53bf","code":"370124000000"},{"area":"\u5546\u6cb3\u53bf","code":"370126000000"},{"area":"\u6d4e\u5357\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"370176000000"}]},{"city":"\u9752\u5c9b\u5e02","code":"370200000000","areas":[{"area":"\u5e02\u5357\u533a","code":"370202000000"},{"area":"\u5e02\u5317\u533a","code":"370203000000"},{"area":"\u9ec4\u5c9b\u533a","code":"370211000000"},{"area":"\u5d02\u5c71\u533a","code":"370212000000"},{"area":"\u674e\u6ca7\u533a","code":"370213000000"},{"area":"\u57ce\u9633\u533a","code":"370214000000"},{"area":"\u5373\u58a8\u533a","code":"370215000000"},{"area":"\u80f6\u5dde\u5e02","code":"370281000000"},{"area":"\u5e73\u5ea6\u5e02","code":"370283000000"},{"area":"\u83b1\u897f\u5e02","code":"370285000000"}]},{"city":"\u6dc4\u535a\u5e02","code":"370300000000","areas":[{"area":"\u6dc4\u5ddd\u533a","code":"370302000000"},{"area":"\u5f20\u5e97\u533a","code":"370303000000"},{"area":"\u535a\u5c71\u533a","code":"370304000000"},{"area":"\u4e34\u6dc4\u533a","code":"370305000000"},{"area":"\u5468\u6751\u533a","code":"370306000000"},{"area":"\u6853\u53f0\u53bf","code":"370321000000"},{"area":"\u9ad8\u9752\u53bf","code":"370322000000"},{"area":"\u6c82\u6e90\u53bf","code":"370323000000"}]},{"city":"\u67a3\u5e84\u5e02","code":"370400000000","areas":[{"area":"\u5e02\u4e2d\u533a","code":"370402000000"},{"area":"\u859b\u57ce\u533a","code":"370403000000"},{"area":"\u5cc4\u57ce\u533a","code":"370404000000"},{"area":"\u53f0\u513f\u5e84\u533a","code":"370405000000"},{"area":"\u5c71\u4ead\u533a","code":"370406000000"},{"area":"\u6ed5\u5dde\u5e02","code":"370481000000"}]},{"city":"\u4e1c\u8425\u5e02","code":"370500000000","areas":[{"area":"\u4e1c\u8425\u533a","code":"370502000000"},{"area":"\u6cb3\u53e3\u533a","code":"370503000000"},{"area":"\u57a6\u5229\u533a","code":"370505000000"},{"area":"\u5229\u6d25\u53bf","code":"370522000000"},{"area":"\u5e7f\u9976\u53bf","code":"370523000000"},{"area":"\u4e1c\u8425\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"370571000000"},{"area":"\u4e1c\u8425\u6e2f\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"370572000000"}]},{"city":"\u70df\u53f0\u5e02","code":"370600000000","areas":[{"area":"\u829d\u7f58\u533a","code":"370602000000"},{"area":"\u798f\u5c71\u533a","code":"370611000000"},{"area":"\u725f\u5e73\u533a","code":"370612000000"},{"area":"\u83b1\u5c71\u533a","code":"370613000000"},{"area":"\u84ec\u83b1\u533a","code":"370614000000"},{"area":"\u70df\u53f0\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"370671000000"},{"area":"\u70df\u53f0\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"370676000000"},{"area":"\u9f99\u53e3\u5e02","code":"370681000000"},{"area":"\u83b1\u9633\u5e02","code":"370682000000"},{"area":"\u83b1\u5dde\u5e02","code":"370683000000"},{"area":"\u62db\u8fdc\u5e02","code":"370685000000"},{"area":"\u6816\u971e\u5e02","code":"370686000000"},{"area":"\u6d77\u9633\u5e02","code":"370687000000"}]},{"city":"\u6f4d\u574a\u5e02","code":"370700000000","areas":[{"area":"\u6f4d\u57ce\u533a","code":"370702000000"},{"area":"\u5bd2\u4ead\u533a","code":"370703000000"},{"area":"\u574a\u5b50\u533a","code":"370704000000"},{"area":"\u594e\u6587\u533a","code":"370705000000"},{"area":"\u4e34\u6710\u53bf","code":"370724000000"},{"area":"\u660c\u4e50\u53bf","code":"370725000000"},{"area":"\u6f4d\u574a\u6ee8\u6d77\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"370772000000"},{"area":"\u9752\u5dde\u5e02","code":"370781000000"},{"area":"\u8bf8\u57ce\u5e02","code":"370782000000"},{"area":"\u5bff\u5149\u5e02","code":"370783000000"},{"area":"\u5b89\u4e18\u5e02","code":"370784000000"},{"area":"\u9ad8\u5bc6\u5e02","code":"370785000000"},{"area":"\u660c\u9091\u5e02","code":"370786000000"}]},{"city":"\u6d4e\u5b81\u5e02","code":"370800000000","areas":[{"area":"\u4efb\u57ce\u533a","code":"370811000000"},{"area":"\u5156\u5dde\u533a","code":"370812000000"},{"area":"\u5fae\u5c71\u53bf","code":"370826000000"},{"area":"\u9c7c\u53f0\u53bf","code":"370827000000"},{"area":"\u91d1\u4e61\u53bf","code":"370828000000"},{"area":"\u5609\u7965\u53bf","code":"370829000000"},{"area":"\u6c76\u4e0a\u53bf","code":"370830000000"},{"area":"\u6cd7\u6c34\u53bf","code":"370831000000"},{"area":"\u6881\u5c71\u53bf","code":"370832000000"},{"area":"\u6d4e\u5b81\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"370871000000"},{"area":"\u66f2\u961c\u5e02","code":"370881000000"},{"area":"\u90b9\u57ce\u5e02","code":"370883000000"}]},{"city":"\u6cf0\u5b89\u5e02","code":"370900000000","areas":[{"area":"\u6cf0\u5c71\u533a","code":"370902000000"},{"area":"\u5cb1\u5cb3\u533a","code":"370911000000"},{"area":"\u5b81\u9633\u53bf","code":"370921000000"},{"area":"\u4e1c\u5e73\u53bf","code":"370923000000"},{"area":"\u65b0\u6cf0\u5e02","code":"370982000000"},{"area":"\u80a5\u57ce\u5e02","code":"370983000000"}]},{"city":"\u5a01\u6d77\u5e02","code":"371000000000","areas":[{"area":"\u73af\u7fe0\u533a","code":"371002000000"},{"area":"\u6587\u767b\u533a","code":"371003000000"},{"area":"\u5a01\u6d77\u706b\u70ac\u9ad8\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"371071000000"},{"area":"\u5a01\u6d77\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"371072000000"},{"area":"\u5a01\u6d77\u4e34\u6e2f\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"371073000000"},{"area":"\u8363\u6210\u5e02","code":"371082000000"},{"area":"\u4e73\u5c71\u5e02","code":"371083000000"}]},{"city":"\u65e5\u7167\u5e02","code":"371100000000","areas":[{"area":"\u4e1c\u6e2f\u533a","code":"371102000000"},{"area":"\u5c9a\u5c71\u533a","code":"371103000000"},{"area":"\u4e94\u83b2\u53bf","code":"371121000000"},{"area":"\u8392\u53bf","code":"371122000000"},{"area":"\u65e5\u7167\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"371171000000"}]},{"city":"\u4e34\u6c82\u5e02","code":"371300000000","areas":[{"area":"\u5170\u5c71\u533a","code":"371302000000"},{"area":"\u7f57\u5e84\u533a","code":"371311000000"},{"area":"\u6cb3\u4e1c\u533a","code":"371312000000"},{"area":"\u6c82\u5357\u53bf","code":"371321000000"},{"area":"\u90ef\u57ce\u53bf","code":"371322000000"},{"area":"\u6c82\u6c34\u53bf","code":"371323000000"},{"area":"\u5170\u9675\u53bf","code":"371324000000"},{"area":"\u8d39\u53bf","code":"371325000000"},{"area":"\u5e73\u9091\u53bf","code":"371326000000"},{"area":"\u8392\u5357\u53bf","code":"371327000000"},{"area":"\u8499\u9634\u53bf","code":"371328000000"},{"area":"\u4e34\u6cad\u53bf","code":"371329000000"},{"area":"\u4e34\u6c82\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"371371000000"}]},{"city":"\u5fb7\u5dde\u5e02","code":"371400000000","areas":[{"area":"\u5fb7\u57ce\u533a","code":"371402000000"},{"area":"\u9675\u57ce\u533a","code":"371403000000"},{"area":"\u5b81\u6d25\u53bf","code":"371422000000"},{"area":"\u5e86\u4e91\u53bf","code":"371423000000"},{"area":"\u4e34\u9091\u53bf","code":"371424000000"},{"area":"\u9f50\u6cb3\u53bf","code":"371425000000"},{"area":"\u5e73\u539f\u53bf","code":"371426000000"},{"area":"\u590f\u6d25\u53bf","code":"371427000000"},{"area":"\u6b66\u57ce\u53bf","code":"371428000000"},{"area":"\u5fb7\u5dde\u5929\u8862\u65b0\u533a","code":"371471000000"},{"area":"\u4e50\u9675\u5e02","code":"371481000000"},{"area":"\u79b9\u57ce\u5e02","code":"371482000000"}]},{"city":"\u804a\u57ce\u5e02","code":"371500000000","areas":[{"area":"\u4e1c\u660c\u5e9c\u533a","code":"371502000000"},{"area":"\u830c\u5e73\u533a","code":"371503000000"},{"area":"\u9633\u8c37\u53bf","code":"371521000000"},{"area":"\u8398\u53bf","code":"371522000000"},{"area":"\u4e1c\u963f\u53bf","code":"371524000000"},{"area":"\u51a0\u53bf","code":"371525000000"},{"area":"\u9ad8\u5510\u53bf","code":"371526000000"},{"area":"\u4e34\u6e05\u5e02","code":"371581000000"}]},{"city":"\u6ee8\u5dde\u5e02","code":"371600000000","areas":[{"area":"\u6ee8\u57ce\u533a","code":"371602000000"},{"area":"\u6cbe\u5316\u533a","code":"371603000000"},{"area":"\u60e0\u6c11\u53bf","code":"371621000000"},{"area":"\u9633\u4fe1\u53bf","code":"371622000000"},{"area":"\u65e0\u68e3\u53bf","code":"371623000000"},{"area":"\u535a\u5174\u53bf","code":"371625000000"},{"area":"\u90b9\u5e73\u5e02","code":"371681000000"}]},{"city":"\u83cf\u6cfd\u5e02","code":"371700000000","areas":[{"area":"\u7261\u4e39\u533a","code":"371702000000"},{"area":"\u5b9a\u9676\u533a","code":"371703000000"},{"area":"\u66f9\u53bf","code":"371721000000"},{"area":"\u5355\u53bf","code":"371722000000"},{"area":"\u6210\u6b66\u53bf","code":"371723000000"},{"area":"\u5de8\u91ce\u53bf","code":"371724000000"},{"area":"\u90d3\u57ce\u53bf","code":"371725000000"},{"area":"\u9104\u57ce\u53bf","code":"371726000000"},{"area":"\u4e1c\u660e\u53bf","code":"371728000000"},{"area":"\u83cf\u6cfd\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"371771000000"},{"area":"\u83cf\u6cfd\u9ad8\u65b0\u6280\u672f\u5f00\u53d1\u533a","code":"371772000000"}]}]},{"province":"\u6cb3\u5357\u7701","code":"410000","citys":[{"city":"\u90d1\u5dde\u5e02","code":"410100000000","areas":[{"area":"\u4e2d\u539f\u533a","code":"410102000000"},{"area":"\u4e8c\u4e03\u533a","code":"410103000000"},{"area":"\u7ba1\u57ce\u56de\u65cf\u533a","code":"410104000000"},{"area":"\u91d1\u6c34\u533a","code":"410105000000"},{"area":"\u4e0a\u8857\u533a","code":"410106000000"},{"area":"\u60e0\u6d4e\u533a","code":"410108000000"},{"area":"\u4e2d\u725f\u53bf","code":"410122000000"},{"area":"\u90d1\u5dde\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"410171000000"},{"area":"\u90d1\u5dde\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"410172000000"},{"area":"\u90d1\u5dde\u822a\u7a7a\u6e2f\u7ecf\u6d4e\u7efc\u5408\u5b9e\u9a8c\u533a","code":"410173000000"},{"area":"\u5de9\u4e49\u5e02","code":"410181000000"},{"area":"\u8365\u9633\u5e02","code":"410182000000"},{"area":"\u65b0\u5bc6\u5e02","code":"410183000000"},{"area":"\u65b0\u90d1\u5e02","code":"410184000000"},{"area":"\u767b\u5c01\u5e02","code":"410185000000"}]},{"city":"\u5f00\u5c01\u5e02","code":"410200000000","areas":[{"area":"\u9f99\u4ead\u533a","code":"410202000000"},{"area":"\u987a\u6cb3\u56de\u65cf\u533a","code":"410203000000"},{"area":"\u9f13\u697c\u533a","code":"410204000000"},{"area":"\u79b9\u738b\u53f0\u533a","code":"410205000000"},{"area":"\u7965\u7b26\u533a","code":"410212000000"},{"area":"\u675e\u53bf","code":"410221000000"},{"area":"\u901a\u8bb8\u53bf","code":"410222000000"},{"area":"\u5c09\u6c0f\u53bf","code":"410223000000"},{"area":"\u5170\u8003\u53bf","code":"410225000000"}]},{"city":"\u6d1b\u9633\u5e02","code":"410300000000","areas":[{"area":"\u8001\u57ce\u533a","code":"410302000000"},{"area":"\u897f\u5de5\u533a","code":"410303000000"},{"area":"\u700d\u6cb3\u56de\u65cf\u533a","code":"410304000000"},{"area":"\u6da7\u897f\u533a","code":"410305000000"},{"area":"\u5043\u5e08\u533a","code":"410307000000"},{"area":"\u5b5f\u6d25\u533a","code":"410308000000"},{"area":"\u6d1b\u9f99\u533a","code":"410311000000"},{"area":"\u65b0\u5b89\u53bf","code":"410323000000"},{"area":"\u683e\u5ddd\u53bf","code":"410324000000"},{"area":"\u5d69\u53bf","code":"410325000000"},{"area":"\u6c5d\u9633\u53bf","code":"410326000000"},{"area":"\u5b9c\u9633\u53bf","code":"410327000000"},{"area":"\u6d1b\u5b81\u53bf","code":"410328000000"},{"area":"\u4f0a\u5ddd\u53bf","code":"410329000000"},{"area":"\u6d1b\u9633\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"410371000000"}]},{"city":"\u5e73\u9876\u5c71\u5e02","code":"410400000000","areas":[{"area":"\u65b0\u534e\u533a","code":"410402000000"},{"area":"\u536b\u4e1c\u533a","code":"410403000000"},{"area":"\u77f3\u9f99\u533a","code":"410404000000"},{"area":"\u6e5b\u6cb3\u533a","code":"410411000000"},{"area":"\u5b9d\u4e30\u53bf","code":"410421000000"},{"area":"\u53f6\u53bf","code":"410422000000"},{"area":"\u9c81\u5c71\u53bf","code":"410423000000"},{"area":"\u90cf\u53bf","code":"410425000000"},{"area":"\u5e73\u9876\u5c71\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"410471000000"},{"area":"\u5e73\u9876\u5c71\u5e02\u57ce\u4e61\u4e00\u4f53\u5316\u793a\u8303\u533a","code":"410472000000"},{"area":"\u821e\u94a2\u5e02","code":"410481000000"},{"area":"\u6c5d\u5dde\u5e02","code":"410482000000"}]},{"city":"\u5b89\u9633\u5e02","code":"410500000000","areas":[{"area":"\u6587\u5cf0\u533a","code":"410502000000"},{"area":"\u5317\u5173\u533a","code":"410503000000"},{"area":"\u6bb7\u90fd\u533a","code":"410505000000"},{"area":"\u9f99\u5b89\u533a","code":"410506000000"},{"area":"\u5b89\u9633\u53bf","code":"410522000000"},{"area":"\u6c64\u9634\u53bf","code":"410523000000"},{"area":"\u6ed1\u53bf","code":"410526000000"},{"area":"\u5185\u9ec4\u53bf","code":"410527000000"},{"area":"\u5b89\u9633\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"410571000000"},{"area":"\u6797\u5dde\u5e02","code":"410581000000"}]},{"city":"\u9e64\u58c1\u5e02","code":"410600000000","areas":[{"area":"\u9e64\u5c71\u533a","code":"410602000000"},{"area":"\u5c71\u57ce\u533a","code":"410603000000"},{"area":"\u6dc7\u6ee8\u533a","code":"410611000000"},{"area":"\u6d5a\u53bf","code":"410621000000"},{"area":"\u6dc7\u53bf","code":"410622000000"},{"area":"\u9e64\u58c1\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"410671000000"}]},{"city":"\u65b0\u4e61\u5e02","code":"410700000000","areas":[{"area":"\u7ea2\u65d7\u533a","code":"410702000000"},{"area":"\u536b\u6ee8\u533a","code":"410703000000"},{"area":"\u51e4\u6cc9\u533a","code":"410704000000"},{"area":"\u7267\u91ce\u533a","code":"410711000000"},{"area":"\u65b0\u4e61\u53bf","code":"410721000000"},{"area":"\u83b7\u5609\u53bf","code":"410724000000"},{"area":"\u539f\u9633\u53bf","code":"410725000000"},{"area":"\u5ef6\u6d25\u53bf","code":"410726000000"},{"area":"\u5c01\u4e18\u53bf","code":"410727000000"},{"area":"\u65b0\u4e61\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"410771000000"},{"area":"\u65b0\u4e61\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"410772000000"},{"area":"\u65b0\u4e61\u5e02\u5e73\u539f\u57ce\u4e61\u4e00\u4f53\u5316\u793a\u8303\u533a","code":"410773000000"},{"area":"\u536b\u8f89\u5e02","code":"410781000000"},{"area":"\u8f89\u53bf\u5e02","code":"410782000000"},{"area":"\u957f\u57a3\u5e02","code":"410783000000"}]},{"city":"\u7126\u4f5c\u5e02","code":"410800000000","areas":[{"area":"\u89e3\u653e\u533a","code":"410802000000"},{"area":"\u4e2d\u7ad9\u533a","code":"410803000000"},{"area":"\u9a6c\u6751\u533a","code":"410804000000"},{"area":"\u5c71\u9633\u533a","code":"410811000000"},{"area":"\u4fee\u6b66\u53bf","code":"410821000000"},{"area":"\u535a\u7231\u53bf","code":"410822000000"},{"area":"\u6b66\u965f\u53bf","code":"410823000000"},{"area":"\u6e29\u53bf","code":"410825000000"},{"area":"\u7126\u4f5c\u57ce\u4e61\u4e00\u4f53\u5316\u793a\u8303\u533a","code":"410871000000"},{"area":"\u6c81\u9633\u5e02","code":"410882000000"},{"area":"\u5b5f\u5dde\u5e02","code":"410883000000"}]},{"city":"\u6fee\u9633\u5e02","code":"410900000000","areas":[{"area":"\u534e\u9f99\u533a","code":"410902000000"},{"area":"\u6e05\u4e30\u53bf","code":"410922000000"},{"area":"\u5357\u4e50\u53bf","code":"410923000000"},{"area":"\u8303\u53bf","code":"410926000000"},{"area":"\u53f0\u524d\u53bf","code":"410927000000"},{"area":"\u6fee\u9633\u53bf","code":"410928000000"},{"area":"\u6cb3\u5357\u6fee\u9633\u5de5\u4e1a\u56ed\u533a","code":"410971000000"},{"area":"\u6fee\u9633\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"410972000000"}]},{"city":"\u8bb8\u660c\u5e02","code":"411000000000","areas":[{"area":"\u9b4f\u90fd\u533a","code":"411002000000"},{"area":"\u5efa\u5b89\u533a","code":"411003000000"},{"area":"\u9122\u9675\u53bf","code":"411024000000"},{"area":"\u8944\u57ce\u53bf","code":"411025000000"},{"area":"\u8bb8\u660c\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"411071000000"},{"area":"\u79b9\u5dde\u5e02","code":"411081000000"},{"area":"\u957f\u845b\u5e02","code":"411082000000"}]},{"city":"\u6f2f\u6cb3\u5e02","code":"411100000000","areas":[{"area":"\u6e90\u6c47\u533a","code":"411102000000"},{"area":"\u90fe\u57ce\u533a","code":"411103000000"},{"area":"\u53ec\u9675\u533a","code":"411104000000"},{"area":"\u821e\u9633\u53bf","code":"411121000000"},{"area":"\u4e34\u988d\u53bf","code":"411122000000"},{"area":"\u6f2f\u6cb3\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"411171000000"}]},{"city":"\u4e09\u95e8\u5ce1\u5e02","code":"411200000000","areas":[{"area":"\u6e56\u6ee8\u533a","code":"411202000000"},{"area":"\u9655\u5dde\u533a","code":"411203000000"},{"area":"\u6e11\u6c60\u53bf","code":"411221000000"},{"area":"\u5362\u6c0f\u53bf","code":"411224000000"},{"area":"\u6cb3\u5357\u4e09\u95e8\u5ce1\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"411271000000"},{"area":"\u4e49\u9a6c\u5e02","code":"411281000000"},{"area":"\u7075\u5b9d\u5e02","code":"411282000000"}]},{"city":"\u5357\u9633\u5e02","code":"411300000000","areas":[{"area":"\u5b9b\u57ce\u533a","code":"411302000000"},{"area":"\u5367\u9f99\u533a","code":"411303000000"},{"area":"\u5357\u53ec\u53bf","code":"411321000000"},{"area":"\u65b9\u57ce\u53bf","code":"411322000000"},{"area":"\u897f\u5ce1\u53bf","code":"411323000000"},{"area":"\u9547\u5e73\u53bf","code":"411324000000"},{"area":"\u5185\u4e61\u53bf","code":"411325000000"},{"area":"\u6dc5\u5ddd\u53bf","code":"411326000000"},{"area":"\u793e\u65d7\u53bf","code":"411327000000"},{"area":"\u5510\u6cb3\u53bf","code":"411328000000"},{"area":"\u65b0\u91ce\u53bf","code":"411329000000"},{"area":"\u6850\u67cf\u53bf","code":"411330000000"},{"area":"\u5357\u9633\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"411371000000"},{"area":"\u5357\u9633\u5e02\u57ce\u4e61\u4e00\u4f53\u5316\u793a\u8303\u533a","code":"411372000000"},{"area":"\u9093\u5dde\u5e02","code":"411381000000"}]},{"city":"\u5546\u4e18\u5e02","code":"411400000000","areas":[{"area":"\u6881\u56ed\u533a","code":"411402000000"},{"area":"\u7762\u9633\u533a","code":"411403000000"},{"area":"\u6c11\u6743\u53bf","code":"411421000000"},{"area":"\u7762\u53bf","code":"411422000000"},{"area":"\u5b81\u9675\u53bf","code":"411423000000"},{"area":"\u67d8\u57ce\u53bf","code":"411424000000"},{"area":"\u865e\u57ce\u53bf","code":"411425000000"},{"area":"\u590f\u9091\u53bf","code":"411426000000"},{"area":"\u8c6b\u4e1c\u7efc\u5408\u7269\u6d41\u4ea7\u4e1a\u805a\u96c6\u533a","code":"411471000000"},{"area":"\u6cb3\u5357\u5546\u4e18\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"411472000000"},{"area":"\u6c38\u57ce\u5e02","code":"411481000000"}]},{"city":"\u4fe1\u9633\u5e02","code":"411500000000","areas":[{"area":"\u6d49\u6cb3\u533a","code":"411502000000"},{"area":"\u5e73\u6865\u533a","code":"411503000000"},{"area":"\u7f57\u5c71\u53bf","code":"411521000000"},{"area":"\u5149\u5c71\u53bf","code":"411522000000"},{"area":"\u65b0\u53bf","code":"411523000000"},{"area":"\u5546\u57ce\u53bf","code":"411524000000"},{"area":"\u56fa\u59cb\u53bf","code":"411525000000"},{"area":"\u6f62\u5ddd\u53bf","code":"411526000000"},{"area":"\u6dee\u6ee8\u53bf","code":"411527000000"},{"area":"\u606f\u53bf","code":"411528000000"},{"area":"\u4fe1\u9633\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"411571000000"}]},{"city":"\u5468\u53e3\u5e02","code":"411600000000","areas":[{"area":"\u5ddd\u6c47\u533a","code":"411602000000"},{"area":"\u6dee\u9633\u533a","code":"411603000000"},{"area":"\u6276\u6c9f\u53bf","code":"411621000000"},{"area":"\u897f\u534e\u53bf","code":"411622000000"},{"area":"\u5546\u6c34\u53bf","code":"411623000000"},{"area":"\u6c88\u4e18\u53bf","code":"411624000000"},{"area":"\u90f8\u57ce\u53bf","code":"411625000000"},{"area":"\u592a\u5eb7\u53bf","code":"411627000000"},{"area":"\u9e7f\u9091\u53bf","code":"411628000000"},{"area":"\u5468\u53e3\u4e34\u6e2f\u5f00\u53d1\u533a","code":"411671000000"},{"area":"\u9879\u57ce\u5e02","code":"411681000000"}]},{"city":"\u9a7b\u9a6c\u5e97\u5e02","code":"411700000000","areas":[{"area":"\u9a7f\u57ce\u533a","code":"411702000000"},{"area":"\u897f\u5e73\u53bf","code":"411721000000"},{"area":"\u4e0a\u8521\u53bf","code":"411722000000"},{"area":"\u5e73\u8206\u53bf","code":"411723000000"},{"area":"\u6b63\u9633\u53bf","code":"411724000000"},{"area":"\u786e\u5c71\u53bf","code":"411725000000"},{"area":"\u6ccc\u9633\u53bf","code":"411726000000"},{"area":"\u6c5d\u5357\u53bf","code":"411727000000"},{"area":"\u9042\u5e73\u53bf","code":"411728000000"},{"area":"\u65b0\u8521\u53bf","code":"411729000000"},{"area":"\u6cb3\u5357\u9a7b\u9a6c\u5e97\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"411771000000"}]},{"city":"\u7701\u76f4\u8f96\u53bf\u7ea7\u884c\u653f\u533a\u5212","code":"419000000000","areas":[{"area":"\u6d4e\u6e90\u5e02","code":"419001000000"}]}]},{"province":"\u6e56\u5317\u7701","code":"420000","citys":[{"city":"\u6b66\u6c49\u5e02","code":"420100000000","areas":[{"area":"\u6c5f\u5cb8\u533a","code":"420102000000"},{"area":"\u6c5f\u6c49\u533a","code":"420103000000"},{"area":"\u785a\u53e3\u533a","code":"420104000000"},{"area":"\u6c49\u9633\u533a","code":"420105000000"},{"area":"\u6b66\u660c\u533a","code":"420106000000"},{"area":"\u9752\u5c71\u533a","code":"420107000000"},{"area":"\u6d2a\u5c71\u533a","code":"420111000000"},{"area":"\u4e1c\u897f\u6e56\u533a","code":"420112000000"},{"area":"\u6c49\u5357\u533a","code":"420113000000"},{"area":"\u8521\u7538\u533a","code":"420114000000"},{"area":"\u6c5f\u590f\u533a","code":"420115000000"},{"area":"\u9ec4\u9642\u533a","code":"420116000000"},{"area":"\u65b0\u6d32\u533a","code":"420117000000"}]},{"city":"\u9ec4\u77f3\u5e02","code":"420200000000","areas":[{"area":"\u9ec4\u77f3\u6e2f\u533a","code":"420202000000"},{"area":"\u897f\u585e\u5c71\u533a","code":"420203000000"},{"area":"\u4e0b\u9646\u533a","code":"420204000000"},{"area":"\u94c1\u5c71\u533a","code":"420205000000"},{"area":"\u9633\u65b0\u53bf","code":"420222000000"},{"area":"\u5927\u51b6\u5e02","code":"420281000000"}]},{"city":"\u5341\u5830\u5e02","code":"420300000000","areas":[{"area":"\u8305\u7bad\u533a","code":"420302000000"},{"area":"\u5f20\u6e7e\u533a","code":"420303000000"},{"area":"\u90e7\u9633\u533a","code":"420304000000"},{"area":"\u90e7\u897f\u53bf","code":"420322000000"},{"area":"\u7af9\u5c71\u53bf","code":"420323000000"},{"area":"\u7af9\u6eaa\u53bf","code":"420324000000"},{"area":"\u623f\u53bf","code":"420325000000"},{"area":"\u4e39\u6c5f\u53e3\u5e02","code":"420381000000"}]},{"city":"\u5b9c\u660c\u5e02","code":"420500000000","areas":[{"area":"\u897f\u9675\u533a","code":"420502000000"},{"area":"\u4f0d\u5bb6\u5c97\u533a","code":"420503000000"},{"area":"\u70b9\u519b\u533a","code":"420504000000"},{"area":"\u7307\u4ead\u533a","code":"420505000000"},{"area":"\u5937\u9675\u533a","code":"420506000000"},{"area":"\u8fdc\u5b89\u53bf","code":"420525000000"},{"area":"\u5174\u5c71\u53bf","code":"420526000000"},{"area":"\u79ed\u5f52\u53bf","code":"420527000000"},{"area":"\u957f\u9633\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","code":"420528000000"},{"area":"\u4e94\u5cf0\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","code":"420529000000"},{"area":"\u5b9c\u90fd\u5e02","code":"420581000000"},{"area":"\u5f53\u9633\u5e02","code":"420582000000"},{"area":"\u679d\u6c5f\u5e02","code":"420583000000"}]},{"city":"\u8944\u9633\u5e02","code":"420600000000","areas":[{"area":"\u8944\u57ce\u533a","code":"420602000000"},{"area":"\u6a0a\u57ce\u533a","code":"420606000000"},{"area":"\u8944\u5dde\u533a","code":"420607000000"},{"area":"\u5357\u6f33\u53bf","code":"420624000000"},{"area":"\u8c37\u57ce\u53bf","code":"420625000000"},{"area":"\u4fdd\u5eb7\u53bf","code":"420626000000"},{"area":"\u8001\u6cb3\u53e3\u5e02","code":"420682000000"},{"area":"\u67a3\u9633\u5e02","code":"420683000000"},{"area":"\u5b9c\u57ce\u5e02","code":"420684000000"}]},{"city":"\u9102\u5dde\u5e02","code":"420700000000","areas":[{"area":"\u6881\u5b50\u6e56\u533a","code":"420702000000"},{"area":"\u534e\u5bb9\u533a","code":"420703000000"},{"area":"\u9102\u57ce\u533a","code":"420704000000"}]},{"city":"\u8346\u95e8\u5e02","code":"420800000000","areas":[{"area":"\u4e1c\u5b9d\u533a","code":"420802000000"},{"area":"\u6387\u5200\u533a","code":"420804000000"},{"area":"\u6c99\u6d0b\u53bf","code":"420822000000"},{"area":"\u949f\u7965\u5e02","code":"420881000000"},{"area":"\u4eac\u5c71\u5e02","code":"420882000000"}]},{"city":"\u5b5d\u611f\u5e02","code":"420900000000","areas":[{"area":"\u5b5d\u5357\u533a","code":"420902000000"},{"area":"\u5b5d\u660c\u53bf","code":"420921000000"},{"area":"\u5927\u609f\u53bf","code":"420922000000"},{"area":"\u4e91\u68a6\u53bf","code":"420923000000"},{"area":"\u5e94\u57ce\u5e02","code":"420981000000"},{"area":"\u5b89\u9646\u5e02","code":"420982000000"},{"area":"\u6c49\u5ddd\u5e02","code":"420984000000"}]},{"city":"\u8346\u5dde\u5e02","code":"421000000000","areas":[{"area":"\u6c99\u5e02\u533a","code":"421002000000"},{"area":"\u8346\u5dde\u533a","code":"421003000000"},{"area":"\u516c\u5b89\u53bf","code":"421022000000"},{"area":"\u6c5f\u9675\u53bf","code":"421024000000"},{"area":"\u8346\u5dde\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"421071000000"},{"area":"\u77f3\u9996\u5e02","code":"421081000000"},{"area":"\u6d2a\u6e56\u5e02","code":"421083000000"},{"area":"\u677e\u6ecb\u5e02","code":"421087000000"},{"area":"\u76d1\u5229\u5e02","code":"421088000000"}]},{"city":"\u9ec4\u5188\u5e02","code":"421100000000","areas":[{"area":"\u9ec4\u5dde\u533a","code":"421102000000"},{"area":"\u56e2\u98ce\u53bf","code":"421121000000"},{"area":"\u7ea2\u5b89\u53bf","code":"421122000000"},{"area":"\u7f57\u7530\u53bf","code":"421123000000"},{"area":"\u82f1\u5c71\u53bf","code":"421124000000"},{"area":"\u6d60\u6c34\u53bf","code":"421125000000"},{"area":"\u8572\u6625\u53bf","code":"421126000000"},{"area":"\u9ec4\u6885\u53bf","code":"421127000000"},{"area":"\u9f99\u611f\u6e56\u7ba1\u7406\u533a","code":"421171000000"},{"area":"\u9ebb\u57ce\u5e02","code":"421181000000"},{"area":"\u6b66\u7a74\u5e02","code":"421182000000"}]},{"city":"\u54b8\u5b81\u5e02","code":"421200000000","areas":[{"area":"\u54b8\u5b89\u533a","code":"421202000000"},{"area":"\u5609\u9c7c\u53bf","code":"421221000000"},{"area":"\u901a\u57ce\u53bf","code":"421222000000"},{"area":"\u5d07\u9633\u53bf","code":"421223000000"},{"area":"\u901a\u5c71\u53bf","code":"421224000000"},{"area":"\u8d64\u58c1\u5e02","code":"421281000000"}]},{"city":"\u968f\u5dde\u5e02","code":"421300000000","areas":[{"area":"\u66fe\u90fd\u533a","code":"421303000000"},{"area":"\u968f\u53bf","code":"421321000000"},{"area":"\u5e7f\u6c34\u5e02","code":"421381000000"}]},{"city":"\u6069\u65bd\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","code":"422800000000","areas":[{"area":"\u6069\u65bd\u5e02","code":"422801000000"},{"area":"\u5229\u5ddd\u5e02","code":"422802000000"},{"area":"\u5efa\u59cb\u53bf","code":"422822000000"},{"area":"\u5df4\u4e1c\u53bf","code":"422823000000"},{"area":"\u5ba3\u6069\u53bf","code":"422825000000"},{"area":"\u54b8\u4e30\u53bf","code":"422826000000"},{"area":"\u6765\u51e4\u53bf","code":"422827000000"},{"area":"\u9e64\u5cf0\u53bf","code":"422828000000"}]},{"city":"\u7701\u76f4\u8f96\u53bf\u7ea7\u884c\u653f\u533a\u5212","code":"429000000000","areas":[{"area":"\u4ed9\u6843\u5e02","code":"429004000000"},{"area":"\u6f5c\u6c5f\u5e02","code":"429005000000"},{"area":"\u5929\u95e8\u5e02","code":"429006000000"},{"area":"\u795e\u519c\u67b6\u6797\u533a","code":"429021000000"}]}]},{"province":"\u6e56\u5357\u7701","code":"430000","citys":[{"city":"\u957f\u6c99\u5e02","code":"430100000000","areas":[{"area":"\u8299\u84c9\u533a","code":"430102000000"},{"area":"\u5929\u5fc3\u533a","code":"430103000000"},{"area":"\u5cb3\u9e93\u533a","code":"430104000000"},{"area":"\u5f00\u798f\u533a","code":"430105000000"},{"area":"\u96e8\u82b1\u533a","code":"430111000000"},{"area":"\u671b\u57ce\u533a","code":"430112000000"},{"area":"\u957f\u6c99\u53bf","code":"430121000000"},{"area":"\u6d4f\u9633\u5e02","code":"430181000000"},{"area":"\u5b81\u4e61\u5e02","code":"430182000000"}]},{"city":"\u682a\u6d32\u5e02","code":"430200000000","areas":[{"area":"\u8377\u5858\u533a","code":"430202000000"},{"area":"\u82a6\u6dde\u533a","code":"430203000000"},{"area":"\u77f3\u5cf0\u533a","code":"430204000000"},{"area":"\u5929\u5143\u533a","code":"430211000000"},{"area":"\u6e0c\u53e3\u533a","code":"430212000000"},{"area":"\u6538\u53bf","code":"430223000000"},{"area":"\u8336\u9675\u53bf","code":"430224000000"},{"area":"\u708e\u9675\u53bf","code":"430225000000"},{"area":"\u91b4\u9675\u5e02","code":"430281000000"}]},{"city":"\u6e58\u6f6d\u5e02","code":"430300000000","areas":[{"area":"\u96e8\u6e56\u533a","code":"430302000000"},{"area":"\u5cb3\u5858\u533a","code":"430304000000"},{"area":"\u6e58\u6f6d\u53bf","code":"430321000000"},{"area":"\u6e56\u5357\u6e58\u6f6d\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u56ed\u533a","code":"430371000000"},{"area":"\u6e58\u6f6d\u662d\u5c71\u793a\u8303\u533a","code":"430372000000"},{"area":"\u6e58\u6f6d\u4e5d\u534e\u793a\u8303\u533a","code":"430373000000"},{"area":"\u6e58\u4e61\u5e02","code":"430381000000"},{"area":"\u97f6\u5c71\u5e02","code":"430382000000"}]},{"city":"\u8861\u9633\u5e02","code":"430400000000","areas":[{"area":"\u73e0\u6656\u533a","code":"430405000000"},{"area":"\u96c1\u5cf0\u533a","code":"430406000000"},{"area":"\u77f3\u9f13\u533a","code":"430407000000"},{"area":"\u84b8\u6e58\u533a","code":"430408000000"},{"area":"\u5357\u5cb3\u533a","code":"430412000000"},{"area":"\u8861\u9633\u53bf","code":"430421000000"},{"area":"\u8861\u5357\u53bf","code":"430422000000"},{"area":"\u8861\u5c71\u53bf","code":"430423000000"},{"area":"\u8861\u4e1c\u53bf","code":"430424000000"},{"area":"\u7941\u4e1c\u53bf","code":"430426000000"},{"area":"\u6e56\u5357\u8861\u9633\u677e\u6728\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"430473000000"},{"area":"\u6e56\u5357\u8861\u9633\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u56ed\u533a","code":"430476000000"},{"area":"\u8012\u9633\u5e02","code":"430481000000"},{"area":"\u5e38\u5b81\u5e02","code":"430482000000"}]},{"city":"\u90b5\u9633\u5e02","code":"430500000000","areas":[{"area":"\u53cc\u6e05\u533a","code":"430502000000"},{"area":"\u5927\u7965\u533a","code":"430503000000"},{"area":"\u5317\u5854\u533a","code":"430511000000"},{"area":"\u65b0\u90b5\u53bf","code":"430522000000"},{"area":"\u90b5\u9633\u53bf","code":"430523000000"},{"area":"\u9686\u56de\u53bf","code":"430524000000"},{"area":"\u6d1e\u53e3\u53bf","code":"430525000000"},{"area":"\u7ee5\u5b81\u53bf","code":"430527000000"},{"area":"\u65b0\u5b81\u53bf","code":"430528000000"},{"area":"\u57ce\u6b65\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"430529000000"},{"area":"\u6b66\u5188\u5e02","code":"430581000000"},{"area":"\u90b5\u4e1c\u5e02","code":"430582000000"}]},{"city":"\u5cb3\u9633\u5e02","code":"430600000000","areas":[{"area":"\u5cb3\u9633\u697c\u533a","code":"430602000000"},{"area":"\u4e91\u6eaa\u533a","code":"430603000000"},{"area":"\u541b\u5c71\u533a","code":"430611000000"},{"area":"\u5cb3\u9633\u53bf","code":"430621000000"},{"area":"\u534e\u5bb9\u53bf","code":"430623000000"},{"area":"\u6e58\u9634\u53bf","code":"430624000000"},{"area":"\u5e73\u6c5f\u53bf","code":"430626000000"},{"area":"\u5cb3\u9633\u5e02\u5c48\u539f\u7ba1\u7406\u533a","code":"430671000000"},{"area":"\u6c68\u7f57\u5e02","code":"430681000000"},{"area":"\u4e34\u6e58\u5e02","code":"430682000000"}]},{"city":"\u5e38\u5fb7\u5e02","code":"430700000000","areas":[{"area":"\u6b66\u9675\u533a","code":"430702000000"},{"area":"\u9f0e\u57ce\u533a","code":"430703000000"},{"area":"\u5b89\u4e61\u53bf","code":"430721000000"},{"area":"\u6c49\u5bff\u53bf","code":"430722000000"},{"area":"\u6fa7\u53bf","code":"430723000000"},{"area":"\u4e34\u6fa7\u53bf","code":"430724000000"},{"area":"\u6843\u6e90\u53bf","code":"430725000000"},{"area":"\u77f3\u95e8\u53bf","code":"430726000000"},{"area":"\u5e38\u5fb7\u5e02\u897f\u6d1e\u5ead\u7ba1\u7406\u533a","code":"430771000000"},{"area":"\u6d25\u5e02\u5e02","code":"430781000000"}]},{"city":"\u5f20\u5bb6\u754c\u5e02","code":"430800000000","areas":[{"area":"\u6c38\u5b9a\u533a","code":"430802000000"},{"area":"\u6b66\u9675\u6e90\u533a","code":"430811000000"},{"area":"\u6148\u5229\u53bf","code":"430821000000"},{"area":"\u6851\u690d\u53bf","code":"430822000000"}]},{"city":"\u76ca\u9633\u5e02","code":"430900000000","areas":[{"area":"\u8d44\u9633\u533a","code":"430902000000"},{"area":"\u8d6b\u5c71\u533a","code":"430903000000"},{"area":"\u5357\u53bf","code":"430921000000"},{"area":"\u6843\u6c5f\u53bf","code":"430922000000"},{"area":"\u5b89\u5316\u53bf","code":"430923000000"},{"area":"\u76ca\u9633\u5e02\u5927\u901a\u6e56\u7ba1\u7406\u533a","code":"430971000000"},{"area":"\u6e56\u5357\u76ca\u9633\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u56ed\u533a","code":"430972000000"},{"area":"\u6c85\u6c5f\u5e02","code":"430981000000"}]},{"city":"\u90f4\u5dde\u5e02","code":"431000000000","areas":[{"area":"\u5317\u6e56\u533a","code":"431002000000"},{"area":"\u82cf\u4ed9\u533a","code":"431003000000"},{"area":"\u6842\u9633\u53bf","code":"431021000000"},{"area":"\u5b9c\u7ae0\u53bf","code":"431022000000"},{"area":"\u6c38\u5174\u53bf","code":"431023000000"},{"area":"\u5609\u79be\u53bf","code":"431024000000"},{"area":"\u4e34\u6b66\u53bf","code":"431025000000"},{"area":"\u6c5d\u57ce\u53bf","code":"431026000000"},{"area":"\u6842\u4e1c\u53bf","code":"431027000000"},{"area":"\u5b89\u4ec1\u53bf","code":"431028000000"},{"area":"\u8d44\u5174\u5e02","code":"431081000000"}]},{"city":"\u6c38\u5dde\u5e02","code":"431100000000","areas":[{"area":"\u96f6\u9675\u533a","code":"431102000000"},{"area":"\u51b7\u6c34\u6ee9\u533a","code":"431103000000"},{"area":"\u4e1c\u5b89\u53bf","code":"431122000000"},{"area":"\u53cc\u724c\u53bf","code":"431123000000"},{"area":"\u9053\u53bf","code":"431124000000"},{"area":"\u6c5f\u6c38\u53bf","code":"431125000000"},{"area":"\u5b81\u8fdc\u53bf","code":"431126000000"},{"area":"\u84dd\u5c71\u53bf","code":"431127000000"},{"area":"\u65b0\u7530\u53bf","code":"431128000000"},{"area":"\u6c5f\u534e\u7476\u65cf\u81ea\u6cbb\u53bf","code":"431129000000"},{"area":"\u6c38\u5dde\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"431171000000"},{"area":"\u6c38\u5dde\u5e02\u56de\u9f99\u5729\u7ba1\u7406\u533a","code":"431173000000"},{"area":"\u7941\u9633\u5e02","code":"431181000000"}]},{"city":"\u6000\u5316\u5e02","code":"431200000000","areas":[{"area":"\u9e64\u57ce\u533a","code":"431202000000"},{"area":"\u4e2d\u65b9\u53bf","code":"431221000000"},{"area":"\u6c85\u9675\u53bf","code":"431222000000"},{"area":"\u8fb0\u6eaa\u53bf","code":"431223000000"},{"area":"\u6e86\u6d66\u53bf","code":"431224000000"},{"area":"\u4f1a\u540c\u53bf","code":"431225000000"},{"area":"\u9ebb\u9633\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"431226000000"},{"area":"\u65b0\u6643\u4f97\u65cf\u81ea\u6cbb\u53bf","code":"431227000000"},{"area":"\u82b7\u6c5f\u4f97\u65cf\u81ea\u6cbb\u53bf","code":"431228000000"},{"area":"\u9756\u5dde\u82d7\u65cf\u4f97\u65cf\u81ea\u6cbb\u53bf","code":"431229000000"},{"area":"\u901a\u9053\u4f97\u65cf\u81ea\u6cbb\u53bf","code":"431230000000"},{"area":"\u6000\u5316\u5e02\u6d2a\u6c5f\u7ba1\u7406\u533a","code":"431271000000"},{"area":"\u6d2a\u6c5f\u5e02","code":"431281000000"}]},{"city":"\u5a04\u5e95\u5e02","code":"431300000000","areas":[{"area":"\u5a04\u661f\u533a","code":"431302000000"},{"area":"\u53cc\u5cf0\u53bf","code":"431321000000"},{"area":"\u65b0\u5316\u53bf","code":"431322000000"},{"area":"\u51b7\u6c34\u6c5f\u5e02","code":"431381000000"},{"area":"\u6d9f\u6e90\u5e02","code":"431382000000"}]},{"city":"\u6e58\u897f\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","code":"433100000000","areas":[{"area":"\u5409\u9996\u5e02","code":"433101000000"},{"area":"\u6cf8\u6eaa\u53bf","code":"433122000000"},{"area":"\u51e4\u51f0\u53bf","code":"433123000000"},{"area":"\u82b1\u57a3\u53bf","code":"433124000000"},{"area":"\u4fdd\u9756\u53bf","code":"433125000000"},{"area":"\u53e4\u4e08\u53bf","code":"433126000000"},{"area":"\u6c38\u987a\u53bf","code":"433127000000"},{"area":"\u9f99\u5c71\u53bf","code":"433130000000"}]}]},{"province":"\u5e7f\u4e1c\u7701","code":"440000","citys":[{"city":"\u5e7f\u5dde\u5e02","code":"440100000000","areas":[{"area":"\u8354\u6e7e\u533a","code":"440103000000"},{"area":"\u8d8a\u79c0\u533a","code":"440104000000"},{"area":"\u6d77\u73e0\u533a","code":"440105000000"},{"area":"\u5929\u6cb3\u533a","code":"440106000000"},{"area":"\u767d\u4e91\u533a","code":"440111000000"},{"area":"\u9ec4\u57d4\u533a","code":"440112000000"},{"area":"\u756a\u79ba\u533a","code":"440113000000"},{"area":"\u82b1\u90fd\u533a","code":"440114000000"},{"area":"\u5357\u6c99\u533a","code":"440115000000"},{"area":"\u4ece\u5316\u533a","code":"440117000000"},{"area":"\u589e\u57ce\u533a","code":"440118000000"}]},{"city":"\u97f6\u5173\u5e02","code":"440200000000","areas":[{"area":"\u6b66\u6c5f\u533a","code":"440203000000"},{"area":"\u6d48\u6c5f\u533a","code":"440204000000"},{"area":"\u66f2\u6c5f\u533a","code":"440205000000"},{"area":"\u59cb\u5174\u53bf","code":"440222000000"},{"area":"\u4ec1\u5316\u53bf","code":"440224000000"},{"area":"\u7fc1\u6e90\u53bf","code":"440229000000"},{"area":"\u4e73\u6e90\u7476\u65cf\u81ea\u6cbb\u53bf","code":"440232000000"},{"area":"\u65b0\u4e30\u53bf","code":"440233000000"},{"area":"\u4e50\u660c\u5e02","code":"440281000000"},{"area":"\u5357\u96c4\u5e02","code":"440282000000"}]},{"city":"\u6df1\u5733\u5e02","code":"440300000000","areas":[{"area":"\u7f57\u6e56\u533a","code":"440303000000"},{"area":"\u798f\u7530\u533a","code":"440304000000"},{"area":"\u5357\u5c71\u533a","code":"440305000000"},{"area":"\u5b9d\u5b89\u533a","code":"440306000000"},{"area":"\u9f99\u5c97\u533a","code":"440307000000"},{"area":"\u76d0\u7530\u533a","code":"440308000000"},{"area":"\u9f99\u534e\u533a","code":"440309000000"},{"area":"\u576a\u5c71\u533a","code":"440310000000"},{"area":"\u5149\u660e\u533a","code":"440311000000"}]},{"city":"\u73e0\u6d77\u5e02","code":"440400000000","areas":[{"area":"\u9999\u6d32\u533a","code":"440402000000"},{"area":"\u6597\u95e8\u533a","code":"440403000000"},{"area":"\u91d1\u6e7e\u533a","code":"440404000000"}]},{"city":"\u6c55\u5934\u5e02","code":"440500000000","areas":[{"area":"\u9f99\u6e56\u533a","code":"440507000000"},{"area":"\u91d1\u5e73\u533a","code":"440511000000"},{"area":"\u6fe0\u6c5f\u533a","code":"440512000000"},{"area":"\u6f6e\u9633\u533a","code":"440513000000"},{"area":"\u6f6e\u5357\u533a","code":"440514000000"},{"area":"\u6f84\u6d77\u533a","code":"440515000000"},{"area":"\u5357\u6fb3\u53bf","code":"440523000000"}]},{"city":"\u4f5b\u5c71\u5e02","code":"440600000000","areas":[{"area":"\u7985\u57ce\u533a","code":"440604000000"},{"area":"\u5357\u6d77\u533a","code":"440605000000"},{"area":"\u987a\u5fb7\u533a","code":"440606000000"},{"area":"\u4e09\u6c34\u533a","code":"440607000000"},{"area":"\u9ad8\u660e\u533a","code":"440608000000"}]},{"city":"\u6c5f\u95e8\u5e02","code":"440700000000","areas":[{"area":"\u84ec\u6c5f\u533a","code":"440703000000"},{"area":"\u6c5f\u6d77\u533a","code":"440704000000"},{"area":"\u65b0\u4f1a\u533a","code":"440705000000"},{"area":"\u53f0\u5c71\u5e02","code":"440781000000"},{"area":"\u5f00\u5e73\u5e02","code":"440783000000"},{"area":"\u9e64\u5c71\u5e02","code":"440784000000"},{"area":"\u6069\u5e73\u5e02","code":"440785000000"}]},{"city":"\u6e5b\u6c5f\u5e02","code":"440800000000","areas":[{"area":"\u8d64\u574e\u533a","code":"440802000000"},{"area":"\u971e\u5c71\u533a","code":"440803000000"},{"area":"\u5761\u5934\u533a","code":"440804000000"},{"area":"\u9ebb\u7ae0\u533a","code":"440811000000"},{"area":"\u9042\u6eaa\u53bf","code":"440823000000"},{"area":"\u5f90\u95fb\u53bf","code":"440825000000"},{"area":"\u5ec9\u6c5f\u5e02","code":"440881000000"},{"area":"\u96f7\u5dde\u5e02","code":"440882000000"},{"area":"\u5434\u5ddd\u5e02","code":"440883000000"}]},{"city":"\u8302\u540d\u5e02","code":"440900000000","areas":[{"area":"\u8302\u5357\u533a","code":"440902000000"},{"area":"\u7535\u767d\u533a","code":"440904000000"},{"area":"\u9ad8\u5dde\u5e02","code":"440981000000"},{"area":"\u5316\u5dde\u5e02","code":"440982000000"},{"area":"\u4fe1\u5b9c\u5e02","code":"440983000000"}]},{"city":"\u8087\u5e86\u5e02","code":"441200000000","areas":[{"area":"\u7aef\u5dde\u533a","code":"441202000000"},{"area":"\u9f0e\u6e56\u533a","code":"441203000000"},{"area":"\u9ad8\u8981\u533a","code":"441204000000"},{"area":"\u5e7f\u5b81\u53bf","code":"441223000000"},{"area":"\u6000\u96c6\u53bf","code":"441224000000"},{"area":"\u5c01\u5f00\u53bf","code":"441225000000"},{"area":"\u5fb7\u5e86\u53bf","code":"441226000000"},{"area":"\u56db\u4f1a\u5e02","code":"441284000000"}]},{"city":"\u60e0\u5dde\u5e02","code":"441300000000","areas":[{"area":"\u60e0\u57ce\u533a","code":"441302000000"},{"area":"\u60e0\u9633\u533a","code":"441303000000"},{"area":"\u535a\u7f57\u53bf","code":"441322000000"},{"area":"\u60e0\u4e1c\u53bf","code":"441323000000"},{"area":"\u9f99\u95e8\u53bf","code":"441324000000"}]},{"city":"\u6885\u5dde\u5e02","code":"441400000000","areas":[{"area":"\u6885\u6c5f\u533a","code":"441402000000"},{"area":"\u6885\u53bf\u533a","code":"441403000000"},{"area":"\u5927\u57d4\u53bf","code":"441422000000"},{"area":"\u4e30\u987a\u53bf","code":"441423000000"},{"area":"\u4e94\u534e\u53bf","code":"441424000000"},{"area":"\u5e73\u8fdc\u53bf","code":"441426000000"},{"area":"\u8549\u5cad\u53bf","code":"441427000000"},{"area":"\u5174\u5b81\u5e02","code":"441481000000"}]},{"city":"\u6c55\u5c3e\u5e02","code":"441500000000","areas":[{"area":"\u57ce\u533a","code":"441502000000"},{"area":"\u6d77\u4e30\u53bf","code":"441521000000"},{"area":"\u9646\u6cb3\u53bf","code":"441523000000"},{"area":"\u9646\u4e30\u5e02","code":"441581000000"}]},{"city":"\u6cb3\u6e90\u5e02","code":"441600000000","areas":[{"area":"\u6e90\u57ce\u533a","code":"441602000000"},{"area":"\u7d2b\u91d1\u53bf","code":"441621000000"},{"area":"\u9f99\u5ddd\u53bf","code":"441622000000"},{"area":"\u8fde\u5e73\u53bf","code":"441623000000"},{"area":"\u548c\u5e73\u53bf","code":"441624000000"},{"area":"\u4e1c\u6e90\u53bf","code":"441625000000"}]},{"city":"\u9633\u6c5f\u5e02","code":"441700000000","areas":[{"area":"\u6c5f\u57ce\u533a","code":"441702000000"},{"area":"\u9633\u4e1c\u533a","code":"441704000000"},{"area":"\u9633\u897f\u53bf","code":"441721000000"},{"area":"\u9633\u6625\u5e02","code":"441781000000"}]},{"city":"\u6e05\u8fdc\u5e02","code":"441800000000","areas":[{"area":"\u6e05\u57ce\u533a","code":"441802000000"},{"area":"\u6e05\u65b0\u533a","code":"441803000000"},{"area":"\u4f5b\u5188\u53bf","code":"441821000000"},{"area":"\u9633\u5c71\u53bf","code":"441823000000"},{"area":"\u8fde\u5c71\u58ee\u65cf\u7476\u65cf\u81ea\u6cbb\u53bf","code":"441825000000"},{"area":"\u8fde\u5357\u7476\u65cf\u81ea\u6cbb\u53bf","code":"441826000000"},{"area":"\u82f1\u5fb7\u5e02","code":"441881000000"},{"area":"\u8fde\u5dde\u5e02","code":"441882000000"}]},{"city":"\u4e1c\u839e\u5e02","code":"441900000000","areas":[{"area":"\u4e1c\u57ce\u8857\u9053","code":"441900003000"},{"area":"\u5357\u57ce\u8857\u9053","code":"441900004000"},{"area":"\u4e07\u6c5f\u8857\u9053","code":"441900005000"},{"area":"\u839e\u57ce\u8857\u9053","code":"441900006000"},{"area":"\u77f3\u78a3\u9547","code":"441900101000"},{"area":"\u77f3\u9f99\u9547","code":"441900102000"},{"area":"\u8336\u5c71\u9547","code":"441900103000"},{"area":"\u77f3\u6392\u9547","code":"441900104000"},{"area":"\u4f01\u77f3\u9547","code":"441900105000"},{"area":"\u6a2a\u6ca5\u9547","code":"441900106000"},{"area":"\u6865\u5934\u9547","code":"441900107000"},{"area":"\u8c22\u5c97\u9547","code":"441900108000"},{"area":"\u4e1c\u5751\u9547","code":"441900109000"},{"area":"\u5e38\u5e73\u9547","code":"441900110000"},{"area":"\u5bee\u6b65\u9547","code":"441900111000"},{"area":"\u6a1f\u6728\u5934\u9547","code":"441900112000"},{"area":"\u5927\u6717\u9547","code":"441900113000"},{"area":"\u9ec4\u6c5f\u9547","code":"441900114000"},{"area":"\u6e05\u6eaa\u9547","code":"441900115000"},{"area":"\u5858\u53a6\u9547","code":"441900116000"},{"area":"\u51e4\u5c97\u9547","code":"441900117000"},{"area":"\u5927\u5cad\u5c71\u9547","code":"441900118000"},{"area":"\u957f\u5b89\u9547","code":"441900119000"},{"area":"\u864e\u95e8\u9547","code":"441900121000"},{"area":"\u539a\u8857\u9547","code":"441900122000"},{"area":"\u6c99\u7530\u9547","code":"441900123000"},{"area":"\u9053\u6ed8\u9547","code":"441900124000"},{"area":"\u6d2a\u6885\u9547","code":"441900125000"},{"area":"\u9ebb\u6d8c\u9547","code":"441900126000"},{"area":"\u671b\u725b\u58a9\u9547","code":"441900127000"},{"area":"\u4e2d\u5802\u9547","code":"441900128000"},{"area":"\u9ad8\u57d7\u9547","code":"441900129000"},{"area":"\u677e\u5c71\u6e56","code":"441900401000"},{"area":"\u4e1c\u839e\u6e2f","code":"441900402000"},{"area":"\u4e1c\u839e\u751f\u6001\u56ed","code":"441900403000"},{"area":"\u4e1c\u839e\u6ee8\u6d77\u6e7e\u65b0\u533a","code":"441900404000"}]},{"city":"\u4e2d\u5c71\u5e02","code":"442000000000","areas":[{"area":"\u77f3\u5c90\u8857\u9053","code":"442000001000"},{"area":"\u4e1c\u533a\u8857\u9053","code":"442000002000"},{"area":"\u4e2d\u5c71\u6e2f\u8857\u9053","code":"442000003000"},{"area":"\u897f\u533a\u8857\u9053","code":"442000004000"},{"area":"\u5357\u533a\u8857\u9053","code":"442000005000"},{"area":"\u4e94\u6842\u5c71\u8857\u9053","code":"442000006000"},{"area":"\u6c11\u4f17\u8857\u9053","code":"442000007000"},{"area":"\u5357\u6717\u8857\u9053","code":"442000008000"},{"area":"\u9ec4\u5703\u9547","code":"442000101000"},{"area":"\u4e1c\u51e4\u9547","code":"442000103000"},{"area":"\u53e4\u9547\u9547","code":"442000105000"},{"area":"\u6c99\u6eaa\u9547","code":"442000106000"},{"area":"\u5766\u6d32\u9547","code":"442000107000"},{"area":"\u6e2f\u53e3\u9547","code":"442000108000"},{"area":"\u4e09\u89d2\u9547","code":"442000109000"},{"area":"\u6a2a\u680f\u9547","code":"442000110000"},{"area":"\u5357\u5934\u9547","code":"442000111000"},{"area":"\u961c\u6c99\u9547","code":"442000112000"},{"area":"\u4e09\u4e61\u9547","code":"442000114000"},{"area":"\u677f\u8299\u9547","code":"442000115000"},{"area":"\u5927\u6d8c\u9547","code":"442000116000"},{"area":"\u795e\u6e7e\u9547","code":"442000117000"},{"area":"\u5c0f\u6984\u9547","code":"442000118000"}]},{"city":"\u6f6e\u5dde\u5e02","code":"445100000000","areas":[{"area":"\u6e58\u6865\u533a","code":"445102000000"},{"area":"\u6f6e\u5b89\u533a","code":"445103000000"},{"area":"\u9976\u5e73\u53bf","code":"445122000000"}]},{"city":"\u63ed\u9633\u5e02","code":"445200000000","areas":[{"area":"\u6995\u57ce\u533a","code":"445202000000"},{"area":"\u63ed\u4e1c\u533a","code":"445203000000"},{"area":"\u63ed\u897f\u53bf","code":"445222000000"},{"area":"\u60e0\u6765\u53bf","code":"445224000000"},{"area":"\u666e\u5b81\u5e02","code":"445281000000"}]},{"city":"\u4e91\u6d6e\u5e02","code":"445300000000","areas":[{"area":"\u4e91\u57ce\u533a","code":"445302000000"},{"area":"\u4e91\u5b89\u533a","code":"445303000000"},{"area":"\u65b0\u5174\u53bf","code":"445321000000"},{"area":"\u90c1\u5357\u53bf","code":"445322000000"},{"area":"\u7f57\u5b9a\u5e02","code":"445381000000"}]}]},{"province":"\u5e7f\u897f\u58ee\u65cf\u81ea\u6cbb\u533a","code":"450000","citys":[{"city":"\u5357\u5b81\u5e02","code":"450100000000","areas":[{"area":"\u5174\u5b81\u533a","code":"450102000000"},{"area":"\u9752\u79c0\u533a","code":"450103000000"},{"area":"\u6c5f\u5357\u533a","code":"450105000000"},{"area":"\u897f\u4e61\u5858\u533a","code":"450107000000"},{"area":"\u826f\u5e86\u533a","code":"450108000000"},{"area":"\u9095\u5b81\u533a","code":"450109000000"},{"area":"\u6b66\u9e23\u533a","code":"450110000000"},{"area":"\u9686\u5b89\u53bf","code":"450123000000"},{"area":"\u9a6c\u5c71\u53bf","code":"450124000000"},{"area":"\u4e0a\u6797\u53bf","code":"450125000000"},{"area":"\u5bbe\u9633\u53bf","code":"450126000000"},{"area":"\u6a2a\u5dde\u5e02","code":"450181000000"}]},{"city":"\u67f3\u5dde\u5e02","code":"450200000000","areas":[{"area":"\u57ce\u4e2d\u533a","code":"450202000000"},{"area":"\u9c7c\u5cf0\u533a","code":"450203000000"},{"area":"\u67f3\u5357\u533a","code":"450204000000"},{"area":"\u67f3\u5317\u533a","code":"450205000000"},{"area":"\u67f3\u6c5f\u533a","code":"450206000000"},{"area":"\u67f3\u57ce\u53bf","code":"450222000000"},{"area":"\u9e7f\u5be8\u53bf","code":"450223000000"},{"area":"\u878d\u5b89\u53bf","code":"450224000000"},{"area":"\u878d\u6c34\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"450225000000"},{"area":"\u4e09\u6c5f\u4f97\u65cf\u81ea\u6cbb\u53bf","code":"450226000000"}]},{"city":"\u6842\u6797\u5e02","code":"450300000000","areas":[{"area":"\u79c0\u5cf0\u533a","code":"450302000000"},{"area":"\u53e0\u5f69\u533a","code":"450303000000"},{"area":"\u8c61\u5c71\u533a","code":"450304000000"},{"area":"\u4e03\u661f\u533a","code":"450305000000"},{"area":"\u96c1\u5c71\u533a","code":"450311000000"},{"area":"\u4e34\u6842\u533a","code":"450312000000"},{"area":"\u9633\u6714\u53bf","code":"450321000000"},{"area":"\u7075\u5ddd\u53bf","code":"450323000000"},{"area":"\u5168\u5dde\u53bf","code":"450324000000"},{"area":"\u5174\u5b89\u53bf","code":"450325000000"},{"area":"\u6c38\u798f\u53bf","code":"450326000000"},{"area":"\u704c\u9633\u53bf","code":"450327000000"},{"area":"\u9f99\u80dc\u5404\u65cf\u81ea\u6cbb\u53bf","code":"450328000000"},{"area":"\u8d44\u6e90\u53bf","code":"450329000000"},{"area":"\u5e73\u4e50\u53bf","code":"450330000000"},{"area":"\u606d\u57ce\u7476\u65cf\u81ea\u6cbb\u53bf","code":"450332000000"},{"area":"\u8354\u6d66\u5e02","code":"450381000000"}]},{"city":"\u68a7\u5dde\u5e02","code":"450400000000","areas":[{"area":"\u4e07\u79c0\u533a","code":"450403000000"},{"area":"\u957f\u6d32\u533a","code":"450405000000"},{"area":"\u9f99\u5729\u533a","code":"450406000000"},{"area":"\u82cd\u68a7\u53bf","code":"450421000000"},{"area":"\u85e4\u53bf","code":"450422000000"},{"area":"\u8499\u5c71\u53bf","code":"450423000000"},{"area":"\u5c91\u6eaa\u5e02","code":"450481000000"}]},{"city":"\u5317\u6d77\u5e02","code":"450500000000","areas":[{"area":"\u6d77\u57ce\u533a","code":"450502000000"},{"area":"\u94f6\u6d77\u533a","code":"450503000000"},{"area":"\u94c1\u5c71\u6e2f\u533a","code":"450512000000"},{"area":"\u5408\u6d66\u53bf","code":"450521000000"}]},{"city":"\u9632\u57ce\u6e2f\u5e02","code":"450600000000","areas":[{"area":"\u6e2f\u53e3\u533a","code":"450602000000"},{"area":"\u9632\u57ce\u533a","code":"450603000000"},{"area":"\u4e0a\u601d\u53bf","code":"450621000000"},{"area":"\u4e1c\u5174\u5e02","code":"450681000000"}]},{"city":"\u94a6\u5dde\u5e02","code":"450700000000","areas":[{"area":"\u94a6\u5357\u533a","code":"450702000000"},{"area":"\u94a6\u5317\u533a","code":"450703000000"},{"area":"\u7075\u5c71\u53bf","code":"450721000000"},{"area":"\u6d66\u5317\u53bf","code":"450722000000"}]},{"city":"\u8d35\u6e2f\u5e02","code":"450800000000","areas":[{"area":"\u6e2f\u5317\u533a","code":"450802000000"},{"area":"\u6e2f\u5357\u533a","code":"450803000000"},{"area":"\u8983\u5858\u533a","code":"450804000000"},{"area":"\u5e73\u5357\u53bf","code":"450821000000"},{"area":"\u6842\u5e73\u5e02","code":"450881000000"}]},{"city":"\u7389\u6797\u5e02","code":"450900000000","areas":[{"area":"\u7389\u5dde\u533a","code":"450902000000"},{"area":"\u798f\u7ef5\u533a","code":"450903000000"},{"area":"\u5bb9\u53bf","code":"450921000000"},{"area":"\u9646\u5ddd\u53bf","code":"450922000000"},{"area":"\u535a\u767d\u53bf","code":"450923000000"},{"area":"\u5174\u4e1a\u53bf","code":"450924000000"},{"area":"\u5317\u6d41\u5e02","code":"450981000000"}]},{"city":"\u767e\u8272\u5e02","code":"451000000000","areas":[{"area":"\u53f3\u6c5f\u533a","code":"451002000000"},{"area":"\u7530\u9633\u533a","code":"451003000000"},{"area":"\u7530\u4e1c\u53bf","code":"451022000000"},{"area":"\u5fb7\u4fdd\u53bf","code":"451024000000"},{"area":"\u90a3\u5761\u53bf","code":"451026000000"},{"area":"\u51cc\u4e91\u53bf","code":"451027000000"},{"area":"\u4e50\u4e1a\u53bf","code":"451028000000"},{"area":"\u7530\u6797\u53bf","code":"451029000000"},{"area":"\u897f\u6797\u53bf","code":"451030000000"},{"area":"\u9686\u6797\u5404\u65cf\u81ea\u6cbb\u53bf","code":"451031000000"},{"area":"\u9756\u897f\u5e02","code":"451081000000"},{"area":"\u5e73\u679c\u5e02","code":"451082000000"}]},{"city":"\u8d3a\u5dde\u5e02","code":"451100000000","areas":[{"area":"\u516b\u6b65\u533a","code":"451102000000"},{"area":"\u5e73\u6842\u533a","code":"451103000000"},{"area":"\u662d\u5e73\u53bf","code":"451121000000"},{"area":"\u949f\u5c71\u53bf","code":"451122000000"},{"area":"\u5bcc\u5ddd\u7476\u65cf\u81ea\u6cbb\u53bf","code":"451123000000"}]},{"city":"\u6cb3\u6c60\u5e02","code":"451200000000","areas":[{"area":"\u91d1\u57ce\u6c5f\u533a","code":"451202000000"},{"area":"\u5b9c\u5dde\u533a","code":"451203000000"},{"area":"\u5357\u4e39\u53bf","code":"451221000000"},{"area":"\u5929\u5ce8\u53bf","code":"451222000000"},{"area":"\u51e4\u5c71\u53bf","code":"451223000000"},{"area":"\u4e1c\u5170\u53bf","code":"451224000000"},{"area":"\u7f57\u57ce\u4eeb\u4f6c\u65cf\u81ea\u6cbb\u53bf","code":"451225000000"},{"area":"\u73af\u6c5f\u6bdb\u5357\u65cf\u81ea\u6cbb\u53bf","code":"451226000000"},{"area":"\u5df4\u9a6c\u7476\u65cf\u81ea\u6cbb\u53bf","code":"451227000000"},{"area":"\u90fd\u5b89\u7476\u65cf\u81ea\u6cbb\u53bf","code":"451228000000"},{"area":"\u5927\u5316\u7476\u65cf\u81ea\u6cbb\u53bf","code":"451229000000"}]},{"city":"\u6765\u5bbe\u5e02","code":"451300000000","areas":[{"area":"\u5174\u5bbe\u533a","code":"451302000000"},{"area":"\u5ffb\u57ce\u53bf","code":"451321000000"},{"area":"\u8c61\u5dde\u53bf","code":"451322000000"},{"area":"\u6b66\u5ba3\u53bf","code":"451323000000"},{"area":"\u91d1\u79c0\u7476\u65cf\u81ea\u6cbb\u53bf","code":"451324000000"},{"area":"\u5408\u5c71\u5e02","code":"451381000000"}]},{"city":"\u5d07\u5de6\u5e02","code":"451400000000","areas":[{"area":"\u6c5f\u5dde\u533a","code":"451402000000"},{"area":"\u6276\u7ee5\u53bf","code":"451421000000"},{"area":"\u5b81\u660e\u53bf","code":"451422000000"},{"area":"\u9f99\u5dde\u53bf","code":"451423000000"},{"area":"\u5927\u65b0\u53bf","code":"451424000000"},{"area":"\u5929\u7b49\u53bf","code":"451425000000"},{"area":"\u51ed\u7965\u5e02","code":"451481000000"}]}]},{"province":"\u6d77\u5357\u7701","code":"460000","citys":[{"city":"\u6d77\u53e3\u5e02","code":"460100000000","areas":[{"area":"\u79c0\u82f1\u533a","code":"460105000000"},{"area":"\u9f99\u534e\u533a","code":"460106000000"},{"area":"\u743c\u5c71\u533a","code":"460107000000"},{"area":"\u7f8e\u5170\u533a","code":"460108000000"}]},{"city":"\u4e09\u4e9a\u5e02","code":"460200000000","areas":[{"area":"\u6d77\u68e0\u533a","code":"460202000000"},{"area":"\u5409\u9633\u533a","code":"460203000000"},{"area":"\u5929\u6daf\u533a","code":"460204000000"},{"area":"\u5d16\u5dde\u533a","code":"460205000000"}]},{"city":"\u4e09\u6c99\u5e02","code":"460300000000","areas":[{"area":"\u897f\u6c99\u7fa4\u5c9b","code":"460321000000"},{"area":"\u5357\u6c99\u7fa4\u5c9b","code":"460322000000"},{"area":"\u4e2d\u6c99\u7fa4\u5c9b\u7684\u5c9b\u7901\u53ca\u5176\u6d77\u57df","code":"460323000000"}]},{"city":"\u510b\u5dde\u5e02","code":"460400000000","areas":[{"area":"\u90a3\u5927\u9547","code":"460400100000"},{"area":"\u548c\u5e86\u9547","code":"460400101000"},{"area":"\u5357\u4e30\u9547","code":"460400102000"},{"area":"\u5927\u6210\u9547","code":"460400103000"},{"area":"\u96c5\u661f\u9547","code":"460400104000"},{"area":"\u5170\u6d0b\u9547","code":"460400105000"},{"area":"\u5149\u6751\u9547","code":"460400106000"},{"area":"\u6728\u68e0\u9547","code":"460400107000"},{"area":"\u6d77\u5934\u9547","code":"460400108000"},{"area":"\u5ce8\u8513\u9547","code":"460400109000"},{"area":"\u738b\u4e94\u9547","code":"460400111000"},{"area":"\u767d\u9a6c\u4e95\u9547","code":"460400112000"},{"area":"\u4e2d\u548c\u9547","code":"460400113000"},{"area":"\u6392\u6d66\u9547","code":"460400114000"},{"area":"\u4e1c\u6210\u9547","code":"460400115000"},{"area":"\u65b0\u5dde\u9547","code":"460400116000"},{"area":"\u6d0b\u6d66\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"460400499000"},{"area":"\u534e\u5357\u70ed\u4f5c\u5b66\u9662","code":"460400500000"}]},{"city":"\u7701\u76f4\u8f96\u53bf\u7ea7\u884c\u653f\u533a\u5212","code":"469000000000","areas":[{"area":"\u4e94\u6307\u5c71\u5e02","code":"469001000000"},{"area":"\u743c\u6d77\u5e02","code":"469002000000"},{"area":"\u6587\u660c\u5e02","code":"469005000000"},{"area":"\u4e07\u5b81\u5e02","code":"469006000000"},{"area":"\u4e1c\u65b9\u5e02","code":"469007000000"},{"area":"\u5b9a\u5b89\u53bf","code":"469021000000"},{"area":"\u5c6f\u660c\u53bf","code":"469022000000"},{"area":"\u6f84\u8fc8\u53bf","code":"469023000000"},{"area":"\u4e34\u9ad8\u53bf","code":"469024000000"},{"area":"\u767d\u6c99\u9ece\u65cf\u81ea\u6cbb\u53bf","code":"469025000000"},{"area":"\u660c\u6c5f\u9ece\u65cf\u81ea\u6cbb\u53bf","code":"469026000000"},{"area":"\u4e50\u4e1c\u9ece\u65cf\u81ea\u6cbb\u53bf","code":"469027000000"},{"area":"\u9675\u6c34\u9ece\u65cf\u81ea\u6cbb\u53bf","code":"469028000000"},{"area":"\u4fdd\u4ead\u9ece\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"469029000000"},{"area":"\u743c\u4e2d\u9ece\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"469030000000"}]}]},{"province":"\u91cd\u5e86\u5e02","code":"500000","citys":[{"city":"\u5e02\u8f96\u533a","code":"500100000000","areas":[{"area":"\u4e07\u5dde\u533a","code":"500101000000"},{"area":"\u6daa\u9675\u533a","code":"500102000000"},{"area":"\u6e1d\u4e2d\u533a","code":"500103000000"},{"area":"\u5927\u6e21\u53e3\u533a","code":"500104000000"},{"area":"\u6c5f\u5317\u533a","code":"500105000000"},{"area":"\u6c99\u576a\u575d\u533a","code":"500106000000"},{"area":"\u4e5d\u9f99\u5761\u533a","code":"500107000000"},{"area":"\u5357\u5cb8\u533a","code":"500108000000"},{"area":"\u5317\u789a\u533a","code":"500109000000"},{"area":"\u7da6\u6c5f\u533a","code":"500110000000"},{"area":"\u5927\u8db3\u533a","code":"500111000000"},{"area":"\u6e1d\u5317\u533a","code":"500112000000"},{"area":"\u5df4\u5357\u533a","code":"500113000000"},{"area":"\u9ed4\u6c5f\u533a","code":"500114000000"},{"area":"\u957f\u5bff\u533a","code":"500115000000"},{"area":"\u6c5f\u6d25\u533a","code":"500116000000"},{"area":"\u5408\u5ddd\u533a","code":"500117000000"},{"area":"\u6c38\u5ddd\u533a","code":"500118000000"},{"area":"\u5357\u5ddd\u533a","code":"500119000000"},{"area":"\u74a7\u5c71\u533a","code":"500120000000"},{"area":"\u94dc\u6881\u533a","code":"500151000000"},{"area":"\u6f7c\u5357\u533a","code":"500152000000"},{"area":"\u8363\u660c\u533a","code":"500153000000"},{"area":"\u5f00\u5dde\u533a","code":"500154000000"},{"area":"\u6881\u5e73\u533a","code":"500155000000"},{"area":"\u6b66\u9686\u533a","code":"500156000000"}]},{"city":"\u53bf","code":"500200000000","areas":[{"area":"\u57ce\u53e3\u53bf","code":"500229000000"},{"area":"\u4e30\u90fd\u53bf","code":"500230000000"},{"area":"\u57ab\u6c5f\u53bf","code":"500231000000"},{"area":"\u5fe0\u53bf","code":"500233000000"},{"area":"\u4e91\u9633\u53bf","code":"500235000000"},{"area":"\u5949\u8282\u53bf","code":"500236000000"},{"area":"\u5deb\u5c71\u53bf","code":"500237000000"},{"area":"\u5deb\u6eaa\u53bf","code":"500238000000"},{"area":"\u77f3\u67f1\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","code":"500240000000"},{"area":"\u79c0\u5c71\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"500241000000"},{"area":"\u9149\u9633\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"500242000000"},{"area":"\u5f6d\u6c34\u82d7\u65cf\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","code":"500243000000"}]}]},{"province":"\u56db\u5ddd\u7701","code":"510000","citys":[{"city":"\u6210\u90fd\u5e02","code":"510100000000","areas":[{"area":"\u9526\u6c5f\u533a","code":"510104000000"},{"area":"\u9752\u7f8a\u533a","code":"510105000000"},{"area":"\u91d1\u725b\u533a","code":"510106000000"},{"area":"\u6b66\u4faf\u533a","code":"510107000000"},{"area":"\u6210\u534e\u533a","code":"510108000000"},{"area":"\u9f99\u6cc9\u9a7f\u533a","code":"510112000000"},{"area":"\u9752\u767d\u6c5f\u533a","code":"510113000000"},{"area":"\u65b0\u90fd\u533a","code":"510114000000"},{"area":"\u6e29\u6c5f\u533a","code":"510115000000"},{"area":"\u53cc\u6d41\u533a","code":"510116000000"},{"area":"\u90eb\u90fd\u533a","code":"510117000000"},{"area":"\u65b0\u6d25\u533a","code":"510118000000"},{"area":"\u91d1\u5802\u53bf","code":"510121000000"},{"area":"\u5927\u9091\u53bf","code":"510129000000"},{"area":"\u84b2\u6c5f\u53bf","code":"510131000000"},{"area":"\u90fd\u6c5f\u5830\u5e02","code":"510181000000"},{"area":"\u5f6d\u5dde\u5e02","code":"510182000000"},{"area":"\u909b\u5d03\u5e02","code":"510183000000"},{"area":"\u5d07\u5dde\u5e02","code":"510184000000"},{"area":"\u7b80\u9633\u5e02","code":"510185000000"}]},{"city":"\u81ea\u8d21\u5e02","code":"510300000000","areas":[{"area":"\u81ea\u6d41\u4e95\u533a","code":"510302000000"},{"area":"\u8d21\u4e95\u533a","code":"510303000000"},{"area":"\u5927\u5b89\u533a","code":"510304000000"},{"area":"\u6cbf\u6ee9\u533a","code":"510311000000"},{"area":"\u8363\u53bf","code":"510321000000"},{"area":"\u5bcc\u987a\u53bf","code":"510322000000"}]},{"city":"\u6500\u679d\u82b1\u5e02","code":"510400000000","areas":[{"area":"\u4e1c\u533a","code":"510402000000"},{"area":"\u897f\u533a","code":"510403000000"},{"area":"\u4ec1\u548c\u533a","code":"510411000000"},{"area":"\u7c73\u6613\u53bf","code":"510421000000"},{"area":"\u76d0\u8fb9\u53bf","code":"510422000000"}]},{"city":"\u6cf8\u5dde\u5e02","code":"510500000000","areas":[{"area":"\u6c5f\u9633\u533a","code":"510502000000"},{"area":"\u7eb3\u6eaa\u533a","code":"510503000000"},{"area":"\u9f99\u9a6c\u6f6d\u533a","code":"510504000000"},{"area":"\u6cf8\u53bf","code":"510521000000"},{"area":"\u5408\u6c5f\u53bf","code":"510522000000"},{"area":"\u53d9\u6c38\u53bf","code":"510524000000"},{"area":"\u53e4\u853a\u53bf","code":"510525000000"}]},{"city":"\u5fb7\u9633\u5e02","code":"510600000000","areas":[{"area":"\u65cc\u9633\u533a","code":"510603000000"},{"area":"\u7f57\u6c5f\u533a","code":"510604000000"},{"area":"\u4e2d\u6c5f\u53bf","code":"510623000000"},{"area":"\u5e7f\u6c49\u5e02","code":"510681000000"},{"area":"\u4ec0\u90a1\u5e02","code":"510682000000"},{"area":"\u7ef5\u7af9\u5e02","code":"510683000000"}]},{"city":"\u7ef5\u9633\u5e02","code":"510700000000","areas":[{"area":"\u6daa\u57ce\u533a","code":"510703000000"},{"area":"\u6e38\u4ed9\u533a","code":"510704000000"},{"area":"\u5b89\u5dde\u533a","code":"510705000000"},{"area":"\u4e09\u53f0\u53bf","code":"510722000000"},{"area":"\u76d0\u4ead\u53bf","code":"510723000000"},{"area":"\u6893\u6f7c\u53bf","code":"510725000000"},{"area":"\u5317\u5ddd\u7f8c\u65cf\u81ea\u6cbb\u53bf","code":"510726000000"},{"area":"\u5e73\u6b66\u53bf","code":"510727000000"},{"area":"\u6c5f\u6cb9\u5e02","code":"510781000000"}]},{"city":"\u5e7f\u5143\u5e02","code":"510800000000","areas":[{"area":"\u5229\u5dde\u533a","code":"510802000000"},{"area":"\u662d\u5316\u533a","code":"510811000000"},{"area":"\u671d\u5929\u533a","code":"510812000000"},{"area":"\u65fa\u82cd\u53bf","code":"510821000000"},{"area":"\u9752\u5ddd\u53bf","code":"510822000000"},{"area":"\u5251\u9601\u53bf","code":"510823000000"},{"area":"\u82cd\u6eaa\u53bf","code":"510824000000"}]},{"city":"\u9042\u5b81\u5e02","code":"510900000000","areas":[{"area":"\u8239\u5c71\u533a","code":"510903000000"},{"area":"\u5b89\u5c45\u533a","code":"510904000000"},{"area":"\u84ec\u6eaa\u53bf","code":"510921000000"},{"area":"\u5927\u82f1\u53bf","code":"510923000000"},{"area":"\u5c04\u6d2a\u5e02","code":"510981000000"}]},{"city":"\u5185\u6c5f\u5e02","code":"511000000000","areas":[{"area":"\u5e02\u4e2d\u533a","code":"511002000000"},{"area":"\u4e1c\u5174\u533a","code":"511011000000"},{"area":"\u5a01\u8fdc\u53bf","code":"511024000000"},{"area":"\u8d44\u4e2d\u53bf","code":"511025000000"},{"area":"\u9686\u660c\u5e02","code":"511083000000"}]},{"city":"\u4e50\u5c71\u5e02","code":"511100000000","areas":[{"area":"\u5e02\u4e2d\u533a","code":"511102000000"},{"area":"\u6c99\u6e7e\u533a","code":"511111000000"},{"area":"\u4e94\u901a\u6865\u533a","code":"511112000000"},{"area":"\u91d1\u53e3\u6cb3\u533a","code":"511113000000"},{"area":"\u728d\u4e3a\u53bf","code":"511123000000"},{"area":"\u4e95\u7814\u53bf","code":"511124000000"},{"area":"\u5939\u6c5f\u53bf","code":"511126000000"},{"area":"\u6c90\u5ddd\u53bf","code":"511129000000"},{"area":"\u5ce8\u8fb9\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"511132000000"},{"area":"\u9a6c\u8fb9\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"511133000000"},{"area":"\u5ce8\u7709\u5c71\u5e02","code":"511181000000"}]},{"city":"\u5357\u5145\u5e02","code":"511300000000","areas":[{"area":"\u987a\u5e86\u533a","code":"511302000000"},{"area":"\u9ad8\u576a\u533a","code":"511303000000"},{"area":"\u5609\u9675\u533a","code":"511304000000"},{"area":"\u5357\u90e8\u53bf","code":"511321000000"},{"area":"\u8425\u5c71\u53bf","code":"511322000000"},{"area":"\u84ec\u5b89\u53bf","code":"511323000000"},{"area":"\u4eea\u9647\u53bf","code":"511324000000"},{"area":"\u897f\u5145\u53bf","code":"511325000000"},{"area":"\u9606\u4e2d\u5e02","code":"511381000000"}]},{"city":"\u7709\u5c71\u5e02","code":"511400000000","areas":[{"area":"\u4e1c\u5761\u533a","code":"511402000000"},{"area":"\u5f6d\u5c71\u533a","code":"511403000000"},{"area":"\u4ec1\u5bff\u53bf","code":"511421000000"},{"area":"\u6d2a\u96c5\u53bf","code":"511423000000"},{"area":"\u4e39\u68f1\u53bf","code":"511424000000"},{"area":"\u9752\u795e\u53bf","code":"511425000000"}]},{"city":"\u5b9c\u5bbe\u5e02","code":"511500000000","areas":[{"area":"\u7fe0\u5c4f\u533a","code":"511502000000"},{"area":"\u5357\u6eaa\u533a","code":"511503000000"},{"area":"\u53d9\u5dde\u533a","code":"511504000000"},{"area":"\u6c5f\u5b89\u53bf","code":"511523000000"},{"area":"\u957f\u5b81\u53bf","code":"511524000000"},{"area":"\u9ad8\u53bf","code":"511525000000"},{"area":"\u73d9\u53bf","code":"511526000000"},{"area":"\u7b60\u8fde\u53bf","code":"511527000000"},{"area":"\u5174\u6587\u53bf","code":"511528000000"},{"area":"\u5c4f\u5c71\u53bf","code":"511529000000"}]},{"city":"\u5e7f\u5b89\u5e02","code":"511600000000","areas":[{"area":"\u5e7f\u5b89\u533a","code":"511602000000"},{"area":"\u524d\u950b\u533a","code":"511603000000"},{"area":"\u5cb3\u6c60\u53bf","code":"511621000000"},{"area":"\u6b66\u80dc\u53bf","code":"511622000000"},{"area":"\u90bb\u6c34\u53bf","code":"511623000000"},{"area":"\u534e\u84e5\u5e02","code":"511681000000"}]},{"city":"\u8fbe\u5dde\u5e02","code":"511700000000","areas":[{"area":"\u901a\u5ddd\u533a","code":"511702000000"},{"area":"\u8fbe\u5ddd\u533a","code":"511703000000"},{"area":"\u5ba3\u6c49\u53bf","code":"511722000000"},{"area":"\u5f00\u6c5f\u53bf","code":"511723000000"},{"area":"\u5927\u7af9\u53bf","code":"511724000000"},{"area":"\u6e20\u53bf","code":"511725000000"},{"area":"\u4e07\u6e90\u5e02","code":"511781000000"}]},{"city":"\u96c5\u5b89\u5e02","code":"511800000000","areas":[{"area":"\u96e8\u57ce\u533a","code":"511802000000"},{"area":"\u540d\u5c71\u533a","code":"511803000000"},{"area":"\u8365\u7ecf\u53bf","code":"511822000000"},{"area":"\u6c49\u6e90\u53bf","code":"511823000000"},{"area":"\u77f3\u68c9\u53bf","code":"511824000000"},{"area":"\u5929\u5168\u53bf","code":"511825000000"},{"area":"\u82a6\u5c71\u53bf","code":"511826000000"},{"area":"\u5b9d\u5174\u53bf","code":"511827000000"}]},{"city":"\u5df4\u4e2d\u5e02","code":"511900000000","areas":[{"area":"\u5df4\u5dde\u533a","code":"511902000000"},{"area":"\u6069\u9633\u533a","code":"511903000000"},{"area":"\u901a\u6c5f\u53bf","code":"511921000000"},{"area":"\u5357\u6c5f\u53bf","code":"511922000000"},{"area":"\u5e73\u660c\u53bf","code":"511923000000"}]},{"city":"\u8d44\u9633\u5e02","code":"512000000000","areas":[{"area":"\u96c1\u6c5f\u533a","code":"512002000000"},{"area":"\u5b89\u5cb3\u53bf","code":"512021000000"},{"area":"\u4e50\u81f3\u53bf","code":"512022000000"}]},{"city":"\u963f\u575d\u85cf\u65cf\u7f8c\u65cf\u81ea\u6cbb\u5dde","code":"513200000000","areas":[{"area":"\u9a6c\u5c14\u5eb7\u5e02","code":"513201000000"},{"area":"\u6c76\u5ddd\u53bf","code":"513221000000"},{"area":"\u7406\u53bf","code":"513222000000"},{"area":"\u8302\u53bf","code":"513223000000"},{"area":"\u677e\u6f58\u53bf","code":"513224000000"},{"area":"\u4e5d\u5be8\u6c9f\u53bf","code":"513225000000"},{"area":"\u91d1\u5ddd\u53bf","code":"513226000000"},{"area":"\u5c0f\u91d1\u53bf","code":"513227000000"},{"area":"\u9ed1\u6c34\u53bf","code":"513228000000"},{"area":"\u58e4\u5858\u53bf","code":"513230000000"},{"area":"\u963f\u575d\u53bf","code":"513231000000"},{"area":"\u82e5\u5c14\u76d6\u53bf","code":"513232000000"},{"area":"\u7ea2\u539f\u53bf","code":"513233000000"}]},{"city":"\u7518\u5b5c\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"513300000000","areas":[{"area":"\u5eb7\u5b9a\u5e02","code":"513301000000"},{"area":"\u6cf8\u5b9a\u53bf","code":"513322000000"},{"area":"\u4e39\u5df4\u53bf","code":"513323000000"},{"area":"\u4e5d\u9f99\u53bf","code":"513324000000"},{"area":"\u96c5\u6c5f\u53bf","code":"513325000000"},{"area":"\u9053\u5b5a\u53bf","code":"513326000000"},{"area":"\u7089\u970d\u53bf","code":"513327000000"},{"area":"\u7518\u5b5c\u53bf","code":"513328000000"},{"area":"\u65b0\u9f99\u53bf","code":"513329000000"},{"area":"\u5fb7\u683c\u53bf","code":"513330000000"},{"area":"\u767d\u7389\u53bf","code":"513331000000"},{"area":"\u77f3\u6e20\u53bf","code":"513332000000"},{"area":"\u8272\u8fbe\u53bf","code":"513333000000"},{"area":"\u7406\u5858\u53bf","code":"513334000000"},{"area":"\u5df4\u5858\u53bf","code":"513335000000"},{"area":"\u4e61\u57ce\u53bf","code":"513336000000"},{"area":"\u7a3b\u57ce\u53bf","code":"513337000000"},{"area":"\u5f97\u8363\u53bf","code":"513338000000"}]},{"city":"\u51c9\u5c71\u5f5d\u65cf\u81ea\u6cbb\u5dde","code":"513400000000","areas":[{"area":"\u897f\u660c\u5e02","code":"513401000000"},{"area":"\u4f1a\u7406\u5e02","code":"513402000000"},{"area":"\u6728\u91cc\u85cf\u65cf\u81ea\u6cbb\u53bf","code":"513422000000"},{"area":"\u76d0\u6e90\u53bf","code":"513423000000"},{"area":"\u5fb7\u660c\u53bf","code":"513424000000"},{"area":"\u4f1a\u4e1c\u53bf","code":"513426000000"},{"area":"\u5b81\u5357\u53bf","code":"513427000000"},{"area":"\u666e\u683c\u53bf","code":"513428000000"},{"area":"\u5e03\u62d6\u53bf","code":"513429000000"},{"area":"\u91d1\u9633\u53bf","code":"513430000000"},{"area":"\u662d\u89c9\u53bf","code":"513431000000"},{"area":"\u559c\u5fb7\u53bf","code":"513432000000"},{"area":"\u5195\u5b81\u53bf","code":"513433000000"},{"area":"\u8d8a\u897f\u53bf","code":"513434000000"},{"area":"\u7518\u6d1b\u53bf","code":"513435000000"},{"area":"\u7f8e\u59d1\u53bf","code":"513436000000"},{"area":"\u96f7\u6ce2\u53bf","code":"513437000000"}]}]},{"province":"\u8d35\u5dde\u7701","code":"520000","citys":[{"city":"\u8d35\u9633\u5e02","code":"520100000000","areas":[{"area":"\u5357\u660e\u533a","code":"520102000000"},{"area":"\u4e91\u5ca9\u533a","code":"520103000000"},{"area":"\u82b1\u6eaa\u533a","code":"520111000000"},{"area":"\u4e4c\u5f53\u533a","code":"520112000000"},{"area":"\u767d\u4e91\u533a","code":"520113000000"},{"area":"\u89c2\u5c71\u6e56\u533a","code":"520115000000"},{"area":"\u5f00\u9633\u53bf","code":"520121000000"},{"area":"\u606f\u70fd\u53bf","code":"520122000000"},{"area":"\u4fee\u6587\u53bf","code":"520123000000"},{"area":"\u6e05\u9547\u5e02","code":"520181000000"}]},{"city":"\u516d\u76d8\u6c34\u5e02","code":"520200000000","areas":[{"area":"\u949f\u5c71\u533a","code":"520201000000"},{"area":"\u516d\u679d\u7279\u533a","code":"520203000000"},{"area":"\u6c34\u57ce\u533a","code":"520204000000"},{"area":"\u76d8\u5dde\u5e02","code":"520281000000"}]},{"city":"\u9075\u4e49\u5e02","code":"520300000000","areas":[{"area":"\u7ea2\u82b1\u5c97\u533a","code":"520302000000"},{"area":"\u6c47\u5ddd\u533a","code":"520303000000"},{"area":"\u64ad\u5dde\u533a","code":"520304000000"},{"area":"\u6850\u6893\u53bf","code":"520322000000"},{"area":"\u7ee5\u9633\u53bf","code":"520323000000"},{"area":"\u6b63\u5b89\u53bf","code":"520324000000"},{"area":"\u9053\u771f\u4ee1\u4f6c\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"520325000000"},{"area":"\u52a1\u5ddd\u4ee1\u4f6c\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"520326000000"},{"area":"\u51e4\u5188\u53bf","code":"520327000000"},{"area":"\u6e44\u6f6d\u53bf","code":"520328000000"},{"area":"\u4f59\u5e86\u53bf","code":"520329000000"},{"area":"\u4e60\u6c34\u53bf","code":"520330000000"},{"area":"\u8d64\u6c34\u5e02","code":"520381000000"},{"area":"\u4ec1\u6000\u5e02","code":"520382000000"}]},{"city":"\u5b89\u987a\u5e02","code":"520400000000","areas":[{"area":"\u897f\u79c0\u533a","code":"520402000000"},{"area":"\u5e73\u575d\u533a","code":"520403000000"},{"area":"\u666e\u5b9a\u53bf","code":"520422000000"},{"area":"\u9547\u5b81\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"520423000000"},{"area":"\u5173\u5cad\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"520424000000"},{"area":"\u7d2b\u4e91\u82d7\u65cf\u5e03\u4f9d\u65cf\u81ea\u6cbb\u53bf","code":"520425000000"}]},{"city":"\u6bd5\u8282\u5e02","code":"520500000000","areas":[{"area":"\u4e03\u661f\u5173\u533a","code":"520502000000"},{"area":"\u5927\u65b9\u53bf","code":"520521000000"},{"area":"\u91d1\u6c99\u53bf","code":"520523000000"},{"area":"\u7ec7\u91d1\u53bf","code":"520524000000"},{"area":"\u7eb3\u96cd\u53bf","code":"520525000000"},{"area":"\u5a01\u5b81\u5f5d\u65cf\u56de\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"520526000000"},{"area":"\u8d6b\u7ae0\u53bf","code":"520527000000"},{"area":"\u9ed4\u897f\u5e02","code":"520581000000"}]},{"city":"\u94dc\u4ec1\u5e02","code":"520600000000","areas":[{"area":"\u78a7\u6c5f\u533a","code":"520602000000"},{"area":"\u4e07\u5c71\u533a","code":"520603000000"},{"area":"\u6c5f\u53e3\u53bf","code":"520621000000"},{"area":"\u7389\u5c4f\u4f97\u65cf\u81ea\u6cbb\u53bf","code":"520622000000"},{"area":"\u77f3\u9621\u53bf","code":"520623000000"},{"area":"\u601d\u5357\u53bf","code":"520624000000"},{"area":"\u5370\u6c5f\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"520625000000"},{"area":"\u5fb7\u6c5f\u53bf","code":"520626000000"},{"area":"\u6cbf\u6cb3\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","code":"520627000000"},{"area":"\u677e\u6843\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"520628000000"}]},{"city":"\u9ed4\u897f\u5357\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","code":"522300000000","areas":[{"area":"\u5174\u4e49\u5e02","code":"522301000000"},{"area":"\u5174\u4ec1\u5e02","code":"522302000000"},{"area":"\u666e\u5b89\u53bf","code":"522323000000"},{"area":"\u6674\u9686\u53bf","code":"522324000000"},{"area":"\u8d1e\u4e30\u53bf","code":"522325000000"},{"area":"\u671b\u8c1f\u53bf","code":"522326000000"},{"area":"\u518c\u4ea8\u53bf","code":"522327000000"},{"area":"\u5b89\u9f99\u53bf","code":"522328000000"}]},{"city":"\u9ed4\u4e1c\u5357\u82d7\u65cf\u4f97\u65cf\u81ea\u6cbb\u5dde","code":"522600000000","areas":[{"area":"\u51ef\u91cc\u5e02","code":"522601000000"},{"area":"\u9ec4\u5e73\u53bf","code":"522622000000"},{"area":"\u65bd\u79c9\u53bf","code":"522623000000"},{"area":"\u4e09\u7a57\u53bf","code":"522624000000"},{"area":"\u9547\u8fdc\u53bf","code":"522625000000"},{"area":"\u5c91\u5de9\u53bf","code":"522626000000"},{"area":"\u5929\u67f1\u53bf","code":"522627000000"},{"area":"\u9526\u5c4f\u53bf","code":"522628000000"},{"area":"\u5251\u6cb3\u53bf","code":"522629000000"},{"area":"\u53f0\u6c5f\u53bf","code":"522630000000"},{"area":"\u9ece\u5e73\u53bf","code":"522631000000"},{"area":"\u6995\u6c5f\u53bf","code":"522632000000"},{"area":"\u4ece\u6c5f\u53bf","code":"522633000000"},{"area":"\u96f7\u5c71\u53bf","code":"522634000000"},{"area":"\u9ebb\u6c5f\u53bf","code":"522635000000"},{"area":"\u4e39\u5be8\u53bf","code":"522636000000"}]},{"city":"\u9ed4\u5357\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","code":"522700000000","areas":[{"area":"\u90fd\u5300\u5e02","code":"522701000000"},{"area":"\u798f\u6cc9\u5e02","code":"522702000000"},{"area":"\u8354\u6ce2\u53bf","code":"522722000000"},{"area":"\u8d35\u5b9a\u53bf","code":"522723000000"},{"area":"\u74ee\u5b89\u53bf","code":"522725000000"},{"area":"\u72ec\u5c71\u53bf","code":"522726000000"},{"area":"\u5e73\u5858\u53bf","code":"522727000000"},{"area":"\u7f57\u7538\u53bf","code":"522728000000"},{"area":"\u957f\u987a\u53bf","code":"522729000000"},{"area":"\u9f99\u91cc\u53bf","code":"522730000000"},{"area":"\u60e0\u6c34\u53bf","code":"522731000000"},{"area":"\u4e09\u90fd\u6c34\u65cf\u81ea\u6cbb\u53bf","code":"522732000000"}]}]},{"province":"\u4e91\u5357\u7701","code":"530000","citys":[{"city":"\u6606\u660e\u5e02","code":"530100000000","areas":[{"area":"\u4e94\u534e\u533a","code":"530102000000"},{"area":"\u76d8\u9f99\u533a","code":"530103000000"},{"area":"\u5b98\u6e21\u533a","code":"530111000000"},{"area":"\u897f\u5c71\u533a","code":"530112000000"},{"area":"\u4e1c\u5ddd\u533a","code":"530113000000"},{"area":"\u5448\u8d21\u533a","code":"530114000000"},{"area":"\u664b\u5b81\u533a","code":"530115000000"},{"area":"\u5bcc\u6c11\u53bf","code":"530124000000"},{"area":"\u5b9c\u826f\u53bf","code":"530125000000"},{"area":"\u77f3\u6797\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530126000000"},{"area":"\u5d69\u660e\u53bf","code":"530127000000"},{"area":"\u7984\u529d\u5f5d\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"530128000000"},{"area":"\u5bfb\u7538\u56de\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530129000000"},{"area":"\u5b89\u5b81\u5e02","code":"530181000000"}]},{"city":"\u66f2\u9756\u5e02","code":"530300000000","areas":[{"area":"\u9e92\u9e9f\u533a","code":"530302000000"},{"area":"\u6cbe\u76ca\u533a","code":"530303000000"},{"area":"\u9a6c\u9f99\u533a","code":"530304000000"},{"area":"\u9646\u826f\u53bf","code":"530322000000"},{"area":"\u5e08\u5b97\u53bf","code":"530323000000"},{"area":"\u7f57\u5e73\u53bf","code":"530324000000"},{"area":"\u5bcc\u6e90\u53bf","code":"530325000000"},{"area":"\u4f1a\u6cfd\u53bf","code":"530326000000"},{"area":"\u5ba3\u5a01\u5e02","code":"530381000000"}]},{"city":"\u7389\u6eaa\u5e02","code":"530400000000","areas":[{"area":"\u7ea2\u5854\u533a","code":"530402000000"},{"area":"\u6c5f\u5ddd\u533a","code":"530403000000"},{"area":"\u901a\u6d77\u53bf","code":"530423000000"},{"area":"\u534e\u5b81\u53bf","code":"530424000000"},{"area":"\u6613\u95e8\u53bf","code":"530425000000"},{"area":"\u5ce8\u5c71\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530426000000"},{"area":"\u65b0\u5e73\u5f5d\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","code":"530427000000"},{"area":"\u5143\u6c5f\u54c8\u5c3c\u65cf\u5f5d\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","code":"530428000000"},{"area":"\u6f84\u6c5f\u5e02","code":"530481000000"}]},{"city":"\u4fdd\u5c71\u5e02","code":"530500000000","areas":[{"area":"\u9686\u9633\u533a","code":"530502000000"},{"area":"\u65bd\u7538\u53bf","code":"530521000000"},{"area":"\u9f99\u9675\u53bf","code":"530523000000"},{"area":"\u660c\u5b81\u53bf","code":"530524000000"},{"area":"\u817e\u51b2\u5e02","code":"530581000000"}]},{"city":"\u662d\u901a\u5e02","code":"530600000000","areas":[{"area":"\u662d\u9633\u533a","code":"530602000000"},{"area":"\u9c81\u7538\u53bf","code":"530621000000"},{"area":"\u5de7\u5bb6\u53bf","code":"530622000000"},{"area":"\u76d0\u6d25\u53bf","code":"530623000000"},{"area":"\u5927\u5173\u53bf","code":"530624000000"},{"area":"\u6c38\u5584\u53bf","code":"530625000000"},{"area":"\u7ee5\u6c5f\u53bf","code":"530626000000"},{"area":"\u9547\u96c4\u53bf","code":"530627000000"},{"area":"\u5f5d\u826f\u53bf","code":"530628000000"},{"area":"\u5a01\u4fe1\u53bf","code":"530629000000"},{"area":"\u6c34\u5bcc\u5e02","code":"530681000000"}]},{"city":"\u4e3d\u6c5f\u5e02","code":"530700000000","areas":[{"area":"\u53e4\u57ce\u533a","code":"530702000000"},{"area":"\u7389\u9f99\u7eb3\u897f\u65cf\u81ea\u6cbb\u53bf","code":"530721000000"},{"area":"\u6c38\u80dc\u53bf","code":"530722000000"},{"area":"\u534e\u576a\u53bf","code":"530723000000"},{"area":"\u5b81\u8497\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530724000000"}]},{"city":"\u666e\u6d31\u5e02","code":"530800000000","areas":[{"area":"\u601d\u8305\u533a","code":"530802000000"},{"area":"\u5b81\u6d31\u54c8\u5c3c\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530821000000"},{"area":"\u58a8\u6c5f\u54c8\u5c3c\u65cf\u81ea\u6cbb\u53bf","code":"530822000000"},{"area":"\u666f\u4e1c\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530823000000"},{"area":"\u666f\u8c37\u50a3\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530824000000"},{"area":"\u9547\u6c85\u5f5d\u65cf\u54c8\u5c3c\u65cf\u62c9\u795c\u65cf\u81ea\u6cbb\u53bf","code":"530825000000"},{"area":"\u6c5f\u57ce\u54c8\u5c3c\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530826000000"},{"area":"\u5b5f\u8fde\u50a3\u65cf\u62c9\u795c\u65cf\u4f64\u65cf\u81ea\u6cbb\u53bf","code":"530827000000"},{"area":"\u6f9c\u6ca7\u62c9\u795c\u65cf\u81ea\u6cbb\u53bf","code":"530828000000"},{"area":"\u897f\u76df\u4f64\u65cf\u81ea\u6cbb\u53bf","code":"530829000000"}]},{"city":"\u4e34\u6ca7\u5e02","code":"530900000000","areas":[{"area":"\u4e34\u7fd4\u533a","code":"530902000000"},{"area":"\u51e4\u5e86\u53bf","code":"530921000000"},{"area":"\u4e91\u53bf","code":"530922000000"},{"area":"\u6c38\u5fb7\u53bf","code":"530923000000"},{"area":"\u9547\u5eb7\u53bf","code":"530924000000"},{"area":"\u53cc\u6c5f\u62c9\u795c\u65cf\u4f64\u65cf\u5e03\u6717\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","code":"530925000000"},{"area":"\u803f\u9a6c\u50a3\u65cf\u4f64\u65cf\u81ea\u6cbb\u53bf","code":"530926000000"},{"area":"\u6ca7\u6e90\u4f64\u65cf\u81ea\u6cbb\u53bf","code":"530927000000"}]},{"city":"\u695a\u96c4\u5f5d\u65cf\u81ea\u6cbb\u5dde","code":"532300000000","areas":[{"area":"\u695a\u96c4\u5e02","code":"532301000000"},{"area":"\u7984\u4e30\u5e02","code":"532302000000"},{"area":"\u53cc\u67cf\u53bf","code":"532322000000"},{"area":"\u725f\u5b9a\u53bf","code":"532323000000"},{"area":"\u5357\u534e\u53bf","code":"532324000000"},{"area":"\u59da\u5b89\u53bf","code":"532325000000"},{"area":"\u5927\u59da\u53bf","code":"532326000000"},{"area":"\u6c38\u4ec1\u53bf","code":"532327000000"},{"area":"\u5143\u8c0b\u53bf","code":"532328000000"},{"area":"\u6b66\u5b9a\u53bf","code":"532329000000"}]},{"city":"\u7ea2\u6cb3\u54c8\u5c3c\u65cf\u5f5d\u65cf\u81ea\u6cbb\u5dde","code":"532500000000","areas":[{"area":"\u4e2a\u65e7\u5e02","code":"532501000000"},{"area":"\u5f00\u8fdc\u5e02","code":"532502000000"},{"area":"\u8499\u81ea\u5e02","code":"532503000000"},{"area":"\u5f25\u52d2\u5e02","code":"532504000000"},{"area":"\u5c4f\u8fb9\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"532523000000"},{"area":"\u5efa\u6c34\u53bf","code":"532524000000"},{"area":"\u77f3\u5c4f\u53bf","code":"532525000000"},{"area":"\u6cf8\u897f\u53bf","code":"532527000000"},{"area":"\u5143\u9633\u53bf","code":"532528000000"},{"area":"\u7ea2\u6cb3\u53bf","code":"532529000000"},{"area":"\u91d1\u5e73\u82d7\u65cf\u7476\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","code":"532530000000"},{"area":"\u7eff\u6625\u53bf","code":"532531000000"},{"area":"\u6cb3\u53e3\u7476\u65cf\u81ea\u6cbb\u53bf","code":"532532000000"}]},{"city":"\u6587\u5c71\u58ee\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","code":"532600000000","areas":[{"area":"\u6587\u5c71\u5e02","code":"532601000000"},{"area":"\u781a\u5c71\u53bf","code":"532622000000"},{"area":"\u897f\u7574\u53bf","code":"532623000000"},{"area":"\u9ebb\u6817\u5761\u53bf","code":"532624000000"},{"area":"\u9a6c\u5173\u53bf","code":"532625000000"},{"area":"\u4e18\u5317\u53bf","code":"532626000000"},{"area":"\u5e7f\u5357\u53bf","code":"532627000000"},{"area":"\u5bcc\u5b81\u53bf","code":"532628000000"}]},{"city":"\u897f\u53cc\u7248\u7eb3\u50a3\u65cf\u81ea\u6cbb\u5dde","code":"532800000000","areas":[{"area":"\u666f\u6d2a\u5e02","code":"532801000000"},{"area":"\u52d0\u6d77\u53bf","code":"532822000000"},{"area":"\u52d0\u814a\u53bf","code":"532823000000"}]},{"city":"\u5927\u7406\u767d\u65cf\u81ea\u6cbb\u5dde","code":"532900000000","areas":[{"area":"\u5927\u7406\u5e02","code":"532901000000"},{"area":"\u6f3e\u6fde\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"532922000000"},{"area":"\u7965\u4e91\u53bf","code":"532923000000"},{"area":"\u5bbe\u5ddd\u53bf","code":"532924000000"},{"area":"\u5f25\u6e21\u53bf","code":"532925000000"},{"area":"\u5357\u6da7\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"532926000000"},{"area":"\u5dcd\u5c71\u5f5d\u65cf\u56de\u65cf\u81ea\u6cbb\u53bf","code":"532927000000"},{"area":"\u6c38\u5e73\u53bf","code":"532928000000"},{"area":"\u4e91\u9f99\u53bf","code":"532929000000"},{"area":"\u6d31\u6e90\u53bf","code":"532930000000"},{"area":"\u5251\u5ddd\u53bf","code":"532931000000"},{"area":"\u9e64\u5e86\u53bf","code":"532932000000"}]},{"city":"\u5fb7\u5b8f\u50a3\u65cf\u666f\u9887\u65cf\u81ea\u6cbb\u5dde","code":"533100000000","areas":[{"area":"\u745e\u4e3d\u5e02","code":"533102000000"},{"area":"\u8292\u5e02","code":"533103000000"},{"area":"\u6881\u6cb3\u53bf","code":"533122000000"},{"area":"\u76c8\u6c5f\u53bf","code":"533123000000"},{"area":"\u9647\u5ddd\u53bf","code":"533124000000"}]},{"city":"\u6012\u6c5f\u5088\u50f3\u65cf\u81ea\u6cbb\u5dde","code":"533300000000","areas":[{"area":"\u6cf8\u6c34\u5e02","code":"533301000000"},{"area":"\u798f\u8d21\u53bf","code":"533323000000"},{"area":"\u8d21\u5c71\u72ec\u9f99\u65cf\u6012\u65cf\u81ea\u6cbb\u53bf","code":"533324000000"},{"area":"\u5170\u576a\u767d\u65cf\u666e\u7c73\u65cf\u81ea\u6cbb\u53bf","code":"533325000000"}]},{"city":"\u8fea\u5e86\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"533400000000","areas":[{"area":"\u9999\u683c\u91cc\u62c9\u5e02","code":"533401000000"},{"area":"\u5fb7\u94a6\u53bf","code":"533422000000"},{"area":"\u7ef4\u897f\u5088\u50f3\u65cf\u81ea\u6cbb\u53bf","code":"533423000000"}]}]},{"province":"\u897f\u85cf\u81ea\u6cbb\u533a","code":"540000","citys":[{"city":"\u62c9\u8428\u5e02","code":"540100000000","areas":[{"area":"\u57ce\u5173\u533a","code":"540102000000"},{"area":"\u5806\u9f99\u5fb7\u5e86\u533a","code":"540103000000"},{"area":"\u8fbe\u5b5c\u533a","code":"540104000000"},{"area":"\u6797\u5468\u53bf","code":"540121000000"},{"area":"\u5f53\u96c4\u53bf","code":"540122000000"},{"area":"\u5c3c\u6728\u53bf","code":"540123000000"},{"area":"\u66f2\u6c34\u53bf","code":"540124000000"},{"area":"\u58a8\u7af9\u5de5\u5361\u53bf","code":"540127000000"},{"area":"\u683c\u5c14\u6728\u85cf\u9752\u5de5\u4e1a\u56ed\u533a","code":"540171000000"},{"area":"\u62c9\u8428\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"540172000000"},{"area":"\u897f\u85cf\u6587\u5316\u65c5\u6e38\u521b\u610f\u56ed\u533a","code":"540173000000"},{"area":"\u8fbe\u5b5c\u5de5\u4e1a\u56ed\u533a","code":"540174000000"}]},{"city":"\u65e5\u5580\u5219\u5e02","code":"540200000000","areas":[{"area":"\u6851\u73e0\u5b5c\u533a","code":"540202000000"},{"area":"\u5357\u6728\u6797\u53bf","code":"540221000000"},{"area":"\u6c5f\u5b5c\u53bf","code":"540222000000"},{"area":"\u5b9a\u65e5\u53bf","code":"540223000000"},{"area":"\u8428\u8fe6\u53bf","code":"540224000000"},{"area":"\u62c9\u5b5c\u53bf","code":"540225000000"},{"area":"\u6602\u4ec1\u53bf","code":"540226000000"},{"area":"\u8c22\u901a\u95e8\u53bf","code":"540227000000"},{"area":"\u767d\u6717\u53bf","code":"540228000000"},{"area":"\u4ec1\u5e03\u53bf","code":"540229000000"},{"area":"\u5eb7\u9a6c\u53bf","code":"540230000000"},{"area":"\u5b9a\u7ed3\u53bf","code":"540231000000"},{"area":"\u4ef2\u5df4\u53bf","code":"540232000000"},{"area":"\u4e9a\u4e1c\u53bf","code":"540233000000"},{"area":"\u5409\u9686\u53bf","code":"540234000000"},{"area":"\u8042\u62c9\u6728\u53bf","code":"540235000000"},{"area":"\u8428\u560e\u53bf","code":"540236000000"},{"area":"\u5c97\u5df4\u53bf","code":"540237000000"}]},{"city":"\u660c\u90fd\u5e02","code":"540300000000","areas":[{"area":"\u5361\u82e5\u533a","code":"540302000000"},{"area":"\u6c5f\u8fbe\u53bf","code":"540321000000"},{"area":"\u8d21\u89c9\u53bf","code":"540322000000"},{"area":"\u7c7b\u4e4c\u9f50\u53bf","code":"540323000000"},{"area":"\u4e01\u9752\u53bf","code":"540324000000"},{"area":"\u5bdf\u96c5\u53bf","code":"540325000000"},{"area":"\u516b\u5bbf\u53bf","code":"540326000000"},{"area":"\u5de6\u8d21\u53bf","code":"540327000000"},{"area":"\u8292\u5eb7\u53bf","code":"540328000000"},{"area":"\u6d1b\u9686\u53bf","code":"540329000000"},{"area":"\u8fb9\u575d\u53bf","code":"540330000000"}]},{"city":"\u6797\u829d\u5e02","code":"540400000000","areas":[{"area":"\u5df4\u5b9c\u533a","code":"540402000000"},{"area":"\u5de5\u5e03\u6c5f\u8fbe\u53bf","code":"540421000000"},{"area":"\u58a8\u8131\u53bf","code":"540423000000"},{"area":"\u6ce2\u5bc6\u53bf","code":"540424000000"},{"area":"\u5bdf\u9685\u53bf","code":"540425000000"},{"area":"\u6717\u53bf","code":"540426000000"},{"area":"\u7c73\u6797\u5e02","code":"540481000000"}]},{"city":"\u5c71\u5357\u5e02","code":"540500000000","areas":[{"area":"\u4e43\u4e1c\u533a","code":"540502000000"},{"area":"\u624e\u56ca\u53bf","code":"540521000000"},{"area":"\u8d21\u560e\u53bf","code":"540522000000"},{"area":"\u6851\u65e5\u53bf","code":"540523000000"},{"area":"\u743c\u7ed3\u53bf","code":"540524000000"},{"area":"\u66f2\u677e\u53bf","code":"540525000000"},{"area":"\u63aa\u7f8e\u53bf","code":"540526000000"},{"area":"\u6d1b\u624e\u53bf","code":"540527000000"},{"area":"\u52a0\u67e5\u53bf","code":"540528000000"},{"area":"\u9686\u5b50\u53bf","code":"540529000000"},{"area":"\u6d6a\u5361\u5b50\u53bf","code":"540531000000"},{"area":"\u9519\u90a3\u5e02","code":"540581000000"}]},{"city":"\u90a3\u66f2\u5e02","code":"540600000000","areas":[{"area":"\u8272\u5c3c\u533a","code":"540602000000"},{"area":"\u5609\u9ece\u53bf","code":"540621000000"},{"area":"\u6bd4\u5982\u53bf","code":"540622000000"},{"area":"\u8042\u8363\u53bf","code":"540623000000"},{"area":"\u5b89\u591a\u53bf","code":"540624000000"},{"area":"\u7533\u624e\u53bf","code":"540625000000"},{"area":"\u7d22\u53bf","code":"540626000000"},{"area":"\u73ed\u6208\u53bf","code":"540627000000"},{"area":"\u5df4\u9752\u53bf","code":"540628000000"},{"area":"\u5c3c\u739b\u53bf","code":"540629000000"},{"area":"\u53cc\u6e56\u53bf","code":"540630000000"}]},{"city":"\u963f\u91cc\u5730\u533a","code":"542500000000","areas":[{"area":"\u666e\u5170\u53bf","code":"542521000000"},{"area":"\u672d\u8fbe\u53bf","code":"542522000000"},{"area":"\u5676\u5c14\u53bf","code":"542523000000"},{"area":"\u65e5\u571f\u53bf","code":"542524000000"},{"area":"\u9769\u5409\u53bf","code":"542525000000"},{"area":"\u6539\u5219\u53bf","code":"542526000000"},{"area":"\u63aa\u52e4\u53bf","code":"542527000000"}]}]},{"province":"\u9655\u897f\u7701","code":"610000","citys":[{"city":"\u897f\u5b89\u5e02","code":"610100000000","areas":[{"area":"\u65b0\u57ce\u533a","code":"610102000000"},{"area":"\u7891\u6797\u533a","code":"610103000000"},{"area":"\u83b2\u6e56\u533a","code":"610104000000"},{"area":"\u705e\u6865\u533a","code":"610111000000"},{"area":"\u672a\u592e\u533a","code":"610112000000"},{"area":"\u96c1\u5854\u533a","code":"610113000000"},{"area":"\u960e\u826f\u533a","code":"610114000000"},{"area":"\u4e34\u6f7c\u533a","code":"610115000000"},{"area":"\u957f\u5b89\u533a","code":"610116000000"},{"area":"\u9ad8\u9675\u533a","code":"610117000000"},{"area":"\u9120\u9091\u533a","code":"610118000000"},{"area":"\u84dd\u7530\u53bf","code":"610122000000"},{"area":"\u5468\u81f3\u53bf","code":"610124000000"}]},{"city":"\u94dc\u5ddd\u5e02","code":"610200000000","areas":[{"area":"\u738b\u76ca\u533a","code":"610202000000"},{"area":"\u5370\u53f0\u533a","code":"610203000000"},{"area":"\u8000\u5dde\u533a","code":"610204000000"},{"area":"\u5b9c\u541b\u53bf","code":"610222000000"}]},{"city":"\u5b9d\u9e21\u5e02","code":"610300000000","areas":[{"area":"\u6e2d\u6ee8\u533a","code":"610302000000"},{"area":"\u91d1\u53f0\u533a","code":"610303000000"},{"area":"\u9648\u4ed3\u533a","code":"610304000000"},{"area":"\u51e4\u7fd4\u533a","code":"610305000000"},{"area":"\u5c90\u5c71\u53bf","code":"610323000000"},{"area":"\u6276\u98ce\u53bf","code":"610324000000"},{"area":"\u7709\u53bf","code":"610326000000"},{"area":"\u9647\u53bf","code":"610327000000"},{"area":"\u5343\u9633\u53bf","code":"610328000000"},{"area":"\u9e9f\u6e38\u53bf","code":"610329000000"},{"area":"\u51e4\u53bf","code":"610330000000"},{"area":"\u592a\u767d\u53bf","code":"610331000000"}]},{"city":"\u54b8\u9633\u5e02","code":"610400000000","areas":[{"area":"\u79e6\u90fd\u533a","code":"610402000000"},{"area":"\u6768\u9675\u533a","code":"610403000000"},{"area":"\u6e2d\u57ce\u533a","code":"610404000000"},{"area":"\u4e09\u539f\u53bf","code":"610422000000"},{"area":"\u6cfe\u9633\u53bf","code":"610423000000"},{"area":"\u4e7e\u53bf","code":"610424000000"},{"area":"\u793c\u6cc9\u53bf","code":"610425000000"},{"area":"\u6c38\u5bff\u53bf","code":"610426000000"},{"area":"\u957f\u6b66\u53bf","code":"610428000000"},{"area":"\u65ec\u9091\u53bf","code":"610429000000"},{"area":"\u6df3\u5316\u53bf","code":"610430000000"},{"area":"\u6b66\u529f\u53bf","code":"610431000000"},{"area":"\u5174\u5e73\u5e02","code":"610481000000"},{"area":"\u5f6c\u5dde\u5e02","code":"610482000000"}]},{"city":"\u6e2d\u5357\u5e02","code":"610500000000","areas":[{"area":"\u4e34\u6e2d\u533a","code":"610502000000"},{"area":"\u534e\u5dde\u533a","code":"610503000000"},{"area":"\u6f7c\u5173\u53bf","code":"610522000000"},{"area":"\u5927\u8354\u53bf","code":"610523000000"},{"area":"\u5408\u9633\u53bf","code":"610524000000"},{"area":"\u6f84\u57ce\u53bf","code":"610525000000"},{"area":"\u84b2\u57ce\u53bf","code":"610526000000"},{"area":"\u767d\u6c34\u53bf","code":"610527000000"},{"area":"\u5bcc\u5e73\u53bf","code":"610528000000"},{"area":"\u97e9\u57ce\u5e02","code":"610581000000"},{"area":"\u534e\u9634\u5e02","code":"610582000000"}]},{"city":"\u5ef6\u5b89\u5e02","code":"610600000000","areas":[{"area":"\u5b9d\u5854\u533a","code":"610602000000"},{"area":"\u5b89\u585e\u533a","code":"610603000000"},{"area":"\u5ef6\u957f\u53bf","code":"610621000000"},{"area":"\u5ef6\u5ddd\u53bf","code":"610622000000"},{"area":"\u5fd7\u4e39\u53bf","code":"610625000000"},{"area":"\u5434\u8d77\u53bf","code":"610626000000"},{"area":"\u7518\u6cc9\u53bf","code":"610627000000"},{"area":"\u5bcc\u53bf","code":"610628000000"},{"area":"\u6d1b\u5ddd\u53bf","code":"610629000000"},{"area":"\u5b9c\u5ddd\u53bf","code":"610630000000"},{"area":"\u9ec4\u9f99\u53bf","code":"610631000000"},{"area":"\u9ec4\u9675\u53bf","code":"610632000000"},{"area":"\u5b50\u957f\u5e02","code":"610681000000"}]},{"city":"\u6c49\u4e2d\u5e02","code":"610700000000","areas":[{"area":"\u6c49\u53f0\u533a","code":"610702000000"},{"area":"\u5357\u90d1\u533a","code":"610703000000"},{"area":"\u57ce\u56fa\u53bf","code":"610722000000"},{"area":"\u6d0b\u53bf","code":"610723000000"},{"area":"\u897f\u4e61\u53bf","code":"610724000000"},{"area":"\u52c9\u53bf","code":"610725000000"},{"area":"\u5b81\u5f3a\u53bf","code":"610726000000"},{"area":"\u7565\u9633\u53bf","code":"610727000000"},{"area":"\u9547\u5df4\u53bf","code":"610728000000"},{"area":"\u7559\u575d\u53bf","code":"610729000000"},{"area":"\u4f5b\u576a\u53bf","code":"610730000000"}]},{"city":"\u6986\u6797\u5e02","code":"610800000000","areas":[{"area":"\u6986\u9633\u533a","code":"610802000000"},{"area":"\u6a2a\u5c71\u533a","code":"610803000000"},{"area":"\u5e9c\u8c37\u53bf","code":"610822000000"},{"area":"\u9756\u8fb9\u53bf","code":"610824000000"},{"area":"\u5b9a\u8fb9\u53bf","code":"610825000000"},{"area":"\u7ee5\u5fb7\u53bf","code":"610826000000"},{"area":"\u7c73\u8102\u53bf","code":"610827000000"},{"area":"\u4f73\u53bf","code":"610828000000"},{"area":"\u5434\u5821\u53bf","code":"610829000000"},{"area":"\u6e05\u6da7\u53bf","code":"610830000000"},{"area":"\u5b50\u6d32\u53bf","code":"610831000000"},{"area":"\u795e\u6728\u5e02","code":"610881000000"}]},{"city":"\u5b89\u5eb7\u5e02","code":"610900000000","areas":[{"area":"\u6c49\u6ee8\u533a","code":"610902000000"},{"area":"\u6c49\u9634\u53bf","code":"610921000000"},{"area":"\u77f3\u6cc9\u53bf","code":"610922000000"},{"area":"\u5b81\u9655\u53bf","code":"610923000000"},{"area":"\u7d2b\u9633\u53bf","code":"610924000000"},{"area":"\u5c9a\u768b\u53bf","code":"610925000000"},{"area":"\u5e73\u5229\u53bf","code":"610926000000"},{"area":"\u9547\u576a\u53bf","code":"610927000000"},{"area":"\u767d\u6cb3\u53bf","code":"610929000000"},{"area":"\u65ec\u9633\u5e02","code":"610981000000"}]},{"city":"\u5546\u6d1b\u5e02","code":"611000000000","areas":[{"area":"\u5546\u5dde\u533a","code":"611002000000"},{"area":"\u6d1b\u5357\u53bf","code":"611021000000"},{"area":"\u4e39\u51e4\u53bf","code":"611022000000"},{"area":"\u5546\u5357\u53bf","code":"611023000000"},{"area":"\u5c71\u9633\u53bf","code":"611024000000"},{"area":"\u9547\u5b89\u53bf","code":"611025000000"},{"area":"\u67de\u6c34\u53bf","code":"611026000000"}]}]},{"province":"\u7518\u8083\u7701","code":"620000","citys":[{"city":"\u5170\u5dde\u5e02","code":"620100000000","areas":[{"area":"\u57ce\u5173\u533a","code":"620102000000"},{"area":"\u4e03\u91cc\u6cb3\u533a","code":"620103000000"},{"area":"\u897f\u56fa\u533a","code":"620104000000"},{"area":"\u5b89\u5b81\u533a","code":"620105000000"},{"area":"\u7ea2\u53e4\u533a","code":"620111000000"},{"area":"\u6c38\u767b\u53bf","code":"620121000000"},{"area":"\u768b\u5170\u53bf","code":"620122000000"},{"area":"\u6986\u4e2d\u53bf","code":"620123000000"},{"area":"\u5170\u5dde\u65b0\u533a","code":"620171000000"}]},{"city":"\u5609\u5cea\u5173\u5e02","code":"620200000000","areas":[]},{"city":"\u91d1\u660c\u5e02","code":"620300000000","areas":[{"area":"\u91d1\u5ddd\u533a","code":"620302000000"},{"area":"\u6c38\u660c\u53bf","code":"620321000000"}]},{"city":"\u767d\u94f6\u5e02","code":"620400000000","areas":[{"area":"\u767d\u94f6\u533a","code":"620402000000"},{"area":"\u5e73\u5ddd\u533a","code":"620403000000"},{"area":"\u9756\u8fdc\u53bf","code":"620421000000"},{"area":"\u4f1a\u5b81\u53bf","code":"620422000000"},{"area":"\u666f\u6cf0\u53bf","code":"620423000000"}]},{"city":"\u5929\u6c34\u5e02","code":"620500000000","areas":[{"area":"\u79e6\u5dde\u533a","code":"620502000000"},{"area":"\u9ea6\u79ef\u533a","code":"620503000000"},{"area":"\u6e05\u6c34\u53bf","code":"620521000000"},{"area":"\u79e6\u5b89\u53bf","code":"620522000000"},{"area":"\u7518\u8c37\u53bf","code":"620523000000"},{"area":"\u6b66\u5c71\u53bf","code":"620524000000"},{"area":"\u5f20\u5bb6\u5ddd\u56de\u65cf\u81ea\u6cbb\u53bf","code":"620525000000"}]},{"city":"\u6b66\u5a01\u5e02","code":"620600000000","areas":[{"area":"\u51c9\u5dde\u533a","code":"620602000000"},{"area":"\u6c11\u52e4\u53bf","code":"620621000000"},{"area":"\u53e4\u6d6a\u53bf","code":"620622000000"},{"area":"\u5929\u795d\u85cf\u65cf\u81ea\u6cbb\u53bf","code":"620623000000"}]},{"city":"\u5f20\u6396\u5e02","code":"620700000000","areas":[{"area":"\u7518\u5dde\u533a","code":"620702000000"},{"area":"\u8083\u5357\u88d5\u56fa\u65cf\u81ea\u6cbb\u53bf","code":"620721000000"},{"area":"\u6c11\u4e50\u53bf","code":"620722000000"},{"area":"\u4e34\u6cfd\u53bf","code":"620723000000"},{"area":"\u9ad8\u53f0\u53bf","code":"620724000000"},{"area":"\u5c71\u4e39\u53bf","code":"620725000000"}]},{"city":"\u5e73\u51c9\u5e02","code":"620800000000","areas":[{"area":"\u5d06\u5cd2\u533a","code":"620802000000"},{"area":"\u6cfe\u5ddd\u53bf","code":"620821000000"},{"area":"\u7075\u53f0\u53bf","code":"620822000000"},{"area":"\u5d07\u4fe1\u53bf","code":"620823000000"},{"area":"\u5e84\u6d6a\u53bf","code":"620825000000"},{"area":"\u9759\u5b81\u53bf","code":"620826000000"},{"area":"\u534e\u4ead\u5e02","code":"620881000000"}]},{"city":"\u9152\u6cc9\u5e02","code":"620900000000","areas":[{"area":"\u8083\u5dde\u533a","code":"620902000000"},{"area":"\u91d1\u5854\u53bf","code":"620921000000"},{"area":"\u74dc\u5dde\u53bf","code":"620922000000"},{"area":"\u8083\u5317\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","code":"620923000000"},{"area":"\u963f\u514b\u585e\u54c8\u8428\u514b\u65cf\u81ea\u6cbb\u53bf","code":"620924000000"},{"area":"\u7389\u95e8\u5e02","code":"620981000000"},{"area":"\u6566\u714c\u5e02","code":"620982000000"}]},{"city":"\u5e86\u9633\u5e02","code":"621000000000","areas":[{"area":"\u897f\u5cf0\u533a","code":"621002000000"},{"area":"\u5e86\u57ce\u53bf","code":"621021000000"},{"area":"\u73af\u53bf","code":"621022000000"},{"area":"\u534e\u6c60\u53bf","code":"621023000000"},{"area":"\u5408\u6c34\u53bf","code":"621024000000"},{"area":"\u6b63\u5b81\u53bf","code":"621025000000"},{"area":"\u5b81\u53bf","code":"621026000000"},{"area":"\u9547\u539f\u53bf","code":"621027000000"}]},{"city":"\u5b9a\u897f\u5e02","code":"621100000000","areas":[{"area":"\u5b89\u5b9a\u533a","code":"621102000000"},{"area":"\u901a\u6e2d\u53bf","code":"621121000000"},{"area":"\u9647\u897f\u53bf","code":"621122000000"},{"area":"\u6e2d\u6e90\u53bf","code":"621123000000"},{"area":"\u4e34\u6d2e\u53bf","code":"621124000000"},{"area":"\u6f33\u53bf","code":"621125000000"},{"area":"\u5cb7\u53bf","code":"621126000000"}]},{"city":"\u9647\u5357\u5e02","code":"621200000000","areas":[{"area":"\u6b66\u90fd\u533a","code":"621202000000"},{"area":"\u6210\u53bf","code":"621221000000"},{"area":"\u6587\u53bf","code":"621222000000"},{"area":"\u5b95\u660c\u53bf","code":"621223000000"},{"area":"\u5eb7\u53bf","code":"621224000000"},{"area":"\u897f\u548c\u53bf","code":"621225000000"},{"area":"\u793c\u53bf","code":"621226000000"},{"area":"\u5fbd\u53bf","code":"621227000000"},{"area":"\u4e24\u5f53\u53bf","code":"621228000000"}]},{"city":"\u4e34\u590f\u56de\u65cf\u81ea\u6cbb\u5dde","code":"622900000000","areas":[{"area":"\u4e34\u590f\u5e02","code":"622901000000"},{"area":"\u4e34\u590f\u53bf","code":"622921000000"},{"area":"\u5eb7\u4e50\u53bf","code":"622922000000"},{"area":"\u6c38\u9756\u53bf","code":"622923000000"},{"area":"\u5e7f\u6cb3\u53bf","code":"622924000000"},{"area":"\u548c\u653f\u53bf","code":"622925000000"},{"area":"\u4e1c\u4e61\u65cf\u81ea\u6cbb\u53bf","code":"622926000000"},{"area":"\u79ef\u77f3\u5c71\u4fdd\u5b89\u65cf\u4e1c\u4e61\u65cf\u6492\u62c9\u65cf\u81ea\u6cbb\u53bf","code":"622927000000"}]},{"city":"\u7518\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"623000000000","areas":[{"area":"\u5408\u4f5c\u5e02","code":"623001000000"},{"area":"\u4e34\u6f6d\u53bf","code":"623021000000"},{"area":"\u5353\u5c3c\u53bf","code":"623022000000"},{"area":"\u821f\u66f2\u53bf","code":"623023000000"},{"area":"\u8fed\u90e8\u53bf","code":"623024000000"},{"area":"\u739b\u66f2\u53bf","code":"623025000000"},{"area":"\u788c\u66f2\u53bf","code":"623026000000"},{"area":"\u590f\u6cb3\u53bf","code":"623027000000"}]}]},{"province":"\u9752\u6d77\u7701","code":"630000","citys":[{"city":"\u897f\u5b81\u5e02","code":"630100000000","areas":[{"area":"\u57ce\u4e1c\u533a","code":"630102000000"},{"area":"\u57ce\u4e2d\u533a","code":"630103000000"},{"area":"\u57ce\u897f\u533a","code":"630104000000"},{"area":"\u57ce\u5317\u533a","code":"630105000000"},{"area":"\u6e5f\u4e2d\u533a","code":"630106000000"},{"area":"\u5927\u901a\u56de\u65cf\u571f\u65cf\u81ea\u6cbb\u53bf","code":"630121000000"},{"area":"\u6e5f\u6e90\u53bf","code":"630123000000"}]},{"city":"\u6d77\u4e1c\u5e02","code":"630200000000","areas":[{"area":"\u4e50\u90fd\u533a","code":"630202000000"},{"area":"\u5e73\u5b89\u533a","code":"630203000000"},{"area":"\u6c11\u548c\u56de\u65cf\u571f\u65cf\u81ea\u6cbb\u53bf","code":"630222000000"},{"area":"\u4e92\u52a9\u571f\u65cf\u81ea\u6cbb\u53bf","code":"630223000000"},{"area":"\u5316\u9686\u56de\u65cf\u81ea\u6cbb\u53bf","code":"630224000000"},{"area":"\u5faa\u5316\u6492\u62c9\u65cf\u81ea\u6cbb\u53bf","code":"630225000000"}]},{"city":"\u6d77\u5317\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"632200000000","areas":[{"area":"\u95e8\u6e90\u56de\u65cf\u81ea\u6cbb\u53bf","code":"632221000000"},{"area":"\u7941\u8fde\u53bf","code":"632222000000"},{"area":"\u6d77\u664f\u53bf","code":"632223000000"},{"area":"\u521a\u5bdf\u53bf","code":"632224000000"}]},{"city":"\u9ec4\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"632300000000","areas":[{"area":"\u540c\u4ec1\u5e02","code":"632301000000"},{"area":"\u5c16\u624e\u53bf","code":"632322000000"},{"area":"\u6cfd\u5e93\u53bf","code":"632323000000"},{"area":"\u6cb3\u5357\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","code":"632324000000"}]},{"city":"\u6d77\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"632500000000","areas":[{"area":"\u5171\u548c\u53bf","code":"632521000000"},{"area":"\u540c\u5fb7\u53bf","code":"632522000000"},{"area":"\u8d35\u5fb7\u53bf","code":"632523000000"},{"area":"\u5174\u6d77\u53bf","code":"632524000000"},{"area":"\u8d35\u5357\u53bf","code":"632525000000"}]},{"city":"\u679c\u6d1b\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"632600000000","areas":[{"area":"\u739b\u6c81\u53bf","code":"632621000000"},{"area":"\u73ed\u739b\u53bf","code":"632622000000"},{"area":"\u7518\u5fb7\u53bf","code":"632623000000"},{"area":"\u8fbe\u65e5\u53bf","code":"632624000000"},{"area":"\u4e45\u6cbb\u53bf","code":"632625000000"},{"area":"\u739b\u591a\u53bf","code":"632626000000"}]},{"city":"\u7389\u6811\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"632700000000","areas":[{"area":"\u7389\u6811\u5e02","code":"632701000000"},{"area":"\u6742\u591a\u53bf","code":"632722000000"},{"area":"\u79f0\u591a\u53bf","code":"632723000000"},{"area":"\u6cbb\u591a\u53bf","code":"632724000000"},{"area":"\u56ca\u8c26\u53bf","code":"632725000000"},{"area":"\u66f2\u9ebb\u83b1\u53bf","code":"632726000000"}]},{"city":"\u6d77\u897f\u8499\u53e4\u65cf\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"632800000000","areas":[{"area":"\u683c\u5c14\u6728\u5e02","code":"632801000000"},{"area":"\u5fb7\u4ee4\u54c8\u5e02","code":"632802000000"},{"area":"\u832b\u5d16\u5e02","code":"632803000000"},{"area":"\u4e4c\u5170\u53bf","code":"632821000000"},{"area":"\u90fd\u5170\u53bf","code":"632822000000"},{"area":"\u5929\u5cfb\u53bf","code":"632823000000"},{"area":"\u5927\u67f4\u65e6\u884c\u653f\u59d4\u5458\u4f1a","code":"632857000000"}]}]},{"province":"\u5b81\u590f\u56de\u65cf\u81ea\u6cbb\u533a","code":"640000","citys":[{"city":"\u94f6\u5ddd\u5e02","code":"640100000000","areas":[{"area":"\u5174\u5e86\u533a","code":"640104000000"},{"area":"\u897f\u590f\u533a","code":"640105000000"},{"area":"\u91d1\u51e4\u533a","code":"640106000000"},{"area":"\u6c38\u5b81\u53bf","code":"640121000000"},{"area":"\u8d3a\u5170\u53bf","code":"640122000000"},{"area":"\u7075\u6b66\u5e02","code":"640181000000"}]},{"city":"\u77f3\u5634\u5c71\u5e02","code":"640200000000","areas":[{"area":"\u5927\u6b66\u53e3\u533a","code":"640202000000"},{"area":"\u60e0\u519c\u533a","code":"640205000000"},{"area":"\u5e73\u7f57\u53bf","code":"640221000000"}]},{"city":"\u5434\u5fe0\u5e02","code":"640300000000","areas":[{"area":"\u5229\u901a\u533a","code":"640302000000"},{"area":"\u7ea2\u5bfa\u5821\u533a","code":"640303000000"},{"area":"\u76d0\u6c60\u53bf","code":"640323000000"},{"area":"\u540c\u5fc3\u53bf","code":"640324000000"},{"area":"\u9752\u94dc\u5ce1\u5e02","code":"640381000000"}]},{"city":"\u56fa\u539f\u5e02","code":"640400000000","areas":[{"area":"\u539f\u5dde\u533a","code":"640402000000"},{"area":"\u897f\u5409\u53bf","code":"640422000000"},{"area":"\u9686\u5fb7\u53bf","code":"640423000000"},{"area":"\u6cfe\u6e90\u53bf","code":"640424000000"},{"area":"\u5f6d\u9633\u53bf","code":"640425000000"}]},{"city":"\u4e2d\u536b\u5e02","code":"640500000000","areas":[{"area":"\u6c99\u5761\u5934\u533a","code":"640502000000"},{"area":"\u4e2d\u5b81\u53bf","code":"640521000000"},{"area":"\u6d77\u539f\u53bf","code":"640522000000"}]}]},{"province":"\u65b0\u7586\u7ef4\u543e\u5c14\u81ea\u6cbb\u533a","code":"650000","citys":[{"city":"\u4e4c\u9c81\u6728\u9f50\u5e02","code":"650100000000","areas":[{"area":"\u5929\u5c71\u533a","code":"650102000000"},{"area":"\u6c99\u4f9d\u5df4\u514b\u533a","code":"650103000000"},{"area":"\u65b0\u5e02\u533a","code":"650104000000"},{"area":"\u6c34\u78e8\u6c9f\u533a","code":"650105000000"},{"area":"\u5934\u5c6f\u6cb3\u533a","code":"650106000000"},{"area":"\u8fbe\u5742\u57ce\u533a","code":"650107000000"},{"area":"\u7c73\u4e1c\u533a","code":"650109000000"},{"area":"\u4e4c\u9c81\u6728\u9f50\u53bf","code":"650121000000"}]},{"city":"\u514b\u62c9\u739b\u4f9d\u5e02","code":"650200000000","areas":[{"area":"\u72ec\u5c71\u5b50\u533a","code":"650202000000"},{"area":"\u514b\u62c9\u739b\u4f9d\u533a","code":"650203000000"},{"area":"\u767d\u78b1\u6ee9\u533a","code":"650204000000"},{"area":"\u4e4c\u5c14\u79be\u533a","code":"650205000000"}]},{"city":"\u5410\u9c81\u756a\u5e02","code":"650400000000","areas":[{"area":"\u9ad8\u660c\u533a","code":"650402000000"},{"area":"\u912f\u5584\u53bf","code":"650421000000"},{"area":"\u6258\u514b\u900a\u53bf","code":"650422000000"}]},{"city":"\u54c8\u5bc6\u5e02","code":"650500000000","areas":[{"area":"\u4f0a\u5dde\u533a","code":"650502000000"},{"area":"\u5df4\u91cc\u5764\u54c8\u8428\u514b\u81ea\u6cbb\u53bf","code":"650521000000"},{"area":"\u4f0a\u543e\u53bf","code":"650522000000"}]},{"city":"\u660c\u5409\u56de\u65cf\u81ea\u6cbb\u5dde","code":"652300000000","areas":[{"area":"\u660c\u5409\u5e02","code":"652301000000"},{"area":"\u961c\u5eb7\u5e02","code":"652302000000"},{"area":"\u547c\u56fe\u58c1\u53bf","code":"652323000000"},{"area":"\u739b\u7eb3\u65af\u53bf","code":"652324000000"},{"area":"\u5947\u53f0\u53bf","code":"652325000000"},{"area":"\u5409\u6728\u8428\u5c14\u53bf","code":"652327000000"},{"area":"\u6728\u5792\u54c8\u8428\u514b\u81ea\u6cbb\u53bf","code":"652328000000"}]},{"city":"\u535a\u5c14\u5854\u62c9\u8499\u53e4\u81ea\u6cbb\u5dde","code":"652700000000","areas":[{"area":"\u535a\u4e50\u5e02","code":"652701000000"},{"area":"\u963f\u62c9\u5c71\u53e3\u5e02","code":"652702000000"},{"area":"\u7cbe\u6cb3\u53bf","code":"652722000000"},{"area":"\u6e29\u6cc9\u53bf","code":"652723000000"}]},{"city":"\u5df4\u97f3\u90ed\u695e\u8499\u53e4\u81ea\u6cbb\u5dde","code":"652800000000","areas":[{"area":"\u5e93\u5c14\u52d2\u5e02","code":"652801000000"},{"area":"\u8f6e\u53f0\u53bf","code":"652822000000"},{"area":"\u5c09\u7281\u53bf","code":"652823000000"},{"area":"\u82e5\u7f8c\u53bf","code":"652824000000"},{"area":"\u4e14\u672b\u53bf","code":"652825000000"},{"area":"\u7109\u8006\u56de\u65cf\u81ea\u6cbb\u53bf","code":"652826000000"},{"area":"\u548c\u9759\u53bf","code":"652827000000"},{"area":"\u548c\u7855\u53bf","code":"652828000000"},{"area":"\u535a\u6e56\u53bf","code":"652829000000"}]},{"city":"\u963f\u514b\u82cf\u5730\u533a","code":"652900000000","areas":[{"area":"\u963f\u514b\u82cf\u5e02","code":"652901000000"},{"area":"\u5e93\u8f66\u5e02","code":"652902000000"},{"area":"\u6e29\u5bbf\u53bf","code":"652922000000"},{"area":"\u6c99\u96c5\u53bf","code":"652924000000"},{"area":"\u65b0\u548c\u53bf","code":"652925000000"},{"area":"\u62dc\u57ce\u53bf","code":"652926000000"},{"area":"\u4e4c\u4ec0\u53bf","code":"652927000000"},{"area":"\u963f\u74e6\u63d0\u53bf","code":"652928000000"},{"area":"\u67ef\u576a\u53bf","code":"652929000000"}]},{"city":"\u514b\u5b5c\u52d2\u82cf\u67ef\u5c14\u514b\u5b5c\u81ea\u6cbb\u5dde","code":"653000000000","areas":[{"area":"\u963f\u56fe\u4ec0\u5e02","code":"653001000000"},{"area":"\u963f\u514b\u9676\u53bf","code":"653022000000"},{"area":"\u963f\u5408\u5947\u53bf","code":"653023000000"},{"area":"\u4e4c\u6070\u53bf","code":"653024000000"}]},{"city":"\u5580\u4ec0\u5730\u533a","code":"653100000000","areas":[{"area":"\u5580\u4ec0\u5e02","code":"653101000000"},{"area":"\u758f\u9644\u53bf","code":"653121000000"},{"area":"\u758f\u52d2\u53bf","code":"653122000000"},{"area":"\u82f1\u5409\u6c99\u53bf","code":"653123000000"},{"area":"\u6cfd\u666e\u53bf","code":"653124000000"},{"area":"\u838e\u8f66\u53bf","code":"653125000000"},{"area":"\u53f6\u57ce\u53bf","code":"653126000000"},{"area":"\u9ea6\u76d6\u63d0\u53bf","code":"653127000000"},{"area":"\u5cb3\u666e\u6e56\u53bf","code":"653128000000"},{"area":"\u4f3d\u5e08\u53bf","code":"653129000000"},{"area":"\u5df4\u695a\u53bf","code":"653130000000"},{"area":"\u5854\u4ec0\u5e93\u5c14\u5e72\u5854\u5409\u514b\u81ea\u6cbb\u53bf","code":"653131000000"}]},{"city":"\u548c\u7530\u5730\u533a","code":"653200000000","areas":[{"area":"\u548c\u7530\u5e02","code":"653201000000"},{"area":"\u548c\u7530\u53bf","code":"653221000000"},{"area":"\u58a8\u7389\u53bf","code":"653222000000"},{"area":"\u76ae\u5c71\u53bf","code":"653223000000"},{"area":"\u6d1b\u6d66\u53bf","code":"653224000000"},{"area":"\u7b56\u52d2\u53bf","code":"653225000000"},{"area":"\u4e8e\u7530\u53bf","code":"653226000000"},{"area":"\u6c11\u4e30\u53bf","code":"653227000000"}]},{"city":"\u4f0a\u7281\u54c8\u8428\u514b\u81ea\u6cbb\u5dde","code":"654000000000","areas":[{"area":"\u4f0a\u5b81\u5e02","code":"654002000000"},{"area":"\u594e\u5c6f\u5e02","code":"654003000000"},{"area":"\u970d\u5c14\u679c\u65af\u5e02","code":"654004000000"},{"area":"\u4f0a\u5b81\u53bf","code":"654021000000"},{"area":"\u5bdf\u5e03\u67e5\u5c14\u9521\u4f2f\u81ea\u6cbb\u53bf","code":"654022000000"},{"area":"\u970d\u57ce\u53bf","code":"654023000000"},{"area":"\u5de9\u7559\u53bf","code":"654024000000"},{"area":"\u65b0\u6e90\u53bf","code":"654025000000"},{"area":"\u662d\u82cf\u53bf","code":"654026000000"},{"area":"\u7279\u514b\u65af\u53bf","code":"654027000000"},{"area":"\u5c3c\u52d2\u514b\u53bf","code":"654028000000"}]},{"city":"\u5854\u57ce\u5730\u533a","code":"654200000000","areas":[{"area":"\u5854\u57ce\u5e02","code":"654201000000"},{"area":"\u4e4c\u82cf\u5e02","code":"654202000000"},{"area":"\u6c99\u6e7e\u5e02","code":"654203000000"},{"area":"\u989d\u654f\u53bf","code":"654221000000"},{"area":"\u6258\u91cc\u53bf","code":"654224000000"},{"area":"\u88d5\u6c11\u53bf","code":"654225000000"},{"area":"\u548c\u5e03\u514b\u8d5b\u5c14\u8499\u53e4\u81ea\u6cbb\u53bf","code":"654226000000"}]},{"city":"\u963f\u52d2\u6cf0\u5730\u533a","code":"654300000000","areas":[{"area":"\u963f\u52d2\u6cf0\u5e02","code":"654301000000"},{"area":"\u5e03\u5c14\u6d25\u53bf","code":"654321000000"},{"area":"\u5bcc\u8574\u53bf","code":"654322000000"},{"area":"\u798f\u6d77\u53bf","code":"654323000000"},{"area":"\u54c8\u5df4\u6cb3\u53bf","code":"654324000000"},{"area":"\u9752\u6cb3\u53bf","code":"654325000000"},{"area":"\u5409\u6728\u4e43\u53bf","code":"654326000000"}]},{"city":"\u81ea\u6cbb\u533a\u76f4\u8f96\u53bf\u7ea7\u884c\u653f\u533a\u5212","code":"659000000000","areas":[{"area":"\u77f3\u6cb3\u5b50\u5e02","code":"659001000000"},{"area":"\u963f\u62c9\u5c14\u5e02","code":"659002000000"},{"area":"\u56fe\u6728\u8212\u514b\u5e02","code":"659003000000"},{"area":"\u4e94\u5bb6\u6e20\u5e02","code":"659004000000"},{"area":"\u5317\u5c6f\u5e02","code":"659005000000"},{"area":"\u94c1\u95e8\u5173\u5e02","code":"659006000000"},{"area":"\u53cc\u6cb3\u5e02","code":"659007000000"},{"area":"\u53ef\u514b\u8fbe\u62c9\u5e02","code":"659008000000"},{"area":"\u6606\u7389\u5e02","code":"659009000000"},{"area":"\u80e1\u6768\u6cb3\u5e02","code":"659010000000"},{"area":"\u65b0\u661f\u5e02","code":"659011000000"},{"area":"\u767d\u6768\u5e02","code":"659012000000"}]}]},{"province":"\u53f0\u6e7e\u7701","code":"710000","citys":[{"city":"\u53f0\u5317\u5e02","code":"710000","areas":[{"area":"\u53f0\u5317\u5e02","code":"710000"}]},{"city":"\u65b0\u5317\u5e02","code":"710000","areas":[{"area":"\u65b0\u5317\u5e02","code":"710000"}]},{"city":"\u6843\u56ed\u5e02","code":"710000","areas":[{"area":"\u6843\u56ed\u5e02","code":"710000"}]},{"city":"\u53f0\u4e2d\u5e02","code":"710000","areas":[{"area":"\u53f0\u4e2d\u5e02","code":"710000"}]},{"city":"\u53f0\u5357\u5e02","code":"710000","areas":[{"area":"\u53f0\u5357\u5e02","code":"710000"}]},{"city":"\u9ad8\u96c4\u5e02","code":"710000","areas":[{"area":"\u9ad8\u96c4\u5e02","code":"710000"}]},{"city":"\u57fa\u9686\u5e02","code":"710000","areas":[{"area":"\u57fa\u9686\u5e02","code":"710000"}]},{"city":"\u65b0\u7af9\u5e02","code":"710000","areas":[{"area":"\u65b0\u7af9\u5e02","code":"710000"}]},{"city":"\u5609\u4e49\u5e02","code":"710000","areas":[{"area":"\u5609\u4e49\u5e02","code":"710000"}]},{"city":"\u65b0\u7af9\u53bf","code":"710000","areas":[{"area":"\u65b0\u7af9\u53bf","code":"710000"}]},{"city":"\u82d7\u6817\u53bf","code":"710000","areas":[{"area":"\u82d7\u6817\u53bf","code":"710000"}]},{"city":"\u5f70\u5316\u53bf","code":"710000","areas":[{"area":"\u5f70\u5316\u53bf","code":"710000"}]},{"city":"\u5357\u6295\u53bf","code":"710000","areas":[{"area":"\u5357\u6295\u53bf","code":"710000"}]},{"city":"\u4e91\u6797\u53bf","code":"710000","areas":[{"area":"\u4e91\u6797\u53bf","code":"710000"}]},{"city":"\u5609\u4e49\u53bf","code":"710000","areas":[{"area":"\u5609\u4e49\u53bf","code":"710000"}]},{"city":"\u5c4f\u4e1c\u53bf","code":"710000","areas":[{"area":"\u5c4f\u4e1c\u53bf","code":"710000"}]},{"city":"\u5b9c\u5170\u53bf","code":"710000","areas":[{"area":"\u5b9c\u5170\u53bf","code":"710000"}]},{"city":"\u82b1\u83b2\u53bf","code":"710000","areas":[{"area":"\u82b1\u83b2\u53bf","code":"710000"}]},{"city":"\u53f0\u4e1c\u53bf","code":"710000","areas":[{"area":"\u53f0\u4e1c\u53bf","code":"710000"}]},{"city":"\u6f8e\u6e56\u53bf","code":"710000","areas":[{"area":"\u6f8e\u6e56\u53bf","code":"710000"}]},{"city":"\u8fde\u6c5f\u53bf","code":"710000","areas":[{"area":"\u8fde\u6c5f\u53bf","code":"710000"}]}]},{"province":"\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a","code":"810000","citys":[{"city":"\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a","code":"810000","areas":[{"area":"\u4e2d\u897f\u533a","code":"810001"},{"area":"\u6e7e\u4ed4\u533a","code":"810002"},{"area":"\u4e1c\u533a","code":"810003"},{"area":"\u5357\u533a","code":"810004"},{"area":"\u6cb9\u5c16\u65fa\u533a","code":"810005"},{"area":"\u6df1\u6c34\u57d7\u533a","code":"810006"},{"area":"\u4e5d\u9f99\u57ce\u533a","code":"810007"},{"area":"\u9ec4\u5927\u4ed9\u533a","code":"810008"},{"area":"\u89c2\u5858\u533a","code":"810009"},{"area":"\u8343\u6e7e\u533a","code":"810010"},{"area":"\u5c6f\u95e8\u533a","code":"810011"},{"area":"\u5143\u6717\u533a","code":"810012"},{"area":"\u5317\u533a","code":"810013"},{"area":"\u5927\u57d4\u533a","code":"810014"},{"area":"\u897f\u8d21\u533a","code":"810015"},{"area":"\u6c99\u7530\u533a","code":"810016"},{"area":"\u8475\u9752\u533a","code":"810017"},{"area":"\u79bb\u5c9b\u533a","code":"810018"}]}]},{"province":"\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a","code":"820000","citys":[{"city":"\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a","code":"820000","areas":[{"area":"\u82b1\u5730\u739b\u5802\u533a","code":"820001"},{"area":"\u82b1\u738b\u5802\u533a","code":"820002"},{"area":"\u671b\u5fb7\u5802\u533a","code":"820003"},{"area":"\u5927\u5802\u533a","code":"820004"},{"area":"\u98ce\u987a\u5802\u533a","code":"820005"},{"area":"\u5609\u6a21\u5802\u533a","code":"820006"},{"area":"\u8def\u51fc\u586b\u6d77\u533a","code":"820007"},{"area":"\u5723\u65b9\u6d4e\u5404\u5802\u533a","code":"820008"}]}]}]')},"669f":function(t,e,i){"use strict";i.r(e);var s=i("fa24"),a=i("3d38");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"aaca8fe8",null,!1,s["a"],void 0);e["default"]=n.exports},"66f5":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","orders-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5168\u90e8\u8ba2\u5355","show-back":!0,backgroundColor:"#fff",_i:1}}),i("view",{staticClass:t._$s(2,"sc","status"),attrs:{_i:2}},[i("scroll-view",{staticClass:t._$s(3,"sc","status-tabs"),attrs:{_i:3}},[i("view",t._l(t._$s(5,"f",{forItems:t.urls[t.serviceType].OrderType}),(function(e,s,a,r){return i("view",{key:t._$s(5,"f",{forIndex:a,key:e.id}),staticClass:t._$s("5-"+r,"sc","tab-item"),class:t._$s("5-"+r,"c",{active:t.OrderTypeIndex===s}),attrs:{_i:"5-"+r},on:{click:function(e){return t.switchOrderTab(s)}}},[t._v(t._$s("5-"+r,"t0-0",t._s(e.title)))])})),0)]),i("scroll-view",{staticClass:t._$s(6,"sc","status-tabs2"),attrs:{_i:6}},t._l(t._$s(7,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("view",{key:t._$s(7,"f",{forIndex:a,key:e.id}),staticClass:t._$s("7-"+r,"sc","tab-item2"),class:t._$s("7-"+r,"c",{active:t.listQuery.state===e.id}),attrs:{_i:"7-"+r},on:{click:function(i){return t.switchTab(e.id)}}},[t._v(t._$s("7-"+r,"t0-0",t._s(e.title)))])})),0)]),i("CommonList",{ref:"groupRef",attrs:{apiUrl:t.urls[t.serviceType].OrderType[t.OrderTypeIndex].url,queryParams:t.listQuery,listScrollHeight:"calc(100vh - "+(2*t.statusBarHeight+290)+"rpx)",_i:8},scopedSlots:t._u([{key:"listData",fn:function(e,s,a){var r=e.list;return t._l(s._$s("10-"+a,"f",{forItems:r}),(function(e,r,c,n){return i("view",{key:s._$s("10-"+a,"f",{forIndex:c,key:r}),staticClass:s._$s("10-"+a+n,"sc","order_item"),attrs:{_i:"10-"+a+n}},[i("OrderCard",{attrs:{dataItem:e,haveButton:t.haveButton,_i:"11-"+a+n},on:{cancel:function(i){return t.cancelOrder(i,e)},start:function(i){return t.startOrder(i,e)},done:function(i){return t.endOrder(i,e)},goOrderDetail:t.goOrderDetail}})],1)}))}},{key:"empty",fn:function(t,e,s){return[i("noData",{attrs:{_i:"13-"+s}})]}}])}),i("serviceCodeInput",{attrs:{show:t.showInput,_i:14},on:{close:function(e){t.showInput=!1},confirm:t.onConfirm}})],1)},r=[]},6711:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","uv-count-down"),style:t._$s(0,"s",[t.$uv.addStyle(t.customStyle)]),attrs:{_i:0}},[t._t("default",[i("text",{staticClass:t._$s(2,"sc","uv-count-down__text"),attrs:{_i:2}},[t._v(t._$s(2,"t0-0",t._s(t.formattedTime)))])],{_i:1})],2)},a=[]},6731:function(t){t.exports=JSON.parse('{"status":"1","info":"OK","infocode":"10000","count":"1","suggestion":{"keywords":[],"cities":[]},"districts":[{"citycode":[],"adcode":"100000","name":"\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd","center":"116.3683244,39.915085","level":"country","districts":[{"citycode":[],"adcode":"410000","name":"\u6cb3\u5357\u7701","center":"113.753094,34.767052","level":"province","districts":[{"citycode":"0379","adcode":"410300","name":"\u6d1b\u9633\u5e02","center":"112.453895,34.619702","level":"city","districts":[{"citycode":"0379","adcode":"410323","name":"\u65b0\u5b89\u53bf","center":"112.13246,34.728909","level":"district","districts":[]},{"citycode":"0379","adcode":"410324","name":"\u683e\u5ddd\u53bf","center":"111.615729,33.7857","level":"district","districts":[]},{"citycode":"0379","adcode":"410303","name":"\u897f\u5de5\u533a","center":"112.428183,34.659959","level":"district","districts":[]},{"citycode":"0379","adcode":"410329","name":"\u4f0a\u5ddd\u53bf","center":"112.425751,34.421741","level":"district","districts":[]},{"citycode":"0379","adcode":"410328","name":"\u6d1b\u5b81\u53bf","center":"111.652958,34.389371","level":"district","districts":[]},{"citycode":"0379","adcode":"410308","name":"\u5b5f\u6d25\u533a","center":"112.44525,34.825587","level":"district","districts":[]},{"citycode":"0379","adcode":"410302","name":"\u8001\u57ce\u533a","center":"112.469071,34.683645","level":"district","districts":[]},{"citycode":"0379","adcode":"410327","name":"\u5b9c\u9633\u53bf","center":"112.179187,34.51462","level":"district","districts":[]},{"citycode":"0379","adcode":"410304","name":"\u700d\u6cb3\u56de\u65cf\u533a","center":"112.500131,34.679773","level":"district","districts":[]},{"citycode":"0379","adcode":"410305","name":"\u6da7\u897f\u533a","center":"112.395766,34.658177","level":"district","districts":[]},{"citycode":"0379","adcode":"410311","name":"\u6d1b\u9f99\u533a","center":"112.463833,34.619711","level":"district","districts":[]},{"citycode":"0379","adcode":"410307","name":"\u5043\u5e08\u533a","center":"112.789375,34.72715","level":"district","districts":[]},{"citycode":"0379","adcode":"410326","name":"\u6c5d\u9633\u53bf","center":"112.473013,34.154283","level":"district","districts":[]},{"citycode":"0379","adcode":"410325","name":"\u5d69\u53bf","center":"112.085432,34.134639","level":"district","districts":[]}]},{"citycode":"0395","adcode":"411100","name":"\u6f2f\u6cb3\u5e02","center":"114.0166,33.58038","level":"city","districts":[{"citycode":"0395","adcode":"411122","name":"\u4e34\u988d\u53bf","center":"113.931121,33.828096","level":"district","districts":[]},{"citycode":"0395","adcode":"411103","name":"\u90fe\u57ce\u533a","center":"114.006596,33.587697","level":"district","districts":[]},{"citycode":"0395","adcode":"411121","name":"\u821e\u9633\u53bf","center":"113.609327,33.438259","level":"district","districts":[]},{"citycode":"0395","adcode":"411102","name":"\u6e90\u6c47\u533a","center":"113.984164,33.572319","level":"district","districts":[]},{"citycode":"0395","adcode":"411104","name":"\u53ec\u9675\u533a","center":"114.093879,33.586509","level":"district","districts":[]}]},{"citycode":"0377","adcode":"411300","name":"\u5357\u9633\u5e02","center":"112.584753,33.016102","level":"city","districts":[{"citycode":"0377","adcode":"411303","name":"\u5367\u9f99\u533a","center":"112.528524,32.990313","level":"district","districts":[]},{"citycode":"0377","adcode":"411328","name":"\u5510\u6cb3\u53bf","center":"112.80829,32.682464","level":"district","districts":[]},{"citycode":"0377","adcode":"411323","name":"\u897f\u5ce1\u53bf","center":"111.473644,33.307272","level":"district","districts":[]},{"citycode":"0377","adcode":"411321","name":"\u5357\u53ec\u53bf","center":"112.429277,33.489804","level":"district","districts":[]},{"citycode":"0377","adcode":"411326","name":"\u6dc5\u5ddd\u53bf","center":"111.490902,33.137831","level":"district","districts":[]},{"citycode":"0377","adcode":"411381","name":"\u9093\u5dde\u5e02","center":"112.08745,32.687732","level":"district","districts":[]},{"citycode":"0377","adcode":"411330","name":"\u6850\u67cf\u53bf","center":"113.428702,32.379164","level":"district","districts":[]},{"citycode":"0377","adcode":"411327","name":"\u793e\u65d7\u53bf","center":"112.948183,33.056229","level":"district","districts":[]},{"citycode":"0377","adcode":"411302","name":"\u5b9b\u57ce\u533a","center":"112.539506,33.003564","level":"district","districts":[]},{"citycode":"0377","adcode":"411324","name":"\u9547\u5e73\u53bf","center":"112.234571,33.033826","level":"district","districts":[]},{"citycode":"0377","adcode":"411325","name":"\u5185\u4e61\u53bf","center":"111.849354,33.044698","level":"district","districts":[]},{"citycode":"0377","adcode":"411322","name":"\u65b9\u57ce\u53bf","center":"113.012849,33.255387","level":"district","districts":[]},{"citycode":"0377","adcode":"411329","name":"\u65b0\u91ce\u53bf","center":"112.3601,32.521282","level":"district","districts":[]}]},{"citycode":"0376","adcode":"411500","name":"\u4fe1\u9633\u5e02","center":"114.091058,32.148624","level":"city","districts":[{"citycode":"0376","adcode":"411502","name":"\u6d49\u6cb3\u533a","center":"114.05867,32.116885","level":"district","districts":[]},{"citycode":"0376","adcode":"411503","name":"\u5e73\u6865\u533a","center":"114.125595,32.101005","level":"district","districts":[]},{"citycode":"0376","adcode":"411527","name":"\u6dee\u6ee8\u53bf","center":"115.420101,32.474772","level":"district","districts":[]},{"citycode":"0376","adcode":"411528","name":"\u606f\u53bf","center":"114.740392,32.34312","level":"district","districts":[]},{"citycode":"0376","adcode":"411526","name":"\u6f62\u5ddd\u53bf","center":"115.051683,32.131426","level":"district","districts":[]},{"citycode":"0376","adcode":"411525","name":"\u56fa\u59cb\u53bf","center":"115.654066,32.169239","level":"district","districts":[]},{"citycode":"0376","adcode":"411523","name":"\u65b0\u53bf","center":"114.879309,31.643914","level":"district","districts":[]},{"citycode":"0376","adcode":"411524","name":"\u5546\u57ce\u53bf","center":"115.406894,31.79832","level":"district","districts":[]},{"citycode":"0376","adcode":"411522","name":"\u5149\u5c71\u53bf","center":"114.91934,32.010736","level":"district","districts":[]},{"citycode":"0376","adcode":"411521","name":"\u7f57\u5c71\u53bf","center":"114.512838,32.20436","level":"district","districts":[]}]},{"citycode":"0393","adcode":"410900","name":"\u6fee\u9633\u5e02","center":"115.029246,35.762731","level":"city","districts":[{"citycode":"0393","adcode":"410926","name":"\u8303\u53bf","center":"115.504081,35.85302","level":"district","districts":[]},{"citycode":"0393","adcode":"410927","name":"\u53f0\u524d\u53bf","center":"115.871671,35.970286","level":"district","districts":[]},{"citycode":"0393","adcode":"410923","name":"\u5357\u4e50\u53bf","center":"115.205876,36.070219","level":"district","districts":[]},{"citycode":"0393","adcode":"410922","name":"\u6e05\u4e30\u53bf","center":"115.104602,35.886694","level":"district","districts":[]},{"citycode":"0393","adcode":"410902","name":"\u534e\u9f99\u533a","center":"115.074453,35.778289","level":"district","districts":[]},{"citycode":"0393","adcode":"410928","name":"\u6fee\u9633\u53bf","center":"115.029165,35.713113","level":"district","districts":[]}]},{"citycode":"0371","adcode":"410100","name":"\u90d1\u5dde\u5e02","center":"113.625351,34.746303","level":"city","districts":[{"citycode":"0371","adcode":"410185","name":"\u767b\u5c01\u5e02","center":"113.05056,34.454877","level":"district","districts":[]},{"citycode":"0371","adcode":"410122","name":"\u4e2d\u725f\u53bf","center":"113.975798,34.720535","level":"district","districts":[]},{"citycode":"0371","adcode":"410108","name":"\u60e0\u6d4e\u533a","center":"113.617055,34.867994","level":"district","districts":[]},{"citycode":"0371","adcode":"410106","name":"\u4e0a\u8857\u533a","center":"113.309185,34.803514","level":"district","districts":[]},{"citycode":"0371","adcode":"410102","name":"\u4e2d\u539f\u533a","center":"113.612966,34.74828","level":"district","districts":[]},{"citycode":"0371","adcode":"410182","name":"\u8365\u9633\u5e02","center":"113.383385,34.7866","level":"district","districts":[]},{"citycode":"0371","adcode":"410183","name":"\u65b0\u5bc6\u5e02","center":"113.390932,34.540216","level":"district","districts":[]},{"citycode":"0371","adcode":"410103","name":"\u4e8c\u4e03\u533a","center":"113.640177,34.724138","level":"district","districts":[]},{"citycode":"0371","adcode":"410105","name":"\u91d1\u6c34\u533a","center":"113.6603,34.800415","level":"district","districts":[]},{"citycode":"0371","adcode":"410181","name":"\u5de9\u4e49\u5e02","center":"113.022354,34.748207","level":"district","districts":[]},{"citycode":"0371","adcode":"410184","name":"\u65b0\u90d1\u5e02","center":"113.74024,34.396479","level":"district","districts":[]},{"citycode":"0371","adcode":"410104","name":"\u7ba1\u57ce\u56de\u65cf\u533a","center":"113.677446,34.754436","level":"district","districts":[]}]},{"citycode":"0398","adcode":"411200","name":"\u4e09\u95e8\u5ce1\u5e02","center":"111.200482,34.773196","level":"city","districts":[{"citycode":"0398","adcode":"411221","name":"\u6e11\u6c60\u53bf","center":"111.761753,34.767937","level":"district","districts":[]},{"citycode":"0398","adcode":"411202","name":"\u6e56\u6ee8\u533a","center":"111.188552,34.771296","level":"district","districts":[]},{"citycode":"0398","adcode":"411203","name":"\u9655\u5dde\u533a","center":"111.103252,34.72066","level":"district","districts":[]},{"citycode":"0398","adcode":"411224","name":"\u5362\u6c0f\u53bf","center":"111.04522,34.051866","level":"district","districts":[]},{"citycode":"0398","adcode":"411282","name":"\u7075\u5b9d\u5e02","center":"110.894225,34.517734","level":"district","districts":[]},{"citycode":"0398","adcode":"411281","name":"\u4e49\u9a6c\u5e02","center":"111.874726,34.747563","level":"district","districts":[]}]},{"citycode":"1391","adcode":"419001","name":"\u6d4e\u6e90\u5e02","center":"112.602347,35.069057","level":"city","districts":[{"citycode":"1391","adcode":"419001","name":"\u5761\u5934\u9547","center":"112.580245,35.063381","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u68a8\u6797\u9547","center":"112.753220,35.088183","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u601d\u793c\u9547","center":"112.388078,35.210276","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u4e94\u9f99\u53e3\u9547","center":"112.761264,35.195598","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u738b\u5c4b\u9547","center":"112.168531,35.124376","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u7389\u6cc9\u8857\u9053","center":"112.623553,35.118882","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u8f75\u57ce\u9547","center":"112.622105,35.062530","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u6d4e\u6c34\u8857\u9053","center":"112.595477,35.094386","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u6c81\u56ed\u8857\u9053","center":"112.593210,35.082244","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u4e0b\u51b6\u9547","center":"112.212297,35.113088","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u514b\u4e95\u9547","center":"112.634910,35.255031","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u5929\u575b\u8857\u9053","center":"112.566796,35.122905","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u90b5\u539f\u9547","center":"112.114016,35.270480","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u5317\u6d77\u8857\u9053","center":"112.568975,35.111552","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u627f\u7559\u9547","center":"112.508612,35.024328","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u5927\u5cea\u9547","center":"112.318910,35.079253","level":"street","districts":[]}]},{"citycode":"0374","adcode":"411000","name":"\u8bb8\u660c\u5e02","center":"113.852004,34.03732","level":"city","districts":[{"citycode":"0374","adcode":"411003","name":"\u5efa\u5b89\u533a","center":"113.822869,34.124729","level":"district","districts":[]},{"citycode":"0374","adcode":"411025","name":"\u8944\u57ce\u53bf","center":"113.506904,33.851609","level":"district","districts":[]},{"citycode":"0374","adcode":"411081","name":"\u79b9\u5dde\u5e02","center":"113.488715,34.142442","level":"district","districts":[]},{"citycode":"0374","adcode":"411002","name":"\u9b4f\u90fd\u533a","center":"113.830826,34.047189","level":"district","districts":[]},{"citycode":"0374","adcode":"411024","name":"\u9122\u9675\u53bf","center":"114.177329,34.102985","level":"district","districts":[]},{"citycode":"0374","adcode":"411082","name":"\u957f\u845b\u5e02","center":"113.813972,34.195458","level":"district","districts":[]}]},{"citycode":"0372","adcode":"410500","name":"\u5b89\u9633\u5e02","center":"114.39248,36.098779","level":"city","districts":[{"citycode":"0372","adcode":"410581","name":"\u6797\u5dde\u5e02","center":"113.819275,36.084127","level":"district","districts":[]},{"citycode":"0372","adcode":"410502","name":"\u6587\u5cf0\u533a","center":"114.356967,36.090593","level":"district","districts":[]},{"citycode":"0372","adcode":"410503","name":"\u5317\u5173\u533a","center":"114.355742,36.10766","level":"district","districts":[]},{"citycode":"0372","adcode":"410522","name":"\u5b89\u9633\u53bf","center":"114.462953,36.09211","level":"district","districts":[]},{"citycode":"0372","adcode":"410505","name":"\u6bb7\u90fd\u533a","center":"114.303454,36.109938","level":"district","districts":[]},{"citycode":"0372","adcode":"410506","name":"\u9f99\u5b89\u533a","center":"114.301037,36.076937","level":"district","districts":[]},{"citycode":"0372","adcode":"410523","name":"\u6c64\u9634\u53bf","center":"114.357686,35.925155","level":"district","districts":[]},{"citycode":"0372","adcode":"410527","name":"\u5185\u9ec4\u53bf","center":"114.90146,35.972016","level":"district","districts":[]},{"citycode":"0372","adcode":"410526","name":"\u6ed1\u53bf","center":"114.517977,35.576128","level":"district","districts":[]}]},{"citycode":"0392","adcode":"410600","name":"\u9e64\u58c1\u5e02","center":"114.297305,35.748329","level":"city","districts":[{"citycode":"0392","adcode":"410622","name":"\u6dc7\u53bf","center":"114.208851,35.622571","level":"district","districts":[]},{"citycode":"0392","adcode":"410602","name":"\u9e64\u5c71\u533a","center":"114.163133,35.954647","level":"district","districts":[]},{"citycode":"0392","adcode":"410603","name":"\u5c71\u57ce\u533a","center":"114.184391,35.897862","level":"district","districts":[]},{"citycode":"0392","adcode":"410611","name":"\u6dc7\u6ee8\u533a","center":"114.298748,35.741763","level":"district","districts":[]},{"citycode":"0392","adcode":"410621","name":"\u6d5a\u53bf","center":"114.550611,35.677249","level":"district","districts":[]}]},{"citycode":"0391","adcode":"410800","name":"\u7126\u4f5c\u5e02","center":"113.241902,35.215726","level":"city","districts":[{"citycode":"0391","adcode":"410803","name":"\u4e2d\u7ad9\u533a","center":"113.182847,35.237227","level":"district","districts":[]},{"citycode":"0391","adcode":"410804","name":"\u9a6c\u6751\u533a","center":"113.32212,35.257084","level":"district","districts":[]},{"citycode":"0391","adcode":"410802","name":"\u89e3\u653e\u533a","center":"113.230555,35.240403","level":"district","districts":[]},{"citycode":"0391","adcode":"410883","name":"\u5b5f\u5dde\u5e02","center":"112.791372,34.907229","level":"district","districts":[]},{"citycode":"0391","adcode":"410822","name":"\u535a\u7231\u53bf","center":"113.064701,35.170332","level":"district","districts":[]},{"citycode":"0391","adcode":"410811","name":"\u5c71\u9633\u533a","center":"113.254581,35.215054","level":"district","districts":[]},{"citycode":"0391","adcode":"410882","name":"\u6c81\u9633\u5e02","center":"112.950873,35.087569","level":"district","districts":[]},{"citycode":"0391","adcode":"410825","name":"\u6e29\u53bf","center":"113.08067,34.93961","level":"district","districts":[]},{"citycode":"0391","adcode":"410821","name":"\u4fee\u6b66\u53bf","center":"113.447862,35.22286","level":"district","districts":[]},{"citycode":"0391","adcode":"410823","name":"\u6b66\u965f\u53bf","center":"113.401848,35.099458","level":"district","districts":[]}]},{"citycode":"0373","adcode":"410700","name":"\u65b0\u4e61\u5e02","center":"113.92679,35.303589","level":"city","districts":[{"citycode":"0373","adcode":"410703","name":"\u536b\u6ee8\u533a","center":"113.865666,35.301796","level":"district","districts":[]},{"citycode":"0373","adcode":"410726","name":"\u5ef6\u6d25\u53bf","center":"114.205624,35.165876","level":"district","districts":[]},{"citycode":"0373","adcode":"410721","name":"\u65b0\u4e61\u53bf","center":"113.813884,35.170066","level":"district","districts":[]},{"citycode":"0373","adcode":"410704","name":"\u51e4\u6cc9\u533a","center":"113.916183,35.384428","level":"district","districts":[]},{"citycode":"0373","adcode":"410702","name":"\u7ea2\u65d7\u533a","center":"113.983358,35.306182","level":"district","districts":[]},{"citycode":"0373","adcode":"410711","name":"\u7267\u91ce\u533a","center":"113.908561,35.315614","level":"district","districts":[]},{"citycode":"0373","adcode":"410781","name":"\u536b\u8f89\u5e02","center":"114.064584,35.398357","level":"district","districts":[]},{"citycode":"0373","adcode":"410782","name":"\u8f89\u53bf\u5e02","center":"113.80572,35.462964","level":"district","districts":[]},{"citycode":"0373","adcode":"410724","name":"\u83b7\u5609\u53bf","center":"113.657551,35.260153","level":"district","districts":[]},{"citycode":"0373","adcode":"410783","name":"\u957f\u57a3\u5e02","center":"114.66885,35.201628","level":"district","districts":[]},{"citycode":"0373","adcode":"410725","name":"\u539f\u9633\u53bf","center":"113.939829,35.066873","level":"district","districts":[]},{"citycode":"0373","adcode":"410727","name":"\u5c01\u4e18\u53bf","center":"114.418907,35.041237","level":"district","districts":[]}]},{"citycode":"0378","adcode":"410200","name":"\u5f00\u5c01\u5e02","center":"114.314278,34.798083","level":"city","districts":[{"citycode":"0378","adcode":"410223","name":"\u5c09\u6c0f\u53bf","center":"114.19305,34.411437","level":"district","districts":[]},{"citycode":"0378","adcode":"410204","name":"\u9f13\u697c\u533a","center":"114.348356,34.788473","level":"district","districts":[]},{"citycode":"0378","adcode":"410205","name":"\u79b9\u738b\u53f0\u533a","center":"114.348105,34.777052","level":"district","districts":[]},{"citycode":"0378","adcode":"410203","name":"\u987a\u6cb3\u56de\u65cf\u533a","center":"114.360824,34.795933","level":"district","districts":[]},{"citycode":"0378","adcode":"410222","name":"\u901a\u8bb8\u53bf","center":"114.47315,34.502053","level":"district","districts":[]},{"citycode":"0378","adcode":"410202","name":"\u9f99\u4ead\u533a","center":"114.355378,34.815515","level":"district","districts":[]},{"citycode":"0378","adcode":"410212","name":"\u7965\u7b26\u533a","center":"114.441406,34.757546","level":"district","districts":[]},{"citycode":"0378","adcode":"410225","name":"\u5170\u8003\u53bf","center":"114.818228,34.856372","level":"district","districts":[]},{"citycode":"0378","adcode":"410221","name":"\u675e\u53bf","center":"114.782629,34.549731","level":"district","districts":[]}]},{"citycode":"0370","adcode":"411400","name":"\u5546\u4e18\u5e02","center":"115.656358,34.415165","level":"city","districts":[{"citycode":"0370","adcode":"411481","name":"\u6c38\u57ce\u5e02","center":"116.449864,33.929927","level":"district","districts":[]},{"citycode":"0370","adcode":"411421","name":"\u6c11\u6743\u53bf","center":"115.175019,34.648384","level":"district","districts":[]},{"citycode":"0370","adcode":"411423","name":"\u5b81\u9675\u53bf","center":"115.314221,34.461226","level":"district","districts":[]},{"citycode":"0370","adcode":"411426","name":"\u590f\u9091\u53bf","center":"116.131422,34.237801","level":"district","districts":[]},{"citycode":"0370","adcode":"411402","name":"\u6881\u56ed\u533a","center":"115.613609,34.444519","level":"district","districts":[]},{"citycode":"0370","adcode":"411403","name":"\u7762\u9633\u533a","center":"115.653258,34.389048","level":"district","districts":[]},{"citycode":"0370","adcode":"411425","name":"\u865e\u57ce\u53bf","center":"115.828519,34.400868","level":"district","districts":[]},{"citycode":"0370","adcode":"411422","name":"\u7762\u53bf","center":"115.071957,34.446572","level":"district","districts":[]},{"citycode":"0370","adcode":"411424","name":"\u67d8\u57ce\u53bf","center":"115.305182,34.092015","level":"district","districts":[]}]},{"citycode":"0394","adcode":"411600","name":"\u5468\u53e3\u5e02","center":"114.701222,33.634652","level":"city","districts":[{"citycode":"0394","adcode":"411621","name":"\u6276\u6c9f\u53bf","center":"114.394666,34.060062","level":"district","districts":[]},{"citycode":"0394","adcode":"411603","name":"\u6dee\u9633\u533a","center":"114.852604,33.731543","level":"district","districts":[]},{"citycode":"0394","adcode":"411625","name":"\u90f8\u57ce\u53bf","center":"115.177141,33.64601","level":"district","districts":[]},{"citycode":"0394","adcode":"411602","name":"\u5ddd\u6c47\u533a","center":"114.650551,33.647679","level":"district","districts":[]},{"citycode":"0394","adcode":"411624","name":"\u6c88\u4e18\u53bf","center":"115.098541,33.409805","level":"district","districts":[]},{"citycode":"0394","adcode":"411628","name":"\u9e7f\u9091\u53bf","center":"115.484525,33.860698","level":"district","districts":[]},{"citycode":"0394","adcode":"411627","name":"\u592a\u5eb7\u53bf","center":"114.837946,34.064513","level":"district","districts":[]},{"citycode":"0394","adcode":"411681","name":"\u9879\u57ce\u5e02","center":"114.875128,33.465609","level":"district","districts":[]},{"citycode":"0394","adcode":"411623","name":"\u5546\u6c34\u53bf","center":"114.608135,33.562072","level":"district","districts":[]},{"citycode":"0394","adcode":"411622","name":"\u897f\u534e\u53bf","center":"114.529709,33.768277","level":"district","districts":[]}]},{"citycode":"0396","adcode":"411700","name":"\u9a7b\u9a6c\u5e97\u5e02","center":"114.021988,33.014038","level":"city","districts":[{"citycode":"0396","adcode":"411723","name":"\u5e73\u8206\u53bf","center":"114.618537,32.96344","level":"district","districts":[]},{"citycode":"0396","adcode":"411702","name":"\u9a7f\u57ce\u533a","center":"113.993753,32.97455","level":"district","districts":[]},{"citycode":"0396","adcode":"411721","name":"\u897f\u5e73\u53bf","center":"114.021492,33.387658","level":"district","districts":[]},{"citycode":"0396","adcode":"411728","name":"\u9042\u5e73\u53bf","center":"114.013323,33.146316","level":"district","districts":[]},{"citycode":"0396","adcode":"411722","name":"\u4e0a\u8521\u53bf","center":"114.264381,33.262439","level":"district","districts":[]},{"citycode":"0396","adcode":"411727","name":"\u6c5d\u5357\u53bf","center":"114.362477,33.006808","level":"district","districts":[]},{"citycode":"0396","adcode":"411726","name":"\u6ccc\u9633\u53bf","center":"113.327144,32.723974","level":"district","districts":[]},{"citycode":"0396","adcode":"411725","name":"\u786e\u5c71\u53bf","center":"114.016818,32.82134","level":"district","districts":[]},{"citycode":"0396","adcode":"411724","name":"\u6b63\u9633\u53bf","center":"114.392774,32.605697","level":"district","districts":[]},{"citycode":"0396","adcode":"411729","name":"\u65b0\u8521\u53bf","center":"114.965519,32.74488","level":"district","districts":[]}]},{"citycode":"0375","adcode":"410400","name":"\u5e73\u9876\u5c71\u5e02","center":"113.192595,33.766554","level":"city","districts":[{"citycode":"0375","adcode":"410404","name":"\u77f3\u9f99\u533a","center":"112.898845,33.899247","level":"district","districts":[]},{"citycode":"0375","adcode":"410421","name":"\u5b9d\u4e30\u53bf","center":"113.054538,33.869159","level":"district","districts":[]},{"citycode":"0375","adcode":"410425","name":"\u90cf\u53bf","center":"113.21261,33.971787","level":"district","districts":[]},{"citycode":"0375","adcode":"410403","name":"\u536b\u4e1c\u533a","center":"113.335316,33.735388","level":"district","districts":[]},{"citycode":"0375","adcode":"410422","name":"\u53f6\u53bf","center":"113.357476,33.627437","level":"district","districts":[]},{"citycode":"0375","adcode":"410402","name":"\u65b0\u534e\u533a","center":"113.296956,33.736486","level":"district","districts":[]},{"citycode":"0375","adcode":"410423","name":"\u9c81\u5c71\u53bf","center":"112.908052,33.738434","level":"district","districts":[]},{"citycode":"0375","adcode":"410411","name":"\u6e5b\u6cb3\u533a","center":"113.3208727,33.72568115","level":"district","districts":[]},{"citycode":"0375","adcode":"410482","name":"\u6c5d\u5dde\u5e02","center":"112.844696,34.16717","level":"district","districts":[]},{"citycode":"0375","adcode":"410481","name":"\u821e\u94a2\u5e02","center":"113.516427,33.314147","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"440000","name":"\u5e7f\u4e1c\u7701","center":"113.266887,23.133306","level":"province","districts":[{"citycode":"0754","adcode":"440500","name":"\u6c55\u5934\u5e02","center":"116.681956,23.354152","level":"city","districts":[{"citycode":"0754","adcode":"440515","name":"\u6f84\u6d77\u533a","center":"116.755945,23.466314","level":"district","districts":[]},{"citycode":"0754","adcode":"440512","name":"\u6fe0\u6c5f\u533a","center":"116.726701,23.286605","level":"district","districts":[]},{"citycode":"0754","adcode":"440523","name":"\u5357\u6fb3\u53bf","center":"117.023482,23.421658","level":"district","districts":[]},{"citycode":"0754","adcode":"440507","name":"\u9f99\u6e56\u533a","center":"116.716464,23.372211","level":"district","districts":[]},{"citycode":"0754","adcode":"440511","name":"\u91d1\u5e73\u533a","center":"116.70341,23.365716","level":"district","districts":[]},{"citycode":"0754","adcode":"440513","name":"\u6f6e\u9633\u533a","center":"116.601677,23.264923","level":"district","districts":[]},{"citycode":"0754","adcode":"440514","name":"\u6f6e\u5357\u533a","center":"116.439105,23.239196","level":"district","districts":[]}]},{"citycode":"0757","adcode":"440600","name":"\u4f5b\u5c71\u5e02","center":"113.121586,23.021351","level":"city","districts":[{"citycode":"0757","adcode":"440608","name":"\u9ad8\u660e\u533a","center":"112.892573,22.900047","level":"district","districts":[]},{"citycode":"0757","adcode":"440607","name":"\u4e09\u6c34\u533a","center":"112.897271,23.156675","level":"district","districts":[]},{"citycode":"0757","adcode":"440605","name":"\u5357\u6d77\u533a","center":"113.143246,23.028875","level":"district","districts":[]},{"citycode":"0757","adcode":"440606","name":"\u987a\u5fb7\u533a","center":"113.293197,22.805413","level":"district","districts":[]},{"citycode":"0757","adcode":"440604","name":"\u7985\u57ce\u533a","center":"113.122532,23.009475","level":"district","districts":[]}]},{"citycode":"0758","adcode":"441200","name":"\u8087\u5e86\u5e02","center":"112.465245,23.047747","level":"city","districts":[{"citycode":"0758","adcode":"441225","name":"\u5c01\u5f00\u53bf","center":"111.512177,23.423928","level":"district","districts":[]},{"citycode":"0758","adcode":"441226","name":"\u5fb7\u5e86\u53bf","center":"111.785544,23.145035","level":"district","districts":[]},{"citycode":"0758","adcode":"441202","name":"\u7aef\u5dde\u533a","center":"112.485577,23.051847","level":"district","districts":[]},{"citycode":"0758","adcode":"441204","name":"\u9ad8\u8981\u533a","center":"112.458055,23.02474","level":"district","districts":[]},{"citycode":"0758","adcode":"441224","name":"\u6000\u96c6\u53bf","center":"112.166908,23.920806","level":"district","districts":[]},{"citycode":"0758","adcode":"441203","name":"\u9f0e\u6e56\u533a","center":"112.56738,23.159062","level":"district","districts":[]},{"citycode":"0758","adcode":"441223","name":"\u5e7f\u5b81\u53bf","center":"112.440694,23.634808","level":"district","districts":[]},{"citycode":"0758","adcode":"441284","name":"\u56db\u4f1a\u5e02","center":"112.734309,23.326991","level":"district","districts":[]}]},{"citycode":"0752","adcode":"441300","name":"\u60e0\u5dde\u5e02","center":"114.415587,23.112368","level":"city","districts":[{"citycode":"0752","adcode":"441323","name":"\u60e0\u4e1c\u53bf","center":"114.720136,22.984831","level":"district","districts":[]},{"citycode":"0752","adcode":"441303","name":"\u60e0\u9633\u533a","center":"114.456107,22.789431","level":"district","districts":[]},{"citycode":"0752","adcode":"441302","name":"\u60e0\u57ce\u533a","center":"114.382526,23.084657","level":"district","districts":[]},{"citycode":"0752","adcode":"441324","name":"\u9f99\u95e8\u53bf","center":"114.254898,23.727873","level":"district","districts":[]},{"citycode":"0752","adcode":"441322","name":"\u535a\u7f57\u53bf","center":"114.289602,23.172587","level":"district","districts":[]}]},{"citycode":"0755","adcode":"440300","name":"\u6df1\u5733\u5e02","center":"114.057939,22.543527","level":"city","districts":[{"citycode":"0755","adcode":"440306","name":"\u5b9d\u5b89\u533a","center":"113.883831,22.554986","level":"district","districts":[]},{"citycode":"0755","adcode":"440305","name":"\u5357\u5c71\u533a","center":"113.930478,22.533191","level":"district","districts":[]},{"citycode":"0755","adcode":"440307","name":"\u9f99\u5c97\u533a","center":"114.246884,22.720889","level":"district","districts":[]},{"citycode":"0755","adcode":"440311","name":"\u5149\u660e\u533a","center":"113.94733,22.744136","level":"district","districts":[]},{"citycode":"0755","adcode":"440304","name":"\u798f\u7530\u533a","center":"114.055198,22.520922","level":"district","districts":[]},{"citycode":"0755","adcode":"440303","name":"\u7f57\u6e56\u533a","center":"114.131611,22.548309","level":"district","districts":[]},{"citycode":"0755","adcode":"440308","name":"\u76d0\u7530\u533a","center":"114.236739,22.557001","level":"district","districts":[]},{"citycode":"0755","adcode":"440310","name":"\u576a\u5c71\u533a","center":"114.350844,22.708786","level":"district","districts":[]},{"citycode":"0755","adcode":"440309","name":"\u9f99\u534e\u533a","center":"114.04491,22.696735","level":"district","districts":[]}]},{"citycode":"0756","adcode":"440400","name":"\u73e0\u6d77\u5e02","center":"113.576892,22.271644","level":"city","districts":[{"citycode":"0756","adcode":"440402","name":"\u9999\u6d32\u533a","center":"113.543372,22.265635","level":"district","districts":[]},{"citycode":"0756","adcode":"440403","name":"\u6597\u95e8\u533a","center":"113.296228,22.209134","level":"district","districts":[]},{"citycode":"0756","adcode":"440404","name":"\u91d1\u6e7e\u533a","center":"113.363224,22.146717","level":"district","districts":[]},{"citycode":[],"adcode":"440499","name":"\u6fb3\u95e8\u5927\u5b66\u6a2a\u7434\u6821\u533a(\u7531\u6fb3\u95e8\u5b9e\u65bd\u7ba1\u8f96)","center":"113.548956,22.126197","level":"district","districts":[]}]},{"citycode":"0750","adcode":"440700","name":"\u6c5f\u95e8\u5e02","center":"113.081548,22.578948","level":"city","districts":[{"citycode":"0750","adcode":"440781","name":"\u53f0\u5c71\u5e02","center":"112.793812,22.251947","level":"district","districts":[]},{"citycode":"0750","adcode":"440704","name":"\u6c5f\u6d77\u533a","center":"113.111029,22.561301","level":"district","districts":[]},{"citycode":"0750","adcode":"440785","name":"\u6069\u5e73\u5e02","center":"112.304904,22.183743","level":"district","districts":[]},{"citycode":"0750","adcode":"440784","name":"\u9e64\u5c71\u5e02","center":"112.964203,22.765912","level":"district","districts":[]},{"citycode":"0750","adcode":"440705","name":"\u65b0\u4f1a\u533a","center":"113.034454,22.458519","level":"district","districts":[]},{"citycode":"0750","adcode":"440703","name":"\u84ec\u6c5f\u533a","center":"113.078914,22.595285","level":"district","districts":[]},{"citycode":"0750","adcode":"440783","name":"\u5f00\u5e73\u5e02","center":"112.698113,22.377378","level":"district","districts":[]}]},{"citycode":"0662","adcode":"441700","name":"\u9633\u6c5f\u5e02","center":"111.98343,21.856853","level":"city","districts":[{"citycode":"0662","adcode":"441721","name":"\u9633\u897f\u53bf","center":"111.617696,21.753935","level":"district","districts":[]},{"citycode":"0662","adcode":"441702","name":"\u6c5f\u57ce\u533a","center":"111.95486,21.862451","level":"district","districts":[]},{"citycode":"0662","adcode":"441704","name":"\u9633\u4e1c\u533a","center":"112.005586,21.869081","level":"district","districts":[]},{"citycode":"0662","adcode":"441781","name":"\u9633\u6625\u5e02","center":"111.791587,22.17041","level":"district","districts":[]}]},{"citycode":"0668","adcode":"440900","name":"\u8302\u540d\u5e02","center":"110.925533,21.662728","level":"city","districts":[{"citycode":"0668","adcode":"440982","name":"\u5316\u5dde\u5e02","center":"110.639581,21.664483","level":"district","districts":[]},{"citycode":"0668","adcode":"440904","name":"\u7535\u767d\u533a","center":"111.013368,21.513946","level":"district","districts":[]},{"citycode":"0668","adcode":"440981","name":"\u9ad8\u5dde\u5e02","center":"110.85402,21.919654","level":"district","districts":[]},{"citycode":"0668","adcode":"440983","name":"\u4fe1\u5b9c\u5e02","center":"110.946866,22.354887","level":"district","districts":[]},{"citycode":"0668","adcode":"440902","name":"\u8302\u5357\u533a","center":"110.918566,21.641661","level":"district","districts":[]}]},{"citycode":"0759","adcode":"440800","name":"\u6e5b\u6c5f\u5e02","center":"110.357538,21.270108","level":"city","districts":[{"citycode":"0759","adcode":"440883","name":"\u5434\u5ddd\u5e02","center":"110.779361,21.440763","level":"district","districts":[]},{"citycode":"0759","adcode":"440811","name":"\u9ebb\u7ae0\u533a","center":"110.333833,21.26437","level":"district","districts":[]},{"citycode":"0759","adcode":"440825","name":"\u5f90\u95fb\u53bf","center":"110.17595,20.325969","level":"district","districts":[]},{"citycode":"0759","adcode":"440804","name":"\u5761\u5934\u533a","center":"110.455192,21.244405","level":"district","districts":[]},{"citycode":"0759","adcode":"440803","name":"\u971e\u5c71\u533a","center":"110.397721,21.192463","level":"district","districts":[]},{"citycode":"0759","adcode":"440882","name":"\u96f7\u5dde\u5e02","center":"110.097011,20.914548","level":"district","districts":[]},{"citycode":"0759","adcode":"440823","name":"\u9042\u6eaa\u53bf","center":"110.25043,21.378371","level":"district","districts":[]},{"citycode":"0759","adcode":"440802","name":"\u8d64\u574e\u533a","center":"110.365592,21.265948","level":"district","districts":[]},{"citycode":"0759","adcode":"440881","name":"\u5ec9\u6c5f\u5e02","center":"110.286109,21.609988","level":"district","districts":[]}]},{"citycode":"0660","adcode":"441500","name":"\u6c55\u5c3e\u5e02","center":"115.375557,22.787204","level":"city","districts":[{"citycode":"0660","adcode":"441581","name":"\u9646\u4e30\u5e02","center":"115.652142,22.91874","level":"district","districts":[]},{"citycode":"0660","adcode":"441521","name":"\u6d77\u4e30\u53bf","center":"115.322974,22.967212","level":"district","districts":[]},{"citycode":"0660","adcode":"441502","name":"\u57ce\u533a","center":"115.36522,22.779204","level":"district","districts":[]},{"citycode":"0660","adcode":"441523","name":"\u9646\u6cb3\u53bf","center":"115.659978,23.301557","level":"district","districts":[]}]},{"citycode":"0768","adcode":"445100","name":"\u6f6e\u5dde\u5e02","center":"116.621901,23.657662","level":"city","districts":[{"citycode":"0768","adcode":"445122","name":"\u9976\u5e73\u53bf","center":"117.0045,23.663294","level":"district","districts":[]},{"citycode":"0768","adcode":"445102","name":"\u6e58\u6865\u533a","center":"116.628343,23.675104","level":"district","districts":[]},{"citycode":"0768","adcode":"445103","name":"\u6f6e\u5b89\u533a","center":"116.676971,23.463598","level":"district","districts":[]}]},{"citycode":"0663","adcode":"445200","name":"\u63ed\u9633\u5e02","center":"116.372732,23.550968","level":"city","districts":[{"citycode":"0663","adcode":"445224","name":"\u60e0\u6765\u53bf","center":"116.295038,23.033889","level":"district","districts":[]},{"citycode":"0663","adcode":"445222","name":"\u63ed\u897f\u53bf","center":"115.841742,23.431314","level":"district","districts":[]},{"citycode":"0663","adcode":"445281","name":"\u666e\u5b81\u5e02","center":"116.165646,23.297742","level":"district","districts":[]},{"citycode":"0663","adcode":"445202","name":"\u6995\u57ce\u533a","center":"116.36714,23.525918","level":"district","districts":[]},{"citycode":"0663","adcode":"445203","name":"\u63ed\u4e1c\u533a","center":"116.411928,23.567252","level":"district","districts":[]}]},{"citycode":"020","adcode":"440100","name":"\u5e7f\u5dde\u5e02","center":"113.264499,23.130061","level":"city","districts":[{"citycode":"020","adcode":"440105","name":"\u6d77\u73e0\u533a","center":"113.317412,23.084003","level":"district","districts":[]},{"citycode":"020","adcode":"440117","name":"\u4ece\u5316\u533a","center":"113.586329,23.54915","level":"district","districts":[]},{"citycode":"020","adcode":"440114","name":"\u82b1\u90fd\u533a","center":"113.220125,23.404326","level":"district","districts":[]},{"citycode":"020","adcode":"440106","name":"\u5929\u6cb3\u533a","center":"113.361597,23.124817","level":"district","districts":[]},{"citycode":"020","adcode":"440103","name":"\u8354\u6e7e\u533a","center":"113.218998,23.107123","level":"district","districts":[]},{"citycode":"020","adcode":"440104","name":"\u8d8a\u79c0\u533a","center":"113.267065,23.128673","level":"district","districts":[]},{"citycode":"020","adcode":"440113","name":"\u756a\u79ba\u533a","center":"113.383917,22.93756","level":"district","districts":[]},{"citycode":"020","adcode":"440111","name":"\u767d\u4e91\u533a","center":"113.2732,23.157159","level":"district","districts":[]},{"citycode":"020","adcode":"440112","name":"\u9ec4\u57d4\u533a","center":"113.480613,23.181355","level":"district","districts":[]},{"citycode":"020","adcode":"440118","name":"\u589e\u57ce\u533a","center":"113.810734,23.261452","level":"district","districts":[]},{"citycode":"020","adcode":"440115","name":"\u5357\u6c99\u533a","center":"113.525178,22.801435","level":"district","districts":[]}]},{"citycode":"0753","adcode":"441400","name":"\u6885\u5dde\u5e02","center":"116.122046,24.288832","level":"city","districts":[{"citycode":"0753","adcode":"441427","name":"\u8549\u5cad\u53bf","center":"116.171477,24.658963","level":"district","districts":[]},{"citycode":"0753","adcode":"441426","name":"\u5e73\u8fdc\u53bf","center":"115.891235,24.566928","level":"district","districts":[]},{"citycode":"0753","adcode":"441481","name":"\u5174\u5b81\u5e02","center":"115.731133,24.137296","level":"district","districts":[]},{"citycode":"0753","adcode":"441424","name":"\u4e94\u534e\u53bf","center":"115.775751,23.932568","level":"district","districts":[]},{"citycode":"0753","adcode":"441422","name":"\u5927\u57d4\u53bf","center":"116.694825,24.347037","level":"district","districts":[]},{"citycode":"0753","adcode":"441403","name":"\u6885\u53bf\u533a","center":"116.081395,24.266191","level":"district","districts":[]},{"citycode":"0753","adcode":"441402","name":"\u6885\u6c5f\u533a","center":"116.116686,24.31065","level":"district","districts":[]},{"citycode":"0753","adcode":"441423","name":"\u4e30\u987a\u53bf","center":"116.181895,23.739364","level":"district","districts":[]}]},{"citycode":"0763","adcode":"441800","name":"\u6e05\u8fdc\u5e02","center":"113.056098,23.682064","level":"city","districts":[{"citycode":"0763","adcode":"441881","name":"\u82f1\u5fb7\u5e02","center":"113.401827,24.20716","level":"district","districts":[]},{"citycode":"0763","adcode":"441882","name":"\u8fde\u5dde\u5e02","center":"112.377255,24.780873","level":"district","districts":[]},{"citycode":"0763","adcode":"441826","name":"\u8fde\u5357\u7476\u65cf\u81ea\u6cbb\u53bf","center":"112.287212,24.725953","level":"district","districts":[]},{"citycode":"0763","adcode":"441823","name":"\u9633\u5c71\u53bf","center":"112.641199,24.465234","level":"district","districts":[]},{"citycode":"0763","adcode":"441821","name":"\u4f5b\u5188\u53bf","center":"113.531559,23.879455","level":"district","districts":[]},{"citycode":"0763","adcode":"441825","name":"\u8fde\u5c71\u58ee\u65cf\u7476\u65cf\u81ea\u6cbb\u53bf","center":"112.093726,24.570553","level":"district","districts":[]},{"citycode":"0763","adcode":"441803","name":"\u6e05\u65b0\u533a","center":"113.017747,23.734677","level":"district","districts":[]},{"citycode":"0763","adcode":"441802","name":"\u6e05\u57ce\u533a","center":"113.062612,23.697889","level":"district","districts":[]}]},{"citycode":"0769","adcode":"441900","name":"\u4e1c\u839e\u5e02","center":"113.751884,23.021016","level":"city","districts":[{"citycode":"0769","adcode":"441900","name":"\u9ec4\u6c5f\u9547","center":"114.000220,22.916267","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u6e05\u6eaa\u9547","center":"114.109028,22.864049","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u6865\u5934\u9547","center":"114.065029,23.031536","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u6d2a\u6885\u9547","center":"113.606888,23.015507","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u9ad8\u57d7\u9547","center":"113.772920,23.100117","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u9ebb\u6d8c\u9547","center":"113.616702,23.088653","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u671b\u725b\u58a9\u9547","center":"113.675238,23.067562","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u9053\u6ed8\u9547","center":"113.687246,23.004094","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u4e07\u6c5f\u8857\u9053","center":"113.714249,23.004871","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u839e\u57ce\u8857\u9053","center":"113.756157,23.026359","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u4f01\u77f3\u9547","center":"113.989933,23.054588","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u4e1c\u5751\u9547","center":"113.921005,22.989113","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u4e1c\u57ce\u8857\u9053","center":"113.772060,22.941938","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u5357\u57ce\u8857\u9053","center":"113.768809,22.941355","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u8c22\u5c97\u9547","center":"114.171775,22.984642","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u6a1f\u6728\u5934\u9547","center":"114.015449,22.869270","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u5e38\u5e73\u9547","center":"114.041069,23.007892","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u51e4\u5c97\u9547","center":"114.139781,22.777948","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u5bee\u6b65\u9547","center":"113.917593,22.981271","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u6c99\u7530\u9547","center":"113.582201,22.942601","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u6a2a\u6ca5\u9547","center":"114.030270,23.035086","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u77f3\u6392\u9547","center":"113.989827,23.069114","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u8336\u5c71\u9547","center":"113.840966,23.092760","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u4e2d\u5802\u9547","center":"113.612748,23.042585","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u539a\u8857\u9547","center":"113.631616,22.934094","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u957f\u5b89\u9547","center":"113.802243,22.838519","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u864e\u95e8\u9547","center":"113.631506,22.832134","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u77f3\u9f99\u9547","center":"113.859745,23.087788","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u77f3\u78a3\u9547","center":"113.772148,23.095617","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u5927\u6717\u9547","center":"113.948398,22.866832","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u5927\u5cad\u5c71\u9547","center":"113.807913,22.948048","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u5858\u53a6\u9547","center":"114.052418,22.839736","level":"street","districts":[]}]},{"citycode":"0751","adcode":"440200","name":"\u97f6\u5173\u5e02","center":"113.597324,24.810977","level":"city","districts":[{"citycode":"0751","adcode":"440224","name":"\u4ec1\u5316\u53bf","center":"113.749175,25.085764","level":"district","districts":[]},{"citycode":"0751","adcode":"440282","name":"\u5357\u96c4\u5e02","center":"114.31184,25.117653","level":"district","districts":[]},{"citycode":"0751","adcode":"440222","name":"\u59cb\u5174\u53bf","center":"114.061998,24.953908","level":"district","districts":[]},{"citycode":"0751","adcode":"440281","name":"\u4e50\u660c\u5e02","center":"113.347669,25.129892","level":"district","districts":[]},{"citycode":"0751","adcode":"440229","name":"\u7fc1\u6e90\u53bf","center":"114.129986,24.350581","level":"district","districts":[]},{"citycode":"0751","adcode":"440233","name":"\u65b0\u4e30\u53bf","center":"114.206641,24.059909","level":"district","districts":[]},{"citycode":"0751","adcode":"440205","name":"\u66f2\u6c5f\u533a","center":"113.604591,24.682826","level":"district","districts":[]},{"citycode":"0751","adcode":"440204","name":"\u6d48\u6c5f\u533a","center":"113.611077,24.804898","level":"district","districts":[]},{"citycode":"0751","adcode":"440232","name":"\u4e73\u6e90\u7476\u65cf\u81ea\u6cbb\u53bf","center":"113.275875,24.775856","level":"district","districts":[]},{"citycode":"0751","adcode":"440203","name":"\u6b66\u6c5f\u533a","center":"113.58792,24.7929","level":"district","districts":[]}]},{"citycode":"0762","adcode":"441600","name":"\u6cb3\u6e90\u5e02","center":"114.700215,23.744276","level":"city","districts":[{"citycode":"0762","adcode":"441624","name":"\u548c\u5e73\u53bf","center":"114.935634,24.469177","level":"district","districts":[]},{"citycode":"0762","adcode":"441622","name":"\u9f99\u5ddd\u53bf","center":"115.26002,24.100599","level":"district","districts":[]},{"citycode":"0762","adcode":"441602","name":"\u6e90\u57ce\u533a","center":"114.703305,23.734055","level":"district","districts":[]},{"citycode":"0762","adcode":"441621","name":"\u7d2b\u91d1\u53bf","center":"115.183814,23.635597","level":"district","districts":[]},{"citycode":"0762","adcode":"441625","name":"\u4e1c\u6e90\u53bf","center":"114.7466,23.790079","level":"district","districts":[]},{"citycode":"0762","adcode":"441623","name":"\u8fde\u5e73\u53bf","center":"114.488358,24.369552","level":"district","districts":[]}]},{"citycode":"0766","adcode":"445300","name":"\u4e91\u6d6e\u5e02","center":"112.044524,22.915163","level":"city","districts":[{"citycode":"0766","adcode":"445322","name":"\u90c1\u5357\u53bf","center":"111.535387,23.234561","level":"district","districts":[]},{"citycode":"0766","adcode":"445381","name":"\u7f57\u5b9a\u5e02","center":"111.569788,22.768345","level":"district","districts":[]},{"citycode":"0766","adcode":"445303","name":"\u4e91\u5b89\u533a","center":"112.002947,23.070334","level":"district","districts":[]},{"citycode":"0766","adcode":"445302","name":"\u4e91\u57ce\u533a","center":"112.043945,22.92815","level":"district","districts":[]},{"citycode":"0766","adcode":"445321","name":"\u65b0\u5174\u53bf","center":"112.225174,22.695915","level":"district","districts":[]}]},{"citycode":"0760","adcode":"442000","name":"\u4e2d\u5c71\u5e02","center":"113.392517,22.517024","level":"city","districts":[{"citycode":"0760","adcode":"442000","name":"\u6a2a\u680f\u9547","center":"113.223630,22.604755","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u6e2f\u53e3\u9547","center":"113.354019,22.602694","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u961c\u6c99\u9547","center":"113.340305,22.640609","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u4e09\u4e61\u9547","center":"113.431869,22.387876","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u897f\u533a\u8857\u9053","center":"113.314421,22.564923","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u77f3\u5c90\u8857\u9053","center":"113.404120,22.548351","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u5c0f\u6984\u9547","center":"113.320629,22.560691","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u795e\u6e7e\u9547","center":"113.376318,22.276818","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u5927\u6d8c\u9547","center":"113.296691,22.483379","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u53e4\u9547\u9547","center":"113.221289,22.609652","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u6c99\u6eaa\u9547","center":"113.343971,22.524791","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u4e1c\u51e4\u9547","center":"113.307919,22.680266","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u677f\u8299\u9547","center":"113.368695,22.406764","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u5357\u5934\u9547","center":"113.299916,22.683684","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u5766\u6d32\u9547","center":"113.454379,22.310301","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u4e09\u89d2\u9547","center":"113.400593,22.640197","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u9ec4\u5703\u9547","center":"113.359373,22.681261","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u4e1c\u533a\u8857\u9053","center":"113.436188,22.514086","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u6c11\u4f17\u8857\u9053","center":"113.472738,22.653889","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u5357\u533a\u8857\u9053","center":"113.367676,22.488858","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u4e94\u6842\u5c71\u8857\u9053","center":"113.476817,22.428448","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u4e2d\u5c71\u6e2f\u8857\u9053","center":"113.418677,22.549913","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u5357\u6717\u8857\u9053","center":"113.489502,22.524345","level":"street","districts":[]}]}]},{"citycode":[],"adcode":"150000","name":"\u5185\u8499\u53e4\u81ea\u6cbb\u533a","center":"111.765226,40.818233","level":"province","districts":[{"citycode":"0473","adcode":"150300","name":"\u4e4c\u6d77\u5e02","center":"106.79415,39.655048","level":"city","districts":[{"citycode":"0473","adcode":"150304","name":"\u4e4c\u8fbe\u533a","center":"106.726043,39.505609","level":"district","districts":[]},{"citycode":"0473","adcode":"150302","name":"\u6d77\u52c3\u6e7e\u533a","center":"106.8228,39.690873","level":"district","districts":[]},{"citycode":"0473","adcode":"150303","name":"\u6d77\u5357\u533a","center":"106.891472,39.441803","level":"district","districts":[]}]},{"citycode":"0478","adcode":"150800","name":"\u5df4\u5f66\u6dd6\u5c14\u5e02","center":"107.387767,40.742987","level":"city","districts":[{"citycode":"0478","adcode":"150824","name":"\u4e4c\u62c9\u7279\u4e2d\u65d7","center":"108.513653,41.58813","level":"district","districts":[]},{"citycode":"0478","adcode":"150822","name":"\u78f4\u53e3\u53bf","center":"107.008288,40.330534","level":"district","districts":[]},{"citycode":"0478","adcode":"150825","name":"\u4e4c\u62c9\u7279\u540e\u65d7","center":"107.074748,41.08412","level":"district","districts":[]},{"citycode":"0478","adcode":"150826","name":"\u676d\u9526\u540e\u65d7","center":"107.151296,40.886596","level":"district","districts":[]},{"citycode":"0478","adcode":"150802","name":"\u4e34\u6cb3\u533a","center":"107.363536,40.750969","level":"district","districts":[]},{"citycode":"0478","adcode":"150821","name":"\u4e94\u539f\u53bf","center":"108.267466,41.088446","level":"district","districts":[]},{"citycode":"0478","adcode":"150823","name":"\u4e4c\u62c9\u7279\u524d\u65d7","center":"108.652114,40.737018","level":"district","districts":[]}]},{"citycode":"0472","adcode":"150200","name":"\u5305\u5934\u5e02","center":"109.95315,40.621327","level":"city","districts":[{"citycode":"0472","adcode":"150221","name":"\u571f\u9ed8\u7279\u53f3\u65d7","center":"110.527831,40.578253","level":"district","districts":[]},{"citycode":"0472","adcode":"150223","name":"\u8fbe\u5c14\u7f55\u8302\u660e\u5b89\u8054\u5408\u65d7","center":"110.432626,41.698992","level":"district","districts":[]},{"citycode":"0472","adcode":"150206","name":"\u767d\u4e91\u9102\u535a\u77ff\u533a","center":"109.973195,41.769956","level":"district","districts":[]},{"citycode":"0472","adcode":"150222","name":"\u56fa\u9633\u53bf","center":"110.060055,41.034757","level":"district","districts":[]},{"citycode":"0472","adcode":"150205","name":"\u77f3\u62d0\u533a","center":"110.060783,40.676736","level":"district","districts":[]},{"citycode":"0472","adcode":"150202","name":"\u4e1c\u6cb3\u533a","center":"110.044008,40.57626","level":"district","districts":[]},{"citycode":"0472","adcode":"150204","name":"\u9752\u5c71\u533a","center":"109.902157,40.644081","level":"district","districts":[]},{"citycode":"0472","adcode":"150203","name":"\u6606\u90fd\u4ed1\u533a","center":"109.840249,40.658075","level":"district","districts":[]},{"citycode":"0472","adcode":"150207","name":"\u4e5d\u539f\u533a","center":"109.968082,40.611346","level":"district","districts":[]}]},{"citycode":"0470","adcode":"150700","name":"\u547c\u4f26\u8d1d\u5c14\u5e02","center":"119.77845,49.166536","level":"city","districts":[{"citycode":"0470","adcode":"150702","name":"\u6d77\u62c9\u5c14\u533a","center":"119.824542,49.234715","level":"district","districts":[]},{"citycode":"0470","adcode":"150785","name":"\u6839\u6cb3\u5e02","center":"121.520165,50.779758","level":"district","districts":[]},{"citycode":"0470","adcode":"150782","name":"\u7259\u514b\u77f3\u5e02","center":"120.711639,49.285947","level":"district","districts":[]},{"citycode":"0470","adcode":"150724","name":"\u9102\u6e29\u514b\u65cf\u81ea\u6cbb\u65d7","center":"119.755253,49.146692","level":"district","districts":[]},{"citycode":"0470","adcode":"150721","name":"\u963f\u8363\u65d7","center":"123.458943,48.126553","level":"district","districts":[]},{"citycode":"0470","adcode":"150783","name":"\u624e\u5170\u5c6f\u5e02","center":"122.708475,48.028396","level":"district","districts":[]},{"citycode":"0470","adcode":"150781","name":"\u6ee1\u6d32\u91cc\u5e02","center":"117.379134,49.59862","level":"district","districts":[]},{"citycode":"0470","adcode":"150703","name":"\u624e\u8d49\u8bfa\u5c14\u533a","center":"117.669939,49.511213","level":"district","districts":[]},{"citycode":"0470","adcode":"150727","name":"\u65b0\u5df4\u5c14\u864e\u53f3\u65d7","center":"116.8237,48.671865","level":"district","districts":[]},{"citycode":"0470","adcode":"150723","name":"\u9102\u4f26\u6625\u81ea\u6cbb\u65d7","center":"123.725643,50.591604","level":"district","districts":[]},{"citycode":"0470","adcode":"150784","name":"\u989d\u5c14\u53e4\u7eb3\u5e02","center":"120.180506,50.243102","level":"district","districts":[]},{"citycode":"0470","adcode":"150726","name":"\u65b0\u5df4\u5c14\u864e\u5de6\u65d7","center":"118.269782,48.21827","level":"district","districts":[]},{"citycode":"0470","adcode":"150722","name":"\u83ab\u529b\u8fbe\u74e6\u8fbe\u65a1\u5c14\u65cf\u81ea\u6cbb\u65d7","center":"124.519023,48.477728","level":"district","districts":[]},{"citycode":"0470","adcode":"150725","name":"\u9648\u5df4\u5c14\u864e\u65d7","center":"119.424026,49.328916","level":"district","districts":[]}]},{"citycode":"0482","adcode":"152200","name":"\u5174\u5b89\u76df","center":"122.037796,46.082373","level":"city","districts":[{"citycode":"0482","adcode":"152202","name":"\u963f\u5c14\u5c71\u5e02","center":"119.943577,47.17744","level":"district","districts":[]},{"citycode":"0482","adcode":"152222","name":"\u79d1\u5c14\u6c81\u53f3\u7ffc\u4e2d\u65d7","center":"121.476357,45.060728","level":"district","districts":[]},{"citycode":"0482","adcode":"152224","name":"\u7a81\u6cc9\u53bf","center":"121.593972,45.381918","level":"district","districts":[]},{"citycode":"0482","adcode":"152223","name":"\u624e\u8d49\u7279\u65d7","center":"122.899627,46.723154","level":"district","districts":[]},{"citycode":"0482","adcode":"152221","name":"\u79d1\u5c14\u6c81\u53f3\u7ffc\u524d\u65d7","center":"121.952638,46.079664","level":"district","districts":[]},{"citycode":"0482","adcode":"152201","name":"\u4e4c\u5170\u6d69\u7279\u5e02","center":"122.093309,46.072233","level":"district","districts":[]}]},{"citycode":"0475","adcode":"150500","name":"\u901a\u8fbd\u5e02","center":"122.243309,43.653566","level":"city","districts":[{"citycode":"0475","adcode":"150581","name":"\u970d\u6797\u90ed\u52d2\u5e02","center":"119.681242,45.533598","level":"district","districts":[]},{"citycode":"0475","adcode":"150523","name":"\u5f00\u9c81\u53bf","center":"121.319216,43.601446","level":"district","districts":[]},{"citycode":"0475","adcode":"150525","name":"\u5948\u66fc\u65d7","center":"120.657813,42.867433","level":"district","districts":[]},{"citycode":"0475","adcode":"150524","name":"\u5e93\u4f26\u65d7","center":"121.810629,42.735556","level":"district","districts":[]},{"citycode":"0475","adcode":"150526","name":"\u624e\u9c81\u7279\u65d7","center":"120.917953,44.567093","level":"district","districts":[]},{"citycode":"0475","adcode":"150521","name":"\u79d1\u5c14\u6c81\u5de6\u7ffc\u4e2d\u65d7","center":"123.312202,44.126606","level":"district","districts":[]},{"citycode":"0475","adcode":"150522","name":"\u79d1\u5c14\u6c81\u5de6\u7ffc\u540e\u65d7","center":"122.35677,42.935105","level":"district","districts":[]},{"citycode":"0475","adcode":"150502","name":"\u79d1\u5c14\u6c81\u533a","center":"122.25545,43.623133","level":"district","districts":[]}]},{"citycode":"0476","adcode":"150400","name":"\u8d64\u5cf0\u5e02","center":"118.887613,42.256876","level":"city","districts":[{"citycode":"0476","adcode":"150422","name":"\u5df4\u6797\u5de6\u65d7","center":"119.362832,43.961547","level":"district","districts":[]},{"citycode":"0476","adcode":"150423","name":"\u5df4\u6797\u53f3\u65d7","center":"118.664235,43.534171","level":"district","districts":[]},{"citycode":"0476","adcode":"150424","name":"\u6797\u897f\u53bf","center":"118.05545,43.61812","level":"district","districts":[]},{"citycode":"0476","adcode":"150430","name":"\u6556\u6c49\u65d7","center":"119.921413,42.290731","level":"district","districts":[]},{"citycode":"0476","adcode":"150402","name":"\u7ea2\u5c71\u533a","center":"118.953989,42.296317","level":"district","districts":[]},{"citycode":"0476","adcode":"150426","name":"\u7fc1\u725b\u7279\u65d7","center":"119.006187,42.936529","level":"district","districts":[]},{"citycode":"0476","adcode":"150425","name":"\u514b\u4ec0\u514b\u817e\u65d7","center":"117.545413,43.265057","level":"district","districts":[]},{"citycode":"0476","adcode":"150429","name":"\u5b81\u57ce\u53bf","center":"119.320056,41.600193","level":"district","districts":[]},{"citycode":"0476","adcode":"150421","name":"\u963f\u9c81\u79d1\u5c14\u6c81\u65d7","center":"120.065533,43.872398","level":"district","districts":[]},{"citycode":"0476","adcode":"150403","name":"\u5143\u5b9d\u5c71\u533a","center":"119.288475,42.039602","level":"district","districts":[]},{"citycode":"0476","adcode":"150404","name":"\u677e\u5c71\u533a","center":"118.916156,42.299795","level":"district","districts":[]},{"citycode":"0476","adcode":"150428","name":"\u5580\u5587\u6c81\u65d7","center":"118.701934,41.927103","level":"district","districts":[]}]},{"citycode":"0479","adcode":"152500","name":"\u9521\u6797\u90ed\u52d2\u76df","center":"116.047387,43.933212","level":"city","districts":[{"citycode":"0479","adcode":"152525","name":"\u4e1c\u4e4c\u73e0\u7a46\u6c81\u65d7","center":"116.97526,45.497329","level":"district","districts":[]},{"citycode":"0479","adcode":"152522","name":"\u963f\u5df4\u560e\u65d7","center":"114.950185,44.022831","level":"district","districts":[]},{"citycode":"0479","adcode":"152502","name":"\u9521\u6797\u6d69\u7279\u5e02","center":"116.085814,43.933417","level":"district","districts":[]},{"citycode":"0479","adcode":"152526","name":"\u897f\u4e4c\u73e0\u7a46\u6c81\u65d7","center":"117.608668,44.587746","level":"district","districts":[]},{"citycode":"0479","adcode":"152523","name":"\u82cf\u5c3c\u7279\u5de6\u65d7","center":"113.667171,43.859718","level":"district","districts":[]},{"citycode":"0479","adcode":"152501","name":"\u4e8c\u8fde\u6d69\u7279\u5e02","center":"111.949594,43.64285","level":"district","districts":[]},{"citycode":"0479","adcode":"152524","name":"\u82cf\u5c3c\u7279\u53f3\u65d7","center":"112.641806,42.742417","level":"district","districts":[]},{"citycode":"0479","adcode":"152530","name":"\u6b63\u84dd\u65d7","center":"115.991648,42.241815","level":"district","districts":[]},{"citycode":"0479","adcode":"152529","name":"\u6b63\u9576\u767d\u65d7","center":"115.029748,42.287493","level":"district","districts":[]},{"citycode":"0479","adcode":"152528","name":"\u9576\u9ec4\u65d7","center":"113.847287,42.232371","level":"district","districts":[]},{"citycode":"0479","adcode":"152531","name":"\u591a\u4f26\u53bf","center":"116.485549,42.203454","level":"district","districts":[]},{"citycode":"0479","adcode":"152527","name":"\u592a\u4ec6\u5bfa\u65d7","center":"115.283173,41.876889","level":"district","districts":[]}]},{"citycode":"0474","adcode":"150900","name":"\u4e4c\u5170\u5bdf\u5e03\u5e02","center":"113.132227,40.994526","level":"city","districts":[{"citycode":"0474","adcode":"150929","name":"\u56db\u5b50\u738b\u65d7","center":"111.706663,41.533542","level":"district","districts":[]},{"citycode":"0474","adcode":"150921","name":"\u5353\u8d44\u53bf","center":"112.577716,40.894618","level":"district","districts":[]},{"citycode":"0474","adcode":"150928","name":"\u5bdf\u54c8\u5c14\u53f3\u7ffc\u540e\u65d7","center":"113.191505,41.435937","level":"district","districts":[]},{"citycode":"0474","adcode":"150923","name":"\u5546\u90fd\u53bf","center":"113.577778,41.562176","level":"district","districts":[]},{"citycode":"0474","adcode":"150927","name":"\u5bdf\u54c8\u5c14\u53f3\u7ffc\u4e2d\u65d7","center":"112.635348,41.277449","level":"district","districts":[]},{"citycode":"0474","adcode":"150922","name":"\u5316\u5fb7\u53bf","center":"114.01029,41.904123","level":"district","districts":[]},{"citycode":"0474","adcode":"150902","name":"\u96c6\u5b81\u533a","center":"113.168973,41.000742","level":"district","districts":[]},{"citycode":"0474","adcode":"150926","name":"\u5bdf\u54c8\u5c14\u53f3\u7ffc\u524d\u65d7","center":"113.212409,40.783551","level":"district","districts":[]},{"citycode":"0474","adcode":"150924","name":"\u5174\u548c\u53bf","center":"113.834176,40.8723","level":"district","districts":[]},{"citycode":"0474","adcode":"150981","name":"\u4e30\u9547\u5e02","center":"113.109875,40.437022","level":"district","districts":[]},{"citycode":"0474","adcode":"150925","name":"\u51c9\u57ce\u53bf","center":"112.504243,40.532358","level":"district","districts":[]}]},{"citycode":"0483","adcode":"152900","name":"\u963f\u62c9\u5584\u76df","center":"105.729135,38.851554","level":"city","districts":[{"citycode":"0483","adcode":"152923","name":"\u989d\u6d4e\u7eb3\u65d7","center":"101.055861,41.953963","level":"district","districts":[]},{"citycode":"0483","adcode":"152922","name":"\u963f\u62c9\u5584\u53f3\u65d7","center":"101.666917,39.216185","level":"district","districts":[]},{"citycode":"0483","adcode":"152921","name":"\u963f\u62c9\u5584\u5de6\u65d7","center":"105.666208,38.833589","level":"district","districts":[]}]},{"citycode":"0477","adcode":"150600","name":"\u9102\u5c14\u591a\u65af\u5e02","center":"109.782473,39.608744","level":"city","districts":[{"citycode":"0477","adcode":"150625","name":"\u676d\u9526\u65d7","center":"108.736011,39.833243","level":"district","districts":[]},{"citycode":"0477","adcode":"150621","name":"\u8fbe\u62c9\u7279\u65d7","center":"110.034133,40.412766","level":"district","districts":[]},{"citycode":"0477","adcode":"150624","name":"\u9102\u6258\u514b\u65d7","center":"107.975948,39.089549","level":"district","districts":[]},{"citycode":"0477","adcode":"150623","name":"\u9102\u6258\u514b\u524d\u65d7","center":"107.47733,38.182402","level":"district","districts":[]},{"citycode":"0477","adcode":"150627","name":"\u4f0a\u91d1\u970d\u6d1b\u65d7","center":"109.747435,39.565064","level":"district","districts":[]},{"citycode":"0477","adcode":"150603","name":"\u5eb7\u5df4\u4ec0\u533a","center":"109.858586,39.60793","level":"district","districts":[]},{"citycode":"0477","adcode":"150602","name":"\u4e1c\u80dc\u533a","center":"109.963403,39.823066","level":"district","districts":[]},{"citycode":"0477","adcode":"150622","name":"\u51c6\u683c\u5c14\u65d7","center":"111.239436,39.864923","level":"district","districts":[]},{"citycode":"0477","adcode":"150626","name":"\u4e4c\u5ba1\u65d7","center":"108.819485,38.60453","level":"district","districts":[]}]},{"citycode":"0471","adcode":"150100","name":"\u547c\u548c\u6d69\u7279\u5e02","center":"111.748814,40.842127","level":"city","districts":[{"citycode":"0471","adcode":"150103","name":"\u56de\u6c11\u533a","center":"111.623485,40.808906","level":"district","districts":[]},{"citycode":"0471","adcode":"150125","name":"\u6b66\u5ddd\u53bf","center":"111.451226,41.096511","level":"district","districts":[]},{"citycode":"0471","adcode":"150122","name":"\u6258\u514b\u6258\u53bf","center":"111.193879,40.277703","level":"district","districts":[]},{"citycode":"0471","adcode":"150121","name":"\u571f\u9ed8\u7279\u5de6\u65d7","center":"111.16373,40.729044","level":"district","districts":[]},{"citycode":"0471","adcode":"150102","name":"\u65b0\u57ce\u533a","center":"111.665325,40.858271","level":"district","districts":[]},{"citycode":"0471","adcode":"150123","name":"\u548c\u6797\u683c\u5c14\u53bf","center":"111.821695,40.379226","level":"district","districts":[]},{"citycode":"0471","adcode":"150105","name":"\u8d5b\u7f55\u533a","center":"111.701166,40.792508","level":"district","districts":[]},{"citycode":"0471","adcode":"150104","name":"\u7389\u6cc9\u533a","center":"111.674157,40.753054","level":"district","districts":[]},{"citycode":"0471","adcode":"150124","name":"\u6e05\u6c34\u6cb3\u53bf","center":"111.647351,39.921224","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"230000","name":"\u9ed1\u9f99\u6c5f\u7701","center":"126.661998,45.742253","level":"province","districts":[{"citycode":"0457","adcode":"232700","name":"\u5927\u5174\u5b89\u5cad\u5730\u533a","center":"124.11786,50.41129","level":"city","districts":[{"citycode":"0457","adcode":"232721","name":"\u547c\u739b\u53bf","center":"126.651856,51.725924","level":"district","districts":[]},{"citycode":"0457","adcode":"232718","name":"\u52a0\u683c\u8fbe\u5947\u533a","center":"124.139742,50.408822","level":"district","districts":[]},{"citycode":"0457","adcode":"232701","name":"\u6f20\u6cb3\u5e02","center":"122.539313,52.972465","level":"district","districts":[]},{"citycode":"0457","adcode":"232722","name":"\u5854\u6cb3\u53bf","center":"124.709733,52.334512","level":"district","districts":[]}]},{"citycode":"0464","adcode":"230900","name":"\u4e03\u53f0\u6cb3\u5e02","center":"131.003015,45.771178","level":"city","districts":[{"citycode":"0464","adcode":"230921","name":"\u52c3\u5229\u53bf","center":"130.592009,45.755856","level":"district","districts":[]},{"citycode":"0464","adcode":"230903","name":"\u6843\u5c71\u533a","center":"131.020046,45.765733","level":"district","districts":[]},{"citycode":"0464","adcode":"230902","name":"\u65b0\u5174\u533a","center":"130.93226,45.816579","level":"district","districts":[]},{"citycode":"0464","adcode":"230904","name":"\u8304\u5b50\u6cb3\u533a","center":"131.067545,45.785755","level":"district","districts":[]}]},{"citycode":"0468","adcode":"230400","name":"\u9e64\u5c97\u5e02","center":"130.297687,47.350659","level":"city","districts":[{"citycode":"0468","adcode":"230422","name":"\u7ee5\u6ee8\u53bf","center":"131.852863,47.289522","level":"district","districts":[]},{"citycode":"0468","adcode":"230403","name":"\u5de5\u519c\u533a","center":"130.27472,47.318971","level":"district","districts":[]},{"citycode":"0468","adcode":"230407","name":"\u5174\u5c71\u533a","center":"130.303598,47.357698","level":"district","districts":[]},{"citycode":"0468","adcode":"230405","name":"\u5174\u5b89\u533a","center":"130.239289,47.252805","level":"district","districts":[]},{"citycode":"0468","adcode":"230402","name":"\u5411\u9633\u533a","center":"130.294331,47.342478","level":"district","districts":[]},{"citycode":"0468","adcode":"230404","name":"\u5357\u5c71\u533a","center":"130.285991,47.315121","level":"district","districts":[]},{"citycode":"0468","adcode":"230421","name":"\u841d\u5317\u53bf","center":"130.820566,47.578979","level":"district","districts":[]},{"citycode":"0468","adcode":"230406","name":"\u4e1c\u5c71\u533a","center":"130.317151,47.338571","level":"district","districts":[]}]},{"citycode":"0454","adcode":"230800","name":"\u4f73\u6728\u65af\u5e02","center":"130.318916,46.800002","level":"city","districts":[{"citycode":"0454","adcode":"230828","name":"\u6c64\u539f\u53bf","center":"129.904747,46.730623","level":"district","districts":[]},{"citycode":"0454","adcode":"230822","name":"\u6866\u5357\u53bf","center":"130.553472,46.239314","level":"district","districts":[]},{"citycode":"0454","adcode":"230882","name":"\u5bcc\u9526\u5e02","center":"132.037659,47.250144","level":"district","districts":[]},{"citycode":"0454","adcode":"230881","name":"\u540c\u6c5f\u5e02","center":"132.510113,47.642475","level":"district","districts":[]},{"citycode":"0454","adcode":"230883","name":"\u629a\u8fdc\u5e02","center":"134.30786,48.365027","level":"district","districts":[]},{"citycode":"0454","adcode":"230826","name":"\u6866\u5ddd\u53bf","center":"130.71908,47.023001","level":"district","districts":[]},{"citycode":"0454","adcode":"230804","name":"\u524d\u8fdb\u533a","center":"130.375254,46.81405","level":"district","districts":[]},{"citycode":"0454","adcode":"230805","name":"\u4e1c\u98ce\u533a","center":"130.403588,46.822609","level":"district","districts":[]},{"citycode":"0454","adcode":"230803","name":"\u5411\u9633\u533a","center":"130.365263,46.807808","level":"district","districts":[]},{"citycode":"0454","adcode":"230811","name":"\u90ca\u533a","center":"130.327182,46.809596","level":"district","districts":[]}]},{"citycode":"0469","adcode":"230500","name":"\u53cc\u9e2d\u5c71\u5e02","center":"131.141563,46.676157","level":"city","districts":[{"citycode":"0469","adcode":"230522","name":"\u53cb\u8c0a\u53bf","center":"131.807815,46.767299","level":"district","districts":[]},{"citycode":"0469","adcode":"230502","name":"\u5c16\u5c71\u533a","center":"131.158372,46.646083","level":"district","districts":[]},{"citycode":"0469","adcode":"230503","name":"\u5cad\u4e1c\u533a","center":"131.165067,46.592663","level":"district","districts":[]},{"citycode":"0469","adcode":"230506","name":"\u5b9d\u5c71\u533a","center":"131.401589,46.577167","level":"district","districts":[]},{"citycode":"0469","adcode":"230505","name":"\u56db\u65b9\u53f0\u533a","center":"131.337636,46.597143","level":"district","districts":[]},{"citycode":"0469","adcode":"230521","name":"\u96c6\u8d24\u53bf","center":"131.141452,46.728448","level":"district","districts":[]},{"citycode":"0469","adcode":"230524","name":"\u9976\u6cb3\u53bf","center":"134.014125,46.79726","level":"district","districts":[]},{"citycode":"0469","adcode":"230523","name":"\u5b9d\u6e05\u53bf","center":"132.196907,46.327335","level":"district","districts":[]}]},{"citycode":"0456","adcode":"231100","name":"\u9ed1\u6cb3\u5e02","center":"127.528226,50.244887","level":"city","districts":[{"citycode":"0456","adcode":"231181","name":"\u5317\u5b89\u5e02","center":"126.490989,48.241168","level":"district","districts":[]},{"citycode":"0456","adcode":"231123","name":"\u900a\u514b\u53bf","center":"128.478698,49.56429","level":"district","districts":[]},{"citycode":"0456","adcode":"231182","name":"\u4e94\u5927\u8fde\u6c60\u5e02","center":"126.205446,48.517342","level":"district","districts":[]},{"citycode":"0456","adcode":"231183","name":"\u5ae9\u6c5f\u5e02","center":"125.221192,49.185766","level":"district","districts":[]},{"citycode":"0456","adcode":"231124","name":"\u5b59\u5434\u53bf","center":"127.336163,49.425645","level":"district","districts":[]},{"citycode":"0456","adcode":"231102","name":"\u7231\u8f89\u533a","center":"127.500703,50.252361","level":"district","districts":[]}]},{"citycode":"0453","adcode":"231000","name":"\u7261\u4e39\u6c5f\u5e02","center":"129.632928,44.551486","level":"city","districts":[{"citycode":"0453","adcode":"231004","name":"\u7231\u6c11\u533a","center":"129.591227,44.595897","level":"district","districts":[]},{"citycode":"0453","adcode":"231002","name":"\u4e1c\u5b89\u533a","center":"129.626651,44.58125","level":"district","districts":[]},{"citycode":"0453","adcode":"231081","name":"\u7ee5\u82ac\u6cb3\u5e02","center":"131.151805,44.412487","level":"district","districts":[]},{"citycode":"0453","adcode":"231086","name":"\u4e1c\u5b81\u5e02","center":"131.124839,44.090361","level":"district","districts":[]},{"citycode":"0453","adcode":"231084","name":"\u5b81\u5b89\u5e02","center":"129.482505,44.340617","level":"district","districts":[]},{"citycode":"0453","adcode":"231005","name":"\u897f\u5b89\u533a","center":"129.616021,44.577611","level":"district","districts":[]},{"citycode":"0453","adcode":"231083","name":"\u6d77\u6797\u5e02","center":"129.380756,44.594017","level":"district","districts":[]},{"citycode":"0453","adcode":"231085","name":"\u7a46\u68f1\u5e02","center":"130.52446,44.918842","level":"district","districts":[]},{"citycode":"0453","adcode":"231003","name":"\u9633\u660e\u533a","center":"129.635836,44.595851","level":"district","districts":[]},{"citycode":"0453","adcode":"231025","name":"\u6797\u53e3\u53bf","center":"130.282286,45.279754","level":"district","districts":[]}]},{"citycode":"0458","adcode":"230700","name":"\u4f0a\u6625\u5e02","center":"128.840863,47.728332","level":"city","districts":[{"citycode":"0458","adcode":"230722","name":"\u5609\u836b\u53bf","center":"130.402406,48.888613","level":"district","districts":[]},{"citycode":"0458","adcode":"230724","name":"\u4e30\u6797\u53bf","center":"129.533661,48.290566","level":"district","districts":[]},{"citycode":"0458","adcode":"230723","name":"\u6c64\u65fa\u53bf","center":"129.570935,48.454639","level":"district","districts":[]},{"citycode":"0458","adcode":"230719","name":"\u53cb\u597d\u533a","center":"128.836341,47.840801","level":"district","districts":[]},{"citycode":"0458","adcode":"230751","name":"\u91d1\u6797\u533a","center":"129.428839,47.413019","level":"district","districts":[]},{"citycode":"0458","adcode":"230726","name":"\u5357\u5c94\u53bf","center":"129.283584,47.139009","level":"district","districts":[]},{"citycode":"0458","adcode":"230725","name":"\u5927\u7b90\u5c71\u53bf","center":"129.020519,47.028313","level":"district","districts":[]},{"citycode":"0458","adcode":"230781","name":"\u94c1\u529b\u5e02","center":"128.032554,46.986604","level":"district","districts":[]},{"citycode":"0458","adcode":"230718","name":"\u4e4c\u7fe0\u533a","center":"128.68003,47.729319","level":"district","districts":[]},{"citycode":"0458","adcode":"230717","name":"\u4f0a\u7f8e\u533a","center":"128.907156,47.728257","level":"district","districts":[]}]},{"citycode":"0467","adcode":"230300","name":"\u9e21\u897f\u5e02","center":"130.969385,45.295087","level":"city","districts":[{"citycode":"0467","adcode":"230304","name":"\u6ef4\u9053\u533a","center":"130.844193,45.349068","level":"district","districts":[]},{"citycode":"0467","adcode":"230307","name":"\u9ebb\u5c71\u533a","center":"130.477691,45.211863","level":"district","districts":[]},{"citycode":"0467","adcode":"230302","name":"\u9e21\u51a0\u533a","center":"130.981342,45.303892","level":"district","districts":[]},{"citycode":"0467","adcode":"230303","name":"\u6052\u5c71\u533a","center":"130.90466,45.21119","level":"district","districts":[]},{"citycode":"0467","adcode":"230305","name":"\u68a8\u6811\u533a","center":"130.69699,45.092046","level":"district","districts":[]},{"citycode":"0467","adcode":"230381","name":"\u864e\u6797\u5e02","center":"132.937002,45.763262","level":"district","districts":[]},{"citycode":"0467","adcode":"230382","name":"\u5bc6\u5c71\u5e02","center":"131.846824,45.529482","level":"district","districts":[]},{"citycode":"0467","adcode":"230306","name":"\u57ce\u5b50\u6cb3\u533a","center":"131.011504,45.338342","level":"district","districts":[]},{"citycode":"0467","adcode":"230321","name":"\u9e21\u4e1c\u53bf","center":"131.124083,45.260413","level":"district","districts":[]}]},{"citycode":"0452","adcode":"230200","name":"\u9f50\u9f50\u54c8\u5c14\u5e02","center":"123.918193,47.354892","level":"city","districts":[{"citycode":"0452","adcode":"230229","name":"\u514b\u5c71\u53bf","center":"125.875103,48.037748","level":"district","districts":[]},{"citycode":"0452","adcode":"230225","name":"\u7518\u5357\u53bf","center":"123.507935,47.921698","level":"district","districts":[]},{"citycode":"0452","adcode":"230230","name":"\u514b\u4e1c\u53bf","center":"126.249124,48.041562","level":"district","districts":[]},{"citycode":"0452","adcode":"230223","name":"\u4f9d\u5b89\u53bf","center":"125.306161,47.893442","level":"district","districts":[]},{"citycode":"0452","adcode":"230227","name":"\u5bcc\u88d5\u53bf","center":"124.474411,47.774038","level":"district","districts":[]},{"citycode":"0452","adcode":"230208","name":"\u6885\u91cc\u65af\u8fbe\u65a1\u5c14\u65cf\u533a","center":"123.752482,47.309755","level":"district","districts":[]},{"citycode":"0452","adcode":"230221","name":"\u9f99\u6c5f\u53bf","center":"123.204953,47.338512","level":"district","districts":[]},{"citycode":"0452","adcode":"230207","name":"\u78be\u5b50\u5c71\u533a","center":"122.887548,47.516614","level":"district","districts":[]},{"citycode":"0452","adcode":"230206","name":"\u5bcc\u62c9\u5c14\u57fa\u533a","center":"123.628926,47.20873","level":"district","districts":[]},{"citycode":"0452","adcode":"230202","name":"\u9f99\u6c99\u533a","center":"123.958447,47.317103","level":"district","districts":[]},{"citycode":"0452","adcode":"230205","name":"\u6602\u6602\u6eaa\u533a","center":"123.822137,47.154806","level":"district","districts":[]},{"citycode":"0452","adcode":"230224","name":"\u6cf0\u6765\u53bf","center":"123.416631,46.393694","level":"district","districts":[]},{"citycode":"0452","adcode":"230231","name":"\u62dc\u6cc9\u53bf","center":"126.09905,47.59586","level":"district","districts":[]},{"citycode":"0452","adcode":"230203","name":"\u5efa\u534e\u533a","center":"123.95555,47.354212","level":"district","districts":[]},{"citycode":"0452","adcode":"230204","name":"\u94c1\u950b\u533a","center":"123.978079,47.340719","level":"district","districts":[]},{"citycode":"0452","adcode":"230281","name":"\u8bb7\u6cb3\u5e02","center":"124.88293,48.466829","level":"district","districts":[]}]},{"citycode":"0455","adcode":"231200","name":"\u7ee5\u5316\u5e02","center":"126.968714,46.654147","level":"city","districts":[{"citycode":"0455","adcode":"231226","name":"\u7ee5\u68f1\u53bf","center":"127.114928,47.235814","level":"district","districts":[]},{"citycode":"0455","adcode":"231283","name":"\u6d77\u4f26\u5e02","center":"126.930191,47.450661","level":"district","districts":[]},{"citycode":"0455","adcode":"231224","name":"\u5e86\u5b89\u53bf","center":"127.505861,46.864084","level":"district","districts":[]},{"citycode":"0455","adcode":"231202","name":"\u5317\u6797\u533a","center":"126.984995,46.638114","level":"district","districts":[]},{"citycode":"0455","adcode":"231221","name":"\u671b\u594e\u53bf","center":"126.486333,46.832185","level":"district","districts":[]},{"citycode":"0455","adcode":"231223","name":"\u9752\u5188\u53bf","center":"126.099314,46.70398","level":"district","districts":[]},{"citycode":"0455","adcode":"231225","name":"\u660e\u6c34\u53bf","center":"125.90601,47.173649","level":"district","districts":[]},{"citycode":"0455","adcode":"231222","name":"\u5170\u897f\u53bf","center":"126.287734,46.252966","level":"district","districts":[]},{"citycode":"0455","adcode":"231282","name":"\u8087\u4e1c\u5e02","center":"125.962419,46.050664","level":"district","districts":[]},{"citycode":"0455","adcode":"231281","name":"\u5b89\u8fbe\u5e02","center":"125.307629,46.451882","level":"district","districts":[]}]},{"citycode":"0459","adcode":"230600","name":"\u5927\u5e86\u5e02","center":"125.104078,46.589498","level":"city","districts":[{"citycode":"0459","adcode":"230605","name":"\u7ea2\u5c97\u533a","center":"124.891041,46.398567","level":"district","districts":[]},{"citycode":"0459","adcode":"230606","name":"\u5927\u540c\u533a","center":"124.812221,46.039972","level":"district","districts":[]},{"citycode":"0459","adcode":"230623","name":"\u6797\u7538\u53bf","center":"124.863628,47.171677","level":"district","districts":[]},{"citycode":"0459","adcode":"230604","name":"\u8ba9\u80e1\u8def\u533a","center":"124.889858,46.642567","level":"district","districts":[]},{"citycode":"0459","adcode":"230624","name":"\u675c\u5c14\u4f2f\u7279\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","center":"124.442829,46.862348","level":"district","districts":[]},{"citycode":"0459","adcode":"230602","name":"\u8428\u5c14\u56fe\u533a","center":"125.135269,46.629281","level":"district","districts":[]},{"citycode":"0459","adcode":"230603","name":"\u9f99\u51e4\u533a","center":"125.135093,46.562369","level":"district","districts":[]},{"citycode":"0459","adcode":"230621","name":"\u8087\u5dde\u53bf","center":"125.268449,45.699543","level":"district","districts":[]},{"citycode":"0459","adcode":"230622","name":"\u8087\u6e90\u53bf","center":"125.078311,45.518982","level":"district","districts":[]}]},{"citycode":"0451","adcode":"230100","name":"\u54c8\u5c14\u6ee8\u5e02","center":"126.53505,45.802981","level":"city","districts":[{"citycode":"0451","adcode":"230126","name":"\u5df4\u5f66\u53bf","center":"127.403521,46.086182","level":"district","districts":[]},{"citycode":"0451","adcode":"230123","name":"\u4f9d\u5170\u53bf","center":"129.567777,46.325536","level":"district","districts":[]},{"citycode":"0451","adcode":"230128","name":"\u901a\u6cb3\u53bf","center":"128.74629,45.990214","level":"district","districts":[]},{"citycode":"0451","adcode":"230127","name":"\u6728\u5170\u53bf","center":"128.043194,45.950649","level":"district","districts":[]},{"citycode":"0451","adcode":"230124","name":"\u65b9\u6b63\u53bf","center":"128.829513,45.851673","level":"district","districts":[]},{"citycode":"0451","adcode":"230125","name":"\u5bbe\u53bf","center":"127.466372,45.746313","level":"district","districts":[]},{"citycode":"0451","adcode":"230129","name":"\u5ef6\u5bff\u53bf","center":"128.311071,45.445956","level":"district","districts":[]},{"citycode":"0451","adcode":"230183","name":"\u5c1a\u5fd7\u5e02","center":"128.009218,45.209199","level":"district","districts":[]},{"citycode":"0451","adcode":"230111","name":"\u547c\u5170\u533a","center":"126.587704,45.889557","level":"district","districts":[]},{"citycode":"0451","adcode":"230109","name":"\u677e\u5317\u533a","center":"126.516602,45.794991","level":"district","districts":[]},{"citycode":"0451","adcode":"230113","name":"\u53cc\u57ce\u533a","center":"126.31279,45.382873","level":"district","districts":[]},{"citycode":"0451","adcode":"230102","name":"\u9053\u91cc\u533a","center":"126.616912,45.755832","level":"district","districts":[]},{"citycode":"0451","adcode":"230108","name":"\u5e73\u623f\u533a","center":"126.63675,45.597529","level":"district","districts":[]},{"citycode":"0451","adcode":"230104","name":"\u9053\u5916\u533a","center":"126.649094,45.792351","level":"district","districts":[]},{"citycode":"0451","adcode":"230112","name":"\u963f\u57ce\u533a","center":"126.957984,45.548671","level":"district","districts":[]},{"citycode":"0451","adcode":"230110","name":"\u9999\u574a\u533a","center":"126.662959,45.707871","level":"district","districts":[]},{"citycode":"0451","adcode":"230103","name":"\u5357\u5c97\u533a","center":"126.66882,45.759967","level":"district","districts":[]},{"citycode":"0451","adcode":"230184","name":"\u4e94\u5e38\u5e02","center":"127.167501,44.932164","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"650000","name":"\u65b0\u7586\u7ef4\u543e\u5c14\u81ea\u6cbb\u533a","center":"87.628579,43.793301","level":"province","districts":[{"citycode":"1906","adcode":"659005","name":"\u5317\u5c6f\u5e02","center":"87.834419,47.326733","level":"city","districts":[{"citycode":"1906","adcode":"659005","name":"\u6d77\u5ddd\u9547","center":"87.518571,47.409865","level":"street","districts":[]},{"citycode":"1906","adcode":"659005","name":"\u4e30\u5e86\u9547","center":"87.927121,47.333864","level":"street","districts":[]},{"citycode":"1906","adcode":"659005","name":"\u53cc\u6e20\u9547","center":"88.122468,47.126579","level":"street","districts":[]},{"citycode":"1906","adcode":"659005","name":"\u5317\u5c6f\u9547","center":"87.871109,47.357426","level":"street","districts":[]}]},{"citycode":"1909","adcode":"659007","name":"\u53cc\u6cb3\u5e02","center":"82.35365587,44.84052409","level":"city","districts":[{"citycode":"1909","adcode":"659007","name":"\u5175\u56e2\u516b\u5341\u4e5d\u56e2","center":"82.455805,44.812134","level":"street","districts":[]},{"citycode":"1909","adcode":"659007","name":"\u535a\u6cb3\u9547","center":"82.158974,44.796350","level":"street","districts":[]},{"citycode":"1909","adcode":"659007","name":"\u53cc\u6865\u9547","center":"82.490803,44.746864","level":"street","districts":[]},{"citycode":"1909","adcode":"659007","name":"\u77f3\u5cea\u9547","center":"82.066675,45.040830","level":"street","districts":[]},{"citycode":"1909","adcode":"659007","name":"\u53cc\u4e50\u9547","center":"82.473143,44.826624","level":"street","districts":[]}]},{"citycode":"1996","adcode":"659006","name":"\u94c1\u95e8\u5173\u5e02","center":"85.670291,41.862997","level":"city","districts":[{"citycode":"1996","adcode":"659006","name":"\u7c73\u5170\u9547","center":"89.003715,39.332614","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u5357\u5c6f\u9547","center":"84.116298,37.768112","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u5929\u6e56\u9547","center":"86.524925,42.010663","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u5f00\u6cfd\u9547","center":"86.632672,42.311192","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u9ad8\u6865\u9547","center":"87.057052,42.213140","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u535a\u53e4\u5176\u9547","center":"85.584894,41.882542","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u53cc\u4e30\u9547","center":"85.635217,41.880304","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u6cb3\u7554\u9547","center":"86.605010,42.167593","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u91d1\u5c71\u9547","center":"85.322762,38.186220","level":"street","districts":[]}]},{"citycode":"0909","adcode":"652700","name":"\u535a\u5c14\u5854\u62c9\u8499\u53e4\u81ea\u6cbb\u5dde","center":"82.066363,44.906039","level":"city","districts":[{"citycode":"0909","adcode":"652723","name":"\u6e29\u6cc9\u53bf","center":"81.024827,44.968857","level":"district","districts":[]},{"citycode":"0909","adcode":"652702","name":"\u963f\u62c9\u5c71\u53e3\u5e02","center":"82.554609,45.173274","level":"district","districts":[]},{"citycode":"0909","adcode":"652701","name":"\u535a\u4e50\u5e02","center":"82.051433,44.853882","level":"district","districts":[]},{"citycode":"0909","adcode":"652722","name":"\u7cbe\u6cb3\u53bf","center":"82.890709,44.599202","level":"district","districts":[]}]},{"citycode":"1999","adcode":"659008","name":"\u53ef\u514b\u8fbe\u62c9\u5e02","center":"80.994153,43.940381","level":"city","districts":[{"citycode":"1999","adcode":"659008","name":"\u957f\u4e30\u9547","center":"80.990266,43.889725","level":"street","districts":[]},{"citycode":"1999","adcode":"659008","name":"\u91d1\u5c6f\u9547","center":"80.606773,43.765174","level":"street","districts":[]},{"citycode":"1999","adcode":"659008","name":"\u90fd\u62c9\u5854\u53e3\u5cb8","center":"80.661467,43.706479","level":"street","districts":[]},{"citycode":"1999","adcode":"659008","name":"\u6986\u6811\u5e84\u9547","center":"80.484243,43.931223","level":"street","districts":[]},{"citycode":"1999","adcode":"659008","name":"\u82c7\u6e56\u9547","center":"80.648370,44.180308","level":"street","districts":[]},{"citycode":"1999","adcode":"659008","name":"\u91d1\u6881\u9547","center":"81.021339,43.908278","level":"street","districts":[]}]},{"citycode":"0901","adcode":"654200","name":"\u5854\u57ce\u5730\u533a","center":"82.980316,46.745364","level":"city","districts":[{"citycode":"0901","adcode":"654224","name":"\u6258\u91cc\u53bf","center":"83.606372,45.948935","level":"district","districts":[]},{"citycode":"0901","adcode":"654226","name":"\u548c\u5e03\u514b\u8d5b\u5c14\u8499\u53e4\u81ea\u6cbb\u53bf","center":"85.728328,46.793235","level":"district","districts":[]},{"citycode":"0901","adcode":"654221","name":"\u989d\u654f\u53bf","center":"83.628303,46.524673","level":"district","districts":[]},{"citycode":"0901","adcode":"654202","name":"\u4e4c\u82cf\u5e02","center":"84.713762,44.418693","level":"district","districts":[]},{"citycode":"0901","adcode":"654203","name":"\u6c99\u6e7e\u5e02","center":"85.619483,44.326267","level":"district","districts":[]},{"citycode":"0901","adcode":"654225","name":"\u88d5\u6c11\u53bf","center":"82.982252,46.201049","level":"district","districts":[]},{"citycode":"0901","adcode":"654201","name":"\u5854\u57ce\u5e02","center":"82.986923,46.751669","level":"district","districts":[]}]},{"citycode":"1903","adcode":"659009","name":"\u6606\u7389\u5e02","center":"79.270193,37.215372","level":"city","districts":[{"citycode":"1903","adcode":"659009","name":"\u8001\u5175\u9547","center":"79.603916,37.366638","level":"street","districts":[]},{"citycode":"1903","adcode":"659009","name":"\u6606\u7267\u9547","center":"81.029494,36.315217","level":"street","districts":[]},{"citycode":"1903","adcode":"659009","name":"\u6606\u6cc9\u9547","center":"78.514768,37.566112","level":"street","districts":[]},{"citycode":"1903","adcode":"659009","name":"\u5175\u56e2\u4e8c\u4e8c\u56db\u56e2","center":"79.377194,37.416433","level":"street","districts":[]}]},{"citycode":"0903","adcode":"653200","name":"\u548c\u7530\u5730\u533a","center":"79.921646,37.114406","level":"city","districts":[{"citycode":"0903","adcode":"653226","name":"\u4e8e\u7530\u53bf","center":"81.677417,36.85708","level":"district","districts":[]},{"citycode":"0903","adcode":"653227","name":"\u6c11\u4e30\u53bf","center":"82.695946,37.064428","level":"district","districts":[]},{"citycode":"0903","adcode":"653201","name":"\u548c\u7530\u5e02","center":"79.912881,37.112246","level":"district","districts":[]},{"citycode":"0903","adcode":"653224","name":"\u6d1b\u6d66\u53bf","center":"80.179911,37.066226","level":"district","districts":[]},{"citycode":"0903","adcode":"653223","name":"\u76ae\u5c71\u53bf","center":"78.28548,37.578264","level":"district","districts":[]},{"citycode":"0903","adcode":"653222","name":"\u58a8\u7389\u53bf","center":"79.728434,37.277518","level":"district","districts":[]},{"citycode":"0903","adcode":"653225","name":"\u7b56\u52d2\u53bf","center":"80.801433,36.99785","level":"district","districts":[]},{"citycode":"0903","adcode":"653221","name":"\u548c\u7530\u53bf","center":"79.848009,37.248776","level":"district","districts":[]}]},{"citycode":"0906","adcode":"654300","name":"\u963f\u52d2\u6cf0\u5730\u533a","center":"88.141253,47.844924","level":"city","districts":[{"citycode":"0906","adcode":"654321","name":"\u5e03\u5c14\u6d25\u53bf","center":"86.875043,47.701892","level":"district","districts":[]},{"citycode":"0906","adcode":"654324","name":"\u54c8\u5df4\u6cb3\u53bf","center":"86.418621,48.060846","level":"district","districts":[]},{"citycode":"0906","adcode":"654322","name":"\u5bcc\u8574\u53bf","center":"89.525463,46.994046","level":"district","districts":[]},{"citycode":"0906","adcode":"654326","name":"\u5409\u6728\u4e43\u53bf","center":"85.874096,47.443101","level":"district","districts":[]},{"citycode":"0906","adcode":"654325","name":"\u9752\u6cb3\u53bf","center":"90.375159,46.678532","level":"district","districts":[]},{"citycode":"0906","adcode":"654323","name":"\u798f\u6d77\u53bf","center":"87.486703,47.111918","level":"district","districts":[]},{"citycode":"0906","adcode":"654301","name":"\u963f\u52d2\u6cf0\u5e02","center":"88.131842,47.827308","level":"district","districts":[]}]},{"citycode":"0993","adcode":"659001","name":"\u77f3\u6cb3\u5b50\u5e02","center":"86.080397,44.305368","level":"city","districts":[{"citycode":"0993","adcode":"659001","name":"\u5175\u56e2\u4e00\u4e94\u4e8c\u56e2","center":"86.070393,44.282700","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u5411\u9633\u8857\u9053","center":"86.039719,44.342873","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u7ea2\u5c71\u8857\u9053","center":"86.048043,44.268209","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u5175\u56e2\u4e00\u56db\u56db\u56e2","center":"85.912346,44.252475","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u4e1c\u57ce\u8857\u9053","center":"86.068708,44.287316","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u77f3\u6cb3\u5b50\u9547","center":"86.102202,44.135229","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u8001\u8857\u8857\u9053","center":"85.990921,44.349559","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u65b0\u57ce\u8857\u9053","center":"85.982288,44.289311","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u5317\u6cc9\u9547","center":"86.098308,44.434587","level":"street","districts":[]}]},{"citycode":"0994","adcode":"652300","name":"\u660c\u5409\u56de\u65cf\u81ea\u6cbb\u5dde","center":"87.308995,44.011044","level":"city","districts":[{"citycode":"0994","adcode":"652325","name":"\u5947\u53f0\u53bf","center":"89.593879,44.022001","level":"district","districts":[]},{"citycode":"0994","adcode":"652324","name":"\u739b\u7eb3\u65af\u53bf","center":"86.20488,44.284601","level":"district","districts":[]},{"citycode":"0994","adcode":"652323","name":"\u547c\u56fe\u58c1\u53bf","center":"86.871532,44.179362","level":"district","districts":[]},{"citycode":"0994","adcode":"652328","name":"\u6728\u5792\u54c8\u8428\u514b\u81ea\u6cbb\u53bf","center":"90.286013,43.834631","level":"district","districts":[]},{"citycode":"0994","adcode":"652302","name":"\u961c\u5eb7\u5e02","center":"87.953826,44.164525","level":"district","districts":[]},{"citycode":"0994","adcode":"652327","name":"\u5409\u6728\u8428\u5c14\u53bf","center":"89.179698,44.000404","level":"district","districts":[]},{"citycode":"0994","adcode":"652301","name":"\u660c\u5409\u5e02","center":"87.267432,44.014468","level":"district","districts":[]}]},{"citycode":"0996","adcode":"652800","name":"\u5df4\u97f3\u90ed\u695e\u8499\u53e4\u81ea\u6cbb\u5dde","center":"86.145298,41.764115","level":"city","districts":[{"citycode":"0996","adcode":"652801","name":"\u5e93\u5c14\u52d2\u5e02","center":"86.174633,41.725891","level":"district","districts":[]},{"citycode":"0996","adcode":"652822","name":"\u8f6e\u53f0\u53bf","center":"84.251508,41.778043","level":"district","districts":[]},{"citycode":"0996","adcode":"652823","name":"\u5c09\u7281\u53bf","center":"86.261613,41.343871","level":"district","districts":[]},{"citycode":"0996","adcode":"652825","name":"\u4e14\u672b\u53bf","center":"85.529619,38.145749","level":"district","districts":[]},{"citycode":"0996","adcode":"652827","name":"\u548c\u9759\u53bf","center":"86.384065,42.323625","level":"district","districts":[]},{"citycode":"0996","adcode":"652826","name":"\u7109\u8006\u56de\u65cf\u81ea\u6cbb\u53bf","center":"86.57434,42.059509","level":"district","districts":[]},{"citycode":"0996","adcode":"652824","name":"\u82e5\u7f8c\u53bf","center":"88.167226,39.022626","level":"district","districts":[]},{"citycode":"0996","adcode":"652829","name":"\u535a\u6e56\u53bf","center":"86.632116,41.980745","level":"district","districts":[]},{"citycode":"0996","adcode":"652828","name":"\u548c\u7855\u53bf","center":"86.877688,42.28361","level":"district","districts":[]}]},{"citycode":"0999","adcode":"654000","name":"\u4f0a\u7281\u54c8\u8428\u514b\u81ea\u6cbb\u5dde","center":"81.323691,43.917106","level":"city","districts":[{"citycode":"0999","adcode":"654021","name":"\u4f0a\u5b81\u53bf","center":"81.52745,43.977119","level":"district","districts":[]},{"citycode":"0999","adcode":"654024","name":"\u5de9\u7559\u53bf","center":"82.231219,43.48313","level":"district","districts":[]},{"citycode":"0999","adcode":"654027","name":"\u7279\u514b\u65af\u53bf","center":"81.835732,43.218435","level":"district","districts":[]},{"citycode":"0999","adcode":"654026","name":"\u662d\u82cf\u53bf","center":"81.130974,43.157293","level":"district","districts":[]},{"citycode":"0999","adcode":"654023","name":"\u970d\u57ce\u53bf","center":"80.878845,44.056329","level":"district","districts":[]},{"citycode":"0999","adcode":"654022","name":"\u5bdf\u5e03\u67e5\u5c14\u9521\u4f2f\u81ea\u6cbb\u53bf","center":"81.151337,43.840726","level":"district","districts":[]},{"citycode":"0999","adcode":"654004","name":"\u970d\u5c14\u679c\u65af\u5e02","center":"80.414614,44.218381","level":"district","districts":[]},{"citycode":"0999","adcode":"654002","name":"\u4f0a\u5b81\u5e02","center":"81.277715,43.908021","level":"district","districts":[]},{"citycode":"0999","adcode":"654003","name":"\u594e\u5c6f\u5e02","center":"84.903216,44.426452","level":"district","districts":[]},{"citycode":"0999","adcode":"654028","name":"\u5c3c\u52d2\u514b\u53bf","center":"82.511884,43.798627","level":"district","districts":[]},{"citycode":"0999","adcode":"654025","name":"\u65b0\u6e90\u53bf","center":"83.233002,43.434803","level":"district","districts":[]}]},{"citycode":"1997","adcode":"659002","name":"\u963f\u62c9\u5c14\u5e02","center":"81.280532,40.547205","level":"city","districts":[{"citycode":"1997","adcode":"659002","name":"\u739b\u6ee9\u9547","center":"80.654296,40.656858","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u6c38\u5b81\u9547","center":"79.695912,41.549386","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u82b1\u6865\u9547","center":"81.561898,40.627686","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u6c99\u6cb3\u9547","center":"80.734788,41.289273","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u6258\u5580\u4f9d\u4e61","center":"81.354140,40.581819","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u9752\u677e\u8def\u8857\u9053","center":"81.254474,40.542004","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u5854\u95e8\u9547","center":"80.799573,40.597311","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u5357\u53e3\u8857\u9053","center":"81.298804,40.515367","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u91d1\u6768\u9547","center":"81.873439,40.928322","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u91d1\u94f6\u5ddd\u9547","center":"80.086552,40.691135","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u65b0\u4e95\u5b50\u9547","center":"80.027429,40.565638","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u5175\u56e2\u519c\u4e00\u5e08\u6c99\u4e95\u5b50\u6c34\u5229\u7ba1\u7406\u5904","center":"79.726734,40.436977","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u7518\u6cc9\u9547","center":"79.814651,40.477280","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u5854\u5357\u9547","center":"81.360828,40.548449","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u91d1\u94f6\u5ddd\u8def\u8857\u9053","center":"81.262521,40.536818","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u660c\u5b89\u9547","center":"81.281049,40.575570","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u65b0\u5f00\u5cad\u9547","center":"80.616820,40.429603","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u5e78\u798f\u9547","center":"81.665359,40.707751","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u5e78\u798f\u8def\u8857\u9053","center":"81.270919,40.577037","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u53cc\u57ce\u9547","center":"80.403007,41.029144","level":"street","districts":[]}]},{"citycode":"0998","adcode":"653100","name":"\u5580\u4ec0\u5730\u533a","center":"75.990618,39.470215","level":"city","districts":[{"citycode":"0998","adcode":"653129","name":"\u4f3d\u5e08\u53bf","center":"76.723719,39.488181","level":"district","districts":[]},{"citycode":"0998","adcode":"653127","name":"\u9ea6\u76d6\u63d0\u53bf","center":"77.609099,38.898986","level":"district","districts":[]},{"citycode":"0998","adcode":"653125","name":"\u838e\u8f66\u53bf","center":"77.223197,38.390881","level":"district","districts":[]},{"citycode":"0998","adcode":"653126","name":"\u53f6\u57ce\u53bf","center":"77.413669,37.882994","level":"district","districts":[]},{"citycode":"0998","adcode":"653131","name":"\u5854\u4ec0\u5e93\u5c14\u5e72\u5854\u5409\u514b\u81ea\u6cbb\u53bf","center":"75.229889,37.772094","level":"district","districts":[]},{"citycode":"0998","adcode":"653124","name":"\u6cfd\u666e\u53bf","center":"77.260375,38.184639","level":"district","districts":[]},{"citycode":"0998","adcode":"653130","name":"\u5df4\u695a\u53bf","center":"78.54799,39.79923","level":"district","districts":[]},{"citycode":"0998","adcode":"653123","name":"\u82f1\u5409\u6c99\u53bf","center":"76.175729,38.930381","level":"district","districts":[]},{"citycode":"0998","adcode":"653128","name":"\u5cb3\u666e\u6e56\u53bf","center":"76.821269,39.219857","level":"district","districts":[]},{"citycode":"0998","adcode":"653121","name":"\u758f\u9644\u53bf","center":"75.862839,39.375052","level":"district","districts":[]},{"citycode":"0998","adcode":"653101","name":"\u5580\u4ec0\u5e02","center":"75.993936,39.46823","level":"district","districts":[]},{"citycode":"0998","adcode":"653122","name":"\u758f\u52d2\u53bf","center":"76.047169,39.401173","level":"district","districts":[]}]},{"citycode":"0908","adcode":"653000","name":"\u514b\u5b5c\u52d2\u82cf\u67ef\u5c14\u514b\u5b5c\u81ea\u6cbb\u5dde","center":"76.168157,39.716236","level":"city","districts":[{"citycode":"0908","adcode":"653001","name":"\u963f\u56fe\u4ec0\u5e02","center":"76.084541,39.667719","level":"district","districts":[]},{"citycode":"0908","adcode":"653024","name":"\u4e4c\u6070\u53bf","center":"75.259228,39.7205","level":"district","districts":[]},{"citycode":"0908","adcode":"653023","name":"\u963f\u5408\u5947\u53bf","center":"78.402073,40.937581","level":"district","districts":[]},{"citycode":"0908","adcode":"653022","name":"\u963f\u514b\u9676\u53bf","center":"75.955053,39.147592","level":"district","districts":[]}]},{"citycode":"0990","adcode":"650200","name":"\u514b\u62c9\u739b\u4f9d\u5e02","center":"84.889239,45.577712","level":"city","districts":[{"citycode":"0990","adcode":"650205","name":"\u4e4c\u5c14\u79be\u533a","center":"85.687497,46.093451","level":"district","districts":[]},{"citycode":"0990","adcode":"650202","name":"\u72ec\u5c71\u5b50\u533a","center":"84.886973,44.328096","level":"district","districts":[]},{"citycode":"0990","adcode":"650204","name":"\u767d\u78b1\u6ee9\u533a","center":"85.119047,45.685416","level":"district","districts":[]},{"citycode":"0990","adcode":"650203","name":"\u514b\u62c9\u739b\u4f9d\u533a","center":"84.867862,45.602347","level":"district","districts":[]}]},{"citycode":"0995","adcode":"650400","name":"\u5410\u9c81\u756a\u5e02","center":"89.250261,42.972736","level":"city","districts":[{"citycode":"0995","adcode":"650402","name":"\u9ad8\u660c\u533a","center":"89.185891,42.942728","level":"district","districts":[]},{"citycode":"0995","adcode":"650421","name":"\u912f\u5584\u53bf","center":"90.242843,42.900575","level":"district","districts":[]},{"citycode":"0995","adcode":"650422","name":"\u6258\u514b\u900a\u53bf","center":"88.643739,42.802585","level":"district","districts":[]}]},{"citycode":"0902","adcode":"650500","name":"\u54c8\u5bc6\u5e02","center":"93.515053,42.819346","level":"city","districts":[{"citycode":"0902","adcode":"650522","name":"\u4f0a\u543e\u53bf","center":"94.697074,43.254978","level":"district","districts":[]},{"citycode":"0902","adcode":"650521","name":"\u5df4\u91cc\u5764\u54c8\u8428\u514b\u81ea\u6cbb\u53bf","center":"93.016563,43.598756","level":"district","districts":[]},{"citycode":"0902","adcode":"650502","name":"\u4f0a\u5dde\u533a","center":"93.425934,42.835492","level":"district","districts":[]}]},{"citycode":"2940","adcode":"659011","name":"\u65b0\u661f\u5e02","center":"93.74831,42.797043","level":"city","districts":[{"citycode":"2940","adcode":"659011","name":"\u5175\u56e2\u7ea2\u661f\u56db\u573a","center":"94.068557,42.529865","level":"street","districts":[]},{"citycode":"2940","adcode":"659011","name":"\u5175\u56e2\u9ec4\u7530\u519c\u573a","center":"93.719461,42.567696","level":"street","districts":[]},{"citycode":"2940","adcode":"659011","name":"\u5175\u56e2\u7ea2\u661f\u4e00\u573a","center":"93.645240,42.686620","level":"street","districts":[]}]},{"citycode":"1998","adcode":"659003","name":"\u56fe\u6728\u8212\u514b\u5e02","center":"79.074965,39.867776","level":"city","districts":[{"citycode":"1998","adcode":"659003","name":"\u6d77\u5b89\u9547","center":"78.756041,39.822379","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u5510\u9a7f\u9547","center":"79.290232,39.988845","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u524d\u6d77\u8857\u9053","center":"79.077771,39.855038","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u5580\u62c9\u62dc\u52d2\u9547","center":"79.011211,39.852615","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u9f50\u5e72\u5374\u52d2\u8857\u9053","center":"79.090585,39.875314","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u91d1\u80e1\u6768\u9547","center":"79.321433,40.031839","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u590f\u6cb3\u9547","center":"79.231481,39.954869","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u6c38\u5b89\u9547","center":"79.192620,39.916764","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u6c38\u5b89\u575d\u8857\u9053","center":"79.025712,39.850697","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u8349\u6e56\u9547","center":"75.990801,39.261822","level":"street","districts":[]}]},{"citycode":"0997","adcode":"652900","name":"\u963f\u514b\u82cf\u5730\u533a","center":"80.265068,41.170712","level":"city","districts":[{"citycode":"0997","adcode":"652926","name":"\u62dc\u57ce\u53bf","center":"81.851289,41.795289","level":"district","districts":[]},{"citycode":"0997","adcode":"652925","name":"\u65b0\u548c\u53bf","center":"82.620371,41.552097","level":"district","districts":[]},{"citycode":"0997","adcode":"652902","name":"\u5e93\u8f66\u5e02","center":"82.998544,41.719073","level":"district","districts":[]},{"citycode":"0997","adcode":"652924","name":"\u6c99\u96c5\u53bf","center":"82.781774,41.221413","level":"district","districts":[]},{"citycode":"0997","adcode":"652901","name":"\u963f\u514b\u82cf\u5e02","center":"80.263387,41.16755","level":"district","districts":[]},{"citycode":"0997","adcode":"652928","name":"\u963f\u74e6\u63d0\u53bf","center":"80.375053,40.643647","level":"district","districts":[]},{"citycode":"0997","adcode":"652929","name":"\u67ef\u576a\u53bf","center":"79.054019,40.501645","level":"district","districts":[]},{"citycode":"0997","adcode":"652922","name":"\u6e29\u5bbf\u53bf","center":"80.231563,41.273561","level":"district","districts":[]},{"citycode":"0997","adcode":"652927","name":"\u4e4c\u4ec0\u53bf","center":"79.22118,41.222706","level":"district","districts":[]}]},{"citycode":"0991","adcode":"650100","name":"\u4e4c\u9c81\u6728\u9f50\u5e02","center":"87.616824,43.825377","level":"city","districts":[{"citycode":"0991","adcode":"650107","name":"\u8fbe\u5742\u57ce\u533a","center":"88.311099,43.363668","level":"district","districts":[]},{"citycode":"0991","adcode":"650106","name":"\u5934\u5c6f\u6cb3\u533a","center":"87.42582303,43.87605225","level":"district","districts":[]},{"citycode":"0991","adcode":"650104","name":"\u65b0\u5e02\u533a","center":"87.592684,43.893023","level":"district","districts":[]},{"citycode":"0991","adcode":"650105","name":"\u6c34\u78e8\u6c9f\u533a","center":"87.64208,43.832714","level":"district","districts":[]},{"citycode":"0991","adcode":"650109","name":"\u7c73\u4e1c\u533a","center":"87.655122,43.97444","level":"district","districts":[]},{"citycode":"0991","adcode":"650102","name":"\u5929\u5c71\u533a","center":"87.631986,43.794312","level":"district","districts":[]},{"citycode":"0991","adcode":"650103","name":"\u6c99\u4f9d\u5df4\u514b\u533a","center":"87.598043,43.800994","level":"district","districts":[]},{"citycode":"0991","adcode":"650121","name":"\u4e4c\u9c81\u6728\u9f50\u53bf","center":"87.464257,43.509016","level":"district","districts":[]}]},{"citycode":"0992","adcode":"659010","name":"\u80e1\u6768\u6cb3\u5e02","center":"84.827592,44.692894","level":"city","districts":[{"citycode":"0992","adcode":"659010","name":"\u5175\u56e2\u4e00\u4e8c\u4e5d\u56e2","center":"84.733352,44.711517","level":"street","districts":[]},{"citycode":"0992","adcode":"659010","name":"\u5175\u56e2\u4e00\u4e09\u96f6\u56e2","center":"84.642314,44.754040","level":"street","districts":[]}]},{"citycode":"1994","adcode":"659004","name":"\u4e94\u5bb6\u6e20\u5e02","center":"87.542852,44.166489","level":"city","districts":[{"citycode":"1994","adcode":"659004","name":"\u68a7\u6850\u9547","center":"87.592476,44.269442","level":"street","districts":[]},{"citycode":"1994","adcode":"659004","name":"\u4eba\u6c11\u8def\u8857\u9053","center":"87.572823,44.182157","level":"street","districts":[]},{"citycode":"1994","adcode":"659004","name":"\u5175\u56e2\u4e00\u96f6\u4e00\u56e2","center":"87.556234,44.175160","level":"street","districts":[]},{"citycode":"1994","adcode":"659004","name":"\u8521\u5bb6\u6e56\u9547","center":"87.407474,44.531659","level":"street","districts":[]},{"citycode":"1994","adcode":"659004","name":"\u9752\u6e56\u8def\u8857\u9053","center":"87.524481,44.176392","level":"street","districts":[]},{"citycode":"1994","adcode":"659004","name":"\u519b\u57a6\u8def\u8857\u9053","center":"87.508160,44.188534","level":"street","districts":[]}]},{"citycode":"2941","adcode":"659012","name":"\u767d\u6768\u5e02","center":"82.896936,46.727959","level":"city","districts":[{"citycode":"2941","adcode":"659012","name":"\u5175\u56e2\u519c\u4e5d\u5e08\u4e00\u516d\u56db\u56e2","center":"83.005882,47.009769","level":"street","districts":[]},{"citycode":"2941","adcode":"659012","name":"\u5175\u56e2\u519c\u4e5d\u5e08\u4e00\u516d\u4e09\u56e2","center":"82.819037,46.690412","level":"street","districts":[]},{"citycode":"2941","adcode":"659012","name":"\u5175\u56e2\u519c\u4e5d\u5e08\u4e00\u516d\u4e00\u56e2","center":"82.345391,45.912466","level":"street","districts":[]},{"citycode":"2941","adcode":"659012","name":"\u5175\u56e2\u519c\u4e5d\u5e08\u4e00\u516d\u4e94\u56e2","center":"84.347734,46.825079","level":"street","districts":[]}]}]},{"citycode":[],"adcode":"420000","name":"\u6e56\u5317\u7701","center":"114.341552,30.546222","level":"province","districts":[{"citycode":"0710","adcode":"420600","name":"\u8944\u9633\u5e02","center":"112.121743,32.010161","level":"city","districts":[{"citycode":"0710","adcode":"420625","name":"\u8c37\u57ce\u53bf","center":"111.653077,32.26339","level":"district","districts":[]},{"citycode":"0710","adcode":"420626","name":"\u4fdd\u5eb7\u53bf","center":"111.261308,31.87831","level":"district","districts":[]},{"citycode":"0710","adcode":"420683","name":"\u67a3\u9633\u5e02","center":"112.772723,32.128968","level":"district","districts":[]},{"citycode":"0710","adcode":"420624","name":"\u5357\u6f33\u53bf","center":"111.838997,31.774649","level":"district","districts":[]},{"citycode":"0710","adcode":"420602","name":"\u8944\u57ce\u533a","center":"112.134025,32.009932","level":"district","districts":[]},{"citycode":"0710","adcode":"420682","name":"\u8001\u6cb3\u53e3\u5e02","center":"111.683861,32.359068","level":"district","districts":[]},{"citycode":"0710","adcode":"420606","name":"\u6a0a\u57ce\u533a","center":"112.135241,32.045065","level":"district","districts":[]},{"citycode":"0710","adcode":"420607","name":"\u8944\u5dde\u533a","center":"112.211365,32.088651","level":"district","districts":[]},{"citycode":"0710","adcode":"420684","name":"\u5b9c\u57ce\u5e02","center":"112.256486,31.720278","level":"district","districts":[]}]},{"citycode":"0719","adcode":"420300","name":"\u5341\u5830\u5e02","center":"110.798921,32.629057","level":"city","districts":[{"citycode":"0719","adcode":"420304","name":"\u90e7\u9633\u533a","center":"110.812101,32.834847","level":"district","districts":[]},{"citycode":"0719","adcode":"420303","name":"\u5f20\u6e7e\u533a","center":"110.769132,32.652297","level":"district","districts":[]},{"citycode":"0719","adcode":"420302","name":"\u8305\u7bad\u533a","center":"110.813478,32.591847","level":"district","districts":[]},{"citycode":"0719","adcode":"420324","name":"\u7af9\u6eaa\u53bf","center":"109.715322,32.318257","level":"district","districts":[]},{"citycode":"0719","adcode":"420325","name":"\u623f\u53bf","center":"110.726754,32.04017","level":"district","districts":[]},{"citycode":"0719","adcode":"420323","name":"\u7af9\u5c71\u53bf","center":"110.229696,32.225039","level":"district","districts":[]},{"citycode":"0719","adcode":"420381","name":"\u4e39\u6c5f\u53e3\u5e02","center":"111.513318,32.540287","level":"district","districts":[]},{"citycode":"0719","adcode":"420322","name":"\u90e7\u897f\u53bf","center":"110.426005,32.993095","level":"district","districts":[]}]},{"citycode":"0717","adcode":"420500","name":"\u5b9c\u660c\u5e02","center":"111.286962,30.69217","level":"city","districts":[{"citycode":"0717","adcode":"420526","name":"\u5174\u5c71\u53bf","center":"110.746831,31.348065","level":"district","districts":[]},{"citycode":"0717","adcode":"420527","name":"\u79ed\u5f52\u53bf","center":"110.97793,30.825882","level":"district","districts":[]},{"citycode":"0717","adcode":"420504","name":"\u70b9\u519b\u533a","center":"111.268338,30.69343","level":"district","districts":[]},{"citycode":"0717","adcode":"420582","name":"\u5f53\u9633\u5e02","center":"111.78836,30.820893","level":"district","districts":[]},{"citycode":"0717","adcode":"420581","name":"\u5b9c\u90fd\u5e02","center":"111.450128,30.378444","level":"district","districts":[]},{"citycode":"0717","adcode":"420525","name":"\u8fdc\u5b89\u53bf","center":"111.640329,31.060904","level":"district","districts":[]},{"citycode":"0717","adcode":"420529","name":"\u4e94\u5cf0\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","center":"111.07374,30.156741","level":"district","districts":[]},{"citycode":"0717","adcode":"420502","name":"\u897f\u9675\u533a","center":"111.285696,30.710765","level":"district","districts":[]},{"citycode":"0717","adcode":"420506","name":"\u5937\u9675\u533a","center":"111.326371,30.769875","level":"district","districts":[]},{"citycode":"0717","adcode":"420583","name":"\u679d\u6c5f\u5e02","center":"111.760616,30.425758","level":"district","districts":[]},{"citycode":"0717","adcode":"420505","name":"\u7307\u4ead\u533a","center":"111.434378,30.531133","level":"district","districts":[]},{"citycode":"0717","adcode":"420503","name":"\u4f0d\u5bb6\u5c97\u533a","center":"111.360882,30.644048","level":"district","districts":[]},{"citycode":"0717","adcode":"420528","name":"\u957f\u9633\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","center":"111.20697,30.473038","level":"district","districts":[]}]},{"citycode":"027","adcode":"420100","name":"\u6b66\u6c49\u5e02","center":"114.304569,30.593354","level":"city","districts":[{"citycode":"027","adcode":"420117","name":"\u65b0\u6d32\u533a","center":"114.801284,30.841304","level":"district","districts":[]},{"citycode":"027","adcode":"420113","name":"\u6c49\u5357\u533a","center":"114.084582,30.308776","level":"district","districts":[]},{"citycode":"027","adcode":"420114","name":"\u8521\u7538\u533a","center":"114.087279,30.536395","level":"district","districts":[]},{"citycode":"027","adcode":"420115","name":"\u6c5f\u590f\u533a","center":"114.320884,30.37558","level":"district","districts":[]},{"citycode":"027","adcode":"420106","name":"\u6b66\u660c\u533a","center":"114.316464,30.55418","level":"district","districts":[]},{"citycode":"027","adcode":"420112","name":"\u4e1c\u897f\u6e56\u533a","center":"114.136295,30.620079","level":"district","districts":[]},{"citycode":"027","adcode":"420104","name":"\u785a\u53e3\u533a","center":"114.214746,30.582559","level":"district","districts":[]},{"citycode":"027","adcode":"420116","name":"\u9ec4\u9642\u533a","center":"114.375698,30.882305","level":"district","districts":[]},{"citycode":"027","adcode":"420103","name":"\u6c5f\u6c49\u533a","center":"114.270763,30.601129","level":"district","districts":[]},{"citycode":"027","adcode":"420102","name":"\u6c5f\u5cb8\u533a","center":"114.282987,30.633093","level":"district","districts":[]},{"citycode":"027","adcode":"420107","name":"\u9752\u5c71\u533a","center":"114.385424,30.639842","level":"district","districts":[]},{"citycode":"027","adcode":"420111","name":"\u6d2a\u5c71\u533a","center":"114.342664,30.500642","level":"district","districts":[]},{"citycode":"027","adcode":"420105","name":"\u6c49\u9633\u533a","center":"114.21859,30.554287","level":"district","districts":[]}]},{"citycode":"0713","adcode":"421100","name":"\u9ec4\u5188\u5e02","center":"114.872425,30.453722","level":"city","districts":[{"citycode":"0713","adcode":"421181","name":"\u9ebb\u57ce\u5e02","center":"115.008011,31.172917","level":"district","districts":[]},{"citycode":"0713","adcode":"421102","name":"\u9ec4\u5dde\u533a","center":"114.880104,30.434354","level":"district","districts":[]},{"citycode":"0713","adcode":"421121","name":"\u56e2\u98ce\u53bf","center":"114.872364,30.643225","level":"district","districts":[]},{"citycode":"0713","adcode":"421127","name":"\u9ec4\u6885\u53bf","center":"115.944219,30.070453","level":"district","districts":[]},{"citycode":"0713","adcode":"421122","name":"\u7ea2\u5b89\u53bf","center":"114.618134,31.288167","level":"district","districts":[]},{"citycode":"0713","adcode":"421182","name":"\u6b66\u7a74\u5e02","center":"115.595451,29.869602","level":"district","districts":[]},{"citycode":"0713","adcode":"421126","name":"\u8572\u6625\u53bf","center":"115.436423,30.226146","level":"district","districts":[]},{"citycode":"0713","adcode":"421125","name":"\u6d60\u6c34\u53bf","center":"115.265155,30.452212","level":"district","districts":[]},{"citycode":"0713","adcode":"421123","name":"\u7f57\u7530\u53bf","center":"115.399149,30.783047","level":"district","districts":[]},{"citycode":"0713","adcode":"421124","name":"\u82f1\u5c71\u53bf","center":"115.680953,30.734989","level":"district","districts":[]}]},{"citycode":"1728","adcode":"429006","name":"\u5929\u95e8\u5e02","center":"113.166545,30.663706","level":"city","districts":[{"citycode":"1728","adcode":"429006","name":"\u80e1\u5e02\u9547","center":"113.422187,30.802027","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u591a\u7965\u9547","center":"113.357891,30.423413","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u9ec4\u6f6d\u9547","center":"113.038506,30.692160","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u6c89\u6e56\u7ba1\u59d4\u4f1a","center":"113.336326,30.513845","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u6a2a\u6797\u9547","center":"113.214590,30.564294","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u5e72\u9a7f\u9547","center":"113.450967,30.502984","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u9a6c\u6e7e\u9547","center":"113.312283,30.599323","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u848b\u6e56\u519c\u573a","center":"112.787693,30.632046","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u5c0f\u677f\u9547","center":"113.263987,30.615139","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u5cb3\u53e3\u9547","center":"113.105000,30.586764","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u848b\u573a\u9547","center":"112.927266,30.646031","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u77f3\u5bb6\u6cb3\u9547","center":"113.063918,30.763540","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u5f6d\u5e02\u9547","center":"113.157308,30.431522","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u4e5d\u771f\u9547","center":"113.244103,30.788105","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u4f5b\u5b50\u5c71\u9547","center":"113.061395,30.699043","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u7adf\u9675\u8857\u9053","center":"113.182938,30.706618","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u4faf\u53e3\u8857\u9053","center":"113.133899,30.652014","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u9ebb\u6d0b\u9547","center":"113.309397,30.524900","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u6768\u6797\u8857\u9053","center":"113.265467,30.685636","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u6c6a\u573a\u9547","center":"112.978692,30.638003","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u767d\u8305\u6e56\u519c\u573a","center":"113.063412,30.586804","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u51c0\u6f6d\u4e61","center":"113.450669,30.646405","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u7682\u5e02\u9547","center":"113.219641,30.800675","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u5362\u5e02\u9547","center":"113.396655,30.659558","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u62d6\u5e02\u9547","center":"112.841174,30.729303","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u6e14\u85aa\u9547","center":"112.927266,30.646031","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u5f20\u6e2f\u9547","center":"112.896375,30.654379","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u591a\u5b9d\u9547","center":"112.749108,30.776358","level":"street","districts":[]}]},{"citycode":"0712","adcode":"420900","name":"\u5b5d\u611f\u5e02","center":"113.956962,30.918311","level":"city","districts":[{"citycode":"0712","adcode":"420981","name":"\u5e94\u57ce\u5e02","center":"113.571864,30.928592","level":"district","districts":[]},{"citycode":"0712","adcode":"420902","name":"\u5b5d\u5357\u533a","center":"113.910769,30.91695","level":"district","districts":[]},{"citycode":"0712","adcode":"420923","name":"\u4e91\u68a6\u53bf","center":"113.752958,31.021736","level":"district","districts":[]},{"citycode":"0712","adcode":"420984","name":"\u6c49\u5ddd\u5e02","center":"113.838068,30.673219","level":"district","districts":[]},{"citycode":"0712","adcode":"420922","name":"\u5927\u609f\u53bf","center":"114.127122,31.561179","level":"district","districts":[]},{"citycode":"0712","adcode":"420982","name":"\u5b89\u9646\u5e02","center":"113.688955,31.25565","level":"district","districts":[]},{"citycode":"0712","adcode":"420921","name":"\u5b5d\u660c\u53bf","center":"113.997794,31.258225","level":"district","districts":[]}]},{"citycode":"0724","adcode":"420800","name":"\u8346\u95e8\u5e02","center":"112.199009,31.035445","level":"city","districts":[{"citycode":"0724","adcode":"420882","name":"\u4eac\u5c71\u5e02","center":"113.119561,31.018414","level":"district","districts":[]},{"citycode":"0724","adcode":"420822","name":"\u6c99\u6d0b\u53bf","center":"112.588675,30.709167","level":"district","districts":[]},{"citycode":"0724","adcode":"420881","name":"\u949f\u7965\u5e02","center":"112.588801,31.167006","level":"district","districts":[]},{"citycode":"0724","adcode":"420804","name":"\u6387\u5200\u533a","center":"112.2079,30.973397","level":"district","districts":[]},{"citycode":"0724","adcode":"420802","name":"\u4e1c\u5b9d\u533a","center":"112.201657,31.05187","level":"district","districts":[]}]},{"citycode":"2728","adcode":"429005","name":"\u6f5c\u6c5f\u5e02","center":"112.900279,30.401954","level":"city","districts":[{"citycode":"2728","adcode":"429005","name":"\u6cf0\u4e30\u8857\u9053","center":"112.980898,30.416671","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u5e7f\u534e\u5bfa\u8857\u9053","center":"112.666286,30.463319","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u5468\u77f6\u7ba1\u7406\u533a","center":"112.785657,30.463577","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u9ad8\u573a\u8857\u9053","center":"112.774574,30.407577","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u603b\u53e3\u7ba1\u7406\u533a","center":"112.890449,30.258095","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u8fd0\u7cae\u6e56\u7ba1\u7406\u533a","center":"112.581820,30.252044","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u767d\u9e6d\u6e56\u7ba1\u7406\u533a","center":"112.715593,30.178757","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u56ed\u6797\u8857\u9053","center":"112.910007,30.376965","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u7af9\u6839\u6ee9\u9547","center":"112.979245,30.471601","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u6e14\u6d0b\u9547","center":"112.966486,30.239237","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u718a\u53e3\u9547","center":"112.724425,30.340363","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u540e\u6e56\u7ba1\u7406\u533a","center":"112.767709,30.404874","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u718a\u53e3\u7ba1\u7406\u533a","center":"112.806208,30.256835","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u6768\u5e02\u8857\u9053","center":"112.914959,30.383464","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u9ad8\u77f3\u7891\u9547","center":"112.625570,30.620340","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u5468\u77f6\u8857\u9053","center":"112.781398,30.391044","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u6cfd\u53e3\u8857\u9053","center":"112.915656,30.488160","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u8001\u65b0\u9547","center":"112.887009,30.215033","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u9f99\u6e7e\u9547","center":"112.780855,30.253634","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u5f20\u91d1\u9547","center":"112.635950,30.252063","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u79ef\u7389\u53e3\u9547","center":"112.720009,30.418407","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u6d69\u53e3\u9547","center":"112.566899,30.307792","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u738b\u573a\u9547","center":"112.781586,30.473035","level":"street","districts":[]}]},{"citycode":"0718","adcode":"422800","name":"\u6069\u65bd\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","center":"109.488076,30.272104","level":"city","districts":[{"citycode":"0718","adcode":"422822","name":"\u5efa\u59cb\u53bf","center":"109.722333,30.602195","level":"district","districts":[]},{"citycode":"0718","adcode":"422802","name":"\u5229\u5ddd\u5e02","center":"108.936456,30.290974","level":"district","districts":[]},{"citycode":"0718","adcode":"422827","name":"\u6765\u51e4\u53bf","center":"109.407697,29.493474","level":"district","districts":[]},{"citycode":"0718","adcode":"422828","name":"\u9e64\u5cf0\u53bf","center":"110.034011,29.890073","level":"district","districts":[]},{"citycode":"0718","adcode":"422823","name":"\u5df4\u4e1c\u53bf","center":"110.340921,31.042854","level":"district","districts":[]},{"citycode":"0718","adcode":"422825","name":"\u5ba3\u6069\u53bf","center":"109.489918,29.986856","level":"district","districts":[]},{"citycode":"0718","adcode":"422801","name":"\u6069\u65bd\u5e02","center":"109.479572,30.295148","level":"district","districts":[]},{"citycode":"0718","adcode":"422826","name":"\u54b8\u4e30\u53bf","center":"109.140163,29.665215","level":"district","districts":[]}]},{"citycode":"0728","adcode":"429004","name":"\u4ed9\u6843\u5e02","center":"113.442973,30.328407","level":"city","districts":[{"citycode":"0728","adcode":"429004","name":"\u901a\u6d77\u53e3\u9547","center":"113.205730,30.272193","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u80e1\u573a\u9547","center":"113.290392,30.427800","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u5e72\u6cb3\u8857\u9053","center":"113.451023,30.375391","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u6768\u6797\u5c3e\u9547","center":"113.561091,30.201430","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u5f6d\u573a\u9547","center":"113.445865,30.251787","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u6c94\u57ce\u56de\u65cf\u9547","center":"113.200597,30.192111","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u9f99\u534e\u5c71\u8857\u9053","center":"113.460323,30.364932","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u6c99\u6e56\u539f\u79cd\u573a","center":"113.642513,30.148174","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u90d1\u573a\u9547","center":"112.978652,30.470679","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u90ed\u6cb3\u9547","center":"113.303624,30.302698","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u6c99\u5634\u8857\u9053","center":"113.441389,30.359636","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u6392\u6e56\u98ce\u666f\u533a","center":"113.223499,30.298659","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u6bdb\u5634\u9547","center":"113.045359,30.418813","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u5f20\u6c9f\u9547","center":"113.438252,30.296766","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u4e09\u4f0f\u6f6d\u9547","center":"113.206929,30.339491","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u957f\u57eb\u53e3\u9547","center":"113.597786,30.351206","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u4e94\u6e56\u6e14\u573a","center":"113.776124,30.171431","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u897f\u6d41\u6cb3\u9547","center":"113.762133,30.296361","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u675c\u6e56\u8857\u9053","center":"113.364736,30.306324","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u6c99\u6e56\u9547","center":"113.719820,30.118003","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u5245\u6cb3\u9547","center":"112.987670,30.375691","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u9648\u573a\u9547","center":"113.059900,30.294262","level":"street","districts":[]}]},{"citycode":"0716","adcode":"421000","name":"\u8346\u5dde\u5e02","center":"112.24143,30.336282","level":"city","districts":[{"citycode":"0716","adcode":"421024","name":"\u6c5f\u9675\u53bf","center":"112.424581,30.042227","level":"district","districts":[]},{"citycode":"0716","adcode":"421083","name":"\u6d2a\u6e56\u5e02","center":"113.475984,29.827256","level":"district","districts":[]},{"citycode":"0716","adcode":"421088","name":"\u76d1\u5229\u5e02","center":"112.904634,29.840229","level":"district","districts":[]},{"citycode":"0716","adcode":"421087","name":"\u677e\u6ecb\u5e02","center":"111.756455,30.174717","level":"district","districts":[]},{"citycode":"0716","adcode":"421022","name":"\u516c\u5b89\u53bf","center":"112.229742,30.058519","level":"district","districts":[]},{"citycode":"0716","adcode":"421081","name":"\u77f3\u9996\u5e02","center":"112.42538,29.720944","level":"district","districts":[]},{"citycode":"0716","adcode":"421002","name":"\u6c99\u5e02\u533a","center":"112.251975,30.326693","level":"district","districts":[]},{"citycode":"0716","adcode":"421003","name":"\u8346\u5dde\u533a","center":"112.190282,30.352984","level":"district","districts":[]}]},{"citycode":"0715","adcode":"421200","name":"\u54b8\u5b81\u5e02","center":"114.322601,29.84135","level":"city","districts":[{"citycode":"0715","adcode":"421202","name":"\u54b8\u5b89\u533a","center":"114.299002,29.852726","level":"district","districts":[]},{"citycode":"0715","adcode":"421221","name":"\u5609\u9c7c\u53bf","center":"113.939249,29.970575","level":"district","districts":[]},{"citycode":"0715","adcode":"421281","name":"\u8d64\u58c1\u5e02","center":"113.900385,29.725122","level":"district","districts":[]},{"citycode":"0715","adcode":"421224","name":"\u901a\u5c71\u53bf","center":"114.482832,29.606468","level":"district","districts":[]},{"citycode":"0715","adcode":"421223","name":"\u5d07\u9633\u53bf","center":"114.039484,29.556866","level":"district","districts":[]},{"citycode":"0715","adcode":"421222","name":"\u901a\u57ce\u53bf","center":"113.816811,29.2454","level":"district","districts":[]}]},{"citycode":"1719","adcode":"429021","name":"\u795e\u519c\u67b6\u6797\u533a","center":"110.675879,31.745103","level":"city","districts":[{"citycode":"1719","adcode":"429021","name":"\u6728\u9c7c\u9547","center":"110.566502,31.366101","level":"street","districts":[]},{"citycode":"1719","adcode":"429021","name":"\u65b0\u534e\u9547","center":"110.842423,31.621763","level":"street","districts":[]},{"citycode":"1719","adcode":"429021","name":"\u5b8b\u6d1b\u4e61","center":"110.589789,31.730290","level":"street","districts":[]},{"citycode":"1719","adcode":"429021","name":"\u677e\u67cf\u9547","center":"110.609207,31.704132","level":"street","districts":[]},{"citycode":"1719","adcode":"429021","name":"\u7ea2\u576a\u9547","center":"110.196111,31.471819","level":"street","districts":[]},{"citycode":"1719","adcode":"429021","name":"\u9633\u65e5\u9547","center":"110.763336,31.676979","level":"street","districts":[]},{"citycode":"1719","adcode":"429021","name":"\u5927\u4e5d\u6e56\u9547","center":"110.106251,31.408207","level":"street","districts":[]},{"citycode":"1719","adcode":"429021","name":"\u4e0b\u8c37\u576a\u571f\u5bb6\u65cf\u4e61","center":"110.124191,31.394918","level":"street","districts":[]}]},{"citycode":"0722","adcode":"421300","name":"\u968f\u5dde\u5e02","center":"113.382324,31.690275","level":"city","districts":[{"citycode":"0722","adcode":"421321","name":"\u968f\u53bf","center":"113.29097,31.883233","level":"district","districts":[]},{"citycode":"0722","adcode":"421303","name":"\u66fe\u90fd\u533a","center":"113.371052,31.716423","level":"district","districts":[]},{"citycode":"0722","adcode":"421381","name":"\u5e7f\u6c34\u5e02","center":"113.825977,31.617015","level":"district","districts":[]}]},{"citycode":"0711","adcode":"420700","name":"\u9102\u5dde\u5e02","center":"114.894909,30.391461","level":"city","districts":[{"citycode":"0711","adcode":"420702","name":"\u6881\u5b50\u6e56\u533a","center":"114.684805,30.100146","level":"district","districts":[]},{"citycode":"0711","adcode":"420703","name":"\u534e\u5bb9\u533a","center":"114.729945,30.53515","level":"district","districts":[]},{"citycode":"0711","adcode":"420704","name":"\u9102\u57ce\u533a","center":"114.89157,30.400535","level":"district","districts":[]}]},{"citycode":"0714","adcode":"420200","name":"\u9ec4\u77f3\u5e02","center":"115.038999,30.201082","level":"city","districts":[{"citycode":"0714","adcode":"420205","name":"\u94c1\u5c71\u533a","center":"114.891603,30.203152","level":"district","districts":[]},{"citycode":"0714","adcode":"420203","name":"\u897f\u585e\u5c71\u533a","center":"115.110067,30.205114","level":"district","districts":[]},{"citycode":"0714","adcode":"420222","name":"\u9633\u65b0\u53bf","center":"115.215211,29.830236","level":"district","districts":[]},{"citycode":"0714","adcode":"420202","name":"\u9ec4\u77f3\u6e2f\u533a","center":"115.065653,30.223194","level":"district","districts":[]},{"citycode":"0714","adcode":"420281","name":"\u5927\u51b6\u5e02","center":"114.98046,30.096263","level":"district","districts":[]},{"citycode":"0714","adcode":"420204","name":"\u4e0b\u9646\u533a","center":"114.960914,30.174148","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"210000","name":"\u8fbd\u5b81\u7701","center":"123.435093,41.836743","level":"province","districts":[{"citycode":"0429","adcode":"211400","name":"\u846b\u82a6\u5c9b\u5e02","center":"120.836783,40.710974","level":"city","districts":[{"citycode":"0429","adcode":"211422","name":"\u5efa\u660c\u53bf","center":"119.836669,40.824484","level":"district","districts":[]},{"citycode":"0429","adcode":"211403","name":"\u9f99\u6e2f\u533a","center":"120.894054,40.735717","level":"district","districts":[]},{"citycode":"0429","adcode":"211481","name":"\u5174\u57ce\u5e02","center":"120.756661,40.60999","level":"district","districts":[]},{"citycode":"0429","adcode":"211421","name":"\u7ee5\u4e2d\u53bf","center":"120.34432,40.325576","level":"district","districts":[]},{"citycode":"0429","adcode":"211404","name":"\u5357\u7968\u533a","center":"120.74971,41.10721","level":"district","districts":[]},{"citycode":"0429","adcode":"211402","name":"\u8fde\u5c71\u533a","center":"120.869157,40.774784","level":"district","districts":[]}]},{"citycode":"0411","adcode":"210200","name":"\u5927\u8fde\u5e02","center":"121.614786,38.913962","level":"city","districts":[{"citycode":"0411","adcode":"210281","name":"\u74e6\u623f\u5e97\u5e02","center":"121.979463,39.62701","level":"district","districts":[]},{"citycode":"0411","adcode":"210283","name":"\u5e84\u6cb3\u5e02","center":"122.965881,39.680825","level":"district","districts":[]},{"citycode":"0411","adcode":"210214","name":"\u666e\u5170\u5e97\u533a","center":"121.938299,39.391565","level":"district","districts":[]},{"citycode":"0411","adcode":"210213","name":"\u91d1\u5dde\u533a","center":"121.782513,39.050211","level":"district","districts":[]},{"citycode":"0411","adcode":"210224","name":"\u957f\u6d77\u53bf","center":"122.588487,39.272779","level":"district","districts":[]},{"citycode":"0411","adcode":"210211","name":"\u7518\u4e95\u5b50\u533a","center":"121.525469,38.952998","level":"district","districts":[]},{"citycode":"0411","adcode":"210202","name":"\u4e2d\u5c71\u533a","center":"121.644996,38.918357","level":"district","districts":[]},{"citycode":"0411","adcode":"210212","name":"\u65c5\u987a\u53e3\u533a","center":"121.261982,38.851742","level":"district","districts":[]},{"citycode":"0411","adcode":"210203","name":"\u897f\u5c97\u533a","center":"121.612461,38.914751","level":"district","districts":[]},{"citycode":"0411","adcode":"210204","name":"\u6c99\u6cb3\u53e3\u533a","center":"121.594201,38.904771","level":"district","districts":[]}]},{"citycode":"0415","adcode":"210600","name":"\u4e39\u4e1c\u5e02","center":"124.354419,40.000646","level":"city","districts":[{"citycode":"0415","adcode":"210682","name":"\u51e4\u57ce\u5e02","center":"124.066873,40.45218","level":"district","districts":[]},{"citycode":"0415","adcode":"210604","name":"\u632f\u5b89\u533a","center":"124.470005,40.20154","level":"district","districts":[]},{"citycode":"0415","adcode":"210681","name":"\u4e1c\u6e2f\u5e02","center":"124.152581,39.863193","level":"district","districts":[]},{"citycode":"0415","adcode":"210603","name":"\u632f\u5174\u533a","center":"124.383382,40.129706","level":"district","districts":[]},{"citycode":"0415","adcode":"210624","name":"\u5bbd\u7538\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"124.783674,40.731319","level":"district","districts":[]},{"citycode":"0415","adcode":"210602","name":"\u5143\u5b9d\u533a","center":"124.395577,40.136549","level":"district","districts":[]}]},{"citycode":"0416","adcode":"210700","name":"\u9526\u5dde\u5e02","center":"121.126859,41.096114","level":"city","districts":[{"citycode":"0416","adcode":"210711","name":"\u592a\u548c\u533a","center":"121.103445,41.109232","level":"district","districts":[]},{"citycode":"0416","adcode":"210781","name":"\u51cc\u6d77\u5e02","center":"121.35499,41.160636","level":"district","districts":[]},{"citycode":"0416","adcode":"210702","name":"\u53e4\u5854\u533a","center":"121.128414,41.117481","level":"district","districts":[]},{"citycode":"0416","adcode":"210703","name":"\u51cc\u6cb3\u533a","center":"121.151069,41.115058","level":"district","districts":[]},{"citycode":"0416","adcode":"210782","name":"\u5317\u9547\u5e02","center":"121.777503,41.588657","level":"district","districts":[]},{"citycode":"0416","adcode":"210726","name":"\u9ed1\u5c71\u53bf","center":"122.126645,41.653552","level":"district","districts":[]},{"citycode":"0416","adcode":"210727","name":"\u4e49\u53bf","center":"121.239558,41.533553","level":"district","districts":[]}]},{"citycode":"024","adcode":"210100","name":"\u6c88\u9633\u5e02","center":"123.464675,41.677576","level":"city","districts":[{"citycode":"024","adcode":"210114","name":"\u4e8e\u6d2a\u533a","center":"123.308062,41.793925","level":"district","districts":[]},{"citycode":"024","adcode":"210123","name":"\u5eb7\u5e73\u53bf","center":"123.343701,42.727249","level":"district","districts":[]},{"citycode":"024","adcode":"210181","name":"\u65b0\u6c11\u5e02","center":"122.835964,41.985757","level":"district","districts":[]},{"citycode":"024","adcode":"210124","name":"\u6cd5\u5e93\u53bf","center":"123.440294,42.50108","level":"district","districts":[]},{"citycode":"024","adcode":"210104","name":"\u5927\u4e1c\u533a","center":"123.469828,41.805292","level":"district","districts":[]},{"citycode":"024","adcode":"210103","name":"\u6c88\u6cb3\u533a","center":"123.45884,41.795688","level":"district","districts":[]},{"citycode":"024","adcode":"210105","name":"\u7687\u59d1\u533a","center":"123.441468,41.824574","level":"district","districts":[]},{"citycode":"024","adcode":"210112","name":"\u6d51\u5357\u533a","center":"123.449597,41.714729","level":"district","districts":[]},{"citycode":"024","adcode":"210113","name":"\u6c88\u5317\u65b0\u533a","center":"123.584209,41.913071","level":"district","districts":[]},{"citycode":"024","adcode":"210115","name":"\u8fbd\u4e2d\u533a","center":"122.766159,41.517449","level":"district","districts":[]},{"citycode":"024","adcode":"210106","name":"\u94c1\u897f\u533a","center":"123.334781,41.821721","level":"district","districts":[]},{"citycode":"024","adcode":"210111","name":"\u82cf\u5bb6\u5c6f\u533a","center":"123.343937,41.665153","level":"district","districts":[]},{"citycode":"024","adcode":"210102","name":"\u548c\u5e73\u533a","center":"123.420401,41.789766","level":"district","districts":[]}]},{"citycode":"0410","adcode":"211200","name":"\u94c1\u5cad\u5e02","center":"123.726008,42.223709","level":"city","districts":[{"citycode":"0410","adcode":"211282","name":"\u5f00\u539f\u5e02","center":"124.051886,42.577645","level":"district","districts":[]},{"citycode":"0410","adcode":"211204","name":"\u6e05\u6cb3\u533a","center":"124.159232,42.54714","level":"district","districts":[]},{"citycode":"0410","adcode":"211281","name":"\u8c03\u5175\u5c71\u5e02","center":"123.567039,42.468007","level":"district","districts":[]},{"citycode":"0410","adcode":"211221","name":"\u94c1\u5cad\u53bf","center":"123.728933,42.223395","level":"district","districts":[]},{"citycode":"0410","adcode":"211202","name":"\u94f6\u5dde\u533a","center":"123.842472,42.286575","level":"district","districts":[]},{"citycode":"0410","adcode":"211223","name":"\u897f\u4e30\u53bf","center":"124.727491,42.738178","level":"district","districts":[]},{"citycode":"0410","adcode":"211224","name":"\u660c\u56fe\u53bf","center":"124.086628,42.779333","level":"district","districts":[]}]},{"citycode":"0418","adcode":"210900","name":"\u961c\u65b0\u5e02","center":"121.670052,42.022028","level":"city","districts":[{"citycode":"0418","adcode":"210904","name":"\u592a\u5e73\u533a","center":"121.678637,42.010689","level":"district","districts":[]},{"citycode":"0418","adcode":"210905","name":"\u6e05\u6cb3\u95e8\u533a","center":"121.416105,41.7831","level":"district","districts":[]},{"citycode":"0418","adcode":"210903","name":"\u65b0\u90b1\u533a","center":"121.792067,42.087549","level":"district","districts":[]},{"citycode":"0418","adcode":"210921","name":"\u961c\u65b0\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","center":"121.757901,42.065175","level":"district","districts":[]},{"citycode":"0418","adcode":"210922","name":"\u5f70\u6b66\u53bf","center":"122.538563,42.386264","level":"district","districts":[]},{"citycode":"0418","adcode":"210902","name":"\u6d77\u5dde\u533a","center":"121.662594,42.017794","level":"district","districts":[]},{"citycode":"0418","adcode":"210911","name":"\u7ec6\u6cb3\u533a","center":"121.680157,42.025412","level":"district","districts":[]}]},{"citycode":"0414","adcode":"210500","name":"\u672c\u6eaa\u5e02","center":"123.766669,41.294123","level":"city","districts":[{"citycode":"0414","adcode":"210522","name":"\u6853\u4ec1\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"125.361061,41.267048","level":"district","districts":[]},{"citycode":"0414","adcode":"210505","name":"\u5357\u82ac\u533a","center":"123.744822,41.100273","level":"district","districts":[]},{"citycode":"0414","adcode":"210504","name":"\u660e\u5c71\u533a","center":"123.861747,41.343624","level":"district","districts":[]},{"citycode":"0414","adcode":"210521","name":"\u672c\u6eaa\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"124.119545,41.301553","level":"district","districts":[]},{"citycode":"0414","adcode":"210503","name":"\u6eaa\u6e56\u533a","center":"123.767817,41.32931","level":"district","districts":[]},{"citycode":"0414","adcode":"210502","name":"\u5e73\u5c71\u533a","center":"123.769081,41.299658","level":"district","districts":[]}]},{"citycode":"0419","adcode":"211000","name":"\u8fbd\u9633\u5e02","center":"123.239669,41.267396","level":"city","districts":[{"citycode":"0419","adcode":"211011","name":"\u592a\u5b50\u6cb3\u533a","center":"123.1814403,41.29502257","level":"district","districts":[]},{"citycode":"0419","adcode":"211005","name":"\u5f13\u957f\u5cad\u533a","center":"123.419567,41.151787","level":"district","districts":[]},{"citycode":"0419","adcode":"211081","name":"\u706f\u5854\u5e02","center":"123.339398,41.426537","level":"district","districts":[]},{"citycode":"0419","adcode":"211021","name":"\u8fbd\u9633\u53bf","center":"123.106426,41.206246","level":"district","districts":[]},{"citycode":"0419","adcode":"211004","name":"\u5b8f\u4f1f\u533a","center":"123.196725,41.217852","level":"district","districts":[]},{"citycode":"0419","adcode":"211002","name":"\u767d\u5854\u533a","center":"123.174347,41.270397","level":"district","districts":[]},{"citycode":"0419","adcode":"211003","name":"\u6587\u5723\u533a","center":"123.231262,41.282378","level":"district","districts":[]}]},{"citycode":"0413","adcode":"210400","name":"\u629a\u987a\u5e02","center":"123.957053,41.881311","level":"city","districts":[{"citycode":"0413","adcode":"210422","name":"\u65b0\u5bbe\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"125.039994,41.734031","level":"district","districts":[]},{"citycode":"0413","adcode":"210411","name":"\u987a\u57ce\u533a","center":"123.94504,41.883375","level":"district","districts":[]},{"citycode":"0413","adcode":"210402","name":"\u65b0\u629a\u533a","center":"123.91293,41.861922","level":"district","districts":[]},{"citycode":"0413","adcode":"210421","name":"\u629a\u987a\u53bf","center":"123.8999229,41.73009376","level":"district","districts":[]},{"citycode":"0413","adcode":"210404","name":"\u671b\u82b1\u533a","center":"123.784235,41.853484","level":"district","districts":[]},{"citycode":"0413","adcode":"210403","name":"\u4e1c\u6d32\u533a","center":"124.038491,41.853001","level":"district","districts":[]},{"citycode":"0413","adcode":"210423","name":"\u6e05\u539f\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"124.924028,42.100804","level":"district","districts":[]}]},{"citycode":"0427","adcode":"211100","name":"\u76d8\u9526\u5e02","center":"122.170729,40.71956","level":"city","districts":[{"citycode":"0427","adcode":"211103","name":"\u5174\u9686\u53f0\u533a","center":"122.070685,41.120261","level":"district","districts":[]},{"citycode":"0427","adcode":"211122","name":"\u76d8\u5c71\u53bf","center":"121.996408,41.243367","level":"district","districts":[]},{"citycode":"0427","adcode":"211102","name":"\u53cc\u53f0\u5b50\u533a","center":"122.07597,41.212401","level":"district","districts":[]},{"citycode":"0427","adcode":"211104","name":"\u5927\u6d3c\u533a","center":"122.082227,41.002679","level":"district","districts":[]}]},{"citycode":"0421","adcode":"211300","name":"\u671d\u9633\u5e02","center":"120.488801,41.601855","level":"city","districts":[{"citycode":"0421","adcode":"211324","name":"\u5580\u5587\u6c81\u5de6\u7ffc\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","center":"119.741223,41.12815","level":"district","districts":[]},{"citycode":"0421","adcode":"211382","name":"\u51cc\u6e90\u5e02","center":"119.401574,41.245445","level":"district","districts":[]},{"citycode":"0421","adcode":"211381","name":"\u5317\u7968\u5e02","center":"120.771389,41.801117","level":"district","districts":[]},{"citycode":"0421","adcode":"211303","name":"\u9f99\u57ce\u533a","center":"120.4133759,41.57674859","level":"district","districts":[]},{"citycode":"0421","adcode":"211302","name":"\u53cc\u5854\u533a","center":"120.453717,41.565814","level":"district","districts":[]},{"citycode":"0421","adcode":"211321","name":"\u671d\u9633\u53bf","center":"120.390001,41.497923","level":"district","districts":[]},{"citycode":"0421","adcode":"211322","name":"\u5efa\u5e73\u53bf","center":"119.64328,41.402891","level":"district","districts":[]}]},{"citycode":"0412","adcode":"210300","name":"\u978d\u5c71\u5e02","center":"122.994183,41.108239","level":"city","districts":[{"citycode":"0412","adcode":"210323","name":"\u5cab\u5ca9\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"123.280933,40.290995","level":"district","districts":[]},{"citycode":"0412","adcode":"210302","name":"\u94c1\u4e1c\u533a","center":"122.990888,41.089578","level":"district","districts":[]},{"citycode":"0412","adcode":"210311","name":"\u5343\u5c71\u533a","center":"122.9447506,41.0689014","level":"district","districts":[]},{"citycode":"0412","adcode":"210304","name":"\u7acb\u5c71\u533a","center":"123.029091,41.150401","level":"district","districts":[]},{"citycode":"0412","adcode":"210303","name":"\u94c1\u897f\u533a","center":"122.969531,41.119719","level":"district","districts":[]},{"citycode":"0412","adcode":"210321","name":"\u53f0\u5b89\u53bf","center":"122.436037,41.412866","level":"district","districts":[]},{"citycode":"0412","adcode":"210381","name":"\u6d77\u57ce\u5e02","center":"122.685176,40.882548","level":"district","districts":[]}]},{"citycode":"0417","adcode":"210800","name":"\u8425\u53e3\u5e02","center":"122.219148,40.625027","level":"city","districts":[{"citycode":"0417","adcode":"210803","name":"\u897f\u5e02\u533a","center":"122.206431,40.666707","level":"district","districts":[]},{"citycode":"0417","adcode":"210804","name":"\u9c85\u9c7c\u5708\u533a","center":"122.121764,40.226708","level":"district","districts":[]},{"citycode":"0417","adcode":"210881","name":"\u76d6\u5dde\u5e02","center":"122.34845,40.400259","level":"district","districts":[]},{"citycode":"0417","adcode":"210802","name":"\u7ad9\u524d\u533a","center":"122.259058,40.673063","level":"district","districts":[]},{"citycode":"0417","adcode":"210811","name":"\u8001\u8fb9\u533a","center":"122.307956,40.671279","level":"district","districts":[]},{"citycode":"0417","adcode":"210882","name":"\u5927\u77f3\u6865\u5e02","center":"122.509006,40.644482","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"370000","name":"\u5c71\u4e1c\u7701","center":"117.020725,36.670201","level":"province","districts":[{"citycode":"0546","adcode":"370500","name":"\u4e1c\u8425\u5e02","center":"118.674633,37.433992","level":"city","districts":[{"citycode":"0546","adcode":"370522","name":"\u5229\u6d25\u53bf","center":"118.255084,37.490919","level":"district","districts":[]},{"citycode":"0546","adcode":"370502","name":"\u4e1c\u8425\u533a","center":"118.582182,37.449035","level":"district","districts":[]},{"citycode":"0546","adcode":"370503","name":"\u6cb3\u53e3\u533a","center":"118.525519,37.886217","level":"district","districts":[]},{"citycode":"0546","adcode":"370505","name":"\u57a6\u5229\u533a","center":"118.575234,37.573412","level":"district","districts":[]},{"citycode":"0546","adcode":"370523","name":"\u5e7f\u9976\u53bf","center":"118.419437,37.053915","level":"district","districts":[]}]},{"citycode":"0543","adcode":"371600","name":"\u6ee8\u5dde\u5e02","center":"117.970731,37.382687","level":"city","districts":[{"citycode":"0543","adcode":"371603","name":"\u6cbe\u5316\u533a","center":"118.098962,37.698952","level":"district","districts":[]},{"citycode":"0543","adcode":"371623","name":"\u65e0\u68e3\u53bf","center":"117.625846,37.770579","level":"district","districts":[]},{"citycode":"0543","adcode":"371622","name":"\u9633\u4fe1\u53bf","center":"117.603407,37.632773","level":"district","districts":[]},{"citycode":"0543","adcode":"371625","name":"\u535a\u5174\u53bf","center":"118.110715,37.154529","level":"district","districts":[]},{"citycode":"0543","adcode":"371602","name":"\u6ee8\u57ce\u533a","center":"118.019567,37.431997","level":"district","districts":[]},{"citycode":"0543","adcode":"371621","name":"\u60e0\u6c11\u53bf","center":"117.593744,37.47528","level":"district","districts":[]},{"citycode":"0543","adcode":"371681","name":"\u90b9\u5e73\u5e02","center":"117.74313,36.863393","level":"district","districts":[]}]},{"citycode":"0535","adcode":"370600","name":"\u70df\u53f0\u5e02","center":"121.447755,37.464551","level":"city","districts":[{"citycode":"0535","adcode":"370614","name":"\u84ec\u83b1\u533a","center":"120.829141,37.795697","level":"district","districts":[]},{"citycode":"0535","adcode":"370602","name":"\u829d\u7f58\u533a","center":"121.400303,37.541312","level":"district","districts":[]},{"citycode":"0535","adcode":"370683","name":"\u83b1\u5dde\u5e02","center":"119.942057,37.178187","level":"district","districts":[]},{"citycode":"0535","adcode":"370687","name":"\u6d77\u9633\u5e02","center":"121.173506,36.688316","level":"district","districts":[]},{"citycode":"0535","adcode":"370681","name":"\u9f99\u53e3\u5e02","center":"120.47614,37.645281","level":"district","districts":[]},{"citycode":"0535","adcode":"370682","name":"\u83b1\u9633\u5e02","center":"120.711555,36.979757","level":"district","districts":[]},{"citycode":"0535","adcode":"370686","name":"\u6816\u971e\u5e02","center":"120.849595,37.335993","level":"district","districts":[]},{"citycode":"0535","adcode":"370685","name":"\u62db\u8fdc\u5e02","center":"120.433904,37.354517","level":"district","districts":[]},{"citycode":"0535","adcode":"370612","name":"\u725f\u5e73\u533a","center":"121.601015,37.387454","level":"district","districts":[]},{"citycode":"0535","adcode":"370611","name":"\u798f\u5c71\u533a","center":"121.267638,37.49833","level":"district","districts":[]},{"citycode":"0535","adcode":"370613","name":"\u83b1\u5c71\u533a","center":"121.444949,37.511322","level":"district","districts":[]}]},{"citycode":"0631","adcode":"371000","name":"\u5a01\u6d77\u5e02","center":"122.120519,37.513315","level":"city","districts":[{"citycode":"0631","adcode":"371083","name":"\u4e73\u5c71\u5e02","center":"121.539557,36.920329","level":"district","districts":[]},{"citycode":"0631","adcode":"371082","name":"\u8363\u6210\u5e02","center":"122.487036,37.165698","level":"district","districts":[]},{"citycode":"0631","adcode":"371002","name":"\u73af\u7fe0\u533a","center":"122.123115,37.501735","level":"district","districts":[]},{"citycode":"0631","adcode":"371003","name":"\u6587\u767b\u533a","center":"122.08832,37.196032","level":"district","districts":[]}]},{"citycode":"0532","adcode":"370200","name":"\u9752\u5c9b\u5e02","center":"120.382665,36.066938","level":"city","districts":[{"citycode":"0532","adcode":"370285","name":"\u83b1\u897f\u5e02","center":"120.517581,36.889167","level":"district","districts":[]},{"citycode":"0532","adcode":"370283","name":"\u5e73\u5ea6\u5e02","center":"119.970192,36.753895","level":"district","districts":[]},{"citycode":"0532","adcode":"370212","name":"\u5d02\u5c71\u533a","center":"120.469282,36.107069","level":"district","districts":[]},{"citycode":"0532","adcode":"370215","name":"\u5373\u58a8\u533a","center":"120.447691,36.390217","level":"district","districts":[]},{"citycode":"0532","adcode":"370214","name":"\u57ce\u9633\u533a","center":"120.396255,36.307624","level":"district","districts":[]},{"citycode":"0532","adcode":"370211","name":"\u9ec4\u5c9b\u533a","center":"120.19777,35.960688","level":"district","districts":[]},{"citycode":"0532","adcode":"370281","name":"\u80f6\u5dde\u5e02","center":"120.033382,36.26468","level":"district","districts":[]},{"citycode":"0532","adcode":"370213","name":"\u674e\u6ca7\u533a","center":"120.432652,36.145987","level":"district","districts":[]},{"citycode":"0532","adcode":"370202","name":"\u5e02\u5357\u533a","center":"120.412002,36.075867","level":"district","districts":[]},{"citycode":"0532","adcode":"370203","name":"\u5e02\u5317\u533a","center":"120.374675,36.08765","level":"district","districts":[]}]},{"citycode":"0635","adcode":"371500","name":"\u804a\u57ce\u5e02","center":"115.985238,36.455857","level":"city","districts":[{"citycode":"0635","adcode":"371525","name":"\u51a0\u53bf","center":"115.441684,36.484011","level":"district","districts":[]},{"citycode":"0635","adcode":"371502","name":"\u4e1c\u660c\u5e9c\u533a","center":"116.006399,36.412737","level":"district","districts":[]},{"citycode":"0635","adcode":"371522","name":"\u8398\u53bf","center":"115.669843,36.233711","level":"district","districts":[]},{"citycode":"0635","adcode":"371521","name":"\u9633\u8c37\u53bf","center":"115.791822,36.114392","level":"district","districts":[]},{"citycode":"0635","adcode":"371526","name":"\u9ad8\u5510\u53bf","center":"116.230126,36.84715","level":"district","districts":[]},{"citycode":"0635","adcode":"371524","name":"\u4e1c\u963f\u53bf","center":"116.247655,36.335198","level":"district","districts":[]},{"citycode":"0635","adcode":"371503","name":"\u830c\u5e73\u533a","center":"116.254865,36.580814","level":"district","districts":[]},{"citycode":"0635","adcode":"371581","name":"\u4e34\u6e05\u5e02","center":"115.704982,36.83828","level":"district","districts":[]}]},{"citycode":"0533","adcode":"370300","name":"\u6dc4\u535a\u5e02","center":"118.054994,36.813787","level":"city","districts":[{"citycode":"0533","adcode":"370305","name":"\u4e34\u6dc4\u533a","center":"118.309398,36.826882","level":"district","districts":[]},{"citycode":"0533","adcode":"370304","name":"\u535a\u5c71\u533a","center":"117.8627,36.495014","level":"district","districts":[]},{"citycode":"0533","adcode":"370323","name":"\u6c82\u6e90\u53bf","center":"118.170856,36.185402","level":"district","districts":[]},{"citycode":"0533","adcode":"370322","name":"\u9ad8\u9752\u53bf","center":"117.826743,37.171042","level":"district","districts":[]},{"citycode":"0533","adcode":"370321","name":"\u6853\u53f0\u53bf","center":"118.097923,36.959794","level":"district","districts":[]},{"citycode":"0533","adcode":"370303","name":"\u5f20\u5e97\u533a","center":"118.017877,36.807011","level":"district","districts":[]},{"citycode":"0533","adcode":"370302","name":"\u6dc4\u5ddd\u533a","center":"117.966978,36.644211","level":"district","districts":[]},{"citycode":"0533","adcode":"370306","name":"\u5468\u6751\u533a","center":"117.869686,36.80309","level":"district","districts":[]}]},{"citycode":"0536","adcode":"370700","name":"\u6f4d\u574a\u5e02","center":"119.161721,36.707668","level":"city","districts":[{"citycode":"0536","adcode":"370783","name":"\u5bff\u5149\u5e02","center":"118.791062,36.857133","level":"district","districts":[]},{"citycode":"0536","adcode":"370786","name":"\u660c\u9091\u5e02","center":"119.403185,36.843256","level":"district","districts":[]},{"citycode":"0536","adcode":"370785","name":"\u9ad8\u5bc6\u5e02","center":"119.80584,36.365658","level":"district","districts":[]},{"citycode":"0536","adcode":"370703","name":"\u5bd2\u4ead\u533a","center":"119.211251,36.755925","level":"district","districts":[]},{"citycode":"0536","adcode":"370782","name":"\u8bf8\u57ce\u5e02","center":"119.412992,36.009273","level":"district","districts":[]},{"citycode":"0536","adcode":"370705","name":"\u594e\u6587\u533a","center":"119.132288,36.707459","level":"district","districts":[]},{"citycode":"0536","adcode":"370702","name":"\u6f4d\u57ce\u533a","center":"119.02491,36.728077","level":"district","districts":[]},{"citycode":"0536","adcode":"370781","name":"\u9752\u5dde\u5e02","center":"118.479637,36.685178","level":"district","districts":[]},{"citycode":"0536","adcode":"370724","name":"\u4e34\u6710\u53bf","center":"118.543274,36.51246","level":"district","districts":[]},{"citycode":"0536","adcode":"370725","name":"\u660c\u4e50\u53bf","center":"118.841035,36.688035","level":"district","districts":[]},{"citycode":"0536","adcode":"370704","name":"\u574a\u5b50\u533a","center":"119.166343,36.653671","level":"district","districts":[]},{"citycode":"0536","adcode":"370784","name":"\u5b89\u4e18\u5e02","center":"119.21892,36.479642","level":"district","districts":[]}]},{"citycode":"0531","adcode":"370100","name":"\u6d4e\u5357\u5e02","center":"117.120128,36.652069","level":"city","districts":[{"citycode":"0531","adcode":"370113","name":"\u957f\u6e05\u533a","center":"116.752101,36.554251","level":"district","districts":[]},{"citycode":"0531","adcode":"370117","name":"\u94a2\u57ce\u533a","center":"117.811604,36.059393","level":"district","districts":[]},{"citycode":"0531","adcode":"370126","name":"\u5546\u6cb3\u53bf","center":"117.157165,37.309694","level":"district","districts":[]},{"citycode":"0531","adcode":"370114","name":"\u7ae0\u4e18\u533a","center":"117.526228,36.681258","level":"district","districts":[]},{"citycode":"0531","adcode":"370116","name":"\u83b1\u829c\u533a","center":"117.675828,36.214895","level":"district","districts":[]},{"citycode":"0531","adcode":"370124","name":"\u5e73\u9634\u53bf","center":"116.455865,36.289813","level":"district","districts":[]},{"citycode":"0531","adcode":"370115","name":"\u6d4e\u9633\u533a","center":"117.173722,36.978299","level":"district","districts":[]},{"citycode":"0531","adcode":"370103","name":"\u5e02\u4e2d\u533a","center":"116.997472,36.651121","level":"district","districts":[]},{"citycode":"0531","adcode":"370112","name":"\u5386\u57ce\u533a","center":"117.065233,36.680731","level":"district","districts":[]},{"citycode":"0531","adcode":"370102","name":"\u5386\u4e0b\u533a","center":"117.07632,36.666395","level":"district","districts":[]},{"citycode":"0531","adcode":"370105","name":"\u5929\u6865\u533a","center":"116.987106,36.678665","level":"district","districts":[]},{"citycode":"0531","adcode":"370104","name":"\u69d0\u836b\u533a","center":"116.901057,36.652264","level":"district","districts":[]}]},{"citycode":"0538","adcode":"370900","name":"\u6cf0\u5b89\u5e02","center":"117.086963,36.201784","level":"city","districts":[{"citycode":"0538","adcode":"370983","name":"\u80a5\u57ce\u5e02","center":"116.769098,36.181975","level":"district","districts":[]},{"citycode":"0538","adcode":"370902","name":"\u6cf0\u5c71\u533a","center":"117.128828,36.194963","level":"district","districts":[]},{"citycode":"0538","adcode":"370921","name":"\u5b81\u9633\u53bf","center":"116.805578,35.758919","level":"district","districts":[]},{"citycode":"0538","adcode":"370923","name":"\u4e1c\u5e73\u53bf","center":"116.470211,35.937049","level":"district","districts":[]},{"citycode":"0538","adcode":"370982","name":"\u65b0\u6cf0\u5e02","center":"117.768069,35.90953","level":"district","districts":[]},{"citycode":"0538","adcode":"370911","name":"\u5cb1\u5cb3\u533a","center":"117.041651,36.188088","level":"district","districts":[]}]},{"citycode":"0537","adcode":"370800","name":"\u6d4e\u5b81\u5e02","center":"116.587116,35.415117","level":"city","districts":[{"citycode":"0537","adcode":"370826","name":"\u5fae\u5c71\u53bf","center":"117.129188,34.806657","level":"district","districts":[]},{"citycode":"0537","adcode":"370831","name":"\u6cd7\u6c34\u53bf","center":"117.250824,35.664719","level":"district","districts":[]},{"citycode":"0537","adcode":"370827","name":"\u9c7c\u53f0\u53bf","center":"116.650526,35.012706","level":"district","districts":[]},{"citycode":"0537","adcode":"370881","name":"\u66f2\u961c\u5e02","center":"116.986212,35.581933","level":"district","districts":[]},{"citycode":"0537","adcode":"370828","name":"\u91d1\u4e61\u53bf","center":"116.337271,35.073419","level":"district","districts":[]},{"citycode":"0537","adcode":"370830","name":"\u6c76\u4e0a\u53bf","center":"116.497277,35.711891","level":"district","districts":[]},{"citycode":"0537","adcode":"370883","name":"\u90b9\u57ce\u5e02","center":"117.007406,35.402536","level":"district","districts":[]},{"citycode":"0537","adcode":"370811","name":"\u4efb\u57ce\u533a","center":"116.605763,35.444226","level":"district","districts":[]},{"citycode":"0537","adcode":"370812","name":"\u5156\u5dde\u533a","center":"116.78365,35.551938","level":"district","districts":[]},{"citycode":"0537","adcode":"370829","name":"\u5609\u7965\u53bf","center":"116.342308,35.40794","level":"district","districts":[]},{"citycode":"0537","adcode":"370832","name":"\u6881\u5c71\u53bf","center":"116.131779,35.765957","level":"district","districts":[]}]},{"citycode":"0539","adcode":"371300","name":"\u4e34\u6c82\u5e02","center":"118.356464,35.103771","level":"city","districts":[{"citycode":"0539","adcode":"371312","name":"\u6cb3\u4e1c\u533a","center":"118.403073,35.088936","level":"district","districts":[]},{"citycode":"0539","adcode":"371302","name":"\u5170\u5c71\u533a","center":"118.347332,35.052797","level":"district","districts":[]},{"citycode":"0539","adcode":"371325","name":"\u8d39\u53bf","center":"117.9776,35.265851","level":"district","districts":[]},{"citycode":"0539","adcode":"371327","name":"\u8392\u5357\u53bf","center":"118.835166,35.206252","level":"district","districts":[]},{"citycode":"0539","adcode":"371322","name":"\u90ef\u57ce\u53bf","center":"118.390701,34.619281","level":"district","districts":[]},{"citycode":"0539","adcode":"371328","name":"\u8499\u9634\u53bf","center":"117.953367,35.720128","level":"district","districts":[]},{"citycode":"0539","adcode":"371326","name":"\u5e73\u9091\u53bf","center":"117.615201,35.516849","level":"district","districts":[]},{"citycode":"0539","adcode":"371321","name":"\u6c82\u5357\u53bf","center":"118.465259,35.550078","level":"district","districts":[]},{"citycode":"0539","adcode":"371323","name":"\u6c82\u6c34\u53bf","center":"118.628142,35.790919","level":"district","districts":[]},{"citycode":"0539","adcode":"371311","name":"\u7f57\u5e84\u533a","center":"118.284693,34.997061","level":"district","districts":[]},{"citycode":"0539","adcode":"371324","name":"\u5170\u9675\u53bf","center":"118.070912,34.858235","level":"district","districts":[]},{"citycode":"0539","adcode":"371329","name":"\u4e34\u6cad\u53bf","center":"118.650828,34.920171","level":"district","districts":[]}]},{"citycode":"0530","adcode":"371700","name":"\u83cf\u6cfd\u5e02","center":"115.479646,35.234309","level":"city","districts":[{"citycode":"0530","adcode":"371703","name":"\u5b9a\u9676\u533a","center":"115.583172,35.105742","level":"district","districts":[]},{"citycode":"0530","adcode":"371728","name":"\u4e1c\u660e\u53bf","center":"115.107402,35.275664","level":"district","districts":[]},{"citycode":"0530","adcode":"371726","name":"\u9104\u57ce\u53bf","center":"115.544507,35.534088","level":"district","districts":[]},{"citycode":"0530","adcode":"371702","name":"\u7261\u4e39\u533a","center":"115.417021,35.251911","level":"district","districts":[]},{"citycode":"0530","adcode":"371724","name":"\u5de8\u91ce\u53bf","center":"116.062585,35.388543","level":"district","districts":[]},{"citycode":"0530","adcode":"371723","name":"\u6210\u6b66\u53bf","center":"115.889775,34.95278","level":"district","districts":[]},{"citycode":"0530","adcode":"371722","name":"\u5355\u53bf","center":"116.106396,34.779282","level":"district","districts":[]},{"citycode":"0530","adcode":"371725","name":"\u90d3\u57ce\u53bf","center":"115.938939,35.575276","level":"district","districts":[]},{"citycode":"0530","adcode":"371721","name":"\u66f9\u53bf","center":"115.556393,34.85875","level":"district","districts":[]}]},{"citycode":"0534","adcode":"371400","name":"\u5fb7\u5dde\u5e02","center":"116.359244,37.436492","level":"city","districts":[{"citycode":"0534","adcode":"371422","name":"\u5b81\u6d25\u53bf","center":"116.800279,37.652456","level":"district","districts":[]},{"citycode":"0534","adcode":"371481","name":"\u4e50\u9675\u5e02","center":"117.232085,37.729769","level":"district","districts":[]},{"citycode":"0534","adcode":"371423","name":"\u5e86\u4e91\u53bf","center":"117.384163,37.774376","level":"district","districts":[]},{"citycode":"0534","adcode":"371402","name":"\u5fb7\u57ce\u533a","center":"116.299558,37.451051","level":"district","districts":[]},{"citycode":"0534","adcode":"371428","name":"\u6b66\u57ce\u53bf","center":"116.069312,37.213398","level":"district","districts":[]},{"citycode":"0534","adcode":"371426","name":"\u5e73\u539f\u53bf","center":"116.434016,37.165453","level":"district","districts":[]},{"citycode":"0534","adcode":"371425","name":"\u9f50\u6cb3\u53bf","center":"116.762767,36.784164","level":"district","districts":[]},{"citycode":"0534","adcode":"371482","name":"\u79b9\u57ce\u5e02","center":"116.638558,36.934198","level":"district","districts":[]},{"citycode":"0534","adcode":"371424","name":"\u4e34\u9091\u53bf","center":"116.866568,37.190139","level":"district","districts":[]},{"citycode":"0534","adcode":"371403","name":"\u9675\u57ce\u533a","center":"116.576148,37.336444","level":"district","districts":[]},{"citycode":"0534","adcode":"371427","name":"\u590f\u6d25\u53bf","center":"116.001796,36.948013","level":"district","districts":[]}]},{"citycode":"0633","adcode":"371100","name":"\u65e5\u7167\u5e02","center":"119.52685,35.416912","level":"city","districts":[{"citycode":"0633","adcode":"371122","name":"\u8392\u53bf","center":"118.869059,35.59125","level":"district","districts":[]},{"citycode":"0633","adcode":"371103","name":"\u5c9a\u5c71\u533a","center":"119.31881,35.121985","level":"district","districts":[]},{"citycode":"0633","adcode":"371102","name":"\u4e1c\u6e2f\u533a","center":"119.462287,35.426037","level":"district","districts":[]},{"citycode":"0633","adcode":"371121","name":"\u4e94\u83b2\u53bf","center":"119.213673,35.760154","level":"district","districts":[]}]},{"citycode":"0632","adcode":"370400","name":"\u67a3\u5e84\u5e02","center":"117.323759,34.810858","level":"city","districts":[{"citycode":"0632","adcode":"370403","name":"\u859b\u57ce\u533a","center":"117.286371,34.783282","level":"district","districts":[]},{"citycode":"0632","adcode":"370405","name":"\u53f0\u513f\u5e84\u533a","center":"117.734287,34.563103","level":"district","districts":[]},{"citycode":"0632","adcode":"370402","name":"\u5e02\u4e2d\u533a","center":"117.556125,34.863791","level":"district","districts":[]},{"citycode":"0632","adcode":"370406","name":"\u5c71\u4ead\u533a","center":"117.461866,35.099638","level":"district","districts":[]},{"citycode":"0632","adcode":"370404","name":"\u5cc4\u57ce\u533a","center":"117.590738,34.772931","level":"district","districts":[]},{"citycode":"0632","adcode":"370481","name":"\u6ed5\u5dde\u5e02","center":"117.165881,35.11412","level":"district","districts":[]}]}]},{"citycode":"021","adcode":"310000","name":"\u4e0a\u6d77\u5e02","center":"121.473667,31.230525","level":"province","districts":[{"citycode":"021","adcode":"310100","name":"\u4e0a\u6d77\u57ce\u533a","center":"121.472644,31.231706","level":"city","districts":[{"citycode":"021","adcode":"310151","name":"\u5d07\u660e\u533a","center":"121.397662,31.623863","level":"district","districts":[]},{"citycode":"021","adcode":"310115","name":"\u6d66\u4e1c\u65b0\u533a","center":"121.544346,31.221461","level":"district","districts":[]},{"citycode":"021","adcode":"310116","name":"\u91d1\u5c71\u533a","center":"121.341774,30.742769","level":"district","districts":[]},{"citycode":"021","adcode":"310110","name":"\u6768\u6d66\u533a","center":"121.525409,31.259588","level":"district","districts":[]},{"citycode":"021","adcode":"310109","name":"\u8679\u53e3\u533a","center":"121.504994,31.264917","level":"district","districts":[]},{"citycode":"021","adcode":"310106","name":"\u9759\u5b89\u533a","center":"121.447348,31.227718","level":"district","districts":[]},{"citycode":"021","adcode":"310105","name":"\u957f\u5b81\u533a","center":"121.424751,31.220537","level":"district","districts":[]},{"citycode":"021","adcode":"310120","name":"\u5949\u8d24\u533a","center":"121.473945,30.918406","level":"district","districts":[]},{"citycode":"021","adcode":"310118","name":"\u9752\u6d66\u533a","center":"121.124249,31.15098","level":"district","districts":[]},{"citycode":"021","adcode":"310107","name":"\u666e\u9640\u533a","center":"121.39547,31.249618","level":"district","districts":[]},{"citycode":"021","adcode":"310113","name":"\u5b9d\u5c71\u533a","center":"121.489431,31.405242","level":"district","districts":[]},{"citycode":"021","adcode":"310101","name":"\u9ec4\u6d66\u533a","center":"121.48442,31.231661","level":"district","districts":[]},{"citycode":"021","adcode":"310114","name":"\u5609\u5b9a\u533a","center":"121.265276,31.375566","level":"district","districts":[]},{"citycode":"021","adcode":"310104","name":"\u5f90\u6c47\u533a","center":"121.436307,31.188334","level":"district","districts":[]},{"citycode":"021","adcode":"310117","name":"\u677e\u6c5f\u533a","center":"121.227676,31.03257","level":"district","districts":[]},{"citycode":"021","adcode":"310112","name":"\u95f5\u884c\u533a","center":"121.380857,31.112834","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"520000","name":"\u8d35\u5dde\u7701","center":"106.705251,26.600328","level":"province","districts":[{"citycode":"0852","adcode":"520300","name":"\u9075\u4e49\u5e02","center":"107.031922,27.721931","level":"city","districts":[{"citycode":"0852","adcode":"520329","name":"\u4f59\u5e86\u53bf","center":"107.906043,27.21513","level":"district","districts":[]},{"citycode":"0852","adcode":"520381","name":"\u8d64\u6c34\u5e02","center":"105.697501,28.590474","level":"district","districts":[]},{"citycode":"0852","adcode":"520328","name":"\u6e44\u6f6d\u53bf","center":"107.465492,27.748942","level":"district","districts":[]},{"citycode":"0852","adcode":"520303","name":"\u6c47\u5ddd\u533a","center":"106.933727,27.749716","level":"district","districts":[]},{"citycode":"0852","adcode":"520326","name":"\u52a1\u5ddd\u4ee1\u4f6c\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"107.899353,28.562921","level":"district","districts":[]},{"citycode":"0852","adcode":"520382","name":"\u4ec1\u6000\u5e02","center":"106.401322,27.791883","level":"district","districts":[]},{"citycode":"0852","adcode":"520304","name":"\u64ad\u5dde\u533a","center":"106.829081,27.535735","level":"district","districts":[]},{"citycode":"0852","adcode":"520327","name":"\u51e4\u5188\u53bf","center":"107.71646,27.954424","level":"district","districts":[]},{"citycode":"0852","adcode":"520323","name":"\u7ee5\u9633\u53bf","center":"107.191326,27.946049","level":"district","districts":[]},{"citycode":"0852","adcode":"520302","name":"\u7ea2\u82b1\u5c97\u533a","center":"106.893598,27.644793","level":"district","districts":[]},{"citycode":"0852","adcode":"520324","name":"\u6b63\u5b89\u53bf","center":"107.454463,28.553507","level":"district","districts":[]},{"citycode":"0852","adcode":"520325","name":"\u9053\u771f\u4ee1\u4f6c\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"107.613076,28.862548","level":"district","districts":[]},{"citycode":"0852","adcode":"520322","name":"\u6850\u6893\u53bf","center":"106.824661,28.132991","level":"district","districts":[]},{"citycode":"0852","adcode":"520330","name":"\u4e60\u6c34\u53bf","center":"106.19715,28.332923","level":"district","districts":[]}]},{"citycode":"0856","adcode":"520600","name":"\u94dc\u4ec1\u5e02","center":"109.189528,27.731555","level":"city","districts":[{"citycode":"0856","adcode":"520623","name":"\u77f3\u9621\u53bf","center":"108.223686,27.513499","level":"district","districts":[]},{"citycode":"0856","adcode":"520628","name":"\u677e\u6843\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"109.202877,28.15427","level":"district","districts":[]},{"citycode":"0856","adcode":"520622","name":"\u7389\u5c4f\u4f97\u65cf\u81ea\u6cbb\u53bf","center":"108.906415,27.235816","level":"district","districts":[]},{"citycode":"0856","adcode":"520626","name":"\u5fb7\u6c5f\u53bf","center":"108.120773,28.264028","level":"district","districts":[]},{"citycode":"0856","adcode":"520621","name":"\u6c5f\u53e3\u53bf","center":"108.843993,27.704883","level":"district","districts":[]},{"citycode":"0856","adcode":"520625","name":"\u5370\u6c5f\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"108.409638,27.994442","level":"district","districts":[]},{"citycode":"0856","adcode":"520627","name":"\u6cbf\u6cb3\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","center":"108.503152,28.564083","level":"district","districts":[]},{"citycode":"0856","adcode":"520624","name":"\u601d\u5357\u53bf","center":"108.253798,27.937464","level":"district","districts":[]},{"citycode":"0856","adcode":"520602","name":"\u78a7\u6c5f\u533a","center":"109.264271,27.815244","level":"district","districts":[]},{"citycode":"0856","adcode":"520603","name":"\u4e07\u5c71\u533a","center":"109.153685,27.671268","level":"district","districts":[]}]},{"citycode":"0858","adcode":"520200","name":"\u516d\u76d8\u6c34\u5e02","center":"104.830357,26.592538","level":"city","districts":[{"citycode":"0858","adcode":"520281","name":"\u76d8\u5dde\u5e02","center":"104.471554,25.709878","level":"district","districts":[]},{"citycode":"0858","adcode":"520203","name":"\u516d\u679d\u7279\u533a","center":"105.477199,26.214356","level":"district","districts":[]},{"citycode":"0858","adcode":"520201","name":"\u949f\u5c71\u533a","center":"104.843723,26.574699","level":"district","districts":[]},{"citycode":"0858","adcode":"520204","name":"\u6c34\u57ce\u533a","center":"104.957871,26.547604","level":"district","districts":[]}]},{"citycode":"0854","adcode":"522700","name":"\u9ed4\u5357\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","center":"107.522303,26.253136","level":"city","districts":[{"citycode":"0854","adcode":"522727","name":"\u5e73\u5858\u53bf","center":"107.322635,25.822395","level":"district","districts":[]},{"citycode":"0854","adcode":"522722","name":"\u8354\u6ce2\u53bf","center":"107.88057,25.402528","level":"district","districts":[]},{"citycode":"0854","adcode":"522728","name":"\u7f57\u7538\u53bf","center":"106.751724,25.42616","level":"district","districts":[]},{"citycode":"0854","adcode":"522701","name":"\u90fd\u5300\u5e02","center":"107.518628,26.259456","level":"district","districts":[]},{"citycode":"0854","adcode":"522729","name":"\u957f\u987a\u53bf","center":"106.44057,26.003187","level":"district","districts":[]},{"citycode":"0854","adcode":"522726","name":"\u72ec\u5c71\u53bf","center":"107.557591,25.865418","level":"district","districts":[]},{"citycode":"0854","adcode":"522732","name":"\u4e09\u90fd\u6c34\u65cf\u81ea\u6cbb\u53bf","center":"107.869489,25.983572","level":"district","districts":[]},{"citycode":"0854","adcode":"522723","name":"\u8d35\u5b9a\u53bf","center":"107.232208,26.557205","level":"district","districts":[]},{"citycode":"0854","adcode":"522731","name":"\u60e0\u6c34\u53bf","center":"106.656993,26.132045","level":"district","districts":[]},{"citycode":"0854","adcode":"522730","name":"\u9f99\u91cc\u53bf","center":"106.979177,26.453546","level":"district","districts":[]},{"citycode":"0854","adcode":"522725","name":"\u74ee\u5b89\u53bf","center":"107.471307,27.07838","level":"district","districts":[]},{"citycode":"0854","adcode":"522702","name":"\u798f\u6cc9\u5e02","center":"107.520371,26.686773","level":"district","districts":[]}]},{"citycode":"0853","adcode":"520400","name":"\u5b89\u987a\u5e02","center":"105.9476,26.253103","level":"city","districts":[{"citycode":"0853","adcode":"520402","name":"\u897f\u79c0\u533a","center":"105.966086,26.243928","level":"district","districts":[]},{"citycode":"0853","adcode":"520425","name":"\u7d2b\u4e91\u82d7\u65cf\u5e03\u4f9d\u65cf\u81ea\u6cbb\u53bf","center":"106.084441,25.751047","level":"district","districts":[]},{"citycode":"0853","adcode":"520403","name":"\u5e73\u575d\u533a","center":"106.255768,26.405968","level":"district","districts":[]},{"citycode":"0853","adcode":"520422","name":"\u666e\u5b9a\u53bf","center":"105.743156,26.301876","level":"district","districts":[]},{"citycode":"0853","adcode":"520423","name":"\u9547\u5b81\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"105.770543,26.057248","level":"district","districts":[]},{"citycode":"0853","adcode":"520424","name":"\u5173\u5cad\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"105.538335,25.953518","level":"district","districts":[]}]},{"citycode":"0859","adcode":"522300","name":"\u9ed4\u897f\u5357\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","center":"104.906419,25.087733","level":"city","districts":[{"citycode":"0859","adcode":"522328","name":"\u5b89\u9f99\u53bf","center":"105.442702,25.099014","level":"district","districts":[]},{"citycode":"0859","adcode":"522326","name":"\u671b\u8c1f\u53bf","center":"106.094864,25.174204","level":"district","districts":[]},{"citycode":"0859","adcode":"522301","name":"\u5174\u4e49\u5e02","center":"104.895503,25.09196","level":"district","districts":[]},{"citycode":"0859","adcode":"522323","name":"\u666e\u5b89\u53bf","center":"104.953289,25.784225","level":"district","districts":[]},{"citycode":"0859","adcode":"522324","name":"\u6674\u9686\u53bf","center":"105.218956,25.834729","level":"district","districts":[]},{"citycode":"0859","adcode":"522327","name":"\u518c\u4ea8\u53bf","center":"105.811592,24.983663","level":"district","districts":[]},{"citycode":"0859","adcode":"522302","name":"\u5174\u4ec1\u5e02","center":"105.186132,25.43509","level":"district","districts":[]},{"citycode":"0859","adcode":"522325","name":"\u8d1e\u4e30\u53bf","center":"105.64976,25.38558","level":"district","districts":[]}]},{"citycode":"0855","adcode":"522600","name":"\u9ed4\u4e1c\u5357\u82d7\u65cf\u4f97\u65cf\u81ea\u6cbb\u5dde","center":"107.982838,26.583759","level":"city","districts":[{"citycode":"0855","adcode":"522627","name":"\u5929\u67f1\u53bf","center":"109.207826,26.909548","level":"district","districts":[]},{"citycode":"0855","adcode":"522623","name":"\u65bd\u79c9\u53bf","center":"108.124531,27.033107","level":"district","districts":[]},{"citycode":"0855","adcode":"522636","name":"\u4e39\u5be8\u53bf","center":"107.789301,26.19857","level":"district","districts":[]},{"citycode":"0855","adcode":"522601","name":"\u51ef\u91cc\u5e02","center":"107.981409,26.5662","level":"district","districts":[]},{"citycode":"0855","adcode":"522635","name":"\u9ebb\u6c5f\u53bf","center":"107.589455,26.49129","level":"district","districts":[]},{"citycode":"0855","adcode":"522630","name":"\u53f0\u6c5f\u53bf","center":"108.321244,26.667525","level":"district","districts":[]},{"citycode":"0855","adcode":"522622","name":"\u9ec4\u5e73\u53bf","center":"107.916651,26.905278","level":"district","districts":[]},{"citycode":"0855","adcode":"522625","name":"\u9547\u8fdc\u53bf","center":"108.429536,27.049033","level":"district","districts":[]},{"citycode":"0855","adcode":"522626","name":"\u5c91\u5de9\u53bf","center":"108.815855,27.174124","level":"district","districts":[]},{"citycode":"0855","adcode":"522624","name":"\u4e09\u7a57\u53bf","center":"108.675265,26.953359","level":"district","districts":[]},{"citycode":"0855","adcode":"522628","name":"\u9526\u5c4f\u53bf","center":"109.200808,26.675919","level":"district","districts":[]},{"citycode":"0855","adcode":"522634","name":"\u96f7\u5c71\u53bf","center":"108.078217,26.378892","level":"district","districts":[]},{"citycode":"0855","adcode":"522631","name":"\u9ece\u5e73\u53bf","center":"109.125826,26.213304","level":"district","districts":[]},{"citycode":"0855","adcode":"522629","name":"\u5251\u6cb3\u53bf","center":"108.441501,26.728274","level":"district","districts":[]},{"citycode":"0855","adcode":"522632","name":"\u6995\u6c5f\u53bf","center":"108.52188,25.931893","level":"district","districts":[]},{"citycode":"0855","adcode":"522633","name":"\u4ece\u6c5f\u53bf","center":"108.904998,25.754638","level":"district","districts":[]}]},{"citycode":"0857","adcode":"520500","name":"\u6bd5\u8282\u5e02","center":"105.291544,27.283615","level":"city","districts":[{"citycode":"0857","adcode":"520581","name":"\u9ed4\u897f\u5e02","center":"106.032277,27.008681","level":"district","districts":[]},{"citycode":"0857","adcode":"520523","name":"\u91d1\u6c99\u53bf","center":"106.220112,27.458601","level":"district","districts":[]},{"citycode":"0857","adcode":"520524","name":"\u7ec7\u91d1\u53bf","center":"105.770249,26.663649","level":"district","districts":[]},{"citycode":"0857","adcode":"520521","name":"\u5927\u65b9\u53bf","center":"105.601963,27.14443","level":"district","districts":[]},{"citycode":"0857","adcode":"520525","name":"\u7eb3\u96cd\u53bf","center":"105.414578,26.779344","level":"district","districts":[]},{"citycode":"0857","adcode":"520502","name":"\u4e03\u661f\u5173\u533a","center":"105.305219,27.298304","level":"district","districts":[]},{"citycode":"0857","adcode":"520527","name":"\u8d6b\u7ae0\u53bf","center":"104.728011,27.117933","level":"district","districts":[]},{"citycode":"0857","adcode":"520526","name":"\u5a01\u5b81\u5f5d\u65cf\u56de\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"104.252787,26.873872","level":"district","districts":[]}]},{"citycode":"0851","adcode":"520100","name":"\u8d35\u9633\u5e02","center":"106.628201,26.646694","level":"city","districts":[{"citycode":"0851","adcode":"520121","name":"\u5f00\u9633\u53bf","center":"106.964716,27.057823","level":"district","districts":[]},{"citycode":"0851","adcode":"520113","name":"\u767d\u4e91\u533a","center":"106.623069,26.677932","level":"district","districts":[]},{"citycode":"0851","adcode":"520123","name":"\u4fee\u6587\u53bf","center":"106.591958,26.836048","level":"district","districts":[]},{"citycode":"0851","adcode":"520181","name":"\u6e05\u9547\u5e02","center":"106.473131,26.572978","level":"district","districts":[]},{"citycode":"0851","adcode":"520122","name":"\u606f\u70fd\u53bf","center":"106.740407,27.090479","level":"district","districts":[]},{"citycode":"0851","adcode":"520115","name":"\u89c2\u5c71\u6e56\u533a","center":"106.598978,26.616134","level":"district","districts":[]},{"citycode":"0851","adcode":"520112","name":"\u4e4c\u5f53\u533a","center":"106.75069,26.630911","level":"district","districts":[]},{"citycode":"0851","adcode":"520103","name":"\u4e91\u5ca9\u533a","center":"106.724394,26.604604","level":"district","districts":[]},{"citycode":"0851","adcode":"520111","name":"\u82b1\u6eaa\u533a","center":"106.67026,26.409817","level":"district","districts":[]},{"citycode":"0851","adcode":"520102","name":"\u5357\u660e\u533a","center":"106.714305,26.568055","level":"district","districts":[]}]}]},{"citycode":"023","adcode":"500000","name":"\u91cd\u5e86\u5e02","center":"106.551787,29.56268","level":"province","districts":[{"citycode":"023","adcode":"500200","name":"\u91cd\u5e86\u90ca\u53bf","center":"108.170255,29.291965","level":"city","districts":[{"citycode":"023","adcode":"500238","name":"\u5deb\u6eaa\u53bf","center":"109.570038,31.398619","level":"district","districts":[]},{"citycode":"023","adcode":"500236","name":"\u5949\u8282\u53bf","center":"109.401056,31.018505","level":"district","districts":[]},{"citycode":"023","adcode":"500240","name":"\u77f3\u67f1\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","center":"108.114251,29.999066","level":"district","districts":[]},{"citycode":"023","adcode":"500237","name":"\u5deb\u5c71\u53bf","center":"109.878995,31.07478","level":"district","districts":[]},{"citycode":"023","adcode":"500230","name":"\u4e30\u90fd\u53bf","center":"107.731056,29.863785","level":"district","districts":[]},{"citycode":"023","adcode":"500229","name":"\u57ce\u53e3\u53bf","center":"108.664349,31.947319","level":"district","districts":[]},{"citycode":"023","adcode":"500231","name":"\u57ab\u6c5f\u53bf","center":"107.332511,30.327548","level":"district","districts":[]},{"citycode":"023","adcode":"500235","name":"\u4e91\u9633\u53bf","center":"108.6975,30.930628","level":"district","districts":[]},{"citycode":"023","adcode":"500233","name":"\u5fe0\u53bf","center":"108.038073,30.299817","level":"district","districts":[]},{"citycode":"023","adcode":"500242","name":"\u9149\u9633\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"108.76726,28.841409","level":"district","districts":[]},{"citycode":"023","adcode":"500241","name":"\u79c0\u5c71\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"109.007096,28.448248","level":"district","districts":[]},{"citycode":"023","adcode":"500243","name":"\u5f6d\u6c34\u82d7\u65cf\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","center":"108.165571,29.293748","level":"district","districts":[]}]},{"citycode":"023","adcode":"500100","name":"\u91cd\u5e86\u57ce\u533a","center":"106.504962,29.533155","level":"city","districts":[{"citycode":"023","adcode":"500117","name":"\u5408\u5ddd\u533a","center":"106.27617,29.971968","level":"district","districts":[]},{"citycode":"023","adcode":"500152","name":"\u6f7c\u5357\u533a","center":"105.840487,30.191077","level":"district","districts":[]},{"citycode":"023","adcode":"500115","name":"\u957f\u5bff\u533a","center":"107.080945,29.857916","level":"district","districts":[]},{"citycode":"023","adcode":"500151","name":"\u94dc\u6881\u533a","center":"106.056265,29.845248","level":"district","districts":[]},{"citycode":"023","adcode":"500111","name":"\u5927\u8db3\u533a","center":"105.721825,29.707555","level":"district","districts":[]},{"citycode":"023","adcode":"500104","name":"\u5927\u6e21\u53e3\u533a","center":"106.482299,29.484464","level":"district","districts":[]},{"citycode":"023","adcode":"500107","name":"\u4e5d\u9f99\u5761\u533a","center":"106.510515,29.502325","level":"district","districts":[]},{"citycode":"023","adcode":"500108","name":"\u5357\u5cb8\u533a","center":"106.644254,29.50109","level":"district","districts":[]},{"citycode":"023","adcode":"500156","name":"\u6b66\u9686\u533a","center":"107.759955,29.325707","level":"district","districts":[]},{"citycode":"023","adcode":"500110","name":"\u7da6\u6c5f\u533a","center":"106.651213,29.028117","level":"district","districts":[]},{"citycode":"023","adcode":"500102","name":"\u6daa\u9675\u533a","center":"107.246521,29.752475","level":"district","districts":[]},{"citycode":"023","adcode":"500109","name":"\u5317\u789a\u533a","center":"106.395593,29.805197","level":"district","districts":[]},{"citycode":"023","adcode":"500119","name":"\u5357\u5ddd\u533a","center":"107.099147,29.157879","level":"district","districts":[]},{"citycode":"023","adcode":"500118","name":"\u6c38\u5ddd\u533a","center":"105.926951,29.356384","level":"district","districts":[]},{"citycode":"023","adcode":"500153","name":"\u8363\u660c\u533a","center":"105.6118,29.416892","level":"district","districts":[]},{"citycode":"023","adcode":"500116","name":"\u6c5f\u6d25\u533a","center":"106.264435,29.319984","level":"district","districts":[]},{"citycode":"023","adcode":"500113","name":"\u5df4\u5357\u533a","center":"106.540603,29.402348","level":"district","districts":[]},{"citycode":"023","adcode":"500120","name":"\u74a7\u5c71\u533a","center":"106.204885,29.577455","level":"district","districts":[]},{"citycode":"023","adcode":"500101","name":"\u4e07\u5dde\u533a","center":"108.408591,30.807621","level":"district","districts":[]},{"citycode":"023","adcode":"500154","name":"\u5f00\u5dde\u533a","center":"108.39336,31.160416","level":"district","districts":[]},{"citycode":"023","adcode":"500103","name":"\u6e1d\u4e2d\u533a","center":"106.568955,29.552642","level":"district","districts":[]},{"citycode":"023","adcode":"500112","name":"\u6e1d\u5317\u533a","center":"106.631155,29.718087","level":"district","districts":[]},{"citycode":"023","adcode":"500105","name":"\u6c5f\u5317\u533a","center":"106.574395,29.606224","level":"district","districts":[]},{"citycode":"023","adcode":"500155","name":"\u6881\u5e73\u533a","center":"107.769568,30.654233","level":"district","districts":[]},{"citycode":"023","adcode":"500106","name":"\u6c99\u576a\u575d\u533a","center":"106.456939,29.541017","level":"district","districts":[]},{"citycode":"023","adcode":"500114","name":"\u9ed4\u6c5f\u533a","center":"108.770677,29.533609","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"340000","name":"\u5b89\u5fbd\u7701","center":"117.330139,31.734559","level":"province","districts":[{"citycode":"0562","adcode":"340700","name":"\u94dc\u9675\u5e02","center":"117.811298,30.945214","level":"city","districts":[{"citycode":"0562","adcode":"340711","name":"\u90ca\u533a","center":"117.767919,30.821699","level":"district","districts":[]},{"citycode":"0562","adcode":"340705","name":"\u94dc\u5b98\u533a","center":"117.856541,30.936772","level":"district","districts":[]},{"citycode":"0562","adcode":"340722","name":"\u679e\u9633\u53bf","center":"117.250191,30.705466","level":"district","districts":[]},{"citycode":"0562","adcode":"340706","name":"\u4e49\u5b89\u533a","center":"117.937405,30.950619","level":"district","districts":[]}]},{"citycode":"0566","adcode":"341700","name":"\u6c60\u5dde\u5e02","center":"117.495663,30.674264","level":"city","districts":[{"citycode":"0566","adcode":"341702","name":"\u8d35\u6c60\u533a","center":"117.568087,30.688237","level":"district","districts":[]},{"citycode":"0566","adcode":"341722","name":"\u77f3\u53f0\u53bf","center":"117.486211,30.210218","level":"district","districts":[]},{"citycode":"0566","adcode":"341723","name":"\u9752\u9633\u53bf","center":"117.847366,30.639006","level":"district","districts":[]},{"citycode":"0566","adcode":"341721","name":"\u4e1c\u81f3\u53bf","center":"117.027533,30.111182","level":"district","districts":[]}]},{"citycode":"0556","adcode":"340800","name":"\u5b89\u5e86\u5e02","center":"117.115349,30.531828","level":"city","districts":[{"citycode":"0556","adcode":"340828","name":"\u5cb3\u897f\u53bf","center":"116.359732,30.849716","level":"district","districts":[]},{"citycode":"0556","adcode":"340881","name":"\u6850\u57ce\u5e02","center":"116.936588,31.035476","level":"district","districts":[]},{"citycode":"0556","adcode":"340803","name":"\u5927\u89c2\u533a","center":"117.013469,30.553697","level":"district","districts":[]},{"citycode":"0556","adcode":"340825","name":"\u592a\u6e56\u53bf","center":"116.30881,30.454198","level":"district","districts":[]},{"citycode":"0556","adcode":"340826","name":"\u5bbf\u677e\u53bf","center":"116.134485,30.171663","level":"district","districts":[]},{"citycode":"0556","adcode":"340802","name":"\u8fce\u6c5f\u533a","center":"117.090878,30.512768","level":"district","districts":[]},{"citycode":"0556","adcode":"340811","name":"\u5b9c\u79c0\u533a","center":"116.987469,30.613189","level":"district","districts":[]},{"citycode":"0556","adcode":"340882","name":"\u6f5c\u5c71\u5e02","center":"116.581224,30.631022","level":"district","districts":[]},{"citycode":"0556","adcode":"340827","name":"\u671b\u6c5f\u53bf","center":"116.70641,30.128404","level":"district","districts":[]},{"citycode":"0556","adcode":"340822","name":"\u6000\u5b81\u53bf","center":"116.829612,30.73484","level":"district","districts":[]}]},{"citycode":"0561","adcode":"340600","name":"\u6dee\u5317\u5e02","center":"116.798362,33.956264","level":"city","districts":[{"citycode":"0561","adcode":"340602","name":"\u675c\u96c6\u533a","center":"116.827949,33.991412","level":"district","districts":[]},{"citycode":"0561","adcode":"340603","name":"\u76f8\u5c71\u533a","center":"116.795233,33.959927","level":"district","districts":[]},{"citycode":"0561","adcode":"340621","name":"\u6fc9\u6eaa\u53bf","center":"116.76616,33.915612","level":"district","districts":[]},{"citycode":"0561","adcode":"340604","name":"\u70c8\u5c71\u533a","center":"116.813221,33.895407","level":"district","districts":[]}]},{"citycode":"0555","adcode":"340500","name":"\u9a6c\u978d\u5c71\u5e02","center":"118.50685,31.668765","level":"city","districts":[{"citycode":"0555","adcode":"340506","name":"\u535a\u671b\u533a","center":"118.818276,31.55117","level":"district","districts":[]},{"citycode":"0555","adcode":"340523","name":"\u548c\u53bf","center":"118.353668,31.74248","level":"district","districts":[]},{"citycode":"0555","adcode":"340522","name":"\u542b\u5c71\u53bf","center":"118.101448,31.735559","level":"district","districts":[]},{"citycode":"0555","adcode":"340521","name":"\u5f53\u6d82\u53bf","center":"118.497873,31.570857","level":"district","districts":[]},{"citycode":"0555","adcode":"340504","name":"\u96e8\u5c71\u533a","center":"118.498675,31.682374","level":"district","districts":[]},{"citycode":"0555","adcode":"340503","name":"\u82b1\u5c71\u533a","center":"118.511366,31.700127","level":"district","districts":[]}]},{"citycode":"0558","adcode":"341600","name":"\u4eb3\u5dde\u5e02","center":"115.778588,33.846285","level":"city","districts":[{"citycode":"0558","adcode":"341602","name":"\u8c2f\u57ce\u533a","center":"115.779081,33.876436","level":"district","districts":[]},{"citycode":"0558","adcode":"341623","name":"\u5229\u8f9b\u53bf","center":"116.206396,33.158424","level":"district","districts":[]},{"citycode":"0558","adcode":"341622","name":"\u8499\u57ce\u53bf","center":"116.56434,33.265671","level":"district","districts":[]},{"citycode":"0558","adcode":"341621","name":"\u6da1\u9633\u53bf","center":"116.21665,33.494134","level":"district","districts":[]}]},{"citycode":"0564","adcode":"341500","name":"\u516d\u5b89\u5e02","center":"116.519729,31.735892","level":"city","districts":[{"citycode":"0564","adcode":"341524","name":"\u91d1\u5be8\u53bf","center":"115.934253,31.727295","level":"district","districts":[]},{"citycode":"0564","adcode":"341522","name":"\u970d\u90b1\u53bf","center":"116.277966,32.353362","level":"district","districts":[]},{"citycode":"0564","adcode":"341502","name":"\u91d1\u5b89\u533a","center":"116.539458,31.75014","level":"district","districts":[]},{"citycode":"0564","adcode":"341503","name":"\u88d5\u5b89\u533a","center":"116.479505,31.738789","level":"district","districts":[]},{"citycode":"0564","adcode":"341504","name":"\u53f6\u96c6\u533a","center":"115.925271,31.863693","level":"district","districts":[]},{"citycode":"0564","adcode":"341525","name":"\u970d\u5c71\u53bf","center":"116.348274,31.409668","level":"district","districts":[]},{"citycode":"0564","adcode":"341523","name":"\u8212\u57ce\u53bf","center":"116.94863,31.462036","level":"district","districts":[]}]},{"citycode":"1558","adcode":"341200","name":"\u961c\u9633\u5e02","center":"115.814252,32.891032","level":"city","districts":[{"citycode":"1558","adcode":"341202","name":"\u988d\u5dde\u533a","center":"115.806916,32.883322","level":"district","districts":[]},{"citycode":"1558","adcode":"341221","name":"\u4e34\u6cc9\u53bf","center":"115.26312,33.038884","level":"district","districts":[]},{"citycode":"1558","adcode":"341282","name":"\u754c\u9996\u5e02","center":"115.374688,33.257799","level":"district","districts":[]},{"citycode":"1558","adcode":"341203","name":"\u988d\u4e1c\u533a","center":"115.856728,32.91173","level":"district","districts":[]},{"citycode":"1558","adcode":"341204","name":"\u988d\u6cc9\u533a","center":"115.807415,32.925461","level":"district","districts":[]},{"citycode":"1558","adcode":"341222","name":"\u592a\u548c\u53bf","center":"115.621941,33.160327","level":"district","districts":[]},{"citycode":"1558","adcode":"341226","name":"\u988d\u4e0a\u53bf","center":"116.256772,32.653211","level":"district","districts":[]},{"citycode":"1558","adcode":"341225","name":"\u961c\u5357\u53bf","center":"115.596003,32.659681","level":"district","districts":[]}]},{"citycode":"0554","adcode":"340400","name":"\u6dee\u5357\u5e02","center":"117.018603,32.585384","level":"city","districts":[{"citycode":"0554","adcode":"340406","name":"\u6f58\u96c6\u533a","center":"116.834715,32.77208","level":"district","districts":[]},{"citycode":"0554","adcode":"340405","name":"\u516b\u516c\u5c71\u533a","center":"116.832979,32.630922","level":"district","districts":[]},{"citycode":"0554","adcode":"340404","name":"\u8c22\u5bb6\u96c6\u533a","center":"116.860026,32.599173","level":"district","districts":[]},{"citycode":"0554","adcode":"340403","name":"\u7530\u5bb6\u5eb5\u533a","center":"117.017263,32.647456","level":"district","districts":[]},{"citycode":"0554","adcode":"340402","name":"\u5927\u901a\u533a","center":"117.053314,32.631519","level":"district","districts":[]},{"citycode":"0554","adcode":"340422","name":"\u5bff\u53bf","center":"116.798203,32.545027","level":"district","districts":[]},{"citycode":"0554","adcode":"340421","name":"\u51e4\u53f0\u53bf","center":"116.710947,32.710536","level":"district","districts":[]}]},{"citycode":"0557","adcode":"341300","name":"\u5bbf\u5dde\u5e02","center":"116.96419,33.647726","level":"city","districts":[{"citycode":"0557","adcode":"341324","name":"\u6cd7\u53bf","center":"117.910277,33.483686","level":"district","districts":[]},{"citycode":"0557","adcode":"341302","name":"\u57c7\u6865\u533a","center":"116.977039,33.640205","level":"district","districts":[]},{"citycode":"0557","adcode":"341323","name":"\u7075\u74a7\u53bf","center":"117.549321,33.554464","level":"district","districts":[]},{"citycode":"0557","adcode":"341322","name":"\u8427\u53bf","center":"116.947289,34.18884","level":"district","districts":[]},{"citycode":"0557","adcode":"341321","name":"\u7800\u5c71\u53bf","center":"116.366257,34.442139","level":"district","districts":[]}]},{"citycode":"0552","adcode":"340300","name":"\u868c\u57e0\u5e02","center":"117.388566,32.91682","level":"city","districts":[{"citycode":"0552","adcode":"340311","name":"\u6dee\u4e0a\u533a","center":"117.359352,32.96557","level":"district","districts":[]},{"citycode":"0552","adcode":"340304","name":"\u79b9\u4f1a\u533a","center":"117.34186,32.929715","level":"district","districts":[]},{"citycode":"0552","adcode":"340303","name":"\u868c\u5c71\u533a","center":"117.373347,32.916393","level":"district","districts":[]},{"citycode":"0552","adcode":"340302","name":"\u9f99\u5b50\u6e56\u533a","center":"117.454544,32.90863","level":"district","districts":[]},{"citycode":"0552","adcode":"340321","name":"\u6000\u8fdc\u53bf","center":"117.205083,32.971543","level":"district","districts":[]},{"citycode":"0552","adcode":"340323","name":"\u56fa\u9547\u53bf","center":"117.316585,33.318371","level":"district","districts":[]},{"citycode":"0552","adcode":"340322","name":"\u4e94\u6cb3\u53bf","center":"117.881312,33.126532","level":"district","districts":[]}]},{"citycode":"0553","adcode":"340200","name":"\u829c\u6e56\u5e02","center":"118.433065,31.352614","level":"city","districts":[{"citycode":"0553","adcode":"340209","name":"\u5f0b\u6c5f\u533a","center":"118.372664,31.311421","level":"district","districts":[]},{"citycode":"0553","adcode":"340212","name":"\u7e41\u660c\u533a","center":"118.198536,31.101766","level":"district","districts":[]},{"citycode":"0553","adcode":"340202","name":"\u955c\u6e56\u533a","center":"118.385133,31.34056","level":"district","districts":[]},{"citycode":"0553","adcode":"340223","name":"\u5357\u9675\u53bf","center":"118.334083,30.914621","level":"district","districts":[]},{"citycode":"0553","adcode":"340281","name":"\u65e0\u4e3a\u5e02","center":"117.902265,31.304462","level":"district","districts":[]},{"citycode":"0553","adcode":"340210","name":"\u6e7e\u6c9a\u533a","center":"118.576124,31.134809","level":"district","districts":[]},{"citycode":"0553","adcode":"340207","name":"\u9e20\u6c5f\u533a","center":"118.392337,31.369752","level":"district","districts":[]}]},{"citycode":"0551","adcode":"340100","name":"\u5408\u80a5\u5e02","center":"117.227267,31.820567","level":"city","districts":[{"citycode":"0551","adcode":"340103","name":"\u5e90\u9633\u533a","center":"117.265088,31.878722","level":"district","districts":[]},{"citycode":"0551","adcode":"340111","name":"\u5305\u6cb3\u533a","center":"117.310133,31.793801","level":"district","districts":[]},{"citycode":"0551","adcode":"340102","name":"\u7476\u6d77\u533a","center":"117.30944,31.858111","level":"district","districts":[]},{"citycode":"0551","adcode":"340123","name":"\u80a5\u897f\u53bf","center":"117.158416,31.707006","level":"district","districts":[]},{"citycode":"0551","adcode":"340104","name":"\u8700\u5c71\u533a","center":"117.26053,31.851211","level":"district","districts":[]},{"citycode":"0551","adcode":"340124","name":"\u5e90\u6c5f\u53bf","center":"117.288165,31.256978","level":"district","districts":[]},{"citycode":"0551","adcode":"340121","name":"\u957f\u4e30\u53bf","center":"117.167632,32.478347","level":"district","districts":[]},{"citycode":"0551","adcode":"340122","name":"\u80a5\u4e1c\u53bf","center":"117.4779,31.878601","level":"district","districts":[]},{"citycode":"0551","adcode":"340181","name":"\u5de2\u6e56\u5e02","center":"117.890236,31.624464","level":"district","districts":[]}]},{"citycode":"0550","adcode":"341100","name":"\u6ec1\u5dde\u5e02","center":"118.333439,32.255904","level":"city","districts":[{"citycode":"0550","adcode":"341126","name":"\u51e4\u9633\u53bf","center":"117.531791,32.875714","level":"district","districts":[]},{"citycode":"0550","adcode":"341182","name":"\u660e\u5149\u5e02","center":"118.018197,32.78193","level":"district","districts":[]},{"citycode":"0550","adcode":"341124","name":"\u5168\u6912\u53bf","center":"118.274149,32.08593","level":"district","districts":[]},{"citycode":"0550","adcode":"341181","name":"\u5929\u957f\u5e02","center":"119.004838,32.667409","level":"district","districts":[]},{"citycode":"0550","adcode":"341102","name":"\u7405\u740a\u533a","center":"118.32115,32.334475","level":"district","districts":[]},{"citycode":"0550","adcode":"341103","name":"\u5357\u8c2f\u533a","center":"118.416715,32.200084","level":"district","districts":[]},{"citycode":"0550","adcode":"341125","name":"\u5b9a\u8fdc\u53bf","center":"117.698528,32.530741","level":"district","districts":[]},{"citycode":"0550","adcode":"341122","name":"\u6765\u5b89\u53bf","center":"118.432581,32.423072","level":"district","districts":[]}]},{"citycode":"0559","adcode":"341000","name":"\u9ec4\u5c71\u5e02","center":"118.337643,29.714886","level":"city","districts":[{"citycode":"0559","adcode":"341003","name":"\u9ec4\u5c71\u533a","center":"118.141632,30.272991","level":"district","districts":[]},{"citycode":"0559","adcode":"341022","name":"\u4f11\u5b81\u53bf","center":"118.193533,29.784532","level":"district","districts":[]},{"citycode":"0559","adcode":"341024","name":"\u7941\u95e8\u53bf","center":"117.717452,29.854179","level":"district","districts":[]},{"citycode":"0559","adcode":"341023","name":"\u9edf\u53bf","center":"117.938139,29.92477","level":"district","districts":[]},{"citycode":"0559","adcode":"341004","name":"\u5fbd\u5dde\u533a","center":"118.336799,29.827291","level":"district","districts":[]},{"citycode":"0559","adcode":"341002","name":"\u5c6f\u6eaa\u533a","center":"118.315012,29.69655","level":"district","districts":[]},{"citycode":"0559","adcode":"341021","name":"\u6b59\u53bf","center":"118.415258,29.861354","level":"district","districts":[]}]},{"citycode":"0563","adcode":"341800","name":"\u5ba3\u57ce\u5e02","center":"118.759127,30.939278","level":"city","districts":[{"citycode":"0563","adcode":"341825","name":"\u65cc\u5fb7\u53bf","center":"118.550043,30.298287","level":"district","districts":[]},{"citycode":"0563","adcode":"341881","name":"\u5b81\u56fd\u5e02","center":"118.983085,30.634032","level":"district","districts":[]},{"citycode":"0563","adcode":"341823","name":"\u6cfe\u53bf","center":"118.419552,30.688793","level":"district","districts":[]},{"citycode":"0563","adcode":"341802","name":"\u5ba3\u5dde\u533a","center":"118.786098,30.944356","level":"district","districts":[]},{"citycode":"0563","adcode":"341821","name":"\u90ce\u6eaa\u53bf","center":"119.184326,31.142995","level":"district","districts":[]},{"citycode":"0563","adcode":"341882","name":"\u5e7f\u5fb7\u5e02","center":"119.420799,30.877608","level":"district","districts":[]},{"citycode":"0563","adcode":"341824","name":"\u7ee9\u6eaa\u53bf","center":"118.578519,30.067533","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"350000","name":"\u798f\u5efa\u7701","center":"119.296194,26.101082","level":"province","districts":[{"citycode":"0593","adcode":"350900","name":"\u5b81\u5fb7\u5e02","center":"119.547729,26.666222","level":"city","districts":[{"citycode":"0593","adcode":"350982","name":"\u798f\u9f0e\u5e02","center":"120.216559,27.324796","level":"district","districts":[]},{"citycode":"0593","adcode":"350902","name":"\u8549\u57ce\u533a","center":"119.526284,26.660658","level":"district","districts":[]},{"citycode":"0593","adcode":"350921","name":"\u971e\u6d66\u53bf","center":"120.005267,26.885971","level":"district","districts":[]},{"citycode":"0593","adcode":"350922","name":"\u53e4\u7530\u53bf","center":"118.74603,26.578134","level":"district","districts":[]},{"citycode":"0593","adcode":"350981","name":"\u798f\u5b89\u5e02","center":"119.647871,27.088274","level":"district","districts":[]},{"citycode":"0593","adcode":"350924","name":"\u5bff\u5b81\u53bf","center":"119.514589,27.45467","level":"district","districts":[]},{"citycode":"0593","adcode":"350926","name":"\u67d8\u8363\u53bf","center":"119.900597,27.23421","level":"district","districts":[]},{"citycode":"0593","adcode":"350925","name":"\u5468\u5b81\u53bf","center":"119.338998,27.104797","level":"district","districts":[]},{"citycode":"0593","adcode":"350923","name":"\u5c4f\u5357\u53bf","center":"118.985759,26.908256","level":"district","districts":[]}]},{"citycode":"0591","adcode":"350100","name":"\u798f\u5dde\u5e02","center":"119.296411,26.074286","level":"city","districts":[{"citycode":"0591","adcode":"350123","name":"\u7f57\u6e90\u53bf","center":"119.549129,26.490215","level":"district","districts":[]},{"citycode":"0591","adcode":"350124","name":"\u95fd\u6e05\u53bf","center":"118.863334,26.221099","level":"district","districts":[]},{"citycode":"0591","adcode":"350122","name":"\u8fde\u6c5f\u53bf","center":"119.539542,26.197737","level":"district","districts":[]},{"citycode":"0591","adcode":"350181","name":"\u798f\u6e05\u5e02","center":"119.384388,25.720081","level":"district","districts":[]},{"citycode":"0591","adcode":"350112","name":"\u957f\u4e50\u533a","center":"119.593579,25.888274","level":"district","districts":[]},{"citycode":"0591","adcode":"350128","name":"\u5e73\u6f6d\u53bf","center":"119.789893,25.498767","level":"district","districts":[]},{"citycode":"0591","adcode":"350103","name":"\u53f0\u6c5f\u533a","center":"119.31419,26.052826","level":"district","districts":[]},{"citycode":"0591","adcode":"350125","name":"\u6c38\u6cf0\u53bf","center":"118.932746,25.867198","level":"district","districts":[]},{"citycode":"0591","adcode":"350102","name":"\u9f13\u697c\u533a","center":"119.304507,26.082666","level":"district","districts":[]},{"citycode":"0591","adcode":"350111","name":"\u664b\u5b89\u533a","center":"119.328591,26.081963","level":"district","districts":[]},{"citycode":"0591","adcode":"350105","name":"\u9a6c\u5c3e\u533a","center":"119.439259,25.998657","level":"district","districts":[]},{"citycode":"0591","adcode":"350104","name":"\u4ed3\u5c71\u533a","center":"119.27322,26.047027","level":"district","districts":[]},{"citycode":"0591","adcode":"350121","name":"\u95fd\u4faf\u53bf","center":"119.131362,26.150428","level":"district","districts":[]}]},{"citycode":"0594","adcode":"350300","name":"\u8386\u7530\u5e02","center":"119.007662,25.454202","level":"city","districts":[{"citycode":"0594","adcode":"350305","name":"\u79c0\u5c7f\u533a","center":"119.105177,25.318649","level":"district","districts":[]},{"citycode":"0594","adcode":"350304","name":"\u8354\u57ce\u533a","center":"119.014821,25.432268","level":"district","districts":[]},{"citycode":"0594","adcode":"350302","name":"\u57ce\u53a2\u533a","center":"118.994261,25.419062","level":"district","districts":[]},{"citycode":"0594","adcode":"350322","name":"\u4ed9\u6e38\u53bf","center":"118.689745,25.373373","level":"district","districts":[]},{"citycode":"0594","adcode":"350303","name":"\u6db5\u6c5f\u533a","center":"119.116173,25.459057","level":"district","districts":[]}]},{"citycode":"0595","adcode":"350500","name":"\u6cc9\u5dde\u5e02","center":"118.675724,24.874452","level":"city","districts":[{"citycode":"0595","adcode":"350504","name":"\u6d1b\u6c5f\u533a","center":"118.671168,24.939319","level":"district","districts":[]},{"citycode":"0595","adcode":"350521","name":"\u60e0\u5b89\u53bf","center":"118.781037,25.012449","level":"district","districts":[]},{"citycode":"0595","adcode":"350582","name":"\u664b\u6c5f\u5e02","center":"118.551659,24.781635","level":"district","districts":[]},{"citycode":"0595","adcode":"350583","name":"\u5357\u5b89\u5e02","center":"118.385929,24.960056","level":"district","districts":[]},{"citycode":"0595","adcode":"350527","name":"\u91d1\u95e8\u53bf","center":"118.323912,24.434368","level":"district","districts":[]},{"citycode":"0595","adcode":"350505","name":"\u6cc9\u6e2f\u533a","center":"118.915804,25.120399","level":"district","districts":[]},{"citycode":"0595","adcode":"350581","name":"\u77f3\u72ee\u5e02","center":"118.647945,24.731969","level":"district","districts":[]},{"citycode":"0595","adcode":"350526","name":"\u5fb7\u5316\u53bf","center":"118.241104,25.492102","level":"district","districts":[]},{"citycode":"0595","adcode":"350503","name":"\u4e30\u6cfd\u533a","center":"118.613007,24.890373","level":"district","districts":[]},{"citycode":"0595","adcode":"350502","name":"\u9ca4\u57ce\u533a","center":"118.58652,24.908133","level":"district","districts":[]},{"citycode":"0595","adcode":"350525","name":"\u6c38\u6625\u53bf","center":"118.29416,25.321849","level":"district","districts":[]},{"citycode":"0595","adcode":"350524","name":"\u5b89\u6eaa\u53bf","center":"118.186295,25.056065","level":"district","districts":[]}]},{"citycode":"0592","adcode":"350200","name":"\u53a6\u95e8\u5e02","center":"118.08891,24.479627","level":"city","districts":[{"citycode":"0592","adcode":"350206","name":"\u6e56\u91cc\u533a","center":"118.146825,24.512858","level":"district","districts":[]},{"citycode":"0592","adcode":"350203","name":"\u601d\u660e\u533a","center":"118.082745,24.445676","level":"district","districts":[]},{"citycode":"0592","adcode":"350213","name":"\u7fd4\u5b89\u533a","center":"118.247911,24.618583","level":"district","districts":[]},{"citycode":"0592","adcode":"350212","name":"\u540c\u5b89\u533a","center":"118.150823,24.723299","level":"district","districts":[]},{"citycode":"0592","adcode":"350211","name":"\u96c6\u7f8e\u533a","center":"118.097407,24.575976","level":"district","districts":[]},{"citycode":"0592","adcode":"350205","name":"\u6d77\u6ca7\u533a","center":"118.032883,24.484688","level":"district","districts":[]}]},{"citycode":"0596","adcode":"350600","name":"\u6f33\u5dde\u5e02","center":"117.647298,24.515297","level":"city","districts":[{"citycode":"0596","adcode":"350604","name":"\u9f99\u6d77\u533a","center":"117.818485,24.446839","level":"district","districts":[]},{"citycode":"0596","adcode":"350623","name":"\u6f33\u6d66\u53bf","center":"117.613783,24.11741","level":"district","districts":[]},{"citycode":"0596","adcode":"350626","name":"\u4e1c\u5c71\u53bf","center":"117.4295,23.702034","level":"district","districts":[]},{"citycode":"0596","adcode":"350605","name":"\u957f\u6cf0\u533a","center":"117.759119,24.625989","level":"district","districts":[]},{"citycode":"0596","adcode":"350628","name":"\u5e73\u548c\u53bf","center":"117.314798,24.363831","level":"district","districts":[]},{"citycode":"0596","adcode":"350603","name":"\u9f99\u6587\u533a","center":"117.711188,24.503523","level":"district","districts":[]},{"citycode":"0596","adcode":"350629","name":"\u534e\u5b89\u53bf","center":"117.53411,25.00445","level":"district","districts":[]},{"citycode":"0596","adcode":"350627","name":"\u5357\u9756\u53bf","center":"117.357061,24.5151","level":"district","districts":[]},{"citycode":"0596","adcode":"350602","name":"\u8297\u57ce\u533a","center":"117.653727,24.510937","level":"district","districts":[]},{"citycode":"0596","adcode":"350624","name":"\u8bcf\u5b89\u53bf","center":"117.175314,23.711674","level":"district","districts":[]},{"citycode":"0596","adcode":"350622","name":"\u4e91\u9704\u53bf","center":"117.334351,23.935433","level":"district","districts":[]}]},{"citycode":"0598","adcode":"350400","name":"\u4e09\u660e\u5e02","center":"117.638919,26.263455","level":"city","districts":[{"citycode":"0598","adcode":"350426","name":"\u5c24\u6eaa\u53bf","center":"118.189772,26.168712","level":"district","districts":[]},{"citycode":"0598","adcode":"350425","name":"\u5927\u7530\u53bf","center":"117.846828,25.692535","level":"district","districts":[]},{"citycode":"0598","adcode":"350404","name":"\u4e09\u5143\u533a","center":"117.646153,26.271653","level":"district","districts":[]},{"citycode":"0598","adcode":"350405","name":"\u6c99\u53bf\u533a","center":"117.792551,26.396843","level":"district","districts":[]},{"citycode":"0598","adcode":"350421","name":"\u660e\u6eaa\u53bf","center":"117.202119,26.355938","level":"district","districts":[]},{"citycode":"0598","adcode":"350424","name":"\u5b81\u5316\u53bf","center":"116.654369,26.262298","level":"district","districts":[]},{"citycode":"0598","adcode":"350423","name":"\u6e05\u6d41\u53bf","center":"116.816772,26.177658","level":"district","districts":[]},{"citycode":"0598","adcode":"350481","name":"\u6c38\u5b89\u5e02","center":"117.365046,25.941671","level":"district","districts":[]},{"citycode":"0598","adcode":"350428","name":"\u5c06\u4e50\u53bf","center":"117.471127,26.728917","level":"district","districts":[]},{"citycode":"0598","adcode":"350429","name":"\u6cf0\u5b81\u53bf","center":"117.175448,26.900244","level":"district","districts":[]},{"citycode":"0598","adcode":"350430","name":"\u5efa\u5b81\u53bf","center":"116.848488,26.833566","level":"district","districts":[]}]},{"citycode":"0597","adcode":"350800","name":"\u9f99\u5ca9\u5e02","center":"117.017362,25.075884","level":"city","districts":[{"citycode":"0597","adcode":"350803","name":"\u6c38\u5b9a\u533a","center":"116.732216,24.724148","level":"district","districts":[]},{"citycode":"0597","adcode":"350802","name":"\u65b0\u7f57\u533a","center":"117.036816,25.098942","level":"district","districts":[]},{"citycode":"0597","adcode":"350881","name":"\u6f33\u5e73\u5e02","center":"117.419823,25.290481","level":"district","districts":[]},{"citycode":"0597","adcode":"350825","name":"\u8fde\u57ce\u53bf","center":"116.754472,25.710538","level":"district","districts":[]},{"citycode":"0597","adcode":"350821","name":"\u957f\u6c40\u53bf","center":"116.357581,25.833531","level":"district","districts":[]},{"citycode":"0597","adcode":"350823","name":"\u4e0a\u676d\u53bf","center":"116.419447,25.049867","level":"district","districts":[]},{"citycode":"0597","adcode":"350824","name":"\u6b66\u5e73\u53bf","center":"116.100216,25.096139","level":"district","districts":[]}]},{"citycode":"0599","adcode":"350700","name":"\u5357\u5e73\u5e02","center":"118.081325,27.382829","level":"city","districts":[{"citycode":"0599","adcode":"350722","name":"\u6d66\u57ce\u53bf","center":"118.541079,27.917804","level":"district","districts":[]},{"citycode":"0599","adcode":"350723","name":"\u5149\u6cfd\u53bf","center":"117.333812,27.541061","level":"district","districts":[]},{"citycode":"0599","adcode":"350703","name":"\u5efa\u9633\u533a","center":"118.120392,27.331996","level":"district","districts":[]},{"citycode":"0599","adcode":"350724","name":"\u677e\u6eaa\u53bf","center":"118.785429,27.526028","level":"district","districts":[]},{"citycode":"0599","adcode":"350725","name":"\u653f\u548c\u53bf","center":"118.857703,27.366122","level":"district","districts":[]},{"citycode":"0599","adcode":"350702","name":"\u5ef6\u5e73\u533a","center":"118.181806,26.637503","level":"district","districts":[]},{"citycode":"0599","adcode":"350783","name":"\u5efa\u74ef\u5e02","center":"118.304712,27.023233","level":"district","districts":[]},{"citycode":"0599","adcode":"350721","name":"\u987a\u660c\u53bf","center":"117.809433,26.793455","level":"district","districts":[]},{"citycode":"0599","adcode":"350781","name":"\u90b5\u6b66\u5e02","center":"117.492778,27.340672","level":"district","districts":[]},{"citycode":"0599","adcode":"350782","name":"\u6b66\u5937\u5c71\u5e02","center":"118.035321,27.756422","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"430000","name":"\u6e56\u5357\u7701","center":"112.982951,28.116007","level":"province","districts":[{"citycode":"0730","adcode":"430600","name":"\u5cb3\u9633\u5e02","center":"113.128922,29.35648","level":"city","districts":[{"citycode":"0730","adcode":"430603","name":"\u4e91\u6eaa\u533a","center":"113.272312,29.472745","level":"district","districts":[]},{"citycode":"0730","adcode":"430623","name":"\u534e\u5bb9\u53bf","center":"112.540448,29.530775","level":"district","districts":[]},{"citycode":"0730","adcode":"430682","name":"\u4e34\u6e58\u5e02","center":"113.450461,29.476687","level":"district","districts":[]},{"citycode":"0730","adcode":"430611","name":"\u541b\u5c71\u533a","center":"113.006434,29.461017","level":"district","districts":[]},{"citycode":"0730","adcode":"430624","name":"\u6e58\u9634\u53bf","center":"112.909248,28.690123","level":"district","districts":[]},{"citycode":"0730","adcode":"430626","name":"\u5e73\u6c5f\u53bf","center":"113.581296,28.702018","level":"district","districts":[]},{"citycode":"0730","adcode":"430602","name":"\u5cb3\u9633\u697c\u533a","center":"113.129362,29.371356","level":"district","districts":[]},{"citycode":"0730","adcode":"430621","name":"\u5cb3\u9633\u53bf","center":"113.116152,29.144681","level":"district","districts":[]},{"citycode":"0730","adcode":"430681","name":"\u6c68\u7f57\u5e02","center":"113.067097,28.806937","level":"district","districts":[]}]},{"citycode":"0745","adcode":"431200","name":"\u6000\u5316\u5e02","center":"110.001598,27.569813","level":"city","districts":[{"citycode":"0745","adcode":"431230","name":"\u901a\u9053\u4f97\u65cf\u81ea\u6cbb\u53bf","center":"109.784409,26.158032","level":"district","districts":[]},{"citycode":"0745","adcode":"431223","name":"\u8fb0\u6eaa\u53bf","center":"110.183159,28.006235","level":"district","districts":[]},{"citycode":"0745","adcode":"431226","name":"\u9ebb\u9633\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"109.817703,27.857666","level":"district","districts":[]},{"citycode":"0745","adcode":"431225","name":"\u4f1a\u540c\u53bf","center":"109.734724,26.887156","level":"district","districts":[]},{"citycode":"0745","adcode":"431224","name":"\u6e86\u6d66\u53bf","center":"110.594419,27.908869","level":"district","districts":[]},{"citycode":"0745","adcode":"431281","name":"\u6d2a\u6c5f\u5e02","center":"109.836475,27.209385","level":"district","districts":[]},{"citycode":"0745","adcode":"431227","name":"\u65b0\u6643\u4f97\u65cf\u81ea\u6cbb\u53bf","center":"109.174808,27.352094","level":"district","districts":[]},{"citycode":"0745","adcode":"431229","name":"\u9756\u5dde\u82d7\u65cf\u4f97\u65cf\u81ea\u6cbb\u53bf","center":"109.696249,26.575111","level":"district","districts":[]},{"citycode":"0745","adcode":"431228","name":"\u82b7\u6c5f\u4f97\u65cf\u81ea\u6cbb\u53bf","center":"109.684696,27.443429","level":"district","districts":[]},{"citycode":"0745","adcode":"431202","name":"\u9e64\u57ce\u533a","center":"110.040099,27.578581","level":"district","districts":[]},{"citycode":"0745","adcode":"431221","name":"\u4e2d\u65b9\u53bf","center":"109.945436,27.440554","level":"district","districts":[]},{"citycode":"0745","adcode":"431222","name":"\u6c85\u9675\u53bf","center":"110.393782,28.452103","level":"district","districts":[]}]},{"citycode":"0743","adcode":"433100","name":"\u6e58\u897f\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","center":"109.673345,28.215983","level":"city","districts":[{"citycode":"0743","adcode":"433127","name":"\u6c38\u987a\u53bf","center":"109.857142,28.979819","level":"district","districts":[]},{"citycode":"0743","adcode":"433125","name":"\u4fdd\u9756\u53bf","center":"109.660433,28.699939","level":"district","districts":[]},{"citycode":"0743","adcode":"433122","name":"\u6cf8\u6eaa\u53bf","center":"110.219619,28.216109","level":"district","districts":[]},{"citycode":"0743","adcode":"433126","name":"\u53e4\u4e08\u53bf","center":"109.95072,28.616971","level":"district","districts":[]},{"citycode":"0743","adcode":"433130","name":"\u9f99\u5c71\u53bf","center":"109.443974,29.457623","level":"district","districts":[]},{"citycode":"0743","adcode":"433101","name":"\u5409\u9996\u5e02","center":"109.698348,28.261948","level":"district","districts":[]},{"citycode":"0743","adcode":"433123","name":"\u51e4\u51f0\u53bf","center":"109.580815,27.957441","level":"district","districts":[]},{"citycode":"0743","adcode":"433124","name":"\u82b1\u57a3\u53bf","center":"109.482378,28.57191","level":"district","districts":[]}]},{"citycode":"0737","adcode":"430900","name":"\u76ca\u9633\u5e02","center":"112.355994,28.554853","level":"city","districts":[{"citycode":"0737","adcode":"430981","name":"\u6c85\u6c5f\u5e02","center":"112.354657,28.845755","level":"district","districts":[]},{"citycode":"0737","adcode":"430921","name":"\u5357\u53bf","center":"112.396323,29.362396","level":"district","districts":[]},{"citycode":"0737","adcode":"430903","name":"\u8d6b\u5c71\u533a","center":"112.373895,28.58011","level":"district","districts":[]},{"citycode":"0737","adcode":"430922","name":"\u6843\u6c5f\u53bf","center":"112.156432,28.518215","level":"district","districts":[]},{"citycode":"0737","adcode":"430923","name":"\u5b89\u5316\u53bf","center":"111.213296,28.374223","level":"district","districts":[]},{"citycode":"0737","adcode":"430902","name":"\u8d44\u9633\u533a","center":"112.324286,28.59149","level":"district","districts":[]}]},{"citycode":"0744","adcode":"430800","name":"\u5f20\u5bb6\u754c\u5e02","center":"110.478887,29.117343","level":"city","districts":[{"citycode":"0744","adcode":"430802","name":"\u6c38\u5b9a\u533a","center":"110.537379,29.119662","level":"district","districts":[]},{"citycode":"0744","adcode":"430822","name":"\u6851\u690d\u53bf","center":"110.204804,29.414112","level":"district","districts":[]},{"citycode":"0744","adcode":"430811","name":"\u6b66\u9675\u6e90\u533a","center":"110.550309,29.345721","level":"district","districts":[]},{"citycode":"0744","adcode":"430821","name":"\u6148\u5229\u53bf","center":"111.139424,29.430429","level":"district","districts":[]}]},{"citycode":"0733","adcode":"430200","name":"\u682a\u6d32\u5e02","center":"113.132783,27.828862","level":"city","districts":[{"citycode":"0733","adcode":"430202","name":"\u8377\u5858\u533a","center":"113.173169,27.856314","level":"district","districts":[]},{"citycode":"0733","adcode":"430223","name":"\u6538\u53bf","center":"113.397152,27.01516","level":"district","districts":[]},{"citycode":"0733","adcode":"430211","name":"\u5929\u5143\u533a","center":"113.082227,27.826738","level":"district","districts":[]},{"citycode":"0733","adcode":"430212","name":"\u6e0c\u53e3\u533a","center":"113.143832,27.699361","level":"district","districts":[]},{"citycode":"0733","adcode":"430204","name":"\u77f3\u5cf0\u533a","center":"113.117763,27.875513","level":"district","districts":[]},{"citycode":"0733","adcode":"430224","name":"\u8336\u9675\u53bf","center":"113.537907,26.777957","level":"district","districts":[]},{"citycode":"0733","adcode":"430225","name":"\u708e\u9675\u53bf","center":"113.772665,26.489847","level":"district","districts":[]},{"citycode":"0733","adcode":"430281","name":"\u91b4\u9675\u5e02","center":"113.497119,27.6457","level":"district","districts":[]},{"citycode":"0733","adcode":"430203","name":"\u82a6\u6dde\u533a","center":"113.153455,27.785198","level":"district","districts":[]}]},{"citycode":"0738","adcode":"431300","name":"\u5a04\u5e95\u5e02","center":"111.994468,27.699838","level":"city","districts":[{"citycode":"0738","adcode":"431321","name":"\u53cc\u5cf0\u53bf","center":"112.174265,27.457996","level":"district","districts":[]},{"citycode":"0738","adcode":"431381","name":"\u51b7\u6c34\u6c5f\u5e02","center":"111.459199,27.656017","level":"district","districts":[]},{"citycode":"0738","adcode":"431322","name":"\u65b0\u5316\u53bf","center":"111.327674,27.725416","level":"district","districts":[]},{"citycode":"0738","adcode":"431302","name":"\u5a04\u661f\u533a","center":"112.001922,27.730208","level":"district","districts":[]},{"citycode":"0738","adcode":"431382","name":"\u6d9f\u6e90\u5e02","center":"111.663837,27.693813","level":"district","districts":[]}]},{"citycode":"0735","adcode":"431000","name":"\u90f4\u5dde\u5e02","center":"113.015517,25.770117","level":"city","districts":[{"citycode":"0735","adcode":"431003","name":"\u82cf\u4ed9\u533a","center":"113.042364,25.799624","level":"district","districts":[]},{"citycode":"0735","adcode":"431026","name":"\u6c5d\u57ce\u53bf","center":"113.685193,25.533024","level":"district","districts":[]},{"citycode":"0735","adcode":"431022","name":"\u5b9c\u7ae0\u53bf","center":"112.948806,25.40059","level":"district","districts":[]},{"citycode":"0735","adcode":"431028","name":"\u5b89\u4ec1\u53bf","center":"113.269703,26.708569","level":"district","districts":[]},{"citycode":"0735","adcode":"431027","name":"\u6842\u4e1c\u53bf","center":"113.944792,26.077609","level":"district","districts":[]},{"citycode":"0735","adcode":"431081","name":"\u8d44\u5174\u5e02","center":"113.235841,25.977226","level":"district","districts":[]},{"citycode":"0735","adcode":"431002","name":"\u5317\u6e56\u533a","center":"113.010606,25.784632","level":"district","districts":[]},{"citycode":"0735","adcode":"431021","name":"\u6842\u9633\u53bf","center":"112.733804,25.75382","level":"district","districts":[]},{"citycode":"0735","adcode":"431025","name":"\u4e34\u6b66\u53bf","center":"112.563833,25.276459","level":"district","districts":[]},{"citycode":"0735","adcode":"431024","name":"\u5609\u79be\u53bf","center":"112.379216,25.616025","level":"district","districts":[]},{"citycode":"0735","adcode":"431023","name":"\u6c38\u5174\u53bf","center":"113.116587,26.127155","level":"district","districts":[]}]},{"citycode":"0746","adcode":"431100","name":"\u6c38\u5dde\u5e02","center":"111.613482,26.419861","level":"city","districts":[{"citycode":"0746","adcode":"431103","name":"\u51b7\u6c34\u6ee9\u533a","center":"111.592373,26.461313","level":"district","districts":[]},{"citycode":"0746","adcode":"431126","name":"\u5b81\u8fdc\u53bf","center":"111.945925,25.570817","level":"district","districts":[]},{"citycode":"0746","adcode":"431102","name":"\u96f6\u9675\u533a","center":"111.629806,26.222278","level":"district","districts":[]},{"citycode":"0746","adcode":"431128","name":"\u65b0\u7530\u53bf","center":"112.203396,25.903965","level":"district","districts":[]},{"citycode":"0746","adcode":"431123","name":"\u53cc\u724c\u53bf","center":"111.659967,25.961909","level":"district","districts":[]},{"citycode":"0746","adcode":"431124","name":"\u9053\u53bf","center":"111.600866,25.526282","level":"district","districts":[]},{"citycode":"0746","adcode":"431181","name":"\u7941\u9633\u5e02","center":"111.840253,26.580292","level":"district","districts":[]},{"citycode":"0746","adcode":"431127","name":"\u84dd\u5c71\u53bf","center":"112.195842,25.369575","level":"district","districts":[]},{"citycode":"0746","adcode":"431125","name":"\u6c5f\u6c38\u53bf","center":"111.343543,25.274461","level":"district","districts":[]},{"citycode":"0746","adcode":"431122","name":"\u4e1c\u5b89\u53bf","center":"111.315893,26.392173","level":"district","districts":[]},{"citycode":"0746","adcode":"431129","name":"\u6c5f\u534e\u7476\u65cf\u81ea\u6cbb\u53bf","center":"111.57951,25.185257","level":"district","districts":[]}]},{"citycode":"0734","adcode":"430400","name":"\u8861\u9633\u5e02","center":"112.572016,26.894216","level":"city","districts":[{"citycode":"0734","adcode":"430412","name":"\u5357\u5cb3\u533a","center":"112.737678,27.231846","level":"district","districts":[]},{"citycode":"0734","adcode":"430421","name":"\u8861\u9633\u53bf","center":"112.370649,26.970258","level":"district","districts":[]},{"citycode":"0734","adcode":"430405","name":"\u73e0\u6656\u533a","center":"112.620653,26.894796","level":"district","districts":[]},{"citycode":"0734","adcode":"430407","name":"\u77f3\u9f13\u533a","center":"112.597937,26.944257","level":"district","districts":[]},{"citycode":"0734","adcode":"430482","name":"\u5e38\u5b81\u5e02","center":"112.399894,26.421717","level":"district","districts":[]},{"citycode":"0734","adcode":"430424","name":"\u8861\u4e1c\u53bf","center":"112.953113,27.081086","level":"district","districts":[]},{"citycode":"0734","adcode":"430422","name":"\u8861\u5357\u53bf","center":"112.677572,26.739665","level":"district","districts":[]},{"citycode":"0734","adcode":"430406","name":"\u96c1\u5cf0\u533a","center":"112.613914,26.840335","level":"district","districts":[]},{"citycode":"0734","adcode":"430408","name":"\u84b8\u6e58\u533a","center":"112.567333,26.912388","level":"district","districts":[]},{"citycode":"0734","adcode":"430481","name":"\u8012\u9633\u5e02","center":"112.859806,26.422149","level":"district","districts":[]},{"citycode":"0734","adcode":"430426","name":"\u7941\u4e1c\u53bf","center":"112.090319,26.799284","level":"district","districts":[]},{"citycode":"0734","adcode":"430423","name":"\u8861\u5c71\u53bf","center":"112.868361,27.230225","level":"district","districts":[]}]},{"citycode":"0736","adcode":"430700","name":"\u5e38\u5fb7\u5e02","center":"111.69905,29.031446","level":"city","districts":[{"citycode":"0736","adcode":"430781","name":"\u6d25\u5e02\u5e02","center":"111.877957,29.606512","level":"district","districts":[]},{"citycode":"0736","adcode":"430723","name":"\u6fa7\u53bf","center":"111.758806,29.633138","level":"district","districts":[]},{"citycode":"0736","adcode":"430724","name":"\u4e34\u6fa7\u53bf","center":"111.647547,29.440813","level":"district","districts":[]},{"citycode":"0736","adcode":"430726","name":"\u77f3\u95e8\u53bf","center":"111.380056,29.584344","level":"district","districts":[]},{"citycode":"0736","adcode":"430703","name":"\u9f0e\u57ce\u533a","center":"111.679896,29.017596","level":"district","districts":[]},{"citycode":"0736","adcode":"430702","name":"\u6b66\u9675\u533a","center":"111.683043,29.055332","level":"district","districts":[]},{"citycode":"0736","adcode":"430725","name":"\u6843\u6e90\u53bf","center":"111.488985,28.90232","level":"district","districts":[]},{"citycode":"0736","adcode":"430722","name":"\u6c49\u5bff\u53bf","center":"111.970725,28.906063","level":"district","districts":[]},{"citycode":"0736","adcode":"430721","name":"\u5b89\u4e61\u53bf","center":"112.171107,29.41131","level":"district","districts":[]}]},{"citycode":"0731","adcode":"430100","name":"\u957f\u6c99\u5e02","center":"112.938882,28.228304","level":"city","districts":[{"citycode":"0731","adcode":"430104","name":"\u5cb3\u9e93\u533a","center":"112.930116,28.234202","level":"district","districts":[]},{"citycode":"0731","adcode":"430181","name":"\u6d4f\u9633\u5e02","center":"113.64328,28.163866","level":"district","districts":[]},{"citycode":"0731","adcode":"430182","name":"\u5b81\u4e61\u5e02","center":"112.551887,28.277709","level":"district","districts":[]},{"citycode":"0731","adcode":"430102","name":"\u8299\u84c9\u533a","center":"113.032605,28.185351","level":"district","districts":[]},{"citycode":"0731","adcode":"430105","name":"\u5f00\u798f\u533a","center":"112.985284,28.257286","level":"district","districts":[]},{"citycode":"0731","adcode":"430111","name":"\u96e8\u82b1\u533a","center":"113.03853,28.135795","level":"district","districts":[]},{"citycode":"0731","adcode":"430103","name":"\u5929\u5fc3\u533a","center":"112.98978,28.114544","level":"district","districts":[]},{"citycode":"0731","adcode":"430121","name":"\u957f\u6c99\u53bf","center":"113.080555,28.246821","level":"district","districts":[]},{"citycode":"0731","adcode":"430112","name":"\u671b\u57ce\u533a","center":"112.83125,28.353221","level":"district","districts":[]}]},{"citycode":"0739","adcode":"430500","name":"\u90b5\u9633\u5e02","center":"111.467855,27.239528","level":"city","districts":[{"citycode":"0739","adcode":"430527","name":"\u7ee5\u5b81\u53bf","center":"110.155532,26.582027","level":"district","districts":[]},{"citycode":"0739","adcode":"430503","name":"\u5927\u7965\u533a","center":"111.438892,27.222078","level":"district","districts":[]},{"citycode":"0739","adcode":"430502","name":"\u53cc\u6e05\u533a","center":"111.496946,27.232286","level":"district","districts":[]},{"citycode":"0739","adcode":"430511","name":"\u5317\u5854\u533a","center":"111.451988,27.246244","level":"district","districts":[]},{"citycode":"0739","adcode":"430529","name":"\u57ce\u6b65\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"110.322239,26.390598","level":"district","districts":[]},{"citycode":"0739","adcode":"430524","name":"\u9686\u56de\u53bf","center":"111.032437,27.113978","level":"district","districts":[]},{"citycode":"0739","adcode":"430525","name":"\u6d1e\u53e3\u53bf","center":"110.575962,27.060274","level":"district","districts":[]},{"citycode":"0739","adcode":"430522","name":"\u65b0\u90b5\u53bf","center":"111.458656,27.320917","level":"district","districts":[]},{"citycode":"0739","adcode":"430582","name":"\u90b5\u4e1c\u5e02","center":"111.744268,27.259812","level":"district","districts":[]},{"citycode":"0739","adcode":"430528","name":"\u65b0\u5b81\u53bf","center":"110.857294,26.432913","level":"district","districts":[]},{"citycode":"0739","adcode":"430523","name":"\u90b5\u9633\u53bf","center":"111.273872,26.990785","level":"district","districts":[]},{"citycode":"0739","adcode":"430581","name":"\u6b66\u5188\u5e02","center":"110.632286,26.727414","level":"district","districts":[]}]},{"citycode":"0732","adcode":"430300","name":"\u6e58\u6f6d\u5e02","center":"112.945439,27.83136","level":"city","districts":[{"citycode":"0732","adcode":"430304","name":"\u5cb3\u5858\u533a","center":"112.969444,27.872013","level":"district","districts":[]},{"citycode":"0732","adcode":"430302","name":"\u96e8\u6e56\u533a","center":"112.907334,27.856115","level":"district","districts":[]},{"citycode":"0732","adcode":"430382","name":"\u97f6\u5c71\u5e02","center":"112.525364,27.914796","level":"district","districts":[]},{"citycode":"0732","adcode":"430321","name":"\u6e58\u6f6d\u53bf","center":"112.950767,27.779669","level":"district","districts":[]},{"citycode":"0732","adcode":"430381","name":"\u6e58\u4e61\u5e02","center":"112.550268,27.718655","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"460000","name":"\u6d77\u5357\u7701","center":"110.348781,20.018639","level":"province","districts":[{"citycode":"1892","adcode":"469022","name":"\u5c6f\u660c\u53bf","center":"110.101667,19.351662","level":"city","districts":[{"citycode":"1892","adcode":"469022","name":"\u897f\u660c\u9547","center":"109.953863,19.415440","level":"street","districts":[]},{"citycode":"1892","adcode":"469022","name":"\u5761\u5fc3\u9547","center":"110.214429,19.310397","level":"street","districts":[]},{"citycode":"1892","adcode":"469022","name":"\u67ab\u6728\u9547","center":"109.973395,19.190743","level":"street","districts":[]},{"citycode":"1892","adcode":"469022","name":"\u5357\u5764\u9547","center":"110.034905,19.407514","level":"street","districts":[]},{"citycode":"1892","adcode":"469022","name":"\u4e4c\u5761\u9547","center":"110.083261,19.206717","level":"street","districts":[]},{"citycode":"1892","adcode":"469022","name":"\u5c6f\u57ce\u9547","center":"110.180636,19.319861","level":"street","districts":[]},{"citycode":"1892","adcode":"469022","name":"\u5357\u5415\u9547","center":"110.042989,19.268166","level":"street","districts":[]},{"citycode":"1892","adcode":"469022","name":"\u65b0\u5174\u9547","center":"110.136198,19.558967","level":"street","districts":[]}]},{"citycode":"0802","adcode":"469025","name":"\u767d\u6c99\u9ece\u65cf\u81ea\u6cbb\u53bf","center":"109.4429,19.221641","level":"city","districts":[{"citycode":"0802","adcode":"469025","name":"\u5357\u5f00\u4e61","center":"109.293018,19.059602","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u961c\u9f99\u4e61","center":"109.436387,19.331650","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u7ec6\u6c34\u4e61","center":"109.526636,19.201248","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u7259\u53c9\u9547","center":"109.399183,19.138439","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u5143\u95e8\u4e61","center":"109.449713,19.095705","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u6253\u5b89\u9547","center":"109.358207,19.378075","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u91d1\u6ce2\u4e61","center":"109.171689,19.276555","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u9752\u677e\u4e61","center":"109.293018,19.059602","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u4e03\u574a\u9547","center":"109.279730,19.352890","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u8363\u90a6\u4e61","center":"109.047772,19.432678","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u90a6\u6eaa\u9547","center":"109.047858,19.368662","level":"street","districts":[]}]},{"citycode":"2802","adcode":"469027","name":"\u4e50\u4e1c\u9ece\u65cf\u81ea\u6cbb\u53bf","center":"109.173384,18.750063","level":"city","districts":[{"citycode":"2802","adcode":"469027","name":"\u9ec4\u6d41\u9547","center":"108.804819,18.594264","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u4f5b\u7f57\u9547","center":"108.787906,18.578596","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u5c16\u5cf0\u9547","center":"108.843833,18.624901","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u5fd7\u4ef2\u9547","center":"109.386810,18.609590","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u5927\u5b89\u9547","center":"109.231993,18.734953","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u4e07\u51b2\u9547","center":"109.345394,18.890397","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u4e5d\u6240\u9547","center":"109.080605,18.450650","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u5343\u5bb6\u9547","center":"109.149747,18.465259","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u5229\u56fd\u9547","center":"108.938223,18.495361","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u83ba\u6b4c\u6d77\u9547","center":"108.755614,18.536206","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u62b1\u7531\u9547","center":"109.028473,18.796829","level":"street","districts":[]}]},{"citycode":"0807","adcode":"469007","name":"\u4e1c\u65b9\u5e02","center":"108.651829,19.095187","level":"city","districts":[{"citycode":"0807","adcode":"469007","name":"\u516b\u6240\u9547","center":"108.773554,19.081696","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u5927\u7530\u9547","center":"108.771554,19.042603","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u677f\u6865\u9547","center":"108.910695,18.807162","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u56db\u66f4\u9547","center":"108.596055,19.187648","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u611f\u57ce\u9547","center":"108.787859,18.842201","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u6c5f\u8fb9\u4e61","center":"109.091697,18.906129","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u4e09\u5bb6\u9547","center":"108.833188,19.259935","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u4e1c\u6cb3\u9547","center":"109.019193,19.039242","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u5929\u5b89\u4e61","center":"108.854531,19.037791","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u65b0\u9f99\u9547","center":"108.700528,19.035446","level":"street","districts":[]}]},{"citycode":"1899","adcode":"469030","name":"\u743c\u4e2d\u9ece\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"109.838423,19.03327","level":"city","districts":[{"citycode":"1899","adcode":"469030","name":"\u4ec0\u8fd0\u4e61","center":"109.583026,18.923692","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u9ece\u6bcd\u5c71\u9547","center":"109.824353,19.190837","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u4e0a\u5b89\u4e61","center":"109.712993,18.899738","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u7ea2\u6bdb\u9547","center":"109.608031,19.033716","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u6e7e\u5cad\u9547","center":"109.865175,19.096504","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u540a\u7f57\u5c71\u4e61","center":"109.811113,18.766916","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u8425\u6839\u9547","center":"109.743124,19.055622","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u4e2d\u5e73\u9547","center":"110.032689,18.966494","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u957f\u5f81\u9547","center":"109.813077,18.984538","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u548c\u5e73\u9547","center":"110.071277,18.773381","level":"street","districts":[]}]},{"citycode":"0809","adcode":"469028","name":"\u9675\u6c34\u9ece\u65cf\u81ea\u6cbb\u53bf","center":"110.037553,18.506045","level":"city","districts":[{"citycode":"0809","adcode":"469028","name":"\u6930\u6797\u9547","center":"110.019690,18.482546","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u65b0\u6751\u9547","center":"110.026125,18.445965","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u6587\u7f57\u9547","center":"109.914457,18.573364","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u9ece\u5b89\u9547","center":"110.027365,18.450385","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u7fa4\u82f1\u4e61","center":"109.847456,18.569653","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u63d0\u8499\u4e61","center":"110.013235,18.640359","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u4e09\u624d\u9547","center":"109.963149,18.491519","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u9686\u5e7f\u9547","center":"109.857549,18.480188","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u82f1\u5dde\u9547","center":"109.875526,18.473898","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u672c\u53f7\u9547","center":"109.837130,18.632318","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u5149\u5761\u9547","center":"110.036496,18.559416","level":"street","districts":[]}]},{"citycode":"2898","adcode":"460300","name":"\u4e09\u6c99\u5e02","center":"112.338649,16.831004","level":"city","districts":[{"citycode":"2898","adcode":"460302","name":"\u897f\u6c99\u533a","center":"112.346961,16.834372","level":"district","districts":[]},{"citycode":"2898","adcode":"460303","name":"\u5357\u6c99\u533a","center":"112.896229,9.548531","level":"district","districts":[]}]},{"citycode":"1893","adcode":"469005","name":"\u6587\u660c\u5e02","center":"110.797473,19.544234","level":"city","districts":[{"citycode":"1893","adcode":"469005","name":"\u6587\u6559\u9547","center":"110.855856,19.708320","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u94fa\u524d\u9547","center":"110.675271,20.037734","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u4e1c\u90ca\u9547","center":"110.910447,19.629115","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u9f99\u697c\u9547","center":"110.938472,19.660636","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u660c\u6d12\u9547","center":"110.894780,19.826152","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u9526\u5c71\u9547","center":"110.664000,20.027062","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u516c\u5761\u9547","center":"110.826694,19.852259","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u51af\u5761\u9547","center":"110.790950,20.028869","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u4e1c\u8def\u9547","center":"110.635704,19.755873","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u4f1a\u6587\u9547","center":"110.740895,19.498601","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u4e1c\u9601\u9547","center":"110.855599,19.705977","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u6587\u57ce\u9547","center":"110.707616,19.498201","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u84ec\u83b1\u9547","center":"110.507886,19.511678","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u6f6d\u725b\u9547","center":"110.773474,19.744417","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u62b1\u7f57\u9547","center":"110.698537,19.833022","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u91cd\u5174\u9547","center":"110.563557,19.487059","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u7fc1\u7530\u9547","center":"110.961537,20.024271","level":"street","districts":[]}]},{"citycode":"1896","adcode":"469024","name":"\u4e34\u9ad8\u53bf","center":"109.690508,19.912025","level":"city","districts":[{"citycode":"1896","adcode":"469024","name":"\u5357\u5b9d\u9547","center":"109.638149,19.751609","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u535a\u539a\u9547","center":"109.807195,19.989365","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u65b0\u76c8\u9547","center":"109.467340,19.903531","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u548c\u820d\u9547","center":"109.714907,19.671698","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u8c03\u697c\u9547","center":"109.609769,19.923138","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u4e1c\u82f1\u9547","center":"109.612973,19.934938","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u52a0\u6765\u9547","center":"109.650909,19.759074","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u4e34\u57ce\u9547","center":"109.632657,19.753184","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u591a\u6587\u9547","center":"109.751742,19.673620","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u7687\u6850\u9547","center":"109.856872,19.732264","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u6ce2\u83b2\u9547","center":"109.614806,19.855541","level":"street","districts":[]}]},{"citycode":"0899","adcode":"460200","name":"\u4e09\u4e9a\u5e02","center":"109.511709,18.252865","level":"city","districts":[{"citycode":"0899","adcode":"460205","name":"\u5d16\u5dde\u533a","center":"109.172298,18.357572","level":"district","districts":[]},{"citycode":"0899","adcode":"460202","name":"\u6d77\u68e0\u533a","center":"109.735676,18.384177","level":"district","districts":[]},{"citycode":"0899","adcode":"460203","name":"\u5409\u9633\u533a","center":"109.578238,18.28146","level":"district","districts":[]},{"citycode":"0899","adcode":"460204","name":"\u5929\u6daf\u533a","center":"109.452325,18.298975","level":"district","districts":[]}]},{"citycode":"0801","adcode":"469029","name":"\u4fdd\u4ead\u9ece\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"109.700279,18.640339","level":"city","districts":[{"citycode":"0801","adcode":"469029","name":"\u5357\u6797\u4e61","center":"109.576563,18.389262","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u6bdb\u611f\u4e61","center":"109.503131,18.556288","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u65b0\u653f\u9547","center":"109.603989,18.435464","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u54cd\u6c34\u9547","center":"109.550646,18.610753","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u4e09\u9053\u9547","center":"109.702909,18.430953","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u52a0\u8302\u9547","center":"109.674549,18.516922","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u516d\u5f13\u4e61","center":"109.744740,18.574041","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u4ec0\u73b2\u9547","center":"109.736545,18.697785","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u4fdd\u57ce\u9547","center":"109.773883,18.600774","level":"street","districts":[]}]},{"citycode":"1897","adcode":"469001","name":"\u4e94\u6307\u5c71\u5e02","center":"109.516784,18.774827","level":"city","districts":[{"citycode":"1897","adcode":"469001","name":"\u6bdb\u9633\u9547","center":"109.449705,18.881089","level":"street","districts":[]},{"citycode":"1897","adcode":"469001","name":"\u6c34\u6ee1\u4e61","center":"109.600698,18.899478","level":"street","districts":[]},{"citycode":"1897","adcode":"469001","name":"\u756a\u9633\u9547","center":"109.333537,18.913174","level":"street","districts":[]},{"citycode":"1897","adcode":"469001","name":"\u6bdb\u9053\u4e61","center":"109.356022,18.713388","level":"street","districts":[]},{"citycode":"1897","adcode":"469001","name":"\u7545\u597d\u4e61","center":"109.383431,18.682307","level":"street","districts":[]},{"citycode":"1897","adcode":"469001","name":"\u901a\u4ec0\u9547","center":"109.623006,18.822353","level":"street","districts":[]},{"citycode":"1897","adcode":"469001","name":"\u5357\u5723\u9547","center":"109.684604,18.822608","level":"street","districts":[]}]},{"citycode":"0804","adcode":"469023","name":"\u6f84\u8fc8\u53bf","center":"110.007497,19.738885","level":"city","districts":[{"citycode":"0804","adcode":"469023","name":"\u8001\u57ce\u9547","center":"110.152799,19.872233","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u5927\u4e30\u9547","center":"109.988855,19.904039","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u745e\u6eaa\u9547","center":"110.111302,19.789006","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u52a0\u4e50\u9547","center":"110.061273,19.617646","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u4e2d\u5174\u9547","center":"109.760023,19.528937","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u4ec1\u5174\u9547","center":"109.776963,19.382054","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u6587\u5112\u9547","center":"110.134745,19.633652","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u6865\u5934\u9547","center":"109.936766,19.914013","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u91d1\u6c5f\u9547","center":"109.976112,19.774256","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u798f\u5c71\u9547","center":"109.919175,19.929023","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u6c38\u53d1\u9547","center":"110.186668,19.641706","level":"street","districts":[]}]},{"citycode":"0803","adcode":"469026","name":"\u660c\u6c5f\u9ece\u65cf\u81ea\u6cbb\u53bf","center":"109.055783,19.298139","level":"city","districts":[{"citycode":"0803","adcode":"469026","name":"\u4e4c\u70c8\u9547","center":"108.809852,19.352543","level":"street","districts":[]},{"citycode":"0803","adcode":"469026","name":"\u53c9\u6cb3\u9547","center":"108.997547,19.244929","level":"street","districts":[]},{"citycode":"0803","adcode":"469026","name":"\u77f3\u788c\u9547","center":"108.997547,19.244929","level":"street","districts":[]},{"citycode":"0803","adcode":"469026","name":"\u660c\u5316\u9547","center":"108.731720,19.383636","level":"street","districts":[]},{"citycode":"0803","adcode":"469026","name":"\u738b\u4e0b\u4e61","center":"109.094025,18.905182","level":"street","districts":[]},{"citycode":"0803","adcode":"469026","name":"\u4e03\u53c9\u9547","center":"109.077512,19.190357","level":"street","districts":[]},{"citycode":"0803","adcode":"469026","name":"\u6d77\u5c3e\u9547","center":"108.765323,19.400954","level":"street","districts":[]},{"citycode":"0803","adcode":"469026","name":"\u5341\u6708\u7530\u9547","center":"108.847421,19.296495","level":"street","districts":[]}]},{"citycode":"0806","adcode":"469021","name":"\u5b9a\u5b89\u53bf","center":"110.358001,19.681215","level":"city","districts":[{"citycode":"0806","adcode":"469021","name":"\u5cad\u53e3\u9547","center":"110.276026,19.360104","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u9f99\u95e8\u9547","center":"110.297826,19.499676","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u9f99\u6cb3\u9547","center":"110.258715,19.361056","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u7ff0\u6797\u9547","center":"110.285870,19.349021","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u5bcc\u6587\u9547","center":"110.223762,19.422974","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u65b0\u7af9\u9547","center":"110.165312,19.577271","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u9f99\u6e56\u9547","center":"110.405612,19.607283","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u5b9a\u57ce\u9547","center":"110.369406,19.715830","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u96f7\u9e23\u9547","center":"110.268491,19.592293","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u9ec4\u7af9\u9547","center":"110.351241,19.451448","level":"street","districts":[]}]},{"citycode":"0898","adcode":"460100","name":"\u6d77\u53e3\u5e02","center":"110.200162,20.046316","level":"city","districts":[{"citycode":"0898","adcode":"460108","name":"\u7f8e\u5170\u533a","center":"110.366359,20.028983","level":"district","districts":[]},{"citycode":"0898","adcode":"460107","name":"\u743c\u5c71\u533a","center":"110.384318,19.984293","level":"district","districts":[]},{"citycode":"0898","adcode":"460105","name":"\u79c0\u82f1\u533a","center":"110.293566,20.007703","level":"district","districts":[]},{"citycode":"0898","adcode":"460106","name":"\u9f99\u534e\u533a","center":"110.328628,20.030843","level":"district","districts":[]}]},{"citycode":"0805","adcode":"460400","name":"\u510b\u5dde\u5e02","center":"109.580812,19.520948","level":"city","districts":[{"citycode":"0805","adcode":"460400","name":"\u65b0\u5dde\u9547","center":"109.376729,19.708256","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u6d77\u5934\u9547","center":"109.028046,19.432317","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u4e2d\u548c\u9547","center":"109.351017,19.774675","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u5ce8\u8513\u9547","center":"109.332639,19.843794","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u4e09\u90fd\u8857\u9053","center":"109.204266,19.830050","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u738b\u4e94\u9547","center":"109.285186,19.573624","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u96c5\u661f\u9547","center":"109.305133,19.393438","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u548c\u5e86\u9547","center":"109.739681,19.587333","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u4e1c\u6210\u9547","center":"109.521624,19.772032","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u6728\u68e0\u9547","center":"109.346666,19.900381","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u5927\u6210\u9547","center":"109.371806,19.478206","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u5170\u6d0b\u9547","center":"109.735770,19.408360","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u5357\u4e30\u9547","center":"109.543297,19.504378","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u5149\u6751\u9547","center":"109.491796,19.748663","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u767d\u9a6c\u4e95\u9547","center":"109.274243,19.631272","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u6392\u6d66\u9547","center":"109.212152,19.637338","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u90a3\u5927\u9547","center":"109.555399,19.500960","level":"street","districts":[]}]},{"citycode":"1894","adcode":"469002","name":"\u743c\u6d77\u5e02","center":"110.474524,19.259112","level":"city","districts":[{"citycode":"1894","adcode":"469002","name":"\u957f\u5761\u9547","center":"110.497644,19.427753","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u9f99\u6c5f\u9547","center":"110.377839,19.152396","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u77f3\u58c1\u9547","center":"110.330819,19.151644","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u9633\u6c5f\u9547","center":"110.343829,19.128946","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u4f1a\u5c71\u9547","center":"110.153445,19.012397","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u6f6d\u95e8\u9547","center":"110.539051,19.210843","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u5927\u8def\u9547","center":"110.467128,19.442368","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u5609\u79ef\u9547","center":"110.421334,19.291689","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u4e07\u6cc9\u9547","center":"110.414108,19.355227","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u535a\u9ccc\u9547","center":"110.492863,19.177047","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u4e2d\u539f\u9547","center":"110.426258,19.056245","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u5854\u6d0b\u9547","center":"110.471660,19.324626","level":"street","districts":[]}]},{"citycode":"1898","adcode":"469006","name":"\u4e07\u5b81\u5e02","center":"110.392605,18.793697","level":"city","districts":[{"citycode":"1898","adcode":"469006","name":"\u540e\u5b89\u9547","center":"110.374318,18.908719","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u548c\u4e50\u9547","center":"110.415860,18.962463","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u4e1c\u6fb3\u9547","center":"110.429479,18.640771","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u5c71\u6839\u9547","center":"110.451557,18.990371","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u9f99\u6eda\u9547","center":"110.524041,19.000502","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u5927\u8302\u9547","center":"110.391696,18.876747","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u5317\u5927\u9547","center":"110.418437,18.985185","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u4e07\u57ce\u9547","center":"110.412512,18.826291","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u4e09\u66f4\u7f57\u9547","center":"110.113025,18.948777","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u793c\u7eaa\u9547","center":"110.265921,18.748523","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u957f\u4e30\u9547","center":"110.281098,18.855580","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u5357\u6865\u9547","center":"110.031092,18.749525","level":"street","districts":[]}]}]},{"citycode":[],"adcode":"320000","name":"\u6c5f\u82cf\u7701","center":"118.763563,32.061377","level":"province","districts":[{"citycode":"0518","adcode":"320700","name":"\u8fde\u4e91\u6e2f\u5e02","center":"119.221487,34.596639","level":"city","districts":[{"citycode":"0518","adcode":"320707","name":"\u8d63\u6986\u533a","center":"119.173173,34.841336","level":"district","districts":[]},{"citycode":"0518","adcode":"320703","name":"\u8fde\u4e91\u533a","center":"119.338901,34.760317","level":"district","districts":[]},{"citycode":"0518","adcode":"320722","name":"\u4e1c\u6d77\u53bf","center":"118.752869,34.542194","level":"district","districts":[]},{"citycode":"0518","adcode":"320724","name":"\u704c\u5357\u53bf","center":"119.315583,34.087251","level":"district","districts":[]},{"citycode":"0518","adcode":"320706","name":"\u6d77\u5dde\u533a","center":"119.163492,34.572506","level":"district","districts":[]},{"citycode":"0518","adcode":"320723","name":"\u704c\u4e91\u53bf","center":"119.239426,34.284074","level":"district","districts":[]}]},{"citycode":"0513","adcode":"320600","name":"\u5357\u901a\u5e02","center":"120.894522,31.981269","level":"city","districts":[{"citycode":"0513","adcode":"320623","name":"\u5982\u4e1c\u53bf","center":"121.18495,32.331584","level":"district","districts":[]},{"citycode":"0513","adcode":"320681","name":"\u542f\u4e1c\u5e02","center":"121.65523,31.792831","level":"district","districts":[]},{"citycode":"0513","adcode":"320613","name":"\u5d07\u5ddd\u533a","center":"120.857253,32.010277","level":"district","districts":[]},{"citycode":"0513","adcode":"320612","name":"\u901a\u5dde\u533a","center":"121.073742,32.065972","level":"district","districts":[]},{"citycode":"0513","adcode":"320614","name":"\u6d77\u95e8\u533a","center":"121.182016,31.869418","level":"district","districts":[]},{"citycode":"0513","adcode":"320682","name":"\u5982\u768b\u5e02","center":"120.574028,32.371493","level":"district","districts":[]},{"citycode":"0513","adcode":"320685","name":"\u6d77\u5b89\u5e02","center":"120.46779,32.532853","level":"district","districts":[]}]},{"citycode":"025","adcode":"320100","name":"\u5357\u4eac\u5e02","center":"118.796624,32.059344","level":"city","districts":[{"citycode":"025","adcode":"320115","name":"\u6c5f\u5b81\u533a","center":"118.83951,31.953195","level":"district","districts":[]},{"citycode":"025","adcode":"320114","name":"\u96e8\u82b1\u53f0\u533a","center":"118.779087,31.991291","level":"district","districts":[]},{"citycode":"025","adcode":"320118","name":"\u9ad8\u6df3\u533a","center":"118.892074,31.328678","level":"district","districts":[]},{"citycode":"025","adcode":"320117","name":"\u6ea7\u6c34\u533a","center":"119.028414,31.651108","level":"district","districts":[]},{"citycode":"025","adcode":"320106","name":"\u9f13\u697c\u533a","center":"118.769943,32.066814","level":"district","districts":[]},{"citycode":"025","adcode":"320111","name":"\u6d66\u53e3\u533a","center":"118.627165,32.059796","level":"district","districts":[]},{"citycode":"025","adcode":"320105","name":"\u5efa\u90ba\u533a","center":"118.731642,32.003343","level":"district","districts":[]},{"citycode":"025","adcode":"320102","name":"\u7384\u6b66\u533a","center":"118.797779,32.048644","level":"district","districts":[]},{"citycode":"025","adcode":"320104","name":"\u79e6\u6dee\u533a","center":"118.794792,32.039065","level":"district","districts":[]},{"citycode":"025","adcode":"320116","name":"\u516d\u5408\u533a","center":"118.822241,32.323235","level":"district","districts":[]},{"citycode":"025","adcode":"320113","name":"\u6816\u971e\u533a","center":"118.909117,32.096423","level":"district","districts":[]}]},{"citycode":"0512","adcode":"320500","name":"\u82cf\u5dde\u5e02","center":"120.585294,31.299758","level":"city","districts":[{"citycode":"0512","adcode":"320505","name":"\u864e\u4e18\u533a","center":"120.434238,31.329601","level":"district","districts":[]},{"citycode":"0512","adcode":"320585","name":"\u592a\u4ed3\u5e02","center":"121.130344,31.458043","level":"district","districts":[]},{"citycode":"0512","adcode":"320508","name":"\u59d1\u82cf\u533a","center":"120.617367,31.335648","level":"district","districts":[]},{"citycode":"0512","adcode":"320581","name":"\u5e38\u719f\u5e02","center":"120.752512,31.656016","level":"district","districts":[]},{"citycode":"0512","adcode":"320583","name":"\u6606\u5c71\u5e02","center":"120.980795,31.385476","level":"district","districts":[]},{"citycode":"0512","adcode":"320509","name":"\u5434\u6c5f\u533a","center":"120.645728,31.138525","level":"district","districts":[]},{"citycode":"0512","adcode":"320506","name":"\u5434\u4e2d\u533a","center":"120.632094,31.263604","level":"district","districts":[]},{"citycode":"0512","adcode":"320582","name":"\u5f20\u5bb6\u6e2f\u5e02","center":"120.555979,31.876739","level":"district","districts":[]},{"citycode":"0512","adcode":"320507","name":"\u76f8\u57ce\u533a","center":"120.642391,31.369189","level":"district","districts":[]}]},{"citycode":"0527","adcode":"321300","name":"\u5bbf\u8fc1\u5e02","center":"118.275228,33.963186","level":"city","districts":[{"citycode":"0527","adcode":"321302","name":"\u5bbf\u57ce\u533a","center":"118.242048,33.963891","level":"district","districts":[]},{"citycode":"0527","adcode":"321311","name":"\u5bbf\u8c6b\u533a","center":"118.330423,33.94813","level":"district","districts":[]},{"citycode":"0527","adcode":"321323","name":"\u6cd7\u9633\u53bf","center":"118.703636,33.723576","level":"district","districts":[]},{"citycode":"0527","adcode":"321322","name":"\u6cad\u9633\u53bf","center":"118.804321,34.110642","level":"district","districts":[]},{"citycode":"0527","adcode":"321324","name":"\u6cd7\u6d2a\u53bf","center":"118.223941,33.476575","level":"district","districts":[]}]},{"citycode":"0514","adcode":"321000","name":"\u626c\u5dde\u5e02","center":"119.412834,32.394404","level":"city","districts":[{"citycode":"0514","adcode":"321002","name":"\u5e7f\u9675\u533a","center":"119.431785,32.395654","level":"district","districts":[]},{"citycode":"0514","adcode":"321081","name":"\u4eea\u5f81\u5e02","center":"119.184468,32.272833","level":"district","districts":[]},{"citycode":"0514","adcode":"321084","name":"\u9ad8\u90ae\u5e02","center":"119.45892,32.781606","level":"district","districts":[]},{"citycode":"0514","adcode":"321003","name":"\u9097\u6c5f\u533a","center":"119.397935,32.37741","level":"district","districts":[]},{"citycode":"0514","adcode":"321023","name":"\u5b9d\u5e94\u53bf","center":"119.358389,33.241125","level":"district","districts":[]},{"citycode":"0514","adcode":"321012","name":"\u6c5f\u90fd\u533a","center":"119.569684,32.43571","level":"district","districts":[]}]},{"citycode":"0511","adcode":"321100","name":"\u9547\u6c5f\u5e02","center":"119.424441,32.188141","level":"city","districts":[{"citycode":"0511","adcode":"321112","name":"\u4e39\u5f92\u533a","center":"119.433854,32.132118","level":"district","districts":[]},{"citycode":"0511","adcode":"321102","name":"\u4eac\u53e3\u533a","center":"119.470186,32.198285","level":"district","districts":[]},{"citycode":"0511","adcode":"321111","name":"\u6da6\u5dde\u533a","center":"119.411383,32.195146","level":"district","districts":[]},{"citycode":"0511","adcode":"321181","name":"\u4e39\u9633\u5e02","center":"119.606071,32.010035","level":"district","districts":[]},{"citycode":"0511","adcode":"321182","name":"\u626c\u4e2d\u5e02","center":"119.796816,32.236476","level":"district","districts":[]},{"citycode":"0511","adcode":"321183","name":"\u53e5\u5bb9\u5e02","center":"119.168693,31.945732","level":"district","districts":[]}]},{"citycode":"0517","adcode":"320800","name":"\u6dee\u5b89\u5e02","center":"119.113166,33.551495","level":"city","districts":[{"citycode":"0517","adcode":"320830","name":"\u76f1\u7719\u53bf","center":"118.544545,33.011905","level":"district","districts":[]},{"citycode":"0517","adcode":"320831","name":"\u91d1\u6e56\u53bf","center":"119.020432,33.024663","level":"district","districts":[]},{"citycode":"0517","adcode":"320813","name":"\u6d2a\u6cfd\u533a","center":"118.873132,33.294095","level":"district","districts":[]},{"citycode":"0517","adcode":"320804","name":"\u6dee\u9634\u533a","center":"119.034895,33.632588","level":"district","districts":[]},{"citycode":"0517","adcode":"320826","name":"\u6d9f\u6c34\u53bf","center":"119.260589,33.781648","level":"district","districts":[]},{"citycode":"0517","adcode":"320812","name":"\u6e05\u6c5f\u6d66\u533a","center":"119.026662,33.552579","level":"district","districts":[]},{"citycode":"0517","adcode":"320803","name":"\u6dee\u5b89\u533a","center":"119.167809,33.531037","level":"district","districts":[]}]},{"citycode":"0516","adcode":"320300","name":"\u5f90\u5dde\u5e02","center":"117.283752,34.204224","level":"city","districts":[{"citycode":"0516","adcode":"320311","name":"\u6cc9\u5c71\u533a","center":"117.194405,34.22655","level":"district","districts":[]},{"citycode":"0516","adcode":"320312","name":"\u94dc\u5c71\u533a","center":"117.169698,34.181162","level":"district","districts":[]},{"citycode":"0516","adcode":"320322","name":"\u6c9b\u53bf","center":"116.936353,34.760761","level":"district","districts":[]},{"citycode":"0516","adcode":"320302","name":"\u9f13\u697c\u533a","center":"117.185643,34.288736","level":"district","districts":[]},{"citycode":"0516","adcode":"320382","name":"\u90b3\u5dde\u5e02","center":"118.012511,34.339208","level":"district","districts":[]},{"citycode":"0516","adcode":"320305","name":"\u8d3e\u6c6a\u533a","center":"117.465137,34.436492","level":"district","districts":[]},{"citycode":"0516","adcode":"320303","name":"\u4e91\u9f99\u533a","center":"117.251515,34.253638","level":"district","districts":[]},{"citycode":"0516","adcode":"320381","name":"\u65b0\u6c82\u5e02","center":"118.354747,34.369585","level":"district","districts":[]},{"citycode":"0516","adcode":"320324","name":"\u7762\u5b81\u53bf","center":"117.941364,33.913727","level":"district","districts":[]},{"citycode":"0516","adcode":"320321","name":"\u4e30\u53bf","center":"116.658111,34.697232","level":"district","districts":[]}]},{"citycode":"0519","adcode":"320400","name":"\u5e38\u5dde\u5e02","center":"119.974092,31.811313","level":"city","districts":[{"citycode":"0519","adcode":"320413","name":"\u91d1\u575b\u533a","center":"119.587503,31.722384","level":"district","districts":[]},{"citycode":"0519","adcode":"320411","name":"\u65b0\u5317\u533a","center":"119.960925,31.86355","level":"district","districts":[]},{"citycode":"0519","adcode":"320404","name":"\u949f\u697c\u533a","center":"119.902081,31.802608","level":"district","districts":[]},{"citycode":"0519","adcode":"320481","name":"\u6ea7\u9633\u5e02","center":"119.484164,31.416967","level":"district","districts":[]},{"citycode":"0519","adcode":"320412","name":"\u6b66\u8fdb\u533a","center":"119.942441,31.701252","level":"district","districts":[]},{"citycode":"0519","adcode":"320402","name":"\u5929\u5b81\u533a","center":"119.999439,31.79232","level":"district","districts":[]}]},{"citycode":"0510","adcode":"320200","name":"\u65e0\u9521\u5e02","center":"120.311889,31.491064","level":"city","districts":[{"citycode":"0510","adcode":"320206","name":"\u60e0\u5c71\u533a","center":"120.29843,31.680282","level":"district","districts":[]},{"citycode":"0510","adcode":"320211","name":"\u6ee8\u6e56\u533a","center":"120.284381,31.527846","level":"district","districts":[]},{"citycode":"0510","adcode":"320282","name":"\u5b9c\u5174\u5e02","center":"119.821873,31.338429","level":"district","districts":[]},{"citycode":"0510","adcode":"320214","name":"\u65b0\u5434\u533a","center":"120.364303,31.49085","level":"district","districts":[]},{"citycode":"0510","adcode":"320213","name":"\u6881\u6eaa\u533a","center":"120.303551,31.566226","level":"district","districts":[]},{"citycode":"0510","adcode":"320281","name":"\u6c5f\u9634\u5e02","center":"120.284794,31.921642","level":"district","districts":[]},{"citycode":"0510","adcode":"320205","name":"\u9521\u5c71\u533a","center":"120.357732,31.589484","level":"district","districts":[]}]},{"citycode":"0515","adcode":"320900","name":"\u76d0\u57ce\u5e02","center":"120.16263,33.348176","level":"city","districts":[{"citycode":"0515","adcode":"320924","name":"\u5c04\u9633\u53bf","center":"120.326338,33.766277","level":"district","districts":[]},{"citycode":"0515","adcode":"320922","name":"\u6ee8\u6d77\u53bf","center":"119.820713,33.990372","level":"district","districts":[]},{"citycode":"0515","adcode":"320921","name":"\u54cd\u6c34\u53bf","center":"119.578332,34.199172","level":"district","districts":[]},{"citycode":"0515","adcode":"320903","name":"\u76d0\u90fd\u533a","center":"120.153567,33.338538","level":"district","districts":[]},{"citycode":"0515","adcode":"320904","name":"\u5927\u4e30\u533a","center":"120.500761,33.200047","level":"district","districts":[]},{"citycode":"0515","adcode":"320902","name":"\u4ead\u6e56\u533a","center":"120.196148,33.391414","level":"district","districts":[]},{"citycode":"0515","adcode":"320925","name":"\u5efa\u6e56\u53bf","center":"119.788743,33.438931","level":"district","districts":[]},{"citycode":"0515","adcode":"320923","name":"\u961c\u5b81\u53bf","center":"119.802271,33.758857","level":"district","districts":[]},{"citycode":"0515","adcode":"320981","name":"\u4e1c\u53f0\u5e02","center":"120.320308,32.867845","level":"district","districts":[]}]},{"citycode":"0523","adcode":"321200","name":"\u6cf0\u5dde\u5e02","center":"119.922883,32.456692","level":"city","districts":[{"citycode":"0523","adcode":"321281","name":"\u5174\u5316\u5e02","center":"119.85255,32.911952","level":"district","districts":[]},{"citycode":"0523","adcode":"321283","name":"\u6cf0\u5174\u5e02","center":"120.051475,32.173072","level":"district","districts":[]},{"citycode":"0523","adcode":"321203","name":"\u9ad8\u6e2f\u533a","center":"119.88154,32.31923","level":"district","districts":[]},{"citycode":"0523","adcode":"321202","name":"\u6d77\u9675\u533a","center":"119.923825,32.49248","level":"district","districts":[]},{"citycode":"0523","adcode":"321204","name":"\u59dc\u5830\u533a","center":"120.12807,32.51029","level":"district","districts":[]},{"citycode":"0523","adcode":"321282","name":"\u9756\u6c5f\u5e02","center":"120.277124,31.98325","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"630000","name":"\u9752\u6d77\u7701","center":"101.780482,36.622538","level":"province","districts":[{"citycode":"0972","adcode":"630200","name":"\u6d77\u4e1c\u5e02","center":"102.41064,36.473448","level":"city","districts":[{"citycode":"0972","adcode":"630202","name":"\u4e50\u90fd\u533a","center":"102.401614,36.482242","level":"district","districts":[]},{"citycode":"0972","adcode":"630222","name":"\u6c11\u548c\u56de\u65cf\u571f\u65cf\u81ea\u6cbb\u53bf","center":"102.830775,36.320038","level":"district","districts":[]},{"citycode":"0972","adcode":"630225","name":"\u5faa\u5316\u6492\u62c9\u65cf\u81ea\u6cbb\u53bf","center":"102.488958,35.851079","level":"district","districts":[]},{"citycode":"0972","adcode":"630224","name":"\u5316\u9686\u56de\u65cf\u81ea\u6cbb\u53bf","center":"102.266031,36.096159","level":"district","districts":[]},{"citycode":"0972","adcode":"630203","name":"\u5e73\u5b89\u533a","center":"102.108538,36.500166","level":"district","districts":[]},{"citycode":"0972","adcode":"630223","name":"\u4e92\u52a9\u571f\u65cf\u81ea\u6cbb\u53bf","center":"101.958519,36.844027","level":"district","districts":[]}]},{"citycode":"0974","adcode":"632500","name":"\u6d77\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"100.622647,36.296399","level":"city","districts":[{"citycode":"0974","adcode":"632523","name":"\u8d35\u5fb7\u53bf","center":"101.43403,36.039672","level":"district","districts":[]},{"citycode":"0974","adcode":"632525","name":"\u8d35\u5357\u53bf","center":"100.747731,35.587239","level":"district","districts":[]},{"citycode":"0974","adcode":"632522","name":"\u540c\u5fb7\u53bf","center":"100.577859,35.254297","level":"district","districts":[]},{"citycode":"0974","adcode":"632524","name":"\u5174\u6d77\u53bf","center":"99.987799,35.589086","level":"district","districts":[]},{"citycode":"0974","adcode":"632521","name":"\u5171\u548c\u53bf","center":"100.619405,36.284158","level":"district","districts":[]}]},{"citycode":"0977","adcode":"632800","name":"\u6d77\u897f\u8499\u53e4\u65cf\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"97.33197,37.348114","level":"city","districts":[{"citycode":"0977","adcode":"632823","name":"\u5929\u5cfb\u53bf","center":"99.02297,37.301206","level":"district","districts":[]},{"citycode":"0977","adcode":"632802","name":"\u5fb7\u4ee4\u54c8\u5e02","center":"97.361528,37.369865","level":"district","districts":[]},{"citycode":"0977","adcode":"632801","name":"\u683c\u5c14\u6728\u5e02","center":"94.928293,36.407272","level":"district","districts":[]},{"citycode":"0977","adcode":"632822","name":"\u90fd\u5170\u53bf","center":"98.095889,36.302098","level":"district","districts":[]},{"citycode":"0977","adcode":"632821","name":"\u4e4c\u5170\u53bf","center":"98.47988,36.941279","level":"district","districts":[]},{"citycode":"0977","adcode":"632825","name":"\u6d77\u897f\u8499\u53e4\u65cf\u85cf\u65cf\u81ea\u6cbb\u5dde\u76f4\u8f96","center":"95.357233,37.853631","level":"district","districts":[]},{"citycode":"0977","adcode":"632803","name":"\u832b\u5d16\u5e02","center":"90.856372,38.247537","level":"district","districts":[]}]},{"citycode":"0976","adcode":"632700","name":"\u7389\u6811\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"97.006292,33.006308","level":"city","districts":[{"citycode":"0976","adcode":"632724","name":"\u6cbb\u591a\u53bf","center":"95.618954,33.844854","level":"district","districts":[]},{"citycode":"0976","adcode":"632726","name":"\u66f2\u9ebb\u83b1\u53bf","center":"95.805463,34.137353","level":"district","districts":[]},{"citycode":"0976","adcode":"632723","name":"\u79f0\u591a\u53bf","center":"97.109487,33.377504","level":"district","districts":[]},{"citycode":"0976","adcode":"632722","name":"\u6742\u591a\u53bf","center":"95.300723,32.893185","level":"district","districts":[]},{"citycode":"0976","adcode":"632701","name":"\u7389\u6811\u5e02","center":"97.009184,32.992934","level":"district","districts":[]},{"citycode":"0976","adcode":"632725","name":"\u56ca\u8c26\u53bf","center":"96.489538,32.203193","level":"district","districts":[]}]},{"citycode":"0973","adcode":"632300","name":"\u9ec4\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"102.015397,35.519317","level":"city","districts":[{"citycode":"0973","adcode":"632301","name":"\u540c\u4ec1\u5e02","center":"102.018663,35.515769","level":"district","districts":[]},{"citycode":"0973","adcode":"632323","name":"\u6cfd\u5e93\u53bf","center":"101.466565,35.035322","level":"district","districts":[]},{"citycode":"0973","adcode":"632322","name":"\u5c16\u624e\u53bf","center":"102.040094,35.943253","level":"district","districts":[]},{"citycode":"0973","adcode":"632324","name":"\u6cb3\u5357\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","center":"101.617719,34.734777","level":"district","districts":[]}]},{"citycode":"0975","adcode":"632600","name":"\u679c\u6d1b\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"100.245161,34.472179","level":"city","districts":[{"citycode":"0975","adcode":"632621","name":"\u739b\u6c81\u53bf","center":"100.238873,34.478049","level":"district","districts":[]},{"citycode":"0975","adcode":"632623","name":"\u7518\u5fb7\u53bf","center":"99.900923,33.969216","level":"district","districts":[]},{"citycode":"0975","adcode":"632624","name":"\u8fbe\u65e5\u53bf","center":"99.651863,33.739293","level":"district","districts":[]},{"citycode":"0975","adcode":"632625","name":"\u4e45\u6cbb\u53bf","center":"101.482831,33.429471","level":"district","districts":[]},{"citycode":"0975","adcode":"632622","name":"\u73ed\u739b\u53bf","center":"100.737138,32.932723","level":"district","districts":[]},{"citycode":"0975","adcode":"632626","name":"\u739b\u591a\u53bf","center":"98.209217,34.915645","level":"district","districts":[]}]},{"citycode":"0970","adcode":"632200","name":"\u6d77\u5317\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"100.900944,36.954612","level":"city","districts":[{"citycode":"0970","adcode":"632223","name":"\u6d77\u664f\u53bf","center":"100.994521,36.896667","level":"district","districts":[]},{"citycode":"0970","adcode":"632221","name":"\u95e8\u6e90\u56de\u65cf\u81ea\u6cbb\u53bf","center":"101.611524,37.388567","level":"district","districts":[]},{"citycode":"0970","adcode":"632224","name":"\u521a\u5bdf\u53bf","center":"100.145662,37.325096","level":"district","districts":[]},{"citycode":"0970","adcode":"632222","name":"\u7941\u8fde\u53bf","center":"100.253211,38.177112","level":"district","districts":[]}]},{"citycode":"0971","adcode":"630100","name":"\u897f\u5b81\u5e02","center":"101.777795,36.616621","level":"city","districts":[{"citycode":"0971","adcode":"630123","name":"\u6e5f\u6e90\u53bf","center":"101.256464,36.682426","level":"district","districts":[]},{"citycode":"0971","adcode":"630121","name":"\u5927\u901a\u56de\u65cf\u571f\u65cf\u81ea\u6cbb\u53bf","center":"101.685503,36.926872","level":"district","districts":[]},{"citycode":"0971","adcode":"630104","name":"\u57ce\u897f\u533a","center":"101.765915,36.628288","level":"district","districts":[]},{"citycode":"0971","adcode":"630105","name":"\u57ce\u5317\u533a","center":"101.766308,36.650064","level":"district","districts":[]},{"citycode":"0971","adcode":"630106","name":"\u6e5f\u4e2d\u533a","center":"101.571683,36.501291","level":"district","districts":[]},{"citycode":"0971","adcode":"630103","name":"\u57ce\u4e2d\u533a","center":"101.705357,36.545545","level":"district","districts":[]},{"citycode":"0971","adcode":"630102","name":"\u57ce\u4e1c\u533a","center":"101.803717,36.599744","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"450000","name":"\u5e7f\u897f\u58ee\u65cf\u81ea\u6cbb\u533a","center":"108.327537,22.816659","level":"province","districts":[{"citycode":"0776","adcode":"451000","name":"\u767e\u8272\u5e02","center":"106.61869,23.90307","level":"city","districts":[{"citycode":"0776","adcode":"451031","name":"\u9686\u6797\u5404\u65cf\u81ea\u6cbb\u53bf","center":"105.343816,24.770649","level":"district","districts":[]},{"citycode":"0776","adcode":"451028","name":"\u4e50\u4e1a\u53bf","center":"106.556564,24.776812","level":"district","districts":[]},{"citycode":"0776","adcode":"451030","name":"\u897f\u6797\u53bf","center":"105.097229,24.50762","level":"district","districts":[]},{"citycode":"0776","adcode":"451002","name":"\u53f3\u6c5f\u533a","center":"106.618151,23.900804","level":"district","districts":[]},{"citycode":"0776","adcode":"451082","name":"\u5e73\u679c\u5e02","center":"107.589768,23.329815","level":"district","districts":[]},{"citycode":"0776","adcode":"451024","name":"\u5fb7\u4fdd\u53bf","center":"106.615087,23.324084","level":"district","districts":[]},{"citycode":"0776","adcode":"451026","name":"\u90a3\u5761\u53bf","center":"105.83234,23.387997","level":"district","districts":[]},{"citycode":"0776","adcode":"451003","name":"\u7530\u9633\u533a","center":"106.915424,23.735631","level":"district","districts":[]},{"citycode":"0776","adcode":"451022","name":"\u7530\u4e1c\u53bf","center":"107.125609,23.596706","level":"district","districts":[]},{"citycode":"0776","adcode":"451081","name":"\u9756\u897f\u5e02","center":"106.417666,23.134375","level":"district","districts":[]},{"citycode":"0776","adcode":"451027","name":"\u51cc\u4e91\u53bf","center":"106.56114,24.347444","level":"district","districts":[]},{"citycode":"0776","adcode":"451029","name":"\u7530\u6797\u53bf","center":"106.22874,24.294627","level":"district","districts":[]}]},{"citycode":"0777","adcode":"450700","name":"\u94a6\u5dde\u5e02","center":"108.654355,21.980894","level":"city","districts":[{"citycode":"0777","adcode":"450702","name":"\u94a6\u5357\u533a","center":"108.657427,21.940438","level":"district","districts":[]},{"citycode":"0777","adcode":"450703","name":"\u94a6\u5317\u533a","center":"108.638738,22.0024","level":"district","districts":[]},{"citycode":"0777","adcode":"450721","name":"\u7075\u5c71\u53bf","center":"109.290698,22.416671","level":"district","districts":[]},{"citycode":"0777","adcode":"450722","name":"\u6d66\u5317\u53bf","center":"109.556232,22.271902","level":"district","districts":[]}]},{"citycode":"0779","adcode":"450500","name":"\u5317\u6d77\u5e02","center":"109.120248,21.481305","level":"city","districts":[{"citycode":"0779","adcode":"450502","name":"\u6d77\u57ce\u533a","center":"109.117256,21.474914","level":"district","districts":[]},{"citycode":"0779","adcode":"450512","name":"\u94c1\u5c71\u6e2f\u533a","center":"109.422099,21.529878","level":"district","districts":[]},{"citycode":"0779","adcode":"450521","name":"\u5408\u6d66\u53bf","center":"109.207236,21.66132","level":"district","districts":[]},{"citycode":"0779","adcode":"450503","name":"\u94f6\u6d77\u533a","center":"109.139689,21.449729","level":"district","districts":[]}]},{"citycode":"0770","adcode":"450600","name":"\u9632\u57ce\u6e2f\u5e02","center":"108.35467,21.686732","level":"city","districts":[{"citycode":"0770","adcode":"450621","name":"\u4e0a\u601d\u53bf","center":"107.983627,22.153671","level":"district","districts":[]},{"citycode":"0770","adcode":"450602","name":"\u6e2f\u53e3\u533a","center":"108.380273,21.643426","level":"district","districts":[]},{"citycode":"0770","adcode":"450603","name":"\u9632\u57ce\u533a","center":"108.353978,21.768826","level":"district","districts":[]},{"citycode":"0770","adcode":"450681","name":"\u4e1c\u5174\u5e02","center":"107.971828,21.547821","level":"district","districts":[]}]},{"citycode":"0778","adcode":"451200","name":"\u6cb3\u6c60\u5e02","center":"108.63639,24.48523","level":"city","districts":[{"citycode":"0778","adcode":"451223","name":"\u51e4\u5c71\u53bf","center":"107.042157,24.546913","level":"district","districts":[]},{"citycode":"0778","adcode":"451224","name":"\u4e1c\u5170\u53bf","center":"107.374259,24.510698","level":"district","districts":[]},{"citycode":"0778","adcode":"451229","name":"\u5927\u5316\u7476\u65cf\u81ea\u6cbb\u53bf","center":"107.998151,23.735699","level":"district","districts":[]},{"citycode":"0778","adcode":"451228","name":"\u90fd\u5b89\u7476\u65cf\u81ea\u6cbb\u53bf","center":"108.105229,23.932704","level":"district","districts":[]},{"citycode":"0778","adcode":"451226","name":"\u73af\u6c5f\u6bdb\u5357\u65cf\u81ea\u6cbb\u53bf","center":"108.258426,24.825923","level":"district","districts":[]},{"citycode":"0778","adcode":"451202","name":"\u91d1\u57ce\u6c5f\u533a","center":"108.085166,24.692865","level":"district","districts":[]},{"citycode":"0778","adcode":"451227","name":"\u5df4\u9a6c\u7476\u65cf\u81ea\u6cbb\u53bf","center":"107.258671,24.142216","level":"district","districts":[]},{"citycode":"0778","adcode":"451225","name":"\u7f57\u57ce\u4eeb\u4f6c\u65cf\u81ea\u6cbb\u53bf","center":"108.904613,24.777501","level":"district","districts":[]},{"citycode":"0778","adcode":"451203","name":"\u5b9c\u5dde\u533a","center":"108.611303,24.500981","level":"district","districts":[]},{"citycode":"0778","adcode":"451222","name":"\u5929\u5ce8\u53bf","center":"107.172287,24.999181","level":"district","districts":[]},{"citycode":"0778","adcode":"451221","name":"\u5357\u4e39\u53bf","center":"107.540578,24.975066","level":"district","districts":[]}]},{"citycode":"0772","adcode":"450200","name":"\u67f3\u5dde\u5e02","center":"109.428071,24.326442","level":"city","districts":[{"citycode":"0772","adcode":"450225","name":"\u878d\u6c34\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"109.256609,25.066624","level":"district","districts":[]},{"citycode":"0772","adcode":"450224","name":"\u878d\u5b89\u53bf","center":"109.397538,25.224549","level":"district","districts":[]},{"citycode":"0772","adcode":"450222","name":"\u67f3\u57ce\u53bf","center":"109.244565,24.649989","level":"district","districts":[]},{"citycode":"0772","adcode":"450202","name":"\u57ce\u4e2d\u533a","center":"109.427398,24.366964","level":"district","districts":[]},{"citycode":"0772","adcode":"450205","name":"\u67f3\u5317\u533a","center":"109.402009,24.362611","level":"district","districts":[]},{"citycode":"0772","adcode":"450204","name":"\u67f3\u5357\u533a","center":"109.385504,24.336229","level":"district","districts":[]},{"citycode":"0772","adcode":"450223","name":"\u9e7f\u5be8\u53bf","center":"109.750527,24.472897","level":"district","districts":[]},{"citycode":"0772","adcode":"450203","name":"\u9c7c\u5cf0\u533a","center":"109.452781,24.318276","level":"district","districts":[]},{"citycode":"0772","adcode":"450206","name":"\u67f3\u6c5f\u533a","center":"109.326365,24.255644","level":"district","districts":[]},{"citycode":"0772","adcode":"450226","name":"\u4e09\u6c5f\u4f97\u65cf\u81ea\u6cbb\u53bf","center":"109.607675,25.783197","level":"district","districts":[]}]},{"citycode":"1772","adcode":"451300","name":"\u6765\u5bbe\u5e02","center":"109.221243,23.750105","level":"city","districts":[{"citycode":"1772","adcode":"451324","name":"\u91d1\u79c0\u7476\u65cf\u81ea\u6cbb\u53bf","center":"110.190354,24.130509","level":"district","districts":[]},{"citycode":"1772","adcode":"451322","name":"\u8c61\u5dde\u53bf","center":"109.704852,23.973832","level":"district","districts":[]},{"citycode":"1772","adcode":"451381","name":"\u5408\u5c71\u5e02","center":"108.885829,23.807032","level":"district","districts":[]},{"citycode":"1772","adcode":"451302","name":"\u5174\u5bbe\u533a","center":"109.183284,23.727647","level":"district","districts":[]},{"citycode":"1772","adcode":"451323","name":"\u6b66\u5ba3\u53bf","center":"109.663153,23.594444","level":"district","districts":[]},{"citycode":"1772","adcode":"451321","name":"\u5ffb\u57ce\u53bf","center":"108.665641,24.066176","level":"district","districts":[]}]},{"citycode":"0773","adcode":"450300","name":"\u6842\u6797\u5e02","center":"110.179752,25.235615","level":"city","districts":[{"citycode":"0773","adcode":"450327","name":"\u704c\u9633\u53bf","center":"111.160764,25.489419","level":"district","districts":[]},{"citycode":"0773","adcode":"450332","name":"\u606d\u57ce\u7476\u65cf\u81ea\u6cbb\u53bf","center":"110.82841,24.831581","level":"district","districts":[]},{"citycode":"0773","adcode":"450330","name":"\u5e73\u4e50\u53bf","center":"110.632867,24.622814","level":"district","districts":[]},{"citycode":"0773","adcode":"450324","name":"\u5168\u5dde\u53bf","center":"111.087089,25.94939","level":"district","districts":[]},{"citycode":"0773","adcode":"450326","name":"\u6c38\u798f\u53bf","center":"109.987507,24.974409","level":"district","districts":[]},{"citycode":"0773","adcode":"450381","name":"\u8354\u6d66\u5e02","center":"110.395232,24.48843","level":"district","districts":[]},{"citycode":"0773","adcode":"450321","name":"\u9633\u6714\u53bf","center":"110.496305,24.778785","level":"district","districts":[]},{"citycode":"0773","adcode":"450312","name":"\u4e34\u6842\u533a","center":"110.212425,25.238556","level":"district","districts":[]},{"citycode":"0773","adcode":"450304","name":"\u8c61\u5c71\u533a","center":"110.281223,25.261585","level":"district","districts":[]},{"citycode":"0773","adcode":"450325","name":"\u5174\u5b89\u53bf","center":"110.672013,25.612576","level":"district","districts":[]},{"citycode":"0773","adcode":"450329","name":"\u8d44\u6e90\u53bf","center":"110.652612,26.042452","level":"district","districts":[]},{"citycode":"0773","adcode":"450328","name":"\u9f99\u80dc\u5404\u65cf\u81ea\u6cbb\u53bf","center":"110.011662,25.79803","level":"district","districts":[]},{"citycode":"0773","adcode":"450305","name":"\u4e03\u661f\u533a","center":"110.317576,25.253093","level":"district","districts":[]},{"citycode":"0773","adcode":"450311","name":"\u96c1\u5c71\u533a","center":"110.286611,25.101798","level":"district","districts":[]},{"citycode":"0773","adcode":"450303","name":"\u53e0\u5f69\u533a","center":"110.301489,25.314158","level":"district","districts":[]},{"citycode":"0773","adcode":"450302","name":"\u79c0\u5cf0\u533a","center":"110.264102,25.273954","level":"district","districts":[]},{"citycode":"0773","adcode":"450323","name":"\u7075\u5ddd\u53bf","center":"110.319837,25.3948","level":"district","districts":[]}]},{"citycode":"0771","adcode":"450100","name":"\u5357\u5b81\u5e02","center":"108.366407,22.8177","level":"city","districts":[{"citycode":"0771","adcode":"450124","name":"\u9a6c\u5c71\u53bf","center":"108.177764,23.708448","level":"district","districts":[]},{"citycode":"0771","adcode":"450125","name":"\u4e0a\u6797\u53bf","center":"108.605089,23.432451","level":"district","districts":[]},{"citycode":"0771","adcode":"450110","name":"\u6b66\u9e23\u533a","center":"108.274869,23.159257","level":"district","districts":[]},{"citycode":"0771","adcode":"450123","name":"\u9686\u5b89\u53bf","center":"107.695721,23.166356","level":"district","districts":[]},{"citycode":"0771","adcode":"450107","name":"\u897f\u4e61\u5858\u533a","center":"108.31344,22.833852","level":"district","districts":[]},{"citycode":"0771","adcode":"450126","name":"\u5bbe\u9633\u53bf","center":"108.810336,23.217771","level":"district","districts":[]},{"citycode":"0771","adcode":"450105","name":"\u6c5f\u5357\u533a","center":"108.273206,22.781166","level":"district","districts":[]},{"citycode":"0771","adcode":"450108","name":"\u826f\u5e86\u533a","center":"108.393889,22.753613","level":"district","districts":[]},{"citycode":"0771","adcode":"450109","name":"\u9095\u5b81\u533a","center":"108.487438,22.758633","level":"district","districts":[]},{"citycode":"0771","adcode":"450181","name":"\u6a2a\u5dde\u5e02","center":"109.262448,22.681257","level":"district","districts":[]},{"citycode":"0771","adcode":"450102","name":"\u5174\u5b81\u533a","center":"108.368071,22.85354","level":"district","districts":[]},{"citycode":"0771","adcode":"450103","name":"\u9752\u79c0\u533a","center":"108.495204,22.785833","level":"district","districts":[]}]},{"citycode":"0774","adcode":"450400","name":"\u68a7\u5dde\u5e02","center":"111.279022,23.476733","level":"city","districts":[{"citycode":"0774","adcode":"450423","name":"\u8499\u5c71\u53bf","center":"110.525003,24.193567","level":"district","districts":[]},{"citycode":"0774","adcode":"450406","name":"\u9f99\u5729\u533a","center":"111.247514,23.414869","level":"district","districts":[]},{"citycode":"0774","adcode":"450481","name":"\u5c91\u6eaa\u5e02","center":"110.994955,22.918327","level":"district","districts":[]},{"citycode":"0774","adcode":"450405","name":"\u957f\u6d32\u533a","center":"111.274276,23.486279","level":"district","districts":[]},{"citycode":"0774","adcode":"450403","name":"\u4e07\u79c0\u533a","center":"111.318065,23.470543","level":"district","districts":[]},{"citycode":"0774","adcode":"450421","name":"\u82cd\u68a7\u53bf","center":"111.547244,23.868208","level":"district","districts":[]},{"citycode":"0774","adcode":"450422","name":"\u85e4\u53bf","center":"110.914606,23.375538","level":"district","districts":[]}]},{"citycode":"1755","adcode":"450800","name":"\u8d35\u6e2f\u5e02","center":"109.598903,23.11182","level":"city","districts":[{"citycode":"1755","adcode":"450803","name":"\u6e2f\u5357\u533a","center":"109.599357,23.075816","level":"district","districts":[]},{"citycode":"1755","adcode":"450802","name":"\u6e2f\u5317\u533a","center":"109.572227,23.11136","level":"district","districts":[]},{"citycode":"1755","adcode":"450881","name":"\u6842\u5e73\u5e02","center":"110.079315,23.394208","level":"district","districts":[]},{"citycode":"1755","adcode":"450804","name":"\u8983\u5858\u533a","center":"109.452668,23.127405","level":"district","districts":[]},{"citycode":"1755","adcode":"450821","name":"\u5e73\u5357\u53bf","center":"110.392489,23.540413","level":"district","districts":[]}]},{"citycode":"1774","adcode":"451100","name":"\u8d3a\u5dde\u5e02","center":"111.567216,24.404182","level":"city","districts":[{"citycode":"1774","adcode":"451122","name":"\u949f\u5c71\u53bf","center":"111.303085,24.526041","level":"district","districts":[]},{"citycode":"1774","adcode":"451121","name":"\u662d\u5e73\u53bf","center":"110.811158,24.169675","level":"district","districts":[]},{"citycode":"1774","adcode":"451103","name":"\u5e73\u6842\u533a","center":"111.479839,24.453094","level":"district","districts":[]},{"citycode":"1774","adcode":"451102","name":"\u516b\u6b65\u533a","center":"111.552029,24.411822","level":"district","districts":[]},{"citycode":"1774","adcode":"451123","name":"\u5bcc\u5ddd\u7476\u65cf\u81ea\u6cbb\u53bf","center":"111.296012,24.811601","level":"district","districts":[]}]},{"citycode":"0775","adcode":"450900","name":"\u7389\u6797\u5e02","center":"110.18097,22.654001","level":"city","districts":[{"citycode":"0775","adcode":"450903","name":"\u798f\u7ef5\u533a","center":"110.059564,22.585316","level":"district","districts":[]},{"citycode":"0775","adcode":"450924","name":"\u5174\u4e1a\u53bf","center":"109.875223,22.736395","level":"district","districts":[]},{"citycode":"0775","adcode":"450921","name":"\u5bb9\u53bf","center":"110.558093,22.85844","level":"district","districts":[]},{"citycode":"0775","adcode":"450922","name":"\u9646\u5ddd\u53bf","center":"110.26412,22.321563","level":"district","districts":[]},{"citycode":"0775","adcode":"450923","name":"\u535a\u767d\u53bf","center":"109.975856,22.273539","level":"district","districts":[]},{"citycode":"0775","adcode":"450981","name":"\u5317\u6d41\u5e02","center":"110.353765,22.708415","level":"district","districts":[]},{"citycode":"0775","adcode":"450902","name":"\u7389\u5dde\u533a","center":"110.150717,22.628476","level":"district","districts":[]}]},{"citycode":"1771","adcode":"451400","name":"\u5d07\u5de6\u5e02","center":"107.364973,22.377139","level":"city","districts":[{"citycode":"1771","adcode":"451421","name":"\u6276\u7ee5\u53bf","center":"107.90389,22.635542","level":"district","districts":[]},{"citycode":"1771","adcode":"451402","name":"\u6c5f\u5dde\u533a","center":"107.353694,22.40609","level":"district","districts":[]},{"citycode":"1771","adcode":"451481","name":"\u51ed\u7965\u5e02","center":"106.766715,22.094421","level":"district","districts":[]},{"citycode":"1771","adcode":"451423","name":"\u9f99\u5dde\u53bf","center":"106.854001,22.343591","level":"district","districts":[]},{"citycode":"1771","adcode":"451422","name":"\u5b81\u660e\u53bf","center":"107.076394,22.140242","level":"district","districts":[]},{"citycode":"1771","adcode":"451425","name":"\u5929\u7b49\u53bf","center":"107.143539,23.080818","level":"district","districts":[]},{"citycode":"1771","adcode":"451424","name":"\u5927\u65b0\u53bf","center":"107.200654,22.829287","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"640000","name":"\u5b81\u590f\u56de\u65cf\u81ea\u6cbb\u533a","center":"106.258889,38.472273","level":"province","districts":[{"citycode":"0954","adcode":"640400","name":"\u56fa\u539f\u5e02","center":"106.24267,36.01628","level":"city","districts":[{"citycode":"0954","adcode":"640423","name":"\u9686\u5fb7\u53bf","center":"106.111321,35.62592","level":"district","districts":[]},{"citycode":"0954","adcode":"640425","name":"\u5f6d\u9633\u53bf","center":"106.632151,35.860067","level":"district","districts":[]},{"citycode":"0954","adcode":"640424","name":"\u6cfe\u6e90\u53bf","center":"106.330569,35.497887","level":"district","districts":[]},{"citycode":"0954","adcode":"640422","name":"\u897f\u5409\u53bf","center":"105.729189,35.963885","level":"district","districts":[]},{"citycode":"0954","adcode":"640402","name":"\u539f\u5dde\u533a","center":"106.28784,36.003777","level":"district","districts":[]}]},{"citycode":"0952","adcode":"640200","name":"\u77f3\u5634\u5c71\u5e02","center":"106.382792,38.984632","level":"city","districts":[{"citycode":"0952","adcode":"640205","name":"\u60e0\u519c\u533a","center":"106.781013,39.239292","level":"district","districts":[]},{"citycode":"0952","adcode":"640202","name":"\u5927\u6b66\u53e3\u533a","center":"106.368128,39.019375","level":"district","districts":[]},{"citycode":"0952","adcode":"640221","name":"\u5e73\u7f57\u53bf","center":"106.523411,38.913923","level":"district","districts":[]}]},{"citycode":"1953","adcode":"640500","name":"\u4e2d\u536b\u5e02","center":"105.19677,37.500185","level":"city","districts":[{"citycode":"1953","adcode":"640522","name":"\u6d77\u539f\u53bf","center":"105.643449,36.565189","level":"district","districts":[]},{"citycode":"1953","adcode":"640502","name":"\u6c99\u5761\u5934\u533a","center":"105.173875,37.516859","level":"district","districts":[]},{"citycode":"1953","adcode":"640521","name":"\u4e2d\u5b81\u53bf","center":"105.684729,37.492092","level":"district","districts":[]}]},{"citycode":"0953","adcode":"640300","name":"\u5434\u5fe0\u5e02","center":"106.198613,37.997755","level":"city","districts":[{"citycode":"0953","adcode":"640323","name":"\u76d0\u6c60\u53bf","center":"107.407184,37.783276","level":"district","districts":[]},{"citycode":"0953","adcode":"640303","name":"\u7ea2\u5bfa\u5821\u533a","center":"106.06216,37.425494","level":"district","districts":[]},{"citycode":"0953","adcode":"640302","name":"\u5229\u901a\u533a","center":"106.235842,38.00298","level":"district","districts":[]},{"citycode":"0953","adcode":"640324","name":"\u540c\u5fc3\u53bf","center":"105.895412,36.954635","level":"district","districts":[]},{"citycode":"0953","adcode":"640381","name":"\u9752\u94dc\u5ce1\u5e02","center":"106.07906,38.021579","level":"district","districts":[]}]},{"citycode":"0951","adcode":"640100","name":"\u94f6\u5ddd\u5e02","center":"106.230977,38.487783","level":"city","districts":[{"citycode":"0951","adcode":"640181","name":"\u7075\u6b66\u5e02","center":"106.339978,38.102456","level":"district","districts":[]},{"citycode":"0951","adcode":"640106","name":"\u91d1\u51e4\u533a","center":"106.239339,38.474277","level":"district","districts":[]},{"citycode":"0951","adcode":"640104","name":"\u5174\u5e86\u533a","center":"106.288452,38.473972","level":"district","districts":[]},{"citycode":"0951","adcode":"640121","name":"\u6c38\u5b81\u53bf","center":"106.25337,38.277376","level":"district","districts":[]},{"citycode":"0951","adcode":"640105","name":"\u897f\u590f\u533a","center":"106.161208,38.502325","level":"district","districts":[]},{"citycode":"0951","adcode":"640122","name":"\u8d3a\u5170\u53bf","center":"106.365074,38.579147","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"330000","name":"\u6d59\u6c5f\u7701","center":"120.152575,30.266619","level":"province","districts":[{"citycode":"0580","adcode":"330900","name":"\u821f\u5c71\u5e02","center":"122.207395,29.985578","level":"city","districts":[{"citycode":"0580","adcode":"330922","name":"\u5d4a\u6cd7\u53bf","center":"122.45132,30.725677","level":"district","districts":[]},{"citycode":"0580","adcode":"330921","name":"\u5cb1\u5c71\u53bf","center":"122.225718,30.264533","level":"district","districts":[]},{"citycode":"0580","adcode":"330902","name":"\u5b9a\u6d77\u533a","center":"122.106844,30.019795","level":"district","districts":[]},{"citycode":"0580","adcode":"330903","name":"\u666e\u9640\u533a","center":"122.323297,29.970571","level":"district","districts":[]}]},{"citycode":"0573","adcode":"330400","name":"\u5609\u5174\u5e02","center":"120.755623,30.746814","level":"city","districts":[{"citycode":"0573","adcode":"330482","name":"\u5e73\u6e56\u5e02","center":"121.015619,30.677804","level":"district","districts":[]},{"citycode":"0573","adcode":"330402","name":"\u5357\u6e56\u533a","center":"120.782952,30.747738","level":"district","districts":[]},{"citycode":"0573","adcode":"330483","name":"\u6850\u4e61\u5e02","center":"120.565127,30.630375","level":"district","districts":[]},{"citycode":"0573","adcode":"330481","name":"\u6d77\u5b81\u5e02","center":"120.680224,30.511536","level":"district","districts":[]},{"citycode":"0573","adcode":"330424","name":"\u6d77\u76d0\u53bf","center":"120.94628,30.52664","level":"district","districts":[]},{"citycode":"0573","adcode":"330411","name":"\u79c0\u6d32\u533a","center":"120.709047,30.764811","level":"district","districts":[]},{"citycode":"0573","adcode":"330421","name":"\u5609\u5584\u53bf","center":"120.926031,30.83085","level":"district","districts":[]}]},{"citycode":"0574","adcode":"330200","name":"\u5b81\u6ce2\u5e02","center":"121.62454,29.860258","level":"city","districts":[{"citycode":"0574","adcode":"330206","name":"\u5317\u4ed1\u533a","center":"121.844601,29.899548","level":"district","districts":[]},{"citycode":"0574","adcode":"330225","name":"\u8c61\u5c71\u53bf","center":"121.869251,29.476826","level":"district","districts":[]},{"citycode":"0574","adcode":"330211","name":"\u9547\u6d77\u533a","center":"121.596686,29.965212","level":"district","districts":[]},{"citycode":"0574","adcode":"330203","name":"\u6d77\u66d9\u533a","center":"121.550485,29.873705","level":"district","districts":[]},{"citycode":"0574","adcode":"330213","name":"\u5949\u5316\u533a","center":"121.406151,29.655292","level":"district","districts":[]},{"citycode":"0574","adcode":"330212","name":"\u911e\u5dde\u533a","center":"121.546617,29.817302","level":"district","districts":[]},{"citycode":"0574","adcode":"330226","name":"\u5b81\u6d77\u53bf","center":"121.429729,29.287929","level":"district","districts":[]},{"citycode":"0574","adcode":"330205","name":"\u6c5f\u5317\u533a","center":"121.555067,29.88673","level":"district","districts":[]},{"citycode":"0574","adcode":"330281","name":"\u4f59\u59da\u5e02","center":"121.154572,30.037967","level":"district","districts":[]},{"citycode":"0574","adcode":"330282","name":"\u6148\u6eaa\u5e02","center":"121.266525,30.170695","level":"district","districts":[]}]},{"citycode":"0576","adcode":"331000","name":"\u53f0\u5dde\u5e02","center":"121.42079,28.655716","level":"city","districts":[{"citycode":"0576","adcode":"331082","name":"\u4e34\u6d77\u5e02","center":"121.144625,28.859042","level":"district","districts":[]},{"citycode":"0576","adcode":"331002","name":"\u6912\u6c5f\u533a","center":"121.442859,28.673334","level":"district","districts":[]},{"citycode":"0576","adcode":"331004","name":"\u8def\u6865\u533a","center":"121.337874,28.578244","level":"district","districts":[]},{"citycode":"0576","adcode":"331081","name":"\u6e29\u5cad\u5e02","center":"121.385435,28.372805","level":"district","districts":[]},{"citycode":"0576","adcode":"331083","name":"\u7389\u73af\u5e02","center":"121.231915,28.136703","level":"district","districts":[]},{"citycode":"0576","adcode":"331022","name":"\u4e09\u95e8\u53bf","center":"121.39561,29.104888","level":"district","districts":[]},{"citycode":"0576","adcode":"331024","name":"\u4ed9\u5c45\u53bf","center":"120.728733,28.846856","level":"district","districts":[]},{"citycode":"0576","adcode":"331023","name":"\u5929\u53f0\u53bf","center":"121.006657,29.144594","level":"district","districts":[]},{"citycode":"0576","adcode":"331003","name":"\u9ec4\u5ca9\u533a","center":"121.261804,28.649433","level":"district","districts":[]}]},{"citycode":"0577","adcode":"330300","name":"\u6e29\u5dde\u5e02","center":"120.699279,27.993849","level":"city","districts":[{"citycode":"0577","adcode":"330327","name":"\u82cd\u5357\u53bf","center":"120.425957,27.518636","level":"district","districts":[]},{"citycode":"0577","adcode":"330305","name":"\u6d1e\u5934\u533a","center":"121.157406,27.836412","level":"district","districts":[]},{"citycode":"0577","adcode":"330326","name":"\u5e73\u9633\u53bf","center":"120.565161,27.662394","level":"district","districts":[]},{"citycode":"0577","adcode":"330381","name":"\u745e\u5b89\u5e02","center":"120.655245,27.778967","level":"district","districts":[]},{"citycode":"0577","adcode":"330383","name":"\u9f99\u6e2f\u5e02","center":"120.552952,27.578379","level":"district","districts":[]},{"citycode":"0577","adcode":"330329","name":"\u6cf0\u987a\u53bf","center":"119.717643,27.556578","level":"district","districts":[]},{"citycode":"0577","adcode":"330382","name":"\u4e50\u6e05\u5e02","center":"120.986297,28.112519","level":"district","districts":[]},{"citycode":"0577","adcode":"330324","name":"\u6c38\u5609\u53bf","center":"120.69136,28.153914","level":"district","districts":[]},{"citycode":"0577","adcode":"330302","name":"\u9e7f\u57ce\u533a","center":"120.655199,28.015776","level":"district","districts":[]},{"citycode":"0577","adcode":"330303","name":"\u9f99\u6e7e\u533a","center":"120.812333,27.933261","level":"district","districts":[]},{"citycode":"0577","adcode":"330328","name":"\u6587\u6210\u53bf","center":"120.090929,27.786856","level":"district","districts":[]},{"citycode":"0577","adcode":"330304","name":"\u74ef\u6d77\u533a","center":"120.615149,27.967445","level":"district","districts":[]}]},{"citycode":"0578","adcode":"331100","name":"\u4e3d\u6c34\u5e02","center":"119.923249,28.467694","level":"city","districts":[{"citycode":"0578","adcode":"331124","name":"\u677e\u9633\u53bf","center":"119.481406,28.448883","level":"district","districts":[]},{"citycode":"0578","adcode":"331181","name":"\u9f99\u6cc9\u5e02","center":"119.14126,28.074916","level":"district","districts":[]},{"citycode":"0578","adcode":"331122","name":"\u7f19\u4e91\u53bf","center":"120.091685,28.659294","level":"district","districts":[]},{"citycode":"0578","adcode":"331127","name":"\u666f\u5b81\u7572\u65cf\u81ea\u6cbb\u53bf","center":"119.635686,27.973594","level":"district","districts":[]},{"citycode":"0578","adcode":"331121","name":"\u9752\u7530\u53bf","center":"120.289693,28.1396","level":"district","districts":[]},{"citycode":"0578","adcode":"331126","name":"\u5e86\u5143\u53bf","center":"119.062572,27.619213","level":"district","districts":[]},{"citycode":"0578","adcode":"331123","name":"\u9042\u660c\u53bf","center":"119.275865,28.592388","level":"district","districts":[]},{"citycode":"0578","adcode":"331125","name":"\u4e91\u548c\u53bf","center":"119.573454,28.116024","level":"district","districts":[]},{"citycode":"0578","adcode":"331102","name":"\u83b2\u90fd\u533a","center":"119.912266,28.4461","level":"district","districts":[]}]},{"citycode":"0570","adcode":"330800","name":"\u8862\u5dde\u5e02","center":"118.859307,28.970229","level":"city","districts":[{"citycode":"0570","adcode":"330822","name":"\u5e38\u5c71\u53bf","center":"118.511224,28.902446","level":"district","districts":[]},{"citycode":"0570","adcode":"330803","name":"\u8862\u6c5f\u533a","center":"118.959139,28.980356","level":"district","districts":[]},{"citycode":"0570","adcode":"330824","name":"\u5f00\u5316\u53bf","center":"118.406852,29.1179","level":"district","districts":[]},{"citycode":"0570","adcode":"330802","name":"\u67ef\u57ce\u533a","center":"118.874138,28.936937","level":"district","districts":[]},{"citycode":"0570","adcode":"330881","name":"\u6c5f\u5c71\u5e02","center":"118.627228,28.73796","level":"district","districts":[]},{"citycode":"0570","adcode":"330825","name":"\u9f99\u6e38\u53bf","center":"119.1723,29.028214","level":"district","districts":[]}]},{"citycode":"0579","adcode":"330700","name":"\u91d1\u534e\u5e02","center":"119.647265,29.079195","level":"city","districts":[{"citycode":"0579","adcode":"330723","name":"\u6b66\u4e49\u53bf","center":"119.816341,28.892562","level":"district","districts":[]},{"citycode":"0579","adcode":"330726","name":"\u6d66\u6c5f\u53bf","center":"119.89259,29.453363","level":"district","districts":[]},{"citycode":"0579","adcode":"330784","name":"\u6c38\u5eb7\u5e02","center":"120.047356,28.88899","level":"district","districts":[]},{"citycode":"0579","adcode":"330782","name":"\u4e49\u4e4c\u5e02","center":"120.075679,29.306296","level":"district","districts":[]},{"citycode":"0579","adcode":"330781","name":"\u5170\u6eaa\u5e02","center":"119.460404,29.209059","level":"district","districts":[]},{"citycode":"0579","adcode":"330702","name":"\u5a7a\u57ce\u533a","center":"119.571574,29.087311","level":"district","districts":[]},{"citycode":"0579","adcode":"330703","name":"\u91d1\u4e1c\u533a","center":"119.692821,29.099822","level":"district","districts":[]},{"citycode":"0579","adcode":"330783","name":"\u4e1c\u9633\u5e02","center":"120.24179,29.290158","level":"district","districts":[]},{"citycode":"0579","adcode":"330727","name":"\u78d0\u5b89\u53bf","center":"120.449937,29.054491","level":"district","districts":[]}]},{"citycode":"0572","adcode":"330500","name":"\u6e56\u5dde\u5e02","center":"120.086881,30.894178","level":"city","districts":[{"citycode":"0572","adcode":"330503","name":"\u5357\u6d54\u533a","center":"120.418244,30.850835","level":"district","districts":[]},{"citycode":"0572","adcode":"330502","name":"\u5434\u5174\u533a","center":"120.185608,30.857184","level":"district","districts":[]},{"citycode":"0572","adcode":"330523","name":"\u5b89\u5409\u53bf","center":"119.680261,30.638803","level":"district","districts":[]},{"citycode":"0572","adcode":"330521","name":"\u5fb7\u6e05\u53bf","center":"119.9774,30.54251","level":"district","districts":[]},{"citycode":"0572","adcode":"330522","name":"\u957f\u5174\u53bf","center":"119.911212,31.026962","level":"district","districts":[]}]},{"citycode":"0571","adcode":"330100","name":"\u676d\u5dde\u5e02","center":"120.209903,30.246566","level":"city","districts":[{"citycode":"0571","adcode":"330102","name":"\u4e0a\u57ce\u533a","center":"120.19732,30.226543","level":"district","districts":[]},{"citycode":"0571","adcode":"330127","name":"\u6df3\u5b89\u53bf","center":"119.042015,29.609678","level":"district","districts":[]},{"citycode":"0571","adcode":"330105","name":"\u62f1\u5885\u533a","center":"120.141503,30.319126","level":"district","districts":[]},{"citycode":"0571","adcode":"330114","name":"\u94b1\u5858\u533a","center":"120.493941,30.32304","level":"district","districts":[]},{"citycode":"0571","adcode":"330182","name":"\u5efa\u5fb7\u5e02","center":"119.281195,29.474964","level":"district","districts":[]},{"citycode":"0571","adcode":"330112","name":"\u4e34\u5b89\u533a","center":"119.724457,30.234375","level":"district","districts":[]},{"citycode":"0571","adcode":"330113","name":"\u4e34\u5e73\u533a","center":"120.299222,30.419154","level":"district","districts":[]},{"citycode":"0571","adcode":"330110","name":"\u4f59\u676d\u533a","center":"119.978742,30.273705","level":"district","districts":[]},{"citycode":"0571","adcode":"330106","name":"\u897f\u6e56\u533a","center":"120.130396,30.259242","level":"district","districts":[]},{"citycode":"0571","adcode":"330111","name":"\u5bcc\u9633\u533a","center":"119.96022,30.048803","level":"district","districts":[]},{"citycode":"0571","adcode":"330122","name":"\u6850\u5e90\u53bf","center":"119.691755,29.79418","level":"district","districts":[]},{"citycode":"0571","adcode":"330108","name":"\u6ee8\u6c5f\u533a","center":"120.211981,30.208332","level":"district","districts":[]},{"citycode":"0571","adcode":"330109","name":"\u8427\u5c71\u533a","center":"120.264263,30.184119","level":"district","districts":[]}]},{"citycode":"0575","adcode":"330600","name":"\u7ecd\u5174\u5e02","center":"120.582886,30.051549","level":"city","districts":[{"citycode":"0575","adcode":"330604","name":"\u4e0a\u865e\u533a","center":"120.868571,30.033862","level":"district","districts":[]},{"citycode":"0575","adcode":"330681","name":"\u8bf8\u66a8\u5e02","center":"120.246602,29.709398","level":"district","districts":[]},{"citycode":"0575","adcode":"330624","name":"\u65b0\u660c\u53bf","center":"120.903918,29.500525","level":"district","districts":[]},{"citycode":"0575","adcode":"330683","name":"\u5d4a\u5dde\u5e02","center":"120.830505,29.561519","level":"district","districts":[]},{"citycode":"0575","adcode":"330602","name":"\u8d8a\u57ce\u533a","center":"120.582338,29.989092","level":"district","districts":[]},{"citycode":"0575","adcode":"330603","name":"\u67ef\u6865\u533a","center":"120.495532,30.083039","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"130000","name":"\u6cb3\u5317\u7701","center":"114.530399,38.037707","level":"province","districts":[{"citycode":"0315","adcode":"130200","name":"\u5510\u5c71\u5e02","center":"118.180149,39.63068","level":"city","districts":[{"citycode":"0315","adcode":"130225","name":"\u4e50\u4ead\u53bf","center":"118.91245,39.425748","level":"district","districts":[]},{"citycode":"0315","adcode":"130209","name":"\u66f9\u5983\u7538\u533a","center":"118.460197,39.273528","level":"district","districts":[]},{"citycode":"0315","adcode":"130224","name":"\u6ee6\u5357\u53bf","center":"118.68363,39.520272","level":"district","districts":[]},{"citycode":"0315","adcode":"130204","name":"\u53e4\u51b6\u533a","center":"118.447134,39.73392","level":"district","districts":[]},{"citycode":"0315","adcode":"130227","name":"\u8fc1\u897f\u53bf","center":"118.31467,40.141486","level":"district","districts":[]},{"citycode":"0315","adcode":"130207","name":"\u4e30\u5357\u533a","center":"118.085169,39.576031","level":"district","districts":[]},{"citycode":"0315","adcode":"130283","name":"\u8fc1\u5b89\u5e02","center":"118.701021,39.998861","level":"district","districts":[]},{"citycode":"0315","adcode":"130202","name":"\u8def\u5357\u533a","center":"118.154348,39.624988","level":"district","districts":[]},{"citycode":"0315","adcode":"130229","name":"\u7389\u7530\u53bf","center":"117.738196,39.901827","level":"district","districts":[]},{"citycode":"0315","adcode":"130281","name":"\u9075\u5316\u5e02","center":"117.965878,40.189119","level":"district","districts":[]},{"citycode":"0315","adcode":"130208","name":"\u4e30\u6da6\u533a","center":"118.162426,39.832919","level":"district","districts":[]},{"citycode":"0315","adcode":"130284","name":"\u6ee6\u5dde\u5e02","center":"118.70301,39.740963","level":"district","districts":[]},{"citycode":"0315","adcode":"130203","name":"\u8def\u5317\u533a","center":"118.201085,39.625079","level":"district","districts":[]},{"citycode":"0315","adcode":"130205","name":"\u5f00\u5e73\u533a","center":"118.262246,39.671634","level":"district","districts":[]}]},{"citycode":"0335","adcode":"130300","name":"\u79e6\u7687\u5c9b\u5e02","center":"119.52022,39.888243","level":"city","districts":[{"citycode":"0335","adcode":"130303","name":"\u5c71\u6d77\u5173\u533a","center":"119.775187,39.978882","level":"district","districts":[]},{"citycode":"0335","adcode":"130306","name":"\u629a\u5b81\u533a","center":"119.244847,39.876253","level":"district","districts":[]},{"citycode":"0335","adcode":"130302","name":"\u6d77\u6e2f\u533a","center":"119.564962,39.94756","level":"district","districts":[]},{"citycode":"0335","adcode":"130321","name":"\u9752\u9f99\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"118.94985,40.407473","level":"district","districts":[]},{"citycode":"0335","adcode":"130322","name":"\u660c\u9ece\u53bf","center":"119.199846,39.699677","level":"district","districts":[]},{"citycode":"0335","adcode":"130324","name":"\u5362\u9f99\u53bf","center":"118.891931,39.892564","level":"district","districts":[]},{"citycode":"0335","adcode":"130304","name":"\u5317\u6234\u6cb3\u533a","center":"119.48449,39.834912","level":"district","districts":[]}]},{"citycode":"0317","adcode":"130900","name":"\u6ca7\u5dde\u5e02","center":"116.838715,38.304676","level":"city","districts":[{"citycode":"0317","adcode":"130923","name":"\u4e1c\u5149\u53bf","center":"116.537138,37.888844","level":"district","districts":[]},{"citycode":"0317","adcode":"130924","name":"\u6d77\u5174\u53bf","center":"117.497545,38.143308","level":"district","districts":[]},{"citycode":"0317","adcode":"130928","name":"\u5434\u6865\u53bf","center":"116.391557,37.628225","level":"district","districts":[]},{"citycode":"0317","adcode":"130902","name":"\u65b0\u534e\u533a","center":"116.866309,38.314094","level":"district","districts":[]},{"citycode":"0317","adcode":"130927","name":"\u5357\u76ae\u53bf","center":"116.708603,38.038761","level":"district","districts":[]},{"citycode":"0317","adcode":"130922","name":"\u9752\u53bf","center":"116.804137,38.583657","level":"district","districts":[]},{"citycode":"0317","adcode":"130926","name":"\u8083\u5b81\u53bf","center":"115.829619,38.423044","level":"district","districts":[]},{"citycode":"0317","adcode":"130984","name":"\u6cb3\u95f4\u5e02","center":"116.099362,38.446656","level":"district","districts":[]},{"citycode":"0317","adcode":"130929","name":"\u732e\u53bf","center":"116.152058,38.180381","level":"district","districts":[]},{"citycode":"0317","adcode":"130981","name":"\u6cca\u5934\u5e02","center":"116.578322,38.084262","level":"district","districts":[]},{"citycode":"0317","adcode":"130925","name":"\u76d0\u5c71\u53bf","center":"117.230681,38.058074","level":"district","districts":[]},{"citycode":"0317","adcode":"130930","name":"\u5b5f\u6751\u56de\u65cf\u81ea\u6cbb\u53bf","center":"117.104514,38.053438","level":"district","districts":[]},{"citycode":"0317","adcode":"130982","name":"\u4efb\u4e18\u5e02","center":"116.084412,38.685325","level":"district","districts":[]},{"citycode":"0317","adcode":"130983","name":"\u9ec4\u9a85\u5e02","center":"117.330043,38.372266","level":"district","districts":[]},{"citycode":"0317","adcode":"130921","name":"\u6ca7\u53bf","center":"117.007478,38.21985569","level":"district","districts":[]},{"citycode":"0317","adcode":"130903","name":"\u8fd0\u6cb3\u533a","center":"116.842964,38.283456","level":"district","districts":[]}]},{"citycode":"0310","adcode":"130400","name":"\u90af\u90f8\u5e02","center":"114.53915,36.625849","level":"city","districts":[{"citycode":"0310","adcode":"130407","name":"\u80a5\u4e61\u533a","center":"114.800199,36.548545","level":"district","districts":[]},{"citycode":"0310","adcode":"130431","name":"\u9e21\u6cfd\u53bf","center":"114.889951,36.911525","level":"district","districts":[]},{"citycode":"0310","adcode":"130408","name":"\u6c38\u5e74\u533a","center":"114.536626,36.74188","level":"district","districts":[]},{"citycode":"0310","adcode":"130423","name":"\u4e34\u6f33\u53bf","center":"114.585514,36.322504","level":"district","districts":[]},{"citycode":"0310","adcode":"130402","name":"\u90af\u5c71\u533a","center":"114.531062,36.59457","level":"district","districts":[]},{"citycode":"0310","adcode":"130425","name":"\u5927\u540d\u53bf","center":"115.147985,36.286406","level":"district","districts":[]},{"citycode":"0310","adcode":"130403","name":"\u4e1b\u53f0\u533a","center":"114.492875,36.636434","level":"district","districts":[]},{"citycode":"0310","adcode":"130404","name":"\u590d\u5174\u533a","center":"114.462581,36.638879","level":"district","districts":[]},{"citycode":"0310","adcode":"130481","name":"\u6b66\u5b89\u5e02","center":"114.203685,36.69759","level":"district","districts":[]},{"citycode":"0310","adcode":"130432","name":"\u5e7f\u5e73\u53bf","center":"114.921185,36.476727","level":"district","districts":[]},{"citycode":"0310","adcode":"130424","name":"\u6210\u5b89\u53bf","center":"114.670094,36.445331","level":"district","districts":[]},{"citycode":"0310","adcode":"130433","name":"\u9986\u9676\u53bf","center":"115.281818,36.548295","level":"district","districts":[]},{"citycode":"0310","adcode":"130427","name":"\u78c1\u53bf","center":"114.373965,36.37507","level":"district","districts":[]},{"citycode":"0310","adcode":"130406","name":"\u5cf0\u5cf0\u77ff\u533a","center":"114.212571,36.419298","level":"district","districts":[]},{"citycode":"0310","adcode":"130435","name":"\u66f2\u5468\u53bf","center":"114.957549,36.766347","level":"district","districts":[]},{"citycode":"0310","adcode":"130430","name":"\u90b1\u53bf","center":"115.200049,36.811783","level":"district","districts":[]},{"citycode":"0310","adcode":"130426","name":"\u6d89\u53bf","center":"113.692157,36.586073","level":"district","districts":[]},{"citycode":"0310","adcode":"130434","name":"\u9b4f\u53bf","center":"114.939217,36.35926","level":"district","districts":[]}]},{"citycode":"0311","adcode":"130100","name":"\u77f3\u5bb6\u5e84\u5e02","center":"114.514976,38.042007","level":"city","districts":[{"citycode":"0311","adcode":"130127","name":"\u9ad8\u9091\u53bf","center":"114.611659,37.615905","level":"district","districts":[]},{"citycode":"0311","adcode":"130121","name":"\u4e95\u9649\u53bf","center":"114.145669,38.032366","level":"district","districts":[]},{"citycode":"0311","adcode":"130181","name":"\u8f9b\u96c6\u5e02","center":"115.217626,37.943239","level":"district","districts":[]},{"citycode":"0311","adcode":"130107","name":"\u4e95\u9649\u77ff\u533a","center":"114.062258,38.065446","level":"district","districts":[]},{"citycode":"0311","adcode":"130128","name":"\u6df1\u6cfd\u53bf","center":"115.20089,38.184572","level":"district","districts":[]},{"citycode":"0311","adcode":"130133","name":"\u8d75\u53bf","center":"114.775914,37.756935","level":"district","districts":[]},{"citycode":"0311","adcode":"130125","name":"\u884c\u5510\u53bf","center":"114.553044,38.437535","level":"district","districts":[]},{"citycode":"0311","adcode":"130123","name":"\u6b63\u5b9a\u53bf","center":"114.57043,38.14699","level":"district","districts":[]},{"citycode":"0311","adcode":"130108","name":"\u88d5\u534e\u533a","center":"114.531599,38.007002","level":"district","districts":[]},{"citycode":"0311","adcode":"130130","name":"\u65e0\u6781\u53bf","center":"114.976256,38.178852","level":"district","districts":[]},{"citycode":"0311","adcode":"130184","name":"\u65b0\u4e50\u5e02","center":"114.683745,38.343952","level":"district","districts":[]},{"citycode":"0311","adcode":"130104","name":"\u6865\u897f\u533a","center":"114.45004,38.025245","level":"district","districts":[]},{"citycode":"0311","adcode":"130105","name":"\u65b0\u534e\u533a","center":"114.463904,38.050749","level":"district","districts":[]},{"citycode":"0311","adcode":"130102","name":"\u957f\u5b89\u533a","center":"114.538955,38.03682","level":"district","districts":[]},{"citycode":"0311","adcode":"130129","name":"\u8d5e\u7687\u53bf","center":"114.386114,37.666549","level":"district","districts":[]},{"citycode":"0311","adcode":"130110","name":"\u9e7f\u6cc9\u533a","center":"114.313559,38.086536","level":"district","districts":[]},{"citycode":"0311","adcode":"130111","name":"\u683e\u57ce\u533a","center":"114.647922,37.900915","level":"district","districts":[]},{"citycode":"0311","adcode":"130132","name":"\u5143\u6c0f\u53bf","center":"114.525508,37.767332","level":"district","districts":[]},{"citycode":"0311","adcode":"130126","name":"\u7075\u5bff\u53bf","center":"114.383013,38.307908","level":"district","districts":[]},{"citycode":"0311","adcode":"130131","name":"\u5e73\u5c71\u53bf","center":"114.186007,38.260288","level":"district","districts":[]},{"citycode":"0311","adcode":"130183","name":"\u664b\u5dde\u5e02","center":"115.044141,38.033937","level":"district","districts":[]},{"citycode":"0311","adcode":"130109","name":"\u85c1\u57ce\u533a","center":"114.846562,38.022177","level":"district","districts":[]}]},{"citycode":"0316","adcode":"131000","name":"\u5eca\u574a\u5e02","center":"116.683546,39.538304","level":"city","districts":[{"citycode":"0316","adcode":"131028","name":"\u5927\u5382\u56de\u65cf\u81ea\u6cbb\u53bf","center":"116.98961,39.886569","level":"district","districts":[]},{"citycode":"0316","adcode":"131026","name":"\u6587\u5b89\u53bf","center":"116.457628,38.873185","level":"district","districts":[]},{"citycode":"0316","adcode":"131082","name":"\u4e09\u6cb3\u5e02","center":"117.078269,39.982933","level":"district","districts":[]},{"citycode":"0316","adcode":"131002","name":"\u5b89\u6b21\u533a","center":"116.6945443,39.50256863","level":"district","districts":[]},{"citycode":"0316","adcode":"131003","name":"\u5e7f\u9633\u533a","center":"116.710667,39.52343","level":"district","districts":[]},{"citycode":"0316","adcode":"131025","name":"\u5927\u57ce\u53bf","center":"116.653917,38.705232","level":"district","districts":[]},{"citycode":"0316","adcode":"131022","name":"\u56fa\u5b89\u53bf","center":"116.298696,39.438797","level":"district","districts":[]},{"citycode":"0316","adcode":"131023","name":"\u6c38\u6e05\u53bf","center":"116.50608,39.330983","level":"district","districts":[]},{"citycode":"0316","adcode":"131081","name":"\u9738\u5dde\u5e02","center":"116.391488,39.125238","level":"district","districts":[]},{"citycode":"0316","adcode":"131024","name":"\u9999\u6cb3\u53bf","center":"117.006072,39.763772","level":"district","districts":[]}]},{"citycode":"0314","adcode":"130800","name":"\u627f\u5fb7\u5e02","center":"117.962749,40.952942","level":"city","districts":[{"citycode":"0314","adcode":"130828","name":"\u56f4\u573a\u6ee1\u65cf\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","center":"117.75934,41.938372","level":"district","districts":[]},{"citycode":"0314","adcode":"130826","name":"\u4e30\u5b81\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"116.645798,41.209951","level":"district","districts":[]},{"citycode":"0314","adcode":"130825","name":"\u9686\u5316\u53bf","center":"117.739026,41.314402","level":"district","districts":[]},{"citycode":"0314","adcode":"130827","name":"\u5bbd\u57ce\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"118.485472,40.611333","level":"district","districts":[]},{"citycode":"0314","adcode":"130804","name":"\u9e70\u624b\u8425\u5b50\u77ff\u533a","center":"117.659341,40.546424","level":"district","districts":[]},{"citycode":"0314","adcode":"130824","name":"\u6ee6\u5e73\u53bf","center":"117.332652,40.941644","level":"district","districts":[]},{"citycode":"0314","adcode":"130803","name":"\u53cc\u6ee6\u533a","center":"117.799588,40.959426","level":"district","districts":[]},{"citycode":"0314","adcode":"130802","name":"\u53cc\u6865\u533a","center":"117.943121,40.974679","level":"district","districts":[]},{"citycode":"0314","adcode":"130821","name":"\u627f\u5fb7\u53bf","center":"118.174166,40.768082","level":"district","districts":[]},{"citycode":"0314","adcode":"130881","name":"\u5e73\u6cc9\u5e02","center":"118.702032,41.018482","level":"district","districts":[]},{"citycode":"0314","adcode":"130822","name":"\u5174\u9686\u53bf","center":"117.500558,40.417358","level":"district","districts":[]}]},{"citycode":"0312","adcode":"130600","name":"\u4fdd\u5b9a\u5e02","center":"115.464523,38.874476","level":"city","districts":[{"citycode":"0312","adcode":"130636","name":"\u987a\u5e73\u53bf","center":"115.135133,38.837988","level":"district","districts":[]},{"citycode":"0312","adcode":"130631","name":"\u671b\u90fd\u53bf","center":"115.15542,38.696221","level":"district","districts":[]},{"citycode":"0312","adcode":"130627","name":"\u5510\u53bf","center":"114.982968,38.748477","level":"district","districts":[]},{"citycode":"0312","adcode":"130634","name":"\u66f2\u9633\u53bf","center":"114.740476,38.614409","level":"district","districts":[]},{"citycode":"0312","adcode":"130628","name":"\u9ad8\u9633\u53bf","center":"115.779149,38.700846","level":"district","districts":[]},{"citycode":"0312","adcode":"130608","name":"\u6e05\u82d1\u533a","center":"115.48988,38.76527","level":"district","districts":[]},{"citycode":"0312","adcode":"130682","name":"\u5b9a\u5dde\u5e02","center":"114.990321,38.516746","level":"district","districts":[]},{"citycode":"0312","adcode":"130633","name":"\u6613\u53bf","center":"115.497487,39.350219","level":"district","districts":[]},{"citycode":"0312","adcode":"130607","name":"\u6ee1\u57ce\u533a","center":"115.322246,38.949732","level":"district","districts":[]},{"citycode":"0312","adcode":"130635","name":"\u8821\u53bf","center":"115.583701,38.488064","level":"district","districts":[]},{"citycode":"0312","adcode":"130638","name":"\u96c4\u53bf","center":"116.108624,38.994825","level":"district","districts":[]},{"citycode":"0312","adcode":"130632","name":"\u5b89\u65b0\u53bf","center":"115.935688,38.936102","level":"district","districts":[]},{"citycode":"0312","adcode":"130602","name":"\u7ade\u79c0\u533a","center":"115.458671,38.877318","level":"district","districts":[]},{"citycode":"0312","adcode":"130606","name":"\u83b2\u6c60\u533a","center":"115.497153,38.883528","level":"district","districts":[]},{"citycode":"0312","adcode":"130609","name":"\u5f90\u6c34\u533a","center":"115.655772,39.018781","level":"district","districts":[]},{"citycode":"0312","adcode":"130637","name":"\u535a\u91ce\u53bf","center":"115.464295,38.458048","level":"district","districts":[]},{"citycode":"0312","adcode":"130683","name":"\u5b89\u56fd\u5e02","center":"115.327088,38.418985","level":"district","districts":[]},{"citycode":"0312","adcode":"130629","name":"\u5bb9\u57ce\u53bf","center":"115.861635,39.043321","level":"district","districts":[]},{"citycode":"0312","adcode":"130626","name":"\u5b9a\u5174\u53bf","center":"115.808183,39.263219","level":"district","districts":[]},{"citycode":"0312","adcode":"130630","name":"\u6d9e\u6e90\u53bf","center":"114.694416,39.360622","level":"district","districts":[]},{"citycode":"0312","adcode":"130624","name":"\u961c\u5e73\u53bf","center":"114.195118,38.849221","level":"district","districts":[]},{"citycode":"0312","adcode":"130623","name":"\u6d9e\u6c34\u53bf","center":"115.713651,39.394305","level":"district","districts":[]},{"citycode":"0312","adcode":"130681","name":"\u6dbf\u5dde\u5e02","center":"115.97444,39.485684","level":"district","districts":[]},{"citycode":"0312","adcode":"130684","name":"\u9ad8\u7891\u5e97\u5e02","center":"115.873612,39.327233","level":"district","districts":[]}]},{"citycode":"0313","adcode":"130700","name":"\u5f20\u5bb6\u53e3\u5e02","center":"114.885895,40.768931","level":"city","districts":[{"citycode":"0313","adcode":"130723","name":"\u5eb7\u4fdd\u53bf","center":"114.60018,41.853016","level":"district","districts":[]},{"citycode":"0313","adcode":"130732","name":"\u8d64\u57ce\u53bf","center":"115.831256,40.913348","level":"district","districts":[]},{"citycode":"0313","adcode":"130709","name":"\u5d07\u793c\u533a","center":"115.282345,40.974741","level":"district","districts":[]},{"citycode":"0313","adcode":"130706","name":"\u4e0b\u82b1\u56ed\u533a","center":"115.287127,40.502628","level":"district","districts":[]},{"citycode":"0313","adcode":"130703","name":"\u6865\u897f\u533a","center":"114.868604,40.819553","level":"district","districts":[]},{"citycode":"0313","adcode":"130725","name":"\u5c1a\u4e49\u53bf","center":"113.968763,41.076588","level":"district","districts":[]},{"citycode":"0313","adcode":"130724","name":"\u6cbd\u6e90\u53bf","center":"115.688544,41.670497","level":"district","districts":[]},{"citycode":"0313","adcode":"130722","name":"\u5f20\u5317\u53bf","center":"114.719927,41.159039","level":"district","districts":[]},{"citycode":"0313","adcode":"130708","name":"\u4e07\u5168\u533a","center":"114.740584,40.767377","level":"district","districts":[]},{"citycode":"0313","adcode":"130731","name":"\u6dbf\u9e7f\u53bf","center":"115.196835,40.382681","level":"district","districts":[]},{"citycode":"0313","adcode":"130705","name":"\u5ba3\u5316\u533a","center":"115.099515,40.609444","level":"district","districts":[]},{"citycode":"0313","adcode":"130702","name":"\u6865\u4e1c\u533a","center":"114.894114,40.788472","level":"district","districts":[]},{"citycode":"0313","adcode":"130728","name":"\u6000\u5b89\u53bf","center":"114.386488,40.67527","level":"district","districts":[]},{"citycode":"0313","adcode":"130726","name":"\u851a\u53bf","center":"114.589136,39.840154","level":"district","districts":[]},{"citycode":"0313","adcode":"130727","name":"\u9633\u539f\u53bf","center":"114.150267,40.104303","level":"district","districts":[]},{"citycode":"0313","adcode":"130730","name":"\u6000\u6765\u53bf","center":"115.517868,40.415625","level":"district","districts":[]}]},{"citycode":"0319","adcode":"130500","name":"\u90a2\u53f0\u5e02","center":"114.49742,37.060227","level":"city","districts":[{"citycode":"0319","adcode":"130506","name":"\u5357\u548c\u533a","center":"114.683683,37.005626","level":"district","districts":[]},{"citycode":"0319","adcode":"130524","name":"\u67cf\u4e61\u53bf","center":"114.693447,37.48288","level":"district","districts":[]},{"citycode":"0319","adcode":"130530","name":"\u65b0\u6cb3\u53bf","center":"115.251005,37.520891","level":"district","districts":[]},{"citycode":"0319","adcode":"130581","name":"\u5357\u5bab\u5e02","center":"115.40866,37.358907","level":"district","districts":[]},{"citycode":"0319","adcode":"130534","name":"\u6e05\u6cb3\u53bf","center":"115.665081,37.0451","level":"district","districts":[]},{"citycode":"0319","adcode":"130533","name":"\u5a01\u53bf","center":"115.266829,36.975164","level":"district","districts":[]},{"citycode":"0319","adcode":"130535","name":"\u4e34\u897f\u53bf","center":"115.501258,36.871312","level":"district","districts":[]},{"citycode":"0319","adcode":"130582","name":"\u6c99\u6cb3\u5e02","center":"114.503023,36.855548","level":"district","districts":[]},{"citycode":"0319","adcode":"130522","name":"\u4e34\u57ce\u53bf","center":"114.498651,37.444512","level":"district","districts":[]},{"citycode":"0319","adcode":"130529","name":"\u5de8\u9e7f\u53bf","center":"115.037884,37.221293","level":"district","districts":[]},{"citycode":"0319","adcode":"130505","name":"\u4efb\u6cfd\u533a","center":"114.671339,37.121958","level":"district","districts":[]},{"citycode":"0319","adcode":"130525","name":"\u9686\u5c27\u53bf","center":"114.770509,37.351232","level":"district","districts":[]},{"citycode":"0319","adcode":"130523","name":"\u5185\u4e18\u53bf","center":"114.512226,37.287612","level":"district","districts":[]},{"citycode":"0319","adcode":"130528","name":"\u5b81\u664b\u53bf","center":"114.940006,37.624524","level":"district","districts":[]},{"citycode":"0319","adcode":"130532","name":"\u5e73\u4e61\u53bf","center":"115.03008,37.063771","level":"district","districts":[]},{"citycode":"0319","adcode":"130531","name":"\u5e7f\u5b97\u53bf","center":"115.142766,37.074795","level":"district","districts":[]},{"citycode":"0319","adcode":"130503","name":"\u4fe1\u90fd\u533a","center":"114.468229,37.093798","level":"district","districts":[]},{"citycode":"0319","adcode":"130502","name":"\u8944\u90fd\u533a","center":"114.507443,37.071314","level":"district","districts":[]}]},{"citycode":"0318","adcode":"131100","name":"\u8861\u6c34\u5e02","center":"115.668987,37.739367","level":"city","districts":[{"citycode":"0318","adcode":"131102","name":"\u6843\u57ce\u533a","center":"115.675208,37.735152","level":"district","districts":[]},{"citycode":"0318","adcode":"131182","name":"\u6df1\u5dde\u5e02","center":"115.559576,38.001535","level":"district","districts":[]},{"citycode":"0318","adcode":"131126","name":"\u6545\u57ce\u53bf","center":"115.965877,37.347873","level":"district","districts":[]},{"citycode":"0318","adcode":"131123","name":"\u6b66\u5f3a\u53bf","center":"115.982119,38.041447","level":"district","districts":[]},{"citycode":"0318","adcode":"131124","name":"\u9976\u9633\u53bf","center":"115.725898,38.235313","level":"district","districts":[]},{"citycode":"0318","adcode":"131125","name":"\u5b89\u5e73\u53bf","center":"115.518918,38.234769","level":"district","districts":[]},{"citycode":"0318","adcode":"131121","name":"\u67a3\u5f3a\u53bf","center":"115.724365,37.514217","level":"district","districts":[]},{"citycode":"0318","adcode":"131127","name":"\u666f\u53bf","center":"116.270558,37.692831","level":"district","districts":[]},{"citycode":"0318","adcode":"131103","name":"\u5180\u5dde\u533a","center":"115.579392,37.550922","level":"district","districts":[]},{"citycode":"0318","adcode":"131122","name":"\u6b66\u9091\u53bf","center":"115.887498,37.802036","level":"district","districts":[]},{"citycode":"0318","adcode":"131128","name":"\u961c\u57ce\u53bf","center":"116.175424,37.862984","level":"district","districts":[]}]}]},{"citycode":"1852","adcode":"810000","name":"\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a","center":"114.170714,22.278354","level":"province","districts":[{"citycode":"1852","adcode":"810013","name":"\u5317\u533a","center":"114.1473639,22.49610389","level":"district","districts":[]},{"citycode":"1852","adcode":"810014","name":"\u5927\u57d4\u533a","center":"114.1717431,22.44565306","level":"district","districts":[]},{"citycode":"1852","adcode":"810015","name":"\u897f\u8d21\u533a","center":"114.264645,22.31421306","level":"district","districts":[]},{"citycode":"1852","adcode":"810016","name":"\u6c99\u7530\u533a","center":"114.1953653,22.37953167","level":"district","districts":[]},{"citycode":"1852","adcode":"810011","name":"\u5c6f\u95e8\u533a","center":"113.9765742,22.39384417","level":"district","districts":[]},{"citycode":"1852","adcode":"810008","name":"\u9ec4\u5927\u4ed9\u533a","center":"114.2038856,22.33632056","level":"district","districts":[]},{"citycode":"1852","adcode":"810007","name":"\u4e5d\u9f99\u57ce\u533a","center":"114.1928467,22.31251","level":"district","districts":[]},{"citycode":"1852","adcode":"810006","name":"\u6df1\u6c34\u57d7\u533a","center":"114.1632417,22.33385417","level":"district","districts":[]},{"citycode":"1852","adcode":"810009","name":"\u89c2\u5858\u533a","center":"114.2140542,22.32083778","level":"district","districts":[]},{"citycode":"1852","adcode":"810005","name":"\u6cb9\u5c16\u65fa\u533a","center":"114.1733317,22.31170389","level":"district","districts":[]},{"citycode":"1852","adcode":"810003","name":"\u4e1c\u533a","center":"114.2260031,22.27969306","level":"district","districts":[]},{"citycode":"1852","adcode":"810001","name":"\u4e2d\u897f\u533a","center":"114.1543731,22.28198083","level":"district","districts":[]},{"citycode":"1852","adcode":"810018","name":"\u79bb\u5c9b\u533a","center":"113.94612,22.28640778","level":"district","districts":[]},{"citycode":"1852","adcode":"810002","name":"\u6e7e\u4ed4\u533a","center":"114.1829153,22.27638889","level":"district","districts":[]},{"citycode":"1852","adcode":"810004","name":"\u5357\u533a","center":"114.1600117,22.24589667","level":"district","districts":[]},{"citycode":"1852","adcode":"810012","name":"\u5143\u6717\u533a","center":"114.0324381,22.44142833","level":"district","districts":[]},{"citycode":"1852","adcode":"810010","name":"\u8343\u6e7e\u533a","center":"114.1210792,22.36830667","level":"district","districts":[]},{"citycode":"1852","adcode":"810017","name":"\u8475\u9752\u533a","center":"114.1393194,22.36387667","level":"district","districts":[]}]},{"citycode":"1886","adcode":"710000","name":"\u53f0\u6e7e\u7701","center":"121.509062,25.044332","level":"province","districts":[]},{"citycode":"1853","adcode":"820000","name":"\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a","center":"113.543076,22.186927","level":"province","districts":[{"citycode":"1853","adcode":"820003","name":"\u671b\u5fb7\u5802\u533a","center":"113.5501828,22.19372083","level":"district","districts":[]},{"citycode":"1853","adcode":"820006","name":"\u5609\u6a21\u5802\u533a","center":"113.5587044,22.15375944","level":"district","districts":[]},{"citycode":"1853","adcode":"820002","name":"\u82b1\u738b\u5802\u533a","center":"113.5489608,22.1992075","level":"district","districts":[]},{"citycode":"1853","adcode":"820008","name":"\u5723\u65b9\u6d4e\u5404\u5802\u533a","center":"113.5599542,22.12348639","level":"district","districts":[]},{"citycode":"1853","adcode":"820007","name":"\u8def\u6c39\u586b\u6d77\u533a","center":"113.5695992,22.13663","level":"district","districts":[]},{"citycode":"1853","adcode":"820004","name":"\u5927\u5802\u533a","center":"113.5536475,22.18853944","level":"district","districts":[]},{"citycode":"1853","adcode":"820001","name":"\u82b1\u5730\u739b\u5802\u533a","center":"113.5528956,22.20787","level":"district","districts":[]},{"citycode":"1853","adcode":"820005","name":"\u98ce\u987a\u5802\u533a","center":"113.5419278,22.18736806","level":"district","districts":[]}]},{"citycode":[],"adcode":"620000","name":"\u7518\u8083\u7701","center":"103.826777,36.060634","level":"province","districts":[{"citycode":"1937","adcode":"620200","name":"\u5609\u5cea\u5173\u5e02","center":"98.2882,39.77325","level":"city","districts":[{"citycode":"1937","adcode":"620200","name":"\u5cea\u6cc9\u9547","center":"98.320410,39.958254","level":"street","districts":[]},{"citycode":"1937","adcode":"620200","name":"\u65b0\u57ce\u9547","center":"98.362748,39.958127","level":"street","districts":[]},{"citycode":"1937","adcode":"620200","name":"\u6587\u6b8a\u9547","center":"98.157893,39.696861","level":"street","districts":[]},{"citycode":"1937","adcode":"620200","name":"\u96c4\u5173\u8857\u9053","center":"98.239097,39.892952","level":"street","districts":[]},{"citycode":"1937","adcode":"620200","name":"\u94a2\u57ce\u8857\u9053","center":"98.292606,39.755770","level":"street","districts":[]}]},{"citycode":"0937","adcode":"620900","name":"\u9152\u6cc9\u5e02","center":"98.49432,39.733416","level":"city","districts":[{"citycode":"0937","adcode":"620982","name":"\u6566\u714c\u5e02","center":"94.66201,40.142141","level":"district","districts":[]},{"citycode":"0937","adcode":"620923","name":"\u8083\u5317\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","center":"94.876533,39.512158","level":"district","districts":[]},{"citycode":"0937","adcode":"620981","name":"\u7389\u95e8\u5e02","center":"97.045617,40.292344","level":"district","districts":[]},{"citycode":"0937","adcode":"620902","name":"\u8083\u5dde\u533a","center":"98.507834,39.74511","level":"district","districts":[]},{"citycode":"0937","adcode":"620921","name":"\u91d1\u5854\u53bf","center":"98.901523,39.984146","level":"district","districts":[]},{"citycode":"0937","adcode":"620922","name":"\u74dc\u5dde\u53bf","center":"95.782255,40.520457","level":"district","districts":[]},{"citycode":"0937","adcode":"620924","name":"\u963f\u514b\u585e\u54c8\u8428\u514b\u65cf\u81ea\u6cbb\u53bf","center":"94.340202,39.633944","level":"district","districts":[]}]},{"citycode":"0931","adcode":"620100","name":"\u5170\u5dde\u5e02","center":"103.834228,36.060798","level":"city","districts":[{"citycode":"0931","adcode":"620111","name":"\u7ea2\u53e4\u533a","center":"102.859338,36.345768","level":"district","districts":[]},{"citycode":"0931","adcode":"620105","name":"\u5b89\u5b81\u533a","center":"103.718953,36.104493","level":"district","districts":[]},{"citycode":"0931","adcode":"620121","name":"\u6c38\u767b\u53bf","center":"103.260273,36.736457","level":"district","districts":[]},{"citycode":"0931","adcode":"620122","name":"\u768b\u5170\u53bf","center":"103.947345,36.332434","level":"district","districts":[]},{"citycode":"0931","adcode":"620104","name":"\u897f\u56fa\u533a","center":"103.627966,36.08845","level":"district","districts":[]},{"citycode":"0931","adcode":"620103","name":"\u4e03\u91cc\u6cb3\u533a","center":"103.786261,36.066249","level":"district","districts":[]},{"citycode":"0931","adcode":"620123","name":"\u6986\u4e2d\u53bf","center":"104.112541,35.843354","level":"district","districts":[]},{"citycode":"0931","adcode":"620102","name":"\u57ce\u5173\u533a","center":"103.825315,36.056948","level":"district","districts":[]}]},{"citycode":"0933","adcode":"620800","name":"\u5e73\u51c9\u5e02","center":"106.664913,35.542417","level":"city","districts":[{"citycode":"0933","adcode":"620802","name":"\u5d06\u5cd2\u533a","center":"106.67489,35.542437","level":"district","districts":[]},{"citycode":"0933","adcode":"620825","name":"\u5e84\u6d6a\u53bf","center":"106.036201,35.20266","level":"district","districts":[]},{"citycode":"0933","adcode":"620826","name":"\u9759\u5b81\u53bf","center":"105.732165,35.522035","level":"district","districts":[]},{"citycode":"0933","adcode":"620881","name":"\u534e\u4ead\u5e02","center":"106.628899,35.207695","level":"district","districts":[]},{"citycode":"0933","adcode":"620822","name":"\u7075\u53f0\u53bf","center":"107.595874,35.070027","level":"district","districts":[]},{"citycode":"0933","adcode":"620823","name":"\u5d07\u4fe1\u53bf","center":"107.025762,35.305648","level":"district","districts":[]},{"citycode":"0933","adcode":"620821","name":"\u6cfe\u5ddd\u53bf","center":"107.367608,35.332992","level":"district","districts":[]}]},{"citycode":"0935","adcode":"620300","name":"\u91d1\u660c\u5e02","center":"102.187972,38.521468","level":"city","districts":[{"citycode":"0935","adcode":"620321","name":"\u6c38\u660c\u53bf","center":"101.984642,38.243534","level":"district","districts":[]},{"citycode":"0935","adcode":"620302","name":"\u91d1\u5ddd\u533a","center":"102.1939,38.520373","level":"district","districts":[]}]},{"citycode":"0938","adcode":"620500","name":"\u5929\u6c34\u5e02","center":"105.724828,34.581514","level":"city","districts":[{"citycode":"0938","adcode":"620521","name":"\u6e05\u6c34\u53bf","center":"106.137318,34.749906","level":"district","districts":[]},{"citycode":"0938","adcode":"620503","name":"\u9ea6\u79ef\u533a","center":"105.889452,34.571143","level":"district","districts":[]},{"citycode":"0938","adcode":"620502","name":"\u79e6\u5dde\u533a","center":"105.724914,34.581187","level":"district","districts":[]},{"citycode":"0938","adcode":"620524","name":"\u6b66\u5c71\u53bf","center":"104.89121,34.72183","level":"district","districts":[]},{"citycode":"0938","adcode":"620523","name":"\u7518\u8c37\u53bf","center":"105.340789,34.745447","level":"district","districts":[]},{"citycode":"0938","adcode":"620525","name":"\u5f20\u5bb6\u5ddd\u56de\u65cf\u81ea\u6cbb\u53bf","center":"106.20513,34.988676","level":"district","districts":[]},{"citycode":"0938","adcode":"620522","name":"\u79e6\u5b89\u53bf","center":"105.675799,34.859094","level":"district","districts":[]}]},{"citycode":"0943","adcode":"620400","name":"\u767d\u94f6\u5e02","center":"104.138872,36.545123","level":"city","districts":[{"citycode":"0943","adcode":"620421","name":"\u9756\u8fdc\u53bf","center":"104.676202,36.571736","level":"district","districts":[]},{"citycode":"0943","adcode":"620423","name":"\u666f\u6cf0\u53bf","center":"104.063125,37.18351","level":"district","districts":[]},{"citycode":"0943","adcode":"620402","name":"\u767d\u94f6\u533a","center":"104.14956,36.53469","level":"district","districts":[]},{"citycode":"0943","adcode":"620403","name":"\u5e73\u5ddd\u533a","center":"104.825275,36.728494","level":"district","districts":[]},{"citycode":"0943","adcode":"620422","name":"\u4f1a\u5b81\u53bf","center":"105.052883,35.693241","level":"district","districts":[]}]},{"citycode":"1935","adcode":"620600","name":"\u6b66\u5a01\u5e02","center":"102.637821,37.92898","level":"city","districts":[{"citycode":"1935","adcode":"620602","name":"\u51c9\u5dde\u533a","center":"102.641959,37.928217","level":"district","districts":[]},{"citycode":"1935","adcode":"620622","name":"\u53e4\u6d6a\u53bf","center":"102.897542,37.470882","level":"district","districts":[]},{"citycode":"1935","adcode":"620621","name":"\u6c11\u52e4\u53bf","center":"103.093671,38.624293","level":"district","districts":[]},{"citycode":"1935","adcode":"620623","name":"\u5929\u795d\u85cf\u65cf\u81ea\u6cbb\u53bf","center":"103.142416,36.971978","level":"district","districts":[]}]},{"citycode":"0936","adcode":"620700","name":"\u5f20\u6396\u5e02","center":"100.449858,38.924766","level":"city","districts":[{"citycode":"0936","adcode":"620721","name":"\u8083\u5357\u88d5\u56fa\u65cf\u81ea\u6cbb\u53bf","center":"99.627762,38.839221","level":"district","districts":[]},{"citycode":"0936","adcode":"620724","name":"\u9ad8\u53f0\u53bf","center":"99.819265,39.378294","level":"district","districts":[]},{"citycode":"0936","adcode":"620723","name":"\u4e34\u6cfd\u53bf","center":"100.164333,39.15224","level":"district","districts":[]},{"citycode":"0936","adcode":"620702","name":"\u7518\u5dde\u533a","center":"100.415324,38.944315","level":"district","districts":[]},{"citycode":"0936","adcode":"620722","name":"\u6c11\u4e50\u53bf","center":"100.812047,38.430318","level":"district","districts":[]},{"citycode":"0936","adcode":"620725","name":"\u5c71\u4e39\u53bf","center":"101.088611,38.7846","level":"district","districts":[]}]},{"citycode":"0932","adcode":"621100","name":"\u5b9a\u897f\u5e02","center":"104.592342,35.607947","level":"city","districts":[{"citycode":"0932","adcode":"621123","name":"\u6e2d\u6e90\u53bf","center":"104.215092,35.137028","level":"district","districts":[]},{"citycode":"0932","adcode":"621124","name":"\u4e34\u6d2e\u53bf","center":"103.859446,35.394993","level":"district","districts":[]},{"citycode":"0932","adcode":"621126","name":"\u5cb7\u53bf","center":"104.036731,34.43833","level":"district","districts":[]},{"citycode":"0932","adcode":"621125","name":"\u6f33\u53bf","center":"104.471722,34.84854","level":"district","districts":[]},{"citycode":"0932","adcode":"621122","name":"\u9647\u897f\u53bf","center":"104.634928,35.003899","level":"district","districts":[]},{"citycode":"0932","adcode":"621102","name":"\u5b89\u5b9a\u533a","center":"104.610647,35.580918","level":"district","districts":[]},{"citycode":"0932","adcode":"621121","name":"\u901a\u6e2d\u53bf","center":"105.242312,35.211311","level":"district","districts":[]}]},{"citycode":"0941","adcode":"623000","name":"\u7518\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"102.911736,34.983266","level":"city","districts":[{"citycode":"0941","adcode":"623021","name":"\u4e34\u6f6d\u53bf","center":"103.353665,34.693009","level":"district","districts":[]},{"citycode":"0941","adcode":"623022","name":"\u5353\u5c3c\u53bf","center":"103.506849,34.589476","level":"district","districts":[]},{"citycode":"0941","adcode":"623025","name":"\u739b\u66f2\u53bf","center":"102.072608,33.998145","level":"district","districts":[]},{"citycode":"0941","adcode":"623027","name":"\u590f\u6cb3\u53bf","center":"102.548303,35.203857","level":"district","districts":[]},{"citycode":"0941","adcode":"623026","name":"\u788c\u66f2\u53bf","center":"102.487512,34.591084","level":"district","districts":[]},{"citycode":"0941","adcode":"623001","name":"\u5408\u4f5c\u5e02","center":"102.910305,35.000228","level":"district","districts":[]},{"citycode":"0941","adcode":"623024","name":"\u8fed\u90e8\u53bf","center":"103.221735,34.055888","level":"district","districts":[]},{"citycode":"0941","adcode":"623023","name":"\u821f\u66f2\u53bf","center":"104.251543,33.793695","level":"district","districts":[]}]},{"citycode":"2935","adcode":"621200","name":"\u9647\u5357\u5e02","center":"104.960296,33.370174","level":"city","districts":[{"citycode":"2935","adcode":"621221","name":"\u6210\u53bf","center":"105.729569,33.740547","level":"district","districts":[]},{"citycode":"2935","adcode":"621227","name":"\u5fbd\u53bf","center":"106.087156,33.769927","level":"district","districts":[]},{"citycode":"2935","adcode":"621228","name":"\u4e24\u5f53\u53bf","center":"106.304973,33.908952","level":"district","districts":[]},{"citycode":"2935","adcode":"621222","name":"\u6587\u53bf","center":"104.6835,32.944031","level":"district","districts":[]},{"citycode":"2935","adcode":"621224","name":"\u5eb7\u53bf","center":"105.608609,33.329212","level":"district","districts":[]},{"citycode":"2935","adcode":"621202","name":"\u6b66\u90fd\u533a","center":"104.921861,33.400685","level":"district","districts":[]},{"citycode":"2935","adcode":"621225","name":"\u897f\u548c\u53bf","center":"105.298756,34.014215","level":"district","districts":[]},{"citycode":"2935","adcode":"621226","name":"\u793c\u53bf","center":"105.17864,34.189345","level":"district","districts":[]},{"citycode":"2935","adcode":"621223","name":"\u5b95\u660c\u53bf","center":"104.393385,34.047261","level":"district","districts":[]}]},{"citycode":"0934","adcode":"621000","name":"\u5e86\u9633\u5e02","center":"107.643433,35.709459","level":"city","districts":[{"citycode":"0934","adcode":"621027","name":"\u9547\u539f\u53bf","center":"107.200888,35.677705","level":"district","districts":[]},{"citycode":"0934","adcode":"621022","name":"\u73af\u53bf","center":"107.308788,36.568566","level":"district","districts":[]},{"citycode":"0934","adcode":"621021","name":"\u5e86\u57ce\u53bf","center":"107.881706,36.016125","level":"district","districts":[]},{"citycode":"0934","adcode":"621023","name":"\u534e\u6c60\u53bf","center":"107.98972,36.461474","level":"district","districts":[]},{"citycode":"0934","adcode":"621024","name":"\u5408\u6c34\u53bf","center":"108.021859,35.833908","level":"district","districts":[]},{"citycode":"0934","adcode":"621002","name":"\u897f\u5cf0\u533a","center":"107.650563,35.730318","level":"district","districts":[]},{"citycode":"0934","adcode":"621026","name":"\u5b81\u53bf","center":"107.913463,35.509252","level":"district","districts":[]},{"citycode":"0934","adcode":"621025","name":"\u6b63\u5b81\u53bf","center":"108.359964,35.492158","level":"district","districts":[]}]},{"citycode":"0930","adcode":"622900","name":"\u4e34\u590f\u56de\u65cf\u81ea\u6cbb\u5dde","center":"103.210386,35.601792","level":"city","districts":[{"citycode":"0930","adcode":"622927","name":"\u79ef\u77f3\u5c71\u4fdd\u5b89\u65cf\u4e1c\u4e61\u65cf\u6492\u62c9\u65cf\u81ea\u6cbb\u53bf","center":"102.875939,35.717697","level":"district","districts":[]},{"citycode":"0930","adcode":"622923","name":"\u6c38\u9756\u53bf","center":"103.285853,35.958306","level":"district","districts":[]},{"citycode":"0930","adcode":"622901","name":"\u4e34\u590f\u5e02","center":"103.24222,35.604682","level":"district","districts":[]},{"citycode":"0930","adcode":"622926","name":"\u4e1c\u4e61\u65cf\u81ea\u6cbb\u53bf","center":"103.388122,35.664409","level":"district","districts":[]},{"citycode":"0930","adcode":"622924","name":"\u5e7f\u6cb3\u53bf","center":"103.575582,35.488248","level":"district","districts":[]},{"citycode":"0930","adcode":"622921","name":"\u4e34\u590f\u53bf","center":"103.04068,35.478726","level":"district","districts":[]},{"citycode":"0930","adcode":"622925","name":"\u548c\u653f\u53bf","center":"103.350996,35.424602","level":"district","districts":[]},{"citycode":"0930","adcode":"622922","name":"\u5eb7\u4e50\u53bf","center":"103.708507,35.370296","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"510000","name":"\u56db\u5ddd\u7701","center":"104.076452,30.651696","level":"province","districts":[{"citycode":"0839","adcode":"510800","name":"\u5e7f\u5143\u5e02","center":"105.844004,32.435774","level":"city","districts":[{"citycode":"0839","adcode":"510812","name":"\u671d\u5929\u533a","center":"105.882848,32.651352","level":"district","districts":[]},{"citycode":"0839","adcode":"510824","name":"\u82cd\u6eaa\u53bf","center":"105.934756,31.731709","level":"district","districts":[]},{"citycode":"0839","adcode":"510811","name":"\u662d\u5316\u533a","center":"105.957612,32.333173","level":"district","districts":[]},{"citycode":"0839","adcode":"510823","name":"\u5251\u9601\u53bf","center":"105.524699,32.288681","level":"district","districts":[]},{"citycode":"0839","adcode":"510822","name":"\u9752\u5ddd\u53bf","center":"105.238498,32.575821","level":"district","districts":[]},{"citycode":"0839","adcode":"510802","name":"\u5229\u5dde\u533a","center":"105.845307,32.433756","level":"district","districts":[]},{"citycode":"0839","adcode":"510821","name":"\u65fa\u82cd\u53bf","center":"106.290124,32.229074","level":"district","districts":[]}]},{"citycode":"0817","adcode":"511300","name":"\u5357\u5145\u5e02","center":"106.110565,30.837235","level":"city","districts":[{"citycode":"0817","adcode":"511321","name":"\u5357\u90e8\u53bf","center":"106.036349,31.348255","level":"district","districts":[]},{"citycode":"0817","adcode":"511322","name":"\u8425\u5c71\u53bf","center":"106.565524,31.077057","level":"district","districts":[]},{"citycode":"0817","adcode":"511304","name":"\u5609\u9675\u533a","center":"106.07208,30.758831","level":"district","districts":[]},{"citycode":"0817","adcode":"511325","name":"\u897f\u5145\u53bf","center":"105.900894,30.995546","level":"district","districts":[]},{"citycode":"0817","adcode":"511302","name":"\u987a\u5e86\u533a","center":"106.092327,30.797366","level":"district","districts":[]},{"citycode":"0817","adcode":"511381","name":"\u9606\u4e2d\u5e02","center":"106.005046,31.558356","level":"district","districts":[]},{"citycode":"0817","adcode":"511303","name":"\u9ad8\u576a\u533a","center":"106.118931,30.781284","level":"district","districts":[]},{"citycode":"0817","adcode":"511323","name":"\u84ec\u5b89\u53bf","center":"106.412156,31.028537","level":"district","districts":[]},{"citycode":"0817","adcode":"511324","name":"\u4eea\u9647\u53bf","center":"106.303082,31.271693","level":"district","districts":[]}]},{"citycode":"0827","adcode":"511900","name":"\u5df4\u4e2d\u5e02","center":"106.747548,31.867853","level":"city","districts":[{"citycode":"0827","adcode":"511902","name":"\u5df4\u5dde\u533a","center":"106.76887,31.851458","level":"district","districts":[]},{"citycode":"0827","adcode":"511922","name":"\u5357\u6c5f\u53bf","center":"106.828697,32.346589","level":"district","districts":[]},{"citycode":"0827","adcode":"511923","name":"\u5e73\u660c\u53bf","center":"107.103613,31.560436","level":"district","districts":[]},{"citycode":"0827","adcode":"511921","name":"\u901a\u6c5f\u53bf","center":"107.245033,31.911705","level":"district","districts":[]},{"citycode":"0827","adcode":"511903","name":"\u6069\u9633\u533a","center":"106.634651,31.796476","level":"district","districts":[]}]},{"citycode":"0838","adcode":"510600","name":"\u5fb7\u9633\u5e02","center":"104.397795,31.127449","level":"city","districts":[{"citycode":"0838","adcode":"510623","name":"\u4e2d\u6c5f\u53bf","center":"104.678601,31.03327","level":"district","districts":[]},{"citycode":"0838","adcode":"510682","name":"\u4ec0\u90a1\u5e02","center":"104.167345,31.12655","level":"district","districts":[]},{"citycode":"0838","adcode":"510604","name":"\u7f57\u6c5f\u533a","center":"104.510457,31.317388","level":"district","districts":[]},{"citycode":"0838","adcode":"510683","name":"\u7ef5\u7af9\u5e02","center":"104.220679,31.339251","level":"district","districts":[]},{"citycode":"0838","adcode":"510603","name":"\u65cc\u9633\u533a","center":"104.417061,31.143335","level":"district","districts":[]},{"citycode":"0838","adcode":"510681","name":"\u5e7f\u6c49\u5e02","center":"104.282204,30.977264","level":"district","districts":[]}]},{"citycode":"0816","adcode":"510700","name":"\u7ef5\u9633\u5e02","center":"104.679127,31.467673","level":"city","districts":[{"citycode":"0816","adcode":"510781","name":"\u6c5f\u6cb9\u5e02","center":"104.74564,31.778572","level":"district","districts":[]},{"citycode":"0816","adcode":"510725","name":"\u6893\u6f7c\u53bf","center":"105.170746,31.642635","level":"district","districts":[]},{"citycode":"0816","adcode":"510704","name":"\u6e38\u4ed9\u533a","center":"104.766136,31.473788","level":"district","districts":[]},{"citycode":"0816","adcode":"510722","name":"\u4e09\u53f0\u53bf","center":"105.093722,31.095826","level":"district","districts":[]},{"citycode":"0816","adcode":"510703","name":"\u6daa\u57ce\u533a","center":"104.756917,31.455192","level":"district","districts":[]},{"citycode":"0816","adcode":"510727","name":"\u5e73\u6b66\u53bf","center":"104.555481,32.409684","level":"district","districts":[]},{"citycode":"0816","adcode":"510726","name":"\u5317\u5ddd\u7f8c\u65cf\u81ea\u6cbb\u53bf","center":"104.468163,31.617192","level":"district","districts":[]},{"citycode":"0816","adcode":"510723","name":"\u76d0\u4ead\u53bf","center":"105.389453,31.208362","level":"district","districts":[]},{"citycode":"0816","adcode":"510705","name":"\u5b89\u5dde\u533a","center":"104.567543,31.534319","level":"district","districts":[]}]},{"citycode":"028","adcode":"510100","name":"\u6210\u90fd\u5e02","center":"104.066301,30.572961","level":"city","districts":[{"citycode":"028","adcode":"510182","name":"\u5f6d\u5dde\u5e02","center":"103.957706,30.990463","level":"district","districts":[]},{"citycode":"028","adcode":"510185","name":"\u7b80\u9633\u5e02","center":"104.547644,30.410937","level":"district","districts":[]},{"citycode":"028","adcode":"510131","name":"\u84b2\u6c5f\u53bf","center":"103.506478,30.197558","level":"district","districts":[]},{"citycode":"028","adcode":"510116","name":"\u53cc\u6d41\u533a","center":"103.92342,30.574884","level":"district","districts":[]},{"citycode":"028","adcode":"510105","name":"\u9752\u7f8a\u533a","center":"104.062415,30.674583","level":"district","districts":[]},{"citycode":"028","adcode":"510106","name":"\u91d1\u725b\u533a","center":"104.052236,30.691359","level":"district","districts":[]},{"citycode":"028","adcode":"510129","name":"\u5927\u9091\u53bf","center":"103.51226,30.573004","level":"district","districts":[]},{"citycode":"028","adcode":"510115","name":"\u6e29\u6c5f\u533a","center":"103.856423,30.681956","level":"district","districts":[]},{"citycode":"028","adcode":"510117","name":"\u90eb\u90fd\u533a","center":"103.900486,30.795113","level":"district","districts":[]},{"citycode":"028","adcode":"510184","name":"\u5d07\u5dde\u5e02","center":"103.673025,30.630183","level":"district","districts":[]},{"citycode":"028","adcode":"510104","name":"\u9526\u6c5f\u533a","center":"104.117262,30.598726","level":"district","districts":[]},{"citycode":"028","adcode":"510113","name":"\u9752\u767d\u6c5f\u533a","center":"104.251342,30.8786","level":"district","districts":[]},{"citycode":"028","adcode":"510121","name":"\u91d1\u5802\u53bf","center":"104.411871,30.86203","level":"district","districts":[]},{"citycode":"028","adcode":"510118","name":"\u65b0\u6d25\u533a","center":"103.810906,30.410404","level":"district","districts":[]},{"citycode":"028","adcode":"510183","name":"\u909b\u5d03\u5e02","center":"103.464176,30.41029","level":"district","districts":[]},{"citycode":"028","adcode":"510107","name":"\u6b66\u4faf\u533a","center":"104.043246,30.641849","level":"district","districts":[]},{"citycode":"028","adcode":"510181","name":"\u90fd\u6c5f\u5830\u5e02","center":"103.647193,30.988763","level":"district","districts":[]},{"citycode":"028","adcode":"510114","name":"\u65b0\u90fd\u533a","center":"104.158593,30.823568","level":"district","districts":[]},{"citycode":"028","adcode":"510112","name":"\u9f99\u6cc9\u9a7f\u533a","center":"104.27536,30.556808","level":"district","districts":[]},{"citycode":"028","adcode":"510108","name":"\u6210\u534e\u533a","center":"104.101452,30.659966","level":"district","districts":[]}]},{"citycode":"0826","adcode":"511600","name":"\u5e7f\u5b89\u5e02","center":"106.632647,30.456354","level":"city","districts":[{"citycode":"0826","adcode":"511623","name":"\u90bb\u6c34\u53bf","center":"106.930242,30.334911","level":"district","districts":[]},{"citycode":"0826","adcode":"511602","name":"\u5e7f\u5b89\u533a","center":"106.641628,30.473943","level":"district","districts":[]},{"citycode":"0826","adcode":"511621","name":"\u5cb3\u6c60\u53bf","center":"106.440056,30.538656","level":"district","districts":[]},{"citycode":"0826","adcode":"511622","name":"\u6b66\u80dc\u53bf","center":"106.295945,30.349493","level":"district","districts":[]},{"citycode":"0826","adcode":"511603","name":"\u524d\u950b\u533a","center":"106.886039,30.496059","level":"district","districts":[]},{"citycode":"0826","adcode":"511681","name":"\u534e\u84e5\u5e02","center":"106.783151,30.390439","level":"district","districts":[]}]},{"citycode":"0818","adcode":"511700","name":"\u8fbe\u5dde\u5e02","center":"107.46778,31.209278","level":"city","districts":[{"citycode":"0818","adcode":"511724","name":"\u5927\u7af9\u53bf","center":"107.204702,30.736222","level":"district","districts":[]},{"citycode":"0818","adcode":"511725","name":"\u6e20\u53bf","center":"106.973114,30.836504","level":"district","districts":[]},{"citycode":"0818","adcode":"511703","name":"\u8fbe\u5ddd\u533a","center":"107.511736,31.196573","level":"district","districts":[]},{"citycode":"0818","adcode":"511702","name":"\u901a\u5ddd\u533a","center":"107.505053,31.214665","level":"district","districts":[]},{"citycode":"0818","adcode":"511781","name":"\u4e07\u6e90\u5e02","center":"108.034393,32.081698","level":"district","districts":[]},{"citycode":"0818","adcode":"511723","name":"\u5f00\u6c5f\u53bf","center":"107.868609,31.082945","level":"district","districts":[]},{"citycode":"0818","adcode":"511722","name":"\u5ba3\u6c49\u53bf","center":"107.727198,31.353845","level":"district","districts":[]}]},{"citycode":"0825","adcode":"510900","name":"\u9042\u5b81\u5e02","center":"105.592602,30.53268","level":"city","districts":[{"citycode":"0825","adcode":"510923","name":"\u5927\u82f1\u53bf","center":"105.236852,30.594472","level":"district","districts":[]},{"citycode":"0825","adcode":"510981","name":"\u5c04\u6d2a\u5e02","center":"105.388366,30.871079","level":"district","districts":[]},{"citycode":"0825","adcode":"510921","name":"\u84ec\u6eaa\u53bf","center":"105.707498,30.75763","level":"district","districts":[]},{"citycode":"0825","adcode":"510904","name":"\u5b89\u5c45\u533a","center":"105.45636,30.355091","level":"district","districts":[]},{"citycode":"0825","adcode":"510903","name":"\u8239\u5c71\u533a","center":"105.568359,30.526201","level":"district","districts":[]}]},{"citycode":"0832","adcode":"512000","name":"\u8d44\u9633\u5e02","center":"104.627265,30.129236","level":"city","districts":[{"citycode":"0832","adcode":"512022","name":"\u4e50\u81f3\u53bf","center":"105.019823,30.275418","level":"district","districts":[]},{"citycode":"0832","adcode":"512021","name":"\u5b89\u5cb3\u53bf","center":"105.35551,30.103623","level":"district","districts":[]},{"citycode":"0832","adcode":"512002","name":"\u96c1\u6c5f\u533a","center":"104.676814,30.107778","level":"district","districts":[]}]},{"citycode":"1833","adcode":"511400","name":"\u7709\u5c71\u5e02","center":"103.848417,30.077113","level":"city","districts":[{"citycode":"1833","adcode":"511421","name":"\u4ec1\u5bff\u53bf","center":"104.133931,29.995638","level":"district","districts":[]},{"citycode":"1833","adcode":"511424","name":"\u4e39\u68f1\u53bf","center":"103.512859,30.014398","level":"district","districts":[]},{"citycode":"1833","adcode":"511423","name":"\u6d2a\u96c5\u53bf","center":"103.365035,29.915828","level":"district","districts":[]},{"citycode":"1833","adcode":"511403","name":"\u5f6d\u5c71\u533a","center":"103.872852,30.193278","level":"district","districts":[]},{"citycode":"1833","adcode":"511425","name":"\u9752\u795e\u53bf","center":"103.846596,29.831302","level":"district","districts":[]},{"citycode":"1833","adcode":"511402","name":"\u4e1c\u5761\u533a","center":"103.831868,30.041956","level":"district","districts":[]}]},{"citycode":"1832","adcode":"511000","name":"\u5185\u6c5f\u5e02","center":"105.057992,29.58021","level":"city","districts":[{"citycode":"1832","adcode":"511024","name":"\u5a01\u8fdc\u53bf","center":"104.669032,29.527456","level":"district","districts":[]},{"citycode":"1832","adcode":"511025","name":"\u8d44\u4e2d\u53bf","center":"104.851874,29.763419","level":"district","districts":[]},{"citycode":"1832","adcode":"511011","name":"\u4e1c\u5174\u533a","center":"105.076107,29.593528","level":"district","districts":[]},{"citycode":"1832","adcode":"511083","name":"\u9686\u660c\u5e02","center":"105.287507,29.339408","level":"district","districts":[]},{"citycode":"1832","adcode":"511002","name":"\u5e02\u4e2d\u533a","center":"105.06759,29.587091","level":"district","districts":[]}]},{"citycode":"0833","adcode":"511100","name":"\u4e50\u5c71\u5e02","center":"103.766085,29.552275","level":"city","districts":[{"citycode":"0833","adcode":"511126","name":"\u5939\u6c5f\u53bf","center":"103.571313,29.738143","level":"district","districts":[]},{"citycode":"0833","adcode":"511111","name":"\u6c99\u6e7e\u533a","center":"103.550118,29.412404","level":"district","districts":[]},{"citycode":"0833","adcode":"511112","name":"\u4e94\u901a\u6865\u533a","center":"103.818024,29.406837","level":"district","districts":[]},{"citycode":"0833","adcode":"511124","name":"\u4e95\u7814\u53bf","center":"104.06968,29.65165","level":"district","districts":[]},{"citycode":"0833","adcode":"511113","name":"\u91d1\u53e3\u6cb3\u533a","center":"103.078597,29.244345","level":"district","districts":[]},{"citycode":"0833","adcode":"511123","name":"\u728d\u4e3a\u53bf","center":"103.949231,29.208118","level":"district","districts":[]},{"citycode":"0833","adcode":"511132","name":"\u5ce8\u8fb9\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"103.262048,29.230426","level":"district","districts":[]},{"citycode":"0833","adcode":"511129","name":"\u6c90\u5ddd\u53bf","center":"103.902691,28.956394","level":"district","districts":[]},{"citycode":"0833","adcode":"511133","name":"\u9a6c\u8fb9\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"103.546347,28.83552","level":"district","districts":[]},{"citycode":"0833","adcode":"511102","name":"\u5e02\u4e2d\u533a","center":"103.761329,29.555374","level":"district","districts":[]},{"citycode":"0833","adcode":"511181","name":"\u5ce8\u7709\u5c71\u5e02","center":"103.484557,29.601189","level":"district","districts":[]}]},{"citycode":"0813","adcode":"510300","name":"\u81ea\u8d21\u5e02","center":"104.779307,29.33924","level":"city","districts":[{"citycode":"0813","adcode":"510321","name":"\u8363\u53bf","center":"104.417438,29.445461","level":"district","districts":[]},{"citycode":"0813","adcode":"510322","name":"\u5bcc\u987a\u53bf","center":"104.975193,29.181779","level":"district","districts":[]},{"citycode":"0813","adcode":"510304","name":"\u5927\u5b89\u533a","center":"104.773982,29.36371","level":"district","districts":[]},{"citycode":"0813","adcode":"510311","name":"\u6cbf\u6ee9\u533a","center":"104.873826,29.27208","level":"district","districts":[]},{"citycode":"0813","adcode":"510302","name":"\u81ea\u6d41\u4e95\u533a","center":"104.777182,29.337295","level":"district","districts":[]},{"citycode":"0813","adcode":"510303","name":"\u8d21\u4e95\u533a","center":"104.704179,29.333764","level":"district","districts":[]}]},{"citycode":"0830","adcode":"510500","name":"\u6cf8\u5dde\u5e02","center":"105.441866,28.87098","level":"city","districts":[{"citycode":"0830","adcode":"510504","name":"\u9f99\u9a6c\u6f6d\u533a","center":"105.437751,28.913257","level":"district","districts":[]},{"citycode":"0830","adcode":"510521","name":"\u6cf8\u53bf","center":"105.381879,29.1516","level":"district","districts":[]},{"citycode":"0830","adcode":"510503","name":"\u7eb3\u6eaa\u533a","center":"105.371324,28.772888","level":"district","districts":[]},{"citycode":"0830","adcode":"510524","name":"\u53d9\u6c38\u53bf","center":"105.444777,28.155631","level":"district","districts":[]},{"citycode":"0830","adcode":"510525","name":"\u53e4\u853a\u53bf","center":"105.812694,28.038763","level":"district","districts":[]},{"citycode":"0830","adcode":"510502","name":"\u6c5f\u9633\u533a","center":"105.434982,28.87881","level":"district","districts":[]},{"citycode":"0830","adcode":"510522","name":"\u5408\u6c5f\u53bf","center":"105.831011,28.811278","level":"district","districts":[]}]},{"citycode":"0831","adcode":"511500","name":"\u5b9c\u5bbe\u5e02","center":"104.642826,28.752354","level":"city","districts":[{"citycode":"0831","adcode":"511524","name":"\u957f\u5b81\u53bf","center":"104.920643,28.582866","level":"district","districts":[]},{"citycode":"0831","adcode":"511503","name":"\u5357\u6eaa\u533a","center":"104.969147,28.846366","level":"district","districts":[]},{"citycode":"0831","adcode":"511526","name":"\u73d9\u53bf","center":"104.708986,28.439514","level":"district","districts":[]},{"citycode":"0831","adcode":"511528","name":"\u5174\u6587\u53bf","center":"105.236207,28.303669","level":"district","districts":[]},{"citycode":"0831","adcode":"511523","name":"\u6c5f\u5b89\u53bf","center":"105.066982,28.723797","level":"district","districts":[]},{"citycode":"0831","adcode":"511527","name":"\u7b60\u8fde\u53bf","center":"104.511159,28.167981","level":"district","districts":[]},{"citycode":"0831","adcode":"511502","name":"\u7fe0\u5c4f\u533a","center":"104.619853,28.766537","level":"district","districts":[]},{"citycode":"0831","adcode":"511529","name":"\u5c4f\u5c71\u53bf","center":"104.346138,28.82867","level":"district","districts":[]},{"citycode":"0831","adcode":"511525","name":"\u9ad8\u53bf","center":"104.517748,28.436166","level":"district","districts":[]},{"citycode":"0831","adcode":"511504","name":"\u53d9\u5dde\u533a","center":"104.533244,28.690068","level":"district","districts":[]}]},{"citycode":"0834","adcode":"513400","name":"\u51c9\u5c71\u5f5d\u65cf\u81ea\u6cbb\u5dde","center":"102.267713,27.881396","level":"city","districts":[{"citycode":"0834","adcode":"513435","name":"\u7518\u6d1b\u53bf","center":"102.771441,28.959131","level":"district","districts":[]},{"citycode":"0834","adcode":"513422","name":"\u6728\u91cc\u85cf\u65cf\u81ea\u6cbb\u53bf","center":"101.280216,27.928736","level":"district","districts":[]},{"citycode":"0834","adcode":"513434","name":"\u8d8a\u897f\u53bf","center":"102.507467,28.639874","level":"district","districts":[]},{"citycode":"0834","adcode":"513436","name":"\u7f8e\u59d1\u53bf","center":"103.132359,28.328591","level":"district","districts":[]},{"citycode":"0834","adcode":"513437","name":"\u96f7\u6ce2\u53bf","center":"103.571705,28.263202","level":"district","districts":[]},{"citycode":"0834","adcode":"513433","name":"\u5195\u5b81\u53bf","center":"102.176622,28.550145","level":"district","districts":[]},{"citycode":"0834","adcode":"513423","name":"\u76d0\u6e90\u53bf","center":"101.509038,27.422593","level":"district","districts":[]},{"citycode":"0834","adcode":"513430","name":"\u91d1\u9633\u53bf","center":"103.248786,27.696735","level":"district","districts":[]},{"citycode":"0834","adcode":"513428","name":"\u666e\u683c\u53bf","center":"102.540901,27.376413","level":"district","districts":[]},{"citycode":"0834","adcode":"513429","name":"\u5e03\u62d6\u53bf","center":"102.809157,27.7121","level":"district","districts":[]},{"citycode":"0834","adcode":"513402","name":"\u4f1a\u7406\u5e02","center":"102.244774,26.655047","level":"district","districts":[]},{"citycode":"0834","adcode":"513424","name":"\u5fb7\u660c\u53bf","center":"102.175661,27.402832","level":"district","districts":[]},{"citycode":"0834","adcode":"513401","name":"\u897f\u660c\u5e02","center":"102.264166,27.89441","level":"district","districts":[]},{"citycode":"0834","adcode":"513431","name":"\u662d\u89c9\u53bf","center":"102.839849,28.015301","level":"district","districts":[]},{"citycode":"0834","adcode":"513426","name":"\u4f1a\u4e1c\u53bf","center":"102.577979,26.634744","level":"district","districts":[]},{"citycode":"0834","adcode":"513432","name":"\u559c\u5fb7\u53bf","center":"102.412451,28.306429","level":"district","districts":[]},{"citycode":"0834","adcode":"513427","name":"\u5b81\u5357\u53bf","center":"102.751587,27.061431","level":"district","districts":[]}]},{"citycode":"0812","adcode":"510400","name":"\u6500\u679d\u82b1\u5e02","center":"101.729116,26.558645","level":"city","districts":[{"citycode":"0812","adcode":"510421","name":"\u7c73\u6613\u53bf","center":"102.111073,26.896372","level":"district","districts":[]},{"citycode":"0812","adcode":"510422","name":"\u76d0\u8fb9\u53bf","center":"101.854027,26.682611","level":"district","districts":[]},{"citycode":"0812","adcode":"510411","name":"\u4ec1\u548c\u533a","center":"101.738615,26.497796","level":"district","districts":[]},{"citycode":"0812","adcode":"510402","name":"\u4e1c\u533a","center":"101.704129,26.546484","level":"district","districts":[]},{"citycode":"0812","adcode":"510403","name":"\u897f\u533a","center":"101.630557,26.5977","level":"district","districts":[]}]},{"citycode":"0836","adcode":"513300","name":"\u7518\u5b5c\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"101.96231,30.04952","level":"city","districts":[{"citycode":"0836","adcode":"513332","name":"\u77f3\u6e20\u53bf","center":"98.102938,32.978728","level":"district","districts":[]},{"citycode":"0836","adcode":"513328","name":"\u7518\u5b5c\u53bf","center":"99.991683,31.622731","level":"district","districts":[]},{"citycode":"0836","adcode":"513330","name":"\u5fb7\u683c\u53bf","center":"98.580914,31.806118","level":"district","districts":[]},{"citycode":"0836","adcode":"513327","name":"\u7089\u970d\u53bf","center":"100.676014,31.390657","level":"district","districts":[]},{"citycode":"0836","adcode":"513329","name":"\u65b0\u9f99\u53bf","center":"100.311569,30.93917","level":"district","districts":[]},{"citycode":"0836","adcode":"513331","name":"\u767d\u7389\u53bf","center":"98.824025,31.209669","level":"district","districts":[]},{"citycode":"0836","adcode":"513326","name":"\u9053\u5b5a\u53bf","center":"101.125157,30.979486","level":"district","districts":[]},{"citycode":"0836","adcode":"513334","name":"\u7406\u5858\u53bf","center":"100.269145,29.994228","level":"district","districts":[]},{"citycode":"0836","adcode":"513301","name":"\u5eb7\u5b9a\u5e02","center":"101.95687,29.998544","level":"district","districts":[]},{"citycode":"0836","adcode":"513335","name":"\u5df4\u5858\u53bf","center":"99.110555,30.00533","level":"district","districts":[]},{"citycode":"0836","adcode":"513325","name":"\u96c5\u6c5f\u53bf","center":"101.014366,30.031498","level":"district","districts":[]},{"citycode":"0836","adcode":"513337","name":"\u7a3b\u57ce\u53bf","center":"100.297369,29.03791","level":"district","districts":[]},{"citycode":"0836","adcode":"513336","name":"\u4e61\u57ce\u53bf","center":"99.798116,28.931081","level":"district","districts":[]},{"citycode":"0836","adcode":"513324","name":"\u4e5d\u9f99\u53bf","center":"101.507294,29.000347","level":"district","districts":[]},{"citycode":"0836","adcode":"513338","name":"\u5f97\u8363\u53bf","center":"99.286366,28.713085","level":"district","districts":[]},{"citycode":"0836","adcode":"513323","name":"\u4e39\u5df4\u53bf","center":"101.89054,30.878618","level":"district","districts":[]},{"citycode":"0836","adcode":"513322","name":"\u6cf8\u5b9a\u53bf","center":"102.234814,29.914103","level":"district","districts":[]},{"citycode":"0836","adcode":"513333","name":"\u8272\u8fbe\u53bf","center":"100.333011,32.268541","level":"district","districts":[]}]},{"citycode":"0835","adcode":"511800","name":"\u96c5\u5b89\u5e02","center":"103.041538,30.009998","level":"city","districts":[{"citycode":"0835","adcode":"511827","name":"\u5b9d\u5174\u53bf","center":"102.824826,30.252469","level":"district","districts":[]},{"citycode":"0835","adcode":"511822","name":"\u8365\u7ecf\u53bf","center":"102.846537,29.793254","level":"district","districts":[]},{"citycode":"0835","adcode":"511802","name":"\u96e8\u57ce\u533a","center":"103.032868,30.005718","level":"district","districts":[]},{"citycode":"0835","adcode":"511824","name":"\u77f3\u68c9\u53bf","center":"102.358364,29.230963","level":"district","districts":[]},{"citycode":"0835","adcode":"511823","name":"\u6c49\u6e90\u53bf","center":"102.650417,29.344275","level":"district","districts":[]},{"citycode":"0835","adcode":"511826","name":"\u82a6\u5c71\u53bf","center":"102.933618,30.145077","level":"district","districts":[]},{"citycode":"0835","adcode":"511825","name":"\u5929\u5168\u53bf","center":"102.771745,30.05728","level":"district","districts":[]},{"citycode":"0835","adcode":"511803","name":"\u540d\u5c71\u533a","center":"103.109238,30.069837","level":"district","districts":[]}]},{"citycode":"0837","adcode":"513200","name":"\u963f\u575d\u85cf\u65cf\u7f8c\u65cf\u81ea\u6cbb\u5dde","center":"102.224504,31.899427","level":"city","districts":[{"citycode":"0837","adcode":"513225","name":"\u4e5d\u5be8\u6c9f\u53bf","center":"104.2426,33.252008","level":"district","districts":[]},{"citycode":"0837","adcode":"513231","name":"\u963f\u575d\u53bf","center":"101.706548,32.902387","level":"district","districts":[]},{"citycode":"0837","adcode":"513233","name":"\u7ea2\u539f\u53bf","center":"102.544395,32.790841","level":"district","districts":[]},{"citycode":"0837","adcode":"513228","name":"\u9ed1\u6c34\u53bf","center":"102.987592,32.069268","level":"district","districts":[]},{"citycode":"0837","adcode":"513201","name":"\u9a6c\u5c14\u5eb7\u5e02","center":"102.206386,31.905799","level":"district","districts":[]},{"citycode":"0837","adcode":"513226","name":"\u91d1\u5ddd\u53bf","center":"102.063821,31.47625","level":"district","districts":[]},{"citycode":"0837","adcode":"513222","name":"\u7406\u53bf","center":"103.163284,31.435831","level":"district","districts":[]},{"citycode":"0837","adcode":"513224","name":"\u677e\u6f58\u53bf","center":"103.60428,32.655685","level":"district","districts":[]},{"citycode":"0837","adcode":"513227","name":"\u5c0f\u91d1\u53bf","center":"102.362984,30.995823","level":"district","districts":[]},{"citycode":"0837","adcode":"513221","name":"\u6c76\u5ddd\u53bf","center":"103.590185,31.476875","level":"district","districts":[]},{"citycode":"0837","adcode":"513223","name":"\u8302\u53bf","center":"103.85332,31.681727","level":"district","districts":[]},{"citycode":"0837","adcode":"513232","name":"\u82e5\u5c14\u76d6\u53bf","center":"102.96738,33.578503","level":"district","districts":[]},{"citycode":"0837","adcode":"513230","name":"\u58e4\u5858\u53bf","center":"100.978526,32.265796","level":"district","districts":[]}]}]},{"citycode":"022","adcode":"120000","name":"\u5929\u6d25\u5e02","center":"117.201509,39.085318","level":"province","districts":[{"citycode":"022","adcode":"120100","name":"\u5929\u6d25\u57ce\u533a","center":"117.190182,39.125596","level":"city","districts":[{"citycode":"022","adcode":"120115","name":"\u5b9d\u577b\u533a","center":"117.309748,39.717054","level":"district","districts":[]},{"citycode":"022","adcode":"120105","name":"\u6cb3\u5317\u533a","center":"117.196874,39.148018","level":"district","districts":[]},{"citycode":"022","adcode":"120118","name":"\u9759\u6d77\u533a","center":"116.975474,38.947772","level":"district","districts":[]},{"citycode":"022","adcode":"120119","name":"\u84df\u5dde\u533a","center":"117.408432,40.046544","level":"district","districts":[]},{"citycode":"022","adcode":"120117","name":"\u5b81\u6cb3\u533a","center":"117.826674,39.329749","level":"district","districts":[]},{"citycode":"022","adcode":"120101","name":"\u548c\u5e73\u533a","center":"117.214713,39.116884","level":"district","districts":[]},{"citycode":"022","adcode":"120114","name":"\u6b66\u6e05\u533a","center":"117.04456,39.384108","level":"district","districts":[]},{"citycode":"022","adcode":"120104","name":"\u5357\u5f00\u533a","center":"117.150638,39.138551","level":"district","districts":[]},{"citycode":"022","adcode":"120102","name":"\u6cb3\u4e1c\u533a","center":"117.251584,39.128294","level":"district","districts":[]},{"citycode":"022","adcode":"120110","name":"\u4e1c\u4e3d\u533a","center":"117.313567,39.086789","level":"district","districts":[]},{"citycode":"022","adcode":"120112","name":"\u6d25\u5357\u533a","center":"117.356683,38.936971","level":"district","districts":[]},{"citycode":"022","adcode":"120103","name":"\u6cb3\u897f\u533a","center":"117.223379,39.109679","level":"district","districts":[]},{"citycode":"022","adcode":"120113","name":"\u5317\u8fb0\u533a","center":"117.135614,39.224638","level":"district","districts":[]},{"citycode":"022","adcode":"120106","name":"\u7ea2\u6865\u533a","center":"117.151566,39.167349","level":"district","districts":[]},{"citycode":"022","adcode":"120111","name":"\u897f\u9752\u533a","center":"117.008994,39.141811","level":"district","districts":[]},{"citycode":"022","adcode":"120116","name":"\u6ee8\u6d77\u65b0\u533a","center":"117.69641,39.017809","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"540000","name":"\u897f\u85cf\u81ea\u6cbb\u533a","center":"91.117449,29.648694","level":"province","districts":[{"citycode":"0895","adcode":"540300","name":"\u660c\u90fd\u5e02","center":"97.170425,31.142879","level":"city","districts":[{"citycode":"0895","adcode":"540321","name":"\u6c5f\u8fbe\u53bf","center":"98.218336,31.499176","level":"district","districts":[]},{"citycode":"0895","adcode":"540324","name":"\u4e01\u9752\u53bf","center":"95.619868,31.409024","level":"district","districts":[]},{"citycode":"0895","adcode":"540302","name":"\u5361\u82e5\u533a","center":"97.196021,31.112087","level":"district","districts":[]},{"citycode":"0895","adcode":"540323","name":"\u7c7b\u4e4c\u9f50\u53bf","center":"96.599386,31.211378","level":"district","districts":[]},{"citycode":"0895","adcode":"540330","name":"\u8fb9\u575d\u53bf","center":"94.7078,30.933652","level":"district","districts":[]},{"citycode":"0895","adcode":"540325","name":"\u5bdf\u96c5\u53bf","center":"97.568752,30.653943","level":"district","districts":[]},{"citycode":"0895","adcode":"540329","name":"\u6d1b\u9686\u53bf","center":"95.825169,30.741988","level":"district","districts":[]},{"citycode":"0895","adcode":"540322","name":"\u8d21\u89c9\u53bf","center":"98.27097,30.860099","level":"district","districts":[]},{"citycode":"0895","adcode":"540326","name":"\u516b\u5bbf\u53bf","center":"96.917836,30.053209","level":"district","districts":[]},{"citycode":"0895","adcode":"540328","name":"\u8292\u5eb7\u53bf","center":"98.593493,29.679957","level":"district","districts":[]},{"citycode":"0895","adcode":"540327","name":"\u5de6\u8d21\u53bf","center":"97.841176,29.671488","level":"district","districts":[]}]},{"citycode":"0896","adcode":"540600","name":"\u90a3\u66f2\u5e02","center":"92.05151,31.477905","level":"city","districts":[{"citycode":"0896","adcode":"540624","name":"\u5b89\u591a\u53bf","center":"91.68195,32.265016","level":"district","districts":[]},{"citycode":"0896","adcode":"540623","name":"\u8042\u8363\u53bf","center":"92.303377,32.10775","level":"district","districts":[]},{"citycode":"0896","adcode":"540628","name":"\u5df4\u9752\u53bf","center":"94.053438,31.91847","level":"district","districts":[]},{"citycode":"0896","adcode":"540625","name":"\u7533\u624e\u53bf","center":"88.709936,30.93045","level":"district","districts":[]},{"citycode":"0896","adcode":"540602","name":"\u8272\u5c3c\u533a","center":"92.053498,31.469645","level":"district","districts":[]},{"citycode":"0896","adcode":"540622","name":"\u6bd4\u5982\u53bf","center":"93.681302,31.477914","level":"district","districts":[]},{"citycode":"0896","adcode":"540627","name":"\u73ed\u6208\u53bf","center":"90.009822,31.392157","level":"district","districts":[]},{"citycode":"0896","adcode":"540626","name":"\u7d22\u53bf","center":"93.785068,31.888045","level":"district","districts":[]},{"citycode":"0896","adcode":"540621","name":"\u5609\u9ece\u53bf","center":"93.232347,30.641543","level":"district","districts":[]},{"citycode":"0896","adcode":"540629","name":"\u5c3c\u739b\u53bf","center":"87.236772,31.784701","level":"district","districts":[]},{"citycode":"0896","adcode":"540630","name":"\u53cc\u6e56\u53bf","center":"88.838017,33.188355","level":"district","districts":[]}]},{"citycode":"0891","adcode":"540100","name":"\u62c9\u8428\u5e02","center":"91.171924,29.653491","level":"city","districts":[{"citycode":"0891","adcode":"540122","name":"\u5f53\u96c4\u53bf","center":"91.101186,30.473134","level":"district","districts":[]},{"citycode":"0891","adcode":"540121","name":"\u6797\u5468\u53bf","center":"91.265287,29.893545","level":"district","districts":[]},{"citycode":"0891","adcode":"540127","name":"\u58a8\u7af9\u5de5\u5361\u53bf","center":"91.739134,29.850344","level":"district","districts":[]},{"citycode":"0891","adcode":"540103","name":"\u5806\u9f99\u5fb7\u5e86\u533a","center":"91.002866,29.646815","level":"district","districts":[]},{"citycode":"0891","adcode":"540104","name":"\u8fbe\u5b5c\u533a","center":"91.349503,29.670173","level":"district","districts":[]},{"citycode":"0891","adcode":"540123","name":"\u5c3c\u6728\u53bf","center":"90.16446,29.43202","level":"district","districts":[]},{"citycode":"0891","adcode":"540102","name":"\u57ce\u5173\u533a","center":"91.140368,29.654813","level":"district","districts":[]},{"citycode":"0891","adcode":"540124","name":"\u66f2\u6c34\u53bf","center":"90.743355,29.354293","level":"district","districts":[]}]},{"citycode":"0892","adcode":"540200","name":"\u65e5\u5580\u5219\u5e02","center":"88.880423,29.266838","level":"city","districts":[{"citycode":"0892","adcode":"540232","name":"\u4ef2\u5df4\u53bf","center":"84.03153,29.770279","level":"district","districts":[]},{"citycode":"0892","adcode":"540227","name":"\u8c22\u901a\u95e8\u53bf","center":"88.255784,29.425455","level":"district","districts":[]},{"citycode":"0892","adcode":"540226","name":"\u6602\u4ec1\u53bf","center":"87.227739,29.299444","level":"district","districts":[]},{"citycode":"0892","adcode":"540221","name":"\u5357\u6728\u6797\u53bf","center":"89.099243,29.682331","level":"district","districts":[]},{"citycode":"0892","adcode":"540236","name":"\u8428\u560e\u53bf","center":"85.232941,29.328818","level":"district","districts":[]},{"citycode":"0892","adcode":"540202","name":"\u6851\u73e0\u5b5c\u533a","center":"88.898503,29.247726","level":"district","districts":[]},{"citycode":"0892","adcode":"540229","name":"\u4ec1\u5e03\u53bf","center":"89.841983,29.230933","level":"district","districts":[]},{"citycode":"0892","adcode":"540225","name":"\u62c9\u5b5c\u53bf","center":"87.636934,29.08188","level":"district","districts":[]},{"citycode":"0892","adcode":"540224","name":"\u8428\u8fe6\u53bf","center":"88.021674,28.899664","level":"district","districts":[]},{"citycode":"0892","adcode":"540228","name":"\u767d\u6717\u53bf","center":"89.261977,29.107688","level":"district","districts":[]},{"citycode":"0892","adcode":"540222","name":"\u6c5f\u5b5c\u53bf","center":"89.605654,28.91186","level":"district","districts":[]},{"citycode":"0892","adcode":"540223","name":"\u5b9a\u65e5\u53bf","center":"87.12612,28.658743","level":"district","districts":[]},{"citycode":"0892","adcode":"540230","name":"\u5eb7\u9a6c\u53bf","center":"89.681663,28.555627","level":"district","districts":[]},{"citycode":"0892","adcode":"540235","name":"\u8042\u62c9\u6728\u53bf","center":"85.982237,28.155186","level":"district","districts":[]},{"citycode":"0892","adcode":"540237","name":"\u5c97\u5df4\u53bf","center":"88.515318,28.271189","level":"district","districts":[]},{"citycode":"0892","adcode":"540233","name":"\u4e9a\u4e1c\u53bf","center":"88.907136,27.486094","level":"district","districts":[]},{"citycode":"0892","adcode":"540231","name":"\u5b9a\u7ed3\u53bf","center":"87.765872,28.364159","level":"district","districts":[]},{"citycode":"0892","adcode":"540234","name":"\u5409\u9686\u53bf","center":"85.298109,28.856542","level":"district","districts":[]}]},{"citycode":"0893","adcode":"540500","name":"\u5c71\u5357\u5e02","center":"91.771426,29.237722","level":"city","districts":[{"citycode":"0893","adcode":"540528","name":"\u52a0\u67e5\u53bf","center":"92.597518,29.138165","level":"district","districts":[]},{"citycode":"0893","adcode":"540523","name":"\u6851\u65e5\u53bf","center":"92.017723,29.259439","level":"district","districts":[]},{"citycode":"0893","adcode":"540521","name":"\u624e\u56ca\u53bf","center":"91.33725,29.245113","level":"district","districts":[]},{"citycode":"0893","adcode":"540502","name":"\u4e43\u4e1c\u533a","center":"91.761538,29.224904","level":"district","districts":[]},{"citycode":"0893","adcode":"540522","name":"\u8d21\u560e\u53bf","center":"90.978425,29.290169","level":"district","districts":[]},{"citycode":"0893","adcode":"540531","name":"\u6d6a\u5361\u5b50\u53bf","center":"90.400251,28.96693","level":"district","districts":[]},{"citycode":"0893","adcode":"540529","name":"\u9686\u5b50\u53bf","center":"92.461774,28.40743","level":"district","districts":[]},{"citycode":"0893","adcode":"540524","name":"\u743c\u7ed3\u53bf","center":"91.684307,29.024492","level":"district","districts":[]},{"citycode":"0893","adcode":"540525","name":"\u66f2\u677e\u53bf","center":"92.203738,29.062826","level":"district","districts":[]},{"citycode":"0893","adcode":"540526","name":"\u63aa\u7f8e\u53bf","center":"91.433509,28.438202","level":"district","districts":[]},{"citycode":"0893","adcode":"540527","name":"\u6d1b\u624e\u53bf","center":"90.859971,28.385811","level":"district","districts":[]},{"citycode":"0893","adcode":"540581","name":"\u9519\u90a3\u5e02","center":"91.957155,27.991121","level":"district","districts":[]}]},{"citycode":"0894","adcode":"540400","name":"\u6797\u829d\u5e02","center":"94.361436,29.64875","level":"city","districts":[{"citycode":"0894","adcode":"540424","name":"\u6ce2\u5bc6\u53bf","center":"95.768439,29.859751","level":"district","districts":[]},{"citycode":"0894","adcode":"540421","name":"\u5de5\u5e03\u6c5f\u8fbe\u53bf","center":"93.246077,29.88528","level":"district","districts":[]},{"citycode":"0894","adcode":"540402","name":"\u5df4\u5b9c\u533a","center":"94.361094,29.636576","level":"district","districts":[]},{"citycode":"0894","adcode":"540481","name":"\u7c73\u6797\u5e02","center":"94.213059,29.215971","level":"district","districts":[]},{"citycode":"0894","adcode":"540423","name":"\u58a8\u8131\u53bf","center":"95.332108,29.325425","level":"district","districts":[]},{"citycode":"0894","adcode":"540425","name":"\u5bdf\u9685\u53bf","center":"97.466919,28.66128","level":"district","districts":[]},{"citycode":"0894","adcode":"540426","name":"\u6717\u53bf","center":"93.07254,29.046892","level":"district","districts":[]}]},{"citycode":"0897","adcode":"542500","name":"\u963f\u91cc\u5730\u533a","center":"80.105786,32.500987","level":"city","districts":[{"citycode":"0897","adcode":"542526","name":"\u6539\u5219\u53bf","center":"84.057135,32.297165","level":"district","districts":[]},{"citycode":"0897","adcode":"542522","name":"\u672d\u8fbe\u53bf","center":"79.807096,31.479882","level":"district","districts":[]},{"citycode":"0897","adcode":"542527","name":"\u63aa\u52e4\u53bf","center":"85.152773,31.015862","level":"district","districts":[]},{"citycode":"0897","adcode":"542521","name":"\u666e\u5170\u53bf","center":"81.177116,30.290467","level":"district","districts":[]},{"citycode":"0897","adcode":"542524","name":"\u65e5\u571f\u53bf","center":"79.733552,33.382017","level":"district","districts":[]},{"citycode":"0897","adcode":"542523","name":"\u5676\u5c14\u53bf","center":"80.096591,32.492078","level":"district","districts":[]},{"citycode":"0897","adcode":"542525","name":"\u9769\u5409\u53bf","center":"81.145433,32.387233","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"220000","name":"\u5409\u6797\u7701","center":"125.325802,43.896942","level":"province","districts":[{"citycode":"0432","adcode":"220200","name":"\u5409\u6797\u5e02","center":"126.549719,43.838132","level":"city","districts":[{"citycode":"0432","adcode":"220283","name":"\u8212\u5170\u5e02","center":"126.965515,44.405922","level":"district","districts":[]},{"citycode":"0432","adcode":"220282","name":"\u6866\u7538\u5e02","center":"126.746245,42.972272","level":"district","districts":[]},{"citycode":"0432","adcode":"220281","name":"\u86df\u6cb3\u5e02","center":"127.344773,43.72382","level":"district","districts":[]},{"citycode":"0432","adcode":"220221","name":"\u6c38\u5409\u53bf","center":"126.497899,43.672198","level":"district","districts":[]},{"citycode":"0432","adcode":"220284","name":"\u78d0\u77f3\u5e02","center":"126.060328,42.946608","level":"district","districts":[]},{"citycode":"0432","adcode":"220203","name":"\u9f99\u6f6d\u533a","center":"126.562131,43.910743","level":"district","districts":[]},{"citycode":"0432","adcode":"220211","name":"\u4e30\u6ee1\u533a","center":"126.561351,43.821192","level":"district","districts":[]},{"citycode":"0432","adcode":"220204","name":"\u8239\u8425\u533a","center":"126.540909,43.833806","level":"district","districts":[]},{"citycode":"0432","adcode":"220202","name":"\u660c\u9091\u533a","center":"126.574414,43.881896","level":"district","districts":[]}]},{"citycode":"0431","adcode":"220100","name":"\u957f\u6625\u5e02","center":"125.323643,43.816996","level":"city","districts":[{"citycode":"0431","adcode":"220182","name":"\u6986\u6811\u5e02","center":"126.533126,44.840263","level":"district","districts":[]},{"citycode":"0431","adcode":"220183","name":"\u5fb7\u60e0\u5e02","center":"125.728552,44.521788","level":"district","districts":[]},{"citycode":"0431","adcode":"220112","name":"\u53cc\u9633\u533a","center":"125.664583,43.525367","level":"district","districts":[]},{"citycode":"0431","adcode":"220122","name":"\u519c\u5b89\u53bf","center":"125.184921,44.432829","level":"district","districts":[]},{"citycode":"0431","adcode":"220184","name":"\u516c\u4e3b\u5cad\u5e02","center":"124.79379,43.495116","level":"district","districts":[]},{"citycode":"0431","adcode":"220105","name":"\u4e8c\u9053\u533a","center":"125.37419,43.865912","level":"district","districts":[]},{"citycode":"0431","adcode":"220103","name":"\u5bbd\u57ce\u533a","center":"125.326614,43.943522","level":"district","districts":[]},{"citycode":"0431","adcode":"220102","name":"\u5357\u5173\u533a","center":"125.350341,43.86382","level":"district","districts":[]},{"citycode":"0431","adcode":"220113","name":"\u4e5d\u53f0\u533a","center":"125.839549,44.151672","level":"district","districts":[]},{"citycode":"0431","adcode":"220106","name":"\u7eff\u56ed\u533a","center":"125.256214,43.881047","level":"district","districts":[]},{"citycode":"0431","adcode":"220104","name":"\u671d\u9633\u533a","center":"125.288168,43.833845","level":"district","districts":[]}]},{"citycode":"0436","adcode":"220800","name":"\u767d\u57ce\u5e02","center":"122.838102,45.620131","level":"city","districts":[{"citycode":"0436","adcode":"220881","name":"\u6d2e\u5357\u5e02","center":"122.79845,45.356849","level":"district","districts":[]},{"citycode":"0436","adcode":"220882","name":"\u5927\u5b89\u5e02","center":"124.291032,45.507004","level":"district","districts":[]},{"citycode":"0436","adcode":"220822","name":"\u901a\u6986\u53bf","center":"123.088093,44.812912","level":"district","districts":[]},{"citycode":"0436","adcode":"220802","name":"\u6d2e\u5317\u533a","center":"122.851105,45.621545","level":"district","districts":[]},{"citycode":"0436","adcode":"220821","name":"\u9547\u8d49\u53bf","center":"123.19967,45.848195","level":"district","districts":[]}]},{"citycode":"0438","adcode":"220700","name":"\u677e\u539f\u5e02","center":"124.825321,45.14191","level":"city","districts":[{"citycode":"0438","adcode":"220723","name":"\u4e7e\u5b89\u53bf","center":"124.040651,45.003539","level":"district","districts":[]},{"citycode":"0438","adcode":"220722","name":"\u957f\u5cad\u53bf","center":"123.967244,44.276293","level":"district","districts":[]},{"citycode":"0438","adcode":"220721","name":"\u524d\u90ed\u5c14\u7f57\u65af\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","center":"124.823417,45.118061","level":"district","districts":[]},{"citycode":"0438","adcode":"220781","name":"\u6276\u4f59\u5e02","center":"126.049534,44.989057","level":"district","districts":[]},{"citycode":"0438","adcode":"220702","name":"\u5b81\u6c5f\u533a","center":"124.875965,45.209435","level":"district","districts":[]}]},{"citycode":"1433","adcode":"222400","name":"\u5ef6\u8fb9\u671d\u9c9c\u65cf\u81ea\u6cbb\u5dde","center":"129.470605,42.909426","level":"city","districts":[{"citycode":"1433","adcode":"222404","name":"\u73f2\u6625\u5e02","center":"130.365829,42.862551","level":"district","districts":[]},{"citycode":"1433","adcode":"222402","name":"\u56fe\u4eec\u5e02","center":"129.843807,42.968039","level":"district","districts":[]},{"citycode":"1433","adcode":"222406","name":"\u548c\u9f99\u5e02","center":"129.010932,42.546434","level":"district","districts":[]},{"citycode":"1433","adcode":"222424","name":"\u6c6a\u6e05\u53bf","center":"129.785137,43.317215","level":"district","districts":[]},{"citycode":"1433","adcode":"222401","name":"\u5ef6\u5409\u5e02","center":"129.507655,42.891034","level":"district","districts":[]},{"citycode":"1433","adcode":"222426","name":"\u5b89\u56fe\u53bf","center":"128.899744,43.111978","level":"district","districts":[]},{"citycode":"1433","adcode":"222405","name":"\u9f99\u4e95\u5e02","center":"129.426529,42.767172","level":"district","districts":[]},{"citycode":"1433","adcode":"222403","name":"\u6566\u5316\u5e02","center":"128.232235,43.372669","level":"district","districts":[]}]},{"citycode":"0434","adcode":"220300","name":"\u56db\u5e73\u5e02","center":"124.350599,43.166764","level":"city","districts":[{"citycode":"0434","adcode":"220303","name":"\u94c1\u4e1c\u533a","center":"124.409852,43.162664","level":"district","districts":[]},{"citycode":"0434","adcode":"220382","name":"\u53cc\u8fbd\u5e02","center":"123.502398,43.518301","level":"district","districts":[]},{"citycode":"0434","adcode":"220302","name":"\u94c1\u897f\u533a","center":"124.345994,43.146288","level":"district","districts":[]},{"citycode":"0434","adcode":"220322","name":"\u68a8\u6811\u53bf","center":"124.335389,43.30706","level":"district","districts":[]},{"citycode":"0434","adcode":"220323","name":"\u4f0a\u901a\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"125.305393,43.345754","level":"district","districts":[]}]},{"citycode":"0439","adcode":"220600","name":"\u767d\u5c71\u5e02","center":"126.414274,41.944132","level":"city","districts":[{"citycode":"0439","adcode":"220622","name":"\u9756\u5b87\u53bf","center":"126.813262,42.388902","level":"district","districts":[]},{"citycode":"0439","adcode":"220605","name":"\u6c5f\u6e90\u533a","center":"126.591178,42.056747","level":"district","districts":[]},{"citycode":"0439","adcode":"220621","name":"\u629a\u677e\u53bf","center":"127.449387,42.221038","level":"district","districts":[]},{"citycode":"0439","adcode":"220623","name":"\u957f\u767d\u671d\u9c9c\u65cf\u81ea\u6cbb\u53bf","center":"128.20066,41.420253","level":"district","districts":[]},{"citycode":"0439","adcode":"220681","name":"\u4e34\u6c5f\u5e02","center":"126.918086,41.811979","level":"district","districts":[]},{"citycode":"0439","adcode":"220602","name":"\u6d51\u6c5f\u533a","center":"126.416093,41.945409","level":"district","districts":[]}]},{"citycode":"0437","adcode":"220400","name":"\u8fbd\u6e90\u5e02","center":"125.144676,42.887961","level":"city","districts":[{"citycode":"0437","adcode":"220403","name":"\u897f\u5b89\u533a","center":"125.149488,42.927252","level":"district","districts":[]},{"citycode":"0437","adcode":"220422","name":"\u4e1c\u8fbd\u53bf","center":"124.991045,42.925636","level":"district","districts":[]},{"citycode":"0437","adcode":"220402","name":"\u9f99\u5c71\u533a","center":"125.13703,42.902194","level":"district","districts":[]},{"citycode":"0437","adcode":"220421","name":"\u4e1c\u4e30\u53bf","center":"125.53096,42.677253","level":"district","districts":[]}]},{"citycode":"0435","adcode":"220500","name":"\u901a\u5316\u5e02","center":"125.939721,41.728312","level":"city","districts":[{"citycode":"0435","adcode":"220503","name":"\u4e8c\u9053\u6c5f\u533a","center":"126.042546,41.773989","level":"district","districts":[]},{"citycode":"0435","adcode":"220521","name":"\u901a\u5316\u53bf","center":"125.758927,41.680135","level":"district","districts":[]},{"citycode":"0435","adcode":"220524","name":"\u67f3\u6cb3\u53bf","center":"125.744654,42.284594","level":"district","districts":[]},{"citycode":"0435","adcode":"220523","name":"\u8f89\u5357\u53bf","center":"126.046006,42.684706","level":"district","districts":[]},{"citycode":"0435","adcode":"220581","name":"\u6885\u6cb3\u53e3\u5e02","center":"125.711129,42.539183","level":"district","districts":[]},{"citycode":"0435","adcode":"220582","name":"\u96c6\u5b89\u5e02","center":"126.193172,41.125805","level":"district","districts":[]},{"citycode":"0435","adcode":"220502","name":"\u4e1c\u660c\u533a","center":"125.927187,41.702872","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"140000","name":"\u5c71\u897f\u7701","center":"112.578781,37.813948","level":"province","districts":[{"citycode":"0353","adcode":"140300","name":"\u9633\u6cc9\u5e02","center":"113.580426,37.857094","level":"city","districts":[{"citycode":"0353","adcode":"140321","name":"\u5e73\u5b9a\u53bf","center":"113.629777,37.804986","level":"district","districts":[]},{"citycode":"0353","adcode":"140322","name":"\u76c2\u53bf","center":"113.412279,38.086041","level":"district","districts":[]},{"citycode":"0353","adcode":"140311","name":"\u90ca\u533a","center":"113.593998,37.943703","level":"district","districts":[]},{"citycode":"0353","adcode":"140303","name":"\u77ff\u533a","center":"113.555279,37.868494","level":"district","districts":[]},{"citycode":"0353","adcode":"140302","name":"\u57ce\u533a","center":"113.600694,37.847457","level":"district","districts":[]}]},{"citycode":"0352","adcode":"140200","name":"\u5927\u540c\u5e02","center":"113.366749,40.09711","level":"city","districts":[{"citycode":"0352","adcode":"140225","name":"\u6d51\u6e90\u53bf","center":"113.69183,39.706485","level":"district","districts":[]},{"citycode":"0352","adcode":"140223","name":"\u5e7f\u7075\u53bf","center":"114.282703,39.760404","level":"district","districts":[]},{"citycode":"0352","adcode":"140215","name":"\u4e91\u5dde\u533a","center":"113.612496,40.040156","level":"district","districts":[]},{"citycode":"0352","adcode":"140226","name":"\u5de6\u4e91\u53bf","center":"112.703008,40.013442","level":"district","districts":[]},{"citycode":"0352","adcode":"140213","name":"\u5e73\u57ce\u533a","center":"113.300179,40.076991","level":"district","districts":[]},{"citycode":"0352","adcode":"140212","name":"\u65b0\u8363\u533a","center":"113.139628,40.256355","level":"district","districts":[]},{"citycode":"0352","adcode":"140214","name":"\u4e91\u5188\u533a","center":"113.150035,40.005844","level":"district","districts":[]},{"citycode":"0352","adcode":"140224","name":"\u7075\u4e18\u53bf","center":"114.234452,39.442459","level":"district","districts":[]},{"citycode":"0352","adcode":"140222","name":"\u5929\u9547\u53bf","center":"114.090871,40.42087","level":"district","districts":[]},{"citycode":"0352","adcode":"140221","name":"\u9633\u9ad8\u53bf","center":"113.748944,40.361059","level":"district","districts":[]}]},{"citycode":"0358","adcode":"141100","name":"\u5415\u6881\u5e02","center":"111.14454,37.518996","level":"city","districts":[{"citycode":"0358","adcode":"141127","name":"\u5c9a\u53bf","center":"111.672156,38.279587","level":"district","districts":[]},{"citycode":"0358","adcode":"141129","name":"\u4e2d\u9633\u53bf","center":"111.178841,37.357816","level":"district","districts":[]},{"citycode":"0358","adcode":"141128","name":"\u65b9\u5c71\u53bf","center":"111.244309,37.895017","level":"district","districts":[]},{"citycode":"0358","adcode":"141130","name":"\u4ea4\u53e3\u53bf","center":"111.181241,36.982205","level":"district","districts":[]},{"citycode":"0358","adcode":"141126","name":"\u77f3\u697c\u53bf","center":"110.834712,36.998461","level":"district","districts":[]},{"citycode":"0358","adcode":"141125","name":"\u67f3\u6797\u53bf","center":"110.888993,37.429816","level":"district","districts":[]},{"citycode":"0358","adcode":"141181","name":"\u5b5d\u4e49\u5e02","center":"111.778935,37.146051","level":"district","districts":[]},{"citycode":"0358","adcode":"141122","name":"\u4ea4\u57ce\u53bf","center":"112.155857,37.55169","level":"district","districts":[]},{"citycode":"0358","adcode":"141182","name":"\u6c7e\u9633\u5e02","center":"111.770834,37.261493","level":"district","districts":[]},{"citycode":"0358","adcode":"141121","name":"\u6587\u6c34\u53bf","center":"112.028866,37.438101","level":"district","districts":[]},{"citycode":"0358","adcode":"141124","name":"\u4e34\u53bf","center":"110.992712,37.951008","level":"district","districts":[]},{"citycode":"0358","adcode":"141102","name":"\u79bb\u77f3\u533a","center":"111.150325,37.517797","level":"district","districts":[]},{"citycode":"0358","adcode":"141123","name":"\u5174\u53bf","center":"111.127486,38.461818","level":"district","districts":[]}]},{"citycode":"0359","adcode":"140800","name":"\u8fd0\u57ce\u5e02","center":"111.007051,35.02667","level":"city","districts":[{"citycode":"0359","adcode":"140823","name":"\u95fb\u559c\u53bf","center":"111.224485,35.356664","level":"district","districts":[]},{"citycode":"0359","adcode":"140822","name":"\u4e07\u8363\u53bf","center":"110.837957,35.415805","level":"district","districts":[]},{"citycode":"0359","adcode":"140802","name":"\u76d0\u6e56\u533a","center":"110.998135,35.015549","level":"district","districts":[]},{"citycode":"0359","adcode":"140828","name":"\u590f\u53bf","center":"111.219946,35.140733","level":"district","districts":[]},{"citycode":"0359","adcode":"140827","name":"\u57a3\u66f2\u53bf","center":"111.670215,35.298297","level":"district","districts":[]},{"citycode":"0359","adcode":"140821","name":"\u4e34\u7317\u53bf","center":"110.774553,35.144406","level":"district","districts":[]},{"citycode":"0359","adcode":"140824","name":"\u7a37\u5c71\u53bf","center":"110.983273,35.604515","level":"district","districts":[]},{"citycode":"0359","adcode":"140881","name":"\u6c38\u6d4e\u5e02","center":"110.447771,34.866499","level":"district","districts":[]},{"citycode":"0359","adcode":"140826","name":"\u7edb\u53bf","center":"111.568849,35.491764","level":"district","districts":[]},{"citycode":"0359","adcode":"140825","name":"\u65b0\u7edb\u53bf","center":"111.224767,35.616007","level":"district","districts":[]},{"citycode":"0359","adcode":"140882","name":"\u6cb3\u6d25\u5e02","center":"110.712032,35.596357","level":"district","districts":[]},{"citycode":"0359","adcode":"140829","name":"\u5e73\u9646\u53bf","center":"111.193957,34.829595","level":"district","districts":[]},{"citycode":"0359","adcode":"140830","name":"\u82ae\u57ce\u53bf","center":"110.694418,34.694173","level":"district","districts":[]}]},{"citycode":"0356","adcode":"140500","name":"\u664b\u57ce\u5e02","center":"112.852022,35.491315","level":"city","districts":[{"citycode":"0356","adcode":"140525","name":"\u6cfd\u5dde\u53bf","center":"112.922243,35.507061","level":"district","districts":[]},{"citycode":"0356","adcode":"140581","name":"\u9ad8\u5e73\u5e02","center":"112.923798,35.798775","level":"district","districts":[]},{"citycode":"0356","adcode":"140524","name":"\u9675\u5ddd\u53bf","center":"113.280755,35.775239","level":"district","districts":[]},{"citycode":"0356","adcode":"140522","name":"\u9633\u57ce\u53bf","center":"112.414798,35.486275","level":"district","districts":[]},{"citycode":"0356","adcode":"140521","name":"\u6c81\u6c34\u53bf","center":"112.186726,35.690119","level":"district","districts":[]},{"citycode":"0356","adcode":"140502","name":"\u57ce\u533a","center":"112.853452,35.50248","level":"district","districts":[]}]},{"citycode":"0355","adcode":"140400","name":"\u957f\u6cbb\u5e02","center":"113.117394,36.195142","level":"city","districts":[{"citycode":"0355","adcode":"140428","name":"\u957f\u5b50\u53bf","center":"112.877922,36.122258","level":"district","districts":[]},{"citycode":"0355","adcode":"140403","name":"\u6f5e\u5dde\u533a","center":"113.122725,36.203305","level":"district","districts":[]},{"citycode":"0355","adcode":"140429","name":"\u6b66\u4e61\u53bf","center":"112.86396,36.837865","level":"district","districts":[]},{"citycode":"0355","adcode":"140430","name":"\u6c81\u53bf","center":"112.699176,36.756152","level":"district","districts":[]},{"citycode":"0355","adcode":"140423","name":"\u8944\u57a3\u53bf","center":"113.051298,36.535629","level":"district","districts":[]},{"citycode":"0355","adcode":"140405","name":"\u5c6f\u7559\u533a","center":"112.892301,36.3162","level":"district","districts":[]},{"citycode":"0355","adcode":"140406","name":"\u6f5e\u57ce\u533a","center":"113.228897,36.334597","level":"district","districts":[]},{"citycode":"0355","adcode":"140426","name":"\u9ece\u57ce\u53bf","center":"113.387025,36.502258","level":"district","districts":[]},{"citycode":"0355","adcode":"140431","name":"\u6c81\u6e90\u53bf","center":"112.337726,36.499989","level":"district","districts":[]},{"citycode":"0355","adcode":"140425","name":"\u5e73\u987a\u53bf","center":"113.435859,36.20037","level":"district","districts":[]},{"citycode":"0355","adcode":"140427","name":"\u58f6\u5173\u53bf","center":"113.206836,36.115645","level":"district","districts":[]},{"citycode":"0355","adcode":"140404","name":"\u4e0a\u515a\u533a","center":"113.051416,36.053104","level":"district","districts":[]}]},{"citycode":"0357","adcode":"141000","name":"\u4e34\u6c7e\u5e02","center":"111.51931,36.088581","level":"city","districts":[{"citycode":"0357","adcode":"141031","name":"\u96b0\u53bf","center":"110.940752,36.693345","level":"district","districts":[]},{"citycode":"0357","adcode":"141025","name":"\u53e4\u53bf","center":"111.92031,36.266767","level":"district","districts":[]},{"citycode":"0357","adcode":"141032","name":"\u6c38\u548c\u53bf","center":"110.631981,36.759524","level":"district","districts":[]},{"citycode":"0357","adcode":"141033","name":"\u84b2\u53bf","center":"111.096457,36.41183","level":"district","districts":[]},{"citycode":"0357","adcode":"141027","name":"\u6d6e\u5c71\u53bf","center":"111.848883,35.968124","level":"district","districts":[]},{"citycode":"0357","adcode":"141022","name":"\u7ffc\u57ce\u53bf","center":"111.719048,35.739706","level":"district","districts":[]},{"citycode":"0357","adcode":"141023","name":"\u8944\u6c7e\u53bf","center":"111.441725,35.876293","level":"district","districts":[]},{"citycode":"0357","adcode":"141026","name":"\u5b89\u6cfd\u53bf","center":"112.250242,36.147921","level":"district","districts":[]},{"citycode":"0357","adcode":"141021","name":"\u66f2\u6c83\u53bf","center":"111.475783,35.641883","level":"district","districts":[]},{"citycode":"0357","adcode":"141081","name":"\u4faf\u9a6c\u5e02","center":"111.372002,35.619105","level":"district","districts":[]},{"citycode":"0357","adcode":"141034","name":"\u6c7e\u897f\u53bf","center":"111.563993,36.652833","level":"district","districts":[]},{"citycode":"0357","adcode":"141082","name":"\u970d\u5dde\u5e02","center":"111.755111,36.569046","level":"district","districts":[]},{"citycode":"0357","adcode":"141030","name":"\u5927\u5b81\u53bf","center":"110.752914,36.465126","level":"district","districts":[]},{"citycode":"0357","adcode":"141028","name":"\u5409\u53bf","center":"110.680513,36.096833","level":"district","districts":[]},{"citycode":"0357","adcode":"141029","name":"\u4e61\u5b81\u53bf","center":"110.846585,35.970834","level":"district","districts":[]},{"citycode":"0357","adcode":"141002","name":"\u5c27\u90fd\u533a","center":"111.578797,36.082463","level":"district","districts":[]},{"citycode":"0357","adcode":"141024","name":"\u6d2a\u6d1e\u53bf","center":"111.67571,36.254087","level":"district","districts":[]}]},{"citycode":"0354","adcode":"140700","name":"\u664b\u4e2d\u5e02","center":"112.752633,37.688006","level":"city","districts":[{"citycode":"0354","adcode":"140721","name":"\u6986\u793e\u53bf","center":"112.975378,37.071209","level":"district","districts":[]},{"citycode":"0354","adcode":"140725","name":"\u5bff\u9633\u53bf","center":"113.176373,37.895191","level":"district","districts":[]},{"citycode":"0354","adcode":"140722","name":"\u5de6\u6743\u53bf","center":"113.379412,37.082746","level":"district","districts":[]},{"citycode":"0354","adcode":"140723","name":"\u548c\u987a\u53bf","center":"113.570295,37.329696","level":"district","districts":[]},{"citycode":"0354","adcode":"140703","name":"\u592a\u8c37\u533a","center":"112.551297,37.421392","level":"district","districts":[]},{"citycode":"0354","adcode":"140727","name":"\u7941\u53bf","center":"112.335226,37.358425","level":"district","districts":[]},{"citycode":"0354","adcode":"140702","name":"\u6986\u6b21\u533a","center":"112.707564,37.698637","level":"district","districts":[]},{"citycode":"0354","adcode":"140728","name":"\u5e73\u9065\u53bf","center":"112.175825,37.189614","level":"district","districts":[]},{"citycode":"0354","adcode":"140724","name":"\u6614\u9633\u53bf","center":"113.707151,37.612577","level":"district","districts":[]},{"citycode":"0354","adcode":"140729","name":"\u7075\u77f3\u53bf","center":"111.778692,36.848085","level":"district","districts":[]},{"citycode":"0354","adcode":"140781","name":"\u4ecb\u4f11\u5e02","center":"111.916451,37.027538","level":"district","districts":[]}]},{"citycode":"0349","adcode":"140600","name":"\u6714\u5dde\u5e02","center":"112.432906,39.331734","level":"city","districts":[{"citycode":"0349","adcode":"140623","name":"\u53f3\u7389\u53bf","center":"112.466926,39.989198","level":"district","districts":[]},{"citycode":"0349","adcode":"140602","name":"\u6714\u57ce\u533a","center":"112.432071,39.320196","level":"district","districts":[]},{"citycode":"0349","adcode":"140603","name":"\u5e73\u9c81\u533a","center":"112.28827,39.512219","level":"district","districts":[]},{"citycode":"0349","adcode":"140622","name":"\u5e94\u53bf","center":"113.190952,39.554471","level":"district","districts":[]},{"citycode":"0349","adcode":"140621","name":"\u5c71\u9634\u53bf","center":"112.816421,39.527445","level":"district","districts":[]},{"citycode":"0349","adcode":"140681","name":"\u6000\u4ec1\u5e02","center":"113.133061,39.820522","level":"district","districts":[]}]},{"citycode":"0350","adcode":"140900","name":"\u5ffb\u5dde\u5e02","center":"112.734149,38.415958","level":"city","districts":[{"citycode":"0350","adcode":"140928","name":"\u4e94\u5be8\u53bf","center":"111.846808,38.91111","level":"district","districts":[]},{"citycode":"0350","adcode":"140925","name":"\u5b81\u6b66\u53bf","center":"112.304734,39.001498","level":"district","districts":[]},{"citycode":"0350","adcode":"140929","name":"\u5ca2\u5c9a\u53bf","center":"111.572964,38.703989","level":"district","districts":[]},{"citycode":"0350","adcode":"140926","name":"\u9759\u4e50\u53bf","center":"111.939498,38.359306","level":"district","districts":[]},{"citycode":"0350","adcode":"140927","name":"\u795e\u6c60\u53bf","center":"112.210997,39.091079","level":"district","districts":[]},{"citycode":"0350","adcode":"140930","name":"\u6cb3\u66f2\u53bf","center":"111.138247,39.38452","level":"district","districts":[]},{"citycode":"0350","adcode":"140981","name":"\u539f\u5e73\u5e02","center":"112.711025,38.731412","level":"district","districts":[]},{"citycode":"0350","adcode":"140923","name":"\u4ee3\u53bf","center":"112.960102,39.066831","level":"district","districts":[]},{"citycode":"0350","adcode":"140921","name":"\u5b9a\u8944\u53bf","center":"112.957234,38.471725","level":"district","districts":[]},{"citycode":"0350","adcode":"140924","name":"\u7e41\u5cd9\u53bf","center":"113.265464,39.188835","level":"district","districts":[]},{"citycode":"0350","adcode":"140931","name":"\u4fdd\u5fb7\u53bf","center":"111.085944,39.022616","level":"district","districts":[]},{"citycode":"0350","adcode":"140922","name":"\u4e94\u53f0\u53bf","center":"113.255419,38.728056","level":"district","districts":[]},{"citycode":"0350","adcode":"140932","name":"\u504f\u5173\u53bf","center":"111.508922,39.436917","level":"district","districts":[]},{"citycode":"0350","adcode":"140902","name":"\u5ffb\u5e9c\u533a","center":"112.746357,38.403498","level":"district","districts":[]}]},{"citycode":"0351","adcode":"140100","name":"\u592a\u539f\u5e02","center":"112.549656,37.870451","level":"city","districts":[{"citycode":"0351","adcode":"140123","name":"\u5a04\u70e6\u53bf","center":"111.79715,38.067569","level":"district","districts":[]},{"citycode":"0351","adcode":"140181","name":"\u53e4\u4ea4\u5e02","center":"112.175034,37.907414","level":"district","districts":[]},{"citycode":"0351","adcode":"140110","name":"\u664b\u6e90\u533a","center":"112.477869,37.715519","level":"district","districts":[]},{"citycode":"0351","adcode":"140121","name":"\u6e05\u5f90\u53bf","center":"112.359367,37.608751","level":"district","districts":[]},{"citycode":"0351","adcode":"140109","name":"\u4e07\u67cf\u6797\u533a","center":"112.515638,37.859738","level":"district","districts":[]},{"citycode":"0351","adcode":"140108","name":"\u5c16\u8349\u576a\u533a","center":"112.486141,37.940052","level":"district","districts":[]},{"citycode":"0351","adcode":"140107","name":"\u674f\u82b1\u5cad\u533a","center":"112.570412,37.894241","level":"district","districts":[]},{"citycode":"0351","adcode":"140105","name":"\u5c0f\u5e97\u533a","center":"112.565524,37.736865","level":"district","districts":[]},{"citycode":"0351","adcode":"140106","name":"\u8fce\u6cfd\u533a","center":"112.563373,37.863308","level":"district","districts":[]},{"citycode":"0351","adcode":"140122","name":"\u9633\u66f2\u53bf","center":"112.67292,38.058511","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"360000","name":"\u6c5f\u897f\u7701","center":"115.816587,28.637234","level":"province","districts":[{"citycode":"0797","adcode":"360700","name":"\u8d63\u5dde\u5e02","center":"114.933494,25.831139","level":"city","districts":[{"citycode":"0797","adcode":"360730","name":"\u5b81\u90fd\u53bf","center":"116.009171,26.470865","level":"district","districts":[]},{"citycode":"0797","adcode":"360731","name":"\u4e8e\u90fd\u53bf","center":"115.415145,25.952564","level":"district","districts":[]},{"citycode":"0797","adcode":"360725","name":"\u5d07\u4e49\u53bf","center":"114.308135,25.682278","level":"district","districts":[]},{"citycode":"0797","adcode":"360729","name":"\u5168\u5357\u53bf","center":"114.530148,24.742353","level":"district","districts":[]},{"citycode":"0797","adcode":"360735","name":"\u77f3\u57ce\u53bf","center":"116.347611,26.31491","level":"district","districts":[]},{"citycode":"0797","adcode":"360781","name":"\u745e\u91d1\u5e02","center":"116.027114,25.88623","level":"district","districts":[]},{"citycode":"0797","adcode":"360783","name":"\u9f99\u5357\u5e02","center":"114.804474,24.901216","level":"district","districts":[]},{"citycode":"0797","adcode":"360733","name":"\u4f1a\u660c\u53bf","center":"115.809271,25.58734","level":"district","districts":[]},{"citycode":"0797","adcode":"360722","name":"\u4fe1\u4e30\u53bf","center":"114.922485,25.38676","level":"district","districts":[]},{"citycode":"0797","adcode":"360724","name":"\u4e0a\u72b9\u53bf","center":"114.55177,25.784754","level":"district","districts":[]},{"citycode":"0797","adcode":"360723","name":"\u5927\u4f59\u53bf","center":"114.362306,25.401968","level":"district","districts":[]},{"citycode":"0797","adcode":"360703","name":"\u5357\u5eb7\u533a","center":"114.765044,25.661369","level":"district","districts":[]},{"citycode":"0797","adcode":"360732","name":"\u5174\u56fd\u53bf","center":"115.363475,26.338129","level":"district","districts":[]},{"citycode":"0797","adcode":"360704","name":"\u8d63\u53bf\u533a","center":"115.021196,25.854496","level":"district","districts":[]},{"citycode":"0797","adcode":"360702","name":"\u7ae0\u8d21\u533a","center":"114.920426,25.818247","level":"district","districts":[]},{"citycode":"0797","adcode":"360728","name":"\u5b9a\u5357\u53bf","center":"115.027908,24.783372","level":"district","districts":[]},{"citycode":"0797","adcode":"360726","name":"\u5b89\u8fdc\u53bf","center":"115.393992,25.136855","level":"district","districts":[]},{"citycode":"0797","adcode":"360734","name":"\u5bfb\u4e4c\u53bf","center":"115.638534,24.969513","level":"district","districts":[]}]},{"citycode":"0790","adcode":"360500","name":"\u65b0\u4f59\u5e02","center":"114.916665,27.818553","level":"city","districts":[{"citycode":"0790","adcode":"360521","name":"\u5206\u5b9c\u53bf","center":"114.69264,27.814723","level":"district","districts":[]},{"citycode":"0790","adcode":"360502","name":"\u6e1d\u6c34\u533a","center":"114.944499,27.799526","level":"district","districts":[]}]},{"citycode":"0796","adcode":"360800","name":"\u5409\u5b89\u5e02","center":"114.96681,27.091243","level":"city","districts":[{"citycode":"0796","adcode":"360830","name":"\u6c38\u65b0\u53bf","center":"114.242425,26.945157","level":"district","districts":[]},{"citycode":"0796","adcode":"360881","name":"\u4e95\u5188\u5c71\u5e02","center":"114.289563,26.748132","level":"district","districts":[]},{"citycode":"0796","adcode":"360826","name":"\u6cf0\u548c\u53bf","center":"114.922987,26.801687","level":"district","districts":[]},{"citycode":"0796","adcode":"360827","name":"\u9042\u5ddd\u53bf","center":"114.520825,26.313413","level":"district","districts":[]},{"citycode":"0796","adcode":"360828","name":"\u4e07\u5b89\u53bf","center":"114.759746,26.456821","level":"district","districts":[]},{"citycode":"0796","adcode":"360829","name":"\u5b89\u798f\u53bf","center":"114.619818,27.393286","level":"district","districts":[]},{"citycode":"0796","adcode":"360802","name":"\u5409\u5dde\u533a","center":"114.994991,27.144204","level":"district","districts":[]},{"citycode":"0796","adcode":"360821","name":"\u5409\u5b89\u53bf","center":"114.908337,27.039866","level":"district","districts":[]},{"citycode":"0796","adcode":"360803","name":"\u9752\u539f\u533a","center":"115.014836,27.082012","level":"district","districts":[]},{"citycode":"0796","adcode":"360822","name":"\u5409\u6c34\u53bf","center":"115.135963,27.229697","level":"district","districts":[]},{"citycode":"0796","adcode":"360823","name":"\u5ce1\u6c5f\u53bf","center":"115.316567,27.5829","level":"district","districts":[]},{"citycode":"0796","adcode":"360825","name":"\u6c38\u4e30\u53bf","center":"115.421599,27.317301","level":"district","districts":[]},{"citycode":"0796","adcode":"360824","name":"\u65b0\u5e72\u53bf","center":"115.386853,27.740368","level":"district","districts":[]}]},{"citycode":"0794","adcode":"361000","name":"\u629a\u5dde\u5e02","center":"116.358054,27.948979","level":"city","districts":[{"citycode":"0794","adcode":"361025","name":"\u4e50\u5b89\u53bf","center":"115.83099,27.428682","level":"district","districts":[]},{"citycode":"0794","adcode":"361026","name":"\u5b9c\u9ec4\u53bf","center":"116.236174,27.554744","level":"district","districts":[]},{"citycode":"0794","adcode":"361024","name":"\u5d07\u4ec1\u53bf","center":"116.076363,27.754416","level":"district","districts":[]},{"citycode":"0794","adcode":"361030","name":"\u5e7f\u660c\u53bf","center":"116.336556,26.843974","level":"district","districts":[]},{"citycode":"0794","adcode":"361023","name":"\u5357\u4e30\u53bf","center":"116.525898,27.21845","level":"district","districts":[]},{"citycode":"0794","adcode":"361022","name":"\u9ece\u5ddd\u53bf","center":"116.907446,27.282729","level":"district","districts":[]},{"citycode":"0794","adcode":"361021","name":"\u5357\u57ce\u53bf","center":"116.637228,27.570031","level":"district","districts":[]},{"citycode":"0794","adcode":"361002","name":"\u4e34\u5ddd\u533a","center":"116.311932,27.935098","level":"district","districts":[]},{"citycode":"0794","adcode":"361028","name":"\u8d44\u6eaa\u53bf","center":"117.060332,27.706088","level":"district","districts":[]},{"citycode":"0794","adcode":"361027","name":"\u91d1\u6eaa\u53bf","center":"116.755018,27.91973","level":"district","districts":[]},{"citycode":"0794","adcode":"361003","name":"\u4e1c\u4e61\u533a","center":"116.603159,28.249059","level":"district","districts":[]}]},{"citycode":"0701","adcode":"360600","name":"\u9e70\u6f6d\u5e02","center":"117.039532,28.272092","level":"city","districts":[{"citycode":"0701","adcode":"360602","name":"\u6708\u6e56\u533a","center":"117.10247,28.266999","level":"district","districts":[]},{"citycode":"0701","adcode":"360603","name":"\u4f59\u6c5f\u533a","center":"116.854576,28.199657","level":"district","districts":[]},{"citycode":"0701","adcode":"360681","name":"\u8d35\u6eaa\u5e02","center":"117.245178,28.292397","level":"district","districts":[]}]},{"citycode":"0795","adcode":"360900","name":"\u5b9c\u6625\u5e02","center":"114.416826,27.816245","level":"city","districts":[{"citycode":"0795","adcode":"360902","name":"\u8881\u5dde\u533a","center":"114.42794,27.796344","level":"district","districts":[]},{"citycode":"0795","adcode":"360922","name":"\u4e07\u8f7d\u53bf","center":"114.445477,28.106201","level":"district","districts":[]},{"citycode":"0795","adcode":"360924","name":"\u5b9c\u4e30\u53bf","center":"114.803036,28.394466","level":"district","districts":[]},{"citycode":"0795","adcode":"360923","name":"\u4e0a\u9ad8\u53bf","center":"114.948045,28.238591","level":"district","districts":[]},{"citycode":"0795","adcode":"360982","name":"\u6a1f\u6811\u5e02","center":"115.546174,28.054632","level":"district","districts":[]},{"citycode":"0795","adcode":"360926","name":"\u94dc\u9f13\u53bf","center":"114.354623,28.513291","level":"district","districts":[]},{"citycode":"0795","adcode":"360925","name":"\u9756\u5b89\u53bf","center":"115.362635,28.861296","level":"district","districts":[]},{"citycode":"0795","adcode":"360921","name":"\u5949\u65b0\u53bf","center":"115.400624,28.688254","level":"district","districts":[]},{"citycode":"0795","adcode":"360983","name":"\u9ad8\u5b89\u5e02","center":"115.366863,28.448054","level":"district","districts":[]},{"citycode":"0795","adcode":"360981","name":"\u4e30\u57ce\u5e02","center":"115.771131,28.160053","level":"district","districts":[]}]},{"citycode":"0799","adcode":"360300","name":"\u840d\u4e61\u5e02","center":"113.887147,27.658721","level":"city","districts":[{"citycode":"0799","adcode":"360322","name":"\u4e0a\u6817\u53bf","center":"113.795294,27.880221","level":"district","districts":[]},{"citycode":"0799","adcode":"360302","name":"\u5b89\u6e90\u533a","center":"113.87072,27.615","level":"district","districts":[]},{"citycode":"0799","adcode":"360313","name":"\u6e58\u4e1c\u533a","center":"113.733047,27.640075","level":"district","districts":[]},{"citycode":"0799","adcode":"360321","name":"\u83b2\u82b1\u53bf","center":"113.961589,27.128498","level":"district","districts":[]},{"citycode":"0799","adcode":"360323","name":"\u82a6\u6eaa\u53bf","center":"114.029351,27.631273","level":"district","districts":[]}]},{"citycode":"0793","adcode":"361100","name":"\u4e0a\u9976\u5e02","center":"117.943064,28.45513","level":"city","districts":[{"citycode":"0793","adcode":"361127","name":"\u4f59\u5e72\u53bf","center":"116.695787,28.70283","level":"district","districts":[]},{"citycode":"0793","adcode":"361125","name":"\u6a2a\u5cf0\u53bf","center":"117.596433,28.407116","level":"district","districts":[]},{"citycode":"0793","adcode":"361103","name":"\u5e7f\u4e30\u533a","center":"118.189729,28.463697","level":"district","districts":[]},{"citycode":"0793","adcode":"361123","name":"\u7389\u5c71\u53bf","center":"118.244736,28.681936","level":"district","districts":[]},{"citycode":"0793","adcode":"361129","name":"\u4e07\u5e74\u53bf","center":"117.058445,28.694582","level":"district","districts":[]},{"citycode":"0793","adcode":"361126","name":"\u5f0b\u9633\u53bf","center":"117.449346,28.378039","level":"district","districts":[]},{"citycode":"0793","adcode":"361181","name":"\u5fb7\u5174\u5e02","center":"117.594549,28.930557","level":"district","districts":[]},{"citycode":"0793","adcode":"361128","name":"\u9131\u9633\u53bf","center":"116.703731,29.005675","level":"district","districts":[]},{"citycode":"0793","adcode":"361130","name":"\u5a7a\u6e90\u53bf","center":"117.861532,29.248491","level":"district","districts":[]},{"citycode":"0793","adcode":"361124","name":"\u94c5\u5c71\u53bf","center":"117.734742,28.298415","level":"district","districts":[]},{"citycode":"0793","adcode":"361104","name":"\u5e7f\u4fe1\u533a","center":"117.907454,28.448893","level":"district","districts":[]},{"citycode":"0793","adcode":"361102","name":"\u4fe1\u5dde\u533a","center":"117.965997,28.430694","level":"district","districts":[]}]},{"citycode":"0798","adcode":"360200","name":"\u666f\u5fb7\u9547\u5e02","center":"117.184892,29.2744","level":"city","districts":[{"citycode":"0798","adcode":"360281","name":"\u4e50\u5e73\u5e02","center":"117.151499,28.978521","level":"district","districts":[]},{"citycode":"0798","adcode":"360203","name":"\u73e0\u5c71\u533a","center":"117.271365,29.305191","level":"district","districts":[]},{"citycode":"0798","adcode":"360202","name":"\u660c\u6c5f\u533a","center":"117.182648,29.273683","level":"district","districts":[]},{"citycode":"0798","adcode":"360222","name":"\u6d6e\u6881\u53bf","center":"117.214984,29.352493","level":"district","districts":[]}]},{"citycode":"0792","adcode":"360400","name":"\u4e5d\u6c5f\u5e02","center":"115.95356,29.66116","level":"city","districts":[{"citycode":"0792","adcode":"360402","name":"\u6fc2\u6eaa\u533a","center":"115.992735,29.668008","level":"district","districts":[]},{"citycode":"0792","adcode":"360424","name":"\u4fee\u6c34\u53bf","center":"114.546536,29.026166","level":"district","districts":[]},{"citycode":"0792","adcode":"360423","name":"\u6b66\u5b81\u53bf","center":"115.092649,29.246785","level":"district","districts":[]},{"citycode":"0792","adcode":"360482","name":"\u5171\u9752\u57ce\u5e02","center":"115.784269,29.235082","level":"district","districts":[]},{"citycode":"0792","adcode":"360426","name":"\u5fb7\u5b89\u53bf","center":"115.767114,29.298599","level":"district","districts":[]},{"citycode":"0792","adcode":"360429","name":"\u6e56\u53e3\u53bf","center":"116.252206,29.731194","level":"district","districts":[]},{"citycode":"0792","adcode":"360404","name":"\u67f4\u6851\u533a","center":"115.911005,29.608775","level":"district","districts":[]},{"citycode":"0792","adcode":"360430","name":"\u5f6d\u6cfd\u53bf","center":"116.563858,29.877404","level":"district","districts":[]},{"citycode":"0792","adcode":"360483","name":"\u5e90\u5c71\u5e02","center":"116.045118,29.448225","level":"district","districts":[]},{"citycode":"0792","adcode":"360403","name":"\u6d54\u9633\u533a","center":"116.001677,29.70547","level":"district","districts":[]},{"citycode":"0792","adcode":"360481","name":"\u745e\u660c\u5e02","center":"115.681221,29.676026","level":"district","districts":[]},{"citycode":"0792","adcode":"360428","name":"\u90fd\u660c\u53bf","center":"116.203999,29.273803","level":"district","districts":[]},{"citycode":"0792","adcode":"360425","name":"\u6c38\u4fee\u53bf","center":"115.83207,29.011392","level":"district","districts":[]}]},{"citycode":"0791","adcode":"360100","name":"\u5357\u660c\u5e02","center":"115.857972,28.682976","level":"city","districts":[{"citycode":"0791","adcode":"360104","name":"\u9752\u4e91\u8c31\u533a","center":"115.925709,28.62182","level":"district","districts":[]},{"citycode":"0791","adcode":"360124","name":"\u8fdb\u8d24\u53bf","center":"116.242468,28.377627","level":"district","districts":[]},{"citycode":"0791","adcode":"360112","name":"\u65b0\u5efa\u533a","center":"115.815244,28.693192","level":"district","districts":[]},{"citycode":"0791","adcode":"360113","name":"\u7ea2\u8c37\u6ee9\u533a","center":"115.858127,28.698188","level":"district","districts":[]},{"citycode":"0791","adcode":"360111","name":"\u9752\u5c71\u6e56\u533a","center":"115.962138,28.682867","level":"district","districts":[]},{"citycode":"0791","adcode":"360102","name":"\u4e1c\u6e56\u533a","center":"115.903576,28.698787","level":"district","districts":[]},{"citycode":"0791","adcode":"360103","name":"\u897f\u6e56\u533a","center":"115.876998,28.657005","level":"district","districts":[]},{"citycode":"0791","adcode":"360123","name":"\u5b89\u4e49\u53bf","center":"115.549158,28.845585","level":"district","districts":[]},{"citycode":"0791","adcode":"360121","name":"\u5357\u660c\u53bf","center":"115.93349,28.557921","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"610000","name":"\u9655\u897f\u7701","center":"108.953939,34.266611","level":"province","districts":[{"citycode":"0914","adcode":"611000","name":"\u5546\u6d1b\u5e02","center":"109.918646,33.873358","level":"city","districts":[{"citycode":"0914","adcode":"611023","name":"\u5546\u5357\u53bf","center":"110.881741,33.531071","level":"district","districts":[]},{"citycode":"0914","adcode":"611026","name":"\u67de\u6c34\u53bf","center":"109.114006,33.686048","level":"district","districts":[]},{"citycode":"0914","adcode":"611021","name":"\u6d1b\u5357\u53bf","center":"110.148526,34.090815","level":"district","districts":[]},{"citycode":"0914","adcode":"611022","name":"\u4e39\u51e4\u53bf","center":"110.327542,33.696254","level":"district","districts":[]},{"citycode":"0914","adcode":"611002","name":"\u5546\u5dde\u533a","center":"109.941452,33.862979","level":"district","districts":[]},{"citycode":"0914","adcode":"611025","name":"\u9547\u5b89\u53bf","center":"109.152833,33.423764","level":"district","districts":[]},{"citycode":"0914","adcode":"611024","name":"\u5c71\u9633\u53bf","center":"109.882289,33.532172","level":"district","districts":[]}]},{"citycode":"0916","adcode":"610700","name":"\u6c49\u4e2d\u5e02","center":"107.02319,33.066373","level":"city","districts":[{"citycode":"0916","adcode":"610727","name":"\u7565\u9633\u53bf","center":"106.15658,33.327293","level":"district","districts":[]},{"citycode":"0916","adcode":"610726","name":"\u5b81\u5f3a\u53bf","center":"106.257636,32.830032","level":"district","districts":[]},{"citycode":"0916","adcode":"610725","name":"\u52c9\u53bf","center":"106.673217,33.153636","level":"district","districts":[]},{"citycode":"0916","adcode":"610729","name":"\u7559\u575d\u53bf","center":"106.920781,33.617637","level":"district","districts":[]},{"citycode":"0916","adcode":"610722","name":"\u57ce\u56fa\u53bf","center":"107.333787,33.156937","level":"district","districts":[]},{"citycode":"0916","adcode":"610703","name":"\u5357\u90d1\u533a","center":"106.936235,33.000034","level":"district","districts":[]},{"citycode":"0916","adcode":"610702","name":"\u6c49\u53f0\u533a","center":"107.03201,33.067523","level":"district","districts":[]},{"citycode":"0916","adcode":"610724","name":"\u897f\u4e61\u53bf","center":"107.766477,32.983282","level":"district","districts":[]},{"citycode":"0916","adcode":"610730","name":"\u4f5b\u576a\u53bf","center":"107.990551,33.524261","level":"district","districts":[]},{"citycode":"0916","adcode":"610728","name":"\u9547\u5df4\u53bf","center":"107.895015,32.536706","level":"district","districts":[]},{"citycode":"0916","adcode":"610723","name":"\u6d0b\u53bf","center":"107.545678,33.222808","level":"district","districts":[]}]},{"citycode":"029","adcode":"610100","name":"\u897f\u5b89\u5e02","center":"108.939645,34.343207","level":"city","districts":[{"citycode":"029","adcode":"610114","name":"\u960e\u826f\u533a","center":"109.226124,34.662232","level":"district","districts":[]},{"citycode":"029","adcode":"610116","name":"\u957f\u5b89\u533a","center":"108.906944,34.158668","level":"district","districts":[]},{"citycode":"029","adcode":"610117","name":"\u9ad8\u9675\u533a","center":"109.088269,34.53502","level":"district","districts":[]},{"citycode":"029","adcode":"610115","name":"\u4e34\u6f7c\u533a","center":"109.214249,34.367181","level":"district","districts":[]},{"citycode":"029","adcode":"610111","name":"\u705e\u6865\u533a","center":"109.064675,34.273111","level":"district","districts":[]},{"citycode":"029","adcode":"610102","name":"\u65b0\u57ce\u533a","center":"108.960707,34.266601","level":"district","districts":[]},{"citycode":"029","adcode":"610122","name":"\u84dd\u7530\u53bf","center":"109.323473,34.151256","level":"district","districts":[]},{"citycode":"029","adcode":"610103","name":"\u7891\u6797\u533a","center":"108.940681,34.256727","level":"district","districts":[]},{"citycode":"029","adcode":"610104","name":"\u83b2\u6e56\u533a","center":"108.944161,34.26535","level":"district","districts":[]},{"citycode":"029","adcode":"610113","name":"\u96c1\u5854\u533a","center":"108.948592,34.222517","level":"district","districts":[]},{"citycode":"029","adcode":"610112","name":"\u672a\u592e\u533a","center":"108.946665,34.293109","level":"district","districts":[]},{"citycode":"029","adcode":"610124","name":"\u5468\u81f3\u53bf","center":"108.222219,34.163592","level":"district","districts":[]},{"citycode":"029","adcode":"610118","name":"\u9120\u9091\u533a","center":"108.604772,34.108707","level":"district","districts":[]}]},{"citycode":"0912","adcode":"610800","name":"\u6986\u6797\u5e02","center":"109.734104,38.28576","level":"city","districts":[{"citycode":"0912","adcode":"610827","name":"\u7c73\u8102\u53bf","center":"110.183984,37.755134","level":"district","districts":[]},{"citycode":"0912","adcode":"610802","name":"\u6986\u9633\u533a","center":"109.72054,38.277078","level":"district","districts":[]},{"citycode":"0912","adcode":"610881","name":"\u795e\u6728\u5e02","center":"110.466867,38.899742","level":"district","districts":[]},{"citycode":"0912","adcode":"610828","name":"\u4f73\u53bf","center":"110.491345,38.01951","level":"district","districts":[]},{"citycode":"0912","adcode":"610829","name":"\u5434\u5821\u53bf","center":"110.739726,37.452179","level":"district","districts":[]},{"citycode":"0912","adcode":"610825","name":"\u5b9a\u8fb9\u53bf","center":"107.601048,37.594976","level":"district","districts":[]},{"citycode":"0912","adcode":"610824","name":"\u9756\u8fb9\u53bf","center":"108.794153,37.600351","level":"district","districts":[]},{"citycode":"0912","adcode":"610831","name":"\u5b50\u6d32\u53bf","center":"110.035124,37.610554","level":"district","districts":[]},{"citycode":"0912","adcode":"610803","name":"\u6a2a\u5c71\u533a","center":"109.294144,37.962477","level":"district","districts":[]},{"citycode":"0912","adcode":"610822","name":"\u5e9c\u8c37\u53bf","center":"111.016431,39.015658","level":"district","districts":[]},{"citycode":"0912","adcode":"610830","name":"\u6e05\u6da7\u53bf","center":"110.121181,37.088921","level":"district","districts":[]},{"citycode":"0912","adcode":"610826","name":"\u7ee5\u5fb7\u53bf","center":"110.263226,37.502984","level":"district","districts":[]}]},{"citycode":"0910","adcode":"610400","name":"\u54b8\u9633\u5e02","center":"108.708837,34.329896","level":"city","districts":[{"citycode":"0910","adcode":"610422","name":"\u4e09\u539f\u53bf","center":"108.940754,34.617282","level":"district","districts":[]},{"citycode":"0910","adcode":"610404","name":"\u6e2d\u57ce\u533a","center":"108.737062,34.36202","level":"district","districts":[]},{"citycode":"0910","adcode":"610424","name":"\u4e7e\u53bf","center":"108.239316,34.528262","level":"district","districts":[]},{"citycode":"0910","adcode":"610481","name":"\u5174\u5e73\u5e02","center":"108.490497,34.299199","level":"district","districts":[]},{"citycode":"0910","adcode":"610426","name":"\u6c38\u5bff\u53bf","center":"108.142197,34.69188","level":"district","districts":[]},{"citycode":"0910","adcode":"610431","name":"\u6b66\u529f\u53bf","center":"108.200275,34.261026","level":"district","districts":[]},{"citycode":"0910","adcode":"610430","name":"\u6df3\u5316\u53bf","center":"108.580164,34.798596","level":"district","districts":[]},{"citycode":"0910","adcode":"610425","name":"\u793c\u6cc9\u53bf","center":"108.424682,34.481875","level":"district","districts":[]},{"citycode":"0910","adcode":"610428","name":"\u957f\u6b66\u53bf","center":"107.79906,35.206273","level":"district","districts":[]},{"citycode":"0910","adcode":"610429","name":"\u65ec\u9091\u53bf","center":"108.333815,35.111787","level":"district","districts":[]},{"citycode":"0910","adcode":"610482","name":"\u5f6c\u5dde\u5e02","center":"108.081892,35.035702","level":"district","districts":[]},{"citycode":"0910","adcode":"610423","name":"\u6cfe\u9633\u53bf","center":"108.843029,34.526557","level":"district","districts":[]},{"citycode":"0910","adcode":"610403","name":"\u6768\u9675\u533a","center":"108.084661,34.272084","level":"district","districts":[]},{"citycode":"0910","adcode":"610402","name":"\u79e6\u90fd\u533a","center":"108.706347,34.329478","level":"district","districts":[]}]},{"citycode":"0917","adcode":"610300","name":"\u5b9d\u9e21\u5e02","center":"107.237682,34.362862","level":"city","districts":[{"citycode":"0917","adcode":"610327","name":"\u9647\u53bf","center":"106.864404,34.892985","level":"district","districts":[]},{"citycode":"0917","adcode":"610328","name":"\u5343\u9633\u53bf","center":"107.132421,34.642374","level":"district","districts":[]},{"citycode":"0917","adcode":"610303","name":"\u91d1\u53f0\u533a","center":"107.232733,34.397071","level":"district","districts":[]},{"citycode":"0917","adcode":"610302","name":"\u6e2d\u6ee8\u533a","center":"107.155344,34.355068","level":"district","districts":[]},{"citycode":"0917","adcode":"610329","name":"\u9e9f\u6e38\u53bf","center":"107.793524,34.677902","level":"district","districts":[]},{"citycode":"0917","adcode":"610324","name":"\u6276\u98ce\u53bf","center":"107.900157,34.375636","level":"district","districts":[]},{"citycode":"0917","adcode":"610323","name":"\u5c90\u5c71\u53bf","center":"107.621397,34.44373","level":"district","districts":[]},{"citycode":"0917","adcode":"610326","name":"\u7709\u53bf","center":"107.750039,34.274774","level":"district","districts":[]},{"citycode":"0917","adcode":"610330","name":"\u51e4\u53bf","center":"106.515841,33.910797","level":"district","districts":[]},{"citycode":"0917","adcode":"610331","name":"\u592a\u767d\u53bf","center":"107.318932,34.058299","level":"district","districts":[]},{"citycode":"0917","adcode":"610304","name":"\u9648\u4ed3\u533a","center":"107.368993,34.35073","level":"district","districts":[]},{"citycode":"0917","adcode":"610305","name":"\u51e4\u7fd4\u533a","center":"107.401029,34.522167","level":"district","districts":[]}]},{"citycode":"0915","adcode":"610900","name":"\u5b89\u5eb7\u5e02","center":"109.029017,32.685435","level":"city","districts":[{"citycode":"0915","adcode":"610981","name":"\u65ec\u9633\u5e02","center":"109.361783,32.832213","level":"district","districts":[]},{"citycode":"0915","adcode":"610924","name":"\u7d2b\u9633\u53bf","center":"108.534291,32.520209","level":"district","districts":[]},{"citycode":"0915","adcode":"610929","name":"\u767d\u6cb3\u53bf","center":"110.112608,32.80901","level":"district","districts":[]},{"citycode":"0915","adcode":"610926","name":"\u5e73\u5229\u53bf","center":"109.361919,32.389061","level":"district","districts":[]},{"citycode":"0915","adcode":"610927","name":"\u9547\u576a\u53bf","center":"109.526873,31.883672","level":"district","districts":[]},{"citycode":"0915","adcode":"610921","name":"\u6c49\u9634\u53bf","center":"108.508792,32.893057","level":"district","districts":[]},{"citycode":"0915","adcode":"610923","name":"\u5b81\u9655\u53bf","center":"108.314299,33.310284","level":"district","districts":[]},{"citycode":"0915","adcode":"610922","name":"\u77f3\u6cc9\u53bf","center":"108.248061,33.03805","level":"district","districts":[]},{"citycode":"0915","adcode":"610925","name":"\u5c9a\u768b\u53bf","center":"108.902049,32.307001","level":"district","districts":[]},{"citycode":"0915","adcode":"610902","name":"\u6c49\u6ee8\u533a","center":"109.026928,32.695436","level":"district","districts":[]}]},{"citycode":"0911","adcode":"610600","name":"\u5ef6\u5b89\u5e02","center":"109.49468,36.650109","level":"city","districts":[{"citycode":"0911","adcode":"610621","name":"\u5ef6\u957f\u53bf","center":"110.012455,36.579354","level":"district","districts":[]},{"citycode":"0911","adcode":"610626","name":"\u5434\u8d77\u53bf","center":"108.176501,36.92746","level":"district","districts":[]},{"citycode":"0911","adcode":"610602","name":"\u5b9d\u5854\u533a","center":"109.489726,36.585138","level":"district","districts":[]},{"citycode":"0911","adcode":"610627","name":"\u7518\u6cc9\u53bf","center":"109.351046,36.276645","level":"district","districts":[]},{"citycode":"0911","adcode":"610603","name":"\u5b89\u585e\u533a","center":"109.329236,36.864571","level":"district","districts":[]},{"citycode":"0911","adcode":"610681","name":"\u5b50\u957f\u5e02","center":"109.675284,37.142462","level":"district","districts":[]},{"citycode":"0911","adcode":"610622","name":"\u5ef6\u5ddd\u53bf","center":"110.193503,36.878324","level":"district","districts":[]},{"citycode":"0911","adcode":"610625","name":"\u5fd7\u4e39\u53bf","center":"108.767816,36.822232","level":"district","districts":[]},{"citycode":"0911","adcode":"610630","name":"\u5b9c\u5ddd\u53bf","center":"110.168963,36.050178","level":"district","districts":[]},{"citycode":"0911","adcode":"610631","name":"\u9ec4\u9f99\u53bf","center":"109.84029,35.584655","level":"district","districts":[]},{"citycode":"0911","adcode":"610629","name":"\u6d1b\u5ddd\u53bf","center":"109.43249,35.762626","level":"district","districts":[]},{"citycode":"0911","adcode":"610628","name":"\u5bcc\u53bf","center":"109.37884,35.988111","level":"district","districts":[]},{"citycode":"0911","adcode":"610632","name":"\u9ec4\u9675\u53bf","center":"109.262919,35.579421","level":"district","districts":[]}]},{"citycode":"0919","adcode":"610200","name":"\u94dc\u5ddd\u5e02","center":"108.945116,34.897133","level":"city","districts":[{"citycode":"0919","adcode":"610203","name":"\u5370\u53f0\u533a","center":"109.099848,35.11454","level":"district","districts":[]},{"citycode":"0919","adcode":"610202","name":"\u738b\u76ca\u533a","center":"109.075615,35.068925","level":"district","districts":[]},{"citycode":"0919","adcode":"610222","name":"\u5b9c\u541b\u53bf","center":"109.117063,35.398624","level":"district","districts":[]},{"citycode":"0919","adcode":"610204","name":"\u8000\u5dde\u533a","center":"108.980095,34.909685","level":"district","districts":[]}]},{"citycode":"0913","adcode":"610500","name":"\u6e2d\u5357\u5e02","center":"109.470962,34.520632","level":"city","districts":[{"citycode":"0913","adcode":"610527","name":"\u767d\u6c34\u53bf","center":"109.590501,35.177497","level":"district","districts":[]},{"citycode":"0913","adcode":"610525","name":"\u6f84\u57ce\u53bf","center":"109.932439,35.190256","level":"district","districts":[]},{"citycode":"0913","adcode":"610503","name":"\u534e\u5dde\u533a","center":"109.775765,34.497019","level":"district","districts":[]},{"citycode":"0913","adcode":"610582","name":"\u534e\u9634\u5e02","center":"110.092286,34.566552","level":"district","districts":[]},{"citycode":"0913","adcode":"610502","name":"\u4e34\u6e2d\u533a","center":"109.510051,34.498902","level":"district","districts":[]},{"citycode":"0913","adcode":"610526","name":"\u84b2\u57ce\u53bf","center":"109.586263,34.955755","level":"district","districts":[]},{"citycode":"0913","adcode":"610528","name":"\u5bcc\u5e73\u53bf","center":"109.179903,34.751599","level":"district","districts":[]},{"citycode":"0913","adcode":"610581","name":"\u97e9\u57ce\u5e02","center":"110.44295,35.477145","level":"district","districts":[]},{"citycode":"0913","adcode":"610524","name":"\u5408\u9633\u53bf","center":"110.149412,35.237881","level":"district","districts":[]},{"citycode":"0913","adcode":"610523","name":"\u5927\u8354\u53bf","center":"109.941784,34.797073","level":"district","districts":[]},{"citycode":"0913","adcode":"610522","name":"\u6f7c\u5173\u53bf","center":"110.246105,34.544294","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"530000","name":"\u4e91\u5357\u7701","center":"102.709372,25.046432","level":"province","districts":[{"citycode":"0870","adcode":"530600","name":"\u662d\u901a\u5e02","center":"103.717078,27.338185","level":"city","districts":[{"citycode":"0870","adcode":"530626","name":"\u7ee5\u6c5f\u53bf","center":"103.968995,28.592119","level":"district","districts":[]},{"citycode":"0870","adcode":"530625","name":"\u6c38\u5584\u53bf","center":"103.63756,28.229018","level":"district","districts":[]},{"citycode":"0870","adcode":"530681","name":"\u6c34\u5bcc\u5e02","center":"104.415964,28.629951","level":"district","districts":[]},{"citycode":"0870","adcode":"530629","name":"\u5a01\u4fe1\u53bf","center":"105.049012,27.846839","level":"district","districts":[]},{"citycode":"0870","adcode":"530622","name":"\u5de7\u5bb6\u53bf","center":"102.935343,26.896904","level":"district","districts":[]},{"citycode":"0870","adcode":"530623","name":"\u76d0\u6d25\u53bf","center":"104.234458,28.108475","level":"district","districts":[]},{"citycode":"0870","adcode":"530628","name":"\u5f5d\u826f\u53bf","center":"104.055991,27.624277","level":"district","districts":[]},{"citycode":"0870","adcode":"530621","name":"\u9c81\u7538\u53bf","center":"103.557969,27.186668","level":"district","districts":[]},{"citycode":"0870","adcode":"530627","name":"\u9547\u96c4\u53bf","center":"104.873486,27.441527","level":"district","districts":[]},{"citycode":"0870","adcode":"530602","name":"\u662d\u9633\u533a","center":"103.706323,27.320035","level":"district","districts":[]},{"citycode":"0870","adcode":"530624","name":"\u5927\u5173\u53bf","center":"103.891164,27.748054","level":"district","districts":[]}]},{"citycode":"0874","adcode":"530300","name":"\u66f2\u9756\u5e02","center":"103.796288,25.490866","level":"city","districts":[{"citycode":"0874","adcode":"530326","name":"\u4f1a\u6cfd\u53bf","center":"103.297155,26.417116","level":"district","districts":[]},{"citycode":"0874","adcode":"530304","name":"\u9a6c\u9f99\u533a","center":"103.578459,25.428102","level":"district","districts":[]},{"citycode":"0874","adcode":"530323","name":"\u5e08\u5b97\u53bf","center":"103.985224,24.822471","level":"district","districts":[]},{"citycode":"0874","adcode":"530302","name":"\u9e92\u9e9f\u533a","center":"103.804406,25.496472","level":"district","districts":[]},{"citycode":"0874","adcode":"530322","name":"\u9646\u826f\u53bf","center":"103.66671,25.0293","level":"district","districts":[]},{"citycode":"0874","adcode":"530303","name":"\u6cbe\u76ca\u533a","center":"103.822104,25.600424","level":"district","districts":[]},{"citycode":"0874","adcode":"530381","name":"\u5ba3\u5a01\u5e02","center":"104.104255,26.218956","level":"district","districts":[]},{"citycode":"0874","adcode":"530325","name":"\u5bcc\u6e90\u53bf","center":"104.255082,25.674217","level":"district","districts":[]},{"citycode":"0874","adcode":"530324","name":"\u7f57\u5e73\u53bf","center":"104.297124,24.865388","level":"district","districts":[]}]},{"citycode":"0873","adcode":"532500","name":"\u7ea2\u6cb3\u54c8\u5c3c\u65cf\u5f5d\u65cf\u81ea\u6cbb\u5dde","center":"103.374873,23.363129","level":"city","districts":[{"citycode":"0873","adcode":"532504","name":"\u5f25\u52d2\u5e02","center":"103.414817,24.411774","level":"district","districts":[]},{"citycode":"0873","adcode":"532502","name":"\u5f00\u8fdc\u5e02","center":"103.266908,23.714518","level":"district","districts":[]},{"citycode":"0873","adcode":"532524","name":"\u5efa\u6c34\u53bf","center":"102.826178,23.635824","level":"district","districts":[]},{"citycode":"0873","adcode":"532529","name":"\u7ea2\u6cb3\u53bf","center":"102.420566,23.368946","level":"district","districts":[]},{"citycode":"0873","adcode":"532523","name":"\u5c4f\u8fb9\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"103.675458,22.986733","level":"district","districts":[]},{"citycode":"0873","adcode":"532531","name":"\u7eff\u6625\u53bf","center":"102.392655,22.993654","level":"district","districts":[]},{"citycode":"0873","adcode":"532501","name":"\u4e2a\u65e7\u5e02","center":"103.152663,23.389935","level":"district","districts":[]},{"citycode":"0873","adcode":"532525","name":"\u77f3\u5c4f\u53bf","center":"102.496138,23.705707","level":"district","districts":[]},{"citycode":"0873","adcode":"532503","name":"\u8499\u81ea\u5e02","center":"103.364936,23.396111","level":"district","districts":[]},{"citycode":"0873","adcode":"532527","name":"\u6cf8\u897f\u53bf","center":"103.76615,24.531981","level":"district","districts":[]},{"citycode":"0873","adcode":"532528","name":"\u5143\u9633\u53bf","center":"102.835358,23.219671","level":"district","districts":[]},{"citycode":"0873","adcode":"532530","name":"\u91d1\u5e73\u82d7\u65cf\u7476\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","center":"103.227982,22.769894","level":"district","districts":[]},{"citycode":"0873","adcode":"532532","name":"\u6cb3\u53e3\u7476\u65cf\u81ea\u6cbb\u53bf","center":"103.939265,22.529438","level":"district","districts":[]}]},{"citycode":"0886","adcode":"533300","name":"\u6012\u6c5f\u5088\u50f3\u65cf\u81ea\u6cbb\u5dde","center":"98.8566,25.817555","level":"city","districts":[{"citycode":"0886","adcode":"533324","name":"\u8d21\u5c71\u72ec\u9f99\u65cf\u6012\u65cf\u81ea\u6cbb\u53bf","center":"98.666279,27.740839","level":"district","districts":[]},{"citycode":"0886","adcode":"533323","name":"\u798f\u8d21\u53bf","center":"98.869132,26.901831","level":"district","districts":[]},{"citycode":"0886","adcode":"533325","name":"\u5170\u576a\u767d\u65cf\u666e\u7c73\u65cf\u81ea\u6cbb\u53bf","center":"99.416628,26.453622","level":"district","districts":[]},{"citycode":"0886","adcode":"533301","name":"\u6cf8\u6c34\u5e02","center":"98.857723,25.822579","level":"district","districts":[]}]},{"citycode":"0877","adcode":"530400","name":"\u7389\u6eaa\u5e02","center":"102.526673,24.346786","level":"city","districts":[{"citycode":"0877","adcode":"530425","name":"\u6613\u95e8\u53bf","center":"102.161947,24.672156","level":"district","districts":[]},{"citycode":"0877","adcode":"530424","name":"\u534e\u5b81\u53bf","center":"102.928914,24.19322","level":"district","districts":[]},{"citycode":"0877","adcode":"530402","name":"\u7ea2\u5854\u533a","center":"102.540122,24.341215","level":"district","districts":[]},{"citycode":"0877","adcode":"530403","name":"\u6c5f\u5ddd\u533a","center":"102.748499,24.299441","level":"district","districts":[]},{"citycode":"0877","adcode":"530481","name":"\u6f84\u6c5f\u5e02","center":"102.904181,24.675536","level":"district","districts":[]},{"citycode":"0877","adcode":"530428","name":"\u5143\u6c5f\u54c8\u5c3c\u65cf\u5f5d\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","center":"101.998138,23.596068","level":"district","districts":[]},{"citycode":"0877","adcode":"530427","name":"\u65b0\u5e73\u5f5d\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","center":"101.990805,24.070436","level":"district","districts":[]},{"citycode":"0877","adcode":"530426","name":"\u5ce8\u5c71\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"102.405698,24.168899","level":"district","districts":[]},{"citycode":"0877","adcode":"530423","name":"\u901a\u6d77\u53bf","center":"102.725538,24.11114","level":"district","districts":[]}]},{"citycode":"0872","adcode":"532900","name":"\u5927\u7406\u767d\u65cf\u81ea\u6cbb\u5dde","center":"100.267608,25.606548","level":"city","districts":[{"citycode":"0872","adcode":"532931","name":"\u5251\u5ddd\u53bf","center":"99.905041,26.536889","level":"district","districts":[]},{"citycode":"0872","adcode":"532922","name":"\u6f3e\u6fde\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"99.958089,25.669944","level":"district","districts":[]},{"citycode":"0872","adcode":"532901","name":"\u5927\u7406\u5e02","center":"100.301614,25.678466","level":"district","districts":[]},{"citycode":"0872","adcode":"532930","name":"\u6d31\u6e90\u53bf","center":"99.962294,26.11337","level":"district","districts":[]},{"citycode":"0872","adcode":"532929","name":"\u4e91\u9f99\u53bf","center":"99.371021,25.885733","level":"district","districts":[]},{"citycode":"0872","adcode":"532928","name":"\u6c38\u5e73\u53bf","center":"99.54063,25.464134","level":"district","districts":[]},{"citycode":"0872","adcode":"532927","name":"\u5dcd\u5c71\u5f5d\u65cf\u56de\u65cf\u81ea\u6cbb\u53bf","center":"100.306977,25.227065","level":"district","districts":[]},{"citycode":"0872","adcode":"532923","name":"\u7965\u4e91\u53bf","center":"100.549961,25.483727","level":"district","districts":[]},{"citycode":"0872","adcode":"532925","name":"\u5f25\u6e21\u53bf","center":"100.491038,25.343778","level":"district","districts":[]},{"citycode":"0872","adcode":"532926","name":"\u5357\u6da7\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"100.510333,25.032353","level":"district","districts":[]},{"citycode":"0872","adcode":"532924","name":"\u5bbe\u5ddd\u53bf","center":"100.590274,25.830491","level":"district","districts":[]},{"citycode":"0872","adcode":"532932","name":"\u9e64\u5e86\u53bf","center":"100.176331,26.560122","level":"district","districts":[]}]},{"citycode":"0887","adcode":"533400","name":"\u8fea\u5e86\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"99.70211,27.819149","level":"city","districts":[{"citycode":"0887","adcode":"533401","name":"\u9999\u683c\u91cc\u62c9\u5e02","center":"99.743582,27.842185","level":"district","districts":[]},{"citycode":"0887","adcode":"533423","name":"\u7ef4\u897f\u5088\u50f3\u65cf\u81ea\u6cbb\u53bf","center":"99.300937,27.163808","level":"district","districts":[]},{"citycode":"0887","adcode":"533422","name":"\u5fb7\u94a6\u53bf","center":"98.917851,28.464213","level":"district","districts":[]}]},{"citycode":"0883","adcode":"530900","name":"\u4e34\u6ca7\u5e02","center":"100.088837,23.884175","level":"city","districts":[{"citycode":"0883","adcode":"530921","name":"\u51e4\u5e86\u53bf","center":"99.92873,24.580559","level":"district","districts":[]},{"citycode":"0883","adcode":"530922","name":"\u4e91\u53bf","center":"100.1303,24.444461","level":"district","districts":[]},{"citycode":"0883","adcode":"530902","name":"\u4e34\u7fd4\u533a","center":"100.082073,23.895298","level":"district","districts":[]},{"citycode":"0883","adcode":"530925","name":"\u53cc\u6c5f\u62c9\u795c\u65cf\u4f64\u65cf\u5e03\u6717\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","center":"99.828225,23.472719","level":"district","districts":[]},{"citycode":"0883","adcode":"530927","name":"\u6ca7\u6e90\u4f64\u65cf\u81ea\u6cbb\u53bf","center":"99.245894,23.146758","level":"district","districts":[]},{"citycode":"0883","adcode":"530924","name":"\u9547\u5eb7\u53bf","center":"98.825389,23.762886","level":"district","districts":[]},{"citycode":"0883","adcode":"530926","name":"\u803f\u9a6c\u50a3\u65cf\u4f64\u65cf\u81ea\u6cbb\u53bf","center":"99.397126,23.538092","level":"district","districts":[]},{"citycode":"0883","adcode":"530923","name":"\u6c38\u5fb7\u53bf","center":"99.258702,24.018463","level":"district","districts":[]}]},{"citycode":"0875","adcode":"530500","name":"\u4fdd\u5c71\u5e02","center":"99.161489,25.112018","level":"city","districts":[{"citycode":"0875","adcode":"530581","name":"\u817e\u51b2\u5e02","center":"98.490276,25.020283","level":"district","districts":[]},{"citycode":"0875","adcode":"530502","name":"\u9686\u9633\u533a","center":"99.165638,25.121137","level":"district","districts":[]},{"citycode":"0875","adcode":"530521","name":"\u65bd\u7538\u53bf","center":"99.18919,24.723084","level":"district","districts":[]},{"citycode":"0875","adcode":"530523","name":"\u9f99\u9675\u53bf","center":"98.68941,24.586703","level":"district","districts":[]},{"citycode":"0875","adcode":"530524","name":"\u660c\u5b81\u53bf","center":"99.605105,24.827739","level":"district","districts":[]}]},{"citycode":"0888","adcode":"530700","name":"\u4e3d\u6c5f\u5e02","center":"100.225936,26.855165","level":"city","districts":[{"citycode":"0888","adcode":"530724","name":"\u5b81\u8497\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"100.851083,27.282207","level":"district","districts":[]},{"citycode":"0888","adcode":"530722","name":"\u6c38\u80dc\u53bf","center":"100.750907,26.684215","level":"district","districts":[]},{"citycode":"0888","adcode":"530702","name":"\u53e4\u57ce\u533a","center":"100.22583,26.876468","level":"district","districts":[]},{"citycode":"0888","adcode":"530721","name":"\u7389\u9f99\u7eb3\u897f\u65cf\u81ea\u6cbb\u53bf","center":"100.236967,26.821494","level":"district","districts":[]},{"citycode":"0888","adcode":"530723","name":"\u534e\u576a\u53bf","center":"101.265373,26.629598","level":"district","districts":[]}]},{"citycode":"0691","adcode":"532800","name":"\u897f\u53cc\u7248\u7eb3\u50a3\u65cf\u81ea\u6cbb\u5dde","center":"100.797002,22.009037","level":"city","districts":[{"citycode":"0691","adcode":"532822","name":"\u52d0\u6d77\u53bf","center":"100.452444,21.957323","level":"district","districts":[]},{"citycode":"0691","adcode":"532823","name":"\u52d0\u814a\u53bf","center":"101.564635,21.459233","level":"district","districts":[]},{"citycode":"0691","adcode":"532801","name":"\u666f\u6d2a\u5e02","center":"100.799595,22.011792","level":"district","districts":[]}]},{"citycode":"0878","adcode":"532300","name":"\u695a\u96c4\u5f5d\u65cf\u81ea\u6cbb\u5dde","center":"101.528304,25.045678","level":"city","districts":[{"citycode":"0878","adcode":"532326","name":"\u5927\u59da\u53bf","center":"101.336576,25.729551","level":"district","districts":[]},{"citycode":"0878","adcode":"532328","name":"\u5143\u8c0b\u53bf","center":"101.87434,25.704499","level":"district","districts":[]},{"citycode":"0878","adcode":"532325","name":"\u59da\u5b89\u53bf","center":"101.241632,25.504287","level":"district","districts":[]},{"citycode":"0878","adcode":"532323","name":"\u725f\u5b9a\u53bf","center":"101.546898,25.312939","level":"district","districts":[]},{"citycode":"0878","adcode":"532302","name":"\u7984\u4e30\u5e02","center":"102.079082,25.151061","level":"district","districts":[]},{"citycode":"0878","adcode":"532301","name":"\u695a\u96c4\u5e02","center":"101.546242,25.032945","level":"district","districts":[]},{"citycode":"0878","adcode":"532324","name":"\u5357\u534e\u53bf","center":"101.283236,25.200163","level":"district","districts":[]},{"citycode":"0878","adcode":"532327","name":"\u6c38\u4ec1\u53bf","center":"101.666795,26.049522","level":"district","districts":[]},{"citycode":"0878","adcode":"532322","name":"\u53cc\u67cf\u53bf","center":"101.642369,24.688814","level":"district","districts":[]},{"citycode":"0878","adcode":"532329","name":"\u6b66\u5b9a\u53bf","center":"102.403949,25.530731","level":"district","districts":[]}]},{"citycode":"0871","adcode":"530100","name":"\u6606\u660e\u5e02","center":"102.833669,24.88149","level":"city","districts":[{"citycode":"0871","adcode":"530113","name":"\u4e1c\u5ddd\u533a","center":"103.187825,26.082997","level":"district","districts":[]},{"citycode":"0871","adcode":"530102","name":"\u4e94\u534e\u533a","center":"102.707262,25.043635","level":"district","districts":[]},{"citycode":"0871","adcode":"530115","name":"\u664b\u5b81\u533a","center":"102.595325,24.669077","level":"district","districts":[]},{"citycode":"0871","adcode":"530181","name":"\u5b89\u5b81\u5e02","center":"102.47865,24.919831","level":"district","districts":[]},{"citycode":"0871","adcode":"530124","name":"\u5bcc\u6c11\u53bf","center":"102.497722,25.221924","level":"district","districts":[]},{"citycode":"0871","adcode":"530112","name":"\u897f\u5c71\u533a","center":"102.664426,25.038039","level":"district","districts":[]},{"citycode":"0871","adcode":"530103","name":"\u76d8\u9f99\u533a","center":"102.751643,25.116512","level":"district","districts":[]},{"citycode":"0871","adcode":"530126","name":"\u77f3\u6797\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"103.290536,24.771761","level":"district","districts":[]},{"citycode":"0871","adcode":"530128","name":"\u7984\u529d\u5f5d\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"102.471993,25.551768","level":"district","districts":[]},{"citycode":"0871","adcode":"530111","name":"\u5b98\u6e21\u533a","center":"102.748888,24.950285","level":"district","districts":[]},{"citycode":"0871","adcode":"530114","name":"\u5448\u8d21\u533a","center":"102.822104,24.885738","level":"district","districts":[]},{"citycode":"0871","adcode":"530125","name":"\u5b9c\u826f\u53bf","center":"103.141674,24.91983","level":"district","districts":[]},{"citycode":"0871","adcode":"530127","name":"\u5d69\u660e\u53bf","center":"103.043384,25.327273","level":"district","districts":[]},{"citycode":"0871","adcode":"530129","name":"\u5bfb\u7538\u56de\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"103.256559,25.558163","level":"district","districts":[]}]},{"citycode":"0879","adcode":"530800","name":"\u666e\u6d31\u5e02","center":"100.966011,22.825229","level":"city","districts":[{"citycode":"0879","adcode":"530825","name":"\u9547\u6c85\u5f5d\u65cf\u54c8\u5c3c\u65cf\u62c9\u795c\u65cf\u81ea\u6cbb\u53bf","center":"101.108733,24.00445","level":"district","districts":[]},{"citycode":"0879","adcode":"530822","name":"\u58a8\u6c5f\u54c8\u5c3c\u65cf\u81ea\u6cbb\u53bf","center":"101.692461,23.431894","level":"district","districts":[]},{"citycode":"0879","adcode":"530824","name":"\u666f\u8c37\u50a3\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"100.702807,23.496987","level":"district","districts":[]},{"citycode":"0879","adcode":"530828","name":"\u6f9c\u6ca7\u62c9\u795c\u65cf\u81ea\u6cbb\u53bf","center":"99.932045,22.555799","level":"district","districts":[]},{"citycode":"0879","adcode":"530829","name":"\u897f\u76df\u4f64\u65cf\u81ea\u6cbb\u53bf","center":"99.59016,22.644237","level":"district","districts":[]},{"citycode":"0879","adcode":"530826","name":"\u6c5f\u57ce\u54c8\u5c3c\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"101.862344,22.585858","level":"district","districts":[]},{"citycode":"0879","adcode":"530823","name":"\u666f\u4e1c\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"100.833877,24.446731","level":"district","districts":[]},{"citycode":"0879","adcode":"530802","name":"\u601d\u8305\u533a","center":"100.977069,22.786769","level":"district","districts":[]},{"citycode":"0879","adcode":"530821","name":"\u5b81\u6d31\u54c8\u5c3c\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"101.045743,23.048809","level":"district","districts":[]},{"citycode":"0879","adcode":"530827","name":"\u5b5f\u8fde\u50a3\u65cf\u62c9\u795c\u65cf\u4f64\u65cf\u81ea\u6cbb\u53bf","center":"99.584225,22.329053","level":"district","districts":[]}]},{"citycode":"0692","adcode":"533100","name":"\u5fb7\u5b8f\u50a3\u65cf\u666f\u9887\u65cf\u81ea\u6cbb\u5dde","center":"98.585621,24.433146","level":"city","districts":[{"citycode":"0692","adcode":"533122","name":"\u6881\u6cb3\u53bf","center":"98.296584,24.804275","level":"district","districts":[]},{"citycode":"0692","adcode":"533103","name":"\u8292\u5e02","center":"98.58809,24.433766","level":"district","districts":[]},{"citycode":"0692","adcode":"533124","name":"\u9647\u5ddd\u53bf","center":"97.793359,24.182347","level":"district","districts":[]},{"citycode":"0692","adcode":"533123","name":"\u76c8\u6c5f\u53bf","center":"97.943474,24.691325","level":"district","districts":[]},{"citycode":"0692","adcode":"533102","name":"\u745e\u4e3d\u5e02","center":"97.855423,24.018377","level":"district","districts":[]}]},{"citycode":"0876","adcode":"532600","name":"\u6587\u5c71\u58ee\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","center":"104.21567,23.400983","level":"city","districts":[{"citycode":"0876","adcode":"532626","name":"\u4e18\u5317\u53bf","center":"104.166713,24.05064","level":"district","districts":[]},{"citycode":"0876","adcode":"532627","name":"\u5e7f\u5357\u53bf","center":"105.055075,24.046378","level":"district","districts":[]},{"citycode":"0876","adcode":"532622","name":"\u781a\u5c71\u53bf","center":"104.336905,23.605075","level":"district","districts":[]},{"citycode":"0876","adcode":"532601","name":"\u6587\u5c71\u5e02","center":"104.233237,23.38683","level":"district","districts":[]},{"citycode":"0876","adcode":"532625","name":"\u9a6c\u5173\u53bf","center":"104.394524,23.013108","level":"district","districts":[]},{"citycode":"0876","adcode":"532628","name":"\u5bcc\u5b81\u53bf","center":"105.630921,23.625072","level":"district","districts":[]},{"citycode":"0876","adcode":"532624","name":"\u9ebb\u6817\u5761\u53bf","center":"104.702732,23.125837","level":"district","districts":[]},{"citycode":"0876","adcode":"532623","name":"\u897f\u7574\u53bf","center":"104.671802,23.437707","level":"district","districts":[]}]}]},{"citycode":"010","adcode":"110000","name":"\u5317\u4eac\u5e02","center":"116.407387,39.904179","level":"province","districts":[{"citycode":"010","adcode":"110100","name":"\u5317\u4eac","center":"116.405285,39.904989","level":"city","districts":[{"citycode":"010","adcode":"110116","name":"\u6000\u67d4\u533a","center":"116.631974,40.317003","level":"district","districts":[]},{"citycode":"010","adcode":"110109","name":"\u95e8\u5934\u6c9f\u533a","center":"116.101668,39.940842","level":"district","districts":[]},{"citycode":"010","adcode":"110113","name":"\u987a\u4e49\u533a","center":"116.661474,40.149891","level":"district","districts":[]},{"citycode":"010","adcode":"110101","name":"\u4e1c\u57ce\u533a","center":"116.416334,39.928359","level":"district","districts":[]},{"citycode":"010","adcode":"110114","name":"\u660c\u5e73\u533a","center":"116.231034,40.220952","level":"district","districts":[]},{"citycode":"010","adcode":"110115","name":"\u5927\u5174\u533a","center":"116.341483,39.726917","level":"district","districts":[]},{"citycode":"010","adcode":"110111","name":"\u623f\u5c71\u533a","center":"116.143426,39.748889","level":"district","districts":[]},{"citycode":"010","adcode":"110117","name":"\u5e73\u8c37\u533a","center":"117.121589,40.140805","level":"district","districts":[]},{"citycode":"010","adcode":"110105","name":"\u671d\u9633\u533a","center":"116.443136,39.921444","level":"district","districts":[]},{"citycode":"010","adcode":"110107","name":"\u77f3\u666f\u5c71\u533a","center":"116.223015,39.906304","level":"district","districts":[]},{"citycode":"010","adcode":"110106","name":"\u4e30\u53f0\u533a","center":"116.286726,39.858538","level":"district","districts":[]},{"citycode":"010","adcode":"110108","name":"\u6d77\u6dc0\u533a","center":"116.2977,39.959893","level":"district","districts":[]},{"citycode":"010","adcode":"110102","name":"\u897f\u57ce\u533a","center":"116.36585,39.9126","level":"district","districts":[]},{"citycode":"010","adcode":"110118","name":"\u5bc6\u4e91\u533a","center":"116.843351,40.377058","level":"district","districts":[]},{"citycode":"010","adcode":"110112","name":"\u901a\u5dde\u533a","center":"116.72923,39.916403","level":"district","districts":[]},{"citycode":"010","adcode":"110119","name":"\u5ef6\u5e86\u533a","center":"115.974609,40.457033","level":"district","districts":[]}]}]}]}]}')},6781:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default,uniPopup:i("c3a6").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","wallet-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u6211\u7684\u94b1\u5305",showBack:!0,titleColor:"#fff",backgroundColor:"transparent",borderBottom:"none",leftImg:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/d37f08d8-4399-4a5b-ba17-e7675c905b4b",_i:1}}),i("view",{staticClass:t._$s(2,"sc","wallet-content"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","wallet-content-title"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","wallet-content-title-text1"),attrs:{_i:4}},[i("text")]),i("view",{staticClass:t._$s(6,"sc","wallet-content-title-text2"),attrs:{_i:6}},[i("image",{staticClass:t._$s(7,"sc","wallet-content-title-icon"),attrs:{_i:7}})])]),i("view",{staticClass:t._$s(8,"sc","wallet-content-price"),attrs:{_i:8}},[t._v(t._$s(8,"t0-0",t._s(t.userInfo.money?t.formatBalance(t.userInfo.money):"0.00")))]),i("view",{staticClass:t._$s(9,"sc","wallet-content-cash"),attrs:{_i:9}},[i("view",{staticClass:t._$s(10,"sc","wallet-content-cash-left"),attrs:{_i:10}},[i("view",{staticClass:t._$s(11,"sc","wallet-content-cash-title"),attrs:{_i:11}},[i("text")]),i("view",{staticClass:t._$s(13,"sc","wallet-content-cash-left-text"),attrs:{_i:13}},[t._v(t._$s(13,"t0-0",t._s(t.userInfo.usable_money?t.formatBalance(t.userInfo.usable_money):"0.00")))])]),i("view",{staticClass:t._$s(14,"sc","wallet-content-cash-right"),attrs:{_i:14}},[i("view",{staticClass:t._$s(15,"sc","wallet-content-cash-title"),attrs:{_i:15}},[i("text"),i("image",{staticClass:t._$s(17,"sc","wallet-content-cash-title-icon"),attrs:{_i:17},on:{click:t.openTip}})]),i("view",{staticClass:t._$s(18,"sc","wallet-content-cash-right-text"),attrs:{_i:18}},[t._v(t._$s(18,"t0-0",t._s(t.userInfo.other_money?t.formatBalance(t.userInfo.other_money):"0.00")))])])]),i("view",{staticClass:t._$s(19,"sc","wallet-content-btn"),attrs:{_i:19},on:{click:t.goCash}})]),i("view",{staticClass:t._$s(20,"sc","wallet-detail"),attrs:{_i:20}},[i("scroll-view",{staticClass:t._$s(21,"sc","wallet-detail-tabs"),attrs:{_i:21}},[i("view",{class:t._$s(22,"c",["wallet-detail-line","walletDetailTab",{tabActive:0==t.tabsIndex}]),attrs:{_i:22},on:{click:function(e){return t.changeTab(0)}}}),i("view",{class:t._$s(23,"c",["walletDetailTab",{tabActive:1==t.tabsIndex}]),attrs:{_i:23},on:{click:function(e){return t.changeTab(1)}}})]),i("view",{staticClass:t._$s(24,"sc","wallet-detail-content"),attrs:{_i:24}},[i("CommonList",{ref:"groupRef",attrs:{apiUrl:t.tabsList[t.tabsIndex].url,listScrollHeight:"calc(100vh - "+(2*t.statusBarHeight+820)+"rpx)",_i:25},scopedSlots:t._u([{key:"listData",fn:function(e,s,a){var r=e.list;return[i("view",{staticClass:s._$s("27-"+a,"sc","lists"),attrs:{_i:"27-"+a}},[t._l(s._$s("28-"+a,"f",{forItems:r}),(function(e,c,n,o){return s._$s("28-"+a+o,"i",0==t.tabsIndex)?i("view",{key:s._$s("28-"+a,"f",{forIndex:n,key:c}),staticClass:s._$s("28-"+a+o,"sc","lists-item"),style:s._$s("28-"+a+o,"s",{"border-bottom":r[c+1]&&"1rpx solid #F5F5F5",paddingBottom:"20rpx"}),attrs:{_i:"28-"+a+o}},[i("view",{staticClass:s._$s("29-"+a+o,"sc","lists-item-title"),attrs:{_i:"29-"+a+o}},[t._v(s._$s("29-"+a+o,"t0-0",t._s(t.getDescriptionByNumber(e.type))))]),i("view",{staticClass:s._$s("30-"+a+o,"sc","lists-item-content"),attrs:{_i:"30-"+a+o}},[i("view",{staticClass:s._$s("31-"+a+o,"sc","lists-item-text1"),attrs:{_i:"31-"+a+o}},[t._v(s._$s("31-"+a+o,"t0-0",t._s(e.order_num)))]),i("view",{staticClass:s._$s("32-"+a+o,"sc","lists-item-text2"),attrs:{_i:"32-"+a+o}},[t._v(s._$s("32-"+a+o,"t0-0",t._s(1==e.inorde?"+":"-"))+s._$s("32-"+a+o,"t0-1",t._s(e.money)))])]),i("view",{staticClass:s._$s("33-"+a+o,"sc","lists-item-content"),attrs:{_i:"33-"+a+o}},[i("view",{staticClass:s._$s("34-"+a+o,"sc","lists-item-text1"),attrs:{_i:"34-"+a+o}},[t._v(s._$s("34-"+a+o,"t0-0",t._s(e.add_time)))]),i("view",{staticClass:s._$s("35-"+a+o,"sc","lists-item-text1"),attrs:{_i:"35-"+a+o}},[t._v(s._$s("35-"+a+o,"t0-0",t._s(t.formatPriceNumber(e.after_money))))])])]):t._e()})),t._l(s._$s("36-"+a,"f",{forItems:r}),(function(e,c,n,o){return s._$s("36-"+a+o,"i",1==t.tabsIndex)?i("view",{key:s._$s("36-"+a,"f",{forIndex:n,key:c}),staticClass:s._$s("36-"+a+o,"sc","lists-item"),style:s._$s("36-"+a+o,"s",{"border-bottom":r[c+1]&&"1rpx solid #F5F5F5",paddingBottom:"20rpx"}),attrs:{_i:"36-"+a+o},on:{click:function(i){return t.openCahPop(e)}}},[i("view",{staticClass:s._$s("37-"+a+o,"sc","lists-item-title"),attrs:{_i:"37-"+a+o}},[t._v(s._$s("37-"+a+o,"t0-0",t._s(e.cash_outbizno)))]),i("view",{staticClass:s._$s("38-"+a+o,"sc","lists-item-content"),attrs:{_i:"38-"+a+o}},[i("view",{staticClass:s._$s("39-"+a+o,"sc","lists-item-text1"),attrs:{_i:"39-"+a+o}},[t._v("\u63d0\u73b0\u72b6\u6001")]),i("view",{staticClass:s._$s("40-"+a+o,"sc","lists-item-text3"),attrs:{_i:"40-"+a+o}},[t._v(s._$s("40-"+a+o,"t0-0",t._s(t.getTabName(e.cash_state))))])]),i("view",{staticClass:s._$s("41-"+a+o,"sc","lists-item-content"),attrs:{_i:"41-"+a+o}},[i("view",{staticClass:s._$s("42-"+a+o,"sc","lists-item-text1"),attrs:{_i:"42-"+a+o}},[t._v(s._$s("42-"+a+o,"t0-0",t._s(e.cash_add_time)))]),i("view",{staticClass:s._$s("43-"+a+o,"sc","lists-item-text1"),attrs:{_i:"43-"+a+o}},[t._v(s._$s("43-"+a+o,"t0-0",t._s(e.cash_money)))])])]):t._e()}))],2)]}},{key:"empty",fn:function(t,e,s){return[i("noData",{attrs:{_i:"45-"+s}})]}}])})],1)]),i("uni-popup",{ref:"popup",attrs:{"mask-background-color":"rgba(0,0,0,0.5)",_i:46}},[i("view",{staticClass:t._$s(47,"sc","popup-content"),attrs:{_i:47}},[i("view",{staticClass:t._$s(48,"sc","popup-content-title"),attrs:{_i:48}}),i("view",{staticClass:t._$s(49,"sc","popup-content-text"),attrs:{_i:49}}),i("view",{staticClass:t._$s(50,"sc","popup-content-btn"),attrs:{_i:50},on:{click:t.closeTip}})])]),i("cashPop",{attrs:{cashObj:t.cashObj,_i:51},model:{value:t._$s(51,"v-model",t.popShow),callback:function(e){t.popShow=e},expression:"popShow"}})],1)},r=[]},"67ad":function(t,e){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.__esModule=!0,t.exports["default"]=t.exports},"67c3":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"OrderCard",props:{dataItem:{type:Object},typeId:{type:Number},showState:{type:Boolean,default:!0}},computed:{photo:function(){return JSON.parse(this.dataItem.photo)},useTime:function(){var t=this.dataItem.reserve_start_time,e=this.dataItem.reserve_end_time;return function(t,e){var i=new Date(t.replace(/-/g,"/")),s=new Date(e.replace(/-/g,"/"));if(isNaN(i.getTime()))throw new Error("\u65e0\u6548\u7684\u5f00\u59cb\u65f6\u95f4\u683c\u5f0f\uff0c\u8bf7\u4f7f\u7528\u7c7b\u4f3c'2025-08-04 14:00:00'\u7684\u683c\u5f0f");var a=function(t){var e=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return"".concat(e,".").concat(i," ").concat(s,":").concat(a)};return"".concat(a(i)," \u2014\u2014 ").concat(a(s))}(t,e)},stateText:function(){return["","\u5f85\u652f\u4ed8","\u5f85\u63a5\u5355","\u5f85\u670d\u52a1","\u5f00\u59cb\u670d\u52a1","\u5df2\u5b8c\u6210","\u5df2\u8bc4\u4ef7","\u5df2\u53d6\u6d88"][this.dataItem.state]}},methods:{emitCancel:function(){this.$emit("cancel",this.dataItem)},emitAccept:function(){this.$emit("accept",this.dataItem)},emitStart:function(){this.$emit("start",this.dataItem)},goDetail:function(){this.$emit("goDetail",this.dataItem)},emitDone:function(){this.$emit("done",this.dataItem)}}};e.default=s},"67d0":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=i("c3e2"),n=s(i("f8df")),o=s(i("16bb")),d=s(i("5e85")),l=s(i("4c51")),u=s(i("30e5")),f={components:{projectTabs:d.default,CommonList:n.default,serviceCardList:l.default,evaluationList:u.default},data:function(){return{imgVideoList:{},videoContext:null,count:1,syrdetail:{qualifications:[]},distance:12.31,queryData:{publish_user_id:null,server_kind:1,page:1,limit:10,order_type:1},tabsPopList:[],showPopup:!1,autoShare:!1,autoShareExecuted:!1}},onLoad:function(e){var i=this;t("log",e," at pages/user/syr-detail.vue:170"),this.queryData.publish_user_id=e.id,"1"===e.autoShare&&(this.autoShare=!0),this.getShopDetail(e.id),this.$nextTick((function(){i.search()}))},computed:{headPhoto:function(){return"-"!=this.syrdetail.head_photo&&this.syrdetail.head_photo?this.syrdetail.head_photo:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40"}},methods:{goAlbum:function(){uni.navigateTo({url:"/pages/album/index?id=".concat(this.queryData.publish_user_id,"&user_type=1")})},getImgVideoList:function(){var t=this;o.default.post("/user/imgVideo/main",{user_id:this.queryData.publish_user_id,user_type:1}).then((function(e){200==e.code&&(t.imgVideoList=e.data)}))},goList:function(){uni.navigateTo({url:"/pages/evaluate/evaluationList?evaluated_id=".concat(this.syrdetail.id,"&evaluated_type=1")})},listSuccess:function(t){t.count&&(this.count=t.count<=4?t.count:4)},formatRelativeTime:function(t){var e=new Date(t);if(isNaN(e.getTime()))return"string"===typeof t?t:"";var i=new Date,s=i.getFullYear(),a=i.getMonth(),r=i.getDate(),c=new Date(i.getTime()+864e5),n=c.getFullYear(),o=c.getMonth(),d=c.getDate(),l=e.getFullYear(),u=e.getMonth(),f=e.getDate(),_=String(e.getHours()).padStart(2,"0"),p=String(e.getMinutes()).padStart(2,"0");return l===s&&u===a&&f===r?"\u4eca\u5929".concat(_,":").concat(p):l===n&&u===o&&f===d?"\u660e\u5929".concat(_,":").concat(p):"string"===typeof t?t:e.toString()},setShare:function(e){var i=this,s=(getCurrentPages(),function(e){return{provider:"weixin",scene:"WXSceneSession",type:5,title:"\u597d\u53cb\u521a\u63a8\u4e86\u4e2a\u8d85\u8d5e\u624b\u827a\u4eba\uff01\u70b9\u5f00\u8ba4\u8bc6TA ~",miniProgram:{id:"gh_89c92e18b70b",path:"/subPackages/user/syr-detail?id=".concat(i.syrdetail.id),type:i.$store.state.wxShareType,webUrl:"https://www.baidu.com/"},imageUrl:e,success:function(e){t("log","\u5206\u4eab\u6210\u529f:",JSON.stringify(e)," at pages/user/syr-detail.vue:288"),setTimeout((function(){uni.navigateBack({delta:1,success:function(){uni.showToast({title:"\u5206\u4eab\u6210\u529f",icon:"success",duration:1e3})}})}),500)},fail:function(e){t("log","\u5206\u4eab\u5931\u8d25:",JSON.stringify(e)," at pages/user/syr-detail.vue:307"),uni.showToast({title:"\u5206\u4eab\u5931\u8d25",icon:"none",duration:1e3}),setTimeout((function(){uni.navigateBack({delta:1,success:function(){uni.showToast({title:"\u5206\u4eab\u5931\u8d25",icon:"none",duration:2e3})}})}),1500)}}});uni.share(s(e)).catch((function(){t("log","\u9996\u6b21\u5206\u4eab\u56fe\u7247\u65e0\u6548\uff0c\u5c1d\u8bd5\u5907\u7528\u56fe\u7247\u5206\u4eab..."," at pages/user/syr-detail.vue:334"),uni.share(s("https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40"))}))},goInvite:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s,n,o,d,l,u;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return s=e,n="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40",o=getCurrentPages(),d=o[o.length-1],l=null,i.next=7,d.$getAppWebview();case 7:return u=i.sent,i.next=10,new plus.nativeObj.Bitmap("store-detail");case 10:l=i.sent,u.draw(l,(function(){t("log","\u622a\u5c4f\u7ed8\u5236\u56fe\u7247\u6210\u529f",l," at pages/user/syr-detail.vue:352"),l.save("_doc/a.jpg",{},function(){var e=(0,r.default)(a.default.mark((function e(i){var r;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return n=i.target,e.prev=1,e.next=4,(0,c.handleImgSizeUni)(i.target);case 4:r=e.sent,t("log","\u5904\u7406\u540e\u7684\u56fe\u7247\u5730\u5740\uff1a",r," at pages/user/syr-detail.vue:360"),n=r,e.next=12;break;case 9:e.prev=9,e.t0=e["catch"](1),t("error","\u5904\u7406\u5931\u8d25\uff1a",e.t0," at pages/user/syr-detail.vue:364");case 12:s.setShare(n),l.clear();case 14:case"end":return e.stop()}}),e,null,[[1,9]])})));return function(t){return e.apply(this,arguments)}}(),(function(e){s.setShare(n),t("log","\u4fdd\u5b58\u56fe\u7247\u5931\u8d25\uff1a"+JSON.stringify(e)," at pages/user/syr-detail.vue:371")}))}),(function(e){s.setShare(n),t("log","\u622a\u5c4f\u7ed8\u5236\u56fe\u7247\u5931\u8d25\uff1a"+JSON.stringify(e)," at pages/user/syr-detail.vue:377")}));case 12:case"end":return i.stop()}}),i)})))()},previewImage:function(t){},clickTap:function(t){t.order_type&&(this.queryData.order_type=t.order_type,this.search())},clickPopTap:function(t){this.queryData.first_class=t,this.search()},goQualifications:function(){uni.navigateTo({url:"/pages/user/qualifications?id=".concat(this.queryData.publish_user_id)})},getShopDetail:function(e){var i=this,s={},a=uni.getStorageSync("userAdrees");s=a?a.addressRes:getApp().globalData.addressRes;var r=s.latitude,c=s.longitude;o.default.post("/user/syrdetail",{id:e,userLat:r,userLngz:c}).then((function(t){i.syrdetail=t.data,i.syrdetail.distance=i.syrdetail.distance.toFixed(2),i.tabsPopList=[],i.syrdetail.servers_kill.forEach((function(t,e){var s={id:t,name:i.syrdetail.servers_kill_arr[e],active:!1};i.tabsPopList.push(s)})),i.autoShare&&!i.autoShareExecuted&&(i.autoShareExecuted=!0,setTimeout((function(){i.autoTriggerShare()}),1e3))})).catch((function(e){t("log",e," at pages/user/syr-detail.vue:443")}))},autoTriggerShare:function(){t("log","\u5f00\u59cb\u81ea\u52a8\u5206\u4eab"," at pages/user/syr-detail.vue:449"),this.goInvite()},search:function(){this.$refs.groupRef.manualRefresh(this.queryData)}}};e.default=f}).call(this,i("f3b9")["default"])},"67f5":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:500,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(null!==s&&clearTimeout(s),i){var a=!s;s=setTimeout((function(){s=null}),e),a&&"function"===typeof t&&t()}else s=setTimeout((function(){"function"===typeof t&&t()}),e)};e.default=a},6863:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"OrderCard",props:{dataItem:{type:Object},typeId:{type:Number}},created:function(){},computed:{useTime:function(){var t=this.dataItem.reservation_time,e=this.dataItem.server_time||0;return function(t,e){var i=new Date(t.replace(/-/g,"/"));if(isNaN(i.getTime()))throw new Error("\u65e0\u6548\u7684\u5f00\u59cb\u65f6\u95f4\u683c\u5f0f\uff0c\u8bf7\u4f7f\u7528\u7c7b\u4f3c'2025-08-04 14:00:00'\u7684\u683c\u5f0f");var s=new Date(i.getTime()+60*e*1e3),a=function(t){var e=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return"".concat(e,".").concat(i," ").concat(s,":").concat(a)};return"".concat(a(i)," \u2014\u2014 ").concat(a(s))}(t,e)}},methods:{emitCancel:function(){this.$emit("cancel")},emitAccept:function(){this.$emit("accept")},emitStart:function(){this.$emit("start")},emitDone:function(){this.$emit("done")}}};e.default=s},"68df":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n={data:function(){return{showGuideDialog:!1,kindList:[],mainSwitch:{},isInitializing:!0}},onLoad:function(){this.fetchSettings()},methods:{closeGuideDialog:function(){try{this.showGuideDialog=!1}catch(err){t("error","\u5173\u95ed\u901a\u77e5\u8bbe\u7f6e\u5f39\u7a97\u5931\u8d25:",err," at pages/message/message_setting.vue:86"),this.$set(this,"showGuideDialog",!1)}},fetchSettings:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,c.default.post("/sj/push/getReceiveState",{message_type_id:1});case 3:s=i.sent,t("log","\u7528\u6237\u72b6\u6001",s," at pages/message/message_setting.vue:97"),200==s.code&&(e.mainSwitch=s.data.list[0]||{},e.$set(e.mainSwitch,"switch",1==e.mainSwitch.state),e.kindList=s.data.list[0].kind_list||[],e.kindList.forEach((function(t){e.mainSwitch.switch?e.$set(t,"switch",1==t.state):e.$set(t,"switch",!1)}))),e.isInitializing=!1,i.next=13;break;case 9:i.prev=9,i.t0=i["catch"](0),t("error","\u83b7\u53d6\u8bbe\u7f6e\u5931\u8d25",i.t0," at pages/message/message_setting.vue:116"),e.isInitializing=!1;case 13:case"end":return i.stop()}}),i,null,[[0,9]])})))()},handleSwitchChange:function(e,i,s){var a=this;if(t("log",11111,e,i,s," at pages/message/message_setting.vue:123"),!this.isInitializing){if("total"==e&&0==s&&this.kindList.forEach((function(t){a.$set(t,"switch",!1)})),"total"==e&&1==s&&this.kindList.forEach((function(t){a.$set(t,"switch",1==t.state)})),"branch"==e&&1==this.mainSwitch.switch&&this.$set(i,"state",s?1:2),"branch"==e&&0==this.mainSwitch.switch){var r=[];this.kindList.forEach((function(t){var e={message_type_id:t.message_type_id,message_kind_id:t.message_kind_id,state:t.message_kind_id==i.message_kind_id&&s?1:2};r.push(e)}));var c={message_type_id:this.mainSwitch.message_type_id,message_kind_id:this.mainSwitch.message_kind_id,state:1};return r.push(c),this.setReceiveStateBatch(r),this.$set(this.mainSwitch,"switch",!0),void this.$set(this.mainSwitch,"state",1)}this.setSetting(i.message_type_id,i.message_kind_id,s)}},setReceiveStateBatch:function(t){var e=this;c.default.post("/sj/push/setReceiveStateBatch",{data:t}).then((function(t){})).catch((function(t){uni.showToast({title:"\u8bbe\u7f6e\u5931\u8d25",icon:"none"}),e.isInitializing=!0,e.fetchSettings()}))},setSetting:function(t,e,i){var s=this;c.default.post("/sj/push/setReceiveState",{message_type_id:t,message_kind_id:e,state:i}).then((function(t){})).catch((function(t){uni.showToast({title:"\u8bbe\u7f6e\u5931\u8d25",icon:"none"}),s.isInitializing=!0,s.fetchSettings()}))}}};e.default=n}).call(this,i("f3b9")["default"])},"68ee":function(t,e,i){"use strict";i.r(e);var s=i("4dae"),a=i("3144");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"697c":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c=s(i("5e91")),n={name:"uv-toolbar",emits:["confirm","cancel"],mixins:[a.default,r.default,c.default],methods:{cancel:function(){this.$emit("cancel")},confirm:function(){this.$emit("confirm")}}};e.default=n},"69b6":function(t,e,i){"use strict";i.r(e);var s=i("d628"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"69c5":function(t,e,i){"use strict";i.r(e);var s=i("4bce"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"69f8":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("16bb")),r=s(i("467d")),c={components:{evaluationDetail:r.default},data:function(){return{formData:{page:1,limit:2},evaluateList:{count:0,list:[]}}},props:{evaluated_id:{type:Number},evaluated_type:{type:Number},order_shop_id:{type:Number},order_shop_type:{type:Number},order_id:{type:Number},search_type:{type:Number},listUrl:{type:String,default:"/user/orderEvaluate/list"}},mounted:function(){this.order_shop_id&&(this.formData.order_shop_id=this.order_shop_id),this.order_shop_type&&(this.formData.order_shop_type=this.order_shop_type),this.evaluated_type&&(this.formData.evaluated_type=this.evaluated_type),this.evaluated_id&&(this.formData.evaluated_id=this.evaluated_id),this.order_id&&(this.formData.order_id=this.order_id),this.search_type&&(this.formData.search_type=this.search_type),this.getList()},methods:{getList:function(){var t=this;a.default.post(this.listUrl,this.formData).then((function(e){t.evaluateList=e.data||{count:0,list:[]}}))},goList:function(){this.$emit("goList")}}};e.default=c},"6a74":function(t,e,i){"use strict";i.r(e);var s=i("44c1"),a=i("d460");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"12525303",null,!1,s["a"],void 0);e["default"]=n.exports},"6a81":function(t,e,i){"use strict";i.r(e);var s=i("df9c"),a=i("781a");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"e2a6e264",null,!1,s["a"],void 0);e["default"]=n.exports},"6b7c":function(t,e,i){"use strict";i.r(e);var s=i("8e9b"),a=i("6539");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"6ba0":function(t,e,i){"use strict";i.r(e);var s=i("fd7d"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"6ba4":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},"6be3":function(t,e,i){"use strict";i.r(e);var s=i("989b"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"6bf1":function(t,e,i){"use strict";i.r(e);var s=i("1e31"),a=i("7b2a");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"4bfa92e6",null,!1,s["a"],void 0);e["default"]=n.exports},"6c4a":function(t,e,i){"use strict";i.r(e);var s=i("0514"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"6c54":function(t,e,i){"use strict";i.r(e);var s=i("59b9"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"6c65":function(t,e,i){"use strict";i.r(e);var s=i("b4ce"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"6c6a":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"jp-verification-literalness",props:{securityCode:{type:String,default:""},codeLength:{type:Number,default:4},contentWidth:{type:Number,default:120},contentHeight:{type:Number,default:60},lineLength:{type:Number,default:8},backgroundColor:{type:String,default:"rgb(238,226,224)"},lineColorList:{type:Array,default:function(){return["rgba(238,0,0,.5)","rgba(0, 170, 255,.5)","rgba(0, 170, 0,.5)","rgba(0, 0, 0,.5)","rgba(153, 146, 255,.5)"]}},colorList:{type:Array,default:function(){return["rgb(238,0,0)","rgb(0, 170, 255)","rgb(0, 170, 0)","rgb(0, 0, 0)","rgb(153, 146, 255)"]}},isCaseCheck:{type:Boolean,default:!0}},computed:{canvasId:function(){return"lime-signature".concat(this._uid)}},data:function(){return{identifyCode:""}},watch:{securityCode:function(){this.drawPic()}},methods:{verification:function(t){return this.isCaseCheck?this.identifyCode==t:this.identifyCode.toLowerCase()==t.toLowerCase()},gainCode:function(){return this.identifyCode},randomNum:function(t,e){return Math.floor(Math.random()*(e-t)+t)},getcheckCode:function(){for(var t="",e=this.codeLength,i=[1,2,3,4,5,6,7,8,9,"A","B","C","D","E","F","G","H","I","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z"],s=0;s0&&this.secondClassList.forEach((function(i){t.secondClassId.includes(i.id)&&(e=e+" "+i.title)})),this.$emit("changeTypeText",e)}}},methods:{handleClose:function(){var t=this,e="";this.classId&&this.classList.forEach((function(i){i.id==t.classId&&(e+=i.title)})),this.secondClassId&&this.secondClassList.forEach((function(i){t.secondClassId.includes(i.id)&&(e=e+"\u3001"+i.title)})),this.$emit("closeClassSelect",e)},changeClass:function(t){t!=this.classId&&(this.$emit("changeClass",t),this.$emit("changeSecondClass",[]),this.getSecondClass(t))},changeSecondClass:function(t){var e=this.secondClassId,i=function(t,e){if(!Array.isArray(t)||!Array.isArray(e))return!1;return t.some((function(t){return e.some((function(e){return e&&void 0!==e.id&&Number(e.id)===t}))}))}(e,this.secondClassList);i?e.includes(t)?this.$emit("changeSecondClass",e.filter((function(e){return e!=t}))):this.$emit("changeSecondClass",[].concat((0,a.default)(e),[t])):this.$emit("changeSecondClass",[t])},getSecondClass:function(e){t("log","\u83b7\u53d6\u4e8c\u7ea7\u5206\u7c7b",i," at pages/shop/workSpace/components/class_select.vue:143");var i=this.classList.find((function(t){return t.id==e}));this.secondClassList=i.data},getClass:function(){this.classList=this.$store.state.workSpaceSJClassList,this.classId?this.getSecondClass(this.classId):this.changeClass(this.classList[0].id)}}};e.default=r}).call(this,i("f3b9")["default"])},"6fe9":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("cd5a")),o=s(i("e26b")),d=s(i("32a4")),l=s(i("91d2")),u={components:{serviceCodeInput:o.default},data:function(){return{serviceType:1,urls:{1:{weChatRefund:"/syr/yhwechatrefund",aliRefund:"/syr/yhalirefund",startOrder:"/syr/yhstartserver",endOrder:"/syr/yhendserver",sureOrder:"/syr/yhordersure",detail:"/syr/yhorderdetail"},2:{weChatRefund:"/syr/orderSelf/weChatRefund",aliRefund:"/syr/orderSelf/aliRefund",startOrder:"/syr/orderSelf/start",endOrder:"/syr/orderSelf/end",sureOrder:"/syr/orderSelf/sure",detail:"/syr/orderSelf/details"}},clickType:!1,isShowPer:!1,id:"",staffInfo:{avatar:"/static/images/staff.jpg",name:"\u4e2d\u533b\u7406\u7597\u8c22\u98de",rating:5},showInput:!1,userInfo:{},orderInfo:{},reservation_address_arr:{},user_syr:{},scrollTop:0}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(e.id=t.id,t.serviceType&&(e.serviceType=t.serviceType),!t.id){i.next=9;break}return i.next=5,c.default.post("/user/getuser",{type:2});case 5:s=i.sent,r=s.data,e.userInfo=r,e.getOrderDetail();case 9:case"end":return i.stop()}}),i)})))()},onPageScroll:function(t){this.scrollTop=t.scrollTop},computed:{backgroundColor:function(){return this.scrollTop>10?"rgba(255, 255, 255, ".concat(.02*this.scrollTop,");"):"transparent"},stateItem:function(){var t=this,e=[{text:"\u5f85\u652f\u4ed8",icon:"/static/images/icons/pay.png",state:"1"},{text:"\u5f85\u63a5\u5355",icon:"/static/images/icons/pending.png",state:"2"},{text:"\u5f85\u670d\u52a1",icon:"/static/images/icons/pendingService.png",state:"3"},{text:"\u670d\u52a1\u4e2d",icon:"/static/images/icons/pendingService.png",state:"4"},{text:"\u5df2\u5b8c\u6210",icon:"/static/images/icons/payOk.png",state:"5"},{text:"\u5f85\u8bc4\u4ef7",icon:"/static/images/icons/pending.png",state:"6"},{text:"\u5df2\u53d6\u6d88",icon:"/static/images/evaluate/cancel.png",state:"7"}].find((function(e){return e.state==t.orderInfo.state}))||{};return e}},methods:{formatDateAndAddMinutes:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!t)return{original:"",afterAddingMinutes:""};var i=new Date(t.replace(/-/g,"/"));function s(t){var e=t.getFullYear(),i=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),a=String(t.getHours()).padStart(2,"0"),r=String(t.getMinutes()).padStart(2,"0");return"".concat(e,"\u5e74").concat(i,"\u6708").concat(s,"\u65e5 ").concat(a,":").concat(r)}var a=s(i),r=new Date(i);r.setMinutes(r.getMinutes()+e);var c=s(r);return{original:a,afterAddingMinutes:c}},getOrderDetail:function(){var e=this;c.default.post(this.urls[this.serviceType].detail,{id:this.id,syrid:this.userInfo.id}).then((function(i){e.orderInfo=i.data,e.reservation_address_arr=i.data.reservation_address_arr,t("log",e.orderInfo," at pages/syr/userorder-detail.vue:318")}))},cancelOrder:function(e,i){var s=this;e.preventDefault(),e.stopPropagation(),uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f\uff08\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u652f\u4ed8\u91d1\u989d\u5c06\u539f\u8def\u9000\u56de\uff09",success:function(e){if(e.confirm){var a={orderNo:i.number,amount:i.pay_money,syrid:s.userInfo.id},r="";if(1==i.pay_kind?r="":2==i.pay_kind?r=s.urls[s.serviceType].weChatRefund:3==i.pay_kind&&(r=s.urls[s.serviceType].aliRefund),t("log",a,r," at pages/syr/userorder-detail.vue:348"),s.clickType)return;s.clickType=!0,c.default.post(r,a).then((function(t){if(1==t.state){uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),s.getOrderDetail();var e=getCurrentPages(),i=e[e.length-2];i&&(i.$vm.getOrderNumber(),i.$vm.getOrderList())}else uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){t("log",e," at pages/syr/userorder-detail.vue:377")})).finally((function(){s.clickType=!1}))}}})},confirmOrder:function(t,e){var i=this;t.preventDefault(),t.stopPropagation(),this.clickType||(this.clickType=!0,c.default.post(this.urls[this.serviceType].sureOrder,{id:e.id,syrid:this.userInfo.id}).then((function(t){uni.showToast({title:"\u5df2\u63a5\u5355",icon:"none"}),i.getOrderDetail();var e=getCurrentPages(),s=e[e.length-2];s&&(s.$vm.getOrderNumber(),s.$vm.getOrderList())})).finally((function(){i.clickType=!1})))},startOrder:function(t,e){t.preventDefault(),t.stopPropagation(),this.showInput=!0},onConfirm:function(e){var i=this;this.showInput=!1,this.clickType||(this.clickType=!0,c.default.post(this.urls[this.serviceType].startOrder,{id:this.orderInfo.id,server_code:e,syrid:this.userInfo.id}).then((function(e){if(t("log",e," at pages/syr/userorder-detail.vue:441"),1==e.state){uni.showToast({title:e.msg,icon:"none"}),i.getOrderDetail();var s=getCurrentPages(),a=s[s.length-2];a&&(a.$vm.getOrderNumber(),a.$vm.getOrderList())}else 2==e.state&&uni.showToast({title:e.msg,icon:"none"});i.handelOrder={}})).finally((function(){i.clickType=!1})))},endOrder:function(t,e){var i=this;t.preventDefault(),t.stopPropagation(),this.clickType||(this.clickType=!0,c.default.post(this.urls[this.serviceType].endOrder,{id:e.id,syrid:this.userInfo.id}).then((function(t){if(1==t.state){uni.showToast({title:t.msg,icon:"none"}),i.getOrderDetail();var e=getCurrentPages(),s=e[e.length-2];s&&(s.$vm.getOrderNumber(),s.$vm.getOrderList())}})).finally((function(){i.clickType=!1})))},showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))},contactService:function(e){var i=this;return(0,r.default)(a.default.mark((function s(){var r,c,n,o,u,f,_;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(r=uni.getSystemInfoSync(),"ios"!==r.platform){s.next=5;break}uni.makePhoneCall({phoneNumber:e}),s.next=35;break;case 5:return c="",c="ios"===r.platform?"phone":"android.permission.CALL_PHONE",i.isShowPer=!0,n=!plus.storage.getItem("perm_".concat(c)),n&&(i.isShowPer=!0),s.next=12,l.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 12:if(o=s.sent,u=o.granted,!u){s.next=18;break}return i.isShowPer=!1,uni.makePhoneCall({phoneNumber:e}),s.abrupt("return");case 18:return i.isShowPer=!1,s.next=21,i.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 21:if(f=s.sent,f){s.next=24;break}return s.abrupt("return");case 24:return s.next=26,l.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 26:if(_=s.sent,t("log","result",_," at pages/syr/userorder-detail.vue:565"),!_){s.next=33;break}return uni.makePhoneCall({phoneNumber:e}),s.abrupt("return");case 33:return d.default.openAppSettings(),s.abrupt("return");case 35:case"end":return s.stop()}}),s)})))()},openMap:function(){n.default.goMap({latitude:parseFloat(this.reservation_address_arr.latitude),longitude:parseFloat(this.reservation_address_arr.longitude),name:this.reservation_address_arr.house_number,address:this.reservation_address_arr.server_address})}}};e.default=u}).call(this,i("f3b9")["default"])},7034:function(t,e,i){"use strict";i.r(e);var s=i("8759"),a=i("e931");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"70ba":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","selectTime"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","selectTime-time"),class:t._$s(1,"c",{"selectTime-time-y":t.startTime}),attrs:{_i:1},on:{click:function(e){return t.openPicker(t.startTime,0)}}},[t._v(t._$s(1,"t0-0",t._s(t.startTime||"\u5f00\u59cb\u65f6\u95f4")))]),i("view",{staticClass:t._$s(2,"sc","selectTime-time"),class:t._$s(2,"c",{"selectTime-time-y":t.endTime}),attrs:{_i:2},on:{click:function(e){return t.openPicker(t.endTime,1)}}},[t._v(t._$s(2,"t0-0",t._s(t.endTime||"\u7ed3\u675f\u65f6\u95f4")))]),i("timeDatePicker",{ref:"timePopup",attrs:{timeIndex:t.timeIndex,timeList:t.value,type:t.type,_i:3},on:{confirmTime:t.confirmTime},model:{value:t._$s(3,"v-model",t.timeValue),callback:function(e){t.timeValue=e},expression:"timeValue"}})],1)},a=[]},"70c9":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","message-page"),style:t._$s(0,"s",{paddingTop:t.statusBarHeight+"rpx"}),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","message-header flex-row-center-between"),attrs:{_i:1}},[i("image",{staticClass:t._$s(2,"sc","message-header-left"),attrs:{_i:2}}),i("view",{staticClass:t._$s(3,"sc","message-header-right"),attrs:{_i:3}},[i("image",{staticClass:t._$s(4,"sc","icon-broom"),attrs:{_i:4},on:{click:t.messageReadAll}}),i("view",{staticClass:t._$s(5,"sc","icon-dots"),attrs:{_i:5},on:{click:t.goMessageSetting}},[i("view",{staticClass:t._$s(6,"sc","dot"),attrs:{_i:6}}),i("view",{staticClass:t._$s(7,"sc","dot"),attrs:{_i:7}}),i("view",{staticClass:t._$s(8,"sc","dot"),attrs:{_i:8}})])])]),i("CommonList",{ref:"groupRef",attrs:{apiUrl:"/sj/push/messageList",listScrollHeight:"calc(100vh - "+(t.statusBarHeight+250)+"rpx)",_i:9},scopedSlots:t._u([{key:"listData",fn:function(e,s,a){var r=e.list;return[i("view",{staticClass:s._$s("11-"+a,"sc","message-list"),attrs:{_i:"11-"+a}},t._l(s._$s("12-"+a,"f",{forItems:r}),(function(e,r,c,n){return i("view",{key:s._$s("12-"+a,"f",{forIndex:c,key:r}),staticClass:s._$s("12-"+a+n,"sc","message-item"),attrs:{_i:"12-"+a+n},on:{click:function(i){return t.goOrder(e)}}},[i("view",{staticClass:s._$s("13-"+a+n,"sc","item-content"),attrs:{_i:"13-"+a+n}},[i("view",{staticClass:s._$s("14-"+a+n,"sc","item-header"),attrs:{_i:"14-"+a+n}},[i("view",{staticClass:s._$s("15-"+a+n,"sc","item-title-group"),attrs:{_i:"15-"+a+n}},[i("image",{staticClass:s._$s("16-"+a+n,"sc","item-icon"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/e233f727-e358-4eb2-8e0f-e55f95728dc2.png",mode:"aspectFit",_i:"16-"+a+n}}),i("text",{staticClass:s._$s("17-"+a+n,"sc","item-title"),attrs:{_i:"17-"+a+n}},[t._v(s._$s("17-"+a+n,"t0-0",t._s(e.title)))])]),i("view",{staticClass:s._$s("18-"+a+n,"sc","flex-row-center"),attrs:{_i:"18-"+a+n}},[i("text",{staticClass:s._$s("19-"+a+n,"sc","item-time"),attrs:{_i:"19-"+a+n}},[t._v(s._$s("19-"+a+n,"t0-0",t._s(e.send_time)))]),s._$s("20-"+a+n,"i",2==e.is_read)?i("view",{staticClass:s._$s("20-"+a+n,"sc","item-dot"),attrs:{_i:"20-"+a+n}}):t._e()])]),i("view",{staticClass:s._$s("21-"+a+n,"sc","item-body"),attrs:{_i:"21-"+a+n}},[i("view",{staticClass:s._$s("22-"+a+n,"sc","item-info"),attrs:{_i:"22-"+a+n}},[i("text",{staticClass:s._$s("23-"+a+n,"sc","item-desc"),attrs:{_i:"23-"+a+n}},[t._v(s._$s("23-"+a+n,"t0-0",t._s(e.desc)))])]),i("image",{staticClass:s._$s("24-"+a+n,"sc","item-product-img"),attrs:{src:s._$s("24-"+a+n,"a-src",e.ext.data.order_photo),mode:"aspectFill",_i:"24-"+a+n}})])])])})),0)]}},{key:"empty",fn:function(t,e,s){return[i("noData",{attrs:{_i:"26-"+s}})]}}])}),i("TabBar",{attrs:{selected:1,_i:27}})],1)},r=[]},7149:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,uvSwitch:i("b32f").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","settings-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u8ba2\u5355\u6d88\u606f\u8bbe\u7f6e",showBack:!0,_i:1}}),i("view",{staticClass:t._$s(2,"sc","settings-title"),attrs:{_i:2}},[i("text"),i("image",{staticClass:t._$s(4,"sc","settings-title-tip"),attrs:{_i:4},on:{click:function(e){t.showGuideDialog=!0}}})]),i("view",{staticClass:t._$s(5,"sc","settings-cards"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","settings-card card-line flex-row-center-between"),attrs:{_i:6}},[i("view",[i("view",{staticClass:t._$s(8,"sc","card-heard flex-row-center-between"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","card-heard-left flex-row-center"),attrs:{_i:9}},[i("text",{staticClass:t._$s(10,"sc","card-heard-left-text"),attrs:{_i:10}})])])]),i("uv-switch",{attrs:{activeColor:"#E8101E",_i:11},on:{change:function(e){return t.handleSwitchChange("total",t.mainSwitch,e)}},model:{value:t._$s(11,"v-model",t.mainSwitch.switch),callback:function(e){t.$set(t.mainSwitch,"switch",e)},expression:"mainSwitch.switch"}})],1)]),t._$s(12,"i",t.kindList.length)?i("view",{staticClass:t._$s(12,"sc","settings-title"),attrs:{_i:12}}):t._e(),i("view",{staticClass:t._$s(13,"sc","settings-cards"),attrs:{_i:13}},t._l(t._$s(14,"f",{forItems:t.kindList}),(function(e,s,a,r){return i("view",{key:t._$s(14,"f",{forIndex:a,key:s}),staticClass:t._$s("14-"+r,"sc","settings-card card-line flex-row-center-between"),attrs:{_i:"14-"+r}},[i("view",[i("view",{staticClass:t._$s("16-"+r,"sc","card-heard flex-row-center-between"),attrs:{_i:"16-"+r}},[i("view",{staticClass:t._$s("17-"+r,"sc","card-heard-left flex-row-center"),attrs:{_i:"17-"+r}},[i("text",{staticClass:t._$s("18-"+r,"sc","card-heard-left-text"),attrs:{_i:"18-"+r}},[t._v(t._$s("18-"+r,"t0-0",t._s(e.second_kind)))])])]),i("view",{staticClass:t._$s("19-"+r,"sc","card-tip"),attrs:{_i:"19-"+r}},[t._v(t._$s("19-"+r,"t0-0",t._s(e.text)))])]),i("uv-switch",{attrs:{activeColor:"#E8101E",_i:"20-"+r},on:{change:function(i){return t.handleSwitchChange("branch",e,i)}},model:{value:t._$s("20-"+r,"v-model",e.switch),callback:function(i){t.$set(e,"switch",i)},expression:"item.switch"}})],1)})),0),t._$s(21,"i",t.showGuideDialog)?i("view",{staticClass:t._$s(21,"sc","dialog-mask"),attrs:{_i:21},on:{click:t.closeGuideDialog,touchmove:function(t){t.preventDefault()}}},[i("view",{staticClass:t._$s(22,"sc","dialog-container"),class:t._$s(22,"c",{"dialog-show":t.showGuideDialog,"dialog-hide":!t.showGuideDialog}),attrs:{_i:22},on:{click:function(t){t.stopPropagation()}}},[i("view",{staticClass:t._$s(23,"sc","dialog-title"),attrs:{_i:23}}),i("view",{staticClass:t._$s(24,"sc","dialog-desc"),attrs:{_i:24}}),i("image",{staticClass:t._$s(25,"sc","dialog-illustration"),attrs:{_i:25}}),i("view",{staticClass:t._$s(26,"sc","dialog-btn"),attrs:{_i:26},on:{click:function(e){return e.stopPropagation(),t.closeGuideDialog(e)}}},[i("text",{staticClass:t._$s(27,"sc","dialog-btn-text"),attrs:{_i:27}})])])]):t._e()],1)},r=[]},7172:function(t,e){t.exports=function(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var s,a,r,c,n=[],o=!0,d=!1;try{if(r=(i=i.call(t)).next,0===e){if(Object(i)!==i)return;o=!1}else for(;!(o=(s=r.call(i)).done)&&(n.push(s.value),n.length!==e);o=!0);}catch(t){d=!0,a=t}finally{try{if(!o&&null!=i["return"]&&(c=i["return"](),Object(c)!==c))return}finally{if(d)throw a}}return n}},t.exports.__esModule=!0,t.exports["default"]=t.exports},7191:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"AgreeRadio",props:{isAgree:{type:Boolean,default:!1},yesImg:{type:String,default:"/static/images/agree_y.png"},noImg:{type:String,default:"/static/images/agree_n.png"},radioSize:{type:String,default:"32rpx"}},data:function(){return{}},methods:{changeAgree:function(t){this.$emit("change-agree",t)}}};e.default=s},7219:function(t,e,i){"use strict";i.r(e);var s=i("31df"),a=i("4860");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},7292:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c=s(i("a621")),n={name:"uv-radio-group",mixins:[a.default,r.default,c.default],computed:{parentData:function(){var t=this.value||this.modelValue;return[t,this.disabled,this.inactiveColor,this.activeColor,this.size,this.labelDisabled,this.shape,this.iconSize,this.borderBottom,this.placement]},bemClass:function(){return this.bem("radio-group",["placement"])}},watch:{parentData:function(){this.children.length&&this.children.map((function(t){"function"===typeof t.init&&t.init()}))}},data:function(){return{}},created:function(){this.children=[]},methods:{unCheckedOther:function(t){this.children.map((function(e){t!==e&&(e.checked=!1)}));var e=t.name;this.$emit("input",e),this.$emit("change",e)}}};e.default=n},7307:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("af34")),c=s(i("ee10")),n=s(i("16bb")),o={data:function(){var t=new Date;return{state:[3,4,5,6,7],isRefreshing:!1,hasMore:!0,currentYear:t.getFullYear(),currentMonth:t.getMonth()+1,orderList:[],artisanType:getApp().globalData.artisanType}},computed:{nextMonthText:function(){var t=this.currentYear,e=this.currentMonth-1;return 0===e&&(t--,e=12),"".concat(t,"\u5e74").concat(e,"\u6708")}},onLoad:function(){this.loadOrders()},onPullDownRefresh:function(){this.onRefresh()},methods:{formatDate:function(t){return"".concat(t.getFullYear(),"\u5e74").concat(t.getMonth()+1,"\u6708").concat(t.getDate(),"\u53f7")},onRefresh:function(){var t=this;return(0,c.default)(a.default.mark((function e(){var i;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t.isRefreshing=!0,i=new Date,t.currentYear=i.getFullYear(),t.currentMonth=i.getMonth()+1,e.next=6,t.loadOrders();case 6:uni.stopPullDownRefresh(),t.isRefreshing=!1;case 8:case"end":return e.stop()}}),e)})))()},loadMore:function(){var t=this;return(0,c.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.loadOrders();case 2:case"end":return e.stop()}}),e)})))()},loadPreviousMonth:function(){var e=this;return(0,c.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:uni.showLoading({title:"\u52a0\u8f7d\u4e2d..."});try{1===e.currentMonth?(e.currentYear--,e.currentMonth=12):e.currentMonth--,s=e.currentMonth<10?"0"+e.currentMonth:e.currentMonth,t("log",e.currentYear+"-"+s," at pages/order/all-orders.vue:163"),n.default.post("/user/syrandsjorders",{state:e.state,type:e.artisanType,add_time:e.currentYear+"-"+s}).then((function(i){e.orderList=[].concat((0,r.default)(e.orderList),(0,r.default)(i.data)),t("log",e.orderList,i.data," at pages/order/all-orders.vue:169")}))}catch(a){uni.showToast({title:"\u52a0\u8f7d\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5",icon:"none"})}finally{uni.hideLoading()}case 2:case"end":return i.stop()}}),i)})))()},loadOrders:function(){var t=this;return(0,c.default)(a.default.mark((function e(){var i;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return i=t.currentMonth<10?"0"+t.currentMonth:t.currentMonth,e.abrupt("return",new Promise((function(e){n.default.post("/user/syrandsjorders",{state:t.state,type:t.artisanType,add_time:t.currentYear+"-"+i}).then((function(i){t.orderList=i.data,e(i.data)}))})));case 2:case"end":return e.stop()}}),e)})))()}}};e.default=o}).call(this,i("f3b9")["default"])},"73bd":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","filter"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","filter-panel"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","filter-tabs"),attrs:{_i:2}},t._l(t._$s(3,"f",{forItems:t.tabOptions}),(function(e,s,a,r){return i("view",{key:t._$s(3,"f",{forIndex:a,key:s}),staticClass:t._$s("3-"+r,"sc","tab-item"),class:t._$s("3-"+r,"c",{active:t.activeTab===e.value}),attrs:{_i:"3-"+r},on:{click:function(i){return t.handleTabClick(e.value)}}},[t._v(t._$s("3-"+r,"t0-0",t._s(e.label))),t._$s("4-"+r,"i",t.activeTab!=e.value)?i("image",{staticClass:t._$s("4-"+r,"sc","sq-icon"),attrs:{_i:"4-"+r}}):i("image",{staticClass:t._$s("5-"+r,"sc","sq-icon"),attrs:{_i:"5-"+r}})])})),0),i("view",{staticClass:t._$s(6,"sc","filter-pop"),class:t._$s(6,"c",{show:t.activeTab,hide:!t.activeTab}),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","filter-content"),attrs:{_i:7}},[t._$s(8,"i","time"==t.popTab)?i("view",{staticClass:t._$s(8,"sc","filter-group"),attrs:{_i:8}},t._l(t._$s(9,"f",{forItems:t.dateOptions}),(function(e,s,a,r){return i("view",{key:t._$s(9,"f",{forIndex:a,key:s}),staticClass:t._$s("9-"+r,"sc","filter-item"),class:t._$s("9-"+r,"c",{active:e.value===t.selectedDate}),attrs:{_i:"9-"+r},on:{click:function(i){return t.selectDate(e.value)}}},[t._v(t._$s("9-"+r,"t0-0",t._s(e.label)))])})),0):t._e(),t._$s(10,"i","distance"==t.popTab)?i("view",{staticClass:t._$s(10,"sc","filter-group"),attrs:{_i:10}},t._l(t._$s(11,"f",{forItems:t.distanceOptions}),(function(e,s,a,r){return i("view",{key:t._$s(11,"f",{forIndex:a,key:s}),staticClass:t._$s("11-"+r,"sc","distance-item"),class:t._$s("11-"+r,"c",{active:e.value===t.selectedDistance}),attrs:{_i:"11-"+r},on:{click:function(i){return t.selectDistance(e.value)}}},[t._v(t._$s("11-"+r,"t0-0",t._s(e.label)))])})),0):t._e()]),i("view",{staticClass:t._$s(12,"sc","filter-buttons"),attrs:{_i:12}},[i("view",{staticClass:t._$s(13,"sc","reset-btn"),attrs:{_i:13},on:{click:t.reset}}),i("view",{staticClass:t._$s(14,"sc","confirm-btn"),attrs:{_i:14},on:{click:t.confirm}})])]),t._$s(15,"i",t.activeTab)?i("view",{staticClass:t._$s(15,"sc","popup-mask"),attrs:{_i:15},on:{click:t.closeAllPopups,touchmove:function(t){t.preventDefault(),t.stopPropagation()}}}):t._e()])])},a=[]},"73eb":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","search"),style:t._$s(0,"s",{background:t.bgClor}),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","search-right"),style:t._$s(1,"s",{width:t.width,height:t.height,border:t.border}),attrs:{_i:1}},[i("input",{staticClass:t._$s(2,"sc","search-inp"),attrs:{placeholder:t._$s(2,"a-placeholder",t.placeholder),value:t._$s(2,"a-value",t.value),_i:2},on:{input:t.onInput,confirm:t.onConfirm}}),i("view",{staticClass:t._$s(3,"sc","btn_search"),attrs:{_i:3},on:{click:function(e){return e.stopPropagation(),t.onSearch(e)}}}),i("image",{staticClass:t._$s(4,"sc","search-icon"),attrs:{_i:4},on:{click:function(e){return e.stopPropagation(),t.onSearch(e)}}})]),t._$s(5,"i",t.showAdd)?i("view",{staticClass:t._$s(5,"sc","search-add"),attrs:{_i:5},on:{click:function(e){return t.$emit("add")}}},[i("image",{staticClass:t._$s(6,"sc","add-icon"),attrs:{_i:6}}),i("view",{staticClass:t._$s(7,"sc","add-text"),attrs:{_i:7}},[i("text")])]):t._e()])},a=[]},7423:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","editPassword"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u8bbe\u7f6e\u5bc6\u7801",showBack:!0,borderBottom:"none",backgroundColor:"transparent",_i:1}}),i("view",{staticClass:t._$s(2,"sc","password-title"),attrs:{_i:2}},[i("text")]),i("view",{staticClass:t._$s(4,"sc","password-tip"),attrs:{_i:4}},[i("text",[i("text")])]),i("view",{staticClass:t._$s(7,"sc","newPassword"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","password-text"),attrs:{_i:8}}),i("view",{staticClass:t._$s(9,"sc","input-item"),attrs:{_i:9}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.newPassword,expression:"newPassword"}],staticClass:t._$s(10,"sc","input-text"),attrs:{password:t._$s(10,"a-password",!t.showNewPassword),_i:10},domProps:{value:t._$s(10,"v-model",t.newPassword)},on:{input:[function(e){e.target.composing||(t.newPassword=e.target.value)},t.checkPwdError]}}),t._$s(11,"i",!t.showNewPassword)?i("image",{staticClass:t._$s(11,"sc","look-icon"),attrs:{_i:11},on:{click:function(e){e.stopPropagation(),t.showNewPassword=!0}}}):i("image",{staticClass:t._$s(12,"sc","look-icon"),attrs:{_i:12},on:{click:function(e){e.stopPropagation(),t.showNewPassword=!1}}})]),t._$s(13,"i",t.pwdErrorMsg)?i("text",{staticClass:t._$s(13,"sc","pwd-error"),attrs:{_i:13}},[t._v(t._$s(13,"t0-0",t._s(t.pwdErrorMsg)))]):t._e()]),i("view",{staticClass:t._$s(14,"sc","surePassword"),attrs:{_i:14}},[i("view",{staticClass:t._$s(15,"sc","password-text"),attrs:{_i:15}}),i("view",{staticClass:t._$s(16,"sc","input-item"),attrs:{_i:16}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.surePassword,expression:"surePassword"}],staticClass:t._$s(17,"sc","input-text"),attrs:{password:t._$s(17,"a-password",!t.showSurePassword),_i:17},domProps:{value:t._$s(17,"v-model",t.surePassword)},on:{input:[function(e){e.target.composing||(t.surePassword=e.target.value)},t.checkPwdError]}}),t._$s(18,"i",!t.showSurePassword)?i("image",{staticClass:t._$s(18,"sc","look-icon"),attrs:{_i:18},on:{click:function(e){e.stopPropagation(),t.showSurePassword=!0}}}):i("image",{staticClass:t._$s(19,"sc","look-icon"),attrs:{_i:19},on:{click:function(e){e.stopPropagation(),t.showSurePassword=!1}}})]),t._$s(20,"i",!t.pwdErrorMsg&&t.newPassword&&t.surePassword&&t.newPassword!==t.surePassword)?i("text",{staticClass:t._$s(20,"sc","pwd-error"),attrs:{_i:20}}):t._e()]),i("view",{staticClass:t._$s(21,"sc","select-serve-footer"),attrs:{_i:21}},[i("view",{staticClass:t._$s(22,"sc","select-serve-footer__btn"),class:t._$s(22,"c",{active:t.canSubmit}),attrs:{_i:22},on:{click:t.submit}})])],1)},r=[]},"746b":function(t,e,i){"use strict";i.r(e);var s=i("05fc"),a=i("ab07");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"227f8d14",null,!1,s["a"],void 0);e["default"]=n.exports},"74d0":function(t,e,i){"use strict";i.r(e);var s=i("2b56"),a=i("c9fb");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},7516:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n={data:function(){return{imgVideoList:[],type:2,class_type:4,isManage:!1,selectedItems:[]}},onShow:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.getList();case 2:case"end":return e.stop()}}),e)})))()},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:t.type&&(e.type=t.type),t.id&&(e.class_type=t.id);case 2:case"end":return i.stop()}}),i)})))()},methods:{toggleManage:function(){this.isManage=!this.isManage,this.isManage||(this.selectedItems=[])},toggleSelect:function(e){t("log",1111,e," at pages/shop/photoAlbum/videoList.vue:111"),this.selectedItems.includes(e)?this.selectedItems=this.selectedItems.filter((function(t){return t!==e})):this.selectedItems.push(e)},handleDelete:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r,n;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return s=e.selectedItems.map((function(t){return e.imgVideoList[t].id})),r=e.selectedItems.map((function(t){return e.imgVideoList[t].auth_id})).filter((function(t){return 0!==t})),t("log",1111,s,r,[1,6]," at pages/shop/photoAlbum/videoList.vue:125"),i.prev=3,i.next=6,c.default.post("/sj/imgVideo/del",{ids:s,auth_ids:r});case 6:if(n=i.sent,200!=n.code){i.next=15;break}return uni.showToast({title:"\u5220\u9664\u6210\u529f",icon:"success"}),i.next=11,e.getList();case 11:e.isManage=!1,e.selectedItems=[],i.next=16;break;case 15:uni.showToast({title:"\u5220\u9664\u5931\u8d25",icon:"none"});case 16:i.next=21;break;case 18:i.prev=18,i.t0=i["catch"](3),uni.showToast({title:"\u5220\u9664\u5931\u8d25",icon:"none"});case 21:case"end":return i.stop()}}),i,null,[[3,18]])})))()},goAdd:function(t,e){if(!this.isManage){if(1==this.type){if(this.imgVideoList.length>=20)return void uni.showToast({title:"\u6700\u591a\u4e0a\u4f2020\u5f20\u56fe\u7247",icon:"none",duration:2e3})}else if(2==this.type&&this.imgVideoList.length>=10)return void uni.showToast({title:"\u6700\u591a\u4e0a\u4f2010\u5f20\u89c6\u9891",icon:"none",duration:2e3});if(t){var i="/pages/shop/photoAlbum/addPhoto?id=".concat(t,"&type=").concat(this.type);e&&(i+="&item=".concat(encodeURIComponent(JSON.stringify(e)))),uni.navigateTo({url:i})}else uni.showToast({title:"\u53c2\u6570\u5f02\u5e38\uff0c\u65e0\u6cd5\u4e0a\u4f20",icon:"none",duration:2e3})}},getItem:function(t){var e={name:"",url:""};return 1==t.apply_state?(e.url=t.auth_url,e.name=t.auth_name):(e.url=t.url||t.auth_url,e.name=t.name||t.auth_name),2==t.type&&(e.url=e.url+"?x-oss-process=video/snapshot,t_1000,m_fast,f_jpg,w_600,ar_auto"),e},getList:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,c.default.post("/sj/imgVideo/list",{type:t.type,class_type:t.class_type}).then((function(e){200==e.code&&(t.imgVideoList=e.data.list[t.type][t.class_type])}));case 2:case"end":return e.stop()}}),e)})))()}}};e.default=n}).call(this,i("f3b9")["default"])},"751b":function(t,e,i){"use strict";i.r(e);var s=i("ec38f"),a=i("b588");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"158c590a",null,!1,s["a"],void 0);e["default"]=n.exports},"755f":function(t,e,i){"use strict";i.r(e);var s=i("926b"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},7567:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("16bb")),r={name:"ServeCard",props:{},computed:{},data:function(){return{info:[],apiObj:{urls:{2:"/user/sjserverlist",1:"/user/syrserverlist"}},identityIndex:getApp().globalData.artisanType}},created:function(){this.identityIndex&&this.getServeList()},methods:{selectType:function(t){t.disabled=!t.disabled},getServeList:function(){var e=this;a.default.post(this.apiObj.urls[this.identityIndex],{state:2,is_promotion:1}).then((function(i){e.info=i.data,e.info.forEach((function(t){e.$set(t,"disabled",!1)})),t("log",e.info," at pages/promotion/components/serveList.vue:79")}))},getSelectedItems:function(){return this.info.filter((function(t){return!0===t.disabled}))}}};e.default=r}).call(this,i("f3b9")["default"])},7637:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this.$createElement,e=this._self._c||t;return e("view",{staticClass:this._$s(0,"sc","uv-status-bar"),style:this._$s(0,"s",[this.style]),attrs:{_i:0}},[this._t("default",null,{_i:1})],2)},a=[]},7652:function(t,e,i){"use strict";i.r(e);var s=i("2c2a"),a=i("aefa");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},7689:function(t,e,i){"use strict";i.r(e);var s=i("9979"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"778d":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e=t.selectedTimeIndex&&s<=t.selectedTimeIndex+t.serviceTimeNum&&t.sureTimeDataIndex===t.selectedDateIndex&&null!==t.selectedTimeIndex}]),attrs:{_i:"13-"+r},on:{click:function(i){return t.selectTime(e,s)}}},[i("text",{staticClass:t._$s("14-"+r,"sc","time-picker-content__time__list__item__text"),attrs:{_i:"14-"+r}},[t._v(t._$s("14-"+r,"t0-0",t._s(e.show_time)))])])})),0):t._e()]),i("view",{staticClass:t._$s(15,"sc","time-picker-content__time__sure"),attrs:{_i:15}},[i("view",{staticClass:t._$s(16,"sc","time-picker-content__time__sure__box"),attrs:{_i:16},on:{click:t.sureTime}},[i("text",{staticClass:t._$s(17,"sc","time-picker-content__time__sure__box__text"),attrs:{_i:17}})])])])])])},r=[]},"79a4":function(t,e,i){"use strict";i.r(e);var s=i("6cd0"),a=i("360f");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"02271967",null,!1,s["a"],void 0);e["default"]=n.exports},"79a8":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("af34")),c=s(i("ee10")),n=s(i("16bb")),o=s(i("bbca")),d=s(i("e26b")),l={data:function(){return{clickType:!1,startItem:null,showInput:!1,state:void 0,currentTab:0,tabs:[{id:void 0,text:"\u5168\u90e8"},{id:2,text:"\u5f85\u63a5\u5355"},{id:3,text:"\u5f85\u670d\u52a1"},{id:4,text:"\u670d\u52a1\u4e2d"},{id:5,text:"\u5df2\u5b8c\u6210"},{id:7,text:"\u5df2\u53d6\u6d88"}],services:[],hasMore:!1,startX:0,moveX:0,currentIndex:-1,count:0,isLoad:!0,page:1,limit:10}},components:{orderCard:o.default,serviceCodeInput:d.default},onLoad:function(){this.getServicesList()},onPullDownRefresh:function(){this.getServicesList()},onReachBottom:function(){var e=this;return(0,c.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(t("log","onReachBottom"," at pages/syr/manHour/saleList.vue:96"),!(e.count<=e.page*e.limit)&&e.isLoad){i.next=3;break}return i.abrupt("return");case 3:e.page++,e.getServicesList(!1);case 5:case"end":return i.stop()}}),i)})))()},methods:{getServicesList:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.isLoad=!1,e&&(this.page=1,this.limit=10);var i="/syr/workHourOrder/list";n.default.post(i,{state:this.state,page:this.page,limit:this.limit}).then((function(i){e?(t.services=i.data.list,t.count=i.data.count):(t.services=[].concat((0,r.default)(t.services),(0,r.default)(i.data.list)),t.count=i.data.count)})).finally((function(){t.isLoad=!0,uni.stopPullDownRefresh()}))},switchTab:function(t,e){this.currentTab=t,this.state=e,this.getServicesList()},cancel:function(e){var i=this;uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f\uff08\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u652f\u4ed8\u91d1\u989d\u5c06\u539f\u8def\u9000\u56de\uff09",success:function(s){if(s.confirm){var a;a={orderNo:e.number,amount:e.pay_money,sjid:e.id};var r="";if(1==e.pay_kind?r="":2==e.pay_kind?r="/syr/workHourOrder/weChatRefund":3==e.pay_kind&&(r="/syr/workHourOrder/aliRefund"),i.clickType)return;i.clickType=!0,n.default.post(r,a).then((function(t){1!=t.state&&1!=t.code&&200!=t.code||i.getServicesList()})).catch((function(e){return t("log",e," at pages/syr/manHour/saleList.vue:168")})).finally((function(){i.clickType=!1}))}}})},startServe:function(t){this.startItem=t,this.showInput=!0},accept:function(t){var e=this;this.clickType||(this.clickType=!0,n.default.post("/syr/workHourOrder/sure",{id:t.id}).then((function(t){uni.showToast({title:"\u5df2\u63a5\u5355",icon:"none"}),200==t.code&&e.getServicesList()})).finally((function(){e.clickType=!1})))},goDetail:function(t){uni.navigateTo({url:"/pages/shop/SellerDetail?id=".concat(t.id,"&identity=1")})},done:function(t){var e=this;this.clickType||(this.clickType=!0,n.default.post("/syr/workHourOrder/end",{id:t.id}).then((function(t){200==t.code&&e.getServicesList()})).finally((function(){e.clickType=!1})))},onConfirm:function(t){var e=this;this.showInput=!1,this.clickType||(this.clickType=!0,n.default.post("/syr/workHourOrder/start",{id:this.startItem.id,server_code:t}).then((function(t){200==t.code&&e.getServicesList()})).finally((function(){e.clickType=!1})))}}};e.default=l}).call(this,i("f3b9")["default"])},"79c6":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this.$createElement,e=this._self._c||t;return e("view",{staticClass:this._$s(0,"sc","uv-safe-bottom"),class:this._$s(0,"c",[!this.isNvue&&"uv-safe-area-inset-bottom"]),style:this._$s(0,"s",[this.style]),attrs:{_i:0}})},a=[]},"79c9":function(t,e,i){"use strict";i.r(e);var s=i("1b52"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"7a08":function(t,e,i){"use strict";i.r(e);var s=i("291da"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"7a1a":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c={name:"CircleProgress",props:{progress:{type:Number,default:0,validator:function(t){return t>=0&&t<=100}},size:{type:Number,default:200},strokeWidth:{type:Number,default:10},color:{type:String,default:"#E8101E"},backgroundColor:{type:String,default:"#F5F5F5"},showText:{type:Boolean,default:!0},animation:{type:Boolean,default:!0},duration:{type:Number,default:1e3}},data:function(){return{canvasId:"circleProgress_"+Math.random().toString(36).substr(2,9),ctx:null,canvas:null,animationFrame:null,currentProgress:0,canvasType:"2d"}},watch:{progress:{handler:function(t){this.animation?this.animateProgress(t):(this.currentProgress=t,this.drawProgress())},immediate:!0}},mounted:function(){this.initCanvas()},beforeDestroy:function(){this.animationFrame&&cancelAnimationFrame(this.animationFrame)},methods:{initCanvas:function(){var t=this;return(0,r.default)(a.default.mark((function e(){var i;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:i=uni.createSelectorQuery().in(t),i.select("#".concat(t.canvasId)).fields({node:!0,size:!0}).exec((function(e){if(e[0]&&(t.canvas=e[0].node,t.canvas&&(t.ctx=t.canvas.getContext("2d"),t.ctx))){var i=uni.getSystemInfoSync().pixelRatio;t.canvas.width=t.size*i,t.canvas.height=t.size*i,t.ctx.scale(i,i),t.currentProgress=t.progress,t.drawProgress()}}));case 2:case"end":return e.stop()}}),e)})))()},drawProgress:function(){if(this.ctx){var t=this.size/2,e=(this.size-this.strokeWidth)/2;if(this.ctx.clearRect(0,0,this.size,this.size),this.ctx.beginPath(),this.ctx.arc(t,t,e,0,2*Math.PI),this.ctx.strokeStyle=this.backgroundColor,this.ctx.lineWidth=this.strokeWidth,this.ctx.lineCap="round",this.ctx.stroke(),this.currentProgress>0){var i=this.currentProgress/100*Math.PI*2,s=this.ctx.createLinearGradient(0,0,this.size,0);s.addColorStop(0,this.color),s.addColorStop(1,this.color),this.ctx.beginPath(),this.ctx.arc(t,t,e,-Math.PI/2,i-Math.PI/2),this.ctx.strokeStyle=s,this.ctx.lineWidth=this.strokeWidth,this.ctx.lineCap="round",this.ctx.stroke(),this.ctx.shadowColor=this.color,this.ctx.shadowBlur=10,this.ctx.stroke(),this.ctx.shadowBlur=0}}},animateProgress:function(t){var e=this;this.animationFrame&&cancelAnimationFrame(this.animationFrame);var i=this.currentProgress,s=Date.now();(function a(){var r=Date.now(),c=r-s;if(c>=e.duration)return e.currentProgress=t,void e.drawProgress();var n=function(t){return 1-Math.pow(1-t,4)}(c/e.duration);e.currentProgress=i+(t-i)*n,e.drawProgress(),e.animationFrame=requestAnimationFrame(a)})()}}};e.default=c},"7a6f":function(t,e,i){"use strict";i.r(e);var s=i("2891"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"7ac4":function(t,e,i){"use strict";i.r(e);var s=i("ef0a"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"7ae6":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=(s(i("c3a6")),{name:"uploadAppVue",data:function(){return{version:null,updateProgress:0,newVersion:null,updateAPKPath:"",is_force:0,startUpload:!1,down_type:null,apkUpdateContent:"",updateType:"",versionsFlag:1,latestVersionInfo:"",restartFlag:!1,show:!0}},props:{isHome:{type:Boolean,default:!0}},created:function(){},mounted:function(){this.isHome&&this.uploadApp()},methods:{Updatelater:function(){var t=Date.now();uni.setStorageSync("updatelaterTime",t),this.$refs.popup.close()},UpdateNow:function(){1==this.down_type?plus.runtime.openURL(this.updateAPKPath):2==this.down_type&&(this.startUpload=!0,this.uploadAppDowlond())},uploadAppDowlond:function(){var e=this,i=uni.downloadFile({url:this.updateAPKPath,success:function(t){200===t.statusCode&&plus.runtime.install(t.tempFilePath,{force:!1},(function(){plus.runtime.restart()}),(function(t){}))}});i.onProgressUpdate((function(i){e.updateProgress=i.progress,t("log","\u4e0b\u8f7d\u8fdb\u5ea6"+i.progress," at components/upload-app/upload-app.vue:168"),t("log","\u5df2\u7ecf\u4e0b\u8f7d\u7684\u6570\u636e\u957f\u5ea6"+i.totalBytesWritten," at components/upload-app/upload-app.vue:169"),t("log","\u9884\u671f\u9700\u8981\u4e0b\u8f7d\u7684\u6570\u636e\u603b\u957f\u5ea6"+i.totalBytesExpectedToWrite," at components/upload-app/upload-app.vue:170")}))},uploadApp:function(e){var i=this;return(0,r.default)(a.default.mark((function s(){var r,c;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return s.prev=0,s.next=3,i.getVersionNum();case 3:if(i.version){s.next=5;break}return s.abrupt("return");case 5:return s.next=7,i.getUpdateInfo();case 7:if(r=Date.now(),c=uni.getStorageSync("updatelaterTime")||0,!(Math.abs(r-c)<864e5&&1!=i.is_force&&"setting"!=e)){s.next=11;break}return s.abrupt("return");case 11:i.newVersion?(uni.hideTabBar(),i.$refs.popup.open("center")):"setting"==e&&uni.showToast({title:"\u5f53\u524d\u5df2\u662f\u6700\u65b0\u7248\u672c",icon:"none"}),s.next=17;break;case 14:s.prev=14,s.t0=s["catch"](0),t("error","\u68c0\u67e5\u66f4\u65b0\u5931\u8d25:",s.t0," at components/upload-app/upload-app.vue:217");case 17:case"end":return s.stop()}}),s,null,[[0,14]])})))()},getVersionNum:function(){var t=uni.getSystemInfoSync();return this.version=t.appWgtVersion,this.version},getUpdateInfo:function(){var t=this;return(0,r.default)(a.default.mark((function e(){var i,s,r,n,o,d;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,c.default.post("/sj/getAppVersion");case 2:d=e.sent,t.newVersion=null===(i=d.data)||void 0===i?void 0:i.version,t.updateAPKPath=null===(s=d.data)||void 0===s?void 0:s.url,t.is_force=null===(r=d.data)||void 0===r?void 0:r.is_force,t.down_type=null===(n=d.data)||void 0===n?void 0:n.down_type,t.apkUpdateContent=null===(o=d.data)||void 0===o?void 0:o.explain;case 8:case"end":return e.stop()}}),e)})))()},compareVersion:function(t,e){for(var i=t.split(".").map(Number),s=e.split(".").map(Number),a=0;ac)return!1}return!1}}});e.default=n}).call(this,i("f3b9")["default"])},"7af9":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("668a")),o=s(i("eae7")),d=s(i("91d2")),l=s(i("32a4")),u={data:function(){return{userInfo:{},indicatorStyle:"height: 68rpx;",baseAvartar:"https://app.mrrweb.com.cn/public/images/headanimal.png",showLocationPopupFlag:!1,locatinCitys:[],locationValue:[],locationAreas:[],ChinaCitys:"",isShowPer:!1,nowQer:"xc"}},onLoad:function(){this.ChinaCitys=n.default,this.locatinCitys=this.ChinaCitys[0].citys,this.locationAreas=this.locatinCitys[0].areas,this.getUserInfo()},methods:{getUserInfo:function(){var e=this;c.default.post("/user/getuser",{type:1}).then((function(i){e.userInfo=i.data,t("log",i," at pages/my/profile.vue:143")}))},hideLocationPopup:function(){this.showLocationPopupFlag=!1},confirmLocationSelect:function(){var t=this.locationValue,e=t[0]||0,i=t[1]||0,s=t[2]||0,a=this.ChinaCitys[e].province,r=this.locatinCitys[i].city,c=this.locationAreas[s].area;this.userInfo.dependency=a+"-"+r+"-"+c,this.showLocationPopupFlag=!1},bindChangeLocation:function(t){this.locationValue=t.detail.value;var e=t.detail.value[0]||0,i=t.detail.value[1]||0;this.locatinCitys=this.ChinaCitys[e].citys,this.locationAreas=this.locatinCitys[i].areas},goBack:function(){uni.navigateBack()},chooseAvatar:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r,c,n,o,u,f,_,p,v;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(i.prev=0,s=uni.getSystemInfoSync(),"ios"!==s.platform){i.next=6;break}e.openCamera(),i.next=37;break;case 6:return r="",c="","ios"===s.platform?(r="photo_library",c="camera"):(r="android.permission.READ_EXTERNAL_STORAGE,android.permission.WRITE_EXTERNAL_STORAGE",c="android.permission.CAMERA"),n=!plus.storage.getItem("perm_".concat(r)),o=!plus.storage.getItem("perm_".concat(c)),(n||o)&&(e.isShowPer=!0),e.nowQer="xc",i.next=15,d.default.checkPermission("photo_library","\u9700\u8981\u76f8\u518c\u6743\u9650\u7528\u4e8e\u4e0a\u4f20\u7167\u7247");case 15:return u=i.sent,e.nowQer="xj",i.next=19,d.default.checkPermission("camera","\u9700\u8981\u76f8\u673a\u6743\u9650\u7528\u4e8e\u62cd\u6444\u7167\u7247");case 19:if(f=i.sent,e.isShowPer=!1,e.nowQer="",!u.granted||!f.granted){i.next=25;break}return e.openCamera(),i.abrupt("return");case 25:return i.next=27,e.showPermissionDialog("\u76f8\u673a\u76f8\u518c\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u8bbf\u95ee\u60a8\u7684\u76f8\u673a\u4ee5\u53ca\u76f8\u518c\u4ee5\u5b8c\u6210\u66f4\u6362\u5934\u50cf\u529f\u80fd");case 27:if(_=i.sent,_){i.next=30;break}return i.abrupt("return");case 30:return i.next=32,d.default.requestPermission("photo_library","\u6211\u4eec\u9700\u8981\u8bbf\u95ee\u60a8\u7684\u76f8\u518c\u4ee5\u4e0a\u4f20\u56fe\u7247");case 32:return p=i.sent,i.next=35,d.default.requestPermission("camera","\u6211\u4eec\u9700\u8981\u8bbf\u95ee\u60a8\u7684\u76f8\u673a\u4ee5\u4e0a\u4f20\u56fe\u7247");case 35:v=i.sent,p&&v?e.openCamera():l.default.openAppSettings();case 37:i.next=43;break;case 39:i.prev=39,i.t0=i["catch"](0),t("error","\u6743\u9650\u5904\u7406\u51fa\u9519:",i.t0," at pages/my/profile.vue:233"),uni.showToast({title:"\u6743\u9650\u68c0\u67e5\u5931\u8d25",icon:"none"});case 43:case"end":return i.stop()}}),i,null,[[0,39]])})))()},showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))},openCamera:function(){var t=this;return(0,r.default)(a.default.mark((function e(){var i;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t.isShowPer=!1,e.next=3,o.default.handleUpload(t.userInfo.id,1);case 3:i=e.sent,uni.hideLoading(),t.userInfo.head_photo=i;case 6:case"end":return e.stop()}}),e)})))()},editNickname:function(t){this.userInfo.username=t.detail.value},chooseSex:function(){var t=this;uni.showActionSheet({itemList:["\u7537","\u5973"],success:function(e){t.userInfo.sex=[2,1][e.tapIndex]}})},chooseLocation:function(){this.showLocationPopupFlag=!0},saveProfile:function(){uni.showLoading({title:"\u4fdd\u5b58\u4e2d..."});var t=this.userInfo,e=t.username,i=t.head_photo,s=t.sex,a=t.dependency;c.default.post("/user/useryhupdate",{username:e,head_photo:i,sex:s,dependency:a}).then((function(t){uni.hideLoading(),uni.showToast({title:"\u4fdd\u5b58\u6210\u529f\uff01",icon:"none"});var e=getCurrentPages(),i=e[e.length-2];i&&i.$vm.getUserInfo()}))}}};e.default=u}).call(this,i("f3b9")["default"])},"7b2a":function(t,e,i){"use strict";i.r(e);var s=i("5125"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"7b2c":function(t,e,i){"use strict";i.r(e);var s=i("fc8d"),a=i("a255");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"34594058",null,!1,s["a"],void 0);e["default"]=n.exports},"7b54":function(t,e,i){"use strict";i.r(e);var s=i("9377"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"7b56":function(t,e,i){"use strict";i.r(e);var s=i("c576"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"7b5a":function(t,e,i){"use strict";i.r(e);var s=i("e398"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"7b77":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("ec2d")),o=s(i("f8df")),d={components:{searchBox:n.default,CommonList:o.default},data:function(){return{userInfo:{},queryData:{str_val:""},statusBarHeight:0}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function t(){var i;return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return 3,t.next=3,c.default.post("/user/getuser",{type:3});case 3:i=t.sent,e.userInfo=i.data,e.queryData.sjid=e.userInfo.id,e.statusBarHeight=e.getRpxStatusBarHeight(),e.$nextTick((function(){e.search()}));case 8:case"end":return t.stop()}}),t)})))()},methods:{search:function(){this.$refs.groupRef.manualRefresh(this.queryData)},goSlectSyr:function(t){uni.navigateTo({url:"/pages/shop/staff/selectSyr?server_id=".concat(t.id)})}}};e.default=d},"7b7b":function(t,e,i){"use strict";i.r(e);var s=i("e87b"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"7bd1":function(t,e,i){"use strict";i.r(e);var s=i("391f"),a=i("adc8");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"36c90f9c",null,!1,s["a"],void 0);e["default"]=n.exports},"7c5e":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("7ca3")),c=s(i("ee10")),n=s(i("16bb")),o=s(i("cd5a")),d=s(i("e26b")),l=s(i("32a4")),u=s(i("91d2"));function f(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function _(t){for(var e=1;e10?"rgba(255, 255, 255, ".concat(.02*this.scrollTop,");"):"transparent"},stateItem:function(){var t=this,e=[{text:"\u5f85\u652f\u4ed8",icon:"/static/images/icons/pay.png",state:"1"},{text:"\u5f85\u63a5\u5355",icon:"/static/images/icons/pending.png",state:"2"},{text:"\u5f85\u670d\u52a1",icon:"/static/images/icons/pendingService.png",state:"3"},{text:"\u670d\u52a1\u4e2d",icon:"/static/images/icons/pendingService.png",state:"4"},{text:"\u5df2\u5b8c\u6210",icon:"/static/images/icons/payOk.png",state:"5"},{text:"\u5f85\u8bc4\u4ef7",icon:"/static/images/icons/pending.png",state:"6"},{text:"\u5df2\u53d6\u6d88",icon:"/static/images/evaluate/cancel.png",state:"7"}].find((function(e){return e.state==t.orderInfo.state}))||{};return e},photo:function(){return JSON.parse(this.orderInfo.photo)}},methods:{formatDateAndAddMinutes:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!t)return{original:"",afterAddingMinutes:""};var i=new Date(t.replace(/-/g,"/"));function s(t){var e=t.getFullYear(),i=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),a=String(t.getHours()).padStart(2,"0"),r=String(t.getMinutes()).padStart(2,"0");return"".concat(e,"\u5e74").concat(i,"\u6708").concat(s,"\u65e5 ").concat(a,":").concat(r)}var a=s(i),r=new Date(i);r.setMinutes(r.getMinutes()+e);var c=s(r);return{original:a,afterAddingMinutes:c}},getOrderDetail:function(){var t={code:200,msg:"success!",data:{order:{id:1,number:"GS2025072817001653692514",add_time:"2025-07-28 17:00:16",pay_kind:2,order_money:"10.99",pay_money:"0.00",pay_time:"2025-07-28 15:40:00",work_hour_id:1,reserve_start_time:"2025-07-28 15:30:00",reserve_end_time:"2025-07-28 15:40:00",state:2,order_userid:"10"},work_hour:{id:1,title:"\u5feb\u6d17\u3001\u6f02\u67d3",first_class_id:18,second_class_ids:"81,82",price:"10.99",user_syr_id:24,photo:JSON.stringify(["https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/syr/24_syr_1749636052644.jpg"]),first_class_title:"\u7f8e\u53d1",second_class_title:["\u5feb\u6d17","\u6f02\u67d3"]},user_sj:{id:1,head_photo:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/sj/38_sj_1749647806565.jpg",name:"\u7f8e\u4e1a\u534f\u4f1a",phone:"18102036346",dependency:"\u6cb3\u5317\u7701-\u6ca7\u5dde\u5e02-\u9ec4\u9a85\u5e02",address:"\u606c\u606c\u590f\u96ea(\u9ec4\u9a85\u5efa\u8bbe\u5927\u8857\u6d77\u94f6\u5e97)",longitude:"117.335718",latitude:"38.365762"}}};this.orderInfo=t.data?_(_(_(_({},t.data.order),t.data.work_hour),t.data.user_sj),{},{work_hour_id:t.data.work_hour.id,order_id:t.data.order.id,user_sj_id:t.data.user_sj.id}):{}},cancelOrder:function(e,i){var s=this;e.preventDefault(),e.stopPropagation(),uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f\uff08\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u652f\u4ed8\u91d1\u989d\u5c06\u539f\u8def\u9000\u56de\uff09",success:function(e){if(e.confirm){var a={orderNo:i.number,amount:i.pay_money,syrid:s.userInfo.id},r="";1==i.pay_kind?r="":2==i.pay_kind?r="/syr/yhwechatrefund":3==i.pay_kind&&(r="/syr/yhalirefund"),n.default.post(r,a).then((function(t){if(1==t.state||1==t.code||200==t.code){uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),s.getOrderDetail();var e=getCurrentPages(),i=e[e.length-2];i&&(i.$vm.getOrderNumber(),i.$vm.getOrderList())}else uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){return t("log",e," at pages/syr/manHourDetail.vue:367")}))}}})},confirmOrder:function(t,e){var i=this;t.preventDefault(),t.stopPropagation(),n.default.post("/syr/yhordersure",{id:e.id,syrid:this.userInfo.id}).then((function(t){uni.showToast({title:"\u5df2\u63a5\u5355",icon:"none"}),i.getOrderDetail();var e=getCurrentPages(),s=e[e.length-2];s&&(s.$vm.getOrderNumber(),s.$vm.getOrderList())}))},startOrder:function(t,e){t.preventDefault(),t.stopPropagation(),this.showInput=!0},onConfirm:function(t){var e=this;this.showInput=!1,n.default.post("/syr/yhstartserver",{id:this.orderInfo.id,server_code:t,syrid:this.userInfo.id}).then((function(t){if(1==t.state){uni.showToast({title:t.msg,icon:"none"}),e.getOrderDetail();var i=getCurrentPages(),s=i[i.length-2];s&&(s.$vm.getOrderNumber(),s.$vm.getOrderList())}else 2==t.state&&uni.showToast({title:t.msg,icon:"none"});e.handelOrder={}}))},endOrder:function(t,e){var i=this;t.preventDefault(),t.stopPropagation(),n.default.post("/syr/yhendserver",{id:e.id}).then((function(t){if(200==t.code){uni.showToast({title:t.msg,icon:"none"}),i.getOrderDetail();var e=getCurrentPages(),s=e[e.length-2];s&&(s.$vm.getOrderNumber(),s.$vm.getOrderList())}}))},showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))},contactService:function(t){var e=this;return(0,c.default)(a.default.mark((function i(){var s,r,c,n,o,d,f;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(s=uni.getSystemInfoSync(),"ios"!==s.platform){i.next=5;break}uni.makePhoneCall({phoneNumber:t}),i.next=27;break;case 5:return r="ios"===s.platform?"phone":"android.permission.CALL_PHONE",e.isShowPer=!0,c=!plus.storage.getItem("perm_".concat(r)),c&&(e.isShowPer=!0),i.next=11,u.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 11:if(n=i.sent,o=n.granted,!o){i.next=17;break}return e.isShowPer=!1,uni.makePhoneCall({phoneNumber:t}),i.abrupt("return");case 17:return e.isShowPer=!1,i.next=20,e.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 20:if(d=i.sent,d){i.next=23;break}return i.abrupt("return");case 23:return i.next=25,u.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 25:f=i.sent,f?uni.makePhoneCall({phoneNumber:t}):l.default.openAppSettings();case 27:case"end":return i.stop()}}),i)})))()},openMap:function(){o.default.goMap({latitude:parseFloat(this.reservation_address_arr.latitude),longitude:parseFloat(this.reservation_address_arr.longitude),name:this.reservation_address_arr.house_number,address:this.reservation_address_arr.server_address})}}};e.default=p}).call(this,i("f3b9")["default"])},"7c83":function(t,e,i){"use strict";i.r(e);var s=i("162c"),a=i("10fc");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"7c97":function(t,e,i){"use strict";i.r(e);var s=i("97a1"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"7ca3":function(t,e,i){var s=i("d551");t.exports=function(t,e,i){return e=s(e),e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t},t.exports.__esModule=!0,t.exports["default"]=t.exports},"7cb4":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c=s(i("bacc")),n={name:"uv-line",mixins:[a.default,r.default,c.default],computed:{lineStyle:function(){var t={};return t.margin=this.margin,"row"===this.direction?(t.borderBottomWidth="1px",t.borderBottomStyle=this.dashed?"dashed":"solid",t.width=this.$uv.addUnit(this.length),this.hairline&&(t.transform="scaleY(0.5)")):(t.borderLeftWidth="1px",t.borderLeftStyle=this.dashed?"dashed":"solid",t.height=this.$uv.addUnit(this.length),this.hairline&&(t.transform="scaleX(0.5)")),t.borderColor=this.color,this.$uv.deepMerge(t,this.$uv.addStyle(this.customStyle))}}};e.default=n},"7ce4":function(t,e,i){"use strict";i.r(e);var s=i("3c1d"),a=i("2616");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"7d79":function(t,e,i){"use strict";i.r(e);var s=i("ddb0"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"7e4a":function(t,e,i){"use strict";i.r(e);var s=i("8846"),a=i("ec38");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"01ddbf25",null,!1,s["a"],void 0);e["default"]=n.exports},"7e6f":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("af34")),c=s(i("ee10")),n=s(i("16bb")),o=s(i("3959")),d={components:{selectTimePage2:o.default},data:function(){return{selectData:{},manHourInfo:{},workHour:{},userSyr:{},totalPrice:0,timeOptions:[],selectTime:null,isSubmit:!1}},onLoad:function(e){this.manHourInfo=JSON.parse(decodeURIComponent(e.manHourInfo)),this.workHour=this.manHourInfo.work_hour,this.userSyr=this.manHourInfo.user_syr,t("log","\u5de5\u65f6\u8be6\u60c5",this.manHourInfo," at pages/shop/manHour/manHourOrder.vue:84"),this.getyestimearrFirst()},methods:{getyestimearrFirst:function(){var e=this;e.timeOptions=[],n.default.post("/sj/reserve/timeList",{user_syr_id:this.userSyr.id,server_id:this.workHour.id}).then(function(){var t=(0,c.default)(a.default.mark((function t(i){var s;return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:e.timeOptions=[].concat((0,r.default)(e.timeOptions),[i.data.today,i.data.tomorrow,i.data.after]),s={1:"\u53ef\u7ea6",2:"\u7ea6\u6ee1",3:"\u4f11\u606f",4:"\u9501\u5b9a",5:"\u4e0d\u53ef\u7528"},e.timeOptions.forEach((function(t){t.forEach((function(t){t.stateName=s[t.state]}))}));case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).catch((function(e){t("log","\u62a5\u9519",e," at pages/shop/manHour/manHourOrder.vue:118")}))},submit:function(){var e=this;if(!this.isSubmit){if(!this.selectTime)return uni.showToast({title:"\u8bf7\u9009\u62e9\u9884\u7ea6\u65f6\u95f4",icon:"none",duration:1e3}),void(this.isSubmit=!1);this.isSubmit=!0;var i={work_hour_id:this.workHour.id,reserve_start_time:this.selectData.reserve_start_time,reserve_end_time:this.selectData.reserve_end_time};n.default.post("/sj/workHourOrder/create",i).then(function(){var t=(0,c.default)(a.default.mark((function t(i){return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:200==i.code&&(uni.showToast({title:"\u63d0\u4ea4\u6210\u529f",icon:"none",duration:2e3}),setTimeout((function(){uni.redirectTo({url:"/pages/shop/pay?id=".concat(i.data.id,"&money=").concat(e.totalPrice,"&title=").concat(e.workHour.title,"&number=").concat(i.data.number,"&identity=0")})}),500));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).catch((function(e){t("log","\u62a5\u9519",e," at pages/shop/manHour/manHourOrder.vue:158")})).finally((function(){e.isSubmit=!1}))}},changeTime:function(t){t.startTime!=t.endTime?(this.selectData=t,this.selectTime="".concat(t.date," ").concat(t.startTime,"-").concat(t.endTime),this.totalPrice=(t.num*this.workHour.price).toFixed(2)):(this.selectData=t,this.selectTime=null,this.totalPrice=0)}}};e.default=d}).call(this,i("f3b9")["default"])},"7ea2":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this.$createElement,e=this._self._c||t;return e("view",{staticClass:this._$s(0,"sc","uv-checkbox-group"),class:this._$s(0,"c",this.bemClass),style:this._$s(0,"s",[this.$uv.addStyle(this.customStyle)]),attrs:{_i:0}},[this._t("default",null,{_i:1})],2)},a=[]},"7fc8":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","order-list"),attrs:{_i:0}},[t._$s(1,"i",t.isLogin)?i("view",{attrs:{_i:1}},[i("scroll-view",{staticClass:t._$s(2,"sc","status-tabs"),attrs:{_i:2}},t._l(t._$s(3,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("view",{key:t._$s(3,"f",{forIndex:a,key:e.id}),staticClass:t._$s("3-"+r,"sc","tab-item"),class:t._$s("3-"+r,"c",{active:t.currentTab===e.id}),attrs:{_i:"3-"+r},on:{click:function(i){return t.switchTab(e.id)}}},[t._v(t._$s("3-"+r,"t0-0",t._s(e.title)))])})),0),i("scroll-view",{staticClass:t._$s(4,"sc","order-scroll"),attrs:{"refresher-triggered":t._$s(4,"a-refresher-triggered",t.isRefreshing),_i:4},on:{scrolltolower:t.loadMore,refresherrefresh:t.onRefresh}},[t._l(t._$s(5,"f",{forItems:t.orderList}),(function(e,s,a,r){return i("view",{key:t._$s(5,"f",{forIndex:a,key:s}),staticClass:t._$s("5-"+r,"sc","order-item"),attrs:{_i:"5-"+r}},[i("view",{staticClass:t._$s("6-"+r,"sc","order-header"),attrs:{_i:"6-"+r}},[i("view",{staticClass:t._$s("7-"+r,"sc","order-tag"),attrs:{_i:"7-"+r}},[i("text",{staticClass:t._$s("8-"+r,"sc","order-tag-text"),attrs:{_i:"8-"+r}},[t._v(t._$s("8-"+r,"t0-0",t._s(1==e.order_kind?"\u5230\u5bb6":2==e.order_kind?"\u5230\u5e97":"")))])]),i("text",{staticClass:t._$s("9-"+r,"sc","order-number"),attrs:{_i:"9-"+r}},[t._v(t._$s("9-"+r,"t0-0",t._s(e.number)))]),i("text",{staticClass:t._$s("10-"+r,"sc","order-status"),class:t._$s("10-"+r,"c",e.statusClass),attrs:{_i:"10-"+r}},[t._v(t._$s("10-"+r,"t0-0",t._s(1==e.state?"\u5f85\u652f\u4ed8":2==e.state?"\u5f85\u63a5\u5355":3==e.state?"\u5f85\u670d\u52a1":4==e.state?"\u5f85\u5b8c\u6210":5==e.state?"\u5df2\u5b8c\u6210":6==e.state?"\u5f85\u8bc4\u4ef7":7==e.state?"\u5df2\u53d6\u6d88":"")))])]),i("view",{staticClass:t._$s("11-"+r,"sc","order-content"),attrs:{_i:"11-"+r},on:{click:function(i){return t.goDetail(e)}}},[t._$s("12-"+r,"i",e.order_photo)?i("image",{staticClass:t._$s("12-"+r,"sc","service-image"),attrs:{src:t._$s("12-"+r,"a-src",e.order_photo[0]),_i:"12-"+r}}):i("view",{staticClass:t._$s("13-"+r,"sc","service-image"),attrs:{_i:"13-"+r}}),i("view",{staticClass:t._$s("14-"+r,"sc","service-info"),attrs:{_i:"14-"+r}},[i("text",{staticClass:t._$s("15-"+r,"sc","service-name"),attrs:{_i:"15-"+r}},[t._v(t._$s("15-"+r,"t0-0",t._s(e.server_title)))]),t._$s("16-"+r,"i",1==e.order_kind)?i("view",{staticClass:t._$s("16-"+r,"sc","service-time"),attrs:{_i:"16-"+r}},[i("image",{staticClass:t._$s("17-"+r,"sc","time-icon"),attrs:{_i:"17-"+r}}),i("text",[t._v(t._$s("18-"+r,"t0-0",t._s(e.reservation_time)))])]):t._e(),t._$s("19-"+r,"i",1==e.order_kind)?i("view",{staticClass:t._$s("19-"+r,"sc","service-address"),attrs:{_i:"19-"+r}},[i("image",{staticClass:t._$s("20-"+r,"sc","location-icon"),attrs:{_i:"20-"+r}}),i("text",[t._v(t._$s("21-"+r,"t0-0",t._s(Object.assign({},e.reservation_address_arr).dependency))+t._$s("21-"+r,"t0-1",t._s(Object.assign({},e.reservation_address_arr).address)))])]):t._e()])]),i("view",{staticClass:t._$s("22-"+r,"sc","order-actions"),attrs:{_i:"22-"+r}},[i("view",{staticClass:t._$s("23-"+r,"sc","action-left"),attrs:{_i:"23-"+r}},[t._$s("24-"+r,"i",5==e.state||6==e.state||7==e.state)?i("image",{staticClass:t._$s("24-"+r,"sc","delete-icon"),attrs:{_i:"24-"+r},on:{click:function(i){return t.deleteOrder(e)}}}):t._e()]),i("view",{staticClass:t._$s("25-"+r,"sc","action-right"),attrs:{_i:"25-"+r}},[t._$s("26-"+r,"i",1==e.state)?i("text",{staticClass:t._$s("26-"+r,"sc","action-btn contact"),attrs:{_i:"26-"+r},on:{click:function(i){return t.cancelService(e)}}}):t._e(),t._$s("27-"+r,"i",2==e.state||3==e.state)?i("text",{staticClass:t._$s("27-"+r,"sc","action-btn contact"),attrs:{_i:"27-"+r},on:{click:function(i){return t.refoundService(e)}}}):t._e(),i("text",{staticClass:t._$s("28-"+r,"sc","action-btn contact"),attrs:{_i:"28-"+r},on:{click:function(i){return t.contactService(e.order_shopphone)}}}),t._$s("29-"+r,"i",1==e.state)?i("text",{staticClass:t._$s("29-"+r,"sc","action-btn primary"),attrs:{_i:"29-"+r},on:{click:function(i){return t.payOrder(e)}}}):t._e(),t._$s("30-"+r,"i",6==e.state)?i("text",{staticClass:t._$s("30-"+r,"sc","action-btn review"),attrs:{_i:"30-"+r},on:{click:function(i){return t.reviewOrder(e)}}}):t._e(),t._$s("31-"+r,"i",5==e.state||6==e.state)?i("text",{staticClass:t._$s("31-"+r,"sc","action-btn again"),attrs:{_i:"31-"+r},on:{click:function(i){return t.orderAgain(e)}}}):t._e(),t._$s("32-"+r,"i",5==e.state&&2==e.appeal)?i("text",{staticClass:t._$s("32-"+r,"sc","action-btn again"),attrs:{_i:"32-"+r},on:{click:function(i){return t.lookComplaint(e)}}}):t._e()])])])})),t._$s(33,"i",t.hasMore)?i("view",{staticClass:t._$s(33,"sc","loading-more"),attrs:{_i:33}}):t._e(),t._$s(34,"i",!t.hasMore&&t.orderList.length)?i("view",{staticClass:t._$s(34,"sc","no-more"),attrs:{_i:34}}):t._e(),t._$s(35,"i",0==t.orderList.length)?i("noData",{attrs:{_i:35}}):t._e(),i("view",{staticClass:t._$s(36,"sc","permission"),class:t._$s(36,"c",{transform:t.isShowPer}),attrs:{_i:36}},[i("view",{staticClass:t._$s(37,"sc","per-tit"),attrs:{_i:37}}),i("view",{staticClass:t._$s(38,"sc","per-cont"),attrs:{_i:38}})])],2)]):i("view",{staticClass:t._$s(39,"sc","nologin_part"),attrs:{_i:39}},[i("image",{staticClass:t._$s(40,"sc","nologin_icon"),attrs:{_i:40}}),i("view",{staticClass:t._$s(41,"sc","btn-login"),attrs:{_i:41}},[i("text",{staticClass:t._$s(42,"sc","login-text"),attrs:{_i:42},on:{click:t.goLogin}})])])])},r=[]},"7fd8":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("16bb")),r=i("53d1"),c=s(i("e26b")),n={components:{serviceCodeInput:c.default},data:function(){return{artisanType:getApp().globalData.artisanType,userInfo:{},typeOrder:1==getApp().globalData.artisanType?2:3,ordernum:{},orderList:[],handelOrder:{},showInput:!1,timeRange:"7days",count:0,chartOpts:{color:["#E8101E"],padding:[15,15,0,15],enableScroll:!1,legend:!1,xAxis:{gridType:"solid",gridColor:"#F0F0F0",fontColor:"#999999",rotateLabel:!1},yAxis:{gridType:"dash",splitNumber:4,gridColor:"#F0F0F0",fontColor:"#999999",format:"value"},extra:{line:{type:"straight",width:2}}},chartData:{categories:["03-19","03-20","03-21","03-21","03-21","03-21"],series:[{name:"\u8ba2\u5355\u91cf",data:[1,0,0,0,0,0]}]}}},onLoad:function(){uni.getSystemInfoSync();this.getUserInfo(),this.getOrderNumber(),this.getOrderList()},methods:{getUserInfo:function(){var t=this,e=1==this.artisanType?2:2==this.artisanType?3:1;a.default.post("/user/getuser",{type:e}).then((function(e){t.userInfo=e.data}))},syrorsjordertaking:function(){var t=this,e=1==this.artisanType?2:2==this.artisanType?3:1;a.default.post("/user/syrorsjordertaking",{type:this.artisanType,order_taking:this.userInfo.order_taking}).then((function(i){a.default.post("/user/getuser",{type:e}).then((function(e){t.userInfo.order_taking=e.data.order_taking}))}))},getOrderNumber:function(){var t=this;a.default.post("/user/ordernum",{type:this.artisanType}).then((function(e){t.ordernum=e.data}))},getOrderList:function(){var e=this,i=[];i[0]=this.typeOrder,a.default.post("/user/syrandsjorders",{type:this.artisanType,state:i}).then((function(i){t("log",i," at pages/artisan/index.vue:234"),e.orderList=i.data,e.count=i.count}))},handleSwitchChange:function(t){this.orderSwitch=t,1==this.userInfo.order_taking?this.userInfo.order_taking=2:2==this.userInfo.order_taking&&(this.userInfo.order_taking=1),this.syrorsjordertaking()},goRoleMy:function(){uni.navigateTo({url:"/pages/artisan/my"})},goMoreSetting:function(){uni.navigateTo({url:"/pages/artisan/unavailable-time"})},goOrderDetail:function(t){uni.navigateTo({url:"/pages/order/artisanorder-detail?id="+t})},goToCompetition:function(){},switchTimeRange:function(t){this.timeRange=t},handleOrderType:function(t){this.typeOrder=t,this.getOrderList()},cancelOrder:function(e,i){var s=this;e.preventDefault(),e.stopPropagation(),1==i.state?uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f",success:function(e){if(e.confirm){var r={orderNo:i.number,amount:i.pay_money,cancel_state:s.artisanType+1,cancel_id:s.userInfo.id};a.default.post("/user/cancelorder",r).then((function(t){1==t.state?(uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),s.getOrderNumber(),s.getOrderList()):uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){t("log",e," at pages/artisan/index.vue:314")}))}}}):uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f\uff08\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u652f\u4ed8\u91d1\u989d\u5c06\u539f\u8def\u9000\u56de\uff09",success:function(e){if(e.confirm){var r={orderNo:i.number,amount:i.pay_money,cancel_state:s.artisanType+1,cancel_id:s.userInfo.id},c="";1==i.pay_kind?c="/user/cancelbalance":2==i.pay_kind?c="/user/wechatrefund":3==i.pay_kind&&(c="/user/alirefund"),t("log",r,c," at pages/artisan/index.vue:340"),a.default.post(c,r).then((function(e){t("log","\u53d6\u6d88\u8ba2\u5355\u8fd4\u56de\u7ed3\u679c",e," at pages/artisan/index.vue:342"),1==e.state?(uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),s.getOrderNumber(),s.getOrderList()):uni.showToast({title:e.msg,icon:"none"})})).catch((function(e){t("log",e," at pages/artisan/index.vue:358")}))}}})},confirmOrder:function(t,e){var i=this;t.preventDefault(),t.stopPropagation(),a.default.post("/user/ordersure",{id:e.id}).then((function(t){uni.showToast({title:"\u5df2\u63a5\u5355",icon:"none"}),i.getOrderNumber(),i.getOrderList()}))},startOrder:function(t,e){t.preventDefault(),t.stopPropagation(),this.showInput=!0,this.handelOrder=e},onConfirm:function(e){var i=this;this.showInput=!1,a.default.post("/user/startserver",{id:this.handelOrder.id,server_code:e,order_shopid:this.userInfo.id}).then((function(e){t("log",e," at pages/artisan/index.vue:395"),1==e.state?(uni.showToast({title:e.msg,icon:"none"}),i.getOrderNumber(),i.getOrderList()):2==e.state&&uni.showToast({title:e.msg,icon:"none"}),i.handelOrder={}}))},endOrder:(0,r.debounce)((function(e,i){var s=this;e.preventDefault(),e.stopPropagation(),a.default.post("/user/endserver",{id:i.id,order_shopid:this.userInfo.id}).then((function(e){t("log","res====================",e," at pages/artisan/index.vue:439"),1==e.state&&(uni.showToast({title:e.msg,icon:"none"}),s.getOrderNumber(),s.getOrderList())}))}),500)}};e.default=n}).call(this,i("f3b9")["default"])},"804d":function(t,e,i){"use strict";i.r(e);var s=i("2057"),a=i("bf37");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"80d3":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","detail-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u8ba2\u5355\u8be6\u60c5","show-back":!0,"title-color":"#333333",backgroundColor:t.backgroundColor,_i:1}}),i("view",{staticClass:t._$s(2,"sc","content-part"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","status-section"),attrs:{_i:3}},[i("image",{staticClass:t._$s(4,"sc","status-section-image"),attrs:{src:t._$s(4,"a-src",t.stateItem.icon),_i:4}}),i("text",{staticClass:t._$s(5,"sc","status-text"),attrs:{_i:5}},[t._v(t._$s(5,"t0-0",t._s(t.stateItem.text)))])]),i("view",{staticClass:t._$s(6,"sc","service-card"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","location-info"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","name-phone"),attrs:{_i:8}},[i("view",[i("text",{staticClass:t._$s(10,"sc","name"),attrs:{_i:10}},[t._v(t._$s(10,"t0-0",t._s(t.reservation_address_arr.name)))]),i("text",{staticClass:t._$s(11,"sc","phone"),attrs:{_i:11}},[t._v(t._$s(11,"t0-0",t._s(t.reservation_address_arr.call_phone)))])]),i("image",{staticClass:t._$s(12,"sc","btn-phone"),attrs:{_i:12},on:{click:function(e){return t.contactService(t.reservation_address_arr.call_phone)}}})]),i("view",{staticClass:t._$s(13,"sc","address-info"),attrs:{_i:13}},[i("image",{staticClass:t._$s(14,"sc","location-icon"),attrs:{_i:14},on:{click:function(e){return t.openMap()}}}),i("text",{staticClass:t._$s(15,"sc","address"),attrs:{_i:15}},[t._v(t._$s(15,"t0-0",t._s(t.reservation_address_arr.server_address))+t._$s(15,"t0-1",t._s(t.reservation_address_arr.house_number)))])])])]),i("view",{staticClass:t._$s(16,"sc","time_card"),attrs:{_i:16}},[i("view",{staticClass:t._$s(17,"sc","card_title"),attrs:{_i:17}}),i("view",{staticClass:t._$s(18,"sc","card_time"),attrs:{_i:18}},[t._v(t._$s(18,"t0-0",t._s(t.formatDateAndAddMinutes(t.orderInfo.reservation_time).original)))]),i("view",{staticClass:t._$s(19,"sc","card_time"),attrs:{_i:19}},[t._v(t._$s(19,"t0-0",t._s(t.formatDateAndAddMinutes(t.orderInfo.reservation_time,t.orderInfo.server_time).afterAddingMinutes)))])]),i("view",{staticClass:t._$s(20,"sc","booking-card"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","card_title"),attrs:{_i:21}}),i("view",{staticClass:t._$s(22,"sc","service-item"),attrs:{_i:22}},[t._$s(23,"i",t.orderInfo.server_photo&&0!=t.orderInfo.server_photo.length)?i("image",{staticClass:t._$s(23,"sc","service-image"),attrs:{src:t._$s(23,"a-src",t.orderInfo.server_photo[0]),_i:23}}):t._e(),i("view",{staticClass:t._$s(24,"sc","service-info"),attrs:{_i:24}},[i("view",{staticClass:t._$s(25,"sc","service-box"),attrs:{_i:25}},[i("text",{staticClass:t._$s(26,"sc","service-name text-overflow"),attrs:{_i:26}},[t._v(t._$s(26,"t0-0",t._s(t.orderInfo.server_title)))]),i("text",{staticClass:t._$s(27,"sc","service-count"),attrs:{_i:27}})]),i("view",{staticClass:t._$s(28,"sc","service-price"),attrs:{_i:28}},[i("text",{staticClass:t._$s(29,"sc","icon"),attrs:{_i:29}}),i("text",[t._v(t._$s(30,"t0-0",t._s(t.orderInfo.order_money)))])])])]),i("view",{staticClass:t._$s(31,"sc","service-real"),attrs:{_i:31}},[i("text",{staticClass:t._$s(32,"sc","real-lable"),attrs:{_i:32}}),i("view",{staticClass:t._$s(33,"sc","real-price"),attrs:{_i:33}},[i("text",{staticClass:t._$s(34,"sc","icon"),attrs:{_i:34}}),i("text",[t._v(t._$s(35,"t0-0",t._s(t.orderInfo.pay_money)))])])])]),i("view",{staticClass:t._$s(36,"sc","order-card"),attrs:{_i:36}},[i("view",{staticClass:t._$s(37,"sc","card_title"),attrs:{_i:37}}),i("view",{staticClass:t._$s(38,"sc","info-item"),attrs:{_i:38}},[i("text",{staticClass:t._$s(39,"sc","label"),attrs:{_i:39}}),i("text",{staticClass:t._$s(40,"sc","value"),attrs:{_i:40}},[t._v(t._$s(40,"t0-0",t._s(t.orderInfo.number)))])]),i("view",{staticClass:t._$s(41,"sc","info-item"),attrs:{_i:41}},[i("text",{staticClass:t._$s(42,"sc","label"),attrs:{_i:42}}),i("text",{staticClass:t._$s(43,"sc","value"),attrs:{_i:43}},[t._v(t._$s(43,"t0-0",t._s(t.orderInfo.add_time)))])]),i("view",{staticClass:t._$s(44,"sc","info-item"),attrs:{_i:44}},[i("text",{staticClass:t._$s(45,"sc","label"),attrs:{_i:45}}),i("text",{staticClass:t._$s(46,"sc","value"),attrs:{_i:46}},[t._v(t._$s(46,"t0-0",t._s(t.orderInfo.server_time||0)))])]),t._$s(47,"i",1!=t.orderInfo.state)?i("view",{staticClass:t._$s(47,"sc","info-item"),attrs:{_i:47}},[i("text",{staticClass:t._$s(48,"sc","label"),attrs:{_i:48}}),i("text",{staticClass:t._$s(49,"sc","value"),attrs:{_i:49}},[t._v(t._$s(49,"t0-0",t._s(1==t.orderInfo.pay_kind?"\u8d26\u6237\u4f59\u989d":2==t.orderInfo.pay_kind?"\u5fae\u4fe1\u652f\u4ed8":3==t.orderInfo.pay_kind?"\u652f\u4ed8\u5b9d\u652f\u4ed8":"")))])]):t._e(),t._$s(50,"i",1!=t.orderInfo.state)?i("view",{staticClass:t._$s(50,"sc","info-item"),attrs:{_i:50}},[i("text",{staticClass:t._$s(51,"sc","label"),attrs:{_i:51}}),i("text",{staticClass:t._$s(52,"sc","value"),attrs:{_i:52}},[t._v(t._$s(52,"t0-0",t._s(t.orderInfo.pay_time)))])]):t._e(),t._$s(53,"i",1!=t.orderInfo.state&&2!=t.orderInfo.state&&3!=t.orderInfo.state)?i("view",{staticClass:t._$s(53,"sc","info-item"),attrs:{_i:53}},[i("text",{staticClass:t._$s(54,"sc","label"),attrs:{_i:54}}),i("text",{staticClass:t._$s(55,"sc","value"),attrs:{_i:55}},[t._v(t._$s(55,"t0-0",t._s(t.orderInfo.server_start_time)))])]):t._e(),t._$s(56,"i",1!=t.orderInfo.state&&2!=t.orderInfo.state&&3!=t.orderInfo.state&&4!=t.orderInfo.state)?i("view",{staticClass:t._$s(56,"sc","info-item"),attrs:{_i:56}},[i("text",{staticClass:t._$s(57,"sc","label"),attrs:{_i:57}}),i("text",{staticClass:t._$s(58,"sc","value"),attrs:{_i:58}},[t._v(t._$s(58,"t0-0",t._s(t.orderInfo.server_end_time)))])]):t._e()])]),i("view",{staticClass:t._$s(59,"sc","bottom-buttons"),attrs:{_i:59}},[t._$s(60,"i",2==t.orderInfo.state||3==t.orderInfo.state)?i("view",{staticClass:t._$s(60,"sc","handel-button btn-border"),attrs:{_i:60},on:{click:function(e){return e.stopPropagation(),t.cancelOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(61,"sc","button-text"),attrs:{_i:61}})]):t._e(),t._$s(62,"i",2==t.orderInfo.state)?i("view",{staticClass:t._$s(62,"sc","handel-button btn-bg"),attrs:{_i:62},on:{click:function(e){return e.stopPropagation(),t.confirmOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(63,"sc","button-text"),attrs:{_i:63}})]):t._e(),t._$s(64,"i",3==t.orderInfo.state)?i("view",{staticClass:t._$s(64,"sc","handel-button btn-bg"),attrs:{_i:64},on:{click:function(e){return e.stopPropagation(),t.startOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(65,"sc","button-text"),attrs:{_i:65}})]):t._e(),t._$s(66,"i",4==t.orderInfo.state)?i("view",{staticClass:t._$s(66,"sc","handel-button btn-bg"),attrs:{_i:66},on:{click:function(e){return e.stopPropagation(),t.endOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(67,"sc","button-text"),attrs:{_i:67}})]):t._e()]),i("serviceCodeInput",{attrs:{show:t.showInput,_i:68},on:{close:function(e){t.showInput=!1},confirm:t.onConfirm}}),i("view",{staticClass:t._$s(69,"sc","permission"),class:t._$s(69,"c",{transform:t.isShowPer}),attrs:{_i:69}},[i("view",{staticClass:t._$s(70,"sc","per-tit"),attrs:{_i:70}}),i("view",{staticClass:t._$s(71,"sc","per-cont"),attrs:{_i:71}})])],1)},r=[]},"816c":function(t,e,i){"use strict";i.r(e);var s=i("2eb5"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"81ee":function(t,e,i){"use strict";i.r(e);var s=i("1185"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},8242:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c=s(i("5e03")),n={name:"uv-divider",mixins:[a.default,r.default,c.default],emits:["click"],computed:{textStyle:function(){var t={};return t.fontSize=this.$uv.addUnit(this.textSize),t.color=this.textColor,t},leftLineStyle:function(){var t={};return"left"===this.textPosition?t.width="80rpx":t.flex=1,t},rightLineStyle:function(){var t={};return"right"===this.textPosition?t.width="80rpx":t.flex=1,t}},methods:{click:function(){this.$emit("click")}}};e.default=n},8256:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("af34")),c=s(i("ee10")),n=s(i("5443")),o=s(i("16bb")),d=s(i("0b4e")),l={data:function(){return{selectItem:null,reasonValue:"",title:"",state:5,page:1,limit:10,currentTab:0,showTip:!1,tipsState:null,showCancelGroup:!1,tabs:[{id:5,text:"\u672a\u5f00\u59cb"},{id:6,text:"\u8fdb\u884c\u4e2d"},{id:7,text:"\u5df2\u7ed3\u675f"},{id:3,text:"\u5df2\u5931\u6548"},{id:1,text:"\u5ba1\u6838\u4e2d"},{id:4,text:"\u5df2\u9a73\u56de"}],isLoad:!0,services:[],count:0}},components:{listCard:d.default,tipsPopup:n.default},onLoad:function(){this.getServicesList()},onPullDownRefresh:function(){this.getServicesList()},onReachBottom:function(){var e=this;return(0,c.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(t("log","onReachBottom"," at pages/shop/groupBuying/list.vue:155"),!(e.count<=e.page*e.limit)&&e.isLoad){i.next=3;break}return i.abrupt("return");case 3:e.page++,e.getServicesList(!1);case 5:case"end":return i.stop()}}),i)})))()},methods:{addGroup:function(t){uni.navigateTo({url:"/pages/shop/groupBuying/addGroupBuying?dateItem=".concat(encodeURIComponent(JSON.stringify(t)),"&title=\u7f16\u8f91\u6d3b\u52a8")})},copyGroup:function(t){uni.navigateTo({url:"/pages/shop/groupBuying/addGroupBuying?dateItem=".concat(encodeURIComponent(JSON.stringify(t)),"&title=\u590d\u5236\u6d3b\u52a8")})},checkGroup:function(t){uni.navigateTo({url:"/pages/shop/groupBuying/addGroupBuying?dateItem=".concat(encodeURIComponent(JSON.stringify(t)),"&disabled=1&title=\u6d3b\u52a8\u8be6\u60c5")})},setCancelGroup:function(){var e=this,i={id:this.selectItem.id,expire_text:this.reasonValue};o.default.post("/sj/teamBuy/expire",i).then((function(i){t("log",i," at pages/shop/groupBuying/list.vue:192"),200==i.code?(uni.showToast({title:"\u63d0\u4ea4\u6210\u529f\u6210\u529f",icon:"success"}),e.getServicesList()):uni.showToast({title:i.msg,icon:"none"})})).catch((function(t){uni.showToast({title:"\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5",icon:"none"})})).finally((function(){e.isSubmit=!1,e.reasonValue=""}))},showCancel:function(){this.showTip=!1,6==this.selectItem.state?this.showCancelGroup=!0:this.setCancelGroup()},switchTab:function(t,e){this.currentTab=t,this.state=e,this.getServicesList()},addService:function(){},cancelGroup:function(e){t("log","\u5f53\u524d\u62fc\u56e2",e," at pages/shop/groupBuying/list.vue:233"),this.selectItem=e,this.tipsState=e.state,this.showTip=!0},getServicesList:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.isLoad=!1,e&&(this.page=1,this.limit=10);var i="/sj/teamBuy/list";o.default.post(i,{state:this.state,title:this.title,page:this.page,limit:this.limit}).then((function(i){e?(t.services=i.data.list,t.count=i.data.count):(t.services=[].concat((0,r.default)(t.services),(0,r.default)(i.data.list)),t.count=i.data.count)})).finally((function(){t.isLoad=!0,uni.stopPullDownRefresh()}))}}};e.default=l}).call(this,i("f3b9")["default"])},"828b":function(t,e,i){"use strict";function s(t,e,i,s,a,r,c,n,o,d){var l,u="function"===typeof t?t.options:t;if(o){u.components||(u.components={});var f=Object.prototype.hasOwnProperty;for(var _ in o)f.call(o,_)&&!f.call(u.components,_)&&(u.components[_]=o[_])}if(d&&("function"===typeof d.beforeCreate&&(d.beforeCreate=[d.beforeCreate]),(d.beforeCreate||(d.beforeCreate=[])).unshift((function(){this[d.__module]=this})),(u.mixins||(u.mixins=[])).push(d)),e&&(u.render=e,u.staticRenderFns=i,u._compiled=!0),s&&(u.functional=!0),r&&(u._scopeId="data-v-"+r),c?(l=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),a&&a.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(c)},u._ssrRegister=l):a&&(l=n?function(){a.call(this,this.$root.$options.shadowRoot)}:a),l)if(u.functional){u._injectStyles=l;var p=u.render;u.render=function(t,e){return l.call(e),p(t,e)}}else{var v=u.beforeCreate;u.beforeCreate=v?[].concat(v,l):[l]}return{exports:t,options:u}}i.d(e,"a",(function(){return s}))},"832a":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uvOverlay:i("1d78").default,uvTransition:i("2fe6").default,uvStatusBar:i("8381").default,uvSafeBottom:i("8b9e").default,uvIcon:i("08d8").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$s(0,"i",t.showPopup)?i("view",{staticClass:t._$s(0,"sc","uv-popup"),class:t._$s(0,"c",[t.popupClass,t.isDesktop?"fixforpc-z-index":""]),style:t._$s(0,"s",[{zIndex:t.zIndex}]),attrs:{_i:0}},[i("view",{attrs:{_i:1},on:{touchstart:t.touchstart}},[t._$s(2,"i",t.maskShow&&t.overlay)?i("uv-overlay",{key:"1",attrs:{show:t.showTrans,duration:t.duration,"custom-style":t.overlayStyle,opacity:t.overlayOpacity,zIndex:t.zIndex,_i:2},on:{click:t.onTap}}):t._e(),i("uv-transition",{key:"2",attrs:{mode:t.ani,name:"content","custom-style":t.transitionStyle,duration:t.duration,show:t.showTrans,_i:3},on:{click:t.onTap}},[i("view",{staticClass:t._$s(4,"sc","uv-popup__content"),class:t._$s(4,"c",[t.popupClass]),style:t._$s(4,"s",[t.contentStyle]),attrs:{_i:4},on:{click:t.clear}},[t._$s(5,"i",t.safeAreaInsetTop)?i("uv-status-bar",{attrs:{_i:5}}):t._e(),t._t("default",null,{_i:6}),t._$s(7,"i",t.safeAreaInsetBottom)?i("uv-safe-bottom",{attrs:{_i:7}}):t._e(),t._$s(8,"i",t.closeable)?i("view",{staticClass:t._$s(8,"sc","uv-popup__content__close"),class:t._$s(8,"c",["uv-popup__content__close--"+t.closeIconPos]),attrs:{_i:8},on:{click:function(e){return e.stopPropagation(),t.close(e)}}},[i("uv-icon",{attrs:{name:"close",color:"#909399",size:"18",bold:!0,_i:9}})],1):t._e()],2)])],1)]):t._e()},r=[]},8381:function(t,e,i){"use strict";i.r(e);var s=i("7637"),a=i("4ee8");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"c36c36f4",null,!1,s["a"],void 0);e["default"]=n.exports},"83bc":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this.$createElement,e=this._self._c||t;return e("text",[this._t("default",null,{_i:1})],2)},a=[]},"83fc":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("af34")),r={name:"class_select",props:{classId:{type:Number},secondClassId:{type:Array}},data:function(){return{secondClassList:[],classList:[]}},created:function(){this.getClass()},computed:{},watch:{secondClassId:function(){var t=this;if(this.secondClassId&&(!this.secondClassId||0!=this.secondClassId.length)){this.getClass();var e="";this.classId&&this.classList.forEach((function(i){i.id==t.classId&&(e+=i.title)})),this.secondClassId&&this.secondClassId.length>0&&this.secondClassList.forEach((function(i){t.secondClassId.includes(i.id)&&(e=e+" "+i.title)})),this.$emit("changeTypeText",e)}}},methods:{handleClose:function(){var t=this,e="";this.classId&&this.classList.forEach((function(i){i.id==t.classId&&(e+=i.title)})),this.secondClassId&&this.secondClassList.forEach((function(i){t.secondClassId.includes(i.id)&&(e=e+"\u3001"+i.title)})),this.$emit("closeClassSelect",e)},changeClass:function(t){t!=this.classId&&(this.$emit("changeClass",t),this.$emit("changeSecondClass",[]),this.getSecondClass(t))},changeSecondClass:function(t){var e=this.secondClassId,i=function(t,e){if(!Array.isArray(t)||!Array.isArray(e))return!1;return t.some((function(t){return e.some((function(e){return e&&void 0!==e.id&&Number(e.id)===t}))}))}(e,this.secondClassList);i?e.includes(t)?this.$emit("changeSecondClass",e.filter((function(e){return e!=t}))):this.$emit("changeSecondClass",[].concat((0,a.default)(e),[t])):this.$emit("changeSecondClass",[t])},getSecondClass:function(t){var e=this.classList.find((function(e){return e.id==t}));this.secondClassList=e.data},getClass:function(){this.classList=JSON.parse(uni.getStorageSync("classList")),this.classId?this.getSecondClass(this.classId):this.changeClass(this.classList[0].id)}}};e.default=r},8403:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("16bb")),r={data:function(){return{title:"",textData:{},contentList:[]}},onLoad:function(t){t.type&&(this.title=28==t.type?"\u7528\u6237\u6ce8\u518c\u534f\u8bae":26==t.type?"\u9690\u79c1\u653f\u7b56":"",this.getXieyi(t.type)),t.title&&(this.title=t.title)},methods:{getXieyi:function(e){var i=this;a.default.post("/user/getsystemtext",{type:e}).then((function(e){t("log",e,"======"," at pages/agreement/agreement.vue:47"),i.textData=e.data,i.processContent(i.textData.text)}))},processContent:function(e){if(e){this.contentList=[];var i,s=e,a=/]+src="([^">]+)"[^>]*>/g,r=0;while(null!==(i=a.exec(s))){var c=i.index,n=a.lastIndex,o=i[1];if(c>r){var d=s.substring(r,c);d.trim()&&this.contentList.push({type:"text",content:d})}this.contentList.push({type:"image",src:o}),r=n}if(r0&&void 0!==arguments[0]?arguments[0]:"url",e=this[t];e&&uni[this.linkType]({url:e})},$uvGetRect:function(t,e){var i=this;return new Promise((function(s){uni.createSelectorQuery().in(i)[e?"selectAll":"select"](t).boundingClientRect((function(t){e&&Array.isArray(t)&&t.length&&s(t),!e&&t&&s(t)})).exec()}))},getParentData:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";this.parent||(this.parent={}),this.parent=this.$uv.$parent.call(this,e),this.parent.children&&-1===this.parent.children.indexOf(this)&&this.parent.children.push(this),this.parent&&this.parentData&&Object.keys(this.parentData).map((function(e){t.parentData[e]=t.parent[e]}))},preventEvent:function(t){t&&"function"===typeof t.stopPropagation&&t.stopPropagation()},noop:function(t){this.preventEvent(t)}},onReachBottom:function(){uni.$emit("uvOnReachBottom")},beforeDestroy:function(){var t=this;if(this.parent&&n.array(this.parent.children)){var e=this.parent.children;e.map((function(i,s){i===t&&e.splice(s,1)}))}},unmounted:function(){var t=this;if(this.parent&&n.array(this.parent.children)){var e=this.parent.children;e.map((function(i,s){i===t&&e.splice(s,1)}))}}};e.default=v},8571:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$s(0,"i",t.show)?i("view",{staticClass:t._$s(0,"sc","uv-loading-icon"),class:t._$s(0,"c",[t.vertical&&"uv-loading-icon--vertical"]),style:t._$s(0,"s",[t.$uv.addStyle(t.customStyle)]),attrs:{_i:0}},[t._$s(1,"i",!t.webviewHide)?i("view",{ref:"ani",staticClass:t._$s(1,"sc","uv-loading-icon__spinner"),class:t._$s(1,"c",["uv-loading-icon__spinner--"+t.mode]),style:t._$s(1,"s",{color:t.color,width:t.$uv.addUnit(t.size),height:t.$uv.addUnit(t.size),borderTopColor:t.color,borderBottomColor:t.otherBorderColor,borderLeftColor:t.otherBorderColor,borderRightColor:t.otherBorderColor,"animation-duration":t.duration+"ms","animation-timing-function":"semicircle"===t.mode||"circle"===t.mode?t.timingFunction:""}),attrs:{_i:1}},[t._$s(2,"i","spinner"===t.mode)?t._l(t._$s(3,"f",{forItems:t.array12}),(function(e,s,a,r){return i("view",{key:t._$s(3,"f",{forIndex:a,key:s}),staticClass:t._$s("3-"+r,"sc","uv-loading-icon__dot"),attrs:{_i:"3-"+r}})})):t._e()],2):t._e(),t._$s(4,"i",t.text)?i("text",{staticClass:t._$s(4,"sc","uv-loading-icon__text"),style:t._$s(4,"s",[{fontSize:t.$uv.addUnit(t.textSize),color:t.textColor},t.$uv.addStyle(t.textStyle)]),attrs:{_i:4}},[t._v(t._$s(4,"t0-0",t._s(t.text)))]):t._e()]):t._e()},a=[]},"85b6":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{activeId:0,tabs:[{id:0,name:"\u7efc\u5408",sort:null},{id:1,name:"\u9500\u91cf",sort:null},{id:2,name:"\u4ef7\u683c",sort:null},{id:3,name:"\u6bd4\u4f8b",sort:null}],sortIndex:0,sortList:[{id:null,src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/d4d29a11-dc37-4852-907a-7ed3f31f01dd"},{id:1,src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/58518a61-ab6b-4580-90fd-3336b6512ece"},{id:2,src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/d79cd7c2-f9e2-4acc-a33b-c72e26c9a0b6"}]}},methods:{clickTap:function(t){var e={sort_type:null,sort_by:null};this.activeId!=t&&(this.sortIndex=0),0===t?this.activeId=t:(this.activeId=t,e.sort_type=t,this.sortIndex=1===this.sortIndex?2:1,e.sort_by=this.sortList[this.sortIndex].id),this.$emit("clickTap",e)}}}},"85e3":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",[i("custom-navbar",{attrs:{title:"\u5206\u7c7b",leftImg:"/static/images/whiteBack.png",showUser:!0,backgroundColor:"linear-gradient( 134deg, #F52540 0%, #E8101E 100%)",titleColor:"#fff",_i:1}}),i("serviecFirstTab",{attrs:{tabs:t.tabs,activeId:t.activeId,activeColor:"#E8101E",bgColor:"#fff",_i:2},on:{"tab-click":t.tabClick}}),i("CommonList",{ref:"groupRef",attrs:{apiUrl:"/user/getSearchList",initialQuery:t.queryData,listScrollHeight:"calc(100vh - "+(2*t.statusBarHeight+250)+"rpx)",_i:3},scopedSlots:t._u([{key:"headerScroll",fn:function(e,s,a){return[i("view",{staticClass:s._$s("5-"+a,"sc","icon-tabs"),attrs:{_i:"5-"+a}},t._l(s._$s("6-"+a,"f",{forItems:t.iconTabs}),(function(e,r,c,n){return i("view",{key:s._$s("6-"+a,"f",{forIndex:c,key:e.id}),staticClass:s._$s("6-"+a+n,"sc","icon-tab"),class:s._$s("6-"+a+n,"c",{active:t.queryData.second_class==e.id}),attrs:{_i:"6-"+a+n},on:{click:function(i){return t.getSecondlist(e.id)}}},[i("image",{staticClass:s._$s("7-"+a+n,"sc","icon-img"),attrs:{src:s._$s("7-"+a+n,"a-src",e.photo),mode:"aspectFill",_i:"7-"+a+n}}),i("text",{staticClass:s._$s("8-"+a+n,"sc","icon-text"),attrs:{_i:"8-"+a+n}},[t._v(s._$s("8-"+a+n,"t0-0",t._s(e.title)))])])})),0),i("filterVue",{key:s._$s("9-"+a,"a-key",t.activeId),attrs:{_i:"9-"+a},on:{"filter-change":t.handleFilterChange}})]}},{key:"listData",fn:function(t,e,s){var a=t.list;return[i("serviceCardList",{attrs:{list:a,btnText:"\u7acb\u5373\u9884\u7ea6",_i:"11-"+s}})]}},{key:"empty",fn:function(t,e,s){return[i("noData",{attrs:{_i:"13-"+s}})]}}])})],1)},r=[]},"85e5":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("af34")),c=s(i("ee10")),n=s(i("cab6")),o=s(i("666e")),d=s(i("16bb")),l=s(i("1c5d")),u=s(i("011c")),f={name:"buyWorkstation",data:function(){return{statusBarHeight:0,isLoad:!0,count:0,customizeTime:"",showTimeFilter:!1,title:"",tabs:[],tabsIndex:0,queryData:{page:1,limit:10},start_price:null,end_price:null,filterListId:null,infoDetailLists:[],filterListSelectLists:[],filterDetailsLists:[{id:1,title:"\u8425\u4e1a\u65f6\u95f4",details:[{id:1,name:"\u8425\u4e1a\u4e2d",value:""},{id:2,name:"24\u5c0f\u65f6\u8425\u4e1a",value:"00:00-23:59"},{id:3,name:"9-12\u65f6",value:"9:00-12:00"},{id:4,name:"12-14\u65f6",value:"12:00-14:00"},{id:5,name:"14-18\u65f6",value:"14:00-18:00"},{id:6,name:"18-24\u65f6",value:"18:00-23:59"},{id:7,name:"0-9\u65f6",value:"0:00-12:00"}]},{id:2,title:"\u4ef7\u683c",details:[{id:1,name:"0-10\u5143",value:"0-10"},{id:2,name:"10-30\u5143",value:"10-30"},{id:3,name:"30-50\u5143",value:"30-50"},{id:4,name:"50-100\u5143",value:"50-100"},{id:5,name:"100-300\u5143",value:"100-300"},{id:6,name:"300+",value:"300-"}]},{id:3,title:"\u6392\u5e8f",details:[{id:1,name:"\u4ef7\u683c\u6700\u4f4e",value:"1"},{id:2,name:"\u4ef7\u683c\u6700\u9ad8",value:"2"},{id:3,name:"\u9500\u91cf\u6700\u9ad8",value:"3"}]}],serviceHours:[{id:1,title:"\u4eca\u65e5\u53ef\u7ea6"},{id:2,title:"\u8fd1\u4e24\u65e5\u53ef\u7ea6"},{id:3,title:"\u8fd1\u4e09\u65e5\u53ef\u7ea6"}],serviceHoursIndex:null,serverlist:[],filterShow:!1}},components:{filterPopup:o.default,filterCard:u.default,timePicker:n.default,buyOrderCard:l.default},onLoad:function(){var t=this;return(0,c.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return t.statusBarHeight=uni.getSystemInfoSync().statusBarHeight,e.next=3,t.getClass();case 3:return e.next=5,t.refreshList();case 5:t.filterDetailsLists[0].details[0].value=t.getCurrentToEndOfDay();case 6:case"end":return e.stop()}}),e)})))()},onPullDownRefresh:function(){this.refreshList()},onReachBottom:function(){var e=this;return(0,c.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(t("log","onReachBottom"," at pages/syr/workstation/buyWorkstation.vue:251"),!(e.count<=e.queryData.page*e.queryData.limit)&&e.isLoad){i.next=3;break}return i.abrupt("return");case 3:e.queryData.page++,e.refreshList(!1);case 5:case"end":return i.stop()}}),i)})))()},methods:{filterChange:function(t){this.filterShow=t.show},placeOrder:function(e){t("log","\u4e0b\u5355\u5de5\u65f6ID",e," at pages/syr/workstation/buyWorkstation.vue:263"),uni.navigateTo({url:"/pages/syr/workstation/workstationDetail?id=".concat(e)})},getCurrentToEndOfDay:function(){var t=new Date,e=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0");return"".concat(e,":").concat(i,"-").concat(e,":").concat(i)},openTimePopup:function(){this.$refs.timePopup.openTimePopup()},openFilter:function(){this.$refs.filterPopup.open()},refreshList:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e&&(this.queryData.page=1,this.queryData.limit=10);var i=uni.getStorageSync("userAdrees");i?(this.queryData.longitude=i.addressRes.longitude,this.queryData.latitude=i.addressRes.latitude):(this.queryData.longitude=getApp().globalData.addressRes.longitude,this.queryData.latitude=getApp().globalData.addressRes.latitude),this.queryData.title=this.title,d.default.post("/syr/workSeat/list",this.queryData).then((function(i){e?(t.serverlist=i.data.list,t.count=i.data.count):(t.serverlist=[].concat((0,r.default)(t.serverlist),(0,r.default)(i.data.list)),t.count=i.data.count)})).finally((function(){t.isLoad=!0,uni.stopPullDownRefresh()}))},getClass:function(){var e=this;return(0,c.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.next=2,d.default.post("/syr/workSeat/classList").then((function(i){t("log","\u83b7\u53d6\u5de5\u65f6\u5206\u7c7b\u5217\u8868",i," at pages/syr/workstation/buyWorkstation.vue:310"),200==i.code&&(e.tabs=i.data,e.queryData.first_class_id=e.tabs[0].id,e.$store.commit("setworkHourSJClassList",i.data))}));case 2:case"end":return i.stop()}}),i)})))()},selctServiceHours:function(t,e){var i=this;return(0,c.default)(a.default.mark((function s(){return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return i.serviceHoursIndex=t.id,s.next=3,i.getDate(e);case 3:i.queryData.page=1,i.refreshList(),i.showTimeFilter=!1;case 6:case"end":return s.stop()}}),s)})))()},getDate:function(t){this.queryData.date=[];var e=new Date;e.setTime(e.getTime());var i=e.getMonth()+1;i<=9&&(i="0"+i);var s=e.getDate();s<=9&&(s="0"+s);var a=e.getFullYear()+"-"+i+"-"+s,r=new Date;r.setTime(r.getTime()+864e5);var c=r.getMonth()+1;c<=9&&(c="0"+c);var n=r.getDate();n<=9&&(n="0"+n);var o=r.getFullYear()+"-"+c+"-"+n,d=new Date;d.setTime(d.getTime()+1728e5);var l=d.getMonth()+1;l<=9&&(l="0"+l);var u=d.getDate();u<=9&&(u="0"+u);var f=d.getFullYear()+"-"+l+"-"+u;return 0==t?this.queryData.date=["".concat(a)]:1==t?this.queryData.date=["".concat(a),"".concat(o)]:2==t?this.queryData.date=["".concat(a),"".concat(o),"".concat(f)]:void 0},getFirstlist:function(e,i){this.tabsIndex=i;var s=e.id;e.ratio,e.title;this.queryData.first_class_id=s,delete this.queryData.second_class_id,this.queryData.page=1,t("log","tab",this.queryData," at pages/syr/workstation/buyWorkstation.vue:389"),this.refreshList()},getSecondlist:function(t){var e=t.id;t.ratio,t.title;this.queryData.second_class_id=e,this.queryData.page=1,this.refreshList()},handleSelectLists:function(e,i){e.length>0?this.$set(this.filterListSelectLists,i,!0):this.$set(this.filterListSelectLists,i,!1),t("log","\u5f53\u524d\u9009\u62e9\u7684\u7b5b\u9009\u5217\u8868",this.filterListSelectLists," at pages/syr/workstation/buyWorkstation.vue:412")},resetFilter:function(){this.infoDetailLists=[],this.filterListSelectLists=[],delete this.queryData.price,delete this.queryData.times,delete this.queryData.sort,this.customizeTime="",this.start_price=null,this.end_price=null,this.refreshList(),t("log","\u91cd\u7f6e\u7b5b\u9009\u6761\u4ef6"," at pages/syr/workstation/buyWorkstation.vue:425")},sureFilter:function(){this.customizeTime&&(this.queryData.times?this.queryData.times="".concat(this.queryData.times,",").concat(this.customizeTime):this.queryData.times=this.customizeTime),this.start_price||this.end_price?(this.queryData.price="".concat(this.start_price||0,"-").concat(this.end_price||""),this.$set(this.filterListSelectLists,2,!0)):this.$set(this.filterListSelectLists,2,!1),this.queryData.page=1,this.refreshList()},selectDetailTime:function(e){this.handleSelectLists(e,1),this.$set(this.infoDetailLists,0,e),this.queryData.times=e.join(","),t("log","\u9009\u62e9\u7684\u65f6\u95f4\u6bb5",e," at pages/syr/workstation/buyWorkstation.vue:449")},selectDetailPrice:function(e){if(e[0]){var i=e[0].split("-");this.start_price=i[0],this.end_price=i[1]||null}else this.start_price=null,this.end_price=null;this.handleSelectLists(e,2),this.$set(this.infoDetailLists,1,e),t("log","\u9009\u62e9\u7684\u4ef7\u683c\u533a\u95f4",e," at pages/syr/workstation/buyWorkstation.vue:463")},selectDetailSort:function(e){this.handleSelectLists(e,3),this.$set(this.infoDetailLists,2,e),this.queryData.sort=e[0],t("log","\u9009\u62e9\u7684\u6392\u5e8f\u65b9\u5f0f",e," at pages/syr/workstation/buyWorkstation.vue:471")},confirmTime:function(e){t("log","\u9009\u62e9\u7684\u65f6\u95f4",e," at pages/syr/workstation/buyWorkstation.vue:475"),this.customizeTime=e,this.$set(this.filterListSelectLists,1,!0)}}};e.default=f}).call(this,i("f3b9")["default"])},8611:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;s(i("16bb"));var a=s(i("2cbc")),r={name:"SelectServe",data:function(){return{info:[],valueList:[]}},components:{serveList:a.default},onLoad:function(){},methods:{submit:function(){var t=this.$refs.serveList.getSelectedItems();if(0!==t.length){var e=encodeURIComponent(JSON.stringify(t));uni.navigateTo({url:"/pages/promotion/setUpServe?selectedItems=".concat(e,"&type=3")})}else uni.showToast({title:"\u8bf7\u9009\u62e9\u81f3\u5c11\u4e00\u9879\u670d\u52a1",icon:"none"})}}};e.default=r},8642:function(t,e,i){"use strict";i.r(e);var s=i("9e9f"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},8645:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("3b2d")),r=s(i("16bb")),c={data:function(){return{statusBarHeight:0,applyState:1,backMag:"",identity:null}},onLoad:function(e){t("log","\u9875\u9762\u52a0\u8f7d\uff0coptions:",e," at pages/ruzhu/submitres.vue:75");var i=uni.getSystemInfoSync();this.statusBarHeight=i.statusBarHeight,e.applyState&&(this.applyState=Number(e.applyState)),t("log","applyState:",this.applyState,"\u7c7b\u578b:",(0,a.default)(this.applyState)," at pages/ruzhu/submitres.vue:84");var s=getApp();if(e.identity)this.identity=Number(e.identity),t("log","\u4eceoptions\u83b7\u53d6identity:",this.identity," at pages/ruzhu/submitres.vue:91");else if(s.globalData&&s.globalData.artisanType)this.identity=s.globalData.artisanType,t("log","\u4eceglobalData\u83b7\u53d6identity:",this.identity," at pages/ruzhu/submitres.vue:95");else try{var r=uni.getStorageSync("artisanType");r&&(this.identity=r,t("log","\u4ecelocalStorage\u83b7\u53d6identity:",this.identity," at pages/ruzhu/submitres.vue:102"))}catch(c){t("log","\u83b7\u53d6\u672c\u5730\u5b58\u50a8\u5931\u8d25:",c," at pages/ruzhu/submitres.vue:105")}3==this.applyState&&this.getUserInfo()},methods:{goBack:function(){uni.navigateBack()},getUserInfo:function(){var e=this;if(t("log","\u5f00\u59cb\u6267\u884cgetUserInfo\u65b9\u6cd5"," at pages/ruzhu/submitres.vue:121"),t("log","this.applyState:",this.applyState," at pages/ruzhu/submitres.vue:122"),t("log","this.identity:",this.identity," at pages/ruzhu/submitres.vue:123"),3===this.applyState){if(!this.identity)return t("error","identity\u672a\u5b9a\u4e49\uff0c\u65e0\u6cd5\u83b7\u53d6\u9a73\u56de\u4fe1\u606f"," at pages/ruzhu/submitres.vue:133"),void(this.backMag="\u65e0\u6cd5\u83b7\u53d6\u7528\u6237\u4fe1\u606f\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55");var i;if(1==this.identity)i=2;else{if(2!=this.identity)return t("error","\u672a\u77e5\u7684\u7528\u6237\u7c7b\u578bidentity:",this.identity," at pages/ruzhu/submitres.vue:145"),void(this.backMag="\u7528\u6237\u7c7b\u578b\u9519\u8bef\uff0c\u8bf7\u8054\u7cfb\u5ba2\u670d");i=3}t("log","\u8bf7\u6c42\u53c2\u6570 type:",i," at pages/ruzhu/submitres.vue:150"),r.default.post("/user/getuser",{type:i}).then((function(i){t("log","\u63a5\u53e3\u8fd4\u56de\u6570\u636e:",i," at pages/ruzhu/submitres.vue:153"),i.data&&i.data.back_text?(e.backMag=i.data.back_text,t("log","\u8bbe\u7f6ebackMag\u4e3a:",e.backMag," at pages/ruzhu/submitres.vue:156")):(e.backMag="\u672a\u77e5\u539f\u56e0\uff0c\u8bf7\u8054\u7cfb\u5ba2\u670d",t("log","\u63a5\u53e3\u8fd4\u56de\u65e0back_text\u5b57\u6bb5"," at pages/ruzhu/submitres.vue:159"))})).catch((function(i){t("error","\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u5931\u8d25:",i," at pages/ruzhu/submitres.vue:162"),e.backMag="\u83b7\u53d6\u9a73\u56de\u539f\u56e0\u5931\u8d25\uff0c\u8bf7\u8054\u7cfb\u5ba2\u670d"})).finally((function(){t("log","getUserInfo\u6267\u884c\u5b8c\u6210"," at pages/ruzhu/submitres.vue:165")}))}else t("log","applyState\u4e0d\u662f3\uff0c\u8df3\u8fc7"," at pages/ruzhu/submitres.vue:127")},goRuzhu:function(){uni.redirectTo({url:"/pages/ruzhu/ruzhu"})}}};e.default=c}).call(this,i("f3b9")["default"])},8697:function(t,e,i){"use strict";i.r(e);var s=i("6781"),a=i("e09e");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"86d4":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c=s(i("2cb5")),n={name:"uv-switch",mixins:[a.default,r.default,c.default],data:function(){return{bgColor:"#ffffff",innerValue:!1}},watch:{value:{immediate:!0,handler:function(t){if(t!==this.inactiveValue&&t!==this.activeValue)return this.$uv.error("v-model\u7ed1\u5b9a\u7684\u503c\u5fc5\u987b\u4e3ainactiveValue\u3001activeValue\u4e8c\u8005\u4e4b\u4e00");this.innerValue=t}}},created:function(){this.innerValue=this.value||this.modelValue},computed:{isActive:function(){return this.innerValue===this.activeValue},switchStyle:function(){var t={};return t.width=this.$uv.addUnit(2*this.$uv.getPx(this.size)+2),t.height=this.$uv.addUnit(this.$uv.getPx(this.size)+2),this.customInactiveColor&&(t.borderColor="rgba(0, 0, 0, 0)"),t.backgroundColor=this.isActive?this.activeColor:this.inactiveColor,t},nodeStyle:function(){var t={};t.width=this.$uv.addUnit(this.$uv.getPx(this.size)-this.space),t.height=this.$uv.addUnit(this.$uv.getPx(this.size)-this.space);var e=this.isActive?this.$uv.addUnit(this.space):this.$uv.addUnit(this.$uv.getPx(this.size));return t.transform="translateX(-".concat(e,")"),t},bgStyle:function(){var t={};return t.width=this.$uv.addUnit(2*this.$uv.getPx(this.size)-this.$uv.getPx(this.size)/2),t.height=this.$uv.addUnit(this.$uv.getPx(this.size)),t.backgroundColor=this.inactiveColor,t.transform="scale(".concat(this.isActive?0:1,")"),t},customInactiveColor:function(){return"#fff"!==this.inactiveColor&&"#ffffff"!==this.inactiveColor}},methods:{clickHandler:function(){var t=this;if(!this.disabled&&!this.loading){var e=this.isActive?this.inactiveValue:this.activeValue;this.asyncChange||(this.$emit("input",e),this.$emit("update:modelValue",e)),this.$nextTick((function(){t.$emit("change",e)}))}}}};e.default=n},"86e1":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c=s(i("4a0a")),n={name:"uv-modal",mixins:[a.default,r.default,c.default],data:function(){return{loading:!1}},computed:{nvueStyle:function(){return{}}},methods:{open:function(){this.$refs.modalPopup.open(),this.loading&&(this.loading=!1)},close:function(){this.$refs.modalPopup.close()},popupChange:function(t){t.show||this.$emit("close")},confirmHandler:function(){this.loading||this.$emit("confirm"),this.asyncClose?this.loading=!0:this.close()},cancelHandler:function(){this.$emit("cancel"),this.close()},closeLoading:function(){var t=this;this.$nextTick((function(){t.loading=!1}))}}};e.default=n},"86f7":function(t,e,i){"use strict";i.r(e);var s=i("bad7"),a=i("dfdd");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},8759:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5e97\u94fa\u56fe\u7247",leftImg:"/static/images/back.png",showUser:!0,backgroundColor:"#fff",titleColor:"#000",borderBottom:"none",_i:1}}),i("view",{staticClass:t._$s(2,"sc","container-titles flex-row-center-between"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","titles-left"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","titles-bar"),attrs:{_i:4}}),i("text",{staticClass:t._$s(5,"sc","titles-title"),attrs:{_i:5}})]),i("view",{staticClass:t._$s(6,"sc","titles-right"),attrs:{_i:6}},[i("text",{staticClass:t._$s(7,"sc","titles-text"),attrs:{_i:7}})])]),t._l(t._$s(8,"f",{forItems:t.cardList[t.type]}),(function(e,s,a,r){return i("view",{key:t._$s(8,"f",{forIndex:a,key:s}),staticClass:t._$s("8-"+r,"sc","container-card"),attrs:{_i:"8-"+r}},[i("view",{staticClass:t._$s("9-"+r,"sc","card-header flex-row-center-between"),attrs:{_i:"9-"+r}},[i("text",{staticClass:t._$s("10-"+r,"sc","card-title"),attrs:{_i:"10-"+r}},[t._v(t._$s("10-"+r,"t0-0",t._s(e.title)))]),i("view",{staticClass:t._$s("11-"+r,"sc","card-header-right"),attrs:{_i:"11-"+r},on:{click:function(i){return t.goList(e.id)}}},[i("text",{staticClass:t._$s("12-"+r,"sc","card-header-right-text"),attrs:{_i:"12-"+r}}),i("image",{staticClass:t._$s("13-"+r,"sc","card-header-right-img"),attrs:{_i:"13-"+r}})])]),t._$s("14-"+r,"i",1==t.type)?i("view",{staticClass:t._$s("14-"+r,"sc","card-content flex-row-center"),attrs:{_i:"14-"+r}},[t._$s("15-"+r,"i",!(1==e.id&&t.imgVideoList[e.id]&&t.imgVideoList[e.id].length))?i("view",{staticClass:t._$s("15-"+r,"sc","content-default"),attrs:{_i:"15-"+r},on:{click:function(i){return t.goAdd(e.id)}}},[i("image",{staticClass:t._$s("16-"+r,"sc","content-default-img"),attrs:{_i:"16-"+r}}),i("text",{staticClass:t._$s("17-"+r,"sc","content-default-text"),attrs:{_i:"17-"+r}})]):t._e(),t._l(t._$s("18-"+r,"f",{forItems:t.imgVideoList[e.id]}),(function(s,a,c,n){return t._$s("18-"+r+"-"+n,"i",t.imgVideoList[e.id])?i("view",{key:t._$s("18-"+r,"f",{forIndex:c,key:a}),staticClass:t._$s("18-"+r+"-"+n,"sc","content-photo"),attrs:{_i:"18-"+r+"-"+n},on:{click:function(i){return t.goAdd(e.id,s)}}},[i("image",{staticClass:t._$s("19-"+r+"-"+n,"sc","content-photo-img"),attrs:{src:t._$s("19-"+r+"-"+n,"a-src",t.getItem(s).url),_i:"19-"+r+"-"+n}}),i("view",{staticClass:t._$s("20-"+r+"-"+n,"sc","content-photo-title"),attrs:{_i:"20-"+r+"-"+n}},[t._v(t._$s("20-"+r+"-"+n,"t0-0",t._s(t.getItem(s).name)))]),t._$s("21-"+r+"-"+n,"i",1==s.apply_state)?i("view",{staticClass:t._$s("21-"+r+"-"+n,"sc","content-photo-mask"),attrs:{_i:"21-"+r+"-"+n}},[i("image",{staticClass:t._$s("22-"+r+"-"+n,"sc","photo-mask-img"),attrs:{_i:"22-"+r+"-"+n}}),i("text",{staticClass:t._$s("23-"+r+"-"+n,"sc","photo-mask-text"),attrs:{_i:"23-"+r+"-"+n}})]):t._e()]):t._e()}))],2):i("view",{staticClass:t._$s("24-"+r,"sc","card-content flex-row-center"),attrs:{_i:"24-"+r}},[t._$s("25-"+r,"i",!(1==e.id&&t.imgVideoList[e.id]&&t.imgVideoList[e.id].length))?i("view",{staticClass:t._$s("25-"+r,"sc","content-default content-default2"),attrs:{_i:"25-"+r},on:{click:function(i){return t.goAdd(e.id)}}},[i("image",{staticClass:t._$s("26-"+r,"sc","content-default-img"),attrs:{_i:"26-"+r}}),i("text",{staticClass:t._$s("27-"+r,"sc","content-default-text"),attrs:{_i:"27-"+r}})]):t._e(),t._l(t._$s("28-"+r,"f",{forItems:t.imgVideoList[e.id]}),(function(s,a,c,n){return t._$s("28-"+r+"-"+n,"i",t.imgVideoList[e.id])?i("view",{key:t._$s("28-"+r,"f",{forIndex:c,key:a}),staticClass:t._$s("28-"+r+"-"+n,"sc","content-photo content-video"),attrs:{_i:"28-"+r+"-"+n},on:{click:function(i){return t.goAdd(e.id,s)}}},[i("image",{staticClass:t._$s("29-"+r+"-"+n,"sc","content-photo-video"),attrs:{src:t._$s("29-"+r+"-"+n,"a-src",t.getItem(s).url),_i:"29-"+r+"-"+n}}),i("view",{staticClass:t._$s("30-"+r+"-"+n,"sc","content-photo-title"),attrs:{_i:"30-"+r+"-"+n}},[t._v(t._$s("30-"+r+"-"+n,"t0-0",t._s(t.getItem(s).name)))]),i("view",{staticClass:t._$s("31-"+r+"-"+n,"sc","content-photo-play"),attrs:{_i:"31-"+r+"-"+n}},[i("image",{staticClass:t._$s("32-"+r+"-"+n,"sc","content-photo-play-img"),attrs:{_i:"32-"+r+"-"+n}})]),t._$s("33-"+r+"-"+n,"i",1==s.apply_state)?i("view",{staticClass:t._$s("33-"+r+"-"+n,"sc","content-photo-mask"),attrs:{_i:"33-"+r+"-"+n}},[i("image",{staticClass:t._$s("34-"+r+"-"+n,"sc","photo-mask-img"),attrs:{_i:"34-"+r+"-"+n}}),i("view",{staticClass:t._$s("35-"+r+"-"+n,"sc","photo-mask-text"),attrs:{_i:"35-"+r+"-"+n}})]):t._e(),t._$s("36-"+r+"-"+n,"i",3==s.apply_state)?i("view",{staticClass:t._$s("36-"+r+"-"+n,"sc","content-photo-mask"),attrs:{_i:"36-"+r+"-"+n}},[i("image",{staticClass:t._$s("37-"+r+"-"+n,"sc","photo-mask-img"),attrs:{_i:"37-"+r+"-"+n}}),i("view",{staticClass:t._$s("38-"+r+"-"+n,"sc","photo-mask-text"),attrs:{_i:"38-"+r+"-"+n}})]):t._e()]):t._e()}))],2)])}))],2)},r=[]},"87fa":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","service-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5df2\u552e\u5de5\u65f6\u5217\u8868",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","flexed"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","tab-container"),attrs:{_i:3}},t._l(t._$s(4,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("view",{key:t._$s(4,"f",{forIndex:a,key:s}),class:t._$s("4-"+r,"c",["tab-item",{active:t.currentTab===s}]),attrs:{_i:"4-"+r},on:{click:function(i){return t.switchTab(s,e.id)}}},[t._v(t._$s("4-"+r,"t0-0",t._s(e.text)))])})),0)]),t._$s(5,"i",t.services&&0!=t.services.length)?i("view",{staticClass:t._$s(5,"sc","service-list"),attrs:{_i:5}},t._l(t._$s(6,"f",{forItems:t.services}),(function(e,s,a,r){return i("orderCard",{key:t._$s(6,"f",{forIndex:a,key:"6-"+r}),attrs:{dataItem:e,_i:"6-"+r},on:{cancel:t.cancel,goDetail:t.goDetail,accept:t.accept,start:t.startServe,done:t.done}})})),1):i("noData",{attrs:{_i:7}}),t._$s(8,"i",t.hasMore)?i("view",{staticClass:t._$s(8,"sc","load-more"),attrs:{_i:8}},[i("text")]):t._e(),i("serviceCodeInput",{attrs:{show:t.showInput,_i:10},on:{close:function(e){t.showInput=!1},confirm:t.onConfirm}})],1)},r=[]},"882c":function(t,e,i){"use strict";i.r(e);var s=i("4f10"),a=i("39f7");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"33d90208",null,!1,s["a"],void 0);e["default"]=n.exports},8846:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","search-address-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u641c\u7d22\u5730\u5740",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","search-container"),attrs:{_i:2}},[i("text",{staticClass:t._$s(3,"sc","search-container-text"),attrs:{_i:3},on:{click:t.goSelectCity}},[t._v(t._$s(3,"t0-0",t._s(t.city.name)))]),i("image",{staticClass:t._$s(4,"sc","text-img"),attrs:{_i:4}}),i("view",{staticClass:t._$s(5,"sc","hao-search"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","hao-searchCent"),attrs:{_i:6}},[i("image",{staticClass:t._$s(7,"sc","hao-searchImg"),attrs:{_i:7}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.inputKey,expression:"inputKey"}],staticClass:t._$s(8,"sc","hao-searchInput"),attrs:{_i:8},domProps:{value:t._$s(8,"v-model",t.inputKey)},on:{input:[function(e){e.target.composing||(t.inputKey=e.target.value)},t.searchInput]}})])])]),t._$s(9,"i",t.searchResults)?i("scroll-view",{staticClass:t._$s(9,"sc","address-list"),style:t._$s(9,"s","height: "+t.listHeight+"px"),attrs:{_i:9}},t._l(t._$s(10,"f",{forItems:t.searchResults}),(function(e,s,a,r){return i("view",{key:t._$s(10,"f",{forIndex:a,key:s}),staticClass:t._$s("10-"+r,"sc","address-item"),attrs:{_i:"10-"+r},on:{click:function(i){return t.selectAddress(e)}}},[i("view",{staticClass:t._$s("11-"+r,"sc","address-info"),attrs:{_i:"11-"+r}},[i("text",{staticClass:t._$s("12-"+r,"sc","address-name"),attrs:{_i:"12-"+r}},[t._v(t._$s("12-"+r,"t0-0",t._s(e.name)))]),i("text",{staticClass:t._$s("13-"+r,"sc","address-detail"),attrs:{_i:"13-"+r}},[t._v(t._$s("13-"+r,"t0-0",t._s(e.address)))])]),t._$s("14-"+r,"i",e.distance)?i("view",{staticClass:t._$s("14-"+r,"sc","address-distance"),attrs:{_i:"14-"+r}},[t._$s("15-"+r,"i",e.distance<1e4)?i("text",{staticClass:t._$s("15-"+r,"sc","distance-text"),attrs:{_i:"15-"+r}},[t._v(t._$s("15-"+r,"t0-0",t._s(e.distance)))]):i("text",{staticClass:t._$s("16-"+r,"sc","distance-text"),attrs:{_i:"16-"+r}},[t._v(t._$s("16-"+r,"t0-0",t._s(e.distance/1e3)))])]):t._e()])})),0):t._e()],1)},r=[]},"886e":function(t,e,i){"use strict";i.r(e);var s=i("56d5"),a=i("6c4a");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},8882:function(t,e,i){"use strict";i.r(e);var s=i("02f7"),a=i("d89a");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"120995ea",null,!1,s["a"],void 0);e["default"]=n.exports},8935:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","bind-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u7ed1\u5b9a\u8d26\u6237","show-back":!0,backgroundColor:"#fff",_i:1}}),i("view",{staticClass:t._$s(2,"sc","account-list"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","account-item"),attrs:{_i:3},on:{click:t.bindWechat}},[i("view",{staticClass:t._$s(4,"sc","account-info"),attrs:{_i:4}},[i("image",{staticClass:t._$s(5,"sc","account-icon"),attrs:{_i:5}}),i("text",{staticClass:t._$s(6,"sc","account-name"),attrs:{_i:6}})]),i("image",{staticClass:t._$s(7,"sc","arrow-icon"),attrs:{_i:7}})]),i("view",{staticClass:t._$s(8,"sc","account-item"),attrs:{_i:8},on:{click:t.bindAlipay}},[i("view",{staticClass:t._$s(9,"sc","account-info"),attrs:{_i:9}},[i("image",{staticClass:t._$s(10,"sc","account-icon"),attrs:{_i:10}}),i("text",{staticClass:t._$s(11,"sc","account-name"),attrs:{_i:11}})]),i("image",{staticClass:t._$s(12,"sc","arrow-icon"),attrs:{_i:12}})])])],1)},r=[]},"893b":function(t,e,i){"use strict";i.r(e);var s=i("043a"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"899c":function(t,e,i){"use strict";function s(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;if(t=String(t).toLowerCase(),t&&i.test(t)){if(4===t.length){for(var s="#",a=1;a<4;a+=1)s+=t.slice(a,a+1).concat(t.slice(a,a+1));t=s}for(var r=[],c=1;c<7;c+=2)r.push(parseInt("0x".concat(t.slice(c,c+2))));return e?"rgb(".concat(r[0],",").concat(r[1],",").concat(r[2],")"):r}if(/^(rgb|RGB)/.test(t)){var n=t.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(",");return n.map((function(t){return Number(t)}))}return t}function a(t){var e=t;if(/^(rgb|RGB)/.test(e)){for(var i=e.replace(/(?:\(|\)|rgb|RGB)*/g,"").split(","),s="#",a=0;a0&&void 0!==arguments[0]?arguments[0]:"rgb(0, 0, 0)",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"rgb(255, 255, 255)",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,r=s(t,!1),c=r[0],n=r[1],o=r[2],d=s(e,!1),l=d[0],u=d[1],f=d[2],_=(l-c)/i,p=(u-n)/i,v=(f-o)/i,h=[],m=0;m=0)?i("view",{staticClass:t._$s(20,"sc","detail-info-user__heard__name__sales"),attrs:{_i:20}},[i("text",{staticClass:t._$s(21,"sc","detail-info-user__heard__name__sales__text1"),attrs:{_i:21}}),i("text",{staticClass:t._$s(22,"sc","detail-info-user__heard__name__sales__text2"),attrs:{_i:22}},[t._v(t._$s(22,"t0-0",t._s(t.sjdetail.all_sales_num)))]),i("text",{staticClass:t._$s(23,"sc","detail-info-user__heard__name__sales__text1"),attrs:{_i:23}})]):t._e()])]),i("view",{staticClass:t._$s(24,"sc","detail-info-user__time"),attrs:{_i:24}},[i("view",{staticClass:t._$s(25,"sc","detail-info-user__time__left"),attrs:{_i:25}},[i("text",{staticClass:t._$s(26,"sc","detail-info-user__time__left__text1"),attrs:{_i:26}}),i("text",{staticClass:t._$s(27,"sc","detail-info-user__time__left__text2"),attrs:{_i:27}},[t._v(t._$s(27,"t0-0",t._s(t.sjdetail.business_time)))])]),i("view",{staticClass:t._$s(28,"sc","detail-info-user__time__right"),attrs:{_i:28},on:{click:t.goInformation}},[i("text"),i("image",{staticClass:t._$s(30,"sc","detail-info-user__time__right__img"),attrs:{_i:30}})])]),i("view",{staticClass:t._$s(31,"sc","detail-info-user__tabs"),attrs:{_i:31}},t._l(t._$s(32,"f",{forItems:t.tabsPopList}),(function(e,s,a,r){return i("view",{key:t._$s(32,"f",{forIndex:a,key:s}),staticClass:t._$s("32-"+r,"sc","detail-info-user__tabs__tab"),attrs:{_i:"32-"+r}},[t._v(t._$s("32-"+r,"t0-0",t._s(e.name)))])})),0),i("view",{staticClass:t._$s(33,"sc","detail-info-user__connect"),attrs:{_i:33}},[i("view",{staticClass:t._$s(34,"sc","connect-row address-row"),attrs:{_i:34}},[i("view",{staticClass:t._$s(35,"sc","address-section"),attrs:{_i:35},on:{click:t.openMap}},[i("view",{staticClass:t._$s(36,"sc","address-content"),attrs:{_i:36}},[i("text",{staticClass:t._$s(37,"sc","address-text"),attrs:{_i:37}},[t._v(t._$s(37,"t0-0",t._s(t.sjdetail.address)))]),i("image",{staticClass:t._$s(38,"sc","address-arrow"),attrs:{_i:38}})])]),t._$s(39,"i",t.sjdetail.distance)?i("view",{staticClass:t._$s(39,"sc","distance-section"),attrs:{_i:39}},[i("image",{staticClass:t._$s(40,"sc","address-icon"),attrs:{_i:40}}),i("text",{staticClass:t._$s(41,"sc","distance-value"),attrs:{_i:41}},[t._v(t._$s(41,"t0-0",t._s(t.sjdetail.distance.toFixed(2))))])]):t._e()]),i("view",{staticClass:t._$s(42,"sc","connect-row phone-row"),attrs:{_i:42}},[i("view",{staticClass:t._$s(43,"sc","phone-section"),attrs:{_i:43},on:{click:function(e){return t.contactService(t.sjdetail.legal_phone)}}},[i("view",{staticClass:t._$s(44,"sc","phone-content"),attrs:{_i:44}},[i("text",{staticClass:t._$s(45,"sc","phone-label"),attrs:{_i:45}}),i("text",{staticClass:t._$s(46,"sc","phone-number"),attrs:{_i:46}},[t._v(t._$s(46,"t0-0",t._s(t.sjdetail.legal_phone)))]),i("image",{staticClass:t._$s(47,"sc","phone-arrow"),attrs:{_i:47}})])]),i("view",{staticClass:t._$s(48,"sc","icon-section"),attrs:{_i:48}},[i("image",{staticClass:t._$s(49,"sc","nav-icon"),attrs:{_i:49},on:{click:t.openMap}}),i("image",{staticClass:t._$s(50,"sc","phone-icon"),attrs:{_i:50},on:{click:function(e){return t.contactService(t.sjdetail.legal_phone)}}})])])]),i("image",{staticClass:t._$s(51,"sc","detail-info-user__banner"),attrs:{_i:51}})]),i("view",{staticClass:t._$s(52,"sc","shop-tabs-outside"),attrs:{_i:52}},[i("view",{class:t._$s(53,"c",["shop-tab-outside","projects"===t.activeTab?"active":""]),attrs:{_i:53},on:{click:function(e){return t.scrollToSection("projects-section")}}}),t._$s(54,"i",t.artisanList.length>0)?i("view",{class:t._$s(54,"c",["shop-tab-outside","artisans"===t.activeTab?"active":""]),attrs:{_i:54},on:{click:function(e){return t.scrollToSection("artisans-section")}}}):t._e()]),i("view",{staticClass:t._$s(55,"sc","detail-info-shop"),attrs:{id:"projects-section",_i:55}},[i("projectTabs",{attrs:{tabsPopList:t.tabsPopList,_i:56},on:{clickTap:t.clickTap,clickPopTap:t.clickPopTap}}),i("CommonList",{ref:"groupRef",attrs:{background:"transparent",apiUrl:"/user/getserverlist",listScrollHeight:200*t.count+80+"rpx",_i:57},on:{"load-success-all":t.listSuccess},scopedSlots:t._u([{key:"listData",fn:function(t,e,s){var a=t.list;return[i("serviceCardList",{attrs:{list:a,_i:"59-"+s}})]}},{key:"empty",fn:function(t,e,s){return[i("noData",{attrs:{top:"0",_i:"61-"+s}})]}}])})],1)]),t._$s(62,"i",t.artisanList.length>0||t.showMockArtisans)?i("view",{staticClass:t._$s(62,"sc","artisan-showcase-section"),attrs:{id:"artisans-section",_i:62}},[i("view",{staticClass:t._$s(63,"sc","showcase-header"),attrs:{_i:63}},[i("text",{staticClass:t._$s(64,"sc","showcase-title"),attrs:{_i:64}},[t._v(t._$s(64,"t0-0",t._s(t.displayArtisanCount)))]),i("view",{staticClass:t._$s(65,"sc","view-all-btn"),attrs:{_i:65},on:{click:t.viewAllArtisans}},[i("text"),i("image",{staticClass:t._$s(67,"sc","view-all-arrow"),attrs:{_i:67}})])]),i("scroll-view",{staticClass:t._$s(68,"sc","showcase-scroll"),attrs:{"scroll-left":t._$s(68,"a-scroll-left",t.scrollLeft),_i:68}},[i("view",{staticClass:t._$s(69,"sc","showcase-list"),attrs:{_i:69}},t._l(t._$s(70,"f",{forItems:t.displayArtisanList}),(function(e,s,a,r){return i("view",{key:t._$s(70,"f",{forIndex:a,key:s}),staticClass:t._$s("70-"+r,"sc","showcase-item"),attrs:{_i:"70-"+r},on:{click:function(i){return t.viewArtisanDetail(e)}}},[i("image",{staticClass:t._$s("71-"+r,"sc","showcase-avatar"),attrs:{src:t._$s("71-"+r,"a-src",e.avatar),_i:"71-"+r}}),i("text",{staticClass:t._$s("72-"+r,"sc","showcase-name"),attrs:{_i:"72-"+r}},[t._v(t._$s("72-"+r,"t0-0",t._s(e.name)))])])})),0)])]):t._e()],1)},r=[]},"8bff":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("34cf")),c=s(i("ee10")),n=s(i("16bb")),o=i("53d1"),d=s(i("668a")),l=s(i("eae7")),u=s(i("91d2")),f=s(i("32a4")),_={data:function(){return{isShowPer:!1,nowQer:"xc",identity:"",userId:null,indicatorStyle:"height: 68rpx;",formData:{head_photo:"",name:"",account:"",idcard_num:"",idcard_positive:"",idcard_negative:"",idcard_hands:"",health_card:"",qualifications:[],detail:"",dependency:"",address:"",get_msg_method:"",invite_code_other:"",servers_kill:[],servers_region:[],major:"",work_state:"",second_phone:"",default_times:"",uscc_photo:"",shop_photo:"",legal_name:"",legal_phone:"",legal_idcard_num:"",legal_idcard_positive:"",legal_idcard_negative:"",for_shop:""},ChinaCitys:"",work_state:"",get_msg_method:"",major:"",showServicePopupFlag:!1,selectedServicesText:"",serviceList:[],showLocationPopupFlag:!1,showRegionPopupFlag:!1,currentTab:0,regionTabs:["\u7701","\u5e02","\u533a"],cityList:[],districtList:[],selectedProvince:null,selectedCity:null,selectedDistricts:[],selectedRegionText:"",locatinCitys:[],locationAreas:[],locationValue:[0,0,0],showTimePicker:!1,pickerValue:[8,0,0,18,0],hours:Array.from({length:24},(function(t,e){return e<10?"0".concat(e):"".concat(e)})),minutes:Array.from({length:60},(function(t,e){return e<10?"0".concat(e):"".concat(e)})),timeType:"start",isSubmit:!1}},onLoad:function(t){var e=this;return(0,c.default)(a.default.mark((function t(){var i,s,r;return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return e.identity=getApp().globalData.artisanType,i=e,i.ChinaCitys=d.default,i.locatinCitys=i.ChinaCitys[0].citys,i.locationAreas=i.locatinCitys[0].areas,n.default.post("/user/firstclass").then((function(t){i.serviceList=t.data})),t.next=8,n.default.post("/user/getsyrorsjstate",{type:i.identity});case 8:s=t.sent,r=1==i.identity?2:2==i.identity?3:"",3==s.data.apply_state&&n.default.post("/sj/user/getuser",{type:r}).then((function(t){i.formData=t.data,i.decideKill(),i.selectedServicesText=i.formData.servers_kill_arr.join("\u3001"),i.get_msg_method=["\u670b\u53cb\u5708","\u6296\u97f3","\u5730\u63a8","\u670b\u53cb\u4ecb\u7ecd","\u5fae\u535a"][i.formData.get_msg_method-1],i.major=["\u5b9e\u4e60","1-3\u5e74","3-5\u5e74","5-10\u5e74","10\u5e74\u4ee5\u4e0a"][i.formData.major-1],1==i.identity&&(i.selectedRegionText=i.formData.servers_region.join("\u3001"),i.work_state=["\u6709\u5de5\u4f5c","\u65e0\u5de5\u4f5c"][i.formData.work_state-1])})),i.getUserInfo();case 12:case"end":return t.stop()}}),t)})))()},computed:{startTime:function(){return{hour:this.hours[this.pickerValue[0]],minute:this.minutes[this.pickerValue[1]]}},endTime:function(){return{hour:this.hours[this.pickerValue[3]],minute:this.minutes[this.pickerValue[4]]}}},methods:{getUserInfo:function(){var t=this;n.default.post("/sj/user/getuser",{type:1}).then((function(e){t.formData.account=e.data.account,t.userId=e.data.id}))},addImg:function(t){this.formData.qualifications=this.formData.qualifications.concat(t)},deleteImage:function(t){this.formData.qualifications.splice(t,1)},getAddressInfo:function(){this.formData.dependency?uni.navigateTo({url:"/pages/address/search?dependency=".concat(this.formData.dependency)}):uni.navigateTo({url:"/pages/address/search"})},editAddress:function(t){var e=t.location.split(",");this.$set(this.formData,"address",t.name),this.$set(this.formData,"latitude",e[1]),this.$set(this.formData,"longitude",e[0])},openPicker:function(t){var e=this;"get_msg_method"==t?uni.showActionSheet({itemList:["\u670b\u53cb\u5708","\u6296\u97f3","\u5730\u63a8","\u670b\u53cb\u4ecb\u7ecd","\u5fae\u535a"],success:function(t){e.formData.get_msg_method=[1,2,3,4,5][t.tapIndex],e.get_msg_method=["\u670b\u53cb\u5708","\u6296\u97f3","\u5730\u63a8","\u670b\u53cb\u4ecb\u7ecd","\u5fae\u535a"][t.tapIndex]}}):"major"==t?uni.showActionSheet({itemList:["\u5b9e\u4e60","1-3\u5e74","3-5\u5e74","5-10\u5e74","10\u5e74\u4ee5\u4e0a"],success:function(t){e.formData.major=[1,2,3,4,5][t.tapIndex],e.major=["\u5b9e\u4e60","1-3\u5e74","3-5\u5e74","5-10\u5e74","10\u5e74\u4ee5\u4e0a"][t.tapIndex]}}):"default_times"==t?this.showTimePicker=!0:"dependency"==t?this.showLocationPopupFlag=!0:"work_state"==t&&uni.showActionSheet({itemList:["\u6709\u5de5\u4f5c","\u65e0\u5de5\u4f5c"],success:function(t){e.formData.work_state=[1,2][t.tapIndex],e.work_state=["\u6709\u5de5\u4f5c","\u65e0\u5de5\u4f5c"][t.tapIndex]}})},showServicePopup:function(){this.showServicePopupFlag=!0},decideKill:function(){var t=this;t.serviceList.forEach((function(e,i){t.formData.servers_kill.forEach((function(s,a){e.id==s&&t.$set(t.serviceList[i],"checked",!0)}))}))},hideServicePopup:function(){this.showServicePopupFlag=!1},hideLocationPopup:function(){this.showLocationPopupFlag=!1},toggleServiceSelect:function(t){this.$set(this.serviceList[t],"checked",!this.serviceList[t].checked)},confirmServiceSelect:function(){var t=this.serviceList.filter((function(t){return t.checked})).map((function(t){return t.title})),e=this.serviceList.filter((function(t){return t.checked})).map((function(t){return t.id}));0!==t.length?(this.formData.servers_kill=e,this.selectedServicesText=t.join("\u3001"),this.hideServicePopup()):uni.showToast({title:"\u8bf7\u81f3\u5c11\u9009\u62e9\u4e00\u4e2a\u670d\u52a1\u6280\u80fd",icon:"none"})},showRegionPopup:function(){this.showRegionPopupFlag=!0,this.currentTab=0},hideRegionPopup:function(){this.showRegionPopupFlag=!1,this.currentTab=0,this.cityList=[],this.districtList=[],this.selectedProvince=null,this.selectedCity=null,this.selectedDistricts=[]},switchTab:function(t){t=s){var a=(parseInt(this.hours[e[0]])+1)%24;e[3]=a,e[4]=e[1]}this.pickerValue=e},formatTime:function(t){return"".concat(t.hour,":").concat(t.minute)},confirmTime:function(){"1"==this.identity?this.formData.default_times=this.formatTime(this.startTime)+"-"+this.formatTime(this.endTime):this.formData.business_time=this.formatTime(this.startTime)+"-"+this.formatTime(this.endTime),this.hideTimePopup()},hideTimePopup:function(){this.showTimePicker=!1},ckeckisShowPer:function(t){this.isShowPer=t},ckecknowQer:function(t){this.nowQer=t},openCamera:function(e){var i=this;return(0,c.default)(a.default.mark((function s(){var r;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return t("log","type============",e," at pages/ruzhu/complete.vue:951"),i.isShowPer=!1,s.prev=2,s.next=5,l.default.handleUpload(i.userId,i.identity+1);case 5:if(r=s.sent,t("log","\u4e0a\u4f20\u5355\u5f20\u56fe\u7247",r," at pages/ruzhu/complete.vue:955"),uni.hideLoading(),"avatar"!=e){s.next=11;break}return i.formData.head_photo=r,s.abrupt("return");case 11:"1"==i.identity?"idcard_positive"==e?i.formData.idcard_positive=r:"idcard_negative"==e?i.formData.idcard_negative=r:"idcard_hands"==e?i.formData.idcard_hands=r:"health_card"==e?i.formData.health_card=r:"uscc_photo"==e?i.formData.uscc_photo=r:"shop_photo"==e&&(i.formData.shop_photo=r):"legal_idcard_positive"==e?i.formData.legal_idcard_positive=r:"legal_idcard_negative"==e?i.formData.legal_idcard_negative=r:"uscc_photo"==e&&(i.formData.uscc_photo=r),s.next=17;break;case 14:s.prev=14,s.t0=s["catch"](2),t("log",s.t0," at pages/ruzhu/complete.vue:985");case 17:case"end":return s.stop()}}),s,null,[[2,14]])})))()},showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))},chooseImage:function(e){var i=this;return(0,c.default)(a.default.mark((function s(){var r,c,n,o,d,l,_,p,v,h;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(s.prev=0,r=uni.getSystemInfoSync(),"ios"!==r.platform){s.next=6;break}i.openCamera(e),s.next=37;break;case 6:return c="",n="","ios"===r.platform?(c="photo_library",n="camera"):(c="android.permission.READ_EXTERNAL_STORAGE,android.permission.WRITE_EXTERNAL_STORAGE",n="android.permission.CAMERA"),o=!plus.storage.getItem("perm_".concat(n)),d=!plus.storage.getItem("perm_".concat(c)),(d||o)&&(i.isShowPer=!0),i.nowQer="xc",s.next=15,u.default.checkPermission("photo_library","\u9700\u8981\u76f8\u518c\u6743\u9650\u7528\u4e8e\u4e0a\u4f20\u7167\u7247");case 15:return l=s.sent,i.nowQer="xj",s.next=19,u.default.checkPermission("camera","\u9700\u8981\u76f8\u673a\u6743\u9650\u7528\u4e8e\u62cd\u6444\u7167\u7247");case 19:if(_=s.sent,i.isShowPer=!1,i.nowQer="",!l.granted||!_.granted){s.next=25;break}return i.openCamera(e),s.abrupt("return");case 25:return s.next=27,i.showPermissionDialog("\u76f8\u673a\u76f8\u518c\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u8bbf\u95ee\u60a8\u7684\u76f8\u673a\u4ee5\u53ca\u76f8\u518c\u4ee5\u5b8c\u6210\u66f4\u6362\u5934\u50cf\u529f\u80fd");case 27:if(p=s.sent,p){s.next=30;break}return s.abrupt("return");case 30:return s.next=32,u.default.requestPermission("photo_library","\u6211\u4eec\u9700\u8981\u8bbf\u95ee\u60a8\u7684\u76f8\u518c\u4ee5\u4e0a\u4f20\u56fe\u7247/\u89c6\u9891");case 32:return v=s.sent,s.next=35,u.default.requestPermission("camera","\u6211\u4eec\u9700\u8981\u8bbf\u95ee\u60a8\u7684\u76f8\u673a\u4ee5\u4e0a\u4f20\u56fe\u7247/\u89c6\u9891");case 35:h=s.sent,v&&h?i.openCamera(e):f.default.openAppSettings();case 37:s.next=42;break;case 39:s.prev=39,s.t0=s["catch"](0),t("log",s.t0," at pages/ruzhu/complete.vue:1056");case 42:case"end":return s.stop()}}),s,null,[[0,39]])})))()},onUploadSuccess:function(e){t("log","\u4e0a\u4f20\u6210\u529f:",e," at pages/ruzhu/complete.vue:1060")},onUploadError:function(e){t("error","\u4e0a\u4f20\u5931\u8d25:",e," at pages/ruzhu/complete.vue:1063"),uni.showToast({title:"\u4e0a\u4f20\u5931\u8d25",icon:"none"})},onFileDelete:function(e,i){t("log","\u5220\u9664\u6587\u4ef6:",e,i," at pages/ruzhu/complete.vue:1070")},submit:(0,o.debounce)((0,c.default)(a.default.mark((function e(){var i,s,c,o=this;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(!this.isSubmit){e.next=2;break}return e.abrupt("return");case 2:if(delete this.formData.apply_state,delete this.formData.servers_kill_arr,"1"!=this.identity){e.next=106;break}if(this.formData.head_photo){e.next=9;break}uni.showToast({title:"\u8bf7\u4e0a\u4f20\u5934\u50cf",icon:"none"}),e.next=104;break;case 9:if(this.formData.name){e.next=13;break}uni.showToast({title:"\u8bf7\u8f93\u5165\u771f\u5b9e\u59d3\u540d",icon:"none"}),e.next=104;break;case 13:if(this.formData.idcard_num){e.next=17;break}uni.showToast({title:"\u8bf7\u8f93\u5165\u8eab\u4efd\u8bc1\u53f7",icon:"none"}),e.next=104;break;case 17:if(this.formData.idcard_positive){e.next=21;break}uni.showToast({title:"\u8bf7\u4e0a\u4f20\u8eab\u4efd\u8bc1\u6b63\u9762(\u4eba\u50cf\u9762)",icon:"none"}),e.next=104;break;case 21:if(this.formData.idcard_negative){e.next=25;break}uni.showToast({title:"\u8bf7\u4e0a\u4f20\u8eab\u4efd\u8bc1\u53cd\u9762(\u56fd\u5fbd\u9762)",icon:"none"}),e.next=104;break;case 25:if(this.formData.idcard_hands){e.next=29;break}uni.showToast({title:"\u8bf7\u4e0a\u4f20\u624b\u6301\u8eab\u4efd\u8bc1\u7167",icon:"none"}),e.next=104;break;case 29:if(this.formData.health_card){e.next=33;break}uni.showToast({title:"\u8bf7\u4e0a\u4f20\u5065\u5eb7\u8bc1",icon:"none"}),e.next=104;break;case 33:if(this.formData.uscc_photo){e.next=37;break}uni.showToast({title:"\u8bf7\u4e0a\u4f20\u8425\u4e1a\u6267\u7167",icon:"none"}),e.next=104;break;case 37:if(this.formData.shop_photo){e.next=41;break}uni.showToast({title:"\u8bf7\u4e0a\u4f20\u95e8\u5934\u7167\u7247",icon:"none"}),e.next=104;break;case 41:if(this.formData.detail){e.next=45;break}uni.showToast({title:"\u8bf7\u8f93\u5165\u4e2a\u4eba\u4ecb\u7ecd",icon:"none"}),e.next=104;break;case 45:if(this.formData.dependency){e.next=49;break}uni.showToast({title:"\u8bf7\u9009\u62e9\u6240\u5728\u5730",icon:"none"}),e.next=104;break;case 49:if(this.formData.address){e.next=53;break}uni.showToast({title:"\u8bf7\u9009\u62e9\u8be6\u7ec6\u5730\u5740",icon:"none"}),e.next=104;break;case 53:if(this.formData.second_phone){e.next=57;break}uni.showToast({title:"\u8bf7\u8f93\u5165\u5907\u7528\u8054\u7cfb\u65b9\u5f0f",icon:"none"}),e.next=104;break;case 57:if(this.formData.for_shop){e.next=61;break}uni.showToast({title:"\u8bf7\u8f93\u5165\u6240\u5c5e\u5e97\u94fa",icon:"none"}),e.next=104;break;case 61:if(this.formData.get_msg_method&&0!=this.formData.get_msg_method.length){e.next=65;break}uni.showToast({title:"\u8bf7\u9009\u62e9\u83b7\u53d6\u6d88\u606f\u65b9\u5f0f",icon:"none"}),e.next=104;break;case 65:if(this.formData.invite_code_other){e.next=69;break}uni.showToast({title:"\u8bf7\u8f93\u5165\u9080\u8bf7\u7801",icon:"none"}),e.next=104;break;case 69:if(this.formData.servers_kill&&0!=this.formData.servers_kill.length){e.next=73;break}uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u6280\u80fd",icon:"none"}),e.next=104;break;case 73:if(this.formData.servers_region&&0!=this.formData.servers_region.length){e.next=77;break}uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u533a\u57df",icon:"none"}),e.next=104;break;case 77:if(this.formData.default_times){e.next=81;break}uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u65f6\u95f4",icon:"none"}),e.next=104;break;case 81:if(this.formData.major){e.next=85;break}uni.showToast({title:"\u8bf7\u9009\u62e9\u4e13\u4e1a\u7ecf\u9a8c",icon:"none"}),e.next=104;break;case 85:if(this.formData.work_state){e.next=89;break}uni.showToast({title:"\u8bf7\u9009\u62e9\u76ee\u524d\u5de5\u4f5c\u72b6\u6001",icon:"none"}),e.next=104;break;case 89:if(this.formData.account!==this.formData.second_phone){e.next=93;break}uni.showToast({title:"\u5907\u7528\u624b\u673a\u53f7\u4e0d\u80fd\u548c\u8054\u7cfb\u65b9\u5f0f\u4e00\u6837",icon:"none"}),e.next=104;break;case 93:return i=Object.fromEntries(Object.entries(this.formData).filter((function(t){var e=(0,r.default)(t,2),i=(e[0],e[1]);return null!==i&&void 0!==i&&""!==i&&0!=i.length}))),e.next=96,n.default.post("/user/check",{name:i.name,idcard:i.idcard_num});case 96:if(s=e.sent,"401"!=s.Code){e.next=100;break}return uni.showToast({title:"\u60a8\u7684\u8eab\u4efd\u8bc1\u53f7\u4e0e\u59d3\u540d\u4e0d\u5339\u914d",icon:"none"}),e.abrupt("return");case 100:if("1"==s.ResultObject.BizCode){e.next=103;break}return uni.showToast({title:"\u60a8\u7684\u8eab\u4efd\u8bc1\u53f7\u4e0e\u59d3\u540d\u4e0d\u5339\u914d",icon:"none"}),e.abrupt("return");case 103:n.default.post("/user/usersyradd",i).then((function(t){1==t.state?(o.isSubmit=!0,uni.redirectTo({url:"/pages/ruzhu/submitres?applyState=1"})):(o.isSubmit=!1,uni.showToast({title:t.msg,icon:"none"}))})).catch((function(e){t("log",e," at pages/ruzhu/complete.vue:1258"),o.isSubmit=!1}));case 104:e.next=107;break;case 106:this.formData.head_photo?this.formData.name?this.formData.legal_name?this.formData.legal_phone?this.formData.legal_idcard_num?this.formData.legal_idcard_positive?this.formData.legal_idcard_negative?this.formData.uscc_photo?this.formData.dependency?this.formData.address?this.formData.get_msg_method&&0!=this.formData.get_msg_method.length?this.formData.invite_code_other?this.formData.servers_kill&&0!=this.formData.servers_kill.length?this.formData.business_time?this.formData.major?(c=Object.fromEntries(Object.entries(this.formData).filter((function(t){var e=(0,r.default)(t,2),i=(e[0],e[1]);return null!==i&&void 0!==i&&""!==i&&0!=i.length}))),t("log",c," at pages/ruzhu/complete.vue:1343"),n.default.post("/user/usersjadd",c).then((function(t){1==t.state?(o.isSubmit=!0,uni.redirectTo({url:"/pages/ruzhu/submitres?applyState=1"})):(uni.showToast({title:t.msg,icon:"none"}),o.isSubmit=!1)})).catch((function(t){o.isSubmit=!1}))):uni.showToast({title:"\u8bf7\u9009\u62e9\u4e13\u4e1a\u7ecf\u9a8c",icon:"none"}):uni.showToast({title:"\u8bf7\u9009\u62e9\u8425\u4e1a\u65f6\u95f4",icon:"none"}):uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u6280\u80fd",icon:"none"}):uni.showToast({title:"\u8bf7\u8f93\u5165\u9080\u8bf7\u7801",icon:"none"}):uni.showToast({title:"\u8bf7\u9009\u62e9\u83b7\u53d6\u6d88\u606f\u65b9\u5f0f",icon:"none"}):uni.showToast({title:"\u8bf7\u9009\u62e9\u8be6\u7ec6\u5730\u5740",icon:"none"}):uni.showToast({title:"\u8bf7\u9009\u62e9\u6240\u5728\u5730",icon:"none"}):uni.showToast({title:"\u8bf7\u4e0a\u4f20\u8425\u4e1a\u6267\u7167",icon:"none"}):uni.showToast({title:"\u8bf7\u4e0a\u4f20\u6cd5\u4eba\u8eab\u4efd\u8bc1\u53cd\u9762(\u56fd\u5fbd\u9762)",icon:"none"}):uni.showToast({title:"\u8bf7\u4e0a\u4f20\u6cd5\u4eba\u8eab\u4efd\u8bc1\u6b63\u9762(\u4eba\u50cf\u9762)",icon:"none"}):uni.showToast({title:"\u8bf7\u8f93\u5165\u6cd5\u4eba\u8eab\u4efd\u8bc1",icon:"none"}):uni.showToast({title:"\u8bf7\u8f93\u5165\u6cd5\u4eba\u624b\u673a\u53f7",icon:"none"}):uni.showToast({title:"\u8bf7\u8f93\u5165\u6cd5\u4eba\u59d3\u540d",icon:"none"}):uni.showToast({title:"\u8bf7\u8f93\u5165\u5e97\u94fa\u540d\u79f0",icon:"none"}):uni.showToast({title:"\u8bf7\u4e0a\u4f20\u5e97\u94falogo",icon:"none"});case 107:case"end":return e.stop()}}),e,this)}))),500)}};e.default=_}).call(this,i("f3b9")["default"])},"8c5f":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","filter-popup__content__right__items"),attrs:{id:t._$s(0,"a-id","filter_"+t.info.id),_i:0}},[i("view",{staticClass:t._$s(1,"sc","filter-popup__content__right__items__title"),attrs:{_i:1}},[t._v(t._$s(1,"t0-0",t._s(t.info.title)))]),t._l(t._$s(2,"f",{forItems:t.info.details}),(function(e,s,a,r){return i("view",{key:t._$s(2,"f",{forIndex:a,key:e.id}),staticClass:t._$s("2-"+r,"sc","filter-popup__content__right__items__item"),class:t._$s("2-"+r,"c",{active:t.detailLists.includes(e.value)}),attrs:{_i:"2-"+r},on:{click:function(i){return t.selectDetail(e)}}},[t._v(t._$s("2-"+r,"t0-0",t._s(e.name)))])})),t._t("default",null,{_i:3})],2)},a=[]},"8c76":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,i){var s=i.config.validateStatus,a=i.statusCode;!a||s&&!s(a)?e(i):t(i)}},"8d07":function(t,e,i){"use strict";i.r(e);var s=i("6fe9"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"8d33":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("7ca3")),c=s(i("ee10")),n=s(i("af34")),o=s(i("16bb"));function d(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function l(t){for(var e=1;e0&&({type:3},r=e.sjInformation,1===r.state&&r.data&&r.data.servers_kill&&(c=[],Array.isArray(r.data.servers_kill)?c=r.data.servers_kill.map((function(t){return parseInt(t)})).filter((function(t){return!isNaN(t)})):"string"===typeof r.data.servers_kill&&(c=r.data.servers_kill.split(",").map((function(t){return parseInt(t.trim())})).filter((function(t){return!isNaN(t)}))),o=(0,n.default)(c).sort().join(","),d=(0,n.default)(s).sort().join(","),o!==d&&(t("log","\u68c0\u6d4b\u5230\u6280\u80fd\u5df2\u53d8\u66f4\uff0c\u6e05\u7406\u9a73\u56de\u76f8\u5173\u5b58\u50a8"," at pages/shop/service-skills.vue:192"),uni.removeStorageSync("rejectedSkills"),uni.removeStorageSync("lastRejectTime"))))}catch(a){t("error","\u6e05\u7406\u9a73\u56de\u6280\u80fd\u5b58\u50a8\u5931\u8d25:",a," at pages/shop/service-skills.vue:199")}case 1:case"end":return i.stop()}}),i)})))()},getButtonAreaHeight:function(){var t=this;setTimeout((function(){var e=uni.createSelectorQuery().in(t);e.select(".bottom-actions").boundingClientRect((function(e){e&&(t.buttonAreaHeight=e.height+20)})).exec()}),100)},updateNavTitle:function(){this.editable||this.showPendingSkills?this.navTitle="\u670d\u52a1\u6280\u80fd\u53d8\u66f4":this.navTitle="\u670d\u52a1\u6280\u80fd"},loadServiceSkills:function(){var e=this;return(0,c.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,o.default.post("/sj/firstclass",{id:e.sjInformation.data.id});case 3:s=i.sent,e.serviceList=s.data.map((function(t){return l(l({},t),{},{checked:!1})})),t("log","\u670d\u52a1\u6280\u80fd\u5217\u8868:",e.serviceList," at pages/shop/service-skills.vue:233"),i.next=12;break;case 8:i.prev=8,i.t0=i["catch"](0),t("error","\u52a0\u8f7d\u670d\u52a1\u6280\u80fd\u5931\u8d25:",i.t0," at pages/shop/service-skills.vue:235"),uni.showToast({title:"\u52a0\u8f7d\u670d\u52a1\u6280\u80fd\u5931\u8d25",icon:"none"});case 12:case"end":return i.stop()}}),i,null,[[0,8]])})))()},loadApplyDetails:function(){var e=this;return(0,c.default)(a.default.mark((function i(){var s,r,c;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,t("log","\u5f00\u59cb\u52a0\u8f7d\u7533\u8bf7\u8be6\u60c5..."," at pages/shop/service-skills.vue:246"),i.next=4,o.default.post("/sj/userSjAuth/details",{apply_type:2});case 4:if(s=i.sent,t("log","\u7533\u8bf7\u8be6\u60c5\u63a5\u53e3\u8fd4\u56de:",s," at pages/shop/service-skills.vue:251"),200!==s.code||!s.data){i.next=31;break}if(r=s.data,e.applyId=r.id,e.auditStatus=r.apply_state,e.backText=r.back_text||"",t("log","\u5ba1\u6838\u72b6\u6001:",e.auditStatus," at pages/shop/service-skills.vue:259"),t("log","\u539f\u59cbservers_kill\u6570\u636e:",r.servers_kill," at pages/shop/service-skills.vue:260"),!r.servers_kill){i.next=27;break}if(c=[],Array.isArray(r.servers_kill)?c=r.servers_kill.map((function(t){var e=parseInt(t);return isNaN(e)?null:e})).filter((function(t){return null!==t})):"string"===typeof r.servers_kill&&(c=r.servers_kill.split(",").map((function(t){var e=parseInt(t.trim());return isNaN(e)?null:e})).filter((function(t){return null!==t}))),t("log","\u89e3\u6790\u540e\u7684\u6280\u80fdID:",c," at pages/shop/service-skills.vue:278"),1!==e.auditStatus){i.next=23;break}e.selectedSkills=(0,n.default)(c),t("log","\u5ba1\u6838\u4e2d\uff0c\u5f85\u5ba1\u6838\u6280\u80fd:",e.selectedSkills," at pages/shop/service-skills.vue:283"),uni.setStorageSync("lastApplyTime",(new Date).getTime()),i.next=26;break;case 23:if(3!==e.auditStatus){i.next=26;break}return i.next=26,e.handleRejectedSkills(c);case 26:e.updateCheckedStatus();case 27:return i.next=29,e.loadCurrentEffectiveSkills();case 29:i.next=36;break;case 31:return t("log","\u7533\u8bf7\u8be6\u60c5\u8fd4\u56de\u6570\u636e\u4e3a\u7a7a\u6216code\u4e0d\u4e3a200:",s," at pages/shop/service-skills.vue:298"),uni.removeStorageSync("rejectedSkills"),uni.removeStorageSync("lastRejectTime"),i.next=36,e.loadCurrentEffectiveSkills();case 36:i.next=43;break;case 38:return i.prev=38,i.t0=i["catch"](0),t("error","\u52a0\u8f7d\u7533\u8bf7\u8be6\u60c5\u5931\u8d25:",i.t0," at pages/shop/service-skills.vue:306"),i.next=43,e.loadCurrentEffectiveSkills();case 43:case"end":return i.stop()}}),i,null,[[0,38]])})))()},handleRejectedSkills:function(e){var i=this;return(0,c.default)(a.default.mark((function s(){var r,c,o,d,l;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return r=uni.getStorageSync("rejectedSkills"),uni.getStorageSync("lastRejectTime"),s.next=4,i.getCurrentEffectiveSkillIds();case 4:if(c=s.sent,o=(0,n.default)(e).sort().join(","),d=r?(0,n.default)(r).sort().join(","):"",l=(0,n.default)(c).sort().join(","),o!==l){s.next=15;break}return t("log","\u9a73\u56de\u6570\u636e\u4e0e\u5f53\u524d\u751f\u6548\u6280\u80fd\u76f8\u540c\uff0c\u53ef\u80fd\u6570\u636e\u8fc7\u65f6\uff0c\u5ffd\u7565\u672c\u6b21\u9a73\u56de\u6570\u636e"," at pages/shop/service-skills.vue:326"),i.selectedSkills=(0,n.default)(c),uni.removeStorageSync("rejectedSkills"),uni.removeStorageSync("lastRejectTime"),i.backText="",s.abrupt("return");case 15:o!==d&&(t("log","\u53d1\u73b0\u65b0\u7684\u9a73\u56de\u6570\u636e\uff0c\u66f4\u65b0\u5b58\u50a8:",e," at pages/shop/service-skills.vue:337"),uni.setStorageSync("rejectedSkills",e),uni.setStorageSync("lastRejectTime",(new Date).getTime())),i.selectedSkills=(0,n.default)(e),t("log","\u5ba1\u6838\u9a73\u56de\uff0c\u88ab\u9a73\u56de\u6280\u80fd:",i.selectedSkills," at pages/shop/service-skills.vue:343");case 18:case"end":return s.stop()}}),s)})))()},getCurrentEffectiveSkillIds:function(){var e=this;return(0,c.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(i.prev=0,{type:3},s=e.sjInformation,1!==s.state||!s.data||!s.data.servers_kill){i.next=7;break}return r=[],Array.isArray(s.data.servers_kill)?r=s.data.servers_kill.map((function(t){return parseInt(t)})).filter((function(t){return!isNaN(t)})):"string"===typeof s.data.servers_kill&&(r=s.data.servers_kill.split(",").map((function(t){return parseInt(t.trim())})).filter((function(t){return!isNaN(t)}))),i.abrupt("return",r);case 7:return i.abrupt("return",[]);case 10:return i.prev=10,i.t0=i["catch"](0),t("error","\u83b7\u53d6\u5f53\u524d\u751f\u6548\u6280\u80fd\u5931\u8d25:",i.t0," at pages/shop/service-skills.vue:366"),i.abrupt("return",[]);case 14:case"end":return i.stop()}}),i,null,[[0,10]])})))()},loadCurrentEffectiveSkills:function(){var e=this;return(0,c.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,t("log","\u5f00\u59cb\u52a0\u8f7d\u5f53\u524d\u751f\u6548\u7684\u670d\u52a1\u6280\u80fd..."," at pages/shop/service-skills.vue:375"),i.next=4,e.getCurrentEffectiveSkillIds();case 4:s=i.sent,e.currentSkills=(0,n.default)(s),e.originalSkills=(0,n.default)(s),t("log","\u5f53\u524d\u751f\u6548\u7684\u6280\u80fdID:",e.currentSkills," at pages/shop/service-skills.vue:381"),null!==e.auditStatus&&2!==e.auditStatus||(e.selectedSkills=(0,n.default)(s)),e.updateCheckedStatus(),e.updatePageStatus(),i.next=21;break;case 13:i.prev=13,i.t0=i["catch"](0),t("error","\u52a0\u8f7d\u5f53\u524d\u751f\u6548\u6280\u80fd\u5931\u8d25:",i.t0," at pages/shop/service-skills.vue:394"),e.currentSkills=[],e.originalSkills=[],1!==e.auditStatus&&(e.selectedSkills=[]),e.updateCheckedStatus(),e.updatePageStatus();case 21:case"end":return i.stop()}}),i,null,[[0,13]])})))()},isCurrentSkillSelected:function(t){return this.currentSkills.includes(t)},updateCheckedStatus:function(){var e=this;t("log","\u66f4\u65b0\u9009\u4e2d\u72b6\u6001\uff0c\u5f53\u524d\u670d\u52a1\u6280\u80fd\u5217\u8868:",this.serviceList," at pages/shop/service-skills.vue:414"),t("log","\u8981\u9009\u4e2d\u7684\u6280\u80fdID:",this.selectedSkills," at pages/shop/service-skills.vue:415"),this.serviceList.forEach((function(t){t.checked=e.selectedSkills.includes(t.id)}))},updatePageStatus:function(){t("log","\u66f4\u65b0\u9875\u9762\u72b6\u6001\uff0c\u5ba1\u6838\u72b6\u6001:",this.auditStatus," at pages/shop/service-skills.vue:423");var e=(0,n.default)(this.currentSkills).sort().join(","),i=(0,n.default)(this.selectedSkills).sort().join(","),s=e!==i;if(t("log","\u6280\u80fd\u53d8\u66f4\u68c0\u67e5 - \u5f53\u524d\u751f\u6548:",this.currentSkills,"\u9009\u4e2d:",this.selectedSkills,"\u662f\u5426\u53d8\u66f4:",s," at pages/shop/service-skills.vue:430"),1===this.auditStatus)this.showAuditTip=!0,this.buttonType="view",this.editable=!1,this.showPendingSkills=!1;else if(3===this.auditStatus){var a=uni.getStorageSync("rejectedSkills"),r=a?(0,n.default)(a).sort().join(","):"",c=(0,n.default)(this.currentSkills).sort().join(",");r===c?(t("log","\u9a73\u56de\u6570\u636e\u65e0\u6548\uff0c\u6309\u65e0\u7533\u8bf7\u72b6\u6001\u5904\u7406"," at pages/shop/service-skills.vue:445"),this.showAuditTip=!1,this.buttonType="change",this.editable=!1,this.showPendingSkills=!1,this.backText=""):(this.showAuditTip=!1,this.buttonType="change",this.editable=!1,this.showPendingSkills=!1)}else this.showAuditTip=!1,this.buttonType="change",this.editable=!1,this.showPendingSkills=!1;this.updateNavTitle(),t("log","\u6700\u7ec8\u9875\u9762\u72b6\u6001:",{showAuditTip:this.showAuditTip,buttonType:this.buttonType,editable:this.editable,showPendingSkills:this.showPendingSkills,currentSkills:this.currentSkills,selectedSkills:this.selectedSkills,backText:this.backText}," at pages/shop/service-skills.vue:466")},toggleSkillSelect:function(e){this.editable&&(this.$set(this.serviceList[e],"checked",!this.serviceList[e].checked),this.selectedSkills=this.serviceList.filter((function(t){return t.checked})).map((function(t){return t.id})),t("log","\u5f53\u524d\u9009\u4e2d\u7684\u6280\u80fdID:",this.selectedSkills," at pages/shop/service-skills.vue:488"))},togglePendingSkills:function(){this.showPendingSkills=!this.showPendingSkills,this.updateNavTitle()},startChange:function(){this.editable=!0,this.buttonType="edit",this.showPendingSkills=!0,this.updateNavTitle()},cancelChange:function(){this.selectedSkills=(0,n.default)(this.originalSkills),this.updateCheckedStatus(),this.editable=!1,this.buttonType="change",this.showPendingSkills=!1,this.updateNavTitle()},submitChange:function(){var e=this;return(0,c.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(0!==e.selectedSkills.length){i.next=3;break}return uni.showToast({title:"\u8bf7\u81f3\u5c11\u9009\u62e9\u4e00\u4e2a\u670d\u52a1\u6280\u80fd",icon:"none"}),i.abrupt("return");case 3:if(e.hasChanges){i.next=6;break}return uni.showToast({title:"\u672a\u68c0\u6d4b\u5230\u53d8\u66f4",icon:"none"}),i.abrupt("return");case 6:return i.prev=6,uni.showLoading({title:"\u63d0\u4ea4\u4e2d..."}),s={apply_type:2,servers_kill:e.selectedSkills},t("log","\u63d0\u4ea4\u7684\u6570\u636e:",s," at pages/shop/service-skills.vue:548"),i.next=12,o.default.post("/sj/userSjAuth/apply",s);case 12:r=i.sent,uni.hideLoading(),200===r.code?(uni.showToast({title:"\u63d0\u4ea4\u6210\u529f",icon:"none"}),uni.removeStorageSync("rejectedSkills"),uni.removeStorageSync("lastRejectTime"),uni.setStorageSync("lastApplyTime",(new Date).getTime()),e.showAuditTip=!0,e.editable=!1,e.buttonType="view",e.auditStatus=1,e.showPendingSkills=!1,e.updateNavTitle(),setTimeout((function(){e.loadApplyDetails()}),1e3)):uni.showToast({title:r.msg||"\u63d0\u4ea4\u5931\u8d25",icon:"none"}),i.next=22;break;case 17:i.prev=17,i.t0=i["catch"](6),uni.hideLoading(),t("error","\u63d0\u4ea4\u53d8\u66f4\u5931\u8d25:",i.t0," at pages/shop/service-skills.vue:589"),uni.showToast({title:"\u63d0\u4ea4\u5931\u8d25",icon:"none"});case 22:case"end":return i.stop()}}),i,null,[[6,17]])})))()}}};e.default=u}).call(this,i("f3b9")["default"])},"8d44":function(t,e,i){"use strict";i.r(e);var s=i("2849"),a=i("effb");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"d60667ce",null,!1,s["a"],void 0);e["default"]=n.exports},"8d6d":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","detail-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u8ba2\u5355\u8be6\u60c5","show-back":!0,"title-color":"#333333",backgroundColor:"transparent",_i:1}}),i("view",{staticClass:t._$s(2,"sc","content-part"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","status-section"),attrs:{_i:3}},[i("text",{staticClass:t._$s(4,"sc","status-text"),attrs:{_i:4}},[t._v(t._$s(4,"t0-0",t._s(1==t.orderInfo.state?"\u5f85\u652f\u4ed8":2==t.orderInfo.state?"\u5f85\u63a5\u5355":3==t.orderInfo.state?"\u5f85\u670d\u52a1":4==t.orderInfo.state?"\u5f85\u5b8c\u6210":5==t.orderInfo.state?"\u5df2\u5b8c\u6210":6==t.orderInfo.state?"\u5f85\u8bc4\u4ef7":7==t.orderInfo.state?"\u5df2\u53d6\u6d88":"")))])]),t._$s(5,"i",1==t.orderInfo.order_kind)?i("view",{staticClass:t._$s(5,"sc","service-card"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","location-info"),attrs:{_i:6}},[i("image",{staticClass:t._$s(7,"sc","location-icon"),attrs:{_i:7}}),i("view",{staticClass:t._$s(8,"sc","address-info"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","name-phone"),attrs:{_i:9}},[i("text",{staticClass:t._$s(10,"sc","name"),attrs:{_i:10}},[t._v(t._$s(10,"t0-0",t._s(t.reservation_address_arr.name)))]),i("text",{staticClass:t._$s(11,"sc","phone"),attrs:{_i:11}},[t._v(t._$s(11,"t0-0",t._s(t.reservation_address_arr.call_phone)))])]),i("text",{staticClass:t._$s(12,"sc","address"),attrs:{_i:12}},[t._v(t._$s(12,"t0-0",t._s(t.reservation_address_arr.server_address))+t._$s(12,"t0-1",t._s(t.reservation_address_arr.house_number)))])])]),i("image",{staticClass:t._$s(13,"sc","btn-map"),attrs:{_i:13},on:{click:function(e){return t.openMap()}}}),i("image",{staticClass:t._$s(14,"sc","btn-phone"),attrs:{_i:14},on:{click:function(e){return t.contactService(t.reservation_address_arr.call_phone)}}})]):t._e(),t._$s(15,"i",2==t.orderInfo.order_kind)?i("view",{staticClass:t._$s(15,"sc","service-card"),attrs:{_i:15}},[i("view",{staticClass:t._$s(16,"sc","location-info"),attrs:{_i:16}},[i("image",{staticClass:t._$s(17,"sc","location-icon"),attrs:{_i:17}}),i("view",{staticClass:t._$s(18,"sc","address-info"),attrs:{_i:18}},[i("view",{staticClass:t._$s(19,"sc","name-phone"),attrs:{_i:19}},[i("text",{staticClass:t._$s(20,"sc","name"),attrs:{_i:20}},[t._v(t._$s(20,"t0-0",t._s(t.orderInfo.order_username)))]),i("text",{staticClass:t._$s(21,"sc","phone"),attrs:{_i:21}},[t._v(t._$s(21,"t0-0",t._s(t.orderInfo.phone_user)))])])])]),i("image",{staticClass:t._$s(22,"sc","btn-phone"),attrs:{_i:22},on:{click:function(e){return t.contactService(t.orderInfo.phone_user)}}})]):t._e(),i("view",{staticClass:t._$s(23,"sc","booking-card"),attrs:{_i:23}},[i("view",{staticClass:t._$s(24,"sc","service-item"),attrs:{_i:24}},[t._$s(25,"i",t.orderInfo.server_photo&&0!=t.orderInfo.server_photo.length)?i("image",{staticClass:t._$s(25,"sc","service-image"),attrs:{src:t._$s(25,"a-src",t.orderInfo.server_photo[0]),_i:25}}):t._e(),i("view",{staticClass:t._$s(26,"sc","service-info"),attrs:{_i:26}},[i("text",{staticClass:t._$s(27,"sc","service-name text-overflow"),attrs:{_i:27}},[t._v(t._$s(27,"t0-0",t._s(t.orderInfo.server_title)))]),i("text",{staticClass:t._$s(28,"sc","service-price"),attrs:{_i:28}},[t._v(t._$s(28,"t0-0",t._s(t.orderInfo.order_money)))])]),i("text",{staticClass:t._$s(29,"sc","service-count"),attrs:{_i:29}})]),i("view",{staticClass:t._$s(30,"sc","service-real"),attrs:{_i:30}},[i("text",{staticClass:t._$s(31,"sc","real-lable"),attrs:{_i:31}}),i("text",{staticClass:t._$s(32,"sc","real-price"),attrs:{_i:32}},[t._v(t._$s(32,"t0-0",t._s(t.orderInfo.pay_money)))])])]),i("view",{staticClass:t._$s(33,"sc","order-card"),attrs:{_i:33}},[i("text",{staticClass:t._$s(34,"sc","card-title"),attrs:{_i:34}}),i("view",{staticClass:t._$s(35,"sc","info-item"),attrs:{_i:35}},[i("text",{staticClass:t._$s(36,"sc","label"),attrs:{_i:36}}),i("text",{staticClass:t._$s(37,"sc","value"),attrs:{_i:37}},[t._v(t._$s(37,"t0-0",t._s(t.orderInfo.number)))])]),t._$s(38,"i",1==t.orderInfo.order_kind)?i("view",{staticClass:t._$s(38,"sc","info-item"),attrs:{_i:38}},[i("text",{staticClass:t._$s(39,"sc","label"),attrs:{_i:39}}),i("text",{staticClass:t._$s(40,"sc","value"),attrs:{_i:40}},[t._v(t._$s(40,"t0-0",t._s(t.orderInfo.reservation_time)))])]):t._e(),i("view",{staticClass:t._$s(41,"sc","info-item"),attrs:{_i:41}},[i("text",{staticClass:t._$s(42,"sc","label"),attrs:{_i:42}}),i("text",{staticClass:t._$s(43,"sc","value"),attrs:{_i:43}},[t._v(t._$s(43,"t0-0",t._s(t.orderInfo.add_time)))])]),t._$s(44,"i",1!=t.orderInfo.state)?i("view",{staticClass:t._$s(44,"sc","info-item"),attrs:{_i:44}},[i("text",{staticClass:t._$s(45,"sc","label"),attrs:{_i:45}}),i("text",{staticClass:t._$s(46,"sc","value"),attrs:{_i:46}},[t._v(t._$s(46,"t0-0",t._s(t.orderInfo.pay_time)))])]):t._e(),t._$s(47,"i",1!=t.orderInfo.state)?i("view",{staticClass:t._$s(47,"sc","info-item"),attrs:{_i:47}},[i("text",{staticClass:t._$s(48,"sc","label"),attrs:{_i:48}}),i("text",{staticClass:t._$s(49,"sc","value"),attrs:{_i:49}},[t._v(t._$s(49,"t0-0",t._s(1==t.orderInfo.pay_kind?"\u8d26\u6237\u4f59\u989d":2==t.orderInfo.pay_kind?"\u5fae\u4fe1\u652f\u4ed8":3==t.orderInfo.pay_kind?"\u652f\u4ed8\u5b9d\u652f\u4ed8":"")))])]):t._e(),t._$s(50,"i",1!=t.orderInfo.state&&2!=t.orderInfo.state&&3!=t.orderInfo.state)?i("view",{staticClass:t._$s(50,"sc","info-item"),attrs:{_i:50}},[i("text",{staticClass:t._$s(51,"sc","label"),attrs:{_i:51}}),i("text",{staticClass:t._$s(52,"sc","value"),attrs:{_i:52}},[t._v(t._$s(52,"t0-0",t._s(t.orderInfo.server_start_time)))])]):t._e(),t._$s(53,"i",1!=t.orderInfo.state&&2!=t.orderInfo.state&&3!=t.orderInfo.state&&4!=t.orderInfo.state)?i("view",{staticClass:t._$s(53,"sc","info-item"),attrs:{_i:53}},[i("text",{staticClass:t._$s(54,"sc","label"),attrs:{_i:54}}),i("text",{staticClass:t._$s(55,"sc","value"),attrs:{_i:55}},[t._v(t._$s(55,"t0-0",t._s(t.orderInfo.server_end_time)))])]):t._e()])]),i("view",{staticClass:t._$s(56,"sc","bottom-buttons"),attrs:{_i:56}},[t._$s(57,"i",2==t.orderInfo.state||3==t.orderInfo.state)?i("view",{staticClass:t._$s(57,"sc","handel-button btn-border"),attrs:{_i:57},on:{click:function(e){return e.stopPropagation(),t.cancelOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(58,"sc","button-text"),attrs:{_i:58}})]):t._e(),t._$s(59,"i",2==t.orderInfo.state)?i("view",{staticClass:t._$s(59,"sc","handel-button btn-bg"),attrs:{_i:59},on:{click:function(e){return e.stopPropagation(),t.confirmOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(60,"sc","button-text"),attrs:{_i:60}})]):t._e(),t._$s(61,"i",3==t.orderInfo.state)?i("view",{staticClass:t._$s(61,"sc","handel-button btn-bg"),attrs:{_i:61},on:{click:function(e){return e.stopPropagation(),t.startOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(62,"sc","button-text"),attrs:{_i:62}})]):t._e(),t._$s(63,"i",4==t.orderInfo.state)?i("view",{staticClass:t._$s(63,"sc","handel-button btn-bg"),attrs:{_i:63},on:{click:function(e){return e.stopPropagation(),t.endOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(64,"sc","button-text"),attrs:{_i:64}})]):t._e()]),i("serviceCodeInput",{attrs:{show:t.showInput,_i:65},on:{close:function(e){t.showInput=!1},confirm:t.onConfirm}}),i("view",{staticClass:t._$s(66,"sc","permission"),class:t._$s(66,"c",{transform:t.isShowPer}),attrs:{_i:66}},[i("view",{staticClass:t._$s(67,"sc","per-tit"),attrs:{_i:67}}),i("view",{staticClass:t._$s(68,"sc","per-cont"),attrs:{_i:68}})])],1)},r=[]},"8d86":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("cd5a")),n=s(i("16bb")),o={name:"buyManHour",data:function(){return{id:"",manHourInfo:{},work_seat:{},user_sj:{}}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return e.id=t.id,i.next=3,e.getDetails();case 3:case"end":return i.stop()}}),i)})))()},methods:{openMap:function(){c.default.goMap({latitude:parseFloat(this.user_sj.latitude),longitude:parseFloat(this.user_sj.longitude),name:this.user_sj.name,address:this.user_sj.address})},contactService:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r,c,n,o,d,l;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(s=uni.getSystemInfoSync(),"ios"!==s.platform){i.next=5;break}uni.makePhoneCall({phoneNumber:t}),i.next=27;break;case 5:return r="ios"===s.platform?"phone":"android.permission.CALL_PHONE",e.isShowPer=!0,c=!plus.storage.getItem("perm_".concat(r)),c&&(e.isShowPer=!0),i.next=11,permissionUtils.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 11:if(n=i.sent,o=n.granted,!o){i.next=17;break}return e.isShowPer=!1,uni.makePhoneCall({phoneNumber:t}),i.abrupt("return");case 17:return e.isShowPer=!1,i.next=20,e.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 20:if(d=i.sent,d){i.next=23;break}return i.abrupt("return");case 23:return i.next=25,permissionUtils.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 25:l=i.sent,l?uni.makePhoneCall({phoneNumber:t}):locationService.openAppSettings();case 27:case"end":return i.stop()}}),i)})))()},getDetails:function(){var e=this;return(0,r.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.next=2,n.default.post("/syr/workSeat/details",{id:e.id}).then((function(i){200==i.code&&(e.manHourInfo=i.data,e.manHourInfo.work_seat.photo=JSON.parse(e.manHourInfo.work_seat.photo),e.manHourInfo.work_seat.second_class_title=e.manHourInfo.work_seat.second_class_title.join(","),e.work_seat=e.manHourInfo.work_seat,e.user_sj=e.manHourInfo.user_sj,t("log",2222,e.user_sj," at pages/syr/workstation/workstationDetail.vue:190"))}));case 2:case"end":return i.stop()}}),i)})))()},goOrder:function(){uni.navigateTo({url:"/pages/syr/workstation/workstationOrder?manHourInfo=".concat(encodeURIComponent(JSON.stringify(this.manHourInfo)))})}}};e.default=o}).call(this,i("f3b9")["default"])},"8d9e":function(t,e,i){"use strict";i.r(e);var s=i("27eb"),a=i("42a1");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"8dcf":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,aliOssUploader:i("93a6").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",[i("custom-navbar",{attrs:{title:t.customTitle,showBack:!t.isClassSelect,backgroundColor:"#FFFFFF",_i:1}}),i("class_select",{directives:[{name:"show",rawName:"v-show",value:t._$s(2,"v-show",t.isClassSelect),expression:"_$s(2,'v-show',isClassSelect)"}],attrs:{classId:t.formData.first_class_id,secondClassId:t.formData.second_class_ids,_i:2},on:{changeClass:function(e){return t.formData.first_class_id=e},changeSecondClass:function(e){return t.formData.second_class_ids=e},changeTypeText:function(e){return t.serviceType=e},closeClassSelect:t.endSelect}}),i("view",{directives:[{name:"show",rawName:"v-show",value:t._$s(3,"v-show",!t.isClassSelect),expression:"_$s(3,'v-show',!isClassSelect)"}],staticClass:t._$s(3,"sc","add-service"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","form-container"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","form-item"),attrs:{_i:5}},[i("text",{staticClass:t._$s(6,"sc","form-label"),attrs:{_i:6}}),i("view",{staticClass:t._$s(7,"sc","form-right"),attrs:{_i:7},on:{click:function(){return t.isClassSelect=!0}}},[i("text",{class:t._$s(8,"c",["form-value",t.formData.first_class_id?"":"placeholder"]),attrs:{_i:8}},[t._v(t._$s(8,"t0-0",t._s(t.serviceType||"\u8bf7\u9009\u62e9\u5206\u7c7b")))]),i("image",{staticClass:t._$s(9,"sc","arrow-right"),attrs:{_i:9}})])]),i("view",{staticClass:t._$s(10,"sc","form-item-up"),attrs:{_i:10}},[i("text",{staticClass:t._$s(11,"sc","form-label"),attrs:{_i:11}}),i("view",{staticClass:t._$s(12,"sc","form-input-box"),attrs:{_i:12}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.title,expression:"formData.title"}],staticClass:t._$s(13,"sc","form-input"),attrs:{_i:13},domProps:{value:t._$s(13,"v-model",t.formData.title)},on:{input:function(e){e.target.composing||t.$set(t.formData,"title",e.target.value)}}})])]),i("view",{staticClass:t._$s(14,"sc","form-item-up"),attrs:{_i:14}},[i("view",[i("text",{staticClass:t._$s(16,"sc","form-label"),attrs:{_i:16}}),i("text",{staticClass:t._$s(17,"sc","redTip"),attrs:{_i:17}})]),i("view",{staticClass:t._$s(18,"sc","content_box"),attrs:{_i:18}},[i("view",{staticClass:t._$s(19,"sc","form-input-box small_input"),attrs:{_i:19}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.price,expression:"formData.price"}],staticClass:t._$s(20,"sc","form-input"),attrs:{_i:20},domProps:{value:t._$s(20,"v-model",t.formData.price)},on:{input:function(e){e.target.composing||t.$set(t.formData,"price",e.target.value)}}})]),i("text",{staticClass:t._$s(21,"sc","unit"),attrs:{_i:21}})])]),i("view",{staticClass:t._$s(22,"sc","form-item-up"),attrs:{_i:22}},[i("text",{staticClass:t._$s(23,"sc","form-label"),attrs:{_i:23}}),i("view",{staticClass:t._$s(24,"sc","form-input-box"),attrs:{_i:24}},[i("textarea",{directives:[{name:"model",rawName:"v-model",value:t.formData.detail,expression:"formData.detail"}],staticClass:t._$s(25,"sc","form-textarea"),attrs:{_i:25},domProps:{value:t._$s(25,"v-model",t.formData.detail)},on:{input:function(e){e.target.composing||t.$set(t.formData,"detail",e.target.value)}}})])]),i("view",{staticClass:t._$s(26,"sc","form-item-up upload-item"),attrs:{_i:26}},[i("view",[i("text",{staticClass:t._$s(28,"sc","form-label"),attrs:{_i:28}}),i("text",{staticClass:t._$s(29,"sc","redTip"),attrs:{_i:29}})]),i("ali-oss-uploader",{attrs:{"max-count":9,"max-size":5,width:"654rpx",type:t.artisanType+1,"user-id":t.formData.publish_user_id,"button-text":"\u4e0a\u4f20\u56fe\u7247",tips:"\u6700\u591a\u4e0a\u4f203\u5f20\u56fe\u7247\uff0c\u6bcf\u5f20\u4e0d\u8d85\u8fc75MB",_i:30},on:{success:t.onUploadSuccess,error:t.onUploadError,delete:t.onFileDelete,ckeckisShowPer:t.ckeckisShowPer,ckecknowQer:t.ckecknowQer},model:{value:t._$s(30,"v-model",t.formData.photo),callback:function(e){t.$set(t.formData,"photo",e)},expression:"formData.photo"}})],1)]),i("view",{staticClass:t._$s(31,"sc","bottom-buttons"),attrs:{_i:31}},[t._$s(32,"i",!t.state||0==t.state)?i("button",{staticClass:t._$s(32,"sc","btn-draft"),attrs:{_i:32},on:{click:t.saveDraft}}):t._e(),i("button",{staticClass:t._$s(33,"sc","btn-submit"),class:t._$s(33,"c",{"btn-submit2":0!=t.state}),attrs:{_i:33},on:{click:t.submitForm}})]),t._$s(34,"i",t.isShow)?i("view",{staticClass:t._$s(34,"sc","mask"),attrs:{_i:34},on:{click:function(e){t.isShow=!1}}}):t._e(),i("view",{staticClass:t._$s(35,"sc","permission"),class:t._$s(35,"c",{transform:t.isShowPer&&"xc"===t.nowQer}),attrs:{_i:35}},[i("view",{staticClass:t._$s(36,"sc","per-tit"),attrs:{_i:36}}),i("view",{staticClass:t._$s(37,"sc","per-cont"),attrs:{_i:37}})]),i("view",{staticClass:t._$s(38,"sc","permission"),class:t._$s(38,"c",{transform:t.isShowPer&&"xj"===t.nowQer}),attrs:{_i:38}},[i("view",{staticClass:t._$s(39,"sc","per-tit"),attrs:{_i:39}}),i("view",{staticClass:t._$s(40,"sc","per-cont"),attrs:{_i:40}})])])],1)},r=[]},"8e15":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,uvSwitch:i("b32f").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","settings-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u6d88\u606f\u8bbe\u7f6e",showBack:!0,_i:1}}),i("view",{staticClass:t._$s(2,"sc","settings-title"),attrs:{_i:2}}),i("view",{staticClass:t._$s(3,"sc","settings-cards"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","settings-card card-line"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","card-heard flex-row-center-between"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","card-heard-left flex-row-center"),attrs:{_i:6}},[i("text",{staticClass:t._$s(7,"sc","card-heard-left-text"),attrs:{_i:7}})]),i("view",{staticClass:t._$s(8,"sc","card-heard-right flex-row-center"),attrs:{_i:8},on:{click:t.goPermissions}},[i("text",{staticClass:t._$s(9,"sc","card-heard-right-text color-red"),attrs:{_i:9}},[t._v(t._$s(9,"t0-0",t._s(t.isEnabledValue)))]),i("image",{staticClass:t._$s(10,"sc","arrow-right"),attrs:{_i:10}})])]),i("view",{staticClass:t._$s(11,"sc","card-tip"),attrs:{_i:11}})]),i("view",{staticClass:t._$s(12,"sc","settings-card card-line flex-row-center-between"),attrs:{_i:12}},[i("view",[i("view",{staticClass:t._$s(14,"sc","card-heard flex-row-center-between"),attrs:{_i:14}},[i("view",{staticClass:t._$s(15,"sc","card-heard-left flex-row-center"),attrs:{_i:15}},[i("text",{staticClass:t._$s(16,"sc","card-heard-left-text"),attrs:{_i:16}})])]),i("view",{staticClass:t._$s(17,"sc","card-tip"),attrs:{_i:17}})]),i("uv-switch",{attrs:{activeColor:"#E8101E",_i:18},on:{change:t.changeVoice},model:{value:t._$s(18,"v-model",t.value),callback:function(e){t.value=e},expression:"value"}})],1)]),i("view",{staticClass:t._$s(19,"sc","settings-title"),attrs:{_i:19}}),i("view",{staticClass:t._$s(20,"sc","settings-cards"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","settings-card card-line"),attrs:{_i:21},on:{click:function(e){return t.navigateTo("/pages/message/message_setting")}}},[i("view",{staticClass:t._$s(22,"sc","card-heard flex-row-center-between"),attrs:{_i:22}},[i("view",{staticClass:t._$s(23,"sc","card-heard-left flex-row-center"),attrs:{_i:23}},[i("image",{staticClass:t._$s(24,"sc","card-heard-left-icon1"),attrs:{_i:24}}),i("text",{staticClass:t._$s(25,"sc","card-heard-left-text"),attrs:{_i:25}})]),i("view",{staticClass:t._$s(26,"sc","card-heard-right flex-row-center"),attrs:{_i:26}},[i("image",{staticClass:t._$s(27,"sc","arrow-right"),attrs:{_i:27}})])]),i("view",{staticClass:t._$s(28,"sc","card-tip"),attrs:{_i:28}})])]),t._$s(29,"i",t.showTestDialog)?i("view",{staticClass:t._$s(29,"sc","dialog-mask"),attrs:{_i:29},on:{click:t.closeDialog,touchmove:function(t){t.preventDefault()}}},[i("view",{staticClass:t._$s(30,"sc","dialog-container"),class:t._$s(30,"c",{"dialog-show":t.showTestDialog,"dialog-hide":!t.showTestDialog}),style:t._$s(30,"s",{backgroundImage:"url("+t.dialogBgImage+")"}),attrs:{_i:30},on:{click:function(t){t.stopPropagation()}}},[i("view",{staticClass:t._$s(31,"sc","dialog-title"),attrs:{_i:31}}),i("view",{staticClass:t._$s(32,"sc","dialog-content"),attrs:{_i:32}}),i("view",{staticClass:t._$s(33,"sc","dialog-btn"),attrs:{_i:33},on:{click:function(e){return e.stopPropagation(),t.closeDialog(e)}}},[i("text",{staticClass:t._$s(34,"sc","dialog-btn-text"),attrs:{_i:34}})])])]):t._e()],1)},r=[]},"8e9b":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","detail-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u624b\u827a\u4eba\u4e3b\u9875","show-back":!0,backgroundColor:"#fff","show-headle":!0,headleSrc:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/3b04f0c1-a55e-4658-9de5-22175cce9bbc.png",_i:1},on:{onHeadleClick:t.goInvite}}),i("view",{staticClass:t._$s(2,"sc","main-image-section"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","banner-swiper"),attrs:{_i:3}},[t._$s(4,"i",t.imgVideoList.main_video)?i("video",{staticClass:t._$s(4,"sc","banner-image"),attrs:{src:t._$s(4,"a-src",t.imgVideoList.main_video.url),id:"myVideo",_i:4}}):t._$s(5,"e",!t.imgVideoList.main_video&&t.imgVideoList.main_img)?i("image",{staticClass:t._$s(5,"sc","banner-image"),attrs:{src:t._$s(5,"a-src",t.imgVideoList.main_img.url),_i:5}}):i("image",{staticClass:t._$s(6,"sc","banner-image"),attrs:{_i:6}}),t._$s(7,"i",t.imgVideoList.main_video||t.imgVideoList.main_img)?i("cover-view",{staticClass:t._$s(7,"sc","album flex-row-center"),attrs:{_i:7}},[i("cover-view",{staticClass:t._$s(8,"sc","album-left flex-row-center-center"),attrs:{_i:8}},[t._v(t._$s(8,"t0-0",t._s(t.imgVideoList.main_video?"\u89c6\u9891":"\u56fe\u7247")))]),i("cover-view",{staticClass:t._$s(9,"sc","album-line"),attrs:{_i:9}}),i("cover-view",{staticClass:t._$s(10,"sc","album-right flex-row-center-center"),attrs:{_i:10},on:{click:t.goAlbum}},[i("cover-view",{staticClass:t._$s(11,"sc","album-right-text"),attrs:{_i:11}},[i("cover-view")]),i("cover-image",{staticClass:t._$s(13,"sc","album-right-img"),attrs:{_i:13}})])]):t._e()])]),i("view",{staticClass:t._$s(14,"sc","detail-info"),style:t._$s(14,"s",{transform:t.syrdetail.video?"translateY(0rpx)":"translateY(-20rpx)"}),attrs:{_i:14}},[i("view",{staticClass:t._$s(15,"sc","detail-info-user"),attrs:{_i:15}},[i("view",{staticClass:t._$s(16,"sc","detail-info-user__heard"),attrs:{_i:16}},[i("image",{staticClass:t._$s(17,"sc","detail-info-user__heard__photo"),attrs:{src:t._$s(17,"a-src",t.headPhoto),_i:17}}),i("view",{staticClass:t._$s(18,"sc","detail-info-user__heard__name"),attrs:{_i:18}},[i("view",{staticClass:t._$s(19,"sc","detail-info-user__heard__name__text"),attrs:{_i:19}},[t._v(t._$s(19,"t0-0",t._s(t.syrdetail.name)))]),i("view",{staticClass:t._$s(20,"sc","detail-info-user__heard__name__time"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","detail-info-user__heard__name__time__text1"),attrs:{_i:21}}),i("view",{staticClass:t._$s(22,"sc","detail-info-user__heard__name__time__text2"),attrs:{_i:22}},[t._v(t._$s(22,"t0-0",t._s(t.syrdetail.default_times)))])])])]),i("view",{staticClass:t._$s(23,"sc","detail-info-user__company"),attrs:{_i:23}},[i("view",{staticClass:t._$s(24,"sc","detail-info-user__company__name"),attrs:{_i:24},on:{click:t.goQualifications}},[i("view",{staticClass:t._$s(25,"sc","detail-info-user__company__name__card"),attrs:{_i:25}},[i("image",{staticClass:t._$s(26,"sc","detail-info-user__company__name__card__img"),attrs:{_i:26}})]),i("view",{staticClass:t._$s(27,"sc","detail-info-user__company__name__text"),attrs:{_i:27}},[t._v(t._$s(27,"t0-0",t._s(t.syrdetail.for_shop)))])]),i("view",{staticClass:t._$s(28,"sc","detail-info-user__company__reserve"),attrs:{_i:28}},[i("view",{staticClass:t._$s(29,"sc","detail-info-user__company__reserve__card"),attrs:{_i:29}}),i("view",{staticClass:t._$s(30,"sc","detail-info-user__company__reserve__text"),attrs:{_i:30}},[t._v(t._$s(30,"t0-0",t._s(t.formatRelativeTime(t.syrdetail.earliest_reserve_time))))])])]),i("view",{staticClass:t._$s(31,"sc","detail-info-user__adress"),attrs:{_i:31}},[i("view",{staticClass:t._$s(32,"sc","detail-info-user__adress__left"),attrs:{_i:32}},[i("text",{staticClass:t._$s(33,"sc","detail-info-user__adress__left__text1"),attrs:{_i:33}}),i("text",{staticClass:t._$s(34,"sc","detail-info-user__adress__left__text2"),attrs:{_i:34}},[t._v(t._$s(34,"t0-0",t._s(t.syrdetail.dependency)))])]),i("view",{staticClass:t._$s(35,"sc","detail-info-user__adress__right"),attrs:{_i:35}},[i("image",{staticClass:t._$s(36,"sc","detail-info-user__adress__right__img"),attrs:{_i:36}}),t._v(t._$s(35,"t1-0",t._s(t.syrdetail.distance)))])]),i("view",{staticClass:t._$s(37,"sc","detail-info-user__introduction"),attrs:{_i:37}},[t._v(t._$s(37,"t0-0",t._s(t.syrdetail.detail)))]),i("image",{staticClass:t._$s(38,"sc","detail-info-user__banner"),attrs:{_i:38}})]),i("view",{staticClass:t._$s(39,"sc","detail-info-shop"),attrs:{_i:39}},[i("view",{staticClass:t._$s(40,"sc","detail-info-shop-title"),attrs:{_i:40}}),i("projectTabs",{attrs:{tabsPopList:t.tabsPopList,_i:41},on:{clickTap:t.clickTap,clickPopTap:t.clickPopTap}}),i("CommonList",{ref:"groupRef",attrs:{background:"transparent",apiUrl:"/user/getserverlist",listScrollHeight:200*t.count+80+"rpx",_i:42},on:{"load-success-all":t.listSuccess},scopedSlots:t._u([{key:"listData",fn:function(t,e,s){var a=t.list;return[i("serviceCardList",{attrs:{list:a,_i:"44-"+s}})]}},{key:"empty",fn:function(t,e,s){return[i("noData",{attrs:{_i:"46-"+s}})]}}])})],1),t._$s(47,"i",t.syrdetail.id)?i("evaluationList",{attrs:{evaluated_id:t.syrdetail.id,evaluated_type:1,_i:47},on:{goList:t.goList}}):t._e()],1)],1)},r=[]},"8f1b":function(t,e,i){"use strict";i.r(e);var s=i("5307"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"8f27":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"ServiceFirstTab",props:{tabs:{type:Array,required:!0,default:function(){return[]}},activeId:{type:[String,Number],default:""},tabWidth:{type:Number,default:140},activeColor:{type:String,default:"#E8101E"},inactiveColor:{type:String,default:"#333"},fontSize:{type:Number,default:28},indicatorHeight:{type:Number,default:6},bgColor:{type:String,default:"#fafafa"},tabPaddingTop:{type:String,default:"30rpx"},tabPaddingBottom:{type:String,default:"14rpx"}},methods:{handleTabClick:function(t){this.activeId!==t.id&&this.$emit("tab-click",t.id,t.title,t)}}};e.default=s},"8f29":function(t,e,i){"use strict";i.r(e);var s=i("f98d"),a=i("3067");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"4f31fe31",null,!1,s["a"],void 0);e["default"]=n.exports},"8f55":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,aliOssUploader:i("93a6").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","complete-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"1"==t.identity?"\u4e2a\u4eba\u8d44\u6599":"\u5e97\u94fa\u8d44\u6599","show-back":!0,_i:1}}),i("view",{staticClass:t._$s(2,"sc","form-content"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","section-title"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","title-bar"),attrs:{_i:4}}),i("text",[t._v(t._$s(5,"t0-0",t._s("1"==t.identity?"\u4e2a\u4eba\u4fe1\u606f":"\u5e97\u94fa\u4fe1\u606f")))])]),i("view",{staticClass:t._$s(6,"sc","form-item box-cont"),attrs:{_i:6}},[i("text",{staticClass:t._$s(7,"sc","label required"),attrs:{_i:7}},[t._v(t._$s(7,"t0-0",t._s("1"==t.identity?"\u5de5\u88c5\u5934\u50cf":"\u5e97\u94falogo")))]),i("view",{staticClass:t._$s(8,"sc","upload-box"),attrs:{_i:8},on:{click:function(e){return t.chooseImage("avatar")}}},[t._$s(9,"i",t.formData.head_photo)?i("image",{staticClass:t._$s(9,"sc","avatar-image"),attrs:{src:t._$s(9,"a-src",t.formData.head_photo),_i:9}}):i("image",{staticClass:t._$s(10,"sc","upload-img"),attrs:{_i:10}})]),t._$s(11,"i","1"==t.identity)?i("text",{staticClass:t._$s(11,"sc","upload-tip"),attrs:{_i:11}}):t._e()]),i("view",{staticClass:t._$s(12,"sc","form-item-one box-cont"),attrs:{_i:12}},[i("text",{staticClass:t._$s(13,"sc","label required"),attrs:{_i:13}},[t._v(t._$s(13,"t0-0",t._s("1"==t.identity?"\u771f\u5b9e\u59d3\u540d":"\u5e97\u94fa\u540d\u79f0")))]),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.name,expression:"formData.name"}],staticClass:t._$s(14,"sc","input"),attrs:{placeholder:t._$s(14,"a-placeholder","1"==t.identity?"\u8bf7\u8f93\u5165\u771f\u5b9e\u59d3\u540d":"\u8bf7\u8f93\u5165\u5e97\u94fa\u540d\u79f0"),_i:14},domProps:{value:t._$s(14,"v-model",t.formData.name)},on:{input:function(e){e.target.composing||t.$set(t.formData,"name",e.target.value)}}})]),t._$s(15,"i","2"==t.identity)?i("view",{staticClass:t._$s(15,"sc","form-item-one box-cont"),attrs:{_i:15}},[i("text",{staticClass:t._$s(16,"sc","label required"),attrs:{_i:16}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.legal_name,expression:"formData.legal_name"}],staticClass:t._$s(17,"sc","input"),attrs:{_i:17},domProps:{value:t._$s(17,"v-model",t.formData.legal_name)},on:{input:function(e){e.target.composing||t.$set(t.formData,"legal_name",e.target.value)}}})]):t._e(),t._$s(18,"i","1"==t.identity)?i("view",{staticClass:t._$s(18,"sc","form-item-one box-cont"),attrs:{_i:18}},[i("text",{staticClass:t._$s(19,"sc","label required"),attrs:{_i:19}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.account,expression:"formData.account"}],staticClass:t._$s(20,"sc","input disabled"),attrs:{_i:20},domProps:{value:t._$s(20,"v-model",t.formData.account)},on:{input:function(e){e.target.composing||t.$set(t.formData,"account",e.target.value)}}})]):i("view",{staticClass:t._$s(21,"sc","form-item-one box-cont"),attrs:{_i:21}},[i("text",{staticClass:t._$s(22,"sc","label required"),attrs:{_i:22}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.legal_phone,expression:"formData.legal_phone"}],staticClass:t._$s(23,"sc","input"),attrs:{_i:23},domProps:{value:t._$s(23,"v-model",t.formData.legal_phone)},on:{input:function(e){e.target.composing||t.$set(t.formData,"legal_phone",e.target.value)}}})]),t._$s(24,"i","1"==t.identity)?i("view",{staticClass:t._$s(24,"sc","box-cont form-upimgs"),attrs:{_i:24}},[i("view",{staticClass:t._$s(25,"sc","form-item-one form-item-tit"),attrs:{_i:25}},[i("text",{staticClass:t._$s(26,"sc","label required"),attrs:{_i:26}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.idcard_num,expression:"formData.idcard_num"}],staticClass:t._$s(27,"sc","input"),attrs:{_i:27},domProps:{value:t._$s(27,"v-model",t.formData.idcard_num)},on:{input:function(e){e.target.composing||t.$set(t.formData,"idcard_num",e.target.value)}}})]),i("view",{staticClass:t._$s(28,"sc","form-upimg"),attrs:{_i:28}},[i("view",{staticClass:t._$s(29,"sc","upload-box"),attrs:{_i:29},on:{click:function(e){return t.chooseImage("idcard_positive")}}},[i("view",{staticClass:t._$s(30,"sc","upload-camera img1"),attrs:{_i:30}},[t._$s(31,"i",t.formData.idcard_positive)?i("image",{staticClass:t._$s(31,"sc","preview-image"),attrs:{src:t._$s(31,"a-src",t.formData.idcard_positive),_i:31}}):i("image",{staticClass:t._$s(32,"sc","camera-icon"),attrs:{_i:32}})])]),i("text",{staticClass:t._$s(33,"sc","label required"),attrs:{_i:33}})]),i("view",{staticClass:t._$s(34,"sc","form-upimg"),attrs:{_i:34}},[i("view",{staticClass:t._$s(35,"sc","upload-box"),attrs:{_i:35},on:{click:function(e){return t.chooseImage("idcard_negative")}}},[i("view",{staticClass:t._$s(36,"sc","upload-camera img2"),attrs:{_i:36}},[t._$s(37,"i",t.formData.idcard_negative)?i("image",{staticClass:t._$s(37,"sc","preview-image"),attrs:{src:t._$s(37,"a-src",t.formData.idcard_negative),_i:37}}):i("image",{staticClass:t._$s(38,"sc","camera-icon"),attrs:{_i:38}})])]),i("text",{staticClass:t._$s(39,"sc","label required"),attrs:{_i:39}})]),i("view",{staticClass:t._$s(40,"sc","form-upimg"),attrs:{_i:40}},[i("view",{staticClass:t._$s(41,"sc","upload-box"),attrs:{_i:41},on:{click:function(e){return t.chooseImage("idcard_hands")}}},[i("view",{staticClass:t._$s(42,"sc","upload-camera img3"),attrs:{_i:42}},[t._$s(43,"i",t.formData.idcard_hands)?i("image",{staticClass:t._$s(43,"sc","preview-image"),attrs:{src:t._$s(43,"a-src",t.formData.idcard_hands),_i:43}}):i("image",{staticClass:t._$s(44,"sc","camera-icon"),attrs:{_i:44}})])]),i("text",{staticClass:t._$s(45,"sc","label required"),attrs:{_i:45}})]),i("view",{staticClass:t._$s(46,"sc","form-upimg"),attrs:{_i:46}},[i("view",{staticClass:t._$s(47,"sc","upload-box"),attrs:{_i:47},on:{click:function(e){return t.chooseImage("health_card")}}},[i("view",{staticClass:t._$s(48,"sc","upload-camera img4"),attrs:{_i:48}},[t._$s(49,"i",t.formData.health_card)?i("image",{staticClass:t._$s(49,"sc","preview-image"),attrs:{src:t._$s(49,"a-src",t.formData.health_card),_i:49}}):i("image",{staticClass:t._$s(50,"sc","camera-icon"),attrs:{_i:50}})])]),i("text",{staticClass:t._$s(51,"sc","label required"),attrs:{_i:51}})])]):i("view",{staticClass:t._$s(52,"sc","box-cont form-upimgs"),attrs:{_i:52}},[i("view",{staticClass:t._$s(53,"sc","form-item-one form-item-tit"),attrs:{_i:53}},[i("text",{staticClass:t._$s(54,"sc","label required"),attrs:{_i:54}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.legal_idcard_num,expression:"formData.legal_idcard_num"}],staticClass:t._$s(55,"sc","input"),attrs:{_i:55},domProps:{value:t._$s(55,"v-model",t.formData.legal_idcard_num)},on:{input:function(e){e.target.composing||t.$set(t.formData,"legal_idcard_num",e.target.value)}}})]),i("view",[i("view",{staticClass:t._$s(57,"sc","form-upimg"),attrs:{_i:57}},[i("view",{staticClass:t._$s(58,"sc","upload-box"),attrs:{_i:58},on:{click:function(e){return t.chooseImage("legal_idcard_positive")}}},[i("view",{staticClass:t._$s(59,"sc","upload-camera img1"),attrs:{_i:59}},[t._$s(60,"i",t.formData.legal_idcard_positive)?i("image",{staticClass:t._$s(60,"sc","preview-image"),attrs:{src:t._$s(60,"a-src",t.formData.legal_idcard_positive),_i:60}}):i("image",{staticClass:t._$s(61,"sc","camera-icon"),attrs:{_i:61}})])]),i("text",{staticClass:t._$s(62,"sc","label required"),attrs:{_i:62}})]),i("view",{staticClass:t._$s(63,"sc","form-upimg"),attrs:{_i:63}},[i("view",{staticClass:t._$s(64,"sc","upload-box"),attrs:{_i:64},on:{click:function(e){return t.chooseImage("legal_idcard_negative")}}},[i("view",{staticClass:t._$s(65,"sc","upload-camera img2"),attrs:{_i:65}},[t._$s(66,"i",t.formData.legal_idcard_negative)?i("image",{staticClass:t._$s(66,"sc","preview-image"),attrs:{src:t._$s(66,"a-src",t.formData.legal_idcard_negative),_i:66}}):i("image",{staticClass:t._$s(67,"sc","camera-icon"),attrs:{_i:67}})])]),i("text",{staticClass:t._$s(68,"sc","label required"),attrs:{_i:68}})])])]),i("view",{staticClass:t._$s(69,"sc","box-cont form-upimgs form-upimg"),attrs:{_i:69}},[i("view",{staticClass:t._$s(70,"sc","upload-box"),attrs:{_i:70},on:{click:function(e){return t.chooseImage("uscc_photo")}}},[i("view",{staticClass:t._$s(71,"sc","upload-camera img4"),attrs:{_i:71}},[t._$s(72,"i",t.formData.uscc_photo)?i("image",{staticClass:t._$s(72,"sc","preview-image"),attrs:{src:t._$s(72,"a-src",t.formData.uscc_photo),_i:72}}):i("image",{staticClass:t._$s(73,"sc","camera-icon"),attrs:{_i:73}})])]),i("text",{staticClass:t._$s(74,"sc","label required"),attrs:{_i:74}})]),t._$s(75,"i","1"==t.identity)?i("view",{staticClass:t._$s(75,"sc","box-cont form-upimgs form-upimg"),attrs:{_i:75}},[i("view",{staticClass:t._$s(76,"sc","upload-box"),attrs:{_i:76},on:{click:function(e){return t.chooseImage("shop_photo")}}},[i("view",{staticClass:t._$s(77,"sc","upload-camera img4"),attrs:{_i:77}},[t._$s(78,"i",t.formData.shop_photo)?i("image",{staticClass:t._$s(78,"sc","preview-image"),attrs:{src:t._$s(78,"a-src",t.formData.shop_photo),_i:78}}):i("image",{staticClass:t._$s(79,"sc","camera-icon"),attrs:{_i:79}})])]),i("text",{staticClass:t._$s(80,"sc","label required"),attrs:{_i:80}})]):t._e(),t._$s(81,"i","1"==t.identity)?i("view",{staticClass:t._$s(81,"sc","section-card box-cont"),attrs:{_i:81}},[i("text",{staticClass:t._$s(82,"sc","label"),attrs:{_i:82}}),i("view",{staticClass:t._$s(83,"sc","upload-grid"),attrs:{_i:83}},[i("ali-oss-uploader",{attrs:{"max-count":9,"max-size":5,width:"668rpx",type:t.identity+1,"user-id":t.userId,"button-text":"\u4e0a\u4f20\u56fe\u7247",tips:"\u6700\u591a\u4e0a\u4f203\u5f20\u56fe\u7247\uff0c\u6bcf\u5f20\u4e0d\u8d85\u8fc75MB",_i:84},on:{success:t.onUploadSuccess,error:t.onUploadError,delete:t.onFileDelete,ckeckisShowPer:t.ckeckisShowPer,ckecknowQer:t.ckecknowQer},model:{value:t._$s(84,"v-model",t.formData.qualifications),callback:function(e){t.$set(t.formData,"qualifications",e)},expression:"formData.qualifications"}})],1)]):t._e(),t._$s(85,"i","1"==t.identity)?i("view",{staticClass:t._$s(85,"sc","form-item-data box-cont"),attrs:{_i:85}},[i("text",{staticClass:t._$s(86,"sc","label required"),attrs:{_i:86}}),i("textarea",{directives:[{name:"model",rawName:"v-model",value:t.formData.detail,expression:"formData.detail"}],staticClass:t._$s(87,"sc","textarea-input"),attrs:{_i:87},domProps:{value:t._$s(87,"v-model",t.formData.detail)},on:{input:function(e){e.target.composing||t.$set(t.formData,"detail",e.target.value)}}})]):t._e(),i("view",{staticClass:t._$s(88,"sc","form-item-two box-cont"),attrs:{_i:88},on:{click:function(e){return t.openPicker("dependency")}}},[i("text",{staticClass:t._$s(89,"sc","label required"),attrs:{_i:89}}),i("view",{staticClass:t._$s(90,"sc","picker-content"),attrs:{_i:90}},[i("text",{class:t._$s(91,"c",t.formData.dependency?"picker-value":"placeholder"),attrs:{_i:91}},[t._v(t._$s(91,"t0-0",t._s(t.formData.dependency||"\u8bf7\u9009\u62e9")))]),i("image",{staticClass:t._$s(92,"sc","arrow-right"),attrs:{_i:92}})])]),i("view",{staticClass:t._$s(93,"sc","form-item-two box-cont"),attrs:{_i:93}},[i("text",{staticClass:t._$s(94,"sc","label required"),attrs:{_i:94}}),i("view",{staticClass:t._$s(95,"sc","picker-content"),attrs:{_i:95},on:{click:t.getAddressInfo}},[i("text",{class:t._$s(96,"c",t.formData.address?"picker-value":"placeholder"),attrs:{_i:96}},[t._v(t._$s(96,"t0-0",t._s(t.formData.address||"\u8bf7\u9009\u62e9")))]),i("image",{staticClass:t._$s(97,"sc","arrow-right"),attrs:{_i:97}})])]),t._$s(98,"i","1"==t.identity)?i("view",{staticClass:t._$s(98,"sc","form-item-one box-cont"),attrs:{_i:98}},[i("text",{staticClass:t._$s(99,"sc","label required"),attrs:{_i:99}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.second_phone,expression:"formData.second_phone"}],staticClass:t._$s(100,"sc","input"),attrs:{_i:100},domProps:{value:t._$s(100,"v-model",t.formData.second_phone)},on:{input:function(e){e.target.composing||t.$set(t.formData,"second_phone",e.target.value)}}})]):t._e(),t._$s(101,"i","1"==t.identity)?i("view",{staticClass:t._$s(101,"sc","form-item-one box-cont"),attrs:{_i:101}},[i("text",{staticClass:t._$s(102,"sc","label required"),attrs:{_i:102}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.for_shop,expression:"formData.for_shop"}],staticClass:t._$s(103,"sc","input"),attrs:{_i:103},domProps:{value:t._$s(103,"v-model",t.formData.for_shop)},on:{input:function(e){e.target.composing||t.$set(t.formData,"for_shop",e.target.value)}}})]):t._e(),i("view",{staticClass:t._$s(104,"sc","form-item-two box-cont"),attrs:{_i:104},on:{click:function(e){return t.openPicker("get_msg_method")}}},[i("text",{staticClass:t._$s(105,"sc","label required"),attrs:{_i:105}}),i("view",{staticClass:t._$s(106,"sc","picker-content"),attrs:{_i:106}},[i("text",{class:t._$s(107,"c",t.formData.get_msg_method?"picker-value":"placeholder"),attrs:{_i:107}},[t._v(t._$s(107,"t0-0",t._s(t.get_msg_method||"\u8bf7\u9009\u62e9")))]),i("image",{staticClass:t._$s(108,"sc","arrow-right"),attrs:{_i:108}})])]),i("view",{staticClass:t._$s(109,"sc","box-cont"),attrs:{_i:109}},[i("view",{staticClass:t._$s(110,"sc","form-item-one form-item-tit"),attrs:{_i:110}},[i("text",{staticClass:t._$s(111,"sc","label required"),attrs:{_i:111}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.invite_code_other,expression:"formData.invite_code_other"}],staticClass:t._$s(112,"sc","input"),attrs:{_i:112},domProps:{value:t._$s(112,"v-model",t.formData.invite_code_other)},on:{input:function(e){e.target.composing||t.$set(t.formData,"invite_code_other",e.target.value)}}})]),i("text",{staticClass:t._$s(113,"sc","invite-tip"),attrs:{_i:113}})]),i("view",{staticClass:t._$s(114,"sc","section-title"),attrs:{_i:114}},[i("view",{staticClass:t._$s(115,"sc","title-bar"),attrs:{_i:115}}),i("text")]),i("view",{staticClass:t._$s(117,"sc","form-item-two box-cont"),attrs:{_i:117},on:{click:t.showServicePopup}},[i("text",{staticClass:t._$s(118,"sc","label required"),attrs:{_i:118}}),i("view",{staticClass:t._$s(119,"sc","picker-content"),attrs:{_i:119}},[i("text",{class:t._$s(120,"c",0!=t.formData.servers_kill.length?"picker-value":"placeholder"),attrs:{_i:120}},[t._v(t._$s(120,"t0-0",t._s(t.selectedServicesText||"\u8bf7\u9009\u62e9")))]),i("image",{staticClass:t._$s(121,"sc","arrow-right"),attrs:{_i:121}})])]),t._$s(122,"i","1"==t.identity)?i("view",{staticClass:t._$s(122,"sc","form-item-two box-cont"),attrs:{_i:122},on:{click:t.showRegionPopup}},[i("text",{staticClass:t._$s(123,"sc","label required"),attrs:{_i:123}}),i("view",{staticClass:t._$s(124,"sc","picker-content"),attrs:{_i:124}},[i("text",{class:t._$s(125,"c",0!=t.formData.servers_region.length?"picker-value":"placeholder"),attrs:{_i:125}},[t._v(t._$s(125,"t0-0",t._s(t.selectedRegionText||"\u8bf7\u9009\u62e9")))]),i("image",{staticClass:t._$s(126,"sc","arrow-right"),attrs:{_i:126}})])]):t._e(),t._$s(127,"i","1"==t.identity)?i("view",{staticClass:t._$s(127,"sc","form-item-two box-cont"),attrs:{_i:127},on:{click:function(e){return t.openPicker("default_times")}}},[i("text",{staticClass:t._$s(128,"sc","label required"),attrs:{_i:128}}),i("view",{staticClass:t._$s(129,"sc","picker-content"),attrs:{_i:129}},[i("text",{class:t._$s(130,"c",t.formData.default_times?"picker-value":"placeholder"),attrs:{_i:130}},[t._v(t._$s(130,"t0-0",t._s(t.formData.default_times||"\u8bf7\u9009\u62e9")))]),i("image",{staticClass:t._$s(131,"sc","arrow-right"),attrs:{_i:131}})])]):i("view",{staticClass:t._$s(132,"sc","form-item-two box-cont"),attrs:{_i:132},on:{click:function(e){return t.openPicker("default_times")}}},[i("text",{staticClass:t._$s(133,"sc","label required"),attrs:{_i:133}}),i("view",{staticClass:t._$s(134,"sc","picker-content"),attrs:{_i:134}},[i("text",{class:t._$s(135,"c",t.formData.business_time?"picker-value":"placeholder"),attrs:{_i:135}},[t._v(t._$s(135,"t0-0",t._s(t.formData.business_time||"\u8bf7\u9009\u62e9")))]),i("image",{staticClass:t._$s(136,"sc","arrow-right"),attrs:{_i:136}})])]),i("view",{staticClass:t._$s(137,"sc","form-item-two box-cont"),attrs:{_i:137},on:{click:function(e){return t.openPicker("major")}}},[i("text",{staticClass:t._$s(138,"sc","label required"),attrs:{_i:138}}),i("view",{staticClass:t._$s(139,"sc","picker-content"),attrs:{_i:139}},[i("text",{class:t._$s(140,"c",t.formData.major?"picker-value":"placeholder"),attrs:{_i:140}},[t._v(t._$s(140,"t0-0",t._s(t.major||"\u8bf7\u9009\u62e9")))]),i("image",{staticClass:t._$s(141,"sc","arrow-right"),attrs:{_i:141}})])]),t._$s(142,"i","1"==t.identity)?i("view",{staticClass:t._$s(142,"sc","form-item-two box-cont"),attrs:{_i:142},on:{click:function(e){return t.openPicker("work_state")}}},[i("text",{staticClass:t._$s(143,"sc","label required"),attrs:{_i:143}}),i("view",{staticClass:t._$s(144,"sc","picker-content"),attrs:{_i:144}},[i("text",{class:t._$s(145,"c",t.formData.work_state?"picker-value":"placeholder"),attrs:{_i:145}},[t._v(t._$s(145,"t0-0",t._s(t.work_state||"\u8bf7\u9009\u62e9")))]),i("image",{staticClass:t._$s(146,"sc","arrow-right"),attrs:{_i:146}})])]):t._e(),i("view",{staticClass:t._$s(147,"sc","service-promise"),attrs:{_i:147}},[i("view",{staticClass:t._$s(148,"sc","promise-title"),attrs:{_i:148}}),t._$s(149,"i","1"==t.identity)?i("view",{staticClass:t._$s(149,"sc","promise-item"),attrs:{_i:149}},[i("view",{staticClass:t._$s(150,"sc","dot"),attrs:{_i:150}}),i("text",{staticClass:t._$s(151,"sc","promise-text"),attrs:{_i:151}})]):t._e(),i("view",{staticClass:t._$s(152,"sc","promise-item"),attrs:{_i:152}},[i("view",{staticClass:t._$s(153,"sc","dot"),attrs:{_i:153}}),i("text",{staticClass:t._$s(154,"sc","promise-text"),attrs:{_i:154}})])]),i("view",{staticClass:t._$s(155,"sc","popup"),class:t._$s(155,"c",{show:t.showServicePopupFlag}),attrs:{_i:155}},[i("view",{staticClass:t._$s(156,"sc","popup-mask"),attrs:{_i:156},on:{click:t.hideServicePopup}}),i("view",{staticClass:t._$s(157,"sc","popup-content"),attrs:{_i:157}},[i("view",{staticClass:t._$s(158,"sc","popup-header"),attrs:{_i:158}},[i("text",{staticClass:t._$s(159,"sc","popup-title"),attrs:{_i:159}}),i("text",{staticClass:t._$s(160,"sc","popup-close"),attrs:{_i:160},on:{click:t.hideServicePopup}})]),i("view",{staticClass:t._$s(161,"sc","popup-body"),attrs:{_i:161}},[i("view",{staticClass:t._$s(162,"sc","checkbox-list"),attrs:{_i:162}},t._l(t._$s(163,"f",{forItems:t.serviceList}),(function(e,s,a,r){return i("view",{key:t._$s(163,"f",{forIndex:a,key:s}),staticClass:t._$s("163-"+r,"sc","checkbox-item"),attrs:{_i:"163-"+r},on:{click:function(e){return t.toggleServiceSelect(s)}}},[i("view",{staticClass:t._$s("164-"+r,"sc","checkbox"),class:t._$s("164-"+r,"c",{checked:e.checked}),attrs:{_i:"164-"+r}},[t._$s("165-"+r,"i",e.checked)?i("text",{staticClass:t._$s("165-"+r,"sc","check-icon"),attrs:{_i:"165-"+r}}):t._e()]),i("text",{staticClass:t._$s("166-"+r,"sc","checkbox-label"),attrs:{_i:"166-"+r}},[t._v(t._$s("166-"+r,"t0-0",t._s(e.title)))])])})),0)]),i("view",{staticClass:t._$s(167,"sc","popup-footer"),attrs:{_i:167}},[i("view",{staticClass:t._$s(168,"sc","popup-btn cancel"),attrs:{_i:168},on:{click:t.hideServicePopup}},[i("text",{staticClass:t._$s(169,"sc","btn-text"),attrs:{_i:169}})]),i("view",{staticClass:t._$s(170,"sc","popup-btn confirm"),attrs:{_i:170},on:{click:t.confirmServiceSelect}},[i("text",{staticClass:t._$s(171,"sc","btn-text"),attrs:{_i:171}})])])])]),i("view",{staticClass:t._$s(172,"sc","popup"),class:t._$s(172,"c",{show:t.showRegionPopupFlag}),attrs:{_i:172}},[i("view",{staticClass:t._$s(173,"sc","popup-mask"),attrs:{_i:173},on:{click:t.hideRegionPopup}}),i("view",{staticClass:t._$s(174,"sc","popup-content region-popup"),attrs:{_i:174}},[i("view",{staticClass:t._$s(175,"sc","popup-header"),attrs:{_i:175}},[i("text",{staticClass:t._$s(176,"sc","popup-title"),attrs:{_i:176}}),i("text",{staticClass:t._$s(177,"sc","popup-close"),attrs:{_i:177},on:{click:t.hideRegionPopup}})]),i("view",{staticClass:t._$s(178,"sc","region-tabs"),attrs:{_i:178}},t._l(t._$s(179,"f",{forItems:t.regionTabs}),(function(e,s,a,r){return i("view",{key:t._$s(179,"f",{forIndex:a,key:s}),staticClass:t._$s("179-"+r,"sc","region-tab"),class:t._$s("179-"+r,"c",{active:t.currentTab===s}),attrs:{_i:"179-"+r},on:{click:function(e){return t.switchTab(s)}}},[t._v(t._$s("179-"+r,"t0-0",t._s(e)))])})),0),i("view",{staticClass:t._$s(180,"sc","region-body"),attrs:{_i:180}},[t._$s(181,"i",0===t.currentTab)?i("scroll-view",{staticClass:t._$s(181,"sc","region-scroll"),attrs:{_i:181}},t._l(t._$s(182,"f",{forItems:t.ChinaCitys}),(function(e,s,a,r){return i("view",{key:t._$s(182,"f",{forIndex:a,key:s}),staticClass:t._$s("182-"+r,"sc","region-item"),attrs:{_i:"182-"+r},on:{click:function(i){return t.selectProvince(e,s)}}},[i("text",[t._v(t._$s("183-"+r,"t0-0",t._s(e.province)))]),i("image",{staticClass:t._$s("184-"+r,"sc","arrow-right"),attrs:{_i:"184-"+r}})])})),0):t._e(),t._$s(185,"i",1===t.currentTab)?i("scroll-view",{staticClass:t._$s(185,"sc","region-scroll"),attrs:{_i:185}},t._l(t._$s(186,"f",{forItems:t.cityList}),(function(e,s,a,r){return i("view",{key:t._$s(186,"f",{forIndex:a,key:s}),staticClass:t._$s("186-"+r,"sc","region-item"),attrs:{_i:"186-"+r},on:{click:function(i){return t.selectCity(e,s)}}},[i("text",[t._v(t._$s("187-"+r,"t0-0",t._s(e.city)))]),i("image",{staticClass:t._$s("188-"+r,"sc","arrow-right"),attrs:{_i:"188-"+r}})])})),0):t._e(),t._$s(189,"i",2===t.currentTab)?i("scroll-view",{staticClass:t._$s(189,"sc","region-scroll"),attrs:{_i:189}},t._l(t._$s(190,"f",{forItems:t.districtList}),(function(e,s,a,r){return i("view",{key:t._$s(190,"f",{forIndex:a,key:s}),staticClass:t._$s("190-"+r,"sc","region-item checkbox-item"),attrs:{_i:"190-"+r},on:{click:function(e){return t.toggleDistrictSelect(s)}}},[i("view",{staticClass:t._$s("191-"+r,"sc","checkbox"),class:t._$s("191-"+r,"c",{checked:e.checked}),attrs:{_i:"191-"+r}},[t._$s("192-"+r,"i",e.checked)?i("text",{staticClass:t._$s("192-"+r,"sc","check-icon"),attrs:{_i:"192-"+r}}):t._e()]),i("text",{staticClass:t._$s("193-"+r,"sc","checkbox-label"),attrs:{_i:"193-"+r}},[t._v(t._$s("193-"+r,"t0-0",t._s(e.area)))])])})),0):t._e()]),i("view",{staticClass:t._$s(194,"sc","popup-footer"),attrs:{_i:194}},[i("view",{staticClass:t._$s(195,"sc","popup-btn cancel"),attrs:{_i:195},on:{click:t.hideRegionPopup}},[i("text",{staticClass:t._$s(196,"sc","btn-text"),attrs:{_i:196}})]),i("view",{staticClass:t._$s(197,"sc","popup-btn confirm"),attrs:{_i:197},on:{click:t.confirmRegionSelect}},[i("text",{staticClass:t._$s(198,"sc","btn-text"),attrs:{_i:198}})])])])]),i("view",{staticClass:t._$s(199,"sc","popup"),class:t._$s(199,"c",{show:t.showLocationPopupFlag}),attrs:{_i:199}},[i("view",{staticClass:t._$s(200,"sc","popup-mask"),attrs:{_i:200},on:{click:t.hideLocationPopup}}),i("view",{staticClass:t._$s(201,"sc","popup-content"),attrs:{_i:201}},[i("view",{staticClass:t._$s(202,"sc","popup-header"),attrs:{_i:202}},[i("text",{staticClass:t._$s(203,"sc","popup-title"),attrs:{_i:203}}),i("text",{staticClass:t._$s(204,"sc","popup-close"),attrs:{_i:204},on:{click:t.hideLocationPopup}})]),i("view",{staticClass:t._$s(205,"sc","region-body"),attrs:{_i:205}},[i("picker-view",{staticClass:t._$s(206,"sc","picker-scroll"),attrs:{"indicator-style":t._$s(206,"a-indicator-style",t.indicatorStyle),value:t._$s(206,"a-value",t.locationValue),_i:206},on:{change:t.bindChangeLocation}},[i("picker-view-column",t._l(t._$s(208,"f",{forItems:t.ChinaCitys}),(function(e,s,a,r){return i("view",{key:t._$s(208,"f",{forIndex:a,key:s}),staticClass:t._$s("208-"+r,"sc","picker-item"),attrs:{_i:"208-"+r}},[t._v(t._$s("208-"+r,"t0-0",t._s(e.province)))])})),0),i("picker-view-column",t._l(t._$s(210,"f",{forItems:t.locatinCitys}),(function(e,s,a,r){return i("view",{key:t._$s(210,"f",{forIndex:a,key:s}),staticClass:t._$s("210-"+r,"sc","picker-item"),attrs:{_i:"210-"+r}},[t._v(t._$s("210-"+r,"t0-0",t._s(e.city)))])})),0),i("picker-view-column",t._l(t._$s(212,"f",{forItems:t.locationAreas}),(function(e,s,a,r){return i("view",{key:t._$s(212,"f",{forIndex:a,key:s}),staticClass:t._$s("212-"+r,"sc","picker-item"),attrs:{_i:"212-"+r}},[t._v(t._$s("212-"+r,"t0-0",t._s(e.area)))])})),0)])]),i("view",{staticClass:t._$s(213,"sc","popup-footer"),attrs:{_i:213}},[i("view",{staticClass:t._$s(214,"sc","popup-btn cancel"),attrs:{_i:214},on:{click:t.hideLocationPopup}},[i("text",{staticClass:t._$s(215,"sc","btn-text"),attrs:{_i:215}})]),i("view",{staticClass:t._$s(216,"sc","popup-btn confirm"),attrs:{_i:216},on:{click:t.confirmLocationSelect}},[i("text",{staticClass:t._$s(217,"sc","btn-text"),attrs:{_i:217}})])])])]),i("view",{staticClass:t._$s(218,"sc","popup"),class:t._$s(218,"c",{show:t.showTimePicker}),attrs:{_i:218}},[i("view",{staticClass:t._$s(219,"sc","popup-mask"),attrs:{_i:219},on:{click:t.hideTimePopup}}),i("view",{staticClass:t._$s(220,"sc","popup-content"),attrs:{_i:220}},[i("view",{staticClass:t._$s(221,"sc","popup-header"),attrs:{_i:221}},[i("text",{staticClass:t._$s(222,"sc","cancel-text"),attrs:{_i:222},on:{click:t.hideTimePopup}}),i("text",{staticClass:t._$s(223,"sc","title"),attrs:{_i:223}}),i("text",{staticClass:t._$s(224,"sc","confirm-text"),attrs:{_i:224},on:{click:t.confirmTime}})]),i("view",{staticClass:t._$s(225,"sc","time-range"),attrs:{_i:225}},[i("view",{staticClass:t._$s(226,"sc","time-block"),class:t._$s(226,"c",{active:"start"===t.timeType}),attrs:{_i:226},on:{click:function(e){return t.switchTimeType("start")}}},[i("text",{staticClass:t._$s(227,"sc","time-value"),attrs:{_i:227}},[t._v(t._$s(227,"t0-0",t._s(t.formatTime(t.startTime))))]),i("text",{staticClass:t._$s(228,"sc","time-label"),attrs:{_i:228}})]),i("text",{staticClass:t._$s(229,"sc","time-separator"),attrs:{_i:229}}),i("view",{staticClass:t._$s(230,"sc","time-block"),class:t._$s(230,"c",{active:"end"===t.timeType}),attrs:{_i:230},on:{click:function(e){return t.switchTimeType("end")}}},[i("text",{staticClass:t._$s(231,"sc","time-value"),attrs:{_i:231}},[t._v(t._$s(231,"t0-0",t._s(t.formatTime(t.endTime))))]),i("text",{staticClass:t._$s(232,"sc","time-label"),attrs:{_i:232}})])]),i("view",{staticClass:t._$s(233,"sc","region-body"),attrs:{_i:233}},[i("picker-view",{staticClass:t._$s(234,"sc","picker-scroll"),attrs:{value:t._$s(234,"a-value",t.pickerValue),"indicator-style":t._$s(234,"a-indicator-style",t.indicatorStyle),_i:234},on:{change:t.handleTimeChange}},[i("picker-view-column",t._l(t._$s(236,"f",{forItems:t.hours}),(function(e,s,a,r){return i("view",{key:t._$s(236,"f",{forIndex:a,key:s}),staticClass:t._$s("236-"+r,"sc","picker-item"),attrs:{_i:"236-"+r}},[t._v(t._$s("236-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",t._l(t._$s(238,"f",{forItems:t.minutes}),(function(e,s,a,r){return i("view",{key:t._$s(238,"f",{forIndex:a,key:s}),staticClass:t._$s("238-"+r,"sc","picker-item"),attrs:{_i:"238-"+r}},[t._v(t._$s("238-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",[i("view",{staticClass:t._$s(240,"sc","picker-item"),attrs:{_i:240}})]),i("picker-view-column",t._l(t._$s(242,"f",{forItems:t.hours}),(function(e,s,a,r){return i("view",{key:t._$s(242,"f",{forIndex:a,key:s}),staticClass:t._$s("242-"+r,"sc","picker-item"),attrs:{_i:"242-"+r}},[t._v(t._$s("242-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",t._l(t._$s(244,"f",{forItems:t.minutes}),(function(e,s,a,r){return i("view",{key:t._$s(244,"f",{forIndex:a,key:s}),staticClass:t._$s("244-"+r,"sc","picker-item"),attrs:{_i:"244-"+r}},[t._v(t._$s("244-"+r,"t0-0",t._s(e)))])})),0)])])])])]),i("view",{staticClass:t._$s(245,"sc","bottom-fixed"),attrs:{_i:245}},[i("view",{staticClass:t._$s(246,"sc","fixed-btn"),attrs:{_i:246},on:{click:t.submit}},[i("text",{staticClass:t._$s(247,"sc","fixed-text"),attrs:{_i:247}})])]),i("view",{staticClass:t._$s(248,"sc","permission"),class:t._$s(248,"c",{transform:t.isShowPer&&"xc"===t.nowQer}),attrs:{_i:248}},[i("view",{staticClass:t._$s(249,"sc","per-tit"),attrs:{_i:249}}),i("view",{staticClass:t._$s(250,"sc","per-cont"),attrs:{_i:250}})]),i("view",{staticClass:t._$s(251,"sc","permission"),class:t._$s(251,"c",{transform:t.isShowPer&&"xj"===t.nowQer}),attrs:{_i:251}},[i("view",{staticClass:t._$s(252,"sc","per-tit"),attrs:{_i:252}}),i("view",{staticClass:t._$s(253,"sc","per-cont"),attrs:{_i:253}})])],1)},r=[]},"8f59":function(t,e,i){"use strict";(function(e){var i="undefined"!==typeof window?window:"undefined"!==typeof e?e:{},s=i.__VUE_DEVTOOLS_GLOBAL_HOOK__;function a(t,e){if(void 0===e&&(e=[]),null===t||"object"!==typeof t)return t;var i=function(t,e){return t.filter(e)[0]}(e,(function(e){return e.original===t}));if(i)return i.copy;var s=Array.isArray(t)?[]:{};return e.push({original:t,copy:s}),Object.keys(t).forEach((function(i){s[i]=a(t[i],e)})),s}function r(t,e){Object.keys(t).forEach((function(i){return e(t[i],i)}))}function c(t){return null!==t&&"object"===typeof t}var n=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var i=t.state;this.state=("function"===typeof i?i():i)||{}},o={namespaced:{configurable:!0}};o.namespaced.get=function(){return!!this._rawModule.namespaced},n.prototype.addChild=function(t,e){this._children[t]=e},n.prototype.removeChild=function(t){delete this._children[t]},n.prototype.getChild=function(t){return this._children[t]},n.prototype.hasChild=function(t){return t in this._children},n.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},n.prototype.forEachChild=function(t){r(this._children,t)},n.prototype.forEachGetter=function(t){this._rawModule.getters&&r(this._rawModule.getters,t)},n.prototype.forEachAction=function(t){this._rawModule.actions&&r(this._rawModule.actions,t)},n.prototype.forEachMutation=function(t){this._rawModule.mutations&&r(this._rawModule.mutations,t)},Object.defineProperties(n.prototype,o);var d=function(t){this.register([],t,!1)};d.prototype.get=function(t){return t.reduce((function(t,e){return t.getChild(e)}),this.root)},d.prototype.getNamespace=function(t){var e=this.root;return t.reduce((function(t,i){return e=e.getChild(i),t+(e.namespaced?i+"/":"")}),"")},d.prototype.update=function(t){(function t(e,i,s){0;if(i.update(s),s.modules)for(var a in s.modules){if(!i.getChild(a))return void 0;t(e.concat(a),i.getChild(a),s.modules[a])}})([],this.root,t)},d.prototype.register=function(t,e,i){var s=this;void 0===i&&(i=!0);var a=new n(e,i);if(0===t.length)this.root=a;else{var c=this.get(t.slice(0,-1));c.addChild(t[t.length-1],a)}e.modules&&r(e.modules,(function(e,a){s.register(t.concat(a),e,i)}))},d.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),i=t[t.length-1],s=e.getChild(i);s&&s.runtime&&e.removeChild(i)},d.prototype.isRegistered=function(t){var e=this.get(t.slice(0,-1)),i=t[t.length-1];return!!e&&e.hasChild(i)};var l;var u=function(t){var e=this;void 0===t&&(t={}),!l&&"undefined"!==typeof window&&window.Vue&&y(window.Vue);var i=t.plugins;void 0===i&&(i=[]);var a=t.strict;void 0===a&&(a=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new d(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new l,this._makeLocalGettersCache=Object.create(null);var r=this,c=this.dispatch,n=this.commit;this.dispatch=function(t,e){return c.call(r,t,e)},this.commit=function(t,e,i){return n.call(r,t,e,i)},this.strict=a;var o=this._modules.root.state;h(this,o,[],this._modules.root),v(this,o),i.forEach((function(t){return t(e)}));var u=void 0!==t.devtools?t.devtools:l.config.devtools;u&&function(t){s&&(t._devtoolHook=s,s.emit("vuex:init",t),s.on("vuex:travel-to-state",(function(e){t.replaceState(e)})),t.subscribe((function(t,e){s.emit("vuex:mutation",t,e)}),{prepend:!0}),t.subscribeAction((function(t,e){s.emit("vuex:action",t,e)}),{prepend:!0}))}(this)},f={state:{configurable:!0}};function _(t,e,i){return e.indexOf(t)<0&&(i&&i.prepend?e.unshift(t):e.push(t)),function(){var i=e.indexOf(t);i>-1&&e.splice(i,1)}}function p(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var i=t.state;h(t,i,[],t._modules.root,!0),v(t,i,e)}function v(t,e,i){var s=t._vm;t.getters={},t._makeLocalGettersCache=Object.create(null);var a=t._wrappedGetters,c={};r(a,(function(e,i){c[i]=function(t,e){return function(){return t(e)}}(e,t),Object.defineProperty(t.getters,i,{get:function(){return t._vm[i]},enumerable:!0})}));var n=l.config.silent;l.config.silent=!0,t._vm=new l({data:{$$state:e},computed:c}),l.config.silent=n,t.strict&&function(t){t._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}(t),s&&(i&&t._withCommit((function(){s._data.$$state=null})),l.nextTick((function(){return s.$destroy()})))}function h(t,e,i,s,a){var r=!i.length,c=t._modules.getNamespace(i);if(s.namespaced&&(t._modulesNamespaceMap[c],t._modulesNamespaceMap[c]=s),!r&&!a){var n=m(e,i.slice(0,-1)),o=i[i.length-1];t._withCommit((function(){l.set(n,o,s.state)}))}var d=s.context=function(t,e,i){var s=""===e,a={dispatch:s?t.dispatch:function(i,s,a){var r=g(i,s,a),c=r.payload,n=r.options,o=r.type;return n&&n.root||(o=e+o),t.dispatch(o,c)},commit:s?t.commit:function(i,s,a){var r=g(i,s,a),c=r.payload,n=r.options,o=r.type;n&&n.root||(o=e+o),t.commit(o,c,n)}};return Object.defineProperties(a,{getters:{get:s?function(){return t.getters}:function(){return function(t,e){if(!t._makeLocalGettersCache[e]){var i={},s=e.length;Object.keys(t.getters).forEach((function(a){if(a.slice(0,s)===e){var r=a.slice(s);Object.defineProperty(i,r,{get:function(){return t.getters[a]},enumerable:!0})}})),t._makeLocalGettersCache[e]=i}return t._makeLocalGettersCache[e]}(t,e)}},state:{get:function(){return m(t.state,i)}}}),a}(t,c,i);s.forEachMutation((function(e,i){var s=c+i;(function(t,e,i,s){var a=t._mutations[e]||(t._mutations[e]=[]);a.push((function(e){i.call(t,s.state,e)}))})(t,s,e,d)})),s.forEachAction((function(e,i){var s=e.root?i:c+i,a=e.handler||e;(function(t,e,i,s){var a=t._actions[e]||(t._actions[e]=[]);a.push((function(e){var a=i.call(t,{dispatch:s.dispatch,commit:s.commit,getters:s.getters,state:s.state,rootGetters:t.getters,rootState:t.state},e);return function(t){return t&&"function"===typeof t.then}(a)||(a=Promise.resolve(a)),t._devtoolHook?a.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):a}))})(t,s,a,d)})),s.forEachGetter((function(e,i){var s=c+i;(function(t,e,i,s){if(t._wrappedGetters[e])return void 0;t._wrappedGetters[e]=function(t){return i(s.state,s.getters,t.state,t.getters)}})(t,s,e,d)})),s.forEachChild((function(s,r){h(t,e,i.concat(r),s,a)}))}function m(t,e){return e.reduce((function(t,e){return t[e]}),t)}function g(t,e,i){return c(t)&&t.type&&(i=e,e=t,t=t.type),{type:t,payload:e,options:i}}function y(t){l&&t===l||(l=t, +/*! + * vuex v3.6.2 + * (c) 2021 Evan You + * @license MIT + */ +function(t){var e=Number(t.version.split(".")[0]);if(e>=2)t.mixin({beforeCreate:s});else{var i=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[s].concat(t.init):s,i.call(this,t)}}function s(){var t=this.$options;t.store?this.$store="function"===typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}}(l))}f.state.get=function(){return this._vm._data.$$state},f.state.set=function(t){0},u.prototype.commit=function(t,e,i){var s=this,a=g(t,e,i),r=a.type,c=a.payload,n=(a.options,{type:r,payload:c}),o=this._mutations[r];o&&(this._withCommit((function(){o.forEach((function(t){t(c)}))})),this._subscribers.slice().forEach((function(t){return t(n,s.state)})))},u.prototype.dispatch=function(t,e){var i=this,s=g(t,e),a=s.type,r=s.payload,c={type:a,payload:r},n=this._actions[a];if(n){try{this._actionSubscribers.slice().filter((function(t){return t.before})).forEach((function(t){return t.before(c,i.state)}))}catch(d){0}var o=n.length>1?Promise.all(n.map((function(t){return t(r)}))):n[0](r);return new Promise((function(t,e){o.then((function(e){try{i._actionSubscribers.filter((function(t){return t.after})).forEach((function(t){return t.after(c,i.state)}))}catch(d){0}t(e)}),(function(t){try{i._actionSubscribers.filter((function(t){return t.error})).forEach((function(e){return e.error(c,i.state,t)}))}catch(d){0}e(t)}))}))}},u.prototype.subscribe=function(t,e){return _(t,this._subscribers,e)},u.prototype.subscribeAction=function(t,e){var i="function"===typeof t?{before:t}:t;return _(i,this._actionSubscribers,e)},u.prototype.watch=function(t,e,i){var s=this;return this._watcherVM.$watch((function(){return t(s.state,s.getters)}),e,i)},u.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._vm._data.$$state=t}))},u.prototype.registerModule=function(t,e,i){void 0===i&&(i={}),"string"===typeof t&&(t=[t]),this._modules.register(t,e),h(this,this.state,t,this._modules.get(t),i.preserveState),v(this,this.state)},u.prototype.unregisterModule=function(t){var e=this;"string"===typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit((function(){var i=m(e.state,t.slice(0,-1));l.delete(i,t[t.length-1])})),p(this)},u.prototype.hasModule=function(t){return"string"===typeof t&&(t=[t]),this._modules.isRegistered(t)},u.prototype[[104,111,116,85,112,100,97,116,101].map((function(t){return String.fromCharCode(t)})).join("")]=function(t){this._modules.update(t),p(this,!0)},u.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(u.prototype,f);var b=k((function(t,e){var i={};return x(e).forEach((function(e){var s=e.key,a=e.val;i[s]=function(){var e=this.$store.state,i=this.$store.getters;if(t){var s=S(this.$store,"mapState",t);if(!s)return;e=s.context.state,i=s.context.getters}return"function"===typeof a?a.call(this,e,i):e[a]},i[s].vuex=!0})),i})),w=k((function(t,e){var i={};return x(e).forEach((function(e){var s=e.key,a=e.val;i[s]=function(){var e=[],i=arguments.length;while(i--)e[i]=arguments[i];var s=this.$store.commit;if(t){var r=S(this.$store,"mapMutations",t);if(!r)return;s=r.context.commit}return"function"===typeof a?a.apply(this,[s].concat(e)):s.apply(this.$store,[a].concat(e))}})),i})),$=k((function(t,e){var i={};return x(e).forEach((function(e){var s=e.key,a=e.val;a=t+a,i[s]=function(){if(!t||S(this.$store,"mapGetters",t))return this.$store.getters[a]},i[s].vuex=!0})),i})),C=k((function(t,e){var i={};return x(e).forEach((function(e){var s=e.key,a=e.val;i[s]=function(){var e=[],i=arguments.length;while(i--)e[i]=arguments[i];var s=this.$store.dispatch;if(t){var r=S(this.$store,"mapActions",t);if(!r)return;s=r.context.dispatch}return"function"===typeof a?a.apply(this,[s].concat(e)):s.apply(this.$store,[a].concat(e))}})),i}));function x(t){return function(t){return Array.isArray(t)||c(t)}(t)?Array.isArray(t)?t.map((function(t){return{key:t,val:t}})):Object.keys(t).map((function(e){return{key:e,val:t[e]}})):[]}function k(t){return function(e,i){return"string"!==typeof e?(i=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,i)}}function S(t,e,i){var s=t._modulesNamespaceMap[i];return s}function D(t,e,i){var s=i?t.groupCollapsed:t.group;try{s.call(t,e)}catch(a){t.log(e)}}function T(t){try{t.groupEnd()}catch(e){t.log("\u2014\u2014 log end \u2014\u2014")}}function I(){var t=new Date;return" @ "+P(t.getHours(),2)+":"+P(t.getMinutes(),2)+":"+P(t.getSeconds(),2)+"."+P(t.getMilliseconds(),3)}function P(t,e){return function(t,e){return new Array(e+1).join(t)}("0",e-t.toString().length)+t}var O={Store:u,install:y,version:"3.6.2",mapState:b,mapMutations:w,mapGetters:$,mapActions:C,createNamespacedHelpers:function(t){return{mapState:b.bind(null,t),mapGetters:$.bind(null,t),mapMutations:w.bind(null,t),mapActions:C.bind(null,t)}},createLogger:function(t){void 0===t&&(t={});var e=t.collapsed;void 0===e&&(e=!0);var i=t.filter;void 0===i&&(i=function(t,e,i){return!0});var s=t.transformer;void 0===s&&(s=function(t){return t});var r=t.mutationTransformer;void 0===r&&(r=function(t){return t});var c=t.actionFilter;void 0===c&&(c=function(t,e){return!0});var n=t.actionTransformer;void 0===n&&(n=function(t){return t});var o=t.logMutations;void 0===o&&(o=!0);var d=t.logActions;void 0===d&&(d=!0);var l=t.logger;return void 0===l&&(l=console),function(t){var u=a(t.state);"undefined"!==typeof l&&(o&&t.subscribe((function(t,c){var n=a(c);if(i(t,u,n)){var o=I(),d=r(t),f="mutation "+t.type+o;D(l,f,e),l.log("%c prev state","color: #9E9E9E; font-weight: bold",s(u)),l.log("%c mutation","color: #03A9F4; font-weight: bold",d),l.log("%c next state","color: #4CAF50; font-weight: bold",s(n)),T(l)}u=n})),d&&t.subscribeAction((function(t,i){if(c(t,i)){var s=I(),a=n(t),r="action "+t.type+s;D(l,r,e),l.log("%c action","color: #03A9F4; font-weight: bold",a),T(l)}})))}}};t.exports=O}).call(this,i("0ee4"))},"8fc9":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={data:function(){return{}},onLoad:function(t){},methods:{goBack:function(){uni.navigateBack()},goContact:function(){uni.navigateTo({url:"/pages/contact/contact"})},goWallet:function(){getApp().globalData.artisanType&&uni.navigateTo({url:"/pages/wallet/wallet"})}}};e.default=s},9008:function(t,e){t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.__esModule=!0,t.exports["default"]=t.exports},"90e2":function(t,e,i){"use strict";i.r(e);var s=i("7307"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"90e4":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this.$createElement,e=this._self._c||t;return e("view",{staticClass:this._$s(0,"sc","uv-line"),style:this._$s(0,"s",[this.lineStyle]),attrs:{_i:0}})},a=[]},9112:function(t,e,i){"use strict";i.r(e);var s=i("8403"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},9134:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","service-area-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:t.navTitle,showBack:!0,_i:1}}),i("view",{staticClass:t._$s(2,"sc","page-content"),style:t._$s(2,"s",{paddingBottom:t.buttonAreaHeight+"px"}),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","area-container box-cont"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","area-header"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","title-bar"),attrs:{_i:5}}),i("text",{staticClass:t._$s(6,"sc","area-title"),attrs:{_i:6}})]),t._$s(7,"i",!t.showPendingArea)?i("view",{staticClass:t._$s(7,"sc","current-area"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","area-display"),attrs:{_i:8}},[i("text",{staticClass:t._$s(9,"sc","area-value"),attrs:{_i:9}},[t._v(t._$s(9,"t0-0",t._s(t.currentAreasText||"\u6682\u672a\u8bbe\u7f6e\u670d\u52a1\u533a\u57df")))])])]):i("view",{staticClass:t._$s(10,"sc","pending-area"),attrs:{_i:10}},[i("view",{staticClass:t._$s(11,"sc","area-selection"),attrs:{_i:11},on:{click:function(e){t.editable&&t.showRegionPopup()}}},[t._$s(12,"i",t.editable)?i("text",{staticClass:t._$s(12,"sc","area-label"),attrs:{_i:12}}):t._e(),i("view",{staticClass:t._$s(13,"sc","area-picker-trigger"),attrs:{_i:13}},[i("text",{staticClass:t._$s(14,"sc","selected-area"),attrs:{_i:14}},[t._v(t._$s(14,"t0-0",t._s(t.selectedAreasText||"\u8bf7\u9009\u62e9")))]),t._$s(15,"i",t.editable)?i("image",{staticClass:t._$s(15,"sc","arrow-down"),attrs:{_i:15}}):t._e()])]),t._$s(16,"i",t.editable)?i("view",{staticClass:t._$s(16,"sc","area-limit-tip"),attrs:{_i:16}},[i("text",{staticClass:t._$s(17,"sc","limit-text"),attrs:{_i:17}})]):t._e()])])]),i("view",{staticClass:t._$s(18,"sc","popup"),class:t._$s(18,"c",{show:t.showRegionPopupFlag}),attrs:{_i:18}},[i("view",{staticClass:t._$s(19,"sc","popup-mask"),attrs:{_i:19},on:{click:t.hideRegionPopup}}),i("view",{staticClass:t._$s(20,"sc","popup-content region-popup"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","popup-header"),attrs:{_i:21}},[i("text",{staticClass:t._$s(22,"sc","popup-title"),attrs:{_i:22}}),i("text",{staticClass:t._$s(23,"sc","popup-close"),attrs:{_i:23},on:{click:t.hideRegionPopup}})]),i("view",{staticClass:t._$s(24,"sc","region-tabs"),attrs:{_i:24}},t._l(t._$s(25,"f",{forItems:t.regionTabs}),(function(e,s,a,r){return i("view",{key:t._$s(25,"f",{forIndex:a,key:s}),staticClass:t._$s("25-"+r,"sc","region-tab"),class:t._$s("25-"+r,"c",{active:t.currentTab===s}),attrs:{_i:"25-"+r},on:{click:function(e){return t.switchTab(s)}}},[t._v(t._$s("25-"+r,"t0-0",t._s(e)))])})),0),i("view",{staticClass:t._$s(26,"sc","region-body"),attrs:{_i:26}},[t._$s(27,"i",0===t.currentTab)?i("scroll-view",{staticClass:t._$s(27,"sc","region-scroll"),attrs:{_i:27}},t._l(t._$s(28,"f",{forItems:t.ChinaCitys}),(function(e,s,a,r){return i("view",{key:t._$s(28,"f",{forIndex:a,key:s}),staticClass:t._$s("28-"+r,"sc","region-item"),attrs:{_i:"28-"+r},on:{click:function(i){return t.selectProvince(e,s)}}},[i("text",[t._v(t._$s("29-"+r,"t0-0",t._s(e.province)))]),i("image",{staticClass:t._$s("30-"+r,"sc","arrow-right"),attrs:{_i:"30-"+r}})])})),0):t._e(),t._$s(31,"i",1===t.currentTab)?i("scroll-view",{staticClass:t._$s(31,"sc","region-scroll"),attrs:{_i:31}},t._l(t._$s(32,"f",{forItems:t.cityList}),(function(e,s,a,r){return i("view",{key:t._$s(32,"f",{forIndex:a,key:s}),staticClass:t._$s("32-"+r,"sc","region-item"),attrs:{_i:"32-"+r},on:{click:function(i){return t.selectCity(e,s)}}},[i("text",[t._v(t._$s("33-"+r,"t0-0",t._s(e.city)))]),i("image",{staticClass:t._$s("34-"+r,"sc","arrow-right"),attrs:{_i:"34-"+r}})])})),0):t._e(),t._$s(35,"i",2===t.currentTab)?i("scroll-view",{staticClass:t._$s(35,"sc","region-scroll"),attrs:{_i:35}},t._l(t._$s(36,"f",{forItems:t.districtList}),(function(e,s,a,r){return i("view",{key:t._$s(36,"f",{forIndex:a,key:s}),staticClass:t._$s("36-"+r,"sc","region-item checkbox-item"),attrs:{_i:"36-"+r},on:{click:function(e){return t.toggleDistrictSelect(s)}}},[i("view",{staticClass:t._$s("37-"+r,"sc","checkbox"),class:t._$s("37-"+r,"c",{checked:e.checked}),attrs:{_i:"37-"+r}},[t._$s("38-"+r,"i",e.checked)?i("image",{staticClass:t._$s("38-"+r,"sc","check-icon"),attrs:{_i:"38-"+r}}):t._e()]),i("text",{staticClass:t._$s("39-"+r,"sc","checkbox-label"),attrs:{_i:"39-"+r}},[t._v(t._$s("39-"+r,"t0-0",t._s(e.area)))])])})),0):t._e()]),i("view",{staticClass:t._$s(40,"sc","popup-footer"),attrs:{_i:40}},[i("view",{staticClass:t._$s(41,"sc","popup-btn cancel"),attrs:{_i:41},on:{click:t.hideRegionPopup}},[i("text",{staticClass:t._$s(42,"sc","btn-text"),attrs:{_i:42}})]),i("view",{staticClass:t._$s(43,"sc","popup-btn confirm"),attrs:{_i:43},on:{click:t.confirmRegionSelect}},[i("text",{staticClass:t._$s(44,"sc","btn-text"),attrs:{_i:44}})])])])]),i("view",{ref:"buttonArea",staticClass:t._$s(45,"sc","bottom-actions"),attrs:{_i:45}},[t._$s(46,"i",t.shouldShowRejectReason)?i("view",{staticClass:t._$s(46,"sc","reject-reason"),attrs:{_i:46}},[i("view",{staticClass:t._$s(47,"sc","reject-title"),attrs:{_i:47}}),i("view",{staticClass:t._$s(48,"sc","reject-detail"),attrs:{_i:48}},[t._v(t._$s(48,"t0-0",t._s(t.backText)))])]):t._e(),t._$s(49,"i",t.showAuditTip&&!t.showPendingArea)?i("view",{staticClass:t._$s(49,"sc","audit-tip"),attrs:{_i:49}},[i("text",{staticClass:t._$s(50,"sc","audit-text"),attrs:{_i:50}})]):t._e(),t._$s(51,"i","change"===t.buttonType)?i("view",{staticClass:t._$s(51,"sc","action-btn change-info-btn"),attrs:{_i:51},on:{click:t.startChange}},[i("text",{staticClass:t._$s(52,"sc","btn-text"),attrs:{_i:52}})]):t._e(),t._$s(53,"i","edit"===t.buttonType)?i("view",{staticClass:t._$s(53,"sc","action-buttons-row"),attrs:{_i:53}},[i("view",{staticClass:t._$s(54,"sc","action-btn cancel-btn"),attrs:{_i:54},on:{click:t.cancelChange}},[i("text",{staticClass:t._$s(55,"sc","btn-text cancel-text"),attrs:{_i:55}})]),i("view",{staticClass:t._$s(56,"sc","action-btn submit-btn"),attrs:{_i:56},on:{click:t.submitChange}},[i("text",{staticClass:t._$s(57,"sc","btn-text"),attrs:{_i:57}})])]):t._e(),t._$s(58,"i","view"===t.buttonType)?i("view",{staticClass:t._$s(58,"sc","action-btn view-change-btn"),attrs:{_i:58},on:{click:t.togglePendingArea}},[i("text",{staticClass:t._$s(59,"sc","btn-text"),attrs:{_i:59}},[t._v(t._$s(59,"t0-0",t._s(t.showPendingArea?"\u8fd4\u56de":"\u67e5\u770b\u6211\u7684\u53d8\u66f4")))])]):t._e()])],1)},r=[]},9146:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=i("d6c4"),n=i("110b"),o=(s(i("32a4")),s(i("16bb")),i("3237"),uni.requireNativePlugin("AliCloud-NirvanaPns")),d={globalData:{artisanType:2,latitude:"38.366667",longitude:"117.333333",address:"\u9ec4\u9a85\u5e02",servers_region:"\u6cb3\u5317\u7701-\u6ca7\u5dde\u5e02-\u9ec4\u9a85\u5e02",deviceid:"",addressRes:{type:"gcj02",altitude:0,latitude:38.372266,longitude:117.332895,speed:0,accuracy:30,adcode:"130983",cCode:"130900",pcode:"130000",address:{country:"\u4e2d\u56fd",province:"\u6cb3\u5317\u7701",city:"\u6ca7\u5dde\u5e02",district:"\u9ec4\u9a85\u5e02",street:"\u6e24\u6d77\u897f\u8def",streetNum:"35\u53f7",poiName:"\u9ec4\u9a85\u5e02\u4eba\u6c11\u653f\u5e9c",cityCode:"0317",adcode:"130983",cCode:"130900",pcode:"130000"}}},onLaunch:function(){var e=(0,r.default)(a.default.mark((function e(){var i,s,r,d,l,u,f,_=this;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return uni.hideTabBar(),uni.getStorageSync("accessToken")&&((0,c.registPush)(),this.messageUpudateNum()),i=uni.getStorageSync("setVersion"),e.next=5,uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:i.VersionCode,DeviceBrand:i.DeviceBrand,DeviceType:i.DeviceType},success:function(e){200==e.data.code&&(uni.setStorageSync("baseUrl",e.data.data.url),_.$store.commit("setLocation",!0)),t("log","\u8bf7\u6c42\u6210\u529f",e.data," at App.vue:92")},fail:function(e){t("log","\u8bf7\u6c42\u5931\u8d25",e," at App.vue:95")},complete:function(){t("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at App.vue:98")}});case 5:plus.screen.lockOrientation("portrait-primary"),s=uni.getSystemInfoSync(),r=s.platform,"android"===r&&(0,n.permissionListener)(),d="","android"==r?(o.setLoggerEnable(!0),o.expandAuthPageCheckedScope(!0),o.userControlAuthPageCancel(),o.setAuthPageUseDayLight(!1),d="cvJWYFO9s7xgJrzD+Ok2m2kCh3x0kdRkfJzGI0oxnyUXGlNAwAzvj87Yd6y030BWposVHUT84av2adBG9SdHl5CJpL0mGi+BRtachnyADJjfdpkJC0e0Uqb45pO7h7ZZvT+sNWQs1sa4JpL0U7hYKkgCP1iVXHoA1zKfzZynON6eKyvkzL1xpoPPag4O50slww4+6XuRVplCOSNCcsLRtot4CYnfsdcMvlV34MY5qB/rV+HNb1velpx4rg5atk3iTEiSLjla69c6pOT6vpjkK1qFVpNMxrEY"):"ios"==r&&(d="BONXQSabNMt1a8Cru1TjeW94aXen5rQHeAxzLGgpFzIUicDYeb9SD0l35MkKvjq7gQemE2HDp6B7adKZ8nrdUk4wgg1LIYSGDYVSc/Q1CwrJ9A3lMUeBfS1UUu3nBBg58bDvG1bl3j6tS4h6FjnYmP5+dDsyqb0YNmIhlSmia5Et7cfBMv2OT85N9WLJc/tOMQ9ZQCnuizKVlofkmDGFgjsBN/Bf2gLq6lTQyVqsgPJE5yEPd4riNg=="),o.setAuthSDKInfo(d),t("log","App Launch"," at App.vue:146"),this.globalData.deviceId=uni.getDeviceInfo().deviceId,uni.getStorageSync("refreshToken")&&(l=uni.getStorageSync("refresh_token_expries"),l=new Date(l),u=new Date,f=l.getTime()-u.getTime()/1e3,f<14400&&(t("log","----------------------------"," at App.vue:159"),uni.removeStorageSync("accessToken"),uni.removeStorageSync("refreshToken")));case 15:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),onShow:function(){uni.hideTabBar(),t("log","App Show"," at App.vue:185")},onHide:function(){t("log","App Hide"," at App.vue:188")},methods:{verifyLogin:function(){if(vuex.state.userInfo.token)return!0;uni.showModal({title:"\u63d0\u793a",content:"\u60a8\u9700\u8981\u767b\u9646\u540e\u624d\u80fd\u8fdb\u884c\u6b64\u64cd\u4f5c",confirmColor:"#F1AC66",success:function(t){t.confirm&&uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}})},districtAdcodeTo6DigitCityAdcode:function(e){var i=String(e).trim();if(!/^\d{6}$/.test(i))return t("warn","\u65e0\u6548\u7684\u533a/\u53bf\u7f16\u7801\uff0c\u5fc5\u987b\u662f6\u4f4d\u6570\u5b57"," at App.vue:223"),null;var s=i.slice(0,4),a=s+"00";return/^\d{6}$/.test(a)?a:(t("warn","\u7f16\u7801\u8f6c\u6362\u5f02\u5e38"," at App.vue:233"),null)},updateAddress:function(e){t("log","item",e," at App.vue:241");var i=e.location.split(",");this.globalData.latitude=i[1],this.globalData.longitude=i[0],this.globalData.address=e.name,this.globalData.servers_region="".concat(e.pname,"-").concat(e.cityname,"-").concat(e.adname),this.globalData.pcode=e.pcode,this.globalData.cCode=this.districtAdcodeTo6DigitCityAdcode(e.adcode),this.globalData.adcode=e.adcode,this.globalData.addressRes.latitude=i[1],this.globalData.addressRes.longitude=i[0],this.globalData.addressRes.address.province=e.pname,this.globalData.addressRes.address.city=e.cityname,this.globalData.addressRes.address.district=e.adname,this.globalData.addressRes.address.street=e.address,this.globalData.addressRes.address.poiName=e.name,this.globalData.addressRes.address.streetNum="",this.globalData.addressRes.address.cityCode="",this.globalData.addressRes.address.pcode=e.pcode,this.globalData.addressRes.address.cCode=this.districtAdcodeTo6DigitCityAdcode(e.adcode),this.globalData.addressRes.address.adcode=e.adcode,this.globalData.addressRes.pcode=e.pcode,this.globalData.addressRes.cCode=this.districtAdcodeTo6DigitCityAdcode(e.adcode),this.globalData.addressRes.adcode=e.adcode,t("log","globalData",this.globalData," at App.vue:266"),uni.setStorageSync("userAdrees",this.globalData)}}};e.default=d}).call(this,i("f3b9")["default"])},9148:function(t,e,i){"use strict";i.r(e);var s=i("8fc9"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"915d":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e1&&void 0!==e[1]?e[1]:"",s.next=3,i._checkAppPermission(t,r);case 3:return s.abrupt("return",s.sent);case 4:case"end":return s.stop()}}),s)})))()},_checkAppPermission:function(e,i){var s=this;return(0,r.default)(a.default.mark((function r(){var c,n;return a.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:if(c={camera:{android:"android.permission.CAMERA",ios:"camera"},location:{android:"android.permission.ACCESS_FINE_LOCATION",ios:"location"},phone:{android:"android.permission.CALL_PHONE",ios:"phone"},photo_library:{android:["android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE"],ios:"photo_library"}},n=c[e],n){a.next=5;break}return t("error","\u4e0d\u652f\u6301\u7684\u6743\u9650\u7c7b\u578b:",e," at utils/per.js:62"),a.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 5:if("Android"!==plus.os.name){a.next=9;break}return a.abrupt("return",s._checkAndroidPermission(n.android));case 9:return a.abrupt("return",s._checkIosPermission(n.ios,i));case 10:return a.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 11:case"end":return a.stop()}}),r)})))()},_checkAndroidPermission:function(e){return(0,r.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.abrupt("return",new Promise((function(i){plus.android.requestPermissions(Array.isArray(e)?e:[e],(function(s){t("log","perm_".concat(e),s," at utils/per.js:85");var a=!plus.storage.getItem("perm_".concat(e));a&&plus.storage.setItem("perm_".concat(e),"1"),0!==s.deniedPresent.length&&plus.storage.setItem("perm_".concat(e,"_no"),"2"),0!==s.granted.length&&plus.storage.removeItem("perm_".concat(e,"_no"),"2"),i({granted:0!==s.granted.length,firstRequest:a,canRequest:!0})}),(function(t){i({granted:!1,firstRequest:!1,canRequest:!0})}))})));case 1:case"end":return i.stop()}}),i)})))()},_checkIosPermission:function(e,i){return(0,r.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:i.prev=0,i.t0=e,i.next="camera"===i.t0?4:"location"===i.t0?6:10;break;case 4:return s=plus.ios.invoke("AVCaptureDevice","authorizationStatusForMediaType:","vide"),i.abrupt("break",11);case 6:return r=plus.ios.newObject("CLLocationManager"),s=plus.ios.invoke(r,"authorizationStatus"),plus.ios.deleteObject(r),i.abrupt("break",11);case 10:return i.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 11:return i.abrupt("return",{granted:3===s,firstRequest:0===s,canRequest:2!==s});case 14:return i.prev=14,i.t1=i["catch"](0),t("error","iOS\u6743\u9650\u68c0\u67e5\u9519\u8bef:",i.t1," at utils/per.js:146"),i.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 18:case"end":return i.stop()}}),i,null,[[0,14]])})))()},_checkMpPermission:function(t){return(0,r.default)(a.default.mark((function e(){var i,s;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(i={camera:"scope.camera",location:"scope.userLocation",record:"scope.record"},s=i[t],s){e.next=4;break}return e.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 4:return e.abrupt("return",new Promise((function(t){uni.getSetting({success:function(e){var i=e.authSetting;t({granted:!0===i[s],firstRequest:void 0===i[s],canRequest:!1!==i[s]})},fail:function(){t({granted:!1,firstRequest:!1,canRequest:!1})}})})));case 5:case"end":return e.stop()}}),e)})))()},requestPermission:function(t){var e=arguments,i=this;return(0,r.default)(a.default.mark((function s(){var r,c,n,o;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return r=e.length>1&&void 0!==e[1]?e[1]:"",s.next=3,i.checkPermission(t,r);case 3:if(c=s.sent,n=c.granted,c.firstRequest,o=c.canRequest,!n){s.next=9;break}return s.abrupt("return",!0);case 9:if(o){s.next=11;break}return s.abrupt("return",!1);case 11:return s.abrupt("return",i._requestAppPermission(t,r));case 12:case"end":return s.stop()}}),s)})))()},_requestAppPermission:function(t,e){return(0,r.default)(a.default.mark((function t(){return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.abrupt("return",!1);case 1:case"end":return t.stop()}}),t)})))()},_requestMpPermission:function(t){return(0,r.default)(a.default.mark((function e(){var i,s;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(i={camera:"scope.camera",location:"scope.userLocation",record:"scope.record"},s=i[t],s){e.next=4;break}return e.abrupt("return",!1);case 4:return e.abrupt("return",new Promise((function(t){uni.authorize({scope:s,success:function(){return t(!0)},fail:function(){return t(!1)}})})));case 5:case"end":return e.stop()}}),e)})))()},openSystemSettings:function(){if("Android"===plus.os.name){var t=plus.android.importClass("android.content.Intent"),e=plus.android.importClass("android.provider.Settings"),i=plus.android.importClass("android.net.Uri"),s=plus.android.runtimeMainActivity(),a=new t;a.setAction(e.ACTION_APPLICATION_DETAILS_SETTINGS);var r=i.fromParts("package",s.getPackageName(),null);a.setData(r),s.startActivity(a)}else{var c=plus.ios.import("UIApplication"),n=plus.ios.import("NSURL"),o=n.URLWithString("app-settings:"),d=c.sharedApplication();plus.ios.invoke(d,"canOpenURL:",o)&&plus.ios.invoke(d,"openURL:",o),plus.ios.deleteObject(o),plus.ios.deleteObject(d)}}};e.default=c}).call(this,i("f3b9")["default"])},9246:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("93a6")),o={components:{AliOssUploader:n.default},data:function(){return{fileList:[],video:"",userId:34,artisanType:1}},methods:{chooseImage:function(){return(0,r.default)(a.default.mark((function e(){var i,s,r;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,uni.chooseFile({count:1,type:"image"});case 3:i=e.sent,t("log",i," at pages/demo/detail.vue:43"),s=i.tempFiles[0],r=i.tempFiles[0].name,c.default.post("/user/getalioss",{type:1,kind:1}).then((function(e){var i=new FormData;i.append("name",r),i.append("policy",e.policy),i.append("OSSAccessKeyId",e.ossAccessKeyId),i.append("success_action_status","200"),i.append("signature",e.signature),i.append("key",e.dir+r),i.append("file",s),fetch(e.host,{method:"POST",body:i}).then((function(e){t("log",e," at pages/demo/detail.vue:58"),alert("\u6587\u4ef6\u5df2\u4e0a\u4f20")}))})).catch((function(e){t("log","Error occurred while getting OSS upload parameters:",e," at pages/demo/detail.vue:63")})),e.next=13;break;case 10:e.prev=10,e.t0=e["catch"](0),t("error","\u9009\u62e9\u6587\u4ef6\u51fa\u9519:",e.t0," at pages/demo/detail.vue:66");case 13:case"end":return e.stop()}}),e,null,[[0,10]])})))()},onUploadSuccess:function(e){var i=e.file;e.fileList;t("log","\u4e0a\u4f20\u6210\u529f:",i," at pages/demo/detail.vue:70")},onUploadError:function(e){var i=e.error;e.file;t("error","\u4e0a\u4f20\u5931\u8d25:",i," at pages/demo/detail.vue:73")},onFileDelete:function(e){var i=e.error;e.file;t("error","\u4e0a\u4f20\u5931\u8d25:",i," at pages/demo/detail.vue:76")}}};e.default=o}).call(this,i("f3b9")["default"])},"926b":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("7ca3")),c=s(i("ee10")),n=s(i("6473")),o=(i("53d1"),s(i("16bb")));function d(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function l(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[s++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,c=!0,n=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return c=t.done,t},e:function(t){n=!0,r=t},f:function(){try{c||null==i.return||i.return()}finally{if(n)throw r}}}}function _(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i2&&(e=i[0]+"."+i.slice(1).join("")),i.length>1&&(e=i[0]+"."+i[1].slice(0,2)),e.startsWith(".")&&(e="0"+e),this.$set(this.formData,"server_price",e)},addDetailItem:function(t){var e={title:t.detailItem,text:"",photo:""},i=this.detailList.find((function(e){return e.id==t.id}));i&&(i.choose=!0),this.formData.detail.push(e),this.isShow=!1},deleteDetailItem:function(t,e){var i=this.detailList.find((function(e){return e.detailItem==t.title}));i&&(i.choose=!1),this.formData.detail.splice(e,1)},deleteStep:function(t){this.formData.process.splice(t,1)},showDetailCont:function(){this.nowDetailList=this.detailList.filter((function(t){return!t.choose})),this.isShow=!0},addStep:function(){var t=this.formData.process.length+1,e={title:"\u7b2c"+t+"\u6b65",text:"",photo:""};this.formData.process.push(e)},deleteVideo:function(){this.formData.video=""},saveDraft:(0,d.debounce)((function(){var t=this;if(!this.isDraft){var e=this.formData,i=e.title,s=e.server_price,a=e.server_time,r=e.first_class_id,n=e.second_class_id,o=e.detail,d=e.process,l=e.video,u=e.photo,f={title:i,server_price:s,server_time:a,first_class_id:r,second_class_id:n,detail:o,process:d,video:l,photo:u},_=Object.values(f).every((function(t){return Array.isArray(t)?0===t.length:!t}));if(_)uni.showToast({title:"\u8bf7\u81f3\u5c11\u586b\u5199\u4e00\u9879\u5185\u5bb9",icon:"none"});else{this.formData.state=0;var p=null;p=this.formData.id?"/user/serverchange":"/user/serveradd",c.default.post(p,this.formData).then((function(e){if(1==e.state){t.isDraft=!0;var i=getCurrentPages(),s=i[i.length-2];uni.showToast({title:e.msg,icon:"success",duration:1e3}),setTimeout((function(){uni.navigateBack({delta:1,success:function(){s.$vm.currentTab=3,s.$vm.state=0,s.$vm.getServicesList()}})}),500)}else uni.showToast({title:e.msg,icon:"none"}),t.isDraft=!1}))}}}),500),submitForm:(0,d.debounce)((function(){var t=this;if(!this.isAdd)if(this.formData.title)if(this.formData.server_price)if(this.formData.first_class_id)if(!this.showCategory||this.formData.second_class_id)if(this.formData.server_time)if(this.formData.server_time<10)uni.showToast({title:"\u670d\u52a1\u65f6\u957f\u6700\u77ed\u4e3a10\u5206\u949f",icon:"none"});else if(this.formData.server_time>240)uni.showToast({title:"\u670d\u52a1\u65f6\u957f\u6700\u957f\u4e3a240\u5206\u949f",icon:"none"});else if(this.formData.sj_see||1!=this.artisanType)if(this.formData.detail&&this.formData.detail.length>0){var e,i=f(this.formData.detail);try{for(i.s();!(e=i.n()).done;){var s=e.value;if(!s.title||!s.text)return void uni.showToast({title:"\u8bf7\u5b8c\u5584\u670d\u52a1\u7b80\u4ecb\u5185\u5bb9",icon:"none"})}}catch(err){i.e(err)}finally{i.f()}if(this.formData.process&&this.formData.process.length>0){var a,r=f(this.formData.process);try{for(r.s();!(a=r.n()).done;){var n=a.value;if(!n.text)return void uni.showToast({title:"\u8bf7\u5b8c\u5584\u670d\u52a1\u6d41\u7a0b\u5185\u5bb9",icon:"none"})}}catch(err){r.e(err)}finally{r.f()}if(this.formData.photo&&0!==this.formData.photo.length){2==this.artisanType&&delete this.formData.sj_see,delete this.formData.state;var o=null;o=this.formData.id?"/user/serverupdate":"/user/serveradd",c.default.post(o,this.formData).then((function(e){if(1==e.state){var i=getCurrentPages(),s=i[i.length-2];uni.showToast({title:e.msg,icon:"success",duration:600,mask:!0}),t.isAdd=!0,setTimeout((function(){uni.navigateBack({delta:1,success:function(){s.$vm.currentTab=1,s.$vm.state=1,s.$vm.getServicesList()}})}),500)}else uni.showToast({title:e.msg,icon:"none"}),t.isAdd=!1}))}else uni.showToast({title:"\u8bf7\u4e0a\u4f20\u670d\u52a1\u56fe\u7247",icon:"none"})}else uni.showToast({title:"\u8bf7\u6dfb\u52a0\u670d\u52a1\u6d41\u7a0b\u5185\u5bb9",icon:"none"})}else uni.showToast({title:"\u8bf7\u6dfb\u52a0\u670d\u52a1\u7b80\u4ecb\u5185\u5bb9",icon:"none"});else uni.showToast({title:"\u8bf7\u9009\u62e9\u662f\u5426\u5141\u8bb8\u5728\u95e8\u5e97\u7aef\u552e\u5356",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u670d\u52a1\u65f6\u957f",icon:"none"});else uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u5b50\u7c7b",icon:"none"});else uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u5206\u7c7b",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u670d\u52a1\u4ef7\u683c",icon:"none"});else uni.showToast({title:"\u8bf7\u8f93\u5165\u670d\u52a1\u540d\u79f0",icon:"none"})}),500),openServiceTypePicker:function(){t("log","open"," at pages/artisan/add-service.vue:771"),this.showServiceTypePicker=!0},openCategoryPicker:function(){this.formData.first_class_id?this.showCategoryPicker=!0:uni.showToast({title:"\u8bf7\u5148\u9009\u62e9\u670d\u52a1\u5206\u7c7b",icon:"none"})},handleServiceTypeConfirm:function(e){var i=this;t("log","e",e," at pages/artisan/add-service.vue:791");var s=e.items[0];this.formData.first_class_id=s.id,this.serviceType=s.title,this.ratio=s.ratio;var a=s.id;c.default.post("/user/secondclass",{id:a}).then((function(t){0!=t.data.length&&t.data?(i.categoryAll=t.data,i.showCategory=!0):i.showCategory=!1}))},handleCategoryConfirm:function(t){var e=t.items[0];this.formData.second_class_id=e.id,this.category=e.title}}};e.default=p}).call(this,i("f3b9")["default"])},"933f":function(t,e,i){"use strict";i.r(e);var s=i("6fa9"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},9365:function(t,e,i){"use strict";i.r(e);var s=i("1a2f"),a=i("2028");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"75d93d00",null,!1,s["a"],void 0);e["default"]=n.exports},9377:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c={name:"uv-safe-bottom",mixins:[a.default,r.default],data:function(){return{safeAreaBottomHeight:0,isNvue:!1}},computed:{style:function(){return this.$uv.deepMerge({},this.$uv.addStyle(this.customStyle))}},mounted:function(){}};e.default=c},"937c":function(t,e,i){"use strict";i.r(e);var s=i("7fc8"),a=i("6e01");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"93a6":function(t,e,i){"use strict";i.r(e);var s=i("c457"),a=i("fc86");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"3b9eca5a",null,!1,s["a"],void 0);e["default"]=n.exports},"93c2":function(t,e,i){"use strict";i.r(e);var s=i("cf02"),a=i("cc26");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"3b9a630a",null,!1,s["a"],void 0);e["default"]=n.exports},9462:function(t,e,i){"use strict";i.r(e);var s=i("bd6a"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},9466:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.children=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.indexKey;return{inject:(0,c.default)({},t,{default:null}),watch:{el:{handler:function(t,e){JSON.stringify(t)!=JSON.stringify(e)&&this.bindRelation()},deep:!0,immediate:!0},src:{handler:function(t,e){t!=e&&this.bindRelation()},immediate:!0},text:{handler:function(t,e){t!=e&&this.bindRelation()},immediate:!0},css:{handler:function(t,e){t!=e&&(this.el.css=("object"==(0,r.default)(t)?t:t&&Object.assign.apply(Object,(0,a.default)(n(t))))||{})},immediate:!0},replace:{handler:function(t,e){JSON.stringify(t)!=JSON.stringify(e)&&this.bindRelation()},deep:!0,immediate:!0}},created:function(){var e=this;this._uid||(this._uid=this._.uid),Object.defineProperty(this,"parent",{get:function(){return e[t]||[]}}),Object.defineProperty(this,"index",{get:function(){e.bindRelation();var t=e.parent;t=void 0===t?{}:t;var i=t.el;i=void 0===i?{}:i;var s=i.views,a=void 0===s?[]:s;return a.indexOf(e.el)}}),this.el.type=this.type,this.uid&&(this.el.uid=this.uid),this.bindRelation()},beforeDestroy:function(){this.removeEl()},methods:{removeEl:function(){var t=this;this.parent&&(this.parent.el.views=this.parent.el.views.filter((function(e){return e._uid!==t._uid})))},bindRelation:function(){var t=this;if(this.el._uid||(this.el._uid=this._uid),["text","qrcode"].includes(this.type)&&(this.el.text=this.$slots&&this.$slots.default&&this.$slots.default[0].text||"".concat(this.text||"").replace(/\\n/g,"\n")),"image"==this.type&&(this.el.src=this.src),this.parent){var e=this.parent.el.views||[];-1!==e.indexOf(this.el)?this.parent.el.views=e.map((function(e){return e._uid==t._uid?t.el:e})):this.parent.el.views=[].concat((0,a.default)(e),[this.el])}}},mounted:function(){}}},e.parent=function(t){return{provide:function(){return(0,c.default)({},t,this)},data:function(){return{el:{id:null,css:{},views:[]}}},watch:{css:{handler:function(t){this.canvasId&&(this.el.css=("object"==(0,r.default)(t)?t:t&&Object.assign.apply(Object,(0,a.default)(n(t))))||{},this.canvasWidth=this.el.css&&this.el.css.width||this.canvasWidth,this.canvasHeight=this.el.css&&this.el.css.height||this.canvasHeight)},immediate:!0}}}};var a=s(i("af34")),r=s(i("3b2d")),c=s(i("7ca3")),n=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return t.split(";").filter((function(t){return t&&!/^[\n\s]+$/.test(t)})).map((function(t){var e=t.slice(0,t.indexOf(":")),i=t.slice(t.indexOf(":")+1);return(0,c.default)({},e.replace(/-([a-z])/g,(function(){return arguments[1].toUpperCase()})).replace(/\s+/g,""),i.replace(/^\s+/,"").replace(/\s+$/,"")||"")}))}},9486:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","qualification-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:t.navTitle,showBack:!0,_i:1}}),t._$s(2,"i",t.editable)?i("view",{staticClass:t._$s(2,"sc","change-tip"),attrs:{_i:2}},[i("text")]):t._e(),i("view",{staticClass:t._$s(4,"sc","content-area"),style:t._$s(4,"s",{paddingBottom:t.buttonAreaHeight+"px"}),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","section"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","section-title"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","title-bar"),attrs:{_i:7}}),i("text",{staticClass:t._$s(8,"sc","title-text"),attrs:{_i:8}})]),i("view",{staticClass:t._$s(9,"sc","box-cont"),attrs:{_i:9}},[i("view",{staticClass:t._$s(10,"sc","form-item"),attrs:{_i:10}},[i("text",{staticClass:t._$s(11,"sc","label required"),attrs:{_i:11}}),i("view",{staticClass:t._$s(12,"sc","upload-tip"),attrs:{_i:12}}),i("view",{staticClass:t._$s(13,"sc","idcard-upload-vertical-container"),attrs:{_i:13}},[i("view",{staticClass:t._$s(14,"sc","idcard-upload-vertical-item"),attrs:{_i:14}},[i("view",{staticClass:t._$s(15,"sc","upload-box"),attrs:{_i:15},on:{click:function(e){t.editable&&t.chooseImage("uscc_photo")}}},[i("view",{staticClass:t._$s(16,"sc","upload-camera idcard-front"),attrs:{_i:16}},[t._$s(17,"i",t.displayData.uscc_photo)?i("image",{staticClass:t._$s(17,"sc","preview-image"),attrs:{src:t._$s(17,"a-src",t.displayData.uscc_photo),_i:17}}):i("image",{staticClass:t._$s(18,"sc","camera-icon"),attrs:{_i:18}})])]),i("text",{staticClass:t._$s(19,"sc","upload-label required"),attrs:{_i:19}})]),i("view",{staticClass:t._$s(20,"sc","idcard-upload-vertical-item"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","upload-box"),attrs:{_i:21},on:{click:function(e){t.editable&&t.chooseImage("shop_photo")}}},[i("view",{staticClass:t._$s(22,"sc","upload-camera idcard-front"),attrs:{_i:22}},[t._$s(23,"i",t.displayData.shop_photo)?i("image",{staticClass:t._$s(23,"sc","preview-image"),attrs:{src:t._$s(23,"a-src",t.displayData.shop_photo),_i:23}}):i("image",{staticClass:t._$s(24,"sc","camera-icon"),attrs:{_i:24}})])]),i("text",{staticClass:t._$s(25,"sc","upload-label required"),attrs:{_i:25}})])])])]),i("view",{staticClass:t._$s(26,"sc","form-item-one box-cont"),attrs:{_i:26}},[i("view",{staticClass:t._$s(27,"sc","label-wrapper"),attrs:{_i:27}},[i("text",{staticClass:t._$s(28,"sc","label required"),attrs:{_i:28}})]),i("input",{directives:[{name:"model",rawName:"v-model",value:t.displayData.uscc_type,expression:"displayData.uscc_type"}],staticClass:t._$s(29,"sc","input"),attrs:{disabled:t._$s(29,"a-disabled",!t.editable),_i:29},domProps:{value:t._$s(29,"v-model",t.displayData.uscc_type)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"uscc_type",e.target.value)}}})])]),i("view",{staticClass:t._$s(30,"sc","section"),attrs:{_i:30}},[i("view",{staticClass:t._$s(31,"sc","form-item-one box-cont"),attrs:{_i:31}},[i("view",{staticClass:t._$s(32,"sc","label-wrapper"),attrs:{_i:32}},[i("text",{staticClass:t._$s(33,"sc","label required"),attrs:{_i:33}}),i("image",{staticClass:t._$s(34,"sc","label-icon"),attrs:{_i:34},on:{click:function(e){return t.showTipPopup("uscc_num")}}})]),i("input",{directives:[{name:"model",rawName:"v-model",value:t.displayData.uscc_num,expression:"displayData.uscc_num"}],staticClass:t._$s(35,"sc","input"),attrs:{disabled:t._$s(35,"a-disabled",!t.editable),_i:35},domProps:{value:t._$s(35,"v-model",t.displayData.uscc_num)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"uscc_num",e.target.value)}}})]),i("view",{staticClass:t._$s(36,"sc","form-item-one box-cont"),attrs:{_i:36}},[i("view",{staticClass:t._$s(37,"sc","label-wrapper"),attrs:{_i:37}},[i("text",{staticClass:t._$s(38,"sc","label required"),attrs:{_i:38}}),i("image",{staticClass:t._$s(39,"sc","label-icon"),attrs:{_i:39},on:{click:function(e){return t.showTipPopup("uscc_name")}}})]),i("input",{directives:[{name:"model",rawName:"v-model",value:t.displayData.uscc_name,expression:"displayData.uscc_name"}],staticClass:t._$s(40,"sc","input"),attrs:{disabled:t._$s(40,"a-disabled",!t.editable),_i:40},domProps:{value:t._$s(40,"v-model",t.displayData.uscc_name)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"uscc_name",e.target.value)}}})]),i("view",{staticClass:t._$s(41,"sc","form-item-one box-cont"),attrs:{_i:41}},[i("view",{staticClass:t._$s(42,"sc","label-wrapper"),attrs:{_i:42}},[i("text",{staticClass:t._$s(43,"sc","label required"),attrs:{_i:43}}),i("image",{staticClass:t._$s(44,"sc","label-icon"),attrs:{_i:44},on:{click:function(e){return t.showTipPopup("for_shop")}}})]),i("input",{directives:[{name:"model",rawName:"v-model",value:t.displayData.for_shop,expression:"displayData.for_shop"}],staticClass:t._$s(45,"sc","input"),attrs:{disabled:t._$s(45,"a-disabled",!t.editable),_i:45},domProps:{value:t._$s(45,"v-model",t.displayData.for_shop)},on:{input:function(e){e.target.composing||t.$set(t.displayData,"for_shop",e.target.value)}}})])]),i("view",{staticClass:t._$s(46,"sc","safe-bottom"),attrs:{_i:46}})]),i("view",{ref:"buttonArea",staticClass:t._$s(47,"sc","bottom-actions"),attrs:{_i:47}},[t._$s(48,"i",t.shouldShowRejectReason)?i("view",{staticClass:t._$s(48,"sc","reject-reason"),attrs:{_i:48}},[i("view",{staticClass:t._$s(49,"sc","reject-title"),attrs:{_i:49}}),i("view",{staticClass:t._$s(50,"sc","reject-detail"),attrs:{_i:50}},[t._v(t._$s(50,"t0-0",t._s(t.backText)))])]):t._e(),t._$s(51,"i",t.showAuditTip)?i("view",{staticClass:t._$s(51,"sc","audit-tip"),attrs:{_i:51}},[i("text",{staticClass:t._$s(52,"sc","audit-text"),attrs:{_i:52}})]):t._e(),t._$s(53,"i","change"===t.buttonType)?i("view",{staticClass:t._$s(53,"sc","action-btn change-info-btn"),attrs:{_i:53},on:{click:t.startChange}},[i("text",{staticClass:t._$s(54,"sc","btn-text"),attrs:{_i:54}})]):t._e(),t._$s(55,"i","edit"===t.buttonType)?i("view",{staticClass:t._$s(55,"sc","action-buttons-row"),attrs:{_i:55}},[i("view",{staticClass:t._$s(56,"sc","action-btn cancel-btn"),attrs:{_i:56},on:{click:t.cancelChange}},[i("text",{staticClass:t._$s(57,"sc","btn-text cancel-text"),attrs:{_i:57}})]),i("view",{staticClass:t._$s(58,"sc","action-btn submit-btn"),attrs:{_i:58},on:{click:t.submitChange}},[i("text",{staticClass:t._$s(59,"sc","btn-text"),attrs:{_i:59}})])]):t._e(),t._$s(60,"i","view"===t.buttonType)?i("view",{staticClass:t._$s(60,"sc","action-btn view-change-btn"),attrs:{_i:60},on:{click:t.togglePendingData}},[i("text",{staticClass:t._$s(61,"sc","btn-text"),attrs:{_i:61}},[t._v(t._$s(61,"t0-0",t._s(t.showPendingData?"\u8fd4\u56de":"\u67e5\u770b\u6211\u7684\u53d8\u66f4")))])]):t._e(),t._$s(62,"i","reject"===t.buttonType)?i("view",{staticClass:t._$s(62,"sc","action-btn resubmit-btn"),attrs:{_i:62},on:{click:t.startChange}},[i("text",{staticClass:t._$s(63,"sc","btn-text"),attrs:{_i:63}})]):t._e()]),i("view",{staticClass:t._$s(64,"sc","popup"),class:t._$s(64,"c",{show:t.showDatePickerFlag}),attrs:{_i:64}},[i("view",{staticClass:t._$s(65,"sc","popup-mask"),attrs:{_i:65},on:{click:t.hideDatePicker}}),i("view",{staticClass:t._$s(66,"sc","popup-content"),attrs:{_i:66}},[i("view",{staticClass:t._$s(67,"sc","popup-header"),attrs:{_i:67}},[i("text",{staticClass:t._$s(68,"sc","cancel-text"),attrs:{_i:68},on:{click:t.hideDatePicker}}),i("text",{staticClass:t._$s(69,"sc","title"),attrs:{_i:69}}),i("text",{staticClass:t._$s(70,"sc","confirm-text"),attrs:{_i:70},on:{click:t.confirmDate}})]),i("view",{staticClass:t._$s(71,"sc","region-body"),attrs:{_i:71}},[i("picker-view",{staticClass:t._$s(72,"sc","picker-scroll"),attrs:{value:t._$s(72,"a-value",t.dateValue),"indicator-style":t._$s(72,"a-indicator-style",t.indicatorStyle),_i:72},on:{change:t.bindDateChange}},[i("picker-view-column",t._l(t._$s(74,"f",{forItems:t.years}),(function(e,s,a,r){return i("view",{key:t._$s(74,"f",{forIndex:a,key:s}),staticClass:t._$s("74-"+r,"sc","picker-item"),attrs:{_i:"74-"+r}},[t._v(t._$s("74-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",t._l(t._$s(76,"f",{forItems:t.months}),(function(e,s,a,r){return i("view",{key:t._$s(76,"f",{forIndex:a,key:s}),staticClass:t._$s("76-"+r,"sc","picker-item"),attrs:{_i:"76-"+r}},[t._v(t._$s("76-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",t._l(t._$s(78,"f",{forItems:t.days}),(function(e,s,a,r){return i("view",{key:t._$s(78,"f",{forIndex:a,key:s}),staticClass:t._$s("78-"+r,"sc","picker-item"),attrs:{_i:"78-"+r}},[t._v(t._$s("78-"+r,"t0-0",t._s(e)))])})),0)])])])]),i("view",{staticClass:t._$s(79,"sc","tip-popup"),class:t._$s(79,"c",{show:t.showTipPopupFlag}),attrs:{_i:79}},[i("view",{staticClass:t._$s(80,"sc","tip-popup-mask"),attrs:{_i:80},on:{click:t.hideTipPopup}}),i("view",{staticClass:t._$s(81,"sc","tip-popup-content"),attrs:{_i:81}},[i("image",{staticClass:t._$s(82,"sc","tip-popup-bg"),attrs:{_i:82}}),i("view",{staticClass:t._$s(83,"sc","tip-popup-body"),attrs:{_i:83}},[i("view",{staticClass:t._$s(84,"sc","tip-title"),attrs:{_i:84}},[t._v(t._$s(84,"t0-0",t._s(t.tipTitle)))]),i("view",{staticClass:t._$s(85,"sc","tip-image-container"),attrs:{_i:85}},[i("image",{staticClass:t._$s(86,"sc","tip-image"),class:t._$s(86,"c",t.currentTipField),attrs:{src:t._$s(86,"a-src",t.tipImage),_i:86}})]),i("view",{staticClass:t._$s(87,"sc","tip-buttons"),attrs:{_i:87}},[i("view",{staticClass:t._$s(88,"sc","tip-btn cancel"),attrs:{_i:88},on:{click:t.hideTipPopup}},[i("text",{staticClass:t._$s(89,"sc","btn-text"),attrs:{_i:89}})]),i("view",{staticClass:t._$s(90,"sc","tip-btn confirm"),attrs:{_i:90},on:{click:t.hideTipPopup}},[i("text",{staticClass:t._$s(91,"sc","btn-text"),attrs:{_i:91}})])])])])])],1)},r=[]},9487:function(t,e,i){"use strict";i.r(e);var s=i("3a16"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},9499:function(t,e,i){"use strict";i.r(e);var s=i("34f3"),a=i("933f");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"2310d554",null,!1,s["a"],void 0);e["default"]=n.exports},"949a":function(t,e,i){"use strict";i.r(e);var s=i("4288"),a=i("64b7");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},"94a4":function(t,e,i){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i={data:function(){return{distanceList:[],targetId:"",selectTabId:null,start_price:null,end_price:null,filterDetailsLists:[{id:1,title:"\u8425\u4e1a\u65f6\u95f4",details:[{id:1,name:"24\u5c0f\u65f6\u8425\u4e1a"},{id:2,name:"9-12\u65f6"},{id:3,name:"12-14\u65f6"},{id:4,name:"14-18\u65f6"},{id:5,name:"18-24\u65f6"},{id:6,name:"0-9\u65f6"}]},{id:2,title:"\u4ef7\u683c",details:[{id:1,name:"0-10\u5143"},{id:2,name:"10-30\u5143"},{id:3,name:"30-50\u5143"},{id:4,name:"50-100\u5143"},{id:5,name:"100-300\u5143"},{id:6,name:"300+"}]},{id:3,title:"\u6392\u5e8f",details:[{id:1,name:"\u4ef7\u683c\u6700\u4f4e"},{id:2,name:"\u4ef7\u683c\u6700\u9ad8"},{id:3,name:"\u9500\u91cf\u6700\u9ad8"},{id:4,name:"\u8bc4\u5206\u6700\u9ad8"}]}]}},props:{filterListSelectLists:{type:Array,default:function(){return[]}},filterList:{type:Array,default:function(){return[{id:1,title:"\u8425\u4e1a\u65f6\u95f4"},{id:2,title:"\u4ef7\u683c"},{id:3,title:"\u6392\u5e8f"}]}}},watch:{},mounted:function(){},methods:{handleTap:function(t){this.targetId="filter_".concat(t),this.selectTabId=t},getDistanceToTop:function(){var e=this,i=uni.createSelectorQuery().in(this);i.selectAll(".filter-popup__content__right__items").boundingClientRect((function(i){i.forEach((function(t){e.distanceList.push(t.top)})),t("log","that.distanceList",e.distanceList," at components/filter-popup/filter-popup.vue:145")})).exec()},open:function(){this.$refs.popup.open("bottom")},change:function(t){this.$emit("change",t)},reset:function(){this.$emit("reset")},sure:function(){this.$emit("sure"),this.$refs.popup.close()},close:function(){this.$refs.popup.close()}}};e.default=i}).call(this,i("f3b9")["default"])},"94b3":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u95e8\u5e97\u8be6\u60c5",showBack:!0,backgroundColor:"#fff",_i:1}}),i("view",{staticClass:t._$s(2,"sc","isCode"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","isCode-title"),attrs:{_i:3}}),i("view",{staticClass:t._$s(4,"sc","isCode-cards"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","isCode-card card-border"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","card-title"),attrs:{_i:6}},[i("text",{staticClass:t._$s(7,"sc","card-business"),attrs:{_i:7}},[t._v(t._$s(7,"t0-0",t._s(t.sjdetail.business_time)))])])]),i("view",{staticClass:t._$s(8,"sc","isCode-card card-border"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","card-title"),attrs:{_i:9}}),i("view",{staticClass:t._$s(10,"sc","detail-info-user__tabs"),attrs:{_i:10}},t._l(t._$s(11,"f",{forItems:t.tabsPopList}),(function(e,s,a,r){return i("view",{key:t._$s(11,"f",{forIndex:a,key:s}),staticClass:t._$s("11-"+r,"sc","detail-info-user__tabs__tab"),attrs:{_i:"11-"+r}},[t._v(t._$s("11-"+r,"t0-0",t._s(e.name)))])})),0)]),i("view",{staticClass:t._$s(12,"sc","isCode-card card-border"),attrs:{_i:12}},[i("view",{staticClass:t._$s(13,"sc","card-title"),attrs:{_i:13}}),i("view",{staticClass:t._$s(14,"sc","card-info"),attrs:{_i:14}},[i("view",{staticClass:t._$s(15,"sc","card-info-left"),attrs:{_i:15}},[t._v(t._$s(15,"t0-0",t._s(t.sjdetail.address)))]),i("image",{staticClass:t._$s(16,"sc","card-info-right"),attrs:{_i:16},on:{click:t.openMap}})])]),i("view",{staticClass:t._$s(17,"sc","isCode-card"),attrs:{_i:17}},[i("view",{staticClass:t._$s(18,"sc","card-title"),attrs:{_i:18}}),i("view",{staticClass:t._$s(19,"sc","card-info"),attrs:{_i:19}},[i("view",{staticClass:t._$s(20,"sc","card-info-left"),attrs:{_i:20}},[t._v(t._$s(20,"t0-0",t._s(t.sjdetail.legal_phone)))]),i("image",{staticClass:t._$s(21,"sc","card-info-right"),attrs:{_i:21},on:{click:function(e){return t.contactService(t.sjdetail.legal_phone)}}})])])]),i("view",{staticClass:t._$s(22,"sc","isCode-title"),attrs:{_i:22}}),i("view",{staticClass:t._$s(23,"sc","isCode-cards"),attrs:{_i:23}},[i("image",{staticClass:t._$s(24,"sc","isCode-cards-license"),attrs:{src:t._$s(24,"a-src",t.sjdetail.uscc_photo),_i:24}}),i("wmWatermark",{attrs:{text:"\u7f8e\u878d\u878d\u4e13\u7528",_i:25}})],1)])],1)},r=[]},"94db":function(t,e,i){"use strict";i.r(e);var s=i("a3af"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},9505:function(t,e,i){"use strict";i.r(e);var s=i("d2f4"),a=i("d60f");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"42822b3b",null,!1,s["a"],void 0);e["default"]=n.exports},"951c":function(t,e){t.exports=Vue},9542:function(t,e,i){"use strict";i.r(e);var s=i("23d8"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"956b":function(t,e,i){"use strict";i.r(e);var s=i("7292"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"957d":function(t,e,i){"use strict";i.r(e);var s=i("a260"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"95c0":function(t,e,i){"use strict";i.r(e);var s=i("d64a"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"95de":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","profile-page"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","custom-navbar"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","navbar-left"),attrs:{_i:2}},[i("image",{staticClass:t._$s(3,"sc","back-icon"),attrs:{_i:3},on:{click:t.handleBack}}),i("text",{staticClass:t._$s(4,"sc","navbar-title"),attrs:{_i:4}})]),i("view",{staticClass:t._$s(5,"sc","navbar-right"),attrs:{_i:5}})]),i("view",{staticClass:t._$s(6,"sc","content"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","section-card"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","section-header"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","title-bar"),attrs:{_i:9}}),i("text",{staticClass:t._$s(10,"sc","section-title"),attrs:{_i:10}})]),i("text",{staticClass:t._$s(11,"sc","section-desc"),attrs:{_i:11}}),i("view",{staticClass:t._$s(12,"sc","subsection"),attrs:{_i:12}},[i("view",{staticClass:t._$s(13,"sc","subsection-content"),attrs:{_i:13}},[i("view",{staticClass:t._$s(14,"sc","info-item"),attrs:{_i:14},on:{click:t.navigateToTimeSetting}},[i("view",{staticClass:t._$s(15,"sc","info-left"),attrs:{_i:15}},[i("image",{staticClass:t._$s(16,"sc","item-icon"),attrs:{_i:16}}),i("text",{staticClass:t._$s(17,"sc","item-label"),attrs:{_i:17}},[t._v(t._$s(17,"t0-0",t._s("2"==t.identity?"\u8425\u4e1a\u65f6\u95f4":"\u670d\u52a1\u65f6\u95f4")))])]),i("image",{staticClass:t._$s(18,"sc","arrow-right"),attrs:{_i:18}})]),i("view",{staticClass:t._$s(19,"sc","info-item"),attrs:{_i:19},on:{click:t.navigateToServiceSkill}},[i("view",{staticClass:t._$s(20,"sc","info-left"),attrs:{_i:20}},[i("image",{staticClass:t._$s(21,"sc","item-icon"),attrs:{_i:21}}),i("text",{staticClass:t._$s(22,"sc","item-label"),attrs:{_i:22}})]),i("image",{staticClass:t._$s(23,"sc","arrow-right"),attrs:{_i:23}})]),t._$s(24,"i","2"==t.identity)?i("view",{staticClass:t._$s(24,"sc","info-item"),attrs:{_i:24},on:{click:t.navigateToShopInfo}},[i("view",{staticClass:t._$s(25,"sc","info-left"),attrs:{_i:25}},[i("image",{staticClass:t._$s(26,"sc","item-icon"),attrs:{_i:26}}),i("text",{staticClass:t._$s(27,"sc","item-label"),attrs:{_i:27}})]),i("image",{staticClass:t._$s(28,"sc","arrow-right"),attrs:{_i:28}})]):t._e(),t._$s(29,"i","1"==t.identity)?i("view",{staticClass:t._$s(29,"sc","info-item"),attrs:{_i:29},on:{click:t.navigateToServiceArea}},[i("view",{staticClass:t._$s(30,"sc","info-left"),attrs:{_i:30}},[i("image",{staticClass:t._$s(31,"sc","item-icon"),attrs:{_i:31}}),i("text",{staticClass:t._$s(32,"sc","item-label"),attrs:{_i:32}})]),i("image",{staticClass:t._$s(33,"sc","arrow-right"),attrs:{_i:33}})]):t._e(),t._$s(34,"i","1"==t.identity)?i("view",{staticClass:t._$s(34,"sc","info-item"),attrs:{_i:34},on:{click:t.navigateToPersonalInfo}},[i("view",{staticClass:t._$s(35,"sc","info-left"),attrs:{_i:35}},[i("image",{staticClass:t._$s(36,"sc","item-icon"),attrs:{_i:36}}),i("text",{staticClass:t._$s(37,"sc","item-label"),attrs:{_i:37}})]),i("image",{staticClass:t._$s(38,"sc","arrow-right"),attrs:{_i:38}})]):t._e()])])]),i("view",{staticClass:t._$s(39,"sc","section-card"),attrs:{_i:39}},[i("view",{staticClass:t._$s(40,"sc","section-header"),attrs:{_i:40}},[i("view",{staticClass:t._$s(41,"sc","title-bar"),attrs:{_i:41}}),i("text",{staticClass:t._$s(42,"sc","section-title"),attrs:{_i:42}})]),i("view",{staticClass:t._$s(43,"sc","subsection-content"),attrs:{_i:43}},[i("view",{staticClass:t._$s(44,"sc","info-item"),attrs:{_i:44},on:{click:t.navigateToQualification}},[i("view",{staticClass:t._$s(45,"sc","info-left"),attrs:{_i:45}},[i("image",{staticClass:t._$s(46,"sc","item-icon"),attrs:{_i:46}}),i("text",{staticClass:t._$s(47,"sc","item-label"),attrs:{_i:47}})]),i("image",{staticClass:t._$s(48,"sc","arrow-right"),attrs:{_i:48}})]),t._$s(49,"i","1"==t.identity)?i("view",{staticClass:t._$s(49,"sc","info-item"),attrs:{_i:49},on:{click:t.navigateToBelongShop}},[i("view",{staticClass:t._$s(50,"sc","info-left"),attrs:{_i:50}},[i("image",{staticClass:t._$s(51,"sc","item-icon"),attrs:{_i:51}}),i("text",{staticClass:t._$s(52,"sc","item-label"),attrs:{_i:52}})]),i("image",{staticClass:t._$s(53,"sc","arrow-right"),attrs:{_i:53}})]):t._e()])])])])},a=[]},"95ec":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=(i("c3e2"),s(i("16bb"))),n={data:function(){return{identity:"",currentUserId:"",userInfo:{},sharing:!1}},onLoad:function(){this.loadIdentity(),t("log","\u5f53\u524d\u8eab\u4efd:",this.identity," at pages/artisan/profile.vue:149"),this.loadUserInfo()},onShow:function(){this.loadIdentity(),this.loadUserInfo()},methods:{handleBack:function(){uni.navigateBack()},handleShareWechat:function(){t("log","\u5206\u4eab\u5230\u5fae\u4fe1"," at pages/artisan/profile.vue:166"),this.handleShareProcess()},handleShareProcess:function(){var e=this;return(0,r.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(!e.sharing){i.next=2;break}return i.abrupt("return");case 2:if(e.sharing=!0,i.prev=3,uni.showLoading({title:"\u6b63\u5728\u51c6\u5907\u5206\u4eab...",mask:!0}),e.currentUserId){i.next=8;break}return i.next=8,e.loadUserInfo();case 8:if(e.currentUserId){i.next=11;break}return uni.showToast({title:"\u65e0\u6cd5\u83b7\u53d6\u7528\u6237\u4fe1\u606f",icon:"none"}),i.abrupt("return");case 11:e.handleAppAutoShare(),i.next=20;break;case 14:i.prev=14,i.t0=i["catch"](3),t("error","\u5206\u4eab\u8fc7\u7a0b\u51fa\u9519:",i.t0," at pages/artisan/profile.vue:214"),uni.hideLoading(),e.sharing=!1,uni.showToast({title:"\u5206\u4eab\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5",icon:"none"});case 20:case"end":return i.stop()}}),i,null,[[3,14]])})))()},handleH5Share:function(){window.location.href;uni.showModal({title:"\u5206\u4eab\u63d0\u793a",content:"\u8bf7\u5728\u7f8e\u878d\u878dPlus APP \u73af\u5883\u4e0b\u4f7f\u7528\u6b64\u529f\u80fd",showCancel:!1,confirmText:"\u597d\u7684",success:function(t){t.confirm}})},handleMpAutoShare:function(){var t="2"==this.identity?"/pages/user/store-detail?id=".concat(this.currentUserId):"/pages/user/syr-detail?id=".concat(this.currentUserId);uni.navigateTo({url:t,success:function(){setTimeout((function(){uni.showToast({title:"\u8bf7\u70b9\u51fb\u53f3\u4e0a\u89d2\u5206\u4eab",icon:"none",duration:2e3})}),500)}})},handleAppAutoShare:function(){var e=this;if(this.currentUserId){uni.removeStorage({key:"share_success"});var i="2"==this.identity?"/pages/user/store-detail?id=".concat(this.currentUserId,"&autoShare=1"):"/pages/user/syr-detail?id=".concat(this.currentUserId,"&autoShare=1");uni.navigateTo({url:i,success:function(){t("log","\u8df3\u8f6c\u6210\u529f\uff0c\u5c06\u81ea\u52a8\u89e6\u53d1\u5206\u4eab"," at pages/artisan/profile.vue:296"),setTimeout((function(){uni.hideLoading(),e.sharing=!1}),200)},fail:function(){t("log","\u8df3\u8f6c\u5931\u8d25:",err," at pages/artisan/profile.vue:304"),uni.hideLoading(),e.sharing=!1,e.showManualShareOption()}})}else uni.showToast({title:"\u65e0\u6cd5\u83b7\u53d6\u7528\u6237\u4fe1\u606f",icon:"none"})},executeAppShare:function(e){var i=this,s="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40",a="2"==this.identity?"\u597d\u53cb\u521a\u63a8\u4e86\u4e2a\u8d85\u8d5e\u5546\u5bb6\uff01\u70b9\u5f00\u8ba4\u8bc6TA ~":"\u597d\u53cb\u521a\u63a8\u4e86\u4e2a\u8d85\u8d5e\u624b\u827a\u4eba\uff01\u70b9\u5f00\u8ba4\u8bc6TA ~",r={provider:"weixin",scene:"WXSceneSession",type:5,title:a,miniProgram:{id:"gh_89c92e18b70b",path:this.getSharePath(),type:0,webUrl:"https://www.baidu.com/"},imageUrl:e,success:function(e){t("log","\u5206\u4eab\u6210\u529f:",JSON.stringify(e)," at pages/artisan/profile.vue:336"),uni.showToast({title:"\u5206\u4eab\u6210\u529f",icon:"success"})},fail:function(a){t("log","\u5206\u4eab\u5931\u8d25:",JSON.stringify(a)," at pages/artisan/profile.vue:343"),e!==s?(t("log","\u5c1d\u8bd5\u4f7f\u7528\u5907\u7528\u56fe\u7247\u5206\u4eab..."," at pages/artisan/profile.vue:346"),i.executeAppShare(s)):uni.showToast({title:"\u5206\u4eab\u5931\u8d25",icon:"none"})}};uni.share?uni.share(r):uni.showToast({title:"\u5f53\u524d\u73af\u5883\u4e0d\u652f\u6301\u5206\u4eab",icon:"none"})},getSharePath:function(){return"2"==this.identity?"/pages/user/store-detail?id=".concat(this.currentUserId||""):"/pages/user/syr-detail?id=".concat(this.currentUserId||"")},handleViewShop:function(){var e=this;return(0,r.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(t("log","\u67e5\u770b\u5e97\u94fa"," at pages/artisan/profile.vue:382"),e.currentUserId){i.next=4;break}return i.next=4,e.loadUserInfo();case 4:if(e.currentUserId){i.next=7;break}return uni.showModal({title:"\u63d0\u793a",content:"\u65e0\u6cd5\u83b7\u53d6\u7528\u6237\u4fe1\u606f\uff0c\u8bf7\u8054\u7cfb\u5ba2\u670d\u6216\u7a0d\u540e\u91cd\u8bd5",showCancel:!1,confirmText:"\u786e\u5b9a"}),i.abrupt("return");case 7:"2"==e.identity?uni.navigateTo({url:"/pages/user/store-detail?id="+e.currentUserId}):uni.navigateTo({url:"/pages/user/syr-detail?id="+e.currentUserId});case 8:case"end":return i.stop()}}),i)})))()},loadUserInfo:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,s=1,"1"==e.identity?s=2:"2"==e.identity&&(s=3),t("log","\u8c03\u7528\u63a5\u53e3\u83b7\u53d6\u7528\u6237\u4fe1\u606f\uff0ctype:",s," at pages/artisan/profile.vue:425"),i.next=6,c.default.post("/user/getuser",{type:s});case 6:r=i.sent,r.data&&r.data.id?(e.userInfo=r.data,e.currentUserId=r.data.id,uni.setStorageSync("userInfo",r.data),t("log","\u4ece\u63a5\u53e3\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u6210\u529f:",e.userInfo," at pages/artisan/profile.vue:436")):t("log","\u63a5\u53e3\u8fd4\u56de\u6570\u636e\u5f02\u5e38:",r," at pages/artisan/profile.vue:438"),i.next=14;break;case 10:i.prev=10,i.t0=i["catch"](0),t("log","\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u5931\u8d25:",i.t0," at pages/artisan/profile.vue:441"),e.tryAlternativeUserInfo();case 14:case"end":return i.stop()}}),i,null,[[0,10]])})))()},tryAlternativeUserInfo:function(){try{var e=getApp();if(e.globalData.userInfo&&e.globalData.userInfo.id)return this.currentUserId=e.globalData.userInfo.id,this.userInfo=e.globalData.userInfo,void t("log","\u4ece\u5168\u5c40\u6570\u636e\u83b7\u53d6\u7528\u6237ID:",this.currentUserId," at pages/artisan/profile.vue:457");var i=uni.getStorageSync("userInfo");if(i&&i.id)return this.currentUserId=i.id,this.userInfo=i,void t("log","\u4ece\u5b58\u50a8\u83b7\u53d6\u7528\u6237ID:",this.currentUserId," at pages/artisan/profile.vue:466");var s=uni.getStorageSync("userId");if(s)return this.currentUserId=s,void t("log","\u4ece\u5b58\u50a8\u83b7\u53d6\u7528\u6237ID:",s," at pages/artisan/profile.vue:474");t("log","\u6240\u6709\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u7684\u65b9\u6cd5\u90fd\u5931\u8d25\u4e86"," at pages/artisan/profile.vue:478")}catch(a){t("log","\u5907\u7528\u65b9\u6848\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u5931\u8d25:",a," at pages/artisan/profile.vue:480")}},loadIdentity:function(){var e=getApp(),i=e.globalData.artisanType;if(t("log","\u4ece\u5168\u5c40\u6570\u636e\u83b7\u53d6\u8eab\u4efd:",i," at pages/artisan/profile.vue:488"),i)this.identity=i,uni.setStorageSync("user_identity",i);else{var s=uni.getStorageSync("user_identity");s?(this.identity=s,t("log","\u4ece\u672c\u5730\u5b58\u50a8\u83b7\u53d6\u8eab\u4efd:",s," at pages/artisan/profile.vue:498")):(t("log","\u672a\u83b7\u53d6\u5230\u8eab\u4efd\u4fe1\u606f"," at pages/artisan/profile.vue:500"),this.identity="1")}t("log","\u5f53\u524d\u8eab\u4efd:",this.identity," at pages/artisan/profile.vue:506")},navigateToTimeSetting:function(){"2"==this.identity?uni.navigateTo({url:"/pages/shop/business-time"}):uni.navigateTo({url:"/pages/artisan/service-time"})},navigateToServiceSkill:function(){"2"==this.identity?uni.navigateTo({url:"/pages/shop/service-skills"}):uni.navigateTo({url:"/pages/artisan/service-skills"})},navigateToShopInfo:function(){uni.navigateTo({url:"/pages/shop/sj-info-change"})},navigateToServiceArea:function(){uni.navigateTo({url:"/pages/artisan/service-area"})},navigateToPersonalInfo:function(){uni.navigateTo({url:"/pages/artisan/syr-info-change"})},navigateToimg:function(){uni.navigateTo({url:"/pages/shop/photoAlbum/photoManage?type=1"})},navigateTovideo:function(){uni.navigateTo({url:"/pages/shop/photoAlbum/photoManage?type=2"})},navigateToQualification:function(){"2"==this.identity?uni.navigateTo({url:"/pages/shop/qualification_sj_change"}):uni.navigateTo({url:"/pages/artisan/qualification_syr_change"})},navigateToBelongShop:function(){uni.navigateTo({url:"/pages/artisan/belong_shop"})}}};e.default=n}).call(this,i("f3b9")["default"])},"965f":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",[i("view",{staticClass:t._$s(1,"sc","custom-navbar"),style:t._$s(1,"s",{paddingTop:t.statusBarHeight+"rpx",background:t.backgroundColor}),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","navbar-content"),style:t._$s(2,"s",{"border-bottom":t.borderBottom}),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","left-area"),attrs:{_i:3}},[t._$s(4,"i",t.showBack)?i("view",{staticClass:t._$s(4,"sc","back-btn"),attrs:{_i:4},on:{click:t.goBack}},[i("image",{staticClass:t._$s(5,"sc","back-icon"),attrs:{src:t._$s(5,"a-src",t.leftImg),_i:5}})]):t._e(),t._t("left",null,{_i:6})],2),i("text",{staticClass:t._$s(7,"sc","title"),style:t._$s(7,"s","color:"+t.titleColor+";"),attrs:{_i:7}},[t._v(t._$s(7,"t0-0",t._s(t.title)))]),i("view",{staticClass:t._$s(8,"sc","right-area"),attrs:{_i:8}},[t._t("right",[t._$s(10,"i",t.showHeadle)?i("image",{staticClass:t._$s(10,"sc","iconfont icon-headle"),attrs:{src:t._$s(10,"a-src",t.headleSrc),_i:10},on:{click:t.onHeadleClick}}):t._e()],{_i:9})],2)])]),i("view",{staticClass:t._$s(11,"sc","header-top"),style:t._$s(11,"s",{height:t.statusBarHeight+88+"rpx"}),attrs:{_i:11}})])},a=[]},"968d":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("ec2d")),o=s(i("f8df")),d={components:{searchBox:n.default,CommonList:o.default},data:function(){return{syrList:[],isSubmit:!1,queryData:{state:2,str_val:""},userInfo:{},statusBarHeight:0,tabs:[{id:2,name:"\u672a\u5206\u914d"},{id:1,name:"\u5df2\u5206\u914d"}]}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return t.server_id&&(e.queryData.server_id=Number(t.server_id)),3,i.next=4,c.default.post("/user/getuser",{type:3});case 4:s=i.sent,e.userInfo=s.data,e.queryData.sjid=e.userInfo.id,e.statusBarHeight=e.getRpxStatusBarHeight(),e.$nextTick((function(){e.search()}));case 9:case"end":return i.stop()}}),i)})))()},computed:{selectedIds:function(){return this.syrList.filter((function(t){return t.isSelect})).map((function(t){return t.syr_id}))}},methods:{goDetail:function(t){uni.navigateTo({url:"/pages/shop/staff/staffDetail?syrid=".concat(t.syr_id)})},loadSuccess:function(t){this.syrList=t.list},search:function(){this.$refs.groupRef.manualRefresh(this.queryData)},switchTab:function(t){var e=this;this.queryData.state=t,this.$nextTick((function(){e.search()}))},changeType:function(t){var e=!t.isSelect;this.$set(t,"isSelect",e)},makesyr:function(){var t=this;this.isSubmit||(0==this.selectedIds.length&&uni.showToast({title:"\u8bf7\u9009\u62e9\u624b\u827a\u4eba",icon:"none",duration:2e3}),this.isSubmit=!0,c.default.post("/sj/makesyr",{sjid:this.userInfo.id,server_id:this.queryData.server_id,syr_arr:this.selectedIds,type:2==this.queryData.state?1:2}).then((function(e){200==e.code?(uni.showToast({title:2==t.queryData.state?"\u5206\u914d\u6210\u529f":"\u53d6\u6d88\u6210\u529f",icon:"none",duration:2e3}),t.$nextTick((function(){t.search()}))):uni.showToast({title:e.msg,icon:"none",duration:2e3})})).catch((function(t){uni.showToast({title:"\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5",icon:"none",duration:2e3})})).finally((function(){t.isSubmit=!1})))}}};e.default=d},9697:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n={data:function(){return{isFirstOPen:!0,sureTimeObj:{},dateList:["\u4eca\u5929","\u660e\u5929","\u540e\u5929"],startTimeIndex:null,endTimeIndex:null,activeList:[],sureTimeDataIndex:0,selectedDateIndex:0,stateConfig:{1:{class:"state-available",text:"\u53ef\u7ea6"},2:{class:"state-full",text:"\u7ea6\u6ee1"},3:{class:"state-rest",text:"\u4f11\u606f"},4:{class:"state-locked",text:"\u9501\u5b9a"},5:{class:"state-unavailable",text:"\u4e0d\u53ef\u7528"}}}},props:{timeOptions:{type:Array,default:function(){return[]}},service:{type:Object,default:function(){return{}}},url:{type:String,default:""},identity:{type:Number,default:0}},created:function(){t("log","\u9009\u62e9\u65f6\u95f4",this.service," at components/select-time-page/select-time-page2.vue:113")},mounted:function(){},methods:{getItemClass:function(t){var e;return(null===(e=this.stateConfig[t])||void 0===e?void 0:e.class)||"state-unknown"},selectDate:function(t){this.selectedDateIndex=t},createRangeArray:function(t,e){var i=t<=e?1:-1,s=Math.abs(e-t)+1;return Array.from({length:s},(function(e,s){return t+s*i}))},selectTime:function(e,i){var s=this,n=this;this.sureTimeDataIndex!=this.selectedDateIndex&&(n.startTimeIndex=null,n.endTimeIndex=null);var o=this.startTimeIndex,d=this.endTimeIndex;if(1===e.state){if(o==d&&d==i)return this.startTimeIndex=null,this.endTimeIndex=null,void this.storageStatus();if(null==o||o!=d)return this.startTimeIndex=i,this.endTimeIndex=i,this.storageStatus(),n.handelGetTimeArr(),void uni.showToast({title:"\u60a8\u5df2\u9009\u62e9".concat(this.timeOptions[this.selectedDateIndex][this.startTimeIndex].show_time,"\uff0c\u70e6\u8bf7\u518d\u9009\u4e00\u4e2a\u65f6\u95f4\uff0c\u5b8c\u6210\u300c\u5f00\u59cb / \u7ed3\u675f\u300d\u7684\u65f6\u95f4\u6bb5\u8bbe\u7f6e"),icon:"none",duration:1e3});if(o>i?o=i:d=i,d-o<3)return void uni.showToast({title:"\u9884\u7ea6\u65f6\u95f4\u6700\u5c11\u9700\u898130\u5206\u949f\uff0c\u8bf7\u8c03\u6574\u60a8\u7684\u7ed3\u675f\u65f6\u95f4\u9009\u62e9\uff5e",icon:"none",duration:1e3});var l,u=this.timeOptions[this.selectedDateIndex].slice(o,d).findIndex((function(t){return 1!=t.state}));if(t("log",22222,u,this.timeOptions[this.selectedDateIndex].slice(o,d)," at components/select-time-page/select-time-page2.vue:205"),-1!=u)return void uni.showToast({title:"\u60a8\u9009\u62e9\u7684\u65f6\u95f4\u6bb5\u5185\u90e8\u5206\u65f6\u95f4\u4e0d\u53ef\u7528\uff0c\u8bf7\u8c03\u6574\u540e\u91cd\u65b0\u9009\u62e9\uff5e",icon:"none",duration:1e3});0==this.identity?l={user_syr_id:this.service.user_syr.id,reserve_time:this.timeOptions[this.selectedDateIndex][o].time,end_time:this.timeOptions[this.selectedDateIndex][d].time}:1==this.identity&&(l={work_seat_id:this.service.work_seat.id,user_sj_id:this.service.user_sj.id,reserve_time:this.timeOptions[this.selectedDateIndex][o].time,end_time:this.timeOptions[this.selectedDateIndex][d].time}),this.url?c.default.post(this.url,l).then(function(){var t=(0,r.default)(a.default.mark((function t(e){return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:200==e.code?(n.startTimeIndex=o,n.endTimeIndex=d,s.storageStatus(),n.handelGetTimeArr()):uni.showToast({title:e.msg,icon:"none",duration:1e3});case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).catch((function(e){uni.showToast({title:"\u7f51\u7edc\u7e41\u5fd9\uff0c\u7a0d\u540e\u518d\u8bd5",icon:"none",duration:1e3}),t("log","\u62a5\u9519",e," at components/select-time-page/select-time-page2.vue:258")})):(n.startTimeIndex=o,n.endTimeIndex=d,this.storageStatus(),n.handelGetTimeArr())}},storageStatus:function(){this.sureTimeDataIndex=this.selectedDateIndex,null!=this.startTimeIndex?this.activeList=this.createRangeArray(this.startTimeIndex,this.endTimeIndex):this.activeList=[]},handelGetTimeArr:function(){var t=this.timeOptions[this.selectedDateIndex][this.startTimeIndex].time.split(" "),e={reserve_start_time:this.timeOptions[this.selectedDateIndex][this.startTimeIndex].time,reserve_end_time:this.timeOptions[this.selectedDateIndex][this.endTimeIndex].time,startTime:this.timeOptions[this.selectedDateIndex][this.startTimeIndex].show_time,endTime:this.timeOptions[this.selectedDateIndex][this.endTimeIndex].show_time,date:t[0],num:this.activeList.length-1};this.$emit("changeTime",e)}}};e.default=n}).call(this,i("f3b9")["default"])},"96a6":function(t,e,i){"use strict";i.r(e);var s=i("b1d7"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},"96f6":function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","order-card"),attrs:{_i:0}},[t._$s(1,"i",t.dataItem.reservation_time||t.dataItem.reserve_end_time)?i("view",{staticClass:t._$s(1,"sc","time-info"),attrs:{_i:1}},[i("image",{staticClass:t._$s(2,"sc","time-info-img"),attrs:{src:t._$s(2,"a-src",t.dataItem.order_shopheadphoto_other),_i:2}}),i("text",{staticClass:t._$s(3,"sc","time-info-name"),attrs:{_i:3}},[t._v(t._$s(3,"t0-0",t._s(t.dataItem.order_shop_other)))]),i("text",{staticClass:t._$s(4,"sc","time-info-text1"),attrs:{_i:4}}),i("text",{staticClass:t._$s(5,"sc","time-info-text2"),attrs:{_i:5}},[t._v(t._$s(5,"t0-0",t._s(t.useTime)))])]):i("view",{staticClass:t._$s(6,"sc","orderNumBox"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","order-id white-space-nowrap"),attrs:{_i:7}},[t._v(t._$s(7,"t0-0",t._s(t.dataItem.number)))]),t._$s(8,"i",t.showState)?i("view",{staticClass:t._$s(8,"sc","stateText"),attrs:{_i:8}},[t._v(t._$s(8,"t0-0",t._s(t.stateText)))]):t._e()]),i("view",{staticClass:t._$s(9,"sc","service-container"),attrs:{_i:9},on:{click:function(e){return t.$emit("goOrderDetail",t.dataItem)}}},[i("image",{staticClass:t._$s(10,"sc","service-img"),attrs:{src:t._$s(10,"a-src",t.dataItem.order_photo?t.dataItem.order_photo[0]:JSON.parse(t.dataItem.photo)[0]),_i:10}}),i("view",{staticClass:t._$s(11,"sc","service-info"),attrs:{_i:11}},[i("view",[i("view",{staticClass:t._$s(13,"sc","service-type"),attrs:{_i:13}},[t._$s(14,"i",t.dataItem.team_buy_id)?i("view",{staticClass:t._$s(14,"sc","service-name-type"),attrs:{_i:14}},[t._v(t._$s(14,"t0-0",t._s(t.getGroupType)))]):t._e(),i("text",{staticClass:t._$s(15,"sc","service-name-text"),attrs:{_i:15}},[t._v(t._$s(15,"t0-0",t._s(t.dataItem.server_title)))])]),t._$s(16,"i",t.dataItem.add_time)?i("view",{staticClass:t._$s(16,"sc","service-time"),attrs:{_i:16}},[t._v(t._$s(16,"t0-0",t._s(t.dataItem.add_time)))]):t._e()]),i("view",{staticClass:t._$s(17,"sc","service-price"),attrs:{_i:17}},[t._$s(18,"i",t.dataItem.team_buy_id)?i("text",{attrs:{_i:18}},[t._v(t._$s(18,"t0-0",t._s("\u56e2\u8d2d\u4ef7: ")))]):t._e(),i("text",[t._v(t._$s(19,"t0-0",t._s(t.dataItem.order_money)))])])])]),t._$s(20,"i",t.dataItem.reservation_address)?i("view",{staticClass:t._$s(20,"sc","order-address"),attrs:{_i:20}},[t._v(t._$s(20,"t0-0",t._s(t.dataItem.reservation_address)))]):t._e(),t._$s(21,"i",t.haveButton)?i("view",{staticClass:t._$s(21,"sc","button-group"),attrs:{_i:21}},[t._$s(22,"i",2==t.dataItem.state||3==t.dataItem.state)?i("view",{staticClass:t._$s(22,"sc","btn cancel-btn"),attrs:{_i:22},on:{click:function(e){return e.stopPropagation(),t.emitCancel(e)}}}):t._e(),t._$s(23,"i",3==t.dataItem.state)?i("view",{staticClass:t._$s(23,"sc","btn accept-btn"),attrs:{_i:23},on:{click:function(e){return e.stopPropagation(),t.emitStart(e)}}}):t._e(),t._$s(24,"i",4==t.dataItem.state)?i("view",{staticClass:t._$s(24,"sc","btn accept-btn"),attrs:{_i:24},on:{click:function(e){return e.stopPropagation(),t.emitDone(e)}}}):t._e()]):t._e()])},a=[]},"97a1":function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("ec2d")),o=s(i("f8df")),d={components:{searchBox:n.default,CommonList:o.default},data:function(){return{isSubmit:!1,queryData:{nameorphone:"",sjid:null,state:""},userInfo:{},artisanType:getApp().globalData.artisanType,info:{1:{list:"/syr/serversSelf/list",name:"\u624b\u827a\u4eba",switch:"/syr/serversSelf/switch"},2:{list:"/sj/serversSelf/list",name:"\u5546\u5bb6",switch:"/sj/serversSelf/switch"}},statusBarHeight:0,tabs:[{id:"",name:"\u5168\u90e8"},{id:1,name:"\u670d\u52a1\u4e2d"},{id:2,name:"\u5df2\u89e3\u7ea6"}]}},computed:{},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function t(){var i;return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return 3,t.next=3,c.default.post("/user/getuser",{type:3});case 3:i=t.sent,e.userInfo=i.data,e.queryData.sjid=e.userInfo.id,e.statusBarHeight=e.getRpxStatusBarHeight(),e.$nextTick((function(){e.search()}));case 8:case"end":return t.stop()}}),t)})))()},onShow:function(){var t=this;this.queryData.sjid&&this.$nextTick((function(){t.search()}))},methods:{goDetail:function(t){uni.$uv.throttle((function(){var e;uni.navigateTo({url:"/pages/shop/staff/detail?syrid=".concat(null===(e=t.syr)||void 0===e?void 0:e.id)})}),500)},handleSwitchChange:function(t){var e={sjid:this.userInfo.id,syrid:t.syr_id};c.default.post("/sj/isaccept",e).then((function(e){200==e.code?1===t.sj_state?t.sj_state=2:t.sj_state=1:uni.showToast({title:e.msg,icon:"none",duration:2e3})})).catch((function(t){uni.showToast({title:"\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5",icon:"none",duration:2e3})}))},typName:function(t){return{1:"\u670d\u52a1\u4e2d",2:"\u5df2\u89e3\u7ea6"}[t]},handleService:function(t){var e=this;uni.showModal({title:"\u63d0\u793a",content:"\u786e\u5b9a\u8981".concat(1==t.us_state?"\u4e0b\u67b6":"\u4e0a\u67b6","\u8be5\u670d\u52a1\u5417\uff1f"),success:function(i){i.confirm&&c.default.post(e.info[e.artisanType].switch,{id:t.id,us_state:1==t.us_state?2:1}).then((function(t){200==t.code?(uni.showToast({title:"\u4e0b\u67b6\u6210\u529f",icon:"none"}),e.search()):uni.showToast({title:t.msg,icon:"none"})}))}})},goAddStaff:function(){uni.navigateTo({url:"/pages/shop/staff/addStaff"})},search:function(){this.$refs.groupRef.manualRefresh(this.queryData)},switchTab:function(t){this.queryData.state=t,this.search()},openPop:function(){this.$refs.popup.open("center")},closePop:function(){this.$refs.popup.close()}}};e.default=d},"97f9":function(t,e,i){"use strict";i.r(e);var s=i("91c1"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},9801:function(t,e,i){"use strict";i.r(e);var s=i("8e15"),a=i("3ebc");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},9827:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("7ca3")),r=s(i("67ad")),c=s(i("0bdb")),n=s(i("d517")),o=s(i("d202")),d=s(i("2638")),l=s(i("1c43")),u=i("3f85"),f=s(i("cd06"));function _(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function p(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};(0,r.default)(this,e),(0,u.isPlainObject)(i)||(i={},t("warn","\u8bbe\u7f6e\u5168\u5c40\u53c2\u6570\u5fc5\u987b\u63a5\u6536\u4e00\u4e2aObject"," at uni_modules/uv-ui-tools/libs/luch-request/core/Request.js:37")),this.config=(0,f.default)(p(p({},l.default),i)),this.interceptors={request:new o.default,response:new o.default}}return(0,c.default)(e,[{key:"setConfig",value:function(t){this.config=t(this.config)}},{key:"middleware",value:function(t){t=(0,d.default)(this.config,t);var e=[n.default,void 0],i=Promise.resolve(t);this.interceptors.request.forEach((function(t){e.unshift(t.fulfilled,t.rejected)})),this.interceptors.response.forEach((function(t){e.push(t.fulfilled,t.rejected)}));while(e.length)i=i.then(e.shift(),e.shift());return i}},{key:"request",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.middleware(t)}},{key:"get",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.middleware(p({url:t,method:"GET"},e))}},{key:"post",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.middleware(p({url:t,data:e,method:"POST"},i))}},{key:"put",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.middleware(p({url:t,data:e,method:"PUT"},i))}},{key:"delete",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.middleware(p({url:t,data:e,method:"DELETE"},i))}},{key:"options",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.middleware(p({url:t,data:e,method:"OPTIONS"},i))}},{key:"upload",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.url=t,e.method="UPLOAD",this.middleware(e)}},{key:"download",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.url=t,e.method="DOWNLOAD",this.middleware(e)}},{key:"version",get:function(){return"3.1.0"}}]),e}();e.default=v}).call(this,i("f3b9")["default"])},"989b":function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("34cf")),c=s(i("7ca3")),n=s(i("ee10")),o=s(i("16bb")),d=(s(i("eae7")),s(i("91d2")),i("e9a7"));function l(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function u(t){for(var e=1;e=1){var a=s[0];if(a&&"license"===e&&(i.license_start_date=this.formatDateFromBackend(a)),s.length>=2&&s[1]){var r=s[1];"license"===e&&(i.license_end_date=this.formatDateFromBackend(r))}else"license"===e&&(i.uscc_expiry_type=1,i.license_end_date="\u957f\u4e45\u6709\u6548")}}},formatDateFromBackend:function(t){if(!t)return"";if(t.match(/^\d{4}-\d{2}-\d{2}$/)){var e=t.split("-"),i=(0,r.default)(e,3),s=i[0],a=i[1],c=i[2];return"".concat(s,"\u5e74").concat(parseInt(a),"\u6708").concat(parseInt(c),"\u65e5")}return t},startChange:function(){this.editable=!0,this.buttonType="edit",this.displayData=u({},this.pendingData),this.updateNavTitle()},cancelChange:function(){this.editable=!1,this.buttonType="change",this.displayData=u({},this.originalData),this.updateNavTitle()},togglePendingData:function(){this.showPendingData=!this.showPendingData,this.showPendingData?this.displayData=u({},this.pendingData):this.displayData=u({},this.originalData),this.updateNavTitle()},prepareSubmitData:function(){var e="number"===typeof this.displayData.uscc_type?1===this.displayData.uscc_type?"\u4e2a\u4f53\u5de5\u5546\u6237\u8425\u4e1a\u6267\u7167":"\u4f01\u4e1a\u6cd5\u4eba\u8425\u4e1a\u6267\u7167":this.displayData.uscc_type,i={apply_type:this.applyType,uscc_type:e,uscc_photo:this.displayData.uscc_photo,shop_photo:this.displayData.shop_photo,uscc_num:this.displayData.uscc_num,uscc_name:this.displayData.uscc_name,for_shop:this.displayData.for_shop,uscc_expiry_type:this.displayData.uscc_expiry_type,uscc_expiry:this.formatLicenseExpiry()};return t("log","\u63d0\u4ea4\u6570\u636e:",i," at pages/artisan/belong_shop.vue:627"),i},formatLicenseExpiry:function(){if(!this.displayData.license_start_date)return"";var t=this.formatDateForBackend(this.displayData.license_start_date);if(1===this.displayData.uscc_expiry_type)return"".concat(t," \u2014\u2014 ");if(this.displayData.license_end_date){var e=this.formatDateForBackend(this.displayData.license_end_date);return"".concat(t," \u2014\u2014 ").concat(e)}return""},showTipPopup:function(t){var e={uscc_num:{title:"\u5982\u4f55\u627e\u5230\u8bc1\u4ef6\u53f7\u7801",image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/72856aac-f0ac-49a1-a7f1-be3220ecb314"},uscc_name:{title:"\u5982\u4f55\u627e\u5230\u4f01\u4e1a\u540d\u79f0",image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/4fb3e0a2-4c1a-4433-a181-b7a1dfefd030"},for_shop:{title:"\u5982\u4f55\u627e\u5230\u5e97\u94fa\u540d\u79f0",image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/151b2238-099a-4b94-9376-03197d994101"}};e[t]&&(this.tipTitle=e[t].title,this.tipImage=e[t].image,this.currentTipField=t,this.showTipPopupFlag=!0)},hideTipPopup:function(){var t=this;this.showTipPopupFlag=!1,setTimeout((function(){t.currentTipField=""}),300)},formatDateForDisplay:function(t){if(!t)return"";if("\u957f\u4e45\u6709\u6548"===t)return"\u957f\u4e45\u6709\u6548";if(t.includes("-")){var e=t.split("-"),i=(0,r.default)(e,3),s=i[0],a=i[1],c=i[2];return"".concat(s,"\u5e74").concat(parseInt(a),"\u6708").concat(parseInt(c),"\u65e5")}return t},formatDateForBackend:function(t){if(!t)return"";if("\u957f\u4e45\u6709\u6548"===t)return"permanent";var e=t.match(/(\d+)\u5e74(\d+)\u6708(\d+)\u65e5/);if(e){var i=e[1],s=e[2].padStart(2,"0"),a=e[3].padStart(2,"0");return"".concat(i,"-").concat(s,"-").concat(a)}return t},setLicenseValidType:function(t){this.displayData.uscc_expiry_type="permanent"===t?1:2,"permanent"===t?this.displayData.license_end_date="\u957f\u4e45\u6709\u6548":"\u957f\u4e45\u6709\u6548"===this.displayData.license_end_date&&(this.displayData.license_end_date="")},showStoreTypePicker:function(){this.editable&&(this.showStoreTypePickerFlag=!0)},hideStoreTypePicker:function(){this.showStoreTypePickerFlag=!1},selectStoreType:function(t){this.displayData.uscc_type=t.value},confirmStoreType:function(){this.hideStoreTypePicker()},openDatePicker:function(t){if(this.editable){this.currentDateField=t;var e=new Date,i=e;if(this.displayData[t]){var s=this.displayData[t],a=s.match(/(\d+)\u5e74(\d+)\u6708(\d+)\u65e5/);a&&(i=new Date(parseInt(a[1]),parseInt(a[2])-1,parseInt(a[3])))}var r=this.years.indexOf(i.getFullYear()),c=i.getMonth(),n=i.getDate()-1;this.dateValue=[r>=0?r:0,c,n],this.showDatePickerFlag=!0}},hideDatePicker:function(){this.showDatePickerFlag=!1},bindDateChange:function(t){this.dateValue=t.detail.value},confirmDate:function(){var t=(0,r.default)(this.dateValue,3),e=t[0],i=t[1],s=t[2],a=this.years[e],c=this.months[i],n=this.days[s],o="".concat(a,"\u5e74").concat(c,"\u6708").concat(n,"\u65e5");this.displayData[this.currentDateField]=o,this.hideDatePicker()},chooseImage:function(e){var i=this;return(0,n.default)(a.default.mark((function s(){var r,c,n,o;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(i.editable){s.next=2;break}return s.abrupt("return");case 2:if(s.prev=2,i.userId){s.next=6;break}return s.next=6,i.getUserInfo();case 6:return s.next=8,new Promise((function(t,e){uni.chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:t,fail:e})}));case 8:if(r=s.sent,r.tempFilePaths&&0!==r.tempFilePaths.length){s.next=11;break}return s.abrupt("return");case 11:return c=r.tempFilePaths[0],n={path:c,size:0},s.next=15,i.directUpload(n,i.userId,i.identity+1);case 15:if(o=s.sent,!o){s.next=21;break}if(i.displayData[e]=o,"uscc_photo"!==e){s.next=21;break}return s.next=21,i.recognizeBusinessLicense(o);case 21:s.next=27;break;case 23:s.prev=23,s.t0=s["catch"](2),t("log","\u4e0a\u4f20\u56fe\u7247\u9519\u8bef:",s.t0," at pages/artisan/belong_shop.vue:827"),uni.showToast({title:"\u56fe\u7247\u4e0a\u4f20\u5931\u8d25",icon:"none"});case 27:case"end":return s.stop()}}),s,null,[[2,23]])})))()},recognizeBusinessLicense:function(e){var i=this;return(0,n.default)(a.default.mark((function s(){var r,c,n;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return s.prev=0,i.isRecognizing=!0,i.recognizeType="uscc_photo",uni.showLoading({title:"\u6b63\u5728\u8bc6\u522b\u8425\u4e1a\u6267\u7167...",mask:!0}),s.next=6,(0,d.recognizeBusinessLicense)(e);case 6:if(r=s.sent,t("log","\u8425\u4e1a\u6267\u7167\u8bc6\u522b\u7ed3\u679c:",r," at pages/artisan/belong_shop.vue:850"),c=i.checkBusinessLicenseRecognition(r),c){s.next=14;break}return uni.hideLoading(),uni.showToast({title:"\u672a\u8bc6\u522b\u5230\u8425\u4e1a\u6267\u7167\u4fe1\u606f\uff0c\u8bf7\u624b\u52a8\u586b\u5199\u6216\u91cd\u65b0\u62cd\u6444",icon:"none",duration:3e3}),i.isRecognizing=!1,s.abrupt("return");case 14:n=0,r.uscc_type&&r.uscc_type.trim()&&(i.displayData.uscc_type=r.uscc_type.trim(),n++),r.uscc_name&&r.uscc_name.trim()&&"\u65e0"!==r.uscc_name?(i.displayData.uscc_name=r.uscc_name,n++):i.displayData.uscc_name="",r.uscc_num&&r.uscc_num.trim()&&(i.displayData.uscc_num=r.uscc_num.trim(),n++),r.uscc_name&&r.uscc_name.trim()&&(i.displayData.for_shop=r.uscc_name.trim()),uni.hideLoading(),n>0?uni.showToast({title:"\u8425\u4e1a\u6267\u7167\u8bc6\u522b\u6210\u529f",icon:"none",duration:2e3}):uni.showToast({title:"\u8bc6\u522b\u5b8c\u6210\uff0c\u4f46\u672a\u83b7\u53d6\u5230\u6709\u6548\u4fe1\u606f",icon:"none",duration:3e3}),s.next=28;break;case 23:s.prev=23,s.t0=s["catch"](0),t("error","\u8425\u4e1a\u6267\u7167\u8bc6\u522b\u5931\u8d25:",s.t0," at pages/artisan/belong_shop.vue:910"),uni.hideLoading(),uni.showToast({title:s.t0.message||"\u8bc6\u522b\u5931\u8d25\uff0c\u8bf7\u624b\u52a8\u586b\u5199",icon:"none",duration:3e3});case 28:return s.prev=28,i.isRecognizing=!1,s.finish(28);case 31:case"end":return s.stop()}}),s,null,[[0,23,28,31]])})))()},checkBusinessLicenseRecognition:function(t){for(var e=0,i=["uscc_num","uscc_name","uscc_type"];e]+src="([^">]+)"[^>]*>/g,r=0;while(null!==(i=a.exec(s))){var c=i.index,n=a.lastIndex,o=i[1];if(c>r){var d=s.substring(r,c);d.trim()&&this.contentList.push({type:"text",content:d})}this.contentList.push({type:"image",src:o}),r=n}if(r=0;--a){var r=this.tryEntries[a],n=r.completion;if("root"===r.tryLoc)return s("end");if(r.tryLoc<=this.prev){var o=c.call(r,"catchLoc"),d=c.call(r,"finallyLoc");if(o&&d){if(this.prev=0;--i){var s=this.tryEntries[i];if(s.tryLoc<=this.prev&&c.call(s,"finallyLoc")&&this.prev=0;--e){var i=this.tryEntries[e];if(i.finallyLoc===t)return this.complete(i.completion,i.afterLoc),O(i),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var i=this.tryEntries[e];if(i.tryLoc===t){var s=i.completion;if("throw"===s.type){var a=s.arg;O(i)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,i,s){return this.delegate={iterator:L(t),resultName:i,nextLoc:s},"next"===this.method&&(this.arg=e),g}},i}t.exports=a,t.exports.__esModule=!0,t.exports["default"]=t.exports},"9fe0":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","settings-page"),attrs:{_i:0}},[i("upload-app-vue",{ref:"uploadApp",attrs:{isHome:!1,_i:1}}),i("custom-navbar",{attrs:{title:"\u8bbe\u7f6e",showBack:!0,_i:2}}),i("view",{staticClass:t._$s(3,"sc","content"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","section-list"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","list-item"),attrs:{_i:5},on:{click:function(e){return t.navigateTo("/pages/settings/password")}}},[i("view",{staticClass:t._$s(6,"sc","item-left flex-row-center"),attrs:{_i:6}},[i("image",{staticClass:t._$s(7,"sc","item-left-img"),attrs:{_i:7}}),i("text",{staticClass:t._$s(8,"sc","item-text"),attrs:{_i:8}})]),i("image",{staticClass:t._$s(9,"sc","arrow-right"),attrs:{_i:9}})]),i("view",{staticClass:t._$s(10,"sc","list-item"),attrs:{_i:10},on:{click:function(e){return t.navigateTo("/pages/agreement/agreement?type=26")}}},[i("view",{staticClass:t._$s(11,"sc","item-left flex-row-center"),attrs:{_i:11}},[i("image",{staticClass:t._$s(12,"sc","item-left-img"),attrs:{_i:12}}),i("text",{staticClass:t._$s(13,"sc","item-text"),attrs:{_i:13}})]),i("image",{staticClass:t._$s(14,"sc","arrow-right"),attrs:{_i:14}})]),i("view",{staticClass:t._$s(15,"sc","list-item"),attrs:{_i:15},on:{click:function(e){return t.navigateTo("/pages/agreement/agreement?type=28")}}},[i("view",{staticClass:t._$s(16,"sc","item-left flex-row-center"),attrs:{_i:16}},[i("image",{staticClass:t._$s(17,"sc","item-left-img"),attrs:{_i:17}}),i("text",{staticClass:t._$s(18,"sc","item-text"),attrs:{_i:18}})]),i("image",{staticClass:t._$s(19,"sc","arrow-right"),attrs:{_i:19}})]),i("view",{staticClass:t._$s(20,"sc","list-item"),attrs:{_i:20},on:{click:t.deleteAccount}},[i("view",{staticClass:t._$s(21,"sc","item-left flex-row-center"),attrs:{_i:21}},[i("image",{staticClass:t._$s(22,"sc","item-left-img"),attrs:{_i:22}}),i("text",{staticClass:t._$s(23,"sc","item-text"),attrs:{_i:23}})]),i("image",{staticClass:t._$s(24,"sc","arrow-right"),attrs:{_i:24}})]),i("view",{staticClass:t._$s(25,"sc","list-item"),attrs:{_i:25},on:{click:function(e){return t.navigateTo("/pages/message/settings")}}},[i("view",{staticClass:t._$s(26,"sc","item-left flex-row-center"),attrs:{_i:26}},[i("image",{staticClass:t._$s(27,"sc","item-left-img"),attrs:{_i:27}}),i("text",{staticClass:t._$s(28,"sc","item-text"),attrs:{_i:28}})]),i("view",{staticClass:t._$s(29,"sc","item-right"),attrs:{_i:29}},[i("text",{staticClass:t._$s(30,"sc","cache-size"),attrs:{_i:30}}),i("image",{staticClass:t._$s(31,"sc","arrow-right"),attrs:{_i:31}})])]),i("view",{staticClass:t._$s(32,"sc","list-item"),attrs:{_i:32},on:{click:t.clearStorage}},[i("view",{staticClass:t._$s(33,"sc","item-left flex-row-center"),attrs:{_i:33}},[i("image",{staticClass:t._$s(34,"sc","item-left-img"),attrs:{_i:34}}),i("text",{staticClass:t._$s(35,"sc","item-text"),attrs:{_i:35}})]),i("view",{staticClass:t._$s(36,"sc","item-right"),attrs:{_i:36}},[i("text",{staticClass:t._$s(37,"sc","cache-size"),attrs:{_i:37}},[t._v(t._$s(37,"t0-0",t._s(t.cacheSize)))]),i("image",{staticClass:t._$s(38,"sc","arrow-right"),attrs:{_i:38}})])]),i("view",{staticClass:t._$s(39,"sc","list-item"),attrs:{_i:39},on:{click:t.uploadApp}},[i("view",{staticClass:t._$s(40,"sc","item-left flex-row-center"),attrs:{_i:40}},[i("image",{staticClass:t._$s(41,"sc","item-left-img"),attrs:{_i:41}}),i("text",{staticClass:t._$s(42,"sc","item-text"),attrs:{_i:42}})]),i("view",{staticClass:t._$s(43,"sc","item-right"),attrs:{_i:43}},[i("text",{staticClass:t._$s(44,"sc","version"),attrs:{_i:44}},[t._v(t._$s(44,"t0-0",t._s(t.version_number)))]),i("image",{staticClass:t._$s(45,"sc","arrow-right"),attrs:{_i:45}})])])]),i("view",{staticClass:t._$s(46,"sc","logout-btn"),attrs:{_i:46},on:{click:t.logout}},[i("view",{staticClass:t._$s(47,"sc","logout-text flex-row-center-center"),attrs:{_i:47}})])])],1)},r=[]},a020:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("7ca3")),r=s(i("d5b0")),c=s(i("68ee")),n=s(i("16bb")),o=s(i("5541")),d=s(i("6473")),l={data:function(){var t;return t={secondLength:2,name:"",statusBarHeight:0,listQuery:{},latitude:"",longitude:getApp().globalData.longitude},(0,a.default)(t,"latitude",getApp().globalData.latitude),(0,a.default)(t,"servers_region",getApp().globalData.servers_region),(0,a.default)(t,"address",getApp().globalData.address),(0,a.default)(t,"isLogin",!1),(0,a.default)(t,"backgroundColor","transparent"),(0,a.default)(t,"syrId",null),(0,a.default)(t,"userInfo",{}),(0,a.default)(t,"isShowCheckShop",!1),(0,a.default)(t,"sjInfo",{}),(0,a.default)(t,"sjList",[]),t},components:{filters:o.default,projectTabs:c.default,CustomNavbar:d.default,TabBar:r.default},computed:{shopText:function(){return this.isLogin?this.sjInfo&&this.sjInfo.id?this.sjInfo.name:"\u5168\u90e8\u95e8\u5e97":"\u8bf7\u9009\u62e9\u95e8\u5e97"},tipText:function(){return this.isLogin?1==this.userInfo.id_type?"\u6b22\u8fce\u767b\u9646\u7f8e\u878d\u878d\u5546\u5bb6\uff01":"\u5165\u9a7b\u540e\u53ef\u4f53\u9a8c\u66f4\u591a\u670d\u52a1":"\u767b\u5f55\u540e\u53ef\u4f53\u9a8c\u66f4\u591a\u670d\u52a1"},nameText:function(){return this.isLogin?1==this.userInfo.id_type?this.userInfo.name||this.userInfo.nick_name:"\u6b22\u8fce\u4f7f\u7528\u7f8e\u878d\u878d\u5546\u5bb6":"\u6b22\u8fce\u767b\u5f55\u7f8e\u878d\u878d\u5546\u5bb6"},isAccountDisabled:function(){var t;return 2===(null===(t=this.userInfo)||void 0===t?void 0:t.is_ok)}},onShow:function(){this.isLogin=!!uni.getStorageSync("accessToken"),this.isLogin&&this.getUserInfo()},onLoad:function(){uni.hideTabBar()},methods:{showStopUseModal:function(){uni.showModal({title:"\u63d0\u793a",content:"\u60a8\u7684\u8d26\u53f7\u5df2\u505c\u6b62\u4f7f\u7528\u3002\u82e5\u6709\u7591\u95ee\u6216\u6062\u590d\u9700\u6c42\uff0c\u8bf7\u5c3d\u5feb\u8054\u7cfb\u5e73\u53f0\u5de5\u4f5c\u4eba\u5458\u6838\u5b9e\u5904\u7406\u3002",showCancel:!1,confirmText:"\u6211\u77e5\u9053\u4e86"})},goAcceptSet:function(){this.isAccountDisabled?this.showStopUseModal():uni.navigateTo({url:"/pages/shop/set"})},getUserInfo:function(){var t=this;n.default.post("/sj/user/getUser").then((function(e){t.userInfo=e.data,uni.setStorageSync("syrId",e.data.id),t.syrId=e.data.id}))}}};e.default=l},a034:function(t,e,i){"use strict";i.r(e);var s=i("4212"),a=i("6c54");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},a03e:function(t,e,i){"use strict";i.r(e);var s=i("6096"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},a126:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","hao-bigbox"),style:t._$s(0,"s",{top:t.statusBarHeight+"px",height:"calc(100% - "+t.statusBarHeight+"px)"}),attrs:{_i:0}},[t._$s(1,"i",t.isSearch)?i("view",{staticClass:t._$s(1,"sc","hao-search"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","hao-searchCent"),attrs:{_i:2}},[i("image",{staticClass:t._$s(3,"sc","hao-searchImg"),attrs:{_i:3}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.inputKey,expression:"inputKey"}],staticClass:t._$s(4,"sc","hao-searchInput"),attrs:{_i:4},domProps:{value:t._$s(4,"v-model",t.inputKey)},on:{input:[function(e){e.target.composing||(t.inputKey=e.target.value)},t.searchInput]}})])]):t._e(),t._$s(5,"i",t.isSearch&&t.searchList.length>0)?i("view",{staticClass:t._$s(5,"sc","hao-searchScroll"),attrs:{_i:5}},[i("scroll-view",{attrs:{_i:6}},[i("view",t._l(t._$s(8,"f",{forItems:t.searchList}),(function(e,s,a,r){return i("view",{key:t._$s(8,"f",{forIndex:a,key:e[t.idValue]}),staticClass:t._$s("8-"+r,"sc","hao-secondEach"),attrs:{_i:"8-"+r},on:{click:function(i){return t.selectIndex(e)}}},[t._$s("9-"+r,"i",t.isAvatar)?i("view",{staticClass:t._$s("9-"+r,"sc","hao-avatar"),attrs:{_i:"9-"+r}},[i("image",{staticClass:t._$s("10-"+r,"sc","hao-avatarImg"),attrs:{src:t._$s("10-"+r,"a-src",e[t.avatarValue]),_i:"10-"+r}})]):t._e(),i("view",{staticClass:t._$s("11-"+r,"sc","hao-text"),attrs:{_i:"11-"+r}},[i("view",{staticClass:t._$s("12-"+r,"sc","hao-name"),attrs:{_i:"12-"+r}},[t._v(t._$s("12-"+r,"t0-0",t._s(e[t.nameValue])))]),t._$s("13-"+r,"i",t.isFu)?i("view",{staticClass:t._$s("13-"+r,"sc","hao-fu"),attrs:{_i:"13-"+r}},[t._v(t._$s("13-"+r,"t0-0",t._s(e[t.fuValue])))]):t._e()])])})),0)])]):t._e(),t._$s(14,"i",t.isLetters&&t.searchList.length<=0)?i("view",{staticClass:t._$s(14,"sc","hao-letters"),style:t._$s(14,"s",{top:t.isSearch?"120rpx":"0rpx",height:t.isSearch?"calc(100% - 120rpx)":"100%"}),attrs:{_i:14}},[t._$s(15,"i",t.isTop)?i("image",{staticClass:t._$s(15,"sc","hao-letterTop"),attrs:{_i:15},on:{click:t.goTop}}):t._e(),t._l(t._$s(16,"f",{forItems:t.letters}),(function(e,s,a,r){return i("view",{key:t._$s(16,"f",{forIndex:a,key:e}),staticClass:t._$s("16-"+r,"sc","hao-lettersEach"),class:t._$s("16-"+r,"c",t.currentCeiling==s&&t.isIndexAc?"hao-lettersEachAc":""),style:t._$s("16-"+r,"s",{height:t.indexEachHH+"rpx","background-color":t.currentCeiling==s&&t.isIndexAc?t.indexAcColor:""}),attrs:{_i:"16-"+r},on:{touchmove:t.handleTouchMove,touchend:function(i){return t.handleTouchEnd(e,s)},click:function(i){return t.handleLetterClick(e,s)}}},[t._v(t._$s("16-"+r,"t0-0",t._s(e)))])}))],2):t._e(),t._$s(17,"i",t.isIndexToast&&t.toastIndex)?i("view",{staticClass:t._$s(17,"sc","hao-toastIndex"),attrs:{_i:17}},[t._v(t._$s(17,"t0-0",t._s(t.toastIndex)))]):t._e(),t._$s(18,"i",null!==t.currentCeiling&&t.isCeil&&t.listInfo.length>0&&t.searchList.length<=0&&t.isOkCurrent)?i("view",{staticClass:t._$s(18,"sc","ceiling"),style:t._$s(18,"s",{top:t.isSearch?"120rpx":"0rpx"}),attrs:{_i:18}},[t._v(t._$s(18,"t0-0",t._s(t.listInfo[t.currentCeiling].id.split("-")[1])))]):t._e(),i("scroll-view",{directives:[{name:"show",rawName:"v-show",value:t._$s(19,"v-show",t.searchList.length<=0),expression:"_$s(19,'v-show',searchList.length <= 0)"}],staticClass:t._$s(19,"sc","hao-scroll"),style:t._$s(19,"s",{top:t.isSearch?"120rpx":"0rpx",height:t.isSearch?"calc(100% - 120rpx)":"100%"}),attrs:{"scroll-top":t._$s(19,"a-scroll-top",t.scrollTop),"scroll-into-view":t._$s(19,"a-scroll-into-view",t.scrollEachId),_i:19},on:{scroll:t.listenScroll}},[i("view",[t._$s(21,"i",t.isCurrentCity||t.isHotCity)?i("view",{staticClass:t._$s(21,"sc","hao-modu"),attrs:{_i:21}},[t._$s(22,"i",t.isHotCity&&t.hotCity.length>0)?i("view",{staticClass:t._$s(22,"sc","hao-hotCity"),attrs:{_i:22}},[i("view",{staticClass:t._$s(23,"sc","hao-moduTitle"),attrs:{_i:23}}),i("view",{staticClass:t._$s(24,"sc","hao-hotCityBox"),attrs:{_i:24}},t._l(t._$s(25,"f",{forItems:t.hotCity}),(function(e,s,a,r){return i("view",{key:t._$s(25,"f",{forIndex:a,key:e[t.idValue]}),staticClass:t._$s("25-"+r,"sc","hao-hotEachCity"),attrs:{_i:"25-"+r},on:{click:function(i){return t.selectIndex(e)}}},[t._v(t._$s("25-"+r,"t0-0",t._s(e[t.nameValue])))])})),0)]):t._e()]):t._e(),t._l(t._$s(26,"f",{forItems:t.cityList}),(function(e,s,a,r){return i("view",{key:t._$s(26,"f",{forIndex:a,key:s}),staticClass:t._$s("26-"+r,"sc","hao-each"),attrs:{_i:"26-"+r}},[i("view",{staticClass:t._$s("27-"+r,"sc","hao-eachTitle"),attrs:{id:t._$s("27-"+r,"a-id","hao-"+s),_i:"27-"+r}},[t._v(t._$s("27-"+r,"t0-0",t._s(s)))]),i("view",{staticClass:t._$s("28-"+r,"sc","hao-second"),attrs:{_i:"28-"+r}},t._l(t._$s("29-"+r,"f",{forItems:e}),(function(e,s,a,c){return i("view",{key:t._$s("29-"+r,"f",{forIndex:a,key:e[t.idValue]}),staticClass:t._$s("29-"+r+"-"+c,"sc","hao-secondEach"),attrs:{_i:"29-"+r+"-"+c},on:{click:function(i){return t.selectIndex(e)}}},[t._$s("30-"+r+"-"+c,"i",t.isAvatar)?i("view",{staticClass:t._$s("30-"+r+"-"+c,"sc","hao-avatar"),attrs:{_i:"30-"+r+"-"+c}},[i("image",{staticClass:t._$s("31-"+r+"-"+c,"sc","hao-avatarImg"),attrs:{src:t._$s("31-"+r+"-"+c,"a-src",e[t.avatarValue]),_i:"31-"+r+"-"+c}})]):t._e(),i("view",{staticClass:t._$s("32-"+r+"-"+c,"sc","hao-text"),attrs:{_i:"32-"+r+"-"+c}},[i("view",{staticClass:t._$s("33-"+r+"-"+c,"sc","hao-name"),attrs:{_i:"33-"+r+"-"+c}},[t._v(t._$s("33-"+r+"-"+c,"t0-0",t._s(e[t.nameValue])))]),t._$s("34-"+r+"-"+c,"i",t.isFu)?i("view",{staticClass:t._$s("34-"+r+"-"+c,"sc","hao-fu"),attrs:{_i:"34-"+r+"-"+c}},[t._v(t._$s("34-"+r+"-"+c,"t0-0",t._s(e[t.fuValue])))]):t._e()])])})),0)])}))],2)])])},a=[]},a16b:function(t,e,i){"use strict";i.r(e);var s=i("b0f0"),a=i("c7ca");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},a1a1:function(t,e,i){"use strict";i.r(e);var s=i("96f6"),a=i("fe87");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"18b27c93",null,!1,s["a"],void 0);e["default"]=n.exports},a1a9:function(t,e,i){"use strict";i.r(e);var s=i("8bac"),a=i("f7c3");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"569d7f8b",null,!1,s["a"],void 0);e["default"]=n.exports},a1f8:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("12f9")),n=s(i("8547")),o=s(i("9a47")),d={name:"uv-picker",emits:["confirm","cancel","close","change"],mixins:[c.default,n.default,o.default],computed:{textStyle:function(){var t=this;return function(e,i){var s={display:"block"};return t.color&&(s.color=t.color),t.activeColor&&i===t.innerIndex[e]&&(s.color=t.activeColor),s}}},data:function(){return{lastIndex:[],innerIndex:[],innerColumns:[],columnIndex:0}},watch:{defaultIndex:{immediate:!0,handler:function(t){this.setIndexs(t,!0)}},columns:{deep:!0,immediate:!0,handler:function(t){this.setColumns(t)}}},methods:{open:function(){this.$refs.pickerPopup.open()},close:function(){this.$refs.pickerPopup.close()},popupChange:function(t){t.show||this.$emit("close")},getItemText:function(t){return this.$uv.test.object(t)?t[this.keyName]:t},cancel:function(){this.$emit("cancel"),this.close()},confirm:function(){var t=this;this.$emit("confirm",this.$uv.deepClone({indexs:this.innerIndex,value:this.innerColumns.map((function(e,i){return e[t.innerIndex[i]]})),values:this.innerColumns})),this.closeOnClickConfirm&&this.close()},changeHandler:function(t){for(var e=t.detail.value,i=0,s=0,a=0;athis.columnIndex&&(i[s]=0);this.setIndexs(i)},getColumnValues:function(t){var e=this;return(0,r.default)(a.default.mark((function t(){return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,e.$uv.sleep();case 2:case"end":return t.stop()}}),t)})))(),this.innerColumns[t]},setColumns:function(t){this.innerColumns=this.$uv.deepClone(t),0===this.innerIndex.length&&(this.innerIndex=new Array(t.length).fill(0))},getIndexs:function(){return this.innerIndex},getValues:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.$uv.sleep();case 2:case"end":return e.stop()}}),e)})))(),this.innerColumns.map((function(e,i){return e[t.innerIndex[i]]}))}}};e.default=d},a202:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","bind-alipay"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u7ed1\u5b9a"+t.way,"show-back":!0,backgroundColor:"#fff",_i:1}}),i("view",{staticClass:t._$s(2,"sc","bind-form"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","form-section"),attrs:{_i:3}},[i("text",{staticClass:t._$s(4,"sc","step-title"),attrs:{_i:4}}),i("view",{staticClass:t._$s(5,"sc","phone-number"),attrs:{_i:5}},[i("text",{staticClass:t._$s(6,"sc","number-lable"),attrs:{_i:6}}),i("text",{staticClass:t._$s(7,"sc","number"),attrs:{_i:7}})]),i("view",{staticClass:t._$s(8,"sc","input-group"),attrs:{_i:8}},[i("text",{staticClass:t._$s(9,"sc","label"),attrs:{_i:9}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.verifyCode,expression:"verifyCode"}],staticClass:t._$s(10,"sc","input"),attrs:{_i:10},domProps:{value:t._$s(10,"v-model",t.verifyCode)},on:{input:function(e){e.target.composing||(t.verifyCode=e.target.value)}}}),i("text",{staticClass:t._$s(11,"sc","verify-btn"),class:t._$s(11,"c",{disabled:t.counting}),attrs:{_i:11},on:{click:t.getVerifyCode}},[t._v(t._$s(11,"t0-0",t._s(t.countText)))])])]),i("view",{staticClass:t._$s(12,"sc","form-section"),attrs:{_i:12}},[i("text",{staticClass:t._$s(13,"sc","step-title"),attrs:{_i:13}},[t._v(t._$s(13,"t0-0",t._s(t.way)))]),i("view",{staticClass:t._$s(14,"sc","upload-box"),attrs:{_i:14},on:{click:t.uploadQRCode}},[t._$s(15,"i",t.qrCodeUrl)?i("image",{staticClass:t._$s(15,"sc","qr-image"),attrs:{src:t._$s(15,"a-src",t.qrCodeUrl),_i:15}}):i("view",{staticClass:t._$s(16,"sc","upload-placeholder"),attrs:{_i:16}},[i("text",{staticClass:t._$s(17,"sc","plus"),attrs:{_i:17}})])])]),i("view",{staticClass:t._$s(18,"sc","form-section"),attrs:{_i:18}},[i("text",{staticClass:t._$s(19,"sc","step-title"),attrs:{_i:19}},[t._v(t._$s(19,"t0-0",t._s(t.way)))]),i("view",{staticClass:t._$s(20,"sc","input-group name-input"),attrs:{_i:20}},[i("text",{staticClass:t._$s(21,"sc","label"),attrs:{_i:21}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.realName,expression:"realName"}],staticClass:t._$s(22,"sc","input"),attrs:{_i:22},domProps:{value:t._$s(22,"v-model",t.realName)},on:{input:function(e){e.target.composing||(t.realName=e.target.value)}}})])])]),i("view",{staticClass:t._$s(23,"sc","fixed-box"),attrs:{_i:23}},[i("view",{staticClass:t._$s(24,"sc","fixed-btn"),class:t._$s(24,"c",{"btn-disabled":!t.canSubmit}),attrs:{_i:24},on:{click:t.handleSubmit}},[i("text",{staticClass:t._$s(25,"sc","fixed-text"),attrs:{_i:25}})])])],1)},r=[]},a20f:function(t,e,i){"use strict";i.r(e);var s=i("9c4e"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},a211:function(t,e,i){"use strict";i.r(e);var s=i("95ec"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},a21c:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this.$createElement,e=this._self._c||t;return e("view",{staticClass:this._$s(0,"sc","success-page"),attrs:{_i:0}},[e("custom-navbar",{attrs:{title:"\u652f\u4ed8\u6210\u529f",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),e("view",{staticClass:this._$s(2,"sc","success-content"),attrs:{_i:2}},[e("image",{staticClass:this._$s(3,"sc","success-icon"),attrs:{_i:3}}),e("text",{staticClass:this._$s(4,"sc","success-text"),attrs:{_i:4}})]),e("view",{staticClass:this._$s(5,"sc","btn-box"),attrs:{_i:5},on:{click:this.goToOrder}},[e("text",{staticClass:this._$s(6,"sc","btn-text"),attrs:{_i:6}})])],1)},r=[]},a238:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c={data:function(){return{city:{center:"",name:""},inputKey:"",searchResults:[],latitude:0,longitude:0,listHeight:0}},onShow:function(){var t=uni.getStorageSync("searchCity");this.city=t||{center:"117.330043,38.372266",name:"\u9ec4\u9a85"},this.getCurrentLocation()},onLoad:function(){this.pageHeight=uni.getWindowInfo().safeArea.height,this.listHeight=parseInt(this.pageHeight)-44-75},methods:{selectAddress:function(t){var e=getCurrentPages(),i=e[e.length-3];i.$vm.isNeedLocation=!1,i.$vm.updateAddress(t),uni.navigateBack({delta:2}),getApp().updateAddress(t)},rad:function(t){return t*Math.PI/180},getDistance:function(t,e,i,s){var a=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r=this.rad(t),c=this.rad(i),n=r-c,o=this.rad(e)-this.rad(s),d=2*Math.asin(Math.sqrt(Math.pow(Math.sin(n/2),2)+Math.cos(r)*Math.cos(c)*Math.pow(Math.sin(o/2),2)));return d*=6378.137,d=a?d.toFixed(1):Math.round(1e3*d).toFixed(0),d},goSelectCity:function(){uni.navigateTo({url:"/pages/address/selectCity"})},getCurrentLocation:function(){var t=this;return(0,r.default)(a.default.mark((function e(){var i,s,r,c;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:i=t,"","",s=uni.getStorageSync("searchCity"),s?(r=s.center.split(","),i.longitude=r[0],i.latitude=r[1]):(c=getApp().globalData.addressRes,i.longitude=c.longitude,i.latitude=c.latitude),i.markers=[{latitude:i.latitude,longitude:i.longitude,iconPath:"/static/images/position_icon_3x.png"}],i.getPlaceAround();case 7:case"end":return e.stop()}}),e)})))()},getPlaceAround:function(){var e,i=this;return e=i.searchKeyword?{key:"30b7eb1a1b2f88edc085b9b3ee9a2188",location:"".concat(i.longitude,",").concat(i.latitude),keywords:i.searchKeyword,page:1,offset:20}:{key:"30b7eb1a1b2f88edc085b9b3ee9a2188",location:"".concat(i.longitude,",").concat(i.latitude),page:1,offset:20},new Promise((function(s,a){uni.request({url:"https://restapi.amap.com/v5/place/around",method:"GET",data:e,success:function(e){t("log",e," at pages/address/selectAddress.vue:180"),i.searchResults=e.data.pois}})}))},searchInput:function(){if(this.inputKey){var t=this,e={key:"30b7eb1a1b2f88edc085b9b3ee9a2188",keywords:this.inputKey,region:this.city.name,page:1,offset:20};return new Promise((function(i,s){uni.request({url:"https://restapi.amap.com/v5/place/text",method:"GET",data:e,success:function(e){var i=e.data.pois,s=t.city.center.split(",");i.forEach((function(e){var i=e.location.split(",");e.distance=t.getDistance(s[1],s[0],i[1],i[0])})),t.searchResults=i}})}))}this.getCurrentLocation()}}};e.default=c}).call(this,i("f3b9")["default"])},a239:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,selectTimePage:i("47c6").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","submit-order"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u63d0\u4ea4\u8ba2\u5355",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),t._$s(2,"i",1==t.service.server_kind)?i("view",{staticClass:t._$s(2,"sc","address-section"),attrs:{_i:2},on:{click:t.goToAddress}},[i("image",{staticClass:t._$s(3,"sc","positon-icon"),attrs:{_i:3}}),t._$s(4,"i",!t.reservation_address.server_address||!t.reservation_address.is_ok)?i("text",{staticClass:t._$s(4,"sc","address-choice"),attrs:{_i:4}}):i("view",{staticClass:t._$s(5,"sc","address-info"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","user-info"),attrs:{_i:6}},[i("text",{staticClass:t._$s(7,"sc","name"),attrs:{_i:7}},[t._v(t._$s(7,"t0-0",t._s(t.reservation_address.name)))]),i("text",{staticClass:t._$s(8,"sc","phone"),attrs:{_i:8}},[t._v(t._$s(8,"t0-0",t._s(t.reservation_address.call_phone)))])]),i("view",{staticClass:t._$s(9,"sc","address"),attrs:{_i:9}},[t._v(t._$s(9,"t0-0",t._s(t.reservation_address.server_address))+t._$s(9,"t0-1",t._s(t.reservation_address.house_number)))])]),i("image",{staticClass:t._$s(10,"sc","arrow-icon"),attrs:{_i:10}})]):t._e(),t._$s(11,"i",1==t.service.server_kind)?i("view",{staticClass:t._$s(11,"sc","section-cont"),attrs:{_i:11}},[i("view",{staticClass:t._$s(12,"sc","time-section"),attrs:{_i:12},on:{click:t.openTimePicker}},[i("text",{staticClass:t._$s(13,"sc","time-label"),attrs:{_i:13}}),i("view",{staticClass:t._$s(14,"sc","time-value"),attrs:{_i:14}},[i("text",{staticClass:t._$s(15,"sc","time"),attrs:{_i:15}},[t._v(t._$s(15,"t0-0",t._s(t.selectedTime||"\u8bf7\u9009\u62e9\u65f6\u95f4")))]),i("image",{staticClass:t._$s(16,"sc","arrow-icon"),attrs:{_i:16}})])]),i("view",{staticClass:t._$s(17,"sc","master-section"),attrs:{_i:17}},[i("text",{staticClass:t._$s(18,"sc","master-name"),attrs:{_i:18}},[t._v(t._$s(18,"t0-0",t._s(1==t.service.server_kind?"\u624b\u827a\u4eba":2==t.service.server_kind?"\u5e97\u94fa":"")))]),i("text",{staticClass:t._$s(19,"sc","master-info"),attrs:{_i:19}},[t._v(t._$s(19,"t0-0",t._s(t.syrorsjInfo.name)))])])]):t._e(),i("view",{staticClass:t._$s(20,"sc","service-section"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","section-title"),attrs:{_i:21}},[i("view",{staticClass:t._$s(22,"sc","icon"),attrs:{_i:22}}),i("text",{staticClass:t._$s(23,"sc","section-lable"),attrs:{_i:23}})]),i("view",{staticClass:t._$s(24,"sc","service-item"),attrs:{_i:24},on:{click:function(e){return t.goToDetail(t.service.id)}}},[t._$s(25,"i",t.service.photo&&0!=t.service.photo.length)?i("image",{staticClass:t._$s(25,"sc","service-image"),attrs:{src:t._$s(25,"a-src",t.service.photo[0]),_i:25}}):t._e(),i("view",{staticClass:t._$s(26,"sc","service-info"),attrs:{_i:26}},[i("text",{staticClass:t._$s(27,"sc","service-name text-overflow"),attrs:{_i:27}},[t._v(t._$s(27,"t0-0",t._s(t.service.title)))]),i("view",{staticClass:t._$s(28,"sc","service-count"),attrs:{_i:28}},[i("text",{staticClass:t._$s(29,"sc","count-lable"),attrs:{_i:29}}),i("text",{staticClass:t._$s(30,"sc","count-num"),attrs:{_i:30}})])])]),i("view",{staticClass:t._$s(31,"sc","price-info"),attrs:{_i:31}},[i("text",{staticClass:t._$s(32,"sc","price-label"),attrs:{_i:32}}),i("text",{staticClass:t._$s(33,"sc","price-value"),attrs:{_i:33}},[t._v(t._$s(33,"t0-0",t._s(t.service.server_price)))])]),i("view",{staticClass:t._$s(34,"sc","total-price"),attrs:{_i:34}},[i("text",{staticClass:t._$s(35,"sc","total-label"),attrs:{_i:35}}),i("text",{staticClass:t._$s(36,"sc","total-value"),attrs:{_i:36}},[t._v(t._$s(36,"t0-0",t._s(t.service.server_price)))])])]),i("view",{staticClass:t._$s(37,"sc","footer"),attrs:{_i:37}},[i("view",{staticClass:t._$s(38,"sc","price-total"),attrs:{_i:38}},[i("text",{staticClass:t._$s(39,"sc","price"),attrs:{_i:39}},[t._v(t._$s(39,"t0-0",t._s(t.service.server_price)))]),i("text",{staticClass:t._$s(40,"sc","amount-lable"),attrs:{_i:40}})]),i("view",{staticClass:t._$s(41,"sc","submit-btn"),attrs:{_i:41},on:{click:t.submitOrder}})]),i("select-time-page",{ref:"selecTime",attrs:{timeOptions:t.timeOptions,service:t.service,_i:42},on:{sureTime:t.sureTime,closeTime:t.closeTime}})],1)},r=[]},a255:function(t,e,i){"use strict";i.r(e);var s=i("3ce3"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},a260:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("6731")),r={name:"hao-indexList",data:function(){return{inputKey:"",searchTimeout:null,searchList:[],scrollEachId:"all",toastIndex:"",indexEachHH:36,afterConverHH:0,indexFirstTT:0,indexLastBB:0,isOk:!0,isIndexGo:!1,currentCeiling:null,listInfo:[],scrollInfo:{},scrollTop:.01,isOkCurrent:!1,statusBarHeight:0}},created:function(){var t=uni.getSystemInfoSync(),e=t.screenWidth;this.statusBarHeight=e*(2*t.statusBarHeight+88)/750},props:{letters:{type:Array,default:function(){return[]}},isLetters:{type:Boolean,default:!0},isIndexToast:{type:Boolean,default:!0},idValue:{type:String,default:"id"},nameValue:{type:String,default:"name"},currentCity:{type:Object,default:function(){}},isCurrentCity:{type:Boolean,default:!0},hotCity:{type:Array,default:function(){return[]}},isHotCity:{type:Boolean,default:!0},isSearch:{type:Boolean,default:!0},cityList:{type:Object,default:function(){}},isAvatar:{type:Boolean,default:!1},avatarValue:{type:String,default:"avatar"},isFu:{type:Boolean,default:!1},fuValue:{type:String,default:"fu"},isCeil:{type:Boolean,default:!0},isIndexAc:{type:Boolean,default:!0},indexAcColor:{type:String,default:"#5594f9"},isTop:{type:Boolean,default:!1}},mounted:function(){this.afterConverHH=uni.upx2px(this.indexEachHH),this.getLocation()},methods:{goTop:function(){var t=this;this.scrollTop=0,setTimeout((function(){t.scrollTop=.01}),200)},searchInput:function(){var e=this;this.searchTimeout&&clearTimeout(this.searchTimeout),this.inputKey?this.searchTimeout=setTimeout((function(){var i=[];a.default.districts[0].districts.forEach((function(s){"\u53f0\u6e7e\u7701"==s.name?s.name.startsWith(e.inputKey)&&i.push({name:"\u53f0\u6e7e",adcode:s.adcode,center:s.center,citycode:s.citycode}):"\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a"==s.name?s.name.startsWith(e.inputKey)&&i.push({name:"\u9999\u6e2f",adcode:s.adcode,center:s.center,citycode:s.citycode}):"\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a"==s.name?s.name.startsWith(e.inputKey)&&i.push({name:"\u6fb3\u95e8",adcode:s.adcode,center:s.center,citycode:s.citycode}):"\u91cd\u5e86\u5e02"==s.name?s.name.startsWith(e.inputKey)&&(i.push({name:"\u91cd\u5e86",adcode:s.adcode,center:s.center,citycode:s.citycode}),s.districts.forEach((function(e){t("log",e," at components/hao-indexList/hao-indexList/hao-indexList.vue:301"),"\u91cd\u5e86\u90ca\u53bf"==e.name&&e.districts.forEach((function(t){i.push({name:"".concat(t.name,",").concat(e.name,",").concat(s.name),adcode:t.adcode,center:t.center,citycode:t.citycode})}))}))):"\u5929\u6d25\u5e02"==s.name?s.name.startsWith(e.inputKey)&&i.push({name:"\u5929\u6d25",adcode:s.adcode,center:s.center,citycode:s.citycode}):s.districts.forEach((function(t){t.name.startsWith(e.inputKey)&&i.push({name:"".concat(t.name,",").concat(s.name),adcode:t.adcode,center:t.center,citycode:t.citycode}),t.districts.forEach((function(a){a.name.startsWith(e.inputKey)&&i.push({name:"".concat(a.name,",").concat(t.name,",").concat(s.name),adcode:a.adcode,center:a.center,citycode:a.citycode})}))}))})),t("log",i," at components/hao-indexList/hao-indexList/hao-indexList.vue:348"),e.searchList=i}),800):this.searchList=[]},getLocation:function(){var t=this;uni.createSelectorQuery().in(this).selectAll(".hao-lettersEach").boundingClientRect((function(e){t.indexFirstTT=Math.round(e[0].top),t.indexLastBB=Math.round(e[e.length-1].bottom)})).exec(),uni.createSelectorQuery().in(this).select(".hao-scroll").boundingClientRect((function(e){t.scrollInfo=e})).exec(),uni.createSelectorQuery().in(this).selectAll(".hao-eachTitle").boundingClientRect((function(e){t.listInfo=e})).exec()},listenScroll:function(t){var e=this,i=this.scrollInfo.top||t.target.offsetTop,s=t.detail.scrollTop,a=i+s;if(null!==this.currentCeiling){if(a>=this.listInfo[this.listInfo.length-1].top)return void(this.currentCeiling=this.listInfo.length-1);if(a>this.listInfo[this.currentCeiling].top&&a>this.listInfo[this.currentCeiling+1].top){var r=this.listInfo.slice(this.currentCeiling+1,this.listInfo.length),c=!0;return void r.some((function(t,i){a=t.top&&o&&(e.currentCeiling=e.currentCeiling-i-1,o=!1)}))}}else if(this.listInfo.length>0&&a>=this.listInfo[0].top&&a0&&a>this.listInfo[0].top&&a>this.listInfo[1].top){var d=!0;this.listInfo.some((function(t,i){a=e.indexFirstTT&&i<=e.indexLastBB){var s=i-e.indexFirstTT,a=s/e.afterConverHH,r=parseInt(a);a>r?(e.toastIndex=e.letters[r],e.isIndexGo&&(e.isIndexGo=!1,e.currentCeiling=r,e.scrollEachId="hao-"+e.letters[r],setTimeout((function(){e.toastIndex=""}),700))):(e.toastIndex=e.letters[r-1],e.isIndexGo&&(e.isIndexGo=!1,e.currentCeiling=r-1,e.scrollEachId="hao-"+e.letters[r-1],setTimeout((function(){e.toastIndex=""}),700)))}else e.toastIndex=""}e.isOk=!0}),100))},handleTouchEnd:function(t,e){var i=this;this.toastIndex&&(this.isOk?(this.scrollEachId="hao-"+this.toastIndex,this.currentCeiling=e,setTimeout((function(){i.toastIndex=""}),700)):this.isIndexGo=!0)}}};e.default=r}).call(this,i("f3b9")["default"])},a2dd:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this.$createElement,e=this._self._c||t;return e("view",{staticClass:this._$s(0,"sc","success-page"),attrs:{_i:0}},[e("custom-navbar",{attrs:{title:"\u652f\u4ed8\u6210\u529f",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),e("view",{staticClass:this._$s(2,"sc","success-content"),attrs:{_i:2}},[e("image",{staticClass:this._$s(3,"sc","success-icon"),attrs:{_i:3}}),e("text",{staticClass:this._$s(4,"sc","success-text"),attrs:{_i:4}})]),e("view",{staticClass:this._$s(5,"sc","btn-box"),attrs:{_i:5},on:{click:this.goToOrder}},[e("text",{staticClass:this._$s(6,"sc","btn-text"),attrs:{_i:6}})])],1)},r=[]},a30a:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("f409")),r=s(i("12f9")),c=s(i("8547")),n=(s(i("2cc0")),s(i("f123")),s(i("1ea2"))),o={name:"uv-text",emits:["click"],mixins:[r.default,c.default,a.default,n.default],computed:{valueStyle:function(){var t={textDecoration:this.decoration,fontWeight:this.bold?"bold":"normal",wordWrap:this.wordWrap,fontSize:this.$uv.addUnit(this.size)};return!this.type&&(t.color=this.color),this.isNvue&&this.lines&&(t.lines=this.lines),!this.isNvue||"price"==this.mode||this.prefixIcon||this.suffixIcon||(t.flex=1,t.textAlign="left"===this.align?"flex-start":"center"===this.align?"center":"right"),this.lineHeight&&(t.lineHeight=this.$uv.addUnit(this.lineHeight)),!this.isNvue&&this.block&&(t.display="block"),this.$uv.deepMerge(t,this.$uv.addStyle(this.customStyle))},isNvue:function(){return!1},isMp:function(){return!1}},data:function(){return{}},methods:{clickHandler:function(){this.call&&"phone"===this.mode&&uni.makePhoneCall({phoneNumber:this.text}),this.$emit("click")}}};e.default=o},a34e:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("6bf1")),o=s(i("f8df")),d={name:"list",components:{searchBox:n.default,CommonList:o.default},data:function(){return{queryData:{title:"",us_state:1},userInfo:{},artisanType:2,info:{1:{list:"/syr/serversSelf/list",name:"\u624b\u827a\u4eba",switch:"/syr/serversSelf/switch"},2:{list:"/sj/serversSelf/list",name:"\u5546\u5bb6",switch:"/sj/serversSelf/switch"}},statusBarHeight:0,tabs:[{id:1,name:"\u5df2\u4e0a\u67b6",content:"\u8fd9\u91cc\u662f\u300c\u5df2\u4e0a\u67b6\u300d\u5546\u54c1\u7684\u5185\u5bb9\u533a\u57df\uff0c\u53ef\u4ee5\u5c55\u793a\u5546\u54c1\u5217\u8868\u3001\u5e93\u5b58\u4fe1\u606f\u7b49\u3002"},{id:2,name:"\u5df2\u4e0b\u67b6",content:"\u8fd9\u91cc\u662f\u300c\u5df2\u4e0b\u67b6\u300d\u5546\u54c1\u7684\u5185\u5bb9\u533a\u57df\uff0c\u53ef\u4ee5\u5c55\u793a\u5386\u53f2\u5546\u54c1\u3001\u4e0b\u67b6\u539f\u56e0\u7b49\u3002"}]}},computed:{},onLoad:function(e){var i=this;return(0,r.default)(a.default.mark((function e(){var s,r;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return s=1==i.artisanType?2:2==i.artisanType?3:"",e.next=3,c.default.post("/user/getuser",{type:s});case 3:r=e.sent,i.userInfo=r.data,i.queryData.city=i.userInfo.dependency_city,i.queryData.province=i.userInfo.dependency_province,t("log",i.artisanType," at pages/selfOperated/list.vue:150"),i.statusBarHeight=i.getRpxStatusBarHeight(),i.$nextTick((function(){i.search()}));case 10:case"end":return e.stop()}}),e)})))()},methods:{handleService:function(t){var e=this;uni.showModal({title:"\u63d0\u793a",content:"\u786e\u5b9a\u8981".concat(1==t.us_state?"\u4e0b\u67b6":"\u4e0a\u67b6","\u8be5\u670d\u52a1\u5417\uff1f"),success:function(i){i.confirm&&c.default.post(e.info[e.artisanType].switch,{id:t.id,us_state:1==t.us_state?2:1}).then((function(t){200==t.code?(uni.showToast({title:"\u4e0b\u67b6\u6210\u529f",icon:"none"}),e.search()):uni.showToast({title:t.msg,icon:"none"})}))}})},search:function(){this.$refs.groupRef.manualRefresh(this.queryData)},switchTab:function(t){this.queryData.us_state=t,this.search()},openPop:function(){this.$refs.popup.open("center")},closePop:function(){this.$refs.popup.close()}}};e.default=d}).call(this,i("f3b9")["default"])},a3af:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("12f9")),n=s(i("8547")),o=s(i("778d")),d={name:"uv-tabbar",mixins:[c.default,n.default,o.default],data:function(){return{placeholderHeight:0}},computed:{tabbarStyle:function(){var t={zIndex:this.zIndex};return this.$uv.deepMerge(t,this.$uv.addStyle(this.customStyle))},updateChild:function(){return[this.value,this.activeColor,this.inactiveColor]},updatePlaceholder:function(){return[this.fixed,this.placeholder]}},watch:{updateChild:function(){this.updateChildren()},updatePlaceholder:function(){this.setPlaceholderHeight()}},created:function(){this.children=[]},mounted:function(){this.setPlaceholderHeight()},methods:{updateChildren:function(){this.children.length&&this.children.map((function(t){return t.updateFromParent()}))},setPlaceholderHeight:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t.fixed&&t.placeholder){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,t.$uv.sleep(20);case 4:t.$uvGetRect(".uv-tabbar__content").then((function(e){var i=e.height,s=void 0===i?50:i;t.placeholderHeight=s}));case 5:case"end":return e.stop()}}),e)})))()}}};e.default=d},a43d:function(t,e,i){"use strict";i.r(e);var s=i("aed8"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},a4eb:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$s(0,"i",t.show)?i("view",{staticClass:t._$s(0,"sc","tips-popup"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","mask"),attrs:{_i:1}}),i("view",{staticClass:t._$s(2,"sc","popup-content"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","popup-header"),attrs:{_i:3}},[i("text",{staticClass:t._$s(4,"sc","popup-title"),attrs:{_i:4}})]),i("view",{staticClass:t._$s(5,"sc","popup-body"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","rule-item"),attrs:{_i:6}},[i("text",{staticClass:t._$s(7,"sc","rule-text"),attrs:{_i:7}})])]),i("view",{staticClass:t._$s(8,"sc","btn_box"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","btn"),attrs:{_i:9},on:{click:t.goAdd}}),i("view",{staticClass:t._$s(10,"sc","btn"),attrs:{_i:10},on:{click:t.handleClose}})])])]):t._e()},a=[]},a533:function(t,e,i){"use strict";i.r(e);var s=i("ae8c"),a=i("3d39");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},a546:function(t,e,i){"use strict";i.r(e);var s=i("5751"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},a604:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:"object";if((0,c.empty)(t)||"object"===(0,r.default)(t)&&"object"===e||"string"===e&&"string"===typeof t)return t;if("object"===e){t=u(t);for(var i=t.split(";"),s={},a=0;a0&&void 0!==arguments[0]?arguments[0]:"auto",o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null!==(t=uni)&&void 0!==t&&null!==(e=t.$uv)&&void 0!==e&&null!==(i=e.config)&&void 0!==i&&i.unit?null===(s=uni)||void 0===s||null===(a=s.$uv)||void 0===a||null===(r=a.config)||void 0===r?void 0:r.unit:"px";return n=String(n),(0,c.number)(n)?"".concat(n).concat(o):n},e.deepClone=d,e.deepMerge=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e=d(e),"object"!==(0,r.default)(e)||null===e||"object"!==(0,r.default)(i)||null===i)return e;var s=Array.isArray(e)?e.slice():Object.assign({},e);for(var a in i)if(i.hasOwnProperty(a)){var c=i[a],n=s[a];c instanceof Date?s[a]=new Date(c):c instanceof RegExp?s[a]=new RegExp(c):c instanceof Map?s[a]=new Map(c):c instanceof Set?s[a]=new Set(c):"object"===(0,r.default)(c)&&null!==c?s[a]=t(n,c):s[a]=c}return s},e.error=function(t){0},e.formValidate=function(t,e){var i=o.call(t,"uv-form-item"),s=o.call(t,"uv-form");i&&s&&s.validateField(i.prop,(function(){}),e)},e.getDuration=function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=parseInt(t);if(e)return/s$/.test(t)?t:"".concat(t,t>30?"ms":"s");return/ms$/.test(t)?i:/s$/.test(t)?i>30?i:1e3*i:i},e.getHistoryPage=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=getCurrentPages(),i=e.length;return e[i-1+t]},e.getProperty=function(t,e){if(!t)return;if("string"!==typeof e||""===e)return"";if(-1!==e.indexOf(".")){for(var i=e.split("."),s=t[i[0]]||{},a=1;a1&&void 0!==arguments[1]&&arguments[1];if((0,c.number)(t))return e?"".concat(t,"px"):Number(t);if(/(rpx|upx)$/.test(t))return e?"".concat(uni.upx2px(parseInt(t)),"px"):Number(uni.upx2px(parseInt(t)));return e?"".concat(parseInt(t),"px"):parseInt(t)},e.guid=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:32,e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),a=[];if(i=i||s.length,t)for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".",s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:",";t="".concat(t).replace(/[^0-9+-Ee.]/g,"");var a=isFinite(+t)?+t:0,r=isFinite(+e)?Math.abs(e):0,c="undefined"===typeof s?",":s,o="undefined"===typeof i?".":i,d="";d=(r?(0,n.round)(a,r)+"":"".concat(Math.round(a))).split(".");var l=/(-?\d+)(\d{3})/;while(l.test(d[0]))d[0]=d[0].replace(l,"$1".concat(c,"$2"));(d[1]||"").length0&&void 0!==arguments[0]?arguments[0]:{},e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"brackets",s=e?"?":"",a=[];-1==["indices","brackets","repeat","comma"].indexOf(i)&&(i="brackets");var r=function(e){var s=t[e];if(["",void 0,null].indexOf(s)>=0)return"continue";if(s.constructor===Array)switch(i){case"indices":for(var r=0;r=0&&e>0&&e>=t){var i=e-t+1;return Math.floor(Math.random()*i+t)}return 0},e.randomArray=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return t.sort((function(){return Math.random()-.5}))},e.range=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return Math.max(t,Math.min(e,Number(i)))},e.setConfig=function(t){var e=t.props,i=void 0===e?{}:e,s=t.config,a=void 0===s?{}:s,r=t.color,c=void 0===r?{}:r,n=t.zIndex,o=void 0===n?{}:n,d=uni.$uv.deepMerge;uni.$uv.config=d(uni.$uv.config,a),uni.$uv.props=d(uni.$uv.props,i),uni.$uv.color=d(uni.$uv.color,c),uni.$uv.zIndex=d(uni.$uv.zIndex,o)},e.setProperty=function(t,e,i){if(!t)return;if("string"!==typeof e||""===e);else if(-1!==e.indexOf(".")){var s=e.split(".");(function t(e,i,s){if(1!==i.length)while(i.length>1){var a=i[0];e[a]&&"object"===(0,r.default)(e[a])||(e[a]={});i.shift();t(e[a],i,s)}else e[i[0]]=s})(t,s,i)}else t[e]=i},e.sleep=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:30;return new Promise((function(e){setTimeout((function(){e()}),t)}))},e.sys=function(){return uni.getSystemInfoSync()},e.timeFormat=l,e.timeFrom=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"yyyy-mm-dd";null==t&&(t=Number(new Date));t=parseInt(t),10==t.toString().length&&(t*=1e3);var i=(new Date).getTime()-t;i=parseInt(i/1e3);var s="";switch(!0){case i<300:s="\u521a\u521a";break;case i>=300&&i<3600:s="".concat(parseInt(i/60),"\u5206\u949f\u524d");break;case i>=3600&&i<86400:s="".concat(parseInt(i/3600),"\u5c0f\u65f6\u524d");break;case i>=86400&&i<2592e3:s="".concat(parseInt(i/86400),"\u5929\u524d");break;default:s=!1===e?i>=2592e3&&i<31536e3?"".concat(parseInt(i/2592e3),"\u4e2a\u6708\u524d"):"".concat(parseInt(i/31536e3),"\u5e74\u524d"):l(t,e)}return s},e.toast=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2e3;uni.showToast({title:String(t),icon:"none",duration:e})},e.trim=u,e.type2icon=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"success",e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];-1==["primary","info","error","warning","success"].indexOf(t)&&(t="success");var i="";switch(t){case"primary":i="info-circle";break;case"info":i="info-circle";break;case"error":i="close-circle";break;case"warning":i="error-circle";break;case"success":i="checkmark-circle";break;default:i="checkmark-circle"}e&&(i+="-fill");return i};var a=s(i("34cf")),r=s(i("3b2d")),c=i("fa2b"),n=i("64b72");function o(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this.$parent;while(e){if(!e.$options||e.$options.name===t)return e;e=e.$parent}return!1}function d(t){var e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakMap;if(null===t||"object"!==(0,r.default)(t))return t;if(i.has(t))return i.get(t);if(t instanceof Date)e=new Date(t.getTime());else if(t instanceof RegExp)e=new RegExp(t);else if(t instanceof Map)e=new Map(Array.from(t,(function(t){var e=(0,a.default)(t,2),s=e[0],r=e[1];return[s,d(r,i)]})));else if(t instanceof Set)e=new Set(Array.from(t,(function(t){return d(t,i)})));else if(Array.isArray(t))e=t.map((function(t){return d(t,i)}));else if("[object Object]"===Object.prototype.toString.call(t)){e=Object.create(Object.getPrototypeOf(t)),i.set(t,e);for(var s=0,c=Object.entries(t);s0&&void 0!==arguments[0]?arguments[0]:null,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"yyyy-mm-dd";t=e?/^\d{10}$/.test(null===e||void 0===e?void 0:e.toString().trim())?new Date(1e3*e):"string"===typeof e&&/^\d+$/.test(e.trim())?new Date(Number(e)):"string"===typeof e&&e.includes("-")&&!e.includes("T")?new Date(e.replace(/-/g,"/")):new Date(e):new Date;var s={y:t.getFullYear().toString(),m:(t.getMonth()+1).toString().padStart(2,"0"),d:t.getDate().toString().padStart(2,"0"),h:t.getHours().toString().padStart(2,"0"),M:t.getMinutes().toString().padStart(2,"0"),s:t.getSeconds().toString().padStart(2,"0")};for(var r in s){var c=new RegExp("".concat(r,"+")).exec(i)||[],n=(0,a.default)(c,1),o=n[0];if(o){var d="y"===r&&2===o.length?2:0;i=i.replace(o,s[r].slice(d))}}return i}function u(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"both";return t=String(t),"both"==e?t.replace(/^\s+|\s+$/g,""):"left"==e?t.replace(/^\s*/,""):"right"==e?t.replace(/(\s*$)/g,""):"all"==e?t.replace(/\s+/g,""):t}String.prototype.padStart||(String.prototype.padStart=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" ";if("[object String]"!==Object.prototype.toString.call(e))throw new TypeError("fillString must be String");var i=this;if(i.length>=t)return String(i);var s=t-i.length,a=Math.ceil(s/e.length);while(a>>=1)e+=e,1===a&&(e+=e);return e.slice(0,s)+i})},a721:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uvIcon:i("08d8").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","uv-radio"),class:t._$s(0,"c",["uv-radio-label--"+t.parentData.iconPlacement,t.parentData.borderBottom&&"column"===t.parentData.placement&&"uv-border-bottom"]),style:t._$s(0,"s",[t.radioStyle]),attrs:{_i:0},on:{click:function(e){return e.stopPropagation(),t.wrapperClickHandler(e)}}},[i("view",{staticClass:t._$s(1,"sc","uv-radio__icon-wrap"),class:t._$s(1,"c",t.iconClasses),style:t._$s(1,"s",[t.iconWrapStyle]),attrs:{_i:1},on:{click:function(e){return e.stopPropagation(),t.iconClickHandler(e)}}},[t._t("icon",[i("uv-icon",{staticClass:t._$s(3,"sc","uv-radio__icon-wrap__icon"),attrs:{name:"checkbox-mark",size:t.elIconSize,color:t.elIconColor,_i:3}})],{_i:2})],2),i("view",{staticClass:t._$s(4,"sc","uv-radio__label-wrap"),attrs:{_i:4},on:{click:function(e){return e.stopPropagation(),t.labelClickHandler(e)}}},[t._t("default",[i("text",{style:t._$s(6,"s",{color:t.elDisabled?t.elInactiveColor:t.elLabelColor,fontSize:t.elLabelSize,lineHeight:t.elLabelSize}),attrs:{_i:6}},[t._v(t._$s(6,"t0-0",t._s(t.label)))])],{_i:5})],2)])},r=[]},a788:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s=i("9466"),a={name:"lime-painter-text",mixins:[(0,s.children)("painter")],props:{type:{type:String,default:"text"},uid:String,css:[String,Object],text:[String,Number],replace:Object},data:function(){return{el:{css:{},text:null}}}};e.default=a},a7a3:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","class_select"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","classList"),attrs:{_i:1}},t._l(t._$s(2,"f",{forItems:t.classList}),(function(e,s,a,r){return i("view",{key:t._$s(2,"f",{forIndex:a,key:"2-"+r}),staticClass:t._$s("2-"+r,"sc","classItem"),attrs:{_i:"2-"+r},on:{click:function(i){return t.changeClass(e.id)}}},[i("image",{staticClass:t._$s("3-"+r,"sc","classIcon"),attrs:{src:t._$s("3-"+r,"a-src",e.photo),_i:"3-"+r}}),i("view",{staticClass:t._$s("4-"+r,"sc","text"),class:t._$s("4-"+r,"c",{activeText:e.id==t.classId}),attrs:{_i:"4-"+r}},[t._v(t._$s("4-"+r,"t0-0",t._s(e.title)))])])})),0),i("view",{staticClass:t._$s(5,"sc","secondClass"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","secondClassTitle"),attrs:{_i:6}}),i("view",{staticClass:t._$s(7,"sc","secondClassList"),attrs:{_i:7}},t._l(t._$s(8,"f",{forItems:t.secondClassList}),(function(e,s,a,r){return i("view",{key:t._$s(8,"f",{forIndex:a,key:"8-"+r}),staticClass:t._$s("8-"+r,"sc","secondClassItem"),class:t._$s("8-"+r,"c",{secondClassItemActive:t.secondClassId.includes(e.id)}),attrs:{_i:"8-"+r},on:{click:function(i){return t.changeSecondClass(e.id)}}},[t._v(t._$s("8-"+r,"t0-0",t._s(e.title)))])})),0)]),i("view",{staticClass:t._$s(9,"sc","tips"),attrs:{_i:9}},[i("text",{staticClass:t._$s(10,"sc","red"),attrs:{_i:10}}),i("text")]),i("view",{staticClass:t._$s(12,"sc","fixBottomBtn"),attrs:{_i:12}},[i("view",{staticClass:t._$s(13,"sc","btn"),attrs:{_i:13},on:{click:t.handleClose}})])])},a=[]},a818:function(t,e,i){"use strict";i.r(e);var s=i("0bcc"),a=i("41c8");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},a89d:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"tips-popup",props:{show:{type:Boolean,default:!1}},methods:{handleClose:function(){this.$emit("closePopup",!1)},goAdd:function(){this.$emit("closePopup",!1),this.$emit("okBtn",!1)}}};e.default=s},a8a2:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("af34")),r=s(i("7ca3")),c=i("4aa1");function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function o(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};t.duration&&(this.durationTime=t.duration),this.animation=(0,c.createAnimation)(Object.assign(this.config,t),this)},onClick:function(){this.$emit("click",{detail:this.isShow})},step:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.animation?(Object.keys(t).forEach((function(i){var s,r=t[i];"function"===typeof e.animation[i]&&(Array.isArray(r)?(s=e.animation)[i].apply(s,(0,a.default)(r)):e.animation[i](r))})),this.animation.step(i),this):this},run:function(t){this.animation&&this.animation.run(t)},open:function(){var t=this;clearTimeout(this.timer),this.isShow=!0,this.transform=this.styleInit(!1).transform||"",this.opacity=this.styleInit(!1).opacity||0,this.$nextTick((function(){t.timer=setTimeout((function(){t.animation=(0,c.createAnimation)(t.config,t),t.tranfromInit(!1).step(),t.animation.run((function(){t.transform="",t.opacity=t.styleInit(!1).opacity||1,t.$emit("change",{detail:t.isShow})}))}),80)}))},close:function(t){var e=this;this.animation&&this.tranfromInit(!0).step().run((function(){e.isShow=!1,e.animationData=null,e.animation=null;var t=e.styleInit(!1),i=t.opacity,s=t.transform;e.opacity=i||1,e.transform=s,e.$emit("change",{detail:e.isShow})}))},styleInit:function(t){var e=this,i={transform:"",opacity:1},s=function(t,s){var a=e.animationType(t)[s];s.startsWith("fade")?i.opacity=a:i.transform+=a+" "};return"string"===typeof this.modeClass?s(t,this.modeClass):this.modeClass.forEach((function(e){return s(t,e)})),i},tranfromInit:function(t){var e=this,i=function(t,i){var s=null;"fade"===i?s=t?0:1:(s=t?"-100%":"0","zoom-in"===i&&(s=t?.8:1),"zoom-out"===i&&(s=t?1.2:1),"slide-right"===i&&(s=t?"100%":"0"),"slide-bottom"===i&&(s=t?"100%":"0")),e.animation[e.animationMode()[i]](s)};return"string"===typeof this.modeClass?i(t,this.modeClass):this.modeClass.forEach((function(e){i(t,e)})),this.animation},animationType:function(t){return{fade:t?1:0,"slide-top":"translateY(".concat(t?"0":"-100%",")"),"slide-right":"translateX(".concat(t?"0":"100%",")"),"slide-bottom":"translateY(".concat(t?"0":"100%",")"),"slide-left":"translateX(".concat(t?"0":"-100%",")"),"zoom-in":"scaleX(".concat(t?1:.8,") scaleY(").concat(t?1:.8,")"),"zoom-out":"scaleX(".concat(t?1:1.2,") scaleY(").concat(t?1:1.2,")")}},animationMode:function(){return{fade:"opacity","slide-top":"translateY","slide-right":"translateX","slide-bottom":"translateY","slide-left":"translateX","zoom-in":"scale","zoom-out":"scale"}},toLine:function(t){return t.replace(/([A-Z])/g,"-$1").toLowerCase()}}};e.default=d},a8e4:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e1&&t.dataItem.state<5)?i("view",{staticClass:t._$s(14,"sc","button-group"),attrs:{_i:14}},[t._$s(15,"i",2==t.dataItem.state||3==t.dataItem.state)?i("view",{staticClass:t._$s(15,"sc","btn cancel-btn"),attrs:{_i:15},on:{click:function(e){return e.stopPropagation(),t.emitCancel(e)}}}):t._e(),t._$s(16,"i",2==t.dataItem.state)?i("view",{staticClass:t._$s(16,"sc","btn accept-btn"),attrs:{_i:16},on:{click:function(e){return e.stopPropagation(),t.emitAccept(e)}}}):t._e(),t._$s(17,"i",3==t.dataItem.state)?i("view",{staticClass:t._$s(17,"sc","btn accept-btn"),attrs:{_i:17},on:{click:function(e){return e.stopPropagation(),t.emitStart(e)}}}):t._e(),t._$s(18,"i",4==t.dataItem.state)?i("view",{staticClass:t._$s(18,"sc","btn accept-btn"),attrs:{_i:18},on:{click:function(e){return e.stopPropagation(),t.emitDone(e)}}}):t._e()]):t._e()])},a=[]},ad36:function(t,e,i){"use strict";i.r(e);var s=i("d75a"),a=i("ccfc");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"43746936",null,!1,s["a"],void 0);e["default"]=n.exports},ad84:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"serviceCodeInput",props:{show:{type:Boolean,default:!1},codeLength:{type:Number,default:6}},data:function(){return{inputValue:"",isFocus:!0,keyboardHeight:0,popBotom:0}},computed:{code:function(){return this.inputValue.split("").slice(0,this.codeLength)},currentIndex:function(){return this.inputValue.length}},watch:{},mounted:function(){},methods:{onInput:function(t){var e=t.detail.value.replace(/[^0-9]/g,"").slice(0,this.codeLength);this.inputValue=e,this.$emit("input",e),e.length===this.codeLength&&this.$emit("finish",e)},onFocus:function(t){this.isFocus=!0,this.inputValue=""},onkeyboardheightchange:function(t){this.popBotom=t.target.height||0},onBlur:function(){this.isFocus=!1},onConfirm:function(){this.inputValue.length===this.codeLength&&this.$emit("confirm",this.inputValue)},close:function(){this.$emit("close")}}};e.default=s},ad8c:function(t,e,i){"use strict";i.r(e);var s=i("2fb3"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},ada0:function(t,e,i){"use strict";i.r(e);var s=i("4dbc"),a=i("7689");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},adac:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("16bb")),r=s(i("a1a9"));function c(t,e){var i="undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=function(t,e){if(!t)return;if("string"===typeof t)return n(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);"Object"===i&&t.constructor&&(i=t.constructor.name);if("Map"===i||"Set"===i)return Array.from(t);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return n(t,e)}(t))||e&&t&&"number"===typeof t.length){i&&(t=i);var s=0,a=function(){};return{s:a,n:function(){return s>=t.length?{done:!0}:{done:!1,value:t[s++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,c=!0,o=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return c=t.done,t},e:function(t){o=!0,r=t},f:function(){try{c||null==i.return||i.return()}finally{if(o)throw r}}}}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i30){if(i<31)return void this.$nextTick((function(){t.numberValue=30}));uni.showToast({title:"\u4e0d\u80fd\u5927\u4e8e30%",icon:"none"})}else if(i<0){if(i>-1)return void this.$nextTick((function(){t.numberValue=0}));uni.showToast({title:"\u4e0d\u80fd\u5c0f\u4e8e0%",icon:"none"})}else this.$nextTick((function(){t.numberValue=i}))},changeInput:function(t,e){var i=parseInt(e.detail.value),s=Number(i);isNaN(s)&&(s=0),s>30?s=30:s<0&&(s=0),this.$nextTick((function(){t.numberValue=s}))},openModal:function(){this.$refs.modal.open()},closeModal:function(){this.$refs.modal.close()},estimate:function(e,i){if(e&&i){t("log","\u8ba1\u7b97\u7ed3\u679c\uff1a",e,i," at pages/promotion/setUpServe.vue:143");var s=Math.floor(e*i)/100;return t("log","\u8ba1\u7b97\u7ed3\u679c1\uff1a",s," at pages/promotion/setUpServe.vue:145"),t("log","\u8ba1\u7b97\u7ed3\u679c2\uff1a",s.toFixed(2)," at pages/promotion/setUpServe.vue:146"),s.toFixed(2)}return""},submit:function(){var e,i=this,s=[],r=c(this.selectedItems);try{for(r.s();!(e=r.n()).done;){var n=e.value;if(!n.numberValue)return void uni.showToast({title:"\u8bf7\u8bbe\u7f6e\u5b8c\u6210\u4f63\u91d1\u6bd4\u4f8b",icon:"none"});if(this.estimate(n.numberValue,n.server_price)<.01)return void uni.showToast({title:"\u9884\u4f30\u4f63\u91d1\u5fc5\u987b\u4e0d\u5f97\u5c0f\u4e8e0.01",icon:"none"});var o={};2==this.type&&(o.id=n.id),o.server_id=n.server_id||n.id,o.commission_rate=n.numberValue/100,s.push(o)}}catch(err){r.e(err)}finally{r.f()}var d={data:JSON.stringify(s)},l=this.apiObj.add[this.identityIndex];2==this.type&&(d={id:s[0].id,commission_rate:s[0].commission_rate},l=this.apiObj.edit[this.identityIndex]),this.clickType||(this.clickType=!0,a.default.post(l,d).then((function(e){if(t("log",e," at pages/promotion/setUpServe.vue:195"),200==e.code){var s=getCurrentPages();t("log",11111,s," at pages/promotion/setUpServe.vue:199");var a=3==i.type?s[s.length-3]:s[s.length-2];if(a){a.$vm&&"function"===typeof a.$vm.search&&a.$vm.search();var r=3==i.type?2:1;uni.navigateBack({delta:r})}}else uni.showToast({title:e.msg||"\u64cd\u4f5c\u5931\u8d25",icon:"none"})})).finally((function(){i.clickType=!1})))}}};e.default=o}).call(this,i("f3b9")["default"])},adc8:function(t,e,i){"use strict";i.r(e);var s=i("3f71"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},ae1c:function(t,e,i){"use strict";i.r(e);var s=i("fa44"),a=i("81ee");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"1570690e",null,!1,s["a"],void 0);e["default"]=n.exports},ae8c:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","homePage"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","home-navbar"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","home_info"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","home_info_left"),attrs:{_i:3}},[t._$s(4,"i",1==t.userInfo.id_type)?i("view",{staticClass:t._$s(4,"sc","home_info_left_text"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","nameText line-1"),attrs:{_i:5}},[t._v(t._$s(5,"t0-0",t._s(t.nameText)))]),i("view",{staticClass:t._$s(6,"sc","set_btn"),attrs:{_i:6},on:{click:t.goAcceptSet}})]):t._$s(7,"e",2==t.userInfo.id_type)?i("view",{staticClass:t._$s(7,"sc","home_info_left_text"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","nameText line-1"),attrs:{_i:8}},[t._v(t._$s(8,"t0-0",t._s(t.nameText)))]),i("view",{staticClass:t._$s(9,"sc","set_btn"),attrs:{_i:9},on:{click:t.goAcceptSet}})]):i("view",{staticClass:t._$s(10,"sc","home_info_left_text"),attrs:{_i:10}},[t._v(t._$s(10,"t0-0",t._s(t.nameText)))]),i("view",{staticClass:t._$s(11,"sc","home_info_left_tip"),attrs:{_i:11}},[t._v(t._$s(11,"t0-0",t._s(t.tipText)))])]),i("view",{staticClass:t._$s(12,"sc","home_info_right"),attrs:{_i:12}},[i("image",{staticClass:t._$s(13,"sc","home_info_right_img"),attrs:{_i:13}})])]),i("filters",{attrs:{isLogin:t.isLogin,selfState:t.userInfo.self_state,_i:14},on:{secondClassLength:function(e){return t.secondLength=e}}})],1),i("upload-app-vue",{attrs:{_i:15}}),i("TabBar",{attrs:{selected:0,_i:16}})],1)},a=[]},aed8:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n={data:function(){return{artisanType:getApp().globalData.artisanType,userInfo:{},state:[3,4,5,6,7],orderCount:0,servicesCount:0}},onLoad:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.getUserInfo();case 2:return e.next=4,t.getAllOrders();case 4:t.getServicesList();case 5:case"end":return e.stop()}}),e)})))()},onShow:function(){this.getUserInfo(),this.getAllOrders(),this.getServicesList()},methods:{goArtisanProfile:function(){uni.navigateTo({url:"/pages/artisan/profile"})},getUserInfo:function(){var t=this,e=1==this.artisanType?2:2==this.artisanType?3:1;c.default.post("/user/getuser",{type:e}).then((function(e){t.userInfo=e.data}))},getAllOrders:function(){var t=this;c.default.post("/user/syrandsjorders",{state:this.state,type:this.artisanType}).then((function(e){t.orderCount=e.count}))},getServicesList:function(){var t=this,e=null;1==getApp().globalData.artisanType?e="/user/syrserverlist":2==getApp().globalData.artisanType&&(e="/user/sjserverlist"),c.default.post(e,{state:2}).then((function(e){1==e.state?t.servicesCount=e.data.length:uni.showToast({title:e.msg,icon:"none"})}))},navigateTo:function(t){uni.navigateTo({url:t})}}};e.default=n},aefa:function(t,e,i){"use strict";i.r(e);var s=i("c040"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},af34:function(t,e,i){var s=i("a708"),a=i("b893"),r=i("6382"),c=i("9008");t.exports=function(t){return s(t)||a(t)||r(t)||c()},t.exports.__esModule=!0,t.exports["default"]=t.exports},af56:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","manage-alipay"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:t.customName.popTitle,showBack:!0,_i:1},on:{back:t.goBack}}),i("CommonList",{ref:"groupRef",attrs:{apiUrl:"/user/userCard/list",listScrollHeight:"calc(100vh - "+(2*t.statusBarHeight+280)+"rpx)",_i:2},scopedSlots:t._u([{key:"listData",fn:function(e,s,a){var r=e.list;return[i("view",{staticClass:s._$s("4-"+a,"sc","account-list"),attrs:{_i:"4-"+a}},t._l(s._$s("5-"+a,"f",{forItems:r}),(function(e,r,c,n){return i("view",{key:s._$s("5-"+a,"f",{forIndex:c,key:r}),staticClass:s._$s("5-"+a+n,"sc","account-card"),attrs:{_i:"5-"+a+n}},[t._l(s._$s("6-"+a+"-"+n,"f",{forItems:t.accountFormItems}),(function(r,c,o,d){return i("view",{key:s._$s("6-"+a+"-"+n,"f",{forIndex:o,key:"6-"+a+"-"+n+"-"+d}),staticClass:s._$s("6-"+a+n+"-"+d,"sc","form-item"),attrs:{_i:"6-"+a+n+"-"+d},on:{click:function(i){return t.selectAccount(e)}}},[i("text",{staticClass:s._$s("7-"+a+n+"-"+d,"sc","label"),attrs:{_i:"7-"+a+n+"-"+d}},[t._v(s._$s("7-"+a+n+"-"+d,"t0-0",t._s(r.label)))]),i("text",{staticClass:s._$s("8-"+a+n+"-"+d,"sc","value"),attrs:{_i:"8-"+a+n+"-"+d}},[t._v(s._$s("8-"+a+n+"-"+d,"t0-0",t._s(e[r.value])))])])})),i("view",{staticClass:s._$s("9-"+a+n,"sc","bottom-row"),attrs:{_i:"9-"+a+n}},[i("view",{staticClass:s._$s("10-"+a+n,"sc","default-wrapper"),attrs:{_i:"10-"+a+n},on:{click:function(i){return i.stopPropagation(),t.setDefault(e.id)}}},[i("view",{staticStyle:{display:"flex","align-items":"center"},attrs:{_i:"11-"+a+n}},[s._$s("12-"+a+n,"i",e.is_default)?i("image",{staticClass:s._$s("12-"+a+n,"sc","default-wrapper-img"),attrs:{src:"/static/images/wallet/default_yes.png",_i:"12-"+a+n}}):i("image",{staticClass:s._$s("13-"+n,"sc","default-wrapper-img"),attrs:{src:"/static/images/wallet/default.png",_i:"13-"+n}}),i("text",{staticClass:s._$s("14-"+a+n,"sc","default-text"),attrs:{_i:"14-"+a+n}},[t._v("\u8bbe\u4e3a\u9ed8\u8ba4")])]),i("view",{staticClass:s._$s("15-"+a+n,"sc","btn-group"),attrs:{_i:"15-"+a+n}},[i("view",{staticClass:s._$s("16-"+a+n,"sc","edit"),attrs:{_i:"16-"+a+n},on:{click:function(i){return i.stopPropagation(),t.editAccount(e)}}},[t._v("\u4fee\u6539")]),i("view",{staticClass:s._$s("17-"+a+n,"sc","delete"),attrs:{_i:"17-"+a+n},on:{click:function(i){return i.stopPropagation(),t.deleteAccount(e)}}},[t._v("\u5220\u9664")])])])])],2)})),0)]}},{key:"empty",fn:function(t,e,s){return[i("noData",{attrs:{_i:"19-"+s}})]}}])}),i("view",{staticClass:t._$s(20,"sc","button"),attrs:{_i:20},on:{click:t.goAdd}},[i("view",{staticClass:t._$s(21,"sc","button-btn"),attrs:{_i:21}},[t._v(t._$s(21,"t0-0",t._s(t.customName.btnText)))])])],1)},r=[]},afed:function(t,e,i){"use strict";i.r(e);var s=i("1e2a"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},b054:function(t,e,i){"use strict";i.r(e);var s=i("6711"),a=i("96a6");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"8fcb0176",null,!1,s["a"],void 0);e["default"]=n.exports},b07a:function(t,e,i){"use strict";i.r(e);var s=i("5324"),a=i("aa99");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"3b9ea4d4",null,!1,s["a"],void 0);e["default"]=n.exports},b0e4:function(t,e){var i={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==i.call(t)}},b0f0:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,agreeRadio:i("a6d8").default,tipsPopup:i("804d").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","withdraw-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u63d0\u73b0","show-back":!0,backgroundColor:"#fff",_i:1}}),i("view",{staticClass:t._$s(2,"sc","amount-section"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","amount-header"),attrs:{_i:3}},[i("text",{staticClass:t._$s(4,"sc","amount-title"),attrs:{_i:4}})]),i("view",{staticClass:t._$s(5,"sc","input-box"),attrs:{_i:5}},[i("text",{staticClass:t._$s(6,"sc","currency"),attrs:{_i:6}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.withdrawAmount,expression:"withdrawAmount"}],staticClass:t._$s(7,"sc","money-inp"),attrs:{placeholder:t._$s(7,"a-placeholder","\u8d26\u6237\u4f59\u989d"+t.balance),_i:7},domProps:{value:t._$s(7,"v-model",t.withdrawAmount)},on:{input:[function(e){e.target.composing||(t.withdrawAmount=e.target.value)},t.handleAmountInput]}})]),i("view",{staticClass:t._$s(8,"sc","tips-box"),attrs:{_i:8}},[i("text",{staticClass:t._$s(9,"sc","fee-tips"),attrs:{_i:9}})])]),i("view",{staticClass:t._$s(10,"sc","method-section"),attrs:{_i:10}},[i("text",{staticClass:t._$s(11,"sc","method-title"),attrs:{_i:11}}),i("view",{staticClass:t._$s(12,"sc","method-list"),attrs:{_i:12}},t._l(t._$s(13,"f",{forItems:t.methodList}),(function(e,s,a,r){return i("view",{key:t._$s(13,"f",{forIndex:a,key:e.id}),attrs:{_i:"13-"+r},on:{click:function(i){return t.selectMethod(e)}}},[i("view",{staticClass:t._$s("14-"+r,"sc","method-item"),attrs:{_i:"14-"+r}},[i("view",{staticClass:t._$s("15-"+r,"sc","method-info"),attrs:{_i:"15-"+r}},[i("image",{staticClass:t._$s("16-"+r,"sc","method-icon"),attrs:{src:t._$s("16-"+r,"a-src",e.icon),_i:"16-"+r}}),i("text",{staticClass:t._$s("17-"+r,"sc","method-name"),attrs:{_i:"17-"+r}},[t._v(t._$s("17-"+r,"t0-0",t._s(e.name)))])]),i("agree-radio",{attrs:{isAgree:e.selected,_i:"18-"+r}})],1),t._$s("19-"+r,"i",e.selected)?i("view",{staticClass:t._$s("19-"+r,"sc","ali-info"),attrs:{_i:"19-"+r}},[i("view",{staticClass:t._$s("20-"+r,"sc","info-item"),attrs:{_i:"20-"+r}},[i("text",{staticClass:t._$s("21-"+r,"sc","info-lable required"),attrs:{_i:"21-"+r}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.aliWallet.name,expression:"aliWallet.name"}],staticClass:t._$s("22-"+r,"sc","info-inp"),attrs:{_i:"22-"+r},domProps:{value:t._$s("22-"+r,"v-model",t.aliWallet.name)},on:{input:function(e){e.target.composing||t.$set(t.aliWallet,"name",e.target.value)}}})]),i("view",{staticClass:t._$s("23-"+r,"sc","info-item"),attrs:{_i:"23-"+r}},[i("text",{staticClass:t._$s("24-"+r,"sc","info-lable required"),attrs:{_i:"24-"+r}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.aliWallet.id,expression:"aliWallet.id"}],staticClass:t._$s("25-"+r,"sc","info-inp"),attrs:{_i:"25-"+r},domProps:{value:t._$s("25-"+r,"v-model",t.aliWallet.id)},on:{input:function(e){e.target.composing||t.$set(t.aliWallet,"id",e.target.value)}}})]),i("view",{staticClass:t._$s("26-"+r,"sc","info-item"),attrs:{_i:"26-"+r}},[i("text",{staticClass:t._$s("27-"+r,"sc","info-lable required"),attrs:{_i:"27-"+r}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.aliWallet.account,expression:"aliWallet.account"}],staticClass:t._$s("28-"+r,"sc","info-inp"),attrs:{_i:"28-"+r},domProps:{value:t._$s("28-"+r,"v-model",t.aliWallet.account)},on:{input:function(e){e.target.composing||t.$set(t.aliWallet,"account",e.target.value)}}})])]):t._e()])})),0)]),i("view",{staticClass:t._$s(29,"sc","fixed-box"),attrs:{_i:29}},[i("view",{staticClass:t._$s(30,"sc","agreement"),attrs:{_i:30}},[i("agree-radio",{attrs:{isAgree:t.isAgreeProtocol,_i:31},on:{"change-agree":t.changeAgree}}),i("text",{staticClass:t._$s(32,"sc","agreement-text"),attrs:{_i:32}}),i("text",{staticClass:t._$s(33,"sc","protocol-link"),attrs:{_i:33},on:{click:function(e){return t.viewProtocol(5)}}})],1),i("view",{staticClass:t._$s(34,"sc","fixed-btn"),class:t._$s(34,"c",{"submit-btn-disabled":!t.canSubmit}),attrs:{_i:34},on:{click:t.handleWithdraw}},[i("text",{staticClass:t._$s(35,"sc","fixed-text"),attrs:{_i:35}})])]),i("tips-popup",{attrs:{show:t.showTipsFlag,_i:36},on:{"close-popup":t.closePopup}})],1)},r=[]},b104:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","class_select"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","classList"),attrs:{_i:1}},t._l(t._$s(2,"f",{forItems:t.classList}),(function(e,s,a,r){return i("view",{key:t._$s(2,"f",{forIndex:a,key:"2-"+r}),staticClass:t._$s("2-"+r,"sc","classItem"),attrs:{_i:"2-"+r},on:{click:function(i){return t.changeClass(e.id)}}},[i("image",{staticClass:t._$s("3-"+r,"sc","classIcon"),attrs:{src:t._$s("3-"+r,"a-src",e.photo),_i:"3-"+r}}),i("view",{staticClass:t._$s("4-"+r,"sc","text"),class:t._$s("4-"+r,"c",{activeText:e.id==t.classId}),attrs:{_i:"4-"+r}},[t._v(t._$s("4-"+r,"t0-0",t._s(e.title)))])])})),0),i("view",{staticClass:t._$s(5,"sc","secondClass"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","secondClassTitle"),attrs:{_i:6}}),i("view",{staticClass:t._$s(7,"sc","secondClassList"),attrs:{_i:7}},t._l(t._$s(8,"f",{forItems:t.secondClassList}),(function(e,s,a,r){return i("view",{key:t._$s(8,"f",{forIndex:a,key:"8-"+r}),staticClass:t._$s("8-"+r,"sc","secondClassItem"),class:t._$s("8-"+r,"c",{secondClassItemActive:t.secondClassId.includes(e.id)}),attrs:{_i:"8-"+r},on:{click:function(i){return t.changeSecondClass(e.id)}}},[t._v(t._$s("8-"+r,"t0-0",t._s(e.title)))])})),0)]),i("view",{staticClass:t._$s(9,"sc","tips"),attrs:{_i:9}},[i("text",{staticClass:t._$s(10,"sc","red"),attrs:{_i:10}}),i("text")]),i("view",{staticClass:t._$s(12,"sc","fixBottomBtn"),attrs:{_i:12}},[i("view",{staticClass:t._$s(13,"sc","btn"),attrs:{_i:13},on:{click:t.handleClose}})])])},a=[]},b1d7:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c=s(i("07f4")),n=i("eb34"),o={name:"uv-count-down",mixins:[a.default,r.default,c.default],data:function(){return{timer:null,timeData:(0,n.parseTimeData)(0),formattedTime:"0",runing:!1,endTime:0,remainTime:0}},watch:{time:function(t){this.reset()}},mounted:function(){this.init()},methods:{init:function(){this.reset()},start:function(){this.runing||(this.runing=!0,this.endTime=Date.now()+this.remainTime,this.toTick())},toTick:function(){this.millisecond?this.microTick():this.macroTick()},macroTick:function(){var t=this;this.clearTimeout(),this.timer=setTimeout((function(){var e=t.getRemainTime();(0,n.isSameSecond)(e,t.remainTime)&&0!==e||t.setRemainTime(e),0!==t.remainTime&&t.macroTick()}),30)},microTick:function(){var t=this;this.clearTimeout(),this.timer=setTimeout((function(){t.setRemainTime(t.getRemainTime()),0!==t.remainTime&&t.microTick()}),50)},getRemainTime:function(){return Math.max(this.endTime-Date.now(),0)},setRemainTime:function(t){this.remainTime=t;var e=(0,n.parseTimeData)(t);this.$emit("change",e),this.formattedTime=(0,n.parseFormat)(this.format,e),t<=0&&(this.pause(),this.$emit("finish"))},reset:function(){this.pause(),this.remainTime=this.time,this.setRemainTime(this.remainTime),this.autoStart&&this.start()},pause:function(){this.runing=!1,this.clearTimeout()},clearTimeout:function(t){function e(){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(){clearTimeout(this.timer),this.timer=null}))},beforeDestroy:function(){this.clearTimeout()}};e.default=o},b2fb:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",[i("custom-navbar",{attrs:{title:"\u9884\u7ea6\u5230\u5bb6",leftImg:"/static/images/whiteBack.png",showUser:!0,backgroundColor:"linear-gradient( 134deg, #F52540 0%, #E8101E 100%)",titleColor:"#fff",borderBottom:"none",_i:1}}),i("searchBox",{attrs:{placeholder:"\u641c\u7d22\u624b\u827a\u4eba\u540d\u79f0",_i:2},on:{confirm:t.searchConfrim,search:t.searchConfrim},model:{value:t._$s(2,"v-model",t.queryData.title),callback:function(e){t.$set(t.queryData,"title",e)},expression:"queryData.title"}}),i("serviecFirstTab",{attrs:{tabs:t.tabs,activeId:t.activeId,activeColor:"#E8101E",bgColor:"#fff",_i:3},on:{"tab-click":t.tabClick}}),i("CommonList",{ref:"groupRef",attrs:{apiUrl:"/user/getSearchList",initialQuery:t.queryData,listScrollHeight:"calc(100vh - "+(2*t.statusBarHeight+350)+"rpx)",_i:4},scopedSlots:t._u([{key:"listData",fn:function(t,e,s){var a=t.list;return[i("syrCardList",{attrs:{list:a,btnText:"\u53bb\u9884\u7ea6",_i:"6-"+s}})]}},{key:"empty",fn:function(t,e,s){return[i("noData",{attrs:{_i:"8-"+s}})]}}])})],1)},r=[]},b32f:function(t,e,i){"use strict";i.r(e);var s=i("d8cc"),a=i("bce8");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"135fd854",null,!1,s["a"],void 0);e["default"]=n.exports},b339:function(t,e,i){"use strict";i.r(e);var s=i("44b6"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},b3e7:function(t,e,i){"use strict";i.r(e);var s=i("a721"),a=i("e1ae");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"6b8cd97d",null,!1,s["a"],void 0);e["default"]=n.exports},b42f:function(t,e,i){"use strict";i.r(e);var s=i("2320"),a=i("be69");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},b466:function(t,e,i){"use strict";i.r(e);var s=i("62af"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},b4ce:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=i("c3e2"),n=s(i("16bb")),o=s(i("cd5a")),d=s(i("32a4")),l=s(i("91d2")),u={components:{},data:function(){return{serviceType:1,urls:{1:{cancelorder:"/user/cancelorder",deleteorder:"/user/deleteorder"},2:{cancelorder:"/user/orderSelf/cancel",deleteorder:"/user/orderSelf/del"}},path:"",shareImg:"",scrollTop:0,timeData:{},isShowPer:!1,id:"",staffInfo:{avatar:"/static/images/staff.jpg",name:"\u4e2d\u533b\u7406\u7597\u8c22\u98de",rating:5},orderInfo:{},distance:"",user_syr:{},reservation_address_arr:{}}},onLoad:function(t){this.id=t.id,t.serviceType&&(this.serviceType=t.serviceType),this.getOrderDetail()},onPageScroll:function(t){this.scrollTop=t.scrollTop},computed:{backgroundColor:function(){return this.scrollTop>10?"rgba(255, 255, 255, ".concat(.02*this.scrollTop,");"):"transparent"},getGroupType:function(){var t,e=this,i=null===(t=[{id:1,text:"\u62fc\u56e2\u4e2d"},{id:2,text:"\u5df2\u6210\u56e2"},{id:3,text:"\u62fc\u56e2\u5931\u8d25"}].find((function(t){var i;return t.id==(null===(i=e.orderInfo)||void 0===i?void 0:i.team_buy_order_state)})))||void 0===t?void 0:t.text;return i},stateItem:function(){var t=this,e=[{text:"\u5f85\u652f\u4ed8",icon:"/static/images/evaluate/pay.png",state:"1"},{text:"\u5f85\u63a5\u5355",icon:"/static/images/evaluate/pending.png",state:"2"},{text:0==this.identity?"\u5f85\u5f00\u59cb":"\u5f85\u670d\u52a1",icon:"/static/images/evaluate/pendingService.png",state:"3"},{text:0==this.identity?"\u8fdb\u884c\u4e2d":"\u670d\u52a1\u4e2d",icon:"/static/images/evaluate/pendingService.png",state:"4"},{text:"\u5df2\u5b8c\u6210",icon:"/static/images/evaluate/payOk.png",state:"5"},{text:"\u5f85\u8bc4\u4ef7",icon:"/static/images/icons/pending.png",state:"6"},{text:"\u5df2\u53d6\u6d88",icon:"/static/images/evaluate/cancel.png",state:"7"}],i=e.find((function(e){return e.state==t.orderInfo.state}))||{};return i}},methods:{goInvite:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s,n,o;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:o="",1==(null===(s=e.orderInfo)||void 0===s?void 0:s.team_buy_order_state)?o="\u6211\u53d1\u8d77\u4e86".concat(e.orderInfo.team_buy.person_num,"\u4eba\u56e2\uff0c\u62fc\u5355\u7acb\u7701").concat(e.formatPriceNumber(e.orderInfo.cost_money-e.orderInfo.order_money),"\u5143\uff0c\u4e00\u8d77\u62fc\u66f4\u4fbf\u5b9c"):2==(null===(n=e.orderInfo)||void 0===n?void 0:n.team_buy_order_state)&&(o=" \u6211\u53c2\u52a0\u4e86".concat(e.orderInfo.team_buy.person_num,"\u4eba\u56e2\uff0c\u7701\u4e86").concat(e.formatPriceNumber(e.orderInfo.cost_money-e.orderInfo.order_money),"\u5143\uff0c\u4f60\u4e5f\u6765\u770b\u770b\u5427")),e.$refs.painter.canvasToTempFilePathSync({fileType:"jpg",pathType:"url",quality:1,success:function(){var i=(0,r.default)(a.default.mark((function i(s){var r,n;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return r="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40",i.prev=1,i.next=4,(0,c.handleImgSizeUni)(s.tempFilePath);case 4:n=i.sent,t("log","\u5904\u7406\u540e\u7684\u56fe\u7247\u5730\u5740\uff1a",n," at pages/order/userorder-detail.vue:437"),r=n,i.next=12;break;case 9:i.prev=9,i.t0=i["catch"](1),t("error","\u5904\u7406\u5931\u8d25\uff1a",i.t0," at pages/order/userorder-detail.vue:441");case 12:uni.share({provider:"weixin",scene:"WXSceneSession",type:5,title:o,miniProgram:{id:"gh_89c92e18b70b",path:"/subPackages/groupBuy/detail?id=".concat(e.orderInfo.server_id),type:e.$store.state.wxShareType,webUrl:"https://www.baidu.com/"},imageUrl:r,success:function(e){t("log","success:"+JSON.stringify(e)," at pages/order/userorder-detail.vue:457")},fail:function(e){uni.share({provider:"weixin",scene:"WXSceneSession",type:5,title:o,miniProgram:{id:"gh_89c92e18b70b",path:"/subPackages/groupBuy/detail?id=".concat(this.orderInfo.server_id),type:this.$store.state.wxShareType,webUrl:"https://www.baidu.com/"},imageUrl:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40",success:function(e){t("log","success:"+JSON.stringify(e)," at pages/order/userorder-detail.vue:474")}})}});case 13:case"end":return i.stop()}}),i,null,[[1,9]])})));return function(t){return i.apply(this,arguments)}}()});case 3:case"end":return i.stop()}}),i)})))()},onChange:function(t){this.timeData=t},onFinish:function(e){t("log","\u7ed3\u675f"," at pages/order/userorder-detail.vue:488"),1==this.orderInfo.team_buy_order_state&&(this.orderInfo.state=7,this.orderInfo.team_buy_order_state=3)},goEvaluateDetail:function(){uni.navigateTo({url:"/pages/evaluate/evaluationDetails?order_id=".concat(this.id,"&order_type=1")})},getOrderDetail:function(){var e=this,i="/user/orderdetail";2==this.serviceType&&(i="/user/orderSelf/details"),n.default.post(i,{id:this.id}).then((function(i){var s,a,r;e.orderInfo=i.data,e.user_syr=i.data.user_syr,e.user_sj=i.data.user_sj,e.reservation_address_arr=i.data.reservation_address_arr,t("log",e.orderInfo," at pages/order/userorder-detail.vue:516"),0==(null===(s=e.orderInfo)||void 0===s||null===(a=s.team_buy)||void 0===a?void 0:a.remain_time)&&1==(null===(r=e.orderInfo)||void 0===r?void 0:r.team_buy_order_state)&&(e.orderInfo.state=7,e.orderInfo.team_buy_order_state),2==e.orderInfo.order_kind&&(e.distance=o.default.calcDistance(e.user_sj.latitude,e.user_sj.longitude,getApp().globalData.latitude,getApp().globalData.longitude))}))},showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))},makeCall:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r,c,n,o;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(s=uni.getSystemInfoSync(),"ios"!==s.platform){i.next=5;break}uni.makePhoneCall({phoneNumber:e.orderInfo.customer.phone}),i.next=32;break;case 5:return"","ios"===s.platform?"phone":"android.permission.CALL_PHONE",e.isShowPer=!0,i.next=10,l.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 10:if(r=i.sent,c=r.granted,!c){i.next=15;break}return uni.makePhoneCall({phoneNumber:e.orderInfo.customer.phone}),i.abrupt("return");case 15:return e.isShowPer=!1,i.next=18,e.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 18:if(n=i.sent,n){i.next=21;break}return i.abrupt("return");case 21:return i.next=23,l.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 23:if(o=i.sent,t("log","result",o," at pages/order/userorder-detail.vue:590"),!o){i.next=30;break}return uni.makePhoneCall({phoneNumber:e.orderInfo.customer.phone}),i.abrupt("return");case 30:return d.default.openAppSettings(),i.abrupt("return");case 32:case"end":return i.stop()}}),i)})))()},contactService:function(e){var i=this;return(0,r.default)(a.default.mark((function s(){var r,c,n,o,u;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(r=uni.getSystemInfoSync(),"ios"!==r.platform){s.next=5;break}uni.makePhoneCall({phoneNumber:e}),s.next=33;break;case 5:return"","ios"===r.platform?"phone":"android.permission.CALL_PHONE",i.isShowPer=!0,s.next=10,l.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 10:if(c=s.sent,n=c.granted,!n){s.next=16;break}return uni.makePhoneCall({phoneNumber:e}),i.isShowPer=!1,s.abrupt("return");case 16:return i.isShowPer=!1,s.next=19,i.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 19:if(o=s.sent,o){s.next=22;break}return s.abrupt("return");case 22:return s.next=24,l.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 24:if(u=s.sent,t("log","result",u," at pages/order/userorder-detail.vue:659"),!u){s.next=31;break}return uni.makePhoneCall({phoneNumber:e}),s.abrupt("return");case 31:return d.default.openAppSettings(),s.abrupt("return");case 33:case"end":return s.stop()}}),s)})))()},cancelService:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return s="",i.next=3,n.default.post("/user/getuser",{type:1}).then((function(e){t("log",e," at pages/order/userorder-detail.vue:680"),s=e.data.id}));case 3:uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f",success:function(i){if(i.confirm){var a={orderNo:e.orderInfo.number,amount:e.orderInfo.pay_money,cancel_state:1,cancel_id:s};n.default.post(e.urls[e.serviceType].cancelorder,a).then((function(t){1==t.state||200==t.code?(uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),e.getOrderDetail()):uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){t("log",e," at pages/order/userorder-detail.vue:712")}))}}});case 4:case"end":return i.stop()}}),i)})))()},refoundService:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return s="",i.next=3,n.default.post("/user/getuser",{type:1}).then((function(t){s=t.data.id}));case 3:uni.showModal({title:"\u7533\u8bf7\u9000\u6b3e",content:"\u786e\u5b9a\u7533\u8bf7\u9000\u6b3e\uff1f\u9000\u6b3e\u540e\u5219\u8ba2\u5355\u53d6\u6d88\uff01",success:function(i){if(i.confirm){var a={orderNo:e.orderInfo.number,amount:e.orderInfo.pay_money,cancel_id:s},r="";1==e.orderInfo.pay_kind?r="/user/cancelbalance":2==e.orderInfo.pay_kind?r="/user/wechatrefund":3==e.orderInfo.pay_kind&&(r="/user/alirefund"),n.default.post(r,a).then((function(i){t("log","\u7533\u8bf7\u9000\u6b3e\u63a5\u53e3",i," at pages/order/userorder-detail.vue:751"),uni.showToast({title:"\u7533\u8bf7\u9000\u6b3e\u6210\u529f\uff01",icon:"none"}),e.orderInfo={},e.getOrderDetail()})).catch((function(e){t("log",e," at pages/order/userorder-detail.vue:760")}))}}});case 4:case"end":return i.stop()}}),i)})))()},payOrder:function(){"order_self"==this.orderInfo.table_source?uni.navigateTo({url:"/pages/order/pay?id=".concat(this.orderInfo.id,"&money=").concat(this.orderInfo.order_money,"&title=").concat(this.orderInfo.server_title,"&number=").concat(this.orderInfo.number,"&table_source=order_self")}):uni.navigateTo({url:"/pages/order/pay?id=".concat(this.orderInfo.id,"&money=").concat(this.orderInfo.order_money,"&title=").concat(this.orderInfo.server_title,"&number=").concat(this.orderInfo.number)})},reviewOrder:function(){uni.navigateTo({url:"/pages/evaluate/comment?id=".concat(this.orderInfo.id,"&evaluator_type=3&order_type=1&order_kind=").concat(this.orderInfo.order_kind)})},orderAgain:function(){uni.navigateTo({url:"/pages/service/detail?id="+this.orderInfo.server_id})},openMap:function(){o.default.goMap({latitude:parseFloat(this.user_sj.latitude),longitude:parseFloat(this.user_sj.longitude),name:this.user_sj.name,address:this.user_sj.address})}}};e.default=u}).call(this,i("f3b9")["default"])},b517:function(t,e,i){"use strict";i.r(e);var s=i("d296"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},b542:function(t,e,i){"use strict";i.r(e);var s=i("e739"),a=i("079d");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},b544:function(t,e,i){"use strict";i.r(e);var s=i("95de"),a=i("a211");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},b586:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;s(i("16bb"));var a=s(i("0751")),r=s(i("f8df")),c={name:"effect",data:function(){return{timeList:[],listQuery:{},apiObj:{effect:{2:"/sj/serversPromotion/promotionEffect",1:"/syr/serversPromotion/promotionEffect"}},identityIndex:2,orders:[{orderNo:"M233448656770000123456",imgUrl:"https://p3-flow-imagex-sign.byteimg.com/tos-cn-i-a9rns2rl98/d1e9d7f08119492eb09a3d5c4c57501e.png~tplv-a9rns2rl98-24:720:720.jpeg?rcl=20251107141120721CF58B043A61780C8D&rk3s=8e244e95&rrcfp=d52e923b&x-expires=1763100680&x-signature=mZIqELwlIogxW0rc95Q0YbPqmvQ%3D",serviceName:"\u6df1\u6c89\u6e05\u6d01\u4e09\u90e8\u66f2",createTime:"2025-08-09 12:12:00",status:"\u5df2\u4ed8\u6b3e",paidAmount:"\xa5100.99",commissionRate:"6.4%",estimatedCommission:"\xa512.34"},{orderNo:"M233448656770000123456",imgUrl:"https://p3-flow-imagex-sign.byteimg.com/tos-cn-i-a9rns2rl98/d1e9d7f08119492eb09a3d5c4c57501e.png~tplv-a9rns2rl98-24:720:720.jpeg?rcl=20251107141120721CF58B043A61780C8D&rk3s=8e244e95&rrcfp=d52e923b&x-expires=1763100680&x-signature=mZIqELwlIogxW0rc95Q0YbPqmvQ%3D",serviceName:"\u4ea7\u540e\u76c6\u5e95\u808c\u8179\u76f4\u808c\u4fee\u590d",createTime:"2025-07-23 12:12:00",status:"\u5df2\u9000\u6b3e",paidAmount:"\xa59100.99",commissionRate:"1.4%",estimatedCommission:"\xa5112.99"}]}},components:{selectActiveTime:a.default,CommonList:r.default},onLoad:function(t){var e=this,i=uni.getSystemInfoSync();this.statusBarHeight=i.statusBarHeight,t.id&&this.identityIndex&&(this.listQuery.id=t.id,this.$nextTick((function(){e.search()})))},methods:{timeChange:function(e){var i=this;t("log",e," at pages/promotion/effect.vue:119"),e[0]&&(this.listQuery.start_time=e[0]),e[1]&&(this.listQuery.end_time=e[1]),this.$nextTick((function(){i.search()}))},copyOrderNo:function(t){uni.setClipboardData({data:t,success:function(){uni.showToast({title:"\u590d\u5236\u6210\u529f",icon:"none"})}})},percentage:function(t){var e=(100*t).toFixed(1);return"".concat(e,"%")},search:function(){this.$refs.groupRef.manualRefresh(this.listQuery)},getDescriptionByNumber:function(t){var e={1:"\u5df2\u4ed8\u6b3e",2:"\u5df2\u4ed8\u6b3e",3:"\u5df2\u4ed8\u6b3e ",4:"\u5df2\u4ed8\u6b3e",5:"\u5df2\u4ed8\u6b3e ",6:"\u5df2\u4ed8\u6b3e",7:"\u5df2\u9000\u6b3e"};return"number"===typeof t&&e.hasOwnProperty(t)?e[t]:"\u672a\u77e5\u7c7b\u578b"}}};e.default=c}).call(this,i("f3b9")["default"])},b588:function(t,e,i){"use strict";i.r(e);var s=i("2d95"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},b5c0:function(t,e,i){"use strict";i.r(e);var s=i("d60b"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},b5f7:function(t,e,i){"use strict";i.r(e);var s=i("bf4e"),a=i("8af8");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},b619:function(t,e,i){"use strict";i.r(e);var s=i("6cca"),a=i("27fa");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},b6d0:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{title:"\u4fee\u6539\u5bc6\u7801",step:1}},methods:{}}},b7ae:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"tips-popup",props:{show:{type:Boolean,default:!1}},methods:{handleClose:function(){this.$emit("closePopup",!1)},goAdd:function(){this.$emit("closePopup",!1),this.$emit("okBtn",!1)}}};e.default=s},b7b6:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u63d0\u4ea4\u8ba2\u5355",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),t._$s(2,"i",t.timeOptions.length>0)?i("select-time-page2",{ref:"selecTime",attrs:{timeOptions:t.timeOptions,service:t.manHourInfo,url:"/sj/reserve/timeCheck",_i:2},on:{changeTime:t.changeTime}}):t._e(),t._$s(3,"i",t.selectTime)?i("view",{staticClass:t._$s(3,"sc","container-time"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","container-time__left"),attrs:{_i:4}}),i("view",{staticClass:t._$s(5,"sc","container-time__right"),attrs:{_i:5}},[t._v(t._$s(5,"t0-0",t._s(t.selectTime)))])]):t._e(),i("view",{staticClass:t._$s(6,"sc","container-syr"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","container-syr__user"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","container-syr__user_picker"),attrs:{_i:8}},[i("image",{staticClass:t._$s(9,"sc","container-syr__user__picker__img"),attrs:{src:t._$s(9,"a-src",t.userSyr.head_photo),_i:9}})]),i("view",{staticClass:t._$s(10,"sc","container-syr__user__introduce"),attrs:{_i:10}},[i("view",{staticClass:t._$s(11,"sc","container-syr__user__introduce__name"),attrs:{_i:11}},[t._v(t._$s(11,"t0-0",t._s(t.workHour.title)))]),i("view",{staticClass:t._$s(12,"sc","container-syr__user__introduce__price"),attrs:{_i:12}},[t._v(t._$s(12,"t0-0",t._s(t.workHour.price)))])]),i("view",{staticClass:t._$s(13,"sc","container-syr__user__line"),attrs:{_i:13}}),i("view",{staticClass:t._$s(14,"sc","container-syr__user__detail"),attrs:{_i:14}},[i("view",{staticClass:t._$s(15,"sc","container-syr__user__detail__name"),attrs:{_i:15}}),i("view",{staticClass:t._$s(16,"sc","container-syr__user__detail__price"),attrs:{_i:16}},[t._v(t._$s(16,"t0-0",t._s(t.totalPrice)))])]),i("view",{staticClass:t._$s(17,"sc","container-syr__user__detail"),attrs:{_i:17}},[i("view",{staticClass:t._$s(18,"sc","container-syr__user__detail__name"),attrs:{_i:18}}),i("view",{staticClass:t._$s(19,"sc","container-syr__user__detail__price"),attrs:{_i:19}},[t._v(t._$s(19,"t0-0",t._s(t.totalPrice)))])])])]),i("view",{staticClass:t._$s(20,"sc","container-footer"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","container-footer__left"),attrs:{_i:21}},[i("view",{staticClass:t._$s(22,"sc","container-footer__left__price"),attrs:{_i:22}},[t._v(t._$s(22,"t0-0",t._s(t.totalPrice)))]),i("view",{staticClass:t._$s(23,"sc","container-footer__left__title"),attrs:{_i:23}})]),i("view",{staticClass:t._$s(24,"sc","container-footer__right"),attrs:{_i:24},on:{click:t.submit}})])],1)},r=[]},b7d2:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=(s(i("cd5a")),s(i("32a4"))),o=s(i("91d2")),d={data:function(){return{isShowPer:!1,id:"",staffInfo:{avatar:"/static/images/staff.jpg",name:"\u4e2d\u533b\u7406\u7597\u8c22\u98de",rating:5},userInfo:{},orderInfo:{},user_syr:{}}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(e.id=t.id,!e.id){i.next=7;break}return i.next=4,c.default.post("/user/getuser",{type:3});case 4:s=i.sent,e.userInfo=s.data,e.getOrderDetail();case 7:case"end":return i.stop()}}),i)})))()},methods:{getOrderDetail:function(){var e=this;c.default.post("/sj/sjorderdetail",{id:this.id,sjid:this.userInfo.id}).then((function(i){e.orderInfo=i.data,e.user_syr=i.data.user_syr,t("log",e.orderInfo," at pages/shop/buyorder-detail.vue:179")}))},showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))},makeCall:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r,c,d,l;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(s=uni.getSystemInfoSync(),"ios"!==s.platform){i.next=5;break}uni.makePhoneCall({phoneNumber:e.orderInfo.customer.phone}),i.next=32;break;case 5:return"","ios"===s.platform?"phone":"android.permission.CALL_PHONE",e.isShowPer=!0,i.next=10,o.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 10:if(r=i.sent,c=r.granted,!c){i.next=15;break}return uni.makePhoneCall({phoneNumber:e.orderInfo.customer.phone}),i.abrupt("return");case 15:return e.isShowPer=!1,i.next=18,e.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 18:if(d=i.sent,d){i.next=21;break}return i.abrupt("return");case 21:return i.next=23,o.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 23:if(l=i.sent,t("log","result",l," at pages/shop/buyorder-detail.vue:233"),!l){i.next=30;break}return uni.makePhoneCall({phoneNumber:e.orderInfo.customer.phone}),i.abrupt("return");case 30:return n.default.openAppSettings(),i.abrupt("return");case 32:case"end":return i.stop()}}),i)})))()},contactService:function(e){var i=this;return(0,r.default)(a.default.mark((function s(){var r,c,d,l,u;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(r=uni.getSystemInfoSync(),"ios"!==r.platform){s.next=5;break}uni.makePhoneCall({phoneNumber:e}),s.next=33;break;case 5:return"","ios"===r.platform?"phone":"android.permission.CALL_PHONE",i.isShowPer=!0,s.next=10,o.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 10:if(c=s.sent,d=c.granted,!d){s.next=16;break}return uni.makePhoneCall({phoneNumber:e}),i.isShowPer=!1,s.abrupt("return");case 16:return i.isShowPer=!1,s.next=19,i.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 19:if(l=s.sent,l){s.next=22;break}return s.abrupt("return");case 22:return s.next=24,o.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 24:if(u=s.sent,t("log","result",u," at pages/shop/buyorder-detail.vue:294"),!u){s.next=31;break}return uni.makePhoneCall({phoneNumber:e}),s.abrupt("return");case 31:return n.default.openAppSettings(),s.abrupt("return");case 33:case"end":return s.stop()}}),s)})))()},cancelService:function(){var e=this;uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f",success:function(i){if(i.confirm){var s={orderNo:e.orderInfo.number,amount:e.orderInfo.pay_money,sjid:e.userInfo.id};c.default.post("/sj/cancelorder",s).then((function(t){1==t.state?(uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),e.getOrderDetail()):uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){t("log",e," at pages/shop/buyorder-detail.vue:337")}))}}})},refoundService:function(){var e=this;uni.showModal({title:"\u7533\u8bf7\u9000\u6b3e",content:"\u786e\u5b9a\u7533\u8bf7\u9000\u6b3e\uff1f\u9000\u6b3e\u540e\u5219\u8ba2\u5355\u53d6\u6d88\uff01",success:function(i){if(i.confirm){var s={orderNo:e.orderInfo.number,amount:e.orderInfo.pay_money,sjid:e.userInfo.id},a="";1==e.orderInfo.pay_kind?a="":2==e.orderInfo.pay_kind?a="/sj/selfwechatrefund":3==e.orderInfo.pay_kind&&(a="/sj/selfalirefund"),c.default.post(a,s).then((function(i){t("log","\u7533\u8bf7\u9000\u6b3e\u63a5\u53e3",i," at pages/shop/buyorder-detail.vue:368"),uni.showToast({title:"\u7533\u8bf7\u9000\u6b3e\u6210\u529f\uff01",icon:"none"}),e.orderInfo={},e.getOrderDetail()})).catch((function(e){t("log",e," at pages/shop/buyorder-detail.vue:376")}))}}})},payOrder:function(){uni.navigateTo({url:"/pages/shop/pay-order?id=".concat(this.orderInfo.id,"&money=").concat(this.orderInfo.order_money,"&title=").concat(this.orderInfo.server_title,"&number=").concat(this.orderInfo.number)})},reviewOrder:function(){},orderAgain:function(){uni.navigateTo({url:"/pages/shop/service-detail?id="+this.orderInfo.server_id})}}};e.default=d}).call(this,i("f3b9")["default"])},b80a:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c=s(i("3c12")),n={name:"uv-checkbox",mixins:[a.default,r.default,c.default],data:function(){return{isChecked:!1,parentData:{iconSize:12,labelDisabled:null,disabled:null,shape:"square",activeColor:null,inactiveColor:null,size:18,value:null,modelValue:null,iconColor:null,placement:"row",borderBottom:!1,iconPlacement:"left",labelSize:14,labelColor:"#303133"}}},computed:{elDisabled:function(){return""!==this.disabled?this.disabled:null!==this.parentData.disabled&&this.parentData.disabled},elLabelDisabled:function(){return""!==this.labelDisabled?this.labelDisabled:null!==this.parentData.labelDisabled&&this.parentData.labelDisabled},elSize:function(){return this.size?this.size:this.parentData.size?this.parentData.size:21},elIconSize:function(){return this.iconSize?this.iconSize:this.parentData.iconSize?this.parentData.iconSize:12},elActiveColor:function(){return this.activeColor?this.activeColor:this.parentData.activeColor?this.parentData.activeColor:"#2979ff"},elInactiveColor:function(){return this.inactiveColor?this.inactiveColor:this.parentData.inactiveColor?this.parentData.inactiveColor:"#c8c9cc"},elLabelColor:function(){return this.labelColor?this.labelColor:this.parentData.labelColor?this.parentData.labelColor:"#606266"},elShape:function(){return this.shape?this.shape:this.parentData.shape?this.parentData.shape:"circle"},elLabelSize:function(){return this.$uv.addUnit(this.labelSize?this.labelSize:this.parentData.labelSize?this.parentData.labelSize:"15")},elIconColor:function(){var t=this.iconColor?this.iconColor:this.parentData.iconColor?this.parentData.iconColor:"#ffffff";return this.elDisabled?this.isChecked?this.elInactiveColor:"transparent":this.isChecked?t:"transparent"},iconClasses:function(){var t=[];return t.push("uv-checkbox__icon-wrap--"+this.elShape),this.elDisabled&&t.push("uv-checkbox__icon-wrap--disabled"),this.isChecked&&this.elDisabled&&t.push("uv-checkbox__icon-wrap--disabled--checked"),t},iconWrapStyle:function(){var t={};return t.backgroundColor=this.isChecked&&!this.elDisabled?this.elActiveColor:"#ffffff",t.borderColor=this.isChecked&&!this.elDisabled?this.elActiveColor:this.elInactiveColor,t.width=this.$uv.addUnit(this.elSize),t.height=this.$uv.addUnit(this.elSize),"right"===this.parentData.iconPlacement&&(t.marginRight=0),t},checkboxStyle:function(){var t={};return this.parentData.borderBottom&&"row"===this.parentData.placement&&this.$uv.error("\u68c0\u6d4b\u5230\u60a8\u5c06borderBottom\u8bbe\u7f6e\u4e3atrue\uff0c\u9700\u8981\u540c\u65f6\u5c06uv-checkbox-group\u7684placement\u8bbe\u7f6e\u4e3acolumn\u624d\u6709\u6548"),this.parentData.borderBottom&&"column"===this.parentData.placement&&(t.paddingBottom="8px"),this.$uv.deepMerge(t,this.$uv.addStyle(this.customStyle))}},created:function(){this.init()},methods:{init:function(){var t=this;this.updateParentData(),this.parent||this.$uv.error("uv-checkbox\u5fc5\u987b\u642d\u914duv-checkbox-group\u7ec4\u4ef6\u4f7f\u7528"),this.$nextTick((function(){var e=[];t.parentData.value.length?e=t.parentData.value:t.parentData.modelValue.length&&(e=t.parentData.modelValue),t.checked?t.isChecked=!0:t.$uv.test.array(e)&&(t.isChecked=e.some((function(e){return e===t.name})))}))},updateParentData:function(){this.getParentData("uv-checkbox-group")},wrapperClickHandler:function(t){"right"===this.parentData.iconPlacement&&this.iconClickHandler(t)},iconClickHandler:function(t){this.preventEvent(t),this.elDisabled||this.setRadioCheckedStatus()},labelClickHandler:function(t){this.preventEvent(t),this.elLabelDisabled||this.elDisabled||this.setRadioCheckedStatus()},emitEvent:function(){var t=this;this.$emit("change",this.isChecked),this.$nextTick((function(){t.$uv.formValidate(t,"change")}))},setRadioCheckedStatus:function(){this.isChecked=!this.isChecked,this.emitEvent(),"function"===typeof this.parent.unCheckedOther&&this.parent.unCheckedOther(this)}},watch:{checked:function(){this.isChecked=this.checked}}};e.default=n},b866:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c={name:"CustomNavbar",props:{title:{type:String,default:""},showBack:{type:Boolean,default:!0},showHeadle:{type:Boolean,default:!1},headleSrc:{type:String,default:""},backgroundColor:{type:String,default:"#ffffff"},titleColor:{type:String,default:"#333333"},borderBottom:{type:String,default:"1rpx solid rgba(0, 0, 0, 0.05)"},nowStyle:{type:String,default:"1rpx solid rgba(0, 0, 0, 0.05)"},leftImg:{type:String,default:"/static/images/back.png"},backgroundImage:{type:String}},data:function(){return{statusBarHeight:0}},created:function(){var t=this;return(0,r.default)(a.default.mark((function e(){var i,s;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,uni.getSystemInfoSync();case 2:i=e.sent,s=i.screenWidth,t.statusBarHeight=t.pxToRpx(i.statusBarHeight,s);case 5:case"end":return e.stop()}}),e)})))()},methods:{pxToRpx:function(t,e){if("number"!==typeof t)throw new Error("\u8bf7\u4f20\u5165\u6570\u5b57\u7c7b\u578b\u7684px\u503c");return t*(750/e)},goBack:function(){this.$emit("back"),uni.navigateBack({delta:1})},onHeadleClick:function(){this.$emit("onHeadleClick")}}};e.default=c},b893:function(t,e){t.exports=function(t){if("undefined"!==typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)},t.exports.__esModule=!0,t.exports["default"]=t.exports},b905:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","share-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5206\u4eab","show-back":!0,backgroundColor:"rgba(255, 236, 237, 1)",_i:1}}),i("view",{staticClass:t._$s(2,"sc","qrcode-section"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","invite-code"),attrs:{_i:3}},[i("text",{staticClass:t._$s(4,"sc","code-text"),attrs:{_i:4}},[t._v(t._$s(4,"t0-0",t._s(t.userInfo.invite_code)))]),i("text",{staticClass:t._$s(5,"sc","code-label"),attrs:{_i:5}})])]),i("view",{staticClass:t._$s(6,"sc","record-section"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","record-title"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","title-icon icon_zuo"),attrs:{_i:8}}),i("text",{staticClass:t._$s(9,"sc","title-text"),attrs:{_i:9}}),i("view",{staticClass:t._$s(10,"sc","title-icon icon_you"),attrs:{_i:10}})]),t._$s(11,"i",0!=t.invitelist.length)?i("view",{staticClass:t._$s(11,"sc","record-list"),attrs:{_i:11}},t._l(t._$s(12,"f",{forItems:t.invitelist}),(function(e,s,a,r){return i("view",{key:t._$s(12,"f",{forIndex:a,key:e.id}),staticClass:t._$s("12-"+r,"sc","record-item"),attrs:{_i:"12-"+r}},[i("view",{staticClass:t._$s("13-"+r,"sc","user-info"),attrs:{_i:"13-"+r}},[i("text",{staticClass:t._$s("14-"+r,"sc","user-name"),attrs:{_i:"14-"+r}},[t._v(t._$s("14-"+r,"t0-0",t._s(e.name))+t._$s("14-"+r,"t0-1",t._s(e.type)))]),i("text",{staticClass:t._$s("15-"+r,"sc","user-phone"),attrs:{_i:"15-"+r}},[t._v(t._$s("15-"+r,"t0-0",t._s(e.account)))])]),i("text",{staticClass:t._$s("16-"+r,"sc","record-time"),attrs:{_i:"16-"+r}},[t._v(t._$s("16-"+r,"t0-0",t._s(e.applyyes_time)))])])})),0):i("view",{staticClass:t._$s(17,"sc","nothing-box"),attrs:{_i:17}},[i("text",{staticClass:t._$s(18,"sc","nothing-text"),attrs:{_i:18}})])]),i("view",{staticClass:t._$s(19,"sc","kong"),attrs:{_i:19}})],1)},r=[]},b92e:function(t,e,i){"use strict";i.r(e);var s=i("4b35"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},b931:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","noLogin"),attrs:{_i:0}},[i("image",{staticClass:t._$s(1,"sc","noLogin-img"),attrs:{_i:1}}),i("text",{staticClass:t._$s(2,"sc","noLogin-text"),attrs:{_i:2}},[t._v(t._$s(2,"t0-0",t._s(t.tipText)))]),i("view",{staticClass:t._$s(3,"sc","loginBtn"),attrs:{_i:3},on:{click:t.goLogin}})])},a=[]},b944:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3")),n=s(i("12f9")),o=s(i("8547"));function d(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var l={name:"uv-popup",components:{},mixins:[n.default,o.default],emits:["change","maskClick"],props:function(t){for(var e=1;e=500&&this.popupHeight>=500},bg:function(){return""===this.bgColor||"none"===this.bgColor||this.$uv.getPx(this.round)>0?"transparent":this.bgColor},contentStyle:function(){var t={};if(this.bgColor&&(t.backgroundColor=this.bg),this.round){var e=this.$uv.addUnit(this.round),i=this.direction?this.direction:this.mode;t.backgroundColor=this.bgColor,"top"===i?(t.borderBottomLeftRadius=e,t.borderBottomRightRadius=e):"bottom"===i?(t.borderTopLeftRadius=e,t.borderTopRightRadius=e):"center"===i&&(t.borderRadius=e)}return this.$uv.deepMerge(t,this.$uv.addStyle(this.customStyle))}},destroyed:function(){this.setH5Visible()},created:function(){this.messageChild=null,this.clearPropagation=!1},methods:{setH5Visible:function(){},closeMask:function(){this.maskShow=!1},clear:function(t){t.stopPropagation(),this.clearPropagation=!0},open:function(t){if(!this.showPopup){if(t&&-1!==["top","center","bottom","left","right","message","dialog","share"].indexOf(t)?this.direction=t:t=this.mode,!this.config[t])return this.$uv.error("\u7f3a\u5c11\u7c7b\u578b\uff1a".concat(t));this[this.config[t]](),this.$emit("change",{show:!0,type:t})}},close:function(t){var e=this;this.showTrans=!1,this.$emit("change",{show:!1,type:this.mode}),clearTimeout(this.timer),this.timer=setTimeout((function(){e.showPopup=!1}),300)},touchstart:function(){this.clearPropagation=!1},onTap:function(){this.clearPropagation?this.clearPropagation=!1:(this.$emit("maskClick"),this.closeOnClickOverlay&&this.close())},top:function(t){var e=this;this.popupClass=this.isDesktop?"fixforpc-top":"top",this.ani=["slide-top"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,left:0,right:0,backgroundColor:this.bg},t||(this.showPopup=!0,this.showTrans=!0,this.$nextTick((function(){e.messageChild&&"message"===e.mode&&e.messageChild.timerClose()})))},bottom:function(t){this.popupClass="bottom",this.ani=["slide-bottom"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,left:0,right:0,bottom:0,backgroundColor:this.bg},t||(this.showPopup=!0,this.showTrans=!0)},center:function(t){this.popupClass="center",this.ani=this.zoom?["zoom-in","fade"]:["fade"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,display:"flex",flexDirection:"column",bottom:0,left:0,right:0,top:0,justifyContent:"center",alignItems:"center"},t||(this.showPopup=!0,this.showTrans=!0)},left:function(t){this.popupClass="left",this.ani=["slide-left"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,left:0,bottom:0,top:0,backgroundColor:this.bg,display:"flex",flexDirection:"column"},t||(this.showPopup=!0,this.showTrans=!0)},right:function(t){this.popupClass="right",this.ani=["slide-right"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,bottom:0,right:0,top:0,backgroundColor:this.bg,display:"flex",flexDirection:"column"},t||(this.showPopup=!0,this.showTrans=!0)}}};e.default=l},ba01:function(t,e,i){"use strict";i.r(e);var s=i("b931"),a=i("49b4");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"623c598c",null,!1,s["a"],void 0);e["default"]=n.exports},ba37:function(t,e){ +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +e.read=function(t,e,i,s,a){var r,c,n=8*a-s-1,o=(1<>1,l=-7,u=i?a-1:0,f=i?-1:1,_=t[e+u];for(u+=f,r=_&(1<<-l)-1,_>>=-l,l+=n;l>0;r=256*r+t[e+u],u+=f,l-=8);for(c=r&(1<<-l)-1,r>>=-l,l+=s;l>0;c=256*c+t[e+u],u+=f,l-=8);if(0===r)r=1-d;else{if(r===o)return c?NaN:1/0*(_?-1:1);c+=Math.pow(2,s),r-=d}return(_?-1:1)*c*Math.pow(2,r-s)},e.write=function(t,e,i,s,a,r){var c,n,o,d=8*r-a-1,l=(1<>1,f=23===a?Math.pow(2,-24)-Math.pow(2,-77):0,_=s?0:r-1,p=s?1:-1,v=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(n=isNaN(e)?1:0,c=l):(c=Math.floor(Math.log(e)/Math.LN2),e*(o=Math.pow(2,-c))<1&&(c--,o*=2),e+=c+u>=1?f/o:f*Math.pow(2,1-u),e*o>=2&&(c++,o/=2),c+u>=l?(n=0,c=l):c+u>=1?(n=(e*o-1)*Math.pow(2,a),c+=u):(n=e*Math.pow(2,u-1)*Math.pow(2,a),c=0));a>=8;t[i+_]=255&n,_+=p,n/=256,a-=8);for(c=c<0;t[i+_]=255&c,_+=p,c/=256,d-=8);t[i+_-p]|=128*v}},ba67:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("ef05")),n=s(i("16bb")),o=s(i("f8df")),d={components:{CommonList:o.default,cashPop:c.default},data:function(){return{tabsList:[{name:"\u4f59\u989d\u53d8\u52a8",id:0,url:"/user/balancechangelist"},{name:"\u63d0\u73b0\u8bb0\u5f55",id:1,url:"/user/getcashrecord"}],popShow:!1,cashObj:{},tabsIndex:0,statusBarHeight:0,artisanType:getApp().globalData.artisanType,userInfo:{},listQuery:{}}},onLoad:function(){var t=this;return(0,r.default)(a.default.mark((function e(){var i;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(i=uni.getSystemInfoSync(),t.statusBarHeight=i.statusBarHeight,!t.artisanType){e.next=8;break}return t.listQuery.user_type=t.artisanType,t.listQuery.cash_type=t.artisanType,e.next=7,t.getUserInfo();case 7:t.search();case 8:case"end":return e.stop()}}),e)})))()},computed:{},methods:{getDescriptionByNumber:function(t){var e={1:"\u63d0\u73b0",2:"\u8ba2\u5355\u5206\u8d26\u5165\u8d26",3:"\u4f59\u989d\u6d88\u8d39",4:"\u4f59\u989d\u9000\u6b3e",5:"\u5de5\u65f6\u8ba2\u5355\u5206\u5e10\u5165\u5e10",6:"\u5de5\u4f4d\u8ba2\u5355\u5206\u5e10\u5165\u5e10",11:"\u81ea\u8425\u8ba2\u5355\u5206\u5e10\u5165\u5e10"};return"number"===typeof t&&e.hasOwnProperty(t)?e[t]:"\u672a\u77e5\u7c7b\u578b"},goCash:function(){uni.navigateTo({url:"/pages/wallet/withdrawCash"})},openCahPop:function(t){this.cashObj=t,this.popShow=!0},openTip:function(){this.$refs.popup.open("center")},closeTip:function(){this.$refs.popup.close()},getTabName:function(t){return{1:"\u5ba1\u6838\u4e2d",2:"\u5ba1\u6838\u4e2d",3:"\u5df2\u6253\u6b3e",4:"\u5df2\u9a73\u56de",5:"\u5df2\u9a73\u56de"}[t]||""},changeTab:function(t){var e=this;this.tabsIndex!==t&&(this.tabsIndex=t,this.$nextTick((function(){e.$refs.groupRef.clearList(),e.$refs.groupRef.manualRefresh(e.listQuery)})))},getUserInfo:function(){var t=this;return(0,r.default)(a.default.mark((function e(){var i,s;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return i=1==t.artisanType?2:2==t.artisanType?3:"",e.next=3,n.default.post("/sj/user/getuser",{type:i});case 3:s=e.sent,t.userInfo=s.data,t.listQuery.user_id=t.userInfo.id,t.listQuery.cash_user_id=t.userInfo.id;case 7:case"end":return e.stop()}}),e)})))()},search:function(){this.$refs.groupRef.manualRefresh(this.listQuery)},formatBalance:function(t){return t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}}};e.default=d},bacc:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;ee?(t>=1&&(this.line1Active=!0,this.line1Deactivating=!1),t>=2&&(this.line2Active=!0,this.line2Deactivating=!1)):t=1,this.line2Active=this.currentStep>=2},methods:{getStepClass:function(t){return t===this.currentStep?"active":t=t.length?{done:!0}:{done:!1,value:t[s++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,c=!0,n=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return c=t.done,t},e:function(t){n=!0,r=t},f:function(){try{c||null==i.return||i.return()}finally{if(n)throw r}}}}function _(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i=0?c:0,n,o],this.$refs.datePicker.open()},hideDatePicker:function(){this.$refs.datePicker.close()},bindDateChange:function(t){this.dateValue=t.detail.value},confirmDate:function(){var e=(0,r.default)(this.dateValue,3),i=e[0],s=e[1],a=e[2],c=this.years[i],n=this.months[s],o=this.days[a],d="".concat(c,"\u5e74").concat(n,"\u6708").concat(o,"\u65e5");t("log","\u9009\u62e9\u7684\u65e5\u671f:",d,"\u5b57\u6bb5:",this.currentDateField," at pages/artisan/qualification_syr_change.vue:832"),this.displayData[this.currentDateField]=d,this.hideDatePicker()},chooseImage:function(e){var i=this;return(0,o.default)(a.default.mark((function s(){var r,c,n,o;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(s.prev=0,i.userId){s.next=4;break}return s.next=4,i.getUserInfo();case 4:return s.next=6,new Promise((function(t,e){uni.chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:t,fail:e})}));case 6:if(r=s.sent,r.tempFilePaths&&0!==r.tempFilePaths.length){s.next=9;break}return s.abrupt("return");case 9:return c=r.tempFilePaths[0],n={path:c,size:0},s.next=13,i.directUpload(n,i.userId,i.identity+1);case 13:o=s.sent,o&&(i.displayData[e]=o),s.next=20;break;case 17:s.prev=17,s.t0=s["catch"](0),t("log","\u4e0a\u4f20\u56fe\u7247\u9519\u8bef:",s.t0," at pages/artisan/qualification_syr_change.vue:871");case 20:case"end":return s.stop()}}),s,null,[[0,17]])})))()},directUpload:function(e,i,s){return(0,o.default)(a.default.mark((function r(){var c,n,o,l,u,f,_;return a.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:return a.prev=0,c=(new Date).getTime(),n=1==s?"yh":2==s?"syr":3==s?"sj":"",o="jpg",e.path.includes(".")&&(l=e.path.split("."),u=l[l.length-1].toLowerCase(),u&&u.length<=4&&(o=u)),f="".concat(i,"_").concat(n,"_").concat(c,".").concat(o),a.next=8,d.default.post("/user/getalioss",{type:s,kind:1});case 8:return _=a.sent,a.next=11,new Promise((function(t,i){uni.uploadFile({url:_.host,filePath:e.path,name:"file",formData:{key:_.dir+f,policy:_.policy,OSSAccessKeyId:_.ossAccessKeyId,success_action_status:"200",signature:_.signature},success:function(e){if(200===e.statusCode){var s="".concat(_.host,"/").concat(_.dir).concat(f);t(s)}else i(new Error("\u4e0a\u4f20\u5931\u8d25"))},fail:i})}));case 11:return a.abrupt("return",a.sent);case 14:throw a.prev=14,a.t0=a["catch"](0),t("error","\u76f4\u63a5\u4e0a\u4f20\u5931\u8d25:",a.t0," at pages/artisan/qualification_syr_change.vue:919"),a.t0;case 18:case"end":return a.stop()}}),r,null,[[0,14]])})))()},addQualification:function(){this.displayData.qualifications.length>=9?uni.showToast({title:"\u6700\u591a\u53ea\u80fd\u4e0a\u4f209\u5f20\u8d44\u8d28\u7167\u7247",icon:"none"}):this.chooseImageForQualifications()},chooseImageForQualifications:function(){var e=this;return(0,o.default)(a.default.mark((function i(){var s,r,c,n,o,d,l,u;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(i.prev=0,e.userId){i.next=4;break}return i.next=4,e.getUserInfo();case 4:return s=9-e.displayData.qualifications.length,i.next=7,new Promise((function(t,e){uni.chooseImage({count:s,sizeType:["compressed"],sourceType:["album","camera"],success:t,fail:e})}));case 7:if(r=i.sent,r.tempFilePaths&&0!==r.tempFilePaths.length){i.next=10;break}return i.abrupt("return");case 10:if(c=e.displayData.qualifications.length+r.tempFilePaths.length,!(c>9)){i.next=14;break}return uni.showToast({title:"\u6700\u591a\u53ea\u80fd\u4e0a\u4f209\u5f20\u8d44\u8d28\u7167\u7247",icon:"none"}),i.abrupt("return");case 14:n=f(r.tempFilePaths),i.prev=15,n.s();case 17:if((o=n.n()).done){i.next=26;break}return d=o.value,l={path:d,size:0},i.next=22,e.directUpload(l,e.userId,e.identity+1);case 22:u=i.sent,u&&e.displayData.qualifications.push(u);case 24:i.next=17;break;case 26:i.next=31;break;case 28:i.prev=28,i.t0=i["catch"](15),n.e(i.t0);case 31:return i.prev=31,n.f(),i.finish(31);case 34:i.next=39;break;case 36:i.prev=36,i.t1=i["catch"](0),t("log","\u4e0a\u4f20\u8d44\u8d28\u7167\u7247\u9519\u8bef:",i.t1," at pages/artisan/qualification_syr_change.vue:981");case 39:case"end":return i.stop()}}),i,null,[[0,36],[15,28,31,34]])})))()},deleteQualification:function(e){t("log","\u5220\u9664\u524d\u7684\u8d44\u8d28\u7167\u7247\u5217\u8868:",JSON.stringify(this.displayData.qualifications)," at pages/artisan/qualification_syr_change.vue:987"),t("log","\u8981\u5220\u9664\u7684\u7d22\u5f15:",e," at pages/artisan/qualification_syr_change.vue:988"),t("log","\u8981\u5220\u9664\u7684\u56fe\u7247URL:",this.displayData.qualifications[e]," at pages/artisan/qualification_syr_change.vue:989"),this.displayData.qualifications.splice(e,1),t("log","\u5220\u9664\u540e\u7684\u8d44\u8d28\u7167\u7247\u5217\u8868:",JSON.stringify(this.displayData.qualifications)," at pages/artisan/qualification_syr_change.vue:993"),t("log","\u5220\u9664\u540e\u7684\u957f\u5ea6:",this.displayData.qualifications.length," at pages/artisan/qualification_syr_change.vue:994")},validateForm:function(){for(var t=this,e=[{field:"health_card",message:"\u8bf7\u4e0a\u4f20\u5065\u5eb7\u8bc1"},{field:"health_card_expiry_type",message:"\u8bf7\u9009\u62e9\u5065\u5eb7\u8bc1\u6709\u6548\u671f\u7c7b\u578b"},{field:"health_card_start_date",message:"\u8bf7\u9009\u62e9\u5065\u5eb7\u8bc1\u5f00\u59cb\u65e5\u671f"},{condition:function(){return 2===t.displayData.health_card_expiry_type&&!t.displayData.health_card_end_date},message:"\u8bf7\u9009\u62e9\u5065\u5eb7\u8bc1\u7ed3\u675f\u65e5\u671f"},{condition:function(){return!t.displayData.qualifications||0===t.displayData.qualifications.length},message:"\u8bf7\u4e0a\u4f20\u81f3\u5c11\u4e00\u5f20\u6280\u5e08\u8d44\u8d28\u7167\u7247"}],i=0,s=e;i-1&&this.name.indexOf("base64")>-1;return-1!==this.name.indexOf("/")||t},imgStyle:function(){var t={};return t.width=this.width?this.$uv.addUnit(this.width):this.$uv.addUnit(this.size),t.height=this.height?this.$uv.addUnit(this.height):this.$uv.addUnit(this.size),t},icon:function(){var t=c.default["uvicon-"+this.name];return t?unescape("%u".concat(t)):["uvicon"].indexOf(this.customPrefix)>-1?this.name:""}},methods:{clickHandler:function(t){this.$emit("click",this.index),this.stop&&this.preventEvent(t)}}};e.default=o},cc6c:function(t,e,i){"use strict";i.r(e);var s=i("4a13"),a=i("2690");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},ccf9:function(t,e,i){"use strict";i.r(e);var s=i("5d50"),a=i("6c65");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"19cc9313",null,!1,s["a"],void 0);e["default"]=n.exports},ccfc:function(t,e,i){"use strict";i.r(e);var s=i("86e1"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},ccfd:function(t,e,i){"use strict";i.r(e);var s=i("66f5"),a=i("a67f");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"5bf663ab",null,!1,s["a"],void 0);e["default"]=n.exports},cd06:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("3b2d")),r=function(){function e(t,e){return null!=e&&t instanceof e}var i,s,r;try{i=Map}catch(d){i=function(){}}try{s=Set}catch(d){s=function(){}}try{r=Promise}catch(d){r=function(){}}function c(n,d,l,u,f){"object"===(0,a.default)(d)&&(l=d.depth,u=d.prototype,f=d.includeNonEnumerable,d=d.circular);var _=[],p=[],v="undefined"!=typeof t;return"undefined"==typeof d&&(d=!0),"undefined"==typeof l&&(l=1/0),function n(l,h){if(null===l)return null;if(0===h)return l;var m,g;if("object"!=(0,a.default)(l))return l;if(e(l,i))m=new i;else if(e(l,s))m=new s;else if(e(l,r))m=new r((function(t,e){l.then((function(e){t(n(e,h-1))}),(function(t){e(n(t,h-1))}))}));else if(c.__isArray(l))m=[];else if(c.__isRegExp(l))m=new RegExp(l.source,o(l)),l.lastIndex&&(m.lastIndex=l.lastIndex);else if(c.__isDate(l))m=new Date(l.getTime());else{if(v&&t.isBuffer(l))return t.from?m=t.from(l):(m=new t(l.length),l.copy(m)),m;e(l,Error)?m=Object.create(l):"undefined"==typeof u?(g=Object.getPrototypeOf(l),m=Object.create(g)):(m=Object.create(u),g=u)}if(d){var y=_.indexOf(l);if(-1!=y)return p[y];_.push(l),p.push(m)}for(var b in e(l,i)&&l.forEach((function(t,e){var i=n(e,h-1),s=n(t,h-1);m.set(i,s)})),e(l,s)&&l.forEach((function(t){var e=n(t,h-1);m.add(e)})),l){var w=Object.getOwnPropertyDescriptor(l,b);w&&(m[b]=n(l[b],h-1));try{var $=Object.getOwnPropertyDescriptor(l,b);if("undefined"===$.set)continue;m[b]=n(l[b],h-1)}catch(T){if(T instanceof TypeError)continue;if(T instanceof ReferenceError)continue}}if(Object.getOwnPropertySymbols){var C=Object.getOwnPropertySymbols(l);for(b=0;b0&&(this.moveX=0),this.moveX<-160&&(this.moveX=-160),this.$set(this.services[this.currentIndex],"slideX",this.moveX)))},touchEnd:function(t){3==this.currentTab&&-1!==this.currentIndex&&(t.preventDefault(),t.stopPropagation(),this.moveX<-80?this.$set(this.services[this.currentIndex],"slideX",-160):this.$set(this.services[this.currentIndex],"slideX",0),this.currentIndex=-1)},mouseDown:function(t,e){3==this.currentTab&&(t.preventDefault(),t.stopPropagation(),this.startX=t.clientX,this.currentIndex=e)},mouseMove:function(t){3==this.currentTab&&-1!==this.currentIndex&&(t.preventDefault(),t.stopPropagation(),this.moveX=t.clientX-this.startX,this.moveX>0&&(this.moveX=0),this.moveX<-160&&(this.moveX=-160),this.$set(this.services[this.currentIndex],"slideX",this.moveX))},mouseUp:function(t){3==this.currentTab&&-1!==this.currentIndex&&(t.preventDefault(),t.stopPropagation(),this.moveX<-80?this.$set(this.services[this.currentIndex],"slideX",-160):this.$set(this.services[this.currentIndex],"slideX",0),this.currentIndex=-1)},resetSlide:function(){var t=this;this.services.forEach((function(e,i){i!==t.currentIndex&&t.$set(e,"slideX",0)}))}}};e.default=r},cd5a:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("7ca3"));function r(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function c(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return n(c({},t))},calcDistance:function(t,e,i,s){return function(t,e,i,s){var a=function(t){return t*(Math.PI/180)},r=a(i-t),c=a(s-e),n=Math.sin(r/2)*Math.sin(r/2)+Math.cos(a(t))*Math.cos(a(i))*Math.sin(c/2)*Math.sin(c/2),o=2*Math.atan2(Math.sqrt(n),Math.sqrt(1-n)),d=6371*o;return d.toFixed(2)}(t,e,i,s)},roundUpToTwoDecimals:function(t,e){return(Math.floor(t*e*100+.9)/100).toFixed(2)},getDateStr:function(t){var e=new Date;return e.setDate(e.getDate()+t),"".concat(e.getFullYear(),"-").concat((e.getMonth()+1).toString().padStart(2,"0"),"-").concat(e.getDate().toString().padStart(2,"0"))}};e.default=d}).call(this,i("f3b9")["default"])},cd72:function(t,e,i){"use strict";i.r(e);var s=i("0c95"),a=i("e9ea");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"48c81e5d",null,!1,s["a"],void 0);e["default"]=n.exports},cd76:function(t,e,i){"use strict";i.r(e);var s=i("d774"),a=i("026a");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"7596a78f",null,!1,s["a"],void 0);e["default"]=n.exports},cd79:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.oprPresentLogin=function(){try{c.accelerateLoginPage(5e3,(function(e){t("log","\u52a0\u901f\u6388\u6743\u9875\u7ed3\u679c\uff1a",JSON.stringify(e)," at utils/loginGlobal.js:152"),"600000"===e.resultCode?(t("log","\u52a0\u901f\u6388\u6743\u9875\u62c9\u8d77\u6210\u529f"," at utils/loginGlobal.js:155"),setTimeout((function(){try{var e=a.default.buildSheet();(function(e){uni.showLoading({mask:!0}),c.getLoginToken(5e3,e,(function(e){switch(uni.hideLoading(),t("log","\u83b7\u53d6Token\u7ed3\u679c\uff1a",JSON.stringify(e)," at utils/loginGlobal.js:20"),e.resultCode){case"600001":t("log","\u6388\u6743\u9875\u62c9\u8d77\u6210\u529f"," at utils/loginGlobal.js:24"),c.setCheckboxIsChecked(!1);break;case"600000":t("log","\u83b7\u53d6Token\u6210\u529f\uff0c\u53ef\u524d\u5f80\u670d\u52a1\u7aef\u6362\u53d6\u624b\u673a\u53f7"," at utils/loginGlobal.js:28"),r.default.post("/user/phoneLogin",{token:e.token}).then((function(t){if(200==t.code){if(uni.setStorageSync("accessToken",t.data.access_token),uni.setStorageSync("refreshToken",t.data.refresh_token),uni.setStorageSync("refresh_token_expries",t.data.refresh_token_expries),uni.setStorageSync("loginAccount",t.data.account),!uni.getStorageSync("searchCity")){uni.setStorageSync("searchCity",{adcode:"130983",cCode:"130900",center:"117.332895,38.372566",name:"\u6ca7\u5dde\u5e02",pcode:"130000"})}}else uni.showToast({title:t.msg,icon:"none"})})).catch((function(t){uni.showToast({title:t.msg,icon:"none"})})).finally((function(){c.quitLoginPage()}));break;case"700020":t("log","\u6388\u6743\u9875\u5df2\u9500\u6bc1\u3002"," at utils/loginGlobal.js:66");break;default:uni.navigateTo({url:"/pages/blogPopup/blogPopup"}),c.quitLoginPage();break}}),(function(i){switch(t("log","\u7528\u6237\u64cd\u4f5c\u7ed3\u679c\uff1a",JSON.stringify(i)," at utils/loginGlobal.js:78"),i.resultCode){case"700000":t("log","\u7528\u6237\u70b9\u51fb\u4e86\u8fd4\u56de"," at utils/loginGlobal.js:82");break;case"700001":t("log","\u7528\u6237\u5207\u6362\u5176\u4ed6\u767b\u5f55\u65b9\u5f0f"," at utils/loginGlobal.js:85"),c.quitLoginPage(),uni.navigateTo({url:"/pages/blogPopup/blogPopup"});break;case"700002":t("log","\u7528\u6237\u70b9\u51fb\u767b\u5f55\u6309\u94ae"," at utils/loginGlobal.js:92"),t("log","\u7528\u6237\u70b9\u51fb\u767b\u5f55\u6309\u94ae"," at utils/loginGlobal.js:94"),i.result.isChecked||e.uiConfig.setPrivacyAlertIsNeedShow||plus.nativeUI.toast("\u8bf7\u540c\u610f\u670d\u52a1\u6761\u6b3e");break;case"700003":t("log","\u7528\u6237\u70b9\u51fbcheckBox"," at utils/loginGlobal.js:102");break;case"700004":t("log","\u7528\u6237\u70b9\u51fb\u534f\u8bae",i," at utils/loginGlobal.js:105");break;case"700010":case"700011":t("log","\u7528\u6237\u70b9\u51fb\u8fd4\u56de/\u7269\u7406\u8fd4\u56de\u952e\uff08Android\uff09"," at utils/loginGlobal.js:109"),c.quitLoginPage();break;case"700006":case"700007":case"700008":case"700009":t("log","\u4e8c\u6b21\u6388\u6743\u5f39\u7a97\u64cd\u4f5c\uff1a".concat(i.resultCode)," at utils/loginGlobal.js:116");break;default:t("log","\u672a\u77e5\u7684\u7528\u6237\u64cd\u4f5c\u7801\uff1a",i.resultCode," at utils/loginGlobal.js:119");break}}),(function(e){switch(t("log","\u81ea\u5b9a\u4e49\u63a7\u4ef6\u70b9\u51fb\u7ed3\u679c\uff1a",JSON.stringify(e)," at utils/loginGlobal.js:124"),e.widgetId){case"close":c.quitLoginPage();break;case"closePrivacyAlert":c.closePrivactAlertView();break;default:uni.showToast({title:"\u70b9\u51fb\u4e86\u81ea\u5b9a\u4e49\u6309\u94ae\uff1a".concat(e.widgetId),icon:"none"});break}}))})(e)}catch(i){t("error","\u6784\u5efa\u767b\u5f55\u914d\u7f6e\u6216\u8c03\u7528\u767b\u5f55\u63a7\u5236\u5668\u5931\u8d25\uff1a",i," at utils/loginGlobal.js:163")}}),100)):(t("error","\u6388\u6743\u9875\u52a0\u901f\u62c9\u8d77\u5931\u8d25\uff1a",e.msg," at utils/loginGlobal.js:168"),uni.navigateTo({url:"/pages/blogPopup/blogPopup"}))}))}catch(e){t("error","\u8df3\u8f6c\u5230\u767b\u5f55\u9875\u65f6\u53d1\u751f\u9519\u8bef\uff1a",e," at utils/loginGlobal.js:177"),uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}};var a=s(i("42ef")),r=s(i("16bb")),c=uni.requireNativePlugin("AliCloud-NirvanaPns")}).call(this,i("f3b9")["default"])},cdf0:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={data:function(){return{default_times:"",business_time:"",indicatorStyle:"height: 68rpx;",pickerValue:[8,0,0,18,0],hours:Array.from({length:24},(function(t,e){return"".concat(e)})),minutes:["0","10","20","30","40","50","59"]}},computed:{startTime:function(){return{hour:this.hours[this.pickerValue[0]],minute:this.minutes[this.pickerValue[1]]}},endTime:function(){return{hour:this.hours[this.pickerValue[3]],minute:this.minutes[this.pickerValue[4]]}}},methods:{handleTimeChange:function(t){var e=t.detail.value,i=parseInt(this.hours[e[0]],10),s=parseInt(this.minutes[e[1]],10),a=parseInt(this.hours[e[3]],10),r=parseInt(this.minutes[e[4]],10),c=60*i+s,n=60*a+r;if(c>=n){var o=i+1;o>=24&&(o=0);var d=this.hours.findIndex((function(t){return parseInt(t,10)===o}));e[3]=d,e[4]=e[1]}this.pickerValue=e},openTimePopup:function(){this.$refs.popup.open()},formatTime:function(t){var e=t.minute.padStart(2,"0");return"".concat(t.hour,":").concat(e)},close:function(){this.$refs.popup.close()},confirmTime:function(){var t=this.formatTime(this.startTime),e=this.formatTime(this.endTime);this.$emit("confirmTime","".concat(t,"-").concat(e)),this.$refs.popup.close()}}};e.default=s},ce02:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("a6d8")),o={components:{AgreeRadio:n.default},data:function(){return{wayId:2,phone:"",code:"",password:"",codeTips:"\u83b7\u53d6\u9a8c\u8bc1\u7801",isAgree:!1,countdown:0,timer:null,showPassword:!1}},onLoad:function(){},methods:{validatePassword:function(t){return/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,12}$/.test(t)},inputPhone:function(t){this.phone=t.detail.value},inputCode:function(t){this.code=t.detail.value},inputPassword:function(t){this.password=t.detail.value},getCode:function(){var t=this;return(0,r.default)(a.default.mark((function e(){var i,s;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(i=t,!(i.countdown>0)){e.next=3;break}return e.abrupt("return");case 3:if(/^1[3-9]\d{9}$/.test(i.phone)){e.next=6;break}return uni.showToast({title:"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7",icon:"none"}),e.abrupt("return");case 6:return e.next=8,c.default.post("/user/isaccount",{account:i.phone});case 8:if(s=e.sent,2!=s.state){e.next=12;break}return uni.showToast({title:"\u8be5\u8d26\u6237\u672a\u6ce8\u518c\uff01",icon:"none"}),e.abrupt("return");case 12:i.countdown=60,i.timer=setInterval((function(){i.countdown>0?i.countdown--:clearInterval(i.timer)}),1e3),c.default.post("/user/sendcode",{account:i.phone,type:2}).then((function(t){t.state,uni.showToast({title:t.msg,icon:"none"})}));case 15:case"end":return e.stop()}}),e)})))()},changeWay:function(){1==this.wayId?this.wayId=2:this.wayId=1},changeAgree:function(t){this.isAgree=t},tapLogin:function(){var t=this,e=t.wayId,i=t.validatePassword(t.password);if(!/^1[3456789]\d{9}$/.test(t.phone))return uni.showToast({title:"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7",icon:"none"}),!1;if(1==e){if(!t.code)return uni.showToast({title:"\u8bf7\u8f93\u5165\u9a8c\u8bc1\u7801",icon:"none"}),!1;if(!t.isAgree)return uni.showToast({title:"\u8bf7\u5148\u9605\u8bfb\u5e76\u540c\u610f\u300a\u7528\u6237\u6ce8\u518c\u534f\u8bae\u300b\u4e0e\u300a\u9690\u79c1\u653f\u7b56\u300b",icon:"none"}),!1;c.default.post("/user/codelogin",{account:t.phone,code:t.code,deviceid:getApp().globalData.deviceid}).then((function(e){1==e.state?(uni.setStorageSync("accessToken",e.access_token),uni.setStorageSync("refreshToken",e.refresh_token),uni.setStorageSync("refresh_token_expries",e.refresh_token_expries),uni.setStorageSync("loginAccount",t.phone),t.goBackPage()):uni.showToast({title:e.msg,icon:"none"})}))}else if(2==e){if(!t.password)return uni.showToast({title:"\u8bf7\u8f93\u5165\u5bc6\u7801",icon:"none"}),!1;if(!i)return uni.showToast({title:"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u5bc6\u7801",icon:"none"}),!1;if(!t.isAgree)return uni.showToast({title:"\u8bf7\u5148\u9605\u8bfb\u5e76\u540c\u610f\u300a\u7528\u6237\u6ce8\u518c\u534f\u8bae\u300b\u4e0e\u300a\u9690\u79c1\u653f\u7b56\u300b",icon:"none"}),!1;c.default.post("/user/accountlogin",{account:t.phone,password:t.password,deviceid:getApp().globalData.deviceid}).then((function(e){1==e.state?(uni.setStorageSync("accessToken",e.access_token),uni.setStorageSync("refreshToken",e.refresh_token),uni.setStorageSync("refresh_token_expries",e.refresh_token_expries),uni.setStorageSync("loginAccount",t.phone),t.goBackPage()):uni.showToast({title:e.msg,icon:"none"})}))}},goBackPage:function(){var e=getCurrentPages(),i=e[e.length-2];t("log","pages",e," at pages/login/login.vue:252"),t("log","prevPage",i," at pages/login/login.vue:253"),i?"pages/my/my"===i.route?(i.$vm.getUserInfo(),uni.navigateBack()):"pages/order/userorder-list"===i.route&&(i.$vm.loadOrders(),uni.navigateBack()):uni.switchTab({url:"/pages/home/home"})},goRegister:function(){uni.navigateTo({url:"/pages/register/register?handel=register"})},goPassword:function(){uni.navigateTo({url:"/pages/register/register?handel=forget"})},goAgreement:function(t){uni.navigateTo({url:"/pages/agreement/agreement?type="+t})}},onUnload:function(){this.timer&&clearInterval(this.timer)}};e.default=o}).call(this,i("f3b9")["default"])},ce11:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$s(0,"i",t.evaluateList.count)?i("view",{staticClass:t._$s(0,"sc","evaluationList"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","evaluationList-header"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","evaluationList-header-left"),attrs:{_i:2}},[i("text",{staticClass:t._$s(3,"sc","header-left-text"),attrs:{_i:3}},[t._v(t._$s(3,"t0-0",t._s(t.evaluateList.count)))])]),i("view",{staticClass:t._$s(4,"sc","evaluationList-header-right"),attrs:{_i:4},on:{click:t.goList}},[i("text",{staticClass:t._$s(5,"sc","header-right-text"),attrs:{_i:5}}),i("image",{staticClass:t._$s(6,"sc","header-right-img"),attrs:{_i:6}})])]),t._l(t._$s(7,"f",{forItems:t.evaluateList.list}),(function(e,s,a,r){return i("evaluationDetail",{key:t._$s(7,"f",{forIndex:a,key:s}),attrs:{evaluateObj:e,_i:"7-"+r}})}))],2):t._e()},a=[]},ce2f:function(t,e,i){"use strict";i.r(e);var s=i("c548"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},ce51:function(t,e,i){"use strict";i.r(e);var s=i("d6a2"),a=i("b5c0");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},cecf:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={agreeRadio:i("a6d8").default,aliOssUploader:i("93a6").default,popupPicker:i("2077").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","add-service"),attrs:{_i:0}},[t._$s(1,"i",t.formData.back_text&&4==t.formData.state)?i("view",{staticClass:t._$s(1,"sc","tip"),attrs:{_i:1}},[i("image",{staticClass:t._$s(2,"sc","tip-icon"),attrs:{_i:2}}),i("text",[t._v(t._$s(3,"t0-0",t._s(t.formData.back_text)))])]):t._e(),i("view",{staticClass:t._$s(4,"sc","form-container"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","form-item"),attrs:{_i:5}},[i("text",{staticClass:t._$s(6,"sc","form-label required"),attrs:{_i:6}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.title,expression:"formData.title"}],staticClass:t._$s(7,"sc","form-input"),attrs:{_i:7},domProps:{value:t._$s(7,"v-model",t.formData.title)},on:{input:function(e){e.target.composing||t.$set(t.formData,"title",e.target.value)}}})]),i("view",{staticClass:t._$s(8,"sc","form-item"),attrs:{_i:8}},[i("text",{staticClass:t._$s(9,"sc","form-label required"),attrs:{_i:9}}),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.formData.server_price,expression:"formData.server_price",modifiers:{number:!0}}],staticClass:t._$s(10,"sc","form-input"),attrs:{_i:10},domProps:{value:t._$s(10,"v-model",t.formData.server_price)},on:{input:[function(e){e.target.composing||t.$set(t.formData,"server_price",t._n(e.target.value))},t.inpPrice],blur:[t.inpPrice,function(e){return t.$forceUpdate()}],confirm:t.inpPrice}})]),i("view",{staticClass:t._$s(11,"sc","form-item"),attrs:{_i:11}},[i("text",{staticClass:t._$s(12,"sc","form-label required"),attrs:{_i:12}}),i("view",{staticClass:t._$s(13,"sc","form-right"),attrs:{_i:13},on:{click:t.openServiceTypePicker}},[i("text",{class:t._$s(14,"c",["form-value",t.formData.first_class_id?"":"placeholder"]),attrs:{_i:14}},[t._v(t._$s(14,"t0-0",t._s(t.serviceType||"\u9009\u62e9\u5206\u7c7b")))]),i("image",{staticClass:t._$s(15,"sc","arrow-right"),attrs:{_i:15}})])]),t._$s(16,"i",t.showCategory)?i("view",{staticClass:t._$s(16,"sc","form-item"),attrs:{_i:16}},[i("text",{staticClass:t._$s(17,"sc","form-label required"),attrs:{_i:17}}),i("view",{staticClass:t._$s(18,"sc","form-right"),attrs:{_i:18},on:{click:t.openCategoryPicker}},[i("text",{class:t._$s(19,"c",["form-value",t.formData.second_class_id?"":"placeholder"]),attrs:{_i:19}},[t._v(t._$s(19,"t0-0",t._s(t.category||"\u9009\u62e9\u5b50\u7c7b")))]),i("image",{staticClass:t._$s(20,"sc","arrow-right"),attrs:{_i:20}})])]):t._e(),t._$s(21,"i",1==t.artisanType)?i("view",{staticClass:t._$s(21,"sc","form-item shopsale-box"),attrs:{_i:21}},[i("view",{staticClass:t._$s(22,"sc","form-label required"),attrs:{_i:22}},[t._v(t._$s(22,"t0-0",t._s(t.showShopPrice?"\u95e8\u5e97\u4e0b\u5355\u8d2d\u4e70\u540e\uff0c\u60a8\u9700\u5230\u4e0a\u95e8\u81f3\u95e8\u5e97\u8fdb\u884c\u670d\u52a1\uff0c\u95e8\u5e97\u7aef\u5c55\u793a\u4ef7\u683c\u4e3a":""))),t._$s(23,"i",t.showShopPrice)?i("text",{attrs:{_i:23}},[t._v(t._$s(23,"t0-0",t._s(t.shopPrice)))]):t._e(),t._v(t._$s(22,"t2-0",t._s(t.showShopPrice?"\u5143\u3002":"")))]),i("view",{staticClass:t._$s(24,"sc","shopsale-change"),attrs:{_i:24}},[i("view",{staticClass:t._$s(25,"sc","shopsale-option"),attrs:{_i:25},on:{click:function(e){return t.changeSale(2)}}},[i("agree-radio",{attrs:{isAgree:2==t.formData.sj_see,_i:26}}),i("text",{staticClass:t._$s(27,"sc","option-text"),attrs:{_i:27}})],1),i("view",{staticClass:t._$s(28,"sc","shopsale-option"),attrs:{_i:28},on:{click:function(e){return t.changeSale(1)}}},[i("agree-radio",{attrs:{isAgree:1==t.formData.sj_see,_i:29}}),i("text",{staticClass:t._$s(30,"sc","option-text"),attrs:{_i:30}})],1)])]):t._e(),i("view",{staticClass:t._$s(31,"sc","form-item"),attrs:{_i:31}},[i("text",{staticClass:t._$s(32,"sc","form-label required"),attrs:{_i:32}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.server_time,expression:"formData.server_time"}],staticClass:t._$s(33,"sc","form-input"),attrs:{_i:33},domProps:{value:t._$s(33,"v-model",t.formData.server_time)},on:{input:function(e){e.target.composing||t.$set(t.formData,"server_time",e.target.value)}}}),i("text",{staticClass:t._$s(34,"sc","pr-240"),attrs:{_i:34}})]),i("view",{staticClass:t._$s(35,"sc","form-step"),attrs:{_i:35}},[i("view",{staticClass:t._$s(36,"sc","form-item"),attrs:{_i:36}},[i("text",{staticClass:t._$s(37,"sc","form-label"),attrs:{_i:37}}),i("view",{staticClass:t._$s(38,"sc","form-detail"),attrs:{_i:38}},[i("text",{attrs:{_i:39},on:{click:t.goImgAndText}},[t._v(t._$s(39,"t0-0",t._s(t.formData.graphic_details?"\u5df2\u8bbe\u7f6e":"\u53bb\u8bbe\u7f6e")))])])])]),i("view",{staticClass:t._$s(40,"sc","form-step"),attrs:{_i:40}},[i("view",{staticClass:t._$s(41,"sc","form-item"),attrs:{_i:41}},[i("text",{staticClass:t._$s(42,"sc","form-label required"),attrs:{_i:42}}),i("view",{staticClass:t._$s(43,"sc","form-detail"),attrs:{_i:43}},[i("text",{attrs:{_i:44},on:{click:t.showDetailCont}}),t._$s(45,"i",t.isShow)?i("scroll-view",{staticClass:t._$s(45,"sc","detail-cont"),attrs:{_i:45}},t._l(t._$s(46,"f",{forItems:t.nowDetailList}),(function(e,s,a,r){return i("view",{key:t._$s(46,"f",{forIndex:a,key:"46-"+r}),staticClass:t._$s("46-"+r,"sc","detail-item"),attrs:{_i:"46-"+r},on:{click:function(i){return t.addDetailItem(e)}}},[t._v(t._$s("46-"+r,"t0-0",t._s(e.detailItem)))])})),0):t._e()])]),t._l(t._$s(47,"f",{forItems:t.formData.detail}),(function(e,s,a,r){return i("view",{key:t._$s(47,"f",{forIndex:a,key:"47-"+r}),staticClass:t._$s("47-"+r,"sc","step"),attrs:{_i:"47-"+r}},[i("text",{staticClass:t._$s("48-"+r,"sc","form-label lable-view"),attrs:{_i:"48-"+r}},[t._v(t._$s("48-"+r,"t0-0",t._s(e.title)))]),i("textarea",{directives:[{name:"model",rawName:"v-model",value:t.formData.detail[s].text,expression:"formData.detail[i].text"}],staticClass:t._$s("49-"+r,"sc","step-textarea"),attrs:{_i:"49-"+r},domProps:{value:t._$s("49-"+r,"v-model",t.formData.detail[s].text)},on:{input:function(e){e.target.composing||t.$set(t.formData.detail[s],"text",e.target.value)}}}),i("image",{staticClass:t._$s("50-"+r,"sc","delete-icon"),attrs:{_i:"50-"+r},on:{click:function(i){return t.deleteDetailItem(e,s)}}})])}))],2),i("view",{staticClass:t._$s(51,"sc","form-step"),attrs:{_i:51}},[i("view",{staticClass:t._$s(52,"sc","form-item"),attrs:{_i:52}},[i("text",{staticClass:t._$s(53,"sc","form-label required"),attrs:{_i:53}}),i("text",{attrs:{_i:54},on:{click:t.addStep}})]),t._l(t._$s(55,"f",{forItems:t.formData.process}),(function(e,s,a,r){return i("view",{key:t._$s(55,"f",{forIndex:a,key:"55-"+r}),staticClass:t._$s("55-"+r,"sc","step"),attrs:{_i:"55-"+r}},[i("text",{staticClass:t._$s("56-"+r,"sc","form-label"),attrs:{_i:"56-"+r}},[t._v(t._$s("56-"+r,"t0-0",t._s(s+1)))]),i("input",{directives:[{name:"model",rawName:"v-model",value:t.formData.process[s].text,expression:"formData.process[i].text"}],staticClass:t._$s("57-"+r,"sc","step-inp"),attrs:{_i:"57-"+r},domProps:{value:t._$s("57-"+r,"v-model",t.formData.process[s].text)},on:{input:function(e){e.target.composing||t.$set(t.formData.process[s],"text",e.target.value)}}}),i("image",{staticClass:t._$s("58-"+r,"sc","delete-icon"),attrs:{_i:"58-"+r},on:{click:function(e){return t.deleteStep(s)}}})])}))],2),i("view",{staticClass:t._$s(59,"sc","form-item-up upload-item"),attrs:{_i:59}},[i("view",[i("text",{staticClass:t._$s(61,"sc","form-label"),attrs:{_i:61}}),i("text",{staticClass:t._$s(62,"sc","upload-tip"),attrs:{_i:62}})]),i("ali-oss-uploader",{attrs:{"max-count":1,"max-size":100,type:t.artisanType+1,"user-id":t.formData.publish_user_id,width:"654rpx",kind:2,"file-string":t.formData.video,accept:"video/*","button-text":"\u4e0a\u4f20\u89c6\u9891",_i:63},on:{success:t.uploadVideoSuc,error:t.uploadVideoErr,delete:t.uploadVideoDel,ckeckisShowPer:t.ckeckisShowPer,ckecknowQer:t.ckecknowQer}})],1),i("view",{staticClass:t._$s(64,"sc","form-item-up upload-item"),attrs:{_i:64}},[i("view",[i("text",{staticClass:t._$s(66,"sc","form-label required"),attrs:{_i:66}}),i("text",{staticClass:t._$s(67,"sc","upload-tip"),attrs:{_i:67}})]),i("ali-oss-uploader",{attrs:{"max-count":9,"max-size":5,width:"654rpx",type:t.artisanType+1,"user-id":t.formData.publish_user_id,"button-text":"\u4e0a\u4f20\u56fe\u7247",tips:"\u6700\u591a\u4e0a\u4f203\u5f20\u56fe\u7247\uff0c\u6bcf\u5f20\u4e0d\u8d85\u8fc75MB",_i:68},on:{success:t.onUploadSuccess,error:t.onUploadError,delete:t.onFileDelete,ckeckisShowPer:t.ckeckisShowPer,ckecknowQer:t.ckecknowQer},model:{value:t._$s(68,"v-model",t.formData.photo),callback:function(e){t.$set(t.formData,"photo",e)},expression:"formData.photo"}})],1)]),i("view",{staticClass:t._$s(69,"sc","bottom-buttons"),attrs:{_i:69}},[t._$s(70,"i",!t.state||0==t.state)?i("button",{staticClass:t._$s(70,"sc","btn-draft"),attrs:{_i:70},on:{click:t.saveDraft}}):t._e(),i("button",{staticClass:t._$s(71,"sc","btn-submit"),attrs:{_i:71},on:{click:t.submitForm}})]),i("popup-picker",{attrs:{show:t.showServiceTypePicker,title:"\u9009\u62e9\u670d\u52a1\u7c7b\u578b",columns:[t.serviceTypes],value:[t.selectedServiceTypeIndex],_i:72},on:{close:function(e){t.showServiceTypePicker=!1},confirm:t.handleServiceTypeConfirm}}),i("popup-picker",{attrs:{show:t.showCategoryPicker,title:"\u9009\u62e9\u670d\u52a1\u5206\u7c7b",columns:[t.categoryAll],value:[t.selectedCategoryIndex],_i:73},on:{close:function(e){t.showCategoryPicker=!1},confirm:t.handleCategoryConfirm}}),t._$s(74,"i",t.isShow)?i("view",{staticClass:t._$s(74,"sc","mask"),attrs:{_i:74},on:{click:function(e){t.isShow=!1}}}):t._e(),i("view",{staticClass:t._$s(75,"sc","permission"),class:t._$s(75,"c",{transform:t.isShowPer&&"xc"===t.nowQer}),attrs:{_i:75}},[i("view",{staticClass:t._$s(76,"sc","per-tit"),attrs:{_i:76}}),i("view",{staticClass:t._$s(77,"sc","per-cont"),attrs:{_i:77}})]),i("view",{staticClass:t._$s(78,"sc","permission"),class:t._$s(78,"c",{transform:t.isShowPer&&"xj"===t.nowQer}),attrs:{_i:78}},[i("view",{staticClass:t._$s(79,"sc","per-tit"),attrs:{_i:79}}),i("view",{staticClass:t._$s(80,"sc","per-cont"),attrs:{_i:80}})])],1)},r=[]},cf02:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","noData"),attrs:{_i:0}},[i("image",{staticClass:t._$s(1,"sc","noData-img"),style:t._$s(1,"s",{"margin-top":t.top}),attrs:{_i:1}}),i("text",{staticClass:t._$s(2,"sc","noData-text"),attrs:{_i:2}},[t._v(t._$s(2,"t0-0",t._s(t.tipText)))])])},a=[]},cf63:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("ec2d")),o={name:"addStaff",components:{searchBox:n.default},data:function(){return{queryData:{phone:""},statusBarHeight:0,isSubmit:!1,sryDetail:{},serversList:{}}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return e.statusBarHeight=e.getRpxStatusBarHeight(),3,i.next=4,c.default.post("/user/getuser",{type:3});case 4:return s=i.sent,e.userInfo=s.data,e.queryData.sjid=e.userInfo.id,i.next=9,e.sjservers();case 9:t.phone&&(e.queryData.phone=t.phone,e.search());case 10:case"end":return i.stop()}}),i)})))()},computed:{mergeServiceList:function(){var t=Object.values(this.$store.state.sjServiceList);return t.map((function(t){return t.filter((function(t){return t.is_choice}))})).flat()}},methods:{goServiceList:function(){uni.navigateTo({url:"/pages/shop/staff/serviceList"})},search:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,c.default.post("/sj/searchsyr",t.queryData).then((function(e){var i;200==e.code?(t.$store.commit("setSjServiceList",t.serversList),t.sryDetail=e.data,null!==(i=t.sryDetail)&&void 0!==i&&i.servers_kill_arr&&(t.sryDetail.servers_kill_arr_text=t.sryDetail.servers_kill_arr.join("\u3001"))):uni.showToast({title:e.msg,duration:2e3,icon:"none"})}));case 2:case"end":return e.stop()}}),e)})))()},sjservers:function(){var t=this;return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,c.default.post("/sj/sjservers",{sjid:t.queryData.sjid}).then((function(e){200==e.code&&(t.serversList=e.data,t.$store.commit("setSjServiceList",e.data))}));case 2:case"end":return e.stop()}}),e)})))()},sjinvitesyr:function(){var t=this,e={sj_id:this.queryData.sjid,syr_id:this.sryDetail.id,service_data:this.mergeServiceList.map((function(t){return t.id}))};this.isSubmit||(this.isSubmit=!0,c.default.post("/sj/sjinvitesyr",e).then((function(t){200==t.code?uni.showModal({title:"\u6210\u529f",content:"\u9080\u8bf7\u6210\u529f\uff0c\u7b49\u5f85\u5458\u5de5\u540c\u610f\u3002",showCancel:!1,success:function(){uni.navigateTo({url:"/pages/shop/staff/record"})}}):uni.showToast({title:t.msg,icon:"none"})})).finally((function(){t.isSubmit=!1})))},goDetail:function(){uni.navigateTo({url:"/pages/shop/staff/staffDetail?syrid=".concat(this.sryDetail.id)})},goRecord:function(){uni.navigateTo({url:"/pages/shop/staff/record"})}}};e.default=o},cf8d:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","detail-page"),class:t._$s(0,"c",{"no-bottom-buttons":!t.haveButton}),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u8ba2\u5355\u8be6\u60c5","show-back":!0,"title-color":"#333333",backgroundColor:t.backgroundColor,borderBottom:"none",_i:1}}),i("view",{staticClass:t._$s(2,"sc","content-part"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","status-section"),attrs:{_i:3}},[i("image",{staticClass:t._$s(4,"sc","status-section-image"),attrs:{src:t._$s(4,"a-src",t.stateItem.icon),_i:4}}),i("text",{staticClass:t._$s(5,"sc","status-text"),attrs:{_i:5}},[t._v(t._$s(5,"t0-0",t._s(t.stateItem.text))),t._$s(6,"i",t.orderInfo.team_buy_order_state)?i("text",{attrs:{_i:6}},[t._v(t._$s(6,"t0-0",t._s(" ("+t.getGroupType(t.orderInfo.team_buy_order_state)+")")))]):t._e()])]),t._$s(7,"i","2"==t.serviceType&&2==t.orderInfo.order_kind)?i("view",{staticClass:t._$s(7,"sc","kh-card"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","kh-card-footer flex-row-center-between"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","kh-card-footer-left flex-row-center"),attrs:{_i:9}},[i("image",{staticClass:t._$s(10,"sc","kh-card-footer-left-img"),attrs:{src:t._$s(10,"a-src",t.orderInfo.order_headphoto),_i:10}}),i("view",{staticClass:t._$s(11,"sc","kh-card-footer-left-text"),attrs:{_i:11}},[t._v(t._$s(11,"t0-0",t._s(t.orderInfo.order_username+" "+t.orderInfo.phone_user)))])]),i("image",{staticClass:t._$s(12,"sc","kh-card-footer-right"),attrs:{_i:12},on:{click:function(e){return t.contactService(t.orderInfo.phone_user)}}})])]):t._e(),t._$s(13,"i",t.reservation_address_arr&&t.reservation_address_arr.name)?i("view",{staticClass:t._$s(13,"sc","service-card"),attrs:{_i:13}},[i("view",{staticClass:t._$s(14,"sc","card_title"),attrs:{_i:14}}),i("view",{staticClass:t._$s(15,"sc","location-info"),attrs:{_i:15}},[i("view",{staticClass:t._$s(16,"sc","name-phone"),attrs:{_i:16}},[i("view",[i("text",{staticClass:t._$s(18,"sc","name"),attrs:{_i:18}},[t._v(t._$s(18,"t0-0",t._s(t.reservation_address_arr.name)))]),i("text",{staticClass:t._$s(19,"sc","phone"),attrs:{_i:19}},[t._v(t._$s(19,"t0-0",t._s(t.reservation_address_arr.call_phone)))])]),i("view",{staticClass:t._$s(20,"sc","info_Btn"),attrs:{_i:20},on:{click:function(e){return t.contactService(t.reservation_address_arr.call_phone)}}},[i("image",{staticClass:t._$s(21,"sc","btn-phone"),attrs:{_i:21}}),i("text")])]),i("view",{staticClass:t._$s(23,"sc","address-info"),attrs:{_i:23}},[i("image",{staticClass:t._$s(24,"sc","location-icon"),attrs:{_i:24},on:{click:function(e){return t.openMap()}}}),i("text",{staticClass:t._$s(25,"sc","address"),attrs:{_i:25}},[t._v(t._$s(25,"t0-0",t._s(t.reservation_address_arr.server_address))+t._$s(25,"t0-1",t._s(t.reservation_address_arr.house_number)))])])])]):t._e(),t._$s(26,"i","2"!==t.serviceType&&3!==t.orderInfo.order_kind&&t.user_sj&&t.user_sj.name)?i("view",{staticClass:t._$s(26,"sc","shop_card"),attrs:{_i:26}},[i("view",{staticClass:t._$s(27,"sc","shop_info_box"),attrs:{_i:27}},[i("view",{staticClass:t._$s(28,"sc","shop_info_row"),attrs:{_i:28}},[i("view",{staticClass:t._$s(29,"sc","shop_info_left"),attrs:{_i:29}},[i("image",{staticClass:t._$s(30,"sc","shop_photo"),attrs:{src:t._$s(30,"a-src",t.user_sj.head_photo),_i:30}}),i("view",{staticClass:t._$s(31,"sc","shop_info_right"),attrs:{_i:31}},[i("text",{staticClass:t._$s(32,"sc","shop_name"),attrs:{_i:32}},[t._v(t._$s(32,"t0-0",t._s(t.user_sj.name)))])])]),i("view",{staticClass:t._$s(33,"sc","shop_info_actions"),attrs:{_i:33}},[i("view",{staticClass:t._$s(34,"sc","shop_action_item"),attrs:{_i:34},on:{click:t.openShopMap}},[i("image",{staticClass:t._$s(35,"sc","action_icon_map"),attrs:{_i:35}}),i("view",{staticClass:t._$s(36,"sc","action_text"),attrs:{_i:36}})]),i("view",{staticClass:t._$s(37,"sc","shop_action_item"),attrs:{_i:37},on:{click:function(e){return t.contactService(t.user_sj.phone||t.user_sj.account)}}},[i("image",{staticClass:t._$s(38,"sc","action_icon_phone"),attrs:{_i:38}}),i("view",{staticClass:t._$s(39,"sc","action_text"),attrs:{_i:39}})])])]),i("view",{staticClass:t._$s(40,"sc","shop_details"),attrs:{_i:40}},[t._$s(41,"i",t.user_sj.phone||t.user_sj.account)?i("text",{staticClass:t._$s(41,"sc","shop_phone"),attrs:{_i:41}},[t._v(t._$s(41,"t0-0",t._s(t.user_sj.phone||t.user_sj.account)))]):t._e(),t._$s(42,"i",t.user_sj.address)?i("text",{staticClass:t._$s(42,"sc","shop_address"),attrs:{_i:42}},[t._v(t._$s(42,"t0-0",t._s(t.user_sj.address)))]):t._e()])])]):t._e(),t._$s(43,"i",3==t.orderInfo.order_kind)?i("view",{staticClass:t._$s(43,"sc","time_card"),attrs:{_i:43}},[i("view",{staticClass:t._$s(44,"sc","card_title"),attrs:{_i:44}}),i("view",{staticClass:t._$s(45,"sc","card_time mb-20"),attrs:{_i:45}},[i("text",[t._v(t._$s(46,"t0-0",t._s(t.formatDateAndAddMinutes(t.orderInfo.reservation_time).original)))])]),i("view",{staticClass:t._$s(47,"sc","card_time"),attrs:{_i:47}},[i("text",[t._v(t._$s(48,"t0-0",t._s(t.formatDateAndAddMinutes(t.orderInfo.reservation_time,t.orderInfo.server_time).afterAddingMinutes)))])])]):t._e(),i("view",{staticClass:t._$s(49,"sc","booking-card"),attrs:{_i:49}},[i("view",{staticClass:t._$s(50,"sc","card_title"),attrs:{_i:50}}),i("view",{staticClass:t._$s(51,"sc","service-item"),attrs:{_i:51}},[t._$s(52,"i",t.orderInfo.server_photo&&0!=t.orderInfo.server_photo.length)?i("image",{staticClass:t._$s(52,"sc","service-image"),attrs:{src:t._$s(52,"a-src",t.orderInfo.server_photo[0]),_i:52}}):t._e(),i("view",{staticClass:t._$s(53,"sc","service-info"),attrs:{_i:53}},[i("view",{staticClass:t._$s(54,"sc","service-name"),attrs:{_i:54}},[t._v(t._$s(54,"t0-0",t._s(t.orderInfo.server_title))),i("view",{staticClass:t._$s(55,"sc","service-name-num"),attrs:{_i:55}})]),t._$s(56,"i",t.orderInfo.team_buy_id)?i("view",{staticClass:t._$s(56,"sc","group-price"),attrs:{_i:56}},[i("view",{staticClass:t._$s(57,"sc","service-price"),attrs:{_i:57}},[t._v(t._$s(57,"t0-0",t._s(t.orderInfo.cost_money)))]),i("view",{staticClass:t._$s(58,"sc","service-price2"),attrs:{_i:58}},[i("text",[t._v(t._$s(59,"t0-0",t._s(t.orderInfo.order_money)))])])]):i("text",{staticClass:t._$s(60,"sc","service-price2"),attrs:{_i:60}},[i("text",[t._v(t._$s(61,"t0-0",t._s(t.orderInfo.order_money)))])])])]),i("view",{staticClass:t._$s(62,"sc","service-real"),attrs:{_i:62}},[i("text",{staticClass:t._$s(63,"sc","real-lable"),attrs:{_i:63}}),i("view",{staticClass:t._$s(64,"sc","real-price"),attrs:{_i:64}},[i("text",{staticClass:t._$s(65,"sc","icon"),attrs:{_i:65}}),i("text",[t._v(t._$s(66,"t0-0",t._s(t.orderInfo.pay_money?t.orderInfo.pay_money:0)))])])])]),t._$s(67,"i",t.orderInfo.order_shopphone_other)?i("view",{staticClass:t._$s(67,"sc","syr-card"),attrs:{_i:67}},[i("view",{staticClass:t._$s(68,"sc","syr-card-header"),attrs:{_i:68}}),i("view",{staticClass:t._$s(69,"sc","syr-card-footer flex-row-center-between"),attrs:{_i:69}},[i("view",{staticClass:t._$s(70,"sc","syr-card-footer-left flex-row-center"),attrs:{_i:70}},[i("image",{staticClass:t._$s(71,"sc","syr-card-footer-left-img"),attrs:{src:t._$s(71,"a-src",t.orderInfo.order_shopheadphoto_other),_i:71}}),i("view",{staticClass:t._$s(72,"sc","syr-card-footer-left-text"),attrs:{_i:72}},[t._v(t._$s(72,"t0-0",t._s(t.orderInfo.order_shop_other+" "+t.orderInfo.order_shopphone_other)))])]),i("image",{staticClass:t._$s(73,"sc","syr-card-footer-right"),attrs:{_i:73},on:{click:function(e){return t.contactService(t.orderInfo.order_shopphone_other)}}})])]):t._e(),i("view",{staticClass:t._$s(74,"sc","order-card"),attrs:{_i:74}},[i("text",{staticClass:t._$s(75,"sc","card-title"),attrs:{_i:75}}),i("view",{staticClass:t._$s(76,"sc","info-item"),attrs:{_i:76}},[i("text",{staticClass:t._$s(77,"sc","label"),attrs:{_i:77}}),i("text",{staticClass:t._$s(78,"sc","value"),attrs:{_i:78}},[t._v(t._$s(78,"t0-0",t._s(t.orderInfo.number)))])]),t._$s(79,"i",1==t.orderInfo.order_kind)?i("view",{staticClass:t._$s(79,"sc","info-item"),attrs:{_i:79}},[i("text",{staticClass:t._$s(80,"sc","label"),attrs:{_i:80}}),i("text",{staticClass:t._$s(81,"sc","value"),attrs:{_i:81}},[t._v(t._$s(81,"t0-0",t._s(t.orderInfo.reservation_time)))])]):t._e(),i("view",{staticClass:t._$s(82,"sc","info-item"),attrs:{_i:82}},[i("text",{staticClass:t._$s(83,"sc","label"),attrs:{_i:83}}),i("text",{staticClass:t._$s(84,"sc","value"),attrs:{_i:84}},[t._v(t._$s(84,"t0-0",t._s(t.orderInfo.add_time)))])]),t._$s(85,"i",t.orderInfo.server_time)?i("view",{staticClass:t._$s(85,"sc","info-item"),attrs:{_i:85}},[i("text",{staticClass:t._$s(86,"sc","label"),attrs:{_i:86}}),i("text",{staticClass:t._$s(87,"sc","value"),attrs:{_i:87}},[t._v(t._$s(87,"t0-0",t._s(t.orderInfo.server_time)))])]):t._e(),t._$s(88,"i",1!=t.orderInfo.state&&t.orderInfo.pay_kind)?i("view",{staticClass:t._$s(88,"sc","info-item"),attrs:{_i:88}},[i("text",{staticClass:t._$s(89,"sc","label"),attrs:{_i:89}}),i("text",{staticClass:t._$s(90,"sc","value"),attrs:{_i:90}},[t._v(t._$s(90,"t0-0",t._s(1==t.orderInfo.pay_kind?"\u8d26\u6237\u4f59\u989d":2==t.orderInfo.pay_kind?"\u5fae\u4fe1\u652f\u4ed8":3==t.orderInfo.pay_kind?"\u652f\u4ed8\u5b9d\u652f\u4ed8":"")))])]):t._e(),t._$s(91,"i",1!=t.orderInfo.state&&t.orderInfo.pay_time)?i("view",{staticClass:t._$s(91,"sc","info-item"),attrs:{_i:91}},[i("text",{staticClass:t._$s(92,"sc","label"),attrs:{_i:92}}),i("text",{staticClass:t._$s(93,"sc","value"),attrs:{_i:93}},[t._v(t._$s(93,"t0-0",t._s(t.orderInfo.pay_time)))])]):t._e(),t._$s(94,"i",t.orderInfo.state>=3&&t.orderInfo.get_time)?i("view",{staticClass:t._$s(94,"sc","info-item"),attrs:{_i:94}},[i("text",{staticClass:t._$s(95,"sc","label"),attrs:{_i:95}}),i("text",{staticClass:t._$s(96,"sc","value"),attrs:{_i:96}},[t._v(t._$s(96,"t0-0",t._s(t.orderInfo.get_time)))])]):t._e(),t._$s(97,"i",t.orderInfo.state>=4&&t.orderInfo.server_start_time)?i("view",{staticClass:t._$s(97,"sc","info-item"),attrs:{_i:97}},[i("text",{staticClass:t._$s(98,"sc","label"),attrs:{_i:98}}),i("text",{staticClass:t._$s(99,"sc","value"),attrs:{_i:99}},[t._v(t._$s(99,"t0-0",t._s(t.orderInfo.server_start_time)))])]):t._e(),t._$s(100,"i",t.orderInfo.state>=5&&t.orderInfo.server_end_time)?i("view",{staticClass:t._$s(100,"sc","info-item"),attrs:{_i:100}},[i("text",{staticClass:t._$s(101,"sc","label"),attrs:{_i:101}}),i("text",{staticClass:t._$s(102,"sc","value"),attrs:{_i:102}},[t._v(t._$s(102,"t0-0",t._s(t.orderInfo.server_end_time)))])]):t._e()]),t._$s(103,"i",t.orderInfo.team_buy_id)?i("view",{staticClass:t._$s(103,"sc","order-card"),attrs:{_i:103}},[i("text",{staticClass:t._$s(104,"sc","card-title"),attrs:{_i:104}}),i("view",{staticClass:t._$s(105,"sc","info-item"),attrs:{_i:105}},[t._$s(106,"i",t.orderInfo.team_buy_number)?i("text",{staticClass:t._$s(106,"sc","label"),attrs:{_i:106}}):t._e(),i("text",{staticClass:t._$s(107,"sc","value"),attrs:{_i:107}},[t._v(t._$s(107,"t0-0",t._s(t.orderInfo.team_buy_number)))])]),i("view",{staticClass:t._$s(108,"sc","info-item"),attrs:{_i:108}},[i("text",{staticClass:t._$s(109,"sc","label"),attrs:{_i:109}}),i("text",{staticClass:t._$s(110,"sc","value"),attrs:{_i:110}},[t._v(t._$s(110,"t0-0",t._s(t.orderInfo.team_buy_title)))])]),t._$s(111,"i",t.orderInfo.team_buy_order_number)?i("view",{staticClass:t._$s(111,"sc","info-item"),attrs:{_i:111}},[i("text",{staticClass:t._$s(112,"sc","label"),attrs:{_i:112}}),i("text",{staticClass:t._$s(113,"sc","value"),attrs:{_i:113}},[t._v(t._$s(113,"t0-0",t._s(t.orderInfo.team_buy_order_number)))])]):t._e()]):t._e()]),t._$s(114,"i",t.haveButton&&2==t.orderInfo.state||3==t.orderInfo.state||4==t.orderInfo.state)?i("view",{staticClass:t._$s(114,"sc","bottom-buttons"),attrs:{_i:114}},[t._$s(115,"i",2==t.orderInfo.state||3==t.orderInfo.state)?i("view",{staticClass:t._$s(115,"sc","handel-button btn-border"),attrs:{_i:115},on:{click:function(e){return e.stopPropagation(),t.cancelOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(116,"sc","button-text"),attrs:{_i:116}})]):t._e(),t._$s(117,"i",3==t.orderInfo.state)?i("view",{staticClass:t._$s(117,"sc","handel-button btn-bg"),attrs:{_i:117},on:{click:function(e){return e.stopPropagation(),t.startOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(118,"sc","button-text"),attrs:{_i:118}})]):t._e(),t._$s(119,"i",4==t.orderInfo.state)?i("view",{staticClass:t._$s(119,"sc","handel-button btn-bg"),attrs:{_i:119},on:{click:function(e){return e.stopPropagation(),t.endOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(120,"sc","button-text"),attrs:{_i:120}})]):t._e()]):t._e(),i("serviceCodeInput",{attrs:{show:t.showInput,_i:121},on:{close:function(e){t.showInput=!1},confirm:t.onConfirm}}),i("view",{staticClass:t._$s(122,"sc","permission"),class:t._$s(122,"c",{transform:t.isShowPer}),attrs:{_i:122}},[i("view",{staticClass:t._$s(123,"sc","per-tit"),attrs:{_i:123}}),i("view",{staticClass:t._$s(124,"sc","per-cont"),attrs:{_i:124}})]),i("view",{staticClass:t._$s(125,"sc","permission"),class:t._$s(125,"c",{transform:t.isShowLocationPer}),attrs:{_i:125}},[i("view",{staticClass:t._$s(126,"sc","per-tit"),attrs:{_i:126}}),i("view",{staticClass:t._$s(127,"sc","per-cont"),attrs:{_i:127}})])],1)},r=[]},cfa5:function(t,e,i){"use strict";i.r(e);var s=i("b866"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},d009:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","service-skills-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:t.navTitle,showBack:!0,_i:1}}),i("view",{staticClass:t._$s(2,"sc","page-content"),style:t._$s(2,"s",{paddingBottom:t.buttonAreaHeight+"px"}),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","skills-container box-cont"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","skills-header"),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","title-bar"),attrs:{_i:5}}),i("text",{staticClass:t._$s(6,"sc","skills-title"),attrs:{_i:6}})]),t._$s(7,"i",t.editable)?i("view",{staticClass:t._$s(7,"sc","skills-subtitle"),attrs:{_i:7}}):t._e(),t._$s(8,"i",!t.showPendingSkills)?i("view",{staticClass:t._$s(8,"sc","skills-list"),attrs:{_i:8}},t._l(t._$s(9,"f",{forItems:t.serviceList}),(function(e,s,a,r){return i("view",{key:t._$s(9,"f",{forIndex:a,key:e.id}),staticClass:t._$s("9-"+r,"sc","skill-item"),class:t._$s("9-"+r,"c",{disabled:!0}),attrs:{_i:"9-"+r}},[i("view",{staticClass:t._$s("10-"+r,"sc","checkbox-wrapper"),attrs:{_i:"10-"+r}},[i("view",{staticClass:t._$s("11-"+r,"sc","checkbox"),class:t._$s("11-"+r,"c",{checked:t.isCurrentSkillSelected(e.id)}),attrs:{_i:"11-"+r}},[t._$s("12-"+r,"i",t.isCurrentSkillSelected(e.id))?i("image",{staticClass:t._$s("12-"+r,"sc","check-icon"),attrs:{_i:"12-"+r}}):t._e()])]),i("text",{staticClass:t._$s("13-"+r,"sc","skill-name"),attrs:{_i:"13-"+r}},[t._v(t._$s("13-"+r,"t0-0",t._s(e.title)))])])})),0):i("view",{staticClass:t._$s(14,"sc","skills-list"),attrs:{_i:14}},t._l(t._$s(15,"f",{forItems:t.serviceList}),(function(e,s,a,r){return i("view",{key:t._$s(15,"f",{forIndex:a,key:e.id}),staticClass:t._$s("15-"+r,"sc","skill-item"),class:t._$s("15-"+r,"c",{disabled:!t.editable}),attrs:{_i:"15-"+r},on:{click:function(e){return t.toggleSkillSelect(s)}}},[i("view",{staticClass:t._$s("16-"+r,"sc","checkbox-wrapper"),attrs:{_i:"16-"+r}},[i("view",{staticClass:t._$s("17-"+r,"sc","checkbox"),class:t._$s("17-"+r,"c",{checked:e.checked}),attrs:{_i:"17-"+r}},[t._$s("18-"+r,"i",e.checked)?i("image",{staticClass:t._$s("18-"+r,"sc","check-icon"),attrs:{_i:"18-"+r}}):t._e()])]),i("text",{staticClass:t._$s("19-"+r,"sc","skill-name"),attrs:{_i:"19-"+r}},[t._v(t._$s("19-"+r,"t0-0",t._s(e.title)))])])})),0)])]),i("view",{ref:"buttonArea",staticClass:t._$s(20,"sc","bottom-actions"),attrs:{_i:20}},[t._$s(21,"i",t.shouldShowRejectReason)?i("view",{staticClass:t._$s(21,"sc","reject-reason"),attrs:{_i:21}},[i("view",{staticClass:t._$s(22,"sc","reject-title"),attrs:{_i:22}}),i("view",{staticClass:t._$s(23,"sc","reject-detail"),attrs:{_i:23}},[t._v(t._$s(23,"t0-0",t._s(t.backText)))])]):t._e(),t._$s(24,"i",t.showAuditTip&&!t.showPendingSkills)?i("view",{staticClass:t._$s(24,"sc","audit-tip"),attrs:{_i:24}},[i("text",{staticClass:t._$s(25,"sc","audit-text"),attrs:{_i:25}})]):t._e(),t._$s(26,"i","change"===t.buttonType)?i("view",{staticClass:t._$s(26,"sc","action-btn change-info-btn"),attrs:{_i:26},on:{click:t.startChange}},[i("text",{staticClass:t._$s(27,"sc","btn-text"),attrs:{_i:27}})]):t._e(),t._$s(28,"i","edit"===t.buttonType)?i("view",{staticClass:t._$s(28,"sc","action-buttons-row"),attrs:{_i:28}},[i("view",{staticClass:t._$s(29,"sc","action-btn cancel-btn"),attrs:{_i:29},on:{click:t.cancelChange}},[i("text",{staticClass:t._$s(30,"sc","btn-text cancel-text"),attrs:{_i:30}})]),i("view",{staticClass:t._$s(31,"sc","action-btn submit-btn"),attrs:{_i:31},on:{click:t.submitChange}},[i("text",{staticClass:t._$s(32,"sc","btn-text"),attrs:{_i:32}})])]):t._e(),t._$s(33,"i","view"===t.buttonType)?i("view",{staticClass:t._$s(33,"sc","action-btn view-change-btn"),attrs:{_i:33},on:{click:t.togglePendingSkills}},[i("text",{staticClass:t._$s(34,"sc","btn-text"),attrs:{_i:34}},[t._v(t._$s(34,"t0-0",t._s(t.showPendingSkills?"\u8fd4\u56de":"\u67e5\u770b\u6211\u7684\u53d8\u66f4")))])]):t._e()])],1)},r=[]},d039:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("af34")),c=s(i("7ca3")),n=s(i("ee10")),o=s(i("16bb")),d=s(i("666e")),l=s(i("011c")),u=s(i("6473")),f=s(i("cd5a"));function _(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function p(t){for(var e=1;e0?this.$set(this.filterListSelectLists,i,!0):this.$set(this.filterListSelectLists,i,!1),t("log","\u5f53\u524d\u9009\u62e9\u7684\u7b5b\u9009\u5217\u8868",this.filterListSelectLists," at pages/shop/buy-service.vue:262")},selectDetailPrice:function(e){if(e[0]){var i=e[0].split("-");this.queryData.start_price=i[0],this.queryData.end_price=i[1]||null}else this.queryData.start_price=null,this.queryData.end_price=null;this.handleSelectLists(e,1),this.$set(this.infoDetailLists,0,e),t("log","\u9009\u62e9\u7684\u4ef7\u683c\u533a\u95f4",e," at pages/shop/buy-service.vue:276")},selectDetailSort:function(e){this.handleSelectLists(e,2),this.$set(this.infoDetailLists,1,e),this.queryData.ordersort=e[0],t("log","\u9009\u62e9\u7684\u6392\u5e8f\u65b9\u5f0f",e," at pages/shop/buy-service.vue:284")},refreshList:function(){var t=this;o.default.post("/sj/getserverlist",this.queryData).then((function(e){var i=e.data.map((function(e){return p(p({},e),{},{server_price:f.default.roundUpToTwoDecimals(Number(e.server_price),t.ratio)})}));t.serverlist=[].concat((0,r.default)(t.serverlist),(0,r.default)(i)),e.count==t.serverlist.length?t.hasMore=!1:(t.hasMore=!0,t.queryData.page=t.queryData.page+1),uni.stopPullDownRefresh()}))},onRefresh:function(){this.isRefreshing=!0,this.serverlist=[],this.queryData.page=1,this.refreshList()},loadMore:function(){this.hasMore&&this.refreshList()},getIconTabs:function(){var t=this;o.default.post("/sj/secondclass",{id:this.queryData.first_class_id}).then((function(e){t.iconTabs=e.data}))},getFirstlist:function(t,e,i){this.queryData.first_class_id=t,this.ratio=i,this.title=e,delete this.queryData.second_class_id,this.serverlist=[],this.queryData.page=1,this.refreshList(),this.getIconTabs()},getSecondlist:function(t){this.queryData.second_class_id=t,this.serverlist=[],this.queryData.page=1,this.refreshList()},filterChange:function(t){this.showFilter=t.show,this.showFilter&&(this.showTimeFilter=!1)},toggleFilter:function(){this.$refs.filterPopup.open()},toggleTimeFilter:function(){this.showTimeFilter=!this.showTimeFilter,this.showTimeFilter&&(this.showFilter=!1)},togglePrice:function(t){this.selectedPricesId=t.id,this.queryData.start_price=t.startPrice,this.queryData.end_price=t.endPrice},selectSort:function(t){this.selectedSort=t,this.queryData.ordersort=t+1},selectType:function(t){this.selectedType=t,this.queryData.server_kind=t+1},closeTimeFilter:function(){this.showTimeFilter=!1},getDate:function(t){this.queryData.date=[];var e=new Date;e.setTime(e.getTime());var i=e.getMonth()+1;i<=9&&(i="0"+i);var s=e.getDate();s<=9&&(s="0"+s);var a=e.getFullYear()+"-"+i+"-"+s,r=new Date;r.setTime(r.getTime()+864e5);var c=r.getMonth()+1;c<=9&&(c="0"+c);var n=r.getDate();n<=9&&(n="0"+n);var o=r.getFullYear()+"-"+c+"-"+n,d=new Date;d.setTime(d.getTime()+1728e5);var l=d.getMonth()+1;l<=9&&(l="0"+l);var u=d.getDate();u<=9&&(u="0"+u);var f=d.getFullYear()+"-"+l+"-"+u;return 0==t?this.queryData.date=["".concat(a)]:1==t?this.queryData.date=["".concat(a),"".concat(o)]:2==t?this.queryData.date=["".concat(a),"".concat(o),"".concat(f)]:void 0},selectTimeOption:function(t){var e=this;return(0,n.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return e.selectedTimeOption=t,i.next=3,e.getDate(t);case 3:e.showTimeFilter=!1,e.serverlist=[],e.queryData.page=1,e.refreshList();case 7:case"end":return i.stop()}}),i)})))()},goToDetail:function(t){uni.navigateTo({url:"/pages/shop/service-detail?id=".concat(t.id)})},resetFilter:function(){this.infoDetailLists=[],this.filterListSelectLists=[],this.selectedStars=[],this.selectedSort=-1,this.selectedPricesId=-1,this.selectedType=-1,delete this.queryData.start_price,delete this.queryData.end_price,delete this.queryData.ordersort,delete this.queryData.server_kind,this.confirmFilter()},confirmFilter:function(){this.closeFilter(),this.serverlist=[],this.queryData.page=1,t("log",this.queryData," at pages/shop/buy-service.vue:465"),this.refreshList()},closeFilter:function(){this.showFilter=!1},closeAllPopups:function(){this.showFilter=!1,this.showTimeFilter=!1}}};e.default=v}).call(this,i("f3b9")["default"])},d098:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{key:t._$s(0,"a-key",t.index),staticClass:t._$s(0,"sc","manHourCard"),attrs:{_i:0},on:{touchstart:function(e){return t.touchStart(e,t.index)},touchmove:t.touchMove,touchend:t.touchEnd,mousedown:function(e){return t.mouseDown(e,t.index)},mousemove:t.mouseMove,mouseup:t.mouseUp,mouseleave:t.mouseUp}},[t._$s(1,"i",0==t.info.state)?i("view",{staticClass:t._$s(1,"sc","delete-btn"),style:t._$s(1,"s",{transform:"translateX("+(t.info.slideX||0)+"rpx)"}),attrs:{_i:1},on:{click:function(e){return e.stopPropagation(),t.$emit("deletemanHour",t.info)}}},[i("text")]):t._e(),i("view",{staticClass:t._$s(3,"sc","manHour-content"),style:t._$s(3,"s",{transform:"translateX("+(t.info.slideX||0)+"rpx)"}),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","top_info"),attrs:{_i:4}},[i("image",{staticClass:t._$s(5,"sc","manHour-image"),attrs:{src:t._$s(5,"a-src",t.photo&&t.photo[0]),_i:5}}),i("view",{staticClass:t._$s(6,"sc","manHour-info"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","manHourTop"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","manHour-title white-space-nowrap"),attrs:{_i:8}},[t._v(t._$s(8,"t0-0",t._s(t.info.title)))]),i("view",{staticClass:t._$s(9,"sc","manHour-subtitle white-space-nowrap"),attrs:{_i:9}},[t._v(t._$s(9,"t0-0",t._s(t.info.first_class_title+" "+t.info.second_class_title.join("\u3001"))))])]),i("view",{staticClass:t._$s(10,"sc","manHour-price"),attrs:{_i:10}},[i("text",{staticClass:t._$s(11,"sc","price-symbol"),attrs:{_i:11}}),i("text",{staticClass:t._$s(12,"sc","price-value"),attrs:{_i:12}},[t._v(t._$s(12,"t0-0",t._s(t.price)))]),i("text",{staticClass:t._$s(13,"sc","price-unit"),attrs:{_i:13}})])])]),i("view",{class:t._$s(14,"c",["status-tag","state"+t.info.state]),attrs:{_i:14}},[i("text",{staticClass:t._$s(15,"sc","status-text"),attrs:{_i:15}},[t._v(t._$s(15,"t0-0",t._s(0==t.info.state?"\u8349\u7a3f":1==t.info.state?"\u5ba1\u6838\u4e2d":2==t.info.state?"\u5df2\u4e0a\u67b6":3==t.info.state?"\u4e0b\u67b6":4==t.info.state?"\u9a73\u56de":"")))])]),i("view",{staticClass:t._$s(16,"sc","btns"),attrs:{_i:16}},[t._$s(17,"i",2==t.info.state)?i("view",{staticClass:t._$s(17,"sc","view-btn"),attrs:{_i:17},on:{click:function(e){return t.$emit("viewRemove",t.info)}}},[i("text",{staticClass:t._$s(18,"sc","view-text"),attrs:{_i:18}})]):t._e(),t._$s(19,"i",3==t.info.state)?i("view",{staticClass:t._$s(19,"sc","view-btn"),attrs:{_i:19},on:{click:function(e){return t.$emit("viewList",t.info)}}},[i("text",{staticClass:t._$s(20,"sc","view-text"),attrs:{_i:20}})]):t._e(),i("view",{staticClass:t._$s(21,"sc","view-btn"),attrs:{_i:21},on:{click:function(e){return t.$emit("viewEdit",t.info)}}},[i("text",{staticClass:t._$s(22,"sc","view-text"),attrs:{_i:22}})])])])])},a=[]},d11e:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("a6d8")),n=s(i("804d")),o=i("53d1"),d=s(i("16bb")),l={components:{AgreeRadio:c.default,TipsPopup:n.default},data:function(){return{id:"",withdrawAmount:"",artisanType:getApp().globalData.artisanType,isAgreeProtocol:!1,balance:"",showTipsFlag:!1,isSubmitting:!1,withdrawalWay:"",aliWallet:{name:"",id:"",account:""},methodList:[{id:2,name:"\u652f\u4ed8\u5b9d",icon:"/static/images/alipay.png",selected:!1}]}},computed:{canSubmit:function(){return this.withdrawAmount&&this.isAgreeProtocol&&!this.isSubmitting&&this.aliWallet.name&&this.aliWallet.id&&this.aliWallet.account}},onLoad:function(){this.artisanType&&(this.debouncedSubmit=(0,o.debounce)(this.submit,500),this.getUserInfo())},methods:{getUserInfo:function(){var t=this,e=1==this.artisanType?2:2==this.artisanType?3:"";d.default.post("/sj/user/getuser",{type:e}).then((function(e){t.balance=e.data.money,t.id=e.data.id}))},showTipsPopup:function(){this.showTipsFlag=!0},closePopup:function(t){this.showTipsFlag=!1},handleAmountInput:function(t){var e=t.detail.value;if(e.indexOf(".")>-1){var i=e.split(".")[1];i.length>2&&(this.withdrawAmount=e.slice(0,e.indexOf(".")+3))}},goBindAccount:function(){uni.navigateTo({url:"/pages/wallet/bindaccount"})},selectMethod:function(t){this.methodList.forEach((function(e){e.selected=e.id===t.id})),this.withdrawalWay=t.id},changeAgree:function(t){this.isAgreeProtocol=t},viewProtocol:function(t){uni.navigateTo({url:"/pages/xieyi/xieyi?type="+t})},handleWithdraw:function(){this.canSubmit&&this.debouncedSubmit()},submit:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(!e.isSubmitting){i.next=2;break}return i.abrupt("return");case 2:if(e.withdrawAmount){i.next=5;break}return uni.showToast({title:"\u8bf7\u8f93\u5165\u63d0\u73b0\u91d1\u989d",icon:"none"}),i.abrupt("return");case 5:if(s=parseFloat(e.withdrawAmount),!(s<=1)){i.next=9;break}return uni.showToast({title:"\u63d0\u73b0\u91d1\u989d\u5fc5\u987b\u5927\u4e8e1",icon:"none"}),i.abrupt("return");case 9:if(!(s>200)){i.next=12;break}return uni.showToast({title:"\u63d0\u73b0\u91d1\u989d\u4e0d\u80fd\u5927\u4e8e200\u5143",icon:"none"}),i.abrupt("return");case 12:if(!(s>e.balance)){i.next=15;break}return uni.showToast({title:"\u63d0\u73b0\u91d1\u989d\u4e0d\u80fd\u5927\u4e8e\u8d26\u53f7\u4f59\u989d",icon:"none"}),i.abrupt("return");case 15:if(2!=e.withdrawalWay){i.next=25;break}if(e.aliWallet.name){i.next=19;break}return uni.showToast({title:"\u8bf7\u8f93\u5165\u771f\u5b9e\u59d3\u540d",icon:"none"}),i.abrupt("return");case 19:if(e.aliWallet.id){i.next=22;break}return uni.showToast({title:"\u8bf7\u8f93\u5165\u8eab\u4efd\u8bc1\u53f7",icon:"none"}),i.abrupt("return");case 22:if(e.aliWallet.account){i.next=25;break}return uni.showToast({title:"\u8bf7\u8f93\u5165\u624b\u673a\u53f7",icon:"none"}),i.abrupt("return");case 25:return i.prev=25,e.isSubmitting=!0,r={cash_type:e.artisanType,cash_money:e.withdrawAmount,cash_user_id:e.id,cash_name:e.aliWallet.name,cash_identity:e.aliWallet.account,cash_certno:e.aliWallet.id},i.next=30,d.default.post("/user/alitransfor",r).then((function(e){if(t("log","\u63d0\u73b0\u7ed3\u679c",e," at pages/wallet/withdraw.vue:306"),1!=e.state)2!=e.state||uni.showToast({title:"\u60a8\u6709\u63d0\u73b0\u7533\u8bf7\u4e2d\uff0c\u6682\u65e0\u6cd5\u63d0\u73b0",icon:"none"});else{uni.showToast({title:"\u63d0\u73b0\u7533\u8bf7\u5df2\u63d0\u4ea4\uff0c\u8bf7\u7b49\u5f85\u5ba1\u6838",icon:"none"});var i=getCurrentPages(),s=i[i.length-2];s&&(s.$vm.getUserInfo(),uni.navigateBack())}}));case 30:i.next=35;break;case 32:i.prev=32,i.t0=i["catch"](25),uni.showToast({title:"\u63d0\u73b0\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5",icon:"none"});case 35:return i.prev=35,e.isSubmitting=!1,i.finish(35);case 38:case"end":return i.stop()}}),i,null,[[25,32,35,38]])})))()}}};e.default=l}).call(this,i("f3b9")["default"])},d16e:function(t,e,i){"use strict";i.r(e);var s=i("70c9"),a=i("ac57");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},d17a:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this.$createElement,e=this._self._c||t;return e("view",[e("button",{attrs:{_i:1},on:{click:this.selectFile}}),e("input",{ref:"fileInput",attrs:{_i:2},on:{change:this.handleUpload}}),this._$s(3,"i",this.imageUrl)?e("image",{attrs:{src:this._$s(3,"a-src",this.imageUrl),_i:3}}):this._e()])},a=[]},d1bb:function(t,e,i){"use strict";i.r(e);var s=i("3c96"),a=i("e48a");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"1eae945e",null,!1,s["a"],void 0);e["default"]=n.exports},d202:function(t,e,i){"use strict";function s(){this.handlers=[]}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0,s.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},s.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},s.prototype.forEach=function(t){this.handlers.forEach((function(e){null!==e&&t(e)}))};var a=s;e.default=a},d247:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"manHourCard",props:{info:{type:Object},index:{type:Number}},data:function(){return{currentIndex:""}},computed:{photo:function(){return JSON.parse(this.info.photo)},price:function(){return Number(this.info.price)}},methods:{touchStart:function(t,e){0==this.info.state&&(t.preventDefault(),t.stopPropagation(),t.touches&&t.touches[0]&&(this.startX=t.touches[0].clientX,this.currentIndex=e))},touchMove:function(t){0===this.info.state&&(t.preventDefault(),t.stopPropagation(),t.touches&&t.touches[0]&&(this.moveX=t.touches[0].clientX-this.startX,this.moveX>0&&(this.moveX=0),this.moveX<-160&&(this.moveX=-160),this.$emit("changeSlide",{index:this.currentIndex,slide:this.moveX})))},touchEnd:function(t){0===this.info.state&&(t.preventDefault(),t.stopPropagation(),this.moveX<-80?this.$emit("changeSlide",{index:this.currentIndex,slide:-160}):this.$emit("changeSlide",{index:this.currentIndex}),this.currentIndex=-1)},mouseDown:function(t,e){0===this.info.state&&(t.preventDefault(),t.stopPropagation(),this.startX=t.clientX,this.currentIndex=e)},mouseMove:function(t){0===this.info.state&&(t.preventDefault(),t.stopPropagation(),this.moveX=t.clientX-this.startX,this.moveX>0&&(this.moveX=0),this.moveX<-160&&(this.moveX=-160),this.$emit("changeSlide",{index:this.currentIndex,slide:this.moveX}))},mouseUp:function(t){0===this.info.state&&(t.preventDefault(),t.stopPropagation(),this.moveX<-80?this.$emit("changeSlide",{index:this.currentIndex,slide:-160}):this.$emit("changeSlide",{index:this.currentIndex}),this.currentIndex=-1)}}};e.default=s},d27b:function(t,e,i){"use strict";i.r(e);var s=i("6c6a"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},d296:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("11ba")),o=s(i("c24c")),d=s(i("0ff7")),l={components:{StepTab:n.default,QualificationInfo:o.default,StoreInfo:d.default},data:function(){return{currentStep:0,isAgree:!1,identity:null,textData:{},loading:!1,error:null,navTitle:"\u5546\u5bb6\u5165\u9a7b",qualificationData:null,storeInfoData:null,artisanDataCache:{personalInfo:null,qualificationInfo:null}}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function t(){return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return e.identity=2,t.next=3,e.getUserInfoSync();case 3:e.getXieyi(1);case 4:case"end":return t.stop()}}),t)})))()},onShow:function(){t("log","\u5165\u9a7b\u9875\u9762 onShow - \u68c0\u67e5\u5730\u5740\u6570\u636e"," at pages/ruzhu/ruzhu.vue:110"),this.checkAndPassAddressToSj()},methods:{getUserInfoSync:function(){return(0,r.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,c.default.post("/sj/userSjAuth/details",{type:1}).then((function(e){if(200==e.code&&e.data){var i=e.data;if(2==getApp().globalData.artisanType){var s={uscc_num:i.uscc_num,uscc_name:i.uscc_name,legal_name:i.legal_name,legal_phone:i.legal_phone,legal_idcard_num:i.legal_idcard_num,uscc_photo:i.uscc_photo,legal_idcard_positive:i.legal_idcard_positive,legal_idcard_negative:i.legal_idcard_negative,uscc_type:i.uscc_type,license_valid_type:i.uscc_expiry_type};if(i.uscc_expiry){var a=i.uscc_expiry.split(" \u2014\u2014 ");s.license_start_date=a[0],s.license_end_date=a[1]}if(i.legal_idcard_expiry){var r=i.legal_idcard_expiry.split(" \u2014\u2014 ");s.idcard_start_date=r[0],r[1]?(s.legal_idcard_expiry_type="date",s.idcard_end_date=r[1]):(s.legal_idcard_expiry_type="permanent",s.idcard_end_date="")}uni.setStorageSync("qualification_form_data",s);var c={currentValidatingCode:i.invite_code_other};uni.setStorageSync("store_invite_state",c);var n={head_photo:i.head_photo,name:i.name,business_time:i.business_time,servers_kill:i.servers_kill,dependency:i.dependency,address:i.address,apply_state:i.apply_state,invite_code_other:i.invite_code_other,major:i.major,dependency_code:i.dependency_code,dependency_province:i.dependency_province,dependency_city:i.dependency_city,longitude:i.longitude,latitude:i.latitude};t("log",111111111,n," at pages/ruzhu/ruzhu.vue:176"),uni.setStorageSync("store_info_form_data",n)}}})).catch((function(e){t("error","\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u63a5\u53e3\u9519\u8bef:",e," at pages/ruzhu/ruzhu.vue:182")}));case 2:case"end":return e.stop()}}),e)})))()},parseIdCardExpiry:function(e){var i="",s="";try{var a=e.split(/\s*[-\u2014]{1,2}\s*/).map((function(t){return t.trim()})),r=a[0]||"",c=a[1]||"",n=function(t){if(!t)return"";if("\u957f\u671f"===t)return"\u957f\u671f";var e=t.replace(/-/g,"/"),i=new Date(e);if(isNaN(i.getTime()))return"";var s=i.getFullYear(),a=i.getMonth()+1,r=i.getDate();return"".concat(s,"\u5e74").concat(a,"\u6708").concat(r,"\u65e5")};r&&(i=n(r)),s=n(c)}catch(err){t("error","\u89e3\u6790\u8eab\u4efd\u8bc1\u6709\u6548\u671f\u5931\u8d25\uff1a",err," at pages/ruzhu/ruzhu.vue:235")}return{id_card_start_date:i,id_card_end_date:s}},checkAndPassAddressToSj:function(){var e=this;try{var i=uni.getStorageSync("sj_selected_address");i&&(t("log","\u627e\u5230\u5546\u5bb6\u5730\u5740\u6570\u636e\uff0c\u51c6\u5907\u4f20\u9012:",i," at pages/ruzhu/ruzhu.vue:249"),setTimeout((function(){if(2===e.identity&&e.$refs.storeInfo){if(t("log","\u4f20\u9012\u5730\u5740\u7ed9\u5546\u5bb6\u7ec4\u4ef6"," at pages/ruzhu/ruzhu.vue:254"),"function"===typeof e.$refs.storeInfo.handleAddressSelected)e.$refs.storeInfo.handleAddressSelected(i);else if(e.$refs.storeInfo.formData){if(e.$refs.storeInfo.formData.address=i.address||i.name,e.$refs.storeInfo.formData.longitude=i.longitude,e.$refs.storeInfo.formData.latitude=i.latitude,i.pname||i.cityname||i.adname){var s=[];i.pname&&s.push(i.pname),i.cityname&&s.push(i.cityname),i.adname&&s.push(i.adname),e.$refs.storeInfo.formData.dependency=s.join("-")}e.$refs.storeInfo.saveFormDataToLocal(),e.$refs.storeInfo.$forceUpdate()}uni.removeStorageSync("sj_selected_address")}}),300))}catch(s){t("error","\u5904\u7406\u5546\u5bb6\u5730\u5740\u5931\u8d25:",s," at pages/ruzhu/ruzhu.vue:285")}},checkAndPassAddressData:function(){try{var e=uni.getStorageSync("syr_selected_address");e&&this.$refs.personalInfo&&(t("log","\u6b65\u9aa4\u5207\u6362\u65f6\u53d1\u73b0\u5730\u5740\u6570\u636e\uff0c\u4f20\u9012\u7ed9\u7ec4\u4ef6"," at pages/ruzhu/ruzhu.vue:294"),"function"===typeof this.$refs.personalInfo.handleAddressSelected?this.$refs.personalInfo.handleAddressSelected(e):(this.$refs.personalInfo.formData.detail_address=e.address,this.$refs.personalInfo.formData.longitude=e.longitude,this.$refs.personalInfo.formData.latitude=e.latitude,this.$refs.personalInfo.saveFormDataToLocal(),this.$refs.personalInfo.$forceUpdate()),uni.removeStorageSync("syr_selected_address"))}catch(i){t("error","\u68c0\u67e5\u5730\u5740\u6570\u636e\u5931\u8d25:",i," at pages/ruzhu/ruzhu.vue:312")}},checkUserInfo:function(){t("log","\u68c0\u67e5\u7528\u6237\u4fe1\u606f..."," at pages/ruzhu/ruzhu.vue:318");var e=[{name:"\u672c\u5730\u5b58\u50a8-userInfo",data:uni.getStorageSync("userInfo")},{name:"\u672c\u5730\u5b58\u50a8-loginInfo",data:uni.getStorageSync("loginInfo")},{name:"\u672c\u5730\u5b58\u50a8-token",data:uni.getStorageSync("token")}];e.forEach((function(e){t("log","".concat(e.name,":"),e.data," at pages/ruzhu/ruzhu.vue:336")}));var i=uni.getStorageSync("token");i||(t("warn","\u672a\u68c0\u6d4b\u5230\u767b\u5f55token"," at pages/ruzhu/ruzhu.vue:342"),uni.showToast({title:"\u8bf7\u5148\u767b\u5f55",icon:"none"}))},getUserInfo:function(){return new Promise((function(e,i){c.default.post("/sj/User/getUser",{type:1}).then((function(s){1==s.state?(uni.setStorageSync("userInfo",s.data),t("log","\u7528\u6237\u4fe1\u606f\u83b7\u53d6\u6210\u529f:",s.data," at pages/ruzhu/ruzhu.vue:359"),e(s.data)):(t("error","\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u5931\u8d25:",s.msg," at pages/ruzhu/ruzhu.vue:362"),i(s.msg))})).catch((function(e){t("error","\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u63a5\u53e3\u9519\u8bef:",e," at pages/ruzhu/ruzhu.vue:366"),i(e)}))}))},checkAndGetUserInfo:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(s=uni.getStorageSync("userInfo"),!s||!s.account){i.next=4;break}return t("log","\u5df2\u6709\u7528\u6237\u4fe1\u606f:",s," at pages/ruzhu/ruzhu.vue:377"),i.abrupt("return",s);case 4:return i.prev=4,i.next=7,e.getUserInfo();case 7:return r=i.sent,i.abrupt("return",r);case 11:return i.prev=11,i.t0=i["catch"](4),t("error","\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u5931\u8d25:",i.t0," at pages/ruzhu/ruzhu.vue:386"),uni.showModal({title:"\u63d0\u793a",content:"\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u5931\u8d25\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55",showCancel:!1,success:function(){uni.navigateTo({url:"/pages/login/login"})}}),i.abrupt("return",null);case 16:case"end":return i.stop()}}),i,null,[[4,11]])})))()},submitForReview:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r,n,o;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.next=2,e.checkAndGetUserInfo();case 2:if(s=i.sent,s){i.next=5;break}return i.abrupt("return");case 5:if(uni.showLoading({title:"\u63d0\u4ea4\u4e2d..."}),i.prev=6,t("log","=== \u63d0\u4ea4\u5ba1\u6838\u8c03\u8bd5\u4fe1\u606f ==="," at pages/ruzhu/ruzhu.vue:414"),t("log","\u8eab\u4efd\u7c7b\u578b:",e.identity," at pages/ruzhu/ruzhu.vue:415"),t("log","\u95e8\u5e97\u4fe1\u606f\u6570\u636e:",e.storeInfoData," at pages/ruzhu/ruzhu.vue:416"),t("log","\u8d44\u8d28\u4fe1\u606f\u6570\u636e:",e.qualificationData," at pages/ruzhu/ruzhu.vue:417"),t("log","\u4e2a\u4eba\u4fe1\u606f\u6570\u636e:",e.personalInfoData," at pages/ruzhu/ruzhu.vue:418"),r="",n={},2!==e.identity){i.next=27;break}if(r="/sj/userSjAuth/apply",!e.$refs.storeInfo){i.next=22;break}if(e.$refs.storeInfo.saveFormData()){i.next=20;break}return uni.hideLoading(),i.abrupt("return");case 20:e.storeInfoData=e.$refs.storeInfo.getFormData(),t("log","\u91cd\u65b0\u83b7\u53d6\u7684\u95e8\u5e97\u4fe1\u606f:",e.storeInfoData," at pages/ruzhu/ruzhu.vue:437");case 22:if(e.storeInfoData&&e.storeInfoData.servers_kill&&0!==e.storeInfoData.servers_kill.length){i.next=26;break}return uni.hideLoading(),uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u6280\u80fd",icon:"none"}),i.abrupt("return");case 26:n=e.buildBusinessData(e.qualificationData,e.storeInfoData);case 27:return t("log","\u63d0\u4ea4\u7684\u6570\u636e:",n," at pages/ruzhu/ruzhu.vue:454"),t("log","API URL:",r," at pages/ruzhu/ruzhu.vue:455"),n.type=1,n.id_type=1,i.next=33,c.default.post(r,n);case 33:o=i.sent,uni.hideLoading(),1==o.state||200==o.code?uni.showToast({title:"\u63d0\u4ea4\u6210\u529f",icon:"none",duration:1500,success:function(){setTimeout((function(){uni.redirectTo({url:"./submitres?identity=".concat(e.identity,"&applyState=1")})}),1500)}}):uni.showToast({title:o.msg||"\u63d0\u4ea4\u5931\u8d25",icon:"none"}),i.next=43;break;case 38:i.prev=38,i.t0=i["catch"](6),uni.hideLoading(),t("error","\u63d0\u4ea4\u5ba1\u6838\u5931\u8d25:",i.t0," at pages/ruzhu/ruzhu.vue:487"),uni.showToast({title:"\u63d0\u4ea4\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5",icon:"none"});case 43:case"end":return i.stop()}}),i,null,[[6,38]])})))()},formatDateForBackend:function(t){if(!t)return"";if("\u957f\u4e45\u6709\u6548"===t||"\u957f\u4e45\u6709\u6548"===t)return"";var e=t.match(/(\d+)\u5e74(\d+)\u6708(\d+)\u65e5/);if(e){var i=e[1],s=e[2].padStart(2,"0"),a=e[3].padStart(2,"0");return"".concat(i,"-").concat(s,"-").concat(a)}return t},buildBusinessData:function(e,i){var s={};if(i&&i.servers_kill&&i.servers_kill.length>0?(s.servers_kill=Array.isArray(i.servers_kill)?i.servers_kill:[i.servers_kill],t("log","\u670d\u52a1\u6280\u80fd\u6570\u7ec4:",s.servers_kill," at pages/ruzhu/ruzhu.vue:524")):(t("warn","\u8b66\u544a\uff1a\u6ca1\u6709\u670d\u52a1\u6280\u80fd\u6570\u636e"," at pages/ruzhu/ruzhu.vue:526"),s.servers_kill=[]),e.uscc_type&&(s.uscc_type="individual"===e.uscc_type?1:2),e.uscc_photo&&(s.uscc_photo=e.uscc_photo),e.uscc_num&&(s.uscc_num=e.uscc_num),e.uscc_name&&(s.uscc_name=e.uscc_name),e.license_valid_type&&(s.uscc_expiry_type="permanent"===e.license_valid_type?1:2),e.license_start_date){var a=this.formatDateForBackend(e.license_start_date);if("permanent"===e.license_valid_type)s.uscc_expiry="".concat(a," \u2014\u2014 ");else if(e.license_end_date){var r=this.formatDateForBackend(e.license_end_date);s.uscc_expiry="".concat(a," \u2014\u2014 ").concat(r)}}if(e.legal_name&&(s.legal_name=e.legal_name),e.legal_phone&&(s.legal_phone=e.legal_phone),e.legal_idcard_num&&(s.legal_idcard_num=e.legal_idcard_num),e.legal_idcard_expiry_type&&(s.legal_idcard_expiry_type="permanent"===e.legal_idcard_expiry_type?1:2),e.idcard_start_date){var c=this.formatDateForBackend(e.idcard_start_date);if("permanent"===e.legal_idcard_expiry_type)s.legal_idcard_expiry="".concat(c," \u2014\u2014 ");else if(e.idcard_end_date){var n=this.formatDateForBackend(e.idcard_end_date);s.legal_idcard_expiry="".concat(c," \u2014\u2014 ").concat(n)}}e.legal_idcard_positive&&(s.legal_idcard_positive=e.legal_idcard_positive),e.legal_idcard_negative&&(s.legal_idcard_negative=e.legal_idcard_negative),i.head_photo&&(s.head_photo=i.head_photo),i.name&&(s.name=i.name),i.business_time&&(s.business_time=i.business_time),i.servers_kill&&i.servers_kill.length>0?(s.servers_kill=i.servers_kill,t("log","\u670d\u52a1\u6280\u80fd\u6570\u7ec4:",s.servers_kill," at pages/ruzhu/ruzhu.vue:607")):(s.servers_kill=[],t("warn","\u8b66\u544a\uff1a\u6ca1\u6709\u670d\u52a1\u6280\u80fd\u6570\u636e"," at pages/ruzhu/ruzhu.vue:610")),t("log","\u6700\u7ec8 formData \u4e2d\u7684 servers_kill:",s.servers_kill," at pages/ruzhu/ruzhu.vue:613"),t("log","=== \u8c03\u8bd5\u7ed3\u675f ==="," at pages/ruzhu/ruzhu.vue:614"),i.dependency&&(s.dependency=i.dependency,i.dependency_code&&(s.dependency_code=i.dependency_code),i.dependency_province&&(s.dependency_province=i.dependency_province),i.dependency_city&&(s.dependency_city=i.dependency_city)),i.address&&(s.address=i.address),i.longitude&&(s.longitude=i.longitude),i.latitude&&(s.latitude=i.latitude),i.apply_state&&(s.get_msg_method=i.apply_state),i.invite_code_other&&(s.invite_code_other=i.invite_code_other),i.major&&(s.major=i.major);var o=uni.getStorageSync("userInfo");if(o&&o.account)s.account=o.account;else{var d=uni.getStorageSync("loginAccount");if(d)s.account=d;else{if(!e.legal_phone)return t("error","\u65e0\u6cd5\u83b7\u53d6\u8d26\u53f7\u4fe1\u606f"," at pages/ruzhu/ruzhu.vue:664"),uni.showToast({title:"\u65e0\u6cd5\u83b7\u53d6\u7528\u6237\u8d26\u53f7",icon:"none"}),null;s.account=e.legal_phone}}return t("log","\u4f7f\u7528\u7684\u8d26\u53f7:",s.account," at pages/ruzhu/ruzhu.vue:674"),s},goNext:function(){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(t("log","\u5f53\u524d\u6b65\u9aa4:",e.currentStep," at pages/ruzhu/ruzhu.vue:680"),t("log","\u8eab\u4efd\u7c7b\u578b:",e.identity," at pages/ruzhu/ruzhu.vue:681"),0!==e.currentStep||e.isAgree){i.next=5;break}return uni.showToast({title:"\u8bf7\u9605\u8bfb\u5e76\u540c\u610f\u4ee5\u4e0a\u534f\u8bae",icon:"none"}),i.abrupt("return");case 5:if(1!==e.currentStep){i.next=16;break}if(t("log","\u5546\u5bb6\u9a8c\u8bc1\u8d44\u8d28\u4fe1\u606f"," at pages/ruzhu/ruzhu.vue:694"),!e.$refs.qualificationInfo){i.next=16;break}return i.next=10,e.$refs.qualificationInfo.saveFormData();case 10:if(s=i.sent,s){i.next=14;break}return t("log","\u5546\u5bb6\u8d44\u8d28\u4fe1\u606f\u9a8c\u8bc1\u5931\u8d25"," at pages/ruzhu/ruzhu.vue:699"),i.abrupt("return");case 14:e.qualificationData=e.$refs.qualificationInfo.getFormData(),t("log"," \u5546\u5bb6\u8d44\u8d28\u4fe1\u606f\u9a8c\u8bc1\u901a\u8fc7 "," at pages/ruzhu/ruzhu.vue:703");case 16:if(2!==e.currentStep){i.next=26;break}if(!e.$refs.storeInfo){i.next=26;break}return i.next=20,e.$refs.storeInfo.saveFormData();case 20:if(r=i.sent,r){i.next=24;break}return t("log","\u5546\u5bb6\u95e8\u5e97\u4fe1\u606f\u9a8c\u8bc1\u5931\u8d25"," at pages/ruzhu/ruzhu.vue:713"),i.abrupt("return");case 24:e.storeInfoData=e.$refs.storeInfo.getFormData(),t("log","\u5546\u5bb6\u95e8\u5e97\u4fe1\u606f\u9a8c\u8bc1\u901a\u8fc7"," at pages/ruzhu/ruzhu.vue:717");case 26:e.currentStep<2?(e.currentStep++,t("log","\u5207\u6362\u5230\u6b65\u9aa4:",e.currentStep," at pages/ruzhu/ruzhu.vue:723"),setTimeout((function(){e.scrollToTop()}),100)):e.completeRegistration();case 27:case"end":return i.stop()}}),i)})))()},submitApplication:function(){if(this.$refs.storeInfo){if(!this.$refs.storeInfo.saveFormData())return;this.storeInfoData=this.$refs.storeInfo.getFormData(),t("log","\u5546\u5bb6\u95e8\u5e97\u4fe1\u606f\u6570\u636e:",this.storeInfoData," at pages/ruzhu/ruzhu.vue:742")}this.completeRegistration()},goPrev:function(){this.currentStep>0&&this.currentStep--},completeRegistration:function(){this.submitForReview()},scrollToTop:function(){uni.pageScrollTo({scrollTop:0,duration:0})},getXieyi:function(e){var i=this;return(0,r.default)(a.default.mark((function s(){var r;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return i.loading=!0,i.error=null,s.prev=2,s.next=5,c.default.post("/user/getsystemtext",{type:e});case 5:r=s.sent,i.textData=r.data,s.next=14;break;case 9:s.prev=9,s.t0=s["catch"](2),t("error","\u83b7\u53d6\u534f\u8bae\u5931\u8d25:",s.t0," at pages/ruzhu/ruzhu.vue:774"),i.error="\u83b7\u53d6\u534f\u8bae\u5185\u5bb9\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5",uni.showToast({title:"\u83b7\u53d6\u534f\u8bae\u5185\u5bb9\u5931\u8d25",icon:"none"});case 14:return s.prev=14,i.loading=!1,s.finish(14);case 17:case"end":return s.stop()}}),s,null,[[2,9,14,17]])})))()}}};e.default=l}).call(this,i("f3b9")["default"])},d2b0:function(t,e,i){"use strict";i.r(e);var s=i("5137"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},d2db:function(t,e,i){"use strict";i.r(e);var s=i("f806"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},d2f4:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","service-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u62fc\u56e2\u7ba1\u7406",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","flexed"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","headerBox"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","search-box"),attrs:{_i:4}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.title,expression:"title"}],staticClass:t._$s(5,"sc","search-inp"),attrs:{_i:5},domProps:{value:t._$s(5,"v-model",t.title)},on:{confirm:t.getServicesList,input:function(e){e.target.composing||(t.title=e.target.value)}}}),i("image",{staticClass:t._$s(6,"sc","search-icon"),attrs:{_i:6},on:{click:t.getServicesList}})]),i("view",{staticClass:t._$s(7,"sc","addBox"),attrs:{_i:7},on:{click:t.addGroup}},[i("image",{staticClass:t._$s(8,"sc","addIcon"),attrs:{_i:8}}),i("text",{staticClass:t._$s(9,"sc","addText"),attrs:{_i:9}})])]),i("view",{staticClass:t._$s(10,"sc","tab-container"),attrs:{_i:10}},t._l(t._$s(11,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("view",{key:t._$s(11,"f",{forIndex:a,key:s}),class:t._$s("11-"+r,"c",["tab-item",{active:t.currentTab===s}]),attrs:{_i:"11-"+r},on:{click:function(i){return t.switchTab(s,e.id)}}},[t._v(t._$s("11-"+r,"t0-0",t._s(e.text)))])})),0)]),t._$s(12,"i",0!=t.services.length||!t.services)?i("view",{staticClass:t._$s(12,"sc","service-list"),attrs:{_i:12}},t._l(t._$s(13,"f",{forItems:t.services}),(function(e,s,a,r){return i("listCard",{key:t._$s(13,"f",{forIndex:a,key:s}),staticClass:t._$s("13-"+r,"sc","service-list-item"),attrs:{info:e,_i:"13-"+r},on:{cancel:t.cancelGroup,edit:t.addGroup,copy:t.copyGroup,check:t.checkGroup}})})),1):t._e(),i("tipsPopup",{attrs:{show:t.showTip,sureText:"\u786e\u5b9a",_i:14},on:{okBtn:t.showCancel,closePopup:function(e){t.showTip=!1}}},[t._$s(15,"i",6==t.tipsState)?i("text",{attrs:{_i:15}},[i("text")]):i("text",{attrs:{_i:17}},[i("text")])]),t._$s(19,"i",t.selectItem)?i("tipsPopup",{attrs:{show:t.showCancelGroup,sureText:"\u786e\u5b9a",title:"\u7ed3\u675f\u539f\u56e0",_i:19},on:{okBtn:t.setCancelGroup,closePopup:function(e){t.showCancelGroup=!1}}},[t._$s(20,"i",t.selectItem.expire_back_text)?i("view",{staticClass:t._$s(20,"sc","mrrCanceltextarea"),attrs:{_i:20}},[i("text",{staticClass:t._$s(21,"sc","mrrCanceltextarea-title"),attrs:{_i:21}}),t._$s(22,"i",6==t.selectItem.state)?i("text",{staticClass:t._$s(22,"sc","mrrCanceltextarea-text"),attrs:{_i:22}},[t._v(t._$s(22,"t0-0",t._s(t.selectItem.expire_back_text)))]):t._e()]):t._e(),i("view",{staticClass:t._$s(23,"sc","canceltextarea"),attrs:{_i:23}},[i("textarea",{directives:[{name:"model",rawName:"v-model",value:t.reasonValue,expression:"reasonValue"}],staticClass:t._$s(24,"sc","canceltextarea__textarea"),attrs:{_i:24},domProps:{value:t._$s(24,"v-model",t.reasonValue)},on:{input:function(e){e.target.composing||(t.reasonValue=e.target.value)}}})])]):t._e()],1)},r=[]},d354:function(t,e,i){"use strict";i.r(e);var s=i("d098"),a=i("b466");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"547e7a54",null,!1,s["a"],void 0);e["default"]=n.exports},d398:function(t,e,i){"use strict";i.r(e);var s=i("586d"),a=i("6ba0");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"57674454",null,!1,s["a"],void 0);e["default"]=n.exports},d3bb:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,uvCountDown:i("b054").default,agreeRadio:i("a6d8").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","pay-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u652f\u4ed8\u8ba2\u5355",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","amount-section"),attrs:{_i:2}},[i("image",{staticClass:t._$s(3,"sc","pay_icon"),attrs:{_i:3}}),i("view",{staticClass:t._$s(4,"sc","amount"),attrs:{_i:4}},[i("text",{staticClass:t._$s(5,"sc","symbol"),attrs:{_i:5}}),i("text",{staticClass:t._$s(6,"sc","value"),attrs:{_i:6}},[t._v(t._$s(6,"t0-0",t._s(t.orderInfo.pay_money)))])]),t._$s(7,"i",t.countdown)?i("view",{staticClass:t._$s(7,"sc","countdown"),attrs:{_i:7}},[i("uv-count-down",{attrs:{time:1e3*t.countdown,format:"mm:ss",_i:8},on:{finish:t.finish}})],1):t._e()]),i("view",{staticClass:t._$s(9,"sc","method-section"),attrs:{_i:9}},[i("view",{staticClass:t._$s(10,"sc","section-title"),attrs:{_i:10}}),i("view",{staticClass:t._$s(11,"sc","method-list"),attrs:{_i:11}},t._l(t._$s(12,"f",{forItems:t.methodList}),(function(e,s,a,r){return i("view",{key:t._$s(12,"f",{forIndex:a,key:s}),staticClass:t._$s("12-"+r,"sc","method-item"),attrs:{_i:"12-"+r},on:{click:function(i){return t.selectMethod(e)}}},[i("view",{staticClass:t._$s("13-"+r,"sc","method-info"),attrs:{_i:"13-"+r}},[i("image",{staticClass:t._$s("14-"+r,"sc","method-icon"),attrs:{src:t._$s("14-"+r,"a-src",e.icon),_i:"14-"+r}}),i("text",{staticClass:t._$s("15-"+r,"sc","method-name"),attrs:{_i:"15-"+r}},[t._v(t._$s("15-"+r,"t0-0",t._s(e.name)))])]),i("agree-radio",{attrs:{isAgree:e.selected,yesImg:"/static/images/icons/yes_icon.png",radioSize:"40rpx",noImg:"/static/images/icons/no_icon.png",_i:"16-"+r}})],1)})),0)]),i("view",{staticClass:t._$s(17,"sc","footer"),attrs:{_i:17}},[i("view",{staticClass:t._$s(18,"sc","pay-btn"),attrs:{_i:18},on:{click:t.confirmPay}})])],1)},r=[]},d436:function(t,e,i){"use strict";i.r(e);var s=i("25dc"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},d455:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb"));function n(t,e){var i="undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=function(t,e){if(!t)return;if("string"===typeof t)return o(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);"Object"===i&&t.constructor&&(i=t.constructor.name);if("Map"===i||"Set"===i)return Array.from(t);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return o(t,e)}(t))||e&&t&&"number"===typeof t.length){i&&(t=i);var s=0,a=function(){};return{s:a,n:function(){return s>=t.length?{done:!0}:{done:!1,value:t[s++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,c=!0,n=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return c=t.done,t},e:function(t){n=!0,r=t},f:function(){try{c||null==i.return||i.return()}finally{if(n)throw r}}}}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i2&&void 0!==arguments[2]?arguments[2]:1,s=e,a=this.formatPriceNumber(t).length;return a>7&&1==i&&(s-=4),a>7&&2==i&&(s-=3),3===i&&(a>4&&(s-=10),a>5&&(s-=4),a>6&&(s-=6),a>7&&(s-=6)),4===i&&(a>5&&(s-=2),a>6&&(s-=2)),5===i&&(a>6&&(s-=6),a>7&&(s-=4),a>8&&(s-=4)),s},pxToRpx:function(t,e){if("number"!==typeof t)throw new Error("\u8bf7\u4f20\u5165\u6570\u5b57\u7c7b\u578b\u7684px\u503c");return t*(750/e)},getRpxStatusBarHeight:function(){var t=this.$store.state.systemInfo.statusBarHeight,e=this.$store.state.systemInfo.screenWidth;return this.pxToRpx(t,e)},messageUpudateNum:function(){var t=this;uni.getStorageSync("accessToken")&&c.default.post("/sj/push/messageUnreadNum").then((function(e){200==e.code&&t.$store.commit("setMessageNum",e.data.count)}))},messageRead:function(e){var i=this;c.default.post("/sj/push/messageRead",{id:e}).then((function(e){t("log","messageRead:",e," at mixins/mixins.js:130"),i.messageUpudateNum()}))},getImagePath:function(e){var i=this;return(0,r.default)(a.default.mark((function s(){var r,c,o,d,l,u,f,_,p;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(e){s.next=3;break}return t("error","getImagePath\uff1a\u8bf7\u4f20\u5165\u6709\u6548\u7684URL\uff08\u5b57\u7b26\u4e32/\u6570\u7ec4\uff09"," at mixins/mixins.js:158"),s.abrupt("return",Array.isArray(e)?[]:"");case 3:if(r=Array.isArray(e),c=r?e.filter((function(t){return"string"===typeof t&&t.trim()})):[e.trim()],0!==c.length){s.next=7;break}return s.abrupt("return",r?[]:"");case 7:o=[],d=n(c),s.prev=9,d.s();case 11:if((l=d.n()).done){s.next=31;break}if(u=l.value,s.prev=13,f=i._getImageCacheKey(u),_=uni.getStorageSync(f),!_){s.next=19;break}return o.push(_),s.abrupt("continue",29);case 19:return s.next=21,i._downloadAndCacheImage(u);case 21:p=uni.getStorageSync(f),o.push(p||u),s.next=29;break;case 25:s.prev=25,s.t0=s["catch"](13),t("warn","\u56fe\u7247".concat(u,"\u7f13\u5b58\u5931\u8d25\uff0c\u4f7f\u7528\u7f51\u7edc\u8def\u5f84\uff1a"),s.t0.message," at mixins/mixins.js:192"),o.push(u);case 29:s.next=11;break;case 31:s.next=36;break;case 33:s.prev=33,s.t1=s["catch"](9),d.e(s.t1);case 36:return s.prev=36,d.f(),s.finish(36);case 39:return s.abrupt("return",r?o:o[0]);case 40:case"end":return s.stop()}}),s,null,[[9,33,36,39],[13,25]])})))()},_downloadAndCacheImage:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){var s,r,c;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.next=2,new Promise((function(e,i){uni.downloadFile({url:t,success:e,fail:function(t){return i(new Error("\u4e0b\u8f7d\u5931\u8d25\uff1a".concat(t.errMsg)))}})}));case 2:if(s=i.sent,200===s.statusCode){i.next=5;break}throw new Error("\u4e0b\u8f7d\u72b6\u6001\u5f02\u5e38\uff1a\u72b6\u6001\u7801".concat(s.statusCode));case 5:return i.next=7,new Promise((function(t,e){uni.saveFile({tempFilePath:s.tempFilePath,success:t,fail:function(t){return e(new Error("\u4fdd\u5b58\u5931\u8d25\uff1a".concat(t.errMsg)))}})}));case 7:r=i.sent,c=e._getImageCacheKey(t),uni.setStorageSync(c,r.savedFilePath);case 10:case"end":return i.stop()}}),i)})))()},_getImageCacheKey:function(t){return plus.runtime.MD5?"img_cache_".concat(plus.runtime.MD5(t)):"img_cache_".concat(encodeURIComponent(t).replace(/[^\w]/g,"_"))}}};e.default=d}).call(this,i("f3b9")["default"])},d45e:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{directives:[{name:"show",rawName:"v-show",value:t._$s(0,"v-show",t.isShow),expression:"_$s(0,'v-show',isShow)"}],ref:"ani",class:t._$s(0,"c",t.customClass),style:t._$s(0,"s",t.transformStyles),attrs:{animation:t._$s(0,"a-animation",t.animationData),_i:0},on:{click:t.onClick}},[t._t("default",null,{_i:1})],2)},a=[]},d460:function(t,e,i){"use strict";i.r(e);var s=i("b7ae"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},d492:function(t,e,i){"use strict";i.r(e);var s=i("a30a"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},d517:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("f976"));e.default=function(t){return(0,a.default)(t)}},d551:function(t,e,i){var s=i("3b2d")["default"],a=i("e6db");t.exports=function(t){var e=a(t,"string");return"symbol"==s(e)?e:e+""},t.exports.__esModule=!0,t.exports["default"]=t.exports},d5b0:function(t,e,i){"use strict";i.r(e);var s=i("343e"),a=i("4f87");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},d60b:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n={data:function(){return{appeallist:[],user:{}}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function t(){var i;return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,c.default.post("/user/getuser",{type:1});case 2:i=t.sent,e.user=i,e.gegetappeallist();case 5:case"end":return t.stop()}}),t)})))()},methods:{gegetappeallist:function(){var t=this;c.default.post("/user/gegetappeallist",{user_id:this.user.data.id}).then((function(e){t.appeallist=e.data}))},removeComplaint:function(t){var e=this;c.default.post("/user/revokeappeal",{order_number:t.order_number}).then((function(t){e.appeallist=t.data,1==t.state?(uni.showToast({title:"\u64a4\u9500\u6210\u529f",icon:"none"}),e.gegetappeallist()):uni.showToast({title:t.msg,icon:"none"})}))},lookComplaint:function(t){uni.navigateTo({url:"/pages/complaint/detail?number="+t.order_number})},againComplaint:function(t){uni.navigateTo({url:"/pages/complaint/add-complaint?number="+t.order_number})},contact:function(){uni.navigateTo({url:"/pages/contact/contact"})}}};e.default=n},d60e:function(t,e,i){"use strict";i.r(e);var s=i("4292"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},d60f:function(t,e,i){"use strict";i.r(e);var s=i("8256"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},d61a:function(t,e,i){"use strict";i.r(e);var s=i("8a6b"),a=i("c901");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},d628:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("7ca3")),c=s(i("34cf")),n=s(i("ee10")),o=s(i("16bb")),d=(s(i("eae7")),s(i("91d2"))),l=s(i("668a")),u=i("e9a7");function f(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function _(t){for(var e=1;e0?uni.showToast({title:"\u8eab\u4efd\u8bc1\u6b63\u9762\u8bc6\u522b\u6210\u529f",icon:"none"}):uni.showToast({title:"\u8bc6\u522b\u5b8c\u6210\uff0c\u4f46\u672a\u83b7\u53d6\u5230\u6709\u6548\u4fe1\u606f",icon:"none",duration:3e3}),s.next=23;break;case 19:s.prev=19,s.t0=s["catch"](0),t("error","\u8eab\u4efd\u8bc1\u6b63\u9762\u8bc6\u522b\u5931\u8d25:",s.t0," at pages/artisan/syr-info-change.vue:550"),uni.showToast({title:s.t0.message||"\u8bc6\u522b\u5931\u8d25\uff0c\u8bf7\u624b\u52a8\u586b\u5199",icon:"none",duration:3e3});case 23:return s.prev=23,i.isRecognizing=!1,uni.hideLoading(),s.finish(23);case 27:case"end":return s.stop()}}),s,null,[[0,19,23,27]])})))()},checkIdCardFrontRecognition:function(t){return t.name&&t.name.trim()||t.id_number&&t.id_number.trim()},recognizeIdCardBack:function(e){var i=this;return(0,n.default)(a.default.mark((function s(){var r,c,n;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:return s.prev=0,i.isRecognizing=!0,i.recognizeType="idcard_negative",uni.showLoading({title:"\u6b63\u5728\u8bc6\u522b\u8eab\u4efd\u8bc1\u53cd\u9762...",mask:!0}),s.next=6,(0,u.recognizeIdCard)(e,2);case 6:if(r=s.sent,c=i.checkIdCardBackRecognition(r),c){s.next=13;break}return uni.hideLoading(),uni.showToast({title:"\u672a\u8bc6\u522b\u5230\u8eab\u4efd\u8bc1\u6709\u6548\u671f\u4fe1\u606f\uff0c\u8bf7\u624b\u52a8\u586b\u5199\u6216\u91cd\u65b0\u62cd\u6444",icon:"none",duration:3e3}),i.isRecognizing=!1,s.abrupt("return");case 13:n=(0,u.parseValidPeriod)(r.start_date,r.end_date),n.startDate&&(i.displayData.idcard_start_date=n.startDate),n.isPermanent?(i.displayData.idcard_expiry_type=1,i.displayData.idcard_end_date="\u957f\u4e45\u6709\u6548"):n.endDate&&(i.displayData.idcard_expiry_type=2,i.displayData.idcard_end_date=n.endDate),uni.showToast({title:"\u8eab\u4efd\u8bc1\u53cd\u9762\u8bc6\u522b\u6210\u529f",icon:"none"}),s.next=23;break;case 19:s.prev=19,s.t0=s["catch"](0),t("error","\u8eab\u4efd\u8bc1\u53cd\u9762\u8bc6\u522b\u5931\u8d25:",s.t0," at pages/artisan/syr-info-change.vue:619"),uni.showToast({title:s.t0.message||"\u8bc6\u522b\u5931\u8d25\uff0c\u8bf7\u624b\u52a8\u586b\u5199",icon:"none",duration:3e3});case 23:return s.prev=23,i.isRecognizing=!1,uni.hideLoading(),s.finish(23);case 27:case"end":return s.stop()}}),s,null,[[0,19,23,27]])})))()},checkIdCardBackRecognition:function(t){return t.start_date&&t.start_date.trim()||t.end_date&&t.end_date.trim()},checkAddressData:function(){t("log","=== \u6267\u884c checkAddressData ==="," at pages/artisan/syr-info-change.vue:640");try{var e=uni.getStorageSync("syr_selected_address");if(t("log","\u68c0\u67e5 syr_selected_address:",e," at pages/artisan/syr-info-change.vue:645"),e)return t("log","\u627e\u5230\u624b\u827a\u4eba\u5730\u5740\u6570\u636e\uff0c\u8c03\u7528 handleAddressSelected"," at pages/artisan/syr-info-change.vue:648"),this.handleAddressSelected(e),void uni.removeStorageSync("syr_selected_address")}catch(s){t("error","\u68c0\u67e5\u624b\u827a\u4eba\u5730\u5740\u5931\u8d25:",s," at pages/artisan/syr-info-change.vue:654")}try{var i=uni.getStorageSync("selectedAddress");if(t("log","\u68c0\u67e5 selectedAddress:",i," at pages/artisan/syr-info-change.vue:660"),i)return this.handleAddressSelected(i),void uni.removeStorageSync("selectedAddress")}catch(s){t("error","\u68c0\u67e5\u901a\u7528\u5730\u5740\u5b58\u50a8\u5931\u8d25:",s," at pages/artisan/syr-info-change.vue:668")}getApp().globalData&&getApp().globalData.selectedAddress&&(t("log","\u4ece globalData \u83b7\u53d6\u5730\u5740:",getApp().globalData.selectedAddress," at pages/artisan/syr-info-change.vue:673"),this.handleAddressSelected(getApp().globalData.selectedAddress),delete getApp().globalData.selectedAddress)},handleAddressSelected:function(e){var i=this;if(e&&e.name){var s=e.name||e.address||"";if(s){if(t("log","\u8bbe\u7f6e\u5730\u5740:",s," at pages/artisan/syr-info-change.vue:693"),this.displayData.address=s,e.location){var a=e.location.split(","),r=(0,c.default)(a,2),n=r[0],o=r[1];this.displayData.longitude=n||"",this.displayData.latitude=o||""}if(e.pname||e.cityname||e.adname){var d=[];e.pname&&d.push(e.pname),e.cityname&&d.push(e.cityname),e.adname&&d.push(e.adname);var l=d.join("-");this.displayData.dependency=l}this.pendingData.address=s,this.pendingData.longitude=this.displayData.longitude,this.pendingData.latitude=this.displayData.latitude,this.pendingData.dependency=this.displayData.dependency,t("log","\u5730\u5740\u66f4\u65b0\u5b8c\u6210:",{address:this.displayData.address,dependency:this.displayData.dependency,longitude:this.displayData.longitude,latitude:this.displayData.latitude}," at pages/artisan/syr-info-change.vue:721"),this.$forceUpdate(),setTimeout((function(){t("log","\u5ef6\u8fdf\u5237\u65b0\u89c6\u56fe"," at pages/artisan/syr-info-change.vue:740"),i.$forceUpdate()}),100)}else t("log","\u65e0\u6cd5\u63d0\u53d6\u5730\u5740"," at pages/artisan/syr-info-change.vue:689")}else t("log","\u5730\u5740\u6570\u636e\u65e0\u6548:",e," at pages/artisan/syr-info-change.vue:682")},clearAddressStorage:function(){try{uni.removeStorageSync("selectedAddress"),uni.removeStorageSync("syr_selected_address"),getApp().globalData&&(getApp().globalData.selectedAddress=null),t("log","\u5df2\u6e05\u7406\u5730\u5740\u5b58\u50a8"," at pages/artisan/syr-info-change.vue:753")}catch(e){t("error","\u6e05\u7406\u5730\u5740\u5b58\u50a8\u5931\u8d25:",e," at pages/artisan/syr-info-change.vue:755")}},getAddressInfo:function(){if(this.editable){var e="source=syr_info";if(this.displayData.dependency){var i=encodeURIComponent(this.displayData.dependency);e+="&dependency=".concat(i),this.displayData.dependency_code&&(e+="&dependency_code=".concat(this.displayData.dependency_code)),t("log","\u4f20\u9012\u7684\u5730\u533a\u4fe1\u606f:",this.displayData.dependency," at pages/artisan/syr-info-change.vue:775"),t("log","\u7f16\u7801\u540e\u7684\u5730\u533a\u4fe1\u606f:",i," at pages/artisan/syr-info-change.vue:776")}this.displayData.longitude&&this.displayData.latitude&&(e+="&longitude=".concat(this.displayData.longitude,"&latitude=").concat(this.displayData.latitude)),t("log","\u8df3\u8f6cURL\u53c2\u6570:",e," at pages/artisan/syr-info-change.vue:784");try{uni.removeStorageSync("syr_selected_address"),uni.removeStorageSync("selectedAddress"),getApp().globalData&&(getApp().globalData.selectedAddress=null),t("log","\u5df2\u6e05\u7406\u65e7\u5730\u5740\u6570\u636e"," at pages/artisan/syr-info-change.vue:793")}catch(s){t("error","\u6e05\u7406\u5730\u5740\u5b58\u50a8\u5931\u8d25:",s," at pages/artisan/syr-info-change.vue:795")}uni.navigateTo({url:"/pages/address/search?".concat(e),success:function(){t("log","\u6210\u529f\u8df3\u8f6c\u5230\u5730\u5740\u9009\u62e9\u9875\u9762"," at pages/artisan/syr-info-change.vue:801")},fail:function(e){t("error","\u8df3\u8f6c\u5730\u5740\u9009\u62e9\u9875\u9762\u5931\u8d25:",e," at pages/artisan/syr-info-change.vue:804")}})}},saveCurrentData:function(){try{var e={address:this.displayData.address,longitude:this.displayData.longitude,latitude:this.displayData.latitude};uni.setStorageSync("current_address_data",e)}catch(i){t("error","\u4fdd\u5b58\u5f53\u524d\u6570\u636e\u5931\u8d25:",i," at pages/artisan/syr-info-change.vue:820")}},getUserInfo:function(){var e=this;return(0,n.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,o.default.post("/user/getuser",{type:2});case 3:s=i.sent,1===s.state&&s.data?(r=s.data,t("log","\u83b7\u53d6\u5230\u7684\u7528\u6237\u6570\u636e:",r," at pages/artisan/syr-info-change.vue:831"),e.userId=r.id,e.originalData={head_photo:r.head_photo||"",name:r.name||r.real_name||"",account:r.account||r.phone||"",second_phone:r.second_phone||r.backup_phone||"",idcard_num:r.idcard_num||r.id_card||"",idcard_expiry_type:r.idcard_expiry_type||0,idcard_positive:r.idcard_positive||r.id_card_front||"",idcard_negative:r.idcard_negative||r.id_card_back||"",idcard_hands:r.idcard_hands||r.id_card_handheld||"",detail:r.detail||r.introduction||"",dependency:r.dependency||r.region||"",address:r.address||r.detail_address||"",dependency_code:r.dependency_code||"",dependency_province:r.dependency_province||"",dependency_city:r.dependency_city||"",major:r.major||r.professional_experience||"",work_state:r.work_state||r.work_status||"",longitude:r.longitude||"",latitude:r.latitude||"",idcard_start_date:"",idcard_end_date:""},r.idcard_expiry&&e.processIdcardExpiry(r.idcard_expiry,e.originalData),e.pendingData=_({},e.originalData),e.displayData=_({},e.originalData),t("log","\u6570\u636e\u521d\u59cb\u5316\u5b8c\u6210:",{originalData:e.originalData,pendingData:e.pendingData,displayData:e.displayData}," at pages/artisan/syr-info-change.vue:869")):t("error","\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u5931\u8d25:",s.msg," at pages/artisan/syr-info-change.vue:875"),i.next=10;break;case 7:i.prev=7,i.t0=i["catch"](0),t("error","\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u63a5\u53e3\u9519\u8bef:",i.t0," at pages/artisan/syr-info-change.vue:878");case 10:case"end":return i.stop()}}),i,null,[[0,7]])})))()},loadApplyDetails:function(){var e=this;return(0,n.default)(a.default.mark((function i(){var s,r;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,t("log","\u5f00\u59cb\u52a0\u8f7d\u7533\u8bf7\u8be6\u60c5..."," at pages/artisan/syr-info-change.vue:885"),i.next=4,o.default.post("/syr/userSyrAuth/details",{apply_type:e.applyType});case 4:s=i.sent,t("log","\u7533\u8bf7\u8be6\u60c5\u63a5\u53e3\u8fd4\u56de:",s," at pages/artisan/syr-info-change.vue:890"),200===s.code&&s.data?(r=s.data,e.applyId=r.id,e.auditStatus=r.apply_state,e.backText=r.back_text||"",t("log","\u5ba1\u6838\u72b6\u6001:",e.auditStatus," at pages/artisan/syr-info-change.vue:899"),t("log","\u9a73\u56de\u539f\u56e0:",e.backText," at pages/artisan/syr-info-change.vue:900"),1!==e.auditStatus&&3!==e.auditStatus||(e.pendingData={head_photo:r.head_photo||e.originalData.head_photo,name:r.name||e.originalData.name,account:r.account||e.originalData.account,second_phone:r.second_phone||e.originalData.second_phone,idcard_num:r.idcard_num||e.originalData.idcard_num,idcard_expiry_type:r.idcard_expiry_type||e.originalData.idcard_expiry_type,idcard_positive:r.idcard_positive||e.originalData.idcard_positive,idcard_negative:r.idcard_negative||e.originalData.idcard_negative,idcard_hands:r.idcard_hands||e.originalData.idcard_hands,detail:r.detail||e.originalData.detail,dependency:r.dependency||e.originalData.dependency,address:r.address||e.originalData.address,dependency_code:r.dependency_code||e.originalData.dependency_code,dependency_province:r.dependency_province||e.originalData.dependency_province,dependency_city:r.dependency_city||e.originalData.dependency_city,major:r.major||e.originalData.major,work_state:r.work_state||e.originalData.work_state,longitude:r.longitude||e.originalData.longitude,latitude:r.latitude||e.originalData.latitude,idcard_start_date:"",idcard_end_date:""},r.idcard_expiry&&e.processIdcardExpiry(r.idcard_expiry,e.pendingData)),2===e.auditStatus&&(e.originalData=_({},e.pendingData)),e.updatePageStatus()):(t("log","\u7533\u8bf7\u8be6\u60c5\u8fd4\u56de\u6570\u636e\u4e3a\u7a7a\u6216state\u4e0d\u4e3a1:",s," at pages/artisan/syr-info-change.vue:942"),e.backText="",e.updatePageStatus()),i.next=14;break;case 9:i.prev=9,i.t0=i["catch"](0),t("error","\u52a0\u8f7d\u7533\u8bf7\u8be6\u60c5\u5931\u8d25:",i.t0," at pages/artisan/syr-info-change.vue:948"),e.backText="",e.updatePageStatus();case 14:case"end":return i.stop()}}),i,null,[[0,9]])})))()},updatePageStatus:function(){t("log","\u66f4\u65b0\u9875\u9762\u72b6\u6001\uff0c\u5ba1\u6838\u72b6\u6001:",this.auditStatus," at pages/artisan/syr-info-change.vue:956"),this.hasResubmitted&&3===this.auditStatus&&(t("log","\u68c0\u6d4b\u5230\u5df2\u91cd\u65b0\u63d0\u4ea4\uff0c\u5f3a\u5236\u8bbe\u7f6e\u4e3a\u5ba1\u6838\u4e2d\u72b6\u6001"," at pages/artisan/syr-info-change.vue:960"),this.auditStatus=1,this.backText=""),1===this.auditStatus?(this.showAuditTip=!0,this.buttonType="view",this.editable=!1,this.showPendingData=!1,this.displayData=_({},this.originalData),t("log","\u72b6\u6001\u66f4\u65b0\u4e3a\uff1a\u5ba1\u6838\u4e2d"," at pages/artisan/syr-info-change.vue:971")):3===this.auditStatus?(this.showAuditTip=!1,this.buttonType="reject",this.editable=!1,this.showPendingData=!1,this.displayData=_({},this.originalData),t("log","\u72b6\u6001\u66f4\u65b0\u4e3a\uff1a\u5ba1\u6838\u9a73\u56de"," at pages/artisan/syr-info-change.vue:978")):(this.showAuditTip=!1,this.buttonType="change",this.editable=!1,this.showPendingData=!1,this.displayData=_({},this.originalData),t("log","\u72b6\u6001\u66f4\u65b0\u4e3a\uff1a\u65e0\u7533\u8bf7/\u5ba1\u6838\u901a\u8fc7"," at pages/artisan/syr-info-change.vue:985")),this.updateNavTitle(),t("log","\u6700\u7ec8\u9875\u9762\u72b6\u6001:",{auditStatus:this.auditStatus,backText:this.backText,buttonType:this.buttonType,editable:this.editable,showAuditTip:this.showAuditTip}," at pages/artisan/syr-info-change.vue:989")},updateNavTitle:function(){this.editable||this.showPendingData?this.navTitle="\u4e2a\u4eba\u4fe1\u606f\u53d8\u66f4":this.navTitle="\u4e2a\u4eba\u4fe1\u606f"},processIdcardExpiry:function(e,i){if(e)if(t("log","\u5904\u7406\u8eab\u4efd\u8bc1\u6709\u6548\u671f:",e," at pages/artisan/syr-info-change.vue:1011"),e.includes("\u2014\u2014")){var s=e.split("\u2014\u2014"),a=(0,c.default)(s,2),r=a[0],n=a[1],o=r.trim(),d=n.trim();t("log","\u5f00\u59cb\u65e5\u671f:",o,"\u7ed3\u675f\u65e5\u671f:",d," at pages/artisan/syr-info-change.vue:1018"),"\u957f\u4e45"!==d&&d?(i.idcard_expiry_type=2,i.idcard_start_date=this.formatDateFromBackend(o),i.idcard_end_date=this.formatDateFromBackend(d)):(i.idcard_expiry_type=1,i.idcard_start_date=this.formatDateFromBackend(o),i.idcard_end_date="\u957f\u4e45\u6709\u6548")}else"\u957f\u4e45"===e&&(i.idcard_expiry_type=1,i.idcard_end_date="\u957f\u4e45\u6709\u6548")},formatDateFromBackend:function(t){if(!t)return"";if(t.includes("-")){var e=t.split("-"),i=(0,c.default)(e,3),s=i[0],a=i[1],r=i[2];return"".concat(s,"\u5e74").concat(parseInt(a),"\u6708").concat(parseInt(r),"\u65e5")}return t},getExperienceText:function(t){return["","\u5b9e\u4e60","1-3\u5e74","3-5\u5e74","5-10\u5e74","10\u5e74\u4ee5\u4e0a"][t]||""},getWorkStatusText:function(t){return["","\u5728\u804c","\u79bb\u804c"][t]||""},startChange:function(){this.editable=!0,this.buttonType="edit",this.displayData=_({},this.pendingData),this.updateNavTitle()},cancelChange:function(){this.editable=!1,this.buttonType="change",this.displayData=_({},this.originalData),this.updateNavTitle()},togglePendingData:function(){this.showPendingData=!this.showPendingData,this.showPendingData?this.displayData=_({},this.pendingData):this.displayData=_({},this.originalData),this.updateNavTitle()},setIdCardValidType:function(t){this.displayData.idcard_expiry_type=t,1===t?this.displayData.idcard_end_date="\u957f\u4e45\u6709\u6548":"\u957f\u4e45\u6709\u6548"===this.displayData.idcard_end_date&&(this.displayData.idcard_end_date="")},formatDateForDisplay:function(t){if(!t)return"";if("\u957f\u4e45\u6709\u6548"===t)return"\u957f\u4e45\u6709\u6548";if(t.includes("-")){var e=t.split("-"),i=(0,c.default)(e,3),s=i[0],a=i[1],r=i[2];return"".concat(s,"\u5e74").concat(parseInt(a),"\u6708").concat(parseInt(r),"\u65e5")}return t},formatDateForBackend:function(t){if(!t)return"";if("\u957f\u4e45\u6709\u6548"===t)return"\u957f\u4e45\u6709\u6548";var e=t.match(/(\d+)\u5e74(\d+)\u6708(\d+)\u65e5/);if(e){var i=e[1],s=e[2].padStart(2,"0"),a=e[3].padStart(2,"0");return"".concat(i,"-").concat(s,"-").concat(a)}return t},openDatePicker:function(t){this.currentDateField=t;var e=new Date,i=e;if(this.displayData[t]&&"\u957f\u4e45\u6709\u6548"!==this.displayData[t]){var s=this.displayData[t],a=s.match(/(\d+)\u5e74(\d+)\u6708(\d+)\u65e5/);a&&(i=new Date(parseInt(a[1]),parseInt(a[2])-1,parseInt(a[3])))}var r=this.years.indexOf(i.getFullYear()),c=i.getMonth(),n=i.getDate()-1;this.dateValue=[r>=0?r:0,c,n],this.showDatePickerFlag=!0},hideDatePicker:function(){this.showDatePickerFlag=!1},bindDateChange:function(t){this.dateValue=t.detail.value},confirmDate:function(){var t=(0,c.default)(this.dateValue,3),e=t[0],i=t[1],s=t[2],a=this.years[e],r=this.months[i],n=this.days[s],o="".concat(a,"\u5e74").concat(r,"\u6708").concat(n,"\u65e5"),d=new Date(a,r-1,n),l=new Date;if(l.setHours(0,0,0,0),this.currentDateField.endsWith("_start_date")){if(d>l)return void uni.showToast({title:"\u5f00\u59cb\u65e5\u671f\u4e0d\u80fd\u665a\u4e8e\u4eca\u5929",icon:"none"});var u=this.currentDateField.replace("_start_date","_end_date");if(this.displayData[u]&&"\u957f\u4e45\u6709\u6548"!==this.displayData[u]){var f=this.displayData[u],_=f.match(/(\d+)\u5e74(\d+)\u6708(\d+)\u65e5/);if(_){var p=new Date(parseInt(_[1]),parseInt(_[2])-1,parseInt(_[3]));if(d>p)return void uni.showToast({title:"\u5f00\u59cb\u65e5\u671f\u4e0d\u80fd\u665a\u4e8e\u7ed3\u675f\u65e5\u671f",icon:"none"})}}if("idcard_start_date"===this.currentDateField){var v=a+20,h="".concat(v,"\u5e74").concat(r,"\u6708").concat(n,"\u65e5");this.displayData.idcard_end_date=h}}else if(this.currentDateField.endsWith("_end_date")){var m=this.currentDateField.replace("_end_date","_start_date");if(this.displayData[m]){var g=this.displayData[m],y=g.match(/(\d+)\u5e74(\d+)\u6708(\d+)\u65e5/);if(y){var b=new Date(parseInt(y[1]),parseInt(y[2])-1,parseInt(y[3]));if(d<=b)return void uni.showToast({title:"\u7ed3\u675f\u65e5\u671f\u5fc5\u987b\u665a\u4e8e\u5f00\u59cb\u65e5\u671f",icon:"none"})}}else if(d0&&(this.locatinCitys=this.ChinaCitys[0].citys,this.locatinCitys&&this.locatinCitys.length>0?this.locationAreas=this.locatinCitys[0].areas:this.locationAreas=[],this.locationValue=[0,0,0]),this.showLocationPopupFlag=!0)},hideLocationPopup:function(){this.showLocationPopupFlag=!1},bindChangeLocation:function(t){this.locationValue=t.detail.value;var e=t.detail.value[0]||0,i=t.detail.value[1]||0;this.locatinCitys=this.ChinaCitys[e].citys,this.locationAreas=this.locatinCitys[i].areas},confirmLocationSelect:function(){var e=this.locationValue,i=e[0]||0,s=e[1]||0,a=e[2]||0,r=this.ChinaCitys[i].province,c=this.locatinCitys[s].city,n=this.locationAreas[a].area;if(this.displayData.dependency=r+"-"+c+"-"+n,this.displayData.address="",this.displayData.longitude="",this.displayData.latitude="",this.pendingData.address="",this.pendingData.longitude="",this.pendingData.latitude="",this.ChinaCitys[i]&&this.ChinaCitys[i].code){var o=this.ChinaCitys[i].code.toString();this.displayData.dependency_province=o.substring(0,6),this.pendingData.dependency_province=o.substring(0,6)}if(this.locatinCitys[s]&&this.locatinCitys[s].code){var d=this.locatinCitys[s].code.toString();this.displayData.dependency_city=d.substring(0,6),this.pendingData.dependency_city=d.substring(0,6)}if(this.locationAreas[a]&&this.locationAreas[a].code){var l=this.locationAreas[a].code.toString();this.displayData.dependency_code=l.substring(0,6),this.pendingData.dependency_code=l.substring(0,6)}t("log","\u5730\u5740\u7f16\u7801:",{province:this.displayData.dependency_province,city:this.displayData.dependency_city,area:this.displayData.dependency_code}," at pages/artisan/syr-info-change.vue:1301"),this.hideLocationPopup()},getLocation:function(){var e=this;return(0,n.default)(a.default.mark((function i(){var s;return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,i.next=3,new Promise((function(t,e){uni.getLocation({type:"wgs84",success:t,fail:e})}));case 3:s=i.sent,e.displayData.longitude=s.longitude.toString(),e.displayData.latitude=s.latitude.toString(),t("log","\u83b7\u53d6\u5b9a\u4f4d\u6210\u529f:",e.displayData.longitude,e.displayData.latitude," at pages/artisan/syr-info-change.vue:1323"),i.next=14;break;case 9:i.prev=9,i.t0=i["catch"](0),t("log","\u83b7\u53d6\u5b9a\u4f4d\u5931\u8d25\uff0c\u4f7f\u7528\u9ed8\u8ba4\u503c"," at pages/artisan/syr-info-change.vue:1325"),e.displayData.longitude="116.397428",e.displayData.latitude="39.90923";case 14:case"end":return i.stop()}}),i,null,[[0,9]])})))()},openExperiencePicker:function(){var t=this;this.editable&&uni.showActionSheet({itemList:["\u5b9e\u4e60","1-3\u5e74","3-5\u5e74","5-10\u5e74","10\u5e74\u4ee5\u4e0a"],success:function(e){t.displayData.major=e.tapIndex+1}})},openWorkStatusPicker:function(){var t=this;this.editable&&uni.showActionSheet({itemList:["\u5728\u804c","\u79bb\u804c"],success:function(e){t.displayData.work_state=e.tapIndex+1}})},chooseImage:function(e){var i=this;return(0,n.default)(a.default.mark((function s(){var r,c,n,o,l;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(i.editable){s.next=2;break}return s.abrupt("return");case 2:if(s.prev=2,r=uni.getSystemInfoSync(),"ios"!==r.platform){s.next=8;break}i.openCamera(e),s.next=24;break;case 8:return s.next=10,d.default.checkPermission("photo_library","\u9700\u8981\u76f8\u518c\u6743\u9650\u7528\u4e8e\u4e0a\u4f20\u7167\u7247");case 10:return c=s.sent,s.next=13,d.default.checkPermission("camera","\u9700\u8981\u76f8\u673a\u6743\u9650\u7528\u4e8e\u62cd\u6444\u7167\u7247");case 13:if(n=s.sent,!c.granted||!n.granted){s.next=17;break}return i.openCamera(e),s.abrupt("return");case 17:return s.next=19,d.default.requestPermission("photo_library","\u6211\u4eec\u9700\u8981\u8bbf\u95ee\u60a8\u7684\u76f8\u518c\u4ee5\u4e0a\u4f20\u56fe\u7247/\u89c6\u9891");case 19:return o=s.sent,s.next=22,d.default.requestPermission("camera","\u6211\u4eec\u9700\u8981\u8bbf\u95ee\u60a8\u7684\u76f8\u673a\u4ee5\u4e0a\u4f20\u56fe\u7247/\u89c6\u9891");case 22:l=s.sent,o&&l&&i.openCamera(e);case 24:s.next=30;break;case 26:s.prev=26,s.t0=s["catch"](2),t("log","\u9009\u62e9\u56fe\u7247\u51fa\u9519:",s.t0," at pages/artisan/syr-info-change.vue:1378"),i.openCamera(e);case 30:case"end":return s.stop()}}),s,null,[[2,26]])})))()},openCamera:function(e){var i=this;return(0,n.default)(a.default.mark((function s(){var r,c,n,o;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(s.prev=0,i.userId){s.next=4;break}return s.next=4,i.getUserInfo();case 4:return i.identity||(i.identity=getApp().globalData.artisanType),s.next=7,new Promise((function(t,e){uni.chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:t,fail:e})}));case 7:if(r=s.sent,r.tempFilePaths&&0!==r.tempFilePaths.length){s.next=11;break}return uni.hideLoading(),s.abrupt("return");case 11:return c=r.tempFilePaths[0],n={path:c,size:0},s.next=15,i.directUpload(n,i.userId,i.identity+1);case 15:if(o=s.sent,uni.hideLoading(),!o){s.next=27;break}if(i.displayData[e]=o,"idcard_positive"!==e){s.next=24;break}return s.next=22,i.recognizeIdCardFront(o);case 22:s.next=27;break;case 24:if("idcard_negative"!==e){s.next=27;break}return s.next=27,i.recognizeIdCardBack(o);case 27:s.next=33;break;case 29:s.prev=29,s.t0=s["catch"](0),uni.hideLoading(),t("log","\u4e0a\u4f20\u56fe\u7247\u9519\u8bef:",s.t0," at pages/artisan/syr-info-change.vue:1431");case 33:case"end":return s.stop()}}),s,null,[[0,29]])})))()},directUpload:function(e,i,s){return(0,n.default)(a.default.mark((function r(){var c,n,d,l,u,f,_;return a.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:return a.prev=0,c=(new Date).getTime(),n=1==s?"yh":2==s?"syr":3==s?"sj":"",d="jpg",e.path.includes(".")&&(l=e.path.split("."),u=l[l.length-1].toLowerCase(),u&&u.length<=4&&(d=u)),f="".concat(i,"_").concat(n,"_").concat(c,".").concat(d),a.next=8,o.default.post("/user/getalioss",{type:s,kind:1});case 8:return _=a.sent,a.next=11,new Promise((function(t,i){uni.uploadFile({url:_.host,filePath:e.path,name:"file",formData:{key:_.dir+f,policy:_.policy,OSSAccessKeyId:_.ossAccessKeyId,success_action_status:"200",signature:_.signature},success:function(e){if(200===e.statusCode){var s="".concat(_.host,"/").concat(_.dir).concat(f);t(s)}else i(new Error("\u4e0a\u4f20\u5931\u8d25"))},fail:i})}));case 11:return a.abrupt("return",a.sent);case 14:throw a.prev=14,a.t0=a["catch"](0),t("error","\u76f4\u63a5\u4e0a\u4f20\u5931\u8d25:",a.t0," at pages/artisan/syr-info-change.vue:1479"),a.t0;case 18:case"end":return a.stop()}}),r,null,[[0,14]])})))()},showTipPopup:function(t){var e={head_photo:{title:"\u5982\u4f55\u67e5\u770b\u5de5\u88c5\u5934\u50cf",image:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/2af00609-f9f5-4fa7-8013-ef92f15bbea3"}};e[t]&&(this.currentTipType=t,this.tipTitle=e[t].title,this.tipImage=e[t].image,this.showTipPopupFlag=!0)},hideTipPopup:function(){this.showTipPopupFlag=!1},validateForm:function(){for(var t=this,e=[{field:"head_photo",message:"\u8bf7\u4e0a\u4f20\u5934\u50cf"},{field:"idcard_positive",message:"\u8bf7\u4e0a\u4f20\u8eab\u4efd\u8bc1\u6b63\u9762\u7167\u7247"},{field:"idcard_negative",message:"\u8bf7\u4e0a\u4f20\u8eab\u4efd\u8bc1\u53cd\u9762\u7167\u7247"},{field:"name",message:"\u8bf7\u8f93\u5165\u771f\u5b9e\u59d3\u540d"},{field:"account",message:"\u8bf7\u8f93\u5165\u8054\u7cfb\u65b9\u5f0f"},{field:"second_phone",message:"\u8bf7\u8f93\u5165\u5907\u7528\u8054\u7cfb\u65b9\u5f0f"},{field:"idcard_num",message:"\u8bf7\u8f93\u5165\u8eab\u4efd\u8bc1\u53f7"},{condition:function(){return!t.displayData.idcard_expiry_type},message:"\u8bf7\u9009\u62e9\u8eab\u4efd\u8bc1\u6709\u6548\u671f\u7c7b\u578b"},{condition:function(){return!t.displayData.idcard_start_date},message:"\u8bf7\u9009\u62e9\u8eab\u4efd\u8bc1\u5f00\u59cb\u65e5\u671f"},{condition:function(){return 2===t.displayData.idcard_expiry_type&&!t.displayData.idcard_end_date},message:"\u8bf7\u9009\u62e9\u8eab\u4efd\u8bc1\u7ed3\u675f\u65e5\u671f"},{field:"detail",message:"\u8bf7\u8f93\u5165\u4e2a\u4eba\u4ecb\u7ecd"},{field:"dependency",message:"\u8bf7\u9009\u62e9\u6240\u5728\u5730"},{field:"address",message:"\u8bf7\u9009\u62e9\u8be6\u7ec6\u5730\u5740"},{field:"major",message:"\u8bf7\u9009\u62e9\u4e13\u4e1a\u7ecf\u9a8c"},{field:"work_state",message:"\u8bf7\u9009\u62e9\u76ee\u524d\u5de5\u4f5c\u72b6\u6001"}],i=0,s=e;i=26){var n=new r("android.settings.APP_NOTIFICATION_SETTINGS");n.putExtra("android.provider.extra.APP_PACKAGE",s)}else if(c.VERSION.SDK_INT>=21){n=new r("android.settings.APP_NOTIFICATION_SETTINGS");n.putExtra("app_package",s),n.putExtra("app_uid",a)}else{n.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);var o=Uri.fromParts("package",mainActivity.getPackageName(),null);n.setData(o)}i.startActivity(n)}else e.cancel&&t("log","\u70b9\u51fb\u4e86\u53d6\u6d88"," at utils/AS-NotifyTheAuthority.js:96")}})}else if("iOS"==plus.os.name){var r=plus.ios.invoke("UIApplication","sharedApplication");plus.ios.deleteObject(r),uni.showModal({title:"\u901a\u77e5\u6743\u9650".concat(e?"\u5f00\u542f":"\u5173\u95ed","\u63d0\u9192"),content:"\u662f\u5426\u524d\u5f80\u8bbe\u7f6e".concat(e?"\u5f00\u542f":"\u5173\u95ed","\u901a\u77e5\u6743\u9650\uff1f"),success:function(e){if(e.confirm){var i=plus.ios.invoke("UIApplication","sharedApplication"),s=plus.ios.invoke("NSURL","URLWithString:","app-settings:");plus.ios.invoke(i,"openURL:",s),plus.ios.deleteObject(s),plus.ios.deleteObject(i)}else e.cancel&&t("log","\u70b9\u51fb\u4e86\u53d6\u6d88"," at utils/AS-NotifyTheAuthority.js:120")}})}};var o=function(t){var e="";for(var i in t)t.hasOwnProperty(i)&&(e+="".concat(i,"=").concat(encodeURIComponent(t[i]),"&"));return e.slice(0,-1)};e.formatParams=o;e.registPush=function(){r.default.post("/sj/push/getPushUserId").then((function(e){if(200==e.code){var i=n(),s=e.data.push_user_id;(0,a.setRegistrationID)(s,(function(e){t("log","setRegistrationID ok",e," at utils/AS-NotifyTheAuthority.js:155")})),(0,a.registerPush)(1600130322,"5IrByLsKWJhbbNKIKEy2sZRIcQX6omnhMEUoA6zexuLCOsJ33mprqKs9T36Eg8ZZ",(function(e){t("log","registerPush ok",e," at utils/AS-NotifyTheAuthority.js:158"),(0,a.getRegistrationID)((function(e){t("log","getRegistrationID ok",e," at utils/AS-NotifyTheAuthority.js:161"),r.default.post("/sj/push/setPushUserId",{push_user_id:e||s}).then((function(t){200==t.code&&uni.setStorageSync("isPushUserId",!0)}))}))}),(function(e,i){t("error","registerPush failed",e,i," at utils/AS-NotifyTheAuthority.js:174")})),(0,a.addPushListener)(a.EVENT.NOTIFICATION_CLICKED,(function(e){t("log","notification clicked",e," at utils/AS-NotifyTheAuthority.js:180");try{var i=e.data,s=JSON.parse(i);t("log","\u89e3\u6790\u540e\u7684\u8ba2\u5355\u6570\u636e\uff1a",s," at utils/AS-NotifyTheAuthority.js:189"),s.path&&uni.navigateTo({url:"".concat(s.path,"?").concat(o(s.data)),success:function(e){t("log","\u9875\u9762\u8df3\u8f6c\u6210\u529f",e," at utils/AS-NotifyTheAuthority.js:196")},fail:function(e){t("error","\u9875\u9762\u8df3\u8f6c\u5931\u8d25",e," at utils/AS-NotifyTheAuthority.js:200")}})}catch(a){t("error","JSON\u89e3\u6790\u5931\u8d25\uff1a",a," at utils/AS-NotifyTheAuthority.js:207")}})),(0,a.addPushListener)(a.EVENT.MESSAGE_RECEIVED,(function(e){r.default.post("/sj/push/messageUnreadNum").then((function(e){t("log","111111111",e," at utils/AS-NotifyTheAuthority.js:217"),200==e.code&&c.default.commit("setMessageNum",e.data.count)})),t("log","message received111111111",e," at utils/AS-NotifyTheAuthority.js:222")})),(0,a.addPushListener)(a.EVENT.MESSAGE_REVOKED,(function(e){t("log","message revoked",e," at utils/AS-NotifyTheAuthority.js:229")}));var d=i?1:2;r.default.post("/sj/push/getReceiveState",{message_type_id:-1}).then((function(e){t("log","state",e.data.list[0].state,d," at utils/AS-NotifyTheAuthority.js:239"),e.data.list[0].state!=d&&1==d&&r.default.post("/sj/push/setReceiveState",{message_type_id:-1,message_kind_id:0,state:d}).then((function(e){t("log","setReceiveState",e," at utils/AS-NotifyTheAuthority.js:246")}))}))}})).catch((function(t){}))}}).call(this,i("f3b9")["default"])},d6ce:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("7941")),r=s(i("16bb")),c={components:{wmWatermark:a.default},data:function(){return{value:"",syrdetail:{},id:null,isCode:!1}},props:{tabsPopList:{type:Array,default:function(){return[]}}},onLoad:function(e){t("log",e," at pages/user/qualifications.vue:102"),this.id=e.id,this.getShopDetail(e.id)},methods:{previewWithWatermark:function(e){var i=this;uni.downloadFile({url:e,success:function(e){200===e.statusCode&&e.tempFilePath?i.addWatermark(e.tempFilePath):t("error","\u56fe\u7247\u4e0b\u8f7d\u5931\u8d25\uff0c\u72b6\u6001\u7801\uff1a",e.statusCode," at pages/user/qualifications.vue:116")},fail:function(e){t("error","\u4e0b\u8f7d\u5931\u8d25",e," at pages/user/qualifications.vue:120")}})},addWatermark:function(e){var i=this;uni.getImageInfo({src:e,success:function(s){var a=s.width,r=s.height,c=uni.createCanvasContext("watermark-canvas",i);c.drawImage(e,0,0,a,r);c.setFontSize(20),c.setFillStyle("rgba(255, 255, 255, 0.5)"),c.setTextAlign("center"),c.setTextBaseline("middle");for(var n=-30*Math.PI/180,o=0;o>>25)+s|0,r+=(i&s|~i&a)+e[1]-389564586|0,r=(r<<12|r>>>20)+i|0,a+=(r&i|~r&s)+e[2]+606105819|0,a=(a<<17|a>>>15)+r|0,s+=(a&r|~a&i)+e[3]-1044525330|0,s=(s<<22|s>>>10)+a|0,i+=(s&a|~s&r)+e[4]-176418897|0,i=(i<<7|i>>>25)+s|0,r+=(i&s|~i&a)+e[5]+1200080426|0,r=(r<<12|r>>>20)+i|0,a+=(r&i|~r&s)+e[6]-1473231341|0,a=(a<<17|a>>>15)+r|0,s+=(a&r|~a&i)+e[7]-45705983|0,s=(s<<22|s>>>10)+a|0,i+=(s&a|~s&r)+e[8]+1770035416|0,i=(i<<7|i>>>25)+s|0,r+=(i&s|~i&a)+e[9]-1958414417|0,r=(r<<12|r>>>20)+i|0,a+=(r&i|~r&s)+e[10]-42063|0,a=(a<<17|a>>>15)+r|0,s+=(a&r|~a&i)+e[11]-1990404162|0,s=(s<<22|s>>>10)+a|0,i+=(s&a|~s&r)+e[12]+1804603682|0,i=(i<<7|i>>>25)+s|0,r+=(i&s|~i&a)+e[13]-40341101|0,r=(r<<12|r>>>20)+i|0,a+=(r&i|~r&s)+e[14]-1502002290|0,a=(a<<17|a>>>15)+r|0,s+=(a&r|~a&i)+e[15]+1236535329|0,s=(s<<22|s>>>10)+a|0,i+=(s&r|a&~r)+e[1]-165796510|0,i=(i<<5|i>>>27)+s|0,r+=(i&a|s&~a)+e[6]-1069501632|0,r=(r<<9|r>>>23)+i|0,a+=(r&s|i&~s)+e[11]+643717713|0,a=(a<<14|a>>>18)+r|0,s+=(a&i|r&~i)+e[0]-373897302|0,s=(s<<20|s>>>12)+a|0,i+=(s&r|a&~r)+e[5]-701558691|0,i=(i<<5|i>>>27)+s|0,r+=(i&a|s&~a)+e[10]+38016083|0,r=(r<<9|r>>>23)+i|0,a+=(r&s|i&~s)+e[15]-660478335|0,a=(a<<14|a>>>18)+r|0,s+=(a&i|r&~i)+e[4]-405537848|0,s=(s<<20|s>>>12)+a|0,i+=(s&r|a&~r)+e[9]+568446438|0,i=(i<<5|i>>>27)+s|0,r+=(i&a|s&~a)+e[14]-1019803690|0,r=(r<<9|r>>>23)+i|0,a+=(r&s|i&~s)+e[3]-187363961|0,a=(a<<14|a>>>18)+r|0,s+=(a&i|r&~i)+e[8]+1163531501|0,s=(s<<20|s>>>12)+a|0,i+=(s&r|a&~r)+e[13]-1444681467|0,i=(i<<5|i>>>27)+s|0,r+=(i&a|s&~a)+e[2]-51403784|0,r=(r<<9|r>>>23)+i|0,a+=(r&s|i&~s)+e[7]+1735328473|0,a=(a<<14|a>>>18)+r|0,s+=(a&i|r&~i)+e[12]-1926607734|0,s=(s<<20|s>>>12)+a|0,i+=(s^a^r)+e[5]-378558|0,i=(i<<4|i>>>28)+s|0,r+=(i^s^a)+e[8]-2022574463|0,r=(r<<11|r>>>21)+i|0,a+=(r^i^s)+e[11]+1839030562|0,a=(a<<16|a>>>16)+r|0,s+=(a^r^i)+e[14]-35309556|0,s=(s<<23|s>>>9)+a|0,i+=(s^a^r)+e[1]-1530992060|0,i=(i<<4|i>>>28)+s|0,r+=(i^s^a)+e[4]+1272893353|0,r=(r<<11|r>>>21)+i|0,a+=(r^i^s)+e[7]-155497632|0,a=(a<<16|a>>>16)+r|0,s+=(a^r^i)+e[10]-1094730640|0,s=(s<<23|s>>>9)+a|0,i+=(s^a^r)+e[13]+681279174|0,i=(i<<4|i>>>28)+s|0,r+=(i^s^a)+e[0]-358537222|0,r=(r<<11|r>>>21)+i|0,a+=(r^i^s)+e[3]-722521979|0,a=(a<<16|a>>>16)+r|0,s+=(a^r^i)+e[6]+76029189|0,s=(s<<23|s>>>9)+a|0,i+=(s^a^r)+e[9]-640364487|0,i=(i<<4|i>>>28)+s|0,r+=(i^s^a)+e[12]-421815835|0,r=(r<<11|r>>>21)+i|0,a+=(r^i^s)+e[15]+530742520|0,a=(a<<16|a>>>16)+r|0,s+=(a^r^i)+e[2]-995338651|0,s=(s<<23|s>>>9)+a|0,i+=(a^(s|~r))+e[0]-198630844|0,i=(i<<6|i>>>26)+s|0,r+=(s^(i|~a))+e[7]+1126891415|0,r=(r<<10|r>>>22)+i|0,a+=(i^(r|~s))+e[14]-1416354905|0,a=(a<<15|a>>>17)+r|0,s+=(r^(a|~i))+e[5]-57434055|0,s=(s<<21|s>>>11)+a|0,i+=(a^(s|~r))+e[12]+1700485571|0,i=(i<<6|i>>>26)+s|0,r+=(s^(i|~a))+e[3]-1894986606|0,r=(r<<10|r>>>22)+i|0,a+=(i^(r|~s))+e[10]-1051523|0,a=(a<<15|a>>>17)+r|0,s+=(r^(a|~i))+e[1]-2054922799|0,s=(s<<21|s>>>11)+a|0,i+=(a^(s|~r))+e[8]+1873313359|0,i=(i<<6|i>>>26)+s|0,r+=(s^(i|~a))+e[15]-30611744|0,r=(r<<10|r>>>22)+i|0,a+=(i^(r|~s))+e[6]-1560198380|0,a=(a<<15|a>>>17)+r|0,s+=(r^(a|~i))+e[13]+1309151649|0,s=(s<<21|s>>>11)+a|0,i+=(a^(s|~r))+e[4]-145523070|0,i=(i<<6|i>>>26)+s|0,r+=(s^(i|~a))+e[11]-1120210379|0,r=(r<<10|r>>>22)+i|0,a+=(i^(r|~s))+e[2]+718787259|0,a=(a<<15|a>>>17)+r|0,s+=(r^(a|~i))+e[9]-343485551|0,s=(s<<21|s>>>11)+a|0,t[0]=i+t[0]|0,t[1]=s+t[1]|0,t[2]=a+t[2]|0,t[3]=r+t[3]|0}function s(t){var e,i=[];for(e=0;e<64;e+=4)i[e>>2]=t.charCodeAt(e)+(t.charCodeAt(e+1)<<8)+(t.charCodeAt(e+2)<<16)+(t.charCodeAt(e+3)<<24);return i}function a(t){var e,i=[];for(e=0;e<64;e+=4)i[e>>2]=t[e]+(t[e+1]<<8)+(t[e+2]<<16)+(t[e+3]<<24);return i}function r(t){var e,a,r,c,n,o,d=t.length,l=[1732584193,-271733879,-1732584194,271733878];for(e=64;e<=d;e+=64)i(l,s(t.substring(e-64,e)));for(t=t.substring(e-64),a=t.length,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],e=0;e>2]|=t.charCodeAt(e)<<(e%4<<3);if(r[e>>2]|=128<<(e%4<<3),e>55)for(i(l,r),e=0;e<16;e+=1)r[e]=0;return c=8*d,c=c.toString(16).match(/(.*?)(.{0,8})$/),n=parseInt(c[2],16),o=parseInt(c[1],16)||0,r[14]=n,r[15]=o,i(l,r),l}function c(t){var i,s="";for(i=0;i<4;i+=1)s+=e[t>>8*i+4&15]+e[t>>8*i&15];return s}function n(t){var e;for(e=0;e>16)+(e>>16)+(i>>16);return s<<16|65535&i},"undefined"===typeof ArrayBuffer||ArrayBuffer.prototype.slice||function(){function e(t,e){return t=0|t||0,t<0?Math.max(t+e,0):Math.min(t,e)}ArrayBuffer.prototype.slice=function(i,s){var a,r,c,n,o=this.byteLength,d=e(i,o),l=o;return s!==t&&(l=e(s,o)),d>l?new ArrayBuffer(0):(a=l-d,r=new ArrayBuffer(a),c=new Uint8Array(r),n=new Uint8Array(this,d,a),c.set(n),r)}}(),l.prototype.append=function(t){return this.appendBinary(o(t)),this},l.prototype.appendBinary=function(t){this._buff+=t,this._length+=t.length;var e,a=this._buff.length;for(e=64;e<=a;e+=64)i(this._hash,s(this._buff.substring(e-64,e)));return this._buff=this._buff.substring(e-64),this},l.prototype.end=function(t){var e,i,s=this._buff,a=s.length,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(e=0;e>2]|=s.charCodeAt(e)<<(e%4<<3);return this._finish(r,a),i=n(this._hash),t&&(i=d(i)),this.reset(),i},l.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},l.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},l.prototype.setState=function(t){return this._buff=t.buff,this._length=t.length,this._hash=t.hash,this},l.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},l.prototype._finish=function(t,e){var s,a,r,c=e;if(t[c>>2]|=128<<(c%4<<3),c>55)for(i(this._hash,t),c=0;c<16;c+=1)t[c]=0;s=8*this._length,s=s.toString(16).match(/(.*?)(.{0,8})$/),a=parseInt(s[2],16),r=parseInt(s[1],16)||0,t[14]=a,t[15]=r,i(this._hash,t)},l.hash=function(t,e){return l.hashBinary(o(t),e)},l.hashBinary=function(t,e){var i=r(t),s=n(i);return e?d(s):s},l.ArrayBuffer=function(){this.reset()},l.ArrayBuffer.prototype.append=function(t){var e,s=function(t,e,i){var s=new Uint8Array(t.byteLength+e.byteLength);return s.set(new Uint8Array(t)),s.set(new Uint8Array(e),t.byteLength),i?s:s.buffer}(this._buff.buffer,t,!0),r=s.length;for(this._length+=t.byteLength,e=64;e<=r;e+=64)i(this._hash,a(s.subarray(e-64,e)));return this._buff=e-64>2]|=s[e]<<(e%4<<3);return this._finish(r,a),i=n(this._hash),t&&(i=d(i)),this.reset(),i},l.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},l.ArrayBuffer.prototype.getState=function(){var t=l.prototype.getState.call(this);return t.buff=function(t){return String.fromCharCode.apply(null,new Uint8Array(t))}(t.buff),t},l.ArrayBuffer.prototype.setState=function(t){return t.buff=function(t,e){var i,s=t.length,a=new ArrayBuffer(s),r=new Uint8Array(a);for(i=0;i>2]|=t[e]<<(e%4<<3);if(r[e>>2]|=128<<(e%4<<3),e>55)for(i(l,r),e=0;e<16;e+=1)r[e]=0;return c=8*d,c=c.toString(16).match(/(.*?)(.{0,8})$/),n=parseInt(c[2],16),o=parseInt(c[1],16)||0,r[14]=n,r[15]=o,i(l,r),l}(new Uint8Array(t)),r=n(s);return e?d(r):r},l}))},d774:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","service-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5de5\u65f6\u7ba1\u7406",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","flexed"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","headerBox"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","search-box"),attrs:{_i:4}},[i("input",{directives:[{name:"model",rawName:"v-model",value:t.title,expression:"title"}],staticClass:t._$s(5,"sc","search-inp"),attrs:{_i:5},domProps:{value:t._$s(5,"v-model",t.title)},on:{input:function(e){e.target.composing||(t.title=e.target.value)}}}),i("image",{staticClass:t._$s(6,"sc","search-icon"),attrs:{_i:6},on:{click:t.getServicesList}})]),i("view",{staticClass:t._$s(7,"sc","addBox"),attrs:{_i:7},on:{click:function(e){t.showTip=!0}}},[i("image",{staticClass:t._$s(8,"sc","addIcon"),attrs:{_i:8}}),i("text",{staticClass:t._$s(9,"sc","addText"),attrs:{_i:9}})])]),i("view",{staticClass:t._$s(10,"sc","tab-container"),attrs:{_i:10}},t._l(t._$s(11,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("view",{key:t._$s(11,"f",{forIndex:a,key:s}),class:t._$s("11-"+r,"c",["tab-item",{active:t.currentTab===s}]),attrs:{_i:"11-"+r},on:{click:function(i){return t.switchTab(s,e.id)}}},[t._v(t._$s("11-"+r,"t0-0",t._s(e.text)))])})),0)]),t._$s(12,"i",0!=t.services.length||!t.services)?i("view",{staticClass:t._$s(12,"sc","service-list"),attrs:{_i:12}},t._l(t._$s(13,"f",{forItems:t.services}),(function(e,s,a,r){return i("manHourCard",{key:t._$s(13,"f",{forIndex:a,key:"13-"+r}),attrs:{index:s,info:e,_i:"13-"+r},on:{viewEdit:t.viewEdit,viewList:t.viewList,viewRemove:t.viewRemove}})})),1):i("view",{staticClass:t._$s(14,"sc","service-nothings"),attrs:{_i:14}},[i("text",{staticClass:t._$s(15,"sc","nothings-text"),attrs:{_i:15}})]),t._$s(16,"i",t.hasMore)?i("view",{staticClass:t._$s(16,"sc","load-more"),attrs:{_i:16}},[i("text")]):t._e(),i("tipsPopup",{attrs:{show:t.showTip,_i:18},on:{okBtn:t.addService,closePopup:function(e){t.showTip=!1}}})],1)},r=[]},d7a6:function(t,e,i){"use strict";i.r(e);var s=i("237f"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},d7b6:function(t,e,i){"use strict";i.r(e);var s=i("c691"),a=i("099b");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"7671268b",null,!1,s["a"],void 0);e["default"]=n.exports},d7de:function(t,e,i){"use strict";i.r(e);var s=i("0f90"),a=i("9487");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},d825:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u89e3\u7ed1\u8bb0\u5f55",leftImg:"/static/images/whiteBack.png",showUser:!0,backgroundColor:"linear-gradient( 134deg, #F52540 0%, #E8101E 100%)",titleColor:"#fff",borderBottom:"none",_i:1}}),i("searchBox",{attrs:{placeholder:"\u624b\u827a\u4eba\u540d\u79f0",showAdd:!1,_i:2},on:{confirm:t.search,search:t.search},model:{value:t._$s(2,"v-model",t.queryData.str_val),callback:function(e){t.$set(t.queryData,"str_val",e)},expression:"queryData.str_val"}}),i("CommonList",{ref:"groupRef",attrs:{apiUrl:"/sj/getUnbindReadList",listScrollHeight:"calc(100vh - "+(t.statusBarHeight+302)+"rpx)",_i:3},scopedSlots:t._u([{key:"listData",fn:function(e,s,a){var r=e.list;return[i("view",{staticClass:s._$s("5-"+a,"sc","service-list"),attrs:{_i:"5-"+a}},t._l(s._$s("6-"+a,"f",{forItems:r}),(function(e,r,c,n){return i("view",{key:s._$s("6-"+a,"f",{forIndex:c,key:r}),staticClass:s._$s("6-"+a+n,"sc","service-item flex-row-end-between"),attrs:{_i:"6-"+a+n}},[i("view",{staticClass:s._$s("7-"+a+n,"sc","item-left flex-row-start"),attrs:{_i:"7-"+a+n}},[i("image",{staticClass:s._$s("8-"+a+n,"sc","item-left-photo"),attrs:{src:s._$s("8-"+a+n,"a-src",e.head_photo),mode:"aspectFill",_i:"8-"+a+n}}),i("view",{staticClass:s._$s("9-"+a+n,"sc","item-left-texts"),attrs:{_i:"9-"+a+n}},[i("view",{staticClass:s._$s("10-"+a+n,"sc","item-left-text1"),attrs:{_i:"10-"+a+n}},[t._v(s._$s("10-"+a+n,"t0-0",t._s(e.name)))]),i("view",{staticClass:s._$s("11-"+a+n,"sc","flex-row-center"),attrs:{_i:"11-"+a+n}},[i("text",{staticClass:s._$s("12-"+a+n,"sc","item-left-text2"),attrs:{_i:"12-"+a+n}},[t._v(s._$s("12-"+a+n,"t0-0",t._s(e.update_time)))])])])])])})),0)]}},{key:"empty",fn:function(t,e,s){return[i("noData",{attrs:{_i:"14-"+s}})]}}])})],1)},r=[]},d84c:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("af34")),c=s(i("ee10")),n=s(i("16bb")),o=s(i("f4d4")),d=i("53d1"),l=s(i("e26b")),u=(s(i("cd5a")),s(i("bfee"))),f=s(i("669f")),_=s(i("bbca")),p={components:{serviceCodeInput:l.default,MyTabBar:u.default,MyPage:o.default,OrderCard:f.default,WorkHourOrderCard:_.default},data:function(){return{clickType:!1,tabList:[{text:"\u9996\u9875",selectedIcon:"/static/images/tabbar/home_icon_active.png",icon:"/static/images/tabbar/home_icon_dis.png"},{text:"\u6211\u7684",selectedIcon:"/static/images/tabbar/my_icon_active.png",icon:"/static/images/tabbar/my_icon_dis.png"}],currentIndex:0,noClick:!0,userInfo:{},typeId:0,stateOrder:2,days:null,ordernum:{},orderList:[],handelOrder:{},showInput:!1,timeRange:"7days",count:0,isLoad:!0,page:1,limit:10,urlList:[{ordernum:"/syr/getyhordernum",weChatRefund:"/syr/yhwechatrefund",aliRefund:"/syr/yhalirefund",startOrder:"/syr/yhstartserver",endOrder:"/syr/yhendserver",sureOrder:"/syr/yhordersure",list:"/syr/syrgetyhorder"},{ordernum:"/syr/getsjordernum",weChatRefund:"/syr/sjwechatrefund",aliRefund:"/syr/sjalirefund",startOrder:"/syr/sjstartserver",endOrder:"/syr/sjendserver",sureOrder:"/syr/sjordersure",list:"/syr/syrgetsjorder"},{ordernum:"/syr/workHourOrder/orderNum",weChatRefund:"/syr/workHourOrder/weChatRefund",aliRefund:"/syr/workHourOrder/aliRefund",startOrder:"/syr/workHourOrder/start",endOrder:"/syr/workHourOrder/end",sureOrder:"/syr/workHourOrder/sure",list:"/syr/workHourOrder/list"},{ordernum:"/syr/orderSelf/orderNum",weChatRefund:"/syr/orderSelf/weChatRefund",aliRefund:"/syr/orderSelf/aliRefund",startOrder:"/syr/orderSelf/start",endOrder:"/syr/orderSelf/end",sureOrder:"/syr/orderSelf/sure",list:"/syr/orderSelf/list"}],chartOpts:{color:["#E8101E"],padding:[15,15,0,15],enableScroll:!1,legend:!1,xAxis:{gridType:"solid",gridColor:"#F0F0F0",fontColor:"#999999",rotateLabel:!1},yAxis:{gridType:"dash",splitNumber:4,gridColor:"#F0F0F0",fontColor:"#999999",format:"value"},extra:{line:{type:"straight",width:2}}}}},onPullDownRefresh:function(){var t=this;return(0,c.default)(a.default.mark((function e(){return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t.getOrderNumber();case 2:t.getOrderList();case 3:case"end":return e.stop()}}),e)})))()},onLoad:function(){var t=this;return(0,c.default)(a.default.mark((function e(){var i;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return uni.getSystemInfoSync(),e.next=3,n.default.post("/user/getuser",{type:2});case 3:i=e.sent,t.userInfo=i.data,t.getOrderNumber(),t.getOrderList();case 7:case"end":return e.stop()}}),e)})))()},onReachBottom:function(){var e=this;return(0,c.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:if(t("log","onReachBottom"," at pages/syr/home.vue:224"),!(e.count<=e.page*e.limit)&&e.isLoad){i.next=3;break}return i.abrupt("return");case 3:e.page++,e.getOrderList(!1);case 5:case"end":return i.stop()}}),i)})))()},methods:{getProfileLoding:function(t){return(0,c.default)(a.default.mark((function t(){var e,i;return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return setTimeout((function(){uni.showToast({title:"\u4fdd\u5b58\u6210\u529f",duration:1e3})}),300),t.next=3,n.default.post("/user/getuser",{type:3});case 3:e=t.sent,i=e.data,uni.setStorageSync("shopdependency",i.dependency);case 6:case"end":return t.stop()}}),t)})))()},changeIndex:function(e){t("log",e," at pages/syr/home.vue:250"),this.currentIndex=e},syrorsjordertaking:function(){var t=this;n.default.post("/syr/syrordertaking",{syrid:this.userInfo.id,order_taking:this.userInfo.order_taking}).then((function(e){n.default.post("/user/getuser",{type:2}).then((function(e){t.userInfo.order_taking=e.data.order_taking}))}))},getOrderNumber:function(){var t=this,e=this.urlList[this.typeId].ordernum,i={syrid:this.userInfo.id,syr_id:this.userInfo.id};e&&n.default.post(e,i).then((function(e){t.ordernum=e.data}))},getOrderList:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.isLoad=!1,e&&(this.page=1,this.limit=10,this.orderList=[]);var i=this.urlList[this.typeId].list,s={syrid:this.userInfo.id,state:this.stateOrder};2==this.typeId&&(s={state:this.stateOrder,limit:50,page:1}),n.default.post(i,s).then((function(i){if(e){if(2==t.typeId||3==t.typeId)return t.orderList=i.data.list,void(t.count=i.data.count);t.orderList=i.data,t.count=i.count}else{if(2==t.typeId||3==t.typeId)return t.orderList=[].concat((0,r.default)(t.orderList),(0,r.default)(i.data.list)),void(t.count=i.data.count);t.orderList=[].concat((0,r.default)(t.orderList),(0,r.default)(i.data)),t.count=i.count}})).finally((function(){t.isLoad=!0,uni.stopPullDownRefresh()}))},handleSwitchChange:function(t){var e=this;this.noClick&&(this.noClick=!1,this.orderSwitch=t,1==this.userInfo.order_taking?this.userInfo.order_taking=2:2==this.userInfo.order_taking&&(this.userInfo.order_taking=1),this.syrorsjordertaking(),setTimeout((function(){e.noClick=!0}),1e3))},goRoleMy:function(){var t=this;uni.$uv.throttle((function(){t.currentIndex=1}),500)},goMoreSetting:function(){uni.navigateTo({url:"/pages/artisan/unavailable-time"})},goOrderDetail:function(t){var e="";0==this.typeId?e="/pages/syr/userorder-detail?id="+t.id:1==this.typeId?e="/pages/syr/shoporder-detail?id="+t.id:2==this.typeId?e="/pages/shop/SellerDetail?id=".concat(t.id,"&identity=1"):3==this.typeId&&(e="/pages/syr/userorder-detail?id=".concat(t.id,"&serviceType=2")),uni.navigateTo({url:e})},goToCompetition:function(){},switchTimeRange:function(t){this.timeRange=t},searchTypeOrder:function(t){this.typeId=t,this.stateOrder=2,this.days=null,this.getOrderNumber(),this.getOrderList()},handleOrderState:function(t,e){this.stateOrder=t,this.getOrderList()},cancelOrder:function(e,i){var s=this;uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f\uff08\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u652f\u4ed8\u91d1\u989d\u5c06\u539f\u8def\u9000\u56de\uff09",success:function(e){if(e.confirm){var a={orderNo:i.number,amount:i.pay_money,syrid:s.userInfo.id},r="";if(1==i.pay_kind?r="":2==i.pay_kind?r=s.urlList[s.typeId].weChatRefund:3==i.pay_kind&&(r=s.urlList[s.typeId].aliRefund),t("log",a,r," at pages/syr/home.vue:418"),s.clickType)return;s.clickType=!0,n.default.post(r,a).then((function(e){t("log","\u53d6\u6d88\u8ba2\u5355\u8fd4\u56de\u7ed3\u679c",e," at pages/syr/home.vue:426"),1==e.state||1==e.code||200==e.code?(uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),s.getOrderNumber(),s.getOrderList()):uni.showToast({title:e.msg,icon:"none"})})).catch((function(e){t("log",e," at pages/syr/home.vue:442")})).finally((function(){s.clickType=!1}))}}})},confirmOrder:function(t,e){var i=this,s=this.urlList[this.typeId].sureOrder;this.clickType||(this.clickType=!0,n.default.post(s,{syrid:this.userInfo.id,id:e.id}).then((function(t){uni.showToast({title:"\u5df2\u63a5\u5355",icon:"none"}),i.getOrderNumber(),i.getOrderList()})).finally((function(){i.clickType=!1})))},startOrder:function(t,e){this.showInput=!0,this.handelOrder=e},onConfirm:function(e){var i=this;this.showInput=!1;var s=this.urlList[this.typeId].startOrder;this.clickType||(this.clickType=!0,n.default.post(s,{id:this.handelOrder.id,server_code:e,syrid:this.userInfo.id}).then((function(e){t("log",e," at pages/syr/home.vue:493"),1==e.state||200==e.code?(uni.showToast({title:e.msg,icon:"none"}),i.getOrderNumber(),i.getOrderList()):2!=e.state&&500!=e.code||uni.showToast({title:e.msg,icon:"none"}),i.handelOrder={}})).finally((function(){i.clickType=!1})))},endOrder:(0,d.debounce)((function(t,e){var i=this,s=this.urlList[this.typeId].endOrder;this.clickType||(this.clickType=!0,n.default.post(s,{id:e.id,syrid:this.userInfo.id}).then((function(t){1!=t.state&&200!=t.code||(uni.showToast({title:t.msg,icon:"none"}),i.getOrderNumber(),i.getOrderList())})).finally((function(){i.clickType=!1})))}),500)}};e.default=p}).call(this,i("f3b9")["default"])},d87b:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","detail-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u8ba2\u5355\u8be6\u60c5","show-back":!0,"title-color":"#333333",backgroundColor:t.backgroundColor,_i:1}}),i("view",{staticClass:t._$s(2,"sc","content-part"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","status-section"),attrs:{_i:3}},[i("image",{staticClass:t._$s(4,"sc","status-section-image"),attrs:{src:t._$s(4,"a-src",t.stateItem.icon),_i:4}}),i("text",{staticClass:t._$s(5,"sc","status-text"),attrs:{_i:5}},[t._v(t._$s(5,"t0-0",t._s(t.stateItem.text)))])]),i("view",{staticClass:t._$s(6,"sc","booking-card"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","card_title"),attrs:{_i:7}}),i("view",{staticClass:t._$s(8,"sc","service-item"),attrs:{_i:8}},[t._$s(9,"i",t.orderInfo.photo&&0!=t.orderInfo.photo.length)?i("image",{staticClass:t._$s(9,"sc","service-image"),attrs:{src:t._$s(9,"a-src",t.photo[0]),_i:9}}):t._e(),i("view",{staticClass:t._$s(10,"sc","service-info"),attrs:{_i:10}},[i("view",{staticClass:t._$s(11,"sc","service-box"),attrs:{_i:11}},[i("view",{staticClass:t._$s(12,"sc","service-name-row"),attrs:{_i:12}},[i("text",{staticClass:t._$s(13,"sc","service-name white-space-nowrap"),attrs:{_i:13}},[t._v(t._$s(13,"t0-0",t._s(t.orderInfo.title)))]),i("text",{staticClass:t._$s(14,"sc","service-name-num"),attrs:{_i:14}})]),i("text",{staticClass:t._$s(15,"sc","service-subtitle white-space-nowrap"),attrs:{_i:15}},[t._v(t._$s(15,"t0-0",t._s(0==t.identity?"\u4f7f\u7528\u573a\u666f":"\u670d\u52a1\u8303\u56f4"))+t._$s(15,"t0-1",t._s(t.orderInfo.first_class_title+" "+t.orderInfo.second_class_title)))])]),i("view",{staticClass:t._$s(16,"sc","service-price"),attrs:{_i:16}},[i("text",[t._v(t._$s(17,"t0-0",t._s(t.orderInfo.price)))])])])]),i("view",{staticClass:t._$s(18,"sc","service-real-1"),attrs:{_i:18}},[i("text",{staticClass:t._$s(19,"sc","real-lable"),attrs:{_i:19}}),i("view",{staticClass:t._$s(20,"sc","real-price"),attrs:{_i:20}},[i("text",{staticClass:t._$s(21,"sc","icon"),attrs:{_i:21}}),i("text",{staticClass:t._$s(22,"sc","price"),attrs:{_i:22}},[t._v(t._$s(22,"t0-0",t._s(t.orderInfo.order_money)))])])])]),i("view",{staticClass:t._$s(23,"sc","order-card time-card"),attrs:{_i:23}},[i("view",{staticClass:t._$s(24,"sc","card_title"),attrs:{_i:24}}),i("view",{staticClass:t._$s(25,"sc","service-real"),attrs:{_i:25}},[i("view",{staticClass:t._$s(26,"sc","card_time"),attrs:{_i:26}},[t._v(t._$s(26,"t0-0",t._s(t.formatDateTime(t.orderInfo.reserve_start_time))))]),i("view",{staticClass:t._$s(27,"sc","card_time"),attrs:{_i:27}},[t._v(t._$s(27,"t0-0",t._s(t.formatDateTime(t.orderInfo.reserve_end_time))))])])]),i("view",{staticClass:t._$s(28,"sc","shop_card"),attrs:{_i:28}},[t._$s(29,"i",0==t.identity)?i("view",{staticClass:t._$s(29,"sc","card_title"),attrs:{_i:29}}):t._e(),t._$s(30,"i",1==t.identity)?i("view",{staticClass:t._$s(30,"sc","card_title"),attrs:{_i:30}}):t._e(),i("view",{staticClass:t._$s(31,"sc","shop_title_box"),attrs:{_i:31}},[i("image",{staticClass:t._$s(32,"sc","shop_photo"),attrs:{src:t._$s(32,"a-src",t.orderInfo.head_photo),_i:32}}),i("view",{staticClass:t._$s(33,"sc","left-section"),attrs:{_i:33}},[i("view",{staticClass:t._$s(34,"sc","shop_title"),attrs:{_i:34}},[t._v(t._$s(34,"t0-0",t._s(t.orderInfo.name)))]),i("text",{staticClass:t._$s(35,"sc","shop_phone"),attrs:{_i:35},on:{click:function(e){return t.contactService(t.orderInfo.phone)}}},[t._v(t._$s(35,"t0-0",t._s(t.orderInfo.phone||t.orderInfo.account)))])]),i("image",{staticClass:t._$s(36,"sc","shop_icon"),attrs:{_i:36},on:{click:function(e){return t.contactService(t.orderInfo.phone)}}})]),t._$s(37,"i",t.orderInfo.second_class_title)?i("view",{staticClass:t._$s(37,"sc","service_content"),class:t._$s(37,"c",{service_content__last:0==t.identity}),attrs:{_i:37}},[t._v(t._$s(37,"t0-0",t._s(0==t.identity?"\u4f7f\u7528\u573a\u666f\u8be6\u60c5":"\u670d\u52a1\u8303\u56f4\u8be6\u60c5"))+t._$s(37,"t0-1",t._s(t.orderInfo.first_class_title+" "+t.orderInfo.second_class_title.join("\u3001"))))]):t._e()]),i("view",{staticClass:t._$s(38,"sc","order-card info-card"),attrs:{_i:38}},[i("view",{staticClass:t._$s(39,"sc","card_title"),attrs:{_i:39}}),i("view",{staticClass:t._$s(40,"sc","info-item"),attrs:{_i:40}},[i("text",{staticClass:t._$s(41,"sc","label"),attrs:{_i:41}}),i("text",{staticClass:t._$s(42,"sc","value"),attrs:{_i:42}},[t._v(t._$s(42,"t0-0",t._s(t.orderInfo.number)))])]),i("view",{staticClass:t._$s(43,"sc","info-item"),attrs:{_i:43}},[i("text",{staticClass:t._$s(44,"sc","label"),attrs:{_i:44}}),i("text",{staticClass:t._$s(45,"sc","value"),attrs:{_i:45}},[t._v(t._$s(45,"t0-0",t._s(t.orderInfo.add_time)))])]),i("view",{staticClass:t._$s(46,"sc","info-item"),attrs:{_i:46}},[i("text",{staticClass:t._$s(47,"sc","label"),attrs:{_i:47}}),i("text",{staticClass:t._$s(48,"sc","value"),attrs:{_i:48}},[t._v(t._$s(48,"t0-0",t._s(t.orderInfo.service_duration)))])]),t._$s(49,"i",1!=t.orderInfo.state&&t.orderInfo.pay_kind)?i("view",{staticClass:t._$s(49,"sc","info-item"),attrs:{_i:49}},[i("text",{staticClass:t._$s(50,"sc","label"),attrs:{_i:50}}),i("text",{staticClass:t._$s(51,"sc","value"),attrs:{_i:51}},[t._v(t._$s(51,"t0-0",t._s(1==t.orderInfo.pay_kind?"\u8d26\u6237\u4f59\u989d":2==t.orderInfo.pay_kind?"\u5fae\u4fe1\u652f\u4ed8":3==t.orderInfo.pay_kind?"\u652f\u4ed8\u5b9d\u652f\u4ed8":"")))])]):t._e(),t._$s(52,"i",1!=t.orderInfo.state&&t.orderInfo.pay_time)?i("view",{staticClass:t._$s(52,"sc","info-item"),attrs:{_i:52}},[i("text",{staticClass:t._$s(53,"sc","label"),attrs:{_i:53}}),i("text",{staticClass:t._$s(54,"sc","value"),attrs:{_i:54}},[t._v(t._$s(54,"t0-0",t._s(t.orderInfo.pay_time)))])]):t._e(),t._$s(55,"i",t.orderInfo.state>=3&&t.orderInfo.get_time)?i("view",{staticClass:t._$s(55,"sc","info-item"),attrs:{_i:55}},[i("text",{staticClass:t._$s(56,"sc","label"),attrs:{_i:56}}),i("text",{staticClass:t._$s(57,"sc","value"),attrs:{_i:57}},[t._v(t._$s(57,"t0-0",t._s(t.orderInfo.get_time)))])]):t._e(),t._$s(58,"i",t.orderInfo.state>=4&&t.orderInfo.start_time)?i("view",{staticClass:t._$s(58,"sc","info-item"),attrs:{_i:58}},[i("text",{staticClass:t._$s(59,"sc","label"),attrs:{_i:59}}),i("text",{staticClass:t._$s(60,"sc","value"),attrs:{_i:60}},[t._v(t._$s(60,"t0-0",t._s(t.orderInfo.start_time)))])]):t._e(),t._$s(61,"i",t.orderInfo.state>=5&&t.orderInfo.end_time)?i("view",{staticClass:t._$s(61,"sc","info-item"),attrs:{_i:61}},[i("text",{staticClass:t._$s(62,"sc","label"),attrs:{_i:62}}),i("text",{staticClass:t._$s(63,"sc","value"),attrs:{_i:63}},[t._v(t._$s(63,"t0-0",t._s(t.orderInfo.end_time)))])]):t._e()])]),i("view",{staticClass:t._$s(64,"sc","bottom-buttons"),attrs:{_i:64}},[t._$s(65,"i",2==t.orderInfo.state||3==t.orderInfo.state)?i("view",{staticClass:t._$s(65,"sc","handel-button btn-border"),attrs:{_i:65},on:{click:function(e){return e.stopPropagation(),t.cancelOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(66,"sc","button-text"),attrs:{_i:66}})]):t._e(),t._$s(67,"i",2==t.orderInfo.state)?i("view",{staticClass:t._$s(67,"sc","handel-button btn-bg"),attrs:{_i:67},on:{click:function(e){return e.stopPropagation(),t.confirmOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(68,"sc","button-text"),attrs:{_i:68}})]):t._e(),t._$s(69,"i",3==t.orderInfo.state)?i("view",{staticClass:t._$s(69,"sc","handel-button btn-bg"),attrs:{_i:69},on:{click:function(e){return e.stopPropagation(),t.startOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(70,"sc","button-text"),attrs:{_i:70}},[t._v(t._$s(70,"t0-0",t._s(0==t.identity?"\u5f00\u59cb\u63a5\u5355":"\u5f00\u59cb\u670d\u52a1")))])]):t._e(),t._$s(71,"i",4==t.orderInfo.state)?i("view",{staticClass:t._$s(71,"sc","handel-button btn-bg"),attrs:{_i:71},on:{click:function(e){return e.stopPropagation(),t.endOrder(e,t.orderInfo)}}},[i("text",{staticClass:t._$s(72,"sc","button-text"),attrs:{_i:72}},[t._v(t._$s(72,"t0-0",t._s(0==t.identity?"\u5b8c\u6210\u8ba2\u5355":"\u670d\u52a1\u5b8c\u6210")))])]):t._e()]),i("serviceCodeInput",{attrs:{show:t.showInput,_i:73},on:{close:function(e){t.showInput=!1},confirm:t.onConfirm}}),i("view",{staticClass:t._$s(74,"sc","permission"),class:t._$s(74,"c",{transform:t.isShowPer}),attrs:{_i:74}},[i("view",{staticClass:t._$s(75,"sc","per-tit"),attrs:{_i:75}}),i("view",{staticClass:t._$s(76,"sc","per-cont"),attrs:{_i:76}})])],1)},r=[]},d89a:function(t,e,i){"use strict";i.r(e);var s=i("5135"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},d8cc:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uvLoadingIcon:i("c9c1").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","uv-switch"),class:t._$s(0,"c",[t.disabled&&"uv-switch--disabled"]),style:t._$s(0,"s",[t.switchStyle,t.$uv.addStyle(t.customStyle)]),attrs:{_i:0},on:{click:t.clickHandler}},[i("view",{staticClass:t._$s(1,"sc","uv-switch__bg"),style:t._$s(1,"s",[t.bgStyle]),attrs:{_i:1}}),i("view",{ref:"uv-switch__node",staticClass:t._$s(2,"sc","uv-switch__node"),class:t._$s(2,"c",[t.innerValue&&"uv-switch__node--on"]),style:t._$s(2,"s",[t.nodeStyle]),attrs:{_i:2}},[i("uv-loading-icon",{attrs:{show:t.loading,mode:"circle",timingFunction:"linear",color:t.innerValue?t.activeColor:"#AAABAD",size:.6*t.size,_i:3}})],1)])},r=[]},d924:function(t,e,i){"use strict";i.r(e);var s=i("2c0a"),a=i("df4e");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},d926:function(t,e,i){"use strict";i.r(e);var s=i("0456"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},d9a2:function(t,e,i){"use strict";i.r(e);var s=i("0d59"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},d9fb:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("16bb")),r={data:function(){return{isFirstOPen:!0,sureTimeObj:{},dateList:["\u4eca\u5929","\u660e\u5929","\u540e\u5929"],selectedTimeIndex:"",serviceTimeNum:1,sureTimeDataIndex:null,selectedDateIndex:0,startTimeObj:{serviceTimeNum:"",sureTimeDataIndex:0,selectedDateIndex:0},stateConfig:{1:{class:"state-available",text:"\u53ef\u7ea6"},2:{class:"state-full",text:"\u7ea6\u6ee1"},3:{class:"state-rest",text:"\u4f11\u606f"},4:{class:"state-locked",text:"\u9501\u5b9a"},5:{class:"state-unavailable",text:"\u4e0d\u53ef\u7528"}}}},props:{timeOptions:{type:Array,default:function(){return[]}},firstTimeIndex:{type:Number,default:0},firstDataIndex:{type:Number,default:1},service:{type:Object,default:function(){return{}}},publish_user_id:{type:Number,default:0},server_type:{type:Number,default:0}},watch:{service:{handler:function(t){this.serviceTimeNum=Math.max(1,Math.ceil((t.server_time||0)/10))},deep:!0,immediate:!0}},created:function(){},mounted:function(){},methods:{openTime:function(){t("log","\u6253\u5f00\u65f6\u95f4\u9009\u62e9\u5f39\u6846",this.selectedDateIndex," at components/select-time-page/select-time-page.vue:162"),this.isFirstOPen=!1,this.startTimeObj={selectedTimeIndex:this.selectedTimeIndex,sureTimeDataIndex:this.sureTimeDataIndex,selectedDateIndex:this.selectedDateIndex},this.$refs.popup.open("bottom")},getStateText:function(t){var e;return(null===(e=this.stateConfig[t])||void 0===e?void 0:e.text)||"\u672a\u77e5"},getItemClass:function(t){var e,i=t||0;return(null===(e=this.stateConfig[i])||void 0===e?void 0:e.class)||"state-unknown"},selectDate:function(t){this.selectedDateIndex=t},selectTime:function(e,i){var s=this;if(1===e.state){var r={user_syr_id:this.publish_user_id||this.service.publish_user_id,reserve_time:this.timeOptions[this.selectedDateIndex][i].time,server_id:this.service.id,server_type:this.server_type};a.default.post("/user/reserve/timeCheck",r).then((function(t){200==t.code?(s.selectedTimeIndex=i,s.sureTimeDataIndex=s.selectedDateIndex,s.sureTimeObj={selectedDateIndex:s.selectedDateIndex,selectedTimeIndex:s.selectedTimeIndex,time:s.timeOptions[s.selectedDateIndex][s.selectedTimeIndex],res:t},s.$emit("selectTime",s.sureTimeObj)):uni.showToast({title:"\u5f53\u524d\u65f6\u95f4\u4e0d\u53ef\u9884\u7ea6",icon:"none",duration:1e3})})).catch((function(e){t("log","\u62a5\u9519",e," at components/select-time-page/select-time-page.vue:220")}))}},sureTime:function(){this.$refs.popup.close(),this.$emit("sureTime",this.sureTimeObj)},handelGetTimeArr:function(){var t={selectedDateIndex:this.selectedDateIndex,selectedTimeIndex:this.selectedTimeIndex,time:this.timeOptions[this.selectedDateIndex][this.selectedTimeIndex]};this.$emit("getTimeArr",t)},closeTime:function(){this.selectedTimeIndex=this.startTimeObj.selectedTimeIndex,this.sureTimeDataIndex=this.startTimeObj.sureTimeDataIndex,this.selectedDateIndex=this.startTimeObj.selectedDateIndex,this.$refs.popup.close(),this.$emit("closeTime")}}};e.default=r}).call(this,i("f3b9")["default"])},da78:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","uv-icon"),class:t._$s(0,"c",["uv-icon--"+t.labelPos]),attrs:{_i:0},on:{click:t.clickHandler}},[t._$s(1,"i",t.isImg)?i("image",{staticClass:t._$s(1,"sc","uv-icon__img"),style:t._$s(1,"s",[t.imgStyle,t.$uv.addStyle(t.customStyle)]),attrs:{src:t._$s(1,"a-src",t.name),mode:t._$s(1,"a-mode",t.imgMode),_i:1}}):i("text",{staticClass:t._$s(2,"sc","uv-icon__icon"),class:t._$s(2,"c",t.uClasses),style:t._$s(2,"s",[t.iconStyle,t.$uv.addStyle(t.customStyle)]),attrs:{"hover-class":t._$s(2,"a-hover-class",t.hoverClass),_i:2}},[t._v(t._$s(2,"t0-0",t._s(t.icon)))]),t._$s(3,"i",""!==t.label)?i("text",{staticClass:t._$s(3,"sc","uv-icon__label"),style:t._$s(3,"s",{color:t.labelColor,fontSize:t.$uv.addUnit(t.labelSize),marginLeft:"right"==t.labelPos?t.$uv.addUnit(t.space):0,marginTop:"bottom"==t.labelPos?t.$uv.addUnit(t.space):0,marginRight:"left"==t.labelPos?t.$uv.addUnit(t.space):0,marginBottom:"top"==t.labelPos?t.$uv.addUnit(t.space):0}),attrs:{_i:3}},[t._v(t._$s(3,"t0-0",t._s(t.label)))]):t._e()])},a=[]},da7e:function(t,e,i){"use strict";i.r(e);var s=i("968d"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},db33:function(t,e,i){"use strict";i.r(e);var s=i("4479"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},db3d:function(t,e,i){"use strict";i.r(e);var s=i("be54"),a=i("d27b");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"046341fc",null,!1,s["a"],void 0);e["default"]=n.exports},dbf7:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","my-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u4e2a\u4eba\u4e2d\u5fc3",showBack:!0,backgroundColor:"transparent",_i:1}}),i("view",{staticClass:t._$s(2,"sc","user-info"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","user-header"),attrs:{_i:3}},[i("view",{staticClass:t._$s(4,"sc","avatar-wrap"),attrs:{_i:4}},[t._$s(5,"i",t.userInfo.head_photo)?i("image",{staticClass:t._$s(5,"sc","avatar"),attrs:{src:t._$s(5,"a-src",t.userInfo.head_photo),_i:5}}):t._e()]),i("view",{staticClass:t._$s(6,"sc","user-detail"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","name-wrap"),attrs:{_i:7}},[i("text",{staticClass:t._$s(8,"sc","name"),attrs:{_i:8}},[t._v(t._$s(8,"t0-0",t._s(t.userInfo.name)))]),t._$s(9,"i",1==t.artisanType)?i("view",{attrs:{_i:9}},[t._$s(10,"i",t.userInfo.qualifications&&0!=t.userInfo.qualifications.length)?i("view",{staticClass:t._$s(10,"sc","verified"),attrs:{_i:10}},[i("image",{staticClass:t._$s(11,"sc","sign-icon"),attrs:{_i:11}}),i("text",{staticClass:t._$s(12,"sc","verified-text"),attrs:{_i:12}})]):i("view",{staticClass:t._$s(13,"sc","verified-no"),attrs:{_i:13}},[i("image",{staticClass:t._$s(14,"sc","sign-icon"),attrs:{_i:14}}),i("text",{staticClass:t._$s(15,"sc","verified-text no"),attrs:{_i:15}})])]):t._e()])]),i("view",{staticClass:t._$s(16,"sc","edit-profile"),attrs:{_i:16},on:{click:t.goArtisanProfile}},[i("text",{staticClass:t._$s(17,"sc","edit-text"),attrs:{_i:17}}),i("text",{staticClass:t._$s(18,"sc","arrow"),attrs:{_i:18}})])]),i("view",{staticClass:t._$s(19,"sc","data-cards"),attrs:{_i:19}},[i("view",{staticClass:t._$s(20,"sc","my-card"),attrs:{_i:20},on:{click:function(e){return t.navigateTo("/pages/wallet/wallet")}}},[i("view",{staticClass:t._$s(21,"sc","card-content"),attrs:{_i:21}},[i("text",{staticClass:t._$s(22,"sc","amount"),attrs:{_i:22}},[t._v(t._$s(22,"t0-0",t._s(t.userInfo.money)))]),i("view",{staticClass:t._$s(23,"sc","label-wrap"),attrs:{_i:23}},[i("text",{staticClass:t._$s(24,"sc","label"),attrs:{_i:24}}),i("text",{staticClass:t._$s(25,"sc","arrow"),attrs:{_i:25}})])]),i("image",{staticClass:t._$s(26,"sc","card-bg"),attrs:{_i:26}})]),i("view",{staticClass:t._$s(27,"sc","my-card"),attrs:{_i:27},on:{click:function(e){return t.navigateTo("/pages/order/all-orders")}}},[i("view",{staticClass:t._$s(28,"sc","card-content"),attrs:{_i:28}},[i("text",{staticClass:t._$s(29,"sc","order"),attrs:{_i:29}},[t._v(t._$s(29,"t0-0",t._s(t.orderCount)))]),i("view",{staticClass:t._$s(30,"sc","label-wrap"),attrs:{_i:30}},[i("text",{staticClass:t._$s(31,"sc","label"),attrs:{_i:31}}),i("text",{staticClass:t._$s(32,"sc","arrow"),attrs:{_i:32}})])]),i("image",{staticClass:t._$s(33,"sc","card-bg"),attrs:{_i:33}})])]),i("view",{attrs:{_i:34},on:{click:function(e){return t.navigateTo("/pages/shop/buy-service")}}}),i("view",{attrs:{_i:35},on:{click:function(e){return t.navigateTo("/pages/shop/buy-order")}}}),i("view",{staticClass:t._$s(36,"sc","service-manage"),attrs:{_i:36}},[i("view",{staticClass:t._$s(37,"sc","manage-header"),attrs:{_i:37}},[i("view",{staticClass:t._$s(38,"sc","manage-info"),attrs:{_i:38}},[i("text",{staticClass:t._$s(39,"sc","manage-title"),attrs:{_i:39}}),i("text",{staticClass:t._$s(40,"sc","manage-count"),attrs:{_i:40}},[t._v(t._$s(40,"t0-0",t._s(t.servicesCount)))]),i("text",{staticClass:t._$s(41,"sc","manage-subtitle"),attrs:{_i:41}})]),i("view",{staticClass:t._$s(42,"sc","manage-btn"),attrs:{_i:42},on:{click:function(e){return t.navigateTo("/pages/artisan/service-list")}}},[i("text",{staticClass:t._$s(43,"sc","btn-text"),attrs:{_i:43}})])])]),i("view",{staticClass:t._$s(44,"sc","function-list"),attrs:{_i:44}},[i("view",{staticClass:t._$s(45,"sc","function-item"),attrs:{_i:45},on:{click:function(e){return t.navigateTo("/pages/contact/contact")}}},[i("text",{staticClass:t._$s(46,"sc","function-text"),attrs:{_i:46}}),i("text",{staticClass:t._$s(47,"sc","arrow"),attrs:{_i:47}})])])])],1)},r=[]},dd00:function(t,e,i){"use strict";(function(t,s){var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.Painter=void 0;var r=a(i("3b2d")),c=function(){return c=Object.assign||function(t){for(var e,i=1,s=arguments.length;i0&&a[a.length-1])||6!==r[0]&&2!==r[0])){c=0;continue}if(3===r[0]&&(!a||r[1]>a[0]&&r[1]t.length)&&(e=t.length);for(var i=0,s=new Array(e);i=t.length?{done:!0}:{done:!1,value:t[s++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function E(t){return"number"==typeof t}function B(t){return"auto"===t||null===t}function R(t){return/%$/.test(t)}var q=g,U=m,z=y,H=w,V=$;function W(t){return t.replace(/-([a-z])/g,(function(t,e){return e.toUpperCase()}))}function X(t,e){var i,s,a=function(t){var e=t.match(/([a-z]+)/)[1];return[e,W(t.split(e)[1])]}(t),r=a[0],c=a[1],n=e.split(" ");if(c)return(i={})[r+c]=e,i;if(n.length&&!c){var o=n[0],d=n[1],u=n[2],f=n[3];return(s={})[r+l[0]]=o,s[r+l[1]]=d||o,s[r+l[2]]=u||o,s[r+l[3]]=f||d||o,s}}var G,Y=0,Q=function(){function t(){L(this,"elements",[]),L(this,"afterElements",[]),L(this,"beforeElements",[]),L(this,"ids",[]),L(this,"width",0),L(this,"height",0),L(this,"top",0),L(this,"left",0),L(this,"pre",null),L(this,"offsetX",0),L(this,"offsetY",0),Y++,this.id=Y}var e=t.prototype;return e.fixedBind=function(t,e){void 0===e&&(e=0),this.container=e?t.parent:t.root,this.container.fixedLine=this,this.fixedAdd(t)},e.fixedAdd=function(t){if(!this.ids.includes(t.id)){this.ids.push(t.id),this.elements.push(t);var e=t.computedStyle.zIndex;(void 0===e?0:e)>=0?this.afterElements.push(t):this.beforeElements.push(t),this.refreshLayout()}},e.bind=function(t){this.container=t.parent,this.container.line=null,this.container.lines?(this.container.lines.push(this),this.pre=this.getPreLine(),this.top=this.pre.top+this.pre.height,this.left=this.container.contentSize.left):(this.top=this.container.contentSize.top,this.left=this.container.contentSize.left,this.container.lines=[this]),this.isInline=t.isInline(),this.container.line=this,this.outerWidth=t.parent&&t.parent.contentSize.width?t.parent.contentSize.width:1/0,this.add(t)},e.getPreLine=function(){return this.container.lines[this.container.lines.length-2]},e.canIEnter=function(t){return!((100*t.offsetSize.width+100*this.width)/100>this.outerWidth)||(this.closeLine(),!1)},e.closeLine=function(){delete this.container.line},e.add=function(t){this.ids.includes(t.id)||(this.ids.push(t.id),this.elements.push(t),this.refreshWidthHeight(t))},e.refreshWidthHeight=function(t){t.offsetSize.height>this.height&&(this.height=t.offsetSize.height),this.width+=t.offsetSize.width||0,(this.container.lineMaxWidth||0)0;)"("===e[o+=1]&&(n+=1),")"===e[o]&&(n-=1);a="".concat(t(e.slice(c+1,o))),c=o}if(isNaN(Number(e[c]))&&"."!==e[c]||c===r-1){var d=parseFloat(a);switch(s){case"+":i.push(d);break;case"-":i.push(-d);break;case"*":i.push(i.pop()*d);break;case"/":i.push(i.pop()/d)}s=e[c],a=""}}for(var l=0;i.length;)l+=i.pop();return l}(s.replace(new RegExp(/-?[0-9]+(\.[0-9]+)?(rpx|px|%)/,"g"),I));t.style.textIndent=a}}},e.layout=function(t,e){var i=this;this.refreshXAlign(),this.pre?(this.top=this.pre.top+this.pre.height+this.offsetY,this.left=e+this.offsetX):(this.top=Math.max(this.top,this.container.contentSize.top,t)+this.offsetY,this.left=Math.max(this.left,this.container.contentSize.left,e)+this.offsetX),this.elements.forEach((function(t,e){i.setIndent(t);var s=i.elements[e-1],a=i.getOffsetY(t);t.style.top=i.top+a,t.style.left=s?s.offsetSize.left+s.offsetSize.width:i.left,t.getBoxPosition()}))},e.refreshLayout=function(){this.afterElements=this.afterElements.sort((function(t,e){return t.computedStyle.zIndex-e.computedStyle.zIndex})),this.beforeElements=this.beforeElements.sort((function(t,e){return t.computedStyle.zIndex-e.computedStyle.zIndex}))},t}(),J=((G={})["row"]={width:"width",contentWidth:"width",lineMaxWidth:"lineMaxWidth",left:"left",top:"top",height:"height",lineMaxHeight:"lineMaxHeight",marginLeft:"marginLeft"},G["column"]={width:"height",contentWidth:"height",lineMaxWidth:"lineMaxWidth",left:"top",top:"left",height:"width",lineMaxHeight:"lineMaxHeight",marginLeft:"marginTop"},G),K=function(t){var e,i;function s(){var e;return L(function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(e=t.call(this)||this),"outerWidth",0),e.exactValue=0,e.flexTotal=0,e.width=0,e.key=null,e.flexDirection="row",e}i=t,(e=s).prototype=Object.create(i.prototype),e.prototype.constructor=e,F(e,i);var a=s.prototype;return a.bind=function(t){this.container=t.parent,this.container.line=this,this.container.lines?(this.container.lines.push(this),this.pre=this.getPreLine(),this.top=this.pre.top+this.pre.height,this.left=this.container.contentSize.left):(this.top=this.container.contentSize.top,this.left=this.container.contentSize.left,this.container.lines=[this]),t.parent&&(this.flexDirection=t.parent.style.flexDirection,this.key=J[this.flexDirection]),this.initHeight(t),this.outerWidth=t.parent&&t.parent.contentSize[this.key.contentWidth]?t.parent.contentSize[this.key.contentWidth]:1/0,this.add(t)},a.add=function(t){this.ids.push(t.id);var e=t.style.flex;E(e)?this.flexTotal+=e:E(this.getWidth(t.style))&&(this.exactValue+=this.getWidth(t.offsetSize)),this.elements.push(t),this.refreshWidthHeight(t),t.next||this.closeLine()},a.closeLine=function(){this.calcFlex()},a.initHeight=function(t){this[this.key.height]=0},a.getWidth=function(t){return t[this.key.width]||0},a.getHeight=function(t){return t[this.key.height]||0},a.setWidth=function(t,e){t[this.key.width]=e},a.setHeight=function(t,e){t[this.key.height]=e},a.calcFlex=function(){var t=this,e=this.container.contentSize[this.key.contentWidth],i=0;this.elements.forEach((function(s){var a=s.style,r=s.contentSize,c=t.getWidth(a)||t.getWidth(r);E(a.flex)&&(c=a.flex/t.flexTotal*(e-t.exactValue)),t.setWidth(s.computedStyle,c),s.isFlexCalc=!0,delete s.line,delete s.lines,delete s.lineMaxWidth,s.getBoxWidthHeight(),i=Math.max(i,t.getHeight(s.offsetSize))})),this.setHeight(this,i)},a.refreshWidthHeight=function(t){var e=this.container.style.alignItems;e&&!t.style.alignSelf&&(t.style.alignSelf=e);var i=this.getHeight(t.offsetSize);i>this[this.key.height]&&(this.container[this.key.lineMaxHeight]=this[this.key.height]=i),this[this.key.width]+=this.getWidth(t.offsetSize);var s=Math.min(this.getWidth(this),!this.getWidth(this.container.contentSize)&&1/0);(this.container[this.key.lineMaxWidth]||0)1)return 0;var e=t.style.alignSelf,i=this.getHeight(this.container.contentSize),s=i-this.getHeight(t.offsetSize);return"flex-end"===e?s:"center"===e?s/2:"stretch"===e?(s&&t.name==h&&(t.style[this.key.width]=this.getWidth(t.offsetSize),t.style[this.key.height]=i,delete t.line,delete t.lines,t.getBoxWidthHeight()),0):0},a.layout=function(t,e){var i=this;this.refreshXAlign(),this.pre?(this.top=this.pre.top+this.pre.height+this.offsetY,this.left=e+this.offsetX):(this.top=Math.max(this.top,this.container.contentSize.top,t)+this.offsetY,this.left=Math.max(this.left,this.container.contentSize.left,e)+this.offsetX),this.elements.forEach((function(t,e){i.setIndent(t);var s=i.elements[e-1],a=i.getOffsetY(t);t.style[i.key.top]=i[i.key.top]+a,t.style[i.key.left]=s?s.offsetSize[i.key.left]+i.getWidth(s.offsetSize):i[i.key.left],t.getBoxPosition()}))},s}(Q),Z=m,et=h,it=w,st=0,at={left:null,top:null,width:null,height:null},rt=new Map,ct=function(){function t(t,e,i,a){var c=this;L(this,"id",st++),L(this,"style",{left:null,top:null,width:null,height:null}),L(this,"computedStyle",{}),L(this,"originStyle",{}),L(this,"children",{}),L(this,"layoutBox",A({},at)),L(this,"contentSize",A({},at)),L(this,"clientSize",A({},at)),L(this,"borderSize",A({},at)),L(this,"offsetSize",A({},at)),this.ctx=a,this.root=i,e&&(this.parent=e),this.name=t.type||t.name,this.attributes=this.getAttributes(t);var n=function(t,e){var i,a=["color","fontSize","lineHeight","verticalAlign","fontWeight","textAlign"],c=t.type,n=void 0===c?"view":c,o=t.styles,d=void 0===o?{}:o,u=(e||{}).computedStyle,f=Object.assign({},C);if([U,q,z].includes(n)&&!d.display&&(f.display="inline-block"),u)for(var _=0;_=0&&l<0,q=o>=0&&f<0;return i==_[0]&&(this[i].left=t.left+c+h+N+(R?2*-l:0),this[i].top=t.top+o+g+T+(q?2*-f:0),this[i].width=t.width+(this[i].widthAdd?0:E),this[i].height=t.height+(this[i].heightAdd?0:B),this[i].widthAdd=E,this[i].heightAdd=B),i==_[1]&&(this[i].left=t.left+c+N+(R<0?-l:0),this[i].top=t.top+o+T+(q?-f:0),this[i].width=t.width+h+b,this[i].height=t.height+g+$),i==_[2]&&(this[i].left=t.left+c+N/2+(R<0?-l:0),this[i].top=t.top+o+T/2+(q?-f:0),this[i].width=t.width+h+b+N/2+A/2,this[i].height=t.height+g+$+O/2+T/2),i==_[3]&&(this[i].left=t.left+(R<0?-l:0),this[i].top=t.top+(q?-f:0),this[i].width=t.width+h+b+N+A+c+l,this[i].height=t.height+g+$+O+T+f+o),this[i]},e.layoutBoxUpdate=function(t,e,i,s){var a=this;if(void 0===i&&(i=-1),"border-box"==e.boxSizing){var r=e||{},c=r.border,n=(c=void 0===c?{}:c).borderWidth,o=void 0===n?0:n,d=r.borderTop,l=(d=void 0===d?{}:d).borderTopWidth,u=void 0===l?o:l,f=r.borderBottom,p=(f=void 0===f?{}:f).borderBottomWidth,v=void 0===p?o:p,h=r.borderRight,m=(h=void 0===h?{}:h).borderRightWidth,g=void 0===m?o:m,y=r.borderLeft,b=(y=void 0===y?{}:y).borderLeftWidth,w=void 0===b?o:b,$=r.padding,C=($=void 0===$?{}:$).paddingTop,x=void 0===C?0:C,k=$.paddingRight,S=void 0===k?0:k,D=$.paddingBottom,T=void 0===D?0:D,I=$.paddingLeft,P=void 0===I?0:I;i||(t.width-=P+S+g+w),1!==i||s||(t.height-=x+T+u+v)}this.layoutBox&&(_.forEach((function(i){return a.layoutBox[i]=a.getOffsetSize(t,e,i)})),this.layoutBox=Object.assign({},this.layoutBox,this.layoutBox.borderSize))},e.getBoxPosition=function(){var t=this.computedStyle,e=this.fixedLine,i=this.lines,s=t.left,a=void 0===s?0:s,r=t.top,c=void 0===r?0:r,n=A({},this.contentSize,{left:a,top:c}),o=this.contentSize.top-this.offsetSize.top,d=this.contentSize.left-this.offsetSize.left;if(this.root.fixedLine&&!this.root.isDone){this.root.isDone=!0;for(var l,u=N(this.root.fixedLine.elements);!(l=u()).done;){var f=l.value;f.setPosition(f,this.root.offsetSize),f.getBoxPosition()}}if(e)for(var _,p=N(e.elements);!(_=p()).done;){var v=_.value,h=A({},this.borderSize,{left:a,top:c});v.setPosition(v,h);var m=this.borderSize.top-this.offsetSize.top,g=this.borderSize.left-this.offsetSize.left;v.style.left+=a+g,v.style.top+=c+m,v.getBoxPosition()}if(i)for(var y,b=N(i);!(y=b()).done;)y.value.layout(n.top+o,n.left+d);return this.layoutBoxUpdate(n,t),this.layoutBox},e.getBoxState=function(t,e){return this.isBlock(t)||this.isBlock(e)},e.isBlock=function(t){return void 0===t&&(t=this),t&&"block"==t.style.display},e.isFlex=function(t){return void 0===t&&(t=this),t&&"flex"==t.style.display},e.isInFlow=function(){return!(this.isAbsolute||this.isFixed)},e.inFlexBox=function(t){return void 0===t&&(t=this),!!t.isInFlow()&&!!t.parent&&(!(!t.parent||"flex"!==t.parent.style.display)||void 0)},e.isInline=function(t){return void 0===t&&(t=this),t&&"inline-block"==t.style.display},e.contrastSize=function(t,e,i){var s=t;return i&&(s=Math.min(s,i)),e&&(s=Math.max(s,e)),s},e.measureText=function(t,e){var i=this.ctx.measureText(t),s=i.width,a=i.actualBoundingBoxAscent,r=i.actualBoundingBoxDescent;return{ascent:a,descent:r,width:s,fontHeight:a+r||.7*e+1}},e.getParentSize=function(t,e){if(void 0===t&&(t=this),void 0===e&&(e=!1),t&&t.parent){if(t.parent.contentSize.width)return t.parent.contentSize;if(e)return this.getParentSize(t.parent,e)}return null},e.getBoxWidthHeight=function(){var t=this,e=this.name,i=this.computedStyle,s=this.attributes,a=this.parent,r=void 0===a?{}:a,c=this.ctx,n=this.getChildren(),o=i.left,d=void 0===o?0:o,l=i.top,u=void 0===l?0:l,f=i.bottom,_=i.right,p=i.width,v=void 0===p?0:p,h=i.minWidth,m=i.maxWidth,g=i.minHeight,y=i.maxHeight,b=i.height,w=void 0===b?0:b,$=i.fontSize,C=i.fontWeight,x=i.fontFamily,k=i.fontStyle,S=i.position;i.textIndent;var D=i.lineClamp,T=i.lineHeight,P=i.padding,O=void 0===P?{}:P,j=i.margin,L=void 0===j?{}:j,A=i.border,F=(A=void 0===A?{}:A).borderWidth,M=void 0===F?0:F,N=i.borderRight,E=(N=void 0===N?{}:N).borderRightWidth,q=void 0===E?M:E,U=i.borderLeft,z=(U=void 0===U?{}:U).borderLeftWidth,H=void 0===z?M:z,V=r.contentSize&&r.contentSize.width,W=r.contentSize&&r.contentSize.height;if(R(v)&&V&&(v=I(v,V)),R(v)&&!V&&(v=null),R(w)&&W&&(w=I(w,W)),R(w)&&!W&&(w=null),R(h)&&V&&(h=I(h,V)),R(m)&&V&&(m=I(m,V)),R(g)&&W&&(g=I(g,W)),R(y)&&W&&(y=I(y,W)),i.padding&&V)for(var X in i.padding)Object.hasOwnProperty.call(O,X)&&(O[X]=I(O[X],V));var G=O.paddingRight,Y=void 0===G?0:G,J=O.paddingLeft,tt=void 0===J?0:J;if(i.margin&&[L.marginLeft,L.marginRight].includes("auto"))if(v){var st=V&&V-v-Y-tt-H-q||0;L.marginLeft==L.marginRight?L.marginLeft=L.marginRight=st/2:B(L.marginLeft)?L.marginLeft=st:L.marginRight=st}else L.marginLeft=L.marginRight=0;var at=L.marginRight,ct=void 0===at?0:at,nt=L.marginLeft,ot={width:v,height:w,left:0,top:0},dt=tt+Y+H+q+(void 0===nt?0:nt)+ct;if(this.offsetWidth=dt,e==Z&&!this.attributes.widths){var lt=s.text||"";c.save(),c.setFonts({fontFamily:x,fontSize:$,fontWeight:C,fontStyle:k}),lt.length,"\n"==lt&&(lt="",this.isBr=!0),(""+lt).split("\n").map((function(e){var i=Array.from(e).map((function(e){var i=""+(/^[\u4e00-\u9fa5]+$/.test(e)?"cn":e)+x+$+C+k,s=rt.get(i);if(s)return{width:s,text:e};var a=t.measureText(e,$).width;return rt.set(i,a),{width:a,text:e}})),s=t.measureText(e,$),a=s.fontHeight,r=s.ascent,c=s.descent;t.attributes.fontHeight=a,t.attributes.ascent=r,t.attributes.descent=c,t.attributes.widths||(t.attributes.widths=[]),t.attributes.widths.push({widths:i,total:i.reduce((function(t,e){return t+e.width}),0)})})),c.restore()}if("image"==e&&null==v){var ut=s.width,ft=s.height;ot.width=this.contrastSize(Math.round(ut*w/ft)||0,h,m),this.layoutBoxUpdate(ot,i,0)}if(e==Z&&null==v){var _t=this.attributes.widths,pt=Math.max.apply(Math,_t.map((function(t){return t.total})));r&&V>0&&(pt>V||this.isBlock(this))&&!this.isAbsolute&&!this.isFixed&&(pt=V),ot.width=this.contrastSize(pt,h,m),this.layoutBoxUpdate(ot,i,0)}if(e==Z&&(r.style.flex||!this.attributes.lines)){var vt=this.attributes.widths.length;this.attributes.widths.forEach((function(t){return t.widths.reduce((function(t,e,i){return t+e.width>ot.width?(vt++,e.width):t+e.width}),0)})),vt=D&&vt>D?D:vt,this.attributes.lines=vt}if("image"==e&&null==w){var ht=s.width,mt=s.height;s.text,ot.height=this.contrastSize(I(ot.width*mt/ht)||0,g,y),this.layoutBoxUpdate(ot,i,1)}e==Z&&null==w&&(T=I(T,$),ot.height=this.contrastSize(I(this.attributes.lines*T),g,y),this.layoutBoxUpdate(ot,i,1,!0)),!v&&r&&r.children&&V&&(!this.isFlex(r)||r.isFlexCalc)&&([et,Z].includes(e)&&this.isFlex()||e==et&&this.isBlock(this)&&this.isInFlow())&&(ot.width=this.contrastSize(V-(r.isFlexCalc?0:dt),h,m),this.layoutBoxUpdate(ot,i)),v&&!R(v)&&(ot.width=this.contrastSize(v,h,m),this.layoutBoxUpdate(ot,i,0)),w&&!R(w)&&(ot.height=this.contrastSize(ot.height,g,y),this.layoutBoxUpdate(ot,i,1));var gt=0;if(n.length){var yt=null,bt=!1;n.forEach((function(e,s){e.getBoxWidthHeight();var a=n[s+1];if(a&&a.isInFlow()&&(e.next=a),!t.line||!t.line.ids.includes(e.id))if(e.isInFlow()&&!e.inFlexBox()){var r=t.getBoxState(yt,e);if(e.isBr)return bt=!0;t.line&&t.line.canIEnter(e)&&!r&&!bt?t.line.add(e):(bt=!1,(new Q).bind(e)),yt=e}else e.inFlexBox()?t.line&&(t.line.canIEnter(e)||"nowrap"==i.flexWrap)?t.line.add(e):(new K).bind(e):e.isFixed?t.root.fixedLine?t.root.fixedLine.fixedAdd(e):(new Q).fixedBind(e):t.fixedLine?t.fixedLine.fixedAdd(e):(new Q).fixedBind(e,1)})),this.lines&&(gt=this.lines.reduce((function(t,e){return t+e.height}),0))}var wt=0,$t=0;if(!v&&(this.isAbsolute||this.isFixed)&&V){var Ct=S==it?V:this.root.width,xt=Ct-(R(d)?I(d,Ct):d)-(R(_)?I(_,Ct):_);wt=i.left?xt:this.lineMaxWidth}if(!w&&(null!=u?u:this.isAbsolute||this.isFixed&&W)){var kt=S==it?W:this.root.height,St=kt-(R(u)?I(u,kt):u)-(R(f)?I(f,kt):f);$t=i.top?St:0}if(v&&!R(v)||ot.width||(ot.width=wt||this.contrastSize((this.isBlock(this)&&!this.isInFlow()?V||r.lineMaxWidth:this.lineMaxWidth)||this.lineMaxWidth,h,m),this.layoutBoxUpdate(ot,i,0)),w||!gt&&!$t||(ot.height=$t||this.contrastSize(gt,g,y),this.layoutBoxUpdate(ot,i)),i.borderRadius&&this.borderSize&&this.borderSize.width)for(var X in i.borderRadius)Object.hasOwnProperty.call(i.borderRadius,X)&&(i.borderRadius[X]=I(i.borderRadius[X],this.borderSize.width));return this.layoutBox},e.layout=function(){return this.getBoxWidthHeight(),this.root.offsetSize=this.offsetSize,this.root.contentSize=this.contentSize,this.getBoxPosition(),this.offsetSize},t}(),nt=function(){var t,e,i,a,r,c,n=[0,11,15,19,23,27,31,16,18,20,22,24,26,28,20,22,24,24,26,28,28,22,24,24,26,26,28,28,24,24,26,26,26,28,28,24,26,26,26,28,28],o=[3220,1468,2713,1235,3062,1890,2119,1549,2344,2936,1117,2583,1330,2470,1667,2249,2028,3780,481,4011,142,3098,831,3445,592,2517,1776,2234,1951,2827,1070,2660,1345,3177],d=[30660,29427,32170,30877,26159,25368,27713,26998,21522,20773,24188,23371,17913,16590,20375,19104,13663,12392,16177,14854,9396,8579,11994,11245,5769,5054,7399,6608,1890,597,3340,2107],l=[1,0,19,7,1,0,16,10,1,0,13,13,1,0,9,17,1,0,34,10,1,0,28,16,1,0,22,22,1,0,16,28,1,0,55,15,1,0,44,26,2,0,17,18,2,0,13,22,1,0,80,20,2,0,32,18,2,0,24,26,4,0,9,16,1,0,108,26,2,0,43,24,2,2,15,18,2,2,11,22,2,0,68,18,4,0,27,16,4,0,19,24,4,0,15,28,2,0,78,20,4,0,31,18,2,4,14,18,4,1,13,26,2,0,97,24,2,2,38,22,4,2,18,22,4,2,14,26,2,0,116,30,3,2,36,22,4,4,16,20,4,4,12,24,2,2,68,18,4,1,43,26,6,2,19,24,6,2,15,28,4,0,81,20,1,4,50,30,4,4,22,28,3,8,12,24,2,2,92,24,6,2,36,22,4,6,20,26,7,4,14,28,4,0,107,26,8,1,37,22,8,4,20,24,12,4,11,22,3,1,115,30,4,5,40,24,11,5,16,20,11,5,12,24,5,1,87,22,5,5,41,24,5,7,24,30,11,7,12,24,5,1,98,24,7,3,45,28,15,2,19,24,3,13,15,30,1,5,107,28,10,1,46,28,1,15,22,28,2,17,14,28,5,1,120,30,9,4,43,26,17,1,22,28,2,19,14,28,3,4,113,28,3,11,44,26,17,4,21,26,9,16,13,26,3,5,107,28,3,13,41,26,15,5,24,30,15,10,15,28,4,4,116,28,17,0,42,26,17,6,22,28,19,6,16,30,2,7,111,28,17,0,46,28,7,16,24,30,34,0,13,24,4,5,121,30,4,14,47,28,11,14,24,30,16,14,15,30,6,4,117,30,6,14,45,28,11,16,24,30,30,2,16,30,8,4,106,26,8,13,47,28,7,22,24,30,22,13,15,30,10,2,114,28,19,4,46,28,28,6,22,28,33,4,16,30,8,4,122,30,22,3,45,28,8,26,23,30,12,28,15,30,3,10,117,30,3,23,45,28,4,31,24,30,11,31,15,30,7,7,116,30,21,7,45,28,1,37,23,30,19,26,15,30,5,10,115,30,19,10,47,28,15,25,24,30,23,25,15,30,13,3,115,30,2,29,46,28,42,1,24,30,23,28,15,30,17,0,115,30,10,23,46,28,10,35,24,30,19,35,15,30,17,1,115,30,14,21,46,28,29,19,24,30,11,46,15,30,13,6,115,30,14,23,46,28,44,7,24,30,59,1,16,30,12,7,121,30,12,26,47,28,39,14,24,30,22,41,15,30,6,14,121,30,6,34,47,28,46,10,24,30,2,64,15,30,17,4,122,30,29,14,46,28,49,10,24,30,24,46,15,30,4,18,122,30,13,32,46,28,48,14,24,30,42,32,15,30,20,4,117,30,40,7,47,28,43,22,24,30,10,67,15,30,19,6,118,30,18,31,47,28,34,34,24,30,20,61,15,30],u=[255,0,1,25,2,50,26,198,3,223,51,238,27,104,199,75,4,100,224,14,52,141,239,129,28,193,105,248,200,8,76,113,5,138,101,47,225,36,15,33,53,147,142,218,240,18,130,69,29,181,194,125,106,39,249,185,201,154,9,120,77,228,114,166,6,191,139,98,102,221,48,253,226,152,37,179,16,145,34,136,54,208,148,206,143,150,219,189,241,210,19,92,131,56,70,64,30,66,182,163,195,72,126,110,107,58,40,84,250,133,186,61,202,94,155,159,10,21,121,43,78,212,229,172,115,243,167,87,7,112,192,247,140,128,99,13,103,74,222,237,49,197,254,24,227,165,153,119,38,184,180,124,17,68,146,217,35,32,137,46,55,63,209,91,149,188,207,205,144,135,151,178,220,252,190,97,242,86,211,171,20,42,93,158,132,60,57,83,71,109,65,162,31,45,67,216,183,123,164,118,196,23,73,236,127,12,111,246,108,161,59,82,41,157,85,170,251,96,134,177,187,204,62,90,203,89,95,176,156,169,160,81,11,245,22,235,122,117,44,215,79,174,213,233,230,231,173,232,116,214,244,234,168,80,88,175],f=[1,2,4,8,16,32,64,128,29,58,116,232,205,135,19,38,76,152,45,90,180,117,234,201,143,3,6,12,24,48,96,192,157,39,78,156,37,74,148,53,106,212,181,119,238,193,159,35,70,140,5,10,20,40,80,160,93,186,105,210,185,111,222,161,95,190,97,194,153,47,94,188,101,202,137,15,30,60,120,240,253,231,211,187,107,214,177,127,254,225,223,163,91,182,113,226,217,175,67,134,17,34,68,136,13,26,52,104,208,189,103,206,129,31,62,124,248,237,199,147,59,118,236,197,151,51,102,204,133,23,46,92,184,109,218,169,79,158,33,66,132,21,42,84,168,77,154,41,82,164,85,170,73,146,57,114,228,213,183,115,230,209,191,99,198,145,63,126,252,229,215,179,123,246,241,255,227,219,171,75,150,49,98,196,149,55,110,220,165,87,174,65,130,25,50,100,200,141,7,14,28,56,112,224,221,167,83,166,81,162,89,178,121,242,249,239,195,155,43,86,172,69,138,9,18,36,72,144,61,122,244,245,247,243,251,235,203,139,11,22,44,88,176,125,250,233,207,131,27,54,108,216,173,71,142,0],_=[],p=[],v=[],h=[],m=[],g=2;function y(t,e){var i;t>e&&(i=t,t=e,e=i),i=e,i*=e,i+=e,i>>=1,h[i+=t]=1}function b(t,i){var s;for(v[t+e*i]=1,s=-2;s<2;s++)v[t+s+e*(i-2)]=1,v[t-2+e*(i+s+1)]=1,v[t+2+e*(i+s)]=1,v[t+s+1+e*(i+2)]=1;for(s=0;s<2;s++)y(t-1,i+s),y(t+1,i-s),y(t-s,i-1),y(t+s,i+1)}function w(t){for(;t>=255;)t=((t-=255)>>8)+(255&t);return t}var $=[];function C(t,e,i,s){var a,r,c;for(a=0;ae&&(i=t,t=e,e=i),i=e,i+=e*e,i>>=1,h[i+=t]}function k(t){var i,s,a,r;switch(t){case 0:for(s=0;s>1&1,i=0;i=5&&(i+=3+m[e]-5);for(e=3;et||3*m[e-3]>=4*m[e]||3*m[e+3]>=4*m[e])&&(i+=40);return i}function D(){var t,i,s,a,r,c=0,n=0;for(i=0;ie*e;)o-=e*e,d++;for(c+=10*d,t=0;t1)for(I=n[t],S=e-7;;){for(m=e-7;m>I-3&&(b(m,S),!(m6)for(I=o[t-7],T=17,m=0;m<6;m++)for(S=0;S<3;S++,T--)1&(T>11?t>>T-12:I>>T)?(v[5-m+e*(2-S+e-11)]=1,v[2-S+e-11+e*(5-m)]=1):(y(5-m,2-S+e-11),y(2-S+e-11,5-m));for(S=0;S=(m=r*(i+a)+a)-2&&(P=m-2,t>9&&P--),O=P,t>9){for(_[O+2]=0,_[O+3]=0;O--;)I=_[O],_[O+3]|=255&I<<4,_[O+2]=I>>4;_[2]|=255&P<<4,_[1]=P>>4,_[0]=64|P>>12}else{for(_[O+1]=0,_[O+2]=0;O--;)I=_[O],_[O+2]|=255&I<<4,_[O+1]=I>>4;_[1]|=255&P<<4,_[0]=64|P>>4}for(O=P+3-(t<10);O0;j--)$[j]=$[j]?$[j-1]^f[w(u[$[j]]+O)]:$[j-1];$[0]=f[w(u[$[0]]+O)]}for(O=0;O<=c;O++)$[O]=u[$[O]];for(T=m,S=0,O=0;O>=1)1&S&&(v[e-1-T+8*e]=1,T<6?v[8+e*T]=1:v[8+e*(T+1)]=1);for(T=0;T<7;T++,S>>=1)1&S&&(v[8+e*(e-7+T)]=1,T?v[6-T+8*e]=1:v[7+8*e]=1);return v}(s)},utf16to8:function(t){var e,i,s,a;for(e="",s=t.length,i=0;i=1&&a<=127?e+=t.charAt(i):a>2047?(e+=String.fromCharCode(224|a>>12&15),e+=String.fromCharCode(128|a>>6&63),e+=String.fromCharCode(128|a>>0&63)):(e+=String.fromCharCode(192|a>>6&31),e+=String.fromCharCode(128|a>>0&63));return e},draw:function(t,i,a,r,c){i.drawView(a,r);var n=i.ctx,o=a.contentSize,d=o.width,l=o.height,u=o.left,f=o.top;r.borderRadius,r.backgroundColor;var _=r.color,p=void 0===_?"#000000":_;if(r.border,a.contentSize.left,a.borderSize.left,a.contentSize.top,a.borderSize.top,g=c||g,n){n.save(),i.setOpacity(r),i.setTransform(a,r);var v=Math.min(d,l);t=this.utf16to8(t);var h=this.getFrame(t),m=v/e;n.setFillStyle(p);for(var y=0;y=360&&(c-=360),c<0&&(c+=360),0===(c=Math.round(c)))return{x0:Math.round(e/2)+s,y0:i+a,x1:Math.round(e/2)+s,y1:a};if(180===c)return{x0:Math.round(e/2)+s,y0:a,x1:Math.round(e/2)+s,y1:i+a};if(90===c)return{x0:s,y0:Math.round(i/2)+a,x1:e+s,y1:Math.round(i/2)+a};if(270===c)return{x0:e+s,y0:Math.round(i/2)+a,x1:s,y1:Math.round(i/2)+a};var n=Math.round(180*Math.asin(e/Math.sqrt(Math.pow(e,2)+Math.pow(i,2)))/Math.PI);if(c===n)return{x0:s,y0:i+a,x1:e+s,y1:a};if(c===180-n)return{x0:s,y0:a,x1:e+s,y1:i+a};if(c===180+n)return{x0:e+s,y0:a,x1:s,y1:i+a};if(c===360-n)return{x0:e+s,y0:i+a,x1:s,y1:a};var o,d=0,l=0,u=0,f=0;if(c180-n&&c<180||c>180&&c<180+n||c>360-n){var _=c*Math.PI/180,p=c360-n?i/2:-i/2,v=Math.tan(_)*p,h=c180-n&&c<180?e/2-v:-e/2-v;d=-(u=v+(o=Math.pow(Math.sin(_),2)*h)),l=-(f=p+o/Math.tan(_))}(c>n&&c<90||c>90&&c<90+n||c>180+n&&c<270||c>270&&c<360-n)&&(_=(90-c)*Math.PI/180,v=c>n&&c<90||c>90&&c<90+n?e/2:-e/2,p=Math.tan(_)*v,h=c>n&&c<90||c>270&&c<360-n?i/2-p:-i/2-p,d=-(u=v+(o=Math.pow(Math.sin(_),2)*h)/Math.tan(_)),l=-(f=p+o));return d=Math.round(d+e/2)+s,l=Math.round(i/2-l)+a,u=Math.round(u+e/2)+s,f=Math.round(i/2-f)+a,{x0:d,y0:l,x1:u,y1:f}}(a,t,e,i,s),n=c.x0,o=c.y0,d=c.x1,l=c.y1,u=r.createLinearGradient(n,o,d,l),f=a.match(/linear-gradient\((.+)\)/)[1],_=j(f.substring(f.indexOf(",")+1)),p=0;p<_.colors.length;p++)u.addColorStop(_.percents[p],_.colors[p]);r.setFillStyle(u)}(e,i,s,a,t,r):t.startsWith("radial")&&function(t,e,i,s,a,r){for(var c=j(a.match(/radial-gradient\((.+)\)/)[1]),n=Math.round(t/2)+i,o=Math.round(e/2)+s,d=r.createRadialGradient(n,o,0,n,o,Math.max(t,e)/2),l=0;l=c||s==d&&r=c)&&(n=e.width/i.width);var l=i.width*n,u=i.height*n,f=a||[],_=f[0],p=f[1],v=O(_)?I(_,e.width):(e.width-l)*(P(_)?I(_,1):{left:0,center:.5,right:1}[_||"center"]),h=O(p)?I(p,e.height):(e.height-u)*(P(p)?I(p,1):{top:0,center:.5,bottom:1}[p||"center"]),m=function(t,e){return[(t-v)/n,(e-h)/n]},g=m(0,0),y=g[0],b=g[1],w=m(e.width,e.height),$=w[0],C=w[1],x=Math.max,k=Math.min;return{sx:x(y,0),sy:x(b,0),sw:k($-y,i.width),sh:k(C-b,i.height),dx:x(v,0),dy:x(h,0),dw:k(l,e.width),dh:k(u,e.height)}}({objectFit:_,objectPosition:h},e.contentSize,t),s=i.sx,r=i.sy,c=i.sh,n=i.sw,o=i.dx,l=i.dy,u=i.dh,f=i.dw;k==d.MP_BAIDU?a.drawImage(t.src,o+w,l+$,f,u,s,r,n,c):a.drawImage(t.src,s,r,n,c,o+w,l+$,f,u)}else a.drawImage(t.src,w,$,y,b)},D=function(){a.restore(),j.drawView(e,i,!1,!0,!1),r(1)},T=function(t){S(t),D()},T(t),[2]}))}))}))];case 1:return r.sent(),[2]}}))}))},t.prototype.drawText=function(t,e,i,s){var a=this,r=this.ctx,c=e.borderSize,n=e.contentSize,o=e.left,d=e.top,l=n.width,u=n.height,f=n.left-c.left||0,_=n.top-c.top||0,p=i.color,v=i.lineHeight,h=i.fontSize,m=i.fontWeight,g=i.fontFamily,y=i.fontStyle,b=i.textIndent,w=void 0===b?0:b,$=i.textAlign,C=i.textStroke,x=i.verticalAlign,k=void 0===x?_t:x,S=i.backgroundColor,D=i.lineClamp,P=i.backgroundClip,O=i.textShadow,j=i.textDecoration;if(w=T(w)?w:0,this.drawView(e,i,P!=dt),v=I(v,h),t){r.save(),o+=f,d+=_;var L=s.fontHeight,A=s.descent,F=void 0===A?0:A,M=s.ascent,N=F+(void 0===M?0:M);switch(r.setFonts({fontFamily:g,fontSize:h,fontWeight:m,fontStyle:y}),r.setTextBaseline(_t),r.setTextAlign($),P?this.setBackground(S,l,u,o,d):r.setFillStyle(p),$){case vt:break;case ht:o+=.5*l;break;case mt:o+=l}var E=s.lines*v,B=Math.ceil((u-E)/2);switch(B<0&&(B=0),k){case ft:break;case _t:d+=B;break;case pt:d+=2*B}var R=(v-L)/2,q=v/2,U=function(t){var e=r.measureText(t),i=e.actualBoundingBoxDescent,s=void 0===i?0:i,a=e.actualBoundingBoxAscent;return k==ft?{fix:N?void 0===a?0:a:q-R/2,lineY:N?0:R-R/2}:k==_t?{fix:N?q+s/4:q,lineY:N?0:R}:k==pt?{fix:N?v-s:q+R/2,lineY:N?2*R:R+R/2}:{fix:0,height:0,lineY:0}},z=function(t,e,i){var a=t;switch($){case vt:a+=i;break;case ht:a=(t-=i/2)+i;break;case mt:a=t,t-=i}if(j){r.setLineWidth(h/13),r.beginPath();var c=.1*s.fontHeight;/\bunderline\b/.test(j)&&(r.moveTo(t,e+s.fontHeight+c),r.lineTo(a,e+s.fontHeight+c)),/\boverline\b/.test(j)&&(r.moveTo(t,e-c),r.lineTo(a,e-c)),/\bline-through\b/.test(j)&&(r.moveTo(t,e+.5*s.fontHeight),r.lineTo(a,e+.5*s.fontHeight)),r.closePath(),r.setStrokeStyle(p),r.stroke()}},H=function(t,e,i){var s=function(){r.setLineWidth(C.width),r.setStrokeStyle(C.color),r.strokeText(t,e,i)},c="outset";C&&C.type!==c?(r.save(),a.setShadow({boxShadow:O}),r.fillText(t,e,i),r.restore(),s()):C&&C.type==c?(r.save(),a.setShadow({boxShadow:O}),s(),r.restore(),r.save(),r.fillText(t,e,i),r.restore()):(a.setShadow({boxShadow:O}),r.fillText(t,e,i))};if(!s.widths||1==s.widths.length&&s.widths[0].total+w<=n.width){var V=U(t),W=V.fix,X=void 0===W?0:W,G=V.lineY;return H(t,o+w,d+X),z(o+w,d+G,s&&s.widths&&s.widths[0].total||s.text),d+=v,r.restore(),void this.setBorder(e,i)}for(var Y=d,Q=o,J="",K=0,Z=r.measureText("...").width,tt=s.widths,et=0;etn.width){K>=D&&(J+="\u2026"),K++,st=0;var lt=U(J);X=lt.fix,G=lt.lineY,H(J,Q,d+X),z(Q,d+G,st),d+=v,J=""}else if(at==it.length-1){et!=tt.length-1&&K==D&&Z+stY+u||K>D)break}}r.restore()}},t.prototype.source=function(t){return n(this,void 0,void 0,(function(){var e,i,a,r,c=this;return o(this,(function(n){switch(n.label){case 0:if(this.node=null,e=+new Date,"{}"==JSON.stringify(t))return[2];if(t.styles=t.styles||t.css||{},!t.type)for(i in t.type=ut,t)["views","children","type","css","styles"].includes(i)||(t.styles[i]=t[i],delete t[i]);return t.styles.boxSizing||(t.styles.boxSizing="border-box"),[4,this.create(t)];case 1:return(a=n.sent())?(r=a.layout()||{},this.size=r,this.node=a,this.onEffectFinished().then((function(t){return c.lifecycle("onEffectSuccess",t)})).catch((function(t){return c.lifecycle("onEffectFail",t)})),this.performance&&s("log","\u5e03\u5c40\u7528\u65f6\uff1a"+(+new Date-e)+"ms"," at uni_modules/lime-painter/components/l-painter/painter.js:1"),[2,this.size]):[2,s("warn","no node"," at uni_modules/lime-painter/components/l-painter/painter.js:1")]}}))}))},t.prototype.getImageInfo=function(t){return this.imageBus[t]||(this.imageBus[t]=this.createImage(t,this.useCORS)),this.imageBus[t]},t.prototype.create=function(t,e){return n(this,void 0,void 0,(function(){var i,s,a,r,n,d,l,u,f,_,p,v,h,m,g,y,b,w,$,C,x,k,S,D;return o(this,(function(o){switch(o.label){case 0:if(!t)return[2];if(t.styles||(t.styles=t.css||{}),i=t.type,s=t.show,a=void 0===s||s,r=i==ot,n=[dt,lt].includes(i),d="textBox"==i,l=t.styles||{},u=l.backgroundImage,f=l.display,r&&!t.src&&!t.url)return[2];if("none"==f||!a)return[2];if(n||d){if(_=t.children,p=t.views,!_&&p&&(t.children=_=p),!t.text&&(!_||_&&!_.length))return[2];_&&_.length&&!t.flattened&&(v=function t(e,i,s){void 0===i&&(i={}),void 0===s&&(s=!0);var a=[];return e.forEach((function(e){var r=e.styles,n=void 0===r?{}:r,o=e.css,d=void 0===o?{}:o,l=e.children,u=void 0===l?[]:l,f=e.views,_=void 0===f?[]:f,p=e.text,v=void 0===p?"":p,h=e.type,m=void 0===h?"":h;!u&&_&&(e.children=u=_);var g;g=c(c(s?c({},i):{},n),d);var y={},b={},w={};if(Object.keys(g).map((function(t){if(t.includes("padding")||t.includes("margin")){var e=X(t,g[t]);Object.keys(e).map((function(t){t.includes("Left")?b[t]=e[t]:t.includes("Right")?w[t]=e[t]:y[t]=e[t]}))}})),g.textIndent&&(b.textIndent=g.textIndent,delete i.textIndent),""!==v){var $=Array.from(v);$.forEach((function(t,e){var i=Object.assign({},g,y);0===e?Object.assign(i,b):e==$.length-1&&Object.assign(i,w),delete i.padding,delete i.margin,a.push({type:"text",text:t,styles:i})}))}if(m==ot||m==lt)a.push(e);else if("block"===n.display&&u.length>0){var C=t(u,g,!1);e.children=C,e.flattened=!0,a.push(e)}else u.length>0&&(C=t(u,g,s),a=a.concat(C))})),a}(t.children||t.views),t.type="view",t.children=v)}if(!(r||t.type==ut&&u))return[3,4];h=r?t.src:"",m=/url\(['"]?(.*?)['"]?\)/.exec(u),u&&m&&m[1]&&(h=m[1]||""),o.label=1;case 1:return o.trys.push([1,3,,4]),[4,this.getImageInfo(h)];case 2:return g=o.sent(),y=g.width,b=g.height,!(w=g.path)&&r?[2]:(w&&(t.attributes=Object.assign(t.attributes||{},{width:y,height:b,path:w,src:w,naturalSrc:h})),[3,4]);case 3:return $=o.sent(),t.type!=ut?[2]:(this.lifecycle("onEffectFail",c(c({},$),{src:h})),[3,4]);case 4:if(this.count+=1,C=new ct(t,e,this.root,this.ctx),!(x=t.children||t.views))return[3,8];k=0,o.label=5;case 5:return k0)?i("view",{staticClass:s._$s("22-"+a+n,"sc","detail-info-user__company__name"),attrs:{_i:"22-"+a+n}},[i("view",{staticClass:s._$s("23-"+a+n,"sc","detail-info-user__company__name__text1"),attrs:{_i:"23-"+a+n}},[t._v(" \u6240\u5c5e\u95e8\u5e97 ")]),i("span",{staticClass:s._$s("24-"+a+n,"sc","detail-info-user__company__name__line"),attrs:{_i:"24-"+a+n}},[t._v(" | ")]),i("view",{staticClass:s._$s("25-"+a+n,"sc","detail-info-user__company__name__text2"),attrs:{_i:"25-"+a+n}},[t._v(s._$s("25-"+a+n,"t0-0",t._s(e.for_shop)))])]):t._e(),s._$s("26-"+a+n,"i",e.sj_list&&e.sj_list.length>0)?i("view",{staticClass:s._$s("26-"+a+n,"sc","detail-info-user__company__name"),attrs:{_i:"26-"+a+n},on:{click:function(i){return i.stopPropagation(),t.showShopList(e)}}},[i("view",{staticClass:s._$s("27-"+a+n,"sc","detail-info-user__company__name__text1"),attrs:{_i:"27-"+a+n}},[t._v(" \u6240\u5c5e\u95e8\u5e97 ")]),i("span",{staticClass:s._$s("28-"+a+n,"sc","detail-info-user__company__name__line"),attrs:{_i:"28-"+a+n}},[t._v(" | ")]),i("view",{staticClass:s._$s("29-"+a+n,"sc","detail-info-user__company__name__text2"),attrs:{_i:"29-"+a+n}},[t._v(s._$s("29-"+a+n,"t0-0",t._s(e.selectSjItem.name))),s._$s("30-"+a+n,"i",e.sj_list&&e.sj_list.length>=1)?i("image",{staticClass:s._$s("30-"+a+n,"sc","detail-info-user__company__name__text2__img"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/4c5f282e-bad3-4c27-b653-9bd5100ae639.png",mode:"aspectFill",referrer:"no-referrer",_i:"30-"+a+n}}):t._e()]),s._$s("31-"+a+n,"i",e.showSj)?i("view",{staticClass:s._$s("31-"+a+n,"sc","sj-pop"),attrs:{_i:"31-"+a+n}},t._l(s._$s("32-"+a+"-"+n,"f",{forItems:e.sj_list}),(function(r,c,o,d){return i("view",{key:s._$s("32-"+a+"-"+n,"f",{forIndex:o,key:c}),staticClass:s._$s("32-"+a+n+"-"+d,"sc","sj-pop-item"),class:s._$s("32-"+a+n+"-"+d,"c",{active:r.id==e.selectSjItem.id}),attrs:{_i:"32-"+a+n+"-"+d},on:{click:function(i){return t.selectShop(e,r)}}},[t._v(s._$s("32-"+a+n+"-"+d,"t0-0",t._s(r.name)))])})),0):t._e()]):t._e()]),i("view",{staticClass:s._$s("33-"+a+n,"sc","selectSyr-item-bottom"),attrs:{_i:"33-"+a+n}},[i("view",{staticClass:s._$s("34-"+a+n,"sc","selectSyr-item-right-adress flex-row-center"),attrs:{_i:"34-"+a+n}},[i("image",{staticClass:s._$s("35-"+a+n,"sc","right-adress-icon"),attrs:{src:"/static/images/icons/address_icon3.png",_i:"35-"+a+n}}),i("text",{staticClass:s._$s("36-"+a+n,"sc","selectSyr-item-right-adress-text"),attrs:{_i:"36-"+a+n}},[t._v(s._$s("36-"+a+n,"t0-0",t._s(e.servers_region.join("\u3001"))))])])])])})),0)]}},{key:"empty",fn:function(t,e,s){return[i("noData",{attrs:{_i:"38-"+s}})]}}])}),i("uv-popup",{ref:"popup",attrs:{mode:"bottom",bgColor:"",closeable:!1,_i:39}},[i("view",{staticClass:t._$s(40,"sc","popup-container"),attrs:{_i:40}},[i("view",{staticClass:t._$s(41,"sc","header-bar"),attrs:{_i:41}},[i("view",{staticClass:t._$s(42,"sc","avatar-name-wrap"),attrs:{_i:42}},[i("image",{staticClass:t._$s(43,"sc","avatar"),attrs:{src:t._$s(43,"a-src",t.openTiem.head_photo),_i:43}}),i("view",{staticClass:t._$s(44,"sc","name-exp"),attrs:{_i:44}},[i("text",{staticClass:t._$s(45,"sc","name"),attrs:{_i:45}},[t._v(t._$s(45,"t0-0",t._s(t.openTiem.name)))]),i("view",{staticClass:t._$s(46,"sc","exp-tag flex-row-center"),attrs:{_i:46}},[i("image",{staticClass:t._$s(47,"sc","exp-tag-icon"),attrs:{_i:47}}),i("text",[t._v(t._$s(48,"t0-0",t._s(t.workExpText(t.openTiem.major))))])])])]),i("text",{staticClass:t._$s(49,"sc","cancel-btn"),attrs:{_i:49},on:{click:t.closePopup}})]),i("view",{staticClass:t._$s(50,"sc","service-info"),attrs:{_i:50}},[i("view",{staticClass:t._$s(51,"sc","info-item flex-row-center"),attrs:{_i:51}},[i("image",{staticClass:t._$s(52,"sc","right-time-icon"),attrs:{_i:52}}),i("text",{staticClass:t._$s(53,"sc","info-text"),attrs:{_i:53}},[i("text",[t._v(t._$s(54,"t0-0",t._s(t.openTiem.default_times)))])])]),t._$s(55,"i",t.openTiem.servers_region)?i("view",{staticClass:t._$s(55,"sc","info-item flex-row-center"),attrs:{_i:55}},[i("image",{staticClass:t._$s(56,"sc","right-adress-icon"),attrs:{_i:56}}),i("text",{staticClass:t._$s(57,"sc","info-text"),attrs:{_i:57}},[i("text",[t._v(t._$s(58,"t0-0",t._s(t.openTiem.servers_region.join("\u3001"))))])])]):t._e(),t._$s(59,"i",t.openTiem.for_shop&&t.openTiem.for_shop.length>0)?i("view",{staticClass:t._$s(59,"sc","popup-shop-info"),attrs:{_i:59}},[i("text",{staticClass:t._$s(60,"sc","popup-shop-label"),attrs:{_i:60}}),i("view",{staticClass:t._$s(61,"sc","popup-shop-tags"),attrs:{_i:61}},[i("view",{staticClass:t._$s(62,"sc","popup-shop-tag"),attrs:{_i:62}},[t._v(t._$s(62,"t0-0",t._s(t.openTiem.for_shop)))])])]):t._e()]),i("view",{staticClass:t._$s(63,"sc","intro-text"),attrs:{_i:63}},[i("image",{staticClass:t._$s(64,"sc","intro-text-icon"),attrs:{_i:64}}),i("text",[t._v(t._$s(65,"t0-0",t._s(t.openTiem.detail)))])]),i("view",{staticClass:t._$s(66,"sc","confirm-btn"),attrs:{_i:66},on:{click:t.handleConfirm}})])])],1)},r=[]},df30:function(t,e,i){"use strict";i.r(e);var s=i("8d86"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},df31:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,uniPopup:i("c3a6").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","qualification-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:t.navTitle,showBack:!0,_i:1}}),t._$s(2,"i",t.editable)?i("view",{staticClass:t._$s(2,"sc","change-tip"),attrs:{_i:2}},[i("text")]):t._e(),i("view",{staticClass:t._$s(4,"sc","content-area"),style:t._$s(4,"s",{paddingBottom:t.buttonAreaHeight+"px"}),attrs:{_i:4}},[i("view",{staticClass:t._$s(5,"sc","section"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","section-title"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","title-bar"),attrs:{_i:7}}),i("text",{staticClass:t._$s(8,"sc","title-text"),attrs:{_i:8}})]),i("view",{staticClass:t._$s(9,"sc","box-cont"),attrs:{_i:9}},[i("view",{staticClass:t._$s(10,"sc","form-item"),attrs:{_i:10}},[i("text",{staticClass:t._$s(11,"sc","label required"),attrs:{_i:11}}),i("view",{staticClass:t._$s(12,"sc","upload-tip"),attrs:{_i:12}}),i("view",{staticClass:t._$s(13,"sc","idcard-upload-vertical-container"),attrs:{_i:13}},[i("view",{staticClass:t._$s(14,"sc","idcard-upload-vertical-item"),attrs:{_i:14}},[i("view",{staticClass:t._$s(15,"sc","upload-box"),attrs:{_i:15},on:{click:function(e){t.editable&&t.chooseImage("health_card")}}},[i("view",{staticClass:t._$s(16,"sc","upload-camera health-card-upload"),attrs:{_i:16}},[t._$s(17,"i",t.displayData.health_card)?i("image",{staticClass:t._$s(17,"sc","preview-image"),attrs:{src:t._$s(17,"a-src",t.displayData.health_card),_i:17}}):i("image",{staticClass:t._$s(18,"sc","camera-icon"),attrs:{_i:18}})])]),i("text",{staticClass:t._$s(19,"sc","upload-label required"),attrs:{_i:19}})])])])])]),i("view",{staticClass:t._$s(20,"sc","section"),attrs:{_i:20}},[i("view",{staticClass:t._$s(21,"sc","form-item box-cont"),attrs:{_i:21}},[i("text",{staticClass:t._$s(22,"sc","label required"),attrs:{_i:22}}),i("view",{staticClass:t._$s(23,"sc","radio-group"),attrs:{_i:23}},[i("view",{staticClass:t._$s(24,"sc","radio-item"),attrs:{_i:24},on:{click:function(e){t.editable&&t.setHealthCardValidType("permanent")}}},[i("view",{staticClass:t._$s(25,"sc","radio"),class:t._$s(25,"c",{checked:1===t.displayData.health_card_expiry_type}),attrs:{_i:25}},[t._$s(26,"i",1===t.displayData.health_card_expiry_type)?i("image",{staticClass:t._$s(26,"sc","radio-icon-image"),attrs:{_i:26}}):t._e()]),i("text",{staticClass:t._$s(27,"sc","radio-label"),attrs:{_i:27}})]),i("view",{staticClass:t._$s(28,"sc","radio-item"),attrs:{_i:28},on:{click:function(e){t.editable&&t.setHealthCardValidType("date")}}},[i("view",{staticClass:t._$s(29,"sc","radio"),class:t._$s(29,"c",{checked:2===t.displayData.health_card_expiry_type}),attrs:{_i:29}},[t._$s(30,"i",2===t.displayData.health_card_expiry_type)?i("image",{staticClass:t._$s(30,"sc","radio-icon-image"),attrs:{_i:30}}):t._e()]),i("text",{staticClass:t._$s(31,"sc","radio-label"),attrs:{_i:31}})])])]),i("view",{staticClass:t._$s(32,"sc","box-cont"),attrs:{_i:32}},[i("view",{staticClass:t._$s(33,"sc","date-range-container"),attrs:{_i:33}},[i("view",{staticClass:t._$s(34,"sc","date-item"),attrs:{_i:34}},[i("text",{staticClass:t._$s(35,"sc","date-label"),attrs:{_i:35}}),i("view",{staticClass:t._$s(36,"sc","date-picker-box"),attrs:{_i:36},on:{click:function(e){t.editable&&t.openDatePicker("health_card_start_date")}}},[i("text",{class:t._$s(37,"c",t.displayData.health_card_start_date?"date-value":"placeholder"),attrs:{_i:37}},[t._v(t._$s(37,"t0-0",t._s(t.formatDateForDisplay(t.displayData.health_card_start_date)||"\u9009\u62e9\u65e5\u671f")))]),i("view",{staticClass:t._$s(38,"sc","date-divider"),attrs:{_i:38}}),i("image",{staticClass:t._$s(39,"sc","date-arrow"),attrs:{_i:39}})])]),i("view",{staticClass:t._$s(40,"sc","date-item"),attrs:{_i:40}},[i("text",{staticClass:t._$s(41,"sc","date-label"),attrs:{_i:41}}),i("view",{staticClass:t._$s(42,"sc","date-picker-box"),class:t._$s(42,"c",{disabled:1===t.displayData.health_card_expiry_type}),attrs:{_i:42},on:{click:function(e){t.editable&&1!==t.displayData.health_card_expiry_type&&t.openDatePicker("health_card_end_date")}}},[i("text",{class:t._$s(43,"c",t.displayData.health_card_end_date?"date-value":"placeholder"),attrs:{_i:43}},[t._v(t._$s(43,"t0-0",t._s(t.formatDateForDisplay(t.displayData.health_card_end_date)||"\u9009\u62e9\u65e5\u671f")))]),i("view",{staticClass:t._$s(44,"sc","date-divider"),attrs:{_i:44}}),i("image",{staticClass:t._$s(45,"sc","date-arrow"),attrs:{src:t._$s(45,"a-src",t.editable&&1!==t.displayData.health_card_expiry_type?"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ce52b49f-2261-49ca-96ed-e9ad47049649":"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/bb9a757f-a36c-46bb-a59f-2caddac5365b"),_i:45}})])])])])]),i("view",{staticClass:t._$s(46,"sc","section"),attrs:{_i:46}},[i("view",{staticClass:t._$s(47,"sc","form-item box-cont"),attrs:{_i:47}},[i("text",{staticClass:t._$s(48,"sc","label required"),attrs:{_i:48}}),i("view",{staticClass:t._$s(49,"sc","qualifications-container"),attrs:{_i:49}},[i("view",{staticClass:t._$s(50,"sc","qualifications-list"),attrs:{_i:50}},[t._l(t._$s(51,"f",{forItems:t.displayData.qualifications}),(function(e,s,a,r){return i("view",{key:t._$s(51,"f",{forIndex:a,key:s}),staticClass:t._$s("51-"+r,"sc","qualification-item"),attrs:{_i:"51-"+r}},[i("image",{staticClass:t._$s("52-"+r,"sc","qualification-image"),attrs:{src:t._$s("52-"+r,"a-src",e),_i:"52-"+r}}),t._$s("53-"+r,"i",t.editable)?i("view",{staticClass:t._$s("53-"+r,"sc","delete-btn"),attrs:{_i:"53-"+r},on:{click:function(e){return t.deleteQualification(s)}}}):t._e()])})),t._$s(54,"i",t.editable&&t.displayData.qualifications.length<9)?i("view",{staticClass:t._$s(54,"sc","qualification-item add-item"),attrs:{_i:54},on:{click:t.addQualification}},[i("image",{staticClass:t._$s(55,"sc","upload-icon"),attrs:{_i:55}})]):t._e()],2)])])]),i("view",{staticClass:t._$s(56,"sc","safe-bottom"),attrs:{_i:56}})]),i("view",{ref:"buttonArea",staticClass:t._$s(57,"sc","bottom-actions"),attrs:{_i:57}},[t._$s(58,"i",t.shouldShowRejectReason)?i("view",{staticClass:t._$s(58,"sc","reject-reason"),attrs:{_i:58}},[i("view",{staticClass:t._$s(59,"sc","reject-title"),attrs:{_i:59}}),i("view",{staticClass:t._$s(60,"sc","reject-detail"),attrs:{_i:60}},[t._v(t._$s(60,"t0-0",t._s(t.backText)))])]):t._e(),t._$s(61,"i",t.showAuditTip)?i("view",{staticClass:t._$s(61,"sc","audit-tip"),attrs:{_i:61}},[i("text",{staticClass:t._$s(62,"sc","audit-text"),attrs:{_i:62}})]):t._e(),t._$s(63,"i","change"===t.buttonType)?i("view",{staticClass:t._$s(63,"sc","action-btn change-info-btn"),attrs:{_i:63},on:{click:t.startChange}},[i("text",{staticClass:t._$s(64,"sc","btn-text"),attrs:{_i:64}})]):t._e(),t._$s(65,"i","edit"===t.buttonType)?i("view",{staticClass:t._$s(65,"sc","action-buttons-row"),attrs:{_i:65}},[i("view",{staticClass:t._$s(66,"sc","action-btn cancel-btn"),attrs:{_i:66},on:{click:t.cancelChange}},[i("text",{staticClass:t._$s(67,"sc","btn-text cancel-text"),attrs:{_i:67}})]),i("view",{staticClass:t._$s(68,"sc","action-btn submit-btn"),attrs:{_i:68},on:{click:t.submitChange}},[i("text",{staticClass:t._$s(69,"sc","btn-text"),attrs:{_i:69}})])]):t._e(),t._$s(70,"i","view"===t.buttonType)?i("view",{staticClass:t._$s(70,"sc","action-btn view-change-btn"),attrs:{_i:70},on:{click:t.togglePendingData}},[i("text",{staticClass:t._$s(71,"sc","btn-text"),attrs:{_i:71}},[t._v(t._$s(71,"t0-0",t._s(t.showPendingData?"\u8fd4\u56de":"\u67e5\u770b\u6211\u7684\u53d8\u66f4")))])]):t._e(),t._$s(72,"i","reject"===t.buttonType)?i("view",{staticClass:t._$s(72,"sc","action-btn resubmit-btn"),attrs:{_i:72},on:{click:t.startChange}},[i("text",{staticClass:t._$s(73,"sc","btn-text"),attrs:{_i:73}})]):t._e()]),i("uni-popup",{ref:"datePicker",attrs:{type:"bottom","background-color":"#fff",_i:74}},[i("view",{staticClass:t._$s(75,"sc","date-picker-popup"),attrs:{_i:75}},[i("view",{staticClass:t._$s(76,"sc","picker-header"),attrs:{_i:76}},[i("text",{staticClass:t._$s(77,"sc","picker-cancel"),attrs:{_i:77},on:{click:t.hideDatePicker}}),i("text",{staticClass:t._$s(78,"sc","picker-title"),attrs:{_i:78}}),i("text",{staticClass:t._$s(79,"sc","picker-confirm"),attrs:{_i:79},on:{click:t.confirmDate}})]),i("picker-view",{staticClass:t._$s(80,"sc","picker-view"),attrs:{value:t._$s(80,"a-value",t.dateValue),"indicator-style":t._$s(80,"a-indicator-style",t.indicatorStyle),_i:80},on:{change:t.bindDateChange}},[i("picker-view-column",t._l(t._$s(82,"f",{forItems:t.years}),(function(e,s,a,r){return i("view",{key:t._$s(82,"f",{forIndex:a,key:s}),staticClass:t._$s("82-"+r,"sc","picker-item"),attrs:{_i:"82-"+r}},[t._v(t._$s("82-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",t._l(t._$s(84,"f",{forItems:t.months}),(function(e,s,a,r){return i("view",{key:t._$s(84,"f",{forIndex:a,key:s}),staticClass:t._$s("84-"+r,"sc","picker-item"),attrs:{_i:"84-"+r}},[t._v(t._$s("84-"+r,"t0-0",t._s(e)))])})),0),i("picker-view-column",t._l(t._$s(86,"f",{forItems:t.days}),(function(e,s,a,r){return i("view",{key:t._$s(86,"f",{forIndex:a,key:s}),staticClass:t._$s("86-"+r,"sc","picker-item"),attrs:{_i:"86-"+r}},[t._v(t._$s("86-"+r,"t0-0",t._s(e)))])})),0)])])])],1)},r=[]},df4e:function(t,e,i){"use strict";i.r(e);var s=i("4e2c"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},df9c:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","service-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5de5\u65f6\u8d2d\u4e70\u8bb0\u5f55",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","flexed"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","tab-container"),attrs:{_i:3}},t._l(t._$s(4,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("view",{key:t._$s(4,"f",{forIndex:a,key:s}),class:t._$s("4-"+r,"c",["tab-item",{active:t.currentTab===s}]),attrs:{_i:"4-"+r},on:{click:function(i){return t.switchTab(s,e.id)}}},[t._v(t._$s("4-"+r,"t0-0",t._s(e.text)))])})),0)]),t._$s(5,"i",t.services&&0!=t.services.length)?i("view",{staticClass:t._$s(5,"sc","service-list"),attrs:{_i:5}},t._l(t._$s(6,"f",{forItems:t.services}),(function(e,s,a,r){return i("orderCard",{key:t._$s(6,"f",{forIndex:a,key:"6-"+r}),attrs:{dataItem:e,_i:"6-"+r},on:{goDetail:t.goDetail,goPay:t.goPay,goRefund:t.goRefund,cancel:t.cancel,reOrder:t.reOrder}})})),1):i("noData",{attrs:{_i:7}}),t._$s(8,"i",t.hasMore)?i("view",{staticClass:t._$s(8,"sc","load-more"),attrs:{_i:8}},[i("text")]):t._e()],1)},r=[]},dfd9:function(t,e,i){"use strict";i.r(e);var s=i("3f32"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},dfdd:function(t,e,i){"use strict";i.r(e);var s=i("7a1a"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},e050:function(t,e,i){"use strict";i.r(e);var s=i("0c3f"),a=i("7a08");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},e05b:function(t,e,i){"use strict";i.r(e);var s=i("7ea2"),a=i("5115");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"29167ddb",null,!1,s["a"],void 0);e["default"]=n.exports},e098:function(t,e,i){"use strict";i.r(e);var s=i("b944"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},e09e:function(t,e,i){"use strict";i.r(e);var s=i("ba67"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},e118:function(t,e,i){"use strict";i.r(e);var s=i("007b"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},e1ae:function(t,e,i){"use strict";i.r(e);var s=i("54b8"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},e21b:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("ec2d")),o=s(i("f8df")),d={components:{searchBox:n.default,CommonList:o.default},data:function(){return{userInfo:{},queryData:{title:""},statusBarHeight:0}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function t(){var i;return a.default.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return 3,t.next=3,c.default.post("/user/getuser",{type:3});case 3:i=t.sent,e.userInfo=i.data,e.queryData.sjid=e.userInfo.id,e.statusBarHeight=e.getRpxStatusBarHeight(),e.$nextTick((function(){e.search()}));case 8:case"end":return t.stop()}}),t)})))()},methods:{search:function(){this.$refs.groupRef.manualRefresh(this.queryData)},goSlectSyr:function(t){uni.navigateTo({url:"/pages/shop/staff/selectSyr?server_id=".concat(t.id)})}}};e.default=d},e243:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("524e")),r={data:function(){return{startTime:null,endTime:null,timeValue:null,timeIndex:0}},components:{timeDatePicker:a.default},props:{value:{type:Array,default:function(){return[]}},disabled:{type:Boolean,default:!1},type:{type:String,default:"datetimerange"}},watch:{value:{immediate:!0,handler:function(t){Array.isArray(t)&&2===t.length&&(this.startTime=t[0],this.endTime=t[1])}}},methods:{openPicker:function(t,e){this.disabled||(this.timeIndex=e,this.timeValue=t,this.$refs.timePopup.openTimePopup())},confirmTime:function(t){0===this.timeIndex?this.startTime=t:this.endTime=t;var e=[this.startTime||"",this.endTime||""];this.$emit("input",e),this.$emit("change",e)}}};e.default=r},e26b:function(t,e,i){"use strict";i.r(e);var s=i("c08c"),a=i("436e");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"7ddc3f19",null,!1,s["a"],void 0);e["default"]=n.exports},e2c2:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n={name:"AddAlipayAccount",data:function(){return{queryData:{modelName:"add",user_type:getApp().globalData.artisanType,card_no:"",name:"",phone:"",bank:"",bank_name:"",is_default:0},radioList:[{name:"\u652f\u4ed8\u5b9d\u8d26\u53f7",value:1,btnText:"+ \u6dfb\u52a0\u652f\u4ed8\u5b9d\u8d26\u53f7",popTitle:"\u6dfb\u52a0\u652f\u4ed8\u5b9d\u8d26\u53f7"},{name:"\u94f6\u884c\u5361\u53f7",value:3,btnText:"+ \u6dfb\u52a0\u94f6\u884c\u5361\u53f7",popTitle:"\u6dfb\u52a0\u94f6\u884c\u5361\u8d26\u53f7"}],urlList:[{name:"add",url:"/user/UserCard/add"},{name:"edit",url:"/user/UserCard/edit"}]}},computed:{isFormFilled:function(){return""!==this.queryData.card_no.trim()&&""!==this.queryData.name.trim()&&""!==this.queryData.phone.trim()},customName:function(){var t=this,e=this.radioList.find((function(e){return e.value==t.queryData.type}));return e||{}}},onLoad:function(t){var e=this;return(0,r.default)(a.default.mark((function i(){return a.default.wrap((function(i){while(1)switch(i.prev=i.next){case 0:t.type&&(e.queryData.type=t.type,e.modelName="add"),t.data&&(e.queryData=JSON.parse(decodeURIComponent(t.data)),e.modelName="edit");case 2:case"end":return i.stop()}}),i)})))()},methods:{setDefault:function(){this.queryData.is_default=1==this.queryData.is_default?0:1},goBack:function(){uni.navigateBack()},confirmAdd:function(){var e=this;if(this.queryData.card_no.trim())if(3!=this.queryData.type||this.queryData.bank.trim())if(this.queryData.name.trim())if(this.queryData.phone.trim())if(uni.$uv.test.mobile(this.queryData.phone))if(3!=this.queryData.type||this.queryData.bank_name.trim()){var i={};i.card_no=this.queryData.card_no.trim(),i.name=this.queryData.name.trim(),i.phone=this.queryData.phone.trim(),3==this.queryData.type&&(i.bank=this.queryData.bank.trim(),i.bank_name=this.queryData.bank_name.trim()),i.is_default=this.queryData.is_default,c.default.post(this.urlList.find((function(t){return t.name==e.modelName})).url,this.queryData).then((function(e){if(t("log",e,"======"," at pages/wallet/alipay.vue:242"),200==e.code){var i=getCurrentPages(),s=i[i.length-2];s&&(s.$vm&&"function"===typeof s.$vm.search&&s.$vm.search(),s.$vm&&"function"===typeof s.$vm.getAccount&&s.$vm.getAccount(),uni.navigateBack())}}))}else uni.showToast({title:"\u8bf7\u586b\u5199\u5f00\u6237\u884c",icon:"none"});else uni.showToast({title:"\u8bf7\u586b\u5199\u6b63\u786e\u624b\u673a\u53f7",icon:"none"});else uni.showToast({title:"\u8bf7\u586b\u5199\u624b\u673a\u53f7",icon:"none"});else uni.showToast({title:"\u8bf7\u586b\u5199\u59d3\u540d",icon:"none"});else uni.showToast({title:"\u8bf7\u586b\u5199\u6240\u5c5e\u94f6\u884c",icon:"none"});else uni.showToast({title:"\u8bf7\u586b\u5199".concat(this.customName.name),icon:"none"})}}};e.default=n}).call(this,i("f3b9")["default"])},e38e:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$s(0,"i",t.show)?i("view",{staticClass:t._$s(0,"sc","popup-picker"),attrs:{_i:0}},[t._$s(1,"i",t.show)?i("view",{staticClass:t._$s(1,"sc","popup-mask"),class:t._$s(1,"c",{show:t.show}),attrs:{_i:1},on:{click:t.handleClose}}):t._e(),i("view",{staticClass:t._$s(2,"sc","popup-content"),class:t._$s(2,"c",{show:t.show}),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","popup-header"),attrs:{_i:3}},[i("text",{staticClass:t._$s(4,"sc","cancel"),attrs:{_i:4},on:{click:t.handleClose}}),i("text",{staticClass:t._$s(5,"sc","title"),attrs:{_i:5}},[t._v(t._$s(5,"t0-0",t._s(t.title)))]),i("text",{staticClass:t._$s(6,"sc","confirm"),attrs:{_i:6},on:{click:t.handleConfirm}})]),i("picker-view",{staticClass:t._$s(7,"sc","picker-view"),attrs:{value:t._$s(7,"a-value",t.currentValue),_i:7},on:{change:t.handleChange}},t._l(t._$s(8,"f",{forItems:t.columns}),(function(e,s,a,r){return i("picker-view-column",{key:t._$s(8,"f",{forIndex:a,key:s})},t._l(t._$s("9-"+r,"f",{forItems:e}),(function(e,s,a,c){return i("view",{key:t._$s("9-"+r,"f",{forIndex:a,key:e.id}),staticClass:t._$s("9-"+r+"-"+c,"sc","picker-item"),attrs:{_i:"9-"+r+"-"+c}},[t._v(t._$s("9-"+r+"-"+c,"t0-0",t._s(e[t.labelKey]||e.title)))])})),0)})),0)])]):t._e()},a=[]},e398:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("524e")),r={data:function(){return{startTime:null,endTime:null,timeValue:null,timeIndex:0}},components:{timeDatePicker:a.default},props:{value:{type:Array,default:function(){return[]}},disabled:{type:Boolean,default:!1},type:{type:String,default:"daterange"},idCardtype:{type:Number,default:2},endDistanceYear:{type:Number,default:0}},watch:{value:{immediate:!0,handler:function(t){Array.isArray(t)&&2===t.length&&(this.startTime=t[0],this.endTime=t[1])}},idCardtype:{handler:function(t){if(1==t){this.endTime="";var e=[this.startTime||"",""];this.$emit("input",e),this.$emit("change",e)}}}},methods:{openPicker:function(t,e){this.disabled||this.idCardtype&&(1==e&&1==this.idCardtype||(this.timeIndex=e,this.timeValue=t,this.$refs.timePopup.openTimePopup()))},confirmTime:function(t){0===this.timeIndex?this.startTime=t:this.endTime=t;var e=[this.startTime||"",this.endTime||""];this.$emit("input",e),this.$emit("change",e)},clear:function(t){0===t?this.startTime="":this.endTime="e";var e=[this.startTime||"",this.endTime||""];this.$emit("input",e),this.$emit("change",e)}}};e.default=r},e45b:function(t,e,i){"use strict";i.r(e);var s=i("b80a"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},e48a:function(t,e,i){"use strict";i.r(e);var s=i("8d33"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},e4b7:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"search-box",props:{value:{type:String,default:""},placeholder:{type:String,default:"\u8bf7\u8f93\u5165\u641c\u7d22\u5185\u5bb9"},showBack:{type:Boolean,default:!0},width:{type:String},height:{type:String},border:{type:String}},data:function(){return{statusBarHeight:0}},computed:{searchStyle:function(){return{}}},created:function(){var t=uni.getSystemInfoSync();this.statusBarHeight=t.statusBarHeight},methods:{goBack:function(){uni.navigateBack()},onSearch:function(t){this.$emit("search")},onInput:function(t){this.$emit("input",t.detail.value||t.target.value)},onConfirm:function(t){this.$emit("confirm",t.detail.value||t.target.value)}}};e.default=s},e4c3:function(t,e,i){"use strict";i.r(e);var s=i("3b4f"),a=i("500c");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"6026ffbc",null,!1,s["a"],void 0);e["default"]=n.exports},e4d6:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("7ca3")),r=s(i("34cf"));function c(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var n={name:"ServiceListItem",props:{list:{type:Array,default:function(){return[]}},btnText:{type:String,default:"\u53bb\u4e0b\u5355"}},methods:{hasArtisanOrShop:function(t){return this.hasArtisanName(t)||this.hasShopName(t)},hasArtisanAvatar:function(t){return t.user_syr&&t.user_syr.head_photo&&""!==t.user_syr.head_photo.trim()},getArtisanAvatar:function(t){return this.hasArtisanAvatar(t)?t.user_syr.head_photo:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40"},hasArtisanName:function(t){return t.user_syr&&t.user_syr.name&&""!==t.user_syr.name.trim()},getArtisanName:function(t){return this.hasArtisanName(t)?t.user_syr.name:this.hasShopName(t)?t.user_sj.name:""},hasShopName:function(t){return t.user_sj&&t.user_sj.name&&""!==t.user_sj.name.trim()},getShopName:function(t){return this.hasShopName(t)?t.user_sj.name:""},getServiceImage:function(t){return t.photo&&t.photo.length>0&&t.photo[0]&&""!==t.photo[0].trim()?t.photo[0]:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/default-service.png"},formatDistance:function(t){return t||0===t?t<1?(1e3*t).toFixed(0)+"m":t.toFixed(2)+"km":"\u8ddd\u79bb\u672a\u77e5"},formatTimeToRelative:function(t){var e=t.split(" "),i=(0,r.default)(e,2),s=i[0],a=i[1],c=s.split("-").map(Number),n=(0,r.default)(c,3),o=n[0],d=n[1],l=n[2],u=a.split(":").map(Number),f=(0,r.default)(u,2),_=f[0],p=f[1],v=new Date(o,d-1,l,_,p),h=new Date;h.setHours(0,0,0,0);var m=new Date(h);m.setDate(m.getDate()+1);var g=new Date(v);g.setHours(0,0,0,0);var y="".concat(_.toString().padStart(2,"0"),":").concat(p.toString().padStart(2,"0"));return g.getTime()===h.getTime()?"\u4eca".concat(y):g.getTime()===m.getTime()?"\u660e".concat(y):t},goServerDetail:function(t){t.team_buy&&0!=Object.keys(t.team_buy).length?uni.navigateTo({url:"/pages/groupBuy/detail?id=".concat(t.id)}):uni.navigateTo({url:"/pages/service/detail?id=".concat(t.id)})}},computed:{listWithShortTitle:function(){return this.list.map((function(t){return function(t){for(var e=1;e0?t.singleMode:"widthFix":t.multipleMode),_i:"3-"+r+"-"+n}}),t._$s("4-"+r+"-"+n,"i",t.showMore&&t.urls.length>t.rowCount*t.showUrls.length&&s===t.showUrls.length-1&&a===t.showUrls[t.showUrls.length-1].length-1)?i("view",{staticClass:t._$s("4-"+r+"-"+n,"sc","uv-album__row__wrapper__text"),attrs:{_i:"4-"+r+"-"+n}},[i("uv-text",{attrs:{text:"+"+(t.urls.length-t.maxCount),color:"#fff",size:.3*t.$uv.getPx(t.multipleSize),align:"center",customStyle:"justify-content: center",_i:"5-"+r+"-"+n}})],1):t._e()])})),0)})),0)},r=[]},e6d5:function(t,e,i){"use strict";i.r(e);var s=i("7e6f"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},e6da:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","list-filter"),attrs:{_i:0}},[i("scroll-view",{attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","list-filter-tabs"),attrs:{_i:2}},t._l(t._$s(3,"f",{forItems:t.firstTabs}),(function(e,s,a,r){return i("view",{key:t._$s(3,"f",{forIndex:a,key:s}),staticClass:t._$s("3-"+r,"sc","list-filter-tabs-item"),class:t._$s("3-"+r,"c",{active:t.activeFirstId===e.id}),attrs:{_i:"3-"+r},on:{click:function(i){return t.handleFirstTabClick(e)}}},[t._v(t._$s("3-"+r,"t0-0",t._s(e.title)))])})),0)]),i("view",{staticClass:t._$s(4,"sc","list-filter-tabs2"),attrs:{_i:4}},t._l(t._$s(5,"f",{forItems:t.secondTabs}),(function(e,s,a,r){return i("view",{key:t._$s(5,"f",{forIndex:a,key:s}),staticClass:t._$s("5-"+r,"sc","list-filter-tabs2-item"),class:t._$s("5-"+r,"c",{active:t.activeSecondId===e.id}),attrs:{_i:"5-"+r},on:{click:function(i){return t.handleSecondTabClick(e.id,e.title)}}},[t._v(t._$s("5-"+r,"t0-0",t._s(e.title)))])})),0),i("CommonList",{ref:"groupRef",attrs:{isLogin:t.isLogin,apiUrl:t.apiUrl,listScrollHeight:"calc(100vh - 426rpx)",_i:6},on:{"load-success":t.loadSuccess},scopedSlots:t._u([{key:"listData",fn:function(e,s,a){e.list;return t._l(s._$s("8-"+a,"f",{forItems:t.popList}),(function(e,r,c,n){return i("view",{key:s._$s("8-"+a,"f",{forIndex:c,key:"8-"+a+"-"+n}),attrs:{_i:"8-"+a+n}},[s._$s("9-"+a+n,"i",3!=t.activeFirstId)?i("OrderCard",{attrs:{haveButton:t.haveButton,showState:!1,dataItem:e,typeId:t.activeFirstId,_i:"9-"+a+n},on:{cancel:function(i){return t.cancelOrder(i,e)},start:function(i){return t.startOrder(i,e)},done:function(i){return t.endOrder(i,e)},goOrderDetail:t.goOrderDetail}}):i("WorkHourOrderCard",{attrs:{showState:!1,dataItem:e,typeId:t.activeFirstId,_i:"10-"+n},on:{cancel:function(i){return t.cancelOrder(i,e)},accept:function(i){return t.confirmOrder(i,e)},start:function(i){return t.startOrder(i,e)},done:function(i){return t.endOrder(i,e)},goOrderDetail:t.goOrderDetail}})],1)}))}},{key:"empty",fn:function(e,s,a){return[i("view",{staticClass:s._$s("12-"+a,"sc","noDataBox"),attrs:{_i:"12-"+a}},[s._$s("13-"+a,"i",t.isLogin)?i("noData",{attrs:{tipText:"\u6682\u65e0\u670d\u52a1\u8ba2\u5355\u54df\uff5e",_i:"13-"+a}}):i("noLogin",{attrs:{_i:14}})],1)]}}])}),i("serviceCodeInput",{attrs:{show:t.showInput,_i:15},on:{close:function(e){t.showInput=!1},confirm:t.onConfirm}})],1)},r=[]},e6db:function(t,e,i){var s=i("3b2d")["default"];t.exports=function(t,e){if("object"!=s(t)||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var a=i.call(t,e||"default");if("object"!=s(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)},t.exports.__esModule=!0,t.exports["default"]=t.exports},e6eb:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={name:"tips-popup",props:{show:{type:Boolean,default:!1},sureText:{type:String,default:"\u77e5\u9053\u4e86"},closeText:{type:String,default:"\u53d6\u6d88"},title:{type:String,default:"\u6e29\u99a8\u63d0\u793a"}},methods:{handleClose:function(){this.$emit("closePopup",!1)},goAdd:function(){this.$emit("closePopup",!1),this.$emit("okBtn",!1)}}};e.default=s},e705:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u62db\u52df",showBack:!0,backgroundColor:"#fff",headleSrc:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/3b04f0c1-a55e-4658-9de5-22175cce9bbc.png","show-headle":1==t.info.state_other,_i:1},on:{onHeadleClick:t.goInvite}}),i("view",{staticClass:t._$s(2,"sc","content"),attrs:{_i:2}},[i("image",{staticClass:t._$s(3,"sc","bjImg"),attrs:{src:t._$s(3,"a-src",t.bjSrc),_i:3}}),i("image",{staticClass:t._$s(4,"sc","imgCard"),attrs:{src:t._$s(4,"a-src",t.info.promotion_img),_i:4}}),t._$s(5,"i",1==t.info.state_other)?i("image",{staticClass:t._$s(5,"sc","btnImg"),attrs:{_i:5},on:{click:t.goRecruit2}}):t._e()])],1)},r=[]},e711:function(t,e,i){"use strict";i.r(e);var s=i("319f"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},e712:function(t,e,i){"use strict";i.r(e);var s=i("0c13"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},e739:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,agreeRadio:i("a6d8").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","login-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u767b\u5f55","show-back":!1,"title-color":"#000","background-color":"transparent",_i:1}}),i("view",{staticClass:t._$s(2,"sc","content"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","logo"),attrs:{_i:3}},[i("image",{staticClass:t._$s(4,"sc","logo-icon"),attrs:{_i:4}})]),i("view",{staticClass:t._$s(5,"sc","welcome"),attrs:{_i:5}}),i("view",{staticClass:t._$s(6,"sc","inp-phpne"),attrs:{_i:6}},[i("input",{staticClass:t._$s(7,"sc","inp"),attrs:{value:t._$s(7,"a-value",t.phone),_i:7},on:{input:t.inputPhone}})]),t._$s(8,"i",1==t.wayId)?i("view",{staticClass:t._$s(8,"sc","inp-code"),attrs:{_i:8}},[i("input",{staticClass:t._$s(9,"sc","inp"),attrs:{value:t._$s(9,"a-value",t.code),_i:9},on:{input:t.inputCode}}),i("view",{staticClass:t._$s(10,"sc","code-btn"),class:t._$s(10,"c",{disabled:t.countdown>0}),attrs:{_i:10},on:{click:function(e){return e.stopPropagation(),t.getCode(e)}}},[t._v(t._$s(10,"t0-0",t._s(t.countdown>0?t.countdown+"s":"\u83b7\u53d6\u9a8c\u8bc1\u7801")))])]):t._$s(11,"e",2==t.wayId)?i("view",{staticClass:t._$s(11,"sc","inp-psd"),attrs:{_i:11}},[i("input",{staticClass:t._$s(12,"sc","inp"),attrs:{value:t._$s(12,"a-value",t.password),password:t._$s(12,"a-password",!t.showPassword),_i:12},on:{input:t.inputPassword}}),t._$s(13,"i",!t.showPassword)?i("image",{staticClass:t._$s(13,"sc","look-icon"),attrs:{_i:13},on:{click:function(e){e.stopPropagation(),t.showPassword=!0}}}):i("image",{staticClass:t._$s(14,"sc","look-icon"),attrs:{_i:14},on:{click:function(e){e.stopPropagation(),t.showPassword=!1}}})]):t._e(),i("view",{staticClass:t._$s(15,"sc","waybox"),attrs:{_i:15}},[i("view",{staticClass:t._$s(16,"sc","way"),attrs:{_i:16},on:{click:t.changeWay}},[t._v(t._$s(16,"t0-0",t._s(1==t.wayId?"\u8d26\u53f7\u5bc6\u7801\u767b\u5f55":"\u9a8c\u8bc1\u7801\u767b\u5f55")))])]),i("view",{staticClass:t._$s(17,"sc","login"),attrs:{_i:17},on:{click:t.tapLogin}}),i("view",{staticClass:t._$s(18,"sc","other"),attrs:{_i:18}},[i("view",{attrs:{_i:19},on:{click:t.goRegister}}),i("view",{staticClass:t._$s(20,"sc","xian"),attrs:{_i:20}}),i("view",{attrs:{_i:21},on:{click:t.goPassword}})]),i("view",{staticClass:t._$s(22,"sc","agree"),attrs:{_i:22}},[i("agree-radio",{staticClass:t._$s(23,"sc","agree-btn"),attrs:{isAgree:t.isAgree,_i:23},on:{"change-agree":t.changeAgree}}),i("text",{staticClass:t._$s(24,"sc","agree-text"),attrs:{_i:24}}),i("text",{staticClass:t._$s(25,"sc","agreement"),attrs:{_i:25},on:{click:function(e){return t.goAgreement(3)}}}),i("text",{staticClass:t._$s(26,"sc","agree-text"),attrs:{_i:26}}),i("text",{staticClass:t._$s(27,"sc","agreement"),attrs:{_i:27},on:{click:function(e){return t.goAgreement(4)}}})],1)])],1)},r=[]},e77d:function(t,e,i){"use strict";i.r(e);var s=i("096e"),a=i("1a26");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"5c69a93a",null,!1,s["a"],void 0);e["default"]=n.exports},e7b1:function(t,e,i){"use strict";i.r(e);var s=i("1b8d"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},e87b:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("7ca3"));function r(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var c={data:function(){return{}},props:{info:{type:Object}},computed:{getTip:function(){var t=this,e=[{id:5,text:"\u672a\u5f00\u59cb"},{id:6,text:"\u8fdb\u884c\u4e2d"},{id:7,text:"\u5df2\u7ed3\u675f"},{id:3,text:"\u5df2\u5931\u6548"},{id:1,text:"\u5ba1\u6838\u4e2d"},{id:4,text:"\u5df2\u9a73\u56de"}].find((function(e){return e.id==t.info.state}))||{};return e},useTime:function(){var t=this.info.start_time,e=this.info.end_time;return function(t,e){var i=new Date(t.replace(/-/g,"/")),s=new Date(e.replace(/-/g,"/"));if(isNaN(i.getTime()))throw new Error("\u65e0\u6548\u7684\u5f00\u59cb\u65f6\u95f4\u683c\u5f0f\uff0c\u8bf7\u4f7f\u7528\u7c7b\u4f3c'2025-08-04 14:00:00'\u7684\u683c\u5f0f");var a=function(t){var e=t.getFullYear(),i=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),a=String(t.getHours()).padStart(2,"0"),r=String(t.getMinutes()).padStart(2,"0");return"".concat(e,".").concat(i,".").concat(s," ").concat(a,":").concat(r)};return"".concat(a(i)," \u81f3 ").concat(a(s))}(t,e)}},methods:{emitCancel:function(){1!=this.info.expire_state&&this.$emit("cancel",this.info)},emitEdit:function(){this.$emit("edit",this.info)},emitCopy:function(){var t=function(t){for(var e=1;e1&&void 0!==d[1]?d[1]:1,e.prev=1,e.next=4,c.default.post("/api/recognize/idCard",{img_url:i,type:s});case 4:if(r=e.sent,200===r.code){e.next=7;break}throw new Error(r.msg||"\u8eab\u4efd\u8bc1\u8bc6\u522b\u5931\u8d25");case 7:if(n=o(r.data,s),n){e.next=10;break}throw new Error("\u672a\u8bc6\u522b\u5230\u6709\u6548\u7684\u8eab\u4efd\u8bc1".concat(1===s?"\u6b63\u9762":"\u53cd\u9762","\u4fe1\u606f\uff0c\u8bf7\u786e\u4fdd\u4e0a\u4f20\u7684\u662f\u6e05\u6670\u7684\u8eab\u4efd\u8bc1\u7167\u7247"));case 10:return e.abrupt("return",r.data);case 13:throw e.prev=13,e.t0=e["catch"](1),t("error","\u8eab\u4efd\u8bc1\u8bc6\u522b\u5931\u8d25:",e.t0," at utils/orc.js:28"),new Error("\u672a\u8bc6\u522b\u5230\u6709\u6548\u7684\u8eab\u4efd\u8bc1".concat(1===s?"\u6b63\u9762":"\u53cd\u9762","\u4fe1\u606f\uff0c\u8bf7\u786e\u4fdd\u4e0a\u4f20\u7684\u662f\u6e05\u6670\u7684\u8eab\u4efd\u8bc1\u7167\u7247"));case 17:case"end":return e.stop()}}),e,null,[[1,13]])})));return function(t){return e.apply(this,arguments)}}();e.recognizeIdCard=n;var o=function(t,e){return 1===e?t.name&&t.name.trim()||t.id_number&&t.id_number.trim():t.start_date&&t.start_date.trim()||t.end_date&&t.end_date.trim()},d=function(){var e=(0,r.default)(a.default.mark((function e(i){var s,r;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,t("log","\u53d1\u9001\u8425\u4e1a\u6267\u7167\u8bc6\u522b\u8bf7\u6c42\uff0c\u56fe\u7247URL:",i," at utils/orc.js:56"),e.next=4,c.default.post("/api/recognize/uscc",{img_url:i});case 4:if(s=e.sent,t("log","\u8425\u4e1a\u6267\u7167\u8bc6\u522b\u63a5\u53e3\u5b8c\u6574\u54cd\u5e94:",JSON.stringify(s,null,2)," at utils/orc.js:62"),200===s.code){e.next=8;break}throw new Error(s.msg||"\u8425\u4e1a\u6267\u7167\u8bc6\u522b\u5931\u8d25");case 8:if(t("log","\u63a5\u53e3\u8fd4\u56de\u7684 uscc_num \u5b57\u6bb5:",s.data.uscc_num," at utils/orc.js:68"),t("log","\u63a5\u53e3\u8fd4\u56de\u7684 uscc_name \u5b57\u6bb5:",s.data.uscc_name," at utils/orc.js:69"),t("log","\u63a5\u53e3\u8fd4\u56de\u7684 uscc_type \u5b57\u6bb5:",s.data.uscc_type," at utils/orc.js:70"),r=l(s.data),r){e.next=14;break}throw new Error("\u672a\u8bc6\u522b\u5230\u6709\u6548\u7684\u8425\u4e1a\u6267\u7167\u4fe1\u606f\uff0c\u8bf7\u786e\u4fdd\u4e0a\u4f20\u7684\u662f\u6e05\u6670\u7684\u8425\u4e1a\u6267\u7167\u7167\u7247");case 14:return e.abrupt("return",{uscc_num:s.data.uscc_num||"",uscc_name:s.data.uscc_name||"",legal_name:s.data.legal_name||"",address:s.data.address||"",op_scope:s.data.op_scope||"",establishing_date:s.data.establishing_date||"",uscc_type:s.data.uscc_type||""});case 17:throw e.prev=17,e.t0=e["catch"](0),t("error","\u8425\u4e1a\u6267\u7167\u8bc6\u522b\u5931\u8d25:",e.t0," at utils/orc.js:90"),new Error("\u672a\u8bc6\u522b\u5230\u6709\u6548\u7684\u8425\u4e1a\u6267\u7167\u4fe1\u606f\uff0c\u8bf7\u786e\u4fdd\u4e0a\u4f20\u7684\u662f\u6e05\u6670\u7684\u8425\u4e1a\u6267\u7167\u7167\u7247");case 21:case"end":return e.stop()}}),e,null,[[0,17]])})));return function(t){return e.apply(this,arguments)}}();e.recognizeBusinessLicense=d;var l=function(t){for(var e=!1,i=0,s=["uscc_num","uscc_name"];i2&&void 0!==u[2]?u[2]:["album","camera"],!n){e.next=3;break}return e.abrupt("return");case 3:return e.prev=3,n=!0,e.next=7,uni.chooseImage({count:1,sizeType:["original","compressed"],sourceType:r});case 7:if(c=e.sent,t("log","res======",c," at utils/uploadImage.js:15"),c&&c.tempFiles&&0!==c.tempFiles.length){e.next=12;break}return t("log","\u7528\u6237\u53d6\u6d88\u4e86\u56fe\u7247\u9009\u62e9"," at utils/uploadImage.js:19"),e.abrupt("return",null);case 12:return o=c.tempFiles[0],e.next=15,d(o,i,s);case 15:return l=e.sent,e.abrupt("return",l);case 19:if(e.prev=19,e.t0=e["catch"](3),t("error","\u4e0a\u4f20\u51fa\u9519:",e.t0," at utils/uploadImage.js:41"),!e.t0.errMsg||!e.t0.errMsg.includes("cancel")){e.next=25;break}return t("log","\u7528\u6237\u53d6\u6d88\u4e86\u64cd\u4f5c"," at utils/uploadImage.js:45"),e.abrupt("return",null);case 25:throw e.t0;case 26:return e.prev=26,n=!1,e.finish(26);case 29:case"end":return e.stop()}}),e,null,[[3,19,26,29]])})));return function(t,i){return e.apply(this,arguments)}}(),d=function(){var e=(0,r.default)(a.default.mark((function e(i,s,r){var c,n,o,d,f,_;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t("log","file=======",i," at utils/uploadImage.js:103"),t("log","userId=======",s," at utils/uploadImage.js:104"),!(i.size>5242880)){e.next=5;break}return uni.showToast({title:"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc75MB",icon:"none"}),e.abrupt("return",Promise.reject(new Error("\u6587\u4ef6\u5927\u5c0f\u8d85\u51fa\u9650\u5236")));case 5:return c=(new Date).getTime(),t("log","file",i," at utils/uploadImage.js:114"),n=i.path.split("."),o=1==r?"yh":2==r?"syr":3==r?"sj":"",d="".concat(s,"_").concat(o,"_").concat(c,".").concat(n[n.length-1]),t("log","name",d," at utils/uploadImage.js:119"),e.prev=11,e.next=14,l(r);case 14:return f=e.sent,e.next=17,u(i,f,d);case 17:return e.sent,_="".concat(f.host,"/").concat(f.dir).concat(d),e.abrupt("return",_);case 22:throw e.prev=22,e.t0=e["catch"](11),t("error","\u4e0a\u4f20\u5931\u8d25:",e.t0," at utils/uploadImage.js:131"),e.t0;case 26:case"end":return e.stop()}}),e,null,[[11,22]])})));return function(t,i,s){return e.apply(this,arguments)}}(),l=function(){var e=(0,r.default)(a.default.mark((function e(i){var s;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,c.default.post("/user/getalioss",{type:i,kind:1});case 3:return s=e.sent,e.abrupt("return",s);case 7:throw e.prev=7,e.t0=e["catch"](0),t("error","\u83b7\u53d6OSS\u914d\u7f6e\u5931\u8d25:",e.t0," at utils/uploadImage.js:142"),e.t0;case 11:case"end":return e.stop()}}),e,null,[[0,7]])})));return function(t){return e.apply(this,arguments)}}(),u=function(e,i,s){return t("log",i," at utils/uploadImage.js:149"),new Promise((function(a,r){var c={};c.name=s,c.policy=i.policy,c.OSSAccessKeyId=i.ossAccessKeyId,c.success_action_status="200",c.signature=i.signature,c.key=i.dir+s,c.file=e;var n=e.path.split(".").pop().toLowerCase(),o={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif"};o[n]&&(c["Content-Type"]=o[n],c["x-oss-meta-content-type"]=o[n]),t("log","formData",c," at utils/uploadImage.js:194"),t("log",e.path," at utils/uploadImage.js:196"),uni.uploadFile({url:i.host,filePath:e.path,name:"file",formData:{key:i.dir+s,policy:i.policy,OSSAccessKeyId:i.ossAccessKeyId,success_action_status:200,signature:i.signature},success:function(t){a("".concat(i.host,"/").concat(i.dir).concat(s))},complete:function(e){t("log","err",e," at utils/uploadImage.js:222")}})}))},f={handleUpload:o};e.default=f}).call(this,i("f3b9")["default"])},eae7b:function(t,e,i){"use strict";i.r(e);var s=i("40e9"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},eb34:function(t,e,i){"use strict";function s(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,i="".concat(t);while(i.lengthi.person_num)uni.showToast({title:"\u5f00\u56e2\u4eba\u6570\u4e0d\u80fd\u5c11\u4e8e2\u4eba",icon:"none"});else if(100&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1?arguments[1]:void 0,s=q.call(i);if("[object Array]"===s)return e=i.slice(0),e;if("[object Object]"===s){for(var a in i)e[a]=t(e[a],i[a]);return e}if("[object Date]"===s)return new Date(i.getTime());if("[object RegExp]"===s){var r=String(i),c=r.lastIndexOf("/");return new RegExp(r.slice(1,c),r.slice(c+1))}return i}("[object Array]"===q.call(t)?[]:{},t)},z=(a={},(0,r.default)(a,String,""),(0,r.default)(a,Number,0),(0,r.default)(a,Boolean,!1),(0,r.default)(a,Object,null),(0,r.default)(a,Array,[]),(0,r.default)(a,null,null),a);function H(t){return z[t]}function V(t){return _(t)?t.type:t}function W(t,e,i,s){var a=i[t];if(void 0!==a){var r=e[t],c=V(r);a=X(a,c);var n=r&&r.observer;return n&&setTimeout((function(){G(n,s,a)}),4),a}return function(t){return _(t)?p(t,"value")?t.value:H(t.type):H(t)}(e[t])}function X(t,e){return e===Boolean?!!t:e===String?String(t):t}function G(t,e,i,s){try{"function"===typeof t?t.call(e,i,s):"string"===typeof t&&"function"===typeof e[t]&&e[t](i,s)}catch(err){console.error("execute observer ".concat(t," callback fail! err: ").concat(err))}}function Y(t){var e=t.$options.mpOptions&&t.$options.mpOptions.properties,i=t.$options.propsData;i&&e&&Object.keys(e).forEach((function(s){p(i,s)&&(t[s]=X(i[s],V(e[s])))}))}function Q(t){var e=JSON.parse(JSON.stringify(t.$options.mpOptions.data||{}));t["__data__"]=e;var i={get:function(){return t["__data__"]},set:function(e){t["__data__"]=e}};Object.defineProperties(t,{data:i,properties:i}),t.setData=R,function(t,e){var i=t.$options.mpOptions.properties;if(i){var s=U(t.$options.propsData)||{},a=function(a){var r=!!_(i[a])&&i[a].observer,c=W(a,i,s,t);Object.defineProperty(e,a,{enumerable:!0,configurable:!0,get:function(){return c},set:function(e){var i=c;e===c||e!==e&&c!==c||(c=Array.isArray(e)?e.slice(0):e,r&&G(r,t,e,i),t.$forceUpdate())}})};for(var r in i)a(r)}}(t,e),Object.keys(e).forEach((function(e){B(t,"__data__",e)}))}var J={beforeCreate:function(){this._renderProxy=this,this._$self=this,this._$noop=v},created:function(){Q(this),function(t){var e=t.$emit;t.triggerEvent=function(i,s,a){var r={dataset:t.$el.dataset},c={target:r,currentTarget:r,detail:s,preventDefault:v,stopPropagation:v};e.call(t,i,c)},t.$emit=function(){t.triggerEvent.apply(t,arguments)},t.getRelationNodes=function(e){return(t._$relationNodes&&t._$relationNodes[e]||[]).filter((function(t){return!t._isDestroyed}))},t._$updateProperties=Y}(this),M(this)},mounted:function(){(function(t){var e=t.$options.watch;e&&Object.keys(e).forEach((function(i){var s=e[i];if(s.mounted){var a=t[i],r=s.handler;"string"===typeof r&&(r=t[r]),r&&r.call(t,a,a)}}))})(this)},destroyed:function(){N(this,"unlinked")}};t.__wxRoute="",t.__wxComponents=Object.create(null),t.__wxVueOptions=Object.create(null);var K=n.default.nextTick;e.nextTick=K;var Z=uni.__$wx__,tt=Z;e.default=tt}).call(this,i("0ee4"))},edf3:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.base64ToPath=m,e.canIUseCanvas2d=function(){return!1},e.compareVersion=h,e.getImageInfo=function(e,i){var s=this,r=this&&this.canvas&&this.canvas.createImage;return new Promise(function(){var n=(0,c.default)(a.default.mark((function c(n,o){var u,f;return a.default.wrap((function(a){while(1)switch(a.prev=a.next){case 0:if(u=e.replace(/^@\//,"/"),!p[e]||!p[e].errMsg){a.next=5;break}n(p[e]),a.next=22;break;case 5:if(a.prev=5,!l(e)||r&&!_){a.next=10;break}return a.next=9,m(e);case 9:u=a.sent;case 10:a.next=15;break;case 12:a.prev=12,a.t0=a["catch"](5),o(d(d({},a.t0),{},{src:u}));case 15:if(!r||_){a.next=21;break}return f=s.canvas.createImage(),f.onload=function(){var t={path:f,width:f.width,height:f.height};p[e]=t,n(p[e])},f.onerror=function(t){o({err:t,path:e})},f.src=u,a.abrupt("return");case 21:uni.getImageInfo({src:u,success:function(a){if(r){var c=s.canvas.createImage();return c.onload=function(){a.path=c,p[e]=a,n(p[e])},c.onerror=function(t){o({err:t,path:e})},void(c.src=u)}"ios"==uni.getSystemInfoSync().osName&&i?g(a.path).then((function(t){a.path=t,p[e]=a,n(p[e])})).catch((function(i){t("error",{err:i,path:e}," at uni_modules/lime-painter/components/l-painter/utils.js:325"),o({err:i,path:e})})):(p[e]=a,n(p[e]))},fail:function(i){t("error",{err:i,path:e}," at uni_modules/lime-painter/components/l-painter/utils.js:335"),o({err:i,path:e})}});case 22:case"end":return a.stop()}}),c,null,[[5,12]])})));return function(t,e){return n.apply(this,arguments)}}())},e.isBase64=void 0,e.isNumber=v,e.networkReg=e.isPC=void 0,e.pathToBase64=g,e.sleep=function(t){return new Promise((function(e){return setTimeout(e,t)}))},e.toPx=function t(e,i){var s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("number"===typeof e)return e;if(v(e))return 1*e;if("string"===typeof e){var a=/^-?([0-9]+)?([.]{1}[0-9]+){0,1}(em|rpx|px|%)$/g,r=a.exec(e);if(!e||!r)return 0;var c=r[3];e=parseFloat(e);var n=0;return"rpx"===c?n=uni.upx2px(e):"px"===c?n=1*e:"%"===c?n=e*t(i)/100:"em"===c&&(n=e*t(i||14)),s?1*n.toFixed(2):Math.round(n)}return 0};var a=s(i("127e")),r=s(i("7ca3")),c=s(i("ee10")),n=s(i("34cf"));function o(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function d(t){for(var e=1;er)return 1;if(a=0))return!0;var s=function(t){var e=t.replace(/-/g,"/");return e.includes(" ")?e:e+" 00:00:00"};try{var a=new Date(s(e)).getTime(),r=new Date(s(i)).getTime();return r>a}catch(c){return t("error","\u65e5\u671f\u683c\u5f0f\u9519\u8bef:",c," at components/time-picker/time-date-picker.vue:341"),!1}}}};e.default=r}).call(this,i("f3b9")["default"])},ef3a:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=!1,o=function(e,i){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.05,a=4/3,r=e/i;t("log",r,a," at utils/albumUploadImage.js:15");var c=a-r<=.334||r-a<=s;return c},d=function(){var e=(0,r.default)(a.default.mark((function e(i,s){var r,c,d,u,f,_,p,v,h,m,g=arguments;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(r=g.length>2&&void 0!==g[2]?g[2]:["album","camera"],c=g.length>3&&void 0!==g[3]?g[3]:"image",!n){e.next=4;break}return e.abrupt("return");case 4:if(e.prev=4,n=!0,d=null,"image"!=c){e.next=27;break}return e.next=10,uni.chooseImage({count:1,sizeType:["original","compressed"],sourceType:r});case 10:if(u=e.sent,t("log","res======",u," at utils/albumUploadImage.js:37"),u&&u.tempFiles&&0!==u.tempFiles.length){e.next=15;break}return t("log","\u7528\u6237\u53d6\u6d88\u4e86\u56fe\u7247\u9009\u62e9"," at utils/albumUploadImage.js:41"),e.abrupt("return",null);case 15:return d=u.tempFiles[0],e.next=18,uni.getImageInfo({src:d.path});case 18:if(f=e.sent,_=f.width,p=f.height,t("log","\u56fe\u7247\u5bbd\u9ad8:",_,p,"\u5b9e\u9645\u6bd4\u4f8b:",(_/p).toFixed(4)," at utils/albumUploadImage.js:56"),v=o(_,p,.05),v){e.next=25;break}return uni.showToast({title:"\u56fe\u7247\u6bd4\u4f8b\u9700\u4e3a4:3\uff0c\u5141\u8bb8\u8f7b\u5fae\u504f\u5dee",icon:"none",duration:2e3}),e.abrupt("return",null);case 25:e.next=32;break;case 27:if("video"!=c){e.next=32;break}return e.next=30,uni.chooseVideo({count:1,sourceType:["album","camera"],compressed:!1});case 30:h=e.sent,d=h;case 32:return e.next=34,l(d,i,s,c);case 34:return m=e.sent,e.abrupt("return",m);case 38:if(e.prev=38,e.t0=e["catch"](4),t("error","\u4e0a\u4f20\u51fa\u9519:",e.t0," at utils/albumUploadImage.js:87"),!e.t0.errMsg||!e.t0.errMsg.includes("cancel")){e.next=44;break}return t("log","\u7528\u6237\u53d6\u6d88\u4e86\u64cd\u4f5c"," at utils/albumUploadImage.js:91"),e.abrupt("return",null);case 44:throw e.t0;case 45:return e.prev=45,n=!1,e.finish(45);case 48:case"end":return e.stop()}}),e,null,[[4,38,45,48]])})));return function(t,i){return e.apply(this,arguments)}}(),l=function(){var e=(0,r.default)(a.default.mark((function e(i,s,r,c){var n,o,d,l,_,p;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t("log","file=======",i," at utils/albumUploadImage.js:149"),t("log","userId=======",s," at utils/albumUploadImage.js:150"),"image"!=c){e.next=8;break}if(!(i.size>5242880)){e.next=6;break}return uni.showToast({title:"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc75MB",icon:"none"}),e.abrupt("return",Promise.reject(new Error("\u6587\u4ef6\u5927\u5c0f\u8d85\u51fa\u9650\u5236")));case 6:e.next=12;break;case 8:if("video"!=c){e.next=12;break}if(!(i.size>104857600)){e.next=12;break}return uni.showToast({title:"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7100MB",icon:"none"}),e.abrupt("return",Promise.reject(new Error("\u6587\u4ef6\u5927\u5c0f\u8d85\u51fa\u9650\u5236")));case 12:return n=(new Date).getTime(),t("log","file",i," at utils/albumUploadImage.js:171"),"image"==c?o=i.name.split("."):"video"==c&&(o=i.tempFilePath.split(".")),d=1==r?"yh":2==r?"syr":3==r?"sj":"",l="".concat(s,"_").concat(d,"_").concat(n,".").concat(o[o.length-1]),t("log","file.path",i.path," at utils/albumUploadImage.js:187"),t("log","imageType",o," at utils/albumUploadImage.js:188"),t("log","name",l," at utils/albumUploadImage.js:189"),e.prev=20,e.next=23,u(r);case 23:return _=e.sent,e.next=26,f(i,_,l,c);case 26:return e.sent,p="".concat(_.host,"/").concat(_.dir).concat(l),e.abrupt("return",p);case 31:throw e.prev=31,e.t0=e["catch"](20),t("error","\u4e0a\u4f20\u5931\u8d25:",e.t0," at utils/albumUploadImage.js:199"),e.t0;case 35:case"end":return e.stop()}}),e,null,[[20,31]])})));return function(t,i,s,a){return e.apply(this,arguments)}}(),u=function(){var e=(0,r.default)(a.default.mark((function e(i){var s;return a.default.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,c.default.post("/user/getalioss",{type:i,kind:1});case 3:return s=e.sent,e.abrupt("return",s);case 7:throw e.prev=7,e.t0=e["catch"](0),t("error","\u83b7\u53d6OSS\u914d\u7f6e\u5931\u8d25:",e.t0," at utils/albumUploadImage.js:213"),e.t0;case 11:case"end":return e.stop()}}),e,null,[[0,7]])})));return function(t){return e.apply(this,arguments)}}(),f=function(e,i,s,a){return t("log",i," at utils/albumUploadImage.js:220"),new Promise((function(r,c){var n,o={};if(o.name=s,o.policy=i.policy,o.OSSAccessKeyId=i.ossAccessKeyId,o.success_action_status="200",o.signature=i.signature,o.key=i.dir+s,o.file=e,"image"==a){n=e.path;var d=e.path.split(".").pop().toLowerCase(),l={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif"};l[d]&&(o["Content-Type"]=l[d],o["x-oss-meta-content-type"]=l[d]),t("log","formData",o," at utils/albumUploadImage.js:266")}else"video"==a&&(n=e.tempFilePath);uni.uploadFile({url:i.host,filePath:n,name:"file",formData:{key:i.dir+s,policy:i.policy,OSSAccessKeyId:i.ossAccessKeyId,success_action_status:200,signature:i.signature},success:function(t){r("".concat(i.host,"/").concat(i.dir).concat(s))},complete:function(e){t("log","err",e," at utils/albumUploadImage.js:291")}})}))},_={handleUpload:d};e.default=_}).call(this,i("f3b9")["default"])},ef88:function(t,e,i){"use strict";i.r(e);var s=i("1f22"),a=i("be06");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},ef8e:function(t,e,i){"use strict";i.r(e);var s=i("0c4f"),a=i("69b6");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"6e0b296f",null,!1,s["a"],void 0);e["default"]=n.exports},efdf:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default="plus"},effb:function(t,e,i){"use strict";i.r(e);var s=i("cd4f"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},f007:function(t,e,i){"use strict";i.r(e);var s=i("d3bb"),a=i("eae7b");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},f0cb:function(t,e,i){"use strict";i.r(e);var s=i("d45e"),a=i("2546");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},f123:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s={props:{openType:String},emits:["getphonenumber","getuserinfo","error","opensetting","launchapp","contact","chooseavatar","addgroupapp","chooseaddress","subscribe","login","im"],methods:{onGetPhoneNumber:function(t){this.$emit("getphonenumber",t.detail)},onGetUserInfo:function(t){this.$emit("getuserinfo",t.detail)},onError:function(t){this.$emit("error",t.detail)},onOpenSetting:function(t){this.$emit("opensetting",t.detail)},onLaunchApp:function(t){this.$emit("launchapp",t.detail)},onContact:function(t){this.$emit("contact",t.detail)},onChooseavatar:function(t){this.$emit("chooseavatar",t.detail)},onAgreeprivacyauthorization:function(t){this.$emit("agreeprivacyauthorization",t.detail)},onAddgroupapp:function(t){this.$emit("addgroupapp",t.detail)},onChooseaddress:function(t){this.$emit("chooseaddress",t.detail)},onSubscribe:function(t){this.$emit("subscribe",t.detail)},onLogin:function(t){this.$emit("login",t.detail)},onIm:function(t){this.$emit("im",t.detail)}}};e.default=s},f16c:function(t,e,i){"use strict";i.r(e);var s=i("f32d"),a=i("9cc1");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"6d83eee4",null,!1,s["a"],void 0);e["default"]=n.exports},f1a3:function(t,e,i){"use strict";i.r(e);var s=i("df05"),a=i("6125");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},f1ef:function(t,e,i){"use strict";i.r(e);var s=i("9c5e"),a=i("d9a2");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"d044a224",null,!1,s["a"],void 0);e["default"]=n.exports},f2c2:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","container"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u7ed9\u5458\u5de5\u5206\u914d\u670d\u52a1",leftImg:"/static/images/whiteBack.png",showUser:!0,backgroundColor:"linear-gradient( 134deg, #F52540 0%, #E8101E 100%)",titleColor:"#fff",borderBottom:"none",_i:1}}),i("searchBox",{attrs:{placeholder:"\u670d\u52a1\u540d\u79f0",showAdd:!1,_i:2},on:{confirm:t.search,search:t.search},model:{value:t._$s(2,"v-model",t.queryData.title),callback:function(e){t.$set(t.queryData,"title",e)},expression:"queryData.title"}}),i("view",{staticClass:t._$s(3,"sc","container-tip flex-row-center"),attrs:{_i:3}},[i("image",{staticClass:t._$s(4,"sc","tip-icon"),attrs:{_i:4}}),i("text",{staticClass:t._$s(5,"sc","container-tip-text"),attrs:{_i:5}})]),i("CommonList",{ref:"groupRef",attrs:{apiUrl:"/sj/sjserverslist",listScrollHeight:"calc(100vh - "+(t.statusBarHeight+302)+"rpx)",_i:6},scopedSlots:t._u([{key:"listData",fn:function(e,s,a){var r=e.list;return[i("view",{staticClass:s._$s("8-"+a,"sc","service-list"),attrs:{_i:"8-"+a}},t._l(s._$s("9-"+a,"f",{forItems:r}),(function(e,r,c,n){return i("view",{key:s._$s("9-"+a,"f",{forIndex:c,key:r}),staticClass:s._$s("9-"+a+n,"sc","service-item flex-row-end-between"),attrs:{_i:"9-"+a+n}},[i("view",{staticClass:s._$s("10-"+a+n,"sc","item-left flex-row-start"),attrs:{_i:"10-"+a+n}},[i("image",{staticClass:s._$s("11-"+a+n,"sc","item-left-photo"),attrs:{src:s._$s("11-"+a+n,"a-src",e.photo[0]),mode:"aspectFill",_i:"11-"+a+n}}),i("view",{staticClass:s._$s("12-"+a+n,"sc","item-left-texts"),attrs:{_i:"12-"+a+n}},[i("view",{staticClass:s._$s("13-"+a+n,"sc","item-left-text1"),attrs:{_i:"13-"+a+n}},[t._v(s._$s("13-"+a+n,"t0-0",t._s(e.title)))]),i("view",{staticClass:s._$s("14-"+a+n,"sc","flex-row-center"),attrs:{_i:"14-"+a+n}},[i("text",{staticClass:s._$s("15-"+a+n,"sc","item-left-text2"),staticStyle:{color:"#e8101e"},attrs:{_i:"15-"+a+n}},[t._v("\xa5")]),i("text",{staticClass:s._$s("16-"+a+n,"sc","item-left-text2"),staticStyle:{color:"#e8101e","font-size":"28rpx"},attrs:{_i:"16-"+a+n}},[t._v(s._$s("16-"+a+n,"t0-0",t._s(e.server_price)))])])])]),i("view",{staticClass:s._$s("17-"+a+n,"sc","item-right flex-row-center-center"),attrs:{_i:"17-"+a+n},on:{click:function(i){return t.goSlectSyr(e)}}},[t._v(" \u5206\u914d ")])])})),0)]}},{key:"empty",fn:function(t,e,s){return[i("noData",{attrs:{_i:"19-"+s}})]}}])})],1)},r=[]},f32d:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","order-card"),attrs:{_i:0},on:{click:t.goDetail}},[i("view",{staticClass:t._$s(1,"sc","orderNumBox"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","time-info"),attrs:{_i:2}},[i("text"),t._v(t._$s(2,"t1-0",t._s(t.useTime)))]),t._$s(4,"i",t.showState)?i("view",{staticClass:t._$s(4,"sc","stateText"),class:t._$s(4,"c",{stateText2:t.dataItem.state>4&&7!==t.dataItem.state,stateText3:7===t.dataItem.state}),attrs:{_i:4}},[t._v(t._$s(4,"t0-0",t._s(t.stateText)))]):t._e()]),i("view",{staticClass:t._$s(5,"sc","service-container"),attrs:{_i:5},on:{click:function(e){return t.$emit("goOrderDetail",t.dataItem)}}},[i("image",{staticClass:t._$s(6,"sc","service-img"),attrs:{src:t._$s(6,"a-src",t.photo[0]),_i:6}}),i("view",{staticClass:t._$s(7,"sc","service-info"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","topInfo"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","price_title"),attrs:{_i:9}},[i("view",{staticClass:t._$s(10,"sc","service-type white-space-nowrap"),attrs:{_i:10}},[t._v(t._$s(10,"t0-0",t._s(t.dataItem.title)))])]),i("view",{staticClass:t._$s(11,"sc","service-address"),attrs:{_i:11}},[t._v(t._$s(11,"t0-0",t._s(t.dataItem.add_time)))])]),i("view",{staticClass:t._$s(12,"sc","service-price"),attrs:{_i:12}},[i("text"),t._v(t._$s(12,"t1-0",t._s(Number(t.dataItem.order_money))))])])]),i("view",{staticClass:t._$s(14,"sc","button-group"),attrs:{_i:14}},[t._$s(15,"i",1==t.dataItem.state)?i("view",{staticClass:t._$s(15,"sc","btn cancel-btn"),attrs:{_i:15},on:{click:function(e){return e.stopPropagation(),t.emitCancel(e)}}}):t._e(),t._$s(16,"i",1==t.dataItem.state)?i("view",{staticClass:t._$s(16,"sc","btn accept-btn"),attrs:{_i:16},on:{click:function(e){return e.stopPropagation(),t.emitGoPay(e)}}}):t._e(),t._$s(17,"i",2==t.dataItem.state||3==t.dataItem.state)?i("view",{staticClass:t._$s(17,"sc","btn accept-btn"),attrs:{_i:17},on:{click:function(e){return e.stopPropagation(),t.emitRefund(e)}}}):t._e(),t._$s(18,"i",5==t.dataItem.state)?i("view",{staticClass:t._$s(18,"sc","btn accept-btn"),attrs:{_i:18},on:{click:function(e){return e.stopPropagation(),t.emitReOrder(e)}}}):t._e(),t._$s(19,"i",7==t.dataItem.state)?i("view",{staticClass:t._$s(19,"sc","btn accept-btn"),attrs:{_i:19},on:{click:function(e){return e.stopPropagation(),t.emitReOrder(e)}}}):t._e()])])},a=[]},f3b9:function(t,e,i){"use strict";function s(t){var e=Object.prototype.toString.call(t);return e.substring(8,e.length-1)}function a(){return"string"===typeof __channelId__&&__channelId__}function r(t,e){switch(s(e)){case"Function":return"function() { [native code] }";default:return e}}function c(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),s=1;s1){var d=n.pop();o=n.join("---COMMA---"),0===d.indexOf(" at ")?o+=d:o+="---COMMA---"+d}else o=n[0];console[c](o)}i.r(e),i.d(e,"log",(function(){return c})),i.d(e,"default",(function(){return n}))},f3ca:function(t,e,i){"use strict";i.r(e);var s=i("a126"),a=i("957d");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"d184c8aa",null,!1,s["a"],void 0);e["default"]=n.exports},f409:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s=i("fa2b"),a=i("a709"),r={computed:{value:function(){var t=this.text,e=this.mode,i=this.format,r=this.href;return"price"===e?(/^\d+(\.\d+)?$/.test(t)||(0,a.error)("\u91d1\u989d\u6a21\u5f0f\u4e0b\uff0ctext\u53c2\u6570\u9700\u8981\u4e3a\u91d1\u989d\u683c\u5f0f"),(0,s.func)(i)?i(t):(0,a.priceFormat)(t,2)):"date"===e?(!(0,s.date)(t)&&(0,a.error)("\u65e5\u671f\u6a21\u5f0f\u4e0b\uff0ctext\u53c2\u6570\u9700\u8981\u4e3a\u65e5\u671f\u6216\u65f6\u95f4\u6233\u683c\u5f0f"),(0,s.func)(i)?i(t):i?(0,a.timeFormat)(t,i):(0,a.timeFormat)(t,"yyyy-mm-dd")):"phone"===e?(0,s.func)(i)?i(t):"encrypt"===i?"".concat(t.substr(0,3),"****").concat(t.substr(7)):t:"name"===e?("string"!==typeof t&&(0,a.error)("\u59d3\u540d\u6a21\u5f0f\u4e0b\uff0ctext\u53c2\u6570\u9700\u8981\u4e3a\u5b57\u7b26\u4e32\u683c\u5f0f"),(0,s.func)(i)?i(t):"encrypt"===i?this.formatName(t):t):"link"===e?(!(0,s.url)(r)&&(0,a.error)("\u8d85\u94fe\u63a5\u6a21\u5f0f\u4e0b\uff0chref\u53c2\u6570\u9700\u8981\u4e3aURL\u683c\u5f0f"),t):t}},methods:{formatName:function(t){var e="";if(2===t.length)e=t.substr(0,1)+"*";else if(t.length>2){for(var i="",s=0,a=t.length-2;s60?t.evaluateObj.describe.slice(0,59):t.evaluateObj.describe))),t._$s(14,"i",t.evaluateObj.describe.length>60)?i("text",{attrs:{_i:14}},[t._v(t._$s(14,"t0-0",t._s(t.hasShowMore?t.evaluateObj.describe.slice(59):"..."))),i("text",{staticClass:t._$s(15,"sc","foot-btn"),attrs:{_i:15},on:{click:function(e){return e.stopPropagation(),t.showMore(e)}}},[t._v(t._$s(15,"t0-0",t._s(t.hasShowMore?"\u6536\u8d77":"\u5168\u6587"))),i("image",{staticClass:t._$s(16,"sc","foot-btn-img"),class:t._$s(16,"c",{btnImg2:t.hasShowMore}),attrs:{_i:16}})])]):t._e()])]),t._$s(17,"i",t.isAllImg)?i("view",{staticClass:t._$s(17,"sc","photos"),attrs:{_i:17}},t._l(t._$s(18,"f",{forItems:t.photos}),(function(e,s,a,r){return i("image",{key:t._$s(18,"f",{forIndex:a,key:s}),staticClass:t._$s("18-"+r,"sc","photo"),class:t._$s("18-"+r,"c",{"photo-third":(s+1)%3===0}),attrs:{src:t._$s("18-"+r,"a-src",e),_i:"18-"+r},on:{click:function(e){return e.stopPropagation(),t.imgPreview(s)}}})})),0):i("view",{staticClass:t._$s(19,"sc","photos"),attrs:{_i:19}},[t._l(t._$s(20,"f",{forItems:t.photos.slice(0,3)}),(function(e,s,a,r){return i("image",{key:t._$s(20,"f",{forIndex:a,key:s}),staticClass:t._$s("20-"+r,"sc","photo"),class:t._$s("20-"+r,"c",{"photo-third":(s+1)%3===0}),attrs:{src:t._$s("20-"+r,"a-src",e),_i:"20-"+r},on:{click:function(e){return e.stopPropagation(),t.imgPreview(s)}}})})),t._$s(21,"i",t.photos.length>3)?i("view",{staticClass:t._$s(21,"sc","more"),attrs:{_i:21}},[i("image",{staticClass:t._$s(22,"sc","more-img"),attrs:{_i:22}}),i("text",{staticClass:t._$s(23,"sc","more-text"),attrs:{_i:23}},[t._v(t._$s(23,"t0-0",t._s(t.photos.length)))])]):t._e()],2)])])},a=[]},f7c3:function(t,e,i){"use strict";i.r(e);var s=i("2de4"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},f805:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","step-tab"),attrs:{_i:0}},[i("view",{staticClass:t._$s(1,"sc","step-container"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","step-item"),class:t._$s(2,"c",t.getStepClass(0)),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","step-icon"),attrs:{_i:3}},[t._$s(4,"i",0===t.currentStep)?i("image",{staticClass:t._$s(4,"sc","step-img active-circle"),attrs:{_i:4}}):t._$s(5,"e",t.currentStep>0)?i("view",{staticClass:t._$s(5,"sc","step-done"),attrs:{_i:5}}):i("view",{staticClass:t._$s(6,"sc","step-number"),attrs:{_i:6}})]),i("text",{staticClass:t._$s(7,"sc","step-text"),class:t._$s(7,"c",{active:0===t.currentStep}),attrs:{_i:7}})]),i("view",{staticClass:t._$s(8,"sc","line-segment line-1"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","line-progress"),class:t._$s(9,"c",{active:t.line1Active,deactivating:t.line1Deactivating}),attrs:{_i:9}})]),i("view",{staticClass:t._$s(10,"sc","step-item"),class:t._$s(10,"c",t.getStepClass(1)),attrs:{_i:10}},[i("view",{staticClass:t._$s(11,"sc","step-icon"),attrs:{_i:11}},[t._$s(12,"i",1===t.currentStep)?i("image",{staticClass:t._$s(12,"sc","step-img active-circle"),attrs:{_i:12}}):t._$s(13,"e",t.currentStep>1)?i("view",{staticClass:t._$s(13,"sc","step-done"),attrs:{_i:13}}):i("view",{staticClass:t._$s(14,"sc","step-number"),attrs:{_i:14}})]),i("text",{staticClass:t._$s(15,"sc","step-text"),class:t._$s(15,"c",{active:1===t.currentStep}),attrs:{_i:15}},[t._v(t._$s(15,"t0-0",t._s(1===t.identity?"\u4e2a\u4eba\u4fe1\u606f":"\u8d44\u8d28\u4fe1\u606f")))])]),i("view",{staticClass:t._$s(16,"sc","line-segment line-2"),attrs:{_i:16}},[i("view",{staticClass:t._$s(17,"sc","line-progress"),class:t._$s(17,"c",{active:t.line2Active,deactivating:t.line2Deactivating}),attrs:{_i:17}})]),i("view",{staticClass:t._$s(18,"sc","step-item"),class:t._$s(18,"c",t.getStepClass(2)),attrs:{_i:18}},[i("view",{staticClass:t._$s(19,"sc","step-icon"),attrs:{_i:19}},[t._$s(20,"i",2===t.currentStep)?i("image",{staticClass:t._$s(20,"sc","step-img active-circle"),attrs:{_i:20}}):t._$s(21,"e",t.currentStep>2)?i("view",{staticClass:t._$s(21,"sc","step-done"),attrs:{_i:21}}):i("view",{staticClass:t._$s(22,"sc","step-number"),attrs:{_i:22}})]),i("text",{staticClass:t._$s(23,"sc","step-text"),class:t._$s(23,"c",{active:2===t.currentStep}),attrs:{_i:23}},[t._v(t._$s(23,"t0-0",t._s(1===t.identity?"\u8d44\u8d28\u4fe1\u606f":"\u95e8\u5e97\u4fe1\u606f")))])])])])},a=[]},f806:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("127e")),r=s(i("ee10")),c=s(i("16bb")),n=s(i("cd5a")),o=s(i("e26b")),d=s(i("32a4")),l=s(i("91d2")),u={components:{serviceCodeInput:o.default},data:function(){return{isShowPer:!1,id:"",staffInfo:{avatar:"/static/images/staff.jpg",name:"\u4e2d\u533b\u7406\u7597\u8c22\u98de",rating:5},showInput:!1,userInfo:{},orderInfo:{},reservation_address_arr:{},artisanType:getApp().globalData.artisanType,user_syr:{}}},onLoad:function(t){this.id=t.id,t.id&&(this.getUserInfo(),this.getOrderDetail())},methods:{getUserInfo:function(){var t=this,e=1==this.artisanType?2:2==this.artisanType?3:1;c.default.post("/user/getuser",{type:e}).then((function(e){t.userInfo=e.data}))},getOrderDetail:function(){var e=this,i=1==this.artisanType?2:2==this.artisanType?3:"";c.default.post("/user/orderdetail",{id:this.id,type:i}).then((function(i){e.orderInfo=i.data,e.reservation_address_arr=i.data.reservation_address_arr,t("log",e.orderInfo," at pages/order/artisanorder-detail.vue:200")}))},cancelOrder:function(e,i){var s=this;e.preventDefault(),e.stopPropagation(),1==i.state?uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f",success:function(e){if(e.confirm){var a={orderNo:i.number,amount:i.pay_money,cancel_state:s.artisanType+1,cancel_id:s.userInfo.id};c.default.post("/user/cancelorder",a).then((function(t){if(1==t.state){uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),s.getOrderDetail();var e=getCurrentPages(),i=e[e.length-2];i&&(i.$vm.getOrderNumber(),i.$vm.getOrderList())}else uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){t("log",e," at pages/order/artisanorder-detail.vue:245")}))}}}):uni.showModal({title:"\u53d6\u6d88\u8ba2\u5355",content:"\u786e\u5b9a\u8981\u53d6\u6d88\u8be5\u8ba2\u5355\u5417\uff1f\uff08\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u652f\u4ed8\u91d1\u989d\u5c06\u539f\u8def\u9000\u56de\uff09",success:function(e){if(e.confirm){var a={orderNo:i.number,amount:i.pay_money,cancel_state:s.artisanType+1,cancel_id:s.userInfo.id},r="";1==i.pay_kind?r="/user/cancelbalance":2==i.pay_kind?r="/user/wechatrefund":3==i.pay_kind&&(r="/user/alirefund"),t("log",a,r," at pages/order/artisanorder-detail.vue:271"),c.default.post(r,a).then((function(t){if(1==t.state){uni.showToast({title:"\u53d6\u6d88\u6210\u529f\uff01",icon:"none"}),s.getOrderDetail();var e=getCurrentPages(),i=e[e.length-2];i&&(i.$vm.getOrderNumber(),i.$vm.getOrderList())}else uni.showToast({title:t.msg,icon:"none"})})).catch((function(e){t("log",e," at pages/order/artisanorder-detail.vue:294")}))}}})},confirmOrder:function(t,e){var i=this;t.preventDefault(),t.stopPropagation(),c.default.post("/user/ordersure",{id:e.id}).then((function(t){uni.showToast({title:"\u5df2\u63a5\u5355",icon:"none"}),i.getOrderDetail();var e=getCurrentPages(),s=e[e.length-2];s&&(s.$vm.getOrderNumber(),s.$vm.getOrderList())}))},startOrder:function(t,e){t.preventDefault(),t.stopPropagation(),this.showInput=!0},onConfirm:function(e){var i=this;this.showInput=!1,c.default.post("/user/startserver",{id:this.orderInfo.id,server_code:e,order_shopid:this.userInfo.id}).then((function(e){if(t("log",e," at pages/order/artisanorder-detail.vue:337"),1==e.state){uni.showToast({title:e.msg,icon:"none"}),i.getOrderDetail();var s=getCurrentPages(),a=s[s.length-2];a&&(a.$vm.getOrderNumber(),a.$vm.getOrderList())}else 2==e.state&&uni.showToast({title:e.msg,icon:"none"});i.handelOrder={}}))},endOrder:function(t,e){var i=this;t.preventDefault(),t.stopPropagation(),c.default.post("/user/endserver",{id:e.id,order_shopid:this.userInfo.id}).then((function(t){if(1==t.state){uni.showToast({title:t.msg,icon:"none"}),i.getOrderDetail();var e=getCurrentPages(),s=e[e.length-2];s&&(s.$vm.getOrderNumber(),s.$vm.getOrderList())}}))},showPermissionDialog:function(t,e){return new Promise((function(i){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){i(t.confirm)}})}))},contactService:function(e){var i=this;return(0,r.default)(a.default.mark((function s(){var r,c,n,o,u,f,_;return a.default.wrap((function(s){while(1)switch(s.prev=s.next){case 0:if(r=uni.getSystemInfoSync(),"ios"!==r.platform){s.next=5;break}uni.makePhoneCall({phoneNumber:e}),s.next=35;break;case 5:return c="",c="ios"===r.platform?"phone":"android.permission.CALL_PHONE",i.isShowPer=!0,n=!plus.storage.getItem("perm_".concat(c)),n&&(i.isShowPer=!0),s.next=12,l.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 12:if(o=s.sent,u=o.granted,!u){s.next=18;break}return i.isShowPer=!1,uni.makePhoneCall({phoneNumber:e}),s.abrupt("return");case 18:return i.isShowPer=!1,s.next=21,i.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 21:if(f=s.sent,f){s.next=24;break}return s.abrupt("return");case 24:return s.next=26,l.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 26:if(_=s.sent,t("log","result",_," at pages/order/artisanorder-detail.vue:440"),!_){s.next=33;break}return uni.makePhoneCall({phoneNumber:e}),s.abrupt("return");case 33:return d.default.openAppSettings(),s.abrupt("return");case 35:case"end":return s.stop()}}),s)})))()},openMap:function(){n.default.goMap({latitude:parseFloat(this.reservation_address_arr.latitude),longitude:parseFloat(this.reservation_address_arr.longitude),name:this.reservation_address_arr.house_number,address:this.reservation_address_arr.server_address})}}};e.default=u}).call(this,i("f3b9")["default"])},f837:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c=s(i("c536")),n={name:"uv-status-bar",mixins:[a.default,r.default,c.default],data:function(){return{}},computed:{style:function(){var t={};return t.height=this.$uv.addUnit(this.$uv.sys().statusBarHeight,"px"),this.bgColor&&(this.bgColor.indexOf("gradient")>-1?t.backgroundImage=this.bgColor:t.background=this.bgColor),this.$uv.deepMerge(t,this.$uv.addStyle(this.customStyle))}}};e.default=n},f89e:function(t,e,i){"use strict";i.r(e);var s=i("53ae"),a=i("7c97");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},f8bd:function(t,e,i){"use strict";i.r(e);var s=i("17a5"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},f8cc:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={uniTransition:i("f0cb").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$s(0,"i",t.showPopup)?i("view",{staticClass:t._$s(0,"sc","uni-popup"),class:t._$s(0,"c",[t.popupstyle,t.isDesktop?"fixforpc-z-index":""]),attrs:{_i:0}},[i("view",{attrs:{_i:1},on:{touchstart:t.touchstart}},[t._$s(2,"i",t.maskShow)?i("uni-transition",{key:"1",attrs:{name:"mask","mode-class":"fade",styles:t.maskClass,duration:t.duration,show:t.showTrans,_i:2},on:{click:t.onTap}}):t._e(),i("uni-transition",{key:"2",attrs:{"mode-class":t.ani,name:"content",styles:t.transClass,duration:t.duration,show:t.showTrans,_i:3},on:{click:t.onTap}},[i("view",{staticClass:t._$s(4,"sc","uni-popup__wrapper"),class:t._$s(4,"c",[t.popupstyle]),style:t._$s(4,"s",t.getStyles),attrs:{_i:4},on:{click:t.clear}},[t._t("default",null,{_i:5})],2)])],1)]):t._e()},r=[]},f8df:function(t,e,i){"use strict";i.r(e);var s=i("9e95"),a=i("49b6");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,"026d9c68",null,!1,s["a"],void 0);e["default"]=n.exports},f972:function(t,e,i){"use strict";(function(t){var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("e77d")),r=s(i("16bb")),c=s(i("2251")),n=s(i("6bf1")),o=s(i("06c4")),d=s(i("f8df")),l=s(i("29f0")),u={components:{searchBox:n.default,serviecFirstTab:c.default,FilterPanel:o.default,CommonList:d.default,serviceCardList:a.default,filterVue:l.default},data:function(){return{statusBarHeight:0,title:"",queryData:{type:3,distance:null,min_price:null,max_price:null,sort:null,service_type:null},activeId:"",tabs:[],iconTabs:[]}},onLoad:function(t){this.getLocation();var e=uni.getSystemInfoSync();this.statusBarHeight=e.statusBarHeight,this.queryData.first_class=t.id,this.activeId=t.id,this.title=t.title,this.getFirstClass(),this.getIconTabs()},methods:{getLocation:function(){var t={},e=uni.getStorageSync("userAdrees");t=e?e.addressRes:getApp().globalData.addressRes,this.queryData.userLat=t.latitude,this.queryData.userLngz=t.longitude},getSecondlist:function(t){this.queryData.second_class=t,this.search()},search:function(){this.$refs.groupRef.manualRefresh(this.queryData)},searchConfrim:function(t){this.search()},tabClick:function(t){this.activeId=t,this.queryData.first_class=t,this.queryData.second_class="",this.resetFilterConditions(),this.getIconTabs(),this.search()},getFirstClass:function(){var t=this;r.default.post("/user/firstclass").then((function(e){t.tabs=e.data,t.search()}))},getIconTabs:function(){var t=this;r.default.post("/user/secondclass",{id:this.queryData.first_class}).then((function(e){t.iconTabs=e.data}))},handleFilter:function(e){t("log","\u7b5b\u9009\u7ed3\u679c\uff1a",e," at pages/service/class.vue:130"),this.queryData.distance=e.selectedDistance},handleFilterChange:function(e){if(t("log","\u6536\u5230\u7b5b\u9009\u6570\u636e:",e," at pages/service/class.vue:135"),void 0!==e.distance&&null!==e.distance?this.queryData.distance=e.distance/1e3:delete this.queryData.distance,void 0!==e.minPrice&&null!==e.minPrice?this.queryData.min_price=e.minPrice:delete this.queryData.min_price,void 0!==e.maxPrice&&null!==e.maxPrice?this.queryData.max_price=e.maxPrice:delete this.queryData.max_price,void 0!==e.sortType&&null!==e.sortType){this.queryData.sort_type={distance:1,sales:2,price_asc:3,price_desc:4}[e.sortType]}else delete this.queryData.sort_type;void 0!==e.serviceType&&null!==e.serviceType?this.queryData.server_kind=e.serviceType:delete this.queryData.server_kind,t("log","\u6700\u7ec8\u67e5\u8be2\u53c2\u6570:",this.queryData," at pages/service/class.vue:177"),this.search()},resetFilterConditions:function(){var t=this;["distance","server_kind","min_price","max_price","sort_type"].forEach((function(e){delete t.queryData[e]}))}}};e.default=u}).call(this,i("f3b9")["default"])},f976:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("7ca3")),r=s(i("3b2d")),c=s(i("d62f")),n=s(i("3aef")),o=s(i("8c76")),d=i("3f85");function l(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}function u(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:6;return new RegExp("^\\d{".concat(e,"}$")).test(t)},e.contains=function(t,e){return t.indexOf(e)>=0},e.date=function(t){if(!t)return!1;r(t)&&(t=+t);return!/Invalid|NaN/.test(new Date(t).toString())},e.dateISO=function(t){return/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(t)},e.digits=function(t){return/^\d+$/.test(t)},e.email=function(t){return/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(t)},e.empty=function(t){switch((0,a.default)(t)){case"undefined":return!0;case"string":if(0==t.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,"").length)return!0;break;case"boolean":if(!t)return!0;break;case"number":if(0===t||isNaN(t))return!0;break;case"object":if(null===t||0===t.length)return!0;for(var e in t)return!1;return!0}return!1},e.enOrNum=function(t){return/^[0-9a-zA-Z]*$/g.test(t)},e.func=n,e.idCard=function(t){return/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(t)},e.image=function(t){var e=t.split("?")[0];return/\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i.test(e)},e.jsonString=function(t){if("string"===typeof t)try{var e=JSON.parse(t);return!("object"!==(0,a.default)(e)||!e)}catch(i){return!1}return!1},e.landline=function(t){return/^\d{3,4}-\d{7,8}(-\d{3,4})?$/.test(t)},e.letter=function(t){return/^[a-zA-Z]*$/.test(t)},e.mobile=function(t){return/^1([3589]\d|4[5-9]|6[1-2,4-7]|7[0-8])\d{8}$/.test(t)},e.number=r,e.object=c,e.promise=function(t){return c(t)&&n(t.then)&&n(t.catch)},e.range=function(t,e){return t>=e[0]&&t<=e[1]},e.rangeLength=function(t,e){return t.length>=e[0]&&t.length<=e[1]},e.regExp=function(t){return t&&"[object RegExp]"===Object.prototype.toString.call(t)},e.string=function(t){return"string"===typeof t},e.url=function(t){return/^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/.test(t)},e.video=function(t){return/\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i.test(t)};var a=s(i("3b2d"));function r(t){return/^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(t)}function c(t){return"[object Object]"===Object.prototype.toString.call(t)}function n(t){return"function"===typeof t}},fa44:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,noData:i("93c2").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","service-page"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5de5\u4f4d\u8ba2\u5355\u5217\u8868",showBack:!0,backgroundColor:"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","flexed"),attrs:{_i:2}},[i("view",{staticClass:t._$s(3,"sc","tab-container"),attrs:{_i:3}},t._l(t._$s(4,"f",{forItems:t.tabs}),(function(e,s,a,r){return i("view",{key:t._$s(4,"f",{forIndex:a,key:s}),class:t._$s("4-"+r,"c",["tab-item",{active:t.currentTab===s}]),attrs:{_i:"4-"+r},on:{click:function(i){return t.switchTab(s,e.id)}}},[t._v(t._$s("4-"+r,"t0-0",t._s(e.text)))])})),0)]),t._$s(5,"i",t.services&&0!=t.services.length)?i("view",{staticClass:t._$s(5,"sc","service-list"),attrs:{_i:5}},t._l(t._$s(6,"f",{forItems:t.services}),(function(e,s,a,r){return i("orderCard",{key:t._$s(6,"f",{forIndex:a,key:"6-"+r}),attrs:{dataItem:e,_i:"6-"+r},on:{cancel:t.cancel,goDetail:t.goDetail,accept:t.accept,start:t.startServe,done:t.done}})})),1):i("noData",{attrs:{_i:7}}),t._$s(8,"i",t.hasMore)?i("view",{staticClass:t._$s(8,"sc","load-more"),attrs:{_i:8}},[i("text")]):t._e(),i("serviceCodeInput",{attrs:{show:t.showInput,_i:10},on:{close:function(e){t.showInput=!1},confirm:t.onConfirm}})],1)},r=[]},faaf:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","watermark"),attrs:{_i:0}},[t._l(t._$s(1,"f",{forItems:t.num}),(function(e,s,a,r){return[t._$s("2-"+r,"i",""!=t.text)?i("view",{key:t._$s(1,"f",{forIndex:a,keyIndex:0,key:s+"_0"}),staticClass:t._$s("2-"+r,"sc","watermark-text"),style:t._$s("2-"+r,"s",{opacity:t.opacity}),attrs:{_i:"2-"+r}},[t._v(t._$s("2-"+r,"t0-0",t._s(t.text)))]):t._e(),t._$s("3-"+r,"i",""!=t.imgUrl&&""==t.text)?i("image",{key:t._$s(1,"f",{forIndex:a,keyIndex:1,key:s+"_1"}),staticClass:t._$s("3-"+r,"sc","watermark-img"),style:t._$s("3-"+r,"s",{opacity:t.opacity}),attrs:{src:t._$s("3-"+r,"a-src",t.imgUrl),_i:"3-"+r}}):t._e()]}))],2)},a=[]},fad7:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return s}));var s={customNavbar:i("6473").default,uvPicker:i("0f37").default},a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","addWe"),attrs:{_i:0}},[i("custom-navbar",{attrs:{title:"\u5e73\u53f0\u81ea\u8425\u9879\u76ee\u5408\u4f5c","show-back":!0,"title-color":"#000","background-color":"#FFFFFF",_i:1}}),i("view",{staticClass:t._$s(2,"sc","addWe-tip"),attrs:{_i:2}},[i("image",{staticClass:t._$s(3,"sc","addWe-tip-img"),attrs:{_i:3}}),i("text")]),i("view",{staticClass:t._$s(5,"sc","addWe-form"),attrs:{_i:5}},[i("view",{staticClass:t._$s(6,"sc","addWe-form-title"),attrs:{_i:6}},[i("text")]),i("view",{staticClass:t._$s(8,"sc","form-item"),attrs:{_i:8}},[i("text",{staticClass:t._$s(9,"sc","form-item-text"),attrs:{_i:9}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.queryData.name,expression:"queryData.name"}],attrs:{placeholder:t._$s(10,"a-placeholder","\u8bf7\u8f93\u5165\u771f\u5b9e\u59d3\u540d"),_i:10},domProps:{value:t._$s(10,"v-model",t.queryData.name)},on:{input:function(e){e.target.composing||t.$set(t.queryData,"name",e.target.value)}}})]),i("view",{staticClass:t._$s(11,"sc","form-item"),attrs:{_i:11}},[i("text",{staticClass:t._$s(12,"sc","form-item-text"),attrs:{_i:12}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.queryData.phone,expression:"queryData.phone"}],attrs:{placeholder:t._$s(13,"a-placeholder","\u8bf7\u8f93\u5165\u8054\u7cfb\u65b9\u5f0f"),_i:13},domProps:{value:t._$s(13,"v-model",t.queryData.phone)},on:{input:function(e){e.target.composing||t.$set(t.queryData,"phone",e.target.value)}}})]),i("view",{staticClass:t._$s(14,"sc","form-item"),attrs:{_i:14}},[i("text",{staticClass:t._$s(15,"sc","form-item-text"),attrs:{_i:15}}),i("input",{directives:[{name:"model",rawName:"v-model",value:t.queryData.address,expression:"queryData.address"}],attrs:{placeholder:t._$s(16,"a-placeholder","\u8bf7\u8f93\u5165\u6240\u5728\u5730"),_i:16},domProps:{value:t._$s(16,"v-model",t.queryData.address)},on:{input:function(e){e.target.composing||t.$set(t.queryData,"address",e.target.value)}}})]),i("view",{staticClass:t._$s(17,"sc","form-item"),attrs:{_i:17}},[i("text",{staticClass:t._$s(18,"sc","form-item-text"),attrs:{_i:18}}),t._$s(19,"i","user"!=t.artisanType)?i("view",{staticClass:t._$s(19,"sc","form-item-right"),attrs:{_i:19}},[i("text",{staticClass:t._$s(20,"sc","text2"),attrs:{_i:20}},[t._v(t._$s(20,"t0-0",t._s(t.info[t.artisanType].name)))]),i("image",{staticClass:t._$s(21,"sc","arrow-right"),attrs:{_i:21}})]):i("view",{staticClass:t._$s(22,"sc","form-item-right"),attrs:{_i:22},on:{click:t.openPicker}},[i("text",{staticClass:t._$s(23,"sc","text1"),class:t._$s(23,"c",{text2:t.selectValue}),attrs:{_i:23}},[t._v(t._$s(23,"t0-0",t._s(t.selectValue||"\u8bf7\u9009\u62e9")))]),i("image",{staticClass:t._$s(24,"sc","arrow-right"),attrs:{_i:24}})])])]),i("uv-picker",{ref:"picker",attrs:{columns:t.columns,_i:25},on:{confirm:t.confirm}}),i("view",{staticClass:t._$s(26,"sc","agreement-footer"),attrs:{_i:26}},[i("view",{staticClass:t._$s(27,"sc","agreement-btn"),attrs:{_i:27},on:{click:t.submit}},[t._v(t._$s(27,"t0-0",t._s(t.detailId?"\u8fd4\u56de":"\u63d0\u4ea4\u7533\u8bf7")))])])],1)},r=[]},fc57:function(t,e,i){"use strict";i.r(e);var s=i("0221"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},fc86:function(t,e,i){"use strict";i.r(e);var s=i("0b15"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},fc8d:function(t,e,i){"use strict";i.d(e,"b",(function(){return s})),i.d(e,"c",(function(){return a})),i.d(e,"a",(function(){}));var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("view",{staticClass:t._$s(0,"sc","order-card"),attrs:{_i:0},on:{click:t.goDetail}},[i("view",{staticClass:t._$s(1,"sc","orderNumBox"),attrs:{_i:1}},[i("view",{staticClass:t._$s(2,"sc","order-id white-space-nowrap"),attrs:{_i:2}},[t._v(t._$s(2,"t0-0",t._s(t.dataItem.number)))]),t._$s(3,"i",t.showState)?i("view",{staticClass:t._$s(3,"sc","stateText"),class:t._$s(3,"c",{stateText2:t.dataItem.state>4&&7!==t.dataItem.state,stateText3:7===t.dataItem.state}),attrs:{_i:3}},[t._v(t._$s(3,"t0-0",t._s(t.stateText)))]):t._e()]),i("view",{staticClass:t._$s(4,"sc","service-container"),attrs:{_i:4},on:{click:function(e){return t.$emit("goOrderDetail",t.dataItem)}}},[i("image",{staticClass:t._$s(5,"sc","service-img"),attrs:{src:t._$s(5,"a-src",t.photo[0]),_i:5}}),i("view",{staticClass:t._$s(6,"sc","service-info"),attrs:{_i:6}},[i("view",{staticClass:t._$s(7,"sc","topInfo"),attrs:{_i:7}},[i("view",{staticClass:t._$s(8,"sc","price_title"),attrs:{_i:8}},[i("view",{staticClass:t._$s(9,"sc","service-type white-space-nowrap"),attrs:{_i:9}},[t._v(t._$s(9,"t0-0",t._s(t.dataItem.title)))])]),i("view",{staticClass:t._$s(10,"sc","service-address"),attrs:{_i:10}},[t._v(t._$s(10,"t0-0",t._s(t.dataItem.add_time)))])]),i("view",{staticClass:t._$s(11,"sc","service-price"),attrs:{_i:11}},[i("text"),t._v(t._$s(11,"t1-0",t._s(Number(t.dataItem.order_money))))])])]),i("view",{staticClass:t._$s(13,"sc","time-info"),attrs:{_i:13}},[i("text"),t._v(t._$s(13,"t1-0",t._s(t.useTime)))]),t._$s(15,"i",t.dataItem.state>1&&t.dataItem.state<5)?i("view",{staticClass:t._$s(15,"sc","button-group"),attrs:{_i:15}},[t._$s(16,"i",2==t.dataItem.state||3==t.dataItem.state)?i("view",{staticClass:t._$s(16,"sc","btn cancel-btn"),attrs:{_i:16},on:{click:function(e){return e.stopPropagation(),t.emitCancel(e)}}}):t._e(),t._$s(17,"i",2==t.dataItem.state)?i("view",{staticClass:t._$s(17,"sc","btn accept-btn"),attrs:{_i:17},on:{click:function(e){return e.stopPropagation(),t.emitAccept(e)}}}):t._e(),t._$s(18,"i",3==t.dataItem.state)?i("view",{staticClass:t._$s(18,"sc","btn accept-btn"),attrs:{_i:18},on:{click:function(e){return e.stopPropagation(),t.emitStart(e)}}}):t._e(),t._$s(19,"i",4==t.dataItem.state)?i("view",{staticClass:t._$s(19,"sc","btn accept-btn"),attrs:{_i:19},on:{click:function(e){return e.stopPropagation(),t.emitDone(e)}}}):t._e()]):t._e()])},a=[]},fcb2:function(t,e,i){"use strict";i.r(e);var s=i("3b58"),a=i("9e5b");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},fd7d:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=s(i("12f9")),r=s(i("8547")),c=s(i("67f5")),n={name:"uv-input",mixins:[a.default,r.default,c.default],data:function(){return{innerValue:"",focused:!1,innerFormatter:function(t){return t}}},created:function(){this.innerValue=this.value},watch:{value:function(t){this.innerValue=t},modelValue:function(t){this.innerValue=t}},computed:{isShowClear:function(){var t=this.clearable,e=this.readonly,i=this.focused,s=this.innerValue;return!!t&&!e&&!!i&&""!==s},inputClass:function(){var t=[],e=this.border,i=(this.disabled,this.shape);return"surround"===e&&(t=t.concat(["uv-border","uv-input--radius"])),t.push("uv-input--".concat(i)),"bottom"===e&&(t=t.concat(["uv-border-bottom","uv-input--no-radius"])),t.join(" ")},wrapperStyle:function(){var t={};return this.disabled&&(t.backgroundColor=this.disabledColor),"none"===this.border?t.padding="0":(t.paddingTop="6px",t.paddingBottom="6px",t.paddingLeft="9px",t.paddingRight="9px"),this.$uv.deepMerge(t,this.$uv.addStyle(this.customStyle))},inputStyle:function(){var t={color:this.color,fontSize:this.$uv.addUnit(this.fontSize),textAlign:this.inputAlign};return(this.disabled||this.readonly)&&(t["pointer-events"]="none"),t}},methods:{setFormatter:function(t){this.innerFormatter=t},onInput:function(t){var e=this,i=t.detail||{},s=i.value,a=void 0===s?"":s,r=this.formatter||this.innerFormatter,c=r(a);this.innerValue=a,this.$nextTick((function(){e.innerValue=c,e.valueChange()}))},onBlur:function(t){var e=this;this.$emit("blur",t.detail.value),this.$uv.sleep(100).then((function(){e.focused=!1})),this.$uv.formValidate(this,"blur")},onFocus:function(t){this.focused=!0,this.$emit("focus")},onConfirm:function(t){this.$emit("confirm",this.innerValue)},onkeyboardheightchange:function(t){this.$emit("keyboardheightchange",t)},valueChange:function(){var t=this;this.isClear&&(this.innerValue="");var e=this.innerValue;this.$nextTick((function(){t.$emit("input",e),t.$emit("update:modelValue",e),t.$emit("change",e),t.$uv.formValidate(t,"change")}))},onClear:function(){var t=this;this.innerValue="",this.isClear=!0,this.$uv.sleep(200).then((function(e){t.isClear=!1})),this.$nextTick((function(){t.$emit("clear"),t.valueChange()}))},clickHandler:function(){}}};e.default=n},fdad:function(t,e,i){"use strict";i.r(e);var s=i("2e0a"),a=i("4a25");for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);var c=i("828b"),n=Object(c["a"])(a["default"],s["b"],s["c"],!1,null,null,null,!1,s["a"],void 0);e["default"]=n.exports},fe87:function(t,e,i){"use strict";i.r(e);var s=i("315b"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},fe95:function(t,e,i){"use strict";i.r(e);var s=i("1ab0"),a=i.n(s);for(var r in s)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return s[t]}))}(r);e["default"]=a.a},ff0e:function(t,e,i){"use strict";var s=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a,r,c=s(i("7ca3"));function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,s)}return i}var o={props:function(t){for(var e=1;e ")])],1)],1)],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._$g(12,"i")?i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u66f4\u591a\u63a5\u5355\u8bbe\u7f6e")]):t._e(),i("uni-view",{staticClass:t._$g(13,"sc"),class:t._$g(13,"c"),attrs:{_i:13},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g(14,"i")?i("v-uni-text",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v("\u63a5\u5355")]):t._e(),i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}}),t._$g(16,"i")?i("v-uni-text",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._v("\u4e0d\u63a5\u5355")]):t._e()],1)],1),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._$g(18,"i")?i("uni-view",{staticClass:t._$g(18,"sc"),class:t._$g(18,"c"),attrs:{_i:18},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v("\u7b49\u5f85\u786e\u8ba4\u8ba2\u5355")]),t._$g(20,"i")?i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v(t._$g(20,"t0-0"))]):t._e()],1):t._e(),i("uni-view",{staticClass:t._$g(21,"sc"),class:t._$g(21,"c"),attrs:{_i:21},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v("\u5f85\u670d\u52a1\u8ba2\u5355")]),t._$g(23,"i")?i("v-uni-text",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v(t._$g(23,"t0-0"))]):t._e()],1),i("uni-view",{staticClass:t._$g(24,"sc"),class:t._$g(24,"c"),attrs:{_i:24},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v("\u5f85\u5b8c\u6210\u8ba2\u5355")]),t._$g(26,"i")?i("v-uni-text",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[t._v(t._$g(26,"t0-0"))]):t._e()],1)],1),t._$g(27,"i")?i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},t._l(t._$g(28,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("28-"+r,"sc"),attrs:{_i:"28-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("29-"+r,"sc"),attrs:{_i:"29-"+r}},[i("v-uni-text",{staticClass:t._$g("30-"+r,"sc"),attrs:{_i:"30-"+r}},[t._v(t._$g("30-"+r,"t0-0"))]),i("v-uni-image",{staticClass:t._$g("31-"+r,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:"31-"+r}})],1),i("uni-view",{staticClass:t._$g("32-"+r,"sc"),attrs:{_i:"32-"+r}},[t._$g("33-"+r,"i")?i("v-uni-text",{staticClass:t._$g("33-"+r,"sc"),attrs:{_i:"33-"+r}},[t._v("\u5230\u5bb6\u5730\u5740\uff1a"+t._$g("33-"+r,"t0-0"))]):t._e(),t._$g("34-"+r,"i")?i("v-uni-text",{staticClass:t._$g("34-"+r,"sc"),attrs:{_i:"34-"+r}},[t._v("\u5230\u5bb6\u65f6\u95f4\uff1a"+t._$g("34-"+r,"t0-0"))]):t._e(),i("v-uni-text",{staticClass:t._$g("35-"+r,"sc"),attrs:{_i:"35-"+r}},[t._v("\u8ba2\u5355\u7f16\u53f7\uff1a"+t._$g("35-"+r,"t0-0"))])],1),i("uni-view",{staticClass:t._$g("36-"+r,"sc"),attrs:{_i:"36-"+r}},[t._$g("37-"+r,"i")?i("uni-view",{staticClass:t._$g("37-"+r,"sc"),attrs:{_i:"37-"+r},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g("38-"+r,"sc"),attrs:{_i:"38-"+r}},[t._v("\u53d6\u6d88\u8ba2\u5355")])],1):t._e(),t._$g("39-"+r,"i")?i("uni-view",{staticClass:t._$g("39-"+r,"sc"),attrs:{_i:"39-"+r},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g("40-"+r,"sc"),attrs:{_i:"40-"+r}},[t._v("\u786e\u8ba4\u8ba2\u5355")])],1):t._e(),t._$g("41-"+r,"i")?i("uni-view",{staticClass:t._$g("41-"+r,"sc"),attrs:{_i:"41-"+r},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g("42-"+r,"sc"),attrs:{_i:"42-"+r}},[t._v("\u5f00\u59cb\u670d\u52a1")])],1):t._e(),t._$g("43-"+r,"i")?i("uni-view",{staticClass:t._$g("43-"+r,"sc"),attrs:{_i:"43-"+r},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g("44-"+r,"sc"),attrs:{_i:"44-"+r}},[t._v("\u670d\u52a1\u5b8c\u6210")])],1):t._e()],1)],1)})),1):i("uni-view",{staticClass:t._$g(45,"sc"),attrs:{_i:45}},[i("v-uni-text",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[t._v("\u6682\u65e0\u6570\u636e...")])],1),i("serviceCodeInput",{attrs:{_i:47},on:{close:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}}})],1)},r=[]},2028:function(t,e,i){"use strict";i.r(e);var a=i("0003"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},2030:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("searchBox",{attrs:{_i:2},on:{confirm:function(e){return t.$handleViewEvent(e)},search:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(2,"v-model"),callback:function(){},expression:"queryData.title"}}),i("serviecFirstTab",{attrs:{_i:3},on:{"tab-click":function(e){return t.$handleViewEvent(e)}}}),i("CommonList",{ref:"groupRef",attrs:{_i:4},scopedSlots:t._u([{key:"listData",fn:function(e,a,n){e.list;return t._l(a._$g("6-"+n,"f"),(function(t,e,a,r){return i("shopCard",{key:t,attrs:{_i:"6-"+n+r}})}))}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"8-"+a}})]}}])})],1)},r=[]},2077:function(t,e,i){"use strict";i.r(e);var a=i("2567"),n=i("fe95");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("e98a");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"8acedda2",null,!1,a["a"],void 0);e["default"]=o.exports},2096:function(t,e,i){"use strict";i.r(e);var a=i("aba5"),n=i("e711");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("4cd1");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"4bbef9f5",null,!1,a["a"],void 0);e["default"]=o.exports},"209c":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uniPopup:i("c3a6").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-popup",{ref:"popup",staticStyle:{"z-index":"99999"},attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("v-uni-image",{staticClass:t._$g(2,"sc"),attrs:{src:"/static/images/upload/bj.png",mode:"aspectFit",_i:2}}),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u53d1\u73b0\u65b0\u7248\u672c")]),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("v"+t._$g(6,"t0-0")+"\u5df2\u53d1\u5e03\uff0c\u63a8\u8350\u66f4\u65b0")])],1),t._$g(7,"i")?i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v("\u66f4\u65b0\u5185\u5bb9")]):t._e(),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._$g(9,"i")?i("v-uni-rich-text",{attrs:{nodes:t._$g(9,"a-nodes"),_i:9}}):t._e()],1),t._$g(10,"i")?i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u7a0d\u540e\u66f4\u65b0")])],1),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("v-uni-text",{staticClass:t._$g(14,"sc"),attrs:{_i:14},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u7acb\u5373\u66f4\u65b0")])],1)],1):t._$g(15,"e")?i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v("\u7acb\u5373\u66f4\u65b0")])],1)],1):t._e(),t._$g(18,"i")?i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("uni-view",{staticClass:t._$g(20,"sc"),style:t._$g(20,"s"),attrs:{_i:20}}),i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v(" "+t._$g(21,"t0-0")+"% ")])],1),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v(" \u65b0\u7248\u672c\u6b63\u5728\u52aa\u529b\u66f4\u65b0\u4e2d\uff0c\u8bf7\u8010\u5fc3\u7b49\u5f85 ")])],1):t._e()],1)],1)],1)},r=[]},"20c8":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".complaint-item{margin:24rpx;padding:24rpx;background-color:#fff;border-radius:16rpx;position:relative}.way{font-size:28rpx;color:#333}.date,.reason{font-size:24rpx;color:#999}.box{margin-bottom:8rpx}.images{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;padding-bottom:24rpx;border-bottom:2rpx solid #eee}.img{width:198rpx;height:198rpx;background-color:#eee;border-radius:20rpx}.handle-btns{display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center;padding-top:24rpx}.handle-btn{width:140rpx;height:56rpx;line-height:56rpx;text-align:center;border:2rpx solid #eee;border-radius:28rpx;margin-left:20rpx}.handle-text{font-size:28rpx;color:#333}.state{position:absolute;top:24rpx;right:24rpx}.state-text{font-size:28rpx;font-weight:700;color:#333}.nothings-box{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:280rpx 0 0}.nothings-text{font-size:32rpx;font-weight:500;color:#999;text-align:center;font-style:italic}",""]),t.exports=e},2137:function(t,e,i){"use strict";i.r(e);var a=i("bdcd"),n=i("956b");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("d837");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"5eb2fa22",null,!1,a["a"],void 0);e["default"]=o.exports},2153:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{directives:[{name:"show",rawName:"v-show",value:t._$g(1,"v-show"),expression:"_$g(1,'v-show')"}],staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("custom-navbar",{attrs:{_i:3}}),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._$g(6,"i")?i("v-uni-image",{staticClass:t._$g(6,"sc"),attrs:{src:t._$g(6,"a-src"),mode:"aspectFill",_i:6}}):t._e(),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(t._$g(8,"t0-0"))]),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u6b22\u8fce\u4f7f\u7528\u7f8e\u878d\u878d\u624b\u827a\u4eba")])],1)],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v(" \u4e2a\u4eba\u4e2d\u5fc3")]),i("v-uni-image",{staticClass:t._$g(12,"sc"),attrs:{src:"/static/images/icons/right_gray.png",_i:12}})],1)],1)],1),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("v-uni-text",{staticClass:t._$g(15,"sc"),attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u66f4\u591a\u63a5\u5355\u8bbe\u7f6e")]),i("v-uni-image",{staticClass:t._$g(16,"sc"),attrs:{src:"/static/images/icons/right_gray2.png",_i:16}})],1),i("uni-view",{staticClass:t._$g(17,"sc"),class:t._$g(17,"c"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g(18,"i")?i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\u63a5\u5355")]):t._e(),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}}),t._$g(20,"i")?i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v("\u4e0d\u63a5\u5355")]):t._e()],1)],1),i("uni-view",{staticClass:t._$g(21,"sc"),style:t._$g(21,"s"),attrs:{_i:21}},[i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[i("uni-view",{staticClass:t._$g(23,"sc"),class:t._$g(23,"c"),attrs:{_i:23},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[t._v("\u7528\u6237\u8ba2\u5355")]),i("uni-view",{staticClass:t._$g(25,"sc"),style:t._$g(25,"s"),attrs:{_i:25}})],1),i("uni-view",{staticClass:t._$g(26,"sc"),class:t._$g(26,"c"),attrs:{_i:26},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v("\u81ea\u8425\u8ba2\u5355")]),i("uni-view",{staticClass:t._$g(28,"sc"),style:t._$g(28,"s"),attrs:{_i:28}})],1),i("uni-view",{staticClass:t._$g(29,"sc"),class:t._$g(29,"c"),attrs:{_i:29},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[t._v("\u5546\u5bb6\u8ba2\u5355")]),i("uni-view",{staticClass:t._$g(31,"sc"),style:t._$g(31,"s"),attrs:{_i:31}})],1),i("uni-view",{staticClass:t._$g(32,"sc"),class:t._$g(32,"c"),attrs:{_i:32},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[t._v("\u5de5\u65f6\u8ba2\u5355")]),i("uni-view",{staticClass:t._$g(34,"sc"),style:t._$g(34,"s"),attrs:{_i:34}})],1)],1),i("v-uni-scroll-view",{staticClass:t._$g(35,"sc"),attrs:{"scroll-x":"true","scroll-with-animation":!0,_i:35}},[i("uni-view",{staticClass:t._$g(36,"sc"),class:t._$g(36,"c"),attrs:{_i:36},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v("\u5f85\u63a5\u5355: "+t._$g(37,"t0-0")+"\u5355")])],1),i("uni-view",{staticClass:t._$g(38,"sc"),class:t._$g(38,"c"),attrs:{_i:38},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v("\u5f85\u5f00\u59cb:"+t._$g(39,"t0-0")+"\u5355")])],1),i("uni-view",{staticClass:t._$g(40,"sc"),class:t._$g(40,"c"),attrs:{_i:40},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[t._v("\u5f85\u5b8c\u6210:"+t._$g(41,"t0-0")+"\u5355")])],1)],1)],1),t._$g(42,"i")?i("uni-view",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},t._l(t._$g(43,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("43-"+r,"sc"),attrs:{_i:"43-"+r}},[t._$g("44-"+r,"i")?i("OrderCard",{attrs:{_i:"44-"+r},on:{cancel:function(e){return t.$handleViewEvent(e)},accept:function(e){return t.$handleViewEvent(e)},start:function(e){return t.$handleViewEvent(e)},done:function(e){return t.$handleViewEvent(e)},goOrderDetail:function(e){return t.$handleViewEvent(e)}}}):i("WorkHourOrderCard",{attrs:{_i:"45-"+r},on:{cancel:function(e){return t.$handleViewEvent(e)},accept:function(e){return t.$handleViewEvent(e)},start:function(e){return t.$handleViewEvent(e)},done:function(e){return t.$handleViewEvent(e)},goOrderDetail:function(e){return t.$handleViewEvent(e)}}})],1)})),1):i("uni-view",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[i("v-uni-text",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[t._v("\u6682\u65e0\u6570\u636e...")])],1),i("serviceCodeInput",{attrs:{_i:48},on:{close:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}}})],1),i("MyPage",{directives:[{name:"show",rawName:"v-show",value:t._$g(49,"v-show"),expression:"_$g(49,'v-show')"}],attrs:{_i:49}}),i("MyTabBar",{attrs:{_i:50},on:{change:function(e){return t.$handleViewEvent(e)}}})],1)},r=[]},2156:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".service-list[data-v-5ffce9d0]{padding:0;display:flex;flex-direction:column;gap:20rpx}.service-item[data-v-5ffce9d0]{position:relative;display:flex;align-items:flex-start;background-color:#fff;border-radius:20rpx}.avatar_box[data-v-5ffce9d0]{width:172rpx;height:172rpx;background:#935858;border-radius:12rpx;overflow:hidden;margin-right:30rpx;position:relative}.avatar_box .tag_kind[data-v-5ffce9d0]{position:absolute;left:0;top:0;z-index:100;text-align:center;padding:0 8rpx;height:38rpx;line-height:38rpx;background:linear-gradient(124deg,#f52540,#e8101e);border-radius:12rpx 2rpx 12rpx 2rpx;font-size:22rpx;color:#fff}.avatar[data-v-5ffce9d0]{width:172rpx;height:172rpx}.item-right[data-v-5ffce9d0]{flex:1;width:100%;display:flex;flex-direction:column;justify-content:center}.top-info[data-v-5ffce9d0]{display:flex;justify-content:space-between;align-items:center;margin-bottom:7rpx;gap:61rpx}.name[data-v-5ffce9d0]{font-weight:500;font-size:32rpx;color:#333;display:flex;align-items:center}.distance[data-v-5ffce9d0]{display:flex;align-items:center;gap:6rpx;font-family:DINPro;font-weight:500;font-size:24rpx;color:#666}.position[data-v-5ffce9d0]{width:19rpx;height:21rpx}.services[data-v-5ffce9d0]{display:flex;gap:10rpx 0;flex-wrap:wrap;margin-bottom:26rpx}.service-tag[data-v-5ffce9d0]{font-size:26rpx;color:#666;display:flex;align-items:center}.service-tag .price[data-v-5ffce9d0]{font-weight:500;font-size:26rpx;color:#e8101e}.service-tag .service_time[data-v-5ffce9d0]{font-size:26rpx;color:#666}.service-tag .split[data-v-5ffce9d0]{width:2rpx;height:20rpx;background:#666;margin:0 10rpx}.time_box[data-v-5ffce9d0]{width:100%;display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:10rpx}.time[data-v-5ffce9d0]{font-size:26rpx;color:#999}.time .num[data-v-5ffce9d0]{font-family:DINPro;font-weight:400;font-size:28rpx;color:#999}.order-btn[data-v-5ffce9d0]{width:144rpx;height:60rpx;line-height:60rpx;background:linear-gradient(107deg,#f84c63,#e8101e);border-radius:30rpx;text-align:center;color:#fff;font-size:28rpx}.service-title-type[data-v-5ffce9d0]{width:56rpx;margin-right:4rpx}",""]),t.exports=e},"21c8":function(t,e,i){"use strict";i.r(e);var a=i("4789"),n=i("09d9");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("242f");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"21fe":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"221d":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uniPopup:i("c3a6").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{attrs:{_i:0}},[i("uni-popup",{ref:"popup",attrs:{_i:1},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._v(t._$g(3,"t0-0")),i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:"/static/images/wallet/close.png",_i:4},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(t._$g(5,"t0-0"))])],1)],1)],1)},r=[]},2251:function(t,e,i){"use strict";i.r(e);var a=i("b4e4"),n=i("c11a");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("b523");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"5d0f0426",null,!1,a["a"],void 0);e["default"]=o.exports},"227c":function(t,e,i){"use strict";i.r(e);var a=i("26c0"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},2320:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,uvCountDown:i("b054").default,agreeRadio:i("a6d8").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:"/static/images/shop/pay_icon.png",mode:"aspectFit",_i:3}}),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("v-uni-text",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v("\xa5")]),i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v(t._$g(6,"t0-0"))])],1),t._$g(7,"i")?i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v("\u652f\u4ed8\u5269\u4f59\u65f6\u95f4: "),i("uv-count-down",{attrs:{_i:8},on:{finish:function(e){return t.$handleViewEvent(e)}}})],1):t._e()],1),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u9009\u62e9\u652f\u4ed8\u65b9\u5f0f")]),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},t._l(t._$g(12,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("12-"+r,"sc"),attrs:{_i:"12-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("13-"+r,"sc"),attrs:{_i:"13-"+r}},[i("v-uni-image",{staticClass:t._$g("14-"+r,"sc"),attrs:{src:t._$g("14-"+r,"a-src"),mode:"aspectFit",_i:"14-"+r}}),i("v-uni-text",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r}},[t._v(t._$g("15-"+r,"t0-0"))])],1),i("agree-radio",{attrs:{_i:"16-"+r}})],1)})),1)],1),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u7acb\u5373\u652f\u4ed8")])],1)],1)},r=[]},2329:function(t,e,i){var a=i("cd43");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("dd1c6604",a,!0,{sourceMap:!1,shadowMode:!1})},2334:function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("143f");e=a(!1);var s=n(r);e.push([t.i,".container{position:relative;background-image:url("+s+");background-size:100% auto;background-position:top;background-repeat:no-repeat}.container .container-tip{width:710rpx;height:311rpx;background:#fff;border-radius:20rpx;margin:0 auto}.container .container-tip .tip-title{font-weight:500;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;padding-top:46rpx;margin-left:6rpx}.container .container-tip .tip-title .tip-icon{width:32rpx;height:32rpx;margin-right:8rpx}.container .container-tip .tip-text{font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;padding:18rpx 24rpx 0 20rpx}.page-container{padding:0rpx 20rpx 0 20rpx}.page-container .user-info{display:flex;align-items:center;margin-bottom:20rpx;background-color:#fff;padding:20rpx;border-radius:8px}.page-container .user-info .avatar{width:56px;height:56px;border-radius:50%;margin-right:10px}.page-container .user-info .user-detail{flex:1}.page-container .user-info .user-detail .user-name{font-weight:500;font-size:36rpx;color:#333;line-height:50rpx;text-align:left;font-style:normal}.page-container .user-info .user-detail .enter-btn{padding:0 20rpx;height:50rpx;border-radius:25rpx;border:1rpx solid rgba(232,16,30,.28);font-weight:400;font-size:24rpx;color:#e8101e;text-align:right;font-style:normal}.page-container .user-info .user-detail .tags{font-weight:400;font-size:24rpx;color:#999;line-height:33rpx;text-align:left;font-style:normal;margin-top:18rpx;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:500rpx}.page-container .service-list{background-color:#fff;border-radius:20rpx;padding:30rpx 20rpx;margin-bottom:20rpx}.page-container .service-list .marketing-center{display:flex;justify-content:space-between;align-items:center;margin-bottom:30rpx}.page-container .service-list .marketing-center .mc-line{width:6rpx;height:22rpx;background:#e8101e;border-radius:4rpx;margin-right:10rpx}.page-container .service-list .marketing-center .mc-title{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.page-container .service-list .marketing-center .select-btn{font-weight:400;font-size:24rpx;color:#666;line-height:32rpx;text-align:right;font-style:normal}.page-container .service-list .marketing-center .select-btn .select-btn-img{width:9rpx;height:18rpx;margin-left:8rpx}.page-container .service-list .service-title{font-weight:400;font-size:26rpx;color:#5b5b5b;line-height:37rpx;text-align:left;font-style:normal;padding-bottom:10rpx;border-bottom:1rpx solid #f1f1f1;margin-bottom:30rpx}.page-container .service-list .service-item{display:flex;align-items:center;margin-top:30rpx}.page-container .service-list .service-item .item-index{font-weight:500;font-size:18rpx;color:#e8101e;text-align:left;font-style:normal;width:30rpx;height:30rpx;background:#fdf0eb;border-radius:50%;margin-right:8px}.page-container .service-list .service-item .item-info{flex:1}.page-container .service-list .service-item .item-info .item-name{font-weight:400;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:500rpx}.page-container .service-list .service-item .item-duration{font-weight:400;font-size:26rpx;color:#8a8a8a;line-height:37rpx;text-align:left;font-style:normal}.agreement-footer{padding:20rpx 20rpx 50rpx 20rpx;position:fixed;left:0;right:0;bottom:0;background-color:#fff}.agreement-footer .agreement-btn{width:710rpx;height:98rpx;background:#e8101e;border-radius:49rpx;font-weight:400;font-size:38rpx;color:#fff;line-height:53rpx;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:center} .right-area{width:120rpx!important;height:auto!important;display:flex;justify-content:flex-end}.navbar-right{display:flex;flex-wrap:wrap;flex-direction:column;align-content:center}.navbar-right .navbar-right-img{width:32rpx;height:32rpx;margin:0 auto 4rpx auto}.navbar-right .navbar-right-text{font-weight:400;font-size:16rpx;color:#333;line-height:22rpx;text-align:left;font-style:normal;white-space:nowrap}.searchBox{padding:18rpx 30rpx 30rpx 30rpx} .navbar-content .title{margin-left:20rpx!important}",""]),t.exports=e},"236c":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$g(0,"i")?i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u63d0\u73b0\u89c4\u5219")]),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(6,"sc"),attrs:{src:"/static/images/close.png",mode:"aspectFit",_i:6}})],1)],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u53d1\u8d77\u63d0\u73b0\u7533\u8bf7\uff0c\u540e\u53f0\u5ba1\u6838\u901a\u8fc7\uff0c\u7ebf\u4e0b\u8fdb\u884c\u6253\u6b3e")])],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u8bf7\u60a8\u786e\u8ba4\u7ed1\u5b9a\u7684\u652f\u4ed8\u5b9d\u3001\u5fae\u4fe1\u53f7\u7684\u51c6\u786e\u6027\u3002")])],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("v-uni-text",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v("\u540e\u53f0\u5c06\u6309\u7167\u60a8\u7ed1\u5b9a\u7684\u63d0\u73b0\u8d26\u6237\u8fdb\u884c\u8fdb\u884c\u8f6c\u8d26\u3002")])],1),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("v-uni-text",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v("\u5982\u56e0\u63d0\u4ea4\u7684\u4fe1\u606f\u6709\u8bef\u5bfc\u81f4\u7684\u8f6c\u8d26\u5931\u8d25\u6216\u8f6c\u9519\u8d26\u6237\uff0c\u5c06\u7531\u7528\u6237\u81ea\u884c\u627f\u62c5\uff0c\u5e73\u53f0\u4e0d\u627f\u62c5\u4efb\u4f55\u8d23\u4efb\u3002")])],1)],1)],1)],1):t._e()},n=[]},"236e":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".goods-list[data-v-4bbef9f5]{display:flex;flex-wrap:wrap;justify-content:space-between;padding:20rpx;background:#fff;gap:18rpx}.goods-list .goods-item[data-v-4bbef9f5]{width:346rpx;position:relative;background:#fff;border-radius:20rpx;overflow:hidden}.goods-list .goods-item .self-tag[data-v-4bbef9f5]{position:absolute;top:0rpx;left:0rpx;width:80rpx;height:49rpx;z-index:1;background:linear-gradient(124deg,#f52540,#e8101e);border-radius:20rpx 2rpx 20rpx 2rpx;font-weight:400;font-size:26rpx;color:#fff;text-align:left;font-style:normal}.goods-list .goods-item .goods-img[data-v-4bbef9f5]{width:346rpx;height:346rpx}.goods-list .goods-item .goods-name[data-v-4bbef9f5]{padding:20rpx 10rpx 8rpx 10rpx;font-weight:500;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.goods-list .goods-item .goods-footer[data-v-4bbef9f5]{display:flex;justify-content:space-between;padding:0 10rpx 20rpx 10rpx}.goods-list .goods-item .goods-footer .goods-price[data-v-4bbef9f5]{font-family:DINPro;font-weight:500;font-size:28rpx;color:#e8101e;line-height:36rpx;text-align:left;font-style:normal}.goods-list .goods-item .goods-footer .goods-sales[data-v-4bbef9f5]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:20rpx;color:#999;line-height:28rpx;text-align:left;font-style:normal}",""]),t.exports=e},2382:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".service-list[data-v-830157a2]{padding:18rpx 20rpx;display:flex;flex-direction:column;gap:20rpx}.service-item[data-v-830157a2]{box-sizing:border-box;position:relative;display:flex;align-items:flex-start;padding:20rpx;background-color:#fff;border-radius:20rpx}.avatar[data-v-830157a2]{flex-shrink:0;width:155rpx;height:154rpx;border-radius:50%;margin-right:20rpx}.item-right[data-v-830157a2]{flex:1;width:100%;display:flex;flex-direction:column;justify-content:center}.top-info[data-v-830157a2]{display:flex;justify-content:space-between;align-items:center;margin-bottom:7rpx;gap:61rpx}.name[data-v-830157a2]{font-weight:500;font-size:32rpx;color:#333}.distance[data-v-830157a2]{display:flex;align-items:center;gap:6rpx;font-family:DINPro;font-weight:500;font-size:24rpx;color:#666}.position[data-v-830157a2]{width:19rpx;height:21rpx}.services[data-v-830157a2]{display:flex;width:100%;gap:10rpx 0;max-width:420rpx;overflow-x:auto;margin-bottom:7rpx}.service-tag[data-v-830157a2]{white-space:nowrap;font-size:26rpx;color:#999;display:flex;align-items:center}.service-tag .split[data-v-830157a2]{width:1rpx;height:24rpx;background:#d8d8d8;margin:0 10rpx}.time_box[data-v-830157a2]{width:100%;display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:10rpx}.flexEnd[data-v-830157a2]{justify-content:flex-end}.time[data-v-830157a2]{background:#fdf3f5;border-radius:20rpx;font-size:22rpx;color:#e8101e;padding:2rpx 12rpx}.no-time1[data-v-830157a2]{background:rgba(0,0,0,.1);border-radius:20rpx;font-size:22rpx;color:#666;padding:2rpx 12rpx}.order-btn[data-v-830157a2]{padding:0rpx 30rpx;height:60rpx;line-height:60rpx;background:linear-gradient(107deg,#f84c63,#e8101e);border-radius:30rpx;text-align:center;color:#fff;font-size:28rpx}.orderBtnNo[data-v-830157a2]{background:rgba(0,0,0,.1);color:#666}",""]),t.exports=e},"23eb":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.uv-border-bottom[data-v-21c4bd17]{border-bottom-width:.5px!important;border-color:#dadbde!important;border-bottom-style:solid}uni-view[data-v-21c4bd17], uni-scroll-view[data-v-21c4bd17], uni-swiper-item[data-v-21c4bd17]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-radio[data-v-21c4bd17]{display:flex;flex-direction:row;overflow:hidden;flex-direction:row;align-items:center}.uv-radio-label--left[data-v-21c4bd17]{flex-direction:row}.uv-radio-label--right[data-v-21c4bd17]{flex-direction:row-reverse;justify-content:space-between}.uv-radio__icon-wrap[data-v-21c4bd17]{box-sizing:border-box;transition-property:border-color,background-color,color;transition-duration:.2s;color:#606266;display:flex;flex-direction:row;align-items:center;justify-content:center;color:transparent;text-align:center;font-size:20px;border-width:1px;border-color:#c8c9cc;border-style:solid}.uv-radio__icon-wrap--circle[data-v-21c4bd17]{border-radius:100%}.uv-radio__icon-wrap--square[data-v-21c4bd17]{border-radius:3px}.uv-radio__icon-wrap--checked[data-v-21c4bd17]{color:#fff;background-color:red;border-color:#2979ff}.uv-radio__icon-wrap--disabled[data-v-21c4bd17]{background-color:#ebedf0!important}.uv-radio__icon-wrap--disabled--checked[data-v-21c4bd17]{color:#c8c9cc!important}.uv-radio__label[data-v-21c4bd17]{word-wrap:break-word;margin-left:5px;margin-right:12px;color:#606266;font-size:15px}.uv-radio__label--disabled[data-v-21c4bd17]{color:#c8c9cc}.uv-radio__label-wrap[data-v-21c4bd17]{flex:1;padding-left:6px}',""]),t.exports=e},"23fd":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".search-container[data-v-120995ea]{background-color:#fafafa;display:flex;flex-direction:row;align-items:center;padding:32rpx 30rpx 20rpx 30rpx}.hao-scroll .hot-citys[data-v-120995ea]{padding:20rpx 30rpx;background-color:#fff}.hao-scroll .hot-citys__title[data-v-120995ea]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:24rpx;color:#666;line-height:40rpx;text-align:left;font-style:normal}.hao-scroll .hot-citys__citys[data-v-120995ea]{display:flex;flex-wrap:wrap;-webkit-column-gap:22rpx;column-gap:22rpx}.hao-scroll .hot-citys__citys__city[data-v-120995ea]{margin-top:20rpx;width:156rpx;height:58rpx;background:#efefef;border-radius:6rpx;display:flex;justify-content:center;align-items:center}",""]),t.exports=e},2407:function(t,e,i){"use strict";i.r(e);var a=i("947a"),n=i("01d1");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("2ceb");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"5d02cae2",null,!1,a["a"],void 0);e["default"]=o.exports},2408:function(t,e,i){"use strict";i.r(e);var a=i("086e"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"240a":function(t,e,i){"use strict";i.r(e);var a=i("c7cf"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},2414:function(t,e,i){"use strict";var a=i("ab68"),n=i.n(a);n.a},"242f":function(t,e,i){"use strict";var a=i("def9"),n=i.n(a);n.a},2435:function(t,e,i){"use strict";var a=i("1df5"),n=i.n(a);n.a},"24da":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,uvRadioGroup:i("2137").default,uvRadio:i("b3e7").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),t._$g(2,"i")?i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:"/static/images/shop/pintuan/warn.png",_i:3}}),i("v-uni-text",{attrs:{_i:4}},[t._v(t._$g(4,"t0-0"))])],1):t._e(),i("uni-view",{staticClass:t._$g(5,"sc"),class:t._$g(5,"c"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("v-uni-text",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v("\u62fc\u56e2\u540d\u79f0")]),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-input",{staticClass:t._$g(9,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u540d\u79f0","placeholder-class":"placeholder",disabled:t._$g(9,"a-disabled"),_i:9},model:{value:t._$g(9,"v-model"),callback:function(e){t.$handleVModelEvent(9,e)},expression:"formData.title"}})],1)],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("v-uni-text",{staticClass:t._$g(11,"sc"),staticStyle:{"margin-bottom":"24rpx"},attrs:{_i:11}},[t._v("\u6d3b\u52a8\u65f6\u95f4")]),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("selectActiveTime",{attrs:{_i:13},model:{value:t._$g(13,"v-model"),callback:function(){},expression:"tiemValue"}})],1)],1),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("v-uni-text",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v("\u51e0\u4eba\u56e2")]),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("v-uni-input",{staticClass:t._$g(17,"sc"),attrs:{placeholder:"\u8bf7\u8f93\u5165\u4eba\u6570","placeholder-class":"placeholder",disabled:t._$g(17,"a-disabled"),type:"number",_i:17},model:{value:t._$g(17,"v-model"),callback:function(e){t.$handleVModelEvent(17,e)},expression:"formData.person_num"}})],1),i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("*\u4eba\u6570\u8d8a\u5c11\uff0c\u6210\u56e2\u96be\u5ea6\u8d8a\u4f4e")])],1),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v("\u603b\u5f00\u56e2\u6570")]),i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("v-uni-input",{staticClass:t._$g(22,"sc"),attrs:{placeholder:"\u8bf7\u8f93\u5165\u6570\u91cf","placeholder-class":"placeholder",disabled:t._$g(22,"a-disabled"),type:"number",_i:22},model:{value:t._$g(22,"v-model"),callback:function(e){t.$handleVModelEvent(22,e)},expression:"formData.team_num"}})],1),i("v-uni-text",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v("*\u62fc\u56e2\u6d3b\u52a8\u7684\u603b\u6570\u91cf")])],1),t._$g(24,"i")?i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v("\u6d3b\u52a8\u5546\u54c1")]),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[i("v-uni-text",{attrs:{_i:27}},[t._v(" "+t._$g(27,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(28,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:28}})],1)],1):t._e(),t._$g(29,"i")?i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[i("serveCard",{attrs:{_i:30}})],1):t._e(),t._$g(31,"i")?i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[i("v-uni-text",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v("\u6d3b\u52a8\u4ef7")]),i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[i("v-uni-input",{staticClass:t._$g(34,"sc"),attrs:{placeholder:"\u8bf7\u8f93\u5165\u4ef7\u683c","placeholder-class":"placeholder",disabled:t._$g(34,"a-disabled"),type:"digit",_i:34},model:{value:t._$g(34,"v-model"),callback:function(e){t.$handleVModelEvent(34,e)},expression:"formData.price"}})],1)],1):t._e(),i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[i("v-uni-text",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[t._v("\u9650\u8d2d\u89c4\u5219")]),i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[i("uv-radio-group",{attrs:{_i:38},model:{value:t._$g(38,"v-model"),callback:function(){},expression:"formData.quota_type"}},[i("uv-radio",{attrs:{_i:39},scopedSlots:t._u([{key:"icon",fn:function(t,e,a){return[i("v-uni-image",{directives:[{name:"show",rawName:"v-show",value:e._$g("41-"+a,"v-show"),expression:"_svm._$g((\"41-\"+_si),'v-show')"}],staticClass:e._$g("41-"+a,"sc"),attrs:{src:"/static/images/shop/pintuan/yes.png",_i:"41-"+a}})]}}])}),i("uv-radio",{attrs:{_i:42},on:{change:function(e){return t.$handleViewEvent(e)}},scopedSlots:t._u([{key:"icon",fn:function(t,e,a){return[i("v-uni-image",{directives:[{name:"show",rawName:"v-show",value:e._$g("44-"+a,"v-show"),expression:"_svm._$g((\"44-\"+_si),'v-show')"}],staticClass:e._$g("44-"+a,"sc"),attrs:{src:"/static/images/shop/pintuan/yes.png",_i:"44-"+a}})]}}])})],1)],1)],1),i("uni-view",{staticClass:t._$g(45,"sc"),attrs:{_i:45}},[i("v-uni-text",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[t._v("\u6bcf\u4eba\u9650\u8d2d")]),i("uni-view",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[i("v-uni-input",{staticClass:t._$g(48,"sc"),attrs:{disabled:t._$g(48,"a-disabled"),placeholder:"\u8bf7\u8f93\u5165\u6570\u91cf","placeholder-class":"placeholder",type:"number",_i:48},model:{value:t._$g(48,"v-model"),callback:function(e){t.$handleVModelEvent(48,e)},expression:"formData.person_quota"}})],1)],1),i("uni-view",{staticClass:t._$g(49,"sc"),staticStyle:{"flex-wrap":"wrap"},attrs:{_i:49}},[i("v-uni-text",{staticClass:t._$g(50,"sc"),attrs:{_i:50}},[t._v("\u6d3b\u52a8\u65f6\u6548")]),i("uni-view",{staticClass:t._$g(51,"sc"),attrs:{_i:51}},[i("uv-radio-group",{attrs:{_i:52},model:{value:t._$g(52,"v-model"),callback:function(){},expression:"formData.time_quota"}},[i("uv-radio",{attrs:{_i:53},scopedSlots:t._u([{key:"icon",fn:function(t,e,a){return[i("v-uni-image",{directives:[{name:"show",rawName:"v-show",value:e._$g("55-"+a,"v-show"),expression:"_svm._$g((\"55-\"+_si),'v-show')"}],staticClass:e._$g("55-"+a,"sc"),attrs:{src:"/static/images/shop/pintuan/yes.png",_i:"55-"+a}})]}}])}),i("uv-radio",{attrs:{_i:56},scopedSlots:t._u([{key:"icon",fn:function(t,e,a){return[i("v-uni-image",{directives:[{name:"show",rawName:"v-show",value:e._$g("58-"+a,"v-show"),expression:"_svm._$g((\"58-\"+_si),'v-show')"}],staticClass:e._$g("58-"+a,"sc"),attrs:{src:"/static/images/shop/pintuan/yes.png",_i:"58-"+a}})]}}])}),i("uv-radio",{attrs:{_i:59},scopedSlots:t._u([{key:"icon",fn:function(t,e,a){return[i("v-uni-image",{directives:[{name:"show",rawName:"v-show",value:e._$g("61-"+a,"v-show"),expression:"_svm._$g((\"61-\"+_si),'v-show')"}],staticClass:e._$g("61-"+a,"sc"),attrs:{src:"/static/images/shop/pintuan/yes.png",_i:"61-"+a}})]}}])})],1)],1),i("uni-view",{staticClass:t._$g(62,"sc"),attrs:{_i:62}},[t._v("\u65b0\u4eba\u5f00\u56e2\u540e\uff01\u5728\u8bbe\u7f6e\u65f6\u95f4\u5185\u9080\u8bf7\u5269\u4f59\u597d\u53cb\u53c2\u56e2\u5b8c\u6210\u6210\u56e2\u3002\u82e5\u8d85\u8fc7\u8bbe\u7f6e\u65f6\u95f4\u672a\u8fbe\u6210\uff0c\u8ba2\u5355\u5c06\u81ea\u52a8\u53d6\u6d88\u3002")])],1)],1),t._$g(63,"i")?i("uni-view",{staticClass:t._$g(63,"sc"),attrs:{_i:63}},[i("uni-view",{staticClass:t._$g(64,"sc"),attrs:{_i:64},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u63d0\u4ea4 ")])],1):t._e()],1)},r=[]},2500:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("5541")),r=a(i("68ee")),s=a(i("6473")),o=a(i("d5b0")),c={data:function(){return{wxsProps:{}}},components:{filters:n.default,projectTabs:r.default,CustomNavbar:s.default,TabBar:o.default}};e.default=c},2524:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"buyManHour",data:function(){return{wxsProps:{}}},components:{}}},2546:function(t,e,i){"use strict";i.r(e);var a=i("916c"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"254e":function(t,e,i){"use strict";var a=i("1d91"),n=i.n(a);n.a},2561:function(t,e,i){"use strict";i.r(e);var a=i("b540"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},2567:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$g(0,"i")?i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[t._$g(1,"i")?i("uni-view",{staticClass:t._$g(1,"sc"),class:t._$g(1,"c"),attrs:{_i:1},on:{click:function(e){return t.$handleViewEvent(e)}}}):t._e(),i("uni-view",{staticClass:t._$g(2,"sc"),class:t._$g(2,"c"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")]),i("v-uni-text",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v(t._$g(5,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1),i("v-uni-picker-view",{staticClass:t._$g(7,"sc"),attrs:{value:t._$g(7,"a-value"),_i:7},on:{change:function(e){return t.$handleViewEvent(e)}}},t._l(t._$g(8,"f"),(function(e,a,n,r){return i("v-uni-picker-view-column",{key:e,attrs:{_i:"8-"+r}},t._l(t._$g("9-"+r,"f"),(function(e,a,n,s){return i("uni-view",{key:e,staticClass:t._$g("9-"+r+"-"+s,"sc"),attrs:{_i:"9-"+r+"-"+s}},[t._v(" "+t._$g("9-"+r+"-"+s,"t0-0")+" ")])})),1)})),1)],1)],1):t._e()},n=[]},"25a3":function(t,e,i){var a=i("a3cd");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("0f928d3c",a,!0,{sourceMap:!1,shadowMode:!1})},"25ed":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.selectSyr .selectSyr-tip{box-sizing:border-box;width:100%;padding:14rpx 20rpx;background:#fae7ec;font-weight:400;font-size:28rpx;color:#d5131f;line-height:40rpx;text-align:left;font-style:normal}.selectSyr .selectSyr-list-tip{height:130rpx;box-sizing:border-box;padding:20rpx;margin:39rpx 20rpx 0 20rpx;background:#fff1df;border-radius:20rpx;font-weight:400;font-size:26rpx;color:#ab6a21;text-align:left;font-style:normal}.selectSyr .selectSyr-list-tip .selectSyr-list-tip-icon{width:30rpx;height:26rpx;margin-right:12rpx}.selectSyr .selectSyr-list{margin-top:20rpx}.selectSyr .selectSyr-list .selectSyr-item{margin:0rpx 20rpx 20rpx 20rpx;padding:20rpx;background:#fff;border-radius:20rpx;display:flex;flex-wrap:wrap;-webkit-column-gap:20rpx;column-gap:20rpx;row-gap:15rpx}.selectSyr .selectSyr-list .selectSyr-item .selectSyr-item-photo{margin-top:15rpx;width:126rpx;height:126rpx;border-radius:50%}.selectSyr .selectSyr-list .selectSyr-item .selectSyr-item-right{flex:1;min-width:0}.selectSyr .selectSyr-list .selectSyr-item .selectSyr-item-right .selectSyr-item-right-name{margin-bottom:10rpx}.selectSyr .selectSyr-list .selectSyr-item .selectSyr-item-right .selectSyr-item-right-name .right-name-left{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.selectSyr .selectSyr-list .selectSyr-item .selectSyr-item-right .selectSyr-item-right-name .right-name-right{font-weight:400;font-size:22rpx;color:#e5616a;text-align:left;font-style:normal;gap:10rpx;padding:6rpx 10rpx;border-radius:30rpx;border:1rpx solid #e3c0c2}.selectSyr .selectSyr-list .selectSyr-item .selectSyr-item-right .selectSyr-item-right-name .right-name-right .right-name-right-img{width:10rpx;height:19rpx}.selectSyr .selectSyr-list .selectSyr-item .selectSyr-item-right .selectSyr-item-right-time{margin-bottom:4rpx;font-weight:400;font-size:24rpx;color:#666;line-height:33rpx;text-align:left;font-style:normal;gap:10rpx}.selectSyr .selectSyr-list .selectSyr-item .selectSyr-item-bottom{width:100%;padding-top:20rpx;border-top:1rpx solid #f1f1f1}.selectSyr .selectSyr-list .selectSyr-item .selectSyr-item-bottom .selectSyr-item-right-adress{display:flex;align-items:flex-start;gap:10rpx}.selectSyr .selectSyr-list .selectSyr-item .selectSyr-item-bottom .selectSyr-item-right-adress .right-adress-icon{width:24rpx;height:28rpx;margin-top:2rpx;flex-shrink:0}.selectSyr .selectSyr-list .selectSyr-item .selectSyr-item-bottom .selectSyr-item-right-adress .selectSyr-item-right-adress-text{flex:1;font-weight:400;font-size:24rpx;color:#666;line-height:33rpx;word-break:break-all;text-align:left;min-height:33rpx}.selectSyr .noSyr{margin-top:0;-webkit-transform:translateY(-53rpx);transform:translateY(-53rpx)}.right-time-icon{width:24rpx;height:24rpx;flex-shrink:0}.right-adress-icon{width:24rpx;height:28rpx;margin-top:2rpx;flex-shrink:0}.popup-container{padding:30rpx;box-sizing:border-box;width:100%;background:#fff;border-radius:30rpx 30rpx 0rpx 0rpx}.popup-container .header-bar{display:flex;justify-content:space-between;align-items:center;padding-bottom:20rpx;margin-bottom:20rpx;border-bottom:1rpx solid #f1f1f1}.popup-container .header-bar .avatar-name-wrap{display:flex;align-items:center}.popup-container .header-bar .avatar-name-wrap .avatar{width:124rpx;height:124rpx;border-radius:50%;margin-right:15rpx}.popup-container .header-bar .avatar-name-wrap .name-exp{display:flex;flex-direction:column;justify-content:center}.popup-container .header-bar .avatar-name-wrap .name-exp .name{font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:left;font-style:normal;margin-bottom:15rpx}.popup-container .header-bar .avatar-name-wrap .name-exp .exp-tag{padding:0 22rpx 0 15rpx;height:45rpx;background:#fff0f5;border-radius:23rpx;font-weight:400;font-size:26rpx;color:#dc424c;line-height:45rpx;text-align:left;font-style:normal;width:-webkit-fit-content;width:fit-content;gap:10rpx}.popup-container .header-bar .avatar-name-wrap .name-exp .exp-tag .exp-tag-icon{width:27rpx;height:24rpx}.popup-container .header-bar .cancel-btn{position:absolute;right:30rpx;top:30rpx;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:26rpx;color:#999;line-height:37rpx;text-align:left;font-style:normal}.popup-container .service-info{margin-bottom:30rpx}.popup-container .service-info .info-item{display:flex;align-items:flex-start;margin-bottom:8px}.popup-container .service-info .info-item:last-child{margin-bottom:0}.popup-container .service-info .info-item .info-text{flex:1;font-weight:400;font-size:26rpx;color:#666;line-height:35rpx;text-align:left;font-style:normal;margin-left:10rpx}.popup-container .intro-text{padding-top:25rpx;margin-bottom:100rpx;font-weight:400;font-size:26rpx;color:#666;line-height:33rpx;text-align:left;font-style:normal;position:relative}.popup-container .intro-text .intro-text-icon{position:absolute;left:0;top:0;width:72rpx;height:44rpx}.popup-container .confirm-btn{margin:0 21rpx;width:648rpx;height:94rpx;background:linear-gradient(180deg,#f52540,#e8101e);border-radius:48rpx;font-weight:400;font-size:30rpx;color:#fff;line-height:42rpx;text-align:left;font-style:normal;display:flex;justify-content:center;align-items:center}.popup-container .confirm-btn:active{opacity:.9;-webkit-transform:scale(.98);transform:scale(.98)}.popup-shop-info{display:flex;align-items:flex-start;margin-bottom:20rpx}.popup-shop-info .popup-shop-label{font-weight:400;font-size:24rpx;color:#666;line-height:33rpx;white-space:nowrap;margin-right:10rpx;margin-top:2rpx}.popup-shop-info .popup-shop-tags{flex:1;display:flex;flex-wrap:wrap;gap:8rpx}.popup-shop-info .popup-shop-tags .popup-shop-tag{padding:4rpx 12rpx;background:#f5f5f5;border-radius:10rpx;font-weight:400;font-size:24rpx;color:#666;line-height:33rpx;text-align:left}.detail-info-user__company__name{box-sizing:border-box;background:#fff5f6;border-radius:10rpx;border:1rpx solid #ffd0dc;padding-right:8rpx;display:flex;align-items:center;margin-right:21rpx;width:-webkit-fit-content;width:fit-content;margin-top:15rpx;margin-bottom:5rpx;padding:2rpx 10rpx;max-width:100%;position:relative}.detail-info-user__company__name .detail-info-user__company__name__text{font-weight:400;font-size:20rpx;color:#a7abae;text-align:left;font-style:normal;margin-right:10rpx}.detail-info-user__company__name .detail-info-user__company__name__line{font-weight:400;font-size:20rpx;color:#d2c7c7;border-radius:1rpx;text-align:left;font-style:normal;margin-right:10rpx}.detail-info-user__company__name .detail-info-user__company__name__text1{font-weight:400;font-size:20rpx;color:#666;text-align:left;font-style:normal;margin-right:10rpx;white-space:nowrap}.detail-info-user__company__name .detail-info-user__company__name__text2{font-weight:400;font-size:20rpx;color:#855151;text-align:left;font-style:normal;display:flex;align-items:center;flex-wrap:nowrap;max-width:100%;overflow:hidden}.detail-info-user__company__name .detail-info-user__company__name__text2 .detail-info-user__company__name__text2__img{width:15rpx;height:8rpx;margin-left:8rpx;flex-shrink:0}.detail-info-user__company__name .detail-info-user__company__name__card{margin-right:8rpx;width:39rpx;height:34rpx;background:rgba(212,215,223,.2);border-radius:6rpx;border:1rpx solid rgba(169,172,179,.2);display:flex;align-items:center;justify-content:center;flex-shrink:0}.detail-info-user__company__name .detail-info-user__company__name__card .detail-info-user__company__name__card__img{width:22rpx;height:21rpx}.sj-pop{position:absolute;top:60rpx;right:-34rpx;width:358rpx;background:#fff;box-shadow:0rpx 1rpx 8rpx 2rpx #e6e6e6;padding:20rpx;box-sizing:border-box;border-radius:16rpx;z-index:9999;max-height:400rpx;overflow:visible}.sj-pop::before{content:"";position:absolute;top:-20rpx;right:58rpx;width:0;height:0;border-width:0 20rpx 18rpx 18rpx;border-style:solid;border-color:transparent transparent #e6e6e6 transparent;z-index:1;-webkit-filter:blur(2rpx);filter:blur(2rpx);opacity:.8}.sj-pop::after{content:"";position:absolute;top:-16rpx;right:60rpx;width:0;height:0;border-width:0 18rpx 16rpx 16rpx;border-style:solid;border-color:transparent transparent #fff transparent;z-index:2;-webkit-filter:drop-shadow(0rpx 1rpx 1rpx hsla(0,0%,90.2%,.3));filter:drop-shadow(0rpx 1rpx 1rpx rgba(230,230,230,.3))}.sj-pop .sj-pop-item{font-weight:400;font-size:24rpx;color:#333;line-height:33rpx;text-align:left;font-style:normal;margin-bottom:20rpx;padding-bottom:20rpx;border-bottom:1rpx solid #f1f1f1}.sj-pop .sj-pop-item:last-child{margin-bottom:0rpx;padding-bottom:0rpx;border-bottom:none}.sj-pop .sj-pop-item.active{color:#e8101e}.common-list{background-color:#fafafa!important;padding-bottom:0rpx}.common-list .list-scroll{margin-top:0rpx}.common-list .list-container{padding:0rpx}',""]),t.exports=e},2604:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".migration-page{min-height:80vh;background:#f5f5f5;display:flex;flex-direction:column}.content-container{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40rpx 40rpx;position:relative;z-index:2}.section{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border-radius:24rpx;padding:48rpx 32rpx;margin-bottom:48rpx;width:100%}.section-header{display:flex;flex-direction:column;align-items:center;justify-content:center;margin-bottom:40rpx;width:100%}.section-icon{width:150rpx;height:150rpx;margin-bottom:20rpx}.section-title{font-weight:500;font-size:36rpx;color:#000;line-height:50rpx;text-align:center;width:100%}.section-title::before{display:none}.section-content{font-size:26rpx;color:#666;line-height:37rpx;text-align:center;display:flex;align-items:center;justify-content:center;width:100%}.jump-section{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:100%}.jump-button{width:100%;height:100rpx;background:#e8101e;border-radius:60rpx;display:flex;align-items:center;justify-content:center;box-shadow:0 8rpx 20rpx rgba(232,16,30,.2);transition:all .3s ease}.jump-button:active{-webkit-transform:translateY(4rpx);transform:translateY(4rpx);box-shadow:0 4rpx 10rpx rgba(232,16,30,.2)}.button-text{font-weight:400;font-size:34rpx;color:#fff;line-height:34rpx}",""]),t.exports=e},2616:function(t,e,i){"use strict";i.r(e);var a=i("610d"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"267a":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uvTransition:i("2fe6").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uv-transition",{attrs:{_i:0},on:{click:function(e){return t.$handleViewEvent(e)},touchmove:function(e){return t.$handleViewEvent(e,{stop:!0,prevent:!0})}}},[t._t("default",null,{_i:1})],2)},r=[]},2690:function(t,e,i){"use strict";i.r(e);var a=i("be86"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"26c0":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={props:["value","title","btnText"],data:function(){return{wxsProps:{}}},components:{}}},"26e0":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("f5e1");e=a(!1);var s=n(r);e.push([t.i,".pay-page{padding-bottom:env(safe-area-inset-bottom)}.amount-section{background-color:initial;padding:51rpx 32rpx 129rpx 32rpx;text-align:center}.amount-section .pay_icon{width:199rpx;height:178rpx;margin-bottom:34rpx}.amount-section .amount{margin-bottom:24rpx}.amount-section .amount .symbol{font-family:DINPro;font-weight:700;font-size:54rpx;color:#333;line-height:70rpx;text-align:left;font-style:normal}.amount-section .amount .value{font-family:DINPro;font-weight:700;font-size:88rpx;color:#333;line-height:114rpx;text-align:left;font-style:normal}.amount-section .amount .value2{font-family:DINPro;font-weight:700;font-size:56rpx;color:#333;line-height:72rpx;text-align:left;font-style:normal}.amount-section .countdown{font-weight:400;font-size:26rpx;color:#333;line-height:37rpx;text-align:center;font-style:normal;display:flex;align-items:center;justify-content:center}.amount-section .countdown .uv-count-down__text{font-weight:400;font-size:26rpx;color:#333;line-height:37rpx;text-align:center;font-style:normal}.method-section{background-image:url("+s+");background-position:top;background-repeat:no-repeat;background-size:contain;background-color:#fff;margin:0 20rpx;padding:22rpx 26rpx 62rpx 26rpx;border-radius:0rpx 0rpx 20rpx 20rpx}.section-title{font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;margin-bottom:23rpx}.balance-amount{font-size:28rpx;color:#999;margin-left:16rpx}.footer{position:fixed;left:0;right:0;bottom:0;height:150rpx;background-color:#fff;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:0 24rpx;padding-bottom:env(safe-area-inset-bottom)}.total-amount{flex:1;display:flex;flex-flow:column nowrap;justify-content:flex-start;align-items:flex-start}.total-amount .symbol{font-size:24rpx;font-weight:500;color:#e8101e}.total-amount .amount{font-size:28rpx;font-weight:500;color:#e8101e}.amount-lable{font-size:24rpx;color:#999}.pay-btn{width:680rpx;height:88rpx;background:linear-gradient(180deg,#f52540,#e8101e);border-radius:43rpx;font-weight:500;font-size:30rpx;color:#fff;line-height:42rpx;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:center}.method-item{display:flex;justify-content:space-between;align-items:center;padding:40rpx 0;border-bottom:1rpx solid rgba(0,0,0,.05)}.method-item:last-child{border-bottom:none;padding-bottom:0}.method-info{display:flex;align-items:center}.method-icon{width:38rpx;height:38rpx;margin-right:20rpx}.method-name{font-weight:500;font-size:30rpx;color:#5b5b5b;line-height:42rpx;text-align:left;font-style:normal}",""]),t.exports=e},"26f0":function(t,e,i){"use strict";i.r(e);var a=i("d3d9"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},2721:function(t,e,i){"use strict";i.r(e);var a=i("3860"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},2725:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".selectTime[data-v-296d9506]{flex:1;display:flex;flex-wrap:nowrap;justify-content:space-between;-webkit-column-gap:26rpx;column-gap:26rpx}.selectTime .selectTime-time[data-v-296d9506]{width:328rpx;height:56rpx;border-radius:10rpx;border:2rpx solid #e9e9e9;display:flex;transition:all .3s;background:#f8f8f8}.selectTime .selectTime-time .selectTime-time-left[data-v-296d9506]{font-weight:400;font-size:28rpx;color:#999;line-height:40rpx;justify-content:center;font-style:normal;flex:1;display:flex;align-items:center;padding-left:19rpx;position:relative}.selectTime .selectTime-time .selectTime-time-left .clearing[data-v-296d9506]{width:20rpx;height:20rpx;position:absolute;right:8rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.selectTime .selectTime-time .selectTime-time-right[data-v-296d9506]{width:59rpx;height:100%;border-left:2rpx solid #e9e9e9;display:flex;align-items:center;justify-content:center}.selectTime .selectTime-time .selectTime-time-right uni-image[data-v-296d9506]{width:35rpx;height:33rpx}.selectTime .selectTime-time-y[data-v-296d9506]{color:#333;border-color:#409eff}.selectTime.disabled .selectTime-time[data-v-296d9506]{background-color:#f5f5f5;cursor:not-allowed}.selectTime .select-title[data-v-296d9506]{box-sizing:border-box;font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;width:317rpx;padding-left:14rpx;padding-bottom:20rpx}",""]),t.exports=e},2730:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},2732:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".detail-page{padding-bottom:200rpx}.detail-page .main-image-section{position:relative;width:750rpx;height:602rpx;background-color:#999}.detail-page .main-image-section .banner-swiper{width:750rpx;height:602rpx;position:relative}.detail-page .main-image-section .banner-swiper .banner-image{width:750rpx;height:602rpx}.detail-page .main-image-section .banner-swiper .album{position:absolute;bottom:25rpx;left:20rpx;height:44rpx;width:184rpx;background:rgba(0,0,0,.4);border-radius:23rpx}.detail-page .main-image-section .banner-swiper .album .album-left{width:73rpx;height:44rpx;background:#fff;border-radius:23rpx;display:flex;align-items:center;justify-content:center;line-height:40rpx;font-weight:400;font-size:22rpx;text-align:center;color:#333}.detail-page .main-image-section .banner-swiper .album .album-line{width:2rpx;height:20rpx;background:#a09c9e;border-radius:1rpx;margin:0 18rpx}.detail-page .main-image-section .banner-swiper .album .album-right{height:44rpx}.detail-page .main-image-section .banner-swiper .album .album-right .album-right-text{-webkit-transform:translateY(-4rpx);transform:translateY(-4rpx);font-weight:400;font-size:22rpx;text-align:center;color:#fff}.detail-page .main-image-section .banner-swiper .album .album-right .album-right-img{width:8rpx;height:16rpx;padding-left:8rpx}.detail-page .detail-info{margin-top:20rpx;padding:0 20rpx;position:relative}.detail-page .detail-info .detail-info-user{padding:20rpx 26rpx 20rpx 30rpx;background:#fff;border-radius:20rpx}.detail-page .detail-info .detail-info-user .detail-info-user__heard{display:flex;flex-wrap:nowrap;align-items:center;position:relative}.detail-page .detail-info .detail-info-user .detail-info-user__heard__photo{width:122rpx;height:122rpx;margin-right:17rpx;border-radius:10rpx;flex-shrink:0}.detail-page .detail-info .detail-info-user .detail-info-user__heard__name{margin-bottom:15rpx;display:flex;flex-direction:column;align-items:flex-start;flex:1}.detail-page .detail-info .detail-info-user .detail-info-user__heard__name__text{margin-bottom:10rpx;font-weight:500;font-size:42rpx;color:#333;text-align:left;font-style:normal;width:100%;overflow:hidden;white-space:wrap}.detail-page .detail-info .detail-info-user .detail-info-user__heard__name__sales{display:flex;align-items:center;justify-content:flex-start;flex-wrap:nowrap}.detail-page .detail-info .detail-info-user .detail-info-user__heard__name__sales__text1{font-weight:400;font-size:22rpx;color:#aaa;line-height:30rpx;text-align:left;font-style:normal;display:inline-flex;align-items:center}.detail-page .detail-info .detail-info-user .detail-info-user__heard__name__sales__text2{margin-left:11rpx;margin-right:2rpx;margin-bottom:2rpx;font-family:DINPro;font-weight:700;font-size:25rpx;color:#666;line-height:30rpx;text-align:left;font-style:normal;display:inline-flex;align-items:center}.detail-page .detail-info .detail-info-user .detail-info-user__heard .contact-customer-btn{width:114rpx;height:89rpx;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:20rpx;border:#d9dbdb 1rpx solid;background:linear-gradient(180deg,#faf9f9,#fff);margin-left:20rpx;flex-shrink:0;padding:5rpx;transition:all .2s ease}.detail-page .detail-info .detail-info-user .detail-info-user__heard .contact-customer-btn .contact-customer-icon{width:36rpx;height:34rpx;margin-bottom:8rpx}.detail-page .detail-info .detail-info-user .detail-info-user__heard .contact-customer-btn uni-text{font-size:20rpx;color:#666;font-weight:400}.detail-page .detail-info .detail-info-user .detail-info-user__heard .contact-customer-btn:active{-webkit-transform:scale(.99);transform:scale(.99);box-shadow:inset 0 2rpx 4rpx rgba(0,0,0,.2)}.detail-page .detail-info .detail-info-user .detail-info-user__time{display:flex;align-items:center;justify-content:space-between;margin-top:31rpx}.detail-page .detail-info .detail-info-user .detail-info-user__time__left{font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal}.detail-page .detail-info .detail-info-user .detail-info-user__time__left__text1{font-weight:600}.detail-page .detail-info .detail-info-user .detail-info-user__time__left__text2{margin-left:8rpx;font-weight:500;font-family:DINPro}.detail-page .detail-info .detail-info-user .detail-info-user__time__right{font-weight:400;font-size:24rpx;color:#666;line-height:33rpx;text-align:left;font-style:normal}.detail-page .detail-info .detail-info-user .detail-info-user__time__right__img{width:11rpx;height:20rpx;margin-left:12rpx}.detail-page .detail-info .detail-info-user .detail-info-user__tabs{margin-top:16rpx;padding-bottom:23rpx;border-bottom:2rpx solid #f5f3f3;display:flex;gap:20rpx;flex-wrap:wrap}.detail-page .detail-info .detail-info-user .detail-info-user__tabs__tab{flex-shrink:0;background:#f5f5f5;border-radius:8rpx;padding:0 8rpx;font-weight:400;font-size:20rpx;color:#666;line-height:28rpx;text-align:left;font-style:normal}.detail-page .detail-info .detail-info-user .detail-info-user__connect{margin-top:20rpx}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:20rpx}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row:last-child{margin-bottom:0}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row.address-row{align-items:flex-start}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .address-section{flex:1;margin-right:20rpx}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .address-section .address-content{display:flex;align-items:center;font-weight:500;font-size:24rpx;color:#333;line-height:33rpx}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .address-section .address-content .address-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .address-section .address-content .address-arrow{width:11rpx;height:20rpx;margin-left:10rpx;flex-shrink:0}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .distance-section{flex-shrink:0;font-weight:700;font-size:24rpx;color:#999;line-height:28rpx;text-align:right;display:flex;align-items:center}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .distance-section .address-icon{width:20rpx;height:23rpx;margin-top:2rpx}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .distance-section .distance-value{font-family:DINPro;margin-left:6rpx}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .phone-section{flex:1}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .phone-section .phone-content{display:flex;align-items:center;font-weight:400;font-size:24rpx;color:#333;line-height:33rpx}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .phone-section .phone-content .phone-label{margin-right:6rpx}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .phone-section .phone-content .phone-number{margin-right:10rpx}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .phone-section .phone-content .phone-arrow{width:11rpx;height:20rpx}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .icon-section{display:flex;align-items:center;flex-shrink:0}.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .icon-section .nav-icon,\n.detail-page .detail-info .detail-info-user .detail-info-user__connect .connect-row .icon-section .phone-icon{width:43rpx;height:43rpx;margin-left:40rpx}.detail-page .detail-info .detail-info-user .detail-info-user__banner{width:100%;margin-top:30rpx}.detail-page .detail-info .detail-info-user .business-license-section{display:flex;align-items:center}.detail-page .detail-info .detail-info-user .business-license-section .license-icon{width:32rpx;height:26rpx;margin-right:15rpx}.detail-page .detail-info .detail-info-user .business-license-section .license-info{flex:1}.detail-page .detail-info .detail-info-user .business-license-section .license-info .license-title{font-size:28rpx;color:#333;font-weight:500}.detail-page .detail-info .detail-info-user .business-license-section .license-view{display:flex;align-items:center}.detail-page .detail-info .detail-info-user .business-license-section .license-view uni-text{font-size:24rpx;color:#666}.detail-page .detail-info .detail-info-user .business-license-section .license-view .license-arrow{width:11rpx;height:20rpx;margin-left:10rpx}.detail-page .detail-info .shop-tabs-outside{display:flex;margin:20rpx 0rpx 0 0}.detail-page .detail-info .shop-tabs-outside .shop-tab-outside{font-size:30rpx;line-height:42rpx;color:#333;margin-right:50rpx;padding:20rpx 10rpx;position:relative;font-weight:500;cursor:pointer;transition:all .3s ease}.detail-page .detail-info .shop-tabs-outside .shop-tab-outside.active{color:#e8101e}.detail-page .detail-info .detail-info-shop{padding:20rpx;background:#fff;border-radius:20rpx;margin-top:10rpx}.detail-page .detail-info .detail-info-shop .shop-tabs-inside{margin-bottom:20rpx}.detail-page .detail-info .detail-info-shop .shop-tabs-inside .shop-tab-inside{font-size:34rpx;font-weight:500;padding:10rpx 0}.detail-page .detail-info .detail-info-shop .detail-info-shop-title{width:136rpx;height:48rpx;font-family:PingFangSC,PingFang SC;font-weight:500;font-size:34rpx;color:#333;line-height:48rpx;text-align:left;font-style:normal}.detail-page .artisan-showcase-section{background:#fff;border-radius:20rpx;margin:0rpx 20rpx 0rpx;padding:20rpx}.detail-page .artisan-showcase-section .showcase-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30rpx}.detail-page .artisan-showcase-section .showcase-header .showcase-title{font-size:28rpx;color:#333;font-weight:500}.detail-page .artisan-showcase-section .showcase-header .view-all-btn{display:flex;align-items:center}.detail-page .artisan-showcase-section .showcase-header .view-all-btn uni-text{font-size:24rpx;color:#666}.detail-page .artisan-showcase-section .showcase-header .view-all-btn .view-all-arrow{width:11rpx;height:20rpx;margin-left:10rpx}.detail-page .artisan-showcase-section .showcase-scroll{white-space:nowrap;width:100%}.detail-page .artisan-showcase-section .showcase-scroll .showcase-list{display:inline-flex}.detail-page .artisan-showcase-section .showcase-scroll .showcase-list .showcase-item{display:inline-flex;flex-direction:column;align-items:center;margin-right:35rpx;white-space:normal;width:198rpx;flex-shrink:0;position:relative}.detail-page .artisan-showcase-section .showcase-scroll .showcase-list .showcase-item:last-child{margin-right:0}.detail-page .artisan-showcase-section .showcase-scroll .showcase-list .showcase-item .showcase-avatar{width:198rpx;height:200rpx;background:#d8d8d8;border-radius:20rpx;margin-bottom:20rpx;box-shadow:0 4rpx 12rpx rgba(0,0,0,.1)}.detail-page .artisan-showcase-section .showcase-scroll .showcase-list .showcase-item .showcase-name{font-size:28rpx;color:#333;font-weight:500;text-align:center;line-height:33rpx;margin-bottom:8rpx;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-page .artisan-showcase-section .showcase-scroll .showcase-list .showcase-item .showcase-experience{font-size:22rpx;color:#666;text-align:center;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:5rpx}.detail-page .artisan-showcase-section .showcase-scroll .showcase-list .showcase-item .showcase-tag{font-size:20rpx;color:#e8101e;background:rgba(232,16,30,.1);border-radius:15rpx;padding:4rpx 12rpx;text-align:center;width:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .list-container{padding:0}",""]),t.exports=e},"274f":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={props:["shop"],data:function(){return{wxsProps:{}}},components:{}}},"276a":function(t,e,i){var a=i("b965");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("b3b77dac",a,!0,{sourceMap:!1,shadowMode:!1})},2779:function(t,e,i){"use strict";var a=i("94dd"),n=i.n(a);n.a},"27b5":function(t,e,i){var a=i("09d99");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("1cc415ea",a,!0,{sourceMap:!1,shadowMode:!1})},"27eb":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},t._l(t._$g(4,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("4-"+r,"sc"),attrs:{_i:"4-"+r}},[i("uni-view",{staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r}},[i("v-uni-text",{staticClass:t._$g("6-"+r,"sc"),attrs:{_i:"6-"+r}},[t._v(t._$g("6-"+r,"t0-0"))]),i("v-uni-text",{staticClass:t._$g("7-"+r,"sc"),attrs:{_i:"7-"+r}},[t._v(t._$g("7-"+r,"t0-0")+"-"+t._$g("7-"+r,"t0-1"))])],1),i("uni-view",{staticClass:t._$g("8-"+r,"sc"),attrs:{_i:"8-"+r}},[i("v-uni-text",{staticClass:t._$g("9-"+r,"sc"),attrs:{_i:"9-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u5220\u9664")])],1)],1)})),1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("+")]),i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v("\u6dfb\u52a0\u4e0d\u53ef\u670d\u52a1\u65f6\u95f4")])],1)],1),t._$g(13,"i")?i("uni-view",{staticClass:t._$g(13,"sc"),class:t._$g(13,"c"),attrs:{_i:13}},[i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")]),i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\u9009\u62e9\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(19,"sc"),attrs:{_i:19},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("v-uni-text",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v("\u65e5\u671f")]),i("v-uni-picker",{attrs:{mode:"date",value:t._$g(23,"a-value"),start:t._$g(23,"a-start"),_i:23},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[t._v(t._$g(24,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[i("v-uni-text",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[t._v("\u5f00\u59cb\u65f6\u95f4")]),i("v-uni-picker",{attrs:{mode:"time",value:t._$g(27,"a-value"),_i:27},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[t._v(t._$g(28,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[i("v-uni-text",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[t._v("\u7ed3\u675f\u65f6\u95f4")]),i("v-uni-picker",{attrs:{mode:"time",value:t._$g(31,"a-value"),start:t._$g(31,"a-start"),_i:31},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v(t._$g(32,"t0-0"))])],1)],1)],1)],1)],1):t._e()],1)},r=[]},"27fa":function(t,e,i){"use strict";i.r(e);var a=i("6929"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"283b":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this.$createElement,e=this._self._c||t;return e("uni-view",{staticClass:this._$g(0,"sc"),class:this._$g(0,"c"),style:this._$g(0,"s"),attrs:{_i:0}},[this._t("default",null,{_i:1})],2)},n=[]},2849:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1},on:{onHeadleClick:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-input",{staticClass:t._$g(4,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u4f60\u7684\u670d\u52a1\u540d\u79f0","placeholder-class":"placeholder",_i:4},on:{confirm:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(4,"v-model"),callback:function(e){t.$handleVModelEvent(4,e)},expression:"title"}}),i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:"/static/home/search.png",mode:"aspectFit",_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},t._l(t._$g(7,"f"),(function(e,a,n,r){return i("uni-view",{key:e,class:t._$g("7-"+r,"c"),attrs:{_i:"7-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("7-"+r,"t0-0")+" ")])})),1)],1),t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},t._l(t._$g(9,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("9-"+r,"sc"),attrs:{_i:"9-"+r},on:{touchstart:function(e){return t.$handleViewEvent(e)},touchmove:function(e){return t.$handleViewEvent(e)},touchend:function(e){return t.$handleViewEvent(e)},mousedown:function(e){return t.$handleViewEvent(e)},mousemove:function(e){return t.$handleViewEvent(e)},mouseup:function(e){return t.$handleViewEvent(e)},mouseleave:function(e){return t.$handleViewEvent(e)}}},[t._$g("10-"+r,"i")?i("uni-view",{staticClass:t._$g("10-"+r,"sc"),style:t._$g("10-"+r,"s"),attrs:{_i:"10-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{attrs:{_i:"11-"+r}},[t._v("\u5220\u9664")])],1):t._e(),i("uni-view",{staticClass:t._$g("12-"+r,"sc"),style:t._$g("12-"+r,"s"),attrs:{_i:"12-"+r}},[i("v-uni-image",{staticClass:t._$g("13-"+r,"sc"),attrs:{src:t._$g("13-"+r,"a-src"),mode:"aspectFill",_i:"13-"+r}}),i("uni-view",{staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[i("uni-view",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r}},[t._v(t._$g("15-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("16-"+r,"sc"),attrs:{_i:"16-"+r}},[i("v-uni-text",{staticClass:t._$g("17-"+r,"sc"),attrs:{_i:"17-"+r}},[t._v("\xa5")]),i("v-uni-text",{staticClass:t._$g("18-"+r,"sc"),attrs:{_i:"18-"+r}},[t._v(t._$g("18-"+r,"t0-0"))]),i("v-uni-text",{staticClass:t._$g("19-"+r,"sc"),attrs:{_i:"19-"+r}},[t._v("\u5143")])],1)],1),i("uni-view",{class:t._$g("20-"+r,"c"),attrs:{_i:"20-"+r}},[i("v-uni-text",{staticClass:t._$g("21-"+r,"sc"),attrs:{_i:"21-"+r}},[t._v(t._$g("21-"+r,"t0-0"))])],1),i("uni-view",{staticClass:t._$g("22-"+r,"sc"),attrs:{_i:"22-"+r}},[t._$g("23-"+r,"i")?i("uni-view",{staticClass:t._$g("23-"+r,"sc"),attrs:{_i:"23-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("24-"+r,"sc"),attrs:{src:"/static/images/remove_icon.png",mode:"aspectFit",_i:"24-"+r}}),i("v-uni-text",{staticClass:t._$g("25-"+r,"sc"),attrs:{_i:"25-"+r}},[t._v("\u4e0b\u67b6")])],1):t._e(),t._$g("26-"+r,"i")?i("uni-view",{staticClass:t._$g("26-"+r,"sc"),attrs:{_i:"26-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("27-"+r,"sc"),attrs:{src:"/static/images/list_icon.png",mode:"aspectFit",_i:"27-"+r}}),i("v-uni-text",{staticClass:t._$g("28-"+r,"sc"),attrs:{_i:"28-"+r}},[t._v("\u4e0a\u67b6")])],1):t._e(),i("uni-view",{staticClass:t._$g("29-"+r,"sc"),attrs:{_i:"29-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("30-"+r,"sc"),attrs:{src:"/static/images/edit_active.png",mode:"aspectFit",_i:"30-"+r}}),i("v-uni-text",{staticClass:t._$g("31-"+r,"sc"),attrs:{_i:"31-"+r}},[t._v("\u7f16\u8f91")])],1)],1)],1)],1)})),1):i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[i("v-uni-text",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[t._v("\u6682\u65e0\u6570\u636e...")])],1),t._$g(34,"i")?i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[i("v-uni-text",{attrs:{_i:35}},[t._v("\u5df2\u52a0\u8f7d\u5168\u90e8")])],1):t._e(),i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[i("v-uni-text",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[t._v("\u6dfb\u52a0\u670d\u52a1")])],1)],1)],1)},r=[]},2863:function(t,e,i){"use strict";i.r(e);var a=i("9bcd"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"288b":function(t,e,i){"use strict";var a=i("d119"),n=i.n(a);n.a},2897:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={props:["value","cashObj"],data:function(){return{wxsProps:{}}},components:{}}},"28f3":function(t,e,i){var a=i("8fa9");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("71b56f78",a,!0,{sourceMap:!1,shadowMode:!1})},"28ff":function(t,e,i){"use strict";i.r(e);var a=i("bf67"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},2916:function(t,e,i){var a=i("981b");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("10d78724",a,!0,{sourceMap:!1,shadowMode:!1})},"291d":function(t,e,i){"use strict";i.r(e);var a=i("fd14"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},2958:function(t,e,i){var a=i("c667");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("1e1d9618",a,!0,{sourceMap:!1,shadowMode:!1})},"295b":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this.$createElement,e=this._self._c||t;return e("uni-view",{staticClass:this._$g(0,"sc"),class:this._$g(0,"c"),style:this._$g(0,"s"),attrs:{_i:0}})},n=[]},2988:function(t,e,i){"use strict";i.r(e);var a=i("61f3"),n=i("9112");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("3f04");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},2994:function(t,e,i){"use strict";i.r(e);var a=i("1fed"),n=i("a646");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("2435");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"29a1":function(t,e,i){"use strict";var a=i("27b5"),n=i.n(a);n.a},"29cb":function(t,e,i){"use strict";i.r(e);var a=i("af2c"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"29cf":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".settings-page{padding:20rpx}.settings-page .settings-title{font-weight:500;font-size:22rpx;color:#979797;line-height:30rpx;text-align:left;font-style:normal;margin-bottom:20rpx}.settings-page .settings-cards{box-sizing:border-box;width:710rpx;padding:0rpx 20rpx;background:#fff;border-radius:20rpx;margin-bottom:40rpx}.settings-page .settings-cards .settings-card{padding:30rpx 0rpx 36rpx 0rpx}.settings-page .settings-cards .settings-card .card-heard .card-heard-left{display:flex;align-items:center;gap:8rpx}.settings-page .settings-cards .settings-card .card-heard .card-heard-left .card-heard-left-icon{height:32rpx}.settings-page .settings-cards .settings-card .card-heard .card-heard-left .card-heard-left-icon1{width:32rpx;height:34rpx}.settings-page .settings-cards .settings-card .card-heard .card-heard-left .card-heard-left-icon2{width:32rpx;height:29rpx}.settings-page .settings-cards .settings-card .card-heard .card-heard-left .card-heard-left-text{font-weight:500;font-size:28rpx;color:#333;text-align:left;font-style:normal}.settings-page .settings-cards .settings-card .card-heard .card-heard-right{gap:10rpx}.settings-page .settings-cards .settings-card .card-heard .card-heard-right .card-heard-right-text{font-weight:400;font-size:24rpx;color:#333;text-align:left;font-style:normal}.settings-page .settings-cards .settings-card .card-heard .card-heard-right .arrow-right{width:8rpx;height:16rpx}.settings-page .settings-cards .settings-card .card-tip{margin-top:20rpx;font-weight:400;font-size:22rpx;color:#979797;line-height:30rpx;text-align:left;font-style:normal}.settings-page .settings-cards .card-line{border-bottom:1rpx solid #f5f5f5}.settings-page .color-red{color:#e8101e!important}.settings-page .dialog-mask{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.settings-page .dialog-container{height:526rpx;width:582rpx;background-repeat:no-repeat;background-size:100% 100%;background-position:50%;padding:80rpx 40rpx 60rpx 40rpx;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;min-height:400rpx}.settings-page .dialog-title{font-weight:500;font-size:38rpx;color:#333;line-height:53rpx;text-align:left;font-style:normal;margin-top:30rpx}.settings-page .dialog-content{font-weight:400;font-size:30rpx;color:#333;line-height:50rpx;text-align:left;font-style:normal;margin-top:50rpx;margin-bottom:70rpx}.settings-page .dialog-btn{width:400rpx;height:88rpx;background:#e8101e;border-radius:44rpx;display:flex;align-items:center;justify-content:center;transition:opacity .1s}.settings-page .dialog-btn-text{font-size:32rpx;font-weight:500;color:#fff;letter-spacing:2rpx}.settings-page .fade-scale-enter-active,\n.settings-page .fade-scale-leave-active{transition:all .3s ease}.settings-page .fade-scale-enter{opacity:0;-webkit-transform:scale(.9);transform:scale(.9)}.settings-page .fade-scale-leave-to{opacity:0}.dialog-container{transition:all .3s ease;opacity:0;-webkit-transform:scale(.9);transform:scale(.9)}.dialog-show{opacity:1;-webkit-transform:scale(1);transform:scale(1)}.dialog-hide{opacity:0;-webkit-transform:scale(.9);transform:scale(.9)}",""]),t.exports=e},"29df":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-picker",data:function(){return{wxsProps:{}}},components:{}}},"29e0":function(t,e,i){"use strict";i.r(e);var a=i("483a"),n=i("9195");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("0e35");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"29f0":function(t,e,i){"use strict";i.r(e);var a=i("f27d"),n=i("51ca");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("10cd");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"73b98b2a",null,!1,a["a"],void 0);e["default"]=o.exports},"2a0d":function(t,e,i){var a=i("40aa");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("ea6744d2",a,!0,{sourceMap:!1,shadowMode:!1})},"2a21":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/822d00a5-9638-48c5-b1b1-4a868d3124b8.png",mode:"aspectFit",_i:5}}),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u624b\u827a\u4eba\u7aef\u8fc1\u79fb\u8bf4\u660e")])],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v(" \u7cfb\u7edf\u8fc1\u79fb\u5347\u7ea7\u4e2d\uff0c\u77ed\u6682\u4e0d\u4fbf\uff0c\u656c\u8bf7\u8c05\u89e3\uff0c\u5347\u7ea7\u540e\u4f53\u9a8c\u66f4\u4f73\uff01 ")])],1),t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u70b9\u51fb\u8df3\u8f6c\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u624b\u827a\u4eba\u7aef")])],1)],1):t._e()],1)],1)},r=[]},"2a22":function(t,e,i){var a=i("77a9");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("c7526236",a,!0,{sourceMap:!1,shadowMode:!1})},"2a2c":function(t,e,i){"use strict";i.r(e);var a=i("33b5"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"2a42":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{directives:[{name:"show",rawName:"v-show",value:t._$g(0,"v-show"),expression:"_$g(0,'v-show')"}],ref:"ani",class:t._$g(0,"c"),style:t._$g(0,"s"),attrs:{animation:t._$g(0,"a-animation"),_i:0},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._t("default",null,{_i:1})],2)},n=[]},"2a89":function(t,e,i){t.exports=i.p+"static/images/id_fan.png"},"2aec":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("8dc7");e=a(!1);var s=n(r);e.push([t.i,".detail-page{}.detail-page .main-image-section{position:relative;width:750rpx;height:602rpx;background-color:#999}.detail-page .main-image-section .banner-swiper{width:750rpx;height:602rpx;position:relative}.detail-page .main-image-section .banner-swiper .banner-image{width:750rpx;height:602rpx}.detail-page .main-image-section .banner-swiper .album{position:absolute;bottom:25rpx;left:20rpx;height:44rpx;width:184rpx;background:rgba(0,0,0,.4);border-radius:23rpx}.detail-page .main-image-section .banner-swiper .album .album-left{width:73rpx;height:44rpx;background:#fff;border-radius:23rpx;display:flex;align-items:center;justify-content:center;line-height:40rpx;font-weight:400;font-size:22rpx;text-align:center;color:#333}.detail-page .main-image-section .banner-swiper .album .album-line{width:2rpx;height:20rpx;background:#a09c9e;border-radius:1rpx;margin:0 18rpx}.detail-page .main-image-section .banner-swiper .album .album-right{height:44rpx}.detail-page .main-image-section .banner-swiper .album .album-right .album-right-text{-webkit-transform:translateY(-4rpx);transform:translateY(-4rpx);font-weight:400;font-size:22rpx;text-align:center;color:#fff}.detail-page .main-image-section .banner-swiper .album .album-right .album-right-img{width:8rpx;height:16rpx;padding-left:8rpx}.detail-page .detail-info{-webkit-transform:translateY(-20rpx);transform:translateY(-20rpx);padding:0 20rpx;position:relative}.detail-page .detail-info .detail-info-user{padding:20rpx 26rpx 20rpx 30rpx;background:#fff;border-radius:20rpx}.detail-page .detail-info .detail-info-user .detail-info-user__heard{display:flex;flex-wrap:nowrap;align-items:center}.detail-page .detail-info .detail-info-user .detail-info-user__heard__photo{width:122rpx;height:122rpx;border-radius:50%;margin-right:17rpx}.detail-page .detail-info .detail-info-user .detail-info-user__heard__name__text{font-weight:500;font-size:42rpx;color:#333;line-height:59rpx;text-align:left;font-style:normal}.detail-page .detail-info .detail-info-user .detail-info-user__heard__name__time{display:flex;align-items:center;flex-wrap:nowrap}.detail-page .detail-info .detail-info-user .detail-info-user__heard__name__time__text1{font-weight:400;font-size:22rpx;color:#5b5b5b}.detail-page .detail-info .detail-info-user .detail-info-user__heard__name__time__text2{margin-left:6rpx;font-family:DINPro;font-weight:500;font-size:24rpx;color:#5b5b5b;-webkit-transform:translateY(-2rpx);transform:translateY(-2rpx)}.detail-page .detail-info .detail-info-user .detail-info-user__company{display:flex;margin-top:37rpx}.detail-page .detail-info .detail-info-user .detail-info-user__company__name{background:#fff;border-radius:8rpx;border:2rpx solid #cccfd1;padding-right:8rpx;display:flex;align-items:center;margin-right:21rpx}.detail-page .detail-info .detail-info-user .detail-info-user__company__name__text{font-weight:400;font-size:20rpx;color:#a7abae;text-align:left;font-style:normal}.detail-page .detail-info .detail-info-user .detail-info-user__company__name__card{margin-right:8rpx;width:39rpx;height:34rpx;background:rgba(212,215,223,.2);border-radius:6rpx;border:1rpx solid rgba(169,172,179,.2);display:flex;align-items:center;justify-content:center}.detail-page .detail-info .detail-info-user .detail-info-user__company__name__card__img{width:22rpx;height:21rpx}.detail-page .detail-info .detail-info-user .detail-info-user__company__reserve{display:flex;align-items:center;background:#fff;border-radius:8rpx;border:2rpx solid #e8101e;padding-right:10rpx}.detail-page .detail-info .detail-info-user .detail-info-user__company__reserve__text{font-family:DINPro;font-weight:700;font-size:20rpx;color:#e8101e;line-height:24rpx;text-align:left;font-style:normal}.detail-page .detail-info .detail-info-user .detail-info-user__company__reserve__card{margin-right:8rpx;height:100%;padding:0rpx 10rpx;background:#ffecf0;border-radius:6rpx;display:flex;align-items:center;justify-content:center;font-weight:500;font-size:20rpx;color:#e8101e;text-align:left;font-style:normal}.detail-page .detail-info .detail-info-user .detail-info-user__adress{margin-top:20rpx;display:flex;justify-content:space-between}.detail-page .detail-info .detail-info-user .detail-info-user__adress__left__text1{font-weight:400;font-size:24rpx;color:#a7abae;line-height:33rpx;text-align:left;font-style:normal;margin-right:10rpx}.detail-page .detail-info .detail-info-user .detail-info-user__adress__left__text2{font-weight:400;font-size:24rpx;color:#333;line-height:33rpx;text-align:left;font-style:normal}.detail-page .detail-info .detail-info-user .detail-info-user__adress__right{font-weight:700;font-size:24rpx;color:#666;text-align:left;font-style:normal;display:flex;flex-direction:row;align-items:center}.detail-page .detail-info .detail-info-user .detail-info-user__adress__right__img{width:17.5rpx;margin-right:9rpx}.detail-page .detail-info .detail-info-user .detail-info-user__introduction{margin-top:33rpx;padding-top:25rpx;font-weight:400;font-size:24rpx;color:#666;line-height:33rpx;text-align:left;font-style:normal;position:relative;background-image:url("+s+");background-repeat:no-repeat;background-position:0 0;background-size:72rpx auto}.detail-page .detail-info .detail-info-user .detail-info-user__banner{width:100%;margin-top:30rpx}.detail-page .detail-info .detail-info-shop{padding:20rpx;background:#fff;border-radius:20rpx;margin-top:20rpx}.detail-page .detail-info .detail-info-shop .detail-info-shop-title{width:136rpx;height:48rpx;font-family:PingFangSC,PingFang SC;font-weight:500;font-size:34rpx;color:#333;line-height:48rpx;text-align:left;font-style:normal} .list-container{padding:0!important}.evaluationList{margin:20rpx 0rpx 0rpx 0rpx!important}",""]),t.exports=e},"2afd":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("5e85")),r=a(i("f8df")),s=a(i("4c51")),o={data:function(){return{wxsProps:{}}},components:{projectTabs:n.default,CommonList:r.default,serviceCardList:s.default}};e.default=o},"2b21":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"2b56":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-text",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._v(t._$g(3,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u9080\u8bf7\u7801")])],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u9080\u8bf7\u8bb0\u5f55")]),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u5546\u5bb6/\u624b\u827a\u4eba")]),i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u624b\u673a\u53f7\u7801")]),i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u89d2\u8272")]),i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v("\u9080\u8bf7\u65f6\u95f4")])],1),t._$g(13,"i")?i("uni-view",{attrs:{_i:13}},t._l(t._$g(14,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[i("v-uni-text",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r}},[t._v(t._$g("15-"+r,"t0-0"))]),i("v-uni-text",{staticClass:t._$g("16-"+r,"sc"),attrs:{_i:"16-"+r}},[t._v(t._$g("16-"+r,"t0-0"))]),i("v-uni-text",{staticClass:t._$g("17-"+r,"sc"),attrs:{_i:"17-"+r}},[t._v(t._$g("17-"+r,"t0-0"))]),i("v-uni-text",{staticClass:t._$g("18-"+r,"sc"),attrs:{_i:"18-"+r}},[t._v(t._$g("18-"+r,"t0-0"))])],1)})),1):i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v("\u5f53\u524d\u6682\u65e0\u9080\u8bf7\u8bb0\u5f55")])],1)],1)],1)],1)},r=[]},"2b67":function(t,e,i){"use strict";i.r(e);var a=i("2730"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"2b6d":function(t,e,i){var a=i("1a12");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("18015344",a,!0,{sourceMap:!1,shadowMode:!1})},"2bd7":function(t,e,i){"use strict";i.r(e);var a=i("87fa"),n=i("2bee");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("aff4");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"ce4f0616",null,!1,a["a"],void 0);e["default"]=o.exports},"2bee":function(t,e,i){"use strict";i.r(e);var a=i("6935"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"2bf6":function(t,e,i){"use strict";var a=i("c42c"),n=i.n(a);n.a},"2bf7":function(t,e,i){var a=i("a888");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("b9e76fc8",a,!0,{sourceMap:!1,shadowMode:!1})},"2bfa":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".order-card[data-v-4b58980a]{padding:34rpx 20rpx 0rpx;margin:20rpx 30rpx 20rpx 30rpx;background-color:#fff;border-radius:12px}.orderNumBox[data-v-4b58980a]{display:flex;align-items:center;justify-content:space-between;margin-bottom:40rpx}.orderNumBox .stateText[data-v-4b58980a]{font-size:28rpx;color:#e8101e;line-height:39rpx}.order-id[data-v-4b58980a]{width:530rpx;font-size:28rpx;color:#333}.service-container[data-v-4b58980a]{display:flex;align-items:center;padding-bottom:24rpx;border-bottom:1px solid #f6f5f5;width:100%}.service-img[data-v-4b58980a]{width:172rpx;height:168rpx;border-radius:24rpx;margin-right:30rpx;flex-shrink:0}.service-info[data-v-4b58980a]{display:flex;flex-direction:column;justify-content:space-between;width:100%;height:168rpx}.service-info .topInfo[data-v-4b58980a]{display:flex;flex-direction:column}.service-info .topInfo .price_title[data-v-4b58980a]{display:flex;align-items:center;justify-content:space-between}.service-info .topInfo .price_title .service-price[data-v-4b58980a]{font-weight:500;font-size:30rpx;color:#e8101e;line-height:34rpx}.service_subTitle[data-v-4b58980a]{font-size:26rpx;line-height:26rpx;color:#666;margin-top:18rpx}.service-type[data-v-4b58980a]{font-weight:500;font-size:30rpx;line-height:30rpx;color:#333}.service-address[data-v-4b58980a]{font-weight:400;font-size:26rpx;color:#999;line-height:34rpx;text-align:left;font-style:normal}.time-info[data-v-4b58980a]{font-size:30rpx;color:#333;padding-bottom:40rpx;margin-top:28rpx}.button-group[data-v-4b58980a]{display:flex;justify-content:flex-end;gap:30rpx;padding-bottom:40rpx}.btn[data-v-4b58980a]{width:80rpx;height:32rpx;border-radius:64rpx;font-size:26rpx;background-color:#fff;white-space:nowrap}.cancel-btn[data-v-4b58980a]{border:2rpx solid #979797;color:#333}.accept-btn[data-v-4b58980a]{border:2rpx solid #e8101e;color:#e8101e}",""]),t.exports=e},"2c0a":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("custom-navbar",{attrs:{_i:2}})],1),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/5c3fbe37-924a-476e-b266-f3c5b1eb9692.png",_i:5}}),i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u8425\u4e1a\u8bbe\u7f6e")])],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v("\u8425\u4e1a\u4e2d")]):i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u4f11\u606f\u4e2d")]),i("uni-view",{staticClass:t._$g(10,"sc"),style:t._$g(10,"s"),attrs:{_i:10}})],1)],1)],1)},r=[]},"2c2a":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,uvDivider:i("746b").default,uvOverlay:i("1d78").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),t._$g(2,"i")?i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:"/static/images/shop/imgAndText/add.png",mode:"widthFix",_i:4}})],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v("\u5feb\u6765\u6dfb\u52a0\u5185\u5bb9\uff0c\u4ecb\u7ecd\u4f60\u7684\u670d\u52a1\u5427\uff01")])],1):i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},t._l(t._$g(7,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("7-"+r,"sc"),attrs:{_i:"7-"+r}},[t._$g("8-"+r,"i")?i("uv-divider",{attrs:{_i:"8-"+r}}):t._e(),t._$g("9-"+r,"i")?i("uni-view",{staticClass:t._$g("9-"+r,"sc"),attrs:{_i:"9-"+r}},[t._v(t._$g("9-"+r,"t0-0"))]):t._$g("10-"+r,"e")?i("v-uni-image",{staticStyle:{width:"100%"},attrs:{mode:"widthFix",src:t._$g("10-"+r,"a-src"),_i:"10-"+r}}):t._e(),i("uni-view",{staticClass:t._$g("11-"+r,"sc"),attrs:{_i:"11-"+r}},t._l(t._$g("12-"+r,"f"),(function(e,a,n,s){return t._$g("12-"+r+"-"+s,"i")?i("uni-view",{key:e,staticClass:t._$g("12-"+r+"-"+s,"sc"),attrs:{_i:"12-"+r+"-"+s},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v(" "+t._$g("12-"+r+"-"+s,"t0-0")+" ")]):t._e()})),1)],1)})),1),t._$g(13,"i")?i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("v-uni-button",{staticClass:t._$g(14,"sc"),attrs:{_i:14},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u4fdd\u5b58")])],1):t._e(),i("uv-overlay",{attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._l(t._$g(17,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("17-"+r,"sc"),attrs:{_i:"17-"+r},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-image",{staticClass:t._$g("18-"+r,"sc"),attrs:{src:t._$g("18-"+r,"a-src"),_i:"18-"+r}}),i("uni-view",{staticClass:t._$g("19-"+r,"sc"),attrs:{_i:"19-"+r}},[t._v(" "+t._$g("19-"+r,"t0-0")+" ")])],1)})),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}})],2)],1),i("uv-overlay",{attrs:{_i:21},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-textarea",{staticStyle:{width:"100%"},attrs:{maxlength:"-1",fixed:"true",_i:23},model:{value:t._$g(23,"v-model"),callback:function(e){t.$handleVModelEvent(23,e)},expression:"textareaValue"}})],1)],1),i("uni-view",{staticClass:t._$g(24,"sc"),class:t._$g(24,"c"),attrs:{_i:24}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u50a8\u5b58\u7a7a\u95f4/\u7167\u7247\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u8bfb\u53d6\u76f8\u518c\u548c\u6587\u4ef6\u5185\u5bb9\u3002")])],1),i("uni-view",{staticClass:t._$g(27,"sc"),class:t._$g(27,"c"),attrs:{_i:27}},[i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u76f8\u673a\u62cd\u6444\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u6240\u9700\u5185\u5bb9\u3002")])],1)],1)},r=[]},"2c41":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"2c47":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"class_select",props:["classId","secondClassId"],data:function(){return{wxsProps:{}}},components:{}}},"2c59":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"2c598":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".project[data-v-5a0b159a]{padding-left:10rpx}.project .project-tabs[data-v-5a0b159a]{position:relative;z-index:500;margin-bottom:30rpx;margin-top:30rpx}.project .project-tabs .tab-scroll .tab-container[data-v-5a0b159a]{display:flex;flex-wrap:nowrap;gap:130rpx}.project .project-tabs .tab-scroll .tab-container .tab-card[data-v-5a0b159a]{position:relative;padding-bottom:12rpx}.project .project-tabs .tab-scroll .tab-container .tab-card .tab-text[data-v-5a0b159a]{font-weight:500;font-size:28rpx;color:#000;line-height:40rpx}.project .project-tabs .tab-scroll .tab-container .tab-card .tab-card-price-img[data-v-5a0b159a]{width:13rpx;height:18rpx}.project .project-tabs .tab-scroll .tab-container .tab-card .active[data-v-5a0b159a]{color:#e8101e}.project .project-tabs .tab-scroll .tab-container .tab-card .tab-active-indicator[data-v-5a0b159a]{position:absolute;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:32rpx;height:6rpx;background:linear-gradient(107deg,#f84c63,#e8101e);border-radius:10rpx}.project .project-tabs .time-filter-popup[data-v-5a0b159a]{width:710rpx;background-color:#fff;opacity:0;height:0;transition:all .3s ease;box-shadow:0 4rpx 12rpx rgba(0,0,0,.1);border-radius:0 0 20rpx 20rpx;overflow:hidden;position:absolute;top:77rpx;left:-30rpx}.project .project-tabs .time-filter-popup.show[data-v-5a0b159a]{height:auto;opacity:1;visibility:visible}.project .project-tabs .time-filter-popup .time-filter-popup-tabs[data-v-5a0b159a]{display:flex;flex-wrap:wrap;padding:20rpx 15rpx;gap:20rpx 20rpx}.project .project-tabs .time-filter-popup .time-filter-popup-tabs .time-filter-popup-tab[data-v-5a0b159a]{width:155rpx;height:60rpx;background:#f6f4f5;border-radius:10rpx;font-size:26rpx;color:#333;display:flex;align-items:center;justify-content:center;transition:all .25s ease}.project .project-tabs .time-filter-popup .time-filter-popup-tabs .active[data-v-5a0b159a]{background:#ffecf0;color:#e8101e;font-weight:500;-webkit-transform:scale(1.05);transform:scale(1.05)}.project .project-tabs .time-filter-popup .popup-big-btns[data-v-5a0b159a]{display:flex;justify-content:space-between;gap:30rpx;padding:20rpx 30rpx 30rpx 30rpx;background:#fff}.project .project-tabs .time-filter-popup .popup-big-btns .btn-reset[data-v-5a0b159a],\n.project .project-tabs .time-filter-popup .popup-big-btns .btn-confirm[data-v-5a0b159a]{flex:1;width:350rpx;height:80rpx;line-height:80rpx;text-align:center;border-radius:10rpx;font-size:30rpx;font-weight:600}.project .project-tabs .time-filter-popup .popup-big-btns .btn-reset[data-v-5a0b159a]{color:#333;background:#f6f4f5}.project .project-tabs .time-filter-popup .popup-big-btns .btn-confirm[data-v-5a0b159a]{color:#fff;background:#f34}.popMsk[data-v-5a0b159a]{position:fixed;top:0;left:-20rpx;right:-20rpx;bottom:0;background:transparent;z-index:400}",""]),t.exports=e},"2cbc":function(t,e,i){"use strict";i.r(e);var a=i("d00c"),n=i("2721");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("c383");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"69899e90",null,!1,a["a"],void 0);e["default"]=o.exports},"2cc0":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".ruzhu-page{background:#f5f5f5}.content{padding:20rpx 20rpx 50rpx 20rpx;box-sizing:border-box}.xieyi_content{padding:20rpx;background:#fff;border-radius:20rpx}.ruzhu-cont{padding:24rpx;background-color:#fff}.ruzhu-text{font-size:28rpx;color:#3d3d3d;font-weight:400}.kong{width:100vw;height:180rpx}.bottom-fixed{position:fixed;left:0;bottom:0;right:0;background-color:#fff;padding:24rpx 0}.step-0-buttons{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center}.step-0-buttons .next-btn{width:702rpx;height:98rpx!important;display:flex;justify-content:center;align-items:center;background:linear-gradient(180deg,#f52540,#e8101e);border-radius:49rpx}.step-0-buttons .next-text{color:#fff;font-size:32rpx;font-weight:500}.step-1-buttons,\n.step-2-buttons{display:flex;justify-content:center;align-items:center}.step-1-buttons .next-btn{flex:1;height:98rpx;display:flex;justify-content:center;align-items:center;background:linear-gradient(180deg,#f52540,#e8101e);border-radius:49rpx}.step-1-buttons .next-text{color:#fff;font-size:32rpx;font-weight:500}.step-2-buttons .submit-btn{flex:1;height:98rpx;display:flex;justify-content:center;align-items:center;background:linear-gradient(180deg,#f52540,#e8101e);border-radius:49rpx}.step-2-buttons .submit-text{color:#fff;font-size:32rpx;font-weight:500}.prev-btn{width:249rpx;height:98rpx;display:flex;justify-content:center;align-items:center;background-color:#f8f8f8;border-radius:60rpx}.prev-text{color:#e8101e;font-size:36rpx;font-weight:500}.button-row{display:flex;justify-content:space-between;align-items:center;width:702rpx;height:147rpx;gap:20rpx}.agree{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;margin-bottom:24rpx}.agree-btn{width:32rpx;height:32rpx;margin-right:13rpx}.agree-tip{font-size:26rpx;font-weight:400;color:#666}.next-text{color:#fff;font-size:32rpx;font-weight:500}.prev-text{color:#333;font-size:32rpx;font-weight:500}.submit-text{color:#fff;font-size:32rpx;font-weight:500}",""]),t.exports=e},"2cda":function(t,e,i){"use strict";i.r(e);var a=i("105d"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"2ceb":function(t,e,i){"use strict";var a=i("8452"),n=i.n(a);n.a},"2ced":function(t,e,i){var a=i("23fd");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("5f91575b",a,!0,{sourceMap:!1,shadowMode:!1})},"2d07":function(t,e,i){"use strict";i.r(e);var a=i("4354"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"2d31":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-input",data:function(){return{wxsProps:{}}},components:{}}},"2d43":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,"body{background-color:#fff}.box-margin{height:24rpx;background-color:#fafafa}.phont-cont{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;background-color:#fff;padding:80rpx 0}.phone-img{width:124rpx;height:124rpx;margin-bottom:40rpx}.phone,.newpay{font-size:40rpx;font-weight:500;color:#333;margin-bottom:24rpx}.tip{font-size:28rpx;font-weight:400;color:#91908f}.getcode{background-color:#fff}.code{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;padding:32rpx 24rpx;border-bottom:1rpx solid rgba(0,0,0,.05)}.code-icon{width:40rpx;height:40rpx;margin-right:16rpx}.code-text{flex:1;font-size:28rpx;color:#333}.code-btn{font-size:28rpx;font-weight:400;color:#e8101e}.pay-cont{padding-top:168rpx;display:flex;flex-flow:column nowrap;justify-content:center;align-items:center}.pay-code{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;gap:16rpx;margin-top:48rpx}.pay-inp{width:80rpx;height:80rpx;border-radius:20rpx;background-color:#f5f6f8;text-align:center}",""]),t.exports=e},"2d90":function(t,e,i){var a=i("c1e8");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("c2ac6318",a,!0,{sourceMap:!1,shadowMode:!1})},"2d95":function(t,e,i){"use strict";i.r(e);var a=i("80d3"),n=i("8d07");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("bc91");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"2d9c":function(t,e,i){"use strict";var a=i("b80b"),n=i.n(a);n.a},"2dbf":function(t,e,i){var a=i("7298");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("c24c9b88",a,!0,{sourceMap:!1,shadowMode:!1})},"2de6":function(t,e,i){var a=i("9650");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("42ffc8ba",a,!0,{sourceMap:!1,shadowMode:!1})},"2e00":function(t,e,i){"use strict";i.r(e);var a=i("5a4e"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"2e0a":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,jpVerificationLiteralness:i("db3d").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),class:t._$g(0,"c"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),t._$g(2,"i")?i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._v(" \u8f93\u5165\u9a8c\u8bc1\u7801\u67e5\u770b\u8bc1\u4ef6\u4fe1\u606f ")]),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-input",{staticClass:t._$g(6,"sc"),attrs:{maxlength:"4",placeholder:"\u8bf7\u8f93\u5165\u9a8c\u8bc1\u7801","placeholder-class":"code-input-placeholder",_i:6},model:{value:t._$g(6,"v-model"),callback:function(e){t.$handleVModelEvent(6,e)},expression:"value"}})],1),i("jp-verification-literalness",{ref:"literalness",attrs:{_i:7}})],1),i("uni-view",{staticClass:t._$g(8,"sc"),class:t._$g(8,"c"),attrs:{_i:8},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u67e5\u8be2 ")])],1):t._e(),t._$g(9,"i")?i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u8d44\u8d28\u8ba4\u8bc1")]),t._$g(11,"i")?i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("v-uni-image",{staticClass:t._$g(13,"sc"),attrs:{src:"/static/images/syr/card.png",mode:"aspectFit",_i:13}}),t._v(" \u5065\u5eb7\u8bc1 ")],1),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("v-uni-image",{staticClass:t._$g(15,"sc"),attrs:{src:t._$g(15,"a-src"),mode:"widthFix",_i:15}}),i("wmWatermark",{attrs:{_i:16}})],1)],1):t._e(),t._$g(17,"i")?i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("v-uni-image",{staticClass:t._$g(19,"sc"),attrs:{src:"/static/images/syr/card.png",mode:"aspectFit",_i:19}}),t._v(" \u8d44\u8d28\u8bc1\u4e66 ")],1),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("v-uni-image",{staticClass:t._$g(21,"sc"),attrs:{src:t._$g(21,"a-src"),mode:"widthFix",_i:21}}),i("wmWatermark",{attrs:{_i:22}})],1)],1):t._e(),t._$g(23,"i")?i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("v-uni-image",{staticClass:t._$g(25,"sc"),attrs:{src:"/static/images/syr/card.png",mode:"aspectFit",_i:25}}),t._v(" \u8425\u4e1a\u6267\u7167 ")],1),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[i("v-uni-image",{staticClass:t._$g(27,"sc"),attrs:{src:t._$g(27,"a-src"),mode:"widthFix",_i:27}}),i("wmWatermark",{attrs:{_i:28}})],1)],1):t._e(),t._$g(29,"i")?i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[i("v-uni-image",{staticClass:t._$g(31,"sc"),attrs:{src:"/static/images/syr/card.png",mode:"aspectFit",_i:31}}),t._v(" \u95e8\u5934\u7167\u7247 ")],1),i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[i("v-uni-image",{staticClass:t._$g(33,"sc"),attrs:{src:t._$g(33,"a-src"),mode:"aspectFill",_i:33}})],1)],1):t._e()],1):t._e(),i("v-uni-canvas",{staticStyle:{width:"1px",height:"1px",position:"absolute",left:"-9999rpx",top:"-9999rpx"},attrs:{"canvas-id":"watermark-canvas",_i:34}})],1)},r=[]},"2e14":function(t,e,i){"use strict";i.r(e);var a=i("1c6c"),n=i("14fa");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("94c8");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"2832c752",null,!1,a["a"],void 0);e["default"]=o.exports},"2e36":function(t,e,i){"use strict";var a=i("d326"),n=i.n(a);n.a},"2e77":function(t,e,i){var a=i("ad6c");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("d83af56c",a,!0,{sourceMap:!1,shadowMode:!1})},"2ea5":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("6473")),r={data:function(){return{wxsProps:{}}},components:{customNavbar:n.default}};e.default=r},"2edd":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("1ef6");e=a(!1);var s=n(r);e.push([t.i,'body{background-color:#fff;padding-bottom:40rpx}.artisan-page{position:relative}.artisan-page::before{content:"";position:fixed;top:0;left:0;right:0;height:1200rpx!important;background-image:url('+s+');background-size:cover;background-position:top;background-repeat:no-repeat;z-index:1}.bg{position:relative}.bg::before{content:"";position:fixed;top:0;left:0;right:0;height:272rpx!important;\r\nheight:calc(272rpx + var(--status-bar-height))!important;\r\nbackground-image:url('+s+");background-size:cover;background-position:top;background-repeat:no-repeat;z-index:999}.profile-section,\r\n.switch-section,\r\n.order-types,\r\n.order-list,\r\n.nothings-box{position:relative;z-index:99}.profile-section{position:fixed;top:88rpx;left:0;right:0;height:184rpx;z-index:999;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;padding:0 24rpx}.profile-info{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center}.avatar{width:96rpx;height:96rpx;border-radius:50rpx;margin-right:24rpx;background-color:#333;border:4rpx solid #fff}.name{font-size:36rpx;font-weight:700;color:#000}.welcome{font-size:24rpx;color:#000}.center-text{color:#000;font-size:28rpx}.switch-section{margin:184rpx 24rpx 32rpx;height:80rpx;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;font-size:28rpx;background-color:#f7eff2;border-radius:40rpx;padding:0 32rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.switch-box{height:52rpx;line-height:52rpx;border-radius:26rpx;background-color:#31bd54;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:0 6rpx}.switch-text{font-size:28rpx;color:#fff}.switch-yuan{width:40rpx;height:40rpx;border-radius:20rpx;background-color:#fff;margin-left:4rpx}.switch-box.disswitch{background-color:rgba(0,0,0,.1)}.switch-box.disswitch .switch-yuan{margin-left:0;margin-right:4rpx}.switch-tip{font-size:24rpx;color:#666}.competition-section{margin:24rpx;background-color:#fff;border-radius:12rpx;padding:24rpx;display:flex;justify-content:space-between;align-items:center}.comp-left{display:flex;align-items:center}.trophy-icon{width:48rpx;height:48rpx;margin-right:16rpx}.comp-right{display:flex;align-items:center;color:#999;font-size:24rpx}.arrow-icon{width:32rpx;height:32rpx;margin-left:8rpx}.statistics-section{margin:24rpx;background-color:#fff;border-radius:12rpx;padding:24rpx}.stat-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24rpx}.stat-title{font-size:32rpx;font-weight:500}.time-filter{display:flex;align-items:center;font-size:24rpx;color:#999}.time-filter uni-text{margin-left:24rpx}.time-filter .active{color:#e8101e}.chart-container{height:400rpx;margin-bottom:24rpx}.order-types{display:flex;justify-content:flex-start;gap:22rpx;margin:32rpx 24rpx 24rpx}.order-type-item{width:214rpx;height:56rpx;background-color:#fff;border:1rpx solid #e8101e;border-radius:8rpx;display:flex;justify-content:center;align-items:center;position:relative;box-sizing:border-box}.type-name{font-size:24rpx;color:#e8101e}.type-count{display:block;position:absolute;top:-12rpx;right:-12rpx;font-size:24rpx;color:#fff;font-weight:500;width:32rpx;height:32rpx;text-align:center;line-height:28rpx;border-radius:16rpx;border:2rpx solid #fff;box-sizing:border-box;background-color:#f53f3f}.order-type-item.active{background-color:#e8101e}.order-type-item.active .type-name{color:#fff;font-weight:500}.order-list{margin:24rpx}.order-item{background-color:#fff;border-radius:16rpx;padding:32rpx;margin-bottom:24rpx;box-shadow:0 8rpx 16rpx 0 rgba(210,213,224,.5)}.order-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8rpx}.service-name{font-size:28rpx;color:#333;font-weight:500;flex:1}.order-info{margin-bottom:32rpx;display:flex;flex-flow:column nowrap;justify-content:center;align-items:flex-start}.address,\r\n.service-time,\r\n.order-number{flex:1;font-size:24rpx;color:#666}.order-footer{display:flex;justify-content:space-between;align-items:center}.order-actions{padding-top:32rpx;border-top:1rpx solid rgba(0,0,0,.05);display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center;gap:24rpx}.action-btn{padding:8rpx 12rpx;display:flex;justify-content:center;align-items:center;border-radius:6rpx}.action-btn.cancel,\r\n.action-btn.confirm{border:1rpx solid rgba(51,51,51,.12);box-sizing:border-box}.action-btn.cancel .action-text,\r\n.action-btn.confirm .action-text{font-size:28rpx;color:#333;font-weight:400}.action-btn.verify{border:1rpx solid rgba(252,67,124,.12);box-sizing:border-box}.action-btn.verify .action-text{font-size:28rpx;color:#e8101e}.nothings-box{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:280rpx 0 0}.nothings-text{font-size:32rpx;font-weight:500;color:#999;text-align:center;font-style:italic}\n.nav-bar{padding-top:0}.profile-section{top:calc(var(--status-bar-height) + 88)rpx}\r\n\r\n",""]),t.exports=e},"2ee8":function(t,e,i){"use strict";var a=i("bf3a"),n=i.n(a);n.a},"2ef3":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".success-page{min-height:100vh;background-color:#fff;padding-bottom:env(safe-area-inset-bottom)}.success-content{display:flex;flex-direction:column;align-items:center;padding-top:120rpx}.success-icon{width:250rpx;height:184rpx;margin-bottom:40rpx}.success-text{font-size:40rpx;color:#333;font-weight:500}.action-button{width:686rpx;height:88rpx;background:#ff4b4b;border-radius:44rpx;color:#fff;font-size:32rpx;display:flex;align-items:center;justify-content:center;margin:80rpx auto 0}\n.success-page{padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}\r\n\r\n",""]),t.exports=e},"2efa":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("v-uni-input",{staticClass:t._$g(5,"sc"),attrs:{type:"text",placeholder:"\u5de5\u65f6\u540d\u79f0","placeholder-class":"placeholder",_i:5},on:{confirm:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(5,"v-model"),callback:function(e){t.$handleVModelEvent(5,e)},expression:"title"}}),i("v-uni-image",{staticClass:t._$g(6,"sc"),attrs:{src:"/static/home/search.png",mode:"aspectFit",_i:6},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(8,"sc"),attrs:{src:"/static/images/icons/add_time.png",_i:8}}),i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u6dfb\u52a0\u5de5\u65f6")])],1)],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},t._l(t._$g(11,"f"),(function(e,a,n,r){return i("uni-view",{key:e,class:t._$g("11-"+r,"c"),attrs:{_i:"11-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("11-"+r,"t0-0")+" ")])})),1)],1),t._$g(12,"i")?i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},t._l(t._$g(13,"f"),(function(e,a,n,r){return i("manHourCard",{key:e,attrs:{_i:"13-"+r},on:{viewEdit:function(e){return t.$handleViewEvent(e)},viewList:function(e){return t.$handleViewEvent(e)},viewRemove:function(e){return t.$handleViewEvent(e)},changeSlide:function(e){return t.$handleViewEvent(e)},deletemanHour:function(e){return t.$handleViewEvent(e)}}})})),1):i("noData",{attrs:{_i:14}}),t._$g(15,"i")?i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("v-uni-text",{attrs:{_i:16}},[t._v("\u5df2\u52a0\u8f7d\u5168\u90e8")])],1):t._e(),i("tipsPopup",{attrs:{_i:17},on:{okBtn:function(e){return t.$handleViewEvent(e)},closePopup:function(e){return t.$handleViewEvent(e)}}})],1)},r=[]},"2f44":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"2f67":function(t,e,i){var a=i("43e6");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("70a9b14e",a,!0,{sourceMap:!1,shadowMode:!1})},"2fe6":function(t,e,i){"use strict";i.r(e);var a=i("d763"),n=i("2d07");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},3e3:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uniTransition:i("f0cb").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$g(0,"i")?i("uni-view",{staticClass:t._$g(0,"sc"),class:t._$g(0,"c"),attrs:{_i:0}},[i("uni-view",{attrs:{_i:1},on:{touchstart:function(e){return t.$handleViewEvent(e)}}},[t._$g(2,"i")?i("uni-transition",{key:"1",attrs:{_i:2},on:{click:function(e){return t.$handleViewEvent(e)}}}):t._e(),i("uni-transition",{key:"2",attrs:{_i:3},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(4,"sc"),class:t._$g(4,"c"),style:t._$g(4,"s"),attrs:{_i:4},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._t("default",null,{_i:5})],2)],1)],1)],1):t._e()},r=[]},"302d":function(t,e,i){"use strict";i.r(e);var a=i("6996"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"304a":function(t,e,i){t.exports=i.p+"static/images/id_ren.png"},"304e":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".service-skills-page[data-v-06b65fae]{background-color:#f5f5f5;min-height:100vh;box-sizing:border-box;display:flex;flex-direction:column}.page-content[data-v-06b65fae]{flex:1;overflow-y:auto;padding:20rpx 0;box-sizing:border-box}.audit-tip[data-v-06b65fae]{margin:20rpx 24rpx 20rpx 24rpx;border-radius:12rpx}.audit-text[data-v-06b65fae]{font-weight:400;font-size:32rpx;color:#333;text-align:center;display:block}.reject-reason[data-v-06b65fae]{background:transparent;padding:24rpx}.reject-title[data-v-06b65fae]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:center;font-style:normal}.reject-detail[data-v-06b65fae]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:28rpx;color:#999;line-height:40rpx;text-align:center;font-style:normal;margin-top:12rpx}.skills-header[data-v-06b65fae]{display:flex;align-items:center;margin-bottom:20rpx}.title-bar[data-v-06b65fae]{width:6rpx;height:30rpx;background-color:#e8101e;margin-right:10rpx;border-radius:5rpx}.skills-title[data-v-06b65fae]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#1d2129;line-height:48rpx;text-align:left;font-style:normal}.skills-subtitle[data-v-06b65fae]{margin-left:20rpx;margin-bottom:20rpx;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal}.box-cont[data-v-06b65fae]{background:#fff;border-radius:20rpx;margin:4rpx 24rpx 24rpx 24rpx;box-shadow:none}.skills-container[data-v-06b65fae]{padding:32rpx}.skills-list[data-v-06b65fae]{display:flex;flex-wrap:wrap;margin:0 4rpx}.skill-item[data-v-06b65fae]{width:100%;display:flex;align-items:center;padding:20rpx 16rpx;box-sizing:border-box}.checkbox-wrapper[data-v-06b65fae]{margin-right:20rpx}.checkbox[data-v-06b65fae]{width:40rpx;height:40rpx;border:2rpx solid #ddd;border-radius:8rpx;display:flex;align-items:center;justify-content:center}.checkbox.checked[data-v-06b65fae]{background-color:#e8101e;border-color:#e8101e}.check-icon[data-v-06b65fae]{width:42rpx;height:42rpx}.skill-name[data-v-06b65fae]{font-size:28rpx;color:#333}.bottom-actions[data-v-06b65fae]{position:fixed;bottom:0;left:0;right:0;padding:0rpx 24rpx 40rpx 24rpx;background:#fff;z-index:100}.action-btn[data-v-06b65fae]{height:88rpx;border-radius:43rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:400}.change-info-btn[data-v-06b65fae]{margin-top:20rpx;background:linear-gradient(180deg,#f52540,#e8101e)}.view-change-btn[data-v-06b65fae]{margin-top:20rpx;background:linear-gradient(180deg,#f52540,#e8101e)}.action-buttons-row[data-v-06b65fae]{display:flex;justify-content:space-between;margin:20rpx 30rpx}.action-buttons-row .action-btn[data-v-06b65fae]{width:270rpx}.cancel-btn[data-v-06b65fae]{background:#e5e5e5;border-radius:43rpx;padding:0 15rpx}.submit-btn[data-v-06b65fae]{background:linear-gradient(180deg,#f52540,#e8101e 100%,#e8101e 0);border-radius:43rpx;padding:0 15rpx}.btn-text[data-v-06b65fae]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:36rpx;color:#fff;line-height:50rpx;text-align:left;font-style:normal}.cancel-text[data-v-06b65fae]{color:#666}",""]),t.exports=e},3067:function(t,e,i){"use strict";i.r(e);var a=i("84ce"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},3087:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uvTabbar:i("00c1").default,uvTabbarItem:i("5813").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uv-tabbar",{attrs:{_i:0},on:{change:function(e){return t.$handleViewEvent(e)}}},t._l(t._$g(1,"f"),(function(e,a,n,r){return i("uv-tabbar-item",{key:e,attrs:{_i:"1-"+r},scopedSlots:t._u([{key:"active-icon",fn:function(t,e,a){return[i("v-uni-image",{staticClass:e._$g("3-"+r+"-"+a,"sc"),attrs:{src:e._$g("3-"+r+"-"+a,"a-src"),_i:"3-"+r+"-"+a}})]}},{key:"inactive-icon",fn:function(t,e,a){return[i("v-uni-image",{staticClass:e._$g("5-"+r+"-"+a,"sc"),attrs:{src:e._$g("5-"+r+"-"+a,"a-src"),_i:"5-"+r+"-"+a}})]}}],null,!0)})})),1)},r=[]},"30cd":function(t,e,i){var a=i("517e");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("0490d882",a,!0,{sourceMap:!1,shadowMode:!1})},"30df":function(t,e,i){"use strict";var a=i("2d90"),n=i.n(a);n.a},"30e5":function(t,e,i){"use strict";i.r(e);var a=i("0940"),n=i("5bec");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("10d7");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"b97c11e8",null,!1,a["a"],void 0);e["default"]=o.exports},3144:function(t,e,i){"use strict";i.r(e);var a=i("b4f1"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"31a2":function(t,e,i){"use strict";i.r(e);var a=i("209c"),n=i("17cd");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("0db2");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"8cc68e48",null,!1,a["a"],void 0);e["default"]=o.exports},"31da":function(t,e,i){"use strict";i.r(e);var a=i("7d2e"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"31df":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={agreeRadio:i("a6d8").default,aliOssUploader:i("93a6").default,popupPicker:i("2077").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[t._$g(1,"i")?i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("v-uni-image",{staticClass:t._$g(2,"sc"),attrs:{src:"/static/images/shop/pintuan/warn.png",_i:2}}),i("v-uni-text",{attrs:{_i:3}},[t._v(t._$g(3,"t0-0"))])],1):t._e(),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u670d\u52a1\u540d\u79f0")]),i("v-uni-input",{staticClass:t._$g(7,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u670d\u52a1\u540d\u79f0","placeholder-class":"placeholder",_i:7},model:{value:t._$g(7,"v-model"),callback:function(e){t.$handleVModelEvent(7,e)},expression:"formData.title"}})],1),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u670d\u52a1\u4ef7\u683c")]),i("v-uni-input",{staticClass:t._$g(10,"sc"),attrs:{type:"digit",placeholder:"\u8bf7\u8f93\u5165\u670d\u52a1\u4ef7\u683c\uff0c\u6700\u591a\u4e24\u4f4d\u5c0f\u6570","placeholder-class":"placeholder",step:"0.01",_i:10},on:{input:function(e){return t.$handleViewEvent(e)},blur:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(10,"v-model"),callback:function(){},expression:"formData.server_price"}})],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v("\u670d\u52a1\u5206\u7c7b")]),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{class:t._$g(14,"c"),attrs:{_i:14}},[t._v(" "+t._$g(14,"t0-0")+" ")]),i("v-uni-image",{staticClass:t._$g(15,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:15}})],1)],1),t._$g(16,"i")?i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v("\u670d\u52a1\u5b50\u7c7b")]),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{class:t._$g(19,"c"),attrs:{_i:19}},[t._v(" "+t._$g(19,"t0-0")+" ")]),i("v-uni-image",{staticClass:t._$g(20,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:20}})],1)],1):t._e(),t._$g(21,"i")?i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v(" \u662f\u5426\u5141\u8bb8\u8be5\u670d\u52a1\u5728\u95e8\u5e97\u7aef\u552e\u5356\uff0c\u4ee5\u4f9b\u95e8\u5e97\u4e0b\u5355\u8d2d\u4e70\u3002 "+t._$g(22,"t0-0")+" "),t._$g(23,"i")?i("v-uni-text",{staticStyle:{color:"#E8101E"},attrs:{_i:23}},[t._v(t._$g(23,"t0-0"))]):t._e(),t._v(" "+t._$g(22,"t2-0")+" ")],1),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("agree-radio",{attrs:{_i:26}}),i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v("\u5141\u8bb8")])],1),i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("agree-radio",{attrs:{_i:29}}),i("v-uni-text",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[t._v("\u4e0d\u5141\u8bb8")])],1)],1)],1):t._e(),i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[i("v-uni-text",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v("\u670d\u52a1\u65f6\u957f")]),i("v-uni-input",{staticClass:t._$g(33,"sc"),attrs:{type:"number",placeholder:"\u8bf7\u8f93\u5165\u670d\u52a1\u65f6\u95f4","placeholder-class":"placeholder",_i:33},model:{value:t._$g(33,"v-model"),callback:function(e){t.$handleVModelEvent(33,e)},expression:"formData.server_time"}}),i("v-uni-text",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[t._v("\u5206\u949f")])],1),i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[i("v-uni-text",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v("\u56fe\u6587\u8be6\u60c5")]),i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[i("v-uni-text",{attrs:{_i:39},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(t._$g(39,"t0-0"))])],1)],1)],1),i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[i("v-uni-text",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[t._v("\u670d\u52a1\u7b80\u4ecb")]),i("uni-view",{staticClass:t._$g(43,"sc"),attrs:{_i:43}},[i("v-uni-text",{attrs:{_i:44},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u6dfb\u52a0")]),t._$g(45,"i")?i("v-uni-scroll-view",{staticClass:t._$g(45,"sc"),attrs:{"scroll-y":"true",_i:45}},t._l(t._$g(46,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("46-"+r,"sc"),attrs:{_i:"46-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("46-"+r,"t0-0"))])})),1):t._e()],1)],1),t._l(t._$g(47,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("47-"+r,"sc"),attrs:{_i:"47-"+r}},[i("v-uni-text",{staticClass:t._$g("48-"+r,"sc"),attrs:{_i:"48-"+r}},[t._v(t._$g("48-"+r,"t0-0"))]),i("v-uni-textarea",{staticClass:t._$g("49-"+r,"sc"),attrs:{_i:"49-"+r},model:{value:t._$g("49-"+r,"v-model"),callback:function(e){t.$handleVModelEvent("49-"+r,e)},expression:"formData.detail[i].text"}}),i("v-uni-image",{staticClass:t._$g("50-"+r,"sc"),attrs:{src:"/static/images/delete_icon.png",mode:"aspectFit",_i:"50-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})],1)}))],2),i("uni-view",{staticClass:t._$g(51,"sc"),attrs:{_i:51}},[i("uni-view",{staticClass:t._$g(52,"sc"),attrs:{_i:52}},[i("v-uni-text",{staticClass:t._$g(53,"sc"),attrs:{_i:53}},[t._v("\u670d\u52a1\u6d41\u7a0b")]),i("v-uni-text",{attrs:{_i:54},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u6dfb\u52a0")])],1),t._l(t._$g(55,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("55-"+r,"sc"),attrs:{_i:"55-"+r}},[i("v-uni-text",{staticClass:t._$g("56-"+r,"sc"),attrs:{_i:"56-"+r}},[t._v("\u7b2c"+t._$g("56-"+r,"t0-0")+"\u6b65")]),i("v-uni-input",{staticClass:t._$g("57-"+r,"sc"),attrs:{type:"text",_i:"57-"+r},model:{value:t._$g("57-"+r,"v-model"),callback:function(e){t.$handleVModelEvent("57-"+r,e)},expression:"formData.process[i].text"}}),i("v-uni-image",{staticClass:t._$g("58-"+r,"sc"),attrs:{src:"/static/images/delete_icon.png",mode:"aspectFit",_i:"58-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})],1)}))],2),i("uni-view",{staticClass:t._$g(59,"sc"),attrs:{_i:59}},[i("uni-view",{attrs:{_i:60}},[i("v-uni-text",{staticClass:t._$g(61,"sc"),attrs:{_i:61}},[t._v("\u4e0a\u4f20\u77ed\u89c6\u9891")]),i("v-uni-text",{staticClass:t._$g(62,"sc"),attrs:{_i:62}},[t._v("(\u4ec5\u53ef\u4e0a\u4f201\u4e2a\u89c6\u9891)")])],1),i("ali-oss-uploader",{attrs:{_i:63},on:{success:function(e){return t.$handleViewEvent(e)},error:function(e){return t.$handleViewEvent(e)},delete:function(e){return t.$handleViewEvent(e)},ckeckisShowPer:function(e){return t.$handleViewEvent(e)},ckecknowQer:function(e){return t.$handleViewEvent(e)}}})],1),i("uni-view",{staticClass:t._$g(64,"sc"),attrs:{_i:64}},[i("uni-view",{attrs:{_i:65}},[i("v-uni-text",{staticClass:t._$g(66,"sc"),attrs:{_i:66}},[t._v("\u670d\u52a1\u56fe\u7247")]),i("v-uni-text",{staticClass:t._$g(67,"sc"),attrs:{_i:67}},[t._v("(\u4ec5\u53ef\u4e0a\u4f209\u4e2a\u56fe\u7247)")])],1),i("ali-oss-uploader",{attrs:{_i:68},on:{success:function(e){return t.$handleViewEvent(e)},error:function(e){return t.$handleViewEvent(e)},delete:function(e){return t.$handleViewEvent(e)},ckeckisShowPer:function(e){return t.$handleViewEvent(e)},ckecknowQer:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(68,"v-model"),callback:function(){},expression:"formData.photo"}})],1)],1),i("uni-view",{staticClass:t._$g(69,"sc"),attrs:{_i:69}},[t._$g(70,"i")?i("v-uni-button",{staticClass:t._$g(70,"sc"),attrs:{_i:70},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u5b58\u8349\u7a3f")]):t._e(),i("v-uni-button",{staticClass:t._$g(71,"sc"),attrs:{_i:71},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u63d0\u4ea4")])],1),i("popup-picker",{attrs:{_i:72},on:{close:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}}}),i("popup-picker",{attrs:{_i:73},on:{close:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}}}),t._$g(74,"i")?i("uni-view",{staticClass:t._$g(74,"sc"),attrs:{_i:74},on:{click:function(e){return t.$handleViewEvent(e)}}}):t._e(),i("uni-view",{staticClass:t._$g(75,"sc"),class:t._$g(75,"c"),attrs:{_i:75}},[i("uni-view",{staticClass:t._$g(76,"sc"),attrs:{_i:76}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u50a8\u5b58\u7a7a\u95f4/\u7167\u7247\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(77,"sc"),attrs:{_i:77}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u8bfb\u53d6\u76f8\u518c\u548c\u6587\u4ef6\u5185\u5bb9\u3002")])],1),i("uni-view",{staticClass:t._$g(78,"sc"),class:t._$g(78,"c"),attrs:{_i:78}},[i("uni-view",{staticClass:t._$g(79,"sc"),attrs:{_i:79}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u76f8\u673a\u62cd\u6444\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(80,"sc"),attrs:{_i:80}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u6240\u9700\u5185\u5bb9\u3002")])],1)],1)},r=[]},"31e4":function(t,e,i){var a=i("ad94");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("19e9ca2c",a,!0,{sourceMap:!1,shadowMode:!1})},"31ed":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),t._$g(2,"i")?i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-text",{attrs:{_i:3}},[t._v("\u8bf7\u53d8\u66f4\u60a8\u9700\u8981\u53d8\u66f4\u7684\u4fe1\u606f")])],1):t._e(),i("uni-view",{staticClass:t._$g(4,"sc"),style:t._$g(4,"s"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}}),i("v-uni-text",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v("\u8425\u4e1a\u6267\u7167")])],1),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u8d44\u8d28\u7167\u7247")]),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u8bf7\u4fdd\u8bc1\u56fe\u7247\u4e0a\u7684\u6587\u5b57\u6e05\u6670\u3001\u65e0\u906e\u6321\u3001\u8bc1\u4ef6\u8fb9\u89d2\u53ef\u89c1")]),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._$g(15,"i")?i("v-uni-image",{staticClass:t._$g(15,"sc"),attrs:{src:t._$g(15,"a-src"),mode:"aspectFill",_i:15}}):i("v-uni-image",{staticClass:t._$g(16,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/92bd4268-b4d7-4725-8664-9e44f828c7d9",mode:"aspectFit",_i:16}})],1)],1),i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v("\u8bf7\u4e0a\u4f20\u8425\u4e1a\u6267\u7167\u539f\u4ef6")])],1)],1),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v("\u5546\u6237\u7c7b\u578b")])],1),i("v-uni-input",{staticClass:t._$g(21,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u5546\u6237\u7c7b\u578b",disabled:t._$g(21,"a-disabled"),"placeholder-class":"placeholder",_i:21},model:{value:t._$g(21,"v-model"),callback:function(e){t.$handleVModelEvent(21,e)},expression:"displayData.uscc_type"}})],1),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[i("v-uni-text",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[t._v("\u8bc1\u4ef6\u53f7\u7801")]),i("v-uni-image",{staticClass:t._$g(25,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25bd7f38-1a3e-4282-84ea-190d7f820108",mode:"aspectFit",_i:25},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("v-uni-input",{staticClass:t._$g(26,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u8425\u4e1a\u6267\u7167\u7684\u8bc1\u4ef6\u53f7\u7801",disabled:t._$g(26,"a-disabled"),"placeholder-class":"placeholder",_i:26},model:{value:t._$g(26,"v-model"),callback:function(e){t.$handleVModelEvent(26,e)},expression:"displayData.uscc_num"}})],1),i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[i("v-uni-text",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v("\u4f01\u4e1a\u540d\u79f0")]),i("v-uni-image",{staticClass:t._$g(30,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25bd7f38-1a3e-4282-84ea-190d7f820108",mode:"aspectFit",_i:30},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("v-uni-input",{staticClass:t._$g(31,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u8425\u4e1a\u6267\u7167\u7684\u4f01\u4e1a\u540d\u79f0",disabled:t._$g(31,"a-disabled"),"placeholder-class":"placeholder",_i:31},model:{value:t._$g(31,"v-model"),callback:function(e){t.$handleVModelEvent(31,e)},expression:"displayData.uscc_name"}})],1)],1),i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34}}),i("v-uni-text",{attrs:{_i:35}},[t._v("\u6cd5\u4eba\u4fe1\u606f")])],1),i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[i("v-uni-text",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v("\u8eab\u4efd\u8bc1\u7167\u7247")]),i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[t._v("\u8bf7\u4fdd\u8bc1\u56fe\u7247\u4e0a\u7684\u6587\u5b57\u6e05\u6670\u3001\u65e0\u906e\u6321\u3001\u8bc1\u4ef6\u8fb9\u89d2\u53ef\u89c1")]),i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[i("uni-view",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[i("uni-view",{staticClass:t._$g(43,"sc"),attrs:{_i:43},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(44,"sc"),attrs:{_i:44}},[t._$g(45,"i")?i("v-uni-image",{staticClass:t._$g(45,"sc"),attrs:{src:t._$g(45,"a-src"),mode:"aspectFill",_i:45}}):i("v-uni-image",{staticClass:t._$g(46,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/043b0c97-79c1-4f95-810f-c33e3d5269a3",mode:"aspectFit",_i:46}})],1)],1),i("v-uni-text",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[t._v("\u8bf7\u4e0a\u4f20\u8eab\u4efd\u8bc1\u6b63\u9762\uff08\u4eba\u50cf\u9762\uff09")])],1),i("uni-view",{staticClass:t._$g(48,"sc"),attrs:{_i:48}},[i("uni-view",{staticClass:t._$g(49,"sc"),attrs:{_i:49},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(50,"sc"),attrs:{_i:50}},[t._$g(51,"i")?i("v-uni-image",{staticClass:t._$g(51,"sc"),attrs:{src:t._$g(51,"a-src"),mode:"aspectFill",_i:51}}):i("v-uni-image",{staticClass:t._$g(52,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/203cfdf4-2501-44e6-8565-ad251c6bf0fa",mode:"aspectFit",_i:52}})],1)],1),i("v-uni-text",{staticClass:t._$g(53,"sc"),attrs:{_i:53}},[t._v("\u8bf7\u4e0a\u4f20\u8eab\u4efd\u8bc1\u53cd\u9762\uff08\u56fd\u5fbd\u9762\uff09")])],1)],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(54,"sc"),attrs:{_i:54}},[i("uni-view",{staticClass:t._$g(55,"sc"),attrs:{_i:55}},[i("v-uni-text",{staticClass:t._$g(56,"sc"),attrs:{_i:56}},[t._v("\u6cd5\u4eba\u4ee3\u8868")]),i("v-uni-image",{staticClass:t._$g(57,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25bd7f38-1a3e-4282-84ea-190d7f820108",mode:"aspectFit",_i:57},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("v-uni-input",{staticClass:t._$g(58,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u8425\u4e1a\u6267\u7167\u7684\u6cd5\u4eba\u4ee3\u8868",disabled:t._$g(58,"a-disabled"),"placeholder-class":"placeholder",_i:58},model:{value:t._$g(58,"v-model"),callback:function(e){t.$handleVModelEvent(58,e)},expression:"displayData.legal_name"}})],1),i("uni-view",{staticClass:t._$g(59,"sc"),attrs:{_i:59}},[i("v-uni-text",{staticClass:t._$g(60,"sc"),attrs:{_i:60}},[t._v("\u6cd5\u4eba\u8054\u7cfb\u65b9\u5f0f")]),i("v-uni-input",{staticClass:t._$g(61,"sc"),attrs:{type:"number",placeholder:"\u8bf7\u8f93\u5165\u6cd5\u4eba\u7684\u8054\u7cfb\u65b9\u5f0f",disabled:t._$g(61,"a-disabled"),"placeholder-class":"placeholder",_i:61},model:{value:t._$g(61,"v-model"),callback:function(e){t.$handleVModelEvent(61,e)},expression:"displayData.legal_phone"}})],1),i("uni-view",{staticClass:t._$g(62,"sc"),attrs:{_i:62}},[i("v-uni-text",{staticClass:t._$g(63,"sc"),attrs:{_i:63}},[t._v("\u6cd5\u4eba\u8eab\u4efd\u8bc1\u53f7")]),i("v-uni-input",{staticClass:t._$g(64,"sc"),attrs:{type:"idcard",placeholder:"\u8bf7\u8f93\u5165\u6cd5\u4eba\u8eab\u4efd\u8bc1\u53f7",disabled:t._$g(64,"a-disabled"),"placeholder-class":"placeholder",_i:64},model:{value:t._$g(64,"v-model"),callback:function(e){t.$handleVModelEvent(64,e)},expression:"displayData.legal_idcard_num"}})],1),i("uni-view",{staticClass:t._$g(65,"sc"),attrs:{_i:65}},[i("v-uni-text",{staticClass:t._$g(66,"sc"),attrs:{_i:66}},[t._v("\u8eab\u4efd\u8bc1\u6709\u6548\u671f\u81f3")]),i("uni-view",{staticClass:t._$g(67,"sc"),attrs:{_i:67}},[i("uni-view",{staticClass:t._$g(68,"sc"),attrs:{_i:68},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(69,"sc"),class:t._$g(69,"c"),attrs:{_i:69}},[t._$g(70,"i")?i("v-uni-image",{staticClass:t._$g(70,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/cb185ec8-9d30-4e53-b5dc-14b546013a60",mode:"aspectFit",_i:70}}):t._e()],1),i("v-uni-text",{staticClass:t._$g(71,"sc"),attrs:{_i:71}},[t._v("\u957f\u4e45\u6709\u6548")])],1),i("uni-view",{staticClass:t._$g(72,"sc"),attrs:{_i:72},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(73,"sc"),class:t._$g(73,"c"),attrs:{_i:73}},[t._$g(74,"i")?i("v-uni-image",{staticClass:t._$g(74,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/cb185ec8-9d30-4e53-b5dc-14b546013a60",mode:"aspectFit",_i:74}}):t._e()],1),i("v-uni-text",{staticClass:t._$g(75,"sc"),attrs:{_i:75}},[t._v("\u6307\u5b9a\u65e5\u671f\u6709\u6548")])],1)],1)],1),i("uni-view",{staticClass:t._$g(76,"sc"),attrs:{_i:76}},[i("uni-view",{staticClass:t._$g(77,"sc"),attrs:{_i:77}},[i("uni-view",{staticClass:t._$g(78,"sc"),attrs:{_i:78}},[i("v-uni-text",{staticClass:t._$g(79,"sc"),attrs:{_i:79}},[t._v("\u5f00\u59cb\u65e5\u671f")]),i("uni-view",{staticClass:t._$g(80,"sc"),attrs:{_i:80},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{class:t._$g(81,"c"),attrs:{_i:81}},[t._v(" "+t._$g(81,"t0-0")+" ")]),i("uni-view",{staticClass:t._$g(82,"sc"),attrs:{_i:82}}),i("v-uni-image",{staticClass:t._$g(83,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ce52b49f-2261-49ca-96ed-e9ad47049649",mode:"aspectFit",_i:83}})],1)],1),i("uni-view",{staticClass:t._$g(84,"sc"),attrs:{_i:84}},[i("v-uni-text",{staticClass:t._$g(85,"sc"),attrs:{_i:85}},[t._v("\u7ed3\u675f\u65e5\u671f")]),i("uni-view",{staticClass:t._$g(86,"sc"),class:t._$g(86,"c"),attrs:{_i:86},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{class:t._$g(87,"c"),attrs:{_i:87}},[t._v(" "+t._$g(87,"t0-0")+" ")]),i("uni-view",{staticClass:t._$g(88,"sc"),attrs:{_i:88}}),i("v-uni-image",{staticClass:t._$g(89,"sc"),attrs:{src:t._$g(89,"a-src"),mode:"aspectFit",_i:89}})],1)],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(90,"sc"),attrs:{_i:90}})],1),i("uni-view",{ref:"buttonArea",staticClass:t._$g(91,"sc"),attrs:{_i:91}},[t._$g(92,"i")?i("uni-view",{staticClass:t._$g(92,"sc"),attrs:{_i:92}},[i("uni-view",{staticClass:t._$g(93,"sc"),attrs:{_i:93}},[t._v("\u60a8\u7684\u63d0\u4ea4\u5df2\u9a73\u56de")]),i("uni-view",{staticClass:t._$g(94,"sc"),attrs:{_i:94}},[t._v("\u9a73\u56de\u539f\u56e0\uff1a"+t._$g(94,"t0-0"))])],1):t._e(),t._$g(95,"i")?i("uni-view",{staticClass:t._$g(95,"sc"),attrs:{_i:95}},[i("v-uni-text",{staticClass:t._$g(96,"sc"),attrs:{_i:96}},[t._v("\u60a8\u7684\u63d0\u4ea4\u53d8\u66f4\u6b63\u5728\u5ba1\u6838\u4e2d...")])],1):t._e(),t._$g(97,"i")?i("uni-view",{staticClass:t._$g(97,"sc"),attrs:{_i:97},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(98,"sc"),attrs:{_i:98}},[t._v("\u53d8\u66f4\u4fe1\u606f")])],1):t._e(),t._$g(99,"i")?i("uni-view",{staticClass:t._$g(99,"sc"),attrs:{_i:99}},[i("uni-view",{staticClass:t._$g(100,"sc"),attrs:{_i:100},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(101,"sc"),attrs:{_i:101}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(102,"sc"),attrs:{_i:102},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(103,"sc"),attrs:{_i:103}},[t._v("\u63d0\u4ea4")])],1)],1):t._e(),t._$g(104,"i")?i("uni-view",{staticClass:t._$g(104,"sc"),attrs:{_i:104},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(105,"sc"),attrs:{_i:105}},[t._v(t._$g(105,"t0-0"))])],1):t._e(),t._$g(106,"i")?i("uni-view",{staticClass:t._$g(106,"sc"),attrs:{_i:106},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(107,"sc"),attrs:{_i:107}},[t._v("\u91cd\u65b0\u63d0\u4ea4")])],1):t._e()],1),i("uni-view",{staticClass:t._$g(108,"sc"),class:t._$g(108,"c"),attrs:{_i:108}},[i("uni-view",{staticClass:t._$g(109,"sc"),attrs:{_i:109},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(110,"sc"),attrs:{_i:110}},[i("uni-view",{staticClass:t._$g(111,"sc"),attrs:{_i:111}},[i("v-uni-text",{staticClass:t._$g(112,"sc"),attrs:{_i:112}},[t._v("\u9009\u62e9\u5546\u6237\u7c7b\u578b")]),i("v-uni-text",{staticClass:t._$g(113,"sc"),attrs:{_i:113},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\xd7")])],1),i("uni-view",{staticClass:t._$g(114,"sc"),attrs:{_i:114}},[i("uni-view",{staticClass:t._$g(115,"sc"),attrs:{_i:115}},t._l(t._$g(116,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("116-"+r,"sc"),attrs:{_i:"116-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("117-"+r,"sc"),class:t._$g("117-"+r,"c"),attrs:{_i:"117-"+r}},[t._$g("118-"+r,"i")?i("v-uni-image",{staticClass:t._$g("118-"+r,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/cb185ec8-9d30-4e53-b5dc-14b546013a60",mode:"aspectFit",_i:"118-"+r}}):t._e()],1),i("v-uni-text",{staticClass:t._$g("119-"+r,"sc"),attrs:{_i:"119-"+r}},[t._v(t._$g("119-"+r,"t0-0"))])],1)})),1)],1),i("uni-view",{staticClass:t._$g(120,"sc"),attrs:{_i:120}},[i("uni-view",{staticClass:t._$g(121,"sc"),attrs:{_i:121},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(122,"sc"),attrs:{_i:122}},[t._v("\u786e\u5b9a")])],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(123,"sc"),class:t._$g(123,"c"),attrs:{_i:123}},[i("uni-view",{staticClass:t._$g(124,"sc"),attrs:{_i:124},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(125,"sc"),attrs:{_i:125}},[i("uni-view",{staticClass:t._$g(126,"sc"),attrs:{_i:126}},[i("v-uni-text",{staticClass:t._$g(127,"sc"),attrs:{_i:127},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")]),i("v-uni-text",{staticClass:t._$g(128,"sc"),attrs:{_i:128}},[t._v("\u9009\u62e9\u65e5\u671f")]),i("v-uni-text",{staticClass:t._$g(129,"sc"),attrs:{_i:129},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1),i("uni-view",{staticClass:t._$g(130,"sc"),attrs:{_i:130}},[i("v-uni-picker-view",{staticClass:t._$g(131,"sc"),attrs:{value:t._$g(131,"a-value"),"indicator-style":t._$g(131,"a-indicator-style"),mode:"date",fields:"day",_i:131},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-picker-view-column",{attrs:{_i:132}},t._l(t._$g(133,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("133-"+r,"sc"),attrs:{_i:"133-"+r}},[t._v(t._$g("133-"+r,"t0-0")+"\u5e74")])})),1),i("v-uni-picker-view-column",{attrs:{_i:134}},t._l(t._$g(135,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("135-"+r,"sc"),attrs:{_i:"135-"+r}},[t._v(t._$g("135-"+r,"t0-0")+"\u6708")])})),1),i("v-uni-picker-view-column",{attrs:{_i:136}},t._l(t._$g(137,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("137-"+r,"sc"),attrs:{_i:"137-"+r}},[t._v(t._$g("137-"+r,"t0-0")+"\u65e5")])})),1)],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(138,"sc"),class:t._$g(138,"c"),attrs:{_i:138}},[i("uni-view",{staticClass:t._$g(139,"sc"),attrs:{_i:139},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(140,"sc"),attrs:{_i:140}},[i("v-uni-image",{staticClass:t._$g(141,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ab410a5d-5819-47f2-a0fc-3fd6b90d6770",mode:"aspectFit",_i:141}}),i("uni-view",{staticClass:t._$g(142,"sc"),attrs:{_i:142}},[i("uni-view",{staticClass:t._$g(143,"sc"),attrs:{_i:143}},[t._v(t._$g(143,"t0-0"))]),i("uni-view",{staticClass:t._$g(144,"sc"),attrs:{_i:144}},[i("v-uni-image",{staticClass:t._$g(145,"sc"),attrs:{src:t._$g(145,"a-src"),mode:"widthFix",_i:145}})],1),i("uni-view",{staticClass:t._$g(146,"sc"),attrs:{_i:146}},[i("uni-view",{staticClass:t._$g(147,"sc"),attrs:{_i:147},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(148,"sc"),attrs:{_i:148}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(149,"sc"),attrs:{_i:149},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(150,"sc"),attrs:{_i:150}},[t._v("\u6211\u5df2\u4e86\u89e3")])],1)],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(151,"sc"),class:t._$g(151,"c"),attrs:{_i:151}},[i("uni-view",{staticClass:t._$g(152,"sc"),attrs:{_i:152}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u50a8\u5b58\u7a7a\u95f4/\u7167\u7247\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(153,"sc"),attrs:{_i:153}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u8bfb\u53d6\u76f8\u518c\u548c\u6587\u4ef6\u5185\u5bb9\u3002")])],1),i("uni-view",{staticClass:t._$g(154,"sc"),class:t._$g(154,"c"),attrs:{_i:154}},[i("uni-view",{staticClass:t._$g(155,"sc"),attrs:{_i:155}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u76f8\u673a\u62cd\u6444\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(156,"sc"),attrs:{_i:156}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u6240\u9700\u5185\u5bb9\u3002")])],1)],1)},r=[]},"31fd":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),t._$g(2,"i")?i("select-time-page2",{ref:"selecTime",attrs:{_i:2},on:{changeTime:function(e){return t.$handleViewEvent(e)}}}):t._e(),t._$g(3,"i")?i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u60a8\u9009\u62e9\u7684\u65f6\u95f4\u6bb5")]),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v(t._$g(5,"t0-0"))])],1):t._e(),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-image",{staticClass:t._$g(9,"sc"),attrs:{src:t._$g(9,"a-src"),_i:9}})],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v(t._$g(11,"t0-0"))]),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v("\uffe5"+t._$g(12,"t0-0")+"\u5143/10\u5206\u949f")])],1),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}}),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v("\u539f\u4ef7")]),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._v("\uffe5"+t._$g(16,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\u5c0f\u8ba1")]),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v("\uffe5"+t._$g(19,"t0-0"))])],1)],1)],1),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v("\uffe5"+t._$g(22,"t0-0"))]),i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v("\u8ba2\u5355\u5c0f\u8ba1")])],1),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u63d0\u4ea4\u8ba2\u5355")])],1)],1)},r=[]},3226:function(t,e,i){var a=i("f7a0");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("c02a34d6",a,!0,{sourceMap:!1,shadowMode:!1})},3242:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-text",{staticStyle:{color:"#999999"},attrs:{_i:3}},[t._v("\u670d\u52a1\u65f6\u6bb5\uff1a")]),t._v(t._$g(2,"t1-0"))],1),t._$g(4,"i")?i("uni-view",{staticClass:t._$g(4,"sc"),class:t._$g(4,"c"),attrs:{_i:4}},[t._v(" "+t._$g(4,"t0-0")+" ")]):t._e()],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(6,"sc"),attrs:{src:t._$g(6,"a-src"),mode:"aspectFill",_i:6}}),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v(t._$g(10,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u4e0b\u5355\u65f6\u95f4\uff1a"+t._$g(11,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("v-uni-text",{staticStyle:{"font-size":"24rpx"},attrs:{_i:13}},[t._v("\uffe5")]),t._v(t._$g(12,"t1-0")+" ")],1)],1)],1),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._$g(15,"i")?i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u53d6\u6d88\u8ba2\u5355")]):t._e(),t._$g(16,"i")?i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u53bb\u652f\u4ed8")]):t._e(),t._$g(17,"i")?i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u7533\u8bf7\u9000\u6b3e")]):t._e(),t._$g(18,"i")?i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u518d\u6765\u4e00\u5355")]):t._e(),t._$g(19,"i")?i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u91cd\u65b0\u9884\u8ba2")]):t._e()],1)],1)},n=[]},"32a8":function(t,e,i){var a=i("1376");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("eae3fb7e",a,!0,{sourceMap:!1,shadowMode:!1})},"32b0":function(t,e,i){"use strict";var a=i("6738"),n=i.n(a);n.a},"330e":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";uni-view[data-v-8302844a], uni-scroll-view[data-v-8302844a], uni-swiper-item[data-v-8302844a]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-link[data-v-8302844a]{line-height:1;display:flex;flex-direction:row;flex-wrap:wrap;flex:1;color:#3c9cff}',""]),t.exports=e},3315:function(t,e,i){"use strict";var a=i("4ef5"),n=i.n(a);n.a},"332b":function(t,e,i){"use strict";var a=i("c5ff"),n=i.n(a);n.a},"33b4":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},t._l(t._$g(2,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("2-"+r,"sc"),attrs:{_i:"2-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("3-"+r,"sc"),attrs:{src:t._$g("3-"+r,"a-src"),_i:"3-"+r}}),i("uni-view",{staticClass:t._$g("4-"+r,"sc"),class:t._$g("4-"+r,"c"),attrs:{_i:"4-"+r}},[t._v(t._$g("4-"+r,"t0-0"))])],1)})),1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u7b5b\u9009\u9879")]),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},t._l(t._$g(8,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("8-"+r,"sc"),class:t._$g("8-"+r,"c"),attrs:{_i:"8-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(t._$g("8-"+r,"t0-0"))])})),1)],1),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u6ce8\u610f\uff1a")]),i("v-uni-text",{attrs:{_i:11}},[t._v(" \u624b\u827a\u4eba\u53ef\u6309\u9700\u53d1\u5e03\u5de5\u65f6\u7684\u4ef7\u683c\u3002\u82e5\u4e0d\u540c\u670d\u52a1\uff08\u5982\u5feb\u6d17\u4e0e\u70eb\u53d1\uff09\u5de5\u65f6\u4ef7\u683c\u5b58\u5728\u5dee\u5f02\uff0c\u9700\u5206\u522b\u53d1\u5e03\u5bf9\u5e94\u5de5\u65f6\u670d\u52a1\u4fe1\u606f\uff1b\u82e5\u4ef7\u683c\u76f8\u540c\uff0c\u5219\u4ec5\u9700\u53d1\u5e03\u4e00\u6b21\u5de5\u65f6\u670d\u52a1\u4fe1\u606f\uff0c\u5e76\u540c\u65f6\u52fe\u9009\u201c\u5feb\u6d17\u201d\u548c\u201c\u70eb\u53d1\u201d\u4e24\u9879\u670d\u52a1\u3002")])],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1)],1)},n=[]},"33b5":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("3959")),r={data:function(){return{wxsProps:{}}},components:{selectTimePage2:n.default}};e.default=r},"33d7":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"class_select",props:["classId","secondClassId"],data:function(){return{wxsProps:{}}},components:{}}},"33df":function(t,e,i){"use strict";var a=i("49e1"),n=i.n(a);n.a},3409:function(t,e,i){"use strict";i.r(e);var a=i("89fb"),n=i("b92e");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"3e106eac",null,!1,a["a"],void 0);e["default"]=o.exports},"343c":function(t,e,i){"use strict";i.r(e);var a=i("56e7"),n=i("5baf");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("ef61");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"bcbe6396",null,!1,a["a"],void 0);e["default"]=o.exports},3448:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-checkbox",data:function(){return{wxsProps:{}}},components:{}}},"344f":function(t,e,i){"use strict";i.r(e);var a=i("db5f"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"34c3":function(t,e,i){"use strict";i.r(e);var a=i("2f44"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"353e":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.select-serve[data-v-75d93d00]{background-color:#f5f5f5;min-height:100vh;padding-bottom:160rpx}.select-serve .select-tip[data-v-75d93d00]{margin-top:20rpx;background:rgba(232,16,30,.1);padding:20rpx;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:24rpx;color:#333;line-height:33rpx;text-align:left;font-style:normal}.select-serve .select-serve-footer[data-v-75d93d00]{background-color:#fff;position:fixed;bottom:0;left:0;right:0;padding:40rpx 30rpx}.select-serve .select-serve-footer__btn[data-v-75d93d00]{width:690rpx;height:78rpx;background:#e8101e;border-radius:798rpx;display:flex;align-items:center;justify-content:center;font-weight:400;font-size:30rpx;color:#fff;line-height:39rpx;text-align:center;font-style:normal}',""]),t.exports=e},"35dc":function(t,e,i){"use strict";i.r(e);var a=i("ece0"),n=i("9148");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("136a");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"35ed":function(t,e,i){t.exports=i.p+"static/images/background/selfOperatedTip.png"},3601:function(t,e,i){var a=i("0856");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("6cb888fa",a,!0,{sourceMap:!1,shadowMode:!1})},"360f":function(t,e,i){"use strict";i.r(e);var a=i("1105"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},3618:function(t,e,i){t.exports=i.p+"static/images/wallet/tipBj.png"},"362d":function(t,e,i){var a=i("d35d");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("a486b2ae",a,!0,{sourceMap:!1,shadowMode:!1})},"363e":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this.$createElement,e=this._self._c||t;return e("uni-view",{staticClass:this._$g(0,"sc"),style:this._$g(0,"s"),attrs:{_i:0}},[this._t("default",[e("v-uni-text",{staticClass:this._$g(2,"sc"),attrs:{_i:2}},[this._v(this._$g(2,"t0-0"))])],{_i:1})],2)},n=[]},3650:function(t,e,i){"use strict";i.r(e);var a=i("1b40"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},3672:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"36ae":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".noData[data-v-2f04fed8]{display:flex;align-items:center;flex-direction:column;height:100%}.noData .noData-img[data-v-2f04fed8]{margin-top:154rpx;width:348rpx;height:348rpx}.noData .noData-text[data-v-2f04fed8]{width:100%;font-weight:400;font-size:28rpx;color:#666;line-height:40rpx;text-align:center;font-style:normal}",""]),t.exports=e},"36b8":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1},scopedSlots:t._u([{key:"right",fn:function(e,a,n){return[i("uni-view",{staticClass:a._$g("3-"+n,"sc"),attrs:{_i:"3-"+n},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:a._$g("4-"+n,"sc"),attrs:{src:"/static/images/icons/record.png",_i:"4-"+n}}),i("uni-view",{staticClass:a._$g("5-"+n,"sc"),attrs:{_i:"5-"+n}},[t._v("\u9080\u8bf7\u8bb0\u5f55")])],1)]}}])}),i("searchBox",{staticClass:t._$g(6,"sc"),attrs:{_i:6},on:{confirm:function(e){return t.$handleViewEvent(e)},search:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(6,"v-model"),callback:function(){},expression:"queryData.phone"}}),i("v-uni-scroll-view",{style:t._$g(7,"s"),attrs:{"scroll-y":!0,_i:7}},[t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("v-uni-image",{staticClass:t._$g(10,"sc"),attrs:{src:t._$g(10,"a-src"),mode:"aspectFill",_i:10}}),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("v-uni-text",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v(t._$g(13,"t0-0"))]),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u8fdb\u5165\u8be6\u60c5")])],1),i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("v-uni-text",{attrs:{_i:16}},[t._v("\u64c5\u957f\uff1a"+t._$g(16,"t0-0"))])],1)],1)],1),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}}),i("v-uni-text",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v("\u670d\u52a1\u9879\u76ee")])],1),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{attrs:{_i:23}},[t._v("\u8bf7\u9009\u670d\u52a1\u9879\u76ee")]),i("v-uni-image",{staticClass:t._$g(24,"sc"),attrs:{src:"/static/images/icons/right_20_40.png",_i:24}})],1)],1),i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[i("v-uni-text",{attrs:{_i:26}},[t._v("\u60a8\u9009\u62e9\u7684\u670d\u52a1\u9879\u76ee\uff1a")])],1),t._l(t._$g(27,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("27-"+r,"sc"),attrs:{_i:"27-"+r}},[i("v-uni-text",{staticClass:t._$g("28-"+r,"sc"),attrs:{_i:"28-"+r}},[t._v(t._$g("28-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("29-"+r,"sc"),attrs:{_i:"29-"+r}},[i("v-uni-text",{staticClass:t._$g("30-"+r,"sc"),attrs:{_i:"30-"+r}},[t._v(t._$g("30-"+r,"t0-0")+"\uff08\u4ef7\u683c"+t._$g("30-"+r,"t0-1")+"\uff09")])],1),i("v-uni-text",{staticClass:t._$g("31-"+r,"sc"),attrs:{_i:"31-"+r}},[t._v(t._$g("31-"+r,"t0-0")+"\u5206\u949f")])],1)}))],2)],1):t._e(),t._$g(32,"i")?i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[i("v-uni-image",{staticClass:t._$g(34,"sc"),attrs:{src:"/static//images/icons/tip_icon.png",_i:34}}),t._v("\u6e29\u99a8\u63d0\u793a\uff1a ")],1),i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[i("v-uni-text",{staticStyle:{color:"#e8101e"},attrs:{_i:36}},[t._v("\u95e8\u5e97\u5546\u5bb6\u4e3b\u52a8\u9080\u8bf7\u5165\u9a7b\u7684")]),i("v-uni-text",{attrs:{_i:37}},[t._v("\u5408\u4f5c\u578b\u670d\u52a1\u4ece\u4e1a\u8005\uff0c\u9700\u7ebf\u4e0b\u8fbe\u6210\u5408\u4f5c\u534f\u8bae\u540e\uff0c\u9080\u8bf7\u5458\u5de5\u5165\u9a7b\u6210\u4e3a\u6302\u9760\u624b\u827a\u4eba\u540e\uff0c\u518d\u8fdb\u884c\u6dfb\u52a0\u64cd\u4f5c\u3002")])],1)],1):t._e(),t._$g(38,"i")?i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[i("uni-view",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[i("v-uni-image",{staticClass:t._$g(40,"sc"),attrs:{src:"/static//images/icons/tip_icon.png",_i:40}}),t._v("\u6e29\u99a8\u63d0\u793a\uff1a ")],1),i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[i("v-uni-text",{attrs:{_i:42}},[t._v("\u95e8\u5e97\u5546\u5bb6\u4e3b\u52a8\u9080\u8bf7\u5165\u9a7b\u7684\u5408\u4f5c\u578b\u670d\u52a1\u4ece\u4e1a\u8005\uff0c\u9700\u7ebf\u4e0b\u8fbe\u6210\u5408\u4f5c\u534f\u8bae\u540e\uff0c")]),i("v-uni-text",{staticStyle:{color:"#e8101e"},attrs:{_i:43}},[t._v("\u5458\u5de5\u5165\u9a7b\u6210\u4e3a\u95e8\u5e97\u624b\u827a\u4eba\u540e(\u641c\u7d22\u7f8e\u878d\u878d\u624b\u827a\u4eba)")]),i("v-uni-text",{attrs:{_i:44}},[t._v("\uff0c\u518d\u8fdb\u884c\u6dfb\u52a0\u64cd\u4f5c\u3002")])],1)],1):t._e(),t._$g(45,"i")?i("uni-view",{staticClass:t._$g(45,"sc"),attrs:{_i:45},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[t._v("\u9080\u8bf7\u5458\u5de5")])],1):t._e()],1)],1)},r=[]},"36c5":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.mask{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.2);z-index:999}.profile-list{background-color:#fff;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5);padding:0 24rpx;box-sizing:border-box}.profile-item{display:flex;align-items:center;justify-content:space-between;padding:32rpx 0;border-bottom:1rpx solid rgba(0,0,0,.05)}.profile-item:last-child{border-bottom:none}.item-label{font-size:28rpx;color:#333}.item-content{flex:1;display:flex;align-items:center;justify-content:flex-end}.item-value{font-size:28rpx;color:#333}.avatar-content{height:108rpx}.avatar{width:108rpx;height:108rpx;border-radius:54rpx;background-color:#333}.edit-btn{position:fixed;bottom:24rpx;left:60rpx;width:630rpx;height:96rpx;background:#e8101e;border-radius:58rpx;display:flex;align-items:center;justify-content:center}.edit-text{font-size:40rpx;color:#fff}.region-body{flex:1;overflow:hidden}.item-inp{text-align:right}.picker-scroll{height:400rpx}.popup{position:fixed;left:0;right:0;bottom:0;z-index:999;visibility:hidden;opacity:0;transition:all .3s ease}.popup.show{visibility:visible;opacity:1}.popup-mask{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.popup-content{position:relative;background-color:#fff;border-radius:24rpx 24rpx 0 0;padding:32rpx;-webkit-transform:translateY(100%);transform:translateY(100%);transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.popup.show .popup-content{-webkit-transform:translateY(0);transform:translateY(0)}.popup-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20rpx}.popup-title{font-size:32rpx;color:#333;font-weight:500}.popup-close{font-size:40rpx;color:#999;padding:16rpx}.popup-body{max-height:600rpx;overflow-y:auto}.region-tabs{display:flex;border-bottom:1rpx solid #eee;margin-bottom:20rpx}.region-tab{flex:1;text-align:center;padding:20rpx 0;font-size:28rpx;color:#666;position:relative}.region-tab.active{color:#e8101e;font-weight:500}.region-tab.active::after{content:"";position:absolute;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:40rpx;height:4rpx;background-color:#e8101e;border-radius:2rpx}.region-body{flex:1;overflow:hidden}.region-scroll{height:100%}.picker-scroll{height:400rpx}.picker-item{height:68rpx;line-height:68rpx;text-align:center}.popup-footer{display:flex;margin-top:32rpx}.popup-btn{flex:1;height:88rpx;border-radius:44rpx;display:flex;align-items:center;justify-content:center;margin:0 16rpx}.popup-btn.cancel{background-color:#f5f5f5}.popup-btn.confirm{background:linear-gradient(90deg,#e8101e,#ff618f)}.popup-btn .btn-text{font-size:32rpx;font-weight:500}.popup-btn.cancel .btn-text{color:#666}.popup-btn.confirm .btn-text{color:#fff}.permission.transform{top:calc(var(--status-bar-height) + 88rpx + 20rpx);opacity:1;visibility:visible}\r\n\r\n\r\n\r\n',""]),t.exports=e},"373a":function(t,e,i){var a=i("23eb");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("0631de10",a,!0,{sourceMap:!1,shadowMode:!1})},"378d":function(t,e,i){"use strict";i.r(e);var a=i("1ef3"),n=i("ce2f");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("92a3");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"19b020e2",null,!1,a["a"],void 0);e["default"]=o.exports},"37af":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"37bd":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".filter-popup__content__right__items[data-v-e69ab350]{display:flex;flex-wrap:wrap;gap:10rpx;margin-bottom:40rpx}.filter-popup__content__right__items__title[data-v-e69ab350]{width:100%;font-weight:500;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal;margin-bottom:14rpx}.filter-popup__content__right__items__item[data-v-e69ab350]{width:178rpx;height:78rpx;background:#f3f6f8;border-radius:10rpx;display:flex;align-items:center;justify-content:center;border:1rpx solid #f3f6f8}.filter-popup__content__right__items .active[data-v-e69ab350]{background:rgba(252,67,124,.1);color:#e8101e;border:1rpx solid #e8101e}",""]),t.exports=e},"37fa":function(t,e,i){var a=i("dc2f");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("7a542401",a,!0,{sourceMap:!1,shadowMode:!1})},3804:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"ServiceListItem",props:["list"],data:function(){return{wxsProps:{}}},components:{}}},3860:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"ServeCard",props:[],data:function(){return{wxsProps:{}}},components:{}}},"387d":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"lime-painter",data:function(){return{wxsProps:{}}},components:{}}},"38eb":function(t,e,i){"use strict";var a=i("3a46"),n=i.n(a);n.a},"391f":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},3959:function(t,e,i){"use strict";i.r(e);var a=i("43d9"),n=i("8b1b");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("6d18");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"2cd35e08",null,!1,a["a"],void 0);e["default"]=o.exports},3979:function(t,e,i){"use strict";i.r(e);var a=i("dbf7"),n=i("a43d");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("bc6e");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"39f7":function(t,e,i){"use strict";i.r(e);var a=i("6c78"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"39fa":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("2077")),r=a(i("86f7")),s=a(i("93a6")),o=a(i("9499")),c={data:function(){return{wxsProps:{}}},components:{PopupPicker:n.default,CircleProgress:r.default,AliOssUploader:s.default,class_select:o.default}};e.default=c},"3a14":function(t,e,i){"use strict";var a=i("2f67"),n=i.n(a);n.a},"3a26":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("0fdc");e=a(!1);var s=n(r);e.push([t.i,".serveList .header-card{background-image:url("+s+");background-position:top;background-repeat:no-repeat;background-size:cover}.serveList .header-card .header-top{height:88rpx;padding:0 24rpx}.serveList .header-card .header-top .left-area{display:flex;align-items:center}.serveList .header-card .header-top .left-area .back-icon{width:36rpx;height:36rpx}.serveList .header-card .header-top .left-area .left-area-img{width:144rpx;height:52rpx;margin-left:20rpx}.serveList .header-bottom{background-image:url("+s+");background-position:bottom;background-repeat:no-repeat;background-size:cover;height:145rpx;position:relative}.serveList .header-bottom .header-bottom-tip{position:absolute;top:10rpx;left:30rpx}.serveList .header-bottom .header-bottom-tip .header-bottom-tip-icon{width:25rpx;height:23rpx}.serveList .header-bottom .header-bottom-tip .header-bottom-tip-text{margin-left:7rpx;font-weight:400;font-size:24rpx;color:#fff4f6;line-height:33rpx;text-align:left;font-style:normal}.serveList .header-bottom .header-bottom-tip .header-bottom-tip-btn{margin-left:30rpx;font-weight:400;font-size:20rpx;color:#fff4f6;text-align:left;font-style:normal;height:34rpx;border-radius:17rpx;border:1rpx solid hsla(0,0%,100%,.31);padding:0 11rpx 0 14rpx}.serveList .header-bottom .header-bottom-tip .header-bottom-tip-btn .header-bottom-tip-btn-icon{width:7rpx;height:13rpx;margin-left:6rpx}.serveList .serveList-content .serveList-tabs{width:100%;background:linear-gradient(180deg,#f9e2e3,#fff);border-radius:20rpx 20rpx 0 0;padding-bottom:24rpx}.serveList .serveList-content .serveList-tabs .service-first-tab{box-shadow:none}.serveList .serveList-content .serveList-tabs .icon-tabs{margin-top:24rpx;padding:0 30rpx;display:flex;gap:13rpx}.serveList .serveList-content .serveList-tabs .icon-tabs .icon-tab{box-sizing:border-box;width:168rpx;height:56rpx;background:#f0f0f0;border-radius:6rpx}.serveList .serveList-content .serveList-tabs .icon-tabs .icon-tab .icon-text{font-weight:400;font-size:26rpx;color:#666;text-align:center;font-style:normal}.serveList .serveList-content .serveList-tabs .icon-tabs .active{background:rgba(252,67,124,.1)}.serveList .serveList-content .serveList-tabs .icon-tabs .active .icon-text{font-weight:500;color:#e8101e}.positonFixed{position:fixed;top:0;left:0;right:0}.common-list{background-color:initial!important;padding-bottom:0rpx}.common-list .list-scroll{margin-top:0rpx}.common-list .list-container{padding:0rpx}",""]),t.exports=e},"3a46":function(t,e,i){var a=i("550f");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("16d3fde4",a,!0,{sourceMap:!1,shadowMode:!1})},"3a53":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("6473")),r={data:function(){return{wxsProps:{}}},components:{customNavbar:n.default}};e.default=r},"3a9a":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),style:t._$g(1,"s"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),style:t._$g(2,"s"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._$g(4,"i")?i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:t._$g(5,"a-src"),mode:"aspectFit",_i:5}})],1):t._e(),t._t("left",null,{_i:6})],2),i("v-uni-text",{staticClass:t._$g(7,"sc"),style:t._$g(7,"s"),attrs:{_i:7}},[t._v(t._$g(7,"t0-0"))]),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._t("right",[t._$g(10,"i")?i("v-uni-image",{staticClass:t._$g(10,"sc"),attrs:{src:t._$g(10,"a-src"),mode:"aspectFit",_i:10},on:{click:function(e){return t.$handleViewEvent(e)}}}):t._e()],{_i:9})],2)],1)],1),i("uni-view",{staticClass:t._$g(11,"sc"),style:t._$g(11,"s"),attrs:{_i:11}})],1)},n=[]},"3ae9":function(t,e,i){var a=i("e962");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("32bba4a6",a,!0,{sourceMap:!1,shadowMode:!1})},"3b00":function(t,e,i){"use strict";i.r(e);var a=i("586f"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"3b4f":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}}),i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u670d\u52a1\u65f6\u95f4")])],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u670d\u52a1\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v(t._$g(10,"t0-0"))])],1),t._$g(11,"i")?i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v("\u4fe1\u606f\u53d8\u66f4 ")]),i("v-uni-image",{staticClass:t._$g(13,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/b87d4918-4282-4f51-931c-292435ba5d36",mode:"aspectFit",_i:13}})],1):t._e()],1)],1),i("uni-view",{staticClass:t._$g(14,"sc"),class:t._$g(14,"c"),attrs:{_i:14}},[i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")]),i("v-uni-text",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v("\u9009\u62e9\u670d\u52a1\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1),i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("uni-view",{staticClass:t._$g(22,"sc"),class:t._$g(22,"c"),attrs:{_i:22},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v(t._$g(23,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[t._v("\u5f00\u59cb\u65f6\u95f4")])],1),i("v-uni-text",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v("\u81f3")]),i("uni-view",{staticClass:t._$g(26,"sc"),class:t._$g(26,"c"),attrs:{_i:26},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v(t._$g(27,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[t._v("\u7ed3\u675f\u65f6\u95f4")])],1)],1),i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[i("v-uni-picker-view",{staticClass:t._$g(30,"sc"),attrs:{value:t._$g(30,"a-value"),"indicator-style":t._$g(30,"a-indicator-style"),_i:30},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-picker-view-column",{attrs:{_i:31}},t._l(t._$g(32,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("32-"+r,"sc"),attrs:{_i:"32-"+r}},[t._v(" "+t._$g("32-"+r,"t0-0")+" ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:33}},t._l(t._$g(34,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("34-"+r,"sc"),attrs:{_i:"34-"+r}},[t._v(" "+t._$g("34-"+r,"t0-0")+" ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:35}},[i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[t._v("-")])],1),i("v-uni-picker-view-column",{attrs:{_i:37}},t._l(t._$g(38,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("38-"+r,"sc"),attrs:{_i:"38-"+r}},[t._v(" "+t._$g("38-"+r,"t0-0")+" ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:39}},t._l(t._$g(40,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("40-"+r,"sc"),attrs:{_i:"40-"+r}},[t._v(" "+t._$g("40-"+r,"t0-0")+" ")])})),1)],1)],1)],1)],1),t._$g(41,"i")?i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[i("uni-view",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[i("v-uni-button",{staticClass:t._$g(43,"sc"),attrs:{_i:43},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")]),i("v-uni-button",{staticClass:t._$g(44,"sc"),attrs:{_i:44},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u63d0\u4ea4")])],1)],1):t._e()],1)],1)},r=[]},"3b58":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,uvModal:i("ad36").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-text",{staticStyle:{color:"#E8101E"},attrs:{_i:3}},[t._v("\u6e29\u99a8\u63d0\u793a\uff1a")]),t._v("\u652f\u6301 \u5feb\u901f\u8bbe\u7f6e\u201c\u767e\u5206\u6bd4\u201d\uff08\u5982\u6bcf\u5355\u8fd4 2%\uff09\u4f63\u91d1\uff0c\u6210\u529f\u6210\u4ea4\u7684\u8ba2\u5355\uff0c\u7cfb\u7edf\u4f1a\u6309\u7167\u5b9e\u4ed8\u91d1\u989d*\u4f63\u91d1\u6bd4\u4f8b\u8fdb\u884c\u6263\u51cf\u3002 ")],1),t._l(t._$g(4,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("4-"+r,"sc"),attrs:{_i:"4-"+r}},[i("v-uni-image",{staticClass:t._$g("5-"+r,"sc"),attrs:{src:t._$g("5-"+r,"a-src"),mode:"aspectFill",_i:"5-"+r}}),i("uni-view",{staticClass:t._$g("6-"+r,"sc"),attrs:{_i:"6-"+r}},[i("uni-view",{staticClass:t._$g("7-"+r,"sc"),attrs:{_i:"7-"+r}},[t._v(t._$g("7-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("8-"+r,"sc"),attrs:{_i:"8-"+r}},[t._v("\xa5"),i("v-uni-text",{staticStyle:{"font-size":"30rpx"},attrs:{_i:"9-"+r}},[t._v(t._$g("9-"+r,"t0-0"))])],1),i("uni-view",{staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r}},[i("v-uni-text",{staticClass:t._$g("11-"+r,"sc"),attrs:{_i:"11-"+r}},[t._v("\u8bbe\u7f6e\u4f63\u91d1\u6bd4\u4f8b")]),i("uni-view",{staticClass:t._$g("12-"+r,"sc"),attrs:{_i:"12-"+r}},[i("uni-view",{staticClass:t._$g("13-"+r,"sc"),attrs:{_i:"13-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("-")]),i("uni-view",{staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[i("v-uni-input",{staticClass:t._$g("15-"+r,"sc"),attrs:{type:"number",placeholder:"\u8bf7\u8f93\u5165\u6bd4\u4f8b",_i:"15-"+r},on:{input:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g("15-"+r,"v-model"),callback:function(){},expression:"item.numberValue"}}),i("v-uni-text",{staticClass:t._$g("16-"+r,"sc"),attrs:{_i:"16-"+r}},[t._v("%")])],1),i("uni-view",{staticClass:t._$g("17-"+r,"sc"),attrs:{_i:"17-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("+")])],1)],1),i("uni-view",{directives:[{name:"show",rawName:"v-show",value:t._$g("18-"+r,"v-show"),expression:"_$g((\"18-\"+$30),'v-show')"}],staticClass:t._$g("18-"+r,"sc"),attrs:{_i:"18-"+r}},[t._v(" \u9884\u4f30\u4f63\u91d1:"+t._$g("18-"+r,"t0-0")+" "),i("v-uni-image",{staticClass:t._$g("19-"+r,"sc"),attrs:{src:"/static/images/recruit/tip.png",_i:"19-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})],1)],1)],1)})),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1),i("uv-modal",{ref:"modal",attrs:{_i:22},scopedSlots:t._u([{key:"confirmButton",fn:function(e,a,n){return[i("uni-view",{staticClass:a._$g("26-"+n,"sc"),attrs:{type:"default",_i:"26-"+n},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])]}}])},[i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v(" \u9884\u4f30\u4f63\u91d1\u6309"),i("v-uni-text",{staticStyle:{color:"#E8101E"},attrs:{_i:24}},[t._v("\u300c\u8ba2\u5355\u5b9e\u4ed8\u91d1\u989d \xd7 \u4f63\u91d1\u6bd4\u4f8b\u300d")]),t._v("\u8ba1\u7b97\u3002\u56e0\u670d\u52a1\u5b9e\u4ed8\u91d1\u989d\u53d7\u6d3b\u52a8\u53c2\u4e0e\u7a0b\u5ea6\u5f71\u54cd\u5b58\u5728\u6ce2\u52a8\uff0c\u6700\u7ec8\u4f63\u91d1\u4ee5\u8ba2\u5355\u5b9e\u9645\u7ed3\u7b97\u7ed3\u679c\u4e3a\u51c6\u3002 ")],1)],1)],2)},r=[]},"3b67":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uvPopup:i("05d1").default,uvLine:i("9b27").default,uvLoadingIcon:i("c9c1").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uv-popup",{ref:"modalPopup",attrs:{_i:0},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(1,"sc"),style:t._$g(1,"s"),attrs:{_i:1}},[t._$g(2,"i")?i("v-uni-text",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._v(t._$g(2,"t0-0"))]):t._e(),i("uni-view",{staticClass:t._$g(3,"sc"),style:t._$g(3,"s"),attrs:{_i:3}},[t._t("default",[i("v-uni-text",{staticClass:t._$g(5,"sc"),style:t._$g(5,"s"),attrs:{_i:5}},[t._v(t._$g(5,"t0-0"))])],{_i:4})],2),t._t("confirmButton",[i("uv-line",{attrs:{_i:7}}),t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),style:t._$g(8,"s"),attrs:{_i:8}},[t._$g(9,"i")?i("uni-view",{staticClass:t._$g(9,"sc"),class:t._$g(9,"c"),attrs:{"hover-stay-time":150,"hover-class":"uv-modal__button-group__wrapper--hover",_i:9},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(10,"sc"),style:t._$g(10,"s"),attrs:{_i:10}},[t._v(t._$g(10,"t0-0"))])],1):t._e(),t._$g(11,"i")?i("uv-line",{attrs:{_i:11}}):t._e(),t._$g(12,"i")?i("uni-view",{staticClass:t._$g(12,"sc"),class:t._$g(12,"c"),attrs:{"hover-stay-time":150,"hover-class":"uv-modal__button-group__wrapper--hover",_i:12},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g(13,"i")?i("uv-loading-icon",{attrs:{_i:13}}):i("v-uni-text",{staticClass:t._$g(14,"sc"),style:t._$g(14,"s"),attrs:{_i:14}},[t._v(t._$g(14,"t0-0"))])],1):t._e()],1):t._e()],{_i:6})],2)],1)},r=[]},"3be0":function(t,e,i){"use strict";i.r(e);var a=i("9285"),n=i("0c3e");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("2ee8");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"3c00":function(t,e,i){var a=i("f2d7");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("1c858ef9",a,!0,{sourceMap:!1,shadowMode:!1})},"3c1d":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,uvRadioGroup:i("2137").default,uvRadio:i("b3e7").default,uvInput:i("d398").default,uvCheckboxGroup:i("e05b").default,uvCheckbox:i("c4e7").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._v("\u9009\u62e9\u63d0\u73b0\u65b9\u5f0f")]),i("uv-radio-group",{staticClass:t._$g(4,"sc"),attrs:{_i:4},on:{change:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(4,"v-model"),callback:function(){},expression:"radiovalue"}},t._l(t._$g(5,"f"),(function(e,a,n,r){return i("uv-radio",{key:e,attrs:{_i:"5-"+r},scopedSlots:t._u([{key:"icon",fn:function(t,e,a){return[i("v-uni-image",{staticClass:e._$g("7-"+r+"-"+a,"sc"),attrs:{src:"/static/images/shop/pintuan/yes.png",_i:"7-"+r+"-"+a}})]}}],null,!0)})})),1)],1),t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v(t._$g(9,"t0-0"))]),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53bb\u7ed1\u5b9a")])],1):i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._$g(12,"i")?i("uni-view",{attrs:{_i:12},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(13,"sc"),staticStyle:{"padding-top":"0rpx"},attrs:{_i:13}},[i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v("\u652f\u4ed8\u5b9d\u8d26\u53f7")]),i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v(t._$g(15,"t0-0")),i("v-uni-image",{staticClass:t._$g(16,"sc"),attrs:{src:"/static/images/wallet/right.png",_i:16}})],1)],1),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\u59d3\u540d")]),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v(t._$g(19,"t0-0"))])],1),i("uni-view",{staticStyle:{"padding-top":"24rpx",display:"flex"},attrs:{_i:20}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v("\u624b\u673a\u53f7")]),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v(t._$g(22,"t0-0"))])],1)],1):t._e(),t._$g(23,"i")?i("uni-view",{attrs:{_i:23},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(24,"sc"),staticStyle:{"padding-top":"0rpx"},attrs:{_i:24}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v("\u94f6\u884c\u5361\u53f7")]),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[t._v(t._$g(26,"t0-0")),i("v-uni-image",{staticClass:t._$g(27,"sc"),attrs:{src:"/static/images/wallet/right.png",_i:27}})],1)],1),i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v("\u6240\u5c5e\u94f6\u884c")]),i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[t._v(t._$g(30,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v("\u59d3\u540d")]),i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[t._v(t._$g(33,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[t._v("\u624b\u673a\u53f7")]),i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[t._v(t._$g(36,"t0-0"))])],1),i("uni-view",{staticStyle:{"padding-top":"24rpx",display:"flex"},attrs:{_i:37}},[i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[t._v("\u5f00\u6237\u884c")]),i("uni-view",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v(t._$g(39,"t0-0"))])],1)],1):t._e()],1),i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[t._v("\u63d0\u73b0\u91d1\u989d")]),i("uni-view",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[i("uv-input",{attrs:{_i:43},on:{input:function(e){return t.$handleViewEvent(e)}},scopedSlots:t._u([{key:"prefix",fn:function(e,a,n){return[i("v-uni-text",{attrs:{_i:"45-"+n}},[t._v("\xa5")])]}}]),model:{value:t._$g(43,"v-model"),callback:function(){},expression:"queryData.cash_money"}})],1),i("uni-view",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[t._v("\u53ef\u63d0\u73b0\u91d1\u989d"+t._$g(46,"t0-0")+"\u5143")])],1),i("uni-view",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[i("uni-view",{staticClass:t._$g(48,"sc"),staticStyle:{"margin-bottom":"30rpx"},attrs:{_i:48}},[t._v("\u63d0\u73b0\u89c4\u5219")]),i("v-uni-rich-text",{attrs:{nodes:t._$g(49,"a-nodes"),_i:49}})],1),i("uni-view",{staticClass:t._$g(50,"sc"),attrs:{_i:50}},[i("uni-view",{staticClass:t._$g(51,"sc"),attrs:{_i:51}},[i("uv-checkbox-group",{staticClass:t._$g(52,"sc"),attrs:{_i:52},model:{value:t._$g(52,"v-model"),callback:function(){},expression:"isAgree"}},[i("uv-checkbox",{attrs:{_i:53},scopedSlots:t._u([{key:"icon",fn:function(t,e,a){return[i("v-uni-image",{staticClass:e._$g("55-"+a,"sc"),attrs:{src:"/static/images/shop/pintuan/yes.png",_i:"55-"+a}})]}}])})],1),i("v-uni-text",{staticClass:t._$g(56,"sc"),attrs:{_i:56}},[t._v("\u5df2\u9605\u8bfb\u5e76\u540c\u610f")]),i("v-uni-text",{staticClass:t._$g(57,"sc"),attrs:{_i:57},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u300a\u63d0\u73b0\u534f\u8bae\u300b")])],1),i("uni-view",{staticClass:t._$g(58,"sc"),attrs:{_i:58},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u63d0\u73b0")])],1),i("addPop",{attrs:{_i:59},on:{goAdd:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(59,"v-model"),callback:function(){},expression:"popShow"}})],1)},r=[]},"3c2e":function(t,e,i){var a=i("ebc8");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("463cb316",a,!0,{sourceMap:!1,shadowMode:!1})},"3c3e":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("93a6")),r=a(i("a6d8")),s={data:function(){return{wxsProps:{}}},components:{AliOssUploader:n.default,AgreeRadio:r.default}};e.default=s},"3c3f":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[t._$g(1,"i")?i("v-uni-image",{staticClass:t._$g(1,"sc"),attrs:{src:"/static/images/back.png",mode:"aspectFill",_i:1},on:{click:function(e){return t.$handleViewEvent(e)}}}):t._e(),i("uni-view",{staticClass:t._$g(2,"sc"),style:t._$g(2,"s"),attrs:{_i:2}},[i("v-uni-input",{staticClass:t._$g(3,"sc"),attrs:{type:"text",placeholder:t._$g(3,"a-placeholder"),value:t._$g(3,"a-value"),"confirm-type":"search","placeholder-style":"color: #999999;",_i:3},on:{input:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}}}),i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:"/static/images/search.png",_i:4},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}})],1)],1)},n=[]},"3c96":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),style:t._$g(2,"s"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}}),i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u670d\u52a1\u6280\u80fd\uff08\u591a\u9009\uff09")])],1),t._$g(7,"i")?i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v("\u8bf7\u9009\u62e9\u670d\u52a1\u6280\u80fd")]):t._e(),t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},t._l(t._$g(9,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("9-"+r,"sc"),class:t._$g("9-"+r,"c"),attrs:{_i:"9-"+r}},[i("uni-view",{staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r}},[i("uni-view",{staticClass:t._$g("11-"+r,"sc"),class:t._$g("11-"+r,"c"),attrs:{_i:"11-"+r}},[t._$g("12-"+r,"i")?i("v-uni-image",{staticClass:t._$g("12-"+r,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/66325904-4603-48fd-b03b-90c684af96e9",mode:"aspectFit",_i:"12-"+r}}):t._e()],1)],1),i("v-uni-text",{staticClass:t._$g("13-"+r,"sc"),attrs:{_i:"13-"+r}},[t._v(t._$g("13-"+r,"t0-0"))])],1)})),1):i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},t._l(t._$g(15,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("15-"+r,"sc"),class:t._$g("15-"+r,"c"),attrs:{_i:"15-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("16-"+r,"sc"),attrs:{_i:"16-"+r}},[i("uni-view",{staticClass:t._$g("17-"+r,"sc"),class:t._$g("17-"+r,"c"),attrs:{_i:"17-"+r}},[t._$g("18-"+r,"i")?i("v-uni-image",{staticClass:t._$g("18-"+r,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/66325904-4603-48fd-b03b-90c684af96e9",mode:"aspectFit",_i:"18-"+r}}):t._e()],1)],1),i("v-uni-text",{staticClass:t._$g("19-"+r,"sc"),attrs:{_i:"19-"+r}},[t._v(t._$g("19-"+r,"t0-0"))])],1)})),1)],1)],1),i("uni-view",{ref:"buttonArea",staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._$g(21,"i")?i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v("\u60a8\u7684\u63d0\u4ea4\u5df2\u9a73\u56de")]),i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v("\u9a73\u56de\u539f\u56e0\uff1a"+t._$g(23,"t0-0"))])],1):t._e(),t._$g(24,"i")?i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("v-uni-text",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v("\u60a8\u7684\u63d0\u4ea4\u53d8\u66f4\u6b63\u5728\u5ba1\u6838\u4e2d...")])],1):t._e(),t._$g(26,"i")?i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v("\u53bb\u53d8\u66f4\u4fe1\u606f")])],1):t._e(),t._$g(28,"i")?i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v("\u63d0\u4ea4")])],1)],1):t._e(),t._$g(33,"i")?i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[t._v(t._$g(34,"t0-0"))])],1):t._e()],1)],1)},r=[]},"3d38":function(t,e,i){"use strict";i.r(e);var a=i("60ca"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"3d39":function(t,e,i){"use strict";i.r(e);var a=i("2500"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"3d75":function(t,e,i){"use strict";var a=i("2dbf"),n=i.n(a);n.a},"3da9":function(t,e,i){"use strict";i.r(e);var a=i("d01e"),n=i("0eb0");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("5d9d");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"7c35105c",null,!1,a["a"],void 0);e["default"]=o.exports},"3dbc":function(t,e,i){"use strict";i.r(e);var a=i("c0ba"),n=i("8f1b");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"bebf3e84",null,!1,a["a"],void 0);e["default"]=o.exports},"3dd1":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("e26b")),r={data:function(){return{wxsProps:{}}},components:{serviceCodeInput:n.default}};e.default=r},"3e03":function(t,e,i){"use strict";var a=i("e88d"),n=i.n(a);n.a},"3e0f":function(t,e,i){"use strict";i.r(e);var a=i("bc9e"),n=i("0941");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"3e85":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"tips-popup",props:["show","sureText","closeText","title"],data:function(){return{wxsProps:{}}},components:{}}},"3e8b":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"3ebc":function(t,e,i){"use strict";i.r(e);var a=i("d081"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"3ecd":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".order-card[data-v-723745c6]{padding:30rpx 20rpx;margin:20rpx 30rpx 20rpx 30rpx;background-color:#fff;border-radius:12px}.order-id[data-v-723745c6]{width:530rpx;font-weight:400;font-size:26rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal}.orderNumBox[data-v-723745c6]{display:flex;align-items:center;justify-content:space-between;margin-bottom:40rpx}.orderNumBox .stateText[data-v-723745c6]{font-size:28rpx;color:#e8101e;line-height:39rpx}.orderNumBox .rightArrow[data-v-723745c6]{width:12rpx;height:24rpx}.service-container[data-v-723745c6]{display:flex}.service-img[data-v-723745c6]{width:172rpx;height:172rpx;border-radius:24rpx;margin-right:30rpx;flex-shrink:0}.service-info[data-v-723745c6]{display:flex;flex-direction:column;justify-content:space-between}.service-price[data-v-723745c6]{font-weight:500;font-size:24rpx;color:#e8101e;line-height:34rpx;text-align:left;font-style:normal}.service-type[data-v-723745c6]{width:400rpx;font-weight:500;font-size:30rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal;display:flex;align-items:center;margin-bottom:22rpx}.service-type .service-name-type[data-v-723745c6]{font-family:shuHeiTi;font-size:24rpx;color:#fff;line-height:27rpx;letter-spacing:2px;text-align:left;font-style:normal;background:linear-gradient(166deg,#fc5e72,#e8101e);border-radius:6rpx;padding:4rpx 4rpx 4rpx 8rpx;margin-right:13rpx;letter-spacing:2rpx}.service-type .service-name-text[data-v-723745c6]{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.service-time[data-v-723745c6]{font-weight:400;font-size:26rpx;color:#999;line-height:33rpx;text-align:left;font-style:normal}.time-info[data-v-723745c6]{font-size:30rpx;color:#333;margin-bottom:40rpx;margin-top:28rpx}.button-group[data-v-723745c6]{display:flex;justify-content:flex-end;gap:30rpx}.btn[data-v-723745c6]{width:80rpx;height:32rpx;border-radius:64rpx;font-size:26rpx;background-color:#fff;white-space:nowrap;margin-top:40rpx}.cancel-btn[data-v-723745c6]{border:2rpx solid #979797;color:#333}.accept-btn[data-v-723745c6]{border:2rpx solid #e8101e;color:#e8101e}",""]),t.exports=e},"3ece":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";body{width:100%;height:100%;background:transparent}.login-mask{position:fixed;top:0;bottom:0;left:0;right:0;background:transparent;z-index:999;overflow:hidden}.login-popup{position:absolute;left:0;right:0;bottom:0;background:#fff;border-top-left-radius:20rpx;border-top-right-radius:20rpx;padding:42rpx 66rpx 100rpx 66rpx;box-sizing:border-box}.popup-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:55rpx}.popup-header .popup-title{width:100%;font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:center;font-style:normal}.popup-close{width:40rpx;height:40rpx;position:absolute;top:37rpx;right:40rpx}.login-tabs{display:flex;justify-content:space-between;align-items:center;margin-bottom:55rpx;padding:0 96rpx}.login-tabs .tab-line{width:2rpx;height:20rpx;background:#d8d8d8;border-radius:1rpx}.login-tabs .tab-item{font-weight:400;font-size:26rpx;color:#333;line-height:37rpx;text-align:center;font-style:normal;position:relative;padding-bottom:6rpx}.login-tabs .tab-item.active{color:red}.login-tabs .tab-item.active::after{content:"";position:absolute;bottom:0rpx;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:40rpx;border-radius:2rpx;height:4rpx;background:red}.input-area{margin-bottom:80rpx}.input-area .input-item{display:flex;align-items:center;box-sizing:border-box;width:618rpx;height:98rpx;background:#f5f5f5;border-radius:49rpx;padding:28rpx 24rpx 28rpx 30rpx;margin-bottom:30rpx;position:relative}.input-area .input-item .look-icon{width:37rpx;position:absolute;top:50%;right:30rpx;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.input-area .input-item .input-icon-phone{width:30rpx;height:32rpx;margin-right:19rpx}.input-area .input-item .input-icon-password{width:32rpx;height:38rpx;margin-right:19rpx}.input-area .input-item .input-text{flex:1;font-size:30rpx;height:40rpx;color:#333}.input-area .input-item .get-code-btn{font-weight:400;font-size:30rpx;color:#e8101e;line-height:42rpx;text-align:center;font-style:normal}.input-area .input-item .running{color:#999}.input-area .input-item .noPhone{color:#999}.input-area .input-item .eye-icon{font-size:30rpx;color:#666;margin-left:15rpx}.input-area .input-error{display:block;font-size:24rpx;color:#e8101e;margin-left:30rpx;margin-top:-20rpx;margin-bottom:20rpx;line-height:1.2}.login-btn{width:590rpx;height:98rpx;background:rgba(232,16,30,.4);border-radius:50rpx;font-weight:500;font-size:30rpx;color:#fff;text-align:center;font-style:normal;margin:0 auto;display:flex;align-items:center;justify-content:center;margin-bottom:30rpx}.login-btn.active{background:#e8101e}.agree{display:flex;flex-flow:row nowrap;flex-direction:row;align-items:flex-start}.agree .agree-btn{-webkit-transform:translateY(4rpx);transform:translateY(4rpx);margin-right:8rpx}.agree .agree-card .agreement{font-weight:400;font-size:26rpx;color:#e8101e;line-height:37rpx;margin:0 10rpx}.agree .agree-card .agree-text{font-weight:400;font-size:26rpx;color:#898989;line-height:37rpx}.uni-input-placeholder{font-weight:400;font-size:30rpx;color:#bcc0c0;line-height:42rpx;text-align:left;font-style:normal}',""]),t.exports=e},"3ed7":function(t,e,i){"use strict";i.r(e);var a=i("c766"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"3f04":function(t,e,i){"use strict";var a=i("84ee"),n=i.n(a);n.a},"3f58":function(t,e,i){"use strict";var a=i("f654"),n=i.n(a);n.a},"3f63":function(t,e,i){"use strict";var a=i("3c00"),n=i.n(a);n.a},"3f93":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.store-info-page[data-v-6c8af79b]{}.section-title[data-v-6c8af79b]{display:flex;align-items:center;margin-bottom:30rpx}.title-bar[data-v-6c8af79b]{width:6rpx;height:30rpx;background-color:#e8101e;margin-right:7rpx;border-radius:5rpx}.section-title uni-text[data-v-6c8af79b]{font-size:32rpx;color:#1d2129;font-weight:500}.box-cont[data-v-6c8af79b]{background:#fff;border-radius:20rpx;margin-bottom:24rpx;margin-left:8rpx;margin-right:8rpx;box-shadow:none}.form-item[data-v-6c8af79b]{padding:24rpx}.label[data-v-6c8af79b]{display:block;font-size:28rpx;color:#333;font-weight:500}.required[data-v-6c8af79b]::before{content:"*";color:red;margin-right:4rpx}.upload-box[data-v-6c8af79b]{display:flex;justify-content:center;align-items:center;height:160rpx;border-radius:20rpx}.upload-placeholder[data-v-6c8af79b]{display:flex;flex-direction:column;align-items:center;justify-content:center}.upload-icon[data-v-6c8af79b]{width:120rpx;height:120rpx}.upload-text[data-v-6c8af79b]{font-size:24rpx;color:#999}.logo-image[data-v-6c8af79b]{width:120rpx;height:120rpx;border-radius:20rpx}.form-item-one[data-v-6c8af79b]{display:flex;align-items:center;padding:24rpx}.form-item-one-yqr[data-v-6c8af79b]{flex-direction:column;align-items:stretch;padding:0}.invite-code-top[data-v-6c8af79b]{display:flex;align-items:center;padding:24rpx;width:100%;box-sizing:border-box}.divider[data-v-6c8af79b]{height:1rpx;background-color:rgba(0,0,0,.07450980392156863);width:100%}.invite-info-container[data-v-6c8af79b]{padding:20rpx 24rpx;width:100%;box-sizing:border-box;min-height:60rpx}.label-wrapper[data-v-6c8af79b]{display:inline-flex;align-items:center}.label[data-v-6c8af79b]{font-size:28rpx;color:#333;font-weight:500;line-height:1}.label-icon[data-v-6c8af79b]{width:26rpx;height:26rpx;margin-left:8rpx;align-items:center}.form-item-two[data-v-6c8af79b]{display:flex;justify-content:space-between;align-items:center;padding:24rpx}.input[data-v-6c8af79b]{flex:1;font-size:28rpx;color:#333;text-align:right}.placeholder[data-v-6c8af79b]{color:#999}.picker-content[data-v-6c8af79b]{display:flex;align-items:center}.picker-value[data-v-6c8af79b]{font-size:28rpx;color:#333}.arrow-right[data-v-6c8af79b]{width:14rpx;height:26rpx;margin-left:16rpx}.invite-tip[data-v-6c8af79b]{font-size:24rpx;color:#666}.invite-validating[data-v-6c8af79b]{font-size:20rpx;color:#999}.invite-error[data-v-6c8af79b]{font-size:24rpx;color:#e8101e}.inviter-info[data-v-6c8af79b]{display:flex;align-items:center;font-size:20rpx}.inviter-label[data-v-6c8af79b]{color:#666}.inviter-name[data-v-6c8af79b]{color:#333;font-weight:500}.inviter-divider[data-v-6c8af79b]{color:#666;margin:0 5rpx}.inviter-phone[data-v-6c8af79b]{color:#666}@-webkit-keyframes shake-data-v-6c8af79b{0%, 100%{-webkit-transform:translateX(0);transform:translateX(0)}10%, 30%, 50%, 70%, 90%{-webkit-transform:translateX(-7rpx);transform:translateX(-7rpx)}20%, 40%, 60%, 80%{-webkit-transform:translateX(7rpx);transform:translateX(7rpx)}}@keyframes shake-data-v-6c8af79b{0%, 100%{-webkit-transform:translateX(0);transform:translateX(0)}10%, 30%, 50%, 70%, 90%{-webkit-transform:translateX(-7rpx);transform:translateX(-7rpx)}20%, 40%, 60%, 80%{-webkit-transform:translateX(7rpx);transform:translateX(7rpx)}}.shake-animation[data-v-6c8af79b]{-webkit-animation:shake-data-v-6c8af79b .5s ease-in-out;animation:shake-data-v-6c8af79b .5s ease-in-out;color:#e8101e}.popup[data-v-6c8af79b]{position:fixed;left:0;right:0;bottom:0;z-index:999;visibility:hidden;opacity:0;transition:all .3s ease}.popup.show[data-v-6c8af79b]{visibility:visible;opacity:1}.popup-mask[data-v-6c8af79b]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.popup-content[data-v-6c8af79b]{position:relative;background-color:#fff;border-radius:24rpx 24rpx 0 0;padding:32rpx;-webkit-transform:translateY(100%);transform:translateY(100%);transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.popup.show .popup-content[data-v-6c8af79b]{-webkit-transform:translateY(0);transform:translateY(0)}.popup-header[data-v-6c8af79b]{display:flex;align-items:center;justify-content:space-between;margin-bottom:20rpx}.popup-title[data-v-6c8af79b]{font-size:32rpx;color:#333;font-weight:500}.popup-close[data-v-6c8af79b]{font-size:40rpx;color:#999;padding:16rpx}.popup-body[data-v-6c8af79b]{max-height:600rpx;overflow-y:auto}.checkbox-list[data-v-6c8af79b]{display:flex;flex-wrap:wrap}.checkbox-item[data-v-6c8af79b]{width:50%;padding:14rpx;display:flex;align-items:center}.checkbox[data-v-6c8af79b]{width:40rpx;height:40rpx;border:2rpx solid #ddd;border-radius:8rpx;display:flex;align-items:center;justify-content:center;margin-right:16rpx}.checkbox.checked[data-v-6c8af79b]{background-color:#e8101e;border-color:#e8101e}.check-icon[data-v-6c8af79b]{width:42rpx;height:42rpx}.checkbox-label[data-v-6c8af79b]{font-size:28rpx;color:#333}.popup-footer[data-v-6c8af79b]{display:flex;margin-top:32rpx}.popup-btn[data-v-6c8af79b]{flex:1;height:88rpx;border-radius:44rpx;display:flex;align-items:center;justify-content:center;margin:0 16rpx}.popup-btn.cancel[data-v-6c8af79b]{background-color:#f5f5f5}.popup-btn.confirm[data-v-6c8af79b]{background:linear-gradient(180deg,#f52540,#e8101e)}.popup-btn .btn-text[data-v-6c8af79b]{font-size:32rpx;font-weight:500}.popup-btn.cancel .btn-text[data-v-6c8af79b]{color:#666}.popup-btn.confirm .btn-text[data-v-6c8af79b]{color:#fff}.region-body[data-v-6c8af79b]{height:400rpx}.picker-scroll[data-v-6c8af79b]{height:400rpx}.picker-item[data-v-6c8af79b]{height:68rpx;line-height:68rpx;text-align:center}.cancel-text[data-v-6c8af79b]{font-size:32rpx;color:#666}.confirm-text[data-v-6c8af79b]{font-size:32rpx;color:#e8101e;font-weight:500}.time-range[data-v-6c8af79b]{display:flex;align-items:center;justify-content:center;padding:32rpx;background:#f8f9fc}.time-block[data-v-6c8af79b]{flex:1;display:flex;flex-direction:column;align-items:center;background:#fff;border-radius:12rpx;padding:24rpx 0;transition:all .3s ease}.time-block.active[data-v-6c8af79b]{background:#ecf2ff}.time-label[data-v-6c8af79b]{font-size:26rpx;color:#999;margin-top:8rpx}.time-value[data-v-6c8af79b]{font-size:40rpx;color:#333;font-weight:500}.time-block.active .time-value[data-v-6c8af79b]{color:#e8101e}.time-separator[data-v-6c8af79b]{font-size:28rpx;color:#999;margin:0 24rpx}.tip-popup[data-v-6c8af79b]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;display:flex;align-items:center;justify-content:center;visibility:hidden;opacity:0;transition:all .3s ease}.tip-popup.show[data-v-6c8af79b]{visibility:visible;opacity:1}.tip-popup-mask[data-v-6c8af79b]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.tip-popup-content[data-v-6c8af79b]{position:relative;width:620rpx;height:810rpx}.tip-popup-bg[data-v-6c8af79b]{width:620rpx;height:810rpx;position:absolute;top:0;left:0}.tip-popup-body[data-v-6c8af79b]{position:relative;flex-direction:column;padding:80rpx 20rpx 40rpx 20rpx;box-sizing:border-box}.tip-title[data-v-6c8af79b]{font-size:36rpx;font-weight:700;color:#333;text-align:center;margin-top:107rpx;margin-bottom:37rpx}.tip-image-container[data-v-6c8af79b]{align-items:center;justify-content:center;margin-bottom:50rpx}.tip-image[data-v-6c8af79b]{width:627rpx;height:327rpx;margin-left:13rpx}.tip-image.head_photo[data-v-6c8af79b]{width:582rpx;height:327rpx;margin-right:0;margin-left:-15rpx}.tip-image.store_name[data-v-6c8af79b]{width:627rpx;height:327rpx;margin-left:13rpx}.tip-buttons[data-v-6c8af79b]{display:flex;justify-content:space-between;padding:0 28rpx}.tip-btn[data-v-6c8af79b]{width:250rpx;height:80rpx;border-radius:40rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:500}.tip-btn.cancel[data-v-6c8af79b]{border:#e8101e 2rpx solid;background-color:initial;color:#e8101e}.tip-btn.confirm[data-v-6c8af79b]{background:linear-gradient(180deg,#f52540,#e8101e);color:#fff}.tip-btn .btn-text[data-v-6c8af79b]{color:inherit}',""]),t.exports=e},"3fb4":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"serviceCodeInput",props:["show","codeLength"],data:function(){return{wxsProps:{}}},components:{}}},"3fe1":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"ServiceFirstTab",props:["tabs","activeId","tabWidth","activeColor","inactiveColor","fontSize","indicatorHeight","bgColor","tabPaddingTop","tabPaddingBottom"],data:function(){return{wxsProps:{}}},components:{}}},4003:function(t,e,i){"use strict";i.r(e);var a=i("7423"),n=i("4788");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("c497");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"12191fc8",null,!1,a["a"],void 0);e["default"]=o.exports},4017:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".service-first-tab[data-v-5d0f0426]{position:relative;width:100%;background-color:#fff;box-shadow:0 4rpx 10rpx rgba(0,0,0,.05)}.tab-scroll[data-v-5d0f0426]{width:100%;white-space:nowrap}.tab-container[data-v-5d0f0426]{display:flex;padding:0 30rpx;gap:60rpx}.tab-item[data-v-5d0f0426]{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative}.tab-text[data-v-5d0f0426]{font-size:30rpx;color:var(--inactive-color);transition:color .2s}.tab-item.active .tab-text[data-v-5d0f0426]{color:var(--active-color);font-weight:500}.tab-active-indicator[data-v-5d0f0426]{position:absolute;bottom:0;width:32rpx;height:6rpx;background-color:var(--active-color);border-radius:10rpx;transition:all .2s}",""]),t.exports=e},"403a":function(t,e,i){"use strict";i.r(e);var a=i("a44c"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"40aa":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";uni-view[data-v-9c879764], uni-scroll-view[data-v-9c879764], uni-swiper-item[data-v-9c879764]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-loading-icon[data-v-9c879764]{flex-direction:row;align-items:center;justify-content:center;color:#c8c9cc}.uv-loading-icon__text[data-v-9c879764]{margin-left:4px;color:#606266;font-size:14px;line-height:20px}.uv-loading-icon__spinner[data-v-9c879764]{width:30px;height:30px;position:relative;box-sizing:border-box;max-width:100%;max-height:100%;-webkit-animation:uv-rotate-data-v-9c879764 1s linear infinite;animation:uv-rotate-data-v-9c879764 1s linear infinite}.uv-loading-icon__spinner--semicircle[data-v-9c879764]{border-width:2px;border-color:transparent;border-top-right-radius:100px;border-top-left-radius:100px;border-bottom-left-radius:100px;border-bottom-right-radius:100px;border-style:solid}.uv-loading-icon__spinner--circle[data-v-9c879764]{border-top-right-radius:100px;border-top-left-radius:100px;border-bottom-left-radius:100px;border-bottom-right-radius:100px;border-width:2px;border-top-color:#e5e5e5;border-right-color:#e5e5e5;border-bottom-color:#e5e5e5;border-left-color:#e5e5e5;border-style:solid}.uv-loading-icon--vertical[data-v-9c879764]{flex-direction:column}[data-v-9c879764]:host{font-size:0;line-height:1}.uv-loading-icon__spinner--spinner[data-v-9c879764]{-webkit-animation-timing-function:steps(12);animation-timing-function:steps(12)}.uv-loading-icon__text[data-v-9c879764]:empty{display:none}.uv-loading-icon--vertical .uv-loading-icon__text[data-v-9c879764]{margin:6px 0 0;color:#606266}.uv-loading-icon__dot[data-v-9c879764]{position:absolute;top:0;left:0;width:100%;height:100%}.uv-loading-icon__dot[data-v-9c879764]:before{display:block;width:2px;height:25%;margin:0 auto;background-color:currentColor;border-radius:40%;content:" "}.uv-loading-icon__dot[data-v-9c879764]:nth-of-type(1){-webkit-transform:rotate(30deg);transform:rotate(30deg);opacity:1}.uv-loading-icon__dot[data-v-9c879764]:nth-of-type(2){-webkit-transform:rotate(60deg);transform:rotate(60deg);opacity:.9375}.uv-loading-icon__dot[data-v-9c879764]:nth-of-type(3){-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:.875}.uv-loading-icon__dot[data-v-9c879764]:nth-of-type(4){-webkit-transform:rotate(120deg);transform:rotate(120deg);opacity:.8125}.uv-loading-icon__dot[data-v-9c879764]:nth-of-type(5){-webkit-transform:rotate(150deg);transform:rotate(150deg);opacity:.75}.uv-loading-icon__dot[data-v-9c879764]:nth-of-type(6){-webkit-transform:rotate(180deg);transform:rotate(180deg);opacity:.6875}.uv-loading-icon__dot[data-v-9c879764]:nth-of-type(7){-webkit-transform:rotate(210deg);transform:rotate(210deg);opacity:.625}.uv-loading-icon__dot[data-v-9c879764]:nth-of-type(8){-webkit-transform:rotate(240deg);transform:rotate(240deg);opacity:.5625}.uv-loading-icon__dot[data-v-9c879764]:nth-of-type(9){-webkit-transform:rotate(270deg);transform:rotate(270deg);opacity:.5}.uv-loading-icon__dot[data-v-9c879764]:nth-of-type(10){-webkit-transform:rotate(300deg);transform:rotate(300deg);opacity:.4375}.uv-loading-icon__dot[data-v-9c879764]:nth-of-type(11){-webkit-transform:rotate(330deg);transform:rotate(330deg);opacity:.375}.uv-loading-icon__dot[data-v-9c879764]:nth-of-type(12){-webkit-transform:rotate(1turn);transform:rotate(1turn);opacity:.3125}@-webkit-keyframes uv-rotate-data-v-9c879764{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes uv-rotate-data-v-9c879764{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}',""]),t.exports=e},"40dc":function(t,e,i){var a=i("68b9");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("7c033866",a,!0,{sourceMap:!1,shadowMode:!1})},"40e7":function(t,e,i){var a=i("d4a8");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("532ca6ce",a,!0,{sourceMap:!1,shadowMode:!1})},"40fd":function(t,e,i){var a=i("7178");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("26e637fd",a,!0,{sourceMap:!1,shadowMode:!1})},"413f":function(t,e,i){"use strict";i.r(e);var a=i("9b30"),n=i("4219");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("8254");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},4185:function(t,e,i){var a=i("e663");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("d6d38642",a,!0,{sourceMap:!1,shadowMode:!1})},"41a6":function(t,e,i){"use strict";i.r(e);var a=i("9a8a"),n=i("aa26");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("4575");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"41ad":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._l(t._$g(3,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("3-"+r,"sc"),attrs:{_i:"3-"+r}},[i("v-uni-text",{staticClass:t._$g("4-"+r,"sc"),attrs:{_i:"4-"+r}},[t._v(t._$g("4-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r}},[i("v-uni-image",{staticClass:t._$g("6-"+r,"sc"),attrs:{src:t._$g("6-"+r,"a-src"),mode:"aspectFill",_i:"6-"+r}}),i("uni-view",{staticClass:t._$g("7-"+r,"sc"),attrs:{_i:"7-"+r}},[i("uni-view",{staticClass:t._$g("8-"+r,"sc"),attrs:{_i:"8-"+r}},[t._v(t._$g("8-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("9-"+r,"sc"),attrs:{_i:"9-"+r}},[i("v-uni-text",{staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r}},[t._v("\xa5")]),i("v-uni-text",{staticClass:t._$g("11-"+r,"sc"),attrs:{_i:"11-"+r}},[t._v(t._$g("11-"+r,"t0-0"))])],1),t._$g("12-"+r,"i")?i("uni-view",{staticClass:t._$g("12-"+r,"sc"),attrs:{_i:"12-"+r}},[i("v-uni-image",{staticClass:t._$g("13-"+r,"sc"),attrs:{src:"/static/images/position_icon.png",mode:"aspectFit",_i:"13-"+r}}),i("v-uni-text",{staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[t._v(t._$g("14-"+r,"t0-0"))])],1):t._e()],1)],1),i("uni-view",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r}},[i("v-uni-text",{staticClass:t._$g("16-"+r,"sc"),attrs:{_i:"16-"+r}},[t._v(t._$g("16-"+r,"t0-0"))])],1)],1)})),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{attrs:{_i:18}},[i("v-uni-text",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v("\u70b9\u51fb\u67e5\u770b\uff0c")]),i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v(t._$g(20,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v("\u8ba2\u5355")])],1)],1)],2)],1)},r=[]},"41c2":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("6473")),r=a(i("666e")),s=a(i("011c")),o={data:function(){return{wxsProps:{}}},components:{customNavbar:n.default,filterPopup:r.default,filterCard:s.default}};e.default=o},"41c8":function(t,e,i){"use strict";i.r(e);var a=i("da73"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},4212:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this.$createElement,e=this._self._c||t;return e("uni-view",{staticClass:this._$g(0,"sc"),attrs:{_i:0}},[e("v-uni-rich-text",{attrs:{nodes:this._$g(1,"a-nodes"),_i:1}})],1)},n=[]},4219:function(t,e,i){"use strict";i.r(e);var a=i("3c3e"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},4251:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),t._$g(2,"i")?i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:"/static/images/submit-success.png",mode:"aspectFit",_i:5}})],1),i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u5df2\u63d0\u4ea4\u6210\u529f")]),i("v-uni-text",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v("\u60a8\u7684\u5165\u9a7b\u7533\u8bf7\u5df2\u63d0\u4ea4\u6210\u529f3-7\u4e2a\u5de5\u4f5c\u65e5\u4e3a\u60a8\u53cd\u9988\u5ba1\u6838\u7ed3\u679c\u5ba1\u6838\u901a\u8fc7\u60a8\u5373\u53ef\u6b63\u5e38\u4f7f\u7528")]),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u8fd4\u56de")])],1)],1)],1):t._e(),t._$g(10,"i")?i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("v-uni-image",{staticClass:t._$g(13,"sc"),attrs:{src:"/static/images/submit-fail.png",mode:"aspectFit",_i:13}})],1),i("v-uni-text",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v("\u7533\u8bf7\u9a73\u56de")]),i("v-uni-text",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v(" \u60a8\u7684\u5165\u9a7b\u7533\u8bf7\u88ab\u9a73\u56de \u9a73\u56de\u539f\u56e0:"+t._$g(15,"t0-0")+" ")]),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v("\u91cd\u65b0\u7533\u8bf7")])],1),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v("\u8fd4\u56de")])],1)],1)],1):t._e()],1)},r=[]},4258:function(t,e,i){"use strict";var a=i("48d2"),n=i.n(a);n.a},4278:function(t,e,i){"use strict";var a=i("49b2"),n=i.n(a);n.a},4286:function(t,e,i){"use strict";var a=i("9bd8"),n=i.n(a);n.a},4288:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._$g(5,"i")?i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:t._$g(5,"a-src"),mode:"aspectFill",_i:5}}):t._e()],1),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("v-uni-text",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(t._$g(8,"t0-0"))]),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(10,"sc"),attrs:{src:"/static/images/icons/wallet.png",_i:10}}),i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v(" \u94b1\u5305\u4f59\u989d\uff1a ")]),i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v(" "+t._$g(12,"t0-0")+"\u5143 ")])],1)],1)],1),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v("\u7f16\u8f91\u8d44\u6599")]),i("v-uni-image",{attrs:{src:"/static/images/icons/right_gray.png",_i:15}})],1)],1),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v(" \u4ea4\u6613\u9879\u76ee ")]),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},t._l(t._$g(19,"f"),(function(e,a,n,r){return i("v-uni-image",{key:e,staticClass:t._$g("19-"+r,"sc"),attrs:{src:t._$g("19-"+r,"a-src"),mode:"aspectFit",_i:"19-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})})),1)],1),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v(" \u4ea4\u6613\u8ba2\u5355 ")]),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},t._l(t._$g(23,"f"),(function(e,a,n,r){return i("v-uni-image",{key:e,staticClass:t._$g("23-"+r,"sc"),attrs:{src:t._$g("23-"+r,"a-src"),mode:"aspectFit",_i:"23-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})})),1)],1),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v(" \u8425\u9500\u4e2d\u5fc3 ")]),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},t._l(t._$g(27,"f"),(function(e,a,n,r){return i("v-uni-image",{key:e,staticClass:t._$g("27-"+r,"sc"),attrs:{src:t._$g("27-"+r,"a-src"),mode:"aspectFit",_i:"27-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})})),1)],1),t._$g(28,"i")?i("v-uni-image",{staticClass:t._$g(28,"sc"),attrs:{mode:"widthFix",src:"/static/images/home/zyBanner.png",_i:28},on:{click:function(e){return t.$handleViewEvent(e)}}}):i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[t._v(" \u5e73\u53f0\u81ea\u8425\u9879\u76ee ")]),i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},t._l(t._$g(32,"f"),(function(e,a,n,r){return i("v-uni-image",{key:e,staticClass:t._$g("32-"+r,"sc"),attrs:{src:t._$g("32-"+r,"a-src"),mode:"aspectFit",_i:"32-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})})),1)],1),i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[t._v("\u5ba2\u670d")]),i("v-uni-image",{staticClass:t._$g(36,"sc"),attrs:{src:"/static/images/icons/right_gray3.png",_i:36}})],1)],1)],1)],1)},r=[]},"42a1":function(t,e,i){"use strict";i.r(e);var a=i("0b0d"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"42bd":function(t,e,i){"use strict";i.r(e);var a=i("f44e"),n=i("1f50");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"7764aa8f",null,!1,a["a"],void 0);e["default"]=o.exports},"42e6":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-line",data:function(){return{wxsProps:{}}},components:{}}},"42f8":function(t,e,i){var a=i("9ede");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("f8dec79e",a,!0,{sourceMap:!1,shadowMode:!1})},4354:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-transition",props:["show","mode","duration","timingFunction","customClass","cellChild"],data:function(){return{wxsProps:{}}},components:{}}},"436e":function(t,e,i){"use strict";i.r(e);var a=i("3fb4"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"43d9":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("v-uni-text",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._v("\u9009\u62e9\u670d\u52a1")])],1),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},t._l(t._$g(5,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g("6-"+r,"sc"),class:t._$g("6-"+r,"c"),attrs:{_i:"6-"+r}},[t._v(t._$g("6-"+r,"t0-0"))]),t._$g("7-"+r,"i")?i("v-uni-image",{staticClass:t._$g("7-"+r,"sc"),attrs:{src:"/static/images/dataBox.png",mode:"aspectFit",_i:"7-"+r}}):t._e()],1)})),1),i("v-uni-scroll-view",{staticClass:t._$g(8,"sc"),attrs:{"scroll-y":!0,_i:8}},t._l(t._$g(9,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("9-"+r,"sc"),class:t._$g("9-"+r,"c"),attrs:{_i:"9-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r}},[t._v(t._$g("10-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("11-"+r,"sc"),attrs:{_i:"11-"+r}},[t._v(t._$g("11-"+r,"t0-0"))])],1)})),1)],1)],1)},n=[]},"43e6":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("fd8b");e=a(!1);var s=n(r);e.push([t.i,'.service-page[data-v-7596a78f]{padding-bottom:30rpx}.search-box[data-v-7596a78f]{width:100%;background-color:#fff;border-radius:8rpx;box-sizing:border-box;position:relative}.flexed[data-v-7596a78f]{position:-webkit-sticky;position:sticky;top:88rpx;left:0;z-index:999}.search-inp[data-v-7596a78f]{width:100%;height:68rpx;background-color:#f4f5f7;border-radius:34rpx;padding:0 70rpx 0 48rpx;font-size:28rpx;box-sizing:border-box}.placeholder[data-v-7596a78f]{color:#999}.search-icon[data-v-7596a78f]{width:32rpx;height:32rpx;position:absolute;right:56rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tab-container[data-v-7596a78f]{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;background-color:#fafafa;padding:30rpx 0rpx 20rpx 30rpx;box-sizing:border-box}.tab-item[data-v-7596a78f]{flex:1;text-align:center;font-size:30rpx;color:#666;padding:16rpx 0;position:relative}.tab-item.active[data-v-7596a78f]{color:#000;font-weight:500}.tab-item.active[data-v-7596a78f]::after{content:"";position:absolute;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:32rpx;height:6rpx;background-color:#e8101e;border-radius:3rpx}.service-list[data-v-7596a78f]{margin:24rpx 24rpx 0}.load-more[data-v-7596a78f]{text-align:center;padding:20rpx 0;color:#999;font-size:24rpx}.service-item[data-v-7596a78f]{cursor:pointer;user-select:none;-webkit-user-select:none}.service-nothings[data-v-7596a78f]{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:280rpx 0 0}.nothings-text[data-v-7596a78f]{font-size:32rpx;font-weight:500;color:#999;text-align:center;font-style:italic}.add-btn[data-v-7596a78f]{height:140rpx}.service-image[data-v-7596a78f]{border:1rpx solid #eee}.flexed[data-v-7596a78f]{top:calc(var(--status-bar-height) + 88rpx)}.headerBox[data-v-7596a78f]{display:flex;align-items:center;gap:30rpx;background-color:#fff;padding:24rpx 30rpx}.headerBox .addBox[data-v-7596a78f]{flex-shrink:0;display:flex;flex-direction:column;gap:4rpx;align-items:center;padding-right:17rpx}.headerBox .addBox .addIcon[data-v-7596a78f]{width:42rpx;height:42rpx}.headerBox .addBox .addText[data-v-7596a78f]{color:#666;font-size:20rpx;position:relative}.headerBox .addBox .addText[data-v-7596a78f]::after{content:"";position:absolute;background-image:url('+s+");background-position:50%;background-repeat:no-repeat;background-size:cover;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);right:-17rpx;width:12rpx;height:8rpx}",""]),t.exports=e},"440f":function(t,e,i){"use strict";i.r(e);var a=i("85e3"),n=i("2863");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("d5f3");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},4436:function(t,e,i){"use strict";i.r(e);var a=i("f90e"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},4438:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("524e")),r={props:["value","disabled","type","idCardtype","endDistanceYear"],data:function(){return{wxsProps:{}}},components:{timeDatePicker:n.default}};e.default=r},4462:function(t,e,i){"use strict";i.r(e);var a=i("a202"),n=i("fc57");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("fffc");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"44f0":function(t,e,i){"use strict";i.r(e);var a=i("3a53"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"450b":function(t,e,i){"use strict";var a=i("6734"),n=i.n(a);n.a},"456c":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"tips-popup",props:["show"],data:function(){return{wxsProps:{}}},components:{}}},4575:function(t,e,i){"use strict";var a=i("576a"),n=i.n(a);n.a},4581:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("e26b")),r={data:function(){return{wxsProps:{}}},components:{serviceCodeInput:n.default}};e.default=r},"45e7":function(t,e,i){"use strict";i.r(e);var a=i("f7ad"),n=i("97f9");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("0c7d");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"467d":function(t,e,i){"use strict";i.r(e);var a=i("6217"),n=i("afed");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("52c7");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"3e19644d",null,!1,a["a"],void 0);e["default"]=o.exports},"467f":function(t,e,i){"use strict";var a=i("7e11"),n=i.n(a);n.a},"468b":function(t,e,i){var a=i("97f1");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("5e2b491e",a,!0,{sourceMap:!1,shadowMode:!1})},"46a2":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("666e")),r=a(i("011c")),s=a(i("cab6")),o=a(i("1c5d")),c={name:"buyWorkstation",data:function(){return{wxsProps:{}}},components:{filterPopup:n.default,filterCard:r.default,timePicker:s.default,buyOrderCard:o.default}};e.default=c},"46d8":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),style:t._$g(0,"s"),attrs:{_i:0}},[i("v-uni-canvas",{staticClass:t._$g(1,"sc"),style:t._$g(1,"s"),attrs:{type:t._$g(1,"a-type"),id:t._$g(1,"a-id"),"canvas-id":t._$g(1,"a-canvas-id"),_i:1},on:{ready:function(e){return t.$handleViewEvent(e)}}}),t._$g(2,"i")?i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._t("default",[i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v(t._$g(4,"t0-0")+"%")])],{_i:3})],2):t._e()],1)},n=[]},"46e1":function(t,e,i){var a=i("7935");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("0cc45ecd",a,!0,{sourceMap:!1,shadowMode:!1})},"46ea":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("6bf1")),r=a(i("f8df")),s=a(i("2251")),o=a(i("2096")),c={data:function(){return{wxsProps:{}}},components:{searchBox:n.default,CommonList:r.default,serviecFirstTab:s.default,selfCardList:o.default}};e.default=c},"470f":function(t,e,i){var a=i("9d9a");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("fe818c06",a,!0,{sourceMap:!1,shadowMode:!1})},"474d":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.qualification-page[data-v-6130edbe]{display:flex;flex-direction:column;height:100vh;background:#f5f5f5}.content-area[data-v-6130edbe]{flex:1;overflow-y:auto;padding:25rpx 16rpx;padding-bottom:0}.change-tip[data-v-6130edbe]{background:#fae7ec;padding:20rpx;text-align:center}.change-tip uni-text[data-v-6130edbe]{font-size:28rpx;color:#d4131f}.reject-reason[data-v-6130edbe]{background:transparent;padding:24rpx}.reject-title[data-v-6130edbe]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:center;font-style:normal}.reject-detail[data-v-6130edbe]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:28rpx;color:#999;line-height:40rpx;text-align:center;font-style:normal;margin-top:12rpx}.audit-tip[data-v-6130edbe]{margin:20rpx 24rpx 20rpx 24rpx;border-radius:12rpx}.audit-text[data-v-6130edbe]{font-weight:400;font-size:32rpx;color:#333;text-align:center;display:block}.bottom-actions[data-v-6130edbe]{position:fixed;bottom:0;left:0;right:0;padding:0rpx 24rpx 40rpx 24rpx;background:#fff;z-index:100}.action-btn[data-v-6130edbe]{height:88rpx;border-radius:43rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:400;margin-top:20rpx}.change-info-btn[data-v-6130edbe], .view-change-btn[data-v-6130edbe], .resubmit-btn[data-v-6130edbe]{background:linear-gradient(180deg,#f52540,#e8101e)}.action-buttons-row[data-v-6130edbe]{display:flex;justify-content:space-between;margin:0 30rpx}.action-buttons-row .action-btn[data-v-6130edbe]{width:270rpx}.cancel-btn[data-v-6130edbe]{background:#e5e5e5;border-radius:43rpx;padding:0 15rpx}.submit-btn[data-v-6130edbe]{background:linear-gradient(180deg,#f52540,#e8101e 100%,#e8101e 0);border-radius:43rpx;padding:0 15rpx}.btn-text[data-v-6130edbe]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:36rpx;color:#fff;line-height:50rpx;text-align:left;font-style:normal}.cancel-text[data-v-6130edbe]{color:#666}.section[data-v-6130edbe]{margin-bottom:30rpx}.section-title[data-v-6130edbe]{display:flex;align-items:center;margin-bottom:30rpx}.title-bar[data-v-6130edbe]{width:6rpx;height:30rpx;background-color:#e8101e;margin-right:7rpx;border-radius:5rpx}.title-text[data-v-6130edbe]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#1d2129;line-height:48rpx;text-align:left;font-style:normal}.box-cont[data-v-6130edbe]{background:#fff;border-radius:20rpx;margin-bottom:24rpx;margin-left:8rpx;margin-right:8rpx;box-shadow:none}.form-item[data-v-6130edbe]{padding:24rpx 22rpx}.form-item-one[data-v-6130edbe]{display:flex;align-items:center;padding:24rpx}.form-item-two[data-v-6130edbe]{display:flex;justify-content:space-between;align-items:center;padding:24rpx}.label-wrapper[data-v-6130edbe]{display:inline-flex;align-items:center}.label[data-v-6130edbe]{font-size:28rpx;color:#333;font-weight:500;line-height:1}.label-icon[data-v-6130edbe]{width:26rpx;height:26rpx;margin-left:8rpx;align-items:center}.upload-label[data-v-6130edbe]{font-family:Helvetica;font-size:28rpx;color:#999;line-height:40rpx;text-align:left;font-style:normal;margin-top:24rpx}.required[data-v-6130edbe]::before{content:"*";color:red;margin-right:4rpx}.upload-tip[data-v-6130edbe]{font-size:26rpx;color:#999;margin:5rpx 0 24rpx 0;font-weight:400;font-family:PingFangSC,PingFang SC;text-align:left;font-style:normal}.upload-box[data-v-6130edbe]{display:flex;justify-content:center;align-items:center}.upload-camera[data-v-6130edbe]{width:446rpx;height:298rpx;display:flex;align-items:center;justify-content:center;border-radius:48rpx;overflow:hidden;background-color:#f8f9fd;position:relative}.idcard-upload-vertical-container[data-v-6130edbe]{display:flex;flex-direction:column;padding:40rpx 24rpx 0 24rpx}.idcard-upload-vertical-item[data-v-6130edbe]{display:flex;flex-direction:column;align-items:center;margin-bottom:30rpx}.camera-icon[data-v-6130edbe]{width:446rpx;height:298rpx;border-radius:48rpx}.preview-image[data-v-6130edbe]{border-radius:20rpx;width:100%;height:100%}.recognize-overlay[data-v-6130edbe]{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:48rpx}.recognize-loading[data-v-6130edbe]{width:60rpx;height:60rpx;border:4rpx solid #fff;border-top:4rpx solid #e8101e;border-radius:50%;-webkit-animation:spin-data-v-6130edbe 1s linear infinite;animation:spin-data-v-6130edbe 1s linear infinite;margin-bottom:16rpx}.recognize-text[data-v-6130edbe]{color:#fff;font-size:24rpx}@-webkit-keyframes spin-data-v-6130edbe{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-data-v-6130edbe{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.picker-content[data-v-6130edbe]{display:flex;align-items:center;justify-content:flex-end;flex:1}.placeholder[data-v-6130edbe]{color:#999;font-size:28rpx}.picker-value[data-v-6130edbe]{font-size:28rpx;color:#333}.input[data-v-6130edbe]{flex:1;font-size:28rpx;color:#333;text-align:right;margin-left:20rpx}.radio-group[data-v-6130edbe]{display:flex;margin-top:24rpx;width:100%}.radio-item[data-v-6130edbe]{display:flex;align-items:center;margin-right:130rpx}.radio[data-v-6130edbe]{width:30rpx;height:30rpx;border:2rpx solid #ddd;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16rpx}.radio.checked[data-v-6130edbe]{background-color:#e8101e;border-color:#e8101e}.radio-icon-image[data-v-6130edbe]{width:32rpx;height:32rpx}.radio-label[data-v-6130edbe]{font-size:28rpx;color:#333}.date-range-container[data-v-6130edbe]{padding:24rpx;display:flex;justify-content:space-between}.date-item[data-v-6130edbe]{flex:1;display:flex;flex-direction:column}.date-item[data-v-6130edbe]:first-child{margin-right:24rpx}.date-label[data-v-6130edbe]{font-size:28rpx;color:#333;margin-bottom:16rpx;font-weight:500;margin-left:8rpx}.date-picker-box[data-v-6130edbe]{display:flex;align-items:center;justify-content:space-between;border:2rpx solid #e9e9e9;border-radius:10rpx;padding:12rpx 19rpx;background-color:initial}.date-value[data-v-6130edbe]{font-size:28rpx;color:#333}.date-divider[data-v-6130edbe]{width:2rpx;height:30rpx;background-color:#e9e9e9;margin:0 15rpx 0 0}.date-arrow[data-v-6130edbe]{width:35rpx;height:33rpx}.date-picker-box.disabled[data-v-6130edbe]{border:2rpx solid #f3f3f3}.date-picker-box.disabled .date-value[data-v-6130edbe],\r\n.date-picker-box.disabled .placeholder[data-v-6130edbe]{color:#ccc}.date-picker-box.disabled .date-divider[data-v-6130edbe]{background-color:#f3f3f3}.date-picker-box uni-text[data-v-6130edbe]{flex:1}.arrow-right[data-v-6130edbe]{width:14rpx;height:26rpx;margin-left:16rpx}.popup[data-v-6130edbe]{position:fixed;left:0;right:0;bottom:0;z-index:999;visibility:hidden;opacity:0;transition:all .3s ease}.popup.show[data-v-6130edbe]{visibility:visible;opacity:1}.popup-mask[data-v-6130edbe]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.popup-content[data-v-6130edbe]{position:relative;background-color:#fff;border-radius:24rpx 24rpx 0 0;padding:32rpx;-webkit-transform:translateY(100%);transform:translateY(100%);transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;max-height:70vh}.popup.show .popup-content[data-v-6130edbe]{-webkit-transform:translateY(0);transform:translateY(0)}.popup-header[data-v-6130edbe]{display:flex;align-items:center;justify-content:space-between;margin-bottom:32rpx}.popup-title[data-v-6130edbe]{font-size:32rpx;color:#333;font-weight:500}.popup-close[data-v-6130edbe]{font-size:40rpx;color:#999;padding:16rpx}.popup-body[data-v-6130edbe]{max-height:400rpx;overflow-y:auto}.radio-list .radio-item[data-v-6130edbe]{margin-bottom:32rpx}.popup-footer[data-v-6130edbe]{margin-top:32rpx}.popup-btn[data-v-6130edbe]{height:88rpx;border-radius:44rpx;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#f52540,#e8101e)}.popup-btn .btn-text[data-v-6130edbe]{font-size:32rpx;font-weight:500;color:#fff}.cancel-text[data-v-6130edbe], .confirm-text[data-v-6130edbe]{font-size:32rpx;padding:16rpx}.cancel-text[data-v-6130edbe]{color:#666}.confirm-text[data-v-6130edbe]{color:#e8101e;font-weight:500}.picker-scroll[data-v-6130edbe]{height:400rpx}.picker-item[data-v-6130edbe]{height:68rpx;line-height:68rpx;text-align:center;font-size:28rpx}.tip-popup[data-v-6130edbe]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;display:flex;align-items:center;justify-content:center;visibility:hidden;opacity:0;transition:all .3s ease}.tip-popup.show[data-v-6130edbe]{visibility:visible;opacity:1}.tip-popup-mask[data-v-6130edbe]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.tip-popup-content[data-v-6130edbe]{position:relative;width:620rpx;height:810rpx}.tip-popup-bg[data-v-6130edbe]{width:620rpx;height:810rpx;position:absolute;top:0;left:0}.tip-popup-body[data-v-6130edbe]{position:relative;flex-direction:column;padding:80rpx 20rpx 40rpx 20rpx;box-sizing:border-box}.tip-title[data-v-6130edbe]{font-size:36rpx;font-weight:700;color:#333;text-align:center;margin-top:107rpx;margin-bottom:37rpx}.tip-image-container[data-v-6130edbe]{align-items:center;justify-content:center;margin-bottom:50rpx}.tip-image[data-v-6130edbe]{width:521rpx;height:327rpx;margin-left:30rpx}.tip-image.for_shop[data-v-6130edbe]{width:627rpx;height:327rpx;margin-left:13rpx}.tip-buttons[data-v-6130edbe]{display:flex;justify-content:space-between;padding:0 28rpx}.tip-btn[data-v-6130edbe]{width:250rpx;height:80rpx;border-radius:40rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:500}.tip-btn.cancel[data-v-6130edbe]{border:#e8101e 2rpx solid;background-color:initial;color:#e8101e}.tip-btn.confirm[data-v-6130edbe]{background:linear-gradient(180deg,#f52540,#e8101e);color:#fff}.tip-btn .btn-text[data-v-6130edbe]{color:inherit}.safe-bottom[data-v-6130edbe]{height:150rpx}',""]),t.exports=e},4788:function(t,e,i){"use strict";i.r(e);var a=i("99d9"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},4789:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("serviecFirstTab",{attrs:{_i:2},on:{"tab-click":function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},t._l(t._$g(4,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("4-"+r,"sc"),attrs:{_i:"4-"+r}},[i("uni-view",{staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r}},[i("v-uni-image",{staticClass:t._$g("6-"+r,"sc"),attrs:{src:t._$g("6-"+r,"a-src"),mode:"aspectFill",_i:"6-"+r}}),i("uni-view",{staticClass:t._$g("7-"+r,"sc"),attrs:{_i:"7-"+r}},[i("uni-view",{staticClass:t._$g("8-"+r,"sc"),attrs:{_i:"8-"+r}},[t._v(" "+t._$g("8-"+r,"t0-0")+" ")]),i("uni-view",{staticClass:t._$g("9-"+r,"sc"),attrs:{_i:"9-"+r}},[i("v-uni-text",{staticClass:t._$g("10-"+r,"sc"),staticStyle:{color:"#e8101e"},attrs:{_i:"10-"+r}},[t._v("\xa5")]),i("v-uni-text",{staticClass:t._$g("11-"+r,"sc"),staticStyle:{color:"#e8101e","font-size":"28rpx"},attrs:{_i:"11-"+r}},[t._v(t._$g("11-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("12-"+r,"sc"),attrs:{_i:"12-"+r}}),i("v-uni-text",{staticClass:t._$g("13-"+r,"sc"),attrs:{_i:"13-"+r}},[t._v(t._$g("13-"+r,"t0-0")+"\u5206\u949f")])],1)],1)],1),t._$g("14-"+r,"i")?i("v-uni-image",{staticClass:t._$g("14-"+r,"sc"),attrs:{src:"/static/images/icons/staffCancel.png",_i:"14-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}}):i("v-uni-image",{staticClass:t._$g("15-"+r,"sc"),attrs:{src:"/static/images/icons/staffAdd.png",_i:"15-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})],1)})),1),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._$g(17,"i")?i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{attrs:{_i:18}},[t._v("\u786e\u8ba4")])],1):i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{attrs:{_i:20}},[t._v("\u8fd4\u56de")])],1)],1)],1)},r=[]},4794:function(t,e,i){"use strict";i.r(e);var a=i("1880"),n=i("f8bd");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("98b3");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"47a9":function(t,e){t.exports=function(t){return t&&t.__esModule?t:{default:t}},t.exports.__esModule=!0,t.exports["default"]=t.exports},"47b2":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".agree-radio[data-v-23632d28]{width:32rpx;height:32rpx}.agree-btn[data-v-23632d28]{width:32rpx;height:32rpx}",""]),t.exports=e},"47c6":function(t,e,i){"use strict";i.r(e);var a=i("13ad"),n=i("fa13");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("c52f");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"2eded93f",null,!1,a["a"],void 0);e["default"]=o.exports},4833:function(t,e,i){var a=i("fe57");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("0c7cd56f",a,!0,{sourceMap:!1,shadowMode:!1})},"483a":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._l(t._$g(3,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("3-"+r,"sc"),attrs:{_i:"3-"+r}},[i("v-uni-text",{staticClass:t._$g("4-"+r,"sc"),attrs:{_i:"4-"+r}},[t._v(t._$g("4-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r}},[i("v-uni-image",{staticClass:t._$g("6-"+r,"sc"),attrs:{src:t._$g("6-"+r,"a-src"),mode:"aspectFill",_i:"6-"+r}}),i("uni-view",{staticClass:t._$g("7-"+r,"sc"),attrs:{_i:"7-"+r}},[i("uni-view",{staticClass:t._$g("8-"+r,"sc"),attrs:{_i:"8-"+r}},[t._v(t._$g("8-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("9-"+r,"sc"),attrs:{_i:"9-"+r}},[i("v-uni-text",{staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r}},[t._v("\xa5")]),i("v-uni-text",{staticClass:t._$g("11-"+r,"sc"),attrs:{_i:"11-"+r}},[t._v(t._$g("11-"+r,"t0-0"))])],1),t._$g("12-"+r,"i")?i("uni-view",{staticClass:t._$g("12-"+r,"sc"),attrs:{_i:"12-"+r}},[i("v-uni-image",{staticClass:t._$g("13-"+r,"sc"),attrs:{src:"/static/images/position_icon.png",mode:"aspectFit",_i:"13-"+r}}),i("v-uni-text",{staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[t._v(t._$g("14-"+r,"t0-0"))])],1):t._e()],1)],1),i("uni-view",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r}},[i("v-uni-text",{staticClass:t._$g("16-"+r,"sc"),attrs:{_i:"16-"+r}},[t._v(t._$g("16-"+r,"t0-0"))])],1)],1)})),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{attrs:{_i:18}},[i("v-uni-text",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v("\u70b9\u51fb\u67e5\u770b\uff0c")]),i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v(t._$g(20,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v("\u8ba2\u5355")])],1)],1)],2)],1)},r=[]},"484c":function(t,e,i){"use strict";var a=i("40e7"),n=i.n(a);n.a},4852:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("v-uni-scroll-view",{staticClass:t._$g(2,"sc"),attrs:{"scroll-y":!0,_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},t._l(t._$g(4,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("4-"+r,"sc"),class:t._$g("4-"+r,"c"),attrs:{_i:"4-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r}},[i("uni-view",{staticClass:t._$g("6-"+r,"sc"),attrs:{_i:"6-"+r}},[i("v-uni-text",{staticClass:t._$g("7-"+r,"sc"),attrs:{_i:"7-"+r}},[t._v(t._$g("7-"+r,"t0-0"))]),i("v-uni-text",{staticClass:t._$g("8-"+r,"sc"),attrs:{_i:"8-"+r}},[t._v(t._$g("8-"+r,"t0-0"))])],1),i("uni-view",{staticClass:t._$g("9-"+r,"sc"),attrs:{_i:"9-"+r}},[i("v-uni-text",{staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r}},[t._v(t._$g("10-"+r,"t0-0"))]),i("v-uni-text",{staticClass:t._$g("11-"+r,"sc"),attrs:{_i:"11-"+r}},[t._v(t._$g("11-"+r,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g("12-"+r,"sc"),attrs:{_i:"12-"+r}},[i("uni-view",{staticClass:t._$g("13-"+r,"sc"),attrs:{_i:"13-"+r},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._$g("14-"+r,"i")?i("v-uni-image",{staticClass:t._$g("14-"+r,"sc"),attrs:{src:"/static/images/agree_n.png",mode:"aspectFit",_i:"14-"+r}}):i("v-uni-image",{staticClass:t._$g("15-"+r,"sc"),attrs:{src:"/static/images/agree_y.png",mode:"aspectFit",_i:"15-"+r}}),i("v-uni-text",{staticClass:t._$g("16-"+r,"sc"),attrs:{_i:"16-"+r}},[t._v("\u9ed8\u8ba4\u5730\u5740")])],1),i("uni-view",{staticClass:t._$g("17-"+r,"sc"),attrs:{_i:"17-"+r}},[i("uni-view",{staticClass:t._$g("18-"+r,"sc"),attrs:{_i:"18-"+r},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-image",{staticClass:t._$g("19-"+r,"sc"),attrs:{src:"/static/images/revise.png",mode:"aspectFit",_i:"19-"+r}}),i("v-uni-text",{staticClass:t._$g("20-"+r,"sc"),attrs:{_i:"20-"+r}},[t._v("\u4fee\u6539")])],1),i("uni-view",{staticClass:t._$g("21-"+r,"sc"),attrs:{_i:"21-"+r},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-image",{staticClass:t._$g("22-"+r,"sc"),attrs:{src:"/static/images/delete_icon.png",mode:"aspectFit",_i:"22-"+r}}),i("v-uni-text",{staticClass:t._$g("23-"+r,"sc"),attrs:{_i:"23-"+r}},[t._v("\u5220\u9664")])],1)],1)],1)],1)})),1)],1),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}}),i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v("+\u6dfb\u52a0\u65b0\u5730\u5740")])],1)],1)],1)},r=[]},4860:function(t,e,i){"use strict";i.r(e);var a=i("e321"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"48c1":function(t,e,i){"use strict";var a=i("f471"),n=i.n(a);n.a},"48d2":function(t,e,i){var a=i("5647");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("0928f652",a,!0,{sourceMap:!1,shadowMode:!1})},"494e":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("a1a9")),r={data:function(){return{wxsProps:{}}},components:{numberBox:n.default}};e.default=r},"498b":function(t,e,i){"use strict";i.r(e);var a=i("ebc0"),n=i("302d");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("b56c");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"49a9":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uvLoadingIcon:i("c9c1").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),class:t._$g(0,"c"),style:t._$g(0,"s"),attrs:{_i:0},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(1,"sc"),style:t._$g(1,"s"),attrs:{_i:1}}),i("uni-view",{ref:"uv-switch__node",staticClass:t._$g(2,"sc"),class:t._$g(2,"c"),style:t._$g(2,"s"),attrs:{_i:2}},[i("uv-loading-icon",{attrs:{_i:3}})],1)],1)},r=[]},"49b2":function(t,e,i){var a=i("330e");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("634e8dd4",a,!0,{sourceMap:!1,shadowMode:!1})},"49b4":function(t,e,i){"use strict";i.r(e);var a=i("62e1"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"49b6":function(t,e,i){"use strict";i.r(e);var a=i("8ee6"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"49b6d":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"49e1":function(t,e,i){var a=i("f8d0");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("7c36fb49",a,!0,{sourceMap:!1,shadowMode:!1})},"49f1":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("e26b")),r={data:function(){return{wxsProps:{}}},components:{serviceCodeInput:n.default}};e.default=r},"49f3":function(t,e,i){var a=i("0af2");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("032a1c77",a,!0,{sourceMap:!1,shadowMode:!1})},"4a0e":function(t,e,i){"use strict";i.r(e);var a=i("af56"),n=i("d2b0");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("ceeb");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"4384b38a",null,!1,a["a"],void 0);e["default"]=o.exports},"4a13":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default,uvPopup:i("05d1").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1},on:{onHeadleClick:function(e){return t.$handleViewEvent(e)}}}),i("searchBox",{attrs:{_i:2},on:{confirm:function(e){return t.$handleViewEvent(e)},search:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(2,"v-model"),callback:function(){},expression:"queryData.title"}}),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},t._l(t._$g(4,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("4-"+r,"sc"),class:t._$g("4-"+r,"c"),attrs:{_i:"4-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("4-"+r,"t0-0")+" ")])})),1),i("CommonList",{ref:"groupRef",attrs:{_i:5},scopedSlots:t._u([{key:"listData",fn:function(e,a,n){e.list;return[i("uni-view",{staticClass:a._$g("7-"+n,"sc"),attrs:{_i:"7-"+n}},t._l(a._$g("8-"+n,"f"),(function(e,r,s,o){return i("uni-view",{key:e,staticClass:a._$g("8-"+n+o,"sc"),attrs:{_i:"8-"+n+o}},[i("v-uni-image",{staticClass:a._$g("9-"+n+o,"sc"),attrs:{src:a._$g("9-"+n+o,"a-src"),mode:"aspectFill",_i:"9-"+n+o}}),i("uni-view",{staticClass:a._$g("10-"+n+o,"sc"),attrs:{_i:"10-"+n+o}},[i("uni-view",{staticClass:a._$g("11-"+n+o,"sc"),attrs:{_i:"11-"+n+o}},[t._v(a._$g("11-"+n+o,"t0-0"))]),i("uni-view",{staticClass:a._$g("12-"+n+o,"sc"),attrs:{_i:"12-"+n+o}},[i("v-uni-text",{staticClass:a._$g("13-"+n+o,"sc"),attrs:{_i:"13-"+n+o}},[i("v-uni-text",{staticStyle:{"font-size":"24rpx"},attrs:{_i:"14-"+n+o}},[t._v("\xa5")]),t._v(a._$g("13-"+n+o,"t1-0"))],1),i("uni-view",{staticClass:a._$g("15-"+n+o,"sc"),attrs:{_i:"15-"+n+o},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(a._$g("15-"+n+o,"t0-0"))])],1)],1),i("v-uni-image",{staticClass:a._$g("16-"+n+o,"sc"),attrs:{src:a._$g("16-"+n+o,"a-src"),_i:"16-"+n+o}})],1)})),1)]}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"18-"+a}})]}}])}),i("uv-popup",{ref:"popup",attrs:{_i:19}},[i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("v-uni-text",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v(" \u4ec0\u4e48\u662f\u5e73\u53f0\u81ea\u8425\u670d\u52a1\u5217\u8868 ")]),i("v-uni-text",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v(" 1\u3001\u5e73\u53f0\u81ea\u8425\u670d\u52a1\uff1a\u5546\u54c1\u5e73\u53f0\u7edf\u4e00\u63d0\u4f9b\uff0c\u670d\u52a1\u7531\u6307\u5b9a\u63d0\u4f9b\u8005\u627f\u63a5\u3002\u552e\u4ef7\u4e3a\u5546\u54c1\u6807\u4ef7\uff0c\u5b9e\u9645\u5230\u8d26\u91d1\u989d = \u552e\u4ef7 - \u5e73\u53f0\u670d\u52a1\u8d39\uff0c\u4ee5\u5b9e\u9645\u5230\u8d26\u4e3a\u51c6\u3002 ")]),i("v-uni-text",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v(" 2\u3001\u5df2\u4e0a\u67b6\u5373\u5546\u54c1\u5904\u4e8e\u552e\u5356\u72b6\u6001\uff0c\u8bf7\u4f9d\u636e\u5b9e\u9645\u5e93\u5b58\u60c5\u51b5\uff0c\u5408\u7406\u6267\u884c\u4e0a\u4e0b\u67b6\u64cd\u4f5c\u3002 ")]),i("v-uni-text",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[t._v(" 3\u3001\u5546\u54c1\u552e\u4ef7\u5c06\u6839\u636e\u5e73\u53f0\u89c4\u5219\u52a8\u6001\u8c03\u6574\uff0c\u5f53\u524d\u6807\u4ef7\u4ec5\u4e3a\u5373\u65f6\u552e\u4ef7\u4fe1\u606f\u3002 ")]),i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u53d6\u6d88 ")]),i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u6211\u5df2\u4e86\u89e3 ")])],1)],1)],1)],1)},r=[]},"4a25":function(t,e,i){"use strict";i.r(e);var a=i("0d5f"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"4a44":function(t,e,i){"use strict";i.r(e);var a=i("52c9"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"4a5c":function(t,e,i){var a=i("b65f");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("0171e288",a,!0,{sourceMap:!1,shadowMode:!1})},"4aaf":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default,filterCard:i("011c").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),class:t._$g(0,"c"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),style:t._$g(2,"s"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("v-uni-input",{staticClass:t._$g(5,"sc"),attrs:{type:"text",placeholder:"\u5de5\u65f6\u540d\u79f0","placeholder-class":"placeholder",_i:5},on:{confirm:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(5,"v-model"),callback:function(e){t.$handleVModelEvent(5,e)},expression:"title"}}),i("v-uni-image",{staticClass:t._$g(6,"sc"),attrs:{src:"/static/home/search.png",mode:"aspectFit",_i:6},on:{click:function(e){return t.$handleViewEvent(e)}}})],1)],1),i("v-uni-scroll-view",{staticClass:t._$g(7,"sc"),attrs:{"scroll-x":!0,"show-scrollbar":!1,_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},t._l(t._$g(9,"f"),(function(e,a,n,r){return i("uni-view",{key:e,class:t._$g("9-"+r,"c"),attrs:{_i:"9-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r}},[t._v(t._$g("10-"+r,"t0-0"))])],1)})),1)],1),t._$g(11,"i")?i("v-uni-scroll-view",{staticClass:t._$g(11,"sc"),attrs:{"scroll-x":!0,"show-scrollbar":"false",_i:11}},[i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},t._l(t._$g(13,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("13-"+r,"sc"),class:t._$g("13-"+r,"c"),attrs:{_i:"13-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("14-"+r,"sc"),attrs:{src:t._$g("14-"+r,"a-src"),mode:"aspectFill",_i:"14-"+r}}),i("v-uni-text",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r}},[t._v(t._$g("15-"+r,"t0-0"))])],1)})),1)],1):t._e(),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u670d\u52a1\u65f6\u95f4")]),i("v-uni-image",{staticClass:t._$g(19,"sc"),attrs:{src:"/static/images/icons/triangle_down.png",_i:19}})],1),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u7b5b\u9009")]),i("v-uni-image",{staticClass:t._$g(22,"sc"),attrs:{src:"/static/images/icons/triangle_down.png",_i:22}})],1)],1),i("uni-view",{directives:[{name:"show",rawName:"v-show",value:t._$g(23,"v-show"),expression:"_$g(23,'v-show')"}],staticClass:t._$g(23,"sc"),attrs:{_i:23},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(24,"sc"),class:t._$g(24,"c"),attrs:{_i:24}},t._l(t._$g(25,"f"),(function(e,a,n,r){return i("uni-view",{key:e,class:t._$g("25-"+r,"c"),attrs:{_i:"25-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("26-"+r,"sc"),attrs:{_i:"26-"+r}},[t._v(t._$g("26-"+r,"t0-0")+" "),t._$g("27-"+r,"i")?i("v-uni-image",{staticClass:t._$g("27-"+r,"sc"),attrs:{src:"/static/images/icons/active.png",mode:"aspectFit",_i:"27-"+r}}):t._e()],1)],1)})),1)],1),t._$g(28,"i")?i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},t._l(t._$g(29,"f"),(function(e,a,n,r){return i("buy-order-card",{key:e,attrs:{_i:"29-"+r},on:{placeOrder:function(e){return t.$handleViewEvent(e)}}})})),1):i("noData",{attrs:{_i:30}}),i("filterPopup",{ref:"filterPopup",attrs:{_i:31},on:{change:function(e){return t.$handleViewEvent(e)},reset:function(e){return t.$handleViewEvent(e)},sure:function(e){return t.$handleViewEvent(e)}}},[i("filterCard",{attrs:{_i:32},on:{selectDetail:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g(33,"t0-0")+" ")])],1),i("filterCard",{attrs:{_i:34},on:{selectDetail:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[i("v-uni-input",{staticClass:t._$g(36,"sc"),attrs:{type:"number",placeholder:"\u6700\u4f4e\u4ef7",_i:36},model:{value:t._$g(36,"v-model"),callback:function(e){t.$handleVModelEvent(36,e)},expression:"start_price"}}),i("v-uni-text",{staticClass:t._$g(37,"sc"),attrs:{_i:37}}),i("v-uni-input",{staticClass:t._$g(38,"sc"),attrs:{type:"number",placeholder:"\u6700\u9ad8\u4ef7",_i:38},model:{value:t._$g(38,"v-model"),callback:function(e){t.$handleVModelEvent(38,e)},expression:"end_price"}})],1)],1),i("filterCard",{attrs:{_i:39},on:{selectDetail:function(e){return t.$handleViewEvent(e)}}})],1),i("timePicker",{ref:"timePopup",attrs:{_i:40},on:{confirmTime:function(e){return t.$handleViewEvent(e)}}})],1)},r=[]},"4ac4":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"4b51":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("6bf1")),r=a(i("f8df")),s={name:"list",data:function(){return{wxsProps:{}}},components:{searchBox:n.default,CommonList:r.default}};e.default=s},"4b72":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".manHourCard[data-v-1df83369]{position:relative;background-color:#fff;border-radius:20rpx;margin-bottom:32rpx;box-sizing:border-box;overflow:hidden;touch-action:pan-y pinch-zoom}.manHourCard[data-v-1df83369]:last-child{margin-bottom:0}.manHour-content[data-v-1df83369]{width:100%;height:100%;padding:24rpx;box-sizing:border-box;background-color:#fff;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;position:relative;z-index:1;display:flex;flex-direction:column}.manHour-content .top_info[data-v-1df83369]{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;width:100%;height:100%;margin-bottom:30rpx;border-bottom:2rpx solid #f6f5f5;padding-bottom:24rpx}.manHour-content .btns[data-v-1df83369]{width:100%;display:flex;justify-content:flex-end}.delete-btn[data-v-1df83369]{position:absolute;right:-160rpx;top:0;width:160rpx;height:100%;background-color:#e8101e;color:#fff;display:flex;justify-content:center;align-items:center;font-size:28rpx;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;z-index:2}.manHourCard:active .manHour-content[data-v-1df83369],\n.manHourCard:active .delete-btn[data-v-1df83369]{-webkit-transform:none;transform:none}.manHour-image[data-v-1df83369]{width:200rpx;height:200rpx;border-radius:24rpx;margin-right:30rpx;background-color:rgba(0,0,0,.05)}.manHour-info[data-v-1df83369]{height:200rpx;width:350rpx;display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:flex-start}.manHour-title[data-v-1df83369]{font-size:30rpx;padding-right:20rpx;line-height:30rpx;color:#333;font-weight:500;margin-bottom:20rpx}.manHour-subtitle[data-v-1df83369]{font-size:26rpx;line-height:26rpx;color:#666}.manHour-price[data-v-1df83369]{display:flex;align-items:baseline;font-weight:500}.price-symbol[data-v-1df83369]{font-size:30rpx;color:#e8101e}.price-value[data-v-1df83369]{font-size:30rpx;color:#e8101e}.price-unit[data-v-1df83369]{font-size:30rpx;color:#e8101e}.status-tag[data-v-1df83369]{position:absolute;top:0rpx;right:0rpx;border-radius:0 0 0 20rpx;line-height:38rpx;text-align:center;box-sizing:border-box;font-size:24rpx;padding:10rpx 18rpx}.status-tag.state2[data-v-1df83369]{background-color:rgba(252,67,124,.15)}.status-tag.state2 .status-text[data-v-1df83369]{font-weight:400;font-size:26rpx;color:#e8101e;line-height:37rpx;text-align:left;font-style:normal}.status-tag.state1[data-v-1df83369]{background-color:rgba(40,209,137,.2)}.status-tag.state1 .status-text[data-v-1df83369]{color:#28d189}.status-tag.state0[data-v-1df83369],\n.status-tag.state3[data-v-1df83369],\n.status-tag.state4[data-v-1df83369]{background-color:rgba(209,15,19,.2)}.status-tag.state0 .status-text[data-v-1df83369],\n.status-tag.state3 .status-text[data-v-1df83369],\n.status-tag.state4 .status-text[data-v-1df83369]{color:#d10f13}.view-btn[data-v-1df83369]{display:flex;align-items:center;justify-content:center;margin-left:39rpx;width:160rpx;height:64rpx;border-radius:64rpx;border:2rpx solid #979797}.view-icon[data-v-1df83369]{width:32rpx;height:32rpx;margin-right:8rpx}.view-text[data-v-1df83369]{font-size:26rpx;color:#333}.load-more[data-v-1df83369]{text-align:center;padding:20rpx 0;color:#999;font-size:24rpx}.manHourCard[data-v-1df83369]{cursor:pointer;user-select:none;-webkit-user-select:none}.manHour-content[data-v-1df83369],\n.delete-btn[data-v-1df83369]{will-change:transform}.add-btn[data-v-1df83369]{height:140rpx}.manHour-image[data-v-1df83369]{border:1rpx solid #eee}",""]),t.exports=e},"4c3d":function(t,e,i){"use strict";i.r(e);var a=i("31fd"),n=i("2a2c");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("f174");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"9c94eae8",null,!1,a["a"],void 0);e["default"]=o.exports},"4c51":function(t,e,i){"use strict";i.r(e);var a=i("e326"),n=i("d60e");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("bef5");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"5ffce9d0",null,!1,a["a"],void 0);e["default"]=o.exports},"4c56":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("fd8b");e=a(!1);var s=n(r);e.push([t.i,'.service-page[data-v-48c81e5d]{padding-bottom:30rpx}.search-box[data-v-48c81e5d]{width:100%;background-color:#fff;border-radius:8rpx;box-sizing:border-box;position:relative}.flexed[data-v-48c81e5d]{position:-webkit-sticky;position:sticky;top:88rpx;left:0;z-index:999}.search-inp[data-v-48c81e5d]{width:100%;height:68rpx;background-color:#f4f5f7;border-radius:34rpx;padding:0 70rpx 0 82rpx;font-size:28rpx;box-sizing:border-box}.placeholder[data-v-48c81e5d]{font-weight:400;font-size:28rpx;color:#ccc;line-height:34rpx;text-align:left;font-style:normal}.search-icon[data-v-48c81e5d]{width:34rpx;height:34rpx;position:absolute;left:30rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tab-container[data-v-48c81e5d]{display:flex;flex-flow:row nowrap;align-items:center;justify-content:space-between;background-color:#fafafa;padding:30rpx 30rpx 20rpx 30rpx;box-sizing:border-box}.tab-item[data-v-48c81e5d]{text-align:center;font-size:30rpx;color:#666;padding:16rpx 0;position:relative}.tab-item.active[data-v-48c81e5d]{color:#000;font-weight:500}.tab-item.active[data-v-48c81e5d]::after{content:"";position:absolute;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:32rpx;height:6rpx;background-color:#e8101e;border-radius:3rpx}.service-list[data-v-48c81e5d]{margin:24rpx 24rpx 0}.load-more[data-v-48c81e5d]{text-align:center;padding:20rpx 0;color:#999;font-size:24rpx}.service-item[data-v-48c81e5d]{cursor:pointer;user-select:none;-webkit-user-select:none}.service-nothings[data-v-48c81e5d]{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:280rpx 0 0}.nothings-text[data-v-48c81e5d]{font-size:32rpx;font-weight:500;color:#999;text-align:center;font-style:italic}.add-btn[data-v-48c81e5d]{height:140rpx}.service-image[data-v-48c81e5d]{border:1rpx solid #eee}.flexed[data-v-48c81e5d]{top:calc(var(--status-bar-height) + 88rpx)}.headerBox[data-v-48c81e5d]{display:flex;align-items:center;gap:30rpx;background-color:#fff;padding:24rpx 30rpx}.headerBox .addBox[data-v-48c81e5d]{flex-shrink:0;display:flex;flex-direction:column;gap:4rpx;align-items:center;padding-right:17rpx}.headerBox .addBox .addIcon[data-v-48c81e5d]{width:42rpx;height:42rpx}.headerBox .addBox .addText[data-v-48c81e5d]{color:#666;font-size:20rpx;position:relative}.headerBox .addBox .addText[data-v-48c81e5d]::after{content:"";position:absolute;background-image:url('+s+");background-position:50%;background-repeat:no-repeat;background-size:cover;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);right:-17rpx;width:12rpx;height:8rpx}",""]),t.exports=e},"4c88":function(t,e,i){"use strict";i.r(e);var a=i("8447"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"4cd1":function(t,e,i){"use strict";var a=i("d99e"),n=i.n(a);n.a},"4cff":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("v-uni-image",{staticClass:t._$g(1,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/55d8e65a-04e4-4164-b956-278c6bc28a2b.png",mode:"widthFix",_i:1}}),i("v-uni-text",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._v(t._$g(2,"t0-0"))]),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u7acb\u5373\u767b\u5f55")])],1)},n=[]},"4d1b":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.uni-textarea-wrapper .uni-textarea-placeholder[data-v-4e9de27e]{display:flex;align-items:center}.add-service[data-v-4e9de27e]{padding:24rpx 24rpx 0;box-sizing:border-box}.form-container[data-v-4e9de27e]{margin-top:20rpx}.form-item[data-v-4e9de27e]{background-color:#fff;padding:24rpx;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;box-sizing:border-box;border-radius:10rpx;margin-bottom:24rpx}.shopsale-box[data-v-4e9de27e]{flex-flow:column;justify-content:space-between;align-items:space-between}.shopsale-change[data-v-4e9de27e]{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;margin-top:24rpx}.shopsale-option[data-v-4e9de27e]{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}.shopsale-option[data-v-4e9de27e]:last-child{margin-left:220rpx}.option-text[data-v-4e9de27e]{padding-left:16rpx}.form-item-up[data-v-4e9de27e]{background-color:#fff;padding:24rpx;display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:flex-start;box-sizing:border-box;border-radius:10rpx;margin-bottom:24rpx;gap:24rpx}.form-label[data-v-4e9de27e]{font-weight:500;font-size:32rpx;color:#333}.form-input[data-v-4e9de27e]{flex:1;height:40rpx;font-size:28rpx;color:#333;margin-left:32rpx}.form-right[data-v-4e9de27e]{display:flex;justify-content:space-between;align-items:center}.form-value[data-v-4e9de27e]{font-size:28rpx;color:#333;margin-right:11rpx;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:400rpx;text-align:right}.placeholder[data-v-4e9de27e]{font-weight:400;font-size:28rpx;color:#cacccc;line-height:40rpx;text-align:left;font-style:normal}.textarea-item[data-v-4e9de27e]{padding-bottom:30rpx}.form-textarea[data-v-4e9de27e]{padding:32rpx 0;flex:1;height:198rpx;font-size:28rpx;color:#333;line-height:1.5;margin-left:32rpx}.upload-item[data-v-4e9de27e]{padding-bottom:30rpx}.upload-tip[data-v-4e9de27e]{font-size:24rpx;color:#999;margin-left:10rpx}.upload-content[data-v-4e9de27e]{margin-top:20rpx;position:relative}.progress-box[data-v-4e9de27e]{width:204rpx;height:204rpx;background-color:rgba(0,0,0,.5);position:absolute;top:0;left:0;right:0;z-index:99;display:flex;flex-flow:column nowrap;justify-content:center;align-items:center}.progress-text[data-v-4e9de27e]{font-size:42rpx;color:#fff;font-weight:500}.progress-lable[data-v-4e9de27e]{font-size:28rpx;color:#fff}.progress-box uni-progress[data-v-4e9de27e]{position:absolute;left:0;right:0;bottom:0}.video-preview[data-v-4e9de27e],\r\n.image-preview[data-v-4e9de27e],\r\n.upload-btn[data-v-4e9de27e]{width:200rpx;height:200rpx;margin-right:10rpx;margin-bottom:20rpx;position:relative}.preview-video[data-v-4e9de27e],\r\n.preview-image[data-v-4e9de27e]{width:200rpx;height:200rpx;border-radius:8rpx}.upload-btn[data-v-4e9de27e]{border:2rpx dashed #ddd;border-radius:8rpx;display:flex;justify-content:center;align-items:center}.plus-icon[data-v-4e9de27e]{font-size:60rpx;color:#999}.delete-btn[data-v-4e9de27e]{position:absolute;top:-20rpx;right:-20rpx;width:40rpx;height:40rpx;background-color:rgba(0,0,0,.5);border-radius:50%;color:#fff;display:flex;justify-content:center;align-items:center;font-size:32rpx}.bottom-buttons[data-v-4e9de27e]{height:100rpx;padding:40rpx 0 64rpx;box-sizing:border-box;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center}.btn-draft[data-v-4e9de27e],\r\n.btn-submit[data-v-4e9de27e]{width:334rpx;height:78rpx;line-height:78rpx;text-align:center;font-size:28rpx;border-radius:78rpx}.btn-submit2[data-v-4e9de27e]{width:698rpx}.btn-draft[data-v-4e9de27e]{background-color:#fff;color:#e8101e;border:2rpx solid #e8101e;box-sizing:border-box}.btn-submit[data-v-4e9de27e]{background-color:#e8101e;color:#fff}.form-step[data-v-4e9de27e]{background-color:#fff;margin-bottom:24rpx}.form-step .form-item[data-v-4e9de27e]{margin-bottom:0}.step[data-v-4e9de27e]{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;padding:0 24rpx 24rpx}.step-inp[data-v-4e9de27e]{flex:1;font-size:28rpx;color:#333;margin-left:38rpx;padding:0 24rpx;background-color:hsla(0,0%,90.2%,.5)}.step-textarea[data-v-4e9de27e]{font-size:24rpx;flex:1;height:70rpx;border-radius:6rpx;margin-left:38rpx;padding:24rpx;background-color:hsla(0,0%,90.2%,.5)}.picker-trigger[data-v-4e9de27e]{display:flex;align-items:center;justify-content:space-between;padding:24rpx 32rpx;background-color:#fff;border-radius:12rpx;margin-bottom:24rpx}.picker-label[data-v-4e9de27e]{font-size:28rpx;color:#333}.picker-value[data-v-4e9de27e]{font-size:28rpx;color:#666}.picker-arrow[data-v-4e9de27e]{width:32rpx;height:32rpx;margin-left:16rpx}.delete-icon[data-v-4e9de27e]{width:32rpx;height:32rpx;margin-left:24rpx}.form-detail[data-v-4e9de27e]{position:relative}.detail-cont[data-v-4e9de27e]{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;width:170rpx;height:210rpx;position:absolute;top:50rpx;right:-24rpx;background-color:#fff;padding:20rpx;border-radius:20rpx;box-shadow:0 8rpx 16rpx 0 rgba(0,0,0,.5);z-index:999}.detail-item[data-v-4e9de27e]{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;padding:12rpx 0;border-bottom:1rpx solid hsla(0,0%,90.2%,.5)}.lable-view[data-v-4e9de27e]{width:120rpx}.required[data-v-4e9de27e]::before{content:"*";color:red;margin-right:4rpx}.step-inp[data-v-4e9de27e],\r\n.form-input[data-v-4e9de27e]{height:60rpx}.mask[data-v-4e9de27e]{position:fixed;top:0;right:0;left:0;width:100vw;height:100vh;z-index:99}\n.form-input[data-v-4e9de27e]{height:90rpx}.permission.transform[data-v-4e9de27e]{top:calc(var(--status-bar-height) + 88rpx + 30rpx);opacity:1;visibility:visible}\n.redTip[data-v-4e9de27e]{color:#e8101e;font-size:24rpx;margin-left:10rpx}.content_box[data-v-4e9de27e]{display:flex;align-items:center;gap:10rpx}.form-input[data-v-4e9de27e]{width:100%;height:72rpx}.form-input-box[data-v-4e9de27e]{border-radius:10rpx;border:1rpx solid #e5e5e5;width:100%}.unit[data-v-4e9de27e]{font-size:32rpx;color:#333;flex:1}.small_input[data-v-4e9de27e]{width:320rpx!important}',""]),t.exports=e},"4db0":function(t,e,i){"use strict";var a=i("b0af"),n=i.n(a);n.a},"4db1":function(t,e,i){"use strict";var a=i("fe55"),n=i.n(a);n.a},"4dbc":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},t._l(t._$g(3,"f"),(function(e,a,n,r){return i("uni-view",{key:e,class:t._$g("3-"+r,"c"),attrs:{_i:"3-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("3-"+r,"t0-0")+" ")])})),1),i("CommonList",{ref:"groupRef",attrs:{_i:4},scopedSlots:t._u([{key:"listData",fn:function(e,a,n){e.list;return[i("uni-view",{staticClass:a._$g("6-"+n,"sc"),attrs:{_i:"6-"+n}},t._l(a._$g("7-"+n,"f"),(function(e,r,s,o){return a._$g("7-"+n+o,"i")?i("uni-view",{key:e,staticClass:a._$g("7-"+n+o,"sc"),attrs:{_i:"7-"+n+o}},[i("uni-view",{staticClass:a._$g("8-"+n+o,"sc"),class:a._$g("8-"+n+o,"c"),attrs:{_i:"8-"+n+o}},[t._v(" "+a._$g("8-"+n+o,"t0-0")+" ")]),i("uni-view",{staticClass:a._$g("9-"+n+o,"sc"),attrs:{_i:"9-"+n+o}},[i("v-uni-image",{staticClass:a._$g("10-"+n+o,"sc"),attrs:{src:a._$g("10-"+n+o,"a-src"),mode:"aspectFill",_i:"10-"+n+o}}),i("uni-view",{staticClass:a._$g("11-"+n+o,"sc"),attrs:{_i:"11-"+n+o}},[i("uni-view",{staticClass:a._$g("12-"+n+o,"sc"),attrs:{_i:"12-"+n+o}},[i("v-uni-text",{staticClass:a._$g("13-"+n+o,"sc"),attrs:{_i:"13-"+n+o}},[t._v(a._$g("13-"+n+o,"t0-0"))])],1),i("uni-view",{staticClass:a._$g("14-"+n+o,"sc"),attrs:{_i:"14-"+n+o}},[t._v("\u9080\u8bf7\u65f6\u95f4: "+a._$g("14-"+n+o,"t0-0"))]),a._$g("15-"+n+o,"i")?i("uni-view",{staticClass:a._$g("15-"+n+o,"sc"),attrs:{_i:"15-"+n+o}},[t._v(" \u7ed1\u5b9a\u65f6\u95f4: "+a._$g("15-"+n+o,"t0-0")+" ")]):t._e(),a._$g("16-"+n+o,"i")?i("uni-view",{staticClass:a._$g("16-"+n+o,"sc"),attrs:{_i:"16-"+n+o}},[t._v(" \u62d2\u7edd\u65f6\u95f4: "+a._$g("16-"+n+o,"t0-0")+" ")]):t._e()],1)],1),a._$g("17-"+n+o,"i")?i("uni-view",{staticClass:a._$g("17-"+n+o,"sc"),attrs:{_i:"17-"+n+o}},[i("v-uni-text",{staticClass:a._$g("18-"+n+o,"sc"),attrs:{_i:"18-"+n+o}},[t._v("\u62d2\u7edd\u539f\u56e0:")]),i("v-uni-text",{staticClass:a._$g("19-"+n+o,"sc"),attrs:{_i:"19-"+n+o}},[t._v(a._$g("19-"+n+o,"t0-0"))])],1):t._e()],1):t._e()})),1)]}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"21-"+a}})]}}])})],1)},r=[]},"4dbc1":function(t,e,i){"use strict";var a=i("6f7c"),n=i.n(a);n.a},"4e2b":function(t,e,i){"use strict";i.r(e);var a=i("d87b"),n=i("3b00");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("3e03");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"4e39":function(t,e,i){"use strict";i.r(e);var a=i("8935"),n=i("4436");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("58cb");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"4e4a":function(t,e,i){"use strict";i.r(e);var a=i("4852"),n=i("8412");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("1cf7");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"3f7e40b8",null,!1,a["a"],void 0);e["default"]=o.exports},"4e91":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uvIcon:i("08d8").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),class:t._$g(0,"c"),style:t._$g(0,"s"),attrs:{_i:0},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("uni-view",{staticClass:t._$g(1,"sc"),class:t._$g(1,"c"),style:t._$g(1,"s"),attrs:{_i:1},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._t("icon",[i("uv-icon",{staticClass:t._$g(3,"sc"),attrs:{_i:3}})],{_i:2})],2),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._t("default",[i("v-uni-text",{style:t._$g(6,"s"),attrs:{_i:6}},[t._v(t._$g(6,"t0-0"))])],{_i:5})],2)],1)},r=[]},"4ee8":function(t,e,i){"use strict";i.r(e);var a=i("1ba0"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"4ef5":function(t,e,i){var a=i("9191");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("47528e6d",a,!0,{sourceMap:!1,shadowMode:!1})},"4f1b":function(t,e,i){"use strict";i.r(e);var a=i("1c44"),n=i("2e00");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("1c68");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"5386c03f",null,!1,a["a"],void 0);e["default"]=o.exports},"4f38":function(t,e,i){"use strict";i.r(e);var a=i("41c2"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"4f46":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".container .custom-right{font-weight:500;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal;white-space:nowrap}.container .review{background:#fffada;border-radius:20rpx 20rpx 0rpx 0rpx;margin:20rpx;padding:20rpx 20rpx 20rpx 20rpx}.container .review .review-title{margin-bottom:6rpx}.container .review .review-title .review-title-text{font-weight:400;font-size:24rpx;color:#835225;line-height:33rpx;text-align:left;font-style:normal}.container .container-card{border-radius:20rpx;margin:20rpx;padding:20rpx 20rpx 30rpx 20rpx;background:#fff;-webkit-transform:translateY(-30rpx);transform:translateY(-30rpx)}.container .container-card .card-header{margin-bottom:20rpx}.container .container-card .card-header .card-title{font-weight:500;font-size:28rpx;color:#1d2129;line-height:48rpx;text-align:left;font-style:normal}.container .container-card .card-header .card-header-right .card-header-right-text{font-weight:400;font-size:22rpx;color:#999;line-height:30rpx;text-align:left;font-style:normal}.container .container-card .card-header .card-header-right .card-header-right-img{width:8rpx;height:16rpx;margin-left:7rpx}.container .container-card .card-content{gap:14rpx;flex-wrap:wrap}.container .container-card .card-content .card-content-page{font-weight:400;font-size:24rpx;color:#999;line-height:33rpx;text-align:left;font-style:normal;width:100%}.container .container-card .card-content .content-default{width:214rpx;height:214rpx;background:#f5f5f5;border-radius:20rpx;display:flex;flex-direction:column;align-items:center;justify-content:center}.container .container-card .card-content .content-default .content-default-img{width:42rpx;height:35rpx;margin-bottom:8rpx}.container .container-card .card-content .content-default .content-default-text{font-weight:400;font-size:22rpx;color:#666;line-height:30rpx;text-align:left;font-style:normal;display:block}.container .container-card .card-content .content-default2{width:328rpx;height:186rpx;background:#f5f5f5;border-radius:17rpx}.container .container-card .card-content .content-photo{box-sizing:border-box;width:214rpx;height:214rpx;border-radius:20rpx;position:relative;overflow:hidden}.container .container-card .card-content .content-photo .content-photo-select{position:absolute;top:12rpx;right:14rpx;width:36rpx;height:36rpx;z-index:999}.container .container-card .card-content .content-photo .content-photo-img{width:214rpx;height:214rpx;border-radius:20rpx}.container .container-card .card-content .content-photo .content-photo-video{width:328rpx;height:186rpx;border-radius:20rpx}.container .container-card .card-content .content-photo .content-photo-title{background:rgba(51,51,51,.6);padding:6rpx 0 4rpx 0;position:absolute;left:0;right:0;bottom:0;font-weight:400;font-size:15rpx;color:#cacaca;line-height:21rpx;text-align:center;font-style:normal}.container .container-card .card-content .content-photo .content-photo-play{width:25rpx;height:25rpx;position:absolute;right:10rpx;top:6rpx}.container .container-card .card-content .content-photo .content-photo-play .content-photo-play-img{width:25rpx;height:25rpx}.container .container-card .card-content .content-photo .content-photo-mask{position:absolute;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;flex-direction:column;border-radius:20rpx}.container .container-card .card-content .content-photo .content-photo-mask .photo-mask-img{width:36rpx;height:36rpx;margin-bottom:8rpx}.container .container-card .card-content .content-photo .content-photo-mask .photo-mask-text{font-weight:400;font-size:24rpx;color:#fff;line-height:33rpx;text-align:left;font-style:normal}.container .container-card .card-content .content-video{width:328rpx;height:186rpx}.container-buttons{position:fixed;left:0;right:0;bottom:0;padding:30rpx 0;background:#fff;gap:60rpx}.container-buttons .container-buttons-cancel{width:278rpx;height:98rpx;border-radius:49rpx;border:1rpx solid #e8101e;font-weight:400;font-size:32rpx;color:#e8101e;text-align:center;font-style:normal}.container-buttons .container-buttons-sure{width:278rpx;height:98rpx;background:#e8101e;border-radius:49rpx;font-weight:400;font-size:32rpx;color:#fff;text-align:center;font-style:normal}.container-buttons .container-buttons-sure2{width:710rpx;height:98rpx;background:#e8101e;border-radius:49rpx;font-weight:400;font-size:38rpx;color:#fff;text-align:left;font-style:normal}",""]),t.exports=e},"4f5c":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uniPopup:i("c3a6").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{attrs:{_i:0}},[i("uni-popup",{ref:"popup",attrs:{_i:1},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),staticStyle:{"padding-bottom":"30rpx"},attrs:{_i:3}},[t._v("\u63d0\u73b0\u660e\u7ec6")]),i("v-uni-scroll-view",{staticStyle:{height:"70vh"},attrs:{"scroll-y":!0,_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),staticStyle:{"padding-top":"0"},attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),staticStyle:{"font-size":"32rpx"},attrs:{_i:6}},[t._v("\u63d0\u73b0\u8bb0\u5f55")])],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v("\u63d0\u73b0\u6d41\u6c34\u53f7")]),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v(t._$g(9,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u63d0\u73b0\u91d1\u989d")]),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v(t._$g(12,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v("\u63d0\u73b0\u7533\u8bf7\u65f6\u95f4")]),i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v(t._$g(15,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v("\u72b6\u6001")]),i("uni-view",{staticClass:t._$g(18,"sc"),class:t._$g(18,"c"),attrs:{_i:18}},[t._v(t._$g(18,"t0-0"))])],1),t._$g(19,"i")?i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v("\u9a73\u56de\u539f\u56e0")]),i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v(t._$g(21,"t0-0"))])],1):t._e(),i("uni-view",{staticClass:t._$g(22,"sc"),staticStyle:{"padding-top":"60rpx"},attrs:{_i:22}},[i("uni-view",{staticClass:t._$g(23,"sc"),staticStyle:{"font-size":"32rpx"},attrs:{_i:23}},[t._v("\u63d0\u73b0\u8d26\u53f7")])],1),t._$g(24,"i")?i("uni-view",{attrs:{_i:24}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[t._v("\u94f6\u884c\u5361\u53f7")]),i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v(t._$g(27,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v("\u6240\u5c5e\u94f6\u884c")]),i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[t._v(t._$g(30,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v("\u59d3\u540d")]),i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[t._v(t._$g(33,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[t._v("\u624b\u673a\u53f7")]),i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[t._v(t._$g(36,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[t._v("\u5f00\u6237\u884c")]),i("uni-view",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v(t._$g(39,"t0-0"))])],1)],1):t._e(),t._$g(40,"i")?i("uni-view",{attrs:{_i:40}},[i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[i("uni-view",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[t._v("\u652f\u4ed8\u5b9d\u8d26\u53f7")]),i("uni-view",{staticClass:t._$g(43,"sc"),attrs:{_i:43}},[t._v(t._$g(43,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(44,"sc"),attrs:{_i:44}},[i("uni-view",{staticClass:t._$g(45,"sc"),attrs:{_i:45}},[t._v("\u59d3\u540d")]),i("uni-view",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[t._v(t._$g(46,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[i("uni-view",{staticClass:t._$g(48,"sc"),attrs:{_i:48}},[t._v("\u624b\u673a\u53f7")]),i("uni-view",{staticClass:t._$g(49,"sc"),attrs:{_i:49}},[t._v(t._$g(49,"t0-0"))])],1)],1):t._e(),i("uni-view",{staticClass:t._$g(50,"sc"),attrs:{_i:50},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u5173\u95ed")])],1)],1)],1)],1)},r=[]},"4f87":function(t,e,i){"use strict";i.r(e);var a=i("9740"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"4fdb":function(t,e,i){"use strict";i.r(e);var a=i("5190"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"500c":function(t,e,i){"use strict";i.r(e);var a=i("391f"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},5079:function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("0def"),s=i("b3f6");e=a(!1);var o=n(r),c=n(s);e.push([t.i,'.tab-container{display:flex;flex-flow:row nowrap;align-items:center;-webkit-column-gap:48rpx;column-gap:48rpx;background-color:#fff;padding:30rpx 0rpx 20rpx 30rpx;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-x:scroll}.tab-item{text-align:center;font-size:30rpx;font-weight:500;color:#333;padding:16rpx 0;white-space:nowrap;position:relative}.tab-item.active{color:#e8101e;font-weight:500}.tab-item.active::after{content:"";position:absolute;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:32rpx;height:6rpx;background-color:#e8101e;border-radius:3rpx}.invite-list{}.invite-list .invite-item{margin:20rpx;padding:20rpx;border-radius:20rpx;background:#fff;position:relative}.invite-list .invite-item .stateText{font-weight:400;font-size:26rpx;color:#e8101e;text-align:left;font-style:normal;position:absolute;right:0;top:0;background-image:url('+o+");background-size:100% auto;background-position:top;background-repeat:no-repeat;width:128rpx;height:49rpx;display:flex;align-items:center;justify-content:center}.invite-list .invite-item .stateText2{background-image:url("+c+");color:#333}.invite-list .invite-item .item-card{}.invite-list .invite-item .item-card .item-avatar{width:120rpx;height:120rpx;border-radius:50%;margin-right:20rpx}.invite-list .invite-item .item-card .item-info{flex:1}.invite-list .invite-item .item-card .item-info .info-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10rpx}.invite-list .invite-item .item-card .item-info .info-header .info-name{font-weight:500;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal}.invite-list .invite-item .item-card .item-info .info-time{font-weight:400;font-size:24rpx;color:#666;line-height:33rpx;text-align:left;font-style:normal}.invite-list .invite-item .info-reason{padding-top:21rpx;margin-top:21rpx;border-top:1rpx solid #f1f1f1}.invite-list .invite-item .info-reason .reason-label{font-weight:400;font-size:24rpx;color:#e8101e;line-height:33rpx;text-align:left;font-style:normal}.invite-list .invite-item .info-reason .reason-content{font-weight:400;font-size:24rpx;color:#666;line-height:33rpx;text-align:left;font-style:normal}.mt_6{margin-bottom:6rpx}.common-list{background:#f5f5f5!important;border-radius:30rpx!important} .list-container{padding:0!important} .list-scroll{margin-top:0!important}",""]),t.exports=e},5095:function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("1ef6");e=a(!1);var s=n(r);e.push([t.i,'body{background-color:#fff}.my-page{position:relative}.my-page::before{content:"";position:fixed;top:0;left:0;right:0;height:1200rpx!important;background-image:url('+s+");background-size:cover;background-position:top;background-repeat:no-repeat;z-index:1}.user-info{padding:0 24rpx;position:relative;z-index:99;margin-top:32rpx}.user-header{display:flex;align-items:center;margin-bottom:48rpx}.avatar-wrap{width:128rpx;height:128rpx;border-radius:64rpx;overflow:hidden;margin-right:24rpx;background-color:#fff}.avatar{width:100%;height:100%}.user-detail{flex:1}.name-wrap{display:flex;flex-flow:column nowrap;justify-content:center;align-items:flex-start}.name{font-size:40rpx;color:#000;font-weight:500;margin-bottom:18rpx}.verified{width:130rpx;height:44rpx;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;border:1rpx solid #e8101e;background-color:#fff1f1;border-radius:22rpx;box-sizing:border-box}.verified-no{width:130rpx;height:44rpx;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;border:1rpx solid #666;border-radius:22rpx;box-sizing:border-box}.verified-text{font-size:24rpx;color:#e8101e}.verified-text.no{color:#666}.sign-icon{width:24rpx;height:24rpx;margin-right:6rpx}.edit-profile{display:flex;align-items:center}.edit-text{font-size:28rpx;color:#666;margin-right:16rpx}.arrow{font-size:28rpx;color:#666}.data-cards{width:702rpx;height:128rpx;display:flex;justify-content:space-between;margin-bottom:24rpx}.my-card{width:332rpx;height:128rpx;border-radius:20rpx;position:relative;padding:24rpx;box-sizing:border-box;background-color:#06f;box-shadow:0 0 12rpx 0 rgba(252,67,124,.1)}.card-content{position:relative;z-index:99;display:flex;flex-flow:column nowrap;justify-content:center;align-items:flex-start}.card-bg{position:absolute;top:0;left:0;width:332rpx;height:128rpx;z-index:1}.amount{font-size:32rpx;color:#ff1a6c;font-weight:400;display:block}.order{font-size:32rpx;color:#2a82e4;font-weight:400;display:block}.label-wrap{display:flex;align-items:center;justify-content:flex-start}.label{font-size:24rpx;color:#333;margin-right:12rpx}.service-manage{background:#fff;border-radius:20rpx;padding:24rpx;margin-bottom:32rpx;box-shadow:0 0 12rpx 0 rgba(0,0,0,.05)}.manage-header{background-color:#f6f8fa;border:16rpx;padding:16rpx 24rpx;display:flex;justify-content:space-between;align-items:flex-start}.manage-info{flex:1}.manage-title{font-size:24rpx;color:#1d2129;font-weight:500;display:block}.manage-subtitle{font-size:24rpx;color:#86909c;display:block}.manage-count{font-size:28rpx;color:#1d2129;font-weight:500;margin-top:8rpx;margin-bottom:4rpx}.manage-btn{width:192rpx;height:64rpx;background:#0256ff;border-radius:32rpx;display:flex;align-items:center;justify-content:center;margin-top:48rpx}.btn-text{font-size:28rpx;color:#fff}.function-list{background:#fff;border-radius:20rpx;padding:0 24rpx;box-shadow:0 0 12rpx 0 rgba(0,0,0,.05)}.function-item{display:flex;justify-content:space-between;align-items:center;height:92rpx;border-bottom:1rpx solid rgba(0,0,0,.05)}.function-item:last-child{border-bottom:none}.function-text{font-size:28rpx;color:#232220;font-weight:500}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n",""]),t.exports=e},"50aa":function(t,e,i){var a=i("da47");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("41dff5a6",a,!0,{sourceMap:!1,shadowMode:!1})},"50c6":function(t,e,i){"use strict";i.r(e);var a=i("b7b6"),n=i("e6d5");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("fa99");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"341d1893",null,!1,a["a"],void 0);e["default"]=o.exports},"50f0":function(t,e,i){"use strict";var a=i("56e8"),n=i.n(a);n.a},5115:function(t,e,i){"use strict";i.r(e);var a=i("193e"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"511f":function(t,e,i){var a=i("474d");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("21c5ddf2",a,!0,{sourceMap:!1,shadowMode:!1})},"514d":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".container .container-header__swiper[data-v-784e7337]{height:732rpx}.container .container-header__swiper .container-header__swiper__item[data-v-784e7337]{height:100%}.container .container-header__swiper .container-header__swiper__item .container-header__swiper__item__img[data-v-784e7337]{width:100%;height:100%}.container .container-content__card[data-v-784e7337]{margin:20rpx 30rpx;padding:30rpx;background:#fff;border-radius:10rpx;box-shadow:0rpx 4rpx 16rpx 0rpx rgba(210,213,224,.5)}.container .container-content__card__title__text[data-v-784e7337]{font-weight:500;font-size:36rpx;color:#333;line-height:50rpx;text-align:left;margin-bottom:20rpx;font-style:normal}.container .container-content__card__title__price[data-v-784e7337]{font-weight:500;font-size:36rpx;color:#e8101e;line-height:50rpx;text-align:left;font-style:normal}.container .container-content__card2[data-v-784e7337]{margin:20rpx 30rpx;padding:20rpx 30rpx 30rpx 30rpx;background:#fff;border-radius:10rpx;box-shadow:0rpx 4rpx 16rpx 0rpx rgba(210,213,224,.5)}.container .container-content__card2__syr[data-v-784e7337]{display:flex;align-items:center}.container .container-content__card2__syr__img[data-v-784e7337]{width:94rpx;height:94rpx;border-radius:50%;margin-right:14rpx}.container .container-content__card2__syr__text[data-v-784e7337]{font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:left;font-style:normal}.container .container-content__card2 .shop_address[data-v-784e7337]{margin-top:20rpx;display:flex;flex-wrap:nowrap}.container .container-content__card2 .shop_address .shop_icon[data-v-784e7337]{width:30rpx;height:30rpx;margin-right:5rpx}.container .container-content__card2 .shop_address uni-text[data-v-784e7337]{font-weight:400;font-size:26rpx;color:#666;line-height:37rpx;text-align:left;font-style:normal}.container .container-content__card2__Serve__title[data-v-784e7337]{font-weight:500;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;margin-bottom:20rpx}.container .container-content__card2__Serve__card[data-v-784e7337]{padding:20rpx;border:1px solid #e5e5e5;border-radius:10rpx}.container .container-content__card2__Serve__card__content[data-v-784e7337]{font-weight:400;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal}.container .container-content__card2__Serve__card__remark[data-v-784e7337]{font-weight:400;font-size:24rpx;color:#999;line-height:33rpx;text-align:left;font-style:normal;margin-top:30rpx}.container .container-footer[data-v-784e7337]{height:166rpx;position:fixed;bottom:0;left:0;right:0;background-color:#fff}.container .container-footer__btn[data-v-784e7337]{display:flex;align-items:center;justify-content:center;width:696rpx;height:78rpx;border-radius:798rpx;border:2rpx solid #e8101e;font-weight:400;font-size:30rpx;color:#e8101e;line-height:39rpx;text-align:right;font-style:normal;margin-left:30rpx;margin-top:40rpx}",""]),t.exports=e},5151:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"OrderCard",props:["dataItem","typeId","showState"],data:function(){return{wxsProps:{}}},components:{}}},"515f":function(t,e,i){var a=i("95b0");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("4b763f36",a,!0,{sourceMap:!1,shadowMode:!1})},"516f":function(t,e,i){"use strict";var a=i("f6ec"),n=i.n(a);n.a},5177:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"517e":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".contact-cont{padding:80rpx 0 132rpx;display:flex;flex-flow:column;justify-content:space-between;align-items:center}.contact-icon{width:145rpx;height:165rpx}.contact-phone{font-size:45rpx;font-weight:500;color:#333;margin-top:40rpx;margin-bottom:24rpx}.contact-time{font-size:30rpx;font-weight:400;color:#91908f}.btn-box{background:linear-gradient(180deg,#f52540,#e8101e);height:88rpx;border-radius:43rpx;font-weight:500;font-size:40rpx;color:#fff;line-height:42rpx;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:center}.permission.transform{top:calc(var(--status-bar-height) + 100rpx);opacity:1;visibility:visible}",""]),t.exports=e},5190:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-toolbar",data:function(){return{wxsProps:{}}},components:{}}},"51ca":function(t,e,i){"use strict";i.r(e);var a=i("ebd9"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"523f":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.service-area-page[data-v-7f3c886c]{background-color:#f5f5f5;min-height:100vh;box-sizing:border-box;display:flex;flex-direction:column}.page-content[data-v-7f3c886c]{flex:1;overflow-y:auto;padding:20rpx 0;box-sizing:border-box}.audit-tip[data-v-7f3c886c]{margin:20rpx 24rpx 20rpx 24rpx;border-radius:12rpx}.audit-text[data-v-7f3c886c]{font-weight:400;font-size:32rpx;color:#333;text-align:center;display:block}.reject-reason[data-v-7f3c886c]{background:transparent;padding:24rpx}.reject-title[data-v-7f3c886c]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:center;font-style:normal}.reject-detail[data-v-7f3c886c]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:28rpx;color:#999;line-height:40rpx;text-align:center;font-style:normal;margin-top:12rpx}.area-header[data-v-7f3c886c]{display:flex;align-items:center;margin-bottom:20rpx}.title-bar[data-v-7f3c886c]{width:6rpx;height:30rpx;background-color:#e8101e;margin-right:10rpx;border-radius:5rpx}.area-title[data-v-7f3c886c]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#1d2129;line-height:48rpx;text-align:left;font-style:normal}.box-cont[data-v-7f3c886c]{background:#fff;border-radius:20rpx;margin:0 24rpx 24rpx 24rpx;box-shadow:none}.area-container[data-v-7f3c886c]{padding:32rpx}.current-area[data-v-7f3c886c]{padding:20rpx 0}.area-display[data-v-7f3c886c]{display:flex;align-items:center;justify-content:space-between}.area-value[data-v-7f3c886c]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;flex:1}.pending-area[data-v-7f3c886c]{padding:20rpx 0}.area-selection[data-v-7f3c886c]{margin-bottom:20rpx}.area-label[data-v-7f3c886c]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;margin-bottom:16rpx;display:block}.area-picker-trigger[data-v-7f3c886c]{display:flex;align-items:flex-start;align-items:center;justify-content:space-between;padding:24rpx;background:#f8f9fd;border-radius:12rpx;border:2rpx solid #e9e9e9;min-height:40rpx}.selected-area[data-v-7f3c886c]{font-size:28rpx;color:#333;flex:1;min-width:0;word-wrap:break-word;overflow-wrap:break-word;margin-right:20rpx}.arrow-down[data-v-7f3c886c]{width:14rpx!important;height:26rpx!important;flex-shrink:0}.area-limit-tip[data-v-7f3c886c]{margin-top:16rpx}.limit-text[data-v-7f3c886c]{font-size:24rpx;color:#e8101e}.popup[data-v-7f3c886c]{position:fixed;left:0;right:0;bottom:0;z-index:999;visibility:hidden;opacity:0;transition:all .3s ease}.popup.show[data-v-7f3c886c]{visibility:visible;opacity:1}.popup-mask[data-v-7f3c886c]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.popup-content[data-v-7f3c886c]{position:relative;background-color:#fff;border-radius:24rpx 24rpx 0 0;padding:32rpx;-webkit-transform:translateY(100%);transform:translateY(100%);transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;max-height:70vh}.popup.show .popup-content[data-v-7f3c886c]{-webkit-transform:translateY(0);transform:translateY(0)}.region-popup[data-v-7f3c886c]{height:80vh;display:flex;flex-direction:column;padding:0}.popup-header[data-v-7f3c886c]{display:flex;align-items:center;justify-content:space-between;margin-bottom:20rpx;padding:0 32rpx;padding-top:32rpx}.popup-title[data-v-7f3c886c]{font-size:32rpx;color:#333;font-weight:500}.popup-close[data-v-7f3c886c]{font-size:40rpx;color:#999;padding:16rpx}.region-tabs[data-v-7f3c886c]{display:flex;border-bottom:1rpx solid #eee;margin-bottom:20rpx;padding:0 32rpx}.region-tab[data-v-7f3c886c]{flex:1;text-align:center;padding:20rpx 0;font-size:28rpx;color:#666;position:relative}.region-tab.active[data-v-7f3c886c]{color:#e8101e;font-weight:500}.region-tab.active[data-v-7f3c886c]::after{content:"";position:absolute;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:40rpx;height:4rpx;background-color:#e8101e;border-radius:2rpx}.region-body[data-v-7f3c886c]{flex:1;overflow:hidden}.region-scroll[data-v-7f3c886c]{height:100%;padding:0 32rpx}.region-item[data-v-7f3c886c]{display:flex;align-items:center;justify-content:space-between;padding:24rpx 0;border-bottom:1rpx solid #eee}.region-item.checkbox-item[data-v-7f3c886c]{padding:20rpx 0;width:100%;justify-content:flex-start}.checkbox[data-v-7f3c886c]{width:40rpx;height:40rpx;border:2rpx solid #ddd;border-radius:8rpx;display:flex;align-items:center;justify-content:center;margin-right:16rpx}.checkbox.checked[data-v-7f3c886c]{background-color:#e8101e;border-color:#e8101e}.check-icon[data-v-7f3c886c]{width:42rpx;height:42rpx}.checkbox-label[data-v-7f3c886c]{font-size:28rpx;color:#333}.arrow-right[data-v-7f3c886c]{width:14rpx;height:26rpx}.popup-footer[data-v-7f3c886c]{display:flex;margin-top:32rpx;padding:0 32rpx;padding-bottom:32rpx}.popup-btn[data-v-7f3c886c]{flex:1;height:88rpx;border-radius:44rpx;display:flex;align-items:center;justify-content:center;margin:0 16rpx}.popup-btn.cancel[data-v-7f3c886c]{background-color:#f5f5f5}.popup-btn.confirm[data-v-7f3c886c]{background:linear-gradient(180deg,#f52540,#e8101e)}.popup-btn .btn-text[data-v-7f3c886c]{font-size:32rpx;font-weight:500}.popup-btn.cancel .btn-text[data-v-7f3c886c]{color:#666}.popup-btn.confirm .btn-text[data-v-7f3c886c]{color:#fff}.bottom-actions[data-v-7f3c886c]{position:fixed;bottom:0;left:0;right:0;padding:0rpx 24rpx 40rpx 24rpx;background:#fff;z-index:100}.action-btn[data-v-7f3c886c]{height:88rpx;border-radius:43rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:400;margin-top:20rpx}.change-info-btn[data-v-7f3c886c]{background:linear-gradient(180deg,#f52540,#e8101e)}.view-change-btn[data-v-7f3c886c]{background:linear-gradient(180deg,#f52540,#e8101e)}.action-buttons-row[data-v-7f3c886c]{display:flex;justify-content:space-between;margin:0 30rpx}.action-buttons-row .action-btn[data-v-7f3c886c]{width:270rpx}.cancel-btn[data-v-7f3c886c]{background:#e5e5e5;border-radius:43rpx;padding:0 15rpx}.submit-btn[data-v-7f3c886c]{background:linear-gradient(180deg,#f52540,#e8101e 100%,#e8101e 0);border-radius:43rpx;padding:0 15rpx}.btn-text[data-v-7f3c886c]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:36rpx;color:#fff;line-height:50rpx;text-align:left;font-style:normal}.cancel-text[data-v-7f3c886c]{color:#666}',""]),t.exports=e},"524d":function(t,e,i){var a=i("d958");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("9b65f464",a,!0,{sourceMap:!1,shadowMode:!1})},"524e":function(t,e,i){"use strict";i.r(e);var a=i("6566"),n=i("7ac4");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("ddad");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"c328c656",null,!1,a["a"],void 0);e["default"]=o.exports},5275:function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("1ef6");e=a(!1);var s=n(r);e.push([t.i,'body{position:relative;background-color:#fff}.detail-page::before{content:"";position:fixed;top:0;left:0;right:0;height:1200rpx!important;background-image:url('+s+");background-size:cover;background-position:top;background-repeat:no-repeat;z-index:1}.content-part{position:relative;left:0;right:0;z-index:9}.custom-nav{position:fixed;top:0;left:0;right:0;height:88rpx;background-color:initial;display:flex;align-items:center;padding:0 32rpx;z-index:100;padding-top:var(--status-bar-height)}.nav-back{width:48rpx;height:48rpx;display:flex;align-items:center;justify-content:center}.back-icon{width:32rpx;height:32rpx}.nav-title{flex:1;text-align:center;font-size:36rpx;font-weight:500;color:#fff}.status-section{display:flex;align-items:center;justify-content:center;gap:20rpx;padding-top:55rpx;padding-bottom:50rpx}.status-section .status-section-image{width:52rpx}.status-text{font-size:44rpx;color:#333;font-weight:600}.service-card{margin:0 30rpx 20rpx;background-color:#fff;border-radius:20rpx;padding:30rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.location-info{display:flex;flex-direction:column;gap:24rpx}.location-icon{width:44rpx;height:44rpx;margin-right:30rpx;flex-shrink:0}.address-info{display:flex;align-items:center;flex:1}.name-phone{display:flex;align-items:center;flex-wrap:nowrap;justify-content:space-between}.name{font-size:30rpx;color:#333;font-weight:500;margin-right:20rpx}.phone{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx}.address{font-size:28rpx;color:#666;margin-top:8rpx}.btn-map,\n.btn-phone{width:64rpx;height:64rpx;flex-shrink:0}.btn-map{margin:0 28rpx}.booking-card{margin:0rpx 30rpx 20rpx;background-color:#fff;border-radius:20rpx;padding:34rpx 30rpx 40rpx 20rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.booking-card .card_title{font-weight:500;font-size:32rpx;color:#333;margin-bottom:40rpx}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24rpx}.card-title{font-size:32rpx;color:#3d3d3d;font-weight:500}.update-time{font-size:28rpx;color:#333;padding-right:4rpx}.update-change{font-size:28rpx;color:#666}.service-item{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;margin-bottom:32rpx}.service-image{width:160rpx;height:160rpx;border-radius:16rpx;margin-right:24rpx;background-color:#e2e2e2}.service-info{flex:1;height:160rpx;display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:flex-start;margin-right:24rpx}.service-info .service-box{width:100%;gap:8rpx;display:flex;justify-content:space-between}.service-info .service-box .service-count{flex-shrink:0}.service-info .service-box .service-name{flex:1}.service-name{font-size:30rpx;color:#333;font-weight:500}.service-price{font-size:34rpx;color:#333;font-weight:500}.service-price .icon{font-size:20rpx;font-weight:500}.service-count{font-size:26rpx;color:#999;font-weight:500}.service-real{display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:baseline;padding-top:24rpx;border-top:1rpx solid rgba(0,0,0,.05)}.real-lable{font-size:30rpx;color:#333}.real-price{font-size:32rpx;font-weight:500;color:#e8101e}.real-price .icon{font-size:20rpx}.order-card{margin:30rpx;background-color:#fff;border-radius:16rpx;padding:36rpx 20rpx 40rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.order-card .card_title{font-weight:500;font-size:32rpx;color:#333;padding-bottom:10rpx}.time_card{margin:30rpx;background-color:#fff;border-radius:16rpx;padding:36rpx 20rpx 40rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.time_card .card_title{font-weight:500;font-size:32rpx;color:#333;padding-bottom:16rpx}.time_card .card_time{font-size:30rpx;line-height:30rpx;color:#333;margin-top:18rpx}.info-item{display:flex;justify-content:space-between;margin-top:30rpx}.label{font-size:28rpx;color:#999}.value{font-size:28rpx;color:#333}.bottom-buttons{position:fixed;left:0;right:0;bottom:0;height:128rpx;background-color:#fff;display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-end;box-shadow:0 -2rpx 8rpx rgba(0,0,0,.05);padding:0 24rpx 0 78rpx;z-index:999}.contact-button{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center}.contact-text{font-size:24rpx;color:#666}.tell-icon{width:36rpx;height:36rpx;margin-right:8rpx}.handel-button{width:186rpx;height:72rpx;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;border-radius:36rpx;margin-left:60rpx}.btn-border{border:2rpx solid #e8101e;background-color:#fff;box-sizing:border-box;margin-left:60rpx}.btn-bg{background-color:#e8101e}.button-text{font-size:28rpx;font-weight:400;color:#fff}.btn-border .button-text{font-size:28rpx;font-weight:400;color:#e8101e}.permission.transform{top:calc(var(--status-bar-height) + 88rpx + 20rpx);opacity:1;visibility:visible}.detail-page{padding-bottom:calc(120rpx + env(safe-area-inset-bottom))}",""]),t.exports=e},"52c7":function(t,e,i){"use strict";var a=i("40dc"),n=i.n(a);n.a},"52c9":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},5333:function(t,e,i){"use strict";i.r(e);var a=i("b13e"),n=i("4fdb");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("f39f");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"57ebf702",null,!1,a["a"],void 0);e["default"]=o.exports},"533b":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={aliOssUploader:i("93a6").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{attrs:{_i:0}},[i("ali-oss-uploader",{attrs:{_i:1},on:{success:function(e){return t.$handleViewEvent(e)},error:function(e){return t.$handleViewEvent(e)},delete:function(e){return t.$handleViewEvent(e)}}})],1)},r=[]},5349:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("f8df")),r={data:function(){return{wxsProps:{}}},components:{CommonList:n.default}};e.default=r},5365:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i," .navbar-content{border:none!important}.service-first-tab{border-bottom:none;padding-bottom:27rpx;border-bottom:2rpx solid #f1f1f1}.common-list{border-radius:30rpx 30rpx 0rpx 0rpx}.common-list .list-container{padding:0rpx}.common-list .list-scroll{margin-top:0}.icon-tabs{display:flex;-webkit-column-gap:48rpx;column-gap:48rpx;row-gap:30rpx;flex-flow:row wrap;justify-content:flex-start;align-items:center;background:#fff;padding:0rpx 0 0 30rpx;margin-bottom:17rpx}.icon-tab{display:flex;flex-direction:column;align-items:center}.icon-img{width:100rpx;height:100rpx;border-radius:50%;border:2rpx solid transparent}.icon-text{margin-top:10rpx;font-weight:400;font-size:24rpx;color:#333;line-height:33rpx;text-align:left;font-style:normal}.icon-tab.active .icon-text{color:#e8101e}.icon-tab.active .icon-img{border:2rpx solid #e8101e} .list-scroll{margin-top:0}.service-first-tab{border-bottom:none}.service-list{padding-top:17rpx!important;background-color:#f5f5f5;border-radius:20rpx 20rpx 0rpx 0rpx} .service-list{padding:24rpx}",""]),t.exports=e},"538f":function(t,e,i){var a=i("e1d7");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("6cfdd73e",a,!0,{sourceMap:!1,shadowMode:!1})},"539f":function(t,e,i){"use strict";i.r(e);var a=i("ad76"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"53ae":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default,uvPopup:i("05d1").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1},on:{onHeadleClick:function(e){return t.$handleViewEvent(e)}}}),i("searchBox",{attrs:{_i:2},on:{confirm:function(e){return t.$handleViewEvent(e)},search:function(e){return t.$handleViewEvent(e)},add:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(2,"v-model"),callback:function(){},expression:"queryData.nameorphone"}}),i("div",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},t._l(t._$g(4,"f"),(function(e,a,n,r){return i("div",{key:e,staticClass:t._$g("4-"+r,"sc"),class:t._$g("4-"+r,"c"),attrs:{_i:"4-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("4-"+r,"t0-0")+" ")])})),1),i("CommonList",{ref:"groupRef",attrs:{_i:5},scopedSlots:t._u([{key:"listData",fn:function(e,a,n){e.list;return[i("uni-view",{staticClass:a._$g("7-"+n,"sc"),attrs:{_i:"7-"+n}},t._l(a._$g("8-"+n,"f"),(function(e,r,s,o){return a._$g("8-"+n+o,"i")?i("uni-view",{key:e,staticClass:a._$g("8-"+n+o,"sc"),attrs:{_i:"8-"+n+o},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:a._$g("9-"+n+o,"sc"),attrs:{_i:"9-"+n+o}},[i("v-uni-image",{staticClass:a._$g("10-"+n+o,"sc"),attrs:{src:a._$g("10-"+n+o,"a-src"),mode:"aspectFill",_i:"10-"+n+o}}),i("uni-view",{staticClass:a._$g("11-"+n+o,"sc"),class:a._$g("11-"+n+o,"c"),attrs:{_i:"11-"+n+o}},[t._v(a._$g("11-"+n+o,"t0-0"))])],1),i("uni-view",{staticClass:a._$g("12-"+n+o,"sc"),attrs:{_i:"12-"+n+o}},[i("uni-view",{staticClass:a._$g("13-"+n+o,"sc"),attrs:{_i:"13-"+n+o}},[i("v-uni-text",{attrs:{_i:"14-"+n+o}},[t._v(a._$g("14-"+n+o,"t0-0"))]),a._$g("15-"+n+o,"i")?i("uni-view",{staticClass:a._$g("15-"+n+o,"sc"),class:a._$g("15-"+n+o,"c"),attrs:{_i:"15-"+n+o},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[a._$g("16-"+n+o,"i")?i("v-uni-text",{staticClass:a._$g("16-"+n+o,"sc"),attrs:{_i:"16-"+n+o}},[t._v("\u63a5\u5355")]):t._e(),i("uni-view",{staticClass:a._$g("17-"+n+o,"sc"),attrs:{_i:"17-"+n+o}}),a._$g("18-"+n+o,"i")?i("v-uni-text",{staticClass:a._$g("18-"+n+o,"sc"),attrs:{_i:"18-"+n+o}},[t._v("\u4e0d\u63a5\u5355")]):t._e()],1):t._e()],1),i("uni-view",{staticClass:a._$g("19-"+n+o,"sc"),attrs:{_i:"19-"+n+o}},[t._v("\u7ed1\u5b9a\u65f6\u95f4: "+a._$g("19-"+n+o,"t0-0"))]),i("uni-view",{staticClass:a._$g("20-"+n+o,"sc"),attrs:{_i:"20-"+n+o}},[i("v-uni-text",{attrs:{_i:"21-"+n+o}},[t._v("\u5206\u914d\u9879\u76ee")]),i("v-uni-image",{staticClass:a._$g("22-"+n+o,"sc"),attrs:{src:"/static/images/icons/right_gray8.png",_i:"22-"+n+o}})],1)],1)],1):t._e()})),1)]}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"24-"+a}})]}}])}),i("uv-popup",{ref:"popup",attrs:{_i:25}},[i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v(" \u4ec0\u4e48\u662f\u5e73\u53f0\u81ea\u8425\u670d\u52a1\u5217\u8868 ")]),i("v-uni-text",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[t._v(" 1\u3001\u5e73\u53f0\u81ea\u8425\u670d\u52a1\uff1a\u5546\u54c1\u5e73\u53f0\u7edf\u4e00\u63d0\u4f9b\uff0c\u670d\u52a1\u7531\u6307\u5b9a\u63d0\u4f9b\u8005\u627f\u63a5\u3002\u552e\u4ef7\u4e3a\u5546\u54c1\u6807\u4ef7\uff0c\u5b9e\u9645\u5230\u8d26\u91d1\u989d = \u552e\u4ef7 - \u5e73\u53f0\u670d\u52a1\u8d39\uff0c\u4ee5\u5b9e\u9645\u5230\u8d26\u4e3a\u51c6\u3002 ")]),i("v-uni-text",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v(" 2\u3001\u5df2\u4e0a\u67b6\u5373\u5546\u54c1\u5904\u4e8e\u552e\u5356\u72b6\u6001\uff0c\u8bf7\u4f9d\u636e\u5b9e\u9645\u5e93\u5b58\u60c5\u51b5\uff0c\u5408\u7406\u6267\u884c\u4e0a\u4e0b\u67b6\u64cd\u4f5c\u3002 ")]),i("v-uni-text",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[t._v(" 3\u3001\u5546\u54c1\u552e\u4ef7\u5c06\u6839\u636e\u5e73\u53f0\u89c4\u5219\u52a8\u6001\u8c03\u6574\uff0c\u5f53\u524d\u6807\u4ef7\u4ec5\u4e3a\u5373\u65f6\u552e\u4ef7\u4fe1\u606f\u3002 ")]),i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u53d6\u6d88 ")]),i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u6211\u5df2\u4e86\u89e3 ")])],1)],1)],1)],1)},r=[]},5424:function(t,e,i){"use strict";i.r(e);var a=i("a2dd"),n=i("e7b1");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("4db0");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},5443:function(t,e,i){"use strict";i.r(e);var a=i("6291"),n=i("9b93");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("50f0");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"51195a50",null,!1,a["a"],void 0);e["default"]=o.exports},5453:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".order-card[data-v-21af15cc]{padding:34rpx 20rpx;margin:0rpx 30rpx 20rpx 30rpx;background-color:#fff;border-radius:12px}.order-id[data-v-21af15cc]{font-size:28rpx;color:#333;margin-bottom:40rpx}.service-container[data-v-21af15cc]{display:flex;align-items:center;padding-bottom:24rpx;border-bottom:1px solid #f6f5f5}.service-img[data-v-21af15cc]{width:172rpx;height:168rpx;border-radius:24rpx;margin-right:30rpx;flex-shrink:0}.service-info[data-v-21af15cc]{display:flex;flex-direction:column}.service-type[data-v-21af15cc]{font-size:16px;font-weight:500;margin-bottom:48rpx}.service-address[data-v-21af15cc]{font-size:26rpx;color:#666;line-height:1.4}.time-info[data-v-21af15cc]{font-size:30rpx;color:#333;margin-top:28rpx}.button-group[data-v-21af15cc]{display:flex;justify-content:flex-end;gap:30rpx}.btn[data-v-21af15cc]{width:80rpx;height:32rpx;border-radius:64rpx;font-size:26rpx;background-color:#fff;white-space:nowrap;margin-top:40rpx}.cancel-btn[data-v-21af15cc]{border:2rpx solid #979797;color:#333}.accept-btn[data-v-21af15cc]{border:2rpx solid #e8101e;color:#e8101e}",""]),t.exports=e},"545c":function(t,e,i){"use strict";i.r(e);var a=i("8bb3"),n=i("79c9");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("a940");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"547b":function(t,e,i){if("undefined"===typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(t){var e=this.constructor;return this.then((function(i){return e.resolve(t()).then((function(){return i}))}),(function(i){return e.resolve(t()).then((function(){throw i}))}))}),"undefined"!==typeof uni&&uni&&uni.requireGlobal){var a=uni.requireGlobal();ArrayBuffer=a.ArrayBuffer,Int8Array=a.Int8Array,Uint8Array=a.Uint8Array,Uint8ClampedArray=a.Uint8ClampedArray,Int16Array=a.Int16Array,Uint16Array=a.Uint16Array,Int32Array=a.Int32Array,Uint32Array=a.Uint32Array,Float32Array=a.Float32Array,Float64Array=a.Float64Array,BigInt64Array=a.BigInt64Array,BigUint64Array=a.BigUint64Array}window.__uniConfig={window:{navigationBarTextStyle:"black",navigationBarTitleText:"uni-app",navigationBarBackgroundColor:"#F8F8F8",backgroundColor:"#F8F8F8"},darkmode:!1},uni.restoreGlobal&&uni.restoreGlobal(weex,plus,setTimeout,clearTimeout,setInterval,clearInterval),__definePage("pages/home/home",(function(){return Vue.extend(i("a533").default)})),__definePage("pages/message/message",(function(){return Vue.extend(i("d16e").default)})),__definePage("pages/message/settings",(function(){return Vue.extend(i("9801").default)})),__definePage("pages/message/message_setting",(function(){return Vue.extend(i("5c43").default)})),__definePage("pages/ruzhu/ruzhu",(function(){return Vue.extend(i("5d77").default)})),__definePage("pages/login/login",(function(){return Vue.extend(i("b542").default)})),__definePage("pages/artisan/service-list",(function(){return Vue.extend(i("8d44").default)})),__definePage("pages/service/class",(function(){return Vue.extend(i("440f").default)})),__definePage("pages/artisan/add-service",(function(){return Vue.extend(i("7791").default)})),__definePage("pages/order/userorder-list",(function(){return Vue.extend(i("10bb").default)})),__definePage("pages/order/userorder-detail",(function(){return Vue.extend(i("ccf9").default)})),__definePage("pages/order/pay",(function(){return Vue.extend(i("f007").default)})),__definePage("pages/order/submit",(function(){return Vue.extend(i("9c4a").default)})),__definePage("pages/order/pay-success",(function(){return Vue.extend(i("c08f").default)})),__definePage("pages/service/appointment",(function(){return Vue.extend(i("cb1f").default)})),__definePage("pages/my/my",(function(){return Vue.extend(i("886e").default)})),__definePage("pages/add/add",(function(){return Vue.extend(i("9293").default)})),__definePage("pages/my/profile",(function(){return Vue.extend(i("498b").default)})),__definePage("pages/ruzhu/complete",(function(){return Vue.extend(i("be00").default)})),__definePage("pages/ruzhu/submitres",(function(){return Vue.extend(i("cb86").default)})),__definePage("pages/artisan/my",(function(){return Vue.extend(i("3979").default)})),__definePage("pages/artisan/profile",(function(){return Vue.extend(i("b544").default)})),__definePage("pages/artisan/service-time",(function(){return Vue.extend(i("e4c3").default)})),__definePage("pages/artisan/service-skills",(function(){return Vue.extend(i("026f").default)})),__definePage("pages/artisan/syr-info-change",(function(){return Vue.extend(i("ef8e").default)})),__definePage("pages/artisan/qualification_syr_change",(function(){return Vue.extend(i("14db").default)})),__definePage("pages/artisan/service-area",(function(){return Vue.extend(i("5ed8").default)})),__definePage("pages/artisan/belong_shop",(function(){return Vue.extend(i("1ba2").default)})),__definePage("pages/settings/index",(function(){return Vue.extend(i("a9c2").default)})),__definePage("pages/settings/paypsd",(function(){return Vue.extend(i("b5f7").default)})),__definePage("pages/settings/password",(function(){return Vue.extend(i("4003").default)})),__definePage("pages/address/list",(function(){return Vue.extend(i("4e4a").default)})),__definePage("pages/address/selectCity",(function(){return Vue.extend(i("8882").default)})),__definePage("pages/address/selectAddress",(function(){return Vue.extend(i("7e4a").default)})),__definePage("pages/share/syrandsjshare",(function(){return Vue.extend(i("74d0").default)})),__definePage("pages/share/usershare",(function(){return Vue.extend(i("ed53").default)})),__definePage("pages/contact/contact",(function(){return Vue.extend(i("6c99").default)})),__definePage("pages/wallet/wallet",(function(){return Vue.extend(i("8697").default)})),__definePage("pages/wallet/withdraw",(function(){return Vue.extend(i("a16b6").default)})),__definePage("pages/wallet/bindaccount",(function(){return Vue.extend(i("4e39").default)})),__definePage("pages/wallet/bindway",(function(){return Vue.extend(i("4462").default)})),__definePage("pages/order/all-orders",(function(){return Vue.extend(i("06bd").default)})),__definePage("pages/user/store-detail",(function(){return Vue.extend(i("545c").default)})),__definePage("pages/user/store-detail-information",(function(){return Vue.extend(i("c487").default)})),__definePage("pages/user/store-syr-list",(function(){return Vue.extend(i("d7de").default)})),__definePage("pages/user/employee-detail",(function(){return Vue.extend(i("d61a").default)})),__definePage("pages/user/qualifications",(function(){return Vue.extend(i("fdad").default)})),__definePage("pages/agreement/agreement",(function(){return Vue.extend(i("2988").default)})),__definePage("pages/artisan/unavailable-time",(function(){return Vue.extend(i("8d9e").default)})),__definePage("pages/artisan/index",(function(){return Vue.extend(i("2994").default)})),__definePage("pages/service/store-list",(function(){return Vue.extend(i("c19f").default)})),__definePage("pages/order/artisanorder-detail",(function(){return Vue.extend(i("0dca7").default)})),__definePage("pages/user/syr-detail",(function(){return Vue.extend(i("6b7c").default)})),__definePage("pages/demo/detail",(function(){return Vue.extend(i("bbec").default)})),__definePage("pages/xieyi/xieyi",(function(){return Vue.extend(i("a034").default)})),__definePage("pages/demo/kydemo",(function(){return Vue.extend(i("5a07").default)})),__definePage("pages/complaint/add-complaint",(function(){return Vue.extend(i("413f").default)})),__definePage("pages/complaint/detail",(function(){return Vue.extend(i("3be0").default)})),__definePage("pages/complaint/list",(function(){return Vue.extend(i("ce51").default)})),__definePage("pages/ruzhu/stopuse",(function(){return Vue.extend(i("35dc").default)})),__definePage("pages/shop/buy-service",(function(){return Vue.extend(i("baee").default)})),__definePage("pages/shop/buy-order",(function(){return Vue.extend(i("937c").default)})),__definePage("pages/shop/create-order",(function(){return Vue.extend(i("9310").default)})),__definePage("pages/shop/pay-order",(function(){return Vue.extend(i("05b3").default)})),__definePage("pages/shop/pay-success",(function(){return Vue.extend(i("5424").default)})),__definePage("pages/shop/buyorder-detail",(function(){return Vue.extend(i("65f8").default)})),__definePage("pages/shop/business-time",(function(){return Vue.extend(i("ac36").default)})),__definePage("pages/shop/service-skills",(function(){return Vue.extend(i("d1bb").default)})),__definePage("pages/shop/sj-info-change",(function(){return Vue.extend(i("9fbc").default)})),__definePage("pages/shop/qualification_sj_change",(function(){return Vue.extend(i("c4be").default)})),__definePage("pages/syr/home",(function(){return Vue.extend(i("1930").default)})),__definePage("pages/shop/staff/manage",(function(){return Vue.extend(i("f89e").default)})),__definePage("pages/shop/staff/addStaff",(function(){return Vue.extend(i("1fc4").default)})),__definePage("pages/shop/staff/staffDetail",(function(){return Vue.extend(i("1775").default)})),__definePage("pages/shop/staff/record",(function(){return Vue.extend(i("ada0").default)})),__definePage("pages/shop/staff/detail",(function(){return Vue.extend(i("41a6").default)})),__definePage("pages/shop/staff/distribution-service",(function(){return Vue.extend(i("6f86").default)})),__definePage("pages/shop/staff/selectSyr",(function(){return Vue.extend(i("77ab").default)})),__definePage("pages/shop/staff/serviceList",(function(){return Vue.extend(i("21c8").default)})),__definePage("pages/shop/staff/unbundleList",(function(){return Vue.extend(i("5b09").default)})),__definePage("pages/shop/photoAlbum/photoManage",(function(){return Vue.extend(i("7034").default)})),__definePage("pages/shop/photoAlbum/addPhoto",(function(){return Vue.extend(i("45e7").default)})),__definePage("pages/shop/photoAlbum/videoList",(function(){return Vue.extend(i("6401").default)})),__definePage("pages/shop/set",(function(){return Vue.extend(i("d924").default)})),__definePage("pages/syr/my",(function(){return Vue.extend(i("949a").default)})),__definePage("pages/syr/userorders",(function(){return Vue.extend(i("f1ef").default)})),__definePage("pages/syr/shoporders",(function(){return Vue.extend(i("29e0").default)})),__definePage("pages/syr/userorder-detail",(function(){return Vue.extend(i("2d95").default)})),__definePage("pages/syr/shoporder-detail",(function(){return Vue.extend(i("ef88").default)})),__definePage("pages/syr/manHour/saleList",(function(){return Vue.extend(i("2bd7").default)})),__definePage("pages/syr/manHourDetail",(function(){return Vue.extend(i("ec666").default)})),__definePage("pages/syr/migration",(function(){return Vue.extend(i("06be").default)})),__definePage("pages/syr/manHour/list",(function(){return Vue.extend(i("ec59").default)})),__definePage("pages/syr/manHour/addManHour",(function(){return Vue.extend(i("77a97").default)})),__definePage("pages/syr/workstation/buyList",(function(){return Vue.extend(i("18ca").default)})),__definePage("pages/syr/workstation/buyWorkstation",(function(){return Vue.extend(i("d7b6").default)})),__definePage("pages/syr/workstation/workstationDetail",(function(){return Vue.extend(i("ff9d").default)})),__definePage("pages/syr/workstation/workstationOrder",(function(){return Vue.extend(i("4c3d").default)})),__definePage("pages/shop/manHour/list",(function(){return Vue.extend(i("cd76").default)})),__definePage("pages/shop/manHour/saleList",(function(){return Vue.extend(i("6a81").default)})),__definePage("pages/shop/manHour/addManHour",(function(){return Vue.extend(i("79a41").default)})),__definePage("pages/shop/manHour/buyManHour",(function(){return Vue.extend(i("ac65").default)})),__definePage("pages/shop/userorder-detail",(function(){return Vue.extend(i("f5d5").default)})),__definePage("pages/shop/workSpace/list",(function(){return Vue.extend(i("cd72").default)})),__definePage("pages/shop/workSpace/saleList",(function(){return Vue.extend(i("ae1c").default)})),__definePage("pages/shop/userorders",(function(){return Vue.extend(i("ccfd").default)})),__definePage("pages/shop/add-service",(function(){return Vue.extend(i("7219").default)})),__definePage("pages/shop/workSpace/addWorkSpace",(function(){return Vue.extend(i("917d").default)})),__definePage("pages/shop/SellerDetail",(function(){return Vue.extend(i("4e2b").default)})),__definePage("pages/shop/manHour/manHourDetail",(function(){return Vue.extend(i("343c").default)})),__definePage("pages/shop/pay",(function(){return Vue.extend(i("b42f").default)})),__definePage("pages/shop/manHour/manHourOrder",(function(){return Vue.extend(i("50c6").default)})),__definePage("pages/shop/manHourDetail",(function(){return Vue.extend(i("9baa").default)})),__definePage("pages/shop/groupBuying/list",(function(){return Vue.extend(i("9505").default)})),__definePage("pages/shop/groupBuying/addGroupBuying",(function(){return Vue.extend(i("853c").default)})),__definePage("pages/shop/groupBuying/selectServe",(function(){return Vue.extend(i("1b9c").default)})),__definePage("pages/shop/add-img-text",(function(){return Vue.extend(i("7652").default)})),__definePage("pages/recruit/recruit",(function(){return Vue.extend(i("13d6").default)})),__definePage("pages/recruit/recruit2",(function(){return Vue.extend(i("4794").default)})),__definePage("pages/wallet/withdrawCash",(function(){return Vue.extend(i("7ce4").default)})),__definePage("pages/wallet/alipay",(function(){return Vue.extend(i("2e14").default)})),__definePage("pages/wallet/alipayAccount",(function(){return Vue.extend(i("4a0e").default)})),__definePage("pages/promotion/promotion",(function(){return Vue.extend(i("0785").default)})),__definePage("pages/promotion/selectServe",(function(){return Vue.extend(i("9365").default)})),__definePage("pages/promotion/setUpServe",(function(){return Vue.extend(i("fcb2").default)})),__definePage("pages/promotion/effect",(function(){return Vue.extend(i("a818").default)})),__definePage("pages/selfOperated/agreement",(function(){return Vue.extend(i("5c32").default)})),__definePage("pages/selfOperated/addWe",(function(){return Vue.extend(i("aa80").default)})),__definePage("pages/selfOperated/list",(function(){return Vue.extend(i("cc6c").default)})),__definePage("pages/selfOperated/selectSyr",(function(){return Vue.extend(i("f1a3").default)})),__definePage("pages/selfOperated/serveList",(function(){return Vue.extend(i("c405").default)})),__definePage("pages/blogPopup/blogPopup",(function(){return Vue.extend(i("e050").default)}))},5496:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:t._$g(3,"a-src"),mode:"aspectFill",_i:3}}),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-text",{attrs:{_i:6}},[t._v(t._$g(6,"t0-0"))]),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{attrs:{_i:8}},[t._v("\u5df2\u5206\u670d\u52a1\u9879\u76ee")]),i("v-uni-image",{staticClass:t._$g(9,"sc"),attrs:{src:"/static/images/icons/right_gray7.png",_i:9}})],1)],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u670d\u52a1\u65f6\u95f4\uff1a"+t._$g(10,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v("\u6240\u5728\u5730")]),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v(t._$g(13,"t0-0"))]),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v("\u64c5\u957f")]),i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._v("\u7f8e\u5bb9")]),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v("\u7406\u7597")]),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\u7eb9\u7ee3")]),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v("\u7f8e\u776b\u7f8e\u7532")])],1),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v("\u7b80\u4ecb")]),i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v(" "+t._$g(21,"t0-0")+" ")])],1),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v("\u5065\u5eb7\u8bc1")]),t._$g(23,"i")?i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(24,"sc"),attrs:{src:t._$g(24,"a-src"),mode:"widthFix",_i:24}})],1):i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[i("v-uni-text",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[t._v("\u6682\u65e0\u5065\u5eb7\u8bc1")])],1),i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v("\u8d44\u8d28\u8bc1\u4e66")]),t._$g(28,"i")?i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(29,"sc"),attrs:{src:t._$g(29,"a-src"),mode:"widthFix",_i:29}})],1):i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[i("v-uni-text",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[t._v("\u6682\u65e0\u8d44\u8d28\u8bc1\u4e66")])],1),i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u8fd4\u56de")])],1)},r=[]},"550f":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";uni-view[data-v-15277242], uni-scroll-view[data-v-15277242], uni-swiper-item[data-v-15277242]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-tabbar-item[data-v-15277242]{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1}.uv-tabbar-item__icon[data-v-15277242]{display:flex;flex-direction:row;position:relative;width:150rpx;justify-content:center}.uv-tabbar-item__text[data-v-15277242]{margin-top:2px;font-size:12px;color:#606266}',""]),t.exports=e},5536:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".service-item-wrapper[data-v-1f1d0146]{display:flex;flex-direction:column;background-color:#fff;border-radius:20rpx;padding:20rpx}.artisan-row[data-v-1f1d0146]{display:flex;align-items:center;padding:10rpx 20rpx;margin-top:10rpx;width:100%}.artisan-avatar[data-v-1f1d0146]{width:40rpx;height:40rpx;border-radius:50%;margin-right:16rpx;flex-shrink:0}.artisan-info[data-v-1f1d0146]{display:flex;align-items:center;flex:1;min-width:0}.artisan-name[data-v-1f1d0146]{font-size:28rpx;font-weight:500;color:#333;flex-shrink:0}.separator[data-v-1f1d0146]{font-size:24rpx;color:#ddd;margin:0 8rpx;flex-shrink:0}.shop-name[data-v-1f1d0146]{font-size:26rpx;color:#666;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0}.artisan-icon[data-v-1f1d0146]{width:8rpx;height:14rpx;flex-shrink:0;flex:0 0 auto;margin-left:8rpx}.service-list[data-v-1f1d0146]{padding:20rpx 20rpx 0rpx 20rpx;display:flex;flex-direction:column;gap:20rpx}.service-item[data-v-1f1d0146]{position:relative;display:flex;align-items:flex-start;padding:10rpx 20rpx 20rpx 20rpx;background-color:initial;border-radius:0}.avatar_box[data-v-1f1d0146]{width:218rpx;height:218rpx;background:#935858;border-radius:12rpx;overflow:hidden;margin-right:30rpx;position:relative;flex-shrink:0}.avatar_box .tag_kind[data-v-1f1d0146]{position:absolute;left:0;top:0;z-index:100;text-align:center;padding:0 8rpx;height:38rpx;line-height:38rpx;background:linear-gradient(124deg,#f52540,#e8101e);border-radius:12rpx 2rpx 12rpx 2rpx;font-size:22rpx;color:#fff}.avatar[data-v-1f1d0146]{width:218rpx;height:218rpx}.item-right[data-v-1f1d0146]{flex:1;width:100%;display:flex;flex-direction:column;justify-content:space-between;min-height:218rpx}.top-info[data-v-1f1d0146]{display:flex;justify-content:space-between;align-items:center;margin-bottom:7rpx;gap:20rpx;overflow:hidden}.name-wrapper[data-v-1f1d0146]{flex:1;display:flex;align-items:center;min-width:0;max-width:100%;overflow:hidden;gap:8rpx}.name[data-v-1f1d0146]{font-family:PingFangSC,PingFang SC;font-weight:500;line-height:34rpx;font-size:28rpx;color:#333;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;display:block;width:100%;margin-bottom:10rpx}.distance[data-v-1f1d0146]{display:flex;align-items:center;line-height:33rpx;gap:6rpx;font-family:DINPro;font-weight:400;font-size:24rpx;color:#666;flex-shrink:0;margin-top:8rpx}.position[data-v-1f1d0146]{width:19rpx;height:21rpx}.services[data-v-1f1d0146]{display:flex;gap:10rpx 0;flex-wrap:wrap}.service-tag[data-v-1f1d0146]{font-size:26rpx;color:#666;display:flex;align-items:center}.service-tag .price[data-v-1f1d0146]{font-weight:700;font-size:26rpx;color:#e8101e;font-family:DINPro}.service-tag .server_time[data-v-1f1d0146]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:26rpx;color:#666;line-height:34rpx;text-align:left;font-style:normal}.service-tag .split[data-v-1f1d0146]{width:2rpx;height:20rpx;background:#666;margin:0 10rpx}.time_box[data-v-1f1d0146]{width:100%;display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:0;margin-top:auto}.time[data-v-1f1d0146]{font-size:26rpx;color:#999}.time .num[data-v-1f1d0146]{font-family:DINPro;font-weight:400;font-size:28rpx;color:#999}.order-btn[data-v-1f1d0146]{line-height:60rpx;height:60rpx;padding:0rpx 20rpx;background:linear-gradient(107deg,#f84c63,#e8101e);border-radius:30rpx;text-align:center;color:#fff;font-size:25rpx;align-self:flex-end}.service-title-type[data-v-1f1d0146]{width:56rpx;height:28rpx;flex-shrink:0;display:block}",""]),t.exports=e},5541:function(t,e,i){"use strict";i.r(e);var a=i("8424"),n=i("240a");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("f171");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"250f388c",null,!1,a["a"],void 0);e["default"]=o.exports},"55eb":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-switch",data:function(){return{wxsProps:{}}},components:{}}},5647:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.orders-page[data-v-5bf663ab]{background-color:#fafafa;min-height:100vh}.status[data-v-5bf663ab]{position:-webkit-sticky;position:sticky;top:0;left:0;right:0}.status-tabs[data-v-5bf663ab]{height:94rpx;background-color:#fff;z-index:99;white-space:nowrap}.tab-item[data-v-5bf663ab]{display:inline-block;height:48rpx;position:relative;font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal;margin:20rpx 50rpx 26rpx 0rpx}.tab-item.active[data-v-5bf663ab]{color:#e8101e;font-weight:500}.tab-item.active[data-v-5bf663ab]::after{content:"";position:absolute;width:28rpx;height:6rpx;left:50%;bottom:0;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#e8101e;border-radius:3rpx}.status-tabs2[data-v-5bf663ab]{height:56rpx;background-color:#fff;z-index:99;white-space:nowrap;padding-bottom:30rpx}.tab-item2[data-v-5bf663ab]{display:inline-block;height:56rpx;padding:0 20rpx;background:#f3f5f6;border-radius:10rpx;position:relative;margin:0 0 0 23rpx;font-weight:400;font-size:28rpx;color:#333;line-height:56rpx;text-align:left;font-style:normal}.tab-item2.active[data-v-5bf663ab]{color:#e8101e;font-weight:500;background:#fee5e7}.order-item[data-v-5bf663ab]{margin:32rpx 24rpx;border-radius:16rpx;padding:24rpx;background-color:#fff;position:relative}.order-date[data-v-5bf663ab]{font-size:24rpx;color:#666;font-weight:400}.order-content[data-v-5bf663ab]{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;margin-top:16rpx}.service-image[data-v-5bf663ab]{width:162rpx;height:162rpx;border-radius:24rpx;margin-right:16rpx;background-color:#333}.order-info[data-v-5bf663ab]{width:350rpx;height:162rpx;display:flex;flex-flow:column nowrap;justify-content:flex-start;align-items:flex-start}.service-name[data-v-5bf663ab]{flex:1;font-size:28rpx;color:#000;font-weight:400;margin-bottom:6rpx}.rating[data-v-5bf663ab]{display:flex;align-items:center;margin-bottom:6rpx}.star-icon[data-v-5bf663ab]{width:20rpx;height:20rpx;margin-right:6rpx;background-color:#000}.rating-score[data-v-5bf663ab]{font-size:16rpx;color:#e8101e;margin-left:68rpx}.currency[data-v-5bf663ab]{font-size:24rpx;color:#ff0037}.amount[data-v-5bf663ab]{font-size:32rpx;color:#ff0037;font-weight:500}.address[data-v-5bf663ab]{display:flex;align-items:center}.location-icon[data-v-5bf663ab]{width:24rpx;height:24rpx;margin-right:4rpx}.address-text[data-v-5bf663ab]{font-size:24rpx;color:#999;flex:1}.order-status[data-v-5bf663ab]{position:absolute;top:0;right:0}.status-text[data-v-5bf663ab]{font-size:24rpx;font-weight:400;padding:6rpx 16rpx;color:#28d189;background-color:rgba(40,209,137,.2);border-radius:0 16rpx 0 16rpx}.load-more[data-v-5bf663ab]{text-align:center;padding:0 0 32rpx}.load-date[data-v-5bf663ab]{font-size:24rpx;color:#e8101e}.load-text[data-v-5bf663ab]{font-size:24rpx;color:#999}.nothings-box[data-v-5bf663ab]{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:280rpx 0 0}.nothings-text[data-v-5bf663ab]{font-size:32rpx;font-weight:500;color:#999;text-align:center;font-style:italic}[data-v-5bf663ab]::-webkit-scrollbar{width:0;height:0;color:transparent}.service-first-tab[data-v-5bf663ab]{border-bottom-color:transparent}.common-list[data-v-5bf663ab]{padding-bottom:0rpx;position:fixed;left:0;right:0;bottom:0rpx;border-radius:20rpx 20rpx 0rpx 0rpx;background-color:#fafafa}.common-list[data-v-5bf663ab] .list-scroll{margin-top:0rpx}.common-list[data-v-5bf663ab] .list-scroll .uni-scroll-view-content{margin-top:0rpx}.common-list[data-v-5bf663ab] .list-scroll .list-item{display:block;padding:0;background-color:initial;margin-bottom:20rpx}.common-list[data-v-5bf663ab] .list-scroll .list-container{padding:0}.service-first-tab[data-v-5bf663ab]{box-shadow:none}',""]),t.exports=e},"564d":function(t,e,i){var a=i("d5cd");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("5de6808e",a,!0,{sourceMap:!1,shadowMode:!1})},"567c":function(t,e,i){var a=i("f71a");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("040d9dec",a,!0,{sourceMap:!1,shadowMode:!1})},"569d":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".class_select[data-v-734c0110]{width:100%}.class_select .classList[data-v-734c0110]{display:flex;align-items:center;padding:28rpx 30rpx 43rpx;gap:14rpx;overflow-x:auto}.class_select .classList .classItem[data-v-734c0110]{background:#fff;border-radius:20rpx;width:140rpx;height:140rpx;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20rpx;flex-shrink:0}.class_select .classList .classItem .classIcon[data-v-734c0110]{width:64rpx;height:64rpx}.class_select .classList .classItem .text[data-v-734c0110]{font-size:24rpx;color:#333}.class_select .classList .classItem .activeText[data-v-734c0110]{color:#e8101e}.class_select .secondClass[data-v-734c0110]{background-color:#fff;padding:30rpx 0 40rpx 30rpx}.class_select .secondClass .secondClassTitle[data-v-734c0110]{font-weight:500;font-size:30rpx;color:#333}.class_select .secondClass .secondClassList[data-v-734c0110]{display:flex;margin-top:30rpx;flex-wrap:wrap;gap:19rpx}.class_select .secondClass .secondClassList .secondClassItem[data-v-734c0110]{width:214rpx;height:64rpx;background:#f5f5f5;border-radius:34rpx;display:flex;justify-content:center;align-items:center;border:2rpx solid transparent}.class_select .secondClass .secondClassList .secondClassItemActive[data-v-734c0110]{border:1rpx solid #e8101e;background:rgba(252,67,124,.1);color:#e8101e}.class_select .tips[data-v-734c0110]{background-color:#fff;padding:30rpx 48rpx 30rpx;margin-top:30rpx;font-size:26rpx}.class_select .tips .red[data-v-734c0110]{color:#e8101e}.class_select .fixBottomBtn[data-v-734c0110]{position:fixed;bottom:0;width:100%;height:166rpx;background-color:#fff;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0 24rpx 0 30rpx}.class_select .fixBottomBtn .btn[data-v-734c0110]{width:100%;height:39rpx;border:2rpx solid #e8101e;border-radius:39rpx;font-size:30rpx;color:#e8101e}",""]),t.exports=e},"56ac":function(t,e,i){var a=i("e27f");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("7c8132cd",a,!0,{sourceMap:!1,shadowMode:!1})},"56bc":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("3959")),r={data:function(){return{wxsProps:{}}},components:{selectTimePage2:n.default}};e.default=r},"56d5":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[t._$g(1,"i")?i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:t._$g(5,"a-src"),mode:"aspectFill",_i:5}}),i("v-uni-button",{staticClass:t._$g(6,"sc"),attrs:{_i:6}})],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v(t._$g(9,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._$g(11,"i")?i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v(" \u8d44\u6599\u7f16\u8f91 "),i("v-uni-image",{attrs:{mode:"aspectFill",src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/6a4b7bc9-174a-471a-9bf5-6ba167005960",_i:12}})],1):i("uni-view",{staticClass:t._$g(13,"sc"),staticStyle:{color:"#999999"},attrs:{_i:13}},[t._v("\u7f8e\u878d\u878d\u5c0f\u7a0b\u5e8f\u6b22\u8fce\u60a8")])],1)],1)],1),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("v-uni-image",{staticClass:t._$g(16,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/931c0992-5243-4c70-ab2b-b99b430661c8.png",mode:"aspectFill",_i:16}}),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v("\u94b1\u5305\u4f59\u989d\uff1a"),i("v-uni-text",{staticStyle:{color:"#e8101e"},attrs:{_i:18}},[t._v(t._$g(18,"t0-0")+"\u5143")])],1)],1)],1)],1),t._$g(19,"i")?i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(21,"sc"),attrs:{mode:"aspectFill",src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ed8bc685-33bd-48cf-8058-85b07b9be0dc.png",_i:21}}),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v("\u7533\u8bf7\u6210\u4e3a\u5e73\u53f0\u5546\u5bb6")])],1)],1):t._e(),t._$g(23,"i")?i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("v-uni-image",{staticClass:t._$g(25,"sc"),attrs:{mode:"widthFix",src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/7f577210-2d63-4146-af09-bcaf3db85a49.png",_i:25}}),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[t._v("\u60a8\u6709"+t._$g(26,"t0-0")+"\u6761\u5546\u5bb6\u9080\u8bf7")])],1),i("v-uni-image",{staticClass:t._$g(27,"sc"),attrs:{mode:"aspectFill",src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/f2483bec-bbe7-4f2c-a6fd-e40a0accae82.png",_i:27},on:{click:function(e){return t.$handleViewEvent(e)}}})],1):t._e()],1):i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(31,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/4b48d973-d219-4cac-b206-675c192d0cff",mode:"aspectFill",_i:31}}),i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[i("v-uni-text",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[t._v(" \u8bf7\u70b9\u51fb\u767b\u5f55 ")]),i("v-uni-text",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[t._v("\u7f8e\u878d\u878d\u5546\u5bb6\u6b22\u8fce\u60a8")])],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[t._l(t._$g(36,"f"),(function(e,a,n,r){return[t._$g("37-"+r,"i")?i("uni-view",{key:e["k0"],staticClass:t._$g("37-"+r,"sc"),attrs:{_i:"37-"+r}},[i("uni-view",{staticClass:t._$g("38-"+r,"sc"),attrs:{_i:"38-"+r}},[t._v(t._$g("38-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("39-"+r,"sc"),attrs:{_i:"39-"+r}},t._l(t._$g("40-"+r,"f"),(function(e,a,n,s){return i("uni-view",{key:e,staticClass:t._$g("40-"+r+"-"+s,"sc"),attrs:{_i:"40-"+r+"-"+s},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("41-"+r+"-"+s,"sc"),attrs:{_i:"41-"+r+"-"+s}},[i("v-uni-image",{staticClass:t._$g("42-"+r+"-"+s,"sc"),attrs:{src:t._$g("42-"+r+"-"+s,"a-src"),mode:"widthFix",_i:"42-"+r+"-"+s}})],1),i("v-uni-text",{staticClass:t._$g("43-"+r+"-"+s,"sc"),attrs:{_i:"43-"+r+"-"+s}},[t._v(t._$g("43-"+r+"-"+s,"t0-0"))])],1)})),1)],1):t._e(),t._$g("44-"+r,"i")?i("uni-view",{key:e["k1"],staticClass:t._$g("44-"+r,"sc"),staticStyle:{padding:"24rpx","padding-bottom":"28rpx"},attrs:{_i:"44-"+r}},[i("uni-view",{staticClass:t._$g("45-"+r,"sc"),attrs:{_i:"45-"+r}},[t._v(t._$g("45-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("46-"+r,"sc"),attrs:{_i:"46-"+r}},t._l(t._$g("47-"+r,"f"),(function(e,a,n,s){return i("v-uni-image",{key:e,attrs:{src:t._$g("47-"+r+"-"+s,"a-src"),mode:"widthFix",_i:"47-"+r+"-"+s},on:{click:function(e){return t.$handleViewEvent(e)}}})})),1)],1):t._e(),t._$g("48-"+r,"i")?i("uni-view",{key:e["k2"],staticClass:t._$g("48-"+r,"sc"),attrs:{_i:"48-"+r}},[i("v-uni-image",{attrs:{src:t._$g("49-"+r,"a-src"),mode:"widthFix",_i:"49-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})],1):t._e(),t._$g("50-"+r,"i")?i("uni-view",{key:e["k3"],staticClass:t._$g("50-"+r,"sc"),attrs:{_i:"50-"+r}},[i("uni-view",{staticClass:t._$g("51-"+r,"sc"),attrs:{_i:"51-"+r}},[t._v(t._$g("51-"+r,"t0-0"))]),i("v-uni-image",{attrs:{src:t._$g("52-"+r,"a-src"),mode:"widthFix",_i:"52-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})],1):t._e(),t._$g("53-"+r,"i")?i("uni-view",{key:e["k4"],staticClass:t._$g("53-"+r,"sc"),attrs:{_i:"53-"+r}},[i("uni-view",{staticClass:t._$g("54-"+r,"sc"),attrs:{_i:"54-"+r}},[t._v(t._$g("54-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("55-"+r,"sc"),attrs:{_i:"55-"+r}},[i("v-uni-image",{attrs:{src:t._$g("56-"+r,"a-src"),mode:"widthFix",_i:"56-"+r}}),i("uni-view",{staticClass:t._$g("57-"+r,"sc"),attrs:{_i:"57-"+r}},[t._v("\u5165\u9a7b\u6210\u529f\u5566\uff01")]),i("uni-view",{staticClass:t._$g("58-"+r,"sc"),attrs:{_i:"58-"+r}},[t._v("\u4e0b\u4e00\u6b65:\u7b49\u5f85"),i("v-uni-text",{staticStyle:{color:"#e8101e"},attrs:{_i:"59-"+r}},[t._v("\u4e13\u5c5e\u95e8\u5e97\u5546\u5bb6\u9080\u7ea6\u7ed1\u5b9a")]),t._v("\uff0c\u89e3\u9501\u8ba2\u5355\u8d44\u6e90\u4e0e\u670d")],1),i("uni-view",{staticClass:t._$g("60-"+r,"sc"),attrs:{_i:"60-"+r}},[t._v("\u52a1\u901a\u9053\uff0c\u5f00\u542f\u9ad8\u6548\u53d8\u73b0\u3001\u5171\u521b\u5171\u8d62\u7684\u65b0\u65c5\u7a0b\uff5e")])],1)],1):t._e()]}))],2),i("tipsPopup2",{attrs:{_i:61},on:{closePopup:function(e){return t.$handleViewEvent(e)},okBtn:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g(61,"t0-0")+" ")]),i("TabBar",{attrs:{_i:62}})],1)},n=[]},"56e7":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-swiper",{staticClass:t._$g(3,"sc"),attrs:{circular:!0,"indicator-dots":!1,autoplay:!1,interval:3e3,duration:500,"indicator-active-color":"#fff","indicator-color":"rgba(255, 255, 255, 0.6)",_i:3}},t._l(t._$g(4,"f"),(function(e,a,n,r){return i("v-uni-swiper-item",{key:e,staticClass:t._$g("4-"+r,"sc"),attrs:{_i:"4-"+r}},[i("v-uni-image",{staticClass:t._$g("5-"+r,"sc"),attrs:{src:t._$g("5-"+r,"a-src"),mode:"aspectFill",_i:"5-"+r}})],1)})),1)],1),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v(t._$g(9,"t0-0"))]),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\uffe5"+t._$g(10,"t0-0")+"/10\u5206\u949f")])],1)],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("v-uni-image",{staticClass:t._$g(13,"sc"),attrs:{src:t._$g(13,"a-src"),_i:13}}),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v(" "+t._$g(14,"t0-0")+" ")])],1)],1),i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v(" \u670d\u52a1\u8303\u56f4\u8be6\u60c5")]),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v(" "+t._$g(19,"t0-0")+": "+t._$g(19,"t0-1")+" ")]),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v(" \u5907\u6ce8\uff1a\u53ef\u4ee5\u652f\u6301\u60a8\u505a\u4ee5\u4e0a\u7c7b\u76ee\u7684\u670d\u52a1\u3002 ")])],1)],1)],1),i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v(" \u5de5\u65f6\u63cf\u8ff0")]),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v(" "+t._$g(25,"t0-0")+" ")])],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u7acb\u5373\u9884\u7ea6 ")])],1),i("uni-view",{staticStyle:{height:"166rpx"},attrs:{_i:28}})],1)},r=[]},"56e8":function(t,e,i){var a=i("72b6");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("200f4aba",a,!0,{sourceMap:!1,shadowMode:!1})},"56fa":function(t,e,i){"use strict";var a=i("4a5c"),n=i.n(a);n.a},"576a":function(t,e,i){var a=i("6248");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("6005770d",a,!0,{sourceMap:!1,shadowMode:!1})},5777:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("378d")),r=a(i("666e")),s=a(i("011c")),o=a(i("cab6")),c={name:"buyManHour",data:function(){return{wxsProps:{}}},components:{buyOrderCard:n.default,filterPopup:r.default,filterCard:s.default,timePicker:o.default}};e.default=c},5782:function(t,e,i){"use strict";i.r(e);var a=i("0553"),n=i("d492");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("747e");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"e06e6c4a",null,!1,a["a"],void 0);e["default"]=o.exports},"578e":function(t,e,i){var a=i("ff1e");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("2e6c6132",a,!0,{sourceMap:!1,shadowMode:!1})},"579b":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".addWe .addWe-tip{width:710rpx;margin:20rpx 20rpx 0 20rpx;box-sizing:border-box;padding:24rpx 22rpx 60rpx 22rpx;background:#fce8e8;border-radius:20rpx;font-weight:400;font-size:30rpx;color:#c8424b;line-height:37rpx;text-align:left;font-style:normal;display:flex}.addWe .addWe-tip .addWe-tip-img{width:24rpx;height:27rpx;margin-right:9rpx;margin-top:4rpx}.addWe .addWe-form{-webkit-transform:translateY(-40rpx);transform:translateY(-40rpx);box-sizing:border-box;margin:0 20rpx;padding:25rpx;width:710rpx;height:480rpx;background:#fff;border-radius:20rpx}.addWe .addWe-form .addWe-form-title{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.addWe .addWe-form .form-item{display:flex;align-items:center;justify-content:space-between;border-bottom:1rpx solid #f2f2f2;padding:30rpx 0}.addWe .addWe-form .form-item .form-item-text{font-weight:400;font-size:28rpx;color:#666;line-height:40rpx;text-align:left;font-style:normal;width:180rpx;flex-shrink:0}.addWe .addWe-form .form-item uni-input{font-weight:400;font-size:28rpx;line-height:40rpx;text-align:left;font-style:normal;flex:1;margin-left:30rpx;color:#333;background-color:initial;padding:0;box-sizing:border-box}.addWe .addWe-form .form-item .uni-input-wrapper{text-align:end}.addWe .addWe-form .form-item .form-item-right{display:flex;align-items:center}.addWe .addWe-form .form-item .form-item-right .text1{color:#c4c4c4;font-weight:400;font-size:28rpx;line-height:40rpx}.addWe .addWe-form .form-item .form-item-right .text2{font-weight:400;font-size:28rpx;color:#333;line-height:40rpx}.addWe .addWe-form .form-item .form-item-right .arrow-right{margin-left:20rpx;width:12rpx;height:24rpx}.addWe .addWe-form .input-placeholde{color:#c4c4c4}.agreement-footer{padding:60rpx 30rpx;position:fixed;left:0;right:0;bottom:0;background:#fff}.agreement-footer .agreement-btn{width:690rpx;height:78rpx;background:#e8101e;border-radius:798rpx;font-weight:400;font-size:30rpx;color:#fff;text-align:center;font-style:normal;display:flex;align-items:center;justify-content:center}.uni-input-placeholder{font-weight:400;font-size:28rpx;color:#c4c4c4;line-height:40rpx;text-align:right;font-style:normal} .uni-input-input{font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:right;font-style:normal}",""]),t.exports=e},"57e7":function(t,e,i){var a=i("3ece");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("f92b4344",a,!0,{sourceMap:!1,shadowMode:!1})},"57ea":function(t,e,i){"use strict";var a=i("c683"),n=i.n(a);n.a},5813:function(t,e,i){"use strict";i.r(e);var a=i("026e"),n=i("cd27");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("38eb");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"15277242",null,!1,a["a"],void 0);e["default"]=o.exports},"586f":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("e26b")),r={data:function(){return{wxsProps:{}}},components:{serviceCodeInput:n.default}};e.default=r},"58cb":function(t,e,i){"use strict";var a=i("bfd1"),n=i.n(a);n.a},5955:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".selectTime[data-v-5d02cae2]{width:100%;flex:1;display:flex;flex-wrap:nowrap;justify-content:space-between;-webkit-column-gap:22rpx;column-gap:22rpx}.selectTime .selectTime-time[data-v-5d02cae2]{width:100%;font-weight:400;font-size:28rpx;color:#cacccc;line-height:40rpx;text-align:left;font-style:normal;height:72rpx;border:1rpx solid #e5e5e5;display:flex;align-items:center;padding-left:20rpx;border-radius:10rpx;transition:all .3s}.selectTime .selectTime-time-y[data-v-5d02cae2]{color:#333;border-color:#409eff}.selectTime.disabled .selectTime-time[data-v-5d02cae2]{background-color:#f5f5f5;cursor:not-allowed}",""]),t.exports=e},"59b2":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("35ed");e=a(!1);var s=n(r);e.push([t.i,'.container .tab-nav{display:flex;justify-content:space-between;padding:0 150rpx;background:#fff}.container .tab-nav .tab-item{padding:30rpx 0rpx 40rpx 0rpx;cursor:pointer;font-weight:400;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.container .tab-nav .tab-item.active{color:#e8101e;font-weight:500;position:relative}.container .tab-nav .tab-item.active:after{content:"";position:absolute;bottom:27rpx;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:34rpx;height:6rpx;background:linear-gradient(306deg,#e8101e,#fc563b);border-radius:3rpx}.pop-content{width:620rpx;background-image:url('+s+");background-position:top;background-repeat:no-repeat;background-size:cover;border-radius:20rpx}.pop-content .pop-content-title{padding-top:193rpx;padding-bottom:40rpx;text-align:center;font-weight:500;font-size:36rpx;color:#333;line-height:50rpx;font-style:normal;display:block}.pop-content .pop-content-text{padding:0 40rpx;font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;display:block}.pop-content .pop-content-btns{display:flex;padding:0 54rpx;justify-content:space-between;margin-top:80rpx;padding-bottom:51rpx}.pop-content .pop-content-btns .pop-content-close{width:246rpx;height:80rpx;border-radius:40rpx;border:2rpx solid #e8101e;font-weight:500;font-size:28rpx;color:#e8101e;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:center}.pop-content .pop-content-btns .pop-content-sure{width:246rpx;height:80rpx;background:#e8101e;border-radius:40rpx;font-weight:500;font-size:28rpx;color:#fff;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:center}.scoll-lists{padding:0 20rpx;margin-top:20rpx}.scoll-lists .list-item{box-sizing:border-box;padding:20rpx;height:200rpx;background:#fff;border-radius:20rpx;margin-bottom:20rpx;position:relative}.scoll-lists .list-item .list-item-type{position:absolute;top:0;right:0;width:128rpx;height:49rpx}.scoll-lists .list-item .list-item-right{width:160rpx;height:160rpx;border-radius:20rpx}.scoll-lists .list-item .list-item-left{flex:1;margin-left:26rpx}.scoll-lists .list-item .list-item-left .list-item-left-name{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal;margin-bottom:60rpx}.scoll-lists .list-item .list-item-left .list-item-left-price{width:100%}.scoll-lists .list-item .list-item-left .list-item-left-price .list-item-left-price-text{font-weight:500;font-size:40rpx;color:#e8101e;line-height:48rpx;text-align:left;font-style:normal}.scoll-lists .list-item .list-item-left .list-item-left-price .list-item-left-price-btn{box-sizing:border-box;padding:0 38rpx;height:56rpx;border-radius:36rpx;border:2rpx solid #666;font-weight:400;font-size:28rpx;color:#333;line-height:56rpx;text-align:left;font-style:normal} .right-area{width:31rpx!important;height:31rpx!important} .icon-headle{width:31rpx!important;height:31rpx!important}.common-list{background:transparent!important} .list-container{padding:0!important} .list-scroll{margin-top:0!important}",""]),t.exports=e},"5a07":function(t,e,i){"use strict";i.r(e);var a=i("d17a"),n=i("34c3");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"5a21":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"5a22":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={props:["tabList","currentIndex"],data:function(){return{wxsProps:{}}},components:{}}},"5a4e":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"OrderCard",props:["dataItem","typeId","showState","haveButton"],data:function(){return{wxsProps:{}}},components:{}}},"5a51":function(t,e,i){"use strict";var a=i("f83a"),n=i.n(a);n.a},"5b01":function(t,e,i){var a=i("d18c");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("d6b7bf04",a,!0,{sourceMap:!1,shadowMode:!1})},"5b09":function(t,e,i){"use strict";i.r(e);var a=i("d825"),n=i("c3c8");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("1623");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"5b13":function(t,e,i){"use strict";i.r(e);var a=i("bc9f"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"5b8a":function(t,e,i){"use strict";var a=i("a9c9"),n=i.n(a);n.a},"5b8e":function(t,e,i){"use strict";var a=i("83e3"),n=i.n(a);n.a},"5baf":function(t,e,i){"use strict";i.r(e);var a=i("a883"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"5bec":function(t,e,i){"use strict";i.r(e);var a=i("6aa0"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"5c18":function(t,e,i){"use strict";var a=i("a3fc"),n=i.n(a);n.a},"5c32":function(t,e,i){"use strict";i.r(e);var a=i("ed4e"),n=i("a20f");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("484c");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"5c43":function(t,e,i){"use strict";i.r(e);var a=i("7149"),n=i("4c88");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("9237");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"5c53":function(t,e,i){var a=i("d6da");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("560d6a58",a,!0,{sourceMap:!1,shadowMode:!1})},"5c5f":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".effect .effect-selectTime{padding:20rpx 30rpx;background:#fff;box-sizing:border-box}.effect .order-container{padding-top:20rpx;background-color:initial}.effect .order-container .order-card{background-color:#fff;border-radius:20rpx;padding:20rpx}.effect .order-container .order-card .order-number{display:flex;align-items:center;margin-bottom:22rpx;font-weight:400;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal}.effect .order-container .order-card .order-number .number{margin-right:6rpx;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.effect .order-container .order-card .order-number .copy-btn{color:#439ef0}.effect .order-container .order-card .service-info{display:flex;margin-bottom:20rpx}.effect .order-container .order-card .service-info .service-img{width:150rpx;height:150rpx;border-radius:10rpx;object-fit:cover}.effect .order-container .order-card .service-info .service-detail{margin-left:20rpx;flex:1}.effect .order-container .order-card .service-info .service-detail .service-name{display:block;font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal;margin-bottom:24rpx}.effect .order-container .order-card .service-info .service-detail .order-time{display:block;font-size:26rpx;color:#999;line-height:37rpx;text-align:left;font-style:normal;margin-bottom:10rpx}.effect .order-container .order-card .service-info .service-detail .order-status{font-weight:400;font-size:26rpx;color:#999;line-height:37rpx;text-align:left;font-style:normal}.effect .order-container .order-card .amount-info{display:flex;justify-content:space-between;border-top:1rpx solid #edeeee;padding-top:20rpx}.effect .order-container .order-card .amount-info .amount-item{flex:1;text-align:center}.effect .order-container .order-card .amount-info .amount-item .amount-label{display:block;font-weight:400;font-size:26rpx;color:#999;line-height:37rpx;text-align:center;font-style:normal;margin-bottom:10rpx}.effect .order-container .order-card .amount-info .amount-item .amount-value{font-family:DINPro;font-weight:500;font-size:32rpx;color:#333;line-height:41rpx;text-align:center;font-style:normal}.common-list{background-color:#fafafa!important;padding:0}.common-list .list-scroll{margin-top:0}.common-list .list-container{padding:0 20rpx}",""]),t.exports=e},"5c9a":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"5cf3":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".agree_box{position:fixed;bottom:0;left:0;width:100%;background:#fff;padding:20rpx 0 20rpx 0}.content{padding-bottom:180rpx}.content .cash-card{padding:30rpx 20rpx;margin:20rpx;background:#fff;border-radius:20rpx}.content .cash-card .cash-card-title{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.content .cash-card .cash-card-title2{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal;width:200rpx}.content .cash-card .cash-card-text1{font-weight:400;font-size:30rpx;color:#e8101e;line-height:42rpx;text-align:left;font-style:normal;margin-left:35rpx}.content .cash-card .cash-card-text2{font-weight:400;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal;word-break:break-all;flex:1}.content .cash-card .cash-card-text2 .cash-card-text2-img{width:8rpx;height:18rpx;margin-left:10rpx}.content .cash-card .cash-card-text3{margin-top:20rpx;font-weight:400;font-size:24rpx;color:#999;line-height:33rpx;text-align:left;font-style:normal}.content .cash-card .pop-border-bottom{border-bottom:2rpx solid #e8e8e8;padding:24rpx 0;display:flex}.content .cash-card .cash-card-input{font-weight:500;font-size:42rpx;color:#333;line-height:59rpx;text-align:left;font-style:normal;display:flex}.content .cash-card .cash-card-input .uv-input{padding:0!important}.content .cash-card .uvRadio{margin-left:96rpx;display:flex;gap:60rpx}.content .flex-space{display:flex;align-items:center}.content .agree{display:flex;justify-content:center;align-items:center}.content .agree .uv-checkbox-group{flex:none}.content .agree .agreement{font-weight:400;font-size:24rpx;color:#848484;line-height:33rpx;text-align:left;font-style:normal;color:#2e83d6}.content .sure-btn{margin:20rpx 20rpx 0 20rpx;display:flex;align-items:center;justify-content:center;width:710rpx;height:108rpx;background:linear-gradient(180deg,#f52540,#e8101e);border-radius:55rpx;font-weight:400;font-size:42rpx;color:#fff;line-height:59rpx;text-align:left;font-style:normal}.radioYes{width:24rpx;height:16rpx}",""]),t.exports=e},"5d39":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".radioYes[data-v-eca7199e]{width:24rpx;height:16rpx}.redTip[data-v-eca7199e]{font-weight:400;font-size:24rpx;color:#e8101e;line-height:33rpx;text-align:left;font-style:normal}.blackTip[data-v-eca7199e]{font-weight:400;font-size:24rpx;color:#666;line-height:33rpx;text-align:left;font-style:normal;margin-top:32rpx}.add-group-buying[data-v-eca7199e]{padding-bottom:160rpx}.add-group-buying .tip[data-v-eca7199e]{padding:20rpx 30rpx;background:#feefec;font-weight:400;font-size:30rpx;color:#f31d2f;line-height:42rpx;text-align:left;font-style:normal;text-align:center}.add-group-buying .tip .tip-icon[data-v-eca7199e]{width:34rpx;height:34rpx;margin-right:10rpx;-webkit-transform:translateY(6rpx);transform:translateY(6rpx)}.add-service[data-v-eca7199e]{padding:30rpx}.add-service .form-item-up[data-v-eca7199e]{background-color:#fff;padding:12px;display:flex;flex-direction:row;align-items:center;border-radius:20rpx;margin-bottom:20rpx;-webkit-column-gap:20rpx;column-gap:20rpx}.add-service .form-item-up .form-label[data-v-eca7199e]{white-space:nowrap;font-weight:500;font-size:32rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal}.add-service .form-item-up .form-input-card[data-v-eca7199e]{width:100%;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;-webkit-column-gap:22rpx;column-gap:22rpx}.add-service .form-item-up .form-input-box[data-v-eca7199e]{border-radius:10rpx;border:1rpx solid #e5e5e5;width:100%;height:72rpx}.add-service .form-item-up .form-input-box .form-input[data-v-eca7199e]{height:72rpx;font-size:28rpx;color:#333;margin-left:20rpx}.add-service .form-item-up .form-input-box .uni-input-placeholder[data-v-eca7199e]{font-weight:400;font-size:28rpx;color:#cacccc;line-height:40rpx;text-align:left;font-style:normal}.add-service .form-item-up .box-width-190[data-v-eca7199e]{width:190rpx}.add-service .form-item-up .form-radio-box[data-v-eca7199e]{margin-left:106rpx}.add-service .form-item-up .form-radio-box .uv-radio-group--row[data-v-eca7199e]{gap:88rpx}.add-service .form-item-up .form-radio-box2[data-v-eca7199e]{margin-left:32rpx;flex:1}.add-service .form-item-up .form-radio-box2 .uv-radio-group--row[data-v-eca7199e]{justify-content:space-between}.add-service .form-item-up .form-input-select[data-v-eca7199e]{border-radius:10rpx;font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:right;font-style:normal;display:flex;flex-direction:row;align-items:center;justify-content:flex-end;flex:1}.add-service .form-item-up .form-input-select__img[data-v-eca7199e]{margin-left:11rpx;width:12rpx;height:24rpx}.flex-wrap__warp[data-v-eca7199e]{flex-wrap:wrap}.select-serve-footer[data-v-eca7199e]{background-color:#fff;position:fixed;bottom:0;left:0;right:0;padding:40rpx 30rpx}.select-serve-footer__btn[data-v-eca7199e]{width:690rpx;height:78rpx;background:#e8101e;border-radius:798rpx;display:flex;align-items:center;justify-content:center;font-weight:400;font-size:30rpx;color:#fff;line-height:39rpx;text-align:center;font-style:normal}.tipTop[data-v-eca7199e]{padding-top:8rpx}",""]),t.exports=e},"5d3f":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},t._l(t._$g(3,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("3-"+r,"sc"),attrs:{_i:"3-"+r}},[i("serveCard",{attrs:{_i:"4-"+r},model:{value:t._$g("4-"+r,"v-model"),callback:function(){},expression:"value"}})],1)})),1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u63d0\u4ea4")])],1)],1)},r=[]},"5d50":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,uvCountDown:i("b054").default,lPainter:i("645f").default,lPainterImage:i("3dbc").default,lPainterView:i("3409").default,lPainterText:i("42bd").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{mode:"widthFix",src:t._$g(4,"a-src"),_i:4}}),i("v-uni-text",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v(t._$g(5,"t0-0")+" "),t._$g(6,"i")?i("v-uni-text",{attrs:{_i:6}},[t._v(t._$g(6,"t0-0"))]):t._e()],1)],1),t._$g(7,"i")?i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v("\u53c2\u56e2\u6210\u529f\uff0c\u9700\u9080\u8bf7"),i("v-uni-text",{staticStyle:{color:"#E8101E"},attrs:{_i:9}},[t._v(t._$g(9,"t0-0"))]),t._v("\u4eba\u624d\u53ef\u5b8c\u6210\u62fc\u56e2 ")],1):t._e(),t._$g(10,"i")?i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u53c2\u56e2\u6210\u529f\uff0c\u5df2\u62fc\u56e2\u6210\u529f\uff01")]):t._e(),t._$g(11,"i")?i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("span",{staticClass:t._$g(12,"sc"),attrs:{_i:12}}),t._v("\u5269\u4f59 "),i("uv-count-down",{attrs:{_i:13},on:{change:function(e){return t.$handleViewEvent(e)},finish:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("v-uni-text",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v(t._$g(15,"t0-0"))]),t._v(": "),i("v-uni-text",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._v(t._$g(16,"t0-0"))]),t._v(": "),i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v(t._$g(17,"t0-0"))])],1)],1),t._v(" \u65f6\u95f4"),i("span",{staticClass:t._$g(18,"sc"),attrs:{_i:18}})],1):t._e(),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},t._l(t._$g(20,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("20-"+r,"sc"),attrs:{_i:"20-"+r}},[t._$g("21-"+r,"i")?i("v-uni-image",{staticClass:t._$g("21-"+r,"sc"),attrs:{src:t._$g("21-"+r,"a-src"),mode:"aspectFill",_i:"21-"+r}}):i("v-uni-image",{staticClass:t._$g("22-"+r,"sc"),attrs:{src:"/static/images/shop/pintuan/add.png",_i:"22-"+r}})],1)})),1),i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g(24,"i")?i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("v-uni-image",{staticClass:t._$g(25,"sc"),attrs:{src:"/static/images/shop/pintuan/wx.png",_i:25}}),t._v(" \u518d\u9080\u8bf7"+t._$g(24,"t1-0")+"\u4f4d\u597d\u53cb\u62fc\u5355 ")],1):i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[t._v(" \u5feb\u9080\u60a8\u7684\u597d\u53cb\uff0c\u6765\u4eab\u4f18\u60e0 ")])],1)],1):t._e(),t._$g(27,"i")?i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[i("v-uni-image",{staticClass:t._$g(29,"sc"),attrs:{src:"/static/images/gohome_location.png",_i:29}}),i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[i("v-uni-text",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v(t._$g(32,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[t._v(t._$g(33,"t0-0"))])],1),i("v-uni-text",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[t._v(t._$g(34,"t0-0"))])],1)],1),i("v-uni-image",{staticClass:t._$g(35,"sc"),attrs:{src:"/static/images/boder_icon.png",mode:"aspectFill",_i:35}}),i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[i("v-uni-image",{staticClass:t._$g(37,"sc"),attrs:{src:t._$g(37,"a-src"),mode:"aspectFill",_i:37}}),i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[i("v-uni-text",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v(t._$g(39,"t0-0"))]),i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}})],1)],1)],1):t._e(),t._$g(41,"i")?i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[i("uni-view",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[i("uni-view",{staticClass:t._$g(43,"sc"),attrs:{_i:43}},[i("uni-view",{staticClass:t._$g(44,"sc"),attrs:{_i:44}},[i("v-uni-image",{staticClass:t._$g(45,"sc"),attrs:{src:t._$g(45,"a-src"),mode:"aspectFill",_i:45}}),i("uni-view",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[i("v-uni-text",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[t._v(t._$g(47,"t0-0"))]),i("uni-view",{staticClass:t._$g(48,"sc"),attrs:{_i:48}},[i("v-uni-image",{staticClass:t._$g(49,"sc"),attrs:{src:"/static/images/position_hui.png",mode:"aspectFit",_i:49}}),i("v-uni-text",{staticClass:t._$g(50,"sc"),attrs:{_i:50}},[t._v(t._$g(50,"t0-0")+"km")])],1)],1)],1),i("uni-view",{staticClass:t._$g(51,"sc"),attrs:{_i:51}},[i("uni-view",{staticClass:t._$g(52,"sc"),attrs:{_i:52}},[i("v-uni-image",{staticClass:t._$g(53,"sc"),attrs:{src:"/static/images/evaluate/map.png",mode:"aspectFit",_i:53},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(54,"sc"),attrs:{_i:54}},[t._v("\u5730\u5740")])],1),i("uni-view",{staticClass:t._$g(55,"sc"),attrs:{_i:55}},[i("v-uni-image",{staticClass:t._$g(56,"sc"),attrs:{src:"/static/images/evaluate/phone.png",mode:"aspectFit",_i:56},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(57,"sc"),attrs:{_i:57}},[t._v("\u7535\u8bdd")])],1)],1)],1),i("uni-view",{staticClass:t._$g(58,"sc"),attrs:{_i:58}},[i("v-uni-text",{staticClass:t._$g(59,"sc"),attrs:{_i:59}},[t._v("\u8425\u4e1a\u65f6\u95f4\uff1a"+t._$g(59,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(60,"sc"),attrs:{_i:60}},[t._v("\u5546\u5bb6\u7535\u8bdd\uff1a"+t._$g(60,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(61,"sc"),attrs:{_i:61}},[t._v("\u5730\u5740\uff1a"+t._$g(61,"t0-0"))])],1)],1)],1):t._e(),i("uni-view",{staticClass:t._$g(62,"sc"),attrs:{_i:62}},[i("uni-view",{staticClass:t._$g(63,"sc"),attrs:{_i:63}},[i("v-uni-text",{staticClass:t._$g(64,"sc"),attrs:{_i:64}},[t._v("\u9884\u7ea6\u4fe1\u606f")]),i("uni-view",{attrs:{_i:65}},[t._$g(66,"i")?i("v-uni-text",{staticClass:t._$g(66,"sc"),attrs:{_i:66}},[t._v(t._$g(66,"t0-0"))]):t._e()],1)],1),i("uni-view",{staticClass:t._$g(67,"sc"),attrs:{_i:67}},[t._$g(68,"i")?i("v-uni-image",{staticClass:t._$g(68,"sc"),attrs:{src:t._$g(68,"a-src"),mode:"aspectFill",_i:68}}):t._e(),i("uni-view",{staticClass:t._$g(69,"sc"),attrs:{_i:69}},[i("uni-view",{staticClass:t._$g(70,"sc"),attrs:{_i:70}},[t._v(t._$g(70,"t0-0")+" "),i("uni-view",{staticClass:t._$g(71,"sc"),attrs:{_i:71}},[t._v("\xd71")])],1),t._$g(72,"i")?i("uni-view",{staticClass:t._$g(72,"sc"),attrs:{_i:72}},[i("uni-view",{staticClass:t._$g(73,"sc"),attrs:{_i:73}},[t._v("\u539f\u4ef7\xa5"+t._$g(73,"t0-0"))]),i("uni-view",{staticClass:t._$g(74,"sc"),attrs:{_i:74}},[t._v("\u56e2\u8d2d\u4ef7:\xa5"),i("v-uni-text",{staticStyle:{"font-size":"36rpx"},attrs:{_i:75}},[t._v(t._$g(75,"t0-0"))])],1)],1):i("v-uni-text",{staticClass:t._$g(76,"sc"),staticStyle:{color:"#333"},attrs:{_i:76}},[t._v("\xa5 "),i("v-uni-text",{staticStyle:{"font-size":"36rpx"},attrs:{_i:77}},[t._v(t._$g(77,"t0-0"))])],1)],1)],1),i("uni-view",{staticClass:t._$g(78,"sc"),attrs:{_i:78}},[i("v-uni-text",{staticClass:t._$g(79,"sc"),attrs:{_i:79}},[t._v("\u5b9e\u4ed8\u91d1\u989d\uff1a")]),i("v-uni-text",{staticClass:t._$g(80,"sc"),attrs:{_i:80}},[t._v("\uffe5"+t._$g(80,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(81,"sc"),attrs:{_i:81}},[i("v-uni-text",{staticClass:t._$g(82,"sc"),attrs:{_i:82}},[t._v("\u8ba2\u5355\u4fe1\u606f")]),i("uni-view",{staticClass:t._$g(83,"sc"),attrs:{_i:83}},[i("v-uni-text",{staticClass:t._$g(84,"sc"),attrs:{_i:84}},[t._v("\u8ba2\u5355\u7c7b\u578b")]),i("v-uni-text",{staticClass:t._$g(85,"sc"),attrs:{_i:85}},[t._v(t._$g(85,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(86,"sc"),attrs:{_i:86}},[i("v-uni-text",{staticClass:t._$g(87,"sc"),attrs:{_i:87}},[t._v("\u670d\u52a1\u7801")]),i("v-uni-text",{staticClass:t._$g(88,"sc"),attrs:{_i:88}},[t._v(t._$g(88,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(89,"sc"),attrs:{_i:89}},[i("v-uni-text",{staticClass:t._$g(90,"sc"),attrs:{_i:90}},[t._v("\u8ba2\u5355\u7f16\u53f7")]),i("v-uni-text",{staticClass:t._$g(91,"sc"),attrs:{_i:91}},[t._v(t._$g(91,"t0-0"))])],1),t._$g(92,"i")?i("uni-view",{staticClass:t._$g(92,"sc"),attrs:{_i:92}},[i("v-uni-text",{staticClass:t._$g(93,"sc"),attrs:{_i:93}},[t._v("\u4e0b\u5355\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(94,"sc"),attrs:{_i:94}},[t._v(t._$g(94,"t0-0"))])],1):t._e(),t._$g(95,"i")?i("uni-view",{staticClass:t._$g(95,"sc"),attrs:{_i:95}},[i("v-uni-text",{staticClass:t._$g(96,"sc"),attrs:{_i:96}},[t._v("\u652f\u4ed8\u65b9\u5f0f")]),i("v-uni-text",{staticClass:t._$g(97,"sc"),attrs:{_i:97}},[t._v(t._$g(97,"t0-0"))])],1):t._e(),t._$g(98,"i")?i("uni-view",{staticClass:t._$g(98,"sc"),attrs:{_i:98}},[i("v-uni-text",{staticClass:t._$g(99,"sc"),attrs:{_i:99}},[t._v("\u652f\u4ed8\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(100,"sc"),attrs:{_i:100}},[t._v(t._$g(100,"t0-0"))])],1):t._e(),t._$g(101,"i")?i("uni-view",{staticClass:t._$g(101,"sc"),attrs:{_i:101}},[i("v-uni-text",{staticClass:t._$g(102,"sc"),attrs:{_i:102}},[t._v("\u5f00\u59cb\u670d\u52a1\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(103,"sc"),attrs:{_i:103}},[t._v(t._$g(103,"t0-0"))])],1):t._e(),t._$g(104,"i")?i("uni-view",{staticClass:t._$g(104,"sc"),attrs:{_i:104}},[i("v-uni-text",{staticClass:t._$g(105,"sc"),attrs:{_i:105}},[t._v("\u670d\u52a1\u5b8c\u6210\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(106,"sc"),attrs:{_i:106}},[t._v(t._$g(106,"t0-0"))])],1):t._e()],1)],1),i("uni-view",{staticClass:t._$g(107,"sc"),attrs:{_i:107}},[i("uni-view",{staticClass:t._$g(108,"sc"),attrs:{_i:108}}),t._$g(109,"i")?i("uni-view",{staticClass:t._$g(109,"sc"),attrs:{_i:109},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(110,"sc"),attrs:{_i:110}},[t._v("\u53d6\u6d88\u8ba2\u5355")])],1):t._e(),t._$g(111,"i")?i("uni-view",{staticClass:t._$g(111,"sc"),attrs:{_i:111},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(112,"sc"),attrs:{_i:112}},[t._v("\u7533\u8bf7\u9000\u6b3e")])],1):t._e(),t._$g(113,"i")?i("uni-view",{staticClass:t._$g(113,"sc"),attrs:{_i:113},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(114,"sc"),attrs:{_i:114}},[t._v("\u7acb\u5373\u652f\u4ed8")])],1):t._e(),t._$g(115,"i")?i("uni-view",{staticClass:t._$g(115,"sc"),attrs:{_i:115},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(116,"sc"),attrs:{_i:116}},[t._v("\u7acb\u5373\u8bc4\u4ef7")])],1):t._e(),t._$g(117,"i")?i("uni-view",{staticClass:t._$g(117,"sc"),attrs:{_i:117},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(118,"sc"),attrs:{_i:118}},[t._v("\u5df2\u8bc4\u8bba")])],1):t._e(),t._$g(119,"i")?i("uni-view",{staticClass:t._$g(119,"sc"),attrs:{_i:119},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(120,"sc"),attrs:{_i:120}},[t._v("\u518d\u6765\u4e00\u5355")])],1):t._e()],1),i("uni-view",{staticClass:t._$g(121,"sc"),class:t._$g(121,"c"),attrs:{_i:121}},[i("uni-view",{staticClass:t._$g(122,"sc"),attrs:{_i:122}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(123,"sc"),attrs:{_i:123}},[t._v("\u5f53\u60a8\u9700\u8981\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0\u5ba2\u670d\u7684\u65f6\u5019\uff0c\u9700\u8981\u83b7\u53d6\u62e8\u6253\u7535\u8bdd\u6743\u9650\u3002")])],1),t._$g(124,"i")?i("l-painter",{ref:"painter",attrs:{_i:124}},[i("l-painter-image",{attrs:{_i:125}}),i("l-painter-view",{attrs:{_i:126}},[i("l-painter-view",{attrs:{_i:127}},[i("l-painter-image",{attrs:{_i:128}}),i("l-painter-text",{attrs:{_i:129}})],1),i("l-painter-view",{attrs:{_i:130}},[i("l-painter-text",{attrs:{_i:131}}),i("l-painter-text",{attrs:{_i:132}})],1),i("l-painter-view",{attrs:{_i:133}},[i("l-painter-text",{attrs:{_i:134}})],1),i("l-painter-view",{attrs:{_i:135}})],1)],1):t._e()],1)},r=[]},"5d67":function(t,e,i){var a=i("acd2");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("20f6087a",a,!0,{sourceMap:!1,shadowMode:!1})},"5d77":function(t,e,i){"use strict";i.r(e);var a=i("1dab"),n=i("b517");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("e62c");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"5d93":function(t,e,i){"use strict";i.r(e);var a=i("774b"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"5d9d":function(t,e,i){"use strict";var a=i("f4f4"),n=i.n(a);n.a},"5e0d":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,"\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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.evaluationList[data-v-b97c11e8]{background-color:#fff;overflow:hidden;margin:0rpx 24rpx 20rpx 24rpx;border-radius:16rpx}.evaluationList-header[data-v-b97c11e8]{padding:0 20rpx;margin-top:21rpx;margin-bottom:6rpx;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.evaluationList-header-left[data-v-b97c11e8]{}.header-left-text[data-v-b97c11e8]{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx}.evaluationList-header-right[data-v-b97c11e8]{display:flex;flex-direction:row;align-items:center}.header-right-text[data-v-b97c11e8]{font-weight:400;font-size:24rpx;color:#333;line-height:33rpx}.header-right-img[data-v-b97c11e8]{width:10rpx;height:19rpx;margin-left:10rpx;mode:widthFix}",""]),t.exports=e},"5e1f":function(t,e,i){var a=i("2156");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("ffe40a88",a,!0,{sourceMap:!1,shadowMode:!1})},"5e3b":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("6d9d")),r=a(i("1300")),s={data:function(){return{wxsProps:{}}},components:{tipsPopup:n.default,manHourCard:r.default}};e.default=s},"5e55":function(t,e,i){"use strict";var a=i("b832"),n=i.n(a);n.a},"5e85":function(t,e,i){"use strict";i.r(e);var a=i("967a"),n=i("db33");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("6aec");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"5a0b159a",null,!1,a["a"],void 0);e["default"]=o.exports},"5ea5":function(t,e,i){"use strict";var a=i("731b"),n=i.n(a);n.a},"5ed8":function(t,e,i){"use strict";i.r(e);var a=i("9134"),n=i("d436");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("ed0d");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"7f3c886c",null,!1,a["a"],void 0);e["default"]=o.exports},"5f19":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},t._l(t._$g(2,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("2-"+r,"sc"),attrs:{_i:"2-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("3-"+r,"sc"),attrs:{src:t._$g("3-"+r,"a-src"),_i:"3-"+r}}),i("uni-view",{staticClass:t._$g("4-"+r,"sc"),class:t._$g("4-"+r,"c"),attrs:{_i:"4-"+r}},[t._v(t._$g("4-"+r,"t0-0"))])],1)})),1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u7b5b\u9009\u9879")]),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},t._l(t._$g(8,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("8-"+r,"sc"),class:t._$g("8-"+r,"c"),attrs:{_i:"8-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(t._$g("8-"+r,"t0-0"))])})),1)],1),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u6ce8\u610f\uff1a")]),i("v-uni-text",{attrs:{_i:11}},[t._v(" \u5546\u5bb6\u53ef\u6309\u9700\u53d1\u5e03\u5de5\u4f4d\u51fa\u79df\u7684\u4fe1\u606f\u3002\u82e5\u4e0d\u540c\u670d\u52a1\uff08\u5982\u5feb\u6d17\u4e0e\u70eb\u53d1\uff09\u5de5\u4f4d\u4ef7\u683c\u5b58\u5728\u5dee\u5f02\uff0c\u9700\u5206\u522b\u53d1\u5e03\u5bf9\u5e94\u5de5\u4f4d\u51fa\u79df\u4fe1\u606f\uff1b\u82e5\u4ef7\u683c\u76f8\u540c\uff0c\u5219\u4ec5\u9700\u53d1\u5e03\u4e00\u6b21\u5de5\u4f4d\u51fa\u79df\u4fe1\u606f\uff0c\u5e76\u540c\u65f6\u52fe\u9009\u201c\u5feb\u6d17\u201d\u548c\u201c\u70eb\u53d1\u201d\u4e24\u9879\u670d\u52a1\u3002")])],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1)],1)},n=[]},"60ca":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"OrderCard",props:["dataItem","typeId"],data:function(){return{wxsProps:{}}},components:{}}},"60ce":function(t,e,i){"use strict";var a=i("b6c8"),n=i.n(a);n.a},"610d":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("c035")),r={data:function(){return{wxsProps:{}}},components:{addPop:n.default}};e.default=r},6125:function(t,e,i){"use strict";i.r(e);var a=i("4b51"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"618b":function(t,e,i){var a=i("7cc1");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("7cec9fb0",a,!0,{sourceMap:!1,shadowMode:!1})},"619c":function(t,e,i){var a=i("d9b3");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("b7650264",a,!0,{sourceMap:!1,shadowMode:!1})},"61f3":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._l(t._$g(3,"f"),(function(e,a,n,r){return[t._$g("4-"+r,"i")?i("v-uni-rich-text",{key:e["k0"],attrs:{nodes:t._$g("4-"+r,"a-nodes"),_i:"4-"+r}}):t._$g("5-"+r,"e")?i("uni-view",{key:e["k-1"],staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("6-"+r,"sc"),attrs:{src:t._$g("6-"+r,"a-src"),mode:"widthFix",_i:"6-"+r}})],1):t._e()]}))],2)],1)},r=[]},6204:function(t,e,i){"use strict";i.r(e);var a=i("f2c4"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},6217:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:t._$g(3,"a-src"),mode:"aspectFill",_i:3}}),i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v(t._$g(4,"t0-0"))])],1),i("v-uni-text",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v(t._$g(5,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("v-uni-image",{staticClass:t._$g(8,"sc"),attrs:{src:t._$g(8,"a-src"),mode:"heightFix",_i:8}}),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},t._l(5,(function(e,a,n,r){return i("v-uni-image",{key:e,staticClass:t._$g("10-"+r,"sc"),attrs:{src:t._$g("10-"+r,"a-src"),mode:"aspectFill",_i:"10-"+r}})})),1),i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v(t._$g(11,"t0-0")+"\u5206")])],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("v-uni-text",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v(" "+t._$g(13,"t0-0")+" "),t._$g(14,"i")?i("v-uni-text",{attrs:{_i:14}},[t._v(" "+t._$g(14,"t0-0")+" "),i("v-uni-text",{staticClass:t._$g(15,"sc"),attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v(" "+t._$g(15,"t0-0")+" "),i("v-uni-image",{staticClass:t._$g(16,"sc"),class:t._$g(16,"c"),attrs:{src:"/static/images/evaluate/open.png",mode:"widthFix",_i:16}})],1)],1):t._e()],1)],1),t._$g(17,"i")?i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},t._l(t._$g(18,"f"),(function(e,a,n,r){return i("v-uni-image",{key:e,staticClass:t._$g("18-"+r,"sc"),class:t._$g("18-"+r,"c"),attrs:{src:t._$g("18-"+r,"a-src"),mode:"aspectFill",_i:"18-"+r},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}})})),1):i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._l(t._$g(20,"f"),(function(e,a,n,r){return i("v-uni-image",{key:e,staticClass:t._$g("20-"+r,"sc"),class:t._$g("20-"+r,"c"),attrs:{src:t._$g("20-"+r,"a-src"),mode:"aspectFill",_i:"20-"+r},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}})})),t._$g(21,"i")?i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("v-uni-image",{staticClass:t._$g(22,"sc"),attrs:{src:"/static/images/evaluate/more.png",mode:"aspectFill",_i:22}}),i("v-uni-text",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v(t._$g(23,"t0-0"))])],1):t._e()],2)],1)],1)},n=[]},6248:function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("69ae");e=a(!1);var s=n(r);e.push([t.i,".container{position:relative;background-image:url("+s+');background-size:100% auto;background-position:top;background-repeat:no-repeat}.container .user-card{display:flex;align-items:center;justify-content:space-between;padding:40rpx 30rpx}.container .user-card .user-avatar{width:116rpx;height:116rpx;border-radius:50%;background:#fff;margin-right:21rpx}.container .user-card .user-avatar .user-avatar-img{width:108rpx;height:108rpx;border-radius:50%}.container .user-card .user-info .user-name{font-weight:500;font-size:36rpx;color:#333;line-height:50rpx;text-align:left;font-style:normal;margin-bottom:12rpx}.container .user-card .user-info .user-action{font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal}.container .user-card .user-info .user-action-icon{width:10rpx;height:18rpx;margin-left:8rpx}.container .user-card .more-detail{font-weight:400;font-size:26rpx;color:#666;line-height:32rpx;text-align:right;font-style:normal}.container .user-card .more-detail-icon{width:10rpx;height:20rpx;margin-left:9rpx}.container .switch-section{margin:0 auto;width:710rpx;height:80rpx;padding:15rpx 20rpx;box-sizing:border-box;background:#fff;border-radius:20rpx}.container .switch-section .switch-section-right{font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal}.container .switch-section .switch-section-right-icon{width:32rpx;height:32rpx;margin-right:14rpx}.container .switch-section .switch-box{height:52rpx;line-height:52rpx;border-radius:26rpx;background-color:#e8101e;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:0 8rpx 0 15rpx}.container .switch-section .switch-box .switch-yuan{width:38rpx;height:38rpx;border-radius:20rpx;background-color:#fff;margin-left:9rpx;margin-right:0rpx}.container .switch-section .switch-box .switch-text{font-weight:500;font-size:24rpx;color:#fff;line-height:33rpx;text-align:right;font-style:normal}.container .switch-section .disswitch{padding:0 12rpx 0 8rpx;background-color:#cecfd5}.container .switch-section .disswitch .switch-yuan{margin-left:0;margin-right:9rpx}.container .tab-container{margin-top:16rpx;padding:20rpx 30rpx;background-color:#fff}.container .tab-container .tab-main{display:flex;gap:70rpx;margin-bottom:24rpx}.container .tab-container .tab-main .tab-main-item{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal;padding-bottom:6rpx;position:relative;transition:color .2s ease}.container .tab-container .tab-main .tab-main-item:active{opacity:.8}.container .tab-container .tab-main .tab-main-item.active{color:#e8101e}.container .tab-container .tab-main .tab-main-item.active::after{content:"";position:absolute;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:28rpx;height:6rpx;background:#e8101e;border-radius:3rpx}.container .tab-container .tab-sub{display:flex;gap:18rpx;flex-wrap:nowrap;align-items:center}.container .tab-container .tab-sub .tab-sub-item{white-space:nowrap;padding:8rpx 20rpx;font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;background-color:#f3f5f6;border-radius:10rpx;transition:all .2s ease}.container .tab-container .tab-sub .tab-sub-item:active{opacity:.8}.container .tab-container .tab-sub .tab-sub-item.active{color:#e8101e;background-color:#fee5e7}.container-buttons{position:fixed;bottom:0rpx;left:0rpx;right:0;background:#fff}.container-button{margin:20rpx auto;width:710rpx;height:98rpx;background:#e8101e;border-radius:49rpx;font-weight:400;font-size:38rpx;color:#fff;text-align:left;font-style:normal}.common-list{background:#f5f5f5!important;border-radius:30rpx!important;padding-bottom:0rpx!important} .list-container{padding:0!important} .load-tips{padding-bottom:200rpx!important} .list-scroll{margin-top:0!important}.user-action-icon,\n.more-detail-icon{margin-left:4rpx!important}',""]),t.exports=e},6291:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$g(0,"i")?i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v(t._$g(4,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._t("default",null,{_i:8})],2)],1)],1),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(t._$g(10,"t0-0"))]),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(t._$g(11,"t0-0"))])],1)],1)],1):t._e()},n=[]},"62af":function(t,e,i){var a=i("e39d");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("669dc51e",a,!0,{sourceMap:!1,shadowMode:!1})},"62b9":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"class_select",props:["classId","secondClassId"],data:function(){return{wxsProps:{}}},components:{}}},"62cc":function(t,e,i){"use strict";var a=i("aa0e"),n=i.n(a);n.a},"62d5":function(t,e,i){"use strict";var a=i("eae5"),n=i.n(a);n.a},"62e1":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"noLogin",props:["tipText"],data:function(){return{wxsProps:{}}},components:{}}},6350:function(t,e,i){"use strict";var a=i("57e7"),n=i.n(a);n.a},6355:function(t,e,i){"use strict";var a=i("49f3"),n=i.n(a);n.a},"635f":function(t,e,i){"use strict";i.r(e);var a=i("e73f"),n=i("abbe");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("57ea");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"830157a2",null,!1,a["a"],void 0);e["default"]=o.exports},6401:function(t,e,i){"use strict";i.r(e);var a=i("03d4"),n=i("291d");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("a514");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"645f":function(t,e,i){"use strict";i.r(e);var a=i("8088"),n=i("7b56");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("6dde");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"4320523e",null,!1,a["a"],void 0);e["default"]=o.exports},6465:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uvIcon:i("08d8").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),class:t._$g(0,"c"),style:t._$g(0,"s"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._t("prefix",[t._$g(4,"i")?i("uv-icon",{attrs:{_i:4}}):t._e()],{_i:3})],2),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-input",{staticClass:t._$g(6,"sc"),style:t._$g(6,"s"),attrs:{type:t._$g(6,"a-type"),focus:t._$g(6,"a-focus"),cursor:t._$g(6,"a-cursor"),value:t._$g(6,"a-value"),"auto-blur":t._$g(6,"a-auto-blur"),disabled:t._$g(6,"a-disabled"),maxlength:t._$g(6,"a-maxlength"),placeholder:t._$g(6,"a-placeholder"),"placeholder-style":t._$g(6,"a-placeholder-style"),"placeholder-class":t._$g(6,"a-placeholder-class"),"confirm-type":t._$g(6,"a-confirm-type"),"confirm-hold":t._$g(6,"a-confirm-hold"),"hold-keyboard":t._$g(6,"a-hold-keyboard"),"cursor-spacing":t._$g(6,"a-cursor-spacing"),"adjust-position":t._$g(6,"a-adjust-position"),"selection-end":t._$g(6,"a-selection-end"),"selection-start":t._$g(6,"a-selection-start"),password:t._$g(6,"a-password"),ignoreCompositionEvent:t._$g(6,"a-ignoreCompositionEvent"),_i:6},on:{input:function(e){return t.$handleViewEvent(e)},blur:function(e){return t.$handleViewEvent(e)},focus:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)},keyboardheightchange:function(e){return t.$handleViewEvent(e)}}})],1),t._$g(7,"i")?i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uv-icon",{attrs:{_i:8}})],1):t._e(),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._t("suffix",[t._$g(11,"i")?i("uv-icon",{attrs:{_i:11}}):t._e()],{_i:10})],2)],1)],1)},r=[]},6473:function(t,e,i){"use strict";i.r(e);var a=i("3a9a"),n=i("cfa5");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("96d3");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"9c0445f4",null,!1,a["a"],void 0);e["default"]=o.exports},6488:function(t,e,i){var a=i("f6f1");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("b2a0328a",a,!0,{sourceMap:!1,shadowMode:!1})},6497:function(t,e,i){"use strict";i.r(e);var a=i("49b6d"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"64b2":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.uv-safe-bottom[data-v-30d33ae6]{width:100%}.uv-safe-area-inset-top[data-v-30d33ae6]{padding-top:0;padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.uv-safe-area-inset-right[data-v-30d33ae6]{padding-right:0;padding-right:constant(safe-area-inset-right);padding-right:env(safe-area-inset-right)}.uv-safe-area-inset-bottom[data-v-30d33ae6]{padding-bottom:0;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.uv-safe-area-inset-left[data-v-30d33ae6]{padding-left:0;padding-left:constant(safe-area-inset-left);padding-left:env(safe-area-inset-left)}',""]),t.exports=e},"64b7":function(t,e,i){"use strict";i.r(e);var a=i("d5dc"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},6529:function(t,e,i){"use strict";i.r(e);var a=i("d67e"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"652b":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".search[data-v-7e04185c]{z-index:2;padding:20rpx 30rpx;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;position:relative;background:linear-gradient(134deg,#f52540,#e8101e);-webkit-transform:translateY(0rpx);transform:translateY(0rpx)}.back[data-v-7e04185c]{width:16rpx;height:32rpx;\n\nmargin-right:20rpx}.search-right[data-v-7e04185c]{flex:1;width:100%;height:70rpx;background-color:#fff;border-radius:50rpx;position:relative;\n}.search-inp[data-v-7e04185c]{flex:1;height:70rpx;font-size:26rpx;color:#000;border-width:0;padding:0 136rpx 0 72rpx;\n}.search-icon[data-v-7e04185c]{width:34rpx;height:34rpx;position:absolute;left:20rpx;top:16rpx;\n}\n.btn_search[data-v-7e04185c]{width:112rpx;height:58rpx;border-radius:28rpx;display:flex;justify-content:center;align-items:center;background:linear-gradient(306deg,#e8101e,#fc563b);background-size:cover;color:#fff;font-size:26rpx;position:absolute;right:6rpx;top:6rpx}.inputPlaceholder[data-v-7e04185c]{font-weight:400;font-size:30rpx;color:#ccc;text-align:left;font-style:normal}.search-add[data-v-7e04185c]{display:flex;flex-direction:column;align-items:center;margin-left:15px;flex-wrap:wrap;justify-content:center}.add-icon[data-v-7e04185c]{width:38rpx;height:38rpx;margin-bottom:6rpx}.add-text[data-v-7e04185c]{font-weight:500;font-size:20rpx;color:#fff;line-height:28rpx;text-align:left;font-style:normal}",""]),t.exports=e},6539:function(t,e,i){"use strict";i.r(e);var a=i("880d"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},6549:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-swiper",{staticClass:t._$g(3,"sc"),attrs:{circular:!0,"indicator-dots":!1,autoplay:!1,interval:3e3,duration:500,"indicator-active-color":"#fff","indicator-color":"rgba(255, 255, 255, 0.6)",_i:3}},t._l(t._$g(4,"f"),(function(e,a,n,r){return i("v-uni-swiper-item",{key:e,staticClass:t._$g("4-"+r,"sc"),attrs:{_i:"4-"+r}},[i("v-uni-image",{staticClass:t._$g("5-"+r,"sc"),attrs:{src:t._$g("5-"+r,"a-src"),mode:"aspectFill",_i:"5-"+r}})],1)})),1)],1),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v(t._$g(9,"t0-0"))]),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\uffe5"+t._$g(10,"t0-0")+"/10\u5206\u949f")])],1)],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("v-uni-image",{staticClass:t._$g(13,"sc"),attrs:{src:t._$g(13,"a-src"),_i:13}}),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v(" "+t._$g(14,"t0-0")+" ")])],1),i("uni-view",{staticClass:t._$g(15,"sc"),staticStyle:{"margin-top":"37rpx"},attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(16,"sc"),attrs:{src:"/static/images/icons/address_gray.png",_i:16}}),i("v-uni-text",{attrs:{_i:17}},[t._v(t._$g(17,"t0-0")+t._$g(17,"t0-1"))])],1),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(19,"sc"),attrs:{src:"/static/images/icons/phone_gray.png",_i:19}}),i("v-uni-text",{attrs:{_i:20}},[t._v(t._$g(20,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v(" \u670d\u52a1\u8303\u56f4\u8be6\u60c5")]),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v(" "+t._$g(25,"t0-0")+": "+t._$g(25,"t0-1")+" ")]),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[t._v(" \u5907\u6ce8\uff1a\u53ef\u4ee5\u652f\u6301\u60a8\u505a\u4ee5\u4e0a\u7c7b\u76ee\u7684\u670d\u52a1\u3002 ")])],1)],1)],1),i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v(" \u5de5\u4f4d\u63cf\u8ff0")]),i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[t._v(" "+t._$g(31,"t0-0")+" ")])],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u7acb\u5373\u9884\u7ea6 ")])],1),i("uni-view",{staticStyle:{height:"166rpx"},attrs:{_i:34}})],1)},r=[]},6566:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uniPopup:i("c3a6").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-popup",{ref:"popup",staticStyle:{"z-index":"20000"},attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("v-uni-image",{staticClass:t._$g(2,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/693c54b5-f5a5-4aa0-8d7b-6123250f9839",_i:2},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._v(" \u8bf7\u9009\u62e9\u65f6\u95f4\u6bb5 ")]),i("v-uni-picker-view",{staticClass:t._$g(4,"sc"),attrs:{"indicator-style":t._$g(4,"a-indicator-style"),"immediate-change":!0,_i:4},on:{change:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(4,"v-model"),callback:function(){},expression:"pickerValue"}},[t._$g(5,"i")?i("v-uni-picker-view-column",{attrs:{_i:5}},t._l(t._$g(6,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("6-"+r,"sc"),attrs:{_i:"6-"+r}},[t._v(" "+t._$g("6-"+r,"t0-0")+"\u5e74 ")])})),1):t._e(),t._$g(7,"i")?i("v-uni-picker-view-column",{attrs:{_i:7}},t._l(t._$g(8,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("8-"+r,"sc"),attrs:{_i:"8-"+r}},[t._v(" "+t._$g("8-"+r,"t0-0")+"\u6708 ")])})),1):t._e(),t._$g(9,"i")?i("v-uni-picker-view-column",{attrs:{_i:9}},t._l(t._$g(10,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r}},[t._v(" "+t._$g("10-"+r,"t0-0")+"\u65e5 ")])})),1):t._e(),t._$g(11,"i")?i("v-uni-picker-view-column",{attrs:{_i:11}},t._l(t._$g(12,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("12-"+r,"sc"),attrs:{_i:"12-"+r}},[t._v(" "+t._$g("12-"+r,"t0-0")+"\u65f6 ")])})),1):t._e(),t._$g(13,"i")?i("v-uni-picker-view-column",{attrs:{_i:13}},t._l(t._$g(14,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[t._v(" "+t._$g("14-"+r,"t0-0")+"\u5206 ")])})),1):t._e()],1),i("uni-view",{staticClass:t._$g(15,"sc"),class:t._$g(15,"c"),attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u8ba4 "+t._$g(15,"t0-0")+" ")])],1)],1)},r=[]},6573:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:"/static/images/concact_icon.png",mode:"aspectFit",_i:3}}),i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v(t._$g(4,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v("\u5de5\u4f5c\u65f6\u95f4\uff1a9:00-18:00")])],1),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v("\u62e8\u6253\u7535\u8bdd")])],1),i("uni-view",{staticClass:t._$g(8,"sc"),class:t._$g(8,"c"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u5f53\u60a8\u9700\u8981\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0\u5ba2\u670d\u7684\u65f6\u5019\uff0c\u9700\u8981\u83b7\u53d6\u62e8\u6253\u7535\u8bdd\u6743\u9650\u3002")])],1)],1)},r=[]},"65b2":function(t,e,i){var a=i("db91");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("716b3abe",a,!0,{sourceMap:!1,shadowMode:!1})},"65f4":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-loading-icon",data:function(){return{wxsProps:{}}},components:{}}},"65f8":function(t,e,i){"use strict";i.r(e);var a=i("9de9"),n=i("84e6");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("85ed");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},6626:function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("fd8b");e=a(!1);var s=n(r);e.push([t.i,'.service-page[data-v-24353968]{padding-bottom:30rpx}.search-box[data-v-24353968]{width:100%;background-color:#fff;border-radius:8rpx;box-sizing:border-box;position:relative}.flexed[data-v-24353968]{position:-webkit-sticky;position:sticky;top:88rpx;left:0;z-index:999}.search-inp[data-v-24353968]{width:100%;height:68rpx;background-color:#f4f5f7;border-radius:34rpx;padding:0 70rpx 0 82rpx;font-size:28rpx;box-sizing:border-box}.placeholder[data-v-24353968]{font-weight:400;font-size:28rpx;color:#ccc;line-height:34rpx;text-align:left;font-style:normal}.search-icon[data-v-24353968]{width:34rpx;height:34rpx;position:absolute;left:30rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tab-container[data-v-24353968]{display:flex;flex-flow:row nowrap;align-items:center;justify-content:space-between;background-color:#fafafa;padding:30rpx 30rpx 20rpx 30rpx;box-sizing:border-box}.tab-item[data-v-24353968]{text-align:center;font-size:30rpx;color:#666;padding:16rpx 0;position:relative}.tab-item.active[data-v-24353968]{color:#000;font-weight:500}.tab-item.active[data-v-24353968]::after{content:"";position:absolute;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:32rpx;height:6rpx;background-color:#e8101e;border-radius:3rpx}.service-list[data-v-24353968]{margin:24rpx 24rpx 0}.load-more[data-v-24353968]{text-align:center;padding:20rpx 0;color:#999;font-size:24rpx}.service-item[data-v-24353968]{cursor:pointer;user-select:none;-webkit-user-select:none}.service-nothings[data-v-24353968]{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:280rpx 0 0}.nothings-text[data-v-24353968]{font-size:32rpx;font-weight:500;color:#999;text-align:center;font-style:italic}.add-btn[data-v-24353968]{height:140rpx}.service-image[data-v-24353968]{border:1rpx solid #eee}.flexed[data-v-24353968]{top:calc(var(--status-bar-height) + 88rpx)}.headerBox[data-v-24353968]{display:flex;align-items:center;gap:30rpx;background-color:#fff;padding:24rpx 30rpx}.headerBox .addBox[data-v-24353968]{flex-shrink:0;display:flex;flex-direction:column;gap:4rpx;align-items:center;padding-right:17rpx}.headerBox .addBox .addIcon[data-v-24353968]{width:42rpx;height:42rpx}.headerBox .addBox .addText[data-v-24353968]{color:#666;font-size:20rpx;position:relative}.headerBox .addBox .addText[data-v-24353968]::after{content:"";position:absolute;background-image:url('+s+");background-position:50%;background-repeat:no-repeat;background-size:cover;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);right:-17rpx;width:12rpx;height:8rpx}",""]),t.exports=e},"666e":function(t,e,i){"use strict";i.r(e);var a=i("bf63"),n=i("3650");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("87d9");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"ae19b9c2",null,!1,a["a"],void 0);e["default"]=o.exports},6670:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[t._$g(1,"i")?i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("v-uni-image",{staticClass:t._$g(2,"sc"),attrs:{src:t._$g(2,"a-src"),_i:2}}),i("v-uni-text",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._v(t._$g(3,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u670d\u52a1\u65f6\u6bb5:")]),i("v-uni-text",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v(t._$g(5,"t0-0"))])],1):i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v("\u8ba2\u5355\u7f16\u53f7\uff1a"+t._$g(7,"t0-0"))]),t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(" "+t._$g(8,"t0-0")+" ")]):t._e()],1),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(10,"sc"),attrs:{src:t._$g(10,"a-src"),mode:"aspectFill",_i:10}}),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("uni-view",{attrs:{_i:12}},[i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._$g(14,"i")?i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v(" "+t._$g(14,"t0-0")+" ")]):t._e(),i("v-uni-text",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v(" "+t._$g(15,"t0-0")+" ")])],1),t._$g(16,"i")?i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._v("\u4e0b\u5355\u65f6\u95f4: "+t._$g(16,"t0-0"))]):t._e()],1),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._$g(18,"i")?i("v-uni-text",{attrs:{_i:18}},[t._v(t._$g(18,"t0-0"))]):t._e(),t._v("\xa5"),i("v-uni-text",{staticStyle:{"font-size":"34rpx"},attrs:{_i:19}},[t._v(t._$g(19,"t0-0"))])],1)],1)],1),t._$g(20,"i")?i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v("\u4e0a\u95e8\u5730\u5740\uff1a"+t._$g(20,"t0-0"))]):t._e(),t._$g(21,"i")?i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._$g(22,"i")?i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u53d6\u6d88\u8ba2\u5355 ")]):t._e(),t._$g(23,"i")?i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u5f00\u59cb\u670d\u52a1")]):t._e(),t._$g(24,"i")?i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u670d\u52a1\u5b8c\u6210")]):t._e()],1):t._e()],1)},n=[]},"669f":function(t,e,i){"use strict";i.r(e);var a=i("f1c3"),n=i("3d38");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("9be7");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"21af15cc",null,!1,a["a"],void 0);e["default"]=o.exports},"66cc":function(t,e,i){var a=i("25ed");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("adb086e4",a,!0,{sourceMap:!1,shadowMode:!1})},"66d5":function(t,e,i){"use strict";var a=i("373a"),n=i.n(a);n.a},"66f5":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-scroll-view",{staticClass:t._$g(3,"sc"),attrs:{"scroll-x":!0,"show-scrollbar":!1,_i:3}},[i("uni-view",{staticStyle:{"padding-left":"20rpx"},attrs:{_i:4}},t._l(t._$g(5,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("5-"+r,"sc"),class:t._$g("5-"+r,"c"),attrs:{_i:"5-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("5-"+r,"t0-0")+" ")])})),1)],1),i("v-uni-scroll-view",{staticClass:t._$g(6,"sc"),attrs:{"scroll-x":!0,"show-scrollbar":!1,_i:6}},t._l(t._$g(7,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("7-"+r,"sc"),class:t._$g("7-"+r,"c"),attrs:{_i:"7-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("7-"+r,"t0-0")+" ")])})),1)],1),i("CommonList",{ref:"groupRef",attrs:{_i:8},scopedSlots:t._u([{key:"listData",fn:function(e,a,n){e.list;return t._l(a._$g("10-"+n,"f"),(function(e,r,s,o){return i("uni-view",{key:e,staticClass:a._$g("10-"+n+o,"sc"),attrs:{_i:"10-"+n+o}},[i("OrderCard",{attrs:{_i:"11-"+n+o},on:{cancel:function(e){return t.$handleViewEvent(e)},start:function(e){return t.$handleViewEvent(e)},done:function(e){return t.$handleViewEvent(e)},goOrderDetail:function(e){return t.$handleViewEvent(e)}}})],1)}))}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"13-"+a}})]}}])}),i("serviceCodeInput",{attrs:{_i:14},on:{close:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}}})],1)},r=[]},6734:function(t,e,i){var a=i("ed75");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("291cf732",a,!0,{sourceMap:!1,shadowMode:!1})},6738:function(t,e,i){var a=i("d2cc");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("239e4648",a,!0,{sourceMap:!1,shadowMode:!1})},6781:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default,uniPopup:i("c3a6").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u603b\u91d1\u989d "),i("v-uni-text",{attrs:{_i:5}},[t._v("(\u5143)")])],1),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("v-uni-image",{staticClass:t._$g(7,"sc"),attrs:{src:"/static/images/wallet/wallet.png",_i:7}}),t._v(" \u603b\u91d1\u989d=\u53ef\u63d0\u73b0\u91d1\u989d+\u63d0\u73b0\u4e2d\u91d1\u989d ")],1)],1),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(" "+t._$g(8,"t0-0")+" ")]),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("uni-view",{staticClass:t._$g(10,"sc"),staticStyle:{width:"50%"},attrs:{_i:10}},[i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u53ef\u63d0\u73b0"),i("v-uni-text",{attrs:{_i:12}},[t._v("(\u5143)")])],1),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v(t._$g(13,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v(" \u63d0\u73b0\u4e2d"),i("v-uni-text",{attrs:{_i:16}},[t._v("(\u5143)")]),i("v-uni-image",{staticClass:t._$g(17,"sc"),attrs:{src:"/static/images/wallet/tip.png",_i:17},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v(" "+t._$g(18,"t0-0")+" ")])],1)],1),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53bb\u63d0\u73b0")])],1),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("v-uni-scroll-view",{staticClass:t._$g(21,"sc"),attrs:{"scroll-x":!0,"show-scrollbar":!1,_i:21}},[i("uni-view",{class:t._$g(22,"c"),attrs:{_i:22},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u4f59\u989d\u53d8\u52a8 ")]),i("uni-view",{class:t._$g(23,"c"),attrs:{_i:23},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u63d0\u73b0\u8bb0\u5f55 ")])],1),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("CommonList",{ref:"groupRef",attrs:{_i:25},scopedSlots:t._u([{key:"listData",fn:function(e,a,n){e.list;return[i("uni-view",{staticClass:a._$g("27-"+n,"sc"),attrs:{_i:"27-"+n}},[t._l(a._$g("28-"+n,"f"),(function(e,r,s,o){return a._$g("28-"+n+o,"i")?i("uni-view",{key:e,staticClass:a._$g("28-"+n+o,"sc"),style:a._$g("28-"+n+o,"s"),attrs:{_i:"28-"+n+o}},[i("uni-view",{staticClass:a._$g("29-"+n+o,"sc"),attrs:{_i:"29-"+n+o}},[t._v(a._$g("29-"+n+o,"t0-0"))]),i("uni-view",{staticClass:a._$g("30-"+n+o,"sc"),attrs:{_i:"30-"+n+o}},[i("uni-view",{staticClass:a._$g("31-"+n+o,"sc"),attrs:{_i:"31-"+n+o}},[t._v(a._$g("31-"+n+o,"t0-0"))]),i("uni-view",{staticClass:a._$g("32-"+n+o,"sc"),attrs:{_i:"32-"+n+o}},[t._v(a._$g("32-"+n+o,"t0-0")+a._$g("32-"+n+o,"t0-1")+" ")])],1),i("uni-view",{staticClass:a._$g("33-"+n+o,"sc"),attrs:{_i:"33-"+n+o}},[i("uni-view",{staticClass:a._$g("34-"+n+o,"sc"),attrs:{_i:"34-"+n+o}},[t._v(a._$g("34-"+n+o,"t0-0"))]),i("uni-view",{staticClass:a._$g("35-"+n+o,"sc"),attrs:{_i:"35-"+n+o}},[t._v("\u4f59\u989d\uff1a"+a._$g("35-"+n+o,"t0-0"))])],1)],1):t._e()})),t._l(a._$g("36-"+n,"f"),(function(e,r,s,o){return a._$g("36-"+n+o,"i")?i("uni-view",{key:e,staticClass:a._$g("36-"+n+o,"sc"),style:a._$g("36-"+n+o,"s"),attrs:{_i:"36-"+n+o},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:a._$g("37-"+n+o,"sc"),attrs:{_i:"37-"+n+o}},[t._v(" "+a._$g("37-"+n+o,"t0-0")+" ")]),i("uni-view",{staticClass:a._$g("38-"+n+o,"sc"),attrs:{_i:"38-"+n+o}},[i("uni-view",{staticClass:a._$g("39-"+n+o,"sc"),attrs:{_i:"39-"+n+o}},[t._v("\u63d0\u73b0\u72b6\u6001")]),i("uni-view",{staticClass:a._$g("40-"+n+o,"sc"),attrs:{_i:"40-"+n+o}},[t._v(a._$g("40-"+n+o,"t0-0"))])],1),i("uni-view",{staticClass:a._$g("41-"+n+o,"sc"),attrs:{_i:"41-"+n+o}},[i("uni-view",{staticClass:a._$g("42-"+n+o,"sc"),attrs:{_i:"42-"+n+o}},[t._v(a._$g("42-"+n+o,"t0-0"))]),i("uni-view",{staticClass:a._$g("43-"+n+o,"sc"),attrs:{_i:"43-"+n+o}},[t._v("\u91d1\u989d\uff1a"+a._$g("43-"+n+o,"t0-0"))])],1)],1):t._e()}))],2)]}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"45-"+a}})]}}])})],1)],1),i("uni-popup",{ref:"popup",attrs:{_i:46}},[i("uni-view",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[i("uni-view",{staticClass:t._$g(48,"sc"),attrs:{_i:48}},[t._v(" \u6e29\u99a8\u63d0\u793a ")]),i("uni-view",{staticClass:t._$g(49,"sc"),attrs:{_i:49}},[t._v(" \u63d0\u4ea4\u7533\u8bf7\u540e\uff0c\u63d0\u73b0\u7684\u91d1\u989d\u5c06\u4f1a\u5728\u6700\u591a5\u4e2a\u5de5\u4f5c\u65e5\u5185\u5230\u8d26 ")]),i("uni-view",{staticClass:t._$g(50,"sc"),attrs:{_i:50},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u597d\u7684 ")])],1)],1),i("cashPop",{attrs:{_i:51},model:{value:t._$g(51,"v-model"),callback:function(){},expression:"popShow"}})],1)},r=[]},"67bf":function(t,e,i){"use strict";var a=i("dfd8"),n=i.n(a);n.a},6803:function(t,e,i){"use strict";i.r(e);var a=i("ccb7"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"680c":function(t,e,i){t.exports=i.p+"static/images/background/bj.png"},"680c9":function(t,e,i){"use strict";var a=i("aa20"),n=i.n(a);n.a},"681e":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.promotion .promotion-search{background:linear-gradient(134deg,#f52540,#e8101e);box-sizing:border-box;padding:31rpx 20rpx 60rpx 20rpx}.promotion .promotion-search .promotion-add{display:flex;flex-wrap:nowrap;align-items:center}.promotion .promotion-search .promotion-add .promotion-add-text{font-weight:400;font-size:30rpx;color:#fff;text-align:left;font-style:normal;margin:0 10rpx;white-space:nowrap}.promotion .promotion-search .promotion-add .promotion-add-img1{width:36rpx;height:36rpx}.promotion .promotion-search .promotion-add .promotion-add-img2{width:26rpx;height:26rpx}.promotion .promotion-search .uv-search{margin-top:20rpx!important}.promotion .promotion-search .uv-search .uni-input-placeholder{color:#ccc!important;font-size:28rpx}.promotion .promotion-search .uv-search .search_icon{width:35rpx;height:34rpx}.promotion .promotion-content{-webkit-transform:translateY(-20rpx);transform:translateY(-20rpx)}.promotion .promotion-content .promotion-tabs{padding:20rpx 110rpx;background:#f5f5f5;border-radius:30rpx 30rpx 0rpx 0rpx;display:flex;align-items:center;justify-content:space-between}.promotion .promotion-content .promotion-tabs .promotion-tabs-tab{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal;padding-bottom:11rpx;position:relative}.promotion .promotion-content .promotion-tabs .promotion-tabs-tab.active{color:#e8101e}.promotion .promotion-content .promotion-tabs .promotion-tabs-tab.active::after{content:"";position:absolute;width:43rpx;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);bottom:0rpx;height:6rpx;background:linear-gradient(306deg,#fc437c,#f25988);border-radius:3rpx}.promotion .promotion-content .promotion-list .promotion-item{padding:20rpx;background:#fff;border-radius:20rpx;margin-bottom:20rpx;position:relative}.promotion .promotion-content .promotion-list .promotion-item .promotion-item-tip{width:100%;font-weight:400;font-size:22rpx;color:#e8101e;line-height:30rpx;text-align:left;font-style:normal}.promotion .promotion-content .promotion-list .promotion-item .promotion-item-Effect{position:absolute;right:0;top:0;width:165rpx;height:49rpx}.promotion .promotion-content .promotion-list .promotion-item .promotion-item-heard{display:flex;flex-wrap:wrap;gap:20rpx;padding-bottom:20rpx;border-bottom:1rpx solid #f5f5f5}.promotion .promotion-content .promotion-list .promotion-item .promotion-item-heard .promotion-item-heard-photo{width:186rpx;height:186rpx;border-radius:16rpx}.promotion .promotion-content .promotion-list .promotion-item .promotion-item-heard .promotion-item-heard-right .promotion-item-heard-right-text1{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal;margin-bottom:10rpx;margin-top:-6rpx;width:300rpx}.promotion .promotion-content .promotion-list .promotion-item .promotion-item-heard .promotion-item-heard-right .promotion-item-heard-right-text2{margin-bottom:11rpx;padding:2rpx 8rpx;border-radius:6rpx;width:-webkit-fit-content;width:fit-content;border:1rpx solid rgba(232,16,30,.2);font-weight:400;font-size:24rpx;color:#e8101e;line-height:33rpx;text-align:left;font-style:normal}.promotion .promotion-content .promotion-list .promotion-item .promotion-item-heard .promotion-item-heard-right .promotion-item-heard-right-text3{padding:3rpx 8rpx;border-radius:6rpx;width:-webkit-fit-content;width:fit-content;border:1rpx solid rgba(182,115,43,.2);font-weight:400;font-size:24rpx;color:#b6732b;line-height:33rpx;text-align:left;font-style:normal;margin-bottom:17rpx}.promotion .promotion-content .promotion-list .promotion-item .promotion-item-heard .promotion-item-heard-right .promotion-item-heard-right-text4{font-family:DINPro;font-weight:500;font-size:36rpx;color:#e8101e;line-height:46rpx;text-align:left;font-style:normal;margin-top:-6rpx}.promotion .promotion-content .promotion-list .promotion-item .promotion-item-bottom{display:flex;justify-content:flex-end;gap:18rpx;margin-top:30rpx}.promotion .promotion-content .promotion-list .promotion-item .promotion-item-bottom .promotion-item-bottom-btn{width:133rpx;height:60rpx;border-radius:32rpx;border:2rpx solid #979797;font-weight:400;font-size:24rpx;color:#333;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:center}.promotion .promotion-content .common-list{background-color:#fafafa;padding:0}.promotion .promotion-content .common-list .list-container{padding:0 20rpx}.modal-buttons{padding:0 54rpx;display:flex;align-items:center;justify-content:space-between;margin-bottom:60rpx;margin-top:0rpx}.modal-buttons .btnModal{width:246rpx;height:80rpx;border-radius:40rpx;font-weight:500;font-size:28rpx;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.modal-buttons .closeModal{border:2rpx solid #e8101e;color:#e8101e}.modal-buttons .sureModal{background:#e8101e;border-radius:40rpx;color:#fff} .uv-modal__title{padding-top:50rpx;font-weight:500;font-size:32rpx;color:#333!important;line-height:45rpx;text-align:center;font-style:normal} .uv-modal__content{padding:30rpx 32rpx 30rpx 30rpx;font-weight:400;font-size:30rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal}',""]),t.exports=e},"688d":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("680c");e=a(!1);var s=n(r);e.push([t.i,'body{background-color:#fff}.my-page{position:relative;margin-bottom:120rpx}.my-page::before{content:"";position:fixed;top:0;left:0;right:0;height:676rpx!important;background-image:url('+s+");background-size:cover;background-position:top;background-repeat:no-repeat;z-index:1}.user-info{padding:0 24rpx;position:relative;z-index:99;margin-top:32rpx}.user-header{display:flex;align-items:center;margin-bottom:48rpx}.avatar-wrap{width:110rpx;height:110rpx;border-radius:64rpx;overflow:hidden;margin-right:24rpx;border:4rpx solid #fff}.avatar{width:100%;height:100%}.user-detail{flex:1}.name-wrap{display:flex;flex-flow:column nowrap;justify-content:center;align-items:flex-start}.name{font-weight:500;font-size:34rpx;color:#333;line-height:56rpx;text-align:left;font-style:normal}.verified{width:130rpx;height:44rpx;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;border:1rpx solid #e8101e;background-color:#fff1f1;border-radius:22rpx;box-sizing:border-box}.verified-no{width:130rpx;height:44rpx;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;border:1rpx solid #666;border-radius:22rpx;box-sizing:border-box}.verified-text{font-size:24rpx;color:#e8101e}.verified-text.no{color:#666}.sign-icon{width:24rpx;height:24rpx;margin-right:6rpx}.edit-profile{display:flex;align-items:center}.edit-profile uni-image{width:12rpx;height:24rpx}.edit-text{font-size:28rpx;line-height:28rpx;margin-right:16rpx;color:#666}.arrow{font-size:28rpx;color:#666}.amount-img{width:30rpx;height:30rpx;margin-right:8rpx}.amount-box{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;background:rgba(252,67,124,.1);border-radius:30rpx;padding:10rpx 16rpx}.amount-lable{font-weight:500;font-size:26rpx;color:#666;line-height:30rpx;text-align:left;font-style:normal}.amount-text{font-weight:500;font-size:26rpx;color:#666;line-height:30rpx;text-align:left;font-style:normal;color:#e8101e}.function-list{background:#fff;border-radius:20rpx;padding:0 24rpx;box-shadow:0 0 12rpx 0 rgba(0,0,0,.05)}.function-item{display:flex;justify-content:space-between;align-items:center;height:92rpx;border-bottom:1rpx solid rgba(0,0,0,.05)}.function-item:last-child{border-bottom:none}.function-text{font-size:28rpx;color:#232220;font-weight:500}.module{margin:0;border-radius:24rpx;padding:24rpx;margin-bottom:24rpx}.module-cont{display:flex;flex-flow:row wrap;justify-content:space-between;align-items:center}.module-cont-img{width:310rpx;height:120rpx;margin-top:23rpx}.module-item{width:310rpx;height:120rpx;border-radius:16rpx;border:2rpx solid #f0eeee;box-sizing:border-box;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;padding:24rpx 22rpx 24rpx 24rpx;margin-top:24rpx}.module-order .module-item{justify-content:flex-start}.module-lable{font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:left;font-style:normal}.module-banner{width:702rpx;margin-bottom:24rpx}.module-left{display:flex;flex-flow:column nowrap;justify-content:center;align-items:flex-start}.module-tit{font-weight:500;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;margin-bottom:4rpx}.module-des{font-weight:500;font-size:20rpx;color:#999;line-height:28rpx;text-align:left;font-style:normal}.module-icon{width:68rpx;height:68rpx}.module-order .module-icon{margin-right:28rpx}.right_gray{width:14rpx;height:26rpx}",""]),t.exports=e},"68b9":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,"\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\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\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\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\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\n\n\n\n\n\n\n\n\n\n\n\n.evaluation-detail[data-v-3e19644d]{padding:30rpx 20rpx;border-radius:16rpx;background-color:#fff;border-bottom:2rpx solid #fafafa;flex:1}.user-section[data-v-3e19644d]{display:flex;flex-direction:row;align-items:center;justify-content:space-between}.user-info[data-v-3e19644d]{display:flex;flex-direction:row;align-items:center}.avatar[data-v-3e19644d]{width:62rpx;height:62rpx;border-radius:50%;margin-right:6rpx}.username[data-v-3e19644d]{font-weight:500;font-size:24rpx;color:#333;line-height:33rpx}.time[data-v-3e19644d]{font-size:24rpx;color:#999;margin-top:4rpx}.user-contant[data-v-3e19644d]{padding-left:70rpx}.rating-header[data-v-3e19644d]{display:flex;flex-direction:row;align-items:center;margin-top:20rpx}.tag[data-v-3e19644d]{height:40rpx;margin-right:10rpx}.stars[data-v-3e19644d]{display:flex;flex-direction:row;align-items:center;margin-right:10rpx}.star-icon[data-v-3e19644d]{width:24rpx;height:24rpx;margin-right:2rpx}.score[data-v-3e19644d]{font-weight:400;font-size:26rpx;color:#e8101e;line-height:37rpx}.comment[data-v-3e19644d]{margin-top:12rpx}.comment-text[data-v-3e19644d]{font-weight:400;font-size:26rpx;color:#333;line-height:46rpx}.photos[data-v-3e19644d]{display:flex;flex-direction:row;flex-wrap:wrap;margin-top:20rpx;position:relative}.photo[data-v-3e19644d]{width:194rpx;height:194rpx;border-radius:6rpx;margin-right:1.1%;margin-bottom:6rpx}.photo-third[data-v-3e19644d]{margin-right:0}.more[data-v-3e19644d]{display:flex;flex-direction:row;align-items:center;justify-content:center;width:59rpx;height:28rpx;background:rgba(51,51,51,.4);border-radius:14rpx;position:absolute;bottom:10rpx;right:10rpx}.more-img[data-v-3e19644d]{width:23rpx;height:17rpx;margin-right:5rpx}.more-text[data-v-3e19644d]{font-weight:400;font-size:22rpx;color:#fff;line-height:30rpx}.foot-btn[data-v-3e19644d]{font-weight:500;font-size:24rpx;color:#0751ff;line-height:33rpx}.foot-btn-img[data-v-3e19644d]{width:18rpx;height:18rpx;margin-left:10rpx}.btnImg2[data-v-3e19644d]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}",""]),t.exports=e},"68e0":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},t._l(t._$g(2,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("2-"+r,"sc"),attrs:{_i:"2-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("3-"+r,"sc"),attrs:{src:t._$g("3-"+r,"a-src"),_i:"3-"+r}}),i("uni-view",{staticClass:t._$g("4-"+r,"sc"),class:t._$g("4-"+r,"c"),attrs:{_i:"4-"+r}},[t._v(t._$g("4-"+r,"t0-0"))])],1)})),1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u7b5b\u9009\u9879")]),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},t._l(t._$g(8,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("8-"+r,"sc"),class:t._$g("8-"+r,"c"),attrs:{_i:"8-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(t._$g("8-"+r,"t0-0"))])})),1)],1),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u6ce8\u610f\uff1a")]),i("v-uni-text",{attrs:{_i:11}},[t._v(" \u624b\u827a\u4eba\u53ef\u6309\u9700\u53d1\u5e03\u5de5\u65f6\u7684\u4ef7\u683c\u3002\u82e5\u4e0d\u540c\u670d\u52a1\uff08\u5982\u5feb\u6d17\u4e0e\u70eb\u53d1\uff09\u5de5\u65f6\u4ef7\u683c\u5b58\u5728\u5dee\u5f02\uff0c\u9700\u5206\u522b\u53d1\u5e03\u5bf9\u5e94\u5de5\u65f6\u670d\u52a1\u4fe1\u606f\uff1b\u82e5\u4ef7\u683c\u76f8\u540c\uff0c\u5219\u4ec5\u9700\u53d1\u5e03\u4e00\u6b21\u5de5\u65f6\u670d\u52a1\u4fe1\u606f\uff0c\u5e76\u540c\u65f6\u52fe\u9009\u201c\u5feb\u6d17\u201d\u548c\u201c\u70eb\u53d1\u201d\u4e24\u9879\u670d\u52a1\u3002")])],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1)],1)},n=[]},"68ee":function(t,e,i){"use strict";i.r(e);var a=i("a572"),n=i("3144");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("b85e");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"c0b161f4",null,!1,a["a"],void 0);e["default"]=o.exports},6917:function(t,e,i){"use strict";i.r(e);var a=i("a4bd"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},6924:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}}),i("v-uni-text",{attrs:{_i:3}},[t._v("\u95e8\u5e97\u4fe1\u606f")])],1),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u5e97\u94falogo")]),i("v-uni-image",{staticClass:t._$g(7,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25bd7f38-1a3e-4282-84ea-190d7f820108",mode:"aspectFit",_i:7},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g(9,"i")?i("v-uni-image",{staticClass:t._$g(9,"sc"),attrs:{src:t._$g(9,"a-src"),mode:"aspectFill",_i:9}}):i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("v-uni-image",{staticClass:t._$g(11,"sc"),attrs:{src:"/static/images/upload-img.png",mode:"aspectFit",_i:11}})],1)],1)],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("v-uni-text",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v("\u5e97\u94fa\u540d\u79f0")]),i("v-uni-image",{staticClass:t._$g(15,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25bd7f38-1a3e-4282-84ea-190d7f820108",mode:"aspectFit",_i:15},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("v-uni-input",{staticClass:t._$g(16,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u8425\u4e1a\u6267\u7167\u7684\u5e97\u94fa\u540d\u79f0","placeholder-class":"placeholder",_i:16},on:{input:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(16,"v-model"),callback:function(){},expression:"formData.name"}})],1),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\u8425\u4e1a\u65f6\u95f4")]),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("v-uni-text",{class:t._$g(20,"c"),attrs:{_i:20}},[t._v(" "+t._$g(20,"t0-0")+" ")]),i("v-uni-image",{staticClass:t._$g(21,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dccc4513-377c-4bfa-9fd2-a5cfdb9798f3",mode:"aspectFit",_i:21}})],1)],1),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v("\u670d\u52a1\u6280\u80fd\uff08\u591a\u9009\uff09")]),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[t._$g(25,"i")?i("v-uni-text",{class:t._$g(25,"c"),attrs:{_i:25}},[t._v(" "+t._$g(25,"t0-0")+" ")]):t._e(),i("v-uni-image",{staticClass:t._$g(26,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dccc4513-377c-4bfa-9fd2-a5cfdb9798f3",mode:"aspectFit",_i:26}})],1)],1),i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[t._v("\u95e8\u5e97\u6240\u5728\u5730\uff1a")]),i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[i("v-uni-text",{class:t._$g(30,"c"),attrs:{_i:30}},[t._v(" "+t._$g(30,"t0-0")+" ")]),i("v-uni-image",{staticClass:t._$g(31,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dccc4513-377c-4bfa-9fd2-a5cfdb9798f3",mode:"aspectFit",_i:31}})],1)],1),i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[t._v("\u95e8\u5e97\u8be6\u7ec6\u5730\u5740\uff1a")]),i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[i("v-uni-text",{class:t._$g(35,"c"),attrs:{_i:35}},[t._v(" "+t._$g(35,"t0-0")+" ")]),i("v-uni-image",{staticClass:t._$g(36,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dccc4513-377c-4bfa-9fd2-a5cfdb9798f3",mode:"aspectFit",_i:36}})],1)],1),i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}}),i("v-uni-text",{attrs:{_i:39}},[t._v("\u5176\u4ed6\u4fe1\u606f")])],1),i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[i("uni-view",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[i("v-uni-text",{staticClass:t._$g(43,"sc"),attrs:{_i:43}},[t._v("\u9080\u8bf7\u7801")])],1),i("v-uni-input",{staticClass:t._$g(44,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u9080\u8bf7\u7801","placeholder-class":"placeholder",_i:44},on:{input:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(44,"v-model"),callback:function(){},expression:"formData.invite_code_other"}})],1),i("uni-view",{staticClass:t._$g(45,"sc"),attrs:{_i:45}}),i("uni-view",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[t._$g(47,"i")?i("v-uni-text",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[t._v(" \u8bf7\u586b\u5199\u9080\u8bf7\u4eba\u7684\u9080\u8bf7\u7801\uff0c\u82e5\u6ca1\u6709\u9080\u8bf7\u4eba\u8bf7\u586b\u519913131313 ")]):t._$g(48,"e")?i("uni-view",{staticClass:t._$g(48,"sc"),attrs:{_i:48}},[i("v-uni-text",{attrs:{_i:49}},[t._v("\u9a8c\u8bc1\u4e2d...")])],1):t._$g(50,"e")?i("uni-view",{staticClass:t._$g(50,"sc"),class:t._$g(50,"c"),attrs:{_i:50}},[i("v-uni-text",{attrs:{_i:51}},[t._v("\u9080\u8bf7\u7801\u65e0\u6548")])],1):t._$g(52,"e")?i("uni-view",{staticClass:t._$g(52,"sc"),attrs:{_i:52}},[t._v(" \u8bf7\u586b\u5199\u9080\u8bf7\u4eba\u7684\u9080\u8bf7\u7801\uff0c\u82e5\u6ca1\u6709\u9080\u8bf7\u4eba\u8bf7\u586b\u519913131313 ")]):t._$g(53,"e")?i("uni-view",{staticClass:t._$g(53,"sc"),attrs:{_i:53}},[i("v-uni-text",{staticClass:t._$g(54,"sc"),attrs:{_i:54}},[t._v("\u9080\u8bf7\u4eba\uff1a")]),i("v-uni-text",{staticClass:t._$g(55,"sc"),attrs:{_i:55}},[t._v(t._$g(55,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(56,"sc"),attrs:{_i:56}},[t._v("/")]),i("v-uni-text",{staticClass:t._$g(57,"sc"),attrs:{_i:57}},[t._v(t._$g(57,"t0-0"))])],1):i("uni-view",{staticClass:t._$g(58,"sc"),class:t._$g(58,"c"),attrs:{_i:58}},[i("v-uni-text",{attrs:{_i:59}},[t._v("\u9080\u8bf7\u7801\u65e0\u6548")])],1)],1)],1),i("uni-view",{staticClass:t._$g(60,"sc"),attrs:{_i:60},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(61,"sc"),attrs:{_i:61}},[t._v("\u4e13\u4e1a\u7ecf\u9a8c\uff1a")]),i("uni-view",{staticClass:t._$g(62,"sc"),attrs:{_i:62}},[i("v-uni-text",{class:t._$g(63,"c"),attrs:{_i:63}},[t._v(" "+t._$g(63,"t0-0")+" ")]),i("v-uni-image",{staticClass:t._$g(64,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dccc4513-377c-4bfa-9fd2-a5cfdb9798f3",mode:"aspectFit",_i:64}})],1)],1),i("uni-view",{staticClass:t._$g(65,"sc"),class:t._$g(65,"c"),attrs:{_i:65}},[i("uni-view",{staticClass:t._$g(66,"sc"),attrs:{_i:66},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(67,"sc"),attrs:{_i:67}},[i("uni-view",{staticClass:t._$g(68,"sc"),attrs:{_i:68}},[i("v-uni-text",{staticClass:t._$g(69,"sc"),attrs:{_i:69}},[t._v("\u9009\u62e9\u670d\u52a1\u6280\u80fd")]),i("v-uni-text",{staticClass:t._$g(70,"sc"),attrs:{_i:70},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\xd7")])],1),i("uni-view",{staticClass:t._$g(71,"sc"),attrs:{_i:71}},[i("uni-view",{staticClass:t._$g(72,"sc"),attrs:{_i:72}},t._l(t._$g(73,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("73-"+r,"sc"),attrs:{_i:"73-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("74-"+r,"sc"),class:t._$g("74-"+r,"c"),attrs:{_i:"74-"+r}},[t._$g("75-"+r,"i")?i("v-uni-image",{staticClass:t._$g("75-"+r,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/66325904-4603-48fd-b03b-90c684af96e9",mode:"aspectFit",_i:"75-"+r}}):t._e()],1),i("v-uni-text",{staticClass:t._$g("76-"+r,"sc"),attrs:{_i:"76-"+r}},[t._v(t._$g("76-"+r,"t0-0"))])],1)})),1)],1),i("uni-view",{staticClass:t._$g(77,"sc"),attrs:{_i:77}},[i("uni-view",{staticClass:t._$g(78,"sc"),attrs:{_i:78},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(79,"sc"),attrs:{_i:79}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(80,"sc"),attrs:{_i:80},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(81,"sc"),attrs:{_i:81}},[t._v("\u786e\u5b9a")])],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(82,"sc"),class:t._$g(82,"c"),attrs:{_i:82}},[i("uni-view",{staticClass:t._$g(83,"sc"),attrs:{_i:83},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(84,"sc"),attrs:{_i:84}},[i("uni-view",{staticClass:t._$g(85,"sc"),attrs:{_i:85}},[i("v-uni-text",{staticClass:t._$g(86,"sc"),attrs:{_i:86}},[t._v("\u9009\u62e9\u6240\u5728\u5730")]),i("v-uni-text",{staticClass:t._$g(87,"sc"),attrs:{_i:87},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\xd7")])],1),i("uni-view",{staticClass:t._$g(88,"sc"),attrs:{_i:88}},[i("v-uni-picker-view",{staticClass:t._$g(89,"sc"),attrs:{"indicator-style":t._$g(89,"a-indicator-style"),value:t._$g(89,"a-value"),_i:89},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-picker-view-column",{attrs:{_i:90}},t._l(t._$g(91,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("91-"+r,"sc"),attrs:{_i:"91-"+r}},[t._v(" "+t._$g("91-"+r,"t0-0")+" ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:92}},t._l(t._$g(93,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("93-"+r,"sc"),attrs:{_i:"93-"+r}},[t._v(" "+t._$g("93-"+r,"t0-0")+" ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:94}},t._l(t._$g(95,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("95-"+r,"sc"),attrs:{_i:"95-"+r}},[t._v(" "+t._$g("95-"+r,"t0-0")+" ")])})),1)],1)],1),i("uni-view",{staticClass:t._$g(96,"sc"),attrs:{_i:96}},[i("uni-view",{staticClass:t._$g(97,"sc"),attrs:{_i:97},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(98,"sc"),attrs:{_i:98}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(99,"sc"),attrs:{_i:99},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(100,"sc"),attrs:{_i:100}},[t._v("\u786e\u5b9a")])],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(101,"sc"),class:t._$g(101,"c"),attrs:{_i:101}},[i("uni-view",{staticClass:t._$g(102,"sc"),attrs:{_i:102},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(103,"sc"),attrs:{_i:103}},[i("uni-view",{staticClass:t._$g(104,"sc"),attrs:{_i:104}},[i("v-uni-text",{staticClass:t._$g(105,"sc"),attrs:{_i:105},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")]),i("v-uni-text",{staticClass:t._$g(106,"sc"),attrs:{_i:106}},[t._v("\u9009\u62e9\u8425\u4e1a\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(107,"sc"),attrs:{_i:107},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1),i("uni-view",{staticClass:t._$g(108,"sc"),attrs:{_i:108}},[i("uni-view",{staticClass:t._$g(109,"sc"),class:t._$g(109,"c"),attrs:{_i:109},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(110,"sc"),attrs:{_i:110}},[t._v(t._$g(110,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(111,"sc"),attrs:{_i:111}},[t._v("\u5f00\u59cb\u65f6\u95f4")])],1),i("v-uni-text",{staticClass:t._$g(112,"sc"),attrs:{_i:112}},[t._v("\u81f3")]),i("uni-view",{staticClass:t._$g(113,"sc"),class:t._$g(113,"c"),attrs:{_i:113},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(114,"sc"),attrs:{_i:114}},[t._v(t._$g(114,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(115,"sc"),attrs:{_i:115}},[t._v("\u7ed3\u675f\u65f6\u95f4")])],1)],1),i("uni-view",{staticClass:t._$g(116,"sc"),attrs:{_i:116}},[i("v-uni-picker-view",{staticClass:t._$g(117,"sc"),attrs:{value:t._$g(117,"a-value"),"indicator-style":t._$g(117,"a-indicator-style"),_i:117},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-picker-view-column",{attrs:{_i:118}},t._l(t._$g(119,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("119-"+r,"sc"),attrs:{_i:"119-"+r}},[t._v(" "+t._$g("119-"+r,"t0-0")+" ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:120}},t._l(t._$g(121,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("121-"+r,"sc"),attrs:{_i:"121-"+r}},[t._v(" "+t._$g("121-"+r,"t0-0")+" ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:122}},[i("uni-view",{staticClass:t._$g(123,"sc"),attrs:{_i:123}},[t._v("-")])],1),i("v-uni-picker-view-column",{attrs:{_i:124}},t._l(t._$g(125,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("125-"+r,"sc"),attrs:{_i:"125-"+r}},[t._v(" "+t._$g("125-"+r,"t0-0")+" ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:126}},t._l(t._$g(127,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("127-"+r,"sc"),attrs:{_i:"127-"+r}},[t._v(" "+t._$g("127-"+r,"t0-0")+" ")])})),1)],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(128,"sc"),class:t._$g(128,"c"),attrs:{_i:128}},[i("uni-view",{staticClass:t._$g(129,"sc"),attrs:{_i:129},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(130,"sc"),attrs:{_i:130}},[i("v-uni-image",{staticClass:t._$g(131,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ab410a5d-5819-47f2-a0fc-3fd6b90d6770",mode:"aspectFit",_i:131}}),i("uni-view",{staticClass:t._$g(132,"sc"),attrs:{_i:132}},[i("uni-view",{staticClass:t._$g(133,"sc"),attrs:{_i:133}},[t._v(t._$g(133,"t0-0"))]),i("uni-view",{staticClass:t._$g(134,"sc"),attrs:{_i:134}},[i("v-uni-image",{staticClass:t._$g(135,"sc"),class:t._$g(135,"c"),attrs:{src:t._$g(135,"a-src"),mode:"widthFix",_i:135}})],1),i("uni-view",{staticClass:t._$g(136,"sc"),attrs:{_i:136}},[i("uni-view",{staticClass:t._$g(137,"sc"),attrs:{_i:137},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(138,"sc"),attrs:{_i:138}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(139,"sc"),attrs:{_i:139},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(140,"sc"),attrs:{_i:140}},[t._v("\u6211\u5df2\u4e86\u89e3")])],1)],1)],1)],1)],1)],1)},n=[]},6929:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"search-box",props:["value","placeholder","showBack","width","height","border"],data:function(){return{wxsProps:{}}},components:{}}},6935:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("bbca")),r=a(i("e26b")),s={data:function(){return{wxsProps:{}}},components:{orderCard:n.default,serviceCodeInput:r.default}};e.default=s},6996:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"69ae":function(t,e,i){t.exports=i.p+"static/images/background/bj3.png"},"69b6":function(t,e,i){"use strict";i.r(e);var a=i("033f"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"69c5":function(t,e,i){"use strict";i.r(e);var a=i("39fa"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"69fc":function(t,e,i){var a=i("cdbe");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("0567ad2f",a,!0,{sourceMap:!1,shadowMode:!1})},"6a18":function(t,e,i){"use strict";var a=i("ef87"),n=i.n(a);n.a},"6a74":function(t,e,i){"use strict";i.r(e);var a=i("1f49"),n=i("d460");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("91ac");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"784e393e",null,!1,a["a"],void 0);e["default"]=o.exports},"6a81":function(t,e,i){"use strict";i.r(e);var a=i("df9c"),n=i("781a");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("d468");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"e2a6e264",null,!1,a["a"],void 0);e["default"]=o.exports},"6aa0":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("467d")),r={props:["evaluated_id","evaluated_type","order_shop_id","order_shop_type","order_id","search_type","listUrl"],data:function(){return{wxsProps:{}}},components:{evaluationDetail:n.default}};e.default=r},"6aec":function(t,e,i){"use strict";var a=i("eefb"),n=i.n(a);n.a},"6b0a":function(t,e){const i=new RegExp("\"[^\"]+\"|'[^']+'|url\\([^)]+\\)|(\\d*\\.?\\d+)[r|u]px","g");const a={unit:"rem",unitRatio:10/320,unitPrecision:5},n=Object.assign({},a);function r(t,e,i,a){if(1===i)return`${t}${e}`;const n=function(t,e){const i=Math.pow(10,e+1),a=Math.floor(t*i);return 10*Math.round(a/10)/i}(t*i,a);return 0===n?"0":`${n}${e}`}t.exports={unitRE:i,defaultRpx2Unit:a,setRpx2Unit:function(t){return Object.assign(t,a)},getRpx2Unit:function(){return n},createRpx2Unit:function(t,e,a){return n=>i.test(n)?n.replace(i,(i,n)=>n?r(parseFloat(n),t,e,a):i):r(parseFloat(n),t,e,a)}}},"6b0f":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._v("\u8ba2\u5355\u7f16\u53f7\uff1a"+t._$g(2,"t0-0"))]),t._$g(3,"i")?i("uni-view",{staticClass:t._$g(3,"sc"),class:t._$g(3,"c"),attrs:{_i:3}},[t._v(" "+t._$g(3,"t0-0")+" ")]):t._e()],1),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:t._$g(5,"a-src"),mode:"aspectFill",_i:5}}),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v(t._$g(9,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u4e0b\u5355\u65f6\u95f4\uff1a"+t._$g(10,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("v-uni-text",{staticStyle:{"font-size":"24rpx"},attrs:{_i:12}},[t._v("\uffe5")]),t._v(t._$g(11,"t1-0")+" ")],1)],1)],1),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("v-uni-text",{staticStyle:{color:"#999999"},attrs:{_i:14}},[t._v("\u670d\u52a1\u65f6\u6bb5\uff1a")]),t._v(t._$g(13,"t1-0"))],1),t._$g(15,"i")?i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._$g(16,"i")?i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u53d6\u6d88\u8ba2\u5355 ")]):t._e(),t._$g(17,"i")?i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u63a5\u5355")]):t._e(),t._$g(18,"i")?i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u5f00\u59cb\u8ba2\u5355")]):t._e(),t._$g(19,"i")?i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u5b8c\u6210\u8ba2\u5355")]):t._e()],1):t._e()],1)},n=[]},"6b2d":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._$g(5,"i")?i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:t._$g(5,"a-src"),mode:"aspectFill",_i:5}}):t._e()],1),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("v-uni-text",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(t._$g(8,"t0-0"))]),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(10,"sc"),attrs:{src:"/static/images/icons/wallet.png",_i:10}}),i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v(" \u94b1\u5305\u4f59\u989d\uff1a ")]),i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v(" "+t._$g(12,"t0-0")+"\u5143 ")])],1)],1)],1),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v("\u7f16\u8f91\u8d44\u6599")]),i("v-uni-image",{attrs:{src:"/static/images/icons/right_gray.png",_i:15}})],1)],1),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v(" \u4ea4\u6613\u9879\u76ee ")]),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},t._l(t._$g(19,"f"),(function(e,a,n,r){return i("v-uni-image",{key:e,staticClass:t._$g("19-"+r,"sc"),attrs:{src:t._$g("19-"+r,"a-src"),mode:"aspectFit",_i:"19-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})})),1)],1),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v(" \u4ea4\u6613\u8ba2\u5355 ")]),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},t._l(t._$g(23,"f"),(function(e,a,n,r){return i("v-uni-image",{key:e,staticClass:t._$g("23-"+r,"sc"),attrs:{src:t._$g("23-"+r,"a-src"),mode:"aspectFit",_i:"23-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})})),1)],1),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v(" \u8425\u9500\u4e2d\u5fc3 ")]),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},t._l(t._$g(27,"f"),(function(e,a,n,r){return i("v-uni-image",{key:e,staticClass:t._$g("27-"+r,"sc"),attrs:{src:t._$g("27-"+r,"a-src"),mode:"aspectFit",_i:"27-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})})),1)],1),t._$g(28,"i")?i("v-uni-image",{staticClass:t._$g(28,"sc"),attrs:{mode:"widthFix",src:"/static/images/home/zyBanner.png",_i:28},on:{click:function(e){return t.$handleViewEvent(e)}}}):i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[t._v(" \u5e73\u53f0\u81ea\u8425\u9879\u76ee ")]),i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},t._l(t._$g(32,"f"),(function(e,a,n,r){return i("v-uni-image",{key:e,staticClass:t._$g("32-"+r,"sc"),attrs:{src:t._$g("32-"+r,"a-src"),mode:"aspectFit",_i:"32-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})})),1)],1),i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[t._v("\u5ba2\u670d")]),i("v-uni-image",{staticClass:t._$g(36,"sc"),attrs:{src:"/static/images/icons/right_gray3.png",_i:36}})],1)],1)],1)],1)},r=[]},"6b7c":function(t,e,i){"use strict";i.r(e);var a=i("8e9b"),n=i("6539");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("8a6ba");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"6ba0":function(t,e,i){"use strict";i.r(e);var a=i("2d31"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"6be3":function(t,e,i){"use strict";i.r(e);var a=i("2c59"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"6bf1":function(t,e,i){"use strict";i.r(e);var a=i("9903"),n=i("7b2a");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("32b0");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"1ba3674b",null,!1,a["a"],void 0);e["default"]=o.exports},"6bfb":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("-")]),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-input",{staticClass:t._$g(3,"sc"),attrs:{type:"number",value:t._$g(3,"a-value"),placeholder:"\u8bf7\u8f93\u5165\u6bd4\u4f8b",_i:3},on:{input:function(e){return t.$handleViewEvent(e)}}}),i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("%")])],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("+")])],1)},n=[]},"6c09":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"6c1f":function(t,e,i){var a=i("0fb7");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("210ce564",a,!0,{sourceMap:!1,shadowMode:!1})},"6c22":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("524e")),r={props:["value","disabled","type"],data:function(){return{wxsProps:{}}},components:{timeDatePicker:n.default}};e.default=r},"6c3d":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("30e5")),r={data:function(){return{wxsProps:{}}},components:{evaluationList:n.default}};e.default=r},"6c4a":function(t,e,i){"use strict";i.r(e);var a=i("a65a"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"6c54":function(t,e,i){"use strict";i.r(e);var a=i("bec7"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"6c65":function(t,e,i){"use strict";i.r(e);var a=i("b07b"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"6c78":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-badge",data:function(){return{wxsProps:{}}},components:{}}},"6c99":function(t,e,i){"use strict";i.r(e);var a=i("6573"),n=i("2b67");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("8310");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"6cd0":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,aliOssUploader:i("93a6").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("class_select",{directives:[{name:"show",rawName:"v-show",value:t._$g(2,"v-show"),expression:"_$g(2,'v-show')"}],attrs:{_i:2},on:{changeClass:function(e){return t.$handleViewEvent(e)},changeSecondClass:function(e){return t.$handleViewEvent(e)},changeTypeText:function(e){return t.$handleViewEvent(e)},closeClassSelect:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{directives:[{name:"show",rawName:"v-show",value:t._$g(3,"v-show"),expression:"_$g(3,'v-show')"}],staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u5206\u7c7b")]),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{class:t._$g(8,"c"),attrs:{_i:8}},[t._v(" "+t._$g(8,"t0-0")+" ")]),i("v-uni-image",{staticClass:t._$g(9,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:9}})],1)],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u5de5\u65f6\u540d\u79f0")]),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("v-uni-input",{staticClass:t._$g(13,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u540d\u79f0\uff08\u4f8b\u5982\u5230\u5bb6\u7f8e\u7532\u3001\u7f8e\u7532\u5e08\u5c0f\u65f6\u5de5\uff09","placeholder-class":"placeholder",_i:13},model:{value:t._$g(13,"v-model"),callback:function(e){t.$handleVModelEvent(13,e)},expression:"formData.title"}})],1)],1),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("uni-view",{attrs:{_i:15}},[i("v-uni-text",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._v("\u5de5\u65f6\u4ef7\u683c")]),i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v("(*\u4ee5\u4e0b\u6309\u7167\u6bcf10\u5206\u949f\u7684\u4ef7\u683c)")])],1),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("v-uni-input",{staticClass:t._$g(20,"sc"),attrs:{type:"number",placeholder:"\u8bf7\u8f93\u5165\u4ef7\u683c","placeholder-class":"placeholder",_i:20},model:{value:t._$g(20,"v-model"),callback:function(e){t.$handleVModelEvent(20,e)},expression:"formData.price"}})],1),i("v-uni-text",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v("\u5143/10\u5206\u949f")])],1)],1),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[i("v-uni-text",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v("\u5de5\u65f6\u63cf\u8ff0")]),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("v-uni-textarea",{staticClass:t._$g(25,"sc"),attrs:{placeholder:"\u8bf7\u8f93\u5165\u63cf\u8ff0\uff0c\u53ef\u4e2a\u4eba\u4e13\u4e1a\u5ea6\u3001\u4f5c\u54c1\u7ecf\u5386\u7b49\u65b9\u9762\u63cf\u8ff0\u3002","placeholder-class":"placeholder",maxlength:"-1",_i:25},model:{value:t._$g(25,"v-model"),callback:function(e){t.$handleVModelEvent(25,e)},expression:"formData.detail"}})],1)],1),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[i("uni-view",{attrs:{_i:27}},[i("v-uni-text",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[t._v("\u4f5c\u54c1\u5c55\u793a")]),i("v-uni-text",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v("(*\u4ec5\u53ef\u4e0a\u4f209\u4e2a\u56fe\u7247)")])],1),i("ali-oss-uploader",{attrs:{_i:30},on:{success:function(e){return t.$handleViewEvent(e)},error:function(e){return t.$handleViewEvent(e)},delete:function(e){return t.$handleViewEvent(e)},ckeckisShowPer:function(e){return t.$handleViewEvent(e)},ckecknowQer:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(30,"v-model"),callback:function(){},expression:"formData.photo"}})],1)],1),i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[t._$g(32,"i")?i("v-uni-button",{staticClass:t._$g(32,"sc"),attrs:{_i:32},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u5b58\u8349\u7a3f ")]):t._e(),i("v-uni-button",{staticClass:t._$g(33,"sc"),attrs:{_i:33},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u63d0\u4ea4")])],1),t._$g(34,"i")?i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34},on:{click:function(e){return t.$handleViewEvent(e)}}}):t._e(),i("uni-view",{staticClass:t._$g(35,"sc"),class:t._$g(35,"c"),attrs:{_i:35}},[i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u50a8\u5b58\u7a7a\u95f4/\u7167\u7247\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u8bfb\u53d6\u76f8\u518c\u548c\u6587\u4ef6\u5185\u5bb9\u3002")])],1),i("uni-view",{staticClass:t._$g(38,"sc"),class:t._$g(38,"c"),attrs:{_i:38}},[i("uni-view",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u76f8\u673a\u62cd\u6444\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u6240\u9700\u5185\u5bb9\u3002")])],1)],1)],1)},r=[]},"6d0e":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("a6d8")),r={data:function(){return{wxsProps:{}}},components:{AgreeRadio:n.default}};e.default=r},"6d18":function(t,e,i){"use strict";var a=i("f7b4"),n=i.n(a);n.a},"6d5c":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".settings-page{padding:20rpx}.settings-page .settings-title{font-weight:500;font-size:22rpx;color:#979797;text-align:left;font-style:normal;margin-bottom:20rpx;gap:10rpx;display:flex;align-items:center}.settings-page .settings-title .settings-title-tip{width:26rpx;height:26rpx}.settings-page .settings-cards{box-sizing:border-box;width:710rpx;padding:0rpx 20rpx;background:#fff;border-radius:20rpx;margin-bottom:40rpx}.settings-page .settings-cards .settings-card{padding:30rpx 0rpx 36rpx 0rpx}.settings-page .settings-cards .settings-card .card-heard .card-heard-left{display:flex;align-items:center;gap:8rpx}.settings-page .settings-cards .settings-card .card-heard .card-heard-left .card-heard-left-icon{height:32rpx}.settings-page .settings-cards .settings-card .card-heard .card-heard-left .card-heard-left-text{font-weight:500;font-size:28rpx;color:#333;text-align:left;font-style:normal}.settings-page .settings-cards .settings-card .card-heard .card-heard-right{gap:10rpx}.settings-page .settings-cards .settings-card .card-heard .card-heard-right .card-heard-right-text{font-weight:400;font-size:24rpx;color:#333;text-align:left;font-style:normal}.settings-page .settings-cards .settings-card .card-heard .card-heard-right .arrow-right{width:8rpx;height:16rpx}.settings-page .settings-cards .settings-card .card-tip{margin-top:20rpx;font-weight:400;font-size:22rpx;color:#979797;line-height:30rpx;text-align:left;font-style:normal}.settings-page .settings-cards .card-line{border-bottom:1rpx solid #f5f5f5}.settings-page .color-red{color:#e8101e!important}.settings-page .dialog-mask{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.settings-page .dialog-container{width:556rpx;height:711rpx;background-color:#fff;border-radius:24rpx;padding:40rpx 37rpx;box-sizing:border-box;display:flex;flex-direction:column;align-items:center}.settings-page .dialog-title{font-weight:500;font-size:40rpx;color:#333;line-height:56rpx;text-align:left;font-style:normal;margin-bottom:36rpx}.settings-page .dialog-desc{font-size:28rpx;color:#666;line-height:1.5;text-align:left;margin-bottom:40rpx}.settings-page .dialog-illustration{width:377rpx;height:241rpx;height:auto;margin-bottom:40rpx}.settings-page .dialog-btn{width:476rpx;height:86rpx;background:#e8101e;border-radius:44rpx;display:flex;align-items:center;justify-content:center;transition:opacity .1s}.settings-page .dialog-btn-text{font-size:32rpx;font-weight:500;color:#fff;letter-spacing:2rpx}.settings-page .fade-scale-enter-active,\n.settings-page .fade-scale-leave-active{transition:all .25s ease}.settings-page .fade-scale-enter,\n.settings-page .fade-scale-leave-to{opacity:0;-webkit-transform:scale(.9);transform:scale(.9)}.dialog-mask{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.dialog-container{transition:all .3s ease;opacity:0;-webkit-transform:scale(.9);transform:scale(.9);padding:40rpx;background:#fff;border-radius:20rpx;text-align:center}.dialog-show{opacity:1;-webkit-transform:scale(1);transform:scale(1)}.dialog-hide{opacity:0;-webkit-transform:scale(.9);transform:scale(.9)}.dialog-title{font-size:32rpx;font-weight:600;color:#333;margin-bottom:20rpx}.dialog-desc{font-size:26rpx;color:#666;line-height:40rpx;margin-bottom:30rpx}.dialog-illustration{width:100%;max-width:500rpx;margin-bottom:40rpx}.dialog-btn{width:300rpx;height:80rpx;line-height:80rpx;background:#e8101e;border-radius:40rpx;margin:0 auto}.dialog-btn-text{font-size:30rpx;color:#fff}",""]),t.exports=e},"6d9d":function(t,e,i){"use strict";i.r(e);var a=i("be65"),n=i("1b66");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("6a18");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"063682c8",null,!1,a["a"],void 0);e["default"]=o.exports},"6daf":function(t,e,i){"use strict";var a=i("e40f"),n=i.n(a);n.a},"6dde":function(t,e,i){"use strict";var a=i("8130"),n=i.n(a);n.a},"6dfe":function(t,e,i){"use strict";var a=i("0f57"),n=i.n(a);n.a},"6e01":function(t,e,i){"use strict";i.r(e);var a=i("3e8b"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"6f30":function(t,e,i){"use strict";var a=i("b725"),n=i.n(a);n.a},"6f37":function(t,e,i){"use strict";i.r(e);var a=i("efbe"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"6f49":function(t,e,i){"use strict";var a=i("7d69"),n=i.n(a);n.a},"6f7c":function(t,e,i){var a=i("1598");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("d6be5b2a",a,!0,{sourceMap:!1,shadowMode:!1})},"6f86":function(t,e,i){"use strict";i.r(e);var a=i("f2c2"),n=i("8a7d");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("b9a8");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},7004:function(t,e,i){var a=i("4017");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("b2ad2a3c",a,!0,{sourceMap:!1,shadowMode:!1})},7034:function(t,e,i){"use strict";i.r(e);var a=i("8759"),n=i("e931");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("30df");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},7079:function(t,e,i){"use strict";var a=i("2a22"),n=i.n(a);n.a},"70c9":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),style:t._$g(0,"s"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("v-uni-image",{staticClass:t._$g(2,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/8f59f3a0-cb23-4625-9c32-a9842e794489.png",_i:2}}),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/0b137ffb-6165-465c-9497-b5c9375bac74.png",mode:"aspectFit",_i:4},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}}),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}}),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}})],1)],1)],1),i("CommonList",{ref:"groupRef",attrs:{_i:9},scopedSlots:t._u([{key:"listData",fn:function(e,a,n){e.list;return[i("uni-view",{staticClass:a._$g("11-"+n,"sc"),attrs:{_i:"11-"+n}},t._l(a._$g("12-"+n,"f"),(function(e,r,s,o){return i("uni-view",{key:e,staticClass:a._$g("12-"+n+o,"sc"),attrs:{_i:"12-"+n+o},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:a._$g("13-"+n+o,"sc"),attrs:{_i:"13-"+n+o}},[i("uni-view",{staticClass:a._$g("14-"+n+o,"sc"),attrs:{_i:"14-"+n+o}},[i("uni-view",{staticClass:a._$g("15-"+n+o,"sc"),attrs:{_i:"15-"+n+o}},[i("v-uni-image",{staticClass:a._$g("16-"+n+o,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/e233f727-e358-4eb2-8e0f-e55f95728dc2.png",mode:"aspectFit",_i:"16-"+n+o}}),i("v-uni-text",{staticClass:a._$g("17-"+n+o,"sc"),attrs:{_i:"17-"+n+o}},[t._v(a._$g("17-"+n+o,"t0-0"))])],1),i("uni-view",{staticClass:a._$g("18-"+n+o,"sc"),attrs:{_i:"18-"+n+o}},[i("v-uni-text",{staticClass:a._$g("19-"+n+o,"sc"),attrs:{_i:"19-"+n+o}},[t._v(a._$g("19-"+n+o,"t0-0"))]),a._$g("20-"+n+o,"i")?i("uni-view",{staticClass:a._$g("20-"+n+o,"sc"),attrs:{_i:"20-"+n+o}}):t._e()],1)],1),i("uni-view",{staticClass:a._$g("21-"+n+o,"sc"),attrs:{_i:"21-"+n+o}},[i("uni-view",{staticClass:a._$g("22-"+n+o,"sc"),attrs:{_i:"22-"+n+o}},[i("v-uni-text",{staticClass:a._$g("23-"+n+o,"sc"),attrs:{_i:"23-"+n+o}},[t._v(a._$g("23-"+n+o,"t0-0"))])],1),i("v-uni-image",{staticClass:a._$g("24-"+n+o,"sc"),attrs:{src:a._$g("24-"+n+o,"a-src"),mode:"aspectFill",_i:"24-"+n+o}})],1)],1)],1)})),1)]}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"26-"+a}})]}}])}),i("TabBar",{attrs:{_i:27}})],1)},r=[]},7149:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,uvSwitch:i("b32f").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-text",{attrs:{_i:3}},[t._v("\u901a\u77e5\u8bbe\u7f6e")]),i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/e65794a6-bda3-44da-b8ce-1bf3ee6c1832.png",_i:4},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u5141\u8bb8\u624b\u673a\u63a5\u6536")])],1)],1)],1),i("uv-switch",{attrs:{_i:11},on:{change:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(11,"v-model"),callback:function(){},expression:"mainSwitch.switch"}})],1)],1),t._$g(12,"i")?i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v(" \u7ec6\u5206\u6d88\u606f\u7c7b\u578b ")]):t._e(),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},t._l(t._$g(14,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[i("uni-view",{attrs:{_i:"15-"+r}},[i("uni-view",{staticClass:t._$g("16-"+r,"sc"),attrs:{_i:"16-"+r}},[i("uni-view",{staticClass:t._$g("17-"+r,"sc"),attrs:{_i:"17-"+r}},[i("v-uni-text",{staticClass:t._$g("18-"+r,"sc"),attrs:{_i:"18-"+r}},[t._v(t._$g("18-"+r,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g("19-"+r,"sc"),attrs:{_i:"19-"+r}},[t._v(t._$g("19-"+r,"t0-0"))])],1),i("uv-switch",{attrs:{_i:"20-"+r},on:{change:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g("20-"+r,"v-model"),callback:function(){},expression:"item.switch"}})],1)})),1),t._$g(21,"i")?i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21},on:{click:function(e){return t.$handleViewEvent(e)},touchmove:function(e){return t.$handleViewEvent(e,{prevent:!0})}}},[i("uni-view",{staticClass:t._$g(22,"sc"),class:t._$g(22,"c"),attrs:{_i:22},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v("\u901a\u77e5\u8bbe\u7f6e")]),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[t._v(" \u5f00\u542f\u540e\uff0c\u5c06\u4ee5\u624b\u673a\u9501\u5c4f\\\u901a\u77e5\u4e2d\u5fc3\\\u6a2a\u5e45\u7684\u7cfb\u7edf\u901a\u77e5\u65b9\u5f0f\uff0c\u4e3a\u4f60\u63a8\u9001\u6307\u5b9a\u7c7b\u578b\u7684\u6d88\u606f\u3002 ")]),i("v-uni-image",{staticClass:t._$g(25,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/94b5bb62-e90b-4e14-a89f-a44ea1504dd9.png",mode:"widthFix",_i:25}}),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v("\u6211\u77e5\u9053\u4e86")])],1)],1)],1):t._e()],1)},r=[]},7178:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".syr-list-page{background-color:#f5f5f5;min-height:100vh}.syr-list-page .syr-list-scroll{width:100%}.syr-list-page .syr-list-scroll .syr-list-container{margin:20rpx 0;padding:0 35rpx}.syr-list-page .syr-list-scroll .syr-list-container .syr-header{padding:30rpx 0 20rpx}.syr-list-page .syr-list-scroll .syr-list-container .syr-header .syr-count{font-size:28rpx;color:#333;font-weight:500}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid{display:flex;flex-wrap:wrap;justify-content:space-between}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card{width:331rpx;background-color:#fff;border-radius:20rpx;overflow:hidden;margin-bottom:20rpx;box-shadow:0 2rpx 12rpx rgba(0,0,0,.04)}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card .syr-avatar-container{width:100%;height:327rpx}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card .syr-avatar-container .syr-avatar{width:100%;height:100%;background-color:#f0f0f0}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card .syr-info{padding:20rpx}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card .syr-info .syr-name-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:12rpx}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card .syr-info .syr-name-row .syr-name{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:34rpx;color:#000;line-height:48rpx;text-align:left;font-style:normal}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card .syr-info .syr-name-row .syr-distance{display:flex;align-items:center}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card .syr-info .syr-name-row .syr-distance .distance-icon{-webkit-transform:translateY(-1rpx);transform:translateY(-1rpx);width:18rpx;height:21rpx;margin-right:6rpx}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card .syr-info .syr-name-row .syr-distance .distance-text{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:24rpx;color:#999;line-height:33rpx;text-align:left;font-style:normal}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card .syr-info .syr-experience-row{display:flex;align-items:center;margin-bottom:8rpx}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card .syr-info .syr-experience-row .experience-icon{width:68rpx;height:24rpx}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card .syr-info .syr-experience-row .syr-experience{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:26rpx;color:#000;line-height:37rpx;text-align:left;font-style:normal;margin-right:14rpx}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card .syr-info .syr-join-row{display:flex;align-items:center}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card .syr-info .syr-join-row .join-icon{width:24rpx;height:24rpx;margin-right:8rpx}.syr-list-page .syr-list-scroll .syr-list-container .syr-grid .syr-card .syr-info .syr-join-row .syr-join{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:24rpx;color:#999;line-height:33rpx;text-align:left;font-style:normal}.syr-list-page .syr-list-scroll .syr-list-container .loading-status{padding:40rpx 0;text-align:center}.syr-list-page .syr-list-scroll .syr-list-container .loading-status .loading-text{font-size:26rpx;color:#999}.syr-list-page .syr-list-scroll .syr-list-container .loading-status .no-more-text{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:24rpx;color:#cecece;line-height:33rpx;text-align:left;font-style:normal}.syr-list-page .syr-list-scroll .syr-list-container .empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:100rpx 0}.syr-list-page .syr-list-scroll .syr-list-container .empty-state .empty-image{width:200rpx;height:200rpx;margin-bottom:30rpx}.syr-list-page .syr-list-scroll .syr-list-container .empty-state .empty-text{font-size:28rpx;color:#999}",""]),t.exports=e},"71bd":function(t,e,i){"use strict";var a=i("7eaf"),n=i.n(a);n.a},7208:function(t,e,i){"use strict";var a=i("d61b"),n=i.n(a);n.a},"720b":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.service-time-page[data-v-6026ffbc]{min-height:100vh;background-color:#f5f5f5;padding-bottom:140rpx}.content[data-v-6026ffbc]{padding:20rpx}.section-card[data-v-6026ffbc]{background:#fff;border-radius:20rpx;padding:22rpx;margin-bottom:20rpx}.section-header[data-v-6026ffbc]{display:flex;align-items:center;margin-bottom:20rpx}.section-title[data-v-6026ffbc]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#1d2129;line-height:48rpx;text-align:left;font-style:normal}.title-bar[data-v-6026ffbc]{width:6rpx;height:30rpx;background-color:#e8101e;margin-right:10rpx;border-radius:5rpx}.time-display-section[data-v-6026ffbc]{display:flex;justify-content:space-between;align-items:center;padding:20rpx 0 10rpx 0}.time-value-box[data-v-6026ffbc]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;margin-left:16rpx}.time-value[data-v-6026ffbc]{margin-right:15rpx}.time-value2[data-v-6026ffbc]{font-weight:500}.change-button[data-v-6026ffbc]{display:flex;align-items:center}.change-text[data-v-6026ffbc]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:28rpx;color:#e8101e;line-height:40rpx;text-align:left;font-style:normal}.arrow-right[data-v-6026ffbc]{margin-left:10rpx;width:11rpx;height:22rpx}.popup[data-v-6026ffbc]{position:fixed;left:0;right:0;bottom:0;z-index:999;visibility:hidden;opacity:0;transition:all .3s ease}.popup.show[data-v-6026ffbc]{visibility:visible;opacity:1}.popup-mask[data-v-6026ffbc]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.popup-content[data-v-6026ffbc]{position:relative;background-color:#fff;border-radius:24rpx 24rpx 0 0;padding:32rpx;-webkit-transform:translateY(100%);transform:translateY(100%);transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;max-height:70vh}.popup.show .popup-content[data-v-6026ffbc]{-webkit-transform:translateY(0);transform:translateY(0)}.popup-header[data-v-6026ffbc]{display:flex;align-items:center;justify-content:space-between;margin-bottom:20rpx}.cancel-text[data-v-6026ffbc]{font-size:32rpx;color:#666}.confirm-text[data-v-6026ffbc]{font-size:32rpx;color:#e8101e;font-weight:500}.title[data-v-6026ffbc]{font-size:32rpx;color:#333;font-weight:500}.time-range[data-v-6026ffbc]{display:flex;align-items:center;justify-content:center;padding:32rpx;background:#f8f9fc;border-radius:12rpx;margin-bottom:20rpx}.time-block[data-v-6026ffbc]{flex:1;display:flex;flex-direction:column;align-items:center;background:#fff;border-radius:12rpx;padding:24rpx 0;transition:all .3s ease}.time-block.active[data-v-6026ffbc]{background:#ecf2ff}.time-label[data-v-6026ffbc]{font-size:26rpx;color:#999;margin-top:8rpx}.time-value-picker[data-v-6026ffbc]{font-size:40rpx;color:#333;font-weight:500}.time-block.active .time-value-picker[data-v-6026ffbc]{color:#e8101e}.time-separator[data-v-6026ffbc]{font-size:28rpx;color:#999;margin:0 24rpx}.region-body[data-v-6026ffbc]{height:400rpx}.picker-scroll[data-v-6026ffbc]{height:400rpx}.picker-item[data-v-6026ffbc]{height:68rpx;line-height:68rpx;text-align:center;font-size:28rpx}.bottom-actions[data-v-6026ffbc]{margin-top:80rpx;background:transparent;padding:0 45rpx}.action-buttons[data-v-6026ffbc]{display:flex;gap:50rpx}.btn-cancel-large[data-v-6026ffbc], .btn-confirm-large[data-v-6026ffbc]{font-size:34rpx;flex:1;font-weight:400;display:flex;align-items:center;justify-content:center;border:none;width:290rpx;height:86rpx;background:linear-gradient(180deg,#f52540,#e8101e 100%,#e8101e 0);border-radius:43rpx}.btn-cancel-large[data-v-6026ffbc]{font-size:34rpx;border:none!important;border-width:0;background:#e5e5e5;border-radius:43rpx;color:#333}.btn-cancel-large[data-v-6026ffbc]::after{border:none;border-width:0}.btn-confirm-large[data-v-6026ffbc]{background:#e8101e;color:#fff}',""]),t.exports=e},7219:function(t,e,i){"use strict";i.r(e);var a=i("31df"),n=i("4860");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("6dfe");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},7298:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.add-service{padding:24rpx 24rpx 0;box-sizing:border-box}.form-container{margin-top:20rpx}.form-item{background-color:#fff;padding:24rpx;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;box-sizing:border-box;border-radius:10rpx;margin-bottom:24rpx}.shopsale-box{flex-flow:column;justify-content:space-between;align-items:space-between}.shopsale-change{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;margin-top:24rpx}.shopsale-option{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}.shopsale-option:last-child{margin-left:220rpx}.option-text{padding-left:16rpx}.form-item-up{background-color:#fff;padding:24rpx;display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:flex-start;box-sizing:border-box;border-radius:10rpx;margin-bottom:24rpx}.form-label{font-size:28rpx;color:#333}.form-input{flex:1;height:40rpx;font-size:28rpx;color:#333;margin-left:32rpx}.form-right{display:flex;justify-content:space-between;align-items:center}.form-value{font-size:28rpx;color:#333;margin-right:16rpx}.placeholder{color:#999}.textarea-item{padding-bottom:30rpx}.form-textarea{flex:1;height:198rpx;font-size:28rpx;color:#333;line-height:1.5;margin-left:32rpx}.upload-item{padding-bottom:30rpx}.upload-tip{font-size:24rpx;color:#999;margin-left:10rpx}.upload-content{margin-top:20rpx;position:relative}.progress-box{width:204rpx;height:204rpx;background-color:rgba(0,0,0,.5);position:absolute;top:0;left:0;right:0;z-index:99;display:flex;flex-flow:column nowrap;justify-content:center;align-items:center}.progress-text{font-size:42rpx;color:#fff;font-weight:500}.progress-lable{font-size:28rpx;color:#fff}.progress-box uni-progress{position:absolute;left:0;right:0;bottom:0}.video-preview,\n.image-preview,\n.upload-btn{width:200rpx;height:200rpx;margin-right:10rpx;margin-bottom:20rpx;position:relative}.preview-video,\n.preview-image{width:200rpx;height:200rpx;border-radius:8rpx}.upload-btn{border:2rpx dashed #ddd;border-radius:8rpx;display:flex;justify-content:center;align-items:center}.plus-icon{font-size:60rpx;color:#999}.delete-btn{position:absolute;top:-20rpx;right:-20rpx;width:40rpx;height:40rpx;background-color:rgba(0,0,0,.5);border-radius:50%;color:#fff;display:flex;justify-content:center;align-items:center;font-size:32rpx}.bottom-buttons{height:100rpx;padding:40rpx 0 64rpx;box-sizing:border-box;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center}.btn-draft,\n.btn-submit{width:334rpx;height:64rpx;line-height:64rpx;text-align:center;font-size:28rpx;border-radius:40rpx}.btn-draft{background-color:#fff;color:#e8101e;border:2rpx solid #e8101e;box-sizing:border-box}.btn-submit{background-color:#e8101e;color:#fff}.form-step{background-color:#fff;margin-bottom:24rpx}.form-step .form-item{margin-bottom:0}.step{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;padding:0 24rpx 24rpx}.step-inp{flex:1;font-size:28rpx;color:#333;margin-left:38rpx;padding:0 24rpx;background-color:hsla(0,0%,90.2%,.5)}.step-textarea{font-size:24rpx;flex:1;height:70rpx;border-radius:6rpx;margin-left:38rpx;padding:24rpx;background-color:hsla(0,0%,90.2%,.5)}.picker-trigger{display:flex;align-items:center;justify-content:space-between;padding:24rpx 32rpx;background-color:#fff;border-radius:12rpx;margin-bottom:24rpx}.picker-label{font-size:28rpx;color:#333}.picker-value{font-size:28rpx;color:#666}.picker-arrow{width:32rpx;height:32rpx;margin-left:16rpx}.delete-icon{width:32rpx;height:32rpx;margin-left:24rpx}.form-detail{position:relative}.detail-cont{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;width:170rpx;height:210rpx;position:absolute;top:50rpx;right:-24rpx;background-color:#fff;padding:20rpx;border-radius:20rpx;box-shadow:0 8rpx 16rpx 0 rgba(0,0,0,.5);z-index:999}.detail-item{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;padding:12rpx 0;border-bottom:1rpx solid hsla(0,0%,90.2%,.5)}.lable-view{width:120rpx}.required::before{content:"*";color:red;margin-right:4rpx}.step-inp,\n.form-input{height:60rpx}.mask{position:fixed;top:0;right:0;left:0;width:100vw;height:100vh;z-index:99}.form-input{height:90rpx}.permission.transform{top:calc(var(--status-bar-height) + 88rpx + 30rpx);opacity:1;visibility:visible}.tip{padding:20rpx 30rpx;background:#feefec;font-weight:400;font-size:30rpx;color:#f31d2f;line-height:42rpx;text-align:left;font-style:normal;text-align:center}.tip .tip-icon{width:34rpx;height:34rpx;margin-right:10rpx;-webkit-transform:translateY(6rpx);transform:translateY(6rpx)}',""]),t.exports=e},"72b6":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("a018");e=a(!1);var s=n(r);e.push([t.i,".tips-popup[data-v-51195a50]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:99999}.mask[data-v-51195a50]{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6)}.popup-content[data-v-51195a50]{background-image:url("+s+");background-position:top;background-repeat:no-repeat;background-size:cover;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:570rpx;border-radius:36rpx;overflow:hidden;box-sizing:border-box;padding:60rpx 47rpx}.popup-header[data-v-51195a50]{position:relative;display:flex;align-items:center;justify-content:center}.popup-title[data-v-51195a50]{font-weight:500;font-size:34rpx;color:#333;line-height:48rpx;text-align:left;font-style:normal}.close-btn[data-v-51195a50]{position:absolute;right:24rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);padding:16rpx}.close-icon[data-v-51195a50]{width:32rpx;height:32rpx}.popup-body[data-v-51195a50]{padding:36rpx 0rpx 50rpx 0}.rule-item[data-v-51195a50]{margin-bottom:24rpx}.rule-item[data-v-51195a50]:last-child{margin-bottom:0}.rule-text[data-v-51195a50]{font-size:30rpx;color:#666;line-height:1.6}.btn_box[data-v-51195a50]{display:flex;align-items:center;justify-content:center;gap:72rpx}.btn_box .btn[data-v-51195a50]{width:200rpx;border-radius:72rpx;border:2rpx solid #979797;display:flex;align-items:center;justify-content:center;font-size:26rpx;color:#333}",""]),t.exports=e},"731b":function(t,e,i){var a=i("7b7c");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("37f9afc8",a,!0,{sourceMap:!1,shadowMode:!1})},7326:function(t,e,i){var a=i("8ca4");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("769670e5",a,!0,{sourceMap:!1,shadowMode:!1})},7328:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".container .container-tip{width:750rpx;padding:27rpx 16rpx 22rpx 32rpx;background:#fae7ec}.container .container-tip .container-tip-text{font-weight:400;font-size:26rpx;color:#e8101e;line-height:37rpx;text-align:left;font-style:normal}.container .container-tip .tip-icon{width:46rpx;height:46rpx;margin-right:8rpx}.container .service-list .service-item{padding:30rpx 20rpx;margin:20rpx;background:#fff;border-radius:10rpx}.container .service-list .service-item .item-left .item-left-photo{width:100rpx;height:100rpx;border-radius:20rpx;background:#000}.container .service-list .service-item .item-left .item-left-texts{margin-left:20rpx}.container .service-list .service-item .item-left .item-left-texts .item-left-text1{font-weight:500;font-size:30rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal;margin-bottom:27rpx;margin-top:6rpx;max-width:400rpx;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.container .service-list .service-item .item-left .item-left-texts .item-left-text2{font-weight:400;font-size:26rpx;color:#666;line-height:34rpx;text-align:left;font-style:normal}.container .service-list .service-item .item-left .item-left-texts .item-left-line{margin:0 10rpx;width:2rpx;height:20rpx;background:#666}.container .service-list .service-item .item-right{width:124rpx;height:53rpx;border-radius:27rpx;border:1rpx solid rgba(232,16,30,.5);font-size:24rpx;color:#e8101e;text-align:left;font-style:normal}.common-list{background:#f5f5f5!important;border-radius:30rpx!important;padding-bottom:0!important} .list-container{padding:0!important} .list-scroll{margin-top:0!important}",""]),t.exports=e},"734a":function(t,e,i){"use strict";var a=i("1677"),n=i.n(a);n.a},"73d0":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),style:t._$g(0,"s"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),style:t._$g(1,"s"),attrs:{_i:1}},[i("v-uni-input",{staticClass:t._$g(2,"sc"),attrs:{type:"text",placeholder:t._$g(2,"a-placeholder"),value:t._$g(2,"a-value"),"placeholder-class":"inputPlaceholder","confirm-type":"search","placeholder-style":"color: #CCCCCC;",_i:2},on:{input:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u641c\u7d22")]),i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:"/static/images/search.png",_i:4},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}})],1),t._$g(5,"i")?i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(6,"sc"),attrs:{src:"/static/images/recruit/add.png",_i:6}}),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("v-uni-text",{attrs:{_i:8}},[t._v("\u6dfb\u52a0")])],1)],1):t._e()],1)},n=[]},7423:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-text",{attrs:{_i:3}},[t._v("\u8bbe\u7f6e\u65b0\u5bc6\u7801")])],1),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("v-uni-text",{attrs:{_i:5}},[t._v("\u767b\u5f55\u5bc6\u7801\u7528\u4e8e\u7f8e\u878d\u878dplus\u767b\u5f55\uff0c\u5bc6\u7801"),i("v-uni-text",{staticStyle:{color:"#E8101E"},attrs:{_i:6}},[t._v("\u81f3\u5c116\u4e2a\u5b57\u7b26\uff0c\u4e0d\u80fd\u5168\u662f\u5b57\u6bcd\u6216\u8005\u6570\u5b57")])],1)],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v("\u65b0\u5bc6\u7801")]),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("v-uni-input",{staticClass:t._$g(10,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u5bc6\u7801",password:t._$g(10,"a-password"),maxlength:"20",_i:10},on:{input:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(10,"v-model"),callback:function(){},expression:"newPassword"}}),t._$g(11,"i")?i("v-uni-image",{staticClass:t._$g(11,"sc"),attrs:{src:"/static/images/icons/noLook.png",mode:"widthFix",_i:11},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}}):i("v-uni-image",{staticClass:t._$g(12,"sc"),attrs:{src:"/static/images//icons/look.png",mode:"widthFix",_i:12},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}})],1),t._$g(13,"i")?i("v-uni-text",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v(t._$g(13,"t0-0"))]):t._e()],1),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v("\u786e\u8ba4\u5bc6\u7801")]),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("v-uni-input",{staticClass:t._$g(17,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u5bc6\u7801",maxlength:"20",password:t._$g(17,"a-password"),_i:17},on:{input:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(17,"v-model"),callback:function(){},expression:"surePassword"}}),t._$g(18,"i")?i("v-uni-image",{staticClass:t._$g(18,"sc"),attrs:{src:"/static/images/icons/noLook.png",mode:"widthFix",_i:18},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}}):i("v-uni-image",{staticClass:t._$g(19,"sc"),attrs:{src:"/static/images//icons/look.png",mode:"widthFix",_i:19},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}})],1),t._$g(20,"i")?i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v("\u4e24\u6b21\u8f93\u5165\u7684\u5bc6\u7801\u4e0d\u4e00\u81f4")]):t._e()],1),i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("uni-view",{staticClass:t._$g(22,"sc"),class:t._$g(22,"c"),attrs:{_i:22},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u8ba4")])],1)],1)},r=[]},"746b":function(t,e,i){"use strict";i.r(e);var a=i("9c60"),n=i("ab07");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("dac4");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"c2d489ac",null,!1,a["a"],void 0);e["default"]=o.exports},"747e":function(t,e,i){"use strict";var a=i("6c1f"),n=i.n(a);n.a},7480:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".noLogin[data-v-40f8dd04]{display:flex;flex-direction:column;align-items:center;height:100%}.noLogin .noLogin-img[data-v-40f8dd04]{margin-top:154rpx;width:247rpx;height:187rpx}.noLogin .noLogin-text[data-v-40f8dd04]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal;margin-top:60rpx;margin-bottom:31rpx}.noLogin .loginBtn[data-v-40f8dd04]{width:262rpx;height:86rpx;background:#e8101e;border-radius:43rpx;text-align:center;line-height:86rpx;font-weight:500;font-size:34rpx;color:#fff}",""]),t.exports=e},"748f":function(t,e,i){var a=i("bfd8");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("57305fbb",a,!0,{sourceMap:!1,shadowMode:!1})},"74d0":function(t,e,i){"use strict";i.r(e);var a=i("2b56"),n=i("c9fb");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("7c28");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},7519:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"751b":function(t,e,i){"use strict";i.r(e);var a=i("a2d4"),n=i("b588");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("177a");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"afc604b0",null,!1,a["a"],void 0);e["default"]=o.exports},7536:function(t,e,i){t.exports=i.p+"static/images/id_zheng.png"},"755c":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"CircleProgress",props:["progress","size","strokeWidth","color","backgroundColor","showText","animation","duration"],data:function(){return{wxsProps:{}}},components:{}}},"755f":function(t,e,i){"use strict";i.r(e);var a=i("8799"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"75cc":function(t,e,i){var a=i("9e2a");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("350adb81",a,!0,{sourceMap:!1,shadowMode:!1})},"75fa":function(t,e,i){"use strict";var a=i("66cc"),n=i.n(a);n.a},"75fe":function(t,e,i){"use strict";var a=i("f5bf"),n=i.n(a);n.a},"760b":function(t,e,i){t.exports=i.p+"static/Font/DIN-Bold.otf"},7652:function(t,e,i){"use strict";i.r(e);var a=i("2c2a"),n=i("aefa");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("9dd0");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},7689:function(t,e,i){"use strict";i.r(e);var a=i("8aaa"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},7707:function(t,e,i){var a=i("37bd");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("7942a75f",a,!0,{sourceMap:!1,shadowMode:!1})},7712:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".class_select[data-v-418a5304]{width:100%}.class_select .classList[data-v-418a5304]{display:flex;align-items:center;padding:28rpx 30rpx 43rpx;gap:14rpx;overflow-x:auto}.class_select .classList .classItem[data-v-418a5304]{background:#fff;border-radius:20rpx;width:140rpx;height:140rpx;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20rpx;flex-shrink:0}.class_select .classList .classItem .classIcon[data-v-418a5304]{width:64rpx;height:64rpx}.class_select .classList .classItem .text[data-v-418a5304]{font-size:24rpx;color:#333}.class_select .classList .classItem .activeText[data-v-418a5304]{color:#e8101e}.class_select .secondClass[data-v-418a5304]{background-color:#fff;padding:30rpx 0 40rpx 30rpx}.class_select .secondClass .secondClassTitle[data-v-418a5304]{font-weight:500;font-size:30rpx;color:#333}.class_select .secondClass .secondClassList[data-v-418a5304]{display:flex;margin-top:30rpx;flex-wrap:wrap;gap:19rpx}.class_select .secondClass .secondClassList .secondClassItem[data-v-418a5304]{width:214rpx;height:64rpx;background:#f5f5f5;border-radius:34rpx;display:flex;justify-content:center;align-items:center;border:2rpx solid transparent}.class_select .secondClass .secondClassList .secondClassItemActive[data-v-418a5304]{border:1rpx solid #e8101e;background:rgba(252,67,124,.1);color:#e8101e}.class_select .tips[data-v-418a5304]{background-color:#fff;padding:30rpx 48rpx 30rpx;margin-top:30rpx;font-size:26rpx}.class_select .tips .red[data-v-418a5304]{color:#e8101e}.class_select .fixBottomBtn[data-v-418a5304]{position:fixed;bottom:0;width:100%;height:166rpx;background-color:#fff;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0 24rpx 0 30rpx}.class_select .fixBottomBtn .btn[data-v-418a5304]{width:100%;height:39rpx;border:2rpx solid #e8101e;border-radius:39rpx;font-size:30rpx;color:#e8101e}",""]),t.exports=e},"774b":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"OrderCard",props:["dataItem","typeId"],data:function(){return{wxsProps:{}}},components:{}}},7772:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},7789:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},7791:function(t,e,i){"use strict";i.r(e);var a=i("cecf"),n=i("8a2b");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("3d75");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"77a9":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".content{border-top:1rpx solid rgba(0,0,0,.05)}.section-list{background-color:#fff;margin:20rpx 20rpx 0 20rpx;border-radius:20rpx;overflow:hidden}.list-item{padding:30rpx;display:flex;align-items:center;justify-content:space-between;border-bottom:1rpx solid #f5f5f5}.list-item:last-child{border-bottom:none}.item-left{gap:16rpx}.item-left .item-left-img{width:36rpx;height:36rpx}.item-left .item-text{font-weight:500;font-size:28rpx;color:#000;text-align:left;font-style:normal}.item-right{display:flex;align-items:center}.phone-number{font-size:28rpx;color:#666;margin-left:8rpx;margin-right:12rpx}.verified-icon{color:#00c853;margin-right:8rpx}.cache-size,\n.version{font-weight:400;font-size:26rpx;color:#666;line-height:37rpx;margin-right:10rpx}.arrow{font-size:28rpx;color:#999}.logout-btn{height:98rpx;background-color:#fff;display:flex;align-items:center;justify-content:center;margin:48rpx 20rpx;border-radius:20rpx}.logout-text{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx}.sign-icon{width:30rpx;height:30rpx}.arrow-right{width:10rpx;height:18rpx}",""]),t.exports=e},"77a97":function(t,e,i){"use strict";i.r(e);var a=i("8dcf"),n=i("cbe1");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("bf0e");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"4e9de27e",null,!1,a["a"],void 0);e["default"]=o.exports},"77ab":function(t,e,i){"use strict";i.r(e);var a=i("c6c0"),n=i("da7e");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("33df");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"77bd":function(t,e,i){"use strict";i.r(e);var a=i("62b9"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"781a":function(t,e,i){"use strict";i.r(e);var a=i("9aca"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"78bd":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),style:t._$g(0,"s"),attrs:{_i:0}},t._l(t._$g(1,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("1-"+r,"sc"),attrs:{_i:"1-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("2-"+r,"sc"),attrs:{src:t._$g("2-"+r,"a-src"),_i:"2-"+r}}),i("v-uni-text",{staticClass:t._$g("3-"+r,"sc"),class:t._$g("3-"+r,"c"),attrs:{_i:"3-"+r}},[t._v(t._$g("3-"+r,"t0-0"))]),t._$g("4-"+r,"i")?i("uni-view",{staticClass:t._$g("4-"+r,"sc"),style:t._$g("4-"+r,"s"),attrs:{_i:"4-"+r}},[t._v(" "+t._$g("4-"+r,"t0-0")+" ")]):t._e()],1)})),1)},n=[]},"78dc":function(t,e,i){var a=i("e093");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("34bfdac2",a,!0,{sourceMap:!1,shadowMode:!1})},7921:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".order-item{margin:32rpx 24rpx;border-radius:16rpx;padding:24rpx;background-color:#fff;position:relative}.order-date{font-size:24rpx;color:#666;font-weight:400}.order-content{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;margin-top:16rpx}.service-image{width:162rpx;height:162rpx;border-radius:24rpx;margin-right:16rpx;background-color:#333}.order-info{width:350rpx;height:162rpx;display:flex;flex-flow:column nowrap;justify-content:flex-start;align-items:flex-start}.service-name{flex:1;font-size:28rpx;color:#000;font-weight:400;margin-bottom:6rpx}.rating{display:flex;align-items:center;margin-bottom:6rpx}.star-icon{width:20rpx;height:20rpx;margin-right:6rpx;background-color:#000}.rating-score{font-size:16rpx;color:#e8101e;margin-left:68rpx}.currency{font-size:24rpx;color:#e8101e}.amount{font-size:32rpx;color:#e8101e;font-weight:500}.address{display:flex;align-items:center}.location-icon{width:24rpx;height:24rpx;margin-right:4rpx}.address-text{font-size:24rpx;color:#999;flex:1}.order-status{position:absolute;top:0;right:0}.status-text{font-size:24rpx;font-weight:400;padding:6rpx 16rpx;color:#28d189;background-color:rgba(40,209,137,.2);border-radius:0 16rpx 0 16rpx}.load-more{text-align:center;padding:0 0 32rpx}.load-date{font-size:24rpx;color:#e8101e}.load-text{font-size:24rpx;color:#999}.nothings-box{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:280rpx 0 0}.nothings-text{font-size:32rpx;font-weight:500;color:#999;text-align:center;font-style:italic}::-webkit-scrollbar{width:0;height:0;color:transparent}",""]),t.exports=e},7935:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.class-page[data-v-01a3e6cc]{padding-bottom:30rpx;width:750rpx}.popupShow[data-v-01a3e6cc]{overflow:hidden;position:fixed}.main-tab-scroll[data-v-01a3e6cc]{position:-webkit-sticky;position:sticky;top:calc(var(--status-bar-height) + 88rpx);z-index:9999;white-space:nowrap}.icon-tab-scroll[data-v-01a3e6cc]{position:relative;z-index:1999}.main-tabs[data-v-01a3e6cc]{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;background:#fff;border-bottom:1rpx solid #f5f5f5;padding:0 24rpx;height:88rpx;gap:40rpx;padding-bottom:20rpx}.main-tab[data-v-01a3e6cc]{line-height:88rpx;position:relative}.tab-text[data-v-01a3e6cc]{font-size:28rpx;color:#666;white-space:nowrap}.main-tab.active .tab-text[data-v-01a3e6cc]{color:#e8101e;font-weight:500}.main-tab.active[data-v-01a3e6cc]::after{content:"";position:absolute;left:50%;bottom:0;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:32rpx;height:6rpx;background:#e8101e;border-radius:3rpx}.icon-tabs[data-v-01a3e6cc]{display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center;background:#fff;padding:24rpx 0 0 24rpx}.icon-tab[data-v-01a3e6cc]{width:110rpx;display:flex;flex-direction:column;align-items:center;margin-right:32rpx;margin-bottom:32rpx}.icon-img[data-v-01a3e6cc]{width:96rpx;height:96rpx;border-radius:48rpx;margin-bottom:12rpx}.icon-text[data-v-01a3e6cc]{font-size:24rpx;color:#3d3d3d}.icon-tab.active .icon-text[data-v-01a3e6cc]{color:#e8101e}.icon-tab.active .icon-img[data-v-01a3e6cc]{border:2rpx solid #e8101e}.service-list[data-v-01a3e6cc]{margin:32rpx 24rpx}.time-filter-popup[data-v-01a3e6cc]{width:750rpx;background-color:#fff;-webkit-transform:translateY(-120%);transform:translateY(-120%);opacity:0;transition:all .3s ease;box-shadow:0 4rpx 12rpx rgba(0,0,0,.1);visibility:hidden;border-radius:0 0 20rpx 20rpx;overflow:hidden;z-index:998;position:absolute;top:66rpx;left:0;right:0}.time-filter-popup.show[data-v-01a3e6cc]{-webkit-transform:translateY(0);transform:translateY(0);opacity:1;visibility:visible}.time-filter-content[data-v-01a3e6cc]{padding:0}.time-option[data-v-01a3e6cc]{display:flex;justify-content:space-between;align-items:center;padding:32rpx;background-color:#fff;position:relative}.time-option[data-v-01a3e6cc]:not(:last-child)::after{content:"";position:absolute;left:32rpx;right:32rpx;bottom:0;height:1rpx;background-color:#eee}.time-option.active[data-v-01a3e6cc]{background-color:#fff5f6}.time-option.active .time-text[data-v-01a3e6cc]{color:#e8101e;font-weight:500}.time-text[data-v-01a3e6cc]{font-size:28rpx;color:#333}.time-discount[data-v-01a3e6cc]{font-size:24rpx;color:#e8101e;padding:4rpx 12rpx;background-color:#fff5f6;border-radius:20rpx}.filter-bar[data-v-01a3e6cc]{position:relative;z-index:999;overflow:hidden}.filter-bar-cont[data-v-01a3e6cc]{height:66rpx;width:750rpx;padding:0 24rpx;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;background-color:#fff;position:relative;z-index:999}.filter-item[data-v-01a3e6cc]{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;margin-right:40rpx;position:relative}.filter-item-text[data-v-01a3e6cc]{font-size:28rpx;color:#666}.filter-item.active .filter-item-text[data-v-01a3e6cc]{color:#e8101e}.sq-icon[data-v-01a3e6cc]{width:16rpx;height:16rpx;margin-left:8rpx}.filter-icon[data-v-01a3e6cc]{width:32rpx;height:32rpx;margin-left:8rpx}.filter-popup[data-v-01a3e6cc]{width:750rpx;position:absolute;top:66rpx;left:0;right:0;background-color:#fff;z-index:99;padding:32rpx 24rpx;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0;transition:all .3s;visibility:hidden;box-sizing:border-box}.filter-popup.show[data-v-01a3e6cc]{-webkit-transform:translateY(0);transform:translateY(0);opacity:1;visibility:visible}.filter-section[data-v-01a3e6cc]{margin-bottom:32rpx}.section-title[data-v-01a3e6cc]{display:inline-block;font-size:28rpx;color:#333;margin-bottom:16rpx}.price-tags[data-v-01a3e6cc],\n.sort-tags[data-v-01a3e6cc],\n.star-tags[data-v-01a3e6cc]{display:flex;flex-wrap:wrap;gap:20rpx}.price-tag[data-v-01a3e6cc],\n.sort-tag[data-v-01a3e6cc],\n.star-tag[data-v-01a3e6cc]{width:220rpx;height:52rpx;text-align:center;line-height:50rpx;border-radius:26rpx;border:1rpx solid #e8101e;font-size:24rpx;color:#3d3d3d;box-sizing:border-box}.price-tag.active[data-v-01a3e6cc],\n.sort-tag.active[data-v-01a3e6cc],\n.star-tag.active[data-v-01a3e6cc]{background-color:#e8101e;color:#fff;border-color:#e8101e}.price-input[data-v-01a3e6cc]{display:flex;justify-content:space-between;align-items:center;margin-top:24rpx}.price-input-field[data-v-01a3e6cc]{width:220rpx;height:52rpx;line-height:50rpx;text-align:center;border:1rpx solid #e8101e;border-radius:26rpx;font-size:24rpx;color:#3d3d3d}.price-separator[data-v-01a3e6cc]{margin:0 16rpx;color:#666}.filter-buttons[data-v-01a3e6cc]{display:flex;gap:34rpx;margin-top:48rpx}.reset-btn[data-v-01a3e6cc],\n.confirm-btn[data-v-01a3e6cc]{flex:1;height:64rpx;border-radius:32rpx;display:flex;align-items:center;justify-content:center;font-size:28rpx}.reset-btn[data-v-01a3e6cc]{background-color:#fff;border:1rpx solid #e8101e;color:#e8101e}.confirm-btn[data-v-01a3e6cc]{background-color:#e8101e;color:#fff}.loading-more[data-v-01a3e6cc],\n.no-more[data-v-01a3e6cc]{text-align:center;font-size:26rpx;color:#999;padding:24rpx 0}.service-nothings[data-v-01a3e6cc]{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:280rpx 0 0}.nothings-text[data-v-01a3e6cc]{font-size:32rpx;font-weight:500;color:#999;text-align:center;font-style:italic}',""]),t.exports=e},7941:function(t,e,i){"use strict";i.r(e);var a=i("e0c1"),n=i("98d1");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("3315");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"77a82b90",null,!1,a["a"],void 0);e["default"]=o.exports},"79a4":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"hao-indexList",props:["letters","isLetters","isIndexToast","idValue","nameValue","currentCity","isCurrentCity","hotCity","isHotCity","isSearch","cityList","isAvatar","avatarValue","isFu","fuValue","isCeil","isIndexAc","indexAcColor","isTop"],data:function(){return{wxsProps:{}}},components:{}}},"79a41":function(t,e,i){"use strict";i.r(e);var a=i("6cd0"),n=i("360f");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("8c5d");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"02271967",null,!1,a["a"],void 0);e["default"]=o.exports},"79c9":function(t,e,i){"use strict";i.r(e);var a=i("2afd"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"79e3":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.uv-popup[data-v-549adfe2]{position:fixed;z-index:99}.uv-popup.top[data-v-549adfe2], .uv-popup.left[data-v-549adfe2], .uv-popup.right[data-v-549adfe2]{top:0}.uv-popup .uv-popup__content[data-v-549adfe2]{display:block;overflow:hidden;position:relative}.uv-popup .uv-popup__content.left[data-v-549adfe2], .uv-popup .uv-popup__content.right[data-v-549adfe2]{padding-top:0;flex:1}.uv-popup .uv-popup__content__close[data-v-549adfe2]{position:absolute}.uv-popup .uv-popup__content__close--hover[data-v-549adfe2]{opacity:.4}.uv-popup .uv-popup__content__close--top-left[data-v-549adfe2]{top:15px;left:15px}.uv-popup .uv-popup__content__close--top-right[data-v-549adfe2]{top:15px;right:15px}.uv-popup .uv-popup__content__close--bottom-left[data-v-549adfe2]{bottom:15px;left:15px}.uv-popup .uv-popup__content__close--bottom-right[data-v-549adfe2]{right:15px;bottom:15px}.fixforpc-z-index[data-v-549adfe2]{z-index:999}.fixforpc-top[data-v-549adfe2]{top:0}',""]),t.exports=e},"7a01":function(t,e,i){var a=i("cfad");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("e425fe42",a,!0,{sourceMap:!1,shadowMode:!1})},"7a08":function(t,e,i){"use strict";i.r(e);var a=i("6d0e"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"7a6f":function(t,e,i){"use strict";i.r(e);var a=i("33d7"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"7ac4":function(t,e,i){"use strict";i.r(e);var a=i("0a72"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"7af2":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.container[data-v-7671268b]{width:750rpx}.popupShow[data-v-7671268b]{overflow:hidden;position:fixed}.flexed[data-v-7671268b]{position:-webkit-sticky;position:sticky;top:88rpx;left:0;z-index:999}.flexed .headerBox[data-v-7671268b]{display:flex;align-items:center;gap:30rpx;background-color:#fff;padding:24rpx 30rpx}.flexed .headerBox .search-box[data-v-7671268b]{width:100%;background-color:#fff;border-radius:8rpx;box-sizing:border-box;position:relative}.flexed .headerBox .search-box .search-inp[data-v-7671268b]{width:100%;height:68rpx;background-color:#f4f5f7;border-radius:34rpx;padding:0 70rpx 0 82rpx;font-size:28rpx;box-sizing:border-box}.flexed .headerBox .search-box .placeholder[data-v-7671268b]{font-weight:400;font-size:28rpx;color:#ccc;line-height:34rpx;text-align:left;font-style:normal}.flexed .headerBox .search-box .search-icon[data-v-7671268b]{width:34rpx;height:34rpx;position:absolute;left:30rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.flexed .filter[data-v-7671268b]{z-index:999;background-color:#fff;padding:32rpx 50rpx 0rpx 50rpx;margin-bottom:32rpx;padding-bottom:35rpx;display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;position:relative}.flexed .filter__left[data-v-7671268b]{display:flex;flex-wrap:nowrap;align-items:center}.flexed .filter__right[data-v-7671268b]{display:flex;flex-wrap:nowrap;align-items:center}.flexed .filter .filter-icon[data-v-7671268b]{width:16rpx;height:10rpx;margin-left:8rpx}.flexed .filter .filter__text[data-v-7671268b]{font-weight:400;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal}.flexed .filter__left__select__bj[data-v-7671268b]{z-index:987;position:fixed;left:0;right:0;top:0;bottom:0;background-color:initial}.flexed .filter__left__select[data-v-7671268b]{z-index:988;position:absolute;background-color:#fff;left:0;right:0;bottom:0;-webkit-transform:translateY(0);transform:translateY(0);opacity:0;transition:all .3s ease;visibility:hidden}.flexed .filter__left__select__item[data-v-7671268b]{margin:30rpx 30rpx 0rpx 30rpx;padding-bottom:30rpx;border-bottom:1px solid #f5f5f5}.flexed .filter__left__select__item__title[data-v-7671268b]{font-weight:400;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal;margin-left:20rpx;display:flex;align-items:center}.flexed .filter__left__select__item__title__icon[data-v-7671268b]{width:25rpx;height:20rpx;margin-left:10rpx}.flexed .filter__left__select .filter__left__select__item.active .filter__left__select__item__title[data-v-7671268b]{color:#e8101e}.flexed .filter__left__select.show[data-v-7671268b]{opacity:1;visibility:visible;-webkit-transform:translateY(100%);transform:translateY(100%)}.price-input[data-v-7671268b]{display:flex;justify-content:space-between;align-items:center;width:370rpx;height:80rpx;background:#f3f6f8;border-radius:10rpx}.price-input .price-input-field[data-v-7671268b]{width:166rpx;height:80rpx;line-height:50rpx;text-align:center;border-radius:26rpx;font-size:26rpx;font-weight:400;color:#3d3d3d}.price-input .price-separator[data-v-7671268b]{height:3rpx;width:38rpx;background-color:#ddd}.time-customize[data-v-7671268b]{width:180rpx;height:80rpx;background:#f3f6f8;border-radius:10rpx;display:flex;align-items:center;justify-content:center}.main-tab-scroll[data-v-7671268b]{position:-webkit-sticky;position:sticky;top:calc(var(--status-bar-height) + 88rpx);z-index:9999;white-space:nowrap}.icon-tab-scroll[data-v-7671268b]{position:relative;z-index:1999}.main-tabs[data-v-7671268b]{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;background:#fff;border-bottom:1rpx solid #f5f5f5;padding-bottom:20rpx;padding-left:30rpx;padding-top:24rpx;height:56rpx;gap:40rpx}.main-tab[data-v-7671268b]{line-height:56rpx;position:relative}.tab-text[data-v-7671268b]{font-weight:400;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.main-tab.active .tab-text[data-v-7671268b]{font-weight:500}.main-tab.active[data-v-7671268b]::after{content:"";position:absolute;left:50%;bottom:0;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:32rpx;height:6rpx;background:#e8101e;border-radius:3rpx}.icon-tabs[data-v-7671268b]{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;background:#fff;padding:30rpx 0 0 30rpx}.icon-tab[data-v-7671268b]{width:110rpx;display:flex;flex-direction:column;align-items:center;margin-right:56rpx;margin-bottom:30rpx}.icon-img[data-v-7671268b]{width:96rpx;height:96rpx;border-radius:48rpx;margin-bottom:12rpx}.icon-text[data-v-7671268b]{font-size:24rpx;color:#3d3d3d}.icon-tab.active .icon-text[data-v-7671268b]{color:#e8101e}.icon-tab.active .icon-img[data-v-7671268b]{border:2rpx solid #e8101e}.service-list[data-v-7671268b]{margin:32rpx 24rpx}',""]),t.exports=e},"7b04":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-safe-bottom",data:function(){return{wxsProps:{}}},components:{}}},"7b2a":function(t,e,i){"use strict";i.r(e);var a=i("de94"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"7b2c":function(t,e,i){"use strict";i.r(e);var a=i("1339"),n=i("a255");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("c6eb");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"227ce174",null,!1,a["a"],void 0);e["default"]=o.exports},"7b54":function(t,e,i){"use strict";i.r(e);var a=i("7b04"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"7b56":function(t,e,i){"use strict";i.r(e);var a=i("387d"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"7b5a":function(t,e,i){"use strict";i.r(e);var a=i("4438"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"7b7b":function(t,e,i){"use strict";i.r(e);var a=i("bd6f"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"7b7c":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";body{background:#f5f5f5}.set_item{display:flex;align-items:center;justify-content:space-between;padding:15rpx 20rpx;background:#fff;border-radius:20rpx;margin:40rpx 20rpx 0}.set_item .set_item_left{display:flex;align-items:center;gap:14rpx;font-weight:500;font-size:28rpx;color:#333}.set_item .set_item_left .set_item_left_logo{width:32rpx;height:32rpx}.set_item .set_item_left .set_item_left_right{width:9rpx;height:16rpx}.set_item .set_item_right{position:relative;width:134rpx;height:50rpx;overflow:hidden}.set_item .set_item_right .btn_change{position:absolute;box-sizing:border-box;right:0;top:0;width:134rpx;height:50rpx;line-height:50rpx;border-radius:30rpx;font-size:24rpx;font-weight:500}.set_item .set_item_right .btn_change.btn_change_yes{box-sizing:border-box;background:#e8101e;color:#fff;text-align:left;padding-left:15rpx;z-index:10;transition:all .3s ease}.set_item .set_item_right .btn_change.btn_change_no{box-sizing:border-box;background:#cecfd5;color:#fff;text-align:right;padding-right:15rpx}.set_item .set_item_right .btn_change_ball{position:absolute;top:6rpx;width:38rpx;height:38rpx;background:#fff;border-radius:50%;box-shadow:0rpx 2rpx 4rpx rgba(0,0,0,.1);transition:all .3s ease;z-index:100}',""]),t.exports=e},"7bd1":function(t,e,i){"use strict";i.r(e);var a=i("6b0f"),n=i("adc8");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("1eeb");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"00461db0",null,!1,a["a"],void 0);e["default"]=o.exports},"7be3":function(t,e,i){var a=i("ba20");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("e02d5238",a,!0,{sourceMap:!1,shadowMode:!1})},"7c28":function(t,e,i){"use strict";var a=i("7e3f"),n=i.n(a);n.a},"7c67":function(t,e,i){"use strict";var a=i("5b01"),n=i.n(a);n.a},"7c79":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".content{padding:32rpx 20rpx;box-sizing:border-box}",""]),t.exports=e},"7c83":function(t,e,i){"use strict";i.r(e);var a=i("92a9"),n=i("10fc");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("981f");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"4ef538f6",null,!1,a["a"],void 0);e["default"]=o.exports},"7c97":function(t,e,i){"use strict";i.r(e);var a=i("babb"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"7cc1":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("1ef6");e=a(!1);var s=n(r);e.push([t.i,'body{position:relative;background-color:#fff}.detail-page::before{content:"";position:fixed;top:0;left:0;right:0;height:1200rpx!important;background-image:url('+s+");background-size:cover;background-position:top;background-repeat:no-repeat;z-index:1}.content-part{position:relative;left:0;right:0;z-index:9}.custom-nav{position:fixed;top:0;left:0;right:0;height:88rpx;background-color:initial;display:flex;align-items:center;padding:0 32rpx;z-index:100;\r\n\r\n\r\npadding-top:var(--status-bar-height)\n}.nav-back{width:48rpx;height:48rpx;display:flex;align-items:center;justify-content:center}.back-icon{width:32rpx;height:32rpx}.nav-title{flex:1;text-align:center;font-size:36rpx;font-weight:500;color:#fff}.status-section{height:160rpx;display:flex;align-items:center;justify-content:center\n}.status-text{font-size:40rpx;color:#fff;font-weight:500}.service-card{margin:24rpx;background-color:#fff;border-radius:16rpx;padding:24rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5);display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center}.location-info{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center}.location-icon{width:60rpx;height:60rpx;margin-right:32rpx}.address-info{flex:1}.name-phone{display:flex;align-items:center}.name{font-size:32rpx;color:#333;font-weight:500;margin-right:16rpx}.phone{font-size:28rpx;color:#666}.address{font-size:28rpx;color:#666;margin-top:8rpx}.btn-map,.btn-phone{width:64rpx;height:64rpx;flex-shrink:0}.btn-map{margin:0 28rpx}.booking-card{margin:24rpx;background-color:#fff;border-radius:16rpx;padding:24rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24rpx}.card-title{font-size:32rpx;color:#333;font-weight:500}.update-time{font-size:28rpx;color:#333;padding-right:4rpx}.update-change{font-size:28rpx;color:#666}.service-item{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;margin-bottom:32rpx}.service-image{width:160rpx;height:160rpx;border-radius:16rpx;margin-right:24rpx;background-color:#e2e2e2}.service-info{flex:1;height:160rpx;display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:flex-start;margin-right:24rpx}.service-name{font-size:28rpx;color:#333;margin-bottom:8rpx}.service-price{font-size:32rpx;color:#ff4d6b;font-weight:500}.service-count{font-size:28rpx;color:#666}.service-real{display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:baseline;padding-top:24rpx;border-top:1rpx solid rgba(0,0,0,.05)}.real-lable{font-size:24rpx;color:#333}.real-price{font-size:32rpx;font-weight:500;color:#e8101e}.order-card{margin:24rpx;background-color:#fff;border-radius:16rpx;padding:24rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.info-item{display:flex;justify-content:space-between;margin-top:16rpx}.label{font-size:28rpx;color:#999}.value{font-size:28rpx;color:#333}.bottom-buttons{position:fixed;left:0;right:0;bottom:0;height:128rpx;background-color:#fff;display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-end;box-shadow:0 -2rpx 8rpx rgba(0,0,0,.05);padding:0 24rpx 0 78rpx;\r\n\r\nz-index:999}.contact-button{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center}.contact-text{font-size:24rpx;color:#666}.tell-icon{width:36rpx;height:36rpx;margin-right:8rpx}.handel-button{width:240rpx;height:64rpx;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;border-radius:32rpx;margin-left:20rpx}.btn-border{border:1rpx solid #e8101e;background-color:#fff;box-sizing:border-box;margin-left:20rpx}.btn-bg{background-color:#e8101e}.button-text{font-size:28rpx;font-weight:400;color:#fff}.btn-border .button-text{font-size:28rpx;font-weight:400;color:#e8101e}\n.permission.transform{top:calc(var(--status-bar-height) + 88rpx + 20rpx);opacity:1;visibility:visible}\r\n\r\n\r\n\r\n",""]),t.exports=e},"7ce4":function(t,e,i){"use strict";i.r(e);var a=i("3c1d"),n=i("2616");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("d8d5");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"7d13":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("ec2d")),r=a(i("f8df")),s={data:function(){return{wxsProps:{}}},components:{searchBox:n.default,CommonList:r.default}};e.default=s},"7d22":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"tips-popup",props:["show"],data:function(){return{wxsProps:{}}},components:{}}},"7d2e":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"manHourCard",props:["info","index"],data:function(){return{wxsProps:{}}},components:{}}},"7d5e":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this.$createElement,e=this._self._c||t;return e("uni-view",{staticClass:this._$g(0,"sc"),attrs:{_i:0}},[e("v-uni-image",{staticClass:this._$g(1,"sc"),style:this._$g(1,"s"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/57309ff1-476c-43ec-8bad-f9e529e0a25b",mode:"widthFix",_i:1}}),e("v-uni-text",{staticClass:this._$g(2,"sc"),attrs:{_i:2}},[this._v(this._$g(2,"t0-0"))])],1)},n=[]},"7d64":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"noData",props:["tipText","top"],data:function(){return{wxsProps:{}}},components:{}}},"7d69":function(t,e,i){var a=i("569d");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("5ab00692",a,!0,{sourceMap:!1,shadowMode:!1})},"7d79":function(t,e,i){"use strict";i.r(e);var a=i("98ae"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"7e11":function(t,e,i){var a=i("79e3");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("5abcbfcc",a,!0,{sourceMap:!1,shadowMode:!1})},"7e3f":function(t,e,i){var a=i("def92");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("32d39de1",a,!0,{sourceMap:!1,shadowMode:!1})},"7e4a":function(t,e,i){"use strict";i.r(e);var a=i("8846"),n=i("ec38");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("c5a4");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"01ddbf25",null,!1,a["a"],void 0);e["default"]=o.exports},"7e4f":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),style:t._$g(0,"s"),attrs:{_i:0}},[t._$g(1,"i")?i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:"/static/images/search_1.png",_i:3}}),i("v-uni-input",{staticClass:t._$g(4,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u4f60\u7684\u670d\u52a1\u5730\u5740",_i:4},on:{input:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(4,"v-model"),callback:function(){},expression:"inputKey"}})],1)],1):t._e(),t._$g(5,"i")?i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-scroll-view",{staticStyle:{width:"100%",height:"100%"},attrs:{"scroll-y":!0,_i:6}},[i("uni-view",{attrs:{_i:7}},t._l(t._$g(8,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("8-"+r,"sc"),attrs:{_i:"8-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g("9-"+r,"i")?i("uni-view",{staticClass:t._$g("9-"+r,"sc"),attrs:{_i:"9-"+r}},[i("v-uni-image",{staticClass:t._$g("10-"+r,"sc"),attrs:{src:t._$g("10-"+r,"a-src"),_i:"10-"+r}})],1):t._e(),i("uni-view",{staticClass:t._$g("11-"+r,"sc"),attrs:{_i:"11-"+r}},[i("uni-view",{staticClass:t._$g("12-"+r,"sc"),attrs:{_i:"12-"+r}},[t._v(t._$g("12-"+r,"t0-0"))]),t._$g("13-"+r,"i")?i("uni-view",{staticClass:t._$g("13-"+r,"sc"),attrs:{_i:"13-"+r}},[t._v(t._$g("13-"+r,"t0-0"))]):t._e()],1)],1)})),1)],1)],1):t._e(),t._$g(14,"i")?i("uni-view",{staticClass:t._$g(14,"sc"),style:t._$g(14,"s"),attrs:{_i:14}},[t._$g(15,"i")?i("v-uni-image",{staticClass:t._$g(15,"sc"),attrs:{src:"/static/haoIndexListImg/top.png",_i:15},on:{click:function(e){return t.$handleViewEvent(e)}}}):t._e(),t._l(t._$g(16,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("16-"+r,"sc"),class:t._$g("16-"+r,"c"),style:t._$g("16-"+r,"s"),attrs:{_i:"16-"+r},on:{touchmove:function(e){return t.$handleViewEvent(e)},touchend:function(e){return t.$handleViewEvent(e)},click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("16-"+r,"t0-0")+" ")])}))],2):t._e(),t._$g(17,"i")?i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v(t._$g(17,"t0-0"))]):t._e(),t._$g(18,"i")?i("uni-view",{staticClass:t._$g(18,"sc"),style:t._$g(18,"s"),attrs:{_i:18}},[t._v(t._$g(18,"t0-0"))]):t._e(),i("v-uni-scroll-view",{directives:[{name:"show",rawName:"v-show",value:t._$g(19,"v-show"),expression:"_$g(19,'v-show')"}],staticClass:t._$g(19,"sc"),style:t._$g(19,"s"),attrs:{"scroll-y":!0,"scroll-top":t._$g(19,"a-scroll-top"),"scroll-into-view":t._$g(19,"a-scroll-into-view"),_i:19},on:{scroll:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{attrs:{_i:20}},[t._$g(21,"i")?i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._$g(22,"i")?i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v("\u70ed\u95e8\u57ce\u5e02")]),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},t._l(t._$g(25,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("25-"+r,"sc"),attrs:{_i:"25-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(t._$g("25-"+r,"t0-0"))])})),1)],1):t._e()],1):t._e(),t._l(t._$g(26,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("26-"+r,"sc"),attrs:{_i:"26-"+r}},[i("uni-view",{staticClass:t._$g("27-"+r,"sc"),attrs:{id:t._$g("27-"+r,"a-id"),_i:"27-"+r}},[t._v(t._$g("27-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("28-"+r,"sc"),attrs:{_i:"28-"+r}},t._l(t._$g("29-"+r,"f"),(function(e,a,n,s){return i("uni-view",{key:e,staticClass:t._$g("29-"+r+"-"+s,"sc"),attrs:{_i:"29-"+r+"-"+s},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g("30-"+r+"-"+s,"i")?i("uni-view",{staticClass:t._$g("30-"+r+"-"+s,"sc"),attrs:{_i:"30-"+r+"-"+s}},[i("v-uni-image",{staticClass:t._$g("31-"+r+"-"+s,"sc"),attrs:{src:t._$g("31-"+r+"-"+s,"a-src"),_i:"31-"+r+"-"+s}})],1):t._e(),i("uni-view",{staticClass:t._$g("32-"+r+"-"+s,"sc"),attrs:{_i:"32-"+r+"-"+s}},[i("uni-view",{staticClass:t._$g("33-"+r+"-"+s,"sc"),attrs:{_i:"33-"+r+"-"+s}},[t._v(t._$g("33-"+r+"-"+s,"t0-0"))]),t._$g("34-"+r+"-"+s,"i")?i("uni-view",{staticClass:t._$g("34-"+r+"-"+s,"sc"),attrs:{_i:"34-"+r+"-"+s}},[t._v(t._$g("34-"+r+"-"+s,"t0-0"))]):t._e()],1)],1)})),1)],1)}))],2)],1)],1)},n=[]},"7eaf":function(t,e,i){var a=i("e5c8");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("3eeae8b4",a,!0,{sourceMap:!1,shadowMode:!1})},"7f20":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this.$createElement,e=this._self._c||t;return e("uni-view",{staticClass:this._$g(0,"sc"),style:this._$g(0,"s"),attrs:{_i:0}},[this._t("default",null,{_i:1})],2)},n=[]},"7f3e":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("ec2d")),r=a(i("f8df")),s={data:function(){return{wxsProps:{}}},components:{searchBox:n.default,CommonList:r.default}};e.default=s},"7faf":function(t,e,i){"use strict";var a=i("09a8"),n=i.n(a);n.a},"7fc8":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[t._$g(1,"i")?i("uni-view",{attrs:{_i:1}},[i("v-uni-scroll-view",{staticClass:t._$g(2,"sc"),attrs:{"scroll-x":!0,"show-scrollbar":!1,_i:2}},t._l(t._$g(3,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("3-"+r,"sc"),class:t._$g("3-"+r,"c"),attrs:{_i:"3-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("3-"+r,"t0-0")+" ")])})),1),i("v-uni-scroll-view",{staticClass:t._$g(4,"sc"),attrs:{"scroll-y":!0,"refresher-enabled":!0,"refresher-triggered":t._$g(4,"a-refresher-triggered"),_i:4},on:{scrolltolower:function(e){return t.$handleViewEvent(e)},refresherrefresh:function(e){return t.$handleViewEvent(e)}}},[t._l(t._$g(5,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r}},[i("uni-view",{staticClass:t._$g("6-"+r,"sc"),attrs:{_i:"6-"+r}},[i("uni-view",{staticClass:t._$g("7-"+r,"sc"),attrs:{_i:"7-"+r}},[i("v-uni-text",{staticClass:t._$g("8-"+r,"sc"),attrs:{_i:"8-"+r}},[t._v(t._$g("8-"+r,"t0-0"))])],1),i("v-uni-text",{staticClass:t._$g("9-"+r,"sc"),attrs:{_i:"9-"+r}},[t._v("\u8ba2\u5355\u7f16\u53f7\uff1a"+t._$g("9-"+r,"t0-0"))]),i("v-uni-text",{staticClass:t._$g("10-"+r,"sc"),class:t._$g("10-"+r,"c"),attrs:{_i:"10-"+r}},[t._v(t._$g("10-"+r,"t0-0"))])],1),i("uni-view",{staticClass:t._$g("11-"+r,"sc"),attrs:{_i:"11-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g("12-"+r,"i")?i("v-uni-image",{staticClass:t._$g("12-"+r,"sc"),attrs:{src:t._$g("12-"+r,"a-src"),mode:"aspectFill",_i:"12-"+r}}):i("uni-view",{staticClass:t._$g("13-"+r,"sc"),attrs:{_i:"13-"+r}}),i("uni-view",{staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[i("v-uni-text",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r}},[t._v(t._$g("15-"+r,"t0-0"))]),t._$g("16-"+r,"i")?i("uni-view",{staticClass:t._$g("16-"+r,"sc"),attrs:{_i:"16-"+r}},[i("v-uni-image",{staticClass:t._$g("17-"+r,"sc"),attrs:{src:"/static/images/time_icon.png",_i:"17-"+r}}),i("v-uni-text",{attrs:{_i:"18-"+r}},[t._v(t._$g("18-"+r,"t0-0"))])],1):t._e(),t._$g("19-"+r,"i")?i("uni-view",{staticClass:t._$g("19-"+r,"sc"),attrs:{_i:"19-"+r}},[i("v-uni-image",{staticClass:t._$g("20-"+r,"sc"),attrs:{src:"/static/images/position_icon.png",_i:"20-"+r}}),i("v-uni-text",{attrs:{_i:"21-"+r}},[t._v(t._$g("21-"+r,"t0-0")+t._$g("21-"+r,"t0-1")+" ")])],1):t._e()],1)],1),i("uni-view",{staticClass:t._$g("22-"+r,"sc"),attrs:{_i:"22-"+r}},[i("uni-view",{staticClass:t._$g("23-"+r,"sc"),attrs:{_i:"23-"+r}},[t._$g("24-"+r,"i")?i("v-uni-image",{staticClass:t._$g("24-"+r,"sc"),attrs:{src:"/static/images/delete_icon.png",_i:"24-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}}):t._e()],1),i("uni-view",{staticClass:t._$g("25-"+r,"sc"),attrs:{_i:"25-"+r}},[t._$g("26-"+r,"i")?i("v-uni-text",{staticClass:t._$g("26-"+r,"sc"),attrs:{_i:"26-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88\u8ba2\u5355")]):t._e(),t._$g("27-"+r,"i")?i("v-uni-text",{staticClass:t._$g("27-"+r,"sc"),attrs:{_i:"27-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u7533\u8bf7\u9000\u6b3e")]):t._e(),i("v-uni-text",{staticClass:t._$g("28-"+r,"sc"),attrs:{_i:"28-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u8054\u7cfb\u5ba2\u670d")]),t._$g("29-"+r,"i")?i("v-uni-text",{staticClass:t._$g("29-"+r,"sc"),attrs:{_i:"29-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u7acb\u5373\u652f\u4ed8")]):t._e(),t._$g("30-"+r,"i")?i("v-uni-text",{staticClass:t._$g("30-"+r,"sc"),attrs:{_i:"30-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u8bc4\u4ef7")]):t._e(),t._$g("31-"+r,"i")?i("v-uni-text",{staticClass:t._$g("31-"+r,"sc"),attrs:{_i:"31-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u518d\u6765\u4e00\u5355")]):t._e(),t._$g("32-"+r,"i")?i("v-uni-text",{staticClass:t._$g("32-"+r,"sc"),attrs:{_i:"32-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u67e5\u770b\u6295\u8bc9")]):t._e()],1)],1)],1)})),t._$g(33,"i")?i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[t._v("\u52a0\u8f7d\u4e2d...")]):t._e(),t._$g(34,"i")?i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[t._v("\u6ca1\u6709\u66f4\u591a\u4e86")]):t._e(),t._$g(35,"i")?i("noData",{attrs:{_i:35}}):t._e(),i("uni-view",{staticClass:t._$g(36,"sc"),class:t._$g(36,"c"),attrs:{_i:36}},[i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[t._v("\u5f53\u60a8\u9700\u8981\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0\u5ba2\u670d\u7684\u65f6\u5019\uff0c\u9700\u8981\u83b7\u53d6\u62e8\u6253\u7535\u8bdd\u6743\u9650\u3002")])],1)],2)],1):i("uni-view",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[i("v-uni-image",{staticClass:t._$g(40,"sc"),attrs:{src:"/static/images/no_login.png",mode:"aspectFit",_i:40}}),i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[i("v-uni-text",{staticClass:t._$g(42,"sc"),attrs:{_i:42},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u524d\u53bb\u767b\u5f55")])],1)],1)],1)},r=[]},"7feb":function(t,e,i){var a=i("d071");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("50661ee0",a,!0,{sourceMap:!1,shadowMode:!1})},"804d":function(t,e,i){"use strict";i.r(e);var a=i("236c"),n=i("bf37");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("2bf6");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"864c6518",null,!1,a["a"],void 0);e["default"]=o.exports},8088:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{ref:"limepainter",staticClass:t._$g(0,"sc"),attrs:{_i:0}},[t._$g(1,"i")?i("uni-view",{style:t._$g(1,"s"),attrs:{_i:1}},[t._$g(2,"i")?i("v-uni-canvas",{staticClass:t._$g(2,"sc"),style:t._$g(2,"s"),attrs:{id:t._$g(2,"a-id"),type:"2d",_i:2}}):i("v-uni-canvas",{staticClass:t._$g(3,"sc"),style:t._$g(3,"s"),attrs:{id:t._$g(3,"a-id"),"canvas-id":t._$g(3,"a-canvas-id"),width:t._$g(3,"a-width"),height:t._$g(3,"a-height"),hidpi:t._$g(3,"a-hidpi"),_i:3}})],1):t._e(),t._t("default",null,{_i:4})],2)},n=[]},"809c":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._v("\u8ba2\u5355\u7f16\u53f7\uff1a"+t._$g(2,"t0-0"))]),t._$g(3,"i")?i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._v(t._$g(3,"t0-0"))]):t._e()],1),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:t._$g(5,"a-src"),mode:"aspectFill",_i:5}}),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v(t._$g(9,"t0-0"))]),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\uffe5"+t._$g(10,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u670d\u52a1\u8303\u56f4\uff1a"+t._$g(11,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v("\u4e0b\u5355\u65f6\u95f4\uff1a"+t._$g(12,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v("\u4f7f\u7528\u65f6\u6bb5\uff1a"+t._$g(13,"t0-0"))]),t._$g(14,"i")?i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._$g(15,"i")?i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u53d6\u6d88\u8ba2\u5355")]):t._e(),t._$g(16,"i")?i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u63a5\u5355")]):t._e(),t._$g(17,"i")?i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u5f00\u59cb\u670d\u52a1")]):t._e(),t._$g(18,"i")?i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u670d\u52a1\u5b8c\u6210")]):t._e()],1):t._e()],1)},n=[]},"80d3":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{mode:"widthFix",src:t._$g(4,"a-src"),_i:4}}),i("v-uni-text",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v(t._$g(5,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{attrs:{_i:9}},[i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v(t._$g(10,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v(t._$g(11,"t0-0"))])],1),i("v-uni-image",{staticClass:t._$g(12,"sc"),attrs:{src:"/static/images/order_phone.png",mode:"aspectFit",_i:12},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("v-uni-image",{staticClass:t._$g(14,"sc"),attrs:{src:"/static/images/icons/position.png",_i:14},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("v-uni-text",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v("\u5230\u5bb6\u5730\u5740:"+t._$g(15,"t0-0")+t._$g(15,"t0-1"))])],1)],1)],1),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v("\u670d\u52a1\u65f6\u6bb5")]),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\u9884\u7ea6\u5f00\u59cb\u65f6\u95f4\uff1a"+t._$g(18,"t0-0")+" ")]),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v(" \u9884\u7ea6\u7ed3\u675f\u65f6\u95f4\uff1a"+t._$g(19,"t0-0")+" ")])],1),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v("\u9884\u7ea6\u4fe1\u606f")]),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._$g(23,"i")?i("v-uni-image",{staticClass:t._$g(23,"sc"),attrs:{src:t._$g(23,"a-src"),mode:"aspectFill",_i:23}}):t._e(),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[i("v-uni-text",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[t._v(t._$g(26,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v("\xd71")])],1),i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[i("v-uni-text",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v("\xa5")]),i("v-uni-text",{attrs:{_i:30}},[t._v(t._$g(30,"t0-0"))])],1)],1)],1),i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[i("v-uni-text",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v("\u5b9e\u4ed8\u91d1\u989d\uff1a")]),i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[i("v-uni-text",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[t._v("\uffe5")]),i("v-uni-text",{attrs:{_i:35}},[t._v(t._$g(35,"t0-0"))])],1)],1)],1),i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v("\u8ba2\u5355\u4fe1\u606f")]),i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[i("v-uni-text",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v("\u8ba2\u5355\u7f16\u53f7")]),i("v-uni-text",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[t._v(t._$g(40,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[i("v-uni-text",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[t._v("\u4e0b\u5355\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(43,"sc"),attrs:{_i:43}},[t._v(t._$g(43,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(44,"sc"),attrs:{_i:44}},[i("v-uni-text",{staticClass:t._$g(45,"sc"),attrs:{_i:45}},[t._v("\u670d\u52a1\u65f6\u957f")]),i("v-uni-text",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[t._v(t._$g(46,"t0-0")+"\u5206\u949f")])],1),t._$g(47,"i")?i("uni-view",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[i("v-uni-text",{staticClass:t._$g(48,"sc"),attrs:{_i:48}},[t._v("\u652f\u4ed8\u65b9\u5f0f")]),i("v-uni-text",{staticClass:t._$g(49,"sc"),attrs:{_i:49}},[t._v(t._$g(49,"t0-0"))])],1):t._e(),t._$g(50,"i")?i("uni-view",{staticClass:t._$g(50,"sc"),attrs:{_i:50}},[i("v-uni-text",{staticClass:t._$g(51,"sc"),attrs:{_i:51}},[t._v("\u652f\u4ed8\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(52,"sc"),attrs:{_i:52}},[t._v(t._$g(52,"t0-0"))])],1):t._e(),t._$g(53,"i")?i("uni-view",{staticClass:t._$g(53,"sc"),attrs:{_i:53}},[i("v-uni-text",{staticClass:t._$g(54,"sc"),attrs:{_i:54}},[t._v("\u5f00\u59cb\u670d\u52a1\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(55,"sc"),attrs:{_i:55}},[t._v(t._$g(55,"t0-0"))])],1):t._e(),t._$g(56,"i")?i("uni-view",{staticClass:t._$g(56,"sc"),attrs:{_i:56}},[i("v-uni-text",{staticClass:t._$g(57,"sc"),attrs:{_i:57}},[t._v("\u670d\u52a1\u5b8c\u6210\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(58,"sc"),attrs:{_i:58}},[t._v(t._$g(58,"t0-0"))])],1):t._e()],1)],1),i("uni-view",{staticClass:t._$g(59,"sc"),attrs:{_i:59}},[t._$g(60,"i")?i("uni-view",{staticClass:t._$g(60,"sc"),attrs:{_i:60},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g(61,"sc"),attrs:{_i:61}},[t._v("\u53d6\u6d88\u8ba2\u5355")])],1):t._e(),t._$g(62,"i")?i("uni-view",{staticClass:t._$g(62,"sc"),attrs:{_i:62},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g(63,"sc"),attrs:{_i:63}},[t._v("\u63a5\u5355")])],1):t._e(),t._$g(64,"i")?i("uni-view",{staticClass:t._$g(64,"sc"),attrs:{_i:64},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g(65,"sc"),attrs:{_i:65}},[t._v("\u5f00\u59cb\u670d\u52a1")])],1):t._e(),t._$g(66,"i")?i("uni-view",{staticClass:t._$g(66,"sc"),attrs:{_i:66},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g(67,"sc"),attrs:{_i:67}},[t._v("\u670d\u52a1\u5b8c\u6210")])],1):t._e()],1),i("serviceCodeInput",{attrs:{_i:68},on:{close:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(69,"sc"),class:t._$g(69,"c"),attrs:{_i:69}},[i("uni-view",{staticClass:t._$g(70,"sc"),attrs:{_i:70}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(71,"sc"),attrs:{_i:71}},[t._v("\u5f53\u60a8\u9700\u8981\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0\u5ba2\u670d\u7684\u65f6\u5019\uff0c\u9700\u8981\u83b7\u53d6\u62e8\u6253\u7535\u8bdd\u6743\u9650\u3002")])],1)],1)},r=[]},"80e1":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("1ef6");e=a(!1);var s=n(r);e.push([t.i,'body{position:relative;background-color:#fff}.detail-page::before{content:"";position:fixed;top:0;left:0;right:0;height:1200rpx!important;background-image:url('+s+");background-size:cover;background-position:top;background-repeat:no-repeat;z-index:1}.content-part{position:relative;left:0;right:0;z-index:9}.custom-nav{position:fixed;top:0;left:0;right:0;height:88rpx;background-color:initial;display:flex;align-items:center;padding:0 32rpx;z-index:100;padding-top:var(--status-bar-height)}.nav-back{width:48rpx;height:48rpx;display:flex;align-items:center;justify-content:center}.back-icon{width:32rpx;height:32rpx}.nav-title{flex:1;text-align:center;font-size:36rpx;font-weight:500;color:#fff}.status-section{display:flex;align-items:center;justify-content:center;gap:20rpx;padding-top:55rpx;padding-bottom:50rpx}.status-section .status-section-image{width:52rpx}.status-text{font-size:44rpx;color:#333;font-weight:600}.service-card{margin:0 30rpx 20rpx;background-color:#fff;border-radius:20rpx;padding:30rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.location-info{display:flex;flex-direction:column;gap:24rpx}.location-icon{width:44rpx;height:44rpx;margin-right:30rpx;flex-shrink:0}.address-info{display:flex;align-items:center;flex:1}.name-phone{display:flex;align-items:center;flex-wrap:nowrap;justify-content:space-between}.name{font-size:30rpx;color:#333;font-weight:500;margin-right:20rpx}.phone{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx}.address{font-size:28rpx;color:#666;margin-top:8rpx}.btn-map,\n.btn-phone{width:64rpx;height:64rpx;flex-shrink:0}.btn-map{margin:0 28rpx}.booking-card{margin:0rpx 30rpx 20rpx;background-color:#fff;border-radius:20rpx;padding:34rpx 30rpx 40rpx 20rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.booking-card .card_title{font-weight:500;font-size:32rpx;color:#333;margin-bottom:40rpx}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24rpx}.card-title{font-size:32rpx;color:#3d3d3d;font-weight:500}.update-time{font-size:28rpx;color:#333;padding-right:4rpx}.update-change{font-size:28rpx;color:#666}.service-item{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;margin-bottom:32rpx}.service-image{width:160rpx;height:160rpx;border-radius:16rpx;margin-right:24rpx;background-color:#e2e2e2}.service-info{flex:1;height:160rpx;display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:flex-start;margin-right:24rpx}.service-info .service-box{width:100%;gap:8rpx;display:flex;justify-content:space-between}.service-info .service-box .service-count{flex-shrink:0}.service-info .service-box .service-name{flex:1}.service-name{font-weight:500;font-size:30rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal}.service-price{font-size:34rpx;color:#333;font-weight:500}.service-price .icon{font-size:20rpx;font-weight:500}.service-count{font-weight:500;font-size:26rpx;color:#999;line-height:34rpx;text-align:left;font-style:normal}.service-real{display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:baseline;padding-top:24rpx;border-top:1rpx solid rgba(0,0,0,.05)}.real-lable{font-size:30rpx;color:#333}.real-price{font-size:32rpx;font-weight:500;color:#e8101e}.real-price .icon{font-size:20rpx}.order-card{margin:30rpx;background-color:#fff;border-radius:16rpx;padding:36rpx 20rpx 40rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.order-card .card_title{font-weight:500;font-size:32rpx;color:#333;padding-bottom:10rpx}.time_card{margin:30rpx;background-color:#fff;border-radius:16rpx;padding:36rpx 20rpx 40rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.time_card .card_title{font-weight:500;font-size:32rpx;color:#333;padding-bottom:16rpx}.time_card .card_time{font-size:30rpx;line-height:30rpx;color:#333;margin-top:18rpx}.info-item{display:flex;justify-content:space-between;margin-top:30rpx}.label{font-size:28rpx;color:#999}.value{font-size:28rpx;color:#333}.bottom-buttons{position:fixed;left:0;right:0;bottom:0;height:128rpx;background-color:#fff;display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-end;box-shadow:0 -2rpx 8rpx rgba(0,0,0,.05);padding:0 24rpx 0 78rpx;z-index:999}.contact-button{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center}.contact-text{font-size:24rpx;color:#666}.tell-icon{width:36rpx;height:36rpx;margin-right:8rpx}.handel-button{width:186rpx;height:72rpx;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;border-radius:36rpx;margin-left:60rpx}.btn-border{border:2rpx solid #e8101e;background-color:#fff;box-sizing:border-box;margin-left:60rpx}.btn-bg{background-color:#e8101e}.button-text{font-size:28rpx;font-weight:400;color:#fff}.btn-border .button-text{font-size:28rpx;font-weight:400;color:#e8101e}.permission.transform{top:calc(var(--status-bar-height) + 88rpx + 20rpx);opacity:1;visibility:visible}.detail-page{padding-bottom:calc(120rpx + env(safe-area-inset-bottom))}",""]),t.exports=e},8130:function(t,e,i){var a=i("ee07");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("e891d56e",a,!0,{sourceMap:!1,shadowMode:!1})},"815b":function(t,e,i){"use strict";var a=i("db72"),n=i.n(a);n.a},"816c":function(t,e,i){"use strict";i.r(e);var a=i("8cec"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},8174:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.uv-line-1[data-v-5d1fcf43]{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:1;-webkit-box-orient:vertical!important}.uv-line-2[data-v-5d1fcf43]{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:2;-webkit-box-orient:vertical!important}.uv-line-3[data-v-5d1fcf43]{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:3;-webkit-box-orient:vertical!important}.uv-line-4[data-v-5d1fcf43]{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:4;-webkit-box-orient:vertical!important}.uv-line-5[data-v-5d1fcf43]{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:5;-webkit-box-orient:vertical!important}uni-view[data-v-5d1fcf43], uni-scroll-view[data-v-5d1fcf43], uni-swiper-item[data-v-5d1fcf43]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-picker[data-v-5d1fcf43]{position:relative}.uv-picker__view__column[data-v-5d1fcf43]{display:flex;flex-direction:row;flex:1;justify-content:center}.uv-picker__view__column__item[data-v-5d1fcf43]{display:flex;flex-direction:row;justify-content:center;align-items:center;font-size:16px;text-align:center;display:block;color:#303133}.uv-picker__view__column__item--disabled[data-v-5d1fcf43]{cursor:not-allowed;opacity:.35}.uv-picker--loading[data-v-5d1fcf43]{position:absolute;top:0;right:0;left:0;bottom:0;display:flex;flex-direction:row;justify-content:center;align-items:center;background-color:hsla(0,0%,100%,.87);z-index:1000}',""]),t.exports=e},"81b4":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$g(0,"i")?i("uni-view",{staticClass:t._$g(0,"sc"),class:t._$g(0,"c"),style:t._$g(0,"s"),attrs:{_i:0}},[t._$g(1,"i")?i("uni-view",{ref:"ani",staticClass:t._$g(1,"sc"),class:t._$g(1,"c"),style:t._$g(1,"s"),attrs:{_i:1}},[t._$g(2,"i")?t._l(t._$g(3,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("3-"+r,"sc"),attrs:{_i:"3-"+r}})})):t._e()],2):t._e(),t._$g(4,"i")?i("v-uni-text",{staticClass:t._$g(4,"sc"),style:t._$g(4,"s"),attrs:{_i:4}},[t._v(t._$g(4,"t0-0"))]):t._e()],1):t._e()},n=[]},"81da":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"CustomNavbar",props:["title","showBack","showHeadle","headleSrc","backgroundColor","titleColor","borderBottom","nowStyle","leftImg","backgroundImage"],data:function(){return{wxsProps:{}}},components:{}}},"81ee":function(t,e,i){"use strict";i.r(e);var a=i("bcec"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},8254:function(t,e,i){"use strict";var a=i("ed37"),n=i.n(a);n.a},"828b":function(t,e,i){"use strict";function a(t,e,i,a,n,r,s,o,c,l){var d,u="function"===typeof t?t.options:t;if(c){u.components||(u.components={});var f=Object.prototype.hasOwnProperty;for(var p in c)f.call(c,p)&&!f.call(u.components,p)&&(u.components[p]=c[p])}if(l&&("function"===typeof l.beforeCreate&&(l.beforeCreate=[l.beforeCreate]),(l.beforeCreate||(l.beforeCreate=[])).unshift((function(){this[l.__module]=this})),(u.mixins||(u.mixins=[])).push(l)),e&&(u.render=e,u.staticRenderFns=i,u._compiled=!0),a&&(u.functional=!0),r&&(u._scopeId="data-v-"+r),s?(d=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(s)},u._ssrRegister=d):n&&(d=o?function(){n.call(this,this.$root.$options.shadowRoot)}:n),d)if(u.functional){u._injectStyles=d;var g=u.render;u.render=function(t,e){return d.call(e),g(t,e)}}else{var _=u.beforeCreate;u.beforeCreate=_?[].concat(_,d):[d]}return{exports:t,options:u}}i.d(e,"a",(function(){return a}))},"829d":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"82f4":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.uv-line[data-v-ff035a16]{vertical-align:middle}',""]),t.exports=e},8310:function(t,e,i){"use strict";var a=i("30cd"),n=i.n(a);n.a},8373:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("524e")),r=a(i("2407")),s=a(i("751b")),o={data:function(){return{wxsProps:{}}},components:{timeDatePicker:n.default,selectActiveTime:r.default,serveCard:s.default}};e.default=o},8381:function(t,e,i){"use strict";i.r(e);var a=i("7f20"),n=i("4ee8");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("9bac");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"2453ff08",null,!1,a["a"],void 0);e["default"]=o.exports},"83dd":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("1ef6"),s=i("996a");e=a(!1);var o=n(r),c=n(s);e.push([t.i,'@charset "UTF-8";body[data-v-19cc9313]{position:relative;background-color:#fff}.detail-page[data-v-19cc9313]::before{content:"";position:fixed;top:0;left:0;right:0;height:1200rpx!important;background-image:url('+o+");background-size:cover;background-position:top;background-repeat:no-repeat;z-index:1}.content-part[data-v-19cc9313]{position:relative;left:0;right:0;z-index:9}.custom-nav[data-v-19cc9313]{position:fixed;top:0;left:0;right:0;height:88rpx;background-color:initial;display:flex;align-items:center;padding:0 32rpx;z-index:100;padding-top:var(--status-bar-height)}.nav-back[data-v-19cc9313]{width:48rpx;height:48rpx;display:flex;align-items:center;justify-content:center}.back-icon[data-v-19cc9313]{width:32rpx;height:32rpx}.nav-title[data-v-19cc9313]{flex:1;text-align:center;font-size:36rpx;font-weight:500;color:#fff}.status-section[data-v-19cc9313]{display:flex;align-items:center;justify-content:center;gap:20rpx;padding-top:55rpx;padding-bottom:50rpx}.status-section .status-section-image[data-v-19cc9313]{width:52rpx}.status-text[data-v-19cc9313]{font-weight:600;font-size:44rpx;color:#333;line-height:78rpx;text-align:left;font-style:normal}.service-card[data-v-19cc9313]{margin:24rpx;background-color:#fff;border-radius:16rpx;padding:24rpx 0;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.location-info[data-v-19cc9313]{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;padding:0 24rpx}.location-icon[data-v-19cc9313]{width:60rpx;height:60rpx;margin-right:32rpx}.address-info[data-v-19cc9313]{flex:1}.name-phone[data-v-19cc9313]{display:flex;align-items:center;margin-bottom:8rpx}.name[data-v-19cc9313]{font-size:32rpx;color:#333;font-weight:500;margin-right:16rpx}.phone[data-v-19cc9313]{font-size:28rpx;color:#666}.address[data-v-19cc9313]{font-size:28rpx;color:#666}.divider[data-v-19cc9313]{width:702rpx;height:4rpx}.staff-info[data-v-19cc9313]{display:flex;align-items:center;padding:32rpx 24rpx 0}.staff-avatar[data-v-19cc9313]{width:80rpx;height:80rpx;border-radius:44rpx;margin-right:16rpx;background-color:#333}.staff-detail[data-v-19cc9313]{flex:1}.staff-name[data-v-19cc9313]{font-size:32rpx;color:#3d3d3d;font-weight:500}.rating[data-v-19cc9313]{display:flex;align-items:center}.star-icon[data-v-19cc9313]{width:24rpx;height:24rpx;margin-right:4rpx}.phone-btn[data-v-19cc9313]{width:64rpx;height:64rpx;background-color:#e8101e;border-radius:32rpx}.service-shop[data-v-19cc9313]{margin:24rpx;background-color:#fff;border-radius:16rpx;padding:24rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5);display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center}.shop-info[data-v-19cc9313]{flex:1}.shop-info1[data-v-19cc9313]{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;padding-bottom:14rpx;border-bottom:2rpx solid #f6f5f5}.shop-info1 .shop-info1-left[data-v-19cc9313]{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center}.shop-info1 .shop-info1-right[data-v-19cc9313]{flex:1;display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center;gap:30rpx}.shop-info1 .shop-info1-right .shop-info1-right-item[data-v-19cc9313]{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center}.shop-info1 .shop-info1-right .shop-info1-right-item .shop-info1-right-item-text[data-v-19cc9313]{margin-top:2rpx;font-weight:400;font-size:20rpx;color:#8b8b8b;line-height:28rpx;text-align:left;font-style:normal}.shop-logo[data-v-19cc9313]{width:96rpx;height:96rpx;margin-right:18rpx}.shop-name[data-v-19cc9313]{font-weight:600;font-size:30rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal}.shop-distance[data-v-19cc9313]{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center}.distance-icon[data-v-19cc9313]{width:24rpx;height:24rpx;margin-right:4rpx}.distance-text[data-v-19cc9313]{font-weight:400;font-size:26rpx;color:#666;line-height:37rpx;text-align:left;font-style:normal}.shop-info2[data-v-19cc9313]{display:flex;flex-flow:column wrap;justify-content:flex-start;align-items:flex-start;margin-top:14rpx}.shop-time[data-v-19cc9313]{width:100%;padding-bottom:10rpx;font-weight:500;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal;border-bottom:2rpx solid #f6f5f5;margin-bottom:20rpx}.shop-address[data-v-19cc9313]{font-weight:400;font-size:26rpx;color:#666;line-height:37rpx;text-align:left;font-style:normal}.shop-btns[data-v-19cc9313]{display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center}.btn-map[data-v-19cc9313],\n.btn-phone[data-v-19cc9313]{width:40rpx;height:40rpx}.booking-card[data-v-19cc9313]{margin:24rpx;background-color:#fff;border-radius:16rpx;padding:24rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.card-header[data-v-19cc9313]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24rpx}.card-title[data-v-19cc9313]{font-weight:500;font-size:32rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal}.update-time[data-v-19cc9313]{font-size:28rpx;color:#333;padding-right:4rpx}.update-change[data-v-19cc9313]{font-size:28rpx;color:#666}.service-item[data-v-19cc9313]{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;margin-bottom:24rpx}.service-image[data-v-19cc9313]{width:160rpx;height:160rpx;border-radius:16rpx;margin-right:24rpx;background-color:#e2e2e2}.service-info[data-v-19cc9313]{flex:1;height:160rpx;display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:flex-start;margin-right:24rpx}.service-name[data-v-19cc9313]{width:100%;display:flex;align-items:center;justify-content:space-between;font-weight:500;font-size:30rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal}.service-name .service-name-num[data-v-19cc9313]{font-weight:500;font-size:26rpx;color:#999;line-height:34rpx}.service-price[data-v-19cc9313]{font-weight:400;font-size:24rpx;color:#bbb;line-height:34rpx;text-align:left;font-style:normal;margin-bottom:7rpx}.service-price2[data-v-19cc9313]{font-weight:500;font-size:24rpx;color:#e8101e;line-height:34rpx;text-align:left;font-style:normal}.service-count[data-v-19cc9313]{font-size:28rpx;color:#666}.service-real[data-v-19cc9313]{display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:baseline;padding-top:24rpx;border-top:1rpx solid rgba(0,0,0,.05)}.real-lable[data-v-19cc9313]{font-weight:400;font-size:30rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal}.real-price[data-v-19cc9313]{font-family:DINPro;font-weight:500;font-size:36rpx;color:#e8101e;line-height:34rpx;text-align:left;font-style:normal}.order-card[data-v-19cc9313]{margin:24rpx;background-color:#fff;border-radius:16rpx;padding:24rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.info-item[data-v-19cc9313]{display:flex;justify-content:space-between;margin-top:16rpx}.label[data-v-19cc9313]{font-size:28rpx;color:#999}.value[data-v-19cc9313]{font-size:28rpx;color:#333}.bottom-buttons[data-v-19cc9313]{position:fixed;left:0;right:0;bottom:0;height:128rpx;background-color:#fff;display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-end;box-shadow:0 -2rpx 8rpx rgba(0,0,0,.05);padding:0 24rpx 0 78rpx;z-index:999}.handel-button[data-v-19cc9313]{width:186rpx;height:72rpx;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;border-radius:36rpx;margin-left:60rpx}.btn-border[data-v-19cc9313]{border:2rpx solid #979797;background-color:#fff;box-sizing:border-box;margin-left:60rpx}.btn-bg[data-v-19cc9313]{background-color:#e8101e}.button-text[data-v-19cc9313]{font-size:28rpx;font-weight:400;color:#fff}.btn-border .button-text[data-v-19cc9313]{font-weight:400;font-size:28rpx;color:#333;line-height:39rpx}.contact-button[data-v-19cc9313]{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center}.contact-text[data-v-19cc9313]{font-size:24rpx;color:#666}.tell-icon[data-v-19cc9313]{width:36rpx;height:36rpx;margin-right:8rpx}.permission.transform[data-v-19cc9313]{top:calc(var(--status-bar-height) + 88rpx + 20rpx);opacity:1;visibility:visible}.detail-page[data-v-19cc9313]{padding-bottom:130rpx}.group-invite[data-v-19cc9313]{background:linear-gradient(180deg,#fff4f3,#fff);box-shadow:0rpx 4rpx 16rpx 0rpx rgba(210,213,224,.5);border-radius:20rpx;padding:40rpx 25rpx 50rpx 25rpx;margin:0 30rpx}.group-invite .invite-text[data-v-19cc9313]{font-weight:500;font-size:35rpx;color:#333;line-height:49rpx;text-align:center;font-style:normal}.group-invite .invite-time[data-v-19cc9313]{display:flex;justify-content:center;align-items:center;margin-top:44rpx}.group-invite .invite-time .time[data-v-19cc9313]{display:flex;flex-direction:row;align-items:center;font-weight:500;font-size:24rpx;color:#e8101e;line-height:33rpx;text-align:left;font-style:normal;gap:6rpx;margin:0 20rpx}.group-invite .invite-time .time__item[data-v-19cc9313]{width:42rpx;height:42rpx;background:#fdeded;border-radius:6rpx;border:1rpx solid #f4c1c8;display:flex;align-items:center;justify-content:center}.group-invite .invite-time .invite-time-line1[data-v-19cc9313]{width:84rpx;height:2rpx;background:linear-gradient(90deg,#fff,#e2e7e7);margin-right:20rpx}.group-invite .invite-time .invite-time-line2[data-v-19cc9313]{width:84rpx;height:2rpx;background:linear-gradient(337deg,#fff,#e2e7e7);margin-left:20rpx}.group-invite .invite-time-items[data-v-19cc9313]{margin-top:61rpx;display:flex;justify-content:center;gap:28rpx;flex-wrap:wrap}.group-invite .invite-time-items .invite-time-item .invite-time-item-img[data-v-19cc9313]{width:100rpx;height:100rpx;border-radius:100rpx}.group-invite .invite-btn[data-v-19cc9313]{margin-top:60rpx;background-image:url("+c+");background-size:cover;background-position:top;background-repeat:no-repeat;width:640rpx;height:90rpx;position:relative;display:flex;align-items:center;justify-content:center}.group-invite .invite-btn .invite-btn-wx[data-v-19cc9313]{font-weight:500;font-size:34rpx;color:#fff;line-height:48rpx;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:center}.group-invite .invite-btn .invite-btn-wx .invite-btn-wx-img[data-v-19cc9313]{width:43rpx;height:39rpx;margin-right:20rpx}",""]),t.exports=e},"83e3":function(t,e,i){var a=i("96b4");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("00eee935",a,!0,{sourceMap:!1,shadowMode:!1})},8412:function(t,e,i){"use strict";i.r(e);var a=i("c16c"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},8424:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("v-uni-scroll-view",{attrs:{"scroll-x":!0,_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},t._l(t._$g(3,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("3-"+r,"sc"),class:t._$g("3-"+r,"c"),attrs:{_i:"3-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("3-"+r,"t0-0")+" ")])})),1)],1),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},t._l(t._$g(5,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("5-"+r,"sc"),class:t._$g("5-"+r,"c"),attrs:{_i:"5-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("5-"+r,"t0-0")+" ")])})),1),i("CommonList",{ref:"groupRef",attrs:{_i:6},on:{"load-success":function(e){return t.$handleViewEvent(e)}},scopedSlots:t._u([{key:"listData",fn:function(e,a,n){e.list;return t._l(a._$g("8-"+n,"f"),(function(e,r,s,o){return i("uni-view",{key:e,attrs:{_i:"8-"+n+o}},[a._$g("9-"+n+o,"i")?i("OrderCard",{attrs:{_i:"9-"+n+o},on:{cancel:function(e){return t.$handleViewEvent(e)},start:function(e){return t.$handleViewEvent(e)},done:function(e){return t.$handleViewEvent(e)},goOrderDetail:function(e){return t.$handleViewEvent(e)}}}):i("WorkHourOrderCard",{attrs:{_i:"10-"+o},on:{cancel:function(e){return t.$handleViewEvent(e)},accept:function(e){return t.$handleViewEvent(e)},start:function(e){return t.$handleViewEvent(e)},done:function(e){return t.$handleViewEvent(e)},goOrderDetail:function(e){return t.$handleViewEvent(e)}}})],1)}))}},{key:"empty",fn:function(t,e,a){return[i("uni-view",{staticClass:e._$g("12-"+a,"sc"),attrs:{_i:"12-"+a}},[e._$g("13-"+a,"i")?i("noData",{attrs:{_i:"13-"+a}}):i("noLogin",{attrs:{_i:14}})],1)]}}])}),i("serviceCodeInput",{attrs:{_i:15},on:{close:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}}})],1)},r=[]},8447:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},8452:function(t,e,i){var a=i("5955");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("6eb87423",a,!0,{sourceMap:!1,shadowMode:!1})},"84b6":function(t,e,i){t.exports=i.p+"static/images/wallet/bj2.png"},"84ce":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"OrderCard",props:["dataItem","typeId","showState"],data:function(){return{wxsProps:{}}},components:{}}},"84e6":function(t,e,i){"use strict";i.r(e);var a=i("21fe"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"84ee":function(t,e,i){var a=i("d77d");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("504c236c",a,!0,{sourceMap:!1,shadowMode:!1})},"853c":function(t,e,i){"use strict";i.r(e);var a=i("24da"),n=i("1353");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("d23f");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"eca7199e",null,!1,a["a"],void 0);e["default"]=o.exports},8588:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.shop-item[data-v-7c35105c]{width:710rpx;background:#fff;border-radius:20rpx;margin-bottom:20rpx;padding:16rpx 24rpx;box-sizing:border-box}.shop-item .shop-list[data-v-7c35105c]{display:flex;flex-wrap:nowrap;gap:12rpx;height:260rpx}.shop-item .shop-list .shop-list-item[data-v-7c35105c]{height:auto}.shop-item .shop-list .shop-list-item__photo[data-v-7c35105c]{width:166rpx;height:166rpx;background:#d8d8d8;border-radius:20rpx}.shop-item .shop-list .shop-list-item__title[data-v-7c35105c]{flex:1;max-width:166rpx;margin-top:8rpx;font-weight:400;font-size:22rpx;color:#333;line-height:30rpx;text-align:left;font-style:normal}.shop-item .shop-list .shop-list-item__title__tip[data-v-7c35105c]{padding:0 8rpx;background:linear-gradient(160deg,#fc5e72,#e8101e);border-radius:6rpx;font-weight:500;font-size:20rpx;color:#fff;line-height:28rpx;text-align:left;font-style:normal;margin-right:12rpx}.shop-item .shop-list .shop-list-item__price[data-v-7c35105c]{font-family:DINPro;font-weight:500;font-size:26rpx;color:#e8101e;line-height:33rpx;text-align:left;font-style:normal}.title-info[data-v-7c35105c]{width:100%}.title-info .name[data-v-7c35105c]{display:flex;justify-content:space-between;width:100%}.title-info .name .name_text[data-v-7c35105c]{flex:1;width:100%;font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.title-info .name .shop-distance[data-v-7c35105c]{margin-left:30rpx;display:flex;align-items:center;flex-wrap:nowrap;font-size:22rpx;color:#666;font-family:DINPro;font-weight:500}.title-info .name .shop-distance__right[data-v-7c35105c]{font-family:DINPro;font-weight:500;font-size:24rpx;color:#666;line-height:31rpx;text-align:left;font-style:normal}.title-info .name .position[data-v-7c35105c]{width:19rpx;height:21rpx;margin-right:6rpx}.title-info .time[data-v-7c35105c]{font-family:DINPro;font-weight:500;font-size:24rpx;color:#666;line-height:31rpx;text-align:left;font-style:normal;margin-top:8rpx;margin-bottom:10rpx}.shop-header[data-v-7c35105c]{margin-bottom:20rpx;width:100%}.shop-header .shop-title[data-v-7c35105c]{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;margin-bottom:12rpx;width:100%}.shop-header .shop-title__left[data-v-7c35105c]{display:flex;flex-flow:row nowrap;justify-content:flex-start;margin-bottom:12rpx}.head-photo[data-v-7c35105c]{flex-shrink:0;width:122rpx;height:122rpx;background:#d8d8d8;border-radius:20rpx;margin-right:38rpx}.title-text[data-v-7c35105c]{font-size:32rpx;color:#333;max-width:400rpx;font-weight:500;margin-right:8rpx;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;lines:1}.verified-icon[data-v-7c35105c]{width:32rpx;height:32rpx}.shop-info[data-v-7c35105c]{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;font-size:24rpx}.shop-info-left[data-v-7c35105c]{width:502rpx}.shop-info-left .shop-info-left-list[data-v-7c35105c]{display:flex;align-items:center;flex-wrap:nowrap;gap:14rpx;padding-right:20rpx}.shop-info-left .shop-info-left-list .shop-tags[data-v-7c35105c]{white-space:nowrap;border-radius:16rpx;padding:2rpx 14rpx;background-color:#f3f3f3;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:20rpx;color:#666;line-height:28rpx;text-align:left;font-style:normal}.rating[data-v-7c35105c]{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center}.rating-score[data-v-7c35105c]{color:#ff94b4;margin-right:8rpx}.rating-stars[data-v-7c35105c]{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;margin-right:8rpx}.star-icon[data-v-7c35105c]{width:24rpx;height:24rpx;margin-right:4rpx}.divider[data-v-7c35105c]{color:#eee;margin:0 16rpx}',""]),t.exports=e},8599:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".view-cont{height:100rpx;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;background-color:#fff}.view-order{margin-bottom:24rpx;padding:0 24rpx}.container{padding:0 24rpx 42rpx;background-color:#fff}.complaint-cont{border-top:2rpx solid #eee}.cont-lable,.cont-text,.contact-lable{line-height:100rpx;font-size:28rpx;color:#333}.contact-text{font-size:28rpx;color:#333}.complaint-text{background-color:#eee;border-radius:10rpx;width:100%;height:320rpx;padding:24rpx;box-sizing:border-box;font-size:28rpx;color:#333;margin-bottom:20rpx}.upload-box{margin:-16rpx}.contact{padding:0 24rpx;background-color:#fff;margin-top:24rpx}.contact-item{height:100rpx;display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;border-bottom:2rpx solid #eee}.contact-options,.contact-option{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center}.contact-option{margin-left:24rpx}.contact-lable{margin-right:24rpx}.contact-text{flex:1}.kong{height:202rpx}.noshow{color:#999}\n.permission.transform{top:calc(var(--status-bar-height) + 88rpx + 30rpx);opacity:1;visibility:visible}\n.btn-box{height:88rpx;border-radius:44rpx;display:flex;align-items:center;justify-content:center}.btn-text{font-size:32rpx}",""]),t.exports=e},"85e3":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("serviecFirstTab",{attrs:{_i:2},on:{"tab-click":function(e){return t.$handleViewEvent(e)}}}),i("CommonList",{ref:"groupRef",attrs:{_i:3},scopedSlots:t._u([{key:"headerScroll",fn:function(e,a,n){return[i("uni-view",{staticClass:a._$g("5-"+n,"sc"),attrs:{_i:"5-"+n}},t._l(a._$g("6-"+n,"f"),(function(e,r,s,o){return i("uni-view",{key:e,staticClass:a._$g("6-"+n+o,"sc"),class:a._$g("6-"+n+o,"c"),attrs:{_i:"6-"+n+o},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:a._$g("7-"+n+o,"sc"),attrs:{src:a._$g("7-"+n+o,"a-src"),mode:"aspectFill",_i:"7-"+n+o}}),i("v-uni-text",{staticClass:a._$g("8-"+n+o,"sc"),attrs:{_i:"8-"+n+o}},[t._v(a._$g("8-"+n+o,"t0-0"))])],1)})),1),i("filterVue",{key:a._$g("9-"+n,"a-key"),attrs:{_i:"9-"+n},on:{"filter-change":function(e){return t.$handleViewEvent(e)}}})]}},{key:"listData",fn:function(t,e,a){t.list;return[i("serviceCardList",{attrs:{_i:"11-"+a}})]}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"13-"+a}})]}}])})],1)},r=[]},"85ea":function(t,e,i){var a=i("ab56");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("df638b64",a,!0,{sourceMap:!1,shadowMode:!1})},"85ed":function(t,e,i){"use strict";var a=i("578e"),n=i.n(a);n.a},"862c":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={props:["timeOptions","firstTimeIndex","firstDataIndex","service","publish_user_id","server_type"],data:function(){return{wxsProps:{}}},components:{}}},"862d":function(t,e,i){var a=i("7328");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("d22878fa",a,!0,{sourceMap:!1,shadowMode:!1})},8642:function(t,e,i){"use strict";i.r(e);var a=i("f0ca"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},8694:function(t,e,i){var a=i("1550");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("33f9ede7",a,!0,{sourceMap:!1,shadowMode:!1})},8697:function(t,e,i){"use strict";i.r(e);var a=i("6781"),n=i("e09e");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("aea7");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"86e5":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("a018");e=a(!1);var s=n(r);e.push([t.i,".tips-popup[data-v-063682c8]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:99999}.mask[data-v-063682c8]{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6)}.popup-content[data-v-063682c8]{background-image:url("+s+");background-position:50%;background-repeat:no-repeat;background-size:cover;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:570rpx;border-radius:36rpx;overflow:hidden;box-sizing:border-box;padding:60rpx 47rpx}.popup-header[data-v-063682c8]{position:relative;display:flex;align-items:center;justify-content:center}.popup-title[data-v-063682c8]{font-weight:500;font-size:34rpx;color:#333;line-height:48rpx;text-align:left;font-style:normal}.close-btn[data-v-063682c8]{position:absolute;right:24rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);padding:16rpx}.close-icon[data-v-063682c8]{width:32rpx;height:32rpx}.popup-body[data-v-063682c8]{padding:36rpx 0rpx 50rpx 0}.rule-item[data-v-063682c8]{margin-bottom:24rpx}.rule-item[data-v-063682c8]:last-child{margin-bottom:0}.rule-text[data-v-063682c8]{font-size:28rpx;color:#666;line-height:1.6}.btn_box[data-v-063682c8]{display:flex;align-items:center;justify-content:center;gap:72rpx}.btn_box .btn[data-v-063682c8]{width:200rpx;border-radius:36rpx;border:2rpx solid #979797;display:flex;align-items:center;justify-content:center;font-size:26rpx;color:#333}",""]),t.exports=e},"86ee":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[t._t("header",null,{_i:1}),i("v-uni-scroll-view",{ref:"listScrollRef",staticClass:t._$g(2,"sc"),style:t._$g(2,"s"),attrs:{"scroll-top":t._$g(2,"a-scroll-top"),"scroll-y":!0,"refresher-enabled":t._$g(2,"a-refresher-enabled"),"refresher-triggered":t._$g(2,"a-refresher-triggered"),"show-scrollbar":!1,"refresher-threshold":20,"lower-threshold":"130",_i:2},on:{refresherrefresh:function(e){return t.$handleViewEvent(e)},scrolltolower:function(e){return t.$handleViewEvent(e)}}},[t._t("headerScroll",null,{_i:3}),t._$g(4,"i")?i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._t("listData",null,{_i:5})],2):t._t("empty",null,{_i:6}),t._$g(7,"i")?i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._$g(8,"i")?i("v-uni-text",{attrs:{_i:8}},[t._v(t._$g(8,"t0-0"))]):i("v-uni-text",{attrs:{_i:9}},[t._v(t._$g(9,"t0-0"))])],1):t._e()],2)],2)},n=[]},"86f7":function(t,e,i){"use strict";i.r(e);var a=i("46d8"),n=i("dfdd");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("f2c3");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"109f497b",null,!1,a["a"],void 0);e["default"]=o.exports},8724:function(t,e,i){"use strict";var a=i("6488"),n=i.n(a);n.a},8759:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}}),i("v-uni-text",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v("\u6211\u7684\u8d44\u6599")])],1),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("v-uni-text",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v("\u5c55\u793a\u4f4d\u7f6e\u53ca\u62cd\u6444\u6280\u5de7")])],1)],1),t._l(t._$g(8,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("8-"+r,"sc"),attrs:{_i:"8-"+r}},[i("uni-view",{staticClass:t._$g("9-"+r,"sc"),attrs:{_i:"9-"+r}},[i("v-uni-text",{staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r}},[t._v(t._$g("10-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("11-"+r,"sc"),attrs:{_i:"11-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g("12-"+r,"sc"),attrs:{_i:"12-"+r}},[t._v("\u67e5\u770b\u8be6\u60c5")]),i("v-uni-image",{staticClass:t._$g("13-"+r,"sc"),attrs:{src:"/static/images/icons/right_gray14.png",_i:"13-"+r}})],1)],1),t._$g("14-"+r,"i")?i("uni-view",{staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[t._$g("15-"+r,"i")?i("uni-view",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("16-"+r,"sc"),attrs:{src:"/static/images/icons/addPhoto.png",_i:"16-"+r}}),i("v-uni-text",{staticClass:t._$g("17-"+r,"sc"),attrs:{_i:"17-"+r}},[t._v("\u6dfb\u52a0\u7167\u7247")])],1):t._e(),t._l(t._$g("18-"+r,"f"),(function(e,a,n,s){return t._$g("18-"+r+"-"+s,"i")?i("uni-view",{key:e,staticClass:t._$g("18-"+r+"-"+s,"sc"),attrs:{_i:"18-"+r+"-"+s},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("19-"+r+"-"+s,"sc"),attrs:{mode:"aspectFill",src:t._$g("19-"+r+"-"+s,"a-src"),_i:"19-"+r+"-"+s}}),i("uni-view",{staticClass:t._$g("20-"+r+"-"+s,"sc"),attrs:{_i:"20-"+r+"-"+s}},[t._v(" "+t._$g("20-"+r+"-"+s,"t0-0")+" ")]),t._$g("21-"+r+"-"+s,"i")?i("uni-view",{staticClass:t._$g("21-"+r+"-"+s,"sc"),attrs:{_i:"21-"+r+"-"+s}},[i("v-uni-image",{staticClass:t._$g("22-"+r+"-"+s,"sc"),attrs:{mode:"aspectFill",src:"/static/images/icons/time.png",_i:"22-"+r+"-"+s}}),i("v-uni-text",{staticClass:t._$g("23-"+r+"-"+s,"sc"),attrs:{_i:"23-"+r+"-"+s}},[t._v("\u5ba1\u6838\u4e2d\u2026")])],1):t._e()],1):t._e()}))],2):i("uni-view",{staticClass:t._$g("24-"+r,"sc"),attrs:{_i:"24-"+r}},[t._$g("25-"+r,"i")?i("uni-view",{staticClass:t._$g("25-"+r,"sc"),attrs:{_i:"25-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("26-"+r,"sc"),attrs:{src:"/static/images/icons/addPhoto.png",_i:"26-"+r}}),i("v-uni-text",{staticClass:t._$g("27-"+r,"sc"),attrs:{_i:"27-"+r}},[t._v("\u6dfb\u52a0\u89c6\u9891")])],1):t._e(),t._l(t._$g("28-"+r,"f"),(function(e,a,n,s){return t._$g("28-"+r+"-"+s,"i")?i("uni-view",{key:e,staticClass:t._$g("28-"+r+"-"+s,"sc"),attrs:{_i:"28-"+r+"-"+s},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("29-"+r+"-"+s,"sc"),attrs:{mode:"aspectFill",src:t._$g("29-"+r+"-"+s,"a-src"),_i:"29-"+r+"-"+s}}),i("uni-view",{staticClass:t._$g("30-"+r+"-"+s,"sc"),attrs:{_i:"30-"+r+"-"+s}},[t._v(" "+t._$g("30-"+r+"-"+s,"t0-0")+" ")]),i("uni-view",{staticClass:t._$g("31-"+r+"-"+s,"sc"),attrs:{_i:"31-"+r+"-"+s}},[i("v-uni-image",{staticClass:t._$g("32-"+r+"-"+s,"sc"),attrs:{mode:"aspectFill",src:"/static/images/icons/play.png",_i:"32-"+r+"-"+s}})],1),t._$g("33-"+r+"-"+s,"i")?i("uni-view",{staticClass:t._$g("33-"+r+"-"+s,"sc"),attrs:{_i:"33-"+r+"-"+s}},[i("v-uni-image",{staticClass:t._$g("34-"+r+"-"+s,"sc"),attrs:{mode:"aspectFill",src:"/static/images/icons/time.png",_i:"34-"+r+"-"+s}}),i("uni-view",{staticClass:t._$g("35-"+r+"-"+s,"sc"),attrs:{_i:"35-"+r+"-"+s}},[t._v("\u5ba1\u6838\u4e2d\u2026")])],1):t._e(),t._$g("36-"+r+"-"+s,"i")?i("uni-view",{staticClass:t._$g("36-"+r+"-"+s,"sc"),attrs:{_i:"36-"+r+"-"+s}},[i("v-uni-image",{staticClass:t._$g("37-"+r+"-"+s,"sc"),attrs:{mode:"aspectFill",src:"/static/images/icons/close2.png",_i:"37-"+r+"-"+s}}),i("uni-view",{staticClass:t._$g("38-"+r+"-"+s,"sc"),attrs:{_i:"38-"+r+"-"+s}},[t._v("\u5df2\u9a73\u56de")])],1):t._e()],1):t._e()}))],2)],1)}))],2)},r=[]},8799:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("6473")),r={data:function(){return{wxsProps:{}}},components:{customNavbar:n.default}};e.default=r},"87d9":function(t,e,i){"use strict";var a=i("d6a5"),n=i.n(a);n.a},"87fa":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},t._l(t._$g(4,"f"),(function(e,a,n,r){return i("uni-view",{key:e,class:t._$g("4-"+r,"c"),attrs:{_i:"4-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("4-"+r,"t0-0")+" ")])})),1)],1),t._$g(5,"i")?i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},t._l(t._$g(6,"f"),(function(e,a,n,r){return i("orderCard",{key:e,attrs:{_i:"6-"+r},on:{cancel:function(e){return t.$handleViewEvent(e)},goDetail:function(e){return t.$handleViewEvent(e)},accept:function(e){return t.$handleViewEvent(e)},start:function(e){return t.$handleViewEvent(e)},done:function(e){return t.$handleViewEvent(e)}}})})),1):i("noData",{attrs:{_i:7}}),t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-text",{attrs:{_i:9}},[t._v("\u5df2\u52a0\u8f7d\u5168\u90e8")])],1):t._e(),i("serviceCodeInput",{attrs:{_i:10},on:{close:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}}})],1)},r=[]},8805:function(t,e,i){var a=i("e535");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("d1d2b4f2",a,!0,{sourceMap:!1,shadowMode:!1})},"880d":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("5e85")),r=a(i("f8df")),s=a(i("4c51")),o=a(i("30e5")),c={data:function(){return{wxsProps:{}}},components:{projectTabs:n.default,CommonList:r.default,serviceCardList:s.default,evaluationList:o.default}};e.default=c},"882c":function(t,e,i){"use strict";i.r(e);var a=i("8c8f"),n=i("39f7");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("b273");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"84c0c8a4",null,!1,a["a"],void 0);e["default"]=o.exports},8846:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-text",{staticClass:t._$g(3,"sc"),attrs:{_i:3},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g(3,"t0-0")+" ")]),i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:"/static/images/Fill.jpg",mode:"aspectFit",_i:4}}),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("v-uni-image",{staticClass:t._$g(7,"sc"),attrs:{src:"/static/images/search_1.png",_i:7}}),i("v-uni-input",{staticClass:t._$g(8,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u4f60\u7684\u670d\u52a1\u5730\u5740",_i:8},on:{input:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(8,"v-model"),callback:function(){},expression:"inputKey"}})],1)],1)],1),t._$g(9,"i")?i("v-uni-scroll-view",{staticClass:t._$g(9,"sc"),staticStyle:{height:"200px"},style:t._$g(9,"s"),attrs:{"scroll-y":!0,_i:9}},t._l(t._$g(10,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("11-"+r,"sc"),attrs:{_i:"11-"+r}},[i("v-uni-text",{staticClass:t._$g("12-"+r,"sc"),attrs:{_i:"12-"+r}},[t._v(t._$g("12-"+r,"t0-0"))]),i("v-uni-text",{staticClass:t._$g("13-"+r,"sc"),attrs:{_i:"13-"+r}},[t._v(t._$g("13-"+r,"t0-0"))])],1),t._$g("14-"+r,"i")?i("uni-view",{staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[t._$g("15-"+r,"i")?i("v-uni-text",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r}},[t._v(t._$g("15-"+r,"t0-0")+"m")]):i("v-uni-text",{staticClass:t._$g("16-"+r,"sc"),attrs:{_i:"16-"+r}},[t._v(t._$g("16-"+r,"t0-0")+"km")])],1):t._e()],1)})),1):t._e()],1)},r=[]},"886e":function(t,e,i){"use strict";i.r(e);var a=i("56d5"),n=i("6c4a");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("7c67");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},8882:function(t,e,i){"use strict";i.r(e);var a=i("02f7"),n=i("d89a");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("88b9");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"120995ea",null,!1,a["a"],void 0);e["default"]=o.exports},"88b9":function(t,e,i){"use strict";var a=i("2ced"),n=i.n(a);n.a},"88f8":function(t,e,i){"use strict";var a=i("0289"),n=i.n(a);n.a},8917:function(t,e,i){"use strict";var a=i("e35f"),n=i.n(a);n.a},8935:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:"/static/images/wechat.png",mode:"aspectFit",_i:5}}),i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u5fae\u4fe1")])],1),i("v-uni-image",{staticClass:t._$g(7,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:7}})],1),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("v-uni-image",{staticClass:t._$g(10,"sc"),attrs:{src:"/static/images/alipay.png",mode:"aspectFit",_i:10}}),i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u652f\u4ed8\u5b9d")])],1),i("v-uni-image",{staticClass:t._$g(12,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:12}})],1)],1)],1)},r=[]},"893b":function(t,e,i){"use strict";i.r(e);var a=i("5349"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},8972:function(t,e,i){"use strict";var a=i("a074"),n=i.n(a);n.a},8974:function(t,e,i){"use strict";var a=i("a9c6"),n=i.n(a);n.a},"898c":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$g(0,"i")?i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u6e29\u99a8\u63d0\u793a")])],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("v-uni-text",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v("\u53d1\u5e03\u5de5\u65f6\uff1a\u60a8\u6240\u63d0\u4f9b\u7684\u5de5\u65f6\u670d\u52a1\uff0c\u5c06\u5728\u60a8\u6b63\u5e38\u8425\u4e1a\u65f6\u6bb5\u5185\uff0c\u9762\u5411\u5916\u90e8\u5546\u6237\u63d0\u4f9b\u4e34\u65f6\u6027\u8d2d\u4e70\u60a8\u7684\u670d\u52a1\u65f6\u6bb5\u7684\u670d\u52a1\uff0c\u5546\u6237\u4e0b\u5355\u540e\u9700\u8981\u518d\u6307\u5b9a\u65f6\u95f4\u5230\u95e8\u5e97\u8fdb\u884c\u670d\u52a1\u3002\u5177\u4f53\u8fd0\u8425\u8fc7\u7a0b\u4e2d\uff0c\u8bf7\u60a8\u6839\u636e\u5b9e\u9645\u8ba2\u5355\u9700\u6c42\uff0c\u7edf\u7b79\u534f\u8c03\u9884\u7ea6\u5b89\u6392\uff0c\u786e\u4fdd\u5de5\u4f5c\u7684\u6709\u5e8f\u5f00\u5c55\u3002")])],1)],1),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u77e5\u9053\u4e86")]),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")])],1)],1)],1):t._e()},n=[]},"89fb":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this.$createElement,e=this._self._c||t;return e("uni-view",{attrs:{_i:0}},[this._t("default",null,{_i:1})],2)},n=[]},"8a07":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,agreeRadio:i("a6d8").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:"/static/images/pay_icon.png",mode:"aspectFit",_i:3}}),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("v-uni-text",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v("\xa5")]),i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v(t._$g(6,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v("\u9009\u62e9\u652f\u4ed8\u65b9\u5f0f")]),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},t._l(t._$g(10,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("11-"+r,"sc"),attrs:{_i:"11-"+r}},[i("v-uni-image",{staticClass:t._$g("12-"+r,"sc"),attrs:{src:t._$g("12-"+r,"a-src"),mode:"aspectFit",_i:"12-"+r}}),i("v-uni-text",{staticClass:t._$g("13-"+r,"sc"),attrs:{_i:"13-"+r}},[t._v(t._$g("13-"+r,"t0-0"))])],1),i("agree-radio",{attrs:{_i:"14-"+r}})],1)})),1)],1),i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\xa5")]),i("v-uni-text",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v(t._$g(19,"t0-0"))])],1),i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v("\u5e94\u4ed8\u91d1\u989d")])],1),i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u8ba4\u652f\u4ed8")])],1)],1)},r=[]},"8a11":function(t,e,i){"use strict";i.r(e);var a=i("9649"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"8a2b":function(t,e,i){"use strict";i.r(e);var a=i("bbd9"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"8a39":function(t,e,i){"use strict";i.r(e);var a=i("9144"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"8a48":function(t,e,i){var a=i("90f8");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("871dd1ca",a,!0,{sourceMap:!1,shadowMode:!1})},"8a6b":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("v-uni-scroll-view",{staticClass:t._$g(2,"sc"),style:t._$g(2,"s"),attrs:{"scroll-y":"true",_i:2},on:{scrolltolower:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-image",{staticClass:t._$g(6,"sc"),attrs:{src:t._$g(6,"a-src"),mode:"aspectFill",_i:6}})],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v(t._$g(9,"t0-0"))]),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("v-uni-image",{staticClass:t._$g(11,"sc"),attrs:{src:"/static/images/icons/address_icon.png",_i:11}}),i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v(t._$g(12,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("v-uni-text",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v("\u4ece\u4e1a\u7ecf\u5386")]),i("v-uni-image",{staticClass:t._$g(15,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/0a9bcad4-a3b2-457f-bdfd-d659d6b1b084.png",_i:15},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("v-uni-text",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._v("|")]),i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v("\u5165\u9a7b"+t._$g(17,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("v-uni-text",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v("\u670d\u52a1\u65f6\u95f4:")]),i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v(t._$g(20,"t0-0"))])],1)],1)],1)],1),t._$g(21,"i")?i("evaluationList",{attrs:{_i:21},on:{goList:function(e){return t.$handleViewEvent(e)}}}):t._e()],1)],1)},r=[]},"8a6ba":function(t,e,i){"use strict";var a=i("d59b"),n=i.n(a);n.a},"8a7d":function(t,e,i){"use strict";i.r(e);var a=i("bf76"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"8a8c":function(t,e,i){var a=i("c2b9");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("12e844a2",a,!0,{sourceMap:!1,shadowMode:!1})},"8a8e":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("6473")),r={data:function(){return{wxsProps:{}}},components:{CustomNavbar:n.default}};e.default=r},"8aaa":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("ec2d")),r=a(i("f8df")),s={name:"addStaff",data:function(){return{wxsProps:{}}},components:{searchBox:n.default,CommonList:r.default}};e.default=s},"8abe":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".service-grid[data-v-4ef538f6]{display:flex;flex-flow:row wrap;justify-content:space-between;align-items:flex-start}.service-item[data-v-4ef538f6]{width:334rpx;background-color:#fff;border-radius:20rpx;box-shadow:0 0 12rpx 0 rgba(0,0,0,.05);overflow:hidden;position:relative;margin-bottom:24rpx}.service-image[data-v-4ef538f6]{width:334rpx;height:334rpx;background-color:#000}.service-tag[data-v-4ef538f6]{position:absolute;top:0rpx;left:0rpx;background-color:#e8101e;color:#fff;font-size:24rpx;padding:6rpx 14rpx;border-radius:0 0 20rpx 0}.service-info[data-v-4ef538f6]{padding:16rpx}.service-title[data-v-4ef538f6]{margin-bottom:16rpx;display:flex;align-items:center;flex-direction:row}.service-title-type[data-v-4ef538f6]{width:64rpx;margin-right:13rpx}.service-title-text[data-v-4ef538f6]{font-weight:500;font-size:28rpx;color:#000;line-height:40rpx;text-align:left;font-style:normal;flex:1;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;lines:1}.service-row[data-v-4ef538f6]{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center}.service-sales[data-v-4ef538f6]{font-size:24rpx;color:grey}.service-price[data-v-4ef538f6]{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center}.price-symbol[data-v-4ef538f6]{font-weight:500;font-size:24rpx;color:#e8101e;line-height:33rpx;text-align:left;font-style:normal}.price-value[data-v-4ef538f6]{font-weight:500;font-size:36rpx;color:#e8101e;line-height:33rpx;text-align:left;font-style:normal}.shop-text[data-v-4ef538f6]{font-size:24rpx;color:#3d3d3d;font-weight:400}.service-item[data-v-4ef538f6]{-webkit-transform:translateZ(0);transform:translateZ(0)}",""]),t.exports=e},"8af8":function(t,e,i){"use strict";i.r(e);var a=i("aea2"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"8b10":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.uni-popup[data-v-8d7bd434]{position:fixed;z-index:99}.uni-popup.top[data-v-8d7bd434], .uni-popup.left[data-v-8d7bd434], .uni-popup.right[data-v-8d7bd434]{top:0}.uni-popup .uni-popup__wrapper[data-v-8d7bd434]{display:block;position:relative}.uni-popup .uni-popup__wrapper.left[data-v-8d7bd434], .uni-popup .uni-popup__wrapper.right[data-v-8d7bd434]{padding-top:0;flex:1}.fixforpc-z-index[data-v-8d7bd434]{z-index:999}.fixforpc-top[data-v-8d7bd434]{top:0}',""]),t.exports=e},"8b1b":function(t,e,i){"use strict";i.r(e);var a=i("8b75"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"8b24":function(t,e,i){t.exports=i.p+"static/images/background/editPassword.png"},"8b75":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={props:["timeOptions","service","url","identity"],data:function(){return{wxsProps:{}}},components:{}}},"8b8e":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},t._l(t._$g(3,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("3-"+r,"sc"),class:t._$g("3-"+r,"c"),attrs:{_i:"3-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("3-"+r,"t0-0")+" "),t._$g("4-"+r,"i")?i("v-uni-image",{staticClass:t._$g("4-"+r,"sc"),attrs:{src:"/static/images/sq_icon.png",mode:"aspectFit",_i:"4-"+r}}):i("v-uni-image",{staticClass:t._$g("5-"+r,"sc"),attrs:{src:"/static/images/zk_icon.png",mode:"aspectFit",_i:"5-"+r}})],1)})),1),i("uni-view",{staticClass:t._$g(6,"sc"),class:t._$g(6,"c"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},t._l(t._$g(9,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("9-"+r,"sc"),class:t._$g("9-"+r,"c"),attrs:{_i:"9-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("9-"+r,"t0-0")+" ")])})),1):t._e(),t._$g(10,"i")?i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},t._l(t._$g(11,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("11-"+r,"sc"),class:t._$g("11-"+r,"c"),attrs:{_i:"11-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("11-"+r,"t0-0")+" ")])})),1):t._e()],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u91cd\u7f6e")]),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u5b8c\u6210")])],1)],1),t._$g(15,"i")?i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e)},touchmove:function(e){return t.$handleViewEvent(e,{prevent:!0,stop:!0})}}}):t._e()],1)],1)},n=[]},"8b98":function(t,e,i){"use strict";var a=i("b06f"),n=i.n(a);n.a},"8b9e":function(t,e,i){"use strict";i.r(e);var a=i("295b"),n=i("7b54");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("7208");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"30d33ae6",null,!1,a["a"],void 0);e["default"]=o.exports},"8bb3":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1},on:{onHeadleClick:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._$g(4,"i")?i("v-uni-video",{staticClass:t._$g(4,"sc"),attrs:{src:t._$g(4,"a-src"),id:"myVideo",autoplay:!0,controls:!1,muted:!0,loop:!0,"enable-play-gesture":"true","object-fit":"cover",_i:4}}):t._$g(5,"e")?i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:t._$g(5,"a-src"),mode:"aspectFill",referrer:"no-referrer",_i:5}}):i("v-uni-image",{staticClass:t._$g(6,"sc"),attrs:{src:"/static/default.png",mode:"aspectFill",referrer:"no-referrer",_i:6}}),t._$g(7,"i")?i("v-uni-cover-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("v-uni-cover-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(" "+t._$g(8,"t0-0")+" ")]),i("v-uni-cover-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}}),i("v-uni-cover-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-cover-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("v-uni-cover-view",{attrs:{_i:12}},[t._v("\u76f8\u518c")])],1),i("v-uni-cover-image",{staticClass:t._$g(13,"sc"),attrs:{src:"/static/images/icons/right7_13.png",_i:13}})],1)],1):t._e()],1)],1),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("v-uni-image",{staticClass:t._$g(17,"sc"),attrs:{src:t._$g(17,"a-src"),mode:"aspectFill",referrer:"no-referrer",_i:17}}),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v(" "+t._$g(19,"t0-0")+" ")]),t._$g(20,"i")?i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("v-uni-text",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v(" \u5168\u90e8\u9500\u91cf ")]),i("v-uni-text",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v(" "+t._$g(22,"t0-0")+" ")]),i("v-uni-text",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v(" \u5355 ")])],1):t._e()],1)],1),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[i("v-uni-text",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[t._v("\u8425\u4e1a\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v(t._$g(27,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{attrs:{_i:29}},[t._v("\u7ecf\u8425\u4fe1\u606f")]),i("v-uni-image",{staticClass:t._$g(30,"sc"),attrs:{src:"/static/images/shop/right.png",_i:30}})],1)],1),i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},t._l(t._$g(32,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("32-"+r,"sc"),attrs:{_i:"32-"+r}},[t._v(" "+t._$g("32-"+r,"t0-0")+" ")])})),1),i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[i("v-uni-text",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v(t._$g(37,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(38,"sc"),attrs:{src:"/static/images/shop/right.png",_i:38}})],1)],1),t._$g(39,"i")?i("uni-view",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[i("v-uni-image",{staticClass:t._$g(40,"sc"),attrs:{src:"/static/images/icons/address_icon.png",_i:40}}),i("v-uni-text",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[t._v(t._$g(41,"t0-0")+"Km")])],1):t._e()],1),i("uni-view",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[i("uni-view",{staticClass:t._$g(43,"sc"),attrs:{_i:43},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(44,"sc"),attrs:{_i:44}},[i("v-uni-text",{staticClass:t._$g(45,"sc"),attrs:{_i:45}},[t._v("\u7535\u8bdd")]),i("v-uni-text",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[t._v(t._$g(46,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(47,"sc"),attrs:{src:"/static/images/shop/right.png",_i:47}})],1)],1),i("uni-view",{staticClass:t._$g(48,"sc"),attrs:{_i:48}},[i("v-uni-image",{staticClass:t._$g(49,"sc"),attrs:{src:"/static/images/shop/address.png",_i:49},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("v-uni-image",{staticClass:t._$g(50,"sc"),attrs:{src:"/static/images/shop/phone.png",_i:50},on:{click:function(e){return t.$handleViewEvent(e)}}})],1)],1)],1),i("v-uni-image",{staticClass:t._$g(51,"sc"),attrs:{src:"/static/images/syr/banner.png",mode:"widthFix",referrer:"no-referrer",_i:51}})],1),i("uni-view",{staticClass:t._$g(52,"sc"),attrs:{_i:52}},[i("uni-view",{class:t._$g(53,"c"),attrs:{_i:53},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u5168\u90e8\u9879\u76ee ")]),t._$g(54,"i")?i("uni-view",{class:t._$g(54,"c"),attrs:{_i:54},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u624b\u827a\u4eba ")]):t._e()],1),i("uni-view",{staticClass:t._$g(55,"sc"),attrs:{id:"projects-section",_i:55}},[i("projectTabs",{attrs:{_i:56},on:{clickTap:function(e){return t.$handleViewEvent(e)},clickPopTap:function(e){return t.$handleViewEvent(e)}}}),i("CommonList",{ref:"groupRef",attrs:{_i:57},on:{"load-success-all":function(e){return t.$handleViewEvent(e)}},scopedSlots:t._u([{key:"listData",fn:function(t,e,a){t.list;return[i("serviceCardList",{attrs:{_i:"59-"+a}})]}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"61-"+a}})]}}])})],1)],1),t._$g(62,"i")?i("uni-view",{staticClass:t._$g(62,"sc"),attrs:{id:"artisans-section",_i:62}},[i("uni-view",{staticClass:t._$g(63,"sc"),attrs:{_i:63}},[i("v-uni-text",{staticClass:t._$g(64,"sc"),attrs:{_i:64}},[t._v("\u624b\u827a\u4eba\u5c55\u793a("+t._$g(64,"t0-0")+")")]),i("uni-view",{staticClass:t._$g(65,"sc"),attrs:{_i:65},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{attrs:{_i:66}},[t._v("\u67e5\u770b\u5168\u90e8")]),i("v-uni-image",{staticClass:t._$g(67,"sc"),attrs:{src:"/static/images/shop/right.png",_i:67}})],1)],1),i("v-uni-scroll-view",{staticClass:t._$g(68,"sc"),attrs:{"scroll-x":"true","scroll-left":t._$g(68,"a-scroll-left"),"show-scrollbar":"false",_i:68}},[i("uni-view",{staticClass:t._$g(69,"sc"),attrs:{_i:69}},t._l(t._$g(70,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("70-"+r,"sc"),attrs:{_i:"70-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("71-"+r,"sc"),attrs:{src:t._$g("71-"+r,"a-src"),mode:"aspectFill",_i:"71-"+r}}),i("v-uni-text",{staticClass:t._$g("72-"+r,"sc"),attrs:{_i:"72-"+r}},[t._v(t._$g("72-"+r,"t0-0"))])],1)})),1)],1)],1):t._e()],1)},r=[]},"8c1c":function(t,e,i){var a=i("a942");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("9ac70752",a,!0,{sourceMap:!1,shadowMode:!1})},"8c5d":function(t,e,i){"use strict";var a=i("2bf7"),n=i.n(a);n.a},"8c8f":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this.$createElement,e=this._self._c||t;return this._$g(0,"i")?e("v-uni-text",{staticClass:this._$g(0,"sc"),class:this._$g(0,"c"),style:this._$g(0,"s"),attrs:{_i:0}},[this._v(this._$g(0,"t0-0"))]):this._e()},n=[]},"8ca4":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.personal-info-page[data-v-6e0b296f]{display:flex;flex-direction:column;height:100vh;background:#f5f5f5}.content-area[data-v-6e0b296f]{flex:1;overflow-y:auto;padding:20rpx 20rpx;padding-bottom:0}.change-tip[data-v-6e0b296f]{background:#fae7ec;padding:20rpx;text-align:center}.change-tip uni-text[data-v-6e0b296f]{font-size:28rpx;color:#d4131f}.reject-reason[data-v-6e0b296f]{background:transparent;padding:24rpx}.reject-title[data-v-6e0b296f]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:center;font-style:normal}.reject-detail[data-v-6e0b296f]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:28rpx;color:#999;line-height:40rpx;text-align:center;font-style:normal;margin-top:12rpx}.audit-tip[data-v-6e0b296f]{margin:20rpx 24rpx 20rpx 24rpx;border-radius:12rpx}.audit-text[data-v-6e0b296f]{font-weight:400;font-size:32rpx;color:#333;text-align:center;display:block}.bottom-actions[data-v-6e0b296f]{position:fixed;bottom:0;left:0;right:0;padding:0rpx 24rpx 40rpx 24rpx;background:#fff;z-index:100}.action-btn[data-v-6e0b296f]{height:88rpx;border-radius:43rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:400}.change-info-btn[data-v-6e0b296f], .view-change-btn[data-v-6e0b296f], .resubmit-btn[data-v-6e0b296f]{background:linear-gradient(180deg,#f52540,#e8101e)}.action-buttons-row[data-v-6e0b296f]{display:flex;justify-content:space-between;margin:0 30rpx}.action-buttons-row .action-btn[data-v-6e0b296f]{width:270rpx}.cancel-btn[data-v-6e0b296f]{background:#e5e5e5;border-radius:43rpx;padding:0 15rpx}.submit-btn[data-v-6e0b296f]{background:linear-gradient(180deg,#f52540,#e8101e 100%,#e8101e 0);border-radius:43rpx;padding:0 15rpx}.btn-text[data-v-6e0b296f]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:36rpx;color:#fff;line-height:50rpx;text-align:left;font-style:normal}.cancel-text[data-v-6e0b296f]{color:#666}.section[data-v-6e0b296f]{margin-bottom:30rpx}.section-title[data-v-6e0b296f]{display:flex;align-items:center;margin-bottom:30rpx}.title-bar[data-v-6e0b296f]{width:6rpx;height:30rpx;background-color:#e8101e;margin-right:7rpx;border-radius:5rpx}.title-text[data-v-6e0b296f]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#1d2129;line-height:48rpx}.box-cont[data-v-6e0b296f]{background:#fff;border-radius:20rpx;margin-bottom:24rpx;margin-left:8rpx;margin-right:8rpx;box-shadow:none}.form-item[data-v-6e0b296f]{padding:24rpx}.form-item-one[data-v-6e0b296f]{display:flex;align-items:center;padding:24rpx}.form-item-two[data-v-6e0b296f]{display:flex;justify-content:space-between;align-items:center;padding:24rpx}.label-wrapper[data-v-6e0b296f]{display:inline-flex;align-items:center}.label[data-v-6e0b296f]{font-size:28rpx;color:#333;font-weight:500;line-height:1;min-width:200rpx}.label-icon[data-v-6e0b296f]{width:26rpx;height:26rpx;margin-left:-65rpx;align-items:center}.required[data-v-6e0b296f]::before{content:"*";color:red;margin-right:4rpx}.upload-tip[data-v-6e0b296f]{font-size:26rpx;color:#999;margin:35rpx 20rpx 20rpx 20rpx;font-weight:400;font-family:PingFangSC,PingFang SC;text-align:center;font-style:normal;line-height:40rpx}.upload-tip-sfz[data-v-6e0b296f]{font-size:26rpx;color:#999;margin:10rpx 0 30rpx 0;font-weight:400;font-family:PingFangSC,PingFang SC;font-style:normal}.upload-box[data-v-6e0b296f]{display:flex;justify-content:center;align-items:center}.upload-camera[data-v-6e0b296f]{width:446rpx;height:298rpx;border-radius:48rpx;display:flex;align-items:center;justify-content:center;overflow:hidden;background-color:#f8f9fd;position:relative}.head_photo-upload[data-v-6e0b296f]{width:120rpx;height:120rpx;border-radius:0}.idcard-upload-vertical-container[data-v-6e0b296f]{display:flex;flex-direction:column;padding:24rpx}.idcard-upload-vertical-item[data-v-6e0b296f]{display:flex;flex-direction:column;align-items:center;margin-bottom:45rpx}.idcard-upload-vertical-item[data-v-6e0b296f]:last-child{margin-bottom:-5rpx}.upload-label.required[data-v-6e0b296f]::before{content:"*";color:red;margin-right:4rpx}.camera-icon[data-v-6e0b296f]{width:446rpx;height:298rpx}.preview-image[data-v-6e0b296f]{width:100%;height:100%;border-radius:20rpx}.recognize-overlay[data-v-6e0b296f]{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:20rpx}.recognize-loading[data-v-6e0b296f]{width:60rpx;height:60rpx;border:4rpx solid #fff;border-top:4rpx solid #e8101e;border-radius:50%;-webkit-animation:spin-data-v-6e0b296f 1s linear infinite;animation:spin-data-v-6e0b296f 1s linear infinite;margin-bottom:16rpx}.recognize-text[data-v-6e0b296f]{color:#fff;font-size:24rpx}@-webkit-keyframes spin-data-v-6e0b296f{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-data-v-6e0b296f{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.picker-content[data-v-6e0b296f]{display:flex;align-items:center;justify-content:flex-end;flex:1}.picker-content uni-text[data-v-6e0b296f]{margin-right:19rpx}.arrow-right[data-v-6e0b296f]{width:14rpx;height:26rpx;margin-left:16rpx}.placeholder[data-v-6e0b296f]{color:#999;font-size:28rpx}.picker-value[data-v-6e0b296f]{font-size:28rpx;color:#333}.input[data-v-6e0b296f]{flex:1;font-size:28rpx;color:#333;text-align:right}.textarea[data-v-6e0b296f]{margin-top:15rpx;height:165rpx;width:605rpx;font-size:28rpx;color:#333;line-height:1.5;background:#f8f9fd;border-radius:20rpx;padding:20rpx 24rpx}.radio-group[data-v-6e0b296f]{display:flex;margin-top:24rpx;width:100%}.radio-item[data-v-6e0b296f]{display:flex;align-items:center;margin-right:130rpx}.radio[data-v-6e0b296f]{width:30rpx;height:30rpx;border:2rpx solid #ddd;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16rpx}.radio.checked[data-v-6e0b296f]{background-color:#e8101e;border-color:#e8101e}.radio-icon-image[data-v-6e0b296f]{width:32rpx;height:32rpx}.radio-label[data-v-6e0b296f]{font-size:28rpx;color:#333}.date-range-container[data-v-6e0b296f]{padding:24rpx;display:flex;justify-content:space-between}.date-item[data-v-6e0b296f]{flex:1;display:flex;flex-direction:column}.date-item[data-v-6e0b296f]:first-child{margin-right:24rpx}.date-label[data-v-6e0b296f]{font-size:28rpx;color:#333;margin-bottom:16rpx;font-weight:500;margin-left:8rpx}.date-picker-box[data-v-6e0b296f]{display:flex;align-items:center;justify-content:space-between;border:2rpx solid #e9e9e9;border-radius:10rpx;padding:12rpx 19rpx;background-color:initial}.date-picker-box.disabled[data-v-6e0b296f]{border:2rpx solid #f3f3f3}.date-picker-box.disabled .date-value[data-v-6e0b296f],\r\n.date-picker-box.disabled .placeholder[data-v-6e0b296f]{color:#ccc}.date-picker-box uni-text[data-v-6e0b296f]{flex:1;text-align:left;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.date-value[data-v-6e0b296f]{font-size:28rpx;color:#333}.date-arrow[data-v-6e0b296f]{width:35rpx;height:33rpx}.upload-label[data-v-6e0b296f]{font-size:28rpx;color:#999;line-height:40rpx;margin-top:24rpx}.date-divider[data-v-6e0b296f]{width:2rpx;height:30rpx;background-color:#e9e9e9;margin:0 15rpx}.date-picker-box.disabled .date-divider[data-v-6e0b296f]{background-color:#f3f3f3}.popup[data-v-6e0b296f]{position:fixed;left:0;right:0;bottom:0;z-index:999;visibility:hidden;opacity:0;transition:all .3s ease}.popup.show[data-v-6e0b296f]{visibility:visible;opacity:1}.popup-mask[data-v-6e0b296f]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.popup-content[data-v-6e0b296f]{position:relative;background-color:#fff;border-radius:24rpx 24rpx 0 0;padding:32rpx;-webkit-transform:translateY(100%);transform:translateY(100%);transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;max-height:70vh}.popup.show .popup-content[data-v-6e0b296f]{-webkit-transform:translateY(0);transform:translateY(0)}.popup-header[data-v-6e0b296f]{display:flex;align-items:center;justify-content:space-between;margin-bottom:20rpx}.popup-title[data-v-6e0b296f]{font-size:32rpx;color:#333;font-weight:500}.popup-close[data-v-6e0b296f]{font-size:40rpx;color:#999;padding:16rpx}.region-body[data-v-6e0b296f]{height:400rpx}.picker-scroll[data-v-6e0b296f]{height:400rpx}.picker-item[data-v-6e0b296f]{height:68rpx;line-height:68rpx;text-align:center;font-size:28rpx}.cancel-text[data-v-6e0b296f]{font-size:32rpx;color:#666}.confirm-text[data-v-6e0b296f]{font-size:32rpx;color:#e8101e;font-weight:500}.title[data-v-6e0b296f]{font-size:32rpx;color:#333;font-weight:500}.popup-footer[data-v-6e0b296f]{display:flex;margin-top:32rpx}.popup-btn[data-v-6e0b296f]{flex:1;height:88rpx;border-radius:44rpx;display:flex;align-items:center;justify-content:center;margin:0 16rpx}.popup-btn.cancel[data-v-6e0b296f]{background-color:#f5f5f5}.popup-btn.confirm[data-v-6e0b296f]{background:linear-gradient(180deg,#f52540,#e8101e)}.popup-btn .btn-text[data-v-6e0b296f]{font-size:32rpx;font-weight:500}.popup-btn.cancel .btn-text[data-v-6e0b296f]{color:#666}.popup-btn.confirm .btn-text[data-v-6e0b296f]{color:#fff}.tip-popup[data-v-6e0b296f]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;display:flex;align-items:center;justify-content:center;visibility:hidden;opacity:0;transition:all .3s ease}.tip-popup.show[data-v-6e0b296f]{visibility:visible;opacity:1}.tip-popup-mask[data-v-6e0b296f]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.tip-popup-content[data-v-6e0b296f]{position:relative;width:620rpx;height:810rpx}.tip-popup-bg[data-v-6e0b296f]{width:620rpx;height:810rpx;position:absolute;top:0;left:0}.tip-popup-body[data-v-6e0b296f]{position:relative;height:100%;display:flex;flex-direction:column;padding:80rpx 20rpx 40rpx 0rpx;box-sizing:border-box}.tip-title[data-v-6e0b296f]{font-size:36rpx;font-weight:700;color:#333;text-align:center;margin-top:107rpx;margin-bottom:37rpx}.tip-image-container[data-v-6e0b296f]{flex:1;display:flex;align-items:center;justify-content:center;margin-bottom:60rpx}.tip-image[data-v-6e0b296f]{width:672rpx;height:327rpx;margin-right:20rpx}.tip-buttons[data-v-6e0b296f]{display:flex;justify-content:space-between;padding:0 38rpx}.tip-btn[data-v-6e0b296f]{width:250rpx;height:80rpx;border-radius:40rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:500}.tip-btn.cancel[data-v-6e0b296f]{border:#e8101e 2rpx solid;background-color:initial;color:#e8101e}.tip-btn.confirm[data-v-6e0b296f]{background:linear-gradient(180deg,#f52540,#e8101e);color:#fff}.tip-btn .btn-text[data-v-6e0b296f]{color:inherit}',""]),t.exports=e},"8ca7":function(t,e,i){var a=i("8ca8");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("84cb134e",a,!0,{sourceMap:!1,shadowMode:!1})},"8ca8":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.project .project-tabs[data-v-c0b161f4]{position:relative;z-index:500;padding:30rpx 40rpx 24rpx 40rpx;background-color:#fafafa}.project .project-tabs .tab-scroll .tab-container[data-v-c0b161f4]{display:flex;justify-content:space-between;align-items:center;flex-wrap:nowrap;padding-bottom:12rpx}.project .project-tabs .tab-scroll .tab-container .tab-card[data-v-c0b161f4]{box-sizing:border-box;padding:0 10rpx;display:flex;align-items:center;gap:8rpx;border-radius:6rpx}.project .project-tabs .tab-scroll .tab-container .tab-card .tab-text[data-v-c0b161f4]{font-weight:400;font-size:30rpx;color:#333;text-align:left;font-style:normal;position:relative}.project .project-tabs .tab-scroll .tab-container .tab-card .tab-card-price-img[data-v-c0b161f4]{width:13rpx;height:18rpx}.project .project-tabs .tab-scroll .tab-container .tab-card.active .tab-text[data-v-c0b161f4]{font-weight:500;color:#e8101e}.project .project-tabs .tab-scroll .tab-container .tab-card.active .tab-text[data-v-c0b161f4]::after{content:"";position:absolute;width:34rpx;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);bottom:-6rpx;height:6rpx;background:linear-gradient(306deg,#e8101e,#f25988);border-radius:3rpx}',""]),t.exports=e},"8cec":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"FilterPanel",props:["dateOptions","distanceOptions","tabOptions"],data:function(){return{wxsProps:{}}},components:{}}},"8d07":function(t,e,i){"use strict";i.r(e);var a=i("4581"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"8d44":function(t,e,i){"use strict";i.r(e);var a=i("2849"),n=i("effb");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("d125");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"d60667ce",null,!1,a["a"],void 0);e["default"]=o.exports},"8d49":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"jp-verification-literalness",props:["securityCode","codeLength","contentWidth","contentHeight","lineLength","backgroundColor","lineColorList","colorList","isCaseCheck"],data:function(){return{wxsProps:{}}},components:{}}},"8d6d":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v(t._$g(4,"t0-0"))])],1),t._$g(5,"i")?i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("v-uni-image",{staticClass:t._$g(7,"sc"),attrs:{src:"/static/images/gohome_location.png",_i:7}}),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v(t._$g(10,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v(t._$g(11,"t0-0"))])],1),i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v(t._$g(12,"t0-0")+t._$g(12,"t0-1"))])],1)],1),i("v-uni-image",{staticClass:t._$g(13,"sc"),attrs:{src:"/static/images/map_icon.png",mode:"aspectFit",_i:13},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("v-uni-image",{staticClass:t._$g(14,"sc"),attrs:{src:"/static/images/order_phone.png",mode:"aspectFit",_i:14},on:{click:function(e){return t.$handleViewEvent(e)}}})],1):t._e(),t._$g(15,"i")?i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("v-uni-image",{staticClass:t._$g(17,"sc"),attrs:{src:"/static/images/gohome_location.png",_i:17}}),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v(t._$g(20,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v(t._$g(21,"t0-0"))])],1)],1)],1),i("v-uni-image",{staticClass:t._$g(22,"sc"),attrs:{src:"/static/images/order_phone.png",mode:"aspectFit",_i:22},on:{click:function(e){return t.$handleViewEvent(e)}}})],1):t._e(),i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[t._$g(25,"i")?i("v-uni-image",{staticClass:t._$g(25,"sc"),attrs:{src:t._$g(25,"a-src"),mode:"aspectFill",_i:25}}):t._e(),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v(t._$g(27,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[t._v("\xa5"+t._$g(28,"t0-0"))])],1),i("v-uni-text",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v("\xd71")])],1),i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[i("v-uni-text",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[t._v("\u5b9e\u9645\u652f\u4ed8\u91d1\u989d\uff1a")]),i("v-uni-text",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v("\uffe5"+t._$g(32,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[i("v-uni-text",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[t._v("\u8ba2\u5355\u4fe1\u606f")]),i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[i("v-uni-text",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[t._v("\u8ba2\u5355\u7f16\u53f7")]),i("v-uni-text",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v(t._$g(37,"t0-0"))])],1),t._$g(38,"i")?i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[i("v-uni-text",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v("\u5230\u5bb6\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[t._v(t._$g(40,"t0-0"))])],1):t._e(),i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[i("v-uni-text",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[t._v("\u4e0b\u5355\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(43,"sc"),attrs:{_i:43}},[t._v(t._$g(43,"t0-0"))])],1),t._$g(44,"i")?i("uni-view",{staticClass:t._$g(44,"sc"),attrs:{_i:44}},[i("v-uni-text",{staticClass:t._$g(45,"sc"),attrs:{_i:45}},[t._v("\u652f\u4ed8\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[t._v(t._$g(46,"t0-0"))])],1):t._e(),t._$g(47,"i")?i("uni-view",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[i("v-uni-text",{staticClass:t._$g(48,"sc"),attrs:{_i:48}},[t._v("\u652f\u4ed8\u65b9\u5f0f")]),i("v-uni-text",{staticClass:t._$g(49,"sc"),attrs:{_i:49}},[t._v(t._$g(49,"t0-0"))])],1):t._e(),t._$g(50,"i")?i("uni-view",{staticClass:t._$g(50,"sc"),attrs:{_i:50}},[i("v-uni-text",{staticClass:t._$g(51,"sc"),attrs:{_i:51}},[t._v("\u5f00\u59cb\u670d\u52a1\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(52,"sc"),attrs:{_i:52}},[t._v(t._$g(52,"t0-0"))])],1):t._e(),t._$g(53,"i")?i("uni-view",{staticClass:t._$g(53,"sc"),attrs:{_i:53}},[i("v-uni-text",{staticClass:t._$g(54,"sc"),attrs:{_i:54}},[t._v("\u670d\u52a1\u5b8c\u6210\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(55,"sc"),attrs:{_i:55}},[t._v(t._$g(55,"t0-0"))])],1):t._e()],1)],1),i("uni-view",{staticClass:t._$g(56,"sc"),attrs:{_i:56}},[t._$g(57,"i")?i("uni-view",{staticClass:t._$g(57,"sc"),attrs:{_i:57},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g(58,"sc"),attrs:{_i:58}},[t._v("\u53d6\u6d88\u8ba2\u5355")])],1):t._e(),t._$g(59,"i")?i("uni-view",{staticClass:t._$g(59,"sc"),attrs:{_i:59},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g(60,"sc"),attrs:{_i:60}},[t._v("\u786e\u8ba4\u8ba2\u5355")])],1):t._e(),t._$g(61,"i")?i("uni-view",{staticClass:t._$g(61,"sc"),attrs:{_i:61},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g(62,"sc"),attrs:{_i:62}},[t._v("\u5f00\u59cb\u670d\u52a1")])],1):t._e(),t._$g(63,"i")?i("uni-view",{staticClass:t._$g(63,"sc"),attrs:{_i:63},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g(64,"sc"),attrs:{_i:64}},[t._v("\u670d\u52a1\u5b8c\u6210")])],1):t._e()],1),i("serviceCodeInput",{attrs:{_i:65},on:{close:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(66,"sc"),class:t._$g(66,"c"),attrs:{_i:66}},[i("uni-view",{staticClass:t._$g(67,"sc"),attrs:{_i:67}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(68,"sc"),attrs:{_i:68}},[t._v("\u5f53\u60a8\u9700\u8981\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0\u5ba2\u670d\u7684\u65f6\u5019\uff0c\u9700\u8981\u83b7\u53d6\u62e8\u6253\u7535\u8bdd\u6743\u9650\u3002")])],1)],1)},r=[]},"8d9e":function(t,e,i){"use strict";i.r(e);var a=i("27eb"),n=i("42a1");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("b7e4");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"8dc7":function(t,e,i){t.exports=i.p+"static/images/syr/introduction.png"},"8dcf":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,aliOssUploader:i("93a6").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("class_select",{directives:[{name:"show",rawName:"v-show",value:t._$g(2,"v-show"),expression:"_$g(2,'v-show')"}],attrs:{_i:2},on:{changeClass:function(e){return t.$handleViewEvent(e)},changeSecondClass:function(e){return t.$handleViewEvent(e)},changeTypeText:function(e){return t.$handleViewEvent(e)},closeClassSelect:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{directives:[{name:"show",rawName:"v-show",value:t._$g(3,"v-show"),expression:"_$g(3,'v-show')"}],staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u5206\u7c7b")]),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{class:t._$g(8,"c"),attrs:{_i:8}},[t._v(" "+t._$g(8,"t0-0")+" ")]),i("v-uni-image",{staticClass:t._$g(9,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:9}})],1)],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u5de5\u65f6\u540d\u79f0")]),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("v-uni-input",{staticClass:t._$g(13,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u540d\u79f0\uff08\u4f8b\u5982\u5230\u5bb6\u7f8e\u7532\u3001\u7f8e\u7532\u5e08\u5c0f\u65f6\u5de5\uff09","placeholder-class":"placeholder",_i:13},model:{value:t._$g(13,"v-model"),callback:function(e){t.$handleVModelEvent(13,e)},expression:"formData.title"}})],1)],1),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("uni-view",{attrs:{_i:15}},[i("v-uni-text",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._v("\u5de5\u65f6\u4ef7\u683c")]),i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v("(*\u4ee5\u4e0b\u6309\u7167\u6bcf10\u5206\u949f\u7684\u4ef7\u683c)")])],1),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("v-uni-input",{staticClass:t._$g(20,"sc"),attrs:{type:"digit",placeholder:"\u8bf7\u8f93\u5165\u4ef7\u683c","placeholder-class":"placeholder",_i:20},model:{value:t._$g(20,"v-model"),callback:function(e){t.$handleVModelEvent(20,e)},expression:"formData.price"}})],1),i("v-uni-text",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v("\u5143/10\u5206\u949f")])],1)],1),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[i("v-uni-text",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v("\u5de5\u65f6\u63cf\u8ff0")]),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("v-uni-textarea",{staticClass:t._$g(25,"sc"),attrs:{placeholder:"\u8bf7\u8f93\u5165\u63cf\u8ff0\uff0c\u53ef\u4e2a\u4eba\u4e13\u4e1a\u5ea6\u3001\u4f5c\u54c1\u7ecf\u5386\u7b49\u65b9\u9762\u63cf\u8ff0\u3002","placeholder-class":"placeholder",maxlength:"-1",_i:25},model:{value:t._$g(25,"v-model"),callback:function(e){t.$handleVModelEvent(25,e)},expression:"formData.detail"}})],1)],1),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[i("uni-view",{attrs:{_i:27}},[i("v-uni-text",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[t._v("\u4f5c\u54c1\u5c55\u793a")]),i("v-uni-text",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v("(*\u4ec5\u53ef\u4e0a\u4f209\u4e2a\u56fe\u7247)")])],1),i("ali-oss-uploader",{attrs:{_i:30},on:{success:function(e){return t.$handleViewEvent(e)},error:function(e){return t.$handleViewEvent(e)},delete:function(e){return t.$handleViewEvent(e)},ckeckisShowPer:function(e){return t.$handleViewEvent(e)},ckecknowQer:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(30,"v-model"),callback:function(){},expression:"formData.photo"}})],1)],1),i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[t._$g(32,"i")?i("v-uni-button",{staticClass:t._$g(32,"sc"),attrs:{_i:32},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u5b58\u8349\u7a3f ")]):t._e(),i("v-uni-button",{staticClass:t._$g(33,"sc"),class:t._$g(33,"c"),attrs:{_i:33},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u63d0\u4ea4")])],1),t._$g(34,"i")?i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34},on:{click:function(e){return t.$handleViewEvent(e)}}}):t._e(),i("uni-view",{staticClass:t._$g(35,"sc"),class:t._$g(35,"c"),attrs:{_i:35}},[i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u50a8\u5b58\u7a7a\u95f4/\u7167\u7247\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u8bfb\u53d6\u76f8\u518c\u548c\u6587\u4ef6\u5185\u5bb9\u3002")])],1),i("uni-view",{staticClass:t._$g(38,"sc"),class:t._$g(38,"c"),attrs:{_i:38}},[i("uni-view",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u76f8\u673a\u62cd\u6444\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u6240\u9700\u5185\u5bb9\u3002")])],1)],1)],1)},r=[]},"8e15":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,uvSwitch:i("b32f").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._v(" APP\u5173\u95ed\u65f6 ")]),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("v-uni-text",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v("\u65b0\u6d88\u606f\u7cfb\u7edf\u901a\u77e5")])],1),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v(t._$g(9,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(10,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/01aff5d8-de48-4c53-9425-53a9b4da3dbc.png",mode:"aspectFit",_i:10}})],1)],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v(" \u5728\u7cfb\u7edf\u4e2d\u5f00\u542f\uff0c\u53ef\u4ee5\u6536\u5230\u8ba2\u5355\u3001\u804a\u5929\u7b49\u6d88\u606f\u901a")])],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("uni-view",{attrs:{_i:13}},[i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("v-uni-text",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._v("\u65b0\u6d88\u606f\u7cfb\u7edf\u901a\u77e5")])],1)],1),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v(" \u5f00\u542f\u8bed\u97f3\u63d0\u793a\u907f\u514d\u843d\u5355")])],1),i("uv-switch",{attrs:{_i:18},on:{change:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(18,"v-model"),callback:function(){},expression:"value"}})],1)],1),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v(" \u6309\u6d88\u606f\u7c7b\u578b\u8bbe\u7f6e ")]),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[i("v-uni-image",{staticClass:t._$g(24,"sc"),attrs:{mode:"heightFix",src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/b37e9054-c368-4463-a058-5262148b44dd.png",_i:24}}),i("v-uni-text",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v("\u8ba2\u5355\u6d88\u606f")])],1),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[i("v-uni-image",{staticClass:t._$g(27,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/51f48a77-82f6-4952-9983-5a52401123b5.png",mode:"aspectFit",_i:27}})],1)],1),i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[t._v(" \u8ba2\u5355\u52a8\u6001\u3001\u5c65\u7ea6\u4fe1\u606f\u7b49\u5185\u5bb9")])],1)],1),t._$g(29,"i")?i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29},on:{click:function(e){return t.$handleViewEvent(e)},touchmove:function(e){return t.$handleViewEvent(e,{prevent:!0})}}},[i("uni-view",{staticClass:t._$g(30,"sc"),class:t._$g(30,"c"),style:t._$g(30,"s"),attrs:{_i:30},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[t._v("\u6e29\u99a8\u63d0\u793a")]),i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v(" \u6d4b\u8bd5\u5df2\u63d0\u4ea4\uff0c\u82e55\u5206\u949f\u540e\u4ecd\u672a\u6536\u5230\u63a8\u9001\u6d88\u606f\uff0c\u8bf7\u8054\u7cfb\u5b98\u65b9\u5ba2\u670d\u8fdb\u884c\u5904\u7406\u3002 ")]),i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[t._v("\u597d\u7684")])],1)],1)],1):t._e()],1)},r=[]},"8e27":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"manHourCard",props:["info","index"],data:function(){return{wxsProps:{}}},components:{}}},"8e9b":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1},on:{onHeadleClick:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._$g(4,"i")?i("v-uni-video",{staticClass:t._$g(4,"sc"),attrs:{src:t._$g(4,"a-src"),id:"myVideo",autoplay:!0,controls:!1,muted:!0,loop:!0,"enable-play-gesture":"true","object-fit":"cover",_i:4}}):t._$g(5,"e")?i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:t._$g(5,"a-src"),mode:"aspectFill",referrer:"no-referrer",_i:5}}):i("v-uni-image",{staticClass:t._$g(6,"sc"),attrs:{src:"/static/default.png",mode:"aspectFill",referrer:"no-referrer",_i:6}}),t._$g(7,"i")?i("v-uni-cover-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("v-uni-cover-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(" "+t._$g(8,"t0-0")+" ")]),i("v-uni-cover-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}}),i("v-uni-cover-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-cover-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("v-uni-cover-view",{attrs:{_i:12}},[t._v("\u76f8\u518c")])],1),i("v-uni-cover-image",{staticClass:t._$g(13,"sc"),attrs:{src:"/static/images/icons/right7_13.png",_i:13}})],1)],1):t._e()],1)],1),i("uni-view",{staticClass:t._$g(14,"sc"),style:t._$g(14,"s"),attrs:{_i:14}},[i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("v-uni-image",{staticClass:t._$g(17,"sc"),attrs:{src:t._$g(17,"a-src"),mode:"aspectFill",referrer:"no-referrer",_i:17}}),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v(" "+t._$g(19,"t0-0")+" ")]),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v(" \u8425\u4e1a\u65f6\u95f4 ")]),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v(" "+t._$g(22,"t0-0")+" ")])],1)],1)],1),i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[i("v-uni-image",{staticClass:t._$g(26,"sc"),attrs:{src:"/static/images/syr/company.png",mode:"aspectFill",referrer:"no-referrer",_i:26}})],1),i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v(" "+t._$g(27,"t0-0")+" ")])],1),i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v(" \u6700\u8fd1\u53ef\u7ea6 ")]),i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[t._v(" "+t._$g(30,"t0-0")+" ")])],1)],1),i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[i("v-uni-text",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[t._v("\u5e97\u94fa\u6240\u5728\u5730")]),i("v-uni-text",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[t._v(t._$g(34,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[i("v-uni-image",{staticClass:t._$g(36,"sc"),attrs:{src:"/static/images/syr/distance.png",mode:"widthFix",referrer:"no-referrer",_i:36}}),t._v(" "+t._$g(35,"t1-0")+"Km ")],1)],1),i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v(" "+t._$g(37,"t0-0")+" ")]),i("v-uni-image",{staticClass:t._$g(38,"sc"),attrs:{src:"/static/images/syr/banner.png",mode:"widthFix",referrer:"no-referrer",_i:38}})],1),i("uni-view",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[t._v("\u5168\u90e8\u9879\u76ee")]),i("projectTabs",{attrs:{_i:41},on:{clickTap:function(e){return t.$handleViewEvent(e)},clickPopTap:function(e){return t.$handleViewEvent(e)}}}),i("CommonList",{ref:"groupRef",attrs:{_i:42},on:{"load-success-all":function(e){return t.$handleViewEvent(e)}},scopedSlots:t._u([{key:"listData",fn:function(t,e,a){t.list;return[i("serviceCardList",{attrs:{_i:"44-"+a}})]}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"46-"+a}})]}}])})],1),t._$g(47,"i")?i("evaluationList",{attrs:{_i:47},on:{goList:function(e){return t.$handleViewEvent(e)}}}):t._e()],1)],1)},r=[]},"8e9d":function(t,e,i){var a=i("579b");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("38719f6e",a,!0,{sourceMap:!1,shadowMode:!1})},"8ee6":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"CommonList",props:["refresherEnabled","apiUrl","initialQuery","listScrollHeight","loadingText","noMoreText","pageConfig","responseMap"],data:function(){return{wxsProps:{}}},components:{}}},"8f1b":function(t,e,i){"use strict";i.r(e);var a=i("a728"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"8f21":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"8f29":function(t,e,i){"use strict";i.r(e);var a=i("12b2"),n=i("3067");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("3f58");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"723745c6",null,!1,a["a"],void 0);e["default"]=o.exports},"8f51":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".common-list[data-v-565ba08c]{width:100%;background-color:#fff;padding-bottom:30rpx}.list-scroll[data-v-565ba08c]{width:100%;margin-top:16rpx}.list-container[data-v-565ba08c]{padding:0 24rpx}.load-tips[data-v-565ba08c]{text-align:center;font-size:24rpx;color:#cecece;padding:24rpx 0;margin-top:30rpx}",""]),t.exports=e},"8f55":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,aliOssUploader:i("93a6").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}}),i("v-uni-text",{attrs:{_i:5}},[t._v(t._$g(5,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("v-uni-text",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v(t._$g(7,"t0-0"))]),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g(9,"i")?i("v-uni-image",{staticClass:t._$g(9,"sc"),attrs:{src:t._$g(9,"a-src"),mode:"aspectFill",_i:9}}):i("v-uni-image",{staticClass:t._$g(10,"sc"),attrs:{src:"/static/images/upload-img.png",mode:"aspectFit",_i:10}})],1),t._$g(11,"i")?i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u6ce8:\u5934\u50cf\u5373\u4e3a\u670d\u52a1\u4eba\u5bf0\u5f62\u8c61\u7167\uff0c\u662f\u7528\u6237\u4e0b\u5355\u9009\u62e9\u670d\u52a1\u4eba\u5458\u65f6\u7684\u91cd\u8981\u53c2\u8003\uff0c\u8bf7\u4e0a\u4f20\u6b63\u9762\u534a\u8eab\u514d\u51a0\u7167\u3002\u5c3a\u5bf8\u9700\u5927\u4e8e750*750\u50cf\u7d20\uff0c\u80cc\u666f\u4e3a\u6d45\u8272")]):t._e()],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("v-uni-text",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v(t._$g(13,"t0-0"))]),i("v-uni-input",{staticClass:t._$g(14,"sc"),attrs:{type:"text",placeholder:t._$g(14,"a-placeholder"),"placeholder-class":"placeholder",_i:14},model:{value:t._$g(14,"v-model"),callback:function(e){t.$handleVModelEvent(14,e)},expression:"formData.name"}})],1),t._$g(15,"i")?i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("v-uni-text",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._v("\u6cd5\u4eba\u59d3\u540d")]),i("v-uni-input",{staticClass:t._$g(17,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u6cd5\u4eba\u59d3\u540d","placeholder-class":"placeholder",_i:17},model:{value:t._$g(17,"v-model"),callback:function(e){t.$handleVModelEvent(17,e)},expression:"formData.legal_name"}})],1):t._e(),t._$g(18,"i")?i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("v-uni-text",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v("\u8054\u7cfb\u65b9\u5f0f")]),i("v-uni-input",{staticClass:t._$g(20,"sc"),attrs:{type:"number",placeholder:"\u8bf7\u8f93\u5165\u8054\u7cfb\u65b9\u5f0f",disabled:!0,"placeholder-class":"placeholder",_i:20},model:{value:t._$g(20,"v-model"),callback:function(e){t.$handleVModelEvent(20,e)},expression:"formData.account"}})],1):i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("v-uni-text",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v("\u6cd5\u4eba\u8054\u7cfb\u65b9\u5f0f")]),i("v-uni-input",{staticClass:t._$g(23,"sc"),attrs:{type:"number",placeholder:"\u8bf7\u8f93\u5165\u6cd5\u4eba\u8054\u7cfb\u65b9\u5f0f","placeholder-class":"placeholder",_i:23},model:{value:t._$g(23,"v-model"),callback:function(e){t.$handleVModelEvent(23,e)},expression:"formData.legal_phone"}})],1),t._$g(24,"i")?i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[i("v-uni-text",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[t._v("\u8eab\u4efd\u8bc1\u53f7\u7801")]),i("v-uni-input",{staticClass:t._$g(27,"sc"),attrs:{type:"idcard",placeholder:"\u8bf7\u8f93\u5165\u8eab\u4efd\u53f7\u7801","placeholder-class":"placeholder",_i:27},model:{value:t._$g(27,"v-model"),callback:function(e){t.$handleVModelEvent(27,e)},expression:"formData.idcard_num"}})],1),i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[t._$g(31,"i")?i("v-uni-image",{staticClass:t._$g(31,"sc"),attrs:{src:t._$g(31,"a-src"),mode:"aspectFill",_i:31}}):i("v-uni-image",{staticClass:t._$g(32,"sc"),attrs:{src:"/static/images/camera.png",mode:"aspectFit",_i:32}})],1)],1),i("v-uni-text",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[t._v("\u8bf7\u4e0a\u4f20\u8eab\u4efd\u8bc1\u6b63\u9762(\u4eba\u50cf\u9762)")])],1),i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[t._$g(37,"i")?i("v-uni-image",{staticClass:t._$g(37,"sc"),attrs:{src:t._$g(37,"a-src"),mode:"aspectFill",_i:37}}):i("v-uni-image",{staticClass:t._$g(38,"sc"),attrs:{src:"/static/images/camera.png",mode:"aspectFit",_i:38}})],1)],1),i("v-uni-text",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v("\u8bf7\u4e0a\u4f20\u8eab\u4efd\u8bc1\u53cd\u9762(\u56fd\u5fbd\u9762)")])],1),i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[t._$g(43,"i")?i("v-uni-image",{staticClass:t._$g(43,"sc"),attrs:{src:t._$g(43,"a-src"),mode:"aspectFill",_i:43}}):i("v-uni-image",{staticClass:t._$g(44,"sc"),attrs:{src:"/static/images/camera.png",mode:"aspectFit",_i:44}})],1)],1),i("v-uni-text",{staticClass:t._$g(45,"sc"),attrs:{_i:45}},[t._v("\u624b\u6301\u8eab\u4efd\u8bc1\u7167")])],1),i("uni-view",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[i("uni-view",{staticClass:t._$g(47,"sc"),attrs:{_i:47},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(48,"sc"),attrs:{_i:48}},[t._$g(49,"i")?i("v-uni-image",{staticClass:t._$g(49,"sc"),attrs:{src:t._$g(49,"a-src"),mode:"aspectFill",_i:49}}):i("v-uni-image",{staticClass:t._$g(50,"sc"),attrs:{src:"/static/images/camera.png",mode:"aspectFit",_i:50}})],1)],1),i("v-uni-text",{staticClass:t._$g(51,"sc"),attrs:{_i:51}},[t._v("\u8bf7\u4e0a\u4f20\u5065\u5eb7\u7167")])],1)],1):i("uni-view",{staticClass:t._$g(52,"sc"),attrs:{_i:52}},[i("uni-view",{staticClass:t._$g(53,"sc"),attrs:{_i:53}},[i("v-uni-text",{staticClass:t._$g(54,"sc"),attrs:{_i:54}},[t._v("\u6cd5\u4eba\u8eab\u4efd\u8bc1\u53f7\u7801")]),i("v-uni-input",{staticClass:t._$g(55,"sc"),attrs:{type:"idcard",placeholder:"\u8bf7\u8f93\u5165\u6cd5\u4eba\u8eab\u4efd\u53f7\u7801","placeholder-class":"placeholder",_i:55},model:{value:t._$g(55,"v-model"),callback:function(e){t.$handleVModelEvent(55,e)},expression:"formData.legal_idcard_num"}})],1),i("uni-view",{attrs:{_i:56}},[i("uni-view",{staticClass:t._$g(57,"sc"),attrs:{_i:57}},[i("uni-view",{staticClass:t._$g(58,"sc"),attrs:{_i:58},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(59,"sc"),attrs:{_i:59}},[t._$g(60,"i")?i("v-uni-image",{staticClass:t._$g(60,"sc"),attrs:{src:t._$g(60,"a-src"),mode:"aspectFill",_i:60}}):i("v-uni-image",{staticClass:t._$g(61,"sc"),attrs:{src:"/static/images/camera.png",mode:"aspectFit",_i:61}})],1)],1),i("v-uni-text",{staticClass:t._$g(62,"sc"),attrs:{_i:62}},[t._v("\u8bf7\u4e0a\u4f20\u6cd5\u4eba\u8eab\u4efd\u8bc1\u6b63\u9762(\u4eba\u50cf\u9762)")])],1),i("uni-view",{staticClass:t._$g(63,"sc"),attrs:{_i:63}},[i("uni-view",{staticClass:t._$g(64,"sc"),attrs:{_i:64},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(65,"sc"),attrs:{_i:65}},[t._$g(66,"i")?i("v-uni-image",{staticClass:t._$g(66,"sc"),attrs:{src:t._$g(66,"a-src"),mode:"aspectFill",_i:66}}):i("v-uni-image",{staticClass:t._$g(67,"sc"),attrs:{src:"/static/images/camera.png",mode:"aspectFit",_i:67}})],1)],1),i("v-uni-text",{staticClass:t._$g(68,"sc"),attrs:{_i:68}},[t._v("\u8bf7\u4e0a\u4f20\u6cd5\u4eba\u8eab\u4efd\u8bc1\u53cd\u9762(\u56fd\u5fbd\u9762)")])],1)],1)],1),i("uni-view",{staticClass:t._$g(69,"sc"),attrs:{_i:69}},[i("uni-view",{staticClass:t._$g(70,"sc"),attrs:{_i:70},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(71,"sc"),attrs:{_i:71}},[t._$g(72,"i")?i("v-uni-image",{staticClass:t._$g(72,"sc"),attrs:{src:t._$g(72,"a-src"),mode:"aspectFill",_i:72}}):i("v-uni-image",{staticClass:t._$g(73,"sc"),attrs:{src:"/static/images/camera.png",mode:"aspectFit",_i:73}})],1)],1),i("v-uni-text",{staticClass:t._$g(74,"sc"),attrs:{_i:74}},[t._v("\u8bf7\u4e0a\u4f20\u8425\u4e1a\u6267\u7167")])],1),t._$g(75,"i")?i("uni-view",{staticClass:t._$g(75,"sc"),attrs:{_i:75}},[i("uni-view",{staticClass:t._$g(76,"sc"),attrs:{_i:76},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(77,"sc"),attrs:{_i:77}},[t._$g(78,"i")?i("v-uni-image",{staticClass:t._$g(78,"sc"),attrs:{src:t._$g(78,"a-src"),mode:"aspectFill",_i:78}}):i("v-uni-image",{staticClass:t._$g(79,"sc"),attrs:{src:"/static/images/camera.png",mode:"aspectFit",_i:79}})],1)],1),i("v-uni-text",{staticClass:t._$g(80,"sc"),attrs:{_i:80}},[t._v("\u8bf7\u4e0a\u4f20\u95e8\u5934\u7167\u7247")])],1):t._e(),t._$g(81,"i")?i("uni-view",{staticClass:t._$g(81,"sc"),attrs:{_i:81}},[i("v-uni-text",{staticClass:t._$g(82,"sc"),attrs:{_i:82}},[t._v("\u8bf7\u4e0a\u4f20\u8d44\u8d28\u7167\u7247")]),i("uni-view",{staticClass:t._$g(83,"sc"),attrs:{_i:83}},[i("ali-oss-uploader",{attrs:{_i:84},on:{success:function(e){return t.$handleViewEvent(e)},error:function(e){return t.$handleViewEvent(e)},delete:function(e){return t.$handleViewEvent(e)},ckeckisShowPer:function(e){return t.$handleViewEvent(e)},ckecknowQer:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(84,"v-model"),callback:function(){},expression:"formData.qualifications"}})],1)],1):t._e(),t._$g(85,"i")?i("uni-view",{staticClass:t._$g(85,"sc"),attrs:{_i:85}},[i("v-uni-text",{staticClass:t._$g(86,"sc"),attrs:{_i:86}},[t._v("\u4e2a\u4eba\u4ecb\u7ecd")]),i("v-uni-textarea",{staticClass:t._$g(87,"sc"),attrs:{placeholder:"\u8bf7\u8f93\u5165\u4e2a\u4eba\u4ecb\u7ecd","placeholder-class":"placeholder",_i:87},model:{value:t._$g(87,"v-model"),callback:function(e){t.$handleVModelEvent(87,e)},expression:"formData.detail"}})],1):t._e(),i("uni-view",{staticClass:t._$g(88,"sc"),attrs:{_i:88},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(89,"sc"),attrs:{_i:89}},[t._v("\u6240\u5728\u5730")]),i("uni-view",{staticClass:t._$g(90,"sc"),attrs:{_i:90}},[i("v-uni-text",{class:t._$g(91,"c"),attrs:{_i:91}},[t._v(t._$g(91,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(92,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:92}})],1)],1),i("uni-view",{staticClass:t._$g(93,"sc"),attrs:{_i:93}},[i("v-uni-text",{staticClass:t._$g(94,"sc"),attrs:{_i:94}},[t._v("\u8be6\u7ec6\u5730\u5740")]),i("uni-view",{staticClass:t._$g(95,"sc"),attrs:{_i:95},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{class:t._$g(96,"c"),attrs:{_i:96}},[t._v(t._$g(96,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(97,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:97}})],1)],1),t._$g(98,"i")?i("uni-view",{staticClass:t._$g(98,"sc"),attrs:{_i:98}},[i("v-uni-text",{staticClass:t._$g(99,"sc"),attrs:{_i:99}},[t._v("\u5907\u7528\u8054\u7cfb\u65b9\u5f0f")]),i("v-uni-input",{staticClass:t._$g(100,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u5907\u7528\u8054\u7cfb\u65b9\u5f0f","placeholder-class":"placeholder",_i:100},model:{value:t._$g(100,"v-model"),callback:function(e){t.$handleVModelEvent(100,e)},expression:"formData.second_phone"}})],1):t._e(),t._$g(101,"i")?i("uni-view",{staticClass:t._$g(101,"sc"),attrs:{_i:101}},[i("v-uni-text",{staticClass:t._$g(102,"sc"),attrs:{_i:102}},[t._v("\u6240\u5c5e\u5e97\u94fa")]),i("v-uni-input",{staticClass:t._$g(103,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u6240\u5c5e\u5e97\u94fa","placeholder-class":"placeholder",_i:103},model:{value:t._$g(103,"v-model"),callback:function(e){t.$handleVModelEvent(103,e)},expression:"formData.for_shop"}})],1):t._e(),i("uni-view",{staticClass:t._$g(104,"sc"),attrs:{_i:104},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(105,"sc"),attrs:{_i:105}},[t._v("\u83b7\u53d6\u6d88\u606f\u65b9\u5f0f")]),i("uni-view",{staticClass:t._$g(106,"sc"),attrs:{_i:106}},[i("v-uni-text",{class:t._$g(107,"c"),attrs:{_i:107}},[t._v(t._$g(107,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(108,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:108}})],1)],1),i("uni-view",{staticClass:t._$g(109,"sc"),attrs:{_i:109}},[i("uni-view",{staticClass:t._$g(110,"sc"),attrs:{_i:110}},[i("v-uni-text",{staticClass:t._$g(111,"sc"),attrs:{_i:111}},[t._v("\u9080\u8bf7\u7801")]),i("v-uni-input",{staticClass:t._$g(112,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u9080\u8bf7\u7801","placeholder-class":"placeholder",_i:112},model:{value:t._$g(112,"v-model"),callback:function(e){t.$handleVModelEvent(112,e)},expression:"formData.invite_code_other"}})],1),i("v-uni-text",{staticClass:t._$g(113,"sc"),attrs:{_i:113}},[t._v("\u8bf7\u586b\u5199\u9080\u8bf7\u4eba\u7684\u9080\u8bf7\u7801\uff0c\u82e5\u6ca1\u6709\u9080\u8bf7\u4eba\u8bf7\u586b\u519913131313")])],1),i("uni-view",{staticClass:t._$g(114,"sc"),attrs:{_i:114}},[i("uni-view",{staticClass:t._$g(115,"sc"),attrs:{_i:115}}),i("v-uni-text",{attrs:{_i:116}},[t._v("\u670d\u52a1\u627f\u8bfa")])],1),i("uni-view",{staticClass:t._$g(117,"sc"),attrs:{_i:117},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(118,"sc"),attrs:{_i:118}},[t._v("\u670d\u52a1\u6280\u80fd")]),i("uni-view",{staticClass:t._$g(119,"sc"),attrs:{_i:119}},[i("v-uni-text",{class:t._$g(120,"c"),attrs:{_i:120}},[t._v(t._$g(120,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(121,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:121}})],1)],1),t._$g(122,"i")?i("uni-view",{staticClass:t._$g(122,"sc"),attrs:{_i:122},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(123,"sc"),attrs:{_i:123}},[t._v("\u670d\u52a1\u533a\u57df")]),i("uni-view",{staticClass:t._$g(124,"sc"),attrs:{_i:124}},[i("v-uni-text",{class:t._$g(125,"c"),attrs:{_i:125}},[t._v(t._$g(125,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(126,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:126}})],1)],1):t._e(),t._$g(127,"i")?i("uni-view",{staticClass:t._$g(127,"sc"),attrs:{_i:127},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(128,"sc"),attrs:{_i:128}},[t._v("\u670d\u52a1\u65f6\u95f4")]),i("uni-view",{staticClass:t._$g(129,"sc"),attrs:{_i:129}},[i("v-uni-text",{class:t._$g(130,"c"),attrs:{_i:130}},[t._v(t._$g(130,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(131,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:131}})],1)],1):i("uni-view",{staticClass:t._$g(132,"sc"),attrs:{_i:132},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(133,"sc"),attrs:{_i:133}},[t._v("\u8425\u4e1a\u65f6\u95f4")]),i("uni-view",{staticClass:t._$g(134,"sc"),attrs:{_i:134}},[i("v-uni-text",{class:t._$g(135,"c"),attrs:{_i:135}},[t._v(t._$g(135,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(136,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:136}})],1)],1),i("uni-view",{staticClass:t._$g(137,"sc"),attrs:{_i:137},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(138,"sc"),attrs:{_i:138}},[t._v("\u4e13\u4e1a\u7ecf\u9a8c")]),i("uni-view",{staticClass:t._$g(139,"sc"),attrs:{_i:139}},[i("v-uni-text",{class:t._$g(140,"c"),attrs:{_i:140}},[t._v(t._$g(140,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(141,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:141}})],1)],1),t._$g(142,"i")?i("uni-view",{staticClass:t._$g(142,"sc"),attrs:{_i:142},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(143,"sc"),attrs:{_i:143}},[t._v("\u76ee\u524d\u5de5\u4f5c\u72b6\u6001")]),i("uni-view",{staticClass:t._$g(144,"sc"),attrs:{_i:144}},[i("v-uni-text",{class:t._$g(145,"c"),attrs:{_i:145}},[t._v(t._$g(145,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(146,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:146}})],1)],1):t._e(),i("uni-view",{staticClass:t._$g(147,"sc"),attrs:{_i:147}},[i("uni-view",{staticClass:t._$g(148,"sc"),attrs:{_i:148}},[t._v("\u670d\u52a1\u627f\u8bfa")]),t._$g(149,"i")?i("uni-view",{staticClass:t._$g(149,"sc"),attrs:{_i:149}},[i("uni-view",{staticClass:t._$g(150,"sc"),attrs:{_i:150}}),i("v-uni-text",{staticClass:t._$g(151,"sc"),attrs:{_i:151}},[t._v("\u56e0\u5de5\u4f5c\u7167\u53ca\u8eab\u4efd\u8bc1\u9700\u4f5c\u4e3a\u5ba1\u6838\u4f9d\u636e\uff0c\u62cd\u6444\u7167\u7247\u65f6\uff0c\u8bf7\u52ff\u5f00\u7f8e\u989c/\u6ee4\u955c\u7b49\uff0c\u4ee5\u786e\u4fdd\u7167\u7247\u5185\u5bb9\u6e05\u6670\u771f\u5b9e\u3002")])],1):t._e(),i("uni-view",{staticClass:t._$g(152,"sc"),attrs:{_i:152}},[i("uni-view",{staticClass:t._$g(153,"sc"),attrs:{_i:153}}),i("v-uni-text",{staticClass:t._$g(154,"sc"),attrs:{_i:154}},[t._v("\u5ba1\u6838\u901a\u8fc7\uff0c\u5373\u53ef\u5e73\u53f0\u8fdb\u884c\u63a5\u5355\uff0c\u8bf7\u4e25\u683c\u9075\u5b88\u76f8\u5173\u6cd5\u5f8b\u6cd5\u89c4\uff0c\u79c9\u627f\u4e3a\u7528\u6237\u63d0\u4f9b\u7684\u6700\u5927\u7406\u5ff5\uff0c\u7ec6\u81f4\u3001\u70ed\u60c5\u3001\u8d1f\u8d23\u4e3a\u7528\u6237\u63d0\u4f9b\u670d\u52a1\u3002")])],1)],1),i("uni-view",{staticClass:t._$g(155,"sc"),class:t._$g(155,"c"),attrs:{_i:155}},[i("uni-view",{staticClass:t._$g(156,"sc"),attrs:{_i:156},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(157,"sc"),attrs:{_i:157}},[i("uni-view",{staticClass:t._$g(158,"sc"),attrs:{_i:158}},[i("v-uni-text",{staticClass:t._$g(159,"sc"),attrs:{_i:159}},[t._v("\u9009\u62e9\u670d\u52a1\u6280\u80fd")]),i("v-uni-text",{staticClass:t._$g(160,"sc"),attrs:{_i:160},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\xd7")])],1),i("uni-view",{staticClass:t._$g(161,"sc"),attrs:{_i:161}},[i("uni-view",{staticClass:t._$g(162,"sc"),attrs:{_i:162}},t._l(t._$g(163,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("163-"+r,"sc"),attrs:{_i:"163-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("164-"+r,"sc"),class:t._$g("164-"+r,"c"),attrs:{_i:"164-"+r}},[t._$g("165-"+r,"i")?i("v-uni-text",{staticClass:t._$g("165-"+r,"sc"),attrs:{_i:"165-"+r}},[t._v("\u2713")]):t._e()],1),i("v-uni-text",{staticClass:t._$g("166-"+r,"sc"),attrs:{_i:"166-"+r}},[t._v(t._$g("166-"+r,"t0-0"))])],1)})),1)],1),i("uni-view",{staticClass:t._$g(167,"sc"),attrs:{_i:167}},[i("uni-view",{staticClass:t._$g(168,"sc"),attrs:{_i:168},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(169,"sc"),attrs:{_i:169}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(170,"sc"),attrs:{_i:170},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(171,"sc"),attrs:{_i:171}},[t._v("\u786e\u5b9a")])],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(172,"sc"),class:t._$g(172,"c"),attrs:{_i:172}},[i("uni-view",{staticClass:t._$g(173,"sc"),attrs:{_i:173},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(174,"sc"),attrs:{_i:174}},[i("uni-view",{staticClass:t._$g(175,"sc"),attrs:{_i:175}},[i("v-uni-text",{staticClass:t._$g(176,"sc"),attrs:{_i:176}},[t._v("\u9009\u62e9\u670d\u52a1\u533a\u57df")]),i("v-uni-text",{staticClass:t._$g(177,"sc"),attrs:{_i:177},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\xd7")])],1),i("uni-view",{staticClass:t._$g(178,"sc"),attrs:{_i:178}},t._l(t._$g(179,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("179-"+r,"sc"),class:t._$g("179-"+r,"c"),attrs:{_i:"179-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("179-"+r,"t0-0")+" ")])})),1),i("uni-view",{staticClass:t._$g(180,"sc"),attrs:{_i:180}},[t._$g(181,"i")?i("v-uni-scroll-view",{staticClass:t._$g(181,"sc"),attrs:{"scroll-y":!0,_i:181}},t._l(t._$g(182,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("182-"+r,"sc"),attrs:{_i:"182-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{attrs:{_i:"183-"+r}},[t._v(t._$g("183-"+r,"t0-0"))]),i("v-uni-image",{staticClass:t._$g("184-"+r,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:"184-"+r}})],1)})),1):t._e(),t._$g(185,"i")?i("v-uni-scroll-view",{staticClass:t._$g(185,"sc"),attrs:{"scroll-y":!0,_i:185}},t._l(t._$g(186,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("186-"+r,"sc"),attrs:{_i:"186-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{attrs:{_i:"187-"+r}},[t._v(t._$g("187-"+r,"t0-0"))]),i("v-uni-image",{staticClass:t._$g("188-"+r,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:"188-"+r}})],1)})),1):t._e(),t._$g(189,"i")?i("v-uni-scroll-view",{staticClass:t._$g(189,"sc"),attrs:{"scroll-y":!0,_i:189}},t._l(t._$g(190,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("190-"+r,"sc"),attrs:{_i:"190-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("191-"+r,"sc"),class:t._$g("191-"+r,"c"),attrs:{_i:"191-"+r}},[t._$g("192-"+r,"i")?i("v-uni-text",{staticClass:t._$g("192-"+r,"sc"),attrs:{_i:"192-"+r}},[t._v("\u2713")]):t._e()],1),i("v-uni-text",{staticClass:t._$g("193-"+r,"sc"),attrs:{_i:"193-"+r}},[t._v(t._$g("193-"+r,"t0-0"))])],1)})),1):t._e()],1),i("uni-view",{staticClass:t._$g(194,"sc"),attrs:{_i:194}},[i("uni-view",{staticClass:t._$g(195,"sc"),attrs:{_i:195},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(196,"sc"),attrs:{_i:196}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(197,"sc"),attrs:{_i:197},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(198,"sc"),attrs:{_i:198}},[t._v("\u786e\u5b9a")])],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(199,"sc"),class:t._$g(199,"c"),attrs:{_i:199}},[i("uni-view",{staticClass:t._$g(200,"sc"),attrs:{_i:200},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(201,"sc"),attrs:{_i:201}},[i("uni-view",{staticClass:t._$g(202,"sc"),attrs:{_i:202}},[i("v-uni-text",{staticClass:t._$g(203,"sc"),attrs:{_i:203}},[t._v("\u9009\u62e9\u6240\u5728\u5730")]),i("v-uni-text",{staticClass:t._$g(204,"sc"),attrs:{_i:204},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\xd7")])],1),i("uni-view",{staticClass:t._$g(205,"sc"),attrs:{_i:205}},[i("v-uni-picker-view",{staticClass:t._$g(206,"sc"),attrs:{"indicator-style":t._$g(206,"a-indicator-style"),value:t._$g(206,"a-value"),_i:206},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-picker-view-column",{attrs:{_i:207}},t._l(t._$g(208,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("208-"+r,"sc"),attrs:{_i:"208-"+r}},[t._v(" "+t._$g("208-"+r,"t0-0"))])})),1),i("v-uni-picker-view-column",{attrs:{_i:209}},t._l(t._$g(210,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("210-"+r,"sc"),attrs:{_i:"210-"+r}},[t._v(" "+t._$g("210-"+r,"t0-0"))])})),1),i("v-uni-picker-view-column",{attrs:{_i:211}},t._l(t._$g(212,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("212-"+r,"sc"),attrs:{_i:"212-"+r}},[t._v(" "+t._$g("212-"+r,"t0-0"))])})),1)],1)],1),i("uni-view",{staticClass:t._$g(213,"sc"),attrs:{_i:213}},[i("uni-view",{staticClass:t._$g(214,"sc"),attrs:{_i:214},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(215,"sc"),attrs:{_i:215}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(216,"sc"),attrs:{_i:216},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(217,"sc"),attrs:{_i:217}},[t._v("\u786e\u5b9a")])],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(218,"sc"),class:t._$g(218,"c"),attrs:{_i:218}},[i("uni-view",{staticClass:t._$g(219,"sc"),attrs:{_i:219},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(220,"sc"),attrs:{_i:220}},[i("uni-view",{staticClass:t._$g(221,"sc"),attrs:{_i:221}},[i("v-uni-text",{staticClass:t._$g(222,"sc"),attrs:{_i:222},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")]),i("v-uni-text",{staticClass:t._$g(223,"sc"),attrs:{_i:223}},[t._v("\u9009\u62e9\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(224,"sc"),attrs:{_i:224},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1),i("uni-view",{staticClass:t._$g(225,"sc"),attrs:{_i:225}},[i("uni-view",{staticClass:t._$g(226,"sc"),class:t._$g(226,"c"),attrs:{_i:226},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(227,"sc"),attrs:{_i:227}},[t._v(t._$g(227,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(228,"sc"),attrs:{_i:228}},[t._v("\u5f00\u59cb\u65f6\u95f4")])],1),i("v-uni-text",{staticClass:t._$g(229,"sc"),attrs:{_i:229}},[t._v("\u81f3")]),i("uni-view",{staticClass:t._$g(230,"sc"),class:t._$g(230,"c"),attrs:{_i:230},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(231,"sc"),attrs:{_i:231}},[t._v(t._$g(231,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(232,"sc"),attrs:{_i:232}},[t._v("\u7ed3\u675f\u65f6\u95f4")])],1)],1),i("uni-view",{staticClass:t._$g(233,"sc"),attrs:{_i:233}},[i("v-uni-picker-view",{staticClass:t._$g(234,"sc"),attrs:{value:t._$g(234,"a-value"),"indicator-style":t._$g(234,"a-indicator-style"),_i:234},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-picker-view-column",{attrs:{_i:235}},t._l(t._$g(236,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("236-"+r,"sc"),attrs:{_i:"236-"+r}},[t._v(" "+t._$g("236-"+r,"t0-0")+" ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:237}},t._l(t._$g(238,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("238-"+r,"sc"),attrs:{_i:"238-"+r}},[t._v(" "+t._$g("238-"+r,"t0-0")+" ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:239}},[i("uni-view",{staticClass:t._$g(240,"sc"),attrs:{_i:240}},[t._v(" - ")])],1),i("v-uni-picker-view-column",{attrs:{_i:241}},t._l(t._$g(242,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("242-"+r,"sc"),attrs:{_i:"242-"+r}},[t._v(" "+t._$g("242-"+r,"t0-0")+" ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:243}},t._l(t._$g(244,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("244-"+r,"sc"),attrs:{_i:"244-"+r}},[t._v(" "+t._$g("244-"+r,"t0-0")+" ")])})),1)],1)],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(245,"sc"),attrs:{_i:245}},[i("uni-view",{staticClass:t._$g(246,"sc"),attrs:{_i:246},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(247,"sc"),attrs:{_i:247}},[t._v("\u63d0\u4ea4")])],1)],1),i("uni-view",{staticClass:t._$g(248,"sc"),class:t._$g(248,"c"),attrs:{_i:248}},[i("uni-view",{staticClass:t._$g(249,"sc"),attrs:{_i:249}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u50a8\u5b58\u7a7a\u95f4/\u7167\u7247\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(250,"sc"),attrs:{_i:250}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u8bfb\u53d6\u76f8\u518c\u548c\u6587\u4ef6\u5185\u5bb9\u3002")])],1),i("uni-view",{staticClass:t._$g(251,"sc"),class:t._$g(251,"c"),attrs:{_i:251}},[i("uni-view",{staticClass:t._$g(252,"sc"),attrs:{_i:252}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u76f8\u673a\u62cd\u6444\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(253,"sc"),attrs:{_i:253}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u6240\u9700\u5185\u5bb9\u3002")])],1)],1)},r=[]},"8fa9":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("fd8b");e=a(!1);var s=n(r);e.push([t.i,'.mrrCanceltextarea[data-v-42822b3b]{background:#f4f5f7;border-radius:20rpx;padding:30rpx 0rpx 30rpx 30rpx;margin-bottom:30rpx;display:flex}.mrrCanceltextarea-title[data-v-42822b3b]{font-weight:400;font-size:28rpx;color:#adadad;line-height:40rpx;text-align:left;font-style:normal}.mrrCanceltextarea-text[data-v-42822b3b]{flex:1;font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.5;word-break:break-all}.canceltextarea[data-v-42822b3b]{height:125rpx;width:430rpx;padding:30rpx;background:#f4f5f7;border-radius:20rpx}.canceltextarea__textarea[data-v-42822b3b]{width:100%;height:100%}.canceltextarea .uni-textarea-placeholder[data-v-42822b3b]{font-weight:400;font-size:28rpx;color:#adadad;line-height:40rpx;text-align:left;font-style:normal}.service-page[data-v-42822b3b]{padding-bottom:30rpx}.search-box[data-v-42822b3b]{width:100%;background-color:#fff;border-radius:8rpx;box-sizing:border-box;position:relative}.flexed[data-v-42822b3b]{position:-webkit-sticky;position:sticky;top:88rpx;left:0;z-index:999}.search-inp[data-v-42822b3b]{width:100%;height:68rpx;background-color:#f4f5f7;border-radius:34rpx;padding:0 70rpx 0 82rpx;font-size:28rpx;box-sizing:border-box}.placeholder[data-v-42822b3b]{font-weight:400;font-size:28rpx;color:#ccc;line-height:34rpx;text-align:left;font-style:normal}.search-icon[data-v-42822b3b]{width:34rpx;height:34rpx;position:absolute;left:30rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tab-container[data-v-42822b3b]{display:flex;flex-flow:row nowrap;align-items:center;-webkit-column-gap:48rpx;column-gap:48rpx;background-color:#fff;padding:30rpx 0rpx 20rpx 30rpx;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-x:scroll}.tab-item[data-v-42822b3b]{text-align:center;font-size:30rpx;color:#666;padding:16rpx 0;white-space:nowrap;position:relative}.tab-item.active[data-v-42822b3b]{color:#000;font-weight:500}.tab-item.active[data-v-42822b3b]::after{content:"";position:absolute;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:32rpx;height:6rpx;background-color:#e8101e;border-radius:3rpx}.service-list[data-v-42822b3b]{margin:24rpx 24rpx 0}.service-list .service-list-item[data-v-42822b3b]{margin-bottom:20rpx}.load-more[data-v-42822b3b]{text-align:center;padding:20rpx 0;color:#999;font-size:24rpx}.service-item[data-v-42822b3b]{cursor:pointer;user-select:none;-webkit-user-select:none}.service-nothings[data-v-42822b3b]{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:280rpx 0 0}.nothings-text[data-v-42822b3b]{font-size:32rpx;font-weight:500;color:#999;text-align:center;font-style:italic}.add-btn[data-v-42822b3b]{height:140rpx}.service-image[data-v-42822b3b]{border:1rpx solid #eee}.flexed[data-v-42822b3b]{top:calc(var(--status-bar-height) + 88rpx)}.headerBox[data-v-42822b3b]{display:flex;align-items:center;gap:30rpx;background-color:#fff;padding:24rpx 30rpx 0rpx 30rpx}.headerBox .addBox[data-v-42822b3b]{flex-shrink:0;display:flex;flex-direction:column;gap:4rpx;align-items:center;padding-right:17rpx}.headerBox .addBox .addIcon[data-v-42822b3b]{width:46rpx;height:41rpx}.headerBox .addBox .addText[data-v-42822b3b]{color:#666;font-size:20rpx;position:relative}.headerBox .addBox .addText[data-v-42822b3b]::after{content:"";position:absolute;background-image:url('+s+");background-position:50%;background-repeat:no-repeat;background-size:cover;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);right:-17rpx;width:12rpx;height:8rpx}",""]),t.exports=e},"8fba":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}}),i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u8425\u4e1a\u6267\u7167")])],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u8d44\u8d28\u7167\u7247")]),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v("\u8bf7\u4fdd\u8bc1\u56fe\u7247\u4e0a\u7684\u6587\u5b57\u6e05\u6670\u3001\u65e0\u906e\u6321\u3001\u8bc1\u4ef6\u8fb9\u89d2\u53ef\u89c1")]),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._$g(11,"i")?i("v-uni-image",{staticClass:t._$g(11,"sc"),attrs:{src:t._$g(11,"a-src"),mode:"aspectFill",_i:11}}):i("v-uni-image",{staticClass:t._$g(12,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/92bd4268-b4d7-4725-8664-9e44f828c7d9",mode:"aspectFit",_i:12}})],1)],1),i("v-uni-text",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v("\u8bf7\u4e0a\u4f20\u8425\u4e1a\u6267\u7167\u539f\u4ef6")])],1)],1),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("v-uni-text",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._v("\u5546\u6237\u7c7b\u578b")])],1),i("v-uni-input",{staticClass:t._$g(17,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u5546\u6237\u7c7b\u578b","placeholder-class":"placeholder",_i:17},on:{input:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(17,"v-model"),callback:function(){},expression:"formData.uscc_type"}})],1),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v("\u8bc1\u4ef6\u53f7\u7801")]),i("v-uni-image",{staticClass:t._$g(21,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25bd7f38-1a3e-4282-84ea-190d7f820108",mode:"aspectFit",_i:21},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("v-uni-input",{staticClass:t._$g(22,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u8425\u4e1a\u6267\u7167\u7684\u8bc1\u4ef6\u53f7\u7801","placeholder-class":"placeholder",_i:22},on:{input:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(22,"v-model"),callback:function(){},expression:"formData.uscc_num"}})],1),i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("v-uni-text",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v("\u4f01\u4e1a\u540d\u79f0")]),i("v-uni-image",{staticClass:t._$g(26,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25bd7f38-1a3e-4282-84ea-190d7f820108",mode:"aspectFit",_i:26},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("v-uni-input",{staticClass:t._$g(27,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u8425\u4e1a\u6267\u7167\u7684\u4f01\u4e1a\u540d\u79f0","placeholder-class":"placeholder",_i:27},on:{input:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(27,"v-model"),callback:function(){},expression:"formData.uscc_name"}})],1)],1),i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}}),i("v-uni-text",{attrs:{_i:31}},[t._v("\u6cd5\u4eba\u4fe1\u606f")])],1),i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[i("v-uni-text",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[t._v("\u8eab\u4efd\u8bc1\u7167\u7247")]),i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[t._v("\u8bf7\u4fdd\u8bc1\u56fe\u7247\u4e0a\u7684\u6587\u5b57\u6e05\u6670\u3001\u65e0\u906e\u6321\u3001\u8bc1\u4ef6\u8fb9\u89d2\u53ef\u89c1")]),i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[i("uni-view",{staticClass:t._$g(39,"sc"),attrs:{_i:39},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[t._$g(41,"i")?i("v-uni-image",{staticClass:t._$g(41,"sc"),attrs:{src:t._$g(41,"a-src"),mode:"aspectFill",_i:41}}):i("v-uni-image",{staticClass:t._$g(42,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/043b0c97-79c1-4f95-810f-c33e3d5269a3",mode:"aspectFit",_i:42}})],1)],1),i("v-uni-text",{staticClass:t._$g(43,"sc"),attrs:{_i:43}},[t._v("\u8bf7\u4e0a\u4f20\u8eab\u4efd\u8bc1\u6b63\u9762\uff08\u4eba\u50cf\u9762\uff09")])],1),i("uni-view",{staticClass:t._$g(44,"sc"),attrs:{_i:44}},[i("uni-view",{staticClass:t._$g(45,"sc"),attrs:{_i:45},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[t._$g(47,"i")?i("v-uni-image",{staticClass:t._$g(47,"sc"),attrs:{src:t._$g(47,"a-src"),mode:"aspectFill",_i:47}}):i("v-uni-image",{staticClass:t._$g(48,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/203cfdf4-2501-44e6-8565-ad251c6bf0fa",mode:"aspectFit",_i:48}})],1)],1),i("v-uni-text",{staticClass:t._$g(49,"sc"),attrs:{_i:49}},[t._v("\u8bf7\u4e0a\u4f20\u8eab\u4efd\u8bc1\u53cd\u9762\uff08\u56fd\u5fbd\u9762\uff09")])],1)],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(50,"sc"),attrs:{_i:50}},[i("uni-view",{staticClass:t._$g(51,"sc"),attrs:{_i:51}},[i("v-uni-text",{staticClass:t._$g(52,"sc"),attrs:{_i:52}},[t._v("\u6cd5\u4eba\u4ee3\u8868")]),i("v-uni-image",{staticClass:t._$g(53,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25bd7f38-1a3e-4282-84ea-190d7f820108",mode:"aspectFit",_i:53},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("v-uni-input",{staticClass:t._$g(54,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u8425\u4e1a\u6267\u7167\u7684\u6cd5\u4eba\u4ee3\u8868","placeholder-class":"placeholder",_i:54},on:{input:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(54,"v-model"),callback:function(){},expression:"formData.legal_name"}})],1),i("uni-view",{staticClass:t._$g(55,"sc"),attrs:{_i:55}},[i("v-uni-text",{staticClass:t._$g(56,"sc"),attrs:{_i:56}},[t._v("\u6cd5\u4eba\u8054\u7cfb\u65b9\u5f0f")]),i("v-uni-input",{staticClass:t._$g(57,"sc"),attrs:{type:"number",placeholder:"\u8bf7\u8f93\u5165\u6cd5\u4eba\u7684\u8054\u7cfb\u65b9\u5f0f","placeholder-class":"placeholder",_i:57},on:{input:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(57,"v-model"),callback:function(){},expression:"formData.legal_phone"}})],1),i("uni-view",{staticClass:t._$g(58,"sc"),attrs:{_i:58}},[i("v-uni-text",{staticClass:t._$g(59,"sc"),attrs:{_i:59}},[t._v("\u6cd5\u4eba\u8eab\u4efd\u8bc1\u53f7")]),i("v-uni-input",{staticClass:t._$g(60,"sc"),attrs:{type:"idcard",placeholder:"\u8bf7\u8f93\u5165\u6cd5\u4eba\u8eab\u4efd\u8bc1\u53f7","placeholder-class":"placeholder",_i:60},on:{input:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(60,"v-model"),callback:function(){},expression:"formData.legal_idcard_num"}})],1),i("uni-view",{staticClass:t._$g(61,"sc"),attrs:{_i:61}},[i("v-uni-text",{staticClass:t._$g(62,"sc"),attrs:{_i:62}},[t._v("\u8eab\u4efd\u8bc1\u6709\u6548\u671f\u81f3")]),i("uni-view",{staticClass:t._$g(63,"sc"),attrs:{_i:63}},[i("uni-view",{staticClass:t._$g(64,"sc"),attrs:{_i:64},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(65,"sc"),class:t._$g(65,"c"),attrs:{_i:65}},[t._$g(66,"i")?i("v-uni-image",{staticClass:t._$g(66,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/cb185ec8-9d30-4e53-b5dc-14b546013a60",mode:"aspectFit",_i:66}}):t._e()],1),i("v-uni-text",{staticClass:t._$g(67,"sc"),attrs:{_i:67}},[t._v("\u957f\u4e45\u6709\u6548")])],1),i("uni-view",{staticClass:t._$g(68,"sc"),attrs:{_i:68},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(69,"sc"),class:t._$g(69,"c"),attrs:{_i:69}},[t._$g(70,"i")?i("v-uni-image",{staticClass:t._$g(70,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/cb185ec8-9d30-4e53-b5dc-14b546013a60",mode:"aspectFit",_i:70}}):t._e()],1),i("v-uni-text",{staticClass:t._$g(71,"sc"),attrs:{_i:71}},[t._v("\u6307\u5b9a\u65e5\u671f\u6709\u6548")])],1)],1)],1),i("uni-view",{staticClass:t._$g(72,"sc"),attrs:{_i:72}},[i("uni-view",{staticClass:t._$g(73,"sc"),attrs:{_i:73}},[i("uni-view",{staticClass:t._$g(74,"sc"),attrs:{_i:74}},[i("v-uni-text",{staticClass:t._$g(75,"sc"),attrs:{_i:75}},[t._v("\u5f00\u59cb\u65e5\u671f")]),i("uni-view",{staticClass:t._$g(76,"sc"),attrs:{_i:76},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{class:t._$g(77,"c"),attrs:{_i:77}},[t._v(" "+t._$g(77,"t0-0")+" ")]),i("uni-view",{staticClass:t._$g(78,"sc"),attrs:{_i:78}}),i("v-uni-image",{staticClass:t._$g(79,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ce52b49f-2261-49ca-96ed-e9ad47049649",mode:"aspectFit",_i:79}})],1)],1),i("uni-view",{staticClass:t._$g(80,"sc"),attrs:{_i:80}},[i("v-uni-text",{staticClass:t._$g(81,"sc"),attrs:{_i:81}},[t._v("\u7ed3\u675f\u65e5\u671f")]),i("uni-view",{staticClass:t._$g(82,"sc"),class:t._$g(82,"c"),attrs:{_i:82},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{class:t._$g(83,"c"),attrs:{_i:83}},[t._v(" "+t._$g(83,"t0-0")+" ")]),i("uni-view",{staticClass:t._$g(84,"sc"),attrs:{_i:84}}),i("v-uni-image",{staticClass:t._$g(85,"sc"),attrs:{src:t._$g(85,"a-src"),mode:"aspectFit",_i:85}})],1)],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(86,"sc"),class:t._$g(86,"c"),attrs:{_i:86}},[i("uni-view",{staticClass:t._$g(87,"sc"),attrs:{_i:87},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(88,"sc"),attrs:{_i:88}},[i("uni-view",{staticClass:t._$g(89,"sc"),attrs:{_i:89}},[i("v-uni-text",{staticClass:t._$g(90,"sc"),attrs:{_i:90},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")]),i("v-uni-text",{staticClass:t._$g(91,"sc"),attrs:{_i:91}},[t._v("\u9009\u62e9\u65e5\u671f")]),i("v-uni-text",{staticClass:t._$g(92,"sc"),attrs:{_i:92},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1),i("uni-view",{staticClass:t._$g(93,"sc"),attrs:{_i:93}},[i("v-uni-picker-view",{staticClass:t._$g(94,"sc"),attrs:{value:t._$g(94,"a-value"),"indicator-style":t._$g(94,"a-indicator-style"),mode:"date",fields:"day",_i:94},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-picker-view-column",{attrs:{_i:95}},t._l(t._$g(96,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("96-"+r,"sc"),attrs:{_i:"96-"+r}},[t._v(t._$g("96-"+r,"t0-0")+"\u5e74")])})),1),i("v-uni-picker-view-column",{attrs:{_i:97}},t._l(t._$g(98,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("98-"+r,"sc"),attrs:{_i:"98-"+r}},[t._v(t._$g("98-"+r,"t0-0")+"\u6708")])})),1),i("v-uni-picker-view-column",{attrs:{_i:99}},t._l(t._$g(100,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("100-"+r,"sc"),attrs:{_i:"100-"+r}},[t._v(t._$g("100-"+r,"t0-0")+"\u65e5")])})),1)],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(101,"sc"),class:t._$g(101,"c"),attrs:{_i:101}},[i("uni-view",{staticClass:t._$g(102,"sc"),attrs:{_i:102},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(103,"sc"),attrs:{_i:103}},[i("v-uni-image",{staticClass:t._$g(104,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ab410a5d-5819-47f2-a0fc-3fd6b90d6770",mode:"aspectFit",_i:104}}),i("uni-view",{staticClass:t._$g(105,"sc"),attrs:{_i:105}},[i("uni-view",{staticClass:t._$g(106,"sc"),attrs:{_i:106}},[t._v(t._$g(106,"t0-0"))]),i("uni-view",{staticClass:t._$g(107,"sc"),attrs:{_i:107}},[i("v-uni-image",{staticClass:t._$g(108,"sc"),attrs:{src:t._$g(108,"a-src"),mode:"widthFix",_i:108}})],1),i("uni-view",{staticClass:t._$g(109,"sc"),attrs:{_i:109}},[i("uni-view",{staticClass:t._$g(110,"sc"),attrs:{_i:110},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(111,"sc"),attrs:{_i:111}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(112,"sc"),attrs:{_i:112},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(113,"sc"),attrs:{_i:113}},[t._v("\u6211\u5df2\u4e86\u89e3")])],1)],1)],1)],1)],1)],1)},n=[]},"8fbd":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-link",data:function(){return{wxsProps:{}}},components:{}}},"8ff8":function(t,e,i){"use strict";var a=i("1765"),n=i.n(a);n.a},9020:function(t,e,i){"use strict";var a=i("276a"),n=i.n(a);n.a},"90e2":function(t,e,i){"use strict";i.r(e);var a=i("7519"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"90f8":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".custom-tabbar[data-v-f300d142]{box-sizing:border-box;position:fixed;bottom:0;left:0;width:100%;z-index:100;display:flex;justify-content:space-between;padding:0 120rpx;align-items:center;background:#fff;box-shadow:0 -8rpx 24rpx 0 rgba(81,118,171,.2)}.tab-item[data-v-f300d142]{display:flex;flex-direction:column;align-items:center;padding:20rpx 0}.tab-icon[data-v-f300d142]{width:48rpx;height:48rpx}.tab-text[data-v-f300d142]{font-size:24rpx;margin-top:4rpx;color:#999}.tab-text.active[data-v-f300d142]{color:#e8101e}.tab-badge[data-v-f300d142]{position:absolute;top:16rpx;right:20rpx;padding:4rpx 12rpx;font-size:20rpx;color:#fff;border-radius:20rpx;min-width:32rpx;text-align:center}",""]),t.exports=e},9112:function(t,e,i){"use strict";i.r(e);var a=i("6c09"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},9134:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),style:t._$g(2,"s"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}}),i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u670d\u52a1\u533a\u57df")])],1),t._$g(7,"i")?i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v(t._$g(9,"t0-0"))])],1)],1):i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g(12,"i")?i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v("\u8bf7\u9009\u62e9\u670d\u52a1\u533a\u57df")]):t._e(),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("v-uni-text",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v(t._$g(14,"t0-0"))]),t._$g(15,"i")?i("v-uni-image",{staticClass:t._$g(15,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dccc4513-377c-4bfa-9fd2-a5cfdb9798f3",mode:"aspectFit",_i:15}}):t._e()],1)],1),t._$g(16,"i")?i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v("* \u53ef\u4ee5\u66f4\u6362\u533a\u57df\uff0c\u4f46\u4e0d\u80fd\u8de8\u57ce\u5e02")])],1):t._e()],1)],1)],1),i("uni-view",{staticClass:t._$g(18,"sc"),class:t._$g(18,"c"),attrs:{_i:18}},[i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("v-uni-text",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v("\u9009\u62e9\u670d\u52a1\u533a\u57df")]),i("v-uni-text",{staticClass:t._$g(23,"sc"),attrs:{_i:23},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\xd7")])],1),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},t._l(t._$g(25,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("25-"+r,"sc"),class:t._$g("25-"+r,"c"),attrs:{_i:"25-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("25-"+r,"t0-0")+" ")])})),1),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[t._$g(27,"i")?i("v-uni-scroll-view",{staticClass:t._$g(27,"sc"),attrs:{"scroll-y":!0,_i:27}},t._l(t._$g(28,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("28-"+r,"sc"),attrs:{_i:"28-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{attrs:{_i:"29-"+r}},[t._v(t._$g("29-"+r,"t0-0"))]),i("v-uni-image",{staticClass:t._$g("30-"+r,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dccc4513-377c-4bfa-9fd2-a5cfdb9798f3",mode:"aspectFit",_i:"30-"+r}})],1)})),1):t._e(),t._$g(31,"i")?i("v-uni-scroll-view",{staticClass:t._$g(31,"sc"),attrs:{"scroll-y":!0,_i:31}},t._l(t._$g(32,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("32-"+r,"sc"),attrs:{_i:"32-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{attrs:{_i:"33-"+r}},[t._v(t._$g("33-"+r,"t0-0"))]),i("v-uni-image",{staticClass:t._$g("34-"+r,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dccc4513-377c-4bfa-9fd2-a5cfdb9798f3",mode:"aspectFit",_i:"34-"+r}})],1)})),1):t._e(),t._$g(35,"i")?i("v-uni-scroll-view",{staticClass:t._$g(35,"sc"),attrs:{"scroll-y":!0,_i:35}},t._l(t._$g(36,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("36-"+r,"sc"),attrs:{_i:"36-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("37-"+r,"sc"),class:t._$g("37-"+r,"c"),attrs:{_i:"37-"+r}},[t._$g("38-"+r,"i")?i("v-uni-image",{staticClass:t._$g("38-"+r,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/66325904-4603-48fd-b03b-90c684af96e9",mode:"aspectFit",_i:"38-"+r}}):t._e()],1),i("v-uni-text",{staticClass:t._$g("39-"+r,"sc"),attrs:{_i:"39-"+r}},[t._v(t._$g("39-"+r,"t0-0"))])],1)})),1):t._e()],1),i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(43,"sc"),attrs:{_i:43},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(44,"sc"),attrs:{_i:44}},[t._v("\u786e\u5b9a")])],1)],1)],1)],1),i("uni-view",{ref:"buttonArea",staticClass:t._$g(45,"sc"),attrs:{_i:45}},[t._$g(46,"i")?i("uni-view",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[i("uni-view",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[t._v("\u60a8\u7684\u63d0\u4ea4\u5df2\u9a73\u56de")]),i("uni-view",{staticClass:t._$g(48,"sc"),attrs:{_i:48}},[t._v("\u9a73\u56de\u539f\u56e0\uff1a"+t._$g(48,"t0-0"))])],1):t._e(),t._$g(49,"i")?i("uni-view",{staticClass:t._$g(49,"sc"),attrs:{_i:49}},[i("v-uni-text",{staticClass:t._$g(50,"sc"),attrs:{_i:50}},[t._v("\u60a8\u7684\u63d0\u4ea4\u53d8\u66f4\u6b63\u5728\u5ba1\u6838\u4e2d...")])],1):t._e(),t._$g(51,"i")?i("uni-view",{staticClass:t._$g(51,"sc"),attrs:{_i:51},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(52,"sc"),attrs:{_i:52}},[t._v("\u53bb\u53d8\u66f4\u4fe1\u606f")])],1):t._e(),t._$g(53,"i")?i("uni-view",{staticClass:t._$g(53,"sc"),attrs:{_i:53}},[i("uni-view",{staticClass:t._$g(54,"sc"),attrs:{_i:54},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(55,"sc"),attrs:{_i:55}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(56,"sc"),attrs:{_i:56},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(57,"sc"),attrs:{_i:57}},[t._v("\u63d0\u4ea4")])],1)],1):t._e(),t._$g(58,"i")?i("uni-view",{staticClass:t._$g(58,"sc"),attrs:{_i:58},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(59,"sc"),attrs:{_i:59}},[t._v(t._$g(59,"t0-0"))])],1):t._e()],1)],1)},r=[]},9144:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},9148:function(t,e,i){"use strict";i.r(e);var a=i("37af"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"915c":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-tabbar",data:function(){return{wxsProps:{}}},components:{}}},"916c":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uniTransition",props:["show","modeClass","duration","styles","customClass","onceRender"],data:function(){return{wxsProps:{}}},components:{}}},"917d":function(t,e,i){"use strict";i.r(e);var a=i("1593"),n=i("69c5");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("815b");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"0b54b7a3",null,!1,a["a"],void 0);e["default"]=o.exports},9191:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.watermark[data-v-77a82b90]{position:absolute;width:100%;height:100%;top:0;left:0;bottom:0;right:0;pointer-events:none;z-index:9999999;display:flex;flex-wrap:wrap;overflow:hidden}.watermark .watermark-text[data-v-77a82b90]{width:160rpx;height:160rpx;display:flex;justify-content:center;align-items:center;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff;font-size:32upx;white-space:nowrap}.watermark .watermark-img[data-v-77a82b90]{width:375upx;height:375upx;z-index:1}',""]),t.exports=e},9195:function(t,e,i){"use strict";i.r(e);var a=i("13f7"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"91ac":function(t,e,i){"use strict";var a=i("ebf7"),n=i.n(a);n.a},"91d6":function(t,e,i){var a=i("a93c");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("5e824bd9",a,!0,{sourceMap:!1,shadowMode:!1})},9212:function(t,e,i){var a=i("1656");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("30d049d7",a,!0,{sourceMap:!1,shadowMode:!1})},9219:function(t,e,i){var a=i("8b10");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("7b527974",a,!0,{sourceMap:!1,shadowMode:!1})},9237:function(t,e,i){"use strict";var a=i("1375"),n=i.n(a);n.a},9285:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-text",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._v(t._$g(3,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v(t._$g(6,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("v-uni-text",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(t._$g(8,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v(t._$g(10,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},t._l(t._$g(12,"f"),(function(e,a,n,r){return i("v-uni-image",{key:e,staticClass:t._$g("12-"+r,"sc"),attrs:{src:t._$g("12-"+r,"a-src"),mode:"aspectFill",_i:"12-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}})})),1),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("v-uni-text",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v("\u8054\u7cfb\u4eba")]),i("v-uni-text",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._v(t._$g(16,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\u8054\u7cfb\u65b9\u5f0f")]),i("v-uni-text",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v(t._$g(19,"t0-0"))])],1)],1),t._$g(20,"i")?i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("uni-view",{attrs:{_i:21}},[i("v-uni-text",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v(t._$g(22,"t0-0"))])],1),i("uni-view",{attrs:{_i:23}},[i("v-uni-text",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[t._v("\u5904\u7406\u7ed3\u679c\uff1a"+t._$g(24,"t0-0"))])],1)],1):t._e()],1),i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._$g(26,"i")?i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v("\u8054\u7cfb\u5ba2\u670d")])],1):t._e(),t._$g(28,"i")?i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v("\u64a4\u9500\u6295\u8bc9")])],1):t._e(),t._$g(30,"i")?i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[t._v("\u518d\u6b21\u53d1\u8d77")])],1):t._e()],1)],1)},r=[]},9293:function(t,e,i){"use strict";i.r(e);var a=i("9a72"),n=i("539f");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("f8c5");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"92a0":function(t,e,i){"use strict";i.r(e);var a=i("ec24"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"92a3":function(t,e,i){"use strict";var a=i("b1a2"),n=i.n(a);n.a},"92a9":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},t._l(t._$g(1,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("1-"+r,"sc"),style:t._$g("1-"+r,"s"),attrs:{_i:"1-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g("2-"+r,"i")?i("v-uni-image",{staticClass:t._$g("2-"+r,"sc"),style:t._$g("2-"+r,"s"),attrs:{src:t._$g("2-"+r,"a-src"),mode:"aspectFill","lazy-load":!0,_i:"2-"+r}}):t._e(),i("v-uni-text",{staticClass:t._$g("3-"+r,"sc"),attrs:{_i:"3-"+r}},[t._v(t._$g("3-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("4-"+r,"sc"),attrs:{_i:"4-"+r}},[i("uni-view",{staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r}},[t._$g("6-"+r,"i")?i("v-uni-image",{staticClass:t._$g("6-"+r,"sc"),attrs:{mode:"widthFix",src:"/static/images/shop/pintuan/group.png",_i:"6-"+r}}):t._e(),i("v-uni-text",{staticClass:t._$g("7-"+r,"sc"),attrs:{_i:"7-"+r}},[t._v(" "+t._$g("7-"+r,"t0-0")+" ")])],1),i("uni-view",{staticClass:t._$g("8-"+r,"sc"),attrs:{_i:"8-"+r}},[t._$g("9-"+r,"i")?i("uni-view",{staticClass:t._$g("9-"+r,"sc"),attrs:{_i:"9-"+r}},[i("v-uni-text",{staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r}},[t._v("\u62fc\u56e2\u4ef7\uff1a\xa5")]),i("v-uni-text",{staticClass:t._$g("11-"+r,"sc"),style:t._$g("11-"+r,"s"),attrs:{_i:"11-"+r}},[t._v(t._$g("11-"+r,"t0-0"))])],1):i("uni-view",{staticClass:t._$g("12-"+r,"sc"),attrs:{_i:"12-"+r}},[i("v-uni-text",{staticClass:t._$g("13-"+r,"sc"),attrs:{_i:"13-"+r}},[t._v("\xa5")]),i("v-uni-text",{staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[t._v(t._$g("14-"+r,"t0-0"))])],1),i("v-uni-text",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r}},[t._v("\u9500\u91cf"+t._$g("15-"+r,"t0-0"))])],1),t._$g("16-"+r,"i")?i("uni-view",{staticClass:t._$g("16-"+r,"sc"),attrs:{_i:"16-"+r}},[i("v-uni-text",{staticClass:t._$g("17-"+r,"sc"),attrs:{_i:"17-"+r}},[t._v(t._$g("17-"+r,"t0-0"))])],1):t._e()],1)],1)})),1)},n=[]},9310:function(t,e,i){"use strict";i.r(e);var a=i("c6c9"),n=i("29cb");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("9020");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"933f":function(t,e,i){"use strict";i.r(e);var a=i("2c47"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"934e":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("1ef6"),s=i("0e23");e=a(!1);var o=n(r),c=n(s);e.push([t.i,'body{background-color:#fafafa;padding-bottom:40rpx}.artisan-page{position:relative;padding-bottom:110rpx}.artisan-page::before{content:"";position:fixed;top:0;left:0;right:0;height:580rpx!important;background-image:url('+o+');background-size:cover;background-position:top;background-repeat:no-repeat;z-index:1}.bg{position:relative}.bg::before{content:"";position:fixed;top:0;left:0;right:0;height:272rpx!important;height:calc(272rpx + var(--status-bar-height))!important;background-image:url('+o+");background-size:cover;background-position:top;background-repeat:no-repeat;z-index:999}.profile-section,\n.switch-section,\n.order-class,\n.order-list,\n.nothings-box{position:relative;z-index:99}.profile-section{position:fixed;top:88rpx;left:0;right:0;height:184rpx;z-index:999;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;padding:0 24rpx}.profile-info{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center}.avatar{width:96rpx;height:96rpx;border-radius:50rpx;margin-right:24rpx;background-color:#333;border:4rpx solid #fff}.name{font-size:36rpx;font-weight:500;color:#000}.welcome{margin-top:8rpx;font-size:22rpx;color:#999}.center-text{font-weight:500;font-size:28rpx;color:#666;line-height:32rpx;text-align:right;font-style:normal}.switch-section{margin:184rpx 24rpx 32rpx;height:82rpx;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;font-size:28rpx;border-radius:14rpx;padding:0 32rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5);background-image:url("+c+");background-size:cover;background-repeat:no-repeat;background-position:50%}.switch-box{height:52rpx;line-height:52rpx;border-radius:26rpx;background-color:#e8101e;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:0 6rpx}.switch-text{font-size:24rpx;padding:0 12rpx;color:#fff}.switch-yuan{width:40rpx;height:40rpx;border-radius:20rpx;background-color:#fff}.switch-box.disswitch{background-color:rgba(0,0,0,.1)}.switch-box.disswitch .switch-yuan{margin-left:0}.switch-tip{font-weight:400;font-size:28rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal}.order-class{width:750rpx;overflow:hidden;padding-bottom:20rpx;margin:36rpx 0 0;border-radius:28rpx 28rpx 28rpx 28rpx;background-color:#fff}.order-class .order-types{margin:0 30rpx;height:49px;display:flex;justify-content:flex-start;border-bottom:1px solid rgba(255,225,225,.2);align-items:center;flex-wrap:nowrap;-webkit-column-gap:58rpx;column-gap:58rpx;border-bottom:3rpx solid #f6f5f5}.order-class .order-types .order-type-item{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;margin-top:0;transition:all .3s ease}.order-class .order-types .order-type-item .type-name{font-weight:500;font-size:32rpx;color:#666;white-space:nowrap;line-height:45rpx;font-style:normal}.order-class .order-types .order-type-item.active{position:relative;background-color:#fff}.order-class .order-types .order-type-item.active .type-name{color:#333}.active-line{width:70rpx;height:6rpx;border-radius:4rpx;background-color:#e8101e;position:absolute;bottom:-10rpx;z-index:99}.order-state{width:726rpx;display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;margin-top:24rpx;padding:0 24rpx;gap:16rpx}uni-scroll-view .uni-scroll-view-content{display:flex!important;flex-flow:row nowrap!important;justify-content:flex-start!important;align-items:center!important}.order-state-item{width:218rpx;height:72rpx;background:#f2f2f2;border-radius:20rpx;margin-right:28rpx;display:flex;align-items:center;justify-content:center}.state-name{margin:12rpx 0}.state-name,\n.state-count,\n.state-date{font-weight:400;font-size:28rpx;line-height:40rpx;text-align:left;font-style:normal}.order-state-item.active{background:linear-gradient(43deg,#f52540,#e8101e)}.order-state-item.active .state-name,\n.order-state-item.active .state-count,\n.order-state-item.active .state-date{color:#fff;font-weight:500}.order-list{background-color:#fafafa;border-radius:28rpx 28rpx 0 0;padding-top:24rpx;margin-top:-40rpx;padding-bottom:80rpx}.order-item{background-color:#fff;border-radius:16rpx;padding:32rpx;margin:0 24rpx 24rpx;box-shadow:0 8rpx 16rpx 0 rgba(210,213,224,.5)}.order-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8rpx}.service-name{font-size:28rpx;color:#333;font-weight:500;flex:1}.order-info{margin-bottom:32rpx;display:flex;flex-flow:column nowrap;justify-content:center;align-items:flex-start}.address,\n.service-time,\n.order-number{flex:1;font-size:24rpx;color:#666}.order-footer{display:flex;justify-content:space-between;align-items:center}.order-actions{padding-top:32rpx;border-top:1rpx solid rgba(0,0,0,.05);display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center;gap:24rpx}.action-btn{padding:8rpx 12rpx;display:flex;justify-content:center;align-items:center;border-radius:6rpx}.action-btn.cancel,\n.action-btn.confirm{border:1rpx solid rgba(51,51,51,.12);box-sizing:border-box}.action-btn.cancel .action-text,\n.action-btn.confirm .action-text{font-size:28rpx;color:#333;font-weight:400}.action-btn.verify{border:1rpx solid rgba(252,67,124,.12);box-sizing:border-box}.action-btn.verify .action-text{font-size:28rpx;color:#e8101e}.nothings-box{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:280rpx 0 0}.nothings-text{font-size:32rpx;font-weight:500;color:#999;text-align:center;font-style:italic}.nav-bar{padding-top:0}.profile-section{top:calc(var(--status-bar-height) + 88) rpx}.center-btn{display:flex;align-items:center}.center-btn .center_icon{width:12rpx;height:24rpx;margin-left:16rpx}",""]),t.exports=e},9365:function(t,e,i){"use strict";i.r(e);var a=i("1a2f"),n=i("2028");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("af82");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"75d93d00",null,!1,a["a"],void 0);e["default"]=o.exports},"937c":function(t,e,i){"use strict";i.r(e);var a=i("7fc8"),n=i("6e01");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("1578");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"93a6":function(t,e,i){"use strict";i.r(e);var a=i("fdc6"),n=i("fc86");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("88f8");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"21a7da1f",null,!1,a["a"],void 0);e["default"]=o.exports},"93c2":function(t,e,i){"use strict";i.r(e);var a=i("7d5e"),n=i("cc26");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("332b");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"2f04fed8",null,!1,a["a"],void 0);e["default"]=o.exports},"945d":function(t,e,i){var a=i("cb37");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("6a02deda",a,!0,{sourceMap:!1,shadowMode:!1})},9462:function(t,e,i){"use strict";i.r(e);var a=i("46ea"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"947a":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),class:t._$g(1,"c"),attrs:{_i:1},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g(1,"t0-0")+" ")]),i("uni-view",{staticClass:t._$g(2,"sc"),class:t._$g(2,"c"),attrs:{_i:2},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g(2,"t0-0")+" ")]),i("timeDatePicker",{ref:"timePopup",attrs:{_i:3},on:{confirmTime:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(3,"v-model"),callback:function(){},expression:"timeValue"}})],1)},n=[]},9486:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),t._$g(2,"i")?i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-text",{attrs:{_i:3}},[t._v("\u8bf7\u53d8\u66f4\u60a8\u9700\u8981\u53d8\u66f4\u7684\u4fe1\u606f")])],1):t._e(),i("uni-view",{staticClass:t._$g(4,"sc"),style:t._$g(4,"s"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}}),i("v-uni-text",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v("\u6240\u5c5e\u95e8\u5e97")])],1),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u95e8\u5e97\u8d44\u8d28\u7167\u7247")]),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v("\u8bf7\u4fdd\u8bc1\u7167\u7247\u4e0a\u7684\u6587\u5b57\u6e05\u6670\u3001\u65e0\u906e\u6321\u3001\u8bc1\u4ef6\u8fb9\u89d2\u53ef\u89c1\u3002")]),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._$g(17,"i")?i("v-uni-image",{staticClass:t._$g(17,"sc"),attrs:{src:t._$g(17,"a-src"),mode:"aspectFill",_i:17}}):i("v-uni-image",{staticClass:t._$g(18,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/92bd4268-b4d7-4725-8664-9e44f828c7d9",mode:"aspectFit",_i:18}})],1)],1),i("v-uni-text",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v("\u8bf7\u4e0a\u4f20\u8425\u4e1a\u6267\u7167\u539f\u4ef6")])],1),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._$g(23,"i")?i("v-uni-image",{staticClass:t._$g(23,"sc"),attrs:{src:t._$g(23,"a-src"),mode:"aspectFill",_i:23}}):i("v-uni-image",{staticClass:t._$g(24,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/60cdf929-bf63-4d56-a05d-467ae9903060",mode:"aspectFit",_i:24}})],1)],1),i("v-uni-text",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v("\u8bf7\u4e0a\u4f20\u95e8\u5934\u7167")])],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[i("v-uni-text",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[t._v("\u95e8\u5e97\u7c7b\u578b")])],1),i("v-uni-input",{staticClass:t._$g(29,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u95e8\u5e97\u7c7b\u578b",disabled:t._$g(29,"a-disabled"),"placeholder-class":"placeholder",_i:29},model:{value:t._$g(29,"v-model"),callback:function(e){t.$handleVModelEvent(29,e)},expression:"displayData.uscc_type"}})],1)],1),i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[i("v-uni-text",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[t._v("\u8bc1\u4ef6\u53f7\u7801")]),i("v-uni-image",{staticClass:t._$g(34,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25bd7f38-1a3e-4282-84ea-190d7f820108",mode:"aspectFit",_i:34},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("v-uni-input",{staticClass:t._$g(35,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u8425\u4e1a\u6267\u7167\u7684\u8bc1\u4ef6\u53f7\u7801",disabled:t._$g(35,"a-disabled"),"placeholder-class":"placeholder",_i:35},model:{value:t._$g(35,"v-model"),callback:function(e){t.$handleVModelEvent(35,e)},expression:"displayData.uscc_num"}})],1),i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[i("v-uni-text",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[t._v("\u4f01\u4e1a\u540d\u79f0")]),i("v-uni-image",{staticClass:t._$g(39,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25bd7f38-1a3e-4282-84ea-190d7f820108",mode:"aspectFit",_i:39},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("v-uni-input",{staticClass:t._$g(40,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u8425\u4e1a\u6267\u7167\u7684\u4f01\u4e1a\u540d\u79f0",disabled:t._$g(40,"a-disabled"),"placeholder-class":"placeholder",_i:40},model:{value:t._$g(40,"v-model"),callback:function(e){t.$handleVModelEvent(40,e)},expression:"displayData.uscc_name"}})],1),i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[i("uni-view",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[i("v-uni-text",{staticClass:t._$g(43,"sc"),attrs:{_i:43}},[t._v("\u5e97\u94fa\u540d\u79f0")]),i("v-uni-image",{staticClass:t._$g(44,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/25bd7f38-1a3e-4282-84ea-190d7f820108",mode:"aspectFit",_i:44},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("v-uni-input",{staticClass:t._$g(45,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u8425\u4e1a\u6267\u7167\u7684\u5e97\u94fa\u540d\u79f0",disabled:t._$g(45,"a-disabled"),"placeholder-class":"placeholder",_i:45},model:{value:t._$g(45,"v-model"),callback:function(e){t.$handleVModelEvent(45,e)},expression:"displayData.for_shop"}})],1)],1),i("uni-view",{staticClass:t._$g(46,"sc"),attrs:{_i:46}})],1),i("uni-view",{ref:"buttonArea",staticClass:t._$g(47,"sc"),attrs:{_i:47}},[t._$g(48,"i")?i("uni-view",{staticClass:t._$g(48,"sc"),attrs:{_i:48}},[i("uni-view",{staticClass:t._$g(49,"sc"),attrs:{_i:49}},[t._v("\u60a8\u7684\u63d0\u4ea4\u5df2\u9a73\u56de")]),i("uni-view",{staticClass:t._$g(50,"sc"),attrs:{_i:50}},[t._v("\u9a73\u56de\u539f\u56e0\uff1a"+t._$g(50,"t0-0"))])],1):t._e(),t._$g(51,"i")?i("uni-view",{staticClass:t._$g(51,"sc"),attrs:{_i:51}},[i("v-uni-text",{staticClass:t._$g(52,"sc"),attrs:{_i:52}},[t._v("\u60a8\u7684\u63d0\u4ea4\u53d8\u66f4\u6b63\u5728\u5ba1\u6838\u4e2d...")])],1):t._e(),t._$g(53,"i")?i("uni-view",{staticClass:t._$g(53,"sc"),attrs:{_i:53},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(54,"sc"),attrs:{_i:54}},[t._v("\u53d8\u66f4\u4fe1\u606f")])],1):t._e(),t._$g(55,"i")?i("uni-view",{staticClass:t._$g(55,"sc"),attrs:{_i:55}},[i("uni-view",{staticClass:t._$g(56,"sc"),attrs:{_i:56},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(57,"sc"),attrs:{_i:57}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(58,"sc"),attrs:{_i:58},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(59,"sc"),attrs:{_i:59}},[t._v("\u63d0\u4ea4")])],1)],1):t._e(),t._$g(60,"i")?i("uni-view",{staticClass:t._$g(60,"sc"),attrs:{_i:60},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(61,"sc"),attrs:{_i:61}},[t._v(t._$g(61,"t0-0"))])],1):t._e(),t._$g(62,"i")?i("uni-view",{staticClass:t._$g(62,"sc"),attrs:{_i:62},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(63,"sc"),attrs:{_i:63}},[t._v("\u91cd\u65b0\u63d0\u4ea4")])],1):t._e()],1),i("uni-view",{staticClass:t._$g(64,"sc"),class:t._$g(64,"c"),attrs:{_i:64}},[i("uni-view",{staticClass:t._$g(65,"sc"),attrs:{_i:65},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(66,"sc"),attrs:{_i:66}},[i("uni-view",{staticClass:t._$g(67,"sc"),attrs:{_i:67}},[i("v-uni-text",{staticClass:t._$g(68,"sc"),attrs:{_i:68},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")]),i("v-uni-text",{staticClass:t._$g(69,"sc"),attrs:{_i:69}},[t._v("\u9009\u62e9\u65e5\u671f")]),i("v-uni-text",{staticClass:t._$g(70,"sc"),attrs:{_i:70},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1),i("uni-view",{staticClass:t._$g(71,"sc"),attrs:{_i:71}},[i("v-uni-picker-view",{staticClass:t._$g(72,"sc"),attrs:{value:t._$g(72,"a-value"),"indicator-style":t._$g(72,"a-indicator-style"),mode:"date",fields:"day",_i:72},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-picker-view-column",{attrs:{_i:73}},t._l(t._$g(74,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("74-"+r,"sc"),attrs:{_i:"74-"+r}},[t._v(t._$g("74-"+r,"t0-0")+"\u5e74")])})),1),i("v-uni-picker-view-column",{attrs:{_i:75}},t._l(t._$g(76,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("76-"+r,"sc"),attrs:{_i:"76-"+r}},[t._v(t._$g("76-"+r,"t0-0")+"\u6708")])})),1),i("v-uni-picker-view-column",{attrs:{_i:77}},t._l(t._$g(78,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("78-"+r,"sc"),attrs:{_i:"78-"+r}},[t._v(t._$g("78-"+r,"t0-0")+"\u65e5")])})),1)],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(79,"sc"),class:t._$g(79,"c"),attrs:{_i:79}},[i("uni-view",{staticClass:t._$g(80,"sc"),attrs:{_i:80},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(81,"sc"),attrs:{_i:81}},[i("v-uni-image",{staticClass:t._$g(82,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ab410a5d-5819-47f2-a0fc-3fd6b90d6770",mode:"aspectFit",_i:82}}),i("uni-view",{staticClass:t._$g(83,"sc"),attrs:{_i:83}},[i("uni-view",{staticClass:t._$g(84,"sc"),attrs:{_i:84}},[t._v(t._$g(84,"t0-0"))]),i("uni-view",{staticClass:t._$g(85,"sc"),attrs:{_i:85}},[i("v-uni-image",{staticClass:t._$g(86,"sc"),class:t._$g(86,"c"),attrs:{src:t._$g(86,"a-src"),mode:"widthFix",_i:86}})],1),i("uni-view",{staticClass:t._$g(87,"sc"),attrs:{_i:87}},[i("uni-view",{staticClass:t._$g(88,"sc"),attrs:{_i:88},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(89,"sc"),attrs:{_i:89}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(90,"sc"),attrs:{_i:90},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(91,"sc"),attrs:{_i:91}},[t._v("\u6211\u5df2\u4e86\u89e3")])],1)],1)],1)],1)],1)],1)},r=[]},9487:function(t,e,i){"use strict";i.r(e);var a=i("8f21"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},9499:function(t,e,i){"use strict";i.r(e);var a=i("5f19"),n=i("933f");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("6f49");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"734c0110",null,!1,a["a"],void 0);e["default"]=o.exports},"949a":function(t,e,i){"use strict";i.r(e);var a=i("4288"),n=i("64b7");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("1591");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"94b3":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._v("\u95e8\u5e97\u4fe1\u606f")]),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u8425\u4e1a\u65f6\u95f4 "),i("v-uni-text",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v(t._$g(7,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u7ecf\u8425\u7c7b\u76ee")]),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},t._l(t._$g(11,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("11-"+r,"sc"),attrs:{_i:"11-"+r}},[t._v(" "+t._$g("11-"+r,"t0-0")+" ")])})),1)],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v("\u5546\u5bb6\u5730\u5740")]),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v(" "+t._$g(15,"t0-0")+" ")]),i("v-uni-image",{staticClass:t._$g(16,"sc"),attrs:{src:"/static/images/shop/address.png",_i:16},on:{click:function(e){return t.$handleViewEvent(e)}}})],1)],1),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\u5546\u5bb6\u7535\u8bdd")]),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v(" "+t._$g(20,"t0-0")+" ")]),i("v-uni-image",{staticClass:t._$g(21,"sc"),attrs:{src:"/static/images/shop/phone.png",_i:21},on:{click:function(e){return t.$handleViewEvent(e)}}})],1)],1)],1),i("uni-view",{staticClass:t._$g(22,"sc"),staticStyle:{padding:"20rpx 0"},attrs:{_i:22}},[t._v("\u8425\u4e1a\u6267\u7167")]),i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[i("v-uni-image",{staticClass:t._$g(24,"sc"),attrs:{mode:"widthFix",src:t._$g(24,"a-src"),_i:24}}),i("wmWatermark",{attrs:{_i:25}})],1)],1)],1)},r=[]},"94c8":function(t,e,i){"use strict";var a=i("85ea"),n=i.n(a);n.a},"94db":function(t,e,i){"use strict";i.r(e);var a=i("915c"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"94dd":function(t,e,i){var a=i("121a");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("078e23e4",a,!0,{sourceMap:!1,shadowMode:!1})},9505:function(t,e,i){"use strict";i.r(e);var a=i("d2f4"),n=i("d60f");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("dc26");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"42822b3b",null,!1,a["a"],void 0);e["default"]=o.exports},9542:function(t,e,i){"use strict";i.r(e);var a=i("2897"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"956b":function(t,e,i){"use strict";i.r(e);var a=i("dc23"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"957d":function(t,e,i){"use strict";i.r(e);var a=i("79a4"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"95b0":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".numberValue[data-v-0ab80f89]{display:flex;gap:12rpx}.numberValue .numberValue-card[data-v-0ab80f89]{position:relative;width:140rpx;padding-right:40rpx;height:46rpx;background:#f6f6f6}.numberValue .numberValue-card .numberValue-input[data-v-0ab80f89]{width:140rpx;height:46rpx;background:#f6f6f6;border-radius:6rpx;text-align:center!important;font-weight:500;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal}.numberValue .numberValue-card .percentage[data-v-0ab80f89]{position:absolute;right:9rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-weight:500;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal}.numberValue .fuHao[data-v-0ab80f89]{font-weight:500;font-size:34rpx;color:#333;line-height:48rpx;text-align:left;font-style:normal}.uni-input-placeholder[data-v-0ab80f89]{font-weight:400;font-size:24rpx;color:#d1cccc;line-height:33rpx;text-align:center;font-style:normal}",""]),t.exports=e},"95c0":function(t,e,i){"use strict";i.r(e);var a=i("8fbd"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"95de":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/456f4e6c-e86a-42c9-a272-484db9af6c7c",mode:"aspectFit",_i:3},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u6211\u7684\u8d44\u6599")])],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}})],1),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}}),i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u57fa\u7840\u8d44\u6599")])],1),i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u5e97\u94fa\u4fe1\u606f\u5c06\u5f71\u54cd\u987e\u5ba2\u5230\u5e97\u6d88\u8d39\u4f53\u9a8c\uff0c\u8bf7\u786e\u4fdd\u4fe1\u606f\u51c6\u786e\u3002")]),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("v-uni-image",{staticClass:t._$g(16,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/21f1efaf-0c17-49b0-a2b2-e0fd573b92b3",mode:"aspectFit",_i:16}}),i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v(t._$g(17,"t0-0"))])],1),i("v-uni-image",{staticClass:t._$g(18,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:18}})],1),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("v-uni-image",{staticClass:t._$g(21,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/b90e2322-a261-4c17-a581-85010c3bc112",mode:"aspectFit",_i:21}}),i("v-uni-text",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v("\u670d\u52a1\u6280\u80fd")])],1),i("v-uni-image",{staticClass:t._$g(23,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:23}})],1),t._$g(24,"i")?i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[i("v-uni-image",{staticClass:t._$g(26,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/e9618006-db69-446e-92e1-ba9dd81e79f9",mode:"aspectFit",_i:26}}),i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v("\u95e8\u5e97\u4fe1\u606f")])],1),i("v-uni-image",{staticClass:t._$g(28,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:28}})],1):t._e(),t._$g(29,"i")?i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[i("v-uni-image",{staticClass:t._$g(31,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/a35603b1-50fb-4248-9f2e-2dd4d5e249c0",mode:"aspectFit",_i:31}}),i("v-uni-text",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v("\u670d\u52a1\u533a\u57df")])],1),i("v-uni-image",{staticClass:t._$g(33,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:33}})],1):t._e(),t._$g(34,"i")?i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[i("v-uni-image",{staticClass:t._$g(36,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/77dc7a16-3b86-44e5-8acc-5f3b85ffc137",mode:"aspectFit",_i:36}}),i("v-uni-text",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v("\u4e2a\u4eba\u4fe1\u606f")])],1),i("v-uni-image",{staticClass:t._$g(38,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:38}})],1):t._e()],1)],1)],1),i("uni-view",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}}),i("v-uni-text",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[t._v("\u7ecf\u8425\u8d44\u8d28")])],1),i("uni-view",{staticClass:t._$g(43,"sc"),attrs:{_i:43}},[i("uni-view",{staticClass:t._$g(44,"sc"),attrs:{_i:44},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(45,"sc"),attrs:{_i:45}},[i("v-uni-image",{staticClass:t._$g(46,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/2677692c-5931-4ac7-846e-b6d321184789",mode:"aspectFit",_i:46}}),i("v-uni-text",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[t._v("\u8d44\u8d28\u4fe1\u606f")])],1),i("v-uni-image",{staticClass:t._$g(48,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:48}})],1),t._$g(49,"i")?i("uni-view",{staticClass:t._$g(49,"sc"),attrs:{_i:49},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(50,"sc"),attrs:{_i:50}},[i("v-uni-image",{staticClass:t._$g(51,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/b5541cb5-58c1-4e72-b88f-5cf6450338a8",mode:"aspectFit",_i:51}}),i("v-uni-text",{staticClass:t._$g(52,"sc"),attrs:{_i:52}},[t._v("\u6240\u5c5e\u95e8\u5e97")])],1),i("v-uni-image",{staticClass:t._$g(53,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:53}})],1):t._e()],1)],1)],1)],1)},n=[]},9649:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},9650:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";uni-view[data-v-748541a9], uni-scroll-view[data-v-748541a9], uni-swiper-item[data-v-748541a9]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-modal[data-v-748541a9]{width:650rpx;border-radius:6px;overflow:hidden}.uv-modal__title[data-v-748541a9]{font-size:16px;font-weight:700;color:#606266;text-align:center;padding-top:25px}.uv-modal__content[data-v-748541a9]{padding:12px 25px 25px 25px;display:flex;flex-direction:row;justify-content:center}.uv-modal__content__text[data-v-748541a9]{line-height:48rpx;font-size:15px;color:#606266;flex:1}.uv-modal__button-group[data-v-748541a9]{display:flex;flex-direction:row;height:48px}.uv-modal__button-group__wrapper[data-v-748541a9]{flex:1;display:flex;flex-direction:row;justify-content:center;align-items:center;height:48px}.uv-modal__button-group__wrapper--confirm[data-v-748541a9], .uv-modal__button-group__wrapper--only-cancel[data-v-748541a9]{border-bottom-right-radius:6px}.uv-modal__button-group__wrapper--cancel[data-v-748541a9], .uv-modal__button-group__wrapper--only-confirm[data-v-748541a9]{border-bottom-left-radius:6px}.uv-modal__button-group__wrapper--hover[data-v-748541a9]{background-color:#f3f4f6}.uv-modal__button-group__wrapper__text[data-v-748541a9]{color:#606266;font-size:16px;text-align:center}',""]),t.exports=e},"967a":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("v-uni-scroll-view",{staticClass:t._$g(2,"sc"),attrs:{"scroll-x":!0,"show-scrollbar":!1,_i:2},on:{touchmove:function(e){return t.$handleViewEvent(e,{prevent:!0,stop:!0})}}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("v-uni-text",{staticClass:t._$g(5,"sc"),class:t._$g(5,"c"),attrs:{_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u70ed\u9500")]),t._$g(6,"i")?i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}}):t._e()],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("v-uni-text",{staticClass:t._$g(8,"sc"),class:t._$g(8,"c"),attrs:{_i:8},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u4ef7\u683c")]),i("v-uni-image",{staticClass:t._$g(9,"sc"),attrs:{src:t._$g(9,"a-src"),mode:"aspectFill",_i:9}}),t._$g(10,"i")?i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}}):t._e()],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("v-uni-text",{staticClass:t._$g(12,"sc"),class:t._$g(12,"c"),attrs:{_i:12},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u5206\u7c7b")])],1)],1)],1),i("uni-view",{staticClass:t._$g(13,"sc"),class:t._$g(13,"c"),attrs:{_i:13}},[i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},t._l(t._$g(15,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("15-"+r,"sc"),class:t._$g("15-"+r,"c"),attrs:{_i:"15-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("15-"+r,"t0-0")+" ")])})),1)],1)],1),i("uni-view",{class:t._$g(16,"c"),attrs:{_i:16},on:{click:function(e){return t.$handleViewEvent(e)}}})],1)},n=[]},"967ac":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{key:t._$g(0,"a-key"),staticClass:t._$g(0,"sc"),attrs:{_i:0},on:{touchstart:function(e){return t.$handleViewEvent(e)},touchmove:function(e){return t.$handleViewEvent(e)},touchend:function(e){return t.$handleViewEvent(e)},mousedown:function(e){return t.$handleViewEvent(e)},mousemove:function(e){return t.$handleViewEvent(e)},mouseup:function(e){return t.$handleViewEvent(e)},mouseleave:function(e){return t.$handleViewEvent(e)}}},[t._$g(1,"i")?i("uni-view",{staticClass:t._$g(1,"sc"),style:t._$g(1,"s"),attrs:{_i:1},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{attrs:{_i:2}},[t._v("\u5220\u9664")])],1):t._e(),i("uni-view",{staticClass:t._$g(3,"sc"),style:t._$g(3,"s"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:t._$g(5,"a-src"),mode:"aspectFill",_i:5}}),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(t._$g(8,"t0-0"))]),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u670d\u52a1\u8303\u56f4\uff1a"+t._$g(9,"t0-0")+" ")])],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\xa5")]),i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v(t._$g(12,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v("\u5143\\10\u5206\u949f")])],1)],1)],1),i("uni-view",{class:t._$g(14,"c"),attrs:{_i:14}},[i("v-uni-text",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v(t._$g(15,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._$g(17,"i")?i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\u4e0b\u67b6")])],1):t._e(),t._$g(19,"i")?i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v("\u4e0a\u67b6")])],1):t._e(),i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v("\u7f16\u8f91")])],1)],1)],1)],1)},n=[]},"96a6":function(t,e,i){"use strict";i.r(e);var a=i("d999"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"96b4":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("35ed");e=a(!1);var s=n(r);e.push([t.i,'body{background:linear-gradient(180deg,#fff,#f5f5f5)!important}.container .tab-nav{display:flex;justify-content:space-between;padding:0 91rpx;background:#fff}.container .tab-nav .tab-item{padding:30rpx 0rpx 30rpx 0rpx;cursor:pointer;font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:left;font-style:normal}.container .tab-nav .tab-item.active{color:#e8101e;font-weight:500;position:relative}.container .tab-nav .tab-item.active:after{content:"";position:absolute;bottom:17rpx;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:34rpx;height:6rpx;background:linear-gradient(306deg,#e8101e,#fc563b);border-radius:3rpx}.pop-content{width:620rpx;background-image:url('+s+");background-position:top;background-repeat:no-repeat;background-size:cover;border-radius:20rpx}.pop-content .pop-content-title{padding-top:193rpx;padding-bottom:40rpx;text-align:center;font-weight:500;font-size:36rpx;color:#333;line-height:50rpx;font-style:normal;display:block}.pop-content .pop-content-text{padding:0 40rpx;font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;display:block}.pop-content .pop-content-btns{display:flex;padding:0 54rpx;justify-content:space-between;margin-top:80rpx;padding-bottom:51rpx}.pop-content .pop-content-btns .pop-content-close{width:246rpx;height:80rpx;border-radius:40rpx;border:2rpx solid #e8101e;font-weight:500;font-size:28rpx;color:#e8101e;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:center}.pop-content .pop-content-btns .pop-content-sure{width:246rpx;height:80rpx;background:#e8101e;border-radius:40rpx;font-weight:500;font-size:28rpx;color:#fff;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:center}.scoll-lists{padding:0 20rpx;margin-top:20rpx}.scoll-lists .list-item{box-sizing:border-box;padding:20rpx;height:200rpx;background:#fff;border-radius:20rpx;margin-bottom:20rpx;position:relative}.scoll-lists .list-item .item-left{position:relative}.scoll-lists .list-item .item-left .item-left-img{width:131rpx;height:131rpx;border-radius:50%}.scoll-lists .list-item .item-left .item-left-tab{font-weight:400;font-size:24rpx;color:#fff;text-align:left;font-style:normal;width:124rpx;height:34rpx;background:#e8101e;border-radius:18rpx;position:absolute;bottom:0;left:4rpx}.scoll-lists .list-item .item-left .noTab{background:#c1c1c1}.scoll-lists .list-item .item-right{margin-left:20rpx;flex:1}.scoll-lists .list-item .item-right .item-right-text1{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.scoll-lists .list-item .item-right .item-right-text2{font-weight:400;font-size:24rpx;color:#999;line-height:33rpx;text-align:left;font-style:normal;margin-bottom:20rpx}.scoll-lists .list-item .item-right .item-right-text3{font-weight:400;font-size:24rpx;color:#333;line-height:33rpx;text-align:left;font-style:normal}.scoll-lists .list-item .item-right .item-right-text3 .item-right-text3-icon{width:8rpx;height:16rpx;margin-left:6rpx} .right-area{width:31rpx!important;height:31rpx!important} .icon-headle{width:31rpx!important;height:31rpx!important}.common-list{background:#f5f5f5!important;border-radius:30rpx!important} .list-container{padding:0!important} .list-scroll{margin-top:0!important}.switch-box{height:52rpx;line-height:52rpx;border-radius:26rpx;background-color:#ffd4d8;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:0 8rpx 0 15rpx}.switch-box .switch-yuan{width:38rpx;height:38rpx;border-radius:20rpx;background-color:#fff;margin-left:9rpx;margin-right:0rpx}.switch-box .switch-text{font-weight:500;font-size:24rpx;color:#e8101e;line-height:33rpx;text-align:right;font-style:normal}.disswitch{padding:0 12rpx 0 8rpx;background-color:#cecfd5}.disswitch .switch-yuan{margin-left:0;margin-right:9rpx}.disswitch .switch-text{color:#a0a0a0}",""]),t.exports=e},"96c4":function(t,e,i){var a=i("47b2");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("09d4cc44",a,!0,{sourceMap:!1,shadowMode:!1})},"96c9":function(t,e,i){var a=i("b010");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("6420c3ab",a,!0,{sourceMap:!1,shadowMode:!1})},"96d3":function(t,e,i){"use strict";var a=i("9212"),n=i.n(a);n.a},"96e7":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("2251")),r=a(i("f8df")),s=a(i("4f1b")),o=a(i("e26b")),c={data:function(){return{wxsProps:{}}},components:{serviecFirstTab:n.default,CommonList:r.default,OrderCard:s.default,serviceCodeInput:o.default}};e.default=c},"96f4":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{id:t._$g(0,"a-id"),_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[t._v(t._$g(1,"t0-0"))]),t._l(t._$g(2,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("2-"+r,"sc"),class:t._$g("2-"+r,"c"),attrs:{_i:"2-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("2-"+r,"t0-0")+" ")])})),t._t("default",null,{_i:3})],2)},n=[]},"96f6":function(t,e,i){var a=i("0cc7");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("85c445a0",a,!0,{sourceMap:!1,shadowMode:!1})},9740:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"tab-bar",props:["selected"],data:function(){return{wxsProps:{}}},components:{}}},"974d":function(t,e,i){"use strict";var a=i("7be3"),n=i.n(a);n.a},9780:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.store-info-page[data-v-dacc7b96]{padding-bottom:20rpx}.page-content[data-v-dacc7b96]{flex:1;overflow-y:auto;box-sizing:border-box;padding:20rpx 20rpx}.change-tip[data-v-dacc7b96]{background:#fae7ec;padding:20rpx;text-align:center}.change-tip uni-text[data-v-dacc7b96]{font-size:28rpx;color:#d4131f}.audit-tip[data-v-dacc7b96]{margin:20rpx 24rpx 20rpx 24rpx;border-radius:12rpx}.audit-text[data-v-dacc7b96]{font-weight:400;font-size:32rpx;color:#333;text-align:center;display:block}.reject-reason[data-v-dacc7b96]{background:transparent;padding:24rpx}.reject-title[data-v-dacc7b96]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:center;font-style:normal}.reject-detail[data-v-dacc7b96]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:28rpx;color:#999;line-height:40rpx;text-align:center;font-style:normal;margin-top:12rpx}.section-title[data-v-dacc7b96]{display:flex;align-items:center;margin-bottom:30rpx}.title-bar[data-v-dacc7b96]{width:6rpx;height:30rpx;background-color:#e8101e;margin-right:7rpx;border-radius:5rpx}.section-title uni-text[data-v-dacc7b96]{font-size:36rpx;color:#1d2129;font-weight:400}.box-cont[data-v-dacc7b96]{background:#fff;border-radius:20rpx;margin-bottom:24rpx;margin-left:8rpx;margin-right:8rpx;box-shadow:none}.form-item[data-v-dacc7b96]{padding:24rpx}.label[data-v-dacc7b96]{display:block;font-size:28rpx;color:#333;font-weight:500}.required[data-v-dacc7b96]::before{content:"*";color:red;margin-right:4rpx}.upload-box[data-v-dacc7b96]{display:flex;justify-content:center;align-items:center;height:160rpx;border-radius:20rpx}.upload-placeholder[data-v-dacc7b96]{display:flex;flex-direction:column;align-items:center;justify-content:center}.upload-icon[data-v-dacc7b96]{width:120rpx;height:120rpx}.logo-image[data-v-dacc7b96]{width:120rpx;height:120rpx;border-radius:20rpx}.form-item-one[data-v-dacc7b96]{display:flex;align-items:center;padding:24rpx}.label-wrapper[data-v-dacc7b96]{display:inline-flex;align-items:center}.label[data-v-dacc7b96]{font-size:28rpx;color:#333;font-weight:500;line-height:1}.label-icon[data-v-dacc7b96]{width:26rpx;height:26rpx;margin-left:8rpx;align-items:center}.form-item-two[data-v-dacc7b96]{display:flex;justify-content:space-between;align-items:center;padding:24rpx}.input[data-v-dacc7b96]{flex:1;font-size:28rpx;color:#333;text-align:right}.placeholder[data-v-dacc7b96]{color:#999}.picker-content[data-v-dacc7b96]{display:flex;align-items:center}.picker-value[data-v-dacc7b96]{font-size:28rpx;color:#333}.arrow-right[data-v-dacc7b96]{width:14rpx;height:26rpx;margin-left:16rpx}.bottom-actions[data-v-dacc7b96]{position:fixed;bottom:0;left:0;right:0;padding:0rpx 24rpx 40rpx 24rpx;background:#fff;z-index:100}.action-btn[data-v-dacc7b96]{height:88rpx;border-radius:43rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:400;margin-top:20rpx}.change-info-btn[data-v-dacc7b96],\n.view-change-btn[data-v-dacc7b96],\n.resubmit-btn[data-v-dacc7b96]{background:linear-gradient(180deg,#f52540,#e8101e)}.action-buttons-row[data-v-dacc7b96]{display:flex;justify-content:space-between;margin:0 30rpx}.action-buttons-row .action-btn[data-v-dacc7b96]{width:270rpx}.cancel-btn[data-v-dacc7b96]{background:#e5e5e5;border-radius:43rpx;padding:0 15rpx}.submit-btn[data-v-dacc7b96]{background:linear-gradient(180deg,#f52540,#e8101e 100%,#e8101e 0);border-radius:43rpx;padding:0 15rpx}.btn-text[data-v-dacc7b96]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:36rpx;color:#fff;line-height:50rpx;text-align:left;font-style:normal}.cancel-text[data-v-dacc7b96]{color:#666}.popup[data-v-dacc7b96]{position:fixed;left:0;right:0;bottom:0;z-index:999;visibility:hidden;opacity:0;transition:all .3s ease}.popup.show[data-v-dacc7b96]{visibility:visible;opacity:1}.popup-mask[data-v-dacc7b96]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.popup-content[data-v-dacc7b96]{position:relative;background-color:#fff;border-radius:24rpx 24rpx 0 0;padding:32rpx;-webkit-transform:translateY(100%);transform:translateY(100%);transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.popup.show .popup-content[data-v-dacc7b96]{-webkit-transform:translateY(0);transform:translateY(0)}.popup-header[data-v-dacc7b96]{display:flex;align-items:center;justify-content:space-between;margin-bottom:20rpx}.popup-title[data-v-dacc7b96]{font-size:32rpx;color:#333;font-weight:500}.popup-close[data-v-dacc7b96]{font-size:40rpx;color:#999;padding:16rpx}.region-body[data-v-dacc7b96]{height:400rpx}.picker-scroll[data-v-dacc7b96]{height:400rpx}.picker-item[data-v-dacc7b96]{height:68rpx;line-height:68rpx;text-align:center}.popup-footer[data-v-dacc7b96]{display:flex;margin-top:32rpx}.popup-btn[data-v-dacc7b96]{flex:1;height:88rpx;border-radius:44rpx;display:flex;align-items:center;justify-content:center;margin:0 16rpx}.popup-btn.cancel[data-v-dacc7b96]{background-color:#f5f5f5}.popup-btn.confirm[data-v-dacc7b96]{background:linear-gradient(180deg,#f52540,#e8101e)}.popup-btn .btn-text[data-v-dacc7b96]{font-size:32rpx;font-weight:500}.popup-btn.cancel .btn-text[data-v-dacc7b96]{color:#666}.popup-btn.confirm .btn-text[data-v-dacc7b96]{color:#fff}.tip-popup[data-v-dacc7b96]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;display:flex;align-items:center;justify-content:center;visibility:hidden;opacity:0;transition:all .3s ease}.tip-popup.show[data-v-dacc7b96]{visibility:visible;opacity:1}.tip-popup-mask[data-v-dacc7b96]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.tip-popup-content[data-v-dacc7b96]{position:relative;width:620rpx;height:810rpx}.tip-popup-bg[data-v-dacc7b96]{width:620rpx;height:810rpx;position:absolute;top:0;left:0}.tip-popup-body[data-v-dacc7b96]{position:relative;flex-direction:column;padding:80rpx 20rpx 40rpx 20rpx;box-sizing:border-box}.tip-title[data-v-dacc7b96]{font-size:36rpx;font-weight:700;color:#333;text-align:center;margin-top:107rpx;margin-bottom:37rpx}.tip-image-container[data-v-dacc7b96]{align-items:center;justify-content:center;margin-bottom:50rpx}.tip-image.store_logo[data-v-dacc7b96]{width:582rpx;height:327rpx;margin-right:0;margin-left:-15rpx}.tip-image.store_name[data-v-dacc7b96]{width:627rpx;height:327rpx;margin-left:13rpx}.tip-buttons[data-v-dacc7b96]{display:flex;justify-content:space-between;padding:0 28rpx}.tip-btn[data-v-dacc7b96]{width:250rpx;height:80rpx;border-radius:40rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:500}.tip-btn.cancel[data-v-dacc7b96]{border:#e8101e 2rpx solid;background-color:initial;color:#e8101e}.tip-btn.confirm[data-v-dacc7b96]{background:linear-gradient(180deg,#f52540,#e8101e);color:#fff}.tip-btn .btn-text[data-v-dacc7b96]{color:inherit}.permission.transform[data-v-dacc7b96]{top:calc(var(--status-bar-height) + 88rpx + 20rpx);opacity:1;visibility:visible}',""]),t.exports=e},"97c5":function(t,e,i){"use strict";var a=i("f097"),n=i.n(a);n.a},"97d2":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".container{background-color:#fff;min-height:100vh}.container .nocode{padding:0 48rpx}.container .nocode .node-title{font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:center;font-style:normal;margin-top:53rpx}.container .nocode .container-code{align-items:center;padding-bottom:14rpx;border-bottom:2rpx solid #f7f9fc;margin-top:90rpx;display:flex;flex-wrap:nowrap}.container .nocode .container-code .code-input{flex:1}.container .nocode .container-code .code-input .code-input-placeholder{font-weight:400;font-size:28rpx;color:#c5c5c7;line-height:40rpx;text-align:left;font-style:normal}.container .nocode .node-btn{width:644rpx;height:96rpx;background:#f7f9fc;border-radius:48rpx;font-weight:500;font-size:28rpx;color:#8e929f;line-height:40rpx;text-align:left;font-style:normal;margin-top:60rpx;display:flex;align-items:center;justify-content:center}.container .nocode .node-btn.active{color:#fff;background:#f34}.container .isCode .isCode-title{font-weight:500;font-size:32rpx;color:#000;line-height:45rpx;text-align:left;font-style:normal}.isActive{background-color:initial;padding:25rpx 20rpx}.isActive .isCode-card{padding:30rpx;background:#fff;border-radius:20rpx;margin-top:20rpx}.isActive .isCode-card .isCode-card-title{font-weight:400;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal;display:flex;align-items:center}.isActive .isCode-card .isCode-card-title__img{width:36rpx;height:30rpx;margin-right:13rpx}.isActive .isCode-card .isCode-card-card{margin-top:20rpx;width:650rpx;border-radius:20rpx;position:relative}.isActive .isCode-card .isCode-card-card__img{width:650rpx;border-radius:20rpx}",""]),t.exports=e},"97f1":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".container .content{position:relative}.container .content .bjImg{width:750rpx}.container .content .imgCard{position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:690rpx;height:730rpx;border-radius:40rpx;top:690rpx}.container .content .btnImg{position:absolute;width:566rpx;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);bottom:31rpx}",""]),t.exports=e},"97f9":function(t,e,i){"use strict";i.r(e);var a=i("a587"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},9801:function(t,e,i){"use strict";i.r(e);var a=i("8e15"),n=i("3ebc");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("a0c7");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"981b":function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("a51c");e=a(!1);var s=n(r);e.push([t.i,'@charset "UTF-8";uni-view[data-v-14309c6b], uni-scroll-view[data-v-14309c6b], uni-swiper-item[data-v-14309c6b]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}@font-face{font-family:uvicon-iconfont;src:url('+s+') format("truetype")}.uv-icon[data-v-14309c6b]{display:flex;align-items:center}.uv-icon--left[data-v-14309c6b]{flex-direction:row-reverse;align-items:center}.uv-icon--right[data-v-14309c6b]{flex-direction:row;align-items:center}.uv-icon--top[data-v-14309c6b]{flex-direction:column-reverse;justify-content:center}.uv-icon--bottom[data-v-14309c6b]{flex-direction:column;justify-content:center}.uv-icon__icon[data-v-14309c6b]{font-family:uvicon-iconfont;position:relative;display:flex;flex-direction:row;align-items:center}.uv-icon__icon--primary[data-v-14309c6b]{color:#3c9cff}.uv-icon__icon--success[data-v-14309c6b]{color:#5ac725}.uv-icon__icon--error[data-v-14309c6b]{color:#f56c6c}.uv-icon__icon--warning[data-v-14309c6b]{color:#f9ae3d}.uv-icon__icon--info[data-v-14309c6b]{color:#909399}.uv-icon__img[data-v-14309c6b]{height:auto;will-change:transform}.uv-icon__label[data-v-14309c6b]{line-height:1}',""]),t.exports=e},"981f":function(t,e,i){"use strict";var a=i("af3b"),n=i.n(a);n.a},"987f":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"98ae":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"search-box",props:["value","placeholder","showBack","width","height","border","bgClor","showAdd"],data:function(){return{wxsProps:{}}},components:{}}},"98b3":function(t,e,i){"use strict";var a=i("468b"),n=i.n(a);n.a},"98b4":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("e26b")),r={data:function(){return{wxsProps:{}}},components:{serviceCodeInput:n.default}};e.default=r},"98d1":function(t,e,i){"use strict";i.r(e);var a=i("d91e"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"98d7":function(t,e,i){"use strict";i.r(e);var a=i("a5b9"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},9903:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),style:t._$g(0,"s"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),style:t._$g(1,"s"),attrs:{_i:1}},[i("v-uni-input",{staticClass:t._$g(2,"sc"),attrs:{type:"text",placeholder:t._$g(2,"a-placeholder"),value:t._$g(2,"a-value"),"placeholder-class":"inputPlaceholder","confirm-type":"search","placeholder-style":"color: #CCCCCC;",_i:2},on:{input:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u641c\u7d22")]),i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:"/static/images/search.png",_i:4},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}})],1)],1)},n=[]},9962:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("9c49")),r={data:function(){return{wxsProps:{}}},components:{orderCard:n.default}};e.default=r},"996a":function(t,e,i){t.exports=i.p+"static/images/shop/pintuan/button.png"},"99c7":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("b619")),r=a(i("f3ca")),s={data:function(){return{wxsProps:{}}},components:{searchBox:n.default,haoIndexList:r.default}};e.default=s},"99d9":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},"99dc":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".pop-cards[data-v-5da4e22e]{padding:40rpx;background:linear-gradient(180deg,#fedcdf,#fff 120rpx);border-radius:30rpx 30rpx 0rpx 0rpx}.pop-cards .pop-cards-title[data-v-5da4e22e]{font-weight:500;font-size:36rpx;color:#333;line-height:50rpx;text-align:center;font-style:normal}.pop-cards .pop-card[data-v-5da4e22e]{padding-top:30rpx;padding-bottom:26rpx;display:flex;align-items:center}.pop-cards .pop-card .pop-card-title[data-v-5da4e22e]{font-weight:500;font-size:28rpx;color:#333;line-height:45rpx;text-align:left;font-style:normal;width:202rpx}.pop-cards .pop-card .pop-card-text1[data-v-5da4e22e]{word-break:break-all;flex:1;font-weight:400;font-size:28rpx;color:#999;line-height:40rpx;text-align:left;font-style:normal}.pop-cards .pop-card .popRed[data-v-5da4e22e]{color:#e8101e}.pop-cards .pop-btn[data-v-5da4e22e]{margin-top:60rpx;display:flex;align-items:center;justify-content:center;width:672rpx;height:96rpx;background:linear-gradient(180deg,#f52540,#e8101e);border-radius:48rpx;font-weight:500;font-size:34rpx;color:#fff;line-height:48rpx;text-align:left;font-style:normal}.pop-cards .pop-border-bottom[data-v-5da4e22e]{border-bottom:2rpx solid #faf8f8}",""]),t.exports=e},"9a72":function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[t._$g(1,"i")?i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1},on:{click:function(e){return t.$handleViewEvent(e)}}}):t._e(),i("uni-view",{staticClass:t._$g(2,"sc"),class:t._$g(2,"c"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")]),i("v-uni-text",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v("\u9009\u62e9\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),class:t._$g(8,"c"),attrs:{_i:8},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v(t._$g(9,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u5f00\u59cb\u65f6\u95f4")])],1),i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u81f3")]),i("uni-view",{staticClass:t._$g(12,"sc"),class:t._$g(12,"c"),attrs:{_i:12},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v(t._$g(13,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v("\u7ed3\u675f\u65f6\u95f4")])],1)],1),i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("v-uni-picker-view",{staticClass:t._$g(16,"sc"),attrs:{value:t._$g(16,"a-value"),"indicator-style":t._$g(16,"a-indicator-style"),_i:16},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-picker-view-column",{attrs:{_i:17}},t._l(t._$g(18,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("18-"+r,"sc"),attrs:{_i:"18-"+r}},[t._v(" "+t._$g("18-"+r,"t0-0")+" ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:19}},t._l(t._$g(20,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("20-"+r,"sc"),attrs:{_i:"20-"+r}},[t._v(" "+t._$g("20-"+r,"t0-0")+" ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:21}},[i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v(" - ")])],1),i("v-uni-picker-view-column",{attrs:{_i:23}},t._l(t._$g(24,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("24-"+r,"sc"),attrs:{_i:"24-"+r}},[t._v(" "+t._$g("24-"+r,"t0-0")+" ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:25}},t._l(t._$g(26,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("26-"+r,"sc"),attrs:{_i:"26-"+r}},[t._v(" "+t._$g("26-"+r,"t0-0")+" ")])})),1)],1)],1)],1)],1)},n=[]},"9a8a":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:t._$g(5,"a-src"),mode:"aspectFill",_i:5}})],1),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v(t._$g(7,"t0-0"))]),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{attrs:{_i:9}},[t._v("\u5206\u914d\u9879\u76ee")]),i("v-uni-image",{staticClass:t._$g(10,"sc"),attrs:{src:"/static/images/icons/right_20_36.png",_i:10}})],1)],1)],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u66f4\u591a\u8be6\u60c5 "),i("v-uni-image",{staticClass:t._$g(12,"sc"),attrs:{src:"/static//images//icons/right_20_40.png",_i:12}})],1)],1),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("v-uni-image",{staticClass:t._$g(15,"sc"),attrs:{src:"/static//images//icons/setting.png",_i:15}}),i("v-uni-text",{attrs:{_i:16}},[t._v("\u662f\u5426\u5141\u8bb8\u624b\u827a\u4eba\u63a5\u5355")])],1),i("uni-view",{staticClass:t._$g(17,"sc"),class:t._$g(17,"c"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g(18,"i")?i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\u63a5\u5355")]):t._e(),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}}),t._$g(20,"i")?i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v("\u4e0d\u63a5\u5355")]):t._e()],1)],1),i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},t._l(t._$g(23,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("23-"+r,"sc"),class:t._$g("23-"+r,"c"),attrs:{_i:"23-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("23-"+r,"t0-0")+" ")])})),1),i("v-uni-scroll-view",{attrs:{"scroll-x":"true","scroll-with-animation":!0,_i:24}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},t._l(t._$g(26,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("26-"+r,"sc"),class:t._$g("26-"+r,"c"),attrs:{_i:"26-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("26-"+r,"t0-0")+" ")])})),1)],1)],1),i("CommonList",{ref:"groupRef",attrs:{_i:27},scopedSlots:t._u([{key:"listData",fn:function(e,a,n){e.list;return[i("uni-view",{staticClass:a._$g("29-"+n,"sc"),attrs:{_i:"29-"+n}},t._l(a._$g("30-"+n,"f"),(function(t,e,r,s){return i("uni-view",{key:t,staticClass:a._$g("30-"+n+s,"sc"),attrs:{_i:"30-"+n+s}},[i("OrderCard",{attrs:{_i:"31-"+n+s}})],1)})),1)]}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"33-"+a}})]}}])}),i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[t._$g(35,"i")?i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u89e3\u9664\u7ed1\u5b9a")]):t._e(),t._$g(36,"i")?i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u91cd\u65b0\u9080\u8bf7\u7ed1\u5b9a ")]):t._e()],1)],1)},r=[]},"9aca":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("f16c")),r={data:function(){return{wxsProps:{}}},components:{orderCard:n.default}};e.default=r},"9b27":function(t,e,i){"use strict";i.r(e);var a=i("c561"),n=i("cb3f");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("0030");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"ff035a16",null,!1,a["a"],void 0);e["default"]=o.exports},"9b30":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,aliOssUploader:i("93a6").default,agreeRadio:i("a6d8").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{attrs:{_i:3}},[i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u8ba2\u5355\u7f16\u53f7")])],1),i("uni-view",{attrs:{_i:5}},[i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v(t._$g(6,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{attrs:{_i:9}},[i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u7533\u8bc9\u539f\u56e0")])],1),i("uni-view",{attrs:{_i:11},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(12,"sc"),class:t._$g(12,"c"),attrs:{_i:12}},[t._v(t._$g(12,"t0-0")+" >")])],1)],1),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("uni-view",{attrs:{_i:14}},[i("v-uni-text",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v("\u7533\u8bc9\u5185\u5bb9")])],1),i("v-uni-textarea",{staticClass:t._$g(16,"sc"),attrs:{_i:16},model:{value:t._$g(16,"v-model"),callback:function(e){t.$handleVModelEvent(16,e)},expression:"queryData.text"}})],1),i("ali-oss-uploader",{staticClass:t._$g(17,"sc"),attrs:{_i:17},on:{success:function(e){return t.$handleViewEvent(e)},error:function(e){return t.$handleViewEvent(e)},delete:function(e){return t.$handleViewEvent(e)},ckeckisShowPer:function(e){return t.$handleViewEvent(e)},ckecknowQer:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(17,"v-model"),callback:function(){},expression:"queryData.photos"}})],1),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v(" \u8054\u7cfb\u4eba ")]),i("v-uni-input",{staticClass:t._$g(21,"sc"),attrs:{type:"text",placeholder:"\u8054\u7cfb\u4eba\u59d3\u540d",_i:21},model:{value:t._$g(21,"v-model"),callback:function(e){t.$handleVModelEvent(21,e)},expression:"queryData.name"}}),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[t._v("\u5148\u751f")]),i("agree-radio",{attrs:{_i:25}})],1),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v("\u5973\u58eb")]),i("agree-radio",{attrs:{_i:28}})],1)],1)],1),i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[i("v-uni-text",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[t._v(" \u8054\u7cfb\u65b9\u5f0f ")]),i("v-uni-input",{staticClass:t._$g(31,"sc"),attrs:{type:"text",placeholder:"\u8054\u7cfb\u65b9\u5f0f",_i:31},model:{value:t._$g(31,"v-model"),callback:function(e){t.$handleVModelEvent(31,e)},expression:"queryData.phone"}})],1)],1),i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[t._v("\u63d0\u4ea4")])],1),i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34}}),i("uni-view",{staticClass:t._$g(35,"sc"),class:t._$g(35,"c"),attrs:{_i:35}},[i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u50a8\u5b58\u7a7a\u95f4/\u7167\u7247\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u8bfb\u53d6\u76f8\u518c\u548c\u6587\u4ef6\u5185\u5bb9\u3002")])],1),i("uni-view",{staticClass:t._$g(38,"sc"),class:t._$g(38,"c"),attrs:{_i:38}},[i("uni-view",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u76f8\u673a\u62cd\u6444\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u6240\u9700\u5185\u5bb9\u3002")])],1)],1)},r=[]},"9b68":function(t,e,i){"use strict";i.r(e);var a=i("0ca1"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"9b93":function(t,e,i){"use strict";i.r(e);var a=i("3e85"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"9baa":function(t,e,i){"use strict";i.r(e);var a=i("016f"),n=i("403a");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("eb8d");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},"9bac":function(t,e,i){"use strict";var a=i("7feb"),n=i.n(a);n.a},"9bcd":function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("6bf1")),r=a(i("2251")),s=a(i("06c4")),o=a(i("f8df")),c=a(i("e77d")),l=a(i("29f0")),d={data:function(){return{wxsProps:{}}},components:{searchBox:n.default,serviecFirstTab:r.default,FilterPanel:s.default,CommonList:o.default,serviceCardList:c.default,filterVue:l.default}};e.default=d},"9bd8":function(t,e,i){var a=i("2334");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("c2c4b22e",a,!0,{sourceMap:!1,shadowMode:!1})},"9be7":function(t,e,i){"use strict";var a=i("bd3c"),n=i.n(a);n.a},"9bf6":function(t,e,i){var a=i("5e0d");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("7a5fee3a",a,!0,{sourceMap:!1,shadowMode:!1})},"9c49":function(t,e,i){"use strict";i.r(e);var a=i("1b9f"),n=i("5d93");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("ad90");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"af2100be",null,!1,a["a"],void 0);e["default"]=o.exports},"9c4a":function(t,e,i){"use strict";i.r(e);var a=i("a239"),n=i("6803");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("734a");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"a93dfe2c",null,!1,a["a"],void 0);e["default"]=o.exports},"9c5e":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("serviecFirstTab",{attrs:{_i:2},on:{"tab-click":function(e){return t.$handleViewEvent(e)}}}),i("CommonList",{ref:"groupRef",attrs:{_i:3},scopedSlots:t._u([{key:"listData",fn:function(e,a,n){e.list;return t._l(a._$g("5-"+n,"f"),(function(e,r,s,o){return i("uni-view",{key:e,staticClass:a._$g("5-"+n+o,"sc"),attrs:{_i:"5-"+n+o}},[i("OrderCard",{attrs:{_i:"6-"+n+o},on:{cancel:function(e){return t.$handleViewEvent(e)},accept:function(e){return t.$handleViewEvent(e)},start:function(e){return t.$handleViewEvent(e)},done:function(e){return t.$handleViewEvent(e)},goOrderDetail:function(e){return t.$handleViewEvent(e)}}})],1)}))}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"8-"+a}})]}}])}),i("serviceCodeInput",{attrs:{_i:9},on:{close:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}}})],1)},r=[]},"9c60":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uvLine:i("9b27").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),style:t._$g(0,"s"),attrs:{_i:0},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uv-line",{attrs:{_i:1}}),t._$g(2,"i")?i("v-uni-text",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._v("\u25cf")]):t._$g(3,"e")?i("v-uni-text",{staticClass:t._$g(3,"sc"),style:t._$g(3,"s"),attrs:{_i:3}},[t._v(t._$g(3,"t0-0"))]):t._e(),i("uv-line",{attrs:{_i:4}})],1)},r=[]},"9cc1":function(t,e,i){"use strict";i.r(e);var a=i("5151"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"9d14":function(t,e,i){"use strict";var a=i("c661"),n=i.n(a);n.a},"9d56":function(t,e,i){"use strict";var a=i("62af"),n=i.n(a);n.a},"9d9a":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.qualification-page[data-v-817d209a]{display:flex;flex-direction:column;height:100vh;background:#f5f5f5}.content-area[data-v-817d209a]{flex:1;overflow-y:auto;padding:30rpx 20rpx;padding-bottom:0}.change-tip[data-v-817d209a]{background:#fae7ec;padding:20rpx;text-align:center}.change-tip uni-text[data-v-817d209a]{font-size:28rpx;color:#d4131f}.reject-reason[data-v-817d209a]{background:transparent;padding:24rpx}.reject-title[data-v-817d209a]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:center;font-style:normal}.reject-detail[data-v-817d209a]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:28rpx;color:#999;line-height:40rpx;text-align:center;font-style:normal;margin-top:12rpx}.audit-tip[data-v-817d209a]{margin:20rpx 24rpx 20rpx 24rpx;border-radius:12rpx}.audit-text[data-v-817d209a]{font-weight:400;font-size:32rpx;color:#333;text-align:center;display:block}.bottom-actions[data-v-817d209a]{position:fixed;bottom:0;left:0;right:0;padding:0rpx 24rpx 40rpx 24rpx;background:#fff}.action-btn[data-v-817d209a]{height:88rpx;border-radius:43rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:400;margin-top:20rpx}.change-info-btn[data-v-817d209a], .view-change-btn[data-v-817d209a], .resubmit-btn[data-v-817d209a]{background:linear-gradient(180deg,#f52540,#e8101e)}.action-buttons-row[data-v-817d209a]{display:flex;justify-content:space-between;margin:0 30rpx}.action-buttons-row .action-btn[data-v-817d209a]{width:270rpx}.cancel-btn[data-v-817d209a]{background:#e5e5e5;border-radius:43rpx;padding:0 15rpx}.submit-btn[data-v-817d209a]{background:linear-gradient(180deg,#f52540,#e8101e 100%,#e8101e 0);border-radius:43rpx;padding:0 15rpx}.btn-text[data-v-817d209a]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:36rpx;color:#fff;line-height:50rpx;text-align:left;font-style:normal}.cancel-text[data-v-817d209a]{color:#666}.section[data-v-817d209a]{margin-bottom:30rpx}.section-title[data-v-817d209a]{display:flex;align-items:center;margin-bottom:30rpx}.title-bar[data-v-817d209a]{width:6rpx;height:30rpx;background-color:#e8101e;margin-right:7rpx;border-radius:5rpx}.title-text[data-v-817d209a]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#1d2129;line-height:48rpx;text-align:left;font-style:normal}.box-cont[data-v-817d209a]{background:#fff;border-radius:20rpx;margin-bottom:24rpx;margin-left:8rpx;margin-right:8rpx;box-shadow:none}.form-item[data-v-817d209a]{padding:24rpx 22rpx}.label[data-v-817d209a]{font-size:28rpx;color:#333;font-weight:500;line-height:1}.upload-label[data-v-817d209a]{font-family:Helvetica;font-size:28rpx;color:#999;line-height:40rpx;text-align:left;font-style:normal;margin-top:24rpx}.required[data-v-817d209a]::before{content:"*";color:red;margin-right:4rpx}.upload-tip[data-v-817d209a]{font-size:26rpx;color:#999;margin:5rpx 0 24rpx 0;font-weight:400;font-family:PingFangSC,PingFang SC;text-align:left;font-style:normal}.upload-box[data-v-817d209a]{display:flex;justify-content:center;align-items:center}.upload-camera[data-v-817d209a]{width:446rpx;height:298rpx;display:flex;align-items:center;justify-content:center;border-radius:48rpx;overflow:hidden;background-color:#f8f9fd}.idcard-upload-vertical-container[data-v-817d209a]{display:flex;flex-direction:column;padding:40rpx 24rpx 0 24rpx}.idcard-upload-vertical-item[data-v-817d209a]{display:flex;flex-direction:column;align-items:center;margin-bottom:30rpx}.camera-icon[data-v-817d209a]{width:446rpx;height:298rpx;border-radius:48rpx}.preview-image[data-v-817d209a]{border-radius:20rpx;width:100%;height:100%}.radio-group[data-v-817d209a]{display:flex;margin-top:24rpx;width:100%}.radio-item[data-v-817d209a]{display:flex;align-items:center;margin-right:130rpx}.radio[data-v-817d209a]{width:30rpx;height:30rpx;border:2rpx solid #ddd;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16rpx}.radio.checked[data-v-817d209a]{background-color:#e8101e;border-color:#e8101e}.radio-icon-image[data-v-817d209a]{width:32rpx;height:32rpx}.radio-label[data-v-817d209a]{font-size:28rpx;color:#333}.date-range-container[data-v-817d209a]{padding:24rpx;display:flex;justify-content:space-between}.date-item[data-v-817d209a]{flex:1;display:flex;flex-direction:column}.date-item[data-v-817d209a]:first-child{margin-right:24rpx}.date-label[data-v-817d209a]{font-size:28rpx;color:#333;margin-bottom:16rpx;font-weight:500;margin-left:8rpx}.date-picker-box[data-v-817d209a]{display:flex;align-items:center;justify-content:space-between;border:2rpx solid #e9e9e9;border-radius:10rpx;padding:12rpx 19rpx;background-color:initial}.date-value[data-v-817d209a]{font-size:28rpx;color:#333}.placeholder[data-v-817d209a]{color:#999;font-size:28rpx}.date-divider[data-v-817d209a]{width:2rpx;height:30rpx;background-color:#e9e9e9;margin:0 15rpx 0 0}.date-arrow[data-v-817d209a]{width:35rpx;height:33rpx}.date-picker-box.disabled[data-v-817d209a]{border:2rpx solid #f3f3f3}.date-picker-box.disabled .date-value[data-v-817d209a],\r\n.date-picker-box.disabled .placeholder[data-v-817d209a]{color:#ccc}.date-picker-box.disabled .date-divider[data-v-817d209a]{background-color:#f3f3f3}.date-picker-box uni-text[data-v-817d209a]{flex:1}.qualifications-container[data-v-817d209a]{margin:20rpx 5rpx 10rpx 6rpx}.qualifications-list[data-v-817d209a]{display:flex;flex-wrap:wrap;gap:9rpx}.qualification-item[data-v-817d209a]{position:relative;width:208rpx;height:208rpx;border-radius:11rpx;overflow:hidden;display:flex;align-items:center;justify-content:center}.add-item[data-v-817d209a]{background:#f5f5f5}.qualification-image[data-v-817d209a]{width:100%;height:100%}.upload-icon[data-v-817d209a]{width:100rpx;border-radius:20rpx}.delete-btn[data-v-817d209a]{position:absolute;top:8rpx;right:8rpx;width:36rpx;height:36rpx;background-color:rgba(0,0,0,.6);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:24rpx;font-weight:700}.safe-bottom[data-v-817d209a]{height:150rpx}.date-picker-popup[data-v-817d209a]{height:500rpx;background:#fff}.picker-header[data-v-817d209a]{display:flex;justify-content:space-between;align-items:center;padding:20rpx 30rpx;border-bottom:1rpx solid #f0f0f0}.picker-cancel[data-v-817d209a], .picker-confirm[data-v-817d209a]{font-size:32rpx;color:#666}.picker-title[data-v-817d209a]{font-size:36rpx;color:#333;font-weight:500}.picker-view[data-v-817d209a]{height:400rpx}.picker-item[data-v-817d209a]{line-height:68rpx;text-align:center;font-size:32rpx}',""]),t.exports=e},"9dd0":function(t,e,i){"use strict";var a=i("0374"),n=i.n(a);n.a},"9ddb":function(t,e,i){"use strict";i.r(e);var a=i("5a21"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"9de9":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v(t._$g(4,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("v-uni-image",{staticClass:t._$g(7,"sc"),attrs:{src:"/static/images/gohome_location.png",_i:7}}),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("v-uni-text",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v(t._$g(10,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v(t._$g(11,"t0-0"))])],1),i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v(t._$g(12,"t0-0")+t._$g(12,"t0-1"))])],1)],1),i("v-uni-image",{staticClass:t._$g(13,"sc"),attrs:{src:"/static/images/boder_icon.png",mode:"aspectFill",_i:13}}),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("v-uni-image",{staticClass:t._$g(15,"sc"),attrs:{src:t._$g(15,"a-src"),mode:"aspectFill",_i:15}}),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v(t._$g(17,"t0-0"))]),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}})],1)],1)],1),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._$g(20,"i")?i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("v-uni-text",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v("\u9884\u7ea6\u4fe1\u606f")]),i("uni-view",{attrs:{_i:22}},[i("v-uni-text",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v(t._$g(23,"t0-0"))])],1)],1):t._e(),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[t._$g(25,"i")?i("v-uni-image",{staticClass:t._$g(25,"sc"),attrs:{src:t._$g(25,"a-src"),mode:"aspectFill",_i:25}}):t._e(),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v(t._$g(27,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[t._v("\xa5"+t._$g(28,"t0-0"))])],1),i("v-uni-text",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v("\xd71")])],1),i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[i("v-uni-text",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[t._v("\u5b9e\u9645\u652f\u4ed8\u91d1\u989d\uff1a")]),i("v-uni-text",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v("\uffe5"+t._$g(32,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[i("v-uni-text",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[t._v("\u8ba2\u5355\u4fe1\u606f")]),i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[i("v-uni-text",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[t._v("\u670d\u52a1\u7801")]),i("v-uni-text",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v(t._$g(37,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[i("v-uni-text",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v("\u8ba2\u5355\u7f16\u53f7")]),i("v-uni-text",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[t._v(t._$g(40,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[i("v-uni-text",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[t._v("\u4e0b\u5355\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(43,"sc"),attrs:{_i:43}},[t._v(t._$g(43,"t0-0"))])],1),t._$g(44,"i")?i("uni-view",{staticClass:t._$g(44,"sc"),attrs:{_i:44}},[i("v-uni-text",{staticClass:t._$g(45,"sc"),attrs:{_i:45}},[t._v("\u5f00\u59cb\u670d\u52a1\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[t._v(t._$g(46,"t0-0"))])],1):t._e(),t._$g(47,"i")?i("uni-view",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[i("v-uni-text",{staticClass:t._$g(48,"sc"),attrs:{_i:48}},[t._v("\u670d\u52a1\u5b8c\u6210\u65f6\u95f4")]),i("v-uni-text",{staticClass:t._$g(49,"sc"),attrs:{_i:49}},[t._v(t._$g(49,"t0-0"))])],1):t._e()],1)],1),i("uni-view",{staticClass:t._$g(50,"sc"),attrs:{_i:50}},[i("uni-view",{staticClass:t._$g(51,"sc"),attrs:{_i:51}}),t._$g(52,"i")?i("uni-view",{staticClass:t._$g(52,"sc"),attrs:{_i:52},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(53,"sc"),attrs:{_i:53}},[t._v("\u53d6\u6d88\u8ba2\u5355")])],1):t._e(),t._$g(54,"i")?i("uni-view",{staticClass:t._$g(54,"sc"),attrs:{_i:54},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(55,"sc"),attrs:{_i:55}},[t._v("\u7533\u8bf7\u9000\u6b3e")])],1):t._e(),t._$g(56,"i")?i("uni-view",{staticClass:t._$g(56,"sc"),attrs:{_i:56},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(57,"sc"),attrs:{_i:57}},[t._v("\u7acb\u5373\u652f\u4ed8")])],1):t._e(),t._$g(58,"i")?i("uni-view",{staticClass:t._$g(58,"sc"),attrs:{_i:58},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(59,"sc"),attrs:{_i:59}},[t._v("\u8bc4\u4ef7")])],1):t._e(),t._$g(60,"i")?i("uni-view",{staticClass:t._$g(60,"sc"),attrs:{_i:60},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(61,"sc"),attrs:{_i:61}},[t._v("\u518d\u6765\u4e00\u5355")])],1):t._e()],1),i("uni-view",{staticClass:t._$g(62,"sc"),class:t._$g(62,"c"),attrs:{_i:62}},[i("uni-view",{staticClass:t._$g(63,"sc"),attrs:{_i:63}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(64,"sc"),attrs:{_i:64}},[t._v("\u5f53\u60a8\u9700\u8981\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0\u5ba2\u670d\u7684\u65f6\u5019\uff0c\u9700\u8981\u83b7\u53d6\u62e8\u6253\u7535\u8bdd\u6743\u9650\u3002")])],1)],1)},r=[]},"9e2a":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.uv-border[data-v-040d8d36]{border-width:.5px!important;border-color:#dadbde!important;border-style:solid}.uv-border-bottom[data-v-040d8d36]{border-bottom-width:.5px!important;border-color:#dadbde!important;border-bottom-style:solid}uni-view[data-v-040d8d36], uni-scroll-view[data-v-040d8d36], uni-swiper-item[data-v-040d8d36]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-input[data-v-040d8d36]{display:flex;flex-direction:row;align-items:center;justify-content:space-between;flex:1}.uv-input--radius[data-v-040d8d36], .uv-input--square[data-v-040d8d36]{border-radius:4px}.uv-input--no-radius[data-v-040d8d36]{border-radius:0}.uv-input--circle[data-v-040d8d36]{border-radius:100px}.uv-input__content[data-v-040d8d36]{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.uv-input__content__field-wrapper[data-v-040d8d36]{position:relative;display:flex;flex-direction:row;margin:0;flex:1}.uv-input__content__field-wrapper__field[data-v-040d8d36]{line-height:26px;text-align:left;color:#303133;height:24px;font-size:15px;flex:1}.uv-input__content__clear[data-v-040d8d36]{width:20px;height:20px;border-radius:100px;background-color:#c6c7cb;display:flex;flex-direction:row;align-items:center;justify-content:center;-webkit-transform:scale(.82);transform:scale(.82);margin-left:15px}.uv-input__content__subfix-icon[data-v-040d8d36]{margin-left:4px}.uv-input__content__prefix-icon[data-v-040d8d36]{margin-right:4px}',""]),t.exports=e},"9e5b":function(t,e,i){"use strict";i.r(e);var a=i("494e"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},"9e7f":function(t,e,i){t.exports=i.p+"static/Font/DIN-Regular.otf"},"9ede":function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.serve-card[data-v-afc604b0]{width:690rpx;padding:20rpx 0;background-color:#fff;border-radius:20rpx;display:flex;align-items:center}.serve-card .serve-card-left[data-v-afc604b0]{width:32rpx;height:32rpx;border:4rpx solid #cdcfd2;border-radius:40rpx;margin-left:30rpx;margin-right:24rpx}.serve-card .serve-card-left__img[data-v-afc604b0]{width:40rpx;height:40rpx;margin-left:30rpx;margin-right:24rpx}.serve-card .serve-card-right[data-v-afc604b0]{flex:1;display:flex}.serve-card .serve-card-right__img[data-v-afc604b0]{width:172rpx;height:172rpx;border-radius:24rpx;margin-right:30rpx;flex-shrink:0}.serve-card .serve-card-right__content[data-v-afc604b0]{display:flex;flex-wrap:wrap;align-content:space-between}.serve-card .serve-card-right__content__title[data-v-afc604b0]{width:324rpx;font-family:PingFangSC,PingFang SC;font-weight:500;font-size:30rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis}.serve-card .serve-card-right__content__price[data-v-afc604b0]{margin-top:18rpx;font-weight:400;font-size:26rpx;color:#666;line-height:34rpx;text-align:left;font-style:normal}.serve-card .serve-card-right__content__sales[data-v-afc604b0]{width:100%;font-weight:400;font-size:26rpx;color:#999;line-height:34rpx;text-align:left;font-style:normal}',""]),t.exports=e},"9fbc":function(t,e,i){"use strict";i.r(e);var a=i("bd4d"),n=i("d926");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("c0d0");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"dacc7b96",null,!1,a["a"],void 0);e["default"]=o.exports},"9fd8":function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"OrderCard",props:["dataItem","typeId","showState"],data:function(){return{wxsProps:{}}},components:{}}},"9fe0":function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("upload-app-vue",{ref:"uploadApp",attrs:{_i:1}}),i("custom-navbar",{attrs:{_i:2}}),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("v-uni-image",{staticClass:t._$g(7,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/82abd15d-eb6f-423c-be25-4f71d32dfcbb.png",_i:7}}),i("v-uni-text",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v("\u4fee\u6539\u5bc6\u7801")])],1),i("v-uni-image",{staticClass:t._$g(9,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/34d8b914-58bd-46d7-9d88-08ed446f26c4.png",mode:"aspectFit",_i:9}})],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("v-uni-image",{staticClass:t._$g(12,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/e42a5659-88e1-47dd-82a9-f0d08fcd7382.png",_i:12}}),i("v-uni-text",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v("\u9690\u79c1\u653f\u7b56")])],1),i("v-uni-image",{staticClass:t._$g(14,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/34d8b914-58bd-46d7-9d88-08ed446f26c4.png",mode:"aspectFit",_i:14}})],1),i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("v-uni-image",{staticClass:t._$g(17,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/5278dec3-c0b0-44c3-b099-e0d9253b8afe.png",_i:17}}),i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\u7528\u6237\u534f\u8bae")])],1),i("v-uni-image",{staticClass:t._$g(19,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/34d8b914-58bd-46d7-9d88-08ed446f26c4.png",mode:"aspectFit",_i:19}})],1),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("v-uni-image",{staticClass:t._$g(22,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/d12d5407-0db9-4f3a-96c9-7df4def364cd.png",_i:22}}),i("v-uni-text",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v("\u6ce8\u9500\u8d26\u53f7")])],1),i("v-uni-image",{staticClass:t._$g(24,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/34d8b914-58bd-46d7-9d88-08ed446f26c4.png",mode:"aspectFit",_i:24}})],1),i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[i("v-uni-image",{staticClass:t._$g(27,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/94382bb8-2819-4710-aa65-f615e49c7cf6.png",_i:27}}),i("v-uni-text",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[t._v("\u6d88\u606f\u901a\u77e5")])],1),i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[i("v-uni-text",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[t._v("\u8ba2\u5355\u3001\u4f18\u60e0\u901a\u77e5\u7b49")]),i("v-uni-image",{staticClass:t._$g(31,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/34d8b914-58bd-46d7-9d88-08ed446f26c4.png",mode:"aspectFit",_i:31}})],1)],1),i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[i("v-uni-image",{staticClass:t._$g(34,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/5b7919c1-14a8-4b87-ba06-86cbb413228b.png",_i:34}}),i("v-uni-text",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[t._v("\u6e05\u9664\u7f13\u5b58")])],1),i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[i("v-uni-text",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v(t._$g(37,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(38,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/34d8b914-58bd-46d7-9d88-08ed446f26c4.png",mode:"aspectFit",_i:38}})],1)],1),i("uni-view",{staticClass:t._$g(39,"sc"),attrs:{_i:39},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[i("v-uni-image",{staticClass:t._$g(41,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/c6f188af-abbf-47be-b1b9-c6622470eadd.png",_i:41}}),i("v-uni-text",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[t._v("\u68c0\u67e5\u66f4\u65b0")])],1),i("uni-view",{staticClass:t._$g(43,"sc"),attrs:{_i:43}},[i("v-uni-text",{staticClass:t._$g(44,"sc"),attrs:{_i:44}},[t._v(t._$g(44,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(45,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/34d8b914-58bd-46d7-9d88-08ed446f26c4.png",mode:"aspectFit",_i:45}})],1)],1)],1),i("uni-view",{staticClass:t._$g(46,"sc"),attrs:{_i:46},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[t._v("\u9000\u51fa\u767b\u5f55")])],1)],1)],1)},r=[]},"9ffd":function(t,e,i){var a=i("5095");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("2725b0cc",a,!0,{sourceMap:!1,shadowMode:!1})},a000:function(t,e,i){var a=i("5079");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("aab3c1e6",a,!0,{sourceMap:!1,shadowMode:!1})},a018:function(t,e,i){t.exports=i.p+"static/images/icons/tip_bg.png"},a034:function(t,e,i){"use strict";i.r(e);var a=i("4212"),n=i("6c54");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("cd77");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},a03e:function(t,e,i){"use strict";i.r(e);var a=i("ee9c"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},a074:function(t,e,i){var a=i("1ae2");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("4abb0e38",a,!0,{sourceMap:!1,shadowMode:!1})},a0c7:function(t,e,i){"use strict";var a=i("1543"),n=i.n(a);n.a},a16b:function(t,e,i){var a=i("18c5");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("09badd54",a,!0,{sourceMap:!1,shadowMode:!1})},a16b6:function(t,e,i){"use strict";i.r(e);var a=i("b0f0"),n=i("c7ca");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("7faf");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},a197:function(t,e,i){"use strict";var a=i("96f6"),n=i.n(a);n.a},a1a1:function(t,e,i){"use strict";i.r(e);var a=i("6670"),n=i("fe87");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("de91");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"19e57cde",null,!1,a["a"],void 0);e["default"]=o.exports},a1a9:function(t,e,i){"use strict";i.r(e);var a=i("6bfb"),n=i("f7c3");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("e5cc");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"0ab80f89",null,!1,a["a"],void 0);e["default"]=o.exports},a1fb:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={props:["evaluateObj","isAllImg"],data:function(){return{wxsProps:{}}},components:{}}},a202:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u7b2c\u4e00\u6b65\uff1a\u5148\u83b7\u53d6\u624b\u673a\u9a8c\u8bc1\u7801")]),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u7ed1\u5b9a\u7684\u7528\u6237\u624b\u673a")]),i("v-uni-text",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v("133****4653")])],1),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u9a8c\u8bc1\u7801")]),i("v-uni-input",{staticClass:t._$g(10,"sc"),attrs:{type:"number",placeholder:"\u8bf7\u8f93\u5165\u9a8c\u8bc1\u7801","placeholder-class":"input-placeholder",maxlength:"6",_i:10},model:{value:t._$g(10,"v-model"),callback:function(e){t.$handleVModelEvent(10,e)},expression:"verifyCode"}}),i("v-uni-text",{staticClass:t._$g(11,"sc"),class:t._$g(11,"c"),attrs:{_i:11},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(t._$g(11,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("v-uni-text",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v("\u7b2c\u4e8c\u6b65\uff1a\u4e0a\u4f20"+t._$g(13,"t0-0")+"\u6536\u6b3e\u4e8c\u7ef4\u7801")]),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g(15,"i")?i("v-uni-image",{staticClass:t._$g(15,"sc"),attrs:{src:t._$g(15,"a-src"),mode:"aspectFit",_i:15}}):i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v("+")])],1)],1)],1),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("v-uni-text",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v("\u7b2c\u4e09\u6b65\uff1a\u586b\u5199"+t._$g(19,"t0-0")+"\u771f\u5b9e\u59d3\u540d")]),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("v-uni-text",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v("\u771f\u5b9e\u59d3\u540d")]),i("v-uni-input",{staticClass:t._$g(22,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u771f\u5b9e\u59d3\u540d","placeholder-class":"input-placeholder",_i:22},model:{value:t._$g(22,"v-model"),callback:function(e){t.$handleVModelEvent(22,e)},expression:"realName"}})],1)],1)],1),i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[i("uni-view",{staticClass:t._$g(24,"sc"),class:t._$g(24,"c"),attrs:{_i:24},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v("\u63d0\u4ea4")])],1)],1)],1)},r=[]},a20f:function(t,e,i){"use strict";i.r(e);var a=i("5177"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},a211:function(t,e,i){"use strict";i.r(e);var a=i("5c9a"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},a21c:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:"/static/images/success_icon.png",mode:"aspectFit",_i:3}}),i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u652f\u4ed8\u6210\u529f")])],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u67e5\u770b\u8ba2\u5355")])],1)],1)},r=[]},a239:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,selectTimePage:i("47c6").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),t._$g(2,"i")?i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:"/static/images/gohome_location.png",mode:"aspectFit",_i:3}}),t._$g(4,"i")?i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u8bf7\u9009\u62e9\u5230\u5bb6\u5730\u5740")]):i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("v-uni-text",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v(t._$g(7,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(t._$g(8,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v(t._$g(9,"t0-0")+t._$g(9,"t0-1")+" ")])],1),i("v-uni-image",{staticClass:t._$g(10,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:10}})],1):t._e(),t._$g(11,"i")?i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v("\u5230\u5bb6\u65f6\u95f4")]),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("v-uni-text",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v(t._$g(15,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(16,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:16}})],1)],1),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v(t._$g(18,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v(t._$g(19,"t0-0"))])],1)],1):t._e(),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}}),i("v-uni-text",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[t._v("\u9884\u7ea6\u670d\u52a1")])],1),i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g(25,"i")?i("v-uni-image",{staticClass:t._$g(25,"sc"),attrs:{src:t._$g(25,"a-src"),mode:"aspectFill",_i:25}}):t._e(),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v(t._$g(27,"t0-0"))]),i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[i("v-uni-text",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v("\u670d\u52a1\u6570\u91cf")]),i("v-uni-text",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[t._v("x1")])],1)],1)],1),i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[i("v-uni-text",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v("\u539f\u59cb\u4ef7\u683c:")]),i("v-uni-text",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[t._v("\xa5"+t._$g(33,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[i("v-uni-text",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[t._v("\u8ba2\u5355\u5c0f\u8ba1:")]),i("v-uni-text",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[t._v("\xa5"+t._$g(36,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[i("v-uni-text",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v("\xa5"+t._$g(39,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[t._v("\u8ba2\u5355\u5c0f\u8ba1")])],1),i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u63d0\u4ea4\u8ba2\u5355")])],1),i("select-time-page",{ref:"selecTime",attrs:{_i:42},on:{sureTime:function(e){return t.$handleViewEvent(e)},closeTime:function(e){return t.$handleViewEvent(e)}}})],1)},r=[]},a24d:function(t,e,i){var a=i("a93e");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("6910f3f3",a,!0,{sourceMap:!1,shadowMode:!1})},a255:function(t,e,i){"use strict";i.r(e);var a=i("9fd8"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},a2d4:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g(1,"i")?i("uni-view",{attrs:{_i:1}},[t._$g(2,"i")?i("v-uni-image",{staticClass:t._$g(2,"sc"),attrs:{src:"/static/images/shop/pintuan/radioYes.png",mode:"aspectFill",_i:2}}):i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}})],1):t._e(),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:t._$g(5,"a-src"),mode:"aspectFill",_i:5}}),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(t._$g(8,"t0-0"))]),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("v-uni-text",{staticStyle:{color:"#E8101E","font-weight":"500"},attrs:{_i:10}},[t._v("\xa5"+t._$g(10,"t0-0")+" ")]),t._v(" "+t._$g(9,"t1-0")+"| "+t._$g(9,"t1-1")+"\u5206\u949f ")],1)],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v(" \u9500\u91cf"+t._$g(11,"t0-0")+" ")])],1)],1)],1)},n=[]},a2dd:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:"/static/images/success_icon.png",mode:"aspectFit",_i:3}}),i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u652f\u4ed8\u6210\u529f")])],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u67e5\u770b\u8ba2\u5355")])],1)],1)},r=[]},a3cd:function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("7536"),s=i("2a89"),o=i("304a");e=a(!1);var c=n(r),l=n(s),d=n(o);e.push([t.i,'body{padding-bottom:120rpx}.form-content{padding:32rpx 0;box-sizing:border-box}.section-title{display:flex;align-items:center;margin-bottom:32rpx;margin-left:24rpx}.title-bar{width:6rpx;height:48rpx;background-color:#e8101e;margin-right:16rpx;border-radius:3rpx}.section-title uni-text{font-size:36rpx;color:#1d2129;font-weight:400}.form-item{border-radius:20rpx;padding:24rpx}.label{min-width:200rpx;display:block;font-size:28rpx;color:#333;font-weight:500}.required::before{content:"*";color:red;margin-right:4rpx}.placeholder{color:#999}.upload-box{flex:1;margin-bottom:32rpx;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;margin-top:16rpx}.upload-img{width:120rpx;height:120rpx}.upload-camera{width:446rpx;height:298rpx;display:flex;align-items:center;justify-content:center;border-radius:20rpx;overflow:hidden;background-color:#f8f9fd;background-size:cover;background-repeat:no-repeat;padding:40rpx;box-sizing:border-box}.img1{background-image:url('+c+")}.img2{background-image:url("+l+")}.img3,\n\t.img4{background-image:url("+d+')}.camera-icon{width:124rpx;height:124rpx}.preview-image{width:400rpx;height:220rpx}.avatar-image{width:120rpx;height:120rpx;border-radius:20rpx}.upload-tip{display:inline-block;width:560rpx;font-size:24rpx;color:#666;line-height:1.5;text-align:center;padding-left:46rpx;box-sizing:border-box}.form-item-one{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;padding:24rpx;border-radius:20rpx}.form-item-two{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;padding:24rpx;border-radius:20rpx}.input{font-size:28rpx;color:#333;padding-left:20rpx}.form-item-tit{padding-bottom:24rpx;border-bottom:1rpx solid rgba(0,0,0,.05)}.form-upimg{display:flex;flex-flow:column;justify-content:center;align-items:center}.form-upimg .label{color:#999}.form-upimgs{padding-bottom:24rpx;border-radius:20rpx}.picker-content{display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center}.textarea-input{font-size:28rpx;flex:1;height:190rpx;font-size:28rpx;color:#333}.picker-value{font-size:28rpx;color:#333}.invite-tip{display:inline-block;font-size:20rpx;color:#999;padding:24rpx}.service-promise{padding:12rpx 48rpx}.promise-title{font-size:28rpx;color:#e8101e;font-weight:400;margin-bottom:24rpx;text-align:center}.promise-item{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;margin-bottom:16rpx}.dot{width:12rpx;height:12rpx;border-radius:6rpx;background-color:#e8101e;margin-right:24rpx}.promise-text{flex:1;font-size:20rpx;color:#999;line-height:1.6}.form-item-data{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:flex-start;padding:24rpx;border-radius:20rpx}.popup{position:fixed;left:0;right:0;bottom:0;z-index:999;visibility:hidden;opacity:0;transition:all .3s ease}.popup.show{visibility:visible;opacity:1}.popup-mask{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.popup-content{position:relative;background-color:#fff;border-radius:24rpx 24rpx 0 0;padding:32rpx;-webkit-transform:translateY(100%);transform:translateY(100%);transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.popup.show .popup-content{-webkit-transform:translateY(0);transform:translateY(0)}.popup-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20rpx}.popup-title{font-size:32rpx;color:#333;font-weight:500}.popup-close{font-size:40rpx;color:#999;padding:16rpx}.popup-body{max-height:600rpx;overflow-y:auto}.checkbox-list{display:flex;flex-wrap:wrap}.checkbox-item{width:50%;padding:14rpx;display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center}.checkbox{width:40rpx;height:40rpx;border:2rpx solid #ddd;border-radius:8rpx;display:flex;align-items:center;justify-content:center;margin-right:16rpx}.checkbox.checked{background-color:#e8101e;border-color:#e8101e}.check-icon{color:#fff;font-size:24rpx}.checkbox-label{font-size:28rpx;color:#333}.popup-footer{display:flex;margin-top:32rpx}.popup-btn{flex:1;height:88rpx;border-radius:44rpx;display:flex;align-items:center;justify-content:center;margin:0 16rpx}.popup-btn.cancel{background-color:#f5f5f5}.popup-btn.confirm{background:linear-gradient(90deg,#e8101e,#ff618f)}.popup-btn .btn-text{font-size:32rpx;font-weight:500}.popup-btn.cancel .btn-text{color:#666}.popup-btn.confirm .btn-text{color:#fff}.region-popup{height:80vh;display:flex;flex-direction:column}.region-tabs{display:flex;border-bottom:1rpx solid #eee;margin-bottom:20rpx}.region-tab{flex:1;text-align:center;padding:20rpx 0;font-size:28rpx;color:#666;position:relative}.region-tab.active{color:#e8101e;font-weight:500}.region-tab.active::after{content:"";position:absolute;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:40rpx;height:4rpx;background-color:#e8101e;border-radius:2rpx}.region-body{flex:1;overflow:hidden}.region-scroll{height:100%}.picker-scroll{height:400rpx}.picker-item{height:68rpx;line-height:68rpx;text-align:center}.region-item{display:flex;align-items:center;justify-content:space-between;padding:24rpx 0;border-bottom:1rpx solid #eee}.region-item.checkbox-item{padding:20rpx 0;width:100%;justify-content:flex-start!important;align-items:center!important}.cancel-text{font-size:32rpx;color:#666}.title{font-size:36rpx;color:#333;font-weight:500}.confirm-text{font-size:32rpx;color:#e8101e;font-weight:500}.time-range{display:flex;align-items:center;justify-content:center;padding:32rpx;background:#f8f9fc}.time-block{flex:1;display:flex;flex-direction:column;align-items:center;position:relative;background:#fff;border-radius:12rpx;padding:24rpx 0;transition:all .3s ease}.time-block.active{background:#ecf2ff}.time-label{font-size:26rpx;color:#999;margin-top:8rpx}.time-value{font-size:40rpx;color:#333;font-weight:500}.time-block.active .time-value{color:#e8101e}.time-separator{font-size:28rpx;color:#999;margin:0 24rpx}.section-card{padding:24rpx;border-radius:20rpx}.section-subtitle{display:inline-block;font-size:20rpx;color:#999;font-weight:400;margin-bottom:24rpx}.upload-grid{display:flex;flex-wrap:wrap;margin-top:16rpx}.upload-item{width:120rpx;height:120rpx;background-color:#e8e8e8;border-radius:20rpx;margin:8rpx}.upload-icon{width:120rpx;height:120rpx;border:20rpx}.camera-icon{font-size:56rpx}.upload-image{width:120rpx;height:120rpx;border:20rpx;margin:8rpx;position:relative}.bottom-fixed{height:120rpx;position:fixed;left:0;bottom:0;right:0;background-color:#fff;display:flex;flex-flow:column nowrap;justify-content:center;align-items:center}.agree{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}.agree-btn{width:32rpx;height:32rpx;margin-right:20rpx}.agree-tip{font-size:20rpx;font-weight:400;color:#666}.fixed-btn{width:630rpx}\n.permission.transform{top:calc(var(--status-bar-height) + 108rpx + 20rpx);opacity:1;visibility:visible}\n\n',""]),t.exports=e},a3fc:function(t,e,i){var a=i("4b72");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("4d5ad35c",a,!0,{sourceMap:!1,shadowMode:!1})},a43d:function(t,e,i){"use strict";i.r(e);var a=i("bcde"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},a44c:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("e26b")),r={data:function(){return{wxsProps:{}}},components:{serviceCodeInput:n.default}};e.default=r},a465:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._v(t._$g(2,"t0-0"))]),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:"/static/images/icons/location_icon.png",mode:"aspectFit",_i:4}}),t._v(" "+t._$g(3,"t1-0")+"km ")],1)],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("v-uni-image",{staticClass:t._$g(7,"sc"),attrs:{src:t._$g(7,"a-src"),mode:"aspectFill",_i:7}})],1),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u4ef7\u683c\uff1a"+t._$g(9,"t0-0")+" \u5143/10\u5206\u949f")]),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u670d\u52a1\u8303\u56f4:"+t._$g(10,"t0-0")+" "+t._$g(10,"t0-1"))]),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u79df\u5de5\u4f4d ")])],1)],1)],1)],1)},n=[]},a466:function(t,e,i){var a=i("d7d5");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("250584ce",a,!0,{sourceMap:!1,shadowMode:!1})},a4bd:function(t,e,i){var a=i("d53c");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("d63d9fa6",a,!0,{sourceMap:!1,shadowMode:!1})},a514:function(t,e,i){"use strict";var a=i("b995"),n=i.n(a);n.a},a51c:function(t,e,i){t.exports=i.p+"assets/uvicons.f0fbf8a0.ttf"},a533:function(t,e,i){"use strict";i.r(e);var a=i("ae8c"),n=i("3d39");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("1c77");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},a546:function(t,e,i){"use strict";i.r(e);var a=i("e766"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},a572:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("v-uni-scroll-view",{staticClass:t._$g(2,"sc"),attrs:{"scroll-x":!0,"show-scrollbar":!1,_i:2},on:{touchmove:function(e){return t.$handleViewEvent(e,{prevent:!0,stop:!0})}}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},t._l(t._$g(4,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("4-"+r,"sc"),class:t._$g("4-"+r,"c"),attrs:{_i:"4-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r}},[t._v(t._$g("5-"+r,"t0-0"))]),t._$g("6-"+r,"i")?i("v-uni-image",{staticClass:t._$g("6-"+r,"sc"),attrs:{src:t._$g("6-"+r,"a-src"),mode:"aspectFill",_i:"6-"+r}}):t._e()],1)})),1)],1)],1)],1)},n=[]},a587:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},a5b9:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"StepTab",props:["currentStep","identity"],data:function(){return{wxsProps:{}}},components:{}}},a626:function(t,e,i){"use strict";var a=i("1426"),n=i.n(a);n.a},a646:function(t,e,i){"use strict";i.r(e);var a=i("98b4"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},a65a:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("6473")),r=a(i("5443")),s=a(i("d5b0")),o={data:function(){return{wxsProps:{}}},components:{CustomNavbar:n.default,tipsPopup2:r.default,TabBar:s.default}};e.default=o},a67f:function(t,e,i){"use strict";i.r(e);var a=i("96e7"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},a684:function(t,e,i){"use strict";var a=i("a000"),n=i.n(a);n.a},a69a:function(t,e,i){"use strict";var a=i("d0ad"),n=i.n(a);n.a},a6d8:function(t,e,i){"use strict";i.r(e);var a=i("c665"),n=i("6204");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("0aa1");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"23632d28",null,!1,a["a"],void 0);e["default"]=o.exports},a728:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"lime-painter-image",props:["id","css","src"],data:function(){return{wxsProps:{}}},components:{}}},a763:function(t,e,i){var a=i("36c5");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("5bd2740e",a,!0,{sourceMap:!1,shadowMode:!1})},a80c:function(t,e,i){var a=i("7c79");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("7028fa46",a,!0,{sourceMap:!1,shadowMode:!1})},a818:function(t,e,i){"use strict";i.r(e);var a=i("0bcc"),n=i("41c8");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("a69a");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},a868:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("0b4e")),r=a(i("5443")),s={data:function(){return{wxsProps:{}}},components:{listCard:n.default,tipsPopup:r.default}};e.default=s},a883:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"buyManHour",data:function(){return{wxsProps:{}}},components:{}}},a888:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.add-service[data-v-02271967]{padding:24rpx 24rpx 0;box-sizing:border-box}.form-container[data-v-02271967]{margin-top:20rpx}.form-item[data-v-02271967]{background-color:#fff;padding:24rpx;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;box-sizing:border-box;border-radius:10rpx;margin-bottom:24rpx}.shopsale-box[data-v-02271967]{flex-flow:column;justify-content:space-between;align-items:space-between}.shopsale-change[data-v-02271967]{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;margin-top:24rpx}.shopsale-option[data-v-02271967]{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}.shopsale-option[data-v-02271967]:last-child{margin-left:220rpx}.option-text[data-v-02271967]{padding-left:16rpx}.form-item-up[data-v-02271967]{background-color:#fff;padding:24rpx;display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:flex-start;box-sizing:border-box;border-radius:10rpx;margin-bottom:24rpx;gap:24rpx}.form-label[data-v-02271967]{font-weight:500;font-size:32rpx;color:#333}.form-input[data-v-02271967]{flex:1;height:40rpx;font-size:28rpx;color:#333;margin-left:32rpx}.form-right[data-v-02271967]{display:flex;justify-content:space-between;align-items:center}.form-value[data-v-02271967]{font-size:28rpx;color:#333;margin-right:16rpx;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:400rpx;text-align:right}.placeholder[data-v-02271967]{color:#999}.textarea-item[data-v-02271967]{padding-bottom:30rpx}.form-textarea[data-v-02271967]{padding:32rpx 0;flex:1;height:198rpx;font-size:28rpx;color:#333;line-height:1.5;margin-left:32rpx}.upload-item[data-v-02271967]{padding-bottom:30rpx}.upload-tip[data-v-02271967]{font-size:24rpx;color:#999;margin-left:10rpx}.upload-content[data-v-02271967]{margin-top:20rpx;position:relative}.progress-box[data-v-02271967]{width:204rpx;height:204rpx;background-color:rgba(0,0,0,.5);position:absolute;top:0;left:0;right:0;z-index:99;display:flex;flex-flow:column nowrap;justify-content:center;align-items:center}.progress-text[data-v-02271967]{font-size:42rpx;color:#fff;font-weight:500}.progress-lable[data-v-02271967]{font-size:28rpx;color:#fff}.progress-box uni-progress[data-v-02271967]{position:absolute;left:0;right:0;bottom:0}.video-preview[data-v-02271967],\r\n.image-preview[data-v-02271967],\r\n.upload-btn[data-v-02271967]{width:200rpx;height:200rpx;margin-right:10rpx;margin-bottom:20rpx;position:relative}.preview-video[data-v-02271967],\r\n.preview-image[data-v-02271967]{width:200rpx;height:200rpx;border-radius:8rpx}.upload-btn[data-v-02271967]{border:2rpx dashed #ddd;border-radius:8rpx;display:flex;justify-content:center;align-items:center}.plus-icon[data-v-02271967]{font-size:60rpx;color:#999}.delete-btn[data-v-02271967]{position:absolute;top:-20rpx;right:-20rpx;width:40rpx;height:40rpx;background-color:rgba(0,0,0,.5);border-radius:50%;color:#fff;display:flex;justify-content:center;align-items:center;font-size:32rpx}.bottom-buttons[data-v-02271967]{height:100rpx;padding:40rpx 0 64rpx;box-sizing:border-box;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center}.btn-draft[data-v-02271967],\r\n.btn-submit[data-v-02271967]{width:334rpx;height:78rpx;line-height:78rpx;text-align:center;font-size:28rpx;border-radius:78rpx}.btn-draft[data-v-02271967]{background-color:#fff;color:#e8101e;border:2rpx solid #e8101e;box-sizing:border-box}.btn-submit[data-v-02271967]{background-color:#e8101e;color:#fff}.form-step[data-v-02271967]{background-color:#fff;margin-bottom:24rpx}.form-step .form-item[data-v-02271967]{margin-bottom:0}.step[data-v-02271967]{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;padding:0 24rpx 24rpx}.step-inp[data-v-02271967]{flex:1;font-size:28rpx;color:#333;margin-left:38rpx;padding:0 24rpx;background-color:hsla(0,0%,90.2%,.5)}.step-textarea[data-v-02271967]{font-size:24rpx;flex:1;height:70rpx;border-radius:6rpx;margin-left:38rpx;padding:24rpx;background-color:hsla(0,0%,90.2%,.5)}.picker-trigger[data-v-02271967]{display:flex;align-items:center;justify-content:space-between;padding:24rpx 32rpx;background-color:#fff;border-radius:12rpx;margin-bottom:24rpx}.picker-label[data-v-02271967]{font-size:28rpx;color:#333}.picker-value[data-v-02271967]{font-size:28rpx;color:#666}.picker-arrow[data-v-02271967]{width:32rpx;height:32rpx;margin-left:16rpx}.delete-icon[data-v-02271967]{width:32rpx;height:32rpx;margin-left:24rpx}.form-detail[data-v-02271967]{position:relative}.detail-cont[data-v-02271967]{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;width:170rpx;height:210rpx;position:absolute;top:50rpx;right:-24rpx;background-color:#fff;padding:20rpx;border-radius:20rpx;box-shadow:0 8rpx 16rpx 0 rgba(0,0,0,.5);z-index:999}.detail-item[data-v-02271967]{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;padding:12rpx 0;border-bottom:1rpx solid hsla(0,0%,90.2%,.5)}.lable-view[data-v-02271967]{width:120rpx}.required[data-v-02271967]::before{content:"*";color:red;margin-right:4rpx}.step-inp[data-v-02271967],\r\n.form-input[data-v-02271967]{height:60rpx}.mask[data-v-02271967]{position:fixed;top:0;right:0;left:0;width:100vw;height:100vh;z-index:99}\n.form-input[data-v-02271967]{height:90rpx}.permission.transform[data-v-02271967]{top:calc(var(--status-bar-height) + 88rpx + 30rpx);opacity:1;visibility:visible}\n.redTip[data-v-02271967]{color:#e8101e;font-size:24rpx;margin-left:10rpx}.content_box[data-v-02271967]{display:flex;align-items:center;gap:10rpx}.form-input[data-v-02271967]{width:100%}.form-input-box[data-v-02271967]{border-radius:10rpx;border:1rpx solid #e5e5e5;width:100%}.unit[data-v-02271967]{font-size:32rpx;color:#333;flex:1}.small_input[data-v-02271967]{width:320rpx!important}',""]),t.exports=e},a938:function(t,e,i){var a=i("ddd8");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("e731ac8e",a,!0,{sourceMap:!1,shadowMode:!1})},a93c:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".popup-picker[data-v-8acedda2]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:999}.popup-mask[data-v-8acedda2]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);opacity:0;transition:opacity .3s ease}.popup-mask.show[data-v-8acedda2]{opacity:1}.popup-content[data-v-8acedda2]{position:fixed;left:0;right:0;bottom:0;background-color:#fff;border-radius:24rpx 24rpx 0 0;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0;transition:all .3s ease;visibility:hidden}.popup-content.show[data-v-8acedda2]{-webkit-transform:translateY(0);transform:translateY(0);opacity:1;visibility:visible}.popup-header[data-v-8acedda2]{display:flex;justify-content:space-between;align-items:center;height:88rpx;padding:0 32rpx;border-bottom:1rpx solid #eee}.cancel[data-v-8acedda2]{font-size:32rpx;color:#999}.title[data-v-8acedda2]{font-size:32rpx;color:#333;font-weight:500}.confirm[data-v-8acedda2]{font-size:32rpx;color:#4080ff}.picker-view[data-v-8acedda2]{width:100%;height:480rpx}.picker-item[data-v-8acedda2]{line-height:68rpx;text-align:center;font-size:32rpx;color:#333}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n",""]),t.exports=e},a93e:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";uni-view[data-v-7290c65e], uni-scroll-view[data-v-7290c65e], uni-swiper-item[data-v-7290c65e]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-count-down__text[data-v-7290c65e]{color:#606266;font-size:15px;line-height:22px}',""]),t.exports=e},a940:function(t,e,i){"use strict";var a=i("abf9"),n=i.n(a);n.a},a942:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.select-serve{background-color:#f5f5f5;min-height:100vh;padding-bottom:160rpx}.select-serve .select-tip{margin-top:20rpx;background:rgba(232,16,30,.1);padding:20rpx;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:24rpx;color:#333;line-height:33rpx;text-align:left;font-style:normal}.select-serve .serve-card{background:#fff;border-radius:20rpx;padding:20rpx;margin:20rpx;display:flex;gap:20rpx}.select-serve .serve-card .serve-card__img{width:150rpx;height:150rpx;border-radius:20rpx}.select-serve .serve-card .serve-card-right{flex:1}.select-serve .serve-card .serve-card-right .serve-card-right-text{font-weight:500;font-size:30rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal}.select-serve .serve-card .serve-card-right .serve-card-right-price{margin-top:15rpx;font-family:DINPro;font-weight:500;font-size:22rpx;color:#e8101e;line-height:34rpx;text-align:left;font-style:normal}.select-serve .serve-card .serve-card-right .serve-card-right-number{display:flex;align-items:center;margin-top:23rpx}.select-serve .serve-card .serve-card-right .serve-card-right-number .serve-card-right-number-text{font-weight:400;font-size:28rpx;color:#333;text-align:left;font-style:normal;margin-right:86rpx}.select-serve .serve-card .serve-card-right .serve-card-right-estimate{display:flex;align-items:center;margin-top:16rpx;background-color:rgba(245,191,133,.1);border-radius:10rpx;font-weight:400;font-size:26rpx;color:#b6732b;text-align:left;font-style:normal;box-sizing:border-box;width:100%;padding:6rpx 10rpx}.select-serve .serve-card .serve-card-right .serve-card-right-estimate .serve-card-right-estimate-img{margin-left:10rpx;width:24rpx;height:24rpx}.select-serve .select-serve-footer{background-color:#fff;position:fixed;bottom:0;left:0;right:0;padding:40rpx 30rpx}.select-serve .select-serve-footer__btn{width:690rpx;height:78rpx;background:#e8101e;border-radius:798rpx;display:flex;align-items:center;justify-content:center;font-weight:400;font-size:30rpx;color:#fff;line-height:39rpx;text-align:center;font-style:normal}.closeModal{width:556rpx;height:80rpx;background:#e8101e;border-radius:40rpx;font-weight:500;font-size:28rpx;color:#fff;line-height:40rpx;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:center;margin:0 32rpx 50rpx 32rpx} .uv-modal__title{padding-top:50rpx;font-weight:500;font-size:32rpx;color:#333!important;line-height:45rpx;text-align:center;font-style:normal} .uv-modal__content{padding:30rpx 32rpx 30rpx 30rpx;font-weight:400;font-size:30rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal}.numberValue{display:flex;gap:12rpx}.numberValue .numberValue-card{position:relative;width:140rpx;padding-right:40rpx;height:46rpx;background:#f6f6f6}.numberValue .numberValue-card .numberValue-input{width:140rpx;height:46rpx;background:#f6f6f6;border-radius:6rpx;text-align:center!important;font-weight:500;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal}.numberValue .numberValue-card .percentage{position:absolute;right:9rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-weight:500;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal}.numberValue .fuHao{font-weight:500;font-size:34rpx;color:#333;line-height:48rpx;text-align:left;font-style:normal}.uni-input-placeholder{font-weight:400;font-size:24rpx;color:#d1cccc;line-height:33rpx;text-align:center;font-style:normal}',""]),t.exports=e},a947:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"OrderCard",props:["dataItem","typeId","showState"],data:function(){return{wxsProps:{}}},components:{}}},a9ba:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uvOverlay:i("1d78").default,uvTransition:i("2fe6").default,uvStatusBar:i("8381").default,uvSafeBottom:i("8b9e").default,uvIcon:i("08d8").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$g(0,"i")?i("uni-view",{staticClass:t._$g(0,"sc"),class:t._$g(0,"c"),style:t._$g(0,"s"),attrs:{_i:0}},[i("uni-view",{attrs:{_i:1},on:{touchstart:function(e){return t.$handleViewEvent(e)}}},[t._$g(2,"i")?i("uv-overlay",{key:"1",attrs:{_i:2},on:{click:function(e){return t.$handleViewEvent(e)}}}):t._e(),i("uv-transition",{key:"2",attrs:{_i:3},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(4,"sc"),class:t._$g(4,"c"),style:t._$g(4,"s"),attrs:{_i:4},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g(5,"i")?i("uv-status-bar",{attrs:{_i:5}}):t._e(),t._t("default",null,{_i:6}),t._$g(7,"i")?i("uv-safe-bottom",{attrs:{_i:7}}):t._e(),t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),class:t._$g(8,"c"),attrs:{"hover-class":"uv-popup__content__close--hover","hover-stay-time":"150",_i:8},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("uv-icon",{attrs:{_i:9}})],1):t._e()],2)],1)],1)],1):t._e()},r=[]},a9c2:function(t,e,i){"use strict";i.r(e);var a=i("9fe0"),n=i("c09b");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("7079");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},a9c6:function(t,e,i){var a=i("bb71");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("555c82ec",a,!0,{sourceMap:!1,shadowMode:!1})},a9c9:function(t,e,i){var a=i("652b");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("16d0a739",a,!0,{sourceMap:!1,shadowMode:!1})},a9e1:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},aa0e:function(t,e,i){var a=i("304e");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("5db7ec30",a,!0,{sourceMap:!1,shadowMode:!1})},aa20:function(t,e,i){var a=i("720b");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("07a48230",a,!0,{sourceMap:!1,shadowMode:!1})},aa26:function(t,e,i){"use strict";i.r(e);var a=i("0b31"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},aa29:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uniPopup:i("c3a6").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-popup",{ref:"popup",staticStyle:{"z-index":"20000"},attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("v-uni-image",{staticClass:t._$g(2,"sc"),attrs:{src:"/static/images/shop/close.png",_i:2},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._v(" \u8bf7\u9009\u62e9\u65f6\u95f4\u6bb5 ")]),i("v-uni-picker-view",{staticClass:t._$g(4,"sc"),attrs:{value:t._$g(4,"a-value"),"indicator-style":t._$g(4,"a-indicator-style"),_i:4},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-picker-view-column",{attrs:{_i:5}},t._l(t._$g(6,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("6-"+r,"sc"),attrs:{_i:"6-"+r}},[t._v(" "+t._$g("6-"+r,"t0-0")+"\u65f6 ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:7}},t._l(t._$g(8,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("8-"+r,"sc"),attrs:{_i:"8-"+r}},[t._v(" "+t._$g("8-"+r,"t0-0")+"\u5206 ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:9}},[i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v(" - ")])],1),i("v-uni-picker-view-column",{attrs:{_i:11}},t._l(t._$g(12,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("12-"+r,"sc"),attrs:{_i:"12-"+r}},[t._v(" "+t._$g("12-"+r,"t0-0")+"\u65f6 ")])})),1),i("v-uni-picker-view-column",{attrs:{_i:13}},t._l(t._$g(14,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[t._v(" "+t._$g("14-"+r,"t0-0")+"\u5206 ")])})),1)],1),i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u8ba4 "+t._$g(15,"t0-0"))])],1)],1)},r=[]},aa59:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.add-service{padding:24rpx 24rpx 0;box-sizing:border-box}.form-container{margin-top:20rpx}.form-item{background-color:#fff;padding:24rpx;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;box-sizing:border-box;border-radius:10rpx;margin-bottom:24rpx}.shopsale-box{flex-flow:column;justify-content:space-between;align-items:space-between}.shopsale-change{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;margin-top:24rpx}.shopsale-option{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}.shopsale-option:last-child{margin-left:220rpx}.option-text{padding-left:16rpx}.form-item-up{background-color:#fff;padding:24rpx;display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:flex-start;box-sizing:border-box;border-radius:10rpx;margin-bottom:24rpx}.form-label{font-size:28rpx;color:#333}.form-input{flex:1;height:40rpx;font-size:28rpx;color:#333;margin-left:32rpx}.form-right{display:flex;justify-content:space-between;align-items:center}.form-value{font-size:28rpx;color:#333;margin-right:16rpx}.placeholder{color:#999}.textarea-item{padding-bottom:30rpx}.form-textarea{flex:1;height:198rpx;font-size:28rpx;color:#333;line-height:1.5;margin-left:32rpx}.upload-item{padding-bottom:30rpx}.upload-tip{font-size:24rpx;color:#999;margin-left:10rpx}.upload-content{margin-top:20rpx;position:relative}.progress-box{width:204rpx;height:204rpx;background-color:rgba(0,0,0,.5);position:absolute;top:0;left:0;right:0;z-index:99;display:flex;flex-flow:column nowrap;justify-content:center;align-items:center}.progress-text{font-size:42rpx;color:#fff;font-weight:500}.progress-lable{font-size:28rpx;color:#fff}.progress-box uni-progress{position:absolute;left:0;right:0;bottom:0}.video-preview,\n.image-preview,\n.upload-btn{width:200rpx;height:200rpx;margin-right:10rpx;margin-bottom:20rpx;position:relative}.preview-video,\n.preview-image{width:200rpx;height:200rpx;border-radius:8rpx}.upload-btn{border:2rpx dashed #ddd;border-radius:8rpx;display:flex;justify-content:center;align-items:center}.plus-icon{font-size:60rpx;color:#999}.delete-btn{position:absolute;top:-20rpx;right:-20rpx;width:40rpx;height:40rpx;background-color:rgba(0,0,0,.5);border-radius:50%;color:#fff;display:flex;justify-content:center;align-items:center;font-size:32rpx}.bottom-buttons{height:100rpx;padding:40rpx 0 64rpx;box-sizing:border-box;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center}.btn-draft,\n.btn-submit{width:334rpx;height:64rpx;line-height:64rpx;text-align:center;font-size:28rpx;border-radius:40rpx}.btn-draft{background-color:#fff;color:#e8101e;border:2rpx solid #e8101e;box-sizing:border-box}.btn-submit{background-color:#e8101e;color:#fff}.form-step{background-color:#fff;margin-bottom:24rpx}.form-step .form-item{margin-bottom:0}.step{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;padding:0 24rpx 24rpx}.step-inp{flex:1;font-size:28rpx;color:#333;margin-left:38rpx;padding:0 24rpx;background-color:hsla(0,0%,90.2%,.5)}.step-textarea{font-size:24rpx;flex:1;height:70rpx;border-radius:6rpx;margin-left:38rpx;padding:24rpx;background-color:hsla(0,0%,90.2%,.5)}.picker-trigger{display:flex;align-items:center;justify-content:space-between;padding:24rpx 32rpx;background-color:#fff;border-radius:12rpx;margin-bottom:24rpx}.picker-label{font-size:28rpx;color:#333}.picker-value{font-size:28rpx;color:#666}.picker-arrow{width:32rpx;height:32rpx;margin-left:16rpx}.delete-icon{width:32rpx;height:32rpx;margin-left:24rpx}.form-detail{position:relative}.detail-cont{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;width:170rpx;height:210rpx;position:absolute;top:50rpx;right:-24rpx;background-color:#fff;padding:20rpx;border-radius:20rpx;box-shadow:0 8rpx 16rpx 0 rgba(0,0,0,.5);z-index:999}.detail-item{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;padding:12rpx 0;border-bottom:1rpx solid hsla(0,0%,90.2%,.5)}.lable-view{width:120rpx}.required::before{content:"*";color:red;margin-right:4rpx}.step-inp,\n.form-input{height:60rpx}.mask{position:fixed;top:0;right:0;left:0;width:100vw;height:100vh;z-index:99}.form-input{height:90rpx}.permission.transform{top:calc(var(--status-bar-height) + 88rpx + 30rpx);opacity:1;visibility:visible}.tip{padding:20rpx 30rpx;background:#feefec;font-weight:400;font-size:30rpx;color:#f31d2f;line-height:42rpx;text-align:left;font-style:normal;text-align:center}.tip .tip-icon{width:34rpx;height:34rpx;margin-right:10rpx;-webkit-transform:translateY(6rpx);transform:translateY(6rpx)}',""]),t.exports=e},aa80:function(t,e,i){"use strict";i.r(e);var a=i("fad7"),n=i("8642");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("f41e");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},aa99:function(t,e,i){"use strict";i.r(e);var a=i("fc00"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},ab07:function(t,e,i){"use strict";i.r(e);var a=i("d6bf"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},ab56:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".add-alipay[data-v-2832c752]{background-color:#f7f7f7;height:100vh;padding:0;margin:0}.header[data-v-2832c752]{display:flex;align-items:center;padding:24rpx 32rpx;background-color:#fff;font-size:32rpx;border-bottom:1rpx solid #eee}.back[data-v-2832c752]{font-size:40rpx;color:#333;margin-right:20rpx}.title[data-v-2832c752]{flex:1;text-align:center;font-weight:700;color:#333}.form[data-v-2832c752]{background-color:#fff;margin:20rpx auto 0 auto;padding:0 32rpx;border-radius:20rpx;width:85%;box-shadow:0 4rpx 12rpx rgba(0,0,0,.05)}.form-item[data-v-2832c752]{display:flex;align-items:center;justify-content:space-between;border-bottom:1rpx solid #f1f1f1;padding:28rpx 0}.form-item uni-text[data-v-2832c752]{color:#333;font-size:30rpx;font-weight:700;text-align:left;width:180rpx;flex-shrink:0}.form-item uni-input[data-v-2832c752]{flex:1;margin-left:30rpx;border:none;outline:none;font-size:30rpx;color:#333;text-align:left;background-color:initial;padding:0;box-sizing:border-box}.default-option[data-v-2832c752]{display:flex;align-items:center;padding:30rpx 0;font-weight:700}.default-text[data-v-2832c752]{margin-left:12rpx;font-size:30rpx}.btn-group[data-v-2832c752]{display:flex;justify-content:space-around;margin-top:80rpx;padding:0 32rpx}uni-button[data-v-2832c752]{width:40%;height:84rpx;border-radius:48rpx;font-size:32rpx;font-weight:500;border:none}.cancel[data-v-2832c752]{color:rgba(255,124,140,.6);border:2rpx solid #ffb7c3}.cancel.cancel-active[data-v-2832c752]{border-color:red;color:red}.confirm[data-v-2832c752]{background-color:rgba(255,124,140,.6);color:#fff}.confirm.confirm-active[data-v-2832c752]{background-color:#ff1c1f;color:#fff}.default-wrapper-img[data-v-2832c752]{width:30rpx;height:30rpx}.tip[data-v-2832c752]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:22rpx;color:#e8101e;line-height:30rpx;text-align:left;font-style:normal;margin-top:20rpx}",""]),t.exports=e},ab68:function(t,e,i){var a=i("7af2");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("8be1c8dc",a,!0,{sourceMap:!1,shadowMode:!1})},ab80:function(t,e,i){"use strict";var a=i("b3f9"),n=i.n(a);n.a},aba5:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},t._l(t._$g(1,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("1-"+r,"sc"),attrs:{_i:"1-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("2-"+r,"sc"),attrs:{_i:"2-"+r}},[t._v("\u81ea\u8425")]),i("uni-view",{staticClass:t._$g("3-"+r,"sc"),attrs:{_i:"3-"+r}},[i("v-uni-image",{staticClass:t._$g("4-"+r,"sc"),attrs:{src:t._$g("4-"+r,"a-src"),mode:"aspectFill",_i:"4-"+r}})],1),i("uni-view",{staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r}},[t._v(t._$g("5-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("6-"+r,"sc"),attrs:{_i:"6-"+r}},[i("v-uni-text",{staticClass:t._$g("7-"+r,"sc"),attrs:{_i:"7-"+r}},[t._v("\xa5"+t._$g("7-"+r,"t0-0"))]),i("v-uni-text",{staticClass:t._$g("8-"+r,"sc"),attrs:{_i:"8-"+r}},[t._v("\u9500\u91cf "+t._$g("8-"+r,"t0-0"))])],1)],1)})),1)},n=[]},abbe:function(t,e,i){"use strict";i.r(e);var a=i("beb0"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},abc5:function(t,e,i){"use strict";i.r(e);var a=i("1bb5"),n=i("2cda");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("b570");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"de0e071c",null,!1,a["a"],void 0);e["default"]=o.exports},abf9:function(t,e,i){var a=i("2732");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("471400be",a,!0,{sourceMap:!1,shadowMode:!1})},ac36:function(t,e,i){"use strict";i.r(e);var a=i("bd43"),n=i("c174");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("1583");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"7658365f",null,!1,a["a"],void 0);e["default"]=o.exports},ac57:function(t,e,i){"use strict";i.r(e);var a=i("be0b"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},ac65:function(t,e,i){"use strict";i.r(e);var a=i("4aaf"),n=i("b339");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("8972");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"6150babc",null,!1,a["a"],void 0);e["default"]=o.exports},ac93:function(t,e,i){"use strict";t.exports=function(t,e){e||(e={}),t=t&&t.__esModule?t.default:t;var i=!1;if("string"!==typeof t){if(!t.protocol||"file:"!==t.protocol||!t.pathname)return t;i=!0,t=t.pathname}return/^['"].*['"]$/.test(t)&&(t=t.slice(1,-1)),e.hash&&(t+=e.hash),/["'() \t\n]/.test(t)||e.needQuotes?'"'.concat(t.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):i?t:0===t.indexOf("/")?t.substr(1):t}},acd2:function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("8b24");e=a(!1);var s=n(r);e.push([t.i,'@charset "UTF-8";.editPassword[data-v-12191fc8]{background-image:url('+s+");background-position:top;background-repeat:no-repeat;background-size:100%;background-color:#fff;min-height:100vh;padding:0 60rpx;position:relative}.editPassword .password-title[data-v-12191fc8]{margin-top:82rpx;font-weight:500;font-size:46rpx;color:#333;line-height:65rpx;text-align:left;font-style:normal}.editPassword .password-tip[data-v-12191fc8]{margin-top:20rpx;font-size:28rpx;color:#666;line-height:40rpx}.editPassword .newPassword[data-v-12191fc8],\n.editPassword .surePassword[data-v-12191fc8]{margin-top:100rpx}.editPassword .surePassword[data-v-12191fc8]{margin-top:40rpx}.editPassword .password-text[data-v-12191fc8]{font-weight:400;font-size:32rpx;color:#333;line-height:45rpx;text-align:left;font-style:normal}.editPassword .input-item[data-v-12191fc8]{display:flex;align-items:center;box-sizing:border-box;width:630rpx;height:98rpx;background:#f5f5f5;border-radius:49rpx;padding:28rpx 24rpx 28rpx 30rpx;margin-bottom:10rpx;position:relative;margin-top:19rpx}.editPassword .input-item .look-icon[data-v-12191fc8]{width:37rpx;position:absolute;top:50%;right:30rpx;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.editPassword .input-item .input-text[data-v-12191fc8]{flex:1;font-size:30rpx;height:40rpx;color:#333}.editPassword .pwd-error[data-v-12191fc8]{display:block;font-size:24rpx;color:#e8101e;margin-left:30rpx;margin-top:10rpx;line-height:1.2}.editPassword .select-serve-footer[data-v-12191fc8]{background-color:#fff;position:fixed;bottom:0;left:0;right:0;padding:40rpx 60rpx;box-shadow:0 -2rpx 10rpx rgba(0,0,0,.05)}.editPassword .select-serve-footer__btn[data-v-12191fc8]{width:630rpx;height:98rpx;background:rgba(232,16,30,.4);border-radius:798rpx;display:flex;align-items:center;justify-content:center;font-weight:500;font-size:30rpx;color:#fff;line-height:39rpx;text-align:center;font-style:normal;transition:background-color .2s ease}.editPassword .select-serve-footer .active[data-v-12191fc8]{background:#e8101e}.editPassword .select-serve-footer .active[data-v-12191fc8]:active{opacity:.9}",""]),t.exports=e},ad36:function(t,e,i){"use strict";i.r(e);var a=i("3b67"),n=i("ccfc");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("bd5b");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"748541a9",null,!1,a["a"],void 0);e["default"]=o.exports},ad6c:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.uv-line-1[data-v-57ebf702]{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:1;-webkit-box-orient:vertical!important}.uv-line-2[data-v-57ebf702]{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:2;-webkit-box-orient:vertical!important}.uv-line-3[data-v-57ebf702]{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:3;-webkit-box-orient:vertical!important}.uv-line-4[data-v-57ebf702]{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:4;-webkit-box-orient:vertical!important}.uv-line-5[data-v-57ebf702]{display:-webkit-box!important;overflow:hidden;text-overflow:ellipsis;word-break:break-all;-webkit-line-clamp:5;-webkit-box-orient:vertical!important}.uv-border-bottom[data-v-57ebf702]{border-bottom-width:.5px!important;border-color:#dadbde!important;border-bottom-style:solid}.uv-hover-class[data-v-57ebf702]{opacity:.7}uni-view[data-v-57ebf702], uni-scroll-view[data-v-57ebf702], uni-swiper-item[data-v-57ebf702]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-toolbar[data-v-57ebf702]{height:42px;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.uv-toolbar__wrapper__cancel[data-v-57ebf702]{color:#909193;font-size:15px;padding:0 15px}.uv-toolbar__title[data-v-57ebf702]{color:#303133;padding:0 60rpx;font-size:16px;flex:1;text-align:center}.uv-toolbar__wrapper__confirm[data-v-57ebf702]{color:#3c9cff;font-size:15px;padding:0 15px}',""]),t.exports=e},ad76:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},ad8c:function(t,e,i){"use strict";i.r(e);var a=i("5a22"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},ad90:function(t,e,i){"use strict";var a=i("d4e8"),n=i.n(a);n.a},ad94:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".filter-container[data-v-73b98b2a]{width:100%;background:#fff;position:relative;z-index:1000}.filter-bar[data-v-73b98b2a]{display:flex;justify-content:space-around;align-items:center;height:80rpx;background:#fff;border-top:hsla(0,0%,95%,.795) solid 1px}.filter-bar .filter-item[data-v-73b98b2a]{display:flex;align-items:center;font-size:28rpx;color:#666;padding:0 10rpx;transition:all .3s cubic-bezier(.4,0,.2,1)}.filter-bar .filter-item .filter-text[data-v-73b98b2a]{margin-right:8rpx}.filter-bar .filter-item .arrow-icon[data-v-73b98b2a]{width:13rpx;height:8rpx;transition:all .3s cubic-bezier(.4,0,.2,1)}.filter-bar .filter-item.active[data-v-73b98b2a],\n.filter-bar .filter-item.has-value[data-v-73b98b2a]{color:#333;font-weight:500}.filter-bar .filter-item[data-v-73b98b2a]:active{opacity:.7}.filter-mask[data-v-73b98b2a]{position:fixed;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:999;opacity:0;transition:opacity .3s cubic-bezier(.4,0,.2,1);pointer-events:none}.filter-mask.mask-show[data-v-73b98b2a]{opacity:1;pointer-events:auto}.filter-mask.mask-hide[data-v-73b98b2a]{opacity:0;pointer-events:none}.filter-panel[data-v-73b98b2a]{position:fixed;left:0;right:0;background:#fff;z-index:1001;border-radius:0 0 20rpx 20rpx;-webkit-transform-origin:top center;transform-origin:top center;-webkit-transform:scaleY(0);transform:scaleY(0);opacity:0;max-height:60vh;overflow-y:auto;transition:all .3s cubic-bezier(.4,0,.2,1)}.filter-panel.panel-show[data-v-73b98b2a]{-webkit-transform:scaleY(1);transform:scaleY(1);opacity:1}.filter-panel.panel-hide[data-v-73b98b2a]{-webkit-transform:scaleY(0);transform:scaleY(0);opacity:0}.filter-content[data-v-73b98b2a]{padding:10rpx 50rpx 20rpx 50rpx;opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px);transition:all .3s cubic-bezier(.4,0,.2,1) .2s}.filter-content.content-active[data-v-73b98b2a]{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}.filter-content .option-list .option-item[data-v-73b98b2a]{display:flex;align-items:center;justify-content:space-between;padding:24rpx 0;border-bottom:1rpx solid #f5f5f5;font-size:28rpx;color:#333;transition:all .3s ease}.filter-content .option-list .option-item[data-v-73b98b2a]:last-child{border-bottom:none}.filter-content .option-list .option-item.active[data-v-73b98b2a]{color:#e8101e}.filter-content .option-list .option-item .check-icon[data-v-73b98b2a]{width:25rpx;height:20rpx;margin-right:490rpx;transition:all .2s ease}.filter-content .option-buttons[data-v-73b98b2a]{display:flex;flex-wrap:wrap;gap:20rpx}.filter-content .option-buttons .option-button[data-v-73b98b2a]{flex:0 0 calc(25% - 16rpx);height:60rpx;display:flex;align-items:center;justify-content:center;background:#f5f5f5;border-radius:10rpx;font-size:24rpx;font-weight:500;color:#666;transition:all .3s cubic-bezier(.4,0,.2,1)}.filter-content .option-buttons .option-button .button-text[data-v-73b98b2a]{font-weight:500;font-size:24rpx}.filter-content .option-buttons .option-button.active[data-v-73b98b2a]{background:#ffecf0;color:#e8101e}.filter-content .option-buttons.distance-buttons[data-v-73b98b2a]{margin-bottom:40rpx}.filter-content .option-buttons.price-buttons[data-v-73b98b2a]{margin-bottom:30rpx}.filter-content .option-buttons.price-buttons .custom-price-container[data-v-73b98b2a]{flex:0 0 calc(25% - 14rpx);height:60rpx;background:#f5f5f5;border-radius:10rpx;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);overflow:hidden;cursor:pointer}.filter-content .option-buttons.price-buttons .custom-price-container.expanded[data-v-73b98b2a]{flex:0 0 calc(50% - 15rpx)}.filter-content .option-buttons.price-buttons .custom-price-container .custom-price-inner[data-v-73b98b2a]{position:absolute;top:0;left:0;width:200%;height:100%;display:flex;transition:-webkit-transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1),-webkit-transform .3s cubic-bezier(.4,0,.2,1)}.filter-content .option-buttons.price-buttons .custom-price-container .custom-button-content[data-v-73b98b2a]{flex:0 0 50%;display:flex;align-items:center;justify-content:center;font-size:24rpx;color:#666;height:100%}.custom-price-container.active .filter-content .option-buttons.price-buttons .custom-price-container .custom-button-content[data-v-73b98b2a]{color:#e8101e}.filter-content .option-buttons.price-buttons .custom-price-container .custom-input-content[data-v-73b98b2a]{flex:0 0 50%;display:flex;align-items:center;justify-content:space-between;opacity:0;transition:opacity .15s ease .15s}.filter-content .option-buttons.price-buttons .custom-price-container .custom-input-content .price-input[data-v-73b98b2a]{flex:1;height:50rpx;padding:0 10rpx;background:transparent;border:none;font-size:24rpx;color:#333;text-align:center}.filter-content .option-buttons.price-buttons .custom-price-container .custom-input-content .price-input[data-v-73b98b2a]::-webkit-input-placeholder{color:#999;font-size:24rpx}.filter-content .option-buttons.price-buttons .custom-price-container .custom-input-content .price-input[data-v-73b98b2a]::placeholder{color:#999;font-size:24rpx}.filter-content .option-buttons.price-buttons .custom-price-container .custom-input-content .separator[data-v-73b98b2a]{color:hsla(0,0%,60%,.5607843137254902);font-size:26rpx}.filter-content .option-buttons.price-buttons .custom-price-container.expanded .custom-price-inner[data-v-73b98b2a]{-webkit-transform:translateX(-50%);transform:translateX(-50%)}.filter-content .option-buttons.price-buttons .custom-price-container.expanded .custom-input-content[data-v-73b98b2a]{opacity:1}.action-buttons[data-v-73b98b2a]{display:flex;justify-content:space-between;gap:20rpx;margin:20rpx 0;opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px);transition:all .3s cubic-bezier(.4,0,.2,1) .2s}.filter-content.content-active .action-buttons[data-v-73b98b2a]{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}.action-buttons .btn[data-v-73b98b2a]{flex:1;height:80rpx;line-height:80rpx;font-size:28rpx;border-radius:10rpx;transition:all .3s cubic-bezier(.4,0,.2,1)}.action-buttons .btn[data-v-73b98b2a]::after{border:0!important}.action-buttons .btn.reset[data-v-73b98b2a]{background:#f5f5f5;color:#666}.action-buttons .btn.reset[data-v-73b98b2a]:active{background:#e8e8e8}.action-buttons .btn.confirm[data-v-73b98b2a]{background:#f34;color:#fff}.action-buttons .btn.confirm[data-v-73b98b2a]:active{background:#e62b3b}",""]),t.exports=e},ada0:function(t,e,i){"use strict";i.r(e);var a=i("4dbc"),n=i("7689");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("a684");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},adb2:function(t,e,i){"use strict";var a=i("46e1"),n=i.n(a);n.a},adc8:function(t,e,i){"use strict";i.r(e);var a=i("a947"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},ae1c:function(t,e,i){"use strict";i.r(e);var a=i("fa44"),n=i("81ee");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("29a1");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"1570690e",null,!1,a["a"],void 0);e["default"]=o.exports},ae8c:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._$g(4,"i")?i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v(t._$g(5,"t0-0"))]),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u8425\u4e1a\u8bbe\u7f6e")])],1):t._$g(7,"e")?i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(t._$g(8,"t0-0"))]),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u8425\u4e1a\u8bbe\u7f6e")])],1):i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v(t._$g(10,"t0-0"))]),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v(t._$g(11,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("v-uni-image",{staticClass:t._$g(13,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/616767e1-e935-4c9c-a8e1-a099b6db4084.png",_i:13}})],1)],1),i("filters",{attrs:{_i:14},on:{secondClassLength:function(e){return t.$handleViewEvent(e)}}})],1),i("upload-app-vue",{attrs:{_i:15}}),i("TabBar",{attrs:{_i:16}})],1)},n=[]},ae8e:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uploadAppVue",props:["isHome"],data:function(){return{wxsProps:{}}},components:{}}},aea2:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},aea7:function(t,e,i){"use strict";var a=i("96c9"),n=i.n(a);n.a},aeb5:function(t,e,i){"use strict";var a=i("3c2e"),n=i.n(a);n.a},aee6:function(t,e,i){var a=i("ebf9");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("23eded36",a,!0,{sourceMap:!1,shadowMode:!1})},aee6a:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("v-uni-text",{staticClass:t._$g(0,"sc"),style:t._$g(0,"s"),attrs:{_i:0},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v(t._$g(0,"t0-0"))])},n=[]},aefa:function(t,e,i){"use strict";i.r(e);var a=i("3672"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},af05:function(t,e,i){var a=i("7712");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("0192586c",a,!0,{sourceMap:!1,shadowMode:!1})},af2c:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("6473")),r=a(i("47c6")),s={data:function(){return{wxsProps:{}}},components:{customNavbar:n.default,selectTimePage:r.default}};e.default=s},af2e:function(t,e,i){"use strict";var a=i("25a3"),n=i.n(a);n.a},af39:function(t,e,i){var a=i("4c56");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("34d31c45",a,!0,{sourceMap:!1,shadowMode:!1})},af3b:function(t,e,i){var a=i("8abe");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("48bf3c85",a,!0,{sourceMap:!1,shadowMode:!1})},af56:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1},on:{back:function(e){return t.$handleViewEvent(e)}}}),i("CommonList",{ref:"groupRef",attrs:{_i:2},scopedSlots:t._u([{key:"listData",fn:function(e,a,n){e.list;return[i("uni-view",{staticClass:a._$g("4-"+n,"sc"),attrs:{_i:"4-"+n}},t._l(a._$g("5-"+n,"f"),(function(e,r,s,o){return i("uni-view",{key:e,staticClass:a._$g("5-"+n+o,"sc"),attrs:{_i:"5-"+n+o}},[t._l(a._$g("6-"+n+"-"+o,"f"),(function(e,r,s,c){return i("uni-view",{key:e,staticClass:a._$g("6-"+n+o+"-"+c,"sc"),attrs:{_i:"6-"+n+o+"-"+c},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:a._$g("7-"+n+o+"-"+c,"sc"),attrs:{_i:"7-"+n+o+"-"+c}},[t._v(a._$g("7-"+n+o+"-"+c,"t0-0"))]),i("v-uni-text",{staticClass:a._$g("8-"+n+o+"-"+c,"sc"),attrs:{_i:"8-"+n+o+"-"+c}},[t._v(a._$g("8-"+n+o+"-"+c,"t0-0"))])],1)})),i("uni-view",{staticClass:a._$g("9-"+n+o,"sc"),attrs:{_i:"9-"+n+o}},[i("uni-view",{staticClass:a._$g("10-"+n+o,"sc"),attrs:{_i:"10-"+n+o},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("uni-view",{staticStyle:{display:"flex","align-items":"center"},attrs:{_i:"11-"+n+o}},[a._$g("12-"+n+o,"i")?i("v-uni-image",{staticClass:a._$g("12-"+n+o,"sc"),attrs:{src:"/static/images/wallet/default_yes.png",_i:"12-"+n+o}}):i("v-uni-image",{staticClass:a._$g("13-"+o,"sc"),attrs:{src:"/static/images/wallet/default.png",_i:"13-"+o}}),i("v-uni-text",{staticClass:a._$g("14-"+n+o,"sc"),attrs:{_i:"14-"+n+o}},[t._v("\u8bbe\u4e3a\u9ed8\u8ba4")])],1),i("uni-view",{staticClass:a._$g("15-"+n+o,"sc"),attrs:{_i:"15-"+n+o}},[i("uni-view",{staticClass:a._$g("16-"+n+o,"sc"),attrs:{_i:"16-"+n+o},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u4fee\u6539")]),i("uni-view",{staticClass:a._$g("17-"+n+o,"sc"),attrs:{_i:"17-"+n+o},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u5220\u9664")])],1)],1)],1)],2)})),1)]}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"19-"+a}})]}}])}),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v(" "+t._$g(21,"t0-0")+" ")])],1)],1)},r=[]},af82:function(t,e,i){"use strict";var a=i("1e22"),n=i.n(a);n.a},afde:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".time-popup[data-v-2cd35e08]{background-color:#fff;border-radius:24rpx 24rpx 0 0;overflow:hidden;padding-bottom:env(safe-area-inset-bottom);-webkit-transform:translateY(0);transform:translateY(0);transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;z-index:999}.popup-header[data-v-2cd35e08]{display:flex;justify-content:space-between;align-items:center;padding:30rpx 30rpx 36rpx 30rpx}.popup-header .popup-close[data-v-2cd35e08]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:26rpx;color:#999;line-height:37rpx;text-align:left;font-style:normal}.popup-header .popup-title[data-v-2cd35e08]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.time-picker-content[data-v-2cd35e08]{padding:0rpx 30rpx 30rpx 30rpx}.time-picker-content__datas[data-v-2cd35e08]{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.time-picker-content__datas__date__item[data-v-2cd35e08]{width:214rpx;height:67rpx;background:#f7f8fa;border-radius:10rpx;display:flex;align-items:center;justify-content:center}.time-picker-content__datas__date__item__text[data-v-2cd35e08]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal;position:relative;z-index:2}.time-picker-content__datas__date__item__text.active[data-v-2cd35e08]{color:#fff;background:transparent;background-position:bottom}.time-picker-content__datas__date__item__box[data-v-2cd35e08]{width:214rpx;height:74rpx;position:absolute;z-index:1}.time-picker-content__time__list[data-v-2cd35e08]{flex:1;height:400rpx;margin-top:30rpx}.time-picker-content__time__list[data-v-2cd35e08] ::-webkit-scrollbar{display:none}.time-picker-content__time__list uni-scroll-view .uni-scroll-view[data-v-2cd35e08]::-webkit-scrollbar{display:none}.time-picker-content__time__list[data-v-2cd35e08] .uni-scroll-view-content{display:flex;flex-wrap:wrap;justify-content:flex-start;-webkit-column-gap:21rpx;column-gap:21rpx;row-gap:30rpx;max-height:100%;height:auto}.time-picker-content__time__list__item[data-v-2cd35e08]{box-sizing:border-box;width:156rpx;height:90rpx;background:#f7f8fa;border-radius:10rpx;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:26rpx;color:#3c3638;line-height:37rpx;text-align:left;font-style:normal;display:flex;flex-direction:column;align-items:center;justify-content:center}.time-picker-content__time__list .state-available[data-v-2cd35e08]{color:#3c3638;background:#f7f8fa}.time-picker-content__time__list .state-full[data-v-2cd35e08]{color:#3c3638;background:#e4e9f0}.time-picker-content__time__list .state-rest[data-v-2cd35e08]{color:#cdcdcd;background:#f7f8f9}.time-picker-content__time__list .state-locked[data-v-2cd35e08]{color:#3c3638;background:#e4e9f0}.time-picker-content__time__list .state-unavailable[data-v-2cd35e08]{color:#fff;background:#e4e9f0}.time-picker-content__time__list .state-unknown[data-v-2cd35e08]{}.time-picker-content__time__list .isActive[data-v-2cd35e08]{background:rgba(252,67,124,.08);border-radius:10rpx;border:1rpx solid #e8101e;color:#e8101e}.time-picker-content__time__list__item.active[data-v-2cd35e08]{background-color:#fff0f0;color:#ff3e3e;font-weight:500}.time-picker-content__time__list__item.noselected[data-v-2cd35e08]{color:#999;font-weight:500}.time-picker-content__time__sure[data-v-2cd35e08]{padding:39rpx 0;display:flex;justify-content:center}.time-picker-content__time__sure__box[data-v-2cd35e08]{width:648rpx;height:94rpx;background:linear-gradient(140deg,#fa4e9a,#e8101e);border-radius:48rpx;display:flex;align-items:center;justify-content:center;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:30rpx;color:#fff;line-height:42rpx;text-align:left;font-style:normal}",""]),t.exports=e},afed:function(t,e,i){"use strict";i.r(e);var a=i("a1fb"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},aff4:function(t,e,i){"use strict";var a=i("56ac"),n=i.n(a);n.a},b010:function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("84b6"),s=i("3618");e=a(!1);var o=n(r),c=n(s);e.push([t.i,".wallet-page{background-image:url(https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/d43afda1-6e28-4649-98d6-e52806073151);background-size:contain;background-position:top;background-repeat:no-repeat;height:100vh;width:100%;position:relative}.wallet-page .wallet-content{border-radius:40rpx;padding:40rpx;background-image:url("+o+');background-size:cover;background-position:top;background-repeat:no-repeat;margin:60rpx 20rpx 0 20rpx}.wallet-page .wallet-content .wallet-content-title{display:flex;align-items:center;gap:8rpx}.wallet-page .wallet-content .wallet-content-title .wallet-content-title-text1{display:flex;align-items:center;gap:8rpx;font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal}.wallet-page .wallet-content .wallet-content-title .wallet-content-title-text2{display:flex;align-items:center;background:rgba(235,61,51,.06);border-radius:18rpx;padding:6rpx 12rpx;font-weight:400;font-size:22rpx;color:#925a57;line-height:28rpx;text-align:left;font-style:normal}.wallet-page .wallet-content .wallet-content-title .wallet-content-title-icon{width:21rpx;height:23rpx;margin-right:6rpx}.wallet-page .wallet-content .wallet-content-price{font-family:DINPro;font-weight:500;font-size:72rpx;color:#333;line-height:93rpx;text-align:left;font-style:normal}.wallet-page .wallet-content .wallet-content-cash{margin-top:34rpx;display:flex}.wallet-page .wallet-content .wallet-content-cash .wallet-content-cash-left .wallet-content-cash-left-text{font-family:DINPro;font-weight:500;font-size:36rpx;color:#e8101e;line-height:46rpx;text-align:left;font-style:normal}.wallet-page .wallet-content .wallet-content-cash .wallet-content-cash-right .wallet-content-cash-right-text{font-family:DINPro;font-weight:500;font-size:36rpx;color:#333;line-height:46rpx;text-align:left;font-style:normal}.wallet-page .wallet-content .wallet-content-cash .wallet-content-cash-title{font-weight:400;font-size:28rpx;color:#666;line-height:40rpx;text-align:left;font-style:normal;display:flex;align-items:center;gap:4rpx}.wallet-page .wallet-content .wallet-content-cash .wallet-content-cash-title .wallet-content-cash-title-icon{width:24rpx;height:24rpx}.wallet-page .wallet-content .wallet-content-btn{margin:0 auto;margin-top:69rpx;width:614rpx;height:88rpx;background:linear-gradient(180deg,#f52540,#e8101e);border-radius:44rpx;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:36rpx;color:#fff;line-height:50rpx;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:center}.wallet-page .wallet-detail{margin:20rpx 20rpx 0 20rpx;width:710rpx;background:#fff;border-radius:36rpx}.wallet-page .wallet-detail .wallet-detail-tabs{border-bottom:2rpx solid #faf8f8;position:relative}.wallet-page .wallet-detail .wallet-detail-tabs .walletDetailTab{display:inline-block;position:relative;margin-top:30rpx;margin-bottom:33rpx;width:350rpx;font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:center;font-style:normal}.wallet-page .wallet-detail .wallet-detail-tabs .wallet-detail-line::before{content:"";position:absolute;right:0;top:0;width:4rpx;border-radius:4rpx;height:100%;background:#eaeaea}.wallet-page .wallet-detail .wallet-detail-tabs .tabActive{font-weight:500;color:#e8101e}.wallet-page .wallet-detail .wallet-detail-tabs .walletDetailTab.tabActive::after{content:"";width:56rpx;height:8rpx;background:#e8101e;border-radius:5rpx;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);bottom:-13rpx}.wallet-page .popup-content{margin:0 84rpx;width:582rpx;height:526rpx;background-image:url('+c+");background-size:cover;background-position:top;background-repeat:no-repeat}.wallet-page .popup-content .popup-content-title{padding-top:161rpx;font-weight:500;font-size:38rpx;color:#333;line-height:53rpx;text-align:center;font-style:normal}.wallet-page .popup-content .popup-content-text{margin-top:42rpx;padding:0 47rpx;font-weight:400;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.wallet-page .popup-content .popup-content-btn{margin:50rpx 76rpx 0 76rpx;display:flex;align-items:center;justify-content:center;width:430rpx;height:86rpx;background:linear-gradient(181deg,#f52540,#e8101e);border-radius:43rpx;font-weight:400;font-size:36rpx;color:#fff;line-height:50rpx;text-align:left;font-style:normal}.lists{display:flex;flex-wrap:wrap;gap:50rpx}.lists .lists-item{width:100%}.lists .lists-item .lists-item-title{font-weight:400;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.lists .lists-item .lists-item-text1{margin-top:4rpx;font-weight:400;font-size:24rpx;color:#999;line-height:33rpx;text-align:left;font-style:normal}.lists .lists-item .lists-item-text2{font-family:DINPro;font-weight:500;font-size:30rpx;color:#333;line-height:38rpx;text-align:left;font-style:normal}.lists .lists-item .lists-item-text3{font-weight:500;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal}.lists .lists-item .lists-item-content{display:flex;justify-content:space-between;align-items:center}",""]),t.exports=e},b054:function(t,e,i){"use strict";i.r(e);var a=i("363e"),n=i("96a6");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("eb6c");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"7290c65e",null,!1,a["a"],void 0);e["default"]=o.exports},b06f:function(t,e,i){var a=i("f8ae");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("67e84e38",a,!0,{sourceMap:!1,shadowMode:!1})},b07a:function(t,e,i){"use strict";i.r(e);var a=i("ced1"),n=i("aa99");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("19c1");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"2a4c32bc",null,!1,a["a"],void 0);e["default"]=o.exports},b07b:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},b07d:function(t,e,i){"use strict";var a=i("2916"),n=i.n(a);n.a},b0af:function(t,e,i){var a=i("2ef3");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("7a4e9282",a,!0,{sourceMap:!1,shadowMode:!1})},b0c5:function(t,e,i){"use strict";var a=i("de6c"),n=i.n(a);n.a},b0f0:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,agreeRadio:i("a6d8").default,tipsPopup:i("804d").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u63d0\u73b0\u91d1\u989d")])],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\xa5")]),i("v-uni-input",{staticClass:t._$g(7,"sc"),attrs:{type:"digit",placeholder:t._$g(7,"a-placeholder"),"placeholder-class":"input-placeholder",_i:7},on:{input:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(7,"v-model"),callback:function(){},expression:"withdrawAmount"}})],1),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("*\u5f53\u524d\u6700\u591a\u6bcf\u7b14\u63d0\u73b0200\u5143")])],1)],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u8bf7\u9009\u62e9\u63d0\u73b0\u65b9\u5f0f")]),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},t._l(t._$g(13,"f"),(function(e,a,n,r){return i("uni-view",{key:e,attrs:{_i:"13-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[i("uni-view",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r}},[i("v-uni-image",{staticClass:t._$g("16-"+r,"sc"),attrs:{src:t._$g("16-"+r,"a-src"),mode:"aspectFit",_i:"16-"+r}}),i("v-uni-text",{staticClass:t._$g("17-"+r,"sc"),attrs:{_i:"17-"+r}},[t._v(t._$g("17-"+r,"t0-0"))])],1),i("agree-radio",{attrs:{_i:"18-"+r}})],1),t._$g("19-"+r,"i")?i("uni-view",{staticClass:t._$g("19-"+r,"sc"),attrs:{_i:"19-"+r}},[i("uni-view",{staticClass:t._$g("20-"+r,"sc"),attrs:{_i:"20-"+r}},[i("v-uni-text",{staticClass:t._$g("21-"+r,"sc"),attrs:{_i:"21-"+r}},[t._v("\u771f\u5b9e\u59d3\u540d")]),i("v-uni-input",{staticClass:t._$g("22-"+r,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u771f\u5b9e\u59d3\u540d","placeholder-class":"info-placeholder",_i:"22-"+r},model:{value:t._$g("22-"+r,"v-model"),callback:function(e){t.$handleVModelEvent("22-"+r,e)},expression:"aliWallet.name"}})],1),i("uni-view",{staticClass:t._$g("23-"+r,"sc"),attrs:{_i:"23-"+r}},[i("v-uni-text",{staticClass:t._$g("24-"+r,"sc"),attrs:{_i:"24-"+r}},[t._v("\u8eab\u4efd\u8bc1\u53f7")]),i("v-uni-input",{staticClass:t._$g("25-"+r,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u8eab\u4efd\u8bc1\u53f7","placeholder-class":"info-placeholder",_i:"25-"+r},model:{value:t._$g("25-"+r,"v-model"),callback:function(e){t.$handleVModelEvent("25-"+r,e)},expression:"aliWallet.id"}})],1),i("uni-view",{staticClass:t._$g("26-"+r,"sc"),attrs:{_i:"26-"+r}},[i("v-uni-text",{staticClass:t._$g("27-"+r,"sc"),attrs:{_i:"27-"+r}},[t._v("\u624b\u673a\u53f7/\u90ae\u7bb1")]),i("v-uni-input",{staticClass:t._$g("28-"+r,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u624b\u673a\u53f7/\u90ae\u7bb1","placeholder-class":"info-placeholder",_i:"28-"+r},model:{value:t._$g("28-"+r,"v-model"),callback:function(e){t.$handleVModelEvent("28-"+r,e)},expression:"aliWallet.account"}})],1)],1):t._e()],1)})),1)],1),i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[i("agree-radio",{attrs:{_i:31},on:{"change-agree":function(e){return t.$handleViewEvent(e)}}}),i("v-uni-text",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v("\u63d0\u73b0\u5373\u9ed8\u8ba4\u540c\u610f")]),i("v-uni-text",{staticClass:t._$g(33,"sc"),attrs:{_i:33},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u300a\u63d0\u73b0\u534f\u8bae\u300b")])],1),i("uni-view",{staticClass:t._$g(34,"sc"),class:t._$g(34,"c"),attrs:{_i:34},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[t._v("\u63d0\u4ea4")])],1)],1),i("tips-popup",{attrs:{_i:36},on:{"close-popup":function(e){return t.$handleViewEvent(e)}}})],1)},r=[]},b13e:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return t._$g(0,"i")?i("uni-view",{class:t._$g(0,"c"),attrs:{_i:0},on:{touchmove:function(e){return t.$handleViewEvent(e,{stop:!0,prevent:!0})}}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{"hover-class":"uv-hover-class",_i:1}},[i("v-uni-text",{staticClass:t._$g(2,"sc"),style:t._$g(2,"s"),attrs:{_i:2},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(t._$g(2,"t0-0"))])],1),t._$g(3,"i")?i("v-uni-text",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._v(t._$g(3,"t0-0"))]):t._e(),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{"hover-class":"uv-hover-class",_i:4}},[i("v-uni-text",{staticClass:t._$g(5,"sc"),style:t._$g(5,"s"),attrs:{_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(t._$g(5,"t0-0"))])],1)],1):t._e()},n=[]},b1a2:function(t,e,i){var a=i("09f9");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("5a312b22",a,!0,{sourceMap:!1,shadowMode:!1})},b257:function(t,e,i){"use strict";var a=i("034c"),n=i.n(a);n.a},b273:function(t,e,i){"use strict";var a=i("d144"),n=i.n(a);n.a},b297:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"AliOssUploader",props:["value","fileString","buttonText","tips","maxCount","maxSize","showPreview","deletable","btnStyle","accept","userId","width","type","kind"],data:function(){return{wxsProps:{}}},components:{}}},b2b7:function(t,e,i){"use strict";var a=i("c2fc"),n=i.n(a);n.a},b2fb:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("searchBox",{attrs:{_i:2},on:{confirm:function(e){return t.$handleViewEvent(e)},search:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(2,"v-model"),callback:function(){},expression:"queryData.title"}}),i("serviecFirstTab",{attrs:{_i:3},on:{"tab-click":function(e){return t.$handleViewEvent(e)}}}),i("CommonList",{ref:"groupRef",attrs:{_i:4},scopedSlots:t._u([{key:"listData",fn:function(t,e,a){t.list;return[i("syrCardList",{attrs:{_i:"6-"+a}})]}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"8-"+a}})]}}])})],1)},r=[]},b32f:function(t,e,i){"use strict";i.r(e);var a=i("49a9"),n=i("bce8");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("5a51");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"83d11034",null,!1,a["a"],void 0);e["default"]=o.exports},b339:function(t,e,i){"use strict";i.r(e);var a=i("5777"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},b389:function(t,e,i){"use strict";var a=i("618b"),n=i.n(a);n.a},b395:function(t,e,i){var a=i("1128");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("d15681c6",a,!0,{sourceMap:!1,shadowMode:!1})},b3e7:function(t,e,i){"use strict";i.r(e);var a=i("edf4"),n=i("e1ae");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("66d5");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"21c4bd17",null,!1,a["a"],void 0);e["default"]=o.exports},b3f6:function(t,e,i){t.exports=i.p+"static/images/icons/tabBj2.png"},b3f9:function(t,e,i){var a=i("0646");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("0934770d",a,!0,{sourceMap:!1,shadowMode:!1})},b42f:function(t,e,i){"use strict";i.r(e);var a=i("2320"),n=i("be69");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("1024");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},b450:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.list-filter[data-v-250f388c]{background:#fff;border-radius:20rpx 20rpx 0rpx 0rpx}.list-filter .list-filter-tabs[data-v-250f388c]{display:flex;gap:50rpx;padding-left:30rpx;padding-top:30rpx;padding-bottom:12rpx}.list-filter .list-filter-tabs .list-filter-tabs-item[data-v-250f388c]{display:inline-block;position:relative;font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal;white-space:nowrap}.list-filter .list-filter-tabs .list-filter-tabs-item[data-v-250f388c]:active{opacity:.8}.list-filter .list-filter-tabs .list-filter-tabs-item.active[data-v-250f388c]{color:#e8101e;font-weight:600}.list-filter .list-filter-tabs .list-filter-tabs-item.active[data-v-250f388c]::after{content:"";position:absolute;width:34rpx;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);bottom:-6rpx;height:6rpx;background:linear-gradient(306deg,#e8101e,#e8101e);border-radius:3rpx}.list-filter .list-filter-tabs2[data-v-250f388c]{display:flex;flex-wrap:wrap;gap:40rpx;padding:24rpx 20rpx}.list-filter .list-filter-tabs2 .list-filter-tabs2-item[data-v-250f388c]{width:168rpx;height:56rpx;background:#f0f0f0;border-radius:6rpx;font-weight:400;font-size:26rpx;color:#666;text-align:center;font-style:normal;display:flex;align-items:center;justify-content:center;white-space:nowrap}.list-filter .list-filter-tabs2 .list-filter-tabs2-item[data-v-250f388c]:active{opacity:.8}.list-filter .list-filter-tabs2 .list-filter-tabs2-item.active[data-v-250f388c]{color:#e8101e;background:rgba(252,67,124,.1);font-weight:600}.noDataBox[data-v-250f388c]{background-color:#fff;height:100%;margin:0rpx;border-radius:20rpx}.common-list[data-v-250f388c]{background:#f5f5f5;padding-bottom:0}[data-v-250f388c] .list-scroll{margin-top:0!important;padding:20rpx;box-sizing:border-box}.order-card[data-v-250f388c]{margin:0rpx 0rpx 20rpx 0rpx}',""]),t.exports=e},b466:function(t,e,i){"use strict";i.r(e);var a=i("8e27"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},b49c:function(t,e,i){"use strict";function a(t,e){for(var i=[],a={},n=0;ni.parts.length&&(a.parts.length=i.parts.length)}else{var r=[];for(n=0;n")])],1)],1),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("v-uni-text",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v(t._$g(22,"t0-0")+"\u5143")]),i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[i("v-uni-text",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[t._v("\u94b1\u5305\u4f59\u989d")]),i("v-uni-text",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v(">")])],1)],1),i("v-uni-image",{staticClass:t._$g(26,"sc"),attrs:{src:"/static/images/accout_bg.png",mode:"aspectFill",_i:26}})],1),i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28}},[i("v-uni-text",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v(t._$g(29,"t0-0")+"\u5355")]),i("uni-view",{staticClass:t._$g(30,"sc"),attrs:{_i:30}},[i("v-uni-text",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[t._v("\u5168\u90e8\u8ba2\u5355")]),i("v-uni-text",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[t._v(">")])],1)],1),i("v-uni-image",{staticClass:t._$g(33,"sc"),attrs:{src:"/static/images/order_bg.png",mode:"aspectFill",_i:33}})],1)],1),i("uni-view",{attrs:{_i:34},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u8d2d\u4e70\u670d\u52a1 ")]),i("uni-view",{attrs:{_i:35},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u670d\u52a1\u8ba2\u5355 ")]),i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[i("uni-view",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[i("v-uni-text",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v("\u670d\u52a1\u7ba1\u7406")]),i("v-uni-text",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[t._v(t._$g(40,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[t._v("\u5df2\u4e0a\u67b6\u670d\u52a1\u6570\u91cf")])],1),i("uni-view",{staticClass:t._$g(42,"sc"),attrs:{_i:42},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(43,"sc"),attrs:{_i:43}},[t._v("\u70b9\u51fb\u8fdb\u5165")])],1)],1)],1),i("uni-view",{staticClass:t._$g(44,"sc"),attrs:{_i:44}},[i("uni-view",{staticClass:t._$g(45,"sc"),attrs:{_i:45},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[t._v("\u5ba2\u670d")]),i("v-uni-text",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[t._v(">")])],1)],1)],1)],1)},r=[]},dc23:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-radio-group",data:function(){return{wxsProps:{}}},components:{}}},dc26:function(t,e,i){"use strict";var a=i("28f3"),n=i.n(a);n.a},dc2f:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".search[data-v-55b21b40]{padding:20rpx 24rpx;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;background-color:#fff}.back[data-v-55b21b40]{width:16rpx;height:32rpx;\n\nmargin-right:20rpx}.search-right[data-v-55b21b40]{width:660rpx;height:64rpx;background-color:#fff;border-radius:32rpx;position:relative;\n}.search-inp[data-v-55b21b40]{flex:1;height:64rpx;height:64rpx;font-size:24rpx;color:#000;border-width:0;padding:0 70rpx 0 48rpx;\n}.search-icon[data-v-55b21b40]{width:32rpx;height:32rpx;position:absolute;right:40rpx;top:16rpx;\n}\n\n\n\n",""]),t.exports=e},ddad:function(t,e,i){"use strict";var a=i("524d"),n=i.n(a);n.a},ddd8:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.service-page[data-v-e2a6e264]{padding-bottom:30rpx}.flexed[data-v-e2a6e264]{position:-webkit-sticky;position:sticky;top:88rpx;left:0;z-index:999}.search-inp[data-v-e2a6e264]{width:700rpx;height:68rpx;background-color:#eef4fa;border-radius:34rpx;padding:0 70rpx 0 48rpx;font-size:28rpx;box-sizing:border-box}.placeholder[data-v-e2a6e264]{color:#999}.search-icon[data-v-e2a6e264]{width:32rpx;height:32rpx;position:absolute;right:56rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tab-container[data-v-e2a6e264]{width:100vw;box-sizing:border-box;display:flex;gap:48rpx;align-items:center;background-color:#fafafa;padding:30rpx 0rpx 20rpx 30rpx;overflow-x:auto}.tab-item[data-v-e2a6e264]{flex-shrink:0;text-align:center;font-size:30rpx;color:#666;padding:16rpx 0;position:relative}.tab-item.active[data-v-e2a6e264]{color:#000;font-weight:500}.tab-item.active[data-v-e2a6e264]::after{content:"";position:absolute;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:32rpx;height:6rpx;background-color:#e8101e;border-radius:3rpx}.service-nothings[data-v-e2a6e264]{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:280rpx 0 0}.nothings-text[data-v-e2a6e264]{font-size:32rpx;font-weight:500;color:#999;text-align:center;font-style:italic}\n.service-image[data-v-e2a6e264]{border:1rpx solid #eee}.flexed[data-v-e2a6e264]{top:calc(var(--status-bar-height) + 88rpx)}\r\n\r\n\r\n\r\n\r\n\r\n\r\n',""]),t.exports=e},de6c:function(t,e,i){var a=i("7480");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("a57c3596",a,!0,{sourceMap:!1,shadowMode:!1})},de91:function(t,e,i){"use strict";var a=i("bbe6"),n=i.n(a);n.a},de94:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"search-box",props:["value","placeholder","showBack","width","height","border","bgClor"],data:function(){return{wxsProps:{}}},components:{}}},ded7:function(t,e,i){var a=i("ebe4");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("bb381800",a,!0,{sourceMap:!1,shadowMode:!1})},def9:function(t,e,i){var a=i("1dff");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("6a47092e",a,!0,{sourceMap:!1,shadowMode:!1})},def92:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".share-page{padding-bottom:30rpx}.invite{margin:24rpx;padding:48rpx;display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;background-color:#fff;border-radius:12rpx}.invite-num{font-size:32rpx;color:#333;font-weight:500;margin-bottom:16rpx}.invite-tit{font-size:24rpx;color:#858585}.qrcode-box{width:360rpx;height:360rpx;border-radius:16rpx;border:6rpx solid #e8101e;margin-top:34rpx}.invite-lists{margin:24rpx;background-color:#fff;border-radius:12rpx}.invite-lists-tit{display:block;font-size:32rpx;font-weight:500;color:#333;padding:32rpx 0;text-align:center;border-bottom:1rpx solid rgba(0,0,0,.05)}.invite-lists-cont{padding:24rpx}.invite-list-tit,.invite-list-item{display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center;margin-bottom:32rpx}.invite-list-item:last-child{margin-bottom:0}.title{font-size:28rpx;color:#333;text-align:center}.item-title{font-size:24rpx;color:#333;text-align:center}.tit1{min-width:140rpx}.tit2{min-width:150rpx}.tit3{min-width:114rpx}.tit4{min-width:226rpx}.nothing-box{padding:150rpx 0;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}.nothing-text{font-size:24rpx;font-weight:400;color:#9e9e9e}",""]),t.exports=e},df05:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default,uvPopup:i("05d1").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("searchBox",{attrs:{_i:2},on:{confirm:function(e){return t.$handleViewEvent(e)},search:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(2,"v-model"),callback:function(){},expression:"queryData.name"}}),t._$g(3,"i")?i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-text",{attrs:{_i:4}},[t._v("\u62b1\u6b49\u5440\uff0c\u60a8\u6240\u9009\u62e9\u7684\u5730\u5740\u6682\u65f6\u6ca1\u6709\u5408\u9002\u7684\u624b\u827a\u4eba\uff5e\u8bd5\u8bd5\u8c03\u6574\u6362\u4e2a\u5730\u5740\uff0c\u9a6c\u4e0a\u4e3a\u60a8\u5339\u914d\u65b0\u7684\u4eba\u9009\u54e6\u3002")])],1):t._e(),i("CommonList",{ref:"groupRef",attrs:{_i:5},on:{"load-success-all":function(e){return t.$handleViewEvent(e)}},scopedSlots:t._u([{key:"listData",fn:function(e,a,n){e.list;return[a._$g("7-"+n,"i")?i("uni-view",{staticClass:a._$g("7-"+n,"sc"),attrs:{_i:"7-"+n}},[i("uni-view",{staticClass:a._$g("8-"+n,"sc"),attrs:{_i:"8-"+n}},[i("v-uni-image",{staticClass:a._$g("9-"+n,"sc"),attrs:{src:"/static/images/icons/tip.png",_i:"9-"+n}}),i("v-uni-text",{attrs:{_i:"10-"+n}},[t._v("\u6682\u4e0d\u6ee1\u8db3\u6b64\u5730\u5740\u548c\u65f6\u95f4\u7684\u624b\u827a\u4eba")])],1)],1):t._e(),i("uni-view",{staticClass:a._$g("11-"+n,"sc"),class:a._$g("11-"+n,"c"),attrs:{_i:"11-"+n}},t._l(a._$g("12-"+n,"f"),(function(e,r,s,o){return i("uni-view",{key:e,staticClass:a._$g("12-"+n+o,"sc"),attrs:{_i:"12-"+n+o},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:a._$g("13-"+n+o,"sc"),attrs:{src:a._$g("13-"+n+o,"a-src"),mode:"aspectFill",_i:"13-"+n+o}}),i("uni-view",{staticClass:a._$g("14-"+n+o,"sc"),attrs:{_i:"14-"+n+o}},[i("uni-view",{staticClass:a._$g("15-"+n+o,"sc"),attrs:{_i:"15-"+n+o}},[i("v-uni-text",{staticClass:a._$g("16-"+n+o,"sc"),attrs:{_i:"16-"+n+o}},[t._v(a._$g("16-"+n+o,"t0-0"))]),i("uni-view",{staticClass:a._$g("17-"+n+o,"sc"),attrs:{_i:"17-"+n+o},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{attrs:{_i:"18-"+n+o}},[t._v("\u66f4\u591a\u4fe1\u606f")]),i("v-uni-image",{staticClass:a._$g("19-"+n+o,"sc"),attrs:{src:"/static/images/icons/right_gray4.png",_i:"19-"+n+o}})],1)],1),i("uni-view",{staticClass:a._$g("20-"+n+o,"sc"),attrs:{_i:"20-"+n+o}},[i("v-uni-text",{attrs:{_i:"21-"+n+o}},[t._v("\u5230\u5bb6\u65f6\u95f4\uff1a"+a._$g("21-"+n+o,"t0-0"))])],1),a._$g("22-"+n+o,"i")?i("uni-view",{staticClass:a._$g("22-"+n+o,"sc"),attrs:{_i:"22-"+n+o}},[i("uni-view",{staticClass:a._$g("23-"+n+o,"sc"),attrs:{_i:"23-"+n+o}},[t._v(" \u6240\u5c5e\u95e8\u5e97 ")]),i("span",{staticClass:a._$g("24-"+n+o,"sc"),attrs:{_i:"24-"+n+o}},[t._v(" | ")]),i("uni-view",{staticClass:a._$g("25-"+n+o,"sc"),attrs:{_i:"25-"+n+o}},[t._v(" "+a._$g("25-"+n+o,"t0-0")+" ")])],1):t._e(),a._$g("26-"+n+o,"i")?i("uni-view",{staticClass:a._$g("26-"+n+o,"sc"),attrs:{_i:"26-"+n+o},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("uni-view",{staticClass:a._$g("27-"+n+o,"sc"),attrs:{_i:"27-"+n+o}},[t._v(" \u6240\u5c5e\u95e8\u5e97 ")]),i("span",{staticClass:a._$g("28-"+n+o,"sc"),attrs:{_i:"28-"+n+o}},[t._v(" | ")]),i("uni-view",{staticClass:a._$g("29-"+n+o,"sc"),attrs:{_i:"29-"+n+o}},[t._v(" "+a._$g("29-"+n+o,"t0-0")+" "),a._$g("30-"+n+o,"i")?i("v-uni-image",{staticClass:a._$g("30-"+n+o,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/4c5f282e-bad3-4c27-b653-9bd5100ae639.png",mode:"aspectFill",referrer:"no-referrer",_i:"30-"+n+o}}):t._e()],1),a._$g("31-"+n+o,"i")?i("uni-view",{staticClass:a._$g("31-"+n+o,"sc"),attrs:{_i:"31-"+n+o}},t._l(a._$g("32-"+n+"-"+o,"f"),(function(e,r,s,c){return i("uni-view",{key:e,staticClass:a._$g("32-"+n+o+"-"+c,"sc"),class:a._$g("32-"+n+o+"-"+c,"c"),attrs:{_i:"32-"+n+o+"-"+c},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+a._$g("32-"+n+o+"-"+c,"t0-0")+" ")])})),1):t._e()],1):t._e()],1),i("uni-view",{staticClass:a._$g("33-"+n+o,"sc"),attrs:{_i:"33-"+n+o}},[i("uni-view",{staticClass:a._$g("34-"+n+o,"sc"),attrs:{_i:"34-"+n+o}},[i("v-uni-image",{staticClass:a._$g("35-"+n+o,"sc"),attrs:{src:"/static/images/icons/address_icon3.png",_i:"35-"+n+o}}),i("v-uni-text",{staticClass:a._$g("36-"+n+o,"sc"),attrs:{_i:"36-"+n+o}},[t._v("\u670d\u52a1\u533a\u57df\uff1a"+a._$g("36-"+n+o,"t0-0"))])],1)],1)],1)})),1)]}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"38-"+a}})]}}])}),i("uv-popup",{ref:"popup",attrs:{_i:39}},[i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[i("uni-view",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[i("v-uni-image",{staticClass:t._$g(43,"sc"),attrs:{src:t._$g(43,"a-src"),mode:"aspectFill",_i:43}}),i("uni-view",{staticClass:t._$g(44,"sc"),attrs:{_i:44}},[i("v-uni-text",{staticClass:t._$g(45,"sc"),attrs:{_i:45}},[t._v(t._$g(45,"t0-0"))]),i("uni-view",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[i("v-uni-image",{staticClass:t._$g(47,"sc"),attrs:{src:"/static/images/icons/experience.png",_i:47}}),i("v-uni-text",{attrs:{_i:48}},[t._v("\u4e13\u4e1a\u7ecf\u9a8c\uff1a"+t._$g(48,"t0-0"))])],1)],1)],1),i("v-uni-text",{staticClass:t._$g(49,"sc"),attrs:{_i:49},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(50,"sc"),attrs:{_i:50}},[i("uni-view",{staticClass:t._$g(51,"sc"),attrs:{_i:51}},[i("v-uni-image",{staticClass:t._$g(52,"sc"),attrs:{src:"/static/images/icons/time_icon.png",_i:52}}),i("v-uni-text",{staticClass:t._$g(53,"sc"),attrs:{_i:53}},[t._v("\u5230\u5bb6\u65f6\u95f4\uff1a "),i("v-uni-text",{staticStyle:{color:"#333333"},attrs:{_i:54}},[t._v(t._$g(54,"t0-0"))])],1)],1),t._$g(55,"i")?i("uni-view",{staticClass:t._$g(55,"sc"),attrs:{_i:55}},[i("v-uni-image",{staticClass:t._$g(56,"sc"),attrs:{src:"/static/images/icons/address_icon3.png",_i:56}}),i("v-uni-text",{staticClass:t._$g(57,"sc"),attrs:{_i:57}},[t._v("\u670d\u52a1\u533a\u57df\uff1a"),i("v-uni-text",{staticStyle:{color:"#333333"},attrs:{_i:58}},[t._v(t._$g(58,"t0-0"))])],1)],1):t._e(),t._$g(59,"i")?i("uni-view",{staticClass:t._$g(59,"sc"),attrs:{_i:59}},[i("v-uni-text",{staticClass:t._$g(60,"sc"),attrs:{_i:60}},[t._v("\u6240\u5c5e\u95e8\u5e97\uff1a")]),i("uni-view",{staticClass:t._$g(61,"sc"),attrs:{_i:61}},[i("uni-view",{staticClass:t._$g(62,"sc"),attrs:{_i:62}},[t._v(" "+t._$g(62,"t0-0")+" ")])],1)],1):t._e()],1),i("uni-view",{staticClass:t._$g(63,"sc"),attrs:{_i:63}},[i("v-uni-image",{staticClass:t._$g(64,"sc"),attrs:{src:"/static/images/icons/Introduction.png",_i:64}}),i("v-uni-text",{attrs:{_i:65}},[t._v(t._$g(65,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(66,"sc"),attrs:{_i:66},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1)],1)],1)},r=[]},df30:function(t,e,i){"use strict";i.r(e);var a=i("2524"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},df31:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,uniPopup:i("c3a6").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),t._$g(2,"i")?i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-text",{attrs:{_i:3}},[t._v("\u8bf7\u53d8\u66f4\u60a8\u9700\u8981\u53d8\u66f4\u7684\u4fe1\u606f")])],1):t._e(),i("uni-view",{staticClass:t._$g(4,"sc"),style:t._$g(4,"s"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}}),i("v-uni-text",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v("\u8d44\u8d28\u4fe1\u606f")])],1),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u5065\u5eb7\u8bc1")]),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v("\u8bf7\u4fdd\u8bc1\u7167\u7247\u4e0a\u7684\u6587\u5b57\u6e05\u6670\u3001\u65e0\u906e\u6321\u3001\u8bc1\u4ef6\u8fb9\u89d2\u53ef\u89c1\u3002")]),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._$g(17,"i")?i("v-uni-image",{staticClass:t._$g(17,"sc"),attrs:{src:t._$g(17,"a-src"),mode:"aspectFill",_i:17}}):i("v-uni-image",{staticClass:t._$g(18,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/92bd4268-b4d7-4725-8664-9e44f828c7d9",mode:"aspectFit",_i:18}})],1)],1),i("v-uni-text",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v("\u8bf7\u4e0a\u4f20\u5065\u5eb7\u8bc1")])],1)],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[i("v-uni-text",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v("\u5065\u5eb7\u8bc1\u6709\u6548\u671f\u81f3\uff1a")]),i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(25,"sc"),class:t._$g(25,"c"),attrs:{_i:25}},[t._$g(26,"i")?i("v-uni-image",{staticClass:t._$g(26,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/cb185ec8-9d30-4e53-b5dc-14b546013a60",mode:"aspectFit",_i:26}}):t._e()],1),i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._v("\u957f\u4e45\u6709\u6548")])],1),i("uni-view",{staticClass:t._$g(28,"sc"),attrs:{_i:28},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(29,"sc"),class:t._$g(29,"c"),attrs:{_i:29}},[t._$g(30,"i")?i("v-uni-image",{staticClass:t._$g(30,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/cb185ec8-9d30-4e53-b5dc-14b546013a60",mode:"aspectFit",_i:30}}):t._e()],1),i("v-uni-text",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[t._v("\u6307\u5b9a\u65e5\u671f\u6709\u6548")])],1)],1)],1),i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32}},[i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[i("v-uni-text",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[t._v("\u5f00\u59cb\u65e5\u671f")]),i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{class:t._$g(37,"c"),attrs:{_i:37}},[t._v(" "+t._$g(37,"t0-0")+" ")]),i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}}),i("v-uni-image",{staticClass:t._$g(39,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/ce52b49f-2261-49ca-96ed-e9ad47049649",mode:"aspectFit",_i:39}})],1)],1),i("uni-view",{staticClass:t._$g(40,"sc"),attrs:{_i:40}},[i("v-uni-text",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[t._v("\u7ed3\u675f\u65e5\u671f")]),i("uni-view",{staticClass:t._$g(42,"sc"),class:t._$g(42,"c"),attrs:{_i:42},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{class:t._$g(43,"c"),attrs:{_i:43}},[t._v(" "+t._$g(43,"t0-0")+" ")]),i("uni-view",{staticClass:t._$g(44,"sc"),attrs:{_i:44}}),i("v-uni-image",{staticClass:t._$g(45,"sc"),attrs:{src:t._$g(45,"a-src"),mode:"aspectFit",_i:45}})],1)],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(46,"sc"),attrs:{_i:46}},[i("uni-view",{staticClass:t._$g(47,"sc"),attrs:{_i:47}},[i("v-uni-text",{staticClass:t._$g(48,"sc"),attrs:{_i:48}},[t._v("\u6280\u5e08\u8d44\u8d28\u7167\u7247")]),i("uni-view",{staticClass:t._$g(49,"sc"),attrs:{_i:49}},[i("uni-view",{staticClass:t._$g(50,"sc"),attrs:{_i:50}},[t._l(t._$g(51,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("51-"+r,"sc"),attrs:{_i:"51-"+r}},[i("v-uni-image",{staticClass:t._$g("52-"+r,"sc"),attrs:{src:t._$g("52-"+r,"a-src"),mode:"aspectFill",_i:"52-"+r}}),t._$g("53-"+r,"i")?i("uni-view",{staticClass:t._$g("53-"+r,"sc"),attrs:{_i:"53-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\xd7")]):t._e()],1)})),t._$g(54,"i")?i("uni-view",{staticClass:t._$g(54,"sc"),attrs:{_i:54},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(55,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/d3aa85b5-6b36-40f9-99ce-682499a5e87d",mode:"aspectFit",_i:55}})],1):t._e()],2)],1)],1)],1),i("uni-view",{staticClass:t._$g(56,"sc"),attrs:{_i:56}})],1),i("uni-view",{ref:"buttonArea",staticClass:t._$g(57,"sc"),attrs:{_i:57}},[t._$g(58,"i")?i("uni-view",{staticClass:t._$g(58,"sc"),attrs:{_i:58}},[i("uni-view",{staticClass:t._$g(59,"sc"),attrs:{_i:59}},[t._v("\u60a8\u7684\u63d0\u4ea4\u5df2\u9a73\u56de")]),i("uni-view",{staticClass:t._$g(60,"sc"),attrs:{_i:60}},[t._v("\u9a73\u56de\u539f\u56e0\uff1a"+t._$g(60,"t0-0"))])],1):t._e(),t._$g(61,"i")?i("uni-view",{staticClass:t._$g(61,"sc"),attrs:{_i:61}},[i("v-uni-text",{staticClass:t._$g(62,"sc"),attrs:{_i:62}},[t._v("\u60a8\u7684\u63d0\u4ea4\u53d8\u66f4\u6b63\u5728\u5ba1\u6838\u4e2d...")])],1):t._e(),t._$g(63,"i")?i("uni-view",{staticClass:t._$g(63,"sc"),attrs:{_i:63},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(64,"sc"),attrs:{_i:64}},[t._v("\u53d8\u66f4\u4fe1\u606f")])],1):t._e(),t._$g(65,"i")?i("uni-view",{staticClass:t._$g(65,"sc"),attrs:{_i:65}},[i("uni-view",{staticClass:t._$g(66,"sc"),attrs:{_i:66},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(67,"sc"),attrs:{_i:67}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(68,"sc"),attrs:{_i:68},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(69,"sc"),attrs:{_i:69}},[t._v("\u63d0\u4ea4")])],1)],1):t._e(),t._$g(70,"i")?i("uni-view",{staticClass:t._$g(70,"sc"),attrs:{_i:70},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(71,"sc"),attrs:{_i:71}},[t._v(t._$g(71,"t0-0"))])],1):t._e(),t._$g(72,"i")?i("uni-view",{staticClass:t._$g(72,"sc"),attrs:{_i:72},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(73,"sc"),attrs:{_i:73}},[t._v("\u91cd\u65b0\u63d0\u4ea4")])],1):t._e()],1),i("uni-popup",{ref:"datePicker",attrs:{_i:74}},[i("uni-view",{staticClass:t._$g(75,"sc"),attrs:{_i:75}},[i("uni-view",{staticClass:t._$g(76,"sc"),attrs:{_i:76}},[i("v-uni-text",{staticClass:t._$g(77,"sc"),attrs:{_i:77},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")]),i("v-uni-text",{staticClass:t._$g(78,"sc"),attrs:{_i:78}},[t._v("\u9009\u62e9\u65e5\u671f")]),i("v-uni-text",{staticClass:t._$g(79,"sc"),attrs:{_i:79},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u786e\u5b9a")])],1),i("v-uni-picker-view",{staticClass:t._$g(80,"sc"),attrs:{value:t._$g(80,"a-value"),"indicator-style":t._$g(80,"a-indicator-style"),_i:80},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-picker-view-column",{attrs:{_i:81}},t._l(t._$g(82,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("82-"+r,"sc"),attrs:{_i:"82-"+r}},[t._v(t._$g("82-"+r,"t0-0")+"\u5e74")])})),1),i("v-uni-picker-view-column",{attrs:{_i:83}},t._l(t._$g(84,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("84-"+r,"sc"),attrs:{_i:"84-"+r}},[t._v(t._$g("84-"+r,"t0-0")+"\u6708")])})),1),i("v-uni-picker-view-column",{attrs:{_i:85}},t._l(t._$g(86,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("86-"+r,"sc"),attrs:{_i:"86-"+r}},[t._v(t._$g("86-"+r,"t0-0")+"\u65e5")])})),1)],1)],1)],1)],1)},r=[]},df4e:function(t,e,i){"use strict";i.r(e);var a=i("8a8e"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},df9c:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},t._l(t._$g(4,"f"),(function(e,a,n,r){return i("uni-view",{key:e,class:t._$g("4-"+r,"c"),attrs:{_i:"4-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("4-"+r,"t0-0")+" ")])})),1)],1),t._$g(5,"i")?i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},t._l(t._$g(6,"f"),(function(e,a,n,r){return i("orderCard",{key:e,attrs:{_i:"6-"+r},on:{goDetail:function(e){return t.$handleViewEvent(e)},goPay:function(e){return t.$handleViewEvent(e)},goRefund:function(e){return t.$handleViewEvent(e)},cancel:function(e){return t.$handleViewEvent(e)},reOrder:function(e){return t.$handleViewEvent(e)}}})})),1):i("noData",{attrs:{_i:7}}),t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-text",{attrs:{_i:9}},[t._v("\u5df2\u52a0\u8f7d\u5168\u90e8")])],1):t._e()],1)},r=[]},dfd8:function(t,e,i){var a=i("681e");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("2b5df959",a,!0,{sourceMap:!1,shadowMode:!1})},dfd9:function(t,e,i){"use strict";i.r(e);var a=i("11a9"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},dfdd:function(t,e,i){"use strict";i.r(e);var a=i("755c"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},e041:function(t,e,i){"use strict";var a=i("8c1c"),n=i.n(a);n.a},e050:function(t,e,i){"use strict";i.r(e);var a=i("0c3f"),n=i("7a08");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("6350");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},e05b:function(t,e,i){"use strict";i.r(e);var a=i("283b"),n=i("5115");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("8974");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"c405c53e",null,!1,a["a"],void 0);e["default"]=o.exports},e06e:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".message-page{background-position:0 0;background-size:100%;background-repeat:no-repeat;background-image:url(https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/22cf01ee-4a27-4a65-a032-9ceb6265ac2c.png)}.message-page .message-header{padding:25rpx 30rpx 0rpx 25rpx;display:flex;align-items:center;justify-content:space-between}.message-page .message-header .message-header-left{width:191rpx;height:69rpx}.message-page .message-header .message-header-right{display:flex;align-items:center;gap:30rpx}.message-page .message-header .message-header-right .icon-broom{width:38rpx;height:37rpx}.message-page .message-header .message-header-right .icon-dots{display:flex;align-items:center;gap:6rpx}.message-page .message-header .message-header-right .icon-dots .dot{width:6rpx;height:6rpx;border-radius:50%;background-color:#333}.message-page .message-state{box-sizing:border-box;padding:30rpx 110rpx;margin-top:33rpx;width:100%;height:212rpx;background-size:100%;background-repeat:no-repeat;background-image:url(https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/110df663-bb15-4b63-a46e-571b65c30955.png)}.message-page .message-state .message-state-card{width:148rpx;display:flex;flex-wrap:wrap;justify-content:center;position:relative}.message-page .message-state .message-state-card .state-card-num{position:absolute;left:112rpx;top:-13rpx;padding:3rpx 12rpx;border-radius:19rpx;background:#ed5b36;font-weight:500;font-size:24rpx;color:#fff;line-height:33rpx;text-align:left}.message-page .message-state .message-state-card .state-card-img{width:148rpx;height:94rpx}.message-page .message-state .message-state-card .state-card-text{margin-top:18rpx;font-weight:400;font-size:28rpx;color:#1f0508;line-height:40rpx;text-align:left}.message-page .message-list{padding:0rpx;margin-top:20rpx}.message-page .message-item{background-color:#fff;border-radius:20rpx;padding:20rpx;margin-bottom:20rpx;box-shadow:0 4rpx 12rpx rgba(0,0,0,.02)}.message-page .item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:40rpx}.message-page .item-title-group{display:flex;align-items:center}.message-page .item-icon{width:57rpx;height:49rpx;margin-right:10rpx;flex-shrink:0}.message-page .item-title{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:28rpx;color:#333;line-height:40rpx;text-align:left}.message-page .item-dot{width:16rpx;height:16rpx;border-radius:50%;background-color:#e8101e;margin-left:8rpx}.message-page .item-time{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:24rpx;color:#a5a5a5;line-height:33rpx;text-align:left;flex-shrink:0;margin-left:20rpx}.message-page .item-body{display:flex;flex-direction:row;align-items:center;gap:59rpx}.message-page .item-info{flex:1;display:flex;flex-direction:column;gap:5rpx;font-weight:400;font-size:26rpx;color:#666;line-height:37rpx}.message-page .item-order{word-break:break-all;letter-spacing:0}.message-page .item-desc{word-break:break-all}.message-page .item-product-img{width:100rpx;height:100rpx;border-radius:10rpx;flex-shrink:0}.common-list{background:#f5f5f5!important}",""]),t.exports=e},e093:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".popupShow[data-v-8cc68e48]{overflow:hidden;position:fixed}.upload-app[data-v-8cc68e48]{width:568rpx;background-color:#fff;position:relative;border-radius:20rpx}.upload-app__bj[data-v-8cc68e48]{width:568rpx;height:317rpx;position:absolute;left:0;top:-23rpx;z-index:0}.upload-app__main[data-v-8cc68e48]{z-index:1;position:relative}.upload-app__main__title[data-v-8cc68e48]{font-weight:600;font-size:46rpx;color:#333;line-height:65rpx;text-align:left;font-style:normal;padding:40rpx 38rpx 14rpx 38rpx}.upload-app__main__version[data-v-8cc68e48]{margin-left:38rpx;width:auto;display:inline;padding:4rpx 10rpx;background:linear-gradient(136deg,#fed7f5,#fbdce5);border-radius:0rpx 10rpx 0rpx 10rpx}.upload-app__main__version__text[data-v-8cc68e48]{font-weight:400;font-size:18rpx;color:#e8101e;line-height:25rpx;text-align:left;font-style:normal}.upload-app__main__content__title[data-v-8cc68e48]{padding-left:39rpx;padding-top:38rpx;font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.upload-app__main__contents[data-v-8cc68e48]{padding:20rpx 40rpx 40rpx 40rpx;display:flex;flex-wrap:wrap;row-gap:14rpx}.upload-app__main__contents[data-v-8cc68e48] p{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:26rpx;color:#5e5e60;line-height:37rpx;text-align:left;font-style:normal}.upload-app__main__buttons[data-v-8cc68e48]{padding:0rpx 40rpx 50rpx 40rpx;display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center}.upload-app__main__buttons__Later[data-v-8cc68e48]{width:236rpx;height:78rpx;background:#f6f6f6;border-radius:39rpx;display:flex;align-items:center;justify-content:center}.upload-app__main__buttons__Later__text[data-v-8cc68e48]{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.upload-app__main__buttons__immediately[data-v-8cc68e48]{width:236rpx;height:78rpx;background:#e8101e;border-radius:39rpx;display:flex;align-items:center;justify-content:center}.upload-app__main__buttons__immediately__text[data-v-8cc68e48]{font-weight:500;font-size:30rpx;color:#fff;line-height:42rpx;text-align:left;font-style:normal}.upload-app__main__buttons__immediately.Mandatory[data-v-8cc68e48]{width:100%}.upload-app__main__Progress[data-v-8cc68e48]{padding:10rpx 40rpx 40rpx 40rpx}.upload-app__main__Progress__bar[data-v-8cc68e48]{margin-bottom:20rpx;width:495rpx;height:28rpx;background:#f0f1f3;border-radius:39rpx;position:relative}.upload-app__main__Progress__bar__active[data-v-8cc68e48]{height:28rpx;background:linear-gradient(270deg,#fe78b3,#e8101e);border-radius:39rpx}.upload-app__main__Progress__bar__text[data-v-8cc68e48]{font-weight:400;font-size:24rpx;color:#333;text-align:left;font-style:normal;position:absolute;left:50%;top:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.upload-app__main__Progress__hint[data-v-8cc68e48]{font-weight:400;font-size:20rpx;color:#a5a6ad;line-height:28rpx;text-align:left;font-style:normal;text-align:center}",""]),t.exports=e},e098:function(t,e,i){"use strict";i.r(e);var a=i("e2e7"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},e09c:function(t,e,i){"use strict";var a=i("af39"),n=i.n(a);n.a},e09e:function(t,e,i){"use strict";i.r(e);var a=i("c140"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},e0ae:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},t._l(t._$g(1,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("1-"+r,"sc"),attrs:{_i:"1-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._$g("2-"+r,"i")?i("uni-view",{staticClass:t._$g("2-"+r,"sc"),attrs:{_i:"2-"+r}},[t._$g("3-"+r,"i")?i("v-uni-image",{staticClass:t._$g("3-"+r,"sc"),attrs:{src:t._$g("3-"+r,"a-src"),mode:"aspectFill",_i:"3-"+r}}):t._e(),i("uni-view",{staticClass:t._$g("4-"+r,"sc"),attrs:{_i:"4-"+r}},[t._$g("5-"+r,"i")?i("v-uni-text",{staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r}},[t._v(t._$g("5-"+r,"t0-0"))]):t._e(),t._$g("6-"+r,"i")?i("v-uni-text",{staticClass:t._$g("6-"+r,"sc"),attrs:{_i:"6-"+r}},[t._v(" | ")]):t._e(),t._$g("7-"+r,"i")?i("v-uni-text",{staticClass:t._$g("7-"+r,"sc"),attrs:{_i:"7-"+r}},[t._v(t._$g("7-"+r,"t0-0"))]):t._e(),i("v-uni-image",{staticClass:t._$g("8-"+r,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/f49ad42d-3581-4287-9815-35a13ac555bd.png",_i:"8-"+r}})],1)],1):t._e(),i("uni-view",{staticClass:t._$g("9-"+r,"sc"),attrs:{_i:"9-"+r}},[i("uni-view",{staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r}},[i("uni-view",{staticClass:t._$g("11-"+r,"sc"),attrs:{_i:"11-"+r}},[t._v(t._$g("11-"+r,"t0-0"))]),i("v-uni-image",{staticClass:t._$g("12-"+r,"sc"),attrs:{src:t._$g("12-"+r,"a-src"),mode:"aspectFill",_i:"12-"+r}})],1),i("uni-view",{staticClass:t._$g("13-"+r,"sc"),attrs:{_i:"13-"+r}},[i("uni-view",{staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[i("uni-view",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r}},[t._$g("16-"+r,"i")?i("v-uni-image",{staticClass:t._$g("16-"+r,"sc"),attrs:{mode:"widthFix",src:"/static/images/shop/pintuan/group2.png",_i:"16-"+r}}):t._e(),i("v-uni-text",{staticClass:t._$g("17-"+r,"sc"),style:t._$g("17-"+r,"s"),attrs:{_i:"17-"+r}},[t._v(t._$g("17-"+r,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g("18-"+r,"sc"),attrs:{_i:"18-"+r}},[i("uni-view",{staticClass:t._$g("19-"+r,"sc"),attrs:{_i:"19-"+r}},[i("uni-view",{staticClass:t._$g("20-"+r,"sc"),attrs:{_i:"20-"+r}},[t._v("\uffe5"+t._$g("20-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("21-"+r,"sc"),attrs:{_i:"21-"+r}}),i("uni-view",{staticClass:t._$g("22-"+r,"sc"),attrs:{_i:"22-"+r}},[t._v("\u670d\u52a1\u65f6\u957f\uff1a"+t._$g("22-"+r,"t0-0")+"\u5206\u949f")])],1)],1),i("uni-view",{staticClass:t._$g("23-"+r,"sc"),attrs:{_i:"23-"+r}},[i("v-uni-image",{staticClass:t._$g("24-"+r,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/e37b3bd7-841f-4d57-a11a-2365c81f740e",_i:"24-"+r}}),i("v-uni-text",{attrs:{_i:"25-"+r}},[t._v(t._$g("25-"+r,"t0-0"))])],1),i("uni-view",{staticClass:t._$g("26-"+r,"sc"),attrs:{_i:"26-"+r}},[i("uni-view",{staticClass:t._$g("27-"+r,"sc"),attrs:{_i:"27-"+r}},[t._v("\u9500\u91cf "),i("v-uni-text",{staticClass:t._$g("28-"+r,"sc"),attrs:{_i:"28-"+r}},[t._v(t._$g("28-"+r,"t0-0"))])],1),i("uni-view",{staticClass:t._$g("29-"+r,"sc"),attrs:{_i:"29-"+r}},[t._v(t._$g("29-"+r,"t0-0"))])],1)],1)],1)],1)})),1)},n=[]},e0c1:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[t._l(t._$g(1,"f"),(function(e,a,n,r){return[t._$g("2-"+r,"i")?i("uni-view",{key:e["k0"],staticClass:t._$g("2-"+r,"sc"),style:t._$g("2-"+r,"s"),attrs:{_i:"2-"+r}},[t._v(t._$g("2-"+r,"t0-0"))]):t._e(),t._$g("3-"+r,"i")?i("v-uni-image",{key:e["k1"],staticClass:t._$g("3-"+r,"sc"),style:t._$g("3-"+r,"s"),attrs:{src:t._$g("3-"+r,"a-src"),mode:"aspectFill",_i:"3-"+r}}):t._e()]}))],2)},n=[]},e118:function(t,e,i){"use strict";i.r(e);var a=i("9962"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},e13b:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-code",data:function(){return{wxsProps:{}}},components:{}}},e15b:function(t,e,i){"use strict";var a=i("08fc"),n=i.n(a);n.a},e1ae:function(t,e,i){"use strict";i.r(e);var a=i("1c9a"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},e1b2:function(t,e,i){var a=i("99dc");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("e1663a7c",a,!0,{sourceMap:!1,shadowMode:!1})},e1d7:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".container .container-time[data-v-9c94eae8]{margin-top:20rpx;padding:30rpx;background-color:#fff;display:flex;align-items:center;justify-content:space-between}.container .container-time__left[data-v-9c94eae8]{font-weight:400;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.container .container-time__right[data-v-9c94eae8]{font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.container .container-syr[data-v-9c94eae8]{margin-top:20rpx;padding:30rpx;background-color:#fff}.container .container-syr__user[data-v-9c94eae8]{display:flex;flex-wrap:wrap}.container .container-syr__user__picker__img[data-v-9c94eae8]{width:120rpx;height:120rpx;border-radius:50%}.container .container-syr__user__line[data-v-9c94eae8]{background-color:#f6f5f5;height:3rpx;margin-top:24rpx;width:100%}.container .container-syr__user__introduce[data-v-9c94eae8]{margin-left:10rpx}.container .container-syr__user__introduce__name[data-v-9c94eae8]{margin-top:10rpx;font-weight:500;font-size:28rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal}.container .container-syr__user__introduce__price[data-v-9c94eae8]{margin-top:38rpx;font-weight:500;font-size:28rpx;color:#e8101e;line-height:34rpx;text-align:left;font-style:normal}.container .container-syr__user__detail[data-v-9c94eae8]{margin-top:30rpx;width:100%;display:flex;align-items:center;justify-content:space-between}.container .container-syr__user__detail__name[data-v-9c94eae8]{font-weight:400;font-size:26rpx;color:#999;line-height:34rpx;text-align:left;font-style:normal}.container .container-syr__user__detail__price[data-v-9c94eae8]{font-weight:400;font-size:30rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal}.container .container-footer[data-v-9c94eae8]{position:fixed;bottom:0;left:0;right:0;height:166rpx;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 40rpx 0 30rpx}.container .container-footer__left__title[data-v-9c94eae8]{font-weight:400;font-size:24rpx;color:#333;line-height:33rpx;font-style:normal}.container .container-footer__left__price[data-v-9c94eae8]{font-weight:500;font-size:42rpx;color:#e8101e;line-height:59rpx;font-style:normal}.container .container-footer__right[data-v-9c94eae8]{width:188rpx;height:68rpx;background:linear-gradient(73deg,#fe78b3,#e8101e);border-radius:798rpx;font-weight:400;font-size:30rpx;color:#fff;line-height:39rpx;text-align:right;font-style:normal;display:flex;align-items:center;justify-content:center}",""]),t.exports=e},e26b:function(t,e,i){"use strict";i.r(e);var a=i("d057"),n=i("436e");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("6daf");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"11dbccb5",null,!1,a["a"],void 0);e["default"]=o.exports},e27f:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.service-page[data-v-ce4f0616]{padding-bottom:30rpx}.flexed[data-v-ce4f0616]{position:-webkit-sticky;position:sticky;top:88rpx;left:0;z-index:999;background-color:#fafafa}.search-inp[data-v-ce4f0616]{width:700rpx;height:68rpx;background-color:#eef4fa;border-radius:34rpx;padding:0 70rpx 0 48rpx;font-size:28rpx;box-sizing:border-box}.placeholder[data-v-ce4f0616]{color:#999}.search-icon[data-v-ce4f0616]{width:32rpx;height:32rpx;position:absolute;right:56rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tab-container[data-v-ce4f0616]{width:100vw;box-sizing:border-box;display:flex;gap:48rpx;align-items:center;padding:30rpx 0rpx 20rpx 30rpx;overflow-x:auto}.tab-item[data-v-ce4f0616]{flex-shrink:0;text-align:center;font-size:30rpx;color:#666;padding:16rpx 0;position:relative}.tab-item.active[data-v-ce4f0616]{color:#000;font-weight:500}.tab-item.active[data-v-ce4f0616]::after{content:"";position:absolute;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:32rpx;height:6rpx;background-color:#e8101e;border-radius:3rpx}.service-nothings[data-v-ce4f0616]{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:280rpx 0 0}.nothings-text[data-v-ce4f0616]{font-size:32rpx;font-weight:500;color:#999;text-align:center;font-style:italic}\n.service-image[data-v-ce4f0616]{border:1rpx solid #eee}.flexed[data-v-ce4f0616]{top:calc(var(--status-bar-height) + 88rpx)}\n\n\n\n\n\n\n',""]),t.exports=e},e2c2:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n.time-popup[data-v-2eded93f]{background-color:#fff;border-radius:24rpx 24rpx 0 0;overflow:hidden;-webkit-transform:translateY(0);transform:translateY(0);transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;z-index:999}.popup-header[data-v-2eded93f]{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:30rpx 30rpx 36rpx 30rpx}.popup-close[data-v-2eded93f]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:26rpx;color:#999;line-height:37rpx;text-align:left;font-style:normal}.popup-title[data-v-2eded93f]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:30rpx;color:#333;line-height:42rpx;text-align:left;font-style:normal}.time-picker-content[data-v-2eded93f]{padding:32rpx 32rpx;display:flex;flex-wrap:wrap;flex-direction:row;width:750rpx}.time-picker-content__datas[data-v-2eded93f]{display:flex;flex-direction:row;flex-wrap:wrap;align-items:flex-start;width:690rpx;justify-content:space-between;margin-bottom:30rpx}.time-picker-content__datas__date__item[data-v-2eded93f]{width:214rpx;height:70rpx;background:#f7f8fa;border-radius:10rpx;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.time-picker-content__datas__date__item__text[data-v-2eded93f]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal;z-index:2;position:relative}.time-picker-content__datas__date__item__text.active[data-v-2eded93f]{color:#fff}.time-picker-content__datas__date__item__box[data-v-2eded93f]{width:214rpx;height:74rpx;position:absolute;z-index:1;margin-bottom:8rpx}.time-picker-content__datas__date__item__box__img[data-v-2eded93f]{width:214rpx;height:74rpx}.time-picker-content__time__list[data-v-2eded93f]{width:690rpx;display:flex;flex-direction:row;flex-wrap:wrap}.time-picker-content__time__list__item[data-v-2eded93f]{width:114rpx;height:66rpx;display:flex;flex-direction:column;align-items:center;justify-content:center;margin-bottom:26rpx}.time-picker-content__time__list__item__text[data-v-2eded93f]{font-weight:400;font-size:30rpx;color:#333;line-height:66rpx;text-align:center;font-style:normal}.time-picker-content__time__list__item__state[data-v-2eded93f]{font-size:20rpx}.state-available[data-v-2eded93f]{color:#3c3638}.state-full[data-v-2eded93f]{color:#3c3638;background:#e4e9f0}.state-rest[data-v-2eded93f]{color:#cdcdcd;background:#f7f8f9}.state-locked[data-v-2eded93f]{color:#3c3638;background:#e4e9f0}.state-unavailable[data-v-2eded93f]{color:#fff;background:#e4e9f0}.state-unknown[data-v-2eded93f]{color:#999;background:#f7f8fa}.isActive[data-v-2eded93f]{background:rgba(252,67,124,.08);color:#e8101e!important}.isActive .time-picker-content__time__list__item__text[data-v-2eded93f]{color:#e8101e!important}.firstActive[data-v-2eded93f]{border-radius:51rpx 0rpx 0rpx 51rpx}.lastActive[data-v-2eded93f]{border-radius:0rpx 51rpx 51rpx 0rpx}.time-picker-content__time__sure[data-v-2eded93f]{padding:39rpx 0;display:flex;flex-direction:row;width:690rpx;justify-content:center}.time-picker-content__time__sure__box[data-v-2eded93f]{width:648rpx;height:94rpx;background:#e8101e;border-radius:48rpx;display:flex;align-items:center;justify-content:center}.time-picker-content__time__sure__box__text[data-v-2eded93f]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:30rpx;color:#fff;line-height:42rpx;text-align:center;font-style:normal}",""]),t.exports=e},e2e7:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-popup",props:["mode","duration","zIndex","bgColor","safeArea","overlay","closeOnClickOverlay","overlayOpacity","overlayStyle","safeAreaInsetBottom","safeAreaInsetTop","closeable","closeIconPos","zoom","round"],data:function(){return{wxsProps:{}}},components:{}}},e2f5:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("2251")),r={data:function(){return{wxsProps:{}}},components:{serviecFirstTab:n.default}};e.default=r},e321:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("2077")),r=a(i("86f7")),s=a(i("93a6")),o={data:function(){return{wxsProps:{}}},components:{PopupPicker:n.default,CircleProgress:r.default,AliOssUploader:s.default}};e.default=o},e326:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},t._l(t._$g(1,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("1-"+r,"sc"),attrs:{_i:"1-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g("2-"+r,"sc"),attrs:{_i:"2-"+r}},[i("uni-view",{staticClass:t._$g("3-"+r,"sc"),attrs:{_i:"3-"+r}},[t._v(t._$g("3-"+r,"t0-0"))]),i("v-uni-image",{staticClass:t._$g("4-"+r,"sc"),attrs:{src:t._$g("4-"+r,"a-src"),mode:"aspectFill",_i:"4-"+r}})],1),i("uni-view",{staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r}},[i("uni-view",{staticClass:t._$g("6-"+r,"sc"),attrs:{_i:"6-"+r}},[i("uni-view",{staticClass:t._$g("7-"+r,"sc"),attrs:{_i:"7-"+r}},[t._$g("8-"+r,"i")?i("v-uni-image",{staticClass:t._$g("8-"+r,"sc"),attrs:{mode:"widthFix",src:"/static/images/shop/pintuan/group.png",_i:"8-"+r}}):t._e(),t._v(" "+t._$g("7-"+r,"t1-0")+" ")],1)],1),i("uni-view",{staticClass:t._$g("9-"+r,"sc"),attrs:{_i:"9-"+r}},[i("uni-view",{staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r}},[i("uni-view",{staticClass:t._$g("11-"+r,"sc"),staticStyle:{"font-family":"DINPro, DINPro"},attrs:{_i:"11-"+r}},[t._v("\uffe5"+t._$g("11-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("12-"+r,"sc"),attrs:{_i:"12-"+r}}),i("uni-view",{staticClass:t._$g("13-"+r,"sc"),staticStyle:{"font-family":"DINPro, DINPro"},attrs:{_i:"13-"+r}},[t._v(t._$g("13-"+r,"t0-0")+"\u5206\u949f")])],1)],1),i("uni-view",{staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[i("uni-view",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r}},[t._v("\u9500\u91cf "),i("v-uni-text",{staticClass:t._$g("16-"+r,"sc"),attrs:{_i:"16-"+r}},[t._v(t._$g("16-"+r,"t0-0"))])],1)],1)],1)],1)})),1)},n=[]},e35f:function(t,e,i){var a=i("fabd");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("2f157add",a,!0,{sourceMap:!1,shadowMode:!1})},e39d:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".service-skills-page[data-v-1eae945e]{background-color:#f5f5f5;min-height:100vh;box-sizing:border-box;display:flex;flex-direction:column}.page-content[data-v-1eae945e]{flex:1;overflow-y:auto;padding:20rpx 0;box-sizing:border-box}.audit-tip[data-v-1eae945e]{margin:20rpx 24rpx 20rpx 24rpx;border-radius:12rpx}.audit-text[data-v-1eae945e]{font-weight:400;font-size:32rpx;color:#333;text-align:center;display:block}.reject-reason[data-v-1eae945e]{background:transparent;padding:24rpx}.reject-title[data-v-1eae945e]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:center;font-style:normal}.reject-detail[data-v-1eae945e]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:28rpx;color:#999;line-height:40rpx;text-align:center;font-style:normal;margin-top:12rpx}.skills-header[data-v-1eae945e]{display:flex;align-items:center;margin-bottom:20rpx}.title-bar[data-v-1eae945e]{width:6rpx;height:30rpx;background-color:#e8101e;margin-right:10rpx;border-radius:5rpx}.skills-title[data-v-1eae945e]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#1d2129;line-height:48rpx;text-align:left;font-style:normal}.skills-subtitle[data-v-1eae945e]{margin-left:20rpx;margin-bottom:20rpx;font-family:PingFangSC,PingFang SC;font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal}.box-cont[data-v-1eae945e]{background:#fff;border-radius:20rpx;margin:0 24rpx 24rpx 24rpx;box-shadow:none}.skills-container[data-v-1eae945e]{padding:32rpx}.skills-list[data-v-1eae945e]{display:flex;flex-wrap:wrap;margin:0 -16rpx}.skill-item[data-v-1eae945e]{width:100%;display:flex;align-items:center;padding:20rpx 16rpx;box-sizing:border-box}.checkbox-wrapper[data-v-1eae945e]{margin-right:20rpx}.checkbox[data-v-1eae945e]{width:40rpx;height:40rpx;border:2rpx solid #ddd;border-radius:8rpx;display:flex;align-items:center;justify-content:center}.checkbox.checked[data-v-1eae945e]{background-color:#e8101e;border-color:#e8101e}.check-icon[data-v-1eae945e]{width:42rpx;height:42rpx}.skill-name[data-v-1eae945e]{font-size:28rpx;color:#333}.bottom-actions[data-v-1eae945e]{position:fixed;bottom:0;left:0;right:0;padding:0rpx 24rpx 40rpx 24rpx;background:#fff;z-index:100}.action-btn[data-v-1eae945e]{height:88rpx;border-radius:43rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:400;margin-top:20rpx}.change-info-btn[data-v-1eae945e]{background:linear-gradient(180deg,#f52540,#e8101e)}.view-change-btn[data-v-1eae945e]{background:linear-gradient(180deg,#f52540,#e8101e)}.action-buttons-row[data-v-1eae945e]{display:flex;justify-content:space-between;margin:0 30rpx}.action-buttons-row .action-btn[data-v-1eae945e]{width:270rpx}.cancel-btn[data-v-1eae945e]{background:#e5e5e5;border-radius:43rpx;padding:0 15rpx}.submit-btn[data-v-1eae945e]{background:linear-gradient(180deg,#f52540,#e8101e 100%,#e8101e 0);border-radius:43rpx;padding:0 15rpx}.btn-text[data-v-1eae945e]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:36rpx;color:#fff;line-height:50rpx;text-align:left;font-style:normal}.cancel-text[data-v-1eae945e]{color:#666}",""]),t.exports=e},e40f:function(t,e,i){var a=i("1355");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("16f7d5e2",a,!0,{sourceMap:!1,shadowMode:!1})},e45b:function(t,e,i){"use strict";i.r(e);var a=i("3448"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},e48a:function(t,e,i){"use strict";i.r(e);var a=i("cf13"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},e4c3:function(t,e,i){"use strict";i.r(e);var a=i("3b4f"),n=i("500c");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("680c9");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"6026ffbc",null,!1,a["a"],void 0);e["default"]=o.exports},e521:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},e535:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,"body{background:linear-gradient(180deg,#fff,#fafafa)}.service-first-tab{padding-bottom:27rpx;border-bottom:none;background-color:#fff!important;box-shadow:none}.common-list{background-color:#fafafa!important;padding-top:20rpx;border-radius:30rpx 30rpx 0rpx 0rpx}.common-list .list-container{padding:0 20rpx}.common-list .list-scroll{margin-top:0}",""]),t.exports=e},e56b:function(t,e,i){"use strict";function a(){function t(t){var e=i("6917");e.__inject__&&e.__inject__(t)}"function"===typeof t&&t(),Vue.component("upload-app-vue",i("31a2").default),Vue.component("noData",i("93c2").default),UniViewJSBridge.publishHandler("webviewReady")}i("547b"),"undefined"!==typeof plus?a():document.addEventListener("plusready",a)},e57b:function(t,e,i){var a=i("4d1b");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("268a51f6",a,!0,{sourceMap:!1,shadowMode:!1})},e5be:function(t,e,i){"use strict";i.r(e);var a=i("1aa0"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},e5c8:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".manHourCard[data-v-23a9993c]{position:relative;background-color:#fff;border-radius:20rpx;margin-bottom:32rpx;box-sizing:border-box;overflow:hidden;touch-action:pan-y pinch-zoom}.manHourCard[data-v-23a9993c]:last-child{margin-bottom:0}.manHour-content[data-v-23a9993c]{width:100%;height:100%;padding:24rpx;box-sizing:border-box;background-color:#fff;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;position:relative;z-index:1;display:flex;flex-direction:column}.manHour-content .top_info[data-v-23a9993c]{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;width:100%;height:100%;margin-bottom:30rpx;border-bottom:2rpx solid #f6f5f5;padding-bottom:24rpx}.manHour-content .btns[data-v-23a9993c]{width:100%;display:flex;justify-content:flex-end}.delete-btn[data-v-23a9993c]{position:absolute;right:-160rpx;top:0;width:160rpx;height:100%;background-color:#e8101e;color:#fff;display:flex;justify-content:center;align-items:center;font-size:28rpx;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;z-index:2}.manHourCard:active .manHour-content[data-v-23a9993c],\n.manHourCard:active .delete-btn[data-v-23a9993c]{-webkit-transform:none;transform:none}.manHour-image[data-v-23a9993c]{width:200rpx;height:200rpx;border-radius:24rpx;margin-right:30rpx;background-color:rgba(0,0,0,.05)}.manHour-info[data-v-23a9993c]{height:200rpx;width:350rpx;display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:flex-start}.manHour-title[data-v-23a9993c]{font-size:30rpx;line-height:30rpx;color:#333;font-weight:500;padding-right:20rpx;margin-bottom:20rpx}.manHour-subtitle[data-v-23a9993c]{font-size:26rpx;line-height:26rpx;color:#666}.manHour-price[data-v-23a9993c]{display:flex;align-items:baseline;font-weight:500}.price-symbol[data-v-23a9993c]{font-size:30rpx;color:#e8101e}.price-value[data-v-23a9993c]{font-size:30rpx;color:#e8101e}.price-unit[data-v-23a9993c]{font-size:30rpx;color:#e8101e}.status-tag[data-v-23a9993c]{position:absolute;top:0rpx;right:0rpx;border-radius:0 0 0 20rpx;line-height:38rpx;text-align:center;box-sizing:border-box;font-size:24rpx;padding:10rpx 18rpx}.status-tag.state2[data-v-23a9993c]{background-color:rgba(252,67,124,.15)}.status-tag.state2 .status-text[data-v-23a9993c]{font-weight:400;font-size:26rpx;color:#e8101e;line-height:37rpx;text-align:left;font-style:normal}.status-tag.state1[data-v-23a9993c]{background-color:rgba(40,209,137,.2)}.status-tag.state1 .status-text[data-v-23a9993c]{color:#28d189}.status-tag.state0[data-v-23a9993c],\n.status-tag.state3[data-v-23a9993c],\n.status-tag.state4[data-v-23a9993c]{background-color:rgba(209,15,19,.2)}.status-tag.state0 .status-text[data-v-23a9993c],\n.status-tag.state3 .status-text[data-v-23a9993c],\n.status-tag.state4 .status-text[data-v-23a9993c]{color:#d10f13}.view-btn[data-v-23a9993c]{display:flex;align-items:center;justify-content:center;margin-left:39rpx;width:160rpx;height:64rpx;border-radius:64rpx;border:2rpx solid #979797}.view-icon[data-v-23a9993c]{width:32rpx;height:32rpx;margin-right:8rpx}.view-text[data-v-23a9993c]{font-size:26rpx;color:#333}.load-more[data-v-23a9993c]{text-align:center;padding:20rpx 0;color:#999;font-size:24rpx}.manHourCard[data-v-23a9993c]{cursor:pointer;user-select:none;-webkit-user-select:none}.manHour-content[data-v-23a9993c],\n.delete-btn[data-v-23a9993c]{will-change:transform}.add-btn[data-v-23a9993c]{height:140rpx}.manHour-image[data-v-23a9993c]{border:1rpx solid #eee}",""]),t.exports=e},e5ca:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".filter-popup[data-v-ae19b9c2]{background-color:#fff;border-radius:20rpx 20rpx 0 0}.filter-popup__header[data-v-ae19b9c2]{font-weight:500;font-size:36rpx;color:#333;line-height:50rpx;text-align:left;font-style:normal;padding-top:30rpx;text-align:center}.filter-popup__content[data-v-ae19b9c2]{padding-top:50rpx;display:flex;flex-wrap:nowrap;justify-content:flex-start}.filter-popup__content__left[data-v-ae19b9c2]{margin-right:10rpx;width:160rpx}.filter-popup__content__left__item[data-v-ae19b9c2]{height:86rpx;font-weight:400;font-size:26rpx;color:#666;line-height:37rpx;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:flex-start;background:#f3f6f8;border-radius:0rpx 10rpx 10rpx 0rpx;padding-left:30rpx;position:relative}.filter-popup__content__left__item__point[data-v-ae19b9c2]{background-color:#e8101e;height:6rpx;width:6rpx;border-radius:50%;margin-right:3rpx;position:absolute;left:21rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.filter-popup__content__left .active[data-v-ae19b9c2]{background:#fff;color:#e8101e}.filter-popup__content__right[data-v-ae19b9c2]{flex:1;margin-left:10rpx;height:50vh;padding-bottom:20rpx}.filter-popup__footer[data-v-ae19b9c2]{height:164rpx;background:#fff;box-shadow:0rpx 4rpx 8rpx 0rpx rgba(0,0,0,.25);padding:16rpx 30rpx 0 30rpx;display:flex;justify-content:space-between;align-items:flex-start}.filter-popup__footer__btn[data-v-ae19b9c2]{display:flex;justify-content:center;align-items:center;width:340rpx;height:82rpx;font-weight:400;font-size:30rpx;color:#e8101e;line-height:42rpx;text-align:left;font-style:normal}.filter-popup__footer__sure[data-v-ae19b9c2]{border-radius:41rpx;border:2rpx solid #e8101e}.filter-popup__footer__reset[data-v-ae19b9c2]{background:#e8101e;border-radius:41rpx;color:#fff}",""]),t.exports=e},e5cc:function(t,e,i){"use strict";var a=i("515f"),n=i.n(a);n.a},e62c:function(t,e,i){"use strict";var a=i("f80c"),n=i.n(a);n.a},e663:function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("0def"),s=i("b3f6");e=a(!1);var o=n(r),c=n(s);e.push([t.i,".order-card[data-v-5386c03f]{padding:20rpx 30rpx 10rpx 30rpx;margin:0rpx 30rpx 20rpx 30rpx;background-color:#fff;border-radius:12px;position:relative}.order-id[data-v-5386c03f]{width:530rpx;font-size:28rpx;color:#333}.orderNumBox[data-v-5386c03f]{display:flex;align-items:center;justify-content:space-between;margin-bottom:40rpx}.orderNumBox .stateText[data-v-5386c03f]{font-weight:400;font-size:26rpx;color:#e8101e;text-align:left;font-style:normal;position:absolute;right:0;top:0;background-image:url("+o+");background-size:100% auto;background-position:top;background-repeat:no-repeat;width:128rpx;height:49rpx;display:flex;align-items:center;justify-content:center}.orderNumBox .stateText2[data-v-5386c03f]{background-image:url("+c+");color:#333}.orderNumBox .stateText3[data-v-5386c03f]{background-image:url("+c+");color:#999!important}.orderNumBox .rightArrow[data-v-5386c03f]{width:12rpx;height:24rpx}.service-container[data-v-5386c03f]{display:flex;padding-bottom:24rpx;border-bottom:1px solid #f6f5f5}.noFotter[data-v-5386c03f]{border-bottom:none;padding-bottom:0rpx}.service-img[data-v-5386c03f]{width:172rpx;height:168rpx;border-radius:24rpx;margin-right:30rpx;flex-shrink:0}.service-info[data-v-5386c03f]{display:flex;flex-direction:column;justify-content:space-between}.service-price[data-v-5386c03f]{font-family:DINPro;font-weight:500;font-size:24rpx;color:#e8101e;line-height:34rpx;text-align:left;font-style:normal}.service-type[data-v-5386c03f]{width:400rpx;font-weight:500;font-size:30rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal;display:flex;align-items:center;margin-bottom:22rpx}.service-type .service-name-type[data-v-5386c03f]{font-family:shuHeiTi;font-size:24rpx;color:#fff;line-height:27rpx;letter-spacing:2px;text-align:left;font-style:normal;background:linear-gradient(166deg,#fc5e72,#e8101e);border-radius:6rpx;padding:4rpx 4rpx 4rpx 8rpx;margin-right:13rpx;letter-spacing:2rpx}.service-type .service-name-text[data-v-5386c03f]{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.service-time[data-v-5386c03f]{font-weight:400;font-size:26rpx;color:#999;line-height:33rpx;text-align:left;font-style:normal}.time-info[data-v-5386c03f]{font-size:30rpx;color:#333;margin-bottom:10rpx;margin-top:28rpx;display:flex;align-items:center}.time-info .time-info-img[data-v-5386c03f]{width:40rpx;height:40rpx;margin-right:10rpx;border-radius:50%}.time-info .time-info-name[data-v-5386c03f]{font-weight:400;font-size:26rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal;margin-right:20rpx}.time-info .time-info-text1[data-v-5386c03f]{font-weight:400;font-size:26rpx;color:#999;line-height:34rpx;text-align:left;font-style:normal}.time-info .time-info-text2[data-v-5386c03f]{font-weight:400;font-size:26rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal}.button-group[data-v-5386c03f]{display:flex;justify-content:flex-end;gap:30rpx;margin-bottom:20rpx}.btn[data-v-5386c03f]{height:32rpx;border-radius:64rpx;font-size:26rpx;background-color:#fff;white-space:nowrap;margin-top:40rpx}.cancel-btn[data-v-5386c03f]{border:2rpx solid #979797;color:#333}.accept-btn[data-v-5386c03f]{border:2rpx solid #e8101e;color:#e8101e}",""]),t.exports=e},e6d5:function(t,e,i){"use strict";i.r(e);var a=i("56bc"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},e705:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1},on:{onHeadleClick:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:t._$g(3,"a-src"),mode:"widthFix",_i:3}}),i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:t._$g(4,"a-src"),mode:"aspectFill",_i:4}}),t._$g(5,"i")?i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:"/static/images/recruit/btn.gif",mode:"widthFix",_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}}):t._e()],1)],1)},r=[]},e711:function(t,e,i){"use strict";i.r(e);var a=i("b99e"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},e712:function(t,e,i){"use strict";i.r(e);var a=i("3dd1"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},e739:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,agreeRadio:i("a6d8").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:"/static/logo.png",mode:"aspectFill",_i:4}}),t._v(" \u7f8e\u878d\u878d ")],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v("\u6b22\u8fce\u767b\u5f55\u8fdb\u884c\u4f7f\u7528\uff01")]),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("v-uni-input",{staticClass:t._$g(7,"sc"),attrs:{type:"number",placeholder:"\u8bf7\u8f93\u5165\u8d26\u53f7",maxlength:"11",value:t._$g(7,"a-value"),_i:7},on:{input:function(e){return t.$handleViewEvent(e)}}})],1),t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-input",{staticClass:t._$g(9,"sc"),attrs:{type:"number",placeholder:"\u8bf7\u8f93\u5165\u9a8c\u8bc1\u7801",maxlength:"4",value:t._$g(9,"a-value"),_i:9},on:{input:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(10,"sc"),class:t._$g(10,"c"),attrs:{_i:10},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v(" "+t._$g(10,"t0-0")+" ")])],1):t._$g(11,"e")?i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("v-uni-input",{staticClass:t._$g(12,"sc"),attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u5bc6\u7801(6~12\u4f4d\u5b57\u6bcd+\u6570\u5b57)",maxlength:"12",value:t._$g(12,"a-value"),password:t._$g(12,"a-password"),_i:12},on:{input:function(e){return t.$handleViewEvent(e)}}}),t._$g(13,"i")?i("v-uni-image",{staticClass:t._$g(13,"sc"),attrs:{src:"/static/images/dislook_psd.png",mode:"aspectFill",_i:13},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}}):i("v-uni-image",{staticClass:t._$g(14,"sc"),attrs:{src:"/static/images/look_psd.png",mode:"aspectFill",_i:14},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}})],1):t._e(),i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(t._$g(16,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u767b\u5f55")]),i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[i("uni-view",{attrs:{_i:19},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u6ce8\u518c\u8d26\u53f7 ")]),i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v(" | ")]),i("uni-view",{attrs:{_i:21},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u5fd8\u8bb0\u5bc6\u7801 ")])],1),i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[i("agree-radio",{staticClass:t._$g(23,"sc"),attrs:{_i:23},on:{"change-agree":function(e){return t.$handleViewEvent(e)}}}),i("v-uni-text",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[t._v("\u5df2\u9605\u8bfb\u5e76\u540c\u610f")]),i("v-uni-text",{staticClass:t._$g(25,"sc"),attrs:{_i:25},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u300a\u7528\u6237\u6ce8\u518c\u534f\u8bae\u300b")]),i("v-uni-text",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[t._v("\u548c")]),i("v-uni-text",{staticClass:t._$g(27,"sc"),attrs:{_i:27},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u300a\u9690\u79c1\u653f\u7b56\u300b")])],1)],1)],1)},r=[]},e73f:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},t._l(t._$g(1,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("1-"+r,"sc"),attrs:{_i:"1-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("2-"+r,"sc"),attrs:{src:t._$g("2-"+r,"a-src"),mode:"aspectFill",_i:"2-"+r}}),i("uni-view",{staticClass:t._$g("3-"+r,"sc"),attrs:{_i:"3-"+r}},[i("uni-view",{staticClass:t._$g("4-"+r,"sc"),attrs:{_i:"4-"+r}},[i("v-uni-text",{staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r}},[t._v(t._$g("5-"+r,"t0-0"))]),i("uni-view",{staticClass:t._$g("6-"+r,"sc"),attrs:{_i:"6-"+r}},[i("v-uni-image",{staticClass:t._$g("7-"+r,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/e37b3bd7-841f-4d57-a11a-2365c81f740e",_i:"7-"+r}}),i("v-uni-text",{attrs:{_i:"8-"+r}},[t._v(t._$g("8-"+r,"t0-0")+"km")])],1)],1),i("uni-view",{staticClass:t._$g("9-"+r,"sc"),attrs:{_i:"9-"+r}},t._l(t._$g("10-"+r,"f"),(function(e,a,n,s){return i("uni-view",{key:e,staticClass:t._$g("10-"+r+"-"+s,"sc"),attrs:{_i:"10-"+r+"-"+s}},[i("uni-view",{attrs:{_i:"11-"+r+"-"+s}},[t._v(t._$g("11-"+r+"-"+s,"t0-0"))]),t._$g("12-"+r+"-"+s,"i")?i("uni-view",{staticClass:t._$g("12-"+r+"-"+s,"sc"),attrs:{_i:"12-"+r+"-"+s}}):t._e()],1)})),1),i("uni-view",{staticClass:t._$g("13-"+r,"sc"),attrs:{_i:"13-"+r}},[t._$g("14-"+r,"i")?i("uni-view",{staticClass:t._$g("14-"+r,"sc"),attrs:{_i:"14-"+r}},[t._v("\u6700\u65e9\u53ef\u7ea6\uff1a"+t._$g("14-"+r,"t0-0"))]):i("uni-view",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r}},[t._v("\u5df2\u7ea6\u6ee1")]),i("uni-view",{staticClass:t._$g("16-"+r,"sc"),class:t._$g("16-"+r,"c"),attrs:{_i:"16-"+r}},[t._v(t._$g("16-"+r,"t0-0"))])],1)],1)],1)})),1)},n=[]},e755:function(t,e,i){var a=i("16f8");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("3b15287e",a,!0,{sourceMap:!1,shadowMode:!1})},e766:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("1788")),r=a(i("1521")),s={data:function(){return{wxsProps:{}}},components:{tipsPopup:n.default,manHourCard:r.default}};e.default=s},e77d:function(t,e,i){"use strict";i.r(e);var a=i("e0ae"),n=i("1a26");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("c61b");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"1f1d0146",null,!1,a["a"],void 0);e["default"]=o.exports},e78c:function(t,e,i){var a=i("82f4");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("37babe88",a,!0,{sourceMap:!1,shadowMode:!1})},e7b1:function(t,e,i){"use strict";i.r(e);var a=i("c9014"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},e7c4:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{key:t._$g(0,"a-key"),staticClass:t._$g(0,"sc"),attrs:{_i:0},on:{touchstart:function(e){return t.$handleViewEvent(e)},touchmove:function(e){return t.$handleViewEvent(e)},touchend:function(e){return t.$handleViewEvent(e)},mousedown:function(e){return t.$handleViewEvent(e)},mousemove:function(e){return t.$handleViewEvent(e)},mouseup:function(e){return t.$handleViewEvent(e)},mouseleave:function(e){return t.$handleViewEvent(e)}}},[t._$g(1,"i")?i("uni-view",{staticClass:t._$g(1,"sc"),style:t._$g(1,"s"),attrs:{_i:1},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{attrs:{_i:2}},[t._v("\u5220\u9664")])],1):t._e(),i("uni-view",{staticClass:t._$g(3,"sc"),style:t._$g(3,"s"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("v-uni-image",{staticClass:t._$g(5,"sc"),attrs:{src:t._$g(5,"a-src"),mode:"aspectFill",_i:5}}),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(t._$g(8,"t0-0"))]),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v(t._$g(9,"t0-0")+" ")])],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\xa5")]),i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v(t._$g(12,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v("\u5143\\10\u5206\u949f")])],1)],1)],1),i("uni-view",{class:t._$g(14,"c"),attrs:{_i:14}},[i("v-uni-text",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v(t._$g(15,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._$g(17,"i")?i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\u4e0b\u67b6")])],1):t._e(),t._$g(19,"i")?i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v("\u4e0a\u67b6")])],1):t._e(),i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v("\u7f16\u8f91")])],1)],1)],1)],1)},n=[]},e88d:function(t,e,i){var a=i("c5be");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("65cda5fc",a,!0,{sourceMap:!1,shadowMode:!1})},e931:function(t,e,i){"use strict";i.r(e);var a=i("7772"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},e950:function(t,e,i){var a=i("26e0");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("079d3ab8",a,!0,{sourceMap:!1,shadowMode:!1})},e962:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".container .review{background:#fae7ec;border-radius:20rpx 20rpx 0rpx 0rpx;margin:20rpx;padding:26rpx 20rpx 30rpx 20rpx}.container .review .review-title{margin-bottom:6rpx}.container .review .review-title .review-title-text{font-weight:500;font-size:28rpx;color:#e8101e;line-height:40rpx;text-align:left;font-style:normal}.container .review .review-text{font-weight:400;font-size:24rpx;color:#a43f45;line-height:33rpx;text-align:left;font-style:normal}.container .container-card{border-radius:20rpx;margin:20rpx;padding:20rpx 20rpx 30rpx 20rpx;background:#fff}.container .container-card .card-header{margin-bottom:20rpx}.container .container-card .card-header .card-title{font-weight:500;font-size:28rpx;color:#1d2129;line-height:48rpx;text-align:left;font-style:normal}.container .container-card .card-header .card-title2{font-weight:400;font-size:24rpx;color:#999;line-height:33rpx;text-align:left;font-style:normal;margin-left:10rpx}.container .container-card .card-content .card-content-container{position:relative;display:flex;overflow:hidden;border-radius:20rpx}.container .container-card .card-content .preview-image{width:370rpx;height:278rpx;border-radius:20rpx}.container .container-card .card-content .preview-video{width:520rpx;height:220rpx;border-radius:20rpx}.container .container-card .card-content .content-default{width:370rpx;height:278rpx;background:#f5f5f5;border-radius:20rpx;display:flex;flex-direction:column;align-items:center;justify-content:center}.container .container-card .card-content .content-default .content-default-img{width:42rpx;height:35rpx;margin-bottom:8rpx}.container .container-card .card-content .content-default .content-default-text{font-weight:400;font-size:22rpx;color:#666;line-height:30rpx;text-align:left;font-style:normal;display:block}.container .container-card .card-content .content-default2{width:520rpx;height:220rpx;background:#f5f5f5;border-radius:20rpx;display:flex;flex-direction:column;align-items:center;justify-content:center}.container .container-card .card-content .content-default2 .content-default2-img{width:42rpx;height:35rpx;margin-bottom:8rpx}.container .container-card .card-content .content-default2 .content-default2-text{font-weight:400;font-size:22rpx;color:#666;line-height:30rpx;text-align:left;font-style:normal;display:block}.container .container-card .card-content .content-photo-title{background:rgba(51,51,51,.6);padding:8rpx 0 6rpx 0;position:absolute;left:0;right:0;bottom:0;font-weight:400;font-size:24rpx;color:#fff;line-height:33rpx;text-align:center;font-style:normal}.container .container-card .card-content .content-photo-play{width:25rpx;height:25rpx;position:absolute;right:10rpx;top:6rpx}.container .container-card .card-content .content-photo-play .content-photo-play-img{width:25rpx;height:25rpx}.container .container-card .card-content .card-content-input{width:670rpx;height:76rpx;background:#f5f5f5;border-radius:20rpx;box-sizing:border-box;padding:18rpx 20rpx}.container .container-card .card-content .card-content-input .inputClass{font-weight:400;font-size:28rpx;color:#bfbfbf;line-height:40rpx;text-align:left;font-style:normal}.container .haveReview{-webkit-transform:translateY(-30rpx);transform:translateY(-30rpx)}.container .container-buttons{position:fixed;left:0;right:0;bottom:0;padding:30rpx 0;background:#fff;gap:60rpx}.container .container-buttons .container-buttons-cancel{width:278rpx;height:98rpx;border-radius:49rpx;border:1rpx solid #e8101e;font-weight:400;font-size:32rpx;color:#e8101e;text-align:center;font-style:normal}.container .container-buttons .container-buttons-sure{width:278rpx;height:98rpx;background:#e8101e;border-radius:49rpx;font-weight:400;font-size:32rpx;color:#fff;text-align:center;font-style:normal}.container .container-buttons .container-buttons-sure2{width:710rpx;height:98rpx;background:#e8101e;border-radius:49rpx;font-weight:400;font-size:38rpx;color:#fff;text-align:left;font-style:normal}.permission.transform{top:calc(var(--status-bar-height) + 108rpx + 20rpx);opacity:1;visibility:visible}",""]),t.exports=e},e98a:function(t,e,i){"use strict";var a=i("91d6"),n=i.n(a);n.a},e9a9:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("d354")),r=a(i("6a74")),s={data:function(){return{wxsProps:{}}},components:{workSpaceCard:n.default,tipsPopup:r.default}};e.default=s},e9df:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n.preview-container[data-v-21a7da1f]{display:grid;grid-template-columns:repeat(3,1fr);justify-items:center;align-items:center;position:relative}.upload-btn[data-v-21a7da1f]{width:200rpx;height:200rpx;border:2rpx dashed #ddd;border-radius:8rpx;display:flex;flex-direction:column;justify-content:center;align-items:center;box-sizing:border-box}.plus-icon[data-v-21a7da1f]{font-size:60rpx;color:#999;line-height:1}.btn-text[data-v-21a7da1f]{font-size:24rpx;color:#666;margin-top:10rpx}.tips-text[data-v-21a7da1f]{font-size:24rpx;color:#999;margin-top:10rpx}.preview-item[data-v-21a7da1f]{position:relative;width:200rpx;height:200rpx;margin-top:20rpx}.preview-image[data-v-21a7da1f]{width:200rpx;height:200rpx;border-radius:8rpx}.delete-icon[data-v-21a7da1f]{position:absolute;top:-10rpx;right:-10rpx;width:40rpx;height:40rpx;background-color:#ff4d4f;color:#fff;border-radius:50%;display:flex;justify-content:center;align-items:center;font-size:32rpx;z-index:1}",""]),t.exports=e},e9ea:function(t,e,i){"use strict";i.r(e);var a=i("e9a9"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},eae5:function(t,e,i){var a=i("fa5d");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("11ed9389",a,!0,{sourceMap:!1,shadowMode:!1})},eae7:function(t,e,i){"use strict";i.r(e);var a=i("1da6"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},eb23:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".addTextAndImg{padding-bottom:110rpx}.addTextAndImg .firstAdd{position:fixed;left:50%;top:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);display:flex;flex-wrap:wrap;justify-content:center}.addTextAndImg .firstAdd .firstAdd-garden{width:200rpx;height:200rpx;border:3px solid #000;border-radius:50%;margin-bottom:100rpx}.addTextAndImg .firstAdd .firstAdd-garden .firstAdd-garden-img{width:200rpx}.addTextAndImg .firstAdd .firstAdd-text{font-size:32rpx;text-align:center;white-space:nowrap;width:750rpx}.addTextAndImg .addTextAndImg-content .addTextAndImg-content-card .addTextAndImg-content-card-btns{display:flex;flex-wrap:nowrap;justify-content:flex-end;gap:10rpx;background:#f5f5f5;padding-bottom:10rpx}.addTextAndImg .addTextAndImg-content .addTextAndImg-content-card .addTextAndImg-content-card-btns .addTextAndImg-content-card-btns-btn{color:#e8101e;border:2rpx solid #e8101e;width:80rpx;height:50rpx;display:flex;align-items:center;justify-content:center}.addTextAndImg .addTextAndImg-content .addTextAndImg-content-card .addTextAndImg-content-card-text{padding:20rpx}.addTextAndImg .pop-cards{z-index:10;position:absolute;left:0;right:0;bottom:0;background-color:#fff;display:flex;flex-wrap:nowrap;gap:63rpx;padding:68rpx 40rpx}.addTextAndImg .pop-cards .pop-cards-card .pop-cards-card-img{width:120rpx;height:120rpx}.addTextAndImg .pop-cards .pop-cards-card .pop-cards-card-text{font-weight:400;font-size:28rpx;color:#333;line-height:40rpx;text-align:center;font-style:normal}.addTextAndImg .pop-textarea{background-color:#fff;margin:200rpx 20rpx 20rpx 20rpx;border-radius:20rpx;padding:20rpx}.permission.transform{top:calc(var(--status-bar-height) + 88rpx + 20rpx);opacity:1;visibility:visible}.bottom-buttons{position:fixed;left:0;right:0;bottom:0;background-color:#fff;height:100rpx;padding:40rpx 0 64rpx;box-sizing:border-box;display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center}.bottom-buttons .btn-submit{background-color:#e8101e;color:#fff;width:334rpx;height:78rpx;line-height:78rpx;text-align:center;font-size:28rpx;border-radius:78rpx}",""]),t.exports=e},eb6c:function(t,e,i){"use strict";var a=i("a24d"),n=i.n(a);n.a},eb8d:function(t,e,i){"use strict";var a=i("2958"),n=i.n(a);n.a},eb90:function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("a018");e=a(!1);var s=n(r);e.push([t.i,".tips-popup[data-v-784e393e]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:99999}.mask[data-v-784e393e]{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6)}.popup-content[data-v-784e393e]{background-image:url("+s+");background-position:50%;background-repeat:no-repeat;background-size:cover;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:570rpx;border-radius:36rpx;overflow:hidden;box-sizing:border-box;padding:60rpx 47rpx}.popup-header[data-v-784e393e]{position:relative;display:flex;align-items:center;justify-content:center}.popup-title[data-v-784e393e]{font-weight:500;font-size:34rpx;color:#333;line-height:48rpx;text-align:left;font-style:normal}.close-btn[data-v-784e393e]{position:absolute;right:24rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);padding:16rpx}.close-icon[data-v-784e393e]{width:32rpx;height:32rpx}.popup-body[data-v-784e393e]{padding:36rpx 0rpx 50rpx 0}.rule-item[data-v-784e393e]{margin-bottom:24rpx}.rule-item[data-v-784e393e]:last-child{margin-bottom:0}.rule-text[data-v-784e393e]{font-size:28rpx;color:#666;line-height:1.6}.btn_box[data-v-784e393e]{display:flex;align-items:center;justify-content:center;gap:72rpx}.btn_box .btn[data-v-784e393e]{width:200rpx;border-radius:72rpx;border:2rpx solid #979797;display:flex;align-items:center;justify-content:center;font-size:26rpx;color:#333}",""]),t.exports=e},ebc0:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u5934\u50cf")]),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(6,"sc"),attrs:{src:t._$g(6,"a-src"),mode:"aspectFill",_i:6}})],1)],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("v-uni-text",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v("\u6635\u79f0")]),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("v-uni-input",{staticClass:t._$g(10,"sc"),attrs:{type:"text",value:t._$g(10,"a-value"),placeholder:"\u672a\u8bbe\u7f6e",_i:10},on:{input:function(e){return t.$handleViewEvent(e)}}})],1)],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v("\u6027\u522b")]),i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[i("v-uni-text",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v(t._$g(14,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[t._v("\u6240\u5728\u5730")]),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v(t._$g(18,"t0-0"))])],1)],1)],1),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v("\u4fdd\u5b58")])],1),i("uni-view",{staticClass:t._$g(21,"sc"),class:t._$g(21,"c"),attrs:{_i:21}},[i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(23,"sc"),attrs:{_i:23}},[i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("v-uni-text",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[t._v("\u9009\u62e9\u6240\u5728\u5730")]),i("v-uni-text",{staticClass:t._$g(26,"sc"),attrs:{_i:26},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\xd7")])],1),i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[i("v-uni-picker-view",{staticClass:t._$g(28,"sc"),attrs:{"indicator-style":t._$g(28,"a-indicator-style"),value:t._$g(28,"a-value"),_i:28},on:{change:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-picker-view-column",{attrs:{_i:29}},t._l(t._$g(30,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("30-"+r,"sc"),attrs:{_i:"30-"+r}},[t._v(t._$g("30-"+r,"t0-0"))])})),1),i("v-uni-picker-view-column",{attrs:{_i:31}},t._l(t._$g(32,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("32-"+r,"sc"),attrs:{_i:"32-"+r}},[t._v(t._$g("32-"+r,"t0-0"))])})),1),i("v-uni-picker-view-column",{attrs:{_i:33}},t._l(t._$g(34,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("34-"+r,"sc"),attrs:{_i:"34-"+r}},[t._v(t._$g("34-"+r,"t0-0"))])})),1)],1)],1),i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v("\u53d6\u6d88")])],1),i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[t._v("\u786e\u5b9a")])],1)],1)],1)],1),i("uni-view",{staticClass:t._$g(40,"sc"),class:t._$g(40,"c"),attrs:{_i:40}},[i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u50a8\u5b58\u7a7a\u95f4/\u7167\u7247\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(42,"sc"),attrs:{_i:42}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u8bfb\u53d6\u76f8\u518c\u548c\u6587\u4ef6\u5185\u5bb9\u3002")])],1),i("uni-view",{staticClass:t._$g(43,"sc"),class:t._$g(43,"c"),attrs:{_i:43}},[i("uni-view",{staticClass:t._$g(44,"sc"),attrs:{_i:44}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u76f8\u673a\u62cd\u6444\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(45,"sc"),attrs:{_i:45}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u6240\u9700\u5185\u5bb9\u3002")])],1)],1)},r=[]},ebc8:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.uv-border-bottom[data-v-b5f313b8]{border-bottom-width:.5px!important;border-color:#dadbde!important;border-bottom-style:solid}uni-view[data-v-b5f313b8], uni-scroll-view[data-v-b5f313b8], uni-swiper-item[data-v-b5f313b8]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-checkbox[data-v-b5f313b8]{display:flex;flex-direction:row;overflow:hidden;flex-direction:row;align-items:center}.uv-checkbox-label--left[data-v-b5f313b8]{flex-direction:row}.uv-checkbox-label--right[data-v-b5f313b8]{flex-direction:row-reverse;justify-content:space-between}.uv-checkbox__icon-wrap[data-v-b5f313b8]{box-sizing:border-box;transition-property:border-color,background-color,color;transition-duration:.2s;color:#606266;display:flex;flex-direction:row;align-items:center;justify-content:center;color:transparent;text-align:center;font-size:6px;border-width:1px;border-color:#c8c9cc;border-style:solid}.uv-checkbox__icon-wrap--circle[data-v-b5f313b8]{border-radius:100%}.uv-checkbox__icon-wrap--square[data-v-b5f313b8]{border-radius:3px}.uv-checkbox__icon-wrap--checked[data-v-b5f313b8]{color:#fff;background-color:red;border-color:#2979ff}.uv-checkbox__icon-wrap--disabled[data-v-b5f313b8]{background-color:#ebedf0!important}.uv-checkbox__icon-wrap--disabled--checked[data-v-b5f313b8]{color:#c8c9cc!important}.uv-checkbox__label[data-v-b5f313b8]{word-wrap:break-word;margin-left:5px;margin-right:12px;color:#606266;font-size:15px}.uv-checkbox__label--disabled[data-v-b5f313b8]{color:#c8c9cc}.uv-checkbox__label-wrap[data-v-b5f313b8]{flex:1;padding-left:6px}',""]),t.exports=e},ebd9:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"filterVue",data:function(){return{wxsProps:{}}},components:{}}},ebe4:function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("0def"),s=i("b3f6");e=a(!1);var o=n(r),c=n(s);e.push([t.i,".order-card[data-v-00461db0]{position:relative;padding:24rpx 20rpx 0rpx;margin:0rpx 30rpx 20rpx 30rpx;background-color:#fff;border-radius:12px}.orderNumBox[data-v-00461db0]{display:flex;align-items:center;justify-content:space-between;margin-bottom:40rpx}.orderNumBox .stateText[data-v-00461db0]{font-weight:400;font-size:26rpx;color:#e8101e;text-align:left;font-style:normal;position:absolute;right:0;top:0;background-image:url("+o+");background-size:100% auto;background-position:top;background-repeat:no-repeat;width:128rpx;height:49rpx;display:flex;align-items:center;justify-content:center}.orderNumBox .stateText2[data-v-00461db0]{background-image:url("+c+");color:#333}.orderNumBox .stateText3[data-v-00461db0]{background-image:url("+c+");color:#999!important}.order-id[data-v-00461db0]{width:530rpx;font-size:28rpx;color:#333}.service-container[data-v-00461db0]{display:flex;align-items:center;padding-bottom:24rpx;border-bottom:1px solid #f6f5f5;width:100%}.service-img[data-v-00461db0]{width:172rpx;height:168rpx;border-radius:24rpx;margin-right:30rpx;flex-shrink:0}.service-info[data-v-00461db0]{display:flex;flex-direction:column;justify-content:space-between;width:100%;height:168rpx}.service-info .topInfo[data-v-00461db0]{display:flex;flex-direction:column}.service-info .topInfo .price_title[data-v-00461db0]{display:flex;align-items:center;justify-content:space-between;margin-bottom:20rpx}.service-info .topInfo .price_title .service-type[data-v-00461db0]{font-weight:500;font-size:30rpx;color:#333;line-height:34rpx;max-width:300rpx}.service-info .service-price[data-v-00461db0]{font-family:DINPro;font-weight:500;font-size:36rpx;color:#e8101e;line-height:34rpx;text-align:left;font-style:normal}.service_subTitle[data-v-00461db0]{font-size:26rpx;line-height:26rpx;color:#666;margin-top:18rpx}.service-address[data-v-00461db0]{font-weight:400;font-size:26rpx;color:#999;line-height:33rpx;text-align:left;font-style:normal}.time-info[data-v-00461db0]{font-weight:400;font-size:26rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal;padding-bottom:20rpx;margin-top:28rpx}.button-group[data-v-00461db0]{display:flex;justify-content:flex-end;gap:30rpx;padding-bottom:30rpx}.btn[data-v-00461db0]{white-space:nowrap;width:100rpx;height:32rpx;display:flex;align-items:center;justify-content:center;padding:10px 20px;border-radius:64rpx;border:2rpx solid #979797;font-weight:400;font-size:26rpx;color:#333;line-height:64rpx}.cancel-btn[data-v-00461db0]{border:2rpx solid #979797;color:#333}.accept-btn[data-v-00461db0]{border:2rpx solid #e8101e;color:#e8101e}",""]),t.exports=e},ebf7:function(t,e,i){var a=i("eb90");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("2a1021bb",a,!0,{sourceMap:!1,shadowMode:!1})},ebf9:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".container .container-header__swiper[data-v-bcbe6396]{height:732rpx}.container .container-header__swiper .container-header__swiper__item[data-v-bcbe6396]{height:100%}.container .container-header__swiper .container-header__swiper__item .container-header__swiper__item__img[data-v-bcbe6396]{width:100%;height:100%;object-fit:cover}.container .container-content__card[data-v-bcbe6396]{margin:20rpx 30rpx;padding:30rpx;background:#fff;border-radius:10rpx;box-shadow:0rpx 4rpx 16rpx 0rpx rgba(210,213,224,.5)}.container .container-content__card__title__text[data-v-bcbe6396]{font-weight:500;font-size:36rpx;color:#333;line-height:50rpx;text-align:left;font-style:normal;margin-bottom:20rpx}.container .container-content__card__title__price[data-v-bcbe6396]{font-weight:500;font-size:36rpx;color:#e8101e;line-height:50rpx;text-align:left;font-style:normal}.container .container-content__card2[data-v-bcbe6396]{margin:20rpx 30rpx;padding:20rpx 30rpx 30rpx 30rpx;background:#fff;border-radius:10rpx;box-shadow:0rpx 4rpx 16rpx 0rpx rgba(210,213,224,.5)}.container .container-content__card2__syr[data-v-bcbe6396]{display:flex;align-items:center}.container .container-content__card2__syr__img[data-v-bcbe6396]{width:94rpx;height:94rpx;border-radius:50%;margin-right:14rpx}.container .container-content__card2__syr__text[data-v-bcbe6396]{font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:left;font-style:normal}.container .container-content__card2__Serve__title[data-v-bcbe6396]{font-weight:500;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;margin-bottom:20rpx}.container .container-content__card2__Serve__card[data-v-bcbe6396]{padding:20rpx;border:1px solid #e5e5e5;border-radius:10rpx}.container .container-content__card2__Serve__card__content[data-v-bcbe6396]{font-weight:400;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal}.container .container-content__card2__Serve__card__remark[data-v-bcbe6396]{font-weight:400;font-size:24rpx;color:#999;line-height:33rpx;text-align:left;font-style:normal;margin-top:30rpx}.container .container-footer[data-v-bcbe6396]{height:166rpx;position:fixed;bottom:0;left:0;right:0;background-color:#fff}.container .container-footer__btn[data-v-bcbe6396]{display:flex;align-items:center;justify-content:center;width:696rpx;height:78rpx;border-radius:798rpx;border:2rpx solid #e8101e;font-weight:400;font-size:30rpx;color:#e8101e;line-height:39rpx;text-align:right;font-style:normal;margin-left:30rpx;margin-top:40rpx}",""]),t.exports=e},ec24:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},ec2d:function(t,e,i){"use strict";i.r(e);var a=i("73d0"),n=i("7d79");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("5b8a");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"7e04185c",null,!1,a["a"],void 0);e["default"]=o.exports},ec38:function(t,e,i){"use strict";i.r(e);var a=i("a9e1"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},ec59:function(t,e,i){"use strict";i.r(e);var a=i("2efa"),n=i("a546");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("b2b7");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"24353968",null,!1,a["a"],void 0);e["default"]=o.exports},ec63:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,uvSearch:i("b07a").default,noData:i("93c2").default,uvModal:i("ad36").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:"/static/images/recruit/add.png",_i:4},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v("\u6dfb\u52a0\u63a8\u5e7f\u670d\u52a1")]),i("v-uni-image",{staticClass:t._$g(6,"sc"),attrs:{src:"/static/images/recruit/guide.png",_i:6},on:{click:function(e){return t.$handleViewEvent(e)}}})],1),i("uv-search",{staticClass:t._$g(7,"sc"),attrs:{_i:7},on:{search:function(e){return t.$handleViewEvent(e)}},scopedSlots:t._u([{key:"prefix",fn:function(t,e,a){return[i("v-uni-image",{staticClass:e._$g("9-"+a,"sc"),attrs:{src:"/static/images/recruit/search_icon.png",_i:"9-"+a}})]}}]),model:{value:t._$g(7,"v-model"),callback:function(){},expression:"listQuery.title"}})],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},t._l(t._$g(12,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("12-"+r,"sc"),class:t._$g("12-"+r,"c"),attrs:{_i:"12-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("12-"+r,"t0-0")+" ")])})),1),i("CommonList",{ref:"groupRef",attrs:{_i:13},scopedSlots:t._u([{key:"listData",fn:function(e,a,n){e.list;return[i("uni-view",{staticClass:a._$g("15-"+n,"sc"),attrs:{_i:"15-"+n}},t._l(a._$g("16-"+n,"f"),(function(e,r,s,o){return i("uni-view",{key:e,staticClass:a._$g("16-"+n+o,"sc"),attrs:{_i:"16-"+n+o}},[i("v-uni-image",{staticClass:a._$g("17-"+n+o,"sc"),attrs:{src:"/static/images/recruit/Effect.png",_i:"17-"+n+o},on:{click:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:a._$g("18-"+n+o,"sc"),attrs:{_i:"18-"+n+o}},[i("v-uni-image",{staticClass:a._$g("19-"+n+o,"sc"),attrs:{src:a._$g("19-"+n+o,"a-src"),mode:"aspectFill",_i:"19-"+n+o}}),i("uni-view",{staticClass:a._$g("20-"+n+o,"sc"),attrs:{_i:"20-"+n+o}},[i("uni-view",{staticClass:a._$g("21-"+n+o,"sc"),attrs:{_i:"21-"+n+o}},[t._v(a._$g("21-"+n+o,"t0-0"))]),i("uni-view",{staticClass:a._$g("22-"+n+o,"sc"),attrs:{_i:"22-"+n+o}},[t._v(" \u4f63\u91d1\u6bd4\u4f8b:"+a._$g("22-"+n+o,"t0-0"))]),i("uni-view",{staticClass:a._$g("23-"+n+o,"sc"),attrs:{_i:"23-"+n+o}},[t._v("\u9884\u4f30\u91d1\u989d:"+a._$g("23-"+n+o,"t0-0")+"\u5143 ")]),i("uni-view",{staticClass:a._$g("24-"+n+o,"sc"),attrs:{_i:"24-"+n+o}},[i("v-uni-text",{staticStyle:{"font-size":"24rpx","font-weight":"500"},attrs:{_i:"25-"+n+o}},[t._v("\uffe5")]),t._v(a._$g("24-"+n+o,"t1-0"))],1)],1),a._$g("26-"+n+o,"i")?i("uni-view",{staticClass:a._$g("26-"+n+o,"sc"),attrs:{_i:"26-"+n+o}},[t._v("\u6e29\u99a8\u63d0\u793a\uff1a\u6700\u7ec8\u4f63\u91d1\u5c11\u4e8e1\u5206\u94b1\uff0c\u5c06\u4e0d\u518d\u63a8\u5e7f\u6e20\u9053\u5c55\u793a ")]):t._e()],1),i("uni-view",{staticClass:a._$g("27-"+n+o,"sc"),attrs:{_i:"27-"+n+o}},[a._$g("28-"+n+o,"i")?i("uni-view",{staticClass:a._$g("28-"+n+o,"sc"),attrs:{_i:"28-"+n+o},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u590d\u5236\u6d3b\u52a8")]):t._e(),a._$g("29-"+n+o,"i")?i("uni-view",{staticClass:a._$g("29-"+n+o,"sc"),attrs:{_i:"29-"+n+o},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u7f16\u8f91 ")]):t._e(),a._$g("30-"+n+o,"i")?i("uni-view",{staticClass:a._$g("30-"+n+o,"sc"),attrs:{_i:"30-"+n+o},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u5931\u6548 ")]):t._e()],1)],1)})),1)]}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"32-"+a}})]}}])})],1),i("uv-modal",{ref:"modal",attrs:{_i:33},scopedSlots:t._u([{key:"confirmButton",fn:function(e,a,n){return[i("uni-view",{staticClass:a._$g("36-"+n,"sc"),attrs:{_i:"36-"+n}},[i("uni-view",{staticClass:a._$g("37-"+n,"sc"),attrs:{type:"default",_i:"37-"+n},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")]),i("uni-view",{staticClass:a._$g("38-"+n,"sc"),attrs:{type:"default",_i:"38-"+n},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u6211\u5df2\u4e86\u89e3")])],1)]}}])},[i("uni-view",{staticClass:t._$g(34,"sc"),attrs:{_i:34}},[t._v(" \u82e5\u63a8\u5e7f\u670d\u52a1\u8bbe\u7f6e\u5931\u6548\uff0c\u4ec5\u9488\u5bf9\u65b0\u8ba2\u5355\u751f\u6548\uff1b\u5386\u53f2\u5df2\u4ed8\u6b3e\u8ba2\u5355\u4ecd\u6309\u539f\u5206\u4f63\u6bd4\u4f8b\u6267\u884c\uff0c\u5206\u4f63\u4e0d\u53d7\u5f71\u54cd\u3002 ")])],1)],1)},r=[]},ec66:function(t,e,i){"use strict";var a=i("470f"),n=i.n(a);n.a},ec666:function(t,e,i){"use strict";i.r(e);var a=i("11f4"),n=i("c095");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("1462");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},ec7a:function(t,e,i){"use strict";var a=i("40fd"),n=i.n(a);n.a},ece0:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:"/static/images/stop_use.png",mode:"aspectFit",_i:3}}),i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u5df2\u505c\u7528")]),i("v-uni-text",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v("\u60a8\u7684\u8d26\u53f7\u5f53\u524d\u5df2\u88ab\u505c\u7528\uff01\u5982\u6709\u7591\u95ee\u8bf7\u8054\u7cfb\u5ba2\u670d\u3002")]),i("v-uni-text",{staticClass:t._$g(6,"sc"),attrs:{_i:6},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53bb\u63d0\u73b0")])],1),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(8,"sc"),attrs:{src:"/static/images/tell_icon.png",mode:"aspectFit",_i:8}}),i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u8054\u7cfb\u5ba2\u670d")])],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v("\u8fd4\u56de")])],1)],1)},r=[]},ed0d:function(t,e,i){"use strict";var a=i("1476"),n=i.n(a);n.a},ed37:function(t,e,i){var a=i("8599");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("6aa5aced",a,!0,{sourceMap:!1,shadowMode:!1})},ed4e:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._l(t._$g(3,"f"),(function(e,a,n,r){return[t._$g("4-"+r,"i")?i("v-uni-rich-text",{key:e["k0"],attrs:{nodes:t._$g("4-"+r,"a-nodes"),_i:"4-"+r}}):t._$g("5-"+r,"e")?i("uni-view",{key:e["k-1"],staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g("6-"+r,"sc"),attrs:{src:t._$g("6-"+r,"a-src"),mode:"widthFix",_i:"6-"+r}})],1):t._e()]}))],2),i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u52a0\u5165\u6211\u4eec")])],1)],1)},r=[]},ed53:function(t,e,i){"use strict";i.r(e);var a=i("b905"),n=i("8a11");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("139c");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},ed75:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".region-body[data-v-f3376c10]{flex:1;overflow:hidden;background:#fff;border-radius:20rpx 20rpx 0 0}.region-body__close[data-v-f3376c10]{width:22rpx;height:22rpx;position:absolute;top:44rpx;right:30rpx}.region-body__header[data-v-f3376c10]{padding:40rpx 0;font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:left;font-style:normal;display:flex;justify-content:center}.region-body__btn[data-v-f3376c10]{display:flex;align-items:center;justify-content:center;width:690rpx;height:80rpx;background:#e8101e;border-radius:38rpx;font-weight:400;font-size:30rpx;color:#fff;line-height:39rpx;text-align:right;font-style:normal;margin:0 30rpx}.region-scroll[data-v-f3376c10]{height:100%}.picker-scroll[data-v-f3376c10]{height:400rpx}.picker-item[data-v-f3376c10]{height:68rpx;line-height:68rpx;text-align:center}.region-item[data-v-f3376c10]{display:flex;align-items:center;justify-content:space-between;padding:24rpx 0;border-bottom:1rpx solid #eee}.region-item.checkbox-item[data-v-f3376c10]{padding:20rpx 0;width:100%;justify-content:flex-start!important;align-items:center!important}",""]),t.exports=e},edf4:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={uvIcon:i("08d8").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),class:t._$g(0,"c"),style:t._$g(0,"s"),attrs:{_i:0},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("uni-view",{staticClass:t._$g(1,"sc"),class:t._$g(1,"c"),style:t._$g(1,"s"),attrs:{_i:1},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._t("icon",[i("uv-icon",{staticClass:t._$g(3,"sc"),attrs:{_i:3}})],{_i:2})],2),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._t("default",[i("v-uni-text",{style:t._$g(6,"s"),attrs:{_i:6}},[t._v(t._$g(6,"t0-0"))])],{_i:5})],2)],1)},r=[]},ee07:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".lime-painter[data-v-4320523e],\n.lime-painter__canvas[data-v-4320523e]{\nwidth:100%;\n}",""]),t.exports=e},ee46:function(t,e,i){"use strict";var a=i("a466"),n=i.n(a);n.a},ee7a:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),class:t._$g(2,"c"),attrs:{_i:2},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._v(" "+t._$g(3,"t0-0")+" "),t._$g(4,"i")?i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:"/static/images/recruit/close.png",_i:4},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}}):t._e()],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("v-uni-image",{attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/fd0058af-7e38-4442-a7d3-6a65768ce0da",mode:"aspectFill",_i:6}})],1)],1),i("uni-view",{staticClass:t._$g(7,"sc"),class:t._$g(7,"c"),attrs:{_i:7},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(" "+t._$g(8,"t0-0")+" "),t._$g(9,"i")?i("v-uni-image",{staticClass:t._$g(9,"sc"),attrs:{src:"/static/images/recruit/close.png",_i:9},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}}):t._e()],1),i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("v-uni-image",{attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/fd0058af-7e38-4442-a7d3-6a65768ce0da",mode:"aspectFill",_i:11}})],1)],1)],1),i("timeDatePicker",{ref:"timePopup",attrs:{_i:12},on:{confirmTime:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(12,"v-model"),callback:function(){},expression:"timeValue"}})],1)},n=[]},ee9c:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"filterCard",props:["info","isSingle","infoDetailList"],data:function(){return{wxsProps:{}}},components:{}}},eec1:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},eefb:function(t,e,i){var a=i("2c598");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("f4563500",a,!0,{sourceMap:!1,shadowMode:!1})},ef05:function(t,e,i){"use strict";i.r(e);var a=i("4f5c"),n=i("9542");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("f809");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"5da4e22e",null,!1,a["a"],void 0);e["default"]=o.exports},ef61:function(t,e,i){"use strict";var a=i("aee6"),n=i.n(a);n.a},ef87:function(t,e,i){var a=i("86e5");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("31f628d4",a,!0,{sourceMap:!1,shadowMode:!1})},ef88:function(t,e,i){"use strict";i.r(e);var a=i("1f22"),n=i("be06");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("c0be");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},ef8e:function(t,e,i){"use strict";i.r(e);var a=i("0c4f"),n=i("69b6");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("0cdd");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"6e0b296f",null,!1,a["a"],void 0);e["default"]=o.exports},efbe:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"manHourCard",props:["info","index"],data:function(){return{wxsProps:{}}},components:{}}},effb:function(t,e,i){"use strict";i.r(e);var a=i("4ac4"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},f007:function(t,e,i){"use strict";i.r(e);var a=i("d3bb"),n=i("eae7");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("2779");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},f047:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".status-bar{width:100%}.nav-back{position:fixed;left:32rpx;top:0;height:88rpx;display:flex;align-items:center;z-index:100;\r\n\r\n\r\ntop:var(--status-bar-height)\n}.back-icon{font-size:36rpx;color:#333}.content{display:flex;flex-direction:column;align-items:center;padding-top:178rpx}.success-icon{margin-bottom:80rpx;position:relative}.fail-icon{margin-bottom:80rpx;position:relative}.success-icon .icon-image{width:392rpx;height:392rpx;border-radius:196rpx;box-shadow:0 8rpx 60rpx 0 rgba(252,67,124,.3)}.fail-icon .icon-image{width:392rpx;height:392rpx;border-radius:196rpx 156rpx 196rpx 196rpx;box-shadow:0 8rpx 60rpx 0 rgba(255,0,0,.3)}.success-title{font-size:40rpx;color:#3d3d3d;font-weight:500;margin-bottom:24rpx}.success-tip{font-size:32rpx;color:#3d3d3d;text-align:center;padding:0 48rpx;margin-bottom:24rpx}.btn-back{width:630rpx;height:96rpx;background:#e8101e;border-radius:48rpx;display:flex;align-items:center;justify-content:center}.btn-text{font-size:40rpx;color:#fff;font-weight:350}.fail-back-btn{width:630rpx;height:96rpx;background:#fff;border-radius:48rpx;display:flex;align-items:center;justify-content:center;border:1rpx solid #e8101e;margin-top:32rpx}.fail-back-btn .btn-text{color:#e8101e}.submitres-page .back-btn{background:transparent!important;background-color:initial!important}\r\n\r\n\r\n\r\n",""]),t.exports=e},f097:function(t,e,i){var a=i("107b");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("555cc330",a,!0,{sourceMap:!1,shadowMode:!1})},f0a1:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i," .navbar-content{border:none!important}.service-first-tab{border-bottom:none;padding-bottom:27rpx;border-bottom:2rpx solid #f1f1f1}.common-list{background-color:#fafafa!important}.common-list .list-container{padding:0rpx}",""]),t.exports=e},f0b8:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("e26b")),r={data:function(){return{wxsProps:{}}},components:{serviceCodeInput:n.default}};e.default=r},f0ca:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"AddAlipayAccount",data:function(){return{wxsProps:{}}},components:{}}},f0cb:function(t,e,i){"use strict";i.r(e);var a=i("2a42"),n=i("2546");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"b6959c48",null,!1,a["a"],void 0);e["default"]=o.exports},f16c:function(t,e,i){"use strict";i.r(e);var a=i("3242"),n=i("9cc1");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("ee46");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"5bd0e584",null,!1,a["a"],void 0);e["default"]=o.exports},f170:function(t,e,i){"use strict";var a=i("2329"),n=i.n(a);n.a},f171:function(t,e,i){"use strict";var a=i("ffd0"),n=i.n(a);n.a},f174:function(t,e,i){"use strict";var a=i("538f"),n=i.n(a);n.a},f1a3:function(t,e,i){"use strict";i.r(e);var a=i("df05"),n=i("6125");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("75fa");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},f1c3:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[t._v("\u8ba2\u5355\u7f16\u53f7\uff1a"+t._$g(1,"t0-0"))]),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:t._$g(3,"a-src"),mode:"aspectFill",_i:3}}),i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v(t._$g(5,"t0-0"))]),t._$g(6,"i")?i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("\u5730\u5740\uff1a"+t._$g(6,"t0-0"))]):t._e(),t._$g(7,"i")?i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v("\u5730\u5740\uff1a"+t._$g(7,"t0-0")+t._$g(7,"t0-1"))]):t._e()],1)],1),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v("\u4f7f\u7528\u65f6\u6bb5\uff1a"+t._$g(8,"t0-0"))]),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._$g(10,"i")?i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u53d6\u6d88\u8ba2\u5355 ")]):t._e(),t._$g(11,"i")?i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u63a5\u5355")]):t._e(),t._$g(12,"i")?i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u5f00\u59cb\u670d\u52a1")]):t._e(),t._$g(13,"i")?i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v("\u670d\u52a1\u5b8c\u6210")]):t._e()],1)],1)},n=[]},f1ef:function(t,e,i){"use strict";i.r(e);var a=i("9c5e"),n=i("d9a2");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("f170");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"d044a224",null,!1,a["a"],void 0);e["default"]=o.exports},f27d:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},t._l(t._$g(2,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("2-"+r,"sc"),class:t._$g("2-"+r,"c"),attrs:{_i:"2-"+r},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("v-uni-text",{staticClass:t._$g("3-"+r,"sc"),attrs:{_i:"3-"+r}},[t._v(t._$g("3-"+r,"t0-0"))]),i("v-uni-image",{staticClass:t._$g("4-"+r,"sc"),attrs:{src:t._$g("4-"+r,"a-src"),mode:"widthFix",_i:"4-"+r}})],1)})),1),t._$g(5,"i")?i("uni-view",{staticClass:t._$g(5,"sc"),class:t._$g(5,"c"),style:t._$g(5,"s"),attrs:{_i:5},on:{click:function(e){return t.$handleViewEvent(e)}}}):t._e(),t._$g(6,"i")?i("uni-view",{staticClass:t._$g(6,"sc"),class:t._$g(6,"c"),style:t._$g(6,"s"),attrs:{_i:6}},[t._$g(7,"i")?i("uni-view",{staticClass:t._$g(7,"sc"),class:t._$g(7,"c"),attrs:{_i:7}},[i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},t._l(t._$g(9,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("9-"+r,"sc"),class:t._$g("9-"+r,"c"),attrs:{_i:"9-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g("10-"+r,"sc"),attrs:{_i:"10-"+r}},[t._v(t._$g("10-"+r,"t0-0"))]),t._$g("11-"+r,"i")?i("v-uni-image",{staticClass:t._$g("11-"+r,"sc"),attrs:{src:t._$g("11-"+r,"a-src"),mode:"widthFix",_i:"11-"+r}}):t._e()],1)})),1)],1):t._e(),t._$g(12,"i")?i("uni-view",{staticClass:t._$g(12,"sc"),class:t._$g(12,"c"),attrs:{_i:12}},[i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},t._l(t._$g(14,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("14-"+r,"sc"),class:t._$g("14-"+r,"c"),attrs:{_i:"14-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g("15-"+r,"sc"),attrs:{_i:"15-"+r}},[t._v(t._$g("15-"+r,"t0-0"))])],1)})),1),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("v-uni-button",{staticClass:t._$g(17,"sc"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u91cd\u7f6e")]),i("v-uni-button",{staticClass:t._$g(18,"sc"),attrs:{_i:18},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u5b8c\u6210")])],1)],1):t._e(),t._$g(19,"i")?i("uni-view",{staticClass:t._$g(19,"sc"),class:t._$g(19,"c"),attrs:{_i:19}},[i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._l(t._$g(21,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("21-"+r,"sc"),class:t._$g("21-"+r,"c"),attrs:{_i:"21-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g("22-"+r,"sc"),attrs:{_i:"22-"+r}},[t._v(t._$g("22-"+r,"t0-0"))])],1)})),i("uni-view",{staticClass:t._$g(23,"sc"),class:t._$g(23,"c"),attrs:{_i:23},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("uni-view",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25}},[i("v-uni-text",{attrs:{_i:26}},[t._v("\u81ea\u5b9a\u4e49")])],1),i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[i("v-uni-input",{staticClass:t._$g(28,"sc"),attrs:{type:"number",placeholder:"\u6700\u4f4e\u4ef7",_i:28},on:{input:function(e){return t.$handleViewEvent(e)},click:function(e){return t.$handleViewEvent(e,{stop:!0})}},model:{value:t._$g(28,"v-model"),callback:function(){},expression:"customMin"}}),i("v-uni-text",{staticClass:t._$g(29,"sc"),attrs:{_i:29}},[t._v("\u2014\u2014")]),i("v-uni-input",{staticClass:t._$g(30,"sc"),attrs:{type:"number",placeholder:"\u6700\u9ad8\u4ef7",_i:30},on:{input:function(e){return t.$handleViewEvent(e)},click:function(e){return t.$handleViewEvent(e,{stop:!0})}},model:{value:t._$g(30,"v-model"),callback:function(){},expression:"customMax"}})],1)],1)],1)],2),i("uni-view",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[i("v-uni-button",{staticClass:t._$g(32,"sc"),attrs:{_i:32},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u91cd\u7f6e")]),i("v-uni-button",{staticClass:t._$g(33,"sc"),attrs:{_i:33},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u5b8c\u6210")])],1)],1):t._e(),t._$g(34,"i")?i("uni-view",{staticClass:t._$g(34,"sc"),class:t._$g(34,"c"),attrs:{_i:34}},[i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},t._l(t._$g(36,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("36-"+r,"sc"),class:t._$g("36-"+r,"c"),attrs:{_i:"36-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g("37-"+r,"sc"),attrs:{_i:"37-"+r}},[t._v(t._$g("37-"+r,"t0-0"))]),t._$g("38-"+r,"i")?i("v-uni-image",{staticClass:t._$g("38-"+r,"sc"),attrs:{src:t._$g("38-"+r,"a-src"),mode:"widthFix",_i:"38-"+r}}):t._e()],1)})),1)],1):t._e()],1):t._e()],1)},n=[]},f290:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},f2c2:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("searchBox",{attrs:{_i:2},on:{confirm:function(e){return t.$handleViewEvent(e)},search:function(e){return t.$handleViewEvent(e)}},model:{value:t._$g(2,"v-model"),callback:function(){},expression:"queryData.title"}}),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:"/static//images/icons/tip_icon.png",_i:4}}),i("v-uni-text",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v("\u5df2\u4e0a\u67b6\u670d\u52a1\u5206\u914d\u7ed9\u5458\u5de5\u540e\uff0c\u5458\u5de5\u53ef\u63a5\u6b64\u670d\u52a1\u7684\u5230\u5bb6\u8ba2\u5355\uff01")])],1),i("CommonList",{ref:"groupRef",attrs:{_i:6},scopedSlots:t._u([{key:"listData",fn:function(e,a,n){e.list;return[i("uni-view",{staticClass:a._$g("8-"+n,"sc"),attrs:{_i:"8-"+n}},t._l(a._$g("9-"+n,"f"),(function(e,r,s,o){return i("uni-view",{key:e,staticClass:a._$g("9-"+n+o,"sc"),attrs:{_i:"9-"+n+o}},[i("uni-view",{staticClass:a._$g("10-"+n+o,"sc"),attrs:{_i:"10-"+n+o}},[i("v-uni-image",{staticClass:a._$g("11-"+n+o,"sc"),attrs:{src:a._$g("11-"+n+o,"a-src"),mode:"aspectFill",_i:"11-"+n+o}}),i("uni-view",{staticClass:a._$g("12-"+n+o,"sc"),attrs:{_i:"12-"+n+o}},[i("uni-view",{staticClass:a._$g("13-"+n+o,"sc"),attrs:{_i:"13-"+n+o}},[t._v(" "+a._$g("13-"+n+o,"t0-0")+" ")]),i("uni-view",{staticClass:a._$g("14-"+n+o,"sc"),attrs:{_i:"14-"+n+o}},[i("v-uni-text",{staticClass:a._$g("15-"+n+o,"sc"),staticStyle:{color:"#e8101e"},attrs:{_i:"15-"+n+o}},[t._v("\xa5")]),i("v-uni-text",{staticClass:a._$g("16-"+n+o,"sc"),staticStyle:{color:"#e8101e","font-size":"28rpx"},attrs:{_i:"16-"+n+o}},[t._v(a._$g("16-"+n+o,"t0-0"))])],1)],1)],1),i("uni-view",{staticClass:a._$g("17-"+n+o,"sc"),attrs:{_i:"17-"+n+o},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" \u5206\u914d ")])],1)})),1)]}},{key:"empty",fn:function(t,e,a){return[i("noData",{attrs:{_i:"19-"+a}})]}}])})],1)},r=[]},f2c3:function(t,e,i){"use strict";var a=i("a16b"),n=i.n(a);n.a},f2c4:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"AgreeRadio",props:["isAgree","yesImg","noImg","radioSize"],data:function(){return{wxsProps:{}}},components:{}}},f2d7:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.service-page[data-v-f5b5acac]{padding-bottom:30rpx}.flexed[data-v-f5b5acac]{position:-webkit-sticky;position:sticky;top:88rpx;left:0;z-index:999}.search-inp[data-v-f5b5acac]{width:700rpx;height:68rpx;background-color:#eef4fa;border-radius:34rpx;padding:0 70rpx 0 48rpx;font-size:28rpx;box-sizing:border-box}.placeholder[data-v-f5b5acac]{color:#999}.search-icon[data-v-f5b5acac]{width:32rpx;height:32rpx;position:absolute;right:56rpx;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tab-container[data-v-f5b5acac]{width:100vw;box-sizing:border-box;display:flex;gap:48rpx;align-items:center;background-color:#fafafa;padding:30rpx 0rpx 20rpx 30rpx;overflow-x:auto}.tab-item[data-v-f5b5acac]{flex-shrink:0;text-align:center;font-size:30rpx;color:#666;padding:16rpx 0;position:relative}.tab-item.active[data-v-f5b5acac]{color:#000;font-weight:500}.tab-item.active[data-v-f5b5acac]::after{content:"";position:absolute;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:32rpx;height:6rpx;background-color:#e8101e;border-radius:3rpx}.service-nothings[data-v-f5b5acac]{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;padding:280rpx 0 0}.nothings-text[data-v-f5b5acac]{font-size:32rpx;font-weight:500;color:#999;text-align:center;font-style:italic}\n.service-image[data-v-f5b5acac]{border:1rpx solid #eee}.flexed[data-v-f5b5acac]{top:calc(var(--status-bar-height) + 88rpx)}\r\n\r\n\r\n\r\n\r\n\r\n\r\n',""]),t.exports=e},f39f:function(t,e,i){"use strict";var a=i("2e77"),n=i.n(a);n.a},f3ca:function(t,e,i){"use strict";i.r(e);var a=i("7e4f"),n=i("957d");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("cc33");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"0593c2d1",null,!1,a["a"],void 0);e["default"]=o.exports},f412:function(t,e,i){"use strict";var a=i("af05"),n=i.n(a);n.a},f41e:function(t,e,i){"use strict";var a=i("8e9d"),n=i.n(a);n.a},f44c:function(t,e,i){"use strict";var a=i("3226"),n=i.n(a);n.a},f44e:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this.$createElement,e=this._self._c||t;return e("v-uni-text",{staticStyle:{opacity:"0",height:"0"},attrs:{_i:0}},[this._t("default",null,{_i:1})],2)},n=[]},f457:function(t,e,i){var a=i("d74b");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("70ec1c1a",a,!0,{sourceMap:!1,shadowMode:!1})},f471:function(t,e,i){var a=i("3f93");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("347f60fc",a,!0,{sourceMap:!1,shadowMode:!1})},f4d4:function(t,e,i){"use strict";i.r(e);var a=i("6b2d"),n=i("92a0");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("974d");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"65d24582",null,!1,a["a"],void 0);e["default"]=o.exports},f4f4:function(t,e,i){var a=i("8588");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("122dc877",a,!0,{sourceMap:!1,shadowMode:!1})},f59c:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},f5bf:function(t,e,i){var a=i("bccb");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("2bc85846",a,!0,{sourceMap:!1,shadowMode:!1})},f5d5:function(t,e,i){"use strict";i.r(e);var a=i("cf8d"),n=i("e712");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("cea6");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},f5e1:function(t,e,i){t.exports=i.p+"static/images/shop/payBj.png"},f654:function(t,e,i){var a=i("3ecd");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("3e91b185",a,!0,{sourceMap:!1,shadowMode:!1})},f6ec:function(t,e,i){var a=i("f047");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("2bb77006",a,!0,{sourceMap:!1,shadowMode:!1})},f6f1:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".order-card[data-v-50de1d58]{padding:34rpx 20rpx 40rpx 20rpx;background:#fff;border-radius:20rpx;margin:20rpx 30rpx}.order-card .order-card-header[data-v-50de1d58]{display:flex;justify-content:space-between;align-items:center;margin-bottom:40rpx}.order-card .order-card-header__left[data-v-50de1d58]{font-weight:500;font-size:30rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal}.order-card .order-card-header__right[data-v-50de1d58]{font-weight:500;font-size:24rpx;color:#666;line-height:33rpx;text-align:left;font-style:normal;display:flex;align-items:center}.order-card .order-card-header__right__img[data-v-50de1d58]{width:23rpx;height:24rpx;margin-right:7rpx}.order-card .order-card-content[data-v-50de1d58]{display:flex;justify-content:flex-start;align-items:flex-start}.order-card .order-card-content__left[data-v-50de1d58]{margin-right:30rpx}.order-card .order-card-content__left__img[data-v-50de1d58]{width:172rpx;height:172rpx;border-radius:20rpx}.order-card .order-card-content__right__price[data-v-50de1d58]{font-weight:500;font-size:26rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal;margin-bottom:14rpx}.order-card .order-card-content__right__scope[data-v-50de1d58]{font-weight:400;font-size:26rpx;color:#666;line-height:34rpx;text-align:left;font-style:normal;margin-bottom:27rpx}.order-card .order-card-content__right__button[data-v-50de1d58]{width:438rpx;display:flex;justify-content:flex-end}.order-card .order-card-content__right__button__btn[data-v-50de1d58]{display:flex;align-items:center;justify-content:center;font-weight:400;font-size:26rpx;color:#e8101e;line-height:37rpx;text-align:left;font-style:normal;width:160rpx;height:58rpx;border-radius:32rpx;border:2rpx solid #e8101e}",""]),t.exports=e},f6f2:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("93a6")),r={data:function(){return{wxsProps:{}}},components:{AliOssUploader:n.default}};e.default=r},f706:function(t,e,i){"use strict";i.r(e);var a=i("c5ab"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},f71a:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".profile-page[data-v-385f0392]{background-color:#f8f8f8;min-height:100vh;padding-bottom:60rpx}.profile-page .header[data-v-385f0392]{display:flex;align-items:center;padding:20rpx;background-color:#fff;margin:20rpx;border-radius:20rpx}.profile-page .header .avatar[data-v-385f0392]{width:122rpx;height:122rpx;border-radius:50%;margin-right:20rpx}.profile-page .header .header-info[data-v-385f0392]{flex:1}.profile-page .header .header-info .name[data-v-385f0392]{font-weight:500;font-size:36rpx;color:#333;line-height:50rpx;text-align:left;font-style:normal;margin-bottom:19rpx;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.profile-page .header .header-info .name .service-link[data-v-385f0392]{padding:9rpx 20rpx;border-radius:25rpx;border:2rpx solid rgba(232,16,30,.28);font-weight:400;font-size:24rpx;color:#e8101e;line-height:32rpx;text-align:right;font-style:normal}.profile-page .header .header-info .name .service-link .service-link-icon[data-v-385f0392]{width:9rpx;height:16rpx;margin-left:8rpx}.profile-page .header .header-info .service-time[data-v-385f0392]{font-weight:400;font-size:24rpx;color:#666;line-height:33rpx;text-align:left;font-style:normal}.profile-page .section[data-v-385f0392]{background-color:#fff;padding:30rpx;margin:20rpx;border-radius:20rpx}.profile-page .section .section-title[data-v-385f0392]{font-weight:500;font-size:26rpx;color:#333;line-height:37rpx;text-align:left;font-style:normal;margin-bottom:17rpx}.profile-page .section .section-content[data-v-385f0392]{font-weight:400;font-size:26rpx;color:#5b5b5b;line-height:37rpx;text-align:left;font-style:normal}.profile-page .section .tags[data-v-385f0392]{display:flex;flex-wrap:wrap;gap:16rpx}.profile-page .section .tags .tag[data-v-385f0392]{padding:0 8rpx;border-radius:16rpx;font-weight:400;font-size:20rpx;color:#666;line-height:30rpx;text-align:left;font-style:normal;height:30rpx;background:#f5f5f5;border-radius:8rpx}.profile-page .section .line[data-v-385f0392]{margin-bottom:30rpx;padding-bottom:30rpx;border-bottom:1px solid #f5f3f3}.profile-page .zs-title[data-v-385f0392]{font-weight:500;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal;margin:33rpx 20rpx 20rpx 20rpx}.profile-page .cert-img[data-v-385f0392]{width:200rpx;height:200rpx}.profile-page .return-btn[data-v-385f0392]{width:90%;height:80rpx;line-height:80rpx;text-align:center;background-color:#f03838;color:#fff;font-size:32rpx;border-radius:40rpx;margin:40rpx auto 0}",""]),t.exports=e},f7a0:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.qualification-page[data-v-5f964402]{display:flex;flex-direction:column;height:100vh;background:#f5f5f5}.content-area[data-v-5f964402]{flex:1;overflow-y:auto;padding:20rpx 20rpx;padding-bottom:0}.change-tip[data-v-5f964402]{background:#fae7ec;padding:20rpx;text-align:center}.change-tip uni-text[data-v-5f964402]{font-size:28rpx;color:#d4131f}.audit-tip[data-v-5f964402]{margin:20rpx 24rpx 20rpx 24rpx;border-radius:12rpx}.audit-text[data-v-5f964402]{font-weight:400;font-size:32rpx;color:#333;text-align:center;display:block}.reject-reason[data-v-5f964402]{background:transparent;padding:24rpx 24rpx 0 24rpx}.reject-title[data-v-5f964402]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:center;font-style:normal}.reject-detail[data-v-5f964402]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:28rpx;color:#999;line-height:40rpx;text-align:center;font-style:normal;margin-top:12rpx}.section[data-v-5f964402]{margin-bottom:30rpx}.section-title[data-v-5f964402]{display:flex;align-items:center;margin-bottom:30rpx}.title-bar[data-v-5f964402]{width:6rpx;height:30rpx;background-color:#e8101e;margin-right:7rpx;border-radius:5rpx}.title-text[data-v-5f964402]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#1d2129;line-height:48rpx;text-align:left;font-style:normal}.section-title uni-text[data-v-5f964402]{font-size:36rpx;color:#1d2129;font-weight:500}.box-cont[data-v-5f964402]{background:#fff;border-radius:20rpx;margin-bottom:24rpx;margin-left:8rpx;margin-right:8rpx;box-shadow:none}.form-item[data-v-5f964402]{padding:24rpx 22rpx}.form-item-one[data-v-5f964402]{display:flex;align-items:center;padding:24rpx}.label-wrapper[data-v-5f964402]{display:inline-flex;align-items:center}.label[data-v-5f964402]{font-size:28rpx;color:#333;font-weight:500;line-height:1}.label-icon[data-v-5f964402]{width:26rpx;height:26rpx;margin-left:8rpx;align-items:center}.required[data-v-5f964402]::before{content:"*";color:red;margin-right:4rpx}.upload-tip[data-v-5f964402]{font-size:26rpx;color:#999;margin:16rpx 0 24rpx 0;font-weight:400;font-family:PingFangSC,PingFang SC;text-align:left;font-style:normal}.upload-container[data-v-5f964402]{display:flex;flex-direction:column;align-items:center}.upload-box[data-v-5f964402]{display:flex;justify-content:center;align-items:center}.upload-camera[data-v-5f964402]{width:446rpx;height:298rpx;display:flex;align-items:center;justify-content:center;border-radius:48rpx;overflow:hidden;background-color:#f8f9fd;position:relative}.idcard-upload-vertical-container[data-v-5f964402]{display:flex;flex-direction:column;padding:24rpx}.idcard-upload-vertical-item[data-v-5f964402]{display:flex;flex-direction:column;align-items:center;margin-bottom:40rpx}.idcard-upload-vertical-item[data-v-5f964402]:last-child{margin-bottom:0}.upload-label.required[data-v-5f964402]::before{content:"*";color:red;margin-right:4rpx}.camera-icon[data-v-5f964402]{width:446rpx;height:298rpx;border-radius:48rpx}.preview-image[data-v-5f964402]{border-radius:48rpx;width:100%;height:100%}.recognize-overlay[data-v-5f964402]{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:48rpx}.recognize-loading[data-v-5f964402]{width:60rpx;height:60rpx;border:4rpx solid #fff;border-top:4rpx solid #e8101e;border-radius:50%;-webkit-animation:spin-data-v-5f964402 1s linear infinite;animation:spin-data-v-5f964402 1s linear infinite;margin-bottom:16rpx}.recognize-text[data-v-5f964402]{color:#fff;font-size:24rpx}@-webkit-keyframes spin-data-v-5f964402{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-data-v-5f964402{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.picker-content[data-v-5f964402]{display:flex;align-items:center;justify-content:flex-end;flex:1}.picker-content uni-text[data-v-5f964402]{margin-right:19rpx}.date-divider[data-v-5f964402]{width:2rpx;height:30rpx;background-color:#e9e9e9;flex-shrink:0;margin-right:15rpx}.date-picker-box.disabled .date-divider[data-v-5f964402]{background-color:#f3f3f3}.date-picker-box uni-text[data-v-5f964402]{flex:1;min-width:0;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.arrow-right[data-v-5f964402]{width:14rpx;height:26rpx}.placeholder[data-v-5f964402]{color:#999;font-size:28rpx}.date-right-container[data-v-5f964402]{display:flex;align-items:center;flex-shrink:0}.picker-value[data-v-5f964402]{font-size:28rpx;color:#333}.input[data-v-5f964402]{flex:1;font-size:28rpx;color:#333;text-align:right;margin-left:20rpx}.radio-group[data-v-5f964402]{display:flex;margin-top:24rpx;width:100%}.radio-item[data-v-5f964402]{display:flex;align-items:center;margin-right:130rpx}.radio[data-v-5f964402]{width:30rpx;height:30rpx;border:2rpx solid #ddd;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16rpx}.radio.checked[data-v-5f964402]{background-color:#e8101e;border-color:#e8101e}.radio-icon-image[data-v-5f964402]{width:32rpx;height:32rpx}.radio-label[data-v-5f964402]{font-size:28rpx;color:#333}.date-range-container[data-v-5f964402]{padding:24rpx;display:flex;justify-content:space-between}.date-item[data-v-5f964402]{flex:1;display:flex;flex-direction:column}.date-item[data-v-5f964402]:first-child{margin-right:24rpx}.date-label[data-v-5f964402]{font-size:28rpx;color:#333;margin-bottom:16rpx;font-weight:500;margin-left:8rpx}.date-picker-box[data-v-5f964402]{display:flex;align-items:center;justify-content:space-between;border:2rpx solid #e9e9e9;border-radius:10rpx;padding:12rpx 19rpx;background-color:initial;min-height:40rpx}.date-picker-box.disabled[data-v-5f964402]{border:2rpx solid #f3f3f3}.date-picker-box.disabled .date-value[data-v-5f964402],\r\n.date-picker-box.disabled .placeholder[data-v-5f964402]{color:#ccc}.date-value[data-v-5f964402]{font-size:28rpx;color:#333}.date-arrow[data-v-5f964402]{width:35rpx;height:33rpx}.upload-label[data-v-5f964402]{font-family:Helvetica;font-size:28rpx;color:#999;line-height:40rpx;text-align:left;font-style:normal;margin-top:24rpx}.bottom-actions[data-v-5f964402]{position:fixed;bottom:0;left:0;right:0;padding:0rpx 24rpx 40rpx 24rpx;background:#fff;z-index:100}.action-btn[data-v-5f964402]{height:88rpx;border-radius:43rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:400;margin-top:20rpx}.change-info-btn[data-v-5f964402], .view-change-btn[data-v-5f964402], .resubmit-btn[data-v-5f964402]{background:linear-gradient(180deg,#f52540,#e8101e)}.action-buttons-row[data-v-5f964402]{display:flex;justify-content:space-between;margin:0 30rpx}.action-buttons-row .action-btn[data-v-5f964402]{width:270rpx}.cancel-btn[data-v-5f964402]{background:#e5e5e5;border-radius:43rpx;padding:0 15rpx}.submit-btn[data-v-5f964402]{background:linear-gradient(180deg,#f52540,#e8101e 100%,#e8101e 0);border-radius:43rpx;padding:0 15rpx}.btn-text[data-v-5f964402]{font-family:PingFangSC,PingFang SC;font-weight:400;font-size:36rpx;color:#fff;line-height:50rpx;text-align:left;font-style:normal}.cancel-text[data-v-5f964402]{color:#666}.popup[data-v-5f964402]{position:fixed;left:0;right:0;bottom:0;z-index:999;visibility:hidden;opacity:0;transition:all .3s ease}.popup.show[data-v-5f964402]{visibility:visible;opacity:1}.popup-mask[data-v-5f964402]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.popup-content[data-v-5f964402]{position:relative;background-color:#fff;border-radius:24rpx 24rpx 0 0;padding:32rpx;-webkit-transform:translateY(100%);transform:translateY(100%);transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;max-height:70vh}.popup.show .popup-content[data-v-5f964402]{-webkit-transform:translateY(0);transform:translateY(0)}.popup-header[data-v-5f964402]{display:flex;align-items:center;justify-content:space-between;margin-bottom:32rpx}.popup-title[data-v-5f964402]{font-size:32rpx;color:#333;font-weight:500}.popup-close[data-v-5f964402]{font-size:40rpx;color:#999;padding:16rpx}.popup-body[data-v-5f964402]{max-height:400rpx;overflow-y:auto}.radio-list .radio-item[data-v-5f964402]{margin-bottom:32rpx}.popup-footer[data-v-5f964402]{margin-top:32rpx}.popup-btn[data-v-5f964402]{height:88rpx;border-radius:44rpx;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#f52540,#e8101e)}.popup-btn .btn-text[data-v-5f964402]{font-size:32rpx;font-weight:500;color:#fff}.cancel-text[data-v-5f964402], .confirm-text[data-v-5f964402]{font-size:32rpx;padding:16rpx}.cancel-text[data-v-5f964402]{color:#666}.confirm-text[data-v-5f964402]{color:#e8101e;font-weight:500}.picker-scroll[data-v-5f964402]{height:400rpx}.picker-item[data-v-5f964402]{height:68rpx;line-height:68rpx;text-align:center;font-size:28rpx}.tip-popup[data-v-5f964402]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;display:flex;align-items:center;justify-content:center;visibility:hidden;opacity:0;transition:all .3s ease}.tip-popup.show[data-v-5f964402]{visibility:visible;opacity:1}.tip-popup-mask[data-v-5f964402]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.tip-popup-content[data-v-5f964402]{position:relative;width:620rpx;height:810rpx}.tip-popup-bg[data-v-5f964402]{width:620rpx;height:810rpx;position:absolute;top:0;left:0}.tip-popup-body[data-v-5f964402]{position:relative;flex-direction:column;padding:80rpx 20rpx 40rpx 20rpx;box-sizing:border-box}.tip-title[data-v-5f964402]{font-size:36rpx;font-weight:700;color:#333;text-align:center;margin-top:107rpx;margin-bottom:37rpx}.tip-image-container[data-v-5f964402]{flex:1;display:flex;align-items:center;justify-content:center;margin-bottom:50rpx}.tip-image[data-v-5f964402]{width:90%;max-height:400rpx}.tip-buttons[data-v-5f964402]{display:flex;justify-content:space-between;padding:0 28rpx}.tip-btn[data-v-5f964402]{width:250rpx;height:80rpx;border-radius:40rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:500}.tip-btn.cancel[data-v-5f964402]{border:#e8101e 2rpx solid;background-color:initial;color:#e8101e}.tip-btn.confirm[data-v-5f964402]{background:linear-gradient(180deg,#f52540,#e8101e);color:#fff}.tip-btn .btn-text[data-v-5f964402]{color:inherit}.permission.transform[data-v-5f964402]{top:calc(var(--status-bar-height) + 88rpx + 20rpx);opacity:1;visibility:visible}',""]),t.exports=e},f7ad:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),t._$g(2,"i")?i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("v-uni-text",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u5ba1\u6838\u4e2d\u2026")])],1),i("v-uni-text",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v("\u9884\u8ba124\u5c0f\u65f6\u5b8c\u6210\u5ba1\u6838\uff0c\u901a\u8fc7\u540e\u5c06\u81ea\u52a8\u751f\u6548")])],1):t._e(),t._$g(6,"i")?i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[i("v-uni-text",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v("\u5ba1\u6838\u6210\u529f"),i("v-uni-text",{staticStyle:{color:"#E8101E"},attrs:{_i:9}},[t._v("\u3001\u7ebf\u4e0a\u5c55\u793a\u4e2d")])],1)],1)],1):t._e(),t._$g(10,"i")?i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v("\u5df2\u9a73\u56de\u2026")])],1),t._$g(13,"i")?i("v-uni-text",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v("\u9a73\u56de\u539f\u56e0\uff1a"+t._$g(13,"t0-0"))]):t._e()],1):t._e(),i("uni-view",{class:t._$g(14,"c"),attrs:{_i:14}},[i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v(t._$g(17,"t0-0"))]),i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("("+t._$g(18,"t0-0")+")")])],1),t._$g(19,"i")?i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("uni-view",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._$g(21,"i")?i("v-uni-image",{staticClass:t._$g(21,"sc"),attrs:{src:t._$g(21,"a-src"),mode:"aspectFill",_i:21}}):i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(23,"sc"),attrs:{src:"/static/images/icons/addPhoto.png",_i:23}}),i("v-uni-text",{staticClass:t._$g(24,"sc"),attrs:{_i:24}},[t._v("\u6dfb\u52a0\u7167\u7247")])],1),t._$g(25,"i")?i("uni-view",{staticClass:t._$g(25,"sc"),attrs:{_i:25},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v(" \u66ff\u6362\u56fe\u7247 ")]):t._e()],1)],1):i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27}},[t._$g(28,"i")?i("v-uni-image",{staticClass:t._$g(28,"sc"),attrs:{src:t._$g(28,"a-src"),mode:"aspectFill",_i:28},on:{click:function(e){return t.$handleViewEvent(e)}}}):i("uni-view",{staticClass:t._$g(29,"sc"),attrs:{_i:29},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-image",{staticClass:t._$g(30,"sc"),attrs:{src:"/static/images/icons/addPhoto.png",_i:30}}),i("v-uni-text",{staticClass:t._$g(31,"sc"),attrs:{_i:31}},[t._v("\u6dfb\u52a0\u89c6\u9891")])],1),t._$g(32,"i")?i("uni-view",{staticClass:t._$g(32,"sc"),attrs:{_i:32},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v(" \u66ff\u6362\u89c6\u9891 ")]):t._e(),t._$g(33,"i")?i("uni-view",{staticClass:t._$g(33,"sc"),attrs:{_i:33}},[i("v-uni-image",{staticClass:t._$g(34,"sc"),attrs:{mode:"aspectFill",src:"/static/images/icons/play.png",_i:34}})],1):t._e()],1)],1)],1),i("uni-view",{staticClass:t._$g(35,"sc"),attrs:{_i:35}},[i("uni-view",{staticClass:t._$g(36,"sc"),attrs:{_i:36}},[i("v-uni-text",{staticClass:t._$g(37,"sc"),attrs:{_i:37}},[t._v(t._$g(37,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(38,"sc"),attrs:{_i:38}},[i("uni-view",{staticClass:t._$g(39,"sc"),attrs:{_i:39}},[i("v-uni-input",{attrs:{maxlength:"6",placeholder:t._$g(40,"a-placeholder"),"placeholder-class":"inputClass",disabled:t._$g(40,"a-disabled"),_i:40},model:{value:t._$g(40,"v-model"),callback:function(e){t.$handleVModelEvent(40,e)},expression:"formData.name"}})],1)],1)],1)],1),t._$g(41,"i")?i("uni-view",{staticClass:t._$g(41,"sc"),attrs:{_i:41}},[t._$g(42,"i")?i("uni-view",{staticClass:t._$g(42,"sc"),attrs:{_i:42},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u7f16\u8f91")]):t._e(),t._$g(43,"i")?i("uni-view",{staticClass:t._$g(43,"sc"),attrs:{_i:43},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u53d6\u6d88")]):t._e(),t._$g(44,"i")?i("uni-view",{staticClass:t._$g(44,"sc"),attrs:{_i:44},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u63d0\u4ea4 ")]):t._e()],1):i("uni-view",{staticClass:t._$g(45,"sc"),attrs:{_i:45}},[i("uni-view",{staticClass:t._$g(46,"sc"),attrs:{_i:46},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v("\u63d0\u4ea4")])],1),i("uni-view",{staticClass:t._$g(47,"sc"),class:t._$g(47,"c"),attrs:{_i:47}},[i("uni-view",{staticClass:t._$g(48,"sc"),attrs:{_i:48}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u50a8\u5b58\u7a7a\u95f4/\u7167\u7247\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(49,"sc"),attrs:{_i:49}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u8bfb\u53d6\u76f8\u518c\u548c\u6587\u4ef6\u5185\u5bb9\u3002")])],1),i("uni-view",{staticClass:t._$g(50,"sc"),class:t._$g(50,"c"),attrs:{_i:50}},[i("uni-view",{staticClass:t._$g(51,"sc"),attrs:{_i:51}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u76f8\u673a\u62cd\u6444\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),i("uni-view",{staticClass:t._$g(52,"sc"),attrs:{_i:52}},[t._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u4e0a\u4f20\u60a8\u7684\u7167\u7247/\u56fe\u7247/\u89c6\u9891\u4ee5\u53ca\u7528\u4e8e\u66f4\u6362\u5934\u50cf\u3001\u53d1\u5e03\u5546\u54c1\u7b49\u573a\u666f\u4e2d\u6240\u9700\u5185\u5bb9\u3002")])],1),i("v-uni-video",{directives:[{name:"show",rawName:"v-show",value:t._$g(53,"v-show"),expression:"_$g(53,'v-show')"}],staticStyle:{height:"0",width:"0"},attrs:{src:t._$g(53,"a-src"),controls:!0,id:"myvideo",_i:53},on:{fullscreenchange:function(e){return t.$handleViewEvent(e)}}})],1)},r=[]},f7b4:function(t,e,i){var a=i("afde");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("7ef914ee",a,!0,{sourceMap:!1,shadowMode:!1})},f7c3:function(t,e,i){"use strict";i.r(e);var a=i("15de"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},f809:function(t,e,i){"use strict";var a=i("e1b2"),n=i.n(a);n.a},f80c:function(t,e,i){var a=i("2cc0");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("7d7b6686",a,!0,{sourceMap:!1,shadowMode:!1})},f823:function(t,e,i){"use strict";var a=i("c7b8"),n=i.n(a);n.a},f83a:function(t,e,i){var a=i("05538");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("09b6a668",a,!0,{sourceMap:!1,shadowMode:!1})},f89e:function(t,e,i){"use strict";i.r(e);var a=i("53ae"),n=i("7c97");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("5b8e");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},f8ae:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'.qualification-page[data-v-598597e2]{}.section[data-v-598597e2]{margin-bottom:30rpx}.section-title[data-v-598597e2]{display:flex;align-items:center;margin-bottom:30rpx}.title-bar[data-v-598597e2]{width:6rpx;height:30rpx;background-color:#e8101e;margin-right:7rpx;border-radius:5rpx}.title-text[data-v-598597e2]{font-family:PingFangSC,PingFang SC;font-weight:500;font-size:32rpx;color:#1d2129;line-height:48rpx;text-align:left;font-style:normal}.section-title uni-text[data-v-598597e2]{font-size:36rpx;color:#1d2129;font-weight:500}.box-cont[data-v-598597e2]{background:#fff;border-radius:20rpx;margin-bottom:24rpx;margin-left:8rpx;margin-right:8rpx;box-shadow:none}.form-item[data-v-598597e2]{padding:24rpx 22rpx}.form-item-one[data-v-598597e2]{display:flex;align-items:center;padding:24rpx}.label-wrapper[data-v-598597e2]{display:inline-flex;align-items:center}.label[data-v-598597e2]{font-size:28rpx;color:#333;font-weight:500;line-height:1}.label-icon[data-v-598597e2]{width:26rpx;height:26rpx;margin-left:8rpx;align-items:center}.required[data-v-598597e2]::before{content:"*";color:red;margin-right:4rpx}.upload-tip[data-v-598597e2]{font-size:26rpx;color:#999;margin:16rpx 0 24rpx 0;font-weight:400;font-family:PingFangSC,PingFang SC;text-align:left;font-style:normal}.upload-container[data-v-598597e2]{display:flex;flex-direction:column;align-items:center}.upload-box[data-v-598597e2]{display:flex;justify-content:center;align-items:center}.upload-camera[data-v-598597e2]{width:446rpx;height:298rpx;display:flex;align-items:center;justify-content:center;border-radius:48rpx;overflow:hidden;background-color:#f8f9fd;position:relative}.idcard-upload-vertical-container[data-v-598597e2]{display:flex;flex-direction:column;padding:24rpx}.idcard-upload-vertical-item[data-v-598597e2]{display:flex;flex-direction:column;align-items:center;margin-bottom:40rpx}.idcard-upload-vertical-item[data-v-598597e2]:last-child{margin-bottom:0}.upload-label.required[data-v-598597e2]::before{content:"*";color:red;margin-right:4rpx}.license-upload[data-v-598597e2]{background-size:cover;background-repeat:no-repeat}.idcard-front[data-v-598597e2]{background-size:cover;background-repeat:no-repeat}.idcard-back[data-v-598597e2]{background-size:cover;background-repeat:no-repeat}.camera-icon[data-v-598597e2]{width:446rpx;height:298rpx;border-radius:48rpx}.preview-image[data-v-598597e2]{border-radius:48rpx;width:100%;height:100%}.recognize-overlay[data-v-598597e2]{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:48rpx}.recognize-loading[data-v-598597e2]{width:60rpx;height:60rpx;border:4rpx solid #fff;border-top:4rpx solid #e8101e;border-radius:50%;-webkit-animation:spin-data-v-598597e2 1s linear infinite;animation:spin-data-v-598597e2 1s linear infinite;margin-bottom:16rpx}.recognize-text[data-v-598597e2]{color:#fff;font-size:24rpx}@-webkit-keyframes spin-data-v-598597e2{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-data-v-598597e2{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.picker-content[data-v-598597e2]{display:flex;align-items:center;justify-content:flex-end;flex:1}.picker-content uni-text[data-v-598597e2]{margin-right:19rpx}.date-divider[data-v-598597e2]{width:2rpx;height:30rpx;background-color:#e9e9e9;margin:0 15rpx 0 0}.date-picker-box.disabled .date-divider[data-v-598597e2]{background-color:#f3f3f3}.date-picker-box uni-text[data-v-598597e2]{flex:1}.arrow-right[data-v-598597e2]{width:14rpx;height:26rpx}.placeholder[data-v-598597e2]{color:#999;font-size:28rpx}.picker-value[data-v-598597e2]{font-size:28rpx;color:#333}.input[data-v-598597e2]{flex:1;font-size:28rpx;color:#333;text-align:right;margin-left:20rpx}.radio-group[data-v-598597e2]{display:flex;margin-top:24rpx;width:100%}.radio-item[data-v-598597e2]{display:flex;align-items:center;margin-right:130rpx}.radio[data-v-598597e2]{width:30rpx;height:30rpx;border:2rpx solid #ddd;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16rpx}.radio.checked[data-v-598597e2]{background-color:#e8101e;border-color:#e8101e}.radio-icon-image[data-v-598597e2]{width:32rpx;height:32rpx}.radio-label[data-v-598597e2]{font-size:28rpx;color:#333}.date-range-container[data-v-598597e2]{padding:24rpx;display:flex;justify-content:space-between}.date-item[data-v-598597e2]{flex:1;display:flex;flex-direction:column}.date-item[data-v-598597e2]:first-child{margin-right:24rpx}.date-label[data-v-598597e2]{font-size:28rpx;color:#333;margin-bottom:16rpx;font-weight:500;margin-left:8rpx}.date-picker-box[data-v-598597e2]{display:flex;align-items:center;justify-content:space-between;border:2rpx solid #e9e9e9;border-radius:10rpx;padding:12rpx 19rpx;background-color:initial}.date-picker-box.disabled[data-v-598597e2]{border:2rpx solid #f3f3f3}.date-picker-box.disabled .date-value[data-v-598597e2],\r\n.date-picker-box.disabled .placeholder[data-v-598597e2]{color:#ccc}.date-value[data-v-598597e2]{font-size:28rpx;color:#333}.date-arrow[data-v-598597e2]{width:35rpx;height:33rpx}.upload-label[data-v-598597e2]{font-family:Helvetica;font-size:28rpx;color:#999;line-height:40rpx;text-align:left;font-style:normal;margin-top:24rpx}.popup[data-v-598597e2]{position:fixed;left:0;right:0;bottom:0;z-index:999;visibility:hidden;opacity:0;transition:all .3s ease}.popup.show[data-v-598597e2]{visibility:visible;opacity:1}.popup-mask[data-v-598597e2]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.popup-content[data-v-598597e2]{position:relative;background-color:#fff;border-radius:24rpx 24rpx 0 0;padding:32rpx;-webkit-transform:translateY(100%);transform:translateY(100%);transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease;max-height:70vh}.popup.show .popup-content[data-v-598597e2]{-webkit-transform:translateY(0);transform:translateY(0)}.popup-header[data-v-598597e2]{display:flex;align-items:center;justify-content:space-between;margin-bottom:32rpx}.popup-title[data-v-598597e2]{font-size:32rpx;color:#333;font-weight:500}.popup-close[data-v-598597e2]{font-size:40rpx;color:#999;padding:16rpx}.popup-body[data-v-598597e2]{max-height:400rpx;overflow-y:auto}.radio-list .radio-item[data-v-598597e2]{margin-bottom:32rpx}.popup-footer[data-v-598597e2]{margin-top:32rpx}.popup-btn[data-v-598597e2]{height:88rpx;border-radius:44rpx;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#f52540,#e8101e)}.popup-btn .btn-text[data-v-598597e2]{font-size:32rpx;font-weight:500;color:#fff}.cancel-text[data-v-598597e2], .confirm-text[data-v-598597e2]{font-size:32rpx;padding:16rpx}.cancel-text[data-v-598597e2]{color:#666}.confirm-text[data-v-598597e2]{color:#e8101e;font-weight:500}.picker-scroll[data-v-598597e2]{height:400rpx}.picker-item[data-v-598597e2]{height:68rpx;line-height:68rpx;text-align:center;font-size:28rpx}.tip-popup[data-v-598597e2]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;display:flex;align-items:center;justify-content:center;visibility:hidden;opacity:0;transition:all .3s ease}.tip-popup.show[data-v-598597e2]{visibility:visible;opacity:1}.tip-popup-mask[data-v-598597e2]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5)}.tip-popup-content[data-v-598597e2]{position:relative;width:620rpx;height:810rpx}.tip-popup-bg[data-v-598597e2]{width:620rpx;height:810rpx;position:absolute;top:0;left:0}.tip-popup-body[data-v-598597e2]{position:relative;flex-direction:column;padding:80rpx 20rpx 40rpx 20rpx;box-sizing:border-box}.tip-title[data-v-598597e2]{font-size:36rpx;font-weight:700;color:#333;text-align:center;margin-top:107rpx;margin-bottom:37rpx}.tip-image-container[data-v-598597e2]{flex:1;display:flex;align-items:center;justify-content:center;margin-bottom:50rpx}.tip-image[data-v-598597e2]{width:90%;max-height:400rpx}.tip-buttons[data-v-598597e2]{display:flex;justify-content:space-between;padding:0 28rpx}.tip-btn[data-v-598597e2]{width:250rpx;height:80rpx;border-radius:40rpx;display:flex;align-items:center;justify-content:center;font-size:32rpx;font-weight:500}.tip-btn.cancel[data-v-598597e2]{border:#e8101e 2rpx solid;background-color:initial;color:#e8101e}.tip-btn.confirm[data-v-598597e2]{background:linear-gradient(180deg,#f52540,#e8101e);color:#fff}.tip-btn .btn-text[data-v-598597e2]{color:inherit}',""]),t.exports=e},f8bd:function(t,e,i){"use strict";i.r(e);var a=i("b878"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},f8c5:function(t,e,i){"use strict";var a=i("b558"),n=i.n(a);n.a},f8d0:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'body{background:linear-gradient(0deg,#fff,#f5f5f5)}.container .tab-nav{display:flex;justify-content:space-between;padding:0 91rpx;background:#fff}.container .tab-nav .tab-item{padding:30rpx 0rpx 30rpx 0rpx;cursor:pointer;font-weight:500;font-size:32rpx;color:#333;line-height:45rpx;text-align:left;font-style:normal}.container .tab-nav .tab-item.active{color:#e8101e;font-weight:500;position:relative}.container .tab-nav .tab-item.active:after{content:"";position:absolute;bottom:17rpx;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:34rpx;height:6rpx;background:linear-gradient(306deg,#e8101e,#fc563b);border-radius:3rpx}.container .syr-list .syr-item{margin:20rpx;padding:20rpx 30rpx;background:#fff;border-radius:20rpx}.container .syr-list .syr-item .syr-card-left{width:32rpx;height:32rpx;border:4rpx solid #cdcfd2;border-radius:40rpx;margin-right:30rpx}.container .syr-list .syr-item .syr-card-left__img{width:40rpx;height:40rpx;margin-right:30rpx}.container .syr-list .syr-item .syr-item-right .item-right-photo{width:100rpx;height:100rpx;border-radius:50%;margin-right:20rpx}.container .syr-list .syr-item .syr-item-right .item-right-texts{flex:1}.container .syr-list .syr-item .syr-item-right .item-right-texts .item-right-text1{margin-top:8rpx;font-weight:500;font-size:28rpx;color:#333;line-height:40rpx;text-align:left;font-style:normal}.container .syr-list .syr-item .syr-item-right .item-right-texts .item-right-text2{margin-top:8rpx;font-weight:400;font-size:26rpx;color:#999;line-height:37rpx;text-align:left;font-style:normal}.container-footer{position:fixed;bottom:20rpx;left:0rpx;right:0}.container-footer .container-footer-tip{font-weight:400;font-size:28rpx;color:#666;line-height:40rpx;text-align:center;font-style:normal;margin-bottom:20rpx}.container-footer .container-button{margin:0 20rpx;width:710rpx;height:98rpx;background:#e8101e;border-radius:49rpx;font-weight:400;font-size:38rpx;color:#fff;text-align:left;font-style:normal}.common-list{border-radius:30rpx 30rpx 0rpx 0rpx!important;background:#f5f5f5!important;padding-bottom:0!important} .list-container{padding:0!important} .load-tips{padding-bottom:200rpx!important} .list-scroll{margin-top:0!important}',""]),t.exports=e},f8df:function(t,e,i){"use strict";i.r(e);var a=i("86ee"),n=i("49b6");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("5e55");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"565ba08c",null,!1,a["a"],void 0);e["default"]=o.exports},f90e:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},f92f:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";uni-view[data-v-de0e071c], uni-scroll-view[data-v-de0e071c], uni-swiper-item[data-v-de0e071c]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-album[data-v-de0e071c]{display:flex;flex-direction:column}.uv-album__row[data-v-de0e071c]{display:flex;flex-direction:row;flex-wrap:wrap}.uv-album__row__wrapper[data-v-de0e071c]{position:relative}.uv-album__row__wrapper__text[data-v-de0e071c]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.3);display:flex;flex-direction:row;justify-content:center;align-items:center}',""]),t.exports=e},fa13:function(t,e,i){"use strict";i.r(e);var a=i("862c"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},fa44:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,noData:i("93c2").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},t._l(t._$g(4,"f"),(function(e,a,n,r){return i("uni-view",{key:e,class:t._$g("4-"+r,"c"),attrs:{_i:"4-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(" "+t._$g("4-"+r,"t0-0")+" ")])})),1)],1),t._$g(5,"i")?i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},t._l(t._$g(6,"f"),(function(e,a,n,r){return i("orderCard",{key:e,attrs:{_i:"6-"+r},on:{cancel:function(e){return t.$handleViewEvent(e)},goDetail:function(e){return t.$handleViewEvent(e)},accept:function(e){return t.$handleViewEvent(e)},start:function(e){return t.$handleViewEvent(e)},done:function(e){return t.$handleViewEvent(e)}}})})),1):i("noData",{attrs:{_i:7}}),t._$g(8,"i")?i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-text",{attrs:{_i:9}},[t._v("\u5df2\u52a0\u8f7d\u5168\u90e8")])],1):t._e(),i("serviceCodeInput",{attrs:{_i:10},on:{close:function(e){return t.$handleViewEvent(e)},confirm:function(e){return t.$handleViewEvent(e)}}})],1)},r=[]},fa5d:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.uv-border-top[data-v-469f4a54]{border-top-width:.5px!important;border-color:#dadbde!important;border-top-style:solid}uni-view[data-v-469f4a54], uni-scroll-view[data-v-469f4a54], uni-swiper-item[data-v-469f4a54]{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.uv-tabbar[data-v-469f4a54]{display:flex;flex-direction:column;flex:1;justify-content:center}.uv-tabbar__content[data-v-469f4a54]{display:flex;flex-direction:column;background-color:#fff}.uv-tabbar__content__item-wrapper[data-v-469f4a54]{height:50px;display:flex;flex-direction:row}.uv-tabbar--fixed[data-v-469f4a54]{position:fixed;bottom:0;left:0;right:0}',""]),t.exports=e},fa99:function(t,e,i){"use strict";var a=i("8694"),n=i.n(a);n.a},fabd:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,".filter .filter-panel[data-v-a5a85ffe]{position:relative;padding:20rpx;background-color:#fff}.filter .filter-panel .filter-tabs[data-v-a5a85ffe]{display:flex;z-index:500}.filter .filter-panel .filter-tabs .tab-item[data-v-a5a85ffe]{flex:1;position:relative;cursor:pointer;transition:color .3s;font-weight:400;font-size:26rpx;color:#333;line-height:37rpx;text-align:center;font-style:normal}.filter .filter-panel .filter-tabs .tab-item .sq-icon[data-v-a5a85ffe]{width:16rpx;height:16rpx;margin-left:8rpx}.filter .filter-panel .filter-tabs .tab-item.active[data-v-a5a85ffe]{color:#f34}.filter .filter-panel .filter-pop[data-v-a5a85ffe]{z-index:998;background-color:#fff;position:absolute;left:0;right:0;top:100%;box-shadow:0 2rpx 10rpx rgba(0,0,0,.1);max-height:0;overflow:hidden;transition:max-height .3s ease-out,padding .3s ease-out}.filter .filter-panel .filter-pop.show[data-v-a5a85ffe]{max-height:800rpx}.filter .filter-panel .filter-pop.hide[data-v-a5a85ffe]{max-height:0}.filter .filter-panel .filter-pop .filter-content[data-v-a5a85ffe]{padding:20rpx 30rpx 0 30rpx}.filter .filter-panel .filter-pop .filter-content .filter-group[data-v-a5a85ffe]{display:flex;flex-wrap:wrap;-webkit-column-gap:17rpx;column-gap:17rpx;row-gap:20rpx}.filter .filter-panel .filter-pop .filter-content .filter-group .filter-item[data-v-a5a85ffe],\n.filter .filter-panel .filter-pop .filter-content .filter-group .distance-item[data-v-a5a85ffe]{width:160rpx;height:60rpx;background:#f6f4f5;border-radius:10rpx;font-family:DINPro;font-weight:400;font-size:26rpx;color:#333;line-height:33rpx;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:center}.filter .filter-panel .filter-pop .filter-content .filter-group .filter-item.active[data-v-a5a85ffe],\n.filter .filter-panel .filter-pop .filter-content .filter-group .distance-item.active[data-v-a5a85ffe]{background-color:#ffecf0;font-weight:500;color:#e8101e;border-color:#f34}.filter .filter-panel .filter-pop .filter-buttons[data-v-a5a85ffe]{display:flex;justify-content:space-between;padding:30rpx 30rpx 30rpx 30rpx}.filter .filter-panel .filter-pop .filter-buttons .reset-btn[data-v-a5a85ffe],\n.filter .filter-panel .filter-pop .filter-buttons .confirm-btn[data-v-a5a85ffe]{width:334rpx;height:86rpx;background:#f6f4f5;border-radius:10rpx;font-weight:400;font-size:32rpx;color:#333;line-height:45rpx;text-align:left;font-style:normal;display:flex;align-items:center;justify-content:center}.filter .filter-panel .filter-pop .filter-buttons .reset-btn[data-v-a5a85ffe]{background-color:#f6f4f5}.filter .filter-panel .filter-pop .filter-buttons .confirm-btn[data-v-a5a85ffe]{background-color:#f34;color:#fff;border:none}.popup-mask[data-v-a5a85ffe]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:initial;z-index:400;transition:all .3s ease}",""]),t.exports=e},fad7:function(t,e,i){"use strict";i.d(e,"b",(function(){return n})),i.d(e,"c",(function(){return r})),i.d(e,"a",(function(){return a}));var a={customNavbar:i("6473").default,uvPicker:i("0f37").default},n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("custom-navbar",{attrs:{_i:1}}),i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[i("v-uni-image",{staticClass:t._$g(3,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/1d4e0db5-d778-4e8e-97cc-ae2ce08a38a0",_i:3}}),i("v-uni-text",{attrs:{_i:4}},[t._v("\u5982\u6709\u5408\u4f5c\u610f\u5411\uff0c\u9700\u63d0\u4ea4\u4ee5\u4e0b\u4fe1\u606f\u3002\u5ba1\u6838\u4eba\u5458\u4f1a\u57283-5\u5929\u5185\u8054\u7cfb\u60a8\u3002")])],1),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("v-uni-text",{attrs:{_i:7}},[t._v("\u610f\u5411\u586b\u5199")])],1),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("\u771f\u5b9e\u59d3\u540d")]),i("v-uni-input",{attrs:{type:"text",placeholder:t._$g(10,"a-placeholder"),_i:10},model:{value:t._$g(10,"v-model"),callback:function(e){t.$handleVModelEvent(10,e)},expression:"queryData.name"}})],1),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("v-uni-text",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[t._v("\u8054\u7cfb\u65b9\u5f0f")]),i("v-uni-input",{attrs:{type:"text",placeholder:t._$g(13,"a-placeholder"),_i:13},model:{value:t._$g(13,"v-model"),callback:function(e){t.$handleVModelEvent(13,e)},expression:"queryData.phone"}})],1),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[i("v-uni-text",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._v("\u6240\u5728\u5730")]),i("v-uni-input",{attrs:{type:"text",placeholder:t._$g(16,"a-placeholder"),_i:16},model:{value:t._$g(16,"v-model"),callback:function(e){t.$handleVModelEvent(16,e)},expression:"queryData.address"}})],1),i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[i("v-uni-text",{staticClass:t._$g(18,"sc"),attrs:{_i:18}},[t._v("\u5408\u4f5c\u7c7b\u578b")]),t._$g(19,"i")?i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[i("v-uni-text",{staticClass:t._$g(20,"sc"),attrs:{_i:20}},[t._v(t._$g(20,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(21,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:21}})],1):i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22},on:{click:function(e){return t.$handleViewEvent(e)}}},[i("v-uni-text",{staticClass:t._$g(23,"sc"),class:t._$g(23,"c"),attrs:{_i:23}},[t._v(t._$g(23,"t0-0"))]),i("v-uni-image",{staticClass:t._$g(24,"sc"),attrs:{src:"/static/images/arrow_right.png",mode:"aspectFit",_i:24}})],1)],1)],1),i("uv-picker",{ref:"picker",attrs:{_i:25},on:{confirm:function(e){return t.$handleViewEvent(e)}}}),i("uni-view",{staticClass:t._$g(26,"sc"),attrs:{_i:26}},[i("uni-view",{staticClass:t._$g(27,"sc"),attrs:{_i:27},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._v(t._$g(27,"t0-0"))])],1)],1)},r=[]},fb46:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[i("uni-view",{staticClass:t._$g(2,"sc"),attrs:{_i:2}},[t._v(t._$g(2,"t0-0"))]),i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[i("uni-view",{staticClass:t._$g(4,"sc"),attrs:{_i:4}},[t._v("\u51e0\u4eba\u56e2:")]),i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v(t._$g(5,"t0-0")+"\u4eba\u56e2")])],1),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[i("uni-view",{staticClass:t._$g(7,"sc"),attrs:{_i:7}},[t._v("\u603b\u5f00\u56e2\u6570:")]),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[t._v(t._$g(8,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[i("uni-view",{staticClass:t._$g(10,"sc"),attrs:{_i:10}},[t._v("\u5df2\u5f00\u56e2\u6570:")]),i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._v(t._$g(11,"t0-0"))])],1),i("uni-view",{staticClass:t._$g(12,"sc"),attrs:{_i:12}},[i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v("\u6d3b\u52a8\u65f6\u95f4\uff1a")]),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v(t._$g(14,"t0-0"))])],1)],1),i("uni-view",{staticClass:t._$g(15,"sc"),attrs:{_i:15}},[t._$g(16,"i")?i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v(" "+t._$g(16,"t0-0")+" ")]):t._e(),t._$g(17,"i")?i("uni-view",{staticClass:t._$g(17,"sc"),attrs:{_i:17},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v(" \u7f16\u8f91 ")]):t._e(),t._$g(18,"i")?i("uni-view",{staticClass:t._$g(18,"sc"),attrs:{_i:18},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v(" \u590d\u5236\u6d3b\u52a8 ")]):t._e()],1),i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._v(t._$g(19,"t0-0"))])],1)},n=[]},fb70:function(t,e,i){"use strict";var a=i("8805"),n=i.n(a);n.a},fc00:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-search",data:function(){return{wxsProps:{}}},components:{}}},fc15:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("e26b")),r={data:function(){return{wxsProps:{}}},components:{serviceCodeInput:n.default}};e.default=r},fc57:function(t,e,i){"use strict";i.r(e);var a=i("03da"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},fc86:function(t,e,i){"use strict";i.r(e);var a=i("b297"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},fcb2:function(t,e,i){"use strict";i.r(e);var a=i("3b58"),n=i("9e5b");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("e041");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},fd14:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={data:function(){return{wxsProps:{}}},components:{}}},fd48:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("6bf1")),r=a(i("2251")),s=a(i("06c4")),o=a(i("f8df")),c=a(i("635f")),l={data:function(){return{wxsProps:{}}},components:{searchBox:n.default,serviecFirstTab:r.default,FilterPanel:s.default,CommonList:o.default,syrCardList:c.default}};e.default=l},fd8b:function(t,e,i){t.exports=i.p+"static/images/icons/triangle_down.png"},fdad:function(t,e,i){"use strict";i.r(e);var a=i("2e0a"),n=i("4a25");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("9d14");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,null,null,!1,a["a"],void 0);e["default"]=o.exports},fdc6:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),style:t._$g(1,"s"),attrs:{_i:1}},[t._$g(2,"i")?i("uni-view",{staticClass:t._$g(2,"sc"),style:t._$g(2,"s"),attrs:{_i:2}},[t._l(t._$g(3,"f"),(function(e,a,n,r){return i("uni-view",{key:e,staticClass:t._$g("3-"+r,"sc"),attrs:{_i:"3-"+r}},[i("v-uni-image",{staticClass:t._$g("4-"+r,"sc"),attrs:{src:t._$g("4-"+r,"a-src"),mode:"aspectFill",_i:"4-"+r},on:{click:function(e){return t.$handleViewEvent(e)}}}),t._$g("5-"+r,"i")?i("uni-view",{staticClass:t._$g("5-"+r,"sc"),attrs:{_i:"5-"+r},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v(" \xd7 ")]):t._e()],1)})),i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._$g(7,"i")?i("uni-view",{staticClass:t._$g(7,"sc"),style:t._$g(7,"s"),attrs:{_i:7},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._t("button",[i("v-uni-text",{staticClass:t._$g(9,"sc"),attrs:{_i:9}},[t._v("+")])],{_i:8})],2):t._e()],1)],2):t._e(),t._$g(10,"i")?i("uni-view",{staticClass:t._$g(10,"sc"),style:t._$g(10,"s"),attrs:{_i:10}},[t._$g(11,"i")?i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[i("v-uni-image",{staticClass:t._$g(12,"sc"),attrs:{src:t._$g(12,"a-src"),mode:"aspectFill",_i:12}}),t._$g(13,"i")?i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13},on:{click:function(e){return t.$handleViewEvent(e,{stop:!0})}}},[t._v(" \xd7 ")]):t._e()],1):t._e(),i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._$g(15,"i")?i("uni-view",{staticClass:t._$g(15,"sc"),style:t._$g(15,"s"),attrs:{_i:15},on:{click:function(e){return t.$handleViewEvent(e)}}},[t._t("button",[i("v-uni-text",{staticClass:t._$g(17,"sc"),attrs:{_i:17}},[t._v("+")])],{_i:16})],2):t._e()],1)],1):t._e()],1)],1)},n=[]},fe30:function(t,e,i){"use strict";i.d(e,"b",(function(){return a})),i.d(e,"c",(function(){return n})),i.d(e,"a",(function(){}));var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("uni-view",{staticClass:t._$g(0,"sc"),attrs:{_i:0}},[i("uni-view",{staticClass:t._$g(1,"sc"),attrs:{_i:1}},[i("uni-view",{staticClass:t._$g(2,"sc"),class:t._$g(2,"c"),attrs:{_i:2}},[i("uni-view",{staticClass:t._$g(3,"sc"),attrs:{_i:3}},[t._$g(4,"i")?i("v-uni-image",{staticClass:t._$g(4,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/55a51333-318f-4ae4-8402-aca265bd499d",mode:"aspectFit",_i:4}}):t._$g(5,"e")?i("uni-view",{staticClass:t._$g(5,"sc"),attrs:{_i:5}},[t._v("1")]):i("uni-view",{staticClass:t._$g(6,"sc"),attrs:{_i:6}},[t._v("1")])],1),i("v-uni-text",{staticClass:t._$g(7,"sc"),class:t._$g(7,"c"),attrs:{_i:7}},[t._v("\u5165\u9a7b\u534f\u8bae")])],1),i("uni-view",{staticClass:t._$g(8,"sc"),attrs:{_i:8}},[i("uni-view",{staticClass:t._$g(9,"sc"),class:t._$g(9,"c"),attrs:{_i:9}})],1),i("uni-view",{staticClass:t._$g(10,"sc"),class:t._$g(10,"c"),attrs:{_i:10}},[i("uni-view",{staticClass:t._$g(11,"sc"),attrs:{_i:11}},[t._$g(12,"i")?i("v-uni-image",{staticClass:t._$g(12,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/55a51333-318f-4ae4-8402-aca265bd499d",mode:"aspectFit",_i:12}}):t._$g(13,"e")?i("uni-view",{staticClass:t._$g(13,"sc"),attrs:{_i:13}},[t._v("2")]):i("uni-view",{staticClass:t._$g(14,"sc"),attrs:{_i:14}},[t._v("2")])],1),i("v-uni-text",{staticClass:t._$g(15,"sc"),class:t._$g(15,"c"),attrs:{_i:15}},[t._v(" "+t._$g(15,"t0-0")+" ")])],1),i("uni-view",{staticClass:t._$g(16,"sc"),attrs:{_i:16}},[i("uni-view",{staticClass:t._$g(17,"sc"),class:t._$g(17,"c"),attrs:{_i:17}})],1),i("uni-view",{staticClass:t._$g(18,"sc"),class:t._$g(18,"c"),attrs:{_i:18}},[i("uni-view",{staticClass:t._$g(19,"sc"),attrs:{_i:19}},[t._$g(20,"i")?i("v-uni-image",{staticClass:t._$g(20,"sc"),attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/55a51333-318f-4ae4-8402-aca265bd499d",mode:"aspectFit",_i:20}}):t._$g(21,"e")?i("uni-view",{staticClass:t._$g(21,"sc"),attrs:{_i:21}},[t._v("3")]):i("uni-view",{staticClass:t._$g(22,"sc"),attrs:{_i:22}},[t._v("3")])],1),i("v-uni-text",{staticClass:t._$g(23,"sc"),class:t._$g(23,"c"),attrs:{_i:23}},[t._v(" "+t._$g(23,"t0-0")+" ")])],1)],1)],1)},n=[]},fe31:function(t,e,i){var a=i("514d");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("496ce835",a,!0,{sourceMap:!1,shadowMode:!1})},fe55:function(t,e,i){var a=i("59b2");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("375a6182",a,!0,{sourceMap:!1,shadowMode:!1})},fe57:function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("0def"),s=i("b3f6");e=a(!1);var o=n(r),c=n(s);e.push([t.i,".order-card[data-v-227ce174]{position:relative;padding:24rpx 20rpx 0rpx;margin:0rpx 30rpx 20rpx 30rpx;background-color:#fff;border-radius:12px}.orderNumBox[data-v-227ce174]{display:flex;align-items:center;justify-content:space-between;margin-bottom:40rpx}.orderNumBox .stateText[data-v-227ce174]{font-weight:400;font-size:26rpx;color:#e8101e;text-align:left;font-style:normal;position:absolute;right:0;top:0;background-image:url("+o+");background-size:100% auto;background-position:top;background-repeat:no-repeat;width:128rpx;height:49rpx;display:flex;align-items:center;justify-content:center}.orderNumBox .stateText2[data-v-227ce174]{background-image:url("+c+");color:#333}.orderNumBox .stateText3[data-v-227ce174]{background-image:url("+c+");color:#999!important}.order-id[data-v-227ce174]{width:530rpx;font-size:28rpx;color:#333}.service-container[data-v-227ce174]{display:flex;align-items:center;padding-bottom:24rpx;border-bottom:1px solid #f6f5f5;width:100%}.service-img[data-v-227ce174]{width:172rpx;height:168rpx;border-radius:24rpx;margin-right:30rpx;flex-shrink:0}.service-info[data-v-227ce174]{display:flex;flex-direction:column;justify-content:space-between;width:100%;height:168rpx}.service-info .topInfo[data-v-227ce174]{display:flex;flex-direction:column}.service-info .topInfo .price_title[data-v-227ce174]{display:flex;align-items:center;justify-content:space-between;margin-bottom:20rpx}.service-info .topInfo .price_title .service-type[data-v-227ce174]{font-weight:500;font-size:30rpx;color:#333;line-height:34rpx;max-width:300rpx}.service-info .service-price[data-v-227ce174]{font-family:DINPro;font-weight:500;font-size:36rpx;color:#e8101e;line-height:34rpx;text-align:left;font-style:normal}.service_subTitle[data-v-227ce174]{font-size:26rpx;line-height:26rpx;color:#666;margin-top:18rpx}.service-address[data-v-227ce174]{font-weight:400;font-size:26rpx;color:#999;line-height:33rpx;text-align:left;font-style:normal}.time-info[data-v-227ce174]{font-weight:400;font-size:26rpx;color:#333;line-height:34rpx;text-align:left;font-style:normal;padding-bottom:20rpx;margin-top:28rpx}.button-group[data-v-227ce174]{display:flex;justify-content:flex-end;gap:30rpx;padding-bottom:30rpx}.btn[data-v-227ce174]{white-space:nowrap;width:100rpx;height:32rpx;display:flex;align-items:center;justify-content:center;padding:10px 20px;border-radius:64rpx;border:2rpx solid #979797;font-weight:400;font-size:26rpx;color:#333;line-height:64rpx}.cancel-btn[data-v-227ce174]{border:2rpx solid #979797;color:#333}.accept-btn[data-v-227ce174]{border:2rpx solid #e8101e;color:#e8101e}",""]),t.exports=e},fe87:function(t,e,i){"use strict";i.r(e);var a=i("156c"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},fe95:function(t,e,i){"use strict";i.r(e);var a=i("0617"),n=i.n(a);for(var r in a)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return a[t]}))}(r);e["default"]=n.a},fede:function(t,e,i){var a=i("c86c");e=a(!1),e.push([t.i,'@charset "UTF-8";.uv-overlay[data-v-12ad5b32]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.7)}',""]),t.exports=e},ff1e:function(t,e,i){var a=i("c86c"),n=i("ac93"),r=i("1ef6");e=a(!1);var s=n(r);e.push([t.i,'body{position:relative;background-color:#fff}.detail-page::before{content:"";position:fixed;top:0;left:0;right:0;height:1200rpx!important;background-image:url('+s+");background-size:cover;background-position:top;background-repeat:no-repeat;z-index:1}.content-part{position:relative;left:0;right:0;z-index:9}.custom-nav{position:fixed;top:0;left:0;right:0;height:88rpx;background-color:initial;display:flex;align-items:center;padding:0 32rpx;z-index:100;\r\n\r\n\r\npadding-top:var(--status-bar-height)\n}.nav-back{width:48rpx;height:48rpx;display:flex;align-items:center;justify-content:center}.back-icon{width:32rpx;height:32rpx}.nav-title{flex:1;text-align:center;font-size:36rpx;font-weight:500;color:#fff}.status-section{height:160rpx;display:flex;align-items:center;justify-content:center\n}.status-text{font-size:40rpx;color:#fff;font-weight:500}.service-card{margin:24rpx;background-color:#fff;border-radius:16rpx;padding:24rpx 0;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.location-info{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;padding:0 24rpx}.location-icon{width:60rpx;height:60rpx;margin-right:32rpx}.address-info{flex:1}.name-phone{display:flex;align-items:center;margin-bottom:8rpx}.name{font-size:32rpx;color:#333;font-weight:500;margin-right:16rpx}.phone{font-size:28rpx;color:#666}.address{font-size:28rpx;color:#666}.divider{width:702rpx;height:4rpx}.staff-info{display:flex;align-items:center;padding:32rpx 24rpx 0}.staff-avatar{width:80rpx;height:80rpx;border-radius:44rpx;margin-right:16rpx;background-color:#333}.staff-detail{flex:1}.staff-name{font-size:32rpx;color:#3d3d3d;font-weight:500}.rating{display:flex;align-items:center}.star-icon{width:24rpx;height:24rpx;margin-right:4rpx}.phone-btn{width:64rpx;height:64rpx;background-color:#e8101e;border-radius:32rpx}.service-shop{margin:24rpx;background-color:#fff;border-radius:16rpx;padding:24rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5);display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center}.shop-info{flex:1}.shop-info1{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center}.shop-logo{width:96rpx;height:96rpx;border-radius:48rpx;margin-right:18rpx}.shop-name{font-size:24rpx;font-weight:500;color:#3d3d3d}.shop-info2{display:flex;flex-flow:column wrap;justify-content:flex-start;align-items:flex-start;margin-top:16rpx}.shop-time{margin-bottom:8rpx}.shop-time,.shop-address{font-size:24rpx;color:#999}.shop-btns{display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center}.btn-map,.btn-phone{width:64rpx;height:64rpx}.btn-map{margin-right:48rpx}.booking-card{margin:24rpx;background-color:#fff;border-radius:16rpx;padding:24rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24rpx}.card-title{font-size:32rpx;color:#333;font-weight:500}.update-time{font-size:28rpx;color:#333;padding-right:4rpx}.update-change{font-size:28rpx;color:#666}.service-item{display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;margin-bottom:24rpx}.service-image{width:160rpx;height:160rpx;border-radius:16rpx;margin-right:24rpx;background-color:#e2e2e2}.service-info{flex:1;height:160rpx;display:flex;flex-flow:column nowrap;justify-content:space-between;align-items:flex-start;margin-right:24rpx}.service-name{font-size:28rpx;color:#333;margin-bottom:8rpx}.service-price{font-size:32rpx;color:#ff4d6b;font-weight:500}.service-count{font-size:28rpx;color:#666}.service-real{display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:baseline;padding-top:24rpx;border-top:1rpx solid rgba(0,0,0,.05)}.real-lable{font-size:24rpx;color:#333}.real-price{font-size:32rpx;font-weight:500;color:#e8101e}.order-card{margin:24rpx;background-color:#fff;border-radius:16rpx;padding:24rpx;box-shadow:0 4rpx 16rpx 0 rgba(210,213,224,.5)}.info-item{display:flex;justify-content:space-between;margin-top:16rpx}.label{font-size:28rpx;color:#999}.value{font-size:28rpx;color:#333}.bottom-buttons{position:fixed;left:0;right:0;bottom:0;height:128rpx;background-color:#fff;display:flex;flex-flow:row nowrap;align-items:center;justify-content:space-between;box-shadow:0 -2rpx 8rpx rgba(0,0,0,.05);padding:0 24rpx 0 78rpx;\r\n\r\nz-index:999}.contact-button{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center}.contact-text{font-size:24rpx;color:#666}.tell-icon{width:36rpx;height:36rpx;margin-right:8rpx}.handel-button{width:240rpx;height:64rpx;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;border-radius:32rpx}.btn-border{border:1rpx solid #e8101e;background-color:#fff;box-sizing:border-box;margin-left:20rpx}.btn-bg{background-color:#e8101e}.button-text{font-size:28rpx;font-weight:400;color:#fff}.btn-border .button-text{font-size:28rpx;font-weight:400;color:#e8101e}\n.permission.transform{top:calc(var(--status-bar-height) + 88rpx + 20rpx);opacity:1;visibility:visible}\r\n\r\n\r\n\r\n",""]),t.exports=e},ff53:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={name:"uv-modal",data:function(){return{wxsProps:{}}},components:{}}},ff5d:function(t,e,i){"use strict";var a=i("47a9");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=a(i("7941")),r={data:function(){return{wxsProps:{}}},components:{wmWatermark:n.default}};e.default=r},ff9d:function(t,e,i){"use strict";i.r(e);var a=i("6549"),n=i("df30");for(var r in n)["default"].indexOf(r)<0&&function(t){i.d(e,t,(function(){return n[t]}))}(r);i("dbee");var s=i("828b"),o=Object(s["a"])(n["default"],a["b"],a["c"],!1,null,"784e7337",null,!1,a["a"],void 0);e["default"]=o.exports},ffd0:function(t,e,i){var a=i("b450");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);var n=i("b49c").default;n("0239c33a",a,!0,{sourceMap:!1,shadowMode:!1})},fffc:function(t,e,i){"use strict";var a=i("50aa"),n=i.n(a);n.a}}); \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/assets/uvicons.f0fbf8a0.ttf b/unpackage/dist/build/app-plus/assets/uvicons.f0fbf8a0.ttf new file mode 100644 index 0000000..9aedef8 Binary files /dev/null and b/unpackage/dist/build/app-plus/assets/uvicons.f0fbf8a0.ttf differ diff --git a/unpackage/dist/build/app-plus/manifest.json b/unpackage/dist/build/app-plus/manifest.json new file mode 100644 index 0000000..d64fd59 --- /dev/null +++ b/unpackage/dist/build/app-plus/manifest.json @@ -0,0 +1 @@ +{"@platforms":["android","iPhone","iPad"],"id":"__UNI__BBE6285","name":"美融融商家","version":{"name":"1.0.05","code":1005},"description":"同城便捷到家美业“技术外卖”服务、同城预约到店服务平台美融融为同城爱美人群提供更优质的更全面的服务。","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"Maps":{"coordType":"gcj02"},"Geolocation":{},"Share":{},"Payment":{},"VideoPlayer":{},"OAuth":{},"Camera":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"light","background":"#F8F8F8"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"compatible":{"ignoreVersion":true},"video":{"hardwareAcceleration":"auto","decode":{"h264":"hardware","hevc":"software"}},"distribute":{"icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"splashscreen":{"useOriginalMsgbox":true,"androidStyle":"common"},"google":{"permissions":["","","","","","","","","","","","","","","","","","","","","",""],"minSdkVersion":21,"targetSdkVersion":30},"apple":{"urlschemewhitelist":["iosmap"],"dSYMs":false,"plistcmds":["Set :NSMicrophoneUsageDescription 获取语音权限以进行语音输入","Set :NSPhotoLibraryUsageDescription 从相册选择图片作为用户头像","Set :NSCameraUsageDescription 用户使用相机拍摄图片作为自定义头像","Set :NSPhotoLibraryAddUsageDescription 保存图片到相册"],"privacyDescription":{"NSLocationWhenInUseUsageDescription":"美融融商家请求您的地理位置,以便您使用该功能获取您附近的手艺人以及店铺下的服务内容以及添加地址,是否允许?","NSLocationAlwaysAndWhenInUseUsageDescription":"美融融商家请求您的地理位置,以便您使用该功能获取您附近的手艺人以及店铺下的服务内容以及添加地址,是否允许?","NSPhotoLibraryUsageDescription":"美融融商家请求您的相册权限,使用相册照片功能,用于上传头像或者评价上传图片与发布动态,是否允许?","NSPhotoLibraryAddUsageDescription":"美融融商家请求您的相册权限,使用相册照片功能,用于上传头像或者评价上传图片与发布动态,是否允许?","NSCameraUsageDescription":"美融融商家请求您的摄像头权限,使用拍照功能,用于上传头像或者上传入驻资质,是否允许?","NSMicrophoneUsageDescription":"美融融商家请求您的麦克风权限,使用录像功能,用于上传个人短视频更新个人资料,是否允许?","NSLocationAlwaysUsageDescription":"美融融商家请求您的地理位置,以便您使用该功能获取您附近的手艺人以及店铺下的服务内容以及添加地址,是否允许?","NSCalendarsUsageDescription":"该应用需要获取你的日历,以便为您提供学习记录,更好的体验","NSRemindersUsageDescription":"该应用需要获取你的提醒事项,以便为您提供学习记录,更好的体验","NSContactsUsageDescription":"美融融商家需要获取您的通讯录,以便您联系商家或手艺人,是否允许?"},"capabilities":{"entitlements":{"com.apple.developer.associated-domains":"applinks:app.mrrweb.com.cn"}}},"plugins":{"maps":{"amap":{"name":"amapgDZVQ1L0","appkey_ios":"3c7285f894266dc8b9ee30297c2d708e","appkey_android":"3150b3d08eb0875c5c660f7ff3c08ebd"}},"payment":{"weixin":{"__platform__":["ios","android"],"appid":"wx2381a791a52a402d","UniversalLinks":"https://app.mrrweb.com.cn/"},"appleiap":{},"alipay":{"__platform__":["ios","android"]}},"share":{"weixin":{"appid":"wx2381a791a52a402d","UniversalLinks":"https://app.mrrweb.com.cn/"}},"geolocation":{"amap":{"name":"amapgDZVQ1L0","__platform__":["ios","android"],"appkey_ios":"3c7285f894266dc8b9ee30297c2d708e","appkey_android":"3150b3d08eb0875c5c660f7ff3c08ebd"},"system":{"__platform__":["ios","android"]}},"oauth":{"weixin":{"appid":"wx2381a791a52a402d","UniversalLinks":"https://app.mrrweb.com.cn/"}},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"nativePlugins":{"AliCloud-NirvanaPns":{"__plugin_info__":{"name":"阿里云号码认证SDK","description":"阿里云号码认证SDK,包含一键登录和本机号码校验两个功能。","platforms":"Android,iOS","url":"https://ext.dcloud.net.cn/plugin?id=4297","android_package_name":"cn.mrrsj","ios_bundle_id":"cn.mrrsj","isCloud":true,"bought":1,"pid":"4297","parameters":{}}}},"uniStatistics":{"enable":false},"allowsInlineMediaPlayback":true,"safearea":{"background":"#fff","bottom":{"offset":"auto"}},"uni-app":{"compilerVersion":"5.03","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#999","selectedColor":"#E8101E","backgroundColor":"#fff","list":[{"iconPath":"/static/images/tabbar/home_icon_dis.png","text":"首页","selectedIconPath":"/static/images/tabbar/home_icon_active.png","pagePath":"pages/home/home"},{"iconPath":"/static/images/tabbar/new_message_gray.png","text":"消息","selectedIconPath":"/static/images/tabbar/new_message.png","pagePath":"pages/message/message"},{"iconPath":"/static/images/tabbar/my_icon_dis.png","text":"我的","selectedIconPath":"/static/images/tabbar/my_icon_active.png","pagePath":"pages/my/my"}],"borderStyle":"rgba(0,0,0,0.4)","height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html"}} \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/pages/address/add.js b/unpackage/dist/build/app-plus/pages/address/add.js new file mode 100644 index 0000000..236bce9 --- /dev/null +++ b/unpackage/dist/build/app-plus/pages/address/add.js @@ -0,0 +1,2 @@ +/*! For license information please see add.js.LICENSE.txt */ +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/",r(r.s=304)}({0:function(e,t,r){"use strict";function n(e,t,r,n,o,a,i,s,u,c){var d,p="function"==typeof e?e.options:e;if(u){p.components||(p.components={});var l=Object.prototype.hasOwnProperty;for(var f in u)l.call(u,f)&&!l.call(p.components,f)&&(p.components[f]=u[f])}if(c&&("function"==typeof c.beforeCreate&&(c.beforeCreate=[c.beforeCreate]),(c.beforeCreate||(c.beforeCreate=[])).unshift((function(){this[c.__module]=this})),(p.mixins||(p.mixins=[])).push(c)),t&&(p.render=t,p.staticRenderFns=r,p._compiled=!0),n&&(p.functional=!0),a&&(p._scopeId="data-v-"+a),i?(d=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)},p._ssrRegister=d):o&&(d=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),d)if(p.functional){p._injectStyles=d;var g=p.render;p.render=function(e,t){return d.call(t),g(e,t)}}else{var h=p.beforeCreate;p.beforeCreate=h?[].concat(h,d):[d]}return{exports:e,options:p}}r.d(t,"a",(function(){return n}))},1:function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},10:function(e,t){e.exports={".custom-navbar":{"":{position:["fixed",0,0,0],top:[0,0,0,0],left:[0,0,0,0],right:[0,0,0,0],zIndex:[9999,0,0,0]}},".header-top":{"":{height:["88rpx",0,0,1],backgroundColor:["rgba(0,0,0,0)",0,0,1]}},".navbar-content":{"":{height:["88rpx",0,0,2],display:["flex",0,0,2],flexDirection:["row",0,0,2],flexWrap:["nowrap",0,0,2],alignItems:["center",0,0,2],justifyContent:["space-between",0,0,2],paddingTop:[0,0,0,2],paddingRight:["30rpx",0,0,2],paddingBottom:[0,0,0,2],paddingLeft:["24rpx",0,0,2]}},".right-area":{"":{width:["46rpx",0,0,3],height:["46rpx",0,0,3],display:["flex",0,0,3],alignItems:["center",0,0,3]}},".icon-headle":{"":{width:["46rpx",0,0,3],height:["46rpx",0,0,3],display:["flex",0,0,3],alignItems:["center",0,0,3]}},".left-area":{"":{width:["36rpx",0,0,4],height:["36rpx",0,0,4],display:["flex",0,0,4],alignItems:["center",0,0,4]}},".back-icon":{"":{width:["36rpx",0,0,4],height:["36rpx",0,0,4],display:["flex",0,0,4],alignItems:["center",0,0,4]}},".title":{"":{fontSize:["36rpx",0,0,6],fontWeight:["500",0,0,6],color:["#333333",0,0,6]}},"@VERSION":2}},11:function(e,t,r){"use strict";r.d(t,"b",(function(){return n})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){}));var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("view",[r("view",{staticClass:["custom-navbar"],style:{paddingTop:e.statusBarHeight+"rpx",background:e.backgroundColor}},[r("view",{staticClass:["navbar-content"],style:{"border-bottom":e.borderBottom}},[r("view",{staticClass:["left-area"]},[e.showBack?r("view",{staticClass:["back-btn"],on:{click:e.goBack}},[r("u-image",{staticClass:["back-icon"],attrs:{src:e.leftImg,mode:"aspectFit"}})],1):e._e(),e._t("left")],2),r("u-text",{staticClass:["title"],style:"color:"+e.titleColor+";",appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.title))]),r("view",{staticClass:["right-area"]},[e._t("right",[e.showHeadle?r("u-image",{staticClass:["iconfont","icon-headle"],attrs:{src:e.headleSrc,mode:"aspectFit"},on:{click:e.onHeadleClick}}):e._e()])],2)])]),r("view",{staticClass:["header-top"],style:{height:e.statusBarHeight+88+"rpx"}})])},o=[]},12:function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o,a=n(r(3)),i=n(r(4)),s=n(r(6)),u=r(23),c=r(24);function d(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t=200&&i<300)){e.next=3;break}return e.abrupt("return",s);case 3:if(401!==i){e.next=7;break}return e.next=6,y(t,n,o);case 6:return e.abrupt("return",e.sent);case 7:return uni.showToast({title:s.message||"\u8bf7\u6c42\u5931\u8d25",icon:"none"}),e.abrupt("return",Promise.reject(s));case 9:case"end":return e.stop()}}),e)})));return function(t,r,n,o){return e.apply(this,arguments)}}(),v=function(){var t=(0,i.default)(a.default.mark((function t(r,n){var i,u,d;return a.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(u=uni.getStorageSync("baseUrl"),""==uni.getStorageSync("setVersion").VersionCode&&(0,c.setVersion)(),u){t.next=5;break}return t.next=5,new Promise((function(t,r){uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType},success:function(r){200==r.data.code&&(uni.setStorageSync("baseUrl",r.data.data.url),u=r.data.data.url,t(u)),e("log","\u8bf7\u6c42\u6210\u529f",r.data," at utils/request.js:121")},fail:function(t){e("log","\u8bf7\u6c42\u5931\u8d25",t," at utils/request.js:124")},complete:function(){e("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/request.js:127")}})}));case 5:return o=u,e("log","\u751f\u4ea7\u73af\u5883"," at utils/request.js:147"),i={baseURL:o},(0,s.default)(i,"baseURL",o),(0,s.default)(i,"header",{"content-type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType}),(0,s.default)(i,"timeout",6e4),r=p(p(p({},d=i),r),{},{url:n?r.url:"".concat(d.baseURL).concat(r.url)}),r=m(r),t.abrupt("return",new Promise((function(e,t){uni.request(p(p({},r),{},{success:function(n){e(x(r,n,e,t))},fail:function(e){uni.showToast({title:"\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5",icon:"none"}),t(e)}}))})));case 10:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}();function y(e,t,r){return b.apply(this,arguments)}function b(){return(b=(0,i.default)(a.default.mark((function e(t,r,n){var o,i;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((0,u.getToken)()){e.next=2;break}return e.abrupt("return",S());case 2:if(!l){e.next=4;break}return e.abrupt("return",g((function(e){t.header.Authorization="Bearer ".concat(e),v(t,!0).then(r).catch(n)})));case 4:return l=!0,e.prev=5,e.next=8,w();case 8:return o=e.sent,(0,u.setToken)(o),h(o),t.header.Authorization="Bearer ".concat(o),e.next=14,v(t,!0);case 14:return i=e.sent,e.abrupt("return",i);case 18:return e.prev=18,e.t0=e.catch(5),(0,u.removeToken)(),S(),e.abrupt("return",e.t0);case 23:return e.prev=23,l=!1,e.finish(23);case 26:case"end":return e.stop()}}),e,null,[[5,18,23,26]])})))).apply(this,arguments)}function w(){return _.apply(this,arguments)}function _(){return(_=(0,i.default)(a.default.mark((function e(){var t;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(uni.getStorageSync("refreshToken")){e.next=3;break}throw new Error("No refresh token");case 3:return e.next=5,v({url:"/sj/refreshtoken",data:{refresh_token:uni.getStorageSync("refreshToken"),deviceid:getApp().globalData.deviceid},method:"POST"});case 5:if(1!=(t=e.sent).state&&200!=t.code){e.next=10;break}return uni.setStorageSync("accessToken",t.access_token),uni.setStorageSync("refreshToken",t.refresh_token),e.abrupt("return",t.access_token);case 10:throw new Error("Refresh token failed");case 11:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function S(){uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}var C={get:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return v(p({url:e,data:t,method:"GET"},r))},post:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return v(p({url:e,data:t,method:"POST"},r))},put:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return v(p({url:e,data:t,method:"PUT"},r))},delete:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return v(p({url:e,data:t,method:"DELETE"},r))}};t.default=C}).call(this,r(2).default)},13:function(e,t,r){var n=r(5).default,o=r(20);e.exports=function(e){var t=o(e,"string");return"symbol"==n(t)?t:t+""},e.exports.__esModule=!0,e.exports.default=e.exports},130:function(e,t,r){"use strict";var n=r(218),o=r(185),a=r(0);var i=Object(a.a)(o.default,n.b,n.c,!1,null,null,"3f08f94a",!1,n.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(276).default,this.options.style):Object.assign(this.options.style,r(276).default)}).call(i),t.default=i.exports},14:function(e,t,r){"use strict";r.r(t);var n=r(10),o=r.n(n);for(var a in n)["default"].indexOf(a)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(a);t.default=o.a},17:function(e,t,r){Vue.prototype.__$appStyle__={},Vue.prototype.__merge_style&&Vue.prototype.__merge_style(r(18).default,Vue.prototype.__$appStyle__)},18:function(e,t,r){"use strict";r.r(t);var n=r(7),o=r.n(n);for(var a in n)["default"].indexOf(a)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(a);t.default=o.a},185:function(e,t,r){"use strict";var n=r(186),o=r.n(n);t.default=o.a},186:function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(3)),a=n(r(4)),i=n(r(12)),s=n(r(28)),u=n(r(29)),c={data:function(){return{isShowPer:!1,mapHeight:0,addressInfo:{call_phone:null,house_number:null,is_default:2,latitude:"",longitude:"",name:null,server_address:null},mapCtx:"",isGetDefault:!1,isAdd:!1,markers:[]}},onLoad:function(){var e=this;this.$nextTick((function(){e.getCurrentLocation();var t=uni.getWindowInfo().safeArea.height;e.mapHeight=2*parseInt(t)-826-70,e.mapCtx=uni.createMapContext("map",e),e.mapCtx.on("end",e.onRegionChange)}))},methods:{getPlaceAround:function(){var e,t=this;return e=t.searchKeyword?{key:"30b7eb1a1b2f88edc085b9b3ee9a2188",location:"".concat(t.addressInfo.longitude,",").concat(t.addressInfo.latitude),keywords:t.searchKeyword,page:1,offset:10}:{key:"30b7eb1a1b2f88edc085b9b3ee9a2188",location:"".concat(t.addressInfo.longitude,",").concat(t.addressInfo.latitude),page:1,offset:10},new Promise((function(r,n){uni.request({url:"https://restapi.amap.com/v3/place/around",method:"GET",data:e,success:function(e){t.searchResults=e.data.pois}})}))},showPermissionDialog:function(e,t){return new Promise((function(r){uni.showModal({title:e,content:t,confirmText:"\u53bb\u5f00\u542f",success:function(e){r(e.confirm)}})}))},getCurrentLocation:function(){var t=this;return(0,a.default)(o.default.mark((function r(){var n,a,i,c;return o.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return n="",a=uni.getSystemInfoSync(),n="ios"===a.platform?"location":"android.permission.ACCESS_FINE_LOCATION",!plus.storage.getItem("perm_".concat(n))&&"ios"!==a.platform&&(t.isShowPer=!0),r.next=7,u.default.checkPermission("location","\u9700\u8981\u4f4d\u7f6e\u6743\u9650\u7528\u4e8e\u63a8\u8350\u9644\u8fd1\u670d\u52a1");case 7:if(i=r.sent,c=i.granted,e("log","granted==============",c," at pages/address/add.nvue:181"),!c){r.next=16;break}return t.getLocation(),t.isGetDefault=!0,r.abrupt("return");case 16:t.getDefault(),t.isGetDefault=!1;case 18:return t.isShowPer=!1,r.next=21,t.showPermissionDialog("\u4f4d\u7f6e\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u4f4d\u7f6e\u6743\u9650\uff0c\u7528\u4e8e\u4e3a\u60a8\u63a8\u8350\u9644\u8fd1\u670d\u52a1");case 21:if(r.sent){r.next=24;break}return r.abrupt("return");case 24:return r.next=26,u.default.requestPermission("location","\u9700\u8981\u4f4d\u7f6e\u6743\u9650\u7528\u4e8e\u63a8\u8350\u9644\u8fd1\u670d\u52a1");case 26:r.sent?t.isShowPer||plus.storage.getItem("perm_".concat(n,"_no"))?t.getLocation():(t.getDefault(),t.isGetDefault=!1):s.default.openAppSettings();case 28:case"end":return r.stop()}}),r)})))()},convert:function(e){var t={key:"30b7eb1a1b2f88edc085b9b3ee9a2188",locations:"".concat(e.longitude,",").concat(e.latitude),coordsys:"gps"};return new Promise((function(e,r){uni.request({url:"https://restapi.amap.com/v3/assistant/coordinate/convert",method:"GET",data:t,success:function(t){e(t.data)}})}))},getLocation:function(){var e=this;return(0,a.default)(o.default.mark((function t(){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:"ios"==uni.getStorageSync("setVersion").DeviceBrand?uni.getLocation({type:"wgs84",isHighAccuracy:!0,success:function(){var t=(0,a.default)(o.default.mark((function t(r){var n,a;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.convert(r);case 2:n=t.sent,a=n.locations.split(","),r.longitude=a[0],r.latitude=a[1],e.addressInfo.latitude=r.latitude,e.addressInfo.longitude=r.longitude,e.updateMarkers(),e.getAddressInfo(r.latitude,r.longitude),e.isGetDefault=!0,e.isShowPer=!1;case 12:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),fail:function(){e.getDefault(),e.isGetDefault=!1,e.isShowPer=!0}}):uni.getLocation({type:"gcj02",success:function(t){e.addressInfo.latitude=t.latitude,e.addressInfo.longitude=t.longitude,e.updateMarkers(),e.getAddressInfo(t.latitude,t.longitude),e.isGetDefault=!0,e.isShowPer=!1},fail:function(){e.getDefault(),e.isGetDefault=!1,e.isShowPer=!0}});case 1:case"end":return t.stop()}}),t)})))()},updateMarkers:function(){},getDefault:function(){this.addressInfo.latitude=getApp().globalData.addressRes.latitude,this.addressInfo.longitude=getApp().globalData.addressRes.longitude,this.updateMarkers(),this.getAddressInfo(getApp().globalData.addressRes.latitude,getApp().globalData.addressRes.longitude)},onRegionChange:function(t){var r,n,i=this;e("log","onRegionChange",t," at pages/address/add.nvue:300"),"ios"===uni.getSystemInfoSync().platform?"end"===t.detail.type&&"drag"===t.detail.causedBy&&this.mapCtx.getCenterLocation({success:(n=(0,a.default)(o.default.mark((function t(r){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e("log","\u7ed3\u679c",r," at pages/address/add.nvue:322"),t.next=3,i.getAddressInfo(r.latitude,r.longitude,"onRegionChange");case 3:i.addressInfo.latitude=r.latitude,i.addressInfo.longitude=r.longitude,i.updateMarkers();case 6:case"end":return t.stop()}}),t)}))),function(e){return n.apply(this,arguments)})}):"end"===t.type&&"drag"===t.causedBy&&this.mapCtx.getCenterLocation({success:(r=(0,a.default)(o.default.mark((function t(r){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e("log","\u7ed3\u679c",r," at pages/address/add.nvue:340"),t.next=3,i.getAddressInfo(r.latitude,r.longitude,"onRegionChange");case 3:i.addressInfo.latitude=r.latitude,i.addressInfo.longitude=r.longitude,i.updateMarkers();case 6:case"end":return t.stop()}}),t)}))),function(e){return r.apply(this,arguments)})})},onMapTap:function(t){if(e("log","onMapTap",t," at pages/address/add.nvue:352"),"type"==t.type){this.addressInfo.latitude=t.detail.latitude,this.addressInfo.longitude=t.detail.longitude,this.updateMarkers(),this.getAddressInfo(t.detail.latitude,t.detail.longitude,"onMapTap")}},getAddressInfo:function(t,r,n){var o=this;return new Promise((function(a,i){uni.request({url:"https://restapi.amap.com/v3/geocode/regeo",method:"GET",data:{key:"30b7eb1a1b2f88edc085b9b3ee9a2188",location:"".concat(r,",").concat(t)},success:function(t){e("log","======================",n,t.data," at pages/address/add.nvue:376"),o.addressInfo.dependency_province=t.data.regeocode.addressComponent.adcode.slice(0,-4)+"0000",o.addressInfo.dependency_city=t.data.regeocode.addressComponent.adcode.slice(0,-2)+"00",o.addressInfo.dependency_code=t.data.regeocode.addressComponent.adcode,o.addressInfo.server_address=t.data.regeocode.formatted_address,t.data.regeocode.addressComponent.city.length>0?o.addressInfo.dependency=t.data.regeocode.addressComponent.province+"-"+t.data.regeocode.addressComponent.city+"-"+t.data.regeocode.addressComponent.district:o.addressInfo.dependency=t.data.regeocode.addressComponent.province+"-"+t.data.regeocode.addressComponent.province+"-"+t.data.regeocode.addressComponent.district,a(t.data)}})}))},copyAddress:function(){uni.setClipboardData({data:this.addressInfo.server_address,success:function(){uni.showToast({title:"\u5730\u5740\u5df2\u590d\u5236",icon:"none"})}})},onSwitchChange:function(e){this.addressInfo.is_default=e.detail.value?1:2},getPage:function(){var e=getCurrentPages();e[e.length-2].$vm.getAddressList()},addAddress:function(){this.isGetDefault?uni.navigateTo({url:"/pages/address/search?isSelectCity=true"}):uni.showToast({title:"\u60a8\u672a\u6388\u6743\u4f4d\u7f6e\u4fe1\u606f\uff0c\u6682\u65e0\u6cd5\u6dfb\u52a0\u5730\u5740\uff01",icon:"none"})},editAddress:function(t){e("log","item111111",t," at pages/address/add.nvue:438");var r=t.location.split(",");this.$set(this.addressInfo,"latitude",r[1]),this.$set(this.addressInfo,"longitude",r[0]),this.getAddressInfo(r[1],r[0])},saveAddress:(0,r(256).debounce)((function(){var t=this;this.isAdd||(this.addressInfo.server_address?this.addressInfo.house_number?this.addressInfo.name?/^1\d{10}$/.test(this.addressInfo.call_phone)?(e("log","this.addressInfo",this.addressInfo," at pages/address/add.nvue:480"),i.default.post("/user/addaddress",this.addressInfo).then((function(r){e("log","\u6dfb\u52a0\u7ed3\u679c",r," at pages/address/add.nvue:482"),1==r.state?(t.isAdd=!0,uni.showToast({title:"\u6dfb\u52a0\u6210\u529f",duration:2e3,success:function(){setTimeout((function(){t.getPage(),uni.navigateBack()}),2e3)}})):t.isAdd=!1})).catch((function(r){e("log",r," at pages/address/add.nvue:499"),t.isAdd=!1}))):uni.showToast({title:"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7",icon:"none"}):uni.showToast({title:"\u8bf7\u8f93\u5165\u9884\u7ea6\u4eba\u59d3\u540d",icon:"none"}):uni.showToast({title:"\u8bf7\u8f93\u5165\u95e8\u724c\u53f7",icon:"none"}):uni.showToast({title:"\u8bf7\u9009\u62e9\u5730\u5740",icon:"none"}))}),500)}};t.default=c}).call(this,r(2).default)},187:function(e,t){e.exports={".map-container":{"":{width:["750rpx",0,0,0],height:["500rpx",0,0,0],position:["relative",0,0,0]}},".map":{"":{width:["750rpx",0,0,1],height:["500rpx",0,0,1]}},".center-marker":{"":{position:["absolute",0,0,2],left:["375rpx",0,0,2],transform:["translate(-50%)",0,0,2],width:["42rpx",0,0,2],height:["69rpx",0,0,2]}},".center-marker-img":{".center-marker ":{width:["42rpx",0,1,3]}},".distance":{"":{color:["#FFFFFF",0,0,4],fontSize:["24rpx",0,0,4]}},".address-form":{"":{backgroundColor:["#FFFFFF",0,0,5],paddingTop:["80rpx",0,0,5],paddingRight:["24rpx",0,0,5],paddingBottom:["48rpx",0,0,5],paddingLeft:["24rpx",0,0,5],position:["fixed",0,0,5],left:[0,0,0,5],right:[0,0,0,5],bottom:[0,0,0,5]}},".address-form-cont":{"":{position:["relative",0,0,6]}},".biao":{"":{position:["absolute",0,0,7],width:["80rpx",0,0,7],height:["8rpx",0,0,7],borderRadius:["4rpx",0,0,7],backgroundColor:["#EEF4FA",0,0,7],top:["-48rpx",0,0,7],left:[50,0,0,7],transform:["translateX(-50%)",0,0,7]}},".form-item":{"":{display:["flex",0,0,8],flexDirection:["row",0,0,8],flexWrap:["nowrap",0,0,8],justifyContent:["space-between",0,0,8],alignItems:["center",0,0,8],"borderBottomWidth:last-child":[0,0,0,9],"borderBottomStyle:last-child":["solid",0,0,9],"borderBottomColor:last-child":["#000000",0,0,9],paddingTop:[0,0,0,22],paddingRight:[0,0,0,22],paddingBottom:[0,0,0,22],paddingLeft:[0,0,0,22]}},".label":{"":{fontSize:["28rpx",0,0,10],color:["#3D3D3D",0,0,10],fontWeight:["500",0,0,10],paddingTop:["24rpx",0,0,10],paddingRight:[0,0,0,10],paddingBottom:["24rpx",0,0,10],paddingLeft:[0,0,0,10]}},".value":{"":{flex:[1,0,0,11],fontSize:["28rpx",0,0,11],color:["#333333",0,0,11]}},".copy-icon":{"":{width:["32rpx",0,0,12],height:["32rpx",0,0,12],marginLeft:["16rpx",0,0,12]}},".input":{"":{height:["100rpx",0,0,13],width:["568rpx",0,0,13],fontSize:["24rpx",0,0,13],color:["#3D3D3D",0,0,13],fontWeight:["500",0,0,13],borderBottomWidth:["1rpx",0,0,13],borderBottomStyle:["solid",0,0,13],borderBottomColor:["#EEEEEE",0,0,13]}},".textarea":{"":{display:["flex",0,0,14],flexDirection:["column",0,0,14],flexWrap:["nowrap",0,0,14],justifyContent:["center",0,0,14],alignItems:["flex-start",0,0,14]}},".textarea-text":{"":{fontSize:["24rpx",0,0,15],color:["#3D3D3D",0,0,15]}},".placeholder":{"":{color:["#666666",0,0,16],fontWeight:["500",0,0,16]}},".switch-item":{"":{justifyContent:["space-between",0,0,17],marginTop:["12rpx",0,0,17]}},".save-btn":{"":{width:["630rpx",0,0,18],height:["96rpx",0,0,18],backgroundColor:["#E8101E",0,0,18],borderRadius:["44rpx",0,0,18],display:["flex",0,0,18],justifyContent:["center",0,0,18],alignItems:["center",0,0,18],marginTop:["100rpx",0,0,18],marginRight:["36rpx",0,0,18],marginBottom:[0,0,0,18],marginLeft:["36rpx",0,0,18]},".disabled":{backgroundColor:["#EEF4FA",0,1,20]}},".save-text":{".save-btn ":{color:["#FFFFFF",0,1,19],fontSize:["40rpx",0,1,19],fontWeight:["400",0,1,19]}},".permission":{".transform":{top:["220rpx",0,1,23],opacity:[1,0,1,23],visibility:["visible",0,1,23]}},"@VERSION":2}},19:function(e,t){if("undefined"==typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(e){var t=this.constructor;return this.then((function(r){return t.resolve(e()).then((function(){return r}))}),(function(r){return t.resolve(e()).then((function(){throw r}))}))}),"undefined"!=typeof uni&&uni&&uni.requireGlobal){var r=uni.requireGlobal();ArrayBuffer=r.ArrayBuffer,Int8Array=r.Int8Array,Uint8Array=r.Uint8Array,Uint8ClampedArray=r.Uint8ClampedArray,Int16Array=r.Int16Array,Uint16Array=r.Uint16Array,Int32Array=r.Int32Array,Uint32Array=r.Uint32Array,Float32Array=r.Float32Array,Float64Array=r.Float64Array,BigInt64Array=r.BigInt64Array,BigUint64Array=r.BigUint64Array}},2:function(e,t,r){"use strict";function n(e){var t=Object.prototype.toString.call(e);return t.substring(8,t.length-1)}function o(){return"string"==typeof __channelId__&&__channelId__}function a(e,t){switch(n(t)){case"Function":return"function() { [native code] }";default:return t}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){for(var e=arguments.length,t=new Array(e),r=0;r1){var c=s.pop();u=s.join("---COMMA---"),0===c.indexOf(" at ")?u+=c:u+="---COMMA---"+c}else u=s[0];console[i](u)},t.log=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var u=i.call(a,"catchLoc"),c=i.call(a,"finallyLoc");if(u&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),P(r),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:j(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},r}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports},218:function(e,t,r){"use strict";r.d(t,"b",(function(){return o})),r.d(t,"c",(function(){return a})),r.d(t,"a",(function(){return n}));var n={customNavbar:r(22).default},o=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("scroll-view",{staticStyle:{flexDirection:"column"},attrs:{scrollY:!0,showScrollbar:!0,enableBackToTop:!0,bubble:"true"}},[r("view",{staticClass:["address-page"]},[r("custom-navbar",{attrs:{title:"\u9009\u62e9\u5730\u5740",showBack:!0,backgroundColor:"#FFFFFF",showHeadle:!0,headleSrc:"/static/images/add_icon.png"},on:{onHeadleClick:e.addAddress}}),r("view",{staticClass:["map-container"],style:"height:"+e.mapHeight+"rpx"},[r("map",{staticClass:["map"],style:"height:"+e.mapHeight+"rpx",attrs:{id:"map",latitude:e.addressInfo.latitude,longitude:e.addressInfo.longitude,showLocation:!0},on:{regionchange:e.onRegionChange,tap:e.onMapTap}}),r("view",{staticClass:["center-marker"],style:"top:"+e.mapHeight/2+"rpx"},[r("u-image",{staticClass:["center-marker-img"],attrs:{src:"/static/images/mapCenter.png",mode:"widthFix"}})],1)],1),r("view",{staticClass:["address-form"]},[r("view",{staticClass:["address-form-cont"]},[r("view",{staticClass:["form-item"]},[r("u-text",{staticClass:["label"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u670d\u52a1\u5730\u5740")]),r("view",{staticClass:["input","textarea"]},[r("u-text",{staticClass:["textarea-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.addressInfo.server_address))])])]),r("view",{staticClass:["form-item"]},[r("u-text",{staticClass:["label"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u95e8\u724c\u53f7")]),r("u-input",{staticClass:["input"],attrs:{type:"text",placeholder:"\u59823\u53f7\u697c4\u5355\u5143502",placeholderClass:"placeholder",value:e.addressInfo.house_number},on:{input:function(t){e.$set(e.addressInfo,"house_number",t.detail.value)}}})],1),r("view",{staticClass:["form-item"]},[r("u-text",{staticClass:["label"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u9884\u7ea6\u4eba")]),r("u-input",{staticClass:["input"],attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u9884\u7ea6\u4eba\u59d3\u540d",placeholderClass:"placeholder",value:e.addressInfo.name},on:{input:function(t){e.$set(e.addressInfo,"name",t.detail.value)}}})],1),r("view",{staticClass:["form-item"]},[r("u-text",{staticClass:["label"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u624b\u673a\u53f7")]),r("u-input",{staticClass:["input"],attrs:{type:"number",placeholder:"\u8bf7\u8f93\u5165\u624b\u673a\u53f7",placeholderClass:"placeholder",maxlength:"11",value:e.addressInfo.call_phone},on:{input:function(t){e.$set(e.addressInfo,"call_phone",t.detail.value)}}})],1),r("view",{staticClass:["form-item","switch-item"]},[r("u-text",{staticClass:["label"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8bbe\u4e3a\u9ed8\u8ba4\u5730\u5740")]),r("switch",{attrs:{checked:1==e.addressInfo.is_default,color:"#E8101E"},on:{change:e.onSwitchChange}})],1),r("view",{staticClass:["biao"]}),r("view",{staticClass:["save-btn"],on:{click:e.saveAddress}},[r("u-text",{staticClass:["save-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u4fdd\u5b58")])])])]),r("view",{staticClass:["permission"],class:{transform:e.isShowPer}},[r("u-text",{staticClass:["per-tit"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u7f8e\u878d\u878dplus \u5bf9\u7cbe\u786e\u5b9a\u4f4d\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),r("u-text",{staticClass:["per-cont"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u83b7\u53d6\u60a8\u9644\u8fd1\u7684\u624b\u827a\u4eba\u4ee5\u53ca\u5e97\u94fa\u4e0b\u7684\u670d\u52a1\u5185\u5bb9\u3002")])])],1)])},a=[]},22:function(e,t,r){"use strict";r.r(t);var n=r(11),o=r(8);for(var a in o)["default"].indexOf(a)<0&&function(e){r.d(t,e,(function(){return o[e]}))}(a);var i=r(0);var s=Object(i.a)(o.default,n.b,n.c,!1,null,null,"43cd5ac3",!1,n.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(14).default,this.options.style):Object.assign(this.options.style,r(14).default)}).call(s),t.default=s.exports},23:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getToken=function(){return uni.getStorageSync("accessToken")},t.removeToken=function(){uni.removeStorageSync("accessToken"),uni.removeStorageSync("refreshToken")},t.setToken=function(e){uni.setStorageSync("accessToken",e)}},24:function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.getBaseUrl=function(){return c.apply(this,arguments)},t.setVersion=function(){var t=uni.getSystemInfoSync();i=t.appWgtVersion,s=t.deviceBrand,e("log","DeviceType",s," at utils/version.js:26"),"android"===(u=t.platform)?u="sj_android":"ios"===u&&(u="sj_ios");var r={VersionCode:i||"",DeviceBrand:u||"",DeviceType:s||""};uni.setStorageSync("setVersion",r)};var o=n(r(3)),a=n(r(4)),i="",s="",u="";function c(){return(c=(0,a.default)(o.default.mark((function t(){var r;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=uni.getStorageSync("setVersion"),t.next=3,uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:r.VersionCode,DeviceBrand:r.DeviceBrand,DeviceType:r.DeviceType},success:function(e){return 200==e.data.code&&uni.setStorageSync("baseUrl",e.data.data.url),e.data.data.url},fail:function(t){return e("log","\u8bf7\u6c42\u5931\u8d25",t," at utils/version.js:82"),"http://60.247.146.5:93"},complete:function(){e("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/version.js:86")}});case 3:case"end":return t.stop()}}),t)})))).apply(this,arguments)}}).call(this,r(2).default)},256:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.debounce=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=null,o=!1;return function(){for(var a=this,i=arguments.length,s=new Array(i),u=0;u0&&void 0!==e[0]?e[0]:{},r.next=3,t.isLocationEnabled();case 3:if(n=r.sent){r.next=7;break}return r.abrupt("return",n);case 7:return r.abrupt("return",n);case 8:case"end":return r.stop()}}),r)})))()}};t.default=i}).call(this,r(2).default)},29:function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(3)),a=n(r(4)),i={checkPermission:function(e){var t=arguments,r=this;return(0,a.default)(o.default.mark((function n(){var a;return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=t.length>1&&void 0!==t[1]?t[1]:"",n.next=3,r._checkAppPermission(e,a);case 3:return n.abrupt("return",n.sent);case 4:case"end":return n.stop()}}),n)})))()},_checkAppPermission:function(t,r){var n=this;return(0,a.default)(o.default.mark((function a(){var i;return o.default.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(i={camera:{android:"android.permission.CAMERA",ios:"camera"},location:{android:"android.permission.ACCESS_FINE_LOCATION",ios:"location"},phone:{android:"android.permission.CALL_PHONE",ios:"phone"},photo_library:{android:["android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE"],ios:"photo_library"}}[t]){o.next=5;break}return e("error","\u4e0d\u652f\u6301\u7684\u6743\u9650\u7c7b\u578b:",t," at utils/per.js:62"),o.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 5:if("Android"!==plus.os.name){o.next=9;break}return o.abrupt("return",n._checkAndroidPermission(i.android));case 9:return o.abrupt("return",n._checkIosPermission(i.ios,r));case 10:return o.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 11:case"end":return o.stop()}}),a)})))()},_checkAndroidPermission:function(t){return(0,a.default)(o.default.mark((function r(){return o.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",new Promise((function(r){plus.android.requestPermissions(Array.isArray(t)?t:[t],(function(n){e("log","perm_".concat(t),n," at utils/per.js:85");var o=!plus.storage.getItem("perm_".concat(t));o&&plus.storage.setItem("perm_".concat(t),"1"),0!==n.deniedPresent.length&&plus.storage.setItem("perm_".concat(t,"_no"),"2"),0!==n.granted.length&&plus.storage.removeItem("perm_".concat(t,"_no"),"2"),r({granted:0!==n.granted.length,firstRequest:o,canRequest:!0})}),(function(e){r({granted:!1,firstRequest:!1,canRequest:!0})}))})));case 1:case"end":return r.stop()}}),r)})))()},_checkIosPermission:function(t,r){return(0,a.default)(o.default.mark((function r(){var n,a;return o.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:r.prev=0,r.t0=t,r.next="camera"===r.t0?4:"location"===r.t0?6:10;break;case 4:return n=plus.ios.invoke("AVCaptureDevice","authorizationStatusForMediaType:","vide"),r.abrupt("break",11);case 6:return a=plus.ios.newObject("CLLocationManager"),n=plus.ios.invoke(a,"authorizationStatus"),plus.ios.deleteObject(a),r.abrupt("break",11);case 10:return r.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 11:return r.abrupt("return",{granted:3===n,firstRequest:0===n,canRequest:2!==n});case 14:return r.prev=14,r.t1=r.catch(0),e("error","iOS\u6743\u9650\u68c0\u67e5\u9519\u8bef:",r.t1," at utils/per.js:146"),r.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 18:case"end":return r.stop()}}),r,null,[[0,14]])})))()},_checkMpPermission:function(e){return(0,a.default)(o.default.mark((function t(){var r;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r={camera:"scope.camera",location:"scope.userLocation",record:"scope.record"}[e]){t.next=4;break}return t.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 4:return t.abrupt("return",new Promise((function(e){uni.getSetting({success:function(t){var n=t.authSetting;e({granted:!0===n[r],firstRequest:void 0===n[r],canRequest:!1!==n[r]})},fail:function(){e({granted:!1,firstRequest:!1,canRequest:!1})}})})));case 5:case"end":return t.stop()}}),t)})))()},requestPermission:function(e){var t=arguments,r=this;return(0,a.default)(o.default.mark((function n(){var a,i,s,u;return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=t.length>1&&void 0!==t[1]?t[1]:"",n.next=3,r.checkPermission(e,a);case 3:if(i=n.sent,s=i.granted,i.firstRequest,u=i.canRequest,!s){n.next=9;break}return n.abrupt("return",!0);case 9:if(u){n.next=11;break}return n.abrupt("return",!1);case 11:return n.abrupt("return",r._requestAppPermission(e,a));case 12:case"end":return n.stop()}}),n)})))()},_requestAppPermission:function(e,t){return(0,a.default)(o.default.mark((function e(){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",!1);case 1:case"end":return e.stop()}}),e)})))()},_requestMpPermission:function(e){return(0,a.default)(o.default.mark((function t(){var r;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r={camera:"scope.camera",location:"scope.userLocation",record:"scope.record"}[e]){t.next=4;break}return t.abrupt("return",!1);case 4:return t.abrupt("return",new Promise((function(e){uni.authorize({scope:r,success:function(){return e(!0)},fail:function(){return e(!1)}})})));case 5:case"end":return t.stop()}}),t)})))()},openSystemSettings:function(){if("Android"===plus.os.name){var e=plus.android.importClass("android.content.Intent"),t=plus.android.importClass("android.provider.Settings"),r=plus.android.importClass("android.net.Uri"),n=plus.android.runtimeMainActivity(),o=new e;o.setAction(t.ACTION_APPLICATION_DETAILS_SETTINGS);var a=r.fromParts("package",n.getPackageName(),null);o.setData(a),n.startActivity(o)}else{var i=plus.ios.import("UIApplication"),s=plus.ios.import("NSURL").URLWithString("app-settings:"),u=i.sharedApplication();plus.ios.invoke(u,"canOpenURL:",s)&&plus.ios.invoke(u,"openURL:",s),plus.ios.deleteObject(s),plus.ios.deleteObject(u)}}};t.default=i}).call(this,r(2).default)},3:function(e,t,r){var n=r(5),o=r(21)();e.exports=o;try{regeneratorRuntime=o}catch(e){"object"===("undefined"==typeof globalThis?"undefined":n(globalThis))?globalThis.regeneratorRuntime=o:Function("r","regeneratorRuntime = r")(o)}},304:function(e,t,r){"use strict";r.r(t);r(17),r(19);var n=r(130);n.default.mpType="page",n.default.route="pages/address/add",n.default.el="#root",new Vue(n.default)},4:function(e,t){function r(e,t,r,n,o,a,i){try{var s=e[a](i),u=s.value}catch(e){return void r(e)}s.done?t(u):Promise.resolve(u).then(n,o)}e.exports=function(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var i=e.apply(t,n);function s(e){r(i,o,a,s,u,"next",e)}function u(e){r(i,o,a,s,u,"throw",e)}s(void 0)}))}},e.exports.__esModule=!0,e.exports.default=e.exports},5:function(e,t){function r(t){return e.exports=r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,r(t)}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports},6:function(e,t,r){var n=r(13);e.exports=function(e,t,r){return(t=n(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports},7:function(e,t){e.exports={"@FONT-FACE":[{fontFamily:"shuHeiTi",src:'url("~@/static/Font/shuHeiTi.ttf") format("truetype")',fontDisplay:"swap"},{fontFamily:"DINPro",src:'url("~@/static/Font/DIN-Bold.otf") format("opentype")',fontWeight:"700",fontStyle:"normal"},{fontFamily:"DINPro",src:'url("~@/static/Font/DIN-Regular.otf") format("opentype")',fontWeight:"400",fontStyle:"normal"},{fontFamily:"DINPro",src:'url("~@/static/Font/DINPro-Medium.otf") format("opentype")',fontWeight:"500",fontStyle:"normal"}],".num_bold_text":{"":{fontWeight:["700",0,0,10],fontFamily:['"DINPro"',0,0,10]}},".num_regular_text":{"":{fontWeight:["400",0,0,12],fontFamily:['"DINPro"',0,0,12]}},".num_medium_text":{"":{fontWeight:["500",0,0,14],fontFamily:['"DINPro"',0,0,14]}},".flex":{"":{display:["flex",0,0,20]}},".flex-column":{"":{display:["flex",0,0,21],flexDirection:["column",0,0,21]}},".flex-wrap":{"":{flexWrap:["wrap",0,0,22]}},".flex-1":{"":{flex:[1,0,0,23]}},".justify-start":{"":{justifyContent:["flex-start",0,0,25]}},".justify-end":{"":{justifyContent:["flex-end",0,0,26]}},".justify-center":{"":{justifyContent:["center",0,0,27]}},".justify-between":{"":{justifyContent:["space-between",0,0,28]}},".justify-around":{"":{justifyContent:["space-around",0,0,29]}},".align-start":{"":{alignItems:["flex-start",0,0,30]}},".align-end":{"":{alignItems:["flex-end",0,0,31]}},".align-center":{"":{alignItems:["center",0,0,32]}},".align-stretch":{"":{alignItems:["stretch",0,0,33]}},".m-10":{"":{marginTop:["10rpx",0,0,35],marginRight:["10rpx",0,0,35],marginBottom:["10rpx",0,0,35],marginLeft:["10rpx",0,0,35]}},".m-20":{"":{marginTop:["20rpx",0,0,36],marginRight:["20rpx",0,0,36],marginBottom:["20rpx",0,0,36],marginLeft:["20rpx",0,0,36]}},".m-30":{"":{marginTop:["30rpx",0,0,37],marginRight:["30rpx",0,0,37],marginBottom:["30rpx",0,0,37],marginLeft:["30rpx",0,0,37]}},".m-40":{"":{marginTop:["40rpx",0,0,38],marginRight:["40rpx",0,0,38],marginBottom:["40rpx",0,0,38],marginLeft:["40rpx",0,0,38]}},".mt-10":{"":{marginTop:["10rpx",0,0,39]}},".mt-20":{"":{marginTop:["20rpx",0,0,40]}},".mt-30":{"":{marginTop:["30rpx",0,0,41]}},".mt-40":{"":{marginTop:["40rpx",0,0,42]}},".mb-10":{"":{marginBottom:["10rpx",0,0,43]}},".mb-20":{"":{marginBottom:["20rpx",0,0,44]}},".mb-30":{"":{marginBottom:["30rpx",0,0,45]}},".mb-40":{"":{marginBottom:["40rpx",0,0,46]}},".ml-10":{"":{marginLeft:["10rpx",0,0,47]}},".ml-20":{"":{marginLeft:["20rpx",0,0,48]}},".ml-30":{"":{marginLeft:["30rpx",0,0,49]}},".ml-40":{"":{marginLeft:["40rpx",0,0,50]}},".mr-10":{"":{marginRight:["10rpx",0,0,51]}},".mr-20":{"":{marginRight:["20rpx",0,0,52]}},".mr-30":{"":{marginRight:["30rpx",0,0,53]}},".mr-40":{"":{marginRight:["40rpx",0,0,54]}},".p-10":{"":{paddingTop:["10rpx",0,0,55],paddingRight:["10rpx",0,0,55],paddingBottom:["10rpx",0,0,55],paddingLeft:["10rpx",0,0,55]}},".p-20":{"":{paddingTop:["20rpx",0,0,56],paddingRight:["20rpx",0,0,56],paddingBottom:["20rpx",0,0,56],paddingLeft:["20rpx",0,0,56]}},".p-30":{"":{paddingTop:["30rpx",0,0,57],paddingRight:["30rpx",0,0,57],paddingBottom:["30rpx",0,0,57],paddingLeft:["30rpx",0,0,57]}},".p-40":{"":{paddingTop:["40rpx",0,0,58],paddingRight:["40rpx",0,0,58],paddingBottom:["40rpx",0,0,58],paddingLeft:["40rpx",0,0,58]}},".pt-10":{"":{paddingTop:["10rpx",0,0,59]}},".pt-20":{"":{paddingTop:["20rpx",0,0,60]}},".pt-30":{"":{paddingTop:["30rpx",0,0,61]}},".pt-40":{"":{paddingTop:["40rpx",0,0,62]}},".pb-10":{"":{paddingBottom:["10rpx",0,0,63]}},".pb-20":{"":{paddingBottom:["20rpx",0,0,64]}},".pb-30":{"":{paddingBottom:["30rpx",0,0,65]}},".pb-40":{"":{paddingBottom:["40rpx",0,0,66]}},".pl-10":{"":{paddingLeft:["10rpx",0,0,67]}},".pl-20":{"":{paddingLeft:["20rpx",0,0,68]}},".pl-30":{"":{paddingLeft:["30rpx",0,0,69]}},".pl-40":{"":{paddingLeft:["40rpx",0,0,70]}},".pr-10":{"":{paddingRight:["10rpx",0,0,71]}},".pr-20":{"":{paddingRight:["20rpx",0,0,72]}},".pr-30":{"":{paddingRight:["30rpx",0,0,73]}},".pr-40":{"":{paddingRight:["40rpx",0,0,74]}},".pr-240":{"":{paddingRight:["240rpx",0,0,75]}},".text-left":{"":{textAlign:["left",0,0,77]}},".text-center":{"":{textAlign:["center",0,0,78]}},".text-right":{"":{textAlign:["right",0,0,79]}},".text-primary":{"":{color:["#007aff",0,0,80]}},".text-success":{"":{color:["#4cd964",0,0,81]}},".text-warning":{"":{color:["#f0ad4e",0,0,82]}},".text-danger":{"":{color:["#dd524d",0,0,83]}},".text-info":{"":{color:["#909399",0,0,84]}},".text-sm":{"":{fontSize:["24rpx",0,0,85]}},".text-md":{"":{fontSize:["28rpx",0,0,86]}},".text-lg":{"":{fontSize:["32rpx",0,0,87]}},".text-xl":{"":{fontSize:["36rpx",0,0,88]}},".text-bold":{"":{fontWeight:["bold",0,0,89]}},".text-normal":{"":{fontWeight:["normal",0,0,90]}},".bg-white":{"":{backgroundColor:["#ffffff",0,0,92]}},".bg-primary":{"":{backgroundColor:["#007aff",0,0,93]}},".bg-success":{"":{backgroundColor:["#4cd964",0,0,94]}},".bg-warning":{"":{backgroundColor:["#f0ad4e",0,0,95]}},".bg-danger":{"":{backgroundColor:["#dd524d",0,0,96]}},".bg-info":{"":{backgroundColor:["#909399",0,0,97]}},".bg-gray":{"":{backgroundColor:["#f5f5f5",0,0,98]}},".border":{"":{borderWidth:["1rpx",0,0,100],borderStyle:["solid",0,0,100],borderColor:["#e5e5e5",0,0,100]}},".border-top":{"":{borderTopWidth:["1rpx",0,0,101],borderTopStyle:["solid",0,0,101],borderTopColor:["#e5e5e5",0,0,101]}},".border-bottom":{"":{borderBottomWidth:["1rpx",0,0,102],borderBottomStyle:["solid",0,0,102],borderBottomColor:["#e5e5e5",0,0,102]}},".border-left":{"":{borderLeftWidth:["1rpx",0,0,103],borderLeftStyle:["solid",0,0,103],borderLeftColor:["#e5e5e5",0,0,103]}},".border-right":{"":{borderRightWidth:["1rpx",0,0,104],borderRightStyle:["solid",0,0,104],borderRightColor:["#e5e5e5",0,0,104]}},".rounded":{"":{borderRadius:["8rpx",0,0,106]}},".rounded-lg":{"":{borderRadius:["16rpx",0,0,107]}},".rounded-xl":{"":{borderRadius:["24rpx",0,0,108]}},".rounded-circle":{"":{borderRadius:[50,0,0,109]}},".shadow":{"":{boxShadow:["0 2rpx 8rpx rgba(0, 0, 0, 0.1)",0,0,111]}},".shadow-lg":{"":{boxShadow:["0 4rpx 16rpx rgba(0, 0, 0, 0.1)",0,0,112]}},".relative":{"":{position:["relative",0,0,114]}},".absolute":{"":{position:["absolute",0,0,115]}},".fixed":{"":{position:["fixed",0,0,116]}},".btn":{"":{display:["flex",0,0,120],alignItems:["center",0,0,120],justifyContent:["center",0,0,120],paddingTop:["20rpx",0,0,120],paddingRight:["40rpx",0,0,120],paddingBottom:["20rpx",0,0,120],paddingLeft:["40rpx",0,0,120],borderRadius:["8rpx",0,0,120],fontSize:["28rpx",0,0,120],lineHeight:[1.5,0,0,120],textAlign:["center",0,0,120]}},".btn-primary":{"":{backgroundColor:["#007aff",0,0,121],color:["#ffffff",0,0,121]}},".btn-success":{"":{backgroundColor:["#4cd964",0,0,122],color:["#ffffff",0,0,122]}},".btn-warning":{"":{backgroundColor:["#f0ad4e",0,0,123],color:["#ffffff",0,0,123]}},".btn-danger":{"":{backgroundColor:["#dd524d",0,0,124],color:["#ffffff",0,0,124]}},".btn-info":{"":{backgroundColor:["#909399",0,0,125],color:["#ffffff",0,0,125]}},".card":{"":{backgroundColor:["#ffffff",0,0,127],borderRadius:["8rpx",0,0,127],paddingTop:["20rpx",0,0,127],paddingRight:["20rpx",0,0,127],paddingBottom:["20rpx",0,0,127],paddingLeft:["20rpx",0,0,127],marginTop:["20rpx",0,0,127],marginRight:["20rpx",0,0,127],marginBottom:["20rpx",0,0,127],marginLeft:["20rpx",0,0,127],boxShadow:["0 2rpx 8rpx rgba(0, 0, 0, 0.1)",0,0,127]}},".list-item":{"":{display:["flex",0,0,129],alignItems:["center",0,0,129],paddingTop:["20rpx",0,0,129],paddingRight:["20rpx",0,0,129],paddingBottom:["20rpx",0,0,129],paddingLeft:["20rpx",0,0,129],backgroundColor:["#ffffff",0,0,129],borderBottomWidth:["1rpx",0,0,129],borderBottomStyle:["solid",0,0,129],borderBottomColor:["#e5e5e5",0,0,129]}},".loading":{"":{display:["flex",0,0,131],alignItems:["center",0,0,131],justifyContent:["center",0,0,131],paddingTop:["20rpx",0,0,131],paddingRight:["20rpx",0,0,131],paddingBottom:["20rpx",0,0,131],paddingLeft:["20rpx",0,0,131]}},".loading-text":{"":{marginLeft:["10rpx",0,0,132],color:["#909399",0,0,132],fontSize:["24rpx",0,0,132]}},".empty":{"":{display:["flex",0,0,134],flexDirection:["column",0,0,134],alignItems:["center",0,0,134],justifyContent:["center",0,0,134],paddingTop:["40rpx",0,0,134],paddingRight:["40rpx",0,0,134],paddingBottom:["40rpx",0,0,134],paddingLeft:["40rpx",0,0,134]}},".empty-image":{"":{width:["200rpx",0,0,135],height:["200rpx",0,0,135],marginBottom:["20rpx",0,0,135]}},".empty-text":{"":{color:["#909399",0,0,136],fontSize:["28rpx",0,0,136]}},".text-overflow":{"":{WebkitBoxOrient:["vertical",0,0,137],WebkitLineClamp:[2,0,0,137],overflow:["hidden",0,0,137]}},".text-overflow-nvue":{"":{lines:[2,0,0,138],textOverflow:["ellipsis",0,0,138]}},".white-space-nowrap":{"":{width:["300rpx",0,0,139],whiteSpace:["nowrap",0,0,139],overflow:["hidden",0,0,139],textOverflow:["ellipsis",0,0,139]}},".text-overflow-1":{"":{WebkitBoxOrient:["vertical",0,0,140],WebkitLineClamp:[1,0,0,140],overflow:["hidden",0,0,140]}},".text-overflow-nvue1":{"":{lines:[1,0,0,141],textOverflow:["ellipsis",0,0,141]}},".box-cont":{"":{backgroundColor:["#ffffff",0,0,142],marginTop:["24rpx",0,0,142],marginRight:["24rpx",0,0,142],marginBottom:["24rpx",0,0,142],marginLeft:["24rpx",0,0,142],boxShadow:["0 0 12rpx 0 rgba(0, 0, 0, 0.05)",0,0,142]}},".btn-box":{"":{height:["64rpx",0,0,143],textAlign:["center",0,0,143],lineHeight:["64rpx",0,0,143],backgroundColor:["#E8101E",0,0,143],borderRadius:["32rpx",0,0,143],position:["fixed",0,0,143],left:["24rpx",0,0,143],bottom:["68rpx",0,0,143],right:["24rpx",0,0,143],zIndex:[999,0,0,143]}},".btn-text":{"":{fontSize:["28rpx",0,0,144],fontWeight:["500",0,0,144],color:["#ffffff",0,0,144]}},".agree-btn":{"":{width:["32rpx",0,0,145],height:["32rpx",0,0,145]}},".fixed-box":{"":{paddingTop:["32rpx",0,0,146],paddingRight:["24rpx",0,0,146],paddingBottom:["32rpx",0,0,146],paddingLeft:["24rpx",0,0,146],backgroundColor:["#ffffff",0,0,146],position:["absolute",0,0,146],left:[0,0,0,146],bottom:[0,0,0,146],right:[0,0,0,146],zIndex:[9999,0,0,146]}},".fixed-btn":{"":{height:["80rpx",0,0,147],backgroundColor:["#E8101E",0,0,147],borderRadius:["40rpx",0,0,147],display:["flex",0,0,147],alignItems:["center",0,0,147],justifyContent:["center",0,0,147]}},".fixed-text":{"":{fontSize:["28rpx",0,0,148],color:["#ffffff",0,0,148],fontWeight:["500",0,0,148]}},".arrow-right":{"":{width:["32rpx",0,0,149],height:["32rpx",0,0,149]}},".permission":{"":{position:["fixed",0,0,150],top:[0,0,0,150],left:["24rpx",0,0,150],right:["24rpx",0,0,150],backgroundColor:["#ffffff",0,0,150],borderRadius:["20rpx",0,0,150],paddingTop:["24rpx",0,0,150],paddingRight:["24rpx",0,0,150],paddingBottom:["24rpx",0,0,150],paddingLeft:["24rpx",0,0,150],zIndex:[9,0,0,150],boxShadow:["0 8rpx 16rpx 0 rgba(0, 0, 0, 0.05)",0,0,150],opacity:[0,0,0,150],transitionDuration:[300,0,0,150],transitionTimingFunction:["ease",0,0,150],transitionDelay:[0,0,0,150],visibility:["hidden",0,0,150]}},".per-tit":{"":{fontSize:["32rpx",0,0,151],fontWeight:["700",0,0,151],color:["#007aff",0,0,151]}},".per-cont":{"":{fontSize:["28rpx",0,0,152],color:["#333333",0,0,152]}},".flex-row-center-between":{"":{display:["flex",0,0,154],flexDirection:["row",0,0,154],alignItems:["center",0,0,154],justifyContent:["space-between",0,0,154]}},".flex-row-start-between":{"":{display:["flex",0,0,155],flexDirection:["row",0,0,155],alignItems:["flex-start",0,0,155],justifyContent:["space-between",0,0,155]}},".flex-row-center-center":{"":{display:["flex",0,0,156],flexDirection:["row",0,0,156],alignItems:["center",0,0,156],justifyContent:["center",0,0,156]}},".flex-row-center":{"":{display:["flex",0,0,157],flexDirection:["row",0,0,157],alignItems:["center",0,0,157]}},".flex-row-start":{"":{display:["flex",0,0,158],flexDirection:["row",0,0,158],alignItems:["flex-start",0,0,158]}},".flex-row-end-between":{"":{display:["flex",0,0,159],flexDirection:["row",0,0,159],alignItems:["flex-end",0,0,159],justifyContent:["space-between",0,0,159]}},"@VERSION":2}},8:function(e,t,r){"use strict";r.r(t);var n=r(9),o=r.n(n);for(var a in n)["default"].indexOf(a)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(a);t.default=o.a},9:function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(3)),a=n(r(4)),i={name:"CustomNavbar",props:{title:{type:String,default:""},showBack:{type:Boolean,default:!0},showHeadle:{type:Boolean,default:!1},headleSrc:{type:String,default:""},backgroundColor:{type:String,default:"#ffffff"},titleColor:{type:String,default:"#333333"},borderBottom:{type:String,default:"1rpx solid rgba(0, 0, 0, 0.05)"},nowStyle:{type:String,default:"1rpx solid rgba(0, 0, 0, 0.05)"},leftImg:{type:String,default:"/static/images/back.png"},backgroundImage:{type:String}},data:function(){return{statusBarHeight:0}},created:function(){var e=this;return(0,a.default)(o.default.mark((function t(){var r,n;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,uni.getSystemInfoSync();case 2:r=t.sent,n=r.screenWidth,e.statusBarHeight=e.pxToRpx(r.statusBarHeight,n);case 5:case"end":return t.stop()}}),t)})))()},methods:{pxToRpx:function(e,t){if("number"!=typeof e)throw new Error("\u8bf7\u4f20\u5165\u6570\u5b57\u7c7b\u578b\u7684px\u503c");return e*(750/t)},goBack:function(){this.$emit("back"),uni.navigateBack({delta:1})},onHeadleClick:function(){this.$emit("onHeadleClick")}}};t.default=i}}); \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/pages/address/add.js.LICENSE.txt b/unpackage/dist/build/app-plus/pages/address/add.js.LICENSE.txt new file mode 100644 index 0000000..ae386fb --- /dev/null +++ b/unpackage/dist/build/app-plus/pages/address/add.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/unpackage/dist/build/app-plus/pages/address/newSearch.js b/unpackage/dist/build/app-plus/pages/address/newSearch.js new file mode 100644 index 0000000..e90f3f4 --- /dev/null +++ b/unpackage/dist/build/app-plus/pages/address/newSearch.js @@ -0,0 +1,2 @@ +/*! For license information please see newSearch.js.LICENSE.txt */ +!function(e){var t={};function c(i){if(t[i])return t[i].exports;var d=t[i]={i:i,l:!1,exports:{}};return e[i].call(d.exports,d,d.exports,c),d.l=!0,d.exports}c.m=e,c.c=t,c.d=function(e,t,i){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(c.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var d in e)c.d(i,d,function(t){return e[t]}.bind(null,d));return i},c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="/",c(c.s=305)}({0:function(e,t,c){"use strict";function i(e,t,c,i,d,r,s,n,a,o){var l,y="function"==typeof e?e.options:e;if(a){y.components||(y.components={});var m=Object.prototype.hasOwnProperty;for(var v in a)m.call(a,v)&&!m.call(y.components,v)&&(y.components[v]=a[v])}if(o&&("function"==typeof o.beforeCreate&&(o.beforeCreate=[o.beforeCreate]),(o.beforeCreate||(o.beforeCreate=[])).unshift((function(){this[o.__module]=this})),(y.mixins||(y.mixins=[])).push(o)),t&&(y.render=t,y.staticRenderFns=c,y._compiled=!0),i&&(y.functional=!0),r&&(y._scopeId="data-v-"+r),s?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),d&&d.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},y._ssrRegister=l):d&&(l=n?function(){d.call(this,this.$root.$options.shadowRoot)}:d),l)if(y.functional){y._injectStyles=l;var Y=y.render;y.render=function(e,t){return l.call(t),Y(e,t)}}else{var Z=y.beforeCreate;y.beforeCreate=Z?[].concat(Z,l):[l]}return{exports:e,options:y}}c.d(t,"a",(function(){return i}))},1:function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},10:function(e,t){e.exports={".custom-navbar":{"":{position:["fixed",0,0,0],top:[0,0,0,0],left:[0,0,0,0],right:[0,0,0,0],zIndex:[9999,0,0,0]}},".header-top":{"":{height:["88rpx",0,0,1],backgroundColor:["rgba(0,0,0,0)",0,0,1]}},".navbar-content":{"":{height:["88rpx",0,0,2],display:["flex",0,0,2],flexDirection:["row",0,0,2],flexWrap:["nowrap",0,0,2],alignItems:["center",0,0,2],justifyContent:["space-between",0,0,2],paddingTop:[0,0,0,2],paddingRight:["30rpx",0,0,2],paddingBottom:[0,0,0,2],paddingLeft:["24rpx",0,0,2]}},".right-area":{"":{width:["46rpx",0,0,3],height:["46rpx",0,0,3],display:["flex",0,0,3],alignItems:["center",0,0,3]}},".icon-headle":{"":{width:["46rpx",0,0,3],height:["46rpx",0,0,3],display:["flex",0,0,3],alignItems:["center",0,0,3]}},".left-area":{"":{width:["36rpx",0,0,4],height:["36rpx",0,0,4],display:["flex",0,0,4],alignItems:["center",0,0,4]}},".back-icon":{"":{width:["36rpx",0,0,4],height:["36rpx",0,0,4],display:["flex",0,0,4],alignItems:["center",0,0,4]}},".title":{"":{fontSize:["36rpx",0,0,6],fontWeight:["500",0,0,6],color:["#333333",0,0,6]}},"@VERSION":2}},11:function(e,t,c){"use strict";c.d(t,"b",(function(){return i})),c.d(t,"c",(function(){return d})),c.d(t,"a",(function(){}));var i=function(){var e=this,t=e.$createElement,c=e._self._c||t;return c("view",[c("view",{staticClass:["custom-navbar"],style:{paddingTop:e.statusBarHeight+"rpx",background:e.backgroundColor}},[c("view",{staticClass:["navbar-content"],style:{"border-bottom":e.borderBottom}},[c("view",{staticClass:["left-area"]},[e.showBack?c("view",{staticClass:["back-btn"],on:{click:e.goBack}},[c("u-image",{staticClass:["back-icon"],attrs:{src:e.leftImg,mode:"aspectFit"}})],1):e._e(),e._t("left")],2),c("u-text",{staticClass:["title"],style:"color:"+e.titleColor+";",appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.title))]),c("view",{staticClass:["right-area"]},[e._t("right",[e.showHeadle?c("u-image",{staticClass:["iconfont","icon-headle"],attrs:{src:e.headleSrc,mode:"aspectFit"},on:{click:e.onHeadleClick}}):e._e()])],2)])]),c("view",{staticClass:["header-top"],style:{height:e.statusBarHeight+88+"rpx"}})])},d=[]},12:function(e,t,c){"use strict";(function(e){var i=c(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var d,r=i(c(3)),s=i(c(4)),n=i(c(6)),a=c(23),o=c(24);function l(e,t){var c=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),c.push.apply(c,i)}return c}function y(e){for(var t=1;t=200&&s<300)){e.next=3;break}return e.abrupt("return",n);case 3:if(401!==s){e.next=7;break}return e.next=6,X(t,i,d);case 6:return e.abrupt("return",e.sent);case 7:return uni.showToast({title:n.message||"\u8bf7\u6c42\u5931\u8d25",icon:"none"}),e.abrupt("return",Promise.reject(n));case 9:case"end":return e.stop()}}),e)})));return function(t,c,i,d){return e.apply(this,arguments)}}(),S=function(){var t=(0,s.default)(r.default.mark((function t(c,i){var s,a,l;return r.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=uni.getStorageSync("baseUrl"),""==uni.getStorageSync("setVersion").VersionCode&&(0,o.setVersion)(),a){t.next=5;break}return t.next=5,new Promise((function(t,c){uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType},success:function(c){200==c.data.code&&(uni.setStorageSync("baseUrl",c.data.data.url),a=c.data.data.url,t(a)),e("log","\u8bf7\u6c42\u6210\u529f",c.data," at utils/request.js:121")},fail:function(t){e("log","\u8bf7\u6c42\u5931\u8d25",t," at utils/request.js:124")},complete:function(){e("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/request.js:127")}})}));case 5:return d=a,e("log","\u751f\u4ea7\u73af\u5883"," at utils/request.js:147"),s={baseURL:d},(0,n.default)(s,"baseURL",d),(0,n.default)(s,"header",{"content-type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType}),(0,n.default)(s,"timeout",6e4),c=y(y(y({},l=s),c),{},{url:i?c.url:"".concat(l.baseURL).concat(c.url)}),c=u(c),t.abrupt("return",new Promise((function(e,t){uni.request(y(y({},c),{},{success:function(i){e(L(c,i,e,t))},fail:function(e){uni.showToast({title:"\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5",icon:"none"}),t(e)}}))})));case 10:case"end":return t.stop()}}),t)})));return function(e,c){return t.apply(this,arguments)}}();function X(e,t,c){return J.apply(this,arguments)}function J(){return(J=(0,s.default)(r.default.mark((function e(t,c,i){var d,s;return r.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((0,a.getToken)()){e.next=2;break}return e.abrupt("return",f());case 2:if(!m){e.next=4;break}return e.abrupt("return",Y((function(e){t.header.Authorization="Bearer ".concat(e),S(t,!0).then(c).catch(i)})));case 4:return m=!0,e.prev=5,e.next=8,p();case 8:return d=e.sent,(0,a.setToken)(d),Z(d),t.header.Authorization="Bearer ".concat(d),e.next=14,S(t,!0);case 14:return s=e.sent,e.abrupt("return",s);case 18:return e.prev=18,e.t0=e.catch(5),(0,a.removeToken)(),f(),e.abrupt("return",e.t0);case 23:return e.prev=23,m=!1,e.finish(23);case 26:case"end":return e.stop()}}),e,null,[[5,18,23,26]])})))).apply(this,arguments)}function p(){return C.apply(this,arguments)}function C(){return(C=(0,s.default)(r.default.mark((function e(){var t;return r.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(uni.getStorageSync("refreshToken")){e.next=3;break}throw new Error("No refresh token");case 3:return e.next=5,S({url:"/sj/refreshtoken",data:{refresh_token:uni.getStorageSync("refreshToken"),deviceid:getApp().globalData.deviceid},method:"POST"});case 5:if(1!=(t=e.sent).state&&200!=t.code){e.next=10;break}return uni.setStorageSync("accessToken",t.access_token),uni.setStorageSync("refreshToken",t.refresh_token),e.abrupt("return",t.access_token);case 10:throw new Error("Refresh token failed");case 11:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function f(){uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}var Q={get:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return S(y({url:e,data:t,method:"GET"},c))},post:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return S(y({url:e,data:t,method:"POST"},c))},put:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return S(y({url:e,data:t,method:"PUT"},c))},delete:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return S(y({url:e,data:t,method:"DELETE"},c))}};t.default=Q}).call(this,c(2).default)},123:function(e,t,c){"use strict";c.r(t);var i=c(81),d=c.n(i);for(var r in i)["default"].indexOf(r)<0&&function(e){c.d(t,e,(function(){return i[e]}))}(r);t.default=d.a},13:function(e,t,c){var i=c(5).default,d=c(20);e.exports=function(e){var t=d(e,"string");return"symbol"==i(t)?t:t+""},e.exports.__esModule=!0,e.exports.default=e.exports},131:function(e,t,c){"use strict";var i=c(219),d=c(188),r=c(0);var s=Object(r.a)(d.default,i.b,i.c,!1,null,"04bed0a2","df38acba",!1,i.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(c(277).default,this.options.style):Object.assign(this.options.style,c(277).default)}).call(s),t.default=s.exports},14:function(e,t,c){"use strict";c.r(t);var i=c(10),d=c.n(i);for(var r in i)["default"].indexOf(r)<0&&function(e){c.d(t,e,(function(){return i[e]}))}(r);t.default=d.a},17:function(e,t,c){Vue.prototype.__$appStyle__={},Vue.prototype.__merge_style&&Vue.prototype.__merge_style(c(18).default,Vue.prototype.__$appStyle__)},18:function(e,t,c){"use strict";c.r(t);var i=c(7),d=c.n(i);for(var r in i)["default"].indexOf(r)<0&&function(e){c.d(t,e,(function(){return i[e]}))}(r);t.default=d.a},188:function(e,t,c){"use strict";var i=c(189),d=c.n(i);t.default=d.a},189:function(e,t,c){"use strict";(function(e){var i=c(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var d=i(c(3)),r=i(c(4)),s=i(c(257)),n=i(c(12)),a=i(c(29)),o=(i(c(306)),i(c(307)),i(c(28))),l={components:{searchBox:s.default},data:function(){return{firstRun:!0,userAdress:uni.getStorageSync("userAdrees"),nowAddress:"\u5f00\u542f\u540e\u624d\u80fd\u770b\u5230\u5468\u8fb9\u670d\u52a1",nowCity:[],isLocation:!1,isShowPer:!1,noClick:!0,addressList:[],searchKeyword:"",searchResults:[],showMap:!0,latitude:0,longitude:0,markers:[],currentDistance:"0m",pageHeight:0,listHeight:0,city:{center:"",name:""}}},onShow:function(){uni.getStorageSync("searchCity");this.getCurrentLocation()},onLoad:function(){var e=this;return(0,r.default)(d.default.mark((function t(){return d.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:uni.getStorageSync("startLocate")||e.startLocate(),e.$store.state.isLocation&&(e.isLocation=!0,uni.getStorageSync("userAdrees")),e.pageHeight=uni.getWindowInfo().safeArea.height,e.listHeight=parseInt(e.pageHeight)-44-145,e.getAddressList();case 5:case"end":return t.stop()}}),t)})))()},methods:{showPermissionDialog:function(e,t){return new Promise((function(c){uni.showModal({title:e,content:t,confirmText:"\u53bb\u5f00\u542f",success:function(e){c(e.confirm)}})}))},startLocate:function(){var t=this;return(0,r.default)(d.default.mark((function c(){var i,r,s,n;return d.default.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return e("log","this.granted",t.granted," at pages/address/newSearch.nvue:315"),i=uni.getSystemInfoSync(),e("log",i.platform," at pages/address/newSearch.nvue:317"),r="",r="ios"===i.platform?"location":"android.permission.ACCESS_FINE_LOCATION",!plus.storage.getItem("perm_".concat(r))&&(t.isShowPer=!0),c.next=9,a.default.checkPermission("location","\u9700\u8981\u4f4d\u7f6e\u6743\u9650\u7528\u4e8e\u63a8\u8350\u9644\u8fd1\u670d\u52a1");case 9:if(s=c.sent,n=s.granted,e("log","granted==============",n," at pages/address/newSearch.nvue:334"),!n){c.next=17;break}return t.isShowPer||plus.storage.getItem("perm_".concat(r,"_no")),t.isShowPer=!1,uni.setStorageSync("startLocate",1),c.abrupt("return");case 17:if(t.isShowPer=!1,uni.getStorageSync("startLocate")){c.next=21;break}return uni.setStorageSync("startLocate",1),c.abrupt("return");case 21:return c.next=23,t.showPermissionDialog("\u4f4d\u7f6e\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u4f4d\u7f6e\u6743\u9650\uff0c\u7528\u4e8e\u4e3a\u60a8\u63a8\u8350\u9644\u8fd1\u670d\u52a1");case 23:if(c.sent){c.next=26;break}return c.abrupt("return");case 26:return c.next=28,a.default.requestPermission("location","\u9700\u8981\u4f4d\u7f6e\u6743\u9650\u7528\u4e8e\u63a8\u8350\u9644\u8fd1\u670d\u52a1");case 28:c.sent?t.isShowPer||plus.storage.getItem("perm_".concat(r,"_no")):o.default.openAppSettings();case 30:case"end":return c.stop()}}),c)})))()},getAddressList:function(){var e=this;uni.getStorageSync("refreshToken")&&n.default.post("/user/addresslist",{id:this.id}).then((function(t){e.addressList=t.data}))},convert:function(e){var t={key:"30b7eb1a1b2f88edc085b9b3ee9a2188",locations:"".concat(e.longitude,",").concat(e.latitude),coordsys:"gps"};return new Promise((function(e,c){uni.request({url:"https://restapi.amap.com/v3/assistant/coordinate/convert",method:"GET",data:t,success:function(t){e(t.data)}})}))},getLocation:function(){var t=this;return(0,r.default)(d.default.mark((function c(){var i;return d.default.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:if(i=t,"ios"!=uni.getStorageSync("setVersion").DeviceBrand){c.next=5;break}return c.abrupt("return",new Promise((function(t,c){var s;uni.getLocation({type:"wgs84",geocode:!0,isHighAccuracy:!0,success:(s=(0,r.default)(d.default.mark((function e(c){var r,s;return d.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i.convert(c);case 2:r=e.sent,s=r.locations.split(","),c.longitude=s[0],c.latitude=s[1],i.isLocation=!0,uni.setStorageSync("isLocation",!0),t(c);case 9:case"end":return e.stop()}}),e)}))),function(e){return s.apply(this,arguments)}),fail:function(t){e("log",t," at pages/address/newSearch.nvue:430"),i.isLocation=!1,uni.setStorageSync("isLocation",!1),c(t)}})})));case 5:return c.abrupt("return",new Promise((function(t,c){uni.getLocation({type:"gcj02",geocode:!0,success:function(e){i.isLocation=!0,uni.setStorageSync("isLocation",!0),t(e)},fail:function(t){e("log",t," at pages/address/newSearch.nvue:453"),i.isLocation=!1,uni.setStorageSync("isLocation",!1),c(t)}})})));case 6:case"end":return c.stop()}}),c)})))()},refreshAdress:function(){var e=this;return(0,r.default)(d.default.mark((function t(){var c,i,r;return d.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return c=e,t.next=3,c.getLocation();case 3:i=t.sent,c.longitude=i.longitude,c.latitude=i.latitude,r={location:i.longitude+","+i.latitude,cityname:i.address.city},c.setSelectCity(r),c.getPlaceAround(!0);case 9:case"end":return t.stop()}}),t)})))()},getCurrentLocation:function(){var e=this;return(0,r.default)(d.default.mark((function t(){var c,i,r,s,n,a;return d.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(c=e,"","",i=uni.getStorageSync("searchCity"),!c.firstRun){t.next=20;break}return t.prev=5,t.next=8,c.getLocation();case 8:r=t.sent,c.longitude=r.longitude,c.latitude=r.latitude,s={center:r.longitude+","+r.latitude,name:r.address.city},c.city=s,t.next=18;break;case 15:t.prev=15,t.t0=t.catch(5),i?(c.city=i,n=i.center.split(","),c.longitude=n[0],c.latitude=n[1]):(c.city={center:"117.330043,38.372266",name:"\u9ec4\u9a85"},c.longitude="117.330043",c.latitude="38.372266");case 18:t.next=21;break;case 20:i?(c.city=i,a=i.center.split(","),c.longitude=a[0],c.latitude=a[1]):(c.city={center:"117.330043,38.372266",name:"\u9ec4\u9a85"},c.longitude="117.330043",c.latitude="38.372266");case 21:c.getPlaceAround();case 22:case"end":return t.stop()}}),t,null,[[5,15]])})))()},getPlaceAround:function(e){var t,c=this;return t=c.searchKeyword?{key:"30b7eb1a1b2f88edc085b9b3ee9a2188",location:"".concat(c.longitude,",").concat(c.latitude),keywords:c.searchKeyword,page:1,offset:10}:{key:"30b7eb1a1b2f88edc085b9b3ee9a2188",location:"".concat(c.longitude,",").concat(c.latitude),page:1,offset:10},new Promise((function(i,d){uni.request({url:"https://restapi.amap.com/v5/place/around",method:"GET",data:t,success:function(t){if(c.searchResults=t.data.pois,c.searchResults.forEach((function(e){var t=e.location.split(",");e.latitude=t[1],e.longitude=t[0]})),1==c.isLocation&&c.firstRun&&(c.firstRun=!1,c.nowAddress=t.data.pois[0].name,c.nowCity=t.data.pois[0]),1==c.isLocation&&1==e){c.nowAddress=t.data.pois[0].name,c.nowCity=t.data.pois[0];var i=getCurrentPages(),d=i[i.length-2];d.$vm.isNeedLocation=!1,d.$vm.updateAddress(c.searchResults[0]),getApp().updateAddress(c.searchResults[0])}}})}))},updateMarkers:function(){this.markers=[{latitude:this.latitude,longitude:this.longitude,iconPath:"/static/images/position_icon_3x.png"}]},onSearch:function(){var e=this;return(0,r.default)(d.default.mark((function t(){var c;return d.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((c=e).searchKeyword.trim()){t.next=4;break}return uni.showToast({title:"\u8bf7\u8f93\u5165\u641c\u7d22\u5173\u952e\u8bcd",icon:"none"}),t.abrupt("return");case 4:return t.prev=4,t.next=7,c.getPlaceAround();case 7:t.next=12;break;case 9:t.prev=9,t.t0=t.catch(4),uni.showToast({title:"\u641c\u7d22\u5931\u8d25",icon:"none"});case 12:case"end":return t.stop()}}),t,null,[[4,9]])})))()},selectNowAdress:function(e){"\u5f00\u542f\u540e\u624d\u80fd\u770b\u5230\u5468\u8fb9\u670d\u52a1"!=this.nowAddress&&this.selectAddress(e)},selectCommonAddress:function(t){var c,i=this;return c={key:"30b7eb1a1b2f88edc085b9b3ee9a2188",location:"".concat(t.longitude,",").concat(t.latitude),page:1,offset:1},new Promise((function(d,r){uni.request({url:"https://restapi.amap.com/v5/place/around",method:"GET",data:c,success:function(c){var d=i.removeDependencyFromAddress(t.server_address,t.dependency);c.data.pois[0].name=d,c.data.pois[0].location="".concat(t.longitude,",").concat(t.latitude),e("log","around:",c," at pages/address/newSearch.nvue:697"),i.selectAddress(c.data.pois[0])}})}))},removeDependencyFromAddress:function(e,t){var c=t.split("-").map((function(e){return e.trim()})).filter(Boolean),i=e;return c.forEach((function(e){var t=new RegExp("".concat(e,"[\\s\\(\\)\uff0c,]*"),"g");i=i.replace(t,"")})),i.trim()},setSelectCity:function(e){var t={center:e.location,name:e.cityname};this.city=t,uni.setStorageSync("searchCity",t)},selectAddress:function(e){e&&this.setSelectCity(e);var t=getCurrentPages(),c=t[t.length-2];c&&("pages/home/home"===c.route?(c.$vm.isNeedLocation=!1,c.$vm.updateAddress(e),uni.navigateBack(),getApp().updateAddress(e)):("pages/artisan/profile"===c.route||"pages/ruzhu/complete"===c.route||"pages/address/add"===c.route)&&(c.$vm.editAddress(e),uni.navigateBack()))},onMapTap:function(e){this.latitude=e.detail.latitude,this.longitude=e.detail.longitude,this.updateMarkers(),this.getPlaceAround()},changeMap:function(t){var c=this;uni.createMapContext("map",this).getCenterLocation({success:function(t){e("log",t," at pages/address/newSearch.nvue:788"),c.latitude=t.latitude,c.longitude=t.longitude,c.updateMarkers(),c.getPlaceAround()}})},goAddress:function(){uni.navigateTo({url:"/pages/address/list"})},goSelectCity:function(){uni.navigateTo({url:"/pages/address/selectCity"})},goSelectAddress:function(){uni.navigateTo({url:"/pages/address/selectAddress"})},goList:function(){uni.navigateTo({url:"/pages/address/list"})}}};t.default=l}).call(this,c(2).default)},19:function(e,t){if("undefined"==typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(e){var t=this.constructor;return this.then((function(c){return t.resolve(e()).then((function(){return c}))}),(function(c){return t.resolve(e()).then((function(){throw c}))}))}),"undefined"!=typeof uni&&uni&&uni.requireGlobal){var c=uni.requireGlobal();ArrayBuffer=c.ArrayBuffer,Int8Array=c.Int8Array,Uint8Array=c.Uint8Array,Uint8ClampedArray=c.Uint8ClampedArray,Int16Array=c.Int16Array,Uint16Array=c.Uint16Array,Int32Array=c.Int32Array,Uint32Array=c.Uint32Array,Float32Array=c.Float32Array,Float64Array=c.Float64Array,BigInt64Array=c.BigInt64Array,BigUint64Array=c.BigUint64Array}},190:function(e,t){e.exports={".search-address-page":{"":{flex:[1,0,0,0],height:[100,0,0,0],overflow:["hidden",0,0,0]}},".search-container":{"":{backgroundColor:["#FFFFFF",0,0,1],display:["flex",0,0,1],flexDirection:["row",0,0,1],alignItems:["center",0,0,1],paddingTop:["32rpx",0,0,1],paddingRight:["30rpx",0,0,1],paddingBottom:["20rpx",0,0,1],paddingLeft:["30rpx",0,0,1]}},".search-container-text":{".search-container ":{fontFamily:["PingFangSC, PingFang SC",0,1,2],fontWeight:["500",0,1,2],fontSize:["32rpx",0,1,2],color:["#333333",0,1,2],lineHeight:["45rpx",0,1,2],textAlign:["left",0,1,2],fontStyle:["normal",0,1,2]}},".text-img":{".search-container ":{width:["20rpx",0,1,3],height:["12rpx",0,1,3],marginLeft:["8rpx",0,1,3],marginRight:["26rpx",0,1,3]}},".address-header":{".search-container ":{flex:[1,0,1,4],height:["68rpx",0,1,4],backgroundColor:["#FFFFFF",0,1,4],borderWidth:["2rpx",0,1,4],borderStyle:["solid",0,1,4],borderColor:["#E8101E",0,1,4],borderRadius:["60rpx",0,1,4],position:["relative",0,1,4]}},".search-icon":{".search-container .address-header ":{width:["29rpx",0,2,5],height:["32rpx",0,2,5],position:["absolute",0,2,5],top:["18rpx",0,2,5],left:["22rpx",0,2,5]}},".search-text":{".search-container .address-header ":{fontFamily:["PingFangSC, PingFang SC",0,2,6],fontWeight:["400",0,2,6],fontSize:["26rpx",0,2,6],color:["#CCCCCC",0,2,6],textAlign:["left",0,2,6],fontStyle:["normal",0,2,6],position:["absolute",0,2,6],top:["16rpx",0,2,6],left:["72rpx",0,2,6]}},".current-locate":{"":{backgroundColor:["#FFFFFF",0,0,7],boxShadow:["0rpx 0rpx 12rpx 0rpx rgba(0, 0, 0, 0.05)",0,0,7],paddingTop:["22rpx",0,0,7],paddingRight:["30rpx",0,0,7],paddingBottom:["22rpx",0,0,7],paddingLeft:["30rpx",0,0,7],marginBottom:["20rpx",0,0,7]}},".current-locate__heard":{"":{display:["flex",0,0,8],flexWrap:["wrap",0,0,8],justifyContent:["flex-start",0,0,8],alignItems:["flex-end",0,0,8],flexDirection:["row",0,0,8],marginBottom:["24rpx",0,0,8]}},".current-locate__heard__text":{"":{fontFamily:["PingFangSC, PingFang SC",0,0,9],fontWeight:["400",0,0,9],fontSize:["28rpx",0,0,9],color:["#666666",0,0,9],lineHeight:["40rpx",0,0,9],textAlign:["left",0,0,9],fontStyle:["normal",0,0,9]}},".current-locate__heard__img":{"":{height:["32rpx",0,0,10],width:["32rpx",0,0,10],marginRight:["12rpx",0,0,10],marginBottom:["7rpx",0,0,10]}},".current-locate__contact":{"":{display:["flex",0,0,11],flexWrap:["wrap",0,0,11],justifyContent:["space-between",0,0,11],flexDirection:["row",0,0,11]}},".current-locate__contact__left":{"":{fontFamily:["PingFangSC, PingFang SC",0,0,12],fontWeight:["400",0,0,12],fontSize:["30rpx",0,0,12],color:["#000000",0,0,12],lineHeight:["40rpx",0,0,12],textAlign:["center",0,0,12],fontStyle:["normal",0,0,12]}},".current-locate__contact__right":{"":{fontFamily:["PingFangSC, PingFang SC",0,0,13],fontWeight:["400",0,0,13],fontSize:["26rpx",0,0,13],color:["#E8101E",0,0,13],lineHeight:["34rpx",0,0,13],textAlign:["center",0,0,13],fontStyle:["normal",0,0,13]}},".current-locate__contact__refresh":{"":{height:["30rpx",0,0,14],width:["30rpx",0,0,14]}},".address-list":{"":{backgroundColor:["#FAFAFA",0,0,15],paddingBottom:["40rpx",0,0,15]}},".address-list-box":{".address-list ":{backgroundColor:["#FFFFFF",0,1,16],boxShadow:["0rpx 0rpx 12rpx 0rpx rgba(0, 0, 0, 0.05)",0,1,16]}},".address-list__cut":{"":{marginBottom:["20rpx",0,0,17]}},".address-list__heard":{"":{display:["flex",0,0,18],flexWrap:["wrap",0,0,18],justifyContent:["space-between",0,0,18],alignItems:["flex-end",0,0,18],flexDirection:["row",0,0,18],paddingTop:["16rpx",0,0,18],paddingRight:["30rpx",0,0,18],paddingBottom:["0rpx",0,0,18],paddingLeft:["30rpx",0,0,18]}},".address-list__heard__left":{"":{display:["flex",0,0,19],flexWrap:["wrap",0,0,19],justifyContent:["flex-start",0,0,19],alignItems:["flex-end",0,0,19],flexDirection:["row",0,0,19]}},".address-list__heard__left__text":{"":{fontFamily:["PingFangSC, PingFang SC",0,0,20],fontWeight:["400",0,0,20],fontSize:["28rpx",0,0,20],color:["#666666",0,0,20],lineHeight:["40rpx",0,0,20],textAlign:["left",0,0,20],fontStyle:["normal",0,0,20]}},".address-list__heard__left__img":{"":{height:["32rpx",0,0,21],width:["32rpx",0,0,21],marginRight:["12rpx",0,0,21],marginBottom:["7rpx",0,0,21]}},".address-list__heard__img":{"":{height:["28rpx",0,0,22],width:["30rpx",0,0,22],marginRight:["12rpx",0,0,22],marginBottom:["7rpx",0,0,22]}},".address-item":{"":{display:["flex",0,0,23],flexDirection:["row",0,0,23],flexWrap:["nowrap",0,0,23],justifyContent:["space-between",0,0,23],alignItems:["center",0,0,23],paddingTop:["20rpx",0,0,23],paddingRight:["0rpx",0,0,23],paddingBottom:["20rpx",0,0,23],paddingLeft:["0rpx",0,0,23],marginTop:[0,0,0,23],marginRight:["30rpx",0,0,23],marginBottom:[0,0,0,23],marginLeft:["30rpx",0,0,23],borderBottomWidth:["1rpx",0,0,23],borderBottomStyle:["solid",0,0,23],borderBottomColor:["#EEEEEE",0,0,23]}},".address-info":{"":{flex:[1,0,0,24],marginRight:["24rpx",0,0,24]}},".address-info__user":{"":{display:["flex",0,0,25],flexDirection:["row",0,0,25]},".address-info ":{marginBottom:["8rpx",0,1,26],alignItems:["center",0,1,26]}},".address-info__left":{".address-info ":{display:["flex",0,1,27],flexDirection:["row",0,1,27],alignItems:["center",0,1,27],justifyContent:["flex-start",0,1,27],marginBottom:["10rpx",0,1,27]}},".address-name":{"":{maxHeight:["600rpx",0,0,28],fontFamily:["PingFangSC, PingFang SC",0,0,28],fontWeight:["400",0,0,28],fontSize:["30rpx",0,0,28],color:["#333333",0,0,28],lineHeight:["40rpx",0,0,28],textAlign:["left",0,0,28],fontStyle:["normal",0,0,28],paddingRight:["20rpx",0,0,28],overflow:["hidden",0,0,28],textOverflow:["ellipsis",0,0,28],WebkitBoxOrient:["vertical",0,0,28],WebkitLineClamp:[1,0,0,28],lines:[1,0,0,28]}},".address-detail":{"":{width:["500rpx",0,0,29],height:["34rpx",0,0,29],fontFamily:["PingFangSC, PingFang SC",0,0,29],fontWeight:["400",0,0,29],fontSize:["26rpx",0,0,29],color:["#999999",0,0,29],lineHeight:["34rpx",0,0,29],textAlign:["left",0,0,29],overflow:["hidden",0,0,29],textOverflow:["ellipsis",0,0,29],WebkitBoxOrient:["vertical",0,0,29],WebkitLineClamp:[1,0,0,29],lines:[1,0,0,29]}},".distance-text":{"":{fontSize:["24rpx",0,0,30],color:["#999999",0,0,30]}},".map-container":{"":{width:["750rpx",0,0,31],height:["500rpx",0,0,31],position:["relative",0,0,31],zIndex:[1,0,0,31]}},".map":{"":{width:["750rpx",0,0,32],height:["500rpx",0,0,32]}},".empty-state":{"":{display:["flex",0,0,33],flexDirection:["column",0,0,33],alignItems:["center",0,0,33],justifyContent:["center",0,0,33],paddingTop:["200rpx",0,0,33]}},".empty-icon":{"":{width:["240rpx",0,0,34],height:["240rpx",0,0,34],marginBottom:["32rpx",0,0,34]}},".empty-text":{"":{fontSize:["30rpx",0,0,35],color:["#999999",0,0,35]}},".address-default":{"":{display:["flex",0,0,36],justifyContent:["center",0,0,36],alignItems:["center",0,0,36],alignContent:["center",0,0,36],flexDirection:["row",0,0,36],flexWrap:["nowrap",0,0,36],width:["48rpx",0,0,36],height:["26rpx",0,0,36],borderRadius:["6rpx",0,0,36],backgroundColor:["#E8101E",0,0,36],marginRight:["10rpx",0,0,36]}},".address-default__text":{"":{fontFamily:["PingFangSC, PingFang SC",0,0,37],fontWeight:["400",0,0,37],fontSize:["16rpx",0,0,37],lineHeight:["24rpx",0,0,37],color:["#FFFFFF",0,0,37],textAlign:["center",0,0,37],fontStyle:["normal",0,0,37]}},".permission":{".transform":{top:["220rpx",0,1,39],opacity:[1,0,1,39],visibility:["visible",0,1,39]}},"@VERSION":2}},2:function(e,t,c){"use strict";function i(e){var t=Object.prototype.toString.call(e);return t.substring(8,t.length-1)}function d(){return"string"==typeof __channelId__&&__channelId__}function r(e,t){switch(i(t)){case"Function":return"function() { [native code] }";default:return t}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){for(var e=arguments.length,t=new Array(e),c=0;c1){var o=n.pop();a=n.join("---COMMA---"),0===o.indexOf(" at ")?a+=o:a+="---COMMA---"+o}else a=n[0];console[s](a)},t.log=function(e){for(var t=arguments.length,c=new Array(t>1?t-1:0),i=1;i=0;--d){var r=this.tryEntries[d],n=r.completion;if("root"===r.tryLoc)return i("end");if(r.tryLoc<=this.prev){var a=s.call(r,"catchLoc"),o=s.call(r,"finallyLoc");if(a&&o){if(this.prev=0;--c){var i=this.tryEntries[c];if(i.tryLoc<=this.prev&&s.call(i,"finallyLoc")&&this.prev=0;--t){var c=this.tryEntries[t];if(c.finallyLoc===e)return this.complete(c.completion,c.afterLoc),h(c),S}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var c=this.tryEntries[t];if(c.tryLoc===e){var i=c.completion;if("throw"===i.type){var d=i.arg;h(c)}return d}}throw Error("illegal catch attempt")},delegateYield:function(e,c,i){return this.delegate={iterator:G(e),resultName:c,nextLoc:i},"next"===this.method&&(this.arg=t),S}},c}e.exports=d,e.exports.__esModule=!0,e.exports.default=e.exports},219:function(e,t,c){"use strict";c.d(t,"b",(function(){return d})),c.d(t,"c",(function(){return r})),c.d(t,"a",(function(){return i}));var i={customNavbar:c(22).default},d=function(){var e=this,t=e.$createElement,c=e._self._c||t;return c("scroll-view",{staticStyle:{flexDirection:"column"},attrs:{scrollY:!0,showScrollbar:!0,enableBackToTop:!0,bubble:"true"}},[c("view",{staticClass:["search-address-page"]},[c("custom-navbar",{attrs:{title:"\u9009\u62e9\u5730\u5740",showBack:!0,backgroundColor:"#FFFFFF"}}),c("view",{staticClass:["search-container"]},[c("u-text",{staticClass:["search-container-text"],appendAsTree:!0,attrs:{append:"tree"},on:{click:e.goSelectCity}},[e._v(e._s(e.city.name))]),c("u-image",{staticClass:["text-img"],attrs:{src:"/static/images/Fill.jpg",mode:"aspectFit"}}),c("view",{staticClass:["address-header"],on:{click:e.goSelectAddress}},[c("u-image",{staticClass:["search-icon"],attrs:{src:"/static/images/search_1.png",mode:"aspectFit"}}),c("u-text",{staticClass:["search-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8bf7\u8f93\u5165\u4f60\u7684\u670d\u52a1\u5730\u5740")])],1)],1),c("view",{staticClass:["current-locate"]},[c("view",{staticClass:["current-locate__heard"]},[c("u-image",{staticClass:["current-locate__heard__img"],attrs:{src:"/static/images/locate.jpg",mode:"aspectFit"}}),c("u-text",{staticClass:["current-locate__heard__text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u5f53\u524d\u5b9a\u4f4d")])],1),c("view",{staticClass:["current-locate__contact"]},[c("u-text",{staticClass:["current-locate__contact__left"],appendAsTree:!0,attrs:{append:"tree"},on:{click:function(t){e.selectNowAdress(e.nowCity)}}},[e._v(e._s(e.nowAddress))]),e.isLocation?c("u-image",{staticClass:["current-locate__contact__refresh"],attrs:{src:"/static/images/refresh.jpg",mode:"aspectFit"},on:{click:e.refreshAdress}}):c("u-text",{staticClass:["current-locate__contact__right"],appendAsTree:!0,attrs:{append:"tree"},on:{click:e.startLocate}},[e._v("\u5f00\u542f\u5b9a\u4f4d")])],1)]),e.searchResults?c("scroll-view",{staticClass:["address-list"],style:"height: "+e.listHeight+"px",attrs:{scrollY:!0}},[e.addressList.length>0?c("view",{staticClass:["address-list-box","address-list__cut"]},[e.addressList.length>0?c("view",{staticClass:["address-list__heard"]},[c("view",{staticClass:["address-list__heard__left"]},[c("u-image",{staticClass:["address-list__heard__left__img"],attrs:{src:"/static/images/locate.jpg",mode:"aspectFit"}}),c("u-text",{staticClass:["address-list__heard__left__text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u5e38\u7528\u4f4d\u7f6e")])],1),c("u-image",{staticClass:["address-list__heard__img"],attrs:{src:"/static/images/revise.png",mode:"aspectFit"},on:{click:e.goList}})],1):e._e(),e._l(e.addressList,(function(t,i){return c("view",{key:i+"_a",staticClass:["address-item"],on:{click:function(c){e.selectCommonAddress(t)}}},[c("view",{staticClass:["address-info"]},[c("view",{staticClass:["address-info__user"]},[1==t.is_default?c("view",{staticClass:["address-default"]},[c("u-text",{staticClass:["address-default__text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u9ed8\u8ba4")])]):e._e(),c("u-text",{staticClass:["address-name"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.name))]),c("u-text",{staticClass:["address-name"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.call_phone))])]),c("u-text",{staticClass:["address-detail"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.server_address))])])])}))],2):e._e(),c("view",{staticClass:["address-list-box"]},[c("view",{staticClass:["address-list__heard"]},[c("view",{staticClass:["address-list__heard__left"]},[c("u-image",{staticClass:["address-list__heard__left__img"],attrs:{src:"/static/images/locate.jpg",mode:"aspectFit"}}),c("u-text",{staticClass:["address-list__heard__left__text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u9644\u8fd1\u5730\u5740")])],1)]),e._l(e.searchResults,(function(t,i){return c("view",{key:i,staticClass:["address-item"],on:{click:function(c){e.selectAddress(t)}}},[c("view",{staticClass:["address-info"]},[c("view",{staticClass:["address-info__left"]},[c("u-text",{staticClass:["address-name"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.name))])]),c("u-text",{staticClass:["address-detail"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.address))])]),t.distance?c("view",{staticClass:["address-distance"]},[c("u-text",{staticClass:["distance-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.distance)+"m")])]):e._e()])}))],2)]):c("view",{staticClass:["empty-state"]},[c("u-image",{staticClass:["empty-icon"],attrs:{src:"/static/images/empty.png"}}),c("u-text",{staticClass:["empty-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u672a\u627e\u5230\u76f8\u5173\u5730\u5740")])],1),c("view",{staticClass:["permission"],class:{transform:e.isShowPer}},[c("u-text",{staticClass:["per-tit"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u7f8e\u878d\u878dplus \u5bf9\u7cbe\u786e\u5b9a\u4f4d\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),c("u-text",{staticClass:["per-cont"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u83b7\u53d6\u60a8\u9644\u8fd1\u7684\u624b\u827a\u4eba\u4ee5\u53ca\u5e97\u94fa\u4e0b\u7684\u670d\u52a1\u5185\u5bb9\u3002")])])],1)])},r=[]},22:function(e,t,c){"use strict";c.r(t);var i=c(11),d=c(8);for(var r in d)["default"].indexOf(r)<0&&function(e){c.d(t,e,(function(){return d[e]}))}(r);var s=c(0);var n=Object(s.a)(d.default,i.b,i.c,!1,null,null,"43cd5ac3",!1,i.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(c(14).default,this.options.style):Object.assign(this.options.style,c(14).default)}).call(n),t.default=n.exports},23:function(e,t,c){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getToken=function(){return uni.getStorageSync("accessToken")},t.removeToken=function(){uni.removeStorageSync("accessToken"),uni.removeStorageSync("refreshToken")},t.setToken=function(e){uni.setStorageSync("accessToken",e)}},24:function(e,t,c){"use strict";(function(e){var i=c(1);Object.defineProperty(t,"__esModule",{value:!0}),t.getBaseUrl=function(){return o.apply(this,arguments)},t.setVersion=function(){var t=uni.getSystemInfoSync();s=t.appWgtVersion,n=t.deviceBrand,e("log","DeviceType",n," at utils/version.js:26"),"android"===(a=t.platform)?a="sj_android":"ios"===a&&(a="sj_ios");var c={VersionCode:s||"",DeviceBrand:a||"",DeviceType:n||""};uni.setStorageSync("setVersion",c)};var d=i(c(3)),r=i(c(4)),s="",n="",a="";function o(){return(o=(0,r.default)(d.default.mark((function t(){var c;return d.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return c=uni.getStorageSync("setVersion"),t.next=3,uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:c.VersionCode,DeviceBrand:c.DeviceBrand,DeviceType:c.DeviceType},success:function(e){return 200==e.data.code&&uni.setStorageSync("baseUrl",e.data.data.url),e.data.data.url},fail:function(t){return e("log","\u8bf7\u6c42\u5931\u8d25",t," at utils/version.js:82"),"http://60.247.146.5:93"},complete:function(){e("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/version.js:86")}});case 3:case"end":return t.stop()}}),t)})))).apply(this,arguments)}}).call(this,c(2).default)},257:function(e,t,c){"use strict";c.r(t);var i=c(83),d=c(79);for(var r in d)["default"].indexOf(r)<0&&function(e){c.d(t,e,(function(){return d[e]}))}(r);var s=c(0);var n=Object(s.a)(d.default,i.b,i.c,!1,null,null,"6482e161",!1,i.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(c(123).default,this.options.style):Object.assign(this.options.style,c(123).default)}).call(n),t.default=n.exports},277:function(e,t,c){"use strict";c.r(t);var i=c(190),d=c.n(i);for(var r in i)["default"].indexOf(r)<0&&function(e){c.d(t,e,(function(){return i[e]}))}(r);t.default=d.a},28:function(e,t,c){"use strict";(function(e){var i=c(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var d=i(c(3)),r=i(c(4)),s={isLocationEnabled:function(){var e=this;return new Promise((function(t,c){e._checkAppLocation().then(t).catch(c)}))},_checkAppLocation:function(){return new Promise((function(t){plus.geolocation.getCurrentPosition((function(){return t(!0)}),(function(c){e("log",c,"---------------------"," at utils/locationService.js:48"),2===c.code||c.code,t(!1)}),{provider:"system",enableHighAccuracy:!1})}))},_checkWxLocation:function(){return new Promise((function(e){wx.getSetting({success:function(t){var c=t.authSetting||{};e(!1!==c["scope.userLocation"])},fail:function(){e(!1)}})}))},_checkH5Location:function(){return new Promise((function(e){navigator.permissions&&navigator.permissions.query?navigator.permissions.query({name:"geolocation"}).then((function(t){e("denied"!==t.state)})).catch((function(){e("geolocation"in navigator)})):e("geolocation"in navigator)}))},requestLocationPermission:function(){return new Promise((function(e){uni.authorize({scope:"scope.userLocation",success:function(){return e(!0)},fail:function(){return e(!1)}})}))},openSystemLocationSetting:function(){if("Android"===plus.os.name){var e=plus.android.importClass("android.content.Intent"),t=plus.android.importClass("android.provider.Settings"),c=plus.android.runtimeMainActivity(),i=new e(t.ACTION_LOCATION_SOURCE_SETTINGS);c.startActivity(i)}else if("iOS"===plus.os.name){var d=plus.ios.importClass("UIApplication"),r=plus.ios.importClass("NSURL").URLWithString("App-Prefs:root=Privacy&path=LOCATION"),s=d.sharedApplication();plus.ios.invoke(s,"openURL:",r)}},openAppSettings:function(){if("Android"===plus.os.name){var e=plus.android.importClass("android.content.Intent"),t=plus.android.importClass("android.provider.Settings"),c=plus.android.importClass("android.net.Uri"),i=plus.android.runtimeMainActivity(),d=new e;d.setAction(t.ACTION_APPLICATION_DETAILS_SETTINGS);var r=c.fromParts("package",i.getPackageName(),null);d.setData(r),i.startActivity(d)}else if("iOS"===plus.os.name){var s=plus.ios.invoke("UIApplication","sharedApplication"),n=plus.ios.invoke("NSURL","URLWithString:","app-settings:");plus.ios.invoke(s,"openURL:options:completionHandler:",n),plus.ios.deleteObject(n),plus.ios.deleteObject(s)}},getCurrentPosition:function(){var e=arguments,t=this;return(0,r.default)(d.default.mark((function c(){var i;return d.default.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return e.length>0&&void 0!==e[0]?e[0]:{},c.next=3,t.isLocationEnabled();case 3:if(i=c.sent){c.next=7;break}return c.abrupt("return",i);case 7:return c.abrupt("return",i);case 8:case"end":return c.stop()}}),c)})))()}};t.default=s}).call(this,c(2).default)},29:function(e,t,c){"use strict";(function(e){var i=c(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var d=i(c(3)),r=i(c(4)),s={checkPermission:function(e){var t=arguments,c=this;return(0,r.default)(d.default.mark((function i(){var r;return d.default.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return r=t.length>1&&void 0!==t[1]?t[1]:"",i.next=3,c._checkAppPermission(e,r);case 3:return i.abrupt("return",i.sent);case 4:case"end":return i.stop()}}),i)})))()},_checkAppPermission:function(t,c){var i=this;return(0,r.default)(d.default.mark((function r(){var s;return d.default.wrap((function(d){for(;;)switch(d.prev=d.next){case 0:if(s={camera:{android:"android.permission.CAMERA",ios:"camera"},location:{android:"android.permission.ACCESS_FINE_LOCATION",ios:"location"},phone:{android:"android.permission.CALL_PHONE",ios:"phone"},photo_library:{android:["android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE"],ios:"photo_library"}}[t]){d.next=5;break}return e("error","\u4e0d\u652f\u6301\u7684\u6743\u9650\u7c7b\u578b:",t," at utils/per.js:62"),d.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 5:if("Android"!==plus.os.name){d.next=9;break}return d.abrupt("return",i._checkAndroidPermission(s.android));case 9:return d.abrupt("return",i._checkIosPermission(s.ios,c));case 10:return d.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 11:case"end":return d.stop()}}),r)})))()},_checkAndroidPermission:function(t){return(0,r.default)(d.default.mark((function c(){return d.default.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.abrupt("return",new Promise((function(c){plus.android.requestPermissions(Array.isArray(t)?t:[t],(function(i){e("log","perm_".concat(t),i," at utils/per.js:85");var d=!plus.storage.getItem("perm_".concat(t));d&&plus.storage.setItem("perm_".concat(t),"1"),0!==i.deniedPresent.length&&plus.storage.setItem("perm_".concat(t,"_no"),"2"),0!==i.granted.length&&plus.storage.removeItem("perm_".concat(t,"_no"),"2"),c({granted:0!==i.granted.length,firstRequest:d,canRequest:!0})}),(function(e){c({granted:!1,firstRequest:!1,canRequest:!0})}))})));case 1:case"end":return c.stop()}}),c)})))()},_checkIosPermission:function(t,c){return(0,r.default)(d.default.mark((function c(){var i,r;return d.default.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:c.prev=0,c.t0=t,c.next="camera"===c.t0?4:"location"===c.t0?6:10;break;case 4:return i=plus.ios.invoke("AVCaptureDevice","authorizationStatusForMediaType:","vide"),c.abrupt("break",11);case 6:return r=plus.ios.newObject("CLLocationManager"),i=plus.ios.invoke(r,"authorizationStatus"),plus.ios.deleteObject(r),c.abrupt("break",11);case 10:return c.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 11:return c.abrupt("return",{granted:3===i,firstRequest:0===i,canRequest:2!==i});case 14:return c.prev=14,c.t1=c.catch(0),e("error","iOS\u6743\u9650\u68c0\u67e5\u9519\u8bef:",c.t1," at utils/per.js:146"),c.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 18:case"end":return c.stop()}}),c,null,[[0,14]])})))()},_checkMpPermission:function(e){return(0,r.default)(d.default.mark((function t(){var c;return d.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(c={camera:"scope.camera",location:"scope.userLocation",record:"scope.record"}[e]){t.next=4;break}return t.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 4:return t.abrupt("return",new Promise((function(e){uni.getSetting({success:function(t){var i=t.authSetting;e({granted:!0===i[c],firstRequest:void 0===i[c],canRequest:!1!==i[c]})},fail:function(){e({granted:!1,firstRequest:!1,canRequest:!1})}})})));case 5:case"end":return t.stop()}}),t)})))()},requestPermission:function(e){var t=arguments,c=this;return(0,r.default)(d.default.mark((function i(){var r,s,n,a;return d.default.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return r=t.length>1&&void 0!==t[1]?t[1]:"",i.next=3,c.checkPermission(e,r);case 3:if(s=i.sent,n=s.granted,s.firstRequest,a=s.canRequest,!n){i.next=9;break}return i.abrupt("return",!0);case 9:if(a){i.next=11;break}return i.abrupt("return",!1);case 11:return i.abrupt("return",c._requestAppPermission(e,r));case 12:case"end":return i.stop()}}),i)})))()},_requestAppPermission:function(e,t){return(0,r.default)(d.default.mark((function e(){return d.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",!1);case 1:case"end":return e.stop()}}),e)})))()},_requestMpPermission:function(e){return(0,r.default)(d.default.mark((function t(){var c;return d.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(c={camera:"scope.camera",location:"scope.userLocation",record:"scope.record"}[e]){t.next=4;break}return t.abrupt("return",!1);case 4:return t.abrupt("return",new Promise((function(e){uni.authorize({scope:c,success:function(){return e(!0)},fail:function(){return e(!1)}})})));case 5:case"end":return t.stop()}}),t)})))()},openSystemSettings:function(){if("Android"===plus.os.name){var e=plus.android.importClass("android.content.Intent"),t=plus.android.importClass("android.provider.Settings"),c=plus.android.importClass("android.net.Uri"),i=plus.android.runtimeMainActivity(),d=new e;d.setAction(t.ACTION_APPLICATION_DETAILS_SETTINGS);var r=c.fromParts("package",i.getPackageName(),null);d.setData(r),i.startActivity(d)}else{var s=plus.ios.import("UIApplication"),n=plus.ios.import("NSURL").URLWithString("app-settings:"),a=s.sharedApplication();plus.ios.invoke(a,"canOpenURL:",n)&&plus.ios.invoke(a,"openURL:",n),plus.ios.deleteObject(n),plus.ios.deleteObject(a)}}};t.default=s}).call(this,c(2).default)},3:function(e,t,c){var i=c(5),d=c(21)();e.exports=d;try{regeneratorRuntime=d}catch(e){"object"===("undefined"==typeof globalThis?"undefined":i(globalThis))?globalThis.regeneratorRuntime=d:Function("r","regeneratorRuntime = r")(d)}},305:function(e,t,c){"use strict";c.r(t);c(17),c(19);var i=c(131);i.default.mpType="page",i.default.route="pages/address/newSearch",i.default.el="#root",new Vue(i.default)},306:function(e){e.exports=JSON.parse('{"status":"1","info":"OK","infocode":"10000","count":"1","suggestion":{"keywords":[],"cities":[]},"districts":[{"citycode":[],"adcode":"100000","name":"\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd","center":"116.3683244,39.915085","level":"country","districts":[{"citycode":[],"adcode":"410000","name":"\u6cb3\u5357\u7701","center":"113.753094,34.767052","level":"province","districts":[{"citycode":"0379","adcode":"410300","name":"\u6d1b\u9633\u5e02","center":"112.453895,34.619702","level":"city","districts":[{"citycode":"0379","adcode":"410323","name":"\u65b0\u5b89\u53bf","center":"112.13246,34.728909","level":"district","districts":[]},{"citycode":"0379","adcode":"410324","name":"\u683e\u5ddd\u53bf","center":"111.615729,33.7857","level":"district","districts":[]},{"citycode":"0379","adcode":"410303","name":"\u897f\u5de5\u533a","center":"112.428183,34.659959","level":"district","districts":[]},{"citycode":"0379","adcode":"410329","name":"\u4f0a\u5ddd\u53bf","center":"112.425751,34.421741","level":"district","districts":[]},{"citycode":"0379","adcode":"410328","name":"\u6d1b\u5b81\u53bf","center":"111.652958,34.389371","level":"district","districts":[]},{"citycode":"0379","adcode":"410308","name":"\u5b5f\u6d25\u533a","center":"112.44525,34.825587","level":"district","districts":[]},{"citycode":"0379","adcode":"410302","name":"\u8001\u57ce\u533a","center":"112.469071,34.683645","level":"district","districts":[]},{"citycode":"0379","adcode":"410327","name":"\u5b9c\u9633\u53bf","center":"112.179187,34.51462","level":"district","districts":[]},{"citycode":"0379","adcode":"410304","name":"\u700d\u6cb3\u56de\u65cf\u533a","center":"112.500131,34.679773","level":"district","districts":[]},{"citycode":"0379","adcode":"410305","name":"\u6da7\u897f\u533a","center":"112.395766,34.658177","level":"district","districts":[]},{"citycode":"0379","adcode":"410311","name":"\u6d1b\u9f99\u533a","center":"112.463833,34.619711","level":"district","districts":[]},{"citycode":"0379","adcode":"410307","name":"\u5043\u5e08\u533a","center":"112.789375,34.72715","level":"district","districts":[]},{"citycode":"0379","adcode":"410326","name":"\u6c5d\u9633\u53bf","center":"112.473013,34.154283","level":"district","districts":[]},{"citycode":"0379","adcode":"410325","name":"\u5d69\u53bf","center":"112.085432,34.134639","level":"district","districts":[]}]},{"citycode":"0395","adcode":"411100","name":"\u6f2f\u6cb3\u5e02","center":"114.0166,33.58038","level":"city","districts":[{"citycode":"0395","adcode":"411122","name":"\u4e34\u988d\u53bf","center":"113.931121,33.828096","level":"district","districts":[]},{"citycode":"0395","adcode":"411103","name":"\u90fe\u57ce\u533a","center":"114.006596,33.587697","level":"district","districts":[]},{"citycode":"0395","adcode":"411121","name":"\u821e\u9633\u53bf","center":"113.609327,33.438259","level":"district","districts":[]},{"citycode":"0395","adcode":"411102","name":"\u6e90\u6c47\u533a","center":"113.984164,33.572319","level":"district","districts":[]},{"citycode":"0395","adcode":"411104","name":"\u53ec\u9675\u533a","center":"114.093879,33.586509","level":"district","districts":[]}]},{"citycode":"0377","adcode":"411300","name":"\u5357\u9633\u5e02","center":"112.584753,33.016102","level":"city","districts":[{"citycode":"0377","adcode":"411303","name":"\u5367\u9f99\u533a","center":"112.528524,32.990313","level":"district","districts":[]},{"citycode":"0377","adcode":"411328","name":"\u5510\u6cb3\u53bf","center":"112.80829,32.682464","level":"district","districts":[]},{"citycode":"0377","adcode":"411323","name":"\u897f\u5ce1\u53bf","center":"111.473644,33.307272","level":"district","districts":[]},{"citycode":"0377","adcode":"411321","name":"\u5357\u53ec\u53bf","center":"112.429277,33.489804","level":"district","districts":[]},{"citycode":"0377","adcode":"411326","name":"\u6dc5\u5ddd\u53bf","center":"111.490902,33.137831","level":"district","districts":[]},{"citycode":"0377","adcode":"411381","name":"\u9093\u5dde\u5e02","center":"112.08745,32.687732","level":"district","districts":[]},{"citycode":"0377","adcode":"411330","name":"\u6850\u67cf\u53bf","center":"113.428702,32.379164","level":"district","districts":[]},{"citycode":"0377","adcode":"411327","name":"\u793e\u65d7\u53bf","center":"112.948183,33.056229","level":"district","districts":[]},{"citycode":"0377","adcode":"411302","name":"\u5b9b\u57ce\u533a","center":"112.539506,33.003564","level":"district","districts":[]},{"citycode":"0377","adcode":"411324","name":"\u9547\u5e73\u53bf","center":"112.234571,33.033826","level":"district","districts":[]},{"citycode":"0377","adcode":"411325","name":"\u5185\u4e61\u53bf","center":"111.849354,33.044698","level":"district","districts":[]},{"citycode":"0377","adcode":"411322","name":"\u65b9\u57ce\u53bf","center":"113.012849,33.255387","level":"district","districts":[]},{"citycode":"0377","adcode":"411329","name":"\u65b0\u91ce\u53bf","center":"112.3601,32.521282","level":"district","districts":[]}]},{"citycode":"0376","adcode":"411500","name":"\u4fe1\u9633\u5e02","center":"114.091058,32.148624","level":"city","districts":[{"citycode":"0376","adcode":"411502","name":"\u6d49\u6cb3\u533a","center":"114.05867,32.116885","level":"district","districts":[]},{"citycode":"0376","adcode":"411503","name":"\u5e73\u6865\u533a","center":"114.125595,32.101005","level":"district","districts":[]},{"citycode":"0376","adcode":"411527","name":"\u6dee\u6ee8\u53bf","center":"115.420101,32.474772","level":"district","districts":[]},{"citycode":"0376","adcode":"411528","name":"\u606f\u53bf","center":"114.740392,32.34312","level":"district","districts":[]},{"citycode":"0376","adcode":"411526","name":"\u6f62\u5ddd\u53bf","center":"115.051683,32.131426","level":"district","districts":[]},{"citycode":"0376","adcode":"411525","name":"\u56fa\u59cb\u53bf","center":"115.654066,32.169239","level":"district","districts":[]},{"citycode":"0376","adcode":"411523","name":"\u65b0\u53bf","center":"114.879309,31.643914","level":"district","districts":[]},{"citycode":"0376","adcode":"411524","name":"\u5546\u57ce\u53bf","center":"115.406894,31.79832","level":"district","districts":[]},{"citycode":"0376","adcode":"411522","name":"\u5149\u5c71\u53bf","center":"114.91934,32.010736","level":"district","districts":[]},{"citycode":"0376","adcode":"411521","name":"\u7f57\u5c71\u53bf","center":"114.512838,32.20436","level":"district","districts":[]}]},{"citycode":"0393","adcode":"410900","name":"\u6fee\u9633\u5e02","center":"115.029246,35.762731","level":"city","districts":[{"citycode":"0393","adcode":"410926","name":"\u8303\u53bf","center":"115.504081,35.85302","level":"district","districts":[]},{"citycode":"0393","adcode":"410927","name":"\u53f0\u524d\u53bf","center":"115.871671,35.970286","level":"district","districts":[]},{"citycode":"0393","adcode":"410923","name":"\u5357\u4e50\u53bf","center":"115.205876,36.070219","level":"district","districts":[]},{"citycode":"0393","adcode":"410922","name":"\u6e05\u4e30\u53bf","center":"115.104602,35.886694","level":"district","districts":[]},{"citycode":"0393","adcode":"410902","name":"\u534e\u9f99\u533a","center":"115.074453,35.778289","level":"district","districts":[]},{"citycode":"0393","adcode":"410928","name":"\u6fee\u9633\u53bf","center":"115.029165,35.713113","level":"district","districts":[]}]},{"citycode":"0371","adcode":"410100","name":"\u90d1\u5dde\u5e02","center":"113.625351,34.746303","level":"city","districts":[{"citycode":"0371","adcode":"410185","name":"\u767b\u5c01\u5e02","center":"113.05056,34.454877","level":"district","districts":[]},{"citycode":"0371","adcode":"410122","name":"\u4e2d\u725f\u53bf","center":"113.975798,34.720535","level":"district","districts":[]},{"citycode":"0371","adcode":"410108","name":"\u60e0\u6d4e\u533a","center":"113.617055,34.867994","level":"district","districts":[]},{"citycode":"0371","adcode":"410106","name":"\u4e0a\u8857\u533a","center":"113.309185,34.803514","level":"district","districts":[]},{"citycode":"0371","adcode":"410102","name":"\u4e2d\u539f\u533a","center":"113.612966,34.74828","level":"district","districts":[]},{"citycode":"0371","adcode":"410182","name":"\u8365\u9633\u5e02","center":"113.383385,34.7866","level":"district","districts":[]},{"citycode":"0371","adcode":"410183","name":"\u65b0\u5bc6\u5e02","center":"113.390932,34.540216","level":"district","districts":[]},{"citycode":"0371","adcode":"410103","name":"\u4e8c\u4e03\u533a","center":"113.640177,34.724138","level":"district","districts":[]},{"citycode":"0371","adcode":"410105","name":"\u91d1\u6c34\u533a","center":"113.6603,34.800415","level":"district","districts":[]},{"citycode":"0371","adcode":"410181","name":"\u5de9\u4e49\u5e02","center":"113.022354,34.748207","level":"district","districts":[]},{"citycode":"0371","adcode":"410184","name":"\u65b0\u90d1\u5e02","center":"113.74024,34.396479","level":"district","districts":[]},{"citycode":"0371","adcode":"410104","name":"\u7ba1\u57ce\u56de\u65cf\u533a","center":"113.677446,34.754436","level":"district","districts":[]}]},{"citycode":"0398","adcode":"411200","name":"\u4e09\u95e8\u5ce1\u5e02","center":"111.200482,34.773196","level":"city","districts":[{"citycode":"0398","adcode":"411221","name":"\u6e11\u6c60\u53bf","center":"111.761753,34.767937","level":"district","districts":[]},{"citycode":"0398","adcode":"411202","name":"\u6e56\u6ee8\u533a","center":"111.188552,34.771296","level":"district","districts":[]},{"citycode":"0398","adcode":"411203","name":"\u9655\u5dde\u533a","center":"111.103252,34.72066","level":"district","districts":[]},{"citycode":"0398","adcode":"411224","name":"\u5362\u6c0f\u53bf","center":"111.04522,34.051866","level":"district","districts":[]},{"citycode":"0398","adcode":"411282","name":"\u7075\u5b9d\u5e02","center":"110.894225,34.517734","level":"district","districts":[]},{"citycode":"0398","adcode":"411281","name":"\u4e49\u9a6c\u5e02","center":"111.874726,34.747563","level":"district","districts":[]}]},{"citycode":"1391","adcode":"419001","name":"\u6d4e\u6e90\u5e02","center":"112.602347,35.069057","level":"city","districts":[{"citycode":"1391","adcode":"419001","name":"\u5761\u5934\u9547","center":"112.580245,35.063381","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u68a8\u6797\u9547","center":"112.753220,35.088183","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u601d\u793c\u9547","center":"112.388078,35.210276","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u4e94\u9f99\u53e3\u9547","center":"112.761264,35.195598","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u738b\u5c4b\u9547","center":"112.168531,35.124376","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u7389\u6cc9\u8857\u9053","center":"112.623553,35.118882","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u8f75\u57ce\u9547","center":"112.622105,35.062530","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u6d4e\u6c34\u8857\u9053","center":"112.595477,35.094386","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u6c81\u56ed\u8857\u9053","center":"112.593210,35.082244","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u4e0b\u51b6\u9547","center":"112.212297,35.113088","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u514b\u4e95\u9547","center":"112.634910,35.255031","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u5929\u575b\u8857\u9053","center":"112.566796,35.122905","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u90b5\u539f\u9547","center":"112.114016,35.270480","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u5317\u6d77\u8857\u9053","center":"112.568975,35.111552","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u627f\u7559\u9547","center":"112.508612,35.024328","level":"street","districts":[]},{"citycode":"1391","adcode":"419001","name":"\u5927\u5cea\u9547","center":"112.318910,35.079253","level":"street","districts":[]}]},{"citycode":"0374","adcode":"411000","name":"\u8bb8\u660c\u5e02","center":"113.852004,34.03732","level":"city","districts":[{"citycode":"0374","adcode":"411003","name":"\u5efa\u5b89\u533a","center":"113.822869,34.124729","level":"district","districts":[]},{"citycode":"0374","adcode":"411025","name":"\u8944\u57ce\u53bf","center":"113.506904,33.851609","level":"district","districts":[]},{"citycode":"0374","adcode":"411081","name":"\u79b9\u5dde\u5e02","center":"113.488715,34.142442","level":"district","districts":[]},{"citycode":"0374","adcode":"411002","name":"\u9b4f\u90fd\u533a","center":"113.830826,34.047189","level":"district","districts":[]},{"citycode":"0374","adcode":"411024","name":"\u9122\u9675\u53bf","center":"114.177329,34.102985","level":"district","districts":[]},{"citycode":"0374","adcode":"411082","name":"\u957f\u845b\u5e02","center":"113.813972,34.195458","level":"district","districts":[]}]},{"citycode":"0372","adcode":"410500","name":"\u5b89\u9633\u5e02","center":"114.39248,36.098779","level":"city","districts":[{"citycode":"0372","adcode":"410581","name":"\u6797\u5dde\u5e02","center":"113.819275,36.084127","level":"district","districts":[]},{"citycode":"0372","adcode":"410502","name":"\u6587\u5cf0\u533a","center":"114.356967,36.090593","level":"district","districts":[]},{"citycode":"0372","adcode":"410503","name":"\u5317\u5173\u533a","center":"114.355742,36.10766","level":"district","districts":[]},{"citycode":"0372","adcode":"410522","name":"\u5b89\u9633\u53bf","center":"114.462953,36.09211","level":"district","districts":[]},{"citycode":"0372","adcode":"410505","name":"\u6bb7\u90fd\u533a","center":"114.303454,36.109938","level":"district","districts":[]},{"citycode":"0372","adcode":"410506","name":"\u9f99\u5b89\u533a","center":"114.301037,36.076937","level":"district","districts":[]},{"citycode":"0372","adcode":"410523","name":"\u6c64\u9634\u53bf","center":"114.357686,35.925155","level":"district","districts":[]},{"citycode":"0372","adcode":"410527","name":"\u5185\u9ec4\u53bf","center":"114.90146,35.972016","level":"district","districts":[]},{"citycode":"0372","adcode":"410526","name":"\u6ed1\u53bf","center":"114.517977,35.576128","level":"district","districts":[]}]},{"citycode":"0392","adcode":"410600","name":"\u9e64\u58c1\u5e02","center":"114.297305,35.748329","level":"city","districts":[{"citycode":"0392","adcode":"410622","name":"\u6dc7\u53bf","center":"114.208851,35.622571","level":"district","districts":[]},{"citycode":"0392","adcode":"410602","name":"\u9e64\u5c71\u533a","center":"114.163133,35.954647","level":"district","districts":[]},{"citycode":"0392","adcode":"410603","name":"\u5c71\u57ce\u533a","center":"114.184391,35.897862","level":"district","districts":[]},{"citycode":"0392","adcode":"410611","name":"\u6dc7\u6ee8\u533a","center":"114.298748,35.741763","level":"district","districts":[]},{"citycode":"0392","adcode":"410621","name":"\u6d5a\u53bf","center":"114.550611,35.677249","level":"district","districts":[]}]},{"citycode":"0391","adcode":"410800","name":"\u7126\u4f5c\u5e02","center":"113.241902,35.215726","level":"city","districts":[{"citycode":"0391","adcode":"410803","name":"\u4e2d\u7ad9\u533a","center":"113.182847,35.237227","level":"district","districts":[]},{"citycode":"0391","adcode":"410804","name":"\u9a6c\u6751\u533a","center":"113.32212,35.257084","level":"district","districts":[]},{"citycode":"0391","adcode":"410802","name":"\u89e3\u653e\u533a","center":"113.230555,35.240403","level":"district","districts":[]},{"citycode":"0391","adcode":"410883","name":"\u5b5f\u5dde\u5e02","center":"112.791372,34.907229","level":"district","districts":[]},{"citycode":"0391","adcode":"410822","name":"\u535a\u7231\u53bf","center":"113.064701,35.170332","level":"district","districts":[]},{"citycode":"0391","adcode":"410811","name":"\u5c71\u9633\u533a","center":"113.254581,35.215054","level":"district","districts":[]},{"citycode":"0391","adcode":"410882","name":"\u6c81\u9633\u5e02","center":"112.950873,35.087569","level":"district","districts":[]},{"citycode":"0391","adcode":"410825","name":"\u6e29\u53bf","center":"113.08067,34.93961","level":"district","districts":[]},{"citycode":"0391","adcode":"410821","name":"\u4fee\u6b66\u53bf","center":"113.447862,35.22286","level":"district","districts":[]},{"citycode":"0391","adcode":"410823","name":"\u6b66\u965f\u53bf","center":"113.401848,35.099458","level":"district","districts":[]}]},{"citycode":"0373","adcode":"410700","name":"\u65b0\u4e61\u5e02","center":"113.92679,35.303589","level":"city","districts":[{"citycode":"0373","adcode":"410703","name":"\u536b\u6ee8\u533a","center":"113.865666,35.301796","level":"district","districts":[]},{"citycode":"0373","adcode":"410726","name":"\u5ef6\u6d25\u53bf","center":"114.205624,35.165876","level":"district","districts":[]},{"citycode":"0373","adcode":"410721","name":"\u65b0\u4e61\u53bf","center":"113.813884,35.170066","level":"district","districts":[]},{"citycode":"0373","adcode":"410704","name":"\u51e4\u6cc9\u533a","center":"113.916183,35.384428","level":"district","districts":[]},{"citycode":"0373","adcode":"410702","name":"\u7ea2\u65d7\u533a","center":"113.983358,35.306182","level":"district","districts":[]},{"citycode":"0373","adcode":"410711","name":"\u7267\u91ce\u533a","center":"113.908561,35.315614","level":"district","districts":[]},{"citycode":"0373","adcode":"410781","name":"\u536b\u8f89\u5e02","center":"114.064584,35.398357","level":"district","districts":[]},{"citycode":"0373","adcode":"410782","name":"\u8f89\u53bf\u5e02","center":"113.80572,35.462964","level":"district","districts":[]},{"citycode":"0373","adcode":"410724","name":"\u83b7\u5609\u53bf","center":"113.657551,35.260153","level":"district","districts":[]},{"citycode":"0373","adcode":"410783","name":"\u957f\u57a3\u5e02","center":"114.66885,35.201628","level":"district","districts":[]},{"citycode":"0373","adcode":"410725","name":"\u539f\u9633\u53bf","center":"113.939829,35.066873","level":"district","districts":[]},{"citycode":"0373","adcode":"410727","name":"\u5c01\u4e18\u53bf","center":"114.418907,35.041237","level":"district","districts":[]}]},{"citycode":"0378","adcode":"410200","name":"\u5f00\u5c01\u5e02","center":"114.314278,34.798083","level":"city","districts":[{"citycode":"0378","adcode":"410223","name":"\u5c09\u6c0f\u53bf","center":"114.19305,34.411437","level":"district","districts":[]},{"citycode":"0378","adcode":"410204","name":"\u9f13\u697c\u533a","center":"114.348356,34.788473","level":"district","districts":[]},{"citycode":"0378","adcode":"410205","name":"\u79b9\u738b\u53f0\u533a","center":"114.348105,34.777052","level":"district","districts":[]},{"citycode":"0378","adcode":"410203","name":"\u987a\u6cb3\u56de\u65cf\u533a","center":"114.360824,34.795933","level":"district","districts":[]},{"citycode":"0378","adcode":"410222","name":"\u901a\u8bb8\u53bf","center":"114.47315,34.502053","level":"district","districts":[]},{"citycode":"0378","adcode":"410202","name":"\u9f99\u4ead\u533a","center":"114.355378,34.815515","level":"district","districts":[]},{"citycode":"0378","adcode":"410212","name":"\u7965\u7b26\u533a","center":"114.441406,34.757546","level":"district","districts":[]},{"citycode":"0378","adcode":"410225","name":"\u5170\u8003\u53bf","center":"114.818228,34.856372","level":"district","districts":[]},{"citycode":"0378","adcode":"410221","name":"\u675e\u53bf","center":"114.782629,34.549731","level":"district","districts":[]}]},{"citycode":"0370","adcode":"411400","name":"\u5546\u4e18\u5e02","center":"115.656358,34.415165","level":"city","districts":[{"citycode":"0370","adcode":"411481","name":"\u6c38\u57ce\u5e02","center":"116.449864,33.929927","level":"district","districts":[]},{"citycode":"0370","adcode":"411421","name":"\u6c11\u6743\u53bf","center":"115.175019,34.648384","level":"district","districts":[]},{"citycode":"0370","adcode":"411423","name":"\u5b81\u9675\u53bf","center":"115.314221,34.461226","level":"district","districts":[]},{"citycode":"0370","adcode":"411426","name":"\u590f\u9091\u53bf","center":"116.131422,34.237801","level":"district","districts":[]},{"citycode":"0370","adcode":"411402","name":"\u6881\u56ed\u533a","center":"115.613609,34.444519","level":"district","districts":[]},{"citycode":"0370","adcode":"411403","name":"\u7762\u9633\u533a","center":"115.653258,34.389048","level":"district","districts":[]},{"citycode":"0370","adcode":"411425","name":"\u865e\u57ce\u53bf","center":"115.828519,34.400868","level":"district","districts":[]},{"citycode":"0370","adcode":"411422","name":"\u7762\u53bf","center":"115.071957,34.446572","level":"district","districts":[]},{"citycode":"0370","adcode":"411424","name":"\u67d8\u57ce\u53bf","center":"115.305182,34.092015","level":"district","districts":[]}]},{"citycode":"0394","adcode":"411600","name":"\u5468\u53e3\u5e02","center":"114.701222,33.634652","level":"city","districts":[{"citycode":"0394","adcode":"411621","name":"\u6276\u6c9f\u53bf","center":"114.394666,34.060062","level":"district","districts":[]},{"citycode":"0394","adcode":"411603","name":"\u6dee\u9633\u533a","center":"114.852604,33.731543","level":"district","districts":[]},{"citycode":"0394","adcode":"411625","name":"\u90f8\u57ce\u53bf","center":"115.177141,33.64601","level":"district","districts":[]},{"citycode":"0394","adcode":"411602","name":"\u5ddd\u6c47\u533a","center":"114.650551,33.647679","level":"district","districts":[]},{"citycode":"0394","adcode":"411624","name":"\u6c88\u4e18\u53bf","center":"115.098541,33.409805","level":"district","districts":[]},{"citycode":"0394","adcode":"411628","name":"\u9e7f\u9091\u53bf","center":"115.484525,33.860698","level":"district","districts":[]},{"citycode":"0394","adcode":"411627","name":"\u592a\u5eb7\u53bf","center":"114.837946,34.064513","level":"district","districts":[]},{"citycode":"0394","adcode":"411681","name":"\u9879\u57ce\u5e02","center":"114.875128,33.465609","level":"district","districts":[]},{"citycode":"0394","adcode":"411623","name":"\u5546\u6c34\u53bf","center":"114.608135,33.562072","level":"district","districts":[]},{"citycode":"0394","adcode":"411622","name":"\u897f\u534e\u53bf","center":"114.529709,33.768277","level":"district","districts":[]}]},{"citycode":"0396","adcode":"411700","name":"\u9a7b\u9a6c\u5e97\u5e02","center":"114.021988,33.014038","level":"city","districts":[{"citycode":"0396","adcode":"411723","name":"\u5e73\u8206\u53bf","center":"114.618537,32.96344","level":"district","districts":[]},{"citycode":"0396","adcode":"411702","name":"\u9a7f\u57ce\u533a","center":"113.993753,32.97455","level":"district","districts":[]},{"citycode":"0396","adcode":"411721","name":"\u897f\u5e73\u53bf","center":"114.021492,33.387658","level":"district","districts":[]},{"citycode":"0396","adcode":"411728","name":"\u9042\u5e73\u53bf","center":"114.013323,33.146316","level":"district","districts":[]},{"citycode":"0396","adcode":"411722","name":"\u4e0a\u8521\u53bf","center":"114.264381,33.262439","level":"district","districts":[]},{"citycode":"0396","adcode":"411727","name":"\u6c5d\u5357\u53bf","center":"114.362477,33.006808","level":"district","districts":[]},{"citycode":"0396","adcode":"411726","name":"\u6ccc\u9633\u53bf","center":"113.327144,32.723974","level":"district","districts":[]},{"citycode":"0396","adcode":"411725","name":"\u786e\u5c71\u53bf","center":"114.016818,32.82134","level":"district","districts":[]},{"citycode":"0396","adcode":"411724","name":"\u6b63\u9633\u53bf","center":"114.392774,32.605697","level":"district","districts":[]},{"citycode":"0396","adcode":"411729","name":"\u65b0\u8521\u53bf","center":"114.965519,32.74488","level":"district","districts":[]}]},{"citycode":"0375","adcode":"410400","name":"\u5e73\u9876\u5c71\u5e02","center":"113.192595,33.766554","level":"city","districts":[{"citycode":"0375","adcode":"410404","name":"\u77f3\u9f99\u533a","center":"112.898845,33.899247","level":"district","districts":[]},{"citycode":"0375","adcode":"410421","name":"\u5b9d\u4e30\u53bf","center":"113.054538,33.869159","level":"district","districts":[]},{"citycode":"0375","adcode":"410425","name":"\u90cf\u53bf","center":"113.21261,33.971787","level":"district","districts":[]},{"citycode":"0375","adcode":"410403","name":"\u536b\u4e1c\u533a","center":"113.335316,33.735388","level":"district","districts":[]},{"citycode":"0375","adcode":"410422","name":"\u53f6\u53bf","center":"113.357476,33.627437","level":"district","districts":[]},{"citycode":"0375","adcode":"410402","name":"\u65b0\u534e\u533a","center":"113.296956,33.736486","level":"district","districts":[]},{"citycode":"0375","adcode":"410423","name":"\u9c81\u5c71\u53bf","center":"112.908052,33.738434","level":"district","districts":[]},{"citycode":"0375","adcode":"410411","name":"\u6e5b\u6cb3\u533a","center":"113.3208727,33.72568115","level":"district","districts":[]},{"citycode":"0375","adcode":"410482","name":"\u6c5d\u5dde\u5e02","center":"112.844696,34.16717","level":"district","districts":[]},{"citycode":"0375","adcode":"410481","name":"\u821e\u94a2\u5e02","center":"113.516427,33.314147","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"440000","name":"\u5e7f\u4e1c\u7701","center":"113.266887,23.133306","level":"province","districts":[{"citycode":"0754","adcode":"440500","name":"\u6c55\u5934\u5e02","center":"116.681956,23.354152","level":"city","districts":[{"citycode":"0754","adcode":"440515","name":"\u6f84\u6d77\u533a","center":"116.755945,23.466314","level":"district","districts":[]},{"citycode":"0754","adcode":"440512","name":"\u6fe0\u6c5f\u533a","center":"116.726701,23.286605","level":"district","districts":[]},{"citycode":"0754","adcode":"440523","name":"\u5357\u6fb3\u53bf","center":"117.023482,23.421658","level":"district","districts":[]},{"citycode":"0754","adcode":"440507","name":"\u9f99\u6e56\u533a","center":"116.716464,23.372211","level":"district","districts":[]},{"citycode":"0754","adcode":"440511","name":"\u91d1\u5e73\u533a","center":"116.70341,23.365716","level":"district","districts":[]},{"citycode":"0754","adcode":"440513","name":"\u6f6e\u9633\u533a","center":"116.601677,23.264923","level":"district","districts":[]},{"citycode":"0754","adcode":"440514","name":"\u6f6e\u5357\u533a","center":"116.439105,23.239196","level":"district","districts":[]}]},{"citycode":"0757","adcode":"440600","name":"\u4f5b\u5c71\u5e02","center":"113.121586,23.021351","level":"city","districts":[{"citycode":"0757","adcode":"440608","name":"\u9ad8\u660e\u533a","center":"112.892573,22.900047","level":"district","districts":[]},{"citycode":"0757","adcode":"440607","name":"\u4e09\u6c34\u533a","center":"112.897271,23.156675","level":"district","districts":[]},{"citycode":"0757","adcode":"440605","name":"\u5357\u6d77\u533a","center":"113.143246,23.028875","level":"district","districts":[]},{"citycode":"0757","adcode":"440606","name":"\u987a\u5fb7\u533a","center":"113.293197,22.805413","level":"district","districts":[]},{"citycode":"0757","adcode":"440604","name":"\u7985\u57ce\u533a","center":"113.122532,23.009475","level":"district","districts":[]}]},{"citycode":"0758","adcode":"441200","name":"\u8087\u5e86\u5e02","center":"112.465245,23.047747","level":"city","districts":[{"citycode":"0758","adcode":"441225","name":"\u5c01\u5f00\u53bf","center":"111.512177,23.423928","level":"district","districts":[]},{"citycode":"0758","adcode":"441226","name":"\u5fb7\u5e86\u53bf","center":"111.785544,23.145035","level":"district","districts":[]},{"citycode":"0758","adcode":"441202","name":"\u7aef\u5dde\u533a","center":"112.485577,23.051847","level":"district","districts":[]},{"citycode":"0758","adcode":"441204","name":"\u9ad8\u8981\u533a","center":"112.458055,23.02474","level":"district","districts":[]},{"citycode":"0758","adcode":"441224","name":"\u6000\u96c6\u53bf","center":"112.166908,23.920806","level":"district","districts":[]},{"citycode":"0758","adcode":"441203","name":"\u9f0e\u6e56\u533a","center":"112.56738,23.159062","level":"district","districts":[]},{"citycode":"0758","adcode":"441223","name":"\u5e7f\u5b81\u53bf","center":"112.440694,23.634808","level":"district","districts":[]},{"citycode":"0758","adcode":"441284","name":"\u56db\u4f1a\u5e02","center":"112.734309,23.326991","level":"district","districts":[]}]},{"citycode":"0752","adcode":"441300","name":"\u60e0\u5dde\u5e02","center":"114.415587,23.112368","level":"city","districts":[{"citycode":"0752","adcode":"441323","name":"\u60e0\u4e1c\u53bf","center":"114.720136,22.984831","level":"district","districts":[]},{"citycode":"0752","adcode":"441303","name":"\u60e0\u9633\u533a","center":"114.456107,22.789431","level":"district","districts":[]},{"citycode":"0752","adcode":"441302","name":"\u60e0\u57ce\u533a","center":"114.382526,23.084657","level":"district","districts":[]},{"citycode":"0752","adcode":"441324","name":"\u9f99\u95e8\u53bf","center":"114.254898,23.727873","level":"district","districts":[]},{"citycode":"0752","adcode":"441322","name":"\u535a\u7f57\u53bf","center":"114.289602,23.172587","level":"district","districts":[]}]},{"citycode":"0755","adcode":"440300","name":"\u6df1\u5733\u5e02","center":"114.057939,22.543527","level":"city","districts":[{"citycode":"0755","adcode":"440306","name":"\u5b9d\u5b89\u533a","center":"113.883831,22.554986","level":"district","districts":[]},{"citycode":"0755","adcode":"440305","name":"\u5357\u5c71\u533a","center":"113.930478,22.533191","level":"district","districts":[]},{"citycode":"0755","adcode":"440307","name":"\u9f99\u5c97\u533a","center":"114.246884,22.720889","level":"district","districts":[]},{"citycode":"0755","adcode":"440311","name":"\u5149\u660e\u533a","center":"113.94733,22.744136","level":"district","districts":[]},{"citycode":"0755","adcode":"440304","name":"\u798f\u7530\u533a","center":"114.055198,22.520922","level":"district","districts":[]},{"citycode":"0755","adcode":"440303","name":"\u7f57\u6e56\u533a","center":"114.131611,22.548309","level":"district","districts":[]},{"citycode":"0755","adcode":"440308","name":"\u76d0\u7530\u533a","center":"114.236739,22.557001","level":"district","districts":[]},{"citycode":"0755","adcode":"440310","name":"\u576a\u5c71\u533a","center":"114.350844,22.708786","level":"district","districts":[]},{"citycode":"0755","adcode":"440309","name":"\u9f99\u534e\u533a","center":"114.04491,22.696735","level":"district","districts":[]}]},{"citycode":"0756","adcode":"440400","name":"\u73e0\u6d77\u5e02","center":"113.576892,22.271644","level":"city","districts":[{"citycode":"0756","adcode":"440402","name":"\u9999\u6d32\u533a","center":"113.543372,22.265635","level":"district","districts":[]},{"citycode":"0756","adcode":"440403","name":"\u6597\u95e8\u533a","center":"113.296228,22.209134","level":"district","districts":[]},{"citycode":"0756","adcode":"440404","name":"\u91d1\u6e7e\u533a","center":"113.363224,22.146717","level":"district","districts":[]},{"citycode":[],"adcode":"440499","name":"\u6fb3\u95e8\u5927\u5b66\u6a2a\u7434\u6821\u533a(\u7531\u6fb3\u95e8\u5b9e\u65bd\u7ba1\u8f96)","center":"113.548956,22.126197","level":"district","districts":[]}]},{"citycode":"0750","adcode":"440700","name":"\u6c5f\u95e8\u5e02","center":"113.081548,22.578948","level":"city","districts":[{"citycode":"0750","adcode":"440781","name":"\u53f0\u5c71\u5e02","center":"112.793812,22.251947","level":"district","districts":[]},{"citycode":"0750","adcode":"440704","name":"\u6c5f\u6d77\u533a","center":"113.111029,22.561301","level":"district","districts":[]},{"citycode":"0750","adcode":"440785","name":"\u6069\u5e73\u5e02","center":"112.304904,22.183743","level":"district","districts":[]},{"citycode":"0750","adcode":"440784","name":"\u9e64\u5c71\u5e02","center":"112.964203,22.765912","level":"district","districts":[]},{"citycode":"0750","adcode":"440705","name":"\u65b0\u4f1a\u533a","center":"113.034454,22.458519","level":"district","districts":[]},{"citycode":"0750","adcode":"440703","name":"\u84ec\u6c5f\u533a","center":"113.078914,22.595285","level":"district","districts":[]},{"citycode":"0750","adcode":"440783","name":"\u5f00\u5e73\u5e02","center":"112.698113,22.377378","level":"district","districts":[]}]},{"citycode":"0662","adcode":"441700","name":"\u9633\u6c5f\u5e02","center":"111.98343,21.856853","level":"city","districts":[{"citycode":"0662","adcode":"441721","name":"\u9633\u897f\u53bf","center":"111.617696,21.753935","level":"district","districts":[]},{"citycode":"0662","adcode":"441702","name":"\u6c5f\u57ce\u533a","center":"111.95486,21.862451","level":"district","districts":[]},{"citycode":"0662","adcode":"441704","name":"\u9633\u4e1c\u533a","center":"112.005586,21.869081","level":"district","districts":[]},{"citycode":"0662","adcode":"441781","name":"\u9633\u6625\u5e02","center":"111.791587,22.17041","level":"district","districts":[]}]},{"citycode":"0668","adcode":"440900","name":"\u8302\u540d\u5e02","center":"110.925533,21.662728","level":"city","districts":[{"citycode":"0668","adcode":"440982","name":"\u5316\u5dde\u5e02","center":"110.639581,21.664483","level":"district","districts":[]},{"citycode":"0668","adcode":"440904","name":"\u7535\u767d\u533a","center":"111.013368,21.513946","level":"district","districts":[]},{"citycode":"0668","adcode":"440981","name":"\u9ad8\u5dde\u5e02","center":"110.85402,21.919654","level":"district","districts":[]},{"citycode":"0668","adcode":"440983","name":"\u4fe1\u5b9c\u5e02","center":"110.946866,22.354887","level":"district","districts":[]},{"citycode":"0668","adcode":"440902","name":"\u8302\u5357\u533a","center":"110.918566,21.641661","level":"district","districts":[]}]},{"citycode":"0759","adcode":"440800","name":"\u6e5b\u6c5f\u5e02","center":"110.357538,21.270108","level":"city","districts":[{"citycode":"0759","adcode":"440883","name":"\u5434\u5ddd\u5e02","center":"110.779361,21.440763","level":"district","districts":[]},{"citycode":"0759","adcode":"440811","name":"\u9ebb\u7ae0\u533a","center":"110.333833,21.26437","level":"district","districts":[]},{"citycode":"0759","adcode":"440825","name":"\u5f90\u95fb\u53bf","center":"110.17595,20.325969","level":"district","districts":[]},{"citycode":"0759","adcode":"440804","name":"\u5761\u5934\u533a","center":"110.455192,21.244405","level":"district","districts":[]},{"citycode":"0759","adcode":"440803","name":"\u971e\u5c71\u533a","center":"110.397721,21.192463","level":"district","districts":[]},{"citycode":"0759","adcode":"440882","name":"\u96f7\u5dde\u5e02","center":"110.097011,20.914548","level":"district","districts":[]},{"citycode":"0759","adcode":"440823","name":"\u9042\u6eaa\u53bf","center":"110.25043,21.378371","level":"district","districts":[]},{"citycode":"0759","adcode":"440802","name":"\u8d64\u574e\u533a","center":"110.365592,21.265948","level":"district","districts":[]},{"citycode":"0759","adcode":"440881","name":"\u5ec9\u6c5f\u5e02","center":"110.286109,21.609988","level":"district","districts":[]}]},{"citycode":"0660","adcode":"441500","name":"\u6c55\u5c3e\u5e02","center":"115.375557,22.787204","level":"city","districts":[{"citycode":"0660","adcode":"441581","name":"\u9646\u4e30\u5e02","center":"115.652142,22.91874","level":"district","districts":[]},{"citycode":"0660","adcode":"441521","name":"\u6d77\u4e30\u53bf","center":"115.322974,22.967212","level":"district","districts":[]},{"citycode":"0660","adcode":"441502","name":"\u57ce\u533a","center":"115.36522,22.779204","level":"district","districts":[]},{"citycode":"0660","adcode":"441523","name":"\u9646\u6cb3\u53bf","center":"115.659978,23.301557","level":"district","districts":[]}]},{"citycode":"0768","adcode":"445100","name":"\u6f6e\u5dde\u5e02","center":"116.621901,23.657662","level":"city","districts":[{"citycode":"0768","adcode":"445122","name":"\u9976\u5e73\u53bf","center":"117.0045,23.663294","level":"district","districts":[]},{"citycode":"0768","adcode":"445102","name":"\u6e58\u6865\u533a","center":"116.628343,23.675104","level":"district","districts":[]},{"citycode":"0768","adcode":"445103","name":"\u6f6e\u5b89\u533a","center":"116.676971,23.463598","level":"district","districts":[]}]},{"citycode":"0663","adcode":"445200","name":"\u63ed\u9633\u5e02","center":"116.372732,23.550968","level":"city","districts":[{"citycode":"0663","adcode":"445224","name":"\u60e0\u6765\u53bf","center":"116.295038,23.033889","level":"district","districts":[]},{"citycode":"0663","adcode":"445222","name":"\u63ed\u897f\u53bf","center":"115.841742,23.431314","level":"district","districts":[]},{"citycode":"0663","adcode":"445281","name":"\u666e\u5b81\u5e02","center":"116.165646,23.297742","level":"district","districts":[]},{"citycode":"0663","adcode":"445202","name":"\u6995\u57ce\u533a","center":"116.36714,23.525918","level":"district","districts":[]},{"citycode":"0663","adcode":"445203","name":"\u63ed\u4e1c\u533a","center":"116.411928,23.567252","level":"district","districts":[]}]},{"citycode":"020","adcode":"440100","name":"\u5e7f\u5dde\u5e02","center":"113.264499,23.130061","level":"city","districts":[{"citycode":"020","adcode":"440105","name":"\u6d77\u73e0\u533a","center":"113.317412,23.084003","level":"district","districts":[]},{"citycode":"020","adcode":"440117","name":"\u4ece\u5316\u533a","center":"113.586329,23.54915","level":"district","districts":[]},{"citycode":"020","adcode":"440114","name":"\u82b1\u90fd\u533a","center":"113.220125,23.404326","level":"district","districts":[]},{"citycode":"020","adcode":"440106","name":"\u5929\u6cb3\u533a","center":"113.361597,23.124817","level":"district","districts":[]},{"citycode":"020","adcode":"440103","name":"\u8354\u6e7e\u533a","center":"113.218998,23.107123","level":"district","districts":[]},{"citycode":"020","adcode":"440104","name":"\u8d8a\u79c0\u533a","center":"113.267065,23.128673","level":"district","districts":[]},{"citycode":"020","adcode":"440113","name":"\u756a\u79ba\u533a","center":"113.383917,22.93756","level":"district","districts":[]},{"citycode":"020","adcode":"440111","name":"\u767d\u4e91\u533a","center":"113.2732,23.157159","level":"district","districts":[]},{"citycode":"020","adcode":"440112","name":"\u9ec4\u57d4\u533a","center":"113.480613,23.181355","level":"district","districts":[]},{"citycode":"020","adcode":"440118","name":"\u589e\u57ce\u533a","center":"113.810734,23.261452","level":"district","districts":[]},{"citycode":"020","adcode":"440115","name":"\u5357\u6c99\u533a","center":"113.525178,22.801435","level":"district","districts":[]}]},{"citycode":"0753","adcode":"441400","name":"\u6885\u5dde\u5e02","center":"116.122046,24.288832","level":"city","districts":[{"citycode":"0753","adcode":"441427","name":"\u8549\u5cad\u53bf","center":"116.171477,24.658963","level":"district","districts":[]},{"citycode":"0753","adcode":"441426","name":"\u5e73\u8fdc\u53bf","center":"115.891235,24.566928","level":"district","districts":[]},{"citycode":"0753","adcode":"441481","name":"\u5174\u5b81\u5e02","center":"115.731133,24.137296","level":"district","districts":[]},{"citycode":"0753","adcode":"441424","name":"\u4e94\u534e\u53bf","center":"115.775751,23.932568","level":"district","districts":[]},{"citycode":"0753","adcode":"441422","name":"\u5927\u57d4\u53bf","center":"116.694825,24.347037","level":"district","districts":[]},{"citycode":"0753","adcode":"441403","name":"\u6885\u53bf\u533a","center":"116.081395,24.266191","level":"district","districts":[]},{"citycode":"0753","adcode":"441402","name":"\u6885\u6c5f\u533a","center":"116.116686,24.31065","level":"district","districts":[]},{"citycode":"0753","adcode":"441423","name":"\u4e30\u987a\u53bf","center":"116.181895,23.739364","level":"district","districts":[]}]},{"citycode":"0763","adcode":"441800","name":"\u6e05\u8fdc\u5e02","center":"113.056098,23.682064","level":"city","districts":[{"citycode":"0763","adcode":"441881","name":"\u82f1\u5fb7\u5e02","center":"113.401827,24.20716","level":"district","districts":[]},{"citycode":"0763","adcode":"441882","name":"\u8fde\u5dde\u5e02","center":"112.377255,24.780873","level":"district","districts":[]},{"citycode":"0763","adcode":"441826","name":"\u8fde\u5357\u7476\u65cf\u81ea\u6cbb\u53bf","center":"112.287212,24.725953","level":"district","districts":[]},{"citycode":"0763","adcode":"441823","name":"\u9633\u5c71\u53bf","center":"112.641199,24.465234","level":"district","districts":[]},{"citycode":"0763","adcode":"441821","name":"\u4f5b\u5188\u53bf","center":"113.531559,23.879455","level":"district","districts":[]},{"citycode":"0763","adcode":"441825","name":"\u8fde\u5c71\u58ee\u65cf\u7476\u65cf\u81ea\u6cbb\u53bf","center":"112.093726,24.570553","level":"district","districts":[]},{"citycode":"0763","adcode":"441803","name":"\u6e05\u65b0\u533a","center":"113.017747,23.734677","level":"district","districts":[]},{"citycode":"0763","adcode":"441802","name":"\u6e05\u57ce\u533a","center":"113.062612,23.697889","level":"district","districts":[]}]},{"citycode":"0769","adcode":"441900","name":"\u4e1c\u839e\u5e02","center":"113.751884,23.021016","level":"city","districts":[{"citycode":"0769","adcode":"441900","name":"\u9ec4\u6c5f\u9547","center":"114.000220,22.916267","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u6e05\u6eaa\u9547","center":"114.109028,22.864049","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u6865\u5934\u9547","center":"114.065029,23.031536","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u6d2a\u6885\u9547","center":"113.606888,23.015507","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u9ad8\u57d7\u9547","center":"113.772920,23.100117","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u9ebb\u6d8c\u9547","center":"113.616702,23.088653","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u671b\u725b\u58a9\u9547","center":"113.675238,23.067562","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u9053\u6ed8\u9547","center":"113.687246,23.004094","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u4e07\u6c5f\u8857\u9053","center":"113.714249,23.004871","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u839e\u57ce\u8857\u9053","center":"113.756157,23.026359","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u4f01\u77f3\u9547","center":"113.989933,23.054588","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u4e1c\u5751\u9547","center":"113.921005,22.989113","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u4e1c\u57ce\u8857\u9053","center":"113.772060,22.941938","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u5357\u57ce\u8857\u9053","center":"113.768809,22.941355","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u8c22\u5c97\u9547","center":"114.171775,22.984642","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u6a1f\u6728\u5934\u9547","center":"114.015449,22.869270","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u5e38\u5e73\u9547","center":"114.041069,23.007892","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u51e4\u5c97\u9547","center":"114.139781,22.777948","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u5bee\u6b65\u9547","center":"113.917593,22.981271","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u6c99\u7530\u9547","center":"113.582201,22.942601","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u6a2a\u6ca5\u9547","center":"114.030270,23.035086","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u77f3\u6392\u9547","center":"113.989827,23.069114","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u8336\u5c71\u9547","center":"113.840966,23.092760","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u4e2d\u5802\u9547","center":"113.612748,23.042585","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u539a\u8857\u9547","center":"113.631616,22.934094","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u957f\u5b89\u9547","center":"113.802243,22.838519","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u864e\u95e8\u9547","center":"113.631506,22.832134","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u77f3\u9f99\u9547","center":"113.859745,23.087788","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u77f3\u78a3\u9547","center":"113.772148,23.095617","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u5927\u6717\u9547","center":"113.948398,22.866832","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u5927\u5cad\u5c71\u9547","center":"113.807913,22.948048","level":"street","districts":[]},{"citycode":"0769","adcode":"441900","name":"\u5858\u53a6\u9547","center":"114.052418,22.839736","level":"street","districts":[]}]},{"citycode":"0751","adcode":"440200","name":"\u97f6\u5173\u5e02","center":"113.597324,24.810977","level":"city","districts":[{"citycode":"0751","adcode":"440224","name":"\u4ec1\u5316\u53bf","center":"113.749175,25.085764","level":"district","districts":[]},{"citycode":"0751","adcode":"440282","name":"\u5357\u96c4\u5e02","center":"114.31184,25.117653","level":"district","districts":[]},{"citycode":"0751","adcode":"440222","name":"\u59cb\u5174\u53bf","center":"114.061998,24.953908","level":"district","districts":[]},{"citycode":"0751","adcode":"440281","name":"\u4e50\u660c\u5e02","center":"113.347669,25.129892","level":"district","districts":[]},{"citycode":"0751","adcode":"440229","name":"\u7fc1\u6e90\u53bf","center":"114.129986,24.350581","level":"district","districts":[]},{"citycode":"0751","adcode":"440233","name":"\u65b0\u4e30\u53bf","center":"114.206641,24.059909","level":"district","districts":[]},{"citycode":"0751","adcode":"440205","name":"\u66f2\u6c5f\u533a","center":"113.604591,24.682826","level":"district","districts":[]},{"citycode":"0751","adcode":"440204","name":"\u6d48\u6c5f\u533a","center":"113.611077,24.804898","level":"district","districts":[]},{"citycode":"0751","adcode":"440232","name":"\u4e73\u6e90\u7476\u65cf\u81ea\u6cbb\u53bf","center":"113.275875,24.775856","level":"district","districts":[]},{"citycode":"0751","adcode":"440203","name":"\u6b66\u6c5f\u533a","center":"113.58792,24.7929","level":"district","districts":[]}]},{"citycode":"0762","adcode":"441600","name":"\u6cb3\u6e90\u5e02","center":"114.700215,23.744276","level":"city","districts":[{"citycode":"0762","adcode":"441624","name":"\u548c\u5e73\u53bf","center":"114.935634,24.469177","level":"district","districts":[]},{"citycode":"0762","adcode":"441622","name":"\u9f99\u5ddd\u53bf","center":"115.26002,24.100599","level":"district","districts":[]},{"citycode":"0762","adcode":"441602","name":"\u6e90\u57ce\u533a","center":"114.703305,23.734055","level":"district","districts":[]},{"citycode":"0762","adcode":"441621","name":"\u7d2b\u91d1\u53bf","center":"115.183814,23.635597","level":"district","districts":[]},{"citycode":"0762","adcode":"441625","name":"\u4e1c\u6e90\u53bf","center":"114.7466,23.790079","level":"district","districts":[]},{"citycode":"0762","adcode":"441623","name":"\u8fde\u5e73\u53bf","center":"114.488358,24.369552","level":"district","districts":[]}]},{"citycode":"0766","adcode":"445300","name":"\u4e91\u6d6e\u5e02","center":"112.044524,22.915163","level":"city","districts":[{"citycode":"0766","adcode":"445322","name":"\u90c1\u5357\u53bf","center":"111.535387,23.234561","level":"district","districts":[]},{"citycode":"0766","adcode":"445381","name":"\u7f57\u5b9a\u5e02","center":"111.569788,22.768345","level":"district","districts":[]},{"citycode":"0766","adcode":"445303","name":"\u4e91\u5b89\u533a","center":"112.002947,23.070334","level":"district","districts":[]},{"citycode":"0766","adcode":"445302","name":"\u4e91\u57ce\u533a","center":"112.043945,22.92815","level":"district","districts":[]},{"citycode":"0766","adcode":"445321","name":"\u65b0\u5174\u53bf","center":"112.225174,22.695915","level":"district","districts":[]}]},{"citycode":"0760","adcode":"442000","name":"\u4e2d\u5c71\u5e02","center":"113.392517,22.517024","level":"city","districts":[{"citycode":"0760","adcode":"442000","name":"\u6a2a\u680f\u9547","center":"113.223630,22.604755","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u6e2f\u53e3\u9547","center":"113.354019,22.602694","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u961c\u6c99\u9547","center":"113.340305,22.640609","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u4e09\u4e61\u9547","center":"113.431869,22.387876","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u897f\u533a\u8857\u9053","center":"113.314421,22.564923","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u77f3\u5c90\u8857\u9053","center":"113.404120,22.548351","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u5c0f\u6984\u9547","center":"113.320629,22.560691","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u795e\u6e7e\u9547","center":"113.376318,22.276818","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u5927\u6d8c\u9547","center":"113.296691,22.483379","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u53e4\u9547\u9547","center":"113.221289,22.609652","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u6c99\u6eaa\u9547","center":"113.343971,22.524791","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u4e1c\u51e4\u9547","center":"113.307919,22.680266","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u677f\u8299\u9547","center":"113.368695,22.406764","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u5357\u5934\u9547","center":"113.299916,22.683684","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u5766\u6d32\u9547","center":"113.454379,22.310301","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u4e09\u89d2\u9547","center":"113.400593,22.640197","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u9ec4\u5703\u9547","center":"113.359373,22.681261","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u4e1c\u533a\u8857\u9053","center":"113.436188,22.514086","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u6c11\u4f17\u8857\u9053","center":"113.472738,22.653889","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u5357\u533a\u8857\u9053","center":"113.367676,22.488858","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u4e94\u6842\u5c71\u8857\u9053","center":"113.476817,22.428448","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u4e2d\u5c71\u6e2f\u8857\u9053","center":"113.418677,22.549913","level":"street","districts":[]},{"citycode":"0760","adcode":"442000","name":"\u5357\u6717\u8857\u9053","center":"113.489502,22.524345","level":"street","districts":[]}]}]},{"citycode":[],"adcode":"150000","name":"\u5185\u8499\u53e4\u81ea\u6cbb\u533a","center":"111.765226,40.818233","level":"province","districts":[{"citycode":"0473","adcode":"150300","name":"\u4e4c\u6d77\u5e02","center":"106.79415,39.655048","level":"city","districts":[{"citycode":"0473","adcode":"150304","name":"\u4e4c\u8fbe\u533a","center":"106.726043,39.505609","level":"district","districts":[]},{"citycode":"0473","adcode":"150302","name":"\u6d77\u52c3\u6e7e\u533a","center":"106.8228,39.690873","level":"district","districts":[]},{"citycode":"0473","adcode":"150303","name":"\u6d77\u5357\u533a","center":"106.891472,39.441803","level":"district","districts":[]}]},{"citycode":"0478","adcode":"150800","name":"\u5df4\u5f66\u6dd6\u5c14\u5e02","center":"107.387767,40.742987","level":"city","districts":[{"citycode":"0478","adcode":"150824","name":"\u4e4c\u62c9\u7279\u4e2d\u65d7","center":"108.513653,41.58813","level":"district","districts":[]},{"citycode":"0478","adcode":"150822","name":"\u78f4\u53e3\u53bf","center":"107.008288,40.330534","level":"district","districts":[]},{"citycode":"0478","adcode":"150825","name":"\u4e4c\u62c9\u7279\u540e\u65d7","center":"107.074748,41.08412","level":"district","districts":[]},{"citycode":"0478","adcode":"150826","name":"\u676d\u9526\u540e\u65d7","center":"107.151296,40.886596","level":"district","districts":[]},{"citycode":"0478","adcode":"150802","name":"\u4e34\u6cb3\u533a","center":"107.363536,40.750969","level":"district","districts":[]},{"citycode":"0478","adcode":"150821","name":"\u4e94\u539f\u53bf","center":"108.267466,41.088446","level":"district","districts":[]},{"citycode":"0478","adcode":"150823","name":"\u4e4c\u62c9\u7279\u524d\u65d7","center":"108.652114,40.737018","level":"district","districts":[]}]},{"citycode":"0472","adcode":"150200","name":"\u5305\u5934\u5e02","center":"109.95315,40.621327","level":"city","districts":[{"citycode":"0472","adcode":"150221","name":"\u571f\u9ed8\u7279\u53f3\u65d7","center":"110.527831,40.578253","level":"district","districts":[]},{"citycode":"0472","adcode":"150223","name":"\u8fbe\u5c14\u7f55\u8302\u660e\u5b89\u8054\u5408\u65d7","center":"110.432626,41.698992","level":"district","districts":[]},{"citycode":"0472","adcode":"150206","name":"\u767d\u4e91\u9102\u535a\u77ff\u533a","center":"109.973195,41.769956","level":"district","districts":[]},{"citycode":"0472","adcode":"150222","name":"\u56fa\u9633\u53bf","center":"110.060055,41.034757","level":"district","districts":[]},{"citycode":"0472","adcode":"150205","name":"\u77f3\u62d0\u533a","center":"110.060783,40.676736","level":"district","districts":[]},{"citycode":"0472","adcode":"150202","name":"\u4e1c\u6cb3\u533a","center":"110.044008,40.57626","level":"district","districts":[]},{"citycode":"0472","adcode":"150204","name":"\u9752\u5c71\u533a","center":"109.902157,40.644081","level":"district","districts":[]},{"citycode":"0472","adcode":"150203","name":"\u6606\u90fd\u4ed1\u533a","center":"109.840249,40.658075","level":"district","districts":[]},{"citycode":"0472","adcode":"150207","name":"\u4e5d\u539f\u533a","center":"109.968082,40.611346","level":"district","districts":[]}]},{"citycode":"0470","adcode":"150700","name":"\u547c\u4f26\u8d1d\u5c14\u5e02","center":"119.77845,49.166536","level":"city","districts":[{"citycode":"0470","adcode":"150702","name":"\u6d77\u62c9\u5c14\u533a","center":"119.824542,49.234715","level":"district","districts":[]},{"citycode":"0470","adcode":"150785","name":"\u6839\u6cb3\u5e02","center":"121.520165,50.779758","level":"district","districts":[]},{"citycode":"0470","adcode":"150782","name":"\u7259\u514b\u77f3\u5e02","center":"120.711639,49.285947","level":"district","districts":[]},{"citycode":"0470","adcode":"150724","name":"\u9102\u6e29\u514b\u65cf\u81ea\u6cbb\u65d7","center":"119.755253,49.146692","level":"district","districts":[]},{"citycode":"0470","adcode":"150721","name":"\u963f\u8363\u65d7","center":"123.458943,48.126553","level":"district","districts":[]},{"citycode":"0470","adcode":"150783","name":"\u624e\u5170\u5c6f\u5e02","center":"122.708475,48.028396","level":"district","districts":[]},{"citycode":"0470","adcode":"150781","name":"\u6ee1\u6d32\u91cc\u5e02","center":"117.379134,49.59862","level":"district","districts":[]},{"citycode":"0470","adcode":"150703","name":"\u624e\u8d49\u8bfa\u5c14\u533a","center":"117.669939,49.511213","level":"district","districts":[]},{"citycode":"0470","adcode":"150727","name":"\u65b0\u5df4\u5c14\u864e\u53f3\u65d7","center":"116.8237,48.671865","level":"district","districts":[]},{"citycode":"0470","adcode":"150723","name":"\u9102\u4f26\u6625\u81ea\u6cbb\u65d7","center":"123.725643,50.591604","level":"district","districts":[]},{"citycode":"0470","adcode":"150784","name":"\u989d\u5c14\u53e4\u7eb3\u5e02","center":"120.180506,50.243102","level":"district","districts":[]},{"citycode":"0470","adcode":"150726","name":"\u65b0\u5df4\u5c14\u864e\u5de6\u65d7","center":"118.269782,48.21827","level":"district","districts":[]},{"citycode":"0470","adcode":"150722","name":"\u83ab\u529b\u8fbe\u74e6\u8fbe\u65a1\u5c14\u65cf\u81ea\u6cbb\u65d7","center":"124.519023,48.477728","level":"district","districts":[]},{"citycode":"0470","adcode":"150725","name":"\u9648\u5df4\u5c14\u864e\u65d7","center":"119.424026,49.328916","level":"district","districts":[]}]},{"citycode":"0482","adcode":"152200","name":"\u5174\u5b89\u76df","center":"122.037796,46.082373","level":"city","districts":[{"citycode":"0482","adcode":"152202","name":"\u963f\u5c14\u5c71\u5e02","center":"119.943577,47.17744","level":"district","districts":[]},{"citycode":"0482","adcode":"152222","name":"\u79d1\u5c14\u6c81\u53f3\u7ffc\u4e2d\u65d7","center":"121.476357,45.060728","level":"district","districts":[]},{"citycode":"0482","adcode":"152224","name":"\u7a81\u6cc9\u53bf","center":"121.593972,45.381918","level":"district","districts":[]},{"citycode":"0482","adcode":"152223","name":"\u624e\u8d49\u7279\u65d7","center":"122.899627,46.723154","level":"district","districts":[]},{"citycode":"0482","adcode":"152221","name":"\u79d1\u5c14\u6c81\u53f3\u7ffc\u524d\u65d7","center":"121.952638,46.079664","level":"district","districts":[]},{"citycode":"0482","adcode":"152201","name":"\u4e4c\u5170\u6d69\u7279\u5e02","center":"122.093309,46.072233","level":"district","districts":[]}]},{"citycode":"0475","adcode":"150500","name":"\u901a\u8fbd\u5e02","center":"122.243309,43.653566","level":"city","districts":[{"citycode":"0475","adcode":"150581","name":"\u970d\u6797\u90ed\u52d2\u5e02","center":"119.681242,45.533598","level":"district","districts":[]},{"citycode":"0475","adcode":"150523","name":"\u5f00\u9c81\u53bf","center":"121.319216,43.601446","level":"district","districts":[]},{"citycode":"0475","adcode":"150525","name":"\u5948\u66fc\u65d7","center":"120.657813,42.867433","level":"district","districts":[]},{"citycode":"0475","adcode":"150524","name":"\u5e93\u4f26\u65d7","center":"121.810629,42.735556","level":"district","districts":[]},{"citycode":"0475","adcode":"150526","name":"\u624e\u9c81\u7279\u65d7","center":"120.917953,44.567093","level":"district","districts":[]},{"citycode":"0475","adcode":"150521","name":"\u79d1\u5c14\u6c81\u5de6\u7ffc\u4e2d\u65d7","center":"123.312202,44.126606","level":"district","districts":[]},{"citycode":"0475","adcode":"150522","name":"\u79d1\u5c14\u6c81\u5de6\u7ffc\u540e\u65d7","center":"122.35677,42.935105","level":"district","districts":[]},{"citycode":"0475","adcode":"150502","name":"\u79d1\u5c14\u6c81\u533a","center":"122.25545,43.623133","level":"district","districts":[]}]},{"citycode":"0476","adcode":"150400","name":"\u8d64\u5cf0\u5e02","center":"118.887613,42.256876","level":"city","districts":[{"citycode":"0476","adcode":"150422","name":"\u5df4\u6797\u5de6\u65d7","center":"119.362832,43.961547","level":"district","districts":[]},{"citycode":"0476","adcode":"150423","name":"\u5df4\u6797\u53f3\u65d7","center":"118.664235,43.534171","level":"district","districts":[]},{"citycode":"0476","adcode":"150424","name":"\u6797\u897f\u53bf","center":"118.05545,43.61812","level":"district","districts":[]},{"citycode":"0476","adcode":"150430","name":"\u6556\u6c49\u65d7","center":"119.921413,42.290731","level":"district","districts":[]},{"citycode":"0476","adcode":"150402","name":"\u7ea2\u5c71\u533a","center":"118.953989,42.296317","level":"district","districts":[]},{"citycode":"0476","adcode":"150426","name":"\u7fc1\u725b\u7279\u65d7","center":"119.006187,42.936529","level":"district","districts":[]},{"citycode":"0476","adcode":"150425","name":"\u514b\u4ec0\u514b\u817e\u65d7","center":"117.545413,43.265057","level":"district","districts":[]},{"citycode":"0476","adcode":"150429","name":"\u5b81\u57ce\u53bf","center":"119.320056,41.600193","level":"district","districts":[]},{"citycode":"0476","adcode":"150421","name":"\u963f\u9c81\u79d1\u5c14\u6c81\u65d7","center":"120.065533,43.872398","level":"district","districts":[]},{"citycode":"0476","adcode":"150403","name":"\u5143\u5b9d\u5c71\u533a","center":"119.288475,42.039602","level":"district","districts":[]},{"citycode":"0476","adcode":"150404","name":"\u677e\u5c71\u533a","center":"118.916156,42.299795","level":"district","districts":[]},{"citycode":"0476","adcode":"150428","name":"\u5580\u5587\u6c81\u65d7","center":"118.701934,41.927103","level":"district","districts":[]}]},{"citycode":"0479","adcode":"152500","name":"\u9521\u6797\u90ed\u52d2\u76df","center":"116.047387,43.933212","level":"city","districts":[{"citycode":"0479","adcode":"152525","name":"\u4e1c\u4e4c\u73e0\u7a46\u6c81\u65d7","center":"116.97526,45.497329","level":"district","districts":[]},{"citycode":"0479","adcode":"152522","name":"\u963f\u5df4\u560e\u65d7","center":"114.950185,44.022831","level":"district","districts":[]},{"citycode":"0479","adcode":"152502","name":"\u9521\u6797\u6d69\u7279\u5e02","center":"116.085814,43.933417","level":"district","districts":[]},{"citycode":"0479","adcode":"152526","name":"\u897f\u4e4c\u73e0\u7a46\u6c81\u65d7","center":"117.608668,44.587746","level":"district","districts":[]},{"citycode":"0479","adcode":"152523","name":"\u82cf\u5c3c\u7279\u5de6\u65d7","center":"113.667171,43.859718","level":"district","districts":[]},{"citycode":"0479","adcode":"152501","name":"\u4e8c\u8fde\u6d69\u7279\u5e02","center":"111.949594,43.64285","level":"district","districts":[]},{"citycode":"0479","adcode":"152524","name":"\u82cf\u5c3c\u7279\u53f3\u65d7","center":"112.641806,42.742417","level":"district","districts":[]},{"citycode":"0479","adcode":"152530","name":"\u6b63\u84dd\u65d7","center":"115.991648,42.241815","level":"district","districts":[]},{"citycode":"0479","adcode":"152529","name":"\u6b63\u9576\u767d\u65d7","center":"115.029748,42.287493","level":"district","districts":[]},{"citycode":"0479","adcode":"152528","name":"\u9576\u9ec4\u65d7","center":"113.847287,42.232371","level":"district","districts":[]},{"citycode":"0479","adcode":"152531","name":"\u591a\u4f26\u53bf","center":"116.485549,42.203454","level":"district","districts":[]},{"citycode":"0479","adcode":"152527","name":"\u592a\u4ec6\u5bfa\u65d7","center":"115.283173,41.876889","level":"district","districts":[]}]},{"citycode":"0474","adcode":"150900","name":"\u4e4c\u5170\u5bdf\u5e03\u5e02","center":"113.132227,40.994526","level":"city","districts":[{"citycode":"0474","adcode":"150929","name":"\u56db\u5b50\u738b\u65d7","center":"111.706663,41.533542","level":"district","districts":[]},{"citycode":"0474","adcode":"150921","name":"\u5353\u8d44\u53bf","center":"112.577716,40.894618","level":"district","districts":[]},{"citycode":"0474","adcode":"150928","name":"\u5bdf\u54c8\u5c14\u53f3\u7ffc\u540e\u65d7","center":"113.191505,41.435937","level":"district","districts":[]},{"citycode":"0474","adcode":"150923","name":"\u5546\u90fd\u53bf","center":"113.577778,41.562176","level":"district","districts":[]},{"citycode":"0474","adcode":"150927","name":"\u5bdf\u54c8\u5c14\u53f3\u7ffc\u4e2d\u65d7","center":"112.635348,41.277449","level":"district","districts":[]},{"citycode":"0474","adcode":"150922","name":"\u5316\u5fb7\u53bf","center":"114.01029,41.904123","level":"district","districts":[]},{"citycode":"0474","adcode":"150902","name":"\u96c6\u5b81\u533a","center":"113.168973,41.000742","level":"district","districts":[]},{"citycode":"0474","adcode":"150926","name":"\u5bdf\u54c8\u5c14\u53f3\u7ffc\u524d\u65d7","center":"113.212409,40.783551","level":"district","districts":[]},{"citycode":"0474","adcode":"150924","name":"\u5174\u548c\u53bf","center":"113.834176,40.8723","level":"district","districts":[]},{"citycode":"0474","adcode":"150981","name":"\u4e30\u9547\u5e02","center":"113.109875,40.437022","level":"district","districts":[]},{"citycode":"0474","adcode":"150925","name":"\u51c9\u57ce\u53bf","center":"112.504243,40.532358","level":"district","districts":[]}]},{"citycode":"0483","adcode":"152900","name":"\u963f\u62c9\u5584\u76df","center":"105.729135,38.851554","level":"city","districts":[{"citycode":"0483","adcode":"152923","name":"\u989d\u6d4e\u7eb3\u65d7","center":"101.055861,41.953963","level":"district","districts":[]},{"citycode":"0483","adcode":"152922","name":"\u963f\u62c9\u5584\u53f3\u65d7","center":"101.666917,39.216185","level":"district","districts":[]},{"citycode":"0483","adcode":"152921","name":"\u963f\u62c9\u5584\u5de6\u65d7","center":"105.666208,38.833589","level":"district","districts":[]}]},{"citycode":"0477","adcode":"150600","name":"\u9102\u5c14\u591a\u65af\u5e02","center":"109.782473,39.608744","level":"city","districts":[{"citycode":"0477","adcode":"150625","name":"\u676d\u9526\u65d7","center":"108.736011,39.833243","level":"district","districts":[]},{"citycode":"0477","adcode":"150621","name":"\u8fbe\u62c9\u7279\u65d7","center":"110.034133,40.412766","level":"district","districts":[]},{"citycode":"0477","adcode":"150624","name":"\u9102\u6258\u514b\u65d7","center":"107.975948,39.089549","level":"district","districts":[]},{"citycode":"0477","adcode":"150623","name":"\u9102\u6258\u514b\u524d\u65d7","center":"107.47733,38.182402","level":"district","districts":[]},{"citycode":"0477","adcode":"150627","name":"\u4f0a\u91d1\u970d\u6d1b\u65d7","center":"109.747435,39.565064","level":"district","districts":[]},{"citycode":"0477","adcode":"150603","name":"\u5eb7\u5df4\u4ec0\u533a","center":"109.858586,39.60793","level":"district","districts":[]},{"citycode":"0477","adcode":"150602","name":"\u4e1c\u80dc\u533a","center":"109.963403,39.823066","level":"district","districts":[]},{"citycode":"0477","adcode":"150622","name":"\u51c6\u683c\u5c14\u65d7","center":"111.239436,39.864923","level":"district","districts":[]},{"citycode":"0477","adcode":"150626","name":"\u4e4c\u5ba1\u65d7","center":"108.819485,38.60453","level":"district","districts":[]}]},{"citycode":"0471","adcode":"150100","name":"\u547c\u548c\u6d69\u7279\u5e02","center":"111.748814,40.842127","level":"city","districts":[{"citycode":"0471","adcode":"150103","name":"\u56de\u6c11\u533a","center":"111.623485,40.808906","level":"district","districts":[]},{"citycode":"0471","adcode":"150125","name":"\u6b66\u5ddd\u53bf","center":"111.451226,41.096511","level":"district","districts":[]},{"citycode":"0471","adcode":"150122","name":"\u6258\u514b\u6258\u53bf","center":"111.193879,40.277703","level":"district","districts":[]},{"citycode":"0471","adcode":"150121","name":"\u571f\u9ed8\u7279\u5de6\u65d7","center":"111.16373,40.729044","level":"district","districts":[]},{"citycode":"0471","adcode":"150102","name":"\u65b0\u57ce\u533a","center":"111.665325,40.858271","level":"district","districts":[]},{"citycode":"0471","adcode":"150123","name":"\u548c\u6797\u683c\u5c14\u53bf","center":"111.821695,40.379226","level":"district","districts":[]},{"citycode":"0471","adcode":"150105","name":"\u8d5b\u7f55\u533a","center":"111.701166,40.792508","level":"district","districts":[]},{"citycode":"0471","adcode":"150104","name":"\u7389\u6cc9\u533a","center":"111.674157,40.753054","level":"district","districts":[]},{"citycode":"0471","adcode":"150124","name":"\u6e05\u6c34\u6cb3\u53bf","center":"111.647351,39.921224","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"230000","name":"\u9ed1\u9f99\u6c5f\u7701","center":"126.661998,45.742253","level":"province","districts":[{"citycode":"0457","adcode":"232700","name":"\u5927\u5174\u5b89\u5cad\u5730\u533a","center":"124.11786,50.41129","level":"city","districts":[{"citycode":"0457","adcode":"232721","name":"\u547c\u739b\u53bf","center":"126.651856,51.725924","level":"district","districts":[]},{"citycode":"0457","adcode":"232718","name":"\u52a0\u683c\u8fbe\u5947\u533a","center":"124.139742,50.408822","level":"district","districts":[]},{"citycode":"0457","adcode":"232701","name":"\u6f20\u6cb3\u5e02","center":"122.539313,52.972465","level":"district","districts":[]},{"citycode":"0457","adcode":"232722","name":"\u5854\u6cb3\u53bf","center":"124.709733,52.334512","level":"district","districts":[]}]},{"citycode":"0464","adcode":"230900","name":"\u4e03\u53f0\u6cb3\u5e02","center":"131.003015,45.771178","level":"city","districts":[{"citycode":"0464","adcode":"230921","name":"\u52c3\u5229\u53bf","center":"130.592009,45.755856","level":"district","districts":[]},{"citycode":"0464","adcode":"230903","name":"\u6843\u5c71\u533a","center":"131.020046,45.765733","level":"district","districts":[]},{"citycode":"0464","adcode":"230902","name":"\u65b0\u5174\u533a","center":"130.93226,45.816579","level":"district","districts":[]},{"citycode":"0464","adcode":"230904","name":"\u8304\u5b50\u6cb3\u533a","center":"131.067545,45.785755","level":"district","districts":[]}]},{"citycode":"0468","adcode":"230400","name":"\u9e64\u5c97\u5e02","center":"130.297687,47.350659","level":"city","districts":[{"citycode":"0468","adcode":"230422","name":"\u7ee5\u6ee8\u53bf","center":"131.852863,47.289522","level":"district","districts":[]},{"citycode":"0468","adcode":"230403","name":"\u5de5\u519c\u533a","center":"130.27472,47.318971","level":"district","districts":[]},{"citycode":"0468","adcode":"230407","name":"\u5174\u5c71\u533a","center":"130.303598,47.357698","level":"district","districts":[]},{"citycode":"0468","adcode":"230405","name":"\u5174\u5b89\u533a","center":"130.239289,47.252805","level":"district","districts":[]},{"citycode":"0468","adcode":"230402","name":"\u5411\u9633\u533a","center":"130.294331,47.342478","level":"district","districts":[]},{"citycode":"0468","adcode":"230404","name":"\u5357\u5c71\u533a","center":"130.285991,47.315121","level":"district","districts":[]},{"citycode":"0468","adcode":"230421","name":"\u841d\u5317\u53bf","center":"130.820566,47.578979","level":"district","districts":[]},{"citycode":"0468","adcode":"230406","name":"\u4e1c\u5c71\u533a","center":"130.317151,47.338571","level":"district","districts":[]}]},{"citycode":"0454","adcode":"230800","name":"\u4f73\u6728\u65af\u5e02","center":"130.318916,46.800002","level":"city","districts":[{"citycode":"0454","adcode":"230828","name":"\u6c64\u539f\u53bf","center":"129.904747,46.730623","level":"district","districts":[]},{"citycode":"0454","adcode":"230822","name":"\u6866\u5357\u53bf","center":"130.553472,46.239314","level":"district","districts":[]},{"citycode":"0454","adcode":"230882","name":"\u5bcc\u9526\u5e02","center":"132.037659,47.250144","level":"district","districts":[]},{"citycode":"0454","adcode":"230881","name":"\u540c\u6c5f\u5e02","center":"132.510113,47.642475","level":"district","districts":[]},{"citycode":"0454","adcode":"230883","name":"\u629a\u8fdc\u5e02","center":"134.30786,48.365027","level":"district","districts":[]},{"citycode":"0454","adcode":"230826","name":"\u6866\u5ddd\u53bf","center":"130.71908,47.023001","level":"district","districts":[]},{"citycode":"0454","adcode":"230804","name":"\u524d\u8fdb\u533a","center":"130.375254,46.81405","level":"district","districts":[]},{"citycode":"0454","adcode":"230805","name":"\u4e1c\u98ce\u533a","center":"130.403588,46.822609","level":"district","districts":[]},{"citycode":"0454","adcode":"230803","name":"\u5411\u9633\u533a","center":"130.365263,46.807808","level":"district","districts":[]},{"citycode":"0454","adcode":"230811","name":"\u90ca\u533a","center":"130.327182,46.809596","level":"district","districts":[]}]},{"citycode":"0469","adcode":"230500","name":"\u53cc\u9e2d\u5c71\u5e02","center":"131.141563,46.676157","level":"city","districts":[{"citycode":"0469","adcode":"230522","name":"\u53cb\u8c0a\u53bf","center":"131.807815,46.767299","level":"district","districts":[]},{"citycode":"0469","adcode":"230502","name":"\u5c16\u5c71\u533a","center":"131.158372,46.646083","level":"district","districts":[]},{"citycode":"0469","adcode":"230503","name":"\u5cad\u4e1c\u533a","center":"131.165067,46.592663","level":"district","districts":[]},{"citycode":"0469","adcode":"230506","name":"\u5b9d\u5c71\u533a","center":"131.401589,46.577167","level":"district","districts":[]},{"citycode":"0469","adcode":"230505","name":"\u56db\u65b9\u53f0\u533a","center":"131.337636,46.597143","level":"district","districts":[]},{"citycode":"0469","adcode":"230521","name":"\u96c6\u8d24\u53bf","center":"131.141452,46.728448","level":"district","districts":[]},{"citycode":"0469","adcode":"230524","name":"\u9976\u6cb3\u53bf","center":"134.014125,46.79726","level":"district","districts":[]},{"citycode":"0469","adcode":"230523","name":"\u5b9d\u6e05\u53bf","center":"132.196907,46.327335","level":"district","districts":[]}]},{"citycode":"0456","adcode":"231100","name":"\u9ed1\u6cb3\u5e02","center":"127.528226,50.244887","level":"city","districts":[{"citycode":"0456","adcode":"231181","name":"\u5317\u5b89\u5e02","center":"126.490989,48.241168","level":"district","districts":[]},{"citycode":"0456","adcode":"231123","name":"\u900a\u514b\u53bf","center":"128.478698,49.56429","level":"district","districts":[]},{"citycode":"0456","adcode":"231182","name":"\u4e94\u5927\u8fde\u6c60\u5e02","center":"126.205446,48.517342","level":"district","districts":[]},{"citycode":"0456","adcode":"231183","name":"\u5ae9\u6c5f\u5e02","center":"125.221192,49.185766","level":"district","districts":[]},{"citycode":"0456","adcode":"231124","name":"\u5b59\u5434\u53bf","center":"127.336163,49.425645","level":"district","districts":[]},{"citycode":"0456","adcode":"231102","name":"\u7231\u8f89\u533a","center":"127.500703,50.252361","level":"district","districts":[]}]},{"citycode":"0453","adcode":"231000","name":"\u7261\u4e39\u6c5f\u5e02","center":"129.632928,44.551486","level":"city","districts":[{"citycode":"0453","adcode":"231004","name":"\u7231\u6c11\u533a","center":"129.591227,44.595897","level":"district","districts":[]},{"citycode":"0453","adcode":"231002","name":"\u4e1c\u5b89\u533a","center":"129.626651,44.58125","level":"district","districts":[]},{"citycode":"0453","adcode":"231081","name":"\u7ee5\u82ac\u6cb3\u5e02","center":"131.151805,44.412487","level":"district","districts":[]},{"citycode":"0453","adcode":"231086","name":"\u4e1c\u5b81\u5e02","center":"131.124839,44.090361","level":"district","districts":[]},{"citycode":"0453","adcode":"231084","name":"\u5b81\u5b89\u5e02","center":"129.482505,44.340617","level":"district","districts":[]},{"citycode":"0453","adcode":"231005","name":"\u897f\u5b89\u533a","center":"129.616021,44.577611","level":"district","districts":[]},{"citycode":"0453","adcode":"231083","name":"\u6d77\u6797\u5e02","center":"129.380756,44.594017","level":"district","districts":[]},{"citycode":"0453","adcode":"231085","name":"\u7a46\u68f1\u5e02","center":"130.52446,44.918842","level":"district","districts":[]},{"citycode":"0453","adcode":"231003","name":"\u9633\u660e\u533a","center":"129.635836,44.595851","level":"district","districts":[]},{"citycode":"0453","adcode":"231025","name":"\u6797\u53e3\u53bf","center":"130.282286,45.279754","level":"district","districts":[]}]},{"citycode":"0458","adcode":"230700","name":"\u4f0a\u6625\u5e02","center":"128.840863,47.728332","level":"city","districts":[{"citycode":"0458","adcode":"230722","name":"\u5609\u836b\u53bf","center":"130.402406,48.888613","level":"district","districts":[]},{"citycode":"0458","adcode":"230724","name":"\u4e30\u6797\u53bf","center":"129.533661,48.290566","level":"district","districts":[]},{"citycode":"0458","adcode":"230723","name":"\u6c64\u65fa\u53bf","center":"129.570935,48.454639","level":"district","districts":[]},{"citycode":"0458","adcode":"230719","name":"\u53cb\u597d\u533a","center":"128.836341,47.840801","level":"district","districts":[]},{"citycode":"0458","adcode":"230751","name":"\u91d1\u6797\u533a","center":"129.428839,47.413019","level":"district","districts":[]},{"citycode":"0458","adcode":"230726","name":"\u5357\u5c94\u53bf","center":"129.283584,47.139009","level":"district","districts":[]},{"citycode":"0458","adcode":"230725","name":"\u5927\u7b90\u5c71\u53bf","center":"129.020519,47.028313","level":"district","districts":[]},{"citycode":"0458","adcode":"230781","name":"\u94c1\u529b\u5e02","center":"128.032554,46.986604","level":"district","districts":[]},{"citycode":"0458","adcode":"230718","name":"\u4e4c\u7fe0\u533a","center":"128.68003,47.729319","level":"district","districts":[]},{"citycode":"0458","adcode":"230717","name":"\u4f0a\u7f8e\u533a","center":"128.907156,47.728257","level":"district","districts":[]}]},{"citycode":"0467","adcode":"230300","name":"\u9e21\u897f\u5e02","center":"130.969385,45.295087","level":"city","districts":[{"citycode":"0467","adcode":"230304","name":"\u6ef4\u9053\u533a","center":"130.844193,45.349068","level":"district","districts":[]},{"citycode":"0467","adcode":"230307","name":"\u9ebb\u5c71\u533a","center":"130.477691,45.211863","level":"district","districts":[]},{"citycode":"0467","adcode":"230302","name":"\u9e21\u51a0\u533a","center":"130.981342,45.303892","level":"district","districts":[]},{"citycode":"0467","adcode":"230303","name":"\u6052\u5c71\u533a","center":"130.90466,45.21119","level":"district","districts":[]},{"citycode":"0467","adcode":"230305","name":"\u68a8\u6811\u533a","center":"130.69699,45.092046","level":"district","districts":[]},{"citycode":"0467","adcode":"230381","name":"\u864e\u6797\u5e02","center":"132.937002,45.763262","level":"district","districts":[]},{"citycode":"0467","adcode":"230382","name":"\u5bc6\u5c71\u5e02","center":"131.846824,45.529482","level":"district","districts":[]},{"citycode":"0467","adcode":"230306","name":"\u57ce\u5b50\u6cb3\u533a","center":"131.011504,45.338342","level":"district","districts":[]},{"citycode":"0467","adcode":"230321","name":"\u9e21\u4e1c\u53bf","center":"131.124083,45.260413","level":"district","districts":[]}]},{"citycode":"0452","adcode":"230200","name":"\u9f50\u9f50\u54c8\u5c14\u5e02","center":"123.918193,47.354892","level":"city","districts":[{"citycode":"0452","adcode":"230229","name":"\u514b\u5c71\u53bf","center":"125.875103,48.037748","level":"district","districts":[]},{"citycode":"0452","adcode":"230225","name":"\u7518\u5357\u53bf","center":"123.507935,47.921698","level":"district","districts":[]},{"citycode":"0452","adcode":"230230","name":"\u514b\u4e1c\u53bf","center":"126.249124,48.041562","level":"district","districts":[]},{"citycode":"0452","adcode":"230223","name":"\u4f9d\u5b89\u53bf","center":"125.306161,47.893442","level":"district","districts":[]},{"citycode":"0452","adcode":"230227","name":"\u5bcc\u88d5\u53bf","center":"124.474411,47.774038","level":"district","districts":[]},{"citycode":"0452","adcode":"230208","name":"\u6885\u91cc\u65af\u8fbe\u65a1\u5c14\u65cf\u533a","center":"123.752482,47.309755","level":"district","districts":[]},{"citycode":"0452","adcode":"230221","name":"\u9f99\u6c5f\u53bf","center":"123.204953,47.338512","level":"district","districts":[]},{"citycode":"0452","adcode":"230207","name":"\u78be\u5b50\u5c71\u533a","center":"122.887548,47.516614","level":"district","districts":[]},{"citycode":"0452","adcode":"230206","name":"\u5bcc\u62c9\u5c14\u57fa\u533a","center":"123.628926,47.20873","level":"district","districts":[]},{"citycode":"0452","adcode":"230202","name":"\u9f99\u6c99\u533a","center":"123.958447,47.317103","level":"district","districts":[]},{"citycode":"0452","adcode":"230205","name":"\u6602\u6602\u6eaa\u533a","center":"123.822137,47.154806","level":"district","districts":[]},{"citycode":"0452","adcode":"230224","name":"\u6cf0\u6765\u53bf","center":"123.416631,46.393694","level":"district","districts":[]},{"citycode":"0452","adcode":"230231","name":"\u62dc\u6cc9\u53bf","center":"126.09905,47.59586","level":"district","districts":[]},{"citycode":"0452","adcode":"230203","name":"\u5efa\u534e\u533a","center":"123.95555,47.354212","level":"district","districts":[]},{"citycode":"0452","adcode":"230204","name":"\u94c1\u950b\u533a","center":"123.978079,47.340719","level":"district","districts":[]},{"citycode":"0452","adcode":"230281","name":"\u8bb7\u6cb3\u5e02","center":"124.88293,48.466829","level":"district","districts":[]}]},{"citycode":"0455","adcode":"231200","name":"\u7ee5\u5316\u5e02","center":"126.968714,46.654147","level":"city","districts":[{"citycode":"0455","adcode":"231226","name":"\u7ee5\u68f1\u53bf","center":"127.114928,47.235814","level":"district","districts":[]},{"citycode":"0455","adcode":"231283","name":"\u6d77\u4f26\u5e02","center":"126.930191,47.450661","level":"district","districts":[]},{"citycode":"0455","adcode":"231224","name":"\u5e86\u5b89\u53bf","center":"127.505861,46.864084","level":"district","districts":[]},{"citycode":"0455","adcode":"231202","name":"\u5317\u6797\u533a","center":"126.984995,46.638114","level":"district","districts":[]},{"citycode":"0455","adcode":"231221","name":"\u671b\u594e\u53bf","center":"126.486333,46.832185","level":"district","districts":[]},{"citycode":"0455","adcode":"231223","name":"\u9752\u5188\u53bf","center":"126.099314,46.70398","level":"district","districts":[]},{"citycode":"0455","adcode":"231225","name":"\u660e\u6c34\u53bf","center":"125.90601,47.173649","level":"district","districts":[]},{"citycode":"0455","adcode":"231222","name":"\u5170\u897f\u53bf","center":"126.287734,46.252966","level":"district","districts":[]},{"citycode":"0455","adcode":"231282","name":"\u8087\u4e1c\u5e02","center":"125.962419,46.050664","level":"district","districts":[]},{"citycode":"0455","adcode":"231281","name":"\u5b89\u8fbe\u5e02","center":"125.307629,46.451882","level":"district","districts":[]}]},{"citycode":"0459","adcode":"230600","name":"\u5927\u5e86\u5e02","center":"125.104078,46.589498","level":"city","districts":[{"citycode":"0459","adcode":"230605","name":"\u7ea2\u5c97\u533a","center":"124.891041,46.398567","level":"district","districts":[]},{"citycode":"0459","adcode":"230606","name":"\u5927\u540c\u533a","center":"124.812221,46.039972","level":"district","districts":[]},{"citycode":"0459","adcode":"230623","name":"\u6797\u7538\u53bf","center":"124.863628,47.171677","level":"district","districts":[]},{"citycode":"0459","adcode":"230604","name":"\u8ba9\u80e1\u8def\u533a","center":"124.889858,46.642567","level":"district","districts":[]},{"citycode":"0459","adcode":"230624","name":"\u675c\u5c14\u4f2f\u7279\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","center":"124.442829,46.862348","level":"district","districts":[]},{"citycode":"0459","adcode":"230602","name":"\u8428\u5c14\u56fe\u533a","center":"125.135269,46.629281","level":"district","districts":[]},{"citycode":"0459","adcode":"230603","name":"\u9f99\u51e4\u533a","center":"125.135093,46.562369","level":"district","districts":[]},{"citycode":"0459","adcode":"230621","name":"\u8087\u5dde\u53bf","center":"125.268449,45.699543","level":"district","districts":[]},{"citycode":"0459","adcode":"230622","name":"\u8087\u6e90\u53bf","center":"125.078311,45.518982","level":"district","districts":[]}]},{"citycode":"0451","adcode":"230100","name":"\u54c8\u5c14\u6ee8\u5e02","center":"126.53505,45.802981","level":"city","districts":[{"citycode":"0451","adcode":"230126","name":"\u5df4\u5f66\u53bf","center":"127.403521,46.086182","level":"district","districts":[]},{"citycode":"0451","adcode":"230123","name":"\u4f9d\u5170\u53bf","center":"129.567777,46.325536","level":"district","districts":[]},{"citycode":"0451","adcode":"230128","name":"\u901a\u6cb3\u53bf","center":"128.74629,45.990214","level":"district","districts":[]},{"citycode":"0451","adcode":"230127","name":"\u6728\u5170\u53bf","center":"128.043194,45.950649","level":"district","districts":[]},{"citycode":"0451","adcode":"230124","name":"\u65b9\u6b63\u53bf","center":"128.829513,45.851673","level":"district","districts":[]},{"citycode":"0451","adcode":"230125","name":"\u5bbe\u53bf","center":"127.466372,45.746313","level":"district","districts":[]},{"citycode":"0451","adcode":"230129","name":"\u5ef6\u5bff\u53bf","center":"128.311071,45.445956","level":"district","districts":[]},{"citycode":"0451","adcode":"230183","name":"\u5c1a\u5fd7\u5e02","center":"128.009218,45.209199","level":"district","districts":[]},{"citycode":"0451","adcode":"230111","name":"\u547c\u5170\u533a","center":"126.587704,45.889557","level":"district","districts":[]},{"citycode":"0451","adcode":"230109","name":"\u677e\u5317\u533a","center":"126.516602,45.794991","level":"district","districts":[]},{"citycode":"0451","adcode":"230113","name":"\u53cc\u57ce\u533a","center":"126.31279,45.382873","level":"district","districts":[]},{"citycode":"0451","adcode":"230102","name":"\u9053\u91cc\u533a","center":"126.616912,45.755832","level":"district","districts":[]},{"citycode":"0451","adcode":"230108","name":"\u5e73\u623f\u533a","center":"126.63675,45.597529","level":"district","districts":[]},{"citycode":"0451","adcode":"230104","name":"\u9053\u5916\u533a","center":"126.649094,45.792351","level":"district","districts":[]},{"citycode":"0451","adcode":"230112","name":"\u963f\u57ce\u533a","center":"126.957984,45.548671","level":"district","districts":[]},{"citycode":"0451","adcode":"230110","name":"\u9999\u574a\u533a","center":"126.662959,45.707871","level":"district","districts":[]},{"citycode":"0451","adcode":"230103","name":"\u5357\u5c97\u533a","center":"126.66882,45.759967","level":"district","districts":[]},{"citycode":"0451","adcode":"230184","name":"\u4e94\u5e38\u5e02","center":"127.167501,44.932164","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"650000","name":"\u65b0\u7586\u7ef4\u543e\u5c14\u81ea\u6cbb\u533a","center":"87.628579,43.793301","level":"province","districts":[{"citycode":"1906","adcode":"659005","name":"\u5317\u5c6f\u5e02","center":"87.834419,47.326733","level":"city","districts":[{"citycode":"1906","adcode":"659005","name":"\u6d77\u5ddd\u9547","center":"87.518571,47.409865","level":"street","districts":[]},{"citycode":"1906","adcode":"659005","name":"\u4e30\u5e86\u9547","center":"87.927121,47.333864","level":"street","districts":[]},{"citycode":"1906","adcode":"659005","name":"\u53cc\u6e20\u9547","center":"88.122468,47.126579","level":"street","districts":[]},{"citycode":"1906","adcode":"659005","name":"\u5317\u5c6f\u9547","center":"87.871109,47.357426","level":"street","districts":[]}]},{"citycode":"1909","adcode":"659007","name":"\u53cc\u6cb3\u5e02","center":"82.35365587,44.84052409","level":"city","districts":[{"citycode":"1909","adcode":"659007","name":"\u5175\u56e2\u516b\u5341\u4e5d\u56e2","center":"82.455805,44.812134","level":"street","districts":[]},{"citycode":"1909","adcode":"659007","name":"\u535a\u6cb3\u9547","center":"82.158974,44.796350","level":"street","districts":[]},{"citycode":"1909","adcode":"659007","name":"\u53cc\u6865\u9547","center":"82.490803,44.746864","level":"street","districts":[]},{"citycode":"1909","adcode":"659007","name":"\u77f3\u5cea\u9547","center":"82.066675,45.040830","level":"street","districts":[]},{"citycode":"1909","adcode":"659007","name":"\u53cc\u4e50\u9547","center":"82.473143,44.826624","level":"street","districts":[]}]},{"citycode":"1996","adcode":"659006","name":"\u94c1\u95e8\u5173\u5e02","center":"85.670291,41.862997","level":"city","districts":[{"citycode":"1996","adcode":"659006","name":"\u7c73\u5170\u9547","center":"89.003715,39.332614","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u5357\u5c6f\u9547","center":"84.116298,37.768112","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u5929\u6e56\u9547","center":"86.524925,42.010663","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u5f00\u6cfd\u9547","center":"86.632672,42.311192","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u9ad8\u6865\u9547","center":"87.057052,42.213140","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u535a\u53e4\u5176\u9547","center":"85.584894,41.882542","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u53cc\u4e30\u9547","center":"85.635217,41.880304","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u6cb3\u7554\u9547","center":"86.605010,42.167593","level":"street","districts":[]},{"citycode":"1996","adcode":"659006","name":"\u91d1\u5c71\u9547","center":"85.322762,38.186220","level":"street","districts":[]}]},{"citycode":"0909","adcode":"652700","name":"\u535a\u5c14\u5854\u62c9\u8499\u53e4\u81ea\u6cbb\u5dde","center":"82.066363,44.906039","level":"city","districts":[{"citycode":"0909","adcode":"652723","name":"\u6e29\u6cc9\u53bf","center":"81.024827,44.968857","level":"district","districts":[]},{"citycode":"0909","adcode":"652702","name":"\u963f\u62c9\u5c71\u53e3\u5e02","center":"82.554609,45.173274","level":"district","districts":[]},{"citycode":"0909","adcode":"652701","name":"\u535a\u4e50\u5e02","center":"82.051433,44.853882","level":"district","districts":[]},{"citycode":"0909","adcode":"652722","name":"\u7cbe\u6cb3\u53bf","center":"82.890709,44.599202","level":"district","districts":[]}]},{"citycode":"1999","adcode":"659008","name":"\u53ef\u514b\u8fbe\u62c9\u5e02","center":"80.994153,43.940381","level":"city","districts":[{"citycode":"1999","adcode":"659008","name":"\u957f\u4e30\u9547","center":"80.990266,43.889725","level":"street","districts":[]},{"citycode":"1999","adcode":"659008","name":"\u91d1\u5c6f\u9547","center":"80.606773,43.765174","level":"street","districts":[]},{"citycode":"1999","adcode":"659008","name":"\u90fd\u62c9\u5854\u53e3\u5cb8","center":"80.661467,43.706479","level":"street","districts":[]},{"citycode":"1999","adcode":"659008","name":"\u6986\u6811\u5e84\u9547","center":"80.484243,43.931223","level":"street","districts":[]},{"citycode":"1999","adcode":"659008","name":"\u82c7\u6e56\u9547","center":"80.648370,44.180308","level":"street","districts":[]},{"citycode":"1999","adcode":"659008","name":"\u91d1\u6881\u9547","center":"81.021339,43.908278","level":"street","districts":[]}]},{"citycode":"0901","adcode":"654200","name":"\u5854\u57ce\u5730\u533a","center":"82.980316,46.745364","level":"city","districts":[{"citycode":"0901","adcode":"654224","name":"\u6258\u91cc\u53bf","center":"83.606372,45.948935","level":"district","districts":[]},{"citycode":"0901","adcode":"654226","name":"\u548c\u5e03\u514b\u8d5b\u5c14\u8499\u53e4\u81ea\u6cbb\u53bf","center":"85.728328,46.793235","level":"district","districts":[]},{"citycode":"0901","adcode":"654221","name":"\u989d\u654f\u53bf","center":"83.628303,46.524673","level":"district","districts":[]},{"citycode":"0901","adcode":"654202","name":"\u4e4c\u82cf\u5e02","center":"84.713762,44.418693","level":"district","districts":[]},{"citycode":"0901","adcode":"654203","name":"\u6c99\u6e7e\u5e02","center":"85.619483,44.326267","level":"district","districts":[]},{"citycode":"0901","adcode":"654225","name":"\u88d5\u6c11\u53bf","center":"82.982252,46.201049","level":"district","districts":[]},{"citycode":"0901","adcode":"654201","name":"\u5854\u57ce\u5e02","center":"82.986923,46.751669","level":"district","districts":[]}]},{"citycode":"1903","adcode":"659009","name":"\u6606\u7389\u5e02","center":"79.270193,37.215372","level":"city","districts":[{"citycode":"1903","adcode":"659009","name":"\u8001\u5175\u9547","center":"79.603916,37.366638","level":"street","districts":[]},{"citycode":"1903","adcode":"659009","name":"\u6606\u7267\u9547","center":"81.029494,36.315217","level":"street","districts":[]},{"citycode":"1903","adcode":"659009","name":"\u6606\u6cc9\u9547","center":"78.514768,37.566112","level":"street","districts":[]},{"citycode":"1903","adcode":"659009","name":"\u5175\u56e2\u4e8c\u4e8c\u56db\u56e2","center":"79.377194,37.416433","level":"street","districts":[]}]},{"citycode":"0903","adcode":"653200","name":"\u548c\u7530\u5730\u533a","center":"79.921646,37.114406","level":"city","districts":[{"citycode":"0903","adcode":"653226","name":"\u4e8e\u7530\u53bf","center":"81.677417,36.85708","level":"district","districts":[]},{"citycode":"0903","adcode":"653227","name":"\u6c11\u4e30\u53bf","center":"82.695946,37.064428","level":"district","districts":[]},{"citycode":"0903","adcode":"653201","name":"\u548c\u7530\u5e02","center":"79.912881,37.112246","level":"district","districts":[]},{"citycode":"0903","adcode":"653224","name":"\u6d1b\u6d66\u53bf","center":"80.179911,37.066226","level":"district","districts":[]},{"citycode":"0903","adcode":"653223","name":"\u76ae\u5c71\u53bf","center":"78.28548,37.578264","level":"district","districts":[]},{"citycode":"0903","adcode":"653222","name":"\u58a8\u7389\u53bf","center":"79.728434,37.277518","level":"district","districts":[]},{"citycode":"0903","adcode":"653225","name":"\u7b56\u52d2\u53bf","center":"80.801433,36.99785","level":"district","districts":[]},{"citycode":"0903","adcode":"653221","name":"\u548c\u7530\u53bf","center":"79.848009,37.248776","level":"district","districts":[]}]},{"citycode":"0906","adcode":"654300","name":"\u963f\u52d2\u6cf0\u5730\u533a","center":"88.141253,47.844924","level":"city","districts":[{"citycode":"0906","adcode":"654321","name":"\u5e03\u5c14\u6d25\u53bf","center":"86.875043,47.701892","level":"district","districts":[]},{"citycode":"0906","adcode":"654324","name":"\u54c8\u5df4\u6cb3\u53bf","center":"86.418621,48.060846","level":"district","districts":[]},{"citycode":"0906","adcode":"654322","name":"\u5bcc\u8574\u53bf","center":"89.525463,46.994046","level":"district","districts":[]},{"citycode":"0906","adcode":"654326","name":"\u5409\u6728\u4e43\u53bf","center":"85.874096,47.443101","level":"district","districts":[]},{"citycode":"0906","adcode":"654325","name":"\u9752\u6cb3\u53bf","center":"90.375159,46.678532","level":"district","districts":[]},{"citycode":"0906","adcode":"654323","name":"\u798f\u6d77\u53bf","center":"87.486703,47.111918","level":"district","districts":[]},{"citycode":"0906","adcode":"654301","name":"\u963f\u52d2\u6cf0\u5e02","center":"88.131842,47.827308","level":"district","districts":[]}]},{"citycode":"0993","adcode":"659001","name":"\u77f3\u6cb3\u5b50\u5e02","center":"86.080397,44.305368","level":"city","districts":[{"citycode":"0993","adcode":"659001","name":"\u5175\u56e2\u4e00\u4e94\u4e8c\u56e2","center":"86.070393,44.282700","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u5411\u9633\u8857\u9053","center":"86.039719,44.342873","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u7ea2\u5c71\u8857\u9053","center":"86.048043,44.268209","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u5175\u56e2\u4e00\u56db\u56db\u56e2","center":"85.912346,44.252475","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u4e1c\u57ce\u8857\u9053","center":"86.068708,44.287316","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u77f3\u6cb3\u5b50\u9547","center":"86.102202,44.135229","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u8001\u8857\u8857\u9053","center":"85.990921,44.349559","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u65b0\u57ce\u8857\u9053","center":"85.982288,44.289311","level":"street","districts":[]},{"citycode":"0993","adcode":"659001","name":"\u5317\u6cc9\u9547","center":"86.098308,44.434587","level":"street","districts":[]}]},{"citycode":"0994","adcode":"652300","name":"\u660c\u5409\u56de\u65cf\u81ea\u6cbb\u5dde","center":"87.308995,44.011044","level":"city","districts":[{"citycode":"0994","adcode":"652325","name":"\u5947\u53f0\u53bf","center":"89.593879,44.022001","level":"district","districts":[]},{"citycode":"0994","adcode":"652324","name":"\u739b\u7eb3\u65af\u53bf","center":"86.20488,44.284601","level":"district","districts":[]},{"citycode":"0994","adcode":"652323","name":"\u547c\u56fe\u58c1\u53bf","center":"86.871532,44.179362","level":"district","districts":[]},{"citycode":"0994","adcode":"652328","name":"\u6728\u5792\u54c8\u8428\u514b\u81ea\u6cbb\u53bf","center":"90.286013,43.834631","level":"district","districts":[]},{"citycode":"0994","adcode":"652302","name":"\u961c\u5eb7\u5e02","center":"87.953826,44.164525","level":"district","districts":[]},{"citycode":"0994","adcode":"652327","name":"\u5409\u6728\u8428\u5c14\u53bf","center":"89.179698,44.000404","level":"district","districts":[]},{"citycode":"0994","adcode":"652301","name":"\u660c\u5409\u5e02","center":"87.267432,44.014468","level":"district","districts":[]}]},{"citycode":"0996","adcode":"652800","name":"\u5df4\u97f3\u90ed\u695e\u8499\u53e4\u81ea\u6cbb\u5dde","center":"86.145298,41.764115","level":"city","districts":[{"citycode":"0996","adcode":"652801","name":"\u5e93\u5c14\u52d2\u5e02","center":"86.174633,41.725891","level":"district","districts":[]},{"citycode":"0996","adcode":"652822","name":"\u8f6e\u53f0\u53bf","center":"84.251508,41.778043","level":"district","districts":[]},{"citycode":"0996","adcode":"652823","name":"\u5c09\u7281\u53bf","center":"86.261613,41.343871","level":"district","districts":[]},{"citycode":"0996","adcode":"652825","name":"\u4e14\u672b\u53bf","center":"85.529619,38.145749","level":"district","districts":[]},{"citycode":"0996","adcode":"652827","name":"\u548c\u9759\u53bf","center":"86.384065,42.323625","level":"district","districts":[]},{"citycode":"0996","adcode":"652826","name":"\u7109\u8006\u56de\u65cf\u81ea\u6cbb\u53bf","center":"86.57434,42.059509","level":"district","districts":[]},{"citycode":"0996","adcode":"652824","name":"\u82e5\u7f8c\u53bf","center":"88.167226,39.022626","level":"district","districts":[]},{"citycode":"0996","adcode":"652829","name":"\u535a\u6e56\u53bf","center":"86.632116,41.980745","level":"district","districts":[]},{"citycode":"0996","adcode":"652828","name":"\u548c\u7855\u53bf","center":"86.877688,42.28361","level":"district","districts":[]}]},{"citycode":"0999","adcode":"654000","name":"\u4f0a\u7281\u54c8\u8428\u514b\u81ea\u6cbb\u5dde","center":"81.323691,43.917106","level":"city","districts":[{"citycode":"0999","adcode":"654021","name":"\u4f0a\u5b81\u53bf","center":"81.52745,43.977119","level":"district","districts":[]},{"citycode":"0999","adcode":"654024","name":"\u5de9\u7559\u53bf","center":"82.231219,43.48313","level":"district","districts":[]},{"citycode":"0999","adcode":"654027","name":"\u7279\u514b\u65af\u53bf","center":"81.835732,43.218435","level":"district","districts":[]},{"citycode":"0999","adcode":"654026","name":"\u662d\u82cf\u53bf","center":"81.130974,43.157293","level":"district","districts":[]},{"citycode":"0999","adcode":"654023","name":"\u970d\u57ce\u53bf","center":"80.878845,44.056329","level":"district","districts":[]},{"citycode":"0999","adcode":"654022","name":"\u5bdf\u5e03\u67e5\u5c14\u9521\u4f2f\u81ea\u6cbb\u53bf","center":"81.151337,43.840726","level":"district","districts":[]},{"citycode":"0999","adcode":"654004","name":"\u970d\u5c14\u679c\u65af\u5e02","center":"80.414614,44.218381","level":"district","districts":[]},{"citycode":"0999","adcode":"654002","name":"\u4f0a\u5b81\u5e02","center":"81.277715,43.908021","level":"district","districts":[]},{"citycode":"0999","adcode":"654003","name":"\u594e\u5c6f\u5e02","center":"84.903216,44.426452","level":"district","districts":[]},{"citycode":"0999","adcode":"654028","name":"\u5c3c\u52d2\u514b\u53bf","center":"82.511884,43.798627","level":"district","districts":[]},{"citycode":"0999","adcode":"654025","name":"\u65b0\u6e90\u53bf","center":"83.233002,43.434803","level":"district","districts":[]}]},{"citycode":"1997","adcode":"659002","name":"\u963f\u62c9\u5c14\u5e02","center":"81.280532,40.547205","level":"city","districts":[{"citycode":"1997","adcode":"659002","name":"\u739b\u6ee9\u9547","center":"80.654296,40.656858","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u6c38\u5b81\u9547","center":"79.695912,41.549386","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u82b1\u6865\u9547","center":"81.561898,40.627686","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u6c99\u6cb3\u9547","center":"80.734788,41.289273","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u6258\u5580\u4f9d\u4e61","center":"81.354140,40.581819","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u9752\u677e\u8def\u8857\u9053","center":"81.254474,40.542004","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u5854\u95e8\u9547","center":"80.799573,40.597311","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u5357\u53e3\u8857\u9053","center":"81.298804,40.515367","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u91d1\u6768\u9547","center":"81.873439,40.928322","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u91d1\u94f6\u5ddd\u9547","center":"80.086552,40.691135","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u65b0\u4e95\u5b50\u9547","center":"80.027429,40.565638","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u5175\u56e2\u519c\u4e00\u5e08\u6c99\u4e95\u5b50\u6c34\u5229\u7ba1\u7406\u5904","center":"79.726734,40.436977","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u7518\u6cc9\u9547","center":"79.814651,40.477280","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u5854\u5357\u9547","center":"81.360828,40.548449","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u91d1\u94f6\u5ddd\u8def\u8857\u9053","center":"81.262521,40.536818","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u660c\u5b89\u9547","center":"81.281049,40.575570","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u65b0\u5f00\u5cad\u9547","center":"80.616820,40.429603","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u5e78\u798f\u9547","center":"81.665359,40.707751","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u5e78\u798f\u8def\u8857\u9053","center":"81.270919,40.577037","level":"street","districts":[]},{"citycode":"1997","adcode":"659002","name":"\u53cc\u57ce\u9547","center":"80.403007,41.029144","level":"street","districts":[]}]},{"citycode":"0998","adcode":"653100","name":"\u5580\u4ec0\u5730\u533a","center":"75.990618,39.470215","level":"city","districts":[{"citycode":"0998","adcode":"653129","name":"\u4f3d\u5e08\u53bf","center":"76.723719,39.488181","level":"district","districts":[]},{"citycode":"0998","adcode":"653127","name":"\u9ea6\u76d6\u63d0\u53bf","center":"77.609099,38.898986","level":"district","districts":[]},{"citycode":"0998","adcode":"653125","name":"\u838e\u8f66\u53bf","center":"77.223197,38.390881","level":"district","districts":[]},{"citycode":"0998","adcode":"653126","name":"\u53f6\u57ce\u53bf","center":"77.413669,37.882994","level":"district","districts":[]},{"citycode":"0998","adcode":"653131","name":"\u5854\u4ec0\u5e93\u5c14\u5e72\u5854\u5409\u514b\u81ea\u6cbb\u53bf","center":"75.229889,37.772094","level":"district","districts":[]},{"citycode":"0998","adcode":"653124","name":"\u6cfd\u666e\u53bf","center":"77.260375,38.184639","level":"district","districts":[]},{"citycode":"0998","adcode":"653130","name":"\u5df4\u695a\u53bf","center":"78.54799,39.79923","level":"district","districts":[]},{"citycode":"0998","adcode":"653123","name":"\u82f1\u5409\u6c99\u53bf","center":"76.175729,38.930381","level":"district","districts":[]},{"citycode":"0998","adcode":"653128","name":"\u5cb3\u666e\u6e56\u53bf","center":"76.821269,39.219857","level":"district","districts":[]},{"citycode":"0998","adcode":"653121","name":"\u758f\u9644\u53bf","center":"75.862839,39.375052","level":"district","districts":[]},{"citycode":"0998","adcode":"653101","name":"\u5580\u4ec0\u5e02","center":"75.993936,39.46823","level":"district","districts":[]},{"citycode":"0998","adcode":"653122","name":"\u758f\u52d2\u53bf","center":"76.047169,39.401173","level":"district","districts":[]}]},{"citycode":"0908","adcode":"653000","name":"\u514b\u5b5c\u52d2\u82cf\u67ef\u5c14\u514b\u5b5c\u81ea\u6cbb\u5dde","center":"76.168157,39.716236","level":"city","districts":[{"citycode":"0908","adcode":"653001","name":"\u963f\u56fe\u4ec0\u5e02","center":"76.084541,39.667719","level":"district","districts":[]},{"citycode":"0908","adcode":"653024","name":"\u4e4c\u6070\u53bf","center":"75.259228,39.7205","level":"district","districts":[]},{"citycode":"0908","adcode":"653023","name":"\u963f\u5408\u5947\u53bf","center":"78.402073,40.937581","level":"district","districts":[]},{"citycode":"0908","adcode":"653022","name":"\u963f\u514b\u9676\u53bf","center":"75.955053,39.147592","level":"district","districts":[]}]},{"citycode":"0990","adcode":"650200","name":"\u514b\u62c9\u739b\u4f9d\u5e02","center":"84.889239,45.577712","level":"city","districts":[{"citycode":"0990","adcode":"650205","name":"\u4e4c\u5c14\u79be\u533a","center":"85.687497,46.093451","level":"district","districts":[]},{"citycode":"0990","adcode":"650202","name":"\u72ec\u5c71\u5b50\u533a","center":"84.886973,44.328096","level":"district","districts":[]},{"citycode":"0990","adcode":"650204","name":"\u767d\u78b1\u6ee9\u533a","center":"85.119047,45.685416","level":"district","districts":[]},{"citycode":"0990","adcode":"650203","name":"\u514b\u62c9\u739b\u4f9d\u533a","center":"84.867862,45.602347","level":"district","districts":[]}]},{"citycode":"0995","adcode":"650400","name":"\u5410\u9c81\u756a\u5e02","center":"89.250261,42.972736","level":"city","districts":[{"citycode":"0995","adcode":"650402","name":"\u9ad8\u660c\u533a","center":"89.185891,42.942728","level":"district","districts":[]},{"citycode":"0995","adcode":"650421","name":"\u912f\u5584\u53bf","center":"90.242843,42.900575","level":"district","districts":[]},{"citycode":"0995","adcode":"650422","name":"\u6258\u514b\u900a\u53bf","center":"88.643739,42.802585","level":"district","districts":[]}]},{"citycode":"0902","adcode":"650500","name":"\u54c8\u5bc6\u5e02","center":"93.515053,42.819346","level":"city","districts":[{"citycode":"0902","adcode":"650522","name":"\u4f0a\u543e\u53bf","center":"94.697074,43.254978","level":"district","districts":[]},{"citycode":"0902","adcode":"650521","name":"\u5df4\u91cc\u5764\u54c8\u8428\u514b\u81ea\u6cbb\u53bf","center":"93.016563,43.598756","level":"district","districts":[]},{"citycode":"0902","adcode":"650502","name":"\u4f0a\u5dde\u533a","center":"93.425934,42.835492","level":"district","districts":[]}]},{"citycode":"2940","adcode":"659011","name":"\u65b0\u661f\u5e02","center":"93.74831,42.797043","level":"city","districts":[{"citycode":"2940","adcode":"659011","name":"\u5175\u56e2\u7ea2\u661f\u56db\u573a","center":"94.068557,42.529865","level":"street","districts":[]},{"citycode":"2940","adcode":"659011","name":"\u5175\u56e2\u9ec4\u7530\u519c\u573a","center":"93.719461,42.567696","level":"street","districts":[]},{"citycode":"2940","adcode":"659011","name":"\u5175\u56e2\u7ea2\u661f\u4e00\u573a","center":"93.645240,42.686620","level":"street","districts":[]}]},{"citycode":"1998","adcode":"659003","name":"\u56fe\u6728\u8212\u514b\u5e02","center":"79.074965,39.867776","level":"city","districts":[{"citycode":"1998","adcode":"659003","name":"\u6d77\u5b89\u9547","center":"78.756041,39.822379","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u5510\u9a7f\u9547","center":"79.290232,39.988845","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u524d\u6d77\u8857\u9053","center":"79.077771,39.855038","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u5580\u62c9\u62dc\u52d2\u9547","center":"79.011211,39.852615","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u9f50\u5e72\u5374\u52d2\u8857\u9053","center":"79.090585,39.875314","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u91d1\u80e1\u6768\u9547","center":"79.321433,40.031839","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u590f\u6cb3\u9547","center":"79.231481,39.954869","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u6c38\u5b89\u9547","center":"79.192620,39.916764","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u6c38\u5b89\u575d\u8857\u9053","center":"79.025712,39.850697","level":"street","districts":[]},{"citycode":"1998","adcode":"659003","name":"\u8349\u6e56\u9547","center":"75.990801,39.261822","level":"street","districts":[]}]},{"citycode":"0997","adcode":"652900","name":"\u963f\u514b\u82cf\u5730\u533a","center":"80.265068,41.170712","level":"city","districts":[{"citycode":"0997","adcode":"652926","name":"\u62dc\u57ce\u53bf","center":"81.851289,41.795289","level":"district","districts":[]},{"citycode":"0997","adcode":"652925","name":"\u65b0\u548c\u53bf","center":"82.620371,41.552097","level":"district","districts":[]},{"citycode":"0997","adcode":"652902","name":"\u5e93\u8f66\u5e02","center":"82.998544,41.719073","level":"district","districts":[]},{"citycode":"0997","adcode":"652924","name":"\u6c99\u96c5\u53bf","center":"82.781774,41.221413","level":"district","districts":[]},{"citycode":"0997","adcode":"652901","name":"\u963f\u514b\u82cf\u5e02","center":"80.263387,41.16755","level":"district","districts":[]},{"citycode":"0997","adcode":"652928","name":"\u963f\u74e6\u63d0\u53bf","center":"80.375053,40.643647","level":"district","districts":[]},{"citycode":"0997","adcode":"652929","name":"\u67ef\u576a\u53bf","center":"79.054019,40.501645","level":"district","districts":[]},{"citycode":"0997","adcode":"652922","name":"\u6e29\u5bbf\u53bf","center":"80.231563,41.273561","level":"district","districts":[]},{"citycode":"0997","adcode":"652927","name":"\u4e4c\u4ec0\u53bf","center":"79.22118,41.222706","level":"district","districts":[]}]},{"citycode":"0991","adcode":"650100","name":"\u4e4c\u9c81\u6728\u9f50\u5e02","center":"87.616824,43.825377","level":"city","districts":[{"citycode":"0991","adcode":"650107","name":"\u8fbe\u5742\u57ce\u533a","center":"88.311099,43.363668","level":"district","districts":[]},{"citycode":"0991","adcode":"650106","name":"\u5934\u5c6f\u6cb3\u533a","center":"87.42582303,43.87605225","level":"district","districts":[]},{"citycode":"0991","adcode":"650104","name":"\u65b0\u5e02\u533a","center":"87.592684,43.893023","level":"district","districts":[]},{"citycode":"0991","adcode":"650105","name":"\u6c34\u78e8\u6c9f\u533a","center":"87.64208,43.832714","level":"district","districts":[]},{"citycode":"0991","adcode":"650109","name":"\u7c73\u4e1c\u533a","center":"87.655122,43.97444","level":"district","districts":[]},{"citycode":"0991","adcode":"650102","name":"\u5929\u5c71\u533a","center":"87.631986,43.794312","level":"district","districts":[]},{"citycode":"0991","adcode":"650103","name":"\u6c99\u4f9d\u5df4\u514b\u533a","center":"87.598043,43.800994","level":"district","districts":[]},{"citycode":"0991","adcode":"650121","name":"\u4e4c\u9c81\u6728\u9f50\u53bf","center":"87.464257,43.509016","level":"district","districts":[]}]},{"citycode":"0992","adcode":"659010","name":"\u80e1\u6768\u6cb3\u5e02","center":"84.827592,44.692894","level":"city","districts":[{"citycode":"0992","adcode":"659010","name":"\u5175\u56e2\u4e00\u4e8c\u4e5d\u56e2","center":"84.733352,44.711517","level":"street","districts":[]},{"citycode":"0992","adcode":"659010","name":"\u5175\u56e2\u4e00\u4e09\u96f6\u56e2","center":"84.642314,44.754040","level":"street","districts":[]}]},{"citycode":"1994","adcode":"659004","name":"\u4e94\u5bb6\u6e20\u5e02","center":"87.542852,44.166489","level":"city","districts":[{"citycode":"1994","adcode":"659004","name":"\u68a7\u6850\u9547","center":"87.592476,44.269442","level":"street","districts":[]},{"citycode":"1994","adcode":"659004","name":"\u4eba\u6c11\u8def\u8857\u9053","center":"87.572823,44.182157","level":"street","districts":[]},{"citycode":"1994","adcode":"659004","name":"\u5175\u56e2\u4e00\u96f6\u4e00\u56e2","center":"87.556234,44.175160","level":"street","districts":[]},{"citycode":"1994","adcode":"659004","name":"\u8521\u5bb6\u6e56\u9547","center":"87.407474,44.531659","level":"street","districts":[]},{"citycode":"1994","adcode":"659004","name":"\u9752\u6e56\u8def\u8857\u9053","center":"87.524481,44.176392","level":"street","districts":[]},{"citycode":"1994","adcode":"659004","name":"\u519b\u57a6\u8def\u8857\u9053","center":"87.508160,44.188534","level":"street","districts":[]}]},{"citycode":"2941","adcode":"659012","name":"\u767d\u6768\u5e02","center":"82.896936,46.727959","level":"city","districts":[{"citycode":"2941","adcode":"659012","name":"\u5175\u56e2\u519c\u4e5d\u5e08\u4e00\u516d\u56db\u56e2","center":"83.005882,47.009769","level":"street","districts":[]},{"citycode":"2941","adcode":"659012","name":"\u5175\u56e2\u519c\u4e5d\u5e08\u4e00\u516d\u4e09\u56e2","center":"82.819037,46.690412","level":"street","districts":[]},{"citycode":"2941","adcode":"659012","name":"\u5175\u56e2\u519c\u4e5d\u5e08\u4e00\u516d\u4e00\u56e2","center":"82.345391,45.912466","level":"street","districts":[]},{"citycode":"2941","adcode":"659012","name":"\u5175\u56e2\u519c\u4e5d\u5e08\u4e00\u516d\u4e94\u56e2","center":"84.347734,46.825079","level":"street","districts":[]}]}]},{"citycode":[],"adcode":"420000","name":"\u6e56\u5317\u7701","center":"114.341552,30.546222","level":"province","districts":[{"citycode":"0710","adcode":"420600","name":"\u8944\u9633\u5e02","center":"112.121743,32.010161","level":"city","districts":[{"citycode":"0710","adcode":"420625","name":"\u8c37\u57ce\u53bf","center":"111.653077,32.26339","level":"district","districts":[]},{"citycode":"0710","adcode":"420626","name":"\u4fdd\u5eb7\u53bf","center":"111.261308,31.87831","level":"district","districts":[]},{"citycode":"0710","adcode":"420683","name":"\u67a3\u9633\u5e02","center":"112.772723,32.128968","level":"district","districts":[]},{"citycode":"0710","adcode":"420624","name":"\u5357\u6f33\u53bf","center":"111.838997,31.774649","level":"district","districts":[]},{"citycode":"0710","adcode":"420602","name":"\u8944\u57ce\u533a","center":"112.134025,32.009932","level":"district","districts":[]},{"citycode":"0710","adcode":"420682","name":"\u8001\u6cb3\u53e3\u5e02","center":"111.683861,32.359068","level":"district","districts":[]},{"citycode":"0710","adcode":"420606","name":"\u6a0a\u57ce\u533a","center":"112.135241,32.045065","level":"district","districts":[]},{"citycode":"0710","adcode":"420607","name":"\u8944\u5dde\u533a","center":"112.211365,32.088651","level":"district","districts":[]},{"citycode":"0710","adcode":"420684","name":"\u5b9c\u57ce\u5e02","center":"112.256486,31.720278","level":"district","districts":[]}]},{"citycode":"0719","adcode":"420300","name":"\u5341\u5830\u5e02","center":"110.798921,32.629057","level":"city","districts":[{"citycode":"0719","adcode":"420304","name":"\u90e7\u9633\u533a","center":"110.812101,32.834847","level":"district","districts":[]},{"citycode":"0719","adcode":"420303","name":"\u5f20\u6e7e\u533a","center":"110.769132,32.652297","level":"district","districts":[]},{"citycode":"0719","adcode":"420302","name":"\u8305\u7bad\u533a","center":"110.813478,32.591847","level":"district","districts":[]},{"citycode":"0719","adcode":"420324","name":"\u7af9\u6eaa\u53bf","center":"109.715322,32.318257","level":"district","districts":[]},{"citycode":"0719","adcode":"420325","name":"\u623f\u53bf","center":"110.726754,32.04017","level":"district","districts":[]},{"citycode":"0719","adcode":"420323","name":"\u7af9\u5c71\u53bf","center":"110.229696,32.225039","level":"district","districts":[]},{"citycode":"0719","adcode":"420381","name":"\u4e39\u6c5f\u53e3\u5e02","center":"111.513318,32.540287","level":"district","districts":[]},{"citycode":"0719","adcode":"420322","name":"\u90e7\u897f\u53bf","center":"110.426005,32.993095","level":"district","districts":[]}]},{"citycode":"0717","adcode":"420500","name":"\u5b9c\u660c\u5e02","center":"111.286962,30.69217","level":"city","districts":[{"citycode":"0717","adcode":"420526","name":"\u5174\u5c71\u53bf","center":"110.746831,31.348065","level":"district","districts":[]},{"citycode":"0717","adcode":"420527","name":"\u79ed\u5f52\u53bf","center":"110.97793,30.825882","level":"district","districts":[]},{"citycode":"0717","adcode":"420504","name":"\u70b9\u519b\u533a","center":"111.268338,30.69343","level":"district","districts":[]},{"citycode":"0717","adcode":"420582","name":"\u5f53\u9633\u5e02","center":"111.78836,30.820893","level":"district","districts":[]},{"citycode":"0717","adcode":"420581","name":"\u5b9c\u90fd\u5e02","center":"111.450128,30.378444","level":"district","districts":[]},{"citycode":"0717","adcode":"420525","name":"\u8fdc\u5b89\u53bf","center":"111.640329,31.060904","level":"district","districts":[]},{"citycode":"0717","adcode":"420529","name":"\u4e94\u5cf0\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","center":"111.07374,30.156741","level":"district","districts":[]},{"citycode":"0717","adcode":"420502","name":"\u897f\u9675\u533a","center":"111.285696,30.710765","level":"district","districts":[]},{"citycode":"0717","adcode":"420506","name":"\u5937\u9675\u533a","center":"111.326371,30.769875","level":"district","districts":[]},{"citycode":"0717","adcode":"420583","name":"\u679d\u6c5f\u5e02","center":"111.760616,30.425758","level":"district","districts":[]},{"citycode":"0717","adcode":"420505","name":"\u7307\u4ead\u533a","center":"111.434378,30.531133","level":"district","districts":[]},{"citycode":"0717","adcode":"420503","name":"\u4f0d\u5bb6\u5c97\u533a","center":"111.360882,30.644048","level":"district","districts":[]},{"citycode":"0717","adcode":"420528","name":"\u957f\u9633\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","center":"111.20697,30.473038","level":"district","districts":[]}]},{"citycode":"027","adcode":"420100","name":"\u6b66\u6c49\u5e02","center":"114.304569,30.593354","level":"city","districts":[{"citycode":"027","adcode":"420117","name":"\u65b0\u6d32\u533a","center":"114.801284,30.841304","level":"district","districts":[]},{"citycode":"027","adcode":"420113","name":"\u6c49\u5357\u533a","center":"114.084582,30.308776","level":"district","districts":[]},{"citycode":"027","adcode":"420114","name":"\u8521\u7538\u533a","center":"114.087279,30.536395","level":"district","districts":[]},{"citycode":"027","adcode":"420115","name":"\u6c5f\u590f\u533a","center":"114.320884,30.37558","level":"district","districts":[]},{"citycode":"027","adcode":"420106","name":"\u6b66\u660c\u533a","center":"114.316464,30.55418","level":"district","districts":[]},{"citycode":"027","adcode":"420112","name":"\u4e1c\u897f\u6e56\u533a","center":"114.136295,30.620079","level":"district","districts":[]},{"citycode":"027","adcode":"420104","name":"\u785a\u53e3\u533a","center":"114.214746,30.582559","level":"district","districts":[]},{"citycode":"027","adcode":"420116","name":"\u9ec4\u9642\u533a","center":"114.375698,30.882305","level":"district","districts":[]},{"citycode":"027","adcode":"420103","name":"\u6c5f\u6c49\u533a","center":"114.270763,30.601129","level":"district","districts":[]},{"citycode":"027","adcode":"420102","name":"\u6c5f\u5cb8\u533a","center":"114.282987,30.633093","level":"district","districts":[]},{"citycode":"027","adcode":"420107","name":"\u9752\u5c71\u533a","center":"114.385424,30.639842","level":"district","districts":[]},{"citycode":"027","adcode":"420111","name":"\u6d2a\u5c71\u533a","center":"114.342664,30.500642","level":"district","districts":[]},{"citycode":"027","adcode":"420105","name":"\u6c49\u9633\u533a","center":"114.21859,30.554287","level":"district","districts":[]}]},{"citycode":"0713","adcode":"421100","name":"\u9ec4\u5188\u5e02","center":"114.872425,30.453722","level":"city","districts":[{"citycode":"0713","adcode":"421181","name":"\u9ebb\u57ce\u5e02","center":"115.008011,31.172917","level":"district","districts":[]},{"citycode":"0713","adcode":"421102","name":"\u9ec4\u5dde\u533a","center":"114.880104,30.434354","level":"district","districts":[]},{"citycode":"0713","adcode":"421121","name":"\u56e2\u98ce\u53bf","center":"114.872364,30.643225","level":"district","districts":[]},{"citycode":"0713","adcode":"421127","name":"\u9ec4\u6885\u53bf","center":"115.944219,30.070453","level":"district","districts":[]},{"citycode":"0713","adcode":"421122","name":"\u7ea2\u5b89\u53bf","center":"114.618134,31.288167","level":"district","districts":[]},{"citycode":"0713","adcode":"421182","name":"\u6b66\u7a74\u5e02","center":"115.595451,29.869602","level":"district","districts":[]},{"citycode":"0713","adcode":"421126","name":"\u8572\u6625\u53bf","center":"115.436423,30.226146","level":"district","districts":[]},{"citycode":"0713","adcode":"421125","name":"\u6d60\u6c34\u53bf","center":"115.265155,30.452212","level":"district","districts":[]},{"citycode":"0713","adcode":"421123","name":"\u7f57\u7530\u53bf","center":"115.399149,30.783047","level":"district","districts":[]},{"citycode":"0713","adcode":"421124","name":"\u82f1\u5c71\u53bf","center":"115.680953,30.734989","level":"district","districts":[]}]},{"citycode":"1728","adcode":"429006","name":"\u5929\u95e8\u5e02","center":"113.166545,30.663706","level":"city","districts":[{"citycode":"1728","adcode":"429006","name":"\u80e1\u5e02\u9547","center":"113.422187,30.802027","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u591a\u7965\u9547","center":"113.357891,30.423413","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u9ec4\u6f6d\u9547","center":"113.038506,30.692160","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u6c89\u6e56\u7ba1\u59d4\u4f1a","center":"113.336326,30.513845","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u6a2a\u6797\u9547","center":"113.214590,30.564294","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u5e72\u9a7f\u9547","center":"113.450967,30.502984","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u9a6c\u6e7e\u9547","center":"113.312283,30.599323","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u848b\u6e56\u519c\u573a","center":"112.787693,30.632046","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u5c0f\u677f\u9547","center":"113.263987,30.615139","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u5cb3\u53e3\u9547","center":"113.105000,30.586764","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u848b\u573a\u9547","center":"112.927266,30.646031","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u77f3\u5bb6\u6cb3\u9547","center":"113.063918,30.763540","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u5f6d\u5e02\u9547","center":"113.157308,30.431522","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u4e5d\u771f\u9547","center":"113.244103,30.788105","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u4f5b\u5b50\u5c71\u9547","center":"113.061395,30.699043","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u7adf\u9675\u8857\u9053","center":"113.182938,30.706618","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u4faf\u53e3\u8857\u9053","center":"113.133899,30.652014","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u9ebb\u6d0b\u9547","center":"113.309397,30.524900","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u6768\u6797\u8857\u9053","center":"113.265467,30.685636","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u6c6a\u573a\u9547","center":"112.978692,30.638003","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u767d\u8305\u6e56\u519c\u573a","center":"113.063412,30.586804","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u51c0\u6f6d\u4e61","center":"113.450669,30.646405","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u7682\u5e02\u9547","center":"113.219641,30.800675","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u5362\u5e02\u9547","center":"113.396655,30.659558","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u62d6\u5e02\u9547","center":"112.841174,30.729303","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u6e14\u85aa\u9547","center":"112.927266,30.646031","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u5f20\u6e2f\u9547","center":"112.896375,30.654379","level":"street","districts":[]},{"citycode":"1728","adcode":"429006","name":"\u591a\u5b9d\u9547","center":"112.749108,30.776358","level":"street","districts":[]}]},{"citycode":"0712","adcode":"420900","name":"\u5b5d\u611f\u5e02","center":"113.956962,30.918311","level":"city","districts":[{"citycode":"0712","adcode":"420981","name":"\u5e94\u57ce\u5e02","center":"113.571864,30.928592","level":"district","districts":[]},{"citycode":"0712","adcode":"420902","name":"\u5b5d\u5357\u533a","center":"113.910769,30.91695","level":"district","districts":[]},{"citycode":"0712","adcode":"420923","name":"\u4e91\u68a6\u53bf","center":"113.752958,31.021736","level":"district","districts":[]},{"citycode":"0712","adcode":"420984","name":"\u6c49\u5ddd\u5e02","center":"113.838068,30.673219","level":"district","districts":[]},{"citycode":"0712","adcode":"420922","name":"\u5927\u609f\u53bf","center":"114.127122,31.561179","level":"district","districts":[]},{"citycode":"0712","adcode":"420982","name":"\u5b89\u9646\u5e02","center":"113.688955,31.25565","level":"district","districts":[]},{"citycode":"0712","adcode":"420921","name":"\u5b5d\u660c\u53bf","center":"113.997794,31.258225","level":"district","districts":[]}]},{"citycode":"0724","adcode":"420800","name":"\u8346\u95e8\u5e02","center":"112.199009,31.035445","level":"city","districts":[{"citycode":"0724","adcode":"420882","name":"\u4eac\u5c71\u5e02","center":"113.119561,31.018414","level":"district","districts":[]},{"citycode":"0724","adcode":"420822","name":"\u6c99\u6d0b\u53bf","center":"112.588675,30.709167","level":"district","districts":[]},{"citycode":"0724","adcode":"420881","name":"\u949f\u7965\u5e02","center":"112.588801,31.167006","level":"district","districts":[]},{"citycode":"0724","adcode":"420804","name":"\u6387\u5200\u533a","center":"112.2079,30.973397","level":"district","districts":[]},{"citycode":"0724","adcode":"420802","name":"\u4e1c\u5b9d\u533a","center":"112.201657,31.05187","level":"district","districts":[]}]},{"citycode":"2728","adcode":"429005","name":"\u6f5c\u6c5f\u5e02","center":"112.900279,30.401954","level":"city","districts":[{"citycode":"2728","adcode":"429005","name":"\u6cf0\u4e30\u8857\u9053","center":"112.980898,30.416671","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u5e7f\u534e\u5bfa\u8857\u9053","center":"112.666286,30.463319","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u5468\u77f6\u7ba1\u7406\u533a","center":"112.785657,30.463577","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u9ad8\u573a\u8857\u9053","center":"112.774574,30.407577","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u603b\u53e3\u7ba1\u7406\u533a","center":"112.890449,30.258095","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u8fd0\u7cae\u6e56\u7ba1\u7406\u533a","center":"112.581820,30.252044","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u767d\u9e6d\u6e56\u7ba1\u7406\u533a","center":"112.715593,30.178757","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u56ed\u6797\u8857\u9053","center":"112.910007,30.376965","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u7af9\u6839\u6ee9\u9547","center":"112.979245,30.471601","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u6e14\u6d0b\u9547","center":"112.966486,30.239237","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u718a\u53e3\u9547","center":"112.724425,30.340363","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u540e\u6e56\u7ba1\u7406\u533a","center":"112.767709,30.404874","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u718a\u53e3\u7ba1\u7406\u533a","center":"112.806208,30.256835","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u6768\u5e02\u8857\u9053","center":"112.914959,30.383464","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u9ad8\u77f3\u7891\u9547","center":"112.625570,30.620340","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u5468\u77f6\u8857\u9053","center":"112.781398,30.391044","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u6cfd\u53e3\u8857\u9053","center":"112.915656,30.488160","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u8001\u65b0\u9547","center":"112.887009,30.215033","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u9f99\u6e7e\u9547","center":"112.780855,30.253634","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u5f20\u91d1\u9547","center":"112.635950,30.252063","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u79ef\u7389\u53e3\u9547","center":"112.720009,30.418407","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u6d69\u53e3\u9547","center":"112.566899,30.307792","level":"street","districts":[]},{"citycode":"2728","adcode":"429005","name":"\u738b\u573a\u9547","center":"112.781586,30.473035","level":"street","districts":[]}]},{"citycode":"0718","adcode":"422800","name":"\u6069\u65bd\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","center":"109.488076,30.272104","level":"city","districts":[{"citycode":"0718","adcode":"422822","name":"\u5efa\u59cb\u53bf","center":"109.722333,30.602195","level":"district","districts":[]},{"citycode":"0718","adcode":"422802","name":"\u5229\u5ddd\u5e02","center":"108.936456,30.290974","level":"district","districts":[]},{"citycode":"0718","adcode":"422827","name":"\u6765\u51e4\u53bf","center":"109.407697,29.493474","level":"district","districts":[]},{"citycode":"0718","adcode":"422828","name":"\u9e64\u5cf0\u53bf","center":"110.034011,29.890073","level":"district","districts":[]},{"citycode":"0718","adcode":"422823","name":"\u5df4\u4e1c\u53bf","center":"110.340921,31.042854","level":"district","districts":[]},{"citycode":"0718","adcode":"422825","name":"\u5ba3\u6069\u53bf","center":"109.489918,29.986856","level":"district","districts":[]},{"citycode":"0718","adcode":"422801","name":"\u6069\u65bd\u5e02","center":"109.479572,30.295148","level":"district","districts":[]},{"citycode":"0718","adcode":"422826","name":"\u54b8\u4e30\u53bf","center":"109.140163,29.665215","level":"district","districts":[]}]},{"citycode":"0728","adcode":"429004","name":"\u4ed9\u6843\u5e02","center":"113.442973,30.328407","level":"city","districts":[{"citycode":"0728","adcode":"429004","name":"\u901a\u6d77\u53e3\u9547","center":"113.205730,30.272193","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u80e1\u573a\u9547","center":"113.290392,30.427800","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u5e72\u6cb3\u8857\u9053","center":"113.451023,30.375391","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u6768\u6797\u5c3e\u9547","center":"113.561091,30.201430","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u5f6d\u573a\u9547","center":"113.445865,30.251787","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u6c94\u57ce\u56de\u65cf\u9547","center":"113.200597,30.192111","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u9f99\u534e\u5c71\u8857\u9053","center":"113.460323,30.364932","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u6c99\u6e56\u539f\u79cd\u573a","center":"113.642513,30.148174","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u90d1\u573a\u9547","center":"112.978652,30.470679","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u90ed\u6cb3\u9547","center":"113.303624,30.302698","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u6c99\u5634\u8857\u9053","center":"113.441389,30.359636","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u6392\u6e56\u98ce\u666f\u533a","center":"113.223499,30.298659","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u6bdb\u5634\u9547","center":"113.045359,30.418813","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u5f20\u6c9f\u9547","center":"113.438252,30.296766","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u4e09\u4f0f\u6f6d\u9547","center":"113.206929,30.339491","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u957f\u57eb\u53e3\u9547","center":"113.597786,30.351206","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u4e94\u6e56\u6e14\u573a","center":"113.776124,30.171431","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u897f\u6d41\u6cb3\u9547","center":"113.762133,30.296361","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u675c\u6e56\u8857\u9053","center":"113.364736,30.306324","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u6c99\u6e56\u9547","center":"113.719820,30.118003","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u5245\u6cb3\u9547","center":"112.987670,30.375691","level":"street","districts":[]},{"citycode":"0728","adcode":"429004","name":"\u9648\u573a\u9547","center":"113.059900,30.294262","level":"street","districts":[]}]},{"citycode":"0716","adcode":"421000","name":"\u8346\u5dde\u5e02","center":"112.24143,30.336282","level":"city","districts":[{"citycode":"0716","adcode":"421024","name":"\u6c5f\u9675\u53bf","center":"112.424581,30.042227","level":"district","districts":[]},{"citycode":"0716","adcode":"421083","name":"\u6d2a\u6e56\u5e02","center":"113.475984,29.827256","level":"district","districts":[]},{"citycode":"0716","adcode":"421088","name":"\u76d1\u5229\u5e02","center":"112.904634,29.840229","level":"district","districts":[]},{"citycode":"0716","adcode":"421087","name":"\u677e\u6ecb\u5e02","center":"111.756455,30.174717","level":"district","districts":[]},{"citycode":"0716","adcode":"421022","name":"\u516c\u5b89\u53bf","center":"112.229742,30.058519","level":"district","districts":[]},{"citycode":"0716","adcode":"421081","name":"\u77f3\u9996\u5e02","center":"112.42538,29.720944","level":"district","districts":[]},{"citycode":"0716","adcode":"421002","name":"\u6c99\u5e02\u533a","center":"112.251975,30.326693","level":"district","districts":[]},{"citycode":"0716","adcode":"421003","name":"\u8346\u5dde\u533a","center":"112.190282,30.352984","level":"district","districts":[]}]},{"citycode":"0715","adcode":"421200","name":"\u54b8\u5b81\u5e02","center":"114.322601,29.84135","level":"city","districts":[{"citycode":"0715","adcode":"421202","name":"\u54b8\u5b89\u533a","center":"114.299002,29.852726","level":"district","districts":[]},{"citycode":"0715","adcode":"421221","name":"\u5609\u9c7c\u53bf","center":"113.939249,29.970575","level":"district","districts":[]},{"citycode":"0715","adcode":"421281","name":"\u8d64\u58c1\u5e02","center":"113.900385,29.725122","level":"district","districts":[]},{"citycode":"0715","adcode":"421224","name":"\u901a\u5c71\u53bf","center":"114.482832,29.606468","level":"district","districts":[]},{"citycode":"0715","adcode":"421223","name":"\u5d07\u9633\u53bf","center":"114.039484,29.556866","level":"district","districts":[]},{"citycode":"0715","adcode":"421222","name":"\u901a\u57ce\u53bf","center":"113.816811,29.2454","level":"district","districts":[]}]},{"citycode":"1719","adcode":"429021","name":"\u795e\u519c\u67b6\u6797\u533a","center":"110.675879,31.745103","level":"city","districts":[{"citycode":"1719","adcode":"429021","name":"\u6728\u9c7c\u9547","center":"110.566502,31.366101","level":"street","districts":[]},{"citycode":"1719","adcode":"429021","name":"\u65b0\u534e\u9547","center":"110.842423,31.621763","level":"street","districts":[]},{"citycode":"1719","adcode":"429021","name":"\u5b8b\u6d1b\u4e61","center":"110.589789,31.730290","level":"street","districts":[]},{"citycode":"1719","adcode":"429021","name":"\u677e\u67cf\u9547","center":"110.609207,31.704132","level":"street","districts":[]},{"citycode":"1719","adcode":"429021","name":"\u7ea2\u576a\u9547","center":"110.196111,31.471819","level":"street","districts":[]},{"citycode":"1719","adcode":"429021","name":"\u9633\u65e5\u9547","center":"110.763336,31.676979","level":"street","districts":[]},{"citycode":"1719","adcode":"429021","name":"\u5927\u4e5d\u6e56\u9547","center":"110.106251,31.408207","level":"street","districts":[]},{"citycode":"1719","adcode":"429021","name":"\u4e0b\u8c37\u576a\u571f\u5bb6\u65cf\u4e61","center":"110.124191,31.394918","level":"street","districts":[]}]},{"citycode":"0722","adcode":"421300","name":"\u968f\u5dde\u5e02","center":"113.382324,31.690275","level":"city","districts":[{"citycode":"0722","adcode":"421321","name":"\u968f\u53bf","center":"113.29097,31.883233","level":"district","districts":[]},{"citycode":"0722","adcode":"421303","name":"\u66fe\u90fd\u533a","center":"113.371052,31.716423","level":"district","districts":[]},{"citycode":"0722","adcode":"421381","name":"\u5e7f\u6c34\u5e02","center":"113.825977,31.617015","level":"district","districts":[]}]},{"citycode":"0711","adcode":"420700","name":"\u9102\u5dde\u5e02","center":"114.894909,30.391461","level":"city","districts":[{"citycode":"0711","adcode":"420702","name":"\u6881\u5b50\u6e56\u533a","center":"114.684805,30.100146","level":"district","districts":[]},{"citycode":"0711","adcode":"420703","name":"\u534e\u5bb9\u533a","center":"114.729945,30.53515","level":"district","districts":[]},{"citycode":"0711","adcode":"420704","name":"\u9102\u57ce\u533a","center":"114.89157,30.400535","level":"district","districts":[]}]},{"citycode":"0714","adcode":"420200","name":"\u9ec4\u77f3\u5e02","center":"115.038999,30.201082","level":"city","districts":[{"citycode":"0714","adcode":"420205","name":"\u94c1\u5c71\u533a","center":"114.891603,30.203152","level":"district","districts":[]},{"citycode":"0714","adcode":"420203","name":"\u897f\u585e\u5c71\u533a","center":"115.110067,30.205114","level":"district","districts":[]},{"citycode":"0714","adcode":"420222","name":"\u9633\u65b0\u53bf","center":"115.215211,29.830236","level":"district","districts":[]},{"citycode":"0714","adcode":"420202","name":"\u9ec4\u77f3\u6e2f\u533a","center":"115.065653,30.223194","level":"district","districts":[]},{"citycode":"0714","adcode":"420281","name":"\u5927\u51b6\u5e02","center":"114.98046,30.096263","level":"district","districts":[]},{"citycode":"0714","adcode":"420204","name":"\u4e0b\u9646\u533a","center":"114.960914,30.174148","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"210000","name":"\u8fbd\u5b81\u7701","center":"123.435093,41.836743","level":"province","districts":[{"citycode":"0429","adcode":"211400","name":"\u846b\u82a6\u5c9b\u5e02","center":"120.836783,40.710974","level":"city","districts":[{"citycode":"0429","adcode":"211422","name":"\u5efa\u660c\u53bf","center":"119.836669,40.824484","level":"district","districts":[]},{"citycode":"0429","adcode":"211403","name":"\u9f99\u6e2f\u533a","center":"120.894054,40.735717","level":"district","districts":[]},{"citycode":"0429","adcode":"211481","name":"\u5174\u57ce\u5e02","center":"120.756661,40.60999","level":"district","districts":[]},{"citycode":"0429","adcode":"211421","name":"\u7ee5\u4e2d\u53bf","center":"120.34432,40.325576","level":"district","districts":[]},{"citycode":"0429","adcode":"211404","name":"\u5357\u7968\u533a","center":"120.74971,41.10721","level":"district","districts":[]},{"citycode":"0429","adcode":"211402","name":"\u8fde\u5c71\u533a","center":"120.869157,40.774784","level":"district","districts":[]}]},{"citycode":"0411","adcode":"210200","name":"\u5927\u8fde\u5e02","center":"121.614786,38.913962","level":"city","districts":[{"citycode":"0411","adcode":"210281","name":"\u74e6\u623f\u5e97\u5e02","center":"121.979463,39.62701","level":"district","districts":[]},{"citycode":"0411","adcode":"210283","name":"\u5e84\u6cb3\u5e02","center":"122.965881,39.680825","level":"district","districts":[]},{"citycode":"0411","adcode":"210214","name":"\u666e\u5170\u5e97\u533a","center":"121.938299,39.391565","level":"district","districts":[]},{"citycode":"0411","adcode":"210213","name":"\u91d1\u5dde\u533a","center":"121.782513,39.050211","level":"district","districts":[]},{"citycode":"0411","adcode":"210224","name":"\u957f\u6d77\u53bf","center":"122.588487,39.272779","level":"district","districts":[]},{"citycode":"0411","adcode":"210211","name":"\u7518\u4e95\u5b50\u533a","center":"121.525469,38.952998","level":"district","districts":[]},{"citycode":"0411","adcode":"210202","name":"\u4e2d\u5c71\u533a","center":"121.644996,38.918357","level":"district","districts":[]},{"citycode":"0411","adcode":"210212","name":"\u65c5\u987a\u53e3\u533a","center":"121.261982,38.851742","level":"district","districts":[]},{"citycode":"0411","adcode":"210203","name":"\u897f\u5c97\u533a","center":"121.612461,38.914751","level":"district","districts":[]},{"citycode":"0411","adcode":"210204","name":"\u6c99\u6cb3\u53e3\u533a","center":"121.594201,38.904771","level":"district","districts":[]}]},{"citycode":"0415","adcode":"210600","name":"\u4e39\u4e1c\u5e02","center":"124.354419,40.000646","level":"city","districts":[{"citycode":"0415","adcode":"210682","name":"\u51e4\u57ce\u5e02","center":"124.066873,40.45218","level":"district","districts":[]},{"citycode":"0415","adcode":"210604","name":"\u632f\u5b89\u533a","center":"124.470005,40.20154","level":"district","districts":[]},{"citycode":"0415","adcode":"210681","name":"\u4e1c\u6e2f\u5e02","center":"124.152581,39.863193","level":"district","districts":[]},{"citycode":"0415","adcode":"210603","name":"\u632f\u5174\u533a","center":"124.383382,40.129706","level":"district","districts":[]},{"citycode":"0415","adcode":"210624","name":"\u5bbd\u7538\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"124.783674,40.731319","level":"district","districts":[]},{"citycode":"0415","adcode":"210602","name":"\u5143\u5b9d\u533a","center":"124.395577,40.136549","level":"district","districts":[]}]},{"citycode":"0416","adcode":"210700","name":"\u9526\u5dde\u5e02","center":"121.126859,41.096114","level":"city","districts":[{"citycode":"0416","adcode":"210711","name":"\u592a\u548c\u533a","center":"121.103445,41.109232","level":"district","districts":[]},{"citycode":"0416","adcode":"210781","name":"\u51cc\u6d77\u5e02","center":"121.35499,41.160636","level":"district","districts":[]},{"citycode":"0416","adcode":"210702","name":"\u53e4\u5854\u533a","center":"121.128414,41.117481","level":"district","districts":[]},{"citycode":"0416","adcode":"210703","name":"\u51cc\u6cb3\u533a","center":"121.151069,41.115058","level":"district","districts":[]},{"citycode":"0416","adcode":"210782","name":"\u5317\u9547\u5e02","center":"121.777503,41.588657","level":"district","districts":[]},{"citycode":"0416","adcode":"210726","name":"\u9ed1\u5c71\u53bf","center":"122.126645,41.653552","level":"district","districts":[]},{"citycode":"0416","adcode":"210727","name":"\u4e49\u53bf","center":"121.239558,41.533553","level":"district","districts":[]}]},{"citycode":"024","adcode":"210100","name":"\u6c88\u9633\u5e02","center":"123.464675,41.677576","level":"city","districts":[{"citycode":"024","adcode":"210114","name":"\u4e8e\u6d2a\u533a","center":"123.308062,41.793925","level":"district","districts":[]},{"citycode":"024","adcode":"210123","name":"\u5eb7\u5e73\u53bf","center":"123.343701,42.727249","level":"district","districts":[]},{"citycode":"024","adcode":"210181","name":"\u65b0\u6c11\u5e02","center":"122.835964,41.985757","level":"district","districts":[]},{"citycode":"024","adcode":"210124","name":"\u6cd5\u5e93\u53bf","center":"123.440294,42.50108","level":"district","districts":[]},{"citycode":"024","adcode":"210104","name":"\u5927\u4e1c\u533a","center":"123.469828,41.805292","level":"district","districts":[]},{"citycode":"024","adcode":"210103","name":"\u6c88\u6cb3\u533a","center":"123.45884,41.795688","level":"district","districts":[]},{"citycode":"024","adcode":"210105","name":"\u7687\u59d1\u533a","center":"123.441468,41.824574","level":"district","districts":[]},{"citycode":"024","adcode":"210112","name":"\u6d51\u5357\u533a","center":"123.449597,41.714729","level":"district","districts":[]},{"citycode":"024","adcode":"210113","name":"\u6c88\u5317\u65b0\u533a","center":"123.584209,41.913071","level":"district","districts":[]},{"citycode":"024","adcode":"210115","name":"\u8fbd\u4e2d\u533a","center":"122.766159,41.517449","level":"district","districts":[]},{"citycode":"024","adcode":"210106","name":"\u94c1\u897f\u533a","center":"123.334781,41.821721","level":"district","districts":[]},{"citycode":"024","adcode":"210111","name":"\u82cf\u5bb6\u5c6f\u533a","center":"123.343937,41.665153","level":"district","districts":[]},{"citycode":"024","adcode":"210102","name":"\u548c\u5e73\u533a","center":"123.420401,41.789766","level":"district","districts":[]}]},{"citycode":"0410","adcode":"211200","name":"\u94c1\u5cad\u5e02","center":"123.726008,42.223709","level":"city","districts":[{"citycode":"0410","adcode":"211282","name":"\u5f00\u539f\u5e02","center":"124.051886,42.577645","level":"district","districts":[]},{"citycode":"0410","adcode":"211204","name":"\u6e05\u6cb3\u533a","center":"124.159232,42.54714","level":"district","districts":[]},{"citycode":"0410","adcode":"211281","name":"\u8c03\u5175\u5c71\u5e02","center":"123.567039,42.468007","level":"district","districts":[]},{"citycode":"0410","adcode":"211221","name":"\u94c1\u5cad\u53bf","center":"123.728933,42.223395","level":"district","districts":[]},{"citycode":"0410","adcode":"211202","name":"\u94f6\u5dde\u533a","center":"123.842472,42.286575","level":"district","districts":[]},{"citycode":"0410","adcode":"211223","name":"\u897f\u4e30\u53bf","center":"124.727491,42.738178","level":"district","districts":[]},{"citycode":"0410","adcode":"211224","name":"\u660c\u56fe\u53bf","center":"124.086628,42.779333","level":"district","districts":[]}]},{"citycode":"0418","adcode":"210900","name":"\u961c\u65b0\u5e02","center":"121.670052,42.022028","level":"city","districts":[{"citycode":"0418","adcode":"210904","name":"\u592a\u5e73\u533a","center":"121.678637,42.010689","level":"district","districts":[]},{"citycode":"0418","adcode":"210905","name":"\u6e05\u6cb3\u95e8\u533a","center":"121.416105,41.7831","level":"district","districts":[]},{"citycode":"0418","adcode":"210903","name":"\u65b0\u90b1\u533a","center":"121.792067,42.087549","level":"district","districts":[]},{"citycode":"0418","adcode":"210921","name":"\u961c\u65b0\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","center":"121.757901,42.065175","level":"district","districts":[]},{"citycode":"0418","adcode":"210922","name":"\u5f70\u6b66\u53bf","center":"122.538563,42.386264","level":"district","districts":[]},{"citycode":"0418","adcode":"210902","name":"\u6d77\u5dde\u533a","center":"121.662594,42.017794","level":"district","districts":[]},{"citycode":"0418","adcode":"210911","name":"\u7ec6\u6cb3\u533a","center":"121.680157,42.025412","level":"district","districts":[]}]},{"citycode":"0414","adcode":"210500","name":"\u672c\u6eaa\u5e02","center":"123.766669,41.294123","level":"city","districts":[{"citycode":"0414","adcode":"210522","name":"\u6853\u4ec1\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"125.361061,41.267048","level":"district","districts":[]},{"citycode":"0414","adcode":"210505","name":"\u5357\u82ac\u533a","center":"123.744822,41.100273","level":"district","districts":[]},{"citycode":"0414","adcode":"210504","name":"\u660e\u5c71\u533a","center":"123.861747,41.343624","level":"district","districts":[]},{"citycode":"0414","adcode":"210521","name":"\u672c\u6eaa\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"124.119545,41.301553","level":"district","districts":[]},{"citycode":"0414","adcode":"210503","name":"\u6eaa\u6e56\u533a","center":"123.767817,41.32931","level":"district","districts":[]},{"citycode":"0414","adcode":"210502","name":"\u5e73\u5c71\u533a","center":"123.769081,41.299658","level":"district","districts":[]}]},{"citycode":"0419","adcode":"211000","name":"\u8fbd\u9633\u5e02","center":"123.239669,41.267396","level":"city","districts":[{"citycode":"0419","adcode":"211011","name":"\u592a\u5b50\u6cb3\u533a","center":"123.1814403,41.29502257","level":"district","districts":[]},{"citycode":"0419","adcode":"211005","name":"\u5f13\u957f\u5cad\u533a","center":"123.419567,41.151787","level":"district","districts":[]},{"citycode":"0419","adcode":"211081","name":"\u706f\u5854\u5e02","center":"123.339398,41.426537","level":"district","districts":[]},{"citycode":"0419","adcode":"211021","name":"\u8fbd\u9633\u53bf","center":"123.106426,41.206246","level":"district","districts":[]},{"citycode":"0419","adcode":"211004","name":"\u5b8f\u4f1f\u533a","center":"123.196725,41.217852","level":"district","districts":[]},{"citycode":"0419","adcode":"211002","name":"\u767d\u5854\u533a","center":"123.174347,41.270397","level":"district","districts":[]},{"citycode":"0419","adcode":"211003","name":"\u6587\u5723\u533a","center":"123.231262,41.282378","level":"district","districts":[]}]},{"citycode":"0413","adcode":"210400","name":"\u629a\u987a\u5e02","center":"123.957053,41.881311","level":"city","districts":[{"citycode":"0413","adcode":"210422","name":"\u65b0\u5bbe\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"125.039994,41.734031","level":"district","districts":[]},{"citycode":"0413","adcode":"210411","name":"\u987a\u57ce\u533a","center":"123.94504,41.883375","level":"district","districts":[]},{"citycode":"0413","adcode":"210402","name":"\u65b0\u629a\u533a","center":"123.91293,41.861922","level":"district","districts":[]},{"citycode":"0413","adcode":"210421","name":"\u629a\u987a\u53bf","center":"123.8999229,41.73009376","level":"district","districts":[]},{"citycode":"0413","adcode":"210404","name":"\u671b\u82b1\u533a","center":"123.784235,41.853484","level":"district","districts":[]},{"citycode":"0413","adcode":"210403","name":"\u4e1c\u6d32\u533a","center":"124.038491,41.853001","level":"district","districts":[]},{"citycode":"0413","adcode":"210423","name":"\u6e05\u539f\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"124.924028,42.100804","level":"district","districts":[]}]},{"citycode":"0427","adcode":"211100","name":"\u76d8\u9526\u5e02","center":"122.170729,40.71956","level":"city","districts":[{"citycode":"0427","adcode":"211103","name":"\u5174\u9686\u53f0\u533a","center":"122.070685,41.120261","level":"district","districts":[]},{"citycode":"0427","adcode":"211122","name":"\u76d8\u5c71\u53bf","center":"121.996408,41.243367","level":"district","districts":[]},{"citycode":"0427","adcode":"211102","name":"\u53cc\u53f0\u5b50\u533a","center":"122.07597,41.212401","level":"district","districts":[]},{"citycode":"0427","adcode":"211104","name":"\u5927\u6d3c\u533a","center":"122.082227,41.002679","level":"district","districts":[]}]},{"citycode":"0421","adcode":"211300","name":"\u671d\u9633\u5e02","center":"120.488801,41.601855","level":"city","districts":[{"citycode":"0421","adcode":"211324","name":"\u5580\u5587\u6c81\u5de6\u7ffc\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","center":"119.741223,41.12815","level":"district","districts":[]},{"citycode":"0421","adcode":"211382","name":"\u51cc\u6e90\u5e02","center":"119.401574,41.245445","level":"district","districts":[]},{"citycode":"0421","adcode":"211381","name":"\u5317\u7968\u5e02","center":"120.771389,41.801117","level":"district","districts":[]},{"citycode":"0421","adcode":"211303","name":"\u9f99\u57ce\u533a","center":"120.4133759,41.57674859","level":"district","districts":[]},{"citycode":"0421","adcode":"211302","name":"\u53cc\u5854\u533a","center":"120.453717,41.565814","level":"district","districts":[]},{"citycode":"0421","adcode":"211321","name":"\u671d\u9633\u53bf","center":"120.390001,41.497923","level":"district","districts":[]},{"citycode":"0421","adcode":"211322","name":"\u5efa\u5e73\u53bf","center":"119.64328,41.402891","level":"district","districts":[]}]},{"citycode":"0412","adcode":"210300","name":"\u978d\u5c71\u5e02","center":"122.994183,41.108239","level":"city","districts":[{"citycode":"0412","adcode":"210323","name":"\u5cab\u5ca9\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"123.280933,40.290995","level":"district","districts":[]},{"citycode":"0412","adcode":"210302","name":"\u94c1\u4e1c\u533a","center":"122.990888,41.089578","level":"district","districts":[]},{"citycode":"0412","adcode":"210311","name":"\u5343\u5c71\u533a","center":"122.9447506,41.0689014","level":"district","districts":[]},{"citycode":"0412","adcode":"210304","name":"\u7acb\u5c71\u533a","center":"123.029091,41.150401","level":"district","districts":[]},{"citycode":"0412","adcode":"210303","name":"\u94c1\u897f\u533a","center":"122.969531,41.119719","level":"district","districts":[]},{"citycode":"0412","adcode":"210321","name":"\u53f0\u5b89\u53bf","center":"122.436037,41.412866","level":"district","districts":[]},{"citycode":"0412","adcode":"210381","name":"\u6d77\u57ce\u5e02","center":"122.685176,40.882548","level":"district","districts":[]}]},{"citycode":"0417","adcode":"210800","name":"\u8425\u53e3\u5e02","center":"122.219148,40.625027","level":"city","districts":[{"citycode":"0417","adcode":"210803","name":"\u897f\u5e02\u533a","center":"122.206431,40.666707","level":"district","districts":[]},{"citycode":"0417","adcode":"210804","name":"\u9c85\u9c7c\u5708\u533a","center":"122.121764,40.226708","level":"district","districts":[]},{"citycode":"0417","adcode":"210881","name":"\u76d6\u5dde\u5e02","center":"122.34845,40.400259","level":"district","districts":[]},{"citycode":"0417","adcode":"210802","name":"\u7ad9\u524d\u533a","center":"122.259058,40.673063","level":"district","districts":[]},{"citycode":"0417","adcode":"210811","name":"\u8001\u8fb9\u533a","center":"122.307956,40.671279","level":"district","districts":[]},{"citycode":"0417","adcode":"210882","name":"\u5927\u77f3\u6865\u5e02","center":"122.509006,40.644482","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"370000","name":"\u5c71\u4e1c\u7701","center":"117.020725,36.670201","level":"province","districts":[{"citycode":"0546","adcode":"370500","name":"\u4e1c\u8425\u5e02","center":"118.674633,37.433992","level":"city","districts":[{"citycode":"0546","adcode":"370522","name":"\u5229\u6d25\u53bf","center":"118.255084,37.490919","level":"district","districts":[]},{"citycode":"0546","adcode":"370502","name":"\u4e1c\u8425\u533a","center":"118.582182,37.449035","level":"district","districts":[]},{"citycode":"0546","adcode":"370503","name":"\u6cb3\u53e3\u533a","center":"118.525519,37.886217","level":"district","districts":[]},{"citycode":"0546","adcode":"370505","name":"\u57a6\u5229\u533a","center":"118.575234,37.573412","level":"district","districts":[]},{"citycode":"0546","adcode":"370523","name":"\u5e7f\u9976\u53bf","center":"118.419437,37.053915","level":"district","districts":[]}]},{"citycode":"0543","adcode":"371600","name":"\u6ee8\u5dde\u5e02","center":"117.970731,37.382687","level":"city","districts":[{"citycode":"0543","adcode":"371603","name":"\u6cbe\u5316\u533a","center":"118.098962,37.698952","level":"district","districts":[]},{"citycode":"0543","adcode":"371623","name":"\u65e0\u68e3\u53bf","center":"117.625846,37.770579","level":"district","districts":[]},{"citycode":"0543","adcode":"371622","name":"\u9633\u4fe1\u53bf","center":"117.603407,37.632773","level":"district","districts":[]},{"citycode":"0543","adcode":"371625","name":"\u535a\u5174\u53bf","center":"118.110715,37.154529","level":"district","districts":[]},{"citycode":"0543","adcode":"371602","name":"\u6ee8\u57ce\u533a","center":"118.019567,37.431997","level":"district","districts":[]},{"citycode":"0543","adcode":"371621","name":"\u60e0\u6c11\u53bf","center":"117.593744,37.47528","level":"district","districts":[]},{"citycode":"0543","adcode":"371681","name":"\u90b9\u5e73\u5e02","center":"117.74313,36.863393","level":"district","districts":[]}]},{"citycode":"0535","adcode":"370600","name":"\u70df\u53f0\u5e02","center":"121.447755,37.464551","level":"city","districts":[{"citycode":"0535","adcode":"370614","name":"\u84ec\u83b1\u533a","center":"120.829141,37.795697","level":"district","districts":[]},{"citycode":"0535","adcode":"370602","name":"\u829d\u7f58\u533a","center":"121.400303,37.541312","level":"district","districts":[]},{"citycode":"0535","adcode":"370683","name":"\u83b1\u5dde\u5e02","center":"119.942057,37.178187","level":"district","districts":[]},{"citycode":"0535","adcode":"370687","name":"\u6d77\u9633\u5e02","center":"121.173506,36.688316","level":"district","districts":[]},{"citycode":"0535","adcode":"370681","name":"\u9f99\u53e3\u5e02","center":"120.47614,37.645281","level":"district","districts":[]},{"citycode":"0535","adcode":"370682","name":"\u83b1\u9633\u5e02","center":"120.711555,36.979757","level":"district","districts":[]},{"citycode":"0535","adcode":"370686","name":"\u6816\u971e\u5e02","center":"120.849595,37.335993","level":"district","districts":[]},{"citycode":"0535","adcode":"370685","name":"\u62db\u8fdc\u5e02","center":"120.433904,37.354517","level":"district","districts":[]},{"citycode":"0535","adcode":"370612","name":"\u725f\u5e73\u533a","center":"121.601015,37.387454","level":"district","districts":[]},{"citycode":"0535","adcode":"370611","name":"\u798f\u5c71\u533a","center":"121.267638,37.49833","level":"district","districts":[]},{"citycode":"0535","adcode":"370613","name":"\u83b1\u5c71\u533a","center":"121.444949,37.511322","level":"district","districts":[]}]},{"citycode":"0631","adcode":"371000","name":"\u5a01\u6d77\u5e02","center":"122.120519,37.513315","level":"city","districts":[{"citycode":"0631","adcode":"371083","name":"\u4e73\u5c71\u5e02","center":"121.539557,36.920329","level":"district","districts":[]},{"citycode":"0631","adcode":"371082","name":"\u8363\u6210\u5e02","center":"122.487036,37.165698","level":"district","districts":[]},{"citycode":"0631","adcode":"371002","name":"\u73af\u7fe0\u533a","center":"122.123115,37.501735","level":"district","districts":[]},{"citycode":"0631","adcode":"371003","name":"\u6587\u767b\u533a","center":"122.08832,37.196032","level":"district","districts":[]}]},{"citycode":"0532","adcode":"370200","name":"\u9752\u5c9b\u5e02","center":"120.382665,36.066938","level":"city","districts":[{"citycode":"0532","adcode":"370285","name":"\u83b1\u897f\u5e02","center":"120.517581,36.889167","level":"district","districts":[]},{"citycode":"0532","adcode":"370283","name":"\u5e73\u5ea6\u5e02","center":"119.970192,36.753895","level":"district","districts":[]},{"citycode":"0532","adcode":"370212","name":"\u5d02\u5c71\u533a","center":"120.469282,36.107069","level":"district","districts":[]},{"citycode":"0532","adcode":"370215","name":"\u5373\u58a8\u533a","center":"120.447691,36.390217","level":"district","districts":[]},{"citycode":"0532","adcode":"370214","name":"\u57ce\u9633\u533a","center":"120.396255,36.307624","level":"district","districts":[]},{"citycode":"0532","adcode":"370211","name":"\u9ec4\u5c9b\u533a","center":"120.19777,35.960688","level":"district","districts":[]},{"citycode":"0532","adcode":"370281","name":"\u80f6\u5dde\u5e02","center":"120.033382,36.26468","level":"district","districts":[]},{"citycode":"0532","adcode":"370213","name":"\u674e\u6ca7\u533a","center":"120.432652,36.145987","level":"district","districts":[]},{"citycode":"0532","adcode":"370202","name":"\u5e02\u5357\u533a","center":"120.412002,36.075867","level":"district","districts":[]},{"citycode":"0532","adcode":"370203","name":"\u5e02\u5317\u533a","center":"120.374675,36.08765","level":"district","districts":[]}]},{"citycode":"0635","adcode":"371500","name":"\u804a\u57ce\u5e02","center":"115.985238,36.455857","level":"city","districts":[{"citycode":"0635","adcode":"371525","name":"\u51a0\u53bf","center":"115.441684,36.484011","level":"district","districts":[]},{"citycode":"0635","adcode":"371502","name":"\u4e1c\u660c\u5e9c\u533a","center":"116.006399,36.412737","level":"district","districts":[]},{"citycode":"0635","adcode":"371522","name":"\u8398\u53bf","center":"115.669843,36.233711","level":"district","districts":[]},{"citycode":"0635","adcode":"371521","name":"\u9633\u8c37\u53bf","center":"115.791822,36.114392","level":"district","districts":[]},{"citycode":"0635","adcode":"371526","name":"\u9ad8\u5510\u53bf","center":"116.230126,36.84715","level":"district","districts":[]},{"citycode":"0635","adcode":"371524","name":"\u4e1c\u963f\u53bf","center":"116.247655,36.335198","level":"district","districts":[]},{"citycode":"0635","adcode":"371503","name":"\u830c\u5e73\u533a","center":"116.254865,36.580814","level":"district","districts":[]},{"citycode":"0635","adcode":"371581","name":"\u4e34\u6e05\u5e02","center":"115.704982,36.83828","level":"district","districts":[]}]},{"citycode":"0533","adcode":"370300","name":"\u6dc4\u535a\u5e02","center":"118.054994,36.813787","level":"city","districts":[{"citycode":"0533","adcode":"370305","name":"\u4e34\u6dc4\u533a","center":"118.309398,36.826882","level":"district","districts":[]},{"citycode":"0533","adcode":"370304","name":"\u535a\u5c71\u533a","center":"117.8627,36.495014","level":"district","districts":[]},{"citycode":"0533","adcode":"370323","name":"\u6c82\u6e90\u53bf","center":"118.170856,36.185402","level":"district","districts":[]},{"citycode":"0533","adcode":"370322","name":"\u9ad8\u9752\u53bf","center":"117.826743,37.171042","level":"district","districts":[]},{"citycode":"0533","adcode":"370321","name":"\u6853\u53f0\u53bf","center":"118.097923,36.959794","level":"district","districts":[]},{"citycode":"0533","adcode":"370303","name":"\u5f20\u5e97\u533a","center":"118.017877,36.807011","level":"district","districts":[]},{"citycode":"0533","adcode":"370302","name":"\u6dc4\u5ddd\u533a","center":"117.966978,36.644211","level":"district","districts":[]},{"citycode":"0533","adcode":"370306","name":"\u5468\u6751\u533a","center":"117.869686,36.80309","level":"district","districts":[]}]},{"citycode":"0536","adcode":"370700","name":"\u6f4d\u574a\u5e02","center":"119.161721,36.707668","level":"city","districts":[{"citycode":"0536","adcode":"370783","name":"\u5bff\u5149\u5e02","center":"118.791062,36.857133","level":"district","districts":[]},{"citycode":"0536","adcode":"370786","name":"\u660c\u9091\u5e02","center":"119.403185,36.843256","level":"district","districts":[]},{"citycode":"0536","adcode":"370785","name":"\u9ad8\u5bc6\u5e02","center":"119.80584,36.365658","level":"district","districts":[]},{"citycode":"0536","adcode":"370703","name":"\u5bd2\u4ead\u533a","center":"119.211251,36.755925","level":"district","districts":[]},{"citycode":"0536","adcode":"370782","name":"\u8bf8\u57ce\u5e02","center":"119.412992,36.009273","level":"district","districts":[]},{"citycode":"0536","adcode":"370705","name":"\u594e\u6587\u533a","center":"119.132288,36.707459","level":"district","districts":[]},{"citycode":"0536","adcode":"370702","name":"\u6f4d\u57ce\u533a","center":"119.02491,36.728077","level":"district","districts":[]},{"citycode":"0536","adcode":"370781","name":"\u9752\u5dde\u5e02","center":"118.479637,36.685178","level":"district","districts":[]},{"citycode":"0536","adcode":"370724","name":"\u4e34\u6710\u53bf","center":"118.543274,36.51246","level":"district","districts":[]},{"citycode":"0536","adcode":"370725","name":"\u660c\u4e50\u53bf","center":"118.841035,36.688035","level":"district","districts":[]},{"citycode":"0536","adcode":"370704","name":"\u574a\u5b50\u533a","center":"119.166343,36.653671","level":"district","districts":[]},{"citycode":"0536","adcode":"370784","name":"\u5b89\u4e18\u5e02","center":"119.21892,36.479642","level":"district","districts":[]}]},{"citycode":"0531","adcode":"370100","name":"\u6d4e\u5357\u5e02","center":"117.120128,36.652069","level":"city","districts":[{"citycode":"0531","adcode":"370113","name":"\u957f\u6e05\u533a","center":"116.752101,36.554251","level":"district","districts":[]},{"citycode":"0531","adcode":"370117","name":"\u94a2\u57ce\u533a","center":"117.811604,36.059393","level":"district","districts":[]},{"citycode":"0531","adcode":"370126","name":"\u5546\u6cb3\u53bf","center":"117.157165,37.309694","level":"district","districts":[]},{"citycode":"0531","adcode":"370114","name":"\u7ae0\u4e18\u533a","center":"117.526228,36.681258","level":"district","districts":[]},{"citycode":"0531","adcode":"370116","name":"\u83b1\u829c\u533a","center":"117.675828,36.214895","level":"district","districts":[]},{"citycode":"0531","adcode":"370124","name":"\u5e73\u9634\u53bf","center":"116.455865,36.289813","level":"district","districts":[]},{"citycode":"0531","adcode":"370115","name":"\u6d4e\u9633\u533a","center":"117.173722,36.978299","level":"district","districts":[]},{"citycode":"0531","adcode":"370103","name":"\u5e02\u4e2d\u533a","center":"116.997472,36.651121","level":"district","districts":[]},{"citycode":"0531","adcode":"370112","name":"\u5386\u57ce\u533a","center":"117.065233,36.680731","level":"district","districts":[]},{"citycode":"0531","adcode":"370102","name":"\u5386\u4e0b\u533a","center":"117.07632,36.666395","level":"district","districts":[]},{"citycode":"0531","adcode":"370105","name":"\u5929\u6865\u533a","center":"116.987106,36.678665","level":"district","districts":[]},{"citycode":"0531","adcode":"370104","name":"\u69d0\u836b\u533a","center":"116.901057,36.652264","level":"district","districts":[]}]},{"citycode":"0538","adcode":"370900","name":"\u6cf0\u5b89\u5e02","center":"117.086963,36.201784","level":"city","districts":[{"citycode":"0538","adcode":"370983","name":"\u80a5\u57ce\u5e02","center":"116.769098,36.181975","level":"district","districts":[]},{"citycode":"0538","adcode":"370902","name":"\u6cf0\u5c71\u533a","center":"117.128828,36.194963","level":"district","districts":[]},{"citycode":"0538","adcode":"370921","name":"\u5b81\u9633\u53bf","center":"116.805578,35.758919","level":"district","districts":[]},{"citycode":"0538","adcode":"370923","name":"\u4e1c\u5e73\u53bf","center":"116.470211,35.937049","level":"district","districts":[]},{"citycode":"0538","adcode":"370982","name":"\u65b0\u6cf0\u5e02","center":"117.768069,35.90953","level":"district","districts":[]},{"citycode":"0538","adcode":"370911","name":"\u5cb1\u5cb3\u533a","center":"117.041651,36.188088","level":"district","districts":[]}]},{"citycode":"0537","adcode":"370800","name":"\u6d4e\u5b81\u5e02","center":"116.587116,35.415117","level":"city","districts":[{"citycode":"0537","adcode":"370826","name":"\u5fae\u5c71\u53bf","center":"117.129188,34.806657","level":"district","districts":[]},{"citycode":"0537","adcode":"370831","name":"\u6cd7\u6c34\u53bf","center":"117.250824,35.664719","level":"district","districts":[]},{"citycode":"0537","adcode":"370827","name":"\u9c7c\u53f0\u53bf","center":"116.650526,35.012706","level":"district","districts":[]},{"citycode":"0537","adcode":"370881","name":"\u66f2\u961c\u5e02","center":"116.986212,35.581933","level":"district","districts":[]},{"citycode":"0537","adcode":"370828","name":"\u91d1\u4e61\u53bf","center":"116.337271,35.073419","level":"district","districts":[]},{"citycode":"0537","adcode":"370830","name":"\u6c76\u4e0a\u53bf","center":"116.497277,35.711891","level":"district","districts":[]},{"citycode":"0537","adcode":"370883","name":"\u90b9\u57ce\u5e02","center":"117.007406,35.402536","level":"district","districts":[]},{"citycode":"0537","adcode":"370811","name":"\u4efb\u57ce\u533a","center":"116.605763,35.444226","level":"district","districts":[]},{"citycode":"0537","adcode":"370812","name":"\u5156\u5dde\u533a","center":"116.78365,35.551938","level":"district","districts":[]},{"citycode":"0537","adcode":"370829","name":"\u5609\u7965\u53bf","center":"116.342308,35.40794","level":"district","districts":[]},{"citycode":"0537","adcode":"370832","name":"\u6881\u5c71\u53bf","center":"116.131779,35.765957","level":"district","districts":[]}]},{"citycode":"0539","adcode":"371300","name":"\u4e34\u6c82\u5e02","center":"118.356464,35.103771","level":"city","districts":[{"citycode":"0539","adcode":"371312","name":"\u6cb3\u4e1c\u533a","center":"118.403073,35.088936","level":"district","districts":[]},{"citycode":"0539","adcode":"371302","name":"\u5170\u5c71\u533a","center":"118.347332,35.052797","level":"district","districts":[]},{"citycode":"0539","adcode":"371325","name":"\u8d39\u53bf","center":"117.9776,35.265851","level":"district","districts":[]},{"citycode":"0539","adcode":"371327","name":"\u8392\u5357\u53bf","center":"118.835166,35.206252","level":"district","districts":[]},{"citycode":"0539","adcode":"371322","name":"\u90ef\u57ce\u53bf","center":"118.390701,34.619281","level":"district","districts":[]},{"citycode":"0539","adcode":"371328","name":"\u8499\u9634\u53bf","center":"117.953367,35.720128","level":"district","districts":[]},{"citycode":"0539","adcode":"371326","name":"\u5e73\u9091\u53bf","center":"117.615201,35.516849","level":"district","districts":[]},{"citycode":"0539","adcode":"371321","name":"\u6c82\u5357\u53bf","center":"118.465259,35.550078","level":"district","districts":[]},{"citycode":"0539","adcode":"371323","name":"\u6c82\u6c34\u53bf","center":"118.628142,35.790919","level":"district","districts":[]},{"citycode":"0539","adcode":"371311","name":"\u7f57\u5e84\u533a","center":"118.284693,34.997061","level":"district","districts":[]},{"citycode":"0539","adcode":"371324","name":"\u5170\u9675\u53bf","center":"118.070912,34.858235","level":"district","districts":[]},{"citycode":"0539","adcode":"371329","name":"\u4e34\u6cad\u53bf","center":"118.650828,34.920171","level":"district","districts":[]}]},{"citycode":"0530","adcode":"371700","name":"\u83cf\u6cfd\u5e02","center":"115.479646,35.234309","level":"city","districts":[{"citycode":"0530","adcode":"371703","name":"\u5b9a\u9676\u533a","center":"115.583172,35.105742","level":"district","districts":[]},{"citycode":"0530","adcode":"371728","name":"\u4e1c\u660e\u53bf","center":"115.107402,35.275664","level":"district","districts":[]},{"citycode":"0530","adcode":"371726","name":"\u9104\u57ce\u53bf","center":"115.544507,35.534088","level":"district","districts":[]},{"citycode":"0530","adcode":"371702","name":"\u7261\u4e39\u533a","center":"115.417021,35.251911","level":"district","districts":[]},{"citycode":"0530","adcode":"371724","name":"\u5de8\u91ce\u53bf","center":"116.062585,35.388543","level":"district","districts":[]},{"citycode":"0530","adcode":"371723","name":"\u6210\u6b66\u53bf","center":"115.889775,34.95278","level":"district","districts":[]},{"citycode":"0530","adcode":"371722","name":"\u5355\u53bf","center":"116.106396,34.779282","level":"district","districts":[]},{"citycode":"0530","adcode":"371725","name":"\u90d3\u57ce\u53bf","center":"115.938939,35.575276","level":"district","districts":[]},{"citycode":"0530","adcode":"371721","name":"\u66f9\u53bf","center":"115.556393,34.85875","level":"district","districts":[]}]},{"citycode":"0534","adcode":"371400","name":"\u5fb7\u5dde\u5e02","center":"116.359244,37.436492","level":"city","districts":[{"citycode":"0534","adcode":"371422","name":"\u5b81\u6d25\u53bf","center":"116.800279,37.652456","level":"district","districts":[]},{"citycode":"0534","adcode":"371481","name":"\u4e50\u9675\u5e02","center":"117.232085,37.729769","level":"district","districts":[]},{"citycode":"0534","adcode":"371423","name":"\u5e86\u4e91\u53bf","center":"117.384163,37.774376","level":"district","districts":[]},{"citycode":"0534","adcode":"371402","name":"\u5fb7\u57ce\u533a","center":"116.299558,37.451051","level":"district","districts":[]},{"citycode":"0534","adcode":"371428","name":"\u6b66\u57ce\u53bf","center":"116.069312,37.213398","level":"district","districts":[]},{"citycode":"0534","adcode":"371426","name":"\u5e73\u539f\u53bf","center":"116.434016,37.165453","level":"district","districts":[]},{"citycode":"0534","adcode":"371425","name":"\u9f50\u6cb3\u53bf","center":"116.762767,36.784164","level":"district","districts":[]},{"citycode":"0534","adcode":"371482","name":"\u79b9\u57ce\u5e02","center":"116.638558,36.934198","level":"district","districts":[]},{"citycode":"0534","adcode":"371424","name":"\u4e34\u9091\u53bf","center":"116.866568,37.190139","level":"district","districts":[]},{"citycode":"0534","adcode":"371403","name":"\u9675\u57ce\u533a","center":"116.576148,37.336444","level":"district","districts":[]},{"citycode":"0534","adcode":"371427","name":"\u590f\u6d25\u53bf","center":"116.001796,36.948013","level":"district","districts":[]}]},{"citycode":"0633","adcode":"371100","name":"\u65e5\u7167\u5e02","center":"119.52685,35.416912","level":"city","districts":[{"citycode":"0633","adcode":"371122","name":"\u8392\u53bf","center":"118.869059,35.59125","level":"district","districts":[]},{"citycode":"0633","adcode":"371103","name":"\u5c9a\u5c71\u533a","center":"119.31881,35.121985","level":"district","districts":[]},{"citycode":"0633","adcode":"371102","name":"\u4e1c\u6e2f\u533a","center":"119.462287,35.426037","level":"district","districts":[]},{"citycode":"0633","adcode":"371121","name":"\u4e94\u83b2\u53bf","center":"119.213673,35.760154","level":"district","districts":[]}]},{"citycode":"0632","adcode":"370400","name":"\u67a3\u5e84\u5e02","center":"117.323759,34.810858","level":"city","districts":[{"citycode":"0632","adcode":"370403","name":"\u859b\u57ce\u533a","center":"117.286371,34.783282","level":"district","districts":[]},{"citycode":"0632","adcode":"370405","name":"\u53f0\u513f\u5e84\u533a","center":"117.734287,34.563103","level":"district","districts":[]},{"citycode":"0632","adcode":"370402","name":"\u5e02\u4e2d\u533a","center":"117.556125,34.863791","level":"district","districts":[]},{"citycode":"0632","adcode":"370406","name":"\u5c71\u4ead\u533a","center":"117.461866,35.099638","level":"district","districts":[]},{"citycode":"0632","adcode":"370404","name":"\u5cc4\u57ce\u533a","center":"117.590738,34.772931","level":"district","districts":[]},{"citycode":"0632","adcode":"370481","name":"\u6ed5\u5dde\u5e02","center":"117.165881,35.11412","level":"district","districts":[]}]}]},{"citycode":"021","adcode":"310000","name":"\u4e0a\u6d77\u5e02","center":"121.473667,31.230525","level":"province","districts":[{"citycode":"021","adcode":"310100","name":"\u4e0a\u6d77\u57ce\u533a","center":"121.472644,31.231706","level":"city","districts":[{"citycode":"021","adcode":"310151","name":"\u5d07\u660e\u533a","center":"121.397662,31.623863","level":"district","districts":[]},{"citycode":"021","adcode":"310115","name":"\u6d66\u4e1c\u65b0\u533a","center":"121.544346,31.221461","level":"district","districts":[]},{"citycode":"021","adcode":"310116","name":"\u91d1\u5c71\u533a","center":"121.341774,30.742769","level":"district","districts":[]},{"citycode":"021","adcode":"310110","name":"\u6768\u6d66\u533a","center":"121.525409,31.259588","level":"district","districts":[]},{"citycode":"021","adcode":"310109","name":"\u8679\u53e3\u533a","center":"121.504994,31.264917","level":"district","districts":[]},{"citycode":"021","adcode":"310106","name":"\u9759\u5b89\u533a","center":"121.447348,31.227718","level":"district","districts":[]},{"citycode":"021","adcode":"310105","name":"\u957f\u5b81\u533a","center":"121.424751,31.220537","level":"district","districts":[]},{"citycode":"021","adcode":"310120","name":"\u5949\u8d24\u533a","center":"121.473945,30.918406","level":"district","districts":[]},{"citycode":"021","adcode":"310118","name":"\u9752\u6d66\u533a","center":"121.124249,31.15098","level":"district","districts":[]},{"citycode":"021","adcode":"310107","name":"\u666e\u9640\u533a","center":"121.39547,31.249618","level":"district","districts":[]},{"citycode":"021","adcode":"310113","name":"\u5b9d\u5c71\u533a","center":"121.489431,31.405242","level":"district","districts":[]},{"citycode":"021","adcode":"310101","name":"\u9ec4\u6d66\u533a","center":"121.48442,31.231661","level":"district","districts":[]},{"citycode":"021","adcode":"310114","name":"\u5609\u5b9a\u533a","center":"121.265276,31.375566","level":"district","districts":[]},{"citycode":"021","adcode":"310104","name":"\u5f90\u6c47\u533a","center":"121.436307,31.188334","level":"district","districts":[]},{"citycode":"021","adcode":"310117","name":"\u677e\u6c5f\u533a","center":"121.227676,31.03257","level":"district","districts":[]},{"citycode":"021","adcode":"310112","name":"\u95f5\u884c\u533a","center":"121.380857,31.112834","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"520000","name":"\u8d35\u5dde\u7701","center":"106.705251,26.600328","level":"province","districts":[{"citycode":"0852","adcode":"520300","name":"\u9075\u4e49\u5e02","center":"107.031922,27.721931","level":"city","districts":[{"citycode":"0852","adcode":"520329","name":"\u4f59\u5e86\u53bf","center":"107.906043,27.21513","level":"district","districts":[]},{"citycode":"0852","adcode":"520381","name":"\u8d64\u6c34\u5e02","center":"105.697501,28.590474","level":"district","districts":[]},{"citycode":"0852","adcode":"520328","name":"\u6e44\u6f6d\u53bf","center":"107.465492,27.748942","level":"district","districts":[]},{"citycode":"0852","adcode":"520303","name":"\u6c47\u5ddd\u533a","center":"106.933727,27.749716","level":"district","districts":[]},{"citycode":"0852","adcode":"520326","name":"\u52a1\u5ddd\u4ee1\u4f6c\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"107.899353,28.562921","level":"district","districts":[]},{"citycode":"0852","adcode":"520382","name":"\u4ec1\u6000\u5e02","center":"106.401322,27.791883","level":"district","districts":[]},{"citycode":"0852","adcode":"520304","name":"\u64ad\u5dde\u533a","center":"106.829081,27.535735","level":"district","districts":[]},{"citycode":"0852","adcode":"520327","name":"\u51e4\u5188\u53bf","center":"107.71646,27.954424","level":"district","districts":[]},{"citycode":"0852","adcode":"520323","name":"\u7ee5\u9633\u53bf","center":"107.191326,27.946049","level":"district","districts":[]},{"citycode":"0852","adcode":"520302","name":"\u7ea2\u82b1\u5c97\u533a","center":"106.893598,27.644793","level":"district","districts":[]},{"citycode":"0852","adcode":"520324","name":"\u6b63\u5b89\u53bf","center":"107.454463,28.553507","level":"district","districts":[]},{"citycode":"0852","adcode":"520325","name":"\u9053\u771f\u4ee1\u4f6c\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"107.613076,28.862548","level":"district","districts":[]},{"citycode":"0852","adcode":"520322","name":"\u6850\u6893\u53bf","center":"106.824661,28.132991","level":"district","districts":[]},{"citycode":"0852","adcode":"520330","name":"\u4e60\u6c34\u53bf","center":"106.19715,28.332923","level":"district","districts":[]}]},{"citycode":"0856","adcode":"520600","name":"\u94dc\u4ec1\u5e02","center":"109.189528,27.731555","level":"city","districts":[{"citycode":"0856","adcode":"520623","name":"\u77f3\u9621\u53bf","center":"108.223686,27.513499","level":"district","districts":[]},{"citycode":"0856","adcode":"520628","name":"\u677e\u6843\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"109.202877,28.15427","level":"district","districts":[]},{"citycode":"0856","adcode":"520622","name":"\u7389\u5c4f\u4f97\u65cf\u81ea\u6cbb\u53bf","center":"108.906415,27.235816","level":"district","districts":[]},{"citycode":"0856","adcode":"520626","name":"\u5fb7\u6c5f\u53bf","center":"108.120773,28.264028","level":"district","districts":[]},{"citycode":"0856","adcode":"520621","name":"\u6c5f\u53e3\u53bf","center":"108.843993,27.704883","level":"district","districts":[]},{"citycode":"0856","adcode":"520625","name":"\u5370\u6c5f\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"108.409638,27.994442","level":"district","districts":[]},{"citycode":"0856","adcode":"520627","name":"\u6cbf\u6cb3\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","center":"108.503152,28.564083","level":"district","districts":[]},{"citycode":"0856","adcode":"520624","name":"\u601d\u5357\u53bf","center":"108.253798,27.937464","level":"district","districts":[]},{"citycode":"0856","adcode":"520602","name":"\u78a7\u6c5f\u533a","center":"109.264271,27.815244","level":"district","districts":[]},{"citycode":"0856","adcode":"520603","name":"\u4e07\u5c71\u533a","center":"109.153685,27.671268","level":"district","districts":[]}]},{"citycode":"0858","adcode":"520200","name":"\u516d\u76d8\u6c34\u5e02","center":"104.830357,26.592538","level":"city","districts":[{"citycode":"0858","adcode":"520281","name":"\u76d8\u5dde\u5e02","center":"104.471554,25.709878","level":"district","districts":[]},{"citycode":"0858","adcode":"520203","name":"\u516d\u679d\u7279\u533a","center":"105.477199,26.214356","level":"district","districts":[]},{"citycode":"0858","adcode":"520201","name":"\u949f\u5c71\u533a","center":"104.843723,26.574699","level":"district","districts":[]},{"citycode":"0858","adcode":"520204","name":"\u6c34\u57ce\u533a","center":"104.957871,26.547604","level":"district","districts":[]}]},{"citycode":"0854","adcode":"522700","name":"\u9ed4\u5357\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","center":"107.522303,26.253136","level":"city","districts":[{"citycode":"0854","adcode":"522727","name":"\u5e73\u5858\u53bf","center":"107.322635,25.822395","level":"district","districts":[]},{"citycode":"0854","adcode":"522722","name":"\u8354\u6ce2\u53bf","center":"107.88057,25.402528","level":"district","districts":[]},{"citycode":"0854","adcode":"522728","name":"\u7f57\u7538\u53bf","center":"106.751724,25.42616","level":"district","districts":[]},{"citycode":"0854","adcode":"522701","name":"\u90fd\u5300\u5e02","center":"107.518628,26.259456","level":"district","districts":[]},{"citycode":"0854","adcode":"522729","name":"\u957f\u987a\u53bf","center":"106.44057,26.003187","level":"district","districts":[]},{"citycode":"0854","adcode":"522726","name":"\u72ec\u5c71\u53bf","center":"107.557591,25.865418","level":"district","districts":[]},{"citycode":"0854","adcode":"522732","name":"\u4e09\u90fd\u6c34\u65cf\u81ea\u6cbb\u53bf","center":"107.869489,25.983572","level":"district","districts":[]},{"citycode":"0854","adcode":"522723","name":"\u8d35\u5b9a\u53bf","center":"107.232208,26.557205","level":"district","districts":[]},{"citycode":"0854","adcode":"522731","name":"\u60e0\u6c34\u53bf","center":"106.656993,26.132045","level":"district","districts":[]},{"citycode":"0854","adcode":"522730","name":"\u9f99\u91cc\u53bf","center":"106.979177,26.453546","level":"district","districts":[]},{"citycode":"0854","adcode":"522725","name":"\u74ee\u5b89\u53bf","center":"107.471307,27.07838","level":"district","districts":[]},{"citycode":"0854","adcode":"522702","name":"\u798f\u6cc9\u5e02","center":"107.520371,26.686773","level":"district","districts":[]}]},{"citycode":"0853","adcode":"520400","name":"\u5b89\u987a\u5e02","center":"105.9476,26.253103","level":"city","districts":[{"citycode":"0853","adcode":"520402","name":"\u897f\u79c0\u533a","center":"105.966086,26.243928","level":"district","districts":[]},{"citycode":"0853","adcode":"520425","name":"\u7d2b\u4e91\u82d7\u65cf\u5e03\u4f9d\u65cf\u81ea\u6cbb\u53bf","center":"106.084441,25.751047","level":"district","districts":[]},{"citycode":"0853","adcode":"520403","name":"\u5e73\u575d\u533a","center":"106.255768,26.405968","level":"district","districts":[]},{"citycode":"0853","adcode":"520422","name":"\u666e\u5b9a\u53bf","center":"105.743156,26.301876","level":"district","districts":[]},{"citycode":"0853","adcode":"520423","name":"\u9547\u5b81\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"105.770543,26.057248","level":"district","districts":[]},{"citycode":"0853","adcode":"520424","name":"\u5173\u5cad\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"105.538335,25.953518","level":"district","districts":[]}]},{"citycode":"0859","adcode":"522300","name":"\u9ed4\u897f\u5357\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","center":"104.906419,25.087733","level":"city","districts":[{"citycode":"0859","adcode":"522328","name":"\u5b89\u9f99\u53bf","center":"105.442702,25.099014","level":"district","districts":[]},{"citycode":"0859","adcode":"522326","name":"\u671b\u8c1f\u53bf","center":"106.094864,25.174204","level":"district","districts":[]},{"citycode":"0859","adcode":"522301","name":"\u5174\u4e49\u5e02","center":"104.895503,25.09196","level":"district","districts":[]},{"citycode":"0859","adcode":"522323","name":"\u666e\u5b89\u53bf","center":"104.953289,25.784225","level":"district","districts":[]},{"citycode":"0859","adcode":"522324","name":"\u6674\u9686\u53bf","center":"105.218956,25.834729","level":"district","districts":[]},{"citycode":"0859","adcode":"522327","name":"\u518c\u4ea8\u53bf","center":"105.811592,24.983663","level":"district","districts":[]},{"citycode":"0859","adcode":"522302","name":"\u5174\u4ec1\u5e02","center":"105.186132,25.43509","level":"district","districts":[]},{"citycode":"0859","adcode":"522325","name":"\u8d1e\u4e30\u53bf","center":"105.64976,25.38558","level":"district","districts":[]}]},{"citycode":"0855","adcode":"522600","name":"\u9ed4\u4e1c\u5357\u82d7\u65cf\u4f97\u65cf\u81ea\u6cbb\u5dde","center":"107.982838,26.583759","level":"city","districts":[{"citycode":"0855","adcode":"522627","name":"\u5929\u67f1\u53bf","center":"109.207826,26.909548","level":"district","districts":[]},{"citycode":"0855","adcode":"522623","name":"\u65bd\u79c9\u53bf","center":"108.124531,27.033107","level":"district","districts":[]},{"citycode":"0855","adcode":"522636","name":"\u4e39\u5be8\u53bf","center":"107.789301,26.19857","level":"district","districts":[]},{"citycode":"0855","adcode":"522601","name":"\u51ef\u91cc\u5e02","center":"107.981409,26.5662","level":"district","districts":[]},{"citycode":"0855","adcode":"522635","name":"\u9ebb\u6c5f\u53bf","center":"107.589455,26.49129","level":"district","districts":[]},{"citycode":"0855","adcode":"522630","name":"\u53f0\u6c5f\u53bf","center":"108.321244,26.667525","level":"district","districts":[]},{"citycode":"0855","adcode":"522622","name":"\u9ec4\u5e73\u53bf","center":"107.916651,26.905278","level":"district","districts":[]},{"citycode":"0855","adcode":"522625","name":"\u9547\u8fdc\u53bf","center":"108.429536,27.049033","level":"district","districts":[]},{"citycode":"0855","adcode":"522626","name":"\u5c91\u5de9\u53bf","center":"108.815855,27.174124","level":"district","districts":[]},{"citycode":"0855","adcode":"522624","name":"\u4e09\u7a57\u53bf","center":"108.675265,26.953359","level":"district","districts":[]},{"citycode":"0855","adcode":"522628","name":"\u9526\u5c4f\u53bf","center":"109.200808,26.675919","level":"district","districts":[]},{"citycode":"0855","adcode":"522634","name":"\u96f7\u5c71\u53bf","center":"108.078217,26.378892","level":"district","districts":[]},{"citycode":"0855","adcode":"522631","name":"\u9ece\u5e73\u53bf","center":"109.125826,26.213304","level":"district","districts":[]},{"citycode":"0855","adcode":"522629","name":"\u5251\u6cb3\u53bf","center":"108.441501,26.728274","level":"district","districts":[]},{"citycode":"0855","adcode":"522632","name":"\u6995\u6c5f\u53bf","center":"108.52188,25.931893","level":"district","districts":[]},{"citycode":"0855","adcode":"522633","name":"\u4ece\u6c5f\u53bf","center":"108.904998,25.754638","level":"district","districts":[]}]},{"citycode":"0857","adcode":"520500","name":"\u6bd5\u8282\u5e02","center":"105.291544,27.283615","level":"city","districts":[{"citycode":"0857","adcode":"520581","name":"\u9ed4\u897f\u5e02","center":"106.032277,27.008681","level":"district","districts":[]},{"citycode":"0857","adcode":"520523","name":"\u91d1\u6c99\u53bf","center":"106.220112,27.458601","level":"district","districts":[]},{"citycode":"0857","adcode":"520524","name":"\u7ec7\u91d1\u53bf","center":"105.770249,26.663649","level":"district","districts":[]},{"citycode":"0857","adcode":"520521","name":"\u5927\u65b9\u53bf","center":"105.601963,27.14443","level":"district","districts":[]},{"citycode":"0857","adcode":"520525","name":"\u7eb3\u96cd\u53bf","center":"105.414578,26.779344","level":"district","districts":[]},{"citycode":"0857","adcode":"520502","name":"\u4e03\u661f\u5173\u533a","center":"105.305219,27.298304","level":"district","districts":[]},{"citycode":"0857","adcode":"520527","name":"\u8d6b\u7ae0\u53bf","center":"104.728011,27.117933","level":"district","districts":[]},{"citycode":"0857","adcode":"520526","name":"\u5a01\u5b81\u5f5d\u65cf\u56de\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"104.252787,26.873872","level":"district","districts":[]}]},{"citycode":"0851","adcode":"520100","name":"\u8d35\u9633\u5e02","center":"106.628201,26.646694","level":"city","districts":[{"citycode":"0851","adcode":"520121","name":"\u5f00\u9633\u53bf","center":"106.964716,27.057823","level":"district","districts":[]},{"citycode":"0851","adcode":"520113","name":"\u767d\u4e91\u533a","center":"106.623069,26.677932","level":"district","districts":[]},{"citycode":"0851","adcode":"520123","name":"\u4fee\u6587\u53bf","center":"106.591958,26.836048","level":"district","districts":[]},{"citycode":"0851","adcode":"520181","name":"\u6e05\u9547\u5e02","center":"106.473131,26.572978","level":"district","districts":[]},{"citycode":"0851","adcode":"520122","name":"\u606f\u70fd\u53bf","center":"106.740407,27.090479","level":"district","districts":[]},{"citycode":"0851","adcode":"520115","name":"\u89c2\u5c71\u6e56\u533a","center":"106.598978,26.616134","level":"district","districts":[]},{"citycode":"0851","adcode":"520112","name":"\u4e4c\u5f53\u533a","center":"106.75069,26.630911","level":"district","districts":[]},{"citycode":"0851","adcode":"520103","name":"\u4e91\u5ca9\u533a","center":"106.724394,26.604604","level":"district","districts":[]},{"citycode":"0851","adcode":"520111","name":"\u82b1\u6eaa\u533a","center":"106.67026,26.409817","level":"district","districts":[]},{"citycode":"0851","adcode":"520102","name":"\u5357\u660e\u533a","center":"106.714305,26.568055","level":"district","districts":[]}]}]},{"citycode":"023","adcode":"500000","name":"\u91cd\u5e86\u5e02","center":"106.551787,29.56268","level":"province","districts":[{"citycode":"023","adcode":"500200","name":"\u91cd\u5e86\u90ca\u53bf","center":"108.170255,29.291965","level":"city","districts":[{"citycode":"023","adcode":"500238","name":"\u5deb\u6eaa\u53bf","center":"109.570038,31.398619","level":"district","districts":[]},{"citycode":"023","adcode":"500236","name":"\u5949\u8282\u53bf","center":"109.401056,31.018505","level":"district","districts":[]},{"citycode":"023","adcode":"500240","name":"\u77f3\u67f1\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","center":"108.114251,29.999066","level":"district","districts":[]},{"citycode":"023","adcode":"500237","name":"\u5deb\u5c71\u53bf","center":"109.878995,31.07478","level":"district","districts":[]},{"citycode":"023","adcode":"500230","name":"\u4e30\u90fd\u53bf","center":"107.731056,29.863785","level":"district","districts":[]},{"citycode":"023","adcode":"500229","name":"\u57ce\u53e3\u53bf","center":"108.664349,31.947319","level":"district","districts":[]},{"citycode":"023","adcode":"500231","name":"\u57ab\u6c5f\u53bf","center":"107.332511,30.327548","level":"district","districts":[]},{"citycode":"023","adcode":"500235","name":"\u4e91\u9633\u53bf","center":"108.6975,30.930628","level":"district","districts":[]},{"citycode":"023","adcode":"500233","name":"\u5fe0\u53bf","center":"108.038073,30.299817","level":"district","districts":[]},{"citycode":"023","adcode":"500242","name":"\u9149\u9633\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"108.76726,28.841409","level":"district","districts":[]},{"citycode":"023","adcode":"500241","name":"\u79c0\u5c71\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"109.007096,28.448248","level":"district","districts":[]},{"citycode":"023","adcode":"500243","name":"\u5f6d\u6c34\u82d7\u65cf\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","center":"108.165571,29.293748","level":"district","districts":[]}]},{"citycode":"023","adcode":"500100","name":"\u91cd\u5e86\u57ce\u533a","center":"106.504962,29.533155","level":"city","districts":[{"citycode":"023","adcode":"500117","name":"\u5408\u5ddd\u533a","center":"106.27617,29.971968","level":"district","districts":[]},{"citycode":"023","adcode":"500152","name":"\u6f7c\u5357\u533a","center":"105.840487,30.191077","level":"district","districts":[]},{"citycode":"023","adcode":"500115","name":"\u957f\u5bff\u533a","center":"107.080945,29.857916","level":"district","districts":[]},{"citycode":"023","adcode":"500151","name":"\u94dc\u6881\u533a","center":"106.056265,29.845248","level":"district","districts":[]},{"citycode":"023","adcode":"500111","name":"\u5927\u8db3\u533a","center":"105.721825,29.707555","level":"district","districts":[]},{"citycode":"023","adcode":"500104","name":"\u5927\u6e21\u53e3\u533a","center":"106.482299,29.484464","level":"district","districts":[]},{"citycode":"023","adcode":"500107","name":"\u4e5d\u9f99\u5761\u533a","center":"106.510515,29.502325","level":"district","districts":[]},{"citycode":"023","adcode":"500108","name":"\u5357\u5cb8\u533a","center":"106.644254,29.50109","level":"district","districts":[]},{"citycode":"023","adcode":"500156","name":"\u6b66\u9686\u533a","center":"107.759955,29.325707","level":"district","districts":[]},{"citycode":"023","adcode":"500110","name":"\u7da6\u6c5f\u533a","center":"106.651213,29.028117","level":"district","districts":[]},{"citycode":"023","adcode":"500102","name":"\u6daa\u9675\u533a","center":"107.246521,29.752475","level":"district","districts":[]},{"citycode":"023","adcode":"500109","name":"\u5317\u789a\u533a","center":"106.395593,29.805197","level":"district","districts":[]},{"citycode":"023","adcode":"500119","name":"\u5357\u5ddd\u533a","center":"107.099147,29.157879","level":"district","districts":[]},{"citycode":"023","adcode":"500118","name":"\u6c38\u5ddd\u533a","center":"105.926951,29.356384","level":"district","districts":[]},{"citycode":"023","adcode":"500153","name":"\u8363\u660c\u533a","center":"105.6118,29.416892","level":"district","districts":[]},{"citycode":"023","adcode":"500116","name":"\u6c5f\u6d25\u533a","center":"106.264435,29.319984","level":"district","districts":[]},{"citycode":"023","adcode":"500113","name":"\u5df4\u5357\u533a","center":"106.540603,29.402348","level":"district","districts":[]},{"citycode":"023","adcode":"500120","name":"\u74a7\u5c71\u533a","center":"106.204885,29.577455","level":"district","districts":[]},{"citycode":"023","adcode":"500101","name":"\u4e07\u5dde\u533a","center":"108.408591,30.807621","level":"district","districts":[]},{"citycode":"023","adcode":"500154","name":"\u5f00\u5dde\u533a","center":"108.39336,31.160416","level":"district","districts":[]},{"citycode":"023","adcode":"500103","name":"\u6e1d\u4e2d\u533a","center":"106.568955,29.552642","level":"district","districts":[]},{"citycode":"023","adcode":"500112","name":"\u6e1d\u5317\u533a","center":"106.631155,29.718087","level":"district","districts":[]},{"citycode":"023","adcode":"500105","name":"\u6c5f\u5317\u533a","center":"106.574395,29.606224","level":"district","districts":[]},{"citycode":"023","adcode":"500155","name":"\u6881\u5e73\u533a","center":"107.769568,30.654233","level":"district","districts":[]},{"citycode":"023","adcode":"500106","name":"\u6c99\u576a\u575d\u533a","center":"106.456939,29.541017","level":"district","districts":[]},{"citycode":"023","adcode":"500114","name":"\u9ed4\u6c5f\u533a","center":"108.770677,29.533609","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"340000","name":"\u5b89\u5fbd\u7701","center":"117.330139,31.734559","level":"province","districts":[{"citycode":"0562","adcode":"340700","name":"\u94dc\u9675\u5e02","center":"117.811298,30.945214","level":"city","districts":[{"citycode":"0562","adcode":"340711","name":"\u90ca\u533a","center":"117.767919,30.821699","level":"district","districts":[]},{"citycode":"0562","adcode":"340705","name":"\u94dc\u5b98\u533a","center":"117.856541,30.936772","level":"district","districts":[]},{"citycode":"0562","adcode":"340722","name":"\u679e\u9633\u53bf","center":"117.250191,30.705466","level":"district","districts":[]},{"citycode":"0562","adcode":"340706","name":"\u4e49\u5b89\u533a","center":"117.937405,30.950619","level":"district","districts":[]}]},{"citycode":"0566","adcode":"341700","name":"\u6c60\u5dde\u5e02","center":"117.495663,30.674264","level":"city","districts":[{"citycode":"0566","adcode":"341702","name":"\u8d35\u6c60\u533a","center":"117.568087,30.688237","level":"district","districts":[]},{"citycode":"0566","adcode":"341722","name":"\u77f3\u53f0\u53bf","center":"117.486211,30.210218","level":"district","districts":[]},{"citycode":"0566","adcode":"341723","name":"\u9752\u9633\u53bf","center":"117.847366,30.639006","level":"district","districts":[]},{"citycode":"0566","adcode":"341721","name":"\u4e1c\u81f3\u53bf","center":"117.027533,30.111182","level":"district","districts":[]}]},{"citycode":"0556","adcode":"340800","name":"\u5b89\u5e86\u5e02","center":"117.115349,30.531828","level":"city","districts":[{"citycode":"0556","adcode":"340828","name":"\u5cb3\u897f\u53bf","center":"116.359732,30.849716","level":"district","districts":[]},{"citycode":"0556","adcode":"340881","name":"\u6850\u57ce\u5e02","center":"116.936588,31.035476","level":"district","districts":[]},{"citycode":"0556","adcode":"340803","name":"\u5927\u89c2\u533a","center":"117.013469,30.553697","level":"district","districts":[]},{"citycode":"0556","adcode":"340825","name":"\u592a\u6e56\u53bf","center":"116.30881,30.454198","level":"district","districts":[]},{"citycode":"0556","adcode":"340826","name":"\u5bbf\u677e\u53bf","center":"116.134485,30.171663","level":"district","districts":[]},{"citycode":"0556","adcode":"340802","name":"\u8fce\u6c5f\u533a","center":"117.090878,30.512768","level":"district","districts":[]},{"citycode":"0556","adcode":"340811","name":"\u5b9c\u79c0\u533a","center":"116.987469,30.613189","level":"district","districts":[]},{"citycode":"0556","adcode":"340882","name":"\u6f5c\u5c71\u5e02","center":"116.581224,30.631022","level":"district","districts":[]},{"citycode":"0556","adcode":"340827","name":"\u671b\u6c5f\u53bf","center":"116.70641,30.128404","level":"district","districts":[]},{"citycode":"0556","adcode":"340822","name":"\u6000\u5b81\u53bf","center":"116.829612,30.73484","level":"district","districts":[]}]},{"citycode":"0561","adcode":"340600","name":"\u6dee\u5317\u5e02","center":"116.798362,33.956264","level":"city","districts":[{"citycode":"0561","adcode":"340602","name":"\u675c\u96c6\u533a","center":"116.827949,33.991412","level":"district","districts":[]},{"citycode":"0561","adcode":"340603","name":"\u76f8\u5c71\u533a","center":"116.795233,33.959927","level":"district","districts":[]},{"citycode":"0561","adcode":"340621","name":"\u6fc9\u6eaa\u53bf","center":"116.76616,33.915612","level":"district","districts":[]},{"citycode":"0561","adcode":"340604","name":"\u70c8\u5c71\u533a","center":"116.813221,33.895407","level":"district","districts":[]}]},{"citycode":"0555","adcode":"340500","name":"\u9a6c\u978d\u5c71\u5e02","center":"118.50685,31.668765","level":"city","districts":[{"citycode":"0555","adcode":"340506","name":"\u535a\u671b\u533a","center":"118.818276,31.55117","level":"district","districts":[]},{"citycode":"0555","adcode":"340523","name":"\u548c\u53bf","center":"118.353668,31.74248","level":"district","districts":[]},{"citycode":"0555","adcode":"340522","name":"\u542b\u5c71\u53bf","center":"118.101448,31.735559","level":"district","districts":[]},{"citycode":"0555","adcode":"340521","name":"\u5f53\u6d82\u53bf","center":"118.497873,31.570857","level":"district","districts":[]},{"citycode":"0555","adcode":"340504","name":"\u96e8\u5c71\u533a","center":"118.498675,31.682374","level":"district","districts":[]},{"citycode":"0555","adcode":"340503","name":"\u82b1\u5c71\u533a","center":"118.511366,31.700127","level":"district","districts":[]}]},{"citycode":"0558","adcode":"341600","name":"\u4eb3\u5dde\u5e02","center":"115.778588,33.846285","level":"city","districts":[{"citycode":"0558","adcode":"341602","name":"\u8c2f\u57ce\u533a","center":"115.779081,33.876436","level":"district","districts":[]},{"citycode":"0558","adcode":"341623","name":"\u5229\u8f9b\u53bf","center":"116.206396,33.158424","level":"district","districts":[]},{"citycode":"0558","adcode":"341622","name":"\u8499\u57ce\u53bf","center":"116.56434,33.265671","level":"district","districts":[]},{"citycode":"0558","adcode":"341621","name":"\u6da1\u9633\u53bf","center":"116.21665,33.494134","level":"district","districts":[]}]},{"citycode":"0564","adcode":"341500","name":"\u516d\u5b89\u5e02","center":"116.519729,31.735892","level":"city","districts":[{"citycode":"0564","adcode":"341524","name":"\u91d1\u5be8\u53bf","center":"115.934253,31.727295","level":"district","districts":[]},{"citycode":"0564","adcode":"341522","name":"\u970d\u90b1\u53bf","center":"116.277966,32.353362","level":"district","districts":[]},{"citycode":"0564","adcode":"341502","name":"\u91d1\u5b89\u533a","center":"116.539458,31.75014","level":"district","districts":[]},{"citycode":"0564","adcode":"341503","name":"\u88d5\u5b89\u533a","center":"116.479505,31.738789","level":"district","districts":[]},{"citycode":"0564","adcode":"341504","name":"\u53f6\u96c6\u533a","center":"115.925271,31.863693","level":"district","districts":[]},{"citycode":"0564","adcode":"341525","name":"\u970d\u5c71\u53bf","center":"116.348274,31.409668","level":"district","districts":[]},{"citycode":"0564","adcode":"341523","name":"\u8212\u57ce\u53bf","center":"116.94863,31.462036","level":"district","districts":[]}]},{"citycode":"1558","adcode":"341200","name":"\u961c\u9633\u5e02","center":"115.814252,32.891032","level":"city","districts":[{"citycode":"1558","adcode":"341202","name":"\u988d\u5dde\u533a","center":"115.806916,32.883322","level":"district","districts":[]},{"citycode":"1558","adcode":"341221","name":"\u4e34\u6cc9\u53bf","center":"115.26312,33.038884","level":"district","districts":[]},{"citycode":"1558","adcode":"341282","name":"\u754c\u9996\u5e02","center":"115.374688,33.257799","level":"district","districts":[]},{"citycode":"1558","adcode":"341203","name":"\u988d\u4e1c\u533a","center":"115.856728,32.91173","level":"district","districts":[]},{"citycode":"1558","adcode":"341204","name":"\u988d\u6cc9\u533a","center":"115.807415,32.925461","level":"district","districts":[]},{"citycode":"1558","adcode":"341222","name":"\u592a\u548c\u53bf","center":"115.621941,33.160327","level":"district","districts":[]},{"citycode":"1558","adcode":"341226","name":"\u988d\u4e0a\u53bf","center":"116.256772,32.653211","level":"district","districts":[]},{"citycode":"1558","adcode":"341225","name":"\u961c\u5357\u53bf","center":"115.596003,32.659681","level":"district","districts":[]}]},{"citycode":"0554","adcode":"340400","name":"\u6dee\u5357\u5e02","center":"117.018603,32.585384","level":"city","districts":[{"citycode":"0554","adcode":"340406","name":"\u6f58\u96c6\u533a","center":"116.834715,32.77208","level":"district","districts":[]},{"citycode":"0554","adcode":"340405","name":"\u516b\u516c\u5c71\u533a","center":"116.832979,32.630922","level":"district","districts":[]},{"citycode":"0554","adcode":"340404","name":"\u8c22\u5bb6\u96c6\u533a","center":"116.860026,32.599173","level":"district","districts":[]},{"citycode":"0554","adcode":"340403","name":"\u7530\u5bb6\u5eb5\u533a","center":"117.017263,32.647456","level":"district","districts":[]},{"citycode":"0554","adcode":"340402","name":"\u5927\u901a\u533a","center":"117.053314,32.631519","level":"district","districts":[]},{"citycode":"0554","adcode":"340422","name":"\u5bff\u53bf","center":"116.798203,32.545027","level":"district","districts":[]},{"citycode":"0554","adcode":"340421","name":"\u51e4\u53f0\u53bf","center":"116.710947,32.710536","level":"district","districts":[]}]},{"citycode":"0557","adcode":"341300","name":"\u5bbf\u5dde\u5e02","center":"116.96419,33.647726","level":"city","districts":[{"citycode":"0557","adcode":"341324","name":"\u6cd7\u53bf","center":"117.910277,33.483686","level":"district","districts":[]},{"citycode":"0557","adcode":"341302","name":"\u57c7\u6865\u533a","center":"116.977039,33.640205","level":"district","districts":[]},{"citycode":"0557","adcode":"341323","name":"\u7075\u74a7\u53bf","center":"117.549321,33.554464","level":"district","districts":[]},{"citycode":"0557","adcode":"341322","name":"\u8427\u53bf","center":"116.947289,34.18884","level":"district","districts":[]},{"citycode":"0557","adcode":"341321","name":"\u7800\u5c71\u53bf","center":"116.366257,34.442139","level":"district","districts":[]}]},{"citycode":"0552","adcode":"340300","name":"\u868c\u57e0\u5e02","center":"117.388566,32.91682","level":"city","districts":[{"citycode":"0552","adcode":"340311","name":"\u6dee\u4e0a\u533a","center":"117.359352,32.96557","level":"district","districts":[]},{"citycode":"0552","adcode":"340304","name":"\u79b9\u4f1a\u533a","center":"117.34186,32.929715","level":"district","districts":[]},{"citycode":"0552","adcode":"340303","name":"\u868c\u5c71\u533a","center":"117.373347,32.916393","level":"district","districts":[]},{"citycode":"0552","adcode":"340302","name":"\u9f99\u5b50\u6e56\u533a","center":"117.454544,32.90863","level":"district","districts":[]},{"citycode":"0552","adcode":"340321","name":"\u6000\u8fdc\u53bf","center":"117.205083,32.971543","level":"district","districts":[]},{"citycode":"0552","adcode":"340323","name":"\u56fa\u9547\u53bf","center":"117.316585,33.318371","level":"district","districts":[]},{"citycode":"0552","adcode":"340322","name":"\u4e94\u6cb3\u53bf","center":"117.881312,33.126532","level":"district","districts":[]}]},{"citycode":"0553","adcode":"340200","name":"\u829c\u6e56\u5e02","center":"118.433065,31.352614","level":"city","districts":[{"citycode":"0553","adcode":"340209","name":"\u5f0b\u6c5f\u533a","center":"118.372664,31.311421","level":"district","districts":[]},{"citycode":"0553","adcode":"340212","name":"\u7e41\u660c\u533a","center":"118.198536,31.101766","level":"district","districts":[]},{"citycode":"0553","adcode":"340202","name":"\u955c\u6e56\u533a","center":"118.385133,31.34056","level":"district","districts":[]},{"citycode":"0553","adcode":"340223","name":"\u5357\u9675\u53bf","center":"118.334083,30.914621","level":"district","districts":[]},{"citycode":"0553","adcode":"340281","name":"\u65e0\u4e3a\u5e02","center":"117.902265,31.304462","level":"district","districts":[]},{"citycode":"0553","adcode":"340210","name":"\u6e7e\u6c9a\u533a","center":"118.576124,31.134809","level":"district","districts":[]},{"citycode":"0553","adcode":"340207","name":"\u9e20\u6c5f\u533a","center":"118.392337,31.369752","level":"district","districts":[]}]},{"citycode":"0551","adcode":"340100","name":"\u5408\u80a5\u5e02","center":"117.227267,31.820567","level":"city","districts":[{"citycode":"0551","adcode":"340103","name":"\u5e90\u9633\u533a","center":"117.265088,31.878722","level":"district","districts":[]},{"citycode":"0551","adcode":"340111","name":"\u5305\u6cb3\u533a","center":"117.310133,31.793801","level":"district","districts":[]},{"citycode":"0551","adcode":"340102","name":"\u7476\u6d77\u533a","center":"117.30944,31.858111","level":"district","districts":[]},{"citycode":"0551","adcode":"340123","name":"\u80a5\u897f\u53bf","center":"117.158416,31.707006","level":"district","districts":[]},{"citycode":"0551","adcode":"340104","name":"\u8700\u5c71\u533a","center":"117.26053,31.851211","level":"district","districts":[]},{"citycode":"0551","adcode":"340124","name":"\u5e90\u6c5f\u53bf","center":"117.288165,31.256978","level":"district","districts":[]},{"citycode":"0551","adcode":"340121","name":"\u957f\u4e30\u53bf","center":"117.167632,32.478347","level":"district","districts":[]},{"citycode":"0551","adcode":"340122","name":"\u80a5\u4e1c\u53bf","center":"117.4779,31.878601","level":"district","districts":[]},{"citycode":"0551","adcode":"340181","name":"\u5de2\u6e56\u5e02","center":"117.890236,31.624464","level":"district","districts":[]}]},{"citycode":"0550","adcode":"341100","name":"\u6ec1\u5dde\u5e02","center":"118.333439,32.255904","level":"city","districts":[{"citycode":"0550","adcode":"341126","name":"\u51e4\u9633\u53bf","center":"117.531791,32.875714","level":"district","districts":[]},{"citycode":"0550","adcode":"341182","name":"\u660e\u5149\u5e02","center":"118.018197,32.78193","level":"district","districts":[]},{"citycode":"0550","adcode":"341124","name":"\u5168\u6912\u53bf","center":"118.274149,32.08593","level":"district","districts":[]},{"citycode":"0550","adcode":"341181","name":"\u5929\u957f\u5e02","center":"119.004838,32.667409","level":"district","districts":[]},{"citycode":"0550","adcode":"341102","name":"\u7405\u740a\u533a","center":"118.32115,32.334475","level":"district","districts":[]},{"citycode":"0550","adcode":"341103","name":"\u5357\u8c2f\u533a","center":"118.416715,32.200084","level":"district","districts":[]},{"citycode":"0550","adcode":"341125","name":"\u5b9a\u8fdc\u53bf","center":"117.698528,32.530741","level":"district","districts":[]},{"citycode":"0550","adcode":"341122","name":"\u6765\u5b89\u53bf","center":"118.432581,32.423072","level":"district","districts":[]}]},{"citycode":"0559","adcode":"341000","name":"\u9ec4\u5c71\u5e02","center":"118.337643,29.714886","level":"city","districts":[{"citycode":"0559","adcode":"341003","name":"\u9ec4\u5c71\u533a","center":"118.141632,30.272991","level":"district","districts":[]},{"citycode":"0559","adcode":"341022","name":"\u4f11\u5b81\u53bf","center":"118.193533,29.784532","level":"district","districts":[]},{"citycode":"0559","adcode":"341024","name":"\u7941\u95e8\u53bf","center":"117.717452,29.854179","level":"district","districts":[]},{"citycode":"0559","adcode":"341023","name":"\u9edf\u53bf","center":"117.938139,29.92477","level":"district","districts":[]},{"citycode":"0559","adcode":"341004","name":"\u5fbd\u5dde\u533a","center":"118.336799,29.827291","level":"district","districts":[]},{"citycode":"0559","adcode":"341002","name":"\u5c6f\u6eaa\u533a","center":"118.315012,29.69655","level":"district","districts":[]},{"citycode":"0559","adcode":"341021","name":"\u6b59\u53bf","center":"118.415258,29.861354","level":"district","districts":[]}]},{"citycode":"0563","adcode":"341800","name":"\u5ba3\u57ce\u5e02","center":"118.759127,30.939278","level":"city","districts":[{"citycode":"0563","adcode":"341825","name":"\u65cc\u5fb7\u53bf","center":"118.550043,30.298287","level":"district","districts":[]},{"citycode":"0563","adcode":"341881","name":"\u5b81\u56fd\u5e02","center":"118.983085,30.634032","level":"district","districts":[]},{"citycode":"0563","adcode":"341823","name":"\u6cfe\u53bf","center":"118.419552,30.688793","level":"district","districts":[]},{"citycode":"0563","adcode":"341802","name":"\u5ba3\u5dde\u533a","center":"118.786098,30.944356","level":"district","districts":[]},{"citycode":"0563","adcode":"341821","name":"\u90ce\u6eaa\u53bf","center":"119.184326,31.142995","level":"district","districts":[]},{"citycode":"0563","adcode":"341882","name":"\u5e7f\u5fb7\u5e02","center":"119.420799,30.877608","level":"district","districts":[]},{"citycode":"0563","adcode":"341824","name":"\u7ee9\u6eaa\u53bf","center":"118.578519,30.067533","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"350000","name":"\u798f\u5efa\u7701","center":"119.296194,26.101082","level":"province","districts":[{"citycode":"0593","adcode":"350900","name":"\u5b81\u5fb7\u5e02","center":"119.547729,26.666222","level":"city","districts":[{"citycode":"0593","adcode":"350982","name":"\u798f\u9f0e\u5e02","center":"120.216559,27.324796","level":"district","districts":[]},{"citycode":"0593","adcode":"350902","name":"\u8549\u57ce\u533a","center":"119.526284,26.660658","level":"district","districts":[]},{"citycode":"0593","adcode":"350921","name":"\u971e\u6d66\u53bf","center":"120.005267,26.885971","level":"district","districts":[]},{"citycode":"0593","adcode":"350922","name":"\u53e4\u7530\u53bf","center":"118.74603,26.578134","level":"district","districts":[]},{"citycode":"0593","adcode":"350981","name":"\u798f\u5b89\u5e02","center":"119.647871,27.088274","level":"district","districts":[]},{"citycode":"0593","adcode":"350924","name":"\u5bff\u5b81\u53bf","center":"119.514589,27.45467","level":"district","districts":[]},{"citycode":"0593","adcode":"350926","name":"\u67d8\u8363\u53bf","center":"119.900597,27.23421","level":"district","districts":[]},{"citycode":"0593","adcode":"350925","name":"\u5468\u5b81\u53bf","center":"119.338998,27.104797","level":"district","districts":[]},{"citycode":"0593","adcode":"350923","name":"\u5c4f\u5357\u53bf","center":"118.985759,26.908256","level":"district","districts":[]}]},{"citycode":"0591","adcode":"350100","name":"\u798f\u5dde\u5e02","center":"119.296411,26.074286","level":"city","districts":[{"citycode":"0591","adcode":"350123","name":"\u7f57\u6e90\u53bf","center":"119.549129,26.490215","level":"district","districts":[]},{"citycode":"0591","adcode":"350124","name":"\u95fd\u6e05\u53bf","center":"118.863334,26.221099","level":"district","districts":[]},{"citycode":"0591","adcode":"350122","name":"\u8fde\u6c5f\u53bf","center":"119.539542,26.197737","level":"district","districts":[]},{"citycode":"0591","adcode":"350181","name":"\u798f\u6e05\u5e02","center":"119.384388,25.720081","level":"district","districts":[]},{"citycode":"0591","adcode":"350112","name":"\u957f\u4e50\u533a","center":"119.593579,25.888274","level":"district","districts":[]},{"citycode":"0591","adcode":"350128","name":"\u5e73\u6f6d\u53bf","center":"119.789893,25.498767","level":"district","districts":[]},{"citycode":"0591","adcode":"350103","name":"\u53f0\u6c5f\u533a","center":"119.31419,26.052826","level":"district","districts":[]},{"citycode":"0591","adcode":"350125","name":"\u6c38\u6cf0\u53bf","center":"118.932746,25.867198","level":"district","districts":[]},{"citycode":"0591","adcode":"350102","name":"\u9f13\u697c\u533a","center":"119.304507,26.082666","level":"district","districts":[]},{"citycode":"0591","adcode":"350111","name":"\u664b\u5b89\u533a","center":"119.328591,26.081963","level":"district","districts":[]},{"citycode":"0591","adcode":"350105","name":"\u9a6c\u5c3e\u533a","center":"119.439259,25.998657","level":"district","districts":[]},{"citycode":"0591","adcode":"350104","name":"\u4ed3\u5c71\u533a","center":"119.27322,26.047027","level":"district","districts":[]},{"citycode":"0591","adcode":"350121","name":"\u95fd\u4faf\u53bf","center":"119.131362,26.150428","level":"district","districts":[]}]},{"citycode":"0594","adcode":"350300","name":"\u8386\u7530\u5e02","center":"119.007662,25.454202","level":"city","districts":[{"citycode":"0594","adcode":"350305","name":"\u79c0\u5c7f\u533a","center":"119.105177,25.318649","level":"district","districts":[]},{"citycode":"0594","adcode":"350304","name":"\u8354\u57ce\u533a","center":"119.014821,25.432268","level":"district","districts":[]},{"citycode":"0594","adcode":"350302","name":"\u57ce\u53a2\u533a","center":"118.994261,25.419062","level":"district","districts":[]},{"citycode":"0594","adcode":"350322","name":"\u4ed9\u6e38\u53bf","center":"118.689745,25.373373","level":"district","districts":[]},{"citycode":"0594","adcode":"350303","name":"\u6db5\u6c5f\u533a","center":"119.116173,25.459057","level":"district","districts":[]}]},{"citycode":"0595","adcode":"350500","name":"\u6cc9\u5dde\u5e02","center":"118.675724,24.874452","level":"city","districts":[{"citycode":"0595","adcode":"350504","name":"\u6d1b\u6c5f\u533a","center":"118.671168,24.939319","level":"district","districts":[]},{"citycode":"0595","adcode":"350521","name":"\u60e0\u5b89\u53bf","center":"118.781037,25.012449","level":"district","districts":[]},{"citycode":"0595","adcode":"350582","name":"\u664b\u6c5f\u5e02","center":"118.551659,24.781635","level":"district","districts":[]},{"citycode":"0595","adcode":"350583","name":"\u5357\u5b89\u5e02","center":"118.385929,24.960056","level":"district","districts":[]},{"citycode":"0595","adcode":"350527","name":"\u91d1\u95e8\u53bf","center":"118.323912,24.434368","level":"district","districts":[]},{"citycode":"0595","adcode":"350505","name":"\u6cc9\u6e2f\u533a","center":"118.915804,25.120399","level":"district","districts":[]},{"citycode":"0595","adcode":"350581","name":"\u77f3\u72ee\u5e02","center":"118.647945,24.731969","level":"district","districts":[]},{"citycode":"0595","adcode":"350526","name":"\u5fb7\u5316\u53bf","center":"118.241104,25.492102","level":"district","districts":[]},{"citycode":"0595","adcode":"350503","name":"\u4e30\u6cfd\u533a","center":"118.613007,24.890373","level":"district","districts":[]},{"citycode":"0595","adcode":"350502","name":"\u9ca4\u57ce\u533a","center":"118.58652,24.908133","level":"district","districts":[]},{"citycode":"0595","adcode":"350525","name":"\u6c38\u6625\u53bf","center":"118.29416,25.321849","level":"district","districts":[]},{"citycode":"0595","adcode":"350524","name":"\u5b89\u6eaa\u53bf","center":"118.186295,25.056065","level":"district","districts":[]}]},{"citycode":"0592","adcode":"350200","name":"\u53a6\u95e8\u5e02","center":"118.08891,24.479627","level":"city","districts":[{"citycode":"0592","adcode":"350206","name":"\u6e56\u91cc\u533a","center":"118.146825,24.512858","level":"district","districts":[]},{"citycode":"0592","adcode":"350203","name":"\u601d\u660e\u533a","center":"118.082745,24.445676","level":"district","districts":[]},{"citycode":"0592","adcode":"350213","name":"\u7fd4\u5b89\u533a","center":"118.247911,24.618583","level":"district","districts":[]},{"citycode":"0592","adcode":"350212","name":"\u540c\u5b89\u533a","center":"118.150823,24.723299","level":"district","districts":[]},{"citycode":"0592","adcode":"350211","name":"\u96c6\u7f8e\u533a","center":"118.097407,24.575976","level":"district","districts":[]},{"citycode":"0592","adcode":"350205","name":"\u6d77\u6ca7\u533a","center":"118.032883,24.484688","level":"district","districts":[]}]},{"citycode":"0596","adcode":"350600","name":"\u6f33\u5dde\u5e02","center":"117.647298,24.515297","level":"city","districts":[{"citycode":"0596","adcode":"350604","name":"\u9f99\u6d77\u533a","center":"117.818485,24.446839","level":"district","districts":[]},{"citycode":"0596","adcode":"350623","name":"\u6f33\u6d66\u53bf","center":"117.613783,24.11741","level":"district","districts":[]},{"citycode":"0596","adcode":"350626","name":"\u4e1c\u5c71\u53bf","center":"117.4295,23.702034","level":"district","districts":[]},{"citycode":"0596","adcode":"350605","name":"\u957f\u6cf0\u533a","center":"117.759119,24.625989","level":"district","districts":[]},{"citycode":"0596","adcode":"350628","name":"\u5e73\u548c\u53bf","center":"117.314798,24.363831","level":"district","districts":[]},{"citycode":"0596","adcode":"350603","name":"\u9f99\u6587\u533a","center":"117.711188,24.503523","level":"district","districts":[]},{"citycode":"0596","adcode":"350629","name":"\u534e\u5b89\u53bf","center":"117.53411,25.00445","level":"district","districts":[]},{"citycode":"0596","adcode":"350627","name":"\u5357\u9756\u53bf","center":"117.357061,24.5151","level":"district","districts":[]},{"citycode":"0596","adcode":"350602","name":"\u8297\u57ce\u533a","center":"117.653727,24.510937","level":"district","districts":[]},{"citycode":"0596","adcode":"350624","name":"\u8bcf\u5b89\u53bf","center":"117.175314,23.711674","level":"district","districts":[]},{"citycode":"0596","adcode":"350622","name":"\u4e91\u9704\u53bf","center":"117.334351,23.935433","level":"district","districts":[]}]},{"citycode":"0598","adcode":"350400","name":"\u4e09\u660e\u5e02","center":"117.638919,26.263455","level":"city","districts":[{"citycode":"0598","adcode":"350426","name":"\u5c24\u6eaa\u53bf","center":"118.189772,26.168712","level":"district","districts":[]},{"citycode":"0598","adcode":"350425","name":"\u5927\u7530\u53bf","center":"117.846828,25.692535","level":"district","districts":[]},{"citycode":"0598","adcode":"350404","name":"\u4e09\u5143\u533a","center":"117.646153,26.271653","level":"district","districts":[]},{"citycode":"0598","adcode":"350405","name":"\u6c99\u53bf\u533a","center":"117.792551,26.396843","level":"district","districts":[]},{"citycode":"0598","adcode":"350421","name":"\u660e\u6eaa\u53bf","center":"117.202119,26.355938","level":"district","districts":[]},{"citycode":"0598","adcode":"350424","name":"\u5b81\u5316\u53bf","center":"116.654369,26.262298","level":"district","districts":[]},{"citycode":"0598","adcode":"350423","name":"\u6e05\u6d41\u53bf","center":"116.816772,26.177658","level":"district","districts":[]},{"citycode":"0598","adcode":"350481","name":"\u6c38\u5b89\u5e02","center":"117.365046,25.941671","level":"district","districts":[]},{"citycode":"0598","adcode":"350428","name":"\u5c06\u4e50\u53bf","center":"117.471127,26.728917","level":"district","districts":[]},{"citycode":"0598","adcode":"350429","name":"\u6cf0\u5b81\u53bf","center":"117.175448,26.900244","level":"district","districts":[]},{"citycode":"0598","adcode":"350430","name":"\u5efa\u5b81\u53bf","center":"116.848488,26.833566","level":"district","districts":[]}]},{"citycode":"0597","adcode":"350800","name":"\u9f99\u5ca9\u5e02","center":"117.017362,25.075884","level":"city","districts":[{"citycode":"0597","adcode":"350803","name":"\u6c38\u5b9a\u533a","center":"116.732216,24.724148","level":"district","districts":[]},{"citycode":"0597","adcode":"350802","name":"\u65b0\u7f57\u533a","center":"117.036816,25.098942","level":"district","districts":[]},{"citycode":"0597","adcode":"350881","name":"\u6f33\u5e73\u5e02","center":"117.419823,25.290481","level":"district","districts":[]},{"citycode":"0597","adcode":"350825","name":"\u8fde\u57ce\u53bf","center":"116.754472,25.710538","level":"district","districts":[]},{"citycode":"0597","adcode":"350821","name":"\u957f\u6c40\u53bf","center":"116.357581,25.833531","level":"district","districts":[]},{"citycode":"0597","adcode":"350823","name":"\u4e0a\u676d\u53bf","center":"116.419447,25.049867","level":"district","districts":[]},{"citycode":"0597","adcode":"350824","name":"\u6b66\u5e73\u53bf","center":"116.100216,25.096139","level":"district","districts":[]}]},{"citycode":"0599","adcode":"350700","name":"\u5357\u5e73\u5e02","center":"118.081325,27.382829","level":"city","districts":[{"citycode":"0599","adcode":"350722","name":"\u6d66\u57ce\u53bf","center":"118.541079,27.917804","level":"district","districts":[]},{"citycode":"0599","adcode":"350723","name":"\u5149\u6cfd\u53bf","center":"117.333812,27.541061","level":"district","districts":[]},{"citycode":"0599","adcode":"350703","name":"\u5efa\u9633\u533a","center":"118.120392,27.331996","level":"district","districts":[]},{"citycode":"0599","adcode":"350724","name":"\u677e\u6eaa\u53bf","center":"118.785429,27.526028","level":"district","districts":[]},{"citycode":"0599","adcode":"350725","name":"\u653f\u548c\u53bf","center":"118.857703,27.366122","level":"district","districts":[]},{"citycode":"0599","adcode":"350702","name":"\u5ef6\u5e73\u533a","center":"118.181806,26.637503","level":"district","districts":[]},{"citycode":"0599","adcode":"350783","name":"\u5efa\u74ef\u5e02","center":"118.304712,27.023233","level":"district","districts":[]},{"citycode":"0599","adcode":"350721","name":"\u987a\u660c\u53bf","center":"117.809433,26.793455","level":"district","districts":[]},{"citycode":"0599","adcode":"350781","name":"\u90b5\u6b66\u5e02","center":"117.492778,27.340672","level":"district","districts":[]},{"citycode":"0599","adcode":"350782","name":"\u6b66\u5937\u5c71\u5e02","center":"118.035321,27.756422","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"430000","name":"\u6e56\u5357\u7701","center":"112.982951,28.116007","level":"province","districts":[{"citycode":"0730","adcode":"430600","name":"\u5cb3\u9633\u5e02","center":"113.128922,29.35648","level":"city","districts":[{"citycode":"0730","adcode":"430603","name":"\u4e91\u6eaa\u533a","center":"113.272312,29.472745","level":"district","districts":[]},{"citycode":"0730","adcode":"430623","name":"\u534e\u5bb9\u53bf","center":"112.540448,29.530775","level":"district","districts":[]},{"citycode":"0730","adcode":"430682","name":"\u4e34\u6e58\u5e02","center":"113.450461,29.476687","level":"district","districts":[]},{"citycode":"0730","adcode":"430611","name":"\u541b\u5c71\u533a","center":"113.006434,29.461017","level":"district","districts":[]},{"citycode":"0730","adcode":"430624","name":"\u6e58\u9634\u53bf","center":"112.909248,28.690123","level":"district","districts":[]},{"citycode":"0730","adcode":"430626","name":"\u5e73\u6c5f\u53bf","center":"113.581296,28.702018","level":"district","districts":[]},{"citycode":"0730","adcode":"430602","name":"\u5cb3\u9633\u697c\u533a","center":"113.129362,29.371356","level":"district","districts":[]},{"citycode":"0730","adcode":"430621","name":"\u5cb3\u9633\u53bf","center":"113.116152,29.144681","level":"district","districts":[]},{"citycode":"0730","adcode":"430681","name":"\u6c68\u7f57\u5e02","center":"113.067097,28.806937","level":"district","districts":[]}]},{"citycode":"0745","adcode":"431200","name":"\u6000\u5316\u5e02","center":"110.001598,27.569813","level":"city","districts":[{"citycode":"0745","adcode":"431230","name":"\u901a\u9053\u4f97\u65cf\u81ea\u6cbb\u53bf","center":"109.784409,26.158032","level":"district","districts":[]},{"citycode":"0745","adcode":"431223","name":"\u8fb0\u6eaa\u53bf","center":"110.183159,28.006235","level":"district","districts":[]},{"citycode":"0745","adcode":"431226","name":"\u9ebb\u9633\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"109.817703,27.857666","level":"district","districts":[]},{"citycode":"0745","adcode":"431225","name":"\u4f1a\u540c\u53bf","center":"109.734724,26.887156","level":"district","districts":[]},{"citycode":"0745","adcode":"431224","name":"\u6e86\u6d66\u53bf","center":"110.594419,27.908869","level":"district","districts":[]},{"citycode":"0745","adcode":"431281","name":"\u6d2a\u6c5f\u5e02","center":"109.836475,27.209385","level":"district","districts":[]},{"citycode":"0745","adcode":"431227","name":"\u65b0\u6643\u4f97\u65cf\u81ea\u6cbb\u53bf","center":"109.174808,27.352094","level":"district","districts":[]},{"citycode":"0745","adcode":"431229","name":"\u9756\u5dde\u82d7\u65cf\u4f97\u65cf\u81ea\u6cbb\u53bf","center":"109.696249,26.575111","level":"district","districts":[]},{"citycode":"0745","adcode":"431228","name":"\u82b7\u6c5f\u4f97\u65cf\u81ea\u6cbb\u53bf","center":"109.684696,27.443429","level":"district","districts":[]},{"citycode":"0745","adcode":"431202","name":"\u9e64\u57ce\u533a","center":"110.040099,27.578581","level":"district","districts":[]},{"citycode":"0745","adcode":"431221","name":"\u4e2d\u65b9\u53bf","center":"109.945436,27.440554","level":"district","districts":[]},{"citycode":"0745","adcode":"431222","name":"\u6c85\u9675\u53bf","center":"110.393782,28.452103","level":"district","districts":[]}]},{"citycode":"0743","adcode":"433100","name":"\u6e58\u897f\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","center":"109.673345,28.215983","level":"city","districts":[{"citycode":"0743","adcode":"433127","name":"\u6c38\u987a\u53bf","center":"109.857142,28.979819","level":"district","districts":[]},{"citycode":"0743","adcode":"433125","name":"\u4fdd\u9756\u53bf","center":"109.660433,28.699939","level":"district","districts":[]},{"citycode":"0743","adcode":"433122","name":"\u6cf8\u6eaa\u53bf","center":"110.219619,28.216109","level":"district","districts":[]},{"citycode":"0743","adcode":"433126","name":"\u53e4\u4e08\u53bf","center":"109.95072,28.616971","level":"district","districts":[]},{"citycode":"0743","adcode":"433130","name":"\u9f99\u5c71\u53bf","center":"109.443974,29.457623","level":"district","districts":[]},{"citycode":"0743","adcode":"433101","name":"\u5409\u9996\u5e02","center":"109.698348,28.261948","level":"district","districts":[]},{"citycode":"0743","adcode":"433123","name":"\u51e4\u51f0\u53bf","center":"109.580815,27.957441","level":"district","districts":[]},{"citycode":"0743","adcode":"433124","name":"\u82b1\u57a3\u53bf","center":"109.482378,28.57191","level":"district","districts":[]}]},{"citycode":"0737","adcode":"430900","name":"\u76ca\u9633\u5e02","center":"112.355994,28.554853","level":"city","districts":[{"citycode":"0737","adcode":"430981","name":"\u6c85\u6c5f\u5e02","center":"112.354657,28.845755","level":"district","districts":[]},{"citycode":"0737","adcode":"430921","name":"\u5357\u53bf","center":"112.396323,29.362396","level":"district","districts":[]},{"citycode":"0737","adcode":"430903","name":"\u8d6b\u5c71\u533a","center":"112.373895,28.58011","level":"district","districts":[]},{"citycode":"0737","adcode":"430922","name":"\u6843\u6c5f\u53bf","center":"112.156432,28.518215","level":"district","districts":[]},{"citycode":"0737","adcode":"430923","name":"\u5b89\u5316\u53bf","center":"111.213296,28.374223","level":"district","districts":[]},{"citycode":"0737","adcode":"430902","name":"\u8d44\u9633\u533a","center":"112.324286,28.59149","level":"district","districts":[]}]},{"citycode":"0744","adcode":"430800","name":"\u5f20\u5bb6\u754c\u5e02","center":"110.478887,29.117343","level":"city","districts":[{"citycode":"0744","adcode":"430802","name":"\u6c38\u5b9a\u533a","center":"110.537379,29.119662","level":"district","districts":[]},{"citycode":"0744","adcode":"430822","name":"\u6851\u690d\u53bf","center":"110.204804,29.414112","level":"district","districts":[]},{"citycode":"0744","adcode":"430811","name":"\u6b66\u9675\u6e90\u533a","center":"110.550309,29.345721","level":"district","districts":[]},{"citycode":"0744","adcode":"430821","name":"\u6148\u5229\u53bf","center":"111.139424,29.430429","level":"district","districts":[]}]},{"citycode":"0733","adcode":"430200","name":"\u682a\u6d32\u5e02","center":"113.132783,27.828862","level":"city","districts":[{"citycode":"0733","adcode":"430202","name":"\u8377\u5858\u533a","center":"113.173169,27.856314","level":"district","districts":[]},{"citycode":"0733","adcode":"430223","name":"\u6538\u53bf","center":"113.397152,27.01516","level":"district","districts":[]},{"citycode":"0733","adcode":"430211","name":"\u5929\u5143\u533a","center":"113.082227,27.826738","level":"district","districts":[]},{"citycode":"0733","adcode":"430212","name":"\u6e0c\u53e3\u533a","center":"113.143832,27.699361","level":"district","districts":[]},{"citycode":"0733","adcode":"430204","name":"\u77f3\u5cf0\u533a","center":"113.117763,27.875513","level":"district","districts":[]},{"citycode":"0733","adcode":"430224","name":"\u8336\u9675\u53bf","center":"113.537907,26.777957","level":"district","districts":[]},{"citycode":"0733","adcode":"430225","name":"\u708e\u9675\u53bf","center":"113.772665,26.489847","level":"district","districts":[]},{"citycode":"0733","adcode":"430281","name":"\u91b4\u9675\u5e02","center":"113.497119,27.6457","level":"district","districts":[]},{"citycode":"0733","adcode":"430203","name":"\u82a6\u6dde\u533a","center":"113.153455,27.785198","level":"district","districts":[]}]},{"citycode":"0738","adcode":"431300","name":"\u5a04\u5e95\u5e02","center":"111.994468,27.699838","level":"city","districts":[{"citycode":"0738","adcode":"431321","name":"\u53cc\u5cf0\u53bf","center":"112.174265,27.457996","level":"district","districts":[]},{"citycode":"0738","adcode":"431381","name":"\u51b7\u6c34\u6c5f\u5e02","center":"111.459199,27.656017","level":"district","districts":[]},{"citycode":"0738","adcode":"431322","name":"\u65b0\u5316\u53bf","center":"111.327674,27.725416","level":"district","districts":[]},{"citycode":"0738","adcode":"431302","name":"\u5a04\u661f\u533a","center":"112.001922,27.730208","level":"district","districts":[]},{"citycode":"0738","adcode":"431382","name":"\u6d9f\u6e90\u5e02","center":"111.663837,27.693813","level":"district","districts":[]}]},{"citycode":"0735","adcode":"431000","name":"\u90f4\u5dde\u5e02","center":"113.015517,25.770117","level":"city","districts":[{"citycode":"0735","adcode":"431003","name":"\u82cf\u4ed9\u533a","center":"113.042364,25.799624","level":"district","districts":[]},{"citycode":"0735","adcode":"431026","name":"\u6c5d\u57ce\u53bf","center":"113.685193,25.533024","level":"district","districts":[]},{"citycode":"0735","adcode":"431022","name":"\u5b9c\u7ae0\u53bf","center":"112.948806,25.40059","level":"district","districts":[]},{"citycode":"0735","adcode":"431028","name":"\u5b89\u4ec1\u53bf","center":"113.269703,26.708569","level":"district","districts":[]},{"citycode":"0735","adcode":"431027","name":"\u6842\u4e1c\u53bf","center":"113.944792,26.077609","level":"district","districts":[]},{"citycode":"0735","adcode":"431081","name":"\u8d44\u5174\u5e02","center":"113.235841,25.977226","level":"district","districts":[]},{"citycode":"0735","adcode":"431002","name":"\u5317\u6e56\u533a","center":"113.010606,25.784632","level":"district","districts":[]},{"citycode":"0735","adcode":"431021","name":"\u6842\u9633\u53bf","center":"112.733804,25.75382","level":"district","districts":[]},{"citycode":"0735","adcode":"431025","name":"\u4e34\u6b66\u53bf","center":"112.563833,25.276459","level":"district","districts":[]},{"citycode":"0735","adcode":"431024","name":"\u5609\u79be\u53bf","center":"112.379216,25.616025","level":"district","districts":[]},{"citycode":"0735","adcode":"431023","name":"\u6c38\u5174\u53bf","center":"113.116587,26.127155","level":"district","districts":[]}]},{"citycode":"0746","adcode":"431100","name":"\u6c38\u5dde\u5e02","center":"111.613482,26.419861","level":"city","districts":[{"citycode":"0746","adcode":"431103","name":"\u51b7\u6c34\u6ee9\u533a","center":"111.592373,26.461313","level":"district","districts":[]},{"citycode":"0746","adcode":"431126","name":"\u5b81\u8fdc\u53bf","center":"111.945925,25.570817","level":"district","districts":[]},{"citycode":"0746","adcode":"431102","name":"\u96f6\u9675\u533a","center":"111.629806,26.222278","level":"district","districts":[]},{"citycode":"0746","adcode":"431128","name":"\u65b0\u7530\u53bf","center":"112.203396,25.903965","level":"district","districts":[]},{"citycode":"0746","adcode":"431123","name":"\u53cc\u724c\u53bf","center":"111.659967,25.961909","level":"district","districts":[]},{"citycode":"0746","adcode":"431124","name":"\u9053\u53bf","center":"111.600866,25.526282","level":"district","districts":[]},{"citycode":"0746","adcode":"431181","name":"\u7941\u9633\u5e02","center":"111.840253,26.580292","level":"district","districts":[]},{"citycode":"0746","adcode":"431127","name":"\u84dd\u5c71\u53bf","center":"112.195842,25.369575","level":"district","districts":[]},{"citycode":"0746","adcode":"431125","name":"\u6c5f\u6c38\u53bf","center":"111.343543,25.274461","level":"district","districts":[]},{"citycode":"0746","adcode":"431122","name":"\u4e1c\u5b89\u53bf","center":"111.315893,26.392173","level":"district","districts":[]},{"citycode":"0746","adcode":"431129","name":"\u6c5f\u534e\u7476\u65cf\u81ea\u6cbb\u53bf","center":"111.57951,25.185257","level":"district","districts":[]}]},{"citycode":"0734","adcode":"430400","name":"\u8861\u9633\u5e02","center":"112.572016,26.894216","level":"city","districts":[{"citycode":"0734","adcode":"430412","name":"\u5357\u5cb3\u533a","center":"112.737678,27.231846","level":"district","districts":[]},{"citycode":"0734","adcode":"430421","name":"\u8861\u9633\u53bf","center":"112.370649,26.970258","level":"district","districts":[]},{"citycode":"0734","adcode":"430405","name":"\u73e0\u6656\u533a","center":"112.620653,26.894796","level":"district","districts":[]},{"citycode":"0734","adcode":"430407","name":"\u77f3\u9f13\u533a","center":"112.597937,26.944257","level":"district","districts":[]},{"citycode":"0734","adcode":"430482","name":"\u5e38\u5b81\u5e02","center":"112.399894,26.421717","level":"district","districts":[]},{"citycode":"0734","adcode":"430424","name":"\u8861\u4e1c\u53bf","center":"112.953113,27.081086","level":"district","districts":[]},{"citycode":"0734","adcode":"430422","name":"\u8861\u5357\u53bf","center":"112.677572,26.739665","level":"district","districts":[]},{"citycode":"0734","adcode":"430406","name":"\u96c1\u5cf0\u533a","center":"112.613914,26.840335","level":"district","districts":[]},{"citycode":"0734","adcode":"430408","name":"\u84b8\u6e58\u533a","center":"112.567333,26.912388","level":"district","districts":[]},{"citycode":"0734","adcode":"430481","name":"\u8012\u9633\u5e02","center":"112.859806,26.422149","level":"district","districts":[]},{"citycode":"0734","adcode":"430426","name":"\u7941\u4e1c\u53bf","center":"112.090319,26.799284","level":"district","districts":[]},{"citycode":"0734","adcode":"430423","name":"\u8861\u5c71\u53bf","center":"112.868361,27.230225","level":"district","districts":[]}]},{"citycode":"0736","adcode":"430700","name":"\u5e38\u5fb7\u5e02","center":"111.69905,29.031446","level":"city","districts":[{"citycode":"0736","adcode":"430781","name":"\u6d25\u5e02\u5e02","center":"111.877957,29.606512","level":"district","districts":[]},{"citycode":"0736","adcode":"430723","name":"\u6fa7\u53bf","center":"111.758806,29.633138","level":"district","districts":[]},{"citycode":"0736","adcode":"430724","name":"\u4e34\u6fa7\u53bf","center":"111.647547,29.440813","level":"district","districts":[]},{"citycode":"0736","adcode":"430726","name":"\u77f3\u95e8\u53bf","center":"111.380056,29.584344","level":"district","districts":[]},{"citycode":"0736","adcode":"430703","name":"\u9f0e\u57ce\u533a","center":"111.679896,29.017596","level":"district","districts":[]},{"citycode":"0736","adcode":"430702","name":"\u6b66\u9675\u533a","center":"111.683043,29.055332","level":"district","districts":[]},{"citycode":"0736","adcode":"430725","name":"\u6843\u6e90\u53bf","center":"111.488985,28.90232","level":"district","districts":[]},{"citycode":"0736","adcode":"430722","name":"\u6c49\u5bff\u53bf","center":"111.970725,28.906063","level":"district","districts":[]},{"citycode":"0736","adcode":"430721","name":"\u5b89\u4e61\u53bf","center":"112.171107,29.41131","level":"district","districts":[]}]},{"citycode":"0731","adcode":"430100","name":"\u957f\u6c99\u5e02","center":"112.938882,28.228304","level":"city","districts":[{"citycode":"0731","adcode":"430104","name":"\u5cb3\u9e93\u533a","center":"112.930116,28.234202","level":"district","districts":[]},{"citycode":"0731","adcode":"430181","name":"\u6d4f\u9633\u5e02","center":"113.64328,28.163866","level":"district","districts":[]},{"citycode":"0731","adcode":"430182","name":"\u5b81\u4e61\u5e02","center":"112.551887,28.277709","level":"district","districts":[]},{"citycode":"0731","adcode":"430102","name":"\u8299\u84c9\u533a","center":"113.032605,28.185351","level":"district","districts":[]},{"citycode":"0731","adcode":"430105","name":"\u5f00\u798f\u533a","center":"112.985284,28.257286","level":"district","districts":[]},{"citycode":"0731","adcode":"430111","name":"\u96e8\u82b1\u533a","center":"113.03853,28.135795","level":"district","districts":[]},{"citycode":"0731","adcode":"430103","name":"\u5929\u5fc3\u533a","center":"112.98978,28.114544","level":"district","districts":[]},{"citycode":"0731","adcode":"430121","name":"\u957f\u6c99\u53bf","center":"113.080555,28.246821","level":"district","districts":[]},{"citycode":"0731","adcode":"430112","name":"\u671b\u57ce\u533a","center":"112.83125,28.353221","level":"district","districts":[]}]},{"citycode":"0739","adcode":"430500","name":"\u90b5\u9633\u5e02","center":"111.467855,27.239528","level":"city","districts":[{"citycode":"0739","adcode":"430527","name":"\u7ee5\u5b81\u53bf","center":"110.155532,26.582027","level":"district","districts":[]},{"citycode":"0739","adcode":"430503","name":"\u5927\u7965\u533a","center":"111.438892,27.222078","level":"district","districts":[]},{"citycode":"0739","adcode":"430502","name":"\u53cc\u6e05\u533a","center":"111.496946,27.232286","level":"district","districts":[]},{"citycode":"0739","adcode":"430511","name":"\u5317\u5854\u533a","center":"111.451988,27.246244","level":"district","districts":[]},{"citycode":"0739","adcode":"430529","name":"\u57ce\u6b65\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"110.322239,26.390598","level":"district","districts":[]},{"citycode":"0739","adcode":"430524","name":"\u9686\u56de\u53bf","center":"111.032437,27.113978","level":"district","districts":[]},{"citycode":"0739","adcode":"430525","name":"\u6d1e\u53e3\u53bf","center":"110.575962,27.060274","level":"district","districts":[]},{"citycode":"0739","adcode":"430522","name":"\u65b0\u90b5\u53bf","center":"111.458656,27.320917","level":"district","districts":[]},{"citycode":"0739","adcode":"430582","name":"\u90b5\u4e1c\u5e02","center":"111.744268,27.259812","level":"district","districts":[]},{"citycode":"0739","adcode":"430528","name":"\u65b0\u5b81\u53bf","center":"110.857294,26.432913","level":"district","districts":[]},{"citycode":"0739","adcode":"430523","name":"\u90b5\u9633\u53bf","center":"111.273872,26.990785","level":"district","districts":[]},{"citycode":"0739","adcode":"430581","name":"\u6b66\u5188\u5e02","center":"110.632286,26.727414","level":"district","districts":[]}]},{"citycode":"0732","adcode":"430300","name":"\u6e58\u6f6d\u5e02","center":"112.945439,27.83136","level":"city","districts":[{"citycode":"0732","adcode":"430304","name":"\u5cb3\u5858\u533a","center":"112.969444,27.872013","level":"district","districts":[]},{"citycode":"0732","adcode":"430302","name":"\u96e8\u6e56\u533a","center":"112.907334,27.856115","level":"district","districts":[]},{"citycode":"0732","adcode":"430382","name":"\u97f6\u5c71\u5e02","center":"112.525364,27.914796","level":"district","districts":[]},{"citycode":"0732","adcode":"430321","name":"\u6e58\u6f6d\u53bf","center":"112.950767,27.779669","level":"district","districts":[]},{"citycode":"0732","adcode":"430381","name":"\u6e58\u4e61\u5e02","center":"112.550268,27.718655","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"460000","name":"\u6d77\u5357\u7701","center":"110.348781,20.018639","level":"province","districts":[{"citycode":"1892","adcode":"469022","name":"\u5c6f\u660c\u53bf","center":"110.101667,19.351662","level":"city","districts":[{"citycode":"1892","adcode":"469022","name":"\u897f\u660c\u9547","center":"109.953863,19.415440","level":"street","districts":[]},{"citycode":"1892","adcode":"469022","name":"\u5761\u5fc3\u9547","center":"110.214429,19.310397","level":"street","districts":[]},{"citycode":"1892","adcode":"469022","name":"\u67ab\u6728\u9547","center":"109.973395,19.190743","level":"street","districts":[]},{"citycode":"1892","adcode":"469022","name":"\u5357\u5764\u9547","center":"110.034905,19.407514","level":"street","districts":[]},{"citycode":"1892","adcode":"469022","name":"\u4e4c\u5761\u9547","center":"110.083261,19.206717","level":"street","districts":[]},{"citycode":"1892","adcode":"469022","name":"\u5c6f\u57ce\u9547","center":"110.180636,19.319861","level":"street","districts":[]},{"citycode":"1892","adcode":"469022","name":"\u5357\u5415\u9547","center":"110.042989,19.268166","level":"street","districts":[]},{"citycode":"1892","adcode":"469022","name":"\u65b0\u5174\u9547","center":"110.136198,19.558967","level":"street","districts":[]}]},{"citycode":"0802","adcode":"469025","name":"\u767d\u6c99\u9ece\u65cf\u81ea\u6cbb\u53bf","center":"109.4429,19.221641","level":"city","districts":[{"citycode":"0802","adcode":"469025","name":"\u5357\u5f00\u4e61","center":"109.293018,19.059602","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u961c\u9f99\u4e61","center":"109.436387,19.331650","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u7ec6\u6c34\u4e61","center":"109.526636,19.201248","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u7259\u53c9\u9547","center":"109.399183,19.138439","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u5143\u95e8\u4e61","center":"109.449713,19.095705","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u6253\u5b89\u9547","center":"109.358207,19.378075","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u91d1\u6ce2\u4e61","center":"109.171689,19.276555","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u9752\u677e\u4e61","center":"109.293018,19.059602","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u4e03\u574a\u9547","center":"109.279730,19.352890","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u8363\u90a6\u4e61","center":"109.047772,19.432678","level":"street","districts":[]},{"citycode":"0802","adcode":"469025","name":"\u90a6\u6eaa\u9547","center":"109.047858,19.368662","level":"street","districts":[]}]},{"citycode":"2802","adcode":"469027","name":"\u4e50\u4e1c\u9ece\u65cf\u81ea\u6cbb\u53bf","center":"109.173384,18.750063","level":"city","districts":[{"citycode":"2802","adcode":"469027","name":"\u9ec4\u6d41\u9547","center":"108.804819,18.594264","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u4f5b\u7f57\u9547","center":"108.787906,18.578596","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u5c16\u5cf0\u9547","center":"108.843833,18.624901","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u5fd7\u4ef2\u9547","center":"109.386810,18.609590","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u5927\u5b89\u9547","center":"109.231993,18.734953","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u4e07\u51b2\u9547","center":"109.345394,18.890397","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u4e5d\u6240\u9547","center":"109.080605,18.450650","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u5343\u5bb6\u9547","center":"109.149747,18.465259","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u5229\u56fd\u9547","center":"108.938223,18.495361","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u83ba\u6b4c\u6d77\u9547","center":"108.755614,18.536206","level":"street","districts":[]},{"citycode":"2802","adcode":"469027","name":"\u62b1\u7531\u9547","center":"109.028473,18.796829","level":"street","districts":[]}]},{"citycode":"0807","adcode":"469007","name":"\u4e1c\u65b9\u5e02","center":"108.651829,19.095187","level":"city","districts":[{"citycode":"0807","adcode":"469007","name":"\u516b\u6240\u9547","center":"108.773554,19.081696","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u5927\u7530\u9547","center":"108.771554,19.042603","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u677f\u6865\u9547","center":"108.910695,18.807162","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u56db\u66f4\u9547","center":"108.596055,19.187648","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u611f\u57ce\u9547","center":"108.787859,18.842201","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u6c5f\u8fb9\u4e61","center":"109.091697,18.906129","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u4e09\u5bb6\u9547","center":"108.833188,19.259935","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u4e1c\u6cb3\u9547","center":"109.019193,19.039242","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u5929\u5b89\u4e61","center":"108.854531,19.037791","level":"street","districts":[]},{"citycode":"0807","adcode":"469007","name":"\u65b0\u9f99\u9547","center":"108.700528,19.035446","level":"street","districts":[]}]},{"citycode":"1899","adcode":"469030","name":"\u743c\u4e2d\u9ece\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"109.838423,19.03327","level":"city","districts":[{"citycode":"1899","adcode":"469030","name":"\u4ec0\u8fd0\u4e61","center":"109.583026,18.923692","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u9ece\u6bcd\u5c71\u9547","center":"109.824353,19.190837","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u4e0a\u5b89\u4e61","center":"109.712993,18.899738","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u7ea2\u6bdb\u9547","center":"109.608031,19.033716","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u6e7e\u5cad\u9547","center":"109.865175,19.096504","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u540a\u7f57\u5c71\u4e61","center":"109.811113,18.766916","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u8425\u6839\u9547","center":"109.743124,19.055622","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u4e2d\u5e73\u9547","center":"110.032689,18.966494","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u957f\u5f81\u9547","center":"109.813077,18.984538","level":"street","districts":[]},{"citycode":"1899","adcode":"469030","name":"\u548c\u5e73\u9547","center":"110.071277,18.773381","level":"street","districts":[]}]},{"citycode":"0809","adcode":"469028","name":"\u9675\u6c34\u9ece\u65cf\u81ea\u6cbb\u53bf","center":"110.037553,18.506045","level":"city","districts":[{"citycode":"0809","adcode":"469028","name":"\u6930\u6797\u9547","center":"110.019690,18.482546","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u65b0\u6751\u9547","center":"110.026125,18.445965","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u6587\u7f57\u9547","center":"109.914457,18.573364","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u9ece\u5b89\u9547","center":"110.027365,18.450385","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u7fa4\u82f1\u4e61","center":"109.847456,18.569653","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u63d0\u8499\u4e61","center":"110.013235,18.640359","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u4e09\u624d\u9547","center":"109.963149,18.491519","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u9686\u5e7f\u9547","center":"109.857549,18.480188","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u82f1\u5dde\u9547","center":"109.875526,18.473898","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u672c\u53f7\u9547","center":"109.837130,18.632318","level":"street","districts":[]},{"citycode":"0809","adcode":"469028","name":"\u5149\u5761\u9547","center":"110.036496,18.559416","level":"street","districts":[]}]},{"citycode":"2898","adcode":"460300","name":"\u4e09\u6c99\u5e02","center":"112.338649,16.831004","level":"city","districts":[{"citycode":"2898","adcode":"460302","name":"\u897f\u6c99\u533a","center":"112.346961,16.834372","level":"district","districts":[]},{"citycode":"2898","adcode":"460303","name":"\u5357\u6c99\u533a","center":"112.896229,9.548531","level":"district","districts":[]}]},{"citycode":"1893","adcode":"469005","name":"\u6587\u660c\u5e02","center":"110.797473,19.544234","level":"city","districts":[{"citycode":"1893","adcode":"469005","name":"\u6587\u6559\u9547","center":"110.855856,19.708320","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u94fa\u524d\u9547","center":"110.675271,20.037734","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u4e1c\u90ca\u9547","center":"110.910447,19.629115","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u9f99\u697c\u9547","center":"110.938472,19.660636","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u660c\u6d12\u9547","center":"110.894780,19.826152","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u9526\u5c71\u9547","center":"110.664000,20.027062","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u516c\u5761\u9547","center":"110.826694,19.852259","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u51af\u5761\u9547","center":"110.790950,20.028869","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u4e1c\u8def\u9547","center":"110.635704,19.755873","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u4f1a\u6587\u9547","center":"110.740895,19.498601","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u4e1c\u9601\u9547","center":"110.855599,19.705977","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u6587\u57ce\u9547","center":"110.707616,19.498201","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u84ec\u83b1\u9547","center":"110.507886,19.511678","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u6f6d\u725b\u9547","center":"110.773474,19.744417","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u62b1\u7f57\u9547","center":"110.698537,19.833022","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u91cd\u5174\u9547","center":"110.563557,19.487059","level":"street","districts":[]},{"citycode":"1893","adcode":"469005","name":"\u7fc1\u7530\u9547","center":"110.961537,20.024271","level":"street","districts":[]}]},{"citycode":"1896","adcode":"469024","name":"\u4e34\u9ad8\u53bf","center":"109.690508,19.912025","level":"city","districts":[{"citycode":"1896","adcode":"469024","name":"\u5357\u5b9d\u9547","center":"109.638149,19.751609","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u535a\u539a\u9547","center":"109.807195,19.989365","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u65b0\u76c8\u9547","center":"109.467340,19.903531","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u548c\u820d\u9547","center":"109.714907,19.671698","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u8c03\u697c\u9547","center":"109.609769,19.923138","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u4e1c\u82f1\u9547","center":"109.612973,19.934938","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u52a0\u6765\u9547","center":"109.650909,19.759074","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u4e34\u57ce\u9547","center":"109.632657,19.753184","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u591a\u6587\u9547","center":"109.751742,19.673620","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u7687\u6850\u9547","center":"109.856872,19.732264","level":"street","districts":[]},{"citycode":"1896","adcode":"469024","name":"\u6ce2\u83b2\u9547","center":"109.614806,19.855541","level":"street","districts":[]}]},{"citycode":"0899","adcode":"460200","name":"\u4e09\u4e9a\u5e02","center":"109.511709,18.252865","level":"city","districts":[{"citycode":"0899","adcode":"460205","name":"\u5d16\u5dde\u533a","center":"109.172298,18.357572","level":"district","districts":[]},{"citycode":"0899","adcode":"460202","name":"\u6d77\u68e0\u533a","center":"109.735676,18.384177","level":"district","districts":[]},{"citycode":"0899","adcode":"460203","name":"\u5409\u9633\u533a","center":"109.578238,18.28146","level":"district","districts":[]},{"citycode":"0899","adcode":"460204","name":"\u5929\u6daf\u533a","center":"109.452325,18.298975","level":"district","districts":[]}]},{"citycode":"0801","adcode":"469029","name":"\u4fdd\u4ead\u9ece\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"109.700279,18.640339","level":"city","districts":[{"citycode":"0801","adcode":"469029","name":"\u5357\u6797\u4e61","center":"109.576563,18.389262","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u6bdb\u611f\u4e61","center":"109.503131,18.556288","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u65b0\u653f\u9547","center":"109.603989,18.435464","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u54cd\u6c34\u9547","center":"109.550646,18.610753","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u4e09\u9053\u9547","center":"109.702909,18.430953","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u52a0\u8302\u9547","center":"109.674549,18.516922","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u516d\u5f13\u4e61","center":"109.744740,18.574041","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u4ec0\u73b2\u9547","center":"109.736545,18.697785","level":"street","districts":[]},{"citycode":"0801","adcode":"469029","name":"\u4fdd\u57ce\u9547","center":"109.773883,18.600774","level":"street","districts":[]}]},{"citycode":"1897","adcode":"469001","name":"\u4e94\u6307\u5c71\u5e02","center":"109.516784,18.774827","level":"city","districts":[{"citycode":"1897","adcode":"469001","name":"\u6bdb\u9633\u9547","center":"109.449705,18.881089","level":"street","districts":[]},{"citycode":"1897","adcode":"469001","name":"\u6c34\u6ee1\u4e61","center":"109.600698,18.899478","level":"street","districts":[]},{"citycode":"1897","adcode":"469001","name":"\u756a\u9633\u9547","center":"109.333537,18.913174","level":"street","districts":[]},{"citycode":"1897","adcode":"469001","name":"\u6bdb\u9053\u4e61","center":"109.356022,18.713388","level":"street","districts":[]},{"citycode":"1897","adcode":"469001","name":"\u7545\u597d\u4e61","center":"109.383431,18.682307","level":"street","districts":[]},{"citycode":"1897","adcode":"469001","name":"\u901a\u4ec0\u9547","center":"109.623006,18.822353","level":"street","districts":[]},{"citycode":"1897","adcode":"469001","name":"\u5357\u5723\u9547","center":"109.684604,18.822608","level":"street","districts":[]}]},{"citycode":"0804","adcode":"469023","name":"\u6f84\u8fc8\u53bf","center":"110.007497,19.738885","level":"city","districts":[{"citycode":"0804","adcode":"469023","name":"\u8001\u57ce\u9547","center":"110.152799,19.872233","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u5927\u4e30\u9547","center":"109.988855,19.904039","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u745e\u6eaa\u9547","center":"110.111302,19.789006","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u52a0\u4e50\u9547","center":"110.061273,19.617646","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u4e2d\u5174\u9547","center":"109.760023,19.528937","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u4ec1\u5174\u9547","center":"109.776963,19.382054","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u6587\u5112\u9547","center":"110.134745,19.633652","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u6865\u5934\u9547","center":"109.936766,19.914013","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u91d1\u6c5f\u9547","center":"109.976112,19.774256","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u798f\u5c71\u9547","center":"109.919175,19.929023","level":"street","districts":[]},{"citycode":"0804","adcode":"469023","name":"\u6c38\u53d1\u9547","center":"110.186668,19.641706","level":"street","districts":[]}]},{"citycode":"0803","adcode":"469026","name":"\u660c\u6c5f\u9ece\u65cf\u81ea\u6cbb\u53bf","center":"109.055783,19.298139","level":"city","districts":[{"citycode":"0803","adcode":"469026","name":"\u4e4c\u70c8\u9547","center":"108.809852,19.352543","level":"street","districts":[]},{"citycode":"0803","adcode":"469026","name":"\u53c9\u6cb3\u9547","center":"108.997547,19.244929","level":"street","districts":[]},{"citycode":"0803","adcode":"469026","name":"\u77f3\u788c\u9547","center":"108.997547,19.244929","level":"street","districts":[]},{"citycode":"0803","adcode":"469026","name":"\u660c\u5316\u9547","center":"108.731720,19.383636","level":"street","districts":[]},{"citycode":"0803","adcode":"469026","name":"\u738b\u4e0b\u4e61","center":"109.094025,18.905182","level":"street","districts":[]},{"citycode":"0803","adcode":"469026","name":"\u4e03\u53c9\u9547","center":"109.077512,19.190357","level":"street","districts":[]},{"citycode":"0803","adcode":"469026","name":"\u6d77\u5c3e\u9547","center":"108.765323,19.400954","level":"street","districts":[]},{"citycode":"0803","adcode":"469026","name":"\u5341\u6708\u7530\u9547","center":"108.847421,19.296495","level":"street","districts":[]}]},{"citycode":"0806","adcode":"469021","name":"\u5b9a\u5b89\u53bf","center":"110.358001,19.681215","level":"city","districts":[{"citycode":"0806","adcode":"469021","name":"\u5cad\u53e3\u9547","center":"110.276026,19.360104","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u9f99\u95e8\u9547","center":"110.297826,19.499676","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u9f99\u6cb3\u9547","center":"110.258715,19.361056","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u7ff0\u6797\u9547","center":"110.285870,19.349021","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u5bcc\u6587\u9547","center":"110.223762,19.422974","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u65b0\u7af9\u9547","center":"110.165312,19.577271","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u9f99\u6e56\u9547","center":"110.405612,19.607283","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u5b9a\u57ce\u9547","center":"110.369406,19.715830","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u96f7\u9e23\u9547","center":"110.268491,19.592293","level":"street","districts":[]},{"citycode":"0806","adcode":"469021","name":"\u9ec4\u7af9\u9547","center":"110.351241,19.451448","level":"street","districts":[]}]},{"citycode":"0898","adcode":"460100","name":"\u6d77\u53e3\u5e02","center":"110.200162,20.046316","level":"city","districts":[{"citycode":"0898","adcode":"460108","name":"\u7f8e\u5170\u533a","center":"110.366359,20.028983","level":"district","districts":[]},{"citycode":"0898","adcode":"460107","name":"\u743c\u5c71\u533a","center":"110.384318,19.984293","level":"district","districts":[]},{"citycode":"0898","adcode":"460105","name":"\u79c0\u82f1\u533a","center":"110.293566,20.007703","level":"district","districts":[]},{"citycode":"0898","adcode":"460106","name":"\u9f99\u534e\u533a","center":"110.328628,20.030843","level":"district","districts":[]}]},{"citycode":"0805","adcode":"460400","name":"\u510b\u5dde\u5e02","center":"109.580812,19.520948","level":"city","districts":[{"citycode":"0805","adcode":"460400","name":"\u65b0\u5dde\u9547","center":"109.376729,19.708256","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u6d77\u5934\u9547","center":"109.028046,19.432317","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u4e2d\u548c\u9547","center":"109.351017,19.774675","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u5ce8\u8513\u9547","center":"109.332639,19.843794","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u4e09\u90fd\u8857\u9053","center":"109.204266,19.830050","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u738b\u4e94\u9547","center":"109.285186,19.573624","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u96c5\u661f\u9547","center":"109.305133,19.393438","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u548c\u5e86\u9547","center":"109.739681,19.587333","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u4e1c\u6210\u9547","center":"109.521624,19.772032","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u6728\u68e0\u9547","center":"109.346666,19.900381","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u5927\u6210\u9547","center":"109.371806,19.478206","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u5170\u6d0b\u9547","center":"109.735770,19.408360","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u5357\u4e30\u9547","center":"109.543297,19.504378","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u5149\u6751\u9547","center":"109.491796,19.748663","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u767d\u9a6c\u4e95\u9547","center":"109.274243,19.631272","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u6392\u6d66\u9547","center":"109.212152,19.637338","level":"street","districts":[]},{"citycode":"0805","adcode":"460400","name":"\u90a3\u5927\u9547","center":"109.555399,19.500960","level":"street","districts":[]}]},{"citycode":"1894","adcode":"469002","name":"\u743c\u6d77\u5e02","center":"110.474524,19.259112","level":"city","districts":[{"citycode":"1894","adcode":"469002","name":"\u957f\u5761\u9547","center":"110.497644,19.427753","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u9f99\u6c5f\u9547","center":"110.377839,19.152396","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u77f3\u58c1\u9547","center":"110.330819,19.151644","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u9633\u6c5f\u9547","center":"110.343829,19.128946","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u4f1a\u5c71\u9547","center":"110.153445,19.012397","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u6f6d\u95e8\u9547","center":"110.539051,19.210843","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u5927\u8def\u9547","center":"110.467128,19.442368","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u5609\u79ef\u9547","center":"110.421334,19.291689","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u4e07\u6cc9\u9547","center":"110.414108,19.355227","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u535a\u9ccc\u9547","center":"110.492863,19.177047","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u4e2d\u539f\u9547","center":"110.426258,19.056245","level":"street","districts":[]},{"citycode":"1894","adcode":"469002","name":"\u5854\u6d0b\u9547","center":"110.471660,19.324626","level":"street","districts":[]}]},{"citycode":"1898","adcode":"469006","name":"\u4e07\u5b81\u5e02","center":"110.392605,18.793697","level":"city","districts":[{"citycode":"1898","adcode":"469006","name":"\u540e\u5b89\u9547","center":"110.374318,18.908719","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u548c\u4e50\u9547","center":"110.415860,18.962463","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u4e1c\u6fb3\u9547","center":"110.429479,18.640771","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u5c71\u6839\u9547","center":"110.451557,18.990371","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u9f99\u6eda\u9547","center":"110.524041,19.000502","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u5927\u8302\u9547","center":"110.391696,18.876747","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u5317\u5927\u9547","center":"110.418437,18.985185","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u4e07\u57ce\u9547","center":"110.412512,18.826291","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u4e09\u66f4\u7f57\u9547","center":"110.113025,18.948777","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u793c\u7eaa\u9547","center":"110.265921,18.748523","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u957f\u4e30\u9547","center":"110.281098,18.855580","level":"street","districts":[]},{"citycode":"1898","adcode":"469006","name":"\u5357\u6865\u9547","center":"110.031092,18.749525","level":"street","districts":[]}]}]},{"citycode":[],"adcode":"320000","name":"\u6c5f\u82cf\u7701","center":"118.763563,32.061377","level":"province","districts":[{"citycode":"0518","adcode":"320700","name":"\u8fde\u4e91\u6e2f\u5e02","center":"119.221487,34.596639","level":"city","districts":[{"citycode":"0518","adcode":"320707","name":"\u8d63\u6986\u533a","center":"119.173173,34.841336","level":"district","districts":[]},{"citycode":"0518","adcode":"320703","name":"\u8fde\u4e91\u533a","center":"119.338901,34.760317","level":"district","districts":[]},{"citycode":"0518","adcode":"320722","name":"\u4e1c\u6d77\u53bf","center":"118.752869,34.542194","level":"district","districts":[]},{"citycode":"0518","adcode":"320724","name":"\u704c\u5357\u53bf","center":"119.315583,34.087251","level":"district","districts":[]},{"citycode":"0518","adcode":"320706","name":"\u6d77\u5dde\u533a","center":"119.163492,34.572506","level":"district","districts":[]},{"citycode":"0518","adcode":"320723","name":"\u704c\u4e91\u53bf","center":"119.239426,34.284074","level":"district","districts":[]}]},{"citycode":"0513","adcode":"320600","name":"\u5357\u901a\u5e02","center":"120.894522,31.981269","level":"city","districts":[{"citycode":"0513","adcode":"320623","name":"\u5982\u4e1c\u53bf","center":"121.18495,32.331584","level":"district","districts":[]},{"citycode":"0513","adcode":"320681","name":"\u542f\u4e1c\u5e02","center":"121.65523,31.792831","level":"district","districts":[]},{"citycode":"0513","adcode":"320613","name":"\u5d07\u5ddd\u533a","center":"120.857253,32.010277","level":"district","districts":[]},{"citycode":"0513","adcode":"320612","name":"\u901a\u5dde\u533a","center":"121.073742,32.065972","level":"district","districts":[]},{"citycode":"0513","adcode":"320614","name":"\u6d77\u95e8\u533a","center":"121.182016,31.869418","level":"district","districts":[]},{"citycode":"0513","adcode":"320682","name":"\u5982\u768b\u5e02","center":"120.574028,32.371493","level":"district","districts":[]},{"citycode":"0513","adcode":"320685","name":"\u6d77\u5b89\u5e02","center":"120.46779,32.532853","level":"district","districts":[]}]},{"citycode":"025","adcode":"320100","name":"\u5357\u4eac\u5e02","center":"118.796624,32.059344","level":"city","districts":[{"citycode":"025","adcode":"320115","name":"\u6c5f\u5b81\u533a","center":"118.83951,31.953195","level":"district","districts":[]},{"citycode":"025","adcode":"320114","name":"\u96e8\u82b1\u53f0\u533a","center":"118.779087,31.991291","level":"district","districts":[]},{"citycode":"025","adcode":"320118","name":"\u9ad8\u6df3\u533a","center":"118.892074,31.328678","level":"district","districts":[]},{"citycode":"025","adcode":"320117","name":"\u6ea7\u6c34\u533a","center":"119.028414,31.651108","level":"district","districts":[]},{"citycode":"025","adcode":"320106","name":"\u9f13\u697c\u533a","center":"118.769943,32.066814","level":"district","districts":[]},{"citycode":"025","adcode":"320111","name":"\u6d66\u53e3\u533a","center":"118.627165,32.059796","level":"district","districts":[]},{"citycode":"025","adcode":"320105","name":"\u5efa\u90ba\u533a","center":"118.731642,32.003343","level":"district","districts":[]},{"citycode":"025","adcode":"320102","name":"\u7384\u6b66\u533a","center":"118.797779,32.048644","level":"district","districts":[]},{"citycode":"025","adcode":"320104","name":"\u79e6\u6dee\u533a","center":"118.794792,32.039065","level":"district","districts":[]},{"citycode":"025","adcode":"320116","name":"\u516d\u5408\u533a","center":"118.822241,32.323235","level":"district","districts":[]},{"citycode":"025","adcode":"320113","name":"\u6816\u971e\u533a","center":"118.909117,32.096423","level":"district","districts":[]}]},{"citycode":"0512","adcode":"320500","name":"\u82cf\u5dde\u5e02","center":"120.585294,31.299758","level":"city","districts":[{"citycode":"0512","adcode":"320505","name":"\u864e\u4e18\u533a","center":"120.434238,31.329601","level":"district","districts":[]},{"citycode":"0512","adcode":"320585","name":"\u592a\u4ed3\u5e02","center":"121.130344,31.458043","level":"district","districts":[]},{"citycode":"0512","adcode":"320508","name":"\u59d1\u82cf\u533a","center":"120.617367,31.335648","level":"district","districts":[]},{"citycode":"0512","adcode":"320581","name":"\u5e38\u719f\u5e02","center":"120.752512,31.656016","level":"district","districts":[]},{"citycode":"0512","adcode":"320583","name":"\u6606\u5c71\u5e02","center":"120.980795,31.385476","level":"district","districts":[]},{"citycode":"0512","adcode":"320509","name":"\u5434\u6c5f\u533a","center":"120.645728,31.138525","level":"district","districts":[]},{"citycode":"0512","adcode":"320506","name":"\u5434\u4e2d\u533a","center":"120.632094,31.263604","level":"district","districts":[]},{"citycode":"0512","adcode":"320582","name":"\u5f20\u5bb6\u6e2f\u5e02","center":"120.555979,31.876739","level":"district","districts":[]},{"citycode":"0512","adcode":"320507","name":"\u76f8\u57ce\u533a","center":"120.642391,31.369189","level":"district","districts":[]}]},{"citycode":"0527","adcode":"321300","name":"\u5bbf\u8fc1\u5e02","center":"118.275228,33.963186","level":"city","districts":[{"citycode":"0527","adcode":"321302","name":"\u5bbf\u57ce\u533a","center":"118.242048,33.963891","level":"district","districts":[]},{"citycode":"0527","adcode":"321311","name":"\u5bbf\u8c6b\u533a","center":"118.330423,33.94813","level":"district","districts":[]},{"citycode":"0527","adcode":"321323","name":"\u6cd7\u9633\u53bf","center":"118.703636,33.723576","level":"district","districts":[]},{"citycode":"0527","adcode":"321322","name":"\u6cad\u9633\u53bf","center":"118.804321,34.110642","level":"district","districts":[]},{"citycode":"0527","adcode":"321324","name":"\u6cd7\u6d2a\u53bf","center":"118.223941,33.476575","level":"district","districts":[]}]},{"citycode":"0514","adcode":"321000","name":"\u626c\u5dde\u5e02","center":"119.412834,32.394404","level":"city","districts":[{"citycode":"0514","adcode":"321002","name":"\u5e7f\u9675\u533a","center":"119.431785,32.395654","level":"district","districts":[]},{"citycode":"0514","adcode":"321081","name":"\u4eea\u5f81\u5e02","center":"119.184468,32.272833","level":"district","districts":[]},{"citycode":"0514","adcode":"321084","name":"\u9ad8\u90ae\u5e02","center":"119.45892,32.781606","level":"district","districts":[]},{"citycode":"0514","adcode":"321003","name":"\u9097\u6c5f\u533a","center":"119.397935,32.37741","level":"district","districts":[]},{"citycode":"0514","adcode":"321023","name":"\u5b9d\u5e94\u53bf","center":"119.358389,33.241125","level":"district","districts":[]},{"citycode":"0514","adcode":"321012","name":"\u6c5f\u90fd\u533a","center":"119.569684,32.43571","level":"district","districts":[]}]},{"citycode":"0511","adcode":"321100","name":"\u9547\u6c5f\u5e02","center":"119.424441,32.188141","level":"city","districts":[{"citycode":"0511","adcode":"321112","name":"\u4e39\u5f92\u533a","center":"119.433854,32.132118","level":"district","districts":[]},{"citycode":"0511","adcode":"321102","name":"\u4eac\u53e3\u533a","center":"119.470186,32.198285","level":"district","districts":[]},{"citycode":"0511","adcode":"321111","name":"\u6da6\u5dde\u533a","center":"119.411383,32.195146","level":"district","districts":[]},{"citycode":"0511","adcode":"321181","name":"\u4e39\u9633\u5e02","center":"119.606071,32.010035","level":"district","districts":[]},{"citycode":"0511","adcode":"321182","name":"\u626c\u4e2d\u5e02","center":"119.796816,32.236476","level":"district","districts":[]},{"citycode":"0511","adcode":"321183","name":"\u53e5\u5bb9\u5e02","center":"119.168693,31.945732","level":"district","districts":[]}]},{"citycode":"0517","adcode":"320800","name":"\u6dee\u5b89\u5e02","center":"119.113166,33.551495","level":"city","districts":[{"citycode":"0517","adcode":"320830","name":"\u76f1\u7719\u53bf","center":"118.544545,33.011905","level":"district","districts":[]},{"citycode":"0517","adcode":"320831","name":"\u91d1\u6e56\u53bf","center":"119.020432,33.024663","level":"district","districts":[]},{"citycode":"0517","adcode":"320813","name":"\u6d2a\u6cfd\u533a","center":"118.873132,33.294095","level":"district","districts":[]},{"citycode":"0517","adcode":"320804","name":"\u6dee\u9634\u533a","center":"119.034895,33.632588","level":"district","districts":[]},{"citycode":"0517","adcode":"320826","name":"\u6d9f\u6c34\u53bf","center":"119.260589,33.781648","level":"district","districts":[]},{"citycode":"0517","adcode":"320812","name":"\u6e05\u6c5f\u6d66\u533a","center":"119.026662,33.552579","level":"district","districts":[]},{"citycode":"0517","adcode":"320803","name":"\u6dee\u5b89\u533a","center":"119.167809,33.531037","level":"district","districts":[]}]},{"citycode":"0516","adcode":"320300","name":"\u5f90\u5dde\u5e02","center":"117.283752,34.204224","level":"city","districts":[{"citycode":"0516","adcode":"320311","name":"\u6cc9\u5c71\u533a","center":"117.194405,34.22655","level":"district","districts":[]},{"citycode":"0516","adcode":"320312","name":"\u94dc\u5c71\u533a","center":"117.169698,34.181162","level":"district","districts":[]},{"citycode":"0516","adcode":"320322","name":"\u6c9b\u53bf","center":"116.936353,34.760761","level":"district","districts":[]},{"citycode":"0516","adcode":"320302","name":"\u9f13\u697c\u533a","center":"117.185643,34.288736","level":"district","districts":[]},{"citycode":"0516","adcode":"320382","name":"\u90b3\u5dde\u5e02","center":"118.012511,34.339208","level":"district","districts":[]},{"citycode":"0516","adcode":"320305","name":"\u8d3e\u6c6a\u533a","center":"117.465137,34.436492","level":"district","districts":[]},{"citycode":"0516","adcode":"320303","name":"\u4e91\u9f99\u533a","center":"117.251515,34.253638","level":"district","districts":[]},{"citycode":"0516","adcode":"320381","name":"\u65b0\u6c82\u5e02","center":"118.354747,34.369585","level":"district","districts":[]},{"citycode":"0516","adcode":"320324","name":"\u7762\u5b81\u53bf","center":"117.941364,33.913727","level":"district","districts":[]},{"citycode":"0516","adcode":"320321","name":"\u4e30\u53bf","center":"116.658111,34.697232","level":"district","districts":[]}]},{"citycode":"0519","adcode":"320400","name":"\u5e38\u5dde\u5e02","center":"119.974092,31.811313","level":"city","districts":[{"citycode":"0519","adcode":"320413","name":"\u91d1\u575b\u533a","center":"119.587503,31.722384","level":"district","districts":[]},{"citycode":"0519","adcode":"320411","name":"\u65b0\u5317\u533a","center":"119.960925,31.86355","level":"district","districts":[]},{"citycode":"0519","adcode":"320404","name":"\u949f\u697c\u533a","center":"119.902081,31.802608","level":"district","districts":[]},{"citycode":"0519","adcode":"320481","name":"\u6ea7\u9633\u5e02","center":"119.484164,31.416967","level":"district","districts":[]},{"citycode":"0519","adcode":"320412","name":"\u6b66\u8fdb\u533a","center":"119.942441,31.701252","level":"district","districts":[]},{"citycode":"0519","adcode":"320402","name":"\u5929\u5b81\u533a","center":"119.999439,31.79232","level":"district","districts":[]}]},{"citycode":"0510","adcode":"320200","name":"\u65e0\u9521\u5e02","center":"120.311889,31.491064","level":"city","districts":[{"citycode":"0510","adcode":"320206","name":"\u60e0\u5c71\u533a","center":"120.29843,31.680282","level":"district","districts":[]},{"citycode":"0510","adcode":"320211","name":"\u6ee8\u6e56\u533a","center":"120.284381,31.527846","level":"district","districts":[]},{"citycode":"0510","adcode":"320282","name":"\u5b9c\u5174\u5e02","center":"119.821873,31.338429","level":"district","districts":[]},{"citycode":"0510","adcode":"320214","name":"\u65b0\u5434\u533a","center":"120.364303,31.49085","level":"district","districts":[]},{"citycode":"0510","adcode":"320213","name":"\u6881\u6eaa\u533a","center":"120.303551,31.566226","level":"district","districts":[]},{"citycode":"0510","adcode":"320281","name":"\u6c5f\u9634\u5e02","center":"120.284794,31.921642","level":"district","districts":[]},{"citycode":"0510","adcode":"320205","name":"\u9521\u5c71\u533a","center":"120.357732,31.589484","level":"district","districts":[]}]},{"citycode":"0515","adcode":"320900","name":"\u76d0\u57ce\u5e02","center":"120.16263,33.348176","level":"city","districts":[{"citycode":"0515","adcode":"320924","name":"\u5c04\u9633\u53bf","center":"120.326338,33.766277","level":"district","districts":[]},{"citycode":"0515","adcode":"320922","name":"\u6ee8\u6d77\u53bf","center":"119.820713,33.990372","level":"district","districts":[]},{"citycode":"0515","adcode":"320921","name":"\u54cd\u6c34\u53bf","center":"119.578332,34.199172","level":"district","districts":[]},{"citycode":"0515","adcode":"320903","name":"\u76d0\u90fd\u533a","center":"120.153567,33.338538","level":"district","districts":[]},{"citycode":"0515","adcode":"320904","name":"\u5927\u4e30\u533a","center":"120.500761,33.200047","level":"district","districts":[]},{"citycode":"0515","adcode":"320902","name":"\u4ead\u6e56\u533a","center":"120.196148,33.391414","level":"district","districts":[]},{"citycode":"0515","adcode":"320925","name":"\u5efa\u6e56\u53bf","center":"119.788743,33.438931","level":"district","districts":[]},{"citycode":"0515","adcode":"320923","name":"\u961c\u5b81\u53bf","center":"119.802271,33.758857","level":"district","districts":[]},{"citycode":"0515","adcode":"320981","name":"\u4e1c\u53f0\u5e02","center":"120.320308,32.867845","level":"district","districts":[]}]},{"citycode":"0523","adcode":"321200","name":"\u6cf0\u5dde\u5e02","center":"119.922883,32.456692","level":"city","districts":[{"citycode":"0523","adcode":"321281","name":"\u5174\u5316\u5e02","center":"119.85255,32.911952","level":"district","districts":[]},{"citycode":"0523","adcode":"321283","name":"\u6cf0\u5174\u5e02","center":"120.051475,32.173072","level":"district","districts":[]},{"citycode":"0523","adcode":"321203","name":"\u9ad8\u6e2f\u533a","center":"119.88154,32.31923","level":"district","districts":[]},{"citycode":"0523","adcode":"321202","name":"\u6d77\u9675\u533a","center":"119.923825,32.49248","level":"district","districts":[]},{"citycode":"0523","adcode":"321204","name":"\u59dc\u5830\u533a","center":"120.12807,32.51029","level":"district","districts":[]},{"citycode":"0523","adcode":"321282","name":"\u9756\u6c5f\u5e02","center":"120.277124,31.98325","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"630000","name":"\u9752\u6d77\u7701","center":"101.780482,36.622538","level":"province","districts":[{"citycode":"0972","adcode":"630200","name":"\u6d77\u4e1c\u5e02","center":"102.41064,36.473448","level":"city","districts":[{"citycode":"0972","adcode":"630202","name":"\u4e50\u90fd\u533a","center":"102.401614,36.482242","level":"district","districts":[]},{"citycode":"0972","adcode":"630222","name":"\u6c11\u548c\u56de\u65cf\u571f\u65cf\u81ea\u6cbb\u53bf","center":"102.830775,36.320038","level":"district","districts":[]},{"citycode":"0972","adcode":"630225","name":"\u5faa\u5316\u6492\u62c9\u65cf\u81ea\u6cbb\u53bf","center":"102.488958,35.851079","level":"district","districts":[]},{"citycode":"0972","adcode":"630224","name":"\u5316\u9686\u56de\u65cf\u81ea\u6cbb\u53bf","center":"102.266031,36.096159","level":"district","districts":[]},{"citycode":"0972","adcode":"630203","name":"\u5e73\u5b89\u533a","center":"102.108538,36.500166","level":"district","districts":[]},{"citycode":"0972","adcode":"630223","name":"\u4e92\u52a9\u571f\u65cf\u81ea\u6cbb\u53bf","center":"101.958519,36.844027","level":"district","districts":[]}]},{"citycode":"0974","adcode":"632500","name":"\u6d77\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"100.622647,36.296399","level":"city","districts":[{"citycode":"0974","adcode":"632523","name":"\u8d35\u5fb7\u53bf","center":"101.43403,36.039672","level":"district","districts":[]},{"citycode":"0974","adcode":"632525","name":"\u8d35\u5357\u53bf","center":"100.747731,35.587239","level":"district","districts":[]},{"citycode":"0974","adcode":"632522","name":"\u540c\u5fb7\u53bf","center":"100.577859,35.254297","level":"district","districts":[]},{"citycode":"0974","adcode":"632524","name":"\u5174\u6d77\u53bf","center":"99.987799,35.589086","level":"district","districts":[]},{"citycode":"0974","adcode":"632521","name":"\u5171\u548c\u53bf","center":"100.619405,36.284158","level":"district","districts":[]}]},{"citycode":"0977","adcode":"632800","name":"\u6d77\u897f\u8499\u53e4\u65cf\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"97.33197,37.348114","level":"city","districts":[{"citycode":"0977","adcode":"632823","name":"\u5929\u5cfb\u53bf","center":"99.02297,37.301206","level":"district","districts":[]},{"citycode":"0977","adcode":"632802","name":"\u5fb7\u4ee4\u54c8\u5e02","center":"97.361528,37.369865","level":"district","districts":[]},{"citycode":"0977","adcode":"632801","name":"\u683c\u5c14\u6728\u5e02","center":"94.928293,36.407272","level":"district","districts":[]},{"citycode":"0977","adcode":"632822","name":"\u90fd\u5170\u53bf","center":"98.095889,36.302098","level":"district","districts":[]},{"citycode":"0977","adcode":"632821","name":"\u4e4c\u5170\u53bf","center":"98.47988,36.941279","level":"district","districts":[]},{"citycode":"0977","adcode":"632825","name":"\u6d77\u897f\u8499\u53e4\u65cf\u85cf\u65cf\u81ea\u6cbb\u5dde\u76f4\u8f96","center":"95.357233,37.853631","level":"district","districts":[]},{"citycode":"0977","adcode":"632803","name":"\u832b\u5d16\u5e02","center":"90.856372,38.247537","level":"district","districts":[]}]},{"citycode":"0976","adcode":"632700","name":"\u7389\u6811\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"97.006292,33.006308","level":"city","districts":[{"citycode":"0976","adcode":"632724","name":"\u6cbb\u591a\u53bf","center":"95.618954,33.844854","level":"district","districts":[]},{"citycode":"0976","adcode":"632726","name":"\u66f2\u9ebb\u83b1\u53bf","center":"95.805463,34.137353","level":"district","districts":[]},{"citycode":"0976","adcode":"632723","name":"\u79f0\u591a\u53bf","center":"97.109487,33.377504","level":"district","districts":[]},{"citycode":"0976","adcode":"632722","name":"\u6742\u591a\u53bf","center":"95.300723,32.893185","level":"district","districts":[]},{"citycode":"0976","adcode":"632701","name":"\u7389\u6811\u5e02","center":"97.009184,32.992934","level":"district","districts":[]},{"citycode":"0976","adcode":"632725","name":"\u56ca\u8c26\u53bf","center":"96.489538,32.203193","level":"district","districts":[]}]},{"citycode":"0973","adcode":"632300","name":"\u9ec4\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"102.015397,35.519317","level":"city","districts":[{"citycode":"0973","adcode":"632301","name":"\u540c\u4ec1\u5e02","center":"102.018663,35.515769","level":"district","districts":[]},{"citycode":"0973","adcode":"632323","name":"\u6cfd\u5e93\u53bf","center":"101.466565,35.035322","level":"district","districts":[]},{"citycode":"0973","adcode":"632322","name":"\u5c16\u624e\u53bf","center":"102.040094,35.943253","level":"district","districts":[]},{"citycode":"0973","adcode":"632324","name":"\u6cb3\u5357\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","center":"101.617719,34.734777","level":"district","districts":[]}]},{"citycode":"0975","adcode":"632600","name":"\u679c\u6d1b\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"100.245161,34.472179","level":"city","districts":[{"citycode":"0975","adcode":"632621","name":"\u739b\u6c81\u53bf","center":"100.238873,34.478049","level":"district","districts":[]},{"citycode":"0975","adcode":"632623","name":"\u7518\u5fb7\u53bf","center":"99.900923,33.969216","level":"district","districts":[]},{"citycode":"0975","adcode":"632624","name":"\u8fbe\u65e5\u53bf","center":"99.651863,33.739293","level":"district","districts":[]},{"citycode":"0975","adcode":"632625","name":"\u4e45\u6cbb\u53bf","center":"101.482831,33.429471","level":"district","districts":[]},{"citycode":"0975","adcode":"632622","name":"\u73ed\u739b\u53bf","center":"100.737138,32.932723","level":"district","districts":[]},{"citycode":"0975","adcode":"632626","name":"\u739b\u591a\u53bf","center":"98.209217,34.915645","level":"district","districts":[]}]},{"citycode":"0970","adcode":"632200","name":"\u6d77\u5317\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"100.900944,36.954612","level":"city","districts":[{"citycode":"0970","adcode":"632223","name":"\u6d77\u664f\u53bf","center":"100.994521,36.896667","level":"district","districts":[]},{"citycode":"0970","adcode":"632221","name":"\u95e8\u6e90\u56de\u65cf\u81ea\u6cbb\u53bf","center":"101.611524,37.388567","level":"district","districts":[]},{"citycode":"0970","adcode":"632224","name":"\u521a\u5bdf\u53bf","center":"100.145662,37.325096","level":"district","districts":[]},{"citycode":"0970","adcode":"632222","name":"\u7941\u8fde\u53bf","center":"100.253211,38.177112","level":"district","districts":[]}]},{"citycode":"0971","adcode":"630100","name":"\u897f\u5b81\u5e02","center":"101.777795,36.616621","level":"city","districts":[{"citycode":"0971","adcode":"630123","name":"\u6e5f\u6e90\u53bf","center":"101.256464,36.682426","level":"district","districts":[]},{"citycode":"0971","adcode":"630121","name":"\u5927\u901a\u56de\u65cf\u571f\u65cf\u81ea\u6cbb\u53bf","center":"101.685503,36.926872","level":"district","districts":[]},{"citycode":"0971","adcode":"630104","name":"\u57ce\u897f\u533a","center":"101.765915,36.628288","level":"district","districts":[]},{"citycode":"0971","adcode":"630105","name":"\u57ce\u5317\u533a","center":"101.766308,36.650064","level":"district","districts":[]},{"citycode":"0971","adcode":"630106","name":"\u6e5f\u4e2d\u533a","center":"101.571683,36.501291","level":"district","districts":[]},{"citycode":"0971","adcode":"630103","name":"\u57ce\u4e2d\u533a","center":"101.705357,36.545545","level":"district","districts":[]},{"citycode":"0971","adcode":"630102","name":"\u57ce\u4e1c\u533a","center":"101.803717,36.599744","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"450000","name":"\u5e7f\u897f\u58ee\u65cf\u81ea\u6cbb\u533a","center":"108.327537,22.816659","level":"province","districts":[{"citycode":"0776","adcode":"451000","name":"\u767e\u8272\u5e02","center":"106.61869,23.90307","level":"city","districts":[{"citycode":"0776","adcode":"451031","name":"\u9686\u6797\u5404\u65cf\u81ea\u6cbb\u53bf","center":"105.343816,24.770649","level":"district","districts":[]},{"citycode":"0776","adcode":"451028","name":"\u4e50\u4e1a\u53bf","center":"106.556564,24.776812","level":"district","districts":[]},{"citycode":"0776","adcode":"451030","name":"\u897f\u6797\u53bf","center":"105.097229,24.50762","level":"district","districts":[]},{"citycode":"0776","adcode":"451002","name":"\u53f3\u6c5f\u533a","center":"106.618151,23.900804","level":"district","districts":[]},{"citycode":"0776","adcode":"451082","name":"\u5e73\u679c\u5e02","center":"107.589768,23.329815","level":"district","districts":[]},{"citycode":"0776","adcode":"451024","name":"\u5fb7\u4fdd\u53bf","center":"106.615087,23.324084","level":"district","districts":[]},{"citycode":"0776","adcode":"451026","name":"\u90a3\u5761\u53bf","center":"105.83234,23.387997","level":"district","districts":[]},{"citycode":"0776","adcode":"451003","name":"\u7530\u9633\u533a","center":"106.915424,23.735631","level":"district","districts":[]},{"citycode":"0776","adcode":"451022","name":"\u7530\u4e1c\u53bf","center":"107.125609,23.596706","level":"district","districts":[]},{"citycode":"0776","adcode":"451081","name":"\u9756\u897f\u5e02","center":"106.417666,23.134375","level":"district","districts":[]},{"citycode":"0776","adcode":"451027","name":"\u51cc\u4e91\u53bf","center":"106.56114,24.347444","level":"district","districts":[]},{"citycode":"0776","adcode":"451029","name":"\u7530\u6797\u53bf","center":"106.22874,24.294627","level":"district","districts":[]}]},{"citycode":"0777","adcode":"450700","name":"\u94a6\u5dde\u5e02","center":"108.654355,21.980894","level":"city","districts":[{"citycode":"0777","adcode":"450702","name":"\u94a6\u5357\u533a","center":"108.657427,21.940438","level":"district","districts":[]},{"citycode":"0777","adcode":"450703","name":"\u94a6\u5317\u533a","center":"108.638738,22.0024","level":"district","districts":[]},{"citycode":"0777","adcode":"450721","name":"\u7075\u5c71\u53bf","center":"109.290698,22.416671","level":"district","districts":[]},{"citycode":"0777","adcode":"450722","name":"\u6d66\u5317\u53bf","center":"109.556232,22.271902","level":"district","districts":[]}]},{"citycode":"0779","adcode":"450500","name":"\u5317\u6d77\u5e02","center":"109.120248,21.481305","level":"city","districts":[{"citycode":"0779","adcode":"450502","name":"\u6d77\u57ce\u533a","center":"109.117256,21.474914","level":"district","districts":[]},{"citycode":"0779","adcode":"450512","name":"\u94c1\u5c71\u6e2f\u533a","center":"109.422099,21.529878","level":"district","districts":[]},{"citycode":"0779","adcode":"450521","name":"\u5408\u6d66\u53bf","center":"109.207236,21.66132","level":"district","districts":[]},{"citycode":"0779","adcode":"450503","name":"\u94f6\u6d77\u533a","center":"109.139689,21.449729","level":"district","districts":[]}]},{"citycode":"0770","adcode":"450600","name":"\u9632\u57ce\u6e2f\u5e02","center":"108.35467,21.686732","level":"city","districts":[{"citycode":"0770","adcode":"450621","name":"\u4e0a\u601d\u53bf","center":"107.983627,22.153671","level":"district","districts":[]},{"citycode":"0770","adcode":"450602","name":"\u6e2f\u53e3\u533a","center":"108.380273,21.643426","level":"district","districts":[]},{"citycode":"0770","adcode":"450603","name":"\u9632\u57ce\u533a","center":"108.353978,21.768826","level":"district","districts":[]},{"citycode":"0770","adcode":"450681","name":"\u4e1c\u5174\u5e02","center":"107.971828,21.547821","level":"district","districts":[]}]},{"citycode":"0778","adcode":"451200","name":"\u6cb3\u6c60\u5e02","center":"108.63639,24.48523","level":"city","districts":[{"citycode":"0778","adcode":"451223","name":"\u51e4\u5c71\u53bf","center":"107.042157,24.546913","level":"district","districts":[]},{"citycode":"0778","adcode":"451224","name":"\u4e1c\u5170\u53bf","center":"107.374259,24.510698","level":"district","districts":[]},{"citycode":"0778","adcode":"451229","name":"\u5927\u5316\u7476\u65cf\u81ea\u6cbb\u53bf","center":"107.998151,23.735699","level":"district","districts":[]},{"citycode":"0778","adcode":"451228","name":"\u90fd\u5b89\u7476\u65cf\u81ea\u6cbb\u53bf","center":"108.105229,23.932704","level":"district","districts":[]},{"citycode":"0778","adcode":"451226","name":"\u73af\u6c5f\u6bdb\u5357\u65cf\u81ea\u6cbb\u53bf","center":"108.258426,24.825923","level":"district","districts":[]},{"citycode":"0778","adcode":"451202","name":"\u91d1\u57ce\u6c5f\u533a","center":"108.085166,24.692865","level":"district","districts":[]},{"citycode":"0778","adcode":"451227","name":"\u5df4\u9a6c\u7476\u65cf\u81ea\u6cbb\u53bf","center":"107.258671,24.142216","level":"district","districts":[]},{"citycode":"0778","adcode":"451225","name":"\u7f57\u57ce\u4eeb\u4f6c\u65cf\u81ea\u6cbb\u53bf","center":"108.904613,24.777501","level":"district","districts":[]},{"citycode":"0778","adcode":"451203","name":"\u5b9c\u5dde\u533a","center":"108.611303,24.500981","level":"district","districts":[]},{"citycode":"0778","adcode":"451222","name":"\u5929\u5ce8\u53bf","center":"107.172287,24.999181","level":"district","districts":[]},{"citycode":"0778","adcode":"451221","name":"\u5357\u4e39\u53bf","center":"107.540578,24.975066","level":"district","districts":[]}]},{"citycode":"0772","adcode":"450200","name":"\u67f3\u5dde\u5e02","center":"109.428071,24.326442","level":"city","districts":[{"citycode":"0772","adcode":"450225","name":"\u878d\u6c34\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"109.256609,25.066624","level":"district","districts":[]},{"citycode":"0772","adcode":"450224","name":"\u878d\u5b89\u53bf","center":"109.397538,25.224549","level":"district","districts":[]},{"citycode":"0772","adcode":"450222","name":"\u67f3\u57ce\u53bf","center":"109.244565,24.649989","level":"district","districts":[]},{"citycode":"0772","adcode":"450202","name":"\u57ce\u4e2d\u533a","center":"109.427398,24.366964","level":"district","districts":[]},{"citycode":"0772","adcode":"450205","name":"\u67f3\u5317\u533a","center":"109.402009,24.362611","level":"district","districts":[]},{"citycode":"0772","adcode":"450204","name":"\u67f3\u5357\u533a","center":"109.385504,24.336229","level":"district","districts":[]},{"citycode":"0772","adcode":"450223","name":"\u9e7f\u5be8\u53bf","center":"109.750527,24.472897","level":"district","districts":[]},{"citycode":"0772","adcode":"450203","name":"\u9c7c\u5cf0\u533a","center":"109.452781,24.318276","level":"district","districts":[]},{"citycode":"0772","adcode":"450206","name":"\u67f3\u6c5f\u533a","center":"109.326365,24.255644","level":"district","districts":[]},{"citycode":"0772","adcode":"450226","name":"\u4e09\u6c5f\u4f97\u65cf\u81ea\u6cbb\u53bf","center":"109.607675,25.783197","level":"district","districts":[]}]},{"citycode":"1772","adcode":"451300","name":"\u6765\u5bbe\u5e02","center":"109.221243,23.750105","level":"city","districts":[{"citycode":"1772","adcode":"451324","name":"\u91d1\u79c0\u7476\u65cf\u81ea\u6cbb\u53bf","center":"110.190354,24.130509","level":"district","districts":[]},{"citycode":"1772","adcode":"451322","name":"\u8c61\u5dde\u53bf","center":"109.704852,23.973832","level":"district","districts":[]},{"citycode":"1772","adcode":"451381","name":"\u5408\u5c71\u5e02","center":"108.885829,23.807032","level":"district","districts":[]},{"citycode":"1772","adcode":"451302","name":"\u5174\u5bbe\u533a","center":"109.183284,23.727647","level":"district","districts":[]},{"citycode":"1772","adcode":"451323","name":"\u6b66\u5ba3\u53bf","center":"109.663153,23.594444","level":"district","districts":[]},{"citycode":"1772","adcode":"451321","name":"\u5ffb\u57ce\u53bf","center":"108.665641,24.066176","level":"district","districts":[]}]},{"citycode":"0773","adcode":"450300","name":"\u6842\u6797\u5e02","center":"110.179752,25.235615","level":"city","districts":[{"citycode":"0773","adcode":"450327","name":"\u704c\u9633\u53bf","center":"111.160764,25.489419","level":"district","districts":[]},{"citycode":"0773","adcode":"450332","name":"\u606d\u57ce\u7476\u65cf\u81ea\u6cbb\u53bf","center":"110.82841,24.831581","level":"district","districts":[]},{"citycode":"0773","adcode":"450330","name":"\u5e73\u4e50\u53bf","center":"110.632867,24.622814","level":"district","districts":[]},{"citycode":"0773","adcode":"450324","name":"\u5168\u5dde\u53bf","center":"111.087089,25.94939","level":"district","districts":[]},{"citycode":"0773","adcode":"450326","name":"\u6c38\u798f\u53bf","center":"109.987507,24.974409","level":"district","districts":[]},{"citycode":"0773","adcode":"450381","name":"\u8354\u6d66\u5e02","center":"110.395232,24.48843","level":"district","districts":[]},{"citycode":"0773","adcode":"450321","name":"\u9633\u6714\u53bf","center":"110.496305,24.778785","level":"district","districts":[]},{"citycode":"0773","adcode":"450312","name":"\u4e34\u6842\u533a","center":"110.212425,25.238556","level":"district","districts":[]},{"citycode":"0773","adcode":"450304","name":"\u8c61\u5c71\u533a","center":"110.281223,25.261585","level":"district","districts":[]},{"citycode":"0773","adcode":"450325","name":"\u5174\u5b89\u53bf","center":"110.672013,25.612576","level":"district","districts":[]},{"citycode":"0773","adcode":"450329","name":"\u8d44\u6e90\u53bf","center":"110.652612,26.042452","level":"district","districts":[]},{"citycode":"0773","adcode":"450328","name":"\u9f99\u80dc\u5404\u65cf\u81ea\u6cbb\u53bf","center":"110.011662,25.79803","level":"district","districts":[]},{"citycode":"0773","adcode":"450305","name":"\u4e03\u661f\u533a","center":"110.317576,25.253093","level":"district","districts":[]},{"citycode":"0773","adcode":"450311","name":"\u96c1\u5c71\u533a","center":"110.286611,25.101798","level":"district","districts":[]},{"citycode":"0773","adcode":"450303","name":"\u53e0\u5f69\u533a","center":"110.301489,25.314158","level":"district","districts":[]},{"citycode":"0773","adcode":"450302","name":"\u79c0\u5cf0\u533a","center":"110.264102,25.273954","level":"district","districts":[]},{"citycode":"0773","adcode":"450323","name":"\u7075\u5ddd\u53bf","center":"110.319837,25.3948","level":"district","districts":[]}]},{"citycode":"0771","adcode":"450100","name":"\u5357\u5b81\u5e02","center":"108.366407,22.8177","level":"city","districts":[{"citycode":"0771","adcode":"450124","name":"\u9a6c\u5c71\u53bf","center":"108.177764,23.708448","level":"district","districts":[]},{"citycode":"0771","adcode":"450125","name":"\u4e0a\u6797\u53bf","center":"108.605089,23.432451","level":"district","districts":[]},{"citycode":"0771","adcode":"450110","name":"\u6b66\u9e23\u533a","center":"108.274869,23.159257","level":"district","districts":[]},{"citycode":"0771","adcode":"450123","name":"\u9686\u5b89\u53bf","center":"107.695721,23.166356","level":"district","districts":[]},{"citycode":"0771","adcode":"450107","name":"\u897f\u4e61\u5858\u533a","center":"108.31344,22.833852","level":"district","districts":[]},{"citycode":"0771","adcode":"450126","name":"\u5bbe\u9633\u53bf","center":"108.810336,23.217771","level":"district","districts":[]},{"citycode":"0771","adcode":"450105","name":"\u6c5f\u5357\u533a","center":"108.273206,22.781166","level":"district","districts":[]},{"citycode":"0771","adcode":"450108","name":"\u826f\u5e86\u533a","center":"108.393889,22.753613","level":"district","districts":[]},{"citycode":"0771","adcode":"450109","name":"\u9095\u5b81\u533a","center":"108.487438,22.758633","level":"district","districts":[]},{"citycode":"0771","adcode":"450181","name":"\u6a2a\u5dde\u5e02","center":"109.262448,22.681257","level":"district","districts":[]},{"citycode":"0771","adcode":"450102","name":"\u5174\u5b81\u533a","center":"108.368071,22.85354","level":"district","districts":[]},{"citycode":"0771","adcode":"450103","name":"\u9752\u79c0\u533a","center":"108.495204,22.785833","level":"district","districts":[]}]},{"citycode":"0774","adcode":"450400","name":"\u68a7\u5dde\u5e02","center":"111.279022,23.476733","level":"city","districts":[{"citycode":"0774","adcode":"450423","name":"\u8499\u5c71\u53bf","center":"110.525003,24.193567","level":"district","districts":[]},{"citycode":"0774","adcode":"450406","name":"\u9f99\u5729\u533a","center":"111.247514,23.414869","level":"district","districts":[]},{"citycode":"0774","adcode":"450481","name":"\u5c91\u6eaa\u5e02","center":"110.994955,22.918327","level":"district","districts":[]},{"citycode":"0774","adcode":"450405","name":"\u957f\u6d32\u533a","center":"111.274276,23.486279","level":"district","districts":[]},{"citycode":"0774","adcode":"450403","name":"\u4e07\u79c0\u533a","center":"111.318065,23.470543","level":"district","districts":[]},{"citycode":"0774","adcode":"450421","name":"\u82cd\u68a7\u53bf","center":"111.547244,23.868208","level":"district","districts":[]},{"citycode":"0774","adcode":"450422","name":"\u85e4\u53bf","center":"110.914606,23.375538","level":"district","districts":[]}]},{"citycode":"1755","adcode":"450800","name":"\u8d35\u6e2f\u5e02","center":"109.598903,23.11182","level":"city","districts":[{"citycode":"1755","adcode":"450803","name":"\u6e2f\u5357\u533a","center":"109.599357,23.075816","level":"district","districts":[]},{"citycode":"1755","adcode":"450802","name":"\u6e2f\u5317\u533a","center":"109.572227,23.11136","level":"district","districts":[]},{"citycode":"1755","adcode":"450881","name":"\u6842\u5e73\u5e02","center":"110.079315,23.394208","level":"district","districts":[]},{"citycode":"1755","adcode":"450804","name":"\u8983\u5858\u533a","center":"109.452668,23.127405","level":"district","districts":[]},{"citycode":"1755","adcode":"450821","name":"\u5e73\u5357\u53bf","center":"110.392489,23.540413","level":"district","districts":[]}]},{"citycode":"1774","adcode":"451100","name":"\u8d3a\u5dde\u5e02","center":"111.567216,24.404182","level":"city","districts":[{"citycode":"1774","adcode":"451122","name":"\u949f\u5c71\u53bf","center":"111.303085,24.526041","level":"district","districts":[]},{"citycode":"1774","adcode":"451121","name":"\u662d\u5e73\u53bf","center":"110.811158,24.169675","level":"district","districts":[]},{"citycode":"1774","adcode":"451103","name":"\u5e73\u6842\u533a","center":"111.479839,24.453094","level":"district","districts":[]},{"citycode":"1774","adcode":"451102","name":"\u516b\u6b65\u533a","center":"111.552029,24.411822","level":"district","districts":[]},{"citycode":"1774","adcode":"451123","name":"\u5bcc\u5ddd\u7476\u65cf\u81ea\u6cbb\u53bf","center":"111.296012,24.811601","level":"district","districts":[]}]},{"citycode":"0775","adcode":"450900","name":"\u7389\u6797\u5e02","center":"110.18097,22.654001","level":"city","districts":[{"citycode":"0775","adcode":"450903","name":"\u798f\u7ef5\u533a","center":"110.059564,22.585316","level":"district","districts":[]},{"citycode":"0775","adcode":"450924","name":"\u5174\u4e1a\u53bf","center":"109.875223,22.736395","level":"district","districts":[]},{"citycode":"0775","adcode":"450921","name":"\u5bb9\u53bf","center":"110.558093,22.85844","level":"district","districts":[]},{"citycode":"0775","adcode":"450922","name":"\u9646\u5ddd\u53bf","center":"110.26412,22.321563","level":"district","districts":[]},{"citycode":"0775","adcode":"450923","name":"\u535a\u767d\u53bf","center":"109.975856,22.273539","level":"district","districts":[]},{"citycode":"0775","adcode":"450981","name":"\u5317\u6d41\u5e02","center":"110.353765,22.708415","level":"district","districts":[]},{"citycode":"0775","adcode":"450902","name":"\u7389\u5dde\u533a","center":"110.150717,22.628476","level":"district","districts":[]}]},{"citycode":"1771","adcode":"451400","name":"\u5d07\u5de6\u5e02","center":"107.364973,22.377139","level":"city","districts":[{"citycode":"1771","adcode":"451421","name":"\u6276\u7ee5\u53bf","center":"107.90389,22.635542","level":"district","districts":[]},{"citycode":"1771","adcode":"451402","name":"\u6c5f\u5dde\u533a","center":"107.353694,22.40609","level":"district","districts":[]},{"citycode":"1771","adcode":"451481","name":"\u51ed\u7965\u5e02","center":"106.766715,22.094421","level":"district","districts":[]},{"citycode":"1771","adcode":"451423","name":"\u9f99\u5dde\u53bf","center":"106.854001,22.343591","level":"district","districts":[]},{"citycode":"1771","adcode":"451422","name":"\u5b81\u660e\u53bf","center":"107.076394,22.140242","level":"district","districts":[]},{"citycode":"1771","adcode":"451425","name":"\u5929\u7b49\u53bf","center":"107.143539,23.080818","level":"district","districts":[]},{"citycode":"1771","adcode":"451424","name":"\u5927\u65b0\u53bf","center":"107.200654,22.829287","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"640000","name":"\u5b81\u590f\u56de\u65cf\u81ea\u6cbb\u533a","center":"106.258889,38.472273","level":"province","districts":[{"citycode":"0954","adcode":"640400","name":"\u56fa\u539f\u5e02","center":"106.24267,36.01628","level":"city","districts":[{"citycode":"0954","adcode":"640423","name":"\u9686\u5fb7\u53bf","center":"106.111321,35.62592","level":"district","districts":[]},{"citycode":"0954","adcode":"640425","name":"\u5f6d\u9633\u53bf","center":"106.632151,35.860067","level":"district","districts":[]},{"citycode":"0954","adcode":"640424","name":"\u6cfe\u6e90\u53bf","center":"106.330569,35.497887","level":"district","districts":[]},{"citycode":"0954","adcode":"640422","name":"\u897f\u5409\u53bf","center":"105.729189,35.963885","level":"district","districts":[]},{"citycode":"0954","adcode":"640402","name":"\u539f\u5dde\u533a","center":"106.28784,36.003777","level":"district","districts":[]}]},{"citycode":"0952","adcode":"640200","name":"\u77f3\u5634\u5c71\u5e02","center":"106.382792,38.984632","level":"city","districts":[{"citycode":"0952","adcode":"640205","name":"\u60e0\u519c\u533a","center":"106.781013,39.239292","level":"district","districts":[]},{"citycode":"0952","adcode":"640202","name":"\u5927\u6b66\u53e3\u533a","center":"106.368128,39.019375","level":"district","districts":[]},{"citycode":"0952","adcode":"640221","name":"\u5e73\u7f57\u53bf","center":"106.523411,38.913923","level":"district","districts":[]}]},{"citycode":"1953","adcode":"640500","name":"\u4e2d\u536b\u5e02","center":"105.19677,37.500185","level":"city","districts":[{"citycode":"1953","adcode":"640522","name":"\u6d77\u539f\u53bf","center":"105.643449,36.565189","level":"district","districts":[]},{"citycode":"1953","adcode":"640502","name":"\u6c99\u5761\u5934\u533a","center":"105.173875,37.516859","level":"district","districts":[]},{"citycode":"1953","adcode":"640521","name":"\u4e2d\u5b81\u53bf","center":"105.684729,37.492092","level":"district","districts":[]}]},{"citycode":"0953","adcode":"640300","name":"\u5434\u5fe0\u5e02","center":"106.198613,37.997755","level":"city","districts":[{"citycode":"0953","adcode":"640323","name":"\u76d0\u6c60\u53bf","center":"107.407184,37.783276","level":"district","districts":[]},{"citycode":"0953","adcode":"640303","name":"\u7ea2\u5bfa\u5821\u533a","center":"106.06216,37.425494","level":"district","districts":[]},{"citycode":"0953","adcode":"640302","name":"\u5229\u901a\u533a","center":"106.235842,38.00298","level":"district","districts":[]},{"citycode":"0953","adcode":"640324","name":"\u540c\u5fc3\u53bf","center":"105.895412,36.954635","level":"district","districts":[]},{"citycode":"0953","adcode":"640381","name":"\u9752\u94dc\u5ce1\u5e02","center":"106.07906,38.021579","level":"district","districts":[]}]},{"citycode":"0951","adcode":"640100","name":"\u94f6\u5ddd\u5e02","center":"106.230977,38.487783","level":"city","districts":[{"citycode":"0951","adcode":"640181","name":"\u7075\u6b66\u5e02","center":"106.339978,38.102456","level":"district","districts":[]},{"citycode":"0951","adcode":"640106","name":"\u91d1\u51e4\u533a","center":"106.239339,38.474277","level":"district","districts":[]},{"citycode":"0951","adcode":"640104","name":"\u5174\u5e86\u533a","center":"106.288452,38.473972","level":"district","districts":[]},{"citycode":"0951","adcode":"640121","name":"\u6c38\u5b81\u53bf","center":"106.25337,38.277376","level":"district","districts":[]},{"citycode":"0951","adcode":"640105","name":"\u897f\u590f\u533a","center":"106.161208,38.502325","level":"district","districts":[]},{"citycode":"0951","adcode":"640122","name":"\u8d3a\u5170\u53bf","center":"106.365074,38.579147","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"330000","name":"\u6d59\u6c5f\u7701","center":"120.152575,30.266619","level":"province","districts":[{"citycode":"0580","adcode":"330900","name":"\u821f\u5c71\u5e02","center":"122.207395,29.985578","level":"city","districts":[{"citycode":"0580","adcode":"330922","name":"\u5d4a\u6cd7\u53bf","center":"122.45132,30.725677","level":"district","districts":[]},{"citycode":"0580","adcode":"330921","name":"\u5cb1\u5c71\u53bf","center":"122.225718,30.264533","level":"district","districts":[]},{"citycode":"0580","adcode":"330902","name":"\u5b9a\u6d77\u533a","center":"122.106844,30.019795","level":"district","districts":[]},{"citycode":"0580","adcode":"330903","name":"\u666e\u9640\u533a","center":"122.323297,29.970571","level":"district","districts":[]}]},{"citycode":"0573","adcode":"330400","name":"\u5609\u5174\u5e02","center":"120.755623,30.746814","level":"city","districts":[{"citycode":"0573","adcode":"330482","name":"\u5e73\u6e56\u5e02","center":"121.015619,30.677804","level":"district","districts":[]},{"citycode":"0573","adcode":"330402","name":"\u5357\u6e56\u533a","center":"120.782952,30.747738","level":"district","districts":[]},{"citycode":"0573","adcode":"330483","name":"\u6850\u4e61\u5e02","center":"120.565127,30.630375","level":"district","districts":[]},{"citycode":"0573","adcode":"330481","name":"\u6d77\u5b81\u5e02","center":"120.680224,30.511536","level":"district","districts":[]},{"citycode":"0573","adcode":"330424","name":"\u6d77\u76d0\u53bf","center":"120.94628,30.52664","level":"district","districts":[]},{"citycode":"0573","adcode":"330411","name":"\u79c0\u6d32\u533a","center":"120.709047,30.764811","level":"district","districts":[]},{"citycode":"0573","adcode":"330421","name":"\u5609\u5584\u53bf","center":"120.926031,30.83085","level":"district","districts":[]}]},{"citycode":"0574","adcode":"330200","name":"\u5b81\u6ce2\u5e02","center":"121.62454,29.860258","level":"city","districts":[{"citycode":"0574","adcode":"330206","name":"\u5317\u4ed1\u533a","center":"121.844601,29.899548","level":"district","districts":[]},{"citycode":"0574","adcode":"330225","name":"\u8c61\u5c71\u53bf","center":"121.869251,29.476826","level":"district","districts":[]},{"citycode":"0574","adcode":"330211","name":"\u9547\u6d77\u533a","center":"121.596686,29.965212","level":"district","districts":[]},{"citycode":"0574","adcode":"330203","name":"\u6d77\u66d9\u533a","center":"121.550485,29.873705","level":"district","districts":[]},{"citycode":"0574","adcode":"330213","name":"\u5949\u5316\u533a","center":"121.406151,29.655292","level":"district","districts":[]},{"citycode":"0574","adcode":"330212","name":"\u911e\u5dde\u533a","center":"121.546617,29.817302","level":"district","districts":[]},{"citycode":"0574","adcode":"330226","name":"\u5b81\u6d77\u53bf","center":"121.429729,29.287929","level":"district","districts":[]},{"citycode":"0574","adcode":"330205","name":"\u6c5f\u5317\u533a","center":"121.555067,29.88673","level":"district","districts":[]},{"citycode":"0574","adcode":"330281","name":"\u4f59\u59da\u5e02","center":"121.154572,30.037967","level":"district","districts":[]},{"citycode":"0574","adcode":"330282","name":"\u6148\u6eaa\u5e02","center":"121.266525,30.170695","level":"district","districts":[]}]},{"citycode":"0576","adcode":"331000","name":"\u53f0\u5dde\u5e02","center":"121.42079,28.655716","level":"city","districts":[{"citycode":"0576","adcode":"331082","name":"\u4e34\u6d77\u5e02","center":"121.144625,28.859042","level":"district","districts":[]},{"citycode":"0576","adcode":"331002","name":"\u6912\u6c5f\u533a","center":"121.442859,28.673334","level":"district","districts":[]},{"citycode":"0576","adcode":"331004","name":"\u8def\u6865\u533a","center":"121.337874,28.578244","level":"district","districts":[]},{"citycode":"0576","adcode":"331081","name":"\u6e29\u5cad\u5e02","center":"121.385435,28.372805","level":"district","districts":[]},{"citycode":"0576","adcode":"331083","name":"\u7389\u73af\u5e02","center":"121.231915,28.136703","level":"district","districts":[]},{"citycode":"0576","adcode":"331022","name":"\u4e09\u95e8\u53bf","center":"121.39561,29.104888","level":"district","districts":[]},{"citycode":"0576","adcode":"331024","name":"\u4ed9\u5c45\u53bf","center":"120.728733,28.846856","level":"district","districts":[]},{"citycode":"0576","adcode":"331023","name":"\u5929\u53f0\u53bf","center":"121.006657,29.144594","level":"district","districts":[]},{"citycode":"0576","adcode":"331003","name":"\u9ec4\u5ca9\u533a","center":"121.261804,28.649433","level":"district","districts":[]}]},{"citycode":"0577","adcode":"330300","name":"\u6e29\u5dde\u5e02","center":"120.699279,27.993849","level":"city","districts":[{"citycode":"0577","adcode":"330327","name":"\u82cd\u5357\u53bf","center":"120.425957,27.518636","level":"district","districts":[]},{"citycode":"0577","adcode":"330305","name":"\u6d1e\u5934\u533a","center":"121.157406,27.836412","level":"district","districts":[]},{"citycode":"0577","adcode":"330326","name":"\u5e73\u9633\u53bf","center":"120.565161,27.662394","level":"district","districts":[]},{"citycode":"0577","adcode":"330381","name":"\u745e\u5b89\u5e02","center":"120.655245,27.778967","level":"district","districts":[]},{"citycode":"0577","adcode":"330383","name":"\u9f99\u6e2f\u5e02","center":"120.552952,27.578379","level":"district","districts":[]},{"citycode":"0577","adcode":"330329","name":"\u6cf0\u987a\u53bf","center":"119.717643,27.556578","level":"district","districts":[]},{"citycode":"0577","adcode":"330382","name":"\u4e50\u6e05\u5e02","center":"120.986297,28.112519","level":"district","districts":[]},{"citycode":"0577","adcode":"330324","name":"\u6c38\u5609\u53bf","center":"120.69136,28.153914","level":"district","districts":[]},{"citycode":"0577","adcode":"330302","name":"\u9e7f\u57ce\u533a","center":"120.655199,28.015776","level":"district","districts":[]},{"citycode":"0577","adcode":"330303","name":"\u9f99\u6e7e\u533a","center":"120.812333,27.933261","level":"district","districts":[]},{"citycode":"0577","adcode":"330328","name":"\u6587\u6210\u53bf","center":"120.090929,27.786856","level":"district","districts":[]},{"citycode":"0577","adcode":"330304","name":"\u74ef\u6d77\u533a","center":"120.615149,27.967445","level":"district","districts":[]}]},{"citycode":"0578","adcode":"331100","name":"\u4e3d\u6c34\u5e02","center":"119.923249,28.467694","level":"city","districts":[{"citycode":"0578","adcode":"331124","name":"\u677e\u9633\u53bf","center":"119.481406,28.448883","level":"district","districts":[]},{"citycode":"0578","adcode":"331181","name":"\u9f99\u6cc9\u5e02","center":"119.14126,28.074916","level":"district","districts":[]},{"citycode":"0578","adcode":"331122","name":"\u7f19\u4e91\u53bf","center":"120.091685,28.659294","level":"district","districts":[]},{"citycode":"0578","adcode":"331127","name":"\u666f\u5b81\u7572\u65cf\u81ea\u6cbb\u53bf","center":"119.635686,27.973594","level":"district","districts":[]},{"citycode":"0578","adcode":"331121","name":"\u9752\u7530\u53bf","center":"120.289693,28.1396","level":"district","districts":[]},{"citycode":"0578","adcode":"331126","name":"\u5e86\u5143\u53bf","center":"119.062572,27.619213","level":"district","districts":[]},{"citycode":"0578","adcode":"331123","name":"\u9042\u660c\u53bf","center":"119.275865,28.592388","level":"district","districts":[]},{"citycode":"0578","adcode":"331125","name":"\u4e91\u548c\u53bf","center":"119.573454,28.116024","level":"district","districts":[]},{"citycode":"0578","adcode":"331102","name":"\u83b2\u90fd\u533a","center":"119.912266,28.4461","level":"district","districts":[]}]},{"citycode":"0570","adcode":"330800","name":"\u8862\u5dde\u5e02","center":"118.859307,28.970229","level":"city","districts":[{"citycode":"0570","adcode":"330822","name":"\u5e38\u5c71\u53bf","center":"118.511224,28.902446","level":"district","districts":[]},{"citycode":"0570","adcode":"330803","name":"\u8862\u6c5f\u533a","center":"118.959139,28.980356","level":"district","districts":[]},{"citycode":"0570","adcode":"330824","name":"\u5f00\u5316\u53bf","center":"118.406852,29.1179","level":"district","districts":[]},{"citycode":"0570","adcode":"330802","name":"\u67ef\u57ce\u533a","center":"118.874138,28.936937","level":"district","districts":[]},{"citycode":"0570","adcode":"330881","name":"\u6c5f\u5c71\u5e02","center":"118.627228,28.73796","level":"district","districts":[]},{"citycode":"0570","adcode":"330825","name":"\u9f99\u6e38\u53bf","center":"119.1723,29.028214","level":"district","districts":[]}]},{"citycode":"0579","adcode":"330700","name":"\u91d1\u534e\u5e02","center":"119.647265,29.079195","level":"city","districts":[{"citycode":"0579","adcode":"330723","name":"\u6b66\u4e49\u53bf","center":"119.816341,28.892562","level":"district","districts":[]},{"citycode":"0579","adcode":"330726","name":"\u6d66\u6c5f\u53bf","center":"119.89259,29.453363","level":"district","districts":[]},{"citycode":"0579","adcode":"330784","name":"\u6c38\u5eb7\u5e02","center":"120.047356,28.88899","level":"district","districts":[]},{"citycode":"0579","adcode":"330782","name":"\u4e49\u4e4c\u5e02","center":"120.075679,29.306296","level":"district","districts":[]},{"citycode":"0579","adcode":"330781","name":"\u5170\u6eaa\u5e02","center":"119.460404,29.209059","level":"district","districts":[]},{"citycode":"0579","adcode":"330702","name":"\u5a7a\u57ce\u533a","center":"119.571574,29.087311","level":"district","districts":[]},{"citycode":"0579","adcode":"330703","name":"\u91d1\u4e1c\u533a","center":"119.692821,29.099822","level":"district","districts":[]},{"citycode":"0579","adcode":"330783","name":"\u4e1c\u9633\u5e02","center":"120.24179,29.290158","level":"district","districts":[]},{"citycode":"0579","adcode":"330727","name":"\u78d0\u5b89\u53bf","center":"120.449937,29.054491","level":"district","districts":[]}]},{"citycode":"0572","adcode":"330500","name":"\u6e56\u5dde\u5e02","center":"120.086881,30.894178","level":"city","districts":[{"citycode":"0572","adcode":"330503","name":"\u5357\u6d54\u533a","center":"120.418244,30.850835","level":"district","districts":[]},{"citycode":"0572","adcode":"330502","name":"\u5434\u5174\u533a","center":"120.185608,30.857184","level":"district","districts":[]},{"citycode":"0572","adcode":"330523","name":"\u5b89\u5409\u53bf","center":"119.680261,30.638803","level":"district","districts":[]},{"citycode":"0572","adcode":"330521","name":"\u5fb7\u6e05\u53bf","center":"119.9774,30.54251","level":"district","districts":[]},{"citycode":"0572","adcode":"330522","name":"\u957f\u5174\u53bf","center":"119.911212,31.026962","level":"district","districts":[]}]},{"citycode":"0571","adcode":"330100","name":"\u676d\u5dde\u5e02","center":"120.209903,30.246566","level":"city","districts":[{"citycode":"0571","adcode":"330102","name":"\u4e0a\u57ce\u533a","center":"120.19732,30.226543","level":"district","districts":[]},{"citycode":"0571","adcode":"330127","name":"\u6df3\u5b89\u53bf","center":"119.042015,29.609678","level":"district","districts":[]},{"citycode":"0571","adcode":"330105","name":"\u62f1\u5885\u533a","center":"120.141503,30.319126","level":"district","districts":[]},{"citycode":"0571","adcode":"330114","name":"\u94b1\u5858\u533a","center":"120.493941,30.32304","level":"district","districts":[]},{"citycode":"0571","adcode":"330182","name":"\u5efa\u5fb7\u5e02","center":"119.281195,29.474964","level":"district","districts":[]},{"citycode":"0571","adcode":"330112","name":"\u4e34\u5b89\u533a","center":"119.724457,30.234375","level":"district","districts":[]},{"citycode":"0571","adcode":"330113","name":"\u4e34\u5e73\u533a","center":"120.299222,30.419154","level":"district","districts":[]},{"citycode":"0571","adcode":"330110","name":"\u4f59\u676d\u533a","center":"119.978742,30.273705","level":"district","districts":[]},{"citycode":"0571","adcode":"330106","name":"\u897f\u6e56\u533a","center":"120.130396,30.259242","level":"district","districts":[]},{"citycode":"0571","adcode":"330111","name":"\u5bcc\u9633\u533a","center":"119.96022,30.048803","level":"district","districts":[]},{"citycode":"0571","adcode":"330122","name":"\u6850\u5e90\u53bf","center":"119.691755,29.79418","level":"district","districts":[]},{"citycode":"0571","adcode":"330108","name":"\u6ee8\u6c5f\u533a","center":"120.211981,30.208332","level":"district","districts":[]},{"citycode":"0571","adcode":"330109","name":"\u8427\u5c71\u533a","center":"120.264263,30.184119","level":"district","districts":[]}]},{"citycode":"0575","adcode":"330600","name":"\u7ecd\u5174\u5e02","center":"120.582886,30.051549","level":"city","districts":[{"citycode":"0575","adcode":"330604","name":"\u4e0a\u865e\u533a","center":"120.868571,30.033862","level":"district","districts":[]},{"citycode":"0575","adcode":"330681","name":"\u8bf8\u66a8\u5e02","center":"120.246602,29.709398","level":"district","districts":[]},{"citycode":"0575","adcode":"330624","name":"\u65b0\u660c\u53bf","center":"120.903918,29.500525","level":"district","districts":[]},{"citycode":"0575","adcode":"330683","name":"\u5d4a\u5dde\u5e02","center":"120.830505,29.561519","level":"district","districts":[]},{"citycode":"0575","adcode":"330602","name":"\u8d8a\u57ce\u533a","center":"120.582338,29.989092","level":"district","districts":[]},{"citycode":"0575","adcode":"330603","name":"\u67ef\u6865\u533a","center":"120.495532,30.083039","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"130000","name":"\u6cb3\u5317\u7701","center":"114.530399,38.037707","level":"province","districts":[{"citycode":"0315","adcode":"130200","name":"\u5510\u5c71\u5e02","center":"118.180149,39.63068","level":"city","districts":[{"citycode":"0315","adcode":"130225","name":"\u4e50\u4ead\u53bf","center":"118.91245,39.425748","level":"district","districts":[]},{"citycode":"0315","adcode":"130209","name":"\u66f9\u5983\u7538\u533a","center":"118.460197,39.273528","level":"district","districts":[]},{"citycode":"0315","adcode":"130224","name":"\u6ee6\u5357\u53bf","center":"118.68363,39.520272","level":"district","districts":[]},{"citycode":"0315","adcode":"130204","name":"\u53e4\u51b6\u533a","center":"118.447134,39.73392","level":"district","districts":[]},{"citycode":"0315","adcode":"130227","name":"\u8fc1\u897f\u53bf","center":"118.31467,40.141486","level":"district","districts":[]},{"citycode":"0315","adcode":"130207","name":"\u4e30\u5357\u533a","center":"118.085169,39.576031","level":"district","districts":[]},{"citycode":"0315","adcode":"130283","name":"\u8fc1\u5b89\u5e02","center":"118.701021,39.998861","level":"district","districts":[]},{"citycode":"0315","adcode":"130202","name":"\u8def\u5357\u533a","center":"118.154348,39.624988","level":"district","districts":[]},{"citycode":"0315","adcode":"130229","name":"\u7389\u7530\u53bf","center":"117.738196,39.901827","level":"district","districts":[]},{"citycode":"0315","adcode":"130281","name":"\u9075\u5316\u5e02","center":"117.965878,40.189119","level":"district","districts":[]},{"citycode":"0315","adcode":"130208","name":"\u4e30\u6da6\u533a","center":"118.162426,39.832919","level":"district","districts":[]},{"citycode":"0315","adcode":"130284","name":"\u6ee6\u5dde\u5e02","center":"118.70301,39.740963","level":"district","districts":[]},{"citycode":"0315","adcode":"130203","name":"\u8def\u5317\u533a","center":"118.201085,39.625079","level":"district","districts":[]},{"citycode":"0315","adcode":"130205","name":"\u5f00\u5e73\u533a","center":"118.262246,39.671634","level":"district","districts":[]}]},{"citycode":"0335","adcode":"130300","name":"\u79e6\u7687\u5c9b\u5e02","center":"119.52022,39.888243","level":"city","districts":[{"citycode":"0335","adcode":"130303","name":"\u5c71\u6d77\u5173\u533a","center":"119.775187,39.978882","level":"district","districts":[]},{"citycode":"0335","adcode":"130306","name":"\u629a\u5b81\u533a","center":"119.244847,39.876253","level":"district","districts":[]},{"citycode":"0335","adcode":"130302","name":"\u6d77\u6e2f\u533a","center":"119.564962,39.94756","level":"district","districts":[]},{"citycode":"0335","adcode":"130321","name":"\u9752\u9f99\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"118.94985,40.407473","level":"district","districts":[]},{"citycode":"0335","adcode":"130322","name":"\u660c\u9ece\u53bf","center":"119.199846,39.699677","level":"district","districts":[]},{"citycode":"0335","adcode":"130324","name":"\u5362\u9f99\u53bf","center":"118.891931,39.892564","level":"district","districts":[]},{"citycode":"0335","adcode":"130304","name":"\u5317\u6234\u6cb3\u533a","center":"119.48449,39.834912","level":"district","districts":[]}]},{"citycode":"0317","adcode":"130900","name":"\u6ca7\u5dde\u5e02","center":"116.838715,38.304676","level":"city","districts":[{"citycode":"0317","adcode":"130923","name":"\u4e1c\u5149\u53bf","center":"116.537138,37.888844","level":"district","districts":[]},{"citycode":"0317","adcode":"130924","name":"\u6d77\u5174\u53bf","center":"117.497545,38.143308","level":"district","districts":[]},{"citycode":"0317","adcode":"130928","name":"\u5434\u6865\u53bf","center":"116.391557,37.628225","level":"district","districts":[]},{"citycode":"0317","adcode":"130902","name":"\u65b0\u534e\u533a","center":"116.866309,38.314094","level":"district","districts":[]},{"citycode":"0317","adcode":"130927","name":"\u5357\u76ae\u53bf","center":"116.708603,38.038761","level":"district","districts":[]},{"citycode":"0317","adcode":"130922","name":"\u9752\u53bf","center":"116.804137,38.583657","level":"district","districts":[]},{"citycode":"0317","adcode":"130926","name":"\u8083\u5b81\u53bf","center":"115.829619,38.423044","level":"district","districts":[]},{"citycode":"0317","adcode":"130984","name":"\u6cb3\u95f4\u5e02","center":"116.099362,38.446656","level":"district","districts":[]},{"citycode":"0317","adcode":"130929","name":"\u732e\u53bf","center":"116.152058,38.180381","level":"district","districts":[]},{"citycode":"0317","adcode":"130981","name":"\u6cca\u5934\u5e02","center":"116.578322,38.084262","level":"district","districts":[]},{"citycode":"0317","adcode":"130925","name":"\u76d0\u5c71\u53bf","center":"117.230681,38.058074","level":"district","districts":[]},{"citycode":"0317","adcode":"130930","name":"\u5b5f\u6751\u56de\u65cf\u81ea\u6cbb\u53bf","center":"117.104514,38.053438","level":"district","districts":[]},{"citycode":"0317","adcode":"130982","name":"\u4efb\u4e18\u5e02","center":"116.084412,38.685325","level":"district","districts":[]},{"citycode":"0317","adcode":"130983","name":"\u9ec4\u9a85\u5e02","center":"117.330043,38.372266","level":"district","districts":[]},{"citycode":"0317","adcode":"130921","name":"\u6ca7\u53bf","center":"117.007478,38.21985569","level":"district","districts":[]},{"citycode":"0317","adcode":"130903","name":"\u8fd0\u6cb3\u533a","center":"116.842964,38.283456","level":"district","districts":[]}]},{"citycode":"0310","adcode":"130400","name":"\u90af\u90f8\u5e02","center":"114.53915,36.625849","level":"city","districts":[{"citycode":"0310","adcode":"130407","name":"\u80a5\u4e61\u533a","center":"114.800199,36.548545","level":"district","districts":[]},{"citycode":"0310","adcode":"130431","name":"\u9e21\u6cfd\u53bf","center":"114.889951,36.911525","level":"district","districts":[]},{"citycode":"0310","adcode":"130408","name":"\u6c38\u5e74\u533a","center":"114.536626,36.74188","level":"district","districts":[]},{"citycode":"0310","adcode":"130423","name":"\u4e34\u6f33\u53bf","center":"114.585514,36.322504","level":"district","districts":[]},{"citycode":"0310","adcode":"130402","name":"\u90af\u5c71\u533a","center":"114.531062,36.59457","level":"district","districts":[]},{"citycode":"0310","adcode":"130425","name":"\u5927\u540d\u53bf","center":"115.147985,36.286406","level":"district","districts":[]},{"citycode":"0310","adcode":"130403","name":"\u4e1b\u53f0\u533a","center":"114.492875,36.636434","level":"district","districts":[]},{"citycode":"0310","adcode":"130404","name":"\u590d\u5174\u533a","center":"114.462581,36.638879","level":"district","districts":[]},{"citycode":"0310","adcode":"130481","name":"\u6b66\u5b89\u5e02","center":"114.203685,36.69759","level":"district","districts":[]},{"citycode":"0310","adcode":"130432","name":"\u5e7f\u5e73\u53bf","center":"114.921185,36.476727","level":"district","districts":[]},{"citycode":"0310","adcode":"130424","name":"\u6210\u5b89\u53bf","center":"114.670094,36.445331","level":"district","districts":[]},{"citycode":"0310","adcode":"130433","name":"\u9986\u9676\u53bf","center":"115.281818,36.548295","level":"district","districts":[]},{"citycode":"0310","adcode":"130427","name":"\u78c1\u53bf","center":"114.373965,36.37507","level":"district","districts":[]},{"citycode":"0310","adcode":"130406","name":"\u5cf0\u5cf0\u77ff\u533a","center":"114.212571,36.419298","level":"district","districts":[]},{"citycode":"0310","adcode":"130435","name":"\u66f2\u5468\u53bf","center":"114.957549,36.766347","level":"district","districts":[]},{"citycode":"0310","adcode":"130430","name":"\u90b1\u53bf","center":"115.200049,36.811783","level":"district","districts":[]},{"citycode":"0310","adcode":"130426","name":"\u6d89\u53bf","center":"113.692157,36.586073","level":"district","districts":[]},{"citycode":"0310","adcode":"130434","name":"\u9b4f\u53bf","center":"114.939217,36.35926","level":"district","districts":[]}]},{"citycode":"0311","adcode":"130100","name":"\u77f3\u5bb6\u5e84\u5e02","center":"114.514976,38.042007","level":"city","districts":[{"citycode":"0311","adcode":"130127","name":"\u9ad8\u9091\u53bf","center":"114.611659,37.615905","level":"district","districts":[]},{"citycode":"0311","adcode":"130121","name":"\u4e95\u9649\u53bf","center":"114.145669,38.032366","level":"district","districts":[]},{"citycode":"0311","adcode":"130181","name":"\u8f9b\u96c6\u5e02","center":"115.217626,37.943239","level":"district","districts":[]},{"citycode":"0311","adcode":"130107","name":"\u4e95\u9649\u77ff\u533a","center":"114.062258,38.065446","level":"district","districts":[]},{"citycode":"0311","adcode":"130128","name":"\u6df1\u6cfd\u53bf","center":"115.20089,38.184572","level":"district","districts":[]},{"citycode":"0311","adcode":"130133","name":"\u8d75\u53bf","center":"114.775914,37.756935","level":"district","districts":[]},{"citycode":"0311","adcode":"130125","name":"\u884c\u5510\u53bf","center":"114.553044,38.437535","level":"district","districts":[]},{"citycode":"0311","adcode":"130123","name":"\u6b63\u5b9a\u53bf","center":"114.57043,38.14699","level":"district","districts":[]},{"citycode":"0311","adcode":"130108","name":"\u88d5\u534e\u533a","center":"114.531599,38.007002","level":"district","districts":[]},{"citycode":"0311","adcode":"130130","name":"\u65e0\u6781\u53bf","center":"114.976256,38.178852","level":"district","districts":[]},{"citycode":"0311","adcode":"130184","name":"\u65b0\u4e50\u5e02","center":"114.683745,38.343952","level":"district","districts":[]},{"citycode":"0311","adcode":"130104","name":"\u6865\u897f\u533a","center":"114.45004,38.025245","level":"district","districts":[]},{"citycode":"0311","adcode":"130105","name":"\u65b0\u534e\u533a","center":"114.463904,38.050749","level":"district","districts":[]},{"citycode":"0311","adcode":"130102","name":"\u957f\u5b89\u533a","center":"114.538955,38.03682","level":"district","districts":[]},{"citycode":"0311","adcode":"130129","name":"\u8d5e\u7687\u53bf","center":"114.386114,37.666549","level":"district","districts":[]},{"citycode":"0311","adcode":"130110","name":"\u9e7f\u6cc9\u533a","center":"114.313559,38.086536","level":"district","districts":[]},{"citycode":"0311","adcode":"130111","name":"\u683e\u57ce\u533a","center":"114.647922,37.900915","level":"district","districts":[]},{"citycode":"0311","adcode":"130132","name":"\u5143\u6c0f\u53bf","center":"114.525508,37.767332","level":"district","districts":[]},{"citycode":"0311","adcode":"130126","name":"\u7075\u5bff\u53bf","center":"114.383013,38.307908","level":"district","districts":[]},{"citycode":"0311","adcode":"130131","name":"\u5e73\u5c71\u53bf","center":"114.186007,38.260288","level":"district","districts":[]},{"citycode":"0311","adcode":"130183","name":"\u664b\u5dde\u5e02","center":"115.044141,38.033937","level":"district","districts":[]},{"citycode":"0311","adcode":"130109","name":"\u85c1\u57ce\u533a","center":"114.846562,38.022177","level":"district","districts":[]}]},{"citycode":"0316","adcode":"131000","name":"\u5eca\u574a\u5e02","center":"116.683546,39.538304","level":"city","districts":[{"citycode":"0316","adcode":"131028","name":"\u5927\u5382\u56de\u65cf\u81ea\u6cbb\u53bf","center":"116.98961,39.886569","level":"district","districts":[]},{"citycode":"0316","adcode":"131026","name":"\u6587\u5b89\u53bf","center":"116.457628,38.873185","level":"district","districts":[]},{"citycode":"0316","adcode":"131082","name":"\u4e09\u6cb3\u5e02","center":"117.078269,39.982933","level":"district","districts":[]},{"citycode":"0316","adcode":"131002","name":"\u5b89\u6b21\u533a","center":"116.6945443,39.50256863","level":"district","districts":[]},{"citycode":"0316","adcode":"131003","name":"\u5e7f\u9633\u533a","center":"116.710667,39.52343","level":"district","districts":[]},{"citycode":"0316","adcode":"131025","name":"\u5927\u57ce\u53bf","center":"116.653917,38.705232","level":"district","districts":[]},{"citycode":"0316","adcode":"131022","name":"\u56fa\u5b89\u53bf","center":"116.298696,39.438797","level":"district","districts":[]},{"citycode":"0316","adcode":"131023","name":"\u6c38\u6e05\u53bf","center":"116.50608,39.330983","level":"district","districts":[]},{"citycode":"0316","adcode":"131081","name":"\u9738\u5dde\u5e02","center":"116.391488,39.125238","level":"district","districts":[]},{"citycode":"0316","adcode":"131024","name":"\u9999\u6cb3\u53bf","center":"117.006072,39.763772","level":"district","districts":[]}]},{"citycode":"0314","adcode":"130800","name":"\u627f\u5fb7\u5e02","center":"117.962749,40.952942","level":"city","districts":[{"citycode":"0314","adcode":"130828","name":"\u56f4\u573a\u6ee1\u65cf\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","center":"117.75934,41.938372","level":"district","districts":[]},{"citycode":"0314","adcode":"130826","name":"\u4e30\u5b81\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"116.645798,41.209951","level":"district","districts":[]},{"citycode":"0314","adcode":"130825","name":"\u9686\u5316\u53bf","center":"117.739026,41.314402","level":"district","districts":[]},{"citycode":"0314","adcode":"130827","name":"\u5bbd\u57ce\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"118.485472,40.611333","level":"district","districts":[]},{"citycode":"0314","adcode":"130804","name":"\u9e70\u624b\u8425\u5b50\u77ff\u533a","center":"117.659341,40.546424","level":"district","districts":[]},{"citycode":"0314","adcode":"130824","name":"\u6ee6\u5e73\u53bf","center":"117.332652,40.941644","level":"district","districts":[]},{"citycode":"0314","adcode":"130803","name":"\u53cc\u6ee6\u533a","center":"117.799588,40.959426","level":"district","districts":[]},{"citycode":"0314","adcode":"130802","name":"\u53cc\u6865\u533a","center":"117.943121,40.974679","level":"district","districts":[]},{"citycode":"0314","adcode":"130821","name":"\u627f\u5fb7\u53bf","center":"118.174166,40.768082","level":"district","districts":[]},{"citycode":"0314","adcode":"130881","name":"\u5e73\u6cc9\u5e02","center":"118.702032,41.018482","level":"district","districts":[]},{"citycode":"0314","adcode":"130822","name":"\u5174\u9686\u53bf","center":"117.500558,40.417358","level":"district","districts":[]}]},{"citycode":"0312","adcode":"130600","name":"\u4fdd\u5b9a\u5e02","center":"115.464523,38.874476","level":"city","districts":[{"citycode":"0312","adcode":"130636","name":"\u987a\u5e73\u53bf","center":"115.135133,38.837988","level":"district","districts":[]},{"citycode":"0312","adcode":"130631","name":"\u671b\u90fd\u53bf","center":"115.15542,38.696221","level":"district","districts":[]},{"citycode":"0312","adcode":"130627","name":"\u5510\u53bf","center":"114.982968,38.748477","level":"district","districts":[]},{"citycode":"0312","adcode":"130634","name":"\u66f2\u9633\u53bf","center":"114.740476,38.614409","level":"district","districts":[]},{"citycode":"0312","adcode":"130628","name":"\u9ad8\u9633\u53bf","center":"115.779149,38.700846","level":"district","districts":[]},{"citycode":"0312","adcode":"130608","name":"\u6e05\u82d1\u533a","center":"115.48988,38.76527","level":"district","districts":[]},{"citycode":"0312","adcode":"130682","name":"\u5b9a\u5dde\u5e02","center":"114.990321,38.516746","level":"district","districts":[]},{"citycode":"0312","adcode":"130633","name":"\u6613\u53bf","center":"115.497487,39.350219","level":"district","districts":[]},{"citycode":"0312","adcode":"130607","name":"\u6ee1\u57ce\u533a","center":"115.322246,38.949732","level":"district","districts":[]},{"citycode":"0312","adcode":"130635","name":"\u8821\u53bf","center":"115.583701,38.488064","level":"district","districts":[]},{"citycode":"0312","adcode":"130638","name":"\u96c4\u53bf","center":"116.108624,38.994825","level":"district","districts":[]},{"citycode":"0312","adcode":"130632","name":"\u5b89\u65b0\u53bf","center":"115.935688,38.936102","level":"district","districts":[]},{"citycode":"0312","adcode":"130602","name":"\u7ade\u79c0\u533a","center":"115.458671,38.877318","level":"district","districts":[]},{"citycode":"0312","adcode":"130606","name":"\u83b2\u6c60\u533a","center":"115.497153,38.883528","level":"district","districts":[]},{"citycode":"0312","adcode":"130609","name":"\u5f90\u6c34\u533a","center":"115.655772,39.018781","level":"district","districts":[]},{"citycode":"0312","adcode":"130637","name":"\u535a\u91ce\u53bf","center":"115.464295,38.458048","level":"district","districts":[]},{"citycode":"0312","adcode":"130683","name":"\u5b89\u56fd\u5e02","center":"115.327088,38.418985","level":"district","districts":[]},{"citycode":"0312","adcode":"130629","name":"\u5bb9\u57ce\u53bf","center":"115.861635,39.043321","level":"district","districts":[]},{"citycode":"0312","adcode":"130626","name":"\u5b9a\u5174\u53bf","center":"115.808183,39.263219","level":"district","districts":[]},{"citycode":"0312","adcode":"130630","name":"\u6d9e\u6e90\u53bf","center":"114.694416,39.360622","level":"district","districts":[]},{"citycode":"0312","adcode":"130624","name":"\u961c\u5e73\u53bf","center":"114.195118,38.849221","level":"district","districts":[]},{"citycode":"0312","adcode":"130623","name":"\u6d9e\u6c34\u53bf","center":"115.713651,39.394305","level":"district","districts":[]},{"citycode":"0312","adcode":"130681","name":"\u6dbf\u5dde\u5e02","center":"115.97444,39.485684","level":"district","districts":[]},{"citycode":"0312","adcode":"130684","name":"\u9ad8\u7891\u5e97\u5e02","center":"115.873612,39.327233","level":"district","districts":[]}]},{"citycode":"0313","adcode":"130700","name":"\u5f20\u5bb6\u53e3\u5e02","center":"114.885895,40.768931","level":"city","districts":[{"citycode":"0313","adcode":"130723","name":"\u5eb7\u4fdd\u53bf","center":"114.60018,41.853016","level":"district","districts":[]},{"citycode":"0313","adcode":"130732","name":"\u8d64\u57ce\u53bf","center":"115.831256,40.913348","level":"district","districts":[]},{"citycode":"0313","adcode":"130709","name":"\u5d07\u793c\u533a","center":"115.282345,40.974741","level":"district","districts":[]},{"citycode":"0313","adcode":"130706","name":"\u4e0b\u82b1\u56ed\u533a","center":"115.287127,40.502628","level":"district","districts":[]},{"citycode":"0313","adcode":"130703","name":"\u6865\u897f\u533a","center":"114.868604,40.819553","level":"district","districts":[]},{"citycode":"0313","adcode":"130725","name":"\u5c1a\u4e49\u53bf","center":"113.968763,41.076588","level":"district","districts":[]},{"citycode":"0313","adcode":"130724","name":"\u6cbd\u6e90\u53bf","center":"115.688544,41.670497","level":"district","districts":[]},{"citycode":"0313","adcode":"130722","name":"\u5f20\u5317\u53bf","center":"114.719927,41.159039","level":"district","districts":[]},{"citycode":"0313","adcode":"130708","name":"\u4e07\u5168\u533a","center":"114.740584,40.767377","level":"district","districts":[]},{"citycode":"0313","adcode":"130731","name":"\u6dbf\u9e7f\u53bf","center":"115.196835,40.382681","level":"district","districts":[]},{"citycode":"0313","adcode":"130705","name":"\u5ba3\u5316\u533a","center":"115.099515,40.609444","level":"district","districts":[]},{"citycode":"0313","adcode":"130702","name":"\u6865\u4e1c\u533a","center":"114.894114,40.788472","level":"district","districts":[]},{"citycode":"0313","adcode":"130728","name":"\u6000\u5b89\u53bf","center":"114.386488,40.67527","level":"district","districts":[]},{"citycode":"0313","adcode":"130726","name":"\u851a\u53bf","center":"114.589136,39.840154","level":"district","districts":[]},{"citycode":"0313","adcode":"130727","name":"\u9633\u539f\u53bf","center":"114.150267,40.104303","level":"district","districts":[]},{"citycode":"0313","adcode":"130730","name":"\u6000\u6765\u53bf","center":"115.517868,40.415625","level":"district","districts":[]}]},{"citycode":"0319","adcode":"130500","name":"\u90a2\u53f0\u5e02","center":"114.49742,37.060227","level":"city","districts":[{"citycode":"0319","adcode":"130506","name":"\u5357\u548c\u533a","center":"114.683683,37.005626","level":"district","districts":[]},{"citycode":"0319","adcode":"130524","name":"\u67cf\u4e61\u53bf","center":"114.693447,37.48288","level":"district","districts":[]},{"citycode":"0319","adcode":"130530","name":"\u65b0\u6cb3\u53bf","center":"115.251005,37.520891","level":"district","districts":[]},{"citycode":"0319","adcode":"130581","name":"\u5357\u5bab\u5e02","center":"115.40866,37.358907","level":"district","districts":[]},{"citycode":"0319","adcode":"130534","name":"\u6e05\u6cb3\u53bf","center":"115.665081,37.0451","level":"district","districts":[]},{"citycode":"0319","adcode":"130533","name":"\u5a01\u53bf","center":"115.266829,36.975164","level":"district","districts":[]},{"citycode":"0319","adcode":"130535","name":"\u4e34\u897f\u53bf","center":"115.501258,36.871312","level":"district","districts":[]},{"citycode":"0319","adcode":"130582","name":"\u6c99\u6cb3\u5e02","center":"114.503023,36.855548","level":"district","districts":[]},{"citycode":"0319","adcode":"130522","name":"\u4e34\u57ce\u53bf","center":"114.498651,37.444512","level":"district","districts":[]},{"citycode":"0319","adcode":"130529","name":"\u5de8\u9e7f\u53bf","center":"115.037884,37.221293","level":"district","districts":[]},{"citycode":"0319","adcode":"130505","name":"\u4efb\u6cfd\u533a","center":"114.671339,37.121958","level":"district","districts":[]},{"citycode":"0319","adcode":"130525","name":"\u9686\u5c27\u53bf","center":"114.770509,37.351232","level":"district","districts":[]},{"citycode":"0319","adcode":"130523","name":"\u5185\u4e18\u53bf","center":"114.512226,37.287612","level":"district","districts":[]},{"citycode":"0319","adcode":"130528","name":"\u5b81\u664b\u53bf","center":"114.940006,37.624524","level":"district","districts":[]},{"citycode":"0319","adcode":"130532","name":"\u5e73\u4e61\u53bf","center":"115.03008,37.063771","level":"district","districts":[]},{"citycode":"0319","adcode":"130531","name":"\u5e7f\u5b97\u53bf","center":"115.142766,37.074795","level":"district","districts":[]},{"citycode":"0319","adcode":"130503","name":"\u4fe1\u90fd\u533a","center":"114.468229,37.093798","level":"district","districts":[]},{"citycode":"0319","adcode":"130502","name":"\u8944\u90fd\u533a","center":"114.507443,37.071314","level":"district","districts":[]}]},{"citycode":"0318","adcode":"131100","name":"\u8861\u6c34\u5e02","center":"115.668987,37.739367","level":"city","districts":[{"citycode":"0318","adcode":"131102","name":"\u6843\u57ce\u533a","center":"115.675208,37.735152","level":"district","districts":[]},{"citycode":"0318","adcode":"131182","name":"\u6df1\u5dde\u5e02","center":"115.559576,38.001535","level":"district","districts":[]},{"citycode":"0318","adcode":"131126","name":"\u6545\u57ce\u53bf","center":"115.965877,37.347873","level":"district","districts":[]},{"citycode":"0318","adcode":"131123","name":"\u6b66\u5f3a\u53bf","center":"115.982119,38.041447","level":"district","districts":[]},{"citycode":"0318","adcode":"131124","name":"\u9976\u9633\u53bf","center":"115.725898,38.235313","level":"district","districts":[]},{"citycode":"0318","adcode":"131125","name":"\u5b89\u5e73\u53bf","center":"115.518918,38.234769","level":"district","districts":[]},{"citycode":"0318","adcode":"131121","name":"\u67a3\u5f3a\u53bf","center":"115.724365,37.514217","level":"district","districts":[]},{"citycode":"0318","adcode":"131127","name":"\u666f\u53bf","center":"116.270558,37.692831","level":"district","districts":[]},{"citycode":"0318","adcode":"131103","name":"\u5180\u5dde\u533a","center":"115.579392,37.550922","level":"district","districts":[]},{"citycode":"0318","adcode":"131122","name":"\u6b66\u9091\u53bf","center":"115.887498,37.802036","level":"district","districts":[]},{"citycode":"0318","adcode":"131128","name":"\u961c\u57ce\u53bf","center":"116.175424,37.862984","level":"district","districts":[]}]}]},{"citycode":"1852","adcode":"810000","name":"\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a","center":"114.170714,22.278354","level":"province","districts":[{"citycode":"1852","adcode":"810013","name":"\u5317\u533a","center":"114.1473639,22.49610389","level":"district","districts":[]},{"citycode":"1852","adcode":"810014","name":"\u5927\u57d4\u533a","center":"114.1717431,22.44565306","level":"district","districts":[]},{"citycode":"1852","adcode":"810015","name":"\u897f\u8d21\u533a","center":"114.264645,22.31421306","level":"district","districts":[]},{"citycode":"1852","adcode":"810016","name":"\u6c99\u7530\u533a","center":"114.1953653,22.37953167","level":"district","districts":[]},{"citycode":"1852","adcode":"810011","name":"\u5c6f\u95e8\u533a","center":"113.9765742,22.39384417","level":"district","districts":[]},{"citycode":"1852","adcode":"810008","name":"\u9ec4\u5927\u4ed9\u533a","center":"114.2038856,22.33632056","level":"district","districts":[]},{"citycode":"1852","adcode":"810007","name":"\u4e5d\u9f99\u57ce\u533a","center":"114.1928467,22.31251","level":"district","districts":[]},{"citycode":"1852","adcode":"810006","name":"\u6df1\u6c34\u57d7\u533a","center":"114.1632417,22.33385417","level":"district","districts":[]},{"citycode":"1852","adcode":"810009","name":"\u89c2\u5858\u533a","center":"114.2140542,22.32083778","level":"district","districts":[]},{"citycode":"1852","adcode":"810005","name":"\u6cb9\u5c16\u65fa\u533a","center":"114.1733317,22.31170389","level":"district","districts":[]},{"citycode":"1852","adcode":"810003","name":"\u4e1c\u533a","center":"114.2260031,22.27969306","level":"district","districts":[]},{"citycode":"1852","adcode":"810001","name":"\u4e2d\u897f\u533a","center":"114.1543731,22.28198083","level":"district","districts":[]},{"citycode":"1852","adcode":"810018","name":"\u79bb\u5c9b\u533a","center":"113.94612,22.28640778","level":"district","districts":[]},{"citycode":"1852","adcode":"810002","name":"\u6e7e\u4ed4\u533a","center":"114.1829153,22.27638889","level":"district","districts":[]},{"citycode":"1852","adcode":"810004","name":"\u5357\u533a","center":"114.1600117,22.24589667","level":"district","districts":[]},{"citycode":"1852","adcode":"810012","name":"\u5143\u6717\u533a","center":"114.0324381,22.44142833","level":"district","districts":[]},{"citycode":"1852","adcode":"810010","name":"\u8343\u6e7e\u533a","center":"114.1210792,22.36830667","level":"district","districts":[]},{"citycode":"1852","adcode":"810017","name":"\u8475\u9752\u533a","center":"114.1393194,22.36387667","level":"district","districts":[]}]},{"citycode":"1886","adcode":"710000","name":"\u53f0\u6e7e\u7701","center":"121.509062,25.044332","level":"province","districts":[]},{"citycode":"1853","adcode":"820000","name":"\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a","center":"113.543076,22.186927","level":"province","districts":[{"citycode":"1853","adcode":"820003","name":"\u671b\u5fb7\u5802\u533a","center":"113.5501828,22.19372083","level":"district","districts":[]},{"citycode":"1853","adcode":"820006","name":"\u5609\u6a21\u5802\u533a","center":"113.5587044,22.15375944","level":"district","districts":[]},{"citycode":"1853","adcode":"820002","name":"\u82b1\u738b\u5802\u533a","center":"113.5489608,22.1992075","level":"district","districts":[]},{"citycode":"1853","adcode":"820008","name":"\u5723\u65b9\u6d4e\u5404\u5802\u533a","center":"113.5599542,22.12348639","level":"district","districts":[]},{"citycode":"1853","adcode":"820007","name":"\u8def\u6c39\u586b\u6d77\u533a","center":"113.5695992,22.13663","level":"district","districts":[]},{"citycode":"1853","adcode":"820004","name":"\u5927\u5802\u533a","center":"113.5536475,22.18853944","level":"district","districts":[]},{"citycode":"1853","adcode":"820001","name":"\u82b1\u5730\u739b\u5802\u533a","center":"113.5528956,22.20787","level":"district","districts":[]},{"citycode":"1853","adcode":"820005","name":"\u98ce\u987a\u5802\u533a","center":"113.5419278,22.18736806","level":"district","districts":[]}]},{"citycode":[],"adcode":"620000","name":"\u7518\u8083\u7701","center":"103.826777,36.060634","level":"province","districts":[{"citycode":"1937","adcode":"620200","name":"\u5609\u5cea\u5173\u5e02","center":"98.2882,39.77325","level":"city","districts":[{"citycode":"1937","adcode":"620200","name":"\u5cea\u6cc9\u9547","center":"98.320410,39.958254","level":"street","districts":[]},{"citycode":"1937","adcode":"620200","name":"\u65b0\u57ce\u9547","center":"98.362748,39.958127","level":"street","districts":[]},{"citycode":"1937","adcode":"620200","name":"\u6587\u6b8a\u9547","center":"98.157893,39.696861","level":"street","districts":[]},{"citycode":"1937","adcode":"620200","name":"\u96c4\u5173\u8857\u9053","center":"98.239097,39.892952","level":"street","districts":[]},{"citycode":"1937","adcode":"620200","name":"\u94a2\u57ce\u8857\u9053","center":"98.292606,39.755770","level":"street","districts":[]}]},{"citycode":"0937","adcode":"620900","name":"\u9152\u6cc9\u5e02","center":"98.49432,39.733416","level":"city","districts":[{"citycode":"0937","adcode":"620982","name":"\u6566\u714c\u5e02","center":"94.66201,40.142141","level":"district","districts":[]},{"citycode":"0937","adcode":"620923","name":"\u8083\u5317\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","center":"94.876533,39.512158","level":"district","districts":[]},{"citycode":"0937","adcode":"620981","name":"\u7389\u95e8\u5e02","center":"97.045617,40.292344","level":"district","districts":[]},{"citycode":"0937","adcode":"620902","name":"\u8083\u5dde\u533a","center":"98.507834,39.74511","level":"district","districts":[]},{"citycode":"0937","adcode":"620921","name":"\u91d1\u5854\u53bf","center":"98.901523,39.984146","level":"district","districts":[]},{"citycode":"0937","adcode":"620922","name":"\u74dc\u5dde\u53bf","center":"95.782255,40.520457","level":"district","districts":[]},{"citycode":"0937","adcode":"620924","name":"\u963f\u514b\u585e\u54c8\u8428\u514b\u65cf\u81ea\u6cbb\u53bf","center":"94.340202,39.633944","level":"district","districts":[]}]},{"citycode":"0931","adcode":"620100","name":"\u5170\u5dde\u5e02","center":"103.834228,36.060798","level":"city","districts":[{"citycode":"0931","adcode":"620111","name":"\u7ea2\u53e4\u533a","center":"102.859338,36.345768","level":"district","districts":[]},{"citycode":"0931","adcode":"620105","name":"\u5b89\u5b81\u533a","center":"103.718953,36.104493","level":"district","districts":[]},{"citycode":"0931","adcode":"620121","name":"\u6c38\u767b\u53bf","center":"103.260273,36.736457","level":"district","districts":[]},{"citycode":"0931","adcode":"620122","name":"\u768b\u5170\u53bf","center":"103.947345,36.332434","level":"district","districts":[]},{"citycode":"0931","adcode":"620104","name":"\u897f\u56fa\u533a","center":"103.627966,36.08845","level":"district","districts":[]},{"citycode":"0931","adcode":"620103","name":"\u4e03\u91cc\u6cb3\u533a","center":"103.786261,36.066249","level":"district","districts":[]},{"citycode":"0931","adcode":"620123","name":"\u6986\u4e2d\u53bf","center":"104.112541,35.843354","level":"district","districts":[]},{"citycode":"0931","adcode":"620102","name":"\u57ce\u5173\u533a","center":"103.825315,36.056948","level":"district","districts":[]}]},{"citycode":"0933","adcode":"620800","name":"\u5e73\u51c9\u5e02","center":"106.664913,35.542417","level":"city","districts":[{"citycode":"0933","adcode":"620802","name":"\u5d06\u5cd2\u533a","center":"106.67489,35.542437","level":"district","districts":[]},{"citycode":"0933","adcode":"620825","name":"\u5e84\u6d6a\u53bf","center":"106.036201,35.20266","level":"district","districts":[]},{"citycode":"0933","adcode":"620826","name":"\u9759\u5b81\u53bf","center":"105.732165,35.522035","level":"district","districts":[]},{"citycode":"0933","adcode":"620881","name":"\u534e\u4ead\u5e02","center":"106.628899,35.207695","level":"district","districts":[]},{"citycode":"0933","adcode":"620822","name":"\u7075\u53f0\u53bf","center":"107.595874,35.070027","level":"district","districts":[]},{"citycode":"0933","adcode":"620823","name":"\u5d07\u4fe1\u53bf","center":"107.025762,35.305648","level":"district","districts":[]},{"citycode":"0933","adcode":"620821","name":"\u6cfe\u5ddd\u53bf","center":"107.367608,35.332992","level":"district","districts":[]}]},{"citycode":"0935","adcode":"620300","name":"\u91d1\u660c\u5e02","center":"102.187972,38.521468","level":"city","districts":[{"citycode":"0935","adcode":"620321","name":"\u6c38\u660c\u53bf","center":"101.984642,38.243534","level":"district","districts":[]},{"citycode":"0935","adcode":"620302","name":"\u91d1\u5ddd\u533a","center":"102.1939,38.520373","level":"district","districts":[]}]},{"citycode":"0938","adcode":"620500","name":"\u5929\u6c34\u5e02","center":"105.724828,34.581514","level":"city","districts":[{"citycode":"0938","adcode":"620521","name":"\u6e05\u6c34\u53bf","center":"106.137318,34.749906","level":"district","districts":[]},{"citycode":"0938","adcode":"620503","name":"\u9ea6\u79ef\u533a","center":"105.889452,34.571143","level":"district","districts":[]},{"citycode":"0938","adcode":"620502","name":"\u79e6\u5dde\u533a","center":"105.724914,34.581187","level":"district","districts":[]},{"citycode":"0938","adcode":"620524","name":"\u6b66\u5c71\u53bf","center":"104.89121,34.72183","level":"district","districts":[]},{"citycode":"0938","adcode":"620523","name":"\u7518\u8c37\u53bf","center":"105.340789,34.745447","level":"district","districts":[]},{"citycode":"0938","adcode":"620525","name":"\u5f20\u5bb6\u5ddd\u56de\u65cf\u81ea\u6cbb\u53bf","center":"106.20513,34.988676","level":"district","districts":[]},{"citycode":"0938","adcode":"620522","name":"\u79e6\u5b89\u53bf","center":"105.675799,34.859094","level":"district","districts":[]}]},{"citycode":"0943","adcode":"620400","name":"\u767d\u94f6\u5e02","center":"104.138872,36.545123","level":"city","districts":[{"citycode":"0943","adcode":"620421","name":"\u9756\u8fdc\u53bf","center":"104.676202,36.571736","level":"district","districts":[]},{"citycode":"0943","adcode":"620423","name":"\u666f\u6cf0\u53bf","center":"104.063125,37.18351","level":"district","districts":[]},{"citycode":"0943","adcode":"620402","name":"\u767d\u94f6\u533a","center":"104.14956,36.53469","level":"district","districts":[]},{"citycode":"0943","adcode":"620403","name":"\u5e73\u5ddd\u533a","center":"104.825275,36.728494","level":"district","districts":[]},{"citycode":"0943","adcode":"620422","name":"\u4f1a\u5b81\u53bf","center":"105.052883,35.693241","level":"district","districts":[]}]},{"citycode":"1935","adcode":"620600","name":"\u6b66\u5a01\u5e02","center":"102.637821,37.92898","level":"city","districts":[{"citycode":"1935","adcode":"620602","name":"\u51c9\u5dde\u533a","center":"102.641959,37.928217","level":"district","districts":[]},{"citycode":"1935","adcode":"620622","name":"\u53e4\u6d6a\u53bf","center":"102.897542,37.470882","level":"district","districts":[]},{"citycode":"1935","adcode":"620621","name":"\u6c11\u52e4\u53bf","center":"103.093671,38.624293","level":"district","districts":[]},{"citycode":"1935","adcode":"620623","name":"\u5929\u795d\u85cf\u65cf\u81ea\u6cbb\u53bf","center":"103.142416,36.971978","level":"district","districts":[]}]},{"citycode":"0936","adcode":"620700","name":"\u5f20\u6396\u5e02","center":"100.449858,38.924766","level":"city","districts":[{"citycode":"0936","adcode":"620721","name":"\u8083\u5357\u88d5\u56fa\u65cf\u81ea\u6cbb\u53bf","center":"99.627762,38.839221","level":"district","districts":[]},{"citycode":"0936","adcode":"620724","name":"\u9ad8\u53f0\u53bf","center":"99.819265,39.378294","level":"district","districts":[]},{"citycode":"0936","adcode":"620723","name":"\u4e34\u6cfd\u53bf","center":"100.164333,39.15224","level":"district","districts":[]},{"citycode":"0936","adcode":"620702","name":"\u7518\u5dde\u533a","center":"100.415324,38.944315","level":"district","districts":[]},{"citycode":"0936","adcode":"620722","name":"\u6c11\u4e50\u53bf","center":"100.812047,38.430318","level":"district","districts":[]},{"citycode":"0936","adcode":"620725","name":"\u5c71\u4e39\u53bf","center":"101.088611,38.7846","level":"district","districts":[]}]},{"citycode":"0932","adcode":"621100","name":"\u5b9a\u897f\u5e02","center":"104.592342,35.607947","level":"city","districts":[{"citycode":"0932","adcode":"621123","name":"\u6e2d\u6e90\u53bf","center":"104.215092,35.137028","level":"district","districts":[]},{"citycode":"0932","adcode":"621124","name":"\u4e34\u6d2e\u53bf","center":"103.859446,35.394993","level":"district","districts":[]},{"citycode":"0932","adcode":"621126","name":"\u5cb7\u53bf","center":"104.036731,34.43833","level":"district","districts":[]},{"citycode":"0932","adcode":"621125","name":"\u6f33\u53bf","center":"104.471722,34.84854","level":"district","districts":[]},{"citycode":"0932","adcode":"621122","name":"\u9647\u897f\u53bf","center":"104.634928,35.003899","level":"district","districts":[]},{"citycode":"0932","adcode":"621102","name":"\u5b89\u5b9a\u533a","center":"104.610647,35.580918","level":"district","districts":[]},{"citycode":"0932","adcode":"621121","name":"\u901a\u6e2d\u53bf","center":"105.242312,35.211311","level":"district","districts":[]}]},{"citycode":"0941","adcode":"623000","name":"\u7518\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"102.911736,34.983266","level":"city","districts":[{"citycode":"0941","adcode":"623021","name":"\u4e34\u6f6d\u53bf","center":"103.353665,34.693009","level":"district","districts":[]},{"citycode":"0941","adcode":"623022","name":"\u5353\u5c3c\u53bf","center":"103.506849,34.589476","level":"district","districts":[]},{"citycode":"0941","adcode":"623025","name":"\u739b\u66f2\u53bf","center":"102.072608,33.998145","level":"district","districts":[]},{"citycode":"0941","adcode":"623027","name":"\u590f\u6cb3\u53bf","center":"102.548303,35.203857","level":"district","districts":[]},{"citycode":"0941","adcode":"623026","name":"\u788c\u66f2\u53bf","center":"102.487512,34.591084","level":"district","districts":[]},{"citycode":"0941","adcode":"623001","name":"\u5408\u4f5c\u5e02","center":"102.910305,35.000228","level":"district","districts":[]},{"citycode":"0941","adcode":"623024","name":"\u8fed\u90e8\u53bf","center":"103.221735,34.055888","level":"district","districts":[]},{"citycode":"0941","adcode":"623023","name":"\u821f\u66f2\u53bf","center":"104.251543,33.793695","level":"district","districts":[]}]},{"citycode":"2935","adcode":"621200","name":"\u9647\u5357\u5e02","center":"104.960296,33.370174","level":"city","districts":[{"citycode":"2935","adcode":"621221","name":"\u6210\u53bf","center":"105.729569,33.740547","level":"district","districts":[]},{"citycode":"2935","adcode":"621227","name":"\u5fbd\u53bf","center":"106.087156,33.769927","level":"district","districts":[]},{"citycode":"2935","adcode":"621228","name":"\u4e24\u5f53\u53bf","center":"106.304973,33.908952","level":"district","districts":[]},{"citycode":"2935","adcode":"621222","name":"\u6587\u53bf","center":"104.6835,32.944031","level":"district","districts":[]},{"citycode":"2935","adcode":"621224","name":"\u5eb7\u53bf","center":"105.608609,33.329212","level":"district","districts":[]},{"citycode":"2935","adcode":"621202","name":"\u6b66\u90fd\u533a","center":"104.921861,33.400685","level":"district","districts":[]},{"citycode":"2935","adcode":"621225","name":"\u897f\u548c\u53bf","center":"105.298756,34.014215","level":"district","districts":[]},{"citycode":"2935","adcode":"621226","name":"\u793c\u53bf","center":"105.17864,34.189345","level":"district","districts":[]},{"citycode":"2935","adcode":"621223","name":"\u5b95\u660c\u53bf","center":"104.393385,34.047261","level":"district","districts":[]}]},{"citycode":"0934","adcode":"621000","name":"\u5e86\u9633\u5e02","center":"107.643433,35.709459","level":"city","districts":[{"citycode":"0934","adcode":"621027","name":"\u9547\u539f\u53bf","center":"107.200888,35.677705","level":"district","districts":[]},{"citycode":"0934","adcode":"621022","name":"\u73af\u53bf","center":"107.308788,36.568566","level":"district","districts":[]},{"citycode":"0934","adcode":"621021","name":"\u5e86\u57ce\u53bf","center":"107.881706,36.016125","level":"district","districts":[]},{"citycode":"0934","adcode":"621023","name":"\u534e\u6c60\u53bf","center":"107.98972,36.461474","level":"district","districts":[]},{"citycode":"0934","adcode":"621024","name":"\u5408\u6c34\u53bf","center":"108.021859,35.833908","level":"district","districts":[]},{"citycode":"0934","adcode":"621002","name":"\u897f\u5cf0\u533a","center":"107.650563,35.730318","level":"district","districts":[]},{"citycode":"0934","adcode":"621026","name":"\u5b81\u53bf","center":"107.913463,35.509252","level":"district","districts":[]},{"citycode":"0934","adcode":"621025","name":"\u6b63\u5b81\u53bf","center":"108.359964,35.492158","level":"district","districts":[]}]},{"citycode":"0930","adcode":"622900","name":"\u4e34\u590f\u56de\u65cf\u81ea\u6cbb\u5dde","center":"103.210386,35.601792","level":"city","districts":[{"citycode":"0930","adcode":"622927","name":"\u79ef\u77f3\u5c71\u4fdd\u5b89\u65cf\u4e1c\u4e61\u65cf\u6492\u62c9\u65cf\u81ea\u6cbb\u53bf","center":"102.875939,35.717697","level":"district","districts":[]},{"citycode":"0930","adcode":"622923","name":"\u6c38\u9756\u53bf","center":"103.285853,35.958306","level":"district","districts":[]},{"citycode":"0930","adcode":"622901","name":"\u4e34\u590f\u5e02","center":"103.24222,35.604682","level":"district","districts":[]},{"citycode":"0930","adcode":"622926","name":"\u4e1c\u4e61\u65cf\u81ea\u6cbb\u53bf","center":"103.388122,35.664409","level":"district","districts":[]},{"citycode":"0930","adcode":"622924","name":"\u5e7f\u6cb3\u53bf","center":"103.575582,35.488248","level":"district","districts":[]},{"citycode":"0930","adcode":"622921","name":"\u4e34\u590f\u53bf","center":"103.04068,35.478726","level":"district","districts":[]},{"citycode":"0930","adcode":"622925","name":"\u548c\u653f\u53bf","center":"103.350996,35.424602","level":"district","districts":[]},{"citycode":"0930","adcode":"622922","name":"\u5eb7\u4e50\u53bf","center":"103.708507,35.370296","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"510000","name":"\u56db\u5ddd\u7701","center":"104.076452,30.651696","level":"province","districts":[{"citycode":"0839","adcode":"510800","name":"\u5e7f\u5143\u5e02","center":"105.844004,32.435774","level":"city","districts":[{"citycode":"0839","adcode":"510812","name":"\u671d\u5929\u533a","center":"105.882848,32.651352","level":"district","districts":[]},{"citycode":"0839","adcode":"510824","name":"\u82cd\u6eaa\u53bf","center":"105.934756,31.731709","level":"district","districts":[]},{"citycode":"0839","adcode":"510811","name":"\u662d\u5316\u533a","center":"105.957612,32.333173","level":"district","districts":[]},{"citycode":"0839","adcode":"510823","name":"\u5251\u9601\u53bf","center":"105.524699,32.288681","level":"district","districts":[]},{"citycode":"0839","adcode":"510822","name":"\u9752\u5ddd\u53bf","center":"105.238498,32.575821","level":"district","districts":[]},{"citycode":"0839","adcode":"510802","name":"\u5229\u5dde\u533a","center":"105.845307,32.433756","level":"district","districts":[]},{"citycode":"0839","adcode":"510821","name":"\u65fa\u82cd\u53bf","center":"106.290124,32.229074","level":"district","districts":[]}]},{"citycode":"0817","adcode":"511300","name":"\u5357\u5145\u5e02","center":"106.110565,30.837235","level":"city","districts":[{"citycode":"0817","adcode":"511321","name":"\u5357\u90e8\u53bf","center":"106.036349,31.348255","level":"district","districts":[]},{"citycode":"0817","adcode":"511322","name":"\u8425\u5c71\u53bf","center":"106.565524,31.077057","level":"district","districts":[]},{"citycode":"0817","adcode":"511304","name":"\u5609\u9675\u533a","center":"106.07208,30.758831","level":"district","districts":[]},{"citycode":"0817","adcode":"511325","name":"\u897f\u5145\u53bf","center":"105.900894,30.995546","level":"district","districts":[]},{"citycode":"0817","adcode":"511302","name":"\u987a\u5e86\u533a","center":"106.092327,30.797366","level":"district","districts":[]},{"citycode":"0817","adcode":"511381","name":"\u9606\u4e2d\u5e02","center":"106.005046,31.558356","level":"district","districts":[]},{"citycode":"0817","adcode":"511303","name":"\u9ad8\u576a\u533a","center":"106.118931,30.781284","level":"district","districts":[]},{"citycode":"0817","adcode":"511323","name":"\u84ec\u5b89\u53bf","center":"106.412156,31.028537","level":"district","districts":[]},{"citycode":"0817","adcode":"511324","name":"\u4eea\u9647\u53bf","center":"106.303082,31.271693","level":"district","districts":[]}]},{"citycode":"0827","adcode":"511900","name":"\u5df4\u4e2d\u5e02","center":"106.747548,31.867853","level":"city","districts":[{"citycode":"0827","adcode":"511902","name":"\u5df4\u5dde\u533a","center":"106.76887,31.851458","level":"district","districts":[]},{"citycode":"0827","adcode":"511922","name":"\u5357\u6c5f\u53bf","center":"106.828697,32.346589","level":"district","districts":[]},{"citycode":"0827","adcode":"511923","name":"\u5e73\u660c\u53bf","center":"107.103613,31.560436","level":"district","districts":[]},{"citycode":"0827","adcode":"511921","name":"\u901a\u6c5f\u53bf","center":"107.245033,31.911705","level":"district","districts":[]},{"citycode":"0827","adcode":"511903","name":"\u6069\u9633\u533a","center":"106.634651,31.796476","level":"district","districts":[]}]},{"citycode":"0838","adcode":"510600","name":"\u5fb7\u9633\u5e02","center":"104.397795,31.127449","level":"city","districts":[{"citycode":"0838","adcode":"510623","name":"\u4e2d\u6c5f\u53bf","center":"104.678601,31.03327","level":"district","districts":[]},{"citycode":"0838","adcode":"510682","name":"\u4ec0\u90a1\u5e02","center":"104.167345,31.12655","level":"district","districts":[]},{"citycode":"0838","adcode":"510604","name":"\u7f57\u6c5f\u533a","center":"104.510457,31.317388","level":"district","districts":[]},{"citycode":"0838","adcode":"510683","name":"\u7ef5\u7af9\u5e02","center":"104.220679,31.339251","level":"district","districts":[]},{"citycode":"0838","adcode":"510603","name":"\u65cc\u9633\u533a","center":"104.417061,31.143335","level":"district","districts":[]},{"citycode":"0838","adcode":"510681","name":"\u5e7f\u6c49\u5e02","center":"104.282204,30.977264","level":"district","districts":[]}]},{"citycode":"0816","adcode":"510700","name":"\u7ef5\u9633\u5e02","center":"104.679127,31.467673","level":"city","districts":[{"citycode":"0816","adcode":"510781","name":"\u6c5f\u6cb9\u5e02","center":"104.74564,31.778572","level":"district","districts":[]},{"citycode":"0816","adcode":"510725","name":"\u6893\u6f7c\u53bf","center":"105.170746,31.642635","level":"district","districts":[]},{"citycode":"0816","adcode":"510704","name":"\u6e38\u4ed9\u533a","center":"104.766136,31.473788","level":"district","districts":[]},{"citycode":"0816","adcode":"510722","name":"\u4e09\u53f0\u53bf","center":"105.093722,31.095826","level":"district","districts":[]},{"citycode":"0816","adcode":"510703","name":"\u6daa\u57ce\u533a","center":"104.756917,31.455192","level":"district","districts":[]},{"citycode":"0816","adcode":"510727","name":"\u5e73\u6b66\u53bf","center":"104.555481,32.409684","level":"district","districts":[]},{"citycode":"0816","adcode":"510726","name":"\u5317\u5ddd\u7f8c\u65cf\u81ea\u6cbb\u53bf","center":"104.468163,31.617192","level":"district","districts":[]},{"citycode":"0816","adcode":"510723","name":"\u76d0\u4ead\u53bf","center":"105.389453,31.208362","level":"district","districts":[]},{"citycode":"0816","adcode":"510705","name":"\u5b89\u5dde\u533a","center":"104.567543,31.534319","level":"district","districts":[]}]},{"citycode":"028","adcode":"510100","name":"\u6210\u90fd\u5e02","center":"104.066301,30.572961","level":"city","districts":[{"citycode":"028","adcode":"510182","name":"\u5f6d\u5dde\u5e02","center":"103.957706,30.990463","level":"district","districts":[]},{"citycode":"028","adcode":"510185","name":"\u7b80\u9633\u5e02","center":"104.547644,30.410937","level":"district","districts":[]},{"citycode":"028","adcode":"510131","name":"\u84b2\u6c5f\u53bf","center":"103.506478,30.197558","level":"district","districts":[]},{"citycode":"028","adcode":"510116","name":"\u53cc\u6d41\u533a","center":"103.92342,30.574884","level":"district","districts":[]},{"citycode":"028","adcode":"510105","name":"\u9752\u7f8a\u533a","center":"104.062415,30.674583","level":"district","districts":[]},{"citycode":"028","adcode":"510106","name":"\u91d1\u725b\u533a","center":"104.052236,30.691359","level":"district","districts":[]},{"citycode":"028","adcode":"510129","name":"\u5927\u9091\u53bf","center":"103.51226,30.573004","level":"district","districts":[]},{"citycode":"028","adcode":"510115","name":"\u6e29\u6c5f\u533a","center":"103.856423,30.681956","level":"district","districts":[]},{"citycode":"028","adcode":"510117","name":"\u90eb\u90fd\u533a","center":"103.900486,30.795113","level":"district","districts":[]},{"citycode":"028","adcode":"510184","name":"\u5d07\u5dde\u5e02","center":"103.673025,30.630183","level":"district","districts":[]},{"citycode":"028","adcode":"510104","name":"\u9526\u6c5f\u533a","center":"104.117262,30.598726","level":"district","districts":[]},{"citycode":"028","adcode":"510113","name":"\u9752\u767d\u6c5f\u533a","center":"104.251342,30.8786","level":"district","districts":[]},{"citycode":"028","adcode":"510121","name":"\u91d1\u5802\u53bf","center":"104.411871,30.86203","level":"district","districts":[]},{"citycode":"028","adcode":"510118","name":"\u65b0\u6d25\u533a","center":"103.810906,30.410404","level":"district","districts":[]},{"citycode":"028","adcode":"510183","name":"\u909b\u5d03\u5e02","center":"103.464176,30.41029","level":"district","districts":[]},{"citycode":"028","adcode":"510107","name":"\u6b66\u4faf\u533a","center":"104.043246,30.641849","level":"district","districts":[]},{"citycode":"028","adcode":"510181","name":"\u90fd\u6c5f\u5830\u5e02","center":"103.647193,30.988763","level":"district","districts":[]},{"citycode":"028","adcode":"510114","name":"\u65b0\u90fd\u533a","center":"104.158593,30.823568","level":"district","districts":[]},{"citycode":"028","adcode":"510112","name":"\u9f99\u6cc9\u9a7f\u533a","center":"104.27536,30.556808","level":"district","districts":[]},{"citycode":"028","adcode":"510108","name":"\u6210\u534e\u533a","center":"104.101452,30.659966","level":"district","districts":[]}]},{"citycode":"0826","adcode":"511600","name":"\u5e7f\u5b89\u5e02","center":"106.632647,30.456354","level":"city","districts":[{"citycode":"0826","adcode":"511623","name":"\u90bb\u6c34\u53bf","center":"106.930242,30.334911","level":"district","districts":[]},{"citycode":"0826","adcode":"511602","name":"\u5e7f\u5b89\u533a","center":"106.641628,30.473943","level":"district","districts":[]},{"citycode":"0826","adcode":"511621","name":"\u5cb3\u6c60\u53bf","center":"106.440056,30.538656","level":"district","districts":[]},{"citycode":"0826","adcode":"511622","name":"\u6b66\u80dc\u53bf","center":"106.295945,30.349493","level":"district","districts":[]},{"citycode":"0826","adcode":"511603","name":"\u524d\u950b\u533a","center":"106.886039,30.496059","level":"district","districts":[]},{"citycode":"0826","adcode":"511681","name":"\u534e\u84e5\u5e02","center":"106.783151,30.390439","level":"district","districts":[]}]},{"citycode":"0818","adcode":"511700","name":"\u8fbe\u5dde\u5e02","center":"107.46778,31.209278","level":"city","districts":[{"citycode":"0818","adcode":"511724","name":"\u5927\u7af9\u53bf","center":"107.204702,30.736222","level":"district","districts":[]},{"citycode":"0818","adcode":"511725","name":"\u6e20\u53bf","center":"106.973114,30.836504","level":"district","districts":[]},{"citycode":"0818","adcode":"511703","name":"\u8fbe\u5ddd\u533a","center":"107.511736,31.196573","level":"district","districts":[]},{"citycode":"0818","adcode":"511702","name":"\u901a\u5ddd\u533a","center":"107.505053,31.214665","level":"district","districts":[]},{"citycode":"0818","adcode":"511781","name":"\u4e07\u6e90\u5e02","center":"108.034393,32.081698","level":"district","districts":[]},{"citycode":"0818","adcode":"511723","name":"\u5f00\u6c5f\u53bf","center":"107.868609,31.082945","level":"district","districts":[]},{"citycode":"0818","adcode":"511722","name":"\u5ba3\u6c49\u53bf","center":"107.727198,31.353845","level":"district","districts":[]}]},{"citycode":"0825","adcode":"510900","name":"\u9042\u5b81\u5e02","center":"105.592602,30.53268","level":"city","districts":[{"citycode":"0825","adcode":"510923","name":"\u5927\u82f1\u53bf","center":"105.236852,30.594472","level":"district","districts":[]},{"citycode":"0825","adcode":"510981","name":"\u5c04\u6d2a\u5e02","center":"105.388366,30.871079","level":"district","districts":[]},{"citycode":"0825","adcode":"510921","name":"\u84ec\u6eaa\u53bf","center":"105.707498,30.75763","level":"district","districts":[]},{"citycode":"0825","adcode":"510904","name":"\u5b89\u5c45\u533a","center":"105.45636,30.355091","level":"district","districts":[]},{"citycode":"0825","adcode":"510903","name":"\u8239\u5c71\u533a","center":"105.568359,30.526201","level":"district","districts":[]}]},{"citycode":"0832","adcode":"512000","name":"\u8d44\u9633\u5e02","center":"104.627265,30.129236","level":"city","districts":[{"citycode":"0832","adcode":"512022","name":"\u4e50\u81f3\u53bf","center":"105.019823,30.275418","level":"district","districts":[]},{"citycode":"0832","adcode":"512021","name":"\u5b89\u5cb3\u53bf","center":"105.35551,30.103623","level":"district","districts":[]},{"citycode":"0832","adcode":"512002","name":"\u96c1\u6c5f\u533a","center":"104.676814,30.107778","level":"district","districts":[]}]},{"citycode":"1833","adcode":"511400","name":"\u7709\u5c71\u5e02","center":"103.848417,30.077113","level":"city","districts":[{"citycode":"1833","adcode":"511421","name":"\u4ec1\u5bff\u53bf","center":"104.133931,29.995638","level":"district","districts":[]},{"citycode":"1833","adcode":"511424","name":"\u4e39\u68f1\u53bf","center":"103.512859,30.014398","level":"district","districts":[]},{"citycode":"1833","adcode":"511423","name":"\u6d2a\u96c5\u53bf","center":"103.365035,29.915828","level":"district","districts":[]},{"citycode":"1833","adcode":"511403","name":"\u5f6d\u5c71\u533a","center":"103.872852,30.193278","level":"district","districts":[]},{"citycode":"1833","adcode":"511425","name":"\u9752\u795e\u53bf","center":"103.846596,29.831302","level":"district","districts":[]},{"citycode":"1833","adcode":"511402","name":"\u4e1c\u5761\u533a","center":"103.831868,30.041956","level":"district","districts":[]}]},{"citycode":"1832","adcode":"511000","name":"\u5185\u6c5f\u5e02","center":"105.057992,29.58021","level":"city","districts":[{"citycode":"1832","adcode":"511024","name":"\u5a01\u8fdc\u53bf","center":"104.669032,29.527456","level":"district","districts":[]},{"citycode":"1832","adcode":"511025","name":"\u8d44\u4e2d\u53bf","center":"104.851874,29.763419","level":"district","districts":[]},{"citycode":"1832","adcode":"511011","name":"\u4e1c\u5174\u533a","center":"105.076107,29.593528","level":"district","districts":[]},{"citycode":"1832","adcode":"511083","name":"\u9686\u660c\u5e02","center":"105.287507,29.339408","level":"district","districts":[]},{"citycode":"1832","adcode":"511002","name":"\u5e02\u4e2d\u533a","center":"105.06759,29.587091","level":"district","districts":[]}]},{"citycode":"0833","adcode":"511100","name":"\u4e50\u5c71\u5e02","center":"103.766085,29.552275","level":"city","districts":[{"citycode":"0833","adcode":"511126","name":"\u5939\u6c5f\u53bf","center":"103.571313,29.738143","level":"district","districts":[]},{"citycode":"0833","adcode":"511111","name":"\u6c99\u6e7e\u533a","center":"103.550118,29.412404","level":"district","districts":[]},{"citycode":"0833","adcode":"511112","name":"\u4e94\u901a\u6865\u533a","center":"103.818024,29.406837","level":"district","districts":[]},{"citycode":"0833","adcode":"511124","name":"\u4e95\u7814\u53bf","center":"104.06968,29.65165","level":"district","districts":[]},{"citycode":"0833","adcode":"511113","name":"\u91d1\u53e3\u6cb3\u533a","center":"103.078597,29.244345","level":"district","districts":[]},{"citycode":"0833","adcode":"511123","name":"\u728d\u4e3a\u53bf","center":"103.949231,29.208118","level":"district","districts":[]},{"citycode":"0833","adcode":"511132","name":"\u5ce8\u8fb9\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"103.262048,29.230426","level":"district","districts":[]},{"citycode":"0833","adcode":"511129","name":"\u6c90\u5ddd\u53bf","center":"103.902691,28.956394","level":"district","districts":[]},{"citycode":"0833","adcode":"511133","name":"\u9a6c\u8fb9\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"103.546347,28.83552","level":"district","districts":[]},{"citycode":"0833","adcode":"511102","name":"\u5e02\u4e2d\u533a","center":"103.761329,29.555374","level":"district","districts":[]},{"citycode":"0833","adcode":"511181","name":"\u5ce8\u7709\u5c71\u5e02","center":"103.484557,29.601189","level":"district","districts":[]}]},{"citycode":"0813","adcode":"510300","name":"\u81ea\u8d21\u5e02","center":"104.779307,29.33924","level":"city","districts":[{"citycode":"0813","adcode":"510321","name":"\u8363\u53bf","center":"104.417438,29.445461","level":"district","districts":[]},{"citycode":"0813","adcode":"510322","name":"\u5bcc\u987a\u53bf","center":"104.975193,29.181779","level":"district","districts":[]},{"citycode":"0813","adcode":"510304","name":"\u5927\u5b89\u533a","center":"104.773982,29.36371","level":"district","districts":[]},{"citycode":"0813","adcode":"510311","name":"\u6cbf\u6ee9\u533a","center":"104.873826,29.27208","level":"district","districts":[]},{"citycode":"0813","adcode":"510302","name":"\u81ea\u6d41\u4e95\u533a","center":"104.777182,29.337295","level":"district","districts":[]},{"citycode":"0813","adcode":"510303","name":"\u8d21\u4e95\u533a","center":"104.704179,29.333764","level":"district","districts":[]}]},{"citycode":"0830","adcode":"510500","name":"\u6cf8\u5dde\u5e02","center":"105.441866,28.87098","level":"city","districts":[{"citycode":"0830","adcode":"510504","name":"\u9f99\u9a6c\u6f6d\u533a","center":"105.437751,28.913257","level":"district","districts":[]},{"citycode":"0830","adcode":"510521","name":"\u6cf8\u53bf","center":"105.381879,29.1516","level":"district","districts":[]},{"citycode":"0830","adcode":"510503","name":"\u7eb3\u6eaa\u533a","center":"105.371324,28.772888","level":"district","districts":[]},{"citycode":"0830","adcode":"510524","name":"\u53d9\u6c38\u53bf","center":"105.444777,28.155631","level":"district","districts":[]},{"citycode":"0830","adcode":"510525","name":"\u53e4\u853a\u53bf","center":"105.812694,28.038763","level":"district","districts":[]},{"citycode":"0830","adcode":"510502","name":"\u6c5f\u9633\u533a","center":"105.434982,28.87881","level":"district","districts":[]},{"citycode":"0830","adcode":"510522","name":"\u5408\u6c5f\u53bf","center":"105.831011,28.811278","level":"district","districts":[]}]},{"citycode":"0831","adcode":"511500","name":"\u5b9c\u5bbe\u5e02","center":"104.642826,28.752354","level":"city","districts":[{"citycode":"0831","adcode":"511524","name":"\u957f\u5b81\u53bf","center":"104.920643,28.582866","level":"district","districts":[]},{"citycode":"0831","adcode":"511503","name":"\u5357\u6eaa\u533a","center":"104.969147,28.846366","level":"district","districts":[]},{"citycode":"0831","adcode":"511526","name":"\u73d9\u53bf","center":"104.708986,28.439514","level":"district","districts":[]},{"citycode":"0831","adcode":"511528","name":"\u5174\u6587\u53bf","center":"105.236207,28.303669","level":"district","districts":[]},{"citycode":"0831","adcode":"511523","name":"\u6c5f\u5b89\u53bf","center":"105.066982,28.723797","level":"district","districts":[]},{"citycode":"0831","adcode":"511527","name":"\u7b60\u8fde\u53bf","center":"104.511159,28.167981","level":"district","districts":[]},{"citycode":"0831","adcode":"511502","name":"\u7fe0\u5c4f\u533a","center":"104.619853,28.766537","level":"district","districts":[]},{"citycode":"0831","adcode":"511529","name":"\u5c4f\u5c71\u53bf","center":"104.346138,28.82867","level":"district","districts":[]},{"citycode":"0831","adcode":"511525","name":"\u9ad8\u53bf","center":"104.517748,28.436166","level":"district","districts":[]},{"citycode":"0831","adcode":"511504","name":"\u53d9\u5dde\u533a","center":"104.533244,28.690068","level":"district","districts":[]}]},{"citycode":"0834","adcode":"513400","name":"\u51c9\u5c71\u5f5d\u65cf\u81ea\u6cbb\u5dde","center":"102.267713,27.881396","level":"city","districts":[{"citycode":"0834","adcode":"513435","name":"\u7518\u6d1b\u53bf","center":"102.771441,28.959131","level":"district","districts":[]},{"citycode":"0834","adcode":"513422","name":"\u6728\u91cc\u85cf\u65cf\u81ea\u6cbb\u53bf","center":"101.280216,27.928736","level":"district","districts":[]},{"citycode":"0834","adcode":"513434","name":"\u8d8a\u897f\u53bf","center":"102.507467,28.639874","level":"district","districts":[]},{"citycode":"0834","adcode":"513436","name":"\u7f8e\u59d1\u53bf","center":"103.132359,28.328591","level":"district","districts":[]},{"citycode":"0834","adcode":"513437","name":"\u96f7\u6ce2\u53bf","center":"103.571705,28.263202","level":"district","districts":[]},{"citycode":"0834","adcode":"513433","name":"\u5195\u5b81\u53bf","center":"102.176622,28.550145","level":"district","districts":[]},{"citycode":"0834","adcode":"513423","name":"\u76d0\u6e90\u53bf","center":"101.509038,27.422593","level":"district","districts":[]},{"citycode":"0834","adcode":"513430","name":"\u91d1\u9633\u53bf","center":"103.248786,27.696735","level":"district","districts":[]},{"citycode":"0834","adcode":"513428","name":"\u666e\u683c\u53bf","center":"102.540901,27.376413","level":"district","districts":[]},{"citycode":"0834","adcode":"513429","name":"\u5e03\u62d6\u53bf","center":"102.809157,27.7121","level":"district","districts":[]},{"citycode":"0834","adcode":"513402","name":"\u4f1a\u7406\u5e02","center":"102.244774,26.655047","level":"district","districts":[]},{"citycode":"0834","adcode":"513424","name":"\u5fb7\u660c\u53bf","center":"102.175661,27.402832","level":"district","districts":[]},{"citycode":"0834","adcode":"513401","name":"\u897f\u660c\u5e02","center":"102.264166,27.89441","level":"district","districts":[]},{"citycode":"0834","adcode":"513431","name":"\u662d\u89c9\u53bf","center":"102.839849,28.015301","level":"district","districts":[]},{"citycode":"0834","adcode":"513426","name":"\u4f1a\u4e1c\u53bf","center":"102.577979,26.634744","level":"district","districts":[]},{"citycode":"0834","adcode":"513432","name":"\u559c\u5fb7\u53bf","center":"102.412451,28.306429","level":"district","districts":[]},{"citycode":"0834","adcode":"513427","name":"\u5b81\u5357\u53bf","center":"102.751587,27.061431","level":"district","districts":[]}]},{"citycode":"0812","adcode":"510400","name":"\u6500\u679d\u82b1\u5e02","center":"101.729116,26.558645","level":"city","districts":[{"citycode":"0812","adcode":"510421","name":"\u7c73\u6613\u53bf","center":"102.111073,26.896372","level":"district","districts":[]},{"citycode":"0812","adcode":"510422","name":"\u76d0\u8fb9\u53bf","center":"101.854027,26.682611","level":"district","districts":[]},{"citycode":"0812","adcode":"510411","name":"\u4ec1\u548c\u533a","center":"101.738615,26.497796","level":"district","districts":[]},{"citycode":"0812","adcode":"510402","name":"\u4e1c\u533a","center":"101.704129,26.546484","level":"district","districts":[]},{"citycode":"0812","adcode":"510403","name":"\u897f\u533a","center":"101.630557,26.5977","level":"district","districts":[]}]},{"citycode":"0836","adcode":"513300","name":"\u7518\u5b5c\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"101.96231,30.04952","level":"city","districts":[{"citycode":"0836","adcode":"513332","name":"\u77f3\u6e20\u53bf","center":"98.102938,32.978728","level":"district","districts":[]},{"citycode":"0836","adcode":"513328","name":"\u7518\u5b5c\u53bf","center":"99.991683,31.622731","level":"district","districts":[]},{"citycode":"0836","adcode":"513330","name":"\u5fb7\u683c\u53bf","center":"98.580914,31.806118","level":"district","districts":[]},{"citycode":"0836","adcode":"513327","name":"\u7089\u970d\u53bf","center":"100.676014,31.390657","level":"district","districts":[]},{"citycode":"0836","adcode":"513329","name":"\u65b0\u9f99\u53bf","center":"100.311569,30.93917","level":"district","districts":[]},{"citycode":"0836","adcode":"513331","name":"\u767d\u7389\u53bf","center":"98.824025,31.209669","level":"district","districts":[]},{"citycode":"0836","adcode":"513326","name":"\u9053\u5b5a\u53bf","center":"101.125157,30.979486","level":"district","districts":[]},{"citycode":"0836","adcode":"513334","name":"\u7406\u5858\u53bf","center":"100.269145,29.994228","level":"district","districts":[]},{"citycode":"0836","adcode":"513301","name":"\u5eb7\u5b9a\u5e02","center":"101.95687,29.998544","level":"district","districts":[]},{"citycode":"0836","adcode":"513335","name":"\u5df4\u5858\u53bf","center":"99.110555,30.00533","level":"district","districts":[]},{"citycode":"0836","adcode":"513325","name":"\u96c5\u6c5f\u53bf","center":"101.014366,30.031498","level":"district","districts":[]},{"citycode":"0836","adcode":"513337","name":"\u7a3b\u57ce\u53bf","center":"100.297369,29.03791","level":"district","districts":[]},{"citycode":"0836","adcode":"513336","name":"\u4e61\u57ce\u53bf","center":"99.798116,28.931081","level":"district","districts":[]},{"citycode":"0836","adcode":"513324","name":"\u4e5d\u9f99\u53bf","center":"101.507294,29.000347","level":"district","districts":[]},{"citycode":"0836","adcode":"513338","name":"\u5f97\u8363\u53bf","center":"99.286366,28.713085","level":"district","districts":[]},{"citycode":"0836","adcode":"513323","name":"\u4e39\u5df4\u53bf","center":"101.89054,30.878618","level":"district","districts":[]},{"citycode":"0836","adcode":"513322","name":"\u6cf8\u5b9a\u53bf","center":"102.234814,29.914103","level":"district","districts":[]},{"citycode":"0836","adcode":"513333","name":"\u8272\u8fbe\u53bf","center":"100.333011,32.268541","level":"district","districts":[]}]},{"citycode":"0835","adcode":"511800","name":"\u96c5\u5b89\u5e02","center":"103.041538,30.009998","level":"city","districts":[{"citycode":"0835","adcode":"511827","name":"\u5b9d\u5174\u53bf","center":"102.824826,30.252469","level":"district","districts":[]},{"citycode":"0835","adcode":"511822","name":"\u8365\u7ecf\u53bf","center":"102.846537,29.793254","level":"district","districts":[]},{"citycode":"0835","adcode":"511802","name":"\u96e8\u57ce\u533a","center":"103.032868,30.005718","level":"district","districts":[]},{"citycode":"0835","adcode":"511824","name":"\u77f3\u68c9\u53bf","center":"102.358364,29.230963","level":"district","districts":[]},{"citycode":"0835","adcode":"511823","name":"\u6c49\u6e90\u53bf","center":"102.650417,29.344275","level":"district","districts":[]},{"citycode":"0835","adcode":"511826","name":"\u82a6\u5c71\u53bf","center":"102.933618,30.145077","level":"district","districts":[]},{"citycode":"0835","adcode":"511825","name":"\u5929\u5168\u53bf","center":"102.771745,30.05728","level":"district","districts":[]},{"citycode":"0835","adcode":"511803","name":"\u540d\u5c71\u533a","center":"103.109238,30.069837","level":"district","districts":[]}]},{"citycode":"0837","adcode":"513200","name":"\u963f\u575d\u85cf\u65cf\u7f8c\u65cf\u81ea\u6cbb\u5dde","center":"102.224504,31.899427","level":"city","districts":[{"citycode":"0837","adcode":"513225","name":"\u4e5d\u5be8\u6c9f\u53bf","center":"104.2426,33.252008","level":"district","districts":[]},{"citycode":"0837","adcode":"513231","name":"\u963f\u575d\u53bf","center":"101.706548,32.902387","level":"district","districts":[]},{"citycode":"0837","adcode":"513233","name":"\u7ea2\u539f\u53bf","center":"102.544395,32.790841","level":"district","districts":[]},{"citycode":"0837","adcode":"513228","name":"\u9ed1\u6c34\u53bf","center":"102.987592,32.069268","level":"district","districts":[]},{"citycode":"0837","adcode":"513201","name":"\u9a6c\u5c14\u5eb7\u5e02","center":"102.206386,31.905799","level":"district","districts":[]},{"citycode":"0837","adcode":"513226","name":"\u91d1\u5ddd\u53bf","center":"102.063821,31.47625","level":"district","districts":[]},{"citycode":"0837","adcode":"513222","name":"\u7406\u53bf","center":"103.163284,31.435831","level":"district","districts":[]},{"citycode":"0837","adcode":"513224","name":"\u677e\u6f58\u53bf","center":"103.60428,32.655685","level":"district","districts":[]},{"citycode":"0837","adcode":"513227","name":"\u5c0f\u91d1\u53bf","center":"102.362984,30.995823","level":"district","districts":[]},{"citycode":"0837","adcode":"513221","name":"\u6c76\u5ddd\u53bf","center":"103.590185,31.476875","level":"district","districts":[]},{"citycode":"0837","adcode":"513223","name":"\u8302\u53bf","center":"103.85332,31.681727","level":"district","districts":[]},{"citycode":"0837","adcode":"513232","name":"\u82e5\u5c14\u76d6\u53bf","center":"102.96738,33.578503","level":"district","districts":[]},{"citycode":"0837","adcode":"513230","name":"\u58e4\u5858\u53bf","center":"100.978526,32.265796","level":"district","districts":[]}]}]},{"citycode":"022","adcode":"120000","name":"\u5929\u6d25\u5e02","center":"117.201509,39.085318","level":"province","districts":[{"citycode":"022","adcode":"120100","name":"\u5929\u6d25\u57ce\u533a","center":"117.190182,39.125596","level":"city","districts":[{"citycode":"022","adcode":"120115","name":"\u5b9d\u577b\u533a","center":"117.309748,39.717054","level":"district","districts":[]},{"citycode":"022","adcode":"120105","name":"\u6cb3\u5317\u533a","center":"117.196874,39.148018","level":"district","districts":[]},{"citycode":"022","adcode":"120118","name":"\u9759\u6d77\u533a","center":"116.975474,38.947772","level":"district","districts":[]},{"citycode":"022","adcode":"120119","name":"\u84df\u5dde\u533a","center":"117.408432,40.046544","level":"district","districts":[]},{"citycode":"022","adcode":"120117","name":"\u5b81\u6cb3\u533a","center":"117.826674,39.329749","level":"district","districts":[]},{"citycode":"022","adcode":"120101","name":"\u548c\u5e73\u533a","center":"117.214713,39.116884","level":"district","districts":[]},{"citycode":"022","adcode":"120114","name":"\u6b66\u6e05\u533a","center":"117.04456,39.384108","level":"district","districts":[]},{"citycode":"022","adcode":"120104","name":"\u5357\u5f00\u533a","center":"117.150638,39.138551","level":"district","districts":[]},{"citycode":"022","adcode":"120102","name":"\u6cb3\u4e1c\u533a","center":"117.251584,39.128294","level":"district","districts":[]},{"citycode":"022","adcode":"120110","name":"\u4e1c\u4e3d\u533a","center":"117.313567,39.086789","level":"district","districts":[]},{"citycode":"022","adcode":"120112","name":"\u6d25\u5357\u533a","center":"117.356683,38.936971","level":"district","districts":[]},{"citycode":"022","adcode":"120103","name":"\u6cb3\u897f\u533a","center":"117.223379,39.109679","level":"district","districts":[]},{"citycode":"022","adcode":"120113","name":"\u5317\u8fb0\u533a","center":"117.135614,39.224638","level":"district","districts":[]},{"citycode":"022","adcode":"120106","name":"\u7ea2\u6865\u533a","center":"117.151566,39.167349","level":"district","districts":[]},{"citycode":"022","adcode":"120111","name":"\u897f\u9752\u533a","center":"117.008994,39.141811","level":"district","districts":[]},{"citycode":"022","adcode":"120116","name":"\u6ee8\u6d77\u65b0\u533a","center":"117.69641,39.017809","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"540000","name":"\u897f\u85cf\u81ea\u6cbb\u533a","center":"91.117449,29.648694","level":"province","districts":[{"citycode":"0895","adcode":"540300","name":"\u660c\u90fd\u5e02","center":"97.170425,31.142879","level":"city","districts":[{"citycode":"0895","adcode":"540321","name":"\u6c5f\u8fbe\u53bf","center":"98.218336,31.499176","level":"district","districts":[]},{"citycode":"0895","adcode":"540324","name":"\u4e01\u9752\u53bf","center":"95.619868,31.409024","level":"district","districts":[]},{"citycode":"0895","adcode":"540302","name":"\u5361\u82e5\u533a","center":"97.196021,31.112087","level":"district","districts":[]},{"citycode":"0895","adcode":"540323","name":"\u7c7b\u4e4c\u9f50\u53bf","center":"96.599386,31.211378","level":"district","districts":[]},{"citycode":"0895","adcode":"540330","name":"\u8fb9\u575d\u53bf","center":"94.7078,30.933652","level":"district","districts":[]},{"citycode":"0895","adcode":"540325","name":"\u5bdf\u96c5\u53bf","center":"97.568752,30.653943","level":"district","districts":[]},{"citycode":"0895","adcode":"540329","name":"\u6d1b\u9686\u53bf","center":"95.825169,30.741988","level":"district","districts":[]},{"citycode":"0895","adcode":"540322","name":"\u8d21\u89c9\u53bf","center":"98.27097,30.860099","level":"district","districts":[]},{"citycode":"0895","adcode":"540326","name":"\u516b\u5bbf\u53bf","center":"96.917836,30.053209","level":"district","districts":[]},{"citycode":"0895","adcode":"540328","name":"\u8292\u5eb7\u53bf","center":"98.593493,29.679957","level":"district","districts":[]},{"citycode":"0895","adcode":"540327","name":"\u5de6\u8d21\u53bf","center":"97.841176,29.671488","level":"district","districts":[]}]},{"citycode":"0896","adcode":"540600","name":"\u90a3\u66f2\u5e02","center":"92.05151,31.477905","level":"city","districts":[{"citycode":"0896","adcode":"540624","name":"\u5b89\u591a\u53bf","center":"91.68195,32.265016","level":"district","districts":[]},{"citycode":"0896","adcode":"540623","name":"\u8042\u8363\u53bf","center":"92.303377,32.10775","level":"district","districts":[]},{"citycode":"0896","adcode":"540628","name":"\u5df4\u9752\u53bf","center":"94.053438,31.91847","level":"district","districts":[]},{"citycode":"0896","adcode":"540625","name":"\u7533\u624e\u53bf","center":"88.709936,30.93045","level":"district","districts":[]},{"citycode":"0896","adcode":"540602","name":"\u8272\u5c3c\u533a","center":"92.053498,31.469645","level":"district","districts":[]},{"citycode":"0896","adcode":"540622","name":"\u6bd4\u5982\u53bf","center":"93.681302,31.477914","level":"district","districts":[]},{"citycode":"0896","adcode":"540627","name":"\u73ed\u6208\u53bf","center":"90.009822,31.392157","level":"district","districts":[]},{"citycode":"0896","adcode":"540626","name":"\u7d22\u53bf","center":"93.785068,31.888045","level":"district","districts":[]},{"citycode":"0896","adcode":"540621","name":"\u5609\u9ece\u53bf","center":"93.232347,30.641543","level":"district","districts":[]},{"citycode":"0896","adcode":"540629","name":"\u5c3c\u739b\u53bf","center":"87.236772,31.784701","level":"district","districts":[]},{"citycode":"0896","adcode":"540630","name":"\u53cc\u6e56\u53bf","center":"88.838017,33.188355","level":"district","districts":[]}]},{"citycode":"0891","adcode":"540100","name":"\u62c9\u8428\u5e02","center":"91.171924,29.653491","level":"city","districts":[{"citycode":"0891","adcode":"540122","name":"\u5f53\u96c4\u53bf","center":"91.101186,30.473134","level":"district","districts":[]},{"citycode":"0891","adcode":"540121","name":"\u6797\u5468\u53bf","center":"91.265287,29.893545","level":"district","districts":[]},{"citycode":"0891","adcode":"540127","name":"\u58a8\u7af9\u5de5\u5361\u53bf","center":"91.739134,29.850344","level":"district","districts":[]},{"citycode":"0891","adcode":"540103","name":"\u5806\u9f99\u5fb7\u5e86\u533a","center":"91.002866,29.646815","level":"district","districts":[]},{"citycode":"0891","adcode":"540104","name":"\u8fbe\u5b5c\u533a","center":"91.349503,29.670173","level":"district","districts":[]},{"citycode":"0891","adcode":"540123","name":"\u5c3c\u6728\u53bf","center":"90.16446,29.43202","level":"district","districts":[]},{"citycode":"0891","adcode":"540102","name":"\u57ce\u5173\u533a","center":"91.140368,29.654813","level":"district","districts":[]},{"citycode":"0891","adcode":"540124","name":"\u66f2\u6c34\u53bf","center":"90.743355,29.354293","level":"district","districts":[]}]},{"citycode":"0892","adcode":"540200","name":"\u65e5\u5580\u5219\u5e02","center":"88.880423,29.266838","level":"city","districts":[{"citycode":"0892","adcode":"540232","name":"\u4ef2\u5df4\u53bf","center":"84.03153,29.770279","level":"district","districts":[]},{"citycode":"0892","adcode":"540227","name":"\u8c22\u901a\u95e8\u53bf","center":"88.255784,29.425455","level":"district","districts":[]},{"citycode":"0892","adcode":"540226","name":"\u6602\u4ec1\u53bf","center":"87.227739,29.299444","level":"district","districts":[]},{"citycode":"0892","adcode":"540221","name":"\u5357\u6728\u6797\u53bf","center":"89.099243,29.682331","level":"district","districts":[]},{"citycode":"0892","adcode":"540236","name":"\u8428\u560e\u53bf","center":"85.232941,29.328818","level":"district","districts":[]},{"citycode":"0892","adcode":"540202","name":"\u6851\u73e0\u5b5c\u533a","center":"88.898503,29.247726","level":"district","districts":[]},{"citycode":"0892","adcode":"540229","name":"\u4ec1\u5e03\u53bf","center":"89.841983,29.230933","level":"district","districts":[]},{"citycode":"0892","adcode":"540225","name":"\u62c9\u5b5c\u53bf","center":"87.636934,29.08188","level":"district","districts":[]},{"citycode":"0892","adcode":"540224","name":"\u8428\u8fe6\u53bf","center":"88.021674,28.899664","level":"district","districts":[]},{"citycode":"0892","adcode":"540228","name":"\u767d\u6717\u53bf","center":"89.261977,29.107688","level":"district","districts":[]},{"citycode":"0892","adcode":"540222","name":"\u6c5f\u5b5c\u53bf","center":"89.605654,28.91186","level":"district","districts":[]},{"citycode":"0892","adcode":"540223","name":"\u5b9a\u65e5\u53bf","center":"87.12612,28.658743","level":"district","districts":[]},{"citycode":"0892","adcode":"540230","name":"\u5eb7\u9a6c\u53bf","center":"89.681663,28.555627","level":"district","districts":[]},{"citycode":"0892","adcode":"540235","name":"\u8042\u62c9\u6728\u53bf","center":"85.982237,28.155186","level":"district","districts":[]},{"citycode":"0892","adcode":"540237","name":"\u5c97\u5df4\u53bf","center":"88.515318,28.271189","level":"district","districts":[]},{"citycode":"0892","adcode":"540233","name":"\u4e9a\u4e1c\u53bf","center":"88.907136,27.486094","level":"district","districts":[]},{"citycode":"0892","adcode":"540231","name":"\u5b9a\u7ed3\u53bf","center":"87.765872,28.364159","level":"district","districts":[]},{"citycode":"0892","adcode":"540234","name":"\u5409\u9686\u53bf","center":"85.298109,28.856542","level":"district","districts":[]}]},{"citycode":"0893","adcode":"540500","name":"\u5c71\u5357\u5e02","center":"91.771426,29.237722","level":"city","districts":[{"citycode":"0893","adcode":"540528","name":"\u52a0\u67e5\u53bf","center":"92.597518,29.138165","level":"district","districts":[]},{"citycode":"0893","adcode":"540523","name":"\u6851\u65e5\u53bf","center":"92.017723,29.259439","level":"district","districts":[]},{"citycode":"0893","adcode":"540521","name":"\u624e\u56ca\u53bf","center":"91.33725,29.245113","level":"district","districts":[]},{"citycode":"0893","adcode":"540502","name":"\u4e43\u4e1c\u533a","center":"91.761538,29.224904","level":"district","districts":[]},{"citycode":"0893","adcode":"540522","name":"\u8d21\u560e\u53bf","center":"90.978425,29.290169","level":"district","districts":[]},{"citycode":"0893","adcode":"540531","name":"\u6d6a\u5361\u5b50\u53bf","center":"90.400251,28.96693","level":"district","districts":[]},{"citycode":"0893","adcode":"540529","name":"\u9686\u5b50\u53bf","center":"92.461774,28.40743","level":"district","districts":[]},{"citycode":"0893","adcode":"540524","name":"\u743c\u7ed3\u53bf","center":"91.684307,29.024492","level":"district","districts":[]},{"citycode":"0893","adcode":"540525","name":"\u66f2\u677e\u53bf","center":"92.203738,29.062826","level":"district","districts":[]},{"citycode":"0893","adcode":"540526","name":"\u63aa\u7f8e\u53bf","center":"91.433509,28.438202","level":"district","districts":[]},{"citycode":"0893","adcode":"540527","name":"\u6d1b\u624e\u53bf","center":"90.859971,28.385811","level":"district","districts":[]},{"citycode":"0893","adcode":"540581","name":"\u9519\u90a3\u5e02","center":"91.957155,27.991121","level":"district","districts":[]}]},{"citycode":"0894","adcode":"540400","name":"\u6797\u829d\u5e02","center":"94.361436,29.64875","level":"city","districts":[{"citycode":"0894","adcode":"540424","name":"\u6ce2\u5bc6\u53bf","center":"95.768439,29.859751","level":"district","districts":[]},{"citycode":"0894","adcode":"540421","name":"\u5de5\u5e03\u6c5f\u8fbe\u53bf","center":"93.246077,29.88528","level":"district","districts":[]},{"citycode":"0894","adcode":"540402","name":"\u5df4\u5b9c\u533a","center":"94.361094,29.636576","level":"district","districts":[]},{"citycode":"0894","adcode":"540481","name":"\u7c73\u6797\u5e02","center":"94.213059,29.215971","level":"district","districts":[]},{"citycode":"0894","adcode":"540423","name":"\u58a8\u8131\u53bf","center":"95.332108,29.325425","level":"district","districts":[]},{"citycode":"0894","adcode":"540425","name":"\u5bdf\u9685\u53bf","center":"97.466919,28.66128","level":"district","districts":[]},{"citycode":"0894","adcode":"540426","name":"\u6717\u53bf","center":"93.07254,29.046892","level":"district","districts":[]}]},{"citycode":"0897","adcode":"542500","name":"\u963f\u91cc\u5730\u533a","center":"80.105786,32.500987","level":"city","districts":[{"citycode":"0897","adcode":"542526","name":"\u6539\u5219\u53bf","center":"84.057135,32.297165","level":"district","districts":[]},{"citycode":"0897","adcode":"542522","name":"\u672d\u8fbe\u53bf","center":"79.807096,31.479882","level":"district","districts":[]},{"citycode":"0897","adcode":"542527","name":"\u63aa\u52e4\u53bf","center":"85.152773,31.015862","level":"district","districts":[]},{"citycode":"0897","adcode":"542521","name":"\u666e\u5170\u53bf","center":"81.177116,30.290467","level":"district","districts":[]},{"citycode":"0897","adcode":"542524","name":"\u65e5\u571f\u53bf","center":"79.733552,33.382017","level":"district","districts":[]},{"citycode":"0897","adcode":"542523","name":"\u5676\u5c14\u53bf","center":"80.096591,32.492078","level":"district","districts":[]},{"citycode":"0897","adcode":"542525","name":"\u9769\u5409\u53bf","center":"81.145433,32.387233","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"220000","name":"\u5409\u6797\u7701","center":"125.325802,43.896942","level":"province","districts":[{"citycode":"0432","adcode":"220200","name":"\u5409\u6797\u5e02","center":"126.549719,43.838132","level":"city","districts":[{"citycode":"0432","adcode":"220283","name":"\u8212\u5170\u5e02","center":"126.965515,44.405922","level":"district","districts":[]},{"citycode":"0432","adcode":"220282","name":"\u6866\u7538\u5e02","center":"126.746245,42.972272","level":"district","districts":[]},{"citycode":"0432","adcode":"220281","name":"\u86df\u6cb3\u5e02","center":"127.344773,43.72382","level":"district","districts":[]},{"citycode":"0432","adcode":"220221","name":"\u6c38\u5409\u53bf","center":"126.497899,43.672198","level":"district","districts":[]},{"citycode":"0432","adcode":"220284","name":"\u78d0\u77f3\u5e02","center":"126.060328,42.946608","level":"district","districts":[]},{"citycode":"0432","adcode":"220203","name":"\u9f99\u6f6d\u533a","center":"126.562131,43.910743","level":"district","districts":[]},{"citycode":"0432","adcode":"220211","name":"\u4e30\u6ee1\u533a","center":"126.561351,43.821192","level":"district","districts":[]},{"citycode":"0432","adcode":"220204","name":"\u8239\u8425\u533a","center":"126.540909,43.833806","level":"district","districts":[]},{"citycode":"0432","adcode":"220202","name":"\u660c\u9091\u533a","center":"126.574414,43.881896","level":"district","districts":[]}]},{"citycode":"0431","adcode":"220100","name":"\u957f\u6625\u5e02","center":"125.323643,43.816996","level":"city","districts":[{"citycode":"0431","adcode":"220182","name":"\u6986\u6811\u5e02","center":"126.533126,44.840263","level":"district","districts":[]},{"citycode":"0431","adcode":"220183","name":"\u5fb7\u60e0\u5e02","center":"125.728552,44.521788","level":"district","districts":[]},{"citycode":"0431","adcode":"220112","name":"\u53cc\u9633\u533a","center":"125.664583,43.525367","level":"district","districts":[]},{"citycode":"0431","adcode":"220122","name":"\u519c\u5b89\u53bf","center":"125.184921,44.432829","level":"district","districts":[]},{"citycode":"0431","adcode":"220184","name":"\u516c\u4e3b\u5cad\u5e02","center":"124.79379,43.495116","level":"district","districts":[]},{"citycode":"0431","adcode":"220105","name":"\u4e8c\u9053\u533a","center":"125.37419,43.865912","level":"district","districts":[]},{"citycode":"0431","adcode":"220103","name":"\u5bbd\u57ce\u533a","center":"125.326614,43.943522","level":"district","districts":[]},{"citycode":"0431","adcode":"220102","name":"\u5357\u5173\u533a","center":"125.350341,43.86382","level":"district","districts":[]},{"citycode":"0431","adcode":"220113","name":"\u4e5d\u53f0\u533a","center":"125.839549,44.151672","level":"district","districts":[]},{"citycode":"0431","adcode":"220106","name":"\u7eff\u56ed\u533a","center":"125.256214,43.881047","level":"district","districts":[]},{"citycode":"0431","adcode":"220104","name":"\u671d\u9633\u533a","center":"125.288168,43.833845","level":"district","districts":[]}]},{"citycode":"0436","adcode":"220800","name":"\u767d\u57ce\u5e02","center":"122.838102,45.620131","level":"city","districts":[{"citycode":"0436","adcode":"220881","name":"\u6d2e\u5357\u5e02","center":"122.79845,45.356849","level":"district","districts":[]},{"citycode":"0436","adcode":"220882","name":"\u5927\u5b89\u5e02","center":"124.291032,45.507004","level":"district","districts":[]},{"citycode":"0436","adcode":"220822","name":"\u901a\u6986\u53bf","center":"123.088093,44.812912","level":"district","districts":[]},{"citycode":"0436","adcode":"220802","name":"\u6d2e\u5317\u533a","center":"122.851105,45.621545","level":"district","districts":[]},{"citycode":"0436","adcode":"220821","name":"\u9547\u8d49\u53bf","center":"123.19967,45.848195","level":"district","districts":[]}]},{"citycode":"0438","adcode":"220700","name":"\u677e\u539f\u5e02","center":"124.825321,45.14191","level":"city","districts":[{"citycode":"0438","adcode":"220723","name":"\u4e7e\u5b89\u53bf","center":"124.040651,45.003539","level":"district","districts":[]},{"citycode":"0438","adcode":"220722","name":"\u957f\u5cad\u53bf","center":"123.967244,44.276293","level":"district","districts":[]},{"citycode":"0438","adcode":"220721","name":"\u524d\u90ed\u5c14\u7f57\u65af\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","center":"124.823417,45.118061","level":"district","districts":[]},{"citycode":"0438","adcode":"220781","name":"\u6276\u4f59\u5e02","center":"126.049534,44.989057","level":"district","districts":[]},{"citycode":"0438","adcode":"220702","name":"\u5b81\u6c5f\u533a","center":"124.875965,45.209435","level":"district","districts":[]}]},{"citycode":"1433","adcode":"222400","name":"\u5ef6\u8fb9\u671d\u9c9c\u65cf\u81ea\u6cbb\u5dde","center":"129.470605,42.909426","level":"city","districts":[{"citycode":"1433","adcode":"222404","name":"\u73f2\u6625\u5e02","center":"130.365829,42.862551","level":"district","districts":[]},{"citycode":"1433","adcode":"222402","name":"\u56fe\u4eec\u5e02","center":"129.843807,42.968039","level":"district","districts":[]},{"citycode":"1433","adcode":"222406","name":"\u548c\u9f99\u5e02","center":"129.010932,42.546434","level":"district","districts":[]},{"citycode":"1433","adcode":"222424","name":"\u6c6a\u6e05\u53bf","center":"129.785137,43.317215","level":"district","districts":[]},{"citycode":"1433","adcode":"222401","name":"\u5ef6\u5409\u5e02","center":"129.507655,42.891034","level":"district","districts":[]},{"citycode":"1433","adcode":"222426","name":"\u5b89\u56fe\u53bf","center":"128.899744,43.111978","level":"district","districts":[]},{"citycode":"1433","adcode":"222405","name":"\u9f99\u4e95\u5e02","center":"129.426529,42.767172","level":"district","districts":[]},{"citycode":"1433","adcode":"222403","name":"\u6566\u5316\u5e02","center":"128.232235,43.372669","level":"district","districts":[]}]},{"citycode":"0434","adcode":"220300","name":"\u56db\u5e73\u5e02","center":"124.350599,43.166764","level":"city","districts":[{"citycode":"0434","adcode":"220303","name":"\u94c1\u4e1c\u533a","center":"124.409852,43.162664","level":"district","districts":[]},{"citycode":"0434","adcode":"220382","name":"\u53cc\u8fbd\u5e02","center":"123.502398,43.518301","level":"district","districts":[]},{"citycode":"0434","adcode":"220302","name":"\u94c1\u897f\u533a","center":"124.345994,43.146288","level":"district","districts":[]},{"citycode":"0434","adcode":"220322","name":"\u68a8\u6811\u53bf","center":"124.335389,43.30706","level":"district","districts":[]},{"citycode":"0434","adcode":"220323","name":"\u4f0a\u901a\u6ee1\u65cf\u81ea\u6cbb\u53bf","center":"125.305393,43.345754","level":"district","districts":[]}]},{"citycode":"0439","adcode":"220600","name":"\u767d\u5c71\u5e02","center":"126.414274,41.944132","level":"city","districts":[{"citycode":"0439","adcode":"220622","name":"\u9756\u5b87\u53bf","center":"126.813262,42.388902","level":"district","districts":[]},{"citycode":"0439","adcode":"220605","name":"\u6c5f\u6e90\u533a","center":"126.591178,42.056747","level":"district","districts":[]},{"citycode":"0439","adcode":"220621","name":"\u629a\u677e\u53bf","center":"127.449387,42.221038","level":"district","districts":[]},{"citycode":"0439","adcode":"220623","name":"\u957f\u767d\u671d\u9c9c\u65cf\u81ea\u6cbb\u53bf","center":"128.20066,41.420253","level":"district","districts":[]},{"citycode":"0439","adcode":"220681","name":"\u4e34\u6c5f\u5e02","center":"126.918086,41.811979","level":"district","districts":[]},{"citycode":"0439","adcode":"220602","name":"\u6d51\u6c5f\u533a","center":"126.416093,41.945409","level":"district","districts":[]}]},{"citycode":"0437","adcode":"220400","name":"\u8fbd\u6e90\u5e02","center":"125.144676,42.887961","level":"city","districts":[{"citycode":"0437","adcode":"220403","name":"\u897f\u5b89\u533a","center":"125.149488,42.927252","level":"district","districts":[]},{"citycode":"0437","adcode":"220422","name":"\u4e1c\u8fbd\u53bf","center":"124.991045,42.925636","level":"district","districts":[]},{"citycode":"0437","adcode":"220402","name":"\u9f99\u5c71\u533a","center":"125.13703,42.902194","level":"district","districts":[]},{"citycode":"0437","adcode":"220421","name":"\u4e1c\u4e30\u53bf","center":"125.53096,42.677253","level":"district","districts":[]}]},{"citycode":"0435","adcode":"220500","name":"\u901a\u5316\u5e02","center":"125.939721,41.728312","level":"city","districts":[{"citycode":"0435","adcode":"220503","name":"\u4e8c\u9053\u6c5f\u533a","center":"126.042546,41.773989","level":"district","districts":[]},{"citycode":"0435","adcode":"220521","name":"\u901a\u5316\u53bf","center":"125.758927,41.680135","level":"district","districts":[]},{"citycode":"0435","adcode":"220524","name":"\u67f3\u6cb3\u53bf","center":"125.744654,42.284594","level":"district","districts":[]},{"citycode":"0435","adcode":"220523","name":"\u8f89\u5357\u53bf","center":"126.046006,42.684706","level":"district","districts":[]},{"citycode":"0435","adcode":"220581","name":"\u6885\u6cb3\u53e3\u5e02","center":"125.711129,42.539183","level":"district","districts":[]},{"citycode":"0435","adcode":"220582","name":"\u96c6\u5b89\u5e02","center":"126.193172,41.125805","level":"district","districts":[]},{"citycode":"0435","adcode":"220502","name":"\u4e1c\u660c\u533a","center":"125.927187,41.702872","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"140000","name":"\u5c71\u897f\u7701","center":"112.578781,37.813948","level":"province","districts":[{"citycode":"0353","adcode":"140300","name":"\u9633\u6cc9\u5e02","center":"113.580426,37.857094","level":"city","districts":[{"citycode":"0353","adcode":"140321","name":"\u5e73\u5b9a\u53bf","center":"113.629777,37.804986","level":"district","districts":[]},{"citycode":"0353","adcode":"140322","name":"\u76c2\u53bf","center":"113.412279,38.086041","level":"district","districts":[]},{"citycode":"0353","adcode":"140311","name":"\u90ca\u533a","center":"113.593998,37.943703","level":"district","districts":[]},{"citycode":"0353","adcode":"140303","name":"\u77ff\u533a","center":"113.555279,37.868494","level":"district","districts":[]},{"citycode":"0353","adcode":"140302","name":"\u57ce\u533a","center":"113.600694,37.847457","level":"district","districts":[]}]},{"citycode":"0352","adcode":"140200","name":"\u5927\u540c\u5e02","center":"113.366749,40.09711","level":"city","districts":[{"citycode":"0352","adcode":"140225","name":"\u6d51\u6e90\u53bf","center":"113.69183,39.706485","level":"district","districts":[]},{"citycode":"0352","adcode":"140223","name":"\u5e7f\u7075\u53bf","center":"114.282703,39.760404","level":"district","districts":[]},{"citycode":"0352","adcode":"140215","name":"\u4e91\u5dde\u533a","center":"113.612496,40.040156","level":"district","districts":[]},{"citycode":"0352","adcode":"140226","name":"\u5de6\u4e91\u53bf","center":"112.703008,40.013442","level":"district","districts":[]},{"citycode":"0352","adcode":"140213","name":"\u5e73\u57ce\u533a","center":"113.300179,40.076991","level":"district","districts":[]},{"citycode":"0352","adcode":"140212","name":"\u65b0\u8363\u533a","center":"113.139628,40.256355","level":"district","districts":[]},{"citycode":"0352","adcode":"140214","name":"\u4e91\u5188\u533a","center":"113.150035,40.005844","level":"district","districts":[]},{"citycode":"0352","adcode":"140224","name":"\u7075\u4e18\u53bf","center":"114.234452,39.442459","level":"district","districts":[]},{"citycode":"0352","adcode":"140222","name":"\u5929\u9547\u53bf","center":"114.090871,40.42087","level":"district","districts":[]},{"citycode":"0352","adcode":"140221","name":"\u9633\u9ad8\u53bf","center":"113.748944,40.361059","level":"district","districts":[]}]},{"citycode":"0358","adcode":"141100","name":"\u5415\u6881\u5e02","center":"111.14454,37.518996","level":"city","districts":[{"citycode":"0358","adcode":"141127","name":"\u5c9a\u53bf","center":"111.672156,38.279587","level":"district","districts":[]},{"citycode":"0358","adcode":"141129","name":"\u4e2d\u9633\u53bf","center":"111.178841,37.357816","level":"district","districts":[]},{"citycode":"0358","adcode":"141128","name":"\u65b9\u5c71\u53bf","center":"111.244309,37.895017","level":"district","districts":[]},{"citycode":"0358","adcode":"141130","name":"\u4ea4\u53e3\u53bf","center":"111.181241,36.982205","level":"district","districts":[]},{"citycode":"0358","adcode":"141126","name":"\u77f3\u697c\u53bf","center":"110.834712,36.998461","level":"district","districts":[]},{"citycode":"0358","adcode":"141125","name":"\u67f3\u6797\u53bf","center":"110.888993,37.429816","level":"district","districts":[]},{"citycode":"0358","adcode":"141181","name":"\u5b5d\u4e49\u5e02","center":"111.778935,37.146051","level":"district","districts":[]},{"citycode":"0358","adcode":"141122","name":"\u4ea4\u57ce\u53bf","center":"112.155857,37.55169","level":"district","districts":[]},{"citycode":"0358","adcode":"141182","name":"\u6c7e\u9633\u5e02","center":"111.770834,37.261493","level":"district","districts":[]},{"citycode":"0358","adcode":"141121","name":"\u6587\u6c34\u53bf","center":"112.028866,37.438101","level":"district","districts":[]},{"citycode":"0358","adcode":"141124","name":"\u4e34\u53bf","center":"110.992712,37.951008","level":"district","districts":[]},{"citycode":"0358","adcode":"141102","name":"\u79bb\u77f3\u533a","center":"111.150325,37.517797","level":"district","districts":[]},{"citycode":"0358","adcode":"141123","name":"\u5174\u53bf","center":"111.127486,38.461818","level":"district","districts":[]}]},{"citycode":"0359","adcode":"140800","name":"\u8fd0\u57ce\u5e02","center":"111.007051,35.02667","level":"city","districts":[{"citycode":"0359","adcode":"140823","name":"\u95fb\u559c\u53bf","center":"111.224485,35.356664","level":"district","districts":[]},{"citycode":"0359","adcode":"140822","name":"\u4e07\u8363\u53bf","center":"110.837957,35.415805","level":"district","districts":[]},{"citycode":"0359","adcode":"140802","name":"\u76d0\u6e56\u533a","center":"110.998135,35.015549","level":"district","districts":[]},{"citycode":"0359","adcode":"140828","name":"\u590f\u53bf","center":"111.219946,35.140733","level":"district","districts":[]},{"citycode":"0359","adcode":"140827","name":"\u57a3\u66f2\u53bf","center":"111.670215,35.298297","level":"district","districts":[]},{"citycode":"0359","adcode":"140821","name":"\u4e34\u7317\u53bf","center":"110.774553,35.144406","level":"district","districts":[]},{"citycode":"0359","adcode":"140824","name":"\u7a37\u5c71\u53bf","center":"110.983273,35.604515","level":"district","districts":[]},{"citycode":"0359","adcode":"140881","name":"\u6c38\u6d4e\u5e02","center":"110.447771,34.866499","level":"district","districts":[]},{"citycode":"0359","adcode":"140826","name":"\u7edb\u53bf","center":"111.568849,35.491764","level":"district","districts":[]},{"citycode":"0359","adcode":"140825","name":"\u65b0\u7edb\u53bf","center":"111.224767,35.616007","level":"district","districts":[]},{"citycode":"0359","adcode":"140882","name":"\u6cb3\u6d25\u5e02","center":"110.712032,35.596357","level":"district","districts":[]},{"citycode":"0359","adcode":"140829","name":"\u5e73\u9646\u53bf","center":"111.193957,34.829595","level":"district","districts":[]},{"citycode":"0359","adcode":"140830","name":"\u82ae\u57ce\u53bf","center":"110.694418,34.694173","level":"district","districts":[]}]},{"citycode":"0356","adcode":"140500","name":"\u664b\u57ce\u5e02","center":"112.852022,35.491315","level":"city","districts":[{"citycode":"0356","adcode":"140525","name":"\u6cfd\u5dde\u53bf","center":"112.922243,35.507061","level":"district","districts":[]},{"citycode":"0356","adcode":"140581","name":"\u9ad8\u5e73\u5e02","center":"112.923798,35.798775","level":"district","districts":[]},{"citycode":"0356","adcode":"140524","name":"\u9675\u5ddd\u53bf","center":"113.280755,35.775239","level":"district","districts":[]},{"citycode":"0356","adcode":"140522","name":"\u9633\u57ce\u53bf","center":"112.414798,35.486275","level":"district","districts":[]},{"citycode":"0356","adcode":"140521","name":"\u6c81\u6c34\u53bf","center":"112.186726,35.690119","level":"district","districts":[]},{"citycode":"0356","adcode":"140502","name":"\u57ce\u533a","center":"112.853452,35.50248","level":"district","districts":[]}]},{"citycode":"0355","adcode":"140400","name":"\u957f\u6cbb\u5e02","center":"113.117394,36.195142","level":"city","districts":[{"citycode":"0355","adcode":"140428","name":"\u957f\u5b50\u53bf","center":"112.877922,36.122258","level":"district","districts":[]},{"citycode":"0355","adcode":"140403","name":"\u6f5e\u5dde\u533a","center":"113.122725,36.203305","level":"district","districts":[]},{"citycode":"0355","adcode":"140429","name":"\u6b66\u4e61\u53bf","center":"112.86396,36.837865","level":"district","districts":[]},{"citycode":"0355","adcode":"140430","name":"\u6c81\u53bf","center":"112.699176,36.756152","level":"district","districts":[]},{"citycode":"0355","adcode":"140423","name":"\u8944\u57a3\u53bf","center":"113.051298,36.535629","level":"district","districts":[]},{"citycode":"0355","adcode":"140405","name":"\u5c6f\u7559\u533a","center":"112.892301,36.3162","level":"district","districts":[]},{"citycode":"0355","adcode":"140406","name":"\u6f5e\u57ce\u533a","center":"113.228897,36.334597","level":"district","districts":[]},{"citycode":"0355","adcode":"140426","name":"\u9ece\u57ce\u53bf","center":"113.387025,36.502258","level":"district","districts":[]},{"citycode":"0355","adcode":"140431","name":"\u6c81\u6e90\u53bf","center":"112.337726,36.499989","level":"district","districts":[]},{"citycode":"0355","adcode":"140425","name":"\u5e73\u987a\u53bf","center":"113.435859,36.20037","level":"district","districts":[]},{"citycode":"0355","adcode":"140427","name":"\u58f6\u5173\u53bf","center":"113.206836,36.115645","level":"district","districts":[]},{"citycode":"0355","adcode":"140404","name":"\u4e0a\u515a\u533a","center":"113.051416,36.053104","level":"district","districts":[]}]},{"citycode":"0357","adcode":"141000","name":"\u4e34\u6c7e\u5e02","center":"111.51931,36.088581","level":"city","districts":[{"citycode":"0357","adcode":"141031","name":"\u96b0\u53bf","center":"110.940752,36.693345","level":"district","districts":[]},{"citycode":"0357","adcode":"141025","name":"\u53e4\u53bf","center":"111.92031,36.266767","level":"district","districts":[]},{"citycode":"0357","adcode":"141032","name":"\u6c38\u548c\u53bf","center":"110.631981,36.759524","level":"district","districts":[]},{"citycode":"0357","adcode":"141033","name":"\u84b2\u53bf","center":"111.096457,36.41183","level":"district","districts":[]},{"citycode":"0357","adcode":"141027","name":"\u6d6e\u5c71\u53bf","center":"111.848883,35.968124","level":"district","districts":[]},{"citycode":"0357","adcode":"141022","name":"\u7ffc\u57ce\u53bf","center":"111.719048,35.739706","level":"district","districts":[]},{"citycode":"0357","adcode":"141023","name":"\u8944\u6c7e\u53bf","center":"111.441725,35.876293","level":"district","districts":[]},{"citycode":"0357","adcode":"141026","name":"\u5b89\u6cfd\u53bf","center":"112.250242,36.147921","level":"district","districts":[]},{"citycode":"0357","adcode":"141021","name":"\u66f2\u6c83\u53bf","center":"111.475783,35.641883","level":"district","districts":[]},{"citycode":"0357","adcode":"141081","name":"\u4faf\u9a6c\u5e02","center":"111.372002,35.619105","level":"district","districts":[]},{"citycode":"0357","adcode":"141034","name":"\u6c7e\u897f\u53bf","center":"111.563993,36.652833","level":"district","districts":[]},{"citycode":"0357","adcode":"141082","name":"\u970d\u5dde\u5e02","center":"111.755111,36.569046","level":"district","districts":[]},{"citycode":"0357","adcode":"141030","name":"\u5927\u5b81\u53bf","center":"110.752914,36.465126","level":"district","districts":[]},{"citycode":"0357","adcode":"141028","name":"\u5409\u53bf","center":"110.680513,36.096833","level":"district","districts":[]},{"citycode":"0357","adcode":"141029","name":"\u4e61\u5b81\u53bf","center":"110.846585,35.970834","level":"district","districts":[]},{"citycode":"0357","adcode":"141002","name":"\u5c27\u90fd\u533a","center":"111.578797,36.082463","level":"district","districts":[]},{"citycode":"0357","adcode":"141024","name":"\u6d2a\u6d1e\u53bf","center":"111.67571,36.254087","level":"district","districts":[]}]},{"citycode":"0354","adcode":"140700","name":"\u664b\u4e2d\u5e02","center":"112.752633,37.688006","level":"city","districts":[{"citycode":"0354","adcode":"140721","name":"\u6986\u793e\u53bf","center":"112.975378,37.071209","level":"district","districts":[]},{"citycode":"0354","adcode":"140725","name":"\u5bff\u9633\u53bf","center":"113.176373,37.895191","level":"district","districts":[]},{"citycode":"0354","adcode":"140722","name":"\u5de6\u6743\u53bf","center":"113.379412,37.082746","level":"district","districts":[]},{"citycode":"0354","adcode":"140723","name":"\u548c\u987a\u53bf","center":"113.570295,37.329696","level":"district","districts":[]},{"citycode":"0354","adcode":"140703","name":"\u592a\u8c37\u533a","center":"112.551297,37.421392","level":"district","districts":[]},{"citycode":"0354","adcode":"140727","name":"\u7941\u53bf","center":"112.335226,37.358425","level":"district","districts":[]},{"citycode":"0354","adcode":"140702","name":"\u6986\u6b21\u533a","center":"112.707564,37.698637","level":"district","districts":[]},{"citycode":"0354","adcode":"140728","name":"\u5e73\u9065\u53bf","center":"112.175825,37.189614","level":"district","districts":[]},{"citycode":"0354","adcode":"140724","name":"\u6614\u9633\u53bf","center":"113.707151,37.612577","level":"district","districts":[]},{"citycode":"0354","adcode":"140729","name":"\u7075\u77f3\u53bf","center":"111.778692,36.848085","level":"district","districts":[]},{"citycode":"0354","adcode":"140781","name":"\u4ecb\u4f11\u5e02","center":"111.916451,37.027538","level":"district","districts":[]}]},{"citycode":"0349","adcode":"140600","name":"\u6714\u5dde\u5e02","center":"112.432906,39.331734","level":"city","districts":[{"citycode":"0349","adcode":"140623","name":"\u53f3\u7389\u53bf","center":"112.466926,39.989198","level":"district","districts":[]},{"citycode":"0349","adcode":"140602","name":"\u6714\u57ce\u533a","center":"112.432071,39.320196","level":"district","districts":[]},{"citycode":"0349","adcode":"140603","name":"\u5e73\u9c81\u533a","center":"112.28827,39.512219","level":"district","districts":[]},{"citycode":"0349","adcode":"140622","name":"\u5e94\u53bf","center":"113.190952,39.554471","level":"district","districts":[]},{"citycode":"0349","adcode":"140621","name":"\u5c71\u9634\u53bf","center":"112.816421,39.527445","level":"district","districts":[]},{"citycode":"0349","adcode":"140681","name":"\u6000\u4ec1\u5e02","center":"113.133061,39.820522","level":"district","districts":[]}]},{"citycode":"0350","adcode":"140900","name":"\u5ffb\u5dde\u5e02","center":"112.734149,38.415958","level":"city","districts":[{"citycode":"0350","adcode":"140928","name":"\u4e94\u5be8\u53bf","center":"111.846808,38.91111","level":"district","districts":[]},{"citycode":"0350","adcode":"140925","name":"\u5b81\u6b66\u53bf","center":"112.304734,39.001498","level":"district","districts":[]},{"citycode":"0350","adcode":"140929","name":"\u5ca2\u5c9a\u53bf","center":"111.572964,38.703989","level":"district","districts":[]},{"citycode":"0350","adcode":"140926","name":"\u9759\u4e50\u53bf","center":"111.939498,38.359306","level":"district","districts":[]},{"citycode":"0350","adcode":"140927","name":"\u795e\u6c60\u53bf","center":"112.210997,39.091079","level":"district","districts":[]},{"citycode":"0350","adcode":"140930","name":"\u6cb3\u66f2\u53bf","center":"111.138247,39.38452","level":"district","districts":[]},{"citycode":"0350","adcode":"140981","name":"\u539f\u5e73\u5e02","center":"112.711025,38.731412","level":"district","districts":[]},{"citycode":"0350","adcode":"140923","name":"\u4ee3\u53bf","center":"112.960102,39.066831","level":"district","districts":[]},{"citycode":"0350","adcode":"140921","name":"\u5b9a\u8944\u53bf","center":"112.957234,38.471725","level":"district","districts":[]},{"citycode":"0350","adcode":"140924","name":"\u7e41\u5cd9\u53bf","center":"113.265464,39.188835","level":"district","districts":[]},{"citycode":"0350","adcode":"140931","name":"\u4fdd\u5fb7\u53bf","center":"111.085944,39.022616","level":"district","districts":[]},{"citycode":"0350","adcode":"140922","name":"\u4e94\u53f0\u53bf","center":"113.255419,38.728056","level":"district","districts":[]},{"citycode":"0350","adcode":"140932","name":"\u504f\u5173\u53bf","center":"111.508922,39.436917","level":"district","districts":[]},{"citycode":"0350","adcode":"140902","name":"\u5ffb\u5e9c\u533a","center":"112.746357,38.403498","level":"district","districts":[]}]},{"citycode":"0351","adcode":"140100","name":"\u592a\u539f\u5e02","center":"112.549656,37.870451","level":"city","districts":[{"citycode":"0351","adcode":"140123","name":"\u5a04\u70e6\u53bf","center":"111.79715,38.067569","level":"district","districts":[]},{"citycode":"0351","adcode":"140181","name":"\u53e4\u4ea4\u5e02","center":"112.175034,37.907414","level":"district","districts":[]},{"citycode":"0351","adcode":"140110","name":"\u664b\u6e90\u533a","center":"112.477869,37.715519","level":"district","districts":[]},{"citycode":"0351","adcode":"140121","name":"\u6e05\u5f90\u53bf","center":"112.359367,37.608751","level":"district","districts":[]},{"citycode":"0351","adcode":"140109","name":"\u4e07\u67cf\u6797\u533a","center":"112.515638,37.859738","level":"district","districts":[]},{"citycode":"0351","adcode":"140108","name":"\u5c16\u8349\u576a\u533a","center":"112.486141,37.940052","level":"district","districts":[]},{"citycode":"0351","adcode":"140107","name":"\u674f\u82b1\u5cad\u533a","center":"112.570412,37.894241","level":"district","districts":[]},{"citycode":"0351","adcode":"140105","name":"\u5c0f\u5e97\u533a","center":"112.565524,37.736865","level":"district","districts":[]},{"citycode":"0351","adcode":"140106","name":"\u8fce\u6cfd\u533a","center":"112.563373,37.863308","level":"district","districts":[]},{"citycode":"0351","adcode":"140122","name":"\u9633\u66f2\u53bf","center":"112.67292,38.058511","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"360000","name":"\u6c5f\u897f\u7701","center":"115.816587,28.637234","level":"province","districts":[{"citycode":"0797","adcode":"360700","name":"\u8d63\u5dde\u5e02","center":"114.933494,25.831139","level":"city","districts":[{"citycode":"0797","adcode":"360730","name":"\u5b81\u90fd\u53bf","center":"116.009171,26.470865","level":"district","districts":[]},{"citycode":"0797","adcode":"360731","name":"\u4e8e\u90fd\u53bf","center":"115.415145,25.952564","level":"district","districts":[]},{"citycode":"0797","adcode":"360725","name":"\u5d07\u4e49\u53bf","center":"114.308135,25.682278","level":"district","districts":[]},{"citycode":"0797","adcode":"360729","name":"\u5168\u5357\u53bf","center":"114.530148,24.742353","level":"district","districts":[]},{"citycode":"0797","adcode":"360735","name":"\u77f3\u57ce\u53bf","center":"116.347611,26.31491","level":"district","districts":[]},{"citycode":"0797","adcode":"360781","name":"\u745e\u91d1\u5e02","center":"116.027114,25.88623","level":"district","districts":[]},{"citycode":"0797","adcode":"360783","name":"\u9f99\u5357\u5e02","center":"114.804474,24.901216","level":"district","districts":[]},{"citycode":"0797","adcode":"360733","name":"\u4f1a\u660c\u53bf","center":"115.809271,25.58734","level":"district","districts":[]},{"citycode":"0797","adcode":"360722","name":"\u4fe1\u4e30\u53bf","center":"114.922485,25.38676","level":"district","districts":[]},{"citycode":"0797","adcode":"360724","name":"\u4e0a\u72b9\u53bf","center":"114.55177,25.784754","level":"district","districts":[]},{"citycode":"0797","adcode":"360723","name":"\u5927\u4f59\u53bf","center":"114.362306,25.401968","level":"district","districts":[]},{"citycode":"0797","adcode":"360703","name":"\u5357\u5eb7\u533a","center":"114.765044,25.661369","level":"district","districts":[]},{"citycode":"0797","adcode":"360732","name":"\u5174\u56fd\u53bf","center":"115.363475,26.338129","level":"district","districts":[]},{"citycode":"0797","adcode":"360704","name":"\u8d63\u53bf\u533a","center":"115.021196,25.854496","level":"district","districts":[]},{"citycode":"0797","adcode":"360702","name":"\u7ae0\u8d21\u533a","center":"114.920426,25.818247","level":"district","districts":[]},{"citycode":"0797","adcode":"360728","name":"\u5b9a\u5357\u53bf","center":"115.027908,24.783372","level":"district","districts":[]},{"citycode":"0797","adcode":"360726","name":"\u5b89\u8fdc\u53bf","center":"115.393992,25.136855","level":"district","districts":[]},{"citycode":"0797","adcode":"360734","name":"\u5bfb\u4e4c\u53bf","center":"115.638534,24.969513","level":"district","districts":[]}]},{"citycode":"0790","adcode":"360500","name":"\u65b0\u4f59\u5e02","center":"114.916665,27.818553","level":"city","districts":[{"citycode":"0790","adcode":"360521","name":"\u5206\u5b9c\u53bf","center":"114.69264,27.814723","level":"district","districts":[]},{"citycode":"0790","adcode":"360502","name":"\u6e1d\u6c34\u533a","center":"114.944499,27.799526","level":"district","districts":[]}]},{"citycode":"0796","adcode":"360800","name":"\u5409\u5b89\u5e02","center":"114.96681,27.091243","level":"city","districts":[{"citycode":"0796","adcode":"360830","name":"\u6c38\u65b0\u53bf","center":"114.242425,26.945157","level":"district","districts":[]},{"citycode":"0796","adcode":"360881","name":"\u4e95\u5188\u5c71\u5e02","center":"114.289563,26.748132","level":"district","districts":[]},{"citycode":"0796","adcode":"360826","name":"\u6cf0\u548c\u53bf","center":"114.922987,26.801687","level":"district","districts":[]},{"citycode":"0796","adcode":"360827","name":"\u9042\u5ddd\u53bf","center":"114.520825,26.313413","level":"district","districts":[]},{"citycode":"0796","adcode":"360828","name":"\u4e07\u5b89\u53bf","center":"114.759746,26.456821","level":"district","districts":[]},{"citycode":"0796","adcode":"360829","name":"\u5b89\u798f\u53bf","center":"114.619818,27.393286","level":"district","districts":[]},{"citycode":"0796","adcode":"360802","name":"\u5409\u5dde\u533a","center":"114.994991,27.144204","level":"district","districts":[]},{"citycode":"0796","adcode":"360821","name":"\u5409\u5b89\u53bf","center":"114.908337,27.039866","level":"district","districts":[]},{"citycode":"0796","adcode":"360803","name":"\u9752\u539f\u533a","center":"115.014836,27.082012","level":"district","districts":[]},{"citycode":"0796","adcode":"360822","name":"\u5409\u6c34\u53bf","center":"115.135963,27.229697","level":"district","districts":[]},{"citycode":"0796","adcode":"360823","name":"\u5ce1\u6c5f\u53bf","center":"115.316567,27.5829","level":"district","districts":[]},{"citycode":"0796","adcode":"360825","name":"\u6c38\u4e30\u53bf","center":"115.421599,27.317301","level":"district","districts":[]},{"citycode":"0796","adcode":"360824","name":"\u65b0\u5e72\u53bf","center":"115.386853,27.740368","level":"district","districts":[]}]},{"citycode":"0794","adcode":"361000","name":"\u629a\u5dde\u5e02","center":"116.358054,27.948979","level":"city","districts":[{"citycode":"0794","adcode":"361025","name":"\u4e50\u5b89\u53bf","center":"115.83099,27.428682","level":"district","districts":[]},{"citycode":"0794","adcode":"361026","name":"\u5b9c\u9ec4\u53bf","center":"116.236174,27.554744","level":"district","districts":[]},{"citycode":"0794","adcode":"361024","name":"\u5d07\u4ec1\u53bf","center":"116.076363,27.754416","level":"district","districts":[]},{"citycode":"0794","adcode":"361030","name":"\u5e7f\u660c\u53bf","center":"116.336556,26.843974","level":"district","districts":[]},{"citycode":"0794","adcode":"361023","name":"\u5357\u4e30\u53bf","center":"116.525898,27.21845","level":"district","districts":[]},{"citycode":"0794","adcode":"361022","name":"\u9ece\u5ddd\u53bf","center":"116.907446,27.282729","level":"district","districts":[]},{"citycode":"0794","adcode":"361021","name":"\u5357\u57ce\u53bf","center":"116.637228,27.570031","level":"district","districts":[]},{"citycode":"0794","adcode":"361002","name":"\u4e34\u5ddd\u533a","center":"116.311932,27.935098","level":"district","districts":[]},{"citycode":"0794","adcode":"361028","name":"\u8d44\u6eaa\u53bf","center":"117.060332,27.706088","level":"district","districts":[]},{"citycode":"0794","adcode":"361027","name":"\u91d1\u6eaa\u53bf","center":"116.755018,27.91973","level":"district","districts":[]},{"citycode":"0794","adcode":"361003","name":"\u4e1c\u4e61\u533a","center":"116.603159,28.249059","level":"district","districts":[]}]},{"citycode":"0701","adcode":"360600","name":"\u9e70\u6f6d\u5e02","center":"117.039532,28.272092","level":"city","districts":[{"citycode":"0701","adcode":"360602","name":"\u6708\u6e56\u533a","center":"117.10247,28.266999","level":"district","districts":[]},{"citycode":"0701","adcode":"360603","name":"\u4f59\u6c5f\u533a","center":"116.854576,28.199657","level":"district","districts":[]},{"citycode":"0701","adcode":"360681","name":"\u8d35\u6eaa\u5e02","center":"117.245178,28.292397","level":"district","districts":[]}]},{"citycode":"0795","adcode":"360900","name":"\u5b9c\u6625\u5e02","center":"114.416826,27.816245","level":"city","districts":[{"citycode":"0795","adcode":"360902","name":"\u8881\u5dde\u533a","center":"114.42794,27.796344","level":"district","districts":[]},{"citycode":"0795","adcode":"360922","name":"\u4e07\u8f7d\u53bf","center":"114.445477,28.106201","level":"district","districts":[]},{"citycode":"0795","adcode":"360924","name":"\u5b9c\u4e30\u53bf","center":"114.803036,28.394466","level":"district","districts":[]},{"citycode":"0795","adcode":"360923","name":"\u4e0a\u9ad8\u53bf","center":"114.948045,28.238591","level":"district","districts":[]},{"citycode":"0795","adcode":"360982","name":"\u6a1f\u6811\u5e02","center":"115.546174,28.054632","level":"district","districts":[]},{"citycode":"0795","adcode":"360926","name":"\u94dc\u9f13\u53bf","center":"114.354623,28.513291","level":"district","districts":[]},{"citycode":"0795","adcode":"360925","name":"\u9756\u5b89\u53bf","center":"115.362635,28.861296","level":"district","districts":[]},{"citycode":"0795","adcode":"360921","name":"\u5949\u65b0\u53bf","center":"115.400624,28.688254","level":"district","districts":[]},{"citycode":"0795","adcode":"360983","name":"\u9ad8\u5b89\u5e02","center":"115.366863,28.448054","level":"district","districts":[]},{"citycode":"0795","adcode":"360981","name":"\u4e30\u57ce\u5e02","center":"115.771131,28.160053","level":"district","districts":[]}]},{"citycode":"0799","adcode":"360300","name":"\u840d\u4e61\u5e02","center":"113.887147,27.658721","level":"city","districts":[{"citycode":"0799","adcode":"360322","name":"\u4e0a\u6817\u53bf","center":"113.795294,27.880221","level":"district","districts":[]},{"citycode":"0799","adcode":"360302","name":"\u5b89\u6e90\u533a","center":"113.87072,27.615","level":"district","districts":[]},{"citycode":"0799","adcode":"360313","name":"\u6e58\u4e1c\u533a","center":"113.733047,27.640075","level":"district","districts":[]},{"citycode":"0799","adcode":"360321","name":"\u83b2\u82b1\u53bf","center":"113.961589,27.128498","level":"district","districts":[]},{"citycode":"0799","adcode":"360323","name":"\u82a6\u6eaa\u53bf","center":"114.029351,27.631273","level":"district","districts":[]}]},{"citycode":"0793","adcode":"361100","name":"\u4e0a\u9976\u5e02","center":"117.943064,28.45513","level":"city","districts":[{"citycode":"0793","adcode":"361127","name":"\u4f59\u5e72\u53bf","center":"116.695787,28.70283","level":"district","districts":[]},{"citycode":"0793","adcode":"361125","name":"\u6a2a\u5cf0\u53bf","center":"117.596433,28.407116","level":"district","districts":[]},{"citycode":"0793","adcode":"361103","name":"\u5e7f\u4e30\u533a","center":"118.189729,28.463697","level":"district","districts":[]},{"citycode":"0793","adcode":"361123","name":"\u7389\u5c71\u53bf","center":"118.244736,28.681936","level":"district","districts":[]},{"citycode":"0793","adcode":"361129","name":"\u4e07\u5e74\u53bf","center":"117.058445,28.694582","level":"district","districts":[]},{"citycode":"0793","adcode":"361126","name":"\u5f0b\u9633\u53bf","center":"117.449346,28.378039","level":"district","districts":[]},{"citycode":"0793","adcode":"361181","name":"\u5fb7\u5174\u5e02","center":"117.594549,28.930557","level":"district","districts":[]},{"citycode":"0793","adcode":"361128","name":"\u9131\u9633\u53bf","center":"116.703731,29.005675","level":"district","districts":[]},{"citycode":"0793","adcode":"361130","name":"\u5a7a\u6e90\u53bf","center":"117.861532,29.248491","level":"district","districts":[]},{"citycode":"0793","adcode":"361124","name":"\u94c5\u5c71\u53bf","center":"117.734742,28.298415","level":"district","districts":[]},{"citycode":"0793","adcode":"361104","name":"\u5e7f\u4fe1\u533a","center":"117.907454,28.448893","level":"district","districts":[]},{"citycode":"0793","adcode":"361102","name":"\u4fe1\u5dde\u533a","center":"117.965997,28.430694","level":"district","districts":[]}]},{"citycode":"0798","adcode":"360200","name":"\u666f\u5fb7\u9547\u5e02","center":"117.184892,29.2744","level":"city","districts":[{"citycode":"0798","adcode":"360281","name":"\u4e50\u5e73\u5e02","center":"117.151499,28.978521","level":"district","districts":[]},{"citycode":"0798","adcode":"360203","name":"\u73e0\u5c71\u533a","center":"117.271365,29.305191","level":"district","districts":[]},{"citycode":"0798","adcode":"360202","name":"\u660c\u6c5f\u533a","center":"117.182648,29.273683","level":"district","districts":[]},{"citycode":"0798","adcode":"360222","name":"\u6d6e\u6881\u53bf","center":"117.214984,29.352493","level":"district","districts":[]}]},{"citycode":"0792","adcode":"360400","name":"\u4e5d\u6c5f\u5e02","center":"115.95356,29.66116","level":"city","districts":[{"citycode":"0792","adcode":"360402","name":"\u6fc2\u6eaa\u533a","center":"115.992735,29.668008","level":"district","districts":[]},{"citycode":"0792","adcode":"360424","name":"\u4fee\u6c34\u53bf","center":"114.546536,29.026166","level":"district","districts":[]},{"citycode":"0792","adcode":"360423","name":"\u6b66\u5b81\u53bf","center":"115.092649,29.246785","level":"district","districts":[]},{"citycode":"0792","adcode":"360482","name":"\u5171\u9752\u57ce\u5e02","center":"115.784269,29.235082","level":"district","districts":[]},{"citycode":"0792","adcode":"360426","name":"\u5fb7\u5b89\u53bf","center":"115.767114,29.298599","level":"district","districts":[]},{"citycode":"0792","adcode":"360429","name":"\u6e56\u53e3\u53bf","center":"116.252206,29.731194","level":"district","districts":[]},{"citycode":"0792","adcode":"360404","name":"\u67f4\u6851\u533a","center":"115.911005,29.608775","level":"district","districts":[]},{"citycode":"0792","adcode":"360430","name":"\u5f6d\u6cfd\u53bf","center":"116.563858,29.877404","level":"district","districts":[]},{"citycode":"0792","adcode":"360483","name":"\u5e90\u5c71\u5e02","center":"116.045118,29.448225","level":"district","districts":[]},{"citycode":"0792","adcode":"360403","name":"\u6d54\u9633\u533a","center":"116.001677,29.70547","level":"district","districts":[]},{"citycode":"0792","adcode":"360481","name":"\u745e\u660c\u5e02","center":"115.681221,29.676026","level":"district","districts":[]},{"citycode":"0792","adcode":"360428","name":"\u90fd\u660c\u53bf","center":"116.203999,29.273803","level":"district","districts":[]},{"citycode":"0792","adcode":"360425","name":"\u6c38\u4fee\u53bf","center":"115.83207,29.011392","level":"district","districts":[]}]},{"citycode":"0791","adcode":"360100","name":"\u5357\u660c\u5e02","center":"115.857972,28.682976","level":"city","districts":[{"citycode":"0791","adcode":"360104","name":"\u9752\u4e91\u8c31\u533a","center":"115.925709,28.62182","level":"district","districts":[]},{"citycode":"0791","adcode":"360124","name":"\u8fdb\u8d24\u53bf","center":"116.242468,28.377627","level":"district","districts":[]},{"citycode":"0791","adcode":"360112","name":"\u65b0\u5efa\u533a","center":"115.815244,28.693192","level":"district","districts":[]},{"citycode":"0791","adcode":"360113","name":"\u7ea2\u8c37\u6ee9\u533a","center":"115.858127,28.698188","level":"district","districts":[]},{"citycode":"0791","adcode":"360111","name":"\u9752\u5c71\u6e56\u533a","center":"115.962138,28.682867","level":"district","districts":[]},{"citycode":"0791","adcode":"360102","name":"\u4e1c\u6e56\u533a","center":"115.903576,28.698787","level":"district","districts":[]},{"citycode":"0791","adcode":"360103","name":"\u897f\u6e56\u533a","center":"115.876998,28.657005","level":"district","districts":[]},{"citycode":"0791","adcode":"360123","name":"\u5b89\u4e49\u53bf","center":"115.549158,28.845585","level":"district","districts":[]},{"citycode":"0791","adcode":"360121","name":"\u5357\u660c\u53bf","center":"115.93349,28.557921","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"610000","name":"\u9655\u897f\u7701","center":"108.953939,34.266611","level":"province","districts":[{"citycode":"0914","adcode":"611000","name":"\u5546\u6d1b\u5e02","center":"109.918646,33.873358","level":"city","districts":[{"citycode":"0914","adcode":"611023","name":"\u5546\u5357\u53bf","center":"110.881741,33.531071","level":"district","districts":[]},{"citycode":"0914","adcode":"611026","name":"\u67de\u6c34\u53bf","center":"109.114006,33.686048","level":"district","districts":[]},{"citycode":"0914","adcode":"611021","name":"\u6d1b\u5357\u53bf","center":"110.148526,34.090815","level":"district","districts":[]},{"citycode":"0914","adcode":"611022","name":"\u4e39\u51e4\u53bf","center":"110.327542,33.696254","level":"district","districts":[]},{"citycode":"0914","adcode":"611002","name":"\u5546\u5dde\u533a","center":"109.941452,33.862979","level":"district","districts":[]},{"citycode":"0914","adcode":"611025","name":"\u9547\u5b89\u53bf","center":"109.152833,33.423764","level":"district","districts":[]},{"citycode":"0914","adcode":"611024","name":"\u5c71\u9633\u53bf","center":"109.882289,33.532172","level":"district","districts":[]}]},{"citycode":"0916","adcode":"610700","name":"\u6c49\u4e2d\u5e02","center":"107.02319,33.066373","level":"city","districts":[{"citycode":"0916","adcode":"610727","name":"\u7565\u9633\u53bf","center":"106.15658,33.327293","level":"district","districts":[]},{"citycode":"0916","adcode":"610726","name":"\u5b81\u5f3a\u53bf","center":"106.257636,32.830032","level":"district","districts":[]},{"citycode":"0916","adcode":"610725","name":"\u52c9\u53bf","center":"106.673217,33.153636","level":"district","districts":[]},{"citycode":"0916","adcode":"610729","name":"\u7559\u575d\u53bf","center":"106.920781,33.617637","level":"district","districts":[]},{"citycode":"0916","adcode":"610722","name":"\u57ce\u56fa\u53bf","center":"107.333787,33.156937","level":"district","districts":[]},{"citycode":"0916","adcode":"610703","name":"\u5357\u90d1\u533a","center":"106.936235,33.000034","level":"district","districts":[]},{"citycode":"0916","adcode":"610702","name":"\u6c49\u53f0\u533a","center":"107.03201,33.067523","level":"district","districts":[]},{"citycode":"0916","adcode":"610724","name":"\u897f\u4e61\u53bf","center":"107.766477,32.983282","level":"district","districts":[]},{"citycode":"0916","adcode":"610730","name":"\u4f5b\u576a\u53bf","center":"107.990551,33.524261","level":"district","districts":[]},{"citycode":"0916","adcode":"610728","name":"\u9547\u5df4\u53bf","center":"107.895015,32.536706","level":"district","districts":[]},{"citycode":"0916","adcode":"610723","name":"\u6d0b\u53bf","center":"107.545678,33.222808","level":"district","districts":[]}]},{"citycode":"029","adcode":"610100","name":"\u897f\u5b89\u5e02","center":"108.939645,34.343207","level":"city","districts":[{"citycode":"029","adcode":"610114","name":"\u960e\u826f\u533a","center":"109.226124,34.662232","level":"district","districts":[]},{"citycode":"029","adcode":"610116","name":"\u957f\u5b89\u533a","center":"108.906944,34.158668","level":"district","districts":[]},{"citycode":"029","adcode":"610117","name":"\u9ad8\u9675\u533a","center":"109.088269,34.53502","level":"district","districts":[]},{"citycode":"029","adcode":"610115","name":"\u4e34\u6f7c\u533a","center":"109.214249,34.367181","level":"district","districts":[]},{"citycode":"029","adcode":"610111","name":"\u705e\u6865\u533a","center":"109.064675,34.273111","level":"district","districts":[]},{"citycode":"029","adcode":"610102","name":"\u65b0\u57ce\u533a","center":"108.960707,34.266601","level":"district","districts":[]},{"citycode":"029","adcode":"610122","name":"\u84dd\u7530\u53bf","center":"109.323473,34.151256","level":"district","districts":[]},{"citycode":"029","adcode":"610103","name":"\u7891\u6797\u533a","center":"108.940681,34.256727","level":"district","districts":[]},{"citycode":"029","adcode":"610104","name":"\u83b2\u6e56\u533a","center":"108.944161,34.26535","level":"district","districts":[]},{"citycode":"029","adcode":"610113","name":"\u96c1\u5854\u533a","center":"108.948592,34.222517","level":"district","districts":[]},{"citycode":"029","adcode":"610112","name":"\u672a\u592e\u533a","center":"108.946665,34.293109","level":"district","districts":[]},{"citycode":"029","adcode":"610124","name":"\u5468\u81f3\u53bf","center":"108.222219,34.163592","level":"district","districts":[]},{"citycode":"029","adcode":"610118","name":"\u9120\u9091\u533a","center":"108.604772,34.108707","level":"district","districts":[]}]},{"citycode":"0912","adcode":"610800","name":"\u6986\u6797\u5e02","center":"109.734104,38.28576","level":"city","districts":[{"citycode":"0912","adcode":"610827","name":"\u7c73\u8102\u53bf","center":"110.183984,37.755134","level":"district","districts":[]},{"citycode":"0912","adcode":"610802","name":"\u6986\u9633\u533a","center":"109.72054,38.277078","level":"district","districts":[]},{"citycode":"0912","adcode":"610881","name":"\u795e\u6728\u5e02","center":"110.466867,38.899742","level":"district","districts":[]},{"citycode":"0912","adcode":"610828","name":"\u4f73\u53bf","center":"110.491345,38.01951","level":"district","districts":[]},{"citycode":"0912","adcode":"610829","name":"\u5434\u5821\u53bf","center":"110.739726,37.452179","level":"district","districts":[]},{"citycode":"0912","adcode":"610825","name":"\u5b9a\u8fb9\u53bf","center":"107.601048,37.594976","level":"district","districts":[]},{"citycode":"0912","adcode":"610824","name":"\u9756\u8fb9\u53bf","center":"108.794153,37.600351","level":"district","districts":[]},{"citycode":"0912","adcode":"610831","name":"\u5b50\u6d32\u53bf","center":"110.035124,37.610554","level":"district","districts":[]},{"citycode":"0912","adcode":"610803","name":"\u6a2a\u5c71\u533a","center":"109.294144,37.962477","level":"district","districts":[]},{"citycode":"0912","adcode":"610822","name":"\u5e9c\u8c37\u53bf","center":"111.016431,39.015658","level":"district","districts":[]},{"citycode":"0912","adcode":"610830","name":"\u6e05\u6da7\u53bf","center":"110.121181,37.088921","level":"district","districts":[]},{"citycode":"0912","adcode":"610826","name":"\u7ee5\u5fb7\u53bf","center":"110.263226,37.502984","level":"district","districts":[]}]},{"citycode":"0910","adcode":"610400","name":"\u54b8\u9633\u5e02","center":"108.708837,34.329896","level":"city","districts":[{"citycode":"0910","adcode":"610422","name":"\u4e09\u539f\u53bf","center":"108.940754,34.617282","level":"district","districts":[]},{"citycode":"0910","adcode":"610404","name":"\u6e2d\u57ce\u533a","center":"108.737062,34.36202","level":"district","districts":[]},{"citycode":"0910","adcode":"610424","name":"\u4e7e\u53bf","center":"108.239316,34.528262","level":"district","districts":[]},{"citycode":"0910","adcode":"610481","name":"\u5174\u5e73\u5e02","center":"108.490497,34.299199","level":"district","districts":[]},{"citycode":"0910","adcode":"610426","name":"\u6c38\u5bff\u53bf","center":"108.142197,34.69188","level":"district","districts":[]},{"citycode":"0910","adcode":"610431","name":"\u6b66\u529f\u53bf","center":"108.200275,34.261026","level":"district","districts":[]},{"citycode":"0910","adcode":"610430","name":"\u6df3\u5316\u53bf","center":"108.580164,34.798596","level":"district","districts":[]},{"citycode":"0910","adcode":"610425","name":"\u793c\u6cc9\u53bf","center":"108.424682,34.481875","level":"district","districts":[]},{"citycode":"0910","adcode":"610428","name":"\u957f\u6b66\u53bf","center":"107.79906,35.206273","level":"district","districts":[]},{"citycode":"0910","adcode":"610429","name":"\u65ec\u9091\u53bf","center":"108.333815,35.111787","level":"district","districts":[]},{"citycode":"0910","adcode":"610482","name":"\u5f6c\u5dde\u5e02","center":"108.081892,35.035702","level":"district","districts":[]},{"citycode":"0910","adcode":"610423","name":"\u6cfe\u9633\u53bf","center":"108.843029,34.526557","level":"district","districts":[]},{"citycode":"0910","adcode":"610403","name":"\u6768\u9675\u533a","center":"108.084661,34.272084","level":"district","districts":[]},{"citycode":"0910","adcode":"610402","name":"\u79e6\u90fd\u533a","center":"108.706347,34.329478","level":"district","districts":[]}]},{"citycode":"0917","adcode":"610300","name":"\u5b9d\u9e21\u5e02","center":"107.237682,34.362862","level":"city","districts":[{"citycode":"0917","adcode":"610327","name":"\u9647\u53bf","center":"106.864404,34.892985","level":"district","districts":[]},{"citycode":"0917","adcode":"610328","name":"\u5343\u9633\u53bf","center":"107.132421,34.642374","level":"district","districts":[]},{"citycode":"0917","adcode":"610303","name":"\u91d1\u53f0\u533a","center":"107.232733,34.397071","level":"district","districts":[]},{"citycode":"0917","adcode":"610302","name":"\u6e2d\u6ee8\u533a","center":"107.155344,34.355068","level":"district","districts":[]},{"citycode":"0917","adcode":"610329","name":"\u9e9f\u6e38\u53bf","center":"107.793524,34.677902","level":"district","districts":[]},{"citycode":"0917","adcode":"610324","name":"\u6276\u98ce\u53bf","center":"107.900157,34.375636","level":"district","districts":[]},{"citycode":"0917","adcode":"610323","name":"\u5c90\u5c71\u53bf","center":"107.621397,34.44373","level":"district","districts":[]},{"citycode":"0917","adcode":"610326","name":"\u7709\u53bf","center":"107.750039,34.274774","level":"district","districts":[]},{"citycode":"0917","adcode":"610330","name":"\u51e4\u53bf","center":"106.515841,33.910797","level":"district","districts":[]},{"citycode":"0917","adcode":"610331","name":"\u592a\u767d\u53bf","center":"107.318932,34.058299","level":"district","districts":[]},{"citycode":"0917","adcode":"610304","name":"\u9648\u4ed3\u533a","center":"107.368993,34.35073","level":"district","districts":[]},{"citycode":"0917","adcode":"610305","name":"\u51e4\u7fd4\u533a","center":"107.401029,34.522167","level":"district","districts":[]}]},{"citycode":"0915","adcode":"610900","name":"\u5b89\u5eb7\u5e02","center":"109.029017,32.685435","level":"city","districts":[{"citycode":"0915","adcode":"610981","name":"\u65ec\u9633\u5e02","center":"109.361783,32.832213","level":"district","districts":[]},{"citycode":"0915","adcode":"610924","name":"\u7d2b\u9633\u53bf","center":"108.534291,32.520209","level":"district","districts":[]},{"citycode":"0915","adcode":"610929","name":"\u767d\u6cb3\u53bf","center":"110.112608,32.80901","level":"district","districts":[]},{"citycode":"0915","adcode":"610926","name":"\u5e73\u5229\u53bf","center":"109.361919,32.389061","level":"district","districts":[]},{"citycode":"0915","adcode":"610927","name":"\u9547\u576a\u53bf","center":"109.526873,31.883672","level":"district","districts":[]},{"citycode":"0915","adcode":"610921","name":"\u6c49\u9634\u53bf","center":"108.508792,32.893057","level":"district","districts":[]},{"citycode":"0915","adcode":"610923","name":"\u5b81\u9655\u53bf","center":"108.314299,33.310284","level":"district","districts":[]},{"citycode":"0915","adcode":"610922","name":"\u77f3\u6cc9\u53bf","center":"108.248061,33.03805","level":"district","districts":[]},{"citycode":"0915","adcode":"610925","name":"\u5c9a\u768b\u53bf","center":"108.902049,32.307001","level":"district","districts":[]},{"citycode":"0915","adcode":"610902","name":"\u6c49\u6ee8\u533a","center":"109.026928,32.695436","level":"district","districts":[]}]},{"citycode":"0911","adcode":"610600","name":"\u5ef6\u5b89\u5e02","center":"109.49468,36.650109","level":"city","districts":[{"citycode":"0911","adcode":"610621","name":"\u5ef6\u957f\u53bf","center":"110.012455,36.579354","level":"district","districts":[]},{"citycode":"0911","adcode":"610626","name":"\u5434\u8d77\u53bf","center":"108.176501,36.92746","level":"district","districts":[]},{"citycode":"0911","adcode":"610602","name":"\u5b9d\u5854\u533a","center":"109.489726,36.585138","level":"district","districts":[]},{"citycode":"0911","adcode":"610627","name":"\u7518\u6cc9\u53bf","center":"109.351046,36.276645","level":"district","districts":[]},{"citycode":"0911","adcode":"610603","name":"\u5b89\u585e\u533a","center":"109.329236,36.864571","level":"district","districts":[]},{"citycode":"0911","adcode":"610681","name":"\u5b50\u957f\u5e02","center":"109.675284,37.142462","level":"district","districts":[]},{"citycode":"0911","adcode":"610622","name":"\u5ef6\u5ddd\u53bf","center":"110.193503,36.878324","level":"district","districts":[]},{"citycode":"0911","adcode":"610625","name":"\u5fd7\u4e39\u53bf","center":"108.767816,36.822232","level":"district","districts":[]},{"citycode":"0911","adcode":"610630","name":"\u5b9c\u5ddd\u53bf","center":"110.168963,36.050178","level":"district","districts":[]},{"citycode":"0911","adcode":"610631","name":"\u9ec4\u9f99\u53bf","center":"109.84029,35.584655","level":"district","districts":[]},{"citycode":"0911","adcode":"610629","name":"\u6d1b\u5ddd\u53bf","center":"109.43249,35.762626","level":"district","districts":[]},{"citycode":"0911","adcode":"610628","name":"\u5bcc\u53bf","center":"109.37884,35.988111","level":"district","districts":[]},{"citycode":"0911","adcode":"610632","name":"\u9ec4\u9675\u53bf","center":"109.262919,35.579421","level":"district","districts":[]}]},{"citycode":"0919","adcode":"610200","name":"\u94dc\u5ddd\u5e02","center":"108.945116,34.897133","level":"city","districts":[{"citycode":"0919","adcode":"610203","name":"\u5370\u53f0\u533a","center":"109.099848,35.11454","level":"district","districts":[]},{"citycode":"0919","adcode":"610202","name":"\u738b\u76ca\u533a","center":"109.075615,35.068925","level":"district","districts":[]},{"citycode":"0919","adcode":"610222","name":"\u5b9c\u541b\u53bf","center":"109.117063,35.398624","level":"district","districts":[]},{"citycode":"0919","adcode":"610204","name":"\u8000\u5dde\u533a","center":"108.980095,34.909685","level":"district","districts":[]}]},{"citycode":"0913","adcode":"610500","name":"\u6e2d\u5357\u5e02","center":"109.470962,34.520632","level":"city","districts":[{"citycode":"0913","adcode":"610527","name":"\u767d\u6c34\u53bf","center":"109.590501,35.177497","level":"district","districts":[]},{"citycode":"0913","adcode":"610525","name":"\u6f84\u57ce\u53bf","center":"109.932439,35.190256","level":"district","districts":[]},{"citycode":"0913","adcode":"610503","name":"\u534e\u5dde\u533a","center":"109.775765,34.497019","level":"district","districts":[]},{"citycode":"0913","adcode":"610582","name":"\u534e\u9634\u5e02","center":"110.092286,34.566552","level":"district","districts":[]},{"citycode":"0913","adcode":"610502","name":"\u4e34\u6e2d\u533a","center":"109.510051,34.498902","level":"district","districts":[]},{"citycode":"0913","adcode":"610526","name":"\u84b2\u57ce\u53bf","center":"109.586263,34.955755","level":"district","districts":[]},{"citycode":"0913","adcode":"610528","name":"\u5bcc\u5e73\u53bf","center":"109.179903,34.751599","level":"district","districts":[]},{"citycode":"0913","adcode":"610581","name":"\u97e9\u57ce\u5e02","center":"110.44295,35.477145","level":"district","districts":[]},{"citycode":"0913","adcode":"610524","name":"\u5408\u9633\u53bf","center":"110.149412,35.237881","level":"district","districts":[]},{"citycode":"0913","adcode":"610523","name":"\u5927\u8354\u53bf","center":"109.941784,34.797073","level":"district","districts":[]},{"citycode":"0913","adcode":"610522","name":"\u6f7c\u5173\u53bf","center":"110.246105,34.544294","level":"district","districts":[]}]}]},{"citycode":[],"adcode":"530000","name":"\u4e91\u5357\u7701","center":"102.709372,25.046432","level":"province","districts":[{"citycode":"0870","adcode":"530600","name":"\u662d\u901a\u5e02","center":"103.717078,27.338185","level":"city","districts":[{"citycode":"0870","adcode":"530626","name":"\u7ee5\u6c5f\u53bf","center":"103.968995,28.592119","level":"district","districts":[]},{"citycode":"0870","adcode":"530625","name":"\u6c38\u5584\u53bf","center":"103.63756,28.229018","level":"district","districts":[]},{"citycode":"0870","adcode":"530681","name":"\u6c34\u5bcc\u5e02","center":"104.415964,28.629951","level":"district","districts":[]},{"citycode":"0870","adcode":"530629","name":"\u5a01\u4fe1\u53bf","center":"105.049012,27.846839","level":"district","districts":[]},{"citycode":"0870","adcode":"530622","name":"\u5de7\u5bb6\u53bf","center":"102.935343,26.896904","level":"district","districts":[]},{"citycode":"0870","adcode":"530623","name":"\u76d0\u6d25\u53bf","center":"104.234458,28.108475","level":"district","districts":[]},{"citycode":"0870","adcode":"530628","name":"\u5f5d\u826f\u53bf","center":"104.055991,27.624277","level":"district","districts":[]},{"citycode":"0870","adcode":"530621","name":"\u9c81\u7538\u53bf","center":"103.557969,27.186668","level":"district","districts":[]},{"citycode":"0870","adcode":"530627","name":"\u9547\u96c4\u53bf","center":"104.873486,27.441527","level":"district","districts":[]},{"citycode":"0870","adcode":"530602","name":"\u662d\u9633\u533a","center":"103.706323,27.320035","level":"district","districts":[]},{"citycode":"0870","adcode":"530624","name":"\u5927\u5173\u53bf","center":"103.891164,27.748054","level":"district","districts":[]}]},{"citycode":"0874","adcode":"530300","name":"\u66f2\u9756\u5e02","center":"103.796288,25.490866","level":"city","districts":[{"citycode":"0874","adcode":"530326","name":"\u4f1a\u6cfd\u53bf","center":"103.297155,26.417116","level":"district","districts":[]},{"citycode":"0874","adcode":"530304","name":"\u9a6c\u9f99\u533a","center":"103.578459,25.428102","level":"district","districts":[]},{"citycode":"0874","adcode":"530323","name":"\u5e08\u5b97\u53bf","center":"103.985224,24.822471","level":"district","districts":[]},{"citycode":"0874","adcode":"530302","name":"\u9e92\u9e9f\u533a","center":"103.804406,25.496472","level":"district","districts":[]},{"citycode":"0874","adcode":"530322","name":"\u9646\u826f\u53bf","center":"103.66671,25.0293","level":"district","districts":[]},{"citycode":"0874","adcode":"530303","name":"\u6cbe\u76ca\u533a","center":"103.822104,25.600424","level":"district","districts":[]},{"citycode":"0874","adcode":"530381","name":"\u5ba3\u5a01\u5e02","center":"104.104255,26.218956","level":"district","districts":[]},{"citycode":"0874","adcode":"530325","name":"\u5bcc\u6e90\u53bf","center":"104.255082,25.674217","level":"district","districts":[]},{"citycode":"0874","adcode":"530324","name":"\u7f57\u5e73\u53bf","center":"104.297124,24.865388","level":"district","districts":[]}]},{"citycode":"0873","adcode":"532500","name":"\u7ea2\u6cb3\u54c8\u5c3c\u65cf\u5f5d\u65cf\u81ea\u6cbb\u5dde","center":"103.374873,23.363129","level":"city","districts":[{"citycode":"0873","adcode":"532504","name":"\u5f25\u52d2\u5e02","center":"103.414817,24.411774","level":"district","districts":[]},{"citycode":"0873","adcode":"532502","name":"\u5f00\u8fdc\u5e02","center":"103.266908,23.714518","level":"district","districts":[]},{"citycode":"0873","adcode":"532524","name":"\u5efa\u6c34\u53bf","center":"102.826178,23.635824","level":"district","districts":[]},{"citycode":"0873","adcode":"532529","name":"\u7ea2\u6cb3\u53bf","center":"102.420566,23.368946","level":"district","districts":[]},{"citycode":"0873","adcode":"532523","name":"\u5c4f\u8fb9\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"103.675458,22.986733","level":"district","districts":[]},{"citycode":"0873","adcode":"532531","name":"\u7eff\u6625\u53bf","center":"102.392655,22.993654","level":"district","districts":[]},{"citycode":"0873","adcode":"532501","name":"\u4e2a\u65e7\u5e02","center":"103.152663,23.389935","level":"district","districts":[]},{"citycode":"0873","adcode":"532525","name":"\u77f3\u5c4f\u53bf","center":"102.496138,23.705707","level":"district","districts":[]},{"citycode":"0873","adcode":"532503","name":"\u8499\u81ea\u5e02","center":"103.364936,23.396111","level":"district","districts":[]},{"citycode":"0873","adcode":"532527","name":"\u6cf8\u897f\u53bf","center":"103.76615,24.531981","level":"district","districts":[]},{"citycode":"0873","adcode":"532528","name":"\u5143\u9633\u53bf","center":"102.835358,23.219671","level":"district","districts":[]},{"citycode":"0873","adcode":"532530","name":"\u91d1\u5e73\u82d7\u65cf\u7476\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","center":"103.227982,22.769894","level":"district","districts":[]},{"citycode":"0873","adcode":"532532","name":"\u6cb3\u53e3\u7476\u65cf\u81ea\u6cbb\u53bf","center":"103.939265,22.529438","level":"district","districts":[]}]},{"citycode":"0886","adcode":"533300","name":"\u6012\u6c5f\u5088\u50f3\u65cf\u81ea\u6cbb\u5dde","center":"98.8566,25.817555","level":"city","districts":[{"citycode":"0886","adcode":"533324","name":"\u8d21\u5c71\u72ec\u9f99\u65cf\u6012\u65cf\u81ea\u6cbb\u53bf","center":"98.666279,27.740839","level":"district","districts":[]},{"citycode":"0886","adcode":"533323","name":"\u798f\u8d21\u53bf","center":"98.869132,26.901831","level":"district","districts":[]},{"citycode":"0886","adcode":"533325","name":"\u5170\u576a\u767d\u65cf\u666e\u7c73\u65cf\u81ea\u6cbb\u53bf","center":"99.416628,26.453622","level":"district","districts":[]},{"citycode":"0886","adcode":"533301","name":"\u6cf8\u6c34\u5e02","center":"98.857723,25.822579","level":"district","districts":[]}]},{"citycode":"0877","adcode":"530400","name":"\u7389\u6eaa\u5e02","center":"102.526673,24.346786","level":"city","districts":[{"citycode":"0877","adcode":"530425","name":"\u6613\u95e8\u53bf","center":"102.161947,24.672156","level":"district","districts":[]},{"citycode":"0877","adcode":"530424","name":"\u534e\u5b81\u53bf","center":"102.928914,24.19322","level":"district","districts":[]},{"citycode":"0877","adcode":"530402","name":"\u7ea2\u5854\u533a","center":"102.540122,24.341215","level":"district","districts":[]},{"citycode":"0877","adcode":"530403","name":"\u6c5f\u5ddd\u533a","center":"102.748499,24.299441","level":"district","districts":[]},{"citycode":"0877","adcode":"530481","name":"\u6f84\u6c5f\u5e02","center":"102.904181,24.675536","level":"district","districts":[]},{"citycode":"0877","adcode":"530428","name":"\u5143\u6c5f\u54c8\u5c3c\u65cf\u5f5d\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","center":"101.998138,23.596068","level":"district","districts":[]},{"citycode":"0877","adcode":"530427","name":"\u65b0\u5e73\u5f5d\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","center":"101.990805,24.070436","level":"district","districts":[]},{"citycode":"0877","adcode":"530426","name":"\u5ce8\u5c71\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"102.405698,24.168899","level":"district","districts":[]},{"citycode":"0877","adcode":"530423","name":"\u901a\u6d77\u53bf","center":"102.725538,24.11114","level":"district","districts":[]}]},{"citycode":"0872","adcode":"532900","name":"\u5927\u7406\u767d\u65cf\u81ea\u6cbb\u5dde","center":"100.267608,25.606548","level":"city","districts":[{"citycode":"0872","adcode":"532931","name":"\u5251\u5ddd\u53bf","center":"99.905041,26.536889","level":"district","districts":[]},{"citycode":"0872","adcode":"532922","name":"\u6f3e\u6fde\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"99.958089,25.669944","level":"district","districts":[]},{"citycode":"0872","adcode":"532901","name":"\u5927\u7406\u5e02","center":"100.301614,25.678466","level":"district","districts":[]},{"citycode":"0872","adcode":"532930","name":"\u6d31\u6e90\u53bf","center":"99.962294,26.11337","level":"district","districts":[]},{"citycode":"0872","adcode":"532929","name":"\u4e91\u9f99\u53bf","center":"99.371021,25.885733","level":"district","districts":[]},{"citycode":"0872","adcode":"532928","name":"\u6c38\u5e73\u53bf","center":"99.54063,25.464134","level":"district","districts":[]},{"citycode":"0872","adcode":"532927","name":"\u5dcd\u5c71\u5f5d\u65cf\u56de\u65cf\u81ea\u6cbb\u53bf","center":"100.306977,25.227065","level":"district","districts":[]},{"citycode":"0872","adcode":"532923","name":"\u7965\u4e91\u53bf","center":"100.549961,25.483727","level":"district","districts":[]},{"citycode":"0872","adcode":"532925","name":"\u5f25\u6e21\u53bf","center":"100.491038,25.343778","level":"district","districts":[]},{"citycode":"0872","adcode":"532926","name":"\u5357\u6da7\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"100.510333,25.032353","level":"district","districts":[]},{"citycode":"0872","adcode":"532924","name":"\u5bbe\u5ddd\u53bf","center":"100.590274,25.830491","level":"district","districts":[]},{"citycode":"0872","adcode":"532932","name":"\u9e64\u5e86\u53bf","center":"100.176331,26.560122","level":"district","districts":[]}]},{"citycode":"0887","adcode":"533400","name":"\u8fea\u5e86\u85cf\u65cf\u81ea\u6cbb\u5dde","center":"99.70211,27.819149","level":"city","districts":[{"citycode":"0887","adcode":"533401","name":"\u9999\u683c\u91cc\u62c9\u5e02","center":"99.743582,27.842185","level":"district","districts":[]},{"citycode":"0887","adcode":"533423","name":"\u7ef4\u897f\u5088\u50f3\u65cf\u81ea\u6cbb\u53bf","center":"99.300937,27.163808","level":"district","districts":[]},{"citycode":"0887","adcode":"533422","name":"\u5fb7\u94a6\u53bf","center":"98.917851,28.464213","level":"district","districts":[]}]},{"citycode":"0883","adcode":"530900","name":"\u4e34\u6ca7\u5e02","center":"100.088837,23.884175","level":"city","districts":[{"citycode":"0883","adcode":"530921","name":"\u51e4\u5e86\u53bf","center":"99.92873,24.580559","level":"district","districts":[]},{"citycode":"0883","adcode":"530922","name":"\u4e91\u53bf","center":"100.1303,24.444461","level":"district","districts":[]},{"citycode":"0883","adcode":"530902","name":"\u4e34\u7fd4\u533a","center":"100.082073,23.895298","level":"district","districts":[]},{"citycode":"0883","adcode":"530925","name":"\u53cc\u6c5f\u62c9\u795c\u65cf\u4f64\u65cf\u5e03\u6717\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","center":"99.828225,23.472719","level":"district","districts":[]},{"citycode":"0883","adcode":"530927","name":"\u6ca7\u6e90\u4f64\u65cf\u81ea\u6cbb\u53bf","center":"99.245894,23.146758","level":"district","districts":[]},{"citycode":"0883","adcode":"530924","name":"\u9547\u5eb7\u53bf","center":"98.825389,23.762886","level":"district","districts":[]},{"citycode":"0883","adcode":"530926","name":"\u803f\u9a6c\u50a3\u65cf\u4f64\u65cf\u81ea\u6cbb\u53bf","center":"99.397126,23.538092","level":"district","districts":[]},{"citycode":"0883","adcode":"530923","name":"\u6c38\u5fb7\u53bf","center":"99.258702,24.018463","level":"district","districts":[]}]},{"citycode":"0875","adcode":"530500","name":"\u4fdd\u5c71\u5e02","center":"99.161489,25.112018","level":"city","districts":[{"citycode":"0875","adcode":"530581","name":"\u817e\u51b2\u5e02","center":"98.490276,25.020283","level":"district","districts":[]},{"citycode":"0875","adcode":"530502","name":"\u9686\u9633\u533a","center":"99.165638,25.121137","level":"district","districts":[]},{"citycode":"0875","adcode":"530521","name":"\u65bd\u7538\u53bf","center":"99.18919,24.723084","level":"district","districts":[]},{"citycode":"0875","adcode":"530523","name":"\u9f99\u9675\u53bf","center":"98.68941,24.586703","level":"district","districts":[]},{"citycode":"0875","adcode":"530524","name":"\u660c\u5b81\u53bf","center":"99.605105,24.827739","level":"district","districts":[]}]},{"citycode":"0888","adcode":"530700","name":"\u4e3d\u6c5f\u5e02","center":"100.225936,26.855165","level":"city","districts":[{"citycode":"0888","adcode":"530724","name":"\u5b81\u8497\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"100.851083,27.282207","level":"district","districts":[]},{"citycode":"0888","adcode":"530722","name":"\u6c38\u80dc\u53bf","center":"100.750907,26.684215","level":"district","districts":[]},{"citycode":"0888","adcode":"530702","name":"\u53e4\u57ce\u533a","center":"100.22583,26.876468","level":"district","districts":[]},{"citycode":"0888","adcode":"530721","name":"\u7389\u9f99\u7eb3\u897f\u65cf\u81ea\u6cbb\u53bf","center":"100.236967,26.821494","level":"district","districts":[]},{"citycode":"0888","adcode":"530723","name":"\u534e\u576a\u53bf","center":"101.265373,26.629598","level":"district","districts":[]}]},{"citycode":"0691","adcode":"532800","name":"\u897f\u53cc\u7248\u7eb3\u50a3\u65cf\u81ea\u6cbb\u5dde","center":"100.797002,22.009037","level":"city","districts":[{"citycode":"0691","adcode":"532822","name":"\u52d0\u6d77\u53bf","center":"100.452444,21.957323","level":"district","districts":[]},{"citycode":"0691","adcode":"532823","name":"\u52d0\u814a\u53bf","center":"101.564635,21.459233","level":"district","districts":[]},{"citycode":"0691","adcode":"532801","name":"\u666f\u6d2a\u5e02","center":"100.799595,22.011792","level":"district","districts":[]}]},{"citycode":"0878","adcode":"532300","name":"\u695a\u96c4\u5f5d\u65cf\u81ea\u6cbb\u5dde","center":"101.528304,25.045678","level":"city","districts":[{"citycode":"0878","adcode":"532326","name":"\u5927\u59da\u53bf","center":"101.336576,25.729551","level":"district","districts":[]},{"citycode":"0878","adcode":"532328","name":"\u5143\u8c0b\u53bf","center":"101.87434,25.704499","level":"district","districts":[]},{"citycode":"0878","adcode":"532325","name":"\u59da\u5b89\u53bf","center":"101.241632,25.504287","level":"district","districts":[]},{"citycode":"0878","adcode":"532323","name":"\u725f\u5b9a\u53bf","center":"101.546898,25.312939","level":"district","districts":[]},{"citycode":"0878","adcode":"532302","name":"\u7984\u4e30\u5e02","center":"102.079082,25.151061","level":"district","districts":[]},{"citycode":"0878","adcode":"532301","name":"\u695a\u96c4\u5e02","center":"101.546242,25.032945","level":"district","districts":[]},{"citycode":"0878","adcode":"532324","name":"\u5357\u534e\u53bf","center":"101.283236,25.200163","level":"district","districts":[]},{"citycode":"0878","adcode":"532327","name":"\u6c38\u4ec1\u53bf","center":"101.666795,26.049522","level":"district","districts":[]},{"citycode":"0878","adcode":"532322","name":"\u53cc\u67cf\u53bf","center":"101.642369,24.688814","level":"district","districts":[]},{"citycode":"0878","adcode":"532329","name":"\u6b66\u5b9a\u53bf","center":"102.403949,25.530731","level":"district","districts":[]}]},{"citycode":"0871","adcode":"530100","name":"\u6606\u660e\u5e02","center":"102.833669,24.88149","level":"city","districts":[{"citycode":"0871","adcode":"530113","name":"\u4e1c\u5ddd\u533a","center":"103.187825,26.082997","level":"district","districts":[]},{"citycode":"0871","adcode":"530102","name":"\u4e94\u534e\u533a","center":"102.707262,25.043635","level":"district","districts":[]},{"citycode":"0871","adcode":"530115","name":"\u664b\u5b81\u533a","center":"102.595325,24.669077","level":"district","districts":[]},{"citycode":"0871","adcode":"530181","name":"\u5b89\u5b81\u5e02","center":"102.47865,24.919831","level":"district","districts":[]},{"citycode":"0871","adcode":"530124","name":"\u5bcc\u6c11\u53bf","center":"102.497722,25.221924","level":"district","districts":[]},{"citycode":"0871","adcode":"530112","name":"\u897f\u5c71\u533a","center":"102.664426,25.038039","level":"district","districts":[]},{"citycode":"0871","adcode":"530103","name":"\u76d8\u9f99\u533a","center":"102.751643,25.116512","level":"district","districts":[]},{"citycode":"0871","adcode":"530126","name":"\u77f3\u6797\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"103.290536,24.771761","level":"district","districts":[]},{"citycode":"0871","adcode":"530128","name":"\u7984\u529d\u5f5d\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","center":"102.471993,25.551768","level":"district","districts":[]},{"citycode":"0871","adcode":"530111","name":"\u5b98\u6e21\u533a","center":"102.748888,24.950285","level":"district","districts":[]},{"citycode":"0871","adcode":"530114","name":"\u5448\u8d21\u533a","center":"102.822104,24.885738","level":"district","districts":[]},{"citycode":"0871","adcode":"530125","name":"\u5b9c\u826f\u53bf","center":"103.141674,24.91983","level":"district","districts":[]},{"citycode":"0871","adcode":"530127","name":"\u5d69\u660e\u53bf","center":"103.043384,25.327273","level":"district","districts":[]},{"citycode":"0871","adcode":"530129","name":"\u5bfb\u7538\u56de\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"103.256559,25.558163","level":"district","districts":[]}]},{"citycode":"0879","adcode":"530800","name":"\u666e\u6d31\u5e02","center":"100.966011,22.825229","level":"city","districts":[{"citycode":"0879","adcode":"530825","name":"\u9547\u6c85\u5f5d\u65cf\u54c8\u5c3c\u65cf\u62c9\u795c\u65cf\u81ea\u6cbb\u53bf","center":"101.108733,24.00445","level":"district","districts":[]},{"citycode":"0879","adcode":"530822","name":"\u58a8\u6c5f\u54c8\u5c3c\u65cf\u81ea\u6cbb\u53bf","center":"101.692461,23.431894","level":"district","districts":[]},{"citycode":"0879","adcode":"530824","name":"\u666f\u8c37\u50a3\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"100.702807,23.496987","level":"district","districts":[]},{"citycode":"0879","adcode":"530828","name":"\u6f9c\u6ca7\u62c9\u795c\u65cf\u81ea\u6cbb\u53bf","center":"99.932045,22.555799","level":"district","districts":[]},{"citycode":"0879","adcode":"530829","name":"\u897f\u76df\u4f64\u65cf\u81ea\u6cbb\u53bf","center":"99.59016,22.644237","level":"district","districts":[]},{"citycode":"0879","adcode":"530826","name":"\u6c5f\u57ce\u54c8\u5c3c\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"101.862344,22.585858","level":"district","districts":[]},{"citycode":"0879","adcode":"530823","name":"\u666f\u4e1c\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"100.833877,24.446731","level":"district","districts":[]},{"citycode":"0879","adcode":"530802","name":"\u601d\u8305\u533a","center":"100.977069,22.786769","level":"district","districts":[]},{"citycode":"0879","adcode":"530821","name":"\u5b81\u6d31\u54c8\u5c3c\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","center":"101.045743,23.048809","level":"district","districts":[]},{"citycode":"0879","adcode":"530827","name":"\u5b5f\u8fde\u50a3\u65cf\u62c9\u795c\u65cf\u4f64\u65cf\u81ea\u6cbb\u53bf","center":"99.584225,22.329053","level":"district","districts":[]}]},{"citycode":"0692","adcode":"533100","name":"\u5fb7\u5b8f\u50a3\u65cf\u666f\u9887\u65cf\u81ea\u6cbb\u5dde","center":"98.585621,24.433146","level":"city","districts":[{"citycode":"0692","adcode":"533122","name":"\u6881\u6cb3\u53bf","center":"98.296584,24.804275","level":"district","districts":[]},{"citycode":"0692","adcode":"533103","name":"\u8292\u5e02","center":"98.58809,24.433766","level":"district","districts":[]},{"citycode":"0692","adcode":"533124","name":"\u9647\u5ddd\u53bf","center":"97.793359,24.182347","level":"district","districts":[]},{"citycode":"0692","adcode":"533123","name":"\u76c8\u6c5f\u53bf","center":"97.943474,24.691325","level":"district","districts":[]},{"citycode":"0692","adcode":"533102","name":"\u745e\u4e3d\u5e02","center":"97.855423,24.018377","level":"district","districts":[]}]},{"citycode":"0876","adcode":"532600","name":"\u6587\u5c71\u58ee\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","center":"104.21567,23.400983","level":"city","districts":[{"citycode":"0876","adcode":"532626","name":"\u4e18\u5317\u53bf","center":"104.166713,24.05064","level":"district","districts":[]},{"citycode":"0876","adcode":"532627","name":"\u5e7f\u5357\u53bf","center":"105.055075,24.046378","level":"district","districts":[]},{"citycode":"0876","adcode":"532622","name":"\u781a\u5c71\u53bf","center":"104.336905,23.605075","level":"district","districts":[]},{"citycode":"0876","adcode":"532601","name":"\u6587\u5c71\u5e02","center":"104.233237,23.38683","level":"district","districts":[]},{"citycode":"0876","adcode":"532625","name":"\u9a6c\u5173\u53bf","center":"104.394524,23.013108","level":"district","districts":[]},{"citycode":"0876","adcode":"532628","name":"\u5bcc\u5b81\u53bf","center":"105.630921,23.625072","level":"district","districts":[]},{"citycode":"0876","adcode":"532624","name":"\u9ebb\u6817\u5761\u53bf","center":"104.702732,23.125837","level":"district","districts":[]},{"citycode":"0876","adcode":"532623","name":"\u897f\u7574\u53bf","center":"104.671802,23.437707","level":"district","districts":[]}]}]},{"citycode":"010","adcode":"110000","name":"\u5317\u4eac\u5e02","center":"116.407387,39.904179","level":"province","districts":[{"citycode":"010","adcode":"110100","name":"\u5317\u4eac","center":"116.405285,39.904989","level":"city","districts":[{"citycode":"010","adcode":"110116","name":"\u6000\u67d4\u533a","center":"116.631974,40.317003","level":"district","districts":[]},{"citycode":"010","adcode":"110109","name":"\u95e8\u5934\u6c9f\u533a","center":"116.101668,39.940842","level":"district","districts":[]},{"citycode":"010","adcode":"110113","name":"\u987a\u4e49\u533a","center":"116.661474,40.149891","level":"district","districts":[]},{"citycode":"010","adcode":"110101","name":"\u4e1c\u57ce\u533a","center":"116.416334,39.928359","level":"district","districts":[]},{"citycode":"010","adcode":"110114","name":"\u660c\u5e73\u533a","center":"116.231034,40.220952","level":"district","districts":[]},{"citycode":"010","adcode":"110115","name":"\u5927\u5174\u533a","center":"116.341483,39.726917","level":"district","districts":[]},{"citycode":"010","adcode":"110111","name":"\u623f\u5c71\u533a","center":"116.143426,39.748889","level":"district","districts":[]},{"citycode":"010","adcode":"110117","name":"\u5e73\u8c37\u533a","center":"117.121589,40.140805","level":"district","districts":[]},{"citycode":"010","adcode":"110105","name":"\u671d\u9633\u533a","center":"116.443136,39.921444","level":"district","districts":[]},{"citycode":"010","adcode":"110107","name":"\u77f3\u666f\u5c71\u533a","center":"116.223015,39.906304","level":"district","districts":[]},{"citycode":"010","adcode":"110106","name":"\u4e30\u53f0\u533a","center":"116.286726,39.858538","level":"district","districts":[]},{"citycode":"010","adcode":"110108","name":"\u6d77\u6dc0\u533a","center":"116.2977,39.959893","level":"district","districts":[]},{"citycode":"010","adcode":"110102","name":"\u897f\u57ce\u533a","center":"116.36585,39.9126","level":"district","districts":[]},{"citycode":"010","adcode":"110118","name":"\u5bc6\u4e91\u533a","center":"116.843351,40.377058","level":"district","districts":[]},{"citycode":"010","adcode":"110112","name":"\u901a\u5dde\u533a","center":"116.72923,39.916403","level":"district","districts":[]},{"citycode":"010","adcode":"110119","name":"\u5ef6\u5e86\u533a","center":"115.974609,40.457033","level":"district","districts":[]}]}]}]}]}')},307:function(e,t,c){"use strict";var i=new(c(308))({charCase:0});e.exports=i},308:function(e,t,c){"use strict";var i=function(){function e(e,t){for(var c=0;c40869||r<19968)c+=d;else{var s=this._getFullChar(d);!1!==s&&(c+=s)}}return 1===this.options.charCase?c=c.toLowerCase():2!==this.options.charCase||(c=c.toUpperCase()),c}},{key:"_getFullChar",value:function(e){for(var t in this.full_dict)if(-1!=this.full_dict[t].indexOf(e))return this._capitalize(t);return!1}},{key:"_capitalize",value:function(e){if(e.length>0)return e.substr(0,1).toUpperCase()+e.substr(1,e.length)}},{key:"_getChar",value:function(e){var t=e.charCodeAt(0);return t>40869||t<19968?e:this.options.checkPolyphone&&this.polyphone[t]?this.polyphone[t]:this.char_dict.charAt(t-19968)}},{key:"_getResult",value:function(e){if(!this.options.checkPolyphone)return e.join("");for(var t=[""],c=0,i=e.length;c=200&&a<300)){e.next=3;break}return e.abrupt("return",s);case 3:if(401!==a){e.next=7;break}return e.next=6,y(t,n,o);case 6:return e.abrupt("return",e.sent);case 7:return uni.showToast({title:s.message||"\u8bf7\u6c42\u5931\u8d25",icon:"none"}),e.abrupt("return",Promise.reject(s));case 9:case"end":return e.stop()}}),e)})));return function(t,r,n,o){return e.apply(this,arguments)}}(),v=function(){var t=(0,a.default)(i.default.mark((function t(r,n){var a,u,c;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(u=uni.getStorageSync("baseUrl"),""==uni.getStorageSync("setVersion").VersionCode&&(0,d.setVersion)(),u){t.next=5;break}return t.next=5,new Promise((function(t,r){uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType},success:function(r){200==r.data.code&&(uni.setStorageSync("baseUrl",r.data.data.url),u=r.data.data.url,t(u)),e("log","\u8bf7\u6c42\u6210\u529f",r.data," at utils/request.js:121")},fail:function(t){e("log","\u8bf7\u6c42\u5931\u8d25",t," at utils/request.js:124")},complete:function(){e("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/request.js:127")}})}));case 5:return o=u,e("log","\u751f\u4ea7\u73af\u5883"," at utils/request.js:147"),a={baseURL:o},(0,s.default)(a,"baseURL",o),(0,s.default)(a,"header",{"content-type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType}),(0,s.default)(a,"timeout",6e4),r=p(p(p({},c=a),r),{},{url:n?r.url:"".concat(c.baseURL).concat(r.url)}),r=m(r),t.abrupt("return",new Promise((function(e,t){uni.request(p(p({},r),{},{success:function(n){e(x(r,n,e,t))},fail:function(e){uni.showToast({title:"\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5",icon:"none"}),t(e)}}))})));case 10:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}();function y(e,t,r){return b.apply(this,arguments)}function b(){return(b=(0,a.default)(i.default.mark((function e(t,r,n){var o,a;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((0,u.getToken)()){e.next=2;break}return e.abrupt("return",C());case 2:if(!l){e.next=4;break}return e.abrupt("return",g((function(e){t.header.Authorization="Bearer ".concat(e),v(t,!0).then(r).catch(n)})));case 4:return l=!0,e.prev=5,e.next=8,w();case 8:return o=e.sent,(0,u.setToken)(o),h(o),t.header.Authorization="Bearer ".concat(o),e.next=14,v(t,!0);case 14:return a=e.sent,e.abrupt("return",a);case 18:return e.prev=18,e.t0=e.catch(5),(0,u.removeToken)(),C(),e.abrupt("return",e.t0);case 23:return e.prev=23,l=!1,e.finish(23);case 26:case"end":return e.stop()}}),e,null,[[5,18,23,26]])})))).apply(this,arguments)}function w(){return _.apply(this,arguments)}function _(){return(_=(0,a.default)(i.default.mark((function e(){var t;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(uni.getStorageSync("refreshToken")){e.next=3;break}throw new Error("No refresh token");case 3:return e.next=5,v({url:"/sj/refreshtoken",data:{refresh_token:uni.getStorageSync("refreshToken"),deviceid:getApp().globalData.deviceid},method:"POST"});case 5:if(1!=(t=e.sent).state&&200!=t.code){e.next=10;break}return uni.setStorageSync("accessToken",t.access_token),uni.setStorageSync("refreshToken",t.refresh_token),e.abrupt("return",t.access_token);case 10:throw new Error("Refresh token failed");case 11:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function C(){uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}var S={get:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return v(p({url:e,data:t,method:"GET"},r))},post:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return v(p({url:e,data:t,method:"POST"},r))},put:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return v(p({url:e,data:t,method:"PUT"},r))},delete:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return v(p({url:e,data:t,method:"DELETE"},r))}};t.default=S}).call(this,r(2).default)},129:function(e,t,r){"use strict";var n=r(217),o=r(182),i=r(0);var a=Object(i.a)(o.default,n.b,n.c,!1,null,null,"8c886c6e",!1,n.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(275).default,this.options.style):Object.assign(this.options.style,r(275).default)}).call(a),t.default=a.exports},13:function(e,t,r){var n=r(5).default,o=r(20);e.exports=function(e){var t=o(e,"string");return"symbol"==n(t)?t:t+""},e.exports.__esModule=!0,e.exports.default=e.exports},14:function(e,t,r){"use strict";r.r(t);var n=r(10),o=r.n(n);for(var i in n)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(i);t.default=o.a},17:function(e,t,r){Vue.prototype.__$appStyle__={},Vue.prototype.__merge_style&&Vue.prototype.__merge_style(r(18).default,Vue.prototype.__$appStyle__)},18:function(e,t,r){"use strict";r.r(t);var n=r(7),o=r.n(n);for(var i in n)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(i);t.default=o.a},182:function(e,t,r){"use strict";var n=r(183),o=r.n(n);t.default=o.a},183:function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(3)),i=n(r(4)),a=n(r(12)),s=n(r(28)),u=n(r(29)),d={data:function(){return{isShowPer:!1,mapHeight:0,addressInfo:{call_phone:null,house_number:null,is_default:2,latitude:"",longitude:"",name:null,server_address:null},mapCtx:"",isGetDefault:!1,isAdd:!1,markers:[]}},onLoad:function(e){var t=this,r=JSON.parse(decodeURIComponent(e.data));delete r.userid,delete r.is_del,delete r.is_ok,this.addressInfo=r,this.$nextTick((function(){t.getCurrentLocation();var e=uni.getWindowInfo().safeArea.height;t.mapHeight=2*parseInt(e)-826-70,t.mapCtx=uni.createMapContext("map",t),t.mapCtx.on("end",t.onRegionChange)}))},methods:{getPlaceAround:function(){var e,t=this;return e=t.searchKeyword?{key:"30b7eb1a1b2f88edc085b9b3ee9a2188",location:"".concat(t.addressInfo.longitude,",").concat(t.addressInfo.latitude),keywords:t.searchKeyword,page:1,offset:10}:{key:"30b7eb1a1b2f88edc085b9b3ee9a2188",location:"".concat(t.addressInfo.longitude,",").concat(t.addressInfo.latitude),page:1,offset:10},new Promise((function(r,n){uni.request({url:"https://restapi.amap.com/v3/place/around",method:"GET",data:e,success:function(e){t.searchResults=e.data.pois}})}))},showPermissionDialog:function(e,t){return new Promise((function(r){uni.showModal({title:e,content:t,confirmText:"\u53bb\u5f00\u542f",success:function(e){r(e.confirm)}})}))},getNowLocation:function(e){var t=e.split(",");this.longitude=t[0],this.latitude=t[1],this.markers=[{latitude:this.latitude,longitude:this.longitude,iconPath:"/static/images/position_icon_3x.png"}],this.getPlaceAround()},getCurrentLocation:function(){var t=this;return(0,i.default)(o.default.mark((function r(){var n,i,a,d,c;return o.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return n=t,i="",a=uni.getSystemInfoSync(),i="ios"===a.platform?"location":"android.permission.ACCESS_FINE_LOCATION",!plus.storage.getItem("perm_".concat(i))&&"ios"!==a.platform&&(t.isShowPer=!0),r.next=8,u.default.checkPermission("location","\u9700\u8981\u4f4d\u7f6e\u6743\u9650\u7528\u4e8e\u63a8\u8350\u9644\u8fd1\u670d\u52a1");case 8:if(d=r.sent,c=d.granted,e("log","granted==============",c," at pages/address/revise.nvue:206"),!c){r.next=17;break}return t.addressInfo.longitude&&t.addressInfo.latitude?n.getNowLocation(t.addressInfo.longitude+","+t.addressInfo.latitude):t.getLocation(),t.isGetDefault=!0,r.abrupt("return");case 17:n.getNowLocation(t.addressInfo.longitude+","+t.addressInfo.latitude),t.isGetDefault=!1;case 19:return t.isShowPer=!1,r.next=22,t.showPermissionDialog("\u4f4d\u7f6e\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u4f4d\u7f6e\u6743\u9650\uff0c\u7528\u4e8e\u4e3a\u60a8\u63a8\u8350\u9644\u8fd1\u670d\u52a1");case 22:if(r.sent){r.next=25;break}return r.abrupt("return");case 25:return r.next=27,u.default.requestPermission("location","\u9700\u8981\u4f4d\u7f6e\u6743\u9650\u7528\u4e8e\u63a8\u8350\u9644\u8fd1\u670d\u52a1");case 27:r.sent?t.isShowPer||plus.storage.getItem("perm_".concat(i,"_no"))?t.addressInfo.longitude&&t.addressInfo.latitude?n.getNowLocation(t.addressInfo.longitude+","+t.addressInfo.latitude):t.getLocation():(n.getNowLocation(t.addressInfo.longitude+","+t.addressInfo.latitude),t.isGetDefault=!1):s.default.openAppSettings();case 29:case"end":return r.stop()}}),r)})))()},getLocation:function(){var e=this;uni.getLocation({type:"gcj02",success:function(t){e.addressInfo.latitude=t.latitude,e.addressInfo.longitude=t.longitude,e.updateMarkers(),e.getAddressInfo(t.latitude,t.longitude),e.isGetDefault=!0,e.isShowPer=!1},fail:function(){e.getDefault(),e.isGetDefault=!1,e.isShowPer=!0}})},updateMarkers:function(){},getDefault:function(){this.addressInfo.latitude=getApp().globalData.addressRes.latitude,this.addressInfo.longitude=getApp().globalData.addressRes.longitude,this.updateMarkers(),this.getAddressInfo(getApp().globalData.addressRes.latitude,getApp().globalData.addressRes.longitude)},onRegionChange:function(t){var r,n,a=this;"ios"===uni.getSystemInfoSync().platform?"end"===t.detail.type&&"drag"===t.detail.causedBy&&this.mapCtx.getCenterLocation({success:(n=(0,i.default)(o.default.mark((function t(r){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e("log","\u7ed3\u679c",r," at pages/address/revise.nvue:307"),t.next=3,a.getAddressInfo(r.latitude,r.longitude,"onRegionChange");case 3:a.addressInfo.latitude=r.latitude,a.addressInfo.longitude=r.longitude,a.updateMarkers();case 6:case"end":return t.stop()}}),t)}))),function(e){return n.apply(this,arguments)})}):"end"===t.type&&"drag"===t.causedBy&&this.mapCtx.getCenterLocation({success:(r=(0,i.default)(o.default.mark((function t(r){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e("log","\u7ed3\u679c",r," at pages/address/revise.nvue:325"),t.next=3,a.getAddressInfo(r.latitude,r.longitude,"onRegionChange");case 3:a.addressInfo.latitude=r.latitude,a.addressInfo.longitude=r.longitude,a.updateMarkers();case 6:case"end":return t.stop()}}),t)}))),function(e){return r.apply(this,arguments)})})},onMapTap:function(e){if("type"==e.type){this.addressInfo.latitude=e.detail.latitude,this.addressInfo.longitude=e.detail.longitude,this.updateMarkers(),this.getAddressInfo(e.detail.latitude,e.detail.longitude,"onMapTap")}},editAddress:function(t){e("log","item111111",t," at pages/address/revise.nvue:348");var r=t.location.split(",");this.$set(this.addressInfo,"latitude",r[1]),this.$set(this.addressInfo,"longitude",r[0]),this.getAddressInfo(r[1],r[0])},getAddressInfo:function(t,r,n){var o=this;return new Promise((function(i,a){uni.request({url:"https://restapi.amap.com/v3/geocode/regeo",method:"GET",data:{key:"30b7eb1a1b2f88edc085b9b3ee9a2188",location:"".concat(r,",").concat(t)},success:function(t){e("log","======================",n,t.data," at pages/address/revise.nvue:372"),o.addressInfo.dependency_province=t.data.regeocode.addressComponent.adcode.slice(0,-4)+"0000",o.addressInfo.dependency_city=t.data.regeocode.addressComponent.adcode.slice(0,-2)+"00",o.addressInfo.dependency_code=t.data.regeocode.addressComponent.adcode,o.addressInfo.server_address=t.data.regeocode.formatted_address,t.data.regeocode.addressComponent.city.length>0?o.addressInfo.dependency=t.data.regeocode.addressComponent.province+"-"+t.data.regeocode.addressComponent.city+"-"+t.data.regeocode.addressComponent.district:o.addressInfo.dependency=t.data.regeocode.addressComponent.province+"-"+t.data.regeocode.addressComponent.province+"-"+t.data.regeocode.addressComponent.district,i(t.data)}})}))},copyAddress:function(){uni.setClipboardData({data:this.addressInfo.server_address,success:function(){uni.showToast({title:"\u5730\u5740\u5df2\u590d\u5236",icon:"none"})}})},onSwitchChange:function(e){this.addressInfo.is_default=e.detail.value?1:2},getPage:function(){var e=getCurrentPages();e[e.length-2].$vm.getAddressList()},addAddress:function(){if(this.isGetDefault){var e=this.addressInfo.longitude+","+this.addressInfo.latitude,t=this.addressInfo.dependency.split("-"),r={name:t[t.length-1],center:e};uni.navigateTo({url:"/pages/address/search?city=".concat(encodeURIComponent(JSON.stringify(r)))})}else uni.showToast({title:"\u60a8\u672a\u6388\u6743\u4f4d\u7f6e\u4fe1\u606f\uff0c\u6682\u65e0\u6cd5\u6dfb\u52a0\u5730\u5740\uff01",icon:"none"})},saveAddress:(0,r(256).debounce)((function(){var t=this;this.isAdd||(this.addressInfo.server_address?this.addressInfo.house_number?this.addressInfo.name?/^1\d{10}$/.test(this.addressInfo.call_phone)?(e("log","this.addressInfo",this.addressInfo," at pages/address/revise.nvue:469"),a.default.post("/user/editaddress",this.addressInfo).then((function(r){e("log","\u6dfb\u52a0\u7ed3\u679c",r," at pages/address/revise.nvue:471"),200==r.code?(t.isAdd=!0,uni.showToast({title:"\u4fee\u6539\u6210\u529f",duration:2e3,success:function(){setTimeout((function(){t.getPage(),uni.navigateBack()}),2e3)}})):t.isAdd=!1})).catch((function(r){e("log",r," at pages/address/revise.nvue:488"),t.isAdd=!1}))):uni.showToast({title:"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7",icon:"none"}):uni.showToast({title:"\u8bf7\u8f93\u5165\u9884\u7ea6\u4eba\u59d3\u540d",icon:"none"}):uni.showToast({title:"\u8bf7\u8f93\u5165\u95e8\u724c\u53f7",icon:"none"}):uni.showToast({title:"\u8bf7\u9009\u62e9\u5730\u5740",icon:"none"}))}),500)}};t.default=d}).call(this,r(2).default)},184:function(e,t){e.exports={".map-container":{"":{width:["750rpx",0,0,0],height:["500rpx",0,0,0],boxSizing:["border-box",0,0,0],paddingTop:[0,0,0,0],paddingRight:[0,0,0,0],paddingBottom:[0,0,0,0],paddingLeft:[0,0,0,0],marginTop:[0,0,0,0],marginRight:[0,0,0,0],marginBottom:[0,0,0,0],marginLeft:[0,0,0,0],position:["relative",0,0,0]}},".map":{".map-container ":{width:["750rpx",0,1,1],height:["500rpx",0,1,1]}},".center-marker":{".map-container ":{position:["absolute",0,1,2],left:["375rpx",0,1,2],transform:["translate(-50%)",0,1,2],width:["42rpx",0,1,2],height:["69rpx",0,1,2]}},".center-marker-img":{"":{width:["42rpx",0,0,3]}},".distance":{"":{color:["#FFFFFF",0,0,4],fontSize:["24rpx",0,0,4]}},".address-form":{"":{backgroundColor:["#FFFFFF",0,0,5],paddingTop:["80rpx",0,0,5],paddingRight:["24rpx",0,0,5],paddingBottom:["48rpx",0,0,5],paddingLeft:["24rpx",0,0,5],position:["fixed",0,0,5],left:[0,0,0,5],right:[0,0,0,5],bottom:[0,0,0,5]}},".address-form-cont":{"":{position:["relative",0,0,6]}},".biao":{"":{position:["absolute",0,0,7],width:["80rpx",0,0,7],height:["8rpx",0,0,7],borderRadius:["4rpx",0,0,7],backgroundColor:["#EEF4FA",0,0,7],top:["-48rpx",0,0,7],left:[50,0,0,7],transform:["translateX(-50%)",0,0,7]}},".form-item":{"":{display:["flex",0,0,8],flexDirection:["row",0,0,8],flexWrap:["nowrap",0,0,8],justifyContent:["space-between",0,0,8],alignItems:["center",0,0,8],"borderBottomWidth:last-child":[0,0,0,9],"borderBottomStyle:last-child":["solid",0,0,9],"borderBottomColor:last-child":["#000000",0,0,9],paddingTop:[0,0,0,22],paddingRight:[0,0,0,22],paddingBottom:[0,0,0,22],paddingLeft:[0,0,0,22]}},".label":{"":{fontSize:["28rpx",0,0,10],color:["#3D3D3D",0,0,10],fontWeight:["500",0,0,10],paddingTop:["24rpx",0,0,10],paddingRight:[0,0,0,10],paddingBottom:["24rpx",0,0,10],paddingLeft:[0,0,0,10]}},".value":{"":{flex:[1,0,0,11],fontSize:["28rpx",0,0,11],color:["#333333",0,0,11]}},".copy-icon":{"":{width:["32rpx",0,0,12],height:["32rpx",0,0,12],marginLeft:["16rpx",0,0,12]}},".input":{"":{height:["100rpx",0,0,13],width:["568rpx",0,0,13],fontSize:["24rpx",0,0,13],color:["#3D3D3D",0,0,13],fontWeight:["500",0,0,13],borderBottomWidth:["1rpx",0,0,13],borderBottomStyle:["solid",0,0,13],borderBottomColor:["#EEEEEE",0,0,13]}},".textarea":{"":{display:["flex",0,0,14],flexDirection:["column",0,0,14],flexWrap:["nowrap",0,0,14],justifyContent:["center",0,0,14],alignItems:["flex-start",0,0,14]}},".textarea-text":{"":{fontSize:["24rpx",0,0,15],color:["#3D3D3D",0,0,15]}},".placeholder":{"":{color:["#666666",0,0,16],fontWeight:["500",0,0,16]}},".switch-item":{"":{justifyContent:["space-between",0,0,17],marginTop:["12rpx",0,0,17]}},".save-btn":{"":{width:["630rpx",0,0,18],height:["96rpx",0,0,18],backgroundColor:["#E8101E",0,0,18],borderRadius:["44rpx",0,0,18],display:["flex",0,0,18],justifyContent:["center",0,0,18],alignItems:["center",0,0,18],marginTop:["100rpx",0,0,18],marginRight:["36rpx",0,0,18],marginBottom:[0,0,0,18],marginLeft:["36rpx",0,0,18]},".disabled":{backgroundColor:["#EEF4FA",0,1,20]}},".save-text":{".save-btn ":{color:["#FFFFFF",0,1,19],fontSize:["40rpx",0,1,19],fontWeight:["400",0,1,19]}},".permission":{".transform":{top:["220rpx",0,1,23],opacity:[1,0,1,23],visibility:["visible",0,1,23]}},"@VERSION":2}},19:function(e,t){if("undefined"==typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(e){var t=this.constructor;return this.then((function(r){return t.resolve(e()).then((function(){return r}))}),(function(r){return t.resolve(e()).then((function(){throw r}))}))}),"undefined"!=typeof uni&&uni&&uni.requireGlobal){var r=uni.requireGlobal();ArrayBuffer=r.ArrayBuffer,Int8Array=r.Int8Array,Uint8Array=r.Uint8Array,Uint8ClampedArray=r.Uint8ClampedArray,Int16Array=r.Int16Array,Uint16Array=r.Uint16Array,Int32Array=r.Int32Array,Uint32Array=r.Uint32Array,Float32Array=r.Float32Array,Float64Array=r.Float64Array,BigInt64Array=r.BigInt64Array,BigUint64Array=r.BigUint64Array}},2:function(e,t,r){"use strict";function n(e){var t=Object.prototype.toString.call(e);return t.substring(8,t.length-1)}function o(){return"string"==typeof __channelId__&&__channelId__}function i(e,t){switch(n(t)){case"Function":return"function() { [native code] }";default:return t}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){for(var e=arguments.length,t=new Array(e),r=0;r1){var d=s.pop();u=s.join("---COMMA---"),0===d.indexOf(" at ")?u+=d:u+="---COMMA---"+d}else u=s[0];console[a](u)},t.log=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=a.call(i,"catchLoc"),d=a.call(i,"finallyLoc");if(u&&d){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),P(r),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:j(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},r}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports},217:function(e,t,r){"use strict";r.d(t,"b",(function(){return o})),r.d(t,"c",(function(){return i})),r.d(t,"a",(function(){return n}));var n={customNavbar:r(22).default},o=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("scroll-view",{staticStyle:{flexDirection:"column"},attrs:{scrollY:!0,showScrollbar:!0,enableBackToTop:!0,bubble:"true"}},[r("view",{staticClass:["address-page"]},[r("custom-navbar",{attrs:{title:"\u4fee\u6539\u5730\u5740",showBack:!0,backgroundColor:"#FFFFFF",showHeadle:!0,headleSrc:"/static/images/add_icon.png"},on:{onHeadleClick:e.addAddress}}),r("view",{staticClass:["map-container"],style:"height:"+e.mapHeight+"rpx"},[r("map",{staticClass:["map"],style:"height:"+e.mapHeight+"rpx",attrs:{id:"map",latitude:e.addressInfo.latitude,longitude:e.addressInfo.longitude,showLocation:!0},on:{regionchange:e.onRegionChange,tap:e.onMapTap}}),r("view",{staticClass:["center-marker"],style:"top:"+e.mapHeight/2+"rpx"},[r("u-image",{staticClass:["center-marker-img"],attrs:{src:"/static/images/mapCenter.png",mode:"widthFix"}})],1)],1),r("view",{staticClass:["address-form"]},[r("view",{staticClass:["address-form-cont"]},[r("view",{staticClass:["form-item"]},[r("u-text",{staticClass:["label"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u670d\u52a1\u5730\u5740")]),r("view",{staticClass:["input","textarea"]},[r("u-text",{staticClass:["textarea-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.addressInfo.server_address))])])]),r("view",{staticClass:["form-item"]},[r("u-text",{staticClass:["label"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u95e8\u724c\u53f7")]),r("u-input",{staticClass:["input"],attrs:{type:"text",placeholder:"\u59823\u53f7\u697c4\u5355\u5143502",placeholderClass:"placeholder",value:e.addressInfo.house_number},on:{input:function(t){e.$set(e.addressInfo,"house_number",t.detail.value)}}})],1),r("view",{staticClass:["form-item"]},[r("u-text",{staticClass:["label"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u9884\u7ea6\u4eba")]),r("u-input",{staticClass:["input"],attrs:{type:"text",placeholder:"\u8bf7\u8f93\u5165\u9884\u7ea6\u4eba\u59d3\u540d",placeholderClass:"placeholder",value:e.addressInfo.name},on:{input:function(t){e.$set(e.addressInfo,"name",t.detail.value)}}})],1),r("view",{staticClass:["form-item"]},[r("u-text",{staticClass:["label"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u624b\u673a\u53f7")]),r("u-input",{staticClass:["input"],attrs:{type:"number",placeholder:"\u8bf7\u8f93\u5165\u624b\u673a\u53f7",placeholderClass:"placeholder",maxlength:"11",value:e.addressInfo.call_phone},on:{input:function(t){e.$set(e.addressInfo,"call_phone",t.detail.value)}}})],1),r("view",{staticClass:["form-item","switch-item"]},[r("u-text",{staticClass:["label"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8bbe\u4e3a\u9ed8\u8ba4\u5730\u5740")]),r("switch",{attrs:{checked:1==e.addressInfo.is_default,color:"#E8101E"},on:{change:e.onSwitchChange}})],1),r("view",{staticClass:["biao"]}),r("view",{staticClass:["save-btn"],on:{click:e.saveAddress}},[r("u-text",{staticClass:["save-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u4fdd\u5b58")])])])]),r("view",{staticClass:["permission"],class:{transform:e.isShowPer}},[r("u-text",{staticClass:["per-tit"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u7f8e\u878d\u878dplus \u5bf9\u7cbe\u786e\u5b9a\u4f4d\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),r("u-text",{staticClass:["per-cont"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u4fbf\u4e8e\u60a8\u4f7f\u7528\u8be5\u529f\u80fd\u83b7\u53d6\u60a8\u9644\u8fd1\u7684\u624b\u827a\u4eba\u4ee5\u53ca\u5e97\u94fa\u4e0b\u7684\u670d\u52a1\u5185\u5bb9\u3002")])])],1)])},i=[]},22:function(e,t,r){"use strict";r.r(t);var n=r(11),o=r(8);for(var i in o)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return o[e]}))}(i);var a=r(0);var s=Object(a.a)(o.default,n.b,n.c,!1,null,null,"43cd5ac3",!1,n.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(14).default,this.options.style):Object.assign(this.options.style,r(14).default)}).call(s),t.default=s.exports},23:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getToken=function(){return uni.getStorageSync("accessToken")},t.removeToken=function(){uni.removeStorageSync("accessToken"),uni.removeStorageSync("refreshToken")},t.setToken=function(e){uni.setStorageSync("accessToken",e)}},24:function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.getBaseUrl=function(){return d.apply(this,arguments)},t.setVersion=function(){var t=uni.getSystemInfoSync();a=t.appWgtVersion,s=t.deviceBrand,e("log","DeviceType",s," at utils/version.js:26"),"android"===(u=t.platform)?u="sj_android":"ios"===u&&(u="sj_ios");var r={VersionCode:a||"",DeviceBrand:u||"",DeviceType:s||""};uni.setStorageSync("setVersion",r)};var o=n(r(3)),i=n(r(4)),a="",s="",u="";function d(){return(d=(0,i.default)(o.default.mark((function t(){var r;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=uni.getStorageSync("setVersion"),t.next=3,uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:r.VersionCode,DeviceBrand:r.DeviceBrand,DeviceType:r.DeviceType},success:function(e){return 200==e.data.code&&uni.setStorageSync("baseUrl",e.data.data.url),e.data.data.url},fail:function(t){return e("log","\u8bf7\u6c42\u5931\u8d25",t," at utils/version.js:82"),"http://60.247.146.5:93"},complete:function(){e("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/version.js:86")}});case 3:case"end":return t.stop()}}),t)})))).apply(this,arguments)}}).call(this,r(2).default)},256:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.debounce=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=null,o=!1;return function(){for(var i=this,a=arguments.length,s=new Array(a),u=0;u0&&void 0!==e[0]?e[0]:{},r.next=3,t.isLocationEnabled();case 3:if(n=r.sent){r.next=7;break}return r.abrupt("return",n);case 7:return r.abrupt("return",n);case 8:case"end":return r.stop()}}),r)})))()}};t.default=a}).call(this,r(2).default)},29:function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(3)),i=n(r(4)),a={checkPermission:function(e){var t=arguments,r=this;return(0,i.default)(o.default.mark((function n(){var i;return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=t.length>1&&void 0!==t[1]?t[1]:"",n.next=3,r._checkAppPermission(e,i);case 3:return n.abrupt("return",n.sent);case 4:case"end":return n.stop()}}),n)})))()},_checkAppPermission:function(t,r){var n=this;return(0,i.default)(o.default.mark((function i(){var a;return o.default.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(a={camera:{android:"android.permission.CAMERA",ios:"camera"},location:{android:"android.permission.ACCESS_FINE_LOCATION",ios:"location"},phone:{android:"android.permission.CALL_PHONE",ios:"phone"},photo_library:{android:["android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE"],ios:"photo_library"}}[t]){o.next=5;break}return e("error","\u4e0d\u652f\u6301\u7684\u6743\u9650\u7c7b\u578b:",t," at utils/per.js:62"),o.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 5:if("Android"!==plus.os.name){o.next=9;break}return o.abrupt("return",n._checkAndroidPermission(a.android));case 9:return o.abrupt("return",n._checkIosPermission(a.ios,r));case 10:return o.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 11:case"end":return o.stop()}}),i)})))()},_checkAndroidPermission:function(t){return(0,i.default)(o.default.mark((function r(){return o.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",new Promise((function(r){plus.android.requestPermissions(Array.isArray(t)?t:[t],(function(n){e("log","perm_".concat(t),n," at utils/per.js:85");var o=!plus.storage.getItem("perm_".concat(t));o&&plus.storage.setItem("perm_".concat(t),"1"),0!==n.deniedPresent.length&&plus.storage.setItem("perm_".concat(t,"_no"),"2"),0!==n.granted.length&&plus.storage.removeItem("perm_".concat(t,"_no"),"2"),r({granted:0!==n.granted.length,firstRequest:o,canRequest:!0})}),(function(e){r({granted:!1,firstRequest:!1,canRequest:!0})}))})));case 1:case"end":return r.stop()}}),r)})))()},_checkIosPermission:function(t,r){return(0,i.default)(o.default.mark((function r(){var n,i;return o.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:r.prev=0,r.t0=t,r.next="camera"===r.t0?4:"location"===r.t0?6:10;break;case 4:return n=plus.ios.invoke("AVCaptureDevice","authorizationStatusForMediaType:","vide"),r.abrupt("break",11);case 6:return i=plus.ios.newObject("CLLocationManager"),n=plus.ios.invoke(i,"authorizationStatus"),plus.ios.deleteObject(i),r.abrupt("break",11);case 10:return r.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 11:return r.abrupt("return",{granted:3===n,firstRequest:0===n,canRequest:2!==n});case 14:return r.prev=14,r.t1=r.catch(0),e("error","iOS\u6743\u9650\u68c0\u67e5\u9519\u8bef:",r.t1," at utils/per.js:146"),r.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 18:case"end":return r.stop()}}),r,null,[[0,14]])})))()},_checkMpPermission:function(e){return(0,i.default)(o.default.mark((function t(){var r;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r={camera:"scope.camera",location:"scope.userLocation",record:"scope.record"}[e]){t.next=4;break}return t.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 4:return t.abrupt("return",new Promise((function(e){uni.getSetting({success:function(t){var n=t.authSetting;e({granted:!0===n[r],firstRequest:void 0===n[r],canRequest:!1!==n[r]})},fail:function(){e({granted:!1,firstRequest:!1,canRequest:!1})}})})));case 5:case"end":return t.stop()}}),t)})))()},requestPermission:function(e){var t=arguments,r=this;return(0,i.default)(o.default.mark((function n(){var i,a,s,u;return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=t.length>1&&void 0!==t[1]?t[1]:"",n.next=3,r.checkPermission(e,i);case 3:if(a=n.sent,s=a.granted,a.firstRequest,u=a.canRequest,!s){n.next=9;break}return n.abrupt("return",!0);case 9:if(u){n.next=11;break}return n.abrupt("return",!1);case 11:return n.abrupt("return",r._requestAppPermission(e,i));case 12:case"end":return n.stop()}}),n)})))()},_requestAppPermission:function(e,t){return(0,i.default)(o.default.mark((function e(){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",!1);case 1:case"end":return e.stop()}}),e)})))()},_requestMpPermission:function(e){return(0,i.default)(o.default.mark((function t(){var r;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r={camera:"scope.camera",location:"scope.userLocation",record:"scope.record"}[e]){t.next=4;break}return t.abrupt("return",!1);case 4:return t.abrupt("return",new Promise((function(e){uni.authorize({scope:r,success:function(){return e(!0)},fail:function(){return e(!1)}})})));case 5:case"end":return t.stop()}}),t)})))()},openSystemSettings:function(){if("Android"===plus.os.name){var e=plus.android.importClass("android.content.Intent"),t=plus.android.importClass("android.provider.Settings"),r=plus.android.importClass("android.net.Uri"),n=plus.android.runtimeMainActivity(),o=new e;o.setAction(t.ACTION_APPLICATION_DETAILS_SETTINGS);var i=r.fromParts("package",n.getPackageName(),null);o.setData(i),n.startActivity(o)}else{var a=plus.ios.import("UIApplication"),s=plus.ios.import("NSURL").URLWithString("app-settings:"),u=a.sharedApplication();plus.ios.invoke(u,"canOpenURL:",s)&&plus.ios.invoke(u,"openURL:",s),plus.ios.deleteObject(s),plus.ios.deleteObject(u)}}};t.default=a}).call(this,r(2).default)},3:function(e,t,r){var n=r(5),o=r(21)();e.exports=o;try{regeneratorRuntime=o}catch(e){"object"===("undefined"==typeof globalThis?"undefined":n(globalThis))?globalThis.regeneratorRuntime=o:Function("r","regeneratorRuntime = r")(o)}},303:function(e,t,r){"use strict";r.r(t);r(17),r(19);var n=r(129);n.default.mpType="page",n.default.route="pages/address/revise",n.default.el="#root",new Vue(n.default)},4:function(e,t){function r(e,t,r,n,o,i,a){try{var s=e[i](a),u=s.value}catch(e){return void r(e)}s.done?t(u):Promise.resolve(u).then(n,o)}e.exports=function(e){return function(){var t=this,n=arguments;return new Promise((function(o,i){var a=e.apply(t,n);function s(e){r(a,o,i,s,u,"next",e)}function u(e){r(a,o,i,s,u,"throw",e)}s(void 0)}))}},e.exports.__esModule=!0,e.exports.default=e.exports},5:function(e,t){function r(t){return e.exports=r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,r(t)}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports},6:function(e,t,r){var n=r(13);e.exports=function(e,t,r){return(t=n(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports},7:function(e,t){e.exports={"@FONT-FACE":[{fontFamily:"shuHeiTi",src:'url("~@/static/Font/shuHeiTi.ttf") format("truetype")',fontDisplay:"swap"},{fontFamily:"DINPro",src:'url("~@/static/Font/DIN-Bold.otf") format("opentype")',fontWeight:"700",fontStyle:"normal"},{fontFamily:"DINPro",src:'url("~@/static/Font/DIN-Regular.otf") format("opentype")',fontWeight:"400",fontStyle:"normal"},{fontFamily:"DINPro",src:'url("~@/static/Font/DINPro-Medium.otf") format("opentype")',fontWeight:"500",fontStyle:"normal"}],".num_bold_text":{"":{fontWeight:["700",0,0,10],fontFamily:['"DINPro"',0,0,10]}},".num_regular_text":{"":{fontWeight:["400",0,0,12],fontFamily:['"DINPro"',0,0,12]}},".num_medium_text":{"":{fontWeight:["500",0,0,14],fontFamily:['"DINPro"',0,0,14]}},".flex":{"":{display:["flex",0,0,20]}},".flex-column":{"":{display:["flex",0,0,21],flexDirection:["column",0,0,21]}},".flex-wrap":{"":{flexWrap:["wrap",0,0,22]}},".flex-1":{"":{flex:[1,0,0,23]}},".justify-start":{"":{justifyContent:["flex-start",0,0,25]}},".justify-end":{"":{justifyContent:["flex-end",0,0,26]}},".justify-center":{"":{justifyContent:["center",0,0,27]}},".justify-between":{"":{justifyContent:["space-between",0,0,28]}},".justify-around":{"":{justifyContent:["space-around",0,0,29]}},".align-start":{"":{alignItems:["flex-start",0,0,30]}},".align-end":{"":{alignItems:["flex-end",0,0,31]}},".align-center":{"":{alignItems:["center",0,0,32]}},".align-stretch":{"":{alignItems:["stretch",0,0,33]}},".m-10":{"":{marginTop:["10rpx",0,0,35],marginRight:["10rpx",0,0,35],marginBottom:["10rpx",0,0,35],marginLeft:["10rpx",0,0,35]}},".m-20":{"":{marginTop:["20rpx",0,0,36],marginRight:["20rpx",0,0,36],marginBottom:["20rpx",0,0,36],marginLeft:["20rpx",0,0,36]}},".m-30":{"":{marginTop:["30rpx",0,0,37],marginRight:["30rpx",0,0,37],marginBottom:["30rpx",0,0,37],marginLeft:["30rpx",0,0,37]}},".m-40":{"":{marginTop:["40rpx",0,0,38],marginRight:["40rpx",0,0,38],marginBottom:["40rpx",0,0,38],marginLeft:["40rpx",0,0,38]}},".mt-10":{"":{marginTop:["10rpx",0,0,39]}},".mt-20":{"":{marginTop:["20rpx",0,0,40]}},".mt-30":{"":{marginTop:["30rpx",0,0,41]}},".mt-40":{"":{marginTop:["40rpx",0,0,42]}},".mb-10":{"":{marginBottom:["10rpx",0,0,43]}},".mb-20":{"":{marginBottom:["20rpx",0,0,44]}},".mb-30":{"":{marginBottom:["30rpx",0,0,45]}},".mb-40":{"":{marginBottom:["40rpx",0,0,46]}},".ml-10":{"":{marginLeft:["10rpx",0,0,47]}},".ml-20":{"":{marginLeft:["20rpx",0,0,48]}},".ml-30":{"":{marginLeft:["30rpx",0,0,49]}},".ml-40":{"":{marginLeft:["40rpx",0,0,50]}},".mr-10":{"":{marginRight:["10rpx",0,0,51]}},".mr-20":{"":{marginRight:["20rpx",0,0,52]}},".mr-30":{"":{marginRight:["30rpx",0,0,53]}},".mr-40":{"":{marginRight:["40rpx",0,0,54]}},".p-10":{"":{paddingTop:["10rpx",0,0,55],paddingRight:["10rpx",0,0,55],paddingBottom:["10rpx",0,0,55],paddingLeft:["10rpx",0,0,55]}},".p-20":{"":{paddingTop:["20rpx",0,0,56],paddingRight:["20rpx",0,0,56],paddingBottom:["20rpx",0,0,56],paddingLeft:["20rpx",0,0,56]}},".p-30":{"":{paddingTop:["30rpx",0,0,57],paddingRight:["30rpx",0,0,57],paddingBottom:["30rpx",0,0,57],paddingLeft:["30rpx",0,0,57]}},".p-40":{"":{paddingTop:["40rpx",0,0,58],paddingRight:["40rpx",0,0,58],paddingBottom:["40rpx",0,0,58],paddingLeft:["40rpx",0,0,58]}},".pt-10":{"":{paddingTop:["10rpx",0,0,59]}},".pt-20":{"":{paddingTop:["20rpx",0,0,60]}},".pt-30":{"":{paddingTop:["30rpx",0,0,61]}},".pt-40":{"":{paddingTop:["40rpx",0,0,62]}},".pb-10":{"":{paddingBottom:["10rpx",0,0,63]}},".pb-20":{"":{paddingBottom:["20rpx",0,0,64]}},".pb-30":{"":{paddingBottom:["30rpx",0,0,65]}},".pb-40":{"":{paddingBottom:["40rpx",0,0,66]}},".pl-10":{"":{paddingLeft:["10rpx",0,0,67]}},".pl-20":{"":{paddingLeft:["20rpx",0,0,68]}},".pl-30":{"":{paddingLeft:["30rpx",0,0,69]}},".pl-40":{"":{paddingLeft:["40rpx",0,0,70]}},".pr-10":{"":{paddingRight:["10rpx",0,0,71]}},".pr-20":{"":{paddingRight:["20rpx",0,0,72]}},".pr-30":{"":{paddingRight:["30rpx",0,0,73]}},".pr-40":{"":{paddingRight:["40rpx",0,0,74]}},".pr-240":{"":{paddingRight:["240rpx",0,0,75]}},".text-left":{"":{textAlign:["left",0,0,77]}},".text-center":{"":{textAlign:["center",0,0,78]}},".text-right":{"":{textAlign:["right",0,0,79]}},".text-primary":{"":{color:["#007aff",0,0,80]}},".text-success":{"":{color:["#4cd964",0,0,81]}},".text-warning":{"":{color:["#f0ad4e",0,0,82]}},".text-danger":{"":{color:["#dd524d",0,0,83]}},".text-info":{"":{color:["#909399",0,0,84]}},".text-sm":{"":{fontSize:["24rpx",0,0,85]}},".text-md":{"":{fontSize:["28rpx",0,0,86]}},".text-lg":{"":{fontSize:["32rpx",0,0,87]}},".text-xl":{"":{fontSize:["36rpx",0,0,88]}},".text-bold":{"":{fontWeight:["bold",0,0,89]}},".text-normal":{"":{fontWeight:["normal",0,0,90]}},".bg-white":{"":{backgroundColor:["#ffffff",0,0,92]}},".bg-primary":{"":{backgroundColor:["#007aff",0,0,93]}},".bg-success":{"":{backgroundColor:["#4cd964",0,0,94]}},".bg-warning":{"":{backgroundColor:["#f0ad4e",0,0,95]}},".bg-danger":{"":{backgroundColor:["#dd524d",0,0,96]}},".bg-info":{"":{backgroundColor:["#909399",0,0,97]}},".bg-gray":{"":{backgroundColor:["#f5f5f5",0,0,98]}},".border":{"":{borderWidth:["1rpx",0,0,100],borderStyle:["solid",0,0,100],borderColor:["#e5e5e5",0,0,100]}},".border-top":{"":{borderTopWidth:["1rpx",0,0,101],borderTopStyle:["solid",0,0,101],borderTopColor:["#e5e5e5",0,0,101]}},".border-bottom":{"":{borderBottomWidth:["1rpx",0,0,102],borderBottomStyle:["solid",0,0,102],borderBottomColor:["#e5e5e5",0,0,102]}},".border-left":{"":{borderLeftWidth:["1rpx",0,0,103],borderLeftStyle:["solid",0,0,103],borderLeftColor:["#e5e5e5",0,0,103]}},".border-right":{"":{borderRightWidth:["1rpx",0,0,104],borderRightStyle:["solid",0,0,104],borderRightColor:["#e5e5e5",0,0,104]}},".rounded":{"":{borderRadius:["8rpx",0,0,106]}},".rounded-lg":{"":{borderRadius:["16rpx",0,0,107]}},".rounded-xl":{"":{borderRadius:["24rpx",0,0,108]}},".rounded-circle":{"":{borderRadius:[50,0,0,109]}},".shadow":{"":{boxShadow:["0 2rpx 8rpx rgba(0, 0, 0, 0.1)",0,0,111]}},".shadow-lg":{"":{boxShadow:["0 4rpx 16rpx rgba(0, 0, 0, 0.1)",0,0,112]}},".relative":{"":{position:["relative",0,0,114]}},".absolute":{"":{position:["absolute",0,0,115]}},".fixed":{"":{position:["fixed",0,0,116]}},".btn":{"":{display:["flex",0,0,120],alignItems:["center",0,0,120],justifyContent:["center",0,0,120],paddingTop:["20rpx",0,0,120],paddingRight:["40rpx",0,0,120],paddingBottom:["20rpx",0,0,120],paddingLeft:["40rpx",0,0,120],borderRadius:["8rpx",0,0,120],fontSize:["28rpx",0,0,120],lineHeight:[1.5,0,0,120],textAlign:["center",0,0,120]}},".btn-primary":{"":{backgroundColor:["#007aff",0,0,121],color:["#ffffff",0,0,121]}},".btn-success":{"":{backgroundColor:["#4cd964",0,0,122],color:["#ffffff",0,0,122]}},".btn-warning":{"":{backgroundColor:["#f0ad4e",0,0,123],color:["#ffffff",0,0,123]}},".btn-danger":{"":{backgroundColor:["#dd524d",0,0,124],color:["#ffffff",0,0,124]}},".btn-info":{"":{backgroundColor:["#909399",0,0,125],color:["#ffffff",0,0,125]}},".card":{"":{backgroundColor:["#ffffff",0,0,127],borderRadius:["8rpx",0,0,127],paddingTop:["20rpx",0,0,127],paddingRight:["20rpx",0,0,127],paddingBottom:["20rpx",0,0,127],paddingLeft:["20rpx",0,0,127],marginTop:["20rpx",0,0,127],marginRight:["20rpx",0,0,127],marginBottom:["20rpx",0,0,127],marginLeft:["20rpx",0,0,127],boxShadow:["0 2rpx 8rpx rgba(0, 0, 0, 0.1)",0,0,127]}},".list-item":{"":{display:["flex",0,0,129],alignItems:["center",0,0,129],paddingTop:["20rpx",0,0,129],paddingRight:["20rpx",0,0,129],paddingBottom:["20rpx",0,0,129],paddingLeft:["20rpx",0,0,129],backgroundColor:["#ffffff",0,0,129],borderBottomWidth:["1rpx",0,0,129],borderBottomStyle:["solid",0,0,129],borderBottomColor:["#e5e5e5",0,0,129]}},".loading":{"":{display:["flex",0,0,131],alignItems:["center",0,0,131],justifyContent:["center",0,0,131],paddingTop:["20rpx",0,0,131],paddingRight:["20rpx",0,0,131],paddingBottom:["20rpx",0,0,131],paddingLeft:["20rpx",0,0,131]}},".loading-text":{"":{marginLeft:["10rpx",0,0,132],color:["#909399",0,0,132],fontSize:["24rpx",0,0,132]}},".empty":{"":{display:["flex",0,0,134],flexDirection:["column",0,0,134],alignItems:["center",0,0,134],justifyContent:["center",0,0,134],paddingTop:["40rpx",0,0,134],paddingRight:["40rpx",0,0,134],paddingBottom:["40rpx",0,0,134],paddingLeft:["40rpx",0,0,134]}},".empty-image":{"":{width:["200rpx",0,0,135],height:["200rpx",0,0,135],marginBottom:["20rpx",0,0,135]}},".empty-text":{"":{color:["#909399",0,0,136],fontSize:["28rpx",0,0,136]}},".text-overflow":{"":{WebkitBoxOrient:["vertical",0,0,137],WebkitLineClamp:[2,0,0,137],overflow:["hidden",0,0,137]}},".text-overflow-nvue":{"":{lines:[2,0,0,138],textOverflow:["ellipsis",0,0,138]}},".white-space-nowrap":{"":{width:["300rpx",0,0,139],whiteSpace:["nowrap",0,0,139],overflow:["hidden",0,0,139],textOverflow:["ellipsis",0,0,139]}},".text-overflow-1":{"":{WebkitBoxOrient:["vertical",0,0,140],WebkitLineClamp:[1,0,0,140],overflow:["hidden",0,0,140]}},".text-overflow-nvue1":{"":{lines:[1,0,0,141],textOverflow:["ellipsis",0,0,141]}},".box-cont":{"":{backgroundColor:["#ffffff",0,0,142],marginTop:["24rpx",0,0,142],marginRight:["24rpx",0,0,142],marginBottom:["24rpx",0,0,142],marginLeft:["24rpx",0,0,142],boxShadow:["0 0 12rpx 0 rgba(0, 0, 0, 0.05)",0,0,142]}},".btn-box":{"":{height:["64rpx",0,0,143],textAlign:["center",0,0,143],lineHeight:["64rpx",0,0,143],backgroundColor:["#E8101E",0,0,143],borderRadius:["32rpx",0,0,143],position:["fixed",0,0,143],left:["24rpx",0,0,143],bottom:["68rpx",0,0,143],right:["24rpx",0,0,143],zIndex:[999,0,0,143]}},".btn-text":{"":{fontSize:["28rpx",0,0,144],fontWeight:["500",0,0,144],color:["#ffffff",0,0,144]}},".agree-btn":{"":{width:["32rpx",0,0,145],height:["32rpx",0,0,145]}},".fixed-box":{"":{paddingTop:["32rpx",0,0,146],paddingRight:["24rpx",0,0,146],paddingBottom:["32rpx",0,0,146],paddingLeft:["24rpx",0,0,146],backgroundColor:["#ffffff",0,0,146],position:["absolute",0,0,146],left:[0,0,0,146],bottom:[0,0,0,146],right:[0,0,0,146],zIndex:[9999,0,0,146]}},".fixed-btn":{"":{height:["80rpx",0,0,147],backgroundColor:["#E8101E",0,0,147],borderRadius:["40rpx",0,0,147],display:["flex",0,0,147],alignItems:["center",0,0,147],justifyContent:["center",0,0,147]}},".fixed-text":{"":{fontSize:["28rpx",0,0,148],color:["#ffffff",0,0,148],fontWeight:["500",0,0,148]}},".arrow-right":{"":{width:["32rpx",0,0,149],height:["32rpx",0,0,149]}},".permission":{"":{position:["fixed",0,0,150],top:[0,0,0,150],left:["24rpx",0,0,150],right:["24rpx",0,0,150],backgroundColor:["#ffffff",0,0,150],borderRadius:["20rpx",0,0,150],paddingTop:["24rpx",0,0,150],paddingRight:["24rpx",0,0,150],paddingBottom:["24rpx",0,0,150],paddingLeft:["24rpx",0,0,150],zIndex:[9,0,0,150],boxShadow:["0 8rpx 16rpx 0 rgba(0, 0, 0, 0.05)",0,0,150],opacity:[0,0,0,150],transitionDuration:[300,0,0,150],transitionTimingFunction:["ease",0,0,150],transitionDelay:[0,0,0,150],visibility:["hidden",0,0,150]}},".per-tit":{"":{fontSize:["32rpx",0,0,151],fontWeight:["700",0,0,151],color:["#007aff",0,0,151]}},".per-cont":{"":{fontSize:["28rpx",0,0,152],color:["#333333",0,0,152]}},".flex-row-center-between":{"":{display:["flex",0,0,154],flexDirection:["row",0,0,154],alignItems:["center",0,0,154],justifyContent:["space-between",0,0,154]}},".flex-row-start-between":{"":{display:["flex",0,0,155],flexDirection:["row",0,0,155],alignItems:["flex-start",0,0,155],justifyContent:["space-between",0,0,155]}},".flex-row-center-center":{"":{display:["flex",0,0,156],flexDirection:["row",0,0,156],alignItems:["center",0,0,156],justifyContent:["center",0,0,156]}},".flex-row-center":{"":{display:["flex",0,0,157],flexDirection:["row",0,0,157],alignItems:["center",0,0,157]}},".flex-row-start":{"":{display:["flex",0,0,158],flexDirection:["row",0,0,158],alignItems:["flex-start",0,0,158]}},".flex-row-end-between":{"":{display:["flex",0,0,159],flexDirection:["row",0,0,159],alignItems:["flex-end",0,0,159],justifyContent:["space-between",0,0,159]}},"@VERSION":2}},8:function(e,t,r){"use strict";r.r(t);var n=r(9),o=r.n(n);for(var i in n)["default"].indexOf(i)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(i);t.default=o.a},9:function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(3)),i=n(r(4)),a={name:"CustomNavbar",props:{title:{type:String,default:""},showBack:{type:Boolean,default:!0},showHeadle:{type:Boolean,default:!1},headleSrc:{type:String,default:""},backgroundColor:{type:String,default:"#ffffff"},titleColor:{type:String,default:"#333333"},borderBottom:{type:String,default:"1rpx solid rgba(0, 0, 0, 0.05)"},nowStyle:{type:String,default:"1rpx solid rgba(0, 0, 0, 0.05)"},leftImg:{type:String,default:"/static/images/back.png"},backgroundImage:{type:String}},data:function(){return{statusBarHeight:0}},created:function(){var e=this;return(0,i.default)(o.default.mark((function t(){var r,n;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,uni.getSystemInfoSync();case 2:r=t.sent,n=r.screenWidth,e.statusBarHeight=e.pxToRpx(r.statusBarHeight,n);case 5:case"end":return t.stop()}}),t)})))()},methods:{pxToRpx:function(e,t){if("number"!=typeof e)throw new Error("\u8bf7\u4f20\u5165\u6570\u5b57\u7c7b\u578b\u7684px\u503c");return e*(750/t)},goBack:function(){this.$emit("back"),uni.navigateBack({delta:1})},onHeadleClick:function(){this.$emit("onHeadleClick")}}};t.default=a}}); \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/pages/address/revise.js.LICENSE.txt b/unpackage/dist/build/app-plus/pages/address/revise.js.LICENSE.txt new file mode 100644 index 0000000..ae386fb --- /dev/null +++ b/unpackage/dist/build/app-plus/pages/address/revise.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/unpackage/dist/build/app-plus/pages/address/search.js b/unpackage/dist/build/app-plus/pages/address/search.js new file mode 100644 index 0000000..5b8a934 --- /dev/null +++ b/unpackage/dist/build/app-plus/pages/address/search.js @@ -0,0 +1,2 @@ +/*! For license information please see search.js.LICENSE.txt */ +!function(e){var a={};function r(o){if(a[o])return a[o].exports;var c=a[o]={i:o,l:!1,exports:{}};return e[o].call(c.exports,c,c.exports,r),c.l=!0,c.exports}r.m=e,r.c=a,r.d=function(e,a,o){r.o(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,a){if(1&a&&(e=r(e)),8&a)return e;if(4&a&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&a&&"string"!=typeof e)for(var c in e)r.d(o,c,function(a){return e[a]}.bind(null,c));return o},r.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(a,"a",a),a},r.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},r.p="/",r(r.s=309)}({0:function(e,a,r){"use strict";function o(e,a,r,o,c,d,t,i,n,s){var u,p="function"==typeof e?e.options:e;if(n){p.components||(p.components={});var l=Object.prototype.hasOwnProperty;for(var f in n)l.call(n,f)&&!l.call(p.components,f)&&(p.components[f]=n[f])}if(s&&("function"==typeof s.beforeCreate&&(s.beforeCreate=[s.beforeCreate]),(s.beforeCreate||(s.beforeCreate=[])).unshift((function(){this[s.__module]=this})),(p.mixins||(p.mixins=[])).push(s)),a&&(p.render=a,p.staticRenderFns=r,p._compiled=!0),o&&(p.functional=!0),d&&(p._scopeId="data-v-"+d),t?(u=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),c&&c.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(t)},p._ssrRegister=u):c&&(u=i?function(){c.call(this,this.$root.$options.shadowRoot)}:c),u)if(p.functional){p._injectStyles=u;var y=p.render;p.render=function(e,a){return u.call(a),y(e,a)}}else{var g=p.beforeCreate;p.beforeCreate=g?[].concat(g,u):[u]}return{exports:e,options:p}}r.d(a,"a",(function(){return o}))},1:function(e,a){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},10:function(e,a){e.exports={".custom-navbar":{"":{position:["fixed",0,0,0],top:[0,0,0,0],left:[0,0,0,0],right:[0,0,0,0],zIndex:[9999,0,0,0]}},".header-top":{"":{height:["88rpx",0,0,1],backgroundColor:["rgba(0,0,0,0)",0,0,1]}},".navbar-content":{"":{height:["88rpx",0,0,2],display:["flex",0,0,2],flexDirection:["row",0,0,2],flexWrap:["nowrap",0,0,2],alignItems:["center",0,0,2],justifyContent:["space-between",0,0,2],paddingTop:[0,0,0,2],paddingRight:["30rpx",0,0,2],paddingBottom:[0,0,0,2],paddingLeft:["24rpx",0,0,2]}},".right-area":{"":{width:["46rpx",0,0,3],height:["46rpx",0,0,3],display:["flex",0,0,3],alignItems:["center",0,0,3]}},".icon-headle":{"":{width:["46rpx",0,0,3],height:["46rpx",0,0,3],display:["flex",0,0,3],alignItems:["center",0,0,3]}},".left-area":{"":{width:["36rpx",0,0,4],height:["36rpx",0,0,4],display:["flex",0,0,4],alignItems:["center",0,0,4]}},".back-icon":{"":{width:["36rpx",0,0,4],height:["36rpx",0,0,4],display:["flex",0,0,4],alignItems:["center",0,0,4]}},".title":{"":{fontSize:["36rpx",0,0,6],fontWeight:["500",0,0,6],color:["#333333",0,0,6]}},"@VERSION":2}},11:function(e,a,r){"use strict";r.d(a,"b",(function(){return o})),r.d(a,"c",(function(){return c})),r.d(a,"a",(function(){}));var o=function(){var e=this,a=e.$createElement,r=e._self._c||a;return r("view",[r("view",{staticClass:["custom-navbar"],style:{paddingTop:e.statusBarHeight+"rpx",background:e.backgroundColor}},[r("view",{staticClass:["navbar-content"],style:{"border-bottom":e.borderBottom}},[r("view",{staticClass:["left-area"]},[e.showBack?r("view",{staticClass:["back-btn"],on:{click:e.goBack}},[r("u-image",{staticClass:["back-icon"],attrs:{src:e.leftImg,mode:"aspectFit"}})],1):e._e(),e._t("left")],2),r("u-text",{staticClass:["title"],style:"color:"+e.titleColor+";",appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.title))]),r("view",{staticClass:["right-area"]},[e._t("right",[e.showHeadle?r("u-image",{staticClass:["iconfont","icon-headle"],attrs:{src:e.headleSrc,mode:"aspectFit"},on:{click:e.onHeadleClick}}):e._e()])],2)])]),r("view",{staticClass:["header-top"],style:{height:e.statusBarHeight+88+"rpx"}})])},c=[]},12:function(e,a,r){"use strict";(function(e){var o=r(1);Object.defineProperty(a,"__esModule",{value:!0}),a.default=void 0;var c,d=o(r(3)),t=o(r(4)),i=o(r(6)),n=r(23),s=r(24);function u(e,a){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);a&&(o=o.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),r.push.apply(r,o)}return r}function p(e){for(var a=1;a=200&&t<300)){e.next=3;break}return e.abrupt("return",i);case 3:if(401!==t){e.next=7;break}return e.next=6,v(a,o,c);case 6:return e.abrupt("return",e.sent);case 7:return uni.showToast({title:i.message||"\u8bf7\u6c42\u5931\u8d25",icon:"none"}),e.abrupt("return",Promise.reject(i));case 9:case"end":return e.stop()}}),e)})));return function(a,r,o,c){return e.apply(this,arguments)}}(),m=function(){var a=(0,t.default)(d.default.mark((function a(r,o){var t,n,u;return d.default.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:if(n=uni.getStorageSync("baseUrl"),""==uni.getStorageSync("setVersion").VersionCode&&(0,s.setVersion)(),n){a.next=5;break}return a.next=5,new Promise((function(a,r){uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType},success:function(r){200==r.data.code&&(uni.setStorageSync("baseUrl",r.data.data.url),n=r.data.data.url,a(n)),e("log","\u8bf7\u6c42\u6210\u529f",r.data," at utils/request.js:121")},fail:function(a){e("log","\u8bf7\u6c42\u5931\u8d25",a," at utils/request.js:124")},complete:function(){e("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/request.js:127")}})}));case 5:return c=n,e("log","\u751f\u4ea7\u73af\u5883"," at utils/request.js:147"),t={baseURL:c},(0,i.default)(t,"baseURL",c),(0,i.default)(t,"header",{"content-type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType}),(0,i.default)(t,"timeout",6e4),r=p(p(p({},u=t),r),{},{url:o?r.url:"".concat(u.baseURL).concat(r.url)}),r=h(r),a.abrupt("return",new Promise((function(e,a){uni.request(p(p({},r),{},{success:function(o){e(x(r,o,e,a))},fail:function(e){uni.showToast({title:"\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5",icon:"none"}),a(e)}}))})));case 10:case"end":return a.stop()}}),a)})));return function(e,r){return a.apply(this,arguments)}}();function v(e,a,r){return b.apply(this,arguments)}function b(){return(b=(0,t.default)(d.default.mark((function e(a,r,o){var c,t;return d.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((0,n.getToken)()){e.next=2;break}return e.abrupt("return",S());case 2:if(!l){e.next=4;break}return e.abrupt("return",y((function(e){a.header.Authorization="Bearer ".concat(e),m(a,!0).then(r).catch(o)})));case 4:return l=!0,e.prev=5,e.next=8,w();case 8:return c=e.sent,(0,n.setToken)(c),g(c),a.header.Authorization="Bearer ".concat(c),e.next=14,m(a,!0);case 14:return t=e.sent,e.abrupt("return",t);case 18:return e.prev=18,e.t0=e.catch(5),(0,n.removeToken)(),S(),e.abrupt("return",e.t0);case 23:return e.prev=23,l=!1,e.finish(23);case 26:case"end":return e.stop()}}),e,null,[[5,18,23,26]])})))).apply(this,arguments)}function w(){return _.apply(this,arguments)}function _(){return(_=(0,t.default)(d.default.mark((function e(){var a;return d.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(uni.getStorageSync("refreshToken")){e.next=3;break}throw new Error("No refresh token");case 3:return e.next=5,m({url:"/sj/refreshtoken",data:{refresh_token:uni.getStorageSync("refreshToken"),deviceid:getApp().globalData.deviceid},method:"POST"});case 5:if(1!=(a=e.sent).state&&200!=a.code){e.next=10;break}return uni.setStorageSync("accessToken",a.access_token),uni.setStorageSync("refreshToken",a.refresh_token),e.abrupt("return",a.access_token);case 10:throw new Error("Refresh token failed");case 11:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function S(){uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}var C={get:function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return m(p({url:e,data:a,method:"GET"},r))},post:function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return m(p({url:e,data:a,method:"POST"},r))},put:function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return m(p({url:e,data:a,method:"PUT"},r))},delete:function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return m(p({url:e,data:a,method:"DELETE"},r))}};a.default=C}).call(this,r(2).default)},123:function(e,a,r){"use strict";r.r(a);var o=r(81),c=r.n(o);for(var d in o)["default"].indexOf(d)<0&&function(e){r.d(a,e,(function(){return o[e]}))}(d);a.default=c.a},13:function(e,a,r){var o=r(5).default,c=r(20);e.exports=function(e){var a=c(e,"string");return"symbol"==o(a)?a:a+""},e.exports.__esModule=!0,e.exports.default=e.exports},132:function(e,a,r){"use strict";var o=r(220),c=r(191),d=r(0);var t=Object(d.a)(c.default,o.b,o.c,!1,null,"7fad597e","d9bd59ce",!1,o.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(278).default,this.options.style):Object.assign(this.options.style,r(278).default)}).call(t),a.default=t.exports},14:function(e,a,r){"use strict";r.r(a);var o=r(10),c=r.n(o);for(var d in o)["default"].indexOf(d)<0&&function(e){r.d(a,e,(function(){return o[e]}))}(d);a.default=c.a},17:function(e,a,r){Vue.prototype.__$appStyle__={},Vue.prototype.__merge_style&&Vue.prototype.__merge_style(r(18).default,Vue.prototype.__$appStyle__)},18:function(e,a,r){"use strict";r.r(a);var o=r(7),c=r.n(o);for(var d in o)["default"].indexOf(d)<0&&function(e){r.d(a,e,(function(){return o[e]}))}(d);a.default=c.a},19:function(e,a){if("undefined"==typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(e){var a=this.constructor;return this.then((function(r){return a.resolve(e()).then((function(){return r}))}),(function(r){return a.resolve(e()).then((function(){throw r}))}))}),"undefined"!=typeof uni&&uni&&uni.requireGlobal){var r=uni.requireGlobal();ArrayBuffer=r.ArrayBuffer,Int8Array=r.Int8Array,Uint8Array=r.Uint8Array,Uint8ClampedArray=r.Uint8ClampedArray,Int16Array=r.Int16Array,Uint16Array=r.Uint16Array,Int32Array=r.Int32Array,Uint32Array=r.Uint32Array,Float32Array=r.Float32Array,Float64Array=r.Float64Array,BigInt64Array=r.BigInt64Array,BigUint64Array=r.BigUint64Array}},191:function(e,a,r){"use strict";var o=r(192),c=r.n(o);a.default=c.a},192:function(e,a,r){"use strict";(function(e){var o=r(1);Object.defineProperty(a,"__esModule",{value:!0}),a.default=void 0;var c=o(r(3)),d=o(r(4)),t=o(r(257)),i=(o(r(12)),o(r(310)),{components:{searchBox:t.default},data:function(){return{isFirst:!1,systemInfo:{},searchKeyword:"",searchResults:[],showMap:!0,latitude:0,longitude:0,newLatitude:0,newLongitude:0,markers:[],currentDistance:"0m",pageHeight:0,listHeight:0,city:{center:"",name:""},isSelectCity:!1,searchCity:uni.getStorageSync("searchCity")}},onLoad:function(a){if(this.systemInfo=uni.getSystemInfoSync(),this.source=a.source||"",a.longitude&&a.latitude)return e("log","\u4f7f\u7528\u4f20\u5165\u7684\u5750\u6807:",a.longitude,a.latitude," at pages/address/search.nvue:89"),this.longitude=parseFloat(a.longitude),this.latitude=parseFloat(a.latitude),this.newLongitude=this.longitude,this.newLatitude=this.latitude,this.getNowLocation("".concat(this.longitude,",").concat(this.latitude)),this.pageHeight=uni.getWindowInfo().safeHeight,void(this.listHeight=2*parseInt(this.pageHeight)-88-102-500);var r=this;if(a.dependency){var o=decodeURIComponent(a.dependency).split("-");a.dependency_code;if(e("log","\u4f20\u5165\u7684\u5730\u533a\u4fe1\u606f:",o," at pages/address/search.nvue:113"),o.length<3)return e("warn","\u5730\u533a\u4fe1\u606f\u4e0d\u5b8c\u6574\uff0c\u4f7f\u7528\u5f53\u524d\u4f4d\u7f6e"," at pages/address/search.nvue:118"),void r.getCurrentLocation();var t=function(a){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return new Promise((function(o){uni.request({url:"https://restapi.amap.com/v3/config/district",method:"GET",data:{key:"30b7eb1a1b2f88edc085b9b3ee9a2188",subdistrict:r,keywords:a,extensions:"all"},success:function(a){if(e("log","\u9ad8\u5fb7\u5730\u56feAPI\u54cd\u5e94:",a.data," at pages/address/search.nvue:137"),"1"===a.data.status&&a.data.districts&&a.data.districts.length>0){var r=a.data.districts[0];if(r.center&&""!==r.center&&1==a.data.districts.length)return void o(r.center)}o(null)},fail:function(){o(null)}})}))};(0,d.default)(c.default.mark((function a(){var d;return c.default.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:if(d=null,!o[2]){a.next=6;break}return a.next=4,t(o[2]);case 4:d=a.sent,e("log","\u533a\u5750\u6807\u83b7\u53d6\u7ed3\u679c:",d," at pages/address/search.nvue:163");case 6:if(d||!o[1]||o[1]===o[0]){a.next=11;break}return a.next=9,t(o[1]);case 9:d=a.sent,e("log","\u5e02\u5750\u6807\u83b7\u53d6\u7ed3\u679c:",d," at pages/address/search.nvue:169");case 11:if(d||!o[0]){a.next=16;break}return a.next=14,t(o[0]);case 14:d=a.sent,e("log","\u7701\u5750\u6807\u83b7\u53d6\u7ed3\u679c:",d," at pages/address/search.nvue:175");case 16:d?r.getNowLocation(d):(e("log","\u4f7f\u7528\u9ed8\u8ba4\u5750\u6807\uff08\u4e0a\u6d77\uff09"," at pages/address/search.nvue:182"),r.getNowLocation("121.473701,31.230416"));case 17:case"end":return a.stop()}}),a)})))()}else if(a.city){var i=JSON.parse(decodeURIComponent(a.city));r.city=i,r.getNowLocation(i.center),r.isSelectCity=!0}else a.isSelectCity?(r.isSelectCity=!0,r.getCurrentLocation()):r.getCurrentLocation();this.pageHeight=uni.getWindowInfo().safeArea.height,this.listHeight=2*parseInt(this.pageHeight)-88-102-500},onShow:function(){if(this.isFirst){var a=this,r=uni.getStorageSync("searchCity");e("log","searchCity.name:",r.name,r.center," at pages/address/search.nvue:214"),this.city.name!=r.name&&(a.city=r,a.searchCity=r,this.$nextTick((function(){a.getNowLocation(r.center)})))}else this.isFirst=!0},methods:{goSelectCity:function(){uni.navigateTo({url:"/pages/address/selectCity"})},convert:function(e){var a={key:"30b7eb1a1b2f88edc085b9b3ee9a2188",locations:"".concat(e.longitude,",").concat(e.latitude),coordsys:"gps"};return new Promise((function(e,r){uni.request({url:"https://restapi.amap.com/v3/assistant/coordinate/convert",method:"GET",data:a,success:function(a){e(a.data)}})}))},getLocation:function(){var a=this;return new Promise((function(r,o){var t;"ios"==uni.getStorageSync("setVersion").DeviceBrand?uni.getLocation({type:"wgs84",isHighAccuracy:!0,success:(t=(0,d.default)(c.default.mark((function e(o){var d,t;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a.convert(o);case 2:d=e.sent,t=d.locations.split(","),o.longitude=t[0],o.latitude=t[1],r(o);case 7:case"end":return e.stop()}}),e)}))),function(e){return t.apply(this,arguments)}),fail:function(a){e("log",a," at pages/address/search.nvue:266"),uni.showToast({title:"\u83b7\u53d6\u4f4d\u7f6e\u5931\u8d25",icon:"none"}),o(a)}}):uni.getLocation({type:"gcj02",geocode:!0,success:function(e){r(e)},fail:function(a){e("log",a," at pages/address/search.nvue:282"),uni.showToast({title:"\u83b7\u53d6\u4f4d\u7f6e\u5931\u8d25",icon:"none"}),o(a)}})}))},getCurrentLocation:function(){var e=this;return(0,d.default)(c.default.mark((function a(){var r,o;return c.default.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return r=e,"","",a.next=5,r.getLocation();case 5:o=a.sent,r.longitude=o.longitude,r.latitude=o.latitude,r.markers=[{latitude:r.latitude,longitude:r.longitude,iconPath:"/static/images/position_icon_3x.png"}],r.getPlaceAround();case 10:case"end":return a.stop()}}),a)})))()},getNowLocation:function(e){var a=e.split(",");this.longitude=a[0],this.latitude=a[1],this.newLongitude=a[0],this.newLatitude=a[1],this.markers=[{latitude:this.latitude,longitude:this.longitude,iconPath:"/static/images/position_icon_3x.png"}],this.getPlaceAround()},getPlaceAround:function(){var e,a=this;return e=a.searchKeyword?{key:"30b7eb1a1b2f88edc085b9b3ee9a2188",location:"".concat(a.newLongitude,",").concat(a.newLatitude),keywords:a.searchKeyword,page:1,offset:10}:{key:"30b7eb1a1b2f88edc085b9b3ee9a2188",location:"".concat(a.newLongitude,",").concat(a.newLatitude),page:1,offset:10},new Promise((function(r,o){uni.request({url:"https://restapi.amap.com/v3/place/around",method:"GET",data:e,success:function(e){var r,o;a.city={name:null===(r=e.data.pois[0])||void 0===r?void 0:r.cityname,center:null===(o=e.data.pois[0])||void 0===o?void 0:o.location},a.searchResults=e.data.pois}})}))},updateMarkers:function(){},onSearch:function(){var a=this;return(0,d.default)(c.default.mark((function r(){var o,d;return c.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if((o=a).searchKeyword.trim()){r.next=4;break}return uni.showToast({title:"\u8bf7\u8f93\u5165\u641c\u7d22\u5173\u952e\u8bcd",icon:"none"}),r.abrupt("return");case 4:return r.prev=4,o.searchResults=[],d={key:"30b7eb1a1b2f88edc085b9b3ee9a2188",keywords:o.searchKeyword,city:o.city.name||"",page:1,offset:10},e("log","\u641c\u7d22\u53c2\u6570:",d," at pages/address/search.nvue:408"),r.next=10,new Promise((function(a,r){uni.request({url:"https://restapi.amap.com/v3/place/text",method:"GET",data:d,success:function(r){if(e("log","\u641c\u7d22API\u54cd\u5e94:",r.data," at pages/address/search.nvue:417"),"1"===r.data.status&&r.data.pois){if(o.searchResults=r.data.pois,o.searchResults&&o.searchResults.length>0){var c=o.searchResults[0];if(c.location){var d=c.location.split(",");if(2===d.length){var t=parseFloat(d[0]),i=parseFloat(d[1]);e("log","\u641c\u7d22\u7ed3\u679c\u4f4d\u7f6e:",t,i," at pages/address/search.nvue:430"),o.updateMapCenter(t,i)}}}}else o.searchResults=[];a()},fail:function(a){e("error","\u641c\u7d22\u5931\u8d25:",a," at pages/address/search.nvue:443"),r(a)}})}));case 10:r.next=16;break;case 12:r.prev=12,r.t0=r.catch(4),e("error","\u641c\u7d22\u5931\u8d25:",r.t0," at pages/address/search.nvue:449"),uni.showToast({title:"\u641c\u7d22\u5931\u8d25",icon:"none"});case 16:case"end":return r.stop()}}),r,null,[[4,12]])})))()},updateMapCenter:function(a,r){var o=this;a&&r?(this.longitude=a,this.latitude=r,this.newLongitude=a,this.newLatitude=r,e("log","\u66f4\u65b0\u5730\u56fe\u4e2d\u5fc3\u5230:",a,r," at pages/address/search.nvue:470"),setTimeout((function(){try{uni.createMapContext("map",o).moveToLocation({longitude:a,latitude:r,success:function(){e("log","moveToLocation\u6210\u529f"," at pages/address/search.nvue:483")},fail:function(a){e("error","\u79fb\u52a8\u5730\u56fe\u5931\u8d25:",a," at pages/address/search.nvue:486")}})}catch(a){e("error","\u5730\u56fe\u79fb\u52a8\u5f02\u5e38:",a," at pages/address/search.nvue:490")}}),300)):e("warn","\u65e0\u6548\u7684\u5750\u6807:",a,r," at pages/address/search.nvue:460")},selectAddress:function(a){e("log","=== \u5730\u5740\u9009\u62e9\u9875\u9762\uff1a\u9009\u62e9\u5730\u5740 ==="," at pages/address/search.nvue:498");var r=getCurrentPages(),o=r[r.length-1].options||{};if(e("log","\u9875\u9762\u53c2\u6570:",o," at pages/address/search.nvue:505"),e("log","\u5f53\u524d\u6765\u6e90:",this.source," at pages/address/search.nvue:506"),"syr_info"===o.source){var c={name:a.name,address:a.address||a.name,location:a.location,longitude:a.location?a.location.split(",")[0]:"",latitude:a.location?a.location.split(",")[1]:"",pname:a.pname||"",cityname:a.cityname||"",adname:a.adname||"",source:"syr_info"};uni.setStorageSync("syr_selected_address",c),e("log","\u5df2\u5b58\u50a8\u624b\u827a\u4eba\u5730\u5740\u6570\u636e:",c," at pages/address/search.nvue:525"),uni.$emit("address-selected-for-syr",c)}if("sj_info"===o.source){var d={name:a.name,address:a.address||a.name,location:a.location,longitude:a.location?a.location.split(",")[0]:"",latitude:a.location?a.location.split(",")[1]:"",pname:a.pname||"",cityname:a.cityname||"",adname:a.adname||"",source:"sj_info"};uni.setStorageSync("sj_selected_address",d),e("log","\u5df2\u5b58\u50a8\u5546\u5bb6\u5730\u5740\u6570\u636e:",d," at pages/address/search.nvue:548"),getApp().globalData&&(getApp().globalData.selectedAddress=d)}var t=r[r.length-2];if(t&&t.$vm&&"function"==typeof t.$vm.editAddress)try{t.$vm.editAddress(a)}catch(a){e("error","\u8c03\u7528 editAddress \u5931\u8d25:",a," at pages/address/search.nvue:563")}setTimeout((function(){uni.navigateBack({success:function(){e("log","\u6210\u529f\u8fd4\u56de\u4e0a\u4e00\u9875"," at pages/address/search.nvue:572")}})}),50)},onMapTap:function(e){this.newLatitude=e.detail.latitude,this.newLongitude=e.detail.longitude,this.updateMarkers(),this.getPlaceAround()},changeMap:function(a){var r,o=this;switch(uni.getSystemInfoSync().platform){case"android":r=a.type;break;case"ios":r=a.detail.type}"end"===r&&uni.createMapContext("map",this).getCenterLocation({success:function(a){e("log",111,a," at pages/address/search.nvue:611"),o.newLatitude=a.latitude,o.newLongitude=a.longitude,o.updateMarkers(),o.getPlaceAround()}})},goAddress:function(){uni.navigateTo({url:"/pages/address/list"})}}});a.default=i}).call(this,r(2).default)},193:function(e,a){e.exports={".search-container":{"":{backgroundColor:["#FFFFFF",0,0,0],display:["flex",0,0,0],flexDirection:["row",0,0,0],alignItems:["center",0,0,0],paddingTop:["32rpx",0,0,0],paddingRight:["30rpx",0,0,0],paddingBottom:["20rpx",0,0,0],paddingLeft:["30rpx",0,0,0]}},".search-container-text":{".search-container ":{fontFamily:["PingFangSC, PingFang SC",0,1,1],fontWeight:["500",0,1,1],fontSize:["32rpx",0,1,1],color:["#333333",0,1,1],lineHeight:["45rpx",0,1,1],textAlign:["left",0,1,1],fontStyle:["normal",0,1,1]}},".text-img":{".search-container ":{width:["20rpx",0,1,2],height:["12rpx",0,1,2],marginLeft:["8rpx",0,1,2],marginRight:["26rpx",0,1,2]}},".address-header":{".search-container ":{flex:[1,0,1,3],height:["68rpx",0,1,3],backgroundColor:["#FFFFFF",0,1,3],borderWidth:["2rpx",0,1,3],borderStyle:["solid",0,1,3],borderColor:["#E8101E",0,1,3],borderRadius:["60rpx",0,1,3],position:["relative",0,1,3]}},".search-icon":{".search-container .address-header ":{width:["29rpx",0,2,4],height:["32rpx",0,2,4],position:["absolute",0,2,4],top:["18rpx",0,2,4],left:["22rpx",0,2,4]}},".search-text":{".search-container .address-header ":{fontFamily:["PingFangSC, PingFang SC",0,2,5],fontWeight:["400",0,2,5],fontSize:["26rpx",0,2,5],color:["#CCCCCC",0,2,5],textAlign:["left",0,2,5],fontStyle:["normal",0,2,5],position:["absolute",0,2,5],top:["16rpx",0,2,5],left:["72rpx",0,2,5]}},".address-list":{"":{backgroundColor:["#FFFFFF",0,0,6]}},".address-item":{"":{display:["flex",0,0,7],flexDirection:["row",0,0,7],flexWrap:["nowrap",0,0,7],justifyContent:["space-between",0,0,7],alignItems:["center",0,0,7],paddingTop:["32rpx",0,0,7],paddingRight:["32rpx",0,0,7],paddingBottom:["32rpx",0,0,7],paddingLeft:["32rpx",0,0,7],borderBottomWidth:["1rpx",0,0,7],borderBottomStyle:["solid",0,0,7],borderBottomColor:["#EEEEEE",0,0,7]}},".address-info":{"":{flex:[1,0,0,8],marginRight:["24rpx",0,0,8]}},".address-name":{"":{fontSize:["28rpx",0,0,9],color:["#333333",0,0,9],fontWeight:["500",0,0,9],marginBottom:["8rpx",0,0,9]}},".address-detail":{"":{fontSize:["24rpx",0,0,10],color:["#666666",0,0,10]}},".distance-text":{"":{fontSize:["24rpx",0,0,11],color:["#999999",0,0,11]}},".map-container":{"":{width:["750rpx",0,0,12],height:["500rpx",0,0,12],position:["relative",0,0,12],zIndex:[1,0,0,12]}},".map":{"":{width:["750rpx",0,0,13],height:["500rpx",0,0,13]}},".empty-state":{"":{display:["flex",0,0,14],flexDirection:["column",0,0,14],alignItems:["center",0,0,14],justifyContent:["center",0,0,14],paddingTop:["200rpx",0,0,14]}},".empty-icon":{"":{width:["240rpx",0,0,15],height:["240rpx",0,0,15],marginBottom:["32rpx",0,0,15]}},".empty-text":{"":{fontSize:["30rpx",0,0,16],color:["#999999",0,0,16]}},".center-marker":{"":{position:["absolute",0,0,18],left:["375rpx",0,0,18],transform:["translate(-50%)",0,0,18],top:["200rpx",0,0,18],width:["42rpx",0,0,18],height:["69rpx",0,0,18]}},".center-marker-img":{".center-marker ":{width:["42rpx",0,1,19]}},"@VERSION":2}},2:function(e,a,r){"use strict";function o(e){var a=Object.prototype.toString.call(e);return a.substring(8,a.length-1)}function c(){return"string"==typeof __channelId__&&__channelId__}function d(e,a){switch(o(a)){case"Function":return"function() { [native code] }";default:return a}}Object.defineProperty(a,"__esModule",{value:!0}),a.default=function(){for(var e=arguments.length,a=new Array(e),r=0;r1){var s=i.pop();n=i.join("---COMMA---"),0===s.indexOf(" at ")?n+=s:n+="---COMMA---"+s}else n=i[0];console[t](n)},a.log=function(e){for(var a=arguments.length,r=new Array(a>1?a-1:0),o=1;o=0;--c){var d=this.tryEntries[c],i=d.completion;if("root"===d.tryLoc)return o("end");if(d.tryLoc<=this.prev){var n=t.call(d,"catchLoc"),s=t.call(d,"finallyLoc");if(n&&s){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&t.call(o,"finallyLoc")&&this.prev=0;--a){var r=this.tryEntries[a];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),R(r),m}},catch:function(e){for(var a=this.tryEntries.length-1;a>=0;--a){var r=this.tryEntries[a];if(r.tryLoc===e){var o=r.completion;if("throw"===o.type){var c=o.arg;R(r)}return c}}throw Error("illegal catch attempt")},delegateYield:function(e,r,o){return this.delegate={iterator:P(e),resultName:r,nextLoc:o},"next"===this.method&&(this.arg=a),m}},r}e.exports=c,e.exports.__esModule=!0,e.exports.default=e.exports},22:function(e,a,r){"use strict";r.r(a);var o=r(11),c=r(8);for(var d in c)["default"].indexOf(d)<0&&function(e){r.d(a,e,(function(){return c[e]}))}(d);var t=r(0);var i=Object(t.a)(c.default,o.b,o.c,!1,null,null,"43cd5ac3",!1,o.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(14).default,this.options.style):Object.assign(this.options.style,r(14).default)}).call(i),a.default=i.exports},220:function(e,a,r){"use strict";r.d(a,"b",(function(){return c})),r.d(a,"c",(function(){return d})),r.d(a,"a",(function(){return o}));var o={customNavbar:r(22).default},c=function(){var e=this,a=e.$createElement,r=e._self._c||a;return r("scroll-view",{staticStyle:{flexDirection:"column"},attrs:{scrollY:!0,showScrollbar:!0,enableBackToTop:!0,bubble:"true"}},[r("view",{staticClass:["search-address-page"]},[r("custom-navbar",{attrs:{title:"\u641c\u7d22\u5730\u5740",showBack:!0,backgroundColor:"#FFFFFF"}}),r("view",{staticClass:["search-container"]},[e.isSelectCity?r("u-text",{staticClass:["search-container-text"],appendAsTree:!0,attrs:{append:"tree"},on:{click:e.goSelectCity}},[e._v(e._s(e.city.name))]):e._e(),e.isSelectCity?r("u-image",{staticClass:["text-img"],attrs:{src:"/static/images/Fill.jpg",mode:"aspectFit"}}):e._e(),r("search-box",{attrs:{placeholder:"\u8bf7\u8f93\u5165\u5730\u5740",showBack:!1},on:{confirm:e.onSearch},model:{value:e.searchKeyword,callback:function(a){e.searchKeyword=a},expression:"searchKeyword"}})],1),e.showMap?r("view",{staticClass:["map-container"]},[r("map",{staticClass:["map"],attrs:{id:"map",latitude:e.latitude,longitude:e.longitude,scale:"19"},on:{tap:e.onMapTap,regionchange:e.changeMap}}),r("view",{staticClass:["center-marker"]},[r("u-image",{staticClass:["center-marker-img"],attrs:{src:"/static/images/mapCenter.png",mode:"widthFix"}})],1)],1):e._e(),e.searchResults?r("scroll-view",{staticClass:["address-list"],style:"height: "+e.listHeight+"rpx",attrs:{scrollY:!0}},e._l(e.searchResults,(function(a,o){return r("view",{key:o,staticClass:["address-item"],on:{click:function(r){e.selectAddress(a)}}},[r("view",{staticClass:["address-info"]},[r("u-text",{staticClass:["address-name"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(a.name))]),r("u-text",{staticClass:["address-detail"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(a.address))])]),a.distance?r("view",{staticClass:["address-distance"]},[r("u-text",{staticClass:["distance-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(a.distance)+"m")])]):e._e()])})),0):r("view",{staticClass:["empty-state"]},[r("u-image",{staticClass:["empty-icon"],attrs:{src:"/static/images/empty.png"}}),r("u-text",{staticClass:["empty-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u672a\u627e\u5230\u76f8\u5173\u5730\u5740")])],1)],1)])},d=[]},23:function(e,a,r){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.getToken=function(){return uni.getStorageSync("accessToken")},a.removeToken=function(){uni.removeStorageSync("accessToken"),uni.removeStorageSync("refreshToken")},a.setToken=function(e){uni.setStorageSync("accessToken",e)}},24:function(e,a,r){"use strict";(function(e){var o=r(1);Object.defineProperty(a,"__esModule",{value:!0}),a.getBaseUrl=function(){return s.apply(this,arguments)},a.setVersion=function(){var a=uni.getSystemInfoSync();t=a.appWgtVersion,i=a.deviceBrand,e("log","DeviceType",i," at utils/version.js:26"),"android"===(n=a.platform)?n="sj_android":"ios"===n&&(n="sj_ios");var r={VersionCode:t||"",DeviceBrand:n||"",DeviceType:i||""};uni.setStorageSync("setVersion",r)};var c=o(r(3)),d=o(r(4)),t="",i="",n="";function s(){return(s=(0,d.default)(c.default.mark((function a(){var r;return c.default.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return r=uni.getStorageSync("setVersion"),a.next=3,uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:r.VersionCode,DeviceBrand:r.DeviceBrand,DeviceType:r.DeviceType},success:function(e){return 200==e.data.code&&uni.setStorageSync("baseUrl",e.data.data.url),e.data.data.url},fail:function(a){return e("log","\u8bf7\u6c42\u5931\u8d25",a," at utils/version.js:82"),"http://60.247.146.5:93"},complete:function(){e("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/version.js:86")}});case 3:case"end":return a.stop()}}),a)})))).apply(this,arguments)}}).call(this,r(2).default)},257:function(e,a,r){"use strict";r.r(a);var o=r(83),c=r(79);for(var d in c)["default"].indexOf(d)<0&&function(e){r.d(a,e,(function(){return c[e]}))}(d);var t=r(0);var i=Object(t.a)(c.default,o.b,o.c,!1,null,null,"6482e161",!1,o.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(123).default,this.options.style):Object.assign(this.options.style,r(123).default)}).call(i),a.default=i.exports},278:function(e,a,r){"use strict";r.r(a);var o=r(193),c=r.n(o);for(var d in o)["default"].indexOf(d)<0&&function(e){r.d(a,e,(function(){return o[e]}))}(d);a.default=c.a},3:function(e,a,r){var o=r(5),c=r(21)();e.exports=c;try{regeneratorRuntime=c}catch(e){"object"===("undefined"==typeof globalThis?"undefined":o(globalThis))?globalThis.regeneratorRuntime=c:Function("r","regeneratorRuntime = r")(c)}},309:function(e,a,r){"use strict";r.r(a);r(17),r(19);var o=r(132);o.default.mpType="page",o.default.route="pages/address/search",o.default.el="#root",new Vue(o.default)},310:function(e){e.exports=JSON.parse('[{"province":"\u5317\u4eac\u5e02","code":"110000","citys":[{"city":"\u5317\u4eac\u5e02","code":"110100000000","areas":[{"area":"\u4e1c\u57ce\u533a","code":"110101000000"},{"area":"\u897f\u57ce\u533a","code":"110102000000"},{"area":"\u671d\u9633\u533a","code":"110105000000"},{"area":"\u4e30\u53f0\u533a","code":"110106000000"},{"area":"\u77f3\u666f\u5c71\u533a","code":"110107000000"},{"area":"\u6d77\u6dc0\u533a","code":"110108000000"},{"area":"\u95e8\u5934\u6c9f\u533a","code":"110109000000"},{"area":"\u623f\u5c71\u533a","code":"110111000000"},{"area":"\u901a\u5dde\u533a","code":"110112000000"},{"area":"\u987a\u4e49\u533a","code":"110113000000"},{"area":"\u660c\u5e73\u533a","code":"110114000000"},{"area":"\u5927\u5174\u533a","code":"110115000000"},{"area":"\u6000\u67d4\u533a","code":"110116000000"},{"area":"\u5e73\u8c37\u533a","code":"110117000000"},{"area":"\u5bc6\u4e91\u533a","code":"110118000000"},{"area":"\u5ef6\u5e86\u533a","code":"110119000000"}]}]},{"province":"\u5929\u6d25\u5e02","code":"120000","citys":[{"city":"\u5929\u6d25\u5e02","code":"120100000000","areas":[{"area":"\u548c\u5e73\u533a","code":"120101000000"},{"area":"\u6cb3\u4e1c\u533a","code":"120102000000"},{"area":"\u6cb3\u897f\u533a","code":"120103000000"},{"area":"\u5357\u5f00\u533a","code":"120104000000"},{"area":"\u6cb3\u5317\u533a","code":"120105000000"},{"area":"\u7ea2\u6865\u533a","code":"120106000000"},{"area":"\u4e1c\u4e3d\u533a","code":"120110000000"},{"area":"\u897f\u9752\u533a","code":"120111000000"},{"area":"\u6d25\u5357\u533a","code":"120112000000"},{"area":"\u5317\u8fb0\u533a","code":"120113000000"},{"area":"\u6b66\u6e05\u533a","code":"120114000000"},{"area":"\u5b9d\u577b\u533a","code":"120115000000"},{"area":"\u6ee8\u6d77\u65b0\u533a","code":"120116000000"},{"area":"\u5b81\u6cb3\u533a","code":"120117000000"},{"area":"\u9759\u6d77\u533a","code":"120118000000"},{"area":"\u84df\u5dde\u533a","code":"120119000000"}]}]},{"province":"\u6cb3\u5317\u7701","code":"130000","citys":[{"city":"\u77f3\u5bb6\u5e84\u5e02","code":"130100000000","areas":[{"area":"\u957f\u5b89\u533a","code":"130102000000"},{"area":"\u6865\u897f\u533a","code":"130104000000"},{"area":"\u65b0\u534e\u533a","code":"130105000000"},{"area":"\u4e95\u9649\u77ff\u533a","code":"130107000000"},{"area":"\u88d5\u534e\u533a","code":"130108000000"},{"area":"\u85c1\u57ce\u533a","code":"130109000000"},{"area":"\u9e7f\u6cc9\u533a","code":"130110000000"},{"area":"\u683e\u57ce\u533a","code":"130111000000"},{"area":"\u4e95\u9649\u53bf","code":"130121000000"},{"area":"\u6b63\u5b9a\u53bf","code":"130123000000"},{"area":"\u884c\u5510\u53bf","code":"130125000000"},{"area":"\u7075\u5bff\u53bf","code":"130126000000"},{"area":"\u9ad8\u9091\u53bf","code":"130127000000"},{"area":"\u6df1\u6cfd\u53bf","code":"130128000000"},{"area":"\u8d5e\u7687\u53bf","code":"130129000000"},{"area":"\u65e0\u6781\u53bf","code":"130130000000"},{"area":"\u5e73\u5c71\u53bf","code":"130131000000"},{"area":"\u5143\u6c0f\u53bf","code":"130132000000"},{"area":"\u8d75\u53bf","code":"130133000000"},{"area":"\u77f3\u5bb6\u5e84\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"130171000000"},{"area":"\u77f3\u5bb6\u5e84\u5faa\u73af\u5316\u5de5\u56ed\u533a","code":"130172000000"},{"area":"\u8f9b\u96c6\u5e02","code":"130181000000"},{"area":"\u664b\u5dde\u5e02","code":"130183000000"},{"area":"\u65b0\u4e50\u5e02","code":"130184000000"}]},{"city":"\u5510\u5c71\u5e02","code":"130200000000","areas":[{"area":"\u8def\u5357\u533a","code":"130202000000"},{"area":"\u8def\u5317\u533a","code":"130203000000"},{"area":"\u53e4\u51b6\u533a","code":"130204000000"},{"area":"\u5f00\u5e73\u533a","code":"130205000000"},{"area":"\u4e30\u5357\u533a","code":"130207000000"},{"area":"\u4e30\u6da6\u533a","code":"130208000000"},{"area":"\u66f9\u5983\u7538\u533a","code":"130209000000"},{"area":"\u6ee6\u5357\u53bf","code":"130224000000"},{"area":"\u4e50\u4ead\u53bf","code":"130225000000"},{"area":"\u8fc1\u897f\u53bf","code":"130227000000"},{"area":"\u7389\u7530\u53bf","code":"130229000000"},{"area":"\u6cb3\u5317\u5510\u5c71\u82a6\u53f0\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"130271000000"},{"area":"\u5510\u5c71\u5e02\u6c49\u6cbd\u7ba1\u7406\u533a","code":"130272000000"},{"area":"\u5510\u5c71\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"130273000000"},{"area":"\u6cb3\u5317\u5510\u5c71\u6d77\u6e2f\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"130274000000"},{"area":"\u9075\u5316\u5e02","code":"130281000000"},{"area":"\u8fc1\u5b89\u5e02","code":"130283000000"},{"area":"\u6ee6\u5dde\u5e02","code":"130284000000"}]},{"city":"\u79e6\u7687\u5c9b\u5e02","code":"130300000000","areas":[{"area":"\u6d77\u6e2f\u533a","code":"130302000000"},{"area":"\u5c71\u6d77\u5173\u533a","code":"130303000000"},{"area":"\u5317\u6234\u6cb3\u533a","code":"130304000000"},{"area":"\u629a\u5b81\u533a","code":"130306000000"},{"area":"\u9752\u9f99\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"130321000000"},{"area":"\u660c\u9ece\u53bf","code":"130322000000"},{"area":"\u5362\u9f99\u53bf","code":"130324000000"},{"area":"\u79e6\u7687\u5c9b\u5e02\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"130371000000"},{"area":"\u5317\u6234\u6cb3\u65b0\u533a","code":"130372000000"}]},{"city":"\u90af\u90f8\u5e02","code":"130400000000","areas":[{"area":"\u90af\u5c71\u533a","code":"130402000000"},{"area":"\u4e1b\u53f0\u533a","code":"130403000000"},{"area":"\u590d\u5174\u533a","code":"130404000000"},{"area":"\u5cf0\u5cf0\u77ff\u533a","code":"130406000000"},{"area":"\u80a5\u4e61\u533a","code":"130407000000"},{"area":"\u6c38\u5e74\u533a","code":"130408000000"},{"area":"\u4e34\u6f33\u53bf","code":"130423000000"},{"area":"\u6210\u5b89\u53bf","code":"130424000000"},{"area":"\u5927\u540d\u53bf","code":"130425000000"},{"area":"\u6d89\u53bf","code":"130426000000"},{"area":"\u78c1\u53bf","code":"130427000000"},{"area":"\u90b1\u53bf","code":"130430000000"},{"area":"\u9e21\u6cfd\u53bf","code":"130431000000"},{"area":"\u5e7f\u5e73\u53bf","code":"130432000000"},{"area":"\u9986\u9676\u53bf","code":"130433000000"},{"area":"\u9b4f\u53bf","code":"130434000000"},{"area":"\u66f2\u5468\u53bf","code":"130435000000"},{"area":"\u90af\u90f8\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"130471000000"},{"area":"\u90af\u90f8\u5180\u5357\u65b0\u533a","code":"130473000000"},{"area":"\u6b66\u5b89\u5e02","code":"130481000000"}]},{"city":"\u90a2\u53f0\u5e02","code":"130500000000","areas":[{"area":"\u8944\u90fd\u533a","code":"130502000000"},{"area":"\u4fe1\u90fd\u533a","code":"130503000000"},{"area":"\u4efb\u6cfd\u533a","code":"130505000000"},{"area":"\u5357\u548c\u533a","code":"130506000000"},{"area":"\u4e34\u57ce\u53bf","code":"130522000000"},{"area":"\u5185\u4e18\u53bf","code":"130523000000"},{"area":"\u67cf\u4e61\u53bf","code":"130524000000"},{"area":"\u9686\u5c27\u53bf","code":"130525000000"},{"area":"\u5b81\u664b\u53bf","code":"130528000000"},{"area":"\u5de8\u9e7f\u53bf","code":"130529000000"},{"area":"\u65b0\u6cb3\u53bf","code":"130530000000"},{"area":"\u5e7f\u5b97\u53bf","code":"130531000000"},{"area":"\u5e73\u4e61\u53bf","code":"130532000000"},{"area":"\u5a01\u53bf","code":"130533000000"},{"area":"\u6e05\u6cb3\u53bf","code":"130534000000"},{"area":"\u4e34\u897f\u53bf","code":"130535000000"},{"area":"\u6cb3\u5317\u90a2\u53f0\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"130571000000"},{"area":"\u5357\u5bab\u5e02","code":"130581000000"},{"area":"\u6c99\u6cb3\u5e02","code":"130582000000"}]},{"city":"\u4fdd\u5b9a\u5e02","code":"130600000000","areas":[{"area":"\u7ade\u79c0\u533a","code":"130602000000"},{"area":"\u83b2\u6c60\u533a","code":"130606000000"},{"area":"\u6ee1\u57ce\u533a","code":"130607000000"},{"area":"\u6e05\u82d1\u533a","code":"130608000000"},{"area":"\u5f90\u6c34\u533a","code":"130609000000"},{"area":"\u6d9e\u6c34\u53bf","code":"130623000000"},{"area":"\u961c\u5e73\u53bf","code":"130624000000"},{"area":"\u5b9a\u5174\u53bf","code":"130626000000"},{"area":"\u5510\u53bf","code":"130627000000"},{"area":"\u9ad8\u9633\u53bf","code":"130628000000"},{"area":"\u5bb9\u57ce\u53bf","code":"130629000000"},{"area":"\u6d9e\u6e90\u53bf","code":"130630000000"},{"area":"\u671b\u90fd\u53bf","code":"130631000000"},{"area":"\u5b89\u65b0\u53bf","code":"130632000000"},{"area":"\u6613\u53bf","code":"130633000000"},{"area":"\u66f2\u9633\u53bf","code":"130634000000"},{"area":"\u8821\u53bf","code":"130635000000"},{"area":"\u987a\u5e73\u53bf","code":"130636000000"},{"area":"\u535a\u91ce\u53bf","code":"130637000000"},{"area":"\u96c4\u53bf","code":"130638000000"},{"area":"\u4fdd\u5b9a\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"130671000000"},{"area":"\u4fdd\u5b9a\u767d\u6c9f\u65b0\u57ce","code":"130672000000"},{"area":"\u6dbf\u5dde\u5e02","code":"130681000000"},{"area":"\u5b9a\u5dde\u5e02","code":"130682000000"},{"area":"\u5b89\u56fd\u5e02","code":"130683000000"},{"area":"\u9ad8\u7891\u5e97\u5e02","code":"130684000000"}]},{"city":"\u5f20\u5bb6\u53e3\u5e02","code":"130700000000","areas":[{"area":"\u6865\u4e1c\u533a","code":"130702000000"},{"area":"\u6865\u897f\u533a","code":"130703000000"},{"area":"\u5ba3\u5316\u533a","code":"130705000000"},{"area":"\u4e0b\u82b1\u56ed\u533a","code":"130706000000"},{"area":"\u4e07\u5168\u533a","code":"130708000000"},{"area":"\u5d07\u793c\u533a","code":"130709000000"},{"area":"\u5f20\u5317\u53bf","code":"130722000000"},{"area":"\u5eb7\u4fdd\u53bf","code":"130723000000"},{"area":"\u6cbd\u6e90\u53bf","code":"130724000000"},{"area":"\u5c1a\u4e49\u53bf","code":"130725000000"},{"area":"\u851a\u53bf","code":"130726000000"},{"area":"\u9633\u539f\u53bf","code":"130727000000"},{"area":"\u6000\u5b89\u53bf","code":"130728000000"},{"area":"\u6000\u6765\u53bf","code":"130730000000"},{"area":"\u6dbf\u9e7f\u53bf","code":"130731000000"},{"area":"\u8d64\u57ce\u53bf","code":"130732000000"},{"area":"\u5f20\u5bb6\u53e3\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"130771000000"},{"area":"\u5f20\u5bb6\u53e3\u5e02\u5bdf\u5317\u7ba1\u7406\u533a","code":"130772000000"},{"area":"\u5f20\u5bb6\u53e3\u5e02\u585e\u5317\u7ba1\u7406\u533a","code":"130773000000"}]},{"city":"\u627f\u5fb7\u5e02","code":"130800000000","areas":[{"area":"\u53cc\u6865\u533a","code":"130802000000"},{"area":"\u53cc\u6ee6\u533a","code":"130803000000"},{"area":"\u9e70\u624b\u8425\u5b50\u77ff\u533a","code":"130804000000"},{"area":"\u627f\u5fb7\u53bf","code":"130821000000"},{"area":"\u5174\u9686\u53bf","code":"130822000000"},{"area":"\u6ee6\u5e73\u53bf","code":"130824000000"},{"area":"\u9686\u5316\u53bf","code":"130825000000"},{"area":"\u4e30\u5b81\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"130826000000"},{"area":"\u5bbd\u57ce\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"130827000000"},{"area":"\u56f4\u573a\u6ee1\u65cf\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","code":"130828000000"},{"area":"\u627f\u5fb7\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"130871000000"},{"area":"\u5e73\u6cc9\u5e02","code":"130881000000"}]},{"city":"\u6ca7\u5dde\u5e02","code":"130900000000","areas":[{"area":"\u65b0\u534e\u533a","code":"130902000000"},{"area":"\u8fd0\u6cb3\u533a","code":"130903000000"},{"area":"\u6ca7\u53bf","code":"130921000000"},{"area":"\u9752\u53bf","code":"130922000000"},{"area":"\u4e1c\u5149\u53bf","code":"130923000000"},{"area":"\u6d77\u5174\u53bf","code":"130924000000"},{"area":"\u76d0\u5c71\u53bf","code":"130925000000"},{"area":"\u8083\u5b81\u53bf","code":"130926000000"},{"area":"\u5357\u76ae\u53bf","code":"130927000000"},{"area":"\u5434\u6865\u53bf","code":"130928000000"},{"area":"\u732e\u53bf","code":"130929000000"},{"area":"\u5b5f\u6751\u56de\u65cf\u81ea\u6cbb\u53bf","code":"130930000000"},{"area":"\u6cb3\u5317\u6ca7\u5dde\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"130971000000"},{"area":"\u6ca7\u5dde\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"130972000000"},{"area":"\u6ca7\u5dde\u6e24\u6d77\u65b0\u533a","code":"130973000000"},{"area":"\u6cca\u5934\u5e02","code":"130981000000"},{"area":"\u4efb\u4e18\u5e02","code":"130982000000"},{"area":"\u9ec4\u9a85\u5e02","code":"130983000000"},{"area":"\u6cb3\u95f4\u5e02","code":"130984000000"}]},{"city":"\u5eca\u574a\u5e02","code":"131000000000","areas":[{"area":"\u5b89\u6b21\u533a","code":"131002000000"},{"area":"\u5e7f\u9633\u533a","code":"131003000000"},{"area":"\u56fa\u5b89\u53bf","code":"131022000000"},{"area":"\u6c38\u6e05\u53bf","code":"131023000000"},{"area":"\u9999\u6cb3\u53bf","code":"131024000000"},{"area":"\u5927\u57ce\u53bf","code":"131025000000"},{"area":"\u6587\u5b89\u53bf","code":"131026000000"},{"area":"\u5927\u5382\u56de\u65cf\u81ea\u6cbb\u53bf","code":"131028000000"},{"area":"\u5eca\u574a\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"131071000000"},{"area":"\u9738\u5dde\u5e02","code":"131081000000"},{"area":"\u4e09\u6cb3\u5e02","code":"131082000000"}]},{"city":"\u8861\u6c34\u5e02","code":"131100000000","areas":[{"area":"\u6843\u57ce\u533a","code":"131102000000"},{"area":"\u5180\u5dde\u533a","code":"131103000000"},{"area":"\u67a3\u5f3a\u53bf","code":"131121000000"},{"area":"\u6b66\u9091\u53bf","code":"131122000000"},{"area":"\u6b66\u5f3a\u53bf","code":"131123000000"},{"area":"\u9976\u9633\u53bf","code":"131124000000"},{"area":"\u5b89\u5e73\u53bf","code":"131125000000"},{"area":"\u6545\u57ce\u53bf","code":"131126000000"},{"area":"\u666f\u53bf","code":"131127000000"},{"area":"\u961c\u57ce\u53bf","code":"131128000000"},{"area":"\u6cb3\u5317\u8861\u6c34\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"131171000000"},{"area":"\u8861\u6c34\u6ee8\u6e56\u65b0\u533a","code":"131172000000"},{"area":"\u6df1\u5dde\u5e02","code":"131182000000"}]},{"city":"\u96c4\u5b89\u65b0\u533a","code":"133100000000","areas":[{"area":"\u96c4\u5b89\u65b0\u533a","code":"133100000000"}]}]},{"province":"\u5c71\u897f\u7701","code":"140000","citys":[{"city":"\u592a\u539f\u5e02","code":"140100000000","areas":[{"area":"\u5c0f\u5e97\u533a","code":"140105000000"},{"area":"\u8fce\u6cfd\u533a","code":"140106000000"},{"area":"\u674f\u82b1\u5cad\u533a","code":"140107000000"},{"area":"\u5c16\u8349\u576a\u533a","code":"140108000000"},{"area":"\u4e07\u67cf\u6797\u533a","code":"140109000000"},{"area":"\u664b\u6e90\u533a","code":"140110000000"},{"area":"\u6e05\u5f90\u53bf","code":"140121000000"},{"area":"\u9633\u66f2\u53bf","code":"140122000000"},{"area":"\u5a04\u70e6\u53bf","code":"140123000000"},{"area":"\u5c71\u897f\u8f6c\u578b\u7efc\u5408\u6539\u9769\u793a\u8303\u533a","code":"140171000000"},{"area":"\u53e4\u4ea4\u5e02","code":"140181000000"}]},{"city":"\u5927\u540c\u5e02","code":"140200000000","areas":[{"area":"\u65b0\u8363\u533a","code":"140212000000"},{"area":"\u5e73\u57ce\u533a","code":"140213000000"},{"area":"\u4e91\u5188\u533a","code":"140214000000"},{"area":"\u4e91\u5dde\u533a","code":"140215000000"},{"area":"\u9633\u9ad8\u53bf","code":"140221000000"},{"area":"\u5929\u9547\u53bf","code":"140222000000"},{"area":"\u5e7f\u7075\u53bf","code":"140223000000"},{"area":"\u7075\u4e18\u53bf","code":"140224000000"},{"area":"\u6d51\u6e90\u53bf","code":"140225000000"},{"area":"\u5de6\u4e91\u53bf","code":"140226000000"},{"area":"\u5c71\u897f\u5927\u540c\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"140271000000"}]},{"city":"\u9633\u6cc9\u5e02","code":"140300000000","areas":[{"area":"\u57ce\u533a","code":"140302000000"},{"area":"\u77ff\u533a","code":"140303000000"},{"area":"\u90ca\u533a","code":"140311000000"},{"area":"\u5e73\u5b9a\u53bf","code":"140321000000"},{"area":"\u76c2\u53bf","code":"140322000000"}]},{"city":"\u957f\u6cbb\u5e02","code":"140400000000","areas":[{"area":"\u6f5e\u5dde\u533a","code":"140403000000"},{"area":"\u4e0a\u515a\u533a","code":"140404000000"},{"area":"\u5c6f\u7559\u533a","code":"140405000000"},{"area":"\u6f5e\u57ce\u533a","code":"140406000000"},{"area":"\u8944\u57a3\u53bf","code":"140423000000"},{"area":"\u5e73\u987a\u53bf","code":"140425000000"},{"area":"\u9ece\u57ce\u53bf","code":"140426000000"},{"area":"\u58f6\u5173\u53bf","code":"140427000000"},{"area":"\u957f\u5b50\u53bf","code":"140428000000"},{"area":"\u6b66\u4e61\u53bf","code":"140429000000"},{"area":"\u6c81\u53bf","code":"140430000000"},{"area":"\u6c81\u6e90\u53bf","code":"140431000000"}]},{"city":"\u664b\u57ce\u5e02","code":"140500000000","areas":[{"area":"\u57ce\u533a","code":"140502000000"},{"area":"\u6c81\u6c34\u53bf","code":"140521000000"},{"area":"\u9633\u57ce\u53bf","code":"140522000000"},{"area":"\u9675\u5ddd\u53bf","code":"140524000000"},{"area":"\u6cfd\u5dde\u53bf","code":"140525000000"},{"area":"\u9ad8\u5e73\u5e02","code":"140581000000"}]},{"city":"\u6714\u5dde\u5e02","code":"140600000000","areas":[{"area":"\u6714\u57ce\u533a","code":"140602000000"},{"area":"\u5e73\u9c81\u533a","code":"140603000000"},{"area":"\u5c71\u9634\u53bf","code":"140621000000"},{"area":"\u5e94\u53bf","code":"140622000000"},{"area":"\u53f3\u7389\u53bf","code":"140623000000"},{"area":"\u5c71\u897f\u6714\u5dde\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"140671000000"},{"area":"\u6000\u4ec1\u5e02","code":"140681000000"}]},{"city":"\u664b\u4e2d\u5e02","code":"140700000000","areas":[{"area":"\u6986\u6b21\u533a","code":"140702000000"},{"area":"\u592a\u8c37\u533a","code":"140703000000"},{"area":"\u6986\u793e\u53bf","code":"140721000000"},{"area":"\u5de6\u6743\u53bf","code":"140722000000"},{"area":"\u548c\u987a\u53bf","code":"140723000000"},{"area":"\u6614\u9633\u53bf","code":"140724000000"},{"area":"\u5bff\u9633\u53bf","code":"140725000000"},{"area":"\u7941\u53bf","code":"140727000000"},{"area":"\u5e73\u9065\u53bf","code":"140728000000"},{"area":"\u7075\u77f3\u53bf","code":"140729000000"},{"area":"\u4ecb\u4f11\u5e02","code":"140781000000"}]},{"city":"\u8fd0\u57ce\u5e02","code":"140800000000","areas":[{"area":"\u76d0\u6e56\u533a","code":"140802000000"},{"area":"\u4e34\u7317\u53bf","code":"140821000000"},{"area":"\u4e07\u8363\u53bf","code":"140822000000"},{"area":"\u95fb\u559c\u53bf","code":"140823000000"},{"area":"\u7a37\u5c71\u53bf","code":"140824000000"},{"area":"\u65b0\u7edb\u53bf","code":"140825000000"},{"area":"\u7edb\u53bf","code":"140826000000"},{"area":"\u57a3\u66f2\u53bf","code":"140827000000"},{"area":"\u590f\u53bf","code":"140828000000"},{"area":"\u5e73\u9646\u53bf","code":"140829000000"},{"area":"\u82ae\u57ce\u53bf","code":"140830000000"},{"area":"\u6c38\u6d4e\u5e02","code":"140881000000"},{"area":"\u6cb3\u6d25\u5e02","code":"140882000000"}]},{"city":"\u5ffb\u5dde\u5e02","code":"140900000000","areas":[{"area":"\u5ffb\u5e9c\u533a","code":"140902000000"},{"area":"\u5b9a\u8944\u53bf","code":"140921000000"},{"area":"\u4e94\u53f0\u53bf","code":"140922000000"},{"area":"\u4ee3\u53bf","code":"140923000000"},{"area":"\u7e41\u5cd9\u53bf","code":"140924000000"},{"area":"\u5b81\u6b66\u53bf","code":"140925000000"},{"area":"\u9759\u4e50\u53bf","code":"140926000000"},{"area":"\u795e\u6c60\u53bf","code":"140927000000"},{"area":"\u4e94\u5be8\u53bf","code":"140928000000"},{"area":"\u5ca2\u5c9a\u53bf","code":"140929000000"},{"area":"\u6cb3\u66f2\u53bf","code":"140930000000"},{"area":"\u4fdd\u5fb7\u53bf","code":"140931000000"},{"area":"\u504f\u5173\u53bf","code":"140932000000"},{"area":"\u4e94\u53f0\u5c71\u98ce\u666f\u540d\u80dc\u533a","code":"140971000000"},{"area":"\u539f\u5e73\u5e02","code":"140981000000"}]},{"city":"\u4e34\u6c7e\u5e02","code":"141000000000","areas":[{"area":"\u5c27\u90fd\u533a","code":"141002000000"},{"area":"\u66f2\u6c83\u53bf","code":"141021000000"},{"area":"\u7ffc\u57ce\u53bf","code":"141022000000"},{"area":"\u8944\u6c7e\u53bf","code":"141023000000"},{"area":"\u6d2a\u6d1e\u53bf","code":"141024000000"},{"area":"\u53e4\u53bf","code":"141025000000"},{"area":"\u5b89\u6cfd\u53bf","code":"141026000000"},{"area":"\u6d6e\u5c71\u53bf","code":"141027000000"},{"area":"\u5409\u53bf","code":"141028000000"},{"area":"\u4e61\u5b81\u53bf","code":"141029000000"},{"area":"\u5927\u5b81\u53bf","code":"141030000000"},{"area":"\u96b0\u53bf","code":"141031000000"},{"area":"\u6c38\u548c\u53bf","code":"141032000000"},{"area":"\u84b2\u53bf","code":"141033000000"},{"area":"\u6c7e\u897f\u53bf","code":"141034000000"},{"area":"\u4faf\u9a6c\u5e02","code":"141081000000"},{"area":"\u970d\u5dde\u5e02","code":"141082000000"}]},{"city":"\u5415\u6881\u5e02","code":"141100000000","areas":[{"area":"\u79bb\u77f3\u533a","code":"141102000000"},{"area":"\u6587\u6c34\u53bf","code":"141121000000"},{"area":"\u4ea4\u57ce\u53bf","code":"141122000000"},{"area":"\u5174\u53bf","code":"141123000000"},{"area":"\u4e34\u53bf","code":"141124000000"},{"area":"\u67f3\u6797\u53bf","code":"141125000000"},{"area":"\u77f3\u697c\u53bf","code":"141126000000"},{"area":"\u5c9a\u53bf","code":"141127000000"},{"area":"\u65b9\u5c71\u53bf","code":"141128000000"},{"area":"\u4e2d\u9633\u53bf","code":"141129000000"},{"area":"\u4ea4\u53e3\u53bf","code":"141130000000"},{"area":"\u5b5d\u4e49\u5e02","code":"141181000000"},{"area":"\u6c7e\u9633\u5e02","code":"141182000000"}]}]},{"province":"\u5185\u8499\u53e4\u81ea\u6cbb\u533a","code":"150000","citys":[{"city":"\u547c\u548c\u6d69\u7279\u5e02","code":"150100000000","areas":[{"area":"\u65b0\u57ce\u533a","code":"150102000000"},{"area":"\u56de\u6c11\u533a","code":"150103000000"},{"area":"\u7389\u6cc9\u533a","code":"150104000000"},{"area":"\u8d5b\u7f55\u533a","code":"150105000000"},{"area":"\u571f\u9ed8\u7279\u5de6\u65d7","code":"150121000000"},{"area":"\u6258\u514b\u6258\u53bf","code":"150122000000"},{"area":"\u548c\u6797\u683c\u5c14\u53bf","code":"150123000000"},{"area":"\u6e05\u6c34\u6cb3\u53bf","code":"150124000000"},{"area":"\u6b66\u5ddd\u53bf","code":"150125000000"},{"area":"\u547c\u548c\u6d69\u7279\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"150172000000"}]},{"city":"\u5305\u5934\u5e02","code":"150200000000","areas":[{"area":"\u4e1c\u6cb3\u533a","code":"150202000000"},{"area":"\u6606\u90fd\u4ed1\u533a","code":"150203000000"},{"area":"\u9752\u5c71\u533a","code":"150204000000"},{"area":"\u77f3\u62d0\u533a","code":"150205000000"},{"area":"\u767d\u4e91\u9102\u535a\u77ff\u533a","code":"150206000000"},{"area":"\u4e5d\u539f\u533a","code":"150207000000"},{"area":"\u571f\u9ed8\u7279\u53f3\u65d7","code":"150221000000"},{"area":"\u56fa\u9633\u53bf","code":"150222000000"},{"area":"\u8fbe\u5c14\u7f55\u8302\u660e\u5b89\u8054\u5408\u65d7","code":"150223000000"},{"area":"\u5305\u5934\u7a00\u571f\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"150271000000"}]},{"city":"\u4e4c\u6d77\u5e02","code":"150300000000","areas":[{"area":"\u6d77\u52c3\u6e7e\u533a","code":"150302000000"},{"area":"\u6d77\u5357\u533a","code":"150303000000"},{"area":"\u4e4c\u8fbe\u533a","code":"150304000000"}]},{"city":"\u8d64\u5cf0\u5e02","code":"150400000000","areas":[{"area":"\u7ea2\u5c71\u533a","code":"150402000000"},{"area":"\u5143\u5b9d\u5c71\u533a","code":"150403000000"},{"area":"\u677e\u5c71\u533a","code":"150404000000"},{"area":"\u963f\u9c81\u79d1\u5c14\u6c81\u65d7","code":"150421000000"},{"area":"\u5df4\u6797\u5de6\u65d7","code":"150422000000"},{"area":"\u5df4\u6797\u53f3\u65d7","code":"150423000000"},{"area":"\u6797\u897f\u53bf","code":"150424000000"},{"area":"\u514b\u4ec0\u514b\u817e\u65d7","code":"150425000000"},{"area":"\u7fc1\u725b\u7279\u65d7","code":"150426000000"},{"area":"\u5580\u5587\u6c81\u65d7","code":"150428000000"},{"area":"\u5b81\u57ce\u53bf","code":"150429000000"},{"area":"\u6556\u6c49\u65d7","code":"150430000000"}]},{"city":"\u901a\u8fbd\u5e02","code":"150500000000","areas":[{"area":"\u79d1\u5c14\u6c81\u533a","code":"150502000000"},{"area":"\u79d1\u5c14\u6c81\u5de6\u7ffc\u4e2d\u65d7","code":"150521000000"},{"area":"\u79d1\u5c14\u6c81\u5de6\u7ffc\u540e\u65d7","code":"150522000000"},{"area":"\u5f00\u9c81\u53bf","code":"150523000000"},{"area":"\u5e93\u4f26\u65d7","code":"150524000000"},{"area":"\u5948\u66fc\u65d7","code":"150525000000"},{"area":"\u624e\u9c81\u7279\u65d7","code":"150526000000"},{"area":"\u901a\u8fbd\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"150571000000"},{"area":"\u970d\u6797\u90ed\u52d2\u5e02","code":"150581000000"}]},{"city":"\u9102\u5c14\u591a\u65af\u5e02","code":"150600000000","areas":[{"area":"\u4e1c\u80dc\u533a","code":"150602000000"},{"area":"\u5eb7\u5df4\u4ec0\u533a","code":"150603000000"},{"area":"\u8fbe\u62c9\u7279\u65d7","code":"150621000000"},{"area":"\u51c6\u683c\u5c14\u65d7","code":"150622000000"},{"area":"\u9102\u6258\u514b\u524d\u65d7","code":"150623000000"},{"area":"\u9102\u6258\u514b\u65d7","code":"150624000000"},{"area":"\u676d\u9526\u65d7","code":"150625000000"},{"area":"\u4e4c\u5ba1\u65d7","code":"150626000000"},{"area":"\u4f0a\u91d1\u970d\u6d1b\u65d7","code":"150627000000"}]},{"city":"\u547c\u4f26\u8d1d\u5c14\u5e02","code":"150700000000","areas":[{"area":"\u6d77\u62c9\u5c14\u533a","code":"150702000000"},{"area":"\u624e\u8d49\u8bfa\u5c14\u533a","code":"150703000000"},{"area":"\u963f\u8363\u65d7","code":"150721000000"},{"area":"\u83ab\u529b\u8fbe\u74e6\u8fbe\u65a1\u5c14\u65cf\u81ea\u6cbb\u65d7","code":"150722000000"},{"area":"\u9102\u4f26\u6625\u81ea\u6cbb\u65d7","code":"150723000000"},{"area":"\u9102\u6e29\u514b\u65cf\u81ea\u6cbb\u65d7","code":"150724000000"},{"area":"\u9648\u5df4\u5c14\u864e\u65d7","code":"150725000000"},{"area":"\u65b0\u5df4\u5c14\u864e\u5de6\u65d7","code":"150726000000"},{"area":"\u65b0\u5df4\u5c14\u864e\u53f3\u65d7","code":"150727000000"},{"area":"\u6ee1\u6d32\u91cc\u5e02","code":"150781000000"},{"area":"\u7259\u514b\u77f3\u5e02","code":"150782000000"},{"area":"\u624e\u5170\u5c6f\u5e02","code":"150783000000"},{"area":"\u989d\u5c14\u53e4\u7eb3\u5e02","code":"150784000000"},{"area":"\u6839\u6cb3\u5e02","code":"150785000000"}]},{"city":"\u5df4\u5f66\u6dd6\u5c14\u5e02","code":"150800000000","areas":[{"area":"\u4e34\u6cb3\u533a","code":"150802000000"},{"area":"\u4e94\u539f\u53bf","code":"150821000000"},{"area":"\u78f4\u53e3\u53bf","code":"150822000000"},{"area":"\u4e4c\u62c9\u7279\u524d\u65d7","code":"150823000000"},{"area":"\u4e4c\u62c9\u7279\u4e2d\u65d7","code":"150824000000"},{"area":"\u4e4c\u62c9\u7279\u540e\u65d7","code":"150825000000"},{"area":"\u676d\u9526\u540e\u65d7","code":"150826000000"}]},{"city":"\u4e4c\u5170\u5bdf\u5e03\u5e02","code":"150900000000","areas":[{"area":"\u96c6\u5b81\u533a","code":"150902000000"},{"area":"\u5353\u8d44\u53bf","code":"150921000000"},{"area":"\u5316\u5fb7\u53bf","code":"150922000000"},{"area":"\u5546\u90fd\u53bf","code":"150923000000"},{"area":"\u5174\u548c\u53bf","code":"150924000000"},{"area":"\u51c9\u57ce\u53bf","code":"150925000000"},{"area":"\u5bdf\u54c8\u5c14\u53f3\u7ffc\u524d\u65d7","code":"150926000000"},{"area":"\u5bdf\u54c8\u5c14\u53f3\u7ffc\u4e2d\u65d7","code":"150927000000"},{"area":"\u5bdf\u54c8\u5c14\u53f3\u7ffc\u540e\u65d7","code":"150928000000"},{"area":"\u56db\u5b50\u738b\u65d7","code":"150929000000"},{"area":"\u4e30\u9547\u5e02","code":"150981000000"}]},{"city":"\u5174\u5b89\u76df","code":"152200000000","areas":[{"area":"\u4e4c\u5170\u6d69\u7279\u5e02","code":"152201000000"},{"area":"\u963f\u5c14\u5c71\u5e02","code":"152202000000"},{"area":"\u79d1\u5c14\u6c81\u53f3\u7ffc\u524d\u65d7","code":"152221000000"},{"area":"\u79d1\u5c14\u6c81\u53f3\u7ffc\u4e2d\u65d7","code":"152222000000"},{"area":"\u624e\u8d49\u7279\u65d7","code":"152223000000"},{"area":"\u7a81\u6cc9\u53bf","code":"152224000000"}]},{"city":"\u9521\u6797\u90ed\u52d2\u76df","code":"152500000000","areas":[{"area":"\u4e8c\u8fde\u6d69\u7279\u5e02","code":"152501000000"},{"area":"\u9521\u6797\u6d69\u7279\u5e02","code":"152502000000"},{"area":"\u963f\u5df4\u560e\u65d7","code":"152522000000"},{"area":"\u82cf\u5c3c\u7279\u5de6\u65d7","code":"152523000000"},{"area":"\u82cf\u5c3c\u7279\u53f3\u65d7","code":"152524000000"},{"area":"\u4e1c\u4e4c\u73e0\u7a46\u6c81\u65d7","code":"152525000000"},{"area":"\u897f\u4e4c\u73e0\u7a46\u6c81\u65d7","code":"152526000000"},{"area":"\u592a\u4ec6\u5bfa\u65d7","code":"152527000000"},{"area":"\u9576\u9ec4\u65d7","code":"152528000000"},{"area":"\u6b63\u9576\u767d\u65d7","code":"152529000000"},{"area":"\u6b63\u84dd\u65d7","code":"152530000000"},{"area":"\u591a\u4f26\u53bf","code":"152531000000"},{"area":"\u4e4c\u62c9\u76d6\u7ba1\u7406\u533a\u7ba1\u59d4\u4f1a","code":"152571000000"}]},{"city":"\u963f\u62c9\u5584\u76df","code":"152900000000","areas":[{"area":"\u963f\u62c9\u5584\u5de6\u65d7","code":"152921000000"},{"area":"\u963f\u62c9\u5584\u53f3\u65d7","code":"152922000000"},{"area":"\u989d\u6d4e\u7eb3\u65d7","code":"152923000000"},{"area":"\u5185\u8499\u53e4\u963f\u62c9\u5584\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"152971000000"}]}]},{"province":"\u8fbd\u5b81\u7701","code":"210000","citys":[{"city":"\u6c88\u9633\u5e02","code":"210100000000","areas":[{"area":"\u548c\u5e73\u533a","code":"210102000000"},{"area":"\u6c88\u6cb3\u533a","code":"210103000000"},{"area":"\u5927\u4e1c\u533a","code":"210104000000"},{"area":"\u7687\u59d1\u533a","code":"210105000000"},{"area":"\u94c1\u897f\u533a","code":"210106000000"},{"area":"\u82cf\u5bb6\u5c6f\u533a","code":"210111000000"},{"area":"\u6d51\u5357\u533a","code":"210112000000"},{"area":"\u6c88\u5317\u65b0\u533a","code":"210113000000"},{"area":"\u4e8e\u6d2a\u533a","code":"210114000000"},{"area":"\u8fbd\u4e2d\u533a","code":"210115000000"},{"area":"\u5eb7\u5e73\u53bf","code":"210123000000"},{"area":"\u6cd5\u5e93\u53bf","code":"210124000000"},{"area":"\u65b0\u6c11\u5e02","code":"210181000000"}]},{"city":"\u5927\u8fde\u5e02","code":"210200000000","areas":[{"area":"\u4e2d\u5c71\u533a","code":"210202000000"},{"area":"\u897f\u5c97\u533a","code":"210203000000"},{"area":"\u6c99\u6cb3\u53e3\u533a","code":"210204000000"},{"area":"\u7518\u4e95\u5b50\u533a","code":"210211000000"},{"area":"\u65c5\u987a\u53e3\u533a","code":"210212000000"},{"area":"\u91d1\u5dde\u533a","code":"210213000000"},{"area":"\u666e\u5170\u5e97\u533a","code":"210214000000"},{"area":"\u957f\u6d77\u53bf","code":"210224000000"},{"area":"\u74e6\u623f\u5e97\u5e02","code":"210281000000"},{"area":"\u5e84\u6cb3\u5e02","code":"210283000000"}]},{"city":"\u978d\u5c71\u5e02","code":"210300000000","areas":[{"area":"\u94c1\u4e1c\u533a","code":"210302000000"},{"area":"\u94c1\u897f\u533a","code":"210303000000"},{"area":"\u7acb\u5c71\u533a","code":"210304000000"},{"area":"\u5343\u5c71\u533a","code":"210311000000"},{"area":"\u53f0\u5b89\u53bf","code":"210321000000"},{"area":"\u5cab\u5ca9\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"210323000000"},{"area":"\u6d77\u57ce\u5e02","code":"210381000000"}]},{"city":"\u629a\u987a\u5e02","code":"210400000000","areas":[{"area":"\u65b0\u629a\u533a","code":"210402000000"},{"area":"\u4e1c\u6d32\u533a","code":"210403000000"},{"area":"\u671b\u82b1\u533a","code":"210404000000"},{"area":"\u987a\u57ce\u533a","code":"210411000000"},{"area":"\u629a\u987a\u53bf","code":"210421000000"},{"area":"\u65b0\u5bbe\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"210422000000"},{"area":"\u6e05\u539f\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"210423000000"}]},{"city":"\u672c\u6eaa\u5e02","code":"210500000000","areas":[{"area":"\u5e73\u5c71\u533a","code":"210502000000"},{"area":"\u6eaa\u6e56\u533a","code":"210503000000"},{"area":"\u660e\u5c71\u533a","code":"210504000000"},{"area":"\u5357\u82ac\u533a","code":"210505000000"},{"area":"\u672c\u6eaa\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"210521000000"},{"area":"\u6853\u4ec1\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"210522000000"}]},{"city":"\u4e39\u4e1c\u5e02","code":"210600000000","areas":[{"area":"\u5143\u5b9d\u533a","code":"210602000000"},{"area":"\u632f\u5174\u533a","code":"210603000000"},{"area":"\u632f\u5b89\u533a","code":"210604000000"},{"area":"\u5bbd\u7538\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"210624000000"},{"area":"\u4e1c\u6e2f\u5e02","code":"210681000000"},{"area":"\u51e4\u57ce\u5e02","code":"210682000000"}]},{"city":"\u9526\u5dde\u5e02","code":"210700000000","areas":[{"area":"\u53e4\u5854\u533a","code":"210702000000"},{"area":"\u51cc\u6cb3\u533a","code":"210703000000"},{"area":"\u592a\u548c\u533a","code":"210711000000"},{"area":"\u9ed1\u5c71\u53bf","code":"210726000000"},{"area":"\u4e49\u53bf","code":"210727000000"},{"area":"\u51cc\u6d77\u5e02","code":"210781000000"},{"area":"\u5317\u9547\u5e02","code":"210782000000"}]},{"city":"\u8425\u53e3\u5e02","code":"210800000000","areas":[{"area":"\u7ad9\u524d\u533a","code":"210802000000"},{"area":"\u897f\u5e02\u533a","code":"210803000000"},{"area":"\u9c85\u9c7c\u5708\u533a","code":"210804000000"},{"area":"\u8001\u8fb9\u533a","code":"210811000000"},{"area":"\u76d6\u5dde\u5e02","code":"210881000000"},{"area":"\u5927\u77f3\u6865\u5e02","code":"210882000000"}]},{"city":"\u961c\u65b0\u5e02","code":"210900000000","areas":[{"area":"\u6d77\u5dde\u533a","code":"210902000000"},{"area":"\u65b0\u90b1\u533a","code":"210903000000"},{"area":"\u592a\u5e73\u533a","code":"210904000000"},{"area":"\u6e05\u6cb3\u95e8\u533a","code":"210905000000"},{"area":"\u7ec6\u6cb3\u533a","code":"210911000000"},{"area":"\u961c\u65b0\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","code":"210921000000"},{"area":"\u5f70\u6b66\u53bf","code":"210922000000"}]},{"city":"\u8fbd\u9633\u5e02","code":"211000000000","areas":[{"area":"\u767d\u5854\u533a","code":"211002000000"},{"area":"\u6587\u5723\u533a","code":"211003000000"},{"area":"\u5b8f\u4f1f\u533a","code":"211004000000"},{"area":"\u5f13\u957f\u5cad\u533a","code":"211005000000"},{"area":"\u592a\u5b50\u6cb3\u533a","code":"211011000000"},{"area":"\u8fbd\u9633\u53bf","code":"211021000000"},{"area":"\u706f\u5854\u5e02","code":"211081000000"}]},{"city":"\u76d8\u9526\u5e02","code":"211100000000","areas":[{"area":"\u53cc\u53f0\u5b50\u533a","code":"211102000000"},{"area":"\u5174\u9686\u53f0\u533a","code":"211103000000"},{"area":"\u5927\u6d3c\u533a","code":"211104000000"},{"area":"\u76d8\u5c71\u53bf","code":"211122000000"}]},{"city":"\u94c1\u5cad\u5e02","code":"211200000000","areas":[{"area":"\u94f6\u5dde\u533a","code":"211202000000"},{"area":"\u6e05\u6cb3\u533a","code":"211204000000"},{"area":"\u94c1\u5cad\u53bf","code":"211221000000"},{"area":"\u897f\u4e30\u53bf","code":"211223000000"},{"area":"\u660c\u56fe\u53bf","code":"211224000000"},{"area":"\u8c03\u5175\u5c71\u5e02","code":"211281000000"},{"area":"\u5f00\u539f\u5e02","code":"211282000000"}]},{"city":"\u671d\u9633\u5e02","code":"211300000000","areas":[{"area":"\u53cc\u5854\u533a","code":"211302000000"},{"area":"\u9f99\u57ce\u533a","code":"211303000000"},{"area":"\u671d\u9633\u53bf","code":"211321000000"},{"area":"\u5efa\u5e73\u53bf","code":"211322000000"},{"area":"\u5580\u5587\u6c81\u5de6\u7ffc\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","code":"211324000000"},{"area":"\u5317\u7968\u5e02","code":"211381000000"},{"area":"\u51cc\u6e90\u5e02","code":"211382000000"}]},{"city":"\u846b\u82a6\u5c9b\u5e02","code":"211400000000","areas":[{"area":"\u8fde\u5c71\u533a","code":"211402000000"},{"area":"\u9f99\u6e2f\u533a","code":"211403000000"},{"area":"\u5357\u7968\u533a","code":"211404000000"},{"area":"\u7ee5\u4e2d\u53bf","code":"211421000000"},{"area":"\u5efa\u660c\u53bf","code":"211422000000"},{"area":"\u5174\u57ce\u5e02","code":"211481000000"}]}]},{"province":"\u5409\u6797\u7701","code":"220000","citys":[{"city":"\u957f\u6625\u5e02","code":"220100000000","areas":[{"area":"\u5357\u5173\u533a","code":"220102000000"},{"area":"\u5bbd\u57ce\u533a","code":"220103000000"},{"area":"\u671d\u9633\u533a","code":"220104000000"},{"area":"\u4e8c\u9053\u533a","code":"220105000000"},{"area":"\u7eff\u56ed\u533a","code":"220106000000"},{"area":"\u53cc\u9633\u533a","code":"220112000000"},{"area":"\u4e5d\u53f0\u533a","code":"220113000000"},{"area":"\u519c\u5b89\u53bf","code":"220122000000"},{"area":"\u957f\u6625\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"220171000000"},{"area":"\u957f\u6625\u51c0\u6708\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"220172000000"},{"area":"\u957f\u6625\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"220173000000"},{"area":"\u957f\u6625\u6c7d\u8f66\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"220174000000"},{"area":"\u6986\u6811\u5e02","code":"220182000000"},{"area":"\u5fb7\u60e0\u5e02","code":"220183000000"},{"area":"\u516c\u4e3b\u5cad\u5e02","code":"220184000000"}]},{"city":"\u5409\u6797\u5e02","code":"220200000000","areas":[{"area":"\u660c\u9091\u533a","code":"220202000000"},{"area":"\u9f99\u6f6d\u533a","code":"220203000000"},{"area":"\u8239\u8425\u533a","code":"220204000000"},{"area":"\u4e30\u6ee1\u533a","code":"220211000000"},{"area":"\u6c38\u5409\u53bf","code":"220221000000"},{"area":"\u5409\u6797\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"220271000000"},{"area":"\u5409\u6797\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"220272000000"},{"area":"\u5409\u6797\u4e2d\u56fd\u65b0\u52a0\u5761\u98df\u54c1\u533a","code":"220273000000"},{"area":"\u86df\u6cb3\u5e02","code":"220281000000"},{"area":"\u6866\u7538\u5e02","code":"220282000000"},{"area":"\u8212\u5170\u5e02","code":"220283000000"},{"area":"\u78d0\u77f3\u5e02","code":"220284000000"}]},{"city":"\u56db\u5e73\u5e02","code":"220300000000","areas":[{"area":"\u94c1\u897f\u533a","code":"220302000000"},{"area":"\u94c1\u4e1c\u533a","code":"220303000000"},{"area":"\u68a8\u6811\u53bf","code":"220322000000"},{"area":"\u4f0a\u901a\u6ee1\u65cf\u81ea\u6cbb\u53bf","code":"220323000000"},{"area":"\u53cc\u8fbd\u5e02","code":"220382000000"}]},{"city":"\u8fbd\u6e90\u5e02","code":"220400000000","areas":[{"area":"\u9f99\u5c71\u533a","code":"220402000000"},{"area":"\u897f\u5b89\u533a","code":"220403000000"},{"area":"\u4e1c\u4e30\u53bf","code":"220421000000"},{"area":"\u4e1c\u8fbd\u53bf","code":"220422000000"}]},{"city":"\u901a\u5316\u5e02","code":"220500000000","areas":[{"area":"\u4e1c\u660c\u533a","code":"220502000000"},{"area":"\u4e8c\u9053\u6c5f\u533a","code":"220503000000"},{"area":"\u901a\u5316\u53bf","code":"220521000000"},{"area":"\u8f89\u5357\u53bf","code":"220523000000"},{"area":"\u67f3\u6cb3\u53bf","code":"220524000000"},{"area":"\u6885\u6cb3\u53e3\u5e02","code":"220581000000"},{"area":"\u96c6\u5b89\u5e02","code":"220582000000"}]},{"city":"\u767d\u5c71\u5e02","code":"220600000000","areas":[{"area":"\u6d51\u6c5f\u533a","code":"220602000000"},{"area":"\u6c5f\u6e90\u533a","code":"220605000000"},{"area":"\u629a\u677e\u53bf","code":"220621000000"},{"area":"\u9756\u5b87\u53bf","code":"220622000000"},{"area":"\u957f\u767d\u671d\u9c9c\u65cf\u81ea\u6cbb\u53bf","code":"220623000000"},{"area":"\u4e34\u6c5f\u5e02","code":"220681000000"}]},{"city":"\u677e\u539f\u5e02","code":"220700000000","areas":[{"area":"\u5b81\u6c5f\u533a","code":"220702000000"},{"area":"\u524d\u90ed\u5c14\u7f57\u65af\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","code":"220721000000"},{"area":"\u957f\u5cad\u53bf","code":"220722000000"},{"area":"\u4e7e\u5b89\u53bf","code":"220723000000"},{"area":"\u5409\u6797\u677e\u539f\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"220771000000"},{"area":"\u6276\u4f59\u5e02","code":"220781000000"}]},{"city":"\u767d\u57ce\u5e02","code":"220800000000","areas":[{"area":"\u6d2e\u5317\u533a","code":"220802000000"},{"area":"\u9547\u8d49\u53bf","code":"220821000000"},{"area":"\u901a\u6986\u53bf","code":"220822000000"},{"area":"\u5409\u6797\u767d\u57ce\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"220871000000"},{"area":"\u6d2e\u5357\u5e02","code":"220881000000"},{"area":"\u5927\u5b89\u5e02","code":"220882000000"}]},{"city":"\u5ef6\u8fb9\u671d\u9c9c\u65cf\u81ea\u6cbb\u5dde","code":"222400000000","areas":[{"area":"\u5ef6\u5409\u5e02","code":"222401000000"},{"area":"\u56fe\u4eec\u5e02","code":"222402000000"},{"area":"\u6566\u5316\u5e02","code":"222403000000"},{"area":"\u73f2\u6625\u5e02","code":"222404000000"},{"area":"\u9f99\u4e95\u5e02","code":"222405000000"},{"area":"\u548c\u9f99\u5e02","code":"222406000000"},{"area":"\u6c6a\u6e05\u53bf","code":"222424000000"},{"area":"\u5b89\u56fe\u53bf","code":"222426000000"}]}]},{"province":"\u9ed1\u9f99\u6c5f\u7701","code":"230000","citys":[{"city":"\u54c8\u5c14\u6ee8\u5e02","code":"230100000000","areas":[{"area":"\u9053\u91cc\u533a","code":"230102000000"},{"area":"\u5357\u5c97\u533a","code":"230103000000"},{"area":"\u9053\u5916\u533a","code":"230104000000"},{"area":"\u5e73\u623f\u533a","code":"230108000000"},{"area":"\u677e\u5317\u533a","code":"230109000000"},{"area":"\u9999\u574a\u533a","code":"230110000000"},{"area":"\u547c\u5170\u533a","code":"230111000000"},{"area":"\u963f\u57ce\u533a","code":"230112000000"},{"area":"\u53cc\u57ce\u533a","code":"230113000000"},{"area":"\u4f9d\u5170\u53bf","code":"230123000000"},{"area":"\u65b9\u6b63\u53bf","code":"230124000000"},{"area":"\u5bbe\u53bf","code":"230125000000"},{"area":"\u5df4\u5f66\u53bf","code":"230126000000"},{"area":"\u6728\u5170\u53bf","code":"230127000000"},{"area":"\u901a\u6cb3\u53bf","code":"230128000000"},{"area":"\u5ef6\u5bff\u53bf","code":"230129000000"},{"area":"\u5c1a\u5fd7\u5e02","code":"230183000000"},{"area":"\u4e94\u5e38\u5e02","code":"230184000000"}]},{"city":"\u9f50\u9f50\u54c8\u5c14\u5e02","code":"230200000000","areas":[{"area":"\u9f99\u6c99\u533a","code":"230202000000"},{"area":"\u5efa\u534e\u533a","code":"230203000000"},{"area":"\u94c1\u950b\u533a","code":"230204000000"},{"area":"\u6602\u6602\u6eaa\u533a","code":"230205000000"},{"area":"\u5bcc\u62c9\u5c14\u57fa\u533a","code":"230206000000"},{"area":"\u78be\u5b50\u5c71\u533a","code":"230207000000"},{"area":"\u6885\u91cc\u65af\u8fbe\u65a1\u5c14\u65cf\u533a","code":"230208000000"},{"area":"\u9f99\u6c5f\u53bf","code":"230221000000"},{"area":"\u4f9d\u5b89\u53bf","code":"230223000000"},{"area":"\u6cf0\u6765\u53bf","code":"230224000000"},{"area":"\u7518\u5357\u53bf","code":"230225000000"},{"area":"\u5bcc\u88d5\u53bf","code":"230227000000"},{"area":"\u514b\u5c71\u53bf","code":"230229000000"},{"area":"\u514b\u4e1c\u53bf","code":"230230000000"},{"area":"\u62dc\u6cc9\u53bf","code":"230231000000"},{"area":"\u8bb7\u6cb3\u5e02","code":"230281000000"}]},{"city":"\u9e21\u897f\u5e02","code":"230300000000","areas":[{"area":"\u9e21\u51a0\u533a","code":"230302000000"},{"area":"\u6052\u5c71\u533a","code":"230303000000"},{"area":"\u6ef4\u9053\u533a","code":"230304000000"},{"area":"\u68a8\u6811\u533a","code":"230305000000"},{"area":"\u57ce\u5b50\u6cb3\u533a","code":"230306000000"},{"area":"\u9ebb\u5c71\u533a","code":"230307000000"},{"area":"\u9e21\u4e1c\u53bf","code":"230321000000"},{"area":"\u864e\u6797\u5e02","code":"230381000000"},{"area":"\u5bc6\u5c71\u5e02","code":"230382000000"}]},{"city":"\u9e64\u5c97\u5e02","code":"230400000000","areas":[{"area":"\u5411\u9633\u533a","code":"230402000000"},{"area":"\u5de5\u519c\u533a","code":"230403000000"},{"area":"\u5357\u5c71\u533a","code":"230404000000"},{"area":"\u5174\u5b89\u533a","code":"230405000000"},{"area":"\u4e1c\u5c71\u533a","code":"230406000000"},{"area":"\u5174\u5c71\u533a","code":"230407000000"},{"area":"\u841d\u5317\u53bf","code":"230421000000"},{"area":"\u7ee5\u6ee8\u53bf","code":"230422000000"}]},{"city":"\u53cc\u9e2d\u5c71\u5e02","code":"230500000000","areas":[{"area":"\u5c16\u5c71\u533a","code":"230502000000"},{"area":"\u5cad\u4e1c\u533a","code":"230503000000"},{"area":"\u56db\u65b9\u53f0\u533a","code":"230505000000"},{"area":"\u5b9d\u5c71\u533a","code":"230506000000"},{"area":"\u96c6\u8d24\u53bf","code":"230521000000"},{"area":"\u53cb\u8c0a\u53bf","code":"230522000000"},{"area":"\u5b9d\u6e05\u53bf","code":"230523000000"},{"area":"\u9976\u6cb3\u53bf","code":"230524000000"}]},{"city":"\u5927\u5e86\u5e02","code":"230600000000","areas":[{"area":"\u8428\u5c14\u56fe\u533a","code":"230602000000"},{"area":"\u9f99\u51e4\u533a","code":"230603000000"},{"area":"\u8ba9\u80e1\u8def\u533a","code":"230604000000"},{"area":"\u7ea2\u5c97\u533a","code":"230605000000"},{"area":"\u5927\u540c\u533a","code":"230606000000"},{"area":"\u8087\u5dde\u53bf","code":"230621000000"},{"area":"\u8087\u6e90\u53bf","code":"230622000000"},{"area":"\u6797\u7538\u53bf","code":"230623000000"},{"area":"\u675c\u5c14\u4f2f\u7279\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","code":"230624000000"},{"area":"\u5927\u5e86\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"230671000000"}]},{"city":"\u4f0a\u6625\u5e02","code":"230700000000","areas":[{"area":"\u4f0a\u7f8e\u533a","code":"230717000000"},{"area":"\u4e4c\u7fe0\u533a","code":"230718000000"},{"area":"\u53cb\u597d\u533a","code":"230719000000"},{"area":"\u5609\u836b\u53bf","code":"230722000000"},{"area":"\u6c64\u65fa\u53bf","code":"230723000000"},{"area":"\u4e30\u6797\u53bf","code":"230724000000"},{"area":"\u5927\u7b90\u5c71\u53bf","code":"230725000000"},{"area":"\u5357\u5c94\u53bf","code":"230726000000"},{"area":"\u91d1\u6797\u533a","code":"230751000000"},{"area":"\u94c1\u529b\u5e02","code":"230781000000"}]},{"city":"\u4f73\u6728\u65af\u5e02","code":"230800000000","areas":[{"area":"\u5411\u9633\u533a","code":"230803000000"},{"area":"\u524d\u8fdb\u533a","code":"230804000000"},{"area":"\u4e1c\u98ce\u533a","code":"230805000000"},{"area":"\u90ca\u533a","code":"230811000000"},{"area":"\u6866\u5357\u53bf","code":"230822000000"},{"area":"\u6866\u5ddd\u53bf","code":"230826000000"},{"area":"\u6c64\u539f\u53bf","code":"230828000000"},{"area":"\u540c\u6c5f\u5e02","code":"230881000000"},{"area":"\u5bcc\u9526\u5e02","code":"230882000000"},{"area":"\u629a\u8fdc\u5e02","code":"230883000000"}]},{"city":"\u4e03\u53f0\u6cb3\u5e02","code":"230900000000","areas":[{"area":"\u65b0\u5174\u533a","code":"230902000000"},{"area":"\u6843\u5c71\u533a","code":"230903000000"},{"area":"\u8304\u5b50\u6cb3\u533a","code":"230904000000"},{"area":"\u52c3\u5229\u53bf","code":"230921000000"}]},{"city":"\u7261\u4e39\u6c5f\u5e02","code":"231000000000","areas":[{"area":"\u4e1c\u5b89\u533a","code":"231002000000"},{"area":"\u9633\u660e\u533a","code":"231003000000"},{"area":"\u7231\u6c11\u533a","code":"231004000000"},{"area":"\u897f\u5b89\u533a","code":"231005000000"},{"area":"\u6797\u53e3\u53bf","code":"231025000000"},{"area":"\u7ee5\u82ac\u6cb3\u5e02","code":"231081000000"},{"area":"\u6d77\u6797\u5e02","code":"231083000000"},{"area":"\u5b81\u5b89\u5e02","code":"231084000000"},{"area":"\u7a46\u68f1\u5e02","code":"231085000000"},{"area":"\u4e1c\u5b81\u5e02","code":"231086000000"}]},{"city":"\u9ed1\u6cb3\u5e02","code":"231100000000","areas":[{"area":"\u7231\u8f89\u533a","code":"231102000000"},{"area":"\u900a\u514b\u53bf","code":"231123000000"},{"area":"\u5b59\u5434\u53bf","code":"231124000000"},{"area":"\u5317\u5b89\u5e02","code":"231181000000"},{"area":"\u4e94\u5927\u8fde\u6c60\u5e02","code":"231182000000"},{"area":"\u5ae9\u6c5f\u5e02","code":"231183000000"}]},{"city":"\u7ee5\u5316\u5e02","code":"231200000000","areas":[{"area":"\u5317\u6797\u533a","code":"231202000000"},{"area":"\u671b\u594e\u53bf","code":"231221000000"},{"area":"\u5170\u897f\u53bf","code":"231222000000"},{"area":"\u9752\u5188\u53bf","code":"231223000000"},{"area":"\u5e86\u5b89\u53bf","code":"231224000000"},{"area":"\u660e\u6c34\u53bf","code":"231225000000"},{"area":"\u7ee5\u68f1\u53bf","code":"231226000000"},{"area":"\u5b89\u8fbe\u5e02","code":"231281000000"},{"area":"\u8087\u4e1c\u5e02","code":"231282000000"},{"area":"\u6d77\u4f26\u5e02","code":"231283000000"}]},{"city":"\u5927\u5174\u5b89\u5cad\u5730\u533a","code":"232700000000","areas":[{"area":"\u6f20\u6cb3\u5e02","code":"232701000000"},{"area":"\u547c\u739b\u53bf","code":"232721000000"},{"area":"\u5854\u6cb3\u53bf","code":"232722000000"},{"area":"\u52a0\u683c\u8fbe\u5947\u533a","code":"232761000000"},{"area":"\u677e\u5cad\u533a","code":"232762000000"},{"area":"\u65b0\u6797\u533a","code":"232763000000"},{"area":"\u547c\u4e2d\u533a","code":"232764000000"}]}]},{"province":"\u4e0a\u6d77\u5e02","code":"310000","citys":[{"city":"\u4e0a\u6d77\u5e02","code":"310100000000","areas":[{"area":"\u9ec4\u6d66\u533a","code":"310101000000"},{"area":"\u5f90\u6c47\u533a","code":"310104000000"},{"area":"\u957f\u5b81\u533a","code":"310105000000"},{"area":"\u9759\u5b89\u533a","code":"310106000000"},{"area":"\u666e\u9640\u533a","code":"310107000000"},{"area":"\u8679\u53e3\u533a","code":"310109000000"},{"area":"\u6768\u6d66\u533a","code":"310110000000"},{"area":"\u95f5\u884c\u533a","code":"310112000000"},{"area":"\u5b9d\u5c71\u533a","code":"310113000000"},{"area":"\u5609\u5b9a\u533a","code":"310114000000"},{"area":"\u6d66\u4e1c\u65b0\u533a","code":"310115000000"},{"area":"\u91d1\u5c71\u533a","code":"310116000000"},{"area":"\u677e\u6c5f\u533a","code":"310117000000"},{"area":"\u9752\u6d66\u533a","code":"310118000000"},{"area":"\u5949\u8d24\u533a","code":"310120000000"},{"area":"\u5d07\u660e\u533a","code":"310151000000"}]}]},{"province":"\u6c5f\u82cf\u7701","code":"320000","citys":[{"city":"\u5357\u4eac\u5e02","code":"320100000000","areas":[{"area":"\u7384\u6b66\u533a","code":"320102000000"},{"area":"\u79e6\u6dee\u533a","code":"320104000000"},{"area":"\u5efa\u90ba\u533a","code":"320105000000"},{"area":"\u9f13\u697c\u533a","code":"320106000000"},{"area":"\u6d66\u53e3\u533a","code":"320111000000"},{"area":"\u6816\u971e\u533a","code":"320113000000"},{"area":"\u96e8\u82b1\u53f0\u533a","code":"320114000000"},{"area":"\u6c5f\u5b81\u533a","code":"320115000000"},{"area":"\u516d\u5408\u533a","code":"320116000000"},{"area":"\u6ea7\u6c34\u533a","code":"320117000000"},{"area":"\u9ad8\u6df3\u533a","code":"320118000000"}]},{"city":"\u65e0\u9521\u5e02","code":"320200000000","areas":[{"area":"\u9521\u5c71\u533a","code":"320205000000"},{"area":"\u60e0\u5c71\u533a","code":"320206000000"},{"area":"\u6ee8\u6e56\u533a","code":"320211000000"},{"area":"\u6881\u6eaa\u533a","code":"320213000000"},{"area":"\u65b0\u5434\u533a","code":"320214000000"},{"area":"\u6c5f\u9634\u5e02","code":"320281000000"},{"area":"\u5b9c\u5174\u5e02","code":"320282000000"}]},{"city":"\u5f90\u5dde\u5e02","code":"320300000000","areas":[{"area":"\u9f13\u697c\u533a","code":"320302000000"},{"area":"\u4e91\u9f99\u533a","code":"320303000000"},{"area":"\u8d3e\u6c6a\u533a","code":"320305000000"},{"area":"\u6cc9\u5c71\u533a","code":"320311000000"},{"area":"\u94dc\u5c71\u533a","code":"320312000000"},{"area":"\u4e30\u53bf","code":"320321000000"},{"area":"\u6c9b\u53bf","code":"320322000000"},{"area":"\u7762\u5b81\u53bf","code":"320324000000"},{"area":"\u5f90\u5dde\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"320371000000"},{"area":"\u65b0\u6c82\u5e02","code":"320381000000"},{"area":"\u90b3\u5dde\u5e02","code":"320382000000"}]},{"city":"\u5e38\u5dde\u5e02","code":"320400000000","areas":[{"area":"\u5929\u5b81\u533a","code":"320402000000"},{"area":"\u949f\u697c\u533a","code":"320404000000"},{"area":"\u65b0\u5317\u533a","code":"320411000000"},{"area":"\u6b66\u8fdb\u533a","code":"320412000000"},{"area":"\u91d1\u575b\u533a","code":"320413000000"},{"area":"\u6ea7\u9633\u5e02","code":"320481000000"}]},{"city":"\u82cf\u5dde\u5e02","code":"320500000000","areas":[{"area":"\u864e\u4e18\u533a","code":"320505000000"},{"area":"\u5434\u4e2d\u533a","code":"320506000000"},{"area":"\u76f8\u57ce\u533a","code":"320507000000"},{"area":"\u59d1\u82cf\u533a","code":"320508000000"},{"area":"\u5434\u6c5f\u533a","code":"320509000000"},{"area":"\u82cf\u5dde\u5de5\u4e1a\u56ed\u533a","code":"320576000000"},{"area":"\u5e38\u719f\u5e02","code":"320581000000"},{"area":"\u5f20\u5bb6\u6e2f\u5e02","code":"320582000000"},{"area":"\u6606\u5c71\u5e02","code":"320583000000"},{"area":"\u592a\u4ed3\u5e02","code":"320585000000"}]},{"city":"\u5357\u901a\u5e02","code":"320600000000","areas":[{"area":"\u901a\u5dde\u533a","code":"320612000000"},{"area":"\u5d07\u5ddd\u533a","code":"320613000000"},{"area":"\u6d77\u95e8\u533a","code":"320614000000"},{"area":"\u5982\u4e1c\u53bf","code":"320623000000"},{"area":"\u5357\u901a\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"320671000000"},{"area":"\u542f\u4e1c\u5e02","code":"320681000000"},{"area":"\u5982\u768b\u5e02","code":"320682000000"},{"area":"\u6d77\u5b89\u5e02","code":"320685000000"}]},{"city":"\u8fde\u4e91\u6e2f\u5e02","code":"320700000000","areas":[{"area":"\u8fde\u4e91\u533a","code":"320703000000"},{"area":"\u6d77\u5dde\u533a","code":"320706000000"},{"area":"\u8d63\u6986\u533a","code":"320707000000"},{"area":"\u4e1c\u6d77\u53bf","code":"320722000000"},{"area":"\u704c\u4e91\u53bf","code":"320723000000"},{"area":"\u704c\u5357\u53bf","code":"320724000000"},{"area":"\u8fde\u4e91\u6e2f\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"320771000000"}]},{"city":"\u6dee\u5b89\u5e02","code":"320800000000","areas":[{"area":"\u6dee\u5b89\u533a","code":"320803000000"},{"area":"\u6dee\u9634\u533a","code":"320804000000"},{"area":"\u6e05\u6c5f\u6d66\u533a","code":"320812000000"},{"area":"\u6d2a\u6cfd\u533a","code":"320813000000"},{"area":"\u6d9f\u6c34\u53bf","code":"320826000000"},{"area":"\u76f1\u7719\u53bf","code":"320830000000"},{"area":"\u91d1\u6e56\u53bf","code":"320831000000"},{"area":"\u6dee\u5b89\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"320871000000"}]},{"city":"\u76d0\u57ce\u5e02","code":"320900000000","areas":[{"area":"\u4ead\u6e56\u533a","code":"320902000000"},{"area":"\u76d0\u90fd\u533a","code":"320903000000"},{"area":"\u5927\u4e30\u533a","code":"320904000000"},{"area":"\u54cd\u6c34\u53bf","code":"320921000000"},{"area":"\u6ee8\u6d77\u53bf","code":"320922000000"},{"area":"\u961c\u5b81\u53bf","code":"320923000000"},{"area":"\u5c04\u9633\u53bf","code":"320924000000"},{"area":"\u5efa\u6e56\u53bf","code":"320925000000"},{"area":"\u76d0\u57ce\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"320971000000"},{"area":"\u4e1c\u53f0\u5e02","code":"320981000000"}]},{"city":"\u626c\u5dde\u5e02","code":"321000000000","areas":[{"area":"\u5e7f\u9675\u533a","code":"321002000000"},{"area":"\u9097\u6c5f\u533a","code":"321003000000"},{"area":"\u6c5f\u90fd\u533a","code":"321012000000"},{"area":"\u5b9d\u5e94\u53bf","code":"321023000000"},{"area":"\u626c\u5dde\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"321071000000"},{"area":"\u4eea\u5f81\u5e02","code":"321081000000"},{"area":"\u9ad8\u90ae\u5e02","code":"321084000000"}]},{"city":"\u9547\u6c5f\u5e02","code":"321100000000","areas":[{"area":"\u4eac\u53e3\u533a","code":"321102000000"},{"area":"\u6da6\u5dde\u533a","code":"321111000000"},{"area":"\u4e39\u5f92\u533a","code":"321112000000"},{"area":"\u9547\u6c5f\u65b0\u533a","code":"321171000000"},{"area":"\u4e39\u9633\u5e02","code":"321181000000"},{"area":"\u626c\u4e2d\u5e02","code":"321182000000"},{"area":"\u53e5\u5bb9\u5e02","code":"321183000000"}]},{"city":"\u6cf0\u5dde\u5e02","code":"321200000000","areas":[{"area":"\u6d77\u9675\u533a","code":"321202000000"},{"area":"\u9ad8\u6e2f\u533a","code":"321203000000"},{"area":"\u59dc\u5830\u533a","code":"321204000000"},{"area":"\u5174\u5316\u5e02","code":"321281000000"},{"area":"\u9756\u6c5f\u5e02","code":"321282000000"},{"area":"\u6cf0\u5174\u5e02","code":"321283000000"}]},{"city":"\u5bbf\u8fc1\u5e02","code":"321300000000","areas":[{"area":"\u5bbf\u57ce\u533a","code":"321302000000"},{"area":"\u5bbf\u8c6b\u533a","code":"321311000000"},{"area":"\u6cad\u9633\u53bf","code":"321322000000"},{"area":"\u6cd7\u9633\u53bf","code":"321323000000"},{"area":"\u6cd7\u6d2a\u53bf","code":"321324000000"},{"area":"\u5bbf\u8fc1\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"321371000000"}]}]},{"province":"\u6d59\u6c5f\u7701","code":"330000","citys":[{"city":"\u676d\u5dde\u5e02","code":"330100000000","areas":[{"area":"\u4e0a\u57ce\u533a","code":"330102000000"},{"area":"\u62f1\u5885\u533a","code":"330105000000"},{"area":"\u897f\u6e56\u533a","code":"330106000000"},{"area":"\u6ee8\u6c5f\u533a","code":"330108000000"},{"area":"\u8427\u5c71\u533a","code":"330109000000"},{"area":"\u4f59\u676d\u533a","code":"330110000000"},{"area":"\u5bcc\u9633\u533a","code":"330111000000"},{"area":"\u4e34\u5b89\u533a","code":"330112000000"},{"area":"\u4e34\u5e73\u533a","code":"330113000000"},{"area":"\u94b1\u5858\u533a","code":"330114000000"},{"area":"\u6850\u5e90\u53bf","code":"330122000000"},{"area":"\u6df3\u5b89\u53bf","code":"330127000000"},{"area":"\u5efa\u5fb7\u5e02","code":"330182000000"}]},{"city":"\u5b81\u6ce2\u5e02","code":"330200000000","areas":[{"area":"\u6d77\u66d9\u533a","code":"330203000000"},{"area":"\u6c5f\u5317\u533a","code":"330205000000"},{"area":"\u5317\u4ed1\u533a","code":"330206000000"},{"area":"\u9547\u6d77\u533a","code":"330211000000"},{"area":"\u911e\u5dde\u533a","code":"330212000000"},{"area":"\u5949\u5316\u533a","code":"330213000000"},{"area":"\u8c61\u5c71\u53bf","code":"330225000000"},{"area":"\u5b81\u6d77\u53bf","code":"330226000000"},{"area":"\u4f59\u59da\u5e02","code":"330281000000"},{"area":"\u6148\u6eaa\u5e02","code":"330282000000"}]},{"city":"\u6e29\u5dde\u5e02","code":"330300000000","areas":[{"area":"\u9e7f\u57ce\u533a","code":"330302000000"},{"area":"\u9f99\u6e7e\u533a","code":"330303000000"},{"area":"\u74ef\u6d77\u533a","code":"330304000000"},{"area":"\u6d1e\u5934\u533a","code":"330305000000"},{"area":"\u6c38\u5609\u53bf","code":"330324000000"},{"area":"\u5e73\u9633\u53bf","code":"330326000000"},{"area":"\u82cd\u5357\u53bf","code":"330327000000"},{"area":"\u6587\u6210\u53bf","code":"330328000000"},{"area":"\u6cf0\u987a\u53bf","code":"330329000000"},{"area":"\u745e\u5b89\u5e02","code":"330381000000"},{"area":"\u4e50\u6e05\u5e02","code":"330382000000"},{"area":"\u9f99\u6e2f\u5e02","code":"330383000000"}]},{"city":"\u5609\u5174\u5e02","code":"330400000000","areas":[{"area":"\u5357\u6e56\u533a","code":"330402000000"},{"area":"\u79c0\u6d32\u533a","code":"330411000000"},{"area":"\u5609\u5584\u53bf","code":"330421000000"},{"area":"\u6d77\u76d0\u53bf","code":"330424000000"},{"area":"\u6d77\u5b81\u5e02","code":"330481000000"},{"area":"\u5e73\u6e56\u5e02","code":"330482000000"},{"area":"\u6850\u4e61\u5e02","code":"330483000000"}]},{"city":"\u6e56\u5dde\u5e02","code":"330500000000","areas":[{"area":"\u5434\u5174\u533a","code":"330502000000"},{"area":"\u5357\u6d54\u533a","code":"330503000000"},{"area":"\u5fb7\u6e05\u53bf","code":"330521000000"},{"area":"\u957f\u5174\u53bf","code":"330522000000"},{"area":"\u5b89\u5409\u53bf","code":"330523000000"}]},{"city":"\u7ecd\u5174\u5e02","code":"330600000000","areas":[{"area":"\u8d8a\u57ce\u533a","code":"330602000000"},{"area":"\u67ef\u6865\u533a","code":"330603000000"},{"area":"\u4e0a\u865e\u533a","code":"330604000000"},{"area":"\u65b0\u660c\u53bf","code":"330624000000"},{"area":"\u8bf8\u66a8\u5e02","code":"330681000000"},{"area":"\u5d4a\u5dde\u5e02","code":"330683000000"}]},{"city":"\u91d1\u534e\u5e02","code":"330700000000","areas":[{"area":"\u5a7a\u57ce\u533a","code":"330702000000"},{"area":"\u91d1\u4e1c\u533a","code":"330703000000"},{"area":"\u6b66\u4e49\u53bf","code":"330723000000"},{"area":"\u6d66\u6c5f\u53bf","code":"330726000000"},{"area":"\u78d0\u5b89\u53bf","code":"330727000000"},{"area":"\u5170\u6eaa\u5e02","code":"330781000000"},{"area":"\u4e49\u4e4c\u5e02","code":"330782000000"},{"area":"\u4e1c\u9633\u5e02","code":"330783000000"},{"area":"\u6c38\u5eb7\u5e02","code":"330784000000"}]},{"city":"\u8862\u5dde\u5e02","code":"330800000000","areas":[{"area":"\u67ef\u57ce\u533a","code":"330802000000"},{"area":"\u8862\u6c5f\u533a","code":"330803000000"},{"area":"\u5e38\u5c71\u53bf","code":"330822000000"},{"area":"\u5f00\u5316\u53bf","code":"330824000000"},{"area":"\u9f99\u6e38\u53bf","code":"330825000000"},{"area":"\u6c5f\u5c71\u5e02","code":"330881000000"}]},{"city":"\u821f\u5c71\u5e02","code":"330900000000","areas":[{"area":"\u5b9a\u6d77\u533a","code":"330902000000"},{"area":"\u666e\u9640\u533a","code":"330903000000"},{"area":"\u5cb1\u5c71\u53bf","code":"330921000000"},{"area":"\u5d4a\u6cd7\u53bf","code":"330922000000"}]},{"city":"\u53f0\u5dde\u5e02","code":"331000000000","areas":[{"area":"\u6912\u6c5f\u533a","code":"331002000000"},{"area":"\u9ec4\u5ca9\u533a","code":"331003000000"},{"area":"\u8def\u6865\u533a","code":"331004000000"},{"area":"\u4e09\u95e8\u53bf","code":"331022000000"},{"area":"\u5929\u53f0\u53bf","code":"331023000000"},{"area":"\u4ed9\u5c45\u53bf","code":"331024000000"},{"area":"\u6e29\u5cad\u5e02","code":"331081000000"},{"area":"\u4e34\u6d77\u5e02","code":"331082000000"},{"area":"\u7389\u73af\u5e02","code":"331083000000"}]},{"city":"\u4e3d\u6c34\u5e02","code":"331100000000","areas":[{"area":"\u83b2\u90fd\u533a","code":"331102000000"},{"area":"\u9752\u7530\u53bf","code":"331121000000"},{"area":"\u7f19\u4e91\u53bf","code":"331122000000"},{"area":"\u9042\u660c\u53bf","code":"331123000000"},{"area":"\u677e\u9633\u53bf","code":"331124000000"},{"area":"\u4e91\u548c\u53bf","code":"331125000000"},{"area":"\u5e86\u5143\u53bf","code":"331126000000"},{"area":"\u666f\u5b81\u7572\u65cf\u81ea\u6cbb\u53bf","code":"331127000000"},{"area":"\u9f99\u6cc9\u5e02","code":"331181000000"}]}]},{"province":"\u5b89\u5fbd\u7701","code":"340000","citys":[{"city":"\u5408\u80a5\u5e02","code":"340100000000","areas":[{"area":"\u7476\u6d77\u533a","code":"340102000000"},{"area":"\u5e90\u9633\u533a","code":"340103000000"},{"area":"\u8700\u5c71\u533a","code":"340104000000"},{"area":"\u5305\u6cb3\u533a","code":"340111000000"},{"area":"\u957f\u4e30\u53bf","code":"340121000000"},{"area":"\u80a5\u4e1c\u53bf","code":"340122000000"},{"area":"\u80a5\u897f\u53bf","code":"340123000000"},{"area":"\u5e90\u6c5f\u53bf","code":"340124000000"},{"area":"\u5408\u80a5\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"340176000000"},{"area":"\u5408\u80a5\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"340177000000"},{"area":"\u5408\u80a5\u65b0\u7ad9\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"340178000000"},{"area":"\u5de2\u6e56\u5e02","code":"340181000000"}]},{"city":"\u829c\u6e56\u5e02","code":"340200000000","areas":[{"area":"\u955c\u6e56\u533a","code":"340202000000"},{"area":"\u9e20\u6c5f\u533a","code":"340207000000"},{"area":"\u5f0b\u6c5f\u533a","code":"340209000000"},{"area":"\u6e7e\u6c9a\u533a","code":"340210000000"},{"area":"\u7e41\u660c\u533a","code":"340212000000"},{"area":"\u5357\u9675\u53bf","code":"340223000000"},{"area":"\u829c\u6e56\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"340271000000"},{"area":"\u5b89\u5fbd\u829c\u6e56\u4e09\u5c71\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"340272000000"},{"area":"\u65e0\u4e3a\u5e02","code":"340281000000"}]},{"city":"\u868c\u57e0\u5e02","code":"340300000000","areas":[{"area":"\u9f99\u5b50\u6e56\u533a","code":"340302000000"},{"area":"\u868c\u5c71\u533a","code":"340303000000"},{"area":"\u79b9\u4f1a\u533a","code":"340304000000"},{"area":"\u6dee\u4e0a\u533a","code":"340311000000"},{"area":"\u6000\u8fdc\u53bf","code":"340321000000"},{"area":"\u4e94\u6cb3\u53bf","code":"340322000000"},{"area":"\u56fa\u9547\u53bf","code":"340323000000"},{"area":"\u868c\u57e0\u5e02\u9ad8\u65b0\u6280\u672f\u5f00\u53d1\u533a","code":"340371000000"},{"area":"\u868c\u57e0\u5e02\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"340372000000"}]},{"city":"\u6dee\u5357\u5e02","code":"340400000000","areas":[{"area":"\u5927\u901a\u533a","code":"340402000000"},{"area":"\u7530\u5bb6\u5eb5\u533a","code":"340403000000"},{"area":"\u8c22\u5bb6\u96c6\u533a","code":"340404000000"},{"area":"\u516b\u516c\u5c71\u533a","code":"340405000000"},{"area":"\u6f58\u96c6\u533a","code":"340406000000"},{"area":"\u51e4\u53f0\u53bf","code":"340421000000"},{"area":"\u5bff\u53bf","code":"340422000000"}]},{"city":"\u9a6c\u978d\u5c71\u5e02","code":"340500000000","areas":[{"area":"\u82b1\u5c71\u533a","code":"340503000000"},{"area":"\u96e8\u5c71\u533a","code":"340504000000"},{"area":"\u535a\u671b\u533a","code":"340506000000"},{"area":"\u5f53\u6d82\u53bf","code":"340521000000"},{"area":"\u542b\u5c71\u53bf","code":"340522000000"},{"area":"\u548c\u53bf","code":"340523000000"}]},{"city":"\u6dee\u5317\u5e02","code":"340600000000","areas":[{"area":"\u675c\u96c6\u533a","code":"340602000000"},{"area":"\u76f8\u5c71\u533a","code":"340603000000"},{"area":"\u70c8\u5c71\u533a","code":"340604000000"},{"area":"\u6fc9\u6eaa\u53bf","code":"340621000000"}]},{"city":"\u94dc\u9675\u5e02","code":"340700000000","areas":[{"area":"\u94dc\u5b98\u533a","code":"340705000000"},{"area":"\u4e49\u5b89\u533a","code":"340706000000"},{"area":"\u90ca\u533a","code":"340711000000"},{"area":"\u679e\u9633\u53bf","code":"340722000000"}]},{"city":"\u5b89\u5e86\u5e02","code":"340800000000","areas":[{"area":"\u8fce\u6c5f\u533a","code":"340802000000"},{"area":"\u5927\u89c2\u533a","code":"340803000000"},{"area":"\u5b9c\u79c0\u533a","code":"340811000000"},{"area":"\u6000\u5b81\u53bf","code":"340822000000"},{"area":"\u592a\u6e56\u53bf","code":"340825000000"},{"area":"\u5bbf\u677e\u53bf","code":"340826000000"},{"area":"\u671b\u6c5f\u53bf","code":"340827000000"},{"area":"\u5cb3\u897f\u53bf","code":"340828000000"},{"area":"\u5b89\u5fbd\u5b89\u5e86\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"340871000000"},{"area":"\u6850\u57ce\u5e02","code":"340881000000"},{"area":"\u6f5c\u5c71\u5e02","code":"340882000000"}]},{"city":"\u9ec4\u5c71\u5e02","code":"341000000000","areas":[{"area":"\u5c6f\u6eaa\u533a","code":"341002000000"},{"area":"\u9ec4\u5c71\u533a","code":"341003000000"},{"area":"\u5fbd\u5dde\u533a","code":"341004000000"},{"area":"\u6b59\u53bf","code":"341021000000"},{"area":"\u4f11\u5b81\u53bf","code":"341022000000"},{"area":"\u9edf\u53bf","code":"341023000000"},{"area":"\u7941\u95e8\u53bf","code":"341024000000"}]},{"city":"\u6ec1\u5dde\u5e02","code":"341100000000","areas":[{"area":"\u7405\u740a\u533a","code":"341102000000"},{"area":"\u5357\u8c2f\u533a","code":"341103000000"},{"area":"\u6765\u5b89\u53bf","code":"341122000000"},{"area":"\u5168\u6912\u53bf","code":"341124000000"},{"area":"\u5b9a\u8fdc\u53bf","code":"341125000000"},{"area":"\u51e4\u9633\u53bf","code":"341126000000"},{"area":"\u4e2d\u65b0\u82cf\u6ec1\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"341171000000"},{"area":"\u6ec1\u5dde\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"341172000000"},{"area":"\u5929\u957f\u5e02","code":"341181000000"},{"area":"\u660e\u5149\u5e02","code":"341182000000"}]},{"city":"\u961c\u9633\u5e02","code":"341200000000","areas":[{"area":"\u988d\u5dde\u533a","code":"341202000000"},{"area":"\u988d\u4e1c\u533a","code":"341203000000"},{"area":"\u988d\u6cc9\u533a","code":"341204000000"},{"area":"\u4e34\u6cc9\u53bf","code":"341221000000"},{"area":"\u592a\u548c\u53bf","code":"341222000000"},{"area":"\u961c\u5357\u53bf","code":"341225000000"},{"area":"\u988d\u4e0a\u53bf","code":"341226000000"},{"area":"\u961c\u9633\u5408\u80a5\u73b0\u4ee3\u4ea7\u4e1a\u56ed\u533a","code":"341271000000"},{"area":"\u961c\u9633\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"341272000000"},{"area":"\u754c\u9996\u5e02","code":"341282000000"}]},{"city":"\u5bbf\u5dde\u5e02","code":"341300000000","areas":[{"area":"\u57c7\u6865\u533a","code":"341302000000"},{"area":"\u7800\u5c71\u53bf","code":"341321000000"},{"area":"\u8427\u53bf","code":"341322000000"},{"area":"\u7075\u74a7\u53bf","code":"341323000000"},{"area":"\u6cd7\u53bf","code":"341324000000"},{"area":"\u5bbf\u5dde\u9a6c\u978d\u5c71\u73b0\u4ee3\u4ea7\u4e1a\u56ed\u533a","code":"341371000000"},{"area":"\u5bbf\u5dde\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"341372000000"}]},{"city":"\u516d\u5b89\u5e02","code":"341500000000","areas":[{"area":"\u91d1\u5b89\u533a","code":"341502000000"},{"area":"\u88d5\u5b89\u533a","code":"341503000000"},{"area":"\u53f6\u96c6\u533a","code":"341504000000"},{"area":"\u970d\u90b1\u53bf","code":"341522000000"},{"area":"\u8212\u57ce\u53bf","code":"341523000000"},{"area":"\u91d1\u5be8\u53bf","code":"341524000000"},{"area":"\u970d\u5c71\u53bf","code":"341525000000"}]},{"city":"\u4eb3\u5dde\u5e02","code":"341600000000","areas":[{"area":"\u8c2f\u57ce\u533a","code":"341602000000"},{"area":"\u6da1\u9633\u53bf","code":"341621000000"},{"area":"\u8499\u57ce\u53bf","code":"341622000000"},{"area":"\u5229\u8f9b\u53bf","code":"341623000000"}]},{"city":"\u6c60\u5dde\u5e02","code":"341700000000","areas":[{"area":"\u8d35\u6c60\u533a","code":"341702000000"},{"area":"\u4e1c\u81f3\u53bf","code":"341721000000"},{"area":"\u77f3\u53f0\u53bf","code":"341722000000"},{"area":"\u9752\u9633\u53bf","code":"341723000000"}]},{"city":"\u5ba3\u57ce\u5e02","code":"341800000000","areas":[{"area":"\u5ba3\u5dde\u533a","code":"341802000000"},{"area":"\u90ce\u6eaa\u53bf","code":"341821000000"},{"area":"\u6cfe\u53bf","code":"341823000000"},{"area":"\u7ee9\u6eaa\u53bf","code":"341824000000"},{"area":"\u65cc\u5fb7\u53bf","code":"341825000000"},{"area":"\u5ba3\u57ce\u5e02\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"341871000000"},{"area":"\u5b81\u56fd\u5e02","code":"341881000000"},{"area":"\u5e7f\u5fb7\u5e02","code":"341882000000"}]}]},{"province":"\u798f\u5efa\u7701","code":"350000","citys":[{"city":"\u798f\u5dde\u5e02","code":"350100000000","areas":[{"area":"\u9f13\u697c\u533a","code":"350102000000"},{"area":"\u53f0\u6c5f\u533a","code":"350103000000"},{"area":"\u4ed3\u5c71\u533a","code":"350104000000"},{"area":"\u9a6c\u5c3e\u533a","code":"350105000000"},{"area":"\u664b\u5b89\u533a","code":"350111000000"},{"area":"\u957f\u4e50\u533a","code":"350112000000"},{"area":"\u95fd\u4faf\u53bf","code":"350121000000"},{"area":"\u8fde\u6c5f\u53bf","code":"350122000000"},{"area":"\u7f57\u6e90\u53bf","code":"350123000000"},{"area":"\u95fd\u6e05\u53bf","code":"350124000000"},{"area":"\u6c38\u6cf0\u53bf","code":"350125000000"},{"area":"\u5e73\u6f6d\u53bf","code":"350128000000"},{"area":"\u798f\u6e05\u5e02","code":"350181000000"}]},{"city":"\u53a6\u95e8\u5e02","code":"350200000000","areas":[{"area":"\u601d\u660e\u533a","code":"350203000000"},{"area":"\u6d77\u6ca7\u533a","code":"350205000000"},{"area":"\u6e56\u91cc\u533a","code":"350206000000"},{"area":"\u96c6\u7f8e\u533a","code":"350211000000"},{"area":"\u540c\u5b89\u533a","code":"350212000000"},{"area":"\u7fd4\u5b89\u533a","code":"350213000000"}]},{"city":"\u8386\u7530\u5e02","code":"350300000000","areas":[{"area":"\u57ce\u53a2\u533a","code":"350302000000"},{"area":"\u6db5\u6c5f\u533a","code":"350303000000"},{"area":"\u8354\u57ce\u533a","code":"350304000000"},{"area":"\u79c0\u5c7f\u533a","code":"350305000000"},{"area":"\u4ed9\u6e38\u53bf","code":"350322000000"}]},{"city":"\u4e09\u660e\u5e02","code":"350400000000","areas":[{"area":"\u4e09\u5143\u533a","code":"350404000000"},{"area":"\u6c99\u53bf\u533a","code":"350405000000"},{"area":"\u660e\u6eaa\u53bf","code":"350421000000"},{"area":"\u6e05\u6d41\u53bf","code":"350423000000"},{"area":"\u5b81\u5316\u53bf","code":"350424000000"},{"area":"\u5927\u7530\u53bf","code":"350425000000"},{"area":"\u5c24\u6eaa\u53bf","code":"350426000000"},{"area":"\u5c06\u4e50\u53bf","code":"350428000000"},{"area":"\u6cf0\u5b81\u53bf","code":"350429000000"},{"area":"\u5efa\u5b81\u53bf","code":"350430000000"},{"area":"\u6c38\u5b89\u5e02","code":"350481000000"}]},{"city":"\u6cc9\u5dde\u5e02","code":"350500000000","areas":[{"area":"\u9ca4\u57ce\u533a","code":"350502000000"},{"area":"\u4e30\u6cfd\u533a","code":"350503000000"},{"area":"\u6d1b\u6c5f\u533a","code":"350504000000"},{"area":"\u6cc9\u6e2f\u533a","code":"350505000000"},{"area":"\u60e0\u5b89\u53bf","code":"350521000000"},{"area":"\u5b89\u6eaa\u53bf","code":"350524000000"},{"area":"\u6c38\u6625\u53bf","code":"350525000000"},{"area":"\u5fb7\u5316\u53bf","code":"350526000000"},{"area":"\u91d1\u95e8\u53bf","code":"350527000000"},{"area":"\u77f3\u72ee\u5e02","code":"350581000000"},{"area":"\u664b\u6c5f\u5e02","code":"350582000000"},{"area":"\u5357\u5b89\u5e02","code":"350583000000"}]},{"city":"\u6f33\u5dde\u5e02","code":"350600000000","areas":[{"area":"\u8297\u57ce\u533a","code":"350602000000"},{"area":"\u9f99\u6587\u533a","code":"350603000000"},{"area":"\u9f99\u6d77\u533a","code":"350604000000"},{"area":"\u957f\u6cf0\u533a","code":"350605000000"},{"area":"\u4e91\u9704\u53bf","code":"350622000000"},{"area":"\u6f33\u6d66\u53bf","code":"350623000000"},{"area":"\u8bcf\u5b89\u53bf","code":"350624000000"},{"area":"\u4e1c\u5c71\u53bf","code":"350626000000"},{"area":"\u5357\u9756\u53bf","code":"350627000000"},{"area":"\u5e73\u548c\u53bf","code":"350628000000"},{"area":"\u534e\u5b89\u53bf","code":"350629000000"}]},{"city":"\u5357\u5e73\u5e02","code":"350700000000","areas":[{"area":"\u5ef6\u5e73\u533a","code":"350702000000"},{"area":"\u5efa\u9633\u533a","code":"350703000000"},{"area":"\u987a\u660c\u53bf","code":"350721000000"},{"area":"\u6d66\u57ce\u53bf","code":"350722000000"},{"area":"\u5149\u6cfd\u53bf","code":"350723000000"},{"area":"\u677e\u6eaa\u53bf","code":"350724000000"},{"area":"\u653f\u548c\u53bf","code":"350725000000"},{"area":"\u90b5\u6b66\u5e02","code":"350781000000"},{"area":"\u6b66\u5937\u5c71\u5e02","code":"350782000000"},{"area":"\u5efa\u74ef\u5e02","code":"350783000000"}]},{"city":"\u9f99\u5ca9\u5e02","code":"350800000000","areas":[{"area":"\u65b0\u7f57\u533a","code":"350802000000"},{"area":"\u6c38\u5b9a\u533a","code":"350803000000"},{"area":"\u957f\u6c40\u53bf","code":"350821000000"},{"area":"\u4e0a\u676d\u53bf","code":"350823000000"},{"area":"\u6b66\u5e73\u53bf","code":"350824000000"},{"area":"\u8fde\u57ce\u53bf","code":"350825000000"},{"area":"\u6f33\u5e73\u5e02","code":"350881000000"}]},{"city":"\u5b81\u5fb7\u5e02","code":"350900000000","areas":[{"area":"\u8549\u57ce\u533a","code":"350902000000"},{"area":"\u971e\u6d66\u53bf","code":"350921000000"},{"area":"\u53e4\u7530\u53bf","code":"350922000000"},{"area":"\u5c4f\u5357\u53bf","code":"350923000000"},{"area":"\u5bff\u5b81\u53bf","code":"350924000000"},{"area":"\u5468\u5b81\u53bf","code":"350925000000"},{"area":"\u67d8\u8363\u53bf","code":"350926000000"},{"area":"\u798f\u5b89\u5e02","code":"350981000000"},{"area":"\u798f\u9f0e\u5e02","code":"350982000000"}]}]},{"province":"\u6c5f\u897f\u7701","code":"360000","citys":[{"city":"\u5357\u660c\u5e02","code":"360100000000","areas":[{"area":"\u4e1c\u6e56\u533a","code":"360102000000"},{"area":"\u897f\u6e56\u533a","code":"360103000000"},{"area":"\u9752\u4e91\u8c31\u533a","code":"360104000000"},{"area":"\u9752\u5c71\u6e56\u533a","code":"360111000000"},{"area":"\u65b0\u5efa\u533a","code":"360112000000"},{"area":"\u7ea2\u8c37\u6ee9\u533a","code":"360113000000"},{"area":"\u5357\u660c\u53bf","code":"360121000000"},{"area":"\u5b89\u4e49\u53bf","code":"360123000000"},{"area":"\u8fdb\u8d24\u53bf","code":"360124000000"}]},{"city":"\u666f\u5fb7\u9547\u5e02","code":"360200000000","areas":[{"area":"\u660c\u6c5f\u533a","code":"360202000000"},{"area":"\u73e0\u5c71\u533a","code":"360203000000"},{"area":"\u6d6e\u6881\u53bf","code":"360222000000"},{"area":"\u4e50\u5e73\u5e02","code":"360281000000"}]},{"city":"\u840d\u4e61\u5e02","code":"360300000000","areas":[{"area":"\u5b89\u6e90\u533a","code":"360302000000"},{"area":"\u6e58\u4e1c\u533a","code":"360313000000"},{"area":"\u83b2\u82b1\u53bf","code":"360321000000"},{"area":"\u4e0a\u6817\u53bf","code":"360322000000"},{"area":"\u82a6\u6eaa\u53bf","code":"360323000000"}]},{"city":"\u4e5d\u6c5f\u5e02","code":"360400000000","areas":[{"area":"\u6fc2\u6eaa\u533a","code":"360402000000"},{"area":"\u6d54\u9633\u533a","code":"360403000000"},{"area":"\u67f4\u6851\u533a","code":"360404000000"},{"area":"\u6b66\u5b81\u53bf","code":"360423000000"},{"area":"\u4fee\u6c34\u53bf","code":"360424000000"},{"area":"\u6c38\u4fee\u53bf","code":"360425000000"},{"area":"\u5fb7\u5b89\u53bf","code":"360426000000"},{"area":"\u90fd\u660c\u53bf","code":"360428000000"},{"area":"\u6e56\u53e3\u53bf","code":"360429000000"},{"area":"\u5f6d\u6cfd\u53bf","code":"360430000000"},{"area":"\u745e\u660c\u5e02","code":"360481000000"},{"area":"\u5171\u9752\u57ce\u5e02","code":"360482000000"},{"area":"\u5e90\u5c71\u5e02","code":"360483000000"}]},{"city":"\u65b0\u4f59\u5e02","code":"360500000000","areas":[{"area":"\u6e1d\u6c34\u533a","code":"360502000000"},{"area":"\u5206\u5b9c\u53bf","code":"360521000000"}]},{"city":"\u9e70\u6f6d\u5e02","code":"360600000000","areas":[{"area":"\u6708\u6e56\u533a","code":"360602000000"},{"area":"\u4f59\u6c5f\u533a","code":"360603000000"},{"area":"\u8d35\u6eaa\u5e02","code":"360681000000"}]},{"city":"\u8d63\u5dde\u5e02","code":"360700000000","areas":[{"area":"\u7ae0\u8d21\u533a","code":"360702000000"},{"area":"\u5357\u5eb7\u533a","code":"360703000000"},{"area":"\u8d63\u53bf\u533a","code":"360704000000"},{"area":"\u4fe1\u4e30\u53bf","code":"360722000000"},{"area":"\u5927\u4f59\u53bf","code":"360723000000"},{"area":"\u4e0a\u72b9\u53bf","code":"360724000000"},{"area":"\u5d07\u4e49\u53bf","code":"360725000000"},{"area":"\u5b89\u8fdc\u53bf","code":"360726000000"},{"area":"\u5b9a\u5357\u53bf","code":"360728000000"},{"area":"\u5168\u5357\u53bf","code":"360729000000"},{"area":"\u5b81\u90fd\u53bf","code":"360730000000"},{"area":"\u4e8e\u90fd\u53bf","code":"360731000000"},{"area":"\u5174\u56fd\u53bf","code":"360732000000"},{"area":"\u4f1a\u660c\u53bf","code":"360733000000"},{"area":"\u5bfb\u4e4c\u53bf","code":"360734000000"},{"area":"\u77f3\u57ce\u53bf","code":"360735000000"},{"area":"\u745e\u91d1\u5e02","code":"360781000000"},{"area":"\u9f99\u5357\u5e02","code":"360783000000"}]},{"city":"\u5409\u5b89\u5e02","code":"360800000000","areas":[{"area":"\u5409\u5dde\u533a","code":"360802000000"},{"area":"\u9752\u539f\u533a","code":"360803000000"},{"area":"\u5409\u5b89\u53bf","code":"360821000000"},{"area":"\u5409\u6c34\u53bf","code":"360822000000"},{"area":"\u5ce1\u6c5f\u53bf","code":"360823000000"},{"area":"\u65b0\u5e72\u53bf","code":"360824000000"},{"area":"\u6c38\u4e30\u53bf","code":"360825000000"},{"area":"\u6cf0\u548c\u53bf","code":"360826000000"},{"area":"\u9042\u5ddd\u53bf","code":"360827000000"},{"area":"\u4e07\u5b89\u53bf","code":"360828000000"},{"area":"\u5b89\u798f\u53bf","code":"360829000000"},{"area":"\u6c38\u65b0\u53bf","code":"360830000000"},{"area":"\u4e95\u5188\u5c71\u5e02","code":"360881000000"}]},{"city":"\u5b9c\u6625\u5e02","code":"360900000000","areas":[{"area":"\u8881\u5dde\u533a","code":"360902000000"},{"area":"\u5949\u65b0\u53bf","code":"360921000000"},{"area":"\u4e07\u8f7d\u53bf","code":"360922000000"},{"area":"\u4e0a\u9ad8\u53bf","code":"360923000000"},{"area":"\u5b9c\u4e30\u53bf","code":"360924000000"},{"area":"\u9756\u5b89\u53bf","code":"360925000000"},{"area":"\u94dc\u9f13\u53bf","code":"360926000000"},{"area":"\u4e30\u57ce\u5e02","code":"360981000000"},{"area":"\u6a1f\u6811\u5e02","code":"360982000000"},{"area":"\u9ad8\u5b89\u5e02","code":"360983000000"}]},{"city":"\u629a\u5dde\u5e02","code":"361000000000","areas":[{"area":"\u4e34\u5ddd\u533a","code":"361002000000"},{"area":"\u4e1c\u4e61\u533a","code":"361003000000"},{"area":"\u5357\u57ce\u53bf","code":"361021000000"},{"area":"\u9ece\u5ddd\u53bf","code":"361022000000"},{"area":"\u5357\u4e30\u53bf","code":"361023000000"},{"area":"\u5d07\u4ec1\u53bf","code":"361024000000"},{"area":"\u4e50\u5b89\u53bf","code":"361025000000"},{"area":"\u5b9c\u9ec4\u53bf","code":"361026000000"},{"area":"\u91d1\u6eaa\u53bf","code":"361027000000"},{"area":"\u8d44\u6eaa\u53bf","code":"361028000000"},{"area":"\u5e7f\u660c\u53bf","code":"361030000000"}]},{"city":"\u4e0a\u9976\u5e02","code":"361100000000","areas":[{"area":"\u4fe1\u5dde\u533a","code":"361102000000"},{"area":"\u5e7f\u4e30\u533a","code":"361103000000"},{"area":"\u5e7f\u4fe1\u533a","code":"361104000000"},{"area":"\u7389\u5c71\u53bf","code":"361123000000"},{"area":"\u94c5\u5c71\u53bf","code":"361124000000"},{"area":"\u6a2a\u5cf0\u53bf","code":"361125000000"},{"area":"\u5f0b\u9633\u53bf","code":"361126000000"},{"area":"\u4f59\u5e72\u53bf","code":"361127000000"},{"area":"\u9131\u9633\u53bf","code":"361128000000"},{"area":"\u4e07\u5e74\u53bf","code":"361129000000"},{"area":"\u5a7a\u6e90\u53bf","code":"361130000000"},{"area":"\u5fb7\u5174\u5e02","code":"361181000000"}]}]},{"province":"\u5c71\u4e1c\u7701","code":"370000","citys":[{"city":"\u6d4e\u5357\u5e02","code":"370100000000","areas":[{"area":"\u5386\u4e0b\u533a","code":"370102000000"},{"area":"\u5e02\u4e2d\u533a","code":"370103000000"},{"area":"\u69d0\u836b\u533a","code":"370104000000"},{"area":"\u5929\u6865\u533a","code":"370105000000"},{"area":"\u5386\u57ce\u533a","code":"370112000000"},{"area":"\u957f\u6e05\u533a","code":"370113000000"},{"area":"\u7ae0\u4e18\u533a","code":"370114000000"},{"area":"\u6d4e\u9633\u533a","code":"370115000000"},{"area":"\u83b1\u829c\u533a","code":"370116000000"},{"area":"\u94a2\u57ce\u533a","code":"370117000000"},{"area":"\u5e73\u9634\u53bf","code":"370124000000"},{"area":"\u5546\u6cb3\u53bf","code":"370126000000"},{"area":"\u6d4e\u5357\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"370176000000"}]},{"city":"\u9752\u5c9b\u5e02","code":"370200000000","areas":[{"area":"\u5e02\u5357\u533a","code":"370202000000"},{"area":"\u5e02\u5317\u533a","code":"370203000000"},{"area":"\u9ec4\u5c9b\u533a","code":"370211000000"},{"area":"\u5d02\u5c71\u533a","code":"370212000000"},{"area":"\u674e\u6ca7\u533a","code":"370213000000"},{"area":"\u57ce\u9633\u533a","code":"370214000000"},{"area":"\u5373\u58a8\u533a","code":"370215000000"},{"area":"\u80f6\u5dde\u5e02","code":"370281000000"},{"area":"\u5e73\u5ea6\u5e02","code":"370283000000"},{"area":"\u83b1\u897f\u5e02","code":"370285000000"}]},{"city":"\u6dc4\u535a\u5e02","code":"370300000000","areas":[{"area":"\u6dc4\u5ddd\u533a","code":"370302000000"},{"area":"\u5f20\u5e97\u533a","code":"370303000000"},{"area":"\u535a\u5c71\u533a","code":"370304000000"},{"area":"\u4e34\u6dc4\u533a","code":"370305000000"},{"area":"\u5468\u6751\u533a","code":"370306000000"},{"area":"\u6853\u53f0\u53bf","code":"370321000000"},{"area":"\u9ad8\u9752\u53bf","code":"370322000000"},{"area":"\u6c82\u6e90\u53bf","code":"370323000000"}]},{"city":"\u67a3\u5e84\u5e02","code":"370400000000","areas":[{"area":"\u5e02\u4e2d\u533a","code":"370402000000"},{"area":"\u859b\u57ce\u533a","code":"370403000000"},{"area":"\u5cc4\u57ce\u533a","code":"370404000000"},{"area":"\u53f0\u513f\u5e84\u533a","code":"370405000000"},{"area":"\u5c71\u4ead\u533a","code":"370406000000"},{"area":"\u6ed5\u5dde\u5e02","code":"370481000000"}]},{"city":"\u4e1c\u8425\u5e02","code":"370500000000","areas":[{"area":"\u4e1c\u8425\u533a","code":"370502000000"},{"area":"\u6cb3\u53e3\u533a","code":"370503000000"},{"area":"\u57a6\u5229\u533a","code":"370505000000"},{"area":"\u5229\u6d25\u53bf","code":"370522000000"},{"area":"\u5e7f\u9976\u53bf","code":"370523000000"},{"area":"\u4e1c\u8425\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"370571000000"},{"area":"\u4e1c\u8425\u6e2f\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"370572000000"}]},{"city":"\u70df\u53f0\u5e02","code":"370600000000","areas":[{"area":"\u829d\u7f58\u533a","code":"370602000000"},{"area":"\u798f\u5c71\u533a","code":"370611000000"},{"area":"\u725f\u5e73\u533a","code":"370612000000"},{"area":"\u83b1\u5c71\u533a","code":"370613000000"},{"area":"\u84ec\u83b1\u533a","code":"370614000000"},{"area":"\u70df\u53f0\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"370671000000"},{"area":"\u70df\u53f0\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"370676000000"},{"area":"\u9f99\u53e3\u5e02","code":"370681000000"},{"area":"\u83b1\u9633\u5e02","code":"370682000000"},{"area":"\u83b1\u5dde\u5e02","code":"370683000000"},{"area":"\u62db\u8fdc\u5e02","code":"370685000000"},{"area":"\u6816\u971e\u5e02","code":"370686000000"},{"area":"\u6d77\u9633\u5e02","code":"370687000000"}]},{"city":"\u6f4d\u574a\u5e02","code":"370700000000","areas":[{"area":"\u6f4d\u57ce\u533a","code":"370702000000"},{"area":"\u5bd2\u4ead\u533a","code":"370703000000"},{"area":"\u574a\u5b50\u533a","code":"370704000000"},{"area":"\u594e\u6587\u533a","code":"370705000000"},{"area":"\u4e34\u6710\u53bf","code":"370724000000"},{"area":"\u660c\u4e50\u53bf","code":"370725000000"},{"area":"\u6f4d\u574a\u6ee8\u6d77\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"370772000000"},{"area":"\u9752\u5dde\u5e02","code":"370781000000"},{"area":"\u8bf8\u57ce\u5e02","code":"370782000000"},{"area":"\u5bff\u5149\u5e02","code":"370783000000"},{"area":"\u5b89\u4e18\u5e02","code":"370784000000"},{"area":"\u9ad8\u5bc6\u5e02","code":"370785000000"},{"area":"\u660c\u9091\u5e02","code":"370786000000"}]},{"city":"\u6d4e\u5b81\u5e02","code":"370800000000","areas":[{"area":"\u4efb\u57ce\u533a","code":"370811000000"},{"area":"\u5156\u5dde\u533a","code":"370812000000"},{"area":"\u5fae\u5c71\u53bf","code":"370826000000"},{"area":"\u9c7c\u53f0\u53bf","code":"370827000000"},{"area":"\u91d1\u4e61\u53bf","code":"370828000000"},{"area":"\u5609\u7965\u53bf","code":"370829000000"},{"area":"\u6c76\u4e0a\u53bf","code":"370830000000"},{"area":"\u6cd7\u6c34\u53bf","code":"370831000000"},{"area":"\u6881\u5c71\u53bf","code":"370832000000"},{"area":"\u6d4e\u5b81\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"370871000000"},{"area":"\u66f2\u961c\u5e02","code":"370881000000"},{"area":"\u90b9\u57ce\u5e02","code":"370883000000"}]},{"city":"\u6cf0\u5b89\u5e02","code":"370900000000","areas":[{"area":"\u6cf0\u5c71\u533a","code":"370902000000"},{"area":"\u5cb1\u5cb3\u533a","code":"370911000000"},{"area":"\u5b81\u9633\u53bf","code":"370921000000"},{"area":"\u4e1c\u5e73\u53bf","code":"370923000000"},{"area":"\u65b0\u6cf0\u5e02","code":"370982000000"},{"area":"\u80a5\u57ce\u5e02","code":"370983000000"}]},{"city":"\u5a01\u6d77\u5e02","code":"371000000000","areas":[{"area":"\u73af\u7fe0\u533a","code":"371002000000"},{"area":"\u6587\u767b\u533a","code":"371003000000"},{"area":"\u5a01\u6d77\u706b\u70ac\u9ad8\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"371071000000"},{"area":"\u5a01\u6d77\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"371072000000"},{"area":"\u5a01\u6d77\u4e34\u6e2f\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"371073000000"},{"area":"\u8363\u6210\u5e02","code":"371082000000"},{"area":"\u4e73\u5c71\u5e02","code":"371083000000"}]},{"city":"\u65e5\u7167\u5e02","code":"371100000000","areas":[{"area":"\u4e1c\u6e2f\u533a","code":"371102000000"},{"area":"\u5c9a\u5c71\u533a","code":"371103000000"},{"area":"\u4e94\u83b2\u53bf","code":"371121000000"},{"area":"\u8392\u53bf","code":"371122000000"},{"area":"\u65e5\u7167\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"371171000000"}]},{"city":"\u4e34\u6c82\u5e02","code":"371300000000","areas":[{"area":"\u5170\u5c71\u533a","code":"371302000000"},{"area":"\u7f57\u5e84\u533a","code":"371311000000"},{"area":"\u6cb3\u4e1c\u533a","code":"371312000000"},{"area":"\u6c82\u5357\u53bf","code":"371321000000"},{"area":"\u90ef\u57ce\u53bf","code":"371322000000"},{"area":"\u6c82\u6c34\u53bf","code":"371323000000"},{"area":"\u5170\u9675\u53bf","code":"371324000000"},{"area":"\u8d39\u53bf","code":"371325000000"},{"area":"\u5e73\u9091\u53bf","code":"371326000000"},{"area":"\u8392\u5357\u53bf","code":"371327000000"},{"area":"\u8499\u9634\u53bf","code":"371328000000"},{"area":"\u4e34\u6cad\u53bf","code":"371329000000"},{"area":"\u4e34\u6c82\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"371371000000"}]},{"city":"\u5fb7\u5dde\u5e02","code":"371400000000","areas":[{"area":"\u5fb7\u57ce\u533a","code":"371402000000"},{"area":"\u9675\u57ce\u533a","code":"371403000000"},{"area":"\u5b81\u6d25\u53bf","code":"371422000000"},{"area":"\u5e86\u4e91\u53bf","code":"371423000000"},{"area":"\u4e34\u9091\u53bf","code":"371424000000"},{"area":"\u9f50\u6cb3\u53bf","code":"371425000000"},{"area":"\u5e73\u539f\u53bf","code":"371426000000"},{"area":"\u590f\u6d25\u53bf","code":"371427000000"},{"area":"\u6b66\u57ce\u53bf","code":"371428000000"},{"area":"\u5fb7\u5dde\u5929\u8862\u65b0\u533a","code":"371471000000"},{"area":"\u4e50\u9675\u5e02","code":"371481000000"},{"area":"\u79b9\u57ce\u5e02","code":"371482000000"}]},{"city":"\u804a\u57ce\u5e02","code":"371500000000","areas":[{"area":"\u4e1c\u660c\u5e9c\u533a","code":"371502000000"},{"area":"\u830c\u5e73\u533a","code":"371503000000"},{"area":"\u9633\u8c37\u53bf","code":"371521000000"},{"area":"\u8398\u53bf","code":"371522000000"},{"area":"\u4e1c\u963f\u53bf","code":"371524000000"},{"area":"\u51a0\u53bf","code":"371525000000"},{"area":"\u9ad8\u5510\u53bf","code":"371526000000"},{"area":"\u4e34\u6e05\u5e02","code":"371581000000"}]},{"city":"\u6ee8\u5dde\u5e02","code":"371600000000","areas":[{"area":"\u6ee8\u57ce\u533a","code":"371602000000"},{"area":"\u6cbe\u5316\u533a","code":"371603000000"},{"area":"\u60e0\u6c11\u53bf","code":"371621000000"},{"area":"\u9633\u4fe1\u53bf","code":"371622000000"},{"area":"\u65e0\u68e3\u53bf","code":"371623000000"},{"area":"\u535a\u5174\u53bf","code":"371625000000"},{"area":"\u90b9\u5e73\u5e02","code":"371681000000"}]},{"city":"\u83cf\u6cfd\u5e02","code":"371700000000","areas":[{"area":"\u7261\u4e39\u533a","code":"371702000000"},{"area":"\u5b9a\u9676\u533a","code":"371703000000"},{"area":"\u66f9\u53bf","code":"371721000000"},{"area":"\u5355\u53bf","code":"371722000000"},{"area":"\u6210\u6b66\u53bf","code":"371723000000"},{"area":"\u5de8\u91ce\u53bf","code":"371724000000"},{"area":"\u90d3\u57ce\u53bf","code":"371725000000"},{"area":"\u9104\u57ce\u53bf","code":"371726000000"},{"area":"\u4e1c\u660e\u53bf","code":"371728000000"},{"area":"\u83cf\u6cfd\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"371771000000"},{"area":"\u83cf\u6cfd\u9ad8\u65b0\u6280\u672f\u5f00\u53d1\u533a","code":"371772000000"}]}]},{"province":"\u6cb3\u5357\u7701","code":"410000","citys":[{"city":"\u90d1\u5dde\u5e02","code":"410100000000","areas":[{"area":"\u4e2d\u539f\u533a","code":"410102000000"},{"area":"\u4e8c\u4e03\u533a","code":"410103000000"},{"area":"\u7ba1\u57ce\u56de\u65cf\u533a","code":"410104000000"},{"area":"\u91d1\u6c34\u533a","code":"410105000000"},{"area":"\u4e0a\u8857\u533a","code":"410106000000"},{"area":"\u60e0\u6d4e\u533a","code":"410108000000"},{"area":"\u4e2d\u725f\u53bf","code":"410122000000"},{"area":"\u90d1\u5dde\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"410171000000"},{"area":"\u90d1\u5dde\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"410172000000"},{"area":"\u90d1\u5dde\u822a\u7a7a\u6e2f\u7ecf\u6d4e\u7efc\u5408\u5b9e\u9a8c\u533a","code":"410173000000"},{"area":"\u5de9\u4e49\u5e02","code":"410181000000"},{"area":"\u8365\u9633\u5e02","code":"410182000000"},{"area":"\u65b0\u5bc6\u5e02","code":"410183000000"},{"area":"\u65b0\u90d1\u5e02","code":"410184000000"},{"area":"\u767b\u5c01\u5e02","code":"410185000000"}]},{"city":"\u5f00\u5c01\u5e02","code":"410200000000","areas":[{"area":"\u9f99\u4ead\u533a","code":"410202000000"},{"area":"\u987a\u6cb3\u56de\u65cf\u533a","code":"410203000000"},{"area":"\u9f13\u697c\u533a","code":"410204000000"},{"area":"\u79b9\u738b\u53f0\u533a","code":"410205000000"},{"area":"\u7965\u7b26\u533a","code":"410212000000"},{"area":"\u675e\u53bf","code":"410221000000"},{"area":"\u901a\u8bb8\u53bf","code":"410222000000"},{"area":"\u5c09\u6c0f\u53bf","code":"410223000000"},{"area":"\u5170\u8003\u53bf","code":"410225000000"}]},{"city":"\u6d1b\u9633\u5e02","code":"410300000000","areas":[{"area":"\u8001\u57ce\u533a","code":"410302000000"},{"area":"\u897f\u5de5\u533a","code":"410303000000"},{"area":"\u700d\u6cb3\u56de\u65cf\u533a","code":"410304000000"},{"area":"\u6da7\u897f\u533a","code":"410305000000"},{"area":"\u5043\u5e08\u533a","code":"410307000000"},{"area":"\u5b5f\u6d25\u533a","code":"410308000000"},{"area":"\u6d1b\u9f99\u533a","code":"410311000000"},{"area":"\u65b0\u5b89\u53bf","code":"410323000000"},{"area":"\u683e\u5ddd\u53bf","code":"410324000000"},{"area":"\u5d69\u53bf","code":"410325000000"},{"area":"\u6c5d\u9633\u53bf","code":"410326000000"},{"area":"\u5b9c\u9633\u53bf","code":"410327000000"},{"area":"\u6d1b\u5b81\u53bf","code":"410328000000"},{"area":"\u4f0a\u5ddd\u53bf","code":"410329000000"},{"area":"\u6d1b\u9633\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"410371000000"}]},{"city":"\u5e73\u9876\u5c71\u5e02","code":"410400000000","areas":[{"area":"\u65b0\u534e\u533a","code":"410402000000"},{"area":"\u536b\u4e1c\u533a","code":"410403000000"},{"area":"\u77f3\u9f99\u533a","code":"410404000000"},{"area":"\u6e5b\u6cb3\u533a","code":"410411000000"},{"area":"\u5b9d\u4e30\u53bf","code":"410421000000"},{"area":"\u53f6\u53bf","code":"410422000000"},{"area":"\u9c81\u5c71\u53bf","code":"410423000000"},{"area":"\u90cf\u53bf","code":"410425000000"},{"area":"\u5e73\u9876\u5c71\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"410471000000"},{"area":"\u5e73\u9876\u5c71\u5e02\u57ce\u4e61\u4e00\u4f53\u5316\u793a\u8303\u533a","code":"410472000000"},{"area":"\u821e\u94a2\u5e02","code":"410481000000"},{"area":"\u6c5d\u5dde\u5e02","code":"410482000000"}]},{"city":"\u5b89\u9633\u5e02","code":"410500000000","areas":[{"area":"\u6587\u5cf0\u533a","code":"410502000000"},{"area":"\u5317\u5173\u533a","code":"410503000000"},{"area":"\u6bb7\u90fd\u533a","code":"410505000000"},{"area":"\u9f99\u5b89\u533a","code":"410506000000"},{"area":"\u5b89\u9633\u53bf","code":"410522000000"},{"area":"\u6c64\u9634\u53bf","code":"410523000000"},{"area":"\u6ed1\u53bf","code":"410526000000"},{"area":"\u5185\u9ec4\u53bf","code":"410527000000"},{"area":"\u5b89\u9633\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"410571000000"},{"area":"\u6797\u5dde\u5e02","code":"410581000000"}]},{"city":"\u9e64\u58c1\u5e02","code":"410600000000","areas":[{"area":"\u9e64\u5c71\u533a","code":"410602000000"},{"area":"\u5c71\u57ce\u533a","code":"410603000000"},{"area":"\u6dc7\u6ee8\u533a","code":"410611000000"},{"area":"\u6d5a\u53bf","code":"410621000000"},{"area":"\u6dc7\u53bf","code":"410622000000"},{"area":"\u9e64\u58c1\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"410671000000"}]},{"city":"\u65b0\u4e61\u5e02","code":"410700000000","areas":[{"area":"\u7ea2\u65d7\u533a","code":"410702000000"},{"area":"\u536b\u6ee8\u533a","code":"410703000000"},{"area":"\u51e4\u6cc9\u533a","code":"410704000000"},{"area":"\u7267\u91ce\u533a","code":"410711000000"},{"area":"\u65b0\u4e61\u53bf","code":"410721000000"},{"area":"\u83b7\u5609\u53bf","code":"410724000000"},{"area":"\u539f\u9633\u53bf","code":"410725000000"},{"area":"\u5ef6\u6d25\u53bf","code":"410726000000"},{"area":"\u5c01\u4e18\u53bf","code":"410727000000"},{"area":"\u65b0\u4e61\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"410771000000"},{"area":"\u65b0\u4e61\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"410772000000"},{"area":"\u65b0\u4e61\u5e02\u5e73\u539f\u57ce\u4e61\u4e00\u4f53\u5316\u793a\u8303\u533a","code":"410773000000"},{"area":"\u536b\u8f89\u5e02","code":"410781000000"},{"area":"\u8f89\u53bf\u5e02","code":"410782000000"},{"area":"\u957f\u57a3\u5e02","code":"410783000000"}]},{"city":"\u7126\u4f5c\u5e02","code":"410800000000","areas":[{"area":"\u89e3\u653e\u533a","code":"410802000000"},{"area":"\u4e2d\u7ad9\u533a","code":"410803000000"},{"area":"\u9a6c\u6751\u533a","code":"410804000000"},{"area":"\u5c71\u9633\u533a","code":"410811000000"},{"area":"\u4fee\u6b66\u53bf","code":"410821000000"},{"area":"\u535a\u7231\u53bf","code":"410822000000"},{"area":"\u6b66\u965f\u53bf","code":"410823000000"},{"area":"\u6e29\u53bf","code":"410825000000"},{"area":"\u7126\u4f5c\u57ce\u4e61\u4e00\u4f53\u5316\u793a\u8303\u533a","code":"410871000000"},{"area":"\u6c81\u9633\u5e02","code":"410882000000"},{"area":"\u5b5f\u5dde\u5e02","code":"410883000000"}]},{"city":"\u6fee\u9633\u5e02","code":"410900000000","areas":[{"area":"\u534e\u9f99\u533a","code":"410902000000"},{"area":"\u6e05\u4e30\u53bf","code":"410922000000"},{"area":"\u5357\u4e50\u53bf","code":"410923000000"},{"area":"\u8303\u53bf","code":"410926000000"},{"area":"\u53f0\u524d\u53bf","code":"410927000000"},{"area":"\u6fee\u9633\u53bf","code":"410928000000"},{"area":"\u6cb3\u5357\u6fee\u9633\u5de5\u4e1a\u56ed\u533a","code":"410971000000"},{"area":"\u6fee\u9633\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"410972000000"}]},{"city":"\u8bb8\u660c\u5e02","code":"411000000000","areas":[{"area":"\u9b4f\u90fd\u533a","code":"411002000000"},{"area":"\u5efa\u5b89\u533a","code":"411003000000"},{"area":"\u9122\u9675\u53bf","code":"411024000000"},{"area":"\u8944\u57ce\u53bf","code":"411025000000"},{"area":"\u8bb8\u660c\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"411071000000"},{"area":"\u79b9\u5dde\u5e02","code":"411081000000"},{"area":"\u957f\u845b\u5e02","code":"411082000000"}]},{"city":"\u6f2f\u6cb3\u5e02","code":"411100000000","areas":[{"area":"\u6e90\u6c47\u533a","code":"411102000000"},{"area":"\u90fe\u57ce\u533a","code":"411103000000"},{"area":"\u53ec\u9675\u533a","code":"411104000000"},{"area":"\u821e\u9633\u53bf","code":"411121000000"},{"area":"\u4e34\u988d\u53bf","code":"411122000000"},{"area":"\u6f2f\u6cb3\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"411171000000"}]},{"city":"\u4e09\u95e8\u5ce1\u5e02","code":"411200000000","areas":[{"area":"\u6e56\u6ee8\u533a","code":"411202000000"},{"area":"\u9655\u5dde\u533a","code":"411203000000"},{"area":"\u6e11\u6c60\u53bf","code":"411221000000"},{"area":"\u5362\u6c0f\u53bf","code":"411224000000"},{"area":"\u6cb3\u5357\u4e09\u95e8\u5ce1\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"411271000000"},{"area":"\u4e49\u9a6c\u5e02","code":"411281000000"},{"area":"\u7075\u5b9d\u5e02","code":"411282000000"}]},{"city":"\u5357\u9633\u5e02","code":"411300000000","areas":[{"area":"\u5b9b\u57ce\u533a","code":"411302000000"},{"area":"\u5367\u9f99\u533a","code":"411303000000"},{"area":"\u5357\u53ec\u53bf","code":"411321000000"},{"area":"\u65b9\u57ce\u53bf","code":"411322000000"},{"area":"\u897f\u5ce1\u53bf","code":"411323000000"},{"area":"\u9547\u5e73\u53bf","code":"411324000000"},{"area":"\u5185\u4e61\u53bf","code":"411325000000"},{"area":"\u6dc5\u5ddd\u53bf","code":"411326000000"},{"area":"\u793e\u65d7\u53bf","code":"411327000000"},{"area":"\u5510\u6cb3\u53bf","code":"411328000000"},{"area":"\u65b0\u91ce\u53bf","code":"411329000000"},{"area":"\u6850\u67cf\u53bf","code":"411330000000"},{"area":"\u5357\u9633\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"411371000000"},{"area":"\u5357\u9633\u5e02\u57ce\u4e61\u4e00\u4f53\u5316\u793a\u8303\u533a","code":"411372000000"},{"area":"\u9093\u5dde\u5e02","code":"411381000000"}]},{"city":"\u5546\u4e18\u5e02","code":"411400000000","areas":[{"area":"\u6881\u56ed\u533a","code":"411402000000"},{"area":"\u7762\u9633\u533a","code":"411403000000"},{"area":"\u6c11\u6743\u53bf","code":"411421000000"},{"area":"\u7762\u53bf","code":"411422000000"},{"area":"\u5b81\u9675\u53bf","code":"411423000000"},{"area":"\u67d8\u57ce\u53bf","code":"411424000000"},{"area":"\u865e\u57ce\u53bf","code":"411425000000"},{"area":"\u590f\u9091\u53bf","code":"411426000000"},{"area":"\u8c6b\u4e1c\u7efc\u5408\u7269\u6d41\u4ea7\u4e1a\u805a\u96c6\u533a","code":"411471000000"},{"area":"\u6cb3\u5357\u5546\u4e18\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"411472000000"},{"area":"\u6c38\u57ce\u5e02","code":"411481000000"}]},{"city":"\u4fe1\u9633\u5e02","code":"411500000000","areas":[{"area":"\u6d49\u6cb3\u533a","code":"411502000000"},{"area":"\u5e73\u6865\u533a","code":"411503000000"},{"area":"\u7f57\u5c71\u53bf","code":"411521000000"},{"area":"\u5149\u5c71\u53bf","code":"411522000000"},{"area":"\u65b0\u53bf","code":"411523000000"},{"area":"\u5546\u57ce\u53bf","code":"411524000000"},{"area":"\u56fa\u59cb\u53bf","code":"411525000000"},{"area":"\u6f62\u5ddd\u53bf","code":"411526000000"},{"area":"\u6dee\u6ee8\u53bf","code":"411527000000"},{"area":"\u606f\u53bf","code":"411528000000"},{"area":"\u4fe1\u9633\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u5f00\u53d1\u533a","code":"411571000000"}]},{"city":"\u5468\u53e3\u5e02","code":"411600000000","areas":[{"area":"\u5ddd\u6c47\u533a","code":"411602000000"},{"area":"\u6dee\u9633\u533a","code":"411603000000"},{"area":"\u6276\u6c9f\u53bf","code":"411621000000"},{"area":"\u897f\u534e\u53bf","code":"411622000000"},{"area":"\u5546\u6c34\u53bf","code":"411623000000"},{"area":"\u6c88\u4e18\u53bf","code":"411624000000"},{"area":"\u90f8\u57ce\u53bf","code":"411625000000"},{"area":"\u592a\u5eb7\u53bf","code":"411627000000"},{"area":"\u9e7f\u9091\u53bf","code":"411628000000"},{"area":"\u5468\u53e3\u4e34\u6e2f\u5f00\u53d1\u533a","code":"411671000000"},{"area":"\u9879\u57ce\u5e02","code":"411681000000"}]},{"city":"\u9a7b\u9a6c\u5e97\u5e02","code":"411700000000","areas":[{"area":"\u9a7f\u57ce\u533a","code":"411702000000"},{"area":"\u897f\u5e73\u53bf","code":"411721000000"},{"area":"\u4e0a\u8521\u53bf","code":"411722000000"},{"area":"\u5e73\u8206\u53bf","code":"411723000000"},{"area":"\u6b63\u9633\u53bf","code":"411724000000"},{"area":"\u786e\u5c71\u53bf","code":"411725000000"},{"area":"\u6ccc\u9633\u53bf","code":"411726000000"},{"area":"\u6c5d\u5357\u53bf","code":"411727000000"},{"area":"\u9042\u5e73\u53bf","code":"411728000000"},{"area":"\u65b0\u8521\u53bf","code":"411729000000"},{"area":"\u6cb3\u5357\u9a7b\u9a6c\u5e97\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"411771000000"}]},{"city":"\u7701\u76f4\u8f96\u53bf\u7ea7\u884c\u653f\u533a\u5212","code":"419000000000","areas":[{"area":"\u6d4e\u6e90\u5e02","code":"419001000000"}]}]},{"province":"\u6e56\u5317\u7701","code":"420000","citys":[{"city":"\u6b66\u6c49\u5e02","code":"420100000000","areas":[{"area":"\u6c5f\u5cb8\u533a","code":"420102000000"},{"area":"\u6c5f\u6c49\u533a","code":"420103000000"},{"area":"\u785a\u53e3\u533a","code":"420104000000"},{"area":"\u6c49\u9633\u533a","code":"420105000000"},{"area":"\u6b66\u660c\u533a","code":"420106000000"},{"area":"\u9752\u5c71\u533a","code":"420107000000"},{"area":"\u6d2a\u5c71\u533a","code":"420111000000"},{"area":"\u4e1c\u897f\u6e56\u533a","code":"420112000000"},{"area":"\u6c49\u5357\u533a","code":"420113000000"},{"area":"\u8521\u7538\u533a","code":"420114000000"},{"area":"\u6c5f\u590f\u533a","code":"420115000000"},{"area":"\u9ec4\u9642\u533a","code":"420116000000"},{"area":"\u65b0\u6d32\u533a","code":"420117000000"}]},{"city":"\u9ec4\u77f3\u5e02","code":"420200000000","areas":[{"area":"\u9ec4\u77f3\u6e2f\u533a","code":"420202000000"},{"area":"\u897f\u585e\u5c71\u533a","code":"420203000000"},{"area":"\u4e0b\u9646\u533a","code":"420204000000"},{"area":"\u94c1\u5c71\u533a","code":"420205000000"},{"area":"\u9633\u65b0\u53bf","code":"420222000000"},{"area":"\u5927\u51b6\u5e02","code":"420281000000"}]},{"city":"\u5341\u5830\u5e02","code":"420300000000","areas":[{"area":"\u8305\u7bad\u533a","code":"420302000000"},{"area":"\u5f20\u6e7e\u533a","code":"420303000000"},{"area":"\u90e7\u9633\u533a","code":"420304000000"},{"area":"\u90e7\u897f\u53bf","code":"420322000000"},{"area":"\u7af9\u5c71\u53bf","code":"420323000000"},{"area":"\u7af9\u6eaa\u53bf","code":"420324000000"},{"area":"\u623f\u53bf","code":"420325000000"},{"area":"\u4e39\u6c5f\u53e3\u5e02","code":"420381000000"}]},{"city":"\u5b9c\u660c\u5e02","code":"420500000000","areas":[{"area":"\u897f\u9675\u533a","code":"420502000000"},{"area":"\u4f0d\u5bb6\u5c97\u533a","code":"420503000000"},{"area":"\u70b9\u519b\u533a","code":"420504000000"},{"area":"\u7307\u4ead\u533a","code":"420505000000"},{"area":"\u5937\u9675\u533a","code":"420506000000"},{"area":"\u8fdc\u5b89\u53bf","code":"420525000000"},{"area":"\u5174\u5c71\u53bf","code":"420526000000"},{"area":"\u79ed\u5f52\u53bf","code":"420527000000"},{"area":"\u957f\u9633\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","code":"420528000000"},{"area":"\u4e94\u5cf0\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","code":"420529000000"},{"area":"\u5b9c\u90fd\u5e02","code":"420581000000"},{"area":"\u5f53\u9633\u5e02","code":"420582000000"},{"area":"\u679d\u6c5f\u5e02","code":"420583000000"}]},{"city":"\u8944\u9633\u5e02","code":"420600000000","areas":[{"area":"\u8944\u57ce\u533a","code":"420602000000"},{"area":"\u6a0a\u57ce\u533a","code":"420606000000"},{"area":"\u8944\u5dde\u533a","code":"420607000000"},{"area":"\u5357\u6f33\u53bf","code":"420624000000"},{"area":"\u8c37\u57ce\u53bf","code":"420625000000"},{"area":"\u4fdd\u5eb7\u53bf","code":"420626000000"},{"area":"\u8001\u6cb3\u53e3\u5e02","code":"420682000000"},{"area":"\u67a3\u9633\u5e02","code":"420683000000"},{"area":"\u5b9c\u57ce\u5e02","code":"420684000000"}]},{"city":"\u9102\u5dde\u5e02","code":"420700000000","areas":[{"area":"\u6881\u5b50\u6e56\u533a","code":"420702000000"},{"area":"\u534e\u5bb9\u533a","code":"420703000000"},{"area":"\u9102\u57ce\u533a","code":"420704000000"}]},{"city":"\u8346\u95e8\u5e02","code":"420800000000","areas":[{"area":"\u4e1c\u5b9d\u533a","code":"420802000000"},{"area":"\u6387\u5200\u533a","code":"420804000000"},{"area":"\u6c99\u6d0b\u53bf","code":"420822000000"},{"area":"\u949f\u7965\u5e02","code":"420881000000"},{"area":"\u4eac\u5c71\u5e02","code":"420882000000"}]},{"city":"\u5b5d\u611f\u5e02","code":"420900000000","areas":[{"area":"\u5b5d\u5357\u533a","code":"420902000000"},{"area":"\u5b5d\u660c\u53bf","code":"420921000000"},{"area":"\u5927\u609f\u53bf","code":"420922000000"},{"area":"\u4e91\u68a6\u53bf","code":"420923000000"},{"area":"\u5e94\u57ce\u5e02","code":"420981000000"},{"area":"\u5b89\u9646\u5e02","code":"420982000000"},{"area":"\u6c49\u5ddd\u5e02","code":"420984000000"}]},{"city":"\u8346\u5dde\u5e02","code":"421000000000","areas":[{"area":"\u6c99\u5e02\u533a","code":"421002000000"},{"area":"\u8346\u5dde\u533a","code":"421003000000"},{"area":"\u516c\u5b89\u53bf","code":"421022000000"},{"area":"\u6c5f\u9675\u53bf","code":"421024000000"},{"area":"\u8346\u5dde\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"421071000000"},{"area":"\u77f3\u9996\u5e02","code":"421081000000"},{"area":"\u6d2a\u6e56\u5e02","code":"421083000000"},{"area":"\u677e\u6ecb\u5e02","code":"421087000000"},{"area":"\u76d1\u5229\u5e02","code":"421088000000"}]},{"city":"\u9ec4\u5188\u5e02","code":"421100000000","areas":[{"area":"\u9ec4\u5dde\u533a","code":"421102000000"},{"area":"\u56e2\u98ce\u53bf","code":"421121000000"},{"area":"\u7ea2\u5b89\u53bf","code":"421122000000"},{"area":"\u7f57\u7530\u53bf","code":"421123000000"},{"area":"\u82f1\u5c71\u53bf","code":"421124000000"},{"area":"\u6d60\u6c34\u53bf","code":"421125000000"},{"area":"\u8572\u6625\u53bf","code":"421126000000"},{"area":"\u9ec4\u6885\u53bf","code":"421127000000"},{"area":"\u9f99\u611f\u6e56\u7ba1\u7406\u533a","code":"421171000000"},{"area":"\u9ebb\u57ce\u5e02","code":"421181000000"},{"area":"\u6b66\u7a74\u5e02","code":"421182000000"}]},{"city":"\u54b8\u5b81\u5e02","code":"421200000000","areas":[{"area":"\u54b8\u5b89\u533a","code":"421202000000"},{"area":"\u5609\u9c7c\u53bf","code":"421221000000"},{"area":"\u901a\u57ce\u53bf","code":"421222000000"},{"area":"\u5d07\u9633\u53bf","code":"421223000000"},{"area":"\u901a\u5c71\u53bf","code":"421224000000"},{"area":"\u8d64\u58c1\u5e02","code":"421281000000"}]},{"city":"\u968f\u5dde\u5e02","code":"421300000000","areas":[{"area":"\u66fe\u90fd\u533a","code":"421303000000"},{"area":"\u968f\u53bf","code":"421321000000"},{"area":"\u5e7f\u6c34\u5e02","code":"421381000000"}]},{"city":"\u6069\u65bd\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","code":"422800000000","areas":[{"area":"\u6069\u65bd\u5e02","code":"422801000000"},{"area":"\u5229\u5ddd\u5e02","code":"422802000000"},{"area":"\u5efa\u59cb\u53bf","code":"422822000000"},{"area":"\u5df4\u4e1c\u53bf","code":"422823000000"},{"area":"\u5ba3\u6069\u53bf","code":"422825000000"},{"area":"\u54b8\u4e30\u53bf","code":"422826000000"},{"area":"\u6765\u51e4\u53bf","code":"422827000000"},{"area":"\u9e64\u5cf0\u53bf","code":"422828000000"}]},{"city":"\u7701\u76f4\u8f96\u53bf\u7ea7\u884c\u653f\u533a\u5212","code":"429000000000","areas":[{"area":"\u4ed9\u6843\u5e02","code":"429004000000"},{"area":"\u6f5c\u6c5f\u5e02","code":"429005000000"},{"area":"\u5929\u95e8\u5e02","code":"429006000000"},{"area":"\u795e\u519c\u67b6\u6797\u533a","code":"429021000000"}]}]},{"province":"\u6e56\u5357\u7701","code":"430000","citys":[{"city":"\u957f\u6c99\u5e02","code":"430100000000","areas":[{"area":"\u8299\u84c9\u533a","code":"430102000000"},{"area":"\u5929\u5fc3\u533a","code":"430103000000"},{"area":"\u5cb3\u9e93\u533a","code":"430104000000"},{"area":"\u5f00\u798f\u533a","code":"430105000000"},{"area":"\u96e8\u82b1\u533a","code":"430111000000"},{"area":"\u671b\u57ce\u533a","code":"430112000000"},{"area":"\u957f\u6c99\u53bf","code":"430121000000"},{"area":"\u6d4f\u9633\u5e02","code":"430181000000"},{"area":"\u5b81\u4e61\u5e02","code":"430182000000"}]},{"city":"\u682a\u6d32\u5e02","code":"430200000000","areas":[{"area":"\u8377\u5858\u533a","code":"430202000000"},{"area":"\u82a6\u6dde\u533a","code":"430203000000"},{"area":"\u77f3\u5cf0\u533a","code":"430204000000"},{"area":"\u5929\u5143\u533a","code":"430211000000"},{"area":"\u6e0c\u53e3\u533a","code":"430212000000"},{"area":"\u6538\u53bf","code":"430223000000"},{"area":"\u8336\u9675\u53bf","code":"430224000000"},{"area":"\u708e\u9675\u53bf","code":"430225000000"},{"area":"\u91b4\u9675\u5e02","code":"430281000000"}]},{"city":"\u6e58\u6f6d\u5e02","code":"430300000000","areas":[{"area":"\u96e8\u6e56\u533a","code":"430302000000"},{"area":"\u5cb3\u5858\u533a","code":"430304000000"},{"area":"\u6e58\u6f6d\u53bf","code":"430321000000"},{"area":"\u6e56\u5357\u6e58\u6f6d\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u56ed\u533a","code":"430371000000"},{"area":"\u6e58\u6f6d\u662d\u5c71\u793a\u8303\u533a","code":"430372000000"},{"area":"\u6e58\u6f6d\u4e5d\u534e\u793a\u8303\u533a","code":"430373000000"},{"area":"\u6e58\u4e61\u5e02","code":"430381000000"},{"area":"\u97f6\u5c71\u5e02","code":"430382000000"}]},{"city":"\u8861\u9633\u5e02","code":"430400000000","areas":[{"area":"\u73e0\u6656\u533a","code":"430405000000"},{"area":"\u96c1\u5cf0\u533a","code":"430406000000"},{"area":"\u77f3\u9f13\u533a","code":"430407000000"},{"area":"\u84b8\u6e58\u533a","code":"430408000000"},{"area":"\u5357\u5cb3\u533a","code":"430412000000"},{"area":"\u8861\u9633\u53bf","code":"430421000000"},{"area":"\u8861\u5357\u53bf","code":"430422000000"},{"area":"\u8861\u5c71\u53bf","code":"430423000000"},{"area":"\u8861\u4e1c\u53bf","code":"430424000000"},{"area":"\u7941\u4e1c\u53bf","code":"430426000000"},{"area":"\u6e56\u5357\u8861\u9633\u677e\u6728\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"430473000000"},{"area":"\u6e56\u5357\u8861\u9633\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u56ed\u533a","code":"430476000000"},{"area":"\u8012\u9633\u5e02","code":"430481000000"},{"area":"\u5e38\u5b81\u5e02","code":"430482000000"}]},{"city":"\u90b5\u9633\u5e02","code":"430500000000","areas":[{"area":"\u53cc\u6e05\u533a","code":"430502000000"},{"area":"\u5927\u7965\u533a","code":"430503000000"},{"area":"\u5317\u5854\u533a","code":"430511000000"},{"area":"\u65b0\u90b5\u53bf","code":"430522000000"},{"area":"\u90b5\u9633\u53bf","code":"430523000000"},{"area":"\u9686\u56de\u53bf","code":"430524000000"},{"area":"\u6d1e\u53e3\u53bf","code":"430525000000"},{"area":"\u7ee5\u5b81\u53bf","code":"430527000000"},{"area":"\u65b0\u5b81\u53bf","code":"430528000000"},{"area":"\u57ce\u6b65\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"430529000000"},{"area":"\u6b66\u5188\u5e02","code":"430581000000"},{"area":"\u90b5\u4e1c\u5e02","code":"430582000000"}]},{"city":"\u5cb3\u9633\u5e02","code":"430600000000","areas":[{"area":"\u5cb3\u9633\u697c\u533a","code":"430602000000"},{"area":"\u4e91\u6eaa\u533a","code":"430603000000"},{"area":"\u541b\u5c71\u533a","code":"430611000000"},{"area":"\u5cb3\u9633\u53bf","code":"430621000000"},{"area":"\u534e\u5bb9\u53bf","code":"430623000000"},{"area":"\u6e58\u9634\u53bf","code":"430624000000"},{"area":"\u5e73\u6c5f\u53bf","code":"430626000000"},{"area":"\u5cb3\u9633\u5e02\u5c48\u539f\u7ba1\u7406\u533a","code":"430671000000"},{"area":"\u6c68\u7f57\u5e02","code":"430681000000"},{"area":"\u4e34\u6e58\u5e02","code":"430682000000"}]},{"city":"\u5e38\u5fb7\u5e02","code":"430700000000","areas":[{"area":"\u6b66\u9675\u533a","code":"430702000000"},{"area":"\u9f0e\u57ce\u533a","code":"430703000000"},{"area":"\u5b89\u4e61\u53bf","code":"430721000000"},{"area":"\u6c49\u5bff\u53bf","code":"430722000000"},{"area":"\u6fa7\u53bf","code":"430723000000"},{"area":"\u4e34\u6fa7\u53bf","code":"430724000000"},{"area":"\u6843\u6e90\u53bf","code":"430725000000"},{"area":"\u77f3\u95e8\u53bf","code":"430726000000"},{"area":"\u5e38\u5fb7\u5e02\u897f\u6d1e\u5ead\u7ba1\u7406\u533a","code":"430771000000"},{"area":"\u6d25\u5e02\u5e02","code":"430781000000"}]},{"city":"\u5f20\u5bb6\u754c\u5e02","code":"430800000000","areas":[{"area":"\u6c38\u5b9a\u533a","code":"430802000000"},{"area":"\u6b66\u9675\u6e90\u533a","code":"430811000000"},{"area":"\u6148\u5229\u53bf","code":"430821000000"},{"area":"\u6851\u690d\u53bf","code":"430822000000"}]},{"city":"\u76ca\u9633\u5e02","code":"430900000000","areas":[{"area":"\u8d44\u9633\u533a","code":"430902000000"},{"area":"\u8d6b\u5c71\u533a","code":"430903000000"},{"area":"\u5357\u53bf","code":"430921000000"},{"area":"\u6843\u6c5f\u53bf","code":"430922000000"},{"area":"\u5b89\u5316\u53bf","code":"430923000000"},{"area":"\u76ca\u9633\u5e02\u5927\u901a\u6e56\u7ba1\u7406\u533a","code":"430971000000"},{"area":"\u6e56\u5357\u76ca\u9633\u9ad8\u65b0\u6280\u672f\u4ea7\u4e1a\u56ed\u533a","code":"430972000000"},{"area":"\u6c85\u6c5f\u5e02","code":"430981000000"}]},{"city":"\u90f4\u5dde\u5e02","code":"431000000000","areas":[{"area":"\u5317\u6e56\u533a","code":"431002000000"},{"area":"\u82cf\u4ed9\u533a","code":"431003000000"},{"area":"\u6842\u9633\u53bf","code":"431021000000"},{"area":"\u5b9c\u7ae0\u53bf","code":"431022000000"},{"area":"\u6c38\u5174\u53bf","code":"431023000000"},{"area":"\u5609\u79be\u53bf","code":"431024000000"},{"area":"\u4e34\u6b66\u53bf","code":"431025000000"},{"area":"\u6c5d\u57ce\u53bf","code":"431026000000"},{"area":"\u6842\u4e1c\u53bf","code":"431027000000"},{"area":"\u5b89\u4ec1\u53bf","code":"431028000000"},{"area":"\u8d44\u5174\u5e02","code":"431081000000"}]},{"city":"\u6c38\u5dde\u5e02","code":"431100000000","areas":[{"area":"\u96f6\u9675\u533a","code":"431102000000"},{"area":"\u51b7\u6c34\u6ee9\u533a","code":"431103000000"},{"area":"\u4e1c\u5b89\u53bf","code":"431122000000"},{"area":"\u53cc\u724c\u53bf","code":"431123000000"},{"area":"\u9053\u53bf","code":"431124000000"},{"area":"\u6c5f\u6c38\u53bf","code":"431125000000"},{"area":"\u5b81\u8fdc\u53bf","code":"431126000000"},{"area":"\u84dd\u5c71\u53bf","code":"431127000000"},{"area":"\u65b0\u7530\u53bf","code":"431128000000"},{"area":"\u6c5f\u534e\u7476\u65cf\u81ea\u6cbb\u53bf","code":"431129000000"},{"area":"\u6c38\u5dde\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"431171000000"},{"area":"\u6c38\u5dde\u5e02\u56de\u9f99\u5729\u7ba1\u7406\u533a","code":"431173000000"},{"area":"\u7941\u9633\u5e02","code":"431181000000"}]},{"city":"\u6000\u5316\u5e02","code":"431200000000","areas":[{"area":"\u9e64\u57ce\u533a","code":"431202000000"},{"area":"\u4e2d\u65b9\u53bf","code":"431221000000"},{"area":"\u6c85\u9675\u53bf","code":"431222000000"},{"area":"\u8fb0\u6eaa\u53bf","code":"431223000000"},{"area":"\u6e86\u6d66\u53bf","code":"431224000000"},{"area":"\u4f1a\u540c\u53bf","code":"431225000000"},{"area":"\u9ebb\u9633\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"431226000000"},{"area":"\u65b0\u6643\u4f97\u65cf\u81ea\u6cbb\u53bf","code":"431227000000"},{"area":"\u82b7\u6c5f\u4f97\u65cf\u81ea\u6cbb\u53bf","code":"431228000000"},{"area":"\u9756\u5dde\u82d7\u65cf\u4f97\u65cf\u81ea\u6cbb\u53bf","code":"431229000000"},{"area":"\u901a\u9053\u4f97\u65cf\u81ea\u6cbb\u53bf","code":"431230000000"},{"area":"\u6000\u5316\u5e02\u6d2a\u6c5f\u7ba1\u7406\u533a","code":"431271000000"},{"area":"\u6d2a\u6c5f\u5e02","code":"431281000000"}]},{"city":"\u5a04\u5e95\u5e02","code":"431300000000","areas":[{"area":"\u5a04\u661f\u533a","code":"431302000000"},{"area":"\u53cc\u5cf0\u53bf","code":"431321000000"},{"area":"\u65b0\u5316\u53bf","code":"431322000000"},{"area":"\u51b7\u6c34\u6c5f\u5e02","code":"431381000000"},{"area":"\u6d9f\u6e90\u5e02","code":"431382000000"}]},{"city":"\u6e58\u897f\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","code":"433100000000","areas":[{"area":"\u5409\u9996\u5e02","code":"433101000000"},{"area":"\u6cf8\u6eaa\u53bf","code":"433122000000"},{"area":"\u51e4\u51f0\u53bf","code":"433123000000"},{"area":"\u82b1\u57a3\u53bf","code":"433124000000"},{"area":"\u4fdd\u9756\u53bf","code":"433125000000"},{"area":"\u53e4\u4e08\u53bf","code":"433126000000"},{"area":"\u6c38\u987a\u53bf","code":"433127000000"},{"area":"\u9f99\u5c71\u53bf","code":"433130000000"}]}]},{"province":"\u5e7f\u4e1c\u7701","code":"440000","citys":[{"city":"\u5e7f\u5dde\u5e02","code":"440100000000","areas":[{"area":"\u8354\u6e7e\u533a","code":"440103000000"},{"area":"\u8d8a\u79c0\u533a","code":"440104000000"},{"area":"\u6d77\u73e0\u533a","code":"440105000000"},{"area":"\u5929\u6cb3\u533a","code":"440106000000"},{"area":"\u767d\u4e91\u533a","code":"440111000000"},{"area":"\u9ec4\u57d4\u533a","code":"440112000000"},{"area":"\u756a\u79ba\u533a","code":"440113000000"},{"area":"\u82b1\u90fd\u533a","code":"440114000000"},{"area":"\u5357\u6c99\u533a","code":"440115000000"},{"area":"\u4ece\u5316\u533a","code":"440117000000"},{"area":"\u589e\u57ce\u533a","code":"440118000000"}]},{"city":"\u97f6\u5173\u5e02","code":"440200000000","areas":[{"area":"\u6b66\u6c5f\u533a","code":"440203000000"},{"area":"\u6d48\u6c5f\u533a","code":"440204000000"},{"area":"\u66f2\u6c5f\u533a","code":"440205000000"},{"area":"\u59cb\u5174\u53bf","code":"440222000000"},{"area":"\u4ec1\u5316\u53bf","code":"440224000000"},{"area":"\u7fc1\u6e90\u53bf","code":"440229000000"},{"area":"\u4e73\u6e90\u7476\u65cf\u81ea\u6cbb\u53bf","code":"440232000000"},{"area":"\u65b0\u4e30\u53bf","code":"440233000000"},{"area":"\u4e50\u660c\u5e02","code":"440281000000"},{"area":"\u5357\u96c4\u5e02","code":"440282000000"}]},{"city":"\u6df1\u5733\u5e02","code":"440300000000","areas":[{"area":"\u7f57\u6e56\u533a","code":"440303000000"},{"area":"\u798f\u7530\u533a","code":"440304000000"},{"area":"\u5357\u5c71\u533a","code":"440305000000"},{"area":"\u5b9d\u5b89\u533a","code":"440306000000"},{"area":"\u9f99\u5c97\u533a","code":"440307000000"},{"area":"\u76d0\u7530\u533a","code":"440308000000"},{"area":"\u9f99\u534e\u533a","code":"440309000000"},{"area":"\u576a\u5c71\u533a","code":"440310000000"},{"area":"\u5149\u660e\u533a","code":"440311000000"}]},{"city":"\u73e0\u6d77\u5e02","code":"440400000000","areas":[{"area":"\u9999\u6d32\u533a","code":"440402000000"},{"area":"\u6597\u95e8\u533a","code":"440403000000"},{"area":"\u91d1\u6e7e\u533a","code":"440404000000"}]},{"city":"\u6c55\u5934\u5e02","code":"440500000000","areas":[{"area":"\u9f99\u6e56\u533a","code":"440507000000"},{"area":"\u91d1\u5e73\u533a","code":"440511000000"},{"area":"\u6fe0\u6c5f\u533a","code":"440512000000"},{"area":"\u6f6e\u9633\u533a","code":"440513000000"},{"area":"\u6f6e\u5357\u533a","code":"440514000000"},{"area":"\u6f84\u6d77\u533a","code":"440515000000"},{"area":"\u5357\u6fb3\u53bf","code":"440523000000"}]},{"city":"\u4f5b\u5c71\u5e02","code":"440600000000","areas":[{"area":"\u7985\u57ce\u533a","code":"440604000000"},{"area":"\u5357\u6d77\u533a","code":"440605000000"},{"area":"\u987a\u5fb7\u533a","code":"440606000000"},{"area":"\u4e09\u6c34\u533a","code":"440607000000"},{"area":"\u9ad8\u660e\u533a","code":"440608000000"}]},{"city":"\u6c5f\u95e8\u5e02","code":"440700000000","areas":[{"area":"\u84ec\u6c5f\u533a","code":"440703000000"},{"area":"\u6c5f\u6d77\u533a","code":"440704000000"},{"area":"\u65b0\u4f1a\u533a","code":"440705000000"},{"area":"\u53f0\u5c71\u5e02","code":"440781000000"},{"area":"\u5f00\u5e73\u5e02","code":"440783000000"},{"area":"\u9e64\u5c71\u5e02","code":"440784000000"},{"area":"\u6069\u5e73\u5e02","code":"440785000000"}]},{"city":"\u6e5b\u6c5f\u5e02","code":"440800000000","areas":[{"area":"\u8d64\u574e\u533a","code":"440802000000"},{"area":"\u971e\u5c71\u533a","code":"440803000000"},{"area":"\u5761\u5934\u533a","code":"440804000000"},{"area":"\u9ebb\u7ae0\u533a","code":"440811000000"},{"area":"\u9042\u6eaa\u53bf","code":"440823000000"},{"area":"\u5f90\u95fb\u53bf","code":"440825000000"},{"area":"\u5ec9\u6c5f\u5e02","code":"440881000000"},{"area":"\u96f7\u5dde\u5e02","code":"440882000000"},{"area":"\u5434\u5ddd\u5e02","code":"440883000000"}]},{"city":"\u8302\u540d\u5e02","code":"440900000000","areas":[{"area":"\u8302\u5357\u533a","code":"440902000000"},{"area":"\u7535\u767d\u533a","code":"440904000000"},{"area":"\u9ad8\u5dde\u5e02","code":"440981000000"},{"area":"\u5316\u5dde\u5e02","code":"440982000000"},{"area":"\u4fe1\u5b9c\u5e02","code":"440983000000"}]},{"city":"\u8087\u5e86\u5e02","code":"441200000000","areas":[{"area":"\u7aef\u5dde\u533a","code":"441202000000"},{"area":"\u9f0e\u6e56\u533a","code":"441203000000"},{"area":"\u9ad8\u8981\u533a","code":"441204000000"},{"area":"\u5e7f\u5b81\u53bf","code":"441223000000"},{"area":"\u6000\u96c6\u53bf","code":"441224000000"},{"area":"\u5c01\u5f00\u53bf","code":"441225000000"},{"area":"\u5fb7\u5e86\u53bf","code":"441226000000"},{"area":"\u56db\u4f1a\u5e02","code":"441284000000"}]},{"city":"\u60e0\u5dde\u5e02","code":"441300000000","areas":[{"area":"\u60e0\u57ce\u533a","code":"441302000000"},{"area":"\u60e0\u9633\u533a","code":"441303000000"},{"area":"\u535a\u7f57\u53bf","code":"441322000000"},{"area":"\u60e0\u4e1c\u53bf","code":"441323000000"},{"area":"\u9f99\u95e8\u53bf","code":"441324000000"}]},{"city":"\u6885\u5dde\u5e02","code":"441400000000","areas":[{"area":"\u6885\u6c5f\u533a","code":"441402000000"},{"area":"\u6885\u53bf\u533a","code":"441403000000"},{"area":"\u5927\u57d4\u53bf","code":"441422000000"},{"area":"\u4e30\u987a\u53bf","code":"441423000000"},{"area":"\u4e94\u534e\u53bf","code":"441424000000"},{"area":"\u5e73\u8fdc\u53bf","code":"441426000000"},{"area":"\u8549\u5cad\u53bf","code":"441427000000"},{"area":"\u5174\u5b81\u5e02","code":"441481000000"}]},{"city":"\u6c55\u5c3e\u5e02","code":"441500000000","areas":[{"area":"\u57ce\u533a","code":"441502000000"},{"area":"\u6d77\u4e30\u53bf","code":"441521000000"},{"area":"\u9646\u6cb3\u53bf","code":"441523000000"},{"area":"\u9646\u4e30\u5e02","code":"441581000000"}]},{"city":"\u6cb3\u6e90\u5e02","code":"441600000000","areas":[{"area":"\u6e90\u57ce\u533a","code":"441602000000"},{"area":"\u7d2b\u91d1\u53bf","code":"441621000000"},{"area":"\u9f99\u5ddd\u53bf","code":"441622000000"},{"area":"\u8fde\u5e73\u53bf","code":"441623000000"},{"area":"\u548c\u5e73\u53bf","code":"441624000000"},{"area":"\u4e1c\u6e90\u53bf","code":"441625000000"}]},{"city":"\u9633\u6c5f\u5e02","code":"441700000000","areas":[{"area":"\u6c5f\u57ce\u533a","code":"441702000000"},{"area":"\u9633\u4e1c\u533a","code":"441704000000"},{"area":"\u9633\u897f\u53bf","code":"441721000000"},{"area":"\u9633\u6625\u5e02","code":"441781000000"}]},{"city":"\u6e05\u8fdc\u5e02","code":"441800000000","areas":[{"area":"\u6e05\u57ce\u533a","code":"441802000000"},{"area":"\u6e05\u65b0\u533a","code":"441803000000"},{"area":"\u4f5b\u5188\u53bf","code":"441821000000"},{"area":"\u9633\u5c71\u53bf","code":"441823000000"},{"area":"\u8fde\u5c71\u58ee\u65cf\u7476\u65cf\u81ea\u6cbb\u53bf","code":"441825000000"},{"area":"\u8fde\u5357\u7476\u65cf\u81ea\u6cbb\u53bf","code":"441826000000"},{"area":"\u82f1\u5fb7\u5e02","code":"441881000000"},{"area":"\u8fde\u5dde\u5e02","code":"441882000000"}]},{"city":"\u4e1c\u839e\u5e02","code":"441900000000","areas":[{"area":"\u4e1c\u57ce\u8857\u9053","code":"441900003000"},{"area":"\u5357\u57ce\u8857\u9053","code":"441900004000"},{"area":"\u4e07\u6c5f\u8857\u9053","code":"441900005000"},{"area":"\u839e\u57ce\u8857\u9053","code":"441900006000"},{"area":"\u77f3\u78a3\u9547","code":"441900101000"},{"area":"\u77f3\u9f99\u9547","code":"441900102000"},{"area":"\u8336\u5c71\u9547","code":"441900103000"},{"area":"\u77f3\u6392\u9547","code":"441900104000"},{"area":"\u4f01\u77f3\u9547","code":"441900105000"},{"area":"\u6a2a\u6ca5\u9547","code":"441900106000"},{"area":"\u6865\u5934\u9547","code":"441900107000"},{"area":"\u8c22\u5c97\u9547","code":"441900108000"},{"area":"\u4e1c\u5751\u9547","code":"441900109000"},{"area":"\u5e38\u5e73\u9547","code":"441900110000"},{"area":"\u5bee\u6b65\u9547","code":"441900111000"},{"area":"\u6a1f\u6728\u5934\u9547","code":"441900112000"},{"area":"\u5927\u6717\u9547","code":"441900113000"},{"area":"\u9ec4\u6c5f\u9547","code":"441900114000"},{"area":"\u6e05\u6eaa\u9547","code":"441900115000"},{"area":"\u5858\u53a6\u9547","code":"441900116000"},{"area":"\u51e4\u5c97\u9547","code":"441900117000"},{"area":"\u5927\u5cad\u5c71\u9547","code":"441900118000"},{"area":"\u957f\u5b89\u9547","code":"441900119000"},{"area":"\u864e\u95e8\u9547","code":"441900121000"},{"area":"\u539a\u8857\u9547","code":"441900122000"},{"area":"\u6c99\u7530\u9547","code":"441900123000"},{"area":"\u9053\u6ed8\u9547","code":"441900124000"},{"area":"\u6d2a\u6885\u9547","code":"441900125000"},{"area":"\u9ebb\u6d8c\u9547","code":"441900126000"},{"area":"\u671b\u725b\u58a9\u9547","code":"441900127000"},{"area":"\u4e2d\u5802\u9547","code":"441900128000"},{"area":"\u9ad8\u57d7\u9547","code":"441900129000"},{"area":"\u677e\u5c71\u6e56","code":"441900401000"},{"area":"\u4e1c\u839e\u6e2f","code":"441900402000"},{"area":"\u4e1c\u839e\u751f\u6001\u56ed","code":"441900403000"},{"area":"\u4e1c\u839e\u6ee8\u6d77\u6e7e\u65b0\u533a","code":"441900404000"}]},{"city":"\u4e2d\u5c71\u5e02","code":"442000000000","areas":[{"area":"\u77f3\u5c90\u8857\u9053","code":"442000001000"},{"area":"\u4e1c\u533a\u8857\u9053","code":"442000002000"},{"area":"\u4e2d\u5c71\u6e2f\u8857\u9053","code":"442000003000"},{"area":"\u897f\u533a\u8857\u9053","code":"442000004000"},{"area":"\u5357\u533a\u8857\u9053","code":"442000005000"},{"area":"\u4e94\u6842\u5c71\u8857\u9053","code":"442000006000"},{"area":"\u6c11\u4f17\u8857\u9053","code":"442000007000"},{"area":"\u5357\u6717\u8857\u9053","code":"442000008000"},{"area":"\u9ec4\u5703\u9547","code":"442000101000"},{"area":"\u4e1c\u51e4\u9547","code":"442000103000"},{"area":"\u53e4\u9547\u9547","code":"442000105000"},{"area":"\u6c99\u6eaa\u9547","code":"442000106000"},{"area":"\u5766\u6d32\u9547","code":"442000107000"},{"area":"\u6e2f\u53e3\u9547","code":"442000108000"},{"area":"\u4e09\u89d2\u9547","code":"442000109000"},{"area":"\u6a2a\u680f\u9547","code":"442000110000"},{"area":"\u5357\u5934\u9547","code":"442000111000"},{"area":"\u961c\u6c99\u9547","code":"442000112000"},{"area":"\u4e09\u4e61\u9547","code":"442000114000"},{"area":"\u677f\u8299\u9547","code":"442000115000"},{"area":"\u5927\u6d8c\u9547","code":"442000116000"},{"area":"\u795e\u6e7e\u9547","code":"442000117000"},{"area":"\u5c0f\u6984\u9547","code":"442000118000"}]},{"city":"\u6f6e\u5dde\u5e02","code":"445100000000","areas":[{"area":"\u6e58\u6865\u533a","code":"445102000000"},{"area":"\u6f6e\u5b89\u533a","code":"445103000000"},{"area":"\u9976\u5e73\u53bf","code":"445122000000"}]},{"city":"\u63ed\u9633\u5e02","code":"445200000000","areas":[{"area":"\u6995\u57ce\u533a","code":"445202000000"},{"area":"\u63ed\u4e1c\u533a","code":"445203000000"},{"area":"\u63ed\u897f\u53bf","code":"445222000000"},{"area":"\u60e0\u6765\u53bf","code":"445224000000"},{"area":"\u666e\u5b81\u5e02","code":"445281000000"}]},{"city":"\u4e91\u6d6e\u5e02","code":"445300000000","areas":[{"area":"\u4e91\u57ce\u533a","code":"445302000000"},{"area":"\u4e91\u5b89\u533a","code":"445303000000"},{"area":"\u65b0\u5174\u53bf","code":"445321000000"},{"area":"\u90c1\u5357\u53bf","code":"445322000000"},{"area":"\u7f57\u5b9a\u5e02","code":"445381000000"}]}]},{"province":"\u5e7f\u897f\u58ee\u65cf\u81ea\u6cbb\u533a","code":"450000","citys":[{"city":"\u5357\u5b81\u5e02","code":"450100000000","areas":[{"area":"\u5174\u5b81\u533a","code":"450102000000"},{"area":"\u9752\u79c0\u533a","code":"450103000000"},{"area":"\u6c5f\u5357\u533a","code":"450105000000"},{"area":"\u897f\u4e61\u5858\u533a","code":"450107000000"},{"area":"\u826f\u5e86\u533a","code":"450108000000"},{"area":"\u9095\u5b81\u533a","code":"450109000000"},{"area":"\u6b66\u9e23\u533a","code":"450110000000"},{"area":"\u9686\u5b89\u53bf","code":"450123000000"},{"area":"\u9a6c\u5c71\u53bf","code":"450124000000"},{"area":"\u4e0a\u6797\u53bf","code":"450125000000"},{"area":"\u5bbe\u9633\u53bf","code":"450126000000"},{"area":"\u6a2a\u5dde\u5e02","code":"450181000000"}]},{"city":"\u67f3\u5dde\u5e02","code":"450200000000","areas":[{"area":"\u57ce\u4e2d\u533a","code":"450202000000"},{"area":"\u9c7c\u5cf0\u533a","code":"450203000000"},{"area":"\u67f3\u5357\u533a","code":"450204000000"},{"area":"\u67f3\u5317\u533a","code":"450205000000"},{"area":"\u67f3\u6c5f\u533a","code":"450206000000"},{"area":"\u67f3\u57ce\u53bf","code":"450222000000"},{"area":"\u9e7f\u5be8\u53bf","code":"450223000000"},{"area":"\u878d\u5b89\u53bf","code":"450224000000"},{"area":"\u878d\u6c34\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"450225000000"},{"area":"\u4e09\u6c5f\u4f97\u65cf\u81ea\u6cbb\u53bf","code":"450226000000"}]},{"city":"\u6842\u6797\u5e02","code":"450300000000","areas":[{"area":"\u79c0\u5cf0\u533a","code":"450302000000"},{"area":"\u53e0\u5f69\u533a","code":"450303000000"},{"area":"\u8c61\u5c71\u533a","code":"450304000000"},{"area":"\u4e03\u661f\u533a","code":"450305000000"},{"area":"\u96c1\u5c71\u533a","code":"450311000000"},{"area":"\u4e34\u6842\u533a","code":"450312000000"},{"area":"\u9633\u6714\u53bf","code":"450321000000"},{"area":"\u7075\u5ddd\u53bf","code":"450323000000"},{"area":"\u5168\u5dde\u53bf","code":"450324000000"},{"area":"\u5174\u5b89\u53bf","code":"450325000000"},{"area":"\u6c38\u798f\u53bf","code":"450326000000"},{"area":"\u704c\u9633\u53bf","code":"450327000000"},{"area":"\u9f99\u80dc\u5404\u65cf\u81ea\u6cbb\u53bf","code":"450328000000"},{"area":"\u8d44\u6e90\u53bf","code":"450329000000"},{"area":"\u5e73\u4e50\u53bf","code":"450330000000"},{"area":"\u606d\u57ce\u7476\u65cf\u81ea\u6cbb\u53bf","code":"450332000000"},{"area":"\u8354\u6d66\u5e02","code":"450381000000"}]},{"city":"\u68a7\u5dde\u5e02","code":"450400000000","areas":[{"area":"\u4e07\u79c0\u533a","code":"450403000000"},{"area":"\u957f\u6d32\u533a","code":"450405000000"},{"area":"\u9f99\u5729\u533a","code":"450406000000"},{"area":"\u82cd\u68a7\u53bf","code":"450421000000"},{"area":"\u85e4\u53bf","code":"450422000000"},{"area":"\u8499\u5c71\u53bf","code":"450423000000"},{"area":"\u5c91\u6eaa\u5e02","code":"450481000000"}]},{"city":"\u5317\u6d77\u5e02","code":"450500000000","areas":[{"area":"\u6d77\u57ce\u533a","code":"450502000000"},{"area":"\u94f6\u6d77\u533a","code":"450503000000"},{"area":"\u94c1\u5c71\u6e2f\u533a","code":"450512000000"},{"area":"\u5408\u6d66\u53bf","code":"450521000000"}]},{"city":"\u9632\u57ce\u6e2f\u5e02","code":"450600000000","areas":[{"area":"\u6e2f\u53e3\u533a","code":"450602000000"},{"area":"\u9632\u57ce\u533a","code":"450603000000"},{"area":"\u4e0a\u601d\u53bf","code":"450621000000"},{"area":"\u4e1c\u5174\u5e02","code":"450681000000"}]},{"city":"\u94a6\u5dde\u5e02","code":"450700000000","areas":[{"area":"\u94a6\u5357\u533a","code":"450702000000"},{"area":"\u94a6\u5317\u533a","code":"450703000000"},{"area":"\u7075\u5c71\u53bf","code":"450721000000"},{"area":"\u6d66\u5317\u53bf","code":"450722000000"}]},{"city":"\u8d35\u6e2f\u5e02","code":"450800000000","areas":[{"area":"\u6e2f\u5317\u533a","code":"450802000000"},{"area":"\u6e2f\u5357\u533a","code":"450803000000"},{"area":"\u8983\u5858\u533a","code":"450804000000"},{"area":"\u5e73\u5357\u53bf","code":"450821000000"},{"area":"\u6842\u5e73\u5e02","code":"450881000000"}]},{"city":"\u7389\u6797\u5e02","code":"450900000000","areas":[{"area":"\u7389\u5dde\u533a","code":"450902000000"},{"area":"\u798f\u7ef5\u533a","code":"450903000000"},{"area":"\u5bb9\u53bf","code":"450921000000"},{"area":"\u9646\u5ddd\u53bf","code":"450922000000"},{"area":"\u535a\u767d\u53bf","code":"450923000000"},{"area":"\u5174\u4e1a\u53bf","code":"450924000000"},{"area":"\u5317\u6d41\u5e02","code":"450981000000"}]},{"city":"\u767e\u8272\u5e02","code":"451000000000","areas":[{"area":"\u53f3\u6c5f\u533a","code":"451002000000"},{"area":"\u7530\u9633\u533a","code":"451003000000"},{"area":"\u7530\u4e1c\u53bf","code":"451022000000"},{"area":"\u5fb7\u4fdd\u53bf","code":"451024000000"},{"area":"\u90a3\u5761\u53bf","code":"451026000000"},{"area":"\u51cc\u4e91\u53bf","code":"451027000000"},{"area":"\u4e50\u4e1a\u53bf","code":"451028000000"},{"area":"\u7530\u6797\u53bf","code":"451029000000"},{"area":"\u897f\u6797\u53bf","code":"451030000000"},{"area":"\u9686\u6797\u5404\u65cf\u81ea\u6cbb\u53bf","code":"451031000000"},{"area":"\u9756\u897f\u5e02","code":"451081000000"},{"area":"\u5e73\u679c\u5e02","code":"451082000000"}]},{"city":"\u8d3a\u5dde\u5e02","code":"451100000000","areas":[{"area":"\u516b\u6b65\u533a","code":"451102000000"},{"area":"\u5e73\u6842\u533a","code":"451103000000"},{"area":"\u662d\u5e73\u53bf","code":"451121000000"},{"area":"\u949f\u5c71\u53bf","code":"451122000000"},{"area":"\u5bcc\u5ddd\u7476\u65cf\u81ea\u6cbb\u53bf","code":"451123000000"}]},{"city":"\u6cb3\u6c60\u5e02","code":"451200000000","areas":[{"area":"\u91d1\u57ce\u6c5f\u533a","code":"451202000000"},{"area":"\u5b9c\u5dde\u533a","code":"451203000000"},{"area":"\u5357\u4e39\u53bf","code":"451221000000"},{"area":"\u5929\u5ce8\u53bf","code":"451222000000"},{"area":"\u51e4\u5c71\u53bf","code":"451223000000"},{"area":"\u4e1c\u5170\u53bf","code":"451224000000"},{"area":"\u7f57\u57ce\u4eeb\u4f6c\u65cf\u81ea\u6cbb\u53bf","code":"451225000000"},{"area":"\u73af\u6c5f\u6bdb\u5357\u65cf\u81ea\u6cbb\u53bf","code":"451226000000"},{"area":"\u5df4\u9a6c\u7476\u65cf\u81ea\u6cbb\u53bf","code":"451227000000"},{"area":"\u90fd\u5b89\u7476\u65cf\u81ea\u6cbb\u53bf","code":"451228000000"},{"area":"\u5927\u5316\u7476\u65cf\u81ea\u6cbb\u53bf","code":"451229000000"}]},{"city":"\u6765\u5bbe\u5e02","code":"451300000000","areas":[{"area":"\u5174\u5bbe\u533a","code":"451302000000"},{"area":"\u5ffb\u57ce\u53bf","code":"451321000000"},{"area":"\u8c61\u5dde\u53bf","code":"451322000000"},{"area":"\u6b66\u5ba3\u53bf","code":"451323000000"},{"area":"\u91d1\u79c0\u7476\u65cf\u81ea\u6cbb\u53bf","code":"451324000000"},{"area":"\u5408\u5c71\u5e02","code":"451381000000"}]},{"city":"\u5d07\u5de6\u5e02","code":"451400000000","areas":[{"area":"\u6c5f\u5dde\u533a","code":"451402000000"},{"area":"\u6276\u7ee5\u53bf","code":"451421000000"},{"area":"\u5b81\u660e\u53bf","code":"451422000000"},{"area":"\u9f99\u5dde\u53bf","code":"451423000000"},{"area":"\u5927\u65b0\u53bf","code":"451424000000"},{"area":"\u5929\u7b49\u53bf","code":"451425000000"},{"area":"\u51ed\u7965\u5e02","code":"451481000000"}]}]},{"province":"\u6d77\u5357\u7701","code":"460000","citys":[{"city":"\u6d77\u53e3\u5e02","code":"460100000000","areas":[{"area":"\u79c0\u82f1\u533a","code":"460105000000"},{"area":"\u9f99\u534e\u533a","code":"460106000000"},{"area":"\u743c\u5c71\u533a","code":"460107000000"},{"area":"\u7f8e\u5170\u533a","code":"460108000000"}]},{"city":"\u4e09\u4e9a\u5e02","code":"460200000000","areas":[{"area":"\u6d77\u68e0\u533a","code":"460202000000"},{"area":"\u5409\u9633\u533a","code":"460203000000"},{"area":"\u5929\u6daf\u533a","code":"460204000000"},{"area":"\u5d16\u5dde\u533a","code":"460205000000"}]},{"city":"\u4e09\u6c99\u5e02","code":"460300000000","areas":[{"area":"\u897f\u6c99\u7fa4\u5c9b","code":"460321000000"},{"area":"\u5357\u6c99\u7fa4\u5c9b","code":"460322000000"},{"area":"\u4e2d\u6c99\u7fa4\u5c9b\u7684\u5c9b\u7901\u53ca\u5176\u6d77\u57df","code":"460323000000"}]},{"city":"\u510b\u5dde\u5e02","code":"460400000000","areas":[{"area":"\u90a3\u5927\u9547","code":"460400100000"},{"area":"\u548c\u5e86\u9547","code":"460400101000"},{"area":"\u5357\u4e30\u9547","code":"460400102000"},{"area":"\u5927\u6210\u9547","code":"460400103000"},{"area":"\u96c5\u661f\u9547","code":"460400104000"},{"area":"\u5170\u6d0b\u9547","code":"460400105000"},{"area":"\u5149\u6751\u9547","code":"460400106000"},{"area":"\u6728\u68e0\u9547","code":"460400107000"},{"area":"\u6d77\u5934\u9547","code":"460400108000"},{"area":"\u5ce8\u8513\u9547","code":"460400109000"},{"area":"\u738b\u4e94\u9547","code":"460400111000"},{"area":"\u767d\u9a6c\u4e95\u9547","code":"460400112000"},{"area":"\u4e2d\u548c\u9547","code":"460400113000"},{"area":"\u6392\u6d66\u9547","code":"460400114000"},{"area":"\u4e1c\u6210\u9547","code":"460400115000"},{"area":"\u65b0\u5dde\u9547","code":"460400116000"},{"area":"\u6d0b\u6d66\u7ecf\u6d4e\u5f00\u53d1\u533a","code":"460400499000"},{"area":"\u534e\u5357\u70ed\u4f5c\u5b66\u9662","code":"460400500000"}]},{"city":"\u7701\u76f4\u8f96\u53bf\u7ea7\u884c\u653f\u533a\u5212","code":"469000000000","areas":[{"area":"\u4e94\u6307\u5c71\u5e02","code":"469001000000"},{"area":"\u743c\u6d77\u5e02","code":"469002000000"},{"area":"\u6587\u660c\u5e02","code":"469005000000"},{"area":"\u4e07\u5b81\u5e02","code":"469006000000"},{"area":"\u4e1c\u65b9\u5e02","code":"469007000000"},{"area":"\u5b9a\u5b89\u53bf","code":"469021000000"},{"area":"\u5c6f\u660c\u53bf","code":"469022000000"},{"area":"\u6f84\u8fc8\u53bf","code":"469023000000"},{"area":"\u4e34\u9ad8\u53bf","code":"469024000000"},{"area":"\u767d\u6c99\u9ece\u65cf\u81ea\u6cbb\u53bf","code":"469025000000"},{"area":"\u660c\u6c5f\u9ece\u65cf\u81ea\u6cbb\u53bf","code":"469026000000"},{"area":"\u4e50\u4e1c\u9ece\u65cf\u81ea\u6cbb\u53bf","code":"469027000000"},{"area":"\u9675\u6c34\u9ece\u65cf\u81ea\u6cbb\u53bf","code":"469028000000"},{"area":"\u4fdd\u4ead\u9ece\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"469029000000"},{"area":"\u743c\u4e2d\u9ece\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"469030000000"}]}]},{"province":"\u91cd\u5e86\u5e02","code":"500000","citys":[{"city":"\u5e02\u8f96\u533a","code":"500100000000","areas":[{"area":"\u4e07\u5dde\u533a","code":"500101000000"},{"area":"\u6daa\u9675\u533a","code":"500102000000"},{"area":"\u6e1d\u4e2d\u533a","code":"500103000000"},{"area":"\u5927\u6e21\u53e3\u533a","code":"500104000000"},{"area":"\u6c5f\u5317\u533a","code":"500105000000"},{"area":"\u6c99\u576a\u575d\u533a","code":"500106000000"},{"area":"\u4e5d\u9f99\u5761\u533a","code":"500107000000"},{"area":"\u5357\u5cb8\u533a","code":"500108000000"},{"area":"\u5317\u789a\u533a","code":"500109000000"},{"area":"\u7da6\u6c5f\u533a","code":"500110000000"},{"area":"\u5927\u8db3\u533a","code":"500111000000"},{"area":"\u6e1d\u5317\u533a","code":"500112000000"},{"area":"\u5df4\u5357\u533a","code":"500113000000"},{"area":"\u9ed4\u6c5f\u533a","code":"500114000000"},{"area":"\u957f\u5bff\u533a","code":"500115000000"},{"area":"\u6c5f\u6d25\u533a","code":"500116000000"},{"area":"\u5408\u5ddd\u533a","code":"500117000000"},{"area":"\u6c38\u5ddd\u533a","code":"500118000000"},{"area":"\u5357\u5ddd\u533a","code":"500119000000"},{"area":"\u74a7\u5c71\u533a","code":"500120000000"},{"area":"\u94dc\u6881\u533a","code":"500151000000"},{"area":"\u6f7c\u5357\u533a","code":"500152000000"},{"area":"\u8363\u660c\u533a","code":"500153000000"},{"area":"\u5f00\u5dde\u533a","code":"500154000000"},{"area":"\u6881\u5e73\u533a","code":"500155000000"},{"area":"\u6b66\u9686\u533a","code":"500156000000"}]},{"city":"\u53bf","code":"500200000000","areas":[{"area":"\u57ce\u53e3\u53bf","code":"500229000000"},{"area":"\u4e30\u90fd\u53bf","code":"500230000000"},{"area":"\u57ab\u6c5f\u53bf","code":"500231000000"},{"area":"\u5fe0\u53bf","code":"500233000000"},{"area":"\u4e91\u9633\u53bf","code":"500235000000"},{"area":"\u5949\u8282\u53bf","code":"500236000000"},{"area":"\u5deb\u5c71\u53bf","code":"500237000000"},{"area":"\u5deb\u6eaa\u53bf","code":"500238000000"},{"area":"\u77f3\u67f1\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","code":"500240000000"},{"area":"\u79c0\u5c71\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"500241000000"},{"area":"\u9149\u9633\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"500242000000"},{"area":"\u5f6d\u6c34\u82d7\u65cf\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","code":"500243000000"}]}]},{"province":"\u56db\u5ddd\u7701","code":"510000","citys":[{"city":"\u6210\u90fd\u5e02","code":"510100000000","areas":[{"area":"\u9526\u6c5f\u533a","code":"510104000000"},{"area":"\u9752\u7f8a\u533a","code":"510105000000"},{"area":"\u91d1\u725b\u533a","code":"510106000000"},{"area":"\u6b66\u4faf\u533a","code":"510107000000"},{"area":"\u6210\u534e\u533a","code":"510108000000"},{"area":"\u9f99\u6cc9\u9a7f\u533a","code":"510112000000"},{"area":"\u9752\u767d\u6c5f\u533a","code":"510113000000"},{"area":"\u65b0\u90fd\u533a","code":"510114000000"},{"area":"\u6e29\u6c5f\u533a","code":"510115000000"},{"area":"\u53cc\u6d41\u533a","code":"510116000000"},{"area":"\u90eb\u90fd\u533a","code":"510117000000"},{"area":"\u65b0\u6d25\u533a","code":"510118000000"},{"area":"\u91d1\u5802\u53bf","code":"510121000000"},{"area":"\u5927\u9091\u53bf","code":"510129000000"},{"area":"\u84b2\u6c5f\u53bf","code":"510131000000"},{"area":"\u90fd\u6c5f\u5830\u5e02","code":"510181000000"},{"area":"\u5f6d\u5dde\u5e02","code":"510182000000"},{"area":"\u909b\u5d03\u5e02","code":"510183000000"},{"area":"\u5d07\u5dde\u5e02","code":"510184000000"},{"area":"\u7b80\u9633\u5e02","code":"510185000000"}]},{"city":"\u81ea\u8d21\u5e02","code":"510300000000","areas":[{"area":"\u81ea\u6d41\u4e95\u533a","code":"510302000000"},{"area":"\u8d21\u4e95\u533a","code":"510303000000"},{"area":"\u5927\u5b89\u533a","code":"510304000000"},{"area":"\u6cbf\u6ee9\u533a","code":"510311000000"},{"area":"\u8363\u53bf","code":"510321000000"},{"area":"\u5bcc\u987a\u53bf","code":"510322000000"}]},{"city":"\u6500\u679d\u82b1\u5e02","code":"510400000000","areas":[{"area":"\u4e1c\u533a","code":"510402000000"},{"area":"\u897f\u533a","code":"510403000000"},{"area":"\u4ec1\u548c\u533a","code":"510411000000"},{"area":"\u7c73\u6613\u53bf","code":"510421000000"},{"area":"\u76d0\u8fb9\u53bf","code":"510422000000"}]},{"city":"\u6cf8\u5dde\u5e02","code":"510500000000","areas":[{"area":"\u6c5f\u9633\u533a","code":"510502000000"},{"area":"\u7eb3\u6eaa\u533a","code":"510503000000"},{"area":"\u9f99\u9a6c\u6f6d\u533a","code":"510504000000"},{"area":"\u6cf8\u53bf","code":"510521000000"},{"area":"\u5408\u6c5f\u53bf","code":"510522000000"},{"area":"\u53d9\u6c38\u53bf","code":"510524000000"},{"area":"\u53e4\u853a\u53bf","code":"510525000000"}]},{"city":"\u5fb7\u9633\u5e02","code":"510600000000","areas":[{"area":"\u65cc\u9633\u533a","code":"510603000000"},{"area":"\u7f57\u6c5f\u533a","code":"510604000000"},{"area":"\u4e2d\u6c5f\u53bf","code":"510623000000"},{"area":"\u5e7f\u6c49\u5e02","code":"510681000000"},{"area":"\u4ec0\u90a1\u5e02","code":"510682000000"},{"area":"\u7ef5\u7af9\u5e02","code":"510683000000"}]},{"city":"\u7ef5\u9633\u5e02","code":"510700000000","areas":[{"area":"\u6daa\u57ce\u533a","code":"510703000000"},{"area":"\u6e38\u4ed9\u533a","code":"510704000000"},{"area":"\u5b89\u5dde\u533a","code":"510705000000"},{"area":"\u4e09\u53f0\u53bf","code":"510722000000"},{"area":"\u76d0\u4ead\u53bf","code":"510723000000"},{"area":"\u6893\u6f7c\u53bf","code":"510725000000"},{"area":"\u5317\u5ddd\u7f8c\u65cf\u81ea\u6cbb\u53bf","code":"510726000000"},{"area":"\u5e73\u6b66\u53bf","code":"510727000000"},{"area":"\u6c5f\u6cb9\u5e02","code":"510781000000"}]},{"city":"\u5e7f\u5143\u5e02","code":"510800000000","areas":[{"area":"\u5229\u5dde\u533a","code":"510802000000"},{"area":"\u662d\u5316\u533a","code":"510811000000"},{"area":"\u671d\u5929\u533a","code":"510812000000"},{"area":"\u65fa\u82cd\u53bf","code":"510821000000"},{"area":"\u9752\u5ddd\u53bf","code":"510822000000"},{"area":"\u5251\u9601\u53bf","code":"510823000000"},{"area":"\u82cd\u6eaa\u53bf","code":"510824000000"}]},{"city":"\u9042\u5b81\u5e02","code":"510900000000","areas":[{"area":"\u8239\u5c71\u533a","code":"510903000000"},{"area":"\u5b89\u5c45\u533a","code":"510904000000"},{"area":"\u84ec\u6eaa\u53bf","code":"510921000000"},{"area":"\u5927\u82f1\u53bf","code":"510923000000"},{"area":"\u5c04\u6d2a\u5e02","code":"510981000000"}]},{"city":"\u5185\u6c5f\u5e02","code":"511000000000","areas":[{"area":"\u5e02\u4e2d\u533a","code":"511002000000"},{"area":"\u4e1c\u5174\u533a","code":"511011000000"},{"area":"\u5a01\u8fdc\u53bf","code":"511024000000"},{"area":"\u8d44\u4e2d\u53bf","code":"511025000000"},{"area":"\u9686\u660c\u5e02","code":"511083000000"}]},{"city":"\u4e50\u5c71\u5e02","code":"511100000000","areas":[{"area":"\u5e02\u4e2d\u533a","code":"511102000000"},{"area":"\u6c99\u6e7e\u533a","code":"511111000000"},{"area":"\u4e94\u901a\u6865\u533a","code":"511112000000"},{"area":"\u91d1\u53e3\u6cb3\u533a","code":"511113000000"},{"area":"\u728d\u4e3a\u53bf","code":"511123000000"},{"area":"\u4e95\u7814\u53bf","code":"511124000000"},{"area":"\u5939\u6c5f\u53bf","code":"511126000000"},{"area":"\u6c90\u5ddd\u53bf","code":"511129000000"},{"area":"\u5ce8\u8fb9\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"511132000000"},{"area":"\u9a6c\u8fb9\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"511133000000"},{"area":"\u5ce8\u7709\u5c71\u5e02","code":"511181000000"}]},{"city":"\u5357\u5145\u5e02","code":"511300000000","areas":[{"area":"\u987a\u5e86\u533a","code":"511302000000"},{"area":"\u9ad8\u576a\u533a","code":"511303000000"},{"area":"\u5609\u9675\u533a","code":"511304000000"},{"area":"\u5357\u90e8\u53bf","code":"511321000000"},{"area":"\u8425\u5c71\u53bf","code":"511322000000"},{"area":"\u84ec\u5b89\u53bf","code":"511323000000"},{"area":"\u4eea\u9647\u53bf","code":"511324000000"},{"area":"\u897f\u5145\u53bf","code":"511325000000"},{"area":"\u9606\u4e2d\u5e02","code":"511381000000"}]},{"city":"\u7709\u5c71\u5e02","code":"511400000000","areas":[{"area":"\u4e1c\u5761\u533a","code":"511402000000"},{"area":"\u5f6d\u5c71\u533a","code":"511403000000"},{"area":"\u4ec1\u5bff\u53bf","code":"511421000000"},{"area":"\u6d2a\u96c5\u53bf","code":"511423000000"},{"area":"\u4e39\u68f1\u53bf","code":"511424000000"},{"area":"\u9752\u795e\u53bf","code":"511425000000"}]},{"city":"\u5b9c\u5bbe\u5e02","code":"511500000000","areas":[{"area":"\u7fe0\u5c4f\u533a","code":"511502000000"},{"area":"\u5357\u6eaa\u533a","code":"511503000000"},{"area":"\u53d9\u5dde\u533a","code":"511504000000"},{"area":"\u6c5f\u5b89\u53bf","code":"511523000000"},{"area":"\u957f\u5b81\u53bf","code":"511524000000"},{"area":"\u9ad8\u53bf","code":"511525000000"},{"area":"\u73d9\u53bf","code":"511526000000"},{"area":"\u7b60\u8fde\u53bf","code":"511527000000"},{"area":"\u5174\u6587\u53bf","code":"511528000000"},{"area":"\u5c4f\u5c71\u53bf","code":"511529000000"}]},{"city":"\u5e7f\u5b89\u5e02","code":"511600000000","areas":[{"area":"\u5e7f\u5b89\u533a","code":"511602000000"},{"area":"\u524d\u950b\u533a","code":"511603000000"},{"area":"\u5cb3\u6c60\u53bf","code":"511621000000"},{"area":"\u6b66\u80dc\u53bf","code":"511622000000"},{"area":"\u90bb\u6c34\u53bf","code":"511623000000"},{"area":"\u534e\u84e5\u5e02","code":"511681000000"}]},{"city":"\u8fbe\u5dde\u5e02","code":"511700000000","areas":[{"area":"\u901a\u5ddd\u533a","code":"511702000000"},{"area":"\u8fbe\u5ddd\u533a","code":"511703000000"},{"area":"\u5ba3\u6c49\u53bf","code":"511722000000"},{"area":"\u5f00\u6c5f\u53bf","code":"511723000000"},{"area":"\u5927\u7af9\u53bf","code":"511724000000"},{"area":"\u6e20\u53bf","code":"511725000000"},{"area":"\u4e07\u6e90\u5e02","code":"511781000000"}]},{"city":"\u96c5\u5b89\u5e02","code":"511800000000","areas":[{"area":"\u96e8\u57ce\u533a","code":"511802000000"},{"area":"\u540d\u5c71\u533a","code":"511803000000"},{"area":"\u8365\u7ecf\u53bf","code":"511822000000"},{"area":"\u6c49\u6e90\u53bf","code":"511823000000"},{"area":"\u77f3\u68c9\u53bf","code":"511824000000"},{"area":"\u5929\u5168\u53bf","code":"511825000000"},{"area":"\u82a6\u5c71\u53bf","code":"511826000000"},{"area":"\u5b9d\u5174\u53bf","code":"511827000000"}]},{"city":"\u5df4\u4e2d\u5e02","code":"511900000000","areas":[{"area":"\u5df4\u5dde\u533a","code":"511902000000"},{"area":"\u6069\u9633\u533a","code":"511903000000"},{"area":"\u901a\u6c5f\u53bf","code":"511921000000"},{"area":"\u5357\u6c5f\u53bf","code":"511922000000"},{"area":"\u5e73\u660c\u53bf","code":"511923000000"}]},{"city":"\u8d44\u9633\u5e02","code":"512000000000","areas":[{"area":"\u96c1\u6c5f\u533a","code":"512002000000"},{"area":"\u5b89\u5cb3\u53bf","code":"512021000000"},{"area":"\u4e50\u81f3\u53bf","code":"512022000000"}]},{"city":"\u963f\u575d\u85cf\u65cf\u7f8c\u65cf\u81ea\u6cbb\u5dde","code":"513200000000","areas":[{"area":"\u9a6c\u5c14\u5eb7\u5e02","code":"513201000000"},{"area":"\u6c76\u5ddd\u53bf","code":"513221000000"},{"area":"\u7406\u53bf","code":"513222000000"},{"area":"\u8302\u53bf","code":"513223000000"},{"area":"\u677e\u6f58\u53bf","code":"513224000000"},{"area":"\u4e5d\u5be8\u6c9f\u53bf","code":"513225000000"},{"area":"\u91d1\u5ddd\u53bf","code":"513226000000"},{"area":"\u5c0f\u91d1\u53bf","code":"513227000000"},{"area":"\u9ed1\u6c34\u53bf","code":"513228000000"},{"area":"\u58e4\u5858\u53bf","code":"513230000000"},{"area":"\u963f\u575d\u53bf","code":"513231000000"},{"area":"\u82e5\u5c14\u76d6\u53bf","code":"513232000000"},{"area":"\u7ea2\u539f\u53bf","code":"513233000000"}]},{"city":"\u7518\u5b5c\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"513300000000","areas":[{"area":"\u5eb7\u5b9a\u5e02","code":"513301000000"},{"area":"\u6cf8\u5b9a\u53bf","code":"513322000000"},{"area":"\u4e39\u5df4\u53bf","code":"513323000000"},{"area":"\u4e5d\u9f99\u53bf","code":"513324000000"},{"area":"\u96c5\u6c5f\u53bf","code":"513325000000"},{"area":"\u9053\u5b5a\u53bf","code":"513326000000"},{"area":"\u7089\u970d\u53bf","code":"513327000000"},{"area":"\u7518\u5b5c\u53bf","code":"513328000000"},{"area":"\u65b0\u9f99\u53bf","code":"513329000000"},{"area":"\u5fb7\u683c\u53bf","code":"513330000000"},{"area":"\u767d\u7389\u53bf","code":"513331000000"},{"area":"\u77f3\u6e20\u53bf","code":"513332000000"},{"area":"\u8272\u8fbe\u53bf","code":"513333000000"},{"area":"\u7406\u5858\u53bf","code":"513334000000"},{"area":"\u5df4\u5858\u53bf","code":"513335000000"},{"area":"\u4e61\u57ce\u53bf","code":"513336000000"},{"area":"\u7a3b\u57ce\u53bf","code":"513337000000"},{"area":"\u5f97\u8363\u53bf","code":"513338000000"}]},{"city":"\u51c9\u5c71\u5f5d\u65cf\u81ea\u6cbb\u5dde","code":"513400000000","areas":[{"area":"\u897f\u660c\u5e02","code":"513401000000"},{"area":"\u4f1a\u7406\u5e02","code":"513402000000"},{"area":"\u6728\u91cc\u85cf\u65cf\u81ea\u6cbb\u53bf","code":"513422000000"},{"area":"\u76d0\u6e90\u53bf","code":"513423000000"},{"area":"\u5fb7\u660c\u53bf","code":"513424000000"},{"area":"\u4f1a\u4e1c\u53bf","code":"513426000000"},{"area":"\u5b81\u5357\u53bf","code":"513427000000"},{"area":"\u666e\u683c\u53bf","code":"513428000000"},{"area":"\u5e03\u62d6\u53bf","code":"513429000000"},{"area":"\u91d1\u9633\u53bf","code":"513430000000"},{"area":"\u662d\u89c9\u53bf","code":"513431000000"},{"area":"\u559c\u5fb7\u53bf","code":"513432000000"},{"area":"\u5195\u5b81\u53bf","code":"513433000000"},{"area":"\u8d8a\u897f\u53bf","code":"513434000000"},{"area":"\u7518\u6d1b\u53bf","code":"513435000000"},{"area":"\u7f8e\u59d1\u53bf","code":"513436000000"},{"area":"\u96f7\u6ce2\u53bf","code":"513437000000"}]}]},{"province":"\u8d35\u5dde\u7701","code":"520000","citys":[{"city":"\u8d35\u9633\u5e02","code":"520100000000","areas":[{"area":"\u5357\u660e\u533a","code":"520102000000"},{"area":"\u4e91\u5ca9\u533a","code":"520103000000"},{"area":"\u82b1\u6eaa\u533a","code":"520111000000"},{"area":"\u4e4c\u5f53\u533a","code":"520112000000"},{"area":"\u767d\u4e91\u533a","code":"520113000000"},{"area":"\u89c2\u5c71\u6e56\u533a","code":"520115000000"},{"area":"\u5f00\u9633\u53bf","code":"520121000000"},{"area":"\u606f\u70fd\u53bf","code":"520122000000"},{"area":"\u4fee\u6587\u53bf","code":"520123000000"},{"area":"\u6e05\u9547\u5e02","code":"520181000000"}]},{"city":"\u516d\u76d8\u6c34\u5e02","code":"520200000000","areas":[{"area":"\u949f\u5c71\u533a","code":"520201000000"},{"area":"\u516d\u679d\u7279\u533a","code":"520203000000"},{"area":"\u6c34\u57ce\u533a","code":"520204000000"},{"area":"\u76d8\u5dde\u5e02","code":"520281000000"}]},{"city":"\u9075\u4e49\u5e02","code":"520300000000","areas":[{"area":"\u7ea2\u82b1\u5c97\u533a","code":"520302000000"},{"area":"\u6c47\u5ddd\u533a","code":"520303000000"},{"area":"\u64ad\u5dde\u533a","code":"520304000000"},{"area":"\u6850\u6893\u53bf","code":"520322000000"},{"area":"\u7ee5\u9633\u53bf","code":"520323000000"},{"area":"\u6b63\u5b89\u53bf","code":"520324000000"},{"area":"\u9053\u771f\u4ee1\u4f6c\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"520325000000"},{"area":"\u52a1\u5ddd\u4ee1\u4f6c\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"520326000000"},{"area":"\u51e4\u5188\u53bf","code":"520327000000"},{"area":"\u6e44\u6f6d\u53bf","code":"520328000000"},{"area":"\u4f59\u5e86\u53bf","code":"520329000000"},{"area":"\u4e60\u6c34\u53bf","code":"520330000000"},{"area":"\u8d64\u6c34\u5e02","code":"520381000000"},{"area":"\u4ec1\u6000\u5e02","code":"520382000000"}]},{"city":"\u5b89\u987a\u5e02","code":"520400000000","areas":[{"area":"\u897f\u79c0\u533a","code":"520402000000"},{"area":"\u5e73\u575d\u533a","code":"520403000000"},{"area":"\u666e\u5b9a\u53bf","code":"520422000000"},{"area":"\u9547\u5b81\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"520423000000"},{"area":"\u5173\u5cad\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"520424000000"},{"area":"\u7d2b\u4e91\u82d7\u65cf\u5e03\u4f9d\u65cf\u81ea\u6cbb\u53bf","code":"520425000000"}]},{"city":"\u6bd5\u8282\u5e02","code":"520500000000","areas":[{"area":"\u4e03\u661f\u5173\u533a","code":"520502000000"},{"area":"\u5927\u65b9\u53bf","code":"520521000000"},{"area":"\u91d1\u6c99\u53bf","code":"520523000000"},{"area":"\u7ec7\u91d1\u53bf","code":"520524000000"},{"area":"\u7eb3\u96cd\u53bf","code":"520525000000"},{"area":"\u5a01\u5b81\u5f5d\u65cf\u56de\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"520526000000"},{"area":"\u8d6b\u7ae0\u53bf","code":"520527000000"},{"area":"\u9ed4\u897f\u5e02","code":"520581000000"}]},{"city":"\u94dc\u4ec1\u5e02","code":"520600000000","areas":[{"area":"\u78a7\u6c5f\u533a","code":"520602000000"},{"area":"\u4e07\u5c71\u533a","code":"520603000000"},{"area":"\u6c5f\u53e3\u53bf","code":"520621000000"},{"area":"\u7389\u5c4f\u4f97\u65cf\u81ea\u6cbb\u53bf","code":"520622000000"},{"area":"\u77f3\u9621\u53bf","code":"520623000000"},{"area":"\u601d\u5357\u53bf","code":"520624000000"},{"area":"\u5370\u6c5f\u571f\u5bb6\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"520625000000"},{"area":"\u5fb7\u6c5f\u53bf","code":"520626000000"},{"area":"\u6cbf\u6cb3\u571f\u5bb6\u65cf\u81ea\u6cbb\u53bf","code":"520627000000"},{"area":"\u677e\u6843\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"520628000000"}]},{"city":"\u9ed4\u897f\u5357\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","code":"522300000000","areas":[{"area":"\u5174\u4e49\u5e02","code":"522301000000"},{"area":"\u5174\u4ec1\u5e02","code":"522302000000"},{"area":"\u666e\u5b89\u53bf","code":"522323000000"},{"area":"\u6674\u9686\u53bf","code":"522324000000"},{"area":"\u8d1e\u4e30\u53bf","code":"522325000000"},{"area":"\u671b\u8c1f\u53bf","code":"522326000000"},{"area":"\u518c\u4ea8\u53bf","code":"522327000000"},{"area":"\u5b89\u9f99\u53bf","code":"522328000000"}]},{"city":"\u9ed4\u4e1c\u5357\u82d7\u65cf\u4f97\u65cf\u81ea\u6cbb\u5dde","code":"522600000000","areas":[{"area":"\u51ef\u91cc\u5e02","code":"522601000000"},{"area":"\u9ec4\u5e73\u53bf","code":"522622000000"},{"area":"\u65bd\u79c9\u53bf","code":"522623000000"},{"area":"\u4e09\u7a57\u53bf","code":"522624000000"},{"area":"\u9547\u8fdc\u53bf","code":"522625000000"},{"area":"\u5c91\u5de9\u53bf","code":"522626000000"},{"area":"\u5929\u67f1\u53bf","code":"522627000000"},{"area":"\u9526\u5c4f\u53bf","code":"522628000000"},{"area":"\u5251\u6cb3\u53bf","code":"522629000000"},{"area":"\u53f0\u6c5f\u53bf","code":"522630000000"},{"area":"\u9ece\u5e73\u53bf","code":"522631000000"},{"area":"\u6995\u6c5f\u53bf","code":"522632000000"},{"area":"\u4ece\u6c5f\u53bf","code":"522633000000"},{"area":"\u96f7\u5c71\u53bf","code":"522634000000"},{"area":"\u9ebb\u6c5f\u53bf","code":"522635000000"},{"area":"\u4e39\u5be8\u53bf","code":"522636000000"}]},{"city":"\u9ed4\u5357\u5e03\u4f9d\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","code":"522700000000","areas":[{"area":"\u90fd\u5300\u5e02","code":"522701000000"},{"area":"\u798f\u6cc9\u5e02","code":"522702000000"},{"area":"\u8354\u6ce2\u53bf","code":"522722000000"},{"area":"\u8d35\u5b9a\u53bf","code":"522723000000"},{"area":"\u74ee\u5b89\u53bf","code":"522725000000"},{"area":"\u72ec\u5c71\u53bf","code":"522726000000"},{"area":"\u5e73\u5858\u53bf","code":"522727000000"},{"area":"\u7f57\u7538\u53bf","code":"522728000000"},{"area":"\u957f\u987a\u53bf","code":"522729000000"},{"area":"\u9f99\u91cc\u53bf","code":"522730000000"},{"area":"\u60e0\u6c34\u53bf","code":"522731000000"},{"area":"\u4e09\u90fd\u6c34\u65cf\u81ea\u6cbb\u53bf","code":"522732000000"}]}]},{"province":"\u4e91\u5357\u7701","code":"530000","citys":[{"city":"\u6606\u660e\u5e02","code":"530100000000","areas":[{"area":"\u4e94\u534e\u533a","code":"530102000000"},{"area":"\u76d8\u9f99\u533a","code":"530103000000"},{"area":"\u5b98\u6e21\u533a","code":"530111000000"},{"area":"\u897f\u5c71\u533a","code":"530112000000"},{"area":"\u4e1c\u5ddd\u533a","code":"530113000000"},{"area":"\u5448\u8d21\u533a","code":"530114000000"},{"area":"\u664b\u5b81\u533a","code":"530115000000"},{"area":"\u5bcc\u6c11\u53bf","code":"530124000000"},{"area":"\u5b9c\u826f\u53bf","code":"530125000000"},{"area":"\u77f3\u6797\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530126000000"},{"area":"\u5d69\u660e\u53bf","code":"530127000000"},{"area":"\u7984\u529d\u5f5d\u65cf\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"530128000000"},{"area":"\u5bfb\u7538\u56de\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530129000000"},{"area":"\u5b89\u5b81\u5e02","code":"530181000000"}]},{"city":"\u66f2\u9756\u5e02","code":"530300000000","areas":[{"area":"\u9e92\u9e9f\u533a","code":"530302000000"},{"area":"\u6cbe\u76ca\u533a","code":"530303000000"},{"area":"\u9a6c\u9f99\u533a","code":"530304000000"},{"area":"\u9646\u826f\u53bf","code":"530322000000"},{"area":"\u5e08\u5b97\u53bf","code":"530323000000"},{"area":"\u7f57\u5e73\u53bf","code":"530324000000"},{"area":"\u5bcc\u6e90\u53bf","code":"530325000000"},{"area":"\u4f1a\u6cfd\u53bf","code":"530326000000"},{"area":"\u5ba3\u5a01\u5e02","code":"530381000000"}]},{"city":"\u7389\u6eaa\u5e02","code":"530400000000","areas":[{"area":"\u7ea2\u5854\u533a","code":"530402000000"},{"area":"\u6c5f\u5ddd\u533a","code":"530403000000"},{"area":"\u901a\u6d77\u53bf","code":"530423000000"},{"area":"\u534e\u5b81\u53bf","code":"530424000000"},{"area":"\u6613\u95e8\u53bf","code":"530425000000"},{"area":"\u5ce8\u5c71\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530426000000"},{"area":"\u65b0\u5e73\u5f5d\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","code":"530427000000"},{"area":"\u5143\u6c5f\u54c8\u5c3c\u65cf\u5f5d\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","code":"530428000000"},{"area":"\u6f84\u6c5f\u5e02","code":"530481000000"}]},{"city":"\u4fdd\u5c71\u5e02","code":"530500000000","areas":[{"area":"\u9686\u9633\u533a","code":"530502000000"},{"area":"\u65bd\u7538\u53bf","code":"530521000000"},{"area":"\u9f99\u9675\u53bf","code":"530523000000"},{"area":"\u660c\u5b81\u53bf","code":"530524000000"},{"area":"\u817e\u51b2\u5e02","code":"530581000000"}]},{"city":"\u662d\u901a\u5e02","code":"530600000000","areas":[{"area":"\u662d\u9633\u533a","code":"530602000000"},{"area":"\u9c81\u7538\u53bf","code":"530621000000"},{"area":"\u5de7\u5bb6\u53bf","code":"530622000000"},{"area":"\u76d0\u6d25\u53bf","code":"530623000000"},{"area":"\u5927\u5173\u53bf","code":"530624000000"},{"area":"\u6c38\u5584\u53bf","code":"530625000000"},{"area":"\u7ee5\u6c5f\u53bf","code":"530626000000"},{"area":"\u9547\u96c4\u53bf","code":"530627000000"},{"area":"\u5f5d\u826f\u53bf","code":"530628000000"},{"area":"\u5a01\u4fe1\u53bf","code":"530629000000"},{"area":"\u6c34\u5bcc\u5e02","code":"530681000000"}]},{"city":"\u4e3d\u6c5f\u5e02","code":"530700000000","areas":[{"area":"\u53e4\u57ce\u533a","code":"530702000000"},{"area":"\u7389\u9f99\u7eb3\u897f\u65cf\u81ea\u6cbb\u53bf","code":"530721000000"},{"area":"\u6c38\u80dc\u53bf","code":"530722000000"},{"area":"\u534e\u576a\u53bf","code":"530723000000"},{"area":"\u5b81\u8497\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530724000000"}]},{"city":"\u666e\u6d31\u5e02","code":"530800000000","areas":[{"area":"\u601d\u8305\u533a","code":"530802000000"},{"area":"\u5b81\u6d31\u54c8\u5c3c\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530821000000"},{"area":"\u58a8\u6c5f\u54c8\u5c3c\u65cf\u81ea\u6cbb\u53bf","code":"530822000000"},{"area":"\u666f\u4e1c\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530823000000"},{"area":"\u666f\u8c37\u50a3\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530824000000"},{"area":"\u9547\u6c85\u5f5d\u65cf\u54c8\u5c3c\u65cf\u62c9\u795c\u65cf\u81ea\u6cbb\u53bf","code":"530825000000"},{"area":"\u6c5f\u57ce\u54c8\u5c3c\u65cf\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"530826000000"},{"area":"\u5b5f\u8fde\u50a3\u65cf\u62c9\u795c\u65cf\u4f64\u65cf\u81ea\u6cbb\u53bf","code":"530827000000"},{"area":"\u6f9c\u6ca7\u62c9\u795c\u65cf\u81ea\u6cbb\u53bf","code":"530828000000"},{"area":"\u897f\u76df\u4f64\u65cf\u81ea\u6cbb\u53bf","code":"530829000000"}]},{"city":"\u4e34\u6ca7\u5e02","code":"530900000000","areas":[{"area":"\u4e34\u7fd4\u533a","code":"530902000000"},{"area":"\u51e4\u5e86\u53bf","code":"530921000000"},{"area":"\u4e91\u53bf","code":"530922000000"},{"area":"\u6c38\u5fb7\u53bf","code":"530923000000"},{"area":"\u9547\u5eb7\u53bf","code":"530924000000"},{"area":"\u53cc\u6c5f\u62c9\u795c\u65cf\u4f64\u65cf\u5e03\u6717\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","code":"530925000000"},{"area":"\u803f\u9a6c\u50a3\u65cf\u4f64\u65cf\u81ea\u6cbb\u53bf","code":"530926000000"},{"area":"\u6ca7\u6e90\u4f64\u65cf\u81ea\u6cbb\u53bf","code":"530927000000"}]},{"city":"\u695a\u96c4\u5f5d\u65cf\u81ea\u6cbb\u5dde","code":"532300000000","areas":[{"area":"\u695a\u96c4\u5e02","code":"532301000000"},{"area":"\u7984\u4e30\u5e02","code":"532302000000"},{"area":"\u53cc\u67cf\u53bf","code":"532322000000"},{"area":"\u725f\u5b9a\u53bf","code":"532323000000"},{"area":"\u5357\u534e\u53bf","code":"532324000000"},{"area":"\u59da\u5b89\u53bf","code":"532325000000"},{"area":"\u5927\u59da\u53bf","code":"532326000000"},{"area":"\u6c38\u4ec1\u53bf","code":"532327000000"},{"area":"\u5143\u8c0b\u53bf","code":"532328000000"},{"area":"\u6b66\u5b9a\u53bf","code":"532329000000"}]},{"city":"\u7ea2\u6cb3\u54c8\u5c3c\u65cf\u5f5d\u65cf\u81ea\u6cbb\u5dde","code":"532500000000","areas":[{"area":"\u4e2a\u65e7\u5e02","code":"532501000000"},{"area":"\u5f00\u8fdc\u5e02","code":"532502000000"},{"area":"\u8499\u81ea\u5e02","code":"532503000000"},{"area":"\u5f25\u52d2\u5e02","code":"532504000000"},{"area":"\u5c4f\u8fb9\u82d7\u65cf\u81ea\u6cbb\u53bf","code":"532523000000"},{"area":"\u5efa\u6c34\u53bf","code":"532524000000"},{"area":"\u77f3\u5c4f\u53bf","code":"532525000000"},{"area":"\u6cf8\u897f\u53bf","code":"532527000000"},{"area":"\u5143\u9633\u53bf","code":"532528000000"},{"area":"\u7ea2\u6cb3\u53bf","code":"532529000000"},{"area":"\u91d1\u5e73\u82d7\u65cf\u7476\u65cf\u50a3\u65cf\u81ea\u6cbb\u53bf","code":"532530000000"},{"area":"\u7eff\u6625\u53bf","code":"532531000000"},{"area":"\u6cb3\u53e3\u7476\u65cf\u81ea\u6cbb\u53bf","code":"532532000000"}]},{"city":"\u6587\u5c71\u58ee\u65cf\u82d7\u65cf\u81ea\u6cbb\u5dde","code":"532600000000","areas":[{"area":"\u6587\u5c71\u5e02","code":"532601000000"},{"area":"\u781a\u5c71\u53bf","code":"532622000000"},{"area":"\u897f\u7574\u53bf","code":"532623000000"},{"area":"\u9ebb\u6817\u5761\u53bf","code":"532624000000"},{"area":"\u9a6c\u5173\u53bf","code":"532625000000"},{"area":"\u4e18\u5317\u53bf","code":"532626000000"},{"area":"\u5e7f\u5357\u53bf","code":"532627000000"},{"area":"\u5bcc\u5b81\u53bf","code":"532628000000"}]},{"city":"\u897f\u53cc\u7248\u7eb3\u50a3\u65cf\u81ea\u6cbb\u5dde","code":"532800000000","areas":[{"area":"\u666f\u6d2a\u5e02","code":"532801000000"},{"area":"\u52d0\u6d77\u53bf","code":"532822000000"},{"area":"\u52d0\u814a\u53bf","code":"532823000000"}]},{"city":"\u5927\u7406\u767d\u65cf\u81ea\u6cbb\u5dde","code":"532900000000","areas":[{"area":"\u5927\u7406\u5e02","code":"532901000000"},{"area":"\u6f3e\u6fde\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"532922000000"},{"area":"\u7965\u4e91\u53bf","code":"532923000000"},{"area":"\u5bbe\u5ddd\u53bf","code":"532924000000"},{"area":"\u5f25\u6e21\u53bf","code":"532925000000"},{"area":"\u5357\u6da7\u5f5d\u65cf\u81ea\u6cbb\u53bf","code":"532926000000"},{"area":"\u5dcd\u5c71\u5f5d\u65cf\u56de\u65cf\u81ea\u6cbb\u53bf","code":"532927000000"},{"area":"\u6c38\u5e73\u53bf","code":"532928000000"},{"area":"\u4e91\u9f99\u53bf","code":"532929000000"},{"area":"\u6d31\u6e90\u53bf","code":"532930000000"},{"area":"\u5251\u5ddd\u53bf","code":"532931000000"},{"area":"\u9e64\u5e86\u53bf","code":"532932000000"}]},{"city":"\u5fb7\u5b8f\u50a3\u65cf\u666f\u9887\u65cf\u81ea\u6cbb\u5dde","code":"533100000000","areas":[{"area":"\u745e\u4e3d\u5e02","code":"533102000000"},{"area":"\u8292\u5e02","code":"533103000000"},{"area":"\u6881\u6cb3\u53bf","code":"533122000000"},{"area":"\u76c8\u6c5f\u53bf","code":"533123000000"},{"area":"\u9647\u5ddd\u53bf","code":"533124000000"}]},{"city":"\u6012\u6c5f\u5088\u50f3\u65cf\u81ea\u6cbb\u5dde","code":"533300000000","areas":[{"area":"\u6cf8\u6c34\u5e02","code":"533301000000"},{"area":"\u798f\u8d21\u53bf","code":"533323000000"},{"area":"\u8d21\u5c71\u72ec\u9f99\u65cf\u6012\u65cf\u81ea\u6cbb\u53bf","code":"533324000000"},{"area":"\u5170\u576a\u767d\u65cf\u666e\u7c73\u65cf\u81ea\u6cbb\u53bf","code":"533325000000"}]},{"city":"\u8fea\u5e86\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"533400000000","areas":[{"area":"\u9999\u683c\u91cc\u62c9\u5e02","code":"533401000000"},{"area":"\u5fb7\u94a6\u53bf","code":"533422000000"},{"area":"\u7ef4\u897f\u5088\u50f3\u65cf\u81ea\u6cbb\u53bf","code":"533423000000"}]}]},{"province":"\u897f\u85cf\u81ea\u6cbb\u533a","code":"540000","citys":[{"city":"\u62c9\u8428\u5e02","code":"540100000000","areas":[{"area":"\u57ce\u5173\u533a","code":"540102000000"},{"area":"\u5806\u9f99\u5fb7\u5e86\u533a","code":"540103000000"},{"area":"\u8fbe\u5b5c\u533a","code":"540104000000"},{"area":"\u6797\u5468\u53bf","code":"540121000000"},{"area":"\u5f53\u96c4\u53bf","code":"540122000000"},{"area":"\u5c3c\u6728\u53bf","code":"540123000000"},{"area":"\u66f2\u6c34\u53bf","code":"540124000000"},{"area":"\u58a8\u7af9\u5de5\u5361\u53bf","code":"540127000000"},{"area":"\u683c\u5c14\u6728\u85cf\u9752\u5de5\u4e1a\u56ed\u533a","code":"540171000000"},{"area":"\u62c9\u8428\u7ecf\u6d4e\u6280\u672f\u5f00\u53d1\u533a","code":"540172000000"},{"area":"\u897f\u85cf\u6587\u5316\u65c5\u6e38\u521b\u610f\u56ed\u533a","code":"540173000000"},{"area":"\u8fbe\u5b5c\u5de5\u4e1a\u56ed\u533a","code":"540174000000"}]},{"city":"\u65e5\u5580\u5219\u5e02","code":"540200000000","areas":[{"area":"\u6851\u73e0\u5b5c\u533a","code":"540202000000"},{"area":"\u5357\u6728\u6797\u53bf","code":"540221000000"},{"area":"\u6c5f\u5b5c\u53bf","code":"540222000000"},{"area":"\u5b9a\u65e5\u53bf","code":"540223000000"},{"area":"\u8428\u8fe6\u53bf","code":"540224000000"},{"area":"\u62c9\u5b5c\u53bf","code":"540225000000"},{"area":"\u6602\u4ec1\u53bf","code":"540226000000"},{"area":"\u8c22\u901a\u95e8\u53bf","code":"540227000000"},{"area":"\u767d\u6717\u53bf","code":"540228000000"},{"area":"\u4ec1\u5e03\u53bf","code":"540229000000"},{"area":"\u5eb7\u9a6c\u53bf","code":"540230000000"},{"area":"\u5b9a\u7ed3\u53bf","code":"540231000000"},{"area":"\u4ef2\u5df4\u53bf","code":"540232000000"},{"area":"\u4e9a\u4e1c\u53bf","code":"540233000000"},{"area":"\u5409\u9686\u53bf","code":"540234000000"},{"area":"\u8042\u62c9\u6728\u53bf","code":"540235000000"},{"area":"\u8428\u560e\u53bf","code":"540236000000"},{"area":"\u5c97\u5df4\u53bf","code":"540237000000"}]},{"city":"\u660c\u90fd\u5e02","code":"540300000000","areas":[{"area":"\u5361\u82e5\u533a","code":"540302000000"},{"area":"\u6c5f\u8fbe\u53bf","code":"540321000000"},{"area":"\u8d21\u89c9\u53bf","code":"540322000000"},{"area":"\u7c7b\u4e4c\u9f50\u53bf","code":"540323000000"},{"area":"\u4e01\u9752\u53bf","code":"540324000000"},{"area":"\u5bdf\u96c5\u53bf","code":"540325000000"},{"area":"\u516b\u5bbf\u53bf","code":"540326000000"},{"area":"\u5de6\u8d21\u53bf","code":"540327000000"},{"area":"\u8292\u5eb7\u53bf","code":"540328000000"},{"area":"\u6d1b\u9686\u53bf","code":"540329000000"},{"area":"\u8fb9\u575d\u53bf","code":"540330000000"}]},{"city":"\u6797\u829d\u5e02","code":"540400000000","areas":[{"area":"\u5df4\u5b9c\u533a","code":"540402000000"},{"area":"\u5de5\u5e03\u6c5f\u8fbe\u53bf","code":"540421000000"},{"area":"\u58a8\u8131\u53bf","code":"540423000000"},{"area":"\u6ce2\u5bc6\u53bf","code":"540424000000"},{"area":"\u5bdf\u9685\u53bf","code":"540425000000"},{"area":"\u6717\u53bf","code":"540426000000"},{"area":"\u7c73\u6797\u5e02","code":"540481000000"}]},{"city":"\u5c71\u5357\u5e02","code":"540500000000","areas":[{"area":"\u4e43\u4e1c\u533a","code":"540502000000"},{"area":"\u624e\u56ca\u53bf","code":"540521000000"},{"area":"\u8d21\u560e\u53bf","code":"540522000000"},{"area":"\u6851\u65e5\u53bf","code":"540523000000"},{"area":"\u743c\u7ed3\u53bf","code":"540524000000"},{"area":"\u66f2\u677e\u53bf","code":"540525000000"},{"area":"\u63aa\u7f8e\u53bf","code":"540526000000"},{"area":"\u6d1b\u624e\u53bf","code":"540527000000"},{"area":"\u52a0\u67e5\u53bf","code":"540528000000"},{"area":"\u9686\u5b50\u53bf","code":"540529000000"},{"area":"\u6d6a\u5361\u5b50\u53bf","code":"540531000000"},{"area":"\u9519\u90a3\u5e02","code":"540581000000"}]},{"city":"\u90a3\u66f2\u5e02","code":"540600000000","areas":[{"area":"\u8272\u5c3c\u533a","code":"540602000000"},{"area":"\u5609\u9ece\u53bf","code":"540621000000"},{"area":"\u6bd4\u5982\u53bf","code":"540622000000"},{"area":"\u8042\u8363\u53bf","code":"540623000000"},{"area":"\u5b89\u591a\u53bf","code":"540624000000"},{"area":"\u7533\u624e\u53bf","code":"540625000000"},{"area":"\u7d22\u53bf","code":"540626000000"},{"area":"\u73ed\u6208\u53bf","code":"540627000000"},{"area":"\u5df4\u9752\u53bf","code":"540628000000"},{"area":"\u5c3c\u739b\u53bf","code":"540629000000"},{"area":"\u53cc\u6e56\u53bf","code":"540630000000"}]},{"city":"\u963f\u91cc\u5730\u533a","code":"542500000000","areas":[{"area":"\u666e\u5170\u53bf","code":"542521000000"},{"area":"\u672d\u8fbe\u53bf","code":"542522000000"},{"area":"\u5676\u5c14\u53bf","code":"542523000000"},{"area":"\u65e5\u571f\u53bf","code":"542524000000"},{"area":"\u9769\u5409\u53bf","code":"542525000000"},{"area":"\u6539\u5219\u53bf","code":"542526000000"},{"area":"\u63aa\u52e4\u53bf","code":"542527000000"}]}]},{"province":"\u9655\u897f\u7701","code":"610000","citys":[{"city":"\u897f\u5b89\u5e02","code":"610100000000","areas":[{"area":"\u65b0\u57ce\u533a","code":"610102000000"},{"area":"\u7891\u6797\u533a","code":"610103000000"},{"area":"\u83b2\u6e56\u533a","code":"610104000000"},{"area":"\u705e\u6865\u533a","code":"610111000000"},{"area":"\u672a\u592e\u533a","code":"610112000000"},{"area":"\u96c1\u5854\u533a","code":"610113000000"},{"area":"\u960e\u826f\u533a","code":"610114000000"},{"area":"\u4e34\u6f7c\u533a","code":"610115000000"},{"area":"\u957f\u5b89\u533a","code":"610116000000"},{"area":"\u9ad8\u9675\u533a","code":"610117000000"},{"area":"\u9120\u9091\u533a","code":"610118000000"},{"area":"\u84dd\u7530\u53bf","code":"610122000000"},{"area":"\u5468\u81f3\u53bf","code":"610124000000"}]},{"city":"\u94dc\u5ddd\u5e02","code":"610200000000","areas":[{"area":"\u738b\u76ca\u533a","code":"610202000000"},{"area":"\u5370\u53f0\u533a","code":"610203000000"},{"area":"\u8000\u5dde\u533a","code":"610204000000"},{"area":"\u5b9c\u541b\u53bf","code":"610222000000"}]},{"city":"\u5b9d\u9e21\u5e02","code":"610300000000","areas":[{"area":"\u6e2d\u6ee8\u533a","code":"610302000000"},{"area":"\u91d1\u53f0\u533a","code":"610303000000"},{"area":"\u9648\u4ed3\u533a","code":"610304000000"},{"area":"\u51e4\u7fd4\u533a","code":"610305000000"},{"area":"\u5c90\u5c71\u53bf","code":"610323000000"},{"area":"\u6276\u98ce\u53bf","code":"610324000000"},{"area":"\u7709\u53bf","code":"610326000000"},{"area":"\u9647\u53bf","code":"610327000000"},{"area":"\u5343\u9633\u53bf","code":"610328000000"},{"area":"\u9e9f\u6e38\u53bf","code":"610329000000"},{"area":"\u51e4\u53bf","code":"610330000000"},{"area":"\u592a\u767d\u53bf","code":"610331000000"}]},{"city":"\u54b8\u9633\u5e02","code":"610400000000","areas":[{"area":"\u79e6\u90fd\u533a","code":"610402000000"},{"area":"\u6768\u9675\u533a","code":"610403000000"},{"area":"\u6e2d\u57ce\u533a","code":"610404000000"},{"area":"\u4e09\u539f\u53bf","code":"610422000000"},{"area":"\u6cfe\u9633\u53bf","code":"610423000000"},{"area":"\u4e7e\u53bf","code":"610424000000"},{"area":"\u793c\u6cc9\u53bf","code":"610425000000"},{"area":"\u6c38\u5bff\u53bf","code":"610426000000"},{"area":"\u957f\u6b66\u53bf","code":"610428000000"},{"area":"\u65ec\u9091\u53bf","code":"610429000000"},{"area":"\u6df3\u5316\u53bf","code":"610430000000"},{"area":"\u6b66\u529f\u53bf","code":"610431000000"},{"area":"\u5174\u5e73\u5e02","code":"610481000000"},{"area":"\u5f6c\u5dde\u5e02","code":"610482000000"}]},{"city":"\u6e2d\u5357\u5e02","code":"610500000000","areas":[{"area":"\u4e34\u6e2d\u533a","code":"610502000000"},{"area":"\u534e\u5dde\u533a","code":"610503000000"},{"area":"\u6f7c\u5173\u53bf","code":"610522000000"},{"area":"\u5927\u8354\u53bf","code":"610523000000"},{"area":"\u5408\u9633\u53bf","code":"610524000000"},{"area":"\u6f84\u57ce\u53bf","code":"610525000000"},{"area":"\u84b2\u57ce\u53bf","code":"610526000000"},{"area":"\u767d\u6c34\u53bf","code":"610527000000"},{"area":"\u5bcc\u5e73\u53bf","code":"610528000000"},{"area":"\u97e9\u57ce\u5e02","code":"610581000000"},{"area":"\u534e\u9634\u5e02","code":"610582000000"}]},{"city":"\u5ef6\u5b89\u5e02","code":"610600000000","areas":[{"area":"\u5b9d\u5854\u533a","code":"610602000000"},{"area":"\u5b89\u585e\u533a","code":"610603000000"},{"area":"\u5ef6\u957f\u53bf","code":"610621000000"},{"area":"\u5ef6\u5ddd\u53bf","code":"610622000000"},{"area":"\u5fd7\u4e39\u53bf","code":"610625000000"},{"area":"\u5434\u8d77\u53bf","code":"610626000000"},{"area":"\u7518\u6cc9\u53bf","code":"610627000000"},{"area":"\u5bcc\u53bf","code":"610628000000"},{"area":"\u6d1b\u5ddd\u53bf","code":"610629000000"},{"area":"\u5b9c\u5ddd\u53bf","code":"610630000000"},{"area":"\u9ec4\u9f99\u53bf","code":"610631000000"},{"area":"\u9ec4\u9675\u53bf","code":"610632000000"},{"area":"\u5b50\u957f\u5e02","code":"610681000000"}]},{"city":"\u6c49\u4e2d\u5e02","code":"610700000000","areas":[{"area":"\u6c49\u53f0\u533a","code":"610702000000"},{"area":"\u5357\u90d1\u533a","code":"610703000000"},{"area":"\u57ce\u56fa\u53bf","code":"610722000000"},{"area":"\u6d0b\u53bf","code":"610723000000"},{"area":"\u897f\u4e61\u53bf","code":"610724000000"},{"area":"\u52c9\u53bf","code":"610725000000"},{"area":"\u5b81\u5f3a\u53bf","code":"610726000000"},{"area":"\u7565\u9633\u53bf","code":"610727000000"},{"area":"\u9547\u5df4\u53bf","code":"610728000000"},{"area":"\u7559\u575d\u53bf","code":"610729000000"},{"area":"\u4f5b\u576a\u53bf","code":"610730000000"}]},{"city":"\u6986\u6797\u5e02","code":"610800000000","areas":[{"area":"\u6986\u9633\u533a","code":"610802000000"},{"area":"\u6a2a\u5c71\u533a","code":"610803000000"},{"area":"\u5e9c\u8c37\u53bf","code":"610822000000"},{"area":"\u9756\u8fb9\u53bf","code":"610824000000"},{"area":"\u5b9a\u8fb9\u53bf","code":"610825000000"},{"area":"\u7ee5\u5fb7\u53bf","code":"610826000000"},{"area":"\u7c73\u8102\u53bf","code":"610827000000"},{"area":"\u4f73\u53bf","code":"610828000000"},{"area":"\u5434\u5821\u53bf","code":"610829000000"},{"area":"\u6e05\u6da7\u53bf","code":"610830000000"},{"area":"\u5b50\u6d32\u53bf","code":"610831000000"},{"area":"\u795e\u6728\u5e02","code":"610881000000"}]},{"city":"\u5b89\u5eb7\u5e02","code":"610900000000","areas":[{"area":"\u6c49\u6ee8\u533a","code":"610902000000"},{"area":"\u6c49\u9634\u53bf","code":"610921000000"},{"area":"\u77f3\u6cc9\u53bf","code":"610922000000"},{"area":"\u5b81\u9655\u53bf","code":"610923000000"},{"area":"\u7d2b\u9633\u53bf","code":"610924000000"},{"area":"\u5c9a\u768b\u53bf","code":"610925000000"},{"area":"\u5e73\u5229\u53bf","code":"610926000000"},{"area":"\u9547\u576a\u53bf","code":"610927000000"},{"area":"\u767d\u6cb3\u53bf","code":"610929000000"},{"area":"\u65ec\u9633\u5e02","code":"610981000000"}]},{"city":"\u5546\u6d1b\u5e02","code":"611000000000","areas":[{"area":"\u5546\u5dde\u533a","code":"611002000000"},{"area":"\u6d1b\u5357\u53bf","code":"611021000000"},{"area":"\u4e39\u51e4\u53bf","code":"611022000000"},{"area":"\u5546\u5357\u53bf","code":"611023000000"},{"area":"\u5c71\u9633\u53bf","code":"611024000000"},{"area":"\u9547\u5b89\u53bf","code":"611025000000"},{"area":"\u67de\u6c34\u53bf","code":"611026000000"}]}]},{"province":"\u7518\u8083\u7701","code":"620000","citys":[{"city":"\u5170\u5dde\u5e02","code":"620100000000","areas":[{"area":"\u57ce\u5173\u533a","code":"620102000000"},{"area":"\u4e03\u91cc\u6cb3\u533a","code":"620103000000"},{"area":"\u897f\u56fa\u533a","code":"620104000000"},{"area":"\u5b89\u5b81\u533a","code":"620105000000"},{"area":"\u7ea2\u53e4\u533a","code":"620111000000"},{"area":"\u6c38\u767b\u53bf","code":"620121000000"},{"area":"\u768b\u5170\u53bf","code":"620122000000"},{"area":"\u6986\u4e2d\u53bf","code":"620123000000"},{"area":"\u5170\u5dde\u65b0\u533a","code":"620171000000"}]},{"city":"\u5609\u5cea\u5173\u5e02","code":"620200000000","areas":[]},{"city":"\u91d1\u660c\u5e02","code":"620300000000","areas":[{"area":"\u91d1\u5ddd\u533a","code":"620302000000"},{"area":"\u6c38\u660c\u53bf","code":"620321000000"}]},{"city":"\u767d\u94f6\u5e02","code":"620400000000","areas":[{"area":"\u767d\u94f6\u533a","code":"620402000000"},{"area":"\u5e73\u5ddd\u533a","code":"620403000000"},{"area":"\u9756\u8fdc\u53bf","code":"620421000000"},{"area":"\u4f1a\u5b81\u53bf","code":"620422000000"},{"area":"\u666f\u6cf0\u53bf","code":"620423000000"}]},{"city":"\u5929\u6c34\u5e02","code":"620500000000","areas":[{"area":"\u79e6\u5dde\u533a","code":"620502000000"},{"area":"\u9ea6\u79ef\u533a","code":"620503000000"},{"area":"\u6e05\u6c34\u53bf","code":"620521000000"},{"area":"\u79e6\u5b89\u53bf","code":"620522000000"},{"area":"\u7518\u8c37\u53bf","code":"620523000000"},{"area":"\u6b66\u5c71\u53bf","code":"620524000000"},{"area":"\u5f20\u5bb6\u5ddd\u56de\u65cf\u81ea\u6cbb\u53bf","code":"620525000000"}]},{"city":"\u6b66\u5a01\u5e02","code":"620600000000","areas":[{"area":"\u51c9\u5dde\u533a","code":"620602000000"},{"area":"\u6c11\u52e4\u53bf","code":"620621000000"},{"area":"\u53e4\u6d6a\u53bf","code":"620622000000"},{"area":"\u5929\u795d\u85cf\u65cf\u81ea\u6cbb\u53bf","code":"620623000000"}]},{"city":"\u5f20\u6396\u5e02","code":"620700000000","areas":[{"area":"\u7518\u5dde\u533a","code":"620702000000"},{"area":"\u8083\u5357\u88d5\u56fa\u65cf\u81ea\u6cbb\u53bf","code":"620721000000"},{"area":"\u6c11\u4e50\u53bf","code":"620722000000"},{"area":"\u4e34\u6cfd\u53bf","code":"620723000000"},{"area":"\u9ad8\u53f0\u53bf","code":"620724000000"},{"area":"\u5c71\u4e39\u53bf","code":"620725000000"}]},{"city":"\u5e73\u51c9\u5e02","code":"620800000000","areas":[{"area":"\u5d06\u5cd2\u533a","code":"620802000000"},{"area":"\u6cfe\u5ddd\u53bf","code":"620821000000"},{"area":"\u7075\u53f0\u53bf","code":"620822000000"},{"area":"\u5d07\u4fe1\u53bf","code":"620823000000"},{"area":"\u5e84\u6d6a\u53bf","code":"620825000000"},{"area":"\u9759\u5b81\u53bf","code":"620826000000"},{"area":"\u534e\u4ead\u5e02","code":"620881000000"}]},{"city":"\u9152\u6cc9\u5e02","code":"620900000000","areas":[{"area":"\u8083\u5dde\u533a","code":"620902000000"},{"area":"\u91d1\u5854\u53bf","code":"620921000000"},{"area":"\u74dc\u5dde\u53bf","code":"620922000000"},{"area":"\u8083\u5317\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","code":"620923000000"},{"area":"\u963f\u514b\u585e\u54c8\u8428\u514b\u65cf\u81ea\u6cbb\u53bf","code":"620924000000"},{"area":"\u7389\u95e8\u5e02","code":"620981000000"},{"area":"\u6566\u714c\u5e02","code":"620982000000"}]},{"city":"\u5e86\u9633\u5e02","code":"621000000000","areas":[{"area":"\u897f\u5cf0\u533a","code":"621002000000"},{"area":"\u5e86\u57ce\u53bf","code":"621021000000"},{"area":"\u73af\u53bf","code":"621022000000"},{"area":"\u534e\u6c60\u53bf","code":"621023000000"},{"area":"\u5408\u6c34\u53bf","code":"621024000000"},{"area":"\u6b63\u5b81\u53bf","code":"621025000000"},{"area":"\u5b81\u53bf","code":"621026000000"},{"area":"\u9547\u539f\u53bf","code":"621027000000"}]},{"city":"\u5b9a\u897f\u5e02","code":"621100000000","areas":[{"area":"\u5b89\u5b9a\u533a","code":"621102000000"},{"area":"\u901a\u6e2d\u53bf","code":"621121000000"},{"area":"\u9647\u897f\u53bf","code":"621122000000"},{"area":"\u6e2d\u6e90\u53bf","code":"621123000000"},{"area":"\u4e34\u6d2e\u53bf","code":"621124000000"},{"area":"\u6f33\u53bf","code":"621125000000"},{"area":"\u5cb7\u53bf","code":"621126000000"}]},{"city":"\u9647\u5357\u5e02","code":"621200000000","areas":[{"area":"\u6b66\u90fd\u533a","code":"621202000000"},{"area":"\u6210\u53bf","code":"621221000000"},{"area":"\u6587\u53bf","code":"621222000000"},{"area":"\u5b95\u660c\u53bf","code":"621223000000"},{"area":"\u5eb7\u53bf","code":"621224000000"},{"area":"\u897f\u548c\u53bf","code":"621225000000"},{"area":"\u793c\u53bf","code":"621226000000"},{"area":"\u5fbd\u53bf","code":"621227000000"},{"area":"\u4e24\u5f53\u53bf","code":"621228000000"}]},{"city":"\u4e34\u590f\u56de\u65cf\u81ea\u6cbb\u5dde","code":"622900000000","areas":[{"area":"\u4e34\u590f\u5e02","code":"622901000000"},{"area":"\u4e34\u590f\u53bf","code":"622921000000"},{"area":"\u5eb7\u4e50\u53bf","code":"622922000000"},{"area":"\u6c38\u9756\u53bf","code":"622923000000"},{"area":"\u5e7f\u6cb3\u53bf","code":"622924000000"},{"area":"\u548c\u653f\u53bf","code":"622925000000"},{"area":"\u4e1c\u4e61\u65cf\u81ea\u6cbb\u53bf","code":"622926000000"},{"area":"\u79ef\u77f3\u5c71\u4fdd\u5b89\u65cf\u4e1c\u4e61\u65cf\u6492\u62c9\u65cf\u81ea\u6cbb\u53bf","code":"622927000000"}]},{"city":"\u7518\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"623000000000","areas":[{"area":"\u5408\u4f5c\u5e02","code":"623001000000"},{"area":"\u4e34\u6f6d\u53bf","code":"623021000000"},{"area":"\u5353\u5c3c\u53bf","code":"623022000000"},{"area":"\u821f\u66f2\u53bf","code":"623023000000"},{"area":"\u8fed\u90e8\u53bf","code":"623024000000"},{"area":"\u739b\u66f2\u53bf","code":"623025000000"},{"area":"\u788c\u66f2\u53bf","code":"623026000000"},{"area":"\u590f\u6cb3\u53bf","code":"623027000000"}]}]},{"province":"\u9752\u6d77\u7701","code":"630000","citys":[{"city":"\u897f\u5b81\u5e02","code":"630100000000","areas":[{"area":"\u57ce\u4e1c\u533a","code":"630102000000"},{"area":"\u57ce\u4e2d\u533a","code":"630103000000"},{"area":"\u57ce\u897f\u533a","code":"630104000000"},{"area":"\u57ce\u5317\u533a","code":"630105000000"},{"area":"\u6e5f\u4e2d\u533a","code":"630106000000"},{"area":"\u5927\u901a\u56de\u65cf\u571f\u65cf\u81ea\u6cbb\u53bf","code":"630121000000"},{"area":"\u6e5f\u6e90\u53bf","code":"630123000000"}]},{"city":"\u6d77\u4e1c\u5e02","code":"630200000000","areas":[{"area":"\u4e50\u90fd\u533a","code":"630202000000"},{"area":"\u5e73\u5b89\u533a","code":"630203000000"},{"area":"\u6c11\u548c\u56de\u65cf\u571f\u65cf\u81ea\u6cbb\u53bf","code":"630222000000"},{"area":"\u4e92\u52a9\u571f\u65cf\u81ea\u6cbb\u53bf","code":"630223000000"},{"area":"\u5316\u9686\u56de\u65cf\u81ea\u6cbb\u53bf","code":"630224000000"},{"area":"\u5faa\u5316\u6492\u62c9\u65cf\u81ea\u6cbb\u53bf","code":"630225000000"}]},{"city":"\u6d77\u5317\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"632200000000","areas":[{"area":"\u95e8\u6e90\u56de\u65cf\u81ea\u6cbb\u53bf","code":"632221000000"},{"area":"\u7941\u8fde\u53bf","code":"632222000000"},{"area":"\u6d77\u664f\u53bf","code":"632223000000"},{"area":"\u521a\u5bdf\u53bf","code":"632224000000"}]},{"city":"\u9ec4\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"632300000000","areas":[{"area":"\u540c\u4ec1\u5e02","code":"632301000000"},{"area":"\u5c16\u624e\u53bf","code":"632322000000"},{"area":"\u6cfd\u5e93\u53bf","code":"632323000000"},{"area":"\u6cb3\u5357\u8499\u53e4\u65cf\u81ea\u6cbb\u53bf","code":"632324000000"}]},{"city":"\u6d77\u5357\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"632500000000","areas":[{"area":"\u5171\u548c\u53bf","code":"632521000000"},{"area":"\u540c\u5fb7\u53bf","code":"632522000000"},{"area":"\u8d35\u5fb7\u53bf","code":"632523000000"},{"area":"\u5174\u6d77\u53bf","code":"632524000000"},{"area":"\u8d35\u5357\u53bf","code":"632525000000"}]},{"city":"\u679c\u6d1b\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"632600000000","areas":[{"area":"\u739b\u6c81\u53bf","code":"632621000000"},{"area":"\u73ed\u739b\u53bf","code":"632622000000"},{"area":"\u7518\u5fb7\u53bf","code":"632623000000"},{"area":"\u8fbe\u65e5\u53bf","code":"632624000000"},{"area":"\u4e45\u6cbb\u53bf","code":"632625000000"},{"area":"\u739b\u591a\u53bf","code":"632626000000"}]},{"city":"\u7389\u6811\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"632700000000","areas":[{"area":"\u7389\u6811\u5e02","code":"632701000000"},{"area":"\u6742\u591a\u53bf","code":"632722000000"},{"area":"\u79f0\u591a\u53bf","code":"632723000000"},{"area":"\u6cbb\u591a\u53bf","code":"632724000000"},{"area":"\u56ca\u8c26\u53bf","code":"632725000000"},{"area":"\u66f2\u9ebb\u83b1\u53bf","code":"632726000000"}]},{"city":"\u6d77\u897f\u8499\u53e4\u65cf\u85cf\u65cf\u81ea\u6cbb\u5dde","code":"632800000000","areas":[{"area":"\u683c\u5c14\u6728\u5e02","code":"632801000000"},{"area":"\u5fb7\u4ee4\u54c8\u5e02","code":"632802000000"},{"area":"\u832b\u5d16\u5e02","code":"632803000000"},{"area":"\u4e4c\u5170\u53bf","code":"632821000000"},{"area":"\u90fd\u5170\u53bf","code":"632822000000"},{"area":"\u5929\u5cfb\u53bf","code":"632823000000"},{"area":"\u5927\u67f4\u65e6\u884c\u653f\u59d4\u5458\u4f1a","code":"632857000000"}]}]},{"province":"\u5b81\u590f\u56de\u65cf\u81ea\u6cbb\u533a","code":"640000","citys":[{"city":"\u94f6\u5ddd\u5e02","code":"640100000000","areas":[{"area":"\u5174\u5e86\u533a","code":"640104000000"},{"area":"\u897f\u590f\u533a","code":"640105000000"},{"area":"\u91d1\u51e4\u533a","code":"640106000000"},{"area":"\u6c38\u5b81\u53bf","code":"640121000000"},{"area":"\u8d3a\u5170\u53bf","code":"640122000000"},{"area":"\u7075\u6b66\u5e02","code":"640181000000"}]},{"city":"\u77f3\u5634\u5c71\u5e02","code":"640200000000","areas":[{"area":"\u5927\u6b66\u53e3\u533a","code":"640202000000"},{"area":"\u60e0\u519c\u533a","code":"640205000000"},{"area":"\u5e73\u7f57\u53bf","code":"640221000000"}]},{"city":"\u5434\u5fe0\u5e02","code":"640300000000","areas":[{"area":"\u5229\u901a\u533a","code":"640302000000"},{"area":"\u7ea2\u5bfa\u5821\u533a","code":"640303000000"},{"area":"\u76d0\u6c60\u53bf","code":"640323000000"},{"area":"\u540c\u5fc3\u53bf","code":"640324000000"},{"area":"\u9752\u94dc\u5ce1\u5e02","code":"640381000000"}]},{"city":"\u56fa\u539f\u5e02","code":"640400000000","areas":[{"area":"\u539f\u5dde\u533a","code":"640402000000"},{"area":"\u897f\u5409\u53bf","code":"640422000000"},{"area":"\u9686\u5fb7\u53bf","code":"640423000000"},{"area":"\u6cfe\u6e90\u53bf","code":"640424000000"},{"area":"\u5f6d\u9633\u53bf","code":"640425000000"}]},{"city":"\u4e2d\u536b\u5e02","code":"640500000000","areas":[{"area":"\u6c99\u5761\u5934\u533a","code":"640502000000"},{"area":"\u4e2d\u5b81\u53bf","code":"640521000000"},{"area":"\u6d77\u539f\u53bf","code":"640522000000"}]}]},{"province":"\u65b0\u7586\u7ef4\u543e\u5c14\u81ea\u6cbb\u533a","code":"650000","citys":[{"city":"\u4e4c\u9c81\u6728\u9f50\u5e02","code":"650100000000","areas":[{"area":"\u5929\u5c71\u533a","code":"650102000000"},{"area":"\u6c99\u4f9d\u5df4\u514b\u533a","code":"650103000000"},{"area":"\u65b0\u5e02\u533a","code":"650104000000"},{"area":"\u6c34\u78e8\u6c9f\u533a","code":"650105000000"},{"area":"\u5934\u5c6f\u6cb3\u533a","code":"650106000000"},{"area":"\u8fbe\u5742\u57ce\u533a","code":"650107000000"},{"area":"\u7c73\u4e1c\u533a","code":"650109000000"},{"area":"\u4e4c\u9c81\u6728\u9f50\u53bf","code":"650121000000"}]},{"city":"\u514b\u62c9\u739b\u4f9d\u5e02","code":"650200000000","areas":[{"area":"\u72ec\u5c71\u5b50\u533a","code":"650202000000"},{"area":"\u514b\u62c9\u739b\u4f9d\u533a","code":"650203000000"},{"area":"\u767d\u78b1\u6ee9\u533a","code":"650204000000"},{"area":"\u4e4c\u5c14\u79be\u533a","code":"650205000000"}]},{"city":"\u5410\u9c81\u756a\u5e02","code":"650400000000","areas":[{"area":"\u9ad8\u660c\u533a","code":"650402000000"},{"area":"\u912f\u5584\u53bf","code":"650421000000"},{"area":"\u6258\u514b\u900a\u53bf","code":"650422000000"}]},{"city":"\u54c8\u5bc6\u5e02","code":"650500000000","areas":[{"area":"\u4f0a\u5dde\u533a","code":"650502000000"},{"area":"\u5df4\u91cc\u5764\u54c8\u8428\u514b\u81ea\u6cbb\u53bf","code":"650521000000"},{"area":"\u4f0a\u543e\u53bf","code":"650522000000"}]},{"city":"\u660c\u5409\u56de\u65cf\u81ea\u6cbb\u5dde","code":"652300000000","areas":[{"area":"\u660c\u5409\u5e02","code":"652301000000"},{"area":"\u961c\u5eb7\u5e02","code":"652302000000"},{"area":"\u547c\u56fe\u58c1\u53bf","code":"652323000000"},{"area":"\u739b\u7eb3\u65af\u53bf","code":"652324000000"},{"area":"\u5947\u53f0\u53bf","code":"652325000000"},{"area":"\u5409\u6728\u8428\u5c14\u53bf","code":"652327000000"},{"area":"\u6728\u5792\u54c8\u8428\u514b\u81ea\u6cbb\u53bf","code":"652328000000"}]},{"city":"\u535a\u5c14\u5854\u62c9\u8499\u53e4\u81ea\u6cbb\u5dde","code":"652700000000","areas":[{"area":"\u535a\u4e50\u5e02","code":"652701000000"},{"area":"\u963f\u62c9\u5c71\u53e3\u5e02","code":"652702000000"},{"area":"\u7cbe\u6cb3\u53bf","code":"652722000000"},{"area":"\u6e29\u6cc9\u53bf","code":"652723000000"}]},{"city":"\u5df4\u97f3\u90ed\u695e\u8499\u53e4\u81ea\u6cbb\u5dde","code":"652800000000","areas":[{"area":"\u5e93\u5c14\u52d2\u5e02","code":"652801000000"},{"area":"\u8f6e\u53f0\u53bf","code":"652822000000"},{"area":"\u5c09\u7281\u53bf","code":"652823000000"},{"area":"\u82e5\u7f8c\u53bf","code":"652824000000"},{"area":"\u4e14\u672b\u53bf","code":"652825000000"},{"area":"\u7109\u8006\u56de\u65cf\u81ea\u6cbb\u53bf","code":"652826000000"},{"area":"\u548c\u9759\u53bf","code":"652827000000"},{"area":"\u548c\u7855\u53bf","code":"652828000000"},{"area":"\u535a\u6e56\u53bf","code":"652829000000"}]},{"city":"\u963f\u514b\u82cf\u5730\u533a","code":"652900000000","areas":[{"area":"\u963f\u514b\u82cf\u5e02","code":"652901000000"},{"area":"\u5e93\u8f66\u5e02","code":"652902000000"},{"area":"\u6e29\u5bbf\u53bf","code":"652922000000"},{"area":"\u6c99\u96c5\u53bf","code":"652924000000"},{"area":"\u65b0\u548c\u53bf","code":"652925000000"},{"area":"\u62dc\u57ce\u53bf","code":"652926000000"},{"area":"\u4e4c\u4ec0\u53bf","code":"652927000000"},{"area":"\u963f\u74e6\u63d0\u53bf","code":"652928000000"},{"area":"\u67ef\u576a\u53bf","code":"652929000000"}]},{"city":"\u514b\u5b5c\u52d2\u82cf\u67ef\u5c14\u514b\u5b5c\u81ea\u6cbb\u5dde","code":"653000000000","areas":[{"area":"\u963f\u56fe\u4ec0\u5e02","code":"653001000000"},{"area":"\u963f\u514b\u9676\u53bf","code":"653022000000"},{"area":"\u963f\u5408\u5947\u53bf","code":"653023000000"},{"area":"\u4e4c\u6070\u53bf","code":"653024000000"}]},{"city":"\u5580\u4ec0\u5730\u533a","code":"653100000000","areas":[{"area":"\u5580\u4ec0\u5e02","code":"653101000000"},{"area":"\u758f\u9644\u53bf","code":"653121000000"},{"area":"\u758f\u52d2\u53bf","code":"653122000000"},{"area":"\u82f1\u5409\u6c99\u53bf","code":"653123000000"},{"area":"\u6cfd\u666e\u53bf","code":"653124000000"},{"area":"\u838e\u8f66\u53bf","code":"653125000000"},{"area":"\u53f6\u57ce\u53bf","code":"653126000000"},{"area":"\u9ea6\u76d6\u63d0\u53bf","code":"653127000000"},{"area":"\u5cb3\u666e\u6e56\u53bf","code":"653128000000"},{"area":"\u4f3d\u5e08\u53bf","code":"653129000000"},{"area":"\u5df4\u695a\u53bf","code":"653130000000"},{"area":"\u5854\u4ec0\u5e93\u5c14\u5e72\u5854\u5409\u514b\u81ea\u6cbb\u53bf","code":"653131000000"}]},{"city":"\u548c\u7530\u5730\u533a","code":"653200000000","areas":[{"area":"\u548c\u7530\u5e02","code":"653201000000"},{"area":"\u548c\u7530\u53bf","code":"653221000000"},{"area":"\u58a8\u7389\u53bf","code":"653222000000"},{"area":"\u76ae\u5c71\u53bf","code":"653223000000"},{"area":"\u6d1b\u6d66\u53bf","code":"653224000000"},{"area":"\u7b56\u52d2\u53bf","code":"653225000000"},{"area":"\u4e8e\u7530\u53bf","code":"653226000000"},{"area":"\u6c11\u4e30\u53bf","code":"653227000000"}]},{"city":"\u4f0a\u7281\u54c8\u8428\u514b\u81ea\u6cbb\u5dde","code":"654000000000","areas":[{"area":"\u4f0a\u5b81\u5e02","code":"654002000000"},{"area":"\u594e\u5c6f\u5e02","code":"654003000000"},{"area":"\u970d\u5c14\u679c\u65af\u5e02","code":"654004000000"},{"area":"\u4f0a\u5b81\u53bf","code":"654021000000"},{"area":"\u5bdf\u5e03\u67e5\u5c14\u9521\u4f2f\u81ea\u6cbb\u53bf","code":"654022000000"},{"area":"\u970d\u57ce\u53bf","code":"654023000000"},{"area":"\u5de9\u7559\u53bf","code":"654024000000"},{"area":"\u65b0\u6e90\u53bf","code":"654025000000"},{"area":"\u662d\u82cf\u53bf","code":"654026000000"},{"area":"\u7279\u514b\u65af\u53bf","code":"654027000000"},{"area":"\u5c3c\u52d2\u514b\u53bf","code":"654028000000"}]},{"city":"\u5854\u57ce\u5730\u533a","code":"654200000000","areas":[{"area":"\u5854\u57ce\u5e02","code":"654201000000"},{"area":"\u4e4c\u82cf\u5e02","code":"654202000000"},{"area":"\u6c99\u6e7e\u5e02","code":"654203000000"},{"area":"\u989d\u654f\u53bf","code":"654221000000"},{"area":"\u6258\u91cc\u53bf","code":"654224000000"},{"area":"\u88d5\u6c11\u53bf","code":"654225000000"},{"area":"\u548c\u5e03\u514b\u8d5b\u5c14\u8499\u53e4\u81ea\u6cbb\u53bf","code":"654226000000"}]},{"city":"\u963f\u52d2\u6cf0\u5730\u533a","code":"654300000000","areas":[{"area":"\u963f\u52d2\u6cf0\u5e02","code":"654301000000"},{"area":"\u5e03\u5c14\u6d25\u53bf","code":"654321000000"},{"area":"\u5bcc\u8574\u53bf","code":"654322000000"},{"area":"\u798f\u6d77\u53bf","code":"654323000000"},{"area":"\u54c8\u5df4\u6cb3\u53bf","code":"654324000000"},{"area":"\u9752\u6cb3\u53bf","code":"654325000000"},{"area":"\u5409\u6728\u4e43\u53bf","code":"654326000000"}]},{"city":"\u81ea\u6cbb\u533a\u76f4\u8f96\u53bf\u7ea7\u884c\u653f\u533a\u5212","code":"659000000000","areas":[{"area":"\u77f3\u6cb3\u5b50\u5e02","code":"659001000000"},{"area":"\u963f\u62c9\u5c14\u5e02","code":"659002000000"},{"area":"\u56fe\u6728\u8212\u514b\u5e02","code":"659003000000"},{"area":"\u4e94\u5bb6\u6e20\u5e02","code":"659004000000"},{"area":"\u5317\u5c6f\u5e02","code":"659005000000"},{"area":"\u94c1\u95e8\u5173\u5e02","code":"659006000000"},{"area":"\u53cc\u6cb3\u5e02","code":"659007000000"},{"area":"\u53ef\u514b\u8fbe\u62c9\u5e02","code":"659008000000"},{"area":"\u6606\u7389\u5e02","code":"659009000000"},{"area":"\u80e1\u6768\u6cb3\u5e02","code":"659010000000"},{"area":"\u65b0\u661f\u5e02","code":"659011000000"},{"area":"\u767d\u6768\u5e02","code":"659012000000"}]}]},{"province":"\u53f0\u6e7e\u7701","code":"710000","citys":[{"city":"\u53f0\u5317\u5e02","code":"710000","areas":[{"area":"\u53f0\u5317\u5e02","code":"710000"}]},{"city":"\u65b0\u5317\u5e02","code":"710000","areas":[{"area":"\u65b0\u5317\u5e02","code":"710000"}]},{"city":"\u6843\u56ed\u5e02","code":"710000","areas":[{"area":"\u6843\u56ed\u5e02","code":"710000"}]},{"city":"\u53f0\u4e2d\u5e02","code":"710000","areas":[{"area":"\u53f0\u4e2d\u5e02","code":"710000"}]},{"city":"\u53f0\u5357\u5e02","code":"710000","areas":[{"area":"\u53f0\u5357\u5e02","code":"710000"}]},{"city":"\u9ad8\u96c4\u5e02","code":"710000","areas":[{"area":"\u9ad8\u96c4\u5e02","code":"710000"}]},{"city":"\u57fa\u9686\u5e02","code":"710000","areas":[{"area":"\u57fa\u9686\u5e02","code":"710000"}]},{"city":"\u65b0\u7af9\u5e02","code":"710000","areas":[{"area":"\u65b0\u7af9\u5e02","code":"710000"}]},{"city":"\u5609\u4e49\u5e02","code":"710000","areas":[{"area":"\u5609\u4e49\u5e02","code":"710000"}]},{"city":"\u65b0\u7af9\u53bf","code":"710000","areas":[{"area":"\u65b0\u7af9\u53bf","code":"710000"}]},{"city":"\u82d7\u6817\u53bf","code":"710000","areas":[{"area":"\u82d7\u6817\u53bf","code":"710000"}]},{"city":"\u5f70\u5316\u53bf","code":"710000","areas":[{"area":"\u5f70\u5316\u53bf","code":"710000"}]},{"city":"\u5357\u6295\u53bf","code":"710000","areas":[{"area":"\u5357\u6295\u53bf","code":"710000"}]},{"city":"\u4e91\u6797\u53bf","code":"710000","areas":[{"area":"\u4e91\u6797\u53bf","code":"710000"}]},{"city":"\u5609\u4e49\u53bf","code":"710000","areas":[{"area":"\u5609\u4e49\u53bf","code":"710000"}]},{"city":"\u5c4f\u4e1c\u53bf","code":"710000","areas":[{"area":"\u5c4f\u4e1c\u53bf","code":"710000"}]},{"city":"\u5b9c\u5170\u53bf","code":"710000","areas":[{"area":"\u5b9c\u5170\u53bf","code":"710000"}]},{"city":"\u82b1\u83b2\u53bf","code":"710000","areas":[{"area":"\u82b1\u83b2\u53bf","code":"710000"}]},{"city":"\u53f0\u4e1c\u53bf","code":"710000","areas":[{"area":"\u53f0\u4e1c\u53bf","code":"710000"}]},{"city":"\u6f8e\u6e56\u53bf","code":"710000","areas":[{"area":"\u6f8e\u6e56\u53bf","code":"710000"}]},{"city":"\u8fde\u6c5f\u53bf","code":"710000","areas":[{"area":"\u8fde\u6c5f\u53bf","code":"710000"}]}]},{"province":"\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a","code":"810000","citys":[{"city":"\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a","code":"810000","areas":[{"area":"\u4e2d\u897f\u533a","code":"810001"},{"area":"\u6e7e\u4ed4\u533a","code":"810002"},{"area":"\u4e1c\u533a","code":"810003"},{"area":"\u5357\u533a","code":"810004"},{"area":"\u6cb9\u5c16\u65fa\u533a","code":"810005"},{"area":"\u6df1\u6c34\u57d7\u533a","code":"810006"},{"area":"\u4e5d\u9f99\u57ce\u533a","code":"810007"},{"area":"\u9ec4\u5927\u4ed9\u533a","code":"810008"},{"area":"\u89c2\u5858\u533a","code":"810009"},{"area":"\u8343\u6e7e\u533a","code":"810010"},{"area":"\u5c6f\u95e8\u533a","code":"810011"},{"area":"\u5143\u6717\u533a","code":"810012"},{"area":"\u5317\u533a","code":"810013"},{"area":"\u5927\u57d4\u533a","code":"810014"},{"area":"\u897f\u8d21\u533a","code":"810015"},{"area":"\u6c99\u7530\u533a","code":"810016"},{"area":"\u8475\u9752\u533a","code":"810017"},{"area":"\u79bb\u5c9b\u533a","code":"810018"}]}]},{"province":"\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a","code":"820000","citys":[{"city":"\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a","code":"820000","areas":[{"area":"\u82b1\u5730\u739b\u5802\u533a","code":"820001"},{"area":"\u82b1\u738b\u5802\u533a","code":"820002"},{"area":"\u671b\u5fb7\u5802\u533a","code":"820003"},{"area":"\u5927\u5802\u533a","code":"820004"},{"area":"\u98ce\u987a\u5802\u533a","code":"820005"},{"area":"\u5609\u6a21\u5802\u533a","code":"820006"},{"area":"\u8def\u51fc\u586b\u6d77\u533a","code":"820007"},{"area":"\u5723\u65b9\u6d4e\u5404\u5802\u533a","code":"820008"}]}]}]')},4:function(e,a){function r(e,a,r,o,c,d,t){try{var i=e[d](t),n=i.value}catch(e){return void r(e)}i.done?a(n):Promise.resolve(n).then(o,c)}e.exports=function(e){return function(){var a=this,o=arguments;return new Promise((function(c,d){var t=e.apply(a,o);function i(e){r(t,c,d,i,n,"next",e)}function n(e){r(t,c,d,i,n,"throw",e)}i(void 0)}))}},e.exports.__esModule=!0,e.exports.default=e.exports},5:function(e,a){function r(a){return e.exports=r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,r(a)}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports},6:function(e,a,r){var o=r(13);e.exports=function(e,a,r){return(a=o(a))in e?Object.defineProperty(e,a,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[a]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports},7:function(e,a){e.exports={"@FONT-FACE":[{fontFamily:"shuHeiTi",src:'url("~@/static/Font/shuHeiTi.ttf") format("truetype")',fontDisplay:"swap"},{fontFamily:"DINPro",src:'url("~@/static/Font/DIN-Bold.otf") format("opentype")',fontWeight:"700",fontStyle:"normal"},{fontFamily:"DINPro",src:'url("~@/static/Font/DIN-Regular.otf") format("opentype")',fontWeight:"400",fontStyle:"normal"},{fontFamily:"DINPro",src:'url("~@/static/Font/DINPro-Medium.otf") format("opentype")',fontWeight:"500",fontStyle:"normal"}],".num_bold_text":{"":{fontWeight:["700",0,0,10],fontFamily:['"DINPro"',0,0,10]}},".num_regular_text":{"":{fontWeight:["400",0,0,12],fontFamily:['"DINPro"',0,0,12]}},".num_medium_text":{"":{fontWeight:["500",0,0,14],fontFamily:['"DINPro"',0,0,14]}},".flex":{"":{display:["flex",0,0,20]}},".flex-column":{"":{display:["flex",0,0,21],flexDirection:["column",0,0,21]}},".flex-wrap":{"":{flexWrap:["wrap",0,0,22]}},".flex-1":{"":{flex:[1,0,0,23]}},".justify-start":{"":{justifyContent:["flex-start",0,0,25]}},".justify-end":{"":{justifyContent:["flex-end",0,0,26]}},".justify-center":{"":{justifyContent:["center",0,0,27]}},".justify-between":{"":{justifyContent:["space-between",0,0,28]}},".justify-around":{"":{justifyContent:["space-around",0,0,29]}},".align-start":{"":{alignItems:["flex-start",0,0,30]}},".align-end":{"":{alignItems:["flex-end",0,0,31]}},".align-center":{"":{alignItems:["center",0,0,32]}},".align-stretch":{"":{alignItems:["stretch",0,0,33]}},".m-10":{"":{marginTop:["10rpx",0,0,35],marginRight:["10rpx",0,0,35],marginBottom:["10rpx",0,0,35],marginLeft:["10rpx",0,0,35]}},".m-20":{"":{marginTop:["20rpx",0,0,36],marginRight:["20rpx",0,0,36],marginBottom:["20rpx",0,0,36],marginLeft:["20rpx",0,0,36]}},".m-30":{"":{marginTop:["30rpx",0,0,37],marginRight:["30rpx",0,0,37],marginBottom:["30rpx",0,0,37],marginLeft:["30rpx",0,0,37]}},".m-40":{"":{marginTop:["40rpx",0,0,38],marginRight:["40rpx",0,0,38],marginBottom:["40rpx",0,0,38],marginLeft:["40rpx",0,0,38]}},".mt-10":{"":{marginTop:["10rpx",0,0,39]}},".mt-20":{"":{marginTop:["20rpx",0,0,40]}},".mt-30":{"":{marginTop:["30rpx",0,0,41]}},".mt-40":{"":{marginTop:["40rpx",0,0,42]}},".mb-10":{"":{marginBottom:["10rpx",0,0,43]}},".mb-20":{"":{marginBottom:["20rpx",0,0,44]}},".mb-30":{"":{marginBottom:["30rpx",0,0,45]}},".mb-40":{"":{marginBottom:["40rpx",0,0,46]}},".ml-10":{"":{marginLeft:["10rpx",0,0,47]}},".ml-20":{"":{marginLeft:["20rpx",0,0,48]}},".ml-30":{"":{marginLeft:["30rpx",0,0,49]}},".ml-40":{"":{marginLeft:["40rpx",0,0,50]}},".mr-10":{"":{marginRight:["10rpx",0,0,51]}},".mr-20":{"":{marginRight:["20rpx",0,0,52]}},".mr-30":{"":{marginRight:["30rpx",0,0,53]}},".mr-40":{"":{marginRight:["40rpx",0,0,54]}},".p-10":{"":{paddingTop:["10rpx",0,0,55],paddingRight:["10rpx",0,0,55],paddingBottom:["10rpx",0,0,55],paddingLeft:["10rpx",0,0,55]}},".p-20":{"":{paddingTop:["20rpx",0,0,56],paddingRight:["20rpx",0,0,56],paddingBottom:["20rpx",0,0,56],paddingLeft:["20rpx",0,0,56]}},".p-30":{"":{paddingTop:["30rpx",0,0,57],paddingRight:["30rpx",0,0,57],paddingBottom:["30rpx",0,0,57],paddingLeft:["30rpx",0,0,57]}},".p-40":{"":{paddingTop:["40rpx",0,0,58],paddingRight:["40rpx",0,0,58],paddingBottom:["40rpx",0,0,58],paddingLeft:["40rpx",0,0,58]}},".pt-10":{"":{paddingTop:["10rpx",0,0,59]}},".pt-20":{"":{paddingTop:["20rpx",0,0,60]}},".pt-30":{"":{paddingTop:["30rpx",0,0,61]}},".pt-40":{"":{paddingTop:["40rpx",0,0,62]}},".pb-10":{"":{paddingBottom:["10rpx",0,0,63]}},".pb-20":{"":{paddingBottom:["20rpx",0,0,64]}},".pb-30":{"":{paddingBottom:["30rpx",0,0,65]}},".pb-40":{"":{paddingBottom:["40rpx",0,0,66]}},".pl-10":{"":{paddingLeft:["10rpx",0,0,67]}},".pl-20":{"":{paddingLeft:["20rpx",0,0,68]}},".pl-30":{"":{paddingLeft:["30rpx",0,0,69]}},".pl-40":{"":{paddingLeft:["40rpx",0,0,70]}},".pr-10":{"":{paddingRight:["10rpx",0,0,71]}},".pr-20":{"":{paddingRight:["20rpx",0,0,72]}},".pr-30":{"":{paddingRight:["30rpx",0,0,73]}},".pr-40":{"":{paddingRight:["40rpx",0,0,74]}},".pr-240":{"":{paddingRight:["240rpx",0,0,75]}},".text-left":{"":{textAlign:["left",0,0,77]}},".text-center":{"":{textAlign:["center",0,0,78]}},".text-right":{"":{textAlign:["right",0,0,79]}},".text-primary":{"":{color:["#007aff",0,0,80]}},".text-success":{"":{color:["#4cd964",0,0,81]}},".text-warning":{"":{color:["#f0ad4e",0,0,82]}},".text-danger":{"":{color:["#dd524d",0,0,83]}},".text-info":{"":{color:["#909399",0,0,84]}},".text-sm":{"":{fontSize:["24rpx",0,0,85]}},".text-md":{"":{fontSize:["28rpx",0,0,86]}},".text-lg":{"":{fontSize:["32rpx",0,0,87]}},".text-xl":{"":{fontSize:["36rpx",0,0,88]}},".text-bold":{"":{fontWeight:["bold",0,0,89]}},".text-normal":{"":{fontWeight:["normal",0,0,90]}},".bg-white":{"":{backgroundColor:["#ffffff",0,0,92]}},".bg-primary":{"":{backgroundColor:["#007aff",0,0,93]}},".bg-success":{"":{backgroundColor:["#4cd964",0,0,94]}},".bg-warning":{"":{backgroundColor:["#f0ad4e",0,0,95]}},".bg-danger":{"":{backgroundColor:["#dd524d",0,0,96]}},".bg-info":{"":{backgroundColor:["#909399",0,0,97]}},".bg-gray":{"":{backgroundColor:["#f5f5f5",0,0,98]}},".border":{"":{borderWidth:["1rpx",0,0,100],borderStyle:["solid",0,0,100],borderColor:["#e5e5e5",0,0,100]}},".border-top":{"":{borderTopWidth:["1rpx",0,0,101],borderTopStyle:["solid",0,0,101],borderTopColor:["#e5e5e5",0,0,101]}},".border-bottom":{"":{borderBottomWidth:["1rpx",0,0,102],borderBottomStyle:["solid",0,0,102],borderBottomColor:["#e5e5e5",0,0,102]}},".border-left":{"":{borderLeftWidth:["1rpx",0,0,103],borderLeftStyle:["solid",0,0,103],borderLeftColor:["#e5e5e5",0,0,103]}},".border-right":{"":{borderRightWidth:["1rpx",0,0,104],borderRightStyle:["solid",0,0,104],borderRightColor:["#e5e5e5",0,0,104]}},".rounded":{"":{borderRadius:["8rpx",0,0,106]}},".rounded-lg":{"":{borderRadius:["16rpx",0,0,107]}},".rounded-xl":{"":{borderRadius:["24rpx",0,0,108]}},".rounded-circle":{"":{borderRadius:[50,0,0,109]}},".shadow":{"":{boxShadow:["0 2rpx 8rpx rgba(0, 0, 0, 0.1)",0,0,111]}},".shadow-lg":{"":{boxShadow:["0 4rpx 16rpx rgba(0, 0, 0, 0.1)",0,0,112]}},".relative":{"":{position:["relative",0,0,114]}},".absolute":{"":{position:["absolute",0,0,115]}},".fixed":{"":{position:["fixed",0,0,116]}},".btn":{"":{display:["flex",0,0,120],alignItems:["center",0,0,120],justifyContent:["center",0,0,120],paddingTop:["20rpx",0,0,120],paddingRight:["40rpx",0,0,120],paddingBottom:["20rpx",0,0,120],paddingLeft:["40rpx",0,0,120],borderRadius:["8rpx",0,0,120],fontSize:["28rpx",0,0,120],lineHeight:[1.5,0,0,120],textAlign:["center",0,0,120]}},".btn-primary":{"":{backgroundColor:["#007aff",0,0,121],color:["#ffffff",0,0,121]}},".btn-success":{"":{backgroundColor:["#4cd964",0,0,122],color:["#ffffff",0,0,122]}},".btn-warning":{"":{backgroundColor:["#f0ad4e",0,0,123],color:["#ffffff",0,0,123]}},".btn-danger":{"":{backgroundColor:["#dd524d",0,0,124],color:["#ffffff",0,0,124]}},".btn-info":{"":{backgroundColor:["#909399",0,0,125],color:["#ffffff",0,0,125]}},".card":{"":{backgroundColor:["#ffffff",0,0,127],borderRadius:["8rpx",0,0,127],paddingTop:["20rpx",0,0,127],paddingRight:["20rpx",0,0,127],paddingBottom:["20rpx",0,0,127],paddingLeft:["20rpx",0,0,127],marginTop:["20rpx",0,0,127],marginRight:["20rpx",0,0,127],marginBottom:["20rpx",0,0,127],marginLeft:["20rpx",0,0,127],boxShadow:["0 2rpx 8rpx rgba(0, 0, 0, 0.1)",0,0,127]}},".list-item":{"":{display:["flex",0,0,129],alignItems:["center",0,0,129],paddingTop:["20rpx",0,0,129],paddingRight:["20rpx",0,0,129],paddingBottom:["20rpx",0,0,129],paddingLeft:["20rpx",0,0,129],backgroundColor:["#ffffff",0,0,129],borderBottomWidth:["1rpx",0,0,129],borderBottomStyle:["solid",0,0,129],borderBottomColor:["#e5e5e5",0,0,129]}},".loading":{"":{display:["flex",0,0,131],alignItems:["center",0,0,131],justifyContent:["center",0,0,131],paddingTop:["20rpx",0,0,131],paddingRight:["20rpx",0,0,131],paddingBottom:["20rpx",0,0,131],paddingLeft:["20rpx",0,0,131]}},".loading-text":{"":{marginLeft:["10rpx",0,0,132],color:["#909399",0,0,132],fontSize:["24rpx",0,0,132]}},".empty":{"":{display:["flex",0,0,134],flexDirection:["column",0,0,134],alignItems:["center",0,0,134],justifyContent:["center",0,0,134],paddingTop:["40rpx",0,0,134],paddingRight:["40rpx",0,0,134],paddingBottom:["40rpx",0,0,134],paddingLeft:["40rpx",0,0,134]}},".empty-image":{"":{width:["200rpx",0,0,135],height:["200rpx",0,0,135],marginBottom:["20rpx",0,0,135]}},".empty-text":{"":{color:["#909399",0,0,136],fontSize:["28rpx",0,0,136]}},".text-overflow":{"":{WebkitBoxOrient:["vertical",0,0,137],WebkitLineClamp:[2,0,0,137],overflow:["hidden",0,0,137]}},".text-overflow-nvue":{"":{lines:[2,0,0,138],textOverflow:["ellipsis",0,0,138]}},".white-space-nowrap":{"":{width:["300rpx",0,0,139],whiteSpace:["nowrap",0,0,139],overflow:["hidden",0,0,139],textOverflow:["ellipsis",0,0,139]}},".text-overflow-1":{"":{WebkitBoxOrient:["vertical",0,0,140],WebkitLineClamp:[1,0,0,140],overflow:["hidden",0,0,140]}},".text-overflow-nvue1":{"":{lines:[1,0,0,141],textOverflow:["ellipsis",0,0,141]}},".box-cont":{"":{backgroundColor:["#ffffff",0,0,142],marginTop:["24rpx",0,0,142],marginRight:["24rpx",0,0,142],marginBottom:["24rpx",0,0,142],marginLeft:["24rpx",0,0,142],boxShadow:["0 0 12rpx 0 rgba(0, 0, 0, 0.05)",0,0,142]}},".btn-box":{"":{height:["64rpx",0,0,143],textAlign:["center",0,0,143],lineHeight:["64rpx",0,0,143],backgroundColor:["#E8101E",0,0,143],borderRadius:["32rpx",0,0,143],position:["fixed",0,0,143],left:["24rpx",0,0,143],bottom:["68rpx",0,0,143],right:["24rpx",0,0,143],zIndex:[999,0,0,143]}},".btn-text":{"":{fontSize:["28rpx",0,0,144],fontWeight:["500",0,0,144],color:["#ffffff",0,0,144]}},".agree-btn":{"":{width:["32rpx",0,0,145],height:["32rpx",0,0,145]}},".fixed-box":{"":{paddingTop:["32rpx",0,0,146],paddingRight:["24rpx",0,0,146],paddingBottom:["32rpx",0,0,146],paddingLeft:["24rpx",0,0,146],backgroundColor:["#ffffff",0,0,146],position:["absolute",0,0,146],left:[0,0,0,146],bottom:[0,0,0,146],right:[0,0,0,146],zIndex:[9999,0,0,146]}},".fixed-btn":{"":{height:["80rpx",0,0,147],backgroundColor:["#E8101E",0,0,147],borderRadius:["40rpx",0,0,147],display:["flex",0,0,147],alignItems:["center",0,0,147],justifyContent:["center",0,0,147]}},".fixed-text":{"":{fontSize:["28rpx",0,0,148],color:["#ffffff",0,0,148],fontWeight:["500",0,0,148]}},".arrow-right":{"":{width:["32rpx",0,0,149],height:["32rpx",0,0,149]}},".permission":{"":{position:["fixed",0,0,150],top:[0,0,0,150],left:["24rpx",0,0,150],right:["24rpx",0,0,150],backgroundColor:["#ffffff",0,0,150],borderRadius:["20rpx",0,0,150],paddingTop:["24rpx",0,0,150],paddingRight:["24rpx",0,0,150],paddingBottom:["24rpx",0,0,150],paddingLeft:["24rpx",0,0,150],zIndex:[9,0,0,150],boxShadow:["0 8rpx 16rpx 0 rgba(0, 0, 0, 0.05)",0,0,150],opacity:[0,0,0,150],transitionDuration:[300,0,0,150],transitionTimingFunction:["ease",0,0,150],transitionDelay:[0,0,0,150],visibility:["hidden",0,0,150]}},".per-tit":{"":{fontSize:["32rpx",0,0,151],fontWeight:["700",0,0,151],color:["#007aff",0,0,151]}},".per-cont":{"":{fontSize:["28rpx",0,0,152],color:["#333333",0,0,152]}},".flex-row-center-between":{"":{display:["flex",0,0,154],flexDirection:["row",0,0,154],alignItems:["center",0,0,154],justifyContent:["space-between",0,0,154]}},".flex-row-start-between":{"":{display:["flex",0,0,155],flexDirection:["row",0,0,155],alignItems:["flex-start",0,0,155],justifyContent:["space-between",0,0,155]}},".flex-row-center-center":{"":{display:["flex",0,0,156],flexDirection:["row",0,0,156],alignItems:["center",0,0,156],justifyContent:["center",0,0,156]}},".flex-row-center":{"":{display:["flex",0,0,157],flexDirection:["row",0,0,157],alignItems:["center",0,0,157]}},".flex-row-start":{"":{display:["flex",0,0,158],flexDirection:["row",0,0,158],alignItems:["flex-start",0,0,158]}},".flex-row-end-between":{"":{display:["flex",0,0,159],flexDirection:["row",0,0,159],alignItems:["flex-end",0,0,159],justifyContent:["space-between",0,0,159]}},"@VERSION":2}},79:function(e,a,r){"use strict";r.r(a);var o=r(80),c=r.n(o);for(var d in o)["default"].indexOf(d)<0&&function(e){r.d(a,e,(function(){return o[e]}))}(d);a.default=c.a},8:function(e,a,r){"use strict";r.r(a);var o=r(9),c=r.n(o);for(var d in o)["default"].indexOf(d)<0&&function(e){r.d(a,e,(function(){return o[e]}))}(d);a.default=c.a},80:function(e,a,r){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.default=void 0;var o={name:"search-box",props:{value:{type:String,default:""},placeholder:{type:String,default:"\u8bf7\u8f93\u5165\u641c\u7d22\u5185\u5bb9"},showBack:{type:Boolean,default:!0},width:{type:String},height:{type:String},border:{type:String}},data:function(){return{statusBarHeight:0}},computed:{searchStyle:function(){return{}}},created:function(){var e=uni.getSystemInfoSync();this.statusBarHeight=e.statusBarHeight},methods:{goBack:function(){uni.navigateBack()},onSearch:function(e){e.stopPropagation(),this.$emit("search")},onInput:function(e){this.$emit("input",e.detail.value||e.target.value)},onConfirm:function(e){this.$emit("confirm",e.detail.value||e.target.value)}}};a.default=o},81:function(e,a){e.exports={".search":{"":{paddingTop:["20rpx",0,0,0],paddingRight:["24rpx",0,0,0],paddingBottom:["20rpx",0,0,0],paddingLeft:["24rpx",0,0,0],display:["flex",0,0,0],flexDirection:["row",0,0,0],flexWrap:["nowrap",0,0,0],justifyContent:["center",0,0,0],alignItems:["center",0,0,0],backgroundColor:["#ffffff",0,0,0]}},".back":{"":{width:["16rpx",0,0,1],height:["32rpx",0,0,1],marginRight:["20rpx",0,0,1]}},".search-right":{"":{width:["660rpx",0,0,2],height:["64rpx",0,0,2],backgroundColor:["#ffffff",0,0,2],borderRadius:["32rpx",0,0,2],position:["relative",0,0,2]}},".search-inp":{"":{flex:[1,0,0,3],height:["64rpx",0,0,3],fontSize:["24rpx",0,0,3],color:["#000000",0,0,3],borderWidth:[0,0,0,3],paddingTop:[0,0,0,3],paddingRight:["70rpx",0,0,3],paddingBottom:[0,0,0,3],paddingLeft:["48rpx",0,0,3]}},".search-icon":{"":{width:["32rpx",0,0,4],height:["32rpx",0,0,4],position:["absolute",0,0,4],right:["40rpx",0,0,4],top:["16rpx",0,0,4]}},"@VERSION":2}},83:function(e,a,r){"use strict";r.d(a,"b",(function(){return o})),r.d(a,"c",(function(){return c})),r.d(a,"a",(function(){}));var o=function(){var e=this,a=e.$createElement,r=e._self._c||a;return r("view",{staticClass:["search"]},[e.showBack?r("u-image",{staticClass:["back"],attrs:{src:"/static/images/back.png",mode:"aspectFill"},on:{click:e.goBack}}):e._e(),r("view",{staticClass:["search-right"],style:{width:e.width,height:e.height,border:e.border}},[r("u-input",{staticClass:["search-inp"],attrs:{type:"text",placeholder:e.placeholder,value:e.value,confirmType:"search",placeholderStyle:"color: #999999;"},on:{input:e.onInput,confirm:e.onConfirm}}),r("u-image",{staticClass:["search-icon"],attrs:{src:"/static/images/search.png"},on:{click:e.onSearch}})],1)],1)},c=[]},9:function(e,a,r){"use strict";var o=r(1);Object.defineProperty(a,"__esModule",{value:!0}),a.default=void 0;var c=o(r(3)),d=o(r(4)),t={name:"CustomNavbar",props:{title:{type:String,default:""},showBack:{type:Boolean,default:!0},showHeadle:{type:Boolean,default:!1},headleSrc:{type:String,default:""},backgroundColor:{type:String,default:"#ffffff"},titleColor:{type:String,default:"#333333"},borderBottom:{type:String,default:"1rpx solid rgba(0, 0, 0, 0.05)"},nowStyle:{type:String,default:"1rpx solid rgba(0, 0, 0, 0.05)"},leftImg:{type:String,default:"/static/images/back.png"},backgroundImage:{type:String}},data:function(){return{statusBarHeight:0}},created:function(){var e=this;return(0,d.default)(c.default.mark((function a(){var r,o;return c.default.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,uni.getSystemInfoSync();case 2:r=a.sent,o=r.screenWidth,e.statusBarHeight=e.pxToRpx(r.statusBarHeight,o);case 5:case"end":return a.stop()}}),a)})))()},methods:{pxToRpx:function(e,a){if("number"!=typeof e)throw new Error("\u8bf7\u4f20\u5165\u6570\u5b57\u7c7b\u578b\u7684px\u503c");return e*(750/a)},goBack:function(){this.$emit("back"),uni.navigateBack({delta:1})},onHeadleClick:function(){this.$emit("onHeadleClick")}}};a.default=t}}); \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/pages/address/search.js.LICENSE.txt b/unpackage/dist/build/app-plus/pages/address/search.js.LICENSE.txt new file mode 100644 index 0000000..ae386fb --- /dev/null +++ b/unpackage/dist/build/app-plus/pages/address/search.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/unpackage/dist/build/app-plus/pages/album/index.js b/unpackage/dist/build/app-plus/pages/album/index.js new file mode 100644 index 0000000..b0875ba --- /dev/null +++ b/unpackage/dist/build/app-plus/pages/album/index.js @@ -0,0 +1,2 @@ +/*! For license information please see index.js.LICENSE.txt */ +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/",r(r.s=285)}([function(e,t,r){"use strict";function n(e,t,r,n,i,o,a,s,u,c){var l,d="function"==typeof e?e.options:e;if(u){d.components||(d.components={});var f=Object.prototype.hasOwnProperty;for(var p in u)f.call(u,p)&&!f.call(d.components,p)&&(d.components[p]=u[p])}if(c&&("function"==typeof c.beforeCreate&&(c.beforeCreate=[c.beforeCreate]),(c.beforeCreate||(c.beforeCreate=[])).unshift((function(){this[c.__module]=this})),(d.mixins||(d.mixins=[])).push(c)),t&&(d.render=t,d.staticRenderFns=r,d._compiled=!0),n&&(d.functional=!0),o&&(d._scopeId="data-v-"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},d._ssrRegister=l):i&&(l=s?function(){i.call(this,this.$root.$options.shadowRoot)}:i),l)if(d.functional){d._injectStyles=l;var v=d.render;d.render=function(e,t){return l.call(t),v(e,t)}}else{var h=d.beforeCreate;d.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:d}}r.d(t,"a",(function(){return n}))},function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){"use strict";function n(e){var t=Object.prototype.toString.call(e);return t.substring(8,t.length-1)}function i(){return"string"==typeof __channelId__&&__channelId__}function o(e,t){switch(n(t)){case"Function":return"function() { [native code] }";default:return t}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){for(var e=arguments.length,t=new Array(e),r=0;r1){var c=s.pop();u=s.join("---COMMA---"),0===c.indexOf(" at ")?u+=c:u+="---COMMA---"+c}else u=s[0];console[a](u)},t.log=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n=200&&a<300)){e.next=3;break}return e.abrupt("return",s);case 3:if(401!==a){e.next=7;break}return e.next=6,x(t,n,i);case 6:return e.abrupt("return",e.sent);case 7:return uni.showToast({title:s.message||"\u8bf7\u6c42\u5931\u8d25",icon:"none"}),e.abrupt("return",Promise.reject(s));case 9:case"end":return e.stop()}}),e)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),y=function(){var t=(0,a.default)(o.default.mark((function t(r,n){var a,u,l;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(u=uni.getStorageSync("baseUrl"),""==uni.getStorageSync("setVersion").VersionCode&&(0,c.setVersion)(),u){t.next=5;break}return t.next=5,new Promise((function(t,r){uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType},success:function(r){200==r.data.code&&(uni.setStorageSync("baseUrl",r.data.data.url),u=r.data.data.url,t(u)),e("log","\u8bf7\u6c42\u6210\u529f",r.data," at utils/request.js:121")},fail:function(t){e("log","\u8bf7\u6c42\u5931\u8d25",t," at utils/request.js:124")},complete:function(){e("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/request.js:127")}})}));case 5:return i=u,e("log","\u751f\u4ea7\u73af\u5883"," at utils/request.js:147"),a={baseURL:i},(0,s.default)(a,"baseURL",i),(0,s.default)(a,"header",{"content-type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType}),(0,s.default)(a,"timeout",6e4),r=d(d(d({},l=a),r),{},{url:n?r.url:"".concat(l.baseURL).concat(r.url)}),r=g(r),t.abrupt("return",new Promise((function(e,t){uni.request(d(d({},r),{},{success:function(n){e(m(r,n,e,t))},fail:function(e){uni.showToast({title:"\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5",icon:"none"}),t(e)}}))})));case 10:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}();function x(e,t,r){return b.apply(this,arguments)}function b(){return(b=(0,a.default)(o.default.mark((function e(t,r,n){var i,a;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((0,u.getToken)()){e.next=2;break}return e.abrupt("return",S());case 2:if(!f){e.next=4;break}return e.abrupt("return",v((function(e){t.header.Authorization="Bearer ".concat(e),y(t,!0).then(r).catch(n)})));case 4:return f=!0,e.prev=5,e.next=8,w();case 8:return i=e.sent,(0,u.setToken)(i),h(i),t.header.Authorization="Bearer ".concat(i),e.next=14,y(t,!0);case 14:return a=e.sent,e.abrupt("return",a);case 18:return e.prev=18,e.t0=e.catch(5),(0,u.removeToken)(),S(),e.abrupt("return",e.t0);case 23:return e.prev=23,f=!1,e.finish(23);case 26:case"end":return e.stop()}}),e,null,[[5,18,23,26]])})))).apply(this,arguments)}function w(){return _.apply(this,arguments)}function _(){return(_=(0,a.default)(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(uni.getStorageSync("refreshToken")){e.next=3;break}throw new Error("No refresh token");case 3:return e.next=5,y({url:"/sj/refreshtoken",data:{refresh_token:uni.getStorageSync("refreshToken"),deviceid:getApp().globalData.deviceid},method:"POST"});case 5:if(1!=(t=e.sent).state&&200!=t.code){e.next=10;break}return uni.setStorageSync("accessToken",t.access_token),uni.setStorageSync("refreshToken",t.refresh_token),e.abrupt("return",t.access_token);case 10:throw new Error("Refresh token failed");case 11:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function S(){uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}var T={get:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return y(d({url:e,data:t,method:"GET"},r))},post:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return y(d({url:e,data:t,method:"POST"},r))},put:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return y(d({url:e,data:t,method:"PUT"},r))},delete:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return y(d({url:e,data:t,method:"DELETE"},r))}};t.default=T}).call(this,r(2).default)},function(e,t,r){var n=r(5).default,i=r(20);e.exports=function(e){var t=i(e,"string");return"symbol"==n(t)?t:t+""},e.exports.__esModule=!0,e.exports.default=e.exports},,function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={}},function(e,t,r){"use strict";var n=r(1),i=r(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(6)),a=f(r(95)),s=f(r(99)),u=n(r(105)),c=n(r(106)),l=n(r(107));function d(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(d=function(e){return e?r:t})(e)}function f(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==i(e)&&"function"!=typeof e)return{default:e};var r=d(t);if(r&&r.has(e))return r.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var s=o?Object.getOwnPropertyDescriptor(e,a):null;s&&(s.get||s.set)?Object.defineProperty(n,a,s):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function v(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"url",t=this[e];t&&uni[this.linkType]({url:t})},$uvGetRect:function(e,t){var r=this;return new Promise((function(n){uni.createSelectorQuery().in(r)[t?"selectAll":"select"](e).boundingClientRect((function(e){t&&Array.isArray(e)&&e.length&&n(e),!t&&e&&n(e)})).exec()}))},getParentData:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";this.parent||(this.parent={}),this.parent=this.$uv.$parent.call(this,t),this.parent.children&&-1===this.parent.children.indexOf(this)&&this.parent.children.push(this),this.parent&&this.parentData&&Object.keys(this.parentData).map((function(t){e.parentData[t]=e.parent[t]}))},preventEvent:function(e){e&&"function"==typeof e.stopPropagation&&e.stopPropagation()},noop:function(e){this.preventEvent(e)}},onReachBottom:function(){uni.$emit("uvOnReachBottom")},beforeDestroy:function(){var e=this;if(this.parent&&s.array(this.parent.children)){var t=this.parent.children;t.map((function(r,n){r===e&&t.splice(n,1)}))}},unmounted:function(){var e=this;if(this.parent&&s.array(this.parent.children)){var t=this.parent.children;t.map((function(r,n){r===e&&t.splice(n,1)}))}}};t.default=h},function(e,t,r){Vue.prototype.__$appStyle__={},Vue.prototype.__merge_style&&Vue.prototype.__merge_style(r(18).default,Vue.prototype.__$appStyle__)},function(e,t,r){"use strict";r.r(t);var n=r(7),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t){if("undefined"==typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(e){var t=this.constructor;return this.then((function(r){return t.resolve(e()).then((function(){return r}))}),(function(r){return t.resolve(e()).then((function(){throw r}))}))}),"undefined"!=typeof uni&&uni&&uni.requireGlobal){var r=uni.requireGlobal();ArrayBuffer=r.ArrayBuffer,Int8Array=r.Int8Array,Uint8Array=r.Uint8Array,Uint8ClampedArray=r.Uint8ClampedArray,Int16Array=r.Int16Array,Uint16Array=r.Uint16Array,Int32Array=r.Int32Array,Uint32Array=r.Uint32Array,Float32Array=r.Float32Array,Float64Array=r.Float64Array,BigInt64Array=r.BigInt64Array,BigUint64Array=r.BigUint64Array}},function(e,t,r){var n=r(5).default;e.exports=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){var n=r(5).default;function i(){"use strict";e.exports=i=function(){return r},e.exports.__esModule=!0,e.exports.default=e.exports;var t,r={},o=Object.prototype,a=o.hasOwnProperty,s=Object.defineProperty||function(e,t,r){e[t]=r.value},u="function"==typeof Symbol?Symbol:{},c=u.iterator||"@@iterator",l=u.asyncIterator||"@@asyncIterator",d=u.toStringTag||"@@toStringTag";function f(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{f({},"")}catch(t){f=function(e,t,r){return e[t]=r}}function p(e,t,r,n){var i=t&&t.prototype instanceof x?t:x,o=Object.create(i.prototype),a=new V(n||[]);return s(o,"_invoke",{value:O(e,r,a)}),o}function v(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}r.wrap=p;var h="suspendedStart",g="executing",m="completed",y={};function x(){}function b(){}function w(){}var _={};f(_,c,(function(){return this}));var S=Object.getPrototypeOf,T=S&&S(S(B([])));T&&T!==o&&a.call(T,c)&&(_=T);var I=w.prototype=x.prototype=Object.create(_);function j(e){["next","throw","return"].forEach((function(t){f(e,t,(function(e){return this._invoke(t,e)}))}))}function C(e,t){function r(i,o,s,u){var c=v(e[i],e,o);if("throw"!==c.type){var l=c.arg,d=l.value;return d&&"object"==n(d)&&a.call(d,"__await")?t.resolve(d.__await).then((function(e){r("next",e,s,u)}),(function(e){r("throw",e,s,u)})):t.resolve(d).then((function(e){l.value=e,s(l)}),(function(e){return r("throw",e,s,u)}))}u(c.arg)}var i;s(this,"_invoke",{value:function(e,n){function o(){return new t((function(t,i){r(e,n,t,i)}))}return i=i?i.then(o,o):o()}})}function O(e,r,n){var i=h;return function(o,a){if(i===g)throw Error("Generator is already running");if(i===m){if("throw"===o)throw a;return{value:t,done:!0}}for(n.method=o,n.arg=a;;){var s=n.delegate;if(s){var u=P(s,n);if(u){if(u===y)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===h)throw i=m,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=g;var c=v(e,r,n);if("normal"===c.type){if(i=n.done?m:"suspendedYield",c.arg===y)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(i=m,n.method="throw",n.arg=c.arg)}}}function P(e,r){var n=r.method,i=e.iterator[n];if(i===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,P(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var o=v(i,e.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,y;var a=o.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,y):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function V(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function B(e){if(e||""===e){var r=e[c];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,o=function r(){for(;++i=0;--i){var o=this.tryEntries[i],s=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var u=a.call(o,"catchLoc"),c=a.call(o,"finallyLoc");if(u&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),L(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;L(r)}return i}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:B(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),y}},r}e.exports=i,e.exports.__esModule=!0,e.exports.default=e.exports},,function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getToken=function(){return uni.getStorageSync("accessToken")},t.removeToken=function(){uni.removeStorageSync("accessToken"),uni.removeStorageSync("refreshToken")},t.setToken=function(e){uni.setStorageSync("accessToken",e)}},function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.getBaseUrl=function(){return c.apply(this,arguments)},t.setVersion=function(){var t=uni.getSystemInfoSync();a=t.appWgtVersion,s=t.deviceBrand,e("log","DeviceType",s," at utils/version.js:26"),"android"===(u=t.platform)?u="sj_android":"ios"===u&&(u="sj_ios");var r={VersionCode:a||"",DeviceBrand:u||"",DeviceType:s||""};uni.setStorageSync("setVersion",r)};var i=n(r(3)),o=n(r(4)),a="",s="",u="";function c(){return(c=(0,o.default)(i.default.mark((function t(){var r;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=uni.getStorageSync("setVersion"),t.next=3,uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:r.VersionCode,DeviceBrand:r.DeviceBrand,DeviceType:r.DeviceType},success:function(e){return 200==e.data.code&&uni.setStorageSync("baseUrl",e.data.data.url),e.data.data.url},fail:function(t){return e("log","\u8bf7\u6c42\u5931\u8d25",t," at utils/version.js:82"),"http://60.247.146.5:93"},complete:function(){e("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/version.js:86")}});case 3:case"end":return t.stop()}}),t)})))).apply(this,arguments)}}).call(this,r(2).default)},function(e,t,r){var n=r(42),i=r(39),o=r(26),a=r(43);e.exports=function(e){return n(e)||i(e)||o(e)||a()},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){var n=r(27);e.exports=function(e,t){if(e){if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:"object";if((0,a.empty)(e)||"object"===(0,o.default)(e)&&"object"===t||"string"===t&&"string"==typeof e)return e;if("object"===t){for(var r=(e=d(e)).split(";"),n={},i=0;i0&&void 0!==arguments[0]?arguments[0]:"auto",u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null!==(e=uni)&&void 0!==e&&null!==(t=e.$uv)&&void 0!==t&&null!==(r=t.config)&&void 0!==r&&r.unit?null===(n=uni)||void 0===n||null===(i=n.$uv)||void 0===i||null===(o=i.config)||void 0===o?void 0:o.unit:"px";return s=String(s),(0,a.number)(s)?"".concat(s).concat(u):s},t.deepClone=c,t.deepMerge=function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t=c(t),"object"!==(0,o.default)(t)||null===t||"object"!==(0,o.default)(r)||null===r)return t;var n=Array.isArray(t)?t.slice():Object.assign({},t);for(var i in r)if(r.hasOwnProperty(i)){var a=r[i],s=n[i];a instanceof Date?n[i]=new Date(a):a instanceof RegExp?n[i]=new RegExp(a):a instanceof Map?n[i]=new Map(a):a instanceof Set?n[i]=new Set(a):"object"===(0,o.default)(a)&&null!==a?n[i]=e(s,a):n[i]=a}return n},t.error=function(e){0},t.formValidate=function(e,t){var r=u.call(e,"uv-form-item"),n=u.call(e,"uv-form");r&&n&&n.validateField(r.prop,(function(){}),t)},t.getDuration=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=parseInt(e);if(t)return/s$/.test(e)?e:"".concat(e,e>30?"ms":"s");return/ms$/.test(e)?r:/s$/.test(e)?r>30?r:1e3*r:r},t.getHistoryPage=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=getCurrentPages(),r=t.length;return t[r-1+e]},t.getProperty=function(e,t){if(!e)return;if("string"!=typeof t||""===t)return"";if(-1!==t.indexOf(".")){for(var r=t.split("."),n=e[r[0]]||{},i=1;i1&&void 0!==arguments[1]&&arguments[1];if((0,a.number)(e))return t?"".concat(e,"px"):Number(e);if(/(rpx|upx)$/.test(e))return t?"".concat(uni.upx2px(parseInt(e)),"px"):Number(uni.upx2px(parseInt(e)));return t?"".concat(parseInt(e),"px"):parseInt(e)},t.guid=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:32,t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=[];if(r=r||n.length,e)for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:",";e="".concat(e).replace(/[^0-9+-Ee.]/g,"");var i=isFinite(+e)?+e:0,o=isFinite(+t)?Math.abs(t):0,a=void 0===n?",":n,u=void 0===r?".":r,c="";c=(o?(0,s.round)(i,o)+"":"".concat(Math.round(i))).split(".");var l=/(-?\d+)(\d{3})/;for(;l.test(c[0]);)c[0]=c[0].replace(l,"$1".concat(a,"$2"));(c[1]||"").length0&&void 0!==arguments[0]?arguments[0]:{},t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"brackets",n=t?"?":"",i=[];-1==["indices","brackets","repeat","comma"].indexOf(r)&&(r="brackets");var o=function(t){var n=e[t];if(["",void 0,null].indexOf(n)>=0)return"continue";if(n.constructor===Array)switch(r){case"indices":for(var o=0;o=0&&t>0&&t>=e){var r=t-e+1;return Math.floor(Math.random()*r+e)}return 0},t.randomArray=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return e.sort((function(){return Math.random()-.5}))},t.range=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return Math.max(e,Math.min(t,Number(r)))},t.setConfig=function(e){var t=e.props,r=void 0===t?{}:t,n=e.config,i=void 0===n?{}:n,o=e.color,a=void 0===o?{}:o,s=e.zIndex,u=void 0===s?{}:s,c=uni.$uv.deepMerge;uni.$uv.config=c(uni.$uv.config,i),uni.$uv.props=c(uni.$uv.props,r),uni.$uv.color=c(uni.$uv.color,a),uni.$uv.zIndex=c(uni.$uv.zIndex,u)},t.setProperty=function(e,t,r){if(!e)return;if("string"!=typeof t||""===t);else if(-1!==t.indexOf(".")){var n=t.split(".");!function e(t,r,n){if(1!==r.length)for(;r.length>1;){var i=r[0];t[i]&&"object"===(0,o.default)(t[i])||(t[i]={});r.shift();e(t[i],r,n)}else t[r[0]]=n}(e,n,r)}else e[t]=r},t.sleep=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:30;return new Promise((function(t){setTimeout((function(){t()}),e)}))},t.sys=function(){return uni.getSystemInfoSync()},t.timeFormat=l,t.timeFrom=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"yyyy-mm-dd";null==e&&(e=Number(new Date));10==(e=parseInt(e)).toString().length&&(e*=1e3);var r=(new Date).getTime()-e;r=parseInt(r/1e3);var n="";switch(!0){case r<300:n="\u521a\u521a";break;case r>=300&&r<3600:n="".concat(parseInt(r/60),"\u5206\u949f\u524d");break;case r>=3600&&r<86400:n="".concat(parseInt(r/3600),"\u5c0f\u65f6\u524d");break;case r>=86400&&r<2592e3:n="".concat(parseInt(r/86400),"\u5929\u524d");break;default:n=!1===t?r>=2592e3&&r<31536e3?"".concat(parseInt(r/2592e3),"\u4e2a\u6708\u524d"):"".concat(parseInt(r/31536e3),"\u5e74\u524d"):l(e,t)}return n},t.toast=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2e3;uni.showToast({title:String(e),icon:"none",duration:t})},t.trim=d,t.type2icon=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"success",t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];-1==["primary","info","error","warning","success"].indexOf(e)&&(e="success");var r="";switch(e){case"primary":case"info":r="info-circle";break;case"error":r="close-circle";break;case"warning":r="error-circle";break;case"success":r="checkmark-circle";break;default:r="checkmark-circle"}t&&(r+="-fill");return r};var i=n(r(96)),o=n(r(5)),a=r(99),s=r(103);function u(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,t=this.$parent;t;){if(!t.$options||t.$options.name===e)return t;t=t.$parent}return!1}function c(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakMap;if(null===e||"object"!==(0,o.default)(e))return e;if(r.has(e))return r.get(e);if(e instanceof Date)t=new Date(e.getTime());else if(e instanceof RegExp)t=new RegExp(e);else if(e instanceof Map)t=new Map(Array.from(e,(function(e){var t=(0,i.default)(e,2);return[t[0],c(t[1],r)]})));else if(e instanceof Set)t=new Set(Array.from(e,(function(e){return c(e,r)})));else if(Array.isArray(e))t=e.map((function(e){return c(e,r)}));else if("[object Object]"===Object.prototype.toString.call(e)){t=Object.create(Object.getPrototypeOf(e)),r.set(e,t);for(var n=0,a=Object.entries(e);n0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"yyyy-mm-dd",n={y:(e=t?/^\d{10}$/.test(null==t?void 0:t.toString().trim())?new Date(1e3*t):"string"==typeof t&&/^\d+$/.test(t.trim())?new Date(Number(t)):"string"==typeof t&&t.includes("-")&&!t.includes("T")?new Date(t.replace(/-/g,"/")):new Date(t):new Date).getFullYear().toString(),m:(e.getMonth()+1).toString().padStart(2,"0"),d:e.getDate().toString().padStart(2,"0"),h:e.getHours().toString().padStart(2,"0"),M:e.getMinutes().toString().padStart(2,"0"),s:e.getSeconds().toString().padStart(2,"0")};for(var o in n){var a=new RegExp("".concat(o,"+")).exec(r)||[],s=(0,i.default)(a,1),u=s[0];if(u){var c="y"===o&&2===u.length?2:0;r=r.replace(u,n[o].slice(c))}}return r}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"both";return e=String(e),"both"==t?e.replace(/^\s+|\s+$/g,""):"left"==t?e.replace(/^\s*/,""):"right"==t?e.replace(/(\s*$)/g,""):"all"==t?e.replace(/\s+/g,""):e}String.prototype.padStart||(String.prototype.padStart=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" ";if("[object String]"!==Object.prototype.toString.call(t))throw new TypeError("fillString must be String");var r=this;if(r.length>=e)return String(r);for(var n=e-r.length,i=Math.ceil(n/t.length);i>>=1;)t+=t,1===i&&(t+=t);return t.slice(0,n)+r})},function(e,t,r){var n=r(97),i=r(102),o=r(26),a=r(98);e.exports=function(e,t){return n(e)||i(e,t)||o(e,t)||a()},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t){e.exports=function(e){if(Array.isArray(e))return e},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.amount=function(e){return/^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(e)},t.array=function(e){if("function"==typeof Array.isArray)return Array.isArray(e);return"[object Array]"===Object.prototype.toString.call(e)},t.carNo=function(e){if(7===e.length)return/^[\u4eac\u6d25\u6caa\u6e1d\u5180\u8c6b\u4e91\u8fbd\u9ed1\u6e58\u7696\u9c81\u65b0\u82cf\u6d59\u8d63\u9102\u6842\u7518\u664b\u8499\u9655\u5409\u95fd\u8d35\u7ca4\u9752\u85cf\u5ddd\u5b81\u743c\u4f7f\u9886A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9\u6302\u5b66\u8b66\u6e2f\u6fb3]{1}$/.test(e);if(8===e.length)return/^[\u4eac\u6d25\u6caa\u6e1d\u5180\u8c6b\u4e91\u8fbd\u9ed1\u6e58\u7696\u9c81\u65b0\u82cf\u6d59\u8d63\u9102\u6842\u7518\u664b\u8499\u9655\u5409\u95fd\u8d35\u7ca4\u9752\u85cf\u5ddd\u5b81\u743c\u4f7f\u9886A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/.test(e);return!1},t.chinese=function(e){return/^[\u4e00-\u9fa5]+$/gi.test(e)},t.code=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6;return new RegExp("^\\d{".concat(t,"}$")).test(e)},t.contains=function(e,t){return e.indexOf(t)>=0},t.date=function(e){if(!e)return!1;o(e)&&(e=+e);return!/Invalid|NaN/.test(new Date(e).toString())},t.dateISO=function(e){return/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(e)},t.digits=function(e){return/^\d+$/.test(e)},t.email=function(e){return/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(e)},t.empty=function(e){switch((0,i.default)(e)){case"undefined":return!0;case"string":if(0==e.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,"").length)return!0;break;case"boolean":if(!e)return!0;break;case"number":if(0===e||isNaN(e))return!0;break;case"object":if(null===e||0===e.length)return!0;for(var t in e)return!1;return!0}return!1},t.enOrNum=function(e){return/^[0-9a-zA-Z]*$/g.test(e)},t.func=s,t.idCard=function(e){return/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(e)},t.image=function(e){var t=e.split("?")[0];return/\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i.test(t)},t.jsonString=function(e){if("string"==typeof e)try{var t=JSON.parse(e);return!("object"!==(0,i.default)(t)||!t)}catch(e){return!1}return!1},t.landline=function(e){return/^\d{3,4}-\d{7,8}(-\d{3,4})?$/.test(e)},t.letter=function(e){return/^[a-zA-Z]*$/.test(e)},t.mobile=function(e){return/^1([3589]\d|4[5-9]|6[1-2,4-7]|7[0-8])\d{8}$/.test(e)},t.number=o,t.object=a,t.promise=function(e){return a(e)&&s(e.then)&&s(e.catch)},t.range=function(e,t){return e>=t[0]&&e<=t[1]},t.rangeLength=function(e,t){return e.length>=t[0]&&e.length<=t[1]},t.regExp=function(e){return e&&"[object RegExp]"===Object.prototype.toString.call(e)},t.string=function(e){return"string"==typeof e},t.url=function(e){return/^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/.test(e)},t.video=function(e){return/\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i.test(e)};var i=n(r(5));function o(e){return/^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(e)}function a(e){return"[object Object]"===Object.prototype.toString.call(e)}function s(e){return"function"==typeof e}},,,function(e,t){e.exports=function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,o,a,s=[],u=!0,c=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=o.call(r)).done)&&(s.push(n.value),s.length!==t);u=!0);}catch(e){c=!0,i=e}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw i}}return s}},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.divide=v,t.enableBoundaryChecking=g,t.minus=p,t.plus=f,t.round=h,t.times=d;var i=n(r(104)),o=!0;function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15;return+parseFloat(Number(e).toPrecision(t))}function s(e){var t=e.toString().split(/[eE]/),r=(t[0].split(".")[1]||"").length-+(t[1]||0);return r>0?r:0}function u(e){if(-1===e.toString().indexOf("e"))return Number(e.toString().replace(".",""));var t=s(e);return t>0?a(Number(e)*Math.pow(10,t)):Number(e)}function c(t){o&&(t>Number.MAX_SAFE_INTEGER||t2)return l(t,d);var n=t[0],i=t[1],o=u(n),a=u(i),f=s(n)+s(i),p=o*a;return c(p),p/Math.pow(10,f)}function f(){for(var e=arguments.length,t=new Array(e),r=0;r2)return l(t,f);var n=t[0],i=t[1],o=Math.pow(10,Math.max(s(n),s(i)));return(d(n,o)+d(i,o))/o}function p(){for(var e=arguments.length,t=new Array(e),r=0;r2)return l(t,p);var n=t[0],i=t[1],o=Math.pow(10,Math.max(s(n),s(i)));return(d(n,o)-d(i,o))/o}function v(){for(var e=arguments.length,t=new Array(e),r=0;r2)return l(t,v);var n=t[0],i=t[1],o=u(n),f=u(i);return c(o),c(f),d(o/f,a(Math.pow(10,s(i)-s(n))))}function h(e,t){var r=Math.pow(10,t),n=v(Math.round(Math.abs(d(e,r))),r);return e<0&&0!==n&&(n=d(n,-1)),n}function g(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];o=e}var m={times:d,plus:f,minus:p,divide:v,round:h,enableBoundaryChecking:g};t.default=m}).call(this,r(2).default)},function(e,t,r){var n=r(97),i=r(39),o=r(26),a=r(98);e.exports=function(e){return n(e)||i(e)||o(e)||a()},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(3)),o=n(r(4)),a=n(r(37)),s=n(r(38)),u=r(95),c=(new(function(){function e(){(0,a.default)(this,e),this.config={type:"navigateTo",url:"",delta:1,params:{},animationType:"pop-in",animationDuration:300,intercept:!1,events:{}},this.route=this.route.bind(this)}var t;return(0,s.default)(e,[{key:"addRootPath",value:function(e){return"/"===e[0]?e:"/".concat(e)}},{key:"mixinParam",value:function(e,t){e=e&&this.addRootPath(e);var r="";return/.*\/.*\?.*=.*/.test(e)?(r=(0,u.queryParams)(t,!1),e+"&".concat(r)):e+(r=(0,u.queryParams)(t))}},{key:"route",value:(t=(0,o.default)(i.default.mark((function e(){var t,r,n,o=arguments;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=o.length>0&&void 0!==o[0]?o[0]:{},r=o.length>1&&void 0!==o[1]?o[1]:{},n={},"string"==typeof t?(n.url=this.mixinParam(t,r),n.type="navigateTo"):(n=(0,u.deepMerge)(this.config,t)).url=this.mixinParam(t.url,t.params),n.url!==(0,u.page)()){e.next=6;break}return e.abrupt("return");case 6:if(r.intercept&&(n.intercept=r.intercept),n.params=r,"function"!=typeof(n=(0,u.deepMerge)(this.config,n)).intercept){e.next=16;break}return e.next=12,new Promise((function(e,t){n.intercept(n,e)}));case 12:e.sent&&this.openPage(n),e.next=17;break;case 16:this.openPage(n);case 17:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"openPage",value:function(e){var t=e.url,r=(e.type,e.delta),n=e.animationType,i=e.animationDuration,o=e.events;"navigateTo"!=e.type&&"to"!=e.type||uni.navigateTo({url:t,animationType:n,animationDuration:i,events:o}),"redirectTo"!=e.type&&"redirect"!=e.type||uni.redirectTo({url:t}),"switchTab"!=e.type&&"tab"!=e.type||uni.switchTab({url:t}),"reLaunch"!=e.type&&"launch"!=e.type||uni.reLaunch({url:t}),"navigateBack"!=e.type&&"back"!=e.type||uni.navigateBack({delta:r})}}]),e}())).route;t.default=c},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=null;var i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(null!==n&&clearTimeout(n),r){var i=!n;n=setTimeout((function(){n=null}),t),i&&"function"==typeof e&&e()}else n=setTimeout((function(){"function"==typeof e&&e()}),t)};t.default=i},function(e,t,r){"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];r?n||(n=!0,"function"==typeof e&&e(),setTimeout((function(){n=!1}),t)):n||(n=!0,setTimeout((function(){n=!1,"function"==typeof e&&e()}),t))};t.default=i},,,,,,,,,,,,,,,,,function(e,t,r){"use strict";var n=r(212),i=r(141),o=r(0);var a=Object(o.a)(i.default,n.b,n.c,!1,null,null,"4984fa5e",!1,n.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(262).default,this.options.style):Object.assign(this.options.style,r(262).default)}).call(a),t.default=a.exports},,,,,,,,,,,function(e,t,r){"use strict";r.r(t);var n=r(136),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(15)),o=n(r(16)),a=n(r(258)),s={name:"uv-badge",mixins:[i.default,o.default,a.default],computed:{boxStyle:function(){return{}},badgeStyle:function(){var e={};if(this.color&&(e.color=this.color),this.bgColor&&!this.inverted&&(e.backgroundColor=this.bgColor),this.absolute&&(e.position="absolute",this.offset.length)){var t=this.offset[0],r=this.offset[1]||t;e.top=this.$uv.addUnit(t),e.right=this.$uv.addUnit(r)}return e},showValue:function(){switch(this.numberType){case"overflow":return Number(this.value)>Number(this.max)?this.max+"+":this.value;case"ellipsis":return Number(this.value)>Number(this.max)?"...":this.value;case"limit":return Number(this.value)>999?Number(this.value)>=9999?Math.floor(this.value/1e4*100)/100+"w":Math.floor(this.value/1e3*100)/100+"k":this.value;default:return Number(this.value)}},propsType:function(){return this.type||"error"}}};t.default=s},function(e,t){e.exports={".uv-badge":{"":{borderTopRightRadius:["100",0,0,16],borderTopLeftRadius:["100",0,0,16],borderBottomLeftRadius:["100",0,0,16],borderBottomRightRadius:["100",0,0,16],flexDirection:["row",0,0,16],lineHeight:["11",0,0,16],textAlign:["center",0,0,16],fontSize:["11",0,0,16],color:["#FFFFFF",0,0,16]}},".uv-badge--dot":{"":{height:["8",0,0,17],width:["8",0,0,17]}},".uv-badge--inverted":{"":{fontSize:["13",0,0,18]}},".uv-badge--not-dot":{"":{paddingTop:["2",0,0,19],paddingRight:["5",0,0,19],paddingBottom:["2",0,0,19],paddingLeft:["5",0,0,19]}},".uv-badge--horn":{"":{borderBottomLeftRadius:[0,0,0,20]}},".uv-badge--primary":{"":{backgroundColor:["#3c9cff",0,0,21]}},".uv-badge--primary--inverted":{"":{color:["#3c9cff",0,0,22]}},".uv-badge--error":{"":{backgroundColor:["#f56c6c",0,0,23]}},".uv-badge--error--inverted":{"":{color:["#f56c6c",0,0,24]}},".uv-badge--success":{"":{backgroundColor:["#5ac725",0,0,25]}},".uv-badge--success--inverted":{"":{color:["#5ac725",0,0,26]}},".uv-badge--info":{"":{backgroundColor:["#909399",0,0,27]}},".uv-badge--info--inverted":{"":{color:["#909399",0,0,28]}},".uv-badge--warning":{"":{backgroundColor:["#f9ae3d",0,0,29]}},".uv-badge--warning--inverted":{"":{color:["#f9ae3d",0,0,30]}},"@VERSION":2}},function(e,t,r){"use strict";r.r(t);var n=r(139),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(3)),o=n(r(96)),a=n(r(6)),s=n(r(4)),u=n(r(15)),c=n(r(16)),l=n(r(258)),d=n(r(288));function f(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:0,r=this.$refs["uv-tabs__wrapper__nav__line"];v.transition(r,{styles:{transform:"translateX(".concat(e,"px)")},duration:t})},clickHandler:function(e,t){var r=this;this.$emit("click",p(p({},e),{},{index:t})),e.disabled||(this.innerCurrent!=t&&this.$emit("change",p(p({},e),{},{index:t})),this.innerCurrent=t,this.$nextTick((function(){r.$uv.sleep(30).then((function(e){r.resize()}))})))},init:function(){var e=this;this.$uv.sleep().then((function(){e.resize()}))},setScrollLeft:function(){var e=this.list[this.innerCurrent],t=this.list.slice(0,this.innerCurrent).reduce((function(e,t){return e+t.rect.width}),0),r=this.$uv.sys().windowWidth,n=t-(this.tabsRect.width-e.rect.width)/2-(r-this.tabsRect.right)/2+this.tabsRect.left/2;n=Math.min(n,this.scrollViewWidth-this.tabsRect.width),this.scrollLeft=Math.max(0,n)},resize:function(){var e=this;0!==this.list.length&&Promise.all([this.getTabsRect(),this.getAllItemRect()]).then((function(t){var r=(0,o.default)(t,2),n=r[0],i=r[1],a=void 0===i?[]:i;e.tabsRect=n,e.scrollViewWidth=0,a.map((function(t,r){e.scrollViewWidth+=t.width,e.list[r].rect=t})),e.setLineLeft(),e.setScrollLeft()}))},getTabsRect:function(){var e=this;return new Promise((function(t){e.queryRect("uv-tabs__wrapper__scroll-view").then((function(e){return t(e)}))}))},getAllItemRect:function(){var e=this;return new Promise((function(t){var r=e.list.map((function(t,r){return e.queryRect("uv-tabs__wrapper__nav__item-".concat(r),!0)}));Promise.all(r).then((function(e){return t(e)}))}))},queryRect:function(e,t){var r=this;return new Promise((function(n){h.getComponentRect(t?r.$refs[e][0]:r.$refs[e],(function(e){n(e.size)}))}))}}};t.default=g}).call(this,r(40).default)},function(e,t){e.exports={".uv-tabs__wrapper":{"":{flexDirection:["row",0,0,16],alignItems:["center",0,0,16]}},".uv-tabs__wrapper__scroll-view-wrapper":{"":{flex:[1,0,0,17]}},".uv-tabs__wrapper__scroll-view":{"":{flexDirection:["row",0,0,18],flex:[1,0,0,18]}},".uv-tabs__wrapper__nav":{"":{flexDirection:["row",0,0,19],position:["relative",0,0,19]}},".uv-tabs__wrapper__nav__item":{"":{paddingTop:[0,0,0,20],paddingRight:["11",0,0,20],paddingBottom:[0,0,0,20],paddingLeft:["11",0,0,20],flexDirection:["row",0,0,20],alignItems:["center",0,0,20],justifyContent:["center",0,0,20]}},".uv-tabs__wrapper__nav__item__text":{"":{fontSize:["15",0,0,21],color:["#606266",0,0,21]}},".uv-tabs__wrapper__nav__item__text--disabled":{"":{color:["#c8c9cc",1,0,22]}},".uv-tabs__wrapper__nav__line":{"":{height:["3",0,0,23],backgroundColor:["#3c9cff",0,0,23],width:["30",0,0,23],position:["absolute",0,0,23],bottom:["2",0,0,23],borderRadius:["100",0,0,23],transitionProperty:["transform",0,0,23],transitionDuration:[300,0,0,23]}},"@VERSION":2}},function(e,t,r){"use strict";var n=r(142),i=r.n(n);t.default=i.a},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(3)),o=n(r(25)),a=n(r(4)),s=n(r(289)),u=n(r(12)),c={components:{videoSlide:s.default},data:function(){return{cardList:{1:[{title:"\u5168\u90e8",id:0},{title:"\u4e3b\u56fe",id:1},{title:"\u73af\u5883",id:2},{title:"\u4f5c\u54c1",id:3},{title:"\u5176\u4ed6",id:4}]},cardListIndex:0,systemInfo:{},id:null,user_type:null,activeStyle:{fontWeight:500,fontSize:"32rpx",color:"#333333"},inactiveStyle:{fontWeight:500,fontSize:"32rpx",color:"#666666"},current:1,statusBarHeight:0,list:[{name:"\u89c6\u9891"},{name:"\u76f8\u518c"}],imagObj:{},videoList:[]}},onLoad:function(e){var t=this;return(0,a.default)(i.default.mark((function r(){var n,o;return i.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,uni.getSystemInfoSync();case 2:n=r.sent,t.systemInfo=n,o=n.screenWidth,t.statusBarHeight=t.pxToRpx(n.statusBarHeight,o),e.id&&e.user_type&&(t.id=e.id,t.user_type=e.user_type,t.getImgList(),t.getVideoList());case 7:case"end":return r.stop()}}),r)})))()},computed:{swiperStyle:function(){if(1==this.current){var e,t,r,n=this.systemInfo.screenWidth,i=this.pxToRpx(this.systemInfo.windowHeight||(null===(e=window)||void 0===e?void 0:e.innerHeight)||(null===(t=document)||void 0===t||null===(r=t.documentElement)||void 0===r?void 0:r.clientHeight)||0,n)-88-this.statusBarHeight;return{height:"".concat(i,"rpx")}}return{height:"".concat(this.viewportHeight,"rpx")}},swiperStyle2:function(){return 1==this.current?{marginTop:"".concat(88+this.statusBarHeight+100,"rpx"),height:"".concat(this.viewportHeight-88-this.statusBarHeight-100,"rpx")}:{height:"".concat(this.viewportHeight,"rpx")}},viewportHeight:function(){var e,t,r,n=this.systemInfo.screenWidth,i=this.pxToRpx(this.systemInfo.windowHeight||(null===(e=window)||void 0===e?void 0:e.innerHeight)||(null===(t=document)||void 0===t||null===(r=t.documentElement)||void 0===r?void 0:r.clientHeight)||0,n);return i}},methods:{clickTab:function(e){this.cardListIndex=e.id},tabsClick:function(e){var t=this;this.$nextTick((function(){t.current=e.index,1==t.current&&(t.activeStyle.color="#333333",t.inactiveStyle.color="#666666",t.$refs.ideoSlideRrf.nowStopVideo()),0==t.current&&(t.activeStyle.color="#fff",t.inactiveStyle.color="#ccc",t.$refs.ideoSlideRrf.nowPlayVideo())}))},swiperChange:function(e){var t=this;this.$nextTick((function(){t.current=e.detail.current,1==t.current&&(t.activeStyle.color="#333333",t.inactiveStyle.color="#666666",t.$refs.ideoSlideRrf.nowStopVideo()),0==t.current&&(t.activeStyle.color="#fff",t.inactiveStyle.color="#ccc",t.$refs.ideoSlideRrf.nowPlayVideo())}))},pxToRpx:function(e,t){if("number"!=typeof e)throw new Error("\u8bf7\u4f20\u5165\u6570\u5b57\u7c7b\u578b\u7684px\u503c");return e*(750/t)},getImgList:function(){var e=this;u.default.post("/user/imgVideo/list",{user_id:this.id,user_type:this.user_type,type:1}).then((function(t){if(200==t.code){e.imagObj=t.data.list[1];var r=[];for(var n in t.data.list[1])r=[].concat((0,o.default)(r),(0,o.default)(t.data.list[1][n]));e.imagObj[0]=r}}))},getVideoList:function(){var e=this;u.default.post("/user/imgVideo/list",{user_id:this.id,user_type:this.user_type,type:2}).then((function(t){if(200==t.code)for(var r in t.data.list[2])e.videoList=[].concat((0,o.default)(e.videoList),(0,o.default)(t.data.list[2][r]))}))}}};t.default=c},function(e,t,r){"use strict";r.r(t);var n=r(144),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(15)),o=n(r(16)),a=n(r(291)),s={name:"uv-slider",mixins:[i.default,o.default,a.default],computed:{sliderValue:function(){return this.value||this.modelValue}},methods:{changingHandler:function(e){var t=e.detail.value;this.$emit("input",t),this.$emit("update:modelValue",t),this.$emit("changing",t)},changeHandler:function(e){var t=e.detail.value;this.$emit("input",t),this.$emit("update:modelValue",t),this.$emit("change",t)}}};t.default=s},function(e,t,r){"use strict";r.r(t);var n=r(146),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=[],n={src:"",coverStatus:!0,coverUrl:"",flag:!1,objectFit:"",mode:"",isMuted:!1,autoplay:!1,loop:!0,controls:!1,enablePlayGesture:!0,showFullscreenBtn:!1,enableProgressGesture:!1,showPlayBtn:!1,showProgress:!1},i={props:{popVideoList:{type:Array,default:[]},marginTop:{type:String,default:"88"}},data:function(){return{playSetTime:null,showSlider:!0,progressTime:0,progressValue:0,boxHeight:0,objectFit:"fill",mode:"scaleToFill",winWidth:1,winHeight:1,videoIndex:0,viewTop:0,viewTopPostion:0,videoList:[],videoListLength:0,itemViewTop0:0,itemViewTop1:0,itemViewTop2:0,itemViewTop3:0,itemViewTop4:0,videoInfo_0:n,videoInfo_1:n,videoInfo_2:n,videoInfo_3:n,videoInfo_4:n,stopIcon:"",videotouchstartTimestamp:0,videotouchendTimestamp:0,moveView:!0,cover:!0,slidingStatus:!1,videoPlayingStatus:!1,preloadedIndex:[],startPageY:0,endPageY:0,visibleDots:[]}},watch:{},created:function(e){if(plus.screen.lockOrientation("portrait-primary"),this.popVideoList.length){try{r=[],this.popVideoList.forEach((function(e,t){var i={src:"",coverStatus:!0,coverUrl:"",flag:!1,objectFit:"contain",mode:"aspectFit",isMuted:!1,autoplay:!1,loop:!0,controls:!1,enablePlayGesture:!0,showFullscreenBtn:!1,enableProgressGesture:!1,showPlayBtn:!1,showProgress:!1,name:""};i.name=e.name,i.src=e.url,i.coverUrl=e.url+"?x-oss-process=video/snapshot,t_1000,m_fast,f_jpg,w_600,ar_auto",r.push(i),0==t&&(n=i)}))}catch(e){}this.getSystemInfo(),this.videoList=r,this.videoListLength=this.videoList.length,this.boxHeight=this.videoListLength*this.winHeight;for(var t=0;t<5;t++)this.videoList[t]&&(this["videoInfo_"+t]=this.videoList[t]);this.updateVisibleDots()}},onUnload:function(){for(var e=0;e<5;e++)this.unloadVideo(e)},computed:{getVideoTop:function(){return uni.upx2px(this.marginTop)},viewTopLength:function(){return"height:".concat(this.boxHeight,"px;top:").concat(this.viewTop,"px;")},fillScreen:function(){return"height:".concat(this.winHeight,"px;width:").concat(this.winWidth,"px;")},fillScreen2:function(){return"height:auto;width:".concat(this.winWidth,"px;")},itemViewTopLength0:function(){return"height:".concat(this.winHeight,"px;top:").concat(this.itemViewTop0,"px;")},itemViewTopLength1:function(){return"height:".concat(this.winHeight,"px;top:").concat(this.itemViewTop1,"px;")},itemViewTopLength2:function(){return"height:".concat(this.winHeight,"px;top:").concat(this.itemViewTop2,"px;")},itemViewTopLength3:function(){return"height:".concat(this.winHeight,"px;top:").concat(this.itemViewTop3,"px;")},itemViewTopLength4:function(){return"height:".concat(this.winHeight,"px;top:").concat(this.itemViewTop4,"px;")}},methods:{toggleMute:function(e){this["videoInfo_"+e].isMuted=!this["videoInfo_"+e].isMuted;var t=uni.createVideoContext("video_id_"+e,this);t&&t.mute(this["videoInfo_"+e].isMuted)},jumpToVideo:function(e){var t=this;if(e!==this.videoIndex&&!this.slidingStatus){this.stopVideo(this.videoIndex%5,!0);var r=e-this.videoIndex;this.videoIndex=e,this.viewTopPostion=-this.videoIndex*this.winHeight,this.viewTop=this.viewTopPostion,this.videoListLength>5&&this.sortItemView(r>0?-1:1),this.updateVisibleDots(),setTimeout((function(){t.playVideo(t.videoIndex%5)}),400)}},updateVisibleDots:function(){var e=this.videoListLength;if(e<=5)this.visibleDots=Array.from({length:e},(function(e,t){return t}));else{var t=Math.max(0,Math.min(this.videoIndex-2,e-5));this.visibleDots=Array.from({length:5},(function(e,r){return t+r}))}},progressTouchend:function(){var e=Math.round(this.progressValue/100*this.time),t=this.videoIndex%5;uni.createVideoContext("video_id_"+t,this).seek(e),uni.createVideoContext("video_id_"+t,this).play()},sliderchanging:function(t){e("log",3333,t," at pages/album/components/videoSlide.nvue:408")},getSystemInfo:function(){var e=this;uni.getSystemInfo({success:function(t){e.winWidth=t.windowWidth,e.winHeight=t.windowHeight;var r=uni.upx2px(150);e.stopIcon="left:".concat((t.windowWidth-r)/2,"px;top:").concat((t.windowHeight-r)/2,"px;"),e.itemViewTop1=t.windowHeight,e.itemViewTop2=2*t.windowHeight,e.itemViewTop3=3*t.windowHeight,e.itemViewTop4=4*t.windowHeight}})},unloadVideo:function(e){if(!(e<0||e>=this.videoListLength)){var t=e%5;uni.createVideoContext("video_id_"+t,this).stop(),this.preloadedIndex=this.preloadedIndex.filter((function(t){return t!==e}))}},playVideo:function(e){var t=this;clearTimeout(this.playSetTime),uni.$uv.debounce((function(){t.videoPlayingStatus=!0,t["videoInfo_"+e].flag=!0;var r=uni.createVideoContext("video_id_"+e,t);t.playSetTime=setTimeout((function(){r.play()}),400)}),30)},stopVideo:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=uni.createVideoContext("video_id_"+e,this);t?r.pause():(this["videoInfo_"+e].coverStatus=!0,r.stop()),this["videoInfo_"+e].flag=!1},nowPlayVideo:function(){var e=this;clearTimeout(this.playSetTime),uni.$uv.debounce((function(){e.videoPlayingStatus=!0,e["videoInfo_"+e.videoIndex].flag=!0;var t=uni.createVideoContext("video_id_"+e.videoIndex,e);e.playSetTime=setTimeout((function(){t.play()}),400)}),30)},nowStopVideo:function(){uni.createVideoContext("video_id_"+this.videoIndex,this).pause(),this["videoInfo_"+this.videoIndex].flag=!1},videoClick:function(){var e=this.videoIndex%5;this["videoInfo_"+e].flag?this.stopVideo(e,!0):this.playVideo(e,!0)},videotouchstart:function(e){this.videotouchendTimestamp=this.videotouchstartTimestamp,this.videotouchstartTimestamp=e.timestamp,this.videotouchstartTimestamp-this.videotouchendTimestamp<500||this.slidingStatus||(this.startPageY=e.changedTouches[0].screenY)},videotochmove:function(e){if(!(this.videotouchstartTimestamp-this.videotouchendTimestamp<500||this.slidingStatus)){this.endPageY=e.changedTouches[0].screenY;var t=this.endPageY-this.startPageY;this.moveView=!(t>20||t<-20),0==this.videoIndex&&t>50?this.viewTop=50:this.videoIndex==this.videoListLength-1&&t<0?this.viewTop=this.viewTopPostion:this.viewTop=this.viewTopPostion+t}},videotouchend:function(e){if(!(this.videotouchstartTimestamp-this.videotouchendTimestamp<500||this.slidingStatus)){this.moveView=!0,this.endPageY=e.changedTouches[0].screenY;var t=this.endPageY-this.startPageY;if(t>=-40&&t<0||t<=40&&t>0)return this.slidingStatus=!0,void this.videoSlidingReset(t);if(t<-30)return this.slidingStatus=!0,this.videoIndex==this.videoListLength-1?(this.videoSlidingReset(t),void uni.showToast({title:"\u5df2\u7ecf\u5230\u5e95\u4e86",icon:"none"})):(this.moveView=!1,void this.videoSlidingToTop(t));if(t>30){if(this.slidingStatus=!0,0==this.videoIndex)return void this.videoSlidingReset(t);this.moveView=!1,this.videoSlidingToBottom(t)}}},videoSlidingReset:function(e){this.viewTop=this.viewTopPostion,this.slidingStatus=!1},videoSlidingToTop:function(e){var t=this;this.stopVideo(this.videoIndex%5,!0),this.videoIndex++,this.videoListLength>5&&this.sortItemView(e),this.viewTopPostion=this.viewTopPostion-this.winHeight,setTimeout((function(){t.playVideo(t.videoIndex%5)}),5);var r=setInterval((function(){t.viewTop=t.viewTop-35,t.viewTop5&&this.sortItemView(e),this.viewTopPostion=this.viewTopPostion+this.winHeight,setTimeout((function(){t.playVideo(t.videoIndex%5)}),5);var r=setInterval((function(){t.viewTop=t.viewTop+35,t.viewTop>t.viewTopPostion-10&&(t.viewTop=t.viewTopPostion,clearInterval(r),t.slidingStatus=!1,t.slidingCallback())}),3)},slidingCallback:function(){this.progressValue=0,this.updateVisibleDots()},sortItemView:function(e){if(e<0){if(this.videoIndex>2&&this.videoIndex0&&this.videoIndex>1&&this.videoIndex=this.progressTime?(this.videoIndex%5==e&&(this.time=t.detail.duration,this.progress=t.detail.currentTime,this.progressValue=t.detail.currentTime/t.detail.duration*100),this.showProgress=!0):this.showProgress=!1},ended:function(){this["videoInfo_"+this.videoIndex%5].flag=!1,this.progressValue=0}}};t.default=i}).call(this,r(2).default)},function(e,t){e.exports={".view-box":{"":{backgroundColor:["#000000",0,0,0]}},".video-box":{"":{position:["absolute",0,0,1],left:[0,0,0,1],right:[0,0,0,1],zIndex:[2e3,0,0,1]}},".video-image":{"":{position:["absolute",0,0,2],left:[0,0,0,2],top:[0,0,0,2],right:[0,0,0,2],bottom:[0,0,0,2],zIndex:[2001,0,0,2]}},".video-action":{"":{position:["absolute",0,0,3],left:[0,0,0,3],top:[0,0,0,3],right:[0,0,0,3],bottom:[0,0,0,3],zIndex:[2008,0,0,3]}},".video-texts":{"":{position:["absolute",0,0,4],left:["30rpx",0,0,4],right:["30rpx",0,0,4],bottom:["120rpx",0,0,4],zIndex:[2009,0,0,4]}},".video-title":{".video-texts ":{fontWeight:["500",0,1,5],fontSize:["24rpx",0,1,5],color:["#FFFFFF",0,1,5],textAlign:["left",0,1,5],fontStyle:["normal",0,1,5],lines:[1,0,1,5],maxWidth:["240rpx",0,1,5]}},".video-score":{".video-texts ":{fontWeight:["500",0,1,6],fontSize:["24rpx",0,1,6],color:["#FFFFFF",0,1,6],textAlign:["left",0,1,6],fontStyle:["normal",0,1,6],marginLeft:["20rpx",0,1,6]}},".video-text":{".video-texts ":{fontWeight:["400",0,1,7],fontSize:["28rpx",0,1,7],color:["#FFFFFF",0,1,7],textAlign:["left",0,1,7],fontStyle:["normal",0,1,7]}},".video-sound":{".video-texts ":{width:["44rpx",0,1,8],height:["42rpx",0,1,8],cursor:["pointer",0,1,8]}},".cover-view-stop":{"":{position:["absolute",0,0,9],zIndex:[9999,0,0,9],width:["150rpx",0,0,9],height:["200rpx",0,0,9],backgroundColor:["rgba(0,0,0,0.3)",0,0,9],borderRadius:[50,0,0,9]}},".progress-view":{"":{zIndex:[9999,0,0,10],position:["fixed",0,0,10],left:["30rpx",0,0,10],right:["30rpx",0,0,10],bottom:["80rpx",0,0,10]}},".dots":{"":{position:["fixed",0,0,11],left:["20rpx",0,0,11],top:[0,0,0,11],transform:["translateY(-50%)",0,0,11],zIndex:[9999,0,0,11],flexDirection:["row",0,0,11]}},".dots-container":{".dots ":{overflow:["hidden",0,1,12],marginRight:[0,0,1,12],marginLeft:[0,0,1,12]}},".dot-item":{".dots .dots-container ":{width:["10rpx",0,2,13],height:["10rpx",0,2,13],backgroundColor:["#FFFFFF",0,2,13],borderRadius:[50,0,2,13],transitionDuration:[300,0,2,13],transitionTimingFunction:["cubic-bezier(0.4,0,0.2,1)",0,2,13],transitionDelay:[0,0,2,13],cursor:["pointer",0,2,13],marginBottom:["10rpx",0,2,13]},".dots .dots-container .active":{width:["10rpx",0,3,14],height:["30rpx",0,3,14],backgroundColor:["#FFFFFF",0,3,14],borderRadius:["5rpx",0,3,14]}},".pageNumber":{".dots ":{fontWeight:["bold",0,1,15],fontSize:["28rpx",0,1,15],color:["#FFFFFF",0,1,15],lineHeight:["36rpx",0,1,15],textAlign:["left",0,1,15],fontStyle:["normal",0,1,15],marginLeft:["6rpx",0,1,15]}},".flex-row-center-between":{"":{display:["flex",0,0,16],flexDirection:["row",0,0,16],alignItems:["center",0,0,16],justifyContent:["space-between",0,0,16]}},".flex-row-start-between":{"":{display:["flex",0,0,17],flexDirection:["row",0,0,17],alignItems:["flex-start",0,0,17],justifyContent:["space-between",0,0,17]}},".flex-row-center-center":{"":{display:["flex",0,0,18],flexDirection:["row",0,0,18],alignItems:["center",0,0,18],justifyContent:["center",0,0,18]}},".flex-row-center":{"":{display:["flex",0,0,19],flexDirection:["row",0,0,19],alignItems:["center",0,0,19]}},".flex-row-start":{"":{display:["flex",0,0,20],flexDirection:["row",0,0,20],alignItems:["flex-start",0,0,20]}},".flex-row-end-between":{"":{display:["flex",0,0,21],flexDirection:["row",0,0,21],alignItems:["flex-end",0,0,21],justifyContent:["space-between",0,0,21]}},"@VERSION":2}},function(e,t){e.exports={".positonFixed":{".container ":{zIndex:[9999,0,1,0],position:["fixed",0,1,0],top:[0,0,1,0],left:[0,0,1,0],right:[0,0,1,0]}},".header-top":{".container ":{zIndex:[9999,0,1,1],backgroundColor:["#f5f5f5",0,1,1],paddingTop:[0,0,1,1],paddingRight:["24rpx",0,1,1],paddingBottom:[0,0,1,1],paddingLeft:["24rpx",0,1,1]}},".left-area":{".container .header-top ":{display:["flex",0,2,2],alignItems:["center",0,2,2]}},".back-icon":{".container .header-top .left-area ":{width:["36rpx",0,3,3],height:["36rpx",0,3,3]}},".left-area-img":{".container .header-top .left-area ":{width:["144rpx",0,3,4],height:["52rpx",0,3,4],marginLeft:["20rpx",0,3,4]}},".videoTop":{".container ":{backgroundColor:["rgba(0,0,0,0)",0,1,5]}},".container-tab":{".container .container-tabs ":{width:["96rpx",0,2,7],height:["56rpx",0,2,7],backgroundColor:["#FFFFFF",0,2,7],borderRadius:["10rpx",0,2,7],marginTop:["20rpx",0,2,7],marginRight:["20rpx",0,2,7],marginBottom:["20rpx",0,2,7],marginLeft:["20rpx",0,2,7]}},".container-tab-text":{".container .container-tabs .container-tab ":{fontWeight:["400",0,3,8],fontSize:["28rpx",0,3,8],color:["#666666",0,3,8],textAlign:["left",0,3,8],fontStyle:["normal",0,3,8]},".container .container-tabs .active ":{fontWeight:["400",0,3,10],fontSize:["28rpx",0,3,10],color:["#E8101E",0,3,10],lineHeight:["40rpx",0,3,10],textAlign:["left",0,3,10],fontStyle:["normal",0,3,10]}},".active":{".container .container-tabs ":{backgroundColor:["#FEE5E7",0,2,9]}},".container-content":{".container ":{zIndex:[1e3,0,1,11]}},".swiper":{".container .container-content ":{backgroundColor:["#ffffff",0,2,12]}},".swiper-items2":{".container .container-content .swiper ":{flexWrap:["wrap",0,3,13],flexDirection:["row",0,3,13],display:["flex",0,3,13],paddingBottom:["20rpx",0,3,13]}},".swiper-item2":{".container .container-content .swiper .swiper-items2 ":{width:["370rpx",0,4,14],height:["370rpx",0,4,14],marginTop:["10rpx",0,4,14],borderRadius:["20rpx",0,4,14],overflow:["hidden",0,4,14],position:["relative",0,4,14]}},".swiper-item2-img":{".container .container-content .swiper .swiper-items2 .swiper-item2 ":{width:["370rpx",0,5,15],height:["370rpx",0,5,15]}},".swiper-item2-title":{".container .container-content .swiper .swiper-items2 .swiper-item2 ":{position:["absolute",0,5,16],left:[0,0,5,16],top:[0,0,5,16],height:["33rpx",0,5,16],paddingTop:[0,0,5,16],paddingRight:["8rpx",0,5,16],paddingBottom:[0,0,5,16],paddingLeft:["8rpx",0,5,16],backgroundColor:["rgba(0,0,0,0.5)",0,5,16],borderTopLeftRadius:["0rpx",0,5,16],borderTopRightRadius:["0rpx",0,5,16],borderBottomRightRadius:["10rpx",0,5,16],borderBottomLeftRadius:["0rpx",0,5,16]}},".swiper-item2-title-text":{".container .container-content .swiper .swiper-items2 .swiper-item2 .swiper-item2-title ":{fontWeight:["400",0,6,17],fontSize:["18rpx",0,6,17],color:["#FFFFFF",0,6,17],lineHeight:["33rpx",0,6,17]}},".item2Left":{".container .container-content .swiper ":{marginRight:["9rpx",0,3,18]}},".flex-row-center-between":{"":{display:["flex",0,0,19],flexDirection:["row",0,0,19],alignItems:["center",0,0,19],justifyContent:["space-between",0,0,19]}},".flex-row-start-between":{"":{display:["flex",0,0,20],flexDirection:["row",0,0,20],alignItems:["flex-start",0,0,20],justifyContent:["space-between",0,0,20]}},".flex-row-center-center":{"":{display:["flex",0,0,21],flexDirection:["row",0,0,21],alignItems:["center",0,0,21],justifyContent:["center",0,0,21]}},".flex-row-center":{"":{display:["flex",0,0,22],flexDirection:["row",0,0,22],alignItems:["center",0,0,22]}},".flex-row-start":{"":{display:["flex",0,0,23],flexDirection:["row",0,0,23],alignItems:["flex-start",0,0,23]}},".flex-row-end-between":{"":{display:["flex",0,0,24],flexDirection:["row",0,0,24],alignItems:["flex-end",0,0,24],justifyContent:["space-between",0,0,24]}},"@VERSION":2}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,r){"use strict";r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return n}));var n={uvTabs:r(286).default},i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("scroll-view",{staticStyle:{flexDirection:"column"},attrs:{scrollY:!0,showScrollbar:!0,enableBackToTop:!0,bubble:"true"}},[r("view",{staticClass:["container"]},[r("view",{staticClass:["positonFixed"]},[r("view",{staticClass:["header-top","flex-row-center"],class:{videoTop:0==e.current},style:{height:88+e.statusBarHeight+"rpx",paddingTop:e.statusBarHeight+"rpx"}},[r("view",{staticClass:["left-area"],on:{click:e.goBack}},[r("u-image",{staticClass:["back-icon"],attrs:{src:"/static/images/whiteBack.png",mode:"aspectFit"}})],1),r("view",{staticClass:["flex-row-center-center"],staticStyle:{flex:"1",marginRight:"18rpx",height:"66rpx"}},[r("uv-tabs",{attrs:{list:e.list,itemStyle:"height:66rpx;",activeStyle:e.activeStyle,inactiveStyle:e.inactiveStyle,current:e.current,lineColor:"rgba(232, 16, 30, 1)"},on:{click:e.tabsClick}})],1)]),1==e.current?r("scroll-view",{staticStyle:{height:"100rpx"},attrs:{scrollX:!0}},[r("view",{staticClass:["container-tabs","flex-row-center"]},e._l(e.cardList[1],(function(t,n){return r("view",{key:n,staticClass:["container-tab","flex-row-center-center"],class:{active:e.cardListIndex==t.id},on:{click:function(r){e.clickTab(t)}}},[r("u-text",{staticClass:["container-tab-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.title))])])})),0)]):e._e()],1),r("view",{staticClass:["container-content"],style:e.swiperStyle2},[r("swiper",{staticClass:["swiper"],style:e.swiperStyle,attrs:{circular:!0,current:e.current,disableTouch:0==e.current},on:{change:e.swiperChange}},[r("swiper-item",[e.videoList.length?r("videoSlide",{directives:[{name:"show",rawName:"v-show",value:0==e.current,expression:"current==0"}],ref:"ideoSlideRrf",attrs:{popVideoList:e.videoList,marginTop:""+(88+this.statusBarHeight)}}):e._e()],1),r("swiper-item",[r("scroll-view",{style:{height:e.viewportHeight-88-this.statusBarHeight-100+"rpx"},attrs:{scrollY:!0}},[r("view",{staticClass:["swiper-items2"]},e._l(e.imagObj[e.cardListIndex],(function(t,n){return r("view",{key:n,staticClass:["swiper-item2"],class:{item2Left:n%2==0}},[r("u-image",{staticClass:["swiper-item2-img"],attrs:{mode:"aspectFill",src:t.url}}),r("view",{staticClass:["swiper-item2-title"]},[r("u-text",{staticClass:["swiper-item2-title-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.name))])])],1)})),0)])],1)],1)],1)])])},o=[]},,,,,,,,,,function(e,t,r){"use strict";r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return n}));var n={uvBadge:r(287).default},i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("view",{staticClass:["uv-tabs"],style:[e.$uv.addStyle(e.customStyle)]},[r("view",{staticClass:["uv-tabs__wrapper"]},[e._t("left"),r("view",{staticClass:["uv-tabs__wrapper__scroll-view-wrapper"]},[r("scroll-view",{ref:"uv-tabs__wrapper__scroll-view",staticClass:["uv-tabs__wrapper__scroll-view"],attrs:{scrollX:e.scrollable,scrollLeft:e.scrollLeft,scrollWithAnimation:!0,showScrollbar:!1}},[r("view",{ref:"uv-tabs__wrapper__nav",staticClass:["uv-tabs__wrapper__nav"],style:{flex:e.scrollable?"":1}},[e._l(e.list,(function(t,n){return r("view",{key:n,ref:"uv-tabs__wrapper__nav__item-"+n,refInFor:!0,staticClass:["uv-tabs__wrapper__nav__item"],class:["uv-tabs__wrapper__nav__item-"+n,t.disabled&&"uv-tabs__wrapper__nav__item--disabled"],style:[{flex:e.scrollable?"":1},e.$uv.addStyle(e.itemStyle)],on:{click:function(r){e.clickHandler(t,n)}}},[r("u-text",{staticClass:["uv-tabs__wrapper__nav__item__text"],class:[t.disabled&&"uv-tabs__wrapper__nav__item__text--disabled"],style:[e.textStyle(n)],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t[e.keyName]))]),r("uv-badge",{attrs:{show:!(!t.badge||!(t.badge.show||t.badge.isDot||t.badge.value)),isDot:t.badge&&t.badge.isDot||e.propsBadge.isDot,value:t.badge&&t.badge.value||e.propsBadge.value,max:t.badge&&t.badge.max||e.propsBadge.max,type:t.badge&&t.badge.type||e.propsBadge.type,showZero:t.badge&&t.badge.showZero||e.propsBadge.showZero,bgColor:t.badge&&t.badge.bgColor||e.propsBadge.bgColor,color:t.badge&&t.badge.color||e.propsBadge.color,shape:t.badge&&t.badge.shape||e.propsBadge.shape,numberType:t.badge&&t.badge.numberType||e.propsBadge.numberType,inverted:t.badge&&t.badge.inverted||e.propsBadge.inverted,customStyle:"margin-left: 4px;"}})],1)})),r("view",{ref:"uv-tabs__wrapper__nav__line",staticClass:["uv-tabs__wrapper__nav__line"],style:[{width:e.$uv.addUnit(e.lineWidth),height:e.firstTime?0:e.$uv.addUnit(e.lineHeight),background:e.lineColor,backgroundSize:e.lineBgSize}]})],2)])],1),e._t("right")],2)])},o=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return n}));var n={uvSlider:r(290).default},i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("view",{staticStyle:{zIndex:"100"}},[r("view",{staticClass:["view-box"],style:e.viewTopLength},[r("view",{staticClass:["video-box"],style:e.itemViewTopLength0},[r("u-video",{style:e.fillScreen,attrs:{src:e.videoInfo_0.src,autoplay:e.videoInfo_0.autoplay,loop:e.videoInfo_0.loop,controls:e.videoInfo_0.controls,enablePlayGesture:e.videoInfo_0.enablePlayGesture,objectFit:e.videoInfo_0.objectFit||e.objectFit,showFullscreenBtn:e.videoInfo_0.showFullscreenBtn,enableProgressGesture:e.videoInfo_0.enableProgressGesture,showPlayBtn:e.videoInfo_0.showPlayBtn,showProgress:e.videoInfo_0.showProgress,initialTime:"0",id:"video_id_0",muted:e.videoInfo_0.isMuted,webkitPlaysinline:"true",playsinline:"true"},on:{timeupdate:function(t){e.timeupdate(0,t)},ended:e.ended,play:function(t){e.playing(0)}}}),e.videoInfo_0.flag?e._e():r("cover-view",{staticClass:["cover-view-stop"],style:e.stopIcon}),e.cover&&e.videoInfo_0.coverStatus?r("cover-view",{staticClass:["video-image"],style:e.fillScreen2},[r("u-image",{style:e.fillScreen,attrs:{mode:e.videoInfo_0.mode||e.mode,src:e.videoInfo_0.coverUrl}})],1):e._e(),r("view",{staticClass:["video-action"],on:{touchstart:e.videotouchstart,touchmove:e.videotochmove,touchend:e.videotouchend,click:e.videoClick}}),r("view",{staticClass:["video-texts"]},[r("view",{staticClass:["flex-row-center"],staticStyle:{flex:"1"}},[r("u-text",{staticClass:["video-title"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.videoInfo_0.src))]),r("u-text",{staticClass:["video-score"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8bc4\u5206 4.8")])]),r("view",{staticClass:["flex-row-center-between"],staticStyle:{flex:"1"}},[r("u-text",{staticClass:["video-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.videoInfo_0.name))]),r("u-image",{staticClass:["video-sound"],attrs:{src:e.videoInfo_0.isMuted?"/static/images/icons/sound_no.png":"/static/images/icons/sound_yes.png"},on:{click:function(t){e.toggleMute(0)}}})],1)])],1),r("view",{staticClass:["video-box"],style:e.itemViewTopLength1},[r("u-video",{style:e.fillScreen,attrs:{src:e.videoInfo_1.src,autoplay:e.videoInfo_1.autoplay,loop:e.videoInfo_1.loop,controls:e.videoInfo_1.controls,enablePlayGesture:e.videoInfo_1.enablePlayGesture,objectFit:e.videoInfo_1.objectFit||e.objectFit,showFullscreenBtn:e.videoInfo_1.showFullscreenBtn,enableProgressGesture:e.videoInfo_1.enableProgressGesture,showPlayBtn:e.videoInfo_1.showPlayBtn,showProgress:e.videoInfo_1.showProgress,initialTime:"0",id:"video_id_1",muted:e.videoInfo_1.isMuted,webkitPlaysinline:"true",playsinline:"true"},on:{timeupdate:function(t){e.timeupdate(1,t)},ended:e.ended,play:function(t){e.playing(1)}}}),e.videoInfo_1.flag?e._e():r("cover-view",{staticClass:["cover-view-stop"],style:e.stopIcon}),e.cover&&e.videoInfo_1.coverStatus?r("cover-view",{staticClass:["video-image"],style:e.fillScreen2},[r("u-image",{style:e.fillScreen,attrs:{mode:e.videoInfo_1.mode||e.mode,src:e.videoInfo_1.coverUrl}})],1):e._e(),r("view",{staticClass:["video-action"],on:{touchstart:e.videotouchstart,touchmove:e.videotochmove,touchend:e.videotouchend,click:e.videoClick}}),r("view",{staticClass:["video-texts"]},[e._m(0),r("view",{staticClass:["flex-row-center-between"],staticStyle:{flex:"1"}},[r("u-text",{staticClass:["video-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.videoInfo_1.name))]),r("u-image",{staticClass:["video-sound"],attrs:{src:e.videoInfo_1.isMuted?"/static/images/icons/sound_no.png":"/static/images/icons/sound_yes.png"},on:{click:function(t){e.toggleMute(1)}}})],1)])],1),r("view",{staticClass:["video-box"],style:e.itemViewTopLength2},[r("u-video",{style:e.fillScreen,attrs:{src:e.videoInfo_2.src,autoplay:e.videoInfo_2.autoplay,loop:e.videoInfo_2.loop,controls:e.videoInfo_2.controls,enablePlayGesture:e.videoInfo_2.enablePlayGesture,objectFit:e.videoInfo_2.objectFit||e.objectFit,showFullscreenBtn:e.videoInfo_2.showFullscreenBtn,enableProgressGesture:e.videoInfo_2.enableProgressGesture,showPlayBtn:e.videoInfo_2.showPlayBtn,showProgress:e.videoInfo_2.showProgress,initialTime:"0",id:"video_id_2",muted:e.videoInfo_2.isMuted,webkitPlaysinline:"true",playsinline:"true"},on:{timeupdate:function(t){e.timeupdate(2,t)},ended:e.ended,play:function(t){e.playing(2)}}}),e.videoInfo_2.flag?e._e():r("cover-view",{staticClass:["cover-view-stop"],style:e.stopIcon}),e.cover&&e.videoInfo_2.coverStatus?r("cover-view",{staticClass:["video-image"],style:e.fillScreen2},[r("u-image",{style:e.fillScreen,attrs:{mode:e.videoInfo_2.mode||e.mode,src:e.videoInfo_2.coverUrl}})],1):e._e(),r("view",{staticClass:["video-action"],on:{touchstart:e.videotouchstart,touchmove:e.videotochmove,touchend:e.videotouchend,click:e.videoClick}}),r("view",{staticClass:["video-texts"]},[e._m(1),r("view",{staticClass:["flex-row-center-between"],staticStyle:{flex:"1"}},[r("u-text",{staticClass:["video-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.videoInfo_2.name))]),r("u-image",{staticClass:["video-sound"],attrs:{src:e.videoInfo_2.isMuted?"/static/images/icons/sound_no.png":"/static/images/icons/sound_yes.png"},on:{click:function(t){e.toggleMute(2)}}})],1)])],1),r("view",{staticClass:["video-box"],style:e.itemViewTopLength3},[r("u-video",{style:e.fillScreen,attrs:{src:e.videoInfo_3.src,autoplay:e.videoInfo_3.autoplay,loop:e.videoInfo_3.loop,controls:e.videoInfo_3.controls,enablePlayGesture:e.videoInfo_3.enablePlayGesture,objectFit:e.videoInfo_3.objectFit||e.objectFit,showFullscreenBtn:e.videoInfo_3.showFullscreenBtn,enableProgressGesture:e.videoInfo_3.enableProgressGesture,showPlayBtn:e.videoInfo_3.showPlayBtn,showProgress:e.videoInfo_3.showProgress,initialTime:"0",id:"video_id_3",muted:e.videoInfo_3.isMuted,webkitPlaysinline:"true",playsinline:"true"},on:{timeupdate:function(t){e.timeupdate(3,t)},ended:e.ended,play:function(t){e.playing(3)}}}),e.videoInfo_3.flag?e._e():r("cover-view",{staticClass:["cover-view-stop"],style:e.stopIcon}),e.cover&&e.videoInfo_3.coverStatus?r("cover-view",{staticClass:["video-image"],style:e.fillScreen2},[r("u-image",{style:e.fillScreen,attrs:{mode:e.videoInfo_3.mode||e.mode,src:e.videoInfo_3.coverUrl}})],1):e._e(),r("view",{staticClass:["video-action"],on:{touchstart:e.videotouchstart,touchmove:e.videotochmove,touchend:e.videotouchend,click:e.videoClick}}),r("view",{staticClass:["video-texts"]},[e._m(2),r("view",{staticClass:["flex-row-center-between"],staticStyle:{flex:"1"}},[r("u-text",{staticClass:["video-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.videoInfo_3.name))]),r("u-image",{staticClass:["video-sound"],attrs:{src:e.videoInfo_3.isMuted?"/static/images/icons/sound_no.png":"/static/images/icons/sound_yes.png"},on:{click:function(t){e.toggleMute(3)}}})],1)])],1),r("view",{staticClass:["video-box"],style:e.itemViewTopLength4},[r("u-video",{style:e.fillScreen,attrs:{src:e.videoInfo_4.src,autoplay:e.videoInfo_4.autoplay,loop:e.videoInfo_4.loop,controls:e.videoInfo_4.controls,enablePlayGesture:e.videoInfo_4.enablePlayGesture,objectFit:e.videoInfo_4.objectFit||e.objectFit,showFullscreenBtn:e.videoInfo_4.showFullscreenBtn,enableProgressGesture:e.videoInfo_4.enableProgressGesture,showPlayBtn:e.videoInfo_4.showPlayBtn,showProgress:e.videoInfo_4.showProgress,initialTime:"0",id:"video_id_4",muted:e.videoInfo_4.isMuted,webkitPlaysinline:"true",playsinline:"true"},on:{timeupdate:function(t){e.timeupdate(4,t)},ended:e.ended,play:function(t){e.playing(4)}}}),e.videoInfo_4.flag?e._e():r("cover-view",{staticClass:["cover-view-stop"],style:e.stopIcon}),e.cover&&e.videoInfo_4.coverStatus?r("cover-view",{staticClass:["video-image"],style:e.fillScreen2},[r("u-image",{style:e.fillScreen,attrs:{mode:e.videoInfo_4.mode||e.mode,src:e.videoInfo_4.coverUrl}})],1):e._e(),r("view",{staticClass:["video-action"],on:{touchstart:e.videotouchstart,touchmove:e.videotochmove,touchend:e.videotouchend,click:e.videoClick}}),r("view",{staticClass:["video-texts"]},[e._m(3),r("view",{staticClass:["flex-row-center-between"],staticStyle:{flex:"1"}},[r("u-text",{staticClass:["video-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.videoInfo_4.name))]),r("u-image",{staticClass:["video-sound"],attrs:{src:e.videoInfo_4.isMuted?"/static/images/icons/sound_no.png":"/static/images/icons/sound_yes.png"},on:{click:function(t){e.toggleMute(4)}}})],1)])],1),r("view",{staticClass:["progress-view"],on:{touchend:e.progressTouchend}},[e.showSlider?r("uv-slider",{staticClass:["progress-slider"],attrs:{activeColor:"#D8D8D8",blockSize:"6",backgroundColor:"#494949;"},model:{value:e.progressValue,callback:function(t){e.progressValue=t},expression:"progressValue"}}):e._e()],1),e.videoListLength>1?r("view",{staticClass:["dots"],style:{top:.5*e.winHeight+"px"}},[r("view",{staticClass:["dots-container"]},e._l(e.visibleDots,(function(t,n){return r("view",{key:n,staticClass:["dot-item"],class:{active:t===e.videoIndex},on:{click:function(r){e.jumpToVideo(t)}}})})),0),r("u-text",{staticClass:["pageNumber"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.videoIndex+1)+"/"+e._s(e.videoListLength))])]):e._e()])])},o=[function(){var e=this.$createElement,t=this._self._c||e;return t("view",{staticClass:["flex-row-center"],staticStyle:{flex:"1"}},[t("u-text",{staticClass:["video-title"],appendAsTree:!0,attrs:{append:"tree"}},[this._v("\u73cd\u8349\u54c1\u6c47\u7406\u7597\u9986\u73cd\u9986\u670d\u52a1\u6d41\u7a0b11\u8ba2\u5355")]),t("u-text",{staticClass:["video-score"],appendAsTree:!0,attrs:{append:"tree"}},[this._v("\u8bc4\u5206 4.8")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("view",{staticClass:["flex-row-center"],staticStyle:{flex:"1"}},[t("u-text",{staticClass:["video-title"],appendAsTree:!0,attrs:{append:"tree"}},[this._v("\u73cd\u8349\u54c1\u6c47\u7406\u7597\u9986\u73cd\u9986\u670d\u52a1\u6d41\u7a0b11\u8ba2\u5355")]),t("u-text",{staticClass:["video-score"],appendAsTree:!0,attrs:{append:"tree"}},[this._v("\u8bc4\u5206 4.8")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("view",{staticClass:["flex-row-center"],staticStyle:{flex:"1"}},[t("u-text",{staticClass:["video-title"],appendAsTree:!0,attrs:{append:"tree"}},[this._v("\u73cd\u8349\u54c1\u6c47\u7406\u7597\u9986\u73cd\u9986\u670d\u52a1\u6d41\u7a0b11\u8ba2\u5355")]),t("u-text",{staticClass:["video-score"],appendAsTree:!0,attrs:{append:"tree"}},[this._v("\u8bc4\u5206 4.8")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("view",{staticClass:["flex-row-center"],staticStyle:{flex:"1"}},[t("u-text",{staticClass:["video-title"],appendAsTree:!0,attrs:{append:"tree"}},[this._v("\u73cd\u8349\u54c1\u6c47\u7406\u7597\u9986\u73cd\u9986\u670d\u52a1\u6d41\u7a0b11\u8ba2\u5355")]),t("u-text",{staticClass:["video-score"],appendAsTree:!0,attrs:{append:"tree"}},[this._v("\u8bc4\u5206 4.8")])])}]},,,,,,,,,,,,function(e,t,r){"use strict";r.d(t,"b",(function(){return n})),r.d(t,"c",(function(){return i})),r.d(t,"a",(function(){}));var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return e.show&&(0!==Number(e.value)||e.showZero||e.isDot)?r("u-text",{staticClass:["uv-badge"],class:[e.isDot?"uv-badge--dot":"uv-badge--not-dot",e.inverted&&"uv-badge--inverted","horn"===e.shape&&"uv-badge--horn","uv-badge--"+e.propsType+(e.inverted?"--inverted":"")],style:[e.$uv.addStyle(e.customStyle),e.badgeStyle],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.isDot?"":e.showValue))]):e._e()},i=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return n})),r.d(t,"c",(function(){return i})),r.d(t,"a",(function(){}));var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("view",{staticClass:["uv-slider"],style:[e.$uv.addStyle(e.customStyle)]},[r("u-slider",{attrs:{min:e.min,max:e.max,step:e.step,value:e.sliderValue,activeColor:e.activeColor,backgroundColor:e.backgroundColor,blockSize:e.$uv.getPx(e.blockSize),blockColor:e.blockColor,showValue:e.showValue,disabled:e.disabled},on:{changing:e.changingHandler,change:e.changeHandler}})],1)},i=[]},,,,,,,,,,,,,,,,,,,,,,function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i,o,a=n(r(6));function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var u={props:function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.$.$refs.ani.ref;if(r)return new Promise((function(n,o){p.transition(r,u({styles:t},e),(function(t){n()}))}))}},{key:"_nvueNextAnimate",value:function(t){var e=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0,o=t[r];if(o){var i=o.styles,a=o.config;this._animateRun(i,a).then((function(){r+=1,e._nvueNextAnimate(t,r,n)}))}else this.currentStepAnimates={},"function"==typeof n&&n(),this.isEnd=!0}},{key:"step",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.currentStepAnimates[this.next].config=Object.assign({},this.options,t),this.currentStepAnimates[this.next].styles.transformOrigin=this.currentStepAnimates[this.next].config.transformOrigin,this.next++,this}},{key:"run",value:function(t){this.isEnd=!1,this.$.$refs.ani&&this.$.$refs.ani.ref&&(this._nvueNextAnimate(this.currentStepAnimates,0,t),this.next=0)}}]),t}(),f=["matrix","matrix3d","rotate","rotate3d","rotateX","rotateY","rotateZ","scale","scale3d","scaleX","scaleY","scaleZ","skew","skewX","skewY","translate","translate3d","translateX","translateY","translateZ"];f.concat(["opacity","backgroundColor"],["width","height","left","right","top","bottom"]).forEach((function(t){l.prototype[t]=function(){for(var e=arguments.length,r=new Array(e),n=0;n1){var p=s.pop();u=s.join("---COMMA---"),0===p.indexOf(" at ")?u+=p:u+="---COMMA---"+p}else u=s[0];console[a](u)},e.log=function(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=a.call(i,"catchLoc"),p=a.call(i,"finallyLoc");if(u&&p){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),P(r),x}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),x}},r}t.exports=o,t.exports.__esModule=!0,t.exports.default=t.exports},216:function(t,e,r){"use strict";r.d(e,"b",(function(){return o})),r.d(e,"c",(function(){return i})),r.d(e,"a",(function(){return n}));var n={uniPopup:r(118).default},o=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("scroll-view",{staticStyle:{flexDirection:"column"},attrs:{scrollY:!0,showScrollbar:!0,enableBackToTop:!0,bubble:"true"}},[r("view",{staticClass:["container"]},[r("view",{staticClass:["input-group"]},[r("u-text",{appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u63d0\u73b0\u91d1\u989d")]),r("u-input",{attrs:{type:"number",placeholder:"\u8bf7\u8f93\u5165\u63d0\u73b0\u91d1\u989d",value:t.amount},on:{input:function(e){t.amount=e.detail.value}}})],1),r("button",{attrs:{type:"primary",disabled:t.loading},on:{click:t.handleWithdraw}},[t._v(t._s(t.loading?"\u5904\u7406\u4e2d...":"\u63d0\u73b0\u5230\u5fae\u4fe1"))]),r("uni-popup",{ref:"popup",attrs:{type:"center"}},[r("view",{staticClass:["popup-content"]},[r("u-text",{appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u8bf7\u5728\u5fae\u4fe1\u4e2d\u5b8c\u6210\u63d0\u73b0\u786e\u8ba4")]),r("button",{on:{click:t.openWechatConfirm}},[t._v("\u7acb\u5373\u524d\u5f80\u5fae\u4fe1")]),r("button",{attrs:{type:"default"},on:{click:t.copyConfirmLink}},[t._v("\u590d\u5236\u786e\u8ba4\u94fe\u63a5")])],1)])],1)])},i=[]},25:function(t,e,r){var n=r(42),o=r(39),i=r(26),a=r(43);t.exports=function(t){return n(t)||o(t)||i(t)||a()},t.exports.__esModule=!0,t.exports.default=t.exports},26:function(t,e,r){var n=r(27);t.exports=function(t,e){if(t){if("string"==typeof t)return n(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}},t.exports.__esModule=!0,t.exports.default=t.exports},27:function(t,e){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:{};t.duration&&(this.durationTime=t.duration),this.animation=(0,a.createAnimation)(Object.assign(this.config,t),this)},onClick:function(){this.$emit("click",{detail:this.isShow})},step:function(t){var e=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.animation?(Object.keys(t).forEach((function(r){var n,i=t[r];"function"==typeof e.animation[r]&&(Array.isArray(i)?(n=e.animation)[r].apply(n,(0,o.default)(i)):e.animation[r](i))})),this.animation.step(r),this):this},run:function(t){this.animation&&this.animation.run(t)},open:function(){var t=this;clearTimeout(this.timer),this.isShow=!0,this.transform=this.styleInit(!1).transform||"",this.opacity=this.styleInit(!1).opacity||0,this.$nextTick((function(){t.timer=setTimeout((function(){t.animation=(0,a.createAnimation)(t.config,t),t.tranfromInit(!1).step(),t.animation.run((function(){t.transform=t.styleInit(!1).transform||"",t.opacity=t.styleInit(!1).opacity||1,t.$emit("change",{detail:t.isShow})}))}),80)}))},close:function(t){var e=this;this.animation&&this.tranfromInit(!0).step().run((function(){e.isShow=!1,e.animationData=null,e.animation=null;var t=e.styleInit(!1),r=t.opacity,n=t.transform;e.opacity=r||1,e.transform=n,e.$emit("change",{detail:e.isShow})}))},styleInit:function(t){var e=this,r={transform:"",opacity:1},n=function(t,n){var o=e.animationType(t)[n];n.startsWith("fade")?r.opacity=o:r.transform+=o+" "};return"string"==typeof this.modeClass?n(t,this.modeClass):this.modeClass.forEach((function(e){return n(t,e)})),r},tranfromInit:function(t){var e=this,r=function(t,r){var n=null;"fade"===r?n=t?0:1:(n=t?"-100%":"0","zoom-in"===r&&(n=t?.8:1),"zoom-out"===r&&(n=t?1.2:1),"slide-right"===r&&(n=t?"100%":"0"),"slide-bottom"===r&&(n=t?"100%":"0")),e.animation[e.animationMode()[r]](n)};return"string"==typeof this.modeClass?r(t,this.modeClass):this.modeClass.forEach((function(e){r(t,e)})),this.animation},animationType:function(t){return{fade:t?1:0,"slide-top":"translateY(".concat(t?"0":"-100%",")"),"slide-right":"translateX(".concat(t?"0":"100%",")"),"slide-bottom":"translateY(".concat(t?"0":"100%",")"),"slide-left":"translateX(".concat(t?"0":"-100%",")"),"zoom-in":"scaleX(".concat(t?1:.8,") scaleY(").concat(t?1:.8,")"),"zoom-out":"scaleX(".concat(t?1:1.2,") scaleY(").concat(t?1:1.2,")")}},animationMode:function(){return{fade:"opacity","slide-top":"translateY","slide-right":"translateX","slide-bottom":"translateY","slide-left":"translateX","zoom-in":"scale","zoom-out":"scale"}},toLine:function(t){return t.replace(/([A-Z])/g,"-$1").toLowerCase()}}};e.default=p},32:function(t,e,r){"use strict";r.r(e);var n=r(33),o=r.n(n);for(var i in n)["default"].indexOf(i)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(i);e.default=o.a},33:function(t,e,r){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r={name:"uniPopup",components:{},emits:["change","maskClick"],props:{animation:{type:Boolean,default:!0},type:{type:String,default:"center"},isMaskClick:{type:Boolean,default:null},maskClick:{type:Boolean,default:null},backgroundColor:{type:String,default:"none"},safeArea:{type:Boolean,default:!0},maskBackgroundColor:{type:String,default:"rgba(0, 0, 0, 0.4)"},borderRadius:{type:String}},watch:{type:{handler:function(t){this.config[t]&&this[this.config[t]](!0)},immediate:!0},isDesktop:{handler:function(t){this.config[t]&&this[this.config[this.type]](!0)},immediate:!0},maskClick:{handler:function(t){this.mkclick=t},immediate:!0},isMaskClick:{handler:function(t){this.mkclick=t},immediate:!0},showPopup:function(t){}},data:function(){return{duration:300,ani:[],showPopup:!1,showTrans:!1,popupWidth:0,popupHeight:0,config:{top:"top",bottom:"bottom",center:"center",left:"left",right:"right",message:"top",dialog:"center",share:"bottom"},maskClass:{position:"fixed",bottom:0,top:0,left:0,right:0,backgroundColor:"rgba(0, 0, 0, 0.4)"},transClass:{backgroundColor:"transparent",borderRadius:this.borderRadius||"0",position:"fixed",left:0,right:0},maskShow:!0,mkclick:!0,popupstyle:"top"}},computed:{getStyles:function(){var t={backgroundColor:this.bg};return this.borderRadius,t=Object.assign(t,{borderRadius:this.borderRadius})},isDesktop:function(){return this.popupWidth>=500&&this.popupHeight>=500},bg:function(){return""===this.backgroundColor||"none"===this.backgroundColor?"transparent":this.backgroundColor}},mounted:function(){var t,e,r,n,o,i,a=this;t=uni.getSystemInfoSync(),e=t.windowWidth,r=t.windowHeight,n=t.windowTop,o=t.safeArea,t.screenHeight,i=t.safeAreaInsets,a.popupWidth=e,a.popupHeight=r+(n||0),o&&a.safeArea?a.safeAreaInsets=i.bottom:a.safeAreaInsets=0},destroyed:function(){this.setH5Visible()},activated:function(){this.setH5Visible(!this.showPopup)},deactivated:function(){this.setH5Visible(!0)},created:function(){null===this.isMaskClick&&null===this.maskClick?this.mkclick=!0:this.mkclick=null!==this.isMaskClick?this.isMaskClick:this.maskClick,this.animation?this.duration=300:this.duration=0,this.messageChild=null,this.clearPropagation=!1,this.maskClass.backgroundColor=this.maskBackgroundColor},methods:{setH5Visible:function(){},closeMask:function(){this.maskShow=!1},disableMask:function(){this.mkclick=!1},clear:function(t){this.clearPropagation=!0},open:function(e){if(!this.showPopup){e&&-1!==["top","center","bottom","left","right","message","dialog","share"].indexOf(e)||(e=this.type),this.config[e]?(this[this.config[e]](),this.$emit("change",{show:!0,type:e})):t("error","\u7f3a\u5c11\u7c7b\u578b\uff1a",e," at uni_modules/uni-popup/components/uni-popup/uni-popup.vue:310")}},close:function(t){var e=this;this.showTrans=!1,this.$emit("change",{show:!1,type:this.type}),clearTimeout(this.timer),this.timer=setTimeout((function(){e.showPopup=!1}),300)},touchstart:function(){this.clearPropagation=!1},onTap:function(){this.clearPropagation?this.clearPropagation=!1:(this.$emit("maskClick"),this.mkclick&&this.close())},top:function(t){var e=this;this.popupstyle=this.isDesktop?"fixforpc-top":"top",this.ani=["slide-top"],this.transClass={position:"fixed",left:0,right:0,backgroundColor:this.bg,borderRadius:this.borderRadius||"0"},t||(this.showPopup=!0,this.showTrans=!0,this.$nextTick((function(){e.showPoptrans(),e.messageChild&&"message"===e.type&&e.messageChild.timerClose()})))},bottom:function(t){this.popupstyle="bottom",this.ani=["slide-bottom"],this.transClass={position:"fixed",left:0,right:0,bottom:0,paddingBottom:this.safeAreaInsets+"px",backgroundColor:this.bg,borderRadius:this.borderRadius||"0"},t||this.showPoptrans()},center:function(t){this.popupstyle="center",this.ani=["zoom-out","fade"],this.transClass={position:"fixed",bottom:0,left:0,right:0,top:0,justifyContent:"center",alignItems:"center",borderRadius:this.borderRadius||"0"},t||this.showPoptrans()},left:function(t){this.popupstyle="left",this.ani=["slide-left"],this.transClass={position:"fixed",left:0,bottom:0,top:0,backgroundColor:this.bg,borderRadius:this.borderRadius||"0"},t||this.showPoptrans()},right:function(t){this.popupstyle="right",this.ani=["slide-right"],this.transClass={position:"fixed",bottom:0,right:0,top:0,backgroundColor:this.bg,borderRadius:this.borderRadius||"0"},t||this.showPoptrans()},showPoptrans:function(){var t=this;this.$nextTick((function(){t.showPopup=!0,t.showTrans=!0}))}}};e.default=r}).call(this,r(2).default)},34:function(t,e){t.exports={".uni-popup":{"":{position:["fixed",0,0,16]},".top":{top:[0,0,1,17]},".left":{top:[0,0,1,17]},".right":{top:[0,0,1,17]}},".uni-popup__wrapper":{".uni-popup ":{position:["relative",0,1,18]},".uni-popup .left":{paddingTop:[0,0,2,19],flex:[1,0,2,19]},".uni-popup .right":{paddingTop:[0,0,2,19],flex:[1,0,2,19]}},".fixforpc-top":{"":{top:[0,0,0,20]}},"@VERSION":2}},35:function(t,e,r){"use strict";r.d(e,"b",(function(){return o})),r.d(e,"c",(function(){return i})),r.d(e,"a",(function(){return n}));var n={uniTransition:r(119).default},o=function(){var t=this,e=t.$createElement,r=t._self._c||e;return t.showPopup?r("view",{staticClass:["uni-popup"],class:[t.popupstyle,t.isDesktop?"fixforpc-z-index":""]},[r("view",{on:{touchstart:t.touchstart}},[t.maskShow?r("uni-transition",{key:"1",attrs:{name:"mask",modeClass:"fade",styles:t.maskClass,duration:t.duration,show:t.showTrans},on:{click:t.onTap}}):t._e(),r("uni-transition",{key:"2",attrs:{modeClass:t.ani,name:"content",styles:t.transClass,duration:t.duration,show:t.showTrans},on:{click:t.onTap}},[r("view",{staticClass:["uni-popup__wrapper"],class:[t.popupstyle],style:t.getStyles,on:{click:t.clear}},[t._t("default")],2)])],1)]):t._e()},i=[]},36:function(t,e,r){"use strict";r.d(e,"b",(function(){return n})),r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){}));var n=function(){var t=this.$createElement,e=this._self._c||t;return this.isShow?e("view",{ref:"ani",class:this.customClass,style:this.transformStyles,attrs:{animation:this.animationData},on:{click:this.onClick}},[this._t("default")],2):this._e()},o=[]},37:function(t,e){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.__esModule=!0,t.exports.default=t.exports},38:function(t,e,r){var n=r(13);function o(t,e){for(var r=0;r1){var l=s.pop();c=s.join("---COMMA---"),0===l.indexOf(" at ")?c+=l:c+="---COMMA---"+l}else c=s[0];console[a](c)},e.log=function(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),i=1;i=200&&a<300)){t.next=3;break}return t.abrupt("return",s);case 3:if(401!==a){t.next=7;break}return t.next=6,y(e,i,n);case 6:return t.abrupt("return",t.sent);case 7:return uni.showToast({title:s.message||"\u8bf7\u6c42\u5931\u8d25",icon:"none"}),t.abrupt("return",Promise.reject(s));case 9:case"end":return t.stop()}}),t)})));return function(e,r,i,n){return t.apply(this,arguments)}}(),x=function(){var e=(0,a.default)(o.default.mark((function e(r,i){var a,c,u;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=uni.getStorageSync("baseUrl"),""==uni.getStorageSync("setVersion").VersionCode&&(0,l.setVersion)(),c){e.next=5;break}return e.next=5,new Promise((function(e,r){uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType},success:function(r){200==r.data.code&&(uni.setStorageSync("baseUrl",r.data.data.url),c=r.data.data.url,e(c)),t("log","\u8bf7\u6c42\u6210\u529f",r.data," at utils/request.js:121")},fail:function(e){t("log","\u8bf7\u6c42\u5931\u8d25",e," at utils/request.js:124")},complete:function(){t("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/request.js:127")}})}));case 5:return n=c,t("log","\u751f\u4ea7\u73af\u5883"," at utils/request.js:147"),a={baseURL:n},(0,s.default)(a,"baseURL",n),(0,s.default)(a,"header",{"content-type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType}),(0,s.default)(a,"timeout",6e4),r=p(p(p({},u=a),r),{},{url:i?r.url:"".concat(u.baseURL).concat(r.url)}),r=m(r),e.abrupt("return",new Promise((function(t,e){uni.request(p(p({},r),{},{success:function(i){t(v(r,i,t,e))},fail:function(t){uni.showToast({title:"\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5",icon:"none"}),e(t)}}))})));case 10:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}();function y(t,e,r){return b.apply(this,arguments)}function b(){return(b=(0,a.default)(o.default.mark((function t(e,r,i){var n,a;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((0,c.getToken)()){t.next=2;break}return t.abrupt("return",S());case 2:if(!d){t.next=4;break}return t.abrupt("return",h((function(t){e.header.Authorization="Bearer ".concat(t),x(e,!0).then(r).catch(i)})));case 4:return d=!0,t.prev=5,t.next=8,_();case 8:return n=t.sent,(0,c.setToken)(n),g(n),e.header.Authorization="Bearer ".concat(n),t.next=14,x(e,!0);case 14:return a=t.sent,t.abrupt("return",a);case 18:return t.prev=18,t.t0=t.catch(5),(0,c.removeToken)(),S(),t.abrupt("return",t.t0);case 23:return t.prev=23,d=!1,t.finish(23);case 26:case"end":return t.stop()}}),t,null,[[5,18,23,26]])})))).apply(this,arguments)}function _(){return w.apply(this,arguments)}function w(){return(w=(0,a.default)(o.default.mark((function t(){var e;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(uni.getStorageSync("refreshToken")){t.next=3;break}throw new Error("No refresh token");case 3:return t.next=5,x({url:"/sj/refreshtoken",data:{refresh_token:uni.getStorageSync("refreshToken"),deviceid:getApp().globalData.deviceid},method:"POST"});case 5:if(1!=(e=t.sent).state&&200!=e.code){t.next=10;break}return uni.setStorageSync("accessToken",e.access_token),uni.setStorageSync("refreshToken",e.refresh_token),t.abrupt("return",e.access_token);case 10:throw new Error("Refresh token failed");case 11:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function S(){uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}var O={get:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return x(p({url:t,data:e,method:"GET"},r))},post:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return x(p({url:t,data:e,method:"POST"},r))},put:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return x(p({url:t,data:e,method:"PUT"},r))},delete:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return x(p({url:t,data:e,method:"DELETE"},r))}};e.default=O}).call(this,r(2).default)},function(t,e,r){var i=r(5).default,n=r(20);t.exports=function(t){var e=n(t,"string");return"symbol"==i(e)?e:e+""},t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,r){"use strict";r.r(e);var i=r(10),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={}},function(t,e,r){"use strict";var i=r(1),n=r(5);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=i(r(6)),a=d(r(95)),s=d(r(99)),c=i(r(105)),l=i(r(106)),u=i(r(107));function p(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return(p=function(t){return t?r:e})(t)}function d(t,e){if(!e&&t&&t.__esModule)return t;if(null===t||"object"!==n(t)&&"function"!=typeof t)return{default:t};var r=p(e);if(r&&r.has(t))return r.get(t);var i={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in t)if("default"!==a&&Object.prototype.hasOwnProperty.call(t,a)){var s=o?Object.getOwnPropertyDescriptor(t,a):null;s&&(s.get||s.set)?Object.defineProperty(i,a,s):i[a]=t[a]}return i.default=t,r&&r.set(t,i),i}function f(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function h(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:"url",e=this[t];e&&uni[this.linkType]({url:e})},$uvGetRect:function(t,e){var r=this;return new Promise((function(i){uni.createSelectorQuery().in(r)[e?"selectAll":"select"](t).boundingClientRect((function(t){e&&Array.isArray(t)&&t.length&&i(t),!e&&t&&i(t)})).exec()}))},getParentData:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";this.parent||(this.parent={}),this.parent=this.$uv.$parent.call(this,e),this.parent.children&&-1===this.parent.children.indexOf(this)&&this.parent.children.push(this),this.parent&&this.parentData&&Object.keys(this.parentData).map((function(e){t.parentData[e]=t.parent[e]}))},preventEvent:function(t){t&&"function"==typeof t.stopPropagation&&t.stopPropagation()},noop:function(t){this.preventEvent(t)}},onReachBottom:function(){uni.$emit("uvOnReachBottom")},beforeDestroy:function(){var t=this;if(this.parent&&s.array(this.parent.children)){var e=this.parent.children;e.map((function(r,i){r===t&&e.splice(i,1)}))}},unmounted:function(){var t=this;if(this.parent&&s.array(this.parent.children)){var e=this.parent.children;e.map((function(r,i){r===t&&e.splice(i,1)}))}}};e.default=g},function(t,e,r){Vue.prototype.__$appStyle__={},Vue.prototype.__merge_style&&Vue.prototype.__merge_style(r(18).default,Vue.prototype.__$appStyle__)},function(t,e,r){"use strict";r.r(e);var i=r(7),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e){if("undefined"==typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(t){var e=this.constructor;return this.then((function(r){return e.resolve(t()).then((function(){return r}))}),(function(r){return e.resolve(t()).then((function(){throw r}))}))}),"undefined"!=typeof uni&&uni&&uni.requireGlobal){var r=uni.requireGlobal();ArrayBuffer=r.ArrayBuffer,Int8Array=r.Int8Array,Uint8Array=r.Uint8Array,Uint8ClampedArray=r.Uint8ClampedArray,Int16Array=r.Int16Array,Uint16Array=r.Uint16Array,Int32Array=r.Int32Array,Uint32Array=r.Uint32Array,Float32Array=r.Float32Array,Float64Array=r.Float64Array,BigInt64Array=r.BigInt64Array,BigUint64Array=r.BigUint64Array}},function(t,e,r){var i=r(5).default;t.exports=function(t,e){if("object"!=i(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)},t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,r){var i=r(5).default;function n(){"use strict";t.exports=n=function(){return r},t.exports.__esModule=!0,t.exports.default=t.exports;var e,r={},o=Object.prototype,a=o.hasOwnProperty,s=Object.defineProperty||function(t,e,r){t[e]=r.value},c="function"==typeof Symbol?Symbol:{},l=c.iterator||"@@iterator",u=c.asyncIterator||"@@asyncIterator",p=c.toStringTag||"@@toStringTag";function d(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{d({},"")}catch(e){d=function(t,e,r){return t[e]=r}}function f(t,e,r,i){var n=e&&e.prototype instanceof y?e:y,o=Object.create(n.prototype),a=new R(i||[]);return s(o,"_invoke",{value:j(t,r,a)}),o}function h(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}r.wrap=f;var g="suspendedStart",m="executing",v="completed",x={};function y(){}function b(){}function _(){}var w={};d(w,l,(function(){return this}));var S=Object.getPrototypeOf,O=S&&S(S(D([])));O&&O!==o&&a.call(O,l)&&(w=O);var C=_.prototype=y.prototype=Object.create(w);function k(t){["next","throw","return"].forEach((function(e){d(t,e,(function(t){return this._invoke(e,t)}))}))}function T(t,e){function r(n,o,s,c){var l=h(t[n],t,o);if("throw"!==l.type){var u=l.arg,p=u.value;return p&&"object"==i(p)&&a.call(p,"__await")?e.resolve(p.__await).then((function(t){r("next",t,s,c)}),(function(t){r("throw",t,s,c)})):e.resolve(p).then((function(t){u.value=t,s(u)}),(function(t){return r("throw",t,s,c)}))}c(l.arg)}var n;s(this,"_invoke",{value:function(t,i){function o(){return new e((function(e,n){r(t,i,e,n)}))}return n=n?n.then(o,o):o()}})}function j(t,r,i){var n=g;return function(o,a){if(n===m)throw Error("Generator is already running");if(n===v){if("throw"===o)throw a;return{value:e,done:!0}}for(i.method=o,i.arg=a;;){var s=i.delegate;if(s){var c=I(s,i);if(c){if(c===x)continue;return c}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(n===g)throw n=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);n=m;var l=h(t,r,i);if("normal"===l.type){if(n=i.done?v:"suspendedYield",l.arg===x)continue;return{value:l.arg,done:i.done}}"throw"===l.type&&(n=v,i.method="throw",i.arg=l.arg)}}}function I(t,r){var i=r.method,n=t.iterator[i];if(n===e)return r.delegate=null,"throw"===i&&t.iterator.return&&(r.method="return",r.arg=e,I(t,r),"throw"===r.method)||"return"!==i&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+i+"' method")),x;var o=h(n,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,x;var a=o.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,x):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,x)}function A(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function R(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(A,this),this.reset(!0)}function D(t){if(t||""===t){var r=t[l];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function r(){for(;++n=0;--n){var o=this.tryEntries[n],s=o.completion;if("root"===o.tryLoc)return i("end");if(o.tryLoc<=this.prev){var c=a.call(o,"catchLoc"),l=a.call(o,"finallyLoc");if(c&&l){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),P(r),x}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var i=r.completion;if("throw"===i.type){var n=i.arg;P(r)}return n}}throw Error("illegal catch attempt")},delegateYield:function(t,r,i){return this.delegate={iterator:D(t),resultName:r,nextLoc:i},"next"===this.method&&(this.arg=e),x}},r}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,r){"use strict";r.r(e);var i=r(11),n=r(8);for(var o in n)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(o);var a=r(0);var s=Object(a.a)(n.default,i.b,i.c,!1,null,null,"43cd5ac3",!1,i.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(14).default,this.options.style):Object.assign(this.options.style,r(14).default)}).call(s),e.default=s.exports},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getToken=function(){return uni.getStorageSync("accessToken")},e.removeToken=function(){uni.removeStorageSync("accessToken"),uni.removeStorageSync("refreshToken")},e.setToken=function(t){uni.setStorageSync("accessToken",t)}},function(t,e,r){"use strict";(function(t){var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.getBaseUrl=function(){return l.apply(this,arguments)},e.setVersion=function(){var e=uni.getSystemInfoSync();a=e.appWgtVersion,s=e.deviceBrand,t("log","DeviceType",s," at utils/version.js:26"),"android"===(c=e.platform)?c="sj_android":"ios"===c&&(c="sj_ios");var r={VersionCode:a||"",DeviceBrand:c||"",DeviceType:s||""};uni.setStorageSync("setVersion",r)};var n=i(r(3)),o=i(r(4)),a="",s="",c="";function l(){return(l=(0,o.default)(n.default.mark((function e(){var r;return n.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=uni.getStorageSync("setVersion"),e.next=3,uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:r.VersionCode,DeviceBrand:r.DeviceBrand,DeviceType:r.DeviceType},success:function(t){return 200==t.data.code&&uni.setStorageSync("baseUrl",t.data.data.url),t.data.data.url},fail:function(e){return t("log","\u8bf7\u6c42\u5931\u8d25",e," at utils/version.js:82"),"http://60.247.146.5:93"},complete:function(){t("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/version.js:86")}});case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}}).call(this,r(2).default)},function(t,e,r){var i=r(42),n=r(39),o=r(26),a=r(43);t.exports=function(t){return i(t)||n(t)||o(t)||a()},t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,r){var i=r(27);t.exports=function(t,e){if(t){if("string"==typeof t)return i(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(t,e):void 0}},t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,i=new Array(e);r0&&void 0!==t[0]?t[0]:{},r.next=3,e.isLocationEnabled();case 3:if(i=r.sent){r.next=7;break}return r.abrupt("return",i);case 7:return r.abrupt("return",i);case 8:case"end":return r.stop()}}),r)})))()}};e.default=a}).call(this,r(2).default)},function(t,e,r){"use strict";(function(t){var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(r(3)),o=i(r(4)),a={checkPermission:function(t){var e=arguments,r=this;return(0,o.default)(n.default.mark((function i(){var o;return n.default.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return o=e.length>1&&void 0!==e[1]?e[1]:"",i.next=3,r._checkAppPermission(t,o);case 3:return i.abrupt("return",i.sent);case 4:case"end":return i.stop()}}),i)})))()},_checkAppPermission:function(e,r){var i=this;return(0,o.default)(n.default.mark((function o(){var a;return n.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(a={camera:{android:"android.permission.CAMERA",ios:"camera"},location:{android:"android.permission.ACCESS_FINE_LOCATION",ios:"location"},phone:{android:"android.permission.CALL_PHONE",ios:"phone"},photo_library:{android:["android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE"],ios:"photo_library"}}[e]){n.next=5;break}return t("error","\u4e0d\u652f\u6301\u7684\u6743\u9650\u7c7b\u578b:",e," at utils/per.js:62"),n.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 5:if("Android"!==plus.os.name){n.next=9;break}return n.abrupt("return",i._checkAndroidPermission(a.android));case 9:return n.abrupt("return",i._checkIosPermission(a.ios,r));case 10:return n.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 11:case"end":return n.stop()}}),o)})))()},_checkAndroidPermission:function(e){return(0,o.default)(n.default.mark((function r(){return n.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",new Promise((function(r){plus.android.requestPermissions(Array.isArray(e)?e:[e],(function(i){t("log","perm_".concat(e),i," at utils/per.js:85");var n=!plus.storage.getItem("perm_".concat(e));n&&plus.storage.setItem("perm_".concat(e),"1"),0!==i.deniedPresent.length&&plus.storage.setItem("perm_".concat(e,"_no"),"2"),0!==i.granted.length&&plus.storage.removeItem("perm_".concat(e,"_no"),"2"),r({granted:0!==i.granted.length,firstRequest:n,canRequest:!0})}),(function(t){r({granted:!1,firstRequest:!1,canRequest:!0})}))})));case 1:case"end":return r.stop()}}),r)})))()},_checkIosPermission:function(e,r){return(0,o.default)(n.default.mark((function r(){var i,o;return n.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:r.prev=0,r.t0=e,r.next="camera"===r.t0?4:"location"===r.t0?6:10;break;case 4:return i=plus.ios.invoke("AVCaptureDevice","authorizationStatusForMediaType:","vide"),r.abrupt("break",11);case 6:return o=plus.ios.newObject("CLLocationManager"),i=plus.ios.invoke(o,"authorizationStatus"),plus.ios.deleteObject(o),r.abrupt("break",11);case 10:return r.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 11:return r.abrupt("return",{granted:3===i,firstRequest:0===i,canRequest:2!==i});case 14:return r.prev=14,r.t1=r.catch(0),t("error","iOS\u6743\u9650\u68c0\u67e5\u9519\u8bef:",r.t1," at utils/per.js:146"),r.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 18:case"end":return r.stop()}}),r,null,[[0,14]])})))()},_checkMpPermission:function(t){return(0,o.default)(n.default.mark((function e(){var r;return n.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r={camera:"scope.camera",location:"scope.userLocation",record:"scope.record"}[t]){e.next=4;break}return e.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 4:return e.abrupt("return",new Promise((function(t){uni.getSetting({success:function(e){var i=e.authSetting;t({granted:!0===i[r],firstRequest:void 0===i[r],canRequest:!1!==i[r]})},fail:function(){t({granted:!1,firstRequest:!1,canRequest:!1})}})})));case 5:case"end":return e.stop()}}),e)})))()},requestPermission:function(t){var e=arguments,r=this;return(0,o.default)(n.default.mark((function i(){var o,a,s,c;return n.default.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return o=e.length>1&&void 0!==e[1]?e[1]:"",i.next=3,r.checkPermission(t,o);case 3:if(a=i.sent,s=a.granted,a.firstRequest,c=a.canRequest,!s){i.next=9;break}return i.abrupt("return",!0);case 9:if(c){i.next=11;break}return i.abrupt("return",!1);case 11:return i.abrupt("return",r._requestAppPermission(t,o));case 12:case"end":return i.stop()}}),i)})))()},_requestAppPermission:function(t,e){return(0,o.default)(n.default.mark((function t(){return n.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",!1);case 1:case"end":return t.stop()}}),t)})))()},_requestMpPermission:function(t){return(0,o.default)(n.default.mark((function e(){var r;return n.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r={camera:"scope.camera",location:"scope.userLocation",record:"scope.record"}[t]){e.next=4;break}return e.abrupt("return",!1);case 4:return e.abrupt("return",new Promise((function(t){uni.authorize({scope:r,success:function(){return t(!0)},fail:function(){return t(!1)}})})));case 5:case"end":return e.stop()}}),e)})))()},openSystemSettings:function(){if("Android"===plus.os.name){var t=plus.android.importClass("android.content.Intent"),e=plus.android.importClass("android.provider.Settings"),r=plus.android.importClass("android.net.Uri"),i=plus.android.runtimeMainActivity(),n=new t;n.setAction(e.ACTION_APPLICATION_DETAILS_SETTINGS);var o=r.fromParts("package",i.getPackageName(),null);n.setData(o),i.startActivity(n)}else{var a=plus.ios.import("UIApplication"),s=plus.ios.import("NSURL").URLWithString("app-settings:"),c=a.sharedApplication();plus.ios.invoke(c,"canOpenURL:",s)&&plus.ios.invoke(c,"openURL:",s),plus.ios.deleteObject(s),plus.ios.deleteObject(c)}}};e.default=a}).call(this,r(2).default)},function(t,e,r){"use strict";r.r(e);var i=r(31),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(r(25)),o=i(r(6)),a=r(120);function s(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function c(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};t.duration&&(this.durationTime=t.duration),this.animation=(0,a.createAnimation)(Object.assign(this.config,t),this)},onClick:function(){this.$emit("click",{detail:this.isShow})},step:function(t){var e=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.animation?(Object.keys(t).forEach((function(r){var i,o=t[r];"function"==typeof e.animation[r]&&(Array.isArray(o)?(i=e.animation)[r].apply(i,(0,n.default)(o)):e.animation[r](o))})),this.animation.step(r),this):this},run:function(t){this.animation&&this.animation.run(t)},open:function(){var t=this;clearTimeout(this.timer),this.isShow=!0,this.transform=this.styleInit(!1).transform||"",this.opacity=this.styleInit(!1).opacity||0,this.$nextTick((function(){t.timer=setTimeout((function(){t.animation=(0,a.createAnimation)(t.config,t),t.tranfromInit(!1).step(),t.animation.run((function(){t.transform=t.styleInit(!1).transform||"",t.opacity=t.styleInit(!1).opacity||1,t.$emit("change",{detail:t.isShow})}))}),80)}))},close:function(t){var e=this;this.animation&&this.tranfromInit(!0).step().run((function(){e.isShow=!1,e.animationData=null,e.animation=null;var t=e.styleInit(!1),r=t.opacity,i=t.transform;e.opacity=r||1,e.transform=i,e.$emit("change",{detail:e.isShow})}))},styleInit:function(t){var e=this,r={transform:"",opacity:1},i=function(t,i){var n=e.animationType(t)[i];i.startsWith("fade")?r.opacity=n:r.transform+=n+" "};return"string"==typeof this.modeClass?i(t,this.modeClass):this.modeClass.forEach((function(e){return i(t,e)})),r},tranfromInit:function(t){var e=this,r=function(t,r){var i=null;"fade"===r?i=t?0:1:(i=t?"-100%":"0","zoom-in"===r&&(i=t?.8:1),"zoom-out"===r&&(i=t?1.2:1),"slide-right"===r&&(i=t?"100%":"0"),"slide-bottom"===r&&(i=t?"100%":"0")),e.animation[e.animationMode()[r]](i)};return"string"==typeof this.modeClass?r(t,this.modeClass):this.modeClass.forEach((function(e){r(t,e)})),this.animation},animationType:function(t){return{fade:t?1:0,"slide-top":"translateY(".concat(t?"0":"-100%",")"),"slide-right":"translateX(".concat(t?"0":"100%",")"),"slide-bottom":"translateY(".concat(t?"0":"100%",")"),"slide-left":"translateX(".concat(t?"0":"-100%",")"),"zoom-in":"scaleX(".concat(t?1:.8,") scaleY(").concat(t?1:.8,")"),"zoom-out":"scaleX(".concat(t?1:1.2,") scaleY(").concat(t?1:1.2,")")}},animationMode:function(){return{fade:"opacity","slide-top":"translateY","slide-right":"translateX","slide-bottom":"translateY","slide-left":"translateX","zoom-in":"scale","zoom-out":"scale"}},toLine:function(t){return t.replace(/([A-Z])/g,"-$1").toLowerCase()}}};e.default=l},function(t,e,r){"use strict";r.r(e);var i=r(33),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r={name:"uniPopup",components:{},emits:["change","maskClick"],props:{animation:{type:Boolean,default:!0},type:{type:String,default:"center"},isMaskClick:{type:Boolean,default:null},maskClick:{type:Boolean,default:null},backgroundColor:{type:String,default:"none"},safeArea:{type:Boolean,default:!0},maskBackgroundColor:{type:String,default:"rgba(0, 0, 0, 0.4)"},borderRadius:{type:String}},watch:{type:{handler:function(t){this.config[t]&&this[this.config[t]](!0)},immediate:!0},isDesktop:{handler:function(t){this.config[t]&&this[this.config[this.type]](!0)},immediate:!0},maskClick:{handler:function(t){this.mkclick=t},immediate:!0},isMaskClick:{handler:function(t){this.mkclick=t},immediate:!0},showPopup:function(t){}},data:function(){return{duration:300,ani:[],showPopup:!1,showTrans:!1,popupWidth:0,popupHeight:0,config:{top:"top",bottom:"bottom",center:"center",left:"left",right:"right",message:"top",dialog:"center",share:"bottom"},maskClass:{position:"fixed",bottom:0,top:0,left:0,right:0,backgroundColor:"rgba(0, 0, 0, 0.4)"},transClass:{backgroundColor:"transparent",borderRadius:this.borderRadius||"0",position:"fixed",left:0,right:0},maskShow:!0,mkclick:!0,popupstyle:"top"}},computed:{getStyles:function(){var t={backgroundColor:this.bg};return this.borderRadius,t=Object.assign(t,{borderRadius:this.borderRadius})},isDesktop:function(){return this.popupWidth>=500&&this.popupHeight>=500},bg:function(){return""===this.backgroundColor||"none"===this.backgroundColor?"transparent":this.backgroundColor}},mounted:function(){var t,e,r,i,n,o,a=this;t=uni.getSystemInfoSync(),e=t.windowWidth,r=t.windowHeight,i=t.windowTop,n=t.safeArea,t.screenHeight,o=t.safeAreaInsets,a.popupWidth=e,a.popupHeight=r+(i||0),n&&a.safeArea?a.safeAreaInsets=o.bottom:a.safeAreaInsets=0},destroyed:function(){this.setH5Visible()},activated:function(){this.setH5Visible(!this.showPopup)},deactivated:function(){this.setH5Visible(!0)},created:function(){null===this.isMaskClick&&null===this.maskClick?this.mkclick=!0:this.mkclick=null!==this.isMaskClick?this.isMaskClick:this.maskClick,this.animation?this.duration=300:this.duration=0,this.messageChild=null,this.clearPropagation=!1,this.maskClass.backgroundColor=this.maskBackgroundColor},methods:{setH5Visible:function(){},closeMask:function(){this.maskShow=!1},disableMask:function(){this.mkclick=!1},clear:function(t){this.clearPropagation=!0},open:function(e){if(!this.showPopup){e&&-1!==["top","center","bottom","left","right","message","dialog","share"].indexOf(e)||(e=this.type),this.config[e]?(this[this.config[e]](),this.$emit("change",{show:!0,type:e})):t("error","\u7f3a\u5c11\u7c7b\u578b\uff1a",e," at uni_modules/uni-popup/components/uni-popup/uni-popup.vue:310")}},close:function(t){var e=this;this.showTrans=!1,this.$emit("change",{show:!1,type:this.type}),clearTimeout(this.timer),this.timer=setTimeout((function(){e.showPopup=!1}),300)},touchstart:function(){this.clearPropagation=!1},onTap:function(){this.clearPropagation?this.clearPropagation=!1:(this.$emit("maskClick"),this.mkclick&&this.close())},top:function(t){var e=this;this.popupstyle=this.isDesktop?"fixforpc-top":"top",this.ani=["slide-top"],this.transClass={position:"fixed",left:0,right:0,backgroundColor:this.bg,borderRadius:this.borderRadius||"0"},t||(this.showPopup=!0,this.showTrans=!0,this.$nextTick((function(){e.showPoptrans(),e.messageChild&&"message"===e.type&&e.messageChild.timerClose()})))},bottom:function(t){this.popupstyle="bottom",this.ani=["slide-bottom"],this.transClass={position:"fixed",left:0,right:0,bottom:0,paddingBottom:this.safeAreaInsets+"px",backgroundColor:this.bg,borderRadius:this.borderRadius||"0"},t||this.showPoptrans()},center:function(t){this.popupstyle="center",this.ani=["zoom-out","fade"],this.transClass={position:"fixed",bottom:0,left:0,right:0,top:0,justifyContent:"center",alignItems:"center",borderRadius:this.borderRadius||"0"},t||this.showPoptrans()},left:function(t){this.popupstyle="left",this.ani=["slide-left"],this.transClass={position:"fixed",left:0,bottom:0,top:0,backgroundColor:this.bg,borderRadius:this.borderRadius||"0"},t||this.showPoptrans()},right:function(t){this.popupstyle="right",this.ani=["slide-right"],this.transClass={position:"fixed",bottom:0,right:0,top:0,backgroundColor:this.bg,borderRadius:this.borderRadius||"0"},t||this.showPoptrans()},showPoptrans:function(){var t=this;this.$nextTick((function(){t.showPopup=!0,t.showTrans=!0}))}}};e.default=r}).call(this,r(2).default)},function(t,e){t.exports={".uni-popup":{"":{position:["fixed",0,0,16]},".top":{top:[0,0,1,17]},".left":{top:[0,0,1,17]},".right":{top:[0,0,1,17]}},".uni-popup__wrapper":{".uni-popup ":{position:["relative",0,1,18]},".uni-popup .left":{paddingTop:[0,0,2,19],flex:[1,0,2,19]},".uni-popup .right":{paddingTop:[0,0,2,19],flex:[1,0,2,19]}},".fixforpc-top":{"":{top:[0,0,0,20]}},"@VERSION":2}},function(t,e,r){"use strict";r.d(e,"b",(function(){return n})),r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i}));var i={uniTransition:r(119).default},n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return t.showPopup?r("view",{staticClass:["uni-popup"],class:[t.popupstyle,t.isDesktop?"fixforpc-z-index":""]},[r("view",{on:{touchstart:t.touchstart}},[t.maskShow?r("uni-transition",{key:"1",attrs:{name:"mask",modeClass:"fade",styles:t.maskClass,duration:t.duration,show:t.showTrans},on:{click:t.onTap}}):t._e(),r("uni-transition",{key:"2",attrs:{modeClass:t.ani,name:"content",styles:t.transClass,duration:t.duration,show:t.showTrans},on:{click:t.onTap}},[r("view",{staticClass:["uni-popup__wrapper"],class:[t.popupstyle],style:t.getStyles,on:{click:t.clear}},[t._t("default")],2)])],1)]):t._e()},o=[]},function(t,e,r){"use strict";r.d(e,"b",(function(){return i})),r.d(e,"c",(function(){return n})),r.d(e,"a",(function(){}));var i=function(){var t=this.$createElement,e=this._self._c||t;return this.isShow?e("view",{ref:"ani",class:this.customClass,style:this.transformStyles,attrs:{animation:this.animationData},on:{click:this.onClick}},[this._t("default")],2):this._e()},n=[]},function(t,e){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,r){var i=r(13);function n(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};return s(a({},t))},calcDistance:function(t,e,r,i){return function(t,e,r,i){var n=function(t){return t*(Math.PI/180)},o=n(r-t),a=n(i-e),s=Math.sin(o/2)*Math.sin(o/2)+Math.cos(n(t))*Math.cos(n(r))*Math.sin(a/2)*Math.sin(a/2);return(6371*(2*Math.atan2(Math.sqrt(s),Math.sqrt(1-s)))).toFixed(2)}(t,e,r,i)},roundUpToTwoDecimals:function(t,e){return(Math.floor(t*e*100+.9)/100).toFixed(2)},getDateStr:function(t){var e=new Date;return e.setDate(e.getDate()+t),"".concat(e.getFullYear(),"-").concat((e.getMonth()+1).toString().padStart(2,"0"),"-").concat(e.getDate().toString().padStart(2,"0"))}};e.default=l}).call(this,r(2).default)},function(t,e,r){var i=r(27);t.exports=function(t){if(Array.isArray(t))return i(t)},t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e){t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,r){"use strict";r.r(e);var i=r(45),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(r(12)),o={components:{evaluationDetail:i(r(240)).default},data:function(){return{formData:{page:1,limit:2},evaluateList:{count:0,list:[]}}},props:{evaluated_id:{type:Number},evaluated_type:{type:Number},order_shop_id:{type:Number},order_shop_type:{type:Number},order_id:{type:Number},search_type:{type:Number},listUrl:{type:String,default:"/user/orderEvaluate/list"}},mounted:function(){this.order_shop_id&&(this.formData.order_shop_id=this.order_shop_id),this.order_shop_type&&(this.formData.order_shop_type=this.order_shop_type),this.evaluated_type&&(this.formData.evaluated_type=this.evaluated_type),this.evaluated_id&&(this.formData.evaluated_id=this.evaluated_id),this.order_id&&(this.formData.order_id=this.order_id),this.search_type&&(this.formData.search_type=this.search_type),this.getList()},methods:{getList:function(){var t=this;n.default.post(this.listUrl,this.formData).then((function(e){t.evaluateList=e.data||{count:0,list:[]}}))},goList:function(){this.$emit("goList")}}};e.default=o},function(t,e,r){"use strict";r.r(e);var i=r(47),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i={data:function(){return{hasShowMore:!1,compositeStraList:[]}},computed:{evaluatorPhoto:function(){return this.evaluateObj.evaluator_head_photo?1==this.evaluateObj.anonymity?"/static/images/evaluate/photo.jpg":this.evaluateObj.evaluator_head_photo:""},evaluatorName:function(){return this.evaluateObj.evaluator_name?1==this.evaluateObj.anonymity?"\u533f\u540d\u7528\u6237":this.evaluateObj.evaluator_name:""},photos:function(){return this.evaluateObj.images?this.evaluateObj.images.split(","):[]},formattedCreateTime:function(){var t;if(null===(t=this.evaluateObj)||void 0===t||!t.create_time)return"";var e=this.evaluateObj.create_time.split(" ")[0];if(!e)return"";var r=e.replace(/-/g,"/"),i=new Date(r);if(isNaN(i.getTime()))return"";var n=i.getFullYear(),o=i.getMonth()+1,a=i.getDate();return"".concat(n,"\u5e74").concat(o,"\u6708").concat(a,"\u65e5")},getComposite:function(){return this.evaluateObj.composite?"/static/images/evaluate/score".concat(Math.floor(this.evaluateObj.composite),".png"):""}},props:{evaluateObj:{type:Object,default:function(){return{}}},isAllImg:{type:Boolean,default:!1}},methods:{showMore:function(){this.hasShowMore=!this.hasShowMore},imgPreview:function(t){uni.previewImage({current:t,urls:this.photos})},getStar:function(t){if(!this.evaluateObj.composite)return"";var e=this.evaluateObj.composite;return e>=t?"/static/images/evaluate/star_red.png":et-1?"/static/images/evaluate/star2.png":"/static/images/evaluate/star_ash2.png"},handleDecimal:function(t){var e=-1===Math.sign(t)?Math.ceil(t):Math.floor(t);return t-e>.5?e+.5:e},goDetail:function(){this.$emit("goDetail",this.evaluateObj)}}};e.default=i},function(t,e){t.exports={".evaluation-detail":{"":{paddingTop:["30rpx",0,0,1],paddingRight:["20rpx",0,0,1],paddingBottom:["30rpx",0,0,1],paddingLeft:["20rpx",0,0,1],borderRadius:["16rpx",0,0,1],backgroundColor:["#ffffff",0,0,1],borderBottomWidth:["2rpx",0,0,1],borderBottomStyle:["solid",0,0,1],borderBottomColor:["#FAFAFA",0,0,1],flex:[1,0,0,1]}},".user-section":{"":{display:["flex",0,0,3],flexDirection:["row",0,0,3],alignItems:["center",0,0,3],justifyContent:["space-between",0,0,3]}},".user-info":{"":{display:["flex",0,0,4],flexDirection:["row",0,0,4],alignItems:["center",0,0,4]}},".avatar":{"":{width:["62rpx",0,0,5],height:["62rpx",0,0,5],borderRadius:[50,0,0,5],marginRight:["6rpx",0,0,5]}},".username":{"":{fontWeight:["500",0,0,7],fontSize:["24rpx",0,0,7],color:["#333333",0,0,7],lineHeight:["33rpx",0,0,7]}},".time":{"":{fontSize:["24rpx",0,0,8],color:["#999999",0,0,8],marginTop:["4rpx",0,0,8]}},".user-contant":{"":{paddingLeft:["70rpx",0,0,10]}},".rating-header":{"":{display:["flex",0,0,12],flexDirection:["row",0,0,12],alignItems:["center",0,0,12],marginTop:["20rpx",0,0,12]}},".tag":{"":{height:["40rpx",0,0,13],marginRight:["10rpx",0,0,13]}},".stars":{"":{display:["flex",0,0,14],flexDirection:["row",0,0,14],alignItems:["center",0,0,14],marginRight:["10rpx",0,0,14]}},".star-icon":{"":{width:["24rpx",0,0,15],height:["24rpx",0,0,15],marginRight:["2rpx",0,0,15]}},".score":{"":{fontWeight:["400",0,0,17],fontSize:["26rpx",0,0,17],color:["#E8101E",0,0,17],lineHeight:["37rpx",0,0,17]}},".comment":{"":{marginTop:["12rpx",0,0,19]}},".comment-text":{"":{fontWeight:["400",0,0,20],fontSize:["26rpx",0,0,20],color:["#333333",0,0,20],lineHeight:["46rpx",0,0,20]}},".photos":{"":{display:["flex",0,0,22],flexDirection:["row",0,0,22],flexWrap:["wrap",0,0,22],marginTop:["20rpx",0,0,22],position:["relative",0,0,22]}},".photo":{"":{width:["194rpx",0,0,23],height:["194rpx",0,0,23],borderRadius:["6rpx",0,0,23],marginRight:[1.1,0,0,23],marginBottom:["6rpx",0,0,23]}},".photo-third":{"":{marginRight:[0,0,0,27]}},".more":{"":{display:["flex",0,0,29],flexDirection:["row",0,0,29],alignItems:["center",0,0,29],justifyContent:["center",0,0,29],width:["59rpx",0,0,29],height:["28rpx",0,0,29],backgroundColor:["rgba(51,51,51,0.4)",0,0,29],borderRadius:["14rpx",0,0,29],position:["absolute",0,0,29],bottom:["10rpx",0,0,29],right:["10rpx",0,0,29]}},".more-img":{"":{width:["23rpx",0,0,30],height:["17rpx",0,0,30],marginRight:["5rpx",0,0,30]}},".more-text":{"":{fontWeight:["400",0,0,31],fontSize:["22rpx",0,0,31],color:["#FFFFFF",0,0,31],lineHeight:["30rpx",0,0,31]}},".foot-btn":{"":{fontWeight:["500",0,0,33],fontSize:["24rpx",0,0,33],color:["#0751ff",0,0,33],lineHeight:["33rpx",0,0,33]}},".foot-btn-img":{"":{width:["18rpx",0,0,34],height:["18rpx",0,0,34],marginLeft:["10rpx",0,0,34]}},".btnImg2":{"":{transform:["rotate(180deg)",0,0,35]}},"@VERSION":2}},function(t,e){t.exports={".evaluationList":{"":{backgroundColor:["#ffffff",0,0,1],overflow:["hidden",0,0,1],marginTop:["0rpx",0,0,1],marginRight:["24rpx",0,0,1],marginBottom:["20rpx",0,0,1],marginLeft:["24rpx",0,0,1],borderRadius:["16rpx",0,0,1]}},".evaluationList-header":{"":{paddingTop:[0,0,0,3],paddingRight:["20rpx",0,0,3],paddingBottom:[0,0,0,3],paddingLeft:["20rpx",0,0,3],marginTop:["21rpx",0,0,3],marginBottom:["6rpx",0,0,3],display:["flex",0,0,3],flexDirection:["row",0,0,3],alignItems:["center",0,0,3],justifyContent:["space-between",0,0,3]}},".header-left-text":{"":{fontWeight:["500",0,0,7],fontSize:["30rpx",0,0,7],color:["#333333",0,0,7],lineHeight:["42rpx",0,0,7]}},".evaluationList-header-right":{"":{display:["flex",0,0,9],flexDirection:["row",0,0,9],alignItems:["center",0,0,9]}},".header-right-text":{"":{fontWeight:["400",0,0,11],fontSize:["24rpx",0,0,11],color:["#333333",0,0,11],lineHeight:["33rpx",0,0,11]}},".header-right-img":{"":{width:["10rpx",0,0,13],height:["19rpx",0,0,13],marginLeft:["10rpx",0,0,13],mode:["widthFix",0,0,13]}},"@VERSION":2}},function(t,e,r){"use strict";r.r(e);var i=r(51),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(r(15)),o=i(r(16)),a=i(r(243)),s={name:"uv-line",mixins:[n.default,o.default,a.default],computed:{lineStyle:function(){var t={};return t.margin=this.margin,"row"===this.direction?(t.borderBottomWidth="1px",t.borderBottomStyle=this.dashed?"dashed":"solid",t.width=this.$uv.addUnit(this.length),this.hairline&&(t.transform="scaleY(0.5)")):(t.borderLeftWidth="1px",t.borderLeftStyle=this.dashed?"dashed":"solid",t.height=this.$uv.addUnit(this.length),this.hairline&&(t.transform="scaleX(0.5)")),t.borderColor=this.color,this.$uv.deepMerge(t,this.$uv.addStyle(this.customStyle))}}};e.default=s},function(t,e){t.exports={"@VERSION":2}},function(t,e,r){"use strict";r.r(e);var i=r(54),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(r(15)),o=i(r(16)),a=i(r(244)),s={name:"uv-divider",mixins:[n.default,o.default,a.default],emits:["click"],computed:{textStyle:function(){var t={};return t.fontSize=this.$uv.addUnit(this.textSize),t.color=this.textColor,t},leftLineStyle:function(){var t={};return"left"===this.textPosition?t.width="80rpx":t.flex=1,t},rightLineStyle:function(){var t={};return"right"===this.textPosition?t.width="80rpx":t.flex=1,t}},methods:{click:function(){this.$emit("click")}}};e.default=s},function(t,e){t.exports={".uv-divider":{"":{flexDirection:["row",0,0,16],alignItems:["center",0,0,16],marginTop:["15",0,0,16],marginRight:[0,0,0,16],marginBottom:["15",0,0,16],marginLeft:[0,0,0,16]}},".uv-divider__text":{"":{marginTop:[0,0,0,17],marginRight:["15",0,0,17],marginBottom:[0,0,0,17],marginLeft:["15",0,0,17]}},".uv-divider__dot":{"":{fontSize:["12",0,0,18],marginTop:[0,0,0,18],marginRight:["12",0,0,18],marginBottom:[0,0,0,18],marginLeft:["12",0,0,18],color:["#c0c4cc",0,0,18]}},"@VERSION":2}},function(t,e,r){"use strict";r.r(e);var i=r(57),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";(function(t){var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(r(25)),o=i(r(5)),a=i(r(6)),s=i(r(15)),c=i(r(16)),l=r(246);function u(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function p(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};t.duration&&(this.durationTime=t.duration),this.animation=(0,l.createAnimation)(Object.assign(this.config,t),this)},onClick:function(){this.$emit("click",{detail:this.isShow})},step:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.animation){for(var i in e)try{var a;if("object"===(0,o.default)(e[i]))(a=this.animation)[i].apply(a,(0,n.default)(e[i]));else this.animation[i](e[i])}catch(e){t("error","\u65b9\u6cd5 ".concat(i," \u4e0d\u5b58\u5728")," at uni_modules/uv-transition/components/uv-transition/uv-transition.vue:166")}return this.animation.step(r),this}},run:function(t){this.animation&&this.animation.run(t)},open:function(){var t=this;clearTimeout(this.timer),this.transform="",this.isShow=!0;var e=this.styleInit(!1),r=e.opacity,i=e.transform;void 0!==r&&(this.opacity=r),this.transform=i,this.$nextTick((function(){t.timer=setTimeout((function(){t.animation=(0,l.createAnimation)(t.config,t),t.tranfromInit(!1).step(),t.cellChild?t.opacity=1:t.animation.run(),t.$emit("change",{detail:t.isShow})}),20)}))},close:function(t){var e=this;this.animation&&this.tranfromInit(!0).step().run((function(){e.isShow=!1,e.animationData=null,e.animation=null;var t=e.styleInit(!1),r=t.opacity,i=t.transform;e.opacity=r||1,e.transform=i,e.$emit("change",{detail:e.isShow})}))},styleInit:function(t){var e=this,r={transform:""},i=function(t,i){"fade"===i?r.opacity=e.animationType(t)[i]:r.transform+=e.animationType(t)[i]+" "};return"string"==typeof this.mode?i(t,this.mode):this.mode.forEach((function(e){i(t,e)})),r},tranfromInit:function(t){var e=this,r=function(t,r){var i=null;"fade"===r?i=t?0:1:(i=t?"-100%":"0","zoom-in"===r&&(i=t?.8:1),"zoom-out"===r&&(i=t?1.2:1),"slide-right"===r&&(i=t?"100%":"0"),"slide-bottom"===r&&(i=t?"100%":"0")),e.animation[e.animationMode()[r]](i)};return"string"==typeof this.mode?r(t,this.mode):this.mode.forEach((function(e){r(t,e)})),this.animation},animationType:function(t){return{fade:t?1:0,"slide-top":"translateY(".concat(t?"0":"-100%",")"),"slide-right":"translateX(".concat(t?"0":"100%",")"),"slide-bottom":"translateY(".concat(t?"0":"100%",")"),"slide-left":"translateX(".concat(t?"0":"-100%",")"),"zoom-in":"scaleX(".concat(t?1:.8,") scaleY(").concat(t?1:.8,")"),"zoom-out":"scaleX(".concat(t?1:1.2,") scaleY(").concat(t?1:1.2,")")}},animationMode:function(){return{fade:"opacity","slide-top":"translateY","slide-right":"translateX","slide-bottom":"translateY","slide-left":"translateX","zoom-in":"scale","zoom-out":"scale"}},toLine:function(t){return t.replace(/([A-Z])/g,"-$1").toLowerCase()}}};e.default=d}).call(this,r(2).default)},function(t,e,r){"use strict";r.r(e);var i=r(59),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(r(15)),o=i(r(16)),a=i(r(247)),s={name:"uv-overlay",emits:["click"],mixins:[n.default,o.default,a.default],watch:{show:function(t){}},computed:{overlayStyle:function(){var t={position:"fixed",top:0,left:0,right:0,zIndex:this.zIndex,bottom:0,"background-color":"rgba(0, 0, 0, ".concat(this.opacity,")")};return this.$uv.deepMerge(t,this.$uv.addStyle(this.customStyle))}},methods:{clickHandler:function(){this.$emit("click")},clear:function(){}}};e.default=s},function(t,e){t.exports={"@VERSION":2}},function(t,e,r){"use strict";r.r(e);var i=r(62),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(r(15)),o=i(r(16)),a=i(r(249)),s={name:"uv-status-bar",mixins:[n.default,o.default,a.default],data:function(){return{}},computed:{style:function(){var t={};return t.height=this.$uv.addUnit(this.$uv.sys().statusBarHeight,"px"),this.bgColor&&(this.bgColor.indexOf("gradient")>-1?t.backgroundImage=this.bgColor:t.background=this.bgColor),this.$uv.deepMerge(t,this.$uv.addStyle(this.customStyle))}}};e.default=s},function(t,e){t.exports={"@VERSION":2}},function(t,e,r){"use strict";r.r(e);var i=r(65),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(r(15)),o=i(r(16)),a={name:"uv-safe-bottom",mixins:[n.default,o.default],data:function(){return{safeAreaBottomHeight:0,isNvue:!1}},computed:{style:function(){var t,e,r={};return r.height=this.$uv.addUnit(null===(t=this.$uv.sys())||void 0===t||null===(e=t.safeAreaInsets)||void 0===e?void 0:e.bottom,"px"),this.$uv.deepMerge(r,this.$uv.addStyle(this.customStyle))}},mounted:function(){this.isNvue=!0}};e.default=a},function(t,e){t.exports={"@VERSION":2}},function(t,e,r){"use strict";r.r(e);var i=r(68),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(r(15)),o=i(r(16)),a=i(r(252)),s=i(r(253)),c=i(r(254));weex.requireModule("dom").addRule("fontFace",{fontFamily:"uvicon-iconfont",src:"url('"+a.default+"')"});var l={name:"uv-icon",emits:["click"],mixins:[n.default,o.default,c.default],data:function(){return{colorType:["primary","success","info","error","warning"]}},computed:{uClasses:function(){var t=[];return t.push(this.customPrefix),t.push(this.customPrefix+"-"+this.name),this.color&&this.colorType.includes(this.color)&&t.push("uv-icon__icon--"+this.color),t},iconStyle:function(){var t={};return t={fontSize:this.$uv.addUnit(this.size),lineHeight:this.$uv.addUnit(this.size),fontWeight:this.bold?"bold":"normal",top:this.$uv.addUnit(this.top)},this.color&&!this.colorType.includes(this.color)&&(t.color=this.color),t},isImg:function(){var t=this.name.indexOf("data:")>-1&&this.name.indexOf("base64")>-1;return-1!==this.name.indexOf("/")||t},imgStyle:function(){var t={};return t.width=this.width?this.$uv.addUnit(this.width):this.$uv.addUnit(this.size),t.height=this.height?this.$uv.addUnit(this.height):this.$uv.addUnit(this.size),t},icon:function(){var t=s.default["uvicon-"+this.name];return t?t?unescape("%u".concat(t)):["uvicon"].indexOf(this.customPrefix)>-1?this.name:"":t?unescape("%u".concat(t)):["uvicon"].indexOf(this.customPrefix)>-1?unescape("%u".concat(this.name)):""}},methods:{clickHandler:function(t){this.$emit("click",this.index),this.stop&&this.preventEvent(t)}}};e.default=l},function(t,e){t.exports={".uv-icon":{"":{alignItems:["center",0,0,16]}},".uv-icon--left":{"":{flexDirection:["row-reverse",0,0,17],alignItems:["center",0,0,17]}},".uv-icon--right":{"":{flexDirection:["row",0,0,18],alignItems:["center",0,0,18]}},".uv-icon--top":{"":{flexDirection:["column-reverse",0,0,19],justifyContent:["center",0,0,19]}},".uv-icon--bottom":{"":{flexDirection:["column",0,0,20],justifyContent:["center",0,0,20]}},".uv-icon__icon":{"":{fontFamily:["uvicon-iconfont",0,0,21],position:["relative",0,0,21],flexDirection:["row",0,0,21],alignItems:["center",0,0,21]}},".uv-icon__icon--primary":{"":{color:["#3c9cff",0,0,22]}},".uv-icon__icon--success":{"":{color:["#5ac725",0,0,23]}},".uv-icon__icon--error":{"":{color:["#f56c6c",0,0,24]}},".uv-icon__icon--warning":{"":{color:["#f9ae3d",0,0,25]}},".uv-icon__icon--info":{"":{color:["#909399",0,0,26]}},"@VERSION":2}},function(t,e,r){"use strict";r.r(e);var i=r(71),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n,o,a=i(r(6)),s=i(r(15)),c=i(r(16));function l(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}var u={name:"uv-popup",components:{},mixins:[s.default,c.default],emits:["change","maskClick"],props:function(t){for(var e=1;e=500&&this.popupHeight>=500},bg:function(){return""===this.bgColor||"none"===this.bgColor||this.$uv.getPx(this.round)>0?"transparent":this.bgColor},contentStyle:function(){var t={};if(this.bgColor&&(t.backgroundColor=this.bg),this.round){var e=this.$uv.addUnit(this.round),r=this.direction?this.direction:this.mode;t.backgroundColor=this.bgColor,"top"===r?(t.borderBottomLeftRadius=e,t.borderBottomRightRadius=e):"bottom"===r?(t.borderTopLeftRadius=e,t.borderTopRightRadius=e):"center"===r&&(t.borderRadius=e)}return this.$uv.deepMerge(t,this.$uv.addStyle(this.customStyle))}},destroyed:function(){this.setH5Visible()},created:function(){this.messageChild=null,this.clearPropagation=!1},methods:{setH5Visible:function(){},closeMask:function(){this.maskShow=!1},clear:function(t){this.clearPropagation=!0},open:function(t){if(!this.showPopup){if(t&&-1!==["top","center","bottom","left","right","message","dialog","share"].indexOf(t)?this.direction=t:t=this.mode,!this.config[t])return this.$uv.error("\u7f3a\u5c11\u7c7b\u578b\uff1a".concat(t));this[this.config[t]](),this.$emit("change",{show:!0,type:t})}},close:function(t){var e=this;this.showTrans=!1,this.$emit("change",{show:!1,type:this.mode}),clearTimeout(this.timer),this.timer=setTimeout((function(){e.showPopup=!1}),300)},touchstart:function(){this.clearPropagation=!1},onTap:function(){this.clearPropagation?this.clearPropagation=!1:(this.$emit("maskClick"),this.closeOnClickOverlay&&this.close())},top:function(t){var e=this;this.popupClass=this.isDesktop?"fixforpc-top":"top",this.ani=["slide-top"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,left:0,right:0,backgroundColor:this.bg},t||(this.showPopup=!0,this.showTrans=!0,this.$nextTick((function(){e.messageChild&&"message"===e.mode&&e.messageChild.timerClose()})))},bottom:function(t){this.popupClass="bottom",this.ani=["slide-bottom"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,left:0,right:0,bottom:0,backgroundColor:this.bg},t||(this.showPopup=!0,this.showTrans=!0)},center:function(t){this.popupClass="center",this.ani=this.zoom?["zoom-in","fade"]:["fade"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,bottom:0,left:0,right:0,top:0,justifyContent:"center",alignItems:"center"},t||(this.showPopup=!0,this.showTrans=!0)},left:function(t){this.popupClass="left",this.ani=["slide-left"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,left:0,bottom:0,top:0,backgroundColor:this.bg},t||(this.showPopup=!0,this.showTrans=!0)},right:function(t){this.popupClass="right",this.ani=["slide-right"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,bottom:0,right:0,top:0,backgroundColor:this.bg},t||(this.showPopup=!0,this.showTrans=!0)}}};e.default=u},function(t,e){t.exports={".uv-popup":{"":{position:["fixed",0,0,16]},".top":{top:[0,0,1,17]},".left":{top:[0,0,1,17]},".right":{top:[0,0,1,17]}},".uv-popup__content":{".uv-popup ":{position:["relative",0,1,18]},".uv-popup .left":{paddingTop:[0,0,2,19],flex:[1,0,2,19]},".uv-popup .right":{paddingTop:[0,0,2,19],flex:[1,0,2,19]}},".uv-popup__content__close":{".uv-popup ":{position:["absolute",0,1,20]}},".uv-popup__content__close--hover":{".uv-popup ":{opacity:[.4,0,1,21]}},".uv-popup__content__close--top-left":{".uv-popup ":{top:["15",0,1,22],left:["15",0,1,22]}},".uv-popup__content__close--top-right":{".uv-popup ":{top:["15",0,1,23],right:["15",0,1,23]}},".uv-popup__content__close--bottom-left":{".uv-popup ":{bottom:["15",0,1,24],left:["15",0,1,24]}},".uv-popup__content__close--bottom-right":{".uv-popup ":{right:["15",0,1,25],bottom:["15",0,1,25]}},".fixforpc-top":{"":{top:[0,0,0,26]}},"@VERSION":2}},function(t,e,r){"use strict";r.r(e);var i=r(74),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";(function(t){var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(r(12)),o={data:function(){return{isFirstOPen:!0,sureTimeObj:{},dateList:["\u4eca\u5929","\u660e\u5929","\u540e\u5929"],selectedTimeIndex:"",serviceTimeNum:1,sureTimeDataIndex:null,selectedDateIndex:0,startTimeObj:{serviceTimeNum:"",sureTimeDataIndex:0,selectedDateIndex:0},stateConfig:{1:{class:"state-available",text:"\u53ef\u7ea6"},2:{class:"state-full",text:"\u7ea6\u6ee1"},3:{class:"state-rest",text:"\u4f11\u606f"},4:{class:"state-locked",text:"\u9501\u5b9a"},5:{class:"state-unavailable",text:"\u4e0d\u53ef\u7528"}}}},props:{timeOptions:{type:Array,default:function(){return[]}},firstTimeIndex:{type:Number,default:0},firstDataIndex:{type:Number,default:1},service:{type:Object,default:function(){return{}}},publish_user_id:{type:Number,default:0},server_type:{type:Number,default:0}},watch:{service:{handler:function(t){this.serviceTimeNum=Math.max(1,Math.ceil((t.server_time||0)/10))},deep:!0,immediate:!0}},created:function(){},mounted:function(){},methods:{openTime:function(){t("log","\u6253\u5f00\u65f6\u95f4\u9009\u62e9\u5f39\u6846",this.selectedDateIndex," at components/select-time-page/select-time-page.vue:162"),this.isFirstOPen=!1,this.startTimeObj={selectedTimeIndex:this.selectedTimeIndex,sureTimeDataIndex:this.sureTimeDataIndex,selectedDateIndex:this.selectedDateIndex},this.$refs.popup.open("bottom")},getStateText:function(t){var e;return(null===(e=this.stateConfig[t])||void 0===e?void 0:e.text)||"\u672a\u77e5"},getItemClass:function(t){var e,r=t||0;return(null===(e=this.stateConfig[r])||void 0===e?void 0:e.class)||"state-unknown"},selectDate:function(t){this.selectedDateIndex=t},selectTime:function(e,r){var i=this;if(1===e.state){var o={user_syr_id:this.publish_user_id||this.service.publish_user_id,reserve_time:this.timeOptions[this.selectedDateIndex][r].time,server_id:this.service.id,server_type:this.server_type};n.default.post("/user/reserve/timeCheck",o).then((function(t){200==t.code?(i.selectedTimeIndex=r,i.sureTimeDataIndex=i.selectedDateIndex,i.sureTimeObj={selectedDateIndex:i.selectedDateIndex,selectedTimeIndex:i.selectedTimeIndex,time:i.timeOptions[i.selectedDateIndex][i.selectedTimeIndex],res:t},i.$emit("selectTime",i.sureTimeObj)):uni.showToast({title:"\u5f53\u524d\u65f6\u95f4\u4e0d\u53ef\u9884\u7ea6",icon:"none",duration:1e3})})).catch((function(e){t("log","\u62a5\u9519",e," at components/select-time-page/select-time-page.vue:220")}))}},sureTime:function(){this.$refs.popup.close(),this.$emit("sureTime",this.sureTimeObj)},handelGetTimeArr:function(){var t={selectedDateIndex:this.selectedDateIndex,selectedTimeIndex:this.selectedTimeIndex,time:this.timeOptions[this.selectedDateIndex][this.selectedTimeIndex]};this.$emit("getTimeArr",t)},closeTime:function(){this.selectedTimeIndex=this.startTimeObj.selectedTimeIndex,this.sureTimeDataIndex=this.startTimeObj.sureTimeDataIndex,this.selectedDateIndex=this.startTimeObj.selectedDateIndex,this.$refs.popup.close(),this.$emit("closeTime")}}};e.default=o}).call(this,r(2).default)},function(t,e){t.exports={".time-popup":{"":{backgroundColor:["#ffffff",0,0,2],borderTopLeftRadius:["24rpx",0,0,2],borderTopRightRadius:["24rpx",0,0,2],borderBottomRightRadius:[0,0,0,2],borderBottomLeftRadius:[0,0,0,2],overflow:["hidden",0,0,2],transform:["translateY(0)",0,0,2],transitionProperty:["transform",0,0,2],transitionDuration:[300,0,0,2],transitionTimingFunction:["ease",0,0,2],transitionDelay:[0,0,0,2],zIndex:[999,0,0,2]}},".popup-header":{"":{display:["flex",0,0,3],flexDirection:["row",0,0,3],justifyContent:["space-between",0,0,3],alignItems:["center",0,0,3],paddingTop:["30rpx",0,0,3],paddingRight:["30rpx",0,0,3],paddingBottom:["36rpx",0,0,3],paddingLeft:["30rpx",0,0,3]}},".popup-close":{"":{fontFamily:["PingFangSC, PingFang SC",0,0,4],fontWeight:["400",0,0,4],fontSize:["26rpx",0,0,4],color:["#999999",0,0,4],lineHeight:["37rpx",0,0,4],textAlign:["left",0,0,4],fontStyle:["normal",0,0,4]}},".popup-title":{"":{fontFamily:["PingFangSC, PingFang SC",0,0,5],fontWeight:["500",0,0,5],fontSize:["30rpx",0,0,5],color:["#333333",0,0,5],lineHeight:["42rpx",0,0,5],textAlign:["left",0,0,5],fontStyle:["normal",0,0,5]}},".time-picker-content":{"":{paddingTop:["32rpx",0,0,6],paddingRight:["32rpx",0,0,6],paddingBottom:["32rpx",0,0,6],paddingLeft:["32rpx",0,0,6],display:["flex",0,0,6],flexWrap:["wrap",0,0,6],flexDirection:["row",0,0,6],width:["750rpx",0,0,6]}},".time-picker-content__datas":{"":{display:["flex",0,0,7],flexDirection:["row",0,0,7],flexWrap:["wrap",0,0,7],alignItems:["flex-start",0,0,7],width:["690rpx",0,0,7],justifyContent:["space-between",0,0,7],marginBottom:["30rpx",0,0,7]}},".time-picker-content__datas__date__item":{"":{width:["214rpx",0,0,8],height:["70rpx",0,0,8],backgroundColor:["#f7f8fa",0,0,8],borderRadius:["10rpx",0,0,8],display:["flex",0,0,8],alignItems:["center",0,0,8],justifyContent:["center",0,0,8],position:["relative",0,0,8],overflow:["hidden",0,0,8]}},".time-picker-content__datas__date__item__text":{"":{fontFamily:["PingFangSC, PingFang SC",0,0,9],fontWeight:["400",0,0,9],fontSize:["26rpx",0,0,9],color:["#333333",0,0,9],lineHeight:["37rpx",0,0,9],textAlign:["left",0,0,9],fontStyle:["normal",0,0,9],zIndex:[2,0,0,9],position:["relative",0,0,9]},".active":{color:["#ffffff",0,1,10]}},".time-picker-content__datas__date__item__box":{"":{width:["214rpx",0,0,11],height:["74rpx",0,0,11],position:["absolute",0,0,11],zIndex:[1,0,0,11],marginBottom:["8rpx",0,0,11]}},".time-picker-content__datas__date__item__box__img":{"":{width:["214rpx",0,0,12],height:["74rpx",0,0,12]}},".time-picker-content__time__list":{"":{width:["690rpx",0,0,13],display:["flex",0,0,13],flexDirection:["row",0,0,13],flexWrap:["wrap",0,0,13]}},".time-picker-content__time__list__item":{"":{width:["114rpx",0,0,14],height:["66rpx",0,0,14],display:["flex",0,0,14],flexDirection:["column",0,0,14],alignItems:["center",0,0,14],justifyContent:["center",0,0,14],marginBottom:["26rpx",0,0,14]}},".time-picker-content__time__list__item__text":{"":{fontWeight:["400",0,0,15],fontSize:["30rpx",0,0,15],color:["#333333",0,0,15],lineHeight:["66rpx",0,0,15],textAlign:["center",0,0,15],fontStyle:["normal",0,0,15]},".isActive ":{color:["#e8101e",1,1,25]}},".time-picker-content__time__list__item__state":{"":{fontSize:["20rpx",0,0,16]}},".state-available":{"":{color:["#3c3638",0,0,18]}},".state-full":{"":{color:["#3c3638",0,0,19],backgroundColor:["#e4e9f0",0,0,19]}},".state-rest":{"":{color:["#cdcdcd",0,0,20],backgroundColor:["#f7f8f9",0,0,20]}},".state-locked":{"":{color:["#3c3638",0,0,21],backgroundColor:["#e4e9f0",0,0,21]}},".state-unavailable":{"":{color:["#ffffff",0,0,22],backgroundColor:["#e4e9f0",0,0,22]}},".state-unknown":{"":{color:["#999999",0,0,23],backgroundColor:["#f7f8fa",0,0,23]}},".isActive":{"":{backgroundColor:["rgba(252,67,124,0.08)",0,0,24],color:["#e8101e",1,0,24]}},".firstActive":{"":{borderTopLeftRadius:["51rpx",0,0,27],borderTopRightRadius:["0rpx",0,0,27],borderBottomRightRadius:["0rpx",0,0,27],borderBottomLeftRadius:["51rpx",0,0,27]}},".lastActive":{"":{borderTopLeftRadius:["0rpx",0,0,28],borderTopRightRadius:["51rpx",0,0,28],borderBottomRightRadius:["51rpx",0,0,28],borderBottomLeftRadius:["0rpx",0,0,28]}},".time-picker-content__time__sure":{"":{paddingTop:["39rpx",0,0,29],paddingRight:[0,0,0,29],paddingBottom:["39rpx",0,0,29],paddingLeft:[0,0,0,29],display:["flex",0,0,29],flexDirection:["row",0,0,29],width:["690rpx",0,0,29],justifyContent:["center",0,0,29]}},".time-picker-content__time__sure__box":{"":{width:["648rpx",0,0,30],height:["94rpx",0,0,30],backgroundColor:["#E8101E",0,0,30],borderRadius:["48rpx",0,0,30],display:["flex",0,0,30],alignItems:["center",0,0,30],justifyContent:["center",0,0,30]}},".time-picker-content__time__sure__box__text":{"":{fontFamily:["PingFangSC, PingFang SC",0,0,31],fontWeight:["400",0,0,31],fontSize:["30rpx",0,0,31],color:["#ffffff",0,0,31],lineHeight:["42rpx",0,0,31],textAlign:["center",0,0,31],fontStyle:["normal",0,0,31]}},"@VERSION":2}},function(t,e,r){"use strict";r.r(e);var i=r(77),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i={name:"AgreeRadio",props:{isAgree:{type:Boolean,default:!1},yesImg:{type:String,default:"/static/images/agree_y.png"},noImg:{type:String,default:"/static/images/agree_n.png"},radioSize:{type:String,default:"32rpx"}},data:function(){return{}},methods:{changeAgree:function(t){this.$emit("change-agree",t)}}};e.default=i},function(t,e){t.exports={".agree-radio":{"":{width:["32rpx",0,0,0],height:["32rpx",0,0,0]}},".agree-btn":{"":{width:["32rpx",0,0,1],height:["32rpx",0,0,1]}},"@VERSION":2}},,,,function(t,e,r){"use strict";r.d(e,"b",(function(){return i})),r.d(e,"c",(function(){return n})),r.d(e,"a",(function(){}));var i=function(){var t=this,e=t.$createElement,r=t._self._c||e;return t.evaluateList.count?r("view",{staticClass:["evaluationList"]},[r("view",{staticClass:["evaluationList-header"]},[r("view",{staticClass:["evaluationList-header-left"]},[r("u-text",{staticClass:["header-left-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u8bc4\u4ef7("+t._s(t.evaluateList.count)+")")])]),r("view",{staticClass:["evaluationList-header-right"],on:{click:t.goList}},[r("u-text",{staticClass:["header-right-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u67e5\u770b\u5168\u90e8")]),r("u-image",{staticClass:["header-right-img"],attrs:{src:"/static/images/evaluate/right.png"}})],1)]),t._l(t.evaluateList.list,(function(t,e){return r("evaluationDetail",{key:e,attrs:{evaluateObj:t}})}))],2):t._e()},n=[]},,function(t,e,r){"use strict";r.d(e,"b",(function(){return i})),r.d(e,"c",(function(){return n})),r.d(e,"a",(function(){}));var i=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("view",{staticClass:["evaluation-detail"],on:{click:t.goDetail}},[r("view",{staticClass:["user-section"]},[r("view",{staticClass:["user-info"]},[r("u-image",{staticClass:["avatar"],attrs:{src:t.evaluatorPhoto,mode:"aspectFill"}}),r("u-text",{staticClass:["username"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.evaluatorName))])],1),r("u-text",{staticClass:["time"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.formattedCreateTime))])]),r("view",{staticClass:["user-contant"]},[r("view",{staticClass:["rating-header"]},[r("u-image",{staticClass:["tag"],attrs:{src:t.getComposite,mode:"heightFix"}}),r("view",{staticClass:["stars"]},t._l(5,(function(e){return r("u-image",{key:e,staticClass:["star-icon"],attrs:{src:t.getStar(e),mode:"aspectFill"}})})),1),r("u-text",{staticClass:["score"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.evaluateObj.composite)+"\u5206")])],1),r("view",{staticClass:["comment"]},[r("u-text",{staticClass:["comment-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.evaluateObj.describe.length>60?t.evaluateObj.describe.slice(0,59):t.evaluateObj.describe))])]),t.isAllImg?r("view",{staticClass:["photos"]},t._l(t.photos,(function(e,i){return r("u-image",{key:i,staticClass:["photo"],class:{"photo-third":(i+1)%3==0},attrs:{src:e,mode:"aspectFill"},on:{click:function(e){t.imgPreview(i)}}})})),1):r("view",{staticClass:["photos"]},[t._l(t.photos.slice(0,3),(function(e,i){return r("u-image",{key:i,staticClass:["photo"],class:{"photo-third":(i+1)%3==0},attrs:{src:e,mode:"aspectFill"},on:{click:function(e){t.imgPreview(i)}}})})),t.photos.length>3?r("view",{staticClass:["more"]},[r("u-image",{staticClass:["more-img"],attrs:{src:"/static/images/evaluate/more.png",mode:"aspectFill"}}),r("u-text",{staticClass:["more-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.photos.length))])],1):t._e()],2)])])},n=[]},function(t,e,r){"use strict";r.d(e,"b",(function(){return n})),r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i}));var i={uvLine:r(242).default},n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("view",{staticClass:["uv-divider"],style:[t.$uv.addStyle(t.customStyle)],on:{click:t.click}},[r("uv-line",{attrs:{color:t.lineColor,customStyle:t.leftLineStyle,hairline:t.hairline,dashed:t.dashed}}),t.dot?r("u-text",{staticClass:["uv-divider__dot"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u25cf")]):t.text?r("u-text",{staticClass:["uv-divider__text"],style:[t.textStyle],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.text))]):t._e(),r("uv-line",{attrs:{color:t.lineColor,customStyle:t.rightLineStyle,hairline:t.hairline,dashed:t.dashed}})],1)},o=[]},function(t,e,r){"use strict";r.d(e,"b",(function(){return n})),r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i}));var i={uvOverlay:r(245).default,uvTransition:r(112).default,uvStatusBar:r(248).default,uvSafeBottom:r(250).default,uvIcon:r(251).default},n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return t.showPopup?r("view",{staticClass:["uv-popup"],class:[t.popupClass,t.isDesktop?"fixforpc-z-index":""],style:[{zIndex:t.zIndex}]},[r("view",{on:{touchstart:t.touchstart}},[t.maskShow&&t.overlay?r("uv-overlay",{key:"1",attrs:{show:t.showTrans,duration:t.duration,customStyle:t.overlayStyle,opacity:t.overlayOpacity,zIndex:t.zIndex},on:{click:t.onTap}}):t._e(),r("uv-transition",{key:"2",attrs:{mode:t.ani,name:"content",customStyle:t.transitionStyle,duration:t.duration,show:t.showTrans},on:{click:t.onTap}},[r("view",{staticClass:["uv-popup__content"],class:[t.popupClass],style:[t.contentStyle],on:{click:t.clear}},[t.safeAreaInsetTop?r("uv-status-bar"):t._e(),t._t("default"),t.safeAreaInsetBottom?r("uv-safe-bottom"):t._e(),t.closeable?r("view",{staticClass:["uv-popup__content__close"],class:["uv-popup__content__close--"+t.closeIconPos],attrs:{hoverClass:"uv-popup__content__close--hover",hoverStayTime:"150"},on:{click:t.close}},[r("uv-icon",{attrs:{name:"close",color:"#909399",size:"18",bold:!0}})],1):t._e()],2)])],1)]):t._e()},o=[]},function(t,e,r){"use strict";r.d(e,"b",(function(){return n})),r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i}));var i={uniPopup:r(118).default},n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("uni-popup",{ref:"popup",attrs:{type:"bottom",borderRadius:"20rpx"}},[r("view",{staticClass:["time-popup"]},[r("view",{staticClass:["popup-header"]},[r("u-text",{staticClass:["popup-title"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u8bf7\u9009\u62e9\u670d\u52a1\u65f6\u95f4")]),r("u-text",{staticClass:["popup-close"],appendAsTree:!0,attrs:{append:"tree"},on:{click:t.closeTime}},[t._v("\u53d6\u6d88")])]),r("view",{staticClass:["time-picker-content"]},[r("view",{staticClass:["time-picker-content__datas"]},t._l(t.dateList,(function(e,i){return r("view",{key:i,staticClass:["time-picker-content__datas__date__item"],on:{click:function(e){t.selectDate(i)}}},[r("view",{staticClass:["time-picker-content__datas__date__item__box"]},[t.selectedDateIndex==i?r("u-image",{staticClass:["time-picker-content__datas__date__item__box__img"],attrs:{src:"/static/images/dataBox.png"}}):t._e()],1),r("u-text",{staticClass:["time-picker-content__datas__date__item__text"],class:t.selectedDateIndex===i?"active":"",appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(e))])])})),0),r("scroll-view",{staticStyle:{height:"600rpx",width:"690rpx"},attrs:{scrollY:"true"}},[t.timeOptions[t.selectedDateIndex]&&t.timeOptions[t.selectedDateIndex].length?r("view",{staticClass:["time-picker-content__time__list"]},t._l(t.timeOptions[t.selectedDateIndex],(function(e,i){return r("view",{key:i,staticClass:["time-picker-content__time__list__item"],class:[t.getItemClass(e.state||0),{lastActive:t.selectedTimeIndex+t.serviceTimeNum==i,firstActive:t.selectedTimeIndex==i,isActive:i>=t.selectedTimeIndex&&i<=t.selectedTimeIndex+t.serviceTimeNum&&t.sureTimeDataIndex===t.selectedDateIndex&&null!==t.selectedTimeIndex}],on:{click:function(r){t.selectTime(e,i)}}},[r("u-text",{staticClass:["time-picker-content__time__list__item__text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(e.show_time))])])})),0):t._e()]),r("view",{staticClass:["time-picker-content__time__sure"]},[r("view",{staticClass:["time-picker-content__time__sure__box"],on:{click:t.sureTime}},[r("u-text",{staticClass:["time-picker-content__time__sure__box__text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u786e\u8ba4")])])])],1)])])},o=[]},function(t,e,r){"use strict";r.d(e,"b",(function(){return i})),r.d(e,"c",(function(){return n})),r.d(e,"a",(function(){}));var i=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("view",{staticClass:["agree-radio"],style:{width:t.radioSize,height:t.radioSize}},[t.isAgree?r("u-image",{staticClass:["agree-btn"],style:{width:t.radioSize,height:t.radioSize},attrs:{src:t.yesImg,mode:"aspectFit"},on:{click:function(e){t.changeAgree(!1)}}}):r("u-image",{staticClass:["agree-btn"],style:{width:t.radioSize,height:t.radioSize},attrs:{src:t.noImg,mode:"aspectFit"},on:{click:function(e){t.changeAgree(!0)}}})],1)},n=[]},function(t,e,r){"use strict";r.d(e,"b",(function(){return i})),r.d(e,"c",(function(){return n})),r.d(e,"a",(function(){}));var i=function(){var t=this.$createElement;return(this._self._c||t)("view",{staticClass:["uv-line"],style:[this.lineStyle]})},n=[]},function(t,e,r){"use strict";r.d(e,"b",(function(){return n})),r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i}));var i={uvTransition:r(112).default},n=function(){var t=this.$createElement;return(this._self._c||t)("uv-transition",{attrs:{show:this.show,mode:"fade",customClass:"uv-overlay",duration:this.duration,customStyle:this.overlayStyle},on:{click:this.clickHandler,touchmove:this.clear}},[this._t("default")],2)},o=[]},function(t,e,r){"use strict";r.d(e,"b",(function(){return i})),r.d(e,"c",(function(){return n})),r.d(e,"a",(function(){}));var i=function(){var t=this.$createElement,e=this._self._c||t;return this.isShow?e("view",{ref:"ani",class:this.customClass,style:this.transformStyles,attrs:{animation:this.animationData},on:{click:this.onClick}},[this._t("default")],2):this._e()},n=[]},function(t,e,r){"use strict";r.d(e,"b",(function(){return i})),r.d(e,"c",(function(){return n})),r.d(e,"a",(function(){}));var i=function(){var t=this.$createElement;return(this._self._c||t)("view",{staticClass:["uv-status-bar"],style:[this.style]},[this._t("default")],2)},n=[]},function(t,e,r){"use strict";r.d(e,"b",(function(){return i})),r.d(e,"c",(function(){return n})),r.d(e,"a",(function(){}));var i=function(){var t=this.$createElement;return(this._self._c||t)("view",{staticClass:["uv-safe-bottom"],class:[!this.isNvue&&"uv-safe-area-inset-bottom"],style:[this.style]})},n=[]},function(t,e,r){"use strict";r.d(e,"b",(function(){return i})),r.d(e,"c",(function(){return n})),r.d(e,"a",(function(){}));var i=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("view",{staticClass:["uv-icon"],class:["uv-icon--"+t.labelPos],on:{click:t.clickHandler}},[t.isImg?r("u-image",{staticClass:["uv-icon__img"],style:[t.imgStyle,t.$uv.addStyle(t.customStyle)],attrs:{src:t.name,mode:t.imgMode}}):r("u-text",{staticClass:["uv-icon__icon"],class:t.uClasses,style:[t.iconStyle,t.$uv.addStyle(t.customStyle)],appendAsTree:!0,attrs:{hoverClass:t.hoverClass,append:"tree"}},[t._v(t._s(t.icon))]),""!==t.label?r("u-text",{staticClass:["uv-icon__label"],style:{color:t.labelColor,fontSize:t.$uv.addUnit(t.labelSize),marginLeft:"right"==t.labelPos?t.$uv.addUnit(t.space):0,marginTop:"bottom"==t.labelPos?t.$uv.addUnit(t.space):0,marginRight:"left"==t.labelPos?t.$uv.addUnit(t.space):0,marginBottom:"top"==t.labelPos?t.$uv.addUnit(t.space):0},appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.label))]):t._e()],1)},n=[]},function(t,e,r){"use strict";var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.$parent=c,e.addStyle=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"object";if((0,a.empty)(t)||"object"===(0,o.default)(t)&&"object"===e||"string"===e&&"string"==typeof t)return t;if("object"===e){for(var r=(t=p(t)).split(";"),i={},n=0;n0&&void 0!==arguments[0]?arguments[0]:"auto",c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null!==(t=uni)&&void 0!==t&&null!==(e=t.$uv)&&void 0!==e&&null!==(r=e.config)&&void 0!==r&&r.unit?null===(i=uni)||void 0===i||null===(n=i.$uv)||void 0===n||null===(o=n.config)||void 0===o?void 0:o.unit:"px";return s=String(s),(0,a.number)(s)?"".concat(s).concat(c):s},e.deepClone=l,e.deepMerge=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e=l(e),"object"!==(0,o.default)(e)||null===e||"object"!==(0,o.default)(r)||null===r)return e;var i=Array.isArray(e)?e.slice():Object.assign({},e);for(var n in r)if(r.hasOwnProperty(n)){var a=r[n],s=i[n];a instanceof Date?i[n]=new Date(a):a instanceof RegExp?i[n]=new RegExp(a):a instanceof Map?i[n]=new Map(a):a instanceof Set?i[n]=new Set(a):"object"===(0,o.default)(a)&&null!==a?i[n]=t(s,a):i[n]=a}return i},e.error=function(t){0},e.formValidate=function(t,e){var r=c.call(t,"uv-form-item"),i=c.call(t,"uv-form");r&&i&&i.validateField(r.prop,(function(){}),e)},e.getDuration=function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=parseInt(t);if(e)return/s$/.test(t)?t:"".concat(t,t>30?"ms":"s");return/ms$/.test(t)?r:/s$/.test(t)?r>30?r:1e3*r:r},e.getHistoryPage=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=getCurrentPages(),r=e.length;return e[r-1+t]},e.getProperty=function(t,e){if(!t)return;if("string"!=typeof e||""===e)return"";if(-1!==e.indexOf(".")){for(var r=e.split("."),i=t[r[0]]||{},n=1;n1&&void 0!==arguments[1]&&arguments[1];if((0,a.number)(t))return e?"".concat(t,"px"):Number(t);if(/(rpx|upx)$/.test(t))return e?"".concat(uni.upx2px(parseInt(t)),"px"):Number(uni.upx2px(parseInt(t)));return e?"".concat(parseInt(t),"px"):parseInt(t)},e.guid=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:32,e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),n=[];if(r=r||i.length,t)for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".",i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:",";t="".concat(t).replace(/[^0-9+-Ee.]/g,"");var n=isFinite(+t)?+t:0,o=isFinite(+e)?Math.abs(e):0,a=void 0===i?",":i,c=void 0===r?".":r,l="";l=(o?(0,s.round)(n,o)+"":"".concat(Math.round(n))).split(".");var u=/(-?\d+)(\d{3})/;for(;u.test(l[0]);)l[0]=l[0].replace(u,"$1".concat(a,"$2"));(l[1]||"").length0&&void 0!==arguments[0]?arguments[0]:{},e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"brackets",i=e?"?":"",n=[];-1==["indices","brackets","repeat","comma"].indexOf(r)&&(r="brackets");var o=function(e){var i=t[e];if(["",void 0,null].indexOf(i)>=0)return"continue";if(i.constructor===Array)switch(r){case"indices":for(var o=0;o=0&&e>0&&e>=t){var r=e-t+1;return Math.floor(Math.random()*r+t)}return 0},e.randomArray=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return t.sort((function(){return Math.random()-.5}))},e.range=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return Math.max(t,Math.min(e,Number(r)))},e.setConfig=function(t){var e=t.props,r=void 0===e?{}:e,i=t.config,n=void 0===i?{}:i,o=t.color,a=void 0===o?{}:o,s=t.zIndex,c=void 0===s?{}:s,l=uni.$uv.deepMerge;uni.$uv.config=l(uni.$uv.config,n),uni.$uv.props=l(uni.$uv.props,r),uni.$uv.color=l(uni.$uv.color,a),uni.$uv.zIndex=l(uni.$uv.zIndex,c)},e.setProperty=function(t,e,r){if(!t)return;if("string"!=typeof e||""===e);else if(-1!==e.indexOf(".")){var i=e.split(".");!function t(e,r,i){if(1!==r.length)for(;r.length>1;){var n=r[0];e[n]&&"object"===(0,o.default)(e[n])||(e[n]={});r.shift();t(e[n],r,i)}else e[r[0]]=i}(t,i,r)}else t[e]=r},e.sleep=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:30;return new Promise((function(e){setTimeout((function(){e()}),t)}))},e.sys=function(){return uni.getSystemInfoSync()},e.timeFormat=u,e.timeFrom=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"yyyy-mm-dd";null==t&&(t=Number(new Date));10==(t=parseInt(t)).toString().length&&(t*=1e3);var r=(new Date).getTime()-t;r=parseInt(r/1e3);var i="";switch(!0){case r<300:i="\u521a\u521a";break;case r>=300&&r<3600:i="".concat(parseInt(r/60),"\u5206\u949f\u524d");break;case r>=3600&&r<86400:i="".concat(parseInt(r/3600),"\u5c0f\u65f6\u524d");break;case r>=86400&&r<2592e3:i="".concat(parseInt(r/86400),"\u5929\u524d");break;default:i=!1===e?r>=2592e3&&r<31536e3?"".concat(parseInt(r/2592e3),"\u4e2a\u6708\u524d"):"".concat(parseInt(r/31536e3),"\u5e74\u524d"):u(t,e)}return i},e.toast=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2e3;uni.showToast({title:String(t),icon:"none",duration:e})},e.trim=p,e.type2icon=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"success",e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];-1==["primary","info","error","warning","success"].indexOf(t)&&(t="success");var r="";switch(t){case"primary":case"info":r="info-circle";break;case"error":r="close-circle";break;case"warning":r="error-circle";break;case"success":r="checkmark-circle";break;default:r="checkmark-circle"}e&&(r+="-fill");return r};var n=i(r(96)),o=i(r(5)),a=r(99),s=r(103);function c(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this.$parent;e;){if(!e.$options||e.$options.name===t)return e;e=e.$parent}return!1}function l(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakMap;if(null===t||"object"!==(0,o.default)(t))return t;if(r.has(t))return r.get(t);if(t instanceof Date)e=new Date(t.getTime());else if(t instanceof RegExp)e=new RegExp(t);else if(t instanceof Map)e=new Map(Array.from(t,(function(t){var e=(0,n.default)(t,2);return[e[0],l(e[1],r)]})));else if(t instanceof Set)e=new Set(Array.from(t,(function(t){return l(t,r)})));else if(Array.isArray(t))e=t.map((function(t){return l(t,r)}));else if("[object Object]"===Object.prototype.toString.call(t)){e=Object.create(Object.getPrototypeOf(t)),r.set(t,e);for(var i=0,a=Object.entries(t);i0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"yyyy-mm-dd",i={y:(t=e?/^\d{10}$/.test(null==e?void 0:e.toString().trim())?new Date(1e3*e):"string"==typeof e&&/^\d+$/.test(e.trim())?new Date(Number(e)):"string"==typeof e&&e.includes("-")&&!e.includes("T")?new Date(e.replace(/-/g,"/")):new Date(e):new Date).getFullYear().toString(),m:(t.getMonth()+1).toString().padStart(2,"0"),d:t.getDate().toString().padStart(2,"0"),h:t.getHours().toString().padStart(2,"0"),M:t.getMinutes().toString().padStart(2,"0"),s:t.getSeconds().toString().padStart(2,"0")};for(var o in i){var a=new RegExp("".concat(o,"+")).exec(r)||[],s=(0,n.default)(a,1),c=s[0];if(c){var l="y"===o&&2===c.length?2:0;r=r.replace(c,i[o].slice(l))}}return r}function p(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"both";return t=String(t),"both"==e?t.replace(/^\s+|\s+$/g,""):"left"==e?t.replace(/^\s*/,""):"right"==e?t.replace(/(\s*$)/g,""):"all"==e?t.replace(/\s+/g,""):t}String.prototype.padStart||(String.prototype.padStart=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" ";if("[object String]"!==Object.prototype.toString.call(e))throw new TypeError("fillString must be String");var r=this;if(r.length>=t)return String(r);for(var i=t-r.length,n=Math.ceil(i/e.length);n>>=1;)e+=e,1===n&&(e+=e);return e.slice(0,i)+r})},function(t,e,r){var i=r(97),n=r(102),o=r(26),a=r(98);t.exports=function(t,e){return i(t)||n(t,e)||o(t,e)||a()},t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e){t.exports=function(t){if(Array.isArray(t))return t},t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e){t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,r){"use strict";var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.amount=function(t){return/^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(t)},e.array=function(t){if("function"==typeof Array.isArray)return Array.isArray(t);return"[object Array]"===Object.prototype.toString.call(t)},e.carNo=function(t){if(7===t.length)return/^[\u4eac\u6d25\u6caa\u6e1d\u5180\u8c6b\u4e91\u8fbd\u9ed1\u6e58\u7696\u9c81\u65b0\u82cf\u6d59\u8d63\u9102\u6842\u7518\u664b\u8499\u9655\u5409\u95fd\u8d35\u7ca4\u9752\u85cf\u5ddd\u5b81\u743c\u4f7f\u9886A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9\u6302\u5b66\u8b66\u6e2f\u6fb3]{1}$/.test(t);if(8===t.length)return/^[\u4eac\u6d25\u6caa\u6e1d\u5180\u8c6b\u4e91\u8fbd\u9ed1\u6e58\u7696\u9c81\u65b0\u82cf\u6d59\u8d63\u9102\u6842\u7518\u664b\u8499\u9655\u5409\u95fd\u8d35\u7ca4\u9752\u85cf\u5ddd\u5b81\u743c\u4f7f\u9886A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/.test(t);return!1},e.chinese=function(t){return/^[\u4e00-\u9fa5]+$/gi.test(t)},e.code=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6;return new RegExp("^\\d{".concat(e,"}$")).test(t)},e.contains=function(t,e){return t.indexOf(e)>=0},e.date=function(t){if(!t)return!1;o(t)&&(t=+t);return!/Invalid|NaN/.test(new Date(t).toString())},e.dateISO=function(t){return/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(t)},e.digits=function(t){return/^\d+$/.test(t)},e.email=function(t){return/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(t)},e.empty=function(t){switch((0,n.default)(t)){case"undefined":return!0;case"string":if(0==t.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,"").length)return!0;break;case"boolean":if(!t)return!0;break;case"number":if(0===t||isNaN(t))return!0;break;case"object":if(null===t||0===t.length)return!0;for(var e in t)return!1;return!0}return!1},e.enOrNum=function(t){return/^[0-9a-zA-Z]*$/g.test(t)},e.func=s,e.idCard=function(t){return/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(t)},e.image=function(t){var e=t.split("?")[0];return/\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i.test(e)},e.jsonString=function(t){if("string"==typeof t)try{var e=JSON.parse(t);return!("object"!==(0,n.default)(e)||!e)}catch(t){return!1}return!1},e.landline=function(t){return/^\d{3,4}-\d{7,8}(-\d{3,4})?$/.test(t)},e.letter=function(t){return/^[a-zA-Z]*$/.test(t)},e.mobile=function(t){return/^1([3589]\d|4[5-9]|6[1-2,4-7]|7[0-8])\d{8}$/.test(t)},e.number=o,e.object=a,e.promise=function(t){return a(t)&&s(t.then)&&s(t.catch)},e.range=function(t,e){return t>=e[0]&&t<=e[1]},e.rangeLength=function(t,e){return t.length>=e[0]&&t.length<=e[1]},e.regExp=function(t){return t&&"[object RegExp]"===Object.prototype.toString.call(t)},e.string=function(t){return"string"==typeof t},e.url=function(t){return/^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/.test(t)},e.video=function(t){return/\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i.test(t)};var n=i(r(5));function o(t){return/^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(t)}function a(t){return"[object Object]"===Object.prototype.toString.call(t)}function s(t){return"function"==typeof t}},function(t,e,r){"use strict";r.r(e);var i=r(34),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";r.r(e);var i=r(87),n=r(73);for(var o in n)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(o);var a=r(0);var s=Object(a.a)(n.default,i.b,i.c,!1,null,null,"6796f3a3",!1,i.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(121).default,this.options.style):Object.assign(this.options.style,r(121).default)}).call(s),e.default=s.exports},function(t,e){t.exports=function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var i,n,o,a,s=[],c=!0,l=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(i=o.call(r)).done)&&(s.push(i.value),s.length!==e);c=!0);}catch(t){l=!0,n=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw n}}return s}},t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,r){"use strict";(function(t){var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0,e.divide=h,e.enableBoundaryChecking=m,e.minus=f,e.plus=d,e.round=g,e.times=p;var n=i(r(104)),o=!0;function a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15;return+parseFloat(Number(t).toPrecision(e))}function s(t){var e=t.toString().split(/[eE]/),r=(e[0].split(".")[1]||"").length-+(e[1]||0);return r>0?r:0}function c(t){if(-1===t.toString().indexOf("e"))return Number(t.toString().replace(".",""));var e=s(t);return e>0?a(Number(t)*Math.pow(10,e)):Number(t)}function l(e){o&&(e>Number.MAX_SAFE_INTEGER||e2)return u(e,p);var i=e[0],n=e[1],o=c(i),a=c(n),d=s(i)+s(n),f=o*a;return l(f),f/Math.pow(10,d)}function d(){for(var t=arguments.length,e=new Array(t),r=0;r2)return u(e,d);var i=e[0],n=e[1],o=Math.pow(10,Math.max(s(i),s(n)));return(p(i,o)+p(n,o))/o}function f(){for(var t=arguments.length,e=new Array(t),r=0;r2)return u(e,f);var i=e[0],n=e[1],o=Math.pow(10,Math.max(s(i),s(n)));return(p(i,o)-p(n,o))/o}function h(){for(var t=arguments.length,e=new Array(t),r=0;r2)return u(e,h);var i=e[0],n=e[1],o=c(i),d=c(n);return l(o),l(d),p(o/d,a(Math.pow(10,s(n)-s(i))))}function g(t,e){var r=Math.pow(10,e),i=h(Math.round(Math.abs(p(t,r))),r);return t<0&&0!==i&&(i=p(i,-1)),i}function m(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];o=t}var v={times:p,plus:d,minus:f,divide:h,round:g,enableBoundaryChecking:m};e.default=v}).call(this,r(2).default)},function(t,e,r){var i=r(97),n=r(39),o=r(26),a=r(98);t.exports=function(t){return i(t)||n(t)||o(t)||a()},t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,r){"use strict";var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(r(3)),o=i(r(4)),a=i(r(37)),s=i(r(38)),c=r(95),l=(new(function(){function t(){(0,a.default)(this,t),this.config={type:"navigateTo",url:"",delta:1,params:{},animationType:"pop-in",animationDuration:300,intercept:!1,events:{}},this.route=this.route.bind(this)}var e;return(0,s.default)(t,[{key:"addRootPath",value:function(t){return"/"===t[0]?t:"/".concat(t)}},{key:"mixinParam",value:function(t,e){t=t&&this.addRootPath(t);var r="";return/.*\/.*\?.*=.*/.test(t)?(r=(0,c.queryParams)(e,!1),t+"&".concat(r)):t+(r=(0,c.queryParams)(e))}},{key:"route",value:(e=(0,o.default)(n.default.mark((function t(){var e,r,i,o=arguments;return n.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=o.length>0&&void 0!==o[0]?o[0]:{},r=o.length>1&&void 0!==o[1]?o[1]:{},i={},"string"==typeof e?(i.url=this.mixinParam(e,r),i.type="navigateTo"):(i=(0,c.deepMerge)(this.config,e)).url=this.mixinParam(e.url,e.params),i.url!==(0,c.page)()){t.next=6;break}return t.abrupt("return");case 6:if(r.intercept&&(i.intercept=r.intercept),i.params=r,"function"!=typeof(i=(0,c.deepMerge)(this.config,i)).intercept){t.next=16;break}return t.next=12,new Promise((function(t,e){i.intercept(i,t)}));case 12:t.sent&&this.openPage(i),t.next=17;break;case 16:this.openPage(i);case 17:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"openPage",value:function(t){var e=t.url,r=(t.type,t.delta),i=t.animationType,n=t.animationDuration,o=t.events;"navigateTo"!=t.type&&"to"!=t.type||uni.navigateTo({url:e,animationType:i,animationDuration:n,events:o}),"redirectTo"!=t.type&&"redirect"!=t.type||uni.redirectTo({url:e}),"switchTab"!=t.type&&"tab"!=t.type||uni.switchTab({url:e}),"reLaunch"!=t.type&&"launch"!=t.type||uni.reLaunch({url:e}),"navigateBack"!=t.type&&"back"!=t.type||uni.navigateBack({delta:r})}}]),t}())).route;e.default=l},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i=null;var n=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(null!==i&&clearTimeout(i),r){var n=!i;i=setTimeout((function(){i=null}),e),n&&"function"==typeof t&&t()}else i=setTimeout((function(){"function"==typeof t&&t()}),e)};e.default=n},function(t,e,r){"use strict";var i;Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];r?i||(i=!0,"function"==typeof t&&t(),setTimeout((function(){i=!1}),e)):i||(i=!0,setTimeout((function(){i=!1,"function"==typeof t&&t()}),e))};e.default=n},function(t,e,r){"use strict";r.r(e);var i=r(48),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";r.r(e);var i=r(49),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";r.r(e);var i=r(52),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";r.r(e);var i=r(55),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";r.r(e);var i=r(91),n=r(56);for(var o in n)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(o);var a=r(0),s=Object(a.a)(n.default,i.b,i.c,!1,null,null,"0b1e4bcc",!1,i.a,void 0);e.default=s.exports},function(t,e,r){"use strict";r.r(e);var i=r(60),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";r.r(e);var i=r(63),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";r.r(e);var i=r(66),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";r.r(e);var i=r(69),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";r.r(e);var i=r(72),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";r.r(e);var i=r(35),n=r(32);for(var o in n)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(o);var a=r(0);var s=Object(a.a)(n.default,i.b,i.c,!1,null,null,"450d9fcc",!1,i.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(100).default,this.options.style):Object.assign(this.options.style,r(100).default)}).call(s),e.default=s.exports},function(t,e,r){"use strict";r.r(e);var i=r(36),n=r(30);for(var o in n)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(o);var a=r(0);var s=Object(a.a)(n.default,i.b,i.c,!1,null,null,"713b6382",!1,i.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style)}).call(s),e.default=s.exports},function(t,e,r){"use strict";(function(t){var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.createAnimation=function(t,e){if(!e)return;return clearTimeout(e.timer),new u(t,e)};var n=i(r(6)),o=i(r(37)),a=i(r(38));function s(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function c(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.$.$refs.ani.ref;if(r)return new Promise((function(i,n){l.transition(r,c({styles:t},e),(function(t){i()}))}))}},{key:"_nvueNextAnimate",value:function(t){var e=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2?arguments[2]:void 0,n=t[r];if(n){var o=n.styles,a=n.config;this._animateRun(o,a).then((function(){r+=1,e._nvueNextAnimate(t,r,i)}))}else this.currentStepAnimates={},"function"==typeof i&&i(),this.isEnd=!0}},{key:"step",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.currentStepAnimates[this.next].config=Object.assign({},this.options,t),this.currentStepAnimates[this.next].styles.transformOrigin=this.currentStepAnimates[this.next].config.transformOrigin,this.next++,this}},{key:"run",value:function(t){this.isEnd=!1,this.$.$refs.ani&&this.$.$refs.ani.ref&&(this._nvueNextAnimate(this.currentStepAnimates,0,t),this.next=0)}}]),t}(),p=["matrix","matrix3d","rotate","rotate3d","rotateX","rotateY","rotateZ","scale","scale3d","scaleX","scaleY","scaleZ","skew","skewX","skewY","translate","translate3d","translateX","translateY","translateZ"];p.concat(["opacity","backgroundColor"],["width","height","left","right","top","bottom"]).forEach((function(t){u.prototype[t]=function(){for(var e=arguments.length,r=new Array(e),i=0;i0;var t=Object.keys(this.$store.state.reservationAddress).length>0,e=Object.keys(this.$store.state.reservationSyr).length>0,r=Object.keys(this.$store.state.reservationTime).length>0;return t&&e&&r}},beforeCreate:function(){var e=t("dom");e.addRule("fontFace",{fontFamily:"DINPro",src:"url('static/Font/DIN-Bold.otf')",fontStyle:"normal",fontWeight:"700"}),e.addRule("fontFace",{fontFamily:"DINPro",src:"url('static/Font/DIN-Regular.otf')",fontStyle:"normal",fontWeight:"400"}),e.addRule("fontFace",{fontFamily:"DINPro",src:"url('static/Font/DINPro-Medium.otf')",fontStyle:"normal",fontWeight:"500"}),i("log","\u5b57\u4f53\u89c4\u5219\u6dfb\u52a0\u5b8c\u6210"," at pages/selfOperated/detail.nvue:381")},onLoad:function(t){var e=this;this.$store.commit("clearServiceState");var r=uni.getStorageSync("userAdrees")||getApp().globalData.addressRes;this.latitude=r.latitude,this.longitude=r.longitude,c.default.post("/user/serversSelf/details",{id:Number(t.id),province:r.pcode,city:r.cCode}).then((function(t){i("log",t," at pages/selfOperated/detail.nvue:396"),1==t.data.server_kind?e.getSyrDetail(t.data.publish_user_id):2==t.data.server_kind&&e.getSjDetail(t.data.publish_user_id),"android"===uni.getSystemInfoSync().platform?e.$nextTick((function(){e.serviceInfo=t.data})):e.serviceInfo=t.data}))},mounted:function(){this.videoContext=uni.createVideoContext("myVideo",this)},onShow:function(){this.showVideo=!0,this.$refs.selfPayRef&&this.$refs.selfPayRef.clearSubmit()},onHide:function(){this.showVideo=!1},methods:{radioChange:function(t){},goInvite:function(){var t=this;return(0,a.default)(o.default.mark((function e(){var r,n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r="https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40",!t.serviceInfo.photo[0]){e.next=13;break}return e.prev=2,e.next=5,(0,s.handleImgSize)(t.serviceInfo.photo[0]);case 5:n=e.sent,i("log","\u5904\u7406\u540e\u7684\u56fe\u7247\u5730\u5740\uff1a",n," at pages/selfOperated/detail.nvue:457"),r=n,e.next=13;break;case 10:e.prev=10,e.t0=e.catch(2),i("error","\u5904\u7406\u5931\u8d25\uff1a",e.t0," at pages/selfOperated/detail.nvue:461");case 13:uni.share({provider:"weixin",scene:"WXSceneSession",type:5,title:"".concat(t.serviceInfo.title," ").concat(t.serviceInfo.server_price,"\u5143(\u4ee5\u8be6\u60c5\u4e3a\u4e3b)"),miniProgram:{id:"gh_89c92e18b70b",path:"/subPackages/service/detail?id=".concat(t.serviceInfo.id),type:t.$store.state.wxShareType,webUrl:"https://www.baidu.com/"},imageUrl:r,success:function(t){i("log","success:"+JSON.stringify(t)," at pages/selfOperated/detail.nvue:480")},fail:function(t){uni.share({provider:"weixin",scene:"WXSceneSession",type:5,title:"".concat(this.serviceInfo.title," ").concat(this.serviceInfo.server_price,"\u5143(\u4ee5\u8be6\u60c5\u4e3a\u4e3b)"),miniProgram:{id:"gh_89c92e18b70b",path:"/subPackages/service/detail?id=".concat(this.serviceInfo.id),type:this.$store.state.wxShareType,webUrl:"https://www.baidu.com/"},imageUrl:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/yh/1756713709528-717.png?x-oss-process=image/resize,p_40",success:function(t){i("log","success:"+JSON.stringify(t)," at pages/selfOperated/detail.nvue:497")},fail:function(t){i("log","fail:"+JSON.stringify(t)," at pages/selfOperated/detail.nvue:500")}})}});case 14:case"end":return e.stop()}}),e,null,[[2,10]])})))()},goAddressList:function(){uni.navigateTo({url:"/subPackages/address/list?select=true"})},getSyrDetail:function(t){var e=this;c.default.post("/user/syrdetail",{id:t}).then((function(t){e.syrInfo=t.data})).catch((function(t){i("log",t," at pages/selfOperated/detail.nvue:518")}))},getSjDetail:function(t){var e=this;c.default.post("/user/sjdetail",{id:t}).then((function(t){e.sjInfo=t.data})).catch((function(t){i("log",t," at pages/selfOperated/detail.nvue:528")}))},goList:function(){uni.navigateTo({url:"/pages/evaluate/evaluationList?order_shop_id=".concat(this.serviceInfo.id,"&order_shop_type=1")})},goShopHome:function(t){uni.navigateTo({url:"/pages/user/store-detail?id="+t})},goSyrHome:function(t){uni.navigateTo({url:"/pages/user/syr-detail?id="+t})},toggleMute:function(){this.isMuted=!this.isMuted},previewImage:function(t,e){uni.previewImage({urls:t,current:e})},submitOrder:function(){if(i("log","\u70b9\u51fb\u4e86",this.syrInfo,this.sjInfo," at pages/selfOperated/detail.nvue:560"),this.isLogin=!!uni.getStorageSync("accessToken"),this.isLogin){if(2!=this.syrInfo.order_taking&&2!=this.sjInfo.order_taking)if(this.serviceType){if(2==this.serviceType){if(0==Object.keys(this.$store.state.selectStore).length)return void uni.showToast({title:"\u8bf7\u9009\u62e9\u5546\u5bb6",icon:"none"})}else{if(0==Object.keys(this.$store.state.reservationAddress).length)return void uni.showToast({title:"\u8bf7\u9009\u62e9\u5230\u5bb6\u5730\u5740",icon:"none"});if(0==Object.keys(this.$store.state.reservationSyr).length)return void uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u4eba\u5458",icon:"none"});if(0==Object.keys(this.$store.state.reservationTime).length)return void uni.showToast({title:"\u8bf7\u9009\u62e9\u65f6\u95f4",icon:"none"})}this.showPay=!0}else uni.showToast({title:"\u8bf7\u9009\u62e9\u670d\u52a1\u7c7b\u578b",icon:"none"})}else uni.showModal({title:"\u767b\u5f55\u63d0\u9192",content:"\u60a8\u6682\u672a\u767b\u5f55\uff0c\u65e0\u6cd5\u9884\u7ea6\u670d\u52a1\uff0c\u662f\u5426\u524d\u53bb\u767b\u5f55\uff1f",confirmColor:"#F1AC66",success:function(t){t.confirm&&uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}})},showPermissionDialog:function(t,e){return new Promise((function(r){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){r(t.confirm)}})}))},goContact:function(t){var e=this;return(0,a.default)(o.default.mark((function r(){var n;return o.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(uni.getSystemInfoSync(),"undefined"==typeof plus){r.next=33;break}return r.prev=2,"android.permission.CALL_PHONE",e.isShowPer=!0,!plus.storage.getItem("perm_".concat("android.permission.CALL_PHONE"))&&(e.isShowPer=!0),r.next=9,d.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 9:if(n=r.sent,!n.granted){r.next=15;break}return e.isShowPer=!1,uni.makePhoneCall({phoneNumber:t}),r.abrupt("return");case 15:return e.isShowPer=!1,r.next=18,e.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 18:if(r.sent){r.next=21;break}return r.abrupt("return");case 21:return r.next=23,d.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 23:r.sent?uni.makePhoneCall({phoneNumber:t}):p.default.openAppSettings(),r.next=31;break;case 27:r.prev=27,r.t0=r.catch(2),i("log","\u6743\u9650\u5904\u7406\u5931\u8d25:",r.t0," at pages/selfOperated/detail.nvue:686"),uni.makePhoneCall({phoneNumber:t});case 31:r.next=34;break;case 33:uni.makePhoneCall({phoneNumber:t});case 34:case"end":return r.stop()}}),r,null,[[2,27]])})))()},openMap:function(){this.serviceInfo.latitude&&this.serviceInfo.longitude?"undefined"!=typeof plus?u.default.goMap({latitude:parseFloat(this.serviceInfo.latitude),longitude:parseFloat(this.serviceInfo.longitude),name:this.serviceInfo.shop_name,address:this.serviceInfo.shop_address}):uni.showToast({title:"\u5730\u56fe\u529f\u80fd\u6682\u4e0d\u53ef\u7528",icon:"none"}):uni.showToast({title:"\u5730\u5740\u4fe1\u606f\u4e0d\u5b8c\u6574",icon:"none"})}}};e.default=y}).call(this,r(40).default,r(2).default)},function(t,e,r){"use strict";r.r(e);var i=r(152),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(r(295)),o=[],a=weex.requireModule("dom"),s={name:"uv-parse",data:function(){return{nodes:[],height:3}},props:{containerStyle:{type:String,default:""},content:{type:String,default:""},copyLink:{type:[Boolean,String],default:!0},domain:String,errorImg:{type:String,default:""},lazyLoad:{type:[Boolean,String],default:!1},loadingImg:{type:String,default:""},pauseVideo:{type:[Boolean,String],default:!0},previewImg:{type:[Boolean,String],default:!0},scrollTable:[Boolean,String],selectable:[Boolean,String],setTitle:{type:[Boolean,String],default:!0},showImgMenu:{type:[Boolean,String],default:!0},tagStyle:Object,useAnchor:[Boolean,Number]},watch:{content:function(t){this.setContent(t)}},created:function(){this.plugins=[];for(var t=o.length;t--;)this.plugins.push(new o[t](this))},mounted:function(){this.content&&!this.nodes.length&&this.setContent(this.content)},beforeDestroy:function(){this._hook("onDetached")},methods:{in:function(t,e,r){},navigateTo:function(t,e){var r=this;return new Promise((function(i,n){r.useAnchor?(e=e||parseInt(r.useAnchor)||0,t?(r._navigateTo={resolve:i,reject:n,offset:e},r.$refs.web.evalJs('uni.postMessage({data:{action:"getOffset",offset:(document.getElementById('+t+")||{}).offsetTop}})")):(a.scrollToElement(r.$refs.web,{offset:e}),i())):n(Error("Anchor is disabled"))}))},getText:function(t){var e="";return function t(r){for(var i=0;i"0"&&n.name[1]<"7";o&&e&&"\n"!==e[e.length-1]&&(e+="\n"),n.children&&t(n.children),o&&"\n"!==e[e.length-1]?e+="\n":"td"!==n.name&&"th"!==n.name||(e+="\t")}}}(t||this.nodes),e},getRect:function(){var t=this;return new Promise((function(e,r){uni.createSelectorQuery().in(t).select("#_root").boundingClientRect().exec((function(t){return t[0]?e(t[0]):r(Error("Root label not found"))}))}))},pauseMedia:function(){for(var t=(this._videos||[]).length;t--;)this._videos[t].pause();this.$refs.web.evalJs('for(var e=document.getElementsByTagName("video"),i=e.length;i--;)e[i].pause()')},setPlaybackRate:function(t){this.playbackRate=t;for(var e=(this._videos||[]).length;e--;)this._videos[e].playbackRate(t);var r='for(var e=document.getElementsByTagName("video"),i=e.length;i--;)e[i].playbackRate='+t;this.$refs.web.evalJs(r)},setContent:function(t,e){e&&this.imgList||(this.imgList=[]);var r=new n.default(this).parse(t);this._ready&&this._set(r,e),this.$set(this,"nodes",e?(this.nodes||[]).concat(r):r)},_hook:function(t){for(var e=o.length;e--;)this.plugins[e][t]&&this.plugins[e][t]()},_set:function(t,e){this.$refs.web.evalJs("setContent("+JSON.stringify(t).replace(/%22/g,"")+","+JSON.stringify([this.containerStyle.replace(/(?:margin|padding)[^;]+/g,""),this.errorImg,this.loadingImg,this.pauseVideo,this.scrollTable,this.selectable])+","+e+")")},_onMessage:function(t){var e=this,r=t.detail.data[0];switch(r.action){case"onJSBridgeReady":this._ready=!0,this.nodes&&this._set(this.nodes);break;case"onLoad":this.height=r.height,this._hook("onLoad"),this.$emit("load");break;case"onReady":this.getRect().then((function(t){e.$emit("ready",t)})).catch((function(){e.$emit("ready",{})}));break;case"onHeightChange":this.height=r.height;break;case"onImgTap":this.$emit("imgtap",r.attrs),this.previewImg&&uni.previewImage({current:parseInt(r.attrs.i),urls:this.imgList});break;case"onLinkTap":var i=r.attrs.href;this.$emit("linktap",r.attrs),i&&("#"===i[0]?this.useAnchor&&a.scrollToElement(this.$refs.web,{offset:r.offset}):i.includes("://")?this.copyLink&&plus.runtime.openWeb(i):uni.navigateTo({url:i,fail:function(){uni.switchTab({url:i})}}));break;case"onPlay":this.$emit("play");break;case"getOffset":"number"==typeof r.offset?(a.scrollToElement(this.$refs.web,{offset:r.offset+this._navigateTo.offset}),this._navigateTo.resolve()):this._navigateTo.reject(Error("Label not found"));break;case"onClick":this.$emit("tap"),this.$emit("click");break;case"onError":this.$emit("error",{source:r.source,attrs:r.attrs})}}}};e.default=s},function(t,e){t.exports={"@VERSION":2}},function(t,e,r){"use strict";r.r(e);var i=r(155),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r={props:{info:{type:String,default:"[]"}},data:function(){return{detailList:[]}},mounted:function(){},methods:{parseInfoData:function(){try{var e=JSON.parse(this.info);this.detailList=Array.isArray(e)?e:[]}catch(e){t("error","\u89e3\u6790\u56fe\u6587\u8be6\u60c5\u6570\u636e\u5931\u8d25\uff1a",e," at pages/selfOperated/components/imgAndText.vue:61"),this.detailList=[]}},formatRichText:function(e){return t("log",111111,e," at pages/selfOperated/components/imgAndText.vue:67"),"string"==typeof e?[{name:"div",attrs:{style:"font-size:26rpx;color:#3D3D3D;line-height:40rpx;margin:10rpx 0;"},children:[{type:"text",text:e}]}]:JSON.parse(JSON.stringify(e)).map((function(t){return t.attrs&&!t.attrs.style&&(t.attrs.style="font-size:26rpx;color:#3D3D3D;line-height:40rpx;"),t}))}}};e.default=r}).call(this,r(2).default)},function(t,e){t.exports={".container":{"":{backgroundColor:["#ffffff",0,0,2],overflow:["hidden",0,0,2],marginTop:["20rpx",0,0,2],marginRight:["24rpx",0,0,2],marginBottom:["20rpx",0,0,2],marginLeft:["24rpx",0,0,2],paddingTop:["20rpx",0,0,2],paddingRight:["20rpx",0,0,2],paddingBottom:["20rpx",0,0,2],paddingLeft:["20rpx",0,0,2],borderRadius:["16rpx",0,0,2]}},".uv-divider":{"":{marginTop:[0,1,0,4],marginRight:[0,1,0,4],marginBottom:["20rpx",1,0,4],marginLeft:[0,1,0,4]}},".detail-item":{"":{marginBottom:["20rpx",0,0,6],width:["658rpx",0,0,6],"marginBottom:last-child":[0,0,0,7]}},".detail-img":{"":{width:["658rpx",0,0,9],borderRadius:["16rpx",0,0,9],marginTop:["10rpx",0,0,9],marginRight:[0,0,0,9],marginBottom:["10rpx",0,0,9],marginLeft:[0,0,0,9]}},".detail-text-container":{"":{marginTop:["10rpx",0,0,11],marginRight:[0,0,0,11],marginBottom:["10rpx",0,0,11],marginLeft:[0,0,0,11]}},".detail-text":{"":{fontWeight:["400",0,0,13],fontSize:["26rpx",0,0,13],color:["#3D3D3D",0,0,13],lineHeight:["40rpx",0,0,13],textAlign:["left",0,0,13]}},".detail-rich-text":{"":{marginTop:["10rpx",0,0,15],marginRight:[0,0,0,15],marginBottom:["10rpx",0,0,15],marginLeft:[0,0,0,15]}},"@VERSION":2}},function(t,e,r){"use strict";r.r(e);var i=r(158),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i={name:"AgreeRadio",props:{value:{type:[Number,String]},disabled:{type:Boolean,default:!1}},data:function(){return{yesImg:"/static/images/agree_y.png",noImg:"/static/images/agree_n.png",radioList:[{name:"\u5230\u5e97\u670d\u52a1",value:2},{name:"\u5230\u5bb6\u670d\u52a1",value:1}]}},methods:{changeAgree:function(t){this.disabled||(this.$emit("input",t),this.$emit("change",t))}}};e.default=i},function(t,e){t.exports={".ruzhuRadio":{"":{display:["flex",0,0,0],flexWrap:["nowrap",0,0,0],alignItems:["center",0,0,0],justifyContent:["space-between",0,0,0],flexDirection:["row",0,0,0],marginTop:["0rpx",0,0,0],marginRight:["24rpx",0,0,0],marginBottom:["20rpx",0,0,0],marginLeft:["24rpx",0,0,0],paddingTop:["30rpx",0,0,0],paddingRight:["50rpx",0,0,0],paddingBottom:["30rpx",0,0,0],paddingLeft:["50rpx",0,0,0],backgroundColor:["#FFFFFF",0,0,0],borderRadius:["20rpx",0,0,0]}},".radio-item":{".ruzhuRadio ":{display:["flex",0,1,1],flexWrap:["nowrap",0,1,1],alignItems:["center",0,1,1],flexDirection:["row",0,1,1]}},".radio-item-round":{".ruzhuRadio .radio-item ":{width:["34rpx",0,2,2],height:["34rpx",0,2,2],marginRight:["10rpx",0,2,2]}},".radio-item-name":{".ruzhuRadio .radio-item ":{fontWeight:["400",0,2,3],fontSize:["30rpx",0,2,3],color:["#333333",0,2,3],lineHeight:["42rpx",0,2,3],textAlign:["left",0,2,3],fontStyle:["normal",0,2,3]}},"@VERSION":2}},function(t,e,r){"use strict";r.r(e);var i=r(161),n=r.n(i);for(var o in i)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return i[t]}))}(o);e.default=n.a},function(t,e,r){"use strict";(function(t){var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(r(3)),o=i(r(4)),a=i(r(12)),s=i(r(41)),c=i(r(28)),l=i(r(29)),u={props:{id:{type:[Number,String],default:""},src:{type:String,default:"/user/serversSelf/sjList"}},data:function(){return{firstLoad:!1,clickItem:null,sjList:[],queryData:{id:"",userLngz:"117.333333",userLat:"38.366667",page:1,limit:5},loading:!1,noMore:!1,totalCount:0}},computed:{reservationAddress:function(){return this.$store.state.reservationAddress},reservationSyr:function(){return this.$store.state.reservationSyr},reservationTime:function(){return this.$store.state.reservationTime},userAdrees:function(){return uni.getStorageSync("userAdrees").addressRes||getApp().globalData.addressRes}},watch:{id:function(t){t&&(this.resetPagination(),this.getSjList(t))}},created:function(){this.getLocation(),this.queryData.city=this.userAdrees.cCode,this.id&&this.getSjList(this.id)},methods:{clickSj:function(t){this.clickItem=t,this.$store.commit("setSelectStore",t),this.$emit("select-store",t),this.close()},getLocation:function(){var t=uni.getStorageSync("userAdrees");if(t){var e=t.addressRes;this.queryData.userLat=e.latitude,this.queryData.userLngz=e.longitude}},resetPagination:function(){this.queryData.page=1,this.sjList=[],this.loading=!1,this.noMore=!1,this.totalCount=0},getSjList:function(e){var r=this;e&&(this.queryData.id=e),this.loading||this.noMore||(this.loading=!0,a.default.post(this.src,this.queryData).then((function(t){if(200==t.code){var e=t.data,i=e.list,n=void 0===i?[]:i,o=e.count,a=void 0===o?0:o;r.totalCount=a,1===r.queryData.page?r.sjList=n:r.sjList=r.sjList.concat(n),r.noMore=r.sjList.length>=r.totalCount,0===r.totalCount&&(r.noMore=!0)}else uni.showToast({title:t.msg||"\u83b7\u53d6\u95e8\u5e97\u5931\u8d25",icon:"none"}),r.queryData.page>1&&r.queryData.page--})).catch((function(e){t("log","\u83b7\u53d6\u95e8\u5e97\u5217\u8868\u5931\u8d25\uff1a",e," at pages/selfOperated/components/select-store.vue:239"),r.queryData.page>1&&r.queryData.page--,uni.showToast({title:"\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5",icon:"none"})})).finally((function(){r.firstLoad=!0,r.loading=!1})))},loadMore:function(){if(!this.loading&&!this.noMore&&0!==this.totalCount){var t=Math.ceil(this.totalCount/this.queryData.limit);this.queryData.page0?r("view",{staticClass:["load-more-tip"]},[t.loading?r("u-text",{staticClass:["load-more-tip-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u52a0\u8f7d\u4e2d...")]):t.noMore?r("u-text",{staticClass:["load-more-tip-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u6ca1\u6709\u66f4\u591a\u95e8\u5e97\u4e86")]):t._e()]):t._e()],2)],1)])],1)},o=[]},function(t,e,r){"use strict";r.d(e,"b",(function(){return n})),r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i}));var i={selectTimePage:r(101).default},n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("view",[t.citySyrCount?r("view",{staticClass:["select-address"]},[r("u-text",{staticClass:["select-address-title"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u9884\u7ea6\u4fe1\u606f")]),r("view",{staticClass:["select-address-card","flex-row-center-between","border-bottom"]},[r("u-text",{staticClass:["select-address-card-title"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u5230\u5bb6\u5730\u5740")]),r("view",{staticClass:["select-address-card-right","flex-row-center"],on:{click:t.goToAddress}},[t.reservationAddress.id?r("view",[r("u-text",{staticClass:["card-right-text2"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.reservationAddress.server_address))]),r("u-text",{staticClass:["card-right-text1"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.reservationAddress.name+" "+t.reservationAddress.call_phone))])]):r("u-text",{staticClass:["card-right-text1"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u8bf7\u9009\u62e9")]),r("u-image",{staticClass:["card-right-img"],attrs:{src:"/static/images/wallet/right.png"}})],1)]),r("view",{staticClass:["select-address-card","flex-row-center-between"]},[r("u-text",{staticClass:["select-address-card-title"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u670d\u52a1\u4eba\u5458")]),r("view",{staticClass:["select-address-card-right","flex-row-center"],on:{click:t.goSelectSyr}},[r("view",{staticClass:["flex-row-center"],staticStyle:{width:"425rpx",justifyContent:"flex-end"}},[t.reservationSyr.head_photo?r("u-image",{staticClass:["card-right-photo"],attrs:{src:t.reservationSyr.head_photo}}):t._e(),t.reservationSyr.id?r("u-text",{staticClass:["card-right-text2"],staticStyle:{width:"auto"},appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.reservationSyr.name))]):r("u-text",{staticClass:["card-right-text1"],staticStyle:{width:"auto"},appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u8bf7\u9009\u62e9")])],1),r("u-image",{staticClass:["card-right-img"],attrs:{src:"/static/images/wallet/right.png"}})],1)]),r("view",{staticClass:["select-address-card","flex-row-center-between"]},[r("u-text",{staticClass:["select-address-card-title"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u5230\u5bb6\u65f6\u95f4")]),r("view",{staticClass:["select-address-card-right","flex-row-center"],on:{click:t.openTimePicker}},[t.reservationTime.selectedTime?r("u-text",{staticClass:["card-right-text2"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.reservationTime.selectedTime))]):r("u-text",{staticClass:["card-right-text1"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u8bf7\u9009\u62e9")]),r("u-image",{staticClass:["card-right-img"],attrs:{src:"/static/images/wallet/right.png"}})],1)]),t.reservationAddress.dependency_city!=t.userAdrees.cCode&&0!=Object.keys(this.reservationAddress).length?r("view",{staticClass:["select-address-tip"]},[r("u-image",{staticClass:["select-address-tip-bj"],attrs:{src:"/static/images/background/tipBj.png"}}),r("u-text",{staticClass:["select-address-tip-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u4f60\u5f53\u524d\u5b9a\u4f4d\u662f"+t._s(t.userAdrees.address.city)+"\uff0c\u6240\u9009\u5230\u5bb6\u5730\u5740\u6682\u4e0d\u652f\u6301\u4e0b\u5355\uff0c\u8bf7\u5207\u6362\u5408\u9002\u7684\u5b9a\u4f4d/\u5230\u5bb6\u5730\u5740\u540e\u64cd\u4f5c")])],1):t._e()]):r("u-image",{staticClass:["store-tip"],attrs:{src:"/static/images/background/storeTip3.png"}}),r("select-time-page",{ref:"selecTime",attrs:{timeOptions:t.timeOptions,service:t.serviceInfo,publish_user_id:t.reservationSyr.id,server_type:1},on:{sureTime:t.sureTime,closeTime:t.closeTime}})],1)},o=[]},function(t,e,r){"use strict";r.d(e,"b",(function(){return n})),r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return i}));var i={uvPopup:r(134).default,agreeRadio:r(255).default},n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("view",{staticClass:["self-pay"]},[r("uv-popup",{ref:"popup",attrs:{mode:"bottom"},on:{change:t.change}},[r("view",{staticClass:["salf-card"]},[1==t.serviceType?r("view",{staticClass:["pop-card"]},[r("u-text",{staticClass:["syr-info-address"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.reservationAddress.server_address))]),r("u-text",{staticClass:["syr-info-phone"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.reservationAddress.name+" "+t.reservationAddress.call_phone))])]):t._e(),1==t.serviceType?r("view",{staticClass:["pop-card"]},[r("view",{staticClass:["salf-card-between","mb-20"]},[r("u-text",{staticClass:["salf-card-between-text1"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u5230\u5bb6\u65f6\u95f4")]),r("u-text",{staticClass:["salf-card-between-text2"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.reservationTime.selectedTime))])]),r("view",{staticClass:["salf-card-between"]},[r("u-text",{staticClass:["salf-card-between-text1"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u670d\u52a1\u4eba\u5458")]),r("view",{staticClass:["flex-row-center"],staticStyle:{width:"425rpx",justifyContent:"flex-end"}},[t.reservationSyr.head_photo?r("u-image",{staticClass:["card-right-photo"],attrs:{src:t.reservationSyr.head_photo}}):t._e(),r("u-text",{staticClass:["salf-card-between-text2"],staticStyle:{width:"auto"},appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.reservationSyr.name))])],1)])]):t._e(),r("view",{staticClass:["pop-card"]},[r("view",{staticClass:["serve-info"]},[r("u-image",{staticClass:["serve-info-img"],attrs:{src:t.serviceInfo.photo[0],mode:"aspectFill"}}),r("view",{staticClass:["serve-info-right"]},[r("u-text",{staticClass:["serve-info-right-name"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.serviceInfo.title))]),r("view",{staticClass:["serve-info-right-num","flex-row-center-between"]},[r("u-text",{staticClass:["serve-info-right-num-text1"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u670d\u52a1\u6570\u91cf")]),r("u-text",{staticClass:["serve-info-right-num-text2"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("X1")])])])],1),t.serviceInfo.line_price?r("view",{staticClass:["salf-card-between","mb-20"]},[r("u-text",{staticClass:["salf-card-between-text1"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u539f\u59cb\u4ef7\u683c")]),r("u-text",{staticClass:["salf-card-between-text2"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.serviceInfo.line_price))])]):t._e(),r("view",{staticClass:["salf-card-between"]},[r("u-text",{staticClass:["salf-card-between-text1"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u8ba2\u5355\u5c0f\u8ba1")]),r("view",[r("u-text",{staticClass:["salf-card-between-text2"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.serviceInfo.server_price))])])])]),2==t.serviceType?r("view",{staticClass:["pop-card"]},[r("view",{staticClass:["serve-store"]},[r("u-image",{staticClass:["serve-store-img"],attrs:{src:t.selectStore.head_photo,mode:"aspectFill"}}),r("view",{staticClass:["serve-store-right"]},[r("u-text",{staticClass:["serve-store-right-name"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.selectStore.name))]),r("view",{staticClass:["serve-store-right-num","flex-row-center-between"]},[r("view",{staticClass:["flex-row-center"]},[r("u-text",{staticClass:["serve-store-right-num-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u8425\u4e1a\u65f6\u95f4\uff1a")]),r("u-text",{staticClass:["serve-store-right-num-text"],staticStyle:{color:"#333333"},appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.selectStore.business_time))])])])])],1),r("view",{staticClass:["serve-store-address","flex-row-center"]},[r("view",{staticClass:["serve-store-address-right"]},[r("u-text",{staticClass:["serve-store-address-right-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u5730\u5740"+t._s(t.selectStore.address))]),r("u-text",{staticClass:["serve-store-address-right-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u7535\u8bdd\uff1a"+t._s(t.selectStore.account))])]),r("view",{staticClass:["serve-store-address-left","flex-row-center"]},[r("u-image",{staticClass:["address-left-icon"],attrs:{src:"/static/images/icons/adress.png"},on:{click:function(e){t.openMap(t.selectStore)}}}),r("u-image",{staticClass:["address-left-icon","ml40"],attrs:{src:"/static/images/icons/phone.png"},on:{click:function(e){t.contactService(t.selectStore.account)}}})],1)])]):t._e(),r("view",{staticClass:["pop-card"]},[r("u-text",{staticClass:["pop-card-title"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u9009\u62e9\u652f\u4ed8\u65b9\u5f0f")]),r("view",{staticClass:["method-list"]},t._l(t.methodList,(function(e,i){return r("view",{key:i,staticClass:["method-item","flex-row-center-between"],class:{mb43:i!=t.methodList.length-1},on:{click:function(r){t.selectMethod(e)}}},[r("view",{staticClass:["method-info","flex-row-center"]},[r("u-image",{staticClass:["method-icon"],attrs:{src:e.icon,mode:"aspectFit"}}),r("u-text",{staticClass:["method-name"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(e.name))])],1),r("agree-radio",{attrs:{isAgree:e.selected,yesImg:"/static/images/icons/yes_icon.png",radioSize:"40rpx",noImg:"/static/images/icons/no_icon.png"}})],1)})),0)]),r("view",{staticClass:["pop-submit","flex-row-center-between"]},[r("view",{staticClass:["pop-submit-left"]},[r("u-text",{staticClass:["pop-submit-left-text1"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u5e94\u4ed8\u91d1\u989d")]),r("u-text",{staticClass:["pop-submit-left-text2"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.serviceInfo.server_price))])]),r("view",{staticClass:["pop-submit-btn"]},[r("u-text",{staticClass:["pop-submit-btn-text"],appendAsTree:!0,attrs:{append:"tree"},on:{click:t.submitOrder}},[t._v("\u7acb\u5373\u652f\u4ed8")])])])])])],1)},o=[]},,,,,,,,,function(t,e,r){"use strict";r.d(e,"b",(function(){return i})),r.d(e,"c",(function(){return n})),r.d(e,"a",(function(){}));var i=function(){var t=this.$createElement,e=this._self._c||t;return e("view",{class:(this.selectable?"_select ":"")+"_root",style:this.containerStyle,attrs:{id:"_root"}},[this.nodes[0]?this._e():this._t("default"),e("u-web-view",{ref:"web",style:"margin-top:-2px;height:"+this.height+"px",attrs:{src:"/uni_modules/uv-parse/static/app-plus/uv-parse/local.html"},on:{onPostMessage:this._onMessage}})],2)},n=[]},function(t,e,r){"use strict";(function(t){var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.ServiceManager=void 0,e.handleImgSize=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.01;return new Promise((function(o,a){var s=e.split("?"),c=(0,n.default)(s,2),l=c[0],u=c[1],p=l;uni.downloadFile({url:p,success:function(e){var n=e.tempFilePath;if(!n){var s=new Error("\u4e0b\u8f7d\u5931\u8d25\uff0c\u672a\u83b7\u53d6\u5230\u4e34\u65f6\u8def\u5f84");return t("error",s," at utils/service.js:114"),void a(s)}uni.getFileInfo({filePath:n,success:function(e){var n=e.size/1024;if(t("log","\u539f\u59cb\u4f53\u79ef\uff1a".concat(n.toFixed(2)," KB | \u9650\u5236\u4f53\u79ef\uff1a").concat(r," KB")," at utils/service.js:126"),n<=r){t("log","\u4f53\u79ef\u8fbe\u6807\uff0c\u65e0\u9700\u538b\u7f29"," at utils/service.js:132");var a=u?"".concat(p,"?").concat(u):p;o(a)}else{var s=r/n,c=Math.sqrt(s);c1&&void 0!==arguments[1]?arguments[1]:30,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:20,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:20;return t("log",e," at utils/service.js:244"),new Promise((function(a,s){Promise.all([new Promise((function(t,r){uni.getFileInfo({filePath:e,success:t,fail:r})})),new Promise((function(t,r){uni.getImageInfo({src:e,success:t,fail:r})}))]).then((function(c){var l=(0,n.default)(c,2),u=l[0],p=l[1];t("log","imgInfo\uff1a",p," at utils/service.js:266");var d=u.size/1024;if(t("log","\u539f\u59cb\u4f53\u79ef\uff1a".concat(d.toFixed(2)," KB\uff0c\u539f\u59cb\u5c3a\u5bf8\uff1a").concat(p.width,"x").concat(p.height)," at utils/service.js:268"),d<=r)return t("log","\u4f53\u79ef\u8fbe\u6807\uff0c\u65e0\u9700\u538b\u7f29"," at utils/service.js:272"),void a(e);var f=70,h=p.width,g=p.height,m=1,v=0,x="";!function n(){if(++v>10)return t("warn","\u8fbe\u5230\u6700\u5927\u5c1d\u8bd5\u6b21\u6570\uff0c\u8fd4\u56de\u5f53\u524d\u538b\u7f29\u7ed3\u679c",x," at utils/service.js:288"),void a(x);var c=Math.max(h*m,i),l=Math.max(g*m,o);uni.compressImage({src:e,quality:f,width:c,height:l,success:function(e){uni.getFileInfo({filePath:e.tempFilePath,success:function(i){var o=i.size/1024;t("log","\u7b2c".concat(v,"\u6b21\u538b\u7f29\uff1a\u8d28\u91cf=").concat(f,"\uff0c\u5c3a\u5bf8=").concat(c,"x").concat(l,"\uff0c\u4f53\u79ef=").concat(o.toFixed(2)," KB")," at utils/service.js:309"),x=e.tempFilePath,o<=r?a(e.tempFilePath):(f>20?f-=15:m*=.8,n())},fail:function(e){t("error","\u83b7\u53d6\u538b\u7f29\u540e\u6587\u4ef6\u4fe1\u606f\u5931\u8d25\uff1a",e," at utils/service.js:328"),s(e)}})},fail:function(e){t("error","\u56fe\u7247\u538b\u7f29\u5931\u8d25\uff1a",e," at utils/service.js:334"),s(e)}})}()})).catch((function(e){t("error","\u83b7\u53d6\u56fe\u7247\u4fe1\u606f\u5931\u8d25\uff1a",e," at utils/service.js:343"),s(e)}))}))};var n=i(r(96)),o=i(r(25)),a=i(r(37)),s=i(r(38));function c(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return l(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return l(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var i=0,n=function(){};return{s:n,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,o=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,i=new Array(e);r2&&void 0!==arguments[2]?arguments[2]:[],a=this.serviceDurations[e];if(!a)throw new Error("\u670d\u52a1\u4e0d\u5b58\u5728");var s=this.availableSlots[t]||[],l=this.blockedTimes[t]||[],u=[].concat((0,o.default)(i),(0,o.default)(l));u.sort((function(t,e){return r.compareTime(t[0],e[0])}));var p,d=[],f=c(u);try{for(f.s();!(p=f.n()).done;){var h=(0,n.default)(p.value,2),g=h[0],m=h[1];if(0===d.length)d.push([g,m]);else{var v=(0,n.default)(d[d.length-1],2),x=(v[0],v[1]);if(this.compareTime(g,x)<=0){var y=this.compareTime(m,x)>0?m:x;d[d.length-1][1]=y}else d.push([g,m])}}}catch(t){f.e(t)}finally{f.f()}var b,_=[],w=c(s);try{for(w.s();!(b=w.n()).done;){var S,O=(0,n.default)(b.value,2),C=O[0],k=O[1],T=C,j=c(d);try{for(j.s();!(S=j.n()).done;){var I=(0,n.default)(S.value,2),A=I[0],P=I[1];if(!(this.compareTime(P,T)<=0)){if(this.compareTime(A,k)>=0)break;if(this.compareTime(T,A)<0){var R=this.compareTime(A,k)<0?A:k;_.push([T,R])}T=this.compareTime(P,k)<0?P:k}}}catch(t){j.e(t)}finally{j.f()}this.compareTime(T,k)<0&&_.push([T,k])}}catch(t){w.e(t)}finally{w.f()}return _.filter((function(t){var e=(0,n.default)(t,2),i=e[0],o=e[1];return r.timeDiffInMinutes(i,o)>=a}))}},{key:"compareTime",value:function(t,e){var r=t.split(":").map(Number),i=(0,n.default)(r,2),o=i[0],a=i[1],s=e.split(":").map(Number),c=(0,n.default)(s,2),l=c[0],u=c[1];return o!==l?o-l:a-u}},{key:"timeDiffInMinutes",value:function(t,e){var r=t.split(":").map(Number),i=(0,n.default)(r,2),o=i[0],a=i[1],s=e.split(":").map(Number),c=(0,n.default)(s,2);return 60*c[0]+c[1]-(60*o+a)}}]),t}();e.ServiceManager=u}).call(this,r(2).default)},function(t,e,r){"use strict";r.r(e);var i=r(82),n=r(44);for(var o in n)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(o);var a=r(0);var s=Object(a.a)(n.default,i.b,i.c,!1,null,null,"7fc1fee2",!1,i.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(109).default,this.options.style):Object.assign(this.options.style,r(109).default)}).call(s),e.default=s.exports},function(t,e,r){"use strict";r.r(e);var i=r(84),n=r(46);for(var o in n)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(o);var a=r(0);var s=Object(a.a)(n.default,i.b,i.c,!1,null,null,"5a4968ae",!1,i.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(108).default,this.options.style):Object.assign(this.options.style,r(108).default)}).call(s),e.default=s.exports},function(t,e,r){"use strict";r.r(e);var i=r(85),n=r(53);for(var o in n)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(o);var a=r(0);var s=Object(a.a)(n.default,i.b,i.c,!1,null,"227f8d14","3736ebb8",!1,i.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(111).default,this.options.style):Object.assign(this.options.style,r(111).default)}).call(s),e.default=s.exports},function(t,e,r){"use strict";r.r(e);var i=r(89),n=r(50);for(var o in n)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(o);var a=r(0);var s=Object(a.a)(n.default,i.b,i.c,!1,null,"af66543a","c3010dea",!1,i.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(110).default,this.options.style):Object.assign(this.options.style,r(110).default)}).call(s),e.default=s.exports},function(t,e,r){"use strict";var i=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n,o,a=i(r(6));function s(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}var c={props:function(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.$.$refs.ani.ref;if(r)return new Promise((function(i,n){l.transition(r,c({styles:t},e),(function(t){i()}))}))}},{key:"_nvueNextAnimate",value:function(t){var e=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2?arguments[2]:void 0,n=t[r];if(n){var o=n.styles,a=n.config;this._animateRun(o,a).then((function(){r+=1,e._nvueNextAnimate(t,r,i)}))}else this.currentStepAnimates={},"function"==typeof i&&i(),this.isEnd=!0}},{key:"step",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.currentStepAnimates[this.next].config=Object.assign({},this.options,t),this.currentStepAnimates[this.next].styles.transformOrigin=this.currentStepAnimates[this.next].config.transformOrigin,this.next++,this}},{key:"run",value:function(t){this.isEnd=!1,this.$.$refs.ani&&this.$.$refs.ani.ref&&(this._nvueNextAnimate(this.currentStepAnimates,0,t),this.next=0)}}]),t}(),p=["matrix","matrix3d","rotate","rotate3d","rotateX","rotateY","rotateZ","scale","scale3d","scaleX","scaleY","scaleZ","skew","skewX","skewY","translate","translate3d","translateX","translateY","translateZ"];p.concat(["opacity","backgroundColor"],["width","height","left","right","top","bottom"]).forEach((function(t){u.prototype[t]=function(){for(var e=arguments.length,r=new Array(e),i=0;i",quot:'"',apos:"'",ensp:"\u2002",emsp:"\u2003",nbsp:"\xa0",semi:";",ndash:"\u2013",mdash:"\u2014",middot:"\xb7",lsquo:"\u2018",rsquo:"\u2019",ldquo:"\u201c",rdquo:"\u201d",bull:"\u2022",hellip:"\u2026",larr:"\u2190",uarr:"\u2191",rarr:"\u2192",darr:"\u2193"},tagStyle:{},svgDict:{animatetransform:"animateTransform",lineargradient:"linearGradient",viewbox:"viewBox",attributename:"attributeName",repeatcount:"repeatCount",repeatdur:"repeatDur"}},n={},o=uni.getSystemInfoSync().windowWidth,a=s(" ,\r,\n,\t,\f");function s(t){for(var e=Object.create(null),r=t.split(","),i=r.length;i--;)e[r[i]]=!0;return e}function c(t,e){for(var r=t.indexOf("&");-1!==r;){var n=t.indexOf(";",r+3),o=void 0;if(-1===n)break;"#"===t[r+1]?(o=parseInt(("x"===t[r+2]?"0":"")+t.substring(r+2,n)),isNaN(o)||(t=t.substr(0,r)+String.fromCharCode(o)+t.substr(n+1))):(o=t.substring(r+1,n),(i.entities[o]||"amp"===o&&e)&&(t=t.substr(0,r)+(i.entities[o]||"&")+t.substr(n+1))),r=t.indexOf("&",r+1)}return t}function l(t){this.options=t||{},this.tagStyle=Object.assign({},i.tagStyle,this.options.tagStyle),this.imgList=t.imgList||[],this.imgList._unloadimgs=0,this.plugins=t.plugins||[],this.attrs=Object.create(null),this.stack=[],this.nodes=[],this.pre=(this.options.containerStyle||"").includes("white-space")&&this.options.containerStyle.includes("pre")?2:0}function u(t){this.handler=t}i.ignoreTags.iframe=void 0,i.trustTags.iframe=!0,i.ignoreTags.embed=void 0,i.trustTags.embed=!0,i.ignoreTags.source=void 0,i.ignoreTags.style=void 0,l.prototype.parse=function(t){for(var e=this.plugins.length;e--;)this.plugins[e].onUpdate&&(t=this.plugins[e].onUpdate(t,i)||t);for(new u(this).parse(t);this.stack.length;)this.popNode();return this.nodes.length>50&&function(t){for(var e=t.length-1,r=e;r>=-1;r--)(-1===r||t[r].c||!t[r].name||"div"!==t[r].name&&"p"!==t[r].name&&"h"!==t[r].name[0]||(t[r].attrs.style||"").includes("inline"))&&(e-r>=5&&t.splice(r+1,e-r,{name:"div",attrs:{},children:t.slice(r+1,e+1)}),e=r-1)}(this.nodes),this.nodes},l.prototype.expose=function(){},l.prototype.hook=function(t){for(var e=this.plugins.length;e--;)if(this.plugins[e].onParse&&!1===this.plugins[e].onParse(t,this))return!1;return!0},l.prototype.getUrl=function(t){var e=this.options.domain;return"/"===t[0]?t="/"===t[1]?(e?e.split("://")[0]:"http")+":"+t:e?e+t:plus.io.convertLocalFileSystemURL(t):t.includes("data:")||t.includes("://")||(t=e?e+"/"+t:plus.io.convertLocalFileSystemURL(t)),t},l.prototype.parseStyle=function(t){var e=t.attrs,r=(this.tagStyle[t.name]||"").split(";").concat((e.style||"").split(";")),i={},n="";e.id&&!this.xml&&(this.options.useAnchor?this.expose():"img"!==t.name&&"a"!==t.name&&"video"!==t.name&&"audio"!==t.name&&(e.id=void 0)),e.width&&(i.width=parseFloat(e.width)+(e.width.includes("%")?"%":"px"),e.width=void 0),e.height&&(i.height=parseFloat(e.height)+(e.height.includes("%")?"%":"px"),e.height=void 0);for(var s=0,c=r.length;s0||p.includes("safe"))n+=";".concat(u,":").concat(p);else if(!i[u]||p.includes("import")||!i[u].includes("import")){if(p.includes("url")){var d=p.indexOf("(")+1;if(d){for(;'"'===p[d]||"'"===p[d]||a[p[d]];)d++;p=p.substr(0,d)+this.getUrl(p.substr(d))}}else p.includes("rpx")&&(p=p.replace(/[0-9.]+\s*rpx/g,(function(t){return parseFloat(t)*o/750+"px"})));i[u]=p}}}return t.attrs.style=n,i},l.prototype.onTagName=function(t){this.tagName=this.xml?t:t.toLowerCase(),"svg"===this.tagName&&(this.xml=(this.xml||0)+1,i.ignoreTags.style=void 0)},l.prototype.onAttrName=function(t){"data-"===(t=this.xml?t:t.toLowerCase()).substr(0,5)?"data-src"!==t||this.attrs.src?"img"===this.tagName||"a"===this.tagName?this.attrName=t:this.attrName=void 0:this.attrName="src":(this.attrName=t,this.attrs[t]="T")},l.prototype.onAttrVal=function(t){var e=this.attrName||"";"style"===e||"href"===e?this.attrs[e]=c(t,!0):e.includes("src")?this.attrs[e]=this.getUrl(c(t,!0)):e&&(this.attrs[e]=t)},l.prototype.onOpenTag=function(t){var e=Object.create(null);e.name=this.tagName,e.attrs=this.attrs,this.options.nodes.length&&(e.type="node"),this.attrs=Object.create(null);var r=e.attrs,a=this.stack[this.stack.length-1],s=a?a.children:this.nodes,c=this.xml?t:i.voidTags[e.name];if(n[e.name]&&(r.class=n[e.name]+(r.class?" "+r.class:"")),"embed"===e.name&&this.expose(),c){if(!this.hook(e)||i.ignoreTags[e.name])return void("base"!==e.name||this.options.domain||(this.options.domain=r.href));var l=this.parseStyle(e);if("img"===e.name){if(r.src&&(r.src.includes("webp")&&(e.webp="T"),r.src.includes("data:")&&!r["original-src"]&&(r.ignore="T"),!r.ignore||e.webp||r.src.includes("cloud://"))){for(var u=this.stack.length;u--;){var p=this.stack[u];"a"===p.name&&(e.a=p.attrs),"table"!==p.name||e.webp||r.src.includes("cloud://")||(!l.display||l.display.includes("inline")?e.t="inline-block":e.t=l.display,l.display=void 0),p.c=1}r.i=this.imgList.length.toString();var d=r["original-src"]||r.src;this.imgList.push(d),e.t||(this.imgList._unloadimgs+=1),this.options.lazyLoad&&(r["data-src"]=r.src,r.src=void 0)}"inline"===l.display&&(l.display=""),parseInt(l.width)>o&&(l.height=void 0),isNaN(parseInt(l.width))||(e.w="T"),!isNaN(parseInt(l.height))&&(!l.height.includes("%")||a&&(a.attrs.style||"").includes("height"))&&(e.h="T")}else if("svg"===e.name)return s.push(e),this.stack.push(e),void this.popNode();for(var f in l)l[f]&&(r.style+=";".concat(f,":").concat(l[f].replace(" !important","")));r.style=r.style.substr(1)||void 0}else("pre"===e.name||(r.style||"").includes("white-space")&&r.style.includes("pre"))&&2!==this.pre&&(this.pre=e.pre=1),e.children=[],this.stack.push(e);s.push(e)},l.prototype.onCloseTag=function(t){var e;for(t=this.xml?t:t.toLowerCase(),e=this.stack.length;e--&&this.stack[e].name!==t;);if(-1!==e)for(;this.stack.length>e;)this.popNode();else if("p"===t||"br"===t){(this.stack.length?this.stack[this.stack.length-1].children:this.nodes).push({name:t,attrs:{class:n[t]||"",style:this.tagStyle[t]||""}})}},l.prototype.popNode=function(){var t=this.stack.pop(),e=t.attrs,r=t.children,n=this.stack[this.stack.length-1],a=n?n.children:this.nodes;if(!this.hook(t)||i.ignoreTags[t.name])return"title"===t.name&&r.length&&"text"===r[0].type&&this.options.setTitle&&uni.setNavigationBarTitle({title:r[0].text}),void a.pop();if(t.pre&&2!==this.pre){this.pre=t.pre=void 0;for(var s=this.stack.length;s--;)this.stack[s].pre&&(this.pre=1)}var c={};if("svg"===t.name)return this.xml>1?void this.xml--:(function t(e){if(e.name){for(var r in e.name=i.svgDict[e.name]||e.name,e.attrs)i.svgDict[r]&&(e.attrs[i.svgDict[r]]=e.attrs[r],e.attrs[r]=void 0);for(var n=0;n<(e.children||[]).length;n++)t(e.children[n])}}(t),this.xml=!1,void(i.ignoreTags.style=!0));for(var l in(e.class||"").includes("align-center")&&(c["text-align"]="center"),Object.assign(c,this.parseStyle(t)),"table"!==t.name&&parseInt(c.width)>o&&(c["max-width"]="100%",c["box-sizing"]="border-box"),c)if(c[l]){var u=";".concat(l,":").concat(c[l].replace(" !important",""));e.style+=u}e.style=e.style.substr(1)||void 0},l.prototype.onText=function(t){if(!this.pre){for(var e,r="",i=0,n=t.length;i"===this.content[this.i]||e&&">"===this.content[this.i+1])&&(t&&this.handler[t](this.content.substring(this.start,this.i)),this.i+=e?2:1,this.start=this.i,this.handler.onOpenTag(e),"script"===this.handler.tagName?(this.i=this.content.indexOf("="a"&&t<="z"||t>="A"&&t<="Z")this.start!==this.i&&this.handler.onText(this.content.substring(this.start,this.i)),this.start=++this.i,this.state=this.tagName;else if("/"===t||"!"===t||"?"===t){this.start!==this.i&&this.handler.onText(this.content.substring(this.start,this.i));var e=this.content[this.i+2];if("/"===t&&(e>="a"&&e<="z"||e>="A"&&e<="Z"))return this.i+=2,this.start=this.i,void(this.state=this.endTag);var r="--\x3e";"!"===t&&"-"===this.content[this.i+2]&&"-"===this.content[this.i+3]||(r=">"),this.i=this.content.indexOf(r,this.i),-1!==this.i&&(this.i+=r.length,this.start=this.i)}else this.i++}else this.start"===t||"/"===t){if(this.handler.onCloseTag(this.content.substring(this.start,this.i)),">"!==t&&(this.i=this.content.indexOf(">",this.i),-1===this.i))return;this.start=++this.i,this.state=this.text}else this.i++};var p=l;e.default=p},function(t,e,r){"use strict";r.r(e);var i=r(225),n=r(157);for(var o in n)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(o);var a=r(0);var s=Object(a.a)(n.default,i.b,i.c,!1,null,null,"09515850",!1,i.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(265).default,this.options.style):Object.assign(this.options.style,r(265).default)}).call(s),e.default=s.exports},function(t,e,r){"use strict";r.r(e);var i=r(226),n=r(160);for(var o in n)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(o);var a=r(0);var s=Object(a.a)(n.default,i.b,i.c,!1,null,null,"2f34f7eb",!1,i.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(266).default,this.options.style):Object.assign(this.options.style,r(266).default)}).call(s),e.default=s.exports},function(t,e,r){"use strict";r.r(e);var i=r(227),n=r(163);for(var o in n)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(o);var a=r(0);var s=Object(a.a)(n.default,i.b,i.c,!1,null,null,"2d09c148",!1,i.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(267).default,this.options.style):Object.assign(this.options.style,r(267).default)}).call(s),e.default=s.exports},function(t,e,r){"use strict";r.r(e);var i=r(228),n=r(166);for(var o in n)["default"].indexOf(o)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(o);var a=r(0);var s=Object(a.a)(n.default,i.b,i.c,!1,null,null,"5400c7c2",!1,i.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(268).default,this.options.style):Object.assign(this.options.style,r(268).default)}).call(s),e.default=s.exports}]); \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/pages/selfOperated/detail.js.LICENSE.txt b/unpackage/dist/build/app-plus/pages/selfOperated/detail.js.LICENSE.txt new file mode 100644 index 0000000..ae386fb --- /dev/null +++ b/unpackage/dist/build/app-plus/pages/selfOperated/detail.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/unpackage/dist/build/app-plus/pages/service/detail.js b/unpackage/dist/build/app-plus/pages/service/detail.js new file mode 100644 index 0000000..e7c74d3 --- /dev/null +++ b/unpackage/dist/build/app-plus/pages/service/detail.js @@ -0,0 +1,2 @@ +/*! For license information please see detail.js.LICENSE.txt */ +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/",r(r.s=311)}([function(e,t,r){"use strict";function n(e,t,r,n,i,o,a,s,c,u){var l,p="function"==typeof e?e.options:e;if(c){p.components||(p.components={});var d=Object.prototype.hasOwnProperty;for(var f in c)d.call(c,f)&&!d.call(p.components,f)&&(p.components[f]=c[f])}if(u&&("function"==typeof u.beforeCreate&&(u.beforeCreate=[u.beforeCreate]),(u.beforeCreate||(u.beforeCreate=[])).unshift((function(){this[u.__module]=this})),(p.mixins||(p.mixins=[])).push(u)),t&&(p.render=t,p.staticRenderFns=r,p._compiled=!0),n&&(p.functional=!0),o&&(p._scopeId="data-v-"+o),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},p._ssrRegister=l):i&&(l=s?function(){i.call(this,this.$root.$options.shadowRoot)}:i),l)if(p.functional){p._injectStyles=l;var h=p.render;p.render=function(e,t){return l.call(t),h(e,t)}}else{var g=p.beforeCreate;p.beforeCreate=g?[].concat(g,l):[l]}return{exports:e,options:p}}r.d(t,"a",(function(){return n}))},function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){"use strict";function n(e){var t=Object.prototype.toString.call(e);return t.substring(8,t.length-1)}function i(){return"string"==typeof __channelId__&&__channelId__}function o(e,t){switch(n(t)){case"Function":return"function() { [native code] }";default:return t}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){for(var e=arguments.length,t=new Array(e),r=0;r1){var u=s.pop();c=s.join("---COMMA---"),0===u.indexOf(" at ")?c+=u:c+="---COMMA---"+u}else c=s[0];console[a](c)},t.log=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n=200&&a<300)){e.next=3;break}return e.abrupt("return",s);case 3:if(401!==a){e.next=7;break}return e.next=6,x(t,n,i);case 6:return e.abrupt("return",e.sent);case 7:return uni.showToast({title:s.message||"\u8bf7\u6c42\u5931\u8d25",icon:"none"}),e.abrupt("return",Promise.reject(s));case 9:case"end":return e.stop()}}),e)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),y=function(){var t=(0,a.default)(o.default.mark((function t(r,n){var a,c,l;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(c=uni.getStorageSync("baseUrl"),""==uni.getStorageSync("setVersion").VersionCode&&(0,u.setVersion)(),c){t.next=5;break}return t.next=5,new Promise((function(t,r){uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType},success:function(r){200==r.data.code&&(uni.setStorageSync("baseUrl",r.data.data.url),c=r.data.data.url,t(c)),e("log","\u8bf7\u6c42\u6210\u529f",r.data," at utils/request.js:121")},fail:function(t){e("log","\u8bf7\u6c42\u5931\u8d25",t," at utils/request.js:124")},complete:function(){e("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/request.js:127")}})}));case 5:return i=c,e("log","\u751f\u4ea7\u73af\u5883"," at utils/request.js:147"),a={baseURL:i},(0,s.default)(a,"baseURL",i),(0,s.default)(a,"header",{"content-type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType}),(0,s.default)(a,"timeout",6e4),r=p(p(p({},l=a),r),{},{url:n?r.url:"".concat(l.baseURL).concat(r.url)}),r=m(r),t.abrupt("return",new Promise((function(e,t){uni.request(p(p({},r),{},{success:function(n){e(v(r,n,e,t))},fail:function(e){uni.showToast({title:"\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5",icon:"none"}),t(e)}}))})));case 10:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}();function x(e,t,r){return b.apply(this,arguments)}function b(){return(b=(0,a.default)(o.default.mark((function e(t,r,n){var i,a;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((0,c.getToken)()){e.next=2;break}return e.abrupt("return",S());case 2:if(!d){e.next=4;break}return e.abrupt("return",h((function(e){t.header.Authorization="Bearer ".concat(e),y(t,!0).then(r).catch(n)})));case 4:return d=!0,e.prev=5,e.next=8,_();case 8:return i=e.sent,(0,c.setToken)(i),g(i),t.header.Authorization="Bearer ".concat(i),e.next=14,y(t,!0);case 14:return a=e.sent,e.abrupt("return",a);case 18:return e.prev=18,e.t0=e.catch(5),(0,c.removeToken)(),S(),e.abrupt("return",e.t0);case 23:return e.prev=23,d=!1,e.finish(23);case 26:case"end":return e.stop()}}),e,null,[[5,18,23,26]])})))).apply(this,arguments)}function _(){return w.apply(this,arguments)}function w(){return(w=(0,a.default)(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(uni.getStorageSync("refreshToken")){e.next=3;break}throw new Error("No refresh token");case 3:return e.next=5,y({url:"/sj/refreshtoken",data:{refresh_token:uni.getStorageSync("refreshToken"),deviceid:getApp().globalData.deviceid},method:"POST"});case 5:if(1!=(t=e.sent).state&&200!=t.code){e.next=10;break}return uni.setStorageSync("accessToken",t.access_token),uni.setStorageSync("refreshToken",t.refresh_token),e.abrupt("return",t.access_token);case 10:throw new Error("Refresh token failed");case 11:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function S(){uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}var C={get:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return y(p({url:e,data:t,method:"GET"},r))},post:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return y(p({url:e,data:t,method:"POST"},r))},put:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return y(p({url:e,data:t,method:"PUT"},r))},delete:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return y(p({url:e,data:t,method:"DELETE"},r))}};t.default=C}).call(this,r(2).default)},function(e,t,r){var n=r(5).default,i=r(20);e.exports=function(e){var t=i(e,"string");return"symbol"==n(t)?t:t+""},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){"use strict";r.r(t);var n=r(10),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={}},function(e,t,r){"use strict";var n=r(1),i=r(5);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(r(6)),a=d(r(95)),s=d(r(99)),c=n(r(105)),u=n(r(106)),l=n(r(107));function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(p=function(e){return e?r:t})(e)}function d(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==i(e)&&"function"!=typeof e)return{default:e};var r=p(t);if(r&&r.has(e))return r.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var s=o?Object.getOwnPropertyDescriptor(e,a):null;s&&(s.get||s.set)?Object.defineProperty(n,a,s):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n}function f(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function h(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:"url",t=this[e];t&&uni[this.linkType]({url:t})},$uvGetRect:function(e,t){var r=this;return new Promise((function(n){uni.createSelectorQuery().in(r)[t?"selectAll":"select"](e).boundingClientRect((function(e){t&&Array.isArray(e)&&e.length&&n(e),!t&&e&&n(e)})).exec()}))},getParentData:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";this.parent||(this.parent={}),this.parent=this.$uv.$parent.call(this,t),this.parent.children&&-1===this.parent.children.indexOf(this)&&this.parent.children.push(this),this.parent&&this.parentData&&Object.keys(this.parentData).map((function(t){e.parentData[t]=e.parent[t]}))},preventEvent:function(e){e&&"function"==typeof e.stopPropagation&&e.stopPropagation()},noop:function(e){this.preventEvent(e)}},onReachBottom:function(){uni.$emit("uvOnReachBottom")},beforeDestroy:function(){var e=this;if(this.parent&&s.array(this.parent.children)){var t=this.parent.children;t.map((function(r,n){r===e&&t.splice(n,1)}))}},unmounted:function(){var e=this;if(this.parent&&s.array(this.parent.children)){var t=this.parent.children;t.map((function(r,n){r===e&&t.splice(n,1)}))}}};t.default=g},function(e,t,r){Vue.prototype.__$appStyle__={},Vue.prototype.__merge_style&&Vue.prototype.__merge_style(r(18).default,Vue.prototype.__$appStyle__)},function(e,t,r){"use strict";r.r(t);var n=r(7),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t){if("undefined"==typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(e){var t=this.constructor;return this.then((function(r){return t.resolve(e()).then((function(){return r}))}),(function(r){return t.resolve(e()).then((function(){throw r}))}))}),"undefined"!=typeof uni&&uni&&uni.requireGlobal){var r=uni.requireGlobal();ArrayBuffer=r.ArrayBuffer,Int8Array=r.Int8Array,Uint8Array=r.Uint8Array,Uint8ClampedArray=r.Uint8ClampedArray,Int16Array=r.Int16Array,Uint16Array=r.Uint16Array,Int32Array=r.Int32Array,Uint32Array=r.Uint32Array,Float32Array=r.Float32Array,Float64Array=r.Float64Array,BigInt64Array=r.BigInt64Array,BigUint64Array=r.BigUint64Array}},function(e,t,r){var n=r(5).default;e.exports=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,t||"default");if("object"!=n(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){var n=r(5).default;function i(){"use strict";e.exports=i=function(){return r},e.exports.__esModule=!0,e.exports.default=e.exports;var t,r={},o=Object.prototype,a=o.hasOwnProperty,s=Object.defineProperty||function(e,t,r){e[t]=r.value},c="function"==typeof Symbol?Symbol:{},u=c.iterator||"@@iterator",l=c.asyncIterator||"@@asyncIterator",p=c.toStringTag||"@@toStringTag";function d(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{d({},"")}catch(t){d=function(e,t,r){return e[t]=r}}function f(e,t,r,n){var i=t&&t.prototype instanceof x?t:x,o=Object.create(i.prototype),a=new D(n||[]);return s(o,"_invoke",{value:j(e,r,a)}),o}function h(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}r.wrap=f;var g="suspendedStart",m="executing",v="completed",y={};function x(){}function b(){}function _(){}var w={};d(w,u,(function(){return this}));var S=Object.getPrototypeOf,C=S&&S(S(R([])));C&&C!==o&&a.call(C,u)&&(w=C);var O=_.prototype=x.prototype=Object.create(w);function T(e){["next","throw","return"].forEach((function(t){d(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function r(i,o,s,c){var u=h(e[i],e,o);if("throw"!==u.type){var l=u.arg,p=l.value;return p&&"object"==n(p)&&a.call(p,"__await")?t.resolve(p.__await).then((function(e){r("next",e,s,c)}),(function(e){r("throw",e,s,c)})):t.resolve(p).then((function(e){l.value=e,s(l)}),(function(e){return r("throw",e,s,c)}))}c(u.arg)}var i;s(this,"_invoke",{value:function(e,n){function o(){return new t((function(t,i){r(e,n,t,i)}))}return i=i?i.then(o,o):o()}})}function j(e,r,n){var i=g;return function(o,a){if(i===m)throw Error("Generator is already running");if(i===v){if("throw"===o)throw a;return{value:t,done:!0}}for(n.method=o,n.arg=a;;){var s=n.delegate;if(s){var c=I(s,n);if(c){if(c===y)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===g)throw i=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=m;var u=h(e,r,n);if("normal"===u.type){if(i=n.done?v:"suspendedYield",u.arg===y)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(i=v,n.method="throw",n.arg=u.arg)}}}function I(e,r){var n=r.method,i=e.iterator[n];if(i===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,I(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var o=h(i,e.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,y;var a=o.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,y):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function P(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function D(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function R(e){if(e||""===e){var r=e[u];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,o=function r(){for(;++i=0;--i){var o=this.tryEntries[i],s=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var c=a.call(o,"catchLoc"),u=a.call(o,"finallyLoc");if(c&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),P(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;P(r)}return i}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:R(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),y}},r}e.exports=i,e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){"use strict";r.r(t);var n=r(11),i=r(8);for(var o in i)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return i[e]}))}(o);var a=r(0);var s=Object(a.a)(i.default,n.b,n.c,!1,null,null,"43cd5ac3",!1,n.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(14).default,this.options.style):Object.assign(this.options.style,r(14).default)}).call(s),t.default=s.exports},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getToken=function(){return uni.getStorageSync("accessToken")},t.removeToken=function(){uni.removeStorageSync("accessToken"),uni.removeStorageSync("refreshToken")},t.setToken=function(e){uni.setStorageSync("accessToken",e)}},function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.getBaseUrl=function(){return u.apply(this,arguments)},t.setVersion=function(){var t=uni.getSystemInfoSync();a=t.appWgtVersion,s=t.deviceBrand,e("log","DeviceType",s," at utils/version.js:26"),"android"===(c=t.platform)?c="sj_android":"ios"===c&&(c="sj_ios");var r={VersionCode:a||"",DeviceBrand:c||"",DeviceType:s||""};uni.setStorageSync("setVersion",r)};var i=n(r(3)),o=n(r(4)),a="",s="",c="";function u(){return(u=(0,o.default)(i.default.mark((function t(){var r;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=uni.getStorageSync("setVersion"),t.next=3,uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:r.VersionCode,DeviceBrand:r.DeviceBrand,DeviceType:r.DeviceType},success:function(e){return 200==e.data.code&&uni.setStorageSync("baseUrl",e.data.data.url),e.data.data.url},fail:function(t){return e("log","\u8bf7\u6c42\u5931\u8d25",t," at utils/version.js:82"),"http://60.247.146.5:93"},complete:function(){e("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/version.js:86")}});case 3:case"end":return t.stop()}}),t)})))).apply(this,arguments)}}).call(this,r(2).default)},function(e,t,r){var n=r(42),i=r(39),o=r(26),a=r(43);e.exports=function(e){return n(e)||i(e)||o(e)||a()},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){var n=r(27);e.exports=function(e,t){if(e){if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&void 0!==e[0]?e[0]:{},r.next=3,t.isLocationEnabled();case 3:if(n=r.sent){r.next=7;break}return r.abrupt("return",n);case 7:return r.abrupt("return",n);case 8:case"end":return r.stop()}}),r)})))()}};t.default=a}).call(this,r(2).default)},function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(3)),o=n(r(4)),a={checkPermission:function(e){var t=arguments,r=this;return(0,o.default)(i.default.mark((function n(){var o;return i.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=t.length>1&&void 0!==t[1]?t[1]:"",n.next=3,r._checkAppPermission(e,o);case 3:return n.abrupt("return",n.sent);case 4:case"end":return n.stop()}}),n)})))()},_checkAppPermission:function(t,r){var n=this;return(0,o.default)(i.default.mark((function o(){var a;return i.default.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(a={camera:{android:"android.permission.CAMERA",ios:"camera"},location:{android:"android.permission.ACCESS_FINE_LOCATION",ios:"location"},phone:{android:"android.permission.CALL_PHONE",ios:"phone"},photo_library:{android:["android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE"],ios:"photo_library"}}[t]){i.next=5;break}return e("error","\u4e0d\u652f\u6301\u7684\u6743\u9650\u7c7b\u578b:",t," at utils/per.js:62"),i.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 5:if("Android"!==plus.os.name){i.next=9;break}return i.abrupt("return",n._checkAndroidPermission(a.android));case 9:return i.abrupt("return",n._checkIosPermission(a.ios,r));case 10:return i.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 11:case"end":return i.stop()}}),o)})))()},_checkAndroidPermission:function(t){return(0,o.default)(i.default.mark((function r(){return i.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",new Promise((function(r){plus.android.requestPermissions(Array.isArray(t)?t:[t],(function(n){e("log","perm_".concat(t),n," at utils/per.js:85");var i=!plus.storage.getItem("perm_".concat(t));i&&plus.storage.setItem("perm_".concat(t),"1"),0!==n.deniedPresent.length&&plus.storage.setItem("perm_".concat(t,"_no"),"2"),0!==n.granted.length&&plus.storage.removeItem("perm_".concat(t,"_no"),"2"),r({granted:0!==n.granted.length,firstRequest:i,canRequest:!0})}),(function(e){r({granted:!1,firstRequest:!1,canRequest:!0})}))})));case 1:case"end":return r.stop()}}),r)})))()},_checkIosPermission:function(t,r){return(0,o.default)(i.default.mark((function r(){var n,o;return i.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:r.prev=0,r.t0=t,r.next="camera"===r.t0?4:"location"===r.t0?6:10;break;case 4:return n=plus.ios.invoke("AVCaptureDevice","authorizationStatusForMediaType:","vide"),r.abrupt("break",11);case 6:return o=plus.ios.newObject("CLLocationManager"),n=plus.ios.invoke(o,"authorizationStatus"),plus.ios.deleteObject(o),r.abrupt("break",11);case 10:return r.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 11:return r.abrupt("return",{granted:3===n,firstRequest:0===n,canRequest:2!==n});case 14:return r.prev=14,r.t1=r.catch(0),e("error","iOS\u6743\u9650\u68c0\u67e5\u9519\u8bef:",r.t1," at utils/per.js:146"),r.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 18:case"end":return r.stop()}}),r,null,[[0,14]])})))()},_checkMpPermission:function(e){return(0,o.default)(i.default.mark((function t(){var r;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r={camera:"scope.camera",location:"scope.userLocation",record:"scope.record"}[e]){t.next=4;break}return t.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 4:return t.abrupt("return",new Promise((function(e){uni.getSetting({success:function(t){var n=t.authSetting;e({granted:!0===n[r],firstRequest:void 0===n[r],canRequest:!1!==n[r]})},fail:function(){e({granted:!1,firstRequest:!1,canRequest:!1})}})})));case 5:case"end":return t.stop()}}),t)})))()},requestPermission:function(e){var t=arguments,r=this;return(0,o.default)(i.default.mark((function n(){var o,a,s,c;return i.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=t.length>1&&void 0!==t[1]?t[1]:"",n.next=3,r.checkPermission(e,o);case 3:if(a=n.sent,s=a.granted,a.firstRequest,c=a.canRequest,!s){n.next=9;break}return n.abrupt("return",!0);case 9:if(c){n.next=11;break}return n.abrupt("return",!1);case 11:return n.abrupt("return",r._requestAppPermission(e,o));case 12:case"end":return n.stop()}}),n)})))()},_requestAppPermission:function(e,t){return(0,o.default)(i.default.mark((function e(){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",!1);case 1:case"end":return e.stop()}}),e)})))()},_requestMpPermission:function(e){return(0,o.default)(i.default.mark((function t(){var r;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r={camera:"scope.camera",location:"scope.userLocation",record:"scope.record"}[e]){t.next=4;break}return t.abrupt("return",!1);case 4:return t.abrupt("return",new Promise((function(e){uni.authorize({scope:r,success:function(){return e(!0)},fail:function(){return e(!1)}})})));case 5:case"end":return t.stop()}}),t)})))()},openSystemSettings:function(){if("Android"===plus.os.name){var e=plus.android.importClass("android.content.Intent"),t=plus.android.importClass("android.provider.Settings"),r=plus.android.importClass("android.net.Uri"),n=plus.android.runtimeMainActivity(),i=new e;i.setAction(t.ACTION_APPLICATION_DETAILS_SETTINGS);var o=r.fromParts("package",n.getPackageName(),null);i.setData(o),n.startActivity(i)}else{var a=plus.ios.import("UIApplication"),s=plus.ios.import("NSURL").URLWithString("app-settings:"),c=a.sharedApplication();plus.ios.invoke(c,"canOpenURL:",s)&&plus.ios.invoke(c,"openURL:",s),plus.ios.deleteObject(s),plus.ios.deleteObject(c)}}};t.default=a}).call(this,r(2).default)},function(e,t,r){"use strict";r.r(t);var n=r(31),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(25)),o=n(r(6)),a=r(120);function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};e.duration&&(this.durationTime=e.duration),this.animation=(0,a.createAnimation)(Object.assign(this.config,e),this)},onClick:function(){this.$emit("click",{detail:this.isShow})},step:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.animation?(Object.keys(e).forEach((function(r){var n,o=e[r];"function"==typeof t.animation[r]&&(Array.isArray(o)?(n=t.animation)[r].apply(n,(0,i.default)(o)):t.animation[r](o))})),this.animation.step(r),this):this},run:function(e){this.animation&&this.animation.run(e)},open:function(){var e=this;clearTimeout(this.timer),this.isShow=!0,this.transform=this.styleInit(!1).transform||"",this.opacity=this.styleInit(!1).opacity||0,this.$nextTick((function(){e.timer=setTimeout((function(){e.animation=(0,a.createAnimation)(e.config,e),e.tranfromInit(!1).step(),e.animation.run((function(){e.transform=e.styleInit(!1).transform||"",e.opacity=e.styleInit(!1).opacity||1,e.$emit("change",{detail:e.isShow})}))}),80)}))},close:function(e){var t=this;this.animation&&this.tranfromInit(!0).step().run((function(){t.isShow=!1,t.animationData=null,t.animation=null;var e=t.styleInit(!1),r=e.opacity,n=e.transform;t.opacity=r||1,t.transform=n,t.$emit("change",{detail:t.isShow})}))},styleInit:function(e){var t=this,r={transform:"",opacity:1},n=function(e,n){var i=t.animationType(e)[n];n.startsWith("fade")?r.opacity=i:r.transform+=i+" "};return"string"==typeof this.modeClass?n(e,this.modeClass):this.modeClass.forEach((function(t){return n(e,t)})),r},tranfromInit:function(e){var t=this,r=function(e,r){var n=null;"fade"===r?n=e?0:1:(n=e?"-100%":"0","zoom-in"===r&&(n=e?.8:1),"zoom-out"===r&&(n=e?1.2:1),"slide-right"===r&&(n=e?"100%":"0"),"slide-bottom"===r&&(n=e?"100%":"0")),t.animation[t.animationMode()[r]](n)};return"string"==typeof this.modeClass?r(e,this.modeClass):this.modeClass.forEach((function(t){r(e,t)})),this.animation},animationType:function(e){return{fade:e?1:0,"slide-top":"translateY(".concat(e?"0":"-100%",")"),"slide-right":"translateX(".concat(e?"0":"100%",")"),"slide-bottom":"translateY(".concat(e?"0":"100%",")"),"slide-left":"translateX(".concat(e?"0":"-100%",")"),"zoom-in":"scaleX(".concat(e?1:.8,") scaleY(").concat(e?1:.8,")"),"zoom-out":"scaleX(".concat(e?1:1.2,") scaleY(").concat(e?1:1.2,")")}},animationMode:function(){return{fade:"opacity","slide-top":"translateY","slide-right":"translateX","slide-bottom":"translateY","slide-left":"translateX","zoom-in":"scale","zoom-out":"scale"}},toLine:function(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}}};t.default=u},function(e,t,r){"use strict";r.r(t);var n=r(33),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={name:"uniPopup",components:{},emits:["change","maskClick"],props:{animation:{type:Boolean,default:!0},type:{type:String,default:"center"},isMaskClick:{type:Boolean,default:null},maskClick:{type:Boolean,default:null},backgroundColor:{type:String,default:"none"},safeArea:{type:Boolean,default:!0},maskBackgroundColor:{type:String,default:"rgba(0, 0, 0, 0.4)"},borderRadius:{type:String}},watch:{type:{handler:function(e){this.config[e]&&this[this.config[e]](!0)},immediate:!0},isDesktop:{handler:function(e){this.config[e]&&this[this.config[this.type]](!0)},immediate:!0},maskClick:{handler:function(e){this.mkclick=e},immediate:!0},isMaskClick:{handler:function(e){this.mkclick=e},immediate:!0},showPopup:function(e){}},data:function(){return{duration:300,ani:[],showPopup:!1,showTrans:!1,popupWidth:0,popupHeight:0,config:{top:"top",bottom:"bottom",center:"center",left:"left",right:"right",message:"top",dialog:"center",share:"bottom"},maskClass:{position:"fixed",bottom:0,top:0,left:0,right:0,backgroundColor:"rgba(0, 0, 0, 0.4)"},transClass:{backgroundColor:"transparent",borderRadius:this.borderRadius||"0",position:"fixed",left:0,right:0},maskShow:!0,mkclick:!0,popupstyle:"top"}},computed:{getStyles:function(){var e={backgroundColor:this.bg};return this.borderRadius,e=Object.assign(e,{borderRadius:this.borderRadius})},isDesktop:function(){return this.popupWidth>=500&&this.popupHeight>=500},bg:function(){return""===this.backgroundColor||"none"===this.backgroundColor?"transparent":this.backgroundColor}},mounted:function(){var e,t,r,n,i,o,a=this;e=uni.getSystemInfoSync(),t=e.windowWidth,r=e.windowHeight,n=e.windowTop,i=e.safeArea,e.screenHeight,o=e.safeAreaInsets,a.popupWidth=t,a.popupHeight=r+(n||0),i&&a.safeArea?a.safeAreaInsets=o.bottom:a.safeAreaInsets=0},destroyed:function(){this.setH5Visible()},activated:function(){this.setH5Visible(!this.showPopup)},deactivated:function(){this.setH5Visible(!0)},created:function(){null===this.isMaskClick&&null===this.maskClick?this.mkclick=!0:this.mkclick=null!==this.isMaskClick?this.isMaskClick:this.maskClick,this.animation?this.duration=300:this.duration=0,this.messageChild=null,this.clearPropagation=!1,this.maskClass.backgroundColor=this.maskBackgroundColor},methods:{setH5Visible:function(){},closeMask:function(){this.maskShow=!1},disableMask:function(){this.mkclick=!1},clear:function(e){this.clearPropagation=!0},open:function(t){if(!this.showPopup){t&&-1!==["top","center","bottom","left","right","message","dialog","share"].indexOf(t)||(t=this.type),this.config[t]?(this[this.config[t]](),this.$emit("change",{show:!0,type:t})):e("error","\u7f3a\u5c11\u7c7b\u578b\uff1a",t," at uni_modules/uni-popup/components/uni-popup/uni-popup.vue:310")}},close:function(e){var t=this;this.showTrans=!1,this.$emit("change",{show:!1,type:this.type}),clearTimeout(this.timer),this.timer=setTimeout((function(){t.showPopup=!1}),300)},touchstart:function(){this.clearPropagation=!1},onTap:function(){this.clearPropagation?this.clearPropagation=!1:(this.$emit("maskClick"),this.mkclick&&this.close())},top:function(e){var t=this;this.popupstyle=this.isDesktop?"fixforpc-top":"top",this.ani=["slide-top"],this.transClass={position:"fixed",left:0,right:0,backgroundColor:this.bg,borderRadius:this.borderRadius||"0"},e||(this.showPopup=!0,this.showTrans=!0,this.$nextTick((function(){t.showPoptrans(),t.messageChild&&"message"===t.type&&t.messageChild.timerClose()})))},bottom:function(e){this.popupstyle="bottom",this.ani=["slide-bottom"],this.transClass={position:"fixed",left:0,right:0,bottom:0,paddingBottom:this.safeAreaInsets+"px",backgroundColor:this.bg,borderRadius:this.borderRadius||"0"},e||this.showPoptrans()},center:function(e){this.popupstyle="center",this.ani=["zoom-out","fade"],this.transClass={position:"fixed",bottom:0,left:0,right:0,top:0,justifyContent:"center",alignItems:"center",borderRadius:this.borderRadius||"0"},e||this.showPoptrans()},left:function(e){this.popupstyle="left",this.ani=["slide-left"],this.transClass={position:"fixed",left:0,bottom:0,top:0,backgroundColor:this.bg,borderRadius:this.borderRadius||"0"},e||this.showPoptrans()},right:function(e){this.popupstyle="right",this.ani=["slide-right"],this.transClass={position:"fixed",bottom:0,right:0,top:0,backgroundColor:this.bg,borderRadius:this.borderRadius||"0"},e||this.showPoptrans()},showPoptrans:function(){var e=this;this.$nextTick((function(){e.showPopup=!0,e.showTrans=!0}))}}};t.default=r}).call(this,r(2).default)},function(e,t){e.exports={".uni-popup":{"":{position:["fixed",0,0,16]},".top":{top:[0,0,1,17]},".left":{top:[0,0,1,17]},".right":{top:[0,0,1,17]}},".uni-popup__wrapper":{".uni-popup ":{position:["relative",0,1,18]},".uni-popup .left":{paddingTop:[0,0,2,19],flex:[1,0,2,19]},".uni-popup .right":{paddingTop:[0,0,2,19],flex:[1,0,2,19]}},".fixforpc-top":{"":{top:[0,0,0,20]}},"@VERSION":2}},function(e,t,r){"use strict";r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return n}));var n={uniTransition:r(119).default},i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return e.showPopup?r("view",{staticClass:["uni-popup"],class:[e.popupstyle,e.isDesktop?"fixforpc-z-index":""]},[r("view",{on:{touchstart:e.touchstart}},[e.maskShow?r("uni-transition",{key:"1",attrs:{name:"mask",modeClass:"fade",styles:e.maskClass,duration:e.duration,show:e.showTrans},on:{click:e.onTap}}):e._e(),r("uni-transition",{key:"2",attrs:{modeClass:e.ani,name:"content",styles:e.transClass,duration:e.duration,show:e.showTrans},on:{click:e.onTap}},[r("view",{staticClass:["uni-popup__wrapper"],class:[e.popupstyle],style:e.getStyles,on:{click:e.clear}},[e._t("default")],2)])],1)]):e._e()},o=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return n})),r.d(t,"c",(function(){return i})),r.d(t,"a",(function(){}));var n=function(){var e=this.$createElement,t=this._self._c||e;return this.isShow?t("view",{ref:"ani",class:this.customClass,style:this.transformStyles,attrs:{animation:this.animationData},on:{click:this.onClick}},[this._t("default")],2):this._e()},i=[]},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){var n=r(13);function i(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};return s(a({},e))},calcDistance:function(e,t,r,n){return function(e,t,r,n){var i=function(e){return e*(Math.PI/180)},o=i(r-e),a=i(n-t),s=Math.sin(o/2)*Math.sin(o/2)+Math.cos(i(e))*Math.cos(i(r))*Math.sin(a/2)*Math.sin(a/2);return(6371*(2*Math.atan2(Math.sqrt(s),Math.sqrt(1-s)))).toFixed(2)}(e,t,r,n)},roundUpToTwoDecimals:function(e,t){return(Math.floor(e*t*100+.9)/100).toFixed(2)},getDateStr:function(e){var t=new Date;return t.setDate(t.getDate()+e),"".concat(t.getFullYear(),"-").concat((t.getMonth()+1).toString().padStart(2,"0"),"-").concat(t.getDate().toString().padStart(2,"0"))}};t.default=u}).call(this,r(2).default)},function(e,t,r){var n=r(27);e.exports=function(e){if(Array.isArray(e))return n(e)},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){"use strict";r.r(t);var n=r(45),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(12)),o={components:{evaluationDetail:n(r(240)).default},data:function(){return{formData:{page:1,limit:2},evaluateList:{count:0,list:[]}}},props:{evaluated_id:{type:Number},evaluated_type:{type:Number},order_shop_id:{type:Number},order_shop_type:{type:Number},order_id:{type:Number},search_type:{type:Number},listUrl:{type:String,default:"/user/orderEvaluate/list"}},mounted:function(){this.order_shop_id&&(this.formData.order_shop_id=this.order_shop_id),this.order_shop_type&&(this.formData.order_shop_type=this.order_shop_type),this.evaluated_type&&(this.formData.evaluated_type=this.evaluated_type),this.evaluated_id&&(this.formData.evaluated_id=this.evaluated_id),this.order_id&&(this.formData.order_id=this.order_id),this.search_type&&(this.formData.search_type=this.search_type),this.getList()},methods:{getList:function(){var e=this;i.default.post(this.listUrl,this.formData).then((function(t){e.evaluateList=t.data||{count:0,list:[]}}))},goList:function(){this.$emit("goList")}}};t.default=o},function(e,t,r){"use strict";r.r(t);var n=r(47),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={data:function(){return{hasShowMore:!1,compositeStraList:[]}},computed:{evaluatorPhoto:function(){return this.evaluateObj.evaluator_head_photo?1==this.evaluateObj.anonymity?"/static/images/evaluate/photo.jpg":this.evaluateObj.evaluator_head_photo:""},evaluatorName:function(){return this.evaluateObj.evaluator_name?1==this.evaluateObj.anonymity?"\u533f\u540d\u7528\u6237":this.evaluateObj.evaluator_name:""},photos:function(){return this.evaluateObj.images?this.evaluateObj.images.split(","):[]},formattedCreateTime:function(){var e;if(null===(e=this.evaluateObj)||void 0===e||!e.create_time)return"";var t=this.evaluateObj.create_time.split(" ")[0];if(!t)return"";var r=t.replace(/-/g,"/"),n=new Date(r);if(isNaN(n.getTime()))return"";var i=n.getFullYear(),o=n.getMonth()+1,a=n.getDate();return"".concat(i,"\u5e74").concat(o,"\u6708").concat(a,"\u65e5")},getComposite:function(){return this.evaluateObj.composite?"/static/images/evaluate/score".concat(Math.floor(this.evaluateObj.composite),".png"):""}},props:{evaluateObj:{type:Object,default:function(){return{}}},isAllImg:{type:Boolean,default:!1}},methods:{showMore:function(){this.hasShowMore=!this.hasShowMore},imgPreview:function(e){uni.previewImage({current:e,urls:this.photos})},getStar:function(e){if(!this.evaluateObj.composite)return"";var t=this.evaluateObj.composite;return t>=e?"/static/images/evaluate/star_red.png":te-1?"/static/images/evaluate/star2.png":"/static/images/evaluate/star_ash2.png"},handleDecimal:function(e){var t=-1===Math.sign(e)?Math.ceil(e):Math.floor(e);return e-t>.5?t+.5:t},goDetail:function(){this.$emit("goDetail",this.evaluateObj)}}};t.default=n},function(e,t){e.exports={".evaluation-detail":{"":{paddingTop:["30rpx",0,0,1],paddingRight:["20rpx",0,0,1],paddingBottom:["30rpx",0,0,1],paddingLeft:["20rpx",0,0,1],borderRadius:["16rpx",0,0,1],backgroundColor:["#ffffff",0,0,1],borderBottomWidth:["2rpx",0,0,1],borderBottomStyle:["solid",0,0,1],borderBottomColor:["#FAFAFA",0,0,1],flex:[1,0,0,1]}},".user-section":{"":{display:["flex",0,0,3],flexDirection:["row",0,0,3],alignItems:["center",0,0,3],justifyContent:["space-between",0,0,3]}},".user-info":{"":{display:["flex",0,0,4],flexDirection:["row",0,0,4],alignItems:["center",0,0,4]}},".avatar":{"":{width:["62rpx",0,0,5],height:["62rpx",0,0,5],borderRadius:[50,0,0,5],marginRight:["6rpx",0,0,5]}},".username":{"":{fontWeight:["500",0,0,7],fontSize:["24rpx",0,0,7],color:["#333333",0,0,7],lineHeight:["33rpx",0,0,7]}},".time":{"":{fontSize:["24rpx",0,0,8],color:["#999999",0,0,8],marginTop:["4rpx",0,0,8]}},".user-contant":{"":{paddingLeft:["70rpx",0,0,10]}},".rating-header":{"":{display:["flex",0,0,12],flexDirection:["row",0,0,12],alignItems:["center",0,0,12],marginTop:["20rpx",0,0,12]}},".tag":{"":{height:["40rpx",0,0,13],marginRight:["10rpx",0,0,13]}},".stars":{"":{display:["flex",0,0,14],flexDirection:["row",0,0,14],alignItems:["center",0,0,14],marginRight:["10rpx",0,0,14]}},".star-icon":{"":{width:["24rpx",0,0,15],height:["24rpx",0,0,15],marginRight:["2rpx",0,0,15]}},".score":{"":{fontWeight:["400",0,0,17],fontSize:["26rpx",0,0,17],color:["#E8101E",0,0,17],lineHeight:["37rpx",0,0,17]}},".comment":{"":{marginTop:["12rpx",0,0,19]}},".comment-text":{"":{fontWeight:["400",0,0,20],fontSize:["26rpx",0,0,20],color:["#333333",0,0,20],lineHeight:["46rpx",0,0,20]}},".photos":{"":{display:["flex",0,0,22],flexDirection:["row",0,0,22],flexWrap:["wrap",0,0,22],marginTop:["20rpx",0,0,22],position:["relative",0,0,22]}},".photo":{"":{width:["194rpx",0,0,23],height:["194rpx",0,0,23],borderRadius:["6rpx",0,0,23],marginRight:[1.1,0,0,23],marginBottom:["6rpx",0,0,23]}},".photo-third":{"":{marginRight:[0,0,0,27]}},".more":{"":{display:["flex",0,0,29],flexDirection:["row",0,0,29],alignItems:["center",0,0,29],justifyContent:["center",0,0,29],width:["59rpx",0,0,29],height:["28rpx",0,0,29],backgroundColor:["rgba(51,51,51,0.4)",0,0,29],borderRadius:["14rpx",0,0,29],position:["absolute",0,0,29],bottom:["10rpx",0,0,29],right:["10rpx",0,0,29]}},".more-img":{"":{width:["23rpx",0,0,30],height:["17rpx",0,0,30],marginRight:["5rpx",0,0,30]}},".more-text":{"":{fontWeight:["400",0,0,31],fontSize:["22rpx",0,0,31],color:["#FFFFFF",0,0,31],lineHeight:["30rpx",0,0,31]}},".foot-btn":{"":{fontWeight:["500",0,0,33],fontSize:["24rpx",0,0,33],color:["#0751ff",0,0,33],lineHeight:["33rpx",0,0,33]}},".foot-btn-img":{"":{width:["18rpx",0,0,34],height:["18rpx",0,0,34],marginLeft:["10rpx",0,0,34]}},".btnImg2":{"":{transform:["rotate(180deg)",0,0,35]}},"@VERSION":2}},function(e,t){e.exports={".evaluationList":{"":{backgroundColor:["#ffffff",0,0,1],overflow:["hidden",0,0,1],marginTop:["0rpx",0,0,1],marginRight:["24rpx",0,0,1],marginBottom:["20rpx",0,0,1],marginLeft:["24rpx",0,0,1],borderRadius:["16rpx",0,0,1]}},".evaluationList-header":{"":{paddingTop:[0,0,0,3],paddingRight:["20rpx",0,0,3],paddingBottom:[0,0,0,3],paddingLeft:["20rpx",0,0,3],marginTop:["21rpx",0,0,3],marginBottom:["6rpx",0,0,3],display:["flex",0,0,3],flexDirection:["row",0,0,3],alignItems:["center",0,0,3],justifyContent:["space-between",0,0,3]}},".header-left-text":{"":{fontWeight:["500",0,0,7],fontSize:["30rpx",0,0,7],color:["#333333",0,0,7],lineHeight:["42rpx",0,0,7]}},".evaluationList-header-right":{"":{display:["flex",0,0,9],flexDirection:["row",0,0,9],alignItems:["center",0,0,9]}},".header-right-text":{"":{fontWeight:["400",0,0,11],fontSize:["24rpx",0,0,11],color:["#333333",0,0,11],lineHeight:["33rpx",0,0,11]}},".header-right-img":{"":{width:["10rpx",0,0,13],height:["19rpx",0,0,13],marginLeft:["10rpx",0,0,13],mode:["widthFix",0,0,13]}},"@VERSION":2}},function(e,t,r){"use strict";r.r(t);var n=r(51),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(15)),o=n(r(16)),a=n(r(243)),s={name:"uv-line",mixins:[i.default,o.default,a.default],computed:{lineStyle:function(){var e={};return e.margin=this.margin,"row"===this.direction?(e.borderBottomWidth="1px",e.borderBottomStyle=this.dashed?"dashed":"solid",e.width=this.$uv.addUnit(this.length),this.hairline&&(e.transform="scaleY(0.5)")):(e.borderLeftWidth="1px",e.borderLeftStyle=this.dashed?"dashed":"solid",e.height=this.$uv.addUnit(this.length),this.hairline&&(e.transform="scaleX(0.5)")),e.borderColor=this.color,this.$uv.deepMerge(e,this.$uv.addStyle(this.customStyle))}}};t.default=s},function(e,t){e.exports={"@VERSION":2}},function(e,t,r){"use strict";r.r(t);var n=r(54),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(15)),o=n(r(16)),a=n(r(244)),s={name:"uv-divider",mixins:[i.default,o.default,a.default],emits:["click"],computed:{textStyle:function(){var e={};return e.fontSize=this.$uv.addUnit(this.textSize),e.color=this.textColor,e},leftLineStyle:function(){var e={};return"left"===this.textPosition?e.width="80rpx":e.flex=1,e},rightLineStyle:function(){var e={};return"right"===this.textPosition?e.width="80rpx":e.flex=1,e}},methods:{click:function(){this.$emit("click")}}};t.default=s},function(e,t){e.exports={".uv-divider":{"":{flexDirection:["row",0,0,16],alignItems:["center",0,0,16],marginTop:["15",0,0,16],marginRight:[0,0,0,16],marginBottom:["15",0,0,16],marginLeft:[0,0,0,16]}},".uv-divider__text":{"":{marginTop:[0,0,0,17],marginRight:["15",0,0,17],marginBottom:[0,0,0,17],marginLeft:["15",0,0,17]}},".uv-divider__dot":{"":{fontSize:["12",0,0,18],marginTop:[0,0,0,18],marginRight:["12",0,0,18],marginBottom:[0,0,0,18],marginLeft:["12",0,0,18],color:["#c0c4cc",0,0,18]}},"@VERSION":2}},function(e,t,r){"use strict";r.r(t);var n=r(57),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(25)),o=n(r(5)),a=n(r(6)),s=n(r(15)),c=n(r(16)),u=r(246);function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};e.duration&&(this.durationTime=e.duration),this.animation=(0,u.createAnimation)(Object.assign(this.config,e),this)},onClick:function(){this.$emit("click",{detail:this.isShow})},step:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.animation){for(var n in t)try{var a;if("object"===(0,o.default)(t[n]))(a=this.animation)[n].apply(a,(0,i.default)(t[n]));else this.animation[n](t[n])}catch(t){e("error","\u65b9\u6cd5 ".concat(n," \u4e0d\u5b58\u5728")," at uni_modules/uv-transition/components/uv-transition/uv-transition.vue:166")}return this.animation.step(r),this}},run:function(e){this.animation&&this.animation.run(e)},open:function(){var e=this;clearTimeout(this.timer),this.transform="",this.isShow=!0;var t=this.styleInit(!1),r=t.opacity,n=t.transform;void 0!==r&&(this.opacity=r),this.transform=n,this.$nextTick((function(){e.timer=setTimeout((function(){e.animation=(0,u.createAnimation)(e.config,e),e.tranfromInit(!1).step(),e.cellChild?e.opacity=1:e.animation.run(),e.$emit("change",{detail:e.isShow})}),20)}))},close:function(e){var t=this;this.animation&&this.tranfromInit(!0).step().run((function(){t.isShow=!1,t.animationData=null,t.animation=null;var e=t.styleInit(!1),r=e.opacity,n=e.transform;t.opacity=r||1,t.transform=n,t.$emit("change",{detail:t.isShow})}))},styleInit:function(e){var t=this,r={transform:""},n=function(e,n){"fade"===n?r.opacity=t.animationType(e)[n]:r.transform+=t.animationType(e)[n]+" "};return"string"==typeof this.mode?n(e,this.mode):this.mode.forEach((function(t){n(e,t)})),r},tranfromInit:function(e){var t=this,r=function(e,r){var n=null;"fade"===r?n=e?0:1:(n=e?"-100%":"0","zoom-in"===r&&(n=e?.8:1),"zoom-out"===r&&(n=e?1.2:1),"slide-right"===r&&(n=e?"100%":"0"),"slide-bottom"===r&&(n=e?"100%":"0")),t.animation[t.animationMode()[r]](n)};return"string"==typeof this.mode?r(e,this.mode):this.mode.forEach((function(t){r(e,t)})),this.animation},animationType:function(e){return{fade:e?1:0,"slide-top":"translateY(".concat(e?"0":"-100%",")"),"slide-right":"translateX(".concat(e?"0":"100%",")"),"slide-bottom":"translateY(".concat(e?"0":"100%",")"),"slide-left":"translateX(".concat(e?"0":"-100%",")"),"zoom-in":"scaleX(".concat(e?1:.8,") scaleY(").concat(e?1:.8,")"),"zoom-out":"scaleX(".concat(e?1:1.2,") scaleY(").concat(e?1:1.2,")")}},animationMode:function(){return{fade:"opacity","slide-top":"translateY","slide-right":"translateX","slide-bottom":"translateY","slide-left":"translateX","zoom-in":"scale","zoom-out":"scale"}},toLine:function(e){return e.replace(/([A-Z])/g,"-$1").toLowerCase()}}};t.default=d}).call(this,r(2).default)},function(e,t,r){"use strict";r.r(t);var n=r(59),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(15)),o=n(r(16)),a=n(r(247)),s={name:"uv-overlay",emits:["click"],mixins:[i.default,o.default,a.default],watch:{show:function(e){}},computed:{overlayStyle:function(){var e={position:"fixed",top:0,left:0,right:0,zIndex:this.zIndex,bottom:0,"background-color":"rgba(0, 0, 0, ".concat(this.opacity,")")};return this.$uv.deepMerge(e,this.$uv.addStyle(this.customStyle))}},methods:{clickHandler:function(){this.$emit("click")},clear:function(){}}};t.default=s},function(e,t){e.exports={"@VERSION":2}},function(e,t,r){"use strict";r.r(t);var n=r(62),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(15)),o=n(r(16)),a=n(r(249)),s={name:"uv-status-bar",mixins:[i.default,o.default,a.default],data:function(){return{}},computed:{style:function(){var e={};return e.height=this.$uv.addUnit(this.$uv.sys().statusBarHeight,"px"),this.bgColor&&(this.bgColor.indexOf("gradient")>-1?e.backgroundImage=this.bgColor:e.background=this.bgColor),this.$uv.deepMerge(e,this.$uv.addStyle(this.customStyle))}}};t.default=s},function(e,t){e.exports={"@VERSION":2}},function(e,t,r){"use strict";r.r(t);var n=r(65),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(15)),o=n(r(16)),a={name:"uv-safe-bottom",mixins:[i.default,o.default],data:function(){return{safeAreaBottomHeight:0,isNvue:!1}},computed:{style:function(){var e,t,r={};return r.height=this.$uv.addUnit(null===(e=this.$uv.sys())||void 0===e||null===(t=e.safeAreaInsets)||void 0===t?void 0:t.bottom,"px"),this.$uv.deepMerge(r,this.$uv.addStyle(this.customStyle))}},mounted:function(){this.isNvue=!0}};t.default=a},function(e,t){e.exports={"@VERSION":2}},function(e,t,r){"use strict";r.r(t);var n=r(68),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(15)),o=n(r(16)),a=n(r(252)),s=n(r(253)),c=n(r(254));weex.requireModule("dom").addRule("fontFace",{fontFamily:"uvicon-iconfont",src:"url('"+a.default+"')"});var u={name:"uv-icon",emits:["click"],mixins:[i.default,o.default,c.default],data:function(){return{colorType:["primary","success","info","error","warning"]}},computed:{uClasses:function(){var e=[];return e.push(this.customPrefix),e.push(this.customPrefix+"-"+this.name),this.color&&this.colorType.includes(this.color)&&e.push("uv-icon__icon--"+this.color),e},iconStyle:function(){var e={};return e={fontSize:this.$uv.addUnit(this.size),lineHeight:this.$uv.addUnit(this.size),fontWeight:this.bold?"bold":"normal",top:this.$uv.addUnit(this.top)},this.color&&!this.colorType.includes(this.color)&&(e.color=this.color),e},isImg:function(){var e=this.name.indexOf("data:")>-1&&this.name.indexOf("base64")>-1;return-1!==this.name.indexOf("/")||e},imgStyle:function(){var e={};return e.width=this.width?this.$uv.addUnit(this.width):this.$uv.addUnit(this.size),e.height=this.height?this.$uv.addUnit(this.height):this.$uv.addUnit(this.size),e},icon:function(){var e=s.default["uvicon-"+this.name];return e?e?unescape("%u".concat(e)):["uvicon"].indexOf(this.customPrefix)>-1?this.name:"":e?unescape("%u".concat(e)):["uvicon"].indexOf(this.customPrefix)>-1?unescape("%u".concat(this.name)):""}},methods:{clickHandler:function(e){this.$emit("click",this.index),this.stop&&this.preventEvent(e)}}};t.default=u},function(e,t){e.exports={".uv-icon":{"":{alignItems:["center",0,0,16]}},".uv-icon--left":{"":{flexDirection:["row-reverse",0,0,17],alignItems:["center",0,0,17]}},".uv-icon--right":{"":{flexDirection:["row",0,0,18],alignItems:["center",0,0,18]}},".uv-icon--top":{"":{flexDirection:["column-reverse",0,0,19],justifyContent:["center",0,0,19]}},".uv-icon--bottom":{"":{flexDirection:["column",0,0,20],justifyContent:["center",0,0,20]}},".uv-icon__icon":{"":{fontFamily:["uvicon-iconfont",0,0,21],position:["relative",0,0,21],flexDirection:["row",0,0,21],alignItems:["center",0,0,21]}},".uv-icon__icon--primary":{"":{color:["#3c9cff",0,0,22]}},".uv-icon__icon--success":{"":{color:["#5ac725",0,0,23]}},".uv-icon__icon--error":{"":{color:["#f56c6c",0,0,24]}},".uv-icon__icon--warning":{"":{color:["#f9ae3d",0,0,25]}},".uv-icon__icon--info":{"":{color:["#909399",0,0,26]}},"@VERSION":2}},function(e,t,r){"use strict";r.r(t);var n=r(71),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i,o,a=n(r(6)),s=n(r(15)),c=n(r(16));function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var l={name:"uv-popup",components:{},mixins:[s.default,c.default],emits:["change","maskClick"],props:function(e){for(var t=1;t=500&&this.popupHeight>=500},bg:function(){return""===this.bgColor||"none"===this.bgColor||this.$uv.getPx(this.round)>0?"transparent":this.bgColor},contentStyle:function(){var e={};if(this.bgColor&&(e.backgroundColor=this.bg),this.round){var t=this.$uv.addUnit(this.round),r=this.direction?this.direction:this.mode;e.backgroundColor=this.bgColor,"top"===r?(e.borderBottomLeftRadius=t,e.borderBottomRightRadius=t):"bottom"===r?(e.borderTopLeftRadius=t,e.borderTopRightRadius=t):"center"===r&&(e.borderRadius=t)}return this.$uv.deepMerge(e,this.$uv.addStyle(this.customStyle))}},destroyed:function(){this.setH5Visible()},created:function(){this.messageChild=null,this.clearPropagation=!1},methods:{setH5Visible:function(){},closeMask:function(){this.maskShow=!1},clear:function(e){this.clearPropagation=!0},open:function(e){if(!this.showPopup){if(e&&-1!==["top","center","bottom","left","right","message","dialog","share"].indexOf(e)?this.direction=e:e=this.mode,!this.config[e])return this.$uv.error("\u7f3a\u5c11\u7c7b\u578b\uff1a".concat(e));this[this.config[e]](),this.$emit("change",{show:!0,type:e})}},close:function(e){var t=this;this.showTrans=!1,this.$emit("change",{show:!1,type:this.mode}),clearTimeout(this.timer),this.timer=setTimeout((function(){t.showPopup=!1}),300)},touchstart:function(){this.clearPropagation=!1},onTap:function(){this.clearPropagation?this.clearPropagation=!1:(this.$emit("maskClick"),this.closeOnClickOverlay&&this.close())},top:function(e){var t=this;this.popupClass=this.isDesktop?"fixforpc-top":"top",this.ani=["slide-top"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,left:0,right:0,backgroundColor:this.bg},e||(this.showPopup=!0,this.showTrans=!0,this.$nextTick((function(){t.messageChild&&"message"===t.mode&&t.messageChild.timerClose()})))},bottom:function(e){this.popupClass="bottom",this.ani=["slide-bottom"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,left:0,right:0,bottom:0,backgroundColor:this.bg},e||(this.showPopup=!0,this.showTrans=!0)},center:function(e){this.popupClass="center",this.ani=this.zoom?["zoom-in","fade"]:["fade"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,bottom:0,left:0,right:0,top:0,justifyContent:"center",alignItems:"center"},e||(this.showPopup=!0,this.showTrans=!0)},left:function(e){this.popupClass="left",this.ani=["slide-left"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,left:0,bottom:0,top:0,backgroundColor:this.bg},e||(this.showPopup=!0,this.showTrans=!0)},right:function(e){this.popupClass="right",this.ani=["slide-right"],this.transitionStyle={position:"fixed",zIndex:this.zIndex,bottom:0,right:0,top:0,backgroundColor:this.bg},e||(this.showPopup=!0,this.showTrans=!0)}}};t.default=l},function(e,t){e.exports={".uv-popup":{"":{position:["fixed",0,0,16]},".top":{top:[0,0,1,17]},".left":{top:[0,0,1,17]},".right":{top:[0,0,1,17]}},".uv-popup__content":{".uv-popup ":{position:["relative",0,1,18]},".uv-popup .left":{paddingTop:[0,0,2,19],flex:[1,0,2,19]},".uv-popup .right":{paddingTop:[0,0,2,19],flex:[1,0,2,19]}},".uv-popup__content__close":{".uv-popup ":{position:["absolute",0,1,20]}},".uv-popup__content__close--hover":{".uv-popup ":{opacity:[.4,0,1,21]}},".uv-popup__content__close--top-left":{".uv-popup ":{top:["15",0,1,22],left:["15",0,1,22]}},".uv-popup__content__close--top-right":{".uv-popup ":{top:["15",0,1,23],right:["15",0,1,23]}},".uv-popup__content__close--bottom-left":{".uv-popup ":{bottom:["15",0,1,24],left:["15",0,1,24]}},".uv-popup__content__close--bottom-right":{".uv-popup ":{right:["15",0,1,25],bottom:["15",0,1,25]}},".fixforpc-top":{"":{top:[0,0,0,26]}},"@VERSION":2}},function(e,t,r){"use strict";r.r(t);var n=r(74),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(12)),o={data:function(){return{isFirstOPen:!0,sureTimeObj:{},dateList:["\u4eca\u5929","\u660e\u5929","\u540e\u5929"],selectedTimeIndex:"",serviceTimeNum:1,sureTimeDataIndex:null,selectedDateIndex:0,startTimeObj:{serviceTimeNum:"",sureTimeDataIndex:0,selectedDateIndex:0},stateConfig:{1:{class:"state-available",text:"\u53ef\u7ea6"},2:{class:"state-full",text:"\u7ea6\u6ee1"},3:{class:"state-rest",text:"\u4f11\u606f"},4:{class:"state-locked",text:"\u9501\u5b9a"},5:{class:"state-unavailable",text:"\u4e0d\u53ef\u7528"}}}},props:{timeOptions:{type:Array,default:function(){return[]}},firstTimeIndex:{type:Number,default:0},firstDataIndex:{type:Number,default:1},service:{type:Object,default:function(){return{}}},publish_user_id:{type:Number,default:0},server_type:{type:Number,default:0}},watch:{service:{handler:function(e){this.serviceTimeNum=Math.max(1,Math.ceil((e.server_time||0)/10))},deep:!0,immediate:!0}},created:function(){},mounted:function(){},methods:{openTime:function(){e("log","\u6253\u5f00\u65f6\u95f4\u9009\u62e9\u5f39\u6846",this.selectedDateIndex," at components/select-time-page/select-time-page.vue:162"),this.isFirstOPen=!1,this.startTimeObj={selectedTimeIndex:this.selectedTimeIndex,sureTimeDataIndex:this.sureTimeDataIndex,selectedDateIndex:this.selectedDateIndex},this.$refs.popup.open("bottom")},getStateText:function(e){var t;return(null===(t=this.stateConfig[e])||void 0===t?void 0:t.text)||"\u672a\u77e5"},getItemClass:function(e){var t,r=e||0;return(null===(t=this.stateConfig[r])||void 0===t?void 0:t.class)||"state-unknown"},selectDate:function(e){this.selectedDateIndex=e},selectTime:function(t,r){var n=this;if(1===t.state){var o={user_syr_id:this.publish_user_id||this.service.publish_user_id,reserve_time:this.timeOptions[this.selectedDateIndex][r].time,server_id:this.service.id,server_type:this.server_type};i.default.post("/user/reserve/timeCheck",o).then((function(e){200==e.code?(n.selectedTimeIndex=r,n.sureTimeDataIndex=n.selectedDateIndex,n.sureTimeObj={selectedDateIndex:n.selectedDateIndex,selectedTimeIndex:n.selectedTimeIndex,time:n.timeOptions[n.selectedDateIndex][n.selectedTimeIndex],res:e},n.$emit("selectTime",n.sureTimeObj)):uni.showToast({title:"\u5f53\u524d\u65f6\u95f4\u4e0d\u53ef\u9884\u7ea6",icon:"none",duration:1e3})})).catch((function(t){e("log","\u62a5\u9519",t," at components/select-time-page/select-time-page.vue:220")}))}},sureTime:function(){this.$refs.popup.close(),this.$emit("sureTime",this.sureTimeObj)},handelGetTimeArr:function(){var e={selectedDateIndex:this.selectedDateIndex,selectedTimeIndex:this.selectedTimeIndex,time:this.timeOptions[this.selectedDateIndex][this.selectedTimeIndex]};this.$emit("getTimeArr",e)},closeTime:function(){this.selectedTimeIndex=this.startTimeObj.selectedTimeIndex,this.sureTimeDataIndex=this.startTimeObj.sureTimeDataIndex,this.selectedDateIndex=this.startTimeObj.selectedDateIndex,this.$refs.popup.close(),this.$emit("closeTime")}}};t.default=o}).call(this,r(2).default)},function(e,t){e.exports={".time-popup":{"":{backgroundColor:["#ffffff",0,0,2],borderTopLeftRadius:["24rpx",0,0,2],borderTopRightRadius:["24rpx",0,0,2],borderBottomRightRadius:[0,0,0,2],borderBottomLeftRadius:[0,0,0,2],overflow:["hidden",0,0,2],transform:["translateY(0)",0,0,2],transitionProperty:["transform",0,0,2],transitionDuration:[300,0,0,2],transitionTimingFunction:["ease",0,0,2],transitionDelay:[0,0,0,2],zIndex:[999,0,0,2]}},".popup-header":{"":{display:["flex",0,0,3],flexDirection:["row",0,0,3],justifyContent:["space-between",0,0,3],alignItems:["center",0,0,3],paddingTop:["30rpx",0,0,3],paddingRight:["30rpx",0,0,3],paddingBottom:["36rpx",0,0,3],paddingLeft:["30rpx",0,0,3]}},".popup-close":{"":{fontFamily:["PingFangSC, PingFang SC",0,0,4],fontWeight:["400",0,0,4],fontSize:["26rpx",0,0,4],color:["#999999",0,0,4],lineHeight:["37rpx",0,0,4],textAlign:["left",0,0,4],fontStyle:["normal",0,0,4]}},".popup-title":{"":{fontFamily:["PingFangSC, PingFang SC",0,0,5],fontWeight:["500",0,0,5],fontSize:["30rpx",0,0,5],color:["#333333",0,0,5],lineHeight:["42rpx",0,0,5],textAlign:["left",0,0,5],fontStyle:["normal",0,0,5]}},".time-picker-content":{"":{paddingTop:["32rpx",0,0,6],paddingRight:["32rpx",0,0,6],paddingBottom:["32rpx",0,0,6],paddingLeft:["32rpx",0,0,6],display:["flex",0,0,6],flexWrap:["wrap",0,0,6],flexDirection:["row",0,0,6],width:["750rpx",0,0,6]}},".time-picker-content__datas":{"":{display:["flex",0,0,7],flexDirection:["row",0,0,7],flexWrap:["wrap",0,0,7],alignItems:["flex-start",0,0,7],width:["690rpx",0,0,7],justifyContent:["space-between",0,0,7],marginBottom:["30rpx",0,0,7]}},".time-picker-content__datas__date__item":{"":{width:["214rpx",0,0,8],height:["70rpx",0,0,8],backgroundColor:["#f7f8fa",0,0,8],borderRadius:["10rpx",0,0,8],display:["flex",0,0,8],alignItems:["center",0,0,8],justifyContent:["center",0,0,8],position:["relative",0,0,8],overflow:["hidden",0,0,8]}},".time-picker-content__datas__date__item__text":{"":{fontFamily:["PingFangSC, PingFang SC",0,0,9],fontWeight:["400",0,0,9],fontSize:["26rpx",0,0,9],color:["#333333",0,0,9],lineHeight:["37rpx",0,0,9],textAlign:["left",0,0,9],fontStyle:["normal",0,0,9],zIndex:[2,0,0,9],position:["relative",0,0,9]},".active":{color:["#ffffff",0,1,10]}},".time-picker-content__datas__date__item__box":{"":{width:["214rpx",0,0,11],height:["74rpx",0,0,11],position:["absolute",0,0,11],zIndex:[1,0,0,11],marginBottom:["8rpx",0,0,11]}},".time-picker-content__datas__date__item__box__img":{"":{width:["214rpx",0,0,12],height:["74rpx",0,0,12]}},".time-picker-content__time__list":{"":{width:["690rpx",0,0,13],display:["flex",0,0,13],flexDirection:["row",0,0,13],flexWrap:["wrap",0,0,13]}},".time-picker-content__time__list__item":{"":{width:["114rpx",0,0,14],height:["66rpx",0,0,14],display:["flex",0,0,14],flexDirection:["column",0,0,14],alignItems:["center",0,0,14],justifyContent:["center",0,0,14],marginBottom:["26rpx",0,0,14]}},".time-picker-content__time__list__item__text":{"":{fontWeight:["400",0,0,15],fontSize:["30rpx",0,0,15],color:["#333333",0,0,15],lineHeight:["66rpx",0,0,15],textAlign:["center",0,0,15],fontStyle:["normal",0,0,15]},".isActive ":{color:["#e8101e",1,1,25]}},".time-picker-content__time__list__item__state":{"":{fontSize:["20rpx",0,0,16]}},".state-available":{"":{color:["#3c3638",0,0,18]}},".state-full":{"":{color:["#3c3638",0,0,19],backgroundColor:["#e4e9f0",0,0,19]}},".state-rest":{"":{color:["#cdcdcd",0,0,20],backgroundColor:["#f7f8f9",0,0,20]}},".state-locked":{"":{color:["#3c3638",0,0,21],backgroundColor:["#e4e9f0",0,0,21]}},".state-unavailable":{"":{color:["#ffffff",0,0,22],backgroundColor:["#e4e9f0",0,0,22]}},".state-unknown":{"":{color:["#999999",0,0,23],backgroundColor:["#f7f8fa",0,0,23]}},".isActive":{"":{backgroundColor:["rgba(252,67,124,0.08)",0,0,24],color:["#e8101e",1,0,24]}},".firstActive":{"":{borderTopLeftRadius:["51rpx",0,0,27],borderTopRightRadius:["0rpx",0,0,27],borderBottomRightRadius:["0rpx",0,0,27],borderBottomLeftRadius:["51rpx",0,0,27]}},".lastActive":{"":{borderTopLeftRadius:["0rpx",0,0,28],borderTopRightRadius:["51rpx",0,0,28],borderBottomRightRadius:["51rpx",0,0,28],borderBottomLeftRadius:["0rpx",0,0,28]}},".time-picker-content__time__sure":{"":{paddingTop:["39rpx",0,0,29],paddingRight:[0,0,0,29],paddingBottom:["39rpx",0,0,29],paddingLeft:[0,0,0,29],display:["flex",0,0,29],flexDirection:["row",0,0,29],width:["690rpx",0,0,29],justifyContent:["center",0,0,29]}},".time-picker-content__time__sure__box":{"":{width:["648rpx",0,0,30],height:["94rpx",0,0,30],backgroundColor:["#E8101E",0,0,30],borderRadius:["48rpx",0,0,30],display:["flex",0,0,30],alignItems:["center",0,0,30],justifyContent:["center",0,0,30]}},".time-picker-content__time__sure__box__text":{"":{fontFamily:["PingFangSC, PingFang SC",0,0,31],fontWeight:["400",0,0,31],fontSize:["30rpx",0,0,31],color:["#ffffff",0,0,31],lineHeight:["42rpx",0,0,31],textAlign:["center",0,0,31],fontStyle:["normal",0,0,31]}},"@VERSION":2}},function(e,t,r){"use strict";r.r(t);var n=r(77),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={name:"AgreeRadio",props:{isAgree:{type:Boolean,default:!1},yesImg:{type:String,default:"/static/images/agree_y.png"},noImg:{type:String,default:"/static/images/agree_n.png"},radioSize:{type:String,default:"32rpx"}},data:function(){return{}},methods:{changeAgree:function(e){this.$emit("change-agree",e)}}};t.default=n},function(e,t){e.exports={".agree-radio":{"":{width:["32rpx",0,0,0],height:["32rpx",0,0,0]}},".agree-btn":{"":{width:["32rpx",0,0,1],height:["32rpx",0,0,1]}},"@VERSION":2}},,,,function(e,t,r){"use strict";r.d(t,"b",(function(){return n})),r.d(t,"c",(function(){return i})),r.d(t,"a",(function(){}));var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return e.evaluateList.count?r("view",{staticClass:["evaluationList"]},[r("view",{staticClass:["evaluationList-header"]},[r("view",{staticClass:["evaluationList-header-left"]},[r("u-text",{staticClass:["header-left-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8bc4\u4ef7("+e._s(e.evaluateList.count)+")")])]),r("view",{staticClass:["evaluationList-header-right"],on:{click:e.goList}},[r("u-text",{staticClass:["header-right-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u67e5\u770b\u5168\u90e8")]),r("u-image",{staticClass:["header-right-img"],attrs:{src:"/static/images/evaluate/right.png"}})],1)]),e._l(e.evaluateList.list,(function(e,t){return r("evaluationDetail",{key:t,attrs:{evaluateObj:e}})}))],2):e._e()},i=[]},,function(e,t,r){"use strict";r.d(t,"b",(function(){return n})),r.d(t,"c",(function(){return i})),r.d(t,"a",(function(){}));var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("view",{staticClass:["evaluation-detail"],on:{click:e.goDetail}},[r("view",{staticClass:["user-section"]},[r("view",{staticClass:["user-info"]},[r("u-image",{staticClass:["avatar"],attrs:{src:e.evaluatorPhoto,mode:"aspectFill"}}),r("u-text",{staticClass:["username"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.evaluatorName))])],1),r("u-text",{staticClass:["time"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.formattedCreateTime))])]),r("view",{staticClass:["user-contant"]},[r("view",{staticClass:["rating-header"]},[r("u-image",{staticClass:["tag"],attrs:{src:e.getComposite,mode:"heightFix"}}),r("view",{staticClass:["stars"]},e._l(5,(function(t){return r("u-image",{key:t,staticClass:["star-icon"],attrs:{src:e.getStar(t),mode:"aspectFill"}})})),1),r("u-text",{staticClass:["score"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.evaluateObj.composite)+"\u5206")])],1),r("view",{staticClass:["comment"]},[r("u-text",{staticClass:["comment-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.evaluateObj.describe.length>60?e.evaluateObj.describe.slice(0,59):e.evaluateObj.describe))])]),e.isAllImg?r("view",{staticClass:["photos"]},e._l(e.photos,(function(t,n){return r("u-image",{key:n,staticClass:["photo"],class:{"photo-third":(n+1)%3==0},attrs:{src:t,mode:"aspectFill"},on:{click:function(t){e.imgPreview(n)}}})})),1):r("view",{staticClass:["photos"]},[e._l(e.photos.slice(0,3),(function(t,n){return r("u-image",{key:n,staticClass:["photo"],class:{"photo-third":(n+1)%3==0},attrs:{src:t,mode:"aspectFill"},on:{click:function(t){e.imgPreview(n)}}})})),e.photos.length>3?r("view",{staticClass:["more"]},[r("u-image",{staticClass:["more-img"],attrs:{src:"/static/images/evaluate/more.png",mode:"aspectFill"}}),r("u-text",{staticClass:["more-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.photos.length))])],1):e._e()],2)])])},i=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return n}));var n={uvLine:r(242).default},i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("view",{staticClass:["uv-divider"],style:[e.$uv.addStyle(e.customStyle)],on:{click:e.click}},[r("uv-line",{attrs:{color:e.lineColor,customStyle:e.leftLineStyle,hairline:e.hairline,dashed:e.dashed}}),e.dot?r("u-text",{staticClass:["uv-divider__dot"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u25cf")]):e.text?r("u-text",{staticClass:["uv-divider__text"],style:[e.textStyle],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.text))]):e._e(),r("uv-line",{attrs:{color:e.lineColor,customStyle:e.rightLineStyle,hairline:e.hairline,dashed:e.dashed}})],1)},o=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return n}));var n={uvOverlay:r(245).default,uvTransition:r(112).default,uvStatusBar:r(248).default,uvSafeBottom:r(250).default,uvIcon:r(251).default},i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return e.showPopup?r("view",{staticClass:["uv-popup"],class:[e.popupClass,e.isDesktop?"fixforpc-z-index":""],style:[{zIndex:e.zIndex}]},[r("view",{on:{touchstart:e.touchstart}},[e.maskShow&&e.overlay?r("uv-overlay",{key:"1",attrs:{show:e.showTrans,duration:e.duration,customStyle:e.overlayStyle,opacity:e.overlayOpacity,zIndex:e.zIndex},on:{click:e.onTap}}):e._e(),r("uv-transition",{key:"2",attrs:{mode:e.ani,name:"content",customStyle:e.transitionStyle,duration:e.duration,show:e.showTrans},on:{click:e.onTap}},[r("view",{staticClass:["uv-popup__content"],class:[e.popupClass],style:[e.contentStyle],on:{click:e.clear}},[e.safeAreaInsetTop?r("uv-status-bar"):e._e(),e._t("default"),e.safeAreaInsetBottom?r("uv-safe-bottom"):e._e(),e.closeable?r("view",{staticClass:["uv-popup__content__close"],class:["uv-popup__content__close--"+e.closeIconPos],attrs:{hoverClass:"uv-popup__content__close--hover",hoverStayTime:"150"},on:{click:e.close}},[r("uv-icon",{attrs:{name:"close",color:"#909399",size:"18",bold:!0}})],1):e._e()],2)])],1)]):e._e()},o=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return n}));var n={uniPopup:r(118).default},i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("uni-popup",{ref:"popup",attrs:{type:"bottom",borderRadius:"20rpx"}},[r("view",{staticClass:["time-popup"]},[r("view",{staticClass:["popup-header"]},[r("u-text",{staticClass:["popup-title"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8bf7\u9009\u62e9\u670d\u52a1\u65f6\u95f4")]),r("u-text",{staticClass:["popup-close"],appendAsTree:!0,attrs:{append:"tree"},on:{click:e.closeTime}},[e._v("\u53d6\u6d88")])]),r("view",{staticClass:["time-picker-content"]},[r("view",{staticClass:["time-picker-content__datas"]},e._l(e.dateList,(function(t,n){return r("view",{key:n,staticClass:["time-picker-content__datas__date__item"],on:{click:function(t){e.selectDate(n)}}},[r("view",{staticClass:["time-picker-content__datas__date__item__box"]},[e.selectedDateIndex==n?r("u-image",{staticClass:["time-picker-content__datas__date__item__box__img"],attrs:{src:"/static/images/dataBox.png"}}):e._e()],1),r("u-text",{staticClass:["time-picker-content__datas__date__item__text"],class:e.selectedDateIndex===n?"active":"",appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t))])])})),0),r("scroll-view",{staticStyle:{height:"600rpx",width:"690rpx"},attrs:{scrollY:"true"}},[e.timeOptions[e.selectedDateIndex]&&e.timeOptions[e.selectedDateIndex].length?r("view",{staticClass:["time-picker-content__time__list"]},e._l(e.timeOptions[e.selectedDateIndex],(function(t,n){return r("view",{key:n,staticClass:["time-picker-content__time__list__item"],class:[e.getItemClass(t.state||0),{lastActive:e.selectedTimeIndex+e.serviceTimeNum==n,firstActive:e.selectedTimeIndex==n,isActive:n>=e.selectedTimeIndex&&n<=e.selectedTimeIndex+e.serviceTimeNum&&e.sureTimeDataIndex===e.selectedDateIndex&&null!==e.selectedTimeIndex}],on:{click:function(r){e.selectTime(t,n)}}},[r("u-text",{staticClass:["time-picker-content__time__list__item__text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.show_time))])])})),0):e._e()]),r("view",{staticClass:["time-picker-content__time__sure"]},[r("view",{staticClass:["time-picker-content__time__sure__box"],on:{click:e.sureTime}},[r("u-text",{staticClass:["time-picker-content__time__sure__box__text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u786e\u8ba4")])])])],1)])])},o=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return n})),r.d(t,"c",(function(){return i})),r.d(t,"a",(function(){}));var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("view",{staticClass:["agree-radio"],style:{width:e.radioSize,height:e.radioSize}},[e.isAgree?r("u-image",{staticClass:["agree-btn"],style:{width:e.radioSize,height:e.radioSize},attrs:{src:e.yesImg,mode:"aspectFit"},on:{click:function(t){e.changeAgree(!1)}}}):r("u-image",{staticClass:["agree-btn"],style:{width:e.radioSize,height:e.radioSize},attrs:{src:e.noImg,mode:"aspectFit"},on:{click:function(t){e.changeAgree(!0)}}})],1)},i=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return n})),r.d(t,"c",(function(){return i})),r.d(t,"a",(function(){}));var n=function(){var e=this.$createElement;return(this._self._c||e)("view",{staticClass:["uv-line"],style:[this.lineStyle]})},i=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return n}));var n={uvTransition:r(112).default},i=function(){var e=this.$createElement;return(this._self._c||e)("uv-transition",{attrs:{show:this.show,mode:"fade",customClass:"uv-overlay",duration:this.duration,customStyle:this.overlayStyle},on:{click:this.clickHandler,touchmove:this.clear}},[this._t("default")],2)},o=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return n})),r.d(t,"c",(function(){return i})),r.d(t,"a",(function(){}));var n=function(){var e=this.$createElement,t=this._self._c||e;return this.isShow?t("view",{ref:"ani",class:this.customClass,style:this.transformStyles,attrs:{animation:this.animationData},on:{click:this.onClick}},[this._t("default")],2):this._e()},i=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return n})),r.d(t,"c",(function(){return i})),r.d(t,"a",(function(){}));var n=function(){var e=this.$createElement;return(this._self._c||e)("view",{staticClass:["uv-status-bar"],style:[this.style]},[this._t("default")],2)},i=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return n})),r.d(t,"c",(function(){return i})),r.d(t,"a",(function(){}));var n=function(){var e=this.$createElement;return(this._self._c||e)("view",{staticClass:["uv-safe-bottom"],class:[!this.isNvue&&"uv-safe-area-inset-bottom"],style:[this.style]})},i=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return n})),r.d(t,"c",(function(){return i})),r.d(t,"a",(function(){}));var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("view",{staticClass:["uv-icon"],class:["uv-icon--"+e.labelPos],on:{click:e.clickHandler}},[e.isImg?r("u-image",{staticClass:["uv-icon__img"],style:[e.imgStyle,e.$uv.addStyle(e.customStyle)],attrs:{src:e.name,mode:e.imgMode}}):r("u-text",{staticClass:["uv-icon__icon"],class:e.uClasses,style:[e.iconStyle,e.$uv.addStyle(e.customStyle)],appendAsTree:!0,attrs:{hoverClass:e.hoverClass,append:"tree"}},[e._v(e._s(e.icon))]),""!==e.label?r("u-text",{staticClass:["uv-icon__label"],style:{color:e.labelColor,fontSize:e.$uv.addUnit(e.labelSize),marginLeft:"right"==e.labelPos?e.$uv.addUnit(e.space):0,marginTop:"bottom"==e.labelPos?e.$uv.addUnit(e.space):0,marginRight:"left"==e.labelPos?e.$uv.addUnit(e.space):0,marginBottom:"top"==e.labelPos?e.$uv.addUnit(e.space):0},appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.label))]):e._e()],1)},i=[]},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.$parent=c,t.addStyle=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"object";if((0,a.empty)(e)||"object"===(0,o.default)(e)&&"object"===t||"string"===t&&"string"==typeof e)return e;if("object"===t){for(var r=(e=p(e)).split(";"),n={},i=0;i0&&void 0!==arguments[0]?arguments[0]:"auto",c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null!==(e=uni)&&void 0!==e&&null!==(t=e.$uv)&&void 0!==t&&null!==(r=t.config)&&void 0!==r&&r.unit?null===(n=uni)||void 0===n||null===(i=n.$uv)||void 0===i||null===(o=i.config)||void 0===o?void 0:o.unit:"px";return s=String(s),(0,a.number)(s)?"".concat(s).concat(c):s},t.deepClone=u,t.deepMerge=function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t=u(t),"object"!==(0,o.default)(t)||null===t||"object"!==(0,o.default)(r)||null===r)return t;var n=Array.isArray(t)?t.slice():Object.assign({},t);for(var i in r)if(r.hasOwnProperty(i)){var a=r[i],s=n[i];a instanceof Date?n[i]=new Date(a):a instanceof RegExp?n[i]=new RegExp(a):a instanceof Map?n[i]=new Map(a):a instanceof Set?n[i]=new Set(a):"object"===(0,o.default)(a)&&null!==a?n[i]=e(s,a):n[i]=a}return n},t.error=function(e){0},t.formValidate=function(e,t){var r=c.call(e,"uv-form-item"),n=c.call(e,"uv-form");r&&n&&n.validateField(r.prop,(function(){}),t)},t.getDuration=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=parseInt(e);if(t)return/s$/.test(e)?e:"".concat(e,e>30?"ms":"s");return/ms$/.test(e)?r:/s$/.test(e)?r>30?r:1e3*r:r},t.getHistoryPage=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=getCurrentPages(),r=t.length;return t[r-1+e]},t.getProperty=function(e,t){if(!e)return;if("string"!=typeof t||""===t)return"";if(-1!==t.indexOf(".")){for(var r=t.split("."),n=e[r[0]]||{},i=1;i1&&void 0!==arguments[1]&&arguments[1];if((0,a.number)(e))return t?"".concat(e,"px"):Number(e);if(/(rpx|upx)$/.test(e))return t?"".concat(uni.upx2px(parseInt(e)),"px"):Number(uni.upx2px(parseInt(e)));return t?"".concat(parseInt(e),"px"):parseInt(e)},t.guid=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:32,t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=[];if(r=r||n.length,e)for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:",";e="".concat(e).replace(/[^0-9+-Ee.]/g,"");var i=isFinite(+e)?+e:0,o=isFinite(+t)?Math.abs(t):0,a=void 0===n?",":n,c=void 0===r?".":r,u="";u=(o?(0,s.round)(i,o)+"":"".concat(Math.round(i))).split(".");var l=/(-?\d+)(\d{3})/;for(;l.test(u[0]);)u[0]=u[0].replace(l,"$1".concat(a,"$2"));(u[1]||"").length0&&void 0!==arguments[0]?arguments[0]:{},t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"brackets",n=t?"?":"",i=[];-1==["indices","brackets","repeat","comma"].indexOf(r)&&(r="brackets");var o=function(t){var n=e[t];if(["",void 0,null].indexOf(n)>=0)return"continue";if(n.constructor===Array)switch(r){case"indices":for(var o=0;o=0&&t>0&&t>=e){var r=t-e+1;return Math.floor(Math.random()*r+e)}return 0},t.randomArray=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return e.sort((function(){return Math.random()-.5}))},t.range=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return Math.max(e,Math.min(t,Number(r)))},t.setConfig=function(e){var t=e.props,r=void 0===t?{}:t,n=e.config,i=void 0===n?{}:n,o=e.color,a=void 0===o?{}:o,s=e.zIndex,c=void 0===s?{}:s,u=uni.$uv.deepMerge;uni.$uv.config=u(uni.$uv.config,i),uni.$uv.props=u(uni.$uv.props,r),uni.$uv.color=u(uni.$uv.color,a),uni.$uv.zIndex=u(uni.$uv.zIndex,c)},t.setProperty=function(e,t,r){if(!e)return;if("string"!=typeof t||""===t);else if(-1!==t.indexOf(".")){var n=t.split(".");!function e(t,r,n){if(1!==r.length)for(;r.length>1;){var i=r[0];t[i]&&"object"===(0,o.default)(t[i])||(t[i]={});r.shift();e(t[i],r,n)}else t[r[0]]=n}(e,n,r)}else e[t]=r},t.sleep=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:30;return new Promise((function(t){setTimeout((function(){t()}),e)}))},t.sys=function(){return uni.getSystemInfoSync()},t.timeFormat=l,t.timeFrom=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"yyyy-mm-dd";null==e&&(e=Number(new Date));10==(e=parseInt(e)).toString().length&&(e*=1e3);var r=(new Date).getTime()-e;r=parseInt(r/1e3);var n="";switch(!0){case r<300:n="\u521a\u521a";break;case r>=300&&r<3600:n="".concat(parseInt(r/60),"\u5206\u949f\u524d");break;case r>=3600&&r<86400:n="".concat(parseInt(r/3600),"\u5c0f\u65f6\u524d");break;case r>=86400&&r<2592e3:n="".concat(parseInt(r/86400),"\u5929\u524d");break;default:n=!1===t?r>=2592e3&&r<31536e3?"".concat(parseInt(r/2592e3),"\u4e2a\u6708\u524d"):"".concat(parseInt(r/31536e3),"\u5e74\u524d"):l(e,t)}return n},t.toast=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2e3;uni.showToast({title:String(e),icon:"none",duration:t})},t.trim=p,t.type2icon=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"success",t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];-1==["primary","info","error","warning","success"].indexOf(e)&&(e="success");var r="";switch(e){case"primary":case"info":r="info-circle";break;case"error":r="close-circle";break;case"warning":r="error-circle";break;case"success":r="checkmark-circle";break;default:r="checkmark-circle"}t&&(r+="-fill");return r};var i=n(r(96)),o=n(r(5)),a=r(99),s=r(103);function c(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,t=this.$parent;t;){if(!t.$options||t.$options.name===e)return t;t=t.$parent}return!1}function u(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new WeakMap;if(null===e||"object"!==(0,o.default)(e))return e;if(r.has(e))return r.get(e);if(e instanceof Date)t=new Date(e.getTime());else if(e instanceof RegExp)t=new RegExp(e);else if(e instanceof Map)t=new Map(Array.from(e,(function(e){var t=(0,i.default)(e,2);return[t[0],u(t[1],r)]})));else if(e instanceof Set)t=new Set(Array.from(e,(function(e){return u(e,r)})));else if(Array.isArray(e))t=e.map((function(e){return u(e,r)}));else if("[object Object]"===Object.prototype.toString.call(e)){t=Object.create(Object.getPrototypeOf(e)),r.set(e,t);for(var n=0,a=Object.entries(e);n0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"yyyy-mm-dd",n={y:(e=t?/^\d{10}$/.test(null==t?void 0:t.toString().trim())?new Date(1e3*t):"string"==typeof t&&/^\d+$/.test(t.trim())?new Date(Number(t)):"string"==typeof t&&t.includes("-")&&!t.includes("T")?new Date(t.replace(/-/g,"/")):new Date(t):new Date).getFullYear().toString(),m:(e.getMonth()+1).toString().padStart(2,"0"),d:e.getDate().toString().padStart(2,"0"),h:e.getHours().toString().padStart(2,"0"),M:e.getMinutes().toString().padStart(2,"0"),s:e.getSeconds().toString().padStart(2,"0")};for(var o in n){var a=new RegExp("".concat(o,"+")).exec(r)||[],s=(0,i.default)(a,1),c=s[0];if(c){var u="y"===o&&2===c.length?2:0;r=r.replace(c,n[o].slice(u))}}return r}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"both";return e=String(e),"both"==t?e.replace(/^\s+|\s+$/g,""):"left"==t?e.replace(/^\s*/,""):"right"==t?e.replace(/(\s*$)/g,""):"all"==t?e.replace(/\s+/g,""):e}String.prototype.padStart||(String.prototype.padStart=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" ";if("[object String]"!==Object.prototype.toString.call(t))throw new TypeError("fillString must be String");var r=this;if(r.length>=e)return String(r);for(var n=e-r.length,i=Math.ceil(n/t.length);i>>=1;)t+=t,1===i&&(t+=t);return t.slice(0,n)+r})},function(e,t,r){var n=r(97),i=r(102),o=r(26),a=r(98);e.exports=function(e,t){return n(e)||i(e,t)||o(e,t)||a()},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t){e.exports=function(e){if(Array.isArray(e))return e},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.amount=function(e){return/^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(e)},t.array=function(e){if("function"==typeof Array.isArray)return Array.isArray(e);return"[object Array]"===Object.prototype.toString.call(e)},t.carNo=function(e){if(7===e.length)return/^[\u4eac\u6d25\u6caa\u6e1d\u5180\u8c6b\u4e91\u8fbd\u9ed1\u6e58\u7696\u9c81\u65b0\u82cf\u6d59\u8d63\u9102\u6842\u7518\u664b\u8499\u9655\u5409\u95fd\u8d35\u7ca4\u9752\u85cf\u5ddd\u5b81\u743c\u4f7f\u9886A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9\u6302\u5b66\u8b66\u6e2f\u6fb3]{1}$/.test(e);if(8===e.length)return/^[\u4eac\u6d25\u6caa\u6e1d\u5180\u8c6b\u4e91\u8fbd\u9ed1\u6e58\u7696\u9c81\u65b0\u82cf\u6d59\u8d63\u9102\u6842\u7518\u664b\u8499\u9655\u5409\u95fd\u8d35\u7ca4\u9752\u85cf\u5ddd\u5b81\u743c\u4f7f\u9886A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/.test(e);return!1},t.chinese=function(e){return/^[\u4e00-\u9fa5]+$/gi.test(e)},t.code=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6;return new RegExp("^\\d{".concat(t,"}$")).test(e)},t.contains=function(e,t){return e.indexOf(t)>=0},t.date=function(e){if(!e)return!1;o(e)&&(e=+e);return!/Invalid|NaN/.test(new Date(e).toString())},t.dateISO=function(e){return/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(e)},t.digits=function(e){return/^\d+$/.test(e)},t.email=function(e){return/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(e)},t.empty=function(e){switch((0,i.default)(e)){case"undefined":return!0;case"string":if(0==e.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g,"").length)return!0;break;case"boolean":if(!e)return!0;break;case"number":if(0===e||isNaN(e))return!0;break;case"object":if(null===e||0===e.length)return!0;for(var t in e)return!1;return!0}return!1},t.enOrNum=function(e){return/^[0-9a-zA-Z]*$/g.test(e)},t.func=s,t.idCard=function(e){return/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(e)},t.image=function(e){var t=e.split("?")[0];return/\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i.test(t)},t.jsonString=function(e){if("string"==typeof e)try{var t=JSON.parse(e);return!("object"!==(0,i.default)(t)||!t)}catch(e){return!1}return!1},t.landline=function(e){return/^\d{3,4}-\d{7,8}(-\d{3,4})?$/.test(e)},t.letter=function(e){return/^[a-zA-Z]*$/.test(e)},t.mobile=function(e){return/^1([3589]\d|4[5-9]|6[1-2,4-7]|7[0-8])\d{8}$/.test(e)},t.number=o,t.object=a,t.promise=function(e){return a(e)&&s(e.then)&&s(e.catch)},t.range=function(e,t){return e>=t[0]&&e<=t[1]},t.rangeLength=function(e,t){return e.length>=t[0]&&e.length<=t[1]},t.regExp=function(e){return e&&"[object RegExp]"===Object.prototype.toString.call(e)},t.string=function(e){return"string"==typeof e},t.url=function(e){return/^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/.test(e)},t.video=function(e){return/\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i.test(e)};var i=n(r(5));function o(e){return/^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(e)}function a(e){return"[object Object]"===Object.prototype.toString.call(e)}function s(e){return"function"==typeof e}},function(e,t,r){"use strict";r.r(t);var n=r(34),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";r.r(t);var n=r(87),i=r(73);for(var o in i)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return i[e]}))}(o);var a=r(0);var s=Object(a.a)(i.default,n.b,n.c,!1,null,null,"6796f3a3",!1,n.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(121).default,this.options.style):Object.assign(this.options.style,r(121).default)}).call(s),t.default=s.exports},function(e,t){e.exports=function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,o,a,s=[],c=!0,u=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,i=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw i}}return s}},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.divide=h,t.enableBoundaryChecking=m,t.minus=f,t.plus=d,t.round=g,t.times=p;var i=n(r(104)),o=!0;function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15;return+parseFloat(Number(e).toPrecision(t))}function s(e){var t=e.toString().split(/[eE]/),r=(t[0].split(".")[1]||"").length-+(t[1]||0);return r>0?r:0}function c(e){if(-1===e.toString().indexOf("e"))return Number(e.toString().replace(".",""));var t=s(e);return t>0?a(Number(e)*Math.pow(10,t)):Number(e)}function u(t){o&&(t>Number.MAX_SAFE_INTEGER||t2)return l(t,p);var n=t[0],i=t[1],o=c(n),a=c(i),d=s(n)+s(i),f=o*a;return u(f),f/Math.pow(10,d)}function d(){for(var e=arguments.length,t=new Array(e),r=0;r2)return l(t,d);var n=t[0],i=t[1],o=Math.pow(10,Math.max(s(n),s(i)));return(p(n,o)+p(i,o))/o}function f(){for(var e=arguments.length,t=new Array(e),r=0;r2)return l(t,f);var n=t[0],i=t[1],o=Math.pow(10,Math.max(s(n),s(i)));return(p(n,o)-p(i,o))/o}function h(){for(var e=arguments.length,t=new Array(e),r=0;r2)return l(t,h);var n=t[0],i=t[1],o=c(n),d=c(i);return u(o),u(d),p(o/d,a(Math.pow(10,s(i)-s(n))))}function g(e,t){var r=Math.pow(10,t),n=h(Math.round(Math.abs(p(e,r))),r);return e<0&&0!==n&&(n=p(n,-1)),n}function m(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];o=e}var v={times:p,plus:d,minus:f,divide:h,round:g,enableBoundaryChecking:m};t.default=v}).call(this,r(2).default)},function(e,t,r){var n=r(97),i=r(39),o=r(26),a=r(98);e.exports=function(e){return n(e)||i(e)||o(e)||a()},e.exports.__esModule=!0,e.exports.default=e.exports},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(r(3)),o=n(r(4)),a=n(r(37)),s=n(r(38)),c=r(95),u=(new(function(){function e(){(0,a.default)(this,e),this.config={type:"navigateTo",url:"",delta:1,params:{},animationType:"pop-in",animationDuration:300,intercept:!1,events:{}},this.route=this.route.bind(this)}var t;return(0,s.default)(e,[{key:"addRootPath",value:function(e){return"/"===e[0]?e:"/".concat(e)}},{key:"mixinParam",value:function(e,t){e=e&&this.addRootPath(e);var r="";return/.*\/.*\?.*=.*/.test(e)?(r=(0,c.queryParams)(t,!1),e+"&".concat(r)):e+(r=(0,c.queryParams)(t))}},{key:"route",value:(t=(0,o.default)(i.default.mark((function e(){var t,r,n,o=arguments;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=o.length>0&&void 0!==o[0]?o[0]:{},r=o.length>1&&void 0!==o[1]?o[1]:{},n={},"string"==typeof t?(n.url=this.mixinParam(t,r),n.type="navigateTo"):(n=(0,c.deepMerge)(this.config,t)).url=this.mixinParam(t.url,t.params),n.url!==(0,c.page)()){e.next=6;break}return e.abrupt("return");case 6:if(r.intercept&&(n.intercept=r.intercept),n.params=r,"function"!=typeof(n=(0,c.deepMerge)(this.config,n)).intercept){e.next=16;break}return e.next=12,new Promise((function(e,t){n.intercept(n,e)}));case 12:e.sent&&this.openPage(n),e.next=17;break;case 16:this.openPage(n);case 17:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"openPage",value:function(e){var t=e.url,r=(e.type,e.delta),n=e.animationType,i=e.animationDuration,o=e.events;"navigateTo"!=e.type&&"to"!=e.type||uni.navigateTo({url:t,animationType:n,animationDuration:i,events:o}),"redirectTo"!=e.type&&"redirect"!=e.type||uni.redirectTo({url:t}),"switchTab"!=e.type&&"tab"!=e.type||uni.switchTab({url:t}),"reLaunch"!=e.type&&"launch"!=e.type||uni.reLaunch({url:t}),"navigateBack"!=e.type&&"back"!=e.type||uni.navigateBack({delta:r})}}]),e}())).route;t.default=u},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=null;var i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(null!==n&&clearTimeout(n),r){var i=!n;n=setTimeout((function(){n=null}),t),i&&"function"==typeof e&&e()}else n=setTimeout((function(){"function"==typeof e&&e()}),t)};t.default=i},function(e,t,r){"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];r?n||(n=!0,"function"==typeof e&&e(),setTimeout((function(){n=!1}),t)):n||(n=!0,setTimeout((function(){n=!1,"function"==typeof e&&e()}),t))};t.default=i},function(e,t,r){"use strict";r.r(t);var n=r(48),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";r.r(t);var n=r(49),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";r.r(t);var n=r(52),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";r.r(t);var n=r(55),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";r.r(t);var n=r(91),i=r(56);for(var o in i)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return i[e]}))}(o);var a=r(0),s=Object(a.a)(i.default,n.b,n.c,!1,null,null,"0b1e4bcc",!1,n.a,void 0);t.default=s.exports},function(e,t,r){"use strict";r.r(t);var n=r(60),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";r.r(t);var n=r(63),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";r.r(t);var n=r(66),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";r.r(t);var n=r(69),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";r.r(t);var n=r(72),i=r.n(n);for(var o in n)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return n[e]}))}(o);t.default=i.a},function(e,t,r){"use strict";r.r(t);var n=r(35),i=r(32);for(var o in i)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return i[e]}))}(o);var a=r(0);var s=Object(a.a)(i.default,n.b,n.c,!1,null,null,"450d9fcc",!1,n.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(100).default,this.options.style):Object.assign(this.options.style,r(100).default)}).call(s),t.default=s.exports},function(e,t,r){"use strict";r.r(t);var n=r(36),i=r(30);for(var o in i)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return i[e]}))}(o);var a=r(0);var s=Object(a.a)(i.default,n.b,n.c,!1,null,null,"713b6382",!1,n.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style)}).call(s),t.default=s.exports},function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.createAnimation=function(e,t){if(!t)return;return clearTimeout(t.timer),new l(e,t)};var i=n(r(6)),o=n(r(37)),a=n(r(38));function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.$.$refs.ani.ref;if(r)return new Promise((function(n,i){u.transition(r,c({styles:e},t),(function(e){n()}))}))}},{key:"_nvueNextAnimate",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0,i=e[r];if(i){var o=i.styles,a=i.config;this._animateRun(o,a).then((function(){r+=1,t._nvueNextAnimate(e,r,n)}))}else this.currentStepAnimates={},"function"==typeof n&&n(),this.isEnd=!0}},{key:"step",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.currentStepAnimates[this.next].config=Object.assign({},this.options,e),this.currentStepAnimates[this.next].styles.transformOrigin=this.currentStepAnimates[this.next].config.transformOrigin,this.next++,this}},{key:"run",value:function(e){this.isEnd=!1,this.$.$refs.ani&&this.$.$refs.ani.ref&&(this._nvueNextAnimate(this.currentStepAnimates,0,e),this.next=0)}}]),e}(),p=["matrix","matrix3d","rotate","rotate3d","rotateX","rotateY","rotateZ","scale","scale3d","scaleX","scaleY","scaleZ","skew","skewX","skewY","translate","translate3d","translateX","translateY","translateZ"];p.concat(["opacity","backgroundColor"],["width","height","left","right","top","bottom"]).forEach((function(e){l.prototype[e]=function(){for(var t=arguments.length,r=new Array(t),n=0;n0?r("serviceRadio",{model:{value:e.serviceType,callback:function(t){e.serviceType=t},expression:"serviceType"}}):e._e(),1==e.serviceType&&2==e.serviceInfo.server_kind?r("selectAdress",{attrs:{id:e.serviceInfo.id,serviceInfo:e.serviceInfo,sjInfo:e.sjInfo}}):e._e(),1==e.serviceType&&1==e.serviceInfo.server_kind?r("selectSyrAdress",{attrs:{id:e.serviceInfo.id,serviceInfo:e.serviceInfo,syrInfo:e.syrInfo}}):e._e(),2==e.serviceInfo.server_kind?r("view",{staticClass:["service-shop"]},[r("view",{staticClass:["shop-info"]},[r("u-image",{staticClass:["shop-logo"],attrs:{src:e.serviceInfo.shop_head_photo,mode:"aspectFill"},on:{click:function(t){e.goShopHome(e.serviceInfo.publish_user_id)}}}),r("view",{staticClass:["shop-info-you"]},[r("u-text",{staticClass:["shop-name"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.serviceInfo.shop_name))]),r("view",{staticClass:["stars"]}),r("view",{staticClass:["shop-class-w"]},[r("u-text",{staticClass:["shop-class"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u4e3b\u8425\uff1a"+e._s(e.serviceInfo.shop_class.substr(1)))])]),r("view",{staticClass:["shop-time"],staticStyle:{width:"480rpx"}},[r("u-text",{staticClass:["shop-class"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8425\u4e1a\u65f6\u95f4\uff1a"+e._s(e.serviceInfo.shop_business_time))])])])],1),r("view",{staticClass:["shop-cont"]},[r("view",{staticClass:["shop-cont-left"]},[r("view",[r("u-text",{staticClass:["shop-address"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.serviceInfo.shop_dependency)+e._s(e.serviceInfo.shop_address))])]),r("view",[r("u-text",{staticClass:["shop-tell"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u7535\u8bdd:"+e._s(e.serviceInfo.phone))])])]),r("view",{staticClass:["shop-cont-right"]},[r("u-image",{staticClass:["shop-headle"],attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/5ae95582-d1da-4243-b44d-e828c2b1929c",mode:"aspectFit"},on:{click:e.openMap}}),r("u-image",{staticClass:["shop-headle"],attrs:{src:"https://mrrplus.oss-cn-beijing.aliyuncs.com/photo/system/dfd64c82-8ea7-478e-93b6-e65cdfbfaa71",mode:"aspectFit"},on:{click:function(t){e.goContact(e.serviceInfo.phone)}}})],1)])]):e._e(),1==e.serviceInfo.server_kind?r("view",{staticClass:["service-syr"]},[e.syrInfo.head_photo?r("u-image",{staticClass:["syr-head"],attrs:{src:e.syrInfo.head_photo,mode:"aspectFill"}}):e._e(),r("view",{staticClass:["syr-info"]},[r("u-text",{staticClass:["syr-name"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.syrInfo.name))])]),r("view",{staticClass:["look-btn"],on:{click:function(t){e.goSyrHome(e.serviceInfo.publish_user_id)}}},[r("u-text",{staticClass:["look-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8fdb\u5165\u901b\u901b")])])],1):e._e(),e.serviceInfo.id?r("evaluationList",{attrs:{order_shop_id:e.serviceInfo.id,order_shop_type:1},on:{goList:e.goList}}):e._e(),r("view",{staticClass:["notice-section"]},[r("view",{staticClass:["section-title"]},[r("u-text",{staticClass:["section-tit"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u9879\u76ee\u8bf4\u660e")])]),r("view",{staticClass:["notice-content"]},[r("view",{staticClass:["notice-cont"]},[r("u-text",{staticClass:["notice-title"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u670d\u52a1\u65f6\u957f\uff1a")]),r("u-text",{staticClass:["notice-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.serviceInfo.server_time)+"\u5206\u949f")])]),e._l(e.serviceInfo.detail,(function(t,n){return r("view",{staticClass:["notice-cont"]},[r("u-text",{staticClass:["notice-title"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.title)+"\uff1a")]),r("u-text",{staticClass:["notice-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.text))])])}))],2)]),e.serviceInfo.graphic_details?r("imgAndText",{attrs:{info:e.serviceInfo.graphic_details}}):e._e(),r("view",{staticClass:["notice-section"]},[r("view",{staticClass:["section-title"]},[r("u-text",{staticClass:["section-tit"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u9879\u76ee\u6b65\u9aa4")])]),r("view",{staticClass:["notice-content"]},e._l(e.serviceInfo.process,(function(t,n){return r("view",{staticClass:["notice-cont"]},[r("u-text",{staticClass:["notice-title"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.title)+"\uff1a")]),r("u-text",{staticClass:["notice-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.text))])])})),0)]),r("view",{staticClass:["notice-section"]},[r("view",{staticClass:["section-title"]},[r("u-text",{staticClass:["section-tit"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8ba2\u8d2d\u987b\u77e5")])]),r("view",{staticClass:["notice-content"]},[r("u-text",{staticClass:["notice-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.serviceInfo.purchasenotes))])])]),r("view",{staticClass:["bottom-bar"]},[r("view",{staticClass:["submit-btn"],class:2==e.syrInfo.order_taking||2==e.sjInfo.order_taking?"cannot-submit":"",on:{click:e.submitOrder}},[r("u-text",{staticClass:["btn-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u7acb\u5373\u9884\u7ea6")])])]),r("view",{staticClass:["permission"],class:{transform:e.isShowPer}},[r("u-text",{staticClass:["per-tit"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u7f8e\u878d\u878dplus \u5bf9\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),r("u-text",{staticClass:["per-cont"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u5f53\u60a8\u9700\u8981\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0\u5ba2\u670d\u7684\u65f6\u5019\uff0c\u9700\u8981\u83b7\u53d6\u62e8\u6253\u7535\u8bdd\u6743\u9650\u3002")])]),r("selfPay",{ref:"selfPayRef",attrs:{show:e.showPay,serviceInfo:e.serviceInfo,serviceType:e.serviceType},on:{change:function(t){return e.showPay=t.show}}})],1)])},o=[]},,,,,,,,,function(e,t,r){"use strict";r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return n}));var n={uvDivider:r(241).default},i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("view",{staticClass:["container"]},[r("uv-divider",{attrs:{text:"\u56fe\u6587\u8be6\u60c5",lineColor:"#E0E1E1",textColor:"#3D3D3D",textSize:"24rpx"}}),e._l(e.detailList,(function(t,n){return r("view",{key:n,staticClass:["detail-item"]},[3===t.type?r("u-image",{staticClass:["detail-img"],attrs:{src:t.value,mode:"widthFix"}}):e._e(),2===t.type?r("view",{staticClass:["detail-text-container"]},[r("u-text",{staticClass:["detail-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.value))])]):e._e(),1===t.type?r("uv-divider",{attrs:{dashed:!0}}):e._e()],1)}))],2)},o=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return n})),r.d(t,"c",(function(){return i})),r.d(t,"a",(function(){}));var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("view",{staticClass:["ruzhuRadio"]},e._l(e.radioList,(function(t,n){return r("view",{key:n,staticClass:["radio-item"]},[r("u-image",{staticClass:["radio-item-round"],attrs:{src:e.value==t.value?e.yesImg:e.noImg},on:{click:function(r){e.changeAgree(t.value)}}}),r("u-text",{staticClass:["radio-item-name"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.name))])],1)})),0)},i=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return n}));var n={selectTimePage:r(101).default},i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("view",[e.citySyrCount?r("view",{staticClass:["select-address"]},[r("u-text",{staticClass:["select-address-title"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u9884\u7ea6\u4fe1\u606f")]),r("view",{staticClass:["select-address-card","flex-row-center-between","border-bottom"]},[r("u-text",{staticClass:["select-address-card-title"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u5230\u5bb6\u5730\u5740")]),r("view",{staticClass:["select-address-card-right","flex-row-center"],on:{click:e.goToAddress}},[e.reservationAddress.id?r("view",{staticStyle:{display:"flex",flexDirection:"column"}},[r("u-text",{staticClass:["card-right-text2"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.reservationAddress.server_address))]),r("u-text",{staticClass:["card-right-text1"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.reservationAddress.name+" "+e.reservationAddress.call_phone))])]):r("u-text",{staticClass:["card-right-text1"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8bf7\u9009\u62e9")]),r("u-image",{staticClass:["card-right-img"],attrs:{src:"/static/images/wallet/right.png"}})],1)]),r("view",{staticClass:["select-address-card","flex-row-center-between"]},[r("u-text",{staticClass:["select-address-card-title"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u670d\u52a1\u4eba\u5458")]),r("view",{staticClass:["select-address-card-right","flex-row-center"],on:{click:e.goSelectSyr}},[r("view",{staticClass:["flex-row-center"],staticStyle:{width:"425rpx",justifyContent:"flex-end"}},[e.reservationSyr.head_photo?r("u-image",{staticClass:["card-right-photo"],attrs:{src:e.reservationSyr.head_photo}}):e._e(),e.reservationSyr.id?r("u-text",{staticClass:["card-right-text2"],staticStyle:{width:"auto"},appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.reservationSyr.name))]):r("u-text",{staticClass:["card-right-text1"],staticStyle:{width:"auto"},appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8bf7\u9009\u62e9")])],1),r("u-image",{staticClass:["card-right-img"],attrs:{src:"/static/images/wallet/right.png"}})],1)]),r("view",{staticClass:["select-address-card","flex-row-center-between"]},[r("u-text",{staticClass:["select-address-card-title"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u5230\u5bb6\u65f6\u95f4")]),r("view",{staticClass:["select-address-card-right","flex-row-center"],on:{click:e.openTimePicker}},[e.reservationTime.selectedTime?r("u-text",{staticClass:["card-right-text2"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.reservationTime.selectedTime))]):r("u-text",{staticClass:["card-right-text1"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8bf7\u9009\u62e9")]),r("u-image",{staticClass:["card-right-img"],attrs:{src:"/static/images/wallet/right.png"}})],1)]),e.reservationAddress.dependency_city!=e.sjInfo.dependency_city&&0!=Object.keys(this.reservationAddress).length?r("u-image",{staticClass:["select-address-tip"],attrs:{src:"/static/images/background/tipBj3.png"}}):e._e()],1):r("u-image",{staticClass:["store-tip"],attrs:{src:"/static/images/background/storeTip3.png"}}),r("select-time-page",{ref:"selecTime",attrs:{timeOptions:e.timeOptions,service:e.serviceInfo,publish_user_id:e.reservationSyr.id},on:{sureTime:e.sureTime,closeTime:e.closeTime}})],1)},o=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return n}));var n={selectTimePage:r(101).default},i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("view",[e.citySyrCount?r("view",{staticClass:["select-address"]},[r("u-text",{staticClass:["select-address-title"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u9884\u7ea6\u4fe1\u606f")]),r("view",{staticClass:["select-address-card","flex-row-center-between","border-bottom"]},[r("u-text",{staticClass:["select-address-card-title"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u5230\u5bb6\u5730\u5740")]),r("view",{staticClass:["select-address-card-right","flex-row-center"],on:{click:e.goToAddress}},[e.reservationAddress.id?r("view",[r("u-text",{staticClass:["card-right-text2"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.reservationAddress.server_address))]),r("u-text",{staticClass:["card-right-text1"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.reservationAddress.name+" "+e.reservationAddress.call_phone))])]):r("u-text",{staticClass:["card-right-text1"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8bf7\u9009\u62e9")]),r("u-image",{staticClass:["card-right-img"],attrs:{src:"/static/images/wallet/right.png"}})],1)]),r("view",{staticClass:["select-address-card","flex-row-center-between"]},[r("u-text",{staticClass:["select-address-card-title"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u5230\u5bb6\u65f6\u95f4")]),r("view",{staticClass:["select-address-card-right","flex-row-center"],on:{click:e.openTimePicker}},[e.reservationTime.selectedTime?r("u-text",{staticClass:["card-right-text2"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.reservationTime.selectedTime))]):r("u-text",{staticClass:["card-right-text1"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8bf7\u9009\u62e9")]),r("u-image",{staticClass:["card-right-img"],attrs:{src:"/static/images/wallet/right.png"}})],1)]),e.reservationAddress.dependency_city!=e.syrInfo.dependency_city&&e.addressCity!=e.syrCity&&0!=Object.keys(e.reservationAddress).length?r("view",{staticClass:["select-address-tip"]},[r("u-image",{staticClass:["select-address-tip-bj"],attrs:{src:"/static/images/background/tipBj2.png"}}),r("view",{staticClass:["select-address-tip-texts"]},[r("u-text",{staticClass:["select-address-tip-text1"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u60a8\u9009\u62e9\u7684\u5730\u5740\u6682\u4e0d\u5728\u624b\u827a\u4eba\u5f53\u524d\u670d\u52a1\u8986\u76d6\u8303\u56f4\u5185\uff0c\u53ef\u80fd\u5f71\u54cd\u670d\u52a1\u54cd\u5e94\u65f6\u6548\u3002\u4e3a\u4fdd\u969c\u60a8\u7684\u4f53\u9a8c\uff0c\u5efa\u8bae\u60a8\u91cd\u65b0\u9009\u62e9\u53ef\u670d\u52a1\u533a\u57df\u4e0b\u5355\u3002\u624b\u827a\u4eba\u670d\u52a1\u533a\u57df\uff1a"+e._s(e.syrCity))])])],1):e._e()]):r("u-image",{staticClass:["store-tip"],attrs:{src:"/static/images/background/storeTip3.png"}}),r("select-time-page",{ref:"selecTime",attrs:{timeOptions:e.timeOptions,service:e.serviceInfo,publish_user_id:e.reservationSyr.id},on:{sureTime:e.sureTime,closeTime:e.closeTime}})],1)},o=[]},function(e,t,r){"use strict";r.d(t,"b",(function(){return i})),r.d(t,"c",(function(){return o})),r.d(t,"a",(function(){return n}));var n={uvPopup:r(134).default,agreeRadio:r(255).default},i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("view",{staticClass:["self-pay"]},[r("uv-popup",{ref:"popup",attrs:{mode:"bottom"},on:{change:e.change}},[r("view",{staticClass:["salf-card"]},[1==e.serviceType?r("view",{staticClass:["pop-card"]},[r("u-text",{staticClass:["syr-info-address"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.reservationAddress.server_address))]),r("u-text",{staticClass:["syr-info-phone"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.reservationAddress.name+" "+e.reservationAddress.call_phone))])]):e._e(),1==e.serviceType?r("view",{staticClass:["pop-card"]},[r("view",{staticClass:["salf-card-between","mb-20"]},[r("u-text",{staticClass:["salf-card-between-text1"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u5230\u5bb6\u65f6\u95f4")]),r("u-text",{staticClass:["salf-card-between-text2"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.reservationTime.selectedTime))])]),r("view",{staticClass:["salf-card-between"]},[r("u-text",{staticClass:["salf-card-between-text1"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u670d\u52a1\u4eba\u5458")]),r("view",{staticClass:["flex-row-center"],staticStyle:{width:"425rpx",justifyContent:"flex-end"}},[e.reservationSyr.head_photo?r("u-image",{staticClass:["card-right-photo"],attrs:{src:e.reservationSyr.head_photo}}):e._e(),r("u-text",{staticClass:["salf-card-between-text2"],staticStyle:{width:"auto"},appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.reservationSyr.name))])],1)])]):e._e(),r("view",{staticClass:["pop-card"]},[r("view",{staticClass:["serve-info"]},[r("u-image",{staticClass:["serve-info-img"],attrs:{src:e.serviceInfo.photo[0],mode:"aspectFill"}}),r("view",{staticClass:["serve-info-right"]},[r("u-text",{staticClass:["serve-info-right-name"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.serviceInfo.title))]),r("view",{staticClass:["serve-info-right-num","flex-row-center-between"]},[r("u-text",{staticClass:["serve-info-right-num-text1"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u670d\u52a1\u6570\u91cf")]),r("u-text",{staticClass:["serve-info-right-num-text2"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("X1")])])])],1),e.serviceInfo.line_price?r("view",{staticClass:["salf-card-between","mb-20"]},[r("u-text",{staticClass:["salf-card-between-text1"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u539f\u59cb\u4ef7\u683c")]),r("u-text",{staticClass:["salf-card-between-text2"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.serviceInfo.line_price))])]):e._e(),r("view",{staticClass:["salf-card-between"]},[r("u-text",{staticClass:["salf-card-between-text1"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8ba2\u5355\u5c0f\u8ba1")]),r("view",[r("u-text",{staticClass:["salf-card-between-text2"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.isOriginalPrice?e.serviceInfo.server_price:e.serviceInfo.team_buy.price))])])])]),2==e.serviceType?r("view",{staticClass:["pop-card"]},[r("view",{staticClass:["serve-store"]},[r("u-image",{staticClass:["serve-store-img"],attrs:{src:e.selectStore.head_photo,mode:"aspectFill"}}),r("view",{staticClass:["serve-store-right"]},[r("u-text",{staticClass:["serve-store-right-name"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.selectStore.name))]),r("view",{staticClass:["serve-store-right-num","flex-row-center-between"]},[r("view",{staticClass:["flex-row-center"]},[r("u-text",{staticClass:["serve-store-right-num-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u8425\u4e1a\u65f6\u95f4\uff1a")]),r("u-text",{staticClass:["serve-store-right-num-text"],staticStyle:{color:"#333333"},appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.selectStore.business_time))])])])])],1),r("view",{staticClass:["serve-store-address","flex-row-center"]},[r("view",{staticClass:["serve-store-address-right"]},[r("u-text",{staticClass:["serve-store-address-right-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u5730\u5740"+e._s(e.selectStore.address))]),r("u-text",{staticClass:["serve-store-address-right-text"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u7535\u8bdd\uff1a"+e._s(e.selectStore.account))])]),r("view",{staticClass:["serve-store-address-left","flex-row-center"]},[r("u-image",{staticClass:["address-left-icon"],attrs:{src:"/static/images/icons/adress.png"},on:{click:function(t){e.openMap(e.selectStore)}}}),r("u-image",{staticClass:["address-left-icon","ml40"],attrs:{src:"/static/images/icons/phone.png"},on:{click:function(t){e.contactService(e.selectStore.account)}}})],1)])]):e._e(),r("view",{staticClass:["pop-card"]},[r("u-text",{staticClass:["pop-card-title"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u9009\u62e9\u652f\u4ed8\u65b9\u5f0f")]),r("view",{staticClass:["method-list"]},e._l(e.methodList,(function(t,n){return r("view",{key:n,staticClass:["method-item","flex-row-center-between"],class:{mb43:n!=e.methodList.length-1},on:{click:function(r){e.selectMethod(t)}}},[r("view",{staticClass:["method-info","flex-row-center"]},[r("u-image",{staticClass:["method-icon"],attrs:{src:t.icon,mode:"aspectFit"}}),r("u-text",{staticClass:["method-name"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(t.name))])],1),r("agree-radio",{attrs:{isAgree:t.selected,yesImg:"/static/images/icons/yes_icon.png",radioSize:"40rpx",noImg:"/static/images/icons/no_icon.png"}})],1)})),0)]),r("view",{staticClass:["pop-submit","flex-row-center-between"]},[r("view",{staticClass:["pop-submit-left"]},[r("u-text",{staticClass:["pop-submit-left-text1"],appendAsTree:!0,attrs:{append:"tree"}},[e._v("\u5e94\u4ed8\u91d1\u989d")]),r("u-text",{staticClass:["pop-submit-left-text2"],appendAsTree:!0,attrs:{append:"tree"}},[e._v(e._s(e.isOriginalPrice?e.serviceInfo.server_price:e.serviceInfo.team_buy.price))])]),r("view",{staticClass:["pop-submit-btn","flex-row-center-center"]},[r("u-text",{staticClass:["pop-submit-btn-text"],appendAsTree:!0,attrs:{append:"tree"},on:{click:e.submitOrder}},[e._v("\u7acb\u5373\u652f\u4ed8")])])])])])],1)},o=[]},,,,function(e,t,r){"use strict";(function(e){var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.ServiceManager=void 0,t.handleImgSize=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.01;return new Promise((function(o,a){var s=t.split("?"),c=(0,i.default)(s,2),u=c[0],l=c[1],p=u;uni.downloadFile({url:p,success:function(t){var i=t.tempFilePath;if(!i){var s=new Error("\u4e0b\u8f7d\u5931\u8d25\uff0c\u672a\u83b7\u53d6\u5230\u4e34\u65f6\u8def\u5f84");return e("error",s," at utils/service.js:114"),void a(s)}uni.getFileInfo({filePath:i,success:function(t){var i=t.size/1024;if(e("log","\u539f\u59cb\u4f53\u79ef\uff1a".concat(i.toFixed(2)," KB | \u9650\u5236\u4f53\u79ef\uff1a").concat(r," KB")," at utils/service.js:126"),i<=r){e("log","\u4f53\u79ef\u8fbe\u6807\uff0c\u65e0\u9700\u538b\u7f29"," at utils/service.js:132");var a=l?"".concat(p,"?").concat(l):p;o(a)}else{var s=r/i,c=Math.sqrt(s);c1&&void 0!==arguments[1]?arguments[1]:30,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:20,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:20;return e("log",t," at utils/service.js:244"),new Promise((function(a,s){Promise.all([new Promise((function(e,r){uni.getFileInfo({filePath:t,success:e,fail:r})})),new Promise((function(e,r){uni.getImageInfo({src:t,success:e,fail:r})}))]).then((function(c){var u=(0,i.default)(c,2),l=u[0],p=u[1];e("log","imgInfo\uff1a",p," at utils/service.js:266");var d=l.size/1024;if(e("log","\u539f\u59cb\u4f53\u79ef\uff1a".concat(d.toFixed(2)," KB\uff0c\u539f\u59cb\u5c3a\u5bf8\uff1a").concat(p.width,"x").concat(p.height)," at utils/service.js:268"),d<=r)return e("log","\u4f53\u79ef\u8fbe\u6807\uff0c\u65e0\u9700\u538b\u7f29"," at utils/service.js:272"),void a(t);var f=70,h=p.width,g=p.height,m=1,v=0,y="";!function i(){if(++v>10)return e("warn","\u8fbe\u5230\u6700\u5927\u5c1d\u8bd5\u6b21\u6570\uff0c\u8fd4\u56de\u5f53\u524d\u538b\u7f29\u7ed3\u679c",y," at utils/service.js:288"),void a(y);var c=Math.max(h*m,n),u=Math.max(g*m,o);uni.compressImage({src:t,quality:f,width:c,height:u,success:function(t){uni.getFileInfo({filePath:t.tempFilePath,success:function(n){var o=n.size/1024;e("log","\u7b2c".concat(v,"\u6b21\u538b\u7f29\uff1a\u8d28\u91cf=").concat(f,"\uff0c\u5c3a\u5bf8=").concat(c,"x").concat(u,"\uff0c\u4f53\u79ef=").concat(o.toFixed(2)," KB")," at utils/service.js:309"),y=t.tempFilePath,o<=r?a(t.tempFilePath):(f>20?f-=15:m*=.8,i())},fail:function(t){e("error","\u83b7\u53d6\u538b\u7f29\u540e\u6587\u4ef6\u4fe1\u606f\u5931\u8d25\uff1a",t," at utils/service.js:328"),s(t)}})},fail:function(t){e("error","\u56fe\u7247\u538b\u7f29\u5931\u8d25\uff1a",t," at utils/service.js:334"),s(t)}})}()})).catch((function(t){e("error","\u83b7\u53d6\u56fe\u7247\u4fe1\u606f\u5931\u8d25\uff1a",t," at utils/service.js:343"),s(t)}))}))};var i=n(r(96)),o=n(r(25)),a=n(r(37)),s=n(r(38));function c(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return u(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:[],a=this.serviceDurations[t];if(!a)throw new Error("\u670d\u52a1\u4e0d\u5b58\u5728");var s=this.availableSlots[e]||[],u=this.blockedTimes[e]||[],l=[].concat((0,o.default)(n),(0,o.default)(u));l.sort((function(e,t){return r.compareTime(e[0],t[0])}));var p,d=[],f=c(l);try{for(f.s();!(p=f.n()).done;){var h=(0,i.default)(p.value,2),g=h[0],m=h[1];if(0===d.length)d.push([g,m]);else{var v=(0,i.default)(d[d.length-1],2),y=(v[0],v[1]);if(this.compareTime(g,y)<=0){var x=this.compareTime(m,y)>0?m:y;d[d.length-1][1]=x}else d.push([g,m])}}}catch(e){f.e(e)}finally{f.f()}var b,_=[],w=c(s);try{for(w.s();!(b=w.n()).done;){var S,C=(0,i.default)(b.value,2),O=C[0],T=C[1],k=O,j=c(d);try{for(j.s();!(S=j.n()).done;){var I=(0,i.default)(S.value,2),A=I[0],P=I[1];if(!(this.compareTime(P,k)<=0)){if(this.compareTime(A,T)>=0)break;if(this.compareTime(k,A)<0){var D=this.compareTime(A,T)<0?A:T;_.push([k,D])}k=this.compareTime(P,T)<0?P:T}}}catch(e){j.e(e)}finally{j.f()}this.compareTime(k,T)<0&&_.push([k,T])}}catch(e){w.e(e)}finally{w.f()}return _.filter((function(e){var t=(0,i.default)(e,2),n=t[0],o=t[1];return r.timeDiffInMinutes(n,o)>=a}))}},{key:"compareTime",value:function(e,t){var r=e.split(":").map(Number),n=(0,i.default)(r,2),o=n[0],a=n[1],s=t.split(":").map(Number),c=(0,i.default)(s,2),u=c[0],l=c[1];return o!==u?o-u:a-l}},{key:"timeDiffInMinutes",value:function(e,t){var r=e.split(":").map(Number),n=(0,i.default)(r,2),o=n[0],a=n[1],s=t.split(":").map(Number),c=(0,i.default)(s,2);return 60*c[0]+c[1]-(60*o+a)}}]),e}();t.ServiceManager=l}).call(this,r(2).default)},function(e,t,r){"use strict";r.r(t);var n=r(82),i=r(44);for(var o in i)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return i[e]}))}(o);var a=r(0);var s=Object(a.a)(i.default,n.b,n.c,!1,null,null,"7fc1fee2",!1,n.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(109).default,this.options.style):Object.assign(this.options.style,r(109).default)}).call(s),t.default=s.exports},function(e,t,r){"use strict";r.r(t);var n=r(84),i=r(46);for(var o in i)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return i[e]}))}(o);var a=r(0);var s=Object(a.a)(i.default,n.b,n.c,!1,null,null,"5a4968ae",!1,n.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(108).default,this.options.style):Object.assign(this.options.style,r(108).default)}).call(s),t.default=s.exports},function(e,t,r){"use strict";r.r(t);var n=r(85),i=r(53);for(var o in i)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return i[e]}))}(o);var a=r(0);var s=Object(a.a)(i.default,n.b,n.c,!1,null,"227f8d14","3736ebb8",!1,n.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(111).default,this.options.style):Object.assign(this.options.style,r(111).default)}).call(s),t.default=s.exports},function(e,t,r){"use strict";r.r(t);var n=r(89),i=r(50);for(var o in i)["default"].indexOf(o)<0&&function(e){r.d(t,e,(function(){return i[e]}))}(o);var a=r(0);var s=Object(a.a)(i.default,n.b,n.c,!1,null,"af66543a","c3010dea",!1,n.a,void 0);(function(e){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(110).default,this.options.style):Object.assign(this.options.style,r(110).default)}).call(s),t.default=s.exports},function(e,t,r){"use strict";var n=r(1);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i,o,a=n(r(6));function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var c={props:function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.$.$refs.ani.ref;if(r)return new Promise((function(n,i){u.transition(r,c({styles:e},t),(function(e){n()}))}))}},{key:"_nvueNextAnimate",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0,i=e[r];if(i){var o=i.styles,a=i.config;this._animateRun(o,a).then((function(){r+=1,t._nvueNextAnimate(e,r,n)}))}else this.currentStepAnimates={},"function"==typeof n&&n(),this.isEnd=!0}},{key:"step",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.currentStepAnimates[this.next].config=Object.assign({},this.options,e),this.currentStepAnimates[this.next].styles.transformOrigin=this.currentStepAnimates[this.next].config.transformOrigin,this.next++,this}},{key:"run",value:function(e){this.isEnd=!1,this.$.$refs.ani&&this.$.$refs.ani.ref&&(this._nvueNextAnimate(this.currentStepAnimates,0,e),this.next=0)}}]),e}(),p=["matrix","matrix3d","rotate","rotate3d","rotateX","rotateY","rotateZ","scale","scale3d","scaleX","scaleY","scaleZ","skew","skewX","skewY","translate","translate3d","translateX","translateY","translateZ"];p.concat(["opacity","backgroundColor"],["width","height","left","right","top","bottom"]).forEach((function(e){l.prototype[e]=function(){for(var t=arguments.length,r=new Array(t),n=0;n=200&&a<300)){t.next=3;break}return t.abrupt("return",s);case 3:if(401!==a){t.next=7;break}return t.next=6,y(e,n,o);case 6:return t.abrupt("return",t.sent);case 7:return uni.showToast({title:s.message||"\u8bf7\u6c42\u5931\u8d25",icon:"none"}),t.abrupt("return",Promise.reject(s));case 9:case"end":return t.stop()}}),t)})));return function(e,r,n,o){return t.apply(this,arguments)}}(),v=function(){var e=(0,a.default)(i.default.mark((function e(r,n){var a,p,u;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(p=uni.getStorageSync("baseUrl"),""==uni.getStorageSync("setVersion").VersionCode&&(0,c.setVersion)(),p){e.next=5;break}return e.next=5,new Promise((function(e,r){uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType},success:function(r){200==r.data.code&&(uni.setStorageSync("baseUrl",r.data.data.url),p=r.data.data.url,e(p)),t("log","\u8bf7\u6c42\u6210\u529f",r.data," at utils/request.js:121")},fail:function(e){t("log","\u8bf7\u6c42\u5931\u8d25",e," at utils/request.js:124")},complete:function(){t("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/request.js:127")}})}));case 5:return o=p,t("log","\u751f\u4ea7\u73af\u5883"," at utils/request.js:147"),a={baseURL:o},(0,s.default)(a,"baseURL",o),(0,s.default)(a,"header",{"content-type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType}),(0,s.default)(a,"timeout",6e4),r=l(l(l({},u=a),r),{},{url:n?r.url:"".concat(u.baseURL).concat(r.url)}),r=m(r),e.abrupt("return",new Promise((function(t,e){uni.request(l(l({},r),{},{success:function(n){t(h(r,n,t,e))},fail:function(t){uni.showToast({title:"\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5",icon:"none"}),e(t)}}))})));case 10:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}();function y(t,e,r){return b.apply(this,arguments)}function b(){return(b=(0,a.default)(i.default.mark((function t(e,r,n){var o,a;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((0,p.getToken)()){t.next=2;break}return t.abrupt("return",C());case 2:if(!d){t.next=4;break}return t.abrupt("return",g((function(t){e.header.Authorization="Bearer ".concat(t),v(e,!0).then(r).catch(n)})));case 4:return d=!0,t.prev=5,t.next=8,w();case 8:return o=t.sent,(0,p.setToken)(o),x(o),e.header.Authorization="Bearer ".concat(o),t.next=14,v(e,!0);case 14:return a=t.sent,t.abrupt("return",a);case 18:return t.prev=18,t.t0=t.catch(5),(0,p.removeToken)(),C(),t.abrupt("return",t.t0);case 23:return t.prev=23,d=!1,t.finish(23);case 26:case"end":return t.stop()}}),t,null,[[5,18,23,26]])})))).apply(this,arguments)}function w(){return _.apply(this,arguments)}function _(){return(_=(0,a.default)(i.default.mark((function t(){var e;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(uni.getStorageSync("refreshToken")){t.next=3;break}throw new Error("No refresh token");case 3:return t.next=5,v({url:"/sj/refreshtoken",data:{refresh_token:uni.getStorageSync("refreshToken"),deviceid:getApp().globalData.deviceid},method:"POST"});case 5:if(1!=(e=t.sent).state&&200!=e.code){t.next=10;break}return uni.setStorageSync("accessToken",e.access_token),uni.setStorageSync("refreshToken",e.refresh_token),t.abrupt("return",e.access_token);case 10:throw new Error("Refresh token failed");case 11:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function C(){uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}var S={get:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return v(l({url:t,data:e,method:"GET"},r))},post:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return v(l({url:t,data:e,method:"POST"},r))},put:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return v(l({url:t,data:e,method:"PUT"},r))},delete:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return v(l({url:t,data:e,method:"DELETE"},r))}};e.default=S}).call(this,r(2).default)},127:function(t,e,r){"use strict";var n=r(215),o=r(176),i=r(0);var a=Object(i.a)(o.default,n.b,n.c,!1,null,null,"295ebfb4",!1,n.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(273).default,this.options.style):Object.assign(this.options.style,r(273).default)}).call(a),e.default=a.exports},13:function(t,e,r){var n=r(5).default,o=r(20);t.exports=function(t){var e=o(t,"string");return"symbol"==n(e)?e:e+""},t.exports.__esModule=!0,t.exports.default=t.exports},14:function(t,e,r){"use strict";r.r(e);var n=r(10),o=r.n(n);for(var i in n)["default"].indexOf(i)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(i);e.default=o.a},17:function(t,e,r){Vue.prototype.__$appStyle__={},Vue.prototype.__merge_style&&Vue.prototype.__merge_style(r(18).default,Vue.prototype.__$appStyle__)},176:function(t,e,r){"use strict";var n=r(177),o=r.n(n);e.default=o.a},177:function(t,e,r){"use strict";(function(t){var n=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=n(r(3)),i=n(r(4)),a=n(r(12)),s=n(r(22)),p=n(r(41)),c=n(r(28)),u=n(r(29)),l={components:{CustomNavbar:s.default},data:function(){return{isShowPer:!1,showVideo:!1,time:"12:30",date:"\u4eca\u5929",isMuted:!0,serviceInfo:{id:null,title:null,server_price:null,server_time:null,line_price:null,sales_num:0,photo:[],video:null,first_class_id:null,second_class_id:null,detail:[],process:[],purchase_notes:null,publish_user_id:null,server_kind:null,state:null,add_time:null,approve_user_id:null,approve_time:null,is_hot:null,is_delete:null,doorto_price:null},syrInfo:{},sjInfo:{},videoContext:null,comments:[{userName:"\u5c71\u6cb3*\u660e\u6708",avatar:"/static/images/avatar1.jpg",time:"2024-01-20",content:"\u5de5\u4f5c\u975e\u5e38\u4e13\u4e1a\uff0c\u6001\u5ea6\u5f88\u597d\uff0c\u7b2c\u4e00\u6b21\u6765\uff0c\u975e\u5e38\u6ee1\u610f\uff0c\u4e0b\u6b21\u8fd8\u4f1a\u6765",images:["/static/images/comment1.jpg","/static/images/comment2.jpg"],tab:"\u8d85\u51fa\u671f\u5f85",type:"\u53cc\u8272\u6cd5\u5f0f\u7f8e\u7532"}]}},onLoad:function(t){var e=this;a.default.post("/sj/serverdetail",{id:t.id}).then(function(){var t=(0,i.default)(o.default.mark((function t(r){var n;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.default.post("/sj/getsjdiscount",{id:r.data.first_class_id});case 2:n=t.sent,r.data.server_price=p.default.roundUpToTwoDecimals(Number(r.data.server_price),n.data.ratio),e.getSyrDetail(r.data.publish_user_id),"android"===uni.getSystemInfoSync().platform?e.$nextTick((function(){e.serviceInfo=r.data})):e.serviceInfo=r.data;case 6:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}())},mounted:function(){this.videoContext=uni.createVideoContext("myVideo",this)},onShow:function(){this.showVideo=!0},onHide:function(){this.showVideo=!1},methods:{getSyrDetail:function(e){var r=this;a.default.post("/sj/syrdetail",{id:e}).then((function(t){r.syrInfo=t.data})).catch((function(e){t("log",e," at pages/shop/service-detail.nvue:326")}))},goSyrHome:function(t){uni.navigateTo({url:"/pages/shop/servicesyr-home?id="+t})},toggleMute:function(){this.isMuted=!this.isMuted},previewImage:function(t,e){uni.previewImage({urls:t,current:e})},submitOrder:function(){t("log","\u70b9\u51fb\u4e86",this.syrInfo,this.sjInfo," at pages/shop/service-detail.nvue:346"),this.isLogin=!!uni.getStorageSync("accessToken"),this.isLogin?2!=this.syrInfo.order_taking&&2!=this.sjInfo.order_taking&&uni.navigateTo({url:"/pages/shop/create-order?id="+this.serviceInfo.id}):uni.showModal({title:"\u767b\u5f55\u63d0\u9192",content:"\u60a8\u6682\u672a\u767b\u5f55\uff0c\u65e0\u6cd5\u9884\u7ea6\u670d\u52a1\uff0c\u662f\u5426\u524d\u53bb\u767b\u5f55\uff1f",confirmColor:"#F1AC66",success:function(t){t.confirm&&uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}})},showPermissionDialog:function(t,e){return new Promise((function(r){uni.showModal({title:t,content:e,confirmText:"\u53bb\u5f00\u542f",success:function(t){r(t.confirm)}})}))},goContact:function(e){var r=this;return(0,i.default)(o.default.mark((function n(){var i,a,s,p;return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if("ios"!==(i=uni.getSystemInfoSync()).platform){n.next=5;break}uni.makePhoneCall({phoneNumber:e}),n.next=35;break;case 5:return a="",a="ios"===i.platform?"phone":"android.permission.CALL_PHONE",r.isShowPer=!0,!plus.storage.getItem("perm_".concat(a))&&(r.isShowPer=!0),n.next=12,u.default.checkPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 12:if(s=n.sent,!s.granted){n.next=18;break}return r.isShowPer=!1,uni.makePhoneCall({phoneNumber:e}),n.abrupt("return");case 18:return r.isShowPer=!1,n.next=21,r.showPermissionDialog("\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7","\u6211\u4eec\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 21:if(n.sent){n.next=24;break}return n.abrupt("return");case 24:return n.next=26,u.default.requestPermission("phone","\u9700\u8981\u62e8\u6253\u7535\u8bdd\u6743\u9650\uff0c\u65b9\u4fbf\u60a8\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0");case 26:if(p=n.sent,t("log","result",p," at pages/shop/service-detail.nvue:425"),!p){n.next=33;break}return uni.makePhoneCall({phoneNumber:e}),n.abrupt("return");case 33:return c.default.openAppSettings(),n.abrupt("return");case 35:case"end":return n.stop()}}),n)})))()},openMap:function(){p.default.goMap({latitude:parseFloat(this.serviceInfo.latitude),longitude:parseFloat(this.serviceInfo.longitude),name:this.serviceInfo.shop_name,address:this.serviceInfo.shop_address})}}};e.default=l}).call(this,r(2).default)},178:function(t,e){t.exports={".detail-page":{"":{paddingBottom:["188rpx",0,0,84]}},".main-image-section":{"":{position:["relative",0,0,2],width:["750rpx",0,0,2],height:["750rpx",0,0,2],backgroundColor:["#999999",0,0,2]}},".banner-swiper":{"":{width:["750rpx",0,0,3],height:["750rpx",0,0,3]}},".banner-image":{"":{width:["750rpx",0,0,4],height:["750rpx",0,0,4]}},".banner-tag":{"":{fontSize:["20rpx",0,0,5],fontWeight:["500",0,0,5],color:["#FFFFFF",0,0,5],paddingTop:["6rpx",0,0,5],paddingRight:["12rpx",0,0,5],paddingBottom:["6rpx",0,0,5],paddingLeft:["12rpx",0,0,5],backgroundColor:["rgba(0,0,0,0.4)",0,0,5],position:["absolute",0,0,5],borderRadius:["20rpx",0,0,5],right:["26rpx",0,0,5],bottom:["28rpx",0,0,5]}},".user-choice":{"":{backgroundColor:["#ffffff",0,0,7],paddingTop:["24rpx",0,0,7],paddingRight:["24rpx",0,0,7],paddingBottom:["24rpx",0,0,7],paddingLeft:["24rpx",0,0,7],boxShadow:["0 0 12rpx 0 rgba(0, 0, 0, 0.05)",0,0,7],marginTop:[0,0,0,7],marginRight:["24rpx",0,0,7],marginBottom:["24rpx",0,0,7],marginLeft:["24rpx",0,0,7],borderRadius:["16rpx",0,0,7]}},".comments-section":{"":{backgroundColor:["#ffffff",0,0,7],paddingTop:["24rpx",0,0,7],paddingRight:["24rpx",0,0,7],paddingBottom:["24rpx",0,0,7],paddingLeft:["24rpx",0,0,7],boxShadow:["0 0 12rpx 0 rgba(0, 0, 0, 0.05)",0,0,7],marginTop:[0,0,0,7],marginRight:["24rpx",0,0,7],marginBottom:["24rpx",0,0,7],marginLeft:["24rpx",0,0,7],borderRadius:["16rpx",0,0,7]}},".notice-section":{"":{backgroundColor:["#ffffff",0,0,7],paddingTop:["24rpx",0,0,7],paddingRight:["24rpx",0,0,7],paddingBottom:["24rpx",0,0,7],paddingLeft:["24rpx",0,0,7],boxShadow:["0 0 12rpx 0 rgba(0, 0, 0, 0.05)",0,0,7],marginTop:[0,0,0,7],marginRight:["24rpx",0,0,7],marginBottom:["24rpx",0,0,7],marginLeft:["24rpx",0,0,7],borderRadius:["16rpx",0,0,7]}},".service-info":{"":{marginTop:["20rpx",0,0,8],marginRight:["24rpx",0,0,8],marginBottom:["20rpx",0,0,8],marginLeft:["24rpx",0,0,8],backgroundColor:["#ffffff",0,0,8],boxShadow:["0 0 12rpx 0 rgba(0, 0, 0, 0.05)",0,0,8],paddingTop:["24rpx",0,0,8],borderRadius:["16rpx",0,0,8]}},".service-price":{"":{display:["flex",0,0,9],flexDirection:["row",0,0,9],flexWrap:["nowrap",0,0,9],justifyContent:["flex-start",0,0,9],alignItems:["center",0,0,9],marginBottom:["18rpx",0,0,9],paddingTop:[0,0,0,9],paddingRight:["24rpx",0,0,9],paddingBottom:[0,0,0,9],paddingLeft:["24rpx",0,0,9]}},".price-symbol":{"":{fontSize:["24rpx",0,0,10],color:["#E8101E",0,0,10],fontWeight:["500",0,0,10],marginRight:["2rpx",0,0,10]}},".price-value":{"":{fontSize:["32rpx",0,0,11],color:["#E8101E",0,0,11],fontWeight:["500",0,0,11]}},".service-title":{"":{marginBottom:["16rpx",0,0,12],paddingTop:[0,0,0,12],paddingRight:["24rpx",0,0,12],paddingBottom:[0,0,0,12],paddingLeft:["24rpx",0,0,12],display:["flex",0,0,12],flexDirection:["row",0,0,12],flexWrap:["nowrap",0,0,12],justifyContent:["flex-start",0,0,12],alignItems:["flex-start",0,0,12]}},".service-type":{"":{fontSize:["24rpx",0,0,13],color:["#FFFFFF",0,0,13],backgroundColor:["#FF94B4",0,0,13],paddingTop:["2rpx",0,0,13],paddingRight:["10rpx",0,0,13],paddingBottom:["2rpx",0,0,13],paddingLeft:["10rpx",0,0,13],borderRadius:["14rpx",0,0,13],marginRight:["12rpx",0,0,13]}},".title-text":{"":{flex:[1,0,0,14],fontSize:["26rpx",0,0,14],color:["#333333",0,0,14],fontWeight:["500",0,0,14]}},".service-tabs":{"":{display:["flex",0,0,15]}},".tab-item":{"":{height:["24rpx",0,0,16],lineHeight:["24rpx",0,0,16],fontSize:["16rpx",0,0,16],color:["#999999",0,0,16],backgroundColor:["#FFF2F2",0,0,16],paddingTop:[0,0,0,16],paddingRight:["8rpx",0,0,16],paddingBottom:[0,0,0,16],paddingLeft:["8rpx",0,0,16],borderRadius:["8rpx",0,0,16]}},".choice-item":{"":{height:["90rpx",0,0,18],display:["flex",0,0,18],flexDirection:["row",0,0,18],flexWrap:["nowrap",0,0,18],justifyContent:["flex-start",0,0,18],alignItems:["center",0,0,18]}},".choice-tit":{"":{fontSize:["24rpx",0,0,19],color:["#999999",0,0,19],marginRight:["16rpx",0,0,19]}},".choice-cont":{"":{flex:[1,0,0,20],display:["flex",0,0,20],flexDirection:["row",0,0,20],flexWrap:["nowrap",0,0,20],justifyContent:["space-between",0,0,20],alignItems:["center",0,0,20]}},".address-left":{"":{display:["flex",0,0,21],flexDirection:["row",0,0,21],flexWrap:["nowrap",0,0,21],justifyContent:["flex-start",0,0,21],alignItems:["center",0,0,21]}},".choice-text":{"":{fontSize:["24rpx",0,0,22],color:["#666666",0,0,22]}},".address-icon":{"":{width:["24rpx",0,0,23],height:["24rpx",0,0,23],marginRight:["8rpx",0,0,23]}},".enter-icon":{"":{width:["24rpx",0,0,24],height:["24rpx",0,0,24],marginLeft:["8rpx",0,0,24]}},".service-syr":{"":{display:["flex",0,0,26],flexDirection:["row",0,0,26],flexWrap:["nowrap",0,0,26],justifyContent:["space-between",0,0,26],alignItems:["center",0,0,26],marginTop:[0,0,0,26],marginRight:["24rpx",0,0,26],marginBottom:["24rpx",0,0,26],marginLeft:["24rpx",0,0,26],backgroundColor:["#ffffff",0,0,26],boxShadow:["rgba(0, 0, 0, 0.05)",0,0,26],paddingTop:["24rpx",0,0,26],paddingRight:["24rpx",0,0,26],paddingBottom:["24rpx",0,0,26],paddingLeft:["24rpx",0,0,26]}},".syr-head":{"":{width:["104rpx",0,0,27],height:["104rpx",0,0,27],borderRadius:["54rpx",0,0,27],marginRight:["10rpx",0,0,27]}},".syr-info":{"":{flex:[1,0,0,28]}},".syr-name":{"":{fontSize:["28rpx",0,0,29],color:["#3D3D3D",0,0,29]}},".look-btn":{"":{width:["130rpx",0,0,30],height:["56rpx",0,0,30],borderWidth:["1rpx",0,0,30],borderStyle:["solid",0,0,30],borderColor:["#E8101E",0,0,30],display:["flex",0,0,30],flexDirection:["row",0,0,30],flexWrap:["nowrap",0,0,30],justifyContent:["center",0,0,30],alignItems:["center",0,0,30],borderRadius:["28rpx",0,0,30]}},".look-text":{"":{fontSize:["28rpx",0,0,31],color:["#E8101E",0,0,31]}},".section-title":{"":{display:["flex",0,0,33],flexDirection:["row",0,0,33],flexWrap:["nowrap",0,0,33],justifyContent:["space-between",0,0,33],alignItems:["center",0,0,33]}},".section-num":{"":{fontSize:["28rpx",0,0,34],fontWeight:["500",0,0,34],color:["#3D3D3D",0,0,34]}},".look-all":{"":{display:["flex",0,0,35],flexDirection:["row",0,0,35],flexWrap:["nowrap",0,0,35],justifyContent:["flex-end",0,0,35],alignItems:["center",0,0,35]}},".look":{"":{fontSize:["24rpx",0,0,36],color:["#666666",0,0,36]}},".comment-item":{"":{paddingTop:["24rpx",0,0,37],paddingRight:[0,0,0,37],paddingBottom:["24rpx",0,0,37],paddingLeft:[0,0,0,37],display:["flex",0,0,37],flexDirection:["row",0,0,37],flexWrap:["nowrap",0,0,37],justifyContent:["space-between",0,0,37],alignItems:["center",0,0,37],"paddingBottom:last-child":["0rpx",0,0,38]}},".comment-header":{"":{display:["flex",0,0,39],alignItems:["center",0,0,39],marginBottom:["14rpx",0,0,39]}},".user-avatar":{"":{width:["64rpx",0,0,40],height:["64rpx",0,0,40],borderRadius:["32rpx",0,0,40],marginRight:["14rpx",0,0,40],backgroundColor:["#000000",0,0,40]}},".comment-user-info":{"":{flex:[1,0,0,41]}},".user-name":{"":{fontSize:["28rpx",0,0,42],color:["#3D3D3D",0,0,42],marginBottom:["10rpx",0,0,42]}},".comment-tab":{"":{fontSize:["16rpx",0,0,43],paddingTop:[0,0,0,43],paddingRight:["8rpx",0,0,43],paddingBottom:[0,0,0,43],paddingLeft:["8rpx",0,0,43],borderRadius:["12rpx",0,0,43],color:["#E8101E",0,0,43],backgroundColor:["rgba(255,148,180,0.5)",0,0,43],marginRight:["8rpx",0,0,43]}},".comment-type":{"":{fontSize:["20rpx",0,0,44],color:["#999999",0,0,44]}},".comment-content":{"":{fontSize:["22rpx",0,0,45],color:["#333333",0,0,45],lineHeight:[1.5,0,0,45]}},".comment-images":{"":{width:["154rpx",0,0,46],height:["154rpx",0,0,46],backgroundColor:["#000000",0,0,46],marginLeft:["56rpx",0,0,46]}},".comment-image":{"":{width:["160rpx",0,0,47],height:["160rpx",0,0,47],borderRadius:["8rpx",0,0,47]}},".section-tit":{"":{fontSize:["28rpx",0,0,49],fontWeight:["500",0,0,49],color:["#3D3D3D",0,0,49]}},".section-tit-right":{"":{display:["flex",0,0,50],flexDirection:["row",0,0,50],flexWrap:["nowrap",0,0,50],justifyContent:["flex-end",0,0,50],alignItems:["center",0,0,50]}},".rule-text":{"":{fontSize:["28rpx",0,0,51],color:["#D10F13",0,0,51]}},".notice-item":{"":{marginBottom:["24rpx",0,0,52]}},".notice-title":{"":{fontSize:["28rpx",0,0,53],color:["#333333",0,0,53],fontWeight:["500",0,0,53]}},".notice-content":{"":{marginTop:["32rpx",0,0,54]}},".notice-cont":{"":{display:["flex",0,0,55],flexDirection:["row",0,0,55],flexWrap:["nowrap",0,0,55],justifyContent:["flex-start",0,0,55],alignItems:["flex-start",0,0,55],marginBottom:["16rpx",0,0,55],"marginBottom:last-child":[0,0,0,56]}},".notice-text":{"":{flex:[1,0,0,57],fontSize:["26rpx",0,0,57],color:["#666666",0,0,57]}},".bottom-bar":{"":{position:["fixed",0,0,59],left:[0,0,0,59],right:[0,0,0,59],bottom:[0,0,0,59],height:["104rpx",0,0,59],backgroundColor:["#FFFFFF",0,0,59],display:["flex",0,0,59],flexDirection:["row",0,0,59],flexWrap:["nowrap",0,0,59],alignItems:["center",0,0,59],justifyContent:["flex-end",0,0,59],borderTopWidth:["1rpx",0,0,59],borderTopStyle:["solid",0,0,59],borderTopColor:["rgba(0,0,0,0.1)",0,0,59],paddingTop:[0,0,0,59],paddingRight:["38rpx",0,0,59],paddingBottom:[0,0,0,59],paddingLeft:["38rpx",0,0,59]}},".lianxi":{"":{display:["flex",0,0,60],flexDirection:["column",0,0,60],flexWrap:["nowrap",0,0,60],justifyContent:["center",0,0,60],alignItems:["center",0,0,60]}},".lianxi-text":{"":{fontSize:["16rpx",0,0,61],color:["#666666",0,0,61]}},".lianxi-icon":{"":{width:["34rpx",0,0,62],height:["34rpx",0,0,62],marginBottom:["10rpx",0,0,62]}},".submit-btn":{"":{width:["410rpx",0,0,63],height:["64rpx",0,0,63],backgroundColor:["#E8101E",0,0,63],borderRadius:["32rpx",0,0,63],color:["#FFFFFF",0,0,63],fontSize:["28rpx",0,0,63],fontWeight:["500",0,0,63],display:["flex",0,0,63],alignItems:["center",0,0,63],justifyContent:["center",0,0,63],marginLeft:["146rpx",0,0,63]}},".cannot-submit":{"":{backgroundColor:["#999999",0,0,64]}},".shop-info":{"":{display:["flex",0,0,66],flexDirection:["row",0,0,66],flexWrap:["nowrap",0,0,66],justifyContent:["flex-start",0,0,66],alignItems:["center",0,0,66],paddingTop:[0,0,0,66],paddingRight:["24rpx",0,0,66],paddingBottom:["16rpx",0,0,66],paddingLeft:["24rpx",0,0,66],borderBottomWidth:["1rpx",0,0,66],borderBottomStyle:["solid",0,0,66],borderBottomColor:["rgba(0,0,0,0.05)",0,0,66]}},".shop-logo":{"":{width:["112rpx",0,0,67],height:["136rpx",0,0,67],backgroundColor:["#000000",0,0,67],marginRight:["20rpx",0,0,67]}},".shop-info-you":{"":{flex:[1,0,0,68],display:["flex",0,0,68],flexDirection:["column",0,0,68],flexWrap:["wrap",0,0,68],justifyContent:["space-between",0,0,68],alignItems:["flex-start",0,0,68]}},".shop-name":{"":{fontSize:["28rpx",0,0,69],color:["#3D3D3D",0,0,69],marginBottom:["10rpx",0,0,69]}},".shop-class-w":{"":{width:["480rpx",0,0,70]}},".shop-class":{"":{marginBottom:["8rpx",0,0,71],fontSize:["24rpx",0,0,72],color:["#666666",0,0,72]}},".shop-time":{"":{fontSize:["24rpx",0,0,72],color:["#666666",0,0,72]}},".shop-cont":{"":{display:["flex",0,0,73],flexDirection:["row",0,0,73],flexWrap:["nowrap",0,0,73],justifyContent:["space-between",0,0,73],alignItems:["center",0,0,73],paddingTop:["16rpx",0,0,73],paddingRight:["24rpx",0,0,73],paddingBottom:["16rpx",0,0,73],paddingLeft:["24rpx",0,0,73]}},".shop-cont-left":{"":{display:["flex",0,0,74],flexDirection:["column",0,0,74],flexWrap:["wrap",0,0,74],justifyContent:["space-between",0,0,74],alignItems:["flex-start",0,0,74]}},".shop-cont-right":{"":{display:["flex",0,0,75],flexDirection:["row",0,0,75],flexWrap:["nowrap",0,0,75],justifyContent:["flex-end",0,0,75],alignItems:["center",0,0,75]}},".shop-address":{"":{width:["450rpx",0,0,76],fontSize:["24rpx",0,0,76],color:["#333333",0,0,76]}},".shop-tell":{"":{width:["450rpx",0,0,76],fontSize:["24rpx",0,0,76],color:["#333333",0,0,76]}},".shop-distance":{"":{fontSize:["24rpx",0,0,77],color:["#666666",0,0,77]}},".shop-headle":{"":{width:["40rpx",0,0,78],height:["40rpx",0,0,78],marginLeft:["60rpx",0,0,78]}},".video-controls":{"":{position:["absolute",0,0,79],left:[0,0,0,79],right:[0,0,0,79],bottom:[0,0,0,79],height:["100rpx",0,0,79],display:["flex",0,0,79],alignItems:["flex-start",0,0,79],justifyContent:["center",0,0,79],zIndex:[3,0,0,79]}},".control-btn":{"":{width:["60rpx",0,0,80],height:["60rpx",0,0,80],display:["flex",0,0,80],alignItems:["center",0,0,80],justifyContent:["center",0,0,80],backgroundColor:["rgba(0,0,0,0.5)",0,0,80],borderRadius:["30rpx",0,0,80],marginTop:[0,0,0,80],marginRight:["20rpx",0,0,80],marginBottom:[0,0,0,80],marginLeft:["20rpx",0,0,80]}},".control-icon":{"":{width:["40rpx",0,0,81],height:["40rpx",0,0,81]}},".permission":{".transform":{top:["180rpx",0,1,85],opacity:[1,0,1,85],visibility:["visible",0,1,85]}},"@VERSION":2}},18:function(t,e,r){"use strict";r.r(e);var n=r(7),o=r.n(n);for(var i in n)["default"].indexOf(i)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(i);e.default=o.a},19:function(t,e){if("undefined"==typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(t){var e=this.constructor;return this.then((function(r){return e.resolve(t()).then((function(){return r}))}),(function(r){return e.resolve(t()).then((function(){throw r}))}))}),"undefined"!=typeof uni&&uni&&uni.requireGlobal){var r=uni.requireGlobal();ArrayBuffer=r.ArrayBuffer,Int8Array=r.Int8Array,Uint8Array=r.Uint8Array,Uint8ClampedArray=r.Uint8ClampedArray,Int16Array=r.Int16Array,Uint16Array=r.Uint16Array,Int32Array=r.Int32Array,Uint32Array=r.Uint32Array,Float32Array=r.Float32Array,Float64Array=r.Float64Array,BigInt64Array=r.BigInt64Array,BigUint64Array=r.BigUint64Array}},2:function(t,e,r){"use strict";function n(t){var e=Object.prototype.toString.call(t);return e.substring(8,e.length-1)}function o(){return"string"==typeof __channelId__&&__channelId__}function i(t,e){switch(n(e)){case"Function":return"function() { [native code] }";default:return e}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){for(var t=arguments.length,e=new Array(t),r=0;r1){var c=s.pop();p=s.join("---COMMA---"),0===c.indexOf(" at ")?p+=c:p+="---COMMA---"+c}else p=s[0];console[a](p)},e.log=function(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var p=a.call(i,"catchLoc"),c=a.call(i,"finallyLoc");if(p&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),A(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:P(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),v}},r}t.exports=o,t.exports.__esModule=!0,t.exports.default=t.exports},215:function(t,e,r){"use strict";r.d(e,"b",(function(){return o})),r.d(e,"c",(function(){return i})),r.d(e,"a",(function(){return n}));var n={customNavbar:r(22).default},o=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("scroll-view",{staticStyle:{flexDirection:"column"},attrs:{scrollY:!0,showScrollbar:!0,enableBackToTop:!0,bubble:"true"}},[r("view",{staticClass:["detail-page"]},[r("custom-navbar",{attrs:{title:"\u670d\u52a1\u8be6\u60c5",showBack:!0,showUser:!1,titleColor:"#000"}}),r("view",{staticClass:["main-image-section"]},[r("swiper",{staticClass:["banner-swiper"],attrs:{circular:!0,indicatorDots:!1,autoplay:!1,interval:3e3,duration:500,indicatorActiveColor:"#fff",indicatorColor:"rgba(255, 255, 255, 0.6)"}},[t.serviceInfo.video?r("swiper-item",[t.serviceInfo.video&&t.showVideo?r("u-video",{staticClass:["banner-image"],attrs:{src:t.serviceInfo.video,id:"myVideo",autoplay:!0,controls:!1,muted:t.isMuted,enableProgressGesture:!1,loop:!0,objectFit:"cover"}}):t._e(),r("view",{staticClass:["video-controls"]},[r("view",{staticClass:["control-btn"],on:{click:t.toggleMute}},[r("u-image",{staticClass:["control-icon"],attrs:{src:t.isMuted?"/static/images/mute.png":"/static/images/unmute.png"}})],1)]),r("u-text",{staticClass:["banner-tag"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(1)+"/"+t._s(t.serviceInfo.photo.length+1))])],1):t._e(),t._l(t.serviceInfo.photo,(function(e,n){return r("swiper-item",{key:n,on:{click:function(e){t.previewImage(t.serviceInfo.photo,n)}}},[r("u-image",{staticClass:["banner-image"],attrs:{src:e,mode:"aspectFill",referrer:"no-referrer"}}),t.serviceInfo.video?r("u-text",{staticClass:["banner-tag"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(n+2)+"/"+t._s(t.serviceInfo.photo.length+1))]):r("u-text",{staticClass:["banner-tag"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(n+1)+"/"+t._s(t.serviceInfo.photo.length))])],1)}))],2)],1),r("view",{staticClass:["service-info"]},[r("view",{staticClass:["service-price"]},[r("u-text",{staticClass:["price-symbol"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\xa5")]),r("u-text",{staticClass:["price-value"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.serviceInfo.server_price))])]),r("view",{staticClass:["service-title"]},[r("u-text",{staticClass:["service-type"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(1==t.serviceInfo.server_kind?"\u5230\u5bb6":2==t.serviceInfo.server_kind?"\u5230\u5e97":""))]),r("u-text",{staticClass:["title-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.serviceInfo.title))])]),2==t.serviceInfo.server_kind?r("view",{staticClass:["service-shop"]},[r("view",{staticClass:["shop-info"]},[r("u-image",{staticClass:["shop-logo"],attrs:{src:t.serviceInfo.shop_head_photo,mode:"aspectFill"},on:{click:function(e){t.goShopHome(t.serviceInfo.publish_user_id)}}}),r("view",{staticClass:["shop-info-you"]},[r("u-text",{staticClass:["shop-name"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.serviceInfo.shop_name))]),r("view",{staticClass:["stars"]}),r("view",{staticClass:["shop-class-w"]},[r("u-text",{staticClass:["shop-class"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u4e3b\u8425\uff1a"+t._s(t.serviceInfo.shop_class.substr(1)))])]),r("u-text",{staticClass:["shop-time"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u8425\u4e1a\u65f6\u95f4\uff1a"+t._s(t.serviceInfo.shop_business_time))])])],1),r("view",{staticClass:["shop-cont"]},[r("view",{staticClass:["shop-cont-left"]},[r("view",[r("u-text",{staticClass:["shop-address"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.serviceInfo.shop_dependency)+t._s(t.serviceInfo.shop_address))])]),r("view",[r("u-text",{staticClass:["shop-tell"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u7535\u8bdd:"+t._s(t.serviceInfo.phone))])])]),r("view",{staticClass:["shop-cont-right"]},[r("u-image",{staticClass:["shop-headle"],attrs:{src:"/static/images/go_map.png",mode:"aspectFit"},on:{click:t.openMap}}),r("u-image",{staticClass:["shop-headle"],attrs:{src:"/static/images/go_phone.png",mode:"aspectFit"},on:{click:function(e){t.goContact(t.serviceInfo.phone)}}})],1)])]):t._e()]),1==t.serviceInfo.server_kind?r("view",{staticClass:["service-syr"]},[t.syrInfo.head_photo?r("u-image",{staticClass:["syr-head"],attrs:{src:t.syrInfo.head_photo,mode:"aspectFill"}}):t._e(),r("view",{staticClass:["syr-info"]},[r("u-text",{staticClass:["syr-name"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.syrInfo.name))])]),r("view",{staticClass:["look-btn"],on:{click:function(e){t.goSyrHome(t.serviceInfo.publish_user_id)}}},[r("u-text",{staticClass:["look-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u8fdb\u5165\u901b\u901b")])])],1):t._e(),r("view",{staticClass:["notice-section"]},[r("view",{staticClass:["section-title"]},[r("u-text",{staticClass:["section-tit"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u9879\u76ee\u8bf4\u660e")])]),r("view",{staticClass:["notice-content"]},[r("view",{staticClass:["notice-cont"]},[r("u-text",{staticClass:["notice-title"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u670d\u52a1\u65f6\u957f\uff1a")]),r("u-text",{staticClass:["notice-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.serviceInfo.server_time)+"\u5206\u949f")])]),t._l(t.serviceInfo.detail,(function(e,n){return r("view",{staticClass:["notice-cont"]},[r("u-text",{staticClass:["notice-title"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(e.title)+"\uff1a")]),r("u-text",{staticClass:["notice-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(e.text))])])}))],2)]),r("view",{staticClass:["notice-section"]},[r("view",{staticClass:["section-title"]},[r("u-text",{staticClass:["section-tit"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u9879\u76ee\u6b65\u9aa4")])]),r("view",{staticClass:["notice-content"]},t._l(t.serviceInfo.process,(function(e,n){return r("view",{staticClass:["notice-cont"]},[r("u-text",{staticClass:["notice-title"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(e.title)+"\uff1a")]),r("u-text",{staticClass:["notice-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(e.text))])])})),0)]),r("view",{staticClass:["notice-section"]},[r("view",{staticClass:["section-title"]},[r("u-text",{staticClass:["section-tit"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u8ba2\u8d2d\u987b\u77e5")])]),r("view",{staticClass:["notice-content"]},[r("u-text",{staticClass:["notice-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.serviceInfo.purchasenotes))])])]),r("view",{staticClass:["bottom-bar"]},[r("view",{staticClass:["submit-btn"],class:2==t.syrInfo.order_taking||2==t.sjInfo.order_taking?"cannot-submit":"",on:{click:t.submitOrder}},[r("u-text",{staticClass:["btn-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u7acb\u5373\u9884\u7ea6")])])]),r("view",{staticClass:["permission"],class:{transform:t.isShowPer}},[r("u-text",{staticClass:["per-tit"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u7f8e\u878d\u878dplus \u5bf9\u62e8\u6253\u7535\u8bdd\u6743\u9650\u7533\u8bf7\u8bf4\u660e")]),r("u-text",{staticClass:["per-cont"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u5f53\u60a8\u9700\u8981\u8054\u7cfb\u5546\u5bb6\u6216\u5e73\u53f0\u5ba2\u670d\u7684\u65f6\u5019\uff0c\u9700\u8981\u83b7\u53d6\u62e8\u6253\u7535\u8bdd\u6743\u9650\u3002")])])],1)])},i=[]},22:function(t,e,r){"use strict";r.r(e);var n=r(11),o=r(8);for(var i in o)["default"].indexOf(i)<0&&function(t){r.d(e,t,(function(){return o[t]}))}(i);var a=r(0);var s=Object(a.a)(o.default,n.b,n.c,!1,null,null,"43cd5ac3",!1,n.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(14).default,this.options.style):Object.assign(this.options.style,r(14).default)}).call(s),e.default=s.exports},23:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getToken=function(){return uni.getStorageSync("accessToken")},e.removeToken=function(){uni.removeStorageSync("accessToken"),uni.removeStorageSync("refreshToken")},e.setToken=function(t){uni.setStorageSync("accessToken",t)}},24:function(t,e,r){"use strict";(function(t){var n=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.getBaseUrl=function(){return c.apply(this,arguments)},e.setVersion=function(){var e=uni.getSystemInfoSync();a=e.appWgtVersion,s=e.deviceBrand,t("log","DeviceType",s," at utils/version.js:26"),"android"===(p=e.platform)?p="sj_android":"ios"===p&&(p="sj_ios");var r={VersionCode:a||"",DeviceBrand:p||"",DeviceType:s||""};uni.setStorageSync("setVersion",r)};var o=n(r(3)),i=n(r(4)),a="",s="",p="";function c(){return(c=(0,i.default)(o.default.mark((function e(){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=uni.getStorageSync("setVersion"),e.next=3,uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:r.VersionCode,DeviceBrand:r.DeviceBrand,DeviceType:r.DeviceType},success:function(t){return 200==t.data.code&&uni.setStorageSync("baseUrl",t.data.data.url),t.data.data.url},fail:function(e){return t("log","\u8bf7\u6c42\u5931\u8d25",e," at utils/version.js:82"),"http://60.247.146.5:93"},complete:function(){t("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/version.js:86")}});case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}}).call(this,r(2).default)},273:function(t,e,r){"use strict";r.r(e);var n=r(178),o=r.n(n);for(var i in n)["default"].indexOf(i)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(i);e.default=o.a},28:function(t,e,r){"use strict";(function(t){var n=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=n(r(3)),i=n(r(4)),a={isLocationEnabled:function(){var t=this;return new Promise((function(e,r){t._checkAppLocation().then(e).catch(r)}))},_checkAppLocation:function(){return new Promise((function(e){plus.geolocation.getCurrentPosition((function(){return e(!0)}),(function(r){t("log",r,"---------------------"," at utils/locationService.js:48"),2===r.code||r.code,e(!1)}),{provider:"system",enableHighAccuracy:!1})}))},_checkWxLocation:function(){return new Promise((function(t){wx.getSetting({success:function(e){var r=e.authSetting||{};t(!1!==r["scope.userLocation"])},fail:function(){t(!1)}})}))},_checkH5Location:function(){return new Promise((function(t){navigator.permissions&&navigator.permissions.query?navigator.permissions.query({name:"geolocation"}).then((function(e){t("denied"!==e.state)})).catch((function(){t("geolocation"in navigator)})):t("geolocation"in navigator)}))},requestLocationPermission:function(){return new Promise((function(t){uni.authorize({scope:"scope.userLocation",success:function(){return t(!0)},fail:function(){return t(!1)}})}))},openSystemLocationSetting:function(){if("Android"===plus.os.name){var t=plus.android.importClass("android.content.Intent"),e=plus.android.importClass("android.provider.Settings"),r=plus.android.runtimeMainActivity(),n=new t(e.ACTION_LOCATION_SOURCE_SETTINGS);r.startActivity(n)}else if("iOS"===plus.os.name){var o=plus.ios.importClass("UIApplication"),i=plus.ios.importClass("NSURL").URLWithString("App-Prefs:root=Privacy&path=LOCATION"),a=o.sharedApplication();plus.ios.invoke(a,"openURL:",i)}},openAppSettings:function(){if("Android"===plus.os.name){var t=plus.android.importClass("android.content.Intent"),e=plus.android.importClass("android.provider.Settings"),r=plus.android.importClass("android.net.Uri"),n=plus.android.runtimeMainActivity(),o=new t;o.setAction(e.ACTION_APPLICATION_DETAILS_SETTINGS);var i=r.fromParts("package",n.getPackageName(),null);o.setData(i),n.startActivity(o)}else if("iOS"===plus.os.name){var a=plus.ios.invoke("UIApplication","sharedApplication"),s=plus.ios.invoke("NSURL","URLWithString:","app-settings:");plus.ios.invoke(a,"openURL:options:completionHandler:",s),plus.ios.deleteObject(s),plus.ios.deleteObject(a)}},getCurrentPosition:function(){var t=arguments,e=this;return(0,i.default)(o.default.mark((function r(){var n;return o.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return t.length>0&&void 0!==t[0]?t[0]:{},r.next=3,e.isLocationEnabled();case 3:if(n=r.sent){r.next=7;break}return r.abrupt("return",n);case 7:return r.abrupt("return",n);case 8:case"end":return r.stop()}}),r)})))()}};e.default=a}).call(this,r(2).default)},29:function(t,e,r){"use strict";(function(t){var n=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=n(r(3)),i=n(r(4)),a={checkPermission:function(t){var e=arguments,r=this;return(0,i.default)(o.default.mark((function n(){var i;return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=e.length>1&&void 0!==e[1]?e[1]:"",n.next=3,r._checkAppPermission(t,i);case 3:return n.abrupt("return",n.sent);case 4:case"end":return n.stop()}}),n)})))()},_checkAppPermission:function(e,r){var n=this;return(0,i.default)(o.default.mark((function i(){var a;return o.default.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(a={camera:{android:"android.permission.CAMERA",ios:"camera"},location:{android:"android.permission.ACCESS_FINE_LOCATION",ios:"location"},phone:{android:"android.permission.CALL_PHONE",ios:"phone"},photo_library:{android:["android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE"],ios:"photo_library"}}[e]){o.next=5;break}return t("error","\u4e0d\u652f\u6301\u7684\u6743\u9650\u7c7b\u578b:",e," at utils/per.js:62"),o.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 5:if("Android"!==plus.os.name){o.next=9;break}return o.abrupt("return",n._checkAndroidPermission(a.android));case 9:return o.abrupt("return",n._checkIosPermission(a.ios,r));case 10:return o.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 11:case"end":return o.stop()}}),i)})))()},_checkAndroidPermission:function(e){return(0,i.default)(o.default.mark((function r(){return o.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",new Promise((function(r){plus.android.requestPermissions(Array.isArray(e)?e:[e],(function(n){t("log","perm_".concat(e),n," at utils/per.js:85");var o=!plus.storage.getItem("perm_".concat(e));o&&plus.storage.setItem("perm_".concat(e),"1"),0!==n.deniedPresent.length&&plus.storage.setItem("perm_".concat(e,"_no"),"2"),0!==n.granted.length&&plus.storage.removeItem("perm_".concat(e,"_no"),"2"),r({granted:0!==n.granted.length,firstRequest:o,canRequest:!0})}),(function(t){r({granted:!1,firstRequest:!1,canRequest:!0})}))})));case 1:case"end":return r.stop()}}),r)})))()},_checkIosPermission:function(e,r){return(0,i.default)(o.default.mark((function r(){var n,i;return o.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:r.prev=0,r.t0=e,r.next="camera"===r.t0?4:"location"===r.t0?6:10;break;case 4:return n=plus.ios.invoke("AVCaptureDevice","authorizationStatusForMediaType:","vide"),r.abrupt("break",11);case 6:return i=plus.ios.newObject("CLLocationManager"),n=plus.ios.invoke(i,"authorizationStatus"),plus.ios.deleteObject(i),r.abrupt("break",11);case 10:return r.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 11:return r.abrupt("return",{granted:3===n,firstRequest:0===n,canRequest:2!==n});case 14:return r.prev=14,r.t1=r.catch(0),t("error","iOS\u6743\u9650\u68c0\u67e5\u9519\u8bef:",r.t1," at utils/per.js:146"),r.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 18:case"end":return r.stop()}}),r,null,[[0,14]])})))()},_checkMpPermission:function(t){return(0,i.default)(o.default.mark((function e(){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r={camera:"scope.camera",location:"scope.userLocation",record:"scope.record"}[t]){e.next=4;break}return e.abrupt("return",{granted:!1,firstRequest:!1,canRequest:!1});case 4:return e.abrupt("return",new Promise((function(t){uni.getSetting({success:function(e){var n=e.authSetting;t({granted:!0===n[r],firstRequest:void 0===n[r],canRequest:!1!==n[r]})},fail:function(){t({granted:!1,firstRequest:!1,canRequest:!1})}})})));case 5:case"end":return e.stop()}}),e)})))()},requestPermission:function(t){var e=arguments,r=this;return(0,i.default)(o.default.mark((function n(){var i,a,s,p;return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=e.length>1&&void 0!==e[1]?e[1]:"",n.next=3,r.checkPermission(t,i);case 3:if(a=n.sent,s=a.granted,a.firstRequest,p=a.canRequest,!s){n.next=9;break}return n.abrupt("return",!0);case 9:if(p){n.next=11;break}return n.abrupt("return",!1);case 11:return n.abrupt("return",r._requestAppPermission(t,i));case 12:case"end":return n.stop()}}),n)})))()},_requestAppPermission:function(t,e){return(0,i.default)(o.default.mark((function t(){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",!1);case 1:case"end":return t.stop()}}),t)})))()},_requestMpPermission:function(t){return(0,i.default)(o.default.mark((function e(){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r={camera:"scope.camera",location:"scope.userLocation",record:"scope.record"}[t]){e.next=4;break}return e.abrupt("return",!1);case 4:return e.abrupt("return",new Promise((function(t){uni.authorize({scope:r,success:function(){return t(!0)},fail:function(){return t(!1)}})})));case 5:case"end":return e.stop()}}),e)})))()},openSystemSettings:function(){if("Android"===plus.os.name){var t=plus.android.importClass("android.content.Intent"),e=plus.android.importClass("android.provider.Settings"),r=plus.android.importClass("android.net.Uri"),n=plus.android.runtimeMainActivity(),o=new t;o.setAction(e.ACTION_APPLICATION_DETAILS_SETTINGS);var i=r.fromParts("package",n.getPackageName(),null);o.setData(i),n.startActivity(o)}else{var a=plus.ios.import("UIApplication"),s=plus.ios.import("NSURL").URLWithString("app-settings:"),p=a.sharedApplication();plus.ios.invoke(p,"canOpenURL:",s)&&plus.ios.invoke(p,"openURL:",s),plus.ios.deleteObject(s),plus.ios.deleteObject(p)}}};e.default=a}).call(this,r(2).default)},3:function(t,e,r){var n=r(5),o=r(21)();t.exports=o;try{regeneratorRuntime=o}catch(t){"object"===("undefined"==typeof globalThis?"undefined":n(globalThis))?globalThis.regeneratorRuntime=o:Function("r","regeneratorRuntime = r")(o)}},301:function(t,e,r){"use strict";r.r(e);r(17),r(19);var n=r(127);n.default.mpType="page",n.default.route="pages/shop/service-detail",n.default.el="#root",new Vue(n.default)},4:function(t,e){function r(t,e,r,n,o,i,a){try{var s=t[i](a),p=s.value}catch(t){return void r(t)}s.done?e(p):Promise.resolve(p).then(n,o)}t.exports=function(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var a=t.apply(e,n);function s(t){r(a,o,i,s,p,"next",t)}function p(t){r(a,o,i,s,p,"throw",t)}s(void 0)}))}},t.exports.__esModule=!0,t.exports.default=t.exports},41:function(t,e,r){"use strict";(function(t){var n=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=n(r(6));function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function a(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return s(a({},t))},calcDistance:function(t,e,r,n){return function(t,e,r,n){var o=function(t){return t*(Math.PI/180)},i=o(r-t),a=o(n-e),s=Math.sin(i/2)*Math.sin(i/2)+Math.cos(o(t))*Math.cos(o(r))*Math.sin(a/2)*Math.sin(a/2);return(6371*(2*Math.atan2(Math.sqrt(s),Math.sqrt(1-s)))).toFixed(2)}(t,e,r,n)},roundUpToTwoDecimals:function(t,e){return(Math.floor(t*e*100+.9)/100).toFixed(2)},getDateStr:function(t){var e=new Date;return e.setDate(e.getDate()+t),"".concat(e.getFullYear(),"-").concat((e.getMonth()+1).toString().padStart(2,"0"),"-").concat(e.getDate().toString().padStart(2,"0"))}};e.default=c}).call(this,r(2).default)},5:function(t,e){function r(e){return t.exports=r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,r(e)}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},6:function(t,e,r){var n=r(13);t.exports=function(t,e,r){return(e=n(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t},t.exports.__esModule=!0,t.exports.default=t.exports},7:function(t,e){t.exports={"@FONT-FACE":[{fontFamily:"shuHeiTi",src:'url("~@/static/Font/shuHeiTi.ttf") format("truetype")',fontDisplay:"swap"},{fontFamily:"DINPro",src:'url("~@/static/Font/DIN-Bold.otf") format("opentype")',fontWeight:"700",fontStyle:"normal"},{fontFamily:"DINPro",src:'url("~@/static/Font/DIN-Regular.otf") format("opentype")',fontWeight:"400",fontStyle:"normal"},{fontFamily:"DINPro",src:'url("~@/static/Font/DINPro-Medium.otf") format("opentype")',fontWeight:"500",fontStyle:"normal"}],".num_bold_text":{"":{fontWeight:["700",0,0,10],fontFamily:['"DINPro"',0,0,10]}},".num_regular_text":{"":{fontWeight:["400",0,0,12],fontFamily:['"DINPro"',0,0,12]}},".num_medium_text":{"":{fontWeight:["500",0,0,14],fontFamily:['"DINPro"',0,0,14]}},".flex":{"":{display:["flex",0,0,20]}},".flex-column":{"":{display:["flex",0,0,21],flexDirection:["column",0,0,21]}},".flex-wrap":{"":{flexWrap:["wrap",0,0,22]}},".flex-1":{"":{flex:[1,0,0,23]}},".justify-start":{"":{justifyContent:["flex-start",0,0,25]}},".justify-end":{"":{justifyContent:["flex-end",0,0,26]}},".justify-center":{"":{justifyContent:["center",0,0,27]}},".justify-between":{"":{justifyContent:["space-between",0,0,28]}},".justify-around":{"":{justifyContent:["space-around",0,0,29]}},".align-start":{"":{alignItems:["flex-start",0,0,30]}},".align-end":{"":{alignItems:["flex-end",0,0,31]}},".align-center":{"":{alignItems:["center",0,0,32]}},".align-stretch":{"":{alignItems:["stretch",0,0,33]}},".m-10":{"":{marginTop:["10rpx",0,0,35],marginRight:["10rpx",0,0,35],marginBottom:["10rpx",0,0,35],marginLeft:["10rpx",0,0,35]}},".m-20":{"":{marginTop:["20rpx",0,0,36],marginRight:["20rpx",0,0,36],marginBottom:["20rpx",0,0,36],marginLeft:["20rpx",0,0,36]}},".m-30":{"":{marginTop:["30rpx",0,0,37],marginRight:["30rpx",0,0,37],marginBottom:["30rpx",0,0,37],marginLeft:["30rpx",0,0,37]}},".m-40":{"":{marginTop:["40rpx",0,0,38],marginRight:["40rpx",0,0,38],marginBottom:["40rpx",0,0,38],marginLeft:["40rpx",0,0,38]}},".mt-10":{"":{marginTop:["10rpx",0,0,39]}},".mt-20":{"":{marginTop:["20rpx",0,0,40]}},".mt-30":{"":{marginTop:["30rpx",0,0,41]}},".mt-40":{"":{marginTop:["40rpx",0,0,42]}},".mb-10":{"":{marginBottom:["10rpx",0,0,43]}},".mb-20":{"":{marginBottom:["20rpx",0,0,44]}},".mb-30":{"":{marginBottom:["30rpx",0,0,45]}},".mb-40":{"":{marginBottom:["40rpx",0,0,46]}},".ml-10":{"":{marginLeft:["10rpx",0,0,47]}},".ml-20":{"":{marginLeft:["20rpx",0,0,48]}},".ml-30":{"":{marginLeft:["30rpx",0,0,49]}},".ml-40":{"":{marginLeft:["40rpx",0,0,50]}},".mr-10":{"":{marginRight:["10rpx",0,0,51]}},".mr-20":{"":{marginRight:["20rpx",0,0,52]}},".mr-30":{"":{marginRight:["30rpx",0,0,53]}},".mr-40":{"":{marginRight:["40rpx",0,0,54]}},".p-10":{"":{paddingTop:["10rpx",0,0,55],paddingRight:["10rpx",0,0,55],paddingBottom:["10rpx",0,0,55],paddingLeft:["10rpx",0,0,55]}},".p-20":{"":{paddingTop:["20rpx",0,0,56],paddingRight:["20rpx",0,0,56],paddingBottom:["20rpx",0,0,56],paddingLeft:["20rpx",0,0,56]}},".p-30":{"":{paddingTop:["30rpx",0,0,57],paddingRight:["30rpx",0,0,57],paddingBottom:["30rpx",0,0,57],paddingLeft:["30rpx",0,0,57]}},".p-40":{"":{paddingTop:["40rpx",0,0,58],paddingRight:["40rpx",0,0,58],paddingBottom:["40rpx",0,0,58],paddingLeft:["40rpx",0,0,58]}},".pt-10":{"":{paddingTop:["10rpx",0,0,59]}},".pt-20":{"":{paddingTop:["20rpx",0,0,60]}},".pt-30":{"":{paddingTop:["30rpx",0,0,61]}},".pt-40":{"":{paddingTop:["40rpx",0,0,62]}},".pb-10":{"":{paddingBottom:["10rpx",0,0,63]}},".pb-20":{"":{paddingBottom:["20rpx",0,0,64]}},".pb-30":{"":{paddingBottom:["30rpx",0,0,65]}},".pb-40":{"":{paddingBottom:["40rpx",0,0,66]}},".pl-10":{"":{paddingLeft:["10rpx",0,0,67]}},".pl-20":{"":{paddingLeft:["20rpx",0,0,68]}},".pl-30":{"":{paddingLeft:["30rpx",0,0,69]}},".pl-40":{"":{paddingLeft:["40rpx",0,0,70]}},".pr-10":{"":{paddingRight:["10rpx",0,0,71]}},".pr-20":{"":{paddingRight:["20rpx",0,0,72]}},".pr-30":{"":{paddingRight:["30rpx",0,0,73]}},".pr-40":{"":{paddingRight:["40rpx",0,0,74]}},".pr-240":{"":{paddingRight:["240rpx",0,0,75]}},".text-left":{"":{textAlign:["left",0,0,77]}},".text-center":{"":{textAlign:["center",0,0,78]}},".text-right":{"":{textAlign:["right",0,0,79]}},".text-primary":{"":{color:["#007aff",0,0,80]}},".text-success":{"":{color:["#4cd964",0,0,81]}},".text-warning":{"":{color:["#f0ad4e",0,0,82]}},".text-danger":{"":{color:["#dd524d",0,0,83]}},".text-info":{"":{color:["#909399",0,0,84]}},".text-sm":{"":{fontSize:["24rpx",0,0,85]}},".text-md":{"":{fontSize:["28rpx",0,0,86]}},".text-lg":{"":{fontSize:["32rpx",0,0,87]}},".text-xl":{"":{fontSize:["36rpx",0,0,88]}},".text-bold":{"":{fontWeight:["bold",0,0,89]}},".text-normal":{"":{fontWeight:["normal",0,0,90]}},".bg-white":{"":{backgroundColor:["#ffffff",0,0,92]}},".bg-primary":{"":{backgroundColor:["#007aff",0,0,93]}},".bg-success":{"":{backgroundColor:["#4cd964",0,0,94]}},".bg-warning":{"":{backgroundColor:["#f0ad4e",0,0,95]}},".bg-danger":{"":{backgroundColor:["#dd524d",0,0,96]}},".bg-info":{"":{backgroundColor:["#909399",0,0,97]}},".bg-gray":{"":{backgroundColor:["#f5f5f5",0,0,98]}},".border":{"":{borderWidth:["1rpx",0,0,100],borderStyle:["solid",0,0,100],borderColor:["#e5e5e5",0,0,100]}},".border-top":{"":{borderTopWidth:["1rpx",0,0,101],borderTopStyle:["solid",0,0,101],borderTopColor:["#e5e5e5",0,0,101]}},".border-bottom":{"":{borderBottomWidth:["1rpx",0,0,102],borderBottomStyle:["solid",0,0,102],borderBottomColor:["#e5e5e5",0,0,102]}},".border-left":{"":{borderLeftWidth:["1rpx",0,0,103],borderLeftStyle:["solid",0,0,103],borderLeftColor:["#e5e5e5",0,0,103]}},".border-right":{"":{borderRightWidth:["1rpx",0,0,104],borderRightStyle:["solid",0,0,104],borderRightColor:["#e5e5e5",0,0,104]}},".rounded":{"":{borderRadius:["8rpx",0,0,106]}},".rounded-lg":{"":{borderRadius:["16rpx",0,0,107]}},".rounded-xl":{"":{borderRadius:["24rpx",0,0,108]}},".rounded-circle":{"":{borderRadius:[50,0,0,109]}},".shadow":{"":{boxShadow:["0 2rpx 8rpx rgba(0, 0, 0, 0.1)",0,0,111]}},".shadow-lg":{"":{boxShadow:["0 4rpx 16rpx rgba(0, 0, 0, 0.1)",0,0,112]}},".relative":{"":{position:["relative",0,0,114]}},".absolute":{"":{position:["absolute",0,0,115]}},".fixed":{"":{position:["fixed",0,0,116]}},".btn":{"":{display:["flex",0,0,120],alignItems:["center",0,0,120],justifyContent:["center",0,0,120],paddingTop:["20rpx",0,0,120],paddingRight:["40rpx",0,0,120],paddingBottom:["20rpx",0,0,120],paddingLeft:["40rpx",0,0,120],borderRadius:["8rpx",0,0,120],fontSize:["28rpx",0,0,120],lineHeight:[1.5,0,0,120],textAlign:["center",0,0,120]}},".btn-primary":{"":{backgroundColor:["#007aff",0,0,121],color:["#ffffff",0,0,121]}},".btn-success":{"":{backgroundColor:["#4cd964",0,0,122],color:["#ffffff",0,0,122]}},".btn-warning":{"":{backgroundColor:["#f0ad4e",0,0,123],color:["#ffffff",0,0,123]}},".btn-danger":{"":{backgroundColor:["#dd524d",0,0,124],color:["#ffffff",0,0,124]}},".btn-info":{"":{backgroundColor:["#909399",0,0,125],color:["#ffffff",0,0,125]}},".card":{"":{backgroundColor:["#ffffff",0,0,127],borderRadius:["8rpx",0,0,127],paddingTop:["20rpx",0,0,127],paddingRight:["20rpx",0,0,127],paddingBottom:["20rpx",0,0,127],paddingLeft:["20rpx",0,0,127],marginTop:["20rpx",0,0,127],marginRight:["20rpx",0,0,127],marginBottom:["20rpx",0,0,127],marginLeft:["20rpx",0,0,127],boxShadow:["0 2rpx 8rpx rgba(0, 0, 0, 0.1)",0,0,127]}},".list-item":{"":{display:["flex",0,0,129],alignItems:["center",0,0,129],paddingTop:["20rpx",0,0,129],paddingRight:["20rpx",0,0,129],paddingBottom:["20rpx",0,0,129],paddingLeft:["20rpx",0,0,129],backgroundColor:["#ffffff",0,0,129],borderBottomWidth:["1rpx",0,0,129],borderBottomStyle:["solid",0,0,129],borderBottomColor:["#e5e5e5",0,0,129]}},".loading":{"":{display:["flex",0,0,131],alignItems:["center",0,0,131],justifyContent:["center",0,0,131],paddingTop:["20rpx",0,0,131],paddingRight:["20rpx",0,0,131],paddingBottom:["20rpx",0,0,131],paddingLeft:["20rpx",0,0,131]}},".loading-text":{"":{marginLeft:["10rpx",0,0,132],color:["#909399",0,0,132],fontSize:["24rpx",0,0,132]}},".empty":{"":{display:["flex",0,0,134],flexDirection:["column",0,0,134],alignItems:["center",0,0,134],justifyContent:["center",0,0,134],paddingTop:["40rpx",0,0,134],paddingRight:["40rpx",0,0,134],paddingBottom:["40rpx",0,0,134],paddingLeft:["40rpx",0,0,134]}},".empty-image":{"":{width:["200rpx",0,0,135],height:["200rpx",0,0,135],marginBottom:["20rpx",0,0,135]}},".empty-text":{"":{color:["#909399",0,0,136],fontSize:["28rpx",0,0,136]}},".text-overflow":{"":{WebkitBoxOrient:["vertical",0,0,137],WebkitLineClamp:[2,0,0,137],overflow:["hidden",0,0,137]}},".text-overflow-nvue":{"":{lines:[2,0,0,138],textOverflow:["ellipsis",0,0,138]}},".white-space-nowrap":{"":{width:["300rpx",0,0,139],whiteSpace:["nowrap",0,0,139],overflow:["hidden",0,0,139],textOverflow:["ellipsis",0,0,139]}},".text-overflow-1":{"":{WebkitBoxOrient:["vertical",0,0,140],WebkitLineClamp:[1,0,0,140],overflow:["hidden",0,0,140]}},".text-overflow-nvue1":{"":{lines:[1,0,0,141],textOverflow:["ellipsis",0,0,141]}},".box-cont":{"":{backgroundColor:["#ffffff",0,0,142],marginTop:["24rpx",0,0,142],marginRight:["24rpx",0,0,142],marginBottom:["24rpx",0,0,142],marginLeft:["24rpx",0,0,142],boxShadow:["0 0 12rpx 0 rgba(0, 0, 0, 0.05)",0,0,142]}},".btn-box":{"":{height:["64rpx",0,0,143],textAlign:["center",0,0,143],lineHeight:["64rpx",0,0,143],backgroundColor:["#E8101E",0,0,143],borderRadius:["32rpx",0,0,143],position:["fixed",0,0,143],left:["24rpx",0,0,143],bottom:["68rpx",0,0,143],right:["24rpx",0,0,143],zIndex:[999,0,0,143]}},".btn-text":{"":{fontSize:["28rpx",0,0,144],fontWeight:["500",0,0,144],color:["#ffffff",0,0,144]}},".agree-btn":{"":{width:["32rpx",0,0,145],height:["32rpx",0,0,145]}},".fixed-box":{"":{paddingTop:["32rpx",0,0,146],paddingRight:["24rpx",0,0,146],paddingBottom:["32rpx",0,0,146],paddingLeft:["24rpx",0,0,146],backgroundColor:["#ffffff",0,0,146],position:["absolute",0,0,146],left:[0,0,0,146],bottom:[0,0,0,146],right:[0,0,0,146],zIndex:[9999,0,0,146]}},".fixed-btn":{"":{height:["80rpx",0,0,147],backgroundColor:["#E8101E",0,0,147],borderRadius:["40rpx",0,0,147],display:["flex",0,0,147],alignItems:["center",0,0,147],justifyContent:["center",0,0,147]}},".fixed-text":{"":{fontSize:["28rpx",0,0,148],color:["#ffffff",0,0,148],fontWeight:["500",0,0,148]}},".arrow-right":{"":{width:["32rpx",0,0,149],height:["32rpx",0,0,149]}},".permission":{"":{position:["fixed",0,0,150],top:[0,0,0,150],left:["24rpx",0,0,150],right:["24rpx",0,0,150],backgroundColor:["#ffffff",0,0,150],borderRadius:["20rpx",0,0,150],paddingTop:["24rpx",0,0,150],paddingRight:["24rpx",0,0,150],paddingBottom:["24rpx",0,0,150],paddingLeft:["24rpx",0,0,150],zIndex:[9,0,0,150],boxShadow:["0 8rpx 16rpx 0 rgba(0, 0, 0, 0.05)",0,0,150],opacity:[0,0,0,150],transitionDuration:[300,0,0,150],transitionTimingFunction:["ease",0,0,150],transitionDelay:[0,0,0,150],visibility:["hidden",0,0,150]}},".per-tit":{"":{fontSize:["32rpx",0,0,151],fontWeight:["700",0,0,151],color:["#007aff",0,0,151]}},".per-cont":{"":{fontSize:["28rpx",0,0,152],color:["#333333",0,0,152]}},".flex-row-center-between":{"":{display:["flex",0,0,154],flexDirection:["row",0,0,154],alignItems:["center",0,0,154],justifyContent:["space-between",0,0,154]}},".flex-row-start-between":{"":{display:["flex",0,0,155],flexDirection:["row",0,0,155],alignItems:["flex-start",0,0,155],justifyContent:["space-between",0,0,155]}},".flex-row-center-center":{"":{display:["flex",0,0,156],flexDirection:["row",0,0,156],alignItems:["center",0,0,156],justifyContent:["center",0,0,156]}},".flex-row-center":{"":{display:["flex",0,0,157],flexDirection:["row",0,0,157],alignItems:["center",0,0,157]}},".flex-row-start":{"":{display:["flex",0,0,158],flexDirection:["row",0,0,158],alignItems:["flex-start",0,0,158]}},".flex-row-end-between":{"":{display:["flex",0,0,159],flexDirection:["row",0,0,159],alignItems:["flex-end",0,0,159],justifyContent:["space-between",0,0,159]}},"@VERSION":2}},8:function(t,e,r){"use strict";r.r(e);var n=r(9),o=r.n(n);for(var i in n)["default"].indexOf(i)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(i);e.default=o.a},9:function(t,e,r){"use strict";var n=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=n(r(3)),i=n(r(4)),a={name:"CustomNavbar",props:{title:{type:String,default:""},showBack:{type:Boolean,default:!0},showHeadle:{type:Boolean,default:!1},headleSrc:{type:String,default:""},backgroundColor:{type:String,default:"#ffffff"},titleColor:{type:String,default:"#333333"},borderBottom:{type:String,default:"1rpx solid rgba(0, 0, 0, 0.05)"},nowStyle:{type:String,default:"1rpx solid rgba(0, 0, 0, 0.05)"},leftImg:{type:String,default:"/static/images/back.png"},backgroundImage:{type:String}},data:function(){return{statusBarHeight:0}},created:function(){var t=this;return(0,i.default)(o.default.mark((function e(){var r,n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,uni.getSystemInfoSync();case 2:r=e.sent,n=r.screenWidth,t.statusBarHeight=t.pxToRpx(r.statusBarHeight,n);case 5:case"end":return e.stop()}}),e)})))()},methods:{pxToRpx:function(t,e){if("number"!=typeof t)throw new Error("\u8bf7\u4f20\u5165\u6570\u5b57\u7c7b\u578b\u7684px\u503c");return t*(750/e)},goBack:function(){this.$emit("back"),uni.navigateBack({delta:1})},onHeadleClick:function(){this.$emit("onHeadleClick")}}};e.default=a}}); \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/pages/shop/service-detail.js.LICENSE.txt b/unpackage/dist/build/app-plus/pages/shop/service-detail.js.LICENSE.txt new file mode 100644 index 0000000..ae386fb --- /dev/null +++ b/unpackage/dist/build/app-plus/pages/shop/service-detail.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/unpackage/dist/build/app-plus/pages/shop/servicesyr-home.js b/unpackage/dist/build/app-plus/pages/shop/servicesyr-home.js new file mode 100644 index 0000000..b566b4e --- /dev/null +++ b/unpackage/dist/build/app-plus/pages/shop/servicesyr-home.js @@ -0,0 +1,2 @@ +/*! For license information please see servicesyr-home.js.LICENSE.txt */ +!function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="/",r(r.s=300)}({0:function(t,e,r){"use strict";function n(t,e,r,n,o,i,a,s,p,l){var c,u="function"==typeof t?t.options:t;if(p){u.components||(u.components={});var d=Object.prototype.hasOwnProperty;for(var f in p)d.call(p,f)&&!d.call(u.components,f)&&(u.components[f]=p[f])}if(l&&("function"==typeof l.beforeCreate&&(l.beforeCreate=[l.beforeCreate]),(l.beforeCreate||(l.beforeCreate=[])).unshift((function(){this[l.__module]=this})),(u.mixins||(u.mixins=[])).push(l)),e&&(u.render=e,u.staticRenderFns=r,u._compiled=!0),n&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=c):o&&(c=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var g=u.render;u.render=function(t,e){return c.call(e),g(t,e)}}else{var x=u.beforeCreate;u.beforeCreate=x?[].concat(x,c):[c]}return{exports:t,options:u}}r.d(e,"a",(function(){return n}))},1:function(t,e){t.exports=function(t){return t&&t.__esModule?t:{default:t}},t.exports.__esModule=!0,t.exports.default=t.exports},10:function(t,e){t.exports={".custom-navbar":{"":{position:["fixed",0,0,0],top:[0,0,0,0],left:[0,0,0,0],right:[0,0,0,0],zIndex:[9999,0,0,0]}},".header-top":{"":{height:["88rpx",0,0,1],backgroundColor:["rgba(0,0,0,0)",0,0,1]}},".navbar-content":{"":{height:["88rpx",0,0,2],display:["flex",0,0,2],flexDirection:["row",0,0,2],flexWrap:["nowrap",0,0,2],alignItems:["center",0,0,2],justifyContent:["space-between",0,0,2],paddingTop:[0,0,0,2],paddingRight:["30rpx",0,0,2],paddingBottom:[0,0,0,2],paddingLeft:["24rpx",0,0,2]}},".right-area":{"":{width:["46rpx",0,0,3],height:["46rpx",0,0,3],display:["flex",0,0,3],alignItems:["center",0,0,3]}},".icon-headle":{"":{width:["46rpx",0,0,3],height:["46rpx",0,0,3],display:["flex",0,0,3],alignItems:["center",0,0,3]}},".left-area":{"":{width:["36rpx",0,0,4],height:["36rpx",0,0,4],display:["flex",0,0,4],alignItems:["center",0,0,4]}},".back-icon":{"":{width:["36rpx",0,0,4],height:["36rpx",0,0,4],display:["flex",0,0,4],alignItems:["center",0,0,4]}},".title":{"":{fontSize:["36rpx",0,0,6],fontWeight:["500",0,0,6],color:["#333333",0,0,6]}},"@VERSION":2}},11:function(t,e,r){"use strict";r.d(e,"b",(function(){return n})),r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){}));var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("view",[r("view",{staticClass:["custom-navbar"],style:{paddingTop:t.statusBarHeight+"rpx",background:t.backgroundColor}},[r("view",{staticClass:["navbar-content"],style:{"border-bottom":t.borderBottom}},[r("view",{staticClass:["left-area"]},[t.showBack?r("view",{staticClass:["back-btn"],on:{click:t.goBack}},[r("u-image",{staticClass:["back-icon"],attrs:{src:t.leftImg,mode:"aspectFit"}})],1):t._e(),t._t("left")],2),r("u-text",{staticClass:["title"],style:"color:"+t.titleColor+";",appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.title))]),r("view",{staticClass:["right-area"]},[t._t("right",[t.showHeadle?r("u-image",{staticClass:["iconfont","icon-headle"],attrs:{src:t.headleSrc,mode:"aspectFit"},on:{click:t.onHeadleClick}}):t._e()])],2)])]),r("view",{staticClass:["header-top"],style:{height:t.statusBarHeight+88+"rpx"}})])},o=[]},12:function(t,e,r){"use strict";(function(t){var n=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o,i=n(r(3)),a=n(r(4)),s=n(r(6)),p=r(23),l=r(24);function c(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function u(t){for(var e=1;e=200&&a<300)){t.next=3;break}return t.abrupt("return",s);case 3:if(401!==a){t.next=7;break}return t.next=6,v(e,n,o);case 6:return t.abrupt("return",t.sent);case 7:return uni.showToast({title:s.message||"\u8bf7\u6c42\u5931\u8d25",icon:"none"}),t.abrupt("return",Promise.reject(s));case 9:case"end":return t.stop()}}),t)})));return function(e,r,n,o){return t.apply(this,arguments)}}(),y=function(){var e=(0,a.default)(i.default.mark((function e(r,n){var a,p,c;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(p=uni.getStorageSync("baseUrl"),""==uni.getStorageSync("setVersion").VersionCode&&(0,l.setVersion)(),p){e.next=5;break}return e.next=5,new Promise((function(e,r){uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType},success:function(r){200==r.data.code&&(uni.setStorageSync("baseUrl",r.data.data.url),p=r.data.data.url,e(p)),t("log","\u8bf7\u6c42\u6210\u529f",r.data," at utils/request.js:121")},fail:function(e){t("log","\u8bf7\u6c42\u5931\u8d25",e," at utils/request.js:124")},complete:function(){t("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/request.js:127")}})}));case 5:return o=p,t("log","\u751f\u4ea7\u73af\u5883"," at utils/request.js:147"),a={baseURL:o},(0,s.default)(a,"baseURL",o),(0,s.default)(a,"header",{"content-type":"application/json",VersionCode:uni.getStorageSync("setVersion").VersionCode,DeviceBrand:uni.getStorageSync("setVersion").DeviceBrand,DeviceType:uni.getStorageSync("setVersion").DeviceType}),(0,s.default)(a,"timeout",6e4),r=u(u(u({},c=a),r),{},{url:n?r.url:"".concat(c.baseURL).concat(r.url)}),r=h(r),e.abrupt("return",new Promise((function(t,e){uni.request(u(u({},r),{},{success:function(n){t(m(r,n,t,e))},fail:function(t){uni.showToast({title:"\u7f51\u7edc\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5",icon:"none"}),e(t)}}))})));case 10:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}();function v(t,e,r){return b.apply(this,arguments)}function b(){return(b=(0,a.default)(i.default.mark((function t(e,r,n){var o,a;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((0,p.getToken)()){t.next=2;break}return t.abrupt("return",S());case 2:if(!d){t.next=4;break}return t.abrupt("return",g((function(t){e.header.Authorization="Bearer ".concat(t),y(e,!0).then(r).catch(n)})));case 4:return d=!0,t.prev=5,t.next=8,_();case 8:return o=t.sent,(0,p.setToken)(o),x(o),e.header.Authorization="Bearer ".concat(o),t.next=14,y(e,!0);case 14:return a=t.sent,t.abrupt("return",a);case 18:return t.prev=18,t.t0=t.catch(5),(0,p.removeToken)(),S(),t.abrupt("return",t.t0);case 23:return t.prev=23,d=!1,t.finish(23);case 26:case"end":return t.stop()}}),t,null,[[5,18,23,26]])})))).apply(this,arguments)}function _(){return w.apply(this,arguments)}function w(){return(w=(0,a.default)(i.default.mark((function t(){var e;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(uni.getStorageSync("refreshToken")){t.next=3;break}throw new Error("No refresh token");case 3:return t.next=5,y({url:"/sj/refreshtoken",data:{refresh_token:uni.getStorageSync("refreshToken"),deviceid:getApp().globalData.deviceid},method:"POST"});case 5:if(1!=(e=t.sent).state&&200!=e.code){t.next=10;break}return uni.setStorageSync("accessToken",e.access_token),uni.setStorageSync("refreshToken",e.refresh_token),t.abrupt("return",e.access_token);case 10:throw new Error("Refresh token failed");case 11:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function S(){uni.navigateTo({url:"/pages/blogPopup/blogPopup"})}var C={get:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return y(u({url:t,data:e,method:"GET"},r))},post:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return y(u({url:t,data:e,method:"POST"},r))},put:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return y(u({url:t,data:e,method:"PUT"},r))},delete:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return y(u({url:t,data:e,method:"DELETE"},r))}};e.default=C}).call(this,r(2).default)},126:function(t,e,r){"use strict";var n=r(214),o=r(173),i=r(0);var a=Object(i.a)(o.default,n.b,n.c,!1,null,null,"1830cd3a",!1,n.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(272).default,this.options.style):Object.assign(this.options.style,r(272).default)}).call(a),e.default=a.exports},13:function(t,e,r){var n=r(5).default,o=r(20);t.exports=function(t){var e=o(t,"string");return"symbol"==n(e)?e:e+""},t.exports.__esModule=!0,t.exports.default=t.exports},14:function(t,e,r){"use strict";r.r(e);var n=r(10),o=r.n(n);for(var i in n)["default"].indexOf(i)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(i);e.default=o.a},17:function(t,e,r){Vue.prototype.__$appStyle__={},Vue.prototype.__merge_style&&Vue.prototype.__merge_style(r(18).default,Vue.prototype.__$appStyle__)},170:function(t,e,r){"use strict";r.r(e);var n=r(171),o=r.n(n);for(var i in n)["default"].indexOf(i)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(i);e.default=o.a},171:function(t,e,r){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r={name:"ServiceGrid",props:{services:{type:Array,default:function(){return[]}},showMultiImages:{type:Boolean,default:!1},showSimilar:{type:Boolean,default:!1},pageType:{type:String,default:"vue"},width:{type:String,default:"334rpx"}},methods:{onServiceClick:function(e){"nvue"==this.pageType?(t("log",this.pageType," at components/service-grid/service-grid.vue:68"),this.$emit("serviceclick",e)):this.$emit("service-click",e)},formatPriceNumber:function(t){return(t=Number(t)).toFixed(2)},formatPriceSize:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=e,o=this.formatPriceNumber(t).length;return o>7&&1==r&&(n-=4),o>7&&2==r&&(n-=3),3===r&&(o>4&&(n-=10),o>5&&(n-=4),o>6&&(n-=6),o>7&&(n-=6)),4===r&&(o>5&&(n-=2),o>6&&(n-=2)),5===r&&(o>6&&(n-=6),o>7&&(n-=4),o>8&&(n-=4)),n}}};e.default=r}).call(this,r(2).default)},172:function(t,e){t.exports={".service-grid":{"":{display:["flex",0,0,0],flexDirection:["row",0,0,0],flexWrap:["wrap",0,0,0],justifyContent:["space-between",0,0,0],alignItems:["flex-start",0,0,0]}},".service-item":{"":{width:["334rpx",0,0,1],backgroundColor:["#ffffff",0,0,1],borderRadius:["20rpx",0,0,1],boxShadow:["0 0 12rpx 0 rgba(0, 0, 0, 0.05)",0,0,1],overflow:["hidden",0,0,1],position:["relative",0,0,1],marginBottom:["24rpx",0,0,1],transform:["translateZ(0)",0,0,16]}},".service-image":{"":{width:["334rpx",0,0,2],height:["334rpx",0,0,2],backgroundColor:["#000000",0,0,2]}},".service-tag":{"":{position:["absolute",0,0,3],top:["0rpx",0,0,3],left:["0rpx",0,0,3],backgroundColor:["#E8101E",0,0,3],color:["#FFFFFF",0,0,3],fontSize:["24rpx",0,0,3],paddingTop:["6rpx",0,0,3],paddingRight:["14rpx",0,0,3],paddingBottom:["6rpx",0,0,3],paddingLeft:["14rpx",0,0,3],borderTopLeftRadius:[0,0,0,3],borderTopRightRadius:[0,0,0,3],borderBottomRightRadius:["20rpx",0,0,3],borderBottomLeftRadius:[0,0,0,3]}},".service-info":{"":{paddingTop:["16rpx",0,0,4],paddingRight:["16rpx",0,0,4],paddingBottom:["16rpx",0,0,4],paddingLeft:["16rpx",0,0,4]}},".service-title":{"":{marginBottom:["16rpx",0,0,5],display:["flex",0,0,5],alignItems:["center",0,0,5],flexDirection:["row",0,0,5]}},".service-title-type":{"":{width:["64rpx",0,0,6],marginRight:["13rpx",0,0,6]}},".service-title-text":{"":{fontWeight:["500",0,0,7],fontSize:["28rpx",0,0,7],color:["#000000",0,0,7],lineHeight:["40rpx",0,0,7],textAlign:["left",0,0,7],fontStyle:["normal",0,0,7],flex:[1,0,0,7],overflow:["hidden",0,0,7],textOverflow:["ellipsis",0,0,7],WebkitBoxOrient:["vertical",0,0,7],WebkitLineClamp:[1,0,0,7],lines:[1,0,0,7]}},".service-row":{"":{display:["flex",0,0,8],flexDirection:["row",0,0,8],flexWrap:["nowrap",0,0,8],justifyContent:["space-between",0,0,8],alignItems:["center",0,0,8]}},".service-sales":{"":{fontSize:["24rpx",0,0,9],color:["#808080",0,0,9]}},".service-price":{"":{display:["flex",0,0,10],flexDirection:["row",0,0,10],flexWrap:["nowrap",0,0,10],justifyContent:["flex-start",0,0,10],alignItems:["center",0,0,10]}},".price-symbol":{"":{fontWeight:["500",0,0,11],fontSize:["24rpx",0,0,11],color:["#E8101E",0,0,11],lineHeight:["33rpx",0,0,11],textAlign:["left",0,0,11],fontStyle:["normal",0,0,11]}},".price-value":{"":{fontWeight:["500",0,0,12],fontSize:["36rpx",0,0,12],color:["#E8101E",0,0,12],lineHeight:["33rpx",0,0,12],textAlign:["left",0,0,12],fontStyle:["normal",0,0,12]}},".shop-text":{"":{fontSize:["24rpx",0,0,13],color:["#3D3D3D",0,0,13],fontWeight:["400",0,0,13]}},"@VERSION":2}},173:function(t,e,r){"use strict";var n=r(174),o=r.n(n);e.default=o.a},174:function(t,e,r){"use strict";(function(t){var n=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=n(r(3)),i=n(r(25)),a=n(r(4)),s=n(r(270)),p=n(r(12)),l=n(r(41)),c={components:{ServiceGrid:s.default},data:function(){return{activeTab:"info",syrdetail:{},services:[],isLoading:!0,videoContext:null,queryData:{publish_user_id:null,page:1,limit:20}}},onLoad:function(e){var r=this;return(0,a.default)(o.default.mark((function n(){return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:t("log",e," at pages/shop/servicesyr-home.nvue:179"),r.queryData.publish_user_id=e.id,r.getShopDetail(e.id);case 3:case"end":return n.stop()}}),n)})))()},mounted:function(){this.videoContext=uni.createVideoContext("syrVideo",this)},onHide:function(){this.videoContext.pause()},onPullDownRefresh:function(){t("log","\u89e6\u53d1\u4e0b\u62c9\u5237\u65b0"," at pages/shop/servicesyr-home.nvue:193"),"info"==this.activeTab?this.getShopDetail(this.queryData.publish_user_id):"all"==this.activeTab&&(this.queryData.page=1,this.getServerList(),setTimeout((function(){t("log","\u5237\u65b0\u5b8c\u6bd5"," at pages/shop/servicesyr-home.nvue:200"),uni.stopPullDownRefresh()}),1e3))},onReachBottom:function(){this.isLoading&&(this.queryData.page=this.queryData.page+1,this.getServerList())},methods:{getShopDetail:function(e){var r=this;p.default.post("/sj/syrdetail",{id:e}).then((function(t){r.syrdetail=t.data})).catch((function(e){t("log",e," at pages/shop/servicesyr-home.nvue:216")}))},getServerList:function(){var t=this;p.default.post("/sj/syrserver",this.queryData).then((function(e){var r=e.data;r.forEach(function(){var t=(0,a.default)(o.default.mark((function t(e,r){var n;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,p.default.post("/sj/getsjdiscount",{id:e.first_class_id});case 2:n=t.sent,e.server_price=l.default.roundUpToTwoDecimals(Number(e.server_price),n.data.ratio);case 4:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}()),t.services=[].concat((0,i.default)(t.services),(0,i.default)(r)),e.count==t.services.length&&(t.isLoading=!1)}))},goToDetail:function(t){uni.navigateTo({url:"/pages/shop/service-detail?id=".concat(t.id)})},switchTab:function(t){this.activeTab=t,"all"==this.activeTab&&(this.queryData.page=1,this.getServerList())},handleCall:function(t){uni.makePhoneCall({phoneNumber:t})},lookHealth:function(t){var e=[];e[0]=t,uni.previewImage({urls:e})},previewImage:function(t){uni.previewImage({urls:t})}}};e.default=c}).call(this,r(2).default)},175:function(t,e){t.exports={".store-card":{"":{height:["602rpx",0,0,0],backgroundColor:["#999999",0,0,0],marginBottom:["24rpx",0,0,0]}},".store-media":{"":{height:["602rpx",0,0,1],width:["750rpx",0,0,1],position:["relative",0,0,1]}},".store-bg":{"":{height:["602rpx",0,0,1],width:["750rpx",0,0,1],position:["relative",0,0,1]}},".play-icon":{"":{width:["96rpx",0,0,2],height:["96rpx",0,0,2],position:["absolute",0,0,2],left:[50,0,0,2],top:[50,0,0,2],transform:["translate(-50%, -50%)",0,0,2],backgroundColor:["rgba(0,0,0,0.5)",0,0,2],borderRadius:["48rpx",0,0,2],display:["flex",0,0,2],alignItems:["center",0,0,2],justifyContent:["center",0,0,2]}},".store-info":{"":{backgroundColor:["#FFFFFF",0,0,3],borderRadius:["16rpx",0,0,3],marginTop:["-48rpx",0,0,3],marginRight:["24rpx",0,0,3],marginBottom:["24rpx",0,0,3],marginLeft:["24rpx",0,0,3],paddingTop:["24rpx",0,0,3],paddingRight:["24rpx",0,0,3],paddingBottom:["56rpx",0,0,3],paddingLeft:["24rpx",0,0,3],boxShadow:["0 4rpx 16rpx 0 rgba(210, 213, 224, 0.50)",0,0,3],zIndex:[9,0,0,3]},".no-video":{marginTop:["60rpx",0,1,4]}},".store-title":{"":{fontSize:["32rpx",0,0,5],color:["rgba(0,0,0,0.9)",0,0,5],fontWeight:["400",0,0,5],marginBottom:["12rpx",0,0,5],paddingRight:["174rpx",0,0,5]}},".store-rating":{"":{display:["flex",0,0,6],flexDirection:["column",0,0,6],flexWrap:["nowrap",0,0,6],justifyContent:["flex-start",0,0,6],alignItems:["flex-start",0,0,6],position:["relative",0,0,6]}},".rating-stars":{"":{display:["flex",0,0,7],alignItems:["center",0,0,7],marginBottom:["12rpx",0,0,7]}},".store-row":{"":{display:["flex",0,0,8],alignItems:["center",0,0,8]}},".star-icon":{"":{width:["20rpx",0,0,9],height:["20rpx",0,0,9],marginRight:["8rpx",0,0,9],backgroundColor:["#333333",0,0,9]}},".rating-score":{"":{fontSize:["24rpx",0,0,10],color:["#FFA500",0,0,10],marginLeft:["22rpx",0,0,10]}},".store-rank":{"":{display:["flex",0,0,11],alignItems:["center",0,0,11]}},".rank-label":{"":{fontSize:["20rpx",0,0,12],fontWeight:["400",0,0,12],color:["#FF0000",0,0,12]}},".rank-num":{"":{fontSize:["20rpx",0,0,12],fontWeight:["400",0,0,12],color:["#FF0000",0,0,12],marginLeft:["8rpx",0,0,13]}},".store-cert":{"":{marginLeft:["24rpx",0,0,14],display:["flex",0,0,14],alignItems:["center",0,0,14],paddingTop:["2rpx",0,0,14],paddingRight:["8rpx",0,0,14],paddingBottom:["2rpx",0,0,14],paddingLeft:["8rpx",0,0,14],borderRadius:["4rpx",0,0,14],backgroundColor:["rgba(0,0,0,0.1)",0,0,14]}},".cert-icon":{"":{width:["24rpx",0,0,15],height:["24rpx",0,0,15],marginRight:["4rpx",0,0,15]}},".cert-text":{"":{fontSize:["16rpx",0,0,16],color:["#999999",0,0,16]}},".store-img":{"":{position:["absolute",0,0,17],top:["-26rpx",0,0,17],right:["24rpx",0,0,17],width:["154rpx",0,0,17],height:["154rpx",0,0,17],borderRadius:["16rpx",0,0,17]}},".store-detail":{"":{backgroundColor:["#FFFFFF",0,0,18],marginTop:[0,0,0,18],marginRight:["24rpx",0,0,18],marginBottom:[0,0,0,18],marginLeft:["24rpx",0,0,18],borderRadius:["16rpx",0,0,18],boxShadow:["0 4rpx 16rpx 0 rgba(210, 213, 224, 0.50)",0,0,18]}},".tab-header":{"":{display:["flex",0,0,19],flexDirection:["row",0,0,19],flexWrap:["nowrap",0,0,19],justifyContent:["center",0,0,19],alignItems:["center",0,0,19],borderBottomWidth:["1rpx",0,0,19],borderBottomStyle:["solid",0,0,19],borderBottomColor:["rgba(0,0,0,0.05)",0,0,19]}},".tab-item":{"":{position:["relative",0,0,20],paddingTop:["24rpx",0,0,20],paddingRight:[0,0,0,20],paddingBottom:["10rpx",0,0,20],paddingLeft:[0,0,0,20],display:["flex",0,0,20],flexDirection:["column",0,0,20],flexWrap:["nowrap",0,0,20],justifyContent:["center",0,0,20],alignItems:["center",0,0,20]}},".tab-left":{"":{marginLeft:["252rpx",0,0,21]}},".tab-lable":{"":{fontSize:["28rpx",0,0,22],fontWeight:["500",0,0,22],color:["#666666",0,0,22]},".tab-item.active ":{color:["#E8101E",0,2,23]}},".tab-line":{"":{width:["32rpx",0,0,24],height:["6rpx",0,0,24],borderRadius:["3rpx",0,0,24],marginTop:["10rpx",0,0,24]},".tab-item.active ":{backgroundColor:["#E8101E",0,2,25]}},".info-content":{"":{paddingTop:[0,0,0,26],paddingRight:["24rpx",0,0,26],paddingBottom:[0,0,0,26],paddingLeft:["24rpx",0,0,26]}},".info-item":{"":{display:["flex",0,0,27],flexDirection:["row",0,0,27],flexWrap:["nowrap",0,0,27],justifyContent:["flex-start",0,0,27],alignItems:["center",0,0,27],paddingTop:["24rpx",0,0,27],paddingRight:[0,0,0,27],paddingBottom:["24rpx",0,0,27],paddingLeft:[0,0,0,27],borderBottomWidth:["1rpx",0,0,27],borderBottomStyle:["solid",0,0,27],borderBottomColor:["#F0F0F0",0,0,27]}},".check-text":{"":{fontSize:["28rpx",0,0,28],color:["#E8101E",0,0,28],marginLeft:["12rpx",0,0,28]}},".photo-wall":{"":{marginTop:["24rpx",0,0,29]}},".info-label":{"":{width:["124rpx",0,0,30],fontSize:["28rpx",0,0,30],color:["#333333",0,0,30],fontWeight:["500",0,0,30]}},".health":{"":{marginRight:["0rpx",0,0,31]}},".info-text":{"":{width:["532rpx",0,0,32],fontSize:["28rpx",0,0,32],color:["#333333",0,0,32],fontWeight:["400",0,0,32]}},".wall-title":{"":{fontSize:["28rpx",0,0,33],color:["#333333",0,0,33],fontWeight:["500",0,0,33],marginBottom:["24rpx",0,0,33]}},".photo-list":{"":{paddingTop:["32rpx",0,0,34],paddingRight:[0,0,0,34],paddingBottom:["32rpx",0,0,34],paddingLeft:[0,0,0,34],display:["flex",0,0,34],flexDirection:["row",0,0,34],flexWrap:["nowrap",0,0,34]}},".photo-item":{"":{height:["112rpx",0,0,35],marginRight:["24rpx",0,0,35],borderRadius:["12rpx",0,0,35],"marginRight:last-child":[0,0,0,36]}},".all-cont":{"":{paddingTop:["24rpx",0,0,37],paddingRight:["16rpx",0,0,37],paddingBottom:[0,0,0,37],paddingLeft:["16rpx",0,0,37]}},".loading":{"":{textAlign:["center",0,0,38],paddingTop:["10",0,0,38],paddingRight:["10",0,0,38],paddingBottom:["10",0,0,38],paddingLeft:["10",0,0,38]}},".loading-text":{"":{fontSize:["14",0,0,39],color:["#999999",0,0,39]}},"@VERSION":2}},18:function(t,e,r){"use strict";r.r(e);var n=r(7),o=r.n(n);for(var i in n)["default"].indexOf(i)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(i);e.default=o.a},19:function(t,e){if("undefined"==typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(t){var e=this.constructor;return this.then((function(r){return e.resolve(t()).then((function(){return r}))}),(function(r){return e.resolve(t()).then((function(){throw r}))}))}),"undefined"!=typeof uni&&uni&&uni.requireGlobal){var r=uni.requireGlobal();ArrayBuffer=r.ArrayBuffer,Int8Array=r.Int8Array,Uint8Array=r.Uint8Array,Uint8ClampedArray=r.Uint8ClampedArray,Int16Array=r.Int16Array,Uint16Array=r.Uint16Array,Int32Array=r.Int32Array,Uint32Array=r.Uint32Array,Float32Array=r.Float32Array,Float64Array=r.Float64Array,BigInt64Array=r.BigInt64Array,BigUint64Array=r.BigUint64Array}},2:function(t,e,r){"use strict";function n(t){var e=Object.prototype.toString.call(t);return e.substring(8,e.length-1)}function o(){return"string"==typeof __channelId__&&__channelId__}function i(t,e){switch(n(e)){case"Function":return"function() { [native code] }";default:return e}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){for(var t=arguments.length,e=new Array(t),r=0;r1){var l=s.pop();p=s.join("---COMMA---"),0===l.indexOf(" at ")?p+=l:p+="---COMMA---"+l}else p=s[0];console[a](p)},e.log=function(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var p=a.call(i,"catchLoc"),l=a.call(i,"finallyLoc");if(p&&l){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),R(r),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;R(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:D(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},r}t.exports=o,t.exports.__esModule=!0,t.exports.default=t.exports},214:function(t,e,r){"use strict";r.d(e,"b",(function(){return o})),r.d(e,"c",(function(){return i})),r.d(e,"a",(function(){return n}));var n={customNavbar:r(22).default,serviceGrid:r(270).default},o=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("scroll-view",{staticStyle:{flexDirection:"column"},attrs:{scrollY:!0,showScrollbar:!0,enableBackToTop:!0,bubble:"true"}},[r("view",{staticClass:["store-page"]},[r("custom-navbar",{attrs:{title:"\u624b\u827a\u4eba\u4e3b\u9875",showBack:!0,backgroundColor:"#fff"}}),t.syrdetail.video?r("view",{staticClass:["store-card"]},[r("view",{staticClass:["store-media"]},[r("u-video",{staticClass:["store-bg"],attrs:{id:"syrVideo",autoPlay:!0,muted:!1,objectFit:"cover",src:t.syrdetail.video}}),r("u-image",{staticClass:["play-icon"],attrs:{src:"/static/images/play.png",mode:"aspectFit"}})],1)]):t._e(),r("view",{staticClass:["store-info"],class:t.syrdetail.video?"":"no-video"},[r("view",{staticClass:["store-title"]},[r("u-text",[t._v(t._s(t.syrdetail.name))])]),t.syrdetail.head_photo?r("u-image",{staticClass:["store-img"],attrs:{src:t.syrdetail.head_photo,mode:"aspectFill"}}):t._e()],1),r("view",{staticClass:["store-detail"]},[r("view",{staticClass:["tab-header"]},[r("view",{staticClass:["tab-item"],class:{active:"info"===t.activeTab},on:{click:function(e){t.switchTab("info")}}},[r("u-text",{staticClass:["tab-lable"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u624b\u827a\u4eba\u4fe1\u606f")]),r("view",{staticClass:["tab-line"]})]),r("view",{staticClass:["tab-item","tab-left"],class:{active:"all"===t.activeTab},on:{click:function(e){t.switchTab("all")}}},[r("u-text",{staticClass:["tab-lable"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u5168\u90e8")]),r("view",{staticClass:["tab-line"]})])]),"info"===t.activeTab?r("view",{staticClass:["info-content"]},[r("view",{staticClass:["info-item"]},[r("u-text",{staticClass:["info-label"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u6240\u5728\u5730")]),r("u-text",{staticClass:["info-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.syrdetail.dependency))])]),r("view",{staticClass:["info-item"]},[r("u-text",{staticClass:["info-label"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u6240\u5c5e\u95e8\u5e97")]),r("u-text",{staticClass:["info-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.syrdetail.for_shop))])]),r("view",{staticClass:["info-item"]},[r("u-text",{staticClass:["info-label"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u7b80\u4ecb")]),r("u-text",{staticClass:["info-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(t.syrdetail.detail))])]),r("view",{staticClass:["info-item"]},[r("u-text",{staticClass:["info-label","health"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u5065\u5eb7\u8bc1")]),r("u-text",{staticClass:["check-text"],appendAsTree:!0,attrs:{append:"tree"},on:{click:function(e){t.lookHealth(t.syrdetail.health_card)}}},[t._v("\u70b9\u51fb\u67e5\u770b")])]),t.syrdetail.qualifications&&0!=t.syrdetail.qualifications.length?r("view",{staticClass:["info-item"]},[r("u-text",{staticClass:["info-label","health"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u8d44\u8d28\u8bc1\u4e66")]),r("u-text",{staticClass:["check-text"],appendAsTree:!0,attrs:{append:"tree"},on:{click:function(e){t.previewImage(t.syrdetail.qualifications)}}},[t._v("\u70b9\u51fb\u67e5\u770b")])]):t._e(),t.syrdetail.uscc_photo?r("view",{staticClass:["info-item"]},[r("u-text",{staticClass:["info-label","health"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u8425\u4e1a\u6267\u7167")]),r("u-text",{staticClass:["check-text"],appendAsTree:!0,attrs:{append:"tree"},on:{click:function(e){t.lookHealth(t.syrdetail.uscc_photo)}}},[t._v("\u70b9\u51fb\u67e5\u770b")])]):t._e(),t.syrdetail.shop_photo?r("view",{staticClass:["info-item"]},[r("u-text",{staticClass:["info-label","health"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u95e8\u5934\u7167\u7247")]),r("u-text",{staticClass:["check-text"],appendAsTree:!0,attrs:{append:"tree"},on:{click:function(e){t.lookHealth(t.syrdetail.shop_photo)}}},[t._v("\u70b9\u51fb\u67e5\u770b")])]):t._e()]):t._e(),"all"===t.activeTab?r("view",{staticClass:["all-cont"]},[r("service-grid",{attrs:{services:t.services,pageType:"nvue",width:"320rpx"},on:{serviceclick:t.goToDetail}})],1):t._e()]),t.isLoading&&"all"===t.activeTab?r("view",{staticClass:["loading"]},[r("u-text",{staticClass:["loading-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u52a0\u8f7d\u4e2d...")])]):t._e(),t.isLoading||"all"!==t.activeTab?t._e():r("view",{staticClass:["loading"]},[r("u-text",{staticClass:["loading-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u6ca1\u6709\u66f4\u591a\u4e86")])])],1)])},i=[]},22:function(t,e,r){"use strict";r.r(e);var n=r(11),o=r(8);for(var i in o)["default"].indexOf(i)<0&&function(t){r.d(e,t,(function(){return o[t]}))}(i);var a=r(0);var s=Object(a.a)(o.default,n.b,n.c,!1,null,null,"43cd5ac3",!1,n.a,void 0);(function(t){this.options.style||(this.options.style={}),Vue.prototype.__merge_style&&Vue.prototype.__$appStyle__&&Vue.prototype.__merge_style(Vue.prototype.__$appStyle__,this.options.style),Vue.prototype.__merge_style?Vue.prototype.__merge_style(r(14).default,this.options.style):Object.assign(this.options.style,r(14).default)}).call(s),e.default=s.exports},229:function(t,e,r){"use strict";r.d(e,"b",(function(){return n})),r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){}));var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("view",{staticClass:["service-grid"]},t._l(t.services,(function(e,n){return r("view",{key:t.services.id,staticClass:["service-item"],style:"width: "+t.width,on:{click:function(r){t.onServiceClick(e)}}},[e.photo&&0!=e.photo.length?r("u-image",{staticClass:["service-image"],style:"width: "+t.width,attrs:{src:e.photo[0],mode:"aspectFill",lazyLoad:!0}}):t._e(),r("u-text",{staticClass:["service-tag"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(1==e.server_kind?"\u5230\u5bb6":2==e.server_kind?"\u5230\u5e97":""))]),r("view",{staticClass:["service-info"]},[r("view",{staticClass:["service-title"]},[e.team_buy&&0!=Object.keys(e.team_buy).length?r("u-image",{staticClass:["service-title-type"],attrs:{mode:"widthFix",src:"/static/images/shop/pintuan/group.png"}}):t._e(),r("u-text",{staticClass:["service-title-text"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(e.title))])],1),r("view",{staticClass:["service-row"]},[e.team_buy&&0!=Object.keys(e.team_buy).length?r("view",{staticClass:["service-price"]},[r("u-text",{staticClass:["price-symbol"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u62fc\u56e2\u4ef7\uff1a\xa5")]),r("u-text",{staticClass:["price-value"],style:{"font-size":t.formatPriceSize(e.team_buy.price,36,5)+"rpx"},appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(e.team_buy.price))])]):r("view",{staticClass:["service-price"]},[r("u-text",{staticClass:["price-symbol"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\xa5")]),r("u-text",{staticClass:["price-value"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(e.server_price))])]),r("u-text",{staticClass:["service-sales"],appendAsTree:!0,attrs:{append:"tree"}},[t._v("\u9500\u91cf"+t._s(e.sales_num))])]),2==e.server_kind?r("view",{staticClass:["service-shop"]},[r("u-text",{staticClass:["shop-text","text-overflow-1"],appendAsTree:!0,attrs:{append:"tree"}},[t._v(t._s(e.shop_name))])]):t._e()])],1)})),0)},o=[]},23:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getToken=function(){return uni.getStorageSync("accessToken")},e.removeToken=function(){uni.removeStorageSync("accessToken"),uni.removeStorageSync("refreshToken")},e.setToken=function(t){uni.setStorageSync("accessToken",t)}},24:function(t,e,r){"use strict";(function(t){var n=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.getBaseUrl=function(){return l.apply(this,arguments)},e.setVersion=function(){var e=uni.getSystemInfoSync();a=e.appWgtVersion,s=e.deviceBrand,t("log","DeviceType",s," at utils/version.js:26"),"android"===(p=e.platform)?p="sj_android":"ios"===p&&(p="sj_ios");var r={VersionCode:a||"",DeviceBrand:p||"",DeviceType:s||""};uni.setStorageSync("setVersion",r)};var o=n(r(3)),i=n(r(4)),a="",s="",p="";function l(){return(l=(0,i.default)(o.default.mark((function e(){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=uni.getStorageSync("setVersion"),e.next=3,uni.request({url:"https://api.mrrwlkj.top/api/openPuc/getSjApiUrl",method:"GET",header:{"Content-Type":"application/json",VersionCode:r.VersionCode,DeviceBrand:r.DeviceBrand,DeviceType:r.DeviceType},success:function(t){return 200==t.data.code&&uni.setStorageSync("baseUrl",t.data.data.url),t.data.data.url},fail:function(e){return t("log","\u8bf7\u6c42\u5931\u8d25",e," at utils/version.js:82"),"http://60.247.146.5:93"},complete:function(){t("log","\u8bf7\u6c42\u5b8c\u6210\uff08\u65e0\u8bba\u6210\u529f\u5931\u8d25\u90fd\u4f1a\u6267\u884c\uff09"," at utils/version.js:86")}});case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}}).call(this,r(2).default)},25:function(t,e,r){var n=r(42),o=r(39),i=r(26),a=r(43);t.exports=function(t){return n(t)||o(t)||i(t)||a()},t.exports.__esModule=!0,t.exports.default=t.exports},26:function(t,e,r){var n=r(27);t.exports=function(t,e){if(t){if("string"==typeof t)return n(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}},t.exports.__esModule=!0,t.exports.default=t.exports},27:function(t,e){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:{};return s(a({},t))},calcDistance:function(t,e,r,n){return function(t,e,r,n){var o=function(t){return t*(Math.PI/180)},i=o(r-t),a=o(n-e),s=Math.sin(i/2)*Math.sin(i/2)+Math.cos(o(t))*Math.cos(o(r))*Math.sin(a/2)*Math.sin(a/2);return(6371*(2*Math.atan2(Math.sqrt(s),Math.sqrt(1-s)))).toFixed(2)}(t,e,r,n)},roundUpToTwoDecimals:function(t,e){return(Math.floor(t*e*100+.9)/100).toFixed(2)},getDateStr:function(t){var e=new Date;return e.setDate(e.getDate()+t),"".concat(e.getFullYear(),"-").concat((e.getMonth()+1).toString().padStart(2,"0"),"-").concat(e.getDate().toString().padStart(2,"0"))}};e.default=l}).call(this,r(2).default)},42:function(t,e,r){var n=r(27);t.exports=function(t){if(Array.isArray(t))return n(t)},t.exports.__esModule=!0,t.exports.default=t.exports},43:function(t,e){t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.__esModule=!0,t.exports.default=t.exports},5:function(t,e){function r(e){return t.exports=r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,r(e)}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},6:function(t,e,r){var n=r(13);t.exports=function(t,e,r){return(e=n(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t},t.exports.__esModule=!0,t.exports.default=t.exports},7:function(t,e){t.exports={"@FONT-FACE":[{fontFamily:"shuHeiTi",src:'url("~@/static/Font/shuHeiTi.ttf") format("truetype")',fontDisplay:"swap"},{fontFamily:"DINPro",src:'url("~@/static/Font/DIN-Bold.otf") format("opentype")',fontWeight:"700",fontStyle:"normal"},{fontFamily:"DINPro",src:'url("~@/static/Font/DIN-Regular.otf") format("opentype")',fontWeight:"400",fontStyle:"normal"},{fontFamily:"DINPro",src:'url("~@/static/Font/DINPro-Medium.otf") format("opentype")',fontWeight:"500",fontStyle:"normal"}],".num_bold_text":{"":{fontWeight:["700",0,0,10],fontFamily:['"DINPro"',0,0,10]}},".num_regular_text":{"":{fontWeight:["400",0,0,12],fontFamily:['"DINPro"',0,0,12]}},".num_medium_text":{"":{fontWeight:["500",0,0,14],fontFamily:['"DINPro"',0,0,14]}},".flex":{"":{display:["flex",0,0,20]}},".flex-column":{"":{display:["flex",0,0,21],flexDirection:["column",0,0,21]}},".flex-wrap":{"":{flexWrap:["wrap",0,0,22]}},".flex-1":{"":{flex:[1,0,0,23]}},".justify-start":{"":{justifyContent:["flex-start",0,0,25]}},".justify-end":{"":{justifyContent:["flex-end",0,0,26]}},".justify-center":{"":{justifyContent:["center",0,0,27]}},".justify-between":{"":{justifyContent:["space-between",0,0,28]}},".justify-around":{"":{justifyContent:["space-around",0,0,29]}},".align-start":{"":{alignItems:["flex-start",0,0,30]}},".align-end":{"":{alignItems:["flex-end",0,0,31]}},".align-center":{"":{alignItems:["center",0,0,32]}},".align-stretch":{"":{alignItems:["stretch",0,0,33]}},".m-10":{"":{marginTop:["10rpx",0,0,35],marginRight:["10rpx",0,0,35],marginBottom:["10rpx",0,0,35],marginLeft:["10rpx",0,0,35]}},".m-20":{"":{marginTop:["20rpx",0,0,36],marginRight:["20rpx",0,0,36],marginBottom:["20rpx",0,0,36],marginLeft:["20rpx",0,0,36]}},".m-30":{"":{marginTop:["30rpx",0,0,37],marginRight:["30rpx",0,0,37],marginBottom:["30rpx",0,0,37],marginLeft:["30rpx",0,0,37]}},".m-40":{"":{marginTop:["40rpx",0,0,38],marginRight:["40rpx",0,0,38],marginBottom:["40rpx",0,0,38],marginLeft:["40rpx",0,0,38]}},".mt-10":{"":{marginTop:["10rpx",0,0,39]}},".mt-20":{"":{marginTop:["20rpx",0,0,40]}},".mt-30":{"":{marginTop:["30rpx",0,0,41]}},".mt-40":{"":{marginTop:["40rpx",0,0,42]}},".mb-10":{"":{marginBottom:["10rpx",0,0,43]}},".mb-20":{"":{marginBottom:["20rpx",0,0,44]}},".mb-30":{"":{marginBottom:["30rpx",0,0,45]}},".mb-40":{"":{marginBottom:["40rpx",0,0,46]}},".ml-10":{"":{marginLeft:["10rpx",0,0,47]}},".ml-20":{"":{marginLeft:["20rpx",0,0,48]}},".ml-30":{"":{marginLeft:["30rpx",0,0,49]}},".ml-40":{"":{marginLeft:["40rpx",0,0,50]}},".mr-10":{"":{marginRight:["10rpx",0,0,51]}},".mr-20":{"":{marginRight:["20rpx",0,0,52]}},".mr-30":{"":{marginRight:["30rpx",0,0,53]}},".mr-40":{"":{marginRight:["40rpx",0,0,54]}},".p-10":{"":{paddingTop:["10rpx",0,0,55],paddingRight:["10rpx",0,0,55],paddingBottom:["10rpx",0,0,55],paddingLeft:["10rpx",0,0,55]}},".p-20":{"":{paddingTop:["20rpx",0,0,56],paddingRight:["20rpx",0,0,56],paddingBottom:["20rpx",0,0,56],paddingLeft:["20rpx",0,0,56]}},".p-30":{"":{paddingTop:["30rpx",0,0,57],paddingRight:["30rpx",0,0,57],paddingBottom:["30rpx",0,0,57],paddingLeft:["30rpx",0,0,57]}},".p-40":{"":{paddingTop:["40rpx",0,0,58],paddingRight:["40rpx",0,0,58],paddingBottom:["40rpx",0,0,58],paddingLeft:["40rpx",0,0,58]}},".pt-10":{"":{paddingTop:["10rpx",0,0,59]}},".pt-20":{"":{paddingTop:["20rpx",0,0,60]}},".pt-30":{"":{paddingTop:["30rpx",0,0,61]}},".pt-40":{"":{paddingTop:["40rpx",0,0,62]}},".pb-10":{"":{paddingBottom:["10rpx",0,0,63]}},".pb-20":{"":{paddingBottom:["20rpx",0,0,64]}},".pb-30":{"":{paddingBottom:["30rpx",0,0,65]}},".pb-40":{"":{paddingBottom:["40rpx",0,0,66]}},".pl-10":{"":{paddingLeft:["10rpx",0,0,67]}},".pl-20":{"":{paddingLeft:["20rpx",0,0,68]}},".pl-30":{"":{paddingLeft:["30rpx",0,0,69]}},".pl-40":{"":{paddingLeft:["40rpx",0,0,70]}},".pr-10":{"":{paddingRight:["10rpx",0,0,71]}},".pr-20":{"":{paddingRight:["20rpx",0,0,72]}},".pr-30":{"":{paddingRight:["30rpx",0,0,73]}},".pr-40":{"":{paddingRight:["40rpx",0,0,74]}},".pr-240":{"":{paddingRight:["240rpx",0,0,75]}},".text-left":{"":{textAlign:["left",0,0,77]}},".text-center":{"":{textAlign:["center",0,0,78]}},".text-right":{"":{textAlign:["right",0,0,79]}},".text-primary":{"":{color:["#007aff",0,0,80]}},".text-success":{"":{color:["#4cd964",0,0,81]}},".text-warning":{"":{color:["#f0ad4e",0,0,82]}},".text-danger":{"":{color:["#dd524d",0,0,83]}},".text-info":{"":{color:["#909399",0,0,84]}},".text-sm":{"":{fontSize:["24rpx",0,0,85]}},".text-md":{"":{fontSize:["28rpx",0,0,86]}},".text-lg":{"":{fontSize:["32rpx",0,0,87]}},".text-xl":{"":{fontSize:["36rpx",0,0,88]}},".text-bold":{"":{fontWeight:["bold",0,0,89]}},".text-normal":{"":{fontWeight:["normal",0,0,90]}},".bg-white":{"":{backgroundColor:["#ffffff",0,0,92]}},".bg-primary":{"":{backgroundColor:["#007aff",0,0,93]}},".bg-success":{"":{backgroundColor:["#4cd964",0,0,94]}},".bg-warning":{"":{backgroundColor:["#f0ad4e",0,0,95]}},".bg-danger":{"":{backgroundColor:["#dd524d",0,0,96]}},".bg-info":{"":{backgroundColor:["#909399",0,0,97]}},".bg-gray":{"":{backgroundColor:["#f5f5f5",0,0,98]}},".border":{"":{borderWidth:["1rpx",0,0,100],borderStyle:["solid",0,0,100],borderColor:["#e5e5e5",0,0,100]}},".border-top":{"":{borderTopWidth:["1rpx",0,0,101],borderTopStyle:["solid",0,0,101],borderTopColor:["#e5e5e5",0,0,101]}},".border-bottom":{"":{borderBottomWidth:["1rpx",0,0,102],borderBottomStyle:["solid",0,0,102],borderBottomColor:["#e5e5e5",0,0,102]}},".border-left":{"":{borderLeftWidth:["1rpx",0,0,103],borderLeftStyle:["solid",0,0,103],borderLeftColor:["#e5e5e5",0,0,103]}},".border-right":{"":{borderRightWidth:["1rpx",0,0,104],borderRightStyle:["solid",0,0,104],borderRightColor:["#e5e5e5",0,0,104]}},".rounded":{"":{borderRadius:["8rpx",0,0,106]}},".rounded-lg":{"":{borderRadius:["16rpx",0,0,107]}},".rounded-xl":{"":{borderRadius:["24rpx",0,0,108]}},".rounded-circle":{"":{borderRadius:[50,0,0,109]}},".shadow":{"":{boxShadow:["0 2rpx 8rpx rgba(0, 0, 0, 0.1)",0,0,111]}},".shadow-lg":{"":{boxShadow:["0 4rpx 16rpx rgba(0, 0, 0, 0.1)",0,0,112]}},".relative":{"":{position:["relative",0,0,114]}},".absolute":{"":{position:["absolute",0,0,115]}},".fixed":{"":{position:["fixed",0,0,116]}},".btn":{"":{display:["flex",0,0,120],alignItems:["center",0,0,120],justifyContent:["center",0,0,120],paddingTop:["20rpx",0,0,120],paddingRight:["40rpx",0,0,120],paddingBottom:["20rpx",0,0,120],paddingLeft:["40rpx",0,0,120],borderRadius:["8rpx",0,0,120],fontSize:["28rpx",0,0,120],lineHeight:[1.5,0,0,120],textAlign:["center",0,0,120]}},".btn-primary":{"":{backgroundColor:["#007aff",0,0,121],color:["#ffffff",0,0,121]}},".btn-success":{"":{backgroundColor:["#4cd964",0,0,122],color:["#ffffff",0,0,122]}},".btn-warning":{"":{backgroundColor:["#f0ad4e",0,0,123],color:["#ffffff",0,0,123]}},".btn-danger":{"":{backgroundColor:["#dd524d",0,0,124],color:["#ffffff",0,0,124]}},".btn-info":{"":{backgroundColor:["#909399",0,0,125],color:["#ffffff",0,0,125]}},".card":{"":{backgroundColor:["#ffffff",0,0,127],borderRadius:["8rpx",0,0,127],paddingTop:["20rpx",0,0,127],paddingRight:["20rpx",0,0,127],paddingBottom:["20rpx",0,0,127],paddingLeft:["20rpx",0,0,127],marginTop:["20rpx",0,0,127],marginRight:["20rpx",0,0,127],marginBottom:["20rpx",0,0,127],marginLeft:["20rpx",0,0,127],boxShadow:["0 2rpx 8rpx rgba(0, 0, 0, 0.1)",0,0,127]}},".list-item":{"":{display:["flex",0,0,129],alignItems:["center",0,0,129],paddingTop:["20rpx",0,0,129],paddingRight:["20rpx",0,0,129],paddingBottom:["20rpx",0,0,129],paddingLeft:["20rpx",0,0,129],backgroundColor:["#ffffff",0,0,129],borderBottomWidth:["1rpx",0,0,129],borderBottomStyle:["solid",0,0,129],borderBottomColor:["#e5e5e5",0,0,129]}},".loading":{"":{display:["flex",0,0,131],alignItems:["center",0,0,131],justifyContent:["center",0,0,131],paddingTop:["20rpx",0,0,131],paddingRight:["20rpx",0,0,131],paddingBottom:["20rpx",0,0,131],paddingLeft:["20rpx",0,0,131]}},".loading-text":{"":{marginLeft:["10rpx",0,0,132],color:["#909399",0,0,132],fontSize:["24rpx",0,0,132]}},".empty":{"":{display:["flex",0,0,134],flexDirection:["column",0,0,134],alignItems:["center",0,0,134],justifyContent:["center",0,0,134],paddingTop:["40rpx",0,0,134],paddingRight:["40rpx",0,0,134],paddingBottom:["40rpx",0,0,134],paddingLeft:["40rpx",0,0,134]}},".empty-image":{"":{width:["200rpx",0,0,135],height:["200rpx",0,0,135],marginBottom:["20rpx",0,0,135]}},".empty-text":{"":{color:["#909399",0,0,136],fontSize:["28rpx",0,0,136]}},".text-overflow":{"":{WebkitBoxOrient:["vertical",0,0,137],WebkitLineClamp:[2,0,0,137],overflow:["hidden",0,0,137]}},".text-overflow-nvue":{"":{lines:[2,0,0,138],textOverflow:["ellipsis",0,0,138]}},".white-space-nowrap":{"":{width:["300rpx",0,0,139],whiteSpace:["nowrap",0,0,139],overflow:["hidden",0,0,139],textOverflow:["ellipsis",0,0,139]}},".text-overflow-1":{"":{WebkitBoxOrient:["vertical",0,0,140],WebkitLineClamp:[1,0,0,140],overflow:["hidden",0,0,140]}},".text-overflow-nvue1":{"":{lines:[1,0,0,141],textOverflow:["ellipsis",0,0,141]}},".box-cont":{"":{backgroundColor:["#ffffff",0,0,142],marginTop:["24rpx",0,0,142],marginRight:["24rpx",0,0,142],marginBottom:["24rpx",0,0,142],marginLeft:["24rpx",0,0,142],boxShadow:["0 0 12rpx 0 rgba(0, 0, 0, 0.05)",0,0,142]}},".btn-box":{"":{height:["64rpx",0,0,143],textAlign:["center",0,0,143],lineHeight:["64rpx",0,0,143],backgroundColor:["#E8101E",0,0,143],borderRadius:["32rpx",0,0,143],position:["fixed",0,0,143],left:["24rpx",0,0,143],bottom:["68rpx",0,0,143],right:["24rpx",0,0,143],zIndex:[999,0,0,143]}},".btn-text":{"":{fontSize:["28rpx",0,0,144],fontWeight:["500",0,0,144],color:["#ffffff",0,0,144]}},".agree-btn":{"":{width:["32rpx",0,0,145],height:["32rpx",0,0,145]}},".fixed-box":{"":{paddingTop:["32rpx",0,0,146],paddingRight:["24rpx",0,0,146],paddingBottom:["32rpx",0,0,146],paddingLeft:["24rpx",0,0,146],backgroundColor:["#ffffff",0,0,146],position:["absolute",0,0,146],left:[0,0,0,146],bottom:[0,0,0,146],right:[0,0,0,146],zIndex:[9999,0,0,146]}},".fixed-btn":{"":{height:["80rpx",0,0,147],backgroundColor:["#E8101E",0,0,147],borderRadius:["40rpx",0,0,147],display:["flex",0,0,147],alignItems:["center",0,0,147],justifyContent:["center",0,0,147]}},".fixed-text":{"":{fontSize:["28rpx",0,0,148],color:["#ffffff",0,0,148],fontWeight:["500",0,0,148]}},".arrow-right":{"":{width:["32rpx",0,0,149],height:["32rpx",0,0,149]}},".permission":{"":{position:["fixed",0,0,150],top:[0,0,0,150],left:["24rpx",0,0,150],right:["24rpx",0,0,150],backgroundColor:["#ffffff",0,0,150],borderRadius:["20rpx",0,0,150],paddingTop:["24rpx",0,0,150],paddingRight:["24rpx",0,0,150],paddingBottom:["24rpx",0,0,150],paddingLeft:["24rpx",0,0,150],zIndex:[9,0,0,150],boxShadow:["0 8rpx 16rpx 0 rgba(0, 0, 0, 0.05)",0,0,150],opacity:[0,0,0,150],transitionDuration:[300,0,0,150],transitionTimingFunction:["ease",0,0,150],transitionDelay:[0,0,0,150],visibility:["hidden",0,0,150]}},".per-tit":{"":{fontSize:["32rpx",0,0,151],fontWeight:["700",0,0,151],color:["#007aff",0,0,151]}},".per-cont":{"":{fontSize:["28rpx",0,0,152],color:["#333333",0,0,152]}},".flex-row-center-between":{"":{display:["flex",0,0,154],flexDirection:["row",0,0,154],alignItems:["center",0,0,154],justifyContent:["space-between",0,0,154]}},".flex-row-start-between":{"":{display:["flex",0,0,155],flexDirection:["row",0,0,155],alignItems:["flex-start",0,0,155],justifyContent:["space-between",0,0,155]}},".flex-row-center-center":{"":{display:["flex",0,0,156],flexDirection:["row",0,0,156],alignItems:["center",0,0,156],justifyContent:["center",0,0,156]}},".flex-row-center":{"":{display:["flex",0,0,157],flexDirection:["row",0,0,157],alignItems:["center",0,0,157]}},".flex-row-start":{"":{display:["flex",0,0,158],flexDirection:["row",0,0,158],alignItems:["flex-start",0,0,158]}},".flex-row-end-between":{"":{display:["flex",0,0,159],flexDirection:["row",0,0,159],alignItems:["flex-end",0,0,159],justifyContent:["space-between",0,0,159]}},"@VERSION":2}},8:function(t,e,r){"use strict";r.r(e);var n=r(9),o=r.n(n);for(var i in n)["default"].indexOf(i)<0&&function(t){r.d(e,t,(function(){return n[t]}))}(i);e.default=o.a},9:function(t,e,r){"use strict";var n=r(1);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=n(r(3)),i=n(r(4)),a={name:"CustomNavbar",props:{title:{type:String,default:""},showBack:{type:Boolean,default:!0},showHeadle:{type:Boolean,default:!1},headleSrc:{type:String,default:""},backgroundColor:{type:String,default:"#ffffff"},titleColor:{type:String,default:"#333333"},borderBottom:{type:String,default:"1rpx solid rgba(0, 0, 0, 0.05)"},nowStyle:{type:String,default:"1rpx solid rgba(0, 0, 0, 0.05)"},leftImg:{type:String,default:"/static/images/back.png"},backgroundImage:{type:String}},data:function(){return{statusBarHeight:0}},created:function(){var t=this;return(0,i.default)(o.default.mark((function e(){var r,n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,uni.getSystemInfoSync();case 2:r=e.sent,n=r.screenWidth,t.statusBarHeight=t.pxToRpx(r.statusBarHeight,n);case 5:case"end":return e.stop()}}),e)})))()},methods:{pxToRpx:function(t,e){if("number"!=typeof t)throw new Error("\u8bf7\u4f20\u5165\u6570\u5b57\u7c7b\u578b\u7684px\u503c");return t*(750/e)},goBack:function(){this.$emit("back"),uni.navigateBack({delta:1})},onHeadleClick:function(){this.$emit("onHeadleClick")}}};e.default=a}}); \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/pages/shop/servicesyr-home.js.LICENSE.txt b/unpackage/dist/build/app-plus/pages/shop/servicesyr-home.js.LICENSE.txt new file mode 100644 index 0000000..ae386fb --- /dev/null +++ b/unpackage/dist/build/app-plus/pages/shop/servicesyr-home.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/unpackage/dist/build/app-plus/static/Font/DIN-Bold.otf b/unpackage/dist/build/app-plus/static/Font/DIN-Bold.otf new file mode 100644 index 0000000..782e68e Binary files /dev/null and b/unpackage/dist/build/app-plus/static/Font/DIN-Bold.otf differ diff --git a/unpackage/dist/build/app-plus/static/Font/DIN-Regular.otf b/unpackage/dist/build/app-plus/static/Font/DIN-Regular.otf new file mode 100644 index 0000000..cb5f1c5 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/Font/DIN-Regular.otf differ diff --git a/unpackage/dist/build/app-plus/static/Font/DINCond-Bold.otf b/unpackage/dist/build/app-plus/static/Font/DINCond-Bold.otf new file mode 100644 index 0000000..9b6cd9d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/Font/DINCond-Bold.otf differ diff --git a/unpackage/dist/build/app-plus/static/Font/DINPro-Black.otf b/unpackage/dist/build/app-plus/static/Font/DINPro-Black.otf new file mode 100644 index 0000000..2092a7b Binary files /dev/null and b/unpackage/dist/build/app-plus/static/Font/DINPro-Black.otf differ diff --git a/unpackage/dist/build/app-plus/static/Font/DINPro-Bold.otf b/unpackage/dist/build/app-plus/static/Font/DINPro-Bold.otf new file mode 100644 index 0000000..7c83953 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/Font/DINPro-Bold.otf differ diff --git a/unpackage/dist/build/app-plus/static/Font/DINPro-Light.otf b/unpackage/dist/build/app-plus/static/Font/DINPro-Light.otf new file mode 100644 index 0000000..8a7f085 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/Font/DINPro-Light.otf differ diff --git a/unpackage/dist/build/app-plus/static/Font/DINPro-Medium.otf b/unpackage/dist/build/app-plus/static/Font/DINPro-Medium.otf new file mode 100644 index 0000000..b4608d0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/Font/DINPro-Medium.otf differ diff --git a/unpackage/dist/build/app-plus/static/Font/DINPro-Regular.otf b/unpackage/dist/build/app-plus/static/Font/DINPro-Regular.otf new file mode 100644 index 0000000..84d57ab Binary files /dev/null and b/unpackage/dist/build/app-plus/static/Font/DINPro-Regular.otf differ diff --git a/unpackage/dist/build/app-plus/static/Font/shuHeiTi.ttf b/unpackage/dist/build/app-plus/static/Font/shuHeiTi.ttf new file mode 100644 index 0000000..0118a4b Binary files /dev/null and b/unpackage/dist/build/app-plus/static/Font/shuHeiTi.ttf differ diff --git a/unpackage/dist/build/app-plus/static/css/common.css b/unpackage/dist/build/app-plus/static/css/common.css new file mode 100644 index 0000000..997106c --- /dev/null +++ b/unpackage/dist/build/app-plus/static/css/common.css @@ -0,0 +1,693 @@ +/* 自定义字体 */ +@font-face { + font-family: "shuHeiTi"; + src: url("/static/Font/shuHeiTi.ttf") format("truetype"); + font-display: swap; +} + +/* 定义 DIN-Bold 字重 */ +@font-face { + font-family: "DINPro"; /* 自定义字体名称(后续引用时需一致) */ + src: url("/static/Font/DIN-Bold.otf") format("opentype"); /* 字体文件路径(根据项目结构调整) */ + font-weight: 700; /* 对应 Bold 字重(700 表示粗体) */ + font-style: normal; +} + +/* 定义 DIN-Regular 字重 */ +@font-face { + font-family: "DINPro"; /* 与上方字体名称一致,实现“同一字体族”的不同字重 */ + src: url("/static/Font/DIN-Regular.otf") format("opentype"); + font-weight: 400; /* 对应 Regular 字重(400 表示常规) */ + font-style: normal; +} + +/* 定义 DIN-Medium 字重(若有) */ +@font-face { + font-family: "DINPro"; + src: url("/static/Font/DINPro-Medium.otf") format("opentype"); + font-weight: 500; /* 对应 Medium 字重(500 表示中等粗体) */ + font-style: normal; +} + +/* 粗体文本(自动匹配 DIN-Bold) */ +.num_bold_text { + font-weight: 700; + font-family: "DINPro"; +} + +/* 常规文本(自动匹配 DIN-Regular) */ +.num_regular_text { + font-weight: 400; + font-family: "DINPro"; +} + +/* 中等粗体文本(自动匹配 DINPro-Medium) */ +.num_medium_text { + font-weight: 500; + font-family: "DINPro"; +} + +/* 重置样式 */ +page { + font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, + Segoe UI, Arial, Roboto, "PingFang SC", "miui", "Hiragino Sans GB", + "Microsoft Yahei", sans-serif; + font-size: 28rpx; + line-height: 1.5; + color: #333; + background-color: #f5f5f5; +} +.picker-view { + line-height: normal !important; +} + +.picker-view-column { + line-height: normal !important; +} +/* 通用布局 */ +.flex { + display: flex; +} + +.flex-column { + display: flex; + flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.flex-1 { + flex: 1; +} + +/* 对齐方式 */ +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} + +.align-start { + align-items: flex-start; +} + +.align-end { + align-items: flex-end; +} + +.align-center { + align-items: center; +} + +.align-stretch { + align-items: stretch; +} + +/* 间距 */ +.m-10 { + margin: 10rpx; +} +.m-20 { + margin: 20rpx; +} +.m-30 { + margin: 30rpx; +} +.m-40 { + margin: 40rpx; +} + +.mt-10 { + margin-top: 10rpx; +} +.mt-20 { + margin-top: 20rpx; +} +.mt-30 { + margin-top: 30rpx; +} +.mt-40 { + margin-top: 40rpx; +} + +.mb-10 { + margin-bottom: 10rpx; +} +.mb-20 { + margin-bottom: 20rpx; +} +.mb-30 { + margin-bottom: 30rpx; +} +.mb-40 { + margin-bottom: 40rpx; +} + +.ml-10 { + margin-left: 10rpx; +} +.ml-20 { + margin-left: 20rpx; +} +.ml-30 { + margin-left: 30rpx; +} +.ml-40 { + margin-left: 40rpx; +} + +.mr-10 { + margin-right: 10rpx; +} +.mr-20 { + margin-right: 20rpx; +} +.mr-30 { + margin-right: 30rpx; +} +.mr-40 { + margin-right: 40rpx; +} + +.p-10 { + padding: 10rpx; +} +.p-20 { + padding: 20rpx; +} +.p-30 { + padding: 30rpx; +} +.p-40 { + padding: 40rpx; +} + +.pt-10 { + padding-top: 10rpx; +} +.pt-20 { + padding-top: 20rpx; +} +.pt-30 { + padding-top: 30rpx; +} +.pt-40 { + padding-top: 40rpx; +} + +.pb-10 { + padding-bottom: 10rpx; +} +.pb-20 { + padding-bottom: 20rpx; +} +.pb-30 { + padding-bottom: 30rpx; +} +.pb-40 { + padding-bottom: 40rpx; +} + +.pl-10 { + padding-left: 10rpx; +} +.pl-20 { + padding-left: 20rpx; +} +.pl-30 { + padding-left: 30rpx; +} +.pl-40 { + padding-left: 40rpx; +} + +.pr-10 { + padding-right: 10rpx; +} +.pr-20 { + padding-right: 20rpx; +} +.pr-30 { + padding-right: 30rpx; +} +.pr-40 { + padding-right: 40rpx; +} +.pr-240 { + padding-right: 240rpx; +} + +/* 文本样式 */ +.text-left { + text-align: left; +} +.text-center { + text-align: center; +} +.text-right { + text-align: right; +} + +.text-primary { + color: #007aff; +} +.text-success { + color: #4cd964; +} +.text-warning { + color: #f0ad4e; +} +.text-danger { + color: #dd524d; +} +.text-info { + color: #909399; +} + +.text-sm { + font-size: 24rpx; +} +.text-md { + font-size: 28rpx; +} +.text-lg { + font-size: 32rpx; +} +.text-xl { + font-size: 36rpx; +} + +.text-bold { + font-weight: bold; +} +.text-normal { + font-weight: normal; +} + +/* 背景颜色 */ +.bg-white { + background-color: #ffffff; +} +.bg-primary { + background-color: #007aff; +} +.bg-success { + background-color: #4cd964; +} +.bg-warning { + background-color: #f0ad4e; +} +.bg-danger { + background-color: #dd524d; +} +.bg-info { + background-color: #909399; +} +.bg-gray { + background-color: #f5f5f5; +} + +/* 边框 */ +.border { + border-width: 1rpx; + border-style: solid; + border-color: #e5e5e5; +} + +.border-top { + border-top-width: 1rpx; + border-top-style: solid; + border-top-color: #e5e5e5; +} + +.border-bottom { + border-bottom-width: 1rpx; + border-bottom-style: solid; + border-bottom-color: #e5e5e5; +} + +.border-left { + border-left-width: 1rpx; + border-left-style: solid; + border-left-color: #e5e5e5; +} + +.border-right { + border-right-width: 1rpx; + border-right-style: solid; + border-right-color: #e5e5e5; +} + +/* 圆角 */ +.rounded { + border-radius: 8rpx; +} + +.rounded-lg { + border-radius: 16rpx; +} + +.rounded-xl { + border-radius: 24rpx; +} + +.rounded-circle { + border-radius: 50%; +} + +/* 阴影 */ +.shadow { + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); +} + +.shadow-lg { + box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1); +} + +/* 定位 */ +.relative { + position: relative; +} + +.absolute { + position: absolute; +} + +.fixed { + position: fixed; +} + +/* 平台特定样式 */ +/* #ifdef H5 */ +/* 适配H5端的安全区域 */ +.safe-area-inset-bottom { + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); +} +/* #endif */ + +/* 常用组件样式 */ +/* 按钮 */ +.btn { + display: flex; + align-items: center; + justify-content: center; + padding: 20rpx 40rpx; + border-radius: 8rpx; + font-size: 28rpx; + line-height: 1.5; + text-align: center; +} + +.btn-primary { + background-color: #007aff; + color: #ffffff; +} + +.btn-success { + background-color: #4cd964; + color: #ffffff; +} + +.btn-warning { + background-color: #f0ad4e; + color: #ffffff; +} + +.btn-danger { + background-color: #dd524d; + color: #ffffff; +} + +.btn-info { + background-color: #909399; + color: #ffffff; +} + +/* 卡片 */ +.card { + background-color: #ffffff; + border-radius: 8rpx; + padding: 20rpx; + margin: 20rpx; + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); +} + +/* 列表 */ +.list-item { + display: flex; + align-items: center; + padding: 20rpx; + background-color: #ffffff; + border-bottom: 1rpx solid #e5e5e5; +} + +/* 加载状态 */ +.loading { + display: flex; + align-items: center; + justify-content: center; + padding: 20rpx; +} + +.loading-text { + margin-left: 10rpx; + color: #909399; + font-size: 24rpx; +} + +/* 空状态 */ +.empty { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 40rpx; +} + +.empty-image { + width: 200rpx; + height: 200rpx; + margin-bottom: 20rpx; +} + +.empty-text { + color: #909399; + font-size: 28rpx; +} +.text-overflow { + /* #ifdef MP-WEIXIN || APP-PLUS */ + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + /* #endif */ + /* #ifdef H5 */ + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + text-overflow: ellipsis; + /* #endif */ +} +.text-overflow-nvue { + /* #ifdef APP-PLUS */ + lines: 2; + text-overflow: ellipsis; + /* #endif */ + /* #ifdef MP-WEIXIN */ + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + /* #endif */ + /* #ifdef H5 */ + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + text-overflow: ellipsis; + /* #endif */ +} +.white-space-nowrap { + width: 300rpx; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.text-overflow-1 { + /* #ifdef MP-WEIXIN || APP-PLUS */ + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; + overflow: hidden; + /* #endif */ + /* #ifdef H5 */ + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; + overflow: hidden; + text-overflow: ellipsis; + /* #endif */ +} +.text-overflow-nvue1 { + /* height: 76rpx; */ + /* #ifdef APP-PLUS */ + lines: 1; + text-overflow: ellipsis; + /* #endif */ + /* #ifdef MP-WEIXIN */ + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; + overflow: hidden; + /* #endif */ + /* #ifdef H5 */ + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; + overflow: hidden; + text-overflow: ellipsis; + /* #endif */ +} +.box-cont { + background-color: #fff; + margin: 24rpx; + box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.05); +} +.btn-box { + height: 64rpx; + text-align: center; + line-height: 64rpx; + background-color: #E8101E; + border-radius: 32rpx; + position: fixed; + left: 24rpx; + bottom: 68rpx; + right: 24rpx; + z-index: 999; +} +.btn-text { + font-size: 28rpx; + font-weight: 500; + color: #ffffff; +} +.agree-btn { + width: 32rpx; + height: 32rpx; +} +.fixed-box { + padding: 32rpx 24rpx; + background-color: #ffffff; + position: absolute; + left: 0; + bottom: 0; + right: 0; + z-index: 9999; + /* #ifdef APP-PLUS || MP-WEIXIN */ + padding-bottom: calc(32rpx + constant(safe-area-inset-bottom)); + padding-bottom: calc(32rpx + env(safe-area-inset-bottom)); + /* #endif */ +} +.fixed-btn { + height: 80rpx; + background: #E8101E; + border-radius: 40rpx; + display: flex; + align-items: center; + justify-content: center; +} +.fixed-text { + font-size: 28rpx; + color: #ffffff; + font-weight: 500; +} +.arrow-right { + width: 32rpx; + height: 32rpx; +} + +.permission { + position: fixed; + top: 0; + left: 24rpx; + right: 24rpx; + background-color: #fff; + border-radius: 20rpx; + padding: 24rpx; + z-index: 9; + box-shadow: 0 8rpx 16rpx 0 rgba(0, 0, 0, 0.05); + opacity: 0; + transition: all 0.3s; + visibility: hidden; +} +.per-tit { + font-size: 32rpx; + font-weight: 700; + color: #007aff; +} +.per-cont { + font-size: 28rpx; + color: #333333; +} + +::-webkit-scrollbar { + display: none; + width: 0 !important; + height: 0 !important; + -webkit-appearance: none; + background: transparent; + color: transparent; +} + + +.flex-row-center-between{ + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; +} +.flex-row-start-between{ + display: flex; + flex-direction: row; + align-items: flex-start; + justify-content: space-between; +} +.flex-row-center-center{ + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; +} +.flex-row-center{ + display: flex; + flex-direction: row; + align-items: center; +} +.flex-row-start{ + display: flex; + flex-direction: row; + align-items: flex-start; +} +.flex-row-end-between{ + display: flex; + flex-direction: row; + align-items: flex-end; + justify-content: space-between; +} \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/static/data/ChinaCitys.json b/unpackage/dist/build/app-plus/static/data/ChinaCitys.json new file mode 100644 index 0000000..b2a2ca9 --- /dev/null +++ b/unpackage/dist/build/app-plus/static/data/ChinaCitys.json @@ -0,0 +1,14797 @@ +[ + { + "province": "北京市", + "code": "110000", + "citys": [ + { + "city": "北京市", + "code": "110100000000", + "areas": [ + { + "area": "东城区", + "code": "110101000000" + }, + { + "area": "西城区", + "code": "110102000000" + }, + { + "area": "朝阳区", + "code": "110105000000" + }, + { + "area": "丰台区", + "code": "110106000000" + }, + { + "area": "石景山区", + "code": "110107000000" + }, + { + "area": "海淀区", + "code": "110108000000" + }, + { + "area": "门头沟区", + "code": "110109000000" + }, + { + "area": "房山区", + "code": "110111000000" + }, + { + "area": "通州区", + "code": "110112000000" + }, + { + "area": "顺义区", + "code": "110113000000" + }, + { + "area": "昌平区", + "code": "110114000000" + }, + { + "area": "大兴区", + "code": "110115000000" + }, + { + "area": "怀柔区", + "code": "110116000000" + }, + { + "area": "平谷区", + "code": "110117000000" + }, + { + "area": "密云区", + "code": "110118000000" + }, + { + "area": "延庆区", + "code": "110119000000" + } + ] + } + ] + }, + { + "province": "天津市", + "code": "120000", + "citys": [ + { + "city": "天津市", + "code": "120100000000", + "areas": [ + { + "area": "和平区", + "code": "120101000000" + }, + { + "area": "河东区", + "code": "120102000000" + }, + { + "area": "河西区", + "code": "120103000000" + }, + { + "area": "南开区", + "code": "120104000000" + }, + { + "area": "河北区", + "code": "120105000000" + }, + { + "area": "红桥区", + "code": "120106000000" + }, + { + "area": "东丽区", + "code": "120110000000" + }, + { + "area": "西青区", + "code": "120111000000" + }, + { + "area": "津南区", + "code": "120112000000" + }, + { + "area": "北辰区", + "code": "120113000000" + }, + { + "area": "武清区", + "code": "120114000000" + }, + { + "area": "宝坻区", + "code": "120115000000" + }, + { + "area": "滨海新区", + "code": "120116000000" + }, + { + "area": "宁河区", + "code": "120117000000" + }, + { + "area": "静海区", + "code": "120118000000" + }, + { + "area": "蓟州区", + "code": "120119000000" + } + ] + } + ] + }, + { + "province": "河北省", + "code": "130000", + "citys": [ + { + "city": "石家庄市", + "code": "130100000000", + "areas": [ + { + "area": "长安区", + "code": "130102000000" + }, + { + "area": "桥西区", + "code": "130104000000" + }, + { + "area": "新华区", + "code": "130105000000" + }, + { + "area": "井陉矿区", + "code": "130107000000" + }, + { + "area": "裕华区", + "code": "130108000000" + }, + { + "area": "藁城区", + "code": "130109000000" + }, + { + "area": "鹿泉区", + "code": "130110000000" + }, + { + "area": "栾城区", + "code": "130111000000" + }, + { + "area": "井陉县", + "code": "130121000000" + }, + { + "area": "正定县", + "code": "130123000000" + }, + { + "area": "行唐县", + "code": "130125000000" + }, + { + "area": "灵寿县", + "code": "130126000000" + }, + { + "area": "高邑县", + "code": "130127000000" + }, + { + "area": "深泽县", + "code": "130128000000" + }, + { + "area": "赞皇县", + "code": "130129000000" + }, + { + "area": "无极县", + "code": "130130000000" + }, + { + "area": "平山县", + "code": "130131000000" + }, + { + "area": "元氏县", + "code": "130132000000" + }, + { + "area": "赵县", + "code": "130133000000" + }, + { + "area": "石家庄高新技术产业开发区", + "code": "130171000000" + }, + { + "area": "石家庄循环化工园区", + "code": "130172000000" + }, + { + "area": "辛集市", + "code": "130181000000" + }, + { + "area": "晋州市", + "code": "130183000000" + }, + { + "area": "新乐市", + "code": "130184000000" + } + ] + }, + { + "city": "唐山市", + "code": "130200000000", + "areas": [ + { + "area": "路南区", + "code": "130202000000" + }, + { + "area": "路北区", + "code": "130203000000" + }, + { + "area": "古冶区", + "code": "130204000000" + }, + { + "area": "开平区", + "code": "130205000000" + }, + { + "area": "丰南区", + "code": "130207000000" + }, + { + "area": "丰润区", + "code": "130208000000" + }, + { + "area": "曹妃甸区", + "code": "130209000000" + }, + { + "area": "滦南县", + "code": "130224000000" + }, + { + "area": "乐亭县", + "code": "130225000000" + }, + { + "area": "迁西县", + "code": "130227000000" + }, + { + "area": "玉田县", + "code": "130229000000" + }, + { + "area": "河北唐山芦台经济开发区", + "code": "130271000000" + }, + { + "area": "唐山市汉沽管理区", + "code": "130272000000" + }, + { + "area": "唐山高新技术产业开发区", + "code": "130273000000" + }, + { + "area": "河北唐山海港经济开发区", + "code": "130274000000" + }, + { + "area": "遵化市", + "code": "130281000000" + }, + { + "area": "迁安市", + "code": "130283000000" + }, + { + "area": "滦州市", + "code": "130284000000" + } + ] + }, + { + "city": "秦皇岛市", + "code": "130300000000", + "areas": [ + { + "area": "海港区", + "code": "130302000000" + }, + { + "area": "山海关区", + "code": "130303000000" + }, + { + "area": "北戴河区", + "code": "130304000000" + }, + { + "area": "抚宁区", + "code": "130306000000" + }, + { + "area": "青龙满族自治县", + "code": "130321000000" + }, + { + "area": "昌黎县", + "code": "130322000000" + }, + { + "area": "卢龙县", + "code": "130324000000" + }, + { + "area": "秦皇岛市经济技术开发区", + "code": "130371000000" + }, + { + "area": "北戴河新区", + "code": "130372000000" + } + ] + }, + { + "city": "邯郸市", + "code": "130400000000", + "areas": [ + { + "area": "邯山区", + "code": "130402000000" + }, + { + "area": "丛台区", + "code": "130403000000" + }, + { + "area": "复兴区", + "code": "130404000000" + }, + { + "area": "峰峰矿区", + "code": "130406000000" + }, + { + "area": "肥乡区", + "code": "130407000000" + }, + { + "area": "永年区", + "code": "130408000000" + }, + { + "area": "临漳县", + "code": "130423000000" + }, + { + "area": "成安县", + "code": "130424000000" + }, + { + "area": "大名县", + "code": "130425000000" + }, + { + "area": "涉县", + "code": "130426000000" + }, + { + "area": "磁县", + "code": "130427000000" + }, + { + "area": "邱县", + "code": "130430000000" + }, + { + "area": "鸡泽县", + "code": "130431000000" + }, + { + "area": "广平县", + "code": "130432000000" + }, + { + "area": "馆陶县", + "code": "130433000000" + }, + { + "area": "魏县", + "code": "130434000000" + }, + { + "area": "曲周县", + "code": "130435000000" + }, + { + "area": "邯郸经济技术开发区", + "code": "130471000000" + }, + { + "area": "邯郸冀南新区", + "code": "130473000000" + }, + { + "area": "武安市", + "code": "130481000000" + } + ] + }, + { + "city": "邢台市", + "code": "130500000000", + "areas": [ + { + "area": "襄都区", + "code": "130502000000" + }, + { + "area": "信都区", + "code": "130503000000" + }, + { + "area": "任泽区", + "code": "130505000000" + }, + { + "area": "南和区", + "code": "130506000000" + }, + { + "area": "临城县", + "code": "130522000000" + }, + { + "area": "内丘县", + "code": "130523000000" + }, + { + "area": "柏乡县", + "code": "130524000000" + }, + { + "area": "隆尧县", + "code": "130525000000" + }, + { + "area": "宁晋县", + "code": "130528000000" + }, + { + "area": "巨鹿县", + "code": "130529000000" + }, + { + "area": "新河县", + "code": "130530000000" + }, + { + "area": "广宗县", + "code": "130531000000" + }, + { + "area": "平乡县", + "code": "130532000000" + }, + { + "area": "威县", + "code": "130533000000" + }, + { + "area": "清河县", + "code": "130534000000" + }, + { + "area": "临西县", + "code": "130535000000" + }, + { + "area": "河北邢台经济开发区", + "code": "130571000000" + }, + { + "area": "南宫市", + "code": "130581000000" + }, + { + "area": "沙河市", + "code": "130582000000" + } + ] + }, + { + "city": "保定市", + "code": "130600000000", + "areas": [ + { + "area": "竞秀区", + "code": "130602000000" + }, + { + "area": "莲池区", + "code": "130606000000" + }, + { + "area": "满城区", + "code": "130607000000" + }, + { + "area": "清苑区", + "code": "130608000000" + }, + { + "area": "徐水区", + "code": "130609000000" + }, + { + "area": "涞水县", + "code": "130623000000" + }, + { + "area": "阜平县", + "code": "130624000000" + }, + { + "area": "定兴县", + "code": "130626000000" + }, + { + "area": "唐县", + "code": "130627000000" + }, + { + "area": "高阳县", + "code": "130628000000" + }, + { + "area": "容城县", + "code": "130629000000" + }, + { + "area": "涞源县", + "code": "130630000000" + }, + { + "area": "望都县", + "code": "130631000000" + }, + { + "area": "安新县", + "code": "130632000000" + }, + { + "area": "易县", + "code": "130633000000" + }, + { + "area": "曲阳县", + "code": "130634000000" + }, + { + "area": "蠡县", + "code": "130635000000" + }, + { + "area": "顺平县", + "code": "130636000000" + }, + { + "area": "博野县", + "code": "130637000000" + }, + { + "area": "雄县", + "code": "130638000000" + }, + { + "area": "保定高新技术产业开发区", + "code": "130671000000" + }, + { + "area": "保定白沟新城", + "code": "130672000000" + }, + { + "area": "涿州市", + "code": "130681000000" + }, + { + "area": "定州市", + "code": "130682000000" + }, + { + "area": "安国市", + "code": "130683000000" + }, + { + "area": "高碑店市", + "code": "130684000000" + } + ] + }, + { + "city": "张家口市", + "code": "130700000000", + "areas": [ + { + "area": "桥东区", + "code": "130702000000" + }, + { + "area": "桥西区", + "code": "130703000000" + }, + { + "area": "宣化区", + "code": "130705000000" + }, + { + "area": "下花园区", + "code": "130706000000" + }, + { + "area": "万全区", + "code": "130708000000" + }, + { + "area": "崇礼区", + "code": "130709000000" + }, + { + "area": "张北县", + "code": "130722000000" + }, + { + "area": "康保县", + "code": "130723000000" + }, + { + "area": "沽源县", + "code": "130724000000" + }, + { + "area": "尚义县", + "code": "130725000000" + }, + { + "area": "蔚县", + "code": "130726000000" + }, + { + "area": "阳原县", + "code": "130727000000" + }, + { + "area": "怀安县", + "code": "130728000000" + }, + { + "area": "怀来县", + "code": "130730000000" + }, + { + "area": "涿鹿县", + "code": "130731000000" + }, + { + "area": "赤城县", + "code": "130732000000" + }, + { + "area": "张家口经济开发区", + "code": "130771000000" + }, + { + "area": "张家口市察北管理区", + "code": "130772000000" + }, + { + "area": "张家口市塞北管理区", + "code": "130773000000" + } + ] + }, + { + "city": "承德市", + "code": "130800000000", + "areas": [ + { + "area": "双桥区", + "code": "130802000000" + }, + { + "area": "双滦区", + "code": "130803000000" + }, + { + "area": "鹰手营子矿区", + "code": "130804000000" + }, + { + "area": "承德县", + "code": "130821000000" + }, + { + "area": "兴隆县", + "code": "130822000000" + }, + { + "area": "滦平县", + "code": "130824000000" + }, + { + "area": "隆化县", + "code": "130825000000" + }, + { + "area": "丰宁满族自治县", + "code": "130826000000" + }, + { + "area": "宽城满族自治县", + "code": "130827000000" + }, + { + "area": "围场满族蒙古族自治县", + "code": "130828000000" + }, + { + "area": "承德高新技术产业开发区", + "code": "130871000000" + }, + { + "area": "平泉市", + "code": "130881000000" + } + ] + }, + { + "city": "沧州市", + "code": "130900000000", + "areas": [ + { + "area": "新华区", + "code": "130902000000" + }, + { + "area": "运河区", + "code": "130903000000" + }, + { + "area": "沧县", + "code": "130921000000" + }, + { + "area": "青县", + "code": "130922000000" + }, + { + "area": "东光县", + "code": "130923000000" + }, + { + "area": "海兴县", + "code": "130924000000" + }, + { + "area": "盐山县", + "code": "130925000000" + }, + { + "area": "肃宁县", + "code": "130926000000" + }, + { + "area": "南皮县", + "code": "130927000000" + }, + { + "area": "吴桥县", + "code": "130928000000" + }, + { + "area": "献县", + "code": "130929000000" + }, + { + "area": "孟村回族自治县", + "code": "130930000000" + }, + { + "area": "河北沧州经济开发区", + "code": "130971000000" + }, + { + "area": "沧州高新技术产业开发区", + "code": "130972000000" + }, + { + "area": "沧州渤海新区", + "code": "130973000000" + }, + { + "area": "泊头市", + "code": "130981000000" + }, + { + "area": "任丘市", + "code": "130982000000" + }, + { + "area": "黄骅市", + "code": "130983000000" + }, + { + "area": "河间市", + "code": "130984000000" + } + ] + }, + { + "city": "廊坊市", + "code": "131000000000", + "areas": [ + { + "area": "安次区", + "code": "131002000000" + }, + { + "area": "广阳区", + "code": "131003000000" + }, + { + "area": "固安县", + "code": "131022000000" + }, + { + "area": "永清县", + "code": "131023000000" + }, + { + "area": "香河县", + "code": "131024000000" + }, + { + "area": "大城县", + "code": "131025000000" + }, + { + "area": "文安县", + "code": "131026000000" + }, + { + "area": "大厂回族自治县", + "code": "131028000000" + }, + { + "area": "廊坊经济技术开发区", + "code": "131071000000" + }, + { + "area": "霸州市", + "code": "131081000000" + }, + { + "area": "三河市", + "code": "131082000000" + } + ] + }, + { + "city": "衡水市", + "code": "131100000000", + "areas": [ + { + "area": "桃城区", + "code": "131102000000" + }, + { + "area": "冀州区", + "code": "131103000000" + }, + { + "area": "枣强县", + "code": "131121000000" + }, + { + "area": "武邑县", + "code": "131122000000" + }, + { + "area": "武强县", + "code": "131123000000" + }, + { + "area": "饶阳县", + "code": "131124000000" + }, + { + "area": "安平县", + "code": "131125000000" + }, + { + "area": "故城县", + "code": "131126000000" + }, + { + "area": "景县", + "code": "131127000000" + }, + { + "area": "阜城县", + "code": "131128000000" + }, + { + "area": "河北衡水高新技术产业开发区", + "code": "131171000000" + }, + { + "area": "衡水滨湖新区", + "code": "131172000000" + }, + { + "area": "深州市", + "code": "131182000000" + } + ] + }, + { + "city": "雄安新区", + "code": "133100000000", + "areas": [ + { + "area": "雄安新区", + "code": "133100000000" + } + ] + } + ] + }, + { + "province": "山西省", + "code": "140000", + "citys": [ + { + "city": "太原市", + "code": "140100000000", + "areas": [ + { + "area": "小店区", + "code": "140105000000" + }, + { + "area": "迎泽区", + "code": "140106000000" + }, + { + "area": "杏花岭区", + "code": "140107000000" + }, + { + "area": "尖草坪区", + "code": "140108000000" + }, + { + "area": "万柏林区", + "code": "140109000000" + }, + { + "area": "晋源区", + "code": "140110000000" + }, + { + "area": "清徐县", + "code": "140121000000" + }, + { + "area": "阳曲县", + "code": "140122000000" + }, + { + "area": "娄烦县", + "code": "140123000000" + }, + { + "area": "山西转型综合改革示范区", + "code": "140171000000" + }, + { + "area": "古交市", + "code": "140181000000" + } + ] + }, + { + "city": "大同市", + "code": "140200000000", + "areas": [ + { + "area": "新荣区", + "code": "140212000000" + }, + { + "area": "平城区", + "code": "140213000000" + }, + { + "area": "云冈区", + "code": "140214000000" + }, + { + "area": "云州区", + "code": "140215000000" + }, + { + "area": "阳高县", + "code": "140221000000" + }, + { + "area": "天镇县", + "code": "140222000000" + }, + { + "area": "广灵县", + "code": "140223000000" + }, + { + "area": "灵丘县", + "code": "140224000000" + }, + { + "area": "浑源县", + "code": "140225000000" + }, + { + "area": "左云县", + "code": "140226000000" + }, + { + "area": "山西大同经济开发区", + "code": "140271000000" + } + ] + }, + { + "city": "阳泉市", + "code": "140300000000", + "areas": [ + { + "area": "城区", + "code": "140302000000" + }, + { + "area": "矿区", + "code": "140303000000" + }, + { + "area": "郊区", + "code": "140311000000" + }, + { + "area": "平定县", + "code": "140321000000" + }, + { + "area": "盂县", + "code": "140322000000" + } + ] + }, + { + "city": "长治市", + "code": "140400000000", + "areas": [ + { + "area": "潞州区", + "code": "140403000000" + }, + { + "area": "上党区", + "code": "140404000000" + }, + { + "area": "屯留区", + "code": "140405000000" + }, + { + "area": "潞城区", + "code": "140406000000" + }, + { + "area": "襄垣县", + "code": "140423000000" + }, + { + "area": "平顺县", + "code": "140425000000" + }, + { + "area": "黎城县", + "code": "140426000000" + }, + { + "area": "壶关县", + "code": "140427000000" + }, + { + "area": "长子县", + "code": "140428000000" + }, + { + "area": "武乡县", + "code": "140429000000" + }, + { + "area": "沁县", + "code": "140430000000" + }, + { + "area": "沁源县", + "code": "140431000000" + } + ] + }, + { + "city": "晋城市", + "code": "140500000000", + "areas": [ + { + "area": "城区", + "code": "140502000000" + }, + { + "area": "沁水县", + "code": "140521000000" + }, + { + "area": "阳城县", + "code": "140522000000" + }, + { + "area": "陵川县", + "code": "140524000000" + }, + { + "area": "泽州县", + "code": "140525000000" + }, + { + "area": "高平市", + "code": "140581000000" + } + ] + }, + { + "city": "朔州市", + "code": "140600000000", + "areas": [ + { + "area": "朔城区", + "code": "140602000000" + }, + { + "area": "平鲁区", + "code": "140603000000" + }, + { + "area": "山阴县", + "code": "140621000000" + }, + { + "area": "应县", + "code": "140622000000" + }, + { + "area": "右玉县", + "code": "140623000000" + }, + { + "area": "山西朔州经济开发区", + "code": "140671000000" + }, + { + "area": "怀仁市", + "code": "140681000000" + } + ] + }, + { + "city": "晋中市", + "code": "140700000000", + "areas": [ + { + "area": "榆次区", + "code": "140702000000" + }, + { + "area": "太谷区", + "code": "140703000000" + }, + { + "area": "榆社县", + "code": "140721000000" + }, + { + "area": "左权县", + "code": "140722000000" + }, + { + "area": "和顺县", + "code": "140723000000" + }, + { + "area": "昔阳县", + "code": "140724000000" + }, + { + "area": "寿阳县", + "code": "140725000000" + }, + { + "area": "祁县", + "code": "140727000000" + }, + { + "area": "平遥县", + "code": "140728000000" + }, + { + "area": "灵石县", + "code": "140729000000" + }, + { + "area": "介休市", + "code": "140781000000" + } + ] + }, + { + "city": "运城市", + "code": "140800000000", + "areas": [ + { + "area": "盐湖区", + "code": "140802000000" + }, + { + "area": "临猗县", + "code": "140821000000" + }, + { + "area": "万荣县", + "code": "140822000000" + }, + { + "area": "闻喜县", + "code": "140823000000" + }, + { + "area": "稷山县", + "code": "140824000000" + }, + { + "area": "新绛县", + "code": "140825000000" + }, + { + "area": "绛县", + "code": "140826000000" + }, + { + "area": "垣曲县", + "code": "140827000000" + }, + { + "area": "夏县", + "code": "140828000000" + }, + { + "area": "平陆县", + "code": "140829000000" + }, + { + "area": "芮城县", + "code": "140830000000" + }, + { + "area": "永济市", + "code": "140881000000" + }, + { + "area": "河津市", + "code": "140882000000" + } + ] + }, + { + "city": "忻州市", + "code": "140900000000", + "areas": [ + { + "area": "忻府区", + "code": "140902000000" + }, + { + "area": "定襄县", + "code": "140921000000" + }, + { + "area": "五台县", + "code": "140922000000" + }, + { + "area": "代县", + "code": "140923000000" + }, + { + "area": "繁峙县", + "code": "140924000000" + }, + { + "area": "宁武县", + "code": "140925000000" + }, + { + "area": "静乐县", + "code": "140926000000" + }, + { + "area": "神池县", + "code": "140927000000" + }, + { + "area": "五寨县", + "code": "140928000000" + }, + { + "area": "岢岚县", + "code": "140929000000" + }, + { + "area": "河曲县", + "code": "140930000000" + }, + { + "area": "保德县", + "code": "140931000000" + }, + { + "area": "偏关县", + "code": "140932000000" + }, + { + "area": "五台山风景名胜区", + "code": "140971000000" + }, + { + "area": "原平市", + "code": "140981000000" + } + ] + }, + { + "city": "临汾市", + "code": "141000000000", + "areas": [ + { + "area": "尧都区", + "code": "141002000000" + }, + { + "area": "曲沃县", + "code": "141021000000" + }, + { + "area": "翼城县", + "code": "141022000000" + }, + { + "area": "襄汾县", + "code": "141023000000" + }, + { + "area": "洪洞县", + "code": "141024000000" + }, + { + "area": "古县", + "code": "141025000000" + }, + { + "area": "安泽县", + "code": "141026000000" + }, + { + "area": "浮山县", + "code": "141027000000" + }, + { + "area": "吉县", + "code": "141028000000" + }, + { + "area": "乡宁县", + "code": "141029000000" + }, + { + "area": "大宁县", + "code": "141030000000" + }, + { + "area": "隰县", + "code": "141031000000" + }, + { + "area": "永和县", + "code": "141032000000" + }, + { + "area": "蒲县", + "code": "141033000000" + }, + { + "area": "汾西县", + "code": "141034000000" + }, + { + "area": "侯马市", + "code": "141081000000" + }, + { + "area": "霍州市", + "code": "141082000000" + } + ] + }, + { + "city": "吕梁市", + "code": "141100000000", + "areas": [ + { + "area": "离石区", + "code": "141102000000" + }, + { + "area": "文水县", + "code": "141121000000" + }, + { + "area": "交城县", + "code": "141122000000" + }, + { + "area": "兴县", + "code": "141123000000" + }, + { + "area": "临县", + "code": "141124000000" + }, + { + "area": "柳林县", + "code": "141125000000" + }, + { + "area": "石楼县", + "code": "141126000000" + }, + { + "area": "岚县", + "code": "141127000000" + }, + { + "area": "方山县", + "code": "141128000000" + }, + { + "area": "中阳县", + "code": "141129000000" + }, + { + "area": "交口县", + "code": "141130000000" + }, + { + "area": "孝义市", + "code": "141181000000" + }, + { + "area": "汾阳市", + "code": "141182000000" + } + ] + } + ] + }, + { + "province": "内蒙古自治区", + "code": "150000", + "citys": [ + { + "city": "呼和浩特市", + "code": "150100000000", + "areas": [ + { + "area": "新城区", + "code": "150102000000" + }, + { + "area": "回民区", + "code": "150103000000" + }, + { + "area": "玉泉区", + "code": "150104000000" + }, + { + "area": "赛罕区", + "code": "150105000000" + }, + { + "area": "土默特左旗", + "code": "150121000000" + }, + { + "area": "托克托县", + "code": "150122000000" + }, + { + "area": "和林格尔县", + "code": "150123000000" + }, + { + "area": "清水河县", + "code": "150124000000" + }, + { + "area": "武川县", + "code": "150125000000" + }, + { + "area": "呼和浩特经济技术开发区", + "code": "150172000000" + } + ] + }, + { + "city": "包头市", + "code": "150200000000", + "areas": [ + { + "area": "东河区", + "code": "150202000000" + }, + { + "area": "昆都仑区", + "code": "150203000000" + }, + { + "area": "青山区", + "code": "150204000000" + }, + { + "area": "石拐区", + "code": "150205000000" + }, + { + "area": "白云鄂博矿区", + "code": "150206000000" + }, + { + "area": "九原区", + "code": "150207000000" + }, + { + "area": "土默特右旗", + "code": "150221000000" + }, + { + "area": "固阳县", + "code": "150222000000" + }, + { + "area": "达尔罕茂明安联合旗", + "code": "150223000000" + }, + { + "area": "包头稀土高新技术产业开发区", + "code": "150271000000" + } + ] + }, + { + "city": "乌海市", + "code": "150300000000", + "areas": [ + { + "area": "海勃湾区", + "code": "150302000000" + }, + { + "area": "海南区", + "code": "150303000000" + }, + { + "area": "乌达区", + "code": "150304000000" + } + ] + }, + { + "city": "赤峰市", + "code": "150400000000", + "areas": [ + { + "area": "红山区", + "code": "150402000000" + }, + { + "area": "元宝山区", + "code": "150403000000" + }, + { + "area": "松山区", + "code": "150404000000" + }, + { + "area": "阿鲁科尔沁旗", + "code": "150421000000" + }, + { + "area": "巴林左旗", + "code": "150422000000" + }, + { + "area": "巴林右旗", + "code": "150423000000" + }, + { + "area": "林西县", + "code": "150424000000" + }, + { + "area": "克什克腾旗", + "code": "150425000000" + }, + { + "area": "翁牛特旗", + "code": "150426000000" + }, + { + "area": "喀喇沁旗", + "code": "150428000000" + }, + { + "area": "宁城县", + "code": "150429000000" + }, + { + "area": "敖汉旗", + "code": "150430000000" + } + ] + }, + { + "city": "通辽市", + "code": "150500000000", + "areas": [ + { + "area": "科尔沁区", + "code": "150502000000" + }, + { + "area": "科尔沁左翼中旗", + "code": "150521000000" + }, + { + "area": "科尔沁左翼后旗", + "code": "150522000000" + }, + { + "area": "开鲁县", + "code": "150523000000" + }, + { + "area": "库伦旗", + "code": "150524000000" + }, + { + "area": "奈曼旗", + "code": "150525000000" + }, + { + "area": "扎鲁特旗", + "code": "150526000000" + }, + { + "area": "通辽经济技术开发区", + "code": "150571000000" + }, + { + "area": "霍林郭勒市", + "code": "150581000000" + } + ] + }, + { + "city": "鄂尔多斯市", + "code": "150600000000", + "areas": [ + { + "area": "东胜区", + "code": "150602000000" + }, + { + "area": "康巴什区", + "code": "150603000000" + }, + { + "area": "达拉特旗", + "code": "150621000000" + }, + { + "area": "准格尔旗", + "code": "150622000000" + }, + { + "area": "鄂托克前旗", + "code": "150623000000" + }, + { + "area": "鄂托克旗", + "code": "150624000000" + }, + { + "area": "杭锦旗", + "code": "150625000000" + }, + { + "area": "乌审旗", + "code": "150626000000" + }, + { + "area": "伊金霍洛旗", + "code": "150627000000" + } + ] + }, + { + "city": "呼伦贝尔市", + "code": "150700000000", + "areas": [ + { + "area": "海拉尔区", + "code": "150702000000" + }, + { + "area": "扎赉诺尔区", + "code": "150703000000" + }, + { + "area": "阿荣旗", + "code": "150721000000" + }, + { + "area": "莫力达瓦达斡尔族自治旗", + "code": "150722000000" + }, + { + "area": "鄂伦春自治旗", + "code": "150723000000" + }, + { + "area": "鄂温克族自治旗", + "code": "150724000000" + }, + { + "area": "陈巴尔虎旗", + "code": "150725000000" + }, + { + "area": "新巴尔虎左旗", + "code": "150726000000" + }, + { + "area": "新巴尔虎右旗", + "code": "150727000000" + }, + { + "area": "满洲里市", + "code": "150781000000" + }, + { + "area": "牙克石市", + "code": "150782000000" + }, + { + "area": "扎兰屯市", + "code": "150783000000" + }, + { + "area": "额尔古纳市", + "code": "150784000000" + }, + { + "area": "根河市", + "code": "150785000000" + } + ] + }, + { + "city": "巴彦淖尔市", + "code": "150800000000", + "areas": [ + { + "area": "临河区", + "code": "150802000000" + }, + { + "area": "五原县", + "code": "150821000000" + }, + { + "area": "磴口县", + "code": "150822000000" + }, + { + "area": "乌拉特前旗", + "code": "150823000000" + }, + { + "area": "乌拉特中旗", + "code": "150824000000" + }, + { + "area": "乌拉特后旗", + "code": "150825000000" + }, + { + "area": "杭锦后旗", + "code": "150826000000" + } + ] + }, + { + "city": "乌兰察布市", + "code": "150900000000", + "areas": [ + { + "area": "集宁区", + "code": "150902000000" + }, + { + "area": "卓资县", + "code": "150921000000" + }, + { + "area": "化德县", + "code": "150922000000" + }, + { + "area": "商都县", + "code": "150923000000" + }, + { + "area": "兴和县", + "code": "150924000000" + }, + { + "area": "凉城县", + "code": "150925000000" + }, + { + "area": "察哈尔右翼前旗", + "code": "150926000000" + }, + { + "area": "察哈尔右翼中旗", + "code": "150927000000" + }, + { + "area": "察哈尔右翼后旗", + "code": "150928000000" + }, + { + "area": "四子王旗", + "code": "150929000000" + }, + { + "area": "丰镇市", + "code": "150981000000" + } + ] + }, + { + "city": "兴安盟", + "code": "152200000000", + "areas": [ + { + "area": "乌兰浩特市", + "code": "152201000000" + }, + { + "area": "阿尔山市", + "code": "152202000000" + }, + { + "area": "科尔沁右翼前旗", + "code": "152221000000" + }, + { + "area": "科尔沁右翼中旗", + "code": "152222000000" + }, + { + "area": "扎赉特旗", + "code": "152223000000" + }, + { + "area": "突泉县", + "code": "152224000000" + } + ] + }, + { + "city": "锡林郭勒盟", + "code": "152500000000", + "areas": [ + { + "area": "二连浩特市", + "code": "152501000000" + }, + { + "area": "锡林浩特市", + "code": "152502000000" + }, + { + "area": "阿巴嘎旗", + "code": "152522000000" + }, + { + "area": "苏尼特左旗", + "code": "152523000000" + }, + { + "area": "苏尼特右旗", + "code": "152524000000" + }, + { + "area": "东乌珠穆沁旗", + "code": "152525000000" + }, + { + "area": "西乌珠穆沁旗", + "code": "152526000000" + }, + { + "area": "太仆寺旗", + "code": "152527000000" + }, + { + "area": "镶黄旗", + "code": "152528000000" + }, + { + "area": "正镶白旗", + "code": "152529000000" + }, + { + "area": "正蓝旗", + "code": "152530000000" + }, + { + "area": "多伦县", + "code": "152531000000" + }, + { + "area": "乌拉盖管理区管委会", + "code": "152571000000" + } + ] + }, + { + "city": "阿拉善盟", + "code": "152900000000", + "areas": [ + { + "area": "阿拉善左旗", + "code": "152921000000" + }, + { + "area": "阿拉善右旗", + "code": "152922000000" + }, + { + "area": "额济纳旗", + "code": "152923000000" + }, + { + "area": "内蒙古阿拉善高新技术产业开发区", + "code": "152971000000" + } + ] + } + ] + }, + { + "province": "辽宁省", + "code": "210000", + "citys": [ + { + "city": "沈阳市", + "code": "210100000000", + "areas": [ + { + "area": "和平区", + "code": "210102000000" + }, + { + "area": "沈河区", + "code": "210103000000" + }, + { + "area": "大东区", + "code": "210104000000" + }, + { + "area": "皇姑区", + "code": "210105000000" + }, + { + "area": "铁西区", + "code": "210106000000" + }, + { + "area": "苏家屯区", + "code": "210111000000" + }, + { + "area": "浑南区", + "code": "210112000000" + }, + { + "area": "沈北新区", + "code": "210113000000" + }, + { + "area": "于洪区", + "code": "210114000000" + }, + { + "area": "辽中区", + "code": "210115000000" + }, + { + "area": "康平县", + "code": "210123000000" + }, + { + "area": "法库县", + "code": "210124000000" + }, + { + "area": "新民市", + "code": "210181000000" + } + ] + }, + { + "city": "大连市", + "code": "210200000000", + "areas": [ + { + "area": "中山区", + "code": "210202000000" + }, + { + "area": "西岗区", + "code": "210203000000" + }, + { + "area": "沙河口区", + "code": "210204000000" + }, + { + "area": "甘井子区", + "code": "210211000000" + }, + { + "area": "旅顺口区", + "code": "210212000000" + }, + { + "area": "金州区", + "code": "210213000000" + }, + { + "area": "普兰店区", + "code": "210214000000" + }, + { + "area": "长海县", + "code": "210224000000" + }, + { + "area": "瓦房店市", + "code": "210281000000" + }, + { + "area": "庄河市", + "code": "210283000000" + } + ] + }, + { + "city": "鞍山市", + "code": "210300000000", + "areas": [ + { + "area": "铁东区", + "code": "210302000000" + }, + { + "area": "铁西区", + "code": "210303000000" + }, + { + "area": "立山区", + "code": "210304000000" + }, + { + "area": "千山区", + "code": "210311000000" + }, + { + "area": "台安县", + "code": "210321000000" + }, + { + "area": "岫岩满族自治县", + "code": "210323000000" + }, + { + "area": "海城市", + "code": "210381000000" + } + ] + }, + { + "city": "抚顺市", + "code": "210400000000", + "areas": [ + { + "area": "新抚区", + "code": "210402000000" + }, + { + "area": "东洲区", + "code": "210403000000" + }, + { + "area": "望花区", + "code": "210404000000" + }, + { + "area": "顺城区", + "code": "210411000000" + }, + { + "area": "抚顺县", + "code": "210421000000" + }, + { + "area": "新宾满族自治县", + "code": "210422000000" + }, + { + "area": "清原满族自治县", + "code": "210423000000" + } + ] + }, + { + "city": "本溪市", + "code": "210500000000", + "areas": [ + { + "area": "平山区", + "code": "210502000000" + }, + { + "area": "溪湖区", + "code": "210503000000" + }, + { + "area": "明山区", + "code": "210504000000" + }, + { + "area": "南芬区", + "code": "210505000000" + }, + { + "area": "本溪满族自治县", + "code": "210521000000" + }, + { + "area": "桓仁满族自治县", + "code": "210522000000" + } + ] + }, + { + "city": "丹东市", + "code": "210600000000", + "areas": [ + { + "area": "元宝区", + "code": "210602000000" + }, + { + "area": "振兴区", + "code": "210603000000" + }, + { + "area": "振安区", + "code": "210604000000" + }, + { + "area": "宽甸满族自治县", + "code": "210624000000" + }, + { + "area": "东港市", + "code": "210681000000" + }, + { + "area": "凤城市", + "code": "210682000000" + } + ] + }, + { + "city": "锦州市", + "code": "210700000000", + "areas": [ + { + "area": "古塔区", + "code": "210702000000" + }, + { + "area": "凌河区", + "code": "210703000000" + }, + { + "area": "太和区", + "code": "210711000000" + }, + { + "area": "黑山县", + "code": "210726000000" + }, + { + "area": "义县", + "code": "210727000000" + }, + { + "area": "凌海市", + "code": "210781000000" + }, + { + "area": "北镇市", + "code": "210782000000" + } + ] + }, + { + "city": "营口市", + "code": "210800000000", + "areas": [ + { + "area": "站前区", + "code": "210802000000" + }, + { + "area": "西市区", + "code": "210803000000" + }, + { + "area": "鲅鱼圈区", + "code": "210804000000" + }, + { + "area": "老边区", + "code": "210811000000" + }, + { + "area": "盖州市", + "code": "210881000000" + }, + { + "area": "大石桥市", + "code": "210882000000" + } + ] + }, + { + "city": "阜新市", + "code": "210900000000", + "areas": [ + { + "area": "海州区", + "code": "210902000000" + }, + { + "area": "新邱区", + "code": "210903000000" + }, + { + "area": "太平区", + "code": "210904000000" + }, + { + "area": "清河门区", + "code": "210905000000" + }, + { + "area": "细河区", + "code": "210911000000" + }, + { + "area": "阜新蒙古族自治县", + "code": "210921000000" + }, + { + "area": "彰武县", + "code": "210922000000" + } + ] + }, + { + "city": "辽阳市", + "code": "211000000000", + "areas": [ + { + "area": "白塔区", + "code": "211002000000" + }, + { + "area": "文圣区", + "code": "211003000000" + }, + { + "area": "宏伟区", + "code": "211004000000" + }, + { + "area": "弓长岭区", + "code": "211005000000" + }, + { + "area": "太子河区", + "code": "211011000000" + }, + { + "area": "辽阳县", + "code": "211021000000" + }, + { + "area": "灯塔市", + "code": "211081000000" + } + ] + }, + { + "city": "盘锦市", + "code": "211100000000", + "areas": [ + { + "area": "双台子区", + "code": "211102000000" + }, + { + "area": "兴隆台区", + "code": "211103000000" + }, + { + "area": "大洼区", + "code": "211104000000" + }, + { + "area": "盘山县", + "code": "211122000000" + } + ] + }, + { + "city": "铁岭市", + "code": "211200000000", + "areas": [ + { + "area": "银州区", + "code": "211202000000" + }, + { + "area": "清河区", + "code": "211204000000" + }, + { + "area": "铁岭县", + "code": "211221000000" + }, + { + "area": "西丰县", + "code": "211223000000" + }, + { + "area": "昌图县", + "code": "211224000000" + }, + { + "area": "调兵山市", + "code": "211281000000" + }, + { + "area": "开原市", + "code": "211282000000" + } + ] + }, + { + "city": "朝阳市", + "code": "211300000000", + "areas": [ + { + "area": "双塔区", + "code": "211302000000" + }, + { + "area": "龙城区", + "code": "211303000000" + }, + { + "area": "朝阳县", + "code": "211321000000" + }, + { + "area": "建平县", + "code": "211322000000" + }, + { + "area": "喀喇沁左翼蒙古族自治县", + "code": "211324000000" + }, + { + "area": "北票市", + "code": "211381000000" + }, + { + "area": "凌源市", + "code": "211382000000" + } + ] + }, + { + "city": "葫芦岛市", + "code": "211400000000", + "areas": [ + { + "area": "连山区", + "code": "211402000000" + }, + { + "area": "龙港区", + "code": "211403000000" + }, + { + "area": "南票区", + "code": "211404000000" + }, + { + "area": "绥中县", + "code": "211421000000" + }, + { + "area": "建昌县", + "code": "211422000000" + }, + { + "area": "兴城市", + "code": "211481000000" + } + ] + } + ] + }, + { + "province": "吉林省", + "code": "220000", + "citys": [ + { + "city": "长春市", + "code": "220100000000", + "areas": [ + { + "area": "南关区", + "code": "220102000000" + }, + { + "area": "宽城区", + "code": "220103000000" + }, + { + "area": "朝阳区", + "code": "220104000000" + }, + { + "area": "二道区", + "code": "220105000000" + }, + { + "area": "绿园区", + "code": "220106000000" + }, + { + "area": "双阳区", + "code": "220112000000" + }, + { + "area": "九台区", + "code": "220113000000" + }, + { + "area": "农安县", + "code": "220122000000" + }, + { + "area": "长春经济技术开发区", + "code": "220171000000" + }, + { + "area": "长春净月高新技术产业开发区", + "code": "220172000000" + }, + { + "area": "长春高新技术产业开发区", + "code": "220173000000" + }, + { + "area": "长春汽车经济技术开发区", + "code": "220174000000" + }, + { + "area": "榆树市", + "code": "220182000000" + }, + { + "area": "德惠市", + "code": "220183000000" + }, + { + "area": "公主岭市", + "code": "220184000000" + } + ] + }, + { + "city": "吉林市", + "code": "220200000000", + "areas": [ + { + "area": "昌邑区", + "code": "220202000000" + }, + { + "area": "龙潭区", + "code": "220203000000" + }, + { + "area": "船营区", + "code": "220204000000" + }, + { + "area": "丰满区", + "code": "220211000000" + }, + { + "area": "永吉县", + "code": "220221000000" + }, + { + "area": "吉林经济开发区", + "code": "220271000000" + }, + { + "area": "吉林高新技术产业开发区", + "code": "220272000000" + }, + { + "area": "吉林中国新加坡食品区", + "code": "220273000000" + }, + { + "area": "蛟河市", + "code": "220281000000" + }, + { + "area": "桦甸市", + "code": "220282000000" + }, + { + "area": "舒兰市", + "code": "220283000000" + }, + { + "area": "磐石市", + "code": "220284000000" + } + ] + }, + { + "city": "四平市", + "code": "220300000000", + "areas": [ + { + "area": "铁西区", + "code": "220302000000" + }, + { + "area": "铁东区", + "code": "220303000000" + }, + { + "area": "梨树县", + "code": "220322000000" + }, + { + "area": "伊通满族自治县", + "code": "220323000000" + }, + { + "area": "双辽市", + "code": "220382000000" + } + ] + }, + { + "city": "辽源市", + "code": "220400000000", + "areas": [ + { + "area": "龙山区", + "code": "220402000000" + }, + { + "area": "西安区", + "code": "220403000000" + }, + { + "area": "东丰县", + "code": "220421000000" + }, + { + "area": "东辽县", + "code": "220422000000" + } + ] + }, + { + "city": "通化市", + "code": "220500000000", + "areas": [ + { + "area": "东昌区", + "code": "220502000000" + }, + { + "area": "二道江区", + "code": "220503000000" + }, + { + "area": "通化县", + "code": "220521000000" + }, + { + "area": "辉南县", + "code": "220523000000" + }, + { + "area": "柳河县", + "code": "220524000000" + }, + { + "area": "梅河口市", + "code": "220581000000" + }, + { + "area": "集安市", + "code": "220582000000" + } + ] + }, + { + "city": "白山市", + "code": "220600000000", + "areas": [ + { + "area": "浑江区", + "code": "220602000000" + }, + { + "area": "江源区", + "code": "220605000000" + }, + { + "area": "抚松县", + "code": "220621000000" + }, + { + "area": "靖宇县", + "code": "220622000000" + }, + { + "area": "长白朝鲜族自治县", + "code": "220623000000" + }, + { + "area": "临江市", + "code": "220681000000" + } + ] + }, + { + "city": "松原市", + "code": "220700000000", + "areas": [ + { + "area": "宁江区", + "code": "220702000000" + }, + { + "area": "前郭尔罗斯蒙古族自治县", + "code": "220721000000" + }, + { + "area": "长岭县", + "code": "220722000000" + }, + { + "area": "乾安县", + "code": "220723000000" + }, + { + "area": "吉林松原经济开发区", + "code": "220771000000" + }, + { + "area": "扶余市", + "code": "220781000000" + } + ] + }, + { + "city": "白城市", + "code": "220800000000", + "areas": [ + { + "area": "洮北区", + "code": "220802000000" + }, + { + "area": "镇赉县", + "code": "220821000000" + }, + { + "area": "通榆县", + "code": "220822000000" + }, + { + "area": "吉林白城经济开发区", + "code": "220871000000" + }, + { + "area": "洮南市", + "code": "220881000000" + }, + { + "area": "大安市", + "code": "220882000000" + } + ] + }, + { + "city": "延边朝鲜族自治州", + "code": "222400000000", + "areas": [ + { + "area": "延吉市", + "code": "222401000000" + }, + { + "area": "图们市", + "code": "222402000000" + }, + { + "area": "敦化市", + "code": "222403000000" + }, + { + "area": "珲春市", + "code": "222404000000" + }, + { + "area": "龙井市", + "code": "222405000000" + }, + { + "area": "和龙市", + "code": "222406000000" + }, + { + "area": "汪清县", + "code": "222424000000" + }, + { + "area": "安图县", + "code": "222426000000" + } + ] + } + ] + }, + { + "province": "黑龙江省", + "code": "230000", + "citys": [ + { + "city": "哈尔滨市", + "code": "230100000000", + "areas": [ + { + "area": "道里区", + "code": "230102000000" + }, + { + "area": "南岗区", + "code": "230103000000" + }, + { + "area": "道外区", + "code": "230104000000" + }, + { + "area": "平房区", + "code": "230108000000" + }, + { + "area": "松北区", + "code": "230109000000" + }, + { + "area": "香坊区", + "code": "230110000000" + }, + { + "area": "呼兰区", + "code": "230111000000" + }, + { + "area": "阿城区", + "code": "230112000000" + }, + { + "area": "双城区", + "code": "230113000000" + }, + { + "area": "依兰县", + "code": "230123000000" + }, + { + "area": "方正县", + "code": "230124000000" + }, + { + "area": "宾县", + "code": "230125000000" + }, + { + "area": "巴彦县", + "code": "230126000000" + }, + { + "area": "木兰县", + "code": "230127000000" + }, + { + "area": "通河县", + "code": "230128000000" + }, + { + "area": "延寿县", + "code": "230129000000" + }, + { + "area": "尚志市", + "code": "230183000000" + }, + { + "area": "五常市", + "code": "230184000000" + } + ] + }, + { + "city": "齐齐哈尔市", + "code": "230200000000", + "areas": [ + { + "area": "龙沙区", + "code": "230202000000" + }, + { + "area": "建华区", + "code": "230203000000" + }, + { + "area": "铁锋区", + "code": "230204000000" + }, + { + "area": "昂昂溪区", + "code": "230205000000" + }, + { + "area": "富拉尔基区", + "code": "230206000000" + }, + { + "area": "碾子山区", + "code": "230207000000" + }, + { + "area": "梅里斯达斡尔族区", + "code": "230208000000" + }, + { + "area": "龙江县", + "code": "230221000000" + }, + { + "area": "依安县", + "code": "230223000000" + }, + { + "area": "泰来县", + "code": "230224000000" + }, + { + "area": "甘南县", + "code": "230225000000" + }, + { + "area": "富裕县", + "code": "230227000000" + }, + { + "area": "克山县", + "code": "230229000000" + }, + { + "area": "克东县", + "code": "230230000000" + }, + { + "area": "拜泉县", + "code": "230231000000" + }, + { + "area": "讷河市", + "code": "230281000000" + } + ] + }, + { + "city": "鸡西市", + "code": "230300000000", + "areas": [ + { + "area": "鸡冠区", + "code": "230302000000" + }, + { + "area": "恒山区", + "code": "230303000000" + }, + { + "area": "滴道区", + "code": "230304000000" + }, + { + "area": "梨树区", + "code": "230305000000" + }, + { + "area": "城子河区", + "code": "230306000000" + }, + { + "area": "麻山区", + "code": "230307000000" + }, + { + "area": "鸡东县", + "code": "230321000000" + }, + { + "area": "虎林市", + "code": "230381000000" + }, + { + "area": "密山市", + "code": "230382000000" + } + ] + }, + { + "city": "鹤岗市", + "code": "230400000000", + "areas": [ + { + "area": "向阳区", + "code": "230402000000" + }, + { + "area": "工农区", + "code": "230403000000" + }, + { + "area": "南山区", + "code": "230404000000" + }, + { + "area": "兴安区", + "code": "230405000000" + }, + { + "area": "东山区", + "code": "230406000000" + }, + { + "area": "兴山区", + "code": "230407000000" + }, + { + "area": "萝北县", + "code": "230421000000" + }, + { + "area": "绥滨县", + "code": "230422000000" + } + ] + }, + { + "city": "双鸭山市", + "code": "230500000000", + "areas": [ + { + "area": "尖山区", + "code": "230502000000" + }, + { + "area": "岭东区", + "code": "230503000000" + }, + { + "area": "四方台区", + "code": "230505000000" + }, + { + "area": "宝山区", + "code": "230506000000" + }, + { + "area": "集贤县", + "code": "230521000000" + }, + { + "area": "友谊县", + "code": "230522000000" + }, + { + "area": "宝清县", + "code": "230523000000" + }, + { + "area": "饶河县", + "code": "230524000000" + } + ] + }, + { + "city": "大庆市", + "code": "230600000000", + "areas": [ + { + "area": "萨尔图区", + "code": "230602000000" + }, + { + "area": "龙凤区", + "code": "230603000000" + }, + { + "area": "让胡路区", + "code": "230604000000" + }, + { + "area": "红岗区", + "code": "230605000000" + }, + { + "area": "大同区", + "code": "230606000000" + }, + { + "area": "肇州县", + "code": "230621000000" + }, + { + "area": "肇源县", + "code": "230622000000" + }, + { + "area": "林甸县", + "code": "230623000000" + }, + { + "area": "杜尔伯特蒙古族自治县", + "code": "230624000000" + }, + { + "area": "大庆高新技术产业开发区", + "code": "230671000000" + } + ] + }, + { + "city": "伊春市", + "code": "230700000000", + "areas": [ + { + "area": "伊美区", + "code": "230717000000" + }, + { + "area": "乌翠区", + "code": "230718000000" + }, + { + "area": "友好区", + "code": "230719000000" + }, + { + "area": "嘉荫县", + "code": "230722000000" + }, + { + "area": "汤旺县", + "code": "230723000000" + }, + { + "area": "丰林县", + "code": "230724000000" + }, + { + "area": "大箐山县", + "code": "230725000000" + }, + { + "area": "南岔县", + "code": "230726000000" + }, + { + "area": "金林区", + "code": "230751000000" + }, + { + "area": "铁力市", + "code": "230781000000" + } + ] + }, + { + "city": "佳木斯市", + "code": "230800000000", + "areas": [ + { + "area": "向阳区", + "code": "230803000000" + }, + { + "area": "前进区", + "code": "230804000000" + }, + { + "area": "东风区", + "code": "230805000000" + }, + { + "area": "郊区", + "code": "230811000000" + }, + { + "area": "桦南县", + "code": "230822000000" + }, + { + "area": "桦川县", + "code": "230826000000" + }, + { + "area": "汤原县", + "code": "230828000000" + }, + { + "area": "同江市", + "code": "230881000000" + }, + { + "area": "富锦市", + "code": "230882000000" + }, + { + "area": "抚远市", + "code": "230883000000" + } + ] + }, + { + "city": "七台河市", + "code": "230900000000", + "areas": [ + { + "area": "新兴区", + "code": "230902000000" + }, + { + "area": "桃山区", + "code": "230903000000" + }, + { + "area": "茄子河区", + "code": "230904000000" + }, + { + "area": "勃利县", + "code": "230921000000" + } + ] + }, + { + "city": "牡丹江市", + "code": "231000000000", + "areas": [ + { + "area": "东安区", + "code": "231002000000" + }, + { + "area": "阳明区", + "code": "231003000000" + }, + { + "area": "爱民区", + "code": "231004000000" + }, + { + "area": "西安区", + "code": "231005000000" + }, + { + "area": "林口县", + "code": "231025000000" + }, + { + "area": "绥芬河市", + "code": "231081000000" + }, + { + "area": "海林市", + "code": "231083000000" + }, + { + "area": "宁安市", + "code": "231084000000" + }, + { + "area": "穆棱市", + "code": "231085000000" + }, + { + "area": "东宁市", + "code": "231086000000" + } + ] + }, + { + "city": "黑河市", + "code": "231100000000", + "areas": [ + { + "area": "爱辉区", + "code": "231102000000" + }, + { + "area": "逊克县", + "code": "231123000000" + }, + { + "area": "孙吴县", + "code": "231124000000" + }, + { + "area": "北安市", + "code": "231181000000" + }, + { + "area": "五大连池市", + "code": "231182000000" + }, + { + "area": "嫩江市", + "code": "231183000000" + } + ] + }, + { + "city": "绥化市", + "code": "231200000000", + "areas": [ + { + "area": "北林区", + "code": "231202000000" + }, + { + "area": "望奎县", + "code": "231221000000" + }, + { + "area": "兰西县", + "code": "231222000000" + }, + { + "area": "青冈县", + "code": "231223000000" + }, + { + "area": "庆安县", + "code": "231224000000" + }, + { + "area": "明水县", + "code": "231225000000" + }, + { + "area": "绥棱县", + "code": "231226000000" + }, + { + "area": "安达市", + "code": "231281000000" + }, + { + "area": "肇东市", + "code": "231282000000" + }, + { + "area": "海伦市", + "code": "231283000000" + } + ] + }, + { + "city": "大兴安岭地区", + "code": "232700000000", + "areas": [ + { + "area": "漠河市", + "code": "232701000000" + }, + { + "area": "呼玛县", + "code": "232721000000" + }, + { + "area": "塔河县", + "code": "232722000000" + }, + { + "area": "加格达奇区", + "code": "232761000000" + }, + { + "area": "松岭区", + "code": "232762000000" + }, + { + "area": "新林区", + "code": "232763000000" + }, + { + "area": "呼中区", + "code": "232764000000" + } + ] + } + ] + }, + { + "province": "上海市", + "code": "310000", + "citys": [ + { + "city": "上海市", + "code": "310100000000", + "areas": [ + { + "area": "黄浦区", + "code": "310101000000" + }, + { + "area": "徐汇区", + "code": "310104000000" + }, + { + "area": "长宁区", + "code": "310105000000" + }, + { + "area": "静安区", + "code": "310106000000" + }, + { + "area": "普陀区", + "code": "310107000000" + }, + { + "area": "虹口区", + "code": "310109000000" + }, + { + "area": "杨浦区", + "code": "310110000000" + }, + { + "area": "闵行区", + "code": "310112000000" + }, + { + "area": "宝山区", + "code": "310113000000" + }, + { + "area": "嘉定区", + "code": "310114000000" + }, + { + "area": "浦东新区", + "code": "310115000000" + }, + { + "area": "金山区", + "code": "310116000000" + }, + { + "area": "松江区", + "code": "310117000000" + }, + { + "area": "青浦区", + "code": "310118000000" + }, + { + "area": "奉贤区", + "code": "310120000000" + }, + { + "area": "崇明区", + "code": "310151000000" + } + ] + } + ] + }, + { + "province": "江苏省", + "code": "320000", + "citys": [ + { + "city": "南京市", + "code": "320100000000", + "areas": [ + { + "area": "玄武区", + "code": "320102000000" + }, + { + "area": "秦淮区", + "code": "320104000000" + }, + { + "area": "建邺区", + "code": "320105000000" + }, + { + "area": "鼓楼区", + "code": "320106000000" + }, + { + "area": "浦口区", + "code": "320111000000" + }, + { + "area": "栖霞区", + "code": "320113000000" + }, + { + "area": "雨花台区", + "code": "320114000000" + }, + { + "area": "江宁区", + "code": "320115000000" + }, + { + "area": "六合区", + "code": "320116000000" + }, + { + "area": "溧水区", + "code": "320117000000" + }, + { + "area": "高淳区", + "code": "320118000000" + } + ] + }, + { + "city": "无锡市", + "code": "320200000000", + "areas": [ + { + "area": "锡山区", + "code": "320205000000" + }, + { + "area": "惠山区", + "code": "320206000000" + }, + { + "area": "滨湖区", + "code": "320211000000" + }, + { + "area": "梁溪区", + "code": "320213000000" + }, + { + "area": "新吴区", + "code": "320214000000" + }, + { + "area": "江阴市", + "code": "320281000000" + }, + { + "area": "宜兴市", + "code": "320282000000" + } + ] + }, + { + "city": "徐州市", + "code": "320300000000", + "areas": [ + { + "area": "鼓楼区", + "code": "320302000000" + }, + { + "area": "云龙区", + "code": "320303000000" + }, + { + "area": "贾汪区", + "code": "320305000000" + }, + { + "area": "泉山区", + "code": "320311000000" + }, + { + "area": "铜山区", + "code": "320312000000" + }, + { + "area": "丰县", + "code": "320321000000" + }, + { + "area": "沛县", + "code": "320322000000" + }, + { + "area": "睢宁县", + "code": "320324000000" + }, + { + "area": "徐州经济技术开发区", + "code": "320371000000" + }, + { + "area": "新沂市", + "code": "320381000000" + }, + { + "area": "邳州市", + "code": "320382000000" + } + ] + }, + { + "city": "常州市", + "code": "320400000000", + "areas": [ + { + "area": "天宁区", + "code": "320402000000" + }, + { + "area": "钟楼区", + "code": "320404000000" + }, + { + "area": "新北区", + "code": "320411000000" + }, + { + "area": "武进区", + "code": "320412000000" + }, + { + "area": "金坛区", + "code": "320413000000" + }, + { + "area": "溧阳市", + "code": "320481000000" + } + ] + }, + { + "city": "苏州市", + "code": "320500000000", + "areas": [ + { + "area": "虎丘区", + "code": "320505000000" + }, + { + "area": "吴中区", + "code": "320506000000" + }, + { + "area": "相城区", + "code": "320507000000" + }, + { + "area": "姑苏区", + "code": "320508000000" + }, + { + "area": "吴江区", + "code": "320509000000" + }, + { + "area": "苏州工业园区", + "code": "320576000000" + }, + { + "area": "常熟市", + "code": "320581000000" + }, + { + "area": "张家港市", + "code": "320582000000" + }, + { + "area": "昆山市", + "code": "320583000000" + }, + { + "area": "太仓市", + "code": "320585000000" + } + ] + }, + { + "city": "南通市", + "code": "320600000000", + "areas": [ + { + "area": "通州区", + "code": "320612000000" + }, + { + "area": "崇川区", + "code": "320613000000" + }, + { + "area": "海门区", + "code": "320614000000" + }, + { + "area": "如东县", + "code": "320623000000" + }, + { + "area": "南通经济技术开发区", + "code": "320671000000" + }, + { + "area": "启东市", + "code": "320681000000" + }, + { + "area": "如皋市", + "code": "320682000000" + }, + { + "area": "海安市", + "code": "320685000000" + } + ] + }, + { + "city": "连云港市", + "code": "320700000000", + "areas": [ + { + "area": "连云区", + "code": "320703000000" + }, + { + "area": "海州区", + "code": "320706000000" + }, + { + "area": "赣榆区", + "code": "320707000000" + }, + { + "area": "东海县", + "code": "320722000000" + }, + { + "area": "灌云县", + "code": "320723000000" + }, + { + "area": "灌南县", + "code": "320724000000" + }, + { + "area": "连云港经济技术开发区", + "code": "320771000000" + } + ] + }, + { + "city": "淮安市", + "code": "320800000000", + "areas": [ + { + "area": "淮安区", + "code": "320803000000" + }, + { + "area": "淮阴区", + "code": "320804000000" + }, + { + "area": "清江浦区", + "code": "320812000000" + }, + { + "area": "洪泽区", + "code": "320813000000" + }, + { + "area": "涟水县", + "code": "320826000000" + }, + { + "area": "盱眙县", + "code": "320830000000" + }, + { + "area": "金湖县", + "code": "320831000000" + }, + { + "area": "淮安经济技术开发区", + "code": "320871000000" + } + ] + }, + { + "city": "盐城市", + "code": "320900000000", + "areas": [ + { + "area": "亭湖区", + "code": "320902000000" + }, + { + "area": "盐都区", + "code": "320903000000" + }, + { + "area": "大丰区", + "code": "320904000000" + }, + { + "area": "响水县", + "code": "320921000000" + }, + { + "area": "滨海县", + "code": "320922000000" + }, + { + "area": "阜宁县", + "code": "320923000000" + }, + { + "area": "射阳县", + "code": "320924000000" + }, + { + "area": "建湖县", + "code": "320925000000" + }, + { + "area": "盐城经济技术开发区", + "code": "320971000000" + }, + { + "area": "东台市", + "code": "320981000000" + } + ] + }, + { + "city": "扬州市", + "code": "321000000000", + "areas": [ + { + "area": "广陵区", + "code": "321002000000" + }, + { + "area": "邗江区", + "code": "321003000000" + }, + { + "area": "江都区", + "code": "321012000000" + }, + { + "area": "宝应县", + "code": "321023000000" + }, + { + "area": "扬州经济技术开发区", + "code": "321071000000" + }, + { + "area": "仪征市", + "code": "321081000000" + }, + { + "area": "高邮市", + "code": "321084000000" + } + ] + }, + { + "city": "镇江市", + "code": "321100000000", + "areas": [ + { + "area": "京口区", + "code": "321102000000" + }, + { + "area": "润州区", + "code": "321111000000" + }, + { + "area": "丹徒区", + "code": "321112000000" + }, + { + "area": "镇江新区", + "code": "321171000000" + }, + { + "area": "丹阳市", + "code": "321181000000" + }, + { + "area": "扬中市", + "code": "321182000000" + }, + { + "area": "句容市", + "code": "321183000000" + } + ] + }, + { + "city": "泰州市", + "code": "321200000000", + "areas": [ + { + "area": "海陵区", + "code": "321202000000" + }, + { + "area": "高港区", + "code": "321203000000" + }, + { + "area": "姜堰区", + "code": "321204000000" + }, + { + "area": "兴化市", + "code": "321281000000" + }, + { + "area": "靖江市", + "code": "321282000000" + }, + { + "area": "泰兴市", + "code": "321283000000" + } + ] + }, + { + "city": "宿迁市", + "code": "321300000000", + "areas": [ + { + "area": "宿城区", + "code": "321302000000" + }, + { + "area": "宿豫区", + "code": "321311000000" + }, + { + "area": "沭阳县", + "code": "321322000000" + }, + { + "area": "泗阳县", + "code": "321323000000" + }, + { + "area": "泗洪县", + "code": "321324000000" + }, + { + "area": "宿迁经济技术开发区", + "code": "321371000000" + } + ] + } + ] + }, + { + "province": "浙江省", + "code": "330000", + "citys": [ + { + "city": "杭州市", + "code": "330100000000", + "areas": [ + { + "area": "上城区", + "code": "330102000000" + }, + { + "area": "拱墅区", + "code": "330105000000" + }, + { + "area": "西湖区", + "code": "330106000000" + }, + { + "area": "滨江区", + "code": "330108000000" + }, + { + "area": "萧山区", + "code": "330109000000" + }, + { + "area": "余杭区", + "code": "330110000000" + }, + { + "area": "富阳区", + "code": "330111000000" + }, + { + "area": "临安区", + "code": "330112000000" + }, + { + "area": "临平区", + "code": "330113000000" + }, + { + "area": "钱塘区", + "code": "330114000000" + }, + { + "area": "桐庐县", + "code": "330122000000" + }, + { + "area": "淳安县", + "code": "330127000000" + }, + { + "area": "建德市", + "code": "330182000000" + } + ] + }, + { + "city": "宁波市", + "code": "330200000000", + "areas": [ + { + "area": "海曙区", + "code": "330203000000" + }, + { + "area": "江北区", + "code": "330205000000" + }, + { + "area": "北仑区", + "code": "330206000000" + }, + { + "area": "镇海区", + "code": "330211000000" + }, + { + "area": "鄞州区", + "code": "330212000000" + }, + { + "area": "奉化区", + "code": "330213000000" + }, + { + "area": "象山县", + "code": "330225000000" + }, + { + "area": "宁海县", + "code": "330226000000" + }, + { + "area": "余姚市", + "code": "330281000000" + }, + { + "area": "慈溪市", + "code": "330282000000" + } + ] + }, + { + "city": "温州市", + "code": "330300000000", + "areas": [ + { + "area": "鹿城区", + "code": "330302000000" + }, + { + "area": "龙湾区", + "code": "330303000000" + }, + { + "area": "瓯海区", + "code": "330304000000" + }, + { + "area": "洞头区", + "code": "330305000000" + }, + { + "area": "永嘉县", + "code": "330324000000" + }, + { + "area": "平阳县", + "code": "330326000000" + }, + { + "area": "苍南县", + "code": "330327000000" + }, + { + "area": "文成县", + "code": "330328000000" + }, + { + "area": "泰顺县", + "code": "330329000000" + }, + { + "area": "瑞安市", + "code": "330381000000" + }, + { + "area": "乐清市", + "code": "330382000000" + }, + { + "area": "龙港市", + "code": "330383000000" + } + ] + }, + { + "city": "嘉兴市", + "code": "330400000000", + "areas": [ + { + "area": "南湖区", + "code": "330402000000" + }, + { + "area": "秀洲区", + "code": "330411000000" + }, + { + "area": "嘉善县", + "code": "330421000000" + }, + { + "area": "海盐县", + "code": "330424000000" + }, + { + "area": "海宁市", + "code": "330481000000" + }, + { + "area": "平湖市", + "code": "330482000000" + }, + { + "area": "桐乡市", + "code": "330483000000" + } + ] + }, + { + "city": "湖州市", + "code": "330500000000", + "areas": [ + { + "area": "吴兴区", + "code": "330502000000" + }, + { + "area": "南浔区", + "code": "330503000000" + }, + { + "area": "德清县", + "code": "330521000000" + }, + { + "area": "长兴县", + "code": "330522000000" + }, + { + "area": "安吉县", + "code": "330523000000" + } + ] + }, + { + "city": "绍兴市", + "code": "330600000000", + "areas": [ + { + "area": "越城区", + "code": "330602000000" + }, + { + "area": "柯桥区", + "code": "330603000000" + }, + { + "area": "上虞区", + "code": "330604000000" + }, + { + "area": "新昌县", + "code": "330624000000" + }, + { + "area": "诸暨市", + "code": "330681000000" + }, + { + "area": "嵊州市", + "code": "330683000000" + } + ] + }, + { + "city": "金华市", + "code": "330700000000", + "areas": [ + { + "area": "婺城区", + "code": "330702000000" + }, + { + "area": "金东区", + "code": "330703000000" + }, + { + "area": "武义县", + "code": "330723000000" + }, + { + "area": "浦江县", + "code": "330726000000" + }, + { + "area": "磐安县", + "code": "330727000000" + }, + { + "area": "兰溪市", + "code": "330781000000" + }, + { + "area": "义乌市", + "code": "330782000000" + }, + { + "area": "东阳市", + "code": "330783000000" + }, + { + "area": "永康市", + "code": "330784000000" + } + ] + }, + { + "city": "衢州市", + "code": "330800000000", + "areas": [ + { + "area": "柯城区", + "code": "330802000000" + }, + { + "area": "衢江区", + "code": "330803000000" + }, + { + "area": "常山县", + "code": "330822000000" + }, + { + "area": "开化县", + "code": "330824000000" + }, + { + "area": "龙游县", + "code": "330825000000" + }, + { + "area": "江山市", + "code": "330881000000" + } + ] + }, + { + "city": "舟山市", + "code": "330900000000", + "areas": [ + { + "area": "定海区", + "code": "330902000000" + }, + { + "area": "普陀区", + "code": "330903000000" + }, + { + "area": "岱山县", + "code": "330921000000" + }, + { + "area": "嵊泗县", + "code": "330922000000" + } + ] + }, + { + "city": "台州市", + "code": "331000000000", + "areas": [ + { + "area": "椒江区", + "code": "331002000000" + }, + { + "area": "黄岩区", + "code": "331003000000" + }, + { + "area": "路桥区", + "code": "331004000000" + }, + { + "area": "三门县", + "code": "331022000000" + }, + { + "area": "天台县", + "code": "331023000000" + }, + { + "area": "仙居县", + "code": "331024000000" + }, + { + "area": "温岭市", + "code": "331081000000" + }, + { + "area": "临海市", + "code": "331082000000" + }, + { + "area": "玉环市", + "code": "331083000000" + } + ] + }, + { + "city": "丽水市", + "code": "331100000000", + "areas": [ + { + "area": "莲都区", + "code": "331102000000" + }, + { + "area": "青田县", + "code": "331121000000" + }, + { + "area": "缙云县", + "code": "331122000000" + }, + { + "area": "遂昌县", + "code": "331123000000" + }, + { + "area": "松阳县", + "code": "331124000000" + }, + { + "area": "云和县", + "code": "331125000000" + }, + { + "area": "庆元县", + "code": "331126000000" + }, + { + "area": "景宁畲族自治县", + "code": "331127000000" + }, + { + "area": "龙泉市", + "code": "331181000000" + } + ] + } + ] + }, + { + "province": "安徽省", + "code": "340000", + "citys": [ + { + "city": "合肥市", + "code": "340100000000", + "areas": [ + { + "area": "瑶海区", + "code": "340102000000" + }, + { + "area": "庐阳区", + "code": "340103000000" + }, + { + "area": "蜀山区", + "code": "340104000000" + }, + { + "area": "包河区", + "code": "340111000000" + }, + { + "area": "长丰县", + "code": "340121000000" + }, + { + "area": "肥东县", + "code": "340122000000" + }, + { + "area": "肥西县", + "code": "340123000000" + }, + { + "area": "庐江县", + "code": "340124000000" + }, + { + "area": "合肥高新技术产业开发区", + "code": "340176000000" + }, + { + "area": "合肥经济技术开发区", + "code": "340177000000" + }, + { + "area": "合肥新站高新技术产业开发区", + "code": "340178000000" + }, + { + "area": "巢湖市", + "code": "340181000000" + } + ] + }, + { + "city": "芜湖市", + "code": "340200000000", + "areas": [ + { + "area": "镜湖区", + "code": "340202000000" + }, + { + "area": "鸠江区", + "code": "340207000000" + }, + { + "area": "弋江区", + "code": "340209000000" + }, + { + "area": "湾沚区", + "code": "340210000000" + }, + { + "area": "繁昌区", + "code": "340212000000" + }, + { + "area": "南陵县", + "code": "340223000000" + }, + { + "area": "芜湖经济技术开发区", + "code": "340271000000" + }, + { + "area": "安徽芜湖三山经济开发区", + "code": "340272000000" + }, + { + "area": "无为市", + "code": "340281000000" + } + ] + }, + { + "city": "蚌埠市", + "code": "340300000000", + "areas": [ + { + "area": "龙子湖区", + "code": "340302000000" + }, + { + "area": "蚌山区", + "code": "340303000000" + }, + { + "area": "禹会区", + "code": "340304000000" + }, + { + "area": "淮上区", + "code": "340311000000" + }, + { + "area": "怀远县", + "code": "340321000000" + }, + { + "area": "五河县", + "code": "340322000000" + }, + { + "area": "固镇县", + "code": "340323000000" + }, + { + "area": "蚌埠市高新技术开发区", + "code": "340371000000" + }, + { + "area": "蚌埠市经济开发区", + "code": "340372000000" + } + ] + }, + { + "city": "淮南市", + "code": "340400000000", + "areas": [ + { + "area": "大通区", + "code": "340402000000" + }, + { + "area": "田家庵区", + "code": "340403000000" + }, + { + "area": "谢家集区", + "code": "340404000000" + }, + { + "area": "八公山区", + "code": "340405000000" + }, + { + "area": "潘集区", + "code": "340406000000" + }, + { + "area": "凤台县", + "code": "340421000000" + }, + { + "area": "寿县", + "code": "340422000000" + } + ] + }, + { + "city": "马鞍山市", + "code": "340500000000", + "areas": [ + { + "area": "花山区", + "code": "340503000000" + }, + { + "area": "雨山区", + "code": "340504000000" + }, + { + "area": "博望区", + "code": "340506000000" + }, + { + "area": "当涂县", + "code": "340521000000" + }, + { + "area": "含山县", + "code": "340522000000" + }, + { + "area": "和县", + "code": "340523000000" + } + ] + }, + { + "city": "淮北市", + "code": "340600000000", + "areas": [ + { + "area": "杜集区", + "code": "340602000000" + }, + { + "area": "相山区", + "code": "340603000000" + }, + { + "area": "烈山区", + "code": "340604000000" + }, + { + "area": "濉溪县", + "code": "340621000000" + } + ] + }, + { + "city": "铜陵市", + "code": "340700000000", + "areas": [ + { + "area": "铜官区", + "code": "340705000000" + }, + { + "area": "义安区", + "code": "340706000000" + }, + { + "area": "郊区", + "code": "340711000000" + }, + { + "area": "枞阳县", + "code": "340722000000" + } + ] + }, + { + "city": "安庆市", + "code": "340800000000", + "areas": [ + { + "area": "迎江区", + "code": "340802000000" + }, + { + "area": "大观区", + "code": "340803000000" + }, + { + "area": "宜秀区", + "code": "340811000000" + }, + { + "area": "怀宁县", + "code": "340822000000" + }, + { + "area": "太湖县", + "code": "340825000000" + }, + { + "area": "宿松县", + "code": "340826000000" + }, + { + "area": "望江县", + "code": "340827000000" + }, + { + "area": "岳西县", + "code": "340828000000" + }, + { + "area": "安徽安庆经济开发区", + "code": "340871000000" + }, + { + "area": "桐城市", + "code": "340881000000" + }, + { + "area": "潜山市", + "code": "340882000000" + } + ] + }, + { + "city": "黄山市", + "code": "341000000000", + "areas": [ + { + "area": "屯溪区", + "code": "341002000000" + }, + { + "area": "黄山区", + "code": "341003000000" + }, + { + "area": "徽州区", + "code": "341004000000" + }, + { + "area": "歙县", + "code": "341021000000" + }, + { + "area": "休宁县", + "code": "341022000000" + }, + { + "area": "黟县", + "code": "341023000000" + }, + { + "area": "祁门县", + "code": "341024000000" + } + ] + }, + { + "city": "滁州市", + "code": "341100000000", + "areas": [ + { + "area": "琅琊区", + "code": "341102000000" + }, + { + "area": "南谯区", + "code": "341103000000" + }, + { + "area": "来安县", + "code": "341122000000" + }, + { + "area": "全椒县", + "code": "341124000000" + }, + { + "area": "定远县", + "code": "341125000000" + }, + { + "area": "凤阳县", + "code": "341126000000" + }, + { + "area": "中新苏滁高新技术产业开发区", + "code": "341171000000" + }, + { + "area": "滁州经济技术开发区", + "code": "341172000000" + }, + { + "area": "天长市", + "code": "341181000000" + }, + { + "area": "明光市", + "code": "341182000000" + } + ] + }, + { + "city": "阜阳市", + "code": "341200000000", + "areas": [ + { + "area": "颍州区", + "code": "341202000000" + }, + { + "area": "颍东区", + "code": "341203000000" + }, + { + "area": "颍泉区", + "code": "341204000000" + }, + { + "area": "临泉县", + "code": "341221000000" + }, + { + "area": "太和县", + "code": "341222000000" + }, + { + "area": "阜南县", + "code": "341225000000" + }, + { + "area": "颍上县", + "code": "341226000000" + }, + { + "area": "阜阳合肥现代产业园区", + "code": "341271000000" + }, + { + "area": "阜阳经济技术开发区", + "code": "341272000000" + }, + { + "area": "界首市", + "code": "341282000000" + } + ] + }, + { + "city": "宿州市", + "code": "341300000000", + "areas": [ + { + "area": "埇桥区", + "code": "341302000000" + }, + { + "area": "砀山县", + "code": "341321000000" + }, + { + "area": "萧县", + "code": "341322000000" + }, + { + "area": "灵璧县", + "code": "341323000000" + }, + { + "area": "泗县", + "code": "341324000000" + }, + { + "area": "宿州马鞍山现代产业园区", + "code": "341371000000" + }, + { + "area": "宿州经济技术开发区", + "code": "341372000000" + } + ] + }, + { + "city": "六安市", + "code": "341500000000", + "areas": [ + { + "area": "金安区", + "code": "341502000000" + }, + { + "area": "裕安区", + "code": "341503000000" + }, + { + "area": "叶集区", + "code": "341504000000" + }, + { + "area": "霍邱县", + "code": "341522000000" + }, + { + "area": "舒城县", + "code": "341523000000" + }, + { + "area": "金寨县", + "code": "341524000000" + }, + { + "area": "霍山县", + "code": "341525000000" + } + ] + }, + { + "city": "亳州市", + "code": "341600000000", + "areas": [ + { + "area": "谯城区", + "code": "341602000000" + }, + { + "area": "涡阳县", + "code": "341621000000" + }, + { + "area": "蒙城县", + "code": "341622000000" + }, + { + "area": "利辛县", + "code": "341623000000" + } + ] + }, + { + "city": "池州市", + "code": "341700000000", + "areas": [ + { + "area": "贵池区", + "code": "341702000000" + }, + { + "area": "东至县", + "code": "341721000000" + }, + { + "area": "石台县", + "code": "341722000000" + }, + { + "area": "青阳县", + "code": "341723000000" + } + ] + }, + { + "city": "宣城市", + "code": "341800000000", + "areas": [ + { + "area": "宣州区", + "code": "341802000000" + }, + { + "area": "郎溪县", + "code": "341821000000" + }, + { + "area": "泾县", + "code": "341823000000" + }, + { + "area": "绩溪县", + "code": "341824000000" + }, + { + "area": "旌德县", + "code": "341825000000" + }, + { + "area": "宣城市经济开发区", + "code": "341871000000" + }, + { + "area": "宁国市", + "code": "341881000000" + }, + { + "area": "广德市", + "code": "341882000000" + } + ] + } + ] + }, + { + "province": "福建省", + "code": "350000", + "citys": [ + { + "city": "福州市", + "code": "350100000000", + "areas": [ + { + "area": "鼓楼区", + "code": "350102000000" + }, + { + "area": "台江区", + "code": "350103000000" + }, + { + "area": "仓山区", + "code": "350104000000" + }, + { + "area": "马尾区", + "code": "350105000000" + }, + { + "area": "晋安区", + "code": "350111000000" + }, + { + "area": "长乐区", + "code": "350112000000" + }, + { + "area": "闽侯县", + "code": "350121000000" + }, + { + "area": "连江县", + "code": "350122000000" + }, + { + "area": "罗源县", + "code": "350123000000" + }, + { + "area": "闽清县", + "code": "350124000000" + }, + { + "area": "永泰县", + "code": "350125000000" + }, + { + "area": "平潭县", + "code": "350128000000" + }, + { + "area": "福清市", + "code": "350181000000" + } + ] + }, + { + "city": "厦门市", + "code": "350200000000", + "areas": [ + { + "area": "思明区", + "code": "350203000000" + }, + { + "area": "海沧区", + "code": "350205000000" + }, + { + "area": "湖里区", + "code": "350206000000" + }, + { + "area": "集美区", + "code": "350211000000" + }, + { + "area": "同安区", + "code": "350212000000" + }, + { + "area": "翔安区", + "code": "350213000000" + } + ] + }, + { + "city": "莆田市", + "code": "350300000000", + "areas": [ + { + "area": "城厢区", + "code": "350302000000" + }, + { + "area": "涵江区", + "code": "350303000000" + }, + { + "area": "荔城区", + "code": "350304000000" + }, + { + "area": "秀屿区", + "code": "350305000000" + }, + { + "area": "仙游县", + "code": "350322000000" + } + ] + }, + { + "city": "三明市", + "code": "350400000000", + "areas": [ + { + "area": "三元区", + "code": "350404000000" + }, + { + "area": "沙县区", + "code": "350405000000" + }, + { + "area": "明溪县", + "code": "350421000000" + }, + { + "area": "清流县", + "code": "350423000000" + }, + { + "area": "宁化县", + "code": "350424000000" + }, + { + "area": "大田县", + "code": "350425000000" + }, + { + "area": "尤溪县", + "code": "350426000000" + }, + { + "area": "将乐县", + "code": "350428000000" + }, + { + "area": "泰宁县", + "code": "350429000000" + }, + { + "area": "建宁县", + "code": "350430000000" + }, + { + "area": "永安市", + "code": "350481000000" + } + ] + }, + { + "city": "泉州市", + "code": "350500000000", + "areas": [ + { + "area": "鲤城区", + "code": "350502000000" + }, + { + "area": "丰泽区", + "code": "350503000000" + }, + { + "area": "洛江区", + "code": "350504000000" + }, + { + "area": "泉港区", + "code": "350505000000" + }, + { + "area": "惠安县", + "code": "350521000000" + }, + { + "area": "安溪县", + "code": "350524000000" + }, + { + "area": "永春县", + "code": "350525000000" + }, + { + "area": "德化县", + "code": "350526000000" + }, + { + "area": "金门县", + "code": "350527000000" + }, + { + "area": "石狮市", + "code": "350581000000" + }, + { + "area": "晋江市", + "code": "350582000000" + }, + { + "area": "南安市", + "code": "350583000000" + } + ] + }, + { + "city": "漳州市", + "code": "350600000000", + "areas": [ + { + "area": "芗城区", + "code": "350602000000" + }, + { + "area": "龙文区", + "code": "350603000000" + }, + { + "area": "龙海区", + "code": "350604000000" + }, + { + "area": "长泰区", + "code": "350605000000" + }, + { + "area": "云霄县", + "code": "350622000000" + }, + { + "area": "漳浦县", + "code": "350623000000" + }, + { + "area": "诏安县", + "code": "350624000000" + }, + { + "area": "东山县", + "code": "350626000000" + }, + { + "area": "南靖县", + "code": "350627000000" + }, + { + "area": "平和县", + "code": "350628000000" + }, + { + "area": "华安县", + "code": "350629000000" + } + ] + }, + { + "city": "南平市", + "code": "350700000000", + "areas": [ + { + "area": "延平区", + "code": "350702000000" + }, + { + "area": "建阳区", + "code": "350703000000" + }, + { + "area": "顺昌县", + "code": "350721000000" + }, + { + "area": "浦城县", + "code": "350722000000" + }, + { + "area": "光泽县", + "code": "350723000000" + }, + { + "area": "松溪县", + "code": "350724000000" + }, + { + "area": "政和县", + "code": "350725000000" + }, + { + "area": "邵武市", + "code": "350781000000" + }, + { + "area": "武夷山市", + "code": "350782000000" + }, + { + "area": "建瓯市", + "code": "350783000000" + } + ] + }, + { + "city": "龙岩市", + "code": "350800000000", + "areas": [ + { + "area": "新罗区", + "code": "350802000000" + }, + { + "area": "永定区", + "code": "350803000000" + }, + { + "area": "长汀县", + "code": "350821000000" + }, + { + "area": "上杭县", + "code": "350823000000" + }, + { + "area": "武平县", + "code": "350824000000" + }, + { + "area": "连城县", + "code": "350825000000" + }, + { + "area": "漳平市", + "code": "350881000000" + } + ] + }, + { + "city": "宁德市", + "code": "350900000000", + "areas": [ + { + "area": "蕉城区", + "code": "350902000000" + }, + { + "area": "霞浦县", + "code": "350921000000" + }, + { + "area": "古田县", + "code": "350922000000" + }, + { + "area": "屏南县", + "code": "350923000000" + }, + { + "area": "寿宁县", + "code": "350924000000" + }, + { + "area": "周宁县", + "code": "350925000000" + }, + { + "area": "柘荣县", + "code": "350926000000" + }, + { + "area": "福安市", + "code": "350981000000" + }, + { + "area": "福鼎市", + "code": "350982000000" + } + ] + } + ] + }, + { + "province": "江西省", + "code": "360000", + "citys": [ + { + "city": "南昌市", + "code": "360100000000", + "areas": [ + { + "area": "东湖区", + "code": "360102000000" + }, + { + "area": "西湖区", + "code": "360103000000" + }, + { + "area": "青云谱区", + "code": "360104000000" + }, + { + "area": "青山湖区", + "code": "360111000000" + }, + { + "area": "新建区", + "code": "360112000000" + }, + { + "area": "红谷滩区", + "code": "360113000000" + }, + { + "area": "南昌县", + "code": "360121000000" + }, + { + "area": "安义县", + "code": "360123000000" + }, + { + "area": "进贤县", + "code": "360124000000" + } + ] + }, + { + "city": "景德镇市", + "code": "360200000000", + "areas": [ + { + "area": "昌江区", + "code": "360202000000" + }, + { + "area": "珠山区", + "code": "360203000000" + }, + { + "area": "浮梁县", + "code": "360222000000" + }, + { + "area": "乐平市", + "code": "360281000000" + } + ] + }, + { + "city": "萍乡市", + "code": "360300000000", + "areas": [ + { + "area": "安源区", + "code": "360302000000" + }, + { + "area": "湘东区", + "code": "360313000000" + }, + { + "area": "莲花县", + "code": "360321000000" + }, + { + "area": "上栗县", + "code": "360322000000" + }, + { + "area": "芦溪县", + "code": "360323000000" + } + ] + }, + { + "city": "九江市", + "code": "360400000000", + "areas": [ + { + "area": "濂溪区", + "code": "360402000000" + }, + { + "area": "浔阳区", + "code": "360403000000" + }, + { + "area": "柴桑区", + "code": "360404000000" + }, + { + "area": "武宁县", + "code": "360423000000" + }, + { + "area": "修水县", + "code": "360424000000" + }, + { + "area": "永修县", + "code": "360425000000" + }, + { + "area": "德安县", + "code": "360426000000" + }, + { + "area": "都昌县", + "code": "360428000000" + }, + { + "area": "湖口县", + "code": "360429000000" + }, + { + "area": "彭泽县", + "code": "360430000000" + }, + { + "area": "瑞昌市", + "code": "360481000000" + }, + { + "area": "共青城市", + "code": "360482000000" + }, + { + "area": "庐山市", + "code": "360483000000" + } + ] + }, + { + "city": "新余市", + "code": "360500000000", + "areas": [ + { + "area": "渝水区", + "code": "360502000000" + }, + { + "area": "分宜县", + "code": "360521000000" + } + ] + }, + { + "city": "鹰潭市", + "code": "360600000000", + "areas": [ + { + "area": "月湖区", + "code": "360602000000" + }, + { + "area": "余江区", + "code": "360603000000" + }, + { + "area": "贵溪市", + "code": "360681000000" + } + ] + }, + { + "city": "赣州市", + "code": "360700000000", + "areas": [ + { + "area": "章贡区", + "code": "360702000000" + }, + { + "area": "南康区", + "code": "360703000000" + }, + { + "area": "赣县区", + "code": "360704000000" + }, + { + "area": "信丰县", + "code": "360722000000" + }, + { + "area": "大余县", + "code": "360723000000" + }, + { + "area": "上犹县", + "code": "360724000000" + }, + { + "area": "崇义县", + "code": "360725000000" + }, + { + "area": "安远县", + "code": "360726000000" + }, + { + "area": "定南县", + "code": "360728000000" + }, + { + "area": "全南县", + "code": "360729000000" + }, + { + "area": "宁都县", + "code": "360730000000" + }, + { + "area": "于都县", + "code": "360731000000" + }, + { + "area": "兴国县", + "code": "360732000000" + }, + { + "area": "会昌县", + "code": "360733000000" + }, + { + "area": "寻乌县", + "code": "360734000000" + }, + { + "area": "石城县", + "code": "360735000000" + }, + { + "area": "瑞金市", + "code": "360781000000" + }, + { + "area": "龙南市", + "code": "360783000000" + } + ] + }, + { + "city": "吉安市", + "code": "360800000000", + "areas": [ + { + "area": "吉州区", + "code": "360802000000" + }, + { + "area": "青原区", + "code": "360803000000" + }, + { + "area": "吉安县", + "code": "360821000000" + }, + { + "area": "吉水县", + "code": "360822000000" + }, + { + "area": "峡江县", + "code": "360823000000" + }, + { + "area": "新干县", + "code": "360824000000" + }, + { + "area": "永丰县", + "code": "360825000000" + }, + { + "area": "泰和县", + "code": "360826000000" + }, + { + "area": "遂川县", + "code": "360827000000" + }, + { + "area": "万安县", + "code": "360828000000" + }, + { + "area": "安福县", + "code": "360829000000" + }, + { + "area": "永新县", + "code": "360830000000" + }, + { + "area": "井冈山市", + "code": "360881000000" + } + ] + }, + { + "city": "宜春市", + "code": "360900000000", + "areas": [ + { + "area": "袁州区", + "code": "360902000000" + }, + { + "area": "奉新县", + "code": "360921000000" + }, + { + "area": "万载县", + "code": "360922000000" + }, + { + "area": "上高县", + "code": "360923000000" + }, + { + "area": "宜丰县", + "code": "360924000000" + }, + { + "area": "靖安县", + "code": "360925000000" + }, + { + "area": "铜鼓县", + "code": "360926000000" + }, + { + "area": "丰城市", + "code": "360981000000" + }, + { + "area": "樟树市", + "code": "360982000000" + }, + { + "area": "高安市", + "code": "360983000000" + } + ] + }, + { + "city": "抚州市", + "code": "361000000000", + "areas": [ + { + "area": "临川区", + "code": "361002000000" + }, + { + "area": "东乡区", + "code": "361003000000" + }, + { + "area": "南城县", + "code": "361021000000" + }, + { + "area": "黎川县", + "code": "361022000000" + }, + { + "area": "南丰县", + "code": "361023000000" + }, + { + "area": "崇仁县", + "code": "361024000000" + }, + { + "area": "乐安县", + "code": "361025000000" + }, + { + "area": "宜黄县", + "code": "361026000000" + }, + { + "area": "金溪县", + "code": "361027000000" + }, + { + "area": "资溪县", + "code": "361028000000" + }, + { + "area": "广昌县", + "code": "361030000000" + } + ] + }, + { + "city": "上饶市", + "code": "361100000000", + "areas": [ + { + "area": "信州区", + "code": "361102000000" + }, + { + "area": "广丰区", + "code": "361103000000" + }, + { + "area": "广信区", + "code": "361104000000" + }, + { + "area": "玉山县", + "code": "361123000000" + }, + { + "area": "铅山县", + "code": "361124000000" + }, + { + "area": "横峰县", + "code": "361125000000" + }, + { + "area": "弋阳县", + "code": "361126000000" + }, + { + "area": "余干县", + "code": "361127000000" + }, + { + "area": "鄱阳县", + "code": "361128000000" + }, + { + "area": "万年县", + "code": "361129000000" + }, + { + "area": "婺源县", + "code": "361130000000" + }, + { + "area": "德兴市", + "code": "361181000000" + } + ] + } + ] + }, + { + "province": "山东省", + "code": "370000", + "citys": [ + { + "city": "济南市", + "code": "370100000000", + "areas": [ + { + "area": "历下区", + "code": "370102000000" + }, + { + "area": "市中区", + "code": "370103000000" + }, + { + "area": "槐荫区", + "code": "370104000000" + }, + { + "area": "天桥区", + "code": "370105000000" + }, + { + "area": "历城区", + "code": "370112000000" + }, + { + "area": "长清区", + "code": "370113000000" + }, + { + "area": "章丘区", + "code": "370114000000" + }, + { + "area": "济阳区", + "code": "370115000000" + }, + { + "area": "莱芜区", + "code": "370116000000" + }, + { + "area": "钢城区", + "code": "370117000000" + }, + { + "area": "平阴县", + "code": "370124000000" + }, + { + "area": "商河县", + "code": "370126000000" + }, + { + "area": "济南高新技术产业开发区", + "code": "370176000000" + } + ] + }, + { + "city": "青岛市", + "code": "370200000000", + "areas": [ + { + "area": "市南区", + "code": "370202000000" + }, + { + "area": "市北区", + "code": "370203000000" + }, + { + "area": "黄岛区", + "code": "370211000000" + }, + { + "area": "崂山区", + "code": "370212000000" + }, + { + "area": "李沧区", + "code": "370213000000" + }, + { + "area": "城阳区", + "code": "370214000000" + }, + { + "area": "即墨区", + "code": "370215000000" + }, + { + "area": "胶州市", + "code": "370281000000" + }, + { + "area": "平度市", + "code": "370283000000" + }, + { + "area": "莱西市", + "code": "370285000000" + } + ] + }, + { + "city": "淄博市", + "code": "370300000000", + "areas": [ + { + "area": "淄川区", + "code": "370302000000" + }, + { + "area": "张店区", + "code": "370303000000" + }, + { + "area": "博山区", + "code": "370304000000" + }, + { + "area": "临淄区", + "code": "370305000000" + }, + { + "area": "周村区", + "code": "370306000000" + }, + { + "area": "桓台县", + "code": "370321000000" + }, + { + "area": "高青县", + "code": "370322000000" + }, + { + "area": "沂源县", + "code": "370323000000" + } + ] + }, + { + "city": "枣庄市", + "code": "370400000000", + "areas": [ + { + "area": "市中区", + "code": "370402000000" + }, + { + "area": "薛城区", + "code": "370403000000" + }, + { + "area": "峄城区", + "code": "370404000000" + }, + { + "area": "台儿庄区", + "code": "370405000000" + }, + { + "area": "山亭区", + "code": "370406000000" + }, + { + "area": "滕州市", + "code": "370481000000" + } + ] + }, + { + "city": "东营市", + "code": "370500000000", + "areas": [ + { + "area": "东营区", + "code": "370502000000" + }, + { + "area": "河口区", + "code": "370503000000" + }, + { + "area": "垦利区", + "code": "370505000000" + }, + { + "area": "利津县", + "code": "370522000000" + }, + { + "area": "广饶县", + "code": "370523000000" + }, + { + "area": "东营经济技术开发区", + "code": "370571000000" + }, + { + "area": "东营港经济开发区", + "code": "370572000000" + } + ] + }, + { + "city": "烟台市", + "code": "370600000000", + "areas": [ + { + "area": "芝罘区", + "code": "370602000000" + }, + { + "area": "福山区", + "code": "370611000000" + }, + { + "area": "牟平区", + "code": "370612000000" + }, + { + "area": "莱山区", + "code": "370613000000" + }, + { + "area": "蓬莱区", + "code": "370614000000" + }, + { + "area": "烟台高新技术产业开发区", + "code": "370671000000" + }, + { + "area": "烟台经济技术开发区", + "code": "370676000000" + }, + { + "area": "龙口市", + "code": "370681000000" + }, + { + "area": "莱阳市", + "code": "370682000000" + }, + { + "area": "莱州市", + "code": "370683000000" + }, + { + "area": "招远市", + "code": "370685000000" + }, + { + "area": "栖霞市", + "code": "370686000000" + }, + { + "area": "海阳市", + "code": "370687000000" + } + ] + }, + { + "city": "潍坊市", + "code": "370700000000", + "areas": [ + { + "area": "潍城区", + "code": "370702000000" + }, + { + "area": "寒亭区", + "code": "370703000000" + }, + { + "area": "坊子区", + "code": "370704000000" + }, + { + "area": "奎文区", + "code": "370705000000" + }, + { + "area": "临朐县", + "code": "370724000000" + }, + { + "area": "昌乐县", + "code": "370725000000" + }, + { + "area": "潍坊滨海经济技术开发区", + "code": "370772000000" + }, + { + "area": "青州市", + "code": "370781000000" + }, + { + "area": "诸城市", + "code": "370782000000" + }, + { + "area": "寿光市", + "code": "370783000000" + }, + { + "area": "安丘市", + "code": "370784000000" + }, + { + "area": "高密市", + "code": "370785000000" + }, + { + "area": "昌邑市", + "code": "370786000000" + } + ] + }, + { + "city": "济宁市", + "code": "370800000000", + "areas": [ + { + "area": "任城区", + "code": "370811000000" + }, + { + "area": "兖州区", + "code": "370812000000" + }, + { + "area": "微山县", + "code": "370826000000" + }, + { + "area": "鱼台县", + "code": "370827000000" + }, + { + "area": "金乡县", + "code": "370828000000" + }, + { + "area": "嘉祥县", + "code": "370829000000" + }, + { + "area": "汶上县", + "code": "370830000000" + }, + { + "area": "泗水县", + "code": "370831000000" + }, + { + "area": "梁山县", + "code": "370832000000" + }, + { + "area": "济宁高新技术产业开发区", + "code": "370871000000" + }, + { + "area": "曲阜市", + "code": "370881000000" + }, + { + "area": "邹城市", + "code": "370883000000" + } + ] + }, + { + "city": "泰安市", + "code": "370900000000", + "areas": [ + { + "area": "泰山区", + "code": "370902000000" + }, + { + "area": "岱岳区", + "code": "370911000000" + }, + { + "area": "宁阳县", + "code": "370921000000" + }, + { + "area": "东平县", + "code": "370923000000" + }, + { + "area": "新泰市", + "code": "370982000000" + }, + { + "area": "肥城市", + "code": "370983000000" + } + ] + }, + { + "city": "威海市", + "code": "371000000000", + "areas": [ + { + "area": "环翠区", + "code": "371002000000" + }, + { + "area": "文登区", + "code": "371003000000" + }, + { + "area": "威海火炬高技术产业开发区", + "code": "371071000000" + }, + { + "area": "威海经济技术开发区", + "code": "371072000000" + }, + { + "area": "威海临港经济技术开发区", + "code": "371073000000" + }, + { + "area": "荣成市", + "code": "371082000000" + }, + { + "area": "乳山市", + "code": "371083000000" + } + ] + }, + { + "city": "日照市", + "code": "371100000000", + "areas": [ + { + "area": "东港区", + "code": "371102000000" + }, + { + "area": "岚山区", + "code": "371103000000" + }, + { + "area": "五莲县", + "code": "371121000000" + }, + { + "area": "莒县", + "code": "371122000000" + }, + { + "area": "日照经济技术开发区", + "code": "371171000000" + } + ] + }, + { + "city": "临沂市", + "code": "371300000000", + "areas": [ + { + "area": "兰山区", + "code": "371302000000" + }, + { + "area": "罗庄区", + "code": "371311000000" + }, + { + "area": "河东区", + "code": "371312000000" + }, + { + "area": "沂南县", + "code": "371321000000" + }, + { + "area": "郯城县", + "code": "371322000000" + }, + { + "area": "沂水县", + "code": "371323000000" + }, + { + "area": "兰陵县", + "code": "371324000000" + }, + { + "area": "费县", + "code": "371325000000" + }, + { + "area": "平邑县", + "code": "371326000000" + }, + { + "area": "莒南县", + "code": "371327000000" + }, + { + "area": "蒙阴县", + "code": "371328000000" + }, + { + "area": "临沭县", + "code": "371329000000" + }, + { + "area": "临沂高新技术产业开发区", + "code": "371371000000" + } + ] + }, + { + "city": "德州市", + "code": "371400000000", + "areas": [ + { + "area": "德城区", + "code": "371402000000" + }, + { + "area": "陵城区", + "code": "371403000000" + }, + { + "area": "宁津县", + "code": "371422000000" + }, + { + "area": "庆云县", + "code": "371423000000" + }, + { + "area": "临邑县", + "code": "371424000000" + }, + { + "area": "齐河县", + "code": "371425000000" + }, + { + "area": "平原县", + "code": "371426000000" + }, + { + "area": "夏津县", + "code": "371427000000" + }, + { + "area": "武城县", + "code": "371428000000" + }, + { + "area": "德州天衢新区", + "code": "371471000000" + }, + { + "area": "乐陵市", + "code": "371481000000" + }, + { + "area": "禹城市", + "code": "371482000000" + } + ] + }, + { + "city": "聊城市", + "code": "371500000000", + "areas": [ + { + "area": "东昌府区", + "code": "371502000000" + }, + { + "area": "茌平区", + "code": "371503000000" + }, + { + "area": "阳谷县", + "code": "371521000000" + }, + { + "area": "莘县", + "code": "371522000000" + }, + { + "area": "东阿县", + "code": "371524000000" + }, + { + "area": "冠县", + "code": "371525000000" + }, + { + "area": "高唐县", + "code": "371526000000" + }, + { + "area": "临清市", + "code": "371581000000" + } + ] + }, + { + "city": "滨州市", + "code": "371600000000", + "areas": [ + { + "area": "滨城区", + "code": "371602000000" + }, + { + "area": "沾化区", + "code": "371603000000" + }, + { + "area": "惠民县", + "code": "371621000000" + }, + { + "area": "阳信县", + "code": "371622000000" + }, + { + "area": "无棣县", + "code": "371623000000" + }, + { + "area": "博兴县", + "code": "371625000000" + }, + { + "area": "邹平市", + "code": "371681000000" + } + ] + }, + { + "city": "菏泽市", + "code": "371700000000", + "areas": [ + { + "area": "牡丹区", + "code": "371702000000" + }, + { + "area": "定陶区", + "code": "371703000000" + }, + { + "area": "曹县", + "code": "371721000000" + }, + { + "area": "单县", + "code": "371722000000" + }, + { + "area": "成武县", + "code": "371723000000" + }, + { + "area": "巨野县", + "code": "371724000000" + }, + { + "area": "郓城县", + "code": "371725000000" + }, + { + "area": "鄄城县", + "code": "371726000000" + }, + { + "area": "东明县", + "code": "371728000000" + }, + { + "area": "菏泽经济技术开发区", + "code": "371771000000" + }, + { + "area": "菏泽高新技术开发区", + "code": "371772000000" + } + ] + } + ] + }, + { + "province": "河南省", + "code": "410000", + "citys": [ + { + "city": "郑州市", + "code": "410100000000", + "areas": [ + { + "area": "中原区", + "code": "410102000000" + }, + { + "area": "二七区", + "code": "410103000000" + }, + { + "area": "管城回族区", + "code": "410104000000" + }, + { + "area": "金水区", + "code": "410105000000" + }, + { + "area": "上街区", + "code": "410106000000" + }, + { + "area": "惠济区", + "code": "410108000000" + }, + { + "area": "中牟县", + "code": "410122000000" + }, + { + "area": "郑州经济技术开发区", + "code": "410171000000" + }, + { + "area": "郑州高新技术产业开发区", + "code": "410172000000" + }, + { + "area": "郑州航空港经济综合实验区", + "code": "410173000000" + }, + { + "area": "巩义市", + "code": "410181000000" + }, + { + "area": "荥阳市", + "code": "410182000000" + }, + { + "area": "新密市", + "code": "410183000000" + }, + { + "area": "新郑市", + "code": "410184000000" + }, + { + "area": "登封市", + "code": "410185000000" + } + ] + }, + { + "city": "开封市", + "code": "410200000000", + "areas": [ + { + "area": "龙亭区", + "code": "410202000000" + }, + { + "area": "顺河回族区", + "code": "410203000000" + }, + { + "area": "鼓楼区", + "code": "410204000000" + }, + { + "area": "禹王台区", + "code": "410205000000" + }, + { + "area": "祥符区", + "code": "410212000000" + }, + { + "area": "杞县", + "code": "410221000000" + }, + { + "area": "通许县", + "code": "410222000000" + }, + { + "area": "尉氏县", + "code": "410223000000" + }, + { + "area": "兰考县", + "code": "410225000000" + } + ] + }, + { + "city": "洛阳市", + "code": "410300000000", + "areas": [ + { + "area": "老城区", + "code": "410302000000" + }, + { + "area": "西工区", + "code": "410303000000" + }, + { + "area": "瀍河回族区", + "code": "410304000000" + }, + { + "area": "涧西区", + "code": "410305000000" + }, + { + "area": "偃师区", + "code": "410307000000" + }, + { + "area": "孟津区", + "code": "410308000000" + }, + { + "area": "洛龙区", + "code": "410311000000" + }, + { + "area": "新安县", + "code": "410323000000" + }, + { + "area": "栾川县", + "code": "410324000000" + }, + { + "area": "嵩县", + "code": "410325000000" + }, + { + "area": "汝阳县", + "code": "410326000000" + }, + { + "area": "宜阳县", + "code": "410327000000" + }, + { + "area": "洛宁县", + "code": "410328000000" + }, + { + "area": "伊川县", + "code": "410329000000" + }, + { + "area": "洛阳高新技术产业开发区", + "code": "410371000000" + } + ] + }, + { + "city": "平顶山市", + "code": "410400000000", + "areas": [ + { + "area": "新华区", + "code": "410402000000" + }, + { + "area": "卫东区", + "code": "410403000000" + }, + { + "area": "石龙区", + "code": "410404000000" + }, + { + "area": "湛河区", + "code": "410411000000" + }, + { + "area": "宝丰县", + "code": "410421000000" + }, + { + "area": "叶县", + "code": "410422000000" + }, + { + "area": "鲁山县", + "code": "410423000000" + }, + { + "area": "郏县", + "code": "410425000000" + }, + { + "area": "平顶山高新技术产业开发区", + "code": "410471000000" + }, + { + "area": "平顶山市城乡一体化示范区", + "code": "410472000000" + }, + { + "area": "舞钢市", + "code": "410481000000" + }, + { + "area": "汝州市", + "code": "410482000000" + } + ] + }, + { + "city": "安阳市", + "code": "410500000000", + "areas": [ + { + "area": "文峰区", + "code": "410502000000" + }, + { + "area": "北关区", + "code": "410503000000" + }, + { + "area": "殷都区", + "code": "410505000000" + }, + { + "area": "龙安区", + "code": "410506000000" + }, + { + "area": "安阳县", + "code": "410522000000" + }, + { + "area": "汤阴县", + "code": "410523000000" + }, + { + "area": "滑县", + "code": "410526000000" + }, + { + "area": "内黄县", + "code": "410527000000" + }, + { + "area": "安阳高新技术产业开发区", + "code": "410571000000" + }, + { + "area": "林州市", + "code": "410581000000" + } + ] + }, + { + "city": "鹤壁市", + "code": "410600000000", + "areas": [ + { + "area": "鹤山区", + "code": "410602000000" + }, + { + "area": "山城区", + "code": "410603000000" + }, + { + "area": "淇滨区", + "code": "410611000000" + }, + { + "area": "浚县", + "code": "410621000000" + }, + { + "area": "淇县", + "code": "410622000000" + }, + { + "area": "鹤壁经济技术开发区", + "code": "410671000000" + } + ] + }, + { + "city": "新乡市", + "code": "410700000000", + "areas": [ + { + "area": "红旗区", + "code": "410702000000" + }, + { + "area": "卫滨区", + "code": "410703000000" + }, + { + "area": "凤泉区", + "code": "410704000000" + }, + { + "area": "牧野区", + "code": "410711000000" + }, + { + "area": "新乡县", + "code": "410721000000" + }, + { + "area": "获嘉县", + "code": "410724000000" + }, + { + "area": "原阳县", + "code": "410725000000" + }, + { + "area": "延津县", + "code": "410726000000" + }, + { + "area": "封丘县", + "code": "410727000000" + }, + { + "area": "新乡高新技术产业开发区", + "code": "410771000000" + }, + { + "area": "新乡经济技术开发区", + "code": "410772000000" + }, + { + "area": "新乡市平原城乡一体化示范区", + "code": "410773000000" + }, + { + "area": "卫辉市", + "code": "410781000000" + }, + { + "area": "辉县市", + "code": "410782000000" + }, + { + "area": "长垣市", + "code": "410783000000" + } + ] + }, + { + "city": "焦作市", + "code": "410800000000", + "areas": [ + { + "area": "解放区", + "code": "410802000000" + }, + { + "area": "中站区", + "code": "410803000000" + }, + { + "area": "马村区", + "code": "410804000000" + }, + { + "area": "山阳区", + "code": "410811000000" + }, + { + "area": "修武县", + "code": "410821000000" + }, + { + "area": "博爱县", + "code": "410822000000" + }, + { + "area": "武陟县", + "code": "410823000000" + }, + { + "area": "温县", + "code": "410825000000" + }, + { + "area": "焦作城乡一体化示范区", + "code": "410871000000" + }, + { + "area": "沁阳市", + "code": "410882000000" + }, + { + "area": "孟州市", + "code": "410883000000" + } + ] + }, + { + "city": "濮阳市", + "code": "410900000000", + "areas": [ + { + "area": "华龙区", + "code": "410902000000" + }, + { + "area": "清丰县", + "code": "410922000000" + }, + { + "area": "南乐县", + "code": "410923000000" + }, + { + "area": "范县", + "code": "410926000000" + }, + { + "area": "台前县", + "code": "410927000000" + }, + { + "area": "濮阳县", + "code": "410928000000" + }, + { + "area": "河南濮阳工业园区", + "code": "410971000000" + }, + { + "area": "濮阳经济技术开发区", + "code": "410972000000" + } + ] + }, + { + "city": "许昌市", + "code": "411000000000", + "areas": [ + { + "area": "魏都区", + "code": "411002000000" + }, + { + "area": "建安区", + "code": "411003000000" + }, + { + "area": "鄢陵县", + "code": "411024000000" + }, + { + "area": "襄城县", + "code": "411025000000" + }, + { + "area": "许昌经济技术开发区", + "code": "411071000000" + }, + { + "area": "禹州市", + "code": "411081000000" + }, + { + "area": "长葛市", + "code": "411082000000" + } + ] + }, + { + "city": "漯河市", + "code": "411100000000", + "areas": [ + { + "area": "源汇区", + "code": "411102000000" + }, + { + "area": "郾城区", + "code": "411103000000" + }, + { + "area": "召陵区", + "code": "411104000000" + }, + { + "area": "舞阳县", + "code": "411121000000" + }, + { + "area": "临颍县", + "code": "411122000000" + }, + { + "area": "漯河经济技术开发区", + "code": "411171000000" + } + ] + }, + { + "city": "三门峡市", + "code": "411200000000", + "areas": [ + { + "area": "湖滨区", + "code": "411202000000" + }, + { + "area": "陕州区", + "code": "411203000000" + }, + { + "area": "渑池县", + "code": "411221000000" + }, + { + "area": "卢氏县", + "code": "411224000000" + }, + { + "area": "河南三门峡经济开发区", + "code": "411271000000" + }, + { + "area": "义马市", + "code": "411281000000" + }, + { + "area": "灵宝市", + "code": "411282000000" + } + ] + }, + { + "city": "南阳市", + "code": "411300000000", + "areas": [ + { + "area": "宛城区", + "code": "411302000000" + }, + { + "area": "卧龙区", + "code": "411303000000" + }, + { + "area": "南召县", + "code": "411321000000" + }, + { + "area": "方城县", + "code": "411322000000" + }, + { + "area": "西峡县", + "code": "411323000000" + }, + { + "area": "镇平县", + "code": "411324000000" + }, + { + "area": "内乡县", + "code": "411325000000" + }, + { + "area": "淅川县", + "code": "411326000000" + }, + { + "area": "社旗县", + "code": "411327000000" + }, + { + "area": "唐河县", + "code": "411328000000" + }, + { + "area": "新野县", + "code": "411329000000" + }, + { + "area": "桐柏县", + "code": "411330000000" + }, + { + "area": "南阳高新技术产业开发区", + "code": "411371000000" + }, + { + "area": "南阳市城乡一体化示范区", + "code": "411372000000" + }, + { + "area": "邓州市", + "code": "411381000000" + } + ] + }, + { + "city": "商丘市", + "code": "411400000000", + "areas": [ + { + "area": "梁园区", + "code": "411402000000" + }, + { + "area": "睢阳区", + "code": "411403000000" + }, + { + "area": "民权县", + "code": "411421000000" + }, + { + "area": "睢县", + "code": "411422000000" + }, + { + "area": "宁陵县", + "code": "411423000000" + }, + { + "area": "柘城县", + "code": "411424000000" + }, + { + "area": "虞城县", + "code": "411425000000" + }, + { + "area": "夏邑县", + "code": "411426000000" + }, + { + "area": "豫东综合物流产业聚集区", + "code": "411471000000" + }, + { + "area": "河南商丘经济开发区", + "code": "411472000000" + }, + { + "area": "永城市", + "code": "411481000000" + } + ] + }, + { + "city": "信阳市", + "code": "411500000000", + "areas": [ + { + "area": "浉河区", + "code": "411502000000" + }, + { + "area": "平桥区", + "code": "411503000000" + }, + { + "area": "罗山县", + "code": "411521000000" + }, + { + "area": "光山县", + "code": "411522000000" + }, + { + "area": "新县", + "code": "411523000000" + }, + { + "area": "商城县", + "code": "411524000000" + }, + { + "area": "固始县", + "code": "411525000000" + }, + { + "area": "潢川县", + "code": "411526000000" + }, + { + "area": "淮滨县", + "code": "411527000000" + }, + { + "area": "息县", + "code": "411528000000" + }, + { + "area": "信阳高新技术产业开发区", + "code": "411571000000" + } + ] + }, + { + "city": "周口市", + "code": "411600000000", + "areas": [ + { + "area": "川汇区", + "code": "411602000000" + }, + { + "area": "淮阳区", + "code": "411603000000" + }, + { + "area": "扶沟县", + "code": "411621000000" + }, + { + "area": "西华县", + "code": "411622000000" + }, + { + "area": "商水县", + "code": "411623000000" + }, + { + "area": "沈丘县", + "code": "411624000000" + }, + { + "area": "郸城县", + "code": "411625000000" + }, + { + "area": "太康县", + "code": "411627000000" + }, + { + "area": "鹿邑县", + "code": "411628000000" + }, + { + "area": "周口临港开发区", + "code": "411671000000" + }, + { + "area": "项城市", + "code": "411681000000" + } + ] + }, + { + "city": "驻马店市", + "code": "411700000000", + "areas": [ + { + "area": "驿城区", + "code": "411702000000" + }, + { + "area": "西平县", + "code": "411721000000" + }, + { + "area": "上蔡县", + "code": "411722000000" + }, + { + "area": "平舆县", + "code": "411723000000" + }, + { + "area": "正阳县", + "code": "411724000000" + }, + { + "area": "确山县", + "code": "411725000000" + }, + { + "area": "泌阳县", + "code": "411726000000" + }, + { + "area": "汝南县", + "code": "411727000000" + }, + { + "area": "遂平县", + "code": "411728000000" + }, + { + "area": "新蔡县", + "code": "411729000000" + }, + { + "area": "河南驻马店经济开发区", + "code": "411771000000" + } + ] + }, + { + "city": "省直辖县级行政区划", + "code": "419000000000", + "areas": [ + { + "area": "济源市", + "code": "419001000000" + } + ] + } + ] + }, + { + "province": "湖北省", + "code": "420000", + "citys": [ + { + "city": "武汉市", + "code": "420100000000", + "areas": [ + { + "area": "江岸区", + "code": "420102000000" + }, + { + "area": "江汉区", + "code": "420103000000" + }, + { + "area": "硚口区", + "code": "420104000000" + }, + { + "area": "汉阳区", + "code": "420105000000" + }, + { + "area": "武昌区", + "code": "420106000000" + }, + { + "area": "青山区", + "code": "420107000000" + }, + { + "area": "洪山区", + "code": "420111000000" + }, + { + "area": "东西湖区", + "code": "420112000000" + }, + { + "area": "汉南区", + "code": "420113000000" + }, + { + "area": "蔡甸区", + "code": "420114000000" + }, + { + "area": "江夏区", + "code": "420115000000" + }, + { + "area": "黄陂区", + "code": "420116000000" + }, + { + "area": "新洲区", + "code": "420117000000" + } + ] + }, + { + "city": "黄石市", + "code": "420200000000", + "areas": [ + { + "area": "黄石港区", + "code": "420202000000" + }, + { + "area": "西塞山区", + "code": "420203000000" + }, + { + "area": "下陆区", + "code": "420204000000" + }, + { + "area": "铁山区", + "code": "420205000000" + }, + { + "area": "阳新县", + "code": "420222000000" + }, + { + "area": "大冶市", + "code": "420281000000" + } + ] + }, + { + "city": "十堰市", + "code": "420300000000", + "areas": [ + { + "area": "茅箭区", + "code": "420302000000" + }, + { + "area": "张湾区", + "code": "420303000000" + }, + { + "area": "郧阳区", + "code": "420304000000" + }, + { + "area": "郧西县", + "code": "420322000000" + }, + { + "area": "竹山县", + "code": "420323000000" + }, + { + "area": "竹溪县", + "code": "420324000000" + }, + { + "area": "房县", + "code": "420325000000" + }, + { + "area": "丹江口市", + "code": "420381000000" + } + ] + }, + { + "city": "宜昌市", + "code": "420500000000", + "areas": [ + { + "area": "西陵区", + "code": "420502000000" + }, + { + "area": "伍家岗区", + "code": "420503000000" + }, + { + "area": "点军区", + "code": "420504000000" + }, + { + "area": "猇亭区", + "code": "420505000000" + }, + { + "area": "夷陵区", + "code": "420506000000" + }, + { + "area": "远安县", + "code": "420525000000" + }, + { + "area": "兴山县", + "code": "420526000000" + }, + { + "area": "秭归县", + "code": "420527000000" + }, + { + "area": "长阳土家族自治县", + "code": "420528000000" + }, + { + "area": "五峰土家族自治县", + "code": "420529000000" + }, + { + "area": "宜都市", + "code": "420581000000" + }, + { + "area": "当阳市", + "code": "420582000000" + }, + { + "area": "枝江市", + "code": "420583000000" + } + ] + }, + { + "city": "襄阳市", + "code": "420600000000", + "areas": [ + { + "area": "襄城区", + "code": "420602000000" + }, + { + "area": "樊城区", + "code": "420606000000" + }, + { + "area": "襄州区", + "code": "420607000000" + }, + { + "area": "南漳县", + "code": "420624000000" + }, + { + "area": "谷城县", + "code": "420625000000" + }, + { + "area": "保康县", + "code": "420626000000" + }, + { + "area": "老河口市", + "code": "420682000000" + }, + { + "area": "枣阳市", + "code": "420683000000" + }, + { + "area": "宜城市", + "code": "420684000000" + } + ] + }, + { + "city": "鄂州市", + "code": "420700000000", + "areas": [ + { + "area": "梁子湖区", + "code": "420702000000" + }, + { + "area": "华容区", + "code": "420703000000" + }, + { + "area": "鄂城区", + "code": "420704000000" + } + ] + }, + { + "city": "荆门市", + "code": "420800000000", + "areas": [ + { + "area": "东宝区", + "code": "420802000000" + }, + { + "area": "掇刀区", + "code": "420804000000" + }, + { + "area": "沙洋县", + "code": "420822000000" + }, + { + "area": "钟祥市", + "code": "420881000000" + }, + { + "area": "京山市", + "code": "420882000000" + } + ] + }, + { + "city": "孝感市", + "code": "420900000000", + "areas": [ + { + "area": "孝南区", + "code": "420902000000" + }, + { + "area": "孝昌县", + "code": "420921000000" + }, + { + "area": "大悟县", + "code": "420922000000" + }, + { + "area": "云梦县", + "code": "420923000000" + }, + { + "area": "应城市", + "code": "420981000000" + }, + { + "area": "安陆市", + "code": "420982000000" + }, + { + "area": "汉川市", + "code": "420984000000" + } + ] + }, + { + "city": "荆州市", + "code": "421000000000", + "areas": [ + { + "area": "沙市区", + "code": "421002000000" + }, + { + "area": "荆州区", + "code": "421003000000" + }, + { + "area": "公安县", + "code": "421022000000" + }, + { + "area": "江陵县", + "code": "421024000000" + }, + { + "area": "荆州经济技术开发区", + "code": "421071000000" + }, + { + "area": "石首市", + "code": "421081000000" + }, + { + "area": "洪湖市", + "code": "421083000000" + }, + { + "area": "松滋市", + "code": "421087000000" + }, + { + "area": "监利市", + "code": "421088000000" + } + ] + }, + { + "city": "黄冈市", + "code": "421100000000", + "areas": [ + { + "area": "黄州区", + "code": "421102000000" + }, + { + "area": "团风县", + "code": "421121000000" + }, + { + "area": "红安县", + "code": "421122000000" + }, + { + "area": "罗田县", + "code": "421123000000" + }, + { + "area": "英山县", + "code": "421124000000" + }, + { + "area": "浠水县", + "code": "421125000000" + }, + { + "area": "蕲春县", + "code": "421126000000" + }, + { + "area": "黄梅县", + "code": "421127000000" + }, + { + "area": "龙感湖管理区", + "code": "421171000000" + }, + { + "area": "麻城市", + "code": "421181000000" + }, + { + "area": "武穴市", + "code": "421182000000" + } + ] + }, + { + "city": "咸宁市", + "code": "421200000000", + "areas": [ + { + "area": "咸安区", + "code": "421202000000" + }, + { + "area": "嘉鱼县", + "code": "421221000000" + }, + { + "area": "通城县", + "code": "421222000000" + }, + { + "area": "崇阳县", + "code": "421223000000" + }, + { + "area": "通山县", + "code": "421224000000" + }, + { + "area": "赤壁市", + "code": "421281000000" + } + ] + }, + { + "city": "随州市", + "code": "421300000000", + "areas": [ + { + "area": "曾都区", + "code": "421303000000" + }, + { + "area": "随县", + "code": "421321000000" + }, + { + "area": "广水市", + "code": "421381000000" + } + ] + }, + { + "city": "恩施土家族苗族自治州", + "code": "422800000000", + "areas": [ + { + "area": "恩施市", + "code": "422801000000" + }, + { + "area": "利川市", + "code": "422802000000" + }, + { + "area": "建始县", + "code": "422822000000" + }, + { + "area": "巴东县", + "code": "422823000000" + }, + { + "area": "宣恩县", + "code": "422825000000" + }, + { + "area": "咸丰县", + "code": "422826000000" + }, + { + "area": "来凤县", + "code": "422827000000" + }, + { + "area": "鹤峰县", + "code": "422828000000" + } + ] + }, + { + "city": "省直辖县级行政区划", + "code": "429000000000", + "areas": [ + { + "area": "仙桃市", + "code": "429004000000" + }, + { + "area": "潜江市", + "code": "429005000000" + }, + { + "area": "天门市", + "code": "429006000000" + }, + { + "area": "神农架林区", + "code": "429021000000" + } + ] + } + ] + }, + { + "province": "湖南省", + "code": "430000", + "citys": [ + { + "city": "长沙市", + "code": "430100000000", + "areas": [ + { + "area": "芙蓉区", + "code": "430102000000" + }, + { + "area": "天心区", + "code": "430103000000" + }, + { + "area": "岳麓区", + "code": "430104000000" + }, + { + "area": "开福区", + "code": "430105000000" + }, + { + "area": "雨花区", + "code": "430111000000" + }, + { + "area": "望城区", + "code": "430112000000" + }, + { + "area": "长沙县", + "code": "430121000000" + }, + { + "area": "浏阳市", + "code": "430181000000" + }, + { + "area": "宁乡市", + "code": "430182000000" + } + ] + }, + { + "city": "株洲市", + "code": "430200000000", + "areas": [ + { + "area": "荷塘区", + "code": "430202000000" + }, + { + "area": "芦淞区", + "code": "430203000000" + }, + { + "area": "石峰区", + "code": "430204000000" + }, + { + "area": "天元区", + "code": "430211000000" + }, + { + "area": "渌口区", + "code": "430212000000" + }, + { + "area": "攸县", + "code": "430223000000" + }, + { + "area": "茶陵县", + "code": "430224000000" + }, + { + "area": "炎陵县", + "code": "430225000000" + }, + { + "area": "醴陵市", + "code": "430281000000" + } + ] + }, + { + "city": "湘潭市", + "code": "430300000000", + "areas": [ + { + "area": "雨湖区", + "code": "430302000000" + }, + { + "area": "岳塘区", + "code": "430304000000" + }, + { + "area": "湘潭县", + "code": "430321000000" + }, + { + "area": "湖南湘潭高新技术产业园区", + "code": "430371000000" + }, + { + "area": "湘潭昭山示范区", + "code": "430372000000" + }, + { + "area": "湘潭九华示范区", + "code": "430373000000" + }, + { + "area": "湘乡市", + "code": "430381000000" + }, + { + "area": "韶山市", + "code": "430382000000" + } + ] + }, + { + "city": "衡阳市", + "code": "430400000000", + "areas": [ + { + "area": "珠晖区", + "code": "430405000000" + }, + { + "area": "雁峰区", + "code": "430406000000" + }, + { + "area": "石鼓区", + "code": "430407000000" + }, + { + "area": "蒸湘区", + "code": "430408000000" + }, + { + "area": "南岳区", + "code": "430412000000" + }, + { + "area": "衡阳县", + "code": "430421000000" + }, + { + "area": "衡南县", + "code": "430422000000" + }, + { + "area": "衡山县", + "code": "430423000000" + }, + { + "area": "衡东县", + "code": "430424000000" + }, + { + "area": "祁东县", + "code": "430426000000" + }, + { + "area": "湖南衡阳松木经济开发区", + "code": "430473000000" + }, + { + "area": "湖南衡阳高新技术产业园区", + "code": "430476000000" + }, + { + "area": "耒阳市", + "code": "430481000000" + }, + { + "area": "常宁市", + "code": "430482000000" + } + ] + }, + { + "city": "邵阳市", + "code": "430500000000", + "areas": [ + { + "area": "双清区", + "code": "430502000000" + }, + { + "area": "大祥区", + "code": "430503000000" + }, + { + "area": "北塔区", + "code": "430511000000" + }, + { + "area": "新邵县", + "code": "430522000000" + }, + { + "area": "邵阳县", + "code": "430523000000" + }, + { + "area": "隆回县", + "code": "430524000000" + }, + { + "area": "洞口县", + "code": "430525000000" + }, + { + "area": "绥宁县", + "code": "430527000000" + }, + { + "area": "新宁县", + "code": "430528000000" + }, + { + "area": "城步苗族自治县", + "code": "430529000000" + }, + { + "area": "武冈市", + "code": "430581000000" + }, + { + "area": "邵东市", + "code": "430582000000" + } + ] + }, + { + "city": "岳阳市", + "code": "430600000000", + "areas": [ + { + "area": "岳阳楼区", + "code": "430602000000" + }, + { + "area": "云溪区", + "code": "430603000000" + }, + { + "area": "君山区", + "code": "430611000000" + }, + { + "area": "岳阳县", + "code": "430621000000" + }, + { + "area": "华容县", + "code": "430623000000" + }, + { + "area": "湘阴县", + "code": "430624000000" + }, + { + "area": "平江县", + "code": "430626000000" + }, + { + "area": "岳阳市屈原管理区", + "code": "430671000000" + }, + { + "area": "汨罗市", + "code": "430681000000" + }, + { + "area": "临湘市", + "code": "430682000000" + } + ] + }, + { + "city": "常德市", + "code": "430700000000", + "areas": [ + { + "area": "武陵区", + "code": "430702000000" + }, + { + "area": "鼎城区", + "code": "430703000000" + }, + { + "area": "安乡县", + "code": "430721000000" + }, + { + "area": "汉寿县", + "code": "430722000000" + }, + { + "area": "澧县", + "code": "430723000000" + }, + { + "area": "临澧县", + "code": "430724000000" + }, + { + "area": "桃源县", + "code": "430725000000" + }, + { + "area": "石门县", + "code": "430726000000" + }, + { + "area": "常德市西洞庭管理区", + "code": "430771000000" + }, + { + "area": "津市市", + "code": "430781000000" + } + ] + }, + { + "city": "张家界市", + "code": "430800000000", + "areas": [ + { + "area": "永定区", + "code": "430802000000" + }, + { + "area": "武陵源区", + "code": "430811000000" + }, + { + "area": "慈利县", + "code": "430821000000" + }, + { + "area": "桑植县", + "code": "430822000000" + } + ] + }, + { + "city": "益阳市", + "code": "430900000000", + "areas": [ + { + "area": "资阳区", + "code": "430902000000" + }, + { + "area": "赫山区", + "code": "430903000000" + }, + { + "area": "南县", + "code": "430921000000" + }, + { + "area": "桃江县", + "code": "430922000000" + }, + { + "area": "安化县", + "code": "430923000000" + }, + { + "area": "益阳市大通湖管理区", + "code": "430971000000" + }, + { + "area": "湖南益阳高新技术产业园区", + "code": "430972000000" + }, + { + "area": "沅江市", + "code": "430981000000" + } + ] + }, + { + "city": "郴州市", + "code": "431000000000", + "areas": [ + { + "area": "北湖区", + "code": "431002000000" + }, + { + "area": "苏仙区", + "code": "431003000000" + }, + { + "area": "桂阳县", + "code": "431021000000" + }, + { + "area": "宜章县", + "code": "431022000000" + }, + { + "area": "永兴县", + "code": "431023000000" + }, + { + "area": "嘉禾县", + "code": "431024000000" + }, + { + "area": "临武县", + "code": "431025000000" + }, + { + "area": "汝城县", + "code": "431026000000" + }, + { + "area": "桂东县", + "code": "431027000000" + }, + { + "area": "安仁县", + "code": "431028000000" + }, + { + "area": "资兴市", + "code": "431081000000" + } + ] + }, + { + "city": "永州市", + "code": "431100000000", + "areas": [ + { + "area": "零陵区", + "code": "431102000000" + }, + { + "area": "冷水滩区", + "code": "431103000000" + }, + { + "area": "东安县", + "code": "431122000000" + }, + { + "area": "双牌县", + "code": "431123000000" + }, + { + "area": "道县", + "code": "431124000000" + }, + { + "area": "江永县", + "code": "431125000000" + }, + { + "area": "宁远县", + "code": "431126000000" + }, + { + "area": "蓝山县", + "code": "431127000000" + }, + { + "area": "新田县", + "code": "431128000000" + }, + { + "area": "江华瑶族自治县", + "code": "431129000000" + }, + { + "area": "永州经济技术开发区", + "code": "431171000000" + }, + { + "area": "永州市回龙圩管理区", + "code": "431173000000" + }, + { + "area": "祁阳市", + "code": "431181000000" + } + ] + }, + { + "city": "怀化市", + "code": "431200000000", + "areas": [ + { + "area": "鹤城区", + "code": "431202000000" + }, + { + "area": "中方县", + "code": "431221000000" + }, + { + "area": "沅陵县", + "code": "431222000000" + }, + { + "area": "辰溪县", + "code": "431223000000" + }, + { + "area": "溆浦县", + "code": "431224000000" + }, + { + "area": "会同县", + "code": "431225000000" + }, + { + "area": "麻阳苗族自治县", + "code": "431226000000" + }, + { + "area": "新晃侗族自治县", + "code": "431227000000" + }, + { + "area": "芷江侗族自治县", + "code": "431228000000" + }, + { + "area": "靖州苗族侗族自治县", + "code": "431229000000" + }, + { + "area": "通道侗族自治县", + "code": "431230000000" + }, + { + "area": "怀化市洪江管理区", + "code": "431271000000" + }, + { + "area": "洪江市", + "code": "431281000000" + } + ] + }, + { + "city": "娄底市", + "code": "431300000000", + "areas": [ + { + "area": "娄星区", + "code": "431302000000" + }, + { + "area": "双峰县", + "code": "431321000000" + }, + { + "area": "新化县", + "code": "431322000000" + }, + { + "area": "冷水江市", + "code": "431381000000" + }, + { + "area": "涟源市", + "code": "431382000000" + } + ] + }, + { + "city": "湘西土家族苗族自治州", + "code": "433100000000", + "areas": [ + { + "area": "吉首市", + "code": "433101000000" + }, + { + "area": "泸溪县", + "code": "433122000000" + }, + { + "area": "凤凰县", + "code": "433123000000" + }, + { + "area": "花垣县", + "code": "433124000000" + }, + { + "area": "保靖县", + "code": "433125000000" + }, + { + "area": "古丈县", + "code": "433126000000" + }, + { + "area": "永顺县", + "code": "433127000000" + }, + { + "area": "龙山县", + "code": "433130000000" + } + ] + } + ] + }, + { + "province": "广东省", + "code": "440000", + "citys": [ + { + "city": "广州市", + "code": "440100000000", + "areas": [ + { + "area": "荔湾区", + "code": "440103000000" + }, + { + "area": "越秀区", + "code": "440104000000" + }, + { + "area": "海珠区", + "code": "440105000000" + }, + { + "area": "天河区", + "code": "440106000000" + }, + { + "area": "白云区", + "code": "440111000000" + }, + { + "area": "黄埔区", + "code": "440112000000" + }, + { + "area": "番禺区", + "code": "440113000000" + }, + { + "area": "花都区", + "code": "440114000000" + }, + { + "area": "南沙区", + "code": "440115000000" + }, + { + "area": "从化区", + "code": "440117000000" + }, + { + "area": "增城区", + "code": "440118000000" + } + ] + }, + { + "city": "韶关市", + "code": "440200000000", + "areas": [ + { + "area": "武江区", + "code": "440203000000" + }, + { + "area": "浈江区", + "code": "440204000000" + }, + { + "area": "曲江区", + "code": "440205000000" + }, + { + "area": "始兴县", + "code": "440222000000" + }, + { + "area": "仁化县", + "code": "440224000000" + }, + { + "area": "翁源县", + "code": "440229000000" + }, + { + "area": "乳源瑶族自治县", + "code": "440232000000" + }, + { + "area": "新丰县", + "code": "440233000000" + }, + { + "area": "乐昌市", + "code": "440281000000" + }, + { + "area": "南雄市", + "code": "440282000000" + } + ] + }, + { + "city": "深圳市", + "code": "440300000000", + "areas": [ + { + "area": "罗湖区", + "code": "440303000000" + }, + { + "area": "福田区", + "code": "440304000000" + }, + { + "area": "南山区", + "code": "440305000000" + }, + { + "area": "宝安区", + "code": "440306000000" + }, + { + "area": "龙岗区", + "code": "440307000000" + }, + { + "area": "盐田区", + "code": "440308000000" + }, + { + "area": "龙华区", + "code": "440309000000" + }, + { + "area": "坪山区", + "code": "440310000000" + }, + { + "area": "光明区", + "code": "440311000000" + } + ] + }, + { + "city": "珠海市", + "code": "440400000000", + "areas": [ + { + "area": "香洲区", + "code": "440402000000" + }, + { + "area": "斗门区", + "code": "440403000000" + }, + { + "area": "金湾区", + "code": "440404000000" + } + ] + }, + { + "city": "汕头市", + "code": "440500000000", + "areas": [ + { + "area": "龙湖区", + "code": "440507000000" + }, + { + "area": "金平区", + "code": "440511000000" + }, + { + "area": "濠江区", + "code": "440512000000" + }, + { + "area": "潮阳区", + "code": "440513000000" + }, + { + "area": "潮南区", + "code": "440514000000" + }, + { + "area": "澄海区", + "code": "440515000000" + }, + { + "area": "南澳县", + "code": "440523000000" + } + ] + }, + { + "city": "佛山市", + "code": "440600000000", + "areas": [ + { + "area": "禅城区", + "code": "440604000000" + }, + { + "area": "南海区", + "code": "440605000000" + }, + { + "area": "顺德区", + "code": "440606000000" + }, + { + "area": "三水区", + "code": "440607000000" + }, + { + "area": "高明区", + "code": "440608000000" + } + ] + }, + { + "city": "江门市", + "code": "440700000000", + "areas": [ + { + "area": "蓬江区", + "code": "440703000000" + }, + { + "area": "江海区", + "code": "440704000000" + }, + { + "area": "新会区", + "code": "440705000000" + }, + { + "area": "台山市", + "code": "440781000000" + }, + { + "area": "开平市", + "code": "440783000000" + }, + { + "area": "鹤山市", + "code": "440784000000" + }, + { + "area": "恩平市", + "code": "440785000000" + } + ] + }, + { + "city": "湛江市", + "code": "440800000000", + "areas": [ + { + "area": "赤坎区", + "code": "440802000000" + }, + { + "area": "霞山区", + "code": "440803000000" + }, + { + "area": "坡头区", + "code": "440804000000" + }, + { + "area": "麻章区", + "code": "440811000000" + }, + { + "area": "遂溪县", + "code": "440823000000" + }, + { + "area": "徐闻县", + "code": "440825000000" + }, + { + "area": "廉江市", + "code": "440881000000" + }, + { + "area": "雷州市", + "code": "440882000000" + }, + { + "area": "吴川市", + "code": "440883000000" + } + ] + }, + { + "city": "茂名市", + "code": "440900000000", + "areas": [ + { + "area": "茂南区", + "code": "440902000000" + }, + { + "area": "电白区", + "code": "440904000000" + }, + { + "area": "高州市", + "code": "440981000000" + }, + { + "area": "化州市", + "code": "440982000000" + }, + { + "area": "信宜市", + "code": "440983000000" + } + ] + }, + { + "city": "肇庆市", + "code": "441200000000", + "areas": [ + { + "area": "端州区", + "code": "441202000000" + }, + { + "area": "鼎湖区", + "code": "441203000000" + }, + { + "area": "高要区", + "code": "441204000000" + }, + { + "area": "广宁县", + "code": "441223000000" + }, + { + "area": "怀集县", + "code": "441224000000" + }, + { + "area": "封开县", + "code": "441225000000" + }, + { + "area": "德庆县", + "code": "441226000000" + }, + { + "area": "四会市", + "code": "441284000000" + } + ] + }, + { + "city": "惠州市", + "code": "441300000000", + "areas": [ + { + "area": "惠城区", + "code": "441302000000" + }, + { + "area": "惠阳区", + "code": "441303000000" + }, + { + "area": "博罗县", + "code": "441322000000" + }, + { + "area": "惠东县", + "code": "441323000000" + }, + { + "area": "龙门县", + "code": "441324000000" + } + ] + }, + { + "city": "梅州市", + "code": "441400000000", + "areas": [ + { + "area": "梅江区", + "code": "441402000000" + }, + { + "area": "梅县区", + "code": "441403000000" + }, + { + "area": "大埔县", + "code": "441422000000" + }, + { + "area": "丰顺县", + "code": "441423000000" + }, + { + "area": "五华县", + "code": "441424000000" + }, + { + "area": "平远县", + "code": "441426000000" + }, + { + "area": "蕉岭县", + "code": "441427000000" + }, + { + "area": "兴宁市", + "code": "441481000000" + } + ] + }, + { + "city": "汕尾市", + "code": "441500000000", + "areas": [ + { + "area": "城区", + "code": "441502000000" + }, + { + "area": "海丰县", + "code": "441521000000" + }, + { + "area": "陆河县", + "code": "441523000000" + }, + { + "area": "陆丰市", + "code": "441581000000" + } + ] + }, + { + "city": "河源市", + "code": "441600000000", + "areas": [ + { + "area": "源城区", + "code": "441602000000" + }, + { + "area": "紫金县", + "code": "441621000000" + }, + { + "area": "龙川县", + "code": "441622000000" + }, + { + "area": "连平县", + "code": "441623000000" + }, + { + "area": "和平县", + "code": "441624000000" + }, + { + "area": "东源县", + "code": "441625000000" + } + ] + }, + { + "city": "阳江市", + "code": "441700000000", + "areas": [ + { + "area": "江城区", + "code": "441702000000" + }, + { + "area": "阳东区", + "code": "441704000000" + }, + { + "area": "阳西县", + "code": "441721000000" + }, + { + "area": "阳春市", + "code": "441781000000" + } + ] + }, + { + "city": "清远市", + "code": "441800000000", + "areas": [ + { + "area": "清城区", + "code": "441802000000" + }, + { + "area": "清新区", + "code": "441803000000" + }, + { + "area": "佛冈县", + "code": "441821000000" + }, + { + "area": "阳山县", + "code": "441823000000" + }, + { + "area": "连山壮族瑶族自治县", + "code": "441825000000" + }, + { + "area": "连南瑶族自治县", + "code": "441826000000" + }, + { + "area": "英德市", + "code": "441881000000" + }, + { + "area": "连州市", + "code": "441882000000" + } + ] + }, + { + "city": "东莞市", + "code": "441900000000", + "areas": [ + { + "area": "东城街道", + "code": "441900003000" + }, + { + "area": "南城街道", + "code": "441900004000" + }, + { + "area": "万江街道", + "code": "441900005000" + }, + { + "area": "莞城街道", + "code": "441900006000" + }, + { + "area": "石碣镇", + "code": "441900101000" + }, + { + "area": "石龙镇", + "code": "441900102000" + }, + { + "area": "茶山镇", + "code": "441900103000" + }, + { + "area": "石排镇", + "code": "441900104000" + }, + { + "area": "企石镇", + "code": "441900105000" + }, + { + "area": "横沥镇", + "code": "441900106000" + }, + { + "area": "桥头镇", + "code": "441900107000" + }, + { + "area": "谢岗镇", + "code": "441900108000" + }, + { + "area": "东坑镇", + "code": "441900109000" + }, + { + "area": "常平镇", + "code": "441900110000" + }, + { + "area": "寮步镇", + "code": "441900111000" + }, + { + "area": "樟木头镇", + "code": "441900112000" + }, + { + "area": "大朗镇", + "code": "441900113000" + }, + { + "area": "黄江镇", + "code": "441900114000" + }, + { + "area": "清溪镇", + "code": "441900115000" + }, + { + "area": "塘厦镇", + "code": "441900116000" + }, + { + "area": "凤岗镇", + "code": "441900117000" + }, + { + "area": "大岭山镇", + "code": "441900118000" + }, + { + "area": "长安镇", + "code": "441900119000" + }, + { + "area": "虎门镇", + "code": "441900121000" + }, + { + "area": "厚街镇", + "code": "441900122000" + }, + { + "area": "沙田镇", + "code": "441900123000" + }, + { + "area": "道滘镇", + "code": "441900124000" + }, + { + "area": "洪梅镇", + "code": "441900125000" + }, + { + "area": "麻涌镇", + "code": "441900126000" + }, + { + "area": "望牛墩镇", + "code": "441900127000" + }, + { + "area": "中堂镇", + "code": "441900128000" + }, + { + "area": "高埗镇", + "code": "441900129000" + }, + { + "area": "松山湖", + "code": "441900401000" + }, + { + "area": "东莞港", + "code": "441900402000" + }, + { + "area": "东莞生态园", + "code": "441900403000" + }, + { + "area": "东莞滨海湾新区", + "code": "441900404000" + } + ] + }, + { + "city": "中山市", + "code": "442000000000", + "areas": [ + { + "area": "石岐街道", + "code": "442000001000" + }, + { + "area": "东区街道", + "code": "442000002000" + }, + { + "area": "中山港街道", + "code": "442000003000" + }, + { + "area": "西区街道", + "code": "442000004000" + }, + { + "area": "南区街道", + "code": "442000005000" + }, + { + "area": "五桂山街道", + "code": "442000006000" + }, + { + "area": "民众街道", + "code": "442000007000" + }, + { + "area": "南朗街道", + "code": "442000008000" + }, + { + "area": "黄圃镇", + "code": "442000101000" + }, + { + "area": "东凤镇", + "code": "442000103000" + }, + { + "area": "古镇镇", + "code": "442000105000" + }, + { + "area": "沙溪镇", + "code": "442000106000" + }, + { + "area": "坦洲镇", + "code": "442000107000" + }, + { + "area": "港口镇", + "code": "442000108000" + }, + { + "area": "三角镇", + "code": "442000109000" + }, + { + "area": "横栏镇", + "code": "442000110000" + }, + { + "area": "南头镇", + "code": "442000111000" + }, + { + "area": "阜沙镇", + "code": "442000112000" + }, + { + "area": "三乡镇", + "code": "442000114000" + }, + { + "area": "板芙镇", + "code": "442000115000" + }, + { + "area": "大涌镇", + "code": "442000116000" + }, + { + "area": "神湾镇", + "code": "442000117000" + }, + { + "area": "小榄镇", + "code": "442000118000" + } + ] + }, + { + "city": "潮州市", + "code": "445100000000", + "areas": [ + { + "area": "湘桥区", + "code": "445102000000" + }, + { + "area": "潮安区", + "code": "445103000000" + }, + { + "area": "饶平县", + "code": "445122000000" + } + ] + }, + { + "city": "揭阳市", + "code": "445200000000", + "areas": [ + { + "area": "榕城区", + "code": "445202000000" + }, + { + "area": "揭东区", + "code": "445203000000" + }, + { + "area": "揭西县", + "code": "445222000000" + }, + { + "area": "惠来县", + "code": "445224000000" + }, + { + "area": "普宁市", + "code": "445281000000" + } + ] + }, + { + "city": "云浮市", + "code": "445300000000", + "areas": [ + { + "area": "云城区", + "code": "445302000000" + }, + { + "area": "云安区", + "code": "445303000000" + }, + { + "area": "新兴县", + "code": "445321000000" + }, + { + "area": "郁南县", + "code": "445322000000" + }, + { + "area": "罗定市", + "code": "445381000000" + } + ] + } + ] + }, + { + "province": "广西壮族自治区", + "code": "450000", + "citys": [ + { + "city": "南宁市", + "code": "450100000000", + "areas": [ + { + "area": "兴宁区", + "code": "450102000000" + }, + { + "area": "青秀区", + "code": "450103000000" + }, + { + "area": "江南区", + "code": "450105000000" + }, + { + "area": "西乡塘区", + "code": "450107000000" + }, + { + "area": "良庆区", + "code": "450108000000" + }, + { + "area": "邕宁区", + "code": "450109000000" + }, + { + "area": "武鸣区", + "code": "450110000000" + }, + { + "area": "隆安县", + "code": "450123000000" + }, + { + "area": "马山县", + "code": "450124000000" + }, + { + "area": "上林县", + "code": "450125000000" + }, + { + "area": "宾阳县", + "code": "450126000000" + }, + { + "area": "横州市", + "code": "450181000000" + } + ] + }, + { + "city": "柳州市", + "code": "450200000000", + "areas": [ + { + "area": "城中区", + "code": "450202000000" + }, + { + "area": "鱼峰区", + "code": "450203000000" + }, + { + "area": "柳南区", + "code": "450204000000" + }, + { + "area": "柳北区", + "code": "450205000000" + }, + { + "area": "柳江区", + "code": "450206000000" + }, + { + "area": "柳城县", + "code": "450222000000" + }, + { + "area": "鹿寨县", + "code": "450223000000" + }, + { + "area": "融安县", + "code": "450224000000" + }, + { + "area": "融水苗族自治县", + "code": "450225000000" + }, + { + "area": "三江侗族自治县", + "code": "450226000000" + } + ] + }, + { + "city": "桂林市", + "code": "450300000000", + "areas": [ + { + "area": "秀峰区", + "code": "450302000000" + }, + { + "area": "叠彩区", + "code": "450303000000" + }, + { + "area": "象山区", + "code": "450304000000" + }, + { + "area": "七星区", + "code": "450305000000" + }, + { + "area": "雁山区", + "code": "450311000000" + }, + { + "area": "临桂区", + "code": "450312000000" + }, + { + "area": "阳朔县", + "code": "450321000000" + }, + { + "area": "灵川县", + "code": "450323000000" + }, + { + "area": "全州县", + "code": "450324000000" + }, + { + "area": "兴安县", + "code": "450325000000" + }, + { + "area": "永福县", + "code": "450326000000" + }, + { + "area": "灌阳县", + "code": "450327000000" + }, + { + "area": "龙胜各族自治县", + "code": "450328000000" + }, + { + "area": "资源县", + "code": "450329000000" + }, + { + "area": "平乐县", + "code": "450330000000" + }, + { + "area": "恭城瑶族自治县", + "code": "450332000000" + }, + { + "area": "荔浦市", + "code": "450381000000" + } + ] + }, + { + "city": "梧州市", + "code": "450400000000", + "areas": [ + { + "area": "万秀区", + "code": "450403000000" + }, + { + "area": "长洲区", + "code": "450405000000" + }, + { + "area": "龙圩区", + "code": "450406000000" + }, + { + "area": "苍梧县", + "code": "450421000000" + }, + { + "area": "藤县", + "code": "450422000000" + }, + { + "area": "蒙山县", + "code": "450423000000" + }, + { + "area": "岑溪市", + "code": "450481000000" + } + ] + }, + { + "city": "北海市", + "code": "450500000000", + "areas": [ + { + "area": "海城区", + "code": "450502000000" + }, + { + "area": "银海区", + "code": "450503000000" + }, + { + "area": "铁山港区", + "code": "450512000000" + }, + { + "area": "合浦县", + "code": "450521000000" + } + ] + }, + { + "city": "防城港市", + "code": "450600000000", + "areas": [ + { + "area": "港口区", + "code": "450602000000" + }, + { + "area": "防城区", + "code": "450603000000" + }, + { + "area": "上思县", + "code": "450621000000" + }, + { + "area": "东兴市", + "code": "450681000000" + } + ] + }, + { + "city": "钦州市", + "code": "450700000000", + "areas": [ + { + "area": "钦南区", + "code": "450702000000" + }, + { + "area": "钦北区", + "code": "450703000000" + }, + { + "area": "灵山县", + "code": "450721000000" + }, + { + "area": "浦北县", + "code": "450722000000" + } + ] + }, + { + "city": "贵港市", + "code": "450800000000", + "areas": [ + { + "area": "港北区", + "code": "450802000000" + }, + { + "area": "港南区", + "code": "450803000000" + }, + { + "area": "覃塘区", + "code": "450804000000" + }, + { + "area": "平南县", + "code": "450821000000" + }, + { + "area": "桂平市", + "code": "450881000000" + } + ] + }, + { + "city": "玉林市", + "code": "450900000000", + "areas": [ + { + "area": "玉州区", + "code": "450902000000" + }, + { + "area": "福绵区", + "code": "450903000000" + }, + { + "area": "容县", + "code": "450921000000" + }, + { + "area": "陆川县", + "code": "450922000000" + }, + { + "area": "博白县", + "code": "450923000000" + }, + { + "area": "兴业县", + "code": "450924000000" + }, + { + "area": "北流市", + "code": "450981000000" + } + ] + }, + { + "city": "百色市", + "code": "451000000000", + "areas": [ + { + "area": "右江区", + "code": "451002000000" + }, + { + "area": "田阳区", + "code": "451003000000" + }, + { + "area": "田东县", + "code": "451022000000" + }, + { + "area": "德保县", + "code": "451024000000" + }, + { + "area": "那坡县", + "code": "451026000000" + }, + { + "area": "凌云县", + "code": "451027000000" + }, + { + "area": "乐业县", + "code": "451028000000" + }, + { + "area": "田林县", + "code": "451029000000" + }, + { + "area": "西林县", + "code": "451030000000" + }, + { + "area": "隆林各族自治县", + "code": "451031000000" + }, + { + "area": "靖西市", + "code": "451081000000" + }, + { + "area": "平果市", + "code": "451082000000" + } + ] + }, + { + "city": "贺州市", + "code": "451100000000", + "areas": [ + { + "area": "八步区", + "code": "451102000000" + }, + { + "area": "平桂区", + "code": "451103000000" + }, + { + "area": "昭平县", + "code": "451121000000" + }, + { + "area": "钟山县", + "code": "451122000000" + }, + { + "area": "富川瑶族自治县", + "code": "451123000000" + } + ] + }, + { + "city": "河池市", + "code": "451200000000", + "areas": [ + { + "area": "金城江区", + "code": "451202000000" + }, + { + "area": "宜州区", + "code": "451203000000" + }, + { + "area": "南丹县", + "code": "451221000000" + }, + { + "area": "天峨县", + "code": "451222000000" + }, + { + "area": "凤山县", + "code": "451223000000" + }, + { + "area": "东兰县", + "code": "451224000000" + }, + { + "area": "罗城仫佬族自治县", + "code": "451225000000" + }, + { + "area": "环江毛南族自治县", + "code": "451226000000" + }, + { + "area": "巴马瑶族自治县", + "code": "451227000000" + }, + { + "area": "都安瑶族自治县", + "code": "451228000000" + }, + { + "area": "大化瑶族自治县", + "code": "451229000000" + } + ] + }, + { + "city": "来宾市", + "code": "451300000000", + "areas": [ + { + "area": "兴宾区", + "code": "451302000000" + }, + { + "area": "忻城县", + "code": "451321000000" + }, + { + "area": "象州县", + "code": "451322000000" + }, + { + "area": "武宣县", + "code": "451323000000" + }, + { + "area": "金秀瑶族自治县", + "code": "451324000000" + }, + { + "area": "合山市", + "code": "451381000000" + } + ] + }, + { + "city": "崇左市", + "code": "451400000000", + "areas": [ + { + "area": "江州区", + "code": "451402000000" + }, + { + "area": "扶绥县", + "code": "451421000000" + }, + { + "area": "宁明县", + "code": "451422000000" + }, + { + "area": "龙州县", + "code": "451423000000" + }, + { + "area": "大新县", + "code": "451424000000" + }, + { + "area": "天等县", + "code": "451425000000" + }, + { + "area": "凭祥市", + "code": "451481000000" + } + ] + } + ] + }, + { + "province": "海南省", + "code": "460000", + "citys": [ + { + "city": "海口市", + "code": "460100000000", + "areas": [ + { + "area": "秀英区", + "code": "460105000000" + }, + { + "area": "龙华区", + "code": "460106000000" + }, + { + "area": "琼山区", + "code": "460107000000" + }, + { + "area": "美兰区", + "code": "460108000000" + } + ] + }, + { + "city": "三亚市", + "code": "460200000000", + "areas": [ + { + "area": "海棠区", + "code": "460202000000" + }, + { + "area": "吉阳区", + "code": "460203000000" + }, + { + "area": "天涯区", + "code": "460204000000" + }, + { + "area": "崖州区", + "code": "460205000000" + } + ] + }, + { + "city": "三沙市", + "code": "460300000000", + "areas": [ + { + "area": "西沙群岛", + "code": "460321000000" + }, + { + "area": "南沙群岛", + "code": "460322000000" + }, + { + "area": "中沙群岛的岛礁及其海域", + "code": "460323000000" + } + ] + }, + { + "city": "儋州市", + "code": "460400000000", + "areas": [ + { + "area": "那大镇", + "code": "460400100000" + }, + { + "area": "和庆镇", + "code": "460400101000" + }, + { + "area": "南丰镇", + "code": "460400102000" + }, + { + "area": "大成镇", + "code": "460400103000" + }, + { + "area": "雅星镇", + "code": "460400104000" + }, + { + "area": "兰洋镇", + "code": "460400105000" + }, + { + "area": "光村镇", + "code": "460400106000" + }, + { + "area": "木棠镇", + "code": "460400107000" + }, + { + "area": "海头镇", + "code": "460400108000" + }, + { + "area": "峨蔓镇", + "code": "460400109000" + }, + { + "area": "王五镇", + "code": "460400111000" + }, + { + "area": "白马井镇", + "code": "460400112000" + }, + { + "area": "中和镇", + "code": "460400113000" + }, + { + "area": "排浦镇", + "code": "460400114000" + }, + { + "area": "东成镇", + "code": "460400115000" + }, + { + "area": "新州镇", + "code": "460400116000" + }, + { + "area": "洋浦经济开发区", + "code": "460400499000" + }, + { + "area": "华南热作学院", + "code": "460400500000" + } + ] + }, + { + "city": "省直辖县级行政区划", + "code": "469000000000", + "areas": [ + { + "area": "五指山市", + "code": "469001000000" + }, + { + "area": "琼海市", + "code": "469002000000" + }, + { + "area": "文昌市", + "code": "469005000000" + }, + { + "area": "万宁市", + "code": "469006000000" + }, + { + "area": "东方市", + "code": "469007000000" + }, + { + "area": "定安县", + "code": "469021000000" + }, + { + "area": "屯昌县", + "code": "469022000000" + }, + { + "area": "澄迈县", + "code": "469023000000" + }, + { + "area": "临高县", + "code": "469024000000" + }, + { + "area": "白沙黎族自治县", + "code": "469025000000" + }, + { + "area": "昌江黎族自治县", + "code": "469026000000" + }, + { + "area": "乐东黎族自治县", + "code": "469027000000" + }, + { + "area": "陵水黎族自治县", + "code": "469028000000" + }, + { + "area": "保亭黎族苗族自治县", + "code": "469029000000" + }, + { + "area": "琼中黎族苗族自治县", + "code": "469030000000" + } + ] + } + ] + }, + { + "province": "重庆市", + "code": "500000", + "citys": [ + { + "city": "市辖区", + "code": "500100000000", + "areas": [ + { + "area": "万州区", + "code": "500101000000" + }, + { + "area": "涪陵区", + "code": "500102000000" + }, + { + "area": "渝中区", + "code": "500103000000" + }, + { + "area": "大渡口区", + "code": "500104000000" + }, + { + "area": "江北区", + "code": "500105000000" + }, + { + "area": "沙坪坝区", + "code": "500106000000" + }, + { + "area": "九龙坡区", + "code": "500107000000" + }, + { + "area": "南岸区", + "code": "500108000000" + }, + { + "area": "北碚区", + "code": "500109000000" + }, + { + "area": "綦江区", + "code": "500110000000" + }, + { + "area": "大足区", + "code": "500111000000" + }, + { + "area": "渝北区", + "code": "500112000000" + }, + { + "area": "巴南区", + "code": "500113000000" + }, + { + "area": "黔江区", + "code": "500114000000" + }, + { + "area": "长寿区", + "code": "500115000000" + }, + { + "area": "江津区", + "code": "500116000000" + }, + { + "area": "合川区", + "code": "500117000000" + }, + { + "area": "永川区", + "code": "500118000000" + }, + { + "area": "南川区", + "code": "500119000000" + }, + { + "area": "璧山区", + "code": "500120000000" + }, + { + "area": "铜梁区", + "code": "500151000000" + }, + { + "area": "潼南区", + "code": "500152000000" + }, + { + "area": "荣昌区", + "code": "500153000000" + }, + { + "area": "开州区", + "code": "500154000000" + }, + { + "area": "梁平区", + "code": "500155000000" + }, + { + "area": "武隆区", + "code": "500156000000" + } + ] + }, + { + "city": "县", + "code": "500200000000", + "areas": [ + { + "area": "城口县", + "code": "500229000000" + }, + { + "area": "丰都县", + "code": "500230000000" + }, + { + "area": "垫江县", + "code": "500231000000" + }, + { + "area": "忠县", + "code": "500233000000" + }, + { + "area": "云阳县", + "code": "500235000000" + }, + { + "area": "奉节县", + "code": "500236000000" + }, + { + "area": "巫山县", + "code": "500237000000" + }, + { + "area": "巫溪县", + "code": "500238000000" + }, + { + "area": "石柱土家族自治县", + "code": "500240000000" + }, + { + "area": "秀山土家族苗族自治县", + "code": "500241000000" + }, + { + "area": "酉阳土家族苗族自治县", + "code": "500242000000" + }, + { + "area": "彭水苗族土家族自治县", + "code": "500243000000" + } + ] + } + ] + }, + { + "province": "四川省", + "code": "510000", + "citys": [ + { + "city": "成都市", + "code": "510100000000", + "areas": [ + { + "area": "锦江区", + "code": "510104000000" + }, + { + "area": "青羊区", + "code": "510105000000" + }, + { + "area": "金牛区", + "code": "510106000000" + }, + { + "area": "武侯区", + "code": "510107000000" + }, + { + "area": "成华区", + "code": "510108000000" + }, + { + "area": "龙泉驿区", + "code": "510112000000" + }, + { + "area": "青白江区", + "code": "510113000000" + }, + { + "area": "新都区", + "code": "510114000000" + }, + { + "area": "温江区", + "code": "510115000000" + }, + { + "area": "双流区", + "code": "510116000000" + }, + { + "area": "郫都区", + "code": "510117000000" + }, + { + "area": "新津区", + "code": "510118000000" + }, + { + "area": "金堂县", + "code": "510121000000" + }, + { + "area": "大邑县", + "code": "510129000000" + }, + { + "area": "蒲江县", + "code": "510131000000" + }, + { + "area": "都江堰市", + "code": "510181000000" + }, + { + "area": "彭州市", + "code": "510182000000" + }, + { + "area": "邛崃市", + "code": "510183000000" + }, + { + "area": "崇州市", + "code": "510184000000" + }, + { + "area": "简阳市", + "code": "510185000000" + } + ] + }, + { + "city": "自贡市", + "code": "510300000000", + "areas": [ + { + "area": "自流井区", + "code": "510302000000" + }, + { + "area": "贡井区", + "code": "510303000000" + }, + { + "area": "大安区", + "code": "510304000000" + }, + { + "area": "沿滩区", + "code": "510311000000" + }, + { + "area": "荣县", + "code": "510321000000" + }, + { + "area": "富顺县", + "code": "510322000000" + } + ] + }, + { + "city": "攀枝花市", + "code": "510400000000", + "areas": [ + { + "area": "东区", + "code": "510402000000" + }, + { + "area": "西区", + "code": "510403000000" + }, + { + "area": "仁和区", + "code": "510411000000" + }, + { + "area": "米易县", + "code": "510421000000" + }, + { + "area": "盐边县", + "code": "510422000000" + } + ] + }, + { + "city": "泸州市", + "code": "510500000000", + "areas": [ + { + "area": "江阳区", + "code": "510502000000" + }, + { + "area": "纳溪区", + "code": "510503000000" + }, + { + "area": "龙马潭区", + "code": "510504000000" + }, + { + "area": "泸县", + "code": "510521000000" + }, + { + "area": "合江县", + "code": "510522000000" + }, + { + "area": "叙永县", + "code": "510524000000" + }, + { + "area": "古蔺县", + "code": "510525000000" + } + ] + }, + { + "city": "德阳市", + "code": "510600000000", + "areas": [ + { + "area": "旌阳区", + "code": "510603000000" + }, + { + "area": "罗江区", + "code": "510604000000" + }, + { + "area": "中江县", + "code": "510623000000" + }, + { + "area": "广汉市", + "code": "510681000000" + }, + { + "area": "什邡市", + "code": "510682000000" + }, + { + "area": "绵竹市", + "code": "510683000000" + } + ] + }, + { + "city": "绵阳市", + "code": "510700000000", + "areas": [ + { + "area": "涪城区", + "code": "510703000000" + }, + { + "area": "游仙区", + "code": "510704000000" + }, + { + "area": "安州区", + "code": "510705000000" + }, + { + "area": "三台县", + "code": "510722000000" + }, + { + "area": "盐亭县", + "code": "510723000000" + }, + { + "area": "梓潼县", + "code": "510725000000" + }, + { + "area": "北川羌族自治县", + "code": "510726000000" + }, + { + "area": "平武县", + "code": "510727000000" + }, + { + "area": "江油市", + "code": "510781000000" + } + ] + }, + { + "city": "广元市", + "code": "510800000000", + "areas": [ + { + "area": "利州区", + "code": "510802000000" + }, + { + "area": "昭化区", + "code": "510811000000" + }, + { + "area": "朝天区", + "code": "510812000000" + }, + { + "area": "旺苍县", + "code": "510821000000" + }, + { + "area": "青川县", + "code": "510822000000" + }, + { + "area": "剑阁县", + "code": "510823000000" + }, + { + "area": "苍溪县", + "code": "510824000000" + } + ] + }, + { + "city": "遂宁市", + "code": "510900000000", + "areas": [ + { + "area": "船山区", + "code": "510903000000" + }, + { + "area": "安居区", + "code": "510904000000" + }, + { + "area": "蓬溪县", + "code": "510921000000" + }, + { + "area": "大英县", + "code": "510923000000" + }, + { + "area": "射洪市", + "code": "510981000000" + } + ] + }, + { + "city": "内江市", + "code": "511000000000", + "areas": [ + { + "area": "市中区", + "code": "511002000000" + }, + { + "area": "东兴区", + "code": "511011000000" + }, + { + "area": "威远县", + "code": "511024000000" + }, + { + "area": "资中县", + "code": "511025000000" + }, + { + "area": "隆昌市", + "code": "511083000000" + } + ] + }, + { + "city": "乐山市", + "code": "511100000000", + "areas": [ + { + "area": "市中区", + "code": "511102000000" + }, + { + "area": "沙湾区", + "code": "511111000000" + }, + { + "area": "五通桥区", + "code": "511112000000" + }, + { + "area": "金口河区", + "code": "511113000000" + }, + { + "area": "犍为县", + "code": "511123000000" + }, + { + "area": "井研县", + "code": "511124000000" + }, + { + "area": "夹江县", + "code": "511126000000" + }, + { + "area": "沐川县", + "code": "511129000000" + }, + { + "area": "峨边彝族自治县", + "code": "511132000000" + }, + { + "area": "马边彝族自治县", + "code": "511133000000" + }, + { + "area": "峨眉山市", + "code": "511181000000" + } + ] + }, + { + "city": "南充市", + "code": "511300000000", + "areas": [ + { + "area": "顺庆区", + "code": "511302000000" + }, + { + "area": "高坪区", + "code": "511303000000" + }, + { + "area": "嘉陵区", + "code": "511304000000" + }, + { + "area": "南部县", + "code": "511321000000" + }, + { + "area": "营山县", + "code": "511322000000" + }, + { + "area": "蓬安县", + "code": "511323000000" + }, + { + "area": "仪陇县", + "code": "511324000000" + }, + { + "area": "西充县", + "code": "511325000000" + }, + { + "area": "阆中市", + "code": "511381000000" + } + ] + }, + { + "city": "眉山市", + "code": "511400000000", + "areas": [ + { + "area": "东坡区", + "code": "511402000000" + }, + { + "area": "彭山区", + "code": "511403000000" + }, + { + "area": "仁寿县", + "code": "511421000000" + }, + { + "area": "洪雅县", + "code": "511423000000" + }, + { + "area": "丹棱县", + "code": "511424000000" + }, + { + "area": "青神县", + "code": "511425000000" + } + ] + }, + { + "city": "宜宾市", + "code": "511500000000", + "areas": [ + { + "area": "翠屏区", + "code": "511502000000" + }, + { + "area": "南溪区", + "code": "511503000000" + }, + { + "area": "叙州区", + "code": "511504000000" + }, + { + "area": "江安县", + "code": "511523000000" + }, + { + "area": "长宁县", + "code": "511524000000" + }, + { + "area": "高县", + "code": "511525000000" + }, + { + "area": "珙县", + "code": "511526000000" + }, + { + "area": "筠连县", + "code": "511527000000" + }, + { + "area": "兴文县", + "code": "511528000000" + }, + { + "area": "屏山县", + "code": "511529000000" + } + ] + }, + { + "city": "广安市", + "code": "511600000000", + "areas": [ + { + "area": "广安区", + "code": "511602000000" + }, + { + "area": "前锋区", + "code": "511603000000" + }, + { + "area": "岳池县", + "code": "511621000000" + }, + { + "area": "武胜县", + "code": "511622000000" + }, + { + "area": "邻水县", + "code": "511623000000" + }, + { + "area": "华蓥市", + "code": "511681000000" + } + ] + }, + { + "city": "达州市", + "code": "511700000000", + "areas": [ + { + "area": "通川区", + "code": "511702000000" + }, + { + "area": "达川区", + "code": "511703000000" + }, + { + "area": "宣汉县", + "code": "511722000000" + }, + { + "area": "开江县", + "code": "511723000000" + }, + { + "area": "大竹县", + "code": "511724000000" + }, + { + "area": "渠县", + "code": "511725000000" + }, + { + "area": "万源市", + "code": "511781000000" + } + ] + }, + { + "city": "雅安市", + "code": "511800000000", + "areas": [ + { + "area": "雨城区", + "code": "511802000000" + }, + { + "area": "名山区", + "code": "511803000000" + }, + { + "area": "荥经县", + "code": "511822000000" + }, + { + "area": "汉源县", + "code": "511823000000" + }, + { + "area": "石棉县", + "code": "511824000000" + }, + { + "area": "天全县", + "code": "511825000000" + }, + { + "area": "芦山县", + "code": "511826000000" + }, + { + "area": "宝兴县", + "code": "511827000000" + } + ] + }, + { + "city": "巴中市", + "code": "511900000000", + "areas": [ + { + "area": "巴州区", + "code": "511902000000" + }, + { + "area": "恩阳区", + "code": "511903000000" + }, + { + "area": "通江县", + "code": "511921000000" + }, + { + "area": "南江县", + "code": "511922000000" + }, + { + "area": "平昌县", + "code": "511923000000" + } + ] + }, + { + "city": "资阳市", + "code": "512000000000", + "areas": [ + { + "area": "雁江区", + "code": "512002000000" + }, + { + "area": "安岳县", + "code": "512021000000" + }, + { + "area": "乐至县", + "code": "512022000000" + } + ] + }, + { + "city": "阿坝藏族羌族自治州", + "code": "513200000000", + "areas": [ + { + "area": "马尔康市", + "code": "513201000000" + }, + { + "area": "汶川县", + "code": "513221000000" + }, + { + "area": "理县", + "code": "513222000000" + }, + { + "area": "茂县", + "code": "513223000000" + }, + { + "area": "松潘县", + "code": "513224000000" + }, + { + "area": "九寨沟县", + "code": "513225000000" + }, + { + "area": "金川县", + "code": "513226000000" + }, + { + "area": "小金县", + "code": "513227000000" + }, + { + "area": "黑水县", + "code": "513228000000" + }, + { + "area": "壤塘县", + "code": "513230000000" + }, + { + "area": "阿坝县", + "code": "513231000000" + }, + { + "area": "若尔盖县", + "code": "513232000000" + }, + { + "area": "红原县", + "code": "513233000000" + } + ] + }, + { + "city": "甘孜藏族自治州", + "code": "513300000000", + "areas": [ + { + "area": "康定市", + "code": "513301000000" + }, + { + "area": "泸定县", + "code": "513322000000" + }, + { + "area": "丹巴县", + "code": "513323000000" + }, + { + "area": "九龙县", + "code": "513324000000" + }, + { + "area": "雅江县", + "code": "513325000000" + }, + { + "area": "道孚县", + "code": "513326000000" + }, + { + "area": "炉霍县", + "code": "513327000000" + }, + { + "area": "甘孜县", + "code": "513328000000" + }, + { + "area": "新龙县", + "code": "513329000000" + }, + { + "area": "德格县", + "code": "513330000000" + }, + { + "area": "白玉县", + "code": "513331000000" + }, + { + "area": "石渠县", + "code": "513332000000" + }, + { + "area": "色达县", + "code": "513333000000" + }, + { + "area": "理塘县", + "code": "513334000000" + }, + { + "area": "巴塘县", + "code": "513335000000" + }, + { + "area": "乡城县", + "code": "513336000000" + }, + { + "area": "稻城县", + "code": "513337000000" + }, + { + "area": "得荣县", + "code": "513338000000" + } + ] + }, + { + "city": "凉山彝族自治州", + "code": "513400000000", + "areas": [ + { + "area": "西昌市", + "code": "513401000000" + }, + { + "area": "会理市", + "code": "513402000000" + }, + { + "area": "木里藏族自治县", + "code": "513422000000" + }, + { + "area": "盐源县", + "code": "513423000000" + }, + { + "area": "德昌县", + "code": "513424000000" + }, + { + "area": "会东县", + "code": "513426000000" + }, + { + "area": "宁南县", + "code": "513427000000" + }, + { + "area": "普格县", + "code": "513428000000" + }, + { + "area": "布拖县", + "code": "513429000000" + }, + { + "area": "金阳县", + "code": "513430000000" + }, + { + "area": "昭觉县", + "code": "513431000000" + }, + { + "area": "喜德县", + "code": "513432000000" + }, + { + "area": "冕宁县", + "code": "513433000000" + }, + { + "area": "越西县", + "code": "513434000000" + }, + { + "area": "甘洛县", + "code": "513435000000" + }, + { + "area": "美姑县", + "code": "513436000000" + }, + { + "area": "雷波县", + "code": "513437000000" + } + ] + } + ] + }, + { + "province": "贵州省", + "code": "520000", + "citys": [ + { + "city": "贵阳市", + "code": "520100000000", + "areas": [ + { + "area": "南明区", + "code": "520102000000" + }, + { + "area": "云岩区", + "code": "520103000000" + }, + { + "area": "花溪区", + "code": "520111000000" + }, + { + "area": "乌当区", + "code": "520112000000" + }, + { + "area": "白云区", + "code": "520113000000" + }, + { + "area": "观山湖区", + "code": "520115000000" + }, + { + "area": "开阳县", + "code": "520121000000" + }, + { + "area": "息烽县", + "code": "520122000000" + }, + { + "area": "修文县", + "code": "520123000000" + }, + { + "area": "清镇市", + "code": "520181000000" + } + ] + }, + { + "city": "六盘水市", + "code": "520200000000", + "areas": [ + { + "area": "钟山区", + "code": "520201000000" + }, + { + "area": "六枝特区", + "code": "520203000000" + }, + { + "area": "水城区", + "code": "520204000000" + }, + { + "area": "盘州市", + "code": "520281000000" + } + ] + }, + { + "city": "遵义市", + "code": "520300000000", + "areas": [ + { + "area": "红花岗区", + "code": "520302000000" + }, + { + "area": "汇川区", + "code": "520303000000" + }, + { + "area": "播州区", + "code": "520304000000" + }, + { + "area": "桐梓县", + "code": "520322000000" + }, + { + "area": "绥阳县", + "code": "520323000000" + }, + { + "area": "正安县", + "code": "520324000000" + }, + { + "area": "道真仡佬族苗族自治县", + "code": "520325000000" + }, + { + "area": "务川仡佬族苗族自治县", + "code": "520326000000" + }, + { + "area": "凤冈县", + "code": "520327000000" + }, + { + "area": "湄潭县", + "code": "520328000000" + }, + { + "area": "余庆县", + "code": "520329000000" + }, + { + "area": "习水县", + "code": "520330000000" + }, + { + "area": "赤水市", + "code": "520381000000" + }, + { + "area": "仁怀市", + "code": "520382000000" + } + ] + }, + { + "city": "安顺市", + "code": "520400000000", + "areas": [ + { + "area": "西秀区", + "code": "520402000000" + }, + { + "area": "平坝区", + "code": "520403000000" + }, + { + "area": "普定县", + "code": "520422000000" + }, + { + "area": "镇宁布依族苗族自治县", + "code": "520423000000" + }, + { + "area": "关岭布依族苗族自治县", + "code": "520424000000" + }, + { + "area": "紫云苗族布依族自治县", + "code": "520425000000" + } + ] + }, + { + "city": "毕节市", + "code": "520500000000", + "areas": [ + { + "area": "七星关区", + "code": "520502000000" + }, + { + "area": "大方县", + "code": "520521000000" + }, + { + "area": "金沙县", + "code": "520523000000" + }, + { + "area": "织金县", + "code": "520524000000" + }, + { + "area": "纳雍县", + "code": "520525000000" + }, + { + "area": "威宁彝族回族苗族自治县", + "code": "520526000000" + }, + { + "area": "赫章县", + "code": "520527000000" + }, + { + "area": "黔西市", + "code": "520581000000" + } + ] + }, + { + "city": "铜仁市", + "code": "520600000000", + "areas": [ + { + "area": "碧江区", + "code": "520602000000" + }, + { + "area": "万山区", + "code": "520603000000" + }, + { + "area": "江口县", + "code": "520621000000" + }, + { + "area": "玉屏侗族自治县", + "code": "520622000000" + }, + { + "area": "石阡县", + "code": "520623000000" + }, + { + "area": "思南县", + "code": "520624000000" + }, + { + "area": "印江土家族苗族自治县", + "code": "520625000000" + }, + { + "area": "德江县", + "code": "520626000000" + }, + { + "area": "沿河土家族自治县", + "code": "520627000000" + }, + { + "area": "松桃苗族自治县", + "code": "520628000000" + } + ] + }, + { + "city": "黔西南布依族苗族自治州", + "code": "522300000000", + "areas": [ + { + "area": "兴义市", + "code": "522301000000" + }, + { + "area": "兴仁市", + "code": "522302000000" + }, + { + "area": "普安县", + "code": "522323000000" + }, + { + "area": "晴隆县", + "code": "522324000000" + }, + { + "area": "贞丰县", + "code": "522325000000" + }, + { + "area": "望谟县", + "code": "522326000000" + }, + { + "area": "册亨县", + "code": "522327000000" + }, + { + "area": "安龙县", + "code": "522328000000" + } + ] + }, + { + "city": "黔东南苗族侗族自治州", + "code": "522600000000", + "areas": [ + { + "area": "凯里市", + "code": "522601000000" + }, + { + "area": "黄平县", + "code": "522622000000" + }, + { + "area": "施秉县", + "code": "522623000000" + }, + { + "area": "三穗县", + "code": "522624000000" + }, + { + "area": "镇远县", + "code": "522625000000" + }, + { + "area": "岑巩县", + "code": "522626000000" + }, + { + "area": "天柱县", + "code": "522627000000" + }, + { + "area": "锦屏县", + "code": "522628000000" + }, + { + "area": "剑河县", + "code": "522629000000" + }, + { + "area": "台江县", + "code": "522630000000" + }, + { + "area": "黎平县", + "code": "522631000000" + }, + { + "area": "榕江县", + "code": "522632000000" + }, + { + "area": "从江县", + "code": "522633000000" + }, + { + "area": "雷山县", + "code": "522634000000" + }, + { + "area": "麻江县", + "code": "522635000000" + }, + { + "area": "丹寨县", + "code": "522636000000" + } + ] + }, + { + "city": "黔南布依族苗族自治州", + "code": "522700000000", + "areas": [ + { + "area": "都匀市", + "code": "522701000000" + }, + { + "area": "福泉市", + "code": "522702000000" + }, + { + "area": "荔波县", + "code": "522722000000" + }, + { + "area": "贵定县", + "code": "522723000000" + }, + { + "area": "瓮安县", + "code": "522725000000" + }, + { + "area": "独山县", + "code": "522726000000" + }, + { + "area": "平塘县", + "code": "522727000000" + }, + { + "area": "罗甸县", + "code": "522728000000" + }, + { + "area": "长顺县", + "code": "522729000000" + }, + { + "area": "龙里县", + "code": "522730000000" + }, + { + "area": "惠水县", + "code": "522731000000" + }, + { + "area": "三都水族自治县", + "code": "522732000000" + } + ] + } + ] + }, + { + "province": "云南省", + "code": "530000", + "citys": [ + { + "city": "昆明市", + "code": "530100000000", + "areas": [ + { + "area": "五华区", + "code": "530102000000" + }, + { + "area": "盘龙区", + "code": "530103000000" + }, + { + "area": "官渡区", + "code": "530111000000" + }, + { + "area": "西山区", + "code": "530112000000" + }, + { + "area": "东川区", + "code": "530113000000" + }, + { + "area": "呈贡区", + "code": "530114000000" + }, + { + "area": "晋宁区", + "code": "530115000000" + }, + { + "area": "富民县", + "code": "530124000000" + }, + { + "area": "宜良县", + "code": "530125000000" + }, + { + "area": "石林彝族自治县", + "code": "530126000000" + }, + { + "area": "嵩明县", + "code": "530127000000" + }, + { + "area": "禄劝彝族苗族自治县", + "code": "530128000000" + }, + { + "area": "寻甸回族彝族自治县", + "code": "530129000000" + }, + { + "area": "安宁市", + "code": "530181000000" + } + ] + }, + { + "city": "曲靖市", + "code": "530300000000", + "areas": [ + { + "area": "麒麟区", + "code": "530302000000" + }, + { + "area": "沾益区", + "code": "530303000000" + }, + { + "area": "马龙区", + "code": "530304000000" + }, + { + "area": "陆良县", + "code": "530322000000" + }, + { + "area": "师宗县", + "code": "530323000000" + }, + { + "area": "罗平县", + "code": "530324000000" + }, + { + "area": "富源县", + "code": "530325000000" + }, + { + "area": "会泽县", + "code": "530326000000" + }, + { + "area": "宣威市", + "code": "530381000000" + } + ] + }, + { + "city": "玉溪市", + "code": "530400000000", + "areas": [ + { + "area": "红塔区", + "code": "530402000000" + }, + { + "area": "江川区", + "code": "530403000000" + }, + { + "area": "通海县", + "code": "530423000000" + }, + { + "area": "华宁县", + "code": "530424000000" + }, + { + "area": "易门县", + "code": "530425000000" + }, + { + "area": "峨山彝族自治县", + "code": "530426000000" + }, + { + "area": "新平彝族傣族自治县", + "code": "530427000000" + }, + { + "area": "元江哈尼族彝族傣族自治县", + "code": "530428000000" + }, + { + "area": "澄江市", + "code": "530481000000" + } + ] + }, + { + "city": "保山市", + "code": "530500000000", + "areas": [ + { + "area": "隆阳区", + "code": "530502000000" + }, + { + "area": "施甸县", + "code": "530521000000" + }, + { + "area": "龙陵县", + "code": "530523000000" + }, + { + "area": "昌宁县", + "code": "530524000000" + }, + { + "area": "腾冲市", + "code": "530581000000" + } + ] + }, + { + "city": "昭通市", + "code": "530600000000", + "areas": [ + { + "area": "昭阳区", + "code": "530602000000" + }, + { + "area": "鲁甸县", + "code": "530621000000" + }, + { + "area": "巧家县", + "code": "530622000000" + }, + { + "area": "盐津县", + "code": "530623000000" + }, + { + "area": "大关县", + "code": "530624000000" + }, + { + "area": "永善县", + "code": "530625000000" + }, + { + "area": "绥江县", + "code": "530626000000" + }, + { + "area": "镇雄县", + "code": "530627000000" + }, + { + "area": "彝良县", + "code": "530628000000" + }, + { + "area": "威信县", + "code": "530629000000" + }, + { + "area": "水富市", + "code": "530681000000" + } + ] + }, + { + "city": "丽江市", + "code": "530700000000", + "areas": [ + { + "area": "古城区", + "code": "530702000000" + }, + { + "area": "玉龙纳西族自治县", + "code": "530721000000" + }, + { + "area": "永胜县", + "code": "530722000000" + }, + { + "area": "华坪县", + "code": "530723000000" + }, + { + "area": "宁蒗彝族自治县", + "code": "530724000000" + } + ] + }, + { + "city": "普洱市", + "code": "530800000000", + "areas": [ + { + "area": "思茅区", + "code": "530802000000" + }, + { + "area": "宁洱哈尼族彝族自治县", + "code": "530821000000" + }, + { + "area": "墨江哈尼族自治县", + "code": "530822000000" + }, + { + "area": "景东彝族自治县", + "code": "530823000000" + }, + { + "area": "景谷傣族彝族自治县", + "code": "530824000000" + }, + { + "area": "镇沅彝族哈尼族拉祜族自治县", + "code": "530825000000" + }, + { + "area": "江城哈尼族彝族自治县", + "code": "530826000000" + }, + { + "area": "孟连傣族拉祜族佤族自治县", + "code": "530827000000" + }, + { + "area": "澜沧拉祜族自治县", + "code": "530828000000" + }, + { + "area": "西盟佤族自治县", + "code": "530829000000" + } + ] + }, + { + "city": "临沧市", + "code": "530900000000", + "areas": [ + { + "area": "临翔区", + "code": "530902000000" + }, + { + "area": "凤庆县", + "code": "530921000000" + }, + { + "area": "云县", + "code": "530922000000" + }, + { + "area": "永德县", + "code": "530923000000" + }, + { + "area": "镇康县", + "code": "530924000000" + }, + { + "area": "双江拉祜族佤族布朗族傣族自治县", + "code": "530925000000" + }, + { + "area": "耿马傣族佤族自治县", + "code": "530926000000" + }, + { + "area": "沧源佤族自治县", + "code": "530927000000" + } + ] + }, + { + "city": "楚雄彝族自治州", + "code": "532300000000", + "areas": [ + { + "area": "楚雄市", + "code": "532301000000" + }, + { + "area": "禄丰市", + "code": "532302000000" + }, + { + "area": "双柏县", + "code": "532322000000" + }, + { + "area": "牟定县", + "code": "532323000000" + }, + { + "area": "南华县", + "code": "532324000000" + }, + { + "area": "姚安县", + "code": "532325000000" + }, + { + "area": "大姚县", + "code": "532326000000" + }, + { + "area": "永仁县", + "code": "532327000000" + }, + { + "area": "元谋县", + "code": "532328000000" + }, + { + "area": "武定县", + "code": "532329000000" + } + ] + }, + { + "city": "红河哈尼族彝族自治州", + "code": "532500000000", + "areas": [ + { + "area": "个旧市", + "code": "532501000000" + }, + { + "area": "开远市", + "code": "532502000000" + }, + { + "area": "蒙自市", + "code": "532503000000" + }, + { + "area": "弥勒市", + "code": "532504000000" + }, + { + "area": "屏边苗族自治县", + "code": "532523000000" + }, + { + "area": "建水县", + "code": "532524000000" + }, + { + "area": "石屏县", + "code": "532525000000" + }, + { + "area": "泸西县", + "code": "532527000000" + }, + { + "area": "元阳县", + "code": "532528000000" + }, + { + "area": "红河县", + "code": "532529000000" + }, + { + "area": "金平苗族瑶族傣族自治县", + "code": "532530000000" + }, + { + "area": "绿春县", + "code": "532531000000" + }, + { + "area": "河口瑶族自治县", + "code": "532532000000" + } + ] + }, + { + "city": "文山壮族苗族自治州", + "code": "532600000000", + "areas": [ + { + "area": "文山市", + "code": "532601000000" + }, + { + "area": "砚山县", + "code": "532622000000" + }, + { + "area": "西畴县", + "code": "532623000000" + }, + { + "area": "麻栗坡县", + "code": "532624000000" + }, + { + "area": "马关县", + "code": "532625000000" + }, + { + "area": "丘北县", + "code": "532626000000" + }, + { + "area": "广南县", + "code": "532627000000" + }, + { + "area": "富宁县", + "code": "532628000000" + } + ] + }, + { + "city": "西双版纳傣族自治州", + "code": "532800000000", + "areas": [ + { + "area": "景洪市", + "code": "532801000000" + }, + { + "area": "勐海县", + "code": "532822000000" + }, + { + "area": "勐腊县", + "code": "532823000000" + } + ] + }, + { + "city": "大理白族自治州", + "code": "532900000000", + "areas": [ + { + "area": "大理市", + "code": "532901000000" + }, + { + "area": "漾濞彝族自治县", + "code": "532922000000" + }, + { + "area": "祥云县", + "code": "532923000000" + }, + { + "area": "宾川县", + "code": "532924000000" + }, + { + "area": "弥渡县", + "code": "532925000000" + }, + { + "area": "南涧彝族自治县", + "code": "532926000000" + }, + { + "area": "巍山彝族回族自治县", + "code": "532927000000" + }, + { + "area": "永平县", + "code": "532928000000" + }, + { + "area": "云龙县", + "code": "532929000000" + }, + { + "area": "洱源县", + "code": "532930000000" + }, + { + "area": "剑川县", + "code": "532931000000" + }, + { + "area": "鹤庆县", + "code": "532932000000" + } + ] + }, + { + "city": "德宏傣族景颇族自治州", + "code": "533100000000", + "areas": [ + { + "area": "瑞丽市", + "code": "533102000000" + }, + { + "area": "芒市", + "code": "533103000000" + }, + { + "area": "梁河县", + "code": "533122000000" + }, + { + "area": "盈江县", + "code": "533123000000" + }, + { + "area": "陇川县", + "code": "533124000000" + } + ] + }, + { + "city": "怒江傈僳族自治州", + "code": "533300000000", + "areas": [ + { + "area": "泸水市", + "code": "533301000000" + }, + { + "area": "福贡县", + "code": "533323000000" + }, + { + "area": "贡山独龙族怒族自治县", + "code": "533324000000" + }, + { + "area": "兰坪白族普米族自治县", + "code": "533325000000" + } + ] + }, + { + "city": "迪庆藏族自治州", + "code": "533400000000", + "areas": [ + { + "area": "香格里拉市", + "code": "533401000000" + }, + { + "area": "德钦县", + "code": "533422000000" + }, + { + "area": "维西傈僳族自治县", + "code": "533423000000" + } + ] + } + ] + }, + { + "province": "西藏自治区", + "code": "540000", + "citys": [ + { + "city": "拉萨市", + "code": "540100000000", + "areas": [ + { + "area": "城关区", + "code": "540102000000" + }, + { + "area": "堆龙德庆区", + "code": "540103000000" + }, + { + "area": "达孜区", + "code": "540104000000" + }, + { + "area": "林周县", + "code": "540121000000" + }, + { + "area": "当雄县", + "code": "540122000000" + }, + { + "area": "尼木县", + "code": "540123000000" + }, + { + "area": "曲水县", + "code": "540124000000" + }, + { + "area": "墨竹工卡县", + "code": "540127000000" + }, + { + "area": "格尔木藏青工业园区", + "code": "540171000000" + }, + { + "area": "拉萨经济技术开发区", + "code": "540172000000" + }, + { + "area": "西藏文化旅游创意园区", + "code": "540173000000" + }, + { + "area": "达孜工业园区", + "code": "540174000000" + } + ] + }, + { + "city": "日喀则市", + "code": "540200000000", + "areas": [ + { + "area": "桑珠孜区", + "code": "540202000000" + }, + { + "area": "南木林县", + "code": "540221000000" + }, + { + "area": "江孜县", + "code": "540222000000" + }, + { + "area": "定日县", + "code": "540223000000" + }, + { + "area": "萨迦县", + "code": "540224000000" + }, + { + "area": "拉孜县", + "code": "540225000000" + }, + { + "area": "昂仁县", + "code": "540226000000" + }, + { + "area": "谢通门县", + "code": "540227000000" + }, + { + "area": "白朗县", + "code": "540228000000" + }, + { + "area": "仁布县", + "code": "540229000000" + }, + { + "area": "康马县", + "code": "540230000000" + }, + { + "area": "定结县", + "code": "540231000000" + }, + { + "area": "仲巴县", + "code": "540232000000" + }, + { + "area": "亚东县", + "code": "540233000000" + }, + { + "area": "吉隆县", + "code": "540234000000" + }, + { + "area": "聂拉木县", + "code": "540235000000" + }, + { + "area": "萨嘎县", + "code": "540236000000" + }, + { + "area": "岗巴县", + "code": "540237000000" + } + ] + }, + { + "city": "昌都市", + "code": "540300000000", + "areas": [ + { + "area": "卡若区", + "code": "540302000000" + }, + { + "area": "江达县", + "code": "540321000000" + }, + { + "area": "贡觉县", + "code": "540322000000" + }, + { + "area": "类乌齐县", + "code": "540323000000" + }, + { + "area": "丁青县", + "code": "540324000000" + }, + { + "area": "察雅县", + "code": "540325000000" + }, + { + "area": "八宿县", + "code": "540326000000" + }, + { + "area": "左贡县", + "code": "540327000000" + }, + { + "area": "芒康县", + "code": "540328000000" + }, + { + "area": "洛隆县", + "code": "540329000000" + }, + { + "area": "边坝县", + "code": "540330000000" + } + ] + }, + { + "city": "林芝市", + "code": "540400000000", + "areas": [ + { + "area": "巴宜区", + "code": "540402000000" + }, + { + "area": "工布江达县", + "code": "540421000000" + }, + { + "area": "墨脱县", + "code": "540423000000" + }, + { + "area": "波密县", + "code": "540424000000" + }, + { + "area": "察隅县", + "code": "540425000000" + }, + { + "area": "朗县", + "code": "540426000000" + }, + { + "area": "米林市", + "code": "540481000000" + } + ] + }, + { + "city": "山南市", + "code": "540500000000", + "areas": [ + { + "area": "乃东区", + "code": "540502000000" + }, + { + "area": "扎囊县", + "code": "540521000000" + }, + { + "area": "贡嘎县", + "code": "540522000000" + }, + { + "area": "桑日县", + "code": "540523000000" + }, + { + "area": "琼结县", + "code": "540524000000" + }, + { + "area": "曲松县", + "code": "540525000000" + }, + { + "area": "措美县", + "code": "540526000000" + }, + { + "area": "洛扎县", + "code": "540527000000" + }, + { + "area": "加查县", + "code": "540528000000" + }, + { + "area": "隆子县", + "code": "540529000000" + }, + { + "area": "浪卡子县", + "code": "540531000000" + }, + { + "area": "错那市", + "code": "540581000000" + } + ] + }, + { + "city": "那曲市", + "code": "540600000000", + "areas": [ + { + "area": "色尼区", + "code": "540602000000" + }, + { + "area": "嘉黎县", + "code": "540621000000" + }, + { + "area": "比如县", + "code": "540622000000" + }, + { + "area": "聂荣县", + "code": "540623000000" + }, + { + "area": "安多县", + "code": "540624000000" + }, + { + "area": "申扎县", + "code": "540625000000" + }, + { + "area": "索县", + "code": "540626000000" + }, + { + "area": "班戈县", + "code": "540627000000" + }, + { + "area": "巴青县", + "code": "540628000000" + }, + { + "area": "尼玛县", + "code": "540629000000" + }, + { + "area": "双湖县", + "code": "540630000000" + } + ] + }, + { + "city": "阿里地区", + "code": "542500000000", + "areas": [ + { + "area": "普兰县", + "code": "542521000000" + }, + { + "area": "札达县", + "code": "542522000000" + }, + { + "area": "噶尔县", + "code": "542523000000" + }, + { + "area": "日土县", + "code": "542524000000" + }, + { + "area": "革吉县", + "code": "542525000000" + }, + { + "area": "改则县", + "code": "542526000000" + }, + { + "area": "措勤县", + "code": "542527000000" + } + ] + } + ] + }, + { + "province": "陕西省", + "code": "610000", + "citys": [ + { + "city": "西安市", + "code": "610100000000", + "areas": [ + { + "area": "新城区", + "code": "610102000000" + }, + { + "area": "碑林区", + "code": "610103000000" + }, + { + "area": "莲湖区", + "code": "610104000000" + }, + { + "area": "灞桥区", + "code": "610111000000" + }, + { + "area": "未央区", + "code": "610112000000" + }, + { + "area": "雁塔区", + "code": "610113000000" + }, + { + "area": "阎良区", + "code": "610114000000" + }, + { + "area": "临潼区", + "code": "610115000000" + }, + { + "area": "长安区", + "code": "610116000000" + }, + { + "area": "高陵区", + "code": "610117000000" + }, + { + "area": "鄠邑区", + "code": "610118000000" + }, + { + "area": "蓝田县", + "code": "610122000000" + }, + { + "area": "周至县", + "code": "610124000000" + } + ] + }, + { + "city": "铜川市", + "code": "610200000000", + "areas": [ + { + "area": "王益区", + "code": "610202000000" + }, + { + "area": "印台区", + "code": "610203000000" + }, + { + "area": "耀州区", + "code": "610204000000" + }, + { + "area": "宜君县", + "code": "610222000000" + } + ] + }, + { + "city": "宝鸡市", + "code": "610300000000", + "areas": [ + { + "area": "渭滨区", + "code": "610302000000" + }, + { + "area": "金台区", + "code": "610303000000" + }, + { + "area": "陈仓区", + "code": "610304000000" + }, + { + "area": "凤翔区", + "code": "610305000000" + }, + { + "area": "岐山县", + "code": "610323000000" + }, + { + "area": "扶风县", + "code": "610324000000" + }, + { + "area": "眉县", + "code": "610326000000" + }, + { + "area": "陇县", + "code": "610327000000" + }, + { + "area": "千阳县", + "code": "610328000000" + }, + { + "area": "麟游县", + "code": "610329000000" + }, + { + "area": "凤县", + "code": "610330000000" + }, + { + "area": "太白县", + "code": "610331000000" + } + ] + }, + { + "city": "咸阳市", + "code": "610400000000", + "areas": [ + { + "area": "秦都区", + "code": "610402000000" + }, + { + "area": "杨陵区", + "code": "610403000000" + }, + { + "area": "渭城区", + "code": "610404000000" + }, + { + "area": "三原县", + "code": "610422000000" + }, + { + "area": "泾阳县", + "code": "610423000000" + }, + { + "area": "乾县", + "code": "610424000000" + }, + { + "area": "礼泉县", + "code": "610425000000" + }, + { + "area": "永寿县", + "code": "610426000000" + }, + { + "area": "长武县", + "code": "610428000000" + }, + { + "area": "旬邑县", + "code": "610429000000" + }, + { + "area": "淳化县", + "code": "610430000000" + }, + { + "area": "武功县", + "code": "610431000000" + }, + { + "area": "兴平市", + "code": "610481000000" + }, + { + "area": "彬州市", + "code": "610482000000" + } + ] + }, + { + "city": "渭南市", + "code": "610500000000", + "areas": [ + { + "area": "临渭区", + "code": "610502000000" + }, + { + "area": "华州区", + "code": "610503000000" + }, + { + "area": "潼关县", + "code": "610522000000" + }, + { + "area": "大荔县", + "code": "610523000000" + }, + { + "area": "合阳县", + "code": "610524000000" + }, + { + "area": "澄城县", + "code": "610525000000" + }, + { + "area": "蒲城县", + "code": "610526000000" + }, + { + "area": "白水县", + "code": "610527000000" + }, + { + "area": "富平县", + "code": "610528000000" + }, + { + "area": "韩城市", + "code": "610581000000" + }, + { + "area": "华阴市", + "code": "610582000000" + } + ] + }, + { + "city": "延安市", + "code": "610600000000", + "areas": [ + { + "area": "宝塔区", + "code": "610602000000" + }, + { + "area": "安塞区", + "code": "610603000000" + }, + { + "area": "延长县", + "code": "610621000000" + }, + { + "area": "延川县", + "code": "610622000000" + }, + { + "area": "志丹县", + "code": "610625000000" + }, + { + "area": "吴起县", + "code": "610626000000" + }, + { + "area": "甘泉县", + "code": "610627000000" + }, + { + "area": "富县", + "code": "610628000000" + }, + { + "area": "洛川县", + "code": "610629000000" + }, + { + "area": "宜川县", + "code": "610630000000" + }, + { + "area": "黄龙县", + "code": "610631000000" + }, + { + "area": "黄陵县", + "code": "610632000000" + }, + { + "area": "子长市", + "code": "610681000000" + } + ] + }, + { + "city": "汉中市", + "code": "610700000000", + "areas": [ + { + "area": "汉台区", + "code": "610702000000" + }, + { + "area": "南郑区", + "code": "610703000000" + }, + { + "area": "城固县", + "code": "610722000000" + }, + { + "area": "洋县", + "code": "610723000000" + }, + { + "area": "西乡县", + "code": "610724000000" + }, + { + "area": "勉县", + "code": "610725000000" + }, + { + "area": "宁强县", + "code": "610726000000" + }, + { + "area": "略阳县", + "code": "610727000000" + }, + { + "area": "镇巴县", + "code": "610728000000" + }, + { + "area": "留坝县", + "code": "610729000000" + }, + { + "area": "佛坪县", + "code": "610730000000" + } + ] + }, + { + "city": "榆林市", + "code": "610800000000", + "areas": [ + { + "area": "榆阳区", + "code": "610802000000" + }, + { + "area": "横山区", + "code": "610803000000" + }, + { + "area": "府谷县", + "code": "610822000000" + }, + { + "area": "靖边县", + "code": "610824000000" + }, + { + "area": "定边县", + "code": "610825000000" + }, + { + "area": "绥德县", + "code": "610826000000" + }, + { + "area": "米脂县", + "code": "610827000000" + }, + { + "area": "佳县", + "code": "610828000000" + }, + { + "area": "吴堡县", + "code": "610829000000" + }, + { + "area": "清涧县", + "code": "610830000000" + }, + { + "area": "子洲县", + "code": "610831000000" + }, + { + "area": "神木市", + "code": "610881000000" + } + ] + }, + { + "city": "安康市", + "code": "610900000000", + "areas": [ + { + "area": "汉滨区", + "code": "610902000000" + }, + { + "area": "汉阴县", + "code": "610921000000" + }, + { + "area": "石泉县", + "code": "610922000000" + }, + { + "area": "宁陕县", + "code": "610923000000" + }, + { + "area": "紫阳县", + "code": "610924000000" + }, + { + "area": "岚皋县", + "code": "610925000000" + }, + { + "area": "平利县", + "code": "610926000000" + }, + { + "area": "镇坪县", + "code": "610927000000" + }, + { + "area": "白河县", + "code": "610929000000" + }, + { + "area": "旬阳市", + "code": "610981000000" + } + ] + }, + { + "city": "商洛市", + "code": "611000000000", + "areas": [ + { + "area": "商州区", + "code": "611002000000" + }, + { + "area": "洛南县", + "code": "611021000000" + }, + { + "area": "丹凤县", + "code": "611022000000" + }, + { + "area": "商南县", + "code": "611023000000" + }, + { + "area": "山阳县", + "code": "611024000000" + }, + { + "area": "镇安县", + "code": "611025000000" + }, + { + "area": "柞水县", + "code": "611026000000" + } + ] + } + ] + }, + { + "province": "甘肃省", + "code": "620000", + "citys": [ + { + "city": "兰州市", + "code": "620100000000", + "areas": [ + { + "area": "城关区", + "code": "620102000000" + }, + { + "area": "七里河区", + "code": "620103000000" + }, + { + "area": "西固区", + "code": "620104000000" + }, + { + "area": "安宁区", + "code": "620105000000" + }, + { + "area": "红古区", + "code": "620111000000" + }, + { + "area": "永登县", + "code": "620121000000" + }, + { + "area": "皋兰县", + "code": "620122000000" + }, + { + "area": "榆中县", + "code": "620123000000" + }, + { + "area": "兰州新区", + "code": "620171000000" + } + ] + }, + { + "city": "嘉峪关市", + "code": "620200000000", + "areas": [] + }, + { + "city": "金昌市", + "code": "620300000000", + "areas": [ + { + "area": "金川区", + "code": "620302000000" + }, + { + "area": "永昌县", + "code": "620321000000" + } + ] + }, + { + "city": "白银市", + "code": "620400000000", + "areas": [ + { + "area": "白银区", + "code": "620402000000" + }, + { + "area": "平川区", + "code": "620403000000" + }, + { + "area": "靖远县", + "code": "620421000000" + }, + { + "area": "会宁县", + "code": "620422000000" + }, + { + "area": "景泰县", + "code": "620423000000" + } + ] + }, + { + "city": "天水市", + "code": "620500000000", + "areas": [ + { + "area": "秦州区", + "code": "620502000000" + }, + { + "area": "麦积区", + "code": "620503000000" + }, + { + "area": "清水县", + "code": "620521000000" + }, + { + "area": "秦安县", + "code": "620522000000" + }, + { + "area": "甘谷县", + "code": "620523000000" + }, + { + "area": "武山县", + "code": "620524000000" + }, + { + "area": "张家川回族自治县", + "code": "620525000000" + } + ] + }, + { + "city": "武威市", + "code": "620600000000", + "areas": [ + { + "area": "凉州区", + "code": "620602000000" + }, + { + "area": "民勤县", + "code": "620621000000" + }, + { + "area": "古浪县", + "code": "620622000000" + }, + { + "area": "天祝藏族自治县", + "code": "620623000000" + } + ] + }, + { + "city": "张掖市", + "code": "620700000000", + "areas": [ + { + "area": "甘州区", + "code": "620702000000" + }, + { + "area": "肃南裕固族自治县", + "code": "620721000000" + }, + { + "area": "民乐县", + "code": "620722000000" + }, + { + "area": "临泽县", + "code": "620723000000" + }, + { + "area": "高台县", + "code": "620724000000" + }, + { + "area": "山丹县", + "code": "620725000000" + } + ] + }, + { + "city": "平凉市", + "code": "620800000000", + "areas": [ + { + "area": "崆峒区", + "code": "620802000000" + }, + { + "area": "泾川县", + "code": "620821000000" + }, + { + "area": "灵台县", + "code": "620822000000" + }, + { + "area": "崇信县", + "code": "620823000000" + }, + { + "area": "庄浪县", + "code": "620825000000" + }, + { + "area": "静宁县", + "code": "620826000000" + }, + { + "area": "华亭市", + "code": "620881000000" + } + ] + }, + { + "city": "酒泉市", + "code": "620900000000", + "areas": [ + { + "area": "肃州区", + "code": "620902000000" + }, + { + "area": "金塔县", + "code": "620921000000" + }, + { + "area": "瓜州县", + "code": "620922000000" + }, + { + "area": "肃北蒙古族自治县", + "code": "620923000000" + }, + { + "area": "阿克塞哈萨克族自治县", + "code": "620924000000" + }, + { + "area": "玉门市", + "code": "620981000000" + }, + { + "area": "敦煌市", + "code": "620982000000" + } + ] + }, + { + "city": "庆阳市", + "code": "621000000000", + "areas": [ + { + "area": "西峰区", + "code": "621002000000" + }, + { + "area": "庆城县", + "code": "621021000000" + }, + { + "area": "环县", + "code": "621022000000" + }, + { + "area": "华池县", + "code": "621023000000" + }, + { + "area": "合水县", + "code": "621024000000" + }, + { + "area": "正宁县", + "code": "621025000000" + }, + { + "area": "宁县", + "code": "621026000000" + }, + { + "area": "镇原县", + "code": "621027000000" + } + ] + }, + { + "city": "定西市", + "code": "621100000000", + "areas": [ + { + "area": "安定区", + "code": "621102000000" + }, + { + "area": "通渭县", + "code": "621121000000" + }, + { + "area": "陇西县", + "code": "621122000000" + }, + { + "area": "渭源县", + "code": "621123000000" + }, + { + "area": "临洮县", + "code": "621124000000" + }, + { + "area": "漳县", + "code": "621125000000" + }, + { + "area": "岷县", + "code": "621126000000" + } + ] + }, + { + "city": "陇南市", + "code": "621200000000", + "areas": [ + { + "area": "武都区", + "code": "621202000000" + }, + { + "area": "成县", + "code": "621221000000" + }, + { + "area": "文县", + "code": "621222000000" + }, + { + "area": "宕昌县", + "code": "621223000000" + }, + { + "area": "康县", + "code": "621224000000" + }, + { + "area": "西和县", + "code": "621225000000" + }, + { + "area": "礼县", + "code": "621226000000" + }, + { + "area": "徽县", + "code": "621227000000" + }, + { + "area": "两当县", + "code": "621228000000" + } + ] + }, + { + "city": "临夏回族自治州", + "code": "622900000000", + "areas": [ + { + "area": "临夏市", + "code": "622901000000" + }, + { + "area": "临夏县", + "code": "622921000000" + }, + { + "area": "康乐县", + "code": "622922000000" + }, + { + "area": "永靖县", + "code": "622923000000" + }, + { + "area": "广河县", + "code": "622924000000" + }, + { + "area": "和政县", + "code": "622925000000" + }, + { + "area": "东乡族自治县", + "code": "622926000000" + }, + { + "area": "积石山保安族东乡族撒拉族自治县", + "code": "622927000000" + } + ] + }, + { + "city": "甘南藏族自治州", + "code": "623000000000", + "areas": [ + { + "area": "合作市", + "code": "623001000000" + }, + { + "area": "临潭县", + "code": "623021000000" + }, + { + "area": "卓尼县", + "code": "623022000000" + }, + { + "area": "舟曲县", + "code": "623023000000" + }, + { + "area": "迭部县", + "code": "623024000000" + }, + { + "area": "玛曲县", + "code": "623025000000" + }, + { + "area": "碌曲县", + "code": "623026000000" + }, + { + "area": "夏河县", + "code": "623027000000" + } + ] + } + ] + }, + { + "province": "青海省", + "code": "630000", + "citys": [ + { + "city": "西宁市", + "code": "630100000000", + "areas": [ + { + "area": "城东区", + "code": "630102000000" + }, + { + "area": "城中区", + "code": "630103000000" + }, + { + "area": "城西区", + "code": "630104000000" + }, + { + "area": "城北区", + "code": "630105000000" + }, + { + "area": "湟中区", + "code": "630106000000" + }, + { + "area": "大通回族土族自治县", + "code": "630121000000" + }, + { + "area": "湟源县", + "code": "630123000000" + } + ] + }, + { + "city": "海东市", + "code": "630200000000", + "areas": [ + { + "area": "乐都区", + "code": "630202000000" + }, + { + "area": "平安区", + "code": "630203000000" + }, + { + "area": "民和回族土族自治县", + "code": "630222000000" + }, + { + "area": "互助土族自治县", + "code": "630223000000" + }, + { + "area": "化隆回族自治县", + "code": "630224000000" + }, + { + "area": "循化撒拉族自治县", + "code": "630225000000" + } + ] + }, + { + "city": "海北藏族自治州", + "code": "632200000000", + "areas": [ + { + "area": "门源回族自治县", + "code": "632221000000" + }, + { + "area": "祁连县", + "code": "632222000000" + }, + { + "area": "海晏县", + "code": "632223000000" + }, + { + "area": "刚察县", + "code": "632224000000" + } + ] + }, + { + "city": "黄南藏族自治州", + "code": "632300000000", + "areas": [ + { + "area": "同仁市", + "code": "632301000000" + }, + { + "area": "尖扎县", + "code": "632322000000" + }, + { + "area": "泽库县", + "code": "632323000000" + }, + { + "area": "河南蒙古族自治县", + "code": "632324000000" + } + ] + }, + { + "city": "海南藏族自治州", + "code": "632500000000", + "areas": [ + { + "area": "共和县", + "code": "632521000000" + }, + { + "area": "同德县", + "code": "632522000000" + }, + { + "area": "贵德县", + "code": "632523000000" + }, + { + "area": "兴海县", + "code": "632524000000" + }, + { + "area": "贵南县", + "code": "632525000000" + } + ] + }, + { + "city": "果洛藏族自治州", + "code": "632600000000", + "areas": [ + { + "area": "玛沁县", + "code": "632621000000" + }, + { + "area": "班玛县", + "code": "632622000000" + }, + { + "area": "甘德县", + "code": "632623000000" + }, + { + "area": "达日县", + "code": "632624000000" + }, + { + "area": "久治县", + "code": "632625000000" + }, + { + "area": "玛多县", + "code": "632626000000" + } + ] + }, + { + "city": "玉树藏族自治州", + "code": "632700000000", + "areas": [ + { + "area": "玉树市", + "code": "632701000000" + }, + { + "area": "杂多县", + "code": "632722000000" + }, + { + "area": "称多县", + "code": "632723000000" + }, + { + "area": "治多县", + "code": "632724000000" + }, + { + "area": "囊谦县", + "code": "632725000000" + }, + { + "area": "曲麻莱县", + "code": "632726000000" + } + ] + }, + { + "city": "海西蒙古族藏族自治州", + "code": "632800000000", + "areas": [ + { + "area": "格尔木市", + "code": "632801000000" + }, + { + "area": "德令哈市", + "code": "632802000000" + }, + { + "area": "茫崖市", + "code": "632803000000" + }, + { + "area": "乌兰县", + "code": "632821000000" + }, + { + "area": "都兰县", + "code": "632822000000" + }, + { + "area": "天峻县", + "code": "632823000000" + }, + { + "area": "大柴旦行政委员会", + "code": "632857000000" + } + ] + } + ] + }, + { + "province": "宁夏回族自治区", + "code": "640000", + "citys": [ + { + "city": "银川市", + "code": "640100000000", + "areas": [ + { + "area": "兴庆区", + "code": "640104000000" + }, + { + "area": "西夏区", + "code": "640105000000" + }, + { + "area": "金凤区", + "code": "640106000000" + }, + { + "area": "永宁县", + "code": "640121000000" + }, + { + "area": "贺兰县", + "code": "640122000000" + }, + { + "area": "灵武市", + "code": "640181000000" + } + ] + }, + { + "city": "石嘴山市", + "code": "640200000000", + "areas": [ + { + "area": "大武口区", + "code": "640202000000" + }, + { + "area": "惠农区", + "code": "640205000000" + }, + { + "area": "平罗县", + "code": "640221000000" + } + ] + }, + { + "city": "吴忠市", + "code": "640300000000", + "areas": [ + { + "area": "利通区", + "code": "640302000000" + }, + { + "area": "红寺堡区", + "code": "640303000000" + }, + { + "area": "盐池县", + "code": "640323000000" + }, + { + "area": "同心县", + "code": "640324000000" + }, + { + "area": "青铜峡市", + "code": "640381000000" + } + ] + }, + { + "city": "固原市", + "code": "640400000000", + "areas": [ + { + "area": "原州区", + "code": "640402000000" + }, + { + "area": "西吉县", + "code": "640422000000" + }, + { + "area": "隆德县", + "code": "640423000000" + }, + { + "area": "泾源县", + "code": "640424000000" + }, + { + "area": "彭阳县", + "code": "640425000000" + } + ] + }, + { + "city": "中卫市", + "code": "640500000000", + "areas": [ + { + "area": "沙坡头区", + "code": "640502000000" + }, + { + "area": "中宁县", + "code": "640521000000" + }, + { + "area": "海原县", + "code": "640522000000" + } + ] + } + ] + }, + { + "province": "新疆维吾尔自治区", + "code": "650000", + "citys": [ + { + "city": "乌鲁木齐市", + "code": "650100000000", + "areas": [ + { + "area": "天山区", + "code": "650102000000" + }, + { + "area": "沙依巴克区", + "code": "650103000000" + }, + { + "area": "新市区", + "code": "650104000000" + }, + { + "area": "水磨沟区", + "code": "650105000000" + }, + { + "area": "头屯河区", + "code": "650106000000" + }, + { + "area": "达坂城区", + "code": "650107000000" + }, + { + "area": "米东区", + "code": "650109000000" + }, + { + "area": "乌鲁木齐县", + "code": "650121000000" + } + ] + }, + { + "city": "克拉玛依市", + "code": "650200000000", + "areas": [ + { + "area": "独山子区", + "code": "650202000000" + }, + { + "area": "克拉玛依区", + "code": "650203000000" + }, + { + "area": "白碱滩区", + "code": "650204000000" + }, + { + "area": "乌尔禾区", + "code": "650205000000" + } + ] + }, + { + "city": "吐鲁番市", + "code": "650400000000", + "areas": [ + { + "area": "高昌区", + "code": "650402000000" + }, + { + "area": "鄯善县", + "code": "650421000000" + }, + { + "area": "托克逊县", + "code": "650422000000" + } + ] + }, + { + "city": "哈密市", + "code": "650500000000", + "areas": [ + { + "area": "伊州区", + "code": "650502000000" + }, + { + "area": "巴里坤哈萨克自治县", + "code": "650521000000" + }, + { + "area": "伊吾县", + "code": "650522000000" + } + ] + }, + { + "city": "昌吉回族自治州", + "code": "652300000000", + "areas": [ + { + "area": "昌吉市", + "code": "652301000000" + }, + { + "area": "阜康市", + "code": "652302000000" + }, + { + "area": "呼图壁县", + "code": "652323000000" + }, + { + "area": "玛纳斯县", + "code": "652324000000" + }, + { + "area": "奇台县", + "code": "652325000000" + }, + { + "area": "吉木萨尔县", + "code": "652327000000" + }, + { + "area": "木垒哈萨克自治县", + "code": "652328000000" + } + ] + }, + { + "city": "博尔塔拉蒙古自治州", + "code": "652700000000", + "areas": [ + { + "area": "博乐市", + "code": "652701000000" + }, + { + "area": "阿拉山口市", + "code": "652702000000" + }, + { + "area": "精河县", + "code": "652722000000" + }, + { + "area": "温泉县", + "code": "652723000000" + } + ] + }, + { + "city": "巴音郭楞蒙古自治州", + "code": "652800000000", + "areas": [ + { + "area": "库尔勒市", + "code": "652801000000" + }, + { + "area": "轮台县", + "code": "652822000000" + }, + { + "area": "尉犁县", + "code": "652823000000" + }, + { + "area": "若羌县", + "code": "652824000000" + }, + { + "area": "且末县", + "code": "652825000000" + }, + { + "area": "焉耆回族自治县", + "code": "652826000000" + }, + { + "area": "和静县", + "code": "652827000000" + }, + { + "area": "和硕县", + "code": "652828000000" + }, + { + "area": "博湖县", + "code": "652829000000" + } + ] + }, + { + "city": "阿克苏地区", + "code": "652900000000", + "areas": [ + { + "area": "阿克苏市", + "code": "652901000000" + }, + { + "area": "库车市", + "code": "652902000000" + }, + { + "area": "温宿县", + "code": "652922000000" + }, + { + "area": "沙雅县", + "code": "652924000000" + }, + { + "area": "新和县", + "code": "652925000000" + }, + { + "area": "拜城县", + "code": "652926000000" + }, + { + "area": "乌什县", + "code": "652927000000" + }, + { + "area": "阿瓦提县", + "code": "652928000000" + }, + { + "area": "柯坪县", + "code": "652929000000" + } + ] + }, + { + "city": "克孜勒苏柯尔克孜自治州", + "code": "653000000000", + "areas": [ + { + "area": "阿图什市", + "code": "653001000000" + }, + { + "area": "阿克陶县", + "code": "653022000000" + }, + { + "area": "阿合奇县", + "code": "653023000000" + }, + { + "area": "乌恰县", + "code": "653024000000" + } + ] + }, + { + "city": "喀什地区", + "code": "653100000000", + "areas": [ + { + "area": "喀什市", + "code": "653101000000" + }, + { + "area": "疏附县", + "code": "653121000000" + }, + { + "area": "疏勒县", + "code": "653122000000" + }, + { + "area": "英吉沙县", + "code": "653123000000" + }, + { + "area": "泽普县", + "code": "653124000000" + }, + { + "area": "莎车县", + "code": "653125000000" + }, + { + "area": "叶城县", + "code": "653126000000" + }, + { + "area": "麦盖提县", + "code": "653127000000" + }, + { + "area": "岳普湖县", + "code": "653128000000" + }, + { + "area": "伽师县", + "code": "653129000000" + }, + { + "area": "巴楚县", + "code": "653130000000" + }, + { + "area": "塔什库尔干塔吉克自治县", + "code": "653131000000" + } + ] + }, + { + "city": "和田地区", + "code": "653200000000", + "areas": [ + { + "area": "和田市", + "code": "653201000000" + }, + { + "area": "和田县", + "code": "653221000000" + }, + { + "area": "墨玉县", + "code": "653222000000" + }, + { + "area": "皮山县", + "code": "653223000000" + }, + { + "area": "洛浦县", + "code": "653224000000" + }, + { + "area": "策勒县", + "code": "653225000000" + }, + { + "area": "于田县", + "code": "653226000000" + }, + { + "area": "民丰县", + "code": "653227000000" + } + ] + }, + { + "city": "伊犁哈萨克自治州", + "code": "654000000000", + "areas": [ + { + "area": "伊宁市", + "code": "654002000000" + }, + { + "area": "奎屯市", + "code": "654003000000" + }, + { + "area": "霍尔果斯市", + "code": "654004000000" + }, + { + "area": "伊宁县", + "code": "654021000000" + }, + { + "area": "察布查尔锡伯自治县", + "code": "654022000000" + }, + { + "area": "霍城县", + "code": "654023000000" + }, + { + "area": "巩留县", + "code": "654024000000" + }, + { + "area": "新源县", + "code": "654025000000" + }, + { + "area": "昭苏县", + "code": "654026000000" + }, + { + "area": "特克斯县", + "code": "654027000000" + }, + { + "area": "尼勒克县", + "code": "654028000000" + } + ] + }, + { + "city": "塔城地区", + "code": "654200000000", + "areas": [ + { + "area": "塔城市", + "code": "654201000000" + }, + { + "area": "乌苏市", + "code": "654202000000" + }, + { + "area": "沙湾市", + "code": "654203000000" + }, + { + "area": "额敏县", + "code": "654221000000" + }, + { + "area": "托里县", + "code": "654224000000" + }, + { + "area": "裕民县", + "code": "654225000000" + }, + { + "area": "和布克赛尔蒙古自治县", + "code": "654226000000" + } + ] + }, + { + "city": "阿勒泰地区", + "code": "654300000000", + "areas": [ + { + "area": "阿勒泰市", + "code": "654301000000" + }, + { + "area": "布尔津县", + "code": "654321000000" + }, + { + "area": "富蕴县", + "code": "654322000000" + }, + { + "area": "福海县", + "code": "654323000000" + }, + { + "area": "哈巴河县", + "code": "654324000000" + }, + { + "area": "青河县", + "code": "654325000000" + }, + { + "area": "吉木乃县", + "code": "654326000000" + } + ] + }, + { + "city": "自治区直辖县级行政区划", + "code": "659000000000", + "areas": [ + { + "area": "石河子市", + "code": "659001000000" + }, + { + "area": "阿拉尔市", + "code": "659002000000" + }, + { + "area": "图木舒克市", + "code": "659003000000" + }, + { + "area": "五家渠市", + "code": "659004000000" + }, + { + "area": "北屯市", + "code": "659005000000" + }, + { + "area": "铁门关市", + "code": "659006000000" + }, + { + "area": "双河市", + "code": "659007000000" + }, + { + "area": "可克达拉市", + "code": "659008000000" + }, + { + "area": "昆玉市", + "code": "659009000000" + }, + { + "area": "胡杨河市", + "code": "659010000000" + }, + { + "area": "新星市", + "code": "659011000000" + }, + { + "area": "白杨市", + "code": "659012000000" + } + ] + } + ] + }, + { + "province": "台湾省", + "code": "710000", + "citys": [ + { + "city": "台北市", + "code": "710000", + "areas": [ + { + "area": "台北市", + "code": "710000" + } + ] + }, + { + "city": "新北市", + "code": "710000", + "areas": [ + { + "area": "新北市", + "code": "710000" + } + ] + }, + { + "city": "桃园市", + "code": "710000", + "areas": [ + { + "area": "桃园市", + "code": "710000" + } + ] + }, + { + "city": "台中市", + "code": "710000", + "areas": [ + { + "area": "台中市", + "code": "710000" + } + ] + }, + { + "city": "台南市", + "code": "710000", + "areas": [ + { + "area": "台南市", + "code": "710000" + } + ] + }, + { + "city": "高雄市", + "code": "710000", + "areas": [ + { + "area": "高雄市", + "code": "710000" + } + ] + }, + { + "city": "基隆市", + "code": "710000", + "areas": [ + { + "area": "基隆市", + "code": "710000" + } + ] + }, + { + "city": "新竹市", + "code": "710000", + "areas": [ + { + "area": "新竹市", + "code": "710000" + } + ] + }, + { + "city": "嘉义市", + "code": "710000", + "areas": [ + { + "area": "嘉义市", + "code": "710000" + } + ] + }, + { + "city": "新竹县", + "code": "710000", + "areas": [ + { + "area": "新竹县", + "code": "710000" + } + ] + }, + { + "city": "苗栗县", + "code": "710000", + "areas": [ + { + "area": "苗栗县", + "code": "710000" + } + ] + }, + { + "city": "彰化县", + "code": "710000", + "areas": [ + { + "area": "彰化县", + "code": "710000" + } + ] + }, + { + "city": "南投县", + "code": "710000", + "areas": [ + { + "area": "南投县", + "code": "710000" + } + ] + }, + { + "city": "云林县", + "code": "710000", + "areas": [ + { + "area": "云林县", + "code": "710000" + } + ] + }, + { + "city": "嘉义县", + "code": "710000", + "areas": [ + { + "area": "嘉义县", + "code": "710000" + } + ] + }, + { + "city": "屏东县", + "code": "710000", + "areas": [ + { + "area": "屏东县", + "code": "710000" + } + ] + }, + { + "city": "宜兰县", + "code": "710000", + "areas": [ + { + "area": "宜兰县", + "code": "710000" + } + ] + }, + { + "city": "花莲县", + "code": "710000", + "areas": [ + { + "area": "花莲县", + "code": "710000" + } + ] + }, + { + "city": "台东县", + "code": "710000", + "areas": [ + { + "area": "台东县", + "code": "710000" + } + ] + }, + { + "city": "澎湖县", + "code": "710000", + "areas": [ + { + "area": "澎湖县", + "code": "710000" + } + ] + }, + { + "city": "连江县", + "code": "710000", + "areas": [ + { + "area": "连江县", + "code": "710000" + } + ] + } + ] + }, + { + "province": "香港特别行政区", + "code": "810000", + "citys": [ + { + "city": "香港特别行政区", + "code": "810000", + "areas": [ + { + "area": "中西区", + "code": "810001" + }, + { + "area": "湾仔区", + "code": "810002" + }, + { + "area": "东区", + "code": "810003" + }, + { + "area": "南区", + "code": "810004" + }, + { + "area": "油尖旺区", + "code": "810005" + }, + { + "area": "深水埗区", + "code": "810006" + }, + { + "area": "九龙城区", + "code": "810007" + }, + { + "area": "黄大仙区", + "code": "810008" + }, + { + "area": "观塘区", + "code": "810009" + }, + { + "area": "荃湾区", + "code": "810010" + }, + { + "area": "屯门区", + "code": "810011" + }, + { + "area": "元朗区", + "code": "810012" + }, + { + "area": "北区", + "code": "810013" + }, + { + "area": "大埔区", + "code": "810014" + }, + { + "area": "西贡区", + "code": "810015" + }, + { + "area": "沙田区", + "code": "810016" + }, + { + "area": "葵青区", + "code": "810017" + }, + { + "area": "离岛区", + "code": "810018" + } + ] + } + ] + }, + { + "province": "澳门特别行政区", + "code": "820000", + "citys": [ + { + "city": "澳门特别行政区", + "code": "820000", + "areas": [ + { + "area": "花地玛堂区", + "code": "820001" + }, + { + "area": "花王堂区", + "code": "820002" + }, + { + "area": "望德堂区", + "code": "820003" + }, + { + "area": "大堂区", + "code": "820004" + }, + { + "area": "风顺堂区", + "code": "820005" + }, + { + "area": "嘉模堂区", + "code": "820006" + }, + { + "area": "路凼填海区", + "code": "820007" + }, + { + "area": "圣方济各堂区", + "code": "820008" + } + ] + } + ] + } +] \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/static/data/cistysList.json b/unpackage/dist/build/app-plus/static/data/cistysList.json new file mode 100644 index 0000000..c6734a0 --- /dev/null +++ b/unpackage/dist/build/app-plus/static/data/cistysList.json @@ -0,0 +1,1884 @@ +{ + "A": [{ + "name": "安阳", + "adcode": "410500", + "center": "114.39248,36.098779", + "citycode": "0372" + }, { + "name": "阿拉善盟", + "adcode": "152900", + "center": "105.729135,38.851554", + "citycode": "0483" + }, { + "name": "阿勒泰地区", + "adcode": "654300", + "center": "88.141253,47.844924", + "citycode": "0906" + }, { + "name": "阿拉尔", + "adcode": "659002", + "center": "81.280532,40.547205", + "citycode": "1997" + }, { + "name": "阿克苏地区", + "adcode": "652900", + "center": "80.265068,41.170712", + "citycode": "0997" + }, { + "name": "鞍山", + "adcode": "210300", + "center": "122.994183,41.108239", + "citycode": "0412" + }, { + "name": "安顺", + "adcode": "520400", + "center": "105.9476,26.253103", + "citycode": "0853" + }, { + "name": "安庆", + "adcode": "340800", + "center": "117.115349,30.531828", + "citycode": "0556" + }, { + "name": "澳门", + "adcode": "820000", + "center": "113.543076,22.186927", + "citycode": "1853" + }, { + "name": "阿坝藏族羌族自治州", + "adcode": "513200", + "center": "102.224504,31.899427", + "citycode": "0837" + }, { + "name": "阿里地区", + "adcode": "542500", + "center": "80.105786,32.500987", + "citycode": "0897" + }, { + "name": "安康", + "adcode": "610900", + "center": "109.029017,32.685435", + "citycode": "0915" + }], + "B": [{ + "name": "巴彦淖尔", + "adcode": "150800", + "center": "107.387767,40.742987", + "citycode": "0478" + }, { + "name": "包头", + "adcode": "150200", + "center": "109.95315,40.621327", + "citycode": "0472" + }, { + "name": "北屯", + "adcode": "659005", + "center": "87.834419,47.326733", + "citycode": "1906" + }, { + "name": "博尔塔拉蒙古自治州", + "adcode": "652700", + "center": "82.066363,44.906039", + "citycode": "0909" + }, { + "name": "巴音郭楞蒙古自治州", + "adcode": "652800", + "center": "86.145298,41.764115", + "citycode": "0996" + }, { + "name": "白杨", + "adcode": "659012", + "center": "82.896936,46.727959", + "citycode": "2941" + }, { + "name": "本溪", + "adcode": "210500", + "center": "123.766669,41.294123", + "citycode": "0414" + }, { + "name": "滨州", + "adcode": "371600", + "center": "117.970731,37.382687", + "citycode": "0543" + }, { + "name": "毕节", + "adcode": "520500", + "center": "105.291544,27.283615", + "citycode": "0857" + }, { + "name": "亳州", + "adcode": "341600", + "center": "115.778588,33.846285", + "citycode": "0558" + }, { + "name": "蚌埠", + "adcode": "340300", + "center": "117.388566,32.91682", + "citycode": "0552" + }, { + "name": "白沙黎族自治县", + "adcode": "469025", + "center": "109.4429,19.221641", + "citycode": "0802" + }, { + "name": "保亭黎族苗族自治县", + "adcode": "469029", + "center": "109.700279,18.640339", + "citycode": "0801" + }, { + "name": "百色", + "adcode": "451000", + "center": "106.61869,23.90307", + "citycode": "0776" + }, { + "name": "北海", + "adcode": "450500", + "center": "109.120248,21.481305", + "citycode": "0779" + }, { + "name": "保定", + "adcode": "130600", + "center": "115.464523,38.874476", + "citycode": "0312" + }, { + "name": "白银", + "adcode": "620400", + "center": "104.138872,36.545123", + "citycode": "0943" + }, { + "name": "巴中", + "adcode": "511900", + "center": "106.747548,31.867853", + "citycode": "0827" + }, { + "name": "白城", + "adcode": "220800", + "center": "122.838102,45.620131", + "citycode": "0436" + }, { + "name": "白山", + "adcode": "220600", + "center": "126.414274,41.944132", + "citycode": "0439" + }, { + "name": "宝鸡", + "adcode": "610300", + "center": "107.237682,34.362862", + "citycode": "0917" + }, { + "name": "保山", + "adcode": "530500", + "center": "99.161489,25.112018", + "citycode": "0875" + }, { + "name": "北京", + "adcode": "110100", + "center": "116.405285,39.904989", + "citycode": "010" + }], + "C": [{ + "name": "潮州", + "adcode": "445100", + "center": "116.621901,23.657662", + "citycode": "0768" + }, { + "name": "赤峰", + "adcode": "150400", + "center": "118.887613,42.256876", + "citycode": "0476" + }, { + "name": "昌吉回族自治州", + "adcode": "652300", + "center": "87.308995,44.011044", + "citycode": "0994" + }, { + "name": "朝阳", + "adcode": "211300", + "center": "120.488801,41.601855", + "citycode": "0421" + }, { + "name": "池州", + "adcode": "341700", + "center": "117.495663,30.674264", + "citycode": "0566" + }, { + "name": "滁州", + "adcode": "341100", + "center": "118.333439,32.255904", + "citycode": "0550" + }, { + "name": "郴州", + "adcode": "431000", + "center": "113.015517,25.770117", + "citycode": "0735" + }, { + "name": "常德", + "adcode": "430700", + "center": "111.69905,29.031446", + "citycode": "0736" + }, { + "name": "长沙", + "adcode": "430100", + "center": "112.938882,28.228304", + "citycode": "0731" + }, { + "name": "澄迈县", + "adcode": "469023", + "center": "110.007497,19.738885", + "citycode": "0804" + }, { + "name": "昌江黎族自治县", + "adcode": "469026", + "center": "109.055783,19.298139", + "citycode": "0803" + }, { + "name": "常州", + "adcode": "320400", + "center": "119.974092,31.811313", + "citycode": "0519" + }, { + "name": "崇左", + "adcode": "451400", + "center": "107.364973,22.377139", + "citycode": "1771" + }, { + "name": "沧州", + "adcode": "130900", + "center": "116.838715,38.304676", + "citycode": "0317" + }, { + "name": "承德", + "adcode": "130800", + "center": "117.962749,40.952942", + "citycode": "0314" + }, { + "name": "成都", + "adcode": "510100", + "center": "104.066301,30.572961", + "citycode": "028" + }, { + "name": "昌都", + "adcode": "540300", + "center": "97.170425,31.142879", + "citycode": "0895" + }, { + "name": "长春", + "adcode": "220100", + "center": "125.323643,43.816996", + "citycode": "0431" + }, { + "name": "长治", + "adcode": "140400", + "center": "113.117394,36.195142", + "citycode": "0355" + }, { + "name": "楚雄彝族自治州", + "adcode": "532300", + "center": "101.528304,25.045678", + "citycode": "0878" + }], + "D": [{ + "name": "东莞", + "adcode": "441900", + "center": "113.751884,23.021016", + "citycode": "0769" + }, { + "name": "大兴安岭地区", + "adcode": "232700", + "center": "124.11786,50.41129", + "citycode": "0457" + }, { + "name": "大庆", + "adcode": "230600", + "center": "125.104078,46.589498", + "citycode": "0459" + }, { + "name": "大连", + "adcode": "210200", + "center": "121.614786,38.913962", + "citycode": "0411" + }, { + "name": "丹东", + "adcode": "210600", + "center": "124.354419,40.000646", + "citycode": "0415" + }, { + "name": "东营", + "adcode": "370500", + "center": "118.674633,37.433992", + "citycode": "0546" + }, { + "name": "德州", + "adcode": "371400", + "center": "116.359244,37.436492", + "citycode": "0534" + }, { + "name": "东方", + "adcode": "469007", + "center": "108.651829,19.095187", + "citycode": "0807" + }, { + "name": "定安县", + "adcode": "469021", + "center": "110.358001,19.681215", + "citycode": "0806" + }, { + "name": "儋州", + "adcode": "460400", + "center": "109.580812,19.520948", + "citycode": "0805" + }, { + "name": "定西", + "adcode": "621100", + "center": "104.592342,35.607947", + "citycode": "0932" + }, { + "name": "德阳", + "adcode": "510600", + "center": "104.397795,31.127449", + "citycode": "0838" + }, { + "name": "达州", + "adcode": "511700", + "center": "107.46778,31.209278", + "citycode": "0818" + }, { + "name": "大同", + "adcode": "140200", + "center": "113.366749,40.09711", + "citycode": "0352" + }, { + "name": "大理白族自治州", + "adcode": "532900", + "center": "100.267608,25.606548", + "citycode": "0872" + }, { + "name": "迪庆藏族自治州", + "adcode": "533400", + "center": "99.70211,27.819149", + "citycode": "0887" + }, { + "name": "德宏傣族景颇族自治州", + "adcode": "533100", + "center": "98.585621,24.433146", + "citycode": "0692" + }], + "E": [{ + "name": "鄂尔多斯", + "adcode": "150600", + "center": "109.782473,39.608744", + "citycode": "0477" + }, { + "name": "恩施土家族苗族自治州", + "adcode": "422800", + "center": "109.488076,30.272104", + "citycode": "0718" + }, { + "name": "鄂州", + "adcode": "420700", + "center": "114.894909,30.391461", + "citycode": "0711" + }], + "F": [{ + "name": "佛山", + "adcode": "440600", + "center": "113.121586,23.021351", + "citycode": "0757" + }, { + "name": "阜新", + "adcode": "210900", + "center": "121.670052,42.022028", + "citycode": "0418" + }, { + "name": "抚顺", + "adcode": "210400", + "center": "123.957053,41.881311", + "citycode": "0413" + }, { + "name": "阜阳", + "adcode": "341200", + "center": "115.814252,32.891032", + "citycode": "1558" + }, { + "name": "福州", + "adcode": "350100", + "center": "119.296411,26.074286", + "citycode": "0591" + }, { + "name": "防城港", + "adcode": "450600", + "center": "108.35467,21.686732", + "citycode": "0770" + }, { + "name": "抚州", + "adcode": "361000", + "center": "116.358054,27.948979", + "citycode": "0794" + }], + "G": [{ + "name": "广州", + "adcode": "440100", + "center": "113.264499,23.130061", + "citycode": "020" + }, { + "name": "贵阳", + "adcode": "520100", + "center": "106.628201,26.646694", + "citycode": "0851" + }, { + "name": "果洛藏族自治州", + "adcode": "632600", + "center": "100.245161,34.472179", + "citycode": "0975" + }, { + "name": "桂林", + "adcode": "450300", + "center": "110.179752,25.235615", + "citycode": "0773" + }, { + "name": "贵港", + "adcode": "450800", + "center": "109.598903,23.11182", + "citycode": "1755" + }, { + "name": "固原", + "adcode": "640400", + "center": "106.24267,36.01628", + "citycode": "0954" + }, { + "name": "甘南藏族自治州", + "adcode": "623000", + "center": "102.911736,34.983266", + "citycode": "0941" + }, { + "name": "广元", + "adcode": "510800", + "center": "105.844004,32.435774", + "citycode": "0839" + }, { + "name": "广安", + "adcode": "511600", + "center": "106.632647,30.456354", + "citycode": "0826" + }, { + "name": "甘孜藏族自治州", + "adcode": "513300", + "center": "101.96231,30.04952", + "citycode": "0836" + }, { + "name": "赣州", + "adcode": "360700", + "center": "114.933494,25.831139", + "citycode": "0797" + }], + "H": [{ + "name": "鹤壁", + "adcode": "410600", + "center": "114.297305,35.748329", + "citycode": "0392" + }, { + "name": "惠州", + "adcode": "441300", + "center": "114.415587,23.112368", + "citycode": "0752" + }, { + "name": "河源", + "adcode": "441600", + "center": "114.700215,23.744276", + "citycode": "0762" + }, { + "name": "呼伦贝尔", + "adcode": "150700", + "center": "119.77845,49.166536", + "citycode": "0470" + }, { + "name": "呼和浩特", + "adcode": "150100", + "center": "111.748814,40.842127", + "citycode": "0471" + }, { + "name": "鹤岗", + "adcode": "230400", + "center": "130.297687,47.350659", + "citycode": "0468" + }, { + "name": "黑河", + "adcode": "231100", + "center": "127.528226,50.244887", + "citycode": "0456" + }, { + "name": "哈尔滨", + "adcode": "230100", + "center": "126.53505,45.802981", + "citycode": "0451" + }, { + "name": "和田地区", + "adcode": "653200", + "center": "79.921646,37.114406", + "citycode": "0903" + }, { + "name": "哈密", + "adcode": "650500", + "center": "93.515053,42.819346", + "citycode": "0902" + }, { + "name": "胡杨河", + "adcode": "659010", + "center": "84.827592,44.692894", + "citycode": "0992" + }, { + "name": "黄冈", + "adcode": "421100", + "center": "114.872425,30.453722", + "citycode": "0713" + }, { + "name": "黄石", + "adcode": "420200", + "center": "115.038999,30.201082", + "citycode": "0714" + }, { + "name": "葫芦岛", + "adcode": "211400", + "center": "120.836783,40.710974", + "citycode": "0429" + }, { + "name": "菏泽", + "adcode": "371700", + "center": "115.479646,35.234309", + "citycode": "0530" + }, { + "name": "淮北", + "adcode": "340600", + "center": "116.798362,33.956264", + "citycode": "0561" + }, { + "name": "淮南", + "adcode": "340400", + "center": "117.018603,32.585384", + "citycode": "0554" + }, { + "name": "合肥", + "adcode": "340100", + "center": "117.227267,31.820567", + "citycode": "0551" + }, { + "name": "黄山", + "adcode": "341000", + "center": "118.337643,29.714886", + "citycode": "0559" + }, { + "name": "怀化", + "adcode": "431200", + "center": "110.001598,27.569813", + "citycode": "0745" + }, { + "name": "衡阳", + "adcode": "430400", + "center": "112.572016,26.894216", + "citycode": "0734" + }, { + "name": "海口", + "adcode": "460100", + "center": "110.200162,20.046316", + "citycode": "0898" + }, { + "name": "淮安", + "adcode": "320800", + "center": "119.113166,33.551495", + "citycode": "0517" + }, { + "name": "海东", + "adcode": "630200", + "center": "102.41064,36.473448", + "citycode": "0972" + }, { + "name": "海南藏族自治州", + "adcode": "632500", + "center": "100.622647,36.296399", + "citycode": "0974" + }, { + "name": "海西蒙古族藏族自治州", + "adcode": "632800", + "center": "97.33197,37.348114", + "citycode": "0977" + }, { + "name": "黄南藏族自治州", + "adcode": "632300", + "center": "102.015397,35.519317", + "citycode": "0973" + }, { + "name": "海北藏族自治州", + "adcode": "632200", + "center": "100.900944,36.954612", + "citycode": "0970" + }, { + "name": "河池", + "adcode": "451200", + "center": "108.63639,24.48523", + "citycode": "0778" + }, { + "name": "贺州", + "adcode": "451100", + "center": "111.567216,24.404182", + "citycode": "1774" + }, { + "name": "湖州", + "adcode": "330500", + "center": "120.086881,30.894178", + "citycode": "0572" + }, { + "name": "杭州", + "adcode": "330100", + "center": "120.209903,30.246566", + "citycode": "0571" + }, { + "name": "邯郸", + "adcode": "130400", + "center": "114.53915,36.625849", + "citycode": "0310" + }, { + "name": "衡水", + "adcode": "131100", + "center": "115.668987,37.739367", + "citycode": "0318" + }, { + "name": "汉中", + "adcode": "610700", + "center": "107.02319,33.066373", + "citycode": "0916" + }, { + "name": "红河哈尼族彝族自治州", + "adcode": "532500", + "center": "103.374873,23.363129", + "citycode": "0873" + }], + "J": [{ + "name": "济源", + "adcode": "419001", + "center": "112.602347,35.069057", + "citycode": "1391" + }, { + "name": "焦作", + "adcode": "410800", + "center": "113.241902,35.215726", + "citycode": "0391" + }, { + "name": "江门", + "adcode": "440700", + "center": "113.081548,22.578948", + "citycode": "0750" + }, { + "name": "揭阳", + "adcode": "445200", + "center": "116.372732,23.550968", + "citycode": "0663" + }, { + "name": "佳木斯", + "adcode": "230800", + "center": "130.318916,46.800002", + "citycode": "0454" + }, { + "name": "鸡西", + "adcode": "230300", + "center": "130.969385,45.295087", + "citycode": "0467" + }, { + "name": "荆门", + "adcode": "420800", + "center": "112.199009,31.035445", + "citycode": "0724" + }, { + "name": "荆州", + "adcode": "421000", + "center": "112.24143,30.336282", + "citycode": "0716" + }, { + "name": "锦州", + "adcode": "210700", + "center": "121.126859,41.096114", + "citycode": "0416" + }, { + "name": "济南", + "adcode": "370100", + "center": "117.120128,36.652069", + "citycode": "0531" + }, { + "name": "济宁", + "adcode": "370800", + "center": "116.587116,35.415117", + "citycode": "0537" + }, { + "name": "嘉兴", + "adcode": "330400", + "center": "120.755623,30.746814", + "citycode": "0573" + }, { + "name": "金华", + "adcode": "330700", + "center": "119.647265,29.079195", + "citycode": "0579" + }, { + "name": "嘉峪关", + "adcode": "620200", + "center": "98.2882,39.77325", + "citycode": "1937" + }, { + "name": "酒泉", + "adcode": "620900", + "center": "98.49432,39.733416", + "citycode": "0937" + }, { + "name": "金昌", + "adcode": "620300", + "center": "102.187972,38.521468", + "citycode": "0935" + }, { + "name": "吉林", + "adcode": "220200", + "center": "126.549719,43.838132", + "citycode": "0432" + }, { + "name": "晋城", + "adcode": "140500", + "center": "112.852022,35.491315", + "citycode": "0356" + }, { + "name": "晋中", + "adcode": "140700", + "center": "112.752633,37.688006", + "citycode": "0354" + }, { + "name": "吉安", + "adcode": "360800", + "center": "114.96681,27.091243", + "citycode": "0796" + }, { + "name": "景德镇", + "adcode": "360200", + "center": "117.184892,29.2744", + "citycode": "0798" + }, { + "name": "九江", + "adcode": "360400", + "center": "115.95356,29.66116", + "citycode": "0792" + }], + "K": [{ + "name": "开封", + "adcode": "410200", + "center": "114.314278,34.798083", + "citycode": "0378" + }, { + "name": "可克达拉", + "adcode": "659008", + "center": "80.994153,43.940381", + "citycode": "1999" + }, { + "name": "昆玉", + "adcode": "659009", + "center": "79.270193,37.215372", + "citycode": "1903" + }, { + "name": "喀什地区", + "adcode": "653100", + "center": "75.990618,39.470215", + "citycode": "0998" + }, { + "name": "克孜勒苏柯尔克孜自治州", + "adcode": "653000", + "center": "76.168157,39.716236", + "citycode": "0908" + }, { + "name": "克拉玛依", + "adcode": "650200", + "center": "84.889239,45.577712", + "citycode": "0990" + }, { + "name": "昆明", + "adcode": "530100", + "center": "102.833669,24.88149", + "citycode": "0871" + }], + "L": [{ + "name": "洛阳", + "adcode": "410300", + "center": "112.453895,34.619702", + "citycode": "0379" + }, { + "name": "漯河", + "adcode": "411100", + "center": "114.0166,33.58038", + "citycode": "0395" + }, { + "name": "辽阳", + "adcode": "211000", + "center": "123.239669,41.267396", + "citycode": "0419" + }, { + "name": "聊城", + "adcode": "371500", + "center": "115.985238,36.455857", + "citycode": "0635" + }, { + "name": "临沂", + "adcode": "371300", + "center": "118.356464,35.103771", + "citycode": "0539" + }, { + "name": "六盘水", + "adcode": "520200", + "center": "104.830357,26.592538", + "citycode": "0858" + }, { + "name": "六安", + "adcode": "341500", + "center": "116.519729,31.735892", + "citycode": "0564" + }, { + "name": "龙岩", + "adcode": "350800", + "center": "117.017362,25.075884", + "citycode": "0597" + }, { + "name": "娄底", + "adcode": "431300", + "center": "111.994468,27.699838", + "citycode": "0738" + }, { + "name": "乐东黎族自治县", + "adcode": "469027", + "center": "109.173384,18.750063", + "citycode": "2802" + }, { + "name": "陵水黎族自治县", + "adcode": "469028", + "center": "110.037553,18.506045", + "citycode": "0809" + }, { + "name": "临高县", + "adcode": "469024", + "center": "109.690508,19.912025", + "citycode": "1896" + }, { + "name": "连云港", + "adcode": "320700", + "center": "119.221487,34.596639", + "citycode": "0518" + }, { + "name": "柳州", + "adcode": "450200", + "center": "109.428071,24.326442", + "citycode": "0772" + }, { + "name": "来宾", + "adcode": "451300", + "center": "109.221243,23.750105", + "citycode": "1772" + }, { + "name": "丽水", + "adcode": "331100", + "center": "119.923249,28.467694", + "citycode": "0578" + }, { + "name": "廊坊", + "adcode": "131000", + "center": "116.683546,39.538304", + "citycode": "0316" + }, { + "name": "兰州", + "adcode": "620100", + "center": "103.834228,36.060798", + "citycode": "0931" + }, { + "name": "陇南", + "adcode": "621200", + "center": "104.960296,33.370174", + "citycode": "2935" + }, { + "name": "临夏回族自治州", + "adcode": "622900", + "center": "103.210386,35.601792", + "citycode": "0930" + }, { + "name": "乐山", + "adcode": "511100", + "center": "103.766085,29.552275", + "citycode": "0833" + }, { + "name": "泸州", + "adcode": "510500", + "center": "105.441866,28.87098", + "citycode": "0830" + }, { + "name": "凉山彝族自治州", + "adcode": "513400", + "center": "102.267713,27.881396", + "citycode": "0834" + }, { + "name": "拉萨", + "adcode": "540100", + "center": "91.171924,29.653491", + "citycode": "0891" + }, { + "name": "林芝", + "adcode": "540400", + "center": "94.361436,29.64875", + "citycode": "0894" + }, { + "name": "辽源", + "adcode": "220400", + "center": "125.144676,42.887961", + "citycode": "0437" + }, { + "name": "吕梁", + "adcode": "141100", + "center": "111.14454,37.518996", + "citycode": "0358" + }, { + "name": "临汾", + "adcode": "141000", + "center": "111.51931,36.088581", + "citycode": "0357" + }, { + "name": "临沧", + "adcode": "530900", + "center": "100.088837,23.884175", + "citycode": "0883" + }, { + "name": "丽江", + "adcode": "530700", + "center": "100.225936,26.855165", + "citycode": "0888" + }], + "M": [{ + "name": "茂名", + "adcode": "440900", + "center": "110.925533,21.662728", + "citycode": "0668" + }, { + "name": "梅州", + "adcode": "441400", + "center": "116.122046,24.288832", + "citycode": "0753" + }, { + "name": "牡丹江", + "adcode": "231000", + "center": "129.632928,44.551486", + "citycode": "0453" + }, { + "name": "马鞍山", + "adcode": "340500", + "center": "118.50685,31.668765", + "citycode": "0555" + }, { + "name": "绵阳", + "adcode": "510700", + "center": "104.679127,31.467673", + "citycode": "0816" + }, { + "name": "眉山", + "adcode": "511400", + "center": "103.848417,30.077113", + "citycode": "1833" + }], + "N": [{ + "name": "南阳", + "adcode": "411300", + "center": "112.584753,33.016102", + "citycode": "0377" + }, { + "name": "宁德", + "adcode": "350900", + "center": "119.547729,26.666222", + "citycode": "0593" + }, { + "name": "南平", + "adcode": "350700", + "center": "118.081325,27.382829", + "citycode": "0599" + }, { + "name": "南通", + "adcode": "320600", + "center": "120.894522,31.981269", + "citycode": "0513" + }, { + "name": "南京", + "adcode": "320100", + "center": "118.796624,32.059344", + "citycode": "025" + }, { + "name": "南宁", + "adcode": "450100", + "center": "108.366407,22.8177", + "citycode": "0771" + }, { + "name": "宁波", + "adcode": "330200", + "center": "121.62454,29.860258", + "citycode": "0574" + }, { + "name": "南充", + "adcode": "511300", + "center": "106.110565,30.837235", + "citycode": "0817" + }, { + "name": "内江", + "adcode": "511000", + "center": "105.057992,29.58021", + "citycode": "1832" + }, { + "name": "那曲", + "adcode": "540600", + "center": "92.05151,31.477905", + "citycode": "0896" + }, { + "name": "南昌", + "adcode": "360100", + "center": "115.857972,28.682976", + "citycode": "0791" + }, { + "name": "怒江傈僳族自治州", + "adcode": "533300", + "center": "98.8566,25.817555", + "citycode": "0886" + }], + "P": [{ + "name": "濮阳", + "adcode": "410900", + "center": "115.029246,35.762731", + "citycode": "0393" + }, { + "name": "平顶山", + "adcode": "410400", + "center": "113.192595,33.766554", + "citycode": "0375" + }, { + "name": "盘锦", + "adcode": "211100", + "center": "122.170729,40.71956", + "citycode": "0427" + }, { + "name": "莆田", + "adcode": "350300", + "center": "119.007662,25.454202", + "citycode": "0594" + }, { + "name": "平凉", + "adcode": "620800", + "center": "106.664913,35.542417", + "citycode": "0933" + }, { + "name": "攀枝花", + "adcode": "510400", + "center": "101.729116,26.558645", + "citycode": "0812" + }, { + "name": "萍乡", + "adcode": "360300", + "center": "113.887147,27.658721", + "citycode": "0799" + }, { + "name": "普洱", + "adcode": "530800", + "center": "100.966011,22.825229", + "citycode": "0879" + }], + "Q": [{ + "name": "清远", + "adcode": "441800", + "center": "113.056098,23.682064", + "citycode": "0763" + }, { + "name": "七台河", + "adcode": "230900", + "center": "131.003015,45.771178", + "citycode": "0464" + }, { + "name": "齐齐哈尔", + "adcode": "230200", + "center": "123.918193,47.354892", + "citycode": "0452" + }, { + "name": "潜江", + "adcode": "429005", + "center": "112.900279,30.401954", + "citycode": "2728" + }, { + "name": "青岛", + "adcode": "370200", + "center": "120.382665,36.066938", + "citycode": "0532" + }, { + "name": "黔南布依族苗族自治州", + "adcode": "522700", + "center": "107.522303,26.253136", + "citycode": "0854" + }, { + "name": "黔西南布依族苗族自治州", + "adcode": "522300", + "center": "104.906419,25.087733", + "citycode": "0859" + }, { + "name": "黔东南苗族侗族自治州", + "adcode": "522600", + "center": "107.982838,26.583759", + "citycode": "0855" + }, { + "name": "泉州", + "adcode": "350500", + "center": "118.675724,24.874452", + "citycode": "0595" + }, { + "name": "琼中黎族苗族自治县", + "adcode": "469030", + "center": "109.838423,19.03327", + "citycode": "1899" + }, { + "name": "琼海", + "adcode": "469002", + "center": "110.474524,19.259112", + "citycode": "1894" + }, { + "name": "钦州", + "adcode": "450700", + "center": "108.654355,21.980894", + "citycode": "0777" + }, { + "name": "衢州", + "adcode": "330800", + "center": "118.859307,28.970229", + "citycode": "0570" + }, { + "name": "秦皇岛", + "adcode": "130300", + "center": "119.52022,39.888243", + "citycode": "0335" + }, { + "name": "庆阳", + "adcode": "621000", + "center": "107.643433,35.709459", + "citycode": "0934" + }, { + "name": "曲靖", + "adcode": "530300", + "center": "103.796288,25.490866", + "citycode": "0874" + }], + "R": [{ + "name": "日照", + "adcode": "371100", + "center": "119.52685,35.416912", + "citycode": "0633" + }, { + "name": "日喀则", + "adcode": "540200", + "center": "88.880423,29.266838", + "citycode": "0892" + }], + "S": [{ + "name": "三门峡", + "adcode": "411200", + "center": "111.200482,34.773196", + "citycode": "0398" + }, { + "name": "商丘", + "adcode": "411400", + "center": "115.656358,34.415165", + "citycode": "0370" + }, { + "name": "汕头", + "adcode": "440500", + "center": "116.681956,23.354152", + "citycode": "0754" + }, { + "name": "深圳", + "adcode": "440300", + "center": "114.057939,22.543527", + "citycode": "0755" + }, { + "name": "汕尾", + "adcode": "441500", + "center": "115.375557,22.787204", + "citycode": "0660" + }, { + "name": "韶关", + "adcode": "440200", + "center": "113.597324,24.810977", + "citycode": "0751" + }, { + "name": "双鸭山", + "adcode": "230500", + "center": "131.141563,46.676157", + "citycode": "0469" + }, { + "name": "绥化", + "adcode": "231200", + "center": "126.968714,46.654147", + "citycode": "0455" + }, { + "name": "双河", + "adcode": "659007", + "center": "82.35365587,44.84052409", + "citycode": "1909" + }, { + "name": "石河子", + "adcode": "659001", + "center": "86.080397,44.305368", + "citycode": "0993" + }, { + "name": "十堰", + "adcode": "420300", + "center": "110.798921,32.629057", + "citycode": "0719" + }, { + "name": "神农架林区", + "adcode": "429021", + "center": "110.675879,31.745103", + "citycode": "1719" + }, { + "name": "随州", + "adcode": "421300", + "center": "113.382324,31.690275", + "citycode": "0722" + }, { + "name": "沈阳", + "adcode": "210100", + "center": "123.464675,41.677576", + "citycode": "024" + }, { + "name": "上海城区", + "adcode": "310100", + "center": "121.472644,31.231706", + "citycode": "021" + }, { + "name": "宿州", + "adcode": "341300", + "center": "116.96419,33.647726", + "citycode": "0557" + }, { + "name": "三明", + "adcode": "350400", + "center": "117.638919,26.263455", + "citycode": "0598" + }, { + "name": "邵阳", + "adcode": "430500", + "center": "111.467855,27.239528", + "citycode": "0739" + }, { + "name": "三沙", + "adcode": "460300", + "center": "112.338649,16.831004", + "citycode": "2898" + }, { + "name": "三亚", + "adcode": "460200", + "center": "109.511709,18.252865", + "citycode": "0899" + }, { + "name": "苏州", + "adcode": "320500", + "center": "120.585294,31.299758", + "citycode": "0512" + }, { + "name": "宿迁", + "adcode": "321300", + "center": "118.275228,33.963186", + "citycode": "0527" + }, { + "name": "石嘴山", + "adcode": "640200", + "center": "106.382792,38.984632", + "citycode": "0952" + }, { + "name": "绍兴", + "adcode": "330600", + "center": "120.582886,30.051549", + "citycode": "0575" + }, { + "name": "石家庄", + "adcode": "130100", + "center": "114.514976,38.042007", + "citycode": "0311" + }, { + "name": "遂宁", + "adcode": "510900", + "center": "105.592602,30.53268", + "citycode": "0825" + }, { + "name": "山南", + "adcode": "540500", + "center": "91.771426,29.237722", + "citycode": "0893" + }, { + "name": "松原", + "adcode": "220700", + "center": "124.825321,45.14191", + "citycode": "0438" + }, { + "name": "四平", + "adcode": "220300", + "center": "124.350599,43.166764", + "citycode": "0434" + }, { + "name": "朔州", + "adcode": "140600", + "center": "112.432906,39.331734", + "citycode": "0349" + }, { + "name": "上饶", + "adcode": "361100", + "center": "117.943064,28.45513", + "citycode": "0793" + }, { + "name": "商洛", + "adcode": "611000", + "center": "109.918646,33.873358", + "citycode": "0914" + }], + "T": [{ + "name": "通辽", + "adcode": "150500", + "center": "122.243309,43.653566", + "citycode": "0475" + }, { + "name": "铁门关", + "adcode": "659006", + "center": "85.670291,41.862997", + "citycode": "1996" + }, { + "name": "塔城地区", + "adcode": "654200", + "center": "82.980316,46.745364", + "citycode": "0901" + }, { + "name": "吐鲁番", + "adcode": "650400", + "center": "89.250261,42.972736", + "citycode": "0995" + }, { + "name": "图木舒克", + "adcode": "659003", + "center": "79.074965,39.867776", + "citycode": "1998" + }, { + "name": "天门", + "adcode": "429006", + "center": "113.166545,30.663706", + "citycode": "1728" + }, { + "name": "铁岭", + "adcode": "211200", + "center": "123.726008,42.223709", + "citycode": "0410" + }, { + "name": "泰安", + "adcode": "370900", + "center": "117.086963,36.201784", + "citycode": "0538" + }, { + "name": "铜仁", + "adcode": "520600", + "center": "109.189528,27.731555", + "citycode": "0856" + }, { + "name": "铜陵", + "adcode": "340700", + "center": "117.811298,30.945214", + "citycode": "0562" + }, { + "name": "屯昌县", + "adcode": "469022", + "center": "110.101667,19.351662", + "citycode": "1892" + }, { + "name": "泰州", + "adcode": "321200", + "center": "119.922883,32.456692", + "citycode": "0523" + }, { + "name": "台州", + "adcode": "331000", + "center": "121.42079,28.655716", + "citycode": "0576" + }, { + "name": "唐山", + "adcode": "130200", + "center": "118.180149,39.63068", + "citycode": "0315" + }, { + "name": "台湾", + "areaId": "710000", + "center": "121.509062,25.044332", + "citycode": "1886" + }, { + "name": "天水", + "adcode": "620500", + "center": "105.724828,34.581514", + "citycode": "0938" + }, { + "name": "天津", + "adcode": "120000", + "center": "117.201509,39.085318", + "citycode": "022" + }, { + "name": "通化", + "adcode": "220500", + "center": "125.939721,41.728312", + "citycode": "0435" + }, { + "name": "太原", + "adcode": "140100", + "center": "112.549656,37.870451", + "citycode": "0351" + }, { + "name": "铜川", + "adcode": "610200", + "center": "108.945116,34.897133", + "citycode": "0919" + }], + "W": [{ + "name": "乌海", + "adcode": "150300", + "center": "106.79415,39.655048", + "citycode": "0473" + }, { + "name": "乌兰察布", + "adcode": "150900", + "center": "113.132227,40.994526", + "citycode": "0474" + }, { + "name": "乌鲁木齐", + "adcode": "650100", + "center": "87.616824,43.825377", + "citycode": "0991" + }, { + "name": "五家渠", + "adcode": "659004", + "center": "87.542852,44.166489", + "citycode": "1994" + }, { + "name": "武汉", + "adcode": "420100", + "center": "114.304569,30.593354", + "citycode": "027" + }, { + "name": "威海", + "adcode": "371000", + "center": "122.120519,37.513315", + "citycode": "0631" + }, { + "name": "潍坊", + "adcode": "370700", + "center": "119.161721,36.707668", + "citycode": "0536" + }, { + "name": "芜湖", + "adcode": "340200", + "center": "118.433065,31.352614", + "citycode": "0553" + }, { + "name": "文昌", + "adcode": "469005", + "center": "110.797473,19.544234", + "citycode": "1893" + }, { + "name": "五指山", + "adcode": "469001", + "center": "109.516784,18.774827", + "citycode": "1897" + }, { + "name": "万宁", + "adcode": "469006", + "center": "110.392605,18.793697", + "citycode": "1898" + }, { + "name": "无锡", + "adcode": "320200", + "center": "120.311889,31.491064", + "citycode": "0510" + }, { + "name": "梧州", + "adcode": "450400", + "center": "111.279022,23.476733", + "citycode": "0774" + }, { + "name": "吴忠", + "adcode": "640300", + "center": "106.198613,37.997755", + "citycode": "0953" + }, { + "name": "温州", + "adcode": "330300", + "center": "120.699279,27.993849", + "citycode": "0577" + }, { + "name": "武威", + "adcode": "620600", + "center": "102.637821,37.92898", + "citycode": "1935" + }, { + "name": "渭南", + "adcode": "610500", + "center": "109.470962,34.520632", + "citycode": "0913" + }, { + "name": "文山壮族苗族自治州", + "adcode": "532600", + "center": "104.21567,23.400983", + "citycode": "0876" + }], + "X": [{ + "name": "信阳", + "adcode": "411500", + "center": "114.091058,32.148624", + "citycode": "0376" + }, { + "name": "许昌", + "adcode": "411000", + "center": "113.852004,34.03732", + "citycode": "0374" + }, { + "name": "新乡", + "adcode": "410700", + "center": "113.92679,35.303589", + "citycode": "0373" + }, { + "name": "兴安盟", + "adcode": "152200", + "center": "122.037796,46.082373", + "citycode": "0482" + }, { + "name": "锡林郭勒盟", + "adcode": "152500", + "center": "116.047387,43.933212", + "citycode": "0479" + }, { + "name": "新星", + "adcode": "659011", + "center": "93.74831,42.797043", + "citycode": "2940" + }, { + "name": "襄阳", + "adcode": "420600", + "center": "112.121743,32.010161", + "citycode": "0710" + }, { + "name": "孝感", + "adcode": "420900", + "center": "113.956962,30.918311", + "citycode": "0712" + }, { + "name": "仙桃", + "adcode": "429004", + "center": "113.442973,30.328407", + "citycode": "0728" + }, { + "name": "咸宁", + "adcode": "421200", + "center": "114.322601,29.84135", + "citycode": "0715" + }, { + "name": "宣城", + "adcode": "341800", + "center": "118.759127,30.939278", + "citycode": "0563" + }, { + "name": "厦门", + "adcode": "350200", + "center": "118.08891,24.479627", + "citycode": "0592" + }, { + "name": "湘西土家族苗族自治州", + "adcode": "433100", + "center": "109.673345,28.215983", + "citycode": "0743" + }, { + "name": "湘潭", + "adcode": "430300", + "center": "112.945439,27.83136", + "citycode": "0732" + }, { + "name": "徐州", + "adcode": "320300", + "center": "117.283752,34.204224", + "citycode": "0516" + }, { + "name": "西宁", + "adcode": "630100", + "center": "101.777795,36.616621", + "citycode": "0971" + }, { + "name": "邢台", + "adcode": "130500", + "center": "114.49742,37.060227", + "citycode": "0319" + }, { + "name": "香港", + "adcode": "810000", + "center": "114.170714,22.278354", + "citycode": "1852" + }, { + "name": "忻州", + "adcode": "140900", + "center": "112.734149,38.415958", + "citycode": "0350" + }, { + "name": "新余", + "adcode": "360500", + "center": "114.916665,27.818553", + "citycode": "0790" + }, { + "name": "西安", + "adcode": "610100", + "center": "108.939645,34.343207", + "citycode": "029" + }, { + "name": "咸阳", + "adcode": "610400", + "center": "108.708837,34.329896", + "citycode": "0910" + }, { + "name": "西双版纳傣族自治州", + "adcode": "532800", + "center": "100.797002,22.009037", + "citycode": "0691" + }], + "Y": [{ + "name": "阳江", + "adcode": "441700", + "center": "111.98343,21.856853", + "citycode": "0662" + }, { + "name": "云浮", + "adcode": "445300", + "center": "112.044524,22.915163", + "citycode": "0766" + }, { + "name": "伊春", + "adcode": "230700", + "center": "128.840863,47.728332", + "citycode": "0458" + }, { + "name": "伊犁哈萨克自治州", + "adcode": "654000", + "center": "81.323691,43.917106", + "citycode": "0999" + }, { + "name": "宜昌", + "adcode": "420500", + "center": "111.286962,30.69217", + "citycode": "0717" + }, { + "name": "营口", + "adcode": "210800", + "center": "122.219148,40.625027", + "citycode": "0417" + }, { + "name": "烟台", + "adcode": "370600", + "center": "121.447755,37.464551", + "citycode": "0535" + }, { + "name": "岳阳", + "adcode": "430600", + "center": "113.128922,29.35648", + "citycode": "0730" + }, { + "name": "益阳", + "adcode": "430900", + "center": "112.355994,28.554853", + "citycode": "0737" + }, { + "name": "永州", + "adcode": "431100", + "center": "111.613482,26.419861", + "citycode": "0746" + }, { + "name": "扬州", + "adcode": "321000", + "center": "119.412834,32.394404", + "citycode": "0514" + }, { + "name": "盐城", + "adcode": "320900", + "center": "120.16263,33.348176", + "citycode": "0515" + }, { + "name": "玉树藏族自治州", + "adcode": "632700", + "center": "97.006292,33.006308", + "citycode": "0976" + }, { + "name": "玉林", + "adcode": "450900", + "center": "110.18097,22.654001", + "citycode": "0775" + }, { + "name": "银川", + "adcode": "640100", + "center": "106.230977,38.487783", + "citycode": "0951" + }, { + "name": "宜宾", + "adcode": "511500", + "center": "104.642826,28.752354", + "citycode": "0831" + }, { + "name": "雅安", + "adcode": "511800", + "center": "103.041538,30.009998", + "citycode": "0835" + }, { + "name": "延边朝鲜族自治州", + "adcode": "222400", + "center": "129.470605,42.909426", + "citycode": "1433" + }, { + "name": "阳泉", + "adcode": "140300", + "center": "113.580426,37.857094", + "citycode": "0353" + }, { + "name": "运城", + "adcode": "140800", + "center": "111.007051,35.02667", + "citycode": "0359" + }, { + "name": "鹰潭", + "adcode": "360600", + "center": "117.039532,28.272092", + "citycode": "0701" + }, { + "name": "宜春", + "adcode": "360900", + "center": "114.416826,27.816245", + "citycode": "0795" + }, { + "name": "榆林", + "adcode": "610800", + "center": "109.734104,38.28576", + "citycode": "0912" + }, { + "name": "延安", + "adcode": "610600", + "center": "109.49468,36.650109", + "citycode": "0911" + }, { + "name": "玉溪", + "adcode": "530400", + "center": "102.526673,24.346786", + "citycode": "0877" + }], + "Z": [{ + "name": "郑州", + "adcode": "410100", + "center": "113.625351,34.746303", + "citycode": "0371" + }, { + "name": "周口", + "adcode": "411600", + "center": "114.701222,33.634652", + "citycode": "0394" + }, { + "name": "驻马店", + "adcode": "411700", + "center": "114.021988,33.014038", + "citycode": "0396" + }, { + "name": "肇庆", + "adcode": "441200", + "center": "112.465245,23.047747", + "citycode": "0758" + }, { + "name": "珠海", + "adcode": "440400", + "center": "113.576892,22.271644", + "citycode": "0756" + }, { + "name": "湛江", + "adcode": "440800", + "center": "110.357538,21.270108", + "citycode": "0759" + }, { + "name": "中山", + "adcode": "442000", + "center": "113.392517,22.517024", + "citycode": "0760" + }, { + "name": "淄博", + "adcode": "370300", + "center": "118.054994,36.813787", + "citycode": "0533" + }, { + "name": "枣庄", + "adcode": "370400", + "center": "117.323759,34.810858", + "citycode": "0632" + }, { + "name": "遵义", + "adcode": "520300", + "center": "107.031922,27.721931", + "citycode": "0852" + }, { + "name": "重庆", + "adcode": "500000", + "center": "106.551787,29.56268", + "citycode": "023" + }, { + "name": "漳州", + "adcode": "350600", + "center": "117.647298,24.515297", + "citycode": "0596" + }, { + "name": "张家界", + "adcode": "430800", + "center": "110.478887,29.117343", + "citycode": "0744" + }, { + "name": "株洲", + "adcode": "430200", + "center": "113.132783,27.828862", + "citycode": "0733" + }, { + "name": "镇江", + "adcode": "321100", + "center": "119.424441,32.188141", + "citycode": "0511" + }, { + "name": "中卫", + "adcode": "640500", + "center": "105.19677,37.500185", + "citycode": "1953" + }, { + "name": "舟山", + "adcode": "330900", + "center": "122.207395,29.985578", + "citycode": "0580" + }, { + "name": "张家口", + "adcode": "130700", + "center": "114.885895,40.768931", + "citycode": "0313" + }, { + "name": "张掖", + "adcode": "620700", + "center": "100.449858,38.924766", + "citycode": "0936" + }, { + "name": "资阳", + "adcode": "512000", + "center": "104.627265,30.129236", + "citycode": "0832" + }, { + "name": "自贡", + "adcode": "510300", + "center": "104.779307,29.33924", + "citycode": "0813" + }, { + "name": "昭通", + "adcode": "530600", + "center": "103.717078,27.338185", + "citycode": "0870" + }] +} \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/static/data/newChinaCitys.json b/unpackage/dist/build/app-plus/static/data/newChinaCitys.json new file mode 100644 index 0000000..27fa431 --- /dev/null +++ b/unpackage/dist/build/app-plus/static/data/newChinaCitys.json @@ -0,0 +1,25631 @@ +{ + "status": "1", + "info": "OK", + "infocode": "10000", + "count": "1", + "suggestion": { + "keywords": [], + "cities": [] + }, + "districts": [{ + "citycode": [], + "adcode": "100000", + "name": "中华人民共和国", + "center": "116.3683244,39.915085", + "level": "country", + "districts": [{ + "citycode": [], + "adcode": "410000", + "name": "河南省", + "center": "113.753094,34.767052", + "level": "province", + "districts": [{ + "citycode": "0379", + "adcode": "410300", + "name": "洛阳市", + "center": "112.453895,34.619702", + "level": "city", + "districts": [{ + "citycode": "0379", + "adcode": "410323", + "name": "新安县", + "center": "112.13246,34.728909", + "level": "district", + "districts": [] + }, { + "citycode": "0379", + "adcode": "410324", + "name": "栾川县", + "center": "111.615729,33.7857", + "level": "district", + "districts": [] + }, { + "citycode": "0379", + "adcode": "410303", + "name": "西工区", + "center": "112.428183,34.659959", + "level": "district", + "districts": [] + }, { + "citycode": "0379", + "adcode": "410329", + "name": "伊川县", + "center": "112.425751,34.421741", + "level": "district", + "districts": [] + }, { + "citycode": "0379", + "adcode": "410328", + "name": "洛宁县", + "center": "111.652958,34.389371", + "level": "district", + "districts": [] + }, { + "citycode": "0379", + "adcode": "410308", + "name": "孟津区", + "center": "112.44525,34.825587", + "level": "district", + "districts": [] + }, { + "citycode": "0379", + "adcode": "410302", + "name": "老城区", + "center": "112.469071,34.683645", + "level": "district", + "districts": [] + }, { + "citycode": "0379", + "adcode": "410327", + "name": "宜阳县", + "center": "112.179187,34.51462", + "level": "district", + "districts": [] + }, { + "citycode": "0379", + "adcode": "410304", + "name": "瀍河回族区", + "center": "112.500131,34.679773", + "level": "district", + "districts": [] + }, { + "citycode": "0379", + "adcode": "410305", + "name": "涧西区", + "center": "112.395766,34.658177", + "level": "district", + "districts": [] + }, { + "citycode": "0379", + "adcode": "410311", + "name": "洛龙区", + "center": "112.463833,34.619711", + "level": "district", + "districts": [] + }, { + "citycode": "0379", + "adcode": "410307", + "name": "偃师区", + "center": "112.789375,34.72715", + "level": "district", + "districts": [] + }, { + "citycode": "0379", + "adcode": "410326", + "name": "汝阳县", + "center": "112.473013,34.154283", + "level": "district", + "districts": [] + }, { + "citycode": "0379", + "adcode": "410325", + "name": "嵩县", + "center": "112.085432,34.134639", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0395", + "adcode": "411100", + "name": "漯河市", + "center": "114.0166,33.58038", + "level": "city", + "districts": [{ + "citycode": "0395", + "adcode": "411122", + "name": "临颍县", + "center": "113.931121,33.828096", + "level": "district", + "districts": [] + }, { + "citycode": "0395", + "adcode": "411103", + "name": "郾城区", + "center": "114.006596,33.587697", + "level": "district", + "districts": [] + }, { + "citycode": "0395", + "adcode": "411121", + "name": "舞阳县", + "center": "113.609327,33.438259", + "level": "district", + "districts": [] + }, { + "citycode": "0395", + "adcode": "411102", + "name": "源汇区", + "center": "113.984164,33.572319", + "level": "district", + "districts": [] + }, { + "citycode": "0395", + "adcode": "411104", + "name": "召陵区", + "center": "114.093879,33.586509", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0377", + "adcode": "411300", + "name": "南阳市", + "center": "112.584753,33.016102", + "level": "city", + "districts": [{ + "citycode": "0377", + "adcode": "411303", + "name": "卧龙区", + "center": "112.528524,32.990313", + "level": "district", + "districts": [] + }, { + "citycode": "0377", + "adcode": "411328", + "name": "唐河县", + "center": "112.80829,32.682464", + "level": "district", + "districts": [] + }, { + "citycode": "0377", + "adcode": "411323", + "name": "西峡县", + "center": "111.473644,33.307272", + "level": "district", + "districts": [] + }, { + "citycode": "0377", + "adcode": "411321", + "name": "南召县", + "center": "112.429277,33.489804", + "level": "district", + "districts": [] + }, { + "citycode": "0377", + "adcode": "411326", + "name": "淅川县", + "center": "111.490902,33.137831", + "level": "district", + "districts": [] + }, { + "citycode": "0377", + "adcode": "411381", + "name": "邓州市", + "center": "112.08745,32.687732", + "level": "district", + "districts": [] + }, { + "citycode": "0377", + "adcode": "411330", + "name": "桐柏县", + "center": "113.428702,32.379164", + "level": "district", + "districts": [] + }, { + "citycode": "0377", + "adcode": "411327", + "name": "社旗县", + "center": "112.948183,33.056229", + "level": "district", + "districts": [] + }, { + "citycode": "0377", + "adcode": "411302", + "name": "宛城区", + "center": "112.539506,33.003564", + "level": "district", + "districts": [] + }, { + "citycode": "0377", + "adcode": "411324", + "name": "镇平县", + "center": "112.234571,33.033826", + "level": "district", + "districts": [] + }, { + "citycode": "0377", + "adcode": "411325", + "name": "内乡县", + "center": "111.849354,33.044698", + "level": "district", + "districts": [] + }, { + "citycode": "0377", + "adcode": "411322", + "name": "方城县", + "center": "113.012849,33.255387", + "level": "district", + "districts": [] + }, { + "citycode": "0377", + "adcode": "411329", + "name": "新野县", + "center": "112.3601,32.521282", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0376", + "adcode": "411500", + "name": "信阳市", + "center": "114.091058,32.148624", + "level": "city", + "districts": [{ + "citycode": "0376", + "adcode": "411502", + "name": "浉河区", + "center": "114.05867,32.116885", + "level": "district", + "districts": [] + }, { + "citycode": "0376", + "adcode": "411503", + "name": "平桥区", + "center": "114.125595,32.101005", + "level": "district", + "districts": [] + }, { + "citycode": "0376", + "adcode": "411527", + "name": "淮滨县", + "center": "115.420101,32.474772", + "level": "district", + "districts": [] + }, { + "citycode": "0376", + "adcode": "411528", + "name": "息县", + "center": "114.740392,32.34312", + "level": "district", + "districts": [] + }, { + "citycode": "0376", + "adcode": "411526", + "name": "潢川县", + "center": "115.051683,32.131426", + "level": "district", + "districts": [] + }, { + "citycode": "0376", + "adcode": "411525", + "name": "固始县", + "center": "115.654066,32.169239", + "level": "district", + "districts": [] + }, { + "citycode": "0376", + "adcode": "411523", + "name": "新县", + "center": "114.879309,31.643914", + "level": "district", + "districts": [] + }, { + "citycode": "0376", + "adcode": "411524", + "name": "商城县", + "center": "115.406894,31.79832", + "level": "district", + "districts": [] + }, { + "citycode": "0376", + "adcode": "411522", + "name": "光山县", + "center": "114.91934,32.010736", + "level": "district", + "districts": [] + }, { + "citycode": "0376", + "adcode": "411521", + "name": "罗山县", + "center": "114.512838,32.20436", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0393", + "adcode": "410900", + "name": "濮阳市", + "center": "115.029246,35.762731", + "level": "city", + "districts": [{ + "citycode": "0393", + "adcode": "410926", + "name": "范县", + "center": "115.504081,35.85302", + "level": "district", + "districts": [] + }, { + "citycode": "0393", + "adcode": "410927", + "name": "台前县", + "center": "115.871671,35.970286", + "level": "district", + "districts": [] + }, { + "citycode": "0393", + "adcode": "410923", + "name": "南乐县", + "center": "115.205876,36.070219", + "level": "district", + "districts": [] + }, { + "citycode": "0393", + "adcode": "410922", + "name": "清丰县", + "center": "115.104602,35.886694", + "level": "district", + "districts": [] + }, { + "citycode": "0393", + "adcode": "410902", + "name": "华龙区", + "center": "115.074453,35.778289", + "level": "district", + "districts": [] + }, { + "citycode": "0393", + "adcode": "410928", + "name": "濮阳县", + "center": "115.029165,35.713113", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0371", + "adcode": "410100", + "name": "郑州市", + "center": "113.625351,34.746303", + "level": "city", + "districts": [{ + "citycode": "0371", + "adcode": "410185", + "name": "登封市", + "center": "113.05056,34.454877", + "level": "district", + "districts": [] + }, { + "citycode": "0371", + "adcode": "410122", + "name": "中牟县", + "center": "113.975798,34.720535", + "level": "district", + "districts": [] + }, { + "citycode": "0371", + "adcode": "410108", + "name": "惠济区", + "center": "113.617055,34.867994", + "level": "district", + "districts": [] + }, { + "citycode": "0371", + "adcode": "410106", + "name": "上街区", + "center": "113.309185,34.803514", + "level": "district", + "districts": [] + }, { + "citycode": "0371", + "adcode": "410102", + "name": "中原区", + "center": "113.612966,34.74828", + "level": "district", + "districts": [] + }, { + "citycode": "0371", + "adcode": "410182", + "name": "荥阳市", + "center": "113.383385,34.7866", + "level": "district", + "districts": [] + }, { + "citycode": "0371", + "adcode": "410183", + "name": "新密市", + "center": "113.390932,34.540216", + "level": "district", + "districts": [] + }, { + "citycode": "0371", + "adcode": "410103", + "name": "二七区", + "center": "113.640177,34.724138", + "level": "district", + "districts": [] + }, { + "citycode": "0371", + "adcode": "410105", + "name": "金水区", + "center": "113.6603,34.800415", + "level": "district", + "districts": [] + }, { + "citycode": "0371", + "adcode": "410181", + "name": "巩义市", + "center": "113.022354,34.748207", + "level": "district", + "districts": [] + }, { + "citycode": "0371", + "adcode": "410184", + "name": "新郑市", + "center": "113.74024,34.396479", + "level": "district", + "districts": [] + }, { + "citycode": "0371", + "adcode": "410104", + "name": "管城回族区", + "center": "113.677446,34.754436", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0398", + "adcode": "411200", + "name": "三门峡市", + "center": "111.200482,34.773196", + "level": "city", + "districts": [{ + "citycode": "0398", + "adcode": "411221", + "name": "渑池县", + "center": "111.761753,34.767937", + "level": "district", + "districts": [] + }, { + "citycode": "0398", + "adcode": "411202", + "name": "湖滨区", + "center": "111.188552,34.771296", + "level": "district", + "districts": [] + }, { + "citycode": "0398", + "adcode": "411203", + "name": "陕州区", + "center": "111.103252,34.72066", + "level": "district", + "districts": [] + }, { + "citycode": "0398", + "adcode": "411224", + "name": "卢氏县", + "center": "111.04522,34.051866", + "level": "district", + "districts": [] + }, { + "citycode": "0398", + "adcode": "411282", + "name": "灵宝市", + "center": "110.894225,34.517734", + "level": "district", + "districts": [] + }, { + "citycode": "0398", + "adcode": "411281", + "name": "义马市", + "center": "111.874726,34.747563", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "济源市", + "center": "112.602347,35.069057", + "level": "city", + "districts": [{ + "citycode": "1391", + "adcode": "419001", + "name": "坡头镇", + "center": "112.580245,35.063381", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "梨林镇", + "center": "112.753220,35.088183", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "思礼镇", + "center": "112.388078,35.210276", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "五龙口镇", + "center": "112.761264,35.195598", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "王屋镇", + "center": "112.168531,35.124376", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "玉泉街道", + "center": "112.623553,35.118882", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "轵城镇", + "center": "112.622105,35.062530", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "济水街道", + "center": "112.595477,35.094386", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "沁园街道", + "center": "112.593210,35.082244", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "下冶镇", + "center": "112.212297,35.113088", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "克井镇", + "center": "112.634910,35.255031", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "天坛街道", + "center": "112.566796,35.122905", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "邵原镇", + "center": "112.114016,35.270480", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "北海街道", + "center": "112.568975,35.111552", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "承留镇", + "center": "112.508612,35.024328", + "level": "street", + "districts": [] + }, { + "citycode": "1391", + "adcode": "419001", + "name": "大峪镇", + "center": "112.318910,35.079253", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0374", + "adcode": "411000", + "name": "许昌市", + "center": "113.852004,34.03732", + "level": "city", + "districts": [{ + "citycode": "0374", + "adcode": "411003", + "name": "建安区", + "center": "113.822869,34.124729", + "level": "district", + "districts": [] + }, { + "citycode": "0374", + "adcode": "411025", + "name": "襄城县", + "center": "113.506904,33.851609", + "level": "district", + "districts": [] + }, { + "citycode": "0374", + "adcode": "411081", + "name": "禹州市", + "center": "113.488715,34.142442", + "level": "district", + "districts": [] + }, { + "citycode": "0374", + "adcode": "411002", + "name": "魏都区", + "center": "113.830826,34.047189", + "level": "district", + "districts": [] + }, { + "citycode": "0374", + "adcode": "411024", + "name": "鄢陵县", + "center": "114.177329,34.102985", + "level": "district", + "districts": [] + }, { + "citycode": "0374", + "adcode": "411082", + "name": "长葛市", + "center": "113.813972,34.195458", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0372", + "adcode": "410500", + "name": "安阳市", + "center": "114.39248,36.098779", + "level": "city", + "districts": [{ + "citycode": "0372", + "adcode": "410581", + "name": "林州市", + "center": "113.819275,36.084127", + "level": "district", + "districts": [] + }, { + "citycode": "0372", + "adcode": "410502", + "name": "文峰区", + "center": "114.356967,36.090593", + "level": "district", + "districts": [] + }, { + "citycode": "0372", + "adcode": "410503", + "name": "北关区", + "center": "114.355742,36.10766", + "level": "district", + "districts": [] + }, { + "citycode": "0372", + "adcode": "410522", + "name": "安阳县", + "center": "114.462953,36.09211", + "level": "district", + "districts": [] + }, { + "citycode": "0372", + "adcode": "410505", + "name": "殷都区", + "center": "114.303454,36.109938", + "level": "district", + "districts": [] + }, { + "citycode": "0372", + "adcode": "410506", + "name": "龙安区", + "center": "114.301037,36.076937", + "level": "district", + "districts": [] + }, { + "citycode": "0372", + "adcode": "410523", + "name": "汤阴县", + "center": "114.357686,35.925155", + "level": "district", + "districts": [] + }, { + "citycode": "0372", + "adcode": "410527", + "name": "内黄县", + "center": "114.90146,35.972016", + "level": "district", + "districts": [] + }, { + "citycode": "0372", + "adcode": "410526", + "name": "滑县", + "center": "114.517977,35.576128", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0392", + "adcode": "410600", + "name": "鹤壁市", + "center": "114.297305,35.748329", + "level": "city", + "districts": [{ + "citycode": "0392", + "adcode": "410622", + "name": "淇县", + "center": "114.208851,35.622571", + "level": "district", + "districts": [] + }, { + "citycode": "0392", + "adcode": "410602", + "name": "鹤山区", + "center": "114.163133,35.954647", + "level": "district", + "districts": [] + }, { + "citycode": "0392", + "adcode": "410603", + "name": "山城区", + "center": "114.184391,35.897862", + "level": "district", + "districts": [] + }, { + "citycode": "0392", + "adcode": "410611", + "name": "淇滨区", + "center": "114.298748,35.741763", + "level": "district", + "districts": [] + }, { + "citycode": "0392", + "adcode": "410621", + "name": "浚县", + "center": "114.550611,35.677249", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0391", + "adcode": "410800", + "name": "焦作市", + "center": "113.241902,35.215726", + "level": "city", + "districts": [{ + "citycode": "0391", + "adcode": "410803", + "name": "中站区", + "center": "113.182847,35.237227", + "level": "district", + "districts": [] + }, { + "citycode": "0391", + "adcode": "410804", + "name": "马村区", + "center": "113.32212,35.257084", + "level": "district", + "districts": [] + }, { + "citycode": "0391", + "adcode": "410802", + "name": "解放区", + "center": "113.230555,35.240403", + "level": "district", + "districts": [] + }, { + "citycode": "0391", + "adcode": "410883", + "name": "孟州市", + "center": "112.791372,34.907229", + "level": "district", + "districts": [] + }, { + "citycode": "0391", + "adcode": "410822", + "name": "博爱县", + "center": "113.064701,35.170332", + "level": "district", + "districts": [] + }, { + "citycode": "0391", + "adcode": "410811", + "name": "山阳区", + "center": "113.254581,35.215054", + "level": "district", + "districts": [] + }, { + "citycode": "0391", + "adcode": "410882", + "name": "沁阳市", + "center": "112.950873,35.087569", + "level": "district", + "districts": [] + }, { + "citycode": "0391", + "adcode": "410825", + "name": "温县", + "center": "113.08067,34.93961", + "level": "district", + "districts": [] + }, { + "citycode": "0391", + "adcode": "410821", + "name": "修武县", + "center": "113.447862,35.22286", + "level": "district", + "districts": [] + }, { + "citycode": "0391", + "adcode": "410823", + "name": "武陟县", + "center": "113.401848,35.099458", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0373", + "adcode": "410700", + "name": "新乡市", + "center": "113.92679,35.303589", + "level": "city", + "districts": [{ + "citycode": "0373", + "adcode": "410703", + "name": "卫滨区", + "center": "113.865666,35.301796", + "level": "district", + "districts": [] + }, { + "citycode": "0373", + "adcode": "410726", + "name": "延津县", + "center": "114.205624,35.165876", + "level": "district", + "districts": [] + }, { + "citycode": "0373", + "adcode": "410721", + "name": "新乡县", + "center": "113.813884,35.170066", + "level": "district", + "districts": [] + }, { + "citycode": "0373", + "adcode": "410704", + "name": "凤泉区", + "center": "113.916183,35.384428", + "level": "district", + "districts": [] + }, { + "citycode": "0373", + "adcode": "410702", + "name": "红旗区", + "center": "113.983358,35.306182", + "level": "district", + "districts": [] + }, { + "citycode": "0373", + "adcode": "410711", + "name": "牧野区", + "center": "113.908561,35.315614", + "level": "district", + "districts": [] + }, { + "citycode": "0373", + "adcode": "410781", + "name": "卫辉市", + "center": "114.064584,35.398357", + "level": "district", + "districts": [] + }, { + "citycode": "0373", + "adcode": "410782", + "name": "辉县市", + "center": "113.80572,35.462964", + "level": "district", + "districts": [] + }, { + "citycode": "0373", + "adcode": "410724", + "name": "获嘉县", + "center": "113.657551,35.260153", + "level": "district", + "districts": [] + }, { + "citycode": "0373", + "adcode": "410783", + "name": "长垣市", + "center": "114.66885,35.201628", + "level": "district", + "districts": [] + }, { + "citycode": "0373", + "adcode": "410725", + "name": "原阳县", + "center": "113.939829,35.066873", + "level": "district", + "districts": [] + }, { + "citycode": "0373", + "adcode": "410727", + "name": "封丘县", + "center": "114.418907,35.041237", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0378", + "adcode": "410200", + "name": "开封市", + "center": "114.314278,34.798083", + "level": "city", + "districts": [{ + "citycode": "0378", + "adcode": "410223", + "name": "尉氏县", + "center": "114.19305,34.411437", + "level": "district", + "districts": [] + }, { + "citycode": "0378", + "adcode": "410204", + "name": "鼓楼区", + "center": "114.348356,34.788473", + "level": "district", + "districts": [] + }, { + "citycode": "0378", + "adcode": "410205", + "name": "禹王台区", + "center": "114.348105,34.777052", + "level": "district", + "districts": [] + }, { + "citycode": "0378", + "adcode": "410203", + "name": "顺河回族区", + "center": "114.360824,34.795933", + "level": "district", + "districts": [] + }, { + "citycode": "0378", + "adcode": "410222", + "name": "通许县", + "center": "114.47315,34.502053", + "level": "district", + "districts": [] + }, { + "citycode": "0378", + "adcode": "410202", + "name": "龙亭区", + "center": "114.355378,34.815515", + "level": "district", + "districts": [] + }, { + "citycode": "0378", + "adcode": "410212", + "name": "祥符区", + "center": "114.441406,34.757546", + "level": "district", + "districts": [] + }, { + "citycode": "0378", + "adcode": "410225", + "name": "兰考县", + "center": "114.818228,34.856372", + "level": "district", + "districts": [] + }, { + "citycode": "0378", + "adcode": "410221", + "name": "杞县", + "center": "114.782629,34.549731", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0370", + "adcode": "411400", + "name": "商丘市", + "center": "115.656358,34.415165", + "level": "city", + "districts": [{ + "citycode": "0370", + "adcode": "411481", + "name": "永城市", + "center": "116.449864,33.929927", + "level": "district", + "districts": [] + }, { + "citycode": "0370", + "adcode": "411421", + "name": "民权县", + "center": "115.175019,34.648384", + "level": "district", + "districts": [] + }, { + "citycode": "0370", + "adcode": "411423", + "name": "宁陵县", + "center": "115.314221,34.461226", + "level": "district", + "districts": [] + }, { + "citycode": "0370", + "adcode": "411426", + "name": "夏邑县", + "center": "116.131422,34.237801", + "level": "district", + "districts": [] + }, { + "citycode": "0370", + "adcode": "411402", + "name": "梁园区", + "center": "115.613609,34.444519", + "level": "district", + "districts": [] + }, { + "citycode": "0370", + "adcode": "411403", + "name": "睢阳区", + "center": "115.653258,34.389048", + "level": "district", + "districts": [] + }, { + "citycode": "0370", + "adcode": "411425", + "name": "虞城县", + "center": "115.828519,34.400868", + "level": "district", + "districts": [] + }, { + "citycode": "0370", + "adcode": "411422", + "name": "睢县", + "center": "115.071957,34.446572", + "level": "district", + "districts": [] + }, { + "citycode": "0370", + "adcode": "411424", + "name": "柘城县", + "center": "115.305182,34.092015", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0394", + "adcode": "411600", + "name": "周口市", + "center": "114.701222,33.634652", + "level": "city", + "districts": [{ + "citycode": "0394", + "adcode": "411621", + "name": "扶沟县", + "center": "114.394666,34.060062", + "level": "district", + "districts": [] + }, { + "citycode": "0394", + "adcode": "411603", + "name": "淮阳区", + "center": "114.852604,33.731543", + "level": "district", + "districts": [] + }, { + "citycode": "0394", + "adcode": "411625", + "name": "郸城县", + "center": "115.177141,33.64601", + "level": "district", + "districts": [] + }, { + "citycode": "0394", + "adcode": "411602", + "name": "川汇区", + "center": "114.650551,33.647679", + "level": "district", + "districts": [] + }, { + "citycode": "0394", + "adcode": "411624", + "name": "沈丘县", + "center": "115.098541,33.409805", + "level": "district", + "districts": [] + }, { + "citycode": "0394", + "adcode": "411628", + "name": "鹿邑县", + "center": "115.484525,33.860698", + "level": "district", + "districts": [] + }, { + "citycode": "0394", + "adcode": "411627", + "name": "太康县", + "center": "114.837946,34.064513", + "level": "district", + "districts": [] + }, { + "citycode": "0394", + "adcode": "411681", + "name": "项城市", + "center": "114.875128,33.465609", + "level": "district", + "districts": [] + }, { + "citycode": "0394", + "adcode": "411623", + "name": "商水县", + "center": "114.608135,33.562072", + "level": "district", + "districts": [] + }, { + "citycode": "0394", + "adcode": "411622", + "name": "西华县", + "center": "114.529709,33.768277", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0396", + "adcode": "411700", + "name": "驻马店市", + "center": "114.021988,33.014038", + "level": "city", + "districts": [{ + "citycode": "0396", + "adcode": "411723", + "name": "平舆县", + "center": "114.618537,32.96344", + "level": "district", + "districts": [] + }, { + "citycode": "0396", + "adcode": "411702", + "name": "驿城区", + "center": "113.993753,32.97455", + "level": "district", + "districts": [] + }, { + "citycode": "0396", + "adcode": "411721", + "name": "西平县", + "center": "114.021492,33.387658", + "level": "district", + "districts": [] + }, { + "citycode": "0396", + "adcode": "411728", + "name": "遂平县", + "center": "114.013323,33.146316", + "level": "district", + "districts": [] + }, { + "citycode": "0396", + "adcode": "411722", + "name": "上蔡县", + "center": "114.264381,33.262439", + "level": "district", + "districts": [] + }, { + "citycode": "0396", + "adcode": "411727", + "name": "汝南县", + "center": "114.362477,33.006808", + "level": "district", + "districts": [] + }, { + "citycode": "0396", + "adcode": "411726", + "name": "泌阳县", + "center": "113.327144,32.723974", + "level": "district", + "districts": [] + }, { + "citycode": "0396", + "adcode": "411725", + "name": "确山县", + "center": "114.016818,32.82134", + "level": "district", + "districts": [] + }, { + "citycode": "0396", + "adcode": "411724", + "name": "正阳县", + "center": "114.392774,32.605697", + "level": "district", + "districts": [] + }, { + "citycode": "0396", + "adcode": "411729", + "name": "新蔡县", + "center": "114.965519,32.74488", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0375", + "adcode": "410400", + "name": "平顶山市", + "center": "113.192595,33.766554", + "level": "city", + "districts": [{ + "citycode": "0375", + "adcode": "410404", + "name": "石龙区", + "center": "112.898845,33.899247", + "level": "district", + "districts": [] + }, { + "citycode": "0375", + "adcode": "410421", + "name": "宝丰县", + "center": "113.054538,33.869159", + "level": "district", + "districts": [] + }, { + "citycode": "0375", + "adcode": "410425", + "name": "郏县", + "center": "113.21261,33.971787", + "level": "district", + "districts": [] + }, { + "citycode": "0375", + "adcode": "410403", + "name": "卫东区", + "center": "113.335316,33.735388", + "level": "district", + "districts": [] + }, { + "citycode": "0375", + "adcode": "410422", + "name": "叶县", + "center": "113.357476,33.627437", + "level": "district", + "districts": [] + }, { + "citycode": "0375", + "adcode": "410402", + "name": "新华区", + "center": "113.296956,33.736486", + "level": "district", + "districts": [] + }, { + "citycode": "0375", + "adcode": "410423", + "name": "鲁山县", + "center": "112.908052,33.738434", + "level": "district", + "districts": [] + }, { + "citycode": "0375", + "adcode": "410411", + "name": "湛河区", + "center": "113.3208727,33.72568115", + "level": "district", + "districts": [] + }, { + "citycode": "0375", + "adcode": "410482", + "name": "汝州市", + "center": "112.844696,34.16717", + "level": "district", + "districts": [] + }, { + "citycode": "0375", + "adcode": "410481", + "name": "舞钢市", + "center": "113.516427,33.314147", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "440000", + "name": "广东省", + "center": "113.266887,23.133306", + "level": "province", + "districts": [{ + "citycode": "0754", + "adcode": "440500", + "name": "汕头市", + "center": "116.681956,23.354152", + "level": "city", + "districts": [{ + "citycode": "0754", + "adcode": "440515", + "name": "澄海区", + "center": "116.755945,23.466314", + "level": "district", + "districts": [] + }, { + "citycode": "0754", + "adcode": "440512", + "name": "濠江区", + "center": "116.726701,23.286605", + "level": "district", + "districts": [] + }, { + "citycode": "0754", + "adcode": "440523", + "name": "南澳县", + "center": "117.023482,23.421658", + "level": "district", + "districts": [] + }, { + "citycode": "0754", + "adcode": "440507", + "name": "龙湖区", + "center": "116.716464,23.372211", + "level": "district", + "districts": [] + }, { + "citycode": "0754", + "adcode": "440511", + "name": "金平区", + "center": "116.70341,23.365716", + "level": "district", + "districts": [] + }, { + "citycode": "0754", + "adcode": "440513", + "name": "潮阳区", + "center": "116.601677,23.264923", + "level": "district", + "districts": [] + }, { + "citycode": "0754", + "adcode": "440514", + "name": "潮南区", + "center": "116.439105,23.239196", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0757", + "adcode": "440600", + "name": "佛山市", + "center": "113.121586,23.021351", + "level": "city", + "districts": [{ + "citycode": "0757", + "adcode": "440608", + "name": "高明区", + "center": "112.892573,22.900047", + "level": "district", + "districts": [] + }, { + "citycode": "0757", + "adcode": "440607", + "name": "三水区", + "center": "112.897271,23.156675", + "level": "district", + "districts": [] + }, { + "citycode": "0757", + "adcode": "440605", + "name": "南海区", + "center": "113.143246,23.028875", + "level": "district", + "districts": [] + }, { + "citycode": "0757", + "adcode": "440606", + "name": "顺德区", + "center": "113.293197,22.805413", + "level": "district", + "districts": [] + }, { + "citycode": "0757", + "adcode": "440604", + "name": "禅城区", + "center": "113.122532,23.009475", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0758", + "adcode": "441200", + "name": "肇庆市", + "center": "112.465245,23.047747", + "level": "city", + "districts": [{ + "citycode": "0758", + "adcode": "441225", + "name": "封开县", + "center": "111.512177,23.423928", + "level": "district", + "districts": [] + }, { + "citycode": "0758", + "adcode": "441226", + "name": "德庆县", + "center": "111.785544,23.145035", + "level": "district", + "districts": [] + }, { + "citycode": "0758", + "adcode": "441202", + "name": "端州区", + "center": "112.485577,23.051847", + "level": "district", + "districts": [] + }, { + "citycode": "0758", + "adcode": "441204", + "name": "高要区", + "center": "112.458055,23.02474", + "level": "district", + "districts": [] + }, { + "citycode": "0758", + "adcode": "441224", + "name": "怀集县", + "center": "112.166908,23.920806", + "level": "district", + "districts": [] + }, { + "citycode": "0758", + "adcode": "441203", + "name": "鼎湖区", + "center": "112.56738,23.159062", + "level": "district", + "districts": [] + }, { + "citycode": "0758", + "adcode": "441223", + "name": "广宁县", + "center": "112.440694,23.634808", + "level": "district", + "districts": [] + }, { + "citycode": "0758", + "adcode": "441284", + "name": "四会市", + "center": "112.734309,23.326991", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0752", + "adcode": "441300", + "name": "惠州市", + "center": "114.415587,23.112368", + "level": "city", + "districts": [{ + "citycode": "0752", + "adcode": "441323", + "name": "惠东县", + "center": "114.720136,22.984831", + "level": "district", + "districts": [] + }, { + "citycode": "0752", + "adcode": "441303", + "name": "惠阳区", + "center": "114.456107,22.789431", + "level": "district", + "districts": [] + }, { + "citycode": "0752", + "adcode": "441302", + "name": "惠城区", + "center": "114.382526,23.084657", + "level": "district", + "districts": [] + }, { + "citycode": "0752", + "adcode": "441324", + "name": "龙门县", + "center": "114.254898,23.727873", + "level": "district", + "districts": [] + }, { + "citycode": "0752", + "adcode": "441322", + "name": "博罗县", + "center": "114.289602,23.172587", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0755", + "adcode": "440300", + "name": "深圳市", + "center": "114.057939,22.543527", + "level": "city", + "districts": [{ + "citycode": "0755", + "adcode": "440306", + "name": "宝安区", + "center": "113.883831,22.554986", + "level": "district", + "districts": [] + }, { + "citycode": "0755", + "adcode": "440305", + "name": "南山区", + "center": "113.930478,22.533191", + "level": "district", + "districts": [] + }, { + "citycode": "0755", + "adcode": "440307", + "name": "龙岗区", + "center": "114.246884,22.720889", + "level": "district", + "districts": [] + }, { + "citycode": "0755", + "adcode": "440311", + "name": "光明区", + "center": "113.94733,22.744136", + "level": "district", + "districts": [] + }, { + "citycode": "0755", + "adcode": "440304", + "name": "福田区", + "center": "114.055198,22.520922", + "level": "district", + "districts": [] + }, { + "citycode": "0755", + "adcode": "440303", + "name": "罗湖区", + "center": "114.131611,22.548309", + "level": "district", + "districts": [] + }, { + "citycode": "0755", + "adcode": "440308", + "name": "盐田区", + "center": "114.236739,22.557001", + "level": "district", + "districts": [] + }, { + "citycode": "0755", + "adcode": "440310", + "name": "坪山区", + "center": "114.350844,22.708786", + "level": "district", + "districts": [] + }, { + "citycode": "0755", + "adcode": "440309", + "name": "龙华区", + "center": "114.04491,22.696735", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0756", + "adcode": "440400", + "name": "珠海市", + "center": "113.576892,22.271644", + "level": "city", + "districts": [{ + "citycode": "0756", + "adcode": "440402", + "name": "香洲区", + "center": "113.543372,22.265635", + "level": "district", + "districts": [] + }, { + "citycode": "0756", + "adcode": "440403", + "name": "斗门区", + "center": "113.296228,22.209134", + "level": "district", + "districts": [] + }, { + "citycode": "0756", + "adcode": "440404", + "name": "金湾区", + "center": "113.363224,22.146717", + "level": "district", + "districts": [] + }, { + "citycode": [], + "adcode": "440499", + "name": "澳门大学横琴校区(由澳门实施管辖)", + "center": "113.548956,22.126197", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0750", + "adcode": "440700", + "name": "江门市", + "center": "113.081548,22.578948", + "level": "city", + "districts": [{ + "citycode": "0750", + "adcode": "440781", + "name": "台山市", + "center": "112.793812,22.251947", + "level": "district", + "districts": [] + }, { + "citycode": "0750", + "adcode": "440704", + "name": "江海区", + "center": "113.111029,22.561301", + "level": "district", + "districts": [] + }, { + "citycode": "0750", + "adcode": "440785", + "name": "恩平市", + "center": "112.304904,22.183743", + "level": "district", + "districts": [] + }, { + "citycode": "0750", + "adcode": "440784", + "name": "鹤山市", + "center": "112.964203,22.765912", + "level": "district", + "districts": [] + }, { + "citycode": "0750", + "adcode": "440705", + "name": "新会区", + "center": "113.034454,22.458519", + "level": "district", + "districts": [] + }, { + "citycode": "0750", + "adcode": "440703", + "name": "蓬江区", + "center": "113.078914,22.595285", + "level": "district", + "districts": [] + }, { + "citycode": "0750", + "adcode": "440783", + "name": "开平市", + "center": "112.698113,22.377378", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0662", + "adcode": "441700", + "name": "阳江市", + "center": "111.98343,21.856853", + "level": "city", + "districts": [{ + "citycode": "0662", + "adcode": "441721", + "name": "阳西县", + "center": "111.617696,21.753935", + "level": "district", + "districts": [] + }, { + "citycode": "0662", + "adcode": "441702", + "name": "江城区", + "center": "111.95486,21.862451", + "level": "district", + "districts": [] + }, { + "citycode": "0662", + "adcode": "441704", + "name": "阳东区", + "center": "112.005586,21.869081", + "level": "district", + "districts": [] + }, { + "citycode": "0662", + "adcode": "441781", + "name": "阳春市", + "center": "111.791587,22.17041", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0668", + "adcode": "440900", + "name": "茂名市", + "center": "110.925533,21.662728", + "level": "city", + "districts": [{ + "citycode": "0668", + "adcode": "440982", + "name": "化州市", + "center": "110.639581,21.664483", + "level": "district", + "districts": [] + }, { + "citycode": "0668", + "adcode": "440904", + "name": "电白区", + "center": "111.013368,21.513946", + "level": "district", + "districts": [] + }, { + "citycode": "0668", + "adcode": "440981", + "name": "高州市", + "center": "110.85402,21.919654", + "level": "district", + "districts": [] + }, { + "citycode": "0668", + "adcode": "440983", + "name": "信宜市", + "center": "110.946866,22.354887", + "level": "district", + "districts": [] + }, { + "citycode": "0668", + "adcode": "440902", + "name": "茂南区", + "center": "110.918566,21.641661", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0759", + "adcode": "440800", + "name": "湛江市", + "center": "110.357538,21.270108", + "level": "city", + "districts": [{ + "citycode": "0759", + "adcode": "440883", + "name": "吴川市", + "center": "110.779361,21.440763", + "level": "district", + "districts": [] + }, { + "citycode": "0759", + "adcode": "440811", + "name": "麻章区", + "center": "110.333833,21.26437", + "level": "district", + "districts": [] + }, { + "citycode": "0759", + "adcode": "440825", + "name": "徐闻县", + "center": "110.17595,20.325969", + "level": "district", + "districts": [] + }, { + "citycode": "0759", + "adcode": "440804", + "name": "坡头区", + "center": "110.455192,21.244405", + "level": "district", + "districts": [] + }, { + "citycode": "0759", + "adcode": "440803", + "name": "霞山区", + "center": "110.397721,21.192463", + "level": "district", + "districts": [] + }, { + "citycode": "0759", + "adcode": "440882", + "name": "雷州市", + "center": "110.097011,20.914548", + "level": "district", + "districts": [] + }, { + "citycode": "0759", + "adcode": "440823", + "name": "遂溪县", + "center": "110.25043,21.378371", + "level": "district", + "districts": [] + }, { + "citycode": "0759", + "adcode": "440802", + "name": "赤坎区", + "center": "110.365592,21.265948", + "level": "district", + "districts": [] + }, { + "citycode": "0759", + "adcode": "440881", + "name": "廉江市", + "center": "110.286109,21.609988", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0660", + "adcode": "441500", + "name": "汕尾市", + "center": "115.375557,22.787204", + "level": "city", + "districts": [{ + "citycode": "0660", + "adcode": "441581", + "name": "陆丰市", + "center": "115.652142,22.91874", + "level": "district", + "districts": [] + }, { + "citycode": "0660", + "adcode": "441521", + "name": "海丰县", + "center": "115.322974,22.967212", + "level": "district", + "districts": [] + }, { + "citycode": "0660", + "adcode": "441502", + "name": "城区", + "center": "115.36522,22.779204", + "level": "district", + "districts": [] + }, { + "citycode": "0660", + "adcode": "441523", + "name": "陆河县", + "center": "115.659978,23.301557", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0768", + "adcode": "445100", + "name": "潮州市", + "center": "116.621901,23.657662", + "level": "city", + "districts": [{ + "citycode": "0768", + "adcode": "445122", + "name": "饶平县", + "center": "117.0045,23.663294", + "level": "district", + "districts": [] + }, { + "citycode": "0768", + "adcode": "445102", + "name": "湘桥区", + "center": "116.628343,23.675104", + "level": "district", + "districts": [] + }, { + "citycode": "0768", + "adcode": "445103", + "name": "潮安区", + "center": "116.676971,23.463598", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0663", + "adcode": "445200", + "name": "揭阳市", + "center": "116.372732,23.550968", + "level": "city", + "districts": [{ + "citycode": "0663", + "adcode": "445224", + "name": "惠来县", + "center": "116.295038,23.033889", + "level": "district", + "districts": [] + }, { + "citycode": "0663", + "adcode": "445222", + "name": "揭西县", + "center": "115.841742,23.431314", + "level": "district", + "districts": [] + }, { + "citycode": "0663", + "adcode": "445281", + "name": "普宁市", + "center": "116.165646,23.297742", + "level": "district", + "districts": [] + }, { + "citycode": "0663", + "adcode": "445202", + "name": "榕城区", + "center": "116.36714,23.525918", + "level": "district", + "districts": [] + }, { + "citycode": "0663", + "adcode": "445203", + "name": "揭东区", + "center": "116.411928,23.567252", + "level": "district", + "districts": [] + }] + }, { + "citycode": "020", + "adcode": "440100", + "name": "广州市", + "center": "113.264499,23.130061", + "level": "city", + "districts": [{ + "citycode": "020", + "adcode": "440105", + "name": "海珠区", + "center": "113.317412,23.084003", + "level": "district", + "districts": [] + }, { + "citycode": "020", + "adcode": "440117", + "name": "从化区", + "center": "113.586329,23.54915", + "level": "district", + "districts": [] + }, { + "citycode": "020", + "adcode": "440114", + "name": "花都区", + "center": "113.220125,23.404326", + "level": "district", + "districts": [] + }, { + "citycode": "020", + "adcode": "440106", + "name": "天河区", + "center": "113.361597,23.124817", + "level": "district", + "districts": [] + }, { + "citycode": "020", + "adcode": "440103", + "name": "荔湾区", + "center": "113.218998,23.107123", + "level": "district", + "districts": [] + }, { + "citycode": "020", + "adcode": "440104", + "name": "越秀区", + "center": "113.267065,23.128673", + "level": "district", + "districts": [] + }, { + "citycode": "020", + "adcode": "440113", + "name": "番禺区", + "center": "113.383917,22.93756", + "level": "district", + "districts": [] + }, { + "citycode": "020", + "adcode": "440111", + "name": "白云区", + "center": "113.2732,23.157159", + "level": "district", + "districts": [] + }, { + "citycode": "020", + "adcode": "440112", + "name": "黄埔区", + "center": "113.480613,23.181355", + "level": "district", + "districts": [] + }, { + "citycode": "020", + "adcode": "440118", + "name": "增城区", + "center": "113.810734,23.261452", + "level": "district", + "districts": [] + }, { + "citycode": "020", + "adcode": "440115", + "name": "南沙区", + "center": "113.525178,22.801435", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0753", + "adcode": "441400", + "name": "梅州市", + "center": "116.122046,24.288832", + "level": "city", + "districts": [{ + "citycode": "0753", + "adcode": "441427", + "name": "蕉岭县", + "center": "116.171477,24.658963", + "level": "district", + "districts": [] + }, { + "citycode": "0753", + "adcode": "441426", + "name": "平远县", + "center": "115.891235,24.566928", + "level": "district", + "districts": [] + }, { + "citycode": "0753", + "adcode": "441481", + "name": "兴宁市", + "center": "115.731133,24.137296", + "level": "district", + "districts": [] + }, { + "citycode": "0753", + "adcode": "441424", + "name": "五华县", + "center": "115.775751,23.932568", + "level": "district", + "districts": [] + }, { + "citycode": "0753", + "adcode": "441422", + "name": "大埔县", + "center": "116.694825,24.347037", + "level": "district", + "districts": [] + }, { + "citycode": "0753", + "adcode": "441403", + "name": "梅县区", + "center": "116.081395,24.266191", + "level": "district", + "districts": [] + }, { + "citycode": "0753", + "adcode": "441402", + "name": "梅江区", + "center": "116.116686,24.31065", + "level": "district", + "districts": [] + }, { + "citycode": "0753", + "adcode": "441423", + "name": "丰顺县", + "center": "116.181895,23.739364", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0763", + "adcode": "441800", + "name": "清远市", + "center": "113.056098,23.682064", + "level": "city", + "districts": [{ + "citycode": "0763", + "adcode": "441881", + "name": "英德市", + "center": "113.401827,24.20716", + "level": "district", + "districts": [] + }, { + "citycode": "0763", + "adcode": "441882", + "name": "连州市", + "center": "112.377255,24.780873", + "level": "district", + "districts": [] + }, { + "citycode": "0763", + "adcode": "441826", + "name": "连南瑶族自治县", + "center": "112.287212,24.725953", + "level": "district", + "districts": [] + }, { + "citycode": "0763", + "adcode": "441823", + "name": "阳山县", + "center": "112.641199,24.465234", + "level": "district", + "districts": [] + }, { + "citycode": "0763", + "adcode": "441821", + "name": "佛冈县", + "center": "113.531559,23.879455", + "level": "district", + "districts": [] + }, { + "citycode": "0763", + "adcode": "441825", + "name": "连山壮族瑶族自治县", + "center": "112.093726,24.570553", + "level": "district", + "districts": [] + }, { + "citycode": "0763", + "adcode": "441803", + "name": "清新区", + "center": "113.017747,23.734677", + "level": "district", + "districts": [] + }, { + "citycode": "0763", + "adcode": "441802", + "name": "清城区", + "center": "113.062612,23.697889", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "东莞市", + "center": "113.751884,23.021016", + "level": "city", + "districts": [{ + "citycode": "0769", + "adcode": "441900", + "name": "黄江镇", + "center": "114.000220,22.916267", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "清溪镇", + "center": "114.109028,22.864049", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "桥头镇", + "center": "114.065029,23.031536", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "洪梅镇", + "center": "113.606888,23.015507", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "高埗镇", + "center": "113.772920,23.100117", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "麻涌镇", + "center": "113.616702,23.088653", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "望牛墩镇", + "center": "113.675238,23.067562", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "道滘镇", + "center": "113.687246,23.004094", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "万江街道", + "center": "113.714249,23.004871", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "莞城街道", + "center": "113.756157,23.026359", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "企石镇", + "center": "113.989933,23.054588", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "东坑镇", + "center": "113.921005,22.989113", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "东城街道", + "center": "113.772060,22.941938", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "南城街道", + "center": "113.768809,22.941355", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "谢岗镇", + "center": "114.171775,22.984642", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "樟木头镇", + "center": "114.015449,22.869270", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "常平镇", + "center": "114.041069,23.007892", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "凤岗镇", + "center": "114.139781,22.777948", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "寮步镇", + "center": "113.917593,22.981271", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "沙田镇", + "center": "113.582201,22.942601", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "横沥镇", + "center": "114.030270,23.035086", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "石排镇", + "center": "113.989827,23.069114", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "茶山镇", + "center": "113.840966,23.092760", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "中堂镇", + "center": "113.612748,23.042585", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "厚街镇", + "center": "113.631616,22.934094", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "长安镇", + "center": "113.802243,22.838519", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "虎门镇", + "center": "113.631506,22.832134", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "石龙镇", + "center": "113.859745,23.087788", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "石碣镇", + "center": "113.772148,23.095617", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "大朗镇", + "center": "113.948398,22.866832", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "大岭山镇", + "center": "113.807913,22.948048", + "level": "street", + "districts": [] + }, { + "citycode": "0769", + "adcode": "441900", + "name": "塘厦镇", + "center": "114.052418,22.839736", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0751", + "adcode": "440200", + "name": "韶关市", + "center": "113.597324,24.810977", + "level": "city", + "districts": [{ + "citycode": "0751", + "adcode": "440224", + "name": "仁化县", + "center": "113.749175,25.085764", + "level": "district", + "districts": [] + }, { + "citycode": "0751", + "adcode": "440282", + "name": "南雄市", + "center": "114.31184,25.117653", + "level": "district", + "districts": [] + }, { + "citycode": "0751", + "adcode": "440222", + "name": "始兴县", + "center": "114.061998,24.953908", + "level": "district", + "districts": [] + }, { + "citycode": "0751", + "adcode": "440281", + "name": "乐昌市", + "center": "113.347669,25.129892", + "level": "district", + "districts": [] + }, { + "citycode": "0751", + "adcode": "440229", + "name": "翁源县", + "center": "114.129986,24.350581", + "level": "district", + "districts": [] + }, { + "citycode": "0751", + "adcode": "440233", + "name": "新丰县", + "center": "114.206641,24.059909", + "level": "district", + "districts": [] + }, { + "citycode": "0751", + "adcode": "440205", + "name": "曲江区", + "center": "113.604591,24.682826", + "level": "district", + "districts": [] + }, { + "citycode": "0751", + "adcode": "440204", + "name": "浈江区", + "center": "113.611077,24.804898", + "level": "district", + "districts": [] + }, { + "citycode": "0751", + "adcode": "440232", + "name": "乳源瑶族自治县", + "center": "113.275875,24.775856", + "level": "district", + "districts": [] + }, { + "citycode": "0751", + "adcode": "440203", + "name": "武江区", + "center": "113.58792,24.7929", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0762", + "adcode": "441600", + "name": "河源市", + "center": "114.700215,23.744276", + "level": "city", + "districts": [{ + "citycode": "0762", + "adcode": "441624", + "name": "和平县", + "center": "114.935634,24.469177", + "level": "district", + "districts": [] + }, { + "citycode": "0762", + "adcode": "441622", + "name": "龙川县", + "center": "115.26002,24.100599", + "level": "district", + "districts": [] + }, { + "citycode": "0762", + "adcode": "441602", + "name": "源城区", + "center": "114.703305,23.734055", + "level": "district", + "districts": [] + }, { + "citycode": "0762", + "adcode": "441621", + "name": "紫金县", + "center": "115.183814,23.635597", + "level": "district", + "districts": [] + }, { + "citycode": "0762", + "adcode": "441625", + "name": "东源县", + "center": "114.7466,23.790079", + "level": "district", + "districts": [] + }, { + "citycode": "0762", + "adcode": "441623", + "name": "连平县", + "center": "114.488358,24.369552", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0766", + "adcode": "445300", + "name": "云浮市", + "center": "112.044524,22.915163", + "level": "city", + "districts": [{ + "citycode": "0766", + "adcode": "445322", + "name": "郁南县", + "center": "111.535387,23.234561", + "level": "district", + "districts": [] + }, { + "citycode": "0766", + "adcode": "445381", + "name": "罗定市", + "center": "111.569788,22.768345", + "level": "district", + "districts": [] + }, { + "citycode": "0766", + "adcode": "445303", + "name": "云安区", + "center": "112.002947,23.070334", + "level": "district", + "districts": [] + }, { + "citycode": "0766", + "adcode": "445302", + "name": "云城区", + "center": "112.043945,22.92815", + "level": "district", + "districts": [] + }, { + "citycode": "0766", + "adcode": "445321", + "name": "新兴县", + "center": "112.225174,22.695915", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "中山市", + "center": "113.392517,22.517024", + "level": "city", + "districts": [{ + "citycode": "0760", + "adcode": "442000", + "name": "横栏镇", + "center": "113.223630,22.604755", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "港口镇", + "center": "113.354019,22.602694", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "阜沙镇", + "center": "113.340305,22.640609", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "三乡镇", + "center": "113.431869,22.387876", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "西区街道", + "center": "113.314421,22.564923", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "石岐街道", + "center": "113.404120,22.548351", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "小榄镇", + "center": "113.320629,22.560691", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "神湾镇", + "center": "113.376318,22.276818", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "大涌镇", + "center": "113.296691,22.483379", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "古镇镇", + "center": "113.221289,22.609652", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "沙溪镇", + "center": "113.343971,22.524791", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "东凤镇", + "center": "113.307919,22.680266", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "板芙镇", + "center": "113.368695,22.406764", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "南头镇", + "center": "113.299916,22.683684", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "坦洲镇", + "center": "113.454379,22.310301", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "三角镇", + "center": "113.400593,22.640197", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "黄圃镇", + "center": "113.359373,22.681261", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "东区街道", + "center": "113.436188,22.514086", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "民众街道", + "center": "113.472738,22.653889", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "南区街道", + "center": "113.367676,22.488858", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "五桂山街道", + "center": "113.476817,22.428448", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "中山港街道", + "center": "113.418677,22.549913", + "level": "street", + "districts": [] + }, { + "citycode": "0760", + "adcode": "442000", + "name": "南朗街道", + "center": "113.489502,22.524345", + "level": "street", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "150000", + "name": "内蒙古自治区", + "center": "111.765226,40.818233", + "level": "province", + "districts": [{ + "citycode": "0473", + "adcode": "150300", + "name": "乌海市", + "center": "106.79415,39.655048", + "level": "city", + "districts": [{ + "citycode": "0473", + "adcode": "150304", + "name": "乌达区", + "center": "106.726043,39.505609", + "level": "district", + "districts": [] + }, { + "citycode": "0473", + "adcode": "150302", + "name": "海勃湾区", + "center": "106.8228,39.690873", + "level": "district", + "districts": [] + }, { + "citycode": "0473", + "adcode": "150303", + "name": "海南区", + "center": "106.891472,39.441803", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0478", + "adcode": "150800", + "name": "巴彦淖尔市", + "center": "107.387767,40.742987", + "level": "city", + "districts": [{ + "citycode": "0478", + "adcode": "150824", + "name": "乌拉特中旗", + "center": "108.513653,41.58813", + "level": "district", + "districts": [] + }, { + "citycode": "0478", + "adcode": "150822", + "name": "磴口县", + "center": "107.008288,40.330534", + "level": "district", + "districts": [] + }, { + "citycode": "0478", + "adcode": "150825", + "name": "乌拉特后旗", + "center": "107.074748,41.08412", + "level": "district", + "districts": [] + }, { + "citycode": "0478", + "adcode": "150826", + "name": "杭锦后旗", + "center": "107.151296,40.886596", + "level": "district", + "districts": [] + }, { + "citycode": "0478", + "adcode": "150802", + "name": "临河区", + "center": "107.363536,40.750969", + "level": "district", + "districts": [] + }, { + "citycode": "0478", + "adcode": "150821", + "name": "五原县", + "center": "108.267466,41.088446", + "level": "district", + "districts": [] + }, { + "citycode": "0478", + "adcode": "150823", + "name": "乌拉特前旗", + "center": "108.652114,40.737018", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0472", + "adcode": "150200", + "name": "包头市", + "center": "109.95315,40.621327", + "level": "city", + "districts": [{ + "citycode": "0472", + "adcode": "150221", + "name": "土默特右旗", + "center": "110.527831,40.578253", + "level": "district", + "districts": [] + }, { + "citycode": "0472", + "adcode": "150223", + "name": "达尔罕茂明安联合旗", + "center": "110.432626,41.698992", + "level": "district", + "districts": [] + }, { + "citycode": "0472", + "adcode": "150206", + "name": "白云鄂博矿区", + "center": "109.973195,41.769956", + "level": "district", + "districts": [] + }, { + "citycode": "0472", + "adcode": "150222", + "name": "固阳县", + "center": "110.060055,41.034757", + "level": "district", + "districts": [] + }, { + "citycode": "0472", + "adcode": "150205", + "name": "石拐区", + "center": "110.060783,40.676736", + "level": "district", + "districts": [] + }, { + "citycode": "0472", + "adcode": "150202", + "name": "东河区", + "center": "110.044008,40.57626", + "level": "district", + "districts": [] + }, { + "citycode": "0472", + "adcode": "150204", + "name": "青山区", + "center": "109.902157,40.644081", + "level": "district", + "districts": [] + }, { + "citycode": "0472", + "adcode": "150203", + "name": "昆都仑区", + "center": "109.840249,40.658075", + "level": "district", + "districts": [] + }, { + "citycode": "0472", + "adcode": "150207", + "name": "九原区", + "center": "109.968082,40.611346", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0470", + "adcode": "150700", + "name": "呼伦贝尔市", + "center": "119.77845,49.166536", + "level": "city", + "districts": [{ + "citycode": "0470", + "adcode": "150702", + "name": "海拉尔区", + "center": "119.824542,49.234715", + "level": "district", + "districts": [] + }, { + "citycode": "0470", + "adcode": "150785", + "name": "根河市", + "center": "121.520165,50.779758", + "level": "district", + "districts": [] + }, { + "citycode": "0470", + "adcode": "150782", + "name": "牙克石市", + "center": "120.711639,49.285947", + "level": "district", + "districts": [] + }, { + "citycode": "0470", + "adcode": "150724", + "name": "鄂温克族自治旗", + "center": "119.755253,49.146692", + "level": "district", + "districts": [] + }, { + "citycode": "0470", + "adcode": "150721", + "name": "阿荣旗", + "center": "123.458943,48.126553", + "level": "district", + "districts": [] + }, { + "citycode": "0470", + "adcode": "150783", + "name": "扎兰屯市", + "center": "122.708475,48.028396", + "level": "district", + "districts": [] + }, { + "citycode": "0470", + "adcode": "150781", + "name": "满洲里市", + "center": "117.379134,49.59862", + "level": "district", + "districts": [] + }, { + "citycode": "0470", + "adcode": "150703", + "name": "扎赉诺尔区", + "center": "117.669939,49.511213", + "level": "district", + "districts": [] + }, { + "citycode": "0470", + "adcode": "150727", + "name": "新巴尔虎右旗", + "center": "116.8237,48.671865", + "level": "district", + "districts": [] + }, { + "citycode": "0470", + "adcode": "150723", + "name": "鄂伦春自治旗", + "center": "123.725643,50.591604", + "level": "district", + "districts": [] + }, { + "citycode": "0470", + "adcode": "150784", + "name": "额尔古纳市", + "center": "120.180506,50.243102", + "level": "district", + "districts": [] + }, { + "citycode": "0470", + "adcode": "150726", + "name": "新巴尔虎左旗", + "center": "118.269782,48.21827", + "level": "district", + "districts": [] + }, { + "citycode": "0470", + "adcode": "150722", + "name": "莫力达瓦达斡尔族自治旗", + "center": "124.519023,48.477728", + "level": "district", + "districts": [] + }, { + "citycode": "0470", + "adcode": "150725", + "name": "陈巴尔虎旗", + "center": "119.424026,49.328916", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0482", + "adcode": "152200", + "name": "兴安盟", + "center": "122.037796,46.082373", + "level": "city", + "districts": [{ + "citycode": "0482", + "adcode": "152202", + "name": "阿尔山市", + "center": "119.943577,47.17744", + "level": "district", + "districts": [] + }, { + "citycode": "0482", + "adcode": "152222", + "name": "科尔沁右翼中旗", + "center": "121.476357,45.060728", + "level": "district", + "districts": [] + }, { + "citycode": "0482", + "adcode": "152224", + "name": "突泉县", + "center": "121.593972,45.381918", + "level": "district", + "districts": [] + }, { + "citycode": "0482", + "adcode": "152223", + "name": "扎赉特旗", + "center": "122.899627,46.723154", + "level": "district", + "districts": [] + }, { + "citycode": "0482", + "adcode": "152221", + "name": "科尔沁右翼前旗", + "center": "121.952638,46.079664", + "level": "district", + "districts": [] + }, { + "citycode": "0482", + "adcode": "152201", + "name": "乌兰浩特市", + "center": "122.093309,46.072233", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0475", + "adcode": "150500", + "name": "通辽市", + "center": "122.243309,43.653566", + "level": "city", + "districts": [{ + "citycode": "0475", + "adcode": "150581", + "name": "霍林郭勒市", + "center": "119.681242,45.533598", + "level": "district", + "districts": [] + }, { + "citycode": "0475", + "adcode": "150523", + "name": "开鲁县", + "center": "121.319216,43.601446", + "level": "district", + "districts": [] + }, { + "citycode": "0475", + "adcode": "150525", + "name": "奈曼旗", + "center": "120.657813,42.867433", + "level": "district", + "districts": [] + }, { + "citycode": "0475", + "adcode": "150524", + "name": "库伦旗", + "center": "121.810629,42.735556", + "level": "district", + "districts": [] + }, { + "citycode": "0475", + "adcode": "150526", + "name": "扎鲁特旗", + "center": "120.917953,44.567093", + "level": "district", + "districts": [] + }, { + "citycode": "0475", + "adcode": "150521", + "name": "科尔沁左翼中旗", + "center": "123.312202,44.126606", + "level": "district", + "districts": [] + }, { + "citycode": "0475", + "adcode": "150522", + "name": "科尔沁左翼后旗", + "center": "122.35677,42.935105", + "level": "district", + "districts": [] + }, { + "citycode": "0475", + "adcode": "150502", + "name": "科尔沁区", + "center": "122.25545,43.623133", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0476", + "adcode": "150400", + "name": "赤峰市", + "center": "118.887613,42.256876", + "level": "city", + "districts": [{ + "citycode": "0476", + "adcode": "150422", + "name": "巴林左旗", + "center": "119.362832,43.961547", + "level": "district", + "districts": [] + }, { + "citycode": "0476", + "adcode": "150423", + "name": "巴林右旗", + "center": "118.664235,43.534171", + "level": "district", + "districts": [] + }, { + "citycode": "0476", + "adcode": "150424", + "name": "林西县", + "center": "118.05545,43.61812", + "level": "district", + "districts": [] + }, { + "citycode": "0476", + "adcode": "150430", + "name": "敖汉旗", + "center": "119.921413,42.290731", + "level": "district", + "districts": [] + }, { + "citycode": "0476", + "adcode": "150402", + "name": "红山区", + "center": "118.953989,42.296317", + "level": "district", + "districts": [] + }, { + "citycode": "0476", + "adcode": "150426", + "name": "翁牛特旗", + "center": "119.006187,42.936529", + "level": "district", + "districts": [] + }, { + "citycode": "0476", + "adcode": "150425", + "name": "克什克腾旗", + "center": "117.545413,43.265057", + "level": "district", + "districts": [] + }, { + "citycode": "0476", + "adcode": "150429", + "name": "宁城县", + "center": "119.320056,41.600193", + "level": "district", + "districts": [] + }, { + "citycode": "0476", + "adcode": "150421", + "name": "阿鲁科尔沁旗", + "center": "120.065533,43.872398", + "level": "district", + "districts": [] + }, { + "citycode": "0476", + "adcode": "150403", + "name": "元宝山区", + "center": "119.288475,42.039602", + "level": "district", + "districts": [] + }, { + "citycode": "0476", + "adcode": "150404", + "name": "松山区", + "center": "118.916156,42.299795", + "level": "district", + "districts": [] + }, { + "citycode": "0476", + "adcode": "150428", + "name": "喀喇沁旗", + "center": "118.701934,41.927103", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0479", + "adcode": "152500", + "name": "锡林郭勒盟", + "center": "116.047387,43.933212", + "level": "city", + "districts": [{ + "citycode": "0479", + "adcode": "152525", + "name": "东乌珠穆沁旗", + "center": "116.97526,45.497329", + "level": "district", + "districts": [] + }, { + "citycode": "0479", + "adcode": "152522", + "name": "阿巴嘎旗", + "center": "114.950185,44.022831", + "level": "district", + "districts": [] + }, { + "citycode": "0479", + "adcode": "152502", + "name": "锡林浩特市", + "center": "116.085814,43.933417", + "level": "district", + "districts": [] + }, { + "citycode": "0479", + "adcode": "152526", + "name": "西乌珠穆沁旗", + "center": "117.608668,44.587746", + "level": "district", + "districts": [] + }, { + "citycode": "0479", + "adcode": "152523", + "name": "苏尼特左旗", + "center": "113.667171,43.859718", + "level": "district", + "districts": [] + }, { + "citycode": "0479", + "adcode": "152501", + "name": "二连浩特市", + "center": "111.949594,43.64285", + "level": "district", + "districts": [] + }, { + "citycode": "0479", + "adcode": "152524", + "name": "苏尼特右旗", + "center": "112.641806,42.742417", + "level": "district", + "districts": [] + }, { + "citycode": "0479", + "adcode": "152530", + "name": "正蓝旗", + "center": "115.991648,42.241815", + "level": "district", + "districts": [] + }, { + "citycode": "0479", + "adcode": "152529", + "name": "正镶白旗", + "center": "115.029748,42.287493", + "level": "district", + "districts": [] + }, { + "citycode": "0479", + "adcode": "152528", + "name": "镶黄旗", + "center": "113.847287,42.232371", + "level": "district", + "districts": [] + }, { + "citycode": "0479", + "adcode": "152531", + "name": "多伦县", + "center": "116.485549,42.203454", + "level": "district", + "districts": [] + }, { + "citycode": "0479", + "adcode": "152527", + "name": "太仆寺旗", + "center": "115.283173,41.876889", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0474", + "adcode": "150900", + "name": "乌兰察布市", + "center": "113.132227,40.994526", + "level": "city", + "districts": [{ + "citycode": "0474", + "adcode": "150929", + "name": "四子王旗", + "center": "111.706663,41.533542", + "level": "district", + "districts": [] + }, { + "citycode": "0474", + "adcode": "150921", + "name": "卓资县", + "center": "112.577716,40.894618", + "level": "district", + "districts": [] + }, { + "citycode": "0474", + "adcode": "150928", + "name": "察哈尔右翼后旗", + "center": "113.191505,41.435937", + "level": "district", + "districts": [] + }, { + "citycode": "0474", + "adcode": "150923", + "name": "商都县", + "center": "113.577778,41.562176", + "level": "district", + "districts": [] + }, { + "citycode": "0474", + "adcode": "150927", + "name": "察哈尔右翼中旗", + "center": "112.635348,41.277449", + "level": "district", + "districts": [] + }, { + "citycode": "0474", + "adcode": "150922", + "name": "化德县", + "center": "114.01029,41.904123", + "level": "district", + "districts": [] + }, { + "citycode": "0474", + "adcode": "150902", + "name": "集宁区", + "center": "113.168973,41.000742", + "level": "district", + "districts": [] + }, { + "citycode": "0474", + "adcode": "150926", + "name": "察哈尔右翼前旗", + "center": "113.212409,40.783551", + "level": "district", + "districts": [] + }, { + "citycode": "0474", + "adcode": "150924", + "name": "兴和县", + "center": "113.834176,40.8723", + "level": "district", + "districts": [] + }, { + "citycode": "0474", + "adcode": "150981", + "name": "丰镇市", + "center": "113.109875,40.437022", + "level": "district", + "districts": [] + }, { + "citycode": "0474", + "adcode": "150925", + "name": "凉城县", + "center": "112.504243,40.532358", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0483", + "adcode": "152900", + "name": "阿拉善盟", + "center": "105.729135,38.851554", + "level": "city", + "districts": [{ + "citycode": "0483", + "adcode": "152923", + "name": "额济纳旗", + "center": "101.055861,41.953963", + "level": "district", + "districts": [] + }, { + "citycode": "0483", + "adcode": "152922", + "name": "阿拉善右旗", + "center": "101.666917,39.216185", + "level": "district", + "districts": [] + }, { + "citycode": "0483", + "adcode": "152921", + "name": "阿拉善左旗", + "center": "105.666208,38.833589", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0477", + "adcode": "150600", + "name": "鄂尔多斯市", + "center": "109.782473,39.608744", + "level": "city", + "districts": [{ + "citycode": "0477", + "adcode": "150625", + "name": "杭锦旗", + "center": "108.736011,39.833243", + "level": "district", + "districts": [] + }, { + "citycode": "0477", + "adcode": "150621", + "name": "达拉特旗", + "center": "110.034133,40.412766", + "level": "district", + "districts": [] + }, { + "citycode": "0477", + "adcode": "150624", + "name": "鄂托克旗", + "center": "107.975948,39.089549", + "level": "district", + "districts": [] + }, { + "citycode": "0477", + "adcode": "150623", + "name": "鄂托克前旗", + "center": "107.47733,38.182402", + "level": "district", + "districts": [] + }, { + "citycode": "0477", + "adcode": "150627", + "name": "伊金霍洛旗", + "center": "109.747435,39.565064", + "level": "district", + "districts": [] + }, { + "citycode": "0477", + "adcode": "150603", + "name": "康巴什区", + "center": "109.858586,39.60793", + "level": "district", + "districts": [] + }, { + "citycode": "0477", + "adcode": "150602", + "name": "东胜区", + "center": "109.963403,39.823066", + "level": "district", + "districts": [] + }, { + "citycode": "0477", + "adcode": "150622", + "name": "准格尔旗", + "center": "111.239436,39.864923", + "level": "district", + "districts": [] + }, { + "citycode": "0477", + "adcode": "150626", + "name": "乌审旗", + "center": "108.819485,38.60453", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0471", + "adcode": "150100", + "name": "呼和浩特市", + "center": "111.748814,40.842127", + "level": "city", + "districts": [{ + "citycode": "0471", + "adcode": "150103", + "name": "回民区", + "center": "111.623485,40.808906", + "level": "district", + "districts": [] + }, { + "citycode": "0471", + "adcode": "150125", + "name": "武川县", + "center": "111.451226,41.096511", + "level": "district", + "districts": [] + }, { + "citycode": "0471", + "adcode": "150122", + "name": "托克托县", + "center": "111.193879,40.277703", + "level": "district", + "districts": [] + }, { + "citycode": "0471", + "adcode": "150121", + "name": "土默特左旗", + "center": "111.16373,40.729044", + "level": "district", + "districts": [] + }, { + "citycode": "0471", + "adcode": "150102", + "name": "新城区", + "center": "111.665325,40.858271", + "level": "district", + "districts": [] + }, { + "citycode": "0471", + "adcode": "150123", + "name": "和林格尔县", + "center": "111.821695,40.379226", + "level": "district", + "districts": [] + }, { + "citycode": "0471", + "adcode": "150105", + "name": "赛罕区", + "center": "111.701166,40.792508", + "level": "district", + "districts": [] + }, { + "citycode": "0471", + "adcode": "150104", + "name": "玉泉区", + "center": "111.674157,40.753054", + "level": "district", + "districts": [] + }, { + "citycode": "0471", + "adcode": "150124", + "name": "清水河县", + "center": "111.647351,39.921224", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "230000", + "name": "黑龙江省", + "center": "126.661998,45.742253", + "level": "province", + "districts": [{ + "citycode": "0457", + "adcode": "232700", + "name": "大兴安岭地区", + "center": "124.11786,50.41129", + "level": "city", + "districts": [{ + "citycode": "0457", + "adcode": "232721", + "name": "呼玛县", + "center": "126.651856,51.725924", + "level": "district", + "districts": [] + }, { + "citycode": "0457", + "adcode": "232718", + "name": "加格达奇区", + "center": "124.139742,50.408822", + "level": "district", + "districts": [] + }, { + "citycode": "0457", + "adcode": "232701", + "name": "漠河市", + "center": "122.539313,52.972465", + "level": "district", + "districts": [] + }, { + "citycode": "0457", + "adcode": "232722", + "name": "塔河县", + "center": "124.709733,52.334512", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0464", + "adcode": "230900", + "name": "七台河市", + "center": "131.003015,45.771178", + "level": "city", + "districts": [{ + "citycode": "0464", + "adcode": "230921", + "name": "勃利县", + "center": "130.592009,45.755856", + "level": "district", + "districts": [] + }, { + "citycode": "0464", + "adcode": "230903", + "name": "桃山区", + "center": "131.020046,45.765733", + "level": "district", + "districts": [] + }, { + "citycode": "0464", + "adcode": "230902", + "name": "新兴区", + "center": "130.93226,45.816579", + "level": "district", + "districts": [] + }, { + "citycode": "0464", + "adcode": "230904", + "name": "茄子河区", + "center": "131.067545,45.785755", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0468", + "adcode": "230400", + "name": "鹤岗市", + "center": "130.297687,47.350659", + "level": "city", + "districts": [{ + "citycode": "0468", + "adcode": "230422", + "name": "绥滨县", + "center": "131.852863,47.289522", + "level": "district", + "districts": [] + }, { + "citycode": "0468", + "adcode": "230403", + "name": "工农区", + "center": "130.27472,47.318971", + "level": "district", + "districts": [] + }, { + "citycode": "0468", + "adcode": "230407", + "name": "兴山区", + "center": "130.303598,47.357698", + "level": "district", + "districts": [] + }, { + "citycode": "0468", + "adcode": "230405", + "name": "兴安区", + "center": "130.239289,47.252805", + "level": "district", + "districts": [] + }, { + "citycode": "0468", + "adcode": "230402", + "name": "向阳区", + "center": "130.294331,47.342478", + "level": "district", + "districts": [] + }, { + "citycode": "0468", + "adcode": "230404", + "name": "南山区", + "center": "130.285991,47.315121", + "level": "district", + "districts": [] + }, { + "citycode": "0468", + "adcode": "230421", + "name": "萝北县", + "center": "130.820566,47.578979", + "level": "district", + "districts": [] + }, { + "citycode": "0468", + "adcode": "230406", + "name": "东山区", + "center": "130.317151,47.338571", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0454", + "adcode": "230800", + "name": "佳木斯市", + "center": "130.318916,46.800002", + "level": "city", + "districts": [{ + "citycode": "0454", + "adcode": "230828", + "name": "汤原县", + "center": "129.904747,46.730623", + "level": "district", + "districts": [] + }, { + "citycode": "0454", + "adcode": "230822", + "name": "桦南县", + "center": "130.553472,46.239314", + "level": "district", + "districts": [] + }, { + "citycode": "0454", + "adcode": "230882", + "name": "富锦市", + "center": "132.037659,47.250144", + "level": "district", + "districts": [] + }, { + "citycode": "0454", + "adcode": "230881", + "name": "同江市", + "center": "132.510113,47.642475", + "level": "district", + "districts": [] + }, { + "citycode": "0454", + "adcode": "230883", + "name": "抚远市", + "center": "134.30786,48.365027", + "level": "district", + "districts": [] + }, { + "citycode": "0454", + "adcode": "230826", + "name": "桦川县", + "center": "130.71908,47.023001", + "level": "district", + "districts": [] + }, { + "citycode": "0454", + "adcode": "230804", + "name": "前进区", + "center": "130.375254,46.81405", + "level": "district", + "districts": [] + }, { + "citycode": "0454", + "adcode": "230805", + "name": "东风区", + "center": "130.403588,46.822609", + "level": "district", + "districts": [] + }, { + "citycode": "0454", + "adcode": "230803", + "name": "向阳区", + "center": "130.365263,46.807808", + "level": "district", + "districts": [] + }, { + "citycode": "0454", + "adcode": "230811", + "name": "郊区", + "center": "130.327182,46.809596", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0469", + "adcode": "230500", + "name": "双鸭山市", + "center": "131.141563,46.676157", + "level": "city", + "districts": [{ + "citycode": "0469", + "adcode": "230522", + "name": "友谊县", + "center": "131.807815,46.767299", + "level": "district", + "districts": [] + }, { + "citycode": "0469", + "adcode": "230502", + "name": "尖山区", + "center": "131.158372,46.646083", + "level": "district", + "districts": [] + }, { + "citycode": "0469", + "adcode": "230503", + "name": "岭东区", + "center": "131.165067,46.592663", + "level": "district", + "districts": [] + }, { + "citycode": "0469", + "adcode": "230506", + "name": "宝山区", + "center": "131.401589,46.577167", + "level": "district", + "districts": [] + }, { + "citycode": "0469", + "adcode": "230505", + "name": "四方台区", + "center": "131.337636,46.597143", + "level": "district", + "districts": [] + }, { + "citycode": "0469", + "adcode": "230521", + "name": "集贤县", + "center": "131.141452,46.728448", + "level": "district", + "districts": [] + }, { + "citycode": "0469", + "adcode": "230524", + "name": "饶河县", + "center": "134.014125,46.79726", + "level": "district", + "districts": [] + }, { + "citycode": "0469", + "adcode": "230523", + "name": "宝清县", + "center": "132.196907,46.327335", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0456", + "adcode": "231100", + "name": "黑河市", + "center": "127.528226,50.244887", + "level": "city", + "districts": [{ + "citycode": "0456", + "adcode": "231181", + "name": "北安市", + "center": "126.490989,48.241168", + "level": "district", + "districts": [] + }, { + "citycode": "0456", + "adcode": "231123", + "name": "逊克县", + "center": "128.478698,49.56429", + "level": "district", + "districts": [] + }, { + "citycode": "0456", + "adcode": "231182", + "name": "五大连池市", + "center": "126.205446,48.517342", + "level": "district", + "districts": [] + }, { + "citycode": "0456", + "adcode": "231183", + "name": "嫩江市", + "center": "125.221192,49.185766", + "level": "district", + "districts": [] + }, { + "citycode": "0456", + "adcode": "231124", + "name": "孙吴县", + "center": "127.336163,49.425645", + "level": "district", + "districts": [] + }, { + "citycode": "0456", + "adcode": "231102", + "name": "爱辉区", + "center": "127.500703,50.252361", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0453", + "adcode": "231000", + "name": "牡丹江市", + "center": "129.632928,44.551486", + "level": "city", + "districts": [{ + "citycode": "0453", + "adcode": "231004", + "name": "爱民区", + "center": "129.591227,44.595897", + "level": "district", + "districts": [] + }, { + "citycode": "0453", + "adcode": "231002", + "name": "东安区", + "center": "129.626651,44.58125", + "level": "district", + "districts": [] + }, { + "citycode": "0453", + "adcode": "231081", + "name": "绥芬河市", + "center": "131.151805,44.412487", + "level": "district", + "districts": [] + }, { + "citycode": "0453", + "adcode": "231086", + "name": "东宁市", + "center": "131.124839,44.090361", + "level": "district", + "districts": [] + }, { + "citycode": "0453", + "adcode": "231084", + "name": "宁安市", + "center": "129.482505,44.340617", + "level": "district", + "districts": [] + }, { + "citycode": "0453", + "adcode": "231005", + "name": "西安区", + "center": "129.616021,44.577611", + "level": "district", + "districts": [] + }, { + "citycode": "0453", + "adcode": "231083", + "name": "海林市", + "center": "129.380756,44.594017", + "level": "district", + "districts": [] + }, { + "citycode": "0453", + "adcode": "231085", + "name": "穆棱市", + "center": "130.52446,44.918842", + "level": "district", + "districts": [] + }, { + "citycode": "0453", + "adcode": "231003", + "name": "阳明区", + "center": "129.635836,44.595851", + "level": "district", + "districts": [] + }, { + "citycode": "0453", + "adcode": "231025", + "name": "林口县", + "center": "130.282286,45.279754", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0458", + "adcode": "230700", + "name": "伊春市", + "center": "128.840863,47.728332", + "level": "city", + "districts": [{ + "citycode": "0458", + "adcode": "230722", + "name": "嘉荫县", + "center": "130.402406,48.888613", + "level": "district", + "districts": [] + }, { + "citycode": "0458", + "adcode": "230724", + "name": "丰林县", + "center": "129.533661,48.290566", + "level": "district", + "districts": [] + }, { + "citycode": "0458", + "adcode": "230723", + "name": "汤旺县", + "center": "129.570935,48.454639", + "level": "district", + "districts": [] + }, { + "citycode": "0458", + "adcode": "230719", + "name": "友好区", + "center": "128.836341,47.840801", + "level": "district", + "districts": [] + }, { + "citycode": "0458", + "adcode": "230751", + "name": "金林区", + "center": "129.428839,47.413019", + "level": "district", + "districts": [] + }, { + "citycode": "0458", + "adcode": "230726", + "name": "南岔县", + "center": "129.283584,47.139009", + "level": "district", + "districts": [] + }, { + "citycode": "0458", + "adcode": "230725", + "name": "大箐山县", + "center": "129.020519,47.028313", + "level": "district", + "districts": [] + }, { + "citycode": "0458", + "adcode": "230781", + "name": "铁力市", + "center": "128.032554,46.986604", + "level": "district", + "districts": [] + }, { + "citycode": "0458", + "adcode": "230718", + "name": "乌翠区", + "center": "128.68003,47.729319", + "level": "district", + "districts": [] + }, { + "citycode": "0458", + "adcode": "230717", + "name": "伊美区", + "center": "128.907156,47.728257", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0467", + "adcode": "230300", + "name": "鸡西市", + "center": "130.969385,45.295087", + "level": "city", + "districts": [{ + "citycode": "0467", + "adcode": "230304", + "name": "滴道区", + "center": "130.844193,45.349068", + "level": "district", + "districts": [] + }, { + "citycode": "0467", + "adcode": "230307", + "name": "麻山区", + "center": "130.477691,45.211863", + "level": "district", + "districts": [] + }, { + "citycode": "0467", + "adcode": "230302", + "name": "鸡冠区", + "center": "130.981342,45.303892", + "level": "district", + "districts": [] + }, { + "citycode": "0467", + "adcode": "230303", + "name": "恒山区", + "center": "130.90466,45.21119", + "level": "district", + "districts": [] + }, { + "citycode": "0467", + "adcode": "230305", + "name": "梨树区", + "center": "130.69699,45.092046", + "level": "district", + "districts": [] + }, { + "citycode": "0467", + "adcode": "230381", + "name": "虎林市", + "center": "132.937002,45.763262", + "level": "district", + "districts": [] + }, { + "citycode": "0467", + "adcode": "230382", + "name": "密山市", + "center": "131.846824,45.529482", + "level": "district", + "districts": [] + }, { + "citycode": "0467", + "adcode": "230306", + "name": "城子河区", + "center": "131.011504,45.338342", + "level": "district", + "districts": [] + }, { + "citycode": "0467", + "adcode": "230321", + "name": "鸡东县", + "center": "131.124083,45.260413", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0452", + "adcode": "230200", + "name": "齐齐哈尔市", + "center": "123.918193,47.354892", + "level": "city", + "districts": [{ + "citycode": "0452", + "adcode": "230229", + "name": "克山县", + "center": "125.875103,48.037748", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230225", + "name": "甘南县", + "center": "123.507935,47.921698", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230230", + "name": "克东县", + "center": "126.249124,48.041562", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230223", + "name": "依安县", + "center": "125.306161,47.893442", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230227", + "name": "富裕县", + "center": "124.474411,47.774038", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230208", + "name": "梅里斯达斡尔族区", + "center": "123.752482,47.309755", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230221", + "name": "龙江县", + "center": "123.204953,47.338512", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230207", + "name": "碾子山区", + "center": "122.887548,47.516614", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230206", + "name": "富拉尔基区", + "center": "123.628926,47.20873", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230202", + "name": "龙沙区", + "center": "123.958447,47.317103", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230205", + "name": "昂昂溪区", + "center": "123.822137,47.154806", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230224", + "name": "泰来县", + "center": "123.416631,46.393694", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230231", + "name": "拜泉县", + "center": "126.09905,47.59586", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230203", + "name": "建华区", + "center": "123.95555,47.354212", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230204", + "name": "铁锋区", + "center": "123.978079,47.340719", + "level": "district", + "districts": [] + }, { + "citycode": "0452", + "adcode": "230281", + "name": "讷河市", + "center": "124.88293,48.466829", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0455", + "adcode": "231200", + "name": "绥化市", + "center": "126.968714,46.654147", + "level": "city", + "districts": [{ + "citycode": "0455", + "adcode": "231226", + "name": "绥棱县", + "center": "127.114928,47.235814", + "level": "district", + "districts": [] + }, { + "citycode": "0455", + "adcode": "231283", + "name": "海伦市", + "center": "126.930191,47.450661", + "level": "district", + "districts": [] + }, { + "citycode": "0455", + "adcode": "231224", + "name": "庆安县", + "center": "127.505861,46.864084", + "level": "district", + "districts": [] + }, { + "citycode": "0455", + "adcode": "231202", + "name": "北林区", + "center": "126.984995,46.638114", + "level": "district", + "districts": [] + }, { + "citycode": "0455", + "adcode": "231221", + "name": "望奎县", + "center": "126.486333,46.832185", + "level": "district", + "districts": [] + }, { + "citycode": "0455", + "adcode": "231223", + "name": "青冈县", + "center": "126.099314,46.70398", + "level": "district", + "districts": [] + }, { + "citycode": "0455", + "adcode": "231225", + "name": "明水县", + "center": "125.90601,47.173649", + "level": "district", + "districts": [] + }, { + "citycode": "0455", + "adcode": "231222", + "name": "兰西县", + "center": "126.287734,46.252966", + "level": "district", + "districts": [] + }, { + "citycode": "0455", + "adcode": "231282", + "name": "肇东市", + "center": "125.962419,46.050664", + "level": "district", + "districts": [] + }, { + "citycode": "0455", + "adcode": "231281", + "name": "安达市", + "center": "125.307629,46.451882", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0459", + "adcode": "230600", + "name": "大庆市", + "center": "125.104078,46.589498", + "level": "city", + "districts": [{ + "citycode": "0459", + "adcode": "230605", + "name": "红岗区", + "center": "124.891041,46.398567", + "level": "district", + "districts": [] + }, { + "citycode": "0459", + "adcode": "230606", + "name": "大同区", + "center": "124.812221,46.039972", + "level": "district", + "districts": [] + }, { + "citycode": "0459", + "adcode": "230623", + "name": "林甸县", + "center": "124.863628,47.171677", + "level": "district", + "districts": [] + }, { + "citycode": "0459", + "adcode": "230604", + "name": "让胡路区", + "center": "124.889858,46.642567", + "level": "district", + "districts": [] + }, { + "citycode": "0459", + "adcode": "230624", + "name": "杜尔伯特蒙古族自治县", + "center": "124.442829,46.862348", + "level": "district", + "districts": [] + }, { + "citycode": "0459", + "adcode": "230602", + "name": "萨尔图区", + "center": "125.135269,46.629281", + "level": "district", + "districts": [] + }, { + "citycode": "0459", + "adcode": "230603", + "name": "龙凤区", + "center": "125.135093,46.562369", + "level": "district", + "districts": [] + }, { + "citycode": "0459", + "adcode": "230621", + "name": "肇州县", + "center": "125.268449,45.699543", + "level": "district", + "districts": [] + }, { + "citycode": "0459", + "adcode": "230622", + "name": "肇源县", + "center": "125.078311,45.518982", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0451", + "adcode": "230100", + "name": "哈尔滨市", + "center": "126.53505,45.802981", + "level": "city", + "districts": [{ + "citycode": "0451", + "adcode": "230126", + "name": "巴彦县", + "center": "127.403521,46.086182", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230123", + "name": "依兰县", + "center": "129.567777,46.325536", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230128", + "name": "通河县", + "center": "128.74629,45.990214", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230127", + "name": "木兰县", + "center": "128.043194,45.950649", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230124", + "name": "方正县", + "center": "128.829513,45.851673", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230125", + "name": "宾县", + "center": "127.466372,45.746313", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230129", + "name": "延寿县", + "center": "128.311071,45.445956", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230183", + "name": "尚志市", + "center": "128.009218,45.209199", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230111", + "name": "呼兰区", + "center": "126.587704,45.889557", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230109", + "name": "松北区", + "center": "126.516602,45.794991", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230113", + "name": "双城区", + "center": "126.31279,45.382873", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230102", + "name": "道里区", + "center": "126.616912,45.755832", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230108", + "name": "平房区", + "center": "126.63675,45.597529", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230104", + "name": "道外区", + "center": "126.649094,45.792351", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230112", + "name": "阿城区", + "center": "126.957984,45.548671", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230110", + "name": "香坊区", + "center": "126.662959,45.707871", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230103", + "name": "南岗区", + "center": "126.66882,45.759967", + "level": "district", + "districts": [] + }, { + "citycode": "0451", + "adcode": "230184", + "name": "五常市", + "center": "127.167501,44.932164", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "650000", + "name": "新疆维吾尔自治区", + "center": "87.628579,43.793301", + "level": "province", + "districts": [{ + "citycode": "1906", + "adcode": "659005", + "name": "北屯市", + "center": "87.834419,47.326733", + "level": "city", + "districts": [{ + "citycode": "1906", + "adcode": "659005", + "name": "海川镇", + "center": "87.518571,47.409865", + "level": "street", + "districts": [] + }, { + "citycode": "1906", + "adcode": "659005", + "name": "丰庆镇", + "center": "87.927121,47.333864", + "level": "street", + "districts": [] + }, { + "citycode": "1906", + "adcode": "659005", + "name": "双渠镇", + "center": "88.122468,47.126579", + "level": "street", + "districts": [] + }, { + "citycode": "1906", + "adcode": "659005", + "name": "北屯镇", + "center": "87.871109,47.357426", + "level": "street", + "districts": [] + }] + }, { + "citycode": "1909", + "adcode": "659007", + "name": "双河市", + "center": "82.35365587,44.84052409", + "level": "city", + "districts": [{ + "citycode": "1909", + "adcode": "659007", + "name": "兵团八十九团", + "center": "82.455805,44.812134", + "level": "street", + "districts": [] + }, { + "citycode": "1909", + "adcode": "659007", + "name": "博河镇", + "center": "82.158974,44.796350", + "level": "street", + "districts": [] + }, { + "citycode": "1909", + "adcode": "659007", + "name": "双桥镇", + "center": "82.490803,44.746864", + "level": "street", + "districts": [] + }, { + "citycode": "1909", + "adcode": "659007", + "name": "石峪镇", + "center": "82.066675,45.040830", + "level": "street", + "districts": [] + }, { + "citycode": "1909", + "adcode": "659007", + "name": "双乐镇", + "center": "82.473143,44.826624", + "level": "street", + "districts": [] + }] + }, { + "citycode": "1996", + "adcode": "659006", + "name": "铁门关市", + "center": "85.670291,41.862997", + "level": "city", + "districts": [{ + "citycode": "1996", + "adcode": "659006", + "name": "米兰镇", + "center": "89.003715,39.332614", + "level": "street", + "districts": [] + }, { + "citycode": "1996", + "adcode": "659006", + "name": "南屯镇", + "center": "84.116298,37.768112", + "level": "street", + "districts": [] + }, { + "citycode": "1996", + "adcode": "659006", + "name": "天湖镇", + "center": "86.524925,42.010663", + "level": "street", + "districts": [] + }, { + "citycode": "1996", + "adcode": "659006", + "name": "开泽镇", + "center": "86.632672,42.311192", + "level": "street", + "districts": [] + }, { + "citycode": "1996", + "adcode": "659006", + "name": "高桥镇", + "center": "87.057052,42.213140", + "level": "street", + "districts": [] + }, { + "citycode": "1996", + "adcode": "659006", + "name": "博古其镇", + "center": "85.584894,41.882542", + "level": "street", + "districts": [] + }, { + "citycode": "1996", + "adcode": "659006", + "name": "双丰镇", + "center": "85.635217,41.880304", + "level": "street", + "districts": [] + }, { + "citycode": "1996", + "adcode": "659006", + "name": "河畔镇", + "center": "86.605010,42.167593", + "level": "street", + "districts": [] + }, { + "citycode": "1996", + "adcode": "659006", + "name": "金山镇", + "center": "85.322762,38.186220", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0909", + "adcode": "652700", + "name": "博尔塔拉蒙古自治州", + "center": "82.066363,44.906039", + "level": "city", + "districts": [{ + "citycode": "0909", + "adcode": "652723", + "name": "温泉县", + "center": "81.024827,44.968857", + "level": "district", + "districts": [] + }, { + "citycode": "0909", + "adcode": "652702", + "name": "阿拉山口市", + "center": "82.554609,45.173274", + "level": "district", + "districts": [] + }, { + "citycode": "0909", + "adcode": "652701", + "name": "博乐市", + "center": "82.051433,44.853882", + "level": "district", + "districts": [] + }, { + "citycode": "0909", + "adcode": "652722", + "name": "精河县", + "center": "82.890709,44.599202", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1999", + "adcode": "659008", + "name": "可克达拉市", + "center": "80.994153,43.940381", + "level": "city", + "districts": [{ + "citycode": "1999", + "adcode": "659008", + "name": "长丰镇", + "center": "80.990266,43.889725", + "level": "street", + "districts": [] + }, { + "citycode": "1999", + "adcode": "659008", + "name": "金屯镇", + "center": "80.606773,43.765174", + "level": "street", + "districts": [] + }, { + "citycode": "1999", + "adcode": "659008", + "name": "都拉塔口岸", + "center": "80.661467,43.706479", + "level": "street", + "districts": [] + }, { + "citycode": "1999", + "adcode": "659008", + "name": "榆树庄镇", + "center": "80.484243,43.931223", + "level": "street", + "districts": [] + }, { + "citycode": "1999", + "adcode": "659008", + "name": "苇湖镇", + "center": "80.648370,44.180308", + "level": "street", + "districts": [] + }, { + "citycode": "1999", + "adcode": "659008", + "name": "金梁镇", + "center": "81.021339,43.908278", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0901", + "adcode": "654200", + "name": "塔城地区", + "center": "82.980316,46.745364", + "level": "city", + "districts": [{ + "citycode": "0901", + "adcode": "654224", + "name": "托里县", + "center": "83.606372,45.948935", + "level": "district", + "districts": [] + }, { + "citycode": "0901", + "adcode": "654226", + "name": "和布克赛尔蒙古自治县", + "center": "85.728328,46.793235", + "level": "district", + "districts": [] + }, { + "citycode": "0901", + "adcode": "654221", + "name": "额敏县", + "center": "83.628303,46.524673", + "level": "district", + "districts": [] + }, { + "citycode": "0901", + "adcode": "654202", + "name": "乌苏市", + "center": "84.713762,44.418693", + "level": "district", + "districts": [] + }, { + "citycode": "0901", + "adcode": "654203", + "name": "沙湾市", + "center": "85.619483,44.326267", + "level": "district", + "districts": [] + }, { + "citycode": "0901", + "adcode": "654225", + "name": "裕民县", + "center": "82.982252,46.201049", + "level": "district", + "districts": [] + }, { + "citycode": "0901", + "adcode": "654201", + "name": "塔城市", + "center": "82.986923,46.751669", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1903", + "adcode": "659009", + "name": "昆玉市", + "center": "79.270193,37.215372", + "level": "city", + "districts": [{ + "citycode": "1903", + "adcode": "659009", + "name": "老兵镇", + "center": "79.603916,37.366638", + "level": "street", + "districts": [] + }, { + "citycode": "1903", + "adcode": "659009", + "name": "昆牧镇", + "center": "81.029494,36.315217", + "level": "street", + "districts": [] + }, { + "citycode": "1903", + "adcode": "659009", + "name": "昆泉镇", + "center": "78.514768,37.566112", + "level": "street", + "districts": [] + }, { + "citycode": "1903", + "adcode": "659009", + "name": "兵团二二四团", + "center": "79.377194,37.416433", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0903", + "adcode": "653200", + "name": "和田地区", + "center": "79.921646,37.114406", + "level": "city", + "districts": [{ + "citycode": "0903", + "adcode": "653226", + "name": "于田县", + "center": "81.677417,36.85708", + "level": "district", + "districts": [] + }, { + "citycode": "0903", + "adcode": "653227", + "name": "民丰县", + "center": "82.695946,37.064428", + "level": "district", + "districts": [] + }, { + "citycode": "0903", + "adcode": "653201", + "name": "和田市", + "center": "79.912881,37.112246", + "level": "district", + "districts": [] + }, { + "citycode": "0903", + "adcode": "653224", + "name": "洛浦县", + "center": "80.179911,37.066226", + "level": "district", + "districts": [] + }, { + "citycode": "0903", + "adcode": "653223", + "name": "皮山县", + "center": "78.28548,37.578264", + "level": "district", + "districts": [] + }, { + "citycode": "0903", + "adcode": "653222", + "name": "墨玉县", + "center": "79.728434,37.277518", + "level": "district", + "districts": [] + }, { + "citycode": "0903", + "adcode": "653225", + "name": "策勒县", + "center": "80.801433,36.99785", + "level": "district", + "districts": [] + }, { + "citycode": "0903", + "adcode": "653221", + "name": "和田县", + "center": "79.848009,37.248776", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0906", + "adcode": "654300", + "name": "阿勒泰地区", + "center": "88.141253,47.844924", + "level": "city", + "districts": [{ + "citycode": "0906", + "adcode": "654321", + "name": "布尔津县", + "center": "86.875043,47.701892", + "level": "district", + "districts": [] + }, { + "citycode": "0906", + "adcode": "654324", + "name": "哈巴河县", + "center": "86.418621,48.060846", + "level": "district", + "districts": [] + }, { + "citycode": "0906", + "adcode": "654322", + "name": "富蕴县", + "center": "89.525463,46.994046", + "level": "district", + "districts": [] + }, { + "citycode": "0906", + "adcode": "654326", + "name": "吉木乃县", + "center": "85.874096,47.443101", + "level": "district", + "districts": [] + }, { + "citycode": "0906", + "adcode": "654325", + "name": "青河县", + "center": "90.375159,46.678532", + "level": "district", + "districts": [] + }, { + "citycode": "0906", + "adcode": "654323", + "name": "福海县", + "center": "87.486703,47.111918", + "level": "district", + "districts": [] + }, { + "citycode": "0906", + "adcode": "654301", + "name": "阿勒泰市", + "center": "88.131842,47.827308", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0993", + "adcode": "659001", + "name": "石河子市", + "center": "86.080397,44.305368", + "level": "city", + "districts": [{ + "citycode": "0993", + "adcode": "659001", + "name": "兵团一五二团", + "center": "86.070393,44.282700", + "level": "street", + "districts": [] + }, { + "citycode": "0993", + "adcode": "659001", + "name": "向阳街道", + "center": "86.039719,44.342873", + "level": "street", + "districts": [] + }, { + "citycode": "0993", + "adcode": "659001", + "name": "红山街道", + "center": "86.048043,44.268209", + "level": "street", + "districts": [] + }, { + "citycode": "0993", + "adcode": "659001", + "name": "兵团一四四团", + "center": "85.912346,44.252475", + "level": "street", + "districts": [] + }, { + "citycode": "0993", + "adcode": "659001", + "name": "东城街道", + "center": "86.068708,44.287316", + "level": "street", + "districts": [] + }, { + "citycode": "0993", + "adcode": "659001", + "name": "石河子镇", + "center": "86.102202,44.135229", + "level": "street", + "districts": [] + }, { + "citycode": "0993", + "adcode": "659001", + "name": "老街街道", + "center": "85.990921,44.349559", + "level": "street", + "districts": [] + }, { + "citycode": "0993", + "adcode": "659001", + "name": "新城街道", + "center": "85.982288,44.289311", + "level": "street", + "districts": [] + }, { + "citycode": "0993", + "adcode": "659001", + "name": "北泉镇", + "center": "86.098308,44.434587", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0994", + "adcode": "652300", + "name": "昌吉回族自治州", + "center": "87.308995,44.011044", + "level": "city", + "districts": [{ + "citycode": "0994", + "adcode": "652325", + "name": "奇台县", + "center": "89.593879,44.022001", + "level": "district", + "districts": [] + }, { + "citycode": "0994", + "adcode": "652324", + "name": "玛纳斯县", + "center": "86.20488,44.284601", + "level": "district", + "districts": [] + }, { + "citycode": "0994", + "adcode": "652323", + "name": "呼图壁县", + "center": "86.871532,44.179362", + "level": "district", + "districts": [] + }, { + "citycode": "0994", + "adcode": "652328", + "name": "木垒哈萨克自治县", + "center": "90.286013,43.834631", + "level": "district", + "districts": [] + }, { + "citycode": "0994", + "adcode": "652302", + "name": "阜康市", + "center": "87.953826,44.164525", + "level": "district", + "districts": [] + }, { + "citycode": "0994", + "adcode": "652327", + "name": "吉木萨尔县", + "center": "89.179698,44.000404", + "level": "district", + "districts": [] + }, { + "citycode": "0994", + "adcode": "652301", + "name": "昌吉市", + "center": "87.267432,44.014468", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0996", + "adcode": "652800", + "name": "巴音郭楞蒙古自治州", + "center": "86.145298,41.764115", + "level": "city", + "districts": [{ + "citycode": "0996", + "adcode": "652801", + "name": "库尔勒市", + "center": "86.174633,41.725891", + "level": "district", + "districts": [] + }, { + "citycode": "0996", + "adcode": "652822", + "name": "轮台县", + "center": "84.251508,41.778043", + "level": "district", + "districts": [] + }, { + "citycode": "0996", + "adcode": "652823", + "name": "尉犁县", + "center": "86.261613,41.343871", + "level": "district", + "districts": [] + }, { + "citycode": "0996", + "adcode": "652825", + "name": "且末县", + "center": "85.529619,38.145749", + "level": "district", + "districts": [] + }, { + "citycode": "0996", + "adcode": "652827", + "name": "和静县", + "center": "86.384065,42.323625", + "level": "district", + "districts": [] + }, { + "citycode": "0996", + "adcode": "652826", + "name": "焉耆回族自治县", + "center": "86.57434,42.059509", + "level": "district", + "districts": [] + }, { + "citycode": "0996", + "adcode": "652824", + "name": "若羌县", + "center": "88.167226,39.022626", + "level": "district", + "districts": [] + }, { + "citycode": "0996", + "adcode": "652829", + "name": "博湖县", + "center": "86.632116,41.980745", + "level": "district", + "districts": [] + }, { + "citycode": "0996", + "adcode": "652828", + "name": "和硕县", + "center": "86.877688,42.28361", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0999", + "adcode": "654000", + "name": "伊犁哈萨克自治州", + "center": "81.323691,43.917106", + "level": "city", + "districts": [{ + "citycode": "0999", + "adcode": "654021", + "name": "伊宁县", + "center": "81.52745,43.977119", + "level": "district", + "districts": [] + }, { + "citycode": "0999", + "adcode": "654024", + "name": "巩留县", + "center": "82.231219,43.48313", + "level": "district", + "districts": [] + }, { + "citycode": "0999", + "adcode": "654027", + "name": "特克斯县", + "center": "81.835732,43.218435", + "level": "district", + "districts": [] + }, { + "citycode": "0999", + "adcode": "654026", + "name": "昭苏县", + "center": "81.130974,43.157293", + "level": "district", + "districts": [] + }, { + "citycode": "0999", + "adcode": "654023", + "name": "霍城县", + "center": "80.878845,44.056329", + "level": "district", + "districts": [] + }, { + "citycode": "0999", + "adcode": "654022", + "name": "察布查尔锡伯自治县", + "center": "81.151337,43.840726", + "level": "district", + "districts": [] + }, { + "citycode": "0999", + "adcode": "654004", + "name": "霍尔果斯市", + "center": "80.414614,44.218381", + "level": "district", + "districts": [] + }, { + "citycode": "0999", + "adcode": "654002", + "name": "伊宁市", + "center": "81.277715,43.908021", + "level": "district", + "districts": [] + }, { + "citycode": "0999", + "adcode": "654003", + "name": "奎屯市", + "center": "84.903216,44.426452", + "level": "district", + "districts": [] + }, { + "citycode": "0999", + "adcode": "654028", + "name": "尼勒克县", + "center": "82.511884,43.798627", + "level": "district", + "districts": [] + }, { + "citycode": "0999", + "adcode": "654025", + "name": "新源县", + "center": "83.233002,43.434803", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "阿拉尔市", + "center": "81.280532,40.547205", + "level": "city", + "districts": [{ + "citycode": "1997", + "adcode": "659002", + "name": "玛滩镇", + "center": "80.654296,40.656858", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "永宁镇", + "center": "79.695912,41.549386", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "花桥镇", + "center": "81.561898,40.627686", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "沙河镇", + "center": "80.734788,41.289273", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "托喀依乡", + "center": "81.354140,40.581819", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "青松路街道", + "center": "81.254474,40.542004", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "塔门镇", + "center": "80.799573,40.597311", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "南口街道", + "center": "81.298804,40.515367", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "金杨镇", + "center": "81.873439,40.928322", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "金银川镇", + "center": "80.086552,40.691135", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "新井子镇", + "center": "80.027429,40.565638", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "兵团农一师沙井子水利管理处", + "center": "79.726734,40.436977", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "甘泉镇", + "center": "79.814651,40.477280", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "塔南镇", + "center": "81.360828,40.548449", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "金银川路街道", + "center": "81.262521,40.536818", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "昌安镇", + "center": "81.281049,40.575570", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "新开岭镇", + "center": "80.616820,40.429603", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "幸福镇", + "center": "81.665359,40.707751", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "幸福路街道", + "center": "81.270919,40.577037", + "level": "street", + "districts": [] + }, { + "citycode": "1997", + "adcode": "659002", + "name": "双城镇", + "center": "80.403007,41.029144", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0998", + "adcode": "653100", + "name": "喀什地区", + "center": "75.990618,39.470215", + "level": "city", + "districts": [{ + "citycode": "0998", + "adcode": "653129", + "name": "伽师县", + "center": "76.723719,39.488181", + "level": "district", + "districts": [] + }, { + "citycode": "0998", + "adcode": "653127", + "name": "麦盖提县", + "center": "77.609099,38.898986", + "level": "district", + "districts": [] + }, { + "citycode": "0998", + "adcode": "653125", + "name": "莎车县", + "center": "77.223197,38.390881", + "level": "district", + "districts": [] + }, { + "citycode": "0998", + "adcode": "653126", + "name": "叶城县", + "center": "77.413669,37.882994", + "level": "district", + "districts": [] + }, { + "citycode": "0998", + "adcode": "653131", + "name": "塔什库尔干塔吉克自治县", + "center": "75.229889,37.772094", + "level": "district", + "districts": [] + }, { + "citycode": "0998", + "adcode": "653124", + "name": "泽普县", + "center": "77.260375,38.184639", + "level": "district", + "districts": [] + }, { + "citycode": "0998", + "adcode": "653130", + "name": "巴楚县", + "center": "78.54799,39.79923", + "level": "district", + "districts": [] + }, { + "citycode": "0998", + "adcode": "653123", + "name": "英吉沙县", + "center": "76.175729,38.930381", + "level": "district", + "districts": [] + }, { + "citycode": "0998", + "adcode": "653128", + "name": "岳普湖县", + "center": "76.821269,39.219857", + "level": "district", + "districts": [] + }, { + "citycode": "0998", + "adcode": "653121", + "name": "疏附县", + "center": "75.862839,39.375052", + "level": "district", + "districts": [] + }, { + "citycode": "0998", + "adcode": "653101", + "name": "喀什市", + "center": "75.993936,39.46823", + "level": "district", + "districts": [] + }, { + "citycode": "0998", + "adcode": "653122", + "name": "疏勒县", + "center": "76.047169,39.401173", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0908", + "adcode": "653000", + "name": "克孜勒苏柯尔克孜自治州", + "center": "76.168157,39.716236", + "level": "city", + "districts": [{ + "citycode": "0908", + "adcode": "653001", + "name": "阿图什市", + "center": "76.084541,39.667719", + "level": "district", + "districts": [] + }, { + "citycode": "0908", + "adcode": "653024", + "name": "乌恰县", + "center": "75.259228,39.7205", + "level": "district", + "districts": [] + }, { + "citycode": "0908", + "adcode": "653023", + "name": "阿合奇县", + "center": "78.402073,40.937581", + "level": "district", + "districts": [] + }, { + "citycode": "0908", + "adcode": "653022", + "name": "阿克陶县", + "center": "75.955053,39.147592", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0990", + "adcode": "650200", + "name": "克拉玛依市", + "center": "84.889239,45.577712", + "level": "city", + "districts": [{ + "citycode": "0990", + "adcode": "650205", + "name": "乌尔禾区", + "center": "85.687497,46.093451", + "level": "district", + "districts": [] + }, { + "citycode": "0990", + "adcode": "650202", + "name": "独山子区", + "center": "84.886973,44.328096", + "level": "district", + "districts": [] + }, { + "citycode": "0990", + "adcode": "650204", + "name": "白碱滩区", + "center": "85.119047,45.685416", + "level": "district", + "districts": [] + }, { + "citycode": "0990", + "adcode": "650203", + "name": "克拉玛依区", + "center": "84.867862,45.602347", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0995", + "adcode": "650400", + "name": "吐鲁番市", + "center": "89.250261,42.972736", + "level": "city", + "districts": [{ + "citycode": "0995", + "adcode": "650402", + "name": "高昌区", + "center": "89.185891,42.942728", + "level": "district", + "districts": [] + }, { + "citycode": "0995", + "adcode": "650421", + "name": "鄯善县", + "center": "90.242843,42.900575", + "level": "district", + "districts": [] + }, { + "citycode": "0995", + "adcode": "650422", + "name": "托克逊县", + "center": "88.643739,42.802585", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0902", + "adcode": "650500", + "name": "哈密市", + "center": "93.515053,42.819346", + "level": "city", + "districts": [{ + "citycode": "0902", + "adcode": "650522", + "name": "伊吾县", + "center": "94.697074,43.254978", + "level": "district", + "districts": [] + }, { + "citycode": "0902", + "adcode": "650521", + "name": "巴里坤哈萨克自治县", + "center": "93.016563,43.598756", + "level": "district", + "districts": [] + }, { + "citycode": "0902", + "adcode": "650502", + "name": "伊州区", + "center": "93.425934,42.835492", + "level": "district", + "districts": [] + }] + }, { + "citycode": "2940", + "adcode": "659011", + "name": "新星市", + "center": "93.74831,42.797043", + "level": "city", + "districts": [{ + "citycode": "2940", + "adcode": "659011", + "name": "兵团红星四场", + "center": "94.068557,42.529865", + "level": "street", + "districts": [] + }, { + "citycode": "2940", + "adcode": "659011", + "name": "兵团黄田农场", + "center": "93.719461,42.567696", + "level": "street", + "districts": [] + }, { + "citycode": "2940", + "adcode": "659011", + "name": "兵团红星一场", + "center": "93.645240,42.686620", + "level": "street", + "districts": [] + }] + }, { + "citycode": "1998", + "adcode": "659003", + "name": "图木舒克市", + "center": "79.074965,39.867776", + "level": "city", + "districts": [{ + "citycode": "1998", + "adcode": "659003", + "name": "海安镇", + "center": "78.756041,39.822379", + "level": "street", + "districts": [] + }, { + "citycode": "1998", + "adcode": "659003", + "name": "唐驿镇", + "center": "79.290232,39.988845", + "level": "street", + "districts": [] + }, { + "citycode": "1998", + "adcode": "659003", + "name": "前海街道", + "center": "79.077771,39.855038", + "level": "street", + "districts": [] + }, { + "citycode": "1998", + "adcode": "659003", + "name": "喀拉拜勒镇", + "center": "79.011211,39.852615", + "level": "street", + "districts": [] + }, { + "citycode": "1998", + "adcode": "659003", + "name": "齐干却勒街道", + "center": "79.090585,39.875314", + "level": "street", + "districts": [] + }, { + "citycode": "1998", + "adcode": "659003", + "name": "金胡杨镇", + "center": "79.321433,40.031839", + "level": "street", + "districts": [] + }, { + "citycode": "1998", + "adcode": "659003", + "name": "夏河镇", + "center": "79.231481,39.954869", + "level": "street", + "districts": [] + }, { + "citycode": "1998", + "adcode": "659003", + "name": "永安镇", + "center": "79.192620,39.916764", + "level": "street", + "districts": [] + }, { + "citycode": "1998", + "adcode": "659003", + "name": "永安坝街道", + "center": "79.025712,39.850697", + "level": "street", + "districts": [] + }, { + "citycode": "1998", + "adcode": "659003", + "name": "草湖镇", + "center": "75.990801,39.261822", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0997", + "adcode": "652900", + "name": "阿克苏地区", + "center": "80.265068,41.170712", + "level": "city", + "districts": [{ + "citycode": "0997", + "adcode": "652926", + "name": "拜城县", + "center": "81.851289,41.795289", + "level": "district", + "districts": [] + }, { + "citycode": "0997", + "adcode": "652925", + "name": "新和县", + "center": "82.620371,41.552097", + "level": "district", + "districts": [] + }, { + "citycode": "0997", + "adcode": "652902", + "name": "库车市", + "center": "82.998544,41.719073", + "level": "district", + "districts": [] + }, { + "citycode": "0997", + "adcode": "652924", + "name": "沙雅县", + "center": "82.781774,41.221413", + "level": "district", + "districts": [] + }, { + "citycode": "0997", + "adcode": "652901", + "name": "阿克苏市", + "center": "80.263387,41.16755", + "level": "district", + "districts": [] + }, { + "citycode": "0997", + "adcode": "652928", + "name": "阿瓦提县", + "center": "80.375053,40.643647", + "level": "district", + "districts": [] + }, { + "citycode": "0997", + "adcode": "652929", + "name": "柯坪县", + "center": "79.054019,40.501645", + "level": "district", + "districts": [] + }, { + "citycode": "0997", + "adcode": "652922", + "name": "温宿县", + "center": "80.231563,41.273561", + "level": "district", + "districts": [] + }, { + "citycode": "0997", + "adcode": "652927", + "name": "乌什县", + "center": "79.22118,41.222706", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0991", + "adcode": "650100", + "name": "乌鲁木齐市", + "center": "87.616824,43.825377", + "level": "city", + "districts": [{ + "citycode": "0991", + "adcode": "650107", + "name": "达坂城区", + "center": "88.311099,43.363668", + "level": "district", + "districts": [] + }, { + "citycode": "0991", + "adcode": "650106", + "name": "头屯河区", + "center": "87.42582303,43.87605225", + "level": "district", + "districts": [] + }, { + "citycode": "0991", + "adcode": "650104", + "name": "新市区", + "center": "87.592684,43.893023", + "level": "district", + "districts": [] + }, { + "citycode": "0991", + "adcode": "650105", + "name": "水磨沟区", + "center": "87.64208,43.832714", + "level": "district", + "districts": [] + }, { + "citycode": "0991", + "adcode": "650109", + "name": "米东区", + "center": "87.655122,43.97444", + "level": "district", + "districts": [] + }, { + "citycode": "0991", + "adcode": "650102", + "name": "天山区", + "center": "87.631986,43.794312", + "level": "district", + "districts": [] + }, { + "citycode": "0991", + "adcode": "650103", + "name": "沙依巴克区", + "center": "87.598043,43.800994", + "level": "district", + "districts": [] + }, { + "citycode": "0991", + "adcode": "650121", + "name": "乌鲁木齐县", + "center": "87.464257,43.509016", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0992", + "adcode": "659010", + "name": "胡杨河市", + "center": "84.827592,44.692894", + "level": "city", + "districts": [{ + "citycode": "0992", + "adcode": "659010", + "name": "兵团一二九团", + "center": "84.733352,44.711517", + "level": "street", + "districts": [] + }, { + "citycode": "0992", + "adcode": "659010", + "name": "兵团一三零团", + "center": "84.642314,44.754040", + "level": "street", + "districts": [] + }] + }, { + "citycode": "1994", + "adcode": "659004", + "name": "五家渠市", + "center": "87.542852,44.166489", + "level": "city", + "districts": [{ + "citycode": "1994", + "adcode": "659004", + "name": "梧桐镇", + "center": "87.592476,44.269442", + "level": "street", + "districts": [] + }, { + "citycode": "1994", + "adcode": "659004", + "name": "人民路街道", + "center": "87.572823,44.182157", + "level": "street", + "districts": [] + }, { + "citycode": "1994", + "adcode": "659004", + "name": "兵团一零一团", + "center": "87.556234,44.175160", + "level": "street", + "districts": [] + }, { + "citycode": "1994", + "adcode": "659004", + "name": "蔡家湖镇", + "center": "87.407474,44.531659", + "level": "street", + "districts": [] + }, { + "citycode": "1994", + "adcode": "659004", + "name": "青湖路街道", + "center": "87.524481,44.176392", + "level": "street", + "districts": [] + }, { + "citycode": "1994", + "adcode": "659004", + "name": "军垦路街道", + "center": "87.508160,44.188534", + "level": "street", + "districts": [] + }] + }, { + "citycode": "2941", + "adcode": "659012", + "name": "白杨市", + "center": "82.896936,46.727959", + "level": "city", + "districts": [{ + "citycode": "2941", + "adcode": "659012", + "name": "兵团农九师一六四团", + "center": "83.005882,47.009769", + "level": "street", + "districts": [] + }, { + "citycode": "2941", + "adcode": "659012", + "name": "兵团农九师一六三团", + "center": "82.819037,46.690412", + "level": "street", + "districts": [] + }, { + "citycode": "2941", + "adcode": "659012", + "name": "兵团农九师一六一团", + "center": "82.345391,45.912466", + "level": "street", + "districts": [] + }, { + "citycode": "2941", + "adcode": "659012", + "name": "兵团农九师一六五团", + "center": "84.347734,46.825079", + "level": "street", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "420000", + "name": "湖北省", + "center": "114.341552,30.546222", + "level": "province", + "districts": [{ + "citycode": "0710", + "adcode": "420600", + "name": "襄阳市", + "center": "112.121743,32.010161", + "level": "city", + "districts": [{ + "citycode": "0710", + "adcode": "420625", + "name": "谷城县", + "center": "111.653077,32.26339", + "level": "district", + "districts": [] + }, { + "citycode": "0710", + "adcode": "420626", + "name": "保康县", + "center": "111.261308,31.87831", + "level": "district", + "districts": [] + }, { + "citycode": "0710", + "adcode": "420683", + "name": "枣阳市", + "center": "112.772723,32.128968", + "level": "district", + "districts": [] + }, { + "citycode": "0710", + "adcode": "420624", + "name": "南漳县", + "center": "111.838997,31.774649", + "level": "district", + "districts": [] + }, { + "citycode": "0710", + "adcode": "420602", + "name": "襄城区", + "center": "112.134025,32.009932", + "level": "district", + "districts": [] + }, { + "citycode": "0710", + "adcode": "420682", + "name": "老河口市", + "center": "111.683861,32.359068", + "level": "district", + "districts": [] + }, { + "citycode": "0710", + "adcode": "420606", + "name": "樊城区", + "center": "112.135241,32.045065", + "level": "district", + "districts": [] + }, { + "citycode": "0710", + "adcode": "420607", + "name": "襄州区", + "center": "112.211365,32.088651", + "level": "district", + "districts": [] + }, { + "citycode": "0710", + "adcode": "420684", + "name": "宜城市", + "center": "112.256486,31.720278", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0719", + "adcode": "420300", + "name": "十堰市", + "center": "110.798921,32.629057", + "level": "city", + "districts": [{ + "citycode": "0719", + "adcode": "420304", + "name": "郧阳区", + "center": "110.812101,32.834847", + "level": "district", + "districts": [] + }, { + "citycode": "0719", + "adcode": "420303", + "name": "张湾区", + "center": "110.769132,32.652297", + "level": "district", + "districts": [] + }, { + "citycode": "0719", + "adcode": "420302", + "name": "茅箭区", + "center": "110.813478,32.591847", + "level": "district", + "districts": [] + }, { + "citycode": "0719", + "adcode": "420324", + "name": "竹溪县", + "center": "109.715322,32.318257", + "level": "district", + "districts": [] + }, { + "citycode": "0719", + "adcode": "420325", + "name": "房县", + "center": "110.726754,32.04017", + "level": "district", + "districts": [] + }, { + "citycode": "0719", + "adcode": "420323", + "name": "竹山县", + "center": "110.229696,32.225039", + "level": "district", + "districts": [] + }, { + "citycode": "0719", + "adcode": "420381", + "name": "丹江口市", + "center": "111.513318,32.540287", + "level": "district", + "districts": [] + }, { + "citycode": "0719", + "adcode": "420322", + "name": "郧西县", + "center": "110.426005,32.993095", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0717", + "adcode": "420500", + "name": "宜昌市", + "center": "111.286962,30.69217", + "level": "city", + "districts": [{ + "citycode": "0717", + "adcode": "420526", + "name": "兴山县", + "center": "110.746831,31.348065", + "level": "district", + "districts": [] + }, { + "citycode": "0717", + "adcode": "420527", + "name": "秭归县", + "center": "110.97793,30.825882", + "level": "district", + "districts": [] + }, { + "citycode": "0717", + "adcode": "420504", + "name": "点军区", + "center": "111.268338,30.69343", + "level": "district", + "districts": [] + }, { + "citycode": "0717", + "adcode": "420582", + "name": "当阳市", + "center": "111.78836,30.820893", + "level": "district", + "districts": [] + }, { + "citycode": "0717", + "adcode": "420581", + "name": "宜都市", + "center": "111.450128,30.378444", + "level": "district", + "districts": [] + }, { + "citycode": "0717", + "adcode": "420525", + "name": "远安县", + "center": "111.640329,31.060904", + "level": "district", + "districts": [] + }, { + "citycode": "0717", + "adcode": "420529", + "name": "五峰土家族自治县", + "center": "111.07374,30.156741", + "level": "district", + "districts": [] + }, { + "citycode": "0717", + "adcode": "420502", + "name": "西陵区", + "center": "111.285696,30.710765", + "level": "district", + "districts": [] + }, { + "citycode": "0717", + "adcode": "420506", + "name": "夷陵区", + "center": "111.326371,30.769875", + "level": "district", + "districts": [] + }, { + "citycode": "0717", + "adcode": "420583", + "name": "枝江市", + "center": "111.760616,30.425758", + "level": "district", + "districts": [] + }, { + "citycode": "0717", + "adcode": "420505", + "name": "猇亭区", + "center": "111.434378,30.531133", + "level": "district", + "districts": [] + }, { + "citycode": "0717", + "adcode": "420503", + "name": "伍家岗区", + "center": "111.360882,30.644048", + "level": "district", + "districts": [] + }, { + "citycode": "0717", + "adcode": "420528", + "name": "长阳土家族自治县", + "center": "111.20697,30.473038", + "level": "district", + "districts": [] + }] + }, { + "citycode": "027", + "adcode": "420100", + "name": "武汉市", + "center": "114.304569,30.593354", + "level": "city", + "districts": [{ + "citycode": "027", + "adcode": "420117", + "name": "新洲区", + "center": "114.801284,30.841304", + "level": "district", + "districts": [] + }, { + "citycode": "027", + "adcode": "420113", + "name": "汉南区", + "center": "114.084582,30.308776", + "level": "district", + "districts": [] + }, { + "citycode": "027", + "adcode": "420114", + "name": "蔡甸区", + "center": "114.087279,30.536395", + "level": "district", + "districts": [] + }, { + "citycode": "027", + "adcode": "420115", + "name": "江夏区", + "center": "114.320884,30.37558", + "level": "district", + "districts": [] + }, { + "citycode": "027", + "adcode": "420106", + "name": "武昌区", + "center": "114.316464,30.55418", + "level": "district", + "districts": [] + }, { + "citycode": "027", + "adcode": "420112", + "name": "东西湖区", + "center": "114.136295,30.620079", + "level": "district", + "districts": [] + }, { + "citycode": "027", + "adcode": "420104", + "name": "硚口区", + "center": "114.214746,30.582559", + "level": "district", + "districts": [] + }, { + "citycode": "027", + "adcode": "420116", + "name": "黄陂区", + "center": "114.375698,30.882305", + "level": "district", + "districts": [] + }, { + "citycode": "027", + "adcode": "420103", + "name": "江汉区", + "center": "114.270763,30.601129", + "level": "district", + "districts": [] + }, { + "citycode": "027", + "adcode": "420102", + "name": "江岸区", + "center": "114.282987,30.633093", + "level": "district", + "districts": [] + }, { + "citycode": "027", + "adcode": "420107", + "name": "青山区", + "center": "114.385424,30.639842", + "level": "district", + "districts": [] + }, { + "citycode": "027", + "adcode": "420111", + "name": "洪山区", + "center": "114.342664,30.500642", + "level": "district", + "districts": [] + }, { + "citycode": "027", + "adcode": "420105", + "name": "汉阳区", + "center": "114.21859,30.554287", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0713", + "adcode": "421100", + "name": "黄冈市", + "center": "114.872425,30.453722", + "level": "city", + "districts": [{ + "citycode": "0713", + "adcode": "421181", + "name": "麻城市", + "center": "115.008011,31.172917", + "level": "district", + "districts": [] + }, { + "citycode": "0713", + "adcode": "421102", + "name": "黄州区", + "center": "114.880104,30.434354", + "level": "district", + "districts": [] + }, { + "citycode": "0713", + "adcode": "421121", + "name": "团风县", + "center": "114.872364,30.643225", + "level": "district", + "districts": [] + }, { + "citycode": "0713", + "adcode": "421127", + "name": "黄梅县", + "center": "115.944219,30.070453", + "level": "district", + "districts": [] + }, { + "citycode": "0713", + "adcode": "421122", + "name": "红安县", + "center": "114.618134,31.288167", + "level": "district", + "districts": [] + }, { + "citycode": "0713", + "adcode": "421182", + "name": "武穴市", + "center": "115.595451,29.869602", + "level": "district", + "districts": [] + }, { + "citycode": "0713", + "adcode": "421126", + "name": "蕲春县", + "center": "115.436423,30.226146", + "level": "district", + "districts": [] + }, { + "citycode": "0713", + "adcode": "421125", + "name": "浠水县", + "center": "115.265155,30.452212", + "level": "district", + "districts": [] + }, { + "citycode": "0713", + "adcode": "421123", + "name": "罗田县", + "center": "115.399149,30.783047", + "level": "district", + "districts": [] + }, { + "citycode": "0713", + "adcode": "421124", + "name": "英山县", + "center": "115.680953,30.734989", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "天门市", + "center": "113.166545,30.663706", + "level": "city", + "districts": [{ + "citycode": "1728", + "adcode": "429006", + "name": "胡市镇", + "center": "113.422187,30.802027", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "多祥镇", + "center": "113.357891,30.423413", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "黄潭镇", + "center": "113.038506,30.692160", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "沉湖管委会", + "center": "113.336326,30.513845", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "横林镇", + "center": "113.214590,30.564294", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "干驿镇", + "center": "113.450967,30.502984", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "马湾镇", + "center": "113.312283,30.599323", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "蒋湖农场", + "center": "112.787693,30.632046", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "小板镇", + "center": "113.263987,30.615139", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "岳口镇", + "center": "113.105000,30.586764", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "蒋场镇", + "center": "112.927266,30.646031", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "石家河镇", + "center": "113.063918,30.763540", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "彭市镇", + "center": "113.157308,30.431522", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "九真镇", + "center": "113.244103,30.788105", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "佛子山镇", + "center": "113.061395,30.699043", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "竟陵街道", + "center": "113.182938,30.706618", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "侯口街道", + "center": "113.133899,30.652014", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "麻洋镇", + "center": "113.309397,30.524900", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "杨林街道", + "center": "113.265467,30.685636", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "汪场镇", + "center": "112.978692,30.638003", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "白茅湖农场", + "center": "113.063412,30.586804", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "净潭乡", + "center": "113.450669,30.646405", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "皂市镇", + "center": "113.219641,30.800675", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "卢市镇", + "center": "113.396655,30.659558", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "拖市镇", + "center": "112.841174,30.729303", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "渔薪镇", + "center": "112.927266,30.646031", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "张港镇", + "center": "112.896375,30.654379", + "level": "street", + "districts": [] + }, { + "citycode": "1728", + "adcode": "429006", + "name": "多宝镇", + "center": "112.749108,30.776358", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0712", + "adcode": "420900", + "name": "孝感市", + "center": "113.956962,30.918311", + "level": "city", + "districts": [{ + "citycode": "0712", + "adcode": "420981", + "name": "应城市", + "center": "113.571864,30.928592", + "level": "district", + "districts": [] + }, { + "citycode": "0712", + "adcode": "420902", + "name": "孝南区", + "center": "113.910769,30.91695", + "level": "district", + "districts": [] + }, { + "citycode": "0712", + "adcode": "420923", + "name": "云梦县", + "center": "113.752958,31.021736", + "level": "district", + "districts": [] + }, { + "citycode": "0712", + "adcode": "420984", + "name": "汉川市", + "center": "113.838068,30.673219", + "level": "district", + "districts": [] + }, { + "citycode": "0712", + "adcode": "420922", + "name": "大悟县", + "center": "114.127122,31.561179", + "level": "district", + "districts": [] + }, { + "citycode": "0712", + "adcode": "420982", + "name": "安陆市", + "center": "113.688955,31.25565", + "level": "district", + "districts": [] + }, { + "citycode": "0712", + "adcode": "420921", + "name": "孝昌县", + "center": "113.997794,31.258225", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0724", + "adcode": "420800", + "name": "荆门市", + "center": "112.199009,31.035445", + "level": "city", + "districts": [{ + "citycode": "0724", + "adcode": "420882", + "name": "京山市", + "center": "113.119561,31.018414", + "level": "district", + "districts": [] + }, { + "citycode": "0724", + "adcode": "420822", + "name": "沙洋县", + "center": "112.588675,30.709167", + "level": "district", + "districts": [] + }, { + "citycode": "0724", + "adcode": "420881", + "name": "钟祥市", + "center": "112.588801,31.167006", + "level": "district", + "districts": [] + }, { + "citycode": "0724", + "adcode": "420804", + "name": "掇刀区", + "center": "112.2079,30.973397", + "level": "district", + "districts": [] + }, { + "citycode": "0724", + "adcode": "420802", + "name": "东宝区", + "center": "112.201657,31.05187", + "level": "district", + "districts": [] + }] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "潜江市", + "center": "112.900279,30.401954", + "level": "city", + "districts": [{ + "citycode": "2728", + "adcode": "429005", + "name": "泰丰街道", + "center": "112.980898,30.416671", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "广华寺街道", + "center": "112.666286,30.463319", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "周矶管理区", + "center": "112.785657,30.463577", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "高场街道", + "center": "112.774574,30.407577", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "总口管理区", + "center": "112.890449,30.258095", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "运粮湖管理区", + "center": "112.581820,30.252044", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "白鹭湖管理区", + "center": "112.715593,30.178757", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "园林街道", + "center": "112.910007,30.376965", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "竹根滩镇", + "center": "112.979245,30.471601", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "渔洋镇", + "center": "112.966486,30.239237", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "熊口镇", + "center": "112.724425,30.340363", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "后湖管理区", + "center": "112.767709,30.404874", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "熊口管理区", + "center": "112.806208,30.256835", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "杨市街道", + "center": "112.914959,30.383464", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "高石碑镇", + "center": "112.625570,30.620340", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "周矶街道", + "center": "112.781398,30.391044", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "泽口街道", + "center": "112.915656,30.488160", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "老新镇", + "center": "112.887009,30.215033", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "龙湾镇", + "center": "112.780855,30.253634", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "张金镇", + "center": "112.635950,30.252063", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "积玉口镇", + "center": "112.720009,30.418407", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "浩口镇", + "center": "112.566899,30.307792", + "level": "street", + "districts": [] + }, { + "citycode": "2728", + "adcode": "429005", + "name": "王场镇", + "center": "112.781586,30.473035", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0718", + "adcode": "422800", + "name": "恩施土家族苗族自治州", + "center": "109.488076,30.272104", + "level": "city", + "districts": [{ + "citycode": "0718", + "adcode": "422822", + "name": "建始县", + "center": "109.722333,30.602195", + "level": "district", + "districts": [] + }, { + "citycode": "0718", + "adcode": "422802", + "name": "利川市", + "center": "108.936456,30.290974", + "level": "district", + "districts": [] + }, { + "citycode": "0718", + "adcode": "422827", + "name": "来凤县", + "center": "109.407697,29.493474", + "level": "district", + "districts": [] + }, { + "citycode": "0718", + "adcode": "422828", + "name": "鹤峰县", + "center": "110.034011,29.890073", + "level": "district", + "districts": [] + }, { + "citycode": "0718", + "adcode": "422823", + "name": "巴东县", + "center": "110.340921,31.042854", + "level": "district", + "districts": [] + }, { + "citycode": "0718", + "adcode": "422825", + "name": "宣恩县", + "center": "109.489918,29.986856", + "level": "district", + "districts": [] + }, { + "citycode": "0718", + "adcode": "422801", + "name": "恩施市", + "center": "109.479572,30.295148", + "level": "district", + "districts": [] + }, { + "citycode": "0718", + "adcode": "422826", + "name": "咸丰县", + "center": "109.140163,29.665215", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "仙桃市", + "center": "113.442973,30.328407", + "level": "city", + "districts": [{ + "citycode": "0728", + "adcode": "429004", + "name": "通海口镇", + "center": "113.205730,30.272193", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "胡场镇", + "center": "113.290392,30.427800", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "干河街道", + "center": "113.451023,30.375391", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "杨林尾镇", + "center": "113.561091,30.201430", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "彭场镇", + "center": "113.445865,30.251787", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "沔城回族镇", + "center": "113.200597,30.192111", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "龙华山街道", + "center": "113.460323,30.364932", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "沙湖原种场", + "center": "113.642513,30.148174", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "郑场镇", + "center": "112.978652,30.470679", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "郭河镇", + "center": "113.303624,30.302698", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "沙嘴街道", + "center": "113.441389,30.359636", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "排湖风景区", + "center": "113.223499,30.298659", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "毛嘴镇", + "center": "113.045359,30.418813", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "张沟镇", + "center": "113.438252,30.296766", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "三伏潭镇", + "center": "113.206929,30.339491", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "长埫口镇", + "center": "113.597786,30.351206", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "五湖渔场", + "center": "113.776124,30.171431", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "西流河镇", + "center": "113.762133,30.296361", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "杜湖街道", + "center": "113.364736,30.306324", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "沙湖镇", + "center": "113.719820,30.118003", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "剅河镇", + "center": "112.987670,30.375691", + "level": "street", + "districts": [] + }, { + "citycode": "0728", + "adcode": "429004", + "name": "陈场镇", + "center": "113.059900,30.294262", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0716", + "adcode": "421000", + "name": "荆州市", + "center": "112.24143,30.336282", + "level": "city", + "districts": [{ + "citycode": "0716", + "adcode": "421024", + "name": "江陵县", + "center": "112.424581,30.042227", + "level": "district", + "districts": [] + }, { + "citycode": "0716", + "adcode": "421083", + "name": "洪湖市", + "center": "113.475984,29.827256", + "level": "district", + "districts": [] + }, { + "citycode": "0716", + "adcode": "421088", + "name": "监利市", + "center": "112.904634,29.840229", + "level": "district", + "districts": [] + }, { + "citycode": "0716", + "adcode": "421087", + "name": "松滋市", + "center": "111.756455,30.174717", + "level": "district", + "districts": [] + }, { + "citycode": "0716", + "adcode": "421022", + "name": "公安县", + "center": "112.229742,30.058519", + "level": "district", + "districts": [] + }, { + "citycode": "0716", + "adcode": "421081", + "name": "石首市", + "center": "112.42538,29.720944", + "level": "district", + "districts": [] + }, { + "citycode": "0716", + "adcode": "421002", + "name": "沙市区", + "center": "112.251975,30.326693", + "level": "district", + "districts": [] + }, { + "citycode": "0716", + "adcode": "421003", + "name": "荆州区", + "center": "112.190282,30.352984", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0715", + "adcode": "421200", + "name": "咸宁市", + "center": "114.322601,29.84135", + "level": "city", + "districts": [{ + "citycode": "0715", + "adcode": "421202", + "name": "咸安区", + "center": "114.299002,29.852726", + "level": "district", + "districts": [] + }, { + "citycode": "0715", + "adcode": "421221", + "name": "嘉鱼县", + "center": "113.939249,29.970575", + "level": "district", + "districts": [] + }, { + "citycode": "0715", + "adcode": "421281", + "name": "赤壁市", + "center": "113.900385,29.725122", + "level": "district", + "districts": [] + }, { + "citycode": "0715", + "adcode": "421224", + "name": "通山县", + "center": "114.482832,29.606468", + "level": "district", + "districts": [] + }, { + "citycode": "0715", + "adcode": "421223", + "name": "崇阳县", + "center": "114.039484,29.556866", + "level": "district", + "districts": [] + }, { + "citycode": "0715", + "adcode": "421222", + "name": "通城县", + "center": "113.816811,29.2454", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1719", + "adcode": "429021", + "name": "神农架林区", + "center": "110.675879,31.745103", + "level": "city", + "districts": [{ + "citycode": "1719", + "adcode": "429021", + "name": "木鱼镇", + "center": "110.566502,31.366101", + "level": "street", + "districts": [] + }, { + "citycode": "1719", + "adcode": "429021", + "name": "新华镇", + "center": "110.842423,31.621763", + "level": "street", + "districts": [] + }, { + "citycode": "1719", + "adcode": "429021", + "name": "宋洛乡", + "center": "110.589789,31.730290", + "level": "street", + "districts": [] + }, { + "citycode": "1719", + "adcode": "429021", + "name": "松柏镇", + "center": "110.609207,31.704132", + "level": "street", + "districts": [] + }, { + "citycode": "1719", + "adcode": "429021", + "name": "红坪镇", + "center": "110.196111,31.471819", + "level": "street", + "districts": [] + }, { + "citycode": "1719", + "adcode": "429021", + "name": "阳日镇", + "center": "110.763336,31.676979", + "level": "street", + "districts": [] + }, { + "citycode": "1719", + "adcode": "429021", + "name": "大九湖镇", + "center": "110.106251,31.408207", + "level": "street", + "districts": [] + }, { + "citycode": "1719", + "adcode": "429021", + "name": "下谷坪土家族乡", + "center": "110.124191,31.394918", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0722", + "adcode": "421300", + "name": "随州市", + "center": "113.382324,31.690275", + "level": "city", + "districts": [{ + "citycode": "0722", + "adcode": "421321", + "name": "随县", + "center": "113.29097,31.883233", + "level": "district", + "districts": [] + }, { + "citycode": "0722", + "adcode": "421303", + "name": "曾都区", + "center": "113.371052,31.716423", + "level": "district", + "districts": [] + }, { + "citycode": "0722", + "adcode": "421381", + "name": "广水市", + "center": "113.825977,31.617015", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0711", + "adcode": "420700", + "name": "鄂州市", + "center": "114.894909,30.391461", + "level": "city", + "districts": [{ + "citycode": "0711", + "adcode": "420702", + "name": "梁子湖区", + "center": "114.684805,30.100146", + "level": "district", + "districts": [] + }, { + "citycode": "0711", + "adcode": "420703", + "name": "华容区", + "center": "114.729945,30.53515", + "level": "district", + "districts": [] + }, { + "citycode": "0711", + "adcode": "420704", + "name": "鄂城区", + "center": "114.89157,30.400535", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0714", + "adcode": "420200", + "name": "黄石市", + "center": "115.038999,30.201082", + "level": "city", + "districts": [{ + "citycode": "0714", + "adcode": "420205", + "name": "铁山区", + "center": "114.891603,30.203152", + "level": "district", + "districts": [] + }, { + "citycode": "0714", + "adcode": "420203", + "name": "西塞山区", + "center": "115.110067,30.205114", + "level": "district", + "districts": [] + }, { + "citycode": "0714", + "adcode": "420222", + "name": "阳新县", + "center": "115.215211,29.830236", + "level": "district", + "districts": [] + }, { + "citycode": "0714", + "adcode": "420202", + "name": "黄石港区", + "center": "115.065653,30.223194", + "level": "district", + "districts": [] + }, { + "citycode": "0714", + "adcode": "420281", + "name": "大冶市", + "center": "114.98046,30.096263", + "level": "district", + "districts": [] + }, { + "citycode": "0714", + "adcode": "420204", + "name": "下陆区", + "center": "114.960914,30.174148", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "210000", + "name": "辽宁省", + "center": "123.435093,41.836743", + "level": "province", + "districts": [{ + "citycode": "0429", + "adcode": "211400", + "name": "葫芦岛市", + "center": "120.836783,40.710974", + "level": "city", + "districts": [{ + "citycode": "0429", + "adcode": "211422", + "name": "建昌县", + "center": "119.836669,40.824484", + "level": "district", + "districts": [] + }, { + "citycode": "0429", + "adcode": "211403", + "name": "龙港区", + "center": "120.894054,40.735717", + "level": "district", + "districts": [] + }, { + "citycode": "0429", + "adcode": "211481", + "name": "兴城市", + "center": "120.756661,40.60999", + "level": "district", + "districts": [] + }, { + "citycode": "0429", + "adcode": "211421", + "name": "绥中县", + "center": "120.34432,40.325576", + "level": "district", + "districts": [] + }, { + "citycode": "0429", + "adcode": "211404", + "name": "南票区", + "center": "120.74971,41.10721", + "level": "district", + "districts": [] + }, { + "citycode": "0429", + "adcode": "211402", + "name": "连山区", + "center": "120.869157,40.774784", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0411", + "adcode": "210200", + "name": "大连市", + "center": "121.614786,38.913962", + "level": "city", + "districts": [{ + "citycode": "0411", + "adcode": "210281", + "name": "瓦房店市", + "center": "121.979463,39.62701", + "level": "district", + "districts": [] + }, { + "citycode": "0411", + "adcode": "210283", + "name": "庄河市", + "center": "122.965881,39.680825", + "level": "district", + "districts": [] + }, { + "citycode": "0411", + "adcode": "210214", + "name": "普兰店区", + "center": "121.938299,39.391565", + "level": "district", + "districts": [] + }, { + "citycode": "0411", + "adcode": "210213", + "name": "金州区", + "center": "121.782513,39.050211", + "level": "district", + "districts": [] + }, { + "citycode": "0411", + "adcode": "210224", + "name": "长海县", + "center": "122.588487,39.272779", + "level": "district", + "districts": [] + }, { + "citycode": "0411", + "adcode": "210211", + "name": "甘井子区", + "center": "121.525469,38.952998", + "level": "district", + "districts": [] + }, { + "citycode": "0411", + "adcode": "210202", + "name": "中山区", + "center": "121.644996,38.918357", + "level": "district", + "districts": [] + }, { + "citycode": "0411", + "adcode": "210212", + "name": "旅顺口区", + "center": "121.261982,38.851742", + "level": "district", + "districts": [] + }, { + "citycode": "0411", + "adcode": "210203", + "name": "西岗区", + "center": "121.612461,38.914751", + "level": "district", + "districts": [] + }, { + "citycode": "0411", + "adcode": "210204", + "name": "沙河口区", + "center": "121.594201,38.904771", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0415", + "adcode": "210600", + "name": "丹东市", + "center": "124.354419,40.000646", + "level": "city", + "districts": [{ + "citycode": "0415", + "adcode": "210682", + "name": "凤城市", + "center": "124.066873,40.45218", + "level": "district", + "districts": [] + }, { + "citycode": "0415", + "adcode": "210604", + "name": "振安区", + "center": "124.470005,40.20154", + "level": "district", + "districts": [] + }, { + "citycode": "0415", + "adcode": "210681", + "name": "东港市", + "center": "124.152581,39.863193", + "level": "district", + "districts": [] + }, { + "citycode": "0415", + "adcode": "210603", + "name": "振兴区", + "center": "124.383382,40.129706", + "level": "district", + "districts": [] + }, { + "citycode": "0415", + "adcode": "210624", + "name": "宽甸满族自治县", + "center": "124.783674,40.731319", + "level": "district", + "districts": [] + }, { + "citycode": "0415", + "adcode": "210602", + "name": "元宝区", + "center": "124.395577,40.136549", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0416", + "adcode": "210700", + "name": "锦州市", + "center": "121.126859,41.096114", + "level": "city", + "districts": [{ + "citycode": "0416", + "adcode": "210711", + "name": "太和区", + "center": "121.103445,41.109232", + "level": "district", + "districts": [] + }, { + "citycode": "0416", + "adcode": "210781", + "name": "凌海市", + "center": "121.35499,41.160636", + "level": "district", + "districts": [] + }, { + "citycode": "0416", + "adcode": "210702", + "name": "古塔区", + "center": "121.128414,41.117481", + "level": "district", + "districts": [] + }, { + "citycode": "0416", + "adcode": "210703", + "name": "凌河区", + "center": "121.151069,41.115058", + "level": "district", + "districts": [] + }, { + "citycode": "0416", + "adcode": "210782", + "name": "北镇市", + "center": "121.777503,41.588657", + "level": "district", + "districts": [] + }, { + "citycode": "0416", + "adcode": "210726", + "name": "黑山县", + "center": "122.126645,41.653552", + "level": "district", + "districts": [] + }, { + "citycode": "0416", + "adcode": "210727", + "name": "义县", + "center": "121.239558,41.533553", + "level": "district", + "districts": [] + }] + }, { + "citycode": "024", + "adcode": "210100", + "name": "沈阳市", + "center": "123.464675,41.677576", + "level": "city", + "districts": [{ + "citycode": "024", + "adcode": "210114", + "name": "于洪区", + "center": "123.308062,41.793925", + "level": "district", + "districts": [] + }, { + "citycode": "024", + "adcode": "210123", + "name": "康平县", + "center": "123.343701,42.727249", + "level": "district", + "districts": [] + }, { + "citycode": "024", + "adcode": "210181", + "name": "新民市", + "center": "122.835964,41.985757", + "level": "district", + "districts": [] + }, { + "citycode": "024", + "adcode": "210124", + "name": "法库县", + "center": "123.440294,42.50108", + "level": "district", + "districts": [] + }, { + "citycode": "024", + "adcode": "210104", + "name": "大东区", + "center": "123.469828,41.805292", + "level": "district", + "districts": [] + }, { + "citycode": "024", + "adcode": "210103", + "name": "沈河区", + "center": "123.45884,41.795688", + "level": "district", + "districts": [] + }, { + "citycode": "024", + "adcode": "210105", + "name": "皇姑区", + "center": "123.441468,41.824574", + "level": "district", + "districts": [] + }, { + "citycode": "024", + "adcode": "210112", + "name": "浑南区", + "center": "123.449597,41.714729", + "level": "district", + "districts": [] + }, { + "citycode": "024", + "adcode": "210113", + "name": "沈北新区", + "center": "123.584209,41.913071", + "level": "district", + "districts": [] + }, { + "citycode": "024", + "adcode": "210115", + "name": "辽中区", + "center": "122.766159,41.517449", + "level": "district", + "districts": [] + }, { + "citycode": "024", + "adcode": "210106", + "name": "铁西区", + "center": "123.334781,41.821721", + "level": "district", + "districts": [] + }, { + "citycode": "024", + "adcode": "210111", + "name": "苏家屯区", + "center": "123.343937,41.665153", + "level": "district", + "districts": [] + }, { + "citycode": "024", + "adcode": "210102", + "name": "和平区", + "center": "123.420401,41.789766", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0410", + "adcode": "211200", + "name": "铁岭市", + "center": "123.726008,42.223709", + "level": "city", + "districts": [{ + "citycode": "0410", + "adcode": "211282", + "name": "开原市", + "center": "124.051886,42.577645", + "level": "district", + "districts": [] + }, { + "citycode": "0410", + "adcode": "211204", + "name": "清河区", + "center": "124.159232,42.54714", + "level": "district", + "districts": [] + }, { + "citycode": "0410", + "adcode": "211281", + "name": "调兵山市", + "center": "123.567039,42.468007", + "level": "district", + "districts": [] + }, { + "citycode": "0410", + "adcode": "211221", + "name": "铁岭县", + "center": "123.728933,42.223395", + "level": "district", + "districts": [] + }, { + "citycode": "0410", + "adcode": "211202", + "name": "银州区", + "center": "123.842472,42.286575", + "level": "district", + "districts": [] + }, { + "citycode": "0410", + "adcode": "211223", + "name": "西丰县", + "center": "124.727491,42.738178", + "level": "district", + "districts": [] + }, { + "citycode": "0410", + "adcode": "211224", + "name": "昌图县", + "center": "124.086628,42.779333", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0418", + "adcode": "210900", + "name": "阜新市", + "center": "121.670052,42.022028", + "level": "city", + "districts": [{ + "citycode": "0418", + "adcode": "210904", + "name": "太平区", + "center": "121.678637,42.010689", + "level": "district", + "districts": [] + }, { + "citycode": "0418", + "adcode": "210905", + "name": "清河门区", + "center": "121.416105,41.7831", + "level": "district", + "districts": [] + }, { + "citycode": "0418", + "adcode": "210903", + "name": "新邱区", + "center": "121.792067,42.087549", + "level": "district", + "districts": [] + }, { + "citycode": "0418", + "adcode": "210921", + "name": "阜新蒙古族自治县", + "center": "121.757901,42.065175", + "level": "district", + "districts": [] + }, { + "citycode": "0418", + "adcode": "210922", + "name": "彰武县", + "center": "122.538563,42.386264", + "level": "district", + "districts": [] + }, { + "citycode": "0418", + "adcode": "210902", + "name": "海州区", + "center": "121.662594,42.017794", + "level": "district", + "districts": [] + }, { + "citycode": "0418", + "adcode": "210911", + "name": "细河区", + "center": "121.680157,42.025412", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0414", + "adcode": "210500", + "name": "本溪市", + "center": "123.766669,41.294123", + "level": "city", + "districts": [{ + "citycode": "0414", + "adcode": "210522", + "name": "桓仁满族自治县", + "center": "125.361061,41.267048", + "level": "district", + "districts": [] + }, { + "citycode": "0414", + "adcode": "210505", + "name": "南芬区", + "center": "123.744822,41.100273", + "level": "district", + "districts": [] + }, { + "citycode": "0414", + "adcode": "210504", + "name": "明山区", + "center": "123.861747,41.343624", + "level": "district", + "districts": [] + }, { + "citycode": "0414", + "adcode": "210521", + "name": "本溪满族自治县", + "center": "124.119545,41.301553", + "level": "district", + "districts": [] + }, { + "citycode": "0414", + "adcode": "210503", + "name": "溪湖区", + "center": "123.767817,41.32931", + "level": "district", + "districts": [] + }, { + "citycode": "0414", + "adcode": "210502", + "name": "平山区", + "center": "123.769081,41.299658", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0419", + "adcode": "211000", + "name": "辽阳市", + "center": "123.239669,41.267396", + "level": "city", + "districts": [{ + "citycode": "0419", + "adcode": "211011", + "name": "太子河区", + "center": "123.1814403,41.29502257", + "level": "district", + "districts": [] + }, { + "citycode": "0419", + "adcode": "211005", + "name": "弓长岭区", + "center": "123.419567,41.151787", + "level": "district", + "districts": [] + }, { + "citycode": "0419", + "adcode": "211081", + "name": "灯塔市", + "center": "123.339398,41.426537", + "level": "district", + "districts": [] + }, { + "citycode": "0419", + "adcode": "211021", + "name": "辽阳县", + "center": "123.106426,41.206246", + "level": "district", + "districts": [] + }, { + "citycode": "0419", + "adcode": "211004", + "name": "宏伟区", + "center": "123.196725,41.217852", + "level": "district", + "districts": [] + }, { + "citycode": "0419", + "adcode": "211002", + "name": "白塔区", + "center": "123.174347,41.270397", + "level": "district", + "districts": [] + }, { + "citycode": "0419", + "adcode": "211003", + "name": "文圣区", + "center": "123.231262,41.282378", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0413", + "adcode": "210400", + "name": "抚顺市", + "center": "123.957053,41.881311", + "level": "city", + "districts": [{ + "citycode": "0413", + "adcode": "210422", + "name": "新宾满族自治县", + "center": "125.039994,41.734031", + "level": "district", + "districts": [] + }, { + "citycode": "0413", + "adcode": "210411", + "name": "顺城区", + "center": "123.94504,41.883375", + "level": "district", + "districts": [] + }, { + "citycode": "0413", + "adcode": "210402", + "name": "新抚区", + "center": "123.91293,41.861922", + "level": "district", + "districts": [] + }, { + "citycode": "0413", + "adcode": "210421", + "name": "抚顺县", + "center": "123.8999229,41.73009376", + "level": "district", + "districts": [] + }, { + "citycode": "0413", + "adcode": "210404", + "name": "望花区", + "center": "123.784235,41.853484", + "level": "district", + "districts": [] + }, { + "citycode": "0413", + "adcode": "210403", + "name": "东洲区", + "center": "124.038491,41.853001", + "level": "district", + "districts": [] + }, { + "citycode": "0413", + "adcode": "210423", + "name": "清原满族自治县", + "center": "124.924028,42.100804", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0427", + "adcode": "211100", + "name": "盘锦市", + "center": "122.170729,40.71956", + "level": "city", + "districts": [{ + "citycode": "0427", + "adcode": "211103", + "name": "兴隆台区", + "center": "122.070685,41.120261", + "level": "district", + "districts": [] + }, { + "citycode": "0427", + "adcode": "211122", + "name": "盘山县", + "center": "121.996408,41.243367", + "level": "district", + "districts": [] + }, { + "citycode": "0427", + "adcode": "211102", + "name": "双台子区", + "center": "122.07597,41.212401", + "level": "district", + "districts": [] + }, { + "citycode": "0427", + "adcode": "211104", + "name": "大洼区", + "center": "122.082227,41.002679", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0421", + "adcode": "211300", + "name": "朝阳市", + "center": "120.488801,41.601855", + "level": "city", + "districts": [{ + "citycode": "0421", + "adcode": "211324", + "name": "喀喇沁左翼蒙古族自治县", + "center": "119.741223,41.12815", + "level": "district", + "districts": [] + }, { + "citycode": "0421", + "adcode": "211382", + "name": "凌源市", + "center": "119.401574,41.245445", + "level": "district", + "districts": [] + }, { + "citycode": "0421", + "adcode": "211381", + "name": "北票市", + "center": "120.771389,41.801117", + "level": "district", + "districts": [] + }, { + "citycode": "0421", + "adcode": "211303", + "name": "龙城区", + "center": "120.4133759,41.57674859", + "level": "district", + "districts": [] + }, { + "citycode": "0421", + "adcode": "211302", + "name": "双塔区", + "center": "120.453717,41.565814", + "level": "district", + "districts": [] + }, { + "citycode": "0421", + "adcode": "211321", + "name": "朝阳县", + "center": "120.390001,41.497923", + "level": "district", + "districts": [] + }, { + "citycode": "0421", + "adcode": "211322", + "name": "建平县", + "center": "119.64328,41.402891", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0412", + "adcode": "210300", + "name": "鞍山市", + "center": "122.994183,41.108239", + "level": "city", + "districts": [{ + "citycode": "0412", + "adcode": "210323", + "name": "岫岩满族自治县", + "center": "123.280933,40.290995", + "level": "district", + "districts": [] + }, { + "citycode": "0412", + "adcode": "210302", + "name": "铁东区", + "center": "122.990888,41.089578", + "level": "district", + "districts": [] + }, { + "citycode": "0412", + "adcode": "210311", + "name": "千山区", + "center": "122.9447506,41.0689014", + "level": "district", + "districts": [] + }, { + "citycode": "0412", + "adcode": "210304", + "name": "立山区", + "center": "123.029091,41.150401", + "level": "district", + "districts": [] + }, { + "citycode": "0412", + "adcode": "210303", + "name": "铁西区", + "center": "122.969531,41.119719", + "level": "district", + "districts": [] + }, { + "citycode": "0412", + "adcode": "210321", + "name": "台安县", + "center": "122.436037,41.412866", + "level": "district", + "districts": [] + }, { + "citycode": "0412", + "adcode": "210381", + "name": "海城市", + "center": "122.685176,40.882548", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0417", + "adcode": "210800", + "name": "营口市", + "center": "122.219148,40.625027", + "level": "city", + "districts": [{ + "citycode": "0417", + "adcode": "210803", + "name": "西市区", + "center": "122.206431,40.666707", + "level": "district", + "districts": [] + }, { + "citycode": "0417", + "adcode": "210804", + "name": "鲅鱼圈区", + "center": "122.121764,40.226708", + "level": "district", + "districts": [] + }, { + "citycode": "0417", + "adcode": "210881", + "name": "盖州市", + "center": "122.34845,40.400259", + "level": "district", + "districts": [] + }, { + "citycode": "0417", + "adcode": "210802", + "name": "站前区", + "center": "122.259058,40.673063", + "level": "district", + "districts": [] + }, { + "citycode": "0417", + "adcode": "210811", + "name": "老边区", + "center": "122.307956,40.671279", + "level": "district", + "districts": [] + }, { + "citycode": "0417", + "adcode": "210882", + "name": "大石桥市", + "center": "122.509006,40.644482", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "370000", + "name": "山东省", + "center": "117.020725,36.670201", + "level": "province", + "districts": [{ + "citycode": "0546", + "adcode": "370500", + "name": "东营市", + "center": "118.674633,37.433992", + "level": "city", + "districts": [{ + "citycode": "0546", + "adcode": "370522", + "name": "利津县", + "center": "118.255084,37.490919", + "level": "district", + "districts": [] + }, { + "citycode": "0546", + "adcode": "370502", + "name": "东营区", + "center": "118.582182,37.449035", + "level": "district", + "districts": [] + }, { + "citycode": "0546", + "adcode": "370503", + "name": "河口区", + "center": "118.525519,37.886217", + "level": "district", + "districts": [] + }, { + "citycode": "0546", + "adcode": "370505", + "name": "垦利区", + "center": "118.575234,37.573412", + "level": "district", + "districts": [] + }, { + "citycode": "0546", + "adcode": "370523", + "name": "广饶县", + "center": "118.419437,37.053915", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0543", + "adcode": "371600", + "name": "滨州市", + "center": "117.970731,37.382687", + "level": "city", + "districts": [{ + "citycode": "0543", + "adcode": "371603", + "name": "沾化区", + "center": "118.098962,37.698952", + "level": "district", + "districts": [] + }, { + "citycode": "0543", + "adcode": "371623", + "name": "无棣县", + "center": "117.625846,37.770579", + "level": "district", + "districts": [] + }, { + "citycode": "0543", + "adcode": "371622", + "name": "阳信县", + "center": "117.603407,37.632773", + "level": "district", + "districts": [] + }, { + "citycode": "0543", + "adcode": "371625", + "name": "博兴县", + "center": "118.110715,37.154529", + "level": "district", + "districts": [] + }, { + "citycode": "0543", + "adcode": "371602", + "name": "滨城区", + "center": "118.019567,37.431997", + "level": "district", + "districts": [] + }, { + "citycode": "0543", + "adcode": "371621", + "name": "惠民县", + "center": "117.593744,37.47528", + "level": "district", + "districts": [] + }, { + "citycode": "0543", + "adcode": "371681", + "name": "邹平市", + "center": "117.74313,36.863393", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0535", + "adcode": "370600", + "name": "烟台市", + "center": "121.447755,37.464551", + "level": "city", + "districts": [{ + "citycode": "0535", + "adcode": "370614", + "name": "蓬莱区", + "center": "120.829141,37.795697", + "level": "district", + "districts": [] + }, { + "citycode": "0535", + "adcode": "370602", + "name": "芝罘区", + "center": "121.400303,37.541312", + "level": "district", + "districts": [] + }, { + "citycode": "0535", + "adcode": "370683", + "name": "莱州市", + "center": "119.942057,37.178187", + "level": "district", + "districts": [] + }, { + "citycode": "0535", + "adcode": "370687", + "name": "海阳市", + "center": "121.173506,36.688316", + "level": "district", + "districts": [] + }, { + "citycode": "0535", + "adcode": "370681", + "name": "龙口市", + "center": "120.47614,37.645281", + "level": "district", + "districts": [] + }, { + "citycode": "0535", + "adcode": "370682", + "name": "莱阳市", + "center": "120.711555,36.979757", + "level": "district", + "districts": [] + }, { + "citycode": "0535", + "adcode": "370686", + "name": "栖霞市", + "center": "120.849595,37.335993", + "level": "district", + "districts": [] + }, { + "citycode": "0535", + "adcode": "370685", + "name": "招远市", + "center": "120.433904,37.354517", + "level": "district", + "districts": [] + }, { + "citycode": "0535", + "adcode": "370612", + "name": "牟平区", + "center": "121.601015,37.387454", + "level": "district", + "districts": [] + }, { + "citycode": "0535", + "adcode": "370611", + "name": "福山区", + "center": "121.267638,37.49833", + "level": "district", + "districts": [] + }, { + "citycode": "0535", + "adcode": "370613", + "name": "莱山区", + "center": "121.444949,37.511322", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0631", + "adcode": "371000", + "name": "威海市", + "center": "122.120519,37.513315", + "level": "city", + "districts": [{ + "citycode": "0631", + "adcode": "371083", + "name": "乳山市", + "center": "121.539557,36.920329", + "level": "district", + "districts": [] + }, { + "citycode": "0631", + "adcode": "371082", + "name": "荣成市", + "center": "122.487036,37.165698", + "level": "district", + "districts": [] + }, { + "citycode": "0631", + "adcode": "371002", + "name": "环翠区", + "center": "122.123115,37.501735", + "level": "district", + "districts": [] + }, { + "citycode": "0631", + "adcode": "371003", + "name": "文登区", + "center": "122.08832,37.196032", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0532", + "adcode": "370200", + "name": "青岛市", + "center": "120.382665,36.066938", + "level": "city", + "districts": [{ + "citycode": "0532", + "adcode": "370285", + "name": "莱西市", + "center": "120.517581,36.889167", + "level": "district", + "districts": [] + }, { + "citycode": "0532", + "adcode": "370283", + "name": "平度市", + "center": "119.970192,36.753895", + "level": "district", + "districts": [] + }, { + "citycode": "0532", + "adcode": "370212", + "name": "崂山区", + "center": "120.469282,36.107069", + "level": "district", + "districts": [] + }, { + "citycode": "0532", + "adcode": "370215", + "name": "即墨区", + "center": "120.447691,36.390217", + "level": "district", + "districts": [] + }, { + "citycode": "0532", + "adcode": "370214", + "name": "城阳区", + "center": "120.396255,36.307624", + "level": "district", + "districts": [] + }, { + "citycode": "0532", + "adcode": "370211", + "name": "黄岛区", + "center": "120.19777,35.960688", + "level": "district", + "districts": [] + }, { + "citycode": "0532", + "adcode": "370281", + "name": "胶州市", + "center": "120.033382,36.26468", + "level": "district", + "districts": [] + }, { + "citycode": "0532", + "adcode": "370213", + "name": "李沧区", + "center": "120.432652,36.145987", + "level": "district", + "districts": [] + }, { + "citycode": "0532", + "adcode": "370202", + "name": "市南区", + "center": "120.412002,36.075867", + "level": "district", + "districts": [] + }, { + "citycode": "0532", + "adcode": "370203", + "name": "市北区", + "center": "120.374675,36.08765", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0635", + "adcode": "371500", + "name": "聊城市", + "center": "115.985238,36.455857", + "level": "city", + "districts": [{ + "citycode": "0635", + "adcode": "371525", + "name": "冠县", + "center": "115.441684,36.484011", + "level": "district", + "districts": [] + }, { + "citycode": "0635", + "adcode": "371502", + "name": "东昌府区", + "center": "116.006399,36.412737", + "level": "district", + "districts": [] + }, { + "citycode": "0635", + "adcode": "371522", + "name": "莘县", + "center": "115.669843,36.233711", + "level": "district", + "districts": [] + }, { + "citycode": "0635", + "adcode": "371521", + "name": "阳谷县", + "center": "115.791822,36.114392", + "level": "district", + "districts": [] + }, { + "citycode": "0635", + "adcode": "371526", + "name": "高唐县", + "center": "116.230126,36.84715", + "level": "district", + "districts": [] + }, { + "citycode": "0635", + "adcode": "371524", + "name": "东阿县", + "center": "116.247655,36.335198", + "level": "district", + "districts": [] + }, { + "citycode": "0635", + "adcode": "371503", + "name": "茌平区", + "center": "116.254865,36.580814", + "level": "district", + "districts": [] + }, { + "citycode": "0635", + "adcode": "371581", + "name": "临清市", + "center": "115.704982,36.83828", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0533", + "adcode": "370300", + "name": "淄博市", + "center": "118.054994,36.813787", + "level": "city", + "districts": [{ + "citycode": "0533", + "adcode": "370305", + "name": "临淄区", + "center": "118.309398,36.826882", + "level": "district", + "districts": [] + }, { + "citycode": "0533", + "adcode": "370304", + "name": "博山区", + "center": "117.8627,36.495014", + "level": "district", + "districts": [] + }, { + "citycode": "0533", + "adcode": "370323", + "name": "沂源县", + "center": "118.170856,36.185402", + "level": "district", + "districts": [] + }, { + "citycode": "0533", + "adcode": "370322", + "name": "高青县", + "center": "117.826743,37.171042", + "level": "district", + "districts": [] + }, { + "citycode": "0533", + "adcode": "370321", + "name": "桓台县", + "center": "118.097923,36.959794", + "level": "district", + "districts": [] + }, { + "citycode": "0533", + "adcode": "370303", + "name": "张店区", + "center": "118.017877,36.807011", + "level": "district", + "districts": [] + }, { + "citycode": "0533", + "adcode": "370302", + "name": "淄川区", + "center": "117.966978,36.644211", + "level": "district", + "districts": [] + }, { + "citycode": "0533", + "adcode": "370306", + "name": "周村区", + "center": "117.869686,36.80309", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0536", + "adcode": "370700", + "name": "潍坊市", + "center": "119.161721,36.707668", + "level": "city", + "districts": [{ + "citycode": "0536", + "adcode": "370783", + "name": "寿光市", + "center": "118.791062,36.857133", + "level": "district", + "districts": [] + }, { + "citycode": "0536", + "adcode": "370786", + "name": "昌邑市", + "center": "119.403185,36.843256", + "level": "district", + "districts": [] + }, { + "citycode": "0536", + "adcode": "370785", + "name": "高密市", + "center": "119.80584,36.365658", + "level": "district", + "districts": [] + }, { + "citycode": "0536", + "adcode": "370703", + "name": "寒亭区", + "center": "119.211251,36.755925", + "level": "district", + "districts": [] + }, { + "citycode": "0536", + "adcode": "370782", + "name": "诸城市", + "center": "119.412992,36.009273", + "level": "district", + "districts": [] + }, { + "citycode": "0536", + "adcode": "370705", + "name": "奎文区", + "center": "119.132288,36.707459", + "level": "district", + "districts": [] + }, { + "citycode": "0536", + "adcode": "370702", + "name": "潍城区", + "center": "119.02491,36.728077", + "level": "district", + "districts": [] + }, { + "citycode": "0536", + "adcode": "370781", + "name": "青州市", + "center": "118.479637,36.685178", + "level": "district", + "districts": [] + }, { + "citycode": "0536", + "adcode": "370724", + "name": "临朐县", + "center": "118.543274,36.51246", + "level": "district", + "districts": [] + }, { + "citycode": "0536", + "adcode": "370725", + "name": "昌乐县", + "center": "118.841035,36.688035", + "level": "district", + "districts": [] + }, { + "citycode": "0536", + "adcode": "370704", + "name": "坊子区", + "center": "119.166343,36.653671", + "level": "district", + "districts": [] + }, { + "citycode": "0536", + "adcode": "370784", + "name": "安丘市", + "center": "119.21892,36.479642", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0531", + "adcode": "370100", + "name": "济南市", + "center": "117.120128,36.652069", + "level": "city", + "districts": [{ + "citycode": "0531", + "adcode": "370113", + "name": "长清区", + "center": "116.752101,36.554251", + "level": "district", + "districts": [] + }, { + "citycode": "0531", + "adcode": "370117", + "name": "钢城区", + "center": "117.811604,36.059393", + "level": "district", + "districts": [] + }, { + "citycode": "0531", + "adcode": "370126", + "name": "商河县", + "center": "117.157165,37.309694", + "level": "district", + "districts": [] + }, { + "citycode": "0531", + "adcode": "370114", + "name": "章丘区", + "center": "117.526228,36.681258", + "level": "district", + "districts": [] + }, { + "citycode": "0531", + "adcode": "370116", + "name": "莱芜区", + "center": "117.675828,36.214895", + "level": "district", + "districts": [] + }, { + "citycode": "0531", + "adcode": "370124", + "name": "平阴县", + "center": "116.455865,36.289813", + "level": "district", + "districts": [] + }, { + "citycode": "0531", + "adcode": "370115", + "name": "济阳区", + "center": "117.173722,36.978299", + "level": "district", + "districts": [] + }, { + "citycode": "0531", + "adcode": "370103", + "name": "市中区", + "center": "116.997472,36.651121", + "level": "district", + "districts": [] + }, { + "citycode": "0531", + "adcode": "370112", + "name": "历城区", + "center": "117.065233,36.680731", + "level": "district", + "districts": [] + }, { + "citycode": "0531", + "adcode": "370102", + "name": "历下区", + "center": "117.07632,36.666395", + "level": "district", + "districts": [] + }, { + "citycode": "0531", + "adcode": "370105", + "name": "天桥区", + "center": "116.987106,36.678665", + "level": "district", + "districts": [] + }, { + "citycode": "0531", + "adcode": "370104", + "name": "槐荫区", + "center": "116.901057,36.652264", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0538", + "adcode": "370900", + "name": "泰安市", + "center": "117.086963,36.201784", + "level": "city", + "districts": [{ + "citycode": "0538", + "adcode": "370983", + "name": "肥城市", + "center": "116.769098,36.181975", + "level": "district", + "districts": [] + }, { + "citycode": "0538", + "adcode": "370902", + "name": "泰山区", + "center": "117.128828,36.194963", + "level": "district", + "districts": [] + }, { + "citycode": "0538", + "adcode": "370921", + "name": "宁阳县", + "center": "116.805578,35.758919", + "level": "district", + "districts": [] + }, { + "citycode": "0538", + "adcode": "370923", + "name": "东平县", + "center": "116.470211,35.937049", + "level": "district", + "districts": [] + }, { + "citycode": "0538", + "adcode": "370982", + "name": "新泰市", + "center": "117.768069,35.90953", + "level": "district", + "districts": [] + }, { + "citycode": "0538", + "adcode": "370911", + "name": "岱岳区", + "center": "117.041651,36.188088", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0537", + "adcode": "370800", + "name": "济宁市", + "center": "116.587116,35.415117", + "level": "city", + "districts": [{ + "citycode": "0537", + "adcode": "370826", + "name": "微山县", + "center": "117.129188,34.806657", + "level": "district", + "districts": [] + }, { + "citycode": "0537", + "adcode": "370831", + "name": "泗水县", + "center": "117.250824,35.664719", + "level": "district", + "districts": [] + }, { + "citycode": "0537", + "adcode": "370827", + "name": "鱼台县", + "center": "116.650526,35.012706", + "level": "district", + "districts": [] + }, { + "citycode": "0537", + "adcode": "370881", + "name": "曲阜市", + "center": "116.986212,35.581933", + "level": "district", + "districts": [] + }, { + "citycode": "0537", + "adcode": "370828", + "name": "金乡县", + "center": "116.337271,35.073419", + "level": "district", + "districts": [] + }, { + "citycode": "0537", + "adcode": "370830", + "name": "汶上县", + "center": "116.497277,35.711891", + "level": "district", + "districts": [] + }, { + "citycode": "0537", + "adcode": "370883", + "name": "邹城市", + "center": "117.007406,35.402536", + "level": "district", + "districts": [] + }, { + "citycode": "0537", + "adcode": "370811", + "name": "任城区", + "center": "116.605763,35.444226", + "level": "district", + "districts": [] + }, { + "citycode": "0537", + "adcode": "370812", + "name": "兖州区", + "center": "116.78365,35.551938", + "level": "district", + "districts": [] + }, { + "citycode": "0537", + "adcode": "370829", + "name": "嘉祥县", + "center": "116.342308,35.40794", + "level": "district", + "districts": [] + }, { + "citycode": "0537", + "adcode": "370832", + "name": "梁山县", + "center": "116.131779,35.765957", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0539", + "adcode": "371300", + "name": "临沂市", + "center": "118.356464,35.103771", + "level": "city", + "districts": [{ + "citycode": "0539", + "adcode": "371312", + "name": "河东区", + "center": "118.403073,35.088936", + "level": "district", + "districts": [] + }, { + "citycode": "0539", + "adcode": "371302", + "name": "兰山区", + "center": "118.347332,35.052797", + "level": "district", + "districts": [] + }, { + "citycode": "0539", + "adcode": "371325", + "name": "费县", + "center": "117.9776,35.265851", + "level": "district", + "districts": [] + }, { + "citycode": "0539", + "adcode": "371327", + "name": "莒南县", + "center": "118.835166,35.206252", + "level": "district", + "districts": [] + }, { + "citycode": "0539", + "adcode": "371322", + "name": "郯城县", + "center": "118.390701,34.619281", + "level": "district", + "districts": [] + }, { + "citycode": "0539", + "adcode": "371328", + "name": "蒙阴县", + "center": "117.953367,35.720128", + "level": "district", + "districts": [] + }, { + "citycode": "0539", + "adcode": "371326", + "name": "平邑县", + "center": "117.615201,35.516849", + "level": "district", + "districts": [] + }, { + "citycode": "0539", + "adcode": "371321", + "name": "沂南县", + "center": "118.465259,35.550078", + "level": "district", + "districts": [] + }, { + "citycode": "0539", + "adcode": "371323", + "name": "沂水县", + "center": "118.628142,35.790919", + "level": "district", + "districts": [] + }, { + "citycode": "0539", + "adcode": "371311", + "name": "罗庄区", + "center": "118.284693,34.997061", + "level": "district", + "districts": [] + }, { + "citycode": "0539", + "adcode": "371324", + "name": "兰陵县", + "center": "118.070912,34.858235", + "level": "district", + "districts": [] + }, { + "citycode": "0539", + "adcode": "371329", + "name": "临沭县", + "center": "118.650828,34.920171", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0530", + "adcode": "371700", + "name": "菏泽市", + "center": "115.479646,35.234309", + "level": "city", + "districts": [{ + "citycode": "0530", + "adcode": "371703", + "name": "定陶区", + "center": "115.583172,35.105742", + "level": "district", + "districts": [] + }, { + "citycode": "0530", + "adcode": "371728", + "name": "东明县", + "center": "115.107402,35.275664", + "level": "district", + "districts": [] + }, { + "citycode": "0530", + "adcode": "371726", + "name": "鄄城县", + "center": "115.544507,35.534088", + "level": "district", + "districts": [] + }, { + "citycode": "0530", + "adcode": "371702", + "name": "牡丹区", + "center": "115.417021,35.251911", + "level": "district", + "districts": [] + }, { + "citycode": "0530", + "adcode": "371724", + "name": "巨野县", + "center": "116.062585,35.388543", + "level": "district", + "districts": [] + }, { + "citycode": "0530", + "adcode": "371723", + "name": "成武县", + "center": "115.889775,34.95278", + "level": "district", + "districts": [] + }, { + "citycode": "0530", + "adcode": "371722", + "name": "单县", + "center": "116.106396,34.779282", + "level": "district", + "districts": [] + }, { + "citycode": "0530", + "adcode": "371725", + "name": "郓城县", + "center": "115.938939,35.575276", + "level": "district", + "districts": [] + }, { + "citycode": "0530", + "adcode": "371721", + "name": "曹县", + "center": "115.556393,34.85875", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0534", + "adcode": "371400", + "name": "德州市", + "center": "116.359244,37.436492", + "level": "city", + "districts": [{ + "citycode": "0534", + "adcode": "371422", + "name": "宁津县", + "center": "116.800279,37.652456", + "level": "district", + "districts": [] + }, { + "citycode": "0534", + "adcode": "371481", + "name": "乐陵市", + "center": "117.232085,37.729769", + "level": "district", + "districts": [] + }, { + "citycode": "0534", + "adcode": "371423", + "name": "庆云县", + "center": "117.384163,37.774376", + "level": "district", + "districts": [] + }, { + "citycode": "0534", + "adcode": "371402", + "name": "德城区", + "center": "116.299558,37.451051", + "level": "district", + "districts": [] + }, { + "citycode": "0534", + "adcode": "371428", + "name": "武城县", + "center": "116.069312,37.213398", + "level": "district", + "districts": [] + }, { + "citycode": "0534", + "adcode": "371426", + "name": "平原县", + "center": "116.434016,37.165453", + "level": "district", + "districts": [] + }, { + "citycode": "0534", + "adcode": "371425", + "name": "齐河县", + "center": "116.762767,36.784164", + "level": "district", + "districts": [] + }, { + "citycode": "0534", + "adcode": "371482", + "name": "禹城市", + "center": "116.638558,36.934198", + "level": "district", + "districts": [] + }, { + "citycode": "0534", + "adcode": "371424", + "name": "临邑县", + "center": "116.866568,37.190139", + "level": "district", + "districts": [] + }, { + "citycode": "0534", + "adcode": "371403", + "name": "陵城区", + "center": "116.576148,37.336444", + "level": "district", + "districts": [] + }, { + "citycode": "0534", + "adcode": "371427", + "name": "夏津县", + "center": "116.001796,36.948013", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0633", + "adcode": "371100", + "name": "日照市", + "center": "119.52685,35.416912", + "level": "city", + "districts": [{ + "citycode": "0633", + "adcode": "371122", + "name": "莒县", + "center": "118.869059,35.59125", + "level": "district", + "districts": [] + }, { + "citycode": "0633", + "adcode": "371103", + "name": "岚山区", + "center": "119.31881,35.121985", + "level": "district", + "districts": [] + }, { + "citycode": "0633", + "adcode": "371102", + "name": "东港区", + "center": "119.462287,35.426037", + "level": "district", + "districts": [] + }, { + "citycode": "0633", + "adcode": "371121", + "name": "五莲县", + "center": "119.213673,35.760154", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0632", + "adcode": "370400", + "name": "枣庄市", + "center": "117.323759,34.810858", + "level": "city", + "districts": [{ + "citycode": "0632", + "adcode": "370403", + "name": "薛城区", + "center": "117.286371,34.783282", + "level": "district", + "districts": [] + }, { + "citycode": "0632", + "adcode": "370405", + "name": "台儿庄区", + "center": "117.734287,34.563103", + "level": "district", + "districts": [] + }, { + "citycode": "0632", + "adcode": "370402", + "name": "市中区", + "center": "117.556125,34.863791", + "level": "district", + "districts": [] + }, { + "citycode": "0632", + "adcode": "370406", + "name": "山亭区", + "center": "117.461866,35.099638", + "level": "district", + "districts": [] + }, { + "citycode": "0632", + "adcode": "370404", + "name": "峄城区", + "center": "117.590738,34.772931", + "level": "district", + "districts": [] + }, { + "citycode": "0632", + "adcode": "370481", + "name": "滕州市", + "center": "117.165881,35.11412", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": "021", + "adcode": "310000", + "name": "上海市", + "center": "121.473667,31.230525", + "level": "province", + "districts": [{ + "citycode": "021", + "adcode": "310100", + "name": "上海城区", + "center": "121.472644,31.231706", + "level": "city", + "districts": [{ + "citycode": "021", + "adcode": "310151", + "name": "崇明区", + "center": "121.397662,31.623863", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310115", + "name": "浦东新区", + "center": "121.544346,31.221461", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310116", + "name": "金山区", + "center": "121.341774,30.742769", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310110", + "name": "杨浦区", + "center": "121.525409,31.259588", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310109", + "name": "虹口区", + "center": "121.504994,31.264917", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310106", + "name": "静安区", + "center": "121.447348,31.227718", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310105", + "name": "长宁区", + "center": "121.424751,31.220537", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310120", + "name": "奉贤区", + "center": "121.473945,30.918406", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310118", + "name": "青浦区", + "center": "121.124249,31.15098", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310107", + "name": "普陀区", + "center": "121.39547,31.249618", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310113", + "name": "宝山区", + "center": "121.489431,31.405242", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310101", + "name": "黄浦区", + "center": "121.48442,31.231661", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310114", + "name": "嘉定区", + "center": "121.265276,31.375566", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310104", + "name": "徐汇区", + "center": "121.436307,31.188334", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310117", + "name": "松江区", + "center": "121.227676,31.03257", + "level": "district", + "districts": [] + }, { + "citycode": "021", + "adcode": "310112", + "name": "闵行区", + "center": "121.380857,31.112834", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "520000", + "name": "贵州省", + "center": "106.705251,26.600328", + "level": "province", + "districts": [{ + "citycode": "0852", + "adcode": "520300", + "name": "遵义市", + "center": "107.031922,27.721931", + "level": "city", + "districts": [{ + "citycode": "0852", + "adcode": "520329", + "name": "余庆县", + "center": "107.906043,27.21513", + "level": "district", + "districts": [] + }, { + "citycode": "0852", + "adcode": "520381", + "name": "赤水市", + "center": "105.697501,28.590474", + "level": "district", + "districts": [] + }, { + "citycode": "0852", + "adcode": "520328", + "name": "湄潭县", + "center": "107.465492,27.748942", + "level": "district", + "districts": [] + }, { + "citycode": "0852", + "adcode": "520303", + "name": "汇川区", + "center": "106.933727,27.749716", + "level": "district", + "districts": [] + }, { + "citycode": "0852", + "adcode": "520326", + "name": "务川仡佬族苗族自治县", + "center": "107.899353,28.562921", + "level": "district", + "districts": [] + }, { + "citycode": "0852", + "adcode": "520382", + "name": "仁怀市", + "center": "106.401322,27.791883", + "level": "district", + "districts": [] + }, { + "citycode": "0852", + "adcode": "520304", + "name": "播州区", + "center": "106.829081,27.535735", + "level": "district", + "districts": [] + }, { + "citycode": "0852", + "adcode": "520327", + "name": "凤冈县", + "center": "107.71646,27.954424", + "level": "district", + "districts": [] + }, { + "citycode": "0852", + "adcode": "520323", + "name": "绥阳县", + "center": "107.191326,27.946049", + "level": "district", + "districts": [] + }, { + "citycode": "0852", + "adcode": "520302", + "name": "红花岗区", + "center": "106.893598,27.644793", + "level": "district", + "districts": [] + }, { + "citycode": "0852", + "adcode": "520324", + "name": "正安县", + "center": "107.454463,28.553507", + "level": "district", + "districts": [] + }, { + "citycode": "0852", + "adcode": "520325", + "name": "道真仡佬族苗族自治县", + "center": "107.613076,28.862548", + "level": "district", + "districts": [] + }, { + "citycode": "0852", + "adcode": "520322", + "name": "桐梓县", + "center": "106.824661,28.132991", + "level": "district", + "districts": [] + }, { + "citycode": "0852", + "adcode": "520330", + "name": "习水县", + "center": "106.19715,28.332923", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0856", + "adcode": "520600", + "name": "铜仁市", + "center": "109.189528,27.731555", + "level": "city", + "districts": [{ + "citycode": "0856", + "adcode": "520623", + "name": "石阡县", + "center": "108.223686,27.513499", + "level": "district", + "districts": [] + }, { + "citycode": "0856", + "adcode": "520628", + "name": "松桃苗族自治县", + "center": "109.202877,28.15427", + "level": "district", + "districts": [] + }, { + "citycode": "0856", + "adcode": "520622", + "name": "玉屏侗族自治县", + "center": "108.906415,27.235816", + "level": "district", + "districts": [] + }, { + "citycode": "0856", + "adcode": "520626", + "name": "德江县", + "center": "108.120773,28.264028", + "level": "district", + "districts": [] + }, { + "citycode": "0856", + "adcode": "520621", + "name": "江口县", + "center": "108.843993,27.704883", + "level": "district", + "districts": [] + }, { + "citycode": "0856", + "adcode": "520625", + "name": "印江土家族苗族自治县", + "center": "108.409638,27.994442", + "level": "district", + "districts": [] + }, { + "citycode": "0856", + "adcode": "520627", + "name": "沿河土家族自治县", + "center": "108.503152,28.564083", + "level": "district", + "districts": [] + }, { + "citycode": "0856", + "adcode": "520624", + "name": "思南县", + "center": "108.253798,27.937464", + "level": "district", + "districts": [] + }, { + "citycode": "0856", + "adcode": "520602", + "name": "碧江区", + "center": "109.264271,27.815244", + "level": "district", + "districts": [] + }, { + "citycode": "0856", + "adcode": "520603", + "name": "万山区", + "center": "109.153685,27.671268", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0858", + "adcode": "520200", + "name": "六盘水市", + "center": "104.830357,26.592538", + "level": "city", + "districts": [{ + "citycode": "0858", + "adcode": "520281", + "name": "盘州市", + "center": "104.471554,25.709878", + "level": "district", + "districts": [] + }, { + "citycode": "0858", + "adcode": "520203", + "name": "六枝特区", + "center": "105.477199,26.214356", + "level": "district", + "districts": [] + }, { + "citycode": "0858", + "adcode": "520201", + "name": "钟山区", + "center": "104.843723,26.574699", + "level": "district", + "districts": [] + }, { + "citycode": "0858", + "adcode": "520204", + "name": "水城区", + "center": "104.957871,26.547604", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0854", + "adcode": "522700", + "name": "黔南布依族苗族自治州", + "center": "107.522303,26.253136", + "level": "city", + "districts": [{ + "citycode": "0854", + "adcode": "522727", + "name": "平塘县", + "center": "107.322635,25.822395", + "level": "district", + "districts": [] + }, { + "citycode": "0854", + "adcode": "522722", + "name": "荔波县", + "center": "107.88057,25.402528", + "level": "district", + "districts": [] + }, { + "citycode": "0854", + "adcode": "522728", + "name": "罗甸县", + "center": "106.751724,25.42616", + "level": "district", + "districts": [] + }, { + "citycode": "0854", + "adcode": "522701", + "name": "都匀市", + "center": "107.518628,26.259456", + "level": "district", + "districts": [] + }, { + "citycode": "0854", + "adcode": "522729", + "name": "长顺县", + "center": "106.44057,26.003187", + "level": "district", + "districts": [] + }, { + "citycode": "0854", + "adcode": "522726", + "name": "独山县", + "center": "107.557591,25.865418", + "level": "district", + "districts": [] + }, { + "citycode": "0854", + "adcode": "522732", + "name": "三都水族自治县", + "center": "107.869489,25.983572", + "level": "district", + "districts": [] + }, { + "citycode": "0854", + "adcode": "522723", + "name": "贵定县", + "center": "107.232208,26.557205", + "level": "district", + "districts": [] + }, { + "citycode": "0854", + "adcode": "522731", + "name": "惠水县", + "center": "106.656993,26.132045", + "level": "district", + "districts": [] + }, { + "citycode": "0854", + "adcode": "522730", + "name": "龙里县", + "center": "106.979177,26.453546", + "level": "district", + "districts": [] + }, { + "citycode": "0854", + "adcode": "522725", + "name": "瓮安县", + "center": "107.471307,27.07838", + "level": "district", + "districts": [] + }, { + "citycode": "0854", + "adcode": "522702", + "name": "福泉市", + "center": "107.520371,26.686773", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0853", + "adcode": "520400", + "name": "安顺市", + "center": "105.9476,26.253103", + "level": "city", + "districts": [{ + "citycode": "0853", + "adcode": "520402", + "name": "西秀区", + "center": "105.966086,26.243928", + "level": "district", + "districts": [] + }, { + "citycode": "0853", + "adcode": "520425", + "name": "紫云苗族布依族自治县", + "center": "106.084441,25.751047", + "level": "district", + "districts": [] + }, { + "citycode": "0853", + "adcode": "520403", + "name": "平坝区", + "center": "106.255768,26.405968", + "level": "district", + "districts": [] + }, { + "citycode": "0853", + "adcode": "520422", + "name": "普定县", + "center": "105.743156,26.301876", + "level": "district", + "districts": [] + }, { + "citycode": "0853", + "adcode": "520423", + "name": "镇宁布依族苗族自治县", + "center": "105.770543,26.057248", + "level": "district", + "districts": [] + }, { + "citycode": "0853", + "adcode": "520424", + "name": "关岭布依族苗族自治县", + "center": "105.538335,25.953518", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0859", + "adcode": "522300", + "name": "黔西南布依族苗族自治州", + "center": "104.906419,25.087733", + "level": "city", + "districts": [{ + "citycode": "0859", + "adcode": "522328", + "name": "安龙县", + "center": "105.442702,25.099014", + "level": "district", + "districts": [] + }, { + "citycode": "0859", + "adcode": "522326", + "name": "望谟县", + "center": "106.094864,25.174204", + "level": "district", + "districts": [] + }, { + "citycode": "0859", + "adcode": "522301", + "name": "兴义市", + "center": "104.895503,25.09196", + "level": "district", + "districts": [] + }, { + "citycode": "0859", + "adcode": "522323", + "name": "普安县", + "center": "104.953289,25.784225", + "level": "district", + "districts": [] + }, { + "citycode": "0859", + "adcode": "522324", + "name": "晴隆县", + "center": "105.218956,25.834729", + "level": "district", + "districts": [] + }, { + "citycode": "0859", + "adcode": "522327", + "name": "册亨县", + "center": "105.811592,24.983663", + "level": "district", + "districts": [] + }, { + "citycode": "0859", + "adcode": "522302", + "name": "兴仁市", + "center": "105.186132,25.43509", + "level": "district", + "districts": [] + }, { + "citycode": "0859", + "adcode": "522325", + "name": "贞丰县", + "center": "105.64976,25.38558", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0855", + "adcode": "522600", + "name": "黔东南苗族侗族自治州", + "center": "107.982838,26.583759", + "level": "city", + "districts": [{ + "citycode": "0855", + "adcode": "522627", + "name": "天柱县", + "center": "109.207826,26.909548", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522623", + "name": "施秉县", + "center": "108.124531,27.033107", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522636", + "name": "丹寨县", + "center": "107.789301,26.19857", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522601", + "name": "凯里市", + "center": "107.981409,26.5662", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522635", + "name": "麻江县", + "center": "107.589455,26.49129", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522630", + "name": "台江县", + "center": "108.321244,26.667525", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522622", + "name": "黄平县", + "center": "107.916651,26.905278", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522625", + "name": "镇远县", + "center": "108.429536,27.049033", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522626", + "name": "岑巩县", + "center": "108.815855,27.174124", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522624", + "name": "三穗县", + "center": "108.675265,26.953359", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522628", + "name": "锦屏县", + "center": "109.200808,26.675919", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522634", + "name": "雷山县", + "center": "108.078217,26.378892", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522631", + "name": "黎平县", + "center": "109.125826,26.213304", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522629", + "name": "剑河县", + "center": "108.441501,26.728274", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522632", + "name": "榕江县", + "center": "108.52188,25.931893", + "level": "district", + "districts": [] + }, { + "citycode": "0855", + "adcode": "522633", + "name": "从江县", + "center": "108.904998,25.754638", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0857", + "adcode": "520500", + "name": "毕节市", + "center": "105.291544,27.283615", + "level": "city", + "districts": [{ + "citycode": "0857", + "adcode": "520581", + "name": "黔西市", + "center": "106.032277,27.008681", + "level": "district", + "districts": [] + }, { + "citycode": "0857", + "adcode": "520523", + "name": "金沙县", + "center": "106.220112,27.458601", + "level": "district", + "districts": [] + }, { + "citycode": "0857", + "adcode": "520524", + "name": "织金县", + "center": "105.770249,26.663649", + "level": "district", + "districts": [] + }, { + "citycode": "0857", + "adcode": "520521", + "name": "大方县", + "center": "105.601963,27.14443", + "level": "district", + "districts": [] + }, { + "citycode": "0857", + "adcode": "520525", + "name": "纳雍县", + "center": "105.414578,26.779344", + "level": "district", + "districts": [] + }, { + "citycode": "0857", + "adcode": "520502", + "name": "七星关区", + "center": "105.305219,27.298304", + "level": "district", + "districts": [] + }, { + "citycode": "0857", + "adcode": "520527", + "name": "赫章县", + "center": "104.728011,27.117933", + "level": "district", + "districts": [] + }, { + "citycode": "0857", + "adcode": "520526", + "name": "威宁彝族回族苗族自治县", + "center": "104.252787,26.873872", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0851", + "adcode": "520100", + "name": "贵阳市", + "center": "106.628201,26.646694", + "level": "city", + "districts": [{ + "citycode": "0851", + "adcode": "520121", + "name": "开阳县", + "center": "106.964716,27.057823", + "level": "district", + "districts": [] + }, { + "citycode": "0851", + "adcode": "520113", + "name": "白云区", + "center": "106.623069,26.677932", + "level": "district", + "districts": [] + }, { + "citycode": "0851", + "adcode": "520123", + "name": "修文县", + "center": "106.591958,26.836048", + "level": "district", + "districts": [] + }, { + "citycode": "0851", + "adcode": "520181", + "name": "清镇市", + "center": "106.473131,26.572978", + "level": "district", + "districts": [] + }, { + "citycode": "0851", + "adcode": "520122", + "name": "息烽县", + "center": "106.740407,27.090479", + "level": "district", + "districts": [] + }, { + "citycode": "0851", + "adcode": "520115", + "name": "观山湖区", + "center": "106.598978,26.616134", + "level": "district", + "districts": [] + }, { + "citycode": "0851", + "adcode": "520112", + "name": "乌当区", + "center": "106.75069,26.630911", + "level": "district", + "districts": [] + }, { + "citycode": "0851", + "adcode": "520103", + "name": "云岩区", + "center": "106.724394,26.604604", + "level": "district", + "districts": [] + }, { + "citycode": "0851", + "adcode": "520111", + "name": "花溪区", + "center": "106.67026,26.409817", + "level": "district", + "districts": [] + }, { + "citycode": "0851", + "adcode": "520102", + "name": "南明区", + "center": "106.714305,26.568055", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": "023", + "adcode": "500000", + "name": "重庆市", + "center": "106.551787,29.56268", + "level": "province", + "districts": [{ + "citycode": "023", + "adcode": "500200", + "name": "重庆郊县", + "center": "108.170255,29.291965", + "level": "city", + "districts": [{ + "citycode": "023", + "adcode": "500238", + "name": "巫溪县", + "center": "109.570038,31.398619", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500236", + "name": "奉节县", + "center": "109.401056,31.018505", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500240", + "name": "石柱土家族自治县", + "center": "108.114251,29.999066", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500237", + "name": "巫山县", + "center": "109.878995,31.07478", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500230", + "name": "丰都县", + "center": "107.731056,29.863785", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500229", + "name": "城口县", + "center": "108.664349,31.947319", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500231", + "name": "垫江县", + "center": "107.332511,30.327548", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500235", + "name": "云阳县", + "center": "108.6975,30.930628", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500233", + "name": "忠县", + "center": "108.038073,30.299817", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500242", + "name": "酉阳土家族苗族自治县", + "center": "108.76726,28.841409", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500241", + "name": "秀山土家族苗族自治县", + "center": "109.007096,28.448248", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500243", + "name": "彭水苗族土家族自治县", + "center": "108.165571,29.293748", + "level": "district", + "districts": [] + }] + }, { + "citycode": "023", + "adcode": "500100", + "name": "重庆城区", + "center": "106.504962,29.533155", + "level": "city", + "districts": [{ + "citycode": "023", + "adcode": "500117", + "name": "合川区", + "center": "106.27617,29.971968", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500152", + "name": "潼南区", + "center": "105.840487,30.191077", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500115", + "name": "长寿区", + "center": "107.080945,29.857916", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500151", + "name": "铜梁区", + "center": "106.056265,29.845248", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500111", + "name": "大足区", + "center": "105.721825,29.707555", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500104", + "name": "大渡口区", + "center": "106.482299,29.484464", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500107", + "name": "九龙坡区", + "center": "106.510515,29.502325", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500108", + "name": "南岸区", + "center": "106.644254,29.50109", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500156", + "name": "武隆区", + "center": "107.759955,29.325707", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500110", + "name": "綦江区", + "center": "106.651213,29.028117", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500102", + "name": "涪陵区", + "center": "107.246521,29.752475", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500109", + "name": "北碚区", + "center": "106.395593,29.805197", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500119", + "name": "南川区", + "center": "107.099147,29.157879", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500118", + "name": "永川区", + "center": "105.926951,29.356384", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500153", + "name": "荣昌区", + "center": "105.6118,29.416892", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500116", + "name": "江津区", + "center": "106.264435,29.319984", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500113", + "name": "巴南区", + "center": "106.540603,29.402348", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500120", + "name": "璧山区", + "center": "106.204885,29.577455", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500101", + "name": "万州区", + "center": "108.408591,30.807621", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500154", + "name": "开州区", + "center": "108.39336,31.160416", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500103", + "name": "渝中区", + "center": "106.568955,29.552642", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500112", + "name": "渝北区", + "center": "106.631155,29.718087", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500105", + "name": "江北区", + "center": "106.574395,29.606224", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500155", + "name": "梁平区", + "center": "107.769568,30.654233", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500106", + "name": "沙坪坝区", + "center": "106.456939,29.541017", + "level": "district", + "districts": [] + }, { + "citycode": "023", + "adcode": "500114", + "name": "黔江区", + "center": "108.770677,29.533609", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "340000", + "name": "安徽省", + "center": "117.330139,31.734559", + "level": "province", + "districts": [{ + "citycode": "0562", + "adcode": "340700", + "name": "铜陵市", + "center": "117.811298,30.945214", + "level": "city", + "districts": [{ + "citycode": "0562", + "adcode": "340711", + "name": "郊区", + "center": "117.767919,30.821699", + "level": "district", + "districts": [] + }, { + "citycode": "0562", + "adcode": "340705", + "name": "铜官区", + "center": "117.856541,30.936772", + "level": "district", + "districts": [] + }, { + "citycode": "0562", + "adcode": "340722", + "name": "枞阳县", + "center": "117.250191,30.705466", + "level": "district", + "districts": [] + }, { + "citycode": "0562", + "adcode": "340706", + "name": "义安区", + "center": "117.937405,30.950619", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0566", + "adcode": "341700", + "name": "池州市", + "center": "117.495663,30.674264", + "level": "city", + "districts": [{ + "citycode": "0566", + "adcode": "341702", + "name": "贵池区", + "center": "117.568087,30.688237", + "level": "district", + "districts": [] + }, { + "citycode": "0566", + "adcode": "341722", + "name": "石台县", + "center": "117.486211,30.210218", + "level": "district", + "districts": [] + }, { + "citycode": "0566", + "adcode": "341723", + "name": "青阳县", + "center": "117.847366,30.639006", + "level": "district", + "districts": [] + }, { + "citycode": "0566", + "adcode": "341721", + "name": "东至县", + "center": "117.027533,30.111182", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0556", + "adcode": "340800", + "name": "安庆市", + "center": "117.115349,30.531828", + "level": "city", + "districts": [{ + "citycode": "0556", + "adcode": "340828", + "name": "岳西县", + "center": "116.359732,30.849716", + "level": "district", + "districts": [] + }, { + "citycode": "0556", + "adcode": "340881", + "name": "桐城市", + "center": "116.936588,31.035476", + "level": "district", + "districts": [] + }, { + "citycode": "0556", + "adcode": "340803", + "name": "大观区", + "center": "117.013469,30.553697", + "level": "district", + "districts": [] + }, { + "citycode": "0556", + "adcode": "340825", + "name": "太湖县", + "center": "116.30881,30.454198", + "level": "district", + "districts": [] + }, { + "citycode": "0556", + "adcode": "340826", + "name": "宿松县", + "center": "116.134485,30.171663", + "level": "district", + "districts": [] + }, { + "citycode": "0556", + "adcode": "340802", + "name": "迎江区", + "center": "117.090878,30.512768", + "level": "district", + "districts": [] + }, { + "citycode": "0556", + "adcode": "340811", + "name": "宜秀区", + "center": "116.987469,30.613189", + "level": "district", + "districts": [] + }, { + "citycode": "0556", + "adcode": "340882", + "name": "潜山市", + "center": "116.581224,30.631022", + "level": "district", + "districts": [] + }, { + "citycode": "0556", + "adcode": "340827", + "name": "望江县", + "center": "116.70641,30.128404", + "level": "district", + "districts": [] + }, { + "citycode": "0556", + "adcode": "340822", + "name": "怀宁县", + "center": "116.829612,30.73484", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0561", + "adcode": "340600", + "name": "淮北市", + "center": "116.798362,33.956264", + "level": "city", + "districts": [{ + "citycode": "0561", + "adcode": "340602", + "name": "杜集区", + "center": "116.827949,33.991412", + "level": "district", + "districts": [] + }, { + "citycode": "0561", + "adcode": "340603", + "name": "相山区", + "center": "116.795233,33.959927", + "level": "district", + "districts": [] + }, { + "citycode": "0561", + "adcode": "340621", + "name": "濉溪县", + "center": "116.76616,33.915612", + "level": "district", + "districts": [] + }, { + "citycode": "0561", + "adcode": "340604", + "name": "烈山区", + "center": "116.813221,33.895407", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0555", + "adcode": "340500", + "name": "马鞍山市", + "center": "118.50685,31.668765", + "level": "city", + "districts": [{ + "citycode": "0555", + "adcode": "340506", + "name": "博望区", + "center": "118.818276,31.55117", + "level": "district", + "districts": [] + }, { + "citycode": "0555", + "adcode": "340523", + "name": "和县", + "center": "118.353668,31.74248", + "level": "district", + "districts": [] + }, { + "citycode": "0555", + "adcode": "340522", + "name": "含山县", + "center": "118.101448,31.735559", + "level": "district", + "districts": [] + }, { + "citycode": "0555", + "adcode": "340521", + "name": "当涂县", + "center": "118.497873,31.570857", + "level": "district", + "districts": [] + }, { + "citycode": "0555", + "adcode": "340504", + "name": "雨山区", + "center": "118.498675,31.682374", + "level": "district", + "districts": [] + }, { + "citycode": "0555", + "adcode": "340503", + "name": "花山区", + "center": "118.511366,31.700127", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0558", + "adcode": "341600", + "name": "亳州市", + "center": "115.778588,33.846285", + "level": "city", + "districts": [{ + "citycode": "0558", + "adcode": "341602", + "name": "谯城区", + "center": "115.779081,33.876436", + "level": "district", + "districts": [] + }, { + "citycode": "0558", + "adcode": "341623", + "name": "利辛县", + "center": "116.206396,33.158424", + "level": "district", + "districts": [] + }, { + "citycode": "0558", + "adcode": "341622", + "name": "蒙城县", + "center": "116.56434,33.265671", + "level": "district", + "districts": [] + }, { + "citycode": "0558", + "adcode": "341621", + "name": "涡阳县", + "center": "116.21665,33.494134", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0564", + "adcode": "341500", + "name": "六安市", + "center": "116.519729,31.735892", + "level": "city", + "districts": [{ + "citycode": "0564", + "adcode": "341524", + "name": "金寨县", + "center": "115.934253,31.727295", + "level": "district", + "districts": [] + }, { + "citycode": "0564", + "adcode": "341522", + "name": "霍邱县", + "center": "116.277966,32.353362", + "level": "district", + "districts": [] + }, { + "citycode": "0564", + "adcode": "341502", + "name": "金安区", + "center": "116.539458,31.75014", + "level": "district", + "districts": [] + }, { + "citycode": "0564", + "adcode": "341503", + "name": "裕安区", + "center": "116.479505,31.738789", + "level": "district", + "districts": [] + }, { + "citycode": "0564", + "adcode": "341504", + "name": "叶集区", + "center": "115.925271,31.863693", + "level": "district", + "districts": [] + }, { + "citycode": "0564", + "adcode": "341525", + "name": "霍山县", + "center": "116.348274,31.409668", + "level": "district", + "districts": [] + }, { + "citycode": "0564", + "adcode": "341523", + "name": "舒城县", + "center": "116.94863,31.462036", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1558", + "adcode": "341200", + "name": "阜阳市", + "center": "115.814252,32.891032", + "level": "city", + "districts": [{ + "citycode": "1558", + "adcode": "341202", + "name": "颍州区", + "center": "115.806916,32.883322", + "level": "district", + "districts": [] + }, { + "citycode": "1558", + "adcode": "341221", + "name": "临泉县", + "center": "115.26312,33.038884", + "level": "district", + "districts": [] + }, { + "citycode": "1558", + "adcode": "341282", + "name": "界首市", + "center": "115.374688,33.257799", + "level": "district", + "districts": [] + }, { + "citycode": "1558", + "adcode": "341203", + "name": "颍东区", + "center": "115.856728,32.91173", + "level": "district", + "districts": [] + }, { + "citycode": "1558", + "adcode": "341204", + "name": "颍泉区", + "center": "115.807415,32.925461", + "level": "district", + "districts": [] + }, { + "citycode": "1558", + "adcode": "341222", + "name": "太和县", + "center": "115.621941,33.160327", + "level": "district", + "districts": [] + }, { + "citycode": "1558", + "adcode": "341226", + "name": "颍上县", + "center": "116.256772,32.653211", + "level": "district", + "districts": [] + }, { + "citycode": "1558", + "adcode": "341225", + "name": "阜南县", + "center": "115.596003,32.659681", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0554", + "adcode": "340400", + "name": "淮南市", + "center": "117.018603,32.585384", + "level": "city", + "districts": [{ + "citycode": "0554", + "adcode": "340406", + "name": "潘集区", + "center": "116.834715,32.77208", + "level": "district", + "districts": [] + }, { + "citycode": "0554", + "adcode": "340405", + "name": "八公山区", + "center": "116.832979,32.630922", + "level": "district", + "districts": [] + }, { + "citycode": "0554", + "adcode": "340404", + "name": "谢家集区", + "center": "116.860026,32.599173", + "level": "district", + "districts": [] + }, { + "citycode": "0554", + "adcode": "340403", + "name": "田家庵区", + "center": "117.017263,32.647456", + "level": "district", + "districts": [] + }, { + "citycode": "0554", + "adcode": "340402", + "name": "大通区", + "center": "117.053314,32.631519", + "level": "district", + "districts": [] + }, { + "citycode": "0554", + "adcode": "340422", + "name": "寿县", + "center": "116.798203,32.545027", + "level": "district", + "districts": [] + }, { + "citycode": "0554", + "adcode": "340421", + "name": "凤台县", + "center": "116.710947,32.710536", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0557", + "adcode": "341300", + "name": "宿州市", + "center": "116.96419,33.647726", + "level": "city", + "districts": [{ + "citycode": "0557", + "adcode": "341324", + "name": "泗县", + "center": "117.910277,33.483686", + "level": "district", + "districts": [] + }, { + "citycode": "0557", + "adcode": "341302", + "name": "埇桥区", + "center": "116.977039,33.640205", + "level": "district", + "districts": [] + }, { + "citycode": "0557", + "adcode": "341323", + "name": "灵璧县", + "center": "117.549321,33.554464", + "level": "district", + "districts": [] + }, { + "citycode": "0557", + "adcode": "341322", + "name": "萧县", + "center": "116.947289,34.18884", + "level": "district", + "districts": [] + }, { + "citycode": "0557", + "adcode": "341321", + "name": "砀山县", + "center": "116.366257,34.442139", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0552", + "adcode": "340300", + "name": "蚌埠市", + "center": "117.388566,32.91682", + "level": "city", + "districts": [{ + "citycode": "0552", + "adcode": "340311", + "name": "淮上区", + "center": "117.359352,32.96557", + "level": "district", + "districts": [] + }, { + "citycode": "0552", + "adcode": "340304", + "name": "禹会区", + "center": "117.34186,32.929715", + "level": "district", + "districts": [] + }, { + "citycode": "0552", + "adcode": "340303", + "name": "蚌山区", + "center": "117.373347,32.916393", + "level": "district", + "districts": [] + }, { + "citycode": "0552", + "adcode": "340302", + "name": "龙子湖区", + "center": "117.454544,32.90863", + "level": "district", + "districts": [] + }, { + "citycode": "0552", + "adcode": "340321", + "name": "怀远县", + "center": "117.205083,32.971543", + "level": "district", + "districts": [] + }, { + "citycode": "0552", + "adcode": "340323", + "name": "固镇县", + "center": "117.316585,33.318371", + "level": "district", + "districts": [] + }, { + "citycode": "0552", + "adcode": "340322", + "name": "五河县", + "center": "117.881312,33.126532", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0553", + "adcode": "340200", + "name": "芜湖市", + "center": "118.433065,31.352614", + "level": "city", + "districts": [{ + "citycode": "0553", + "adcode": "340209", + "name": "弋江区", + "center": "118.372664,31.311421", + "level": "district", + "districts": [] + }, { + "citycode": "0553", + "adcode": "340212", + "name": "繁昌区", + "center": "118.198536,31.101766", + "level": "district", + "districts": [] + }, { + "citycode": "0553", + "adcode": "340202", + "name": "镜湖区", + "center": "118.385133,31.34056", + "level": "district", + "districts": [] + }, { + "citycode": "0553", + "adcode": "340223", + "name": "南陵县", + "center": "118.334083,30.914621", + "level": "district", + "districts": [] + }, { + "citycode": "0553", + "adcode": "340281", + "name": "无为市", + "center": "117.902265,31.304462", + "level": "district", + "districts": [] + }, { + "citycode": "0553", + "adcode": "340210", + "name": "湾沚区", + "center": "118.576124,31.134809", + "level": "district", + "districts": [] + }, { + "citycode": "0553", + "adcode": "340207", + "name": "鸠江区", + "center": "118.392337,31.369752", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0551", + "adcode": "340100", + "name": "合肥市", + "center": "117.227267,31.820567", + "level": "city", + "districts": [{ + "citycode": "0551", + "adcode": "340103", + "name": "庐阳区", + "center": "117.265088,31.878722", + "level": "district", + "districts": [] + }, { + "citycode": "0551", + "adcode": "340111", + "name": "包河区", + "center": "117.310133,31.793801", + "level": "district", + "districts": [] + }, { + "citycode": "0551", + "adcode": "340102", + "name": "瑶海区", + "center": "117.30944,31.858111", + "level": "district", + "districts": [] + }, { + "citycode": "0551", + "adcode": "340123", + "name": "肥西县", + "center": "117.158416,31.707006", + "level": "district", + "districts": [] + }, { + "citycode": "0551", + "adcode": "340104", + "name": "蜀山区", + "center": "117.26053,31.851211", + "level": "district", + "districts": [] + }, { + "citycode": "0551", + "adcode": "340124", + "name": "庐江县", + "center": "117.288165,31.256978", + "level": "district", + "districts": [] + }, { + "citycode": "0551", + "adcode": "340121", + "name": "长丰县", + "center": "117.167632,32.478347", + "level": "district", + "districts": [] + }, { + "citycode": "0551", + "adcode": "340122", + "name": "肥东县", + "center": "117.4779,31.878601", + "level": "district", + "districts": [] + }, { + "citycode": "0551", + "adcode": "340181", + "name": "巢湖市", + "center": "117.890236,31.624464", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0550", + "adcode": "341100", + "name": "滁州市", + "center": "118.333439,32.255904", + "level": "city", + "districts": [{ + "citycode": "0550", + "adcode": "341126", + "name": "凤阳县", + "center": "117.531791,32.875714", + "level": "district", + "districts": [] + }, { + "citycode": "0550", + "adcode": "341182", + "name": "明光市", + "center": "118.018197,32.78193", + "level": "district", + "districts": [] + }, { + "citycode": "0550", + "adcode": "341124", + "name": "全椒县", + "center": "118.274149,32.08593", + "level": "district", + "districts": [] + }, { + "citycode": "0550", + "adcode": "341181", + "name": "天长市", + "center": "119.004838,32.667409", + "level": "district", + "districts": [] + }, { + "citycode": "0550", + "adcode": "341102", + "name": "琅琊区", + "center": "118.32115,32.334475", + "level": "district", + "districts": [] + }, { + "citycode": "0550", + "adcode": "341103", + "name": "南谯区", + "center": "118.416715,32.200084", + "level": "district", + "districts": [] + }, { + "citycode": "0550", + "adcode": "341125", + "name": "定远县", + "center": "117.698528,32.530741", + "level": "district", + "districts": [] + }, { + "citycode": "0550", + "adcode": "341122", + "name": "来安县", + "center": "118.432581,32.423072", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0559", + "adcode": "341000", + "name": "黄山市", + "center": "118.337643,29.714886", + "level": "city", + "districts": [{ + "citycode": "0559", + "adcode": "341003", + "name": "黄山区", + "center": "118.141632,30.272991", + "level": "district", + "districts": [] + }, { + "citycode": "0559", + "adcode": "341022", + "name": "休宁县", + "center": "118.193533,29.784532", + "level": "district", + "districts": [] + }, { + "citycode": "0559", + "adcode": "341024", + "name": "祁门县", + "center": "117.717452,29.854179", + "level": "district", + "districts": [] + }, { + "citycode": "0559", + "adcode": "341023", + "name": "黟县", + "center": "117.938139,29.92477", + "level": "district", + "districts": [] + }, { + "citycode": "0559", + "adcode": "341004", + "name": "徽州区", + "center": "118.336799,29.827291", + "level": "district", + "districts": [] + }, { + "citycode": "0559", + "adcode": "341002", + "name": "屯溪区", + "center": "118.315012,29.69655", + "level": "district", + "districts": [] + }, { + "citycode": "0559", + "adcode": "341021", + "name": "歙县", + "center": "118.415258,29.861354", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0563", + "adcode": "341800", + "name": "宣城市", + "center": "118.759127,30.939278", + "level": "city", + "districts": [{ + "citycode": "0563", + "adcode": "341825", + "name": "旌德县", + "center": "118.550043,30.298287", + "level": "district", + "districts": [] + }, { + "citycode": "0563", + "adcode": "341881", + "name": "宁国市", + "center": "118.983085,30.634032", + "level": "district", + "districts": [] + }, { + "citycode": "0563", + "adcode": "341823", + "name": "泾县", + "center": "118.419552,30.688793", + "level": "district", + "districts": [] + }, { + "citycode": "0563", + "adcode": "341802", + "name": "宣州区", + "center": "118.786098,30.944356", + "level": "district", + "districts": [] + }, { + "citycode": "0563", + "adcode": "341821", + "name": "郎溪县", + "center": "119.184326,31.142995", + "level": "district", + "districts": [] + }, { + "citycode": "0563", + "adcode": "341882", + "name": "广德市", + "center": "119.420799,30.877608", + "level": "district", + "districts": [] + }, { + "citycode": "0563", + "adcode": "341824", + "name": "绩溪县", + "center": "118.578519,30.067533", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "350000", + "name": "福建省", + "center": "119.296194,26.101082", + "level": "province", + "districts": [{ + "citycode": "0593", + "adcode": "350900", + "name": "宁德市", + "center": "119.547729,26.666222", + "level": "city", + "districts": [{ + "citycode": "0593", + "adcode": "350982", + "name": "福鼎市", + "center": "120.216559,27.324796", + "level": "district", + "districts": [] + }, { + "citycode": "0593", + "adcode": "350902", + "name": "蕉城区", + "center": "119.526284,26.660658", + "level": "district", + "districts": [] + }, { + "citycode": "0593", + "adcode": "350921", + "name": "霞浦县", + "center": "120.005267,26.885971", + "level": "district", + "districts": [] + }, { + "citycode": "0593", + "adcode": "350922", + "name": "古田县", + "center": "118.74603,26.578134", + "level": "district", + "districts": [] + }, { + "citycode": "0593", + "adcode": "350981", + "name": "福安市", + "center": "119.647871,27.088274", + "level": "district", + "districts": [] + }, { + "citycode": "0593", + "adcode": "350924", + "name": "寿宁县", + "center": "119.514589,27.45467", + "level": "district", + "districts": [] + }, { + "citycode": "0593", + "adcode": "350926", + "name": "柘荣县", + "center": "119.900597,27.23421", + "level": "district", + "districts": [] + }, { + "citycode": "0593", + "adcode": "350925", + "name": "周宁县", + "center": "119.338998,27.104797", + "level": "district", + "districts": [] + }, { + "citycode": "0593", + "adcode": "350923", + "name": "屏南县", + "center": "118.985759,26.908256", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0591", + "adcode": "350100", + "name": "福州市", + "center": "119.296411,26.074286", + "level": "city", + "districts": [{ + "citycode": "0591", + "adcode": "350123", + "name": "罗源县", + "center": "119.549129,26.490215", + "level": "district", + "districts": [] + }, { + "citycode": "0591", + "adcode": "350124", + "name": "闽清县", + "center": "118.863334,26.221099", + "level": "district", + "districts": [] + }, { + "citycode": "0591", + "adcode": "350122", + "name": "连江县", + "center": "119.539542,26.197737", + "level": "district", + "districts": [] + }, { + "citycode": "0591", + "adcode": "350181", + "name": "福清市", + "center": "119.384388,25.720081", + "level": "district", + "districts": [] + }, { + "citycode": "0591", + "adcode": "350112", + "name": "长乐区", + "center": "119.593579,25.888274", + "level": "district", + "districts": [] + }, { + "citycode": "0591", + "adcode": "350128", + "name": "平潭县", + "center": "119.789893,25.498767", + "level": "district", + "districts": [] + }, { + "citycode": "0591", + "adcode": "350103", + "name": "台江区", + "center": "119.31419,26.052826", + "level": "district", + "districts": [] + }, { + "citycode": "0591", + "adcode": "350125", + "name": "永泰县", + "center": "118.932746,25.867198", + "level": "district", + "districts": [] + }, { + "citycode": "0591", + "adcode": "350102", + "name": "鼓楼区", + "center": "119.304507,26.082666", + "level": "district", + "districts": [] + }, { + "citycode": "0591", + "adcode": "350111", + "name": "晋安区", + "center": "119.328591,26.081963", + "level": "district", + "districts": [] + }, { + "citycode": "0591", + "adcode": "350105", + "name": "马尾区", + "center": "119.439259,25.998657", + "level": "district", + "districts": [] + }, { + "citycode": "0591", + "adcode": "350104", + "name": "仓山区", + "center": "119.27322,26.047027", + "level": "district", + "districts": [] + }, { + "citycode": "0591", + "adcode": "350121", + "name": "闽侯县", + "center": "119.131362,26.150428", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0594", + "adcode": "350300", + "name": "莆田市", + "center": "119.007662,25.454202", + "level": "city", + "districts": [{ + "citycode": "0594", + "adcode": "350305", + "name": "秀屿区", + "center": "119.105177,25.318649", + "level": "district", + "districts": [] + }, { + "citycode": "0594", + "adcode": "350304", + "name": "荔城区", + "center": "119.014821,25.432268", + "level": "district", + "districts": [] + }, { + "citycode": "0594", + "adcode": "350302", + "name": "城厢区", + "center": "118.994261,25.419062", + "level": "district", + "districts": [] + }, { + "citycode": "0594", + "adcode": "350322", + "name": "仙游县", + "center": "118.689745,25.373373", + "level": "district", + "districts": [] + }, { + "citycode": "0594", + "adcode": "350303", + "name": "涵江区", + "center": "119.116173,25.459057", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0595", + "adcode": "350500", + "name": "泉州市", + "center": "118.675724,24.874452", + "level": "city", + "districts": [{ + "citycode": "0595", + "adcode": "350504", + "name": "洛江区", + "center": "118.671168,24.939319", + "level": "district", + "districts": [] + }, { + "citycode": "0595", + "adcode": "350521", + "name": "惠安县", + "center": "118.781037,25.012449", + "level": "district", + "districts": [] + }, { + "citycode": "0595", + "adcode": "350582", + "name": "晋江市", + "center": "118.551659,24.781635", + "level": "district", + "districts": [] + }, { + "citycode": "0595", + "adcode": "350583", + "name": "南安市", + "center": "118.385929,24.960056", + "level": "district", + "districts": [] + }, { + "citycode": "0595", + "adcode": "350527", + "name": "金门县", + "center": "118.323912,24.434368", + "level": "district", + "districts": [] + }, { + "citycode": "0595", + "adcode": "350505", + "name": "泉港区", + "center": "118.915804,25.120399", + "level": "district", + "districts": [] + }, { + "citycode": "0595", + "adcode": "350581", + "name": "石狮市", + "center": "118.647945,24.731969", + "level": "district", + "districts": [] + }, { + "citycode": "0595", + "adcode": "350526", + "name": "德化县", + "center": "118.241104,25.492102", + "level": "district", + "districts": [] + }, { + "citycode": "0595", + "adcode": "350503", + "name": "丰泽区", + "center": "118.613007,24.890373", + "level": "district", + "districts": [] + }, { + "citycode": "0595", + "adcode": "350502", + "name": "鲤城区", + "center": "118.58652,24.908133", + "level": "district", + "districts": [] + }, { + "citycode": "0595", + "adcode": "350525", + "name": "永春县", + "center": "118.29416,25.321849", + "level": "district", + "districts": [] + }, { + "citycode": "0595", + "adcode": "350524", + "name": "安溪县", + "center": "118.186295,25.056065", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0592", + "adcode": "350200", + "name": "厦门市", + "center": "118.08891,24.479627", + "level": "city", + "districts": [{ + "citycode": "0592", + "adcode": "350206", + "name": "湖里区", + "center": "118.146825,24.512858", + "level": "district", + "districts": [] + }, { + "citycode": "0592", + "adcode": "350203", + "name": "思明区", + "center": "118.082745,24.445676", + "level": "district", + "districts": [] + }, { + "citycode": "0592", + "adcode": "350213", + "name": "翔安区", + "center": "118.247911,24.618583", + "level": "district", + "districts": [] + }, { + "citycode": "0592", + "adcode": "350212", + "name": "同安区", + "center": "118.150823,24.723299", + "level": "district", + "districts": [] + }, { + "citycode": "0592", + "adcode": "350211", + "name": "集美区", + "center": "118.097407,24.575976", + "level": "district", + "districts": [] + }, { + "citycode": "0592", + "adcode": "350205", + "name": "海沧区", + "center": "118.032883,24.484688", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0596", + "adcode": "350600", + "name": "漳州市", + "center": "117.647298,24.515297", + "level": "city", + "districts": [{ + "citycode": "0596", + "adcode": "350604", + "name": "龙海区", + "center": "117.818485,24.446839", + "level": "district", + "districts": [] + }, { + "citycode": "0596", + "adcode": "350623", + "name": "漳浦县", + "center": "117.613783,24.11741", + "level": "district", + "districts": [] + }, { + "citycode": "0596", + "adcode": "350626", + "name": "东山县", + "center": "117.4295,23.702034", + "level": "district", + "districts": [] + }, { + "citycode": "0596", + "adcode": "350605", + "name": "长泰区", + "center": "117.759119,24.625989", + "level": "district", + "districts": [] + }, { + "citycode": "0596", + "adcode": "350628", + "name": "平和县", + "center": "117.314798,24.363831", + "level": "district", + "districts": [] + }, { + "citycode": "0596", + "adcode": "350603", + "name": "龙文区", + "center": "117.711188,24.503523", + "level": "district", + "districts": [] + }, { + "citycode": "0596", + "adcode": "350629", + "name": "华安县", + "center": "117.53411,25.00445", + "level": "district", + "districts": [] + }, { + "citycode": "0596", + "adcode": "350627", + "name": "南靖县", + "center": "117.357061,24.5151", + "level": "district", + "districts": [] + }, { + "citycode": "0596", + "adcode": "350602", + "name": "芗城区", + "center": "117.653727,24.510937", + "level": "district", + "districts": [] + }, { + "citycode": "0596", + "adcode": "350624", + "name": "诏安县", + "center": "117.175314,23.711674", + "level": "district", + "districts": [] + }, { + "citycode": "0596", + "adcode": "350622", + "name": "云霄县", + "center": "117.334351,23.935433", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0598", + "adcode": "350400", + "name": "三明市", + "center": "117.638919,26.263455", + "level": "city", + "districts": [{ + "citycode": "0598", + "adcode": "350426", + "name": "尤溪县", + "center": "118.189772,26.168712", + "level": "district", + "districts": [] + }, { + "citycode": "0598", + "adcode": "350425", + "name": "大田县", + "center": "117.846828,25.692535", + "level": "district", + "districts": [] + }, { + "citycode": "0598", + "adcode": "350404", + "name": "三元区", + "center": "117.646153,26.271653", + "level": "district", + "districts": [] + }, { + "citycode": "0598", + "adcode": "350405", + "name": "沙县区", + "center": "117.792551,26.396843", + "level": "district", + "districts": [] + }, { + "citycode": "0598", + "adcode": "350421", + "name": "明溪县", + "center": "117.202119,26.355938", + "level": "district", + "districts": [] + }, { + "citycode": "0598", + "adcode": "350424", + "name": "宁化县", + "center": "116.654369,26.262298", + "level": "district", + "districts": [] + }, { + "citycode": "0598", + "adcode": "350423", + "name": "清流县", + "center": "116.816772,26.177658", + "level": "district", + "districts": [] + }, { + "citycode": "0598", + "adcode": "350481", + "name": "永安市", + "center": "117.365046,25.941671", + "level": "district", + "districts": [] + }, { + "citycode": "0598", + "adcode": "350428", + "name": "将乐县", + "center": "117.471127,26.728917", + "level": "district", + "districts": [] + }, { + "citycode": "0598", + "adcode": "350429", + "name": "泰宁县", + "center": "117.175448,26.900244", + "level": "district", + "districts": [] + }, { + "citycode": "0598", + "adcode": "350430", + "name": "建宁县", + "center": "116.848488,26.833566", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0597", + "adcode": "350800", + "name": "龙岩市", + "center": "117.017362,25.075884", + "level": "city", + "districts": [{ + "citycode": "0597", + "adcode": "350803", + "name": "永定区", + "center": "116.732216,24.724148", + "level": "district", + "districts": [] + }, { + "citycode": "0597", + "adcode": "350802", + "name": "新罗区", + "center": "117.036816,25.098942", + "level": "district", + "districts": [] + }, { + "citycode": "0597", + "adcode": "350881", + "name": "漳平市", + "center": "117.419823,25.290481", + "level": "district", + "districts": [] + }, { + "citycode": "0597", + "adcode": "350825", + "name": "连城县", + "center": "116.754472,25.710538", + "level": "district", + "districts": [] + }, { + "citycode": "0597", + "adcode": "350821", + "name": "长汀县", + "center": "116.357581,25.833531", + "level": "district", + "districts": [] + }, { + "citycode": "0597", + "adcode": "350823", + "name": "上杭县", + "center": "116.419447,25.049867", + "level": "district", + "districts": [] + }, { + "citycode": "0597", + "adcode": "350824", + "name": "武平县", + "center": "116.100216,25.096139", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0599", + "adcode": "350700", + "name": "南平市", + "center": "118.081325,27.382829", + "level": "city", + "districts": [{ + "citycode": "0599", + "adcode": "350722", + "name": "浦城县", + "center": "118.541079,27.917804", + "level": "district", + "districts": [] + }, { + "citycode": "0599", + "adcode": "350723", + "name": "光泽县", + "center": "117.333812,27.541061", + "level": "district", + "districts": [] + }, { + "citycode": "0599", + "adcode": "350703", + "name": "建阳区", + "center": "118.120392,27.331996", + "level": "district", + "districts": [] + }, { + "citycode": "0599", + "adcode": "350724", + "name": "松溪县", + "center": "118.785429,27.526028", + "level": "district", + "districts": [] + }, { + "citycode": "0599", + "adcode": "350725", + "name": "政和县", + "center": "118.857703,27.366122", + "level": "district", + "districts": [] + }, { + "citycode": "0599", + "adcode": "350702", + "name": "延平区", + "center": "118.181806,26.637503", + "level": "district", + "districts": [] + }, { + "citycode": "0599", + "adcode": "350783", + "name": "建瓯市", + "center": "118.304712,27.023233", + "level": "district", + "districts": [] + }, { + "citycode": "0599", + "adcode": "350721", + "name": "顺昌县", + "center": "117.809433,26.793455", + "level": "district", + "districts": [] + }, { + "citycode": "0599", + "adcode": "350781", + "name": "邵武市", + "center": "117.492778,27.340672", + "level": "district", + "districts": [] + }, { + "citycode": "0599", + "adcode": "350782", + "name": "武夷山市", + "center": "118.035321,27.756422", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "430000", + "name": "湖南省", + "center": "112.982951,28.116007", + "level": "province", + "districts": [{ + "citycode": "0730", + "adcode": "430600", + "name": "岳阳市", + "center": "113.128922,29.35648", + "level": "city", + "districts": [{ + "citycode": "0730", + "adcode": "430603", + "name": "云溪区", + "center": "113.272312,29.472745", + "level": "district", + "districts": [] + }, { + "citycode": "0730", + "adcode": "430623", + "name": "华容县", + "center": "112.540448,29.530775", + "level": "district", + "districts": [] + }, { + "citycode": "0730", + "adcode": "430682", + "name": "临湘市", + "center": "113.450461,29.476687", + "level": "district", + "districts": [] + }, { + "citycode": "0730", + "adcode": "430611", + "name": "君山区", + "center": "113.006434,29.461017", + "level": "district", + "districts": [] + }, { + "citycode": "0730", + "adcode": "430624", + "name": "湘阴县", + "center": "112.909248,28.690123", + "level": "district", + "districts": [] + }, { + "citycode": "0730", + "adcode": "430626", + "name": "平江县", + "center": "113.581296,28.702018", + "level": "district", + "districts": [] + }, { + "citycode": "0730", + "adcode": "430602", + "name": "岳阳楼区", + "center": "113.129362,29.371356", + "level": "district", + "districts": [] + }, { + "citycode": "0730", + "adcode": "430621", + "name": "岳阳县", + "center": "113.116152,29.144681", + "level": "district", + "districts": [] + }, { + "citycode": "0730", + "adcode": "430681", + "name": "汨罗市", + "center": "113.067097,28.806937", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0745", + "adcode": "431200", + "name": "怀化市", + "center": "110.001598,27.569813", + "level": "city", + "districts": [{ + "citycode": "0745", + "adcode": "431230", + "name": "通道侗族自治县", + "center": "109.784409,26.158032", + "level": "district", + "districts": [] + }, { + "citycode": "0745", + "adcode": "431223", + "name": "辰溪县", + "center": "110.183159,28.006235", + "level": "district", + "districts": [] + }, { + "citycode": "0745", + "adcode": "431226", + "name": "麻阳苗族自治县", + "center": "109.817703,27.857666", + "level": "district", + "districts": [] + }, { + "citycode": "0745", + "adcode": "431225", + "name": "会同县", + "center": "109.734724,26.887156", + "level": "district", + "districts": [] + }, { + "citycode": "0745", + "adcode": "431224", + "name": "溆浦县", + "center": "110.594419,27.908869", + "level": "district", + "districts": [] + }, { + "citycode": "0745", + "adcode": "431281", + "name": "洪江市", + "center": "109.836475,27.209385", + "level": "district", + "districts": [] + }, { + "citycode": "0745", + "adcode": "431227", + "name": "新晃侗族自治县", + "center": "109.174808,27.352094", + "level": "district", + "districts": [] + }, { + "citycode": "0745", + "adcode": "431229", + "name": "靖州苗族侗族自治县", + "center": "109.696249,26.575111", + "level": "district", + "districts": [] + }, { + "citycode": "0745", + "adcode": "431228", + "name": "芷江侗族自治县", + "center": "109.684696,27.443429", + "level": "district", + "districts": [] + }, { + "citycode": "0745", + "adcode": "431202", + "name": "鹤城区", + "center": "110.040099,27.578581", + "level": "district", + "districts": [] + }, { + "citycode": "0745", + "adcode": "431221", + "name": "中方县", + "center": "109.945436,27.440554", + "level": "district", + "districts": [] + }, { + "citycode": "0745", + "adcode": "431222", + "name": "沅陵县", + "center": "110.393782,28.452103", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0743", + "adcode": "433100", + "name": "湘西土家族苗族自治州", + "center": "109.673345,28.215983", + "level": "city", + "districts": [{ + "citycode": "0743", + "adcode": "433127", + "name": "永顺县", + "center": "109.857142,28.979819", + "level": "district", + "districts": [] + }, { + "citycode": "0743", + "adcode": "433125", + "name": "保靖县", + "center": "109.660433,28.699939", + "level": "district", + "districts": [] + }, { + "citycode": "0743", + "adcode": "433122", + "name": "泸溪县", + "center": "110.219619,28.216109", + "level": "district", + "districts": [] + }, { + "citycode": "0743", + "adcode": "433126", + "name": "古丈县", + "center": "109.95072,28.616971", + "level": "district", + "districts": [] + }, { + "citycode": "0743", + "adcode": "433130", + "name": "龙山县", + "center": "109.443974,29.457623", + "level": "district", + "districts": [] + }, { + "citycode": "0743", + "adcode": "433101", + "name": "吉首市", + "center": "109.698348,28.261948", + "level": "district", + "districts": [] + }, { + "citycode": "0743", + "adcode": "433123", + "name": "凤凰县", + "center": "109.580815,27.957441", + "level": "district", + "districts": [] + }, { + "citycode": "0743", + "adcode": "433124", + "name": "花垣县", + "center": "109.482378,28.57191", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0737", + "adcode": "430900", + "name": "益阳市", + "center": "112.355994,28.554853", + "level": "city", + "districts": [{ + "citycode": "0737", + "adcode": "430981", + "name": "沅江市", + "center": "112.354657,28.845755", + "level": "district", + "districts": [] + }, { + "citycode": "0737", + "adcode": "430921", + "name": "南县", + "center": "112.396323,29.362396", + "level": "district", + "districts": [] + }, { + "citycode": "0737", + "adcode": "430903", + "name": "赫山区", + "center": "112.373895,28.58011", + "level": "district", + "districts": [] + }, { + "citycode": "0737", + "adcode": "430922", + "name": "桃江县", + "center": "112.156432,28.518215", + "level": "district", + "districts": [] + }, { + "citycode": "0737", + "adcode": "430923", + "name": "安化县", + "center": "111.213296,28.374223", + "level": "district", + "districts": [] + }, { + "citycode": "0737", + "adcode": "430902", + "name": "资阳区", + "center": "112.324286,28.59149", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0744", + "adcode": "430800", + "name": "张家界市", + "center": "110.478887,29.117343", + "level": "city", + "districts": [{ + "citycode": "0744", + "adcode": "430802", + "name": "永定区", + "center": "110.537379,29.119662", + "level": "district", + "districts": [] + }, { + "citycode": "0744", + "adcode": "430822", + "name": "桑植县", + "center": "110.204804,29.414112", + "level": "district", + "districts": [] + }, { + "citycode": "0744", + "adcode": "430811", + "name": "武陵源区", + "center": "110.550309,29.345721", + "level": "district", + "districts": [] + }, { + "citycode": "0744", + "adcode": "430821", + "name": "慈利县", + "center": "111.139424,29.430429", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0733", + "adcode": "430200", + "name": "株洲市", + "center": "113.132783,27.828862", + "level": "city", + "districts": [{ + "citycode": "0733", + "adcode": "430202", + "name": "荷塘区", + "center": "113.173169,27.856314", + "level": "district", + "districts": [] + }, { + "citycode": "0733", + "adcode": "430223", + "name": "攸县", + "center": "113.397152,27.01516", + "level": "district", + "districts": [] + }, { + "citycode": "0733", + "adcode": "430211", + "name": "天元区", + "center": "113.082227,27.826738", + "level": "district", + "districts": [] + }, { + "citycode": "0733", + "adcode": "430212", + "name": "渌口区", + "center": "113.143832,27.699361", + "level": "district", + "districts": [] + }, { + "citycode": "0733", + "adcode": "430204", + "name": "石峰区", + "center": "113.117763,27.875513", + "level": "district", + "districts": [] + }, { + "citycode": "0733", + "adcode": "430224", + "name": "茶陵县", + "center": "113.537907,26.777957", + "level": "district", + "districts": [] + }, { + "citycode": "0733", + "adcode": "430225", + "name": "炎陵县", + "center": "113.772665,26.489847", + "level": "district", + "districts": [] + }, { + "citycode": "0733", + "adcode": "430281", + "name": "醴陵市", + "center": "113.497119,27.6457", + "level": "district", + "districts": [] + }, { + "citycode": "0733", + "adcode": "430203", + "name": "芦淞区", + "center": "113.153455,27.785198", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0738", + "adcode": "431300", + "name": "娄底市", + "center": "111.994468,27.699838", + "level": "city", + "districts": [{ + "citycode": "0738", + "adcode": "431321", + "name": "双峰县", + "center": "112.174265,27.457996", + "level": "district", + "districts": [] + }, { + "citycode": "0738", + "adcode": "431381", + "name": "冷水江市", + "center": "111.459199,27.656017", + "level": "district", + "districts": [] + }, { + "citycode": "0738", + "adcode": "431322", + "name": "新化县", + "center": "111.327674,27.725416", + "level": "district", + "districts": [] + }, { + "citycode": "0738", + "adcode": "431302", + "name": "娄星区", + "center": "112.001922,27.730208", + "level": "district", + "districts": [] + }, { + "citycode": "0738", + "adcode": "431382", + "name": "涟源市", + "center": "111.663837,27.693813", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0735", + "adcode": "431000", + "name": "郴州市", + "center": "113.015517,25.770117", + "level": "city", + "districts": [{ + "citycode": "0735", + "adcode": "431003", + "name": "苏仙区", + "center": "113.042364,25.799624", + "level": "district", + "districts": [] + }, { + "citycode": "0735", + "adcode": "431026", + "name": "汝城县", + "center": "113.685193,25.533024", + "level": "district", + "districts": [] + }, { + "citycode": "0735", + "adcode": "431022", + "name": "宜章县", + "center": "112.948806,25.40059", + "level": "district", + "districts": [] + }, { + "citycode": "0735", + "adcode": "431028", + "name": "安仁县", + "center": "113.269703,26.708569", + "level": "district", + "districts": [] + }, { + "citycode": "0735", + "adcode": "431027", + "name": "桂东县", + "center": "113.944792,26.077609", + "level": "district", + "districts": [] + }, { + "citycode": "0735", + "adcode": "431081", + "name": "资兴市", + "center": "113.235841,25.977226", + "level": "district", + "districts": [] + }, { + "citycode": "0735", + "adcode": "431002", + "name": "北湖区", + "center": "113.010606,25.784632", + "level": "district", + "districts": [] + }, { + "citycode": "0735", + "adcode": "431021", + "name": "桂阳县", + "center": "112.733804,25.75382", + "level": "district", + "districts": [] + }, { + "citycode": "0735", + "adcode": "431025", + "name": "临武县", + "center": "112.563833,25.276459", + "level": "district", + "districts": [] + }, { + "citycode": "0735", + "adcode": "431024", + "name": "嘉禾县", + "center": "112.379216,25.616025", + "level": "district", + "districts": [] + }, { + "citycode": "0735", + "adcode": "431023", + "name": "永兴县", + "center": "113.116587,26.127155", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0746", + "adcode": "431100", + "name": "永州市", + "center": "111.613482,26.419861", + "level": "city", + "districts": [{ + "citycode": "0746", + "adcode": "431103", + "name": "冷水滩区", + "center": "111.592373,26.461313", + "level": "district", + "districts": [] + }, { + "citycode": "0746", + "adcode": "431126", + "name": "宁远县", + "center": "111.945925,25.570817", + "level": "district", + "districts": [] + }, { + "citycode": "0746", + "adcode": "431102", + "name": "零陵区", + "center": "111.629806,26.222278", + "level": "district", + "districts": [] + }, { + "citycode": "0746", + "adcode": "431128", + "name": "新田县", + "center": "112.203396,25.903965", + "level": "district", + "districts": [] + }, { + "citycode": "0746", + "adcode": "431123", + "name": "双牌县", + "center": "111.659967,25.961909", + "level": "district", + "districts": [] + }, { + "citycode": "0746", + "adcode": "431124", + "name": "道县", + "center": "111.600866,25.526282", + "level": "district", + "districts": [] + }, { + "citycode": "0746", + "adcode": "431181", + "name": "祁阳市", + "center": "111.840253,26.580292", + "level": "district", + "districts": [] + }, { + "citycode": "0746", + "adcode": "431127", + "name": "蓝山县", + "center": "112.195842,25.369575", + "level": "district", + "districts": [] + }, { + "citycode": "0746", + "adcode": "431125", + "name": "江永县", + "center": "111.343543,25.274461", + "level": "district", + "districts": [] + }, { + "citycode": "0746", + "adcode": "431122", + "name": "东安县", + "center": "111.315893,26.392173", + "level": "district", + "districts": [] + }, { + "citycode": "0746", + "adcode": "431129", + "name": "江华瑶族自治县", + "center": "111.57951,25.185257", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0734", + "adcode": "430400", + "name": "衡阳市", + "center": "112.572016,26.894216", + "level": "city", + "districts": [{ + "citycode": "0734", + "adcode": "430412", + "name": "南岳区", + "center": "112.737678,27.231846", + "level": "district", + "districts": [] + }, { + "citycode": "0734", + "adcode": "430421", + "name": "衡阳县", + "center": "112.370649,26.970258", + "level": "district", + "districts": [] + }, { + "citycode": "0734", + "adcode": "430405", + "name": "珠晖区", + "center": "112.620653,26.894796", + "level": "district", + "districts": [] + }, { + "citycode": "0734", + "adcode": "430407", + "name": "石鼓区", + "center": "112.597937,26.944257", + "level": "district", + "districts": [] + }, { + "citycode": "0734", + "adcode": "430482", + "name": "常宁市", + "center": "112.399894,26.421717", + "level": "district", + "districts": [] + }, { + "citycode": "0734", + "adcode": "430424", + "name": "衡东县", + "center": "112.953113,27.081086", + "level": "district", + "districts": [] + }, { + "citycode": "0734", + "adcode": "430422", + "name": "衡南县", + "center": "112.677572,26.739665", + "level": "district", + "districts": [] + }, { + "citycode": "0734", + "adcode": "430406", + "name": "雁峰区", + "center": "112.613914,26.840335", + "level": "district", + "districts": [] + }, { + "citycode": "0734", + "adcode": "430408", + "name": "蒸湘区", + "center": "112.567333,26.912388", + "level": "district", + "districts": [] + }, { + "citycode": "0734", + "adcode": "430481", + "name": "耒阳市", + "center": "112.859806,26.422149", + "level": "district", + "districts": [] + }, { + "citycode": "0734", + "adcode": "430426", + "name": "祁东县", + "center": "112.090319,26.799284", + "level": "district", + "districts": [] + }, { + "citycode": "0734", + "adcode": "430423", + "name": "衡山县", + "center": "112.868361,27.230225", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0736", + "adcode": "430700", + "name": "常德市", + "center": "111.69905,29.031446", + "level": "city", + "districts": [{ + "citycode": "0736", + "adcode": "430781", + "name": "津市市", + "center": "111.877957,29.606512", + "level": "district", + "districts": [] + }, { + "citycode": "0736", + "adcode": "430723", + "name": "澧县", + "center": "111.758806,29.633138", + "level": "district", + "districts": [] + }, { + "citycode": "0736", + "adcode": "430724", + "name": "临澧县", + "center": "111.647547,29.440813", + "level": "district", + "districts": [] + }, { + "citycode": "0736", + "adcode": "430726", + "name": "石门县", + "center": "111.380056,29.584344", + "level": "district", + "districts": [] + }, { + "citycode": "0736", + "adcode": "430703", + "name": "鼎城区", + "center": "111.679896,29.017596", + "level": "district", + "districts": [] + }, { + "citycode": "0736", + "adcode": "430702", + "name": "武陵区", + "center": "111.683043,29.055332", + "level": "district", + "districts": [] + }, { + "citycode": "0736", + "adcode": "430725", + "name": "桃源县", + "center": "111.488985,28.90232", + "level": "district", + "districts": [] + }, { + "citycode": "0736", + "adcode": "430722", + "name": "汉寿县", + "center": "111.970725,28.906063", + "level": "district", + "districts": [] + }, { + "citycode": "0736", + "adcode": "430721", + "name": "安乡县", + "center": "112.171107,29.41131", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0731", + "adcode": "430100", + "name": "长沙市", + "center": "112.938882,28.228304", + "level": "city", + "districts": [{ + "citycode": "0731", + "adcode": "430104", + "name": "岳麓区", + "center": "112.930116,28.234202", + "level": "district", + "districts": [] + }, { + "citycode": "0731", + "adcode": "430181", + "name": "浏阳市", + "center": "113.64328,28.163866", + "level": "district", + "districts": [] + }, { + "citycode": "0731", + "adcode": "430182", + "name": "宁乡市", + "center": "112.551887,28.277709", + "level": "district", + "districts": [] + }, { + "citycode": "0731", + "adcode": "430102", + "name": "芙蓉区", + "center": "113.032605,28.185351", + "level": "district", + "districts": [] + }, { + "citycode": "0731", + "adcode": "430105", + "name": "开福区", + "center": "112.985284,28.257286", + "level": "district", + "districts": [] + }, { + "citycode": "0731", + "adcode": "430111", + "name": "雨花区", + "center": "113.03853,28.135795", + "level": "district", + "districts": [] + }, { + "citycode": "0731", + "adcode": "430103", + "name": "天心区", + "center": "112.98978,28.114544", + "level": "district", + "districts": [] + }, { + "citycode": "0731", + "adcode": "430121", + "name": "长沙县", + "center": "113.080555,28.246821", + "level": "district", + "districts": [] + }, { + "citycode": "0731", + "adcode": "430112", + "name": "望城区", + "center": "112.83125,28.353221", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0739", + "adcode": "430500", + "name": "邵阳市", + "center": "111.467855,27.239528", + "level": "city", + "districts": [{ + "citycode": "0739", + "adcode": "430527", + "name": "绥宁县", + "center": "110.155532,26.582027", + "level": "district", + "districts": [] + }, { + "citycode": "0739", + "adcode": "430503", + "name": "大祥区", + "center": "111.438892,27.222078", + "level": "district", + "districts": [] + }, { + "citycode": "0739", + "adcode": "430502", + "name": "双清区", + "center": "111.496946,27.232286", + "level": "district", + "districts": [] + }, { + "citycode": "0739", + "adcode": "430511", + "name": "北塔区", + "center": "111.451988,27.246244", + "level": "district", + "districts": [] + }, { + "citycode": "0739", + "adcode": "430529", + "name": "城步苗族自治县", + "center": "110.322239,26.390598", + "level": "district", + "districts": [] + }, { + "citycode": "0739", + "adcode": "430524", + "name": "隆回县", + "center": "111.032437,27.113978", + "level": "district", + "districts": [] + }, { + "citycode": "0739", + "adcode": "430525", + "name": "洞口县", + "center": "110.575962,27.060274", + "level": "district", + "districts": [] + }, { + "citycode": "0739", + "adcode": "430522", + "name": "新邵县", + "center": "111.458656,27.320917", + "level": "district", + "districts": [] + }, { + "citycode": "0739", + "adcode": "430582", + "name": "邵东市", + "center": "111.744268,27.259812", + "level": "district", + "districts": [] + }, { + "citycode": "0739", + "adcode": "430528", + "name": "新宁县", + "center": "110.857294,26.432913", + "level": "district", + "districts": [] + }, { + "citycode": "0739", + "adcode": "430523", + "name": "邵阳县", + "center": "111.273872,26.990785", + "level": "district", + "districts": [] + }, { + "citycode": "0739", + "adcode": "430581", + "name": "武冈市", + "center": "110.632286,26.727414", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0732", + "adcode": "430300", + "name": "湘潭市", + "center": "112.945439,27.83136", + "level": "city", + "districts": [{ + "citycode": "0732", + "adcode": "430304", + "name": "岳塘区", + "center": "112.969444,27.872013", + "level": "district", + "districts": [] + }, { + "citycode": "0732", + "adcode": "430302", + "name": "雨湖区", + "center": "112.907334,27.856115", + "level": "district", + "districts": [] + }, { + "citycode": "0732", + "adcode": "430382", + "name": "韶山市", + "center": "112.525364,27.914796", + "level": "district", + "districts": [] + }, { + "citycode": "0732", + "adcode": "430321", + "name": "湘潭县", + "center": "112.950767,27.779669", + "level": "district", + "districts": [] + }, { + "citycode": "0732", + "adcode": "430381", + "name": "湘乡市", + "center": "112.550268,27.718655", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "460000", + "name": "海南省", + "center": "110.348781,20.018639", + "level": "province", + "districts": [{ + "citycode": "1892", + "adcode": "469022", + "name": "屯昌县", + "center": "110.101667,19.351662", + "level": "city", + "districts": [{ + "citycode": "1892", + "adcode": "469022", + "name": "西昌镇", + "center": "109.953863,19.415440", + "level": "street", + "districts": [] + }, { + "citycode": "1892", + "adcode": "469022", + "name": "坡心镇", + "center": "110.214429,19.310397", + "level": "street", + "districts": [] + }, { + "citycode": "1892", + "adcode": "469022", + "name": "枫木镇", + "center": "109.973395,19.190743", + "level": "street", + "districts": [] + }, { + "citycode": "1892", + "adcode": "469022", + "name": "南坤镇", + "center": "110.034905,19.407514", + "level": "street", + "districts": [] + }, { + "citycode": "1892", + "adcode": "469022", + "name": "乌坡镇", + "center": "110.083261,19.206717", + "level": "street", + "districts": [] + }, { + "citycode": "1892", + "adcode": "469022", + "name": "屯城镇", + "center": "110.180636,19.319861", + "level": "street", + "districts": [] + }, { + "citycode": "1892", + "adcode": "469022", + "name": "南吕镇", + "center": "110.042989,19.268166", + "level": "street", + "districts": [] + }, { + "citycode": "1892", + "adcode": "469022", + "name": "新兴镇", + "center": "110.136198,19.558967", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0802", + "adcode": "469025", + "name": "白沙黎族自治县", + "center": "109.4429,19.221641", + "level": "city", + "districts": [{ + "citycode": "0802", + "adcode": "469025", + "name": "南开乡", + "center": "109.293018,19.059602", + "level": "street", + "districts": [] + }, { + "citycode": "0802", + "adcode": "469025", + "name": "阜龙乡", + "center": "109.436387,19.331650", + "level": "street", + "districts": [] + }, { + "citycode": "0802", + "adcode": "469025", + "name": "细水乡", + "center": "109.526636,19.201248", + "level": "street", + "districts": [] + }, { + "citycode": "0802", + "adcode": "469025", + "name": "牙叉镇", + "center": "109.399183,19.138439", + "level": "street", + "districts": [] + }, { + "citycode": "0802", + "adcode": "469025", + "name": "元门乡", + "center": "109.449713,19.095705", + "level": "street", + "districts": [] + }, { + "citycode": "0802", + "adcode": "469025", + "name": "打安镇", + "center": "109.358207,19.378075", + "level": "street", + "districts": [] + }, { + "citycode": "0802", + "adcode": "469025", + "name": "金波乡", + "center": "109.171689,19.276555", + "level": "street", + "districts": [] + }, { + "citycode": "0802", + "adcode": "469025", + "name": "青松乡", + "center": "109.293018,19.059602", + "level": "street", + "districts": [] + }, { + "citycode": "0802", + "adcode": "469025", + "name": "七坊镇", + "center": "109.279730,19.352890", + "level": "street", + "districts": [] + }, { + "citycode": "0802", + "adcode": "469025", + "name": "荣邦乡", + "center": "109.047772,19.432678", + "level": "street", + "districts": [] + }, { + "citycode": "0802", + "adcode": "469025", + "name": "邦溪镇", + "center": "109.047858,19.368662", + "level": "street", + "districts": [] + }] + }, { + "citycode": "2802", + "adcode": "469027", + "name": "乐东黎族自治县", + "center": "109.173384,18.750063", + "level": "city", + "districts": [{ + "citycode": "2802", + "adcode": "469027", + "name": "黄流镇", + "center": "108.804819,18.594264", + "level": "street", + "districts": [] + }, { + "citycode": "2802", + "adcode": "469027", + "name": "佛罗镇", + "center": "108.787906,18.578596", + "level": "street", + "districts": [] + }, { + "citycode": "2802", + "adcode": "469027", + "name": "尖峰镇", + "center": "108.843833,18.624901", + "level": "street", + "districts": [] + }, { + "citycode": "2802", + "adcode": "469027", + "name": "志仲镇", + "center": "109.386810,18.609590", + "level": "street", + "districts": [] + }, { + "citycode": "2802", + "adcode": "469027", + "name": "大安镇", + "center": "109.231993,18.734953", + "level": "street", + "districts": [] + }, { + "citycode": "2802", + "adcode": "469027", + "name": "万冲镇", + "center": "109.345394,18.890397", + "level": "street", + "districts": [] + }, { + "citycode": "2802", + "adcode": "469027", + "name": "九所镇", + "center": "109.080605,18.450650", + "level": "street", + "districts": [] + }, { + "citycode": "2802", + "adcode": "469027", + "name": "千家镇", + "center": "109.149747,18.465259", + "level": "street", + "districts": [] + }, { + "citycode": "2802", + "adcode": "469027", + "name": "利国镇", + "center": "108.938223,18.495361", + "level": "street", + "districts": [] + }, { + "citycode": "2802", + "adcode": "469027", + "name": "莺歌海镇", + "center": "108.755614,18.536206", + "level": "street", + "districts": [] + }, { + "citycode": "2802", + "adcode": "469027", + "name": "抱由镇", + "center": "109.028473,18.796829", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0807", + "adcode": "469007", + "name": "东方市", + "center": "108.651829,19.095187", + "level": "city", + "districts": [{ + "citycode": "0807", + "adcode": "469007", + "name": "八所镇", + "center": "108.773554,19.081696", + "level": "street", + "districts": [] + }, { + "citycode": "0807", + "adcode": "469007", + "name": "大田镇", + "center": "108.771554,19.042603", + "level": "street", + "districts": [] + }, { + "citycode": "0807", + "adcode": "469007", + "name": "板桥镇", + "center": "108.910695,18.807162", + "level": "street", + "districts": [] + }, { + "citycode": "0807", + "adcode": "469007", + "name": "四更镇", + "center": "108.596055,19.187648", + "level": "street", + "districts": [] + }, { + "citycode": "0807", + "adcode": "469007", + "name": "感城镇", + "center": "108.787859,18.842201", + "level": "street", + "districts": [] + }, { + "citycode": "0807", + "adcode": "469007", + "name": "江边乡", + "center": "109.091697,18.906129", + "level": "street", + "districts": [] + }, { + "citycode": "0807", + "adcode": "469007", + "name": "三家镇", + "center": "108.833188,19.259935", + "level": "street", + "districts": [] + }, { + "citycode": "0807", + "adcode": "469007", + "name": "东河镇", + "center": "109.019193,19.039242", + "level": "street", + "districts": [] + }, { + "citycode": "0807", + "adcode": "469007", + "name": "天安乡", + "center": "108.854531,19.037791", + "level": "street", + "districts": [] + }, { + "citycode": "0807", + "adcode": "469007", + "name": "新龙镇", + "center": "108.700528,19.035446", + "level": "street", + "districts": [] + }] + }, { + "citycode": "1899", + "adcode": "469030", + "name": "琼中黎族苗族自治县", + "center": "109.838423,19.03327", + "level": "city", + "districts": [{ + "citycode": "1899", + "adcode": "469030", + "name": "什运乡", + "center": "109.583026,18.923692", + "level": "street", + "districts": [] + }, { + "citycode": "1899", + "adcode": "469030", + "name": "黎母山镇", + "center": "109.824353,19.190837", + "level": "street", + "districts": [] + }, { + "citycode": "1899", + "adcode": "469030", + "name": "上安乡", + "center": "109.712993,18.899738", + "level": "street", + "districts": [] + }, { + "citycode": "1899", + "adcode": "469030", + "name": "红毛镇", + "center": "109.608031,19.033716", + "level": "street", + "districts": [] + }, { + "citycode": "1899", + "adcode": "469030", + "name": "湾岭镇", + "center": "109.865175,19.096504", + "level": "street", + "districts": [] + }, { + "citycode": "1899", + "adcode": "469030", + "name": "吊罗山乡", + "center": "109.811113,18.766916", + "level": "street", + "districts": [] + }, { + "citycode": "1899", + "adcode": "469030", + "name": "营根镇", + "center": "109.743124,19.055622", + "level": "street", + "districts": [] + }, { + "citycode": "1899", + "adcode": "469030", + "name": "中平镇", + "center": "110.032689,18.966494", + "level": "street", + "districts": [] + }, { + "citycode": "1899", + "adcode": "469030", + "name": "长征镇", + "center": "109.813077,18.984538", + "level": "street", + "districts": [] + }, { + "citycode": "1899", + "adcode": "469030", + "name": "和平镇", + "center": "110.071277,18.773381", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0809", + "adcode": "469028", + "name": "陵水黎族自治县", + "center": "110.037553,18.506045", + "level": "city", + "districts": [{ + "citycode": "0809", + "adcode": "469028", + "name": "椰林镇", + "center": "110.019690,18.482546", + "level": "street", + "districts": [] + }, { + "citycode": "0809", + "adcode": "469028", + "name": "新村镇", + "center": "110.026125,18.445965", + "level": "street", + "districts": [] + }, { + "citycode": "0809", + "adcode": "469028", + "name": "文罗镇", + "center": "109.914457,18.573364", + "level": "street", + "districts": [] + }, { + "citycode": "0809", + "adcode": "469028", + "name": "黎安镇", + "center": "110.027365,18.450385", + "level": "street", + "districts": [] + }, { + "citycode": "0809", + "adcode": "469028", + "name": "群英乡", + "center": "109.847456,18.569653", + "level": "street", + "districts": [] + }, { + "citycode": "0809", + "adcode": "469028", + "name": "提蒙乡", + "center": "110.013235,18.640359", + "level": "street", + "districts": [] + }, { + "citycode": "0809", + "adcode": "469028", + "name": "三才镇", + "center": "109.963149,18.491519", + "level": "street", + "districts": [] + }, { + "citycode": "0809", + "adcode": "469028", + "name": "隆广镇", + "center": "109.857549,18.480188", + "level": "street", + "districts": [] + }, { + "citycode": "0809", + "adcode": "469028", + "name": "英州镇", + "center": "109.875526,18.473898", + "level": "street", + "districts": [] + }, { + "citycode": "0809", + "adcode": "469028", + "name": "本号镇", + "center": "109.837130,18.632318", + "level": "street", + "districts": [] + }, { + "citycode": "0809", + "adcode": "469028", + "name": "光坡镇", + "center": "110.036496,18.559416", + "level": "street", + "districts": [] + }] + }, { + "citycode": "2898", + "adcode": "460300", + "name": "三沙市", + "center": "112.338649,16.831004", + "level": "city", + "districts": [{ + "citycode": "2898", + "adcode": "460302", + "name": "西沙区", + "center": "112.346961,16.834372", + "level": "district", + "districts": [] + }, { + "citycode": "2898", + "adcode": "460303", + "name": "南沙区", + "center": "112.896229,9.548531", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "文昌市", + "center": "110.797473,19.544234", + "level": "city", + "districts": [{ + "citycode": "1893", + "adcode": "469005", + "name": "文教镇", + "center": "110.855856,19.708320", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "铺前镇", + "center": "110.675271,20.037734", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "东郊镇", + "center": "110.910447,19.629115", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "龙楼镇", + "center": "110.938472,19.660636", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "昌洒镇", + "center": "110.894780,19.826152", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "锦山镇", + "center": "110.664000,20.027062", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "公坡镇", + "center": "110.826694,19.852259", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "冯坡镇", + "center": "110.790950,20.028869", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "东路镇", + "center": "110.635704,19.755873", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "会文镇", + "center": "110.740895,19.498601", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "东阁镇", + "center": "110.855599,19.705977", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "文城镇", + "center": "110.707616,19.498201", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "蓬莱镇", + "center": "110.507886,19.511678", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "潭牛镇", + "center": "110.773474,19.744417", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "抱罗镇", + "center": "110.698537,19.833022", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "重兴镇", + "center": "110.563557,19.487059", + "level": "street", + "districts": [] + }, { + "citycode": "1893", + "adcode": "469005", + "name": "翁田镇", + "center": "110.961537,20.024271", + "level": "street", + "districts": [] + }] + }, { + "citycode": "1896", + "adcode": "469024", + "name": "临高县", + "center": "109.690508,19.912025", + "level": "city", + "districts": [{ + "citycode": "1896", + "adcode": "469024", + "name": "南宝镇", + "center": "109.638149,19.751609", + "level": "street", + "districts": [] + }, { + "citycode": "1896", + "adcode": "469024", + "name": "博厚镇", + "center": "109.807195,19.989365", + "level": "street", + "districts": [] + }, { + "citycode": "1896", + "adcode": "469024", + "name": "新盈镇", + "center": "109.467340,19.903531", + "level": "street", + "districts": [] + }, { + "citycode": "1896", + "adcode": "469024", + "name": "和舍镇", + "center": "109.714907,19.671698", + "level": "street", + "districts": [] + }, { + "citycode": "1896", + "adcode": "469024", + "name": "调楼镇", + "center": "109.609769,19.923138", + "level": "street", + "districts": [] + }, { + "citycode": "1896", + "adcode": "469024", + "name": "东英镇", + "center": "109.612973,19.934938", + "level": "street", + "districts": [] + }, { + "citycode": "1896", + "adcode": "469024", + "name": "加来镇", + "center": "109.650909,19.759074", + "level": "street", + "districts": [] + }, { + "citycode": "1896", + "adcode": "469024", + "name": "临城镇", + "center": "109.632657,19.753184", + "level": "street", + "districts": [] + }, { + "citycode": "1896", + "adcode": "469024", + "name": "多文镇", + "center": "109.751742,19.673620", + "level": "street", + "districts": [] + }, { + "citycode": "1896", + "adcode": "469024", + "name": "皇桐镇", + "center": "109.856872,19.732264", + "level": "street", + "districts": [] + }, { + "citycode": "1896", + "adcode": "469024", + "name": "波莲镇", + "center": "109.614806,19.855541", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0899", + "adcode": "460200", + "name": "三亚市", + "center": "109.511709,18.252865", + "level": "city", + "districts": [{ + "citycode": "0899", + "adcode": "460205", + "name": "崖州区", + "center": "109.172298,18.357572", + "level": "district", + "districts": [] + }, { + "citycode": "0899", + "adcode": "460202", + "name": "海棠区", + "center": "109.735676,18.384177", + "level": "district", + "districts": [] + }, { + "citycode": "0899", + "adcode": "460203", + "name": "吉阳区", + "center": "109.578238,18.28146", + "level": "district", + "districts": [] + }, { + "citycode": "0899", + "adcode": "460204", + "name": "天涯区", + "center": "109.452325,18.298975", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0801", + "adcode": "469029", + "name": "保亭黎族苗族自治县", + "center": "109.700279,18.640339", + "level": "city", + "districts": [{ + "citycode": "0801", + "adcode": "469029", + "name": "南林乡", + "center": "109.576563,18.389262", + "level": "street", + "districts": [] + }, { + "citycode": "0801", + "adcode": "469029", + "name": "毛感乡", + "center": "109.503131,18.556288", + "level": "street", + "districts": [] + }, { + "citycode": "0801", + "adcode": "469029", + "name": "新政镇", + "center": "109.603989,18.435464", + "level": "street", + "districts": [] + }, { + "citycode": "0801", + "adcode": "469029", + "name": "响水镇", + "center": "109.550646,18.610753", + "level": "street", + "districts": [] + }, { + "citycode": "0801", + "adcode": "469029", + "name": "三道镇", + "center": "109.702909,18.430953", + "level": "street", + "districts": [] + }, { + "citycode": "0801", + "adcode": "469029", + "name": "加茂镇", + "center": "109.674549,18.516922", + "level": "street", + "districts": [] + }, { + "citycode": "0801", + "adcode": "469029", + "name": "六弓乡", + "center": "109.744740,18.574041", + "level": "street", + "districts": [] + }, { + "citycode": "0801", + "adcode": "469029", + "name": "什玲镇", + "center": "109.736545,18.697785", + "level": "street", + "districts": [] + }, { + "citycode": "0801", + "adcode": "469029", + "name": "保城镇", + "center": "109.773883,18.600774", + "level": "street", + "districts": [] + }] + }, { + "citycode": "1897", + "adcode": "469001", + "name": "五指山市", + "center": "109.516784,18.774827", + "level": "city", + "districts": [{ + "citycode": "1897", + "adcode": "469001", + "name": "毛阳镇", + "center": "109.449705,18.881089", + "level": "street", + "districts": [] + }, { + "citycode": "1897", + "adcode": "469001", + "name": "水满乡", + "center": "109.600698,18.899478", + "level": "street", + "districts": [] + }, { + "citycode": "1897", + "adcode": "469001", + "name": "番阳镇", + "center": "109.333537,18.913174", + "level": "street", + "districts": [] + }, { + "citycode": "1897", + "adcode": "469001", + "name": "毛道乡", + "center": "109.356022,18.713388", + "level": "street", + "districts": [] + }, { + "citycode": "1897", + "adcode": "469001", + "name": "畅好乡", + "center": "109.383431,18.682307", + "level": "street", + "districts": [] + }, { + "citycode": "1897", + "adcode": "469001", + "name": "通什镇", + "center": "109.623006,18.822353", + "level": "street", + "districts": [] + }, { + "citycode": "1897", + "adcode": "469001", + "name": "南圣镇", + "center": "109.684604,18.822608", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0804", + "adcode": "469023", + "name": "澄迈县", + "center": "110.007497,19.738885", + "level": "city", + "districts": [{ + "citycode": "0804", + "adcode": "469023", + "name": "老城镇", + "center": "110.152799,19.872233", + "level": "street", + "districts": [] + }, { + "citycode": "0804", + "adcode": "469023", + "name": "大丰镇", + "center": "109.988855,19.904039", + "level": "street", + "districts": [] + }, { + "citycode": "0804", + "adcode": "469023", + "name": "瑞溪镇", + "center": "110.111302,19.789006", + "level": "street", + "districts": [] + }, { + "citycode": "0804", + "adcode": "469023", + "name": "加乐镇", + "center": "110.061273,19.617646", + "level": "street", + "districts": [] + }, { + "citycode": "0804", + "adcode": "469023", + "name": "中兴镇", + "center": "109.760023,19.528937", + "level": "street", + "districts": [] + }, { + "citycode": "0804", + "adcode": "469023", + "name": "仁兴镇", + "center": "109.776963,19.382054", + "level": "street", + "districts": [] + }, { + "citycode": "0804", + "adcode": "469023", + "name": "文儒镇", + "center": "110.134745,19.633652", + "level": "street", + "districts": [] + }, { + "citycode": "0804", + "adcode": "469023", + "name": "桥头镇", + "center": "109.936766,19.914013", + "level": "street", + "districts": [] + }, { + "citycode": "0804", + "adcode": "469023", + "name": "金江镇", + "center": "109.976112,19.774256", + "level": "street", + "districts": [] + }, { + "citycode": "0804", + "adcode": "469023", + "name": "福山镇", + "center": "109.919175,19.929023", + "level": "street", + "districts": [] + }, { + "citycode": "0804", + "adcode": "469023", + "name": "永发镇", + "center": "110.186668,19.641706", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0803", + "adcode": "469026", + "name": "昌江黎族自治县", + "center": "109.055783,19.298139", + "level": "city", + "districts": [{ + "citycode": "0803", + "adcode": "469026", + "name": "乌烈镇", + "center": "108.809852,19.352543", + "level": "street", + "districts": [] + }, { + "citycode": "0803", + "adcode": "469026", + "name": "叉河镇", + "center": "108.997547,19.244929", + "level": "street", + "districts": [] + }, { + "citycode": "0803", + "adcode": "469026", + "name": "石碌镇", + "center": "108.997547,19.244929", + "level": "street", + "districts": [] + }, { + "citycode": "0803", + "adcode": "469026", + "name": "昌化镇", + "center": "108.731720,19.383636", + "level": "street", + "districts": [] + }, { + "citycode": "0803", + "adcode": "469026", + "name": "王下乡", + "center": "109.094025,18.905182", + "level": "street", + "districts": [] + }, { + "citycode": "0803", + "adcode": "469026", + "name": "七叉镇", + "center": "109.077512,19.190357", + "level": "street", + "districts": [] + }, { + "citycode": "0803", + "adcode": "469026", + "name": "海尾镇", + "center": "108.765323,19.400954", + "level": "street", + "districts": [] + }, { + "citycode": "0803", + "adcode": "469026", + "name": "十月田镇", + "center": "108.847421,19.296495", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0806", + "adcode": "469021", + "name": "定安县", + "center": "110.358001,19.681215", + "level": "city", + "districts": [{ + "citycode": "0806", + "adcode": "469021", + "name": "岭口镇", + "center": "110.276026,19.360104", + "level": "street", + "districts": [] + }, { + "citycode": "0806", + "adcode": "469021", + "name": "龙门镇", + "center": "110.297826,19.499676", + "level": "street", + "districts": [] + }, { + "citycode": "0806", + "adcode": "469021", + "name": "龙河镇", + "center": "110.258715,19.361056", + "level": "street", + "districts": [] + }, { + "citycode": "0806", + "adcode": "469021", + "name": "翰林镇", + "center": "110.285870,19.349021", + "level": "street", + "districts": [] + }, { + "citycode": "0806", + "adcode": "469021", + "name": "富文镇", + "center": "110.223762,19.422974", + "level": "street", + "districts": [] + }, { + "citycode": "0806", + "adcode": "469021", + "name": "新竹镇", + "center": "110.165312,19.577271", + "level": "street", + "districts": [] + }, { + "citycode": "0806", + "adcode": "469021", + "name": "龙湖镇", + "center": "110.405612,19.607283", + "level": "street", + "districts": [] + }, { + "citycode": "0806", + "adcode": "469021", + "name": "定城镇", + "center": "110.369406,19.715830", + "level": "street", + "districts": [] + }, { + "citycode": "0806", + "adcode": "469021", + "name": "雷鸣镇", + "center": "110.268491,19.592293", + "level": "street", + "districts": [] + }, { + "citycode": "0806", + "adcode": "469021", + "name": "黄竹镇", + "center": "110.351241,19.451448", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0898", + "adcode": "460100", + "name": "海口市", + "center": "110.200162,20.046316", + "level": "city", + "districts": [{ + "citycode": "0898", + "adcode": "460108", + "name": "美兰区", + "center": "110.366359,20.028983", + "level": "district", + "districts": [] + }, { + "citycode": "0898", + "adcode": "460107", + "name": "琼山区", + "center": "110.384318,19.984293", + "level": "district", + "districts": [] + }, { + "citycode": "0898", + "adcode": "460105", + "name": "秀英区", + "center": "110.293566,20.007703", + "level": "district", + "districts": [] + }, { + "citycode": "0898", + "adcode": "460106", + "name": "龙华区", + "center": "110.328628,20.030843", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "儋州市", + "center": "109.580812,19.520948", + "level": "city", + "districts": [{ + "citycode": "0805", + "adcode": "460400", + "name": "新州镇", + "center": "109.376729,19.708256", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "海头镇", + "center": "109.028046,19.432317", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "中和镇", + "center": "109.351017,19.774675", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "峨蔓镇", + "center": "109.332639,19.843794", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "三都街道", + "center": "109.204266,19.830050", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "王五镇", + "center": "109.285186,19.573624", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "雅星镇", + "center": "109.305133,19.393438", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "和庆镇", + "center": "109.739681,19.587333", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "东成镇", + "center": "109.521624,19.772032", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "木棠镇", + "center": "109.346666,19.900381", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "大成镇", + "center": "109.371806,19.478206", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "兰洋镇", + "center": "109.735770,19.408360", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "南丰镇", + "center": "109.543297,19.504378", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "光村镇", + "center": "109.491796,19.748663", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "白马井镇", + "center": "109.274243,19.631272", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "排浦镇", + "center": "109.212152,19.637338", + "level": "street", + "districts": [] + }, { + "citycode": "0805", + "adcode": "460400", + "name": "那大镇", + "center": "109.555399,19.500960", + "level": "street", + "districts": [] + }] + }, { + "citycode": "1894", + "adcode": "469002", + "name": "琼海市", + "center": "110.474524,19.259112", + "level": "city", + "districts": [{ + "citycode": "1894", + "adcode": "469002", + "name": "长坡镇", + "center": "110.497644,19.427753", + "level": "street", + "districts": [] + }, { + "citycode": "1894", + "adcode": "469002", + "name": "龙江镇", + "center": "110.377839,19.152396", + "level": "street", + "districts": [] + }, { + "citycode": "1894", + "adcode": "469002", + "name": "石壁镇", + "center": "110.330819,19.151644", + "level": "street", + "districts": [] + }, { + "citycode": "1894", + "adcode": "469002", + "name": "阳江镇", + "center": "110.343829,19.128946", + "level": "street", + "districts": [] + }, { + "citycode": "1894", + "adcode": "469002", + "name": "会山镇", + "center": "110.153445,19.012397", + "level": "street", + "districts": [] + }, { + "citycode": "1894", + "adcode": "469002", + "name": "潭门镇", + "center": "110.539051,19.210843", + "level": "street", + "districts": [] + }, { + "citycode": "1894", + "adcode": "469002", + "name": "大路镇", + "center": "110.467128,19.442368", + "level": "street", + "districts": [] + }, { + "citycode": "1894", + "adcode": "469002", + "name": "嘉积镇", + "center": "110.421334,19.291689", + "level": "street", + "districts": [] + }, { + "citycode": "1894", + "adcode": "469002", + "name": "万泉镇", + "center": "110.414108,19.355227", + "level": "street", + "districts": [] + }, { + "citycode": "1894", + "adcode": "469002", + "name": "博鳌镇", + "center": "110.492863,19.177047", + "level": "street", + "districts": [] + }, { + "citycode": "1894", + "adcode": "469002", + "name": "中原镇", + "center": "110.426258,19.056245", + "level": "street", + "districts": [] + }, { + "citycode": "1894", + "adcode": "469002", + "name": "塔洋镇", + "center": "110.471660,19.324626", + "level": "street", + "districts": [] + }] + }, { + "citycode": "1898", + "adcode": "469006", + "name": "万宁市", + "center": "110.392605,18.793697", + "level": "city", + "districts": [{ + "citycode": "1898", + "adcode": "469006", + "name": "后安镇", + "center": "110.374318,18.908719", + "level": "street", + "districts": [] + }, { + "citycode": "1898", + "adcode": "469006", + "name": "和乐镇", + "center": "110.415860,18.962463", + "level": "street", + "districts": [] + }, { + "citycode": "1898", + "adcode": "469006", + "name": "东澳镇", + "center": "110.429479,18.640771", + "level": "street", + "districts": [] + }, { + "citycode": "1898", + "adcode": "469006", + "name": "山根镇", + "center": "110.451557,18.990371", + "level": "street", + "districts": [] + }, { + "citycode": "1898", + "adcode": "469006", + "name": "龙滚镇", + "center": "110.524041,19.000502", + "level": "street", + "districts": [] + }, { + "citycode": "1898", + "adcode": "469006", + "name": "大茂镇", + "center": "110.391696,18.876747", + "level": "street", + "districts": [] + }, { + "citycode": "1898", + "adcode": "469006", + "name": "北大镇", + "center": "110.418437,18.985185", + "level": "street", + "districts": [] + }, { + "citycode": "1898", + "adcode": "469006", + "name": "万城镇", + "center": "110.412512,18.826291", + "level": "street", + "districts": [] + }, { + "citycode": "1898", + "adcode": "469006", + "name": "三更罗镇", + "center": "110.113025,18.948777", + "level": "street", + "districts": [] + }, { + "citycode": "1898", + "adcode": "469006", + "name": "礼纪镇", + "center": "110.265921,18.748523", + "level": "street", + "districts": [] + }, { + "citycode": "1898", + "adcode": "469006", + "name": "长丰镇", + "center": "110.281098,18.855580", + "level": "street", + "districts": [] + }, { + "citycode": "1898", + "adcode": "469006", + "name": "南桥镇", + "center": "110.031092,18.749525", + "level": "street", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "320000", + "name": "江苏省", + "center": "118.763563,32.061377", + "level": "province", + "districts": [{ + "citycode": "0518", + "adcode": "320700", + "name": "连云港市", + "center": "119.221487,34.596639", + "level": "city", + "districts": [{ + "citycode": "0518", + "adcode": "320707", + "name": "赣榆区", + "center": "119.173173,34.841336", + "level": "district", + "districts": [] + }, { + "citycode": "0518", + "adcode": "320703", + "name": "连云区", + "center": "119.338901,34.760317", + "level": "district", + "districts": [] + }, { + "citycode": "0518", + "adcode": "320722", + "name": "东海县", + "center": "118.752869,34.542194", + "level": "district", + "districts": [] + }, { + "citycode": "0518", + "adcode": "320724", + "name": "灌南县", + "center": "119.315583,34.087251", + "level": "district", + "districts": [] + }, { + "citycode": "0518", + "adcode": "320706", + "name": "海州区", + "center": "119.163492,34.572506", + "level": "district", + "districts": [] + }, { + "citycode": "0518", + "adcode": "320723", + "name": "灌云县", + "center": "119.239426,34.284074", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0513", + "adcode": "320600", + "name": "南通市", + "center": "120.894522,31.981269", + "level": "city", + "districts": [{ + "citycode": "0513", + "adcode": "320623", + "name": "如东县", + "center": "121.18495,32.331584", + "level": "district", + "districts": [] + }, { + "citycode": "0513", + "adcode": "320681", + "name": "启东市", + "center": "121.65523,31.792831", + "level": "district", + "districts": [] + }, { + "citycode": "0513", + "adcode": "320613", + "name": "崇川区", + "center": "120.857253,32.010277", + "level": "district", + "districts": [] + }, { + "citycode": "0513", + "adcode": "320612", + "name": "通州区", + "center": "121.073742,32.065972", + "level": "district", + "districts": [] + }, { + "citycode": "0513", + "adcode": "320614", + "name": "海门区", + "center": "121.182016,31.869418", + "level": "district", + "districts": [] + }, { + "citycode": "0513", + "adcode": "320682", + "name": "如皋市", + "center": "120.574028,32.371493", + "level": "district", + "districts": [] + }, { + "citycode": "0513", + "adcode": "320685", + "name": "海安市", + "center": "120.46779,32.532853", + "level": "district", + "districts": [] + }] + }, { + "citycode": "025", + "adcode": "320100", + "name": "南京市", + "center": "118.796624,32.059344", + "level": "city", + "districts": [{ + "citycode": "025", + "adcode": "320115", + "name": "江宁区", + "center": "118.83951,31.953195", + "level": "district", + "districts": [] + }, { + "citycode": "025", + "adcode": "320114", + "name": "雨花台区", + "center": "118.779087,31.991291", + "level": "district", + "districts": [] + }, { + "citycode": "025", + "adcode": "320118", + "name": "高淳区", + "center": "118.892074,31.328678", + "level": "district", + "districts": [] + }, { + "citycode": "025", + "adcode": "320117", + "name": "溧水区", + "center": "119.028414,31.651108", + "level": "district", + "districts": [] + }, { + "citycode": "025", + "adcode": "320106", + "name": "鼓楼区", + "center": "118.769943,32.066814", + "level": "district", + "districts": [] + }, { + "citycode": "025", + "adcode": "320111", + "name": "浦口区", + "center": "118.627165,32.059796", + "level": "district", + "districts": [] + }, { + "citycode": "025", + "adcode": "320105", + "name": "建邺区", + "center": "118.731642,32.003343", + "level": "district", + "districts": [] + }, { + "citycode": "025", + "adcode": "320102", + "name": "玄武区", + "center": "118.797779,32.048644", + "level": "district", + "districts": [] + }, { + "citycode": "025", + "adcode": "320104", + "name": "秦淮区", + "center": "118.794792,32.039065", + "level": "district", + "districts": [] + }, { + "citycode": "025", + "adcode": "320116", + "name": "六合区", + "center": "118.822241,32.323235", + "level": "district", + "districts": [] + }, { + "citycode": "025", + "adcode": "320113", + "name": "栖霞区", + "center": "118.909117,32.096423", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0512", + "adcode": "320500", + "name": "苏州市", + "center": "120.585294,31.299758", + "level": "city", + "districts": [{ + "citycode": "0512", + "adcode": "320505", + "name": "虎丘区", + "center": "120.434238,31.329601", + "level": "district", + "districts": [] + }, { + "citycode": "0512", + "adcode": "320585", + "name": "太仓市", + "center": "121.130344,31.458043", + "level": "district", + "districts": [] + }, { + "citycode": "0512", + "adcode": "320508", + "name": "姑苏区", + "center": "120.617367,31.335648", + "level": "district", + "districts": [] + }, { + "citycode": "0512", + "adcode": "320581", + "name": "常熟市", + "center": "120.752512,31.656016", + "level": "district", + "districts": [] + }, { + "citycode": "0512", + "adcode": "320583", + "name": "昆山市", + "center": "120.980795,31.385476", + "level": "district", + "districts": [] + }, { + "citycode": "0512", + "adcode": "320509", + "name": "吴江区", + "center": "120.645728,31.138525", + "level": "district", + "districts": [] + }, { + "citycode": "0512", + "adcode": "320506", + "name": "吴中区", + "center": "120.632094,31.263604", + "level": "district", + "districts": [] + }, { + "citycode": "0512", + "adcode": "320582", + "name": "张家港市", + "center": "120.555979,31.876739", + "level": "district", + "districts": [] + }, { + "citycode": "0512", + "adcode": "320507", + "name": "相城区", + "center": "120.642391,31.369189", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0527", + "adcode": "321300", + "name": "宿迁市", + "center": "118.275228,33.963186", + "level": "city", + "districts": [{ + "citycode": "0527", + "adcode": "321302", + "name": "宿城区", + "center": "118.242048,33.963891", + "level": "district", + "districts": [] + }, { + "citycode": "0527", + "adcode": "321311", + "name": "宿豫区", + "center": "118.330423,33.94813", + "level": "district", + "districts": [] + }, { + "citycode": "0527", + "adcode": "321323", + "name": "泗阳县", + "center": "118.703636,33.723576", + "level": "district", + "districts": [] + }, { + "citycode": "0527", + "adcode": "321322", + "name": "沭阳县", + "center": "118.804321,34.110642", + "level": "district", + "districts": [] + }, { + "citycode": "0527", + "adcode": "321324", + "name": "泗洪县", + "center": "118.223941,33.476575", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0514", + "adcode": "321000", + "name": "扬州市", + "center": "119.412834,32.394404", + "level": "city", + "districts": [{ + "citycode": "0514", + "adcode": "321002", + "name": "广陵区", + "center": "119.431785,32.395654", + "level": "district", + "districts": [] + }, { + "citycode": "0514", + "adcode": "321081", + "name": "仪征市", + "center": "119.184468,32.272833", + "level": "district", + "districts": [] + }, { + "citycode": "0514", + "adcode": "321084", + "name": "高邮市", + "center": "119.45892,32.781606", + "level": "district", + "districts": [] + }, { + "citycode": "0514", + "adcode": "321003", + "name": "邗江区", + "center": "119.397935,32.37741", + "level": "district", + "districts": [] + }, { + "citycode": "0514", + "adcode": "321023", + "name": "宝应县", + "center": "119.358389,33.241125", + "level": "district", + "districts": [] + }, { + "citycode": "0514", + "adcode": "321012", + "name": "江都区", + "center": "119.569684,32.43571", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0511", + "adcode": "321100", + "name": "镇江市", + "center": "119.424441,32.188141", + "level": "city", + "districts": [{ + "citycode": "0511", + "adcode": "321112", + "name": "丹徒区", + "center": "119.433854,32.132118", + "level": "district", + "districts": [] + }, { + "citycode": "0511", + "adcode": "321102", + "name": "京口区", + "center": "119.470186,32.198285", + "level": "district", + "districts": [] + }, { + "citycode": "0511", + "adcode": "321111", + "name": "润州区", + "center": "119.411383,32.195146", + "level": "district", + "districts": [] + }, { + "citycode": "0511", + "adcode": "321181", + "name": "丹阳市", + "center": "119.606071,32.010035", + "level": "district", + "districts": [] + }, { + "citycode": "0511", + "adcode": "321182", + "name": "扬中市", + "center": "119.796816,32.236476", + "level": "district", + "districts": [] + }, { + "citycode": "0511", + "adcode": "321183", + "name": "句容市", + "center": "119.168693,31.945732", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0517", + "adcode": "320800", + "name": "淮安市", + "center": "119.113166,33.551495", + "level": "city", + "districts": [{ + "citycode": "0517", + "adcode": "320830", + "name": "盱眙县", + "center": "118.544545,33.011905", + "level": "district", + "districts": [] + }, { + "citycode": "0517", + "adcode": "320831", + "name": "金湖县", + "center": "119.020432,33.024663", + "level": "district", + "districts": [] + }, { + "citycode": "0517", + "adcode": "320813", + "name": "洪泽区", + "center": "118.873132,33.294095", + "level": "district", + "districts": [] + }, { + "citycode": "0517", + "adcode": "320804", + "name": "淮阴区", + "center": "119.034895,33.632588", + "level": "district", + "districts": [] + }, { + "citycode": "0517", + "adcode": "320826", + "name": "涟水县", + "center": "119.260589,33.781648", + "level": "district", + "districts": [] + }, { + "citycode": "0517", + "adcode": "320812", + "name": "清江浦区", + "center": "119.026662,33.552579", + "level": "district", + "districts": [] + }, { + "citycode": "0517", + "adcode": "320803", + "name": "淮安区", + "center": "119.167809,33.531037", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0516", + "adcode": "320300", + "name": "徐州市", + "center": "117.283752,34.204224", + "level": "city", + "districts": [{ + "citycode": "0516", + "adcode": "320311", + "name": "泉山区", + "center": "117.194405,34.22655", + "level": "district", + "districts": [] + }, { + "citycode": "0516", + "adcode": "320312", + "name": "铜山区", + "center": "117.169698,34.181162", + "level": "district", + "districts": [] + }, { + "citycode": "0516", + "adcode": "320322", + "name": "沛县", + "center": "116.936353,34.760761", + "level": "district", + "districts": [] + }, { + "citycode": "0516", + "adcode": "320302", + "name": "鼓楼区", + "center": "117.185643,34.288736", + "level": "district", + "districts": [] + }, { + "citycode": "0516", + "adcode": "320382", + "name": "邳州市", + "center": "118.012511,34.339208", + "level": "district", + "districts": [] + }, { + "citycode": "0516", + "adcode": "320305", + "name": "贾汪区", + "center": "117.465137,34.436492", + "level": "district", + "districts": [] + }, { + "citycode": "0516", + "adcode": "320303", + "name": "云龙区", + "center": "117.251515,34.253638", + "level": "district", + "districts": [] + }, { + "citycode": "0516", + "adcode": "320381", + "name": "新沂市", + "center": "118.354747,34.369585", + "level": "district", + "districts": [] + }, { + "citycode": "0516", + "adcode": "320324", + "name": "睢宁县", + "center": "117.941364,33.913727", + "level": "district", + "districts": [] + }, { + "citycode": "0516", + "adcode": "320321", + "name": "丰县", + "center": "116.658111,34.697232", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0519", + "adcode": "320400", + "name": "常州市", + "center": "119.974092,31.811313", + "level": "city", + "districts": [{ + "citycode": "0519", + "adcode": "320413", + "name": "金坛区", + "center": "119.587503,31.722384", + "level": "district", + "districts": [] + }, { + "citycode": "0519", + "adcode": "320411", + "name": "新北区", + "center": "119.960925,31.86355", + "level": "district", + "districts": [] + }, { + "citycode": "0519", + "adcode": "320404", + "name": "钟楼区", + "center": "119.902081,31.802608", + "level": "district", + "districts": [] + }, { + "citycode": "0519", + "adcode": "320481", + "name": "溧阳市", + "center": "119.484164,31.416967", + "level": "district", + "districts": [] + }, { + "citycode": "0519", + "adcode": "320412", + "name": "武进区", + "center": "119.942441,31.701252", + "level": "district", + "districts": [] + }, { + "citycode": "0519", + "adcode": "320402", + "name": "天宁区", + "center": "119.999439,31.79232", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0510", + "adcode": "320200", + "name": "无锡市", + "center": "120.311889,31.491064", + "level": "city", + "districts": [{ + "citycode": "0510", + "adcode": "320206", + "name": "惠山区", + "center": "120.29843,31.680282", + "level": "district", + "districts": [] + }, { + "citycode": "0510", + "adcode": "320211", + "name": "滨湖区", + "center": "120.284381,31.527846", + "level": "district", + "districts": [] + }, { + "citycode": "0510", + "adcode": "320282", + "name": "宜兴市", + "center": "119.821873,31.338429", + "level": "district", + "districts": [] + }, { + "citycode": "0510", + "adcode": "320214", + "name": "新吴区", + "center": "120.364303,31.49085", + "level": "district", + "districts": [] + }, { + "citycode": "0510", + "adcode": "320213", + "name": "梁溪区", + "center": "120.303551,31.566226", + "level": "district", + "districts": [] + }, { + "citycode": "0510", + "adcode": "320281", + "name": "江阴市", + "center": "120.284794,31.921642", + "level": "district", + "districts": [] + }, { + "citycode": "0510", + "adcode": "320205", + "name": "锡山区", + "center": "120.357732,31.589484", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0515", + "adcode": "320900", + "name": "盐城市", + "center": "120.16263,33.348176", + "level": "city", + "districts": [{ + "citycode": "0515", + "adcode": "320924", + "name": "射阳县", + "center": "120.326338,33.766277", + "level": "district", + "districts": [] + }, { + "citycode": "0515", + "adcode": "320922", + "name": "滨海县", + "center": "119.820713,33.990372", + "level": "district", + "districts": [] + }, { + "citycode": "0515", + "adcode": "320921", + "name": "响水县", + "center": "119.578332,34.199172", + "level": "district", + "districts": [] + }, { + "citycode": "0515", + "adcode": "320903", + "name": "盐都区", + "center": "120.153567,33.338538", + "level": "district", + "districts": [] + }, { + "citycode": "0515", + "adcode": "320904", + "name": "大丰区", + "center": "120.500761,33.200047", + "level": "district", + "districts": [] + }, { + "citycode": "0515", + "adcode": "320902", + "name": "亭湖区", + "center": "120.196148,33.391414", + "level": "district", + "districts": [] + }, { + "citycode": "0515", + "adcode": "320925", + "name": "建湖县", + "center": "119.788743,33.438931", + "level": "district", + "districts": [] + }, { + "citycode": "0515", + "adcode": "320923", + "name": "阜宁县", + "center": "119.802271,33.758857", + "level": "district", + "districts": [] + }, { + "citycode": "0515", + "adcode": "320981", + "name": "东台市", + "center": "120.320308,32.867845", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0523", + "adcode": "321200", + "name": "泰州市", + "center": "119.922883,32.456692", + "level": "city", + "districts": [{ + "citycode": "0523", + "adcode": "321281", + "name": "兴化市", + "center": "119.85255,32.911952", + "level": "district", + "districts": [] + }, { + "citycode": "0523", + "adcode": "321283", + "name": "泰兴市", + "center": "120.051475,32.173072", + "level": "district", + "districts": [] + }, { + "citycode": "0523", + "adcode": "321203", + "name": "高港区", + "center": "119.88154,32.31923", + "level": "district", + "districts": [] + }, { + "citycode": "0523", + "adcode": "321202", + "name": "海陵区", + "center": "119.923825,32.49248", + "level": "district", + "districts": [] + }, { + "citycode": "0523", + "adcode": "321204", + "name": "姜堰区", + "center": "120.12807,32.51029", + "level": "district", + "districts": [] + }, { + "citycode": "0523", + "adcode": "321282", + "name": "靖江市", + "center": "120.277124,31.98325", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "630000", + "name": "青海省", + "center": "101.780482,36.622538", + "level": "province", + "districts": [{ + "citycode": "0972", + "adcode": "630200", + "name": "海东市", + "center": "102.41064,36.473448", + "level": "city", + "districts": [{ + "citycode": "0972", + "adcode": "630202", + "name": "乐都区", + "center": "102.401614,36.482242", + "level": "district", + "districts": [] + }, { + "citycode": "0972", + "adcode": "630222", + "name": "民和回族土族自治县", + "center": "102.830775,36.320038", + "level": "district", + "districts": [] + }, { + "citycode": "0972", + "adcode": "630225", + "name": "循化撒拉族自治县", + "center": "102.488958,35.851079", + "level": "district", + "districts": [] + }, { + "citycode": "0972", + "adcode": "630224", + "name": "化隆回族自治县", + "center": "102.266031,36.096159", + "level": "district", + "districts": [] + }, { + "citycode": "0972", + "adcode": "630203", + "name": "平安区", + "center": "102.108538,36.500166", + "level": "district", + "districts": [] + }, { + "citycode": "0972", + "adcode": "630223", + "name": "互助土族自治县", + "center": "101.958519,36.844027", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0974", + "adcode": "632500", + "name": "海南藏族自治州", + "center": "100.622647,36.296399", + "level": "city", + "districts": [{ + "citycode": "0974", + "adcode": "632523", + "name": "贵德县", + "center": "101.43403,36.039672", + "level": "district", + "districts": [] + }, { + "citycode": "0974", + "adcode": "632525", + "name": "贵南县", + "center": "100.747731,35.587239", + "level": "district", + "districts": [] + }, { + "citycode": "0974", + "adcode": "632522", + "name": "同德县", + "center": "100.577859,35.254297", + "level": "district", + "districts": [] + }, { + "citycode": "0974", + "adcode": "632524", + "name": "兴海县", + "center": "99.987799,35.589086", + "level": "district", + "districts": [] + }, { + "citycode": "0974", + "adcode": "632521", + "name": "共和县", + "center": "100.619405,36.284158", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0977", + "adcode": "632800", + "name": "海西蒙古族藏族自治州", + "center": "97.33197,37.348114", + "level": "city", + "districts": [{ + "citycode": "0977", + "adcode": "632823", + "name": "天峻县", + "center": "99.02297,37.301206", + "level": "district", + "districts": [] + }, { + "citycode": "0977", + "adcode": "632802", + "name": "德令哈市", + "center": "97.361528,37.369865", + "level": "district", + "districts": [] + }, { + "citycode": "0977", + "adcode": "632801", + "name": "格尔木市", + "center": "94.928293,36.407272", + "level": "district", + "districts": [] + }, { + "citycode": "0977", + "adcode": "632822", + "name": "都兰县", + "center": "98.095889,36.302098", + "level": "district", + "districts": [] + }, { + "citycode": "0977", + "adcode": "632821", + "name": "乌兰县", + "center": "98.47988,36.941279", + "level": "district", + "districts": [] + }, { + "citycode": "0977", + "adcode": "632825", + "name": "海西蒙古族藏族自治州直辖", + "center": "95.357233,37.853631", + "level": "district", + "districts": [] + }, { + "citycode": "0977", + "adcode": "632803", + "name": "茫崖市", + "center": "90.856372,38.247537", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0976", + "adcode": "632700", + "name": "玉树藏族自治州", + "center": "97.006292,33.006308", + "level": "city", + "districts": [{ + "citycode": "0976", + "adcode": "632724", + "name": "治多县", + "center": "95.618954,33.844854", + "level": "district", + "districts": [] + }, { + "citycode": "0976", + "adcode": "632726", + "name": "曲麻莱县", + "center": "95.805463,34.137353", + "level": "district", + "districts": [] + }, { + "citycode": "0976", + "adcode": "632723", + "name": "称多县", + "center": "97.109487,33.377504", + "level": "district", + "districts": [] + }, { + "citycode": "0976", + "adcode": "632722", + "name": "杂多县", + "center": "95.300723,32.893185", + "level": "district", + "districts": [] + }, { + "citycode": "0976", + "adcode": "632701", + "name": "玉树市", + "center": "97.009184,32.992934", + "level": "district", + "districts": [] + }, { + "citycode": "0976", + "adcode": "632725", + "name": "囊谦县", + "center": "96.489538,32.203193", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0973", + "adcode": "632300", + "name": "黄南藏族自治州", + "center": "102.015397,35.519317", + "level": "city", + "districts": [{ + "citycode": "0973", + "adcode": "632301", + "name": "同仁市", + "center": "102.018663,35.515769", + "level": "district", + "districts": [] + }, { + "citycode": "0973", + "adcode": "632323", + "name": "泽库县", + "center": "101.466565,35.035322", + "level": "district", + "districts": [] + }, { + "citycode": "0973", + "adcode": "632322", + "name": "尖扎县", + "center": "102.040094,35.943253", + "level": "district", + "districts": [] + }, { + "citycode": "0973", + "adcode": "632324", + "name": "河南蒙古族自治县", + "center": "101.617719,34.734777", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0975", + "adcode": "632600", + "name": "果洛藏族自治州", + "center": "100.245161,34.472179", + "level": "city", + "districts": [{ + "citycode": "0975", + "adcode": "632621", + "name": "玛沁县", + "center": "100.238873,34.478049", + "level": "district", + "districts": [] + }, { + "citycode": "0975", + "adcode": "632623", + "name": "甘德县", + "center": "99.900923,33.969216", + "level": "district", + "districts": [] + }, { + "citycode": "0975", + "adcode": "632624", + "name": "达日县", + "center": "99.651863,33.739293", + "level": "district", + "districts": [] + }, { + "citycode": "0975", + "adcode": "632625", + "name": "久治县", + "center": "101.482831,33.429471", + "level": "district", + "districts": [] + }, { + "citycode": "0975", + "adcode": "632622", + "name": "班玛县", + "center": "100.737138,32.932723", + "level": "district", + "districts": [] + }, { + "citycode": "0975", + "adcode": "632626", + "name": "玛多县", + "center": "98.209217,34.915645", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0970", + "adcode": "632200", + "name": "海北藏族自治州", + "center": "100.900944,36.954612", + "level": "city", + "districts": [{ + "citycode": "0970", + "adcode": "632223", + "name": "海晏县", + "center": "100.994521,36.896667", + "level": "district", + "districts": [] + }, { + "citycode": "0970", + "adcode": "632221", + "name": "门源回族自治县", + "center": "101.611524,37.388567", + "level": "district", + "districts": [] + }, { + "citycode": "0970", + "adcode": "632224", + "name": "刚察县", + "center": "100.145662,37.325096", + "level": "district", + "districts": [] + }, { + "citycode": "0970", + "adcode": "632222", + "name": "祁连县", + "center": "100.253211,38.177112", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0971", + "adcode": "630100", + "name": "西宁市", + "center": "101.777795,36.616621", + "level": "city", + "districts": [{ + "citycode": "0971", + "adcode": "630123", + "name": "湟源县", + "center": "101.256464,36.682426", + "level": "district", + "districts": [] + }, { + "citycode": "0971", + "adcode": "630121", + "name": "大通回族土族自治县", + "center": "101.685503,36.926872", + "level": "district", + "districts": [] + }, { + "citycode": "0971", + "adcode": "630104", + "name": "城西区", + "center": "101.765915,36.628288", + "level": "district", + "districts": [] + }, { + "citycode": "0971", + "adcode": "630105", + "name": "城北区", + "center": "101.766308,36.650064", + "level": "district", + "districts": [] + }, { + "citycode": "0971", + "adcode": "630106", + "name": "湟中区", + "center": "101.571683,36.501291", + "level": "district", + "districts": [] + }, { + "citycode": "0971", + "adcode": "630103", + "name": "城中区", + "center": "101.705357,36.545545", + "level": "district", + "districts": [] + }, { + "citycode": "0971", + "adcode": "630102", + "name": "城东区", + "center": "101.803717,36.599744", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "450000", + "name": "广西壮族自治区", + "center": "108.327537,22.816659", + "level": "province", + "districts": [{ + "citycode": "0776", + "adcode": "451000", + "name": "百色市", + "center": "106.61869,23.90307", + "level": "city", + "districts": [{ + "citycode": "0776", + "adcode": "451031", + "name": "隆林各族自治县", + "center": "105.343816,24.770649", + "level": "district", + "districts": [] + }, { + "citycode": "0776", + "adcode": "451028", + "name": "乐业县", + "center": "106.556564,24.776812", + "level": "district", + "districts": [] + }, { + "citycode": "0776", + "adcode": "451030", + "name": "西林县", + "center": "105.097229,24.50762", + "level": "district", + "districts": [] + }, { + "citycode": "0776", + "adcode": "451002", + "name": "右江区", + "center": "106.618151,23.900804", + "level": "district", + "districts": [] + }, { + "citycode": "0776", + "adcode": "451082", + "name": "平果市", + "center": "107.589768,23.329815", + "level": "district", + "districts": [] + }, { + "citycode": "0776", + "adcode": "451024", + "name": "德保县", + "center": "106.615087,23.324084", + "level": "district", + "districts": [] + }, { + "citycode": "0776", + "adcode": "451026", + "name": "那坡县", + "center": "105.83234,23.387997", + "level": "district", + "districts": [] + }, { + "citycode": "0776", + "adcode": "451003", + "name": "田阳区", + "center": "106.915424,23.735631", + "level": "district", + "districts": [] + }, { + "citycode": "0776", + "adcode": "451022", + "name": "田东县", + "center": "107.125609,23.596706", + "level": "district", + "districts": [] + }, { + "citycode": "0776", + "adcode": "451081", + "name": "靖西市", + "center": "106.417666,23.134375", + "level": "district", + "districts": [] + }, { + "citycode": "0776", + "adcode": "451027", + "name": "凌云县", + "center": "106.56114,24.347444", + "level": "district", + "districts": [] + }, { + "citycode": "0776", + "adcode": "451029", + "name": "田林县", + "center": "106.22874,24.294627", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0777", + "adcode": "450700", + "name": "钦州市", + "center": "108.654355,21.980894", + "level": "city", + "districts": [{ + "citycode": "0777", + "adcode": "450702", + "name": "钦南区", + "center": "108.657427,21.940438", + "level": "district", + "districts": [] + }, { + "citycode": "0777", + "adcode": "450703", + "name": "钦北区", + "center": "108.638738,22.0024", + "level": "district", + "districts": [] + }, { + "citycode": "0777", + "adcode": "450721", + "name": "灵山县", + "center": "109.290698,22.416671", + "level": "district", + "districts": [] + }, { + "citycode": "0777", + "adcode": "450722", + "name": "浦北县", + "center": "109.556232,22.271902", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0779", + "adcode": "450500", + "name": "北海市", + "center": "109.120248,21.481305", + "level": "city", + "districts": [{ + "citycode": "0779", + "adcode": "450502", + "name": "海城区", + "center": "109.117256,21.474914", + "level": "district", + "districts": [] + }, { + "citycode": "0779", + "adcode": "450512", + "name": "铁山港区", + "center": "109.422099,21.529878", + "level": "district", + "districts": [] + }, { + "citycode": "0779", + "adcode": "450521", + "name": "合浦县", + "center": "109.207236,21.66132", + "level": "district", + "districts": [] + }, { + "citycode": "0779", + "adcode": "450503", + "name": "银海区", + "center": "109.139689,21.449729", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0770", + "adcode": "450600", + "name": "防城港市", + "center": "108.35467,21.686732", + "level": "city", + "districts": [{ + "citycode": "0770", + "adcode": "450621", + "name": "上思县", + "center": "107.983627,22.153671", + "level": "district", + "districts": [] + }, { + "citycode": "0770", + "adcode": "450602", + "name": "港口区", + "center": "108.380273,21.643426", + "level": "district", + "districts": [] + }, { + "citycode": "0770", + "adcode": "450603", + "name": "防城区", + "center": "108.353978,21.768826", + "level": "district", + "districts": [] + }, { + "citycode": "0770", + "adcode": "450681", + "name": "东兴市", + "center": "107.971828,21.547821", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0778", + "adcode": "451200", + "name": "河池市", + "center": "108.63639,24.48523", + "level": "city", + "districts": [{ + "citycode": "0778", + "adcode": "451223", + "name": "凤山县", + "center": "107.042157,24.546913", + "level": "district", + "districts": [] + }, { + "citycode": "0778", + "adcode": "451224", + "name": "东兰县", + "center": "107.374259,24.510698", + "level": "district", + "districts": [] + }, { + "citycode": "0778", + "adcode": "451229", + "name": "大化瑶族自治县", + "center": "107.998151,23.735699", + "level": "district", + "districts": [] + }, { + "citycode": "0778", + "adcode": "451228", + "name": "都安瑶族自治县", + "center": "108.105229,23.932704", + "level": "district", + "districts": [] + }, { + "citycode": "0778", + "adcode": "451226", + "name": "环江毛南族自治县", + "center": "108.258426,24.825923", + "level": "district", + "districts": [] + }, { + "citycode": "0778", + "adcode": "451202", + "name": "金城江区", + "center": "108.085166,24.692865", + "level": "district", + "districts": [] + }, { + "citycode": "0778", + "adcode": "451227", + "name": "巴马瑶族自治县", + "center": "107.258671,24.142216", + "level": "district", + "districts": [] + }, { + "citycode": "0778", + "adcode": "451225", + "name": "罗城仫佬族自治县", + "center": "108.904613,24.777501", + "level": "district", + "districts": [] + }, { + "citycode": "0778", + "adcode": "451203", + "name": "宜州区", + "center": "108.611303,24.500981", + "level": "district", + "districts": [] + }, { + "citycode": "0778", + "adcode": "451222", + "name": "天峨县", + "center": "107.172287,24.999181", + "level": "district", + "districts": [] + }, { + "citycode": "0778", + "adcode": "451221", + "name": "南丹县", + "center": "107.540578,24.975066", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0772", + "adcode": "450200", + "name": "柳州市", + "center": "109.428071,24.326442", + "level": "city", + "districts": [{ + "citycode": "0772", + "adcode": "450225", + "name": "融水苗族自治县", + "center": "109.256609,25.066624", + "level": "district", + "districts": [] + }, { + "citycode": "0772", + "adcode": "450224", + "name": "融安县", + "center": "109.397538,25.224549", + "level": "district", + "districts": [] + }, { + "citycode": "0772", + "adcode": "450222", + "name": "柳城县", + "center": "109.244565,24.649989", + "level": "district", + "districts": [] + }, { + "citycode": "0772", + "adcode": "450202", + "name": "城中区", + "center": "109.427398,24.366964", + "level": "district", + "districts": [] + }, { + "citycode": "0772", + "adcode": "450205", + "name": "柳北区", + "center": "109.402009,24.362611", + "level": "district", + "districts": [] + }, { + "citycode": "0772", + "adcode": "450204", + "name": "柳南区", + "center": "109.385504,24.336229", + "level": "district", + "districts": [] + }, { + "citycode": "0772", + "adcode": "450223", + "name": "鹿寨县", + "center": "109.750527,24.472897", + "level": "district", + "districts": [] + }, { + "citycode": "0772", + "adcode": "450203", + "name": "鱼峰区", + "center": "109.452781,24.318276", + "level": "district", + "districts": [] + }, { + "citycode": "0772", + "adcode": "450206", + "name": "柳江区", + "center": "109.326365,24.255644", + "level": "district", + "districts": [] + }, { + "citycode": "0772", + "adcode": "450226", + "name": "三江侗族自治县", + "center": "109.607675,25.783197", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1772", + "adcode": "451300", + "name": "来宾市", + "center": "109.221243,23.750105", + "level": "city", + "districts": [{ + "citycode": "1772", + "adcode": "451324", + "name": "金秀瑶族自治县", + "center": "110.190354,24.130509", + "level": "district", + "districts": [] + }, { + "citycode": "1772", + "adcode": "451322", + "name": "象州县", + "center": "109.704852,23.973832", + "level": "district", + "districts": [] + }, { + "citycode": "1772", + "adcode": "451381", + "name": "合山市", + "center": "108.885829,23.807032", + "level": "district", + "districts": [] + }, { + "citycode": "1772", + "adcode": "451302", + "name": "兴宾区", + "center": "109.183284,23.727647", + "level": "district", + "districts": [] + }, { + "citycode": "1772", + "adcode": "451323", + "name": "武宣县", + "center": "109.663153,23.594444", + "level": "district", + "districts": [] + }, { + "citycode": "1772", + "adcode": "451321", + "name": "忻城县", + "center": "108.665641,24.066176", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0773", + "adcode": "450300", + "name": "桂林市", + "center": "110.179752,25.235615", + "level": "city", + "districts": [{ + "citycode": "0773", + "adcode": "450327", + "name": "灌阳县", + "center": "111.160764,25.489419", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450332", + "name": "恭城瑶族自治县", + "center": "110.82841,24.831581", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450330", + "name": "平乐县", + "center": "110.632867,24.622814", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450324", + "name": "全州县", + "center": "111.087089,25.94939", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450326", + "name": "永福县", + "center": "109.987507,24.974409", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450381", + "name": "荔浦市", + "center": "110.395232,24.48843", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450321", + "name": "阳朔县", + "center": "110.496305,24.778785", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450312", + "name": "临桂区", + "center": "110.212425,25.238556", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450304", + "name": "象山区", + "center": "110.281223,25.261585", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450325", + "name": "兴安县", + "center": "110.672013,25.612576", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450329", + "name": "资源县", + "center": "110.652612,26.042452", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450328", + "name": "龙胜各族自治县", + "center": "110.011662,25.79803", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450305", + "name": "七星区", + "center": "110.317576,25.253093", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450311", + "name": "雁山区", + "center": "110.286611,25.101798", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450303", + "name": "叠彩区", + "center": "110.301489,25.314158", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450302", + "name": "秀峰区", + "center": "110.264102,25.273954", + "level": "district", + "districts": [] + }, { + "citycode": "0773", + "adcode": "450323", + "name": "灵川县", + "center": "110.319837,25.3948", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0771", + "adcode": "450100", + "name": "南宁市", + "center": "108.366407,22.8177", + "level": "city", + "districts": [{ + "citycode": "0771", + "adcode": "450124", + "name": "马山县", + "center": "108.177764,23.708448", + "level": "district", + "districts": [] + }, { + "citycode": "0771", + "adcode": "450125", + "name": "上林县", + "center": "108.605089,23.432451", + "level": "district", + "districts": [] + }, { + "citycode": "0771", + "adcode": "450110", + "name": "武鸣区", + "center": "108.274869,23.159257", + "level": "district", + "districts": [] + }, { + "citycode": "0771", + "adcode": "450123", + "name": "隆安县", + "center": "107.695721,23.166356", + "level": "district", + "districts": [] + }, { + "citycode": "0771", + "adcode": "450107", + "name": "西乡塘区", + "center": "108.31344,22.833852", + "level": "district", + "districts": [] + }, { + "citycode": "0771", + "adcode": "450126", + "name": "宾阳县", + "center": "108.810336,23.217771", + "level": "district", + "districts": [] + }, { + "citycode": "0771", + "adcode": "450105", + "name": "江南区", + "center": "108.273206,22.781166", + "level": "district", + "districts": [] + }, { + "citycode": "0771", + "adcode": "450108", + "name": "良庆区", + "center": "108.393889,22.753613", + "level": "district", + "districts": [] + }, { + "citycode": "0771", + "adcode": "450109", + "name": "邕宁区", + "center": "108.487438,22.758633", + "level": "district", + "districts": [] + }, { + "citycode": "0771", + "adcode": "450181", + "name": "横州市", + "center": "109.262448,22.681257", + "level": "district", + "districts": [] + }, { + "citycode": "0771", + "adcode": "450102", + "name": "兴宁区", + "center": "108.368071,22.85354", + "level": "district", + "districts": [] + }, { + "citycode": "0771", + "adcode": "450103", + "name": "青秀区", + "center": "108.495204,22.785833", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0774", + "adcode": "450400", + "name": "梧州市", + "center": "111.279022,23.476733", + "level": "city", + "districts": [{ + "citycode": "0774", + "adcode": "450423", + "name": "蒙山县", + "center": "110.525003,24.193567", + "level": "district", + "districts": [] + }, { + "citycode": "0774", + "adcode": "450406", + "name": "龙圩区", + "center": "111.247514,23.414869", + "level": "district", + "districts": [] + }, { + "citycode": "0774", + "adcode": "450481", + "name": "岑溪市", + "center": "110.994955,22.918327", + "level": "district", + "districts": [] + }, { + "citycode": "0774", + "adcode": "450405", + "name": "长洲区", + "center": "111.274276,23.486279", + "level": "district", + "districts": [] + }, { + "citycode": "0774", + "adcode": "450403", + "name": "万秀区", + "center": "111.318065,23.470543", + "level": "district", + "districts": [] + }, { + "citycode": "0774", + "adcode": "450421", + "name": "苍梧县", + "center": "111.547244,23.868208", + "level": "district", + "districts": [] + }, { + "citycode": "0774", + "adcode": "450422", + "name": "藤县", + "center": "110.914606,23.375538", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1755", + "adcode": "450800", + "name": "贵港市", + "center": "109.598903,23.11182", + "level": "city", + "districts": [{ + "citycode": "1755", + "adcode": "450803", + "name": "港南区", + "center": "109.599357,23.075816", + "level": "district", + "districts": [] + }, { + "citycode": "1755", + "adcode": "450802", + "name": "港北区", + "center": "109.572227,23.11136", + "level": "district", + "districts": [] + }, { + "citycode": "1755", + "adcode": "450881", + "name": "桂平市", + "center": "110.079315,23.394208", + "level": "district", + "districts": [] + }, { + "citycode": "1755", + "adcode": "450804", + "name": "覃塘区", + "center": "109.452668,23.127405", + "level": "district", + "districts": [] + }, { + "citycode": "1755", + "adcode": "450821", + "name": "平南县", + "center": "110.392489,23.540413", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1774", + "adcode": "451100", + "name": "贺州市", + "center": "111.567216,24.404182", + "level": "city", + "districts": [{ + "citycode": "1774", + "adcode": "451122", + "name": "钟山县", + "center": "111.303085,24.526041", + "level": "district", + "districts": [] + }, { + "citycode": "1774", + "adcode": "451121", + "name": "昭平县", + "center": "110.811158,24.169675", + "level": "district", + "districts": [] + }, { + "citycode": "1774", + "adcode": "451103", + "name": "平桂区", + "center": "111.479839,24.453094", + "level": "district", + "districts": [] + }, { + "citycode": "1774", + "adcode": "451102", + "name": "八步区", + "center": "111.552029,24.411822", + "level": "district", + "districts": [] + }, { + "citycode": "1774", + "adcode": "451123", + "name": "富川瑶族自治县", + "center": "111.296012,24.811601", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0775", + "adcode": "450900", + "name": "玉林市", + "center": "110.18097,22.654001", + "level": "city", + "districts": [{ + "citycode": "0775", + "adcode": "450903", + "name": "福绵区", + "center": "110.059564,22.585316", + "level": "district", + "districts": [] + }, { + "citycode": "0775", + "adcode": "450924", + "name": "兴业县", + "center": "109.875223,22.736395", + "level": "district", + "districts": [] + }, { + "citycode": "0775", + "adcode": "450921", + "name": "容县", + "center": "110.558093,22.85844", + "level": "district", + "districts": [] + }, { + "citycode": "0775", + "adcode": "450922", + "name": "陆川县", + "center": "110.26412,22.321563", + "level": "district", + "districts": [] + }, { + "citycode": "0775", + "adcode": "450923", + "name": "博白县", + "center": "109.975856,22.273539", + "level": "district", + "districts": [] + }, { + "citycode": "0775", + "adcode": "450981", + "name": "北流市", + "center": "110.353765,22.708415", + "level": "district", + "districts": [] + }, { + "citycode": "0775", + "adcode": "450902", + "name": "玉州区", + "center": "110.150717,22.628476", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1771", + "adcode": "451400", + "name": "崇左市", + "center": "107.364973,22.377139", + "level": "city", + "districts": [{ + "citycode": "1771", + "adcode": "451421", + "name": "扶绥县", + "center": "107.90389,22.635542", + "level": "district", + "districts": [] + }, { + "citycode": "1771", + "adcode": "451402", + "name": "江州区", + "center": "107.353694,22.40609", + "level": "district", + "districts": [] + }, { + "citycode": "1771", + "adcode": "451481", + "name": "凭祥市", + "center": "106.766715,22.094421", + "level": "district", + "districts": [] + }, { + "citycode": "1771", + "adcode": "451423", + "name": "龙州县", + "center": "106.854001,22.343591", + "level": "district", + "districts": [] + }, { + "citycode": "1771", + "adcode": "451422", + "name": "宁明县", + "center": "107.076394,22.140242", + "level": "district", + "districts": [] + }, { + "citycode": "1771", + "adcode": "451425", + "name": "天等县", + "center": "107.143539,23.080818", + "level": "district", + "districts": [] + }, { + "citycode": "1771", + "adcode": "451424", + "name": "大新县", + "center": "107.200654,22.829287", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "640000", + "name": "宁夏回族自治区", + "center": "106.258889,38.472273", + "level": "province", + "districts": [{ + "citycode": "0954", + "adcode": "640400", + "name": "固原市", + "center": "106.24267,36.01628", + "level": "city", + "districts": [{ + "citycode": "0954", + "adcode": "640423", + "name": "隆德县", + "center": "106.111321,35.62592", + "level": "district", + "districts": [] + }, { + "citycode": "0954", + "adcode": "640425", + "name": "彭阳县", + "center": "106.632151,35.860067", + "level": "district", + "districts": [] + }, { + "citycode": "0954", + "adcode": "640424", + "name": "泾源县", + "center": "106.330569,35.497887", + "level": "district", + "districts": [] + }, { + "citycode": "0954", + "adcode": "640422", + "name": "西吉县", + "center": "105.729189,35.963885", + "level": "district", + "districts": [] + }, { + "citycode": "0954", + "adcode": "640402", + "name": "原州区", + "center": "106.28784,36.003777", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0952", + "adcode": "640200", + "name": "石嘴山市", + "center": "106.382792,38.984632", + "level": "city", + "districts": [{ + "citycode": "0952", + "adcode": "640205", + "name": "惠农区", + "center": "106.781013,39.239292", + "level": "district", + "districts": [] + }, { + "citycode": "0952", + "adcode": "640202", + "name": "大武口区", + "center": "106.368128,39.019375", + "level": "district", + "districts": [] + }, { + "citycode": "0952", + "adcode": "640221", + "name": "平罗县", + "center": "106.523411,38.913923", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1953", + "adcode": "640500", + "name": "中卫市", + "center": "105.19677,37.500185", + "level": "city", + "districts": [{ + "citycode": "1953", + "adcode": "640522", + "name": "海原县", + "center": "105.643449,36.565189", + "level": "district", + "districts": [] + }, { + "citycode": "1953", + "adcode": "640502", + "name": "沙坡头区", + "center": "105.173875,37.516859", + "level": "district", + "districts": [] + }, { + "citycode": "1953", + "adcode": "640521", + "name": "中宁县", + "center": "105.684729,37.492092", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0953", + "adcode": "640300", + "name": "吴忠市", + "center": "106.198613,37.997755", + "level": "city", + "districts": [{ + "citycode": "0953", + "adcode": "640323", + "name": "盐池县", + "center": "107.407184,37.783276", + "level": "district", + "districts": [] + }, { + "citycode": "0953", + "adcode": "640303", + "name": "红寺堡区", + "center": "106.06216,37.425494", + "level": "district", + "districts": [] + }, { + "citycode": "0953", + "adcode": "640302", + "name": "利通区", + "center": "106.235842,38.00298", + "level": "district", + "districts": [] + }, { + "citycode": "0953", + "adcode": "640324", + "name": "同心县", + "center": "105.895412,36.954635", + "level": "district", + "districts": [] + }, { + "citycode": "0953", + "adcode": "640381", + "name": "青铜峡市", + "center": "106.07906,38.021579", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0951", + "adcode": "640100", + "name": "银川市", + "center": "106.230977,38.487783", + "level": "city", + "districts": [{ + "citycode": "0951", + "adcode": "640181", + "name": "灵武市", + "center": "106.339978,38.102456", + "level": "district", + "districts": [] + }, { + "citycode": "0951", + "adcode": "640106", + "name": "金凤区", + "center": "106.239339,38.474277", + "level": "district", + "districts": [] + }, { + "citycode": "0951", + "adcode": "640104", + "name": "兴庆区", + "center": "106.288452,38.473972", + "level": "district", + "districts": [] + }, { + "citycode": "0951", + "adcode": "640121", + "name": "永宁县", + "center": "106.25337,38.277376", + "level": "district", + "districts": [] + }, { + "citycode": "0951", + "adcode": "640105", + "name": "西夏区", + "center": "106.161208,38.502325", + "level": "district", + "districts": [] + }, { + "citycode": "0951", + "adcode": "640122", + "name": "贺兰县", + "center": "106.365074,38.579147", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "330000", + "name": "浙江省", + "center": "120.152575,30.266619", + "level": "province", + "districts": [{ + "citycode": "0580", + "adcode": "330900", + "name": "舟山市", + "center": "122.207395,29.985578", + "level": "city", + "districts": [{ + "citycode": "0580", + "adcode": "330922", + "name": "嵊泗县", + "center": "122.45132,30.725677", + "level": "district", + "districts": [] + }, { + "citycode": "0580", + "adcode": "330921", + "name": "岱山县", + "center": "122.225718,30.264533", + "level": "district", + "districts": [] + }, { + "citycode": "0580", + "adcode": "330902", + "name": "定海区", + "center": "122.106844,30.019795", + "level": "district", + "districts": [] + }, { + "citycode": "0580", + "adcode": "330903", + "name": "普陀区", + "center": "122.323297,29.970571", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0573", + "adcode": "330400", + "name": "嘉兴市", + "center": "120.755623,30.746814", + "level": "city", + "districts": [{ + "citycode": "0573", + "adcode": "330482", + "name": "平湖市", + "center": "121.015619,30.677804", + "level": "district", + "districts": [] + }, { + "citycode": "0573", + "adcode": "330402", + "name": "南湖区", + "center": "120.782952,30.747738", + "level": "district", + "districts": [] + }, { + "citycode": "0573", + "adcode": "330483", + "name": "桐乡市", + "center": "120.565127,30.630375", + "level": "district", + "districts": [] + }, { + "citycode": "0573", + "adcode": "330481", + "name": "海宁市", + "center": "120.680224,30.511536", + "level": "district", + "districts": [] + }, { + "citycode": "0573", + "adcode": "330424", + "name": "海盐县", + "center": "120.94628,30.52664", + "level": "district", + "districts": [] + }, { + "citycode": "0573", + "adcode": "330411", + "name": "秀洲区", + "center": "120.709047,30.764811", + "level": "district", + "districts": [] + }, { + "citycode": "0573", + "adcode": "330421", + "name": "嘉善县", + "center": "120.926031,30.83085", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0574", + "adcode": "330200", + "name": "宁波市", + "center": "121.62454,29.860258", + "level": "city", + "districts": [{ + "citycode": "0574", + "adcode": "330206", + "name": "北仑区", + "center": "121.844601,29.899548", + "level": "district", + "districts": [] + }, { + "citycode": "0574", + "adcode": "330225", + "name": "象山县", + "center": "121.869251,29.476826", + "level": "district", + "districts": [] + }, { + "citycode": "0574", + "adcode": "330211", + "name": "镇海区", + "center": "121.596686,29.965212", + "level": "district", + "districts": [] + }, { + "citycode": "0574", + "adcode": "330203", + "name": "海曙区", + "center": "121.550485,29.873705", + "level": "district", + "districts": [] + }, { + "citycode": "0574", + "adcode": "330213", + "name": "奉化区", + "center": "121.406151,29.655292", + "level": "district", + "districts": [] + }, { + "citycode": "0574", + "adcode": "330212", + "name": "鄞州区", + "center": "121.546617,29.817302", + "level": "district", + "districts": [] + }, { + "citycode": "0574", + "adcode": "330226", + "name": "宁海县", + "center": "121.429729,29.287929", + "level": "district", + "districts": [] + }, { + "citycode": "0574", + "adcode": "330205", + "name": "江北区", + "center": "121.555067,29.88673", + "level": "district", + "districts": [] + }, { + "citycode": "0574", + "adcode": "330281", + "name": "余姚市", + "center": "121.154572,30.037967", + "level": "district", + "districts": [] + }, { + "citycode": "0574", + "adcode": "330282", + "name": "慈溪市", + "center": "121.266525,30.170695", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0576", + "adcode": "331000", + "name": "台州市", + "center": "121.42079,28.655716", + "level": "city", + "districts": [{ + "citycode": "0576", + "adcode": "331082", + "name": "临海市", + "center": "121.144625,28.859042", + "level": "district", + "districts": [] + }, { + "citycode": "0576", + "adcode": "331002", + "name": "椒江区", + "center": "121.442859,28.673334", + "level": "district", + "districts": [] + }, { + "citycode": "0576", + "adcode": "331004", + "name": "路桥区", + "center": "121.337874,28.578244", + "level": "district", + "districts": [] + }, { + "citycode": "0576", + "adcode": "331081", + "name": "温岭市", + "center": "121.385435,28.372805", + "level": "district", + "districts": [] + }, { + "citycode": "0576", + "adcode": "331083", + "name": "玉环市", + "center": "121.231915,28.136703", + "level": "district", + "districts": [] + }, { + "citycode": "0576", + "adcode": "331022", + "name": "三门县", + "center": "121.39561,29.104888", + "level": "district", + "districts": [] + }, { + "citycode": "0576", + "adcode": "331024", + "name": "仙居县", + "center": "120.728733,28.846856", + "level": "district", + "districts": [] + }, { + "citycode": "0576", + "adcode": "331023", + "name": "天台县", + "center": "121.006657,29.144594", + "level": "district", + "districts": [] + }, { + "citycode": "0576", + "adcode": "331003", + "name": "黄岩区", + "center": "121.261804,28.649433", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0577", + "adcode": "330300", + "name": "温州市", + "center": "120.699279,27.993849", + "level": "city", + "districts": [{ + "citycode": "0577", + "adcode": "330327", + "name": "苍南县", + "center": "120.425957,27.518636", + "level": "district", + "districts": [] + }, { + "citycode": "0577", + "adcode": "330305", + "name": "洞头区", + "center": "121.157406,27.836412", + "level": "district", + "districts": [] + }, { + "citycode": "0577", + "adcode": "330326", + "name": "平阳县", + "center": "120.565161,27.662394", + "level": "district", + "districts": [] + }, { + "citycode": "0577", + "adcode": "330381", + "name": "瑞安市", + "center": "120.655245,27.778967", + "level": "district", + "districts": [] + }, { + "citycode": "0577", + "adcode": "330383", + "name": "龙港市", + "center": "120.552952,27.578379", + "level": "district", + "districts": [] + }, { + "citycode": "0577", + "adcode": "330329", + "name": "泰顺县", + "center": "119.717643,27.556578", + "level": "district", + "districts": [] + }, { + "citycode": "0577", + "adcode": "330382", + "name": "乐清市", + "center": "120.986297,28.112519", + "level": "district", + "districts": [] + }, { + "citycode": "0577", + "adcode": "330324", + "name": "永嘉县", + "center": "120.69136,28.153914", + "level": "district", + "districts": [] + }, { + "citycode": "0577", + "adcode": "330302", + "name": "鹿城区", + "center": "120.655199,28.015776", + "level": "district", + "districts": [] + }, { + "citycode": "0577", + "adcode": "330303", + "name": "龙湾区", + "center": "120.812333,27.933261", + "level": "district", + "districts": [] + }, { + "citycode": "0577", + "adcode": "330328", + "name": "文成县", + "center": "120.090929,27.786856", + "level": "district", + "districts": [] + }, { + "citycode": "0577", + "adcode": "330304", + "name": "瓯海区", + "center": "120.615149,27.967445", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0578", + "adcode": "331100", + "name": "丽水市", + "center": "119.923249,28.467694", + "level": "city", + "districts": [{ + "citycode": "0578", + "adcode": "331124", + "name": "松阳县", + "center": "119.481406,28.448883", + "level": "district", + "districts": [] + }, { + "citycode": "0578", + "adcode": "331181", + "name": "龙泉市", + "center": "119.14126,28.074916", + "level": "district", + "districts": [] + }, { + "citycode": "0578", + "adcode": "331122", + "name": "缙云县", + "center": "120.091685,28.659294", + "level": "district", + "districts": [] + }, { + "citycode": "0578", + "adcode": "331127", + "name": "景宁畲族自治县", + "center": "119.635686,27.973594", + "level": "district", + "districts": [] + }, { + "citycode": "0578", + "adcode": "331121", + "name": "青田县", + "center": "120.289693,28.1396", + "level": "district", + "districts": [] + }, { + "citycode": "0578", + "adcode": "331126", + "name": "庆元县", + "center": "119.062572,27.619213", + "level": "district", + "districts": [] + }, { + "citycode": "0578", + "adcode": "331123", + "name": "遂昌县", + "center": "119.275865,28.592388", + "level": "district", + "districts": [] + }, { + "citycode": "0578", + "adcode": "331125", + "name": "云和县", + "center": "119.573454,28.116024", + "level": "district", + "districts": [] + }, { + "citycode": "0578", + "adcode": "331102", + "name": "莲都区", + "center": "119.912266,28.4461", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0570", + "adcode": "330800", + "name": "衢州市", + "center": "118.859307,28.970229", + "level": "city", + "districts": [{ + "citycode": "0570", + "adcode": "330822", + "name": "常山县", + "center": "118.511224,28.902446", + "level": "district", + "districts": [] + }, { + "citycode": "0570", + "adcode": "330803", + "name": "衢江区", + "center": "118.959139,28.980356", + "level": "district", + "districts": [] + }, { + "citycode": "0570", + "adcode": "330824", + "name": "开化县", + "center": "118.406852,29.1179", + "level": "district", + "districts": [] + }, { + "citycode": "0570", + "adcode": "330802", + "name": "柯城区", + "center": "118.874138,28.936937", + "level": "district", + "districts": [] + }, { + "citycode": "0570", + "adcode": "330881", + "name": "江山市", + "center": "118.627228,28.73796", + "level": "district", + "districts": [] + }, { + "citycode": "0570", + "adcode": "330825", + "name": "龙游县", + "center": "119.1723,29.028214", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0579", + "adcode": "330700", + "name": "金华市", + "center": "119.647265,29.079195", + "level": "city", + "districts": [{ + "citycode": "0579", + "adcode": "330723", + "name": "武义县", + "center": "119.816341,28.892562", + "level": "district", + "districts": [] + }, { + "citycode": "0579", + "adcode": "330726", + "name": "浦江县", + "center": "119.89259,29.453363", + "level": "district", + "districts": [] + }, { + "citycode": "0579", + "adcode": "330784", + "name": "永康市", + "center": "120.047356,28.88899", + "level": "district", + "districts": [] + }, { + "citycode": "0579", + "adcode": "330782", + "name": "义乌市", + "center": "120.075679,29.306296", + "level": "district", + "districts": [] + }, { + "citycode": "0579", + "adcode": "330781", + "name": "兰溪市", + "center": "119.460404,29.209059", + "level": "district", + "districts": [] + }, { + "citycode": "0579", + "adcode": "330702", + "name": "婺城区", + "center": "119.571574,29.087311", + "level": "district", + "districts": [] + }, { + "citycode": "0579", + "adcode": "330703", + "name": "金东区", + "center": "119.692821,29.099822", + "level": "district", + "districts": [] + }, { + "citycode": "0579", + "adcode": "330783", + "name": "东阳市", + "center": "120.24179,29.290158", + "level": "district", + "districts": [] + }, { + "citycode": "0579", + "adcode": "330727", + "name": "磐安县", + "center": "120.449937,29.054491", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0572", + "adcode": "330500", + "name": "湖州市", + "center": "120.086881,30.894178", + "level": "city", + "districts": [{ + "citycode": "0572", + "adcode": "330503", + "name": "南浔区", + "center": "120.418244,30.850835", + "level": "district", + "districts": [] + }, { + "citycode": "0572", + "adcode": "330502", + "name": "吴兴区", + "center": "120.185608,30.857184", + "level": "district", + "districts": [] + }, { + "citycode": "0572", + "adcode": "330523", + "name": "安吉县", + "center": "119.680261,30.638803", + "level": "district", + "districts": [] + }, { + "citycode": "0572", + "adcode": "330521", + "name": "德清县", + "center": "119.9774,30.54251", + "level": "district", + "districts": [] + }, { + "citycode": "0572", + "adcode": "330522", + "name": "长兴县", + "center": "119.911212,31.026962", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0571", + "adcode": "330100", + "name": "杭州市", + "center": "120.209903,30.246566", + "level": "city", + "districts": [{ + "citycode": "0571", + "adcode": "330102", + "name": "上城区", + "center": "120.19732,30.226543", + "level": "district", + "districts": [] + }, { + "citycode": "0571", + "adcode": "330127", + "name": "淳安县", + "center": "119.042015,29.609678", + "level": "district", + "districts": [] + }, { + "citycode": "0571", + "adcode": "330105", + "name": "拱墅区", + "center": "120.141503,30.319126", + "level": "district", + "districts": [] + }, { + "citycode": "0571", + "adcode": "330114", + "name": "钱塘区", + "center": "120.493941,30.32304", + "level": "district", + "districts": [] + }, { + "citycode": "0571", + "adcode": "330182", + "name": "建德市", + "center": "119.281195,29.474964", + "level": "district", + "districts": [] + }, { + "citycode": "0571", + "adcode": "330112", + "name": "临安区", + "center": "119.724457,30.234375", + "level": "district", + "districts": [] + }, { + "citycode": "0571", + "adcode": "330113", + "name": "临平区", + "center": "120.299222,30.419154", + "level": "district", + "districts": [] + }, { + "citycode": "0571", + "adcode": "330110", + "name": "余杭区", + "center": "119.978742,30.273705", + "level": "district", + "districts": [] + }, { + "citycode": "0571", + "adcode": "330106", + "name": "西湖区", + "center": "120.130396,30.259242", + "level": "district", + "districts": [] + }, { + "citycode": "0571", + "adcode": "330111", + "name": "富阳区", + "center": "119.96022,30.048803", + "level": "district", + "districts": [] + }, { + "citycode": "0571", + "adcode": "330122", + "name": "桐庐县", + "center": "119.691755,29.79418", + "level": "district", + "districts": [] + }, { + "citycode": "0571", + "adcode": "330108", + "name": "滨江区", + "center": "120.211981,30.208332", + "level": "district", + "districts": [] + }, { + "citycode": "0571", + "adcode": "330109", + "name": "萧山区", + "center": "120.264263,30.184119", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0575", + "adcode": "330600", + "name": "绍兴市", + "center": "120.582886,30.051549", + "level": "city", + "districts": [{ + "citycode": "0575", + "adcode": "330604", + "name": "上虞区", + "center": "120.868571,30.033862", + "level": "district", + "districts": [] + }, { + "citycode": "0575", + "adcode": "330681", + "name": "诸暨市", + "center": "120.246602,29.709398", + "level": "district", + "districts": [] + }, { + "citycode": "0575", + "adcode": "330624", + "name": "新昌县", + "center": "120.903918,29.500525", + "level": "district", + "districts": [] + }, { + "citycode": "0575", + "adcode": "330683", + "name": "嵊州市", + "center": "120.830505,29.561519", + "level": "district", + "districts": [] + }, { + "citycode": "0575", + "adcode": "330602", + "name": "越城区", + "center": "120.582338,29.989092", + "level": "district", + "districts": [] + }, { + "citycode": "0575", + "adcode": "330603", + "name": "柯桥区", + "center": "120.495532,30.083039", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "130000", + "name": "河北省", + "center": "114.530399,38.037707", + "level": "province", + "districts": [{ + "citycode": "0315", + "adcode": "130200", + "name": "唐山市", + "center": "118.180149,39.63068", + "level": "city", + "districts": [{ + "citycode": "0315", + "adcode": "130225", + "name": "乐亭县", + "center": "118.91245,39.425748", + "level": "district", + "districts": [] + }, { + "citycode": "0315", + "adcode": "130209", + "name": "曹妃甸区", + "center": "118.460197,39.273528", + "level": "district", + "districts": [] + }, { + "citycode": "0315", + "adcode": "130224", + "name": "滦南县", + "center": "118.68363,39.520272", + "level": "district", + "districts": [] + }, { + "citycode": "0315", + "adcode": "130204", + "name": "古冶区", + "center": "118.447134,39.73392", + "level": "district", + "districts": [] + }, { + "citycode": "0315", + "adcode": "130227", + "name": "迁西县", + "center": "118.31467,40.141486", + "level": "district", + "districts": [] + }, { + "citycode": "0315", + "adcode": "130207", + "name": "丰南区", + "center": "118.085169,39.576031", + "level": "district", + "districts": [] + }, { + "citycode": "0315", + "adcode": "130283", + "name": "迁安市", + "center": "118.701021,39.998861", + "level": "district", + "districts": [] + }, { + "citycode": "0315", + "adcode": "130202", + "name": "路南区", + "center": "118.154348,39.624988", + "level": "district", + "districts": [] + }, { + "citycode": "0315", + "adcode": "130229", + "name": "玉田县", + "center": "117.738196,39.901827", + "level": "district", + "districts": [] + }, { + "citycode": "0315", + "adcode": "130281", + "name": "遵化市", + "center": "117.965878,40.189119", + "level": "district", + "districts": [] + }, { + "citycode": "0315", + "adcode": "130208", + "name": "丰润区", + "center": "118.162426,39.832919", + "level": "district", + "districts": [] + }, { + "citycode": "0315", + "adcode": "130284", + "name": "滦州市", + "center": "118.70301,39.740963", + "level": "district", + "districts": [] + }, { + "citycode": "0315", + "adcode": "130203", + "name": "路北区", + "center": "118.201085,39.625079", + "level": "district", + "districts": [] + }, { + "citycode": "0315", + "adcode": "130205", + "name": "开平区", + "center": "118.262246,39.671634", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0335", + "adcode": "130300", + "name": "秦皇岛市", + "center": "119.52022,39.888243", + "level": "city", + "districts": [{ + "citycode": "0335", + "adcode": "130303", + "name": "山海关区", + "center": "119.775187,39.978882", + "level": "district", + "districts": [] + }, { + "citycode": "0335", + "adcode": "130306", + "name": "抚宁区", + "center": "119.244847,39.876253", + "level": "district", + "districts": [] + }, { + "citycode": "0335", + "adcode": "130302", + "name": "海港区", + "center": "119.564962,39.94756", + "level": "district", + "districts": [] + }, { + "citycode": "0335", + "adcode": "130321", + "name": "青龙满族自治县", + "center": "118.94985,40.407473", + "level": "district", + "districts": [] + }, { + "citycode": "0335", + "adcode": "130322", + "name": "昌黎县", + "center": "119.199846,39.699677", + "level": "district", + "districts": [] + }, { + "citycode": "0335", + "adcode": "130324", + "name": "卢龙县", + "center": "118.891931,39.892564", + "level": "district", + "districts": [] + }, { + "citycode": "0335", + "adcode": "130304", + "name": "北戴河区", + "center": "119.48449,39.834912", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0317", + "adcode": "130900", + "name": "沧州市", + "center": "116.838715,38.304676", + "level": "city", + "districts": [{ + "citycode": "0317", + "adcode": "130923", + "name": "东光县", + "center": "116.537138,37.888844", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130924", + "name": "海兴县", + "center": "117.497545,38.143308", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130928", + "name": "吴桥县", + "center": "116.391557,37.628225", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130902", + "name": "新华区", + "center": "116.866309,38.314094", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130927", + "name": "南皮县", + "center": "116.708603,38.038761", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130922", + "name": "青县", + "center": "116.804137,38.583657", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130926", + "name": "肃宁县", + "center": "115.829619,38.423044", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130984", + "name": "河间市", + "center": "116.099362,38.446656", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130929", + "name": "献县", + "center": "116.152058,38.180381", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130981", + "name": "泊头市", + "center": "116.578322,38.084262", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130925", + "name": "盐山县", + "center": "117.230681,38.058074", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130930", + "name": "孟村回族自治县", + "center": "117.104514,38.053438", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130982", + "name": "任丘市", + "center": "116.084412,38.685325", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130983", + "name": "黄骅市", + "center": "117.330043,38.372266", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130921", + "name": "沧县", + "center": "117.007478,38.21985569", + "level": "district", + "districts": [] + }, { + "citycode": "0317", + "adcode": "130903", + "name": "运河区", + "center": "116.842964,38.283456", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0310", + "adcode": "130400", + "name": "邯郸市", + "center": "114.53915,36.625849", + "level": "city", + "districts": [{ + "citycode": "0310", + "adcode": "130407", + "name": "肥乡区", + "center": "114.800199,36.548545", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130431", + "name": "鸡泽县", + "center": "114.889951,36.911525", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130408", + "name": "永年区", + "center": "114.536626,36.74188", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130423", + "name": "临漳县", + "center": "114.585514,36.322504", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130402", + "name": "邯山区", + "center": "114.531062,36.59457", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130425", + "name": "大名县", + "center": "115.147985,36.286406", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130403", + "name": "丛台区", + "center": "114.492875,36.636434", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130404", + "name": "复兴区", + "center": "114.462581,36.638879", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130481", + "name": "武安市", + "center": "114.203685,36.69759", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130432", + "name": "广平县", + "center": "114.921185,36.476727", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130424", + "name": "成安县", + "center": "114.670094,36.445331", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130433", + "name": "馆陶县", + "center": "115.281818,36.548295", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130427", + "name": "磁县", + "center": "114.373965,36.37507", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130406", + "name": "峰峰矿区", + "center": "114.212571,36.419298", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130435", + "name": "曲周县", + "center": "114.957549,36.766347", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130430", + "name": "邱县", + "center": "115.200049,36.811783", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130426", + "name": "涉县", + "center": "113.692157,36.586073", + "level": "district", + "districts": [] + }, { + "citycode": "0310", + "adcode": "130434", + "name": "魏县", + "center": "114.939217,36.35926", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0311", + "adcode": "130100", + "name": "石家庄市", + "center": "114.514976,38.042007", + "level": "city", + "districts": [{ + "citycode": "0311", + "adcode": "130127", + "name": "高邑县", + "center": "114.611659,37.615905", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130121", + "name": "井陉县", + "center": "114.145669,38.032366", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130181", + "name": "辛集市", + "center": "115.217626,37.943239", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130107", + "name": "井陉矿区", + "center": "114.062258,38.065446", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130128", + "name": "深泽县", + "center": "115.20089,38.184572", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130133", + "name": "赵县", + "center": "114.775914,37.756935", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130125", + "name": "行唐县", + "center": "114.553044,38.437535", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130123", + "name": "正定县", + "center": "114.57043,38.14699", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130108", + "name": "裕华区", + "center": "114.531599,38.007002", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130130", + "name": "无极县", + "center": "114.976256,38.178852", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130184", + "name": "新乐市", + "center": "114.683745,38.343952", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130104", + "name": "桥西区", + "center": "114.45004,38.025245", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130105", + "name": "新华区", + "center": "114.463904,38.050749", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130102", + "name": "长安区", + "center": "114.538955,38.03682", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130129", + "name": "赞皇县", + "center": "114.386114,37.666549", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130110", + "name": "鹿泉区", + "center": "114.313559,38.086536", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130111", + "name": "栾城区", + "center": "114.647922,37.900915", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130132", + "name": "元氏县", + "center": "114.525508,37.767332", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130126", + "name": "灵寿县", + "center": "114.383013,38.307908", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130131", + "name": "平山县", + "center": "114.186007,38.260288", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130183", + "name": "晋州市", + "center": "115.044141,38.033937", + "level": "district", + "districts": [] + }, { + "citycode": "0311", + "adcode": "130109", + "name": "藁城区", + "center": "114.846562,38.022177", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0316", + "adcode": "131000", + "name": "廊坊市", + "center": "116.683546,39.538304", + "level": "city", + "districts": [{ + "citycode": "0316", + "adcode": "131028", + "name": "大厂回族自治县", + "center": "116.98961,39.886569", + "level": "district", + "districts": [] + }, { + "citycode": "0316", + "adcode": "131026", + "name": "文安县", + "center": "116.457628,38.873185", + "level": "district", + "districts": [] + }, { + "citycode": "0316", + "adcode": "131082", + "name": "三河市", + "center": "117.078269,39.982933", + "level": "district", + "districts": [] + }, { + "citycode": "0316", + "adcode": "131002", + "name": "安次区", + "center": "116.6945443,39.50256863", + "level": "district", + "districts": [] + }, { + "citycode": "0316", + "adcode": "131003", + "name": "广阳区", + "center": "116.710667,39.52343", + "level": "district", + "districts": [] + }, { + "citycode": "0316", + "adcode": "131025", + "name": "大城县", + "center": "116.653917,38.705232", + "level": "district", + "districts": [] + }, { + "citycode": "0316", + "adcode": "131022", + "name": "固安县", + "center": "116.298696,39.438797", + "level": "district", + "districts": [] + }, { + "citycode": "0316", + "adcode": "131023", + "name": "永清县", + "center": "116.50608,39.330983", + "level": "district", + "districts": [] + }, { + "citycode": "0316", + "adcode": "131081", + "name": "霸州市", + "center": "116.391488,39.125238", + "level": "district", + "districts": [] + }, { + "citycode": "0316", + "adcode": "131024", + "name": "香河县", + "center": "117.006072,39.763772", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0314", + "adcode": "130800", + "name": "承德市", + "center": "117.962749,40.952942", + "level": "city", + "districts": [{ + "citycode": "0314", + "adcode": "130828", + "name": "围场满族蒙古族自治县", + "center": "117.75934,41.938372", + "level": "district", + "districts": [] + }, { + "citycode": "0314", + "adcode": "130826", + "name": "丰宁满族自治县", + "center": "116.645798,41.209951", + "level": "district", + "districts": [] + }, { + "citycode": "0314", + "adcode": "130825", + "name": "隆化县", + "center": "117.739026,41.314402", + "level": "district", + "districts": [] + }, { + "citycode": "0314", + "adcode": "130827", + "name": "宽城满族自治县", + "center": "118.485472,40.611333", + "level": "district", + "districts": [] + }, { + "citycode": "0314", + "adcode": "130804", + "name": "鹰手营子矿区", + "center": "117.659341,40.546424", + "level": "district", + "districts": [] + }, { + "citycode": "0314", + "adcode": "130824", + "name": "滦平县", + "center": "117.332652,40.941644", + "level": "district", + "districts": [] + }, { + "citycode": "0314", + "adcode": "130803", + "name": "双滦区", + "center": "117.799588,40.959426", + "level": "district", + "districts": [] + }, { + "citycode": "0314", + "adcode": "130802", + "name": "双桥区", + "center": "117.943121,40.974679", + "level": "district", + "districts": [] + }, { + "citycode": "0314", + "adcode": "130821", + "name": "承德县", + "center": "118.174166,40.768082", + "level": "district", + "districts": [] + }, { + "citycode": "0314", + "adcode": "130881", + "name": "平泉市", + "center": "118.702032,41.018482", + "level": "district", + "districts": [] + }, { + "citycode": "0314", + "adcode": "130822", + "name": "兴隆县", + "center": "117.500558,40.417358", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0312", + "adcode": "130600", + "name": "保定市", + "center": "115.464523,38.874476", + "level": "city", + "districts": [{ + "citycode": "0312", + "adcode": "130636", + "name": "顺平县", + "center": "115.135133,38.837988", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130631", + "name": "望都县", + "center": "115.15542,38.696221", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130627", + "name": "唐县", + "center": "114.982968,38.748477", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130634", + "name": "曲阳县", + "center": "114.740476,38.614409", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130628", + "name": "高阳县", + "center": "115.779149,38.700846", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130608", + "name": "清苑区", + "center": "115.48988,38.76527", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130682", + "name": "定州市", + "center": "114.990321,38.516746", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130633", + "name": "易县", + "center": "115.497487,39.350219", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130607", + "name": "满城区", + "center": "115.322246,38.949732", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130635", + "name": "蠡县", + "center": "115.583701,38.488064", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130638", + "name": "雄县", + "center": "116.108624,38.994825", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130632", + "name": "安新县", + "center": "115.935688,38.936102", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130602", + "name": "竞秀区", + "center": "115.458671,38.877318", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130606", + "name": "莲池区", + "center": "115.497153,38.883528", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130609", + "name": "徐水区", + "center": "115.655772,39.018781", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130637", + "name": "博野县", + "center": "115.464295,38.458048", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130683", + "name": "安国市", + "center": "115.327088,38.418985", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130629", + "name": "容城县", + "center": "115.861635,39.043321", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130626", + "name": "定兴县", + "center": "115.808183,39.263219", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130630", + "name": "涞源县", + "center": "114.694416,39.360622", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130624", + "name": "阜平县", + "center": "114.195118,38.849221", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130623", + "name": "涞水县", + "center": "115.713651,39.394305", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130681", + "name": "涿州市", + "center": "115.97444,39.485684", + "level": "district", + "districts": [] + }, { + "citycode": "0312", + "adcode": "130684", + "name": "高碑店市", + "center": "115.873612,39.327233", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0313", + "adcode": "130700", + "name": "张家口市", + "center": "114.885895,40.768931", + "level": "city", + "districts": [{ + "citycode": "0313", + "adcode": "130723", + "name": "康保县", + "center": "114.60018,41.853016", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130732", + "name": "赤城县", + "center": "115.831256,40.913348", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130709", + "name": "崇礼区", + "center": "115.282345,40.974741", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130706", + "name": "下花园区", + "center": "115.287127,40.502628", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130703", + "name": "桥西区", + "center": "114.868604,40.819553", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130725", + "name": "尚义县", + "center": "113.968763,41.076588", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130724", + "name": "沽源县", + "center": "115.688544,41.670497", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130722", + "name": "张北县", + "center": "114.719927,41.159039", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130708", + "name": "万全区", + "center": "114.740584,40.767377", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130731", + "name": "涿鹿县", + "center": "115.196835,40.382681", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130705", + "name": "宣化区", + "center": "115.099515,40.609444", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130702", + "name": "桥东区", + "center": "114.894114,40.788472", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130728", + "name": "怀安县", + "center": "114.386488,40.67527", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130726", + "name": "蔚县", + "center": "114.589136,39.840154", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130727", + "name": "阳原县", + "center": "114.150267,40.104303", + "level": "district", + "districts": [] + }, { + "citycode": "0313", + "adcode": "130730", + "name": "怀来县", + "center": "115.517868,40.415625", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0319", + "adcode": "130500", + "name": "邢台市", + "center": "114.49742,37.060227", + "level": "city", + "districts": [{ + "citycode": "0319", + "adcode": "130506", + "name": "南和区", + "center": "114.683683,37.005626", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130524", + "name": "柏乡县", + "center": "114.693447,37.48288", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130530", + "name": "新河县", + "center": "115.251005,37.520891", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130581", + "name": "南宫市", + "center": "115.40866,37.358907", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130534", + "name": "清河县", + "center": "115.665081,37.0451", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130533", + "name": "威县", + "center": "115.266829,36.975164", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130535", + "name": "临西县", + "center": "115.501258,36.871312", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130582", + "name": "沙河市", + "center": "114.503023,36.855548", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130522", + "name": "临城县", + "center": "114.498651,37.444512", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130529", + "name": "巨鹿县", + "center": "115.037884,37.221293", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130505", + "name": "任泽区", + "center": "114.671339,37.121958", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130525", + "name": "隆尧县", + "center": "114.770509,37.351232", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130523", + "name": "内丘县", + "center": "114.512226,37.287612", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130528", + "name": "宁晋县", + "center": "114.940006,37.624524", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130532", + "name": "平乡县", + "center": "115.03008,37.063771", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130531", + "name": "广宗县", + "center": "115.142766,37.074795", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130503", + "name": "信都区", + "center": "114.468229,37.093798", + "level": "district", + "districts": [] + }, { + "citycode": "0319", + "adcode": "130502", + "name": "襄都区", + "center": "114.507443,37.071314", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0318", + "adcode": "131100", + "name": "衡水市", + "center": "115.668987,37.739367", + "level": "city", + "districts": [{ + "citycode": "0318", + "adcode": "131102", + "name": "桃城区", + "center": "115.675208,37.735152", + "level": "district", + "districts": [] + }, { + "citycode": "0318", + "adcode": "131182", + "name": "深州市", + "center": "115.559576,38.001535", + "level": "district", + "districts": [] + }, { + "citycode": "0318", + "adcode": "131126", + "name": "故城县", + "center": "115.965877,37.347873", + "level": "district", + "districts": [] + }, { + "citycode": "0318", + "adcode": "131123", + "name": "武强县", + "center": "115.982119,38.041447", + "level": "district", + "districts": [] + }, { + "citycode": "0318", + "adcode": "131124", + "name": "饶阳县", + "center": "115.725898,38.235313", + "level": "district", + "districts": [] + }, { + "citycode": "0318", + "adcode": "131125", + "name": "安平县", + "center": "115.518918,38.234769", + "level": "district", + "districts": [] + }, { + "citycode": "0318", + "adcode": "131121", + "name": "枣强县", + "center": "115.724365,37.514217", + "level": "district", + "districts": [] + }, { + "citycode": "0318", + "adcode": "131127", + "name": "景县", + "center": "116.270558,37.692831", + "level": "district", + "districts": [] + }, { + "citycode": "0318", + "adcode": "131103", + "name": "冀州区", + "center": "115.579392,37.550922", + "level": "district", + "districts": [] + }, { + "citycode": "0318", + "adcode": "131122", + "name": "武邑县", + "center": "115.887498,37.802036", + "level": "district", + "districts": [] + }, { + "citycode": "0318", + "adcode": "131128", + "name": "阜城县", + "center": "116.175424,37.862984", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": "1852", + "adcode": "810000", + "name": "香港特别行政区", + "center": "114.170714,22.278354", + "level": "province", + "districts": [{ + "citycode": "1852", + "adcode": "810013", + "name": "北区", + "center": "114.1473639,22.49610389", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810014", + "name": "大埔区", + "center": "114.1717431,22.44565306", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810015", + "name": "西贡区", + "center": "114.264645,22.31421306", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810016", + "name": "沙田区", + "center": "114.1953653,22.37953167", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810011", + "name": "屯门区", + "center": "113.9765742,22.39384417", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810008", + "name": "黄大仙区", + "center": "114.2038856,22.33632056", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810007", + "name": "九龙城区", + "center": "114.1928467,22.31251", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810006", + "name": "深水埗区", + "center": "114.1632417,22.33385417", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810009", + "name": "观塘区", + "center": "114.2140542,22.32083778", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810005", + "name": "油尖旺区", + "center": "114.1733317,22.31170389", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810003", + "name": "东区", + "center": "114.2260031,22.27969306", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810001", + "name": "中西区", + "center": "114.1543731,22.28198083", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810018", + "name": "离岛区", + "center": "113.94612,22.28640778", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810002", + "name": "湾仔区", + "center": "114.1829153,22.27638889", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810004", + "name": "南区", + "center": "114.1600117,22.24589667", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810012", + "name": "元朗区", + "center": "114.0324381,22.44142833", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810010", + "name": "荃湾区", + "center": "114.1210792,22.36830667", + "level": "district", + "districts": [] + }, { + "citycode": "1852", + "adcode": "810017", + "name": "葵青区", + "center": "114.1393194,22.36387667", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1886", + "adcode": "710000", + "name": "台湾省", + "center": "121.509062,25.044332", + "level": "province", + "districts": [] + }, { + "citycode": "1853", + "adcode": "820000", + "name": "澳门特别行政区", + "center": "113.543076,22.186927", + "level": "province", + "districts": [{ + "citycode": "1853", + "adcode": "820003", + "name": "望德堂区", + "center": "113.5501828,22.19372083", + "level": "district", + "districts": [] + }, { + "citycode": "1853", + "adcode": "820006", + "name": "嘉模堂区", + "center": "113.5587044,22.15375944", + "level": "district", + "districts": [] + }, { + "citycode": "1853", + "adcode": "820002", + "name": "花王堂区", + "center": "113.5489608,22.1992075", + "level": "district", + "districts": [] + }, { + "citycode": "1853", + "adcode": "820008", + "name": "圣方济各堂区", + "center": "113.5599542,22.12348639", + "level": "district", + "districts": [] + }, { + "citycode": "1853", + "adcode": "820007", + "name": "路氹填海区", + "center": "113.5695992,22.13663", + "level": "district", + "districts": [] + }, { + "citycode": "1853", + "adcode": "820004", + "name": "大堂区", + "center": "113.5536475,22.18853944", + "level": "district", + "districts": [] + }, { + "citycode": "1853", + "adcode": "820001", + "name": "花地玛堂区", + "center": "113.5528956,22.20787", + "level": "district", + "districts": [] + }, { + "citycode": "1853", + "adcode": "820005", + "name": "风顺堂区", + "center": "113.5419278,22.18736806", + "level": "district", + "districts": [] + }] + }, { + "citycode": [], + "adcode": "620000", + "name": "甘肃省", + "center": "103.826777,36.060634", + "level": "province", + "districts": [{ + "citycode": "1937", + "adcode": "620200", + "name": "嘉峪关市", + "center": "98.2882,39.77325", + "level": "city", + "districts": [{ + "citycode": "1937", + "adcode": "620200", + "name": "峪泉镇", + "center": "98.320410,39.958254", + "level": "street", + "districts": [] + }, { + "citycode": "1937", + "adcode": "620200", + "name": "新城镇", + "center": "98.362748,39.958127", + "level": "street", + "districts": [] + }, { + "citycode": "1937", + "adcode": "620200", + "name": "文殊镇", + "center": "98.157893,39.696861", + "level": "street", + "districts": [] + }, { + "citycode": "1937", + "adcode": "620200", + "name": "雄关街道", + "center": "98.239097,39.892952", + "level": "street", + "districts": [] + }, { + "citycode": "1937", + "adcode": "620200", + "name": "钢城街道", + "center": "98.292606,39.755770", + "level": "street", + "districts": [] + }] + }, { + "citycode": "0937", + "adcode": "620900", + "name": "酒泉市", + "center": "98.49432,39.733416", + "level": "city", + "districts": [{ + "citycode": "0937", + "adcode": "620982", + "name": "敦煌市", + "center": "94.66201,40.142141", + "level": "district", + "districts": [] + }, { + "citycode": "0937", + "adcode": "620923", + "name": "肃北蒙古族自治县", + "center": "94.876533,39.512158", + "level": "district", + "districts": [] + }, { + "citycode": "0937", + "adcode": "620981", + "name": "玉门市", + "center": "97.045617,40.292344", + "level": "district", + "districts": [] + }, { + "citycode": "0937", + "adcode": "620902", + "name": "肃州区", + "center": "98.507834,39.74511", + "level": "district", + "districts": [] + }, { + "citycode": "0937", + "adcode": "620921", + "name": "金塔县", + "center": "98.901523,39.984146", + "level": "district", + "districts": [] + }, { + "citycode": "0937", + "adcode": "620922", + "name": "瓜州县", + "center": "95.782255,40.520457", + "level": "district", + "districts": [] + }, { + "citycode": "0937", + "adcode": "620924", + "name": "阿克塞哈萨克族自治县", + "center": "94.340202,39.633944", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0931", + "adcode": "620100", + "name": "兰州市", + "center": "103.834228,36.060798", + "level": "city", + "districts": [{ + "citycode": "0931", + "adcode": "620111", + "name": "红古区", + "center": "102.859338,36.345768", + "level": "district", + "districts": [] + }, { + "citycode": "0931", + "adcode": "620105", + "name": "安宁区", + "center": "103.718953,36.104493", + "level": "district", + "districts": [] + }, { + "citycode": "0931", + "adcode": "620121", + "name": "永登县", + "center": "103.260273,36.736457", + "level": "district", + "districts": [] + }, { + "citycode": "0931", + "adcode": "620122", + "name": "皋兰县", + "center": "103.947345,36.332434", + "level": "district", + "districts": [] + }, { + "citycode": "0931", + "adcode": "620104", + "name": "西固区", + "center": "103.627966,36.08845", + "level": "district", + "districts": [] + }, { + "citycode": "0931", + "adcode": "620103", + "name": "七里河区", + "center": "103.786261,36.066249", + "level": "district", + "districts": [] + }, { + "citycode": "0931", + "adcode": "620123", + "name": "榆中县", + "center": "104.112541,35.843354", + "level": "district", + "districts": [] + }, { + "citycode": "0931", + "adcode": "620102", + "name": "城关区", + "center": "103.825315,36.056948", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0933", + "adcode": "620800", + "name": "平凉市", + "center": "106.664913,35.542417", + "level": "city", + "districts": [{ + "citycode": "0933", + "adcode": "620802", + "name": "崆峒区", + "center": "106.67489,35.542437", + "level": "district", + "districts": [] + }, { + "citycode": "0933", + "adcode": "620825", + "name": "庄浪县", + "center": "106.036201,35.20266", + "level": "district", + "districts": [] + }, { + "citycode": "0933", + "adcode": "620826", + "name": "静宁县", + "center": "105.732165,35.522035", + "level": "district", + "districts": [] + }, { + "citycode": "0933", + "adcode": "620881", + "name": "华亭市", + "center": "106.628899,35.207695", + "level": "district", + "districts": [] + }, { + "citycode": "0933", + "adcode": "620822", + "name": "灵台县", + "center": "107.595874,35.070027", + "level": "district", + "districts": [] + }, { + "citycode": "0933", + "adcode": "620823", + "name": "崇信县", + "center": "107.025762,35.305648", + "level": "district", + "districts": [] + }, { + "citycode": "0933", + "adcode": "620821", + "name": "泾川县", + "center": "107.367608,35.332992", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0935", + "adcode": "620300", + "name": "金昌市", + "center": "102.187972,38.521468", + "level": "city", + "districts": [{ + "citycode": "0935", + "adcode": "620321", + "name": "永昌县", + "center": "101.984642,38.243534", + "level": "district", + "districts": [] + }, { + "citycode": "0935", + "adcode": "620302", + "name": "金川区", + "center": "102.1939,38.520373", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0938", + "adcode": "620500", + "name": "天水市", + "center": "105.724828,34.581514", + "level": "city", + "districts": [{ + "citycode": "0938", + "adcode": "620521", + "name": "清水县", + "center": "106.137318,34.749906", + "level": "district", + "districts": [] + }, { + "citycode": "0938", + "adcode": "620503", + "name": "麦积区", + "center": "105.889452,34.571143", + "level": "district", + "districts": [] + }, { + "citycode": "0938", + "adcode": "620502", + "name": "秦州区", + "center": "105.724914,34.581187", + "level": "district", + "districts": [] + }, { + "citycode": "0938", + "adcode": "620524", + "name": "武山县", + "center": "104.89121,34.72183", + "level": "district", + "districts": [] + }, { + "citycode": "0938", + "adcode": "620523", + "name": "甘谷县", + "center": "105.340789,34.745447", + "level": "district", + "districts": [] + }, { + "citycode": "0938", + "adcode": "620525", + "name": "张家川回族自治县", + "center": "106.20513,34.988676", + "level": "district", + "districts": [] + }, { + "citycode": "0938", + "adcode": "620522", + "name": "秦安县", + "center": "105.675799,34.859094", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0943", + "adcode": "620400", + "name": "白银市", + "center": "104.138872,36.545123", + "level": "city", + "districts": [{ + "citycode": "0943", + "adcode": "620421", + "name": "靖远县", + "center": "104.676202,36.571736", + "level": "district", + "districts": [] + }, { + "citycode": "0943", + "adcode": "620423", + "name": "景泰县", + "center": "104.063125,37.18351", + "level": "district", + "districts": [] + }, { + "citycode": "0943", + "adcode": "620402", + "name": "白银区", + "center": "104.14956,36.53469", + "level": "district", + "districts": [] + }, { + "citycode": "0943", + "adcode": "620403", + "name": "平川区", + "center": "104.825275,36.728494", + "level": "district", + "districts": [] + }, { + "citycode": "0943", + "adcode": "620422", + "name": "会宁县", + "center": "105.052883,35.693241", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1935", + "adcode": "620600", + "name": "武威市", + "center": "102.637821,37.92898", + "level": "city", + "districts": [{ + "citycode": "1935", + "adcode": "620602", + "name": "凉州区", + "center": "102.641959,37.928217", + "level": "district", + "districts": [] + }, { + "citycode": "1935", + "adcode": "620622", + "name": "古浪县", + "center": "102.897542,37.470882", + "level": "district", + "districts": [] + }, { + "citycode": "1935", + "adcode": "620621", + "name": "民勤县", + "center": "103.093671,38.624293", + "level": "district", + "districts": [] + }, { + "citycode": "1935", + "adcode": "620623", + "name": "天祝藏族自治县", + "center": "103.142416,36.971978", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0936", + "adcode": "620700", + "name": "张掖市", + "center": "100.449858,38.924766", + "level": "city", + "districts": [{ + "citycode": "0936", + "adcode": "620721", + "name": "肃南裕固族自治县", + "center": "99.627762,38.839221", + "level": "district", + "districts": [] + }, { + "citycode": "0936", + "adcode": "620724", + "name": "高台县", + "center": "99.819265,39.378294", + "level": "district", + "districts": [] + }, { + "citycode": "0936", + "adcode": "620723", + "name": "临泽县", + "center": "100.164333,39.15224", + "level": "district", + "districts": [] + }, { + "citycode": "0936", + "adcode": "620702", + "name": "甘州区", + "center": "100.415324,38.944315", + "level": "district", + "districts": [] + }, { + "citycode": "0936", + "adcode": "620722", + "name": "民乐县", + "center": "100.812047,38.430318", + "level": "district", + "districts": [] + }, { + "citycode": "0936", + "adcode": "620725", + "name": "山丹县", + "center": "101.088611,38.7846", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0932", + "adcode": "621100", + "name": "定西市", + "center": "104.592342,35.607947", + "level": "city", + "districts": [{ + "citycode": "0932", + "adcode": "621123", + "name": "渭源县", + "center": "104.215092,35.137028", + "level": "district", + "districts": [] + }, { + "citycode": "0932", + "adcode": "621124", + "name": "临洮县", + "center": "103.859446,35.394993", + "level": "district", + "districts": [] + }, { + "citycode": "0932", + "adcode": "621126", + "name": "岷县", + "center": "104.036731,34.43833", + "level": "district", + "districts": [] + }, { + "citycode": "0932", + "adcode": "621125", + "name": "漳县", + "center": "104.471722,34.84854", + "level": "district", + "districts": [] + }, { + "citycode": "0932", + "adcode": "621122", + "name": "陇西县", + "center": "104.634928,35.003899", + "level": "district", + "districts": [] + }, { + "citycode": "0932", + "adcode": "621102", + "name": "安定区", + "center": "104.610647,35.580918", + "level": "district", + "districts": [] + }, { + "citycode": "0932", + "adcode": "621121", + "name": "通渭县", + "center": "105.242312,35.211311", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0941", + "adcode": "623000", + "name": "甘南藏族自治州", + "center": "102.911736,34.983266", + "level": "city", + "districts": [{ + "citycode": "0941", + "adcode": "623021", + "name": "临潭县", + "center": "103.353665,34.693009", + "level": "district", + "districts": [] + }, { + "citycode": "0941", + "adcode": "623022", + "name": "卓尼县", + "center": "103.506849,34.589476", + "level": "district", + "districts": [] + }, { + "citycode": "0941", + "adcode": "623025", + "name": "玛曲县", + "center": "102.072608,33.998145", + "level": "district", + "districts": [] + }, { + "citycode": "0941", + "adcode": "623027", + "name": "夏河县", + "center": "102.548303,35.203857", + "level": "district", + "districts": [] + }, { + "citycode": "0941", + "adcode": "623026", + "name": "碌曲县", + "center": "102.487512,34.591084", + "level": "district", + "districts": [] + }, { + "citycode": "0941", + "adcode": "623001", + "name": "合作市", + "center": "102.910305,35.000228", + "level": "district", + "districts": [] + }, { + "citycode": "0941", + "adcode": "623024", + "name": "迭部县", + "center": "103.221735,34.055888", + "level": "district", + "districts": [] + }, { + "citycode": "0941", + "adcode": "623023", + "name": "舟曲县", + "center": "104.251543,33.793695", + "level": "district", + "districts": [] + }] + }, { + "citycode": "2935", + "adcode": "621200", + "name": "陇南市", + "center": "104.960296,33.370174", + "level": "city", + "districts": [{ + "citycode": "2935", + "adcode": "621221", + "name": "成县", + "center": "105.729569,33.740547", + "level": "district", + "districts": [] + }, { + "citycode": "2935", + "adcode": "621227", + "name": "徽县", + "center": "106.087156,33.769927", + "level": "district", + "districts": [] + }, { + "citycode": "2935", + "adcode": "621228", + "name": "两当县", + "center": "106.304973,33.908952", + "level": "district", + "districts": [] + }, { + "citycode": "2935", + "adcode": "621222", + "name": "文县", + "center": "104.6835,32.944031", + "level": "district", + "districts": [] + }, { + "citycode": "2935", + "adcode": "621224", + "name": "康县", + "center": "105.608609,33.329212", + "level": "district", + "districts": [] + }, { + "citycode": "2935", + "adcode": "621202", + "name": "武都区", + "center": "104.921861,33.400685", + "level": "district", + "districts": [] + }, { + "citycode": "2935", + "adcode": "621225", + "name": "西和县", + "center": "105.298756,34.014215", + "level": "district", + "districts": [] + }, { + "citycode": "2935", + "adcode": "621226", + "name": "礼县", + "center": "105.17864,34.189345", + "level": "district", + "districts": [] + }, { + "citycode": "2935", + "adcode": "621223", + "name": "宕昌县", + "center": "104.393385,34.047261", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0934", + "adcode": "621000", + "name": "庆阳市", + "center": "107.643433,35.709459", + "level": "city", + "districts": [{ + "citycode": "0934", + "adcode": "621027", + "name": "镇原县", + "center": "107.200888,35.677705", + "level": "district", + "districts": [] + }, { + "citycode": "0934", + "adcode": "621022", + "name": "环县", + "center": "107.308788,36.568566", + "level": "district", + "districts": [] + }, { + "citycode": "0934", + "adcode": "621021", + "name": "庆城县", + "center": "107.881706,36.016125", + "level": "district", + "districts": [] + }, { + "citycode": "0934", + "adcode": "621023", + "name": "华池县", + "center": "107.98972,36.461474", + "level": "district", + "districts": [] + }, { + "citycode": "0934", + "adcode": "621024", + "name": "合水县", + "center": "108.021859,35.833908", + "level": "district", + "districts": [] + }, { + "citycode": "0934", + "adcode": "621002", + "name": "西峰区", + "center": "107.650563,35.730318", + "level": "district", + "districts": [] + }, { + "citycode": "0934", + "adcode": "621026", + "name": "宁县", + "center": "107.913463,35.509252", + "level": "district", + "districts": [] + }, { + "citycode": "0934", + "adcode": "621025", + "name": "正宁县", + "center": "108.359964,35.492158", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0930", + "adcode": "622900", + "name": "临夏回族自治州", + "center": "103.210386,35.601792", + "level": "city", + "districts": [{ + "citycode": "0930", + "adcode": "622927", + "name": "积石山保安族东乡族撒拉族自治县", + "center": "102.875939,35.717697", + "level": "district", + "districts": [] + }, { + "citycode": "0930", + "adcode": "622923", + "name": "永靖县", + "center": "103.285853,35.958306", + "level": "district", + "districts": [] + }, { + "citycode": "0930", + "adcode": "622901", + "name": "临夏市", + "center": "103.24222,35.604682", + "level": "district", + "districts": [] + }, { + "citycode": "0930", + "adcode": "622926", + "name": "东乡族自治县", + "center": "103.388122,35.664409", + "level": "district", + "districts": [] + }, { + "citycode": "0930", + "adcode": "622924", + "name": "广河县", + "center": "103.575582,35.488248", + "level": "district", + "districts": [] + }, { + "citycode": "0930", + "adcode": "622921", + "name": "临夏县", + "center": "103.04068,35.478726", + "level": "district", + "districts": [] + }, { + "citycode": "0930", + "adcode": "622925", + "name": "和政县", + "center": "103.350996,35.424602", + "level": "district", + "districts": [] + }, { + "citycode": "0930", + "adcode": "622922", + "name": "康乐县", + "center": "103.708507,35.370296", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "510000", + "name": "四川省", + "center": "104.076452,30.651696", + "level": "province", + "districts": [{ + "citycode": "0839", + "adcode": "510800", + "name": "广元市", + "center": "105.844004,32.435774", + "level": "city", + "districts": [{ + "citycode": "0839", + "adcode": "510812", + "name": "朝天区", + "center": "105.882848,32.651352", + "level": "district", + "districts": [] + }, { + "citycode": "0839", + "adcode": "510824", + "name": "苍溪县", + "center": "105.934756,31.731709", + "level": "district", + "districts": [] + }, { + "citycode": "0839", + "adcode": "510811", + "name": "昭化区", + "center": "105.957612,32.333173", + "level": "district", + "districts": [] + }, { + "citycode": "0839", + "adcode": "510823", + "name": "剑阁县", + "center": "105.524699,32.288681", + "level": "district", + "districts": [] + }, { + "citycode": "0839", + "adcode": "510822", + "name": "青川县", + "center": "105.238498,32.575821", + "level": "district", + "districts": [] + }, { + "citycode": "0839", + "adcode": "510802", + "name": "利州区", + "center": "105.845307,32.433756", + "level": "district", + "districts": [] + }, { + "citycode": "0839", + "adcode": "510821", + "name": "旺苍县", + "center": "106.290124,32.229074", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0817", + "adcode": "511300", + "name": "南充市", + "center": "106.110565,30.837235", + "level": "city", + "districts": [{ + "citycode": "0817", + "adcode": "511321", + "name": "南部县", + "center": "106.036349,31.348255", + "level": "district", + "districts": [] + }, { + "citycode": "0817", + "adcode": "511322", + "name": "营山县", + "center": "106.565524,31.077057", + "level": "district", + "districts": [] + }, { + "citycode": "0817", + "adcode": "511304", + "name": "嘉陵区", + "center": "106.07208,30.758831", + "level": "district", + "districts": [] + }, { + "citycode": "0817", + "adcode": "511325", + "name": "西充县", + "center": "105.900894,30.995546", + "level": "district", + "districts": [] + }, { + "citycode": "0817", + "adcode": "511302", + "name": "顺庆区", + "center": "106.092327,30.797366", + "level": "district", + "districts": [] + }, { + "citycode": "0817", + "adcode": "511381", + "name": "阆中市", + "center": "106.005046,31.558356", + "level": "district", + "districts": [] + }, { + "citycode": "0817", + "adcode": "511303", + "name": "高坪区", + "center": "106.118931,30.781284", + "level": "district", + "districts": [] + }, { + "citycode": "0817", + "adcode": "511323", + "name": "蓬安县", + "center": "106.412156,31.028537", + "level": "district", + "districts": [] + }, { + "citycode": "0817", + "adcode": "511324", + "name": "仪陇县", + "center": "106.303082,31.271693", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0827", + "adcode": "511900", + "name": "巴中市", + "center": "106.747548,31.867853", + "level": "city", + "districts": [{ + "citycode": "0827", + "adcode": "511902", + "name": "巴州区", + "center": "106.76887,31.851458", + "level": "district", + "districts": [] + }, { + "citycode": "0827", + "adcode": "511922", + "name": "南江县", + "center": "106.828697,32.346589", + "level": "district", + "districts": [] + }, { + "citycode": "0827", + "adcode": "511923", + "name": "平昌县", + "center": "107.103613,31.560436", + "level": "district", + "districts": [] + }, { + "citycode": "0827", + "adcode": "511921", + "name": "通江县", + "center": "107.245033,31.911705", + "level": "district", + "districts": [] + }, { + "citycode": "0827", + "adcode": "511903", + "name": "恩阳区", + "center": "106.634651,31.796476", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0838", + "adcode": "510600", + "name": "德阳市", + "center": "104.397795,31.127449", + "level": "city", + "districts": [{ + "citycode": "0838", + "adcode": "510623", + "name": "中江县", + "center": "104.678601,31.03327", + "level": "district", + "districts": [] + }, { + "citycode": "0838", + "adcode": "510682", + "name": "什邡市", + "center": "104.167345,31.12655", + "level": "district", + "districts": [] + }, { + "citycode": "0838", + "adcode": "510604", + "name": "罗江区", + "center": "104.510457,31.317388", + "level": "district", + "districts": [] + }, { + "citycode": "0838", + "adcode": "510683", + "name": "绵竹市", + "center": "104.220679,31.339251", + "level": "district", + "districts": [] + }, { + "citycode": "0838", + "adcode": "510603", + "name": "旌阳区", + "center": "104.417061,31.143335", + "level": "district", + "districts": [] + }, { + "citycode": "0838", + "adcode": "510681", + "name": "广汉市", + "center": "104.282204,30.977264", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0816", + "adcode": "510700", + "name": "绵阳市", + "center": "104.679127,31.467673", + "level": "city", + "districts": [{ + "citycode": "0816", + "adcode": "510781", + "name": "江油市", + "center": "104.74564,31.778572", + "level": "district", + "districts": [] + }, { + "citycode": "0816", + "adcode": "510725", + "name": "梓潼县", + "center": "105.170746,31.642635", + "level": "district", + "districts": [] + }, { + "citycode": "0816", + "adcode": "510704", + "name": "游仙区", + "center": "104.766136,31.473788", + "level": "district", + "districts": [] + }, { + "citycode": "0816", + "adcode": "510722", + "name": "三台县", + "center": "105.093722,31.095826", + "level": "district", + "districts": [] + }, { + "citycode": "0816", + "adcode": "510703", + "name": "涪城区", + "center": "104.756917,31.455192", + "level": "district", + "districts": [] + }, { + "citycode": "0816", + "adcode": "510727", + "name": "平武县", + "center": "104.555481,32.409684", + "level": "district", + "districts": [] + }, { + "citycode": "0816", + "adcode": "510726", + "name": "北川羌族自治县", + "center": "104.468163,31.617192", + "level": "district", + "districts": [] + }, { + "citycode": "0816", + "adcode": "510723", + "name": "盐亭县", + "center": "105.389453,31.208362", + "level": "district", + "districts": [] + }, { + "citycode": "0816", + "adcode": "510705", + "name": "安州区", + "center": "104.567543,31.534319", + "level": "district", + "districts": [] + }] + }, { + "citycode": "028", + "adcode": "510100", + "name": "成都市", + "center": "104.066301,30.572961", + "level": "city", + "districts": [{ + "citycode": "028", + "adcode": "510182", + "name": "彭州市", + "center": "103.957706,30.990463", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510185", + "name": "简阳市", + "center": "104.547644,30.410937", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510131", + "name": "蒲江县", + "center": "103.506478,30.197558", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510116", + "name": "双流区", + "center": "103.92342,30.574884", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510105", + "name": "青羊区", + "center": "104.062415,30.674583", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510106", + "name": "金牛区", + "center": "104.052236,30.691359", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510129", + "name": "大邑县", + "center": "103.51226,30.573004", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510115", + "name": "温江区", + "center": "103.856423,30.681956", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510117", + "name": "郫都区", + "center": "103.900486,30.795113", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510184", + "name": "崇州市", + "center": "103.673025,30.630183", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510104", + "name": "锦江区", + "center": "104.117262,30.598726", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510113", + "name": "青白江区", + "center": "104.251342,30.8786", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510121", + "name": "金堂县", + "center": "104.411871,30.86203", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510118", + "name": "新津区", + "center": "103.810906,30.410404", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510183", + "name": "邛崃市", + "center": "103.464176,30.41029", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510107", + "name": "武侯区", + "center": "104.043246,30.641849", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510181", + "name": "都江堰市", + "center": "103.647193,30.988763", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510114", + "name": "新都区", + "center": "104.158593,30.823568", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510112", + "name": "龙泉驿区", + "center": "104.27536,30.556808", + "level": "district", + "districts": [] + }, { + "citycode": "028", + "adcode": "510108", + "name": "成华区", + "center": "104.101452,30.659966", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0826", + "adcode": "511600", + "name": "广安市", + "center": "106.632647,30.456354", + "level": "city", + "districts": [{ + "citycode": "0826", + "adcode": "511623", + "name": "邻水县", + "center": "106.930242,30.334911", + "level": "district", + "districts": [] + }, { + "citycode": "0826", + "adcode": "511602", + "name": "广安区", + "center": "106.641628,30.473943", + "level": "district", + "districts": [] + }, { + "citycode": "0826", + "adcode": "511621", + "name": "岳池县", + "center": "106.440056,30.538656", + "level": "district", + "districts": [] + }, { + "citycode": "0826", + "adcode": "511622", + "name": "武胜县", + "center": "106.295945,30.349493", + "level": "district", + "districts": [] + }, { + "citycode": "0826", + "adcode": "511603", + "name": "前锋区", + "center": "106.886039,30.496059", + "level": "district", + "districts": [] + }, { + "citycode": "0826", + "adcode": "511681", + "name": "华蓥市", + "center": "106.783151,30.390439", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0818", + "adcode": "511700", + "name": "达州市", + "center": "107.46778,31.209278", + "level": "city", + "districts": [{ + "citycode": "0818", + "adcode": "511724", + "name": "大竹县", + "center": "107.204702,30.736222", + "level": "district", + "districts": [] + }, { + "citycode": "0818", + "adcode": "511725", + "name": "渠县", + "center": "106.973114,30.836504", + "level": "district", + "districts": [] + }, { + "citycode": "0818", + "adcode": "511703", + "name": "达川区", + "center": "107.511736,31.196573", + "level": "district", + "districts": [] + }, { + "citycode": "0818", + "adcode": "511702", + "name": "通川区", + "center": "107.505053,31.214665", + "level": "district", + "districts": [] + }, { + "citycode": "0818", + "adcode": "511781", + "name": "万源市", + "center": "108.034393,32.081698", + "level": "district", + "districts": [] + }, { + "citycode": "0818", + "adcode": "511723", + "name": "开江县", + "center": "107.868609,31.082945", + "level": "district", + "districts": [] + }, { + "citycode": "0818", + "adcode": "511722", + "name": "宣汉县", + "center": "107.727198,31.353845", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0825", + "adcode": "510900", + "name": "遂宁市", + "center": "105.592602,30.53268", + "level": "city", + "districts": [{ + "citycode": "0825", + "adcode": "510923", + "name": "大英县", + "center": "105.236852,30.594472", + "level": "district", + "districts": [] + }, { + "citycode": "0825", + "adcode": "510981", + "name": "射洪市", + "center": "105.388366,30.871079", + "level": "district", + "districts": [] + }, { + "citycode": "0825", + "adcode": "510921", + "name": "蓬溪县", + "center": "105.707498,30.75763", + "level": "district", + "districts": [] + }, { + "citycode": "0825", + "adcode": "510904", + "name": "安居区", + "center": "105.45636,30.355091", + "level": "district", + "districts": [] + }, { + "citycode": "0825", + "adcode": "510903", + "name": "船山区", + "center": "105.568359,30.526201", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0832", + "adcode": "512000", + "name": "资阳市", + "center": "104.627265,30.129236", + "level": "city", + "districts": [{ + "citycode": "0832", + "adcode": "512022", + "name": "乐至县", + "center": "105.019823,30.275418", + "level": "district", + "districts": [] + }, { + "citycode": "0832", + "adcode": "512021", + "name": "安岳县", + "center": "105.35551,30.103623", + "level": "district", + "districts": [] + }, { + "citycode": "0832", + "adcode": "512002", + "name": "雁江区", + "center": "104.676814,30.107778", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1833", + "adcode": "511400", + "name": "眉山市", + "center": "103.848417,30.077113", + "level": "city", + "districts": [{ + "citycode": "1833", + "adcode": "511421", + "name": "仁寿县", + "center": "104.133931,29.995638", + "level": "district", + "districts": [] + }, { + "citycode": "1833", + "adcode": "511424", + "name": "丹棱县", + "center": "103.512859,30.014398", + "level": "district", + "districts": [] + }, { + "citycode": "1833", + "adcode": "511423", + "name": "洪雅县", + "center": "103.365035,29.915828", + "level": "district", + "districts": [] + }, { + "citycode": "1833", + "adcode": "511403", + "name": "彭山区", + "center": "103.872852,30.193278", + "level": "district", + "districts": [] + }, { + "citycode": "1833", + "adcode": "511425", + "name": "青神县", + "center": "103.846596,29.831302", + "level": "district", + "districts": [] + }, { + "citycode": "1833", + "adcode": "511402", + "name": "东坡区", + "center": "103.831868,30.041956", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1832", + "adcode": "511000", + "name": "内江市", + "center": "105.057992,29.58021", + "level": "city", + "districts": [{ + "citycode": "1832", + "adcode": "511024", + "name": "威远县", + "center": "104.669032,29.527456", + "level": "district", + "districts": [] + }, { + "citycode": "1832", + "adcode": "511025", + "name": "资中县", + "center": "104.851874,29.763419", + "level": "district", + "districts": [] + }, { + "citycode": "1832", + "adcode": "511011", + "name": "东兴区", + "center": "105.076107,29.593528", + "level": "district", + "districts": [] + }, { + "citycode": "1832", + "adcode": "511083", + "name": "隆昌市", + "center": "105.287507,29.339408", + "level": "district", + "districts": [] + }, { + "citycode": "1832", + "adcode": "511002", + "name": "市中区", + "center": "105.06759,29.587091", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0833", + "adcode": "511100", + "name": "乐山市", + "center": "103.766085,29.552275", + "level": "city", + "districts": [{ + "citycode": "0833", + "adcode": "511126", + "name": "夹江县", + "center": "103.571313,29.738143", + "level": "district", + "districts": [] + }, { + "citycode": "0833", + "adcode": "511111", + "name": "沙湾区", + "center": "103.550118,29.412404", + "level": "district", + "districts": [] + }, { + "citycode": "0833", + "adcode": "511112", + "name": "五通桥区", + "center": "103.818024,29.406837", + "level": "district", + "districts": [] + }, { + "citycode": "0833", + "adcode": "511124", + "name": "井研县", + "center": "104.06968,29.65165", + "level": "district", + "districts": [] + }, { + "citycode": "0833", + "adcode": "511113", + "name": "金口河区", + "center": "103.078597,29.244345", + "level": "district", + "districts": [] + }, { + "citycode": "0833", + "adcode": "511123", + "name": "犍为县", + "center": "103.949231,29.208118", + "level": "district", + "districts": [] + }, { + "citycode": "0833", + "adcode": "511132", + "name": "峨边彝族自治县", + "center": "103.262048,29.230426", + "level": "district", + "districts": [] + }, { + "citycode": "0833", + "adcode": "511129", + "name": "沐川县", + "center": "103.902691,28.956394", + "level": "district", + "districts": [] + }, { + "citycode": "0833", + "adcode": "511133", + "name": "马边彝族自治县", + "center": "103.546347,28.83552", + "level": "district", + "districts": [] + }, { + "citycode": "0833", + "adcode": "511102", + "name": "市中区", + "center": "103.761329,29.555374", + "level": "district", + "districts": [] + }, { + "citycode": "0833", + "adcode": "511181", + "name": "峨眉山市", + "center": "103.484557,29.601189", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0813", + "adcode": "510300", + "name": "自贡市", + "center": "104.779307,29.33924", + "level": "city", + "districts": [{ + "citycode": "0813", + "adcode": "510321", + "name": "荣县", + "center": "104.417438,29.445461", + "level": "district", + "districts": [] + }, { + "citycode": "0813", + "adcode": "510322", + "name": "富顺县", + "center": "104.975193,29.181779", + "level": "district", + "districts": [] + }, { + "citycode": "0813", + "adcode": "510304", + "name": "大安区", + "center": "104.773982,29.36371", + "level": "district", + "districts": [] + }, { + "citycode": "0813", + "adcode": "510311", + "name": "沿滩区", + "center": "104.873826,29.27208", + "level": "district", + "districts": [] + }, { + "citycode": "0813", + "adcode": "510302", + "name": "自流井区", + "center": "104.777182,29.337295", + "level": "district", + "districts": [] + }, { + "citycode": "0813", + "adcode": "510303", + "name": "贡井区", + "center": "104.704179,29.333764", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0830", + "adcode": "510500", + "name": "泸州市", + "center": "105.441866,28.87098", + "level": "city", + "districts": [{ + "citycode": "0830", + "adcode": "510504", + "name": "龙马潭区", + "center": "105.437751,28.913257", + "level": "district", + "districts": [] + }, { + "citycode": "0830", + "adcode": "510521", + "name": "泸县", + "center": "105.381879,29.1516", + "level": "district", + "districts": [] + }, { + "citycode": "0830", + "adcode": "510503", + "name": "纳溪区", + "center": "105.371324,28.772888", + "level": "district", + "districts": [] + }, { + "citycode": "0830", + "adcode": "510524", + "name": "叙永县", + "center": "105.444777,28.155631", + "level": "district", + "districts": [] + }, { + "citycode": "0830", + "adcode": "510525", + "name": "古蔺县", + "center": "105.812694,28.038763", + "level": "district", + "districts": [] + }, { + "citycode": "0830", + "adcode": "510502", + "name": "江阳区", + "center": "105.434982,28.87881", + "level": "district", + "districts": [] + }, { + "citycode": "0830", + "adcode": "510522", + "name": "合江县", + "center": "105.831011,28.811278", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0831", + "adcode": "511500", + "name": "宜宾市", + "center": "104.642826,28.752354", + "level": "city", + "districts": [{ + "citycode": "0831", + "adcode": "511524", + "name": "长宁县", + "center": "104.920643,28.582866", + "level": "district", + "districts": [] + }, { + "citycode": "0831", + "adcode": "511503", + "name": "南溪区", + "center": "104.969147,28.846366", + "level": "district", + "districts": [] + }, { + "citycode": "0831", + "adcode": "511526", + "name": "珙县", + "center": "104.708986,28.439514", + "level": "district", + "districts": [] + }, { + "citycode": "0831", + "adcode": "511528", + "name": "兴文县", + "center": "105.236207,28.303669", + "level": "district", + "districts": [] + }, { + "citycode": "0831", + "adcode": "511523", + "name": "江安县", + "center": "105.066982,28.723797", + "level": "district", + "districts": [] + }, { + "citycode": "0831", + "adcode": "511527", + "name": "筠连县", + "center": "104.511159,28.167981", + "level": "district", + "districts": [] + }, { + "citycode": "0831", + "adcode": "511502", + "name": "翠屏区", + "center": "104.619853,28.766537", + "level": "district", + "districts": [] + }, { + "citycode": "0831", + "adcode": "511529", + "name": "屏山县", + "center": "104.346138,28.82867", + "level": "district", + "districts": [] + }, { + "citycode": "0831", + "adcode": "511525", + "name": "高县", + "center": "104.517748,28.436166", + "level": "district", + "districts": [] + }, { + "citycode": "0831", + "adcode": "511504", + "name": "叙州区", + "center": "104.533244,28.690068", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0834", + "adcode": "513400", + "name": "凉山彝族自治州", + "center": "102.267713,27.881396", + "level": "city", + "districts": [{ + "citycode": "0834", + "adcode": "513435", + "name": "甘洛县", + "center": "102.771441,28.959131", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513422", + "name": "木里藏族自治县", + "center": "101.280216,27.928736", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513434", + "name": "越西县", + "center": "102.507467,28.639874", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513436", + "name": "美姑县", + "center": "103.132359,28.328591", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513437", + "name": "雷波县", + "center": "103.571705,28.263202", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513433", + "name": "冕宁县", + "center": "102.176622,28.550145", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513423", + "name": "盐源县", + "center": "101.509038,27.422593", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513430", + "name": "金阳县", + "center": "103.248786,27.696735", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513428", + "name": "普格县", + "center": "102.540901,27.376413", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513429", + "name": "布拖县", + "center": "102.809157,27.7121", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513402", + "name": "会理市", + "center": "102.244774,26.655047", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513424", + "name": "德昌县", + "center": "102.175661,27.402832", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513401", + "name": "西昌市", + "center": "102.264166,27.89441", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513431", + "name": "昭觉县", + "center": "102.839849,28.015301", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513426", + "name": "会东县", + "center": "102.577979,26.634744", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513432", + "name": "喜德县", + "center": "102.412451,28.306429", + "level": "district", + "districts": [] + }, { + "citycode": "0834", + "adcode": "513427", + "name": "宁南县", + "center": "102.751587,27.061431", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0812", + "adcode": "510400", + "name": "攀枝花市", + "center": "101.729116,26.558645", + "level": "city", + "districts": [{ + "citycode": "0812", + "adcode": "510421", + "name": "米易县", + "center": "102.111073,26.896372", + "level": "district", + "districts": [] + }, { + "citycode": "0812", + "adcode": "510422", + "name": "盐边县", + "center": "101.854027,26.682611", + "level": "district", + "districts": [] + }, { + "citycode": "0812", + "adcode": "510411", + "name": "仁和区", + "center": "101.738615,26.497796", + "level": "district", + "districts": [] + }, { + "citycode": "0812", + "adcode": "510402", + "name": "东区", + "center": "101.704129,26.546484", + "level": "district", + "districts": [] + }, { + "citycode": "0812", + "adcode": "510403", + "name": "西区", + "center": "101.630557,26.5977", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0836", + "adcode": "513300", + "name": "甘孜藏族自治州", + "center": "101.96231,30.04952", + "level": "city", + "districts": [{ + "citycode": "0836", + "adcode": "513332", + "name": "石渠县", + "center": "98.102938,32.978728", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513328", + "name": "甘孜县", + "center": "99.991683,31.622731", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513330", + "name": "德格县", + "center": "98.580914,31.806118", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513327", + "name": "炉霍县", + "center": "100.676014,31.390657", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513329", + "name": "新龙县", + "center": "100.311569,30.93917", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513331", + "name": "白玉县", + "center": "98.824025,31.209669", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513326", + "name": "道孚县", + "center": "101.125157,30.979486", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513334", + "name": "理塘县", + "center": "100.269145,29.994228", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513301", + "name": "康定市", + "center": "101.95687,29.998544", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513335", + "name": "巴塘县", + "center": "99.110555,30.00533", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513325", + "name": "雅江县", + "center": "101.014366,30.031498", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513337", + "name": "稻城县", + "center": "100.297369,29.03791", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513336", + "name": "乡城县", + "center": "99.798116,28.931081", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513324", + "name": "九龙县", + "center": "101.507294,29.000347", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513338", + "name": "得荣县", + "center": "99.286366,28.713085", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513323", + "name": "丹巴县", + "center": "101.89054,30.878618", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513322", + "name": "泸定县", + "center": "102.234814,29.914103", + "level": "district", + "districts": [] + }, { + "citycode": "0836", + "adcode": "513333", + "name": "色达县", + "center": "100.333011,32.268541", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0835", + "adcode": "511800", + "name": "雅安市", + "center": "103.041538,30.009998", + "level": "city", + "districts": [{ + "citycode": "0835", + "adcode": "511827", + "name": "宝兴县", + "center": "102.824826,30.252469", + "level": "district", + "districts": [] + }, { + "citycode": "0835", + "adcode": "511822", + "name": "荥经县", + "center": "102.846537,29.793254", + "level": "district", + "districts": [] + }, { + "citycode": "0835", + "adcode": "511802", + "name": "雨城区", + "center": "103.032868,30.005718", + "level": "district", + "districts": [] + }, { + "citycode": "0835", + "adcode": "511824", + "name": "石棉县", + "center": "102.358364,29.230963", + "level": "district", + "districts": [] + }, { + "citycode": "0835", + "adcode": "511823", + "name": "汉源县", + "center": "102.650417,29.344275", + "level": "district", + "districts": [] + }, { + "citycode": "0835", + "adcode": "511826", + "name": "芦山县", + "center": "102.933618,30.145077", + "level": "district", + "districts": [] + }, { + "citycode": "0835", + "adcode": "511825", + "name": "天全县", + "center": "102.771745,30.05728", + "level": "district", + "districts": [] + }, { + "citycode": "0835", + "adcode": "511803", + "name": "名山区", + "center": "103.109238,30.069837", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0837", + "adcode": "513200", + "name": "阿坝藏族羌族自治州", + "center": "102.224504,31.899427", + "level": "city", + "districts": [{ + "citycode": "0837", + "adcode": "513225", + "name": "九寨沟县", + "center": "104.2426,33.252008", + "level": "district", + "districts": [] + }, { + "citycode": "0837", + "adcode": "513231", + "name": "阿坝县", + "center": "101.706548,32.902387", + "level": "district", + "districts": [] + }, { + "citycode": "0837", + "adcode": "513233", + "name": "红原县", + "center": "102.544395,32.790841", + "level": "district", + "districts": [] + }, { + "citycode": "0837", + "adcode": "513228", + "name": "黑水县", + "center": "102.987592,32.069268", + "level": "district", + "districts": [] + }, { + "citycode": "0837", + "adcode": "513201", + "name": "马尔康市", + "center": "102.206386,31.905799", + "level": "district", + "districts": [] + }, { + "citycode": "0837", + "adcode": "513226", + "name": "金川县", + "center": "102.063821,31.47625", + "level": "district", + "districts": [] + }, { + "citycode": "0837", + "adcode": "513222", + "name": "理县", + "center": "103.163284,31.435831", + "level": "district", + "districts": [] + }, { + "citycode": "0837", + "adcode": "513224", + "name": "松潘县", + "center": "103.60428,32.655685", + "level": "district", + "districts": [] + }, { + "citycode": "0837", + "adcode": "513227", + "name": "小金县", + "center": "102.362984,30.995823", + "level": "district", + "districts": [] + }, { + "citycode": "0837", + "adcode": "513221", + "name": "汶川县", + "center": "103.590185,31.476875", + "level": "district", + "districts": [] + }, { + "citycode": "0837", + "adcode": "513223", + "name": "茂县", + "center": "103.85332,31.681727", + "level": "district", + "districts": [] + }, { + "citycode": "0837", + "adcode": "513232", + "name": "若尔盖县", + "center": "102.96738,33.578503", + "level": "district", + "districts": [] + }, { + "citycode": "0837", + "adcode": "513230", + "name": "壤塘县", + "center": "100.978526,32.265796", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": "022", + "adcode": "120000", + "name": "天津市", + "center": "117.201509,39.085318", + "level": "province", + "districts": [{ + "citycode": "022", + "adcode": "120100", + "name": "天津城区", + "center": "117.190182,39.125596", + "level": "city", + "districts": [{ + "citycode": "022", + "adcode": "120115", + "name": "宝坻区", + "center": "117.309748,39.717054", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120105", + "name": "河北区", + "center": "117.196874,39.148018", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120118", + "name": "静海区", + "center": "116.975474,38.947772", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120119", + "name": "蓟州区", + "center": "117.408432,40.046544", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120117", + "name": "宁河区", + "center": "117.826674,39.329749", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120101", + "name": "和平区", + "center": "117.214713,39.116884", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120114", + "name": "武清区", + "center": "117.04456,39.384108", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120104", + "name": "南开区", + "center": "117.150638,39.138551", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120102", + "name": "河东区", + "center": "117.251584,39.128294", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120110", + "name": "东丽区", + "center": "117.313567,39.086789", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120112", + "name": "津南区", + "center": "117.356683,38.936971", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120103", + "name": "河西区", + "center": "117.223379,39.109679", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120113", + "name": "北辰区", + "center": "117.135614,39.224638", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120106", + "name": "红桥区", + "center": "117.151566,39.167349", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120111", + "name": "西青区", + "center": "117.008994,39.141811", + "level": "district", + "districts": [] + }, { + "citycode": "022", + "adcode": "120116", + "name": "滨海新区", + "center": "117.69641,39.017809", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "540000", + "name": "西藏自治区", + "center": "91.117449,29.648694", + "level": "province", + "districts": [{ + "citycode": "0895", + "adcode": "540300", + "name": "昌都市", + "center": "97.170425,31.142879", + "level": "city", + "districts": [{ + "citycode": "0895", + "adcode": "540321", + "name": "江达县", + "center": "98.218336,31.499176", + "level": "district", + "districts": [] + }, { + "citycode": "0895", + "adcode": "540324", + "name": "丁青县", + "center": "95.619868,31.409024", + "level": "district", + "districts": [] + }, { + "citycode": "0895", + "adcode": "540302", + "name": "卡若区", + "center": "97.196021,31.112087", + "level": "district", + "districts": [] + }, { + "citycode": "0895", + "adcode": "540323", + "name": "类乌齐县", + "center": "96.599386,31.211378", + "level": "district", + "districts": [] + }, { + "citycode": "0895", + "adcode": "540330", + "name": "边坝县", + "center": "94.7078,30.933652", + "level": "district", + "districts": [] + }, { + "citycode": "0895", + "adcode": "540325", + "name": "察雅县", + "center": "97.568752,30.653943", + "level": "district", + "districts": [] + }, { + "citycode": "0895", + "adcode": "540329", + "name": "洛隆县", + "center": "95.825169,30.741988", + "level": "district", + "districts": [] + }, { + "citycode": "0895", + "adcode": "540322", + "name": "贡觉县", + "center": "98.27097,30.860099", + "level": "district", + "districts": [] + }, { + "citycode": "0895", + "adcode": "540326", + "name": "八宿县", + "center": "96.917836,30.053209", + "level": "district", + "districts": [] + }, { + "citycode": "0895", + "adcode": "540328", + "name": "芒康县", + "center": "98.593493,29.679957", + "level": "district", + "districts": [] + }, { + "citycode": "0895", + "adcode": "540327", + "name": "左贡县", + "center": "97.841176,29.671488", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0896", + "adcode": "540600", + "name": "那曲市", + "center": "92.05151,31.477905", + "level": "city", + "districts": [{ + "citycode": "0896", + "adcode": "540624", + "name": "安多县", + "center": "91.68195,32.265016", + "level": "district", + "districts": [] + }, { + "citycode": "0896", + "adcode": "540623", + "name": "聂荣县", + "center": "92.303377,32.10775", + "level": "district", + "districts": [] + }, { + "citycode": "0896", + "adcode": "540628", + "name": "巴青县", + "center": "94.053438,31.91847", + "level": "district", + "districts": [] + }, { + "citycode": "0896", + "adcode": "540625", + "name": "申扎县", + "center": "88.709936,30.93045", + "level": "district", + "districts": [] + }, { + "citycode": "0896", + "adcode": "540602", + "name": "色尼区", + "center": "92.053498,31.469645", + "level": "district", + "districts": [] + }, { + "citycode": "0896", + "adcode": "540622", + "name": "比如县", + "center": "93.681302,31.477914", + "level": "district", + "districts": [] + }, { + "citycode": "0896", + "adcode": "540627", + "name": "班戈县", + "center": "90.009822,31.392157", + "level": "district", + "districts": [] + }, { + "citycode": "0896", + "adcode": "540626", + "name": "索县", + "center": "93.785068,31.888045", + "level": "district", + "districts": [] + }, { + "citycode": "0896", + "adcode": "540621", + "name": "嘉黎县", + "center": "93.232347,30.641543", + "level": "district", + "districts": [] + }, { + "citycode": "0896", + "adcode": "540629", + "name": "尼玛县", + "center": "87.236772,31.784701", + "level": "district", + "districts": [] + }, { + "citycode": "0896", + "adcode": "540630", + "name": "双湖县", + "center": "88.838017,33.188355", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0891", + "adcode": "540100", + "name": "拉萨市", + "center": "91.171924,29.653491", + "level": "city", + "districts": [{ + "citycode": "0891", + "adcode": "540122", + "name": "当雄县", + "center": "91.101186,30.473134", + "level": "district", + "districts": [] + }, { + "citycode": "0891", + "adcode": "540121", + "name": "林周县", + "center": "91.265287,29.893545", + "level": "district", + "districts": [] + }, { + "citycode": "0891", + "adcode": "540127", + "name": "墨竹工卡县", + "center": "91.739134,29.850344", + "level": "district", + "districts": [] + }, { + "citycode": "0891", + "adcode": "540103", + "name": "堆龙德庆区", + "center": "91.002866,29.646815", + "level": "district", + "districts": [] + }, { + "citycode": "0891", + "adcode": "540104", + "name": "达孜区", + "center": "91.349503,29.670173", + "level": "district", + "districts": [] + }, { + "citycode": "0891", + "adcode": "540123", + "name": "尼木县", + "center": "90.16446,29.43202", + "level": "district", + "districts": [] + }, { + "citycode": "0891", + "adcode": "540102", + "name": "城关区", + "center": "91.140368,29.654813", + "level": "district", + "districts": [] + }, { + "citycode": "0891", + "adcode": "540124", + "name": "曲水县", + "center": "90.743355,29.354293", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0892", + "adcode": "540200", + "name": "日喀则市", + "center": "88.880423,29.266838", + "level": "city", + "districts": [{ + "citycode": "0892", + "adcode": "540232", + "name": "仲巴县", + "center": "84.03153,29.770279", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540227", + "name": "谢通门县", + "center": "88.255784,29.425455", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540226", + "name": "昂仁县", + "center": "87.227739,29.299444", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540221", + "name": "南木林县", + "center": "89.099243,29.682331", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540236", + "name": "萨嘎县", + "center": "85.232941,29.328818", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540202", + "name": "桑珠孜区", + "center": "88.898503,29.247726", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540229", + "name": "仁布县", + "center": "89.841983,29.230933", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540225", + "name": "拉孜县", + "center": "87.636934,29.08188", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540224", + "name": "萨迦县", + "center": "88.021674,28.899664", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540228", + "name": "白朗县", + "center": "89.261977,29.107688", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540222", + "name": "江孜县", + "center": "89.605654,28.91186", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540223", + "name": "定日县", + "center": "87.12612,28.658743", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540230", + "name": "康马县", + "center": "89.681663,28.555627", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540235", + "name": "聂拉木县", + "center": "85.982237,28.155186", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540237", + "name": "岗巴县", + "center": "88.515318,28.271189", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540233", + "name": "亚东县", + "center": "88.907136,27.486094", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540231", + "name": "定结县", + "center": "87.765872,28.364159", + "level": "district", + "districts": [] + }, { + "citycode": "0892", + "adcode": "540234", + "name": "吉隆县", + "center": "85.298109,28.856542", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0893", + "adcode": "540500", + "name": "山南市", + "center": "91.771426,29.237722", + "level": "city", + "districts": [{ + "citycode": "0893", + "adcode": "540528", + "name": "加查县", + "center": "92.597518,29.138165", + "level": "district", + "districts": [] + }, { + "citycode": "0893", + "adcode": "540523", + "name": "桑日县", + "center": "92.017723,29.259439", + "level": "district", + "districts": [] + }, { + "citycode": "0893", + "adcode": "540521", + "name": "扎囊县", + "center": "91.33725,29.245113", + "level": "district", + "districts": [] + }, { + "citycode": "0893", + "adcode": "540502", + "name": "乃东区", + "center": "91.761538,29.224904", + "level": "district", + "districts": [] + }, { + "citycode": "0893", + "adcode": "540522", + "name": "贡嘎县", + "center": "90.978425,29.290169", + "level": "district", + "districts": [] + }, { + "citycode": "0893", + "adcode": "540531", + "name": "浪卡子县", + "center": "90.400251,28.96693", + "level": "district", + "districts": [] + }, { + "citycode": "0893", + "adcode": "540529", + "name": "隆子县", + "center": "92.461774,28.40743", + "level": "district", + "districts": [] + }, { + "citycode": "0893", + "adcode": "540524", + "name": "琼结县", + "center": "91.684307,29.024492", + "level": "district", + "districts": [] + }, { + "citycode": "0893", + "adcode": "540525", + "name": "曲松县", + "center": "92.203738,29.062826", + "level": "district", + "districts": [] + }, { + "citycode": "0893", + "adcode": "540526", + "name": "措美县", + "center": "91.433509,28.438202", + "level": "district", + "districts": [] + }, { + "citycode": "0893", + "adcode": "540527", + "name": "洛扎县", + "center": "90.859971,28.385811", + "level": "district", + "districts": [] + }, { + "citycode": "0893", + "adcode": "540581", + "name": "错那市", + "center": "91.957155,27.991121", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0894", + "adcode": "540400", + "name": "林芝市", + "center": "94.361436,29.64875", + "level": "city", + "districts": [{ + "citycode": "0894", + "adcode": "540424", + "name": "波密县", + "center": "95.768439,29.859751", + "level": "district", + "districts": [] + }, { + "citycode": "0894", + "adcode": "540421", + "name": "工布江达县", + "center": "93.246077,29.88528", + "level": "district", + "districts": [] + }, { + "citycode": "0894", + "adcode": "540402", + "name": "巴宜区", + "center": "94.361094,29.636576", + "level": "district", + "districts": [] + }, { + "citycode": "0894", + "adcode": "540481", + "name": "米林市", + "center": "94.213059,29.215971", + "level": "district", + "districts": [] + }, { + "citycode": "0894", + "adcode": "540423", + "name": "墨脱县", + "center": "95.332108,29.325425", + "level": "district", + "districts": [] + }, { + "citycode": "0894", + "adcode": "540425", + "name": "察隅县", + "center": "97.466919,28.66128", + "level": "district", + "districts": [] + }, { + "citycode": "0894", + "adcode": "540426", + "name": "朗县", + "center": "93.07254,29.046892", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0897", + "adcode": "542500", + "name": "阿里地区", + "center": "80.105786,32.500987", + "level": "city", + "districts": [{ + "citycode": "0897", + "adcode": "542526", + "name": "改则县", + "center": "84.057135,32.297165", + "level": "district", + "districts": [] + }, { + "citycode": "0897", + "adcode": "542522", + "name": "札达县", + "center": "79.807096,31.479882", + "level": "district", + "districts": [] + }, { + "citycode": "0897", + "adcode": "542527", + "name": "措勤县", + "center": "85.152773,31.015862", + "level": "district", + "districts": [] + }, { + "citycode": "0897", + "adcode": "542521", + "name": "普兰县", + "center": "81.177116,30.290467", + "level": "district", + "districts": [] + }, { + "citycode": "0897", + "adcode": "542524", + "name": "日土县", + "center": "79.733552,33.382017", + "level": "district", + "districts": [] + }, { + "citycode": "0897", + "adcode": "542523", + "name": "噶尔县", + "center": "80.096591,32.492078", + "level": "district", + "districts": [] + }, { + "citycode": "0897", + "adcode": "542525", + "name": "革吉县", + "center": "81.145433,32.387233", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "220000", + "name": "吉林省", + "center": "125.325802,43.896942", + "level": "province", + "districts": [{ + "citycode": "0432", + "adcode": "220200", + "name": "吉林市", + "center": "126.549719,43.838132", + "level": "city", + "districts": [{ + "citycode": "0432", + "adcode": "220283", + "name": "舒兰市", + "center": "126.965515,44.405922", + "level": "district", + "districts": [] + }, { + "citycode": "0432", + "adcode": "220282", + "name": "桦甸市", + "center": "126.746245,42.972272", + "level": "district", + "districts": [] + }, { + "citycode": "0432", + "adcode": "220281", + "name": "蛟河市", + "center": "127.344773,43.72382", + "level": "district", + "districts": [] + }, { + "citycode": "0432", + "adcode": "220221", + "name": "永吉县", + "center": "126.497899,43.672198", + "level": "district", + "districts": [] + }, { + "citycode": "0432", + "adcode": "220284", + "name": "磐石市", + "center": "126.060328,42.946608", + "level": "district", + "districts": [] + }, { + "citycode": "0432", + "adcode": "220203", + "name": "龙潭区", + "center": "126.562131,43.910743", + "level": "district", + "districts": [] + }, { + "citycode": "0432", + "adcode": "220211", + "name": "丰满区", + "center": "126.561351,43.821192", + "level": "district", + "districts": [] + }, { + "citycode": "0432", + "adcode": "220204", + "name": "船营区", + "center": "126.540909,43.833806", + "level": "district", + "districts": [] + }, { + "citycode": "0432", + "adcode": "220202", + "name": "昌邑区", + "center": "126.574414,43.881896", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0431", + "adcode": "220100", + "name": "长春市", + "center": "125.323643,43.816996", + "level": "city", + "districts": [{ + "citycode": "0431", + "adcode": "220182", + "name": "榆树市", + "center": "126.533126,44.840263", + "level": "district", + "districts": [] + }, { + "citycode": "0431", + "adcode": "220183", + "name": "德惠市", + "center": "125.728552,44.521788", + "level": "district", + "districts": [] + }, { + "citycode": "0431", + "adcode": "220112", + "name": "双阳区", + "center": "125.664583,43.525367", + "level": "district", + "districts": [] + }, { + "citycode": "0431", + "adcode": "220122", + "name": "农安县", + "center": "125.184921,44.432829", + "level": "district", + "districts": [] + }, { + "citycode": "0431", + "adcode": "220184", + "name": "公主岭市", + "center": "124.79379,43.495116", + "level": "district", + "districts": [] + }, { + "citycode": "0431", + "adcode": "220105", + "name": "二道区", + "center": "125.37419,43.865912", + "level": "district", + "districts": [] + }, { + "citycode": "0431", + "adcode": "220103", + "name": "宽城区", + "center": "125.326614,43.943522", + "level": "district", + "districts": [] + }, { + "citycode": "0431", + "adcode": "220102", + "name": "南关区", + "center": "125.350341,43.86382", + "level": "district", + "districts": [] + }, { + "citycode": "0431", + "adcode": "220113", + "name": "九台区", + "center": "125.839549,44.151672", + "level": "district", + "districts": [] + }, { + "citycode": "0431", + "adcode": "220106", + "name": "绿园区", + "center": "125.256214,43.881047", + "level": "district", + "districts": [] + }, { + "citycode": "0431", + "adcode": "220104", + "name": "朝阳区", + "center": "125.288168,43.833845", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0436", + "adcode": "220800", + "name": "白城市", + "center": "122.838102,45.620131", + "level": "city", + "districts": [{ + "citycode": "0436", + "adcode": "220881", + "name": "洮南市", + "center": "122.79845,45.356849", + "level": "district", + "districts": [] + }, { + "citycode": "0436", + "adcode": "220882", + "name": "大安市", + "center": "124.291032,45.507004", + "level": "district", + "districts": [] + }, { + "citycode": "0436", + "adcode": "220822", + "name": "通榆县", + "center": "123.088093,44.812912", + "level": "district", + "districts": [] + }, { + "citycode": "0436", + "adcode": "220802", + "name": "洮北区", + "center": "122.851105,45.621545", + "level": "district", + "districts": [] + }, { + "citycode": "0436", + "adcode": "220821", + "name": "镇赉县", + "center": "123.19967,45.848195", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0438", + "adcode": "220700", + "name": "松原市", + "center": "124.825321,45.14191", + "level": "city", + "districts": [{ + "citycode": "0438", + "adcode": "220723", + "name": "乾安县", + "center": "124.040651,45.003539", + "level": "district", + "districts": [] + }, { + "citycode": "0438", + "adcode": "220722", + "name": "长岭县", + "center": "123.967244,44.276293", + "level": "district", + "districts": [] + }, { + "citycode": "0438", + "adcode": "220721", + "name": "前郭尔罗斯蒙古族自治县", + "center": "124.823417,45.118061", + "level": "district", + "districts": [] + }, { + "citycode": "0438", + "adcode": "220781", + "name": "扶余市", + "center": "126.049534,44.989057", + "level": "district", + "districts": [] + }, { + "citycode": "0438", + "adcode": "220702", + "name": "宁江区", + "center": "124.875965,45.209435", + "level": "district", + "districts": [] + }] + }, { + "citycode": "1433", + "adcode": "222400", + "name": "延边朝鲜族自治州", + "center": "129.470605,42.909426", + "level": "city", + "districts": [{ + "citycode": "1433", + "adcode": "222404", + "name": "珲春市", + "center": "130.365829,42.862551", + "level": "district", + "districts": [] + }, { + "citycode": "1433", + "adcode": "222402", + "name": "图们市", + "center": "129.843807,42.968039", + "level": "district", + "districts": [] + }, { + "citycode": "1433", + "adcode": "222406", + "name": "和龙市", + "center": "129.010932,42.546434", + "level": "district", + "districts": [] + }, { + "citycode": "1433", + "adcode": "222424", + "name": "汪清县", + "center": "129.785137,43.317215", + "level": "district", + "districts": [] + }, { + "citycode": "1433", + "adcode": "222401", + "name": "延吉市", + "center": "129.507655,42.891034", + "level": "district", + "districts": [] + }, { + "citycode": "1433", + "adcode": "222426", + "name": "安图县", + "center": "128.899744,43.111978", + "level": "district", + "districts": [] + }, { + "citycode": "1433", + "adcode": "222405", + "name": "龙井市", + "center": "129.426529,42.767172", + "level": "district", + "districts": [] + }, { + "citycode": "1433", + "adcode": "222403", + "name": "敦化市", + "center": "128.232235,43.372669", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0434", + "adcode": "220300", + "name": "四平市", + "center": "124.350599,43.166764", + "level": "city", + "districts": [{ + "citycode": "0434", + "adcode": "220303", + "name": "铁东区", + "center": "124.409852,43.162664", + "level": "district", + "districts": [] + }, { + "citycode": "0434", + "adcode": "220382", + "name": "双辽市", + "center": "123.502398,43.518301", + "level": "district", + "districts": [] + }, { + "citycode": "0434", + "adcode": "220302", + "name": "铁西区", + "center": "124.345994,43.146288", + "level": "district", + "districts": [] + }, { + "citycode": "0434", + "adcode": "220322", + "name": "梨树县", + "center": "124.335389,43.30706", + "level": "district", + "districts": [] + }, { + "citycode": "0434", + "adcode": "220323", + "name": "伊通满族自治县", + "center": "125.305393,43.345754", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0439", + "adcode": "220600", + "name": "白山市", + "center": "126.414274,41.944132", + "level": "city", + "districts": [{ + "citycode": "0439", + "adcode": "220622", + "name": "靖宇县", + "center": "126.813262,42.388902", + "level": "district", + "districts": [] + }, { + "citycode": "0439", + "adcode": "220605", + "name": "江源区", + "center": "126.591178,42.056747", + "level": "district", + "districts": [] + }, { + "citycode": "0439", + "adcode": "220621", + "name": "抚松县", + "center": "127.449387,42.221038", + "level": "district", + "districts": [] + }, { + "citycode": "0439", + "adcode": "220623", + "name": "长白朝鲜族自治县", + "center": "128.20066,41.420253", + "level": "district", + "districts": [] + }, { + "citycode": "0439", + "adcode": "220681", + "name": "临江市", + "center": "126.918086,41.811979", + "level": "district", + "districts": [] + }, { + "citycode": "0439", + "adcode": "220602", + "name": "浑江区", + "center": "126.416093,41.945409", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0437", + "adcode": "220400", + "name": "辽源市", + "center": "125.144676,42.887961", + "level": "city", + "districts": [{ + "citycode": "0437", + "adcode": "220403", + "name": "西安区", + "center": "125.149488,42.927252", + "level": "district", + "districts": [] + }, { + "citycode": "0437", + "adcode": "220422", + "name": "东辽县", + "center": "124.991045,42.925636", + "level": "district", + "districts": [] + }, { + "citycode": "0437", + "adcode": "220402", + "name": "龙山区", + "center": "125.13703,42.902194", + "level": "district", + "districts": [] + }, { + "citycode": "0437", + "adcode": "220421", + "name": "东丰县", + "center": "125.53096,42.677253", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0435", + "adcode": "220500", + "name": "通化市", + "center": "125.939721,41.728312", + "level": "city", + "districts": [{ + "citycode": "0435", + "adcode": "220503", + "name": "二道江区", + "center": "126.042546,41.773989", + "level": "district", + "districts": [] + }, { + "citycode": "0435", + "adcode": "220521", + "name": "通化县", + "center": "125.758927,41.680135", + "level": "district", + "districts": [] + }, { + "citycode": "0435", + "adcode": "220524", + "name": "柳河县", + "center": "125.744654,42.284594", + "level": "district", + "districts": [] + }, { + "citycode": "0435", + "adcode": "220523", + "name": "辉南县", + "center": "126.046006,42.684706", + "level": "district", + "districts": [] + }, { + "citycode": "0435", + "adcode": "220581", + "name": "梅河口市", + "center": "125.711129,42.539183", + "level": "district", + "districts": [] + }, { + "citycode": "0435", + "adcode": "220582", + "name": "集安市", + "center": "126.193172,41.125805", + "level": "district", + "districts": [] + }, { + "citycode": "0435", + "adcode": "220502", + "name": "东昌区", + "center": "125.927187,41.702872", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "140000", + "name": "山西省", + "center": "112.578781,37.813948", + "level": "province", + "districts": [{ + "citycode": "0353", + "adcode": "140300", + "name": "阳泉市", + "center": "113.580426,37.857094", + "level": "city", + "districts": [{ + "citycode": "0353", + "adcode": "140321", + "name": "平定县", + "center": "113.629777,37.804986", + "level": "district", + "districts": [] + }, { + "citycode": "0353", + "adcode": "140322", + "name": "盂县", + "center": "113.412279,38.086041", + "level": "district", + "districts": [] + }, { + "citycode": "0353", + "adcode": "140311", + "name": "郊区", + "center": "113.593998,37.943703", + "level": "district", + "districts": [] + }, { + "citycode": "0353", + "adcode": "140303", + "name": "矿区", + "center": "113.555279,37.868494", + "level": "district", + "districts": [] + }, { + "citycode": "0353", + "adcode": "140302", + "name": "城区", + "center": "113.600694,37.847457", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0352", + "adcode": "140200", + "name": "大同市", + "center": "113.366749,40.09711", + "level": "city", + "districts": [{ + "citycode": "0352", + "adcode": "140225", + "name": "浑源县", + "center": "113.69183,39.706485", + "level": "district", + "districts": [] + }, { + "citycode": "0352", + "adcode": "140223", + "name": "广灵县", + "center": "114.282703,39.760404", + "level": "district", + "districts": [] + }, { + "citycode": "0352", + "adcode": "140215", + "name": "云州区", + "center": "113.612496,40.040156", + "level": "district", + "districts": [] + }, { + "citycode": "0352", + "adcode": "140226", + "name": "左云县", + "center": "112.703008,40.013442", + "level": "district", + "districts": [] + }, { + "citycode": "0352", + "adcode": "140213", + "name": "平城区", + "center": "113.300179,40.076991", + "level": "district", + "districts": [] + }, { + "citycode": "0352", + "adcode": "140212", + "name": "新荣区", + "center": "113.139628,40.256355", + "level": "district", + "districts": [] + }, { + "citycode": "0352", + "adcode": "140214", + "name": "云冈区", + "center": "113.150035,40.005844", + "level": "district", + "districts": [] + }, { + "citycode": "0352", + "adcode": "140224", + "name": "灵丘县", + "center": "114.234452,39.442459", + "level": "district", + "districts": [] + }, { + "citycode": "0352", + "adcode": "140222", + "name": "天镇县", + "center": "114.090871,40.42087", + "level": "district", + "districts": [] + }, { + "citycode": "0352", + "adcode": "140221", + "name": "阳高县", + "center": "113.748944,40.361059", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0358", + "adcode": "141100", + "name": "吕梁市", + "center": "111.14454,37.518996", + "level": "city", + "districts": [{ + "citycode": "0358", + "adcode": "141127", + "name": "岚县", + "center": "111.672156,38.279587", + "level": "district", + "districts": [] + }, { + "citycode": "0358", + "adcode": "141129", + "name": "中阳县", + "center": "111.178841,37.357816", + "level": "district", + "districts": [] + }, { + "citycode": "0358", + "adcode": "141128", + "name": "方山县", + "center": "111.244309,37.895017", + "level": "district", + "districts": [] + }, { + "citycode": "0358", + "adcode": "141130", + "name": "交口县", + "center": "111.181241,36.982205", + "level": "district", + "districts": [] + }, { + "citycode": "0358", + "adcode": "141126", + "name": "石楼县", + "center": "110.834712,36.998461", + "level": "district", + "districts": [] + }, { + "citycode": "0358", + "adcode": "141125", + "name": "柳林县", + "center": "110.888993,37.429816", + "level": "district", + "districts": [] + }, { + "citycode": "0358", + "adcode": "141181", + "name": "孝义市", + "center": "111.778935,37.146051", + "level": "district", + "districts": [] + }, { + "citycode": "0358", + "adcode": "141122", + "name": "交城县", + "center": "112.155857,37.55169", + "level": "district", + "districts": [] + }, { + "citycode": "0358", + "adcode": "141182", + "name": "汾阳市", + "center": "111.770834,37.261493", + "level": "district", + "districts": [] + }, { + "citycode": "0358", + "adcode": "141121", + "name": "文水县", + "center": "112.028866,37.438101", + "level": "district", + "districts": [] + }, { + "citycode": "0358", + "adcode": "141124", + "name": "临县", + "center": "110.992712,37.951008", + "level": "district", + "districts": [] + }, { + "citycode": "0358", + "adcode": "141102", + "name": "离石区", + "center": "111.150325,37.517797", + "level": "district", + "districts": [] + }, { + "citycode": "0358", + "adcode": "141123", + "name": "兴县", + "center": "111.127486,38.461818", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0359", + "adcode": "140800", + "name": "运城市", + "center": "111.007051,35.02667", + "level": "city", + "districts": [{ + "citycode": "0359", + "adcode": "140823", + "name": "闻喜县", + "center": "111.224485,35.356664", + "level": "district", + "districts": [] + }, { + "citycode": "0359", + "adcode": "140822", + "name": "万荣县", + "center": "110.837957,35.415805", + "level": "district", + "districts": [] + }, { + "citycode": "0359", + "adcode": "140802", + "name": "盐湖区", + "center": "110.998135,35.015549", + "level": "district", + "districts": [] + }, { + "citycode": "0359", + "adcode": "140828", + "name": "夏县", + "center": "111.219946,35.140733", + "level": "district", + "districts": [] + }, { + "citycode": "0359", + "adcode": "140827", + "name": "垣曲县", + "center": "111.670215,35.298297", + "level": "district", + "districts": [] + }, { + "citycode": "0359", + "adcode": "140821", + "name": "临猗县", + "center": "110.774553,35.144406", + "level": "district", + "districts": [] + }, { + "citycode": "0359", + "adcode": "140824", + "name": "稷山县", + "center": "110.983273,35.604515", + "level": "district", + "districts": [] + }, { + "citycode": "0359", + "adcode": "140881", + "name": "永济市", + "center": "110.447771,34.866499", + "level": "district", + "districts": [] + }, { + "citycode": "0359", + "adcode": "140826", + "name": "绛县", + "center": "111.568849,35.491764", + "level": "district", + "districts": [] + }, { + "citycode": "0359", + "adcode": "140825", + "name": "新绛县", + "center": "111.224767,35.616007", + "level": "district", + "districts": [] + }, { + "citycode": "0359", + "adcode": "140882", + "name": "河津市", + "center": "110.712032,35.596357", + "level": "district", + "districts": [] + }, { + "citycode": "0359", + "adcode": "140829", + "name": "平陆县", + "center": "111.193957,34.829595", + "level": "district", + "districts": [] + }, { + "citycode": "0359", + "adcode": "140830", + "name": "芮城县", + "center": "110.694418,34.694173", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0356", + "adcode": "140500", + "name": "晋城市", + "center": "112.852022,35.491315", + "level": "city", + "districts": [{ + "citycode": "0356", + "adcode": "140525", + "name": "泽州县", + "center": "112.922243,35.507061", + "level": "district", + "districts": [] + }, { + "citycode": "0356", + "adcode": "140581", + "name": "高平市", + "center": "112.923798,35.798775", + "level": "district", + "districts": [] + }, { + "citycode": "0356", + "adcode": "140524", + "name": "陵川县", + "center": "113.280755,35.775239", + "level": "district", + "districts": [] + }, { + "citycode": "0356", + "adcode": "140522", + "name": "阳城县", + "center": "112.414798,35.486275", + "level": "district", + "districts": [] + }, { + "citycode": "0356", + "adcode": "140521", + "name": "沁水县", + "center": "112.186726,35.690119", + "level": "district", + "districts": [] + }, { + "citycode": "0356", + "adcode": "140502", + "name": "城区", + "center": "112.853452,35.50248", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0355", + "adcode": "140400", + "name": "长治市", + "center": "113.117394,36.195142", + "level": "city", + "districts": [{ + "citycode": "0355", + "adcode": "140428", + "name": "长子县", + "center": "112.877922,36.122258", + "level": "district", + "districts": [] + }, { + "citycode": "0355", + "adcode": "140403", + "name": "潞州区", + "center": "113.122725,36.203305", + "level": "district", + "districts": [] + }, { + "citycode": "0355", + "adcode": "140429", + "name": "武乡县", + "center": "112.86396,36.837865", + "level": "district", + "districts": [] + }, { + "citycode": "0355", + "adcode": "140430", + "name": "沁县", + "center": "112.699176,36.756152", + "level": "district", + "districts": [] + }, { + "citycode": "0355", + "adcode": "140423", + "name": "襄垣县", + "center": "113.051298,36.535629", + "level": "district", + "districts": [] + }, { + "citycode": "0355", + "adcode": "140405", + "name": "屯留区", + "center": "112.892301,36.3162", + "level": "district", + "districts": [] + }, { + "citycode": "0355", + "adcode": "140406", + "name": "潞城区", + "center": "113.228897,36.334597", + "level": "district", + "districts": [] + }, { + "citycode": "0355", + "adcode": "140426", + "name": "黎城县", + "center": "113.387025,36.502258", + "level": "district", + "districts": [] + }, { + "citycode": "0355", + "adcode": "140431", + "name": "沁源县", + "center": "112.337726,36.499989", + "level": "district", + "districts": [] + }, { + "citycode": "0355", + "adcode": "140425", + "name": "平顺县", + "center": "113.435859,36.20037", + "level": "district", + "districts": [] + }, { + "citycode": "0355", + "adcode": "140427", + "name": "壶关县", + "center": "113.206836,36.115645", + "level": "district", + "districts": [] + }, { + "citycode": "0355", + "adcode": "140404", + "name": "上党区", + "center": "113.051416,36.053104", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0357", + "adcode": "141000", + "name": "临汾市", + "center": "111.51931,36.088581", + "level": "city", + "districts": [{ + "citycode": "0357", + "adcode": "141031", + "name": "隰县", + "center": "110.940752,36.693345", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141025", + "name": "古县", + "center": "111.92031,36.266767", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141032", + "name": "永和县", + "center": "110.631981,36.759524", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141033", + "name": "蒲县", + "center": "111.096457,36.41183", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141027", + "name": "浮山县", + "center": "111.848883,35.968124", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141022", + "name": "翼城县", + "center": "111.719048,35.739706", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141023", + "name": "襄汾县", + "center": "111.441725,35.876293", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141026", + "name": "安泽县", + "center": "112.250242,36.147921", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141021", + "name": "曲沃县", + "center": "111.475783,35.641883", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141081", + "name": "侯马市", + "center": "111.372002,35.619105", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141034", + "name": "汾西县", + "center": "111.563993,36.652833", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141082", + "name": "霍州市", + "center": "111.755111,36.569046", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141030", + "name": "大宁县", + "center": "110.752914,36.465126", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141028", + "name": "吉县", + "center": "110.680513,36.096833", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141029", + "name": "乡宁县", + "center": "110.846585,35.970834", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141002", + "name": "尧都区", + "center": "111.578797,36.082463", + "level": "district", + "districts": [] + }, { + "citycode": "0357", + "adcode": "141024", + "name": "洪洞县", + "center": "111.67571,36.254087", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0354", + "adcode": "140700", + "name": "晋中市", + "center": "112.752633,37.688006", + "level": "city", + "districts": [{ + "citycode": "0354", + "adcode": "140721", + "name": "榆社县", + "center": "112.975378,37.071209", + "level": "district", + "districts": [] + }, { + "citycode": "0354", + "adcode": "140725", + "name": "寿阳县", + "center": "113.176373,37.895191", + "level": "district", + "districts": [] + }, { + "citycode": "0354", + "adcode": "140722", + "name": "左权县", + "center": "113.379412,37.082746", + "level": "district", + "districts": [] + }, { + "citycode": "0354", + "adcode": "140723", + "name": "和顺县", + "center": "113.570295,37.329696", + "level": "district", + "districts": [] + }, { + "citycode": "0354", + "adcode": "140703", + "name": "太谷区", + "center": "112.551297,37.421392", + "level": "district", + "districts": [] + }, { + "citycode": "0354", + "adcode": "140727", + "name": "祁县", + "center": "112.335226,37.358425", + "level": "district", + "districts": [] + }, { + "citycode": "0354", + "adcode": "140702", + "name": "榆次区", + "center": "112.707564,37.698637", + "level": "district", + "districts": [] + }, { + "citycode": "0354", + "adcode": "140728", + "name": "平遥县", + "center": "112.175825,37.189614", + "level": "district", + "districts": [] + }, { + "citycode": "0354", + "adcode": "140724", + "name": "昔阳县", + "center": "113.707151,37.612577", + "level": "district", + "districts": [] + }, { + "citycode": "0354", + "adcode": "140729", + "name": "灵石县", + "center": "111.778692,36.848085", + "level": "district", + "districts": [] + }, { + "citycode": "0354", + "adcode": "140781", + "name": "介休市", + "center": "111.916451,37.027538", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0349", + "adcode": "140600", + "name": "朔州市", + "center": "112.432906,39.331734", + "level": "city", + "districts": [{ + "citycode": "0349", + "adcode": "140623", + "name": "右玉县", + "center": "112.466926,39.989198", + "level": "district", + "districts": [] + }, { + "citycode": "0349", + "adcode": "140602", + "name": "朔城区", + "center": "112.432071,39.320196", + "level": "district", + "districts": [] + }, { + "citycode": "0349", + "adcode": "140603", + "name": "平鲁区", + "center": "112.28827,39.512219", + "level": "district", + "districts": [] + }, { + "citycode": "0349", + "adcode": "140622", + "name": "应县", + "center": "113.190952,39.554471", + "level": "district", + "districts": [] + }, { + "citycode": "0349", + "adcode": "140621", + "name": "山阴县", + "center": "112.816421,39.527445", + "level": "district", + "districts": [] + }, { + "citycode": "0349", + "adcode": "140681", + "name": "怀仁市", + "center": "113.133061,39.820522", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0350", + "adcode": "140900", + "name": "忻州市", + "center": "112.734149,38.415958", + "level": "city", + "districts": [{ + "citycode": "0350", + "adcode": "140928", + "name": "五寨县", + "center": "111.846808,38.91111", + "level": "district", + "districts": [] + }, { + "citycode": "0350", + "adcode": "140925", + "name": "宁武县", + "center": "112.304734,39.001498", + "level": "district", + "districts": [] + }, { + "citycode": "0350", + "adcode": "140929", + "name": "岢岚县", + "center": "111.572964,38.703989", + "level": "district", + "districts": [] + }, { + "citycode": "0350", + "adcode": "140926", + "name": "静乐县", + "center": "111.939498,38.359306", + "level": "district", + "districts": [] + }, { + "citycode": "0350", + "adcode": "140927", + "name": "神池县", + "center": "112.210997,39.091079", + "level": "district", + "districts": [] + }, { + "citycode": "0350", + "adcode": "140930", + "name": "河曲县", + "center": "111.138247,39.38452", + "level": "district", + "districts": [] + }, { + "citycode": "0350", + "adcode": "140981", + "name": "原平市", + "center": "112.711025,38.731412", + "level": "district", + "districts": [] + }, { + "citycode": "0350", + "adcode": "140923", + "name": "代县", + "center": "112.960102,39.066831", + "level": "district", + "districts": [] + }, { + "citycode": "0350", + "adcode": "140921", + "name": "定襄县", + "center": "112.957234,38.471725", + "level": "district", + "districts": [] + }, { + "citycode": "0350", + "adcode": "140924", + "name": "繁峙县", + "center": "113.265464,39.188835", + "level": "district", + "districts": [] + }, { + "citycode": "0350", + "adcode": "140931", + "name": "保德县", + "center": "111.085944,39.022616", + "level": "district", + "districts": [] + }, { + "citycode": "0350", + "adcode": "140922", + "name": "五台县", + "center": "113.255419,38.728056", + "level": "district", + "districts": [] + }, { + "citycode": "0350", + "adcode": "140932", + "name": "偏关县", + "center": "111.508922,39.436917", + "level": "district", + "districts": [] + }, { + "citycode": "0350", + "adcode": "140902", + "name": "忻府区", + "center": "112.746357,38.403498", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0351", + "adcode": "140100", + "name": "太原市", + "center": "112.549656,37.870451", + "level": "city", + "districts": [{ + "citycode": "0351", + "adcode": "140123", + "name": "娄烦县", + "center": "111.79715,38.067569", + "level": "district", + "districts": [] + }, { + "citycode": "0351", + "adcode": "140181", + "name": "古交市", + "center": "112.175034,37.907414", + "level": "district", + "districts": [] + }, { + "citycode": "0351", + "adcode": "140110", + "name": "晋源区", + "center": "112.477869,37.715519", + "level": "district", + "districts": [] + }, { + "citycode": "0351", + "adcode": "140121", + "name": "清徐县", + "center": "112.359367,37.608751", + "level": "district", + "districts": [] + }, { + "citycode": "0351", + "adcode": "140109", + "name": "万柏林区", + "center": "112.515638,37.859738", + "level": "district", + "districts": [] + }, { + "citycode": "0351", + "adcode": "140108", + "name": "尖草坪区", + "center": "112.486141,37.940052", + "level": "district", + "districts": [] + }, { + "citycode": "0351", + "adcode": "140107", + "name": "杏花岭区", + "center": "112.570412,37.894241", + "level": "district", + "districts": [] + }, { + "citycode": "0351", + "adcode": "140105", + "name": "小店区", + "center": "112.565524,37.736865", + "level": "district", + "districts": [] + }, { + "citycode": "0351", + "adcode": "140106", + "name": "迎泽区", + "center": "112.563373,37.863308", + "level": "district", + "districts": [] + }, { + "citycode": "0351", + "adcode": "140122", + "name": "阳曲县", + "center": "112.67292,38.058511", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "360000", + "name": "江西省", + "center": "115.816587,28.637234", + "level": "province", + "districts": [{ + "citycode": "0797", + "adcode": "360700", + "name": "赣州市", + "center": "114.933494,25.831139", + "level": "city", + "districts": [{ + "citycode": "0797", + "adcode": "360730", + "name": "宁都县", + "center": "116.009171,26.470865", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360731", + "name": "于都县", + "center": "115.415145,25.952564", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360725", + "name": "崇义县", + "center": "114.308135,25.682278", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360729", + "name": "全南县", + "center": "114.530148,24.742353", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360735", + "name": "石城县", + "center": "116.347611,26.31491", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360781", + "name": "瑞金市", + "center": "116.027114,25.88623", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360783", + "name": "龙南市", + "center": "114.804474,24.901216", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360733", + "name": "会昌县", + "center": "115.809271,25.58734", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360722", + "name": "信丰县", + "center": "114.922485,25.38676", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360724", + "name": "上犹县", + "center": "114.55177,25.784754", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360723", + "name": "大余县", + "center": "114.362306,25.401968", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360703", + "name": "南康区", + "center": "114.765044,25.661369", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360732", + "name": "兴国县", + "center": "115.363475,26.338129", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360704", + "name": "赣县区", + "center": "115.021196,25.854496", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360702", + "name": "章贡区", + "center": "114.920426,25.818247", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360728", + "name": "定南县", + "center": "115.027908,24.783372", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360726", + "name": "安远县", + "center": "115.393992,25.136855", + "level": "district", + "districts": [] + }, { + "citycode": "0797", + "adcode": "360734", + "name": "寻乌县", + "center": "115.638534,24.969513", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0790", + "adcode": "360500", + "name": "新余市", + "center": "114.916665,27.818553", + "level": "city", + "districts": [{ + "citycode": "0790", + "adcode": "360521", + "name": "分宜县", + "center": "114.69264,27.814723", + "level": "district", + "districts": [] + }, { + "citycode": "0790", + "adcode": "360502", + "name": "渝水区", + "center": "114.944499,27.799526", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0796", + "adcode": "360800", + "name": "吉安市", + "center": "114.96681,27.091243", + "level": "city", + "districts": [{ + "citycode": "0796", + "adcode": "360830", + "name": "永新县", + "center": "114.242425,26.945157", + "level": "district", + "districts": [] + }, { + "citycode": "0796", + "adcode": "360881", + "name": "井冈山市", + "center": "114.289563,26.748132", + "level": "district", + "districts": [] + }, { + "citycode": "0796", + "adcode": "360826", + "name": "泰和县", + "center": "114.922987,26.801687", + "level": "district", + "districts": [] + }, { + "citycode": "0796", + "adcode": "360827", + "name": "遂川县", + "center": "114.520825,26.313413", + "level": "district", + "districts": [] + }, { + "citycode": "0796", + "adcode": "360828", + "name": "万安县", + "center": "114.759746,26.456821", + "level": "district", + "districts": [] + }, { + "citycode": "0796", + "adcode": "360829", + "name": "安福县", + "center": "114.619818,27.393286", + "level": "district", + "districts": [] + }, { + "citycode": "0796", + "adcode": "360802", + "name": "吉州区", + "center": "114.994991,27.144204", + "level": "district", + "districts": [] + }, { + "citycode": "0796", + "adcode": "360821", + "name": "吉安县", + "center": "114.908337,27.039866", + "level": "district", + "districts": [] + }, { + "citycode": "0796", + "adcode": "360803", + "name": "青原区", + "center": "115.014836,27.082012", + "level": "district", + "districts": [] + }, { + "citycode": "0796", + "adcode": "360822", + "name": "吉水县", + "center": "115.135963,27.229697", + "level": "district", + "districts": [] + }, { + "citycode": "0796", + "adcode": "360823", + "name": "峡江县", + "center": "115.316567,27.5829", + "level": "district", + "districts": [] + }, { + "citycode": "0796", + "adcode": "360825", + "name": "永丰县", + "center": "115.421599,27.317301", + "level": "district", + "districts": [] + }, { + "citycode": "0796", + "adcode": "360824", + "name": "新干县", + "center": "115.386853,27.740368", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0794", + "adcode": "361000", + "name": "抚州市", + "center": "116.358054,27.948979", + "level": "city", + "districts": [{ + "citycode": "0794", + "adcode": "361025", + "name": "乐安县", + "center": "115.83099,27.428682", + "level": "district", + "districts": [] + }, { + "citycode": "0794", + "adcode": "361026", + "name": "宜黄县", + "center": "116.236174,27.554744", + "level": "district", + "districts": [] + }, { + "citycode": "0794", + "adcode": "361024", + "name": "崇仁县", + "center": "116.076363,27.754416", + "level": "district", + "districts": [] + }, { + "citycode": "0794", + "adcode": "361030", + "name": "广昌县", + "center": "116.336556,26.843974", + "level": "district", + "districts": [] + }, { + "citycode": "0794", + "adcode": "361023", + "name": "南丰县", + "center": "116.525898,27.21845", + "level": "district", + "districts": [] + }, { + "citycode": "0794", + "adcode": "361022", + "name": "黎川县", + "center": "116.907446,27.282729", + "level": "district", + "districts": [] + }, { + "citycode": "0794", + "adcode": "361021", + "name": "南城县", + "center": "116.637228,27.570031", + "level": "district", + "districts": [] + }, { + "citycode": "0794", + "adcode": "361002", + "name": "临川区", + "center": "116.311932,27.935098", + "level": "district", + "districts": [] + }, { + "citycode": "0794", + "adcode": "361028", + "name": "资溪县", + "center": "117.060332,27.706088", + "level": "district", + "districts": [] + }, { + "citycode": "0794", + "adcode": "361027", + "name": "金溪县", + "center": "116.755018,27.91973", + "level": "district", + "districts": [] + }, { + "citycode": "0794", + "adcode": "361003", + "name": "东乡区", + "center": "116.603159,28.249059", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0701", + "adcode": "360600", + "name": "鹰潭市", + "center": "117.039532,28.272092", + "level": "city", + "districts": [{ + "citycode": "0701", + "adcode": "360602", + "name": "月湖区", + "center": "117.10247,28.266999", + "level": "district", + "districts": [] + }, { + "citycode": "0701", + "adcode": "360603", + "name": "余江区", + "center": "116.854576,28.199657", + "level": "district", + "districts": [] + }, { + "citycode": "0701", + "adcode": "360681", + "name": "贵溪市", + "center": "117.245178,28.292397", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0795", + "adcode": "360900", + "name": "宜春市", + "center": "114.416826,27.816245", + "level": "city", + "districts": [{ + "citycode": "0795", + "adcode": "360902", + "name": "袁州区", + "center": "114.42794,27.796344", + "level": "district", + "districts": [] + }, { + "citycode": "0795", + "adcode": "360922", + "name": "万载县", + "center": "114.445477,28.106201", + "level": "district", + "districts": [] + }, { + "citycode": "0795", + "adcode": "360924", + "name": "宜丰县", + "center": "114.803036,28.394466", + "level": "district", + "districts": [] + }, { + "citycode": "0795", + "adcode": "360923", + "name": "上高县", + "center": "114.948045,28.238591", + "level": "district", + "districts": [] + }, { + "citycode": "0795", + "adcode": "360982", + "name": "樟树市", + "center": "115.546174,28.054632", + "level": "district", + "districts": [] + }, { + "citycode": "0795", + "adcode": "360926", + "name": "铜鼓县", + "center": "114.354623,28.513291", + "level": "district", + "districts": [] + }, { + "citycode": "0795", + "adcode": "360925", + "name": "靖安县", + "center": "115.362635,28.861296", + "level": "district", + "districts": [] + }, { + "citycode": "0795", + "adcode": "360921", + "name": "奉新县", + "center": "115.400624,28.688254", + "level": "district", + "districts": [] + }, { + "citycode": "0795", + "adcode": "360983", + "name": "高安市", + "center": "115.366863,28.448054", + "level": "district", + "districts": [] + }, { + "citycode": "0795", + "adcode": "360981", + "name": "丰城市", + "center": "115.771131,28.160053", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0799", + "adcode": "360300", + "name": "萍乡市", + "center": "113.887147,27.658721", + "level": "city", + "districts": [{ + "citycode": "0799", + "adcode": "360322", + "name": "上栗县", + "center": "113.795294,27.880221", + "level": "district", + "districts": [] + }, { + "citycode": "0799", + "adcode": "360302", + "name": "安源区", + "center": "113.87072,27.615", + "level": "district", + "districts": [] + }, { + "citycode": "0799", + "adcode": "360313", + "name": "湘东区", + "center": "113.733047,27.640075", + "level": "district", + "districts": [] + }, { + "citycode": "0799", + "adcode": "360321", + "name": "莲花县", + "center": "113.961589,27.128498", + "level": "district", + "districts": [] + }, { + "citycode": "0799", + "adcode": "360323", + "name": "芦溪县", + "center": "114.029351,27.631273", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0793", + "adcode": "361100", + "name": "上饶市", + "center": "117.943064,28.45513", + "level": "city", + "districts": [{ + "citycode": "0793", + "adcode": "361127", + "name": "余干县", + "center": "116.695787,28.70283", + "level": "district", + "districts": [] + }, { + "citycode": "0793", + "adcode": "361125", + "name": "横峰县", + "center": "117.596433,28.407116", + "level": "district", + "districts": [] + }, { + "citycode": "0793", + "adcode": "361103", + "name": "广丰区", + "center": "118.189729,28.463697", + "level": "district", + "districts": [] + }, { + "citycode": "0793", + "adcode": "361123", + "name": "玉山县", + "center": "118.244736,28.681936", + "level": "district", + "districts": [] + }, { + "citycode": "0793", + "adcode": "361129", + "name": "万年县", + "center": "117.058445,28.694582", + "level": "district", + "districts": [] + }, { + "citycode": "0793", + "adcode": "361126", + "name": "弋阳县", + "center": "117.449346,28.378039", + "level": "district", + "districts": [] + }, { + "citycode": "0793", + "adcode": "361181", + "name": "德兴市", + "center": "117.594549,28.930557", + "level": "district", + "districts": [] + }, { + "citycode": "0793", + "adcode": "361128", + "name": "鄱阳县", + "center": "116.703731,29.005675", + "level": "district", + "districts": [] + }, { + "citycode": "0793", + "adcode": "361130", + "name": "婺源县", + "center": "117.861532,29.248491", + "level": "district", + "districts": [] + }, { + "citycode": "0793", + "adcode": "361124", + "name": "铅山县", + "center": "117.734742,28.298415", + "level": "district", + "districts": [] + }, { + "citycode": "0793", + "adcode": "361104", + "name": "广信区", + "center": "117.907454,28.448893", + "level": "district", + "districts": [] + }, { + "citycode": "0793", + "adcode": "361102", + "name": "信州区", + "center": "117.965997,28.430694", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0798", + "adcode": "360200", + "name": "景德镇市", + "center": "117.184892,29.2744", + "level": "city", + "districts": [{ + "citycode": "0798", + "adcode": "360281", + "name": "乐平市", + "center": "117.151499,28.978521", + "level": "district", + "districts": [] + }, { + "citycode": "0798", + "adcode": "360203", + "name": "珠山区", + "center": "117.271365,29.305191", + "level": "district", + "districts": [] + }, { + "citycode": "0798", + "adcode": "360202", + "name": "昌江区", + "center": "117.182648,29.273683", + "level": "district", + "districts": [] + }, { + "citycode": "0798", + "adcode": "360222", + "name": "浮梁县", + "center": "117.214984,29.352493", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0792", + "adcode": "360400", + "name": "九江市", + "center": "115.95356,29.66116", + "level": "city", + "districts": [{ + "citycode": "0792", + "adcode": "360402", + "name": "濂溪区", + "center": "115.992735,29.668008", + "level": "district", + "districts": [] + }, { + "citycode": "0792", + "adcode": "360424", + "name": "修水县", + "center": "114.546536,29.026166", + "level": "district", + "districts": [] + }, { + "citycode": "0792", + "adcode": "360423", + "name": "武宁县", + "center": "115.092649,29.246785", + "level": "district", + "districts": [] + }, { + "citycode": "0792", + "adcode": "360482", + "name": "共青城市", + "center": "115.784269,29.235082", + "level": "district", + "districts": [] + }, { + "citycode": "0792", + "adcode": "360426", + "name": "德安县", + "center": "115.767114,29.298599", + "level": "district", + "districts": [] + }, { + "citycode": "0792", + "adcode": "360429", + "name": "湖口县", + "center": "116.252206,29.731194", + "level": "district", + "districts": [] + }, { + "citycode": "0792", + "adcode": "360404", + "name": "柴桑区", + "center": "115.911005,29.608775", + "level": "district", + "districts": [] + }, { + "citycode": "0792", + "adcode": "360430", + "name": "彭泽县", + "center": "116.563858,29.877404", + "level": "district", + "districts": [] + }, { + "citycode": "0792", + "adcode": "360483", + "name": "庐山市", + "center": "116.045118,29.448225", + "level": "district", + "districts": [] + }, { + "citycode": "0792", + "adcode": "360403", + "name": "浔阳区", + "center": "116.001677,29.70547", + "level": "district", + "districts": [] + }, { + "citycode": "0792", + "adcode": "360481", + "name": "瑞昌市", + "center": "115.681221,29.676026", + "level": "district", + "districts": [] + }, { + "citycode": "0792", + "adcode": "360428", + "name": "都昌县", + "center": "116.203999,29.273803", + "level": "district", + "districts": [] + }, { + "citycode": "0792", + "adcode": "360425", + "name": "永修县", + "center": "115.83207,29.011392", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0791", + "adcode": "360100", + "name": "南昌市", + "center": "115.857972,28.682976", + "level": "city", + "districts": [{ + "citycode": "0791", + "adcode": "360104", + "name": "青云谱区", + "center": "115.925709,28.62182", + "level": "district", + "districts": [] + }, { + "citycode": "0791", + "adcode": "360124", + "name": "进贤县", + "center": "116.242468,28.377627", + "level": "district", + "districts": [] + }, { + "citycode": "0791", + "adcode": "360112", + "name": "新建区", + "center": "115.815244,28.693192", + "level": "district", + "districts": [] + }, { + "citycode": "0791", + "adcode": "360113", + "name": "红谷滩区", + "center": "115.858127,28.698188", + "level": "district", + "districts": [] + }, { + "citycode": "0791", + "adcode": "360111", + "name": "青山湖区", + "center": "115.962138,28.682867", + "level": "district", + "districts": [] + }, { + "citycode": "0791", + "adcode": "360102", + "name": "东湖区", + "center": "115.903576,28.698787", + "level": "district", + "districts": [] + }, { + "citycode": "0791", + "adcode": "360103", + "name": "西湖区", + "center": "115.876998,28.657005", + "level": "district", + "districts": [] + }, { + "citycode": "0791", + "adcode": "360123", + "name": "安义县", + "center": "115.549158,28.845585", + "level": "district", + "districts": [] + }, { + "citycode": "0791", + "adcode": "360121", + "name": "南昌县", + "center": "115.93349,28.557921", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "610000", + "name": "陕西省", + "center": "108.953939,34.266611", + "level": "province", + "districts": [{ + "citycode": "0914", + "adcode": "611000", + "name": "商洛市", + "center": "109.918646,33.873358", + "level": "city", + "districts": [{ + "citycode": "0914", + "adcode": "611023", + "name": "商南县", + "center": "110.881741,33.531071", + "level": "district", + "districts": [] + }, { + "citycode": "0914", + "adcode": "611026", + "name": "柞水县", + "center": "109.114006,33.686048", + "level": "district", + "districts": [] + }, { + "citycode": "0914", + "adcode": "611021", + "name": "洛南县", + "center": "110.148526,34.090815", + "level": "district", + "districts": [] + }, { + "citycode": "0914", + "adcode": "611022", + "name": "丹凤县", + "center": "110.327542,33.696254", + "level": "district", + "districts": [] + }, { + "citycode": "0914", + "adcode": "611002", + "name": "商州区", + "center": "109.941452,33.862979", + "level": "district", + "districts": [] + }, { + "citycode": "0914", + "adcode": "611025", + "name": "镇安县", + "center": "109.152833,33.423764", + "level": "district", + "districts": [] + }, { + "citycode": "0914", + "adcode": "611024", + "name": "山阳县", + "center": "109.882289,33.532172", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0916", + "adcode": "610700", + "name": "汉中市", + "center": "107.02319,33.066373", + "level": "city", + "districts": [{ + "citycode": "0916", + "adcode": "610727", + "name": "略阳县", + "center": "106.15658,33.327293", + "level": "district", + "districts": [] + }, { + "citycode": "0916", + "adcode": "610726", + "name": "宁强县", + "center": "106.257636,32.830032", + "level": "district", + "districts": [] + }, { + "citycode": "0916", + "adcode": "610725", + "name": "勉县", + "center": "106.673217,33.153636", + "level": "district", + "districts": [] + }, { + "citycode": "0916", + "adcode": "610729", + "name": "留坝县", + "center": "106.920781,33.617637", + "level": "district", + "districts": [] + }, { + "citycode": "0916", + "adcode": "610722", + "name": "城固县", + "center": "107.333787,33.156937", + "level": "district", + "districts": [] + }, { + "citycode": "0916", + "adcode": "610703", + "name": "南郑区", + "center": "106.936235,33.000034", + "level": "district", + "districts": [] + }, { + "citycode": "0916", + "adcode": "610702", + "name": "汉台区", + "center": "107.03201,33.067523", + "level": "district", + "districts": [] + }, { + "citycode": "0916", + "adcode": "610724", + "name": "西乡县", + "center": "107.766477,32.983282", + "level": "district", + "districts": [] + }, { + "citycode": "0916", + "adcode": "610730", + "name": "佛坪县", + "center": "107.990551,33.524261", + "level": "district", + "districts": [] + }, { + "citycode": "0916", + "adcode": "610728", + "name": "镇巴县", + "center": "107.895015,32.536706", + "level": "district", + "districts": [] + }, { + "citycode": "0916", + "adcode": "610723", + "name": "洋县", + "center": "107.545678,33.222808", + "level": "district", + "districts": [] + }] + }, { + "citycode": "029", + "adcode": "610100", + "name": "西安市", + "center": "108.939645,34.343207", + "level": "city", + "districts": [{ + "citycode": "029", + "adcode": "610114", + "name": "阎良区", + "center": "109.226124,34.662232", + "level": "district", + "districts": [] + }, { + "citycode": "029", + "adcode": "610116", + "name": "长安区", + "center": "108.906944,34.158668", + "level": "district", + "districts": [] + }, { + "citycode": "029", + "adcode": "610117", + "name": "高陵区", + "center": "109.088269,34.53502", + "level": "district", + "districts": [] + }, { + "citycode": "029", + "adcode": "610115", + "name": "临潼区", + "center": "109.214249,34.367181", + "level": "district", + "districts": [] + }, { + "citycode": "029", + "adcode": "610111", + "name": "灞桥区", + "center": "109.064675,34.273111", + "level": "district", + "districts": [] + }, { + "citycode": "029", + "adcode": "610102", + "name": "新城区", + "center": "108.960707,34.266601", + "level": "district", + "districts": [] + }, { + "citycode": "029", + "adcode": "610122", + "name": "蓝田县", + "center": "109.323473,34.151256", + "level": "district", + "districts": [] + }, { + "citycode": "029", + "adcode": "610103", + "name": "碑林区", + "center": "108.940681,34.256727", + "level": "district", + "districts": [] + }, { + "citycode": "029", + "adcode": "610104", + "name": "莲湖区", + "center": "108.944161,34.26535", + "level": "district", + "districts": [] + }, { + "citycode": "029", + "adcode": "610113", + "name": "雁塔区", + "center": "108.948592,34.222517", + "level": "district", + "districts": [] + }, { + "citycode": "029", + "adcode": "610112", + "name": "未央区", + "center": "108.946665,34.293109", + "level": "district", + "districts": [] + }, { + "citycode": "029", + "adcode": "610124", + "name": "周至县", + "center": "108.222219,34.163592", + "level": "district", + "districts": [] + }, { + "citycode": "029", + "adcode": "610118", + "name": "鄠邑区", + "center": "108.604772,34.108707", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0912", + "adcode": "610800", + "name": "榆林市", + "center": "109.734104,38.28576", + "level": "city", + "districts": [{ + "citycode": "0912", + "adcode": "610827", + "name": "米脂县", + "center": "110.183984,37.755134", + "level": "district", + "districts": [] + }, { + "citycode": "0912", + "adcode": "610802", + "name": "榆阳区", + "center": "109.72054,38.277078", + "level": "district", + "districts": [] + }, { + "citycode": "0912", + "adcode": "610881", + "name": "神木市", + "center": "110.466867,38.899742", + "level": "district", + "districts": [] + }, { + "citycode": "0912", + "adcode": "610828", + "name": "佳县", + "center": "110.491345,38.01951", + "level": "district", + "districts": [] + }, { + "citycode": "0912", + "adcode": "610829", + "name": "吴堡县", + "center": "110.739726,37.452179", + "level": "district", + "districts": [] + }, { + "citycode": "0912", + "adcode": "610825", + "name": "定边县", + "center": "107.601048,37.594976", + "level": "district", + "districts": [] + }, { + "citycode": "0912", + "adcode": "610824", + "name": "靖边县", + "center": "108.794153,37.600351", + "level": "district", + "districts": [] + }, { + "citycode": "0912", + "adcode": "610831", + "name": "子洲县", + "center": "110.035124,37.610554", + "level": "district", + "districts": [] + }, { + "citycode": "0912", + "adcode": "610803", + "name": "横山区", + "center": "109.294144,37.962477", + "level": "district", + "districts": [] + }, { + "citycode": "0912", + "adcode": "610822", + "name": "府谷县", + "center": "111.016431,39.015658", + "level": "district", + "districts": [] + }, { + "citycode": "0912", + "adcode": "610830", + "name": "清涧县", + "center": "110.121181,37.088921", + "level": "district", + "districts": [] + }, { + "citycode": "0912", + "adcode": "610826", + "name": "绥德县", + "center": "110.263226,37.502984", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0910", + "adcode": "610400", + "name": "咸阳市", + "center": "108.708837,34.329896", + "level": "city", + "districts": [{ + "citycode": "0910", + "adcode": "610422", + "name": "三原县", + "center": "108.940754,34.617282", + "level": "district", + "districts": [] + }, { + "citycode": "0910", + "adcode": "610404", + "name": "渭城区", + "center": "108.737062,34.36202", + "level": "district", + "districts": [] + }, { + "citycode": "0910", + "adcode": "610424", + "name": "乾县", + "center": "108.239316,34.528262", + "level": "district", + "districts": [] + }, { + "citycode": "0910", + "adcode": "610481", + "name": "兴平市", + "center": "108.490497,34.299199", + "level": "district", + "districts": [] + }, { + "citycode": "0910", + "adcode": "610426", + "name": "永寿县", + "center": "108.142197,34.69188", + "level": "district", + "districts": [] + }, { + "citycode": "0910", + "adcode": "610431", + "name": "武功县", + "center": "108.200275,34.261026", + "level": "district", + "districts": [] + }, { + "citycode": "0910", + "adcode": "610430", + "name": "淳化县", + "center": "108.580164,34.798596", + "level": "district", + "districts": [] + }, { + "citycode": "0910", + "adcode": "610425", + "name": "礼泉县", + "center": "108.424682,34.481875", + "level": "district", + "districts": [] + }, { + "citycode": "0910", + "adcode": "610428", + "name": "长武县", + "center": "107.79906,35.206273", + "level": "district", + "districts": [] + }, { + "citycode": "0910", + "adcode": "610429", + "name": "旬邑县", + "center": "108.333815,35.111787", + "level": "district", + "districts": [] + }, { + "citycode": "0910", + "adcode": "610482", + "name": "彬州市", + "center": "108.081892,35.035702", + "level": "district", + "districts": [] + }, { + "citycode": "0910", + "adcode": "610423", + "name": "泾阳县", + "center": "108.843029,34.526557", + "level": "district", + "districts": [] + }, { + "citycode": "0910", + "adcode": "610403", + "name": "杨陵区", + "center": "108.084661,34.272084", + "level": "district", + "districts": [] + }, { + "citycode": "0910", + "adcode": "610402", + "name": "秦都区", + "center": "108.706347,34.329478", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0917", + "adcode": "610300", + "name": "宝鸡市", + "center": "107.237682,34.362862", + "level": "city", + "districts": [{ + "citycode": "0917", + "adcode": "610327", + "name": "陇县", + "center": "106.864404,34.892985", + "level": "district", + "districts": [] + }, { + "citycode": "0917", + "adcode": "610328", + "name": "千阳县", + "center": "107.132421,34.642374", + "level": "district", + "districts": [] + }, { + "citycode": "0917", + "adcode": "610303", + "name": "金台区", + "center": "107.232733,34.397071", + "level": "district", + "districts": [] + }, { + "citycode": "0917", + "adcode": "610302", + "name": "渭滨区", + "center": "107.155344,34.355068", + "level": "district", + "districts": [] + }, { + "citycode": "0917", + "adcode": "610329", + "name": "麟游县", + "center": "107.793524,34.677902", + "level": "district", + "districts": [] + }, { + "citycode": "0917", + "adcode": "610324", + "name": "扶风县", + "center": "107.900157,34.375636", + "level": "district", + "districts": [] + }, { + "citycode": "0917", + "adcode": "610323", + "name": "岐山县", + "center": "107.621397,34.44373", + "level": "district", + "districts": [] + }, { + "citycode": "0917", + "adcode": "610326", + "name": "眉县", + "center": "107.750039,34.274774", + "level": "district", + "districts": [] + }, { + "citycode": "0917", + "adcode": "610330", + "name": "凤县", + "center": "106.515841,33.910797", + "level": "district", + "districts": [] + }, { + "citycode": "0917", + "adcode": "610331", + "name": "太白县", + "center": "107.318932,34.058299", + "level": "district", + "districts": [] + }, { + "citycode": "0917", + "adcode": "610304", + "name": "陈仓区", + "center": "107.368993,34.35073", + "level": "district", + "districts": [] + }, { + "citycode": "0917", + "adcode": "610305", + "name": "凤翔区", + "center": "107.401029,34.522167", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0915", + "adcode": "610900", + "name": "安康市", + "center": "109.029017,32.685435", + "level": "city", + "districts": [{ + "citycode": "0915", + "adcode": "610981", + "name": "旬阳市", + "center": "109.361783,32.832213", + "level": "district", + "districts": [] + }, { + "citycode": "0915", + "adcode": "610924", + "name": "紫阳县", + "center": "108.534291,32.520209", + "level": "district", + "districts": [] + }, { + "citycode": "0915", + "adcode": "610929", + "name": "白河县", + "center": "110.112608,32.80901", + "level": "district", + "districts": [] + }, { + "citycode": "0915", + "adcode": "610926", + "name": "平利县", + "center": "109.361919,32.389061", + "level": "district", + "districts": [] + }, { + "citycode": "0915", + "adcode": "610927", + "name": "镇坪县", + "center": "109.526873,31.883672", + "level": "district", + "districts": [] + }, { + "citycode": "0915", + "adcode": "610921", + "name": "汉阴县", + "center": "108.508792,32.893057", + "level": "district", + "districts": [] + }, { + "citycode": "0915", + "adcode": "610923", + "name": "宁陕县", + "center": "108.314299,33.310284", + "level": "district", + "districts": [] + }, { + "citycode": "0915", + "adcode": "610922", + "name": "石泉县", + "center": "108.248061,33.03805", + "level": "district", + "districts": [] + }, { + "citycode": "0915", + "adcode": "610925", + "name": "岚皋县", + "center": "108.902049,32.307001", + "level": "district", + "districts": [] + }, { + "citycode": "0915", + "adcode": "610902", + "name": "汉滨区", + "center": "109.026928,32.695436", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0911", + "adcode": "610600", + "name": "延安市", + "center": "109.49468,36.650109", + "level": "city", + "districts": [{ + "citycode": "0911", + "adcode": "610621", + "name": "延长县", + "center": "110.012455,36.579354", + "level": "district", + "districts": [] + }, { + "citycode": "0911", + "adcode": "610626", + "name": "吴起县", + "center": "108.176501,36.92746", + "level": "district", + "districts": [] + }, { + "citycode": "0911", + "adcode": "610602", + "name": "宝塔区", + "center": "109.489726,36.585138", + "level": "district", + "districts": [] + }, { + "citycode": "0911", + "adcode": "610627", + "name": "甘泉县", + "center": "109.351046,36.276645", + "level": "district", + "districts": [] + }, { + "citycode": "0911", + "adcode": "610603", + "name": "安塞区", + "center": "109.329236,36.864571", + "level": "district", + "districts": [] + }, { + "citycode": "0911", + "adcode": "610681", + "name": "子长市", + "center": "109.675284,37.142462", + "level": "district", + "districts": [] + }, { + "citycode": "0911", + "adcode": "610622", + "name": "延川县", + "center": "110.193503,36.878324", + "level": "district", + "districts": [] + }, { + "citycode": "0911", + "adcode": "610625", + "name": "志丹县", + "center": "108.767816,36.822232", + "level": "district", + "districts": [] + }, { + "citycode": "0911", + "adcode": "610630", + "name": "宜川县", + "center": "110.168963,36.050178", + "level": "district", + "districts": [] + }, { + "citycode": "0911", + "adcode": "610631", + "name": "黄龙县", + "center": "109.84029,35.584655", + "level": "district", + "districts": [] + }, { + "citycode": "0911", + "adcode": "610629", + "name": "洛川县", + "center": "109.43249,35.762626", + "level": "district", + "districts": [] + }, { + "citycode": "0911", + "adcode": "610628", + "name": "富县", + "center": "109.37884,35.988111", + "level": "district", + "districts": [] + }, { + "citycode": "0911", + "adcode": "610632", + "name": "黄陵县", + "center": "109.262919,35.579421", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0919", + "adcode": "610200", + "name": "铜川市", + "center": "108.945116,34.897133", + "level": "city", + "districts": [{ + "citycode": "0919", + "adcode": "610203", + "name": "印台区", + "center": "109.099848,35.11454", + "level": "district", + "districts": [] + }, { + "citycode": "0919", + "adcode": "610202", + "name": "王益区", + "center": "109.075615,35.068925", + "level": "district", + "districts": [] + }, { + "citycode": "0919", + "adcode": "610222", + "name": "宜君县", + "center": "109.117063,35.398624", + "level": "district", + "districts": [] + }, { + "citycode": "0919", + "adcode": "610204", + "name": "耀州区", + "center": "108.980095,34.909685", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0913", + "adcode": "610500", + "name": "渭南市", + "center": "109.470962,34.520632", + "level": "city", + "districts": [{ + "citycode": "0913", + "adcode": "610527", + "name": "白水县", + "center": "109.590501,35.177497", + "level": "district", + "districts": [] + }, { + "citycode": "0913", + "adcode": "610525", + "name": "澄城县", + "center": "109.932439,35.190256", + "level": "district", + "districts": [] + }, { + "citycode": "0913", + "adcode": "610503", + "name": "华州区", + "center": "109.775765,34.497019", + "level": "district", + "districts": [] + }, { + "citycode": "0913", + "adcode": "610582", + "name": "华阴市", + "center": "110.092286,34.566552", + "level": "district", + "districts": [] + }, { + "citycode": "0913", + "adcode": "610502", + "name": "临渭区", + "center": "109.510051,34.498902", + "level": "district", + "districts": [] + }, { + "citycode": "0913", + "adcode": "610526", + "name": "蒲城县", + "center": "109.586263,34.955755", + "level": "district", + "districts": [] + }, { + "citycode": "0913", + "adcode": "610528", + "name": "富平县", + "center": "109.179903,34.751599", + "level": "district", + "districts": [] + }, { + "citycode": "0913", + "adcode": "610581", + "name": "韩城市", + "center": "110.44295,35.477145", + "level": "district", + "districts": [] + }, { + "citycode": "0913", + "adcode": "610524", + "name": "合阳县", + "center": "110.149412,35.237881", + "level": "district", + "districts": [] + }, { + "citycode": "0913", + "adcode": "610523", + "name": "大荔县", + "center": "109.941784,34.797073", + "level": "district", + "districts": [] + }, { + "citycode": "0913", + "adcode": "610522", + "name": "潼关县", + "center": "110.246105,34.544294", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": [], + "adcode": "530000", + "name": "云南省", + "center": "102.709372,25.046432", + "level": "province", + "districts": [{ + "citycode": "0870", + "adcode": "530600", + "name": "昭通市", + "center": "103.717078,27.338185", + "level": "city", + "districts": [{ + "citycode": "0870", + "adcode": "530626", + "name": "绥江县", + "center": "103.968995,28.592119", + "level": "district", + "districts": [] + }, { + "citycode": "0870", + "adcode": "530625", + "name": "永善县", + "center": "103.63756,28.229018", + "level": "district", + "districts": [] + }, { + "citycode": "0870", + "adcode": "530681", + "name": "水富市", + "center": "104.415964,28.629951", + "level": "district", + "districts": [] + }, { + "citycode": "0870", + "adcode": "530629", + "name": "威信县", + "center": "105.049012,27.846839", + "level": "district", + "districts": [] + }, { + "citycode": "0870", + "adcode": "530622", + "name": "巧家县", + "center": "102.935343,26.896904", + "level": "district", + "districts": [] + }, { + "citycode": "0870", + "adcode": "530623", + "name": "盐津县", + "center": "104.234458,28.108475", + "level": "district", + "districts": [] + }, { + "citycode": "0870", + "adcode": "530628", + "name": "彝良县", + "center": "104.055991,27.624277", + "level": "district", + "districts": [] + }, { + "citycode": "0870", + "adcode": "530621", + "name": "鲁甸县", + "center": "103.557969,27.186668", + "level": "district", + "districts": [] + }, { + "citycode": "0870", + "adcode": "530627", + "name": "镇雄县", + "center": "104.873486,27.441527", + "level": "district", + "districts": [] + }, { + "citycode": "0870", + "adcode": "530602", + "name": "昭阳区", + "center": "103.706323,27.320035", + "level": "district", + "districts": [] + }, { + "citycode": "0870", + "adcode": "530624", + "name": "大关县", + "center": "103.891164,27.748054", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0874", + "adcode": "530300", + "name": "曲靖市", + "center": "103.796288,25.490866", + "level": "city", + "districts": [{ + "citycode": "0874", + "adcode": "530326", + "name": "会泽县", + "center": "103.297155,26.417116", + "level": "district", + "districts": [] + }, { + "citycode": "0874", + "adcode": "530304", + "name": "马龙区", + "center": "103.578459,25.428102", + "level": "district", + "districts": [] + }, { + "citycode": "0874", + "adcode": "530323", + "name": "师宗县", + "center": "103.985224,24.822471", + "level": "district", + "districts": [] + }, { + "citycode": "0874", + "adcode": "530302", + "name": "麒麟区", + "center": "103.804406,25.496472", + "level": "district", + "districts": [] + }, { + "citycode": "0874", + "adcode": "530322", + "name": "陆良县", + "center": "103.66671,25.0293", + "level": "district", + "districts": [] + }, { + "citycode": "0874", + "adcode": "530303", + "name": "沾益区", + "center": "103.822104,25.600424", + "level": "district", + "districts": [] + }, { + "citycode": "0874", + "adcode": "530381", + "name": "宣威市", + "center": "104.104255,26.218956", + "level": "district", + "districts": [] + }, { + "citycode": "0874", + "adcode": "530325", + "name": "富源县", + "center": "104.255082,25.674217", + "level": "district", + "districts": [] + }, { + "citycode": "0874", + "adcode": "530324", + "name": "罗平县", + "center": "104.297124,24.865388", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0873", + "adcode": "532500", + "name": "红河哈尼族彝族自治州", + "center": "103.374873,23.363129", + "level": "city", + "districts": [{ + "citycode": "0873", + "adcode": "532504", + "name": "弥勒市", + "center": "103.414817,24.411774", + "level": "district", + "districts": [] + }, { + "citycode": "0873", + "adcode": "532502", + "name": "开远市", + "center": "103.266908,23.714518", + "level": "district", + "districts": [] + }, { + "citycode": "0873", + "adcode": "532524", + "name": "建水县", + "center": "102.826178,23.635824", + "level": "district", + "districts": [] + }, { + "citycode": "0873", + "adcode": "532529", + "name": "红河县", + "center": "102.420566,23.368946", + "level": "district", + "districts": [] + }, { + "citycode": "0873", + "adcode": "532523", + "name": "屏边苗族自治县", + "center": "103.675458,22.986733", + "level": "district", + "districts": [] + }, { + "citycode": "0873", + "adcode": "532531", + "name": "绿春县", + "center": "102.392655,22.993654", + "level": "district", + "districts": [] + }, { + "citycode": "0873", + "adcode": "532501", + "name": "个旧市", + "center": "103.152663,23.389935", + "level": "district", + "districts": [] + }, { + "citycode": "0873", + "adcode": "532525", + "name": "石屏县", + "center": "102.496138,23.705707", + "level": "district", + "districts": [] + }, { + "citycode": "0873", + "adcode": "532503", + "name": "蒙自市", + "center": "103.364936,23.396111", + "level": "district", + "districts": [] + }, { + "citycode": "0873", + "adcode": "532527", + "name": "泸西县", + "center": "103.76615,24.531981", + "level": "district", + "districts": [] + }, { + "citycode": "0873", + "adcode": "532528", + "name": "元阳县", + "center": "102.835358,23.219671", + "level": "district", + "districts": [] + }, { + "citycode": "0873", + "adcode": "532530", + "name": "金平苗族瑶族傣族自治县", + "center": "103.227982,22.769894", + "level": "district", + "districts": [] + }, { + "citycode": "0873", + "adcode": "532532", + "name": "河口瑶族自治县", + "center": "103.939265,22.529438", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0886", + "adcode": "533300", + "name": "怒江傈僳族自治州", + "center": "98.8566,25.817555", + "level": "city", + "districts": [{ + "citycode": "0886", + "adcode": "533324", + "name": "贡山独龙族怒族自治县", + "center": "98.666279,27.740839", + "level": "district", + "districts": [] + }, { + "citycode": "0886", + "adcode": "533323", + "name": "福贡县", + "center": "98.869132,26.901831", + "level": "district", + "districts": [] + }, { + "citycode": "0886", + "adcode": "533325", + "name": "兰坪白族普米族自治县", + "center": "99.416628,26.453622", + "level": "district", + "districts": [] + }, { + "citycode": "0886", + "adcode": "533301", + "name": "泸水市", + "center": "98.857723,25.822579", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0877", + "adcode": "530400", + "name": "玉溪市", + "center": "102.526673,24.346786", + "level": "city", + "districts": [{ + "citycode": "0877", + "adcode": "530425", + "name": "易门县", + "center": "102.161947,24.672156", + "level": "district", + "districts": [] + }, { + "citycode": "0877", + "adcode": "530424", + "name": "华宁县", + "center": "102.928914,24.19322", + "level": "district", + "districts": [] + }, { + "citycode": "0877", + "adcode": "530402", + "name": "红塔区", + "center": "102.540122,24.341215", + "level": "district", + "districts": [] + }, { + "citycode": "0877", + "adcode": "530403", + "name": "江川区", + "center": "102.748499,24.299441", + "level": "district", + "districts": [] + }, { + "citycode": "0877", + "adcode": "530481", + "name": "澄江市", + "center": "102.904181,24.675536", + "level": "district", + "districts": [] + }, { + "citycode": "0877", + "adcode": "530428", + "name": "元江哈尼族彝族傣族自治县", + "center": "101.998138,23.596068", + "level": "district", + "districts": [] + }, { + "citycode": "0877", + "adcode": "530427", + "name": "新平彝族傣族自治县", + "center": "101.990805,24.070436", + "level": "district", + "districts": [] + }, { + "citycode": "0877", + "adcode": "530426", + "name": "峨山彝族自治县", + "center": "102.405698,24.168899", + "level": "district", + "districts": [] + }, { + "citycode": "0877", + "adcode": "530423", + "name": "通海县", + "center": "102.725538,24.11114", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0872", + "adcode": "532900", + "name": "大理白族自治州", + "center": "100.267608,25.606548", + "level": "city", + "districts": [{ + "citycode": "0872", + "adcode": "532931", + "name": "剑川县", + "center": "99.905041,26.536889", + "level": "district", + "districts": [] + }, { + "citycode": "0872", + "adcode": "532922", + "name": "漾濞彝族自治县", + "center": "99.958089,25.669944", + "level": "district", + "districts": [] + }, { + "citycode": "0872", + "adcode": "532901", + "name": "大理市", + "center": "100.301614,25.678466", + "level": "district", + "districts": [] + }, { + "citycode": "0872", + "adcode": "532930", + "name": "洱源县", + "center": "99.962294,26.11337", + "level": "district", + "districts": [] + }, { + "citycode": "0872", + "adcode": "532929", + "name": "云龙县", + "center": "99.371021,25.885733", + "level": "district", + "districts": [] + }, { + "citycode": "0872", + "adcode": "532928", + "name": "永平县", + "center": "99.54063,25.464134", + "level": "district", + "districts": [] + }, { + "citycode": "0872", + "adcode": "532927", + "name": "巍山彝族回族自治县", + "center": "100.306977,25.227065", + "level": "district", + "districts": [] + }, { + "citycode": "0872", + "adcode": "532923", + "name": "祥云县", + "center": "100.549961,25.483727", + "level": "district", + "districts": [] + }, { + "citycode": "0872", + "adcode": "532925", + "name": "弥渡县", + "center": "100.491038,25.343778", + "level": "district", + "districts": [] + }, { + "citycode": "0872", + "adcode": "532926", + "name": "南涧彝族自治县", + "center": "100.510333,25.032353", + "level": "district", + "districts": [] + }, { + "citycode": "0872", + "adcode": "532924", + "name": "宾川县", + "center": "100.590274,25.830491", + "level": "district", + "districts": [] + }, { + "citycode": "0872", + "adcode": "532932", + "name": "鹤庆县", + "center": "100.176331,26.560122", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0887", + "adcode": "533400", + "name": "迪庆藏族自治州", + "center": "99.70211,27.819149", + "level": "city", + "districts": [{ + "citycode": "0887", + "adcode": "533401", + "name": "香格里拉市", + "center": "99.743582,27.842185", + "level": "district", + "districts": [] + }, { + "citycode": "0887", + "adcode": "533423", + "name": "维西傈僳族自治县", + "center": "99.300937,27.163808", + "level": "district", + "districts": [] + }, { + "citycode": "0887", + "adcode": "533422", + "name": "德钦县", + "center": "98.917851,28.464213", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0883", + "adcode": "530900", + "name": "临沧市", + "center": "100.088837,23.884175", + "level": "city", + "districts": [{ + "citycode": "0883", + "adcode": "530921", + "name": "凤庆县", + "center": "99.92873,24.580559", + "level": "district", + "districts": [] + }, { + "citycode": "0883", + "adcode": "530922", + "name": "云县", + "center": "100.1303,24.444461", + "level": "district", + "districts": [] + }, { + "citycode": "0883", + "adcode": "530902", + "name": "临翔区", + "center": "100.082073,23.895298", + "level": "district", + "districts": [] + }, { + "citycode": "0883", + "adcode": "530925", + "name": "双江拉祜族佤族布朗族傣族自治县", + "center": "99.828225,23.472719", + "level": "district", + "districts": [] + }, { + "citycode": "0883", + "adcode": "530927", + "name": "沧源佤族自治县", + "center": "99.245894,23.146758", + "level": "district", + "districts": [] + }, { + "citycode": "0883", + "adcode": "530924", + "name": "镇康县", + "center": "98.825389,23.762886", + "level": "district", + "districts": [] + }, { + "citycode": "0883", + "adcode": "530926", + "name": "耿马傣族佤族自治县", + "center": "99.397126,23.538092", + "level": "district", + "districts": [] + }, { + "citycode": "0883", + "adcode": "530923", + "name": "永德县", + "center": "99.258702,24.018463", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0875", + "adcode": "530500", + "name": "保山市", + "center": "99.161489,25.112018", + "level": "city", + "districts": [{ + "citycode": "0875", + "adcode": "530581", + "name": "腾冲市", + "center": "98.490276,25.020283", + "level": "district", + "districts": [] + }, { + "citycode": "0875", + "adcode": "530502", + "name": "隆阳区", + "center": "99.165638,25.121137", + "level": "district", + "districts": [] + }, { + "citycode": "0875", + "adcode": "530521", + "name": "施甸县", + "center": "99.18919,24.723084", + "level": "district", + "districts": [] + }, { + "citycode": "0875", + "adcode": "530523", + "name": "龙陵县", + "center": "98.68941,24.586703", + "level": "district", + "districts": [] + }, { + "citycode": "0875", + "adcode": "530524", + "name": "昌宁县", + "center": "99.605105,24.827739", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0888", + "adcode": "530700", + "name": "丽江市", + "center": "100.225936,26.855165", + "level": "city", + "districts": [{ + "citycode": "0888", + "adcode": "530724", + "name": "宁蒗彝族自治县", + "center": "100.851083,27.282207", + "level": "district", + "districts": [] + }, { + "citycode": "0888", + "adcode": "530722", + "name": "永胜县", + "center": "100.750907,26.684215", + "level": "district", + "districts": [] + }, { + "citycode": "0888", + "adcode": "530702", + "name": "古城区", + "center": "100.22583,26.876468", + "level": "district", + "districts": [] + }, { + "citycode": "0888", + "adcode": "530721", + "name": "玉龙纳西族自治县", + "center": "100.236967,26.821494", + "level": "district", + "districts": [] + }, { + "citycode": "0888", + "adcode": "530723", + "name": "华坪县", + "center": "101.265373,26.629598", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0691", + "adcode": "532800", + "name": "西双版纳傣族自治州", + "center": "100.797002,22.009037", + "level": "city", + "districts": [{ + "citycode": "0691", + "adcode": "532822", + "name": "勐海县", + "center": "100.452444,21.957323", + "level": "district", + "districts": [] + }, { + "citycode": "0691", + "adcode": "532823", + "name": "勐腊县", + "center": "101.564635,21.459233", + "level": "district", + "districts": [] + }, { + "citycode": "0691", + "adcode": "532801", + "name": "景洪市", + "center": "100.799595,22.011792", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0878", + "adcode": "532300", + "name": "楚雄彝族自治州", + "center": "101.528304,25.045678", + "level": "city", + "districts": [{ + "citycode": "0878", + "adcode": "532326", + "name": "大姚县", + "center": "101.336576,25.729551", + "level": "district", + "districts": [] + }, { + "citycode": "0878", + "adcode": "532328", + "name": "元谋县", + "center": "101.87434,25.704499", + "level": "district", + "districts": [] + }, { + "citycode": "0878", + "adcode": "532325", + "name": "姚安县", + "center": "101.241632,25.504287", + "level": "district", + "districts": [] + }, { + "citycode": "0878", + "adcode": "532323", + "name": "牟定县", + "center": "101.546898,25.312939", + "level": "district", + "districts": [] + }, { + "citycode": "0878", + "adcode": "532302", + "name": "禄丰市", + "center": "102.079082,25.151061", + "level": "district", + "districts": [] + }, { + "citycode": "0878", + "adcode": "532301", + "name": "楚雄市", + "center": "101.546242,25.032945", + "level": "district", + "districts": [] + }, { + "citycode": "0878", + "adcode": "532324", + "name": "南华县", + "center": "101.283236,25.200163", + "level": "district", + "districts": [] + }, { + "citycode": "0878", + "adcode": "532327", + "name": "永仁县", + "center": "101.666795,26.049522", + "level": "district", + "districts": [] + }, { + "citycode": "0878", + "adcode": "532322", + "name": "双柏县", + "center": "101.642369,24.688814", + "level": "district", + "districts": [] + }, { + "citycode": "0878", + "adcode": "532329", + "name": "武定县", + "center": "102.403949,25.530731", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0871", + "adcode": "530100", + "name": "昆明市", + "center": "102.833669,24.88149", + "level": "city", + "districts": [{ + "citycode": "0871", + "adcode": "530113", + "name": "东川区", + "center": "103.187825,26.082997", + "level": "district", + "districts": [] + }, { + "citycode": "0871", + "adcode": "530102", + "name": "五华区", + "center": "102.707262,25.043635", + "level": "district", + "districts": [] + }, { + "citycode": "0871", + "adcode": "530115", + "name": "晋宁区", + "center": "102.595325,24.669077", + "level": "district", + "districts": [] + }, { + "citycode": "0871", + "adcode": "530181", + "name": "安宁市", + "center": "102.47865,24.919831", + "level": "district", + "districts": [] + }, { + "citycode": "0871", + "adcode": "530124", + "name": "富民县", + "center": "102.497722,25.221924", + "level": "district", + "districts": [] + }, { + "citycode": "0871", + "adcode": "530112", + "name": "西山区", + "center": "102.664426,25.038039", + "level": "district", + "districts": [] + }, { + "citycode": "0871", + "adcode": "530103", + "name": "盘龙区", + "center": "102.751643,25.116512", + "level": "district", + "districts": [] + }, { + "citycode": "0871", + "adcode": "530126", + "name": "石林彝族自治县", + "center": "103.290536,24.771761", + "level": "district", + "districts": [] + }, { + "citycode": "0871", + "adcode": "530128", + "name": "禄劝彝族苗族自治县", + "center": "102.471993,25.551768", + "level": "district", + "districts": [] + }, { + "citycode": "0871", + "adcode": "530111", + "name": "官渡区", + "center": "102.748888,24.950285", + "level": "district", + "districts": [] + }, { + "citycode": "0871", + "adcode": "530114", + "name": "呈贡区", + "center": "102.822104,24.885738", + "level": "district", + "districts": [] + }, { + "citycode": "0871", + "adcode": "530125", + "name": "宜良县", + "center": "103.141674,24.91983", + "level": "district", + "districts": [] + }, { + "citycode": "0871", + "adcode": "530127", + "name": "嵩明县", + "center": "103.043384,25.327273", + "level": "district", + "districts": [] + }, { + "citycode": "0871", + "adcode": "530129", + "name": "寻甸回族彝族自治县", + "center": "103.256559,25.558163", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0879", + "adcode": "530800", + "name": "普洱市", + "center": "100.966011,22.825229", + "level": "city", + "districts": [{ + "citycode": "0879", + "adcode": "530825", + "name": "镇沅彝族哈尼族拉祜族自治县", + "center": "101.108733,24.00445", + "level": "district", + "districts": [] + }, { + "citycode": "0879", + "adcode": "530822", + "name": "墨江哈尼族自治县", + "center": "101.692461,23.431894", + "level": "district", + "districts": [] + }, { + "citycode": "0879", + "adcode": "530824", + "name": "景谷傣族彝族自治县", + "center": "100.702807,23.496987", + "level": "district", + "districts": [] + }, { + "citycode": "0879", + "adcode": "530828", + "name": "澜沧拉祜族自治县", + "center": "99.932045,22.555799", + "level": "district", + "districts": [] + }, { + "citycode": "0879", + "adcode": "530829", + "name": "西盟佤族自治县", + "center": "99.59016,22.644237", + "level": "district", + "districts": [] + }, { + "citycode": "0879", + "adcode": "530826", + "name": "江城哈尼族彝族自治县", + "center": "101.862344,22.585858", + "level": "district", + "districts": [] + }, { + "citycode": "0879", + "adcode": "530823", + "name": "景东彝族自治县", + "center": "100.833877,24.446731", + "level": "district", + "districts": [] + }, { + "citycode": "0879", + "adcode": "530802", + "name": "思茅区", + "center": "100.977069,22.786769", + "level": "district", + "districts": [] + }, { + "citycode": "0879", + "adcode": "530821", + "name": "宁洱哈尼族彝族自治县", + "center": "101.045743,23.048809", + "level": "district", + "districts": [] + }, { + "citycode": "0879", + "adcode": "530827", + "name": "孟连傣族拉祜族佤族自治县", + "center": "99.584225,22.329053", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0692", + "adcode": "533100", + "name": "德宏傣族景颇族自治州", + "center": "98.585621,24.433146", + "level": "city", + "districts": [{ + "citycode": "0692", + "adcode": "533122", + "name": "梁河县", + "center": "98.296584,24.804275", + "level": "district", + "districts": [] + }, { + "citycode": "0692", + "adcode": "533103", + "name": "芒市", + "center": "98.58809,24.433766", + "level": "district", + "districts": [] + }, { + "citycode": "0692", + "adcode": "533124", + "name": "陇川县", + "center": "97.793359,24.182347", + "level": "district", + "districts": [] + }, { + "citycode": "0692", + "adcode": "533123", + "name": "盈江县", + "center": "97.943474,24.691325", + "level": "district", + "districts": [] + }, { + "citycode": "0692", + "adcode": "533102", + "name": "瑞丽市", + "center": "97.855423,24.018377", + "level": "district", + "districts": [] + }] + }, { + "citycode": "0876", + "adcode": "532600", + "name": "文山壮族苗族自治州", + "center": "104.21567,23.400983", + "level": "city", + "districts": [{ + "citycode": "0876", + "adcode": "532626", + "name": "丘北县", + "center": "104.166713,24.05064", + "level": "district", + "districts": [] + }, { + "citycode": "0876", + "adcode": "532627", + "name": "广南县", + "center": "105.055075,24.046378", + "level": "district", + "districts": [] + }, { + "citycode": "0876", + "adcode": "532622", + "name": "砚山县", + "center": "104.336905,23.605075", + "level": "district", + "districts": [] + }, { + "citycode": "0876", + "adcode": "532601", + "name": "文山市", + "center": "104.233237,23.38683", + "level": "district", + "districts": [] + }, { + "citycode": "0876", + "adcode": "532625", + "name": "马关县", + "center": "104.394524,23.013108", + "level": "district", + "districts": [] + }, { + "citycode": "0876", + "adcode": "532628", + "name": "富宁县", + "center": "105.630921,23.625072", + "level": "district", + "districts": [] + }, { + "citycode": "0876", + "adcode": "532624", + "name": "麻栗坡县", + "center": "104.702732,23.125837", + "level": "district", + "districts": [] + }, { + "citycode": "0876", + "adcode": "532623", + "name": "西畴县", + "center": "104.671802,23.437707", + "level": "district", + "districts": [] + }] + }] + }, { + "citycode": "010", + "adcode": "110000", + "name": "北京市", + "center": "116.407387,39.904179", + "level": "province", + "districts": [{ + "citycode": "010", + "adcode": "110100", + "name": "北京", + "center": "116.405285,39.904989", + "level": "city", + "districts": [{ + "citycode": "010", + "adcode": "110116", + "name": "怀柔区", + "center": "116.631974,40.317003", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110109", + "name": "门头沟区", + "center": "116.101668,39.940842", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110113", + "name": "顺义区", + "center": "116.661474,40.149891", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110101", + "name": "东城区", + "center": "116.416334,39.928359", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110114", + "name": "昌平区", + "center": "116.231034,40.220952", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110115", + "name": "大兴区", + "center": "116.341483,39.726917", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110111", + "name": "房山区", + "center": "116.143426,39.748889", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110117", + "name": "平谷区", + "center": "117.121589,40.140805", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110105", + "name": "朝阳区", + "center": "116.443136,39.921444", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110107", + "name": "石景山区", + "center": "116.223015,39.906304", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110106", + "name": "丰台区", + "center": "116.286726,39.858538", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110108", + "name": "海淀区", + "center": "116.2977,39.959893", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110102", + "name": "西城区", + "center": "116.36585,39.9126", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110118", + "name": "密云区", + "center": "116.843351,40.377058", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110112", + "name": "通州区", + "center": "116.72923,39.916403", + "level": "district", + "districts": [] + }, { + "citycode": "010", + "adcode": "110119", + "name": "延庆区", + "center": "115.974609,40.457033", + "level": "district", + "districts": [] + }] + }] + }] + }] +} \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/static/data/searchCitys.json b/unpackage/dist/build/app-plus/static/data/searchCitys.json new file mode 100644 index 0000000..f0d49b9 --- /dev/null +++ b/unpackage/dist/build/app-plus/static/data/searchCitys.json @@ -0,0 +1,6482 @@ +[ +{"name":"中国","adcode":"100000","citycode":"\\N"} +, +{"name":"北京市","adcode":"110000","citycode":"010"} +, +{"name":"东城区","adcode":"110101","citycode":"010"} +, +{"name":"西城区","adcode":"110102","citycode":"010"} +, +{"name":"朝阳区","adcode":"110105","citycode":"010"} +, +{"name":"丰台区","adcode":"110106","citycode":"010"} +, +{"name":"石景山区","adcode":"110107","citycode":"010"} +, +{"name":"海淀区","adcode":"110108","citycode":"010"} +, +{"name":"门头沟区","adcode":"110109","citycode":"010"} +, +{"name":"房山区","adcode":"110111","citycode":"010"} +, +{"name":"通州区","adcode":"110112","citycode":"010"} +, +{"name":"顺义区","adcode":"110113","citycode":"010"} +, +{"name":"昌平区","adcode":"110114","citycode":"010"} +, +{"name":"大兴区","adcode":"110115","citycode":"010"} +, +{"name":"怀柔区","adcode":"110116","citycode":"010"} +, +{"name":"平谷区","adcode":"110117","citycode":"010"} +, +{"name":"密云区","adcode":"110118","citycode":"010"} +, +{"name":"延庆区","adcode":"110119","citycode":"010"} +, +{"name":"天津市","adcode":"120000","citycode":"022"} +, +{"name":"和平区","adcode":"120101","citycode":"022"} +, +{"name":"河东区","adcode":"120102","citycode":"022"} +, +{"name":"河西区","adcode":"120103","citycode":"022"} +, +{"name":"南开区","adcode":"120104","citycode":"022"} +, +{"name":"河北区","adcode":"120105","citycode":"022"} +, +{"name":"红桥区","adcode":"120106","citycode":"022"} +, +{"name":"东丽区","adcode":"120110","citycode":"022"} +, +{"name":"西青区","adcode":"120111","citycode":"022"} +, +{"name":"津南区","adcode":"120112","citycode":"022"} +, +{"name":"北辰区","adcode":"120113","citycode":"022"} +, +{"name":"武清区","adcode":"120114","citycode":"022"} +, +{"name":"宝坻区","adcode":"120115","citycode":"022"} +, +{"name":"滨海新区","adcode":"120116","citycode":"022"} +, +{"name":"宁河区","adcode":"120117","citycode":"022"} +, +{"name":"静海区","adcode":"120118","citycode":"022"} +, +{"name":"蓟州区","adcode":"120119","citycode":"022"} +, +{"name":"河北省","adcode":"130000","citycode":"\\N"} +, +{"name":"石家庄市","adcode":"130100","citycode":"0311"} +, +{"name":"长安区","adcode":"130102","citycode":"0311"} +, +{"name":"桥西区","adcode":"130104","citycode":"0311"} +, +{"name":"新华区","adcode":"130105","citycode":"0311"} +, +{"name":"井陉矿区","adcode":"130107","citycode":"0311"} +, +{"name":"裕华区","adcode":"130108","citycode":"0311"} +, +{"name":"藁城区","adcode":"130109","citycode":"0311"} +, +{"name":"鹿泉区","adcode":"130110","citycode":"0311"} +, +{"name":"栾城区","adcode":"130111","citycode":"0311"} +, +{"name":"井陉县","adcode":"130121","citycode":"0311"} +, +{"name":"正定县","adcode":"130123","citycode":"0311"} +, +{"name":"行唐县","adcode":"130125","citycode":"0311"} +, +{"name":"灵寿县","adcode":"130126","citycode":"0311"} +, +{"name":"高邑县","adcode":"130127","citycode":"0311"} +, +{"name":"深泽县","adcode":"130128","citycode":"0311"} +, +{"name":"赞皇县","adcode":"130129","citycode":"0311"} +, +{"name":"无极县","adcode":"130130","citycode":"0311"} +, +{"name":"平山县","adcode":"130131","citycode":"0311"} +, +{"name":"元氏县","adcode":"130132","citycode":"0311"} +, +{"name":"赵县","adcode":"130133","citycode":"0311"} +, +{"name":"辛集市","adcode":"130181","citycode":"0311"} +, +{"name":"晋州市","adcode":"130183","citycode":"0311"} +, +{"name":"新乐市","adcode":"130184","citycode":"0311"} +, +{"name":"唐山市","adcode":"130200","citycode":"0315"} +, +{"name":"路南区","adcode":"130202","citycode":"0315"} +, +{"name":"路北区","adcode":"130203","citycode":"0315"} +, +{"name":"古冶区","adcode":"130204","citycode":"0315"} +, +{"name":"开平区","adcode":"130205","citycode":"0315"} +, +{"name":"丰南区","adcode":"130207","citycode":"0315"} +, +{"name":"丰润区","adcode":"130208","citycode":"0315"} +, +{"name":"曹妃甸区","adcode":"130209","citycode":"0315"} +, +{"name":"滦南县","adcode":"130224","citycode":"0315"} +, +{"name":"乐亭县","adcode":"130225","citycode":"0315"} +, +{"name":"迁西县","adcode":"130227","citycode":"0315"} +, +{"name":"玉田县","adcode":"130229","citycode":"0315"} +, +{"name":"遵化市","adcode":"130281","citycode":"0315"} +, +{"name":"迁安市","adcode":"130283","citycode":"0315"} +, +{"name":"滦州市","adcode":"130284","citycode":"0315"} +, +{"name":"秦皇岛市","adcode":"130300","citycode":"0335"} +, +{"name":"海港区","adcode":"130302","citycode":"0335"} +, +{"name":"山海关区","adcode":"130303","citycode":"0335"} +, +{"name":"北戴河区","adcode":"130304","citycode":"0335"} +, +{"name":"抚宁区","adcode":"130306","citycode":"0335"} +, +{"name":"青龙满族自治县","adcode":"130321","citycode":"0335"} +, +{"name":"昌黎县","adcode":"130322","citycode":"0335"} +, +{"name":"卢龙县","adcode":"130324","citycode":"0335"} +, +{"name":"邯郸市","adcode":"130400","citycode":"0310"} +, +{"name":"邯山区","adcode":"130402","citycode":"0310"} +, +{"name":"丛台区","adcode":"130403","citycode":"0310"} +, +{"name":"复兴区","adcode":"130404","citycode":"0310"} +, +{"name":"峰峰矿区","adcode":"130406","citycode":"0310"} +, +{"name":"肥乡区","adcode":"130407","citycode":"0310"} +, +{"name":"永年区","adcode":"130408","citycode":"0310"} +, +{"name":"临漳县","adcode":"130423","citycode":"0310"} +, +{"name":"成安县","adcode":"130424","citycode":"0310"} +, +{"name":"大名县","adcode":"130425","citycode":"0310"} +, +{"name":"涉县","adcode":"130426","citycode":"0310"} +, +{"name":"磁县","adcode":"130427","citycode":"0310"} +, +{"name":"邱县","adcode":"130430","citycode":"0310"} +, +{"name":"鸡泽县","adcode":"130431","citycode":"0310"} +, +{"name":"广平县","adcode":"130432","citycode":"0310"} +, +{"name":"馆陶县","adcode":"130433","citycode":"0310"} +, +{"name":"魏县","adcode":"130434","citycode":"0310"} +, +{"name":"曲周县","adcode":"130435","citycode":"0310"} +, +{"name":"武安市","adcode":"130481","citycode":"0310"} +, +{"name":"邢台市","adcode":"130500","citycode":"0319"} +, +{"name":"襄都区","adcode":"130502","citycode":"0319"} +, +{"name":"信都区","adcode":"130503","citycode":"0319"} +, +{"name":"任泽区","adcode":"130505","citycode":"0319"} +, +{"name":"南和区","adcode":"130506","citycode":"0319"} +, +{"name":"临城县","adcode":"130522","citycode":"0319"} +, +{"name":"内丘县","adcode":"130523","citycode":"0319"} +, +{"name":"柏乡县","adcode":"130524","citycode":"0319"} +, +{"name":"隆尧县","adcode":"130525","citycode":"0319"} +, +{"name":"宁晋县","adcode":"130528","citycode":"0319"} +, +{"name":"巨鹿县","adcode":"130529","citycode":"0319"} +, +{"name":"新河县","adcode":"130530","citycode":"0319"} +, +{"name":"广宗县","adcode":"130531","citycode":"0319"} +, +{"name":"平乡县","adcode":"130532","citycode":"0319"} +, +{"name":"威县","adcode":"130533","citycode":"0319"} +, +{"name":"清河县","adcode":"130534","citycode":"0319"} +, +{"name":"临西县","adcode":"130535","citycode":"0319"} +, +{"name":"南宫市","adcode":"130581","citycode":"0319"} +, +{"name":"沙河市","adcode":"130582","citycode":"0319"} +, +{"name":"保定市","adcode":"130600","citycode":"0312"} +, +{"name":"竞秀区","adcode":"130602","citycode":"0312"} +, +{"name":"莲池区","adcode":"130606","citycode":"0312"} +, +{"name":"满城区","adcode":"130607","citycode":"0312"} +, +{"name":"清苑区","adcode":"130608","citycode":"0312"} +, +{"name":"徐水区","adcode":"130609","citycode":"0312"} +, +{"name":"涞水县","adcode":"130623","citycode":"0312"} +, +{"name":"阜平县","adcode":"130624","citycode":"0312"} +, +{"name":"定兴县","adcode":"130626","citycode":"0312"} +, +{"name":"唐县","adcode":"130627","citycode":"0312"} +, +{"name":"高阳县","adcode":"130628","citycode":"0312"} +, +{"name":"容城县","adcode":"130629","citycode":"0312"} +, +{"name":"涞源县","adcode":"130630","citycode":"0312"} +, +{"name":"望都县","adcode":"130631","citycode":"0312"} +, +{"name":"安新县","adcode":"130632","citycode":"0312"} +, +{"name":"易县","adcode":"130633","citycode":"0312"} +, +{"name":"曲阳县","adcode":"130634","citycode":"0312"} +, +{"name":"蠡县","adcode":"130635","citycode":"0312"} +, +{"name":"顺平县","adcode":"130636","citycode":"0312"} +, +{"name":"博野县","adcode":"130637","citycode":"0312"} +, +{"name":"雄县","adcode":"130638","citycode":"0312"} +, +{"name":"涿州市","adcode":"130681","citycode":"0312"} +, +{"name":"定州市","adcode":"130682","citycode":"0312"} +, +{"name":"安国市","adcode":"130683","citycode":"0312"} +, +{"name":"高碑店市","adcode":"130684","citycode":"0312"} +, +{"name":"张家口市","adcode":"130700","citycode":"0313"} +, +{"name":"桥东区","adcode":"130702","citycode":"0313"} +, +{"name":"桥西区","adcode":"130703","citycode":"0313"} +, +{"name":"宣化区","adcode":"130705","citycode":"0313"} +, +{"name":"下花园区","adcode":"130706","citycode":"0313"} +, +{"name":"万全区","adcode":"130708","citycode":"0313"} +, +{"name":"崇礼区","adcode":"130709","citycode":"0313"} +, +{"name":"张北县","adcode":"130722","citycode":"0313"} +, +{"name":"康保县","adcode":"130723","citycode":"0313"} +, +{"name":"沽源县","adcode":"130724","citycode":"0313"} +, +{"name":"尚义县","adcode":"130725","citycode":"0313"} +, +{"name":"蔚县","adcode":"130726","citycode":"0313"} +, +{"name":"阳原县","adcode":"130727","citycode":"0313"} +, +{"name":"怀安县","adcode":"130728","citycode":"0313"} +, +{"name":"怀来县","adcode":"130730","citycode":"0313"} +, +{"name":"涿鹿县","adcode":"130731","citycode":"0313"} +, +{"name":"赤城县","adcode":"130732","citycode":"0313"} +, +{"name":"承德市","adcode":"130800","citycode":"0314"} +, +{"name":"双桥区","adcode":"130802","citycode":"0314"} +, +{"name":"双滦区","adcode":"130803","citycode":"0314"} +, +{"name":"鹰手营子矿区","adcode":"130804","citycode":"0314"} +, +{"name":"承德县","adcode":"130821","citycode":"0314"} +, +{"name":"兴隆县","adcode":"130822","citycode":"0314"} +, +{"name":"滦平县","adcode":"130824","citycode":"0314"} +, +{"name":"隆化县","adcode":"130825","citycode":"0314"} +, +{"name":"丰宁满族自治县","adcode":"130826","citycode":"0314"} +, +{"name":"宽城满族自治县","adcode":"130827","citycode":"0314"} +, +{"name":"围场满族蒙古族自治县","adcode":"130828","citycode":"0314"} +, +{"name":"平泉市","adcode":"130881","citycode":"0314"} +, +{"name":"沧州市","adcode":"130900","citycode":"0317"} +, +{"name":"新华区","adcode":"130902","citycode":"0317"} +, +{"name":"运河区","adcode":"130903","citycode":"0317"} +, +{"name":"沧县","adcode":"130921","citycode":"0317"} +, +{"name":"青县","adcode":"130922","citycode":"0317"} +, +{"name":"东光县","adcode":"130923","citycode":"0317"} +, +{"name":"海兴县","adcode":"130924","citycode":"0317"} +, +{"name":"盐山县","adcode":"130925","citycode":"0317"} +, +{"name":"肃宁县","adcode":"130926","citycode":"0317"} +, +{"name":"南皮县","adcode":"130927","citycode":"0317"} +, +{"name":"吴桥县","adcode":"130928","citycode":"0317"} +, +{"name":"献县","adcode":"130929","citycode":"0317"} +, +{"name":"孟村回族自治县","adcode":"130930","citycode":"0317"} +, +{"name":"泊头市","adcode":"130981","citycode":"0317"} +, +{"name":"任丘市","adcode":"130982","citycode":"0317"} +, +{"name":"黄骅市","adcode":"130983","citycode":"0317"} +, +{"name":"河间市","adcode":"130984","citycode":"0317"} +, +{"name":"廊坊市","adcode":"131000","citycode":"0316"} +, +{"name":"安次区","adcode":"131002","citycode":"0316"} +, +{"name":"广阳区","adcode":"131003","citycode":"0316"} +, +{"name":"固安县","adcode":"131022","citycode":"0316"} +, +{"name":"永清县","adcode":"131023","citycode":"0316"} +, +{"name":"香河县","adcode":"131024","citycode":"0316"} +, +{"name":"大城县","adcode":"131025","citycode":"0316"} +, +{"name":"文安县","adcode":"131026","citycode":"0316"} +, +{"name":"大厂回族自治县","adcode":"131028","citycode":"0316"} +, +{"name":"霸州市","adcode":"131081","citycode":"0316"} +, +{"name":"三河市","adcode":"131082","citycode":"0316"} +, +{"name":"衡水市","adcode":"131100","citycode":"0318"} +, +{"name":"桃城区","adcode":"131102","citycode":"0318"} +, +{"name":"冀州区","adcode":"131103","citycode":"0318"} +, +{"name":"枣强县","adcode":"131121","citycode":"0318"} +, +{"name":"武邑县","adcode":"131122","citycode":"0318"} +, +{"name":"武强县","adcode":"131123","citycode":"0318"} +, +{"name":"饶阳县","adcode":"131124","citycode":"0318"} +, +{"name":"安平县","adcode":"131125","citycode":"0318"} +, +{"name":"故城县","adcode":"131126","citycode":"0318"} +, +{"name":"景县","adcode":"131127","citycode":"0318"} +, +{"name":"阜城县","adcode":"131128","citycode":"0318"} +, +{"name":"深州市","adcode":"131182","citycode":"0318"} +, +{"name":"山西省","adcode":"140000","citycode":"\\N"} +, +{"name":"太原市","adcode":"140100","citycode":"0351"} +, +{"name":"小店区","adcode":"140105","citycode":"0351"} +, +{"name":"迎泽区","adcode":"140106","citycode":"0351"} +, +{"name":"杏花岭区","adcode":"140107","citycode":"0351"} +, +{"name":"尖草坪区","adcode":"140108","citycode":"0351"} +, +{"name":"万柏林区","adcode":"140109","citycode":"0351"} +, +{"name":"晋源区","adcode":"140110","citycode":"0351"} +, +{"name":"清徐县","adcode":"140121","citycode":"0351"} +, +{"name":"阳曲县","adcode":"140122","citycode":"0351"} +, +{"name":"娄烦县","adcode":"140123","citycode":"0351"} +, +{"name":"古交市","adcode":"140181","citycode":"0351"} +, +{"name":"大同市","adcode":"140200","citycode":"0352"} +, +{"name":"新荣区","adcode":"140212","citycode":"0352"} +, +{"name":"平城区","adcode":"140213","citycode":"0352"} +, +{"name":"云冈区","adcode":"140214","citycode":"0352"} +, +{"name":"云州区","adcode":"140215","citycode":"0352"} +, +{"name":"阳高县","adcode":"140221","citycode":"0352"} +, +{"name":"天镇县","adcode":"140222","citycode":"0352"} +, +{"name":"广灵县","adcode":"140223","citycode":"0352"} +, +{"name":"灵丘县","adcode":"140224","citycode":"0352"} +, +{"name":"浑源县","adcode":"140225","citycode":"0352"} +, +{"name":"左云县","adcode":"140226","citycode":"0352"} +, +{"name":"阳泉市","adcode":"140300","citycode":"0353"} +, +{"name":"城区","adcode":"140302","citycode":"0353"} +, +{"name":"矿区","adcode":"140303","citycode":"0353"} +, +{"name":"郊区","adcode":"140311","citycode":"0353"} +, +{"name":"平定县","adcode":"140321","citycode":"0353"} +, +{"name":"盂县","adcode":"140322","citycode":"0353"} +, +{"name":"长治市","adcode":"140400","citycode":"0355"} +, +{"name":"潞州区","adcode":"140403","citycode":"0355"} +, +{"name":"上党区","adcode":"140404","citycode":"0355"} +, +{"name":"屯留区","adcode":"140405","citycode":"0355"} +, +{"name":"潞城区","adcode":"140406","citycode":"0355"} +, +{"name":"襄垣县","adcode":"140423","citycode":"0355"} +, +{"name":"平顺县","adcode":"140425","citycode":"0355"} +, +{"name":"黎城县","adcode":"140426","citycode":"0355"} +, +{"name":"壶关县","adcode":"140427","citycode":"0355"} +, +{"name":"长子县","adcode":"140428","citycode":"0355"} +, +{"name":"武乡县","adcode":"140429","citycode":"0355"} +, +{"name":"沁县","adcode":"140430","citycode":"0355"} +, +{"name":"沁源县","adcode":"140431","citycode":"0355"} +, +{"name":"晋城市","adcode":"140500","citycode":"0356"} +, +{"name":"城区","adcode":"140502","citycode":"0356"} +, +{"name":"沁水县","adcode":"140521","citycode":"0356"} +, +{"name":"阳城县","adcode":"140522","citycode":"0356"} +, +{"name":"陵川县","adcode":"140524","citycode":"0356"} +, +{"name":"泽州县","adcode":"140525","citycode":"0356"} +, +{"name":"高平市","adcode":"140581","citycode":"0356"} +, +{"name":"朔州市","adcode":"140600","citycode":"0349"} +, +{"name":"朔城区","adcode":"140602","citycode":"0349"} +, +{"name":"平鲁区","adcode":"140603","citycode":"0349"} +, +{"name":"山阴县","adcode":"140621","citycode":"0349"} +, +{"name":"应县","adcode":"140622","citycode":"0349"} +, +{"name":"右玉县","adcode":"140623","citycode":"0349"} +, +{"name":"怀仁市","adcode":"140681","citycode":"0349"} +, +{"name":"晋中市","adcode":"140700","citycode":"0354"} +, +{"name":"榆次区","adcode":"140702","citycode":"0354"} +, +{"name":"太谷区","adcode":"140703","citycode":"0354"} +, +{"name":"榆社县","adcode":"140721","citycode":"0354"} +, +{"name":"左权县","adcode":"140722","citycode":"0354"} +, +{"name":"和顺县","adcode":"140723","citycode":"0354"} +, +{"name":"昔阳县","adcode":"140724","citycode":"0354"} +, +{"name":"寿阳县","adcode":"140725","citycode":"0354"} +, +{"name":"祁县","adcode":"140727","citycode":"0354"} +, +{"name":"平遥县","adcode":"140728","citycode":"0354"} +, +{"name":"灵石县","adcode":"140729","citycode":"0354"} +, +{"name":"介休市","adcode":"140781","citycode":"0354"} +, +{"name":"运城市","adcode":"140800","citycode":"0359"} +, +{"name":"盐湖区","adcode":"140802","citycode":"0359"} +, +{"name":"临猗县","adcode":"140821","citycode":"0359"} +, +{"name":"万荣县","adcode":"140822","citycode":"0359"} +, +{"name":"闻喜县","adcode":"140823","citycode":"0359"} +, +{"name":"稷山县","adcode":"140824","citycode":"0359"} +, +{"name":"新绛县","adcode":"140825","citycode":"0359"} +, +{"name":"绛县","adcode":"140826","citycode":"0359"} +, +{"name":"垣曲县","adcode":"140827","citycode":"0359"} +, +{"name":"夏县","adcode":"140828","citycode":"0359"} +, +{"name":"平陆县","adcode":"140829","citycode":"0359"} +, +{"name":"芮城县","adcode":"140830","citycode":"0359"} +, +{"name":"永济市","adcode":"140881","citycode":"0359"} +, +{"name":"河津市","adcode":"140882","citycode":"0359"} +, +{"name":"忻州市","adcode":"140900","citycode":"0350"} +, +{"name":"忻府区","adcode":"140902","citycode":"0350"} +, +{"name":"定襄县","adcode":"140921","citycode":"0350"} +, +{"name":"五台县","adcode":"140922","citycode":"0350"} +, +{"name":"代县","adcode":"140923","citycode":"0350"} +, +{"name":"繁峙县","adcode":"140924","citycode":"0350"} +, +{"name":"宁武县","adcode":"140925","citycode":"0350"} +, +{"name":"静乐县","adcode":"140926","citycode":"0350"} +, +{"name":"神池县","adcode":"140927","citycode":"0350"} +, +{"name":"五寨县","adcode":"140928","citycode":"0350"} +, +{"name":"岢岚县","adcode":"140929","citycode":"0350"} +, +{"name":"河曲县","adcode":"140930","citycode":"0350"} +, +{"name":"保德县","adcode":"140931","citycode":"0350"} +, +{"name":"偏关县","adcode":"140932","citycode":"0350"} +, +{"name":"原平市","adcode":"140981","citycode":"0350"} +, +{"name":"临汾市","adcode":"141000","citycode":"0357"} +, +{"name":"尧都区","adcode":"141002","citycode":"0357"} +, +{"name":"曲沃县","adcode":"141021","citycode":"0357"} +, +{"name":"翼城县","adcode":"141022","citycode":"0357"} +, +{"name":"襄汾县","adcode":"141023","citycode":"0357"} +, +{"name":"洪洞县","adcode":"141024","citycode":"0357"} +, +{"name":"古县","adcode":"141025","citycode":"0357"} +, +{"name":"安泽县","adcode":"141026","citycode":"0357"} +, +{"name":"浮山县","adcode":"141027","citycode":"0357"} +, +{"name":"吉县","adcode":"141028","citycode":"0357"} +, +{"name":"乡宁县","adcode":"141029","citycode":"0357"} +, +{"name":"大宁县","adcode":"141030","citycode":"0357"} +, +{"name":"隰县","adcode":"141031","citycode":"0357"} +, +{"name":"永和县","adcode":"141032","citycode":"0357"} +, +{"name":"蒲县","adcode":"141033","citycode":"0357"} +, +{"name":"汾西县","adcode":"141034","citycode":"0357"} +, +{"name":"侯马市","adcode":"141081","citycode":"0357"} +, +{"name":"霍州市","adcode":"141082","citycode":"0357"} +, +{"name":"吕梁市","adcode":"141100","citycode":"0358"} +, +{"name":"离石区","adcode":"141102","citycode":"0358"} +, +{"name":"文水县","adcode":"141121","citycode":"0358"} +, +{"name":"交城县","adcode":"141122","citycode":"0358"} +, +{"name":"兴县","adcode":"141123","citycode":"0358"} +, +{"name":"临县","adcode":"141124","citycode":"0358"} +, +{"name":"柳林县","adcode":"141125","citycode":"0358"} +, +{"name":"石楼县","adcode":"141126","citycode":"0358"} +, +{"name":"岚县","adcode":"141127","citycode":"0358"} +, +{"name":"方山县","adcode":"141128","citycode":"0358"} +, +{"name":"中阳县","adcode":"141129","citycode":"0358"} +, +{"name":"交口县","adcode":"141130","citycode":"0358"} +, +{"name":"孝义市","adcode":"141181","citycode":"0358"} +, +{"name":"汾阳市","adcode":"141182","citycode":"0358"} +, +{"name":"内蒙古自治区","adcode":"150000","citycode":"\\N"} +, +{"name":"呼和浩特市","adcode":"150100","citycode":"0471"} +, +{"name":"新城区","adcode":"150102","citycode":"0471"} +, +{"name":"回民区","adcode":"150103","citycode":"0471"} +, +{"name":"玉泉区","adcode":"150104","citycode":"0471"} +, +{"name":"赛罕区","adcode":"150105","citycode":"0471"} +, +{"name":"土默特左旗","adcode":"150121","citycode":"0471"} +, +{"name":"托克托县","adcode":"150122","citycode":"0471"} +, +{"name":"和林格尔县","adcode":"150123","citycode":"0471"} +, +{"name":"清水河县","adcode":"150124","citycode":"0471"} +, +{"name":"武川县","adcode":"150125","citycode":"0471"} +, +{"name":"包头市","adcode":"150200","citycode":"0472"} +, +{"name":"东河区","adcode":"150202","citycode":"0472"} +, +{"name":"昆都仑区","adcode":"150203","citycode":"0472"} +, +{"name":"青山区","adcode":"150204","citycode":"0472"} +, +{"name":"石拐区","adcode":"150205","citycode":"0472"} +, +{"name":"白云鄂博矿区","adcode":"150206","citycode":"0472"} +, +{"name":"九原区","adcode":"150207","citycode":"0472"} +, +{"name":"土默特右旗","adcode":"150221","citycode":"0472"} +, +{"name":"固阳县","adcode":"150222","citycode":"0472"} +, +{"name":"达尔罕茂明安联合旗","adcode":"150223","citycode":"0472"} +, +{"name":"乌海市","adcode":"150300","citycode":"0473"} +, +{"name":"海勃湾区","adcode":"150302","citycode":"0473"} +, +{"name":"海南区","adcode":"150303","citycode":"0473"} +, +{"name":"乌达区","adcode":"150304","citycode":"0473"} +, +{"name":"赤峰市","adcode":"150400","citycode":"0476"} +, +{"name":"红山区","adcode":"150402","citycode":"0476"} +, +{"name":"元宝山区","adcode":"150403","citycode":"0476"} +, +{"name":"松山区","adcode":"150404","citycode":"0476"} +, +{"name":"阿鲁科尔沁旗","adcode":"150421","citycode":"0476"} +, +{"name":"巴林左旗","adcode":"150422","citycode":"0476"} +, +{"name":"巴林右旗","adcode":"150423","citycode":"0476"} +, +{"name":"林西县","adcode":"150424","citycode":"0476"} +, +{"name":"克什克腾旗","adcode":"150425","citycode":"0476"} +, +{"name":"翁牛特旗","adcode":"150426","citycode":"0476"} +, +{"name":"喀喇沁旗","adcode":"150428","citycode":"0476"} +, +{"name":"宁城县","adcode":"150429","citycode":"0476"} +, +{"name":"敖汉旗","adcode":"150430","citycode":"0476"} +, +{"name":"通辽市","adcode":"150500","citycode":"0475"} +, +{"name":"科尔沁区","adcode":"150502","citycode":"0475"} +, +{"name":"科尔沁左翼中旗","adcode":"150521","citycode":"0475"} +, +{"name":"科尔沁左翼后旗","adcode":"150522","citycode":"0475"} +, +{"name":"开鲁县","adcode":"150523","citycode":"0475"} +, +{"name":"库伦旗","adcode":"150524","citycode":"0475"} +, +{"name":"奈曼旗","adcode":"150525","citycode":"0475"} +, +{"name":"扎鲁特旗","adcode":"150526","citycode":"0475"} +, +{"name":"霍林郭勒市","adcode":"150581","citycode":"0475"} +, +{"name":"鄂尔多斯市","adcode":"150600","citycode":"0477"} +, +{"name":"东胜区","adcode":"150602","citycode":"0477"} +, +{"name":"康巴什区","adcode":"150603","citycode":"0477"} +, +{"name":"达拉特旗","adcode":"150621","citycode":"0477"} +, +{"name":"准格尔旗","adcode":"150622","citycode":"0477"} +, +{"name":"鄂托克前旗","adcode":"150623","citycode":"0477"} +, +{"name":"鄂托克旗","adcode":"150624","citycode":"0477"} +, +{"name":"杭锦旗","adcode":"150625","citycode":"0477"} +, +{"name":"乌审旗","adcode":"150626","citycode":"0477"} +, +{"name":"伊金霍洛旗","adcode":"150627","citycode":"0477"} +, +{"name":"呼伦贝尔市","adcode":"150700","citycode":"0470"} +, +{"name":"海拉尔区","adcode":"150702","citycode":"0470"} +, +{"name":"扎赉诺尔区","adcode":"150703","citycode":"0470"} +, +{"name":"阿荣旗","adcode":"150721","citycode":"0470"} +, +{"name":"莫力达瓦达斡尔族自治旗","adcode":"150722","citycode":"0470"} +, +{"name":"鄂伦春自治旗","adcode":"150723","citycode":"0470"} +, +{"name":"鄂温克族自治旗","adcode":"150724","citycode":"0470"} +, +{"name":"陈巴尔虎旗","adcode":"150725","citycode":"0470"} +, +{"name":"新巴尔虎左旗","adcode":"150726","citycode":"0470"} +, +{"name":"新巴尔虎右旗","adcode":"150727","citycode":"0470"} +, +{"name":"满洲里市","adcode":"150781","citycode":"0470"} +, +{"name":"牙克石市","adcode":"150782","citycode":"0470"} +, +{"name":"扎兰屯市","adcode":"150783","citycode":"0470"} +, +{"name":"额尔古纳市","adcode":"150784","citycode":"0470"} +, +{"name":"根河市","adcode":"150785","citycode":"0470"} +, +{"name":"巴彦淖尔市","adcode":"150800","citycode":"0478"} +, +{"name":"临河区","adcode":"150802","citycode":"0478"} +, +{"name":"五原县","adcode":"150821","citycode":"0478"} +, +{"name":"磴口县","adcode":"150822","citycode":"0478"} +, +{"name":"乌拉特前旗","adcode":"150823","citycode":"0478"} +, +{"name":"乌拉特中旗","adcode":"150824","citycode":"0478"} +, +{"name":"乌拉特后旗","adcode":"150825","citycode":"0478"} +, +{"name":"杭锦后旗","adcode":"150826","citycode":"0478"} +, +{"name":"乌兰察布市","adcode":"150900","citycode":"0474"} +, +{"name":"集宁区","adcode":"150902","citycode":"0474"} +, +{"name":"卓资县","adcode":"150921","citycode":"0474"} +, +{"name":"化德县","adcode":"150922","citycode":"0474"} +, +{"name":"商都县","adcode":"150923","citycode":"0474"} +, +{"name":"兴和县","adcode":"150924","citycode":"0474"} +, +{"name":"凉城县","adcode":"150925","citycode":"0474"} +, +{"name":"察哈尔右翼前旗","adcode":"150926","citycode":"0474"} +, +{"name":"察哈尔右翼中旗","adcode":"150927","citycode":"0474"} +, +{"name":"察哈尔右翼后旗","adcode":"150928","citycode":"0474"} +, +{"name":"四子王旗","adcode":"150929","citycode":"0474"} +, +{"name":"丰镇市","adcode":"150981","citycode":"0474"} +, +{"name":"兴安盟","adcode":"152200","citycode":"0482"} +, +{"name":"乌兰浩特市","adcode":"152201","citycode":"0482"} +, +{"name":"阿尔山市","adcode":"152202","citycode":"0482"} +, +{"name":"科尔沁右翼前旗","adcode":"152221","citycode":"0482"} +, +{"name":"科尔沁右翼中旗","adcode":"152222","citycode":"0482"} +, +{"name":"扎赉特旗","adcode":"152223","citycode":"0482"} +, +{"name":"突泉县","adcode":"152224","citycode":"0482"} +, +{"name":"锡林郭勒盟","adcode":"152500","citycode":"0479"} +, +{"name":"二连浩特市","adcode":"152501","citycode":"0479"} +, +{"name":"锡林浩特市","adcode":"152502","citycode":"0479"} +, +{"name":"阿巴嘎旗","adcode":"152522","citycode":"0479"} +, +{"name":"苏尼特左旗","adcode":"152523","citycode":"0479"} +, +{"name":"苏尼特右旗","adcode":"152524","citycode":"0479"} +, +{"name":"东乌珠穆沁旗","adcode":"152525","citycode":"0479"} +, +{"name":"西乌珠穆沁旗","adcode":"152526","citycode":"0479"} +, +{"name":"太仆寺旗","adcode":"152527","citycode":"0479"} +, +{"name":"镶黄旗","adcode":"152528","citycode":"0479"} +, +{"name":"正镶白旗","adcode":"152529","citycode":"0479"} +, +{"name":"正蓝旗","adcode":"152530","citycode":"0479"} +, +{"name":"多伦县","adcode":"152531","citycode":"0479"} +, +{"name":"阿拉善盟","adcode":"152900","citycode":"0483"} +, +{"name":"阿拉善左旗","adcode":"152921","citycode":"0483"} +, +{"name":"阿拉善右旗","adcode":"152922","citycode":"0483"} +, +{"name":"额济纳旗","adcode":"152923","citycode":"0483"} +, +{"name":"辽宁省","adcode":"210000","citycode":"\\N"} +, +{"name":"沈阳市","adcode":"210100","citycode":"024"} +, +{"name":"和平区","adcode":"210102","citycode":"024"} +, +{"name":"沈河区","adcode":"210103","citycode":"024"} +, +{"name":"大东区","adcode":"210104","citycode":"024"} +, +{"name":"皇姑区","adcode":"210105","citycode":"024"} +, +{"name":"铁西区","adcode":"210106","citycode":"024"} +, +{"name":"苏家屯区","adcode":"210111","citycode":"024"} +, +{"name":"浑南区","adcode":"210112","citycode":"024"} +, +{"name":"沈北新区","adcode":"210113","citycode":"024"} +, +{"name":"于洪区","adcode":"210114","citycode":"024"} +, +{"name":"辽中区","adcode":"210115","citycode":"024"} +, +{"name":"康平县","adcode":"210123","citycode":"024"} +, +{"name":"法库县","adcode":"210124","citycode":"024"} +, +{"name":"新民市","adcode":"210181","citycode":"024"} +, +{"name":"大连市","adcode":"210200","citycode":"0411"} +, +{"name":"中山区","adcode":"210202","citycode":"0411"} +, +{"name":"西岗区","adcode":"210203","citycode":"0411"} +, +{"name":"沙河口区","adcode":"210204","citycode":"0411"} +, +{"name":"甘井子区","adcode":"210211","citycode":"0411"} +, +{"name":"旅顺口区","adcode":"210212","citycode":"0411"} +, +{"name":"金州区","adcode":"210213","citycode":"0411"} +, +{"name":"普兰店区","adcode":"210214","citycode":"0411"} +, +{"name":"长海县","adcode":"210224","citycode":"0411"} +, +{"name":"瓦房店市","adcode":"210281","citycode":"0411"} +, +{"name":"庄河市","adcode":"210283","citycode":"0411"} +, +{"name":"鞍山市","adcode":"210300","citycode":"0412"} +, +{"name":"铁东区","adcode":"210302","citycode":"0412"} +, +{"name":"铁西区","adcode":"210303","citycode":"0412"} +, +{"name":"立山区","adcode":"210304","citycode":"0412"} +, +{"name":"千山区","adcode":"210311","citycode":"0412"} +, +{"name":"台安县","adcode":"210321","citycode":"0412"} +, +{"name":"岫岩满族自治县","adcode":"210323","citycode":"0412"} +, +{"name":"海城市","adcode":"210381","citycode":"0412"} +, +{"name":"抚顺市","adcode":"210400","citycode":"0413"} +, +{"name":"新抚区","adcode":"210402","citycode":"0413"} +, +{"name":"东洲区","adcode":"210403","citycode":"0413"} +, +{"name":"望花区","adcode":"210404","citycode":"0413"} +, +{"name":"顺城区","adcode":"210411","citycode":"0413"} +, +{"name":"抚顺县","adcode":"210421","citycode":"0413"} +, +{"name":"新宾满族自治县","adcode":"210422","citycode":"0413"} +, +{"name":"清原满族自治县","adcode":"210423","citycode":"0413"} +, +{"name":"本溪市","adcode":"210500","citycode":"0414"} +, +{"name":"平山区","adcode":"210502","citycode":"0414"} +, +{"name":"溪湖区","adcode":"210503","citycode":"0414"} +, +{"name":"明山区","adcode":"210504","citycode":"0414"} +, +{"name":"南芬区","adcode":"210505","citycode":"0414"} +, +{"name":"本溪满族自治县","adcode":"210521","citycode":"0414"} +, +{"name":"桓仁满族自治县","adcode":"210522","citycode":"0414"} +, +{"name":"丹东市","adcode":"210600","citycode":"0415"} +, +{"name":"元宝区","adcode":"210602","citycode":"0415"} +, +{"name":"振兴区","adcode":"210603","citycode":"0415"} +, +{"name":"振安区","adcode":"210604","citycode":"0415"} +, +{"name":"宽甸满族自治县","adcode":"210624","citycode":"0415"} +, +{"name":"东港市","adcode":"210681","citycode":"0415"} +, +{"name":"凤城市","adcode":"210682","citycode":"0415"} +, +{"name":"锦州市","adcode":"210700","citycode":"0416"} +, +{"name":"古塔区","adcode":"210702","citycode":"0416"} +, +{"name":"凌河区","adcode":"210703","citycode":"0416"} +, +{"name":"太和区","adcode":"210711","citycode":"0416"} +, +{"name":"黑山县","adcode":"210726","citycode":"0416"} +, +{"name":"义县","adcode":"210727","citycode":"0416"} +, +{"name":"凌海市","adcode":"210781","citycode":"0416"} +, +{"name":"北镇市","adcode":"210782","citycode":"0416"} +, +{"name":"营口市","adcode":"210800","citycode":"0417"} +, +{"name":"站前区","adcode":"210802","citycode":"0417"} +, +{"name":"西市区","adcode":"210803","citycode":"0417"} +, +{"name":"鲅鱼圈区","adcode":"210804","citycode":"0417"} +, +{"name":"老边区","adcode":"210811","citycode":"0417"} +, +{"name":"盖州市","adcode":"210881","citycode":"0417"} +, +{"name":"大石桥市","adcode":"210882","citycode":"0417"} +, +{"name":"阜新市","adcode":"210900","citycode":"0418"} +, +{"name":"海州区","adcode":"210902","citycode":"0418"} +, +{"name":"新邱区","adcode":"210903","citycode":"0418"} +, +{"name":"太平区","adcode":"210904","citycode":"0418"} +, +{"name":"清河门区","adcode":"210905","citycode":"0418"} +, +{"name":"细河区","adcode":"210911","citycode":"0418"} +, +{"name":"阜新蒙古族自治县","adcode":"210921","citycode":"0418"} +, +{"name":"彰武县","adcode":"210922","citycode":"0418"} +, +{"name":"辽阳市","adcode":"211000","citycode":"0419"} +, +{"name":"白塔区","adcode":"211002","citycode":"0419"} +, +{"name":"文圣区","adcode":"211003","citycode":"0419"} +, +{"name":"宏伟区","adcode":"211004","citycode":"0419"} +, +{"name":"弓长岭区","adcode":"211005","citycode":"0419"} +, +{"name":"太子河区","adcode":"211011","citycode":"0419"} +, +{"name":"辽阳县","adcode":"211021","citycode":"0419"} +, +{"name":"灯塔市","adcode":"211081","citycode":"0419"} +, +{"name":"盘锦市","adcode":"211100","citycode":"0427"} +, +{"name":"双台子区","adcode":"211102","citycode":"0427"} +, +{"name":"兴隆台区","adcode":"211103","citycode":"0427"} +, +{"name":"大洼区","adcode":"211104","citycode":"0427"} +, +{"name":"盘山县","adcode":"211122","citycode":"0427"} +, +{"name":"铁岭市","adcode":"211200","citycode":"0410"} +, +{"name":"银州区","adcode":"211202","citycode":"0410"} +, +{"name":"清河区","adcode":"211204","citycode":"0410"} +, +{"name":"铁岭县","adcode":"211221","citycode":"0410"} +, +{"name":"西丰县","adcode":"211223","citycode":"0410"} +, +{"name":"昌图县","adcode":"211224","citycode":"0410"} +, +{"name":"调兵山市","adcode":"211281","citycode":"0410"} +, +{"name":"开原市","adcode":"211282","citycode":"0410"} +, +{"name":"朝阳市","adcode":"211300","citycode":"0421"} +, +{"name":"双塔区","adcode":"211302","citycode":"0421"} +, +{"name":"龙城区","adcode":"211303","citycode":"0421"} +, +{"name":"朝阳县","adcode":"211321","citycode":"0421"} +, +{"name":"建平县","adcode":"211322","citycode":"0421"} +, +{"name":"喀喇沁左翼蒙古族自治县","adcode":"211324","citycode":"0421"} +, +{"name":"北票市","adcode":"211381","citycode":"0421"} +, +{"name":"凌源市","adcode":"211382","citycode":"0421"} +, +{"name":"葫芦岛市","adcode":"211400","citycode":"0429"} +, +{"name":"连山区","adcode":"211402","citycode":"0429"} +, +{"name":"龙港区","adcode":"211403","citycode":"0429"} +, +{"name":"南票区","adcode":"211404","citycode":"0429"} +, +{"name":"绥中县","adcode":"211421","citycode":"0429"} +, +{"name":"建昌县","adcode":"211422","citycode":"0429"} +, +{"name":"兴城市","adcode":"211481","citycode":"0429"} +, +{"name":"吉林省","adcode":"220000","citycode":"\\N"} +, +{"name":"长春市","adcode":"220100","citycode":"0431"} +, +{"name":"南关区","adcode":"220102","citycode":"0431"} +, +{"name":"宽城区","adcode":"220103","citycode":"0431"} +, +{"name":"朝阳区","adcode":"220104","citycode":"0431"} +, +{"name":"二道区","adcode":"220105","citycode":"0431"} +, +{"name":"绿园区","adcode":"220106","citycode":"0431"} +, +{"name":"双阳区","adcode":"220112","citycode":"0431"} +, +{"name":"九台区","adcode":"220113","citycode":"0431"} +, +{"name":"农安县","adcode":"220122","citycode":"0431"} +, +{"name":"榆树市","adcode":"220182","citycode":"0431"} +, +{"name":"德惠市","adcode":"220183","citycode":"0431"} +, +{"name":"公主岭市","adcode":"220184","citycode":"0431"} +, +{"name":"吉林市","adcode":"220200","citycode":"0432"} +, +{"name":"昌邑区","adcode":"220202","citycode":"0432"} +, +{"name":"龙潭区","adcode":"220203","citycode":"0432"} +, +{"name":"船营区","adcode":"220204","citycode":"0432"} +, +{"name":"丰满区","adcode":"220211","citycode":"0432"} +, +{"name":"永吉县","adcode":"220221","citycode":"0432"} +, +{"name":"蛟河市","adcode":"220281","citycode":"0432"} +, +{"name":"桦甸市","adcode":"220282","citycode":"0432"} +, +{"name":"舒兰市","adcode":"220283","citycode":"0432"} +, +{"name":"磐石市","adcode":"220284","citycode":"0432"} +, +{"name":"四平市","adcode":"220300","citycode":"0434"} +, +{"name":"铁西区","adcode":"220302","citycode":"0434"} +, +{"name":"铁东区","adcode":"220303","citycode":"0434"} +, +{"name":"梨树县","adcode":"220322","citycode":"0434"} +, +{"name":"伊通满族自治县","adcode":"220323","citycode":"0434"} +, +{"name":"双辽市","adcode":"220382","citycode":"0434"} +, +{"name":"辽源市","adcode":"220400","citycode":"0437"} +, +{"name":"龙山区","adcode":"220402","citycode":"0437"} +, +{"name":"西安区","adcode":"220403","citycode":"0437"} +, +{"name":"东丰县","adcode":"220421","citycode":"0437"} +, +{"name":"东辽县","adcode":"220422","citycode":"0437"} +, +{"name":"通化市","adcode":"220500","citycode":"0435"} +, +{"name":"东昌区","adcode":"220502","citycode":"0435"} +, +{"name":"二道江区","adcode":"220503","citycode":"0435"} +, +{"name":"通化县","adcode":"220521","citycode":"0435"} +, +{"name":"辉南县","adcode":"220523","citycode":"0435"} +, +{"name":"柳河县","adcode":"220524","citycode":"0435"} +, +{"name":"梅河口市","adcode":"220581","citycode":"0435"} +, +{"name":"集安市","adcode":"220582","citycode":"0435"} +, +{"name":"白山市","adcode":"220600","citycode":"0439"} +, +{"name":"浑江区","adcode":"220602","citycode":"0439"} +, +{"name":"江源区","adcode":"220605","citycode":"0439"} +, +{"name":"抚松县","adcode":"220621","citycode":"0439"} +, +{"name":"靖宇县","adcode":"220622","citycode":"0439"} +, +{"name":"长白朝鲜族自治县","adcode":"220623","citycode":"0439"} +, +{"name":"临江市","adcode":"220681","citycode":"0439"} +, +{"name":"松原市","adcode":"220700","citycode":"0438"} +, +{"name":"宁江区","adcode":"220702","citycode":"0438"} +, +{"name":"前郭尔罗斯蒙古族自治县","adcode":"220721","citycode":"0438"} +, +{"name":"长岭县","adcode":"220722","citycode":"0438"} +, +{"name":"乾安县","adcode":"220723","citycode":"0438"} +, +{"name":"扶余市","adcode":"220781","citycode":"0438"} +, +{"name":"白城市","adcode":"220800","citycode":"0436"} +, +{"name":"洮北区","adcode":"220802","citycode":"0436"} +, +{"name":"镇赉县","adcode":"220821","citycode":"0436"} +, +{"name":"通榆县","adcode":"220822","citycode":"0436"} +, +{"name":"洮南市","adcode":"220881","citycode":"0436"} +, +{"name":"大安市","adcode":"220882","citycode":"0436"} +, +{"name":"延边朝鲜族自治州","adcode":"222400","citycode":"1433"} +, +{"name":"延吉市","adcode":"222401","citycode":"1433"} +, +{"name":"图们市","adcode":"222402","citycode":"1433"} +, +{"name":"敦化市","adcode":"222403","citycode":"1433"} +, +{"name":"珲春市","adcode":"222404","citycode":"1433"} +, +{"name":"龙井市","adcode":"222405","citycode":"1433"} +, +{"name":"和龙市","adcode":"222406","citycode":"1433"} +, +{"name":"汪清县","adcode":"222424","citycode":"1433"} +, +{"name":"安图县","adcode":"222426","citycode":"1433"} +, +{"name":"黑龙江省","adcode":"230000","citycode":"\\N"} +, +{"name":"哈尔滨市","adcode":"230100","citycode":"0451"} +, +{"name":"道里区","adcode":"230102","citycode":"0451"} +, +{"name":"南岗区","adcode":"230103","citycode":"0451"} +, +{"name":"道外区","adcode":"230104","citycode":"0451"} +, +{"name":"平房区","adcode":"230108","citycode":"0451"} +, +{"name":"松北区","adcode":"230109","citycode":"0451"} +, +{"name":"香坊区","adcode":"230110","citycode":"0451"} +, +{"name":"呼兰区","adcode":"230111","citycode":"0451"} +, +{"name":"阿城区","adcode":"230112","citycode":"0451"} +, +{"name":"双城区","adcode":"230113","citycode":"0451"} +, +{"name":"依兰县","adcode":"230123","citycode":"0451"} +, +{"name":"方正县","adcode":"230124","citycode":"0451"} +, +{"name":"宾县","adcode":"230125","citycode":"0451"} +, +{"name":"巴彦县","adcode":"230126","citycode":"0451"} +, +{"name":"木兰县","adcode":"230127","citycode":"0451"} +, +{"name":"通河县","adcode":"230128","citycode":"0451"} +, +{"name":"延寿县","adcode":"230129","citycode":"0451"} +, +{"name":"尚志市","adcode":"230183","citycode":"0451"} +, +{"name":"五常市","adcode":"230184","citycode":"0451"} +, +{"name":"齐齐哈尔市","adcode":"230200","citycode":"0452"} +, +{"name":"龙沙区","adcode":"230202","citycode":"0452"} +, +{"name":"建华区","adcode":"230203","citycode":"0452"} +, +{"name":"铁锋区","adcode":"230204","citycode":"0452"} +, +{"name":"昂昂溪区","adcode":"230205","citycode":"0452"} +, +{"name":"富拉尔基区","adcode":"230206","citycode":"0452"} +, +{"name":"碾子山区","adcode":"230207","citycode":"0452"} +, +{"name":"梅里斯达斡尔族区","adcode":"230208","citycode":"0452"} +, +{"name":"龙江县","adcode":"230221","citycode":"0452"} +, +{"name":"依安县","adcode":"230223","citycode":"0452"} +, +{"name":"泰来县","adcode":"230224","citycode":"0452"} +, +{"name":"甘南县","adcode":"230225","citycode":"0452"} +, +{"name":"富裕县","adcode":"230227","citycode":"0452"} +, +{"name":"克山县","adcode":"230229","citycode":"0452"} +, +{"name":"克东县","adcode":"230230","citycode":"0452"} +, +{"name":"拜泉县","adcode":"230231","citycode":"0452"} +, +{"name":"讷河市","adcode":"230281","citycode":"0452"} +, +{"name":"鸡西市","adcode":"230300","citycode":"0467"} +, +{"name":"鸡冠区","adcode":"230302","citycode":"0467"} +, +{"name":"恒山区","adcode":"230303","citycode":"0467"} +, +{"name":"滴道区","adcode":"230304","citycode":"0467"} +, +{"name":"梨树区","adcode":"230305","citycode":"0467"} +, +{"name":"城子河区","adcode":"230306","citycode":"0467"} +, +{"name":"麻山区","adcode":"230307","citycode":"0467"} +, +{"name":"鸡东县","adcode":"230321","citycode":"0467"} +, +{"name":"虎林市","adcode":"230381","citycode":"0467"} +, +{"name":"密山市","adcode":"230382","citycode":"0467"} +, +{"name":"鹤岗市","adcode":"230400","citycode":"0468"} +, +{"name":"向阳区","adcode":"230402","citycode":"0468"} +, +{"name":"工农区","adcode":"230403","citycode":"0468"} +, +{"name":"南山区","adcode":"230404","citycode":"0468"} +, +{"name":"兴安区","adcode":"230405","citycode":"0468"} +, +{"name":"东山区","adcode":"230406","citycode":"0468"} +, +{"name":"兴山区","adcode":"230407","citycode":"0468"} +, +{"name":"萝北县","adcode":"230421","citycode":"0468"} +, +{"name":"绥滨县","adcode":"230422","citycode":"0468"} +, +{"name":"双鸭山市","adcode":"230500","citycode":"0469"} +, +{"name":"尖山区","adcode":"230502","citycode":"0469"} +, +{"name":"岭东区","adcode":"230503","citycode":"0469"} +, +{"name":"四方台区","adcode":"230505","citycode":"0469"} +, +{"name":"宝山区","adcode":"230506","citycode":"0469"} +, +{"name":"集贤县","adcode":"230521","citycode":"0469"} +, +{"name":"友谊县","adcode":"230522","citycode":"0469"} +, +{"name":"宝清县","adcode":"230523","citycode":"0469"} +, +{"name":"饶河县","adcode":"230524","citycode":"0469"} +, +{"name":"大庆市","adcode":"230600","citycode":"0459"} +, +{"name":"萨尔图区","adcode":"230602","citycode":"0459"} +, +{"name":"龙凤区","adcode":"230603","citycode":"0459"} +, +{"name":"让胡路区","adcode":"230604","citycode":"0459"} +, +{"name":"红岗区","adcode":"230605","citycode":"0459"} +, +{"name":"大同区","adcode":"230606","citycode":"0459"} +, +{"name":"肇州县","adcode":"230621","citycode":"0459"} +, +{"name":"肇源县","adcode":"230622","citycode":"0459"} +, +{"name":"林甸县","adcode":"230623","citycode":"0459"} +, +{"name":"杜尔伯特蒙古族自治县","adcode":"230624","citycode":"0459"} +, +{"name":"伊春市","adcode":"230700","citycode":"0458"} +, +{"name":"伊美区","adcode":"230717","citycode":"0458"} +, +{"name":"乌翠区","adcode":"230718","citycode":"0458"} +, +{"name":"友好区","adcode":"230719","citycode":"0458"} +, +{"name":"嘉荫县","adcode":"230722","citycode":"0458"} +, +{"name":"汤旺县","adcode":"230723","citycode":"0458"} +, +{"name":"丰林县","adcode":"230724","citycode":"0458"} +, +{"name":"大箐山县","adcode":"230725","citycode":"0458"} +, +{"name":"南岔县","adcode":"230726","citycode":"0458"} +, +{"name":"金林区","adcode":"230751","citycode":"0458"} +, +{"name":"铁力市","adcode":"230781","citycode":"0458"} +, +{"name":"佳木斯市","adcode":"230800","citycode":"0454"} +, +{"name":"向阳区","adcode":"230803","citycode":"0454"} +, +{"name":"前进区","adcode":"230804","citycode":"0454"} +, +{"name":"东风区","adcode":"230805","citycode":"0454"} +, +{"name":"郊区","adcode":"230811","citycode":"0454"} +, +{"name":"桦南县","adcode":"230822","citycode":"0454"} +, +{"name":"桦川县","adcode":"230826","citycode":"0454"} +, +{"name":"汤原县","adcode":"230828","citycode":"0454"} +, +{"name":"同江市","adcode":"230881","citycode":"0454"} +, +{"name":"富锦市","adcode":"230882","citycode":"0454"} +, +{"name":"抚远市","adcode":"230883","citycode":"0454"} +, +{"name":"七台河市","adcode":"230900","citycode":"0464"} +, +{"name":"新兴区","adcode":"230902","citycode":"0464"} +, +{"name":"桃山区","adcode":"230903","citycode":"0464"} +, +{"name":"茄子河区","adcode":"230904","citycode":"0464"} +, +{"name":"勃利县","adcode":"230921","citycode":"0464"} +, +{"name":"牡丹江市","adcode":"231000","citycode":"0453"} +, +{"name":"东安区","adcode":"231002","citycode":"0453"} +, +{"name":"阳明区","adcode":"231003","citycode":"0453"} +, +{"name":"爱民区","adcode":"231004","citycode":"0453"} +, +{"name":"西安区","adcode":"231005","citycode":"0453"} +, +{"name":"林口县","adcode":"231025","citycode":"0453"} +, +{"name":"绥芬河市","adcode":"231081","citycode":"0453"} +, +{"name":"海林市","adcode":"231083","citycode":"0453"} +, +{"name":"宁安市","adcode":"231084","citycode":"0453"} +, +{"name":"穆棱市","adcode":"231085","citycode":"0453"} +, +{"name":"东宁市","adcode":"231086","citycode":"0453"} +, +{"name":"黑河市","adcode":"231100","citycode":"0456"} +, +{"name":"爱辉区","adcode":"231102","citycode":"0456"} +, +{"name":"逊克县","adcode":"231123","citycode":"0456"} +, +{"name":"孙吴县","adcode":"231124","citycode":"0456"} +, +{"name":"北安市","adcode":"231181","citycode":"0456"} +, +{"name":"五大连池市","adcode":"231182","citycode":"0456"} +, +{"name":"嫩江市","adcode":"231183","citycode":"0456"} +, +{"name":"绥化市","adcode":"231200","citycode":"0455"} +, +{"name":"北林区","adcode":"231202","citycode":"0455"} +, +{"name":"望奎县","adcode":"231221","citycode":"0455"} +, +{"name":"兰西县","adcode":"231222","citycode":"0455"} +, +{"name":"青冈县","adcode":"231223","citycode":"0455"} +, +{"name":"庆安县","adcode":"231224","citycode":"0455"} +, +{"name":"明水县","adcode":"231225","citycode":"0455"} +, +{"name":"绥棱县","adcode":"231226","citycode":"0455"} +, +{"name":"安达市","adcode":"231281","citycode":"0455"} +, +{"name":"肇东市","adcode":"231282","citycode":"0455"} +, +{"name":"海伦市","adcode":"231283","citycode":"0455"} +, +{"name":"大兴安岭地区","adcode":"232700","citycode":"0457"} +, +{"name":"漠河市","adcode":"232701","citycode":"0457"} +, +{"name":"加格达奇区","adcode":"232718","citycode":"0457"} +, +{"name":"呼玛县","adcode":"232721","citycode":"0457"} +, +{"name":"塔河县","adcode":"232722","citycode":"0457"} +, +{"name":"上海市","adcode":"310000","citycode":"021"} +, +{"name":"黄浦区","adcode":"310101","citycode":"021"} +, +{"name":"徐汇区","adcode":"310104","citycode":"021"} +, +{"name":"长宁区","adcode":"310105","citycode":"021"} +, +{"name":"静安区","adcode":"310106","citycode":"021"} +, +{"name":"普陀区","adcode":"310107","citycode":"021"} +, +{"name":"虹口区","adcode":"310109","citycode":"021"} +, +{"name":"杨浦区","adcode":"310110","citycode":"021"} +, +{"name":"闵行区","adcode":"310112","citycode":"021"} +, +{"name":"宝山区","adcode":"310113","citycode":"021"} +, +{"name":"嘉定区","adcode":"310114","citycode":"021"} +, +{"name":"浦东新区","adcode":"310115","citycode":"021"} +, +{"name":"金山区","adcode":"310116","citycode":"021"} +, +{"name":"松江区","adcode":"310117","citycode":"021"} +, +{"name":"青浦区","adcode":"310118","citycode":"021"} +, +{"name":"奉贤区","adcode":"310120","citycode":"021"} +, +{"name":"崇明区","adcode":"310151","citycode":"021"} +, +{"name":"江苏省","adcode":"320000","citycode":"\\N"} +, +{"name":"南京市","adcode":"320100","citycode":"025"} +, +{"name":"玄武区","adcode":"320102","citycode":"025"} +, +{"name":"秦淮区","adcode":"320104","citycode":"025"} +, +{"name":"建邺区","adcode":"320105","citycode":"025"} +, +{"name":"鼓楼区","adcode":"320106","citycode":"025"} +, +{"name":"浦口区","adcode":"320111","citycode":"025"} +, +{"name":"栖霞区","adcode":"320113","citycode":"025"} +, +{"name":"雨花台区","adcode":"320114","citycode":"025"} +, +{"name":"江宁区","adcode":"320115","citycode":"025"} +, +{"name":"六合区","adcode":"320116","citycode":"025"} +, +{"name":"溧水区","adcode":"320117","citycode":"025"} +, +{"name":"高淳区","adcode":"320118","citycode":"025"} +, +{"name":"无锡市","adcode":"320200","citycode":"0510"} +, +{"name":"锡山区","adcode":"320205","citycode":"0510"} +, +{"name":"惠山区","adcode":"320206","citycode":"0510"} +, +{"name":"滨湖区","adcode":"320211","citycode":"0510"} +, +{"name":"梁溪区","adcode":"320213","citycode":"0510"} +, +{"name":"新吴区","adcode":"320214","citycode":"0510"} +, +{"name":"江阴市","adcode":"320281","citycode":"0510"} +, +{"name":"宜兴市","adcode":"320282","citycode":"0510"} +, +{"name":"徐州市","adcode":"320300","citycode":"0516"} +, +{"name":"鼓楼区","adcode":"320302","citycode":"0516"} +, +{"name":"云龙区","adcode":"320303","citycode":"0516"} +, +{"name":"贾汪区","adcode":"320305","citycode":"0516"} +, +{"name":"泉山区","adcode":"320311","citycode":"0516"} +, +{"name":"铜山区","adcode":"320312","citycode":"0516"} +, +{"name":"丰县","adcode":"320321","citycode":"0516"} +, +{"name":"沛县","adcode":"320322","citycode":"0516"} +, +{"name":"睢宁县","adcode":"320324","citycode":"0516"} +, +{"name":"新沂市","adcode":"320381","citycode":"0516"} +, +{"name":"邳州市","adcode":"320382","citycode":"0516"} +, +{"name":"常州市","adcode":"320400","citycode":"0519"} +, +{"name":"天宁区","adcode":"320402","citycode":"0519"} +, +{"name":"钟楼区","adcode":"320404","citycode":"0519"} +, +{"name":"新北区","adcode":"320411","citycode":"0519"} +, +{"name":"武进区","adcode":"320412","citycode":"0519"} +, +{"name":"金坛区","adcode":"320413","citycode":"0519"} +, +{"name":"溧阳市","adcode":"320481","citycode":"0519"} +, +{"name":"苏州市","adcode":"320500","citycode":"0512"} +, +{"name":"虎丘区","adcode":"320505","citycode":"0512"} +, +{"name":"吴中区","adcode":"320506","citycode":"0512"} +, +{"name":"相城区","adcode":"320507","citycode":"0512"} +, +{"name":"姑苏区","adcode":"320508","citycode":"0512"} +, +{"name":"吴江区","adcode":"320509","citycode":"0512"} +, +{"name":"常熟市","adcode":"320581","citycode":"0512"} +, +{"name":"张家港市","adcode":"320582","citycode":"0512"} +, +{"name":"昆山市","adcode":"320583","citycode":"0512"} +, +{"name":"太仓市","adcode":"320585","citycode":"0512"} +, +{"name":"南通市","adcode":"320600","citycode":"0513"} +, +{"name":"通州区","adcode":"320612","citycode":"0513"} +, +{"name":"崇川区","adcode":"320613","citycode":"0513"} +, +{"name":"海门区","adcode":"320614","citycode":"0513"} +, +{"name":"如东县","adcode":"320623","citycode":"0513"} +, +{"name":"启东市","adcode":"320681","citycode":"0513"} +, +{"name":"如皋市","adcode":"320682","citycode":"0513"} +, +{"name":"海安市","adcode":"320685","citycode":"0513"} +, +{"name":"连云港市","adcode":"320700","citycode":"0518"} +, +{"name":"连云区","adcode":"320703","citycode":"0518"} +, +{"name":"海州区","adcode":"320706","citycode":"0518"} +, +{"name":"赣榆区","adcode":"320707","citycode":"0518"} +, +{"name":"东海县","adcode":"320722","citycode":"0518"} +, +{"name":"灌云县","adcode":"320723","citycode":"0518"} +, +{"name":"灌南县","adcode":"320724","citycode":"0518"} +, +{"name":"淮安市","adcode":"320800","citycode":"0517"} +, +{"name":"淮安区","adcode":"320803","citycode":"0517"} +, +{"name":"淮阴区","adcode":"320804","citycode":"0517"} +, +{"name":"清江浦区","adcode":"320812","citycode":"0517"} +, +{"name":"洪泽区","adcode":"320813","citycode":"0517"} +, +{"name":"涟水县","adcode":"320826","citycode":"0517"} +, +{"name":"盱眙县","adcode":"320830","citycode":"0517"} +, +{"name":"金湖县","adcode":"320831","citycode":"0517"} +, +{"name":"盐城市","adcode":"320900","citycode":"0515"} +, +{"name":"亭湖区","adcode":"320902","citycode":"0515"} +, +{"name":"盐都区","adcode":"320903","citycode":"0515"} +, +{"name":"大丰区","adcode":"320904","citycode":"0515"} +, +{"name":"响水县","adcode":"320921","citycode":"0515"} +, +{"name":"滨海县","adcode":"320922","citycode":"0515"} +, +{"name":"阜宁县","adcode":"320923","citycode":"0515"} +, +{"name":"射阳县","adcode":"320924","citycode":"0515"} +, +{"name":"建湖县","adcode":"320925","citycode":"0515"} +, +{"name":"东台市","adcode":"320981","citycode":"0515"} +, +{"name":"扬州市","adcode":"321000","citycode":"0514"} +, +{"name":"广陵区","adcode":"321002","citycode":"0514"} +, +{"name":"邗江区","adcode":"321003","citycode":"0514"} +, +{"name":"江都区","adcode":"321012","citycode":"0514"} +, +{"name":"宝应县","adcode":"321023","citycode":"0514"} +, +{"name":"仪征市","adcode":"321081","citycode":"0514"} +, +{"name":"高邮市","adcode":"321084","citycode":"0514"} +, +{"name":"镇江市","adcode":"321100","citycode":"0511"} +, +{"name":"京口区","adcode":"321102","citycode":"0511"} +, +{"name":"润州区","adcode":"321111","citycode":"0511"} +, +{"name":"丹徒区","adcode":"321112","citycode":"0511"} +, +{"name":"丹阳市","adcode":"321181","citycode":"0511"} +, +{"name":"扬中市","adcode":"321182","citycode":"0511"} +, +{"name":"句容市","adcode":"321183","citycode":"0511"} +, +{"name":"泰州市","adcode":"321200","citycode":"0523"} +, +{"name":"海陵区","adcode":"321202","citycode":"0523"} +, +{"name":"高港区","adcode":"321203","citycode":"0523"} +, +{"name":"姜堰区","adcode":"321204","citycode":"0523"} +, +{"name":"兴化市","adcode":"321281","citycode":"0523"} +, +{"name":"靖江市","adcode":"321282","citycode":"0523"} +, +{"name":"泰兴市","adcode":"321283","citycode":"0523"} +, +{"name":"宿迁市","adcode":"321300","citycode":"0527"} +, +{"name":"宿城区","adcode":"321302","citycode":"0527"} +, +{"name":"宿豫区","adcode":"321311","citycode":"0527"} +, +{"name":"沭阳县","adcode":"321322","citycode":"0527"} +, +{"name":"泗阳县","adcode":"321323","citycode":"0527"} +, +{"name":"泗洪县","adcode":"321324","citycode":"0527"} +, +{"name":"浙江省","adcode":"330000","citycode":"\\N"} +, +{"name":"杭州市","adcode":"330100","citycode":"0571"} +, +{"name":"上城区","adcode":"330102","citycode":"0571"} +, +{"name":"拱墅区","adcode":"330105","citycode":"0571"} +, +{"name":"西湖区","adcode":"330106","citycode":"0571"} +, +{"name":"滨江区","adcode":"330108","citycode":"0571"} +, +{"name":"萧山区","adcode":"330109","citycode":"0571"} +, +{"name":"余杭区","adcode":"330110","citycode":"0571"} +, +{"name":"富阳区","adcode":"330111","citycode":"0571"} +, +{"name":"临安区","adcode":"330112","citycode":"0571"} +, +{"name":"临平区","adcode":"330113","citycode":"0571"} +, +{"name":"钱塘区","adcode":"330114","citycode":"0571"} +, +{"name":"桐庐县","adcode":"330122","citycode":"0571"} +, +{"name":"淳安县","adcode":"330127","citycode":"0571"} +, +{"name":"建德市","adcode":"330182","citycode":"0571"} +, +{"name":"宁波市","adcode":"330200","citycode":"0574"} +, +{"name":"海曙区","adcode":"330203","citycode":"0574"} +, +{"name":"江北区","adcode":"330205","citycode":"0574"} +, +{"name":"北仑区","adcode":"330206","citycode":"0574"} +, +{"name":"镇海区","adcode":"330211","citycode":"0574"} +, +{"name":"鄞州区","adcode":"330212","citycode":"0574"} +, +{"name":"奉化区","adcode":"330213","citycode":"0574"} +, +{"name":"象山县","adcode":"330225","citycode":"0574"} +, +{"name":"宁海县","adcode":"330226","citycode":"0574"} +, +{"name":"余姚市","adcode":"330281","citycode":"0574"} +, +{"name":"慈溪市","adcode":"330282","citycode":"0574"} +, +{"name":"温州市","adcode":"330300","citycode":"0577"} +, +{"name":"鹿城区","adcode":"330302","citycode":"0577"} +, +{"name":"龙湾区","adcode":"330303","citycode":"0577"} +, +{"name":"瓯海区","adcode":"330304","citycode":"0577"} +, +{"name":"洞头区","adcode":"330305","citycode":"0577"} +, +{"name":"永嘉县","adcode":"330324","citycode":"0577"} +, +{"name":"平阳县","adcode":"330326","citycode":"0577"} +, +{"name":"苍南县","adcode":"330327","citycode":"0577"} +, +{"name":"文成县","adcode":"330328","citycode":"0577"} +, +{"name":"泰顺县","adcode":"330329","citycode":"0577"} +, +{"name":"瑞安市","adcode":"330381","citycode":"0577"} +, +{"name":"乐清市","adcode":"330382","citycode":"0577"} +, +{"name":"龙港市","adcode":"330383","citycode":"0577"} +, +{"name":"嘉兴市","adcode":"330400","citycode":"0573"} +, +{"name":"南湖区","adcode":"330402","citycode":"0573"} +, +{"name":"秀洲区","adcode":"330411","citycode":"0573"} +, +{"name":"嘉善县","adcode":"330421","citycode":"0573"} +, +{"name":"海盐县","adcode":"330424","citycode":"0573"} +, +{"name":"海宁市","adcode":"330481","citycode":"0573"} +, +{"name":"平湖市","adcode":"330482","citycode":"0573"} +, +{"name":"桐乡市","adcode":"330483","citycode":"0573"} +, +{"name":"湖州市","adcode":"330500","citycode":"0572"} +, +{"name":"吴兴区","adcode":"330502","citycode":"0572"} +, +{"name":"南浔区","adcode":"330503","citycode":"0572"} +, +{"name":"德清县","adcode":"330521","citycode":"0572"} +, +{"name":"长兴县","adcode":"330522","citycode":"0572"} +, +{"name":"安吉县","adcode":"330523","citycode":"0572"} +, +{"name":"绍兴市","adcode":"330600","citycode":"0575"} +, +{"name":"越城区","adcode":"330602","citycode":"0575"} +, +{"name":"柯桥区","adcode":"330603","citycode":"0575"} +, +{"name":"上虞区","adcode":"330604","citycode":"0575"} +, +{"name":"新昌县","adcode":"330624","citycode":"0575"} +, +{"name":"诸暨市","adcode":"330681","citycode":"0575"} +, +{"name":"嵊州市","adcode":"330683","citycode":"0575"} +, +{"name":"金华市","adcode":"330700","citycode":"0579"} +, +{"name":"婺城区","adcode":"330702","citycode":"0579"} +, +{"name":"金东区","adcode":"330703","citycode":"0579"} +, +{"name":"武义县","adcode":"330723","citycode":"0579"} +, +{"name":"浦江县","adcode":"330726","citycode":"0579"} +, +{"name":"磐安县","adcode":"330727","citycode":"0579"} +, +{"name":"兰溪市","adcode":"330781","citycode":"0579"} +, +{"name":"义乌市","adcode":"330782","citycode":"0579"} +, +{"name":"东阳市","adcode":"330783","citycode":"0579"} +, +{"name":"永康市","adcode":"330784","citycode":"0579"} +, +{"name":"衢州市","adcode":"330800","citycode":"0570"} +, +{"name":"柯城区","adcode":"330802","citycode":"0570"} +, +{"name":"衢江区","adcode":"330803","citycode":"0570"} +, +{"name":"常山县","adcode":"330822","citycode":"0570"} +, +{"name":"开化县","adcode":"330824","citycode":"0570"} +, +{"name":"龙游县","adcode":"330825","citycode":"0570"} +, +{"name":"江山市","adcode":"330881","citycode":"0570"} +, +{"name":"舟山市","adcode":"330900","citycode":"0580"} +, +{"name":"定海区","adcode":"330902","citycode":"0580"} +, +{"name":"普陀区","adcode":"330903","citycode":"0580"} +, +{"name":"岱山县","adcode":"330921","citycode":"0580"} +, +{"name":"嵊泗县","adcode":"330922","citycode":"0580"} +, +{"name":"台州市","adcode":"331000","citycode":"0576"} +, +{"name":"椒江区","adcode":"331002","citycode":"0576"} +, +{"name":"黄岩区","adcode":"331003","citycode":"0576"} +, +{"name":"路桥区","adcode":"331004","citycode":"0576"} +, +{"name":"三门县","adcode":"331022","citycode":"0576"} +, +{"name":"天台县","adcode":"331023","citycode":"0576"} +, +{"name":"仙居县","adcode":"331024","citycode":"0576"} +, +{"name":"温岭市","adcode":"331081","citycode":"0576"} +, +{"name":"临海市","adcode":"331082","citycode":"0576"} +, +{"name":"玉环市","adcode":"331083","citycode":"0576"} +, +{"name":"丽水市","adcode":"331100","citycode":"0578"} +, +{"name":"莲都区","adcode":"331102","citycode":"0578"} +, +{"name":"青田县","adcode":"331121","citycode":"0578"} +, +{"name":"缙云县","adcode":"331122","citycode":"0578"} +, +{"name":"遂昌县","adcode":"331123","citycode":"0578"} +, +{"name":"松阳县","adcode":"331124","citycode":"0578"} +, +{"name":"云和县","adcode":"331125","citycode":"0578"} +, +{"name":"庆元县","adcode":"331126","citycode":"0578"} +, +{"name":"景宁畲族自治县","adcode":"331127","citycode":"0578"} +, +{"name":"龙泉市","adcode":"331181","citycode":"0578"} +, +{"name":"安徽省","adcode":"340000","citycode":"\\N"} +, +{"name":"合肥市","adcode":"340100","citycode":"0551"} +, +{"name":"瑶海区","adcode":"340102","citycode":"0551"} +, +{"name":"庐阳区","adcode":"340103","citycode":"0551"} +, +{"name":"蜀山区","adcode":"340104","citycode":"0551"} +, +{"name":"包河区","adcode":"340111","citycode":"0551"} +, +{"name":"长丰县","adcode":"340121","citycode":"0551"} +, +{"name":"肥东县","adcode":"340122","citycode":"0551"} +, +{"name":"肥西县","adcode":"340123","citycode":"0551"} +, +{"name":"庐江县","adcode":"340124","citycode":"0551"} +, +{"name":"巢湖市","adcode":"340181","citycode":"0551"} +, +{"name":"芜湖市","adcode":"340200","citycode":"0553"} +, +{"name":"镜湖区","adcode":"340202","citycode":"0553"} +, +{"name":"鸠江区","adcode":"340207","citycode":"0553"} +, +{"name":"弋江区","adcode":"340209","citycode":"0553"} +, +{"name":"湾沚区","adcode":"340210","citycode":"0553"} +, +{"name":"繁昌区","adcode":"340212","citycode":"0553"} +, +{"name":"南陵县","adcode":"340223","citycode":"0553"} +, +{"name":"无为市","adcode":"340281","citycode":"0553"} +, +{"name":"蚌埠市","adcode":"340300","citycode":"0552"} +, +{"name":"龙子湖区","adcode":"340302","citycode":"0552"} +, +{"name":"蚌山区","adcode":"340303","citycode":"0552"} +, +{"name":"禹会区","adcode":"340304","citycode":"0552"} +, +{"name":"淮上区","adcode":"340311","citycode":"0552"} +, +{"name":"怀远县","adcode":"340321","citycode":"0552"} +, +{"name":"五河县","adcode":"340322","citycode":"0552"} +, +{"name":"固镇县","adcode":"340323","citycode":"0552"} +, +{"name":"淮南市","adcode":"340400","citycode":"0554"} +, +{"name":"大通区","adcode":"340402","citycode":"0554"} +, +{"name":"田家庵区","adcode":"340403","citycode":"0554"} +, +{"name":"谢家集区","adcode":"340404","citycode":"0554"} +, +{"name":"八公山区","adcode":"340405","citycode":"0554"} +, +{"name":"潘集区","adcode":"340406","citycode":"0554"} +, +{"name":"凤台县","adcode":"340421","citycode":"0554"} +, +{"name":"寿县","adcode":"340422","citycode":"0554"} +, +{"name":"马鞍山市","adcode":"340500","citycode":"0555"} +, +{"name":"花山区","adcode":"340503","citycode":"0555"} +, +{"name":"雨山区","adcode":"340504","citycode":"0555"} +, +{"name":"博望区","adcode":"340506","citycode":"0555"} +, +{"name":"当涂县","adcode":"340521","citycode":"0555"} +, +{"name":"含山县","adcode":"340522","citycode":"0555"} +, +{"name":"和县","adcode":"340523","citycode":"0555"} +, +{"name":"淮北市","adcode":"340600","citycode":"0561"} +, +{"name":"杜集区","adcode":"340602","citycode":"0561"} +, +{"name":"相山区","adcode":"340603","citycode":"0561"} +, +{"name":"烈山区","adcode":"340604","citycode":"0561"} +, +{"name":"濉溪县","adcode":"340621","citycode":"0561"} +, +{"name":"铜陵市","adcode":"340700","citycode":"0562"} +, +{"name":"铜官区","adcode":"340705","citycode":"0562"} +, +{"name":"义安区","adcode":"340706","citycode":"0562"} +, +{"name":"郊区","adcode":"340711","citycode":"0562"} +, +{"name":"枞阳县","adcode":"340722","citycode":"0562"} +, +{"name":"安庆市","adcode":"340800","citycode":"0556"} +, +{"name":"迎江区","adcode":"340802","citycode":"0556"} +, +{"name":"大观区","adcode":"340803","citycode":"0556"} +, +{"name":"宜秀区","adcode":"340811","citycode":"0556"} +, +{"name":"怀宁县","adcode":"340822","citycode":"0556"} +, +{"name":"太湖县","adcode":"340825","citycode":"0556"} +, +{"name":"宿松县","adcode":"340826","citycode":"0556"} +, +{"name":"望江县","adcode":"340827","citycode":"0556"} +, +{"name":"岳西县","adcode":"340828","citycode":"0556"} +, +{"name":"桐城市","adcode":"340881","citycode":"0556"} +, +{"name":"潜山市","adcode":"340882","citycode":"0556"} +, +{"name":"黄山市","adcode":"341000","citycode":"0559"} +, +{"name":"屯溪区","adcode":"341002","citycode":"0559"} +, +{"name":"黄山区","adcode":"341003","citycode":"0559"} +, +{"name":"徽州区","adcode":"341004","citycode":"0559"} +, +{"name":"歙县","adcode":"341021","citycode":"0559"} +, +{"name":"休宁县","adcode":"341022","citycode":"0559"} +, +{"name":"黟县","adcode":"341023","citycode":"0559"} +, +{"name":"祁门县","adcode":"341024","citycode":"0559"} +, +{"name":"滁州市","adcode":"341100","citycode":"0550"} +, +{"name":"琅琊区","adcode":"341102","citycode":"0550"} +, +{"name":"南谯区","adcode":"341103","citycode":"0550"} +, +{"name":"来安县","adcode":"341122","citycode":"0550"} +, +{"name":"全椒县","adcode":"341124","citycode":"0550"} +, +{"name":"定远县","adcode":"341125","citycode":"0550"} +, +{"name":"凤阳县","adcode":"341126","citycode":"0550"} +, +{"name":"天长市","adcode":"341181","citycode":"0550"} +, +{"name":"明光市","adcode":"341182","citycode":"0550"} +, +{"name":"阜阳市","adcode":"341200","citycode":"1558"} +, +{"name":"颍州区","adcode":"341202","citycode":"1558"} +, +{"name":"颍东区","adcode":"341203","citycode":"1558"} +, +{"name":"颍泉区","adcode":"341204","citycode":"1558"} +, +{"name":"临泉县","adcode":"341221","citycode":"1558"} +, +{"name":"太和县","adcode":"341222","citycode":"1558"} +, +{"name":"阜南县","adcode":"341225","citycode":"1558"} +, +{"name":"颍上县","adcode":"341226","citycode":"1558"} +, +{"name":"界首市","adcode":"341282","citycode":"1558"} +, +{"name":"宿州市","adcode":"341300","citycode":"0557"} +, +{"name":"埇桥区","adcode":"341302","citycode":"0557"} +, +{"name":"砀山县","adcode":"341321","citycode":"0557"} +, +{"name":"萧县","adcode":"341322","citycode":"0557"} +, +{"name":"灵璧县","adcode":"341323","citycode":"0557"} +, +{"name":"泗县","adcode":"341324","citycode":"0557"} +, +{"name":"六安市","adcode":"341500","citycode":"0564"} +, +{"name":"金安区","adcode":"341502","citycode":"0564"} +, +{"name":"裕安区","adcode":"341503","citycode":"0564"} +, +{"name":"叶集区","adcode":"341504","citycode":"0564"} +, +{"name":"霍邱县","adcode":"341522","citycode":"0564"} +, +{"name":"舒城县","adcode":"341523","citycode":"0564"} +, +{"name":"金寨县","adcode":"341524","citycode":"0564"} +, +{"name":"霍山县","adcode":"341525","citycode":"0564"} +, +{"name":"亳州市","adcode":"341600","citycode":"0558"} +, +{"name":"谯城区","adcode":"341602","citycode":"0558"} +, +{"name":"涡阳县","adcode":"341621","citycode":"0558"} +, +{"name":"蒙城县","adcode":"341622","citycode":"0558"} +, +{"name":"利辛县","adcode":"341623","citycode":"0558"} +, +{"name":"池州市","adcode":"341700","citycode":"0566"} +, +{"name":"贵池区","adcode":"341702","citycode":"0566"} +, +{"name":"东至县","adcode":"341721","citycode":"0566"} +, +{"name":"石台县","adcode":"341722","citycode":"0566"} +, +{"name":"青阳县","adcode":"341723","citycode":"0566"} +, +{"name":"宣城市","adcode":"341800","citycode":"0563"} +, +{"name":"宣州区","adcode":"341802","citycode":"0563"} +, +{"name":"郎溪县","adcode":"341821","citycode":"0563"} +, +{"name":"泾县","adcode":"341823","citycode":"0563"} +, +{"name":"绩溪县","adcode":"341824","citycode":"0563"} +, +{"name":"旌德县","adcode":"341825","citycode":"0563"} +, +{"name":"宁国市","adcode":"341881","citycode":"0563"} +, +{"name":"广德市","adcode":"341882","citycode":"0563"} +, +{"name":"福建省","adcode":"350000","citycode":"\\N"} +, +{"name":"福州市","adcode":"350100","citycode":"0591"} +, +{"name":"鼓楼区","adcode":"350102","citycode":"0591"} +, +{"name":"台江区","adcode":"350103","citycode":"0591"} +, +{"name":"仓山区","adcode":"350104","citycode":"0591"} +, +{"name":"马尾区","adcode":"350105","citycode":"0591"} +, +{"name":"晋安区","adcode":"350111","citycode":"0591"} +, +{"name":"长乐区","adcode":"350112","citycode":"0591"} +, +{"name":"闽侯县","adcode":"350121","citycode":"0591"} +, +{"name":"连江县","adcode":"350122","citycode":"0591"} +, +{"name":"罗源县","adcode":"350123","citycode":"0591"} +, +{"name":"闽清县","adcode":"350124","citycode":"0591"} +, +{"name":"永泰县","adcode":"350125","citycode":"0591"} +, +{"name":"平潭县","adcode":"350128","citycode":"0591"} +, +{"name":"福清市","adcode":"350181","citycode":"0591"} +, +{"name":"厦门市","adcode":"350200","citycode":"0592"} +, +{"name":"思明区","adcode":"350203","citycode":"0592"} +, +{"name":"海沧区","adcode":"350205","citycode":"0592"} +, +{"name":"湖里区","adcode":"350206","citycode":"0592"} +, +{"name":"集美区","adcode":"350211","citycode":"0592"} +, +{"name":"同安区","adcode":"350212","citycode":"0592"} +, +{"name":"翔安区","adcode":"350213","citycode":"0592"} +, +{"name":"莆田市","adcode":"350300","citycode":"0594"} +, +{"name":"城厢区","adcode":"350302","citycode":"0594"} +, +{"name":"涵江区","adcode":"350303","citycode":"0594"} +, +{"name":"荔城区","adcode":"350304","citycode":"0594"} +, +{"name":"秀屿区","adcode":"350305","citycode":"0594"} +, +{"name":"仙游县","adcode":"350322","citycode":"0594"} +, +{"name":"三明市","adcode":"350400","citycode":"0598"} +, +{"name":"三元区","adcode":"350404","citycode":"0598"} +, +{"name":"沙县区","adcode":"350405","citycode":"0598"} +, +{"name":"明溪县","adcode":"350421","citycode":"0598"} +, +{"name":"清流县","adcode":"350423","citycode":"0598"} +, +{"name":"宁化县","adcode":"350424","citycode":"0598"} +, +{"name":"大田县","adcode":"350425","citycode":"0598"} +, +{"name":"尤溪县","adcode":"350426","citycode":"0598"} +, +{"name":"将乐县","adcode":"350428","citycode":"0598"} +, +{"name":"泰宁县","adcode":"350429","citycode":"0598"} +, +{"name":"建宁县","adcode":"350430","citycode":"0598"} +, +{"name":"永安市","adcode":"350481","citycode":"0598"} +, +{"name":"泉州市","adcode":"350500","citycode":"0595"} +, +{"name":"鲤城区","adcode":"350502","citycode":"0595"} +, +{"name":"丰泽区","adcode":"350503","citycode":"0595"} +, +{"name":"洛江区","adcode":"350504","citycode":"0595"} +, +{"name":"泉港区","adcode":"350505","citycode":"0595"} +, +{"name":"惠安县","adcode":"350521","citycode":"0595"} +, +{"name":"安溪县","adcode":"350524","citycode":"0595"} +, +{"name":"永春县","adcode":"350525","citycode":"0595"} +, +{"name":"德化县","adcode":"350526","citycode":"0595"} +, +{"name":"金门县","adcode":"350527","citycode":"0595"} +, +{"name":"石狮市","adcode":"350581","citycode":"0595"} +, +{"name":"晋江市","adcode":"350582","citycode":"0595"} +, +{"name":"南安市","adcode":"350583","citycode":"0595"} +, +{"name":"漳州市","adcode":"350600","citycode":"0596"} +, +{"name":"芗城区","adcode":"350602","citycode":"0596"} +, +{"name":"龙文区","adcode":"350603","citycode":"0596"} +, +{"name":"龙海区","adcode":"350604","citycode":"0596"} +, +{"name":"长泰区","adcode":"350605","citycode":"0596"} +, +{"name":"云霄县","adcode":"350622","citycode":"0596"} +, +{"name":"漳浦县","adcode":"350623","citycode":"0596"} +, +{"name":"诏安县","adcode":"350624","citycode":"0596"} +, +{"name":"东山县","adcode":"350626","citycode":"0596"} +, +{"name":"南靖县","adcode":"350627","citycode":"0596"} +, +{"name":"平和县","adcode":"350628","citycode":"0596"} +, +{"name":"华安县","adcode":"350629","citycode":"0596"} +, +{"name":"南平市","adcode":"350700","citycode":"0599"} +, +{"name":"延平区","adcode":"350702","citycode":"0599"} +, +{"name":"建阳区","adcode":"350703","citycode":"0599"} +, +{"name":"顺昌县","adcode":"350721","citycode":"0599"} +, +{"name":"浦城县","adcode":"350722","citycode":"0599"} +, +{"name":"光泽县","adcode":"350723","citycode":"0599"} +, +{"name":"松溪县","adcode":"350724","citycode":"0599"} +, +{"name":"政和县","adcode":"350725","citycode":"0599"} +, +{"name":"邵武市","adcode":"350781","citycode":"0599"} +, +{"name":"武夷山市","adcode":"350782","citycode":"0599"} +, +{"name":"建瓯市","adcode":"350783","citycode":"0599"} +, +{"name":"龙岩市","adcode":"350800","citycode":"0597"} +, +{"name":"新罗区","adcode":"350802","citycode":"0597"} +, +{"name":"永定区","adcode":"350803","citycode":"0597"} +, +{"name":"长汀县","adcode":"350821","citycode":"0597"} +, +{"name":"上杭县","adcode":"350823","citycode":"0597"} +, +{"name":"武平县","adcode":"350824","citycode":"0597"} +, +{"name":"连城县","adcode":"350825","citycode":"0597"} +, +{"name":"漳平市","adcode":"350881","citycode":"0597"} +, +{"name":"宁德市","adcode":"350900","citycode":"0593"} +, +{"name":"蕉城区","adcode":"350902","citycode":"0593"} +, +{"name":"霞浦县","adcode":"350921","citycode":"0593"} +, +{"name":"古田县","adcode":"350922","citycode":"0593"} +, +{"name":"屏南县","adcode":"350923","citycode":"0593"} +, +{"name":"寿宁县","adcode":"350924","citycode":"0593"} +, +{"name":"周宁县","adcode":"350925","citycode":"0593"} +, +{"name":"柘荣县","adcode":"350926","citycode":"0593"} +, +{"name":"福安市","adcode":"350981","citycode":"0593"} +, +{"name":"福鼎市","adcode":"350982","citycode":"0593"} +, +{"name":"江西省","adcode":"360000","citycode":"\\N"} +, +{"name":"南昌市","adcode":"360100","citycode":"0791"} +, +{"name":"东湖区","adcode":"360102","citycode":"0791"} +, +{"name":"西湖区","adcode":"360103","citycode":"0791"} +, +{"name":"青云谱区","adcode":"360104","citycode":"0791"} +, +{"name":"青山湖区","adcode":"360111","citycode":"0791"} +, +{"name":"新建区","adcode":"360112","citycode":"0791"} +, +{"name":"红谷滩区","adcode":"360113","citycode":"0791"} +, +{"name":"南昌县","adcode":"360121","citycode":"0791"} +, +{"name":"安义县","adcode":"360123","citycode":"0791"} +, +{"name":"进贤县","adcode":"360124","citycode":"0791"} +, +{"name":"景德镇市","adcode":"360200","citycode":"0798"} +, +{"name":"昌江区","adcode":"360202","citycode":"0798"} +, +{"name":"珠山区","adcode":"360203","citycode":"0798"} +, +{"name":"浮梁县","adcode":"360222","citycode":"0798"} +, +{"name":"乐平市","adcode":"360281","citycode":"0798"} +, +{"name":"萍乡市","adcode":"360300","citycode":"0799"} +, +{"name":"安源区","adcode":"360302","citycode":"0799"} +, +{"name":"湘东区","adcode":"360313","citycode":"0799"} +, +{"name":"莲花县","adcode":"360321","citycode":"0799"} +, +{"name":"上栗县","adcode":"360322","citycode":"0799"} +, +{"name":"芦溪县","adcode":"360323","citycode":"0799"} +, +{"name":"九江市","adcode":"360400","citycode":"0792"} +, +{"name":"濂溪区","adcode":"360402","citycode":"0792"} +, +{"name":"浔阳区","adcode":"360403","citycode":"0792"} +, +{"name":"柴桑区","adcode":"360404","citycode":"0792"} +, +{"name":"武宁县","adcode":"360423","citycode":"0792"} +, +{"name":"修水县","adcode":"360424","citycode":"0792"} +, +{"name":"永修县","adcode":"360425","citycode":"0792"} +, +{"name":"德安县","adcode":"360426","citycode":"0792"} +, +{"name":"都昌县","adcode":"360428","citycode":"0792"} +, +{"name":"湖口县","adcode":"360429","citycode":"0792"} +, +{"name":"彭泽县","adcode":"360430","citycode":"0792"} +, +{"name":"瑞昌市","adcode":"360481","citycode":"0792"} +, +{"name":"共青城市","adcode":"360482","citycode":"0792"} +, +{"name":"庐山市","adcode":"360483","citycode":"0792"} +, +{"name":"新余市","adcode":"360500","citycode":"0790"} +, +{"name":"渝水区","adcode":"360502","citycode":"0790"} +, +{"name":"分宜县","adcode":"360521","citycode":"0790"} +, +{"name":"鹰潭市","adcode":"360600","citycode":"0701"} +, +{"name":"月湖区","adcode":"360602","citycode":"0701"} +, +{"name":"余江区","adcode":"360603","citycode":"0701"} +, +{"name":"贵溪市","adcode":"360681","citycode":"0701"} +, +{"name":"赣州市","adcode":"360700","citycode":"0797"} +, +{"name":"章贡区","adcode":"360702","citycode":"0797"} +, +{"name":"南康区","adcode":"360703","citycode":"0797"} +, +{"name":"赣县区","adcode":"360704","citycode":"0797"} +, +{"name":"信丰县","adcode":"360722","citycode":"0797"} +, +{"name":"大余县","adcode":"360723","citycode":"0797"} +, +{"name":"上犹县","adcode":"360724","citycode":"0797"} +, +{"name":"崇义县","adcode":"360725","citycode":"0797"} +, +{"name":"安远县","adcode":"360726","citycode":"0797"} +, +{"name":"定南县","adcode":"360728","citycode":"0797"} +, +{"name":"全南县","adcode":"360729","citycode":"0797"} +, +{"name":"宁都县","adcode":"360730","citycode":"0797"} +, +{"name":"于都县","adcode":"360731","citycode":"0797"} +, +{"name":"兴国县","adcode":"360732","citycode":"0797"} +, +{"name":"会昌县","adcode":"360733","citycode":"0797"} +, +{"name":"寻乌县","adcode":"360734","citycode":"0797"} +, +{"name":"石城县","adcode":"360735","citycode":"0797"} +, +{"name":"瑞金市","adcode":"360781","citycode":"0797"} +, +{"name":"龙南市","adcode":"360783","citycode":"0797"} +, +{"name":"吉安市","adcode":"360800","citycode":"0796"} +, +{"name":"吉州区","adcode":"360802","citycode":"0796"} +, +{"name":"青原区","adcode":"360803","citycode":"0796"} +, +{"name":"吉安县","adcode":"360821","citycode":"0796"} +, +{"name":"吉水县","adcode":"360822","citycode":"0796"} +, +{"name":"峡江县","adcode":"360823","citycode":"0796"} +, +{"name":"新干县","adcode":"360824","citycode":"0796"} +, +{"name":"永丰县","adcode":"360825","citycode":"0796"} +, +{"name":"泰和县","adcode":"360826","citycode":"0796"} +, +{"name":"遂川县","adcode":"360827","citycode":"0796"} +, +{"name":"万安县","adcode":"360828","citycode":"0796"} +, +{"name":"安福县","adcode":"360829","citycode":"0796"} +, +{"name":"永新县","adcode":"360830","citycode":"0796"} +, +{"name":"井冈山市","adcode":"360881","citycode":"0796"} +, +{"name":"宜春市","adcode":"360900","citycode":"0795"} +, +{"name":"袁州区","adcode":"360902","citycode":"0795"} +, +{"name":"奉新县","adcode":"360921","citycode":"0795"} +, +{"name":"万载县","adcode":"360922","citycode":"0795"} +, +{"name":"上高县","adcode":"360923","citycode":"0795"} +, +{"name":"宜丰县","adcode":"360924","citycode":"0795"} +, +{"name":"靖安县","adcode":"360925","citycode":"0795"} +, +{"name":"铜鼓县","adcode":"360926","citycode":"0795"} +, +{"name":"丰城市","adcode":"360981","citycode":"0795"} +, +{"name":"樟树市","adcode":"360982","citycode":"0795"} +, +{"name":"高安市","adcode":"360983","citycode":"0795"} +, +{"name":"抚州市","adcode":"361000","citycode":"0794"} +, +{"name":"临川区","adcode":"361002","citycode":"0794"} +, +{"name":"东乡区","adcode":"361003","citycode":"0794"} +, +{"name":"南城县","adcode":"361021","citycode":"0794"} +, +{"name":"黎川县","adcode":"361022","citycode":"0794"} +, +{"name":"南丰县","adcode":"361023","citycode":"0794"} +, +{"name":"崇仁县","adcode":"361024","citycode":"0794"} +, +{"name":"乐安县","adcode":"361025","citycode":"0794"} +, +{"name":"宜黄县","adcode":"361026","citycode":"0794"} +, +{"name":"金溪县","adcode":"361027","citycode":"0794"} +, +{"name":"资溪县","adcode":"361028","citycode":"0794"} +, +{"name":"广昌县","adcode":"361030","citycode":"0794"} +, +{"name":"上饶市","adcode":"361100","citycode":"0793"} +, +{"name":"信州区","adcode":"361102","citycode":"0793"} +, +{"name":"广丰区","adcode":"361103","citycode":"0793"} +, +{"name":"广信区","adcode":"361104","citycode":"0793"} +, +{"name":"玉山县","adcode":"361123","citycode":"0793"} +, +{"name":"铅山县","adcode":"361124","citycode":"0793"} +, +{"name":"横峰县","adcode":"361125","citycode":"0793"} +, +{"name":"弋阳县","adcode":"361126","citycode":"0793"} +, +{"name":"余干县","adcode":"361127","citycode":"0793"} +, +{"name":"鄱阳县","adcode":"361128","citycode":"0793"} +, +{"name":"万年县","adcode":"361129","citycode":"0793"} +, +{"name":"婺源县","adcode":"361130","citycode":"0793"} +, +{"name":"德兴市","adcode":"361181","citycode":"0793"} +, +{"name":"山东省","adcode":"370000","citycode":"\\N"} +, +{"name":"济南市","adcode":"370100","citycode":"0531"} +, +{"name":"历下区","adcode":"370102","citycode":"0531"} +, +{"name":"市中区","adcode":"370103","citycode":"0531"} +, +{"name":"槐荫区","adcode":"370104","citycode":"0531"} +, +{"name":"天桥区","adcode":"370105","citycode":"0531"} +, +{"name":"历城区","adcode":"370112","citycode":"0531"} +, +{"name":"长清区","adcode":"370113","citycode":"0531"} +, +{"name":"章丘区","adcode":"370114","citycode":"0531"} +, +{"name":"济阳区","adcode":"370115","citycode":"0531"} +, +{"name":"莱芜区","adcode":"370116","citycode":"0531"} +, +{"name":"钢城区","adcode":"370117","citycode":"0531"} +, +{"name":"平阴县","adcode":"370124","citycode":"0531"} +, +{"name":"商河县","adcode":"370126","citycode":"0531"} +, +{"name":"青岛市","adcode":"370200","citycode":"0532"} +, +{"name":"市南区","adcode":"370202","citycode":"0532"} +, +{"name":"市北区","adcode":"370203","citycode":"0532"} +, +{"name":"黄岛区","adcode":"370211","citycode":"0532"} +, +{"name":"崂山区","adcode":"370212","citycode":"0532"} +, +{"name":"李沧区","adcode":"370213","citycode":"0532"} +, +{"name":"城阳区","adcode":"370214","citycode":"0532"} +, +{"name":"即墨区","adcode":"370215","citycode":"0532"} +, +{"name":"胶州市","adcode":"370281","citycode":"0532"} +, +{"name":"平度市","adcode":"370283","citycode":"0532"} +, +{"name":"莱西市","adcode":"370285","citycode":"0532"} +, +{"name":"淄博市","adcode":"370300","citycode":"0533"} +, +{"name":"淄川区","adcode":"370302","citycode":"0533"} +, +{"name":"张店区","adcode":"370303","citycode":"0533"} +, +{"name":"博山区","adcode":"370304","citycode":"0533"} +, +{"name":"临淄区","adcode":"370305","citycode":"0533"} +, +{"name":"周村区","adcode":"370306","citycode":"0533"} +, +{"name":"桓台县","adcode":"370321","citycode":"0533"} +, +{"name":"高青县","adcode":"370322","citycode":"0533"} +, +{"name":"沂源县","adcode":"370323","citycode":"0533"} +, +{"name":"枣庄市","adcode":"370400","citycode":"0632"} +, +{"name":"市中区","adcode":"370402","citycode":"0632"} +, +{"name":"薛城区","adcode":"370403","citycode":"0632"} +, +{"name":"峄城区","adcode":"370404","citycode":"0632"} +, +{"name":"台儿庄区","adcode":"370405","citycode":"0632"} +, +{"name":"山亭区","adcode":"370406","citycode":"0632"} +, +{"name":"滕州市","adcode":"370481","citycode":"0632"} +, +{"name":"东营市","adcode":"370500","citycode":"0546"} +, +{"name":"东营区","adcode":"370502","citycode":"0546"} +, +{"name":"河口区","adcode":"370503","citycode":"0546"} +, +{"name":"垦利区","adcode":"370505","citycode":"0546"} +, +{"name":"利津县","adcode":"370522","citycode":"0546"} +, +{"name":"广饶县","adcode":"370523","citycode":"0546"} +, +{"name":"烟台市","adcode":"370600","citycode":"0535"} +, +{"name":"芝罘区","adcode":"370602","citycode":"0535"} +, +{"name":"福山区","adcode":"370611","citycode":"0535"} +, +{"name":"牟平区","adcode":"370612","citycode":"0535"} +, +{"name":"莱山区","adcode":"370613","citycode":"0535"} +, +{"name":"蓬莱区","adcode":"370614","citycode":"0535"} +, +{"name":"龙口市","adcode":"370681","citycode":"0535"} +, +{"name":"莱阳市","adcode":"370682","citycode":"0535"} +, +{"name":"莱州市","adcode":"370683","citycode":"0535"} +, +{"name":"招远市","adcode":"370685","citycode":"0535"} +, +{"name":"栖霞市","adcode":"370686","citycode":"0535"} +, +{"name":"海阳市","adcode":"370687","citycode":"0535"} +, +{"name":"潍坊市","adcode":"370700","citycode":"0536"} +, +{"name":"潍城区","adcode":"370702","citycode":"0536"} +, +{"name":"寒亭区","adcode":"370703","citycode":"0536"} +, +{"name":"坊子区","adcode":"370704","citycode":"0536"} +, +{"name":"奎文区","adcode":"370705","citycode":"0536"} +, +{"name":"临朐县","adcode":"370724","citycode":"0536"} +, +{"name":"昌乐县","adcode":"370725","citycode":"0536"} +, +{"name":"青州市","adcode":"370781","citycode":"0536"} +, +{"name":"诸城市","adcode":"370782","citycode":"0536"} +, +{"name":"寿光市","adcode":"370783","citycode":"0536"} +, +{"name":"安丘市","adcode":"370784","citycode":"0536"} +, +{"name":"高密市","adcode":"370785","citycode":"0536"} +, +{"name":"昌邑市","adcode":"370786","citycode":"0536"} +, +{"name":"济宁市","adcode":"370800","citycode":"0537"} +, +{"name":"任城区","adcode":"370811","citycode":"0537"} +, +{"name":"兖州区","adcode":"370812","citycode":"0537"} +, +{"name":"微山县","adcode":"370826","citycode":"0537"} +, +{"name":"鱼台县","adcode":"370827","citycode":"0537"} +, +{"name":"金乡县","adcode":"370828","citycode":"0537"} +, +{"name":"嘉祥县","adcode":"370829","citycode":"0537"} +, +{"name":"汶上县","adcode":"370830","citycode":"0537"} +, +{"name":"泗水县","adcode":"370831","citycode":"0537"} +, +{"name":"梁山县","adcode":"370832","citycode":"0537"} +, +{"name":"曲阜市","adcode":"370881","citycode":"0537"} +, +{"name":"邹城市","adcode":"370883","citycode":"0537"} +, +{"name":"泰安市","adcode":"370900","citycode":"0538"} +, +{"name":"泰山区","adcode":"370902","citycode":"0538"} +, +{"name":"岱岳区","adcode":"370911","citycode":"0538"} +, +{"name":"宁阳县","adcode":"370921","citycode":"0538"} +, +{"name":"东平县","adcode":"370923","citycode":"0538"} +, +{"name":"新泰市","adcode":"370982","citycode":"0538"} +, +{"name":"肥城市","adcode":"370983","citycode":"0538"} +, +{"name":"威海市","adcode":"371000","citycode":"0631"} +, +{"name":"环翠区","adcode":"371002","citycode":"0631"} +, +{"name":"文登区","adcode":"371003","citycode":"0631"} +, +{"name":"荣成市","adcode":"371082","citycode":"0631"} +, +{"name":"乳山市","adcode":"371083","citycode":"0631"} +, +{"name":"日照市","adcode":"371100","citycode":"0633"} +, +{"name":"东港区","adcode":"371102","citycode":"0633"} +, +{"name":"岚山区","adcode":"371103","citycode":"0633"} +, +{"name":"五莲县","adcode":"371121","citycode":"0633"} +, +{"name":"莒县","adcode":"371122","citycode":"0633"} +, +{"name":"临沂市","adcode":"371300","citycode":"0539"} +, +{"name":"兰山区","adcode":"371302","citycode":"0539"} +, +{"name":"罗庄区","adcode":"371311","citycode":"0539"} +, +{"name":"河东区","adcode":"371312","citycode":"0539"} +, +{"name":"沂南县","adcode":"371321","citycode":"0539"} +, +{"name":"郯城县","adcode":"371322","citycode":"0539"} +, +{"name":"沂水县","adcode":"371323","citycode":"0539"} +, +{"name":"兰陵县","adcode":"371324","citycode":"0539"} +, +{"name":"费县","adcode":"371325","citycode":"0539"} +, +{"name":"平邑县","adcode":"371326","citycode":"0539"} +, +{"name":"莒南县","adcode":"371327","citycode":"0539"} +, +{"name":"蒙阴县","adcode":"371328","citycode":"0539"} +, +{"name":"临沭县","adcode":"371329","citycode":"0539"} +, +{"name":"德州市","adcode":"371400","citycode":"0534"} +, +{"name":"德城区","adcode":"371402","citycode":"0534"} +, +{"name":"陵城区","adcode":"371403","citycode":"0534"} +, +{"name":"宁津县","adcode":"371422","citycode":"0534"} +, +{"name":"庆云县","adcode":"371423","citycode":"0534"} +, +{"name":"临邑县","adcode":"371424","citycode":"0534"} +, +{"name":"齐河县","adcode":"371425","citycode":"0534"} +, +{"name":"平原县","adcode":"371426","citycode":"0534"} +, +{"name":"夏津县","adcode":"371427","citycode":"0534"} +, +{"name":"武城县","adcode":"371428","citycode":"0534"} +, +{"name":"乐陵市","adcode":"371481","citycode":"0534"} +, +{"name":"禹城市","adcode":"371482","citycode":"0534"} +, +{"name":"聊城市","adcode":"371500","citycode":"0635"} +, +{"name":"东昌府区","adcode":"371502","citycode":"0635"} +, +{"name":"茌平区","adcode":"371503","citycode":"0635"} +, +{"name":"阳谷县","adcode":"371521","citycode":"0635"} +, +{"name":"莘县","adcode":"371522","citycode":"0635"} +, +{"name":"东阿县","adcode":"371524","citycode":"0635"} +, +{"name":"冠县","adcode":"371525","citycode":"0635"} +, +{"name":"高唐县","adcode":"371526","citycode":"0635"} +, +{"name":"临清市","adcode":"371581","citycode":"0635"} +, +{"name":"滨州市","adcode":"371600","citycode":"0543"} +, +{"name":"滨城区","adcode":"371602","citycode":"0543"} +, +{"name":"沾化区","adcode":"371603","citycode":"0543"} +, +{"name":"惠民县","adcode":"371621","citycode":"0543"} +, +{"name":"阳信县","adcode":"371622","citycode":"0543"} +, +{"name":"无棣县","adcode":"371623","citycode":"0543"} +, +{"name":"博兴县","adcode":"371625","citycode":"0543"} +, +{"name":"邹平市","adcode":"371681","citycode":"0543"} +, +{"name":"菏泽市","adcode":"371700","citycode":"0530"} +, +{"name":"牡丹区","adcode":"371702","citycode":"0530"} +, +{"name":"定陶区","adcode":"371703","citycode":"0530"} +, +{"name":"曹县","adcode":"371721","citycode":"0530"} +, +{"name":"单县","adcode":"371722","citycode":"0530"} +, +{"name":"成武县","adcode":"371723","citycode":"0530"} +, +{"name":"巨野县","adcode":"371724","citycode":"0530"} +, +{"name":"郓城县","adcode":"371725","citycode":"0530"} +, +{"name":"鄄城县","adcode":"371726","citycode":"0530"} +, +{"name":"东明县","adcode":"371728","citycode":"0530"} +, +{"name":"河南省","adcode":"410000","citycode":"\\N"} +, +{"name":"郑州市","adcode":"410100","citycode":"0371"} +, +{"name":"中原区","adcode":"410102","citycode":"0371"} +, +{"name":"二七区","adcode":"410103","citycode":"0371"} +, +{"name":"管城回族区","adcode":"410104","citycode":"0371"} +, +{"name":"金水区","adcode":"410105","citycode":"0371"} +, +{"name":"上街区","adcode":"410106","citycode":"0371"} +, +{"name":"惠济区","adcode":"410108","citycode":"0371"} +, +{"name":"中牟县","adcode":"410122","citycode":"0371"} +, +{"name":"巩义市","adcode":"410181","citycode":"0371"} +, +{"name":"荥阳市","adcode":"410182","citycode":"0371"} +, +{"name":"新密市","adcode":"410183","citycode":"0371"} +, +{"name":"新郑市","adcode":"410184","citycode":"0371"} +, +{"name":"登封市","adcode":"410185","citycode":"0371"} +, +{"name":"开封市","adcode":"410200","citycode":"0378"} +, +{"name":"龙亭区","adcode":"410202","citycode":"0378"} +, +{"name":"顺河回族区","adcode":"410203","citycode":"0378"} +, +{"name":"鼓楼区","adcode":"410204","citycode":"0378"} +, +{"name":"禹王台区","adcode":"410205","citycode":"0378"} +, +{"name":"祥符区","adcode":"410212","citycode":"0378"} +, +{"name":"杞县","adcode":"410221","citycode":"0378"} +, +{"name":"通许县","adcode":"410222","citycode":"0378"} +, +{"name":"尉氏县","adcode":"410223","citycode":"0378"} +, +{"name":"兰考县","adcode":"410225","citycode":"0378"} +, +{"name":"洛阳市","adcode":"410300","citycode":"0379"} +, +{"name":"老城区","adcode":"410302","citycode":"0379"} +, +{"name":"西工区","adcode":"410303","citycode":"0379"} +, +{"name":"瀍河回族区","adcode":"410304","citycode":"0379"} +, +{"name":"涧西区","adcode":"410305","citycode":"0379"} +, +{"name":"偃师区","adcode":"410307","citycode":"0379"} +, +{"name":"孟津区","adcode":"410308","citycode":"0379"} +, +{"name":"洛龙区","adcode":"410311","citycode":"0379"} +, +{"name":"新安县","adcode":"410323","citycode":"0379"} +, +{"name":"栾川县","adcode":"410324","citycode":"0379"} +, +{"name":"嵩县","adcode":"410325","citycode":"0379"} +, +{"name":"汝阳县","adcode":"410326","citycode":"0379"} +, +{"name":"宜阳县","adcode":"410327","citycode":"0379"} +, +{"name":"洛宁县","adcode":"410328","citycode":"0379"} +, +{"name":"伊川县","adcode":"410329","citycode":"0379"} +, +{"name":"平顶山市","adcode":"410400","citycode":"0375"} +, +{"name":"新华区","adcode":"410402","citycode":"0375"} +, +{"name":"卫东区","adcode":"410403","citycode":"0375"} +, +{"name":"石龙区","adcode":"410404","citycode":"0375"} +, +{"name":"湛河区","adcode":"410411","citycode":"0375"} +, +{"name":"宝丰县","adcode":"410421","citycode":"0375"} +, +{"name":"叶县","adcode":"410422","citycode":"0375"} +, +{"name":"鲁山县","adcode":"410423","citycode":"0375"} +, +{"name":"郏县","adcode":"410425","citycode":"0375"} +, +{"name":"舞钢市","adcode":"410481","citycode":"0375"} +, +{"name":"汝州市","adcode":"410482","citycode":"0375"} +, +{"name":"安阳市","adcode":"410500","citycode":"0372"} +, +{"name":"文峰区","adcode":"410502","citycode":"0372"} +, +{"name":"北关区","adcode":"410503","citycode":"0372"} +, +{"name":"殷都区","adcode":"410505","citycode":"0372"} +, +{"name":"龙安区","adcode":"410506","citycode":"0372"} +, +{"name":"安阳县","adcode":"410522","citycode":"0372"} +, +{"name":"汤阴县","adcode":"410523","citycode":"0372"} +, +{"name":"滑县","adcode":"410526","citycode":"0372"} +, +{"name":"内黄县","adcode":"410527","citycode":"0372"} +, +{"name":"林州市","adcode":"410581","citycode":"0372"} +, +{"name":"鹤壁市","adcode":"410600","citycode":"0392"} +, +{"name":"鹤山区","adcode":"410602","citycode":"0392"} +, +{"name":"山城区","adcode":"410603","citycode":"0392"} +, +{"name":"淇滨区","adcode":"410611","citycode":"0392"} +, +{"name":"浚县","adcode":"410621","citycode":"0392"} +, +{"name":"淇县","adcode":"410622","citycode":"0392"} +, +{"name":"新乡市","adcode":"410700","citycode":"0373"} +, +{"name":"红旗区","adcode":"410702","citycode":"0373"} +, +{"name":"卫滨区","adcode":"410703","citycode":"0373"} +, +{"name":"凤泉区","adcode":"410704","citycode":"0373"} +, +{"name":"牧野区","adcode":"410711","citycode":"0373"} +, +{"name":"新乡县","adcode":"410721","citycode":"0373"} +, +{"name":"获嘉县","adcode":"410724","citycode":"0373"} +, +{"name":"原阳县","adcode":"410725","citycode":"0373"} +, +{"name":"延津县","adcode":"410726","citycode":"0373"} +, +{"name":"封丘县","adcode":"410727","citycode":"0373"} +, +{"name":"卫辉市","adcode":"410781","citycode":"0373"} +, +{"name":"辉县市","adcode":"410782","citycode":"0373"} +, +{"name":"长垣市","adcode":"410783","citycode":"0373"} +, +{"name":"焦作市","adcode":"410800","citycode":"0391"} +, +{"name":"解放区","adcode":"410802","citycode":"0391"} +, +{"name":"中站区","adcode":"410803","citycode":"0391"} +, +{"name":"马村区","adcode":"410804","citycode":"0391"} +, +{"name":"山阳区","adcode":"410811","citycode":"0391"} +, +{"name":"修武县","adcode":"410821","citycode":"0391"} +, +{"name":"博爱县","adcode":"410822","citycode":"0391"} +, +{"name":"武陟县","adcode":"410823","citycode":"0391"} +, +{"name":"温县","adcode":"410825","citycode":"0391"} +, +{"name":"沁阳市","adcode":"410882","citycode":"0391"} +, +{"name":"孟州市","adcode":"410883","citycode":"0391"} +, +{"name":"濮阳市","adcode":"410900","citycode":"0393"} +, +{"name":"华龙区","adcode":"410902","citycode":"0393"} +, +{"name":"清丰县","adcode":"410922","citycode":"0393"} +, +{"name":"南乐县","adcode":"410923","citycode":"0393"} +, +{"name":"范县","adcode":"410926","citycode":"0393"} +, +{"name":"台前县","adcode":"410927","citycode":"0393"} +, +{"name":"濮阳县","adcode":"410928","citycode":"0393"} +, +{"name":"许昌市","adcode":"411000","citycode":"0374"} +, +{"name":"魏都区","adcode":"411002","citycode":"0374"} +, +{"name":"建安区","adcode":"411003","citycode":"0374"} +, +{"name":"鄢陵县","adcode":"411024","citycode":"0374"} +, +{"name":"襄城县","adcode":"411025","citycode":"0374"} +, +{"name":"禹州市","adcode":"411081","citycode":"0374"} +, +{"name":"长葛市","adcode":"411082","citycode":"0374"} +, +{"name":"漯河市","adcode":"411100","citycode":"0395"} +, +{"name":"源汇区","adcode":"411102","citycode":"0395"} +, +{"name":"郾城区","adcode":"411103","citycode":"0395"} +, +{"name":"召陵区","adcode":"411104","citycode":"0395"} +, +{"name":"舞阳县","adcode":"411121","citycode":"0395"} +, +{"name":"临颍县","adcode":"411122","citycode":"0395"} +, +{"name":"三门峡市","adcode":"411200","citycode":"0398"} +, +{"name":"湖滨区","adcode":"411202","citycode":"0398"} +, +{"name":"陕州区","adcode":"411203","citycode":"0398"} +, +{"name":"渑池县","adcode":"411221","citycode":"0398"} +, +{"name":"卢氏县","adcode":"411224","citycode":"0398"} +, +{"name":"义马市","adcode":"411281","citycode":"0398"} +, +{"name":"灵宝市","adcode":"411282","citycode":"0398"} +, +{"name":"南阳市","adcode":"411300","citycode":"0377"} +, +{"name":"宛城区","adcode":"411302","citycode":"0377"} +, +{"name":"卧龙区","adcode":"411303","citycode":"0377"} +, +{"name":"南召县","adcode":"411321","citycode":"0377"} +, +{"name":"方城县","adcode":"411322","citycode":"0377"} +, +{"name":"西峡县","adcode":"411323","citycode":"0377"} +, +{"name":"镇平县","adcode":"411324","citycode":"0377"} +, +{"name":"内乡县","adcode":"411325","citycode":"0377"} +, +{"name":"淅川县","adcode":"411326","citycode":"0377"} +, +{"name":"社旗县","adcode":"411327","citycode":"0377"} +, +{"name":"唐河县","adcode":"411328","citycode":"0377"} +, +{"name":"新野县","adcode":"411329","citycode":"0377"} +, +{"name":"桐柏县","adcode":"411330","citycode":"0377"} +, +{"name":"邓州市","adcode":"411381","citycode":"0377"} +, +{"name":"商丘市","adcode":"411400","citycode":"0370"} +, +{"name":"梁园区","adcode":"411402","citycode":"0370"} +, +{"name":"睢阳区","adcode":"411403","citycode":"0370"} +, +{"name":"民权县","adcode":"411421","citycode":"0370"} +, +{"name":"睢县","adcode":"411422","citycode":"0370"} +, +{"name":"宁陵县","adcode":"411423","citycode":"0370"} +, +{"name":"柘城县","adcode":"411424","citycode":"0370"} +, +{"name":"虞城县","adcode":"411425","citycode":"0370"} +, +{"name":"夏邑县","adcode":"411426","citycode":"0370"} +, +{"name":"永城市","adcode":"411481","citycode":"0370"} +, +{"name":"信阳市","adcode":"411500","citycode":"0376"} +, +{"name":"浉河区","adcode":"411502","citycode":"0376"} +, +{"name":"平桥区","adcode":"411503","citycode":"0376"} +, +{"name":"罗山县","adcode":"411521","citycode":"0376"} +, +{"name":"光山县","adcode":"411522","citycode":"0376"} +, +{"name":"新县","adcode":"411523","citycode":"0376"} +, +{"name":"商城县","adcode":"411524","citycode":"0376"} +, +{"name":"固始县","adcode":"411525","citycode":"0376"} +, +{"name":"潢川县","adcode":"411526","citycode":"0376"} +, +{"name":"淮滨县","adcode":"411527","citycode":"0376"} +, +{"name":"息县","adcode":"411528","citycode":"0376"} +, +{"name":"周口市","adcode":"411600","citycode":"0394"} +, +{"name":"川汇区","adcode":"411602","citycode":"0394"} +, +{"name":"淮阳区","adcode":"411603","citycode":"0394"} +, +{"name":"扶沟县","adcode":"411621","citycode":"0394"} +, +{"name":"西华县","adcode":"411622","citycode":"0394"} +, +{"name":"商水县","adcode":"411623","citycode":"0394"} +, +{"name":"沈丘县","adcode":"411624","citycode":"0394"} +, +{"name":"郸城县","adcode":"411625","citycode":"0394"} +, +{"name":"太康县","adcode":"411627","citycode":"0394"} +, +{"name":"鹿邑县","adcode":"411628","citycode":"0394"} +, +{"name":"项城市","adcode":"411681","citycode":"0394"} +, +{"name":"驻马店市","adcode":"411700","citycode":"0396"} +, +{"name":"驿城区","adcode":"411702","citycode":"0396"} +, +{"name":"西平县","adcode":"411721","citycode":"0396"} +, +{"name":"上蔡县","adcode":"411722","citycode":"0396"} +, +{"name":"平舆县","adcode":"411723","citycode":"0396"} +, +{"name":"正阳县","adcode":"411724","citycode":"0396"} +, +{"name":"确山县","adcode":"411725","citycode":"0396"} +, +{"name":"泌阳县","adcode":"411726","citycode":"0396"} +, +{"name":"汝南县","adcode":"411727","citycode":"0396"} +, +{"name":"遂平县","adcode":"411728","citycode":"0396"} +, +{"name":"新蔡县","adcode":"411729","citycode":"0396"} +, +{"name":"济源市","adcode":"419001","citycode":"1391"} +, +{"name":"湖北省","adcode":"420000","citycode":"\\N"} +, +{"name":"武汉市","adcode":"420100","citycode":"027"} +, +{"name":"江岸区","adcode":"420102","citycode":"027"} +, +{"name":"江汉区","adcode":"420103","citycode":"027"} +, +{"name":"硚口区","adcode":"420104","citycode":"027"} +, +{"name":"汉阳区","adcode":"420105","citycode":"027"} +, +{"name":"武昌区","adcode":"420106","citycode":"027"} +, +{"name":"青山区","adcode":"420107","citycode":"027"} +, +{"name":"洪山区","adcode":"420111","citycode":"027"} +, +{"name":"东西湖区","adcode":"420112","citycode":"027"} +, +{"name":"汉南区","adcode":"420113","citycode":"027"} +, +{"name":"蔡甸区","adcode":"420114","citycode":"027"} +, +{"name":"江夏区","adcode":"420115","citycode":"027"} +, +{"name":"黄陂区","adcode":"420116","citycode":"027"} +, +{"name":"新洲区","adcode":"420117","citycode":"027"} +, +{"name":"黄石市","adcode":"420200","citycode":"0714"} +, +{"name":"黄石港区","adcode":"420202","citycode":"0714"} +, +{"name":"西塞山区","adcode":"420203","citycode":"0714"} +, +{"name":"下陆区","adcode":"420204","citycode":"0714"} +, +{"name":"铁山区","adcode":"420205","citycode":"0714"} +, +{"name":"阳新县","adcode":"420222","citycode":"0714"} +, +{"name":"大冶市","adcode":"420281","citycode":"0714"} +, +{"name":"十堰市","adcode":"420300","citycode":"0719"} +, +{"name":"茅箭区","adcode":"420302","citycode":"0719"} +, +{"name":"张湾区","adcode":"420303","citycode":"0719"} +, +{"name":"郧阳区","adcode":"420304","citycode":"0719"} +, +{"name":"郧西县","adcode":"420322","citycode":"0719"} +, +{"name":"竹山县","adcode":"420323","citycode":"0719"} +, +{"name":"竹溪县","adcode":"420324","citycode":"0719"} +, +{"name":"房县","adcode":"420325","citycode":"0719"} +, +{"name":"丹江口市","adcode":"420381","citycode":"0719"} +, +{"name":"宜昌市","adcode":"420500","citycode":"0717"} +, +{"name":"西陵区","adcode":"420502","citycode":"0717"} +, +{"name":"伍家岗区","adcode":"420503","citycode":"0717"} +, +{"name":"点军区","adcode":"420504","citycode":"0717"} +, +{"name":"猇亭区","adcode":"420505","citycode":"0717"} +, +{"name":"夷陵区","adcode":"420506","citycode":"0717"} +, +{"name":"远安县","adcode":"420525","citycode":"0717"} +, +{"name":"兴山县","adcode":"420526","citycode":"0717"} +, +{"name":"秭归县","adcode":"420527","citycode":"0717"} +, +{"name":"长阳土家族自治县","adcode":"420528","citycode":"0717"} +, +{"name":"五峰土家族自治县","adcode":"420529","citycode":"0717"} +, +{"name":"宜都市","adcode":"420581","citycode":"0717"} +, +{"name":"当阳市","adcode":"420582","citycode":"0717"} +, +{"name":"枝江市","adcode":"420583","citycode":"0717"} +, +{"name":"襄阳市","adcode":"420600","citycode":"0710"} +, +{"name":"襄城区","adcode":"420602","citycode":"0710"} +, +{"name":"樊城区","adcode":"420606","citycode":"0710"} +, +{"name":"襄州区","adcode":"420607","citycode":"0710"} +, +{"name":"南漳县","adcode":"420624","citycode":"0710"} +, +{"name":"谷城县","adcode":"420625","citycode":"0710"} +, +{"name":"保康县","adcode":"420626","citycode":"0710"} +, +{"name":"老河口市","adcode":"420682","citycode":"0710"} +, +{"name":"枣阳市","adcode":"420683","citycode":"0710"} +, +{"name":"宜城市","adcode":"420684","citycode":"0710"} +, +{"name":"鄂州市","adcode":"420700","citycode":"0711"} +, +{"name":"梁子湖区","adcode":"420702","citycode":"0711"} +, +{"name":"华容区","adcode":"420703","citycode":"0711"} +, +{"name":"鄂城区","adcode":"420704","citycode":"0711"} +, +{"name":"荆门市","adcode":"420800","citycode":"0724"} +, +{"name":"东宝区","adcode":"420802","citycode":"0724"} +, +{"name":"掇刀区","adcode":"420804","citycode":"0724"} +, +{"name":"沙洋县","adcode":"420822","citycode":"0724"} +, +{"name":"钟祥市","adcode":"420881","citycode":"0724"} +, +{"name":"京山市","adcode":"420882","citycode":"0724"} +, +{"name":"孝感市","adcode":"420900","citycode":"0712"} +, +{"name":"孝南区","adcode":"420902","citycode":"0712"} +, +{"name":"孝昌县","adcode":"420921","citycode":"0712"} +, +{"name":"大悟县","adcode":"420922","citycode":"0712"} +, +{"name":"云梦县","adcode":"420923","citycode":"0712"} +, +{"name":"应城市","adcode":"420981","citycode":"0712"} +, +{"name":"安陆市","adcode":"420982","citycode":"0712"} +, +{"name":"汉川市","adcode":"420984","citycode":"0712"} +, +{"name":"荆州市","adcode":"421000","citycode":"0716"} +, +{"name":"沙市区","adcode":"421002","citycode":"0716"} +, +{"name":"荆州区","adcode":"421003","citycode":"0716"} +, +{"name":"公安县","adcode":"421022","citycode":"0716"} +, +{"name":"江陵县","adcode":"421024","citycode":"0716"} +, +{"name":"石首市","adcode":"421081","citycode":"0716"} +, +{"name":"洪湖市","adcode":"421083","citycode":"0716"} +, +{"name":"松滋市","adcode":"421087","citycode":"0716"} +, +{"name":"监利市","adcode":"421088","citycode":"0716"} +, +{"name":"黄冈市","adcode":"421100","citycode":"0713"} +, +{"name":"黄州区","adcode":"421102","citycode":"0713"} +, +{"name":"团风县","adcode":"421121","citycode":"0713"} +, +{"name":"红安县","adcode":"421122","citycode":"0713"} +, +{"name":"罗田县","adcode":"421123","citycode":"0713"} +, +{"name":"英山县","adcode":"421124","citycode":"0713"} +, +{"name":"浠水县","adcode":"421125","citycode":"0713"} +, +{"name":"蕲春县","adcode":"421126","citycode":"0713"} +, +{"name":"黄梅县","adcode":"421127","citycode":"0713"} +, +{"name":"麻城市","adcode":"421181","citycode":"0713"} +, +{"name":"武穴市","adcode":"421182","citycode":"0713"} +, +{"name":"咸宁市","adcode":"421200","citycode":"0715"} +, +{"name":"咸安区","adcode":"421202","citycode":"0715"} +, +{"name":"嘉鱼县","adcode":"421221","citycode":"0715"} +, +{"name":"通城县","adcode":"421222","citycode":"0715"} +, +{"name":"崇阳县","adcode":"421223","citycode":"0715"} +, +{"name":"通山县","adcode":"421224","citycode":"0715"} +, +{"name":"赤壁市","adcode":"421281","citycode":"0715"} +, +{"name":"随州市","adcode":"421300","citycode":"0722"} +, +{"name":"曾都区","adcode":"421303","citycode":"0722"} +, +{"name":"随县","adcode":"421321","citycode":"0722"} +, +{"name":"广水市","adcode":"421381","citycode":"0722"} +, +{"name":"恩施土家族苗族自治州","adcode":"422800","citycode":"0718"} +, +{"name":"恩施市","adcode":"422801","citycode":"0718"} +, +{"name":"利川市","adcode":"422802","citycode":"0718"} +, +{"name":"建始县","adcode":"422822","citycode":"0718"} +, +{"name":"巴东县","adcode":"422823","citycode":"0718"} +, +{"name":"宣恩县","adcode":"422825","citycode":"0718"} +, +{"name":"咸丰县","adcode":"422826","citycode":"0718"} +, +{"name":"来凤县","adcode":"422827","citycode":"0718"} +, +{"name":"鹤峰县","adcode":"422828","citycode":"0718"} +, +{"name":"仙桃市","adcode":"429004","citycode":"0728"} +, +{"name":"潜江市","adcode":"429005","citycode":"2728"} +, +{"name":"天门市","adcode":"429006","citycode":"1728"} +, +{"name":"神农架林区","adcode":"429021","citycode":"1719"} +, +{"name":"湖南省","adcode":"430000","citycode":"\\N"} +, +{"name":"长沙市","adcode":"430100","citycode":"0731"} +, +{"name":"芙蓉区","adcode":"430102","citycode":"0731"} +, +{"name":"天心区","adcode":"430103","citycode":"0731"} +, +{"name":"岳麓区","adcode":"430104","citycode":"0731"} +, +{"name":"开福区","adcode":"430105","citycode":"0731"} +, +{"name":"雨花区","adcode":"430111","citycode":"0731"} +, +{"name":"望城区","adcode":"430112","citycode":"0731"} +, +{"name":"长沙县","adcode":"430121","citycode":"0731"} +, +{"name":"浏阳市","adcode":"430181","citycode":"0731"} +, +{"name":"宁乡市","adcode":"430182","citycode":"0731"} +, +{"name":"株洲市","adcode":"430200","citycode":"0733"} +, +{"name":"荷塘区","adcode":"430202","citycode":"0733"} +, +{"name":"芦淞区","adcode":"430203","citycode":"0733"} +, +{"name":"石峰区","adcode":"430204","citycode":"0733"} +, +{"name":"天元区","adcode":"430211","citycode":"0733"} +, +{"name":"渌口区","adcode":"430212","citycode":"0733"} +, +{"name":"攸县","adcode":"430223","citycode":"0733"} +, +{"name":"茶陵县","adcode":"430224","citycode":"0733"} +, +{"name":"炎陵县","adcode":"430225","citycode":"0733"} +, +{"name":"醴陵市","adcode":"430281","citycode":"0733"} +, +{"name":"湘潭市","adcode":"430300","citycode":"0732"} +, +{"name":"雨湖区","adcode":"430302","citycode":"0732"} +, +{"name":"岳塘区","adcode":"430304","citycode":"0732"} +, +{"name":"湘潭县","adcode":"430321","citycode":"0732"} +, +{"name":"湘乡市","adcode":"430381","citycode":"0732"} +, +{"name":"韶山市","adcode":"430382","citycode":"0732"} +, +{"name":"衡阳市","adcode":"430400","citycode":"0734"} +, +{"name":"珠晖区","adcode":"430405","citycode":"0734"} +, +{"name":"雁峰区","adcode":"430406","citycode":"0734"} +, +{"name":"石鼓区","adcode":"430407","citycode":"0734"} +, +{"name":"蒸湘区","adcode":"430408","citycode":"0734"} +, +{"name":"南岳区","adcode":"430412","citycode":"0734"} +, +{"name":"衡阳县","adcode":"430421","citycode":"0734"} +, +{"name":"衡南县","adcode":"430422","citycode":"0734"} +, +{"name":"衡山县","adcode":"430423","citycode":"0734"} +, +{"name":"衡东县","adcode":"430424","citycode":"0734"} +, +{"name":"祁东县","adcode":"430426","citycode":"0734"} +, +{"name":"耒阳市","adcode":"430481","citycode":"0734"} +, +{"name":"常宁市","adcode":"430482","citycode":"0734"} +, +{"name":"邵阳市","adcode":"430500","citycode":"0739"} +, +{"name":"双清区","adcode":"430502","citycode":"0739"} +, +{"name":"大祥区","adcode":"430503","citycode":"0739"} +, +{"name":"北塔区","adcode":"430511","citycode":"0739"} +, +{"name":"新邵县","adcode":"430522","citycode":"0739"} +, +{"name":"邵阳县","adcode":"430523","citycode":"0739"} +, +{"name":"隆回县","adcode":"430524","citycode":"0739"} +, +{"name":"洞口县","adcode":"430525","citycode":"0739"} +, +{"name":"绥宁县","adcode":"430527","citycode":"0739"} +, +{"name":"新宁县","adcode":"430528","citycode":"0739"} +, +{"name":"城步苗族自治县","adcode":"430529","citycode":"0739"} +, +{"name":"武冈市","adcode":"430581","citycode":"0739"} +, +{"name":"邵东市","adcode":"430582","citycode":"0739"} +, +{"name":"岳阳市","adcode":"430600","citycode":"0730"} +, +{"name":"岳阳楼区","adcode":"430602","citycode":"0730"} +, +{"name":"云溪区","adcode":"430603","citycode":"0730"} +, +{"name":"君山区","adcode":"430611","citycode":"0730"} +, +{"name":"岳阳县","adcode":"430621","citycode":"0730"} +, +{"name":"华容县","adcode":"430623","citycode":"0730"} +, +{"name":"湘阴县","adcode":"430624","citycode":"0730"} +, +{"name":"平江县","adcode":"430626","citycode":"0730"} +, +{"name":"汨罗市","adcode":"430681","citycode":"0730"} +, +{"name":"临湘市","adcode":"430682","citycode":"0730"} +, +{"name":"常德市","adcode":"430700","citycode":"0736"} +, +{"name":"武陵区","adcode":"430702","citycode":"0736"} +, +{"name":"鼎城区","adcode":"430703","citycode":"0736"} +, +{"name":"安乡县","adcode":"430721","citycode":"0736"} +, +{"name":"汉寿县","adcode":"430722","citycode":"0736"} +, +{"name":"澧县","adcode":"430723","citycode":"0736"} +, +{"name":"临澧县","adcode":"430724","citycode":"0736"} +, +{"name":"桃源县","adcode":"430725","citycode":"0736"} +, +{"name":"石门县","adcode":"430726","citycode":"0736"} +, +{"name":"津市市","adcode":"430781","citycode":"0736"} +, +{"name":"张家界市","adcode":"430800","citycode":"0744"} +, +{"name":"永定区","adcode":"430802","citycode":"0744"} +, +{"name":"武陵源区","adcode":"430811","citycode":"0744"} +, +{"name":"慈利县","adcode":"430821","citycode":"0744"} +, +{"name":"桑植县","adcode":"430822","citycode":"0744"} +, +{"name":"益阳市","adcode":"430900","citycode":"0737"} +, +{"name":"资阳区","adcode":"430902","citycode":"0737"} +, +{"name":"赫山区","adcode":"430903","citycode":"0737"} +, +{"name":"南县","adcode":"430921","citycode":"0737"} +, +{"name":"桃江县","adcode":"430922","citycode":"0737"} +, +{"name":"安化县","adcode":"430923","citycode":"0737"} +, +{"name":"沅江市","adcode":"430981","citycode":"0737"} +, +{"name":"郴州市","adcode":"431000","citycode":"0735"} +, +{"name":"北湖区","adcode":"431002","citycode":"0735"} +, +{"name":"苏仙区","adcode":"431003","citycode":"0735"} +, +{"name":"桂阳县","adcode":"431021","citycode":"0735"} +, +{"name":"宜章县","adcode":"431022","citycode":"0735"} +, +{"name":"永兴县","adcode":"431023","citycode":"0735"} +, +{"name":"嘉禾县","adcode":"431024","citycode":"0735"} +, +{"name":"临武县","adcode":"431025","citycode":"0735"} +, +{"name":"汝城县","adcode":"431026","citycode":"0735"} +, +{"name":"桂东县","adcode":"431027","citycode":"0735"} +, +{"name":"安仁县","adcode":"431028","citycode":"0735"} +, +{"name":"资兴市","adcode":"431081","citycode":"0735"} +, +{"name":"永州市","adcode":"431100","citycode":"0746"} +, +{"name":"零陵区","adcode":"431102","citycode":"0746"} +, +{"name":"冷水滩区","adcode":"431103","citycode":"0746"} +, +{"name":"东安县","adcode":"431122","citycode":"0746"} +, +{"name":"双牌县","adcode":"431123","citycode":"0746"} +, +{"name":"道县","adcode":"431124","citycode":"0746"} +, +{"name":"江永县","adcode":"431125","citycode":"0746"} +, +{"name":"宁远县","adcode":"431126","citycode":"0746"} +, +{"name":"蓝山县","adcode":"431127","citycode":"0746"} +, +{"name":"新田县","adcode":"431128","citycode":"0746"} +, +{"name":"江华瑶族自治县","adcode":"431129","citycode":"0746"} +, +{"name":"祁阳市","adcode":"431181","citycode":"0746"} +, +{"name":"怀化市","adcode":"431200","citycode":"0745"} +, +{"name":"鹤城区","adcode":"431202","citycode":"0745"} +, +{"name":"中方县","adcode":"431221","citycode":"0745"} +, +{"name":"沅陵县","adcode":"431222","citycode":"0745"} +, +{"name":"辰溪县","adcode":"431223","citycode":"0745"} +, +{"name":"溆浦县","adcode":"431224","citycode":"0745"} +, +{"name":"会同县","adcode":"431225","citycode":"0745"} +, +{"name":"麻阳苗族自治县","adcode":"431226","citycode":"0745"} +, +{"name":"新晃侗族自治县","adcode":"431227","citycode":"0745"} +, +{"name":"芷江侗族自治县","adcode":"431228","citycode":"0745"} +, +{"name":"靖州苗族侗族自治县","adcode":"431229","citycode":"0745"} +, +{"name":"通道侗族自治县","adcode":"431230","citycode":"0745"} +, +{"name":"洪江市","adcode":"431281","citycode":"0745"} +, +{"name":"娄底市","adcode":"431300","citycode":"0738"} +, +{"name":"娄星区","adcode":"431302","citycode":"0738"} +, +{"name":"双峰县","adcode":"431321","citycode":"0738"} +, +{"name":"新化县","adcode":"431322","citycode":"0738"} +, +{"name":"冷水江市","adcode":"431381","citycode":"0738"} +, +{"name":"涟源市","adcode":"431382","citycode":"0738"} +, +{"name":"湘西土家族苗族自治州","adcode":"433100","citycode":"0743"} +, +{"name":"吉首市","adcode":"433101","citycode":"0743"} +, +{"name":"泸溪县","adcode":"433122","citycode":"0743"} +, +{"name":"凤凰县","adcode":"433123","citycode":"0743"} +, +{"name":"花垣县","adcode":"433124","citycode":"0743"} +, +{"name":"保靖县","adcode":"433125","citycode":"0743"} +, +{"name":"古丈县","adcode":"433126","citycode":"0743"} +, +{"name":"永顺县","adcode":"433127","citycode":"0743"} +, +{"name":"龙山县","adcode":"433130","citycode":"0743"} +, +{"name":"广东省","adcode":"440000","citycode":"\\N"} +, +{"name":"广州市","adcode":"440100","citycode":"020"} +, +{"name":"荔湾区","adcode":"440103","citycode":"020"} +, +{"name":"越秀区","adcode":"440104","citycode":"020"} +, +{"name":"海珠区","adcode":"440105","citycode":"020"} +, +{"name":"天河区","adcode":"440106","citycode":"020"} +, +{"name":"白云区","adcode":"440111","citycode":"020"} +, +{"name":"黄埔区","adcode":"440112","citycode":"020"} +, +{"name":"番禺区","adcode":"440113","citycode":"020"} +, +{"name":"花都区","adcode":"440114","citycode":"020"} +, +{"name":"南沙区","adcode":"440115","citycode":"020"} +, +{"name":"从化区","adcode":"440117","citycode":"020"} +, +{"name":"增城区","adcode":"440118","citycode":"020"} +, +{"name":"韶关市","adcode":"440200","citycode":"0751"} +, +{"name":"武江区","adcode":"440203","citycode":"0751"} +, +{"name":"浈江区","adcode":"440204","citycode":"0751"} +, +{"name":"曲江区","adcode":"440205","citycode":"0751"} +, +{"name":"始兴县","adcode":"440222","citycode":"0751"} +, +{"name":"仁化县","adcode":"440224","citycode":"0751"} +, +{"name":"翁源县","adcode":"440229","citycode":"0751"} +, +{"name":"乳源瑶族自治县","adcode":"440232","citycode":"0751"} +, +{"name":"新丰县","adcode":"440233","citycode":"0751"} +, +{"name":"乐昌市","adcode":"440281","citycode":"0751"} +, +{"name":"南雄市","adcode":"440282","citycode":"0751"} +, +{"name":"深圳市","adcode":"440300","citycode":"0755"} +, +{"name":"罗湖区","adcode":"440303","citycode":"0755"} +, +{"name":"福田区","adcode":"440304","citycode":"0755"} +, +{"name":"南山区","adcode":"440305","citycode":"0755"} +, +{"name":"宝安区","adcode":"440306","citycode":"0755"} +, +{"name":"龙岗区","adcode":"440307","citycode":"0755"} +, +{"name":"盐田区","adcode":"440308","citycode":"0755"} +, +{"name":"龙华区","adcode":"440309","citycode":"0755"} +, +{"name":"坪山区","adcode":"440310","citycode":"0755"} +, +{"name":"光明区","adcode":"440311","citycode":"0755"} +, +{"name":"珠海市","adcode":"440400","citycode":"0756"} +, +{"name":"香洲区","adcode":"440402","citycode":"0756"} +, +{"name":"斗门区","adcode":"440403","citycode":"0756"} +, +{"name":"金湾区","adcode":"440404","citycode":"0756"} +, +{"name":"汕头市","adcode":"440500","citycode":"0754"} +, +{"name":"龙湖区","adcode":"440507","citycode":"0754"} +, +{"name":"金平区","adcode":"440511","citycode":"0754"} +, +{"name":"濠江区","adcode":"440512","citycode":"0754"} +, +{"name":"潮阳区","adcode":"440513","citycode":"0754"} +, +{"name":"潮南区","adcode":"440514","citycode":"0754"} +, +{"name":"澄海区","adcode":"440515","citycode":"0754"} +, +{"name":"南澳县","adcode":"440523","citycode":"0754"} +, +{"name":"佛山市","adcode":"440600","citycode":"0757"} +, +{"name":"禅城区","adcode":"440604","citycode":"0757"} +, +{"name":"南海区","adcode":"440605","citycode":"0757"} +, +{"name":"顺德区","adcode":"440606","citycode":"0757"} +, +{"name":"三水区","adcode":"440607","citycode":"0757"} +, +{"name":"高明区","adcode":"440608","citycode":"0757"} +, +{"name":"江门市","adcode":"440700","citycode":"0750"} +, +{"name":"蓬江区","adcode":"440703","citycode":"0750"} +, +{"name":"江海区","adcode":"440704","citycode":"0750"} +, +{"name":"新会区","adcode":"440705","citycode":"0750"} +, +{"name":"台山市","adcode":"440781","citycode":"0750"} +, +{"name":"开平市","adcode":"440783","citycode":"0750"} +, +{"name":"鹤山市","adcode":"440784","citycode":"0750"} +, +{"name":"恩平市","adcode":"440785","citycode":"0750"} +, +{"name":"湛江市","adcode":"440800","citycode":"0759"} +, +{"name":"赤坎区","adcode":"440802","citycode":"0759"} +, +{"name":"霞山区","adcode":"440803","citycode":"0759"} +, +{"name":"坡头区","adcode":"440804","citycode":"0759"} +, +{"name":"麻章区","adcode":"440811","citycode":"0759"} +, +{"name":"遂溪县","adcode":"440823","citycode":"0759"} +, +{"name":"徐闻县","adcode":"440825","citycode":"0759"} +, +{"name":"廉江市","adcode":"440881","citycode":"0759"} +, +{"name":"雷州市","adcode":"440882","citycode":"0759"} +, +{"name":"吴川市","adcode":"440883","citycode":"0759"} +, +{"name":"茂名市","adcode":"440900","citycode":"0668"} +, +{"name":"茂南区","adcode":"440902","citycode":"0668"} +, +{"name":"电白区","adcode":"440904","citycode":"0668"} +, +{"name":"高州市","adcode":"440981","citycode":"0668"} +, +{"name":"化州市","adcode":"440982","citycode":"0668"} +, +{"name":"信宜市","adcode":"440983","citycode":"0668"} +, +{"name":"肇庆市","adcode":"441200","citycode":"0758"} +, +{"name":"端州区","adcode":"441202","citycode":"0758"} +, +{"name":"鼎湖区","adcode":"441203","citycode":"0758"} +, +{"name":"高要区","adcode":"441204","citycode":"0758"} +, +{"name":"广宁县","adcode":"441223","citycode":"0758"} +, +{"name":"怀集县","adcode":"441224","citycode":"0758"} +, +{"name":"封开县","adcode":"441225","citycode":"0758"} +, +{"name":"德庆县","adcode":"441226","citycode":"0758"} +, +{"name":"四会市","adcode":"441284","citycode":"0758"} +, +{"name":"惠州市","adcode":"441300","citycode":"0752"} +, +{"name":"惠城区","adcode":"441302","citycode":"0752"} +, +{"name":"惠阳区","adcode":"441303","citycode":"0752"} +, +{"name":"博罗县","adcode":"441322","citycode":"0752"} +, +{"name":"惠东县","adcode":"441323","citycode":"0752"} +, +{"name":"龙门县","adcode":"441324","citycode":"0752"} +, +{"name":"梅州市","adcode":"441400","citycode":"0753"} +, +{"name":"梅江区","adcode":"441402","citycode":"0753"} +, +{"name":"梅县区","adcode":"441403","citycode":"0753"} +, +{"name":"大埔县","adcode":"441422","citycode":"0753"} +, +{"name":"丰顺县","adcode":"441423","citycode":"0753"} +, +{"name":"五华县","adcode":"441424","citycode":"0753"} +, +{"name":"平远县","adcode":"441426","citycode":"0753"} +, +{"name":"蕉岭县","adcode":"441427","citycode":"0753"} +, +{"name":"兴宁市","adcode":"441481","citycode":"0753"} +, +{"name":"汕尾市","adcode":"441500","citycode":"0660"} +, +{"name":"城区","adcode":"441502","citycode":"0660"} +, +{"name":"海丰县","adcode":"441521","citycode":"0660"} +, +{"name":"陆河县","adcode":"441523","citycode":"0660"} +, +{"name":"陆丰市","adcode":"441581","citycode":"0660"} +, +{"name":"河源市","adcode":"441600","citycode":"0762"} +, +{"name":"源城区","adcode":"441602","citycode":"0762"} +, +{"name":"紫金县","adcode":"441621","citycode":"0762"} +, +{"name":"龙川县","adcode":"441622","citycode":"0762"} +, +{"name":"连平县","adcode":"441623","citycode":"0762"} +, +{"name":"和平县","adcode":"441624","citycode":"0762"} +, +{"name":"东源县","adcode":"441625","citycode":"0762"} +, +{"name":"阳江市","adcode":"441700","citycode":"0662"} +, +{"name":"江城区","adcode":"441702","citycode":"0662"} +, +{"name":"阳东区","adcode":"441704","citycode":"0662"} +, +{"name":"阳西县","adcode":"441721","citycode":"0662"} +, +{"name":"阳春市","adcode":"441781","citycode":"0662"} +, +{"name":"清远市","adcode":"441800","citycode":"0763"} +, +{"name":"清城区","adcode":"441802","citycode":"0763"} +, +{"name":"清新区","adcode":"441803","citycode":"0763"} +, +{"name":"佛冈县","adcode":"441821","citycode":"0763"} +, +{"name":"阳山县","adcode":"441823","citycode":"0763"} +, +{"name":"连山壮族瑶族自治县","adcode":"441825","citycode":"0763"} +, +{"name":"连南瑶族自治县","adcode":"441826","citycode":"0763"} +, +{"name":"英德市","adcode":"441881","citycode":"0763"} +, +{"name":"连州市","adcode":"441882","citycode":"0763"} +, +{"name":"东莞市","adcode":"441900","citycode":"0769"} +, +{"name":"中山市","adcode":"442000","citycode":"0760"} +, +{"name":"潮州市","adcode":"445100","citycode":"0768"} +, +{"name":"湘桥区","adcode":"445102","citycode":"0768"} +, +{"name":"潮安区","adcode":"445103","citycode":"0768"} +, +{"name":"饶平县","adcode":"445122","citycode":"0768"} +, +{"name":"揭阳市","adcode":"445200","citycode":"0663"} +, +{"name":"榕城区","adcode":"445202","citycode":"0663"} +, +{"name":"揭东区","adcode":"445203","citycode":"0663"} +, +{"name":"揭西县","adcode":"445222","citycode":"0663"} +, +{"name":"惠来县","adcode":"445224","citycode":"0663"} +, +{"name":"普宁市","adcode":"445281","citycode":"0663"} +, +{"name":"云浮市","adcode":"445300","citycode":"0766"} +, +{"name":"云城区","adcode":"445302","citycode":"0766"} +, +{"name":"云安区","adcode":"445303","citycode":"0766"} +, +{"name":"新兴县","adcode":"445321","citycode":"0766"} +, +{"name":"郁南县","adcode":"445322","citycode":"0766"} +, +{"name":"罗定市","adcode":"445381","citycode":"0766"} +, +{"name":"广西壮族自治区","adcode":"450000","citycode":"\\N"} +, +{"name":"南宁市","adcode":"450100","citycode":"0771"} +, +{"name":"兴宁区","adcode":"450102","citycode":"0771"} +, +{"name":"青秀区","adcode":"450103","citycode":"0771"} +, +{"name":"江南区","adcode":"450105","citycode":"0771"} +, +{"name":"西乡塘区","adcode":"450107","citycode":"0771"} +, +{"name":"良庆区","adcode":"450108","citycode":"0771"} +, +{"name":"邕宁区","adcode":"450109","citycode":"0771"} +, +{"name":"武鸣区","adcode":"450110","citycode":"0771"} +, +{"name":"隆安县","adcode":"450123","citycode":"0771"} +, +{"name":"马山县","adcode":"450124","citycode":"0771"} +, +{"name":"上林县","adcode":"450125","citycode":"0771"} +, +{"name":"宾阳县","adcode":"450126","citycode":"0771"} +, +{"name":"横州市","adcode":"450181","citycode":"0771"} +, +{"name":"柳州市","adcode":"450200","citycode":"0772"} +, +{"name":"城中区","adcode":"450202","citycode":"0772"} +, +{"name":"鱼峰区","adcode":"450203","citycode":"0772"} +, +{"name":"柳南区","adcode":"450204","citycode":"0772"} +, +{"name":"柳北区","adcode":"450205","citycode":"0772"} +, +{"name":"柳江区","adcode":"450206","citycode":"0772"} +, +{"name":"柳城县","adcode":"450222","citycode":"0772"} +, +{"name":"鹿寨县","adcode":"450223","citycode":"0772"} +, +{"name":"融安县","adcode":"450224","citycode":"0772"} +, +{"name":"融水苗族自治县","adcode":"450225","citycode":"0772"} +, +{"name":"三江侗族自治县","adcode":"450226","citycode":"0772"} +, +{"name":"桂林市","adcode":"450300","citycode":"0773"} +, +{"name":"秀峰区","adcode":"450302","citycode":"0773"} +, +{"name":"叠彩区","adcode":"450303","citycode":"0773"} +, +{"name":"象山区","adcode":"450304","citycode":"0773"} +, +{"name":"七星区","adcode":"450305","citycode":"0773"} +, +{"name":"雁山区","adcode":"450311","citycode":"0773"} +, +{"name":"临桂区","adcode":"450312","citycode":"0773"} +, +{"name":"阳朔县","adcode":"450321","citycode":"0773"} +, +{"name":"灵川县","adcode":"450323","citycode":"0773"} +, +{"name":"全州县","adcode":"450324","citycode":"0773"} +, +{"name":"兴安县","adcode":"450325","citycode":"0773"} +, +{"name":"永福县","adcode":"450326","citycode":"0773"} +, +{"name":"灌阳县","adcode":"450327","citycode":"0773"} +, +{"name":"龙胜各族自治县","adcode":"450328","citycode":"0773"} +, +{"name":"资源县","adcode":"450329","citycode":"0773"} +, +{"name":"平乐县","adcode":"450330","citycode":"0773"} +, +{"name":"恭城瑶族自治县","adcode":"450332","citycode":"0773"} +, +{"name":"荔浦市","adcode":"450381","citycode":"0773"} +, +{"name":"梧州市","adcode":"450400","citycode":"0774"} +, +{"name":"万秀区","adcode":"450403","citycode":"0774"} +, +{"name":"长洲区","adcode":"450405","citycode":"0774"} +, +{"name":"龙圩区","adcode":"450406","citycode":"0774"} +, +{"name":"苍梧县","adcode":"450421","citycode":"0774"} +, +{"name":"藤县","adcode":"450422","citycode":"0774"} +, +{"name":"蒙山县","adcode":"450423","citycode":"0774"} +, +{"name":"岑溪市","adcode":"450481","citycode":"0774"} +, +{"name":"北海市","adcode":"450500","citycode":"0779"} +, +{"name":"海城区","adcode":"450502","citycode":"0779"} +, +{"name":"银海区","adcode":"450503","citycode":"0779"} +, +{"name":"铁山港区","adcode":"450512","citycode":"0779"} +, +{"name":"合浦县","adcode":"450521","citycode":"0779"} +, +{"name":"防城港市","adcode":"450600","citycode":"0770"} +, +{"name":"港口区","adcode":"450602","citycode":"0770"} +, +{"name":"防城区","adcode":"450603","citycode":"0770"} +, +{"name":"上思县","adcode":"450621","citycode":"0770"} +, +{"name":"东兴市","adcode":"450681","citycode":"0770"} +, +{"name":"钦州市","adcode":"450700","citycode":"0777"} +, +{"name":"钦南区","adcode":"450702","citycode":"0777"} +, +{"name":"钦北区","adcode":"450703","citycode":"0777"} +, +{"name":"灵山县","adcode":"450721","citycode":"0777"} +, +{"name":"浦北县","adcode":"450722","citycode":"0777"} +, +{"name":"贵港市","adcode":"450800","citycode":"1755"} +, +{"name":"港北区","adcode":"450802","citycode":"1755"} +, +{"name":"港南区","adcode":"450803","citycode":"1755"} +, +{"name":"覃塘区","adcode":"450804","citycode":"1755"} +, +{"name":"平南县","adcode":"450821","citycode":"1755"} +, +{"name":"桂平市","adcode":"450881","citycode":"1755"} +, +{"name":"玉林市","adcode":"450900","citycode":"0775"} +, +{"name":"玉州区","adcode":"450902","citycode":"0775"} +, +{"name":"福绵区","adcode":"450903","citycode":"0775"} +, +{"name":"容县","adcode":"450921","citycode":"0775"} +, +{"name":"陆川县","adcode":"450922","citycode":"0775"} +, +{"name":"博白县","adcode":"450923","citycode":"0775"} +, +{"name":"兴业县","adcode":"450924","citycode":"0775"} +, +{"name":"北流市","adcode":"450981","citycode":"0775"} +, +{"name":"百色市","adcode":"451000","citycode":"0776"} +, +{"name":"右江区","adcode":"451002","citycode":"0776"} +, +{"name":"田阳区","adcode":"451003","citycode":"0776"} +, +{"name":"田东县","adcode":"451022","citycode":"0776"} +, +{"name":"德保县","adcode":"451024","citycode":"0776"} +, +{"name":"那坡县","adcode":"451026","citycode":"0776"} +, +{"name":"凌云县","adcode":"451027","citycode":"0776"} +, +{"name":"乐业县","adcode":"451028","citycode":"0776"} +, +{"name":"田林县","adcode":"451029","citycode":"0776"} +, +{"name":"西林县","adcode":"451030","citycode":"0776"} +, +{"name":"隆林各族自治县","adcode":"451031","citycode":"0776"} +, +{"name":"靖西市","adcode":"451081","citycode":"0776"} +, +{"name":"平果市","adcode":"451082","citycode":"0776"} +, +{"name":"贺州市","adcode":"451100","citycode":"1774"} +, +{"name":"八步区","adcode":"451102","citycode":"1774"} +, +{"name":"平桂区","adcode":"451103","citycode":"1774"} +, +{"name":"昭平县","adcode":"451121","citycode":"1774"} +, +{"name":"钟山县","adcode":"451122","citycode":"1774"} +, +{"name":"富川瑶族自治县","adcode":"451123","citycode":"1774"} +, +{"name":"河池市","adcode":"451200","citycode":"0778"} +, +{"name":"金城江区","adcode":"451202","citycode":"0778"} +, +{"name":"宜州区","adcode":"451203","citycode":"0778"} +, +{"name":"南丹县","adcode":"451221","citycode":"0778"} +, +{"name":"天峨县","adcode":"451222","citycode":"0778"} +, +{"name":"凤山县","adcode":"451223","citycode":"0778"} +, +{"name":"东兰县","adcode":"451224","citycode":"0778"} +, +{"name":"罗城仫佬族自治县","adcode":"451225","citycode":"0778"} +, +{"name":"环江毛南族自治县","adcode":"451226","citycode":"0778"} +, +{"name":"巴马瑶族自治县","adcode":"451227","citycode":"0778"} +, +{"name":"都安瑶族自治县","adcode":"451228","citycode":"0778"} +, +{"name":"大化瑶族自治县","adcode":"451229","citycode":"0778"} +, +{"name":"来宾市","adcode":"451300","citycode":"1772"} +, +{"name":"兴宾区","adcode":"451302","citycode":"1772"} +, +{"name":"忻城县","adcode":"451321","citycode":"1772"} +, +{"name":"象州县","adcode":"451322","citycode":"1772"} +, +{"name":"武宣县","adcode":"451323","citycode":"1772"} +, +{"name":"金秀瑶族自治县","adcode":"451324","citycode":"1772"} +, +{"name":"合山市","adcode":"451381","citycode":"1772"} +, +{"name":"崇左市","adcode":"451400","citycode":"1771"} +, +{"name":"江州区","adcode":"451402","citycode":"1771"} +, +{"name":"扶绥县","adcode":"451421","citycode":"1771"} +, +{"name":"宁明县","adcode":"451422","citycode":"1771"} +, +{"name":"龙州县","adcode":"451423","citycode":"1771"} +, +{"name":"大新县","adcode":"451424","citycode":"1771"} +, +{"name":"天等县","adcode":"451425","citycode":"1771"} +, +{"name":"凭祥市","adcode":"451481","citycode":"1771"} +, +{"name":"海南省","adcode":"460000","citycode":"\\N"} +, +{"name":"海口市","adcode":"460100","citycode":"0898"} +, +{"name":"秀英区","adcode":"460105","citycode":"0898"} +, +{"name":"龙华区","adcode":"460106","citycode":"0898"} +, +{"name":"琼山区","adcode":"460107","citycode":"0898"} +, +{"name":"美兰区","adcode":"460108","citycode":"0898"} +, +{"name":"三亚市","adcode":"460200","citycode":"0899"} +, +{"name":"海棠区","adcode":"460202","citycode":"0899"} +, +{"name":"吉阳区","adcode":"460203","citycode":"0899"} +, +{"name":"天涯区","adcode":"460204","citycode":"0899"} +, +{"name":"崖州区","adcode":"460205","citycode":"0899"} +, +{"name":"三沙市","adcode":"460300","citycode":"2898"} +, +{"name":"西沙区","adcode":"460301","citycode":"2898"} +, +{"name":"南沙区","adcode":"460302","citycode":"2898"} +, +{"name":"儋州市","adcode":"460400","citycode":"0805"} +, +{"name":"五指山市","adcode":"469001","citycode":"1897"} +, +{"name":"琼海市","adcode":"469002","citycode":"1894"} +, +{"name":"文昌市","adcode":"469005","citycode":"1893"} +, +{"name":"万宁市","adcode":"469006","citycode":"1898"} +, +{"name":"东方市","adcode":"469007","citycode":"0807"} +, +{"name":"定安县","adcode":"469021","citycode":"0806"} +, +{"name":"屯昌县","adcode":"469022","citycode":"1892"} +, +{"name":"澄迈县","adcode":"469023","citycode":"0804"} +, +{"name":"临高县","adcode":"469024","citycode":"1896"} +, +{"name":"白沙黎族自治县","adcode":"469025","citycode":"0802"} +, +{"name":"昌江黎族自治县","adcode":"469026","citycode":"0803"} +, +{"name":"乐东黎族自治县","adcode":"469027","citycode":"2802"} +, +{"name":"陵水黎族自治县","adcode":"469028","citycode":"0809"} +, +{"name":"保亭黎族苗族自治县","adcode":"469029","citycode":"0801"} +, +{"name":"琼中黎族苗族自治县","adcode":"469030","citycode":"1899"} +, +{"name":"重庆市","adcode":"500000","citycode":"023"} +, +{"name":"万州区","adcode":"500101","citycode":"023"} +, +{"name":"涪陵区","adcode":"500102","citycode":"023"} +, +{"name":"渝中区","adcode":"500103","citycode":"023"} +, +{"name":"大渡口区","adcode":"500104","citycode":"023"} +, +{"name":"江北区","adcode":"500105","citycode":"023"} +, +{"name":"沙坪坝区","adcode":"500106","citycode":"023"} +, +{"name":"九龙坡区","adcode":"500107","citycode":"023"} +, +{"name":"南岸区","adcode":"500108","citycode":"023"} +, +{"name":"北碚区","adcode":"500109","citycode":"023"} +, +{"name":"綦江区","adcode":"500110","citycode":"023"} +, +{"name":"大足区","adcode":"500111","citycode":"023"} +, +{"name":"渝北区","adcode":"500112","citycode":"023"} +, +{"name":"巴南区","adcode":"500113","citycode":"023"} +, +{"name":"黔江区","adcode":"500114","citycode":"023"} +, +{"name":"长寿区","adcode":"500115","citycode":"023"} +, +{"name":"江津区","adcode":"500116","citycode":"023"} +, +{"name":"合川区","adcode":"500117","citycode":"023"} +, +{"name":"永川区","adcode":"500118","citycode":"023"} +, +{"name":"南川区","adcode":"500119","citycode":"023"} +, +{"name":"璧山区","adcode":"500120","citycode":"023"} +, +{"name":"铜梁区","adcode":"500151","citycode":"023"} +, +{"name":"潼南区","adcode":"500152","citycode":"023"} +, +{"name":"荣昌区","adcode":"500153","citycode":"023"} +, +{"name":"开州区","adcode":"500154","citycode":"023"} +, +{"name":"梁平区","adcode":"500155","citycode":"023"} +, +{"name":"武隆区","adcode":"500156","citycode":"023"} +, +{"name":"城口县","adcode":"500229","citycode":"023"} +, +{"name":"丰都县","adcode":"500230","citycode":"023"} +, +{"name":"垫江县","adcode":"500231","citycode":"023"} +, +{"name":"忠县","adcode":"500233","citycode":"023"} +, +{"name":"云阳县","adcode":"500235","citycode":"023"} +, +{"name":"奉节县","adcode":"500236","citycode":"023"} +, +{"name":"巫山县","adcode":"500237","citycode":"023"} +, +{"name":"巫溪县","adcode":"500238","citycode":"023"} +, +{"name":"石柱土家族自治县","adcode":"500240","citycode":"023"} +, +{"name":"秀山土家族苗族自治县","adcode":"500241","citycode":"023"} +, +{"name":"酉阳土家族苗族自治县","adcode":"500242","citycode":"023"} +, +{"name":"彭水苗族土家族自治县","adcode":"500243","citycode":"023"} +, +{"name":"四川省","adcode":"510000","citycode":"\\N"} +, +{"name":"成都市","adcode":"510100","citycode":"028"} +, +{"name":"锦江区","adcode":"510104","citycode":"028"} +, +{"name":"青羊区","adcode":"510105","citycode":"028"} +, +{"name":"金牛区","adcode":"510106","citycode":"028"} +, +{"name":"武侯区","adcode":"510107","citycode":"028"} +, +{"name":"成华区","adcode":"510108","citycode":"028"} +, +{"name":"龙泉驿区","adcode":"510112","citycode":"028"} +, +{"name":"青白江区","adcode":"510113","citycode":"028"} +, +{"name":"新都区","adcode":"510114","citycode":"028"} +, +{"name":"温江区","adcode":"510115","citycode":"028"} +, +{"name":"双流区","adcode":"510116","citycode":"028"} +, +{"name":"郫都区","adcode":"510117","citycode":"028"} +, +{"name":"新津区","adcode":"510118","citycode":"028"} +, +{"name":"金堂县","adcode":"510121","citycode":"028"} +, +{"name":"大邑县","adcode":"510129","citycode":"028"} +, +{"name":"蒲江县","adcode":"510131","citycode":"028"} +, +{"name":"都江堰市","adcode":"510181","citycode":"028"} +, +{"name":"彭州市","adcode":"510182","citycode":"028"} +, +{"name":"邛崃市","adcode":"510183","citycode":"028"} +, +{"name":"崇州市","adcode":"510184","citycode":"028"} +, +{"name":"简阳市","adcode":"510185","citycode":"028"} +, +{"name":"自贡市","adcode":"510300","citycode":"0813"} +, +{"name":"自流井区","adcode":"510302","citycode":"0813"} +, +{"name":"贡井区","adcode":"510303","citycode":"0813"} +, +{"name":"大安区","adcode":"510304","citycode":"0813"} +, +{"name":"沿滩区","adcode":"510311","citycode":"0813"} +, +{"name":"荣县","adcode":"510321","citycode":"0813"} +, +{"name":"富顺县","adcode":"510322","citycode":"0813"} +, +{"name":"攀枝花市","adcode":"510400","citycode":"0812"} +, +{"name":"东区","adcode":"510402","citycode":"0812"} +, +{"name":"西区","adcode":"510403","citycode":"0812"} +, +{"name":"仁和区","adcode":"510411","citycode":"0812"} +, +{"name":"米易县","adcode":"510421","citycode":"0812"} +, +{"name":"盐边县","adcode":"510422","citycode":"0812"} +, +{"name":"泸州市","adcode":"510500","citycode":"0830"} +, +{"name":"江阳区","adcode":"510502","citycode":"0830"} +, +{"name":"纳溪区","adcode":"510503","citycode":"0830"} +, +{"name":"龙马潭区","adcode":"510504","citycode":"0830"} +, +{"name":"泸县","adcode":"510521","citycode":"0830"} +, +{"name":"合江县","adcode":"510522","citycode":"0830"} +, +{"name":"叙永县","adcode":"510524","citycode":"0830"} +, +{"name":"古蔺县","adcode":"510525","citycode":"0830"} +, +{"name":"德阳市","adcode":"510600","citycode":"0838"} +, +{"name":"旌阳区","adcode":"510603","citycode":"0838"} +, +{"name":"罗江区","adcode":"510604","citycode":"0838"} +, +{"name":"中江县","adcode":"510623","citycode":"0838"} +, +{"name":"广汉市","adcode":"510681","citycode":"0838"} +, +{"name":"什邡市","adcode":"510682","citycode":"0838"} +, +{"name":"绵竹市","adcode":"510683","citycode":"0838"} +, +{"name":"绵阳市","adcode":"510700","citycode":"0816"} +, +{"name":"涪城区","adcode":"510703","citycode":"0816"} +, +{"name":"游仙区","adcode":"510704","citycode":"0816"} +, +{"name":"安州区","adcode":"510705","citycode":"0816"} +, +{"name":"三台县","adcode":"510722","citycode":"0816"} +, +{"name":"盐亭县","adcode":"510723","citycode":"0816"} +, +{"name":"梓潼县","adcode":"510725","citycode":"0816"} +, +{"name":"北川羌族自治县","adcode":"510726","citycode":"0816"} +, +{"name":"平武县","adcode":"510727","citycode":"0816"} +, +{"name":"江油市","adcode":"510781","citycode":"0816"} +, +{"name":"广元市","adcode":"510800","citycode":"0839"} +, +{"name":"利州区","adcode":"510802","citycode":"0839"} +, +{"name":"昭化区","adcode":"510811","citycode":"0839"} +, +{"name":"朝天区","adcode":"510812","citycode":"0839"} +, +{"name":"旺苍县","adcode":"510821","citycode":"0839"} +, +{"name":"青川县","adcode":"510822","citycode":"0839"} +, +{"name":"剑阁县","adcode":"510823","citycode":"0839"} +, +{"name":"苍溪县","adcode":"510824","citycode":"0839"} +, +{"name":"遂宁市","adcode":"510900","citycode":"0825"} +, +{"name":"船山区","adcode":"510903","citycode":"0825"} +, +{"name":"安居区","adcode":"510904","citycode":"0825"} +, +{"name":"蓬溪县","adcode":"510921","citycode":"0825"} +, +{"name":"大英县","adcode":"510923","citycode":"0825"} +, +{"name":"射洪市","adcode":"510981","citycode":"0825"} +, +{"name":"内江市","adcode":"511000","citycode":"1832"} +, +{"name":"市中区","adcode":"511002","citycode":"1832"} +, +{"name":"东兴区","adcode":"511011","citycode":"1832"} +, +{"name":"威远县","adcode":"511024","citycode":"1832"} +, +{"name":"资中县","adcode":"511025","citycode":"1832"} +, +{"name":"隆昌市","adcode":"511083","citycode":"1832"} +, +{"name":"乐山市","adcode":"511100","citycode":"0833"} +, +{"name":"市中区","adcode":"511102","citycode":"0833"} +, +{"name":"沙湾区","adcode":"511111","citycode":"0833"} +, +{"name":"五通桥区","adcode":"511112","citycode":"0833"} +, +{"name":"金口河区","adcode":"511113","citycode":"0833"} +, +{"name":"犍为县","adcode":"511123","citycode":"0833"} +, +{"name":"井研县","adcode":"511124","citycode":"0833"} +, +{"name":"夹江县","adcode":"511126","citycode":"0833"} +, +{"name":"沐川县","adcode":"511129","citycode":"0833"} +, +{"name":"峨边彝族自治县","adcode":"511132","citycode":"0833"} +, +{"name":"马边彝族自治县","adcode":"511133","citycode":"0833"} +, +{"name":"峨眉山市","adcode":"511181","citycode":"0833"} +, +{"name":"南充市","adcode":"511300","citycode":"0817"} +, +{"name":"顺庆区","adcode":"511302","citycode":"0817"} +, +{"name":"高坪区","adcode":"511303","citycode":"0817"} +, +{"name":"嘉陵区","adcode":"511304","citycode":"0817"} +, +{"name":"南部县","adcode":"511321","citycode":"0817"} +, +{"name":"营山县","adcode":"511322","citycode":"0817"} +, +{"name":"蓬安县","adcode":"511323","citycode":"0817"} +, +{"name":"仪陇县","adcode":"511324","citycode":"0817"} +, +{"name":"西充县","adcode":"511325","citycode":"0817"} +, +{"name":"阆中市","adcode":"511381","citycode":"0817"} +, +{"name":"眉山市","adcode":"511400","citycode":"1833"} +, +{"name":"东坡区","adcode":"511402","citycode":"1833"} +, +{"name":"彭山区","adcode":"511403","citycode":"1833"} +, +{"name":"仁寿县","adcode":"511421","citycode":"1833"} +, +{"name":"洪雅县","adcode":"511423","citycode":"1833"} +, +{"name":"丹棱县","adcode":"511424","citycode":"1833"} +, +{"name":"青神县","adcode":"511425","citycode":"1833"} +, +{"name":"宜宾市","adcode":"511500","citycode":"0831"} +, +{"name":"翠屏区","adcode":"511502","citycode":"0831"} +, +{"name":"南溪区","adcode":"511503","citycode":"0831"} +, +{"name":"叙州区","adcode":"511504","citycode":"0831"} +, +{"name":"江安县","adcode":"511523","citycode":"0831"} +, +{"name":"长宁县","adcode":"511524","citycode":"0831"} +, +{"name":"高县","adcode":"511525","citycode":"0831"} +, +{"name":"珙县","adcode":"511526","citycode":"0831"} +, +{"name":"筠连县","adcode":"511527","citycode":"0831"} +, +{"name":"兴文县","adcode":"511528","citycode":"0831"} +, +{"name":"屏山县","adcode":"511529","citycode":"0831"} +, +{"name":"广安市","adcode":"511600","citycode":"0826"} +, +{"name":"广安区","adcode":"511602","citycode":"0826"} +, +{"name":"前锋区","adcode":"511603","citycode":"0826"} +, +{"name":"岳池县","adcode":"511621","citycode":"0826"} +, +{"name":"武胜县","adcode":"511622","citycode":"0826"} +, +{"name":"邻水县","adcode":"511623","citycode":"0826"} +, +{"name":"华蓥市","adcode":"511681","citycode":"0826"} +, +{"name":"达州市","adcode":"511700","citycode":"0818"} +, +{"name":"通川区","adcode":"511702","citycode":"0818"} +, +{"name":"达川区","adcode":"511703","citycode":"0818"} +, +{"name":"宣汉县","adcode":"511722","citycode":"0818"} +, +{"name":"开江县","adcode":"511723","citycode":"0818"} +, +{"name":"大竹县","adcode":"511724","citycode":"0818"} +, +{"name":"渠县","adcode":"511725","citycode":"0818"} +, +{"name":"万源市","adcode":"511781","citycode":"0818"} +, +{"name":"雅安市","adcode":"511800","citycode":"0835"} +, +{"name":"雨城区","adcode":"511802","citycode":"0835"} +, +{"name":"名山区","adcode":"511803","citycode":"0835"} +, +{"name":"荥经县","adcode":"511822","citycode":"0835"} +, +{"name":"汉源县","adcode":"511823","citycode":"0835"} +, +{"name":"石棉县","adcode":"511824","citycode":"0835"} +, +{"name":"天全县","adcode":"511825","citycode":"0835"} +, +{"name":"芦山县","adcode":"511826","citycode":"0835"} +, +{"name":"宝兴县","adcode":"511827","citycode":"0835"} +, +{"name":"巴中市","adcode":"511900","citycode":"0827"} +, +{"name":"巴州区","adcode":"511902","citycode":"0827"} +, +{"name":"恩阳区","adcode":"511903","citycode":"0827"} +, +{"name":"通江县","adcode":"511921","citycode":"0827"} +, +{"name":"南江县","adcode":"511922","citycode":"0827"} +, +{"name":"平昌县","adcode":"511923","citycode":"0827"} +, +{"name":"资阳市","adcode":"512000","citycode":"0832"} +, +{"name":"雁江区","adcode":"512002","citycode":"0832"} +, +{"name":"安岳县","adcode":"512021","citycode":"0832"} +, +{"name":"乐至县","adcode":"512022","citycode":"0832"} +, +{"name":"阿坝藏族羌族自治州","adcode":"513200","citycode":"0837"} +, +{"name":"马尔康市","adcode":"513201","citycode":"0837"} +, +{"name":"汶川县","adcode":"513221","citycode":"0837"} +, +{"name":"理县","adcode":"513222","citycode":"0837"} +, +{"name":"茂县","adcode":"513223","citycode":"0837"} +, +{"name":"松潘县","adcode":"513224","citycode":"0837"} +, +{"name":"九寨沟县","adcode":"513225","citycode":"0837"} +, +{"name":"金川县","adcode":"513226","citycode":"0837"} +, +{"name":"小金县","adcode":"513227","citycode":"0837"} +, +{"name":"黑水县","adcode":"513228","citycode":"0837"} +, +{"name":"壤塘县","adcode":"513230","citycode":"0837"} +, +{"name":"阿坝县","adcode":"513231","citycode":"0837"} +, +{"name":"若尔盖县","adcode":"513232","citycode":"0837"} +, +{"name":"红原县","adcode":"513233","citycode":"0837"} +, +{"name":"甘孜藏族自治州","adcode":"513300","citycode":"0836"} +, +{"name":"康定市","adcode":"513301","citycode":"0836"} +, +{"name":"泸定县","adcode":"513322","citycode":"0836"} +, +{"name":"丹巴县","adcode":"513323","citycode":"0836"} +, +{"name":"九龙县","adcode":"513324","citycode":"0836"} +, +{"name":"雅江县","adcode":"513325","citycode":"0836"} +, +{"name":"道孚县","adcode":"513326","citycode":"0836"} +, +{"name":"炉霍县","adcode":"513327","citycode":"0836"} +, +{"name":"甘孜县","adcode":"513328","citycode":"0836"} +, +{"name":"新龙县","adcode":"513329","citycode":"0836"} +, +{"name":"德格县","adcode":"513330","citycode":"0836"} +, +{"name":"白玉县","adcode":"513331","citycode":"0836"} +, +{"name":"石渠县","adcode":"513332","citycode":"0836"} +, +{"name":"色达县","adcode":"513333","citycode":"0836"} +, +{"name":"理塘县","adcode":"513334","citycode":"0836"} +, +{"name":"巴塘县","adcode":"513335","citycode":"0836"} +, +{"name":"乡城县","adcode":"513336","citycode":"0836"} +, +{"name":"稻城县","adcode":"513337","citycode":"0836"} +, +{"name":"得荣县","adcode":"513338","citycode":"0836"} +, +{"name":"凉山彝族自治州","adcode":"513400","citycode":"0834"} +, +{"name":"西昌市","adcode":"513401","citycode":"0834"} +, +{"name":"会理市","adcode":"513402","citycode":"0834"} +, +{"name":"木里藏族自治县","adcode":"513422","citycode":"0834"} +, +{"name":"盐源县","adcode":"513423","citycode":"0834"} +, +{"name":"德昌县","adcode":"513424","citycode":"0834"} +, +{"name":"会东县","adcode":"513426","citycode":"0834"} +, +{"name":"宁南县","adcode":"513427","citycode":"0834"} +, +{"name":"普格县","adcode":"513428","citycode":"0834"} +, +{"name":"布拖县","adcode":"513429","citycode":"0834"} +, +{"name":"金阳县","adcode":"513430","citycode":"0834"} +, +{"name":"昭觉县","adcode":"513431","citycode":"0834"} +, +{"name":"喜德县","adcode":"513432","citycode":"0834"} +, +{"name":"冕宁县","adcode":"513433","citycode":"0834"} +, +{"name":"越西县","adcode":"513434","citycode":"0834"} +, +{"name":"甘洛县","adcode":"513435","citycode":"0834"} +, +{"name":"美姑县","adcode":"513436","citycode":"0834"} +, +{"name":"雷波县","adcode":"513437","citycode":"0834"} +, +{"name":"贵州省","adcode":"520000","citycode":"\\N"} +, +{"name":"贵阳市","adcode":"520100","citycode":"0851"} +, +{"name":"南明区","adcode":"520102","citycode":"0851"} +, +{"name":"云岩区","adcode":"520103","citycode":"0851"} +, +{"name":"花溪区","adcode":"520111","citycode":"0851"} +, +{"name":"乌当区","adcode":"520112","citycode":"0851"} +, +{"name":"白云区","adcode":"520113","citycode":"0851"} +, +{"name":"观山湖区","adcode":"520115","citycode":"0851"} +, +{"name":"开阳县","adcode":"520121","citycode":"0851"} +, +{"name":"息烽县","adcode":"520122","citycode":"0851"} +, +{"name":"修文县","adcode":"520123","citycode":"0851"} +, +{"name":"清镇市","adcode":"520181","citycode":"0851"} +, +{"name":"六盘水市","adcode":"520200","citycode":"0858"} +, +{"name":"钟山区","adcode":"520201","citycode":"0858"} +, +{"name":"六枝特区","adcode":"520203","citycode":"0858"} +, +{"name":"水城区","adcode":"520204","citycode":"0858"} +, +{"name":"盘州市","adcode":"520281","citycode":"0858"} +, +{"name":"遵义市","adcode":"520300","citycode":"0852"} +, +{"name":"红花岗区","adcode":"520302","citycode":"0852"} +, +{"name":"汇川区","adcode":"520303","citycode":"0852"} +, +{"name":"播州区","adcode":"520304","citycode":"0852"} +, +{"name":"桐梓县","adcode":"520322","citycode":"0852"} +, +{"name":"绥阳县","adcode":"520323","citycode":"0852"} +, +{"name":"正安县","adcode":"520324","citycode":"0852"} +, +{"name":"道真仡佬族苗族自治县","adcode":"520325","citycode":"0852"} +, +{"name":"务川仡佬族苗族自治县","adcode":"520326","citycode":"0852"} +, +{"name":"凤冈县","adcode":"520327","citycode":"0852"} +, +{"name":"湄潭县","adcode":"520328","citycode":"0852"} +, +{"name":"余庆县","adcode":"520329","citycode":"0852"} +, +{"name":"习水县","adcode":"520330","citycode":"0852"} +, +{"name":"赤水市","adcode":"520381","citycode":"0852"} +, +{"name":"仁怀市","adcode":"520382","citycode":"0852"} +, +{"name":"安顺市","adcode":"520400","citycode":"0853"} +, +{"name":"西秀区","adcode":"520402","citycode":"0853"} +, +{"name":"平坝区","adcode":"520403","citycode":"0853"} +, +{"name":"普定县","adcode":"520422","citycode":"0853"} +, +{"name":"镇宁布依族苗族自治县","adcode":"520423","citycode":"0853"} +, +{"name":"关岭布依族苗族自治县","adcode":"520424","citycode":"0853"} +, +{"name":"紫云苗族布依族自治县","adcode":"520425","citycode":"0853"} +, +{"name":"毕节市","adcode":"520500","citycode":"0857"} +, +{"name":"七星关区","adcode":"520502","citycode":"0857"} +, +{"name":"大方县","adcode":"520521","citycode":"0857"} +, +{"name":"金沙县","adcode":"520523","citycode":"0857"} +, +{"name":"织金县","adcode":"520524","citycode":"0857"} +, +{"name":"纳雍县","adcode":"520525","citycode":"0857"} +, +{"name":"威宁彝族回族苗族自治县","adcode":"520526","citycode":"0857"} +, +{"name":"赫章县","adcode":"520527","citycode":"0857"} +, +{"name":"黔西市","adcode":"520581","citycode":"0857"} +, +{"name":"铜仁市","adcode":"520600","citycode":"0856"} +, +{"name":"碧江区","adcode":"520602","citycode":"0856"} +, +{"name":"万山区","adcode":"520603","citycode":"0856"} +, +{"name":"江口县","adcode":"520621","citycode":"0856"} +, +{"name":"玉屏侗族自治县","adcode":"520622","citycode":"0856"} +, +{"name":"石阡县","adcode":"520623","citycode":"0856"} +, +{"name":"思南县","adcode":"520624","citycode":"0856"} +, +{"name":"印江土家族苗族自治县","adcode":"520625","citycode":"0856"} +, +{"name":"德江县","adcode":"520626","citycode":"0856"} +, +{"name":"沿河土家族自治县","adcode":"520627","citycode":"0856"} +, +{"name":"松桃苗族自治县","adcode":"520628","citycode":"0856"} +, +{"name":"黔西南布依族苗族自治州","adcode":"522300","citycode":"0859"} +, +{"name":"兴义市","adcode":"522301","citycode":"0859"} +, +{"name":"兴仁市","adcode":"522302","citycode":"0859"} +, +{"name":"普安县","adcode":"522323","citycode":"0859"} +, +{"name":"晴隆县","adcode":"522324","citycode":"0859"} +, +{"name":"贞丰县","adcode":"522325","citycode":"0859"} +, +{"name":"望谟县","adcode":"522326","citycode":"0859"} +, +{"name":"册亨县","adcode":"522327","citycode":"0859"} +, +{"name":"安龙县","adcode":"522328","citycode":"0859"} +, +{"name":"黔东南苗族侗族自治州","adcode":"522600","citycode":"0855"} +, +{"name":"凯里市","adcode":"522601","citycode":"0855"} +, +{"name":"黄平县","adcode":"522622","citycode":"0855"} +, +{"name":"施秉县","adcode":"522623","citycode":"0855"} +, +{"name":"三穗县","adcode":"522624","citycode":"0855"} +, +{"name":"镇远县","adcode":"522625","citycode":"0855"} +, +{"name":"岑巩县","adcode":"522626","citycode":"0855"} +, +{"name":"天柱县","adcode":"522627","citycode":"0855"} +, +{"name":"锦屏县","adcode":"522628","citycode":"0855"} +, +{"name":"剑河县","adcode":"522629","citycode":"0855"} +, +{"name":"台江县","adcode":"522630","citycode":"0855"} +, +{"name":"黎平县","adcode":"522631","citycode":"0855"} +, +{"name":"榕江县","adcode":"522632","citycode":"0855"} +, +{"name":"从江县","adcode":"522633","citycode":"0855"} +, +{"name":"雷山县","adcode":"522634","citycode":"0855"} +, +{"name":"麻江县","adcode":"522635","citycode":"0855"} +, +{"name":"丹寨县","adcode":"522636","citycode":"0855"} +, +{"name":"黔南布依族苗族自治州","adcode":"522700","citycode":"0854"} +, +{"name":"都匀市","adcode":"522701","citycode":"0854"} +, +{"name":"福泉市","adcode":"522702","citycode":"0854"} +, +{"name":"荔波县","adcode":"522722","citycode":"0854"} +, +{"name":"贵定县","adcode":"522723","citycode":"0854"} +, +{"name":"瓮安县","adcode":"522725","citycode":"0854"} +, +{"name":"独山县","adcode":"522726","citycode":"0854"} +, +{"name":"平塘县","adcode":"522727","citycode":"0854"} +, +{"name":"罗甸县","adcode":"522728","citycode":"0854"} +, +{"name":"长顺县","adcode":"522729","citycode":"0854"} +, +{"name":"龙里县","adcode":"522730","citycode":"0854"} +, +{"name":"惠水县","adcode":"522731","citycode":"0854"} +, +{"name":"三都水族自治县","adcode":"522732","citycode":"0854"} +, +{"name":"云南省","adcode":"530000","citycode":"\\N"} +, +{"name":"昆明市","adcode":"530100","citycode":"0871"} +, +{"name":"五华区","adcode":"530102","citycode":"0871"} +, +{"name":"盘龙区","adcode":"530103","citycode":"0871"} +, +{"name":"官渡区","adcode":"530111","citycode":"0871"} +, +{"name":"西山区","adcode":"530112","citycode":"0871"} +, +{"name":"东川区","adcode":"530113","citycode":"0871"} +, +{"name":"呈贡区","adcode":"530114","citycode":"0871"} +, +{"name":"晋宁区","adcode":"530115","citycode":"0871"} +, +{"name":"富民县","adcode":"530124","citycode":"0871"} +, +{"name":"宜良县","adcode":"530125","citycode":"0871"} +, +{"name":"石林彝族自治县","adcode":"530126","citycode":"0871"} +, +{"name":"嵩明县","adcode":"530127","citycode":"0871"} +, +{"name":"禄劝彝族苗族自治县","adcode":"530128","citycode":"0871"} +, +{"name":"寻甸回族彝族自治县","adcode":"530129","citycode":"0871"} +, +{"name":"安宁市","adcode":"530181","citycode":"0871"} +, +{"name":"曲靖市","adcode":"530300","citycode":"0874"} +, +{"name":"麒麟区","adcode":"530302","citycode":"0874"} +, +{"name":"沾益区","adcode":"530303","citycode":"0874"} +, +{"name":"马龙区","adcode":"530304","citycode":"0874"} +, +{"name":"陆良县","adcode":"530322","citycode":"0874"} +, +{"name":"师宗县","adcode":"530323","citycode":"0874"} +, +{"name":"罗平县","adcode":"530324","citycode":"0874"} +, +{"name":"富源县","adcode":"530325","citycode":"0874"} +, +{"name":"会泽县","adcode":"530326","citycode":"0874"} +, +{"name":"宣威市","adcode":"530381","citycode":"0874"} +, +{"name":"玉溪市","adcode":"530400","citycode":"0877"} +, +{"name":"红塔区","adcode":"530402","citycode":"0877"} +, +{"name":"江川区","adcode":"530403","citycode":"0877"} +, +{"name":"通海县","adcode":"530423","citycode":"0877"} +, +{"name":"华宁县","adcode":"530424","citycode":"0877"} +, +{"name":"易门县","adcode":"530425","citycode":"0877"} +, +{"name":"峨山彝族自治县","adcode":"530426","citycode":"0877"} +, +{"name":"新平彝族傣族自治县","adcode":"530427","citycode":"0877"} +, +{"name":"元江哈尼族彝族傣族自治县","adcode":"530428","citycode":"0877"} +, +{"name":"澄江市","adcode":"530481","citycode":"0877"} +, +{"name":"保山市","adcode":"530500","citycode":"0875"} +, +{"name":"隆阳区","adcode":"530502","citycode":"0875"} +, +{"name":"施甸县","adcode":"530521","citycode":"0875"} +, +{"name":"龙陵县","adcode":"530523","citycode":"0875"} +, +{"name":"昌宁县","adcode":"530524","citycode":"0875"} +, +{"name":"腾冲市","adcode":"530581","citycode":"0875"} +, +{"name":"昭通市","adcode":"530600","citycode":"0870"} +, +{"name":"昭阳区","adcode":"530602","citycode":"0870"} +, +{"name":"鲁甸县","adcode":"530621","citycode":"0870"} +, +{"name":"巧家县","adcode":"530622","citycode":"0870"} +, +{"name":"盐津县","adcode":"530623","citycode":"0870"} +, +{"name":"大关县","adcode":"530624","citycode":"0870"} +, +{"name":"永善县","adcode":"530625","citycode":"0870"} +, +{"name":"绥江县","adcode":"530626","citycode":"0870"} +, +{"name":"镇雄县","adcode":"530627","citycode":"0870"} +, +{"name":"彝良县","adcode":"530628","citycode":"0870"} +, +{"name":"威信县","adcode":"530629","citycode":"0870"} +, +{"name":"水富市","adcode":"530681","citycode":"0870"} +, +{"name":"丽江市","adcode":"530700","citycode":"0888"} +, +{"name":"古城区","adcode":"530702","citycode":"0888"} +, +{"name":"玉龙纳西族自治县","adcode":"530721","citycode":"0888"} +, +{"name":"永胜县","adcode":"530722","citycode":"0888"} +, +{"name":"华坪县","adcode":"530723","citycode":"0888"} +, +{"name":"宁蒗彝族自治县","adcode":"530724","citycode":"0888"} +, +{"name":"普洱市","adcode":"530800","citycode":"0879"} +, +{"name":"思茅区","adcode":"530802","citycode":"0879"} +, +{"name":"宁洱哈尼族彝族自治县","adcode":"530821","citycode":"0879"} +, +{"name":"墨江哈尼族自治县","adcode":"530822","citycode":"0879"} +, +{"name":"景东彝族自治县","adcode":"530823","citycode":"0879"} +, +{"name":"景谷傣族彝族自治县","adcode":"530824","citycode":"0879"} +, +{"name":"镇沅彝族哈尼族拉祜族自治县","adcode":"530825","citycode":"0879"} +, +{"name":"江城哈尼族彝族自治县","adcode":"530826","citycode":"0879"} +, +{"name":"孟连傣族拉祜族佤族自治县","adcode":"530827","citycode":"0879"} +, +{"name":"澜沧拉祜族自治县","adcode":"530828","citycode":"0879"} +, +{"name":"西盟佤族自治县","adcode":"530829","citycode":"0879"} +, +{"name":"临沧市","adcode":"530900","citycode":"0883"} +, +{"name":"临翔区","adcode":"530902","citycode":"0883"} +, +{"name":"凤庆县","adcode":"530921","citycode":"0883"} +, +{"name":"云县","adcode":"530922","citycode":"0883"} +, +{"name":"永德县","adcode":"530923","citycode":"0883"} +, +{"name":"镇康县","adcode":"530924","citycode":"0883"} +, +{"name":"双江拉祜族佤族布朗族傣族自治县","adcode":"530925","citycode":"0883"} +, +{"name":"耿马傣族佤族自治县","adcode":"530926","citycode":"0883"} +, +{"name":"沧源佤族自治县","adcode":"530927","citycode":"0883"} +, +{"name":"楚雄彝族自治州","adcode":"532300","citycode":"0878"} +, +{"name":"楚雄市","adcode":"532301","citycode":"0878"} +, +{"name":"禄丰市","adcode":"532302","citycode":"0878"} +, +{"name":"双柏县","adcode":"532322","citycode":"0878"} +, +{"name":"牟定县","adcode":"532323","citycode":"0878"} +, +{"name":"南华县","adcode":"532324","citycode":"0878"} +, +{"name":"姚安县","adcode":"532325","citycode":"0878"} +, +{"name":"大姚县","adcode":"532326","citycode":"0878"} +, +{"name":"永仁县","adcode":"532327","citycode":"0878"} +, +{"name":"元谋县","adcode":"532328","citycode":"0878"} +, +{"name":"武定县","adcode":"532329","citycode":"0878"} +, +{"name":"红河哈尼族彝族自治州","adcode":"532500","citycode":"0873"} +, +{"name":"个旧市","adcode":"532501","citycode":"0873"} +, +{"name":"开远市","adcode":"532502","citycode":"0873"} +, +{"name":"蒙自市","adcode":"532503","citycode":"0873"} +, +{"name":"弥勒市","adcode":"532504","citycode":"0873"} +, +{"name":"屏边苗族自治县","adcode":"532523","citycode":"0873"} +, +{"name":"建水县","adcode":"532524","citycode":"0873"} +, +{"name":"石屏县","adcode":"532525","citycode":"0873"} +, +{"name":"泸西县","adcode":"532527","citycode":"0873"} +, +{"name":"元阳县","adcode":"532528","citycode":"0873"} +, +{"name":"红河县","adcode":"532529","citycode":"0873"} +, +{"name":"金平苗族瑶族傣族自治县","adcode":"532530","citycode":"0873"} +, +{"name":"绿春县","adcode":"532531","citycode":"0873"} +, +{"name":"河口瑶族自治县","adcode":"532532","citycode":"0873"} +, +{"name":"文山壮族苗族自治州","adcode":"532600","citycode":"0876"} +, +{"name":"文山市","adcode":"532601","citycode":"0876"} +, +{"name":"砚山县","adcode":"532622","citycode":"0876"} +, +{"name":"西畴县","adcode":"532623","citycode":"0876"} +, +{"name":"麻栗坡县","adcode":"532624","citycode":"0876"} +, +{"name":"马关县","adcode":"532625","citycode":"0876"} +, +{"name":"丘北县","adcode":"532626","citycode":"0876"} +, +{"name":"广南县","adcode":"532627","citycode":"0876"} +, +{"name":"富宁县","adcode":"532628","citycode":"0876"} +, +{"name":"西双版纳傣族自治州","adcode":"532800","citycode":"0691"} +, +{"name":"景洪市","adcode":"532801","citycode":"0691"} +, +{"name":"勐海县","adcode":"532822","citycode":"0691"} +, +{"name":"勐腊县","adcode":"532823","citycode":"0691"} +, +{"name":"大理白族自治州","adcode":"532900","citycode":"0872"} +, +{"name":"大理市","adcode":"532901","citycode":"0872"} +, +{"name":"漾濞彝族自治县","adcode":"532922","citycode":"0872"} +, +{"name":"祥云县","adcode":"532923","citycode":"0872"} +, +{"name":"宾川县","adcode":"532924","citycode":"0872"} +, +{"name":"弥渡县","adcode":"532925","citycode":"0872"} +, +{"name":"南涧彝族自治县","adcode":"532926","citycode":"0872"} +, +{"name":"巍山彝族回族自治县","adcode":"532927","citycode":"0872"} +, +{"name":"永平县","adcode":"532928","citycode":"0872"} +, +{"name":"云龙县","adcode":"532929","citycode":"0872"} +, +{"name":"洱源县","adcode":"532930","citycode":"0872"} +, +{"name":"剑川县","adcode":"532931","citycode":"0872"} +, +{"name":"鹤庆县","adcode":"532932","citycode":"0872"} +, +{"name":"德宏傣族景颇族自治州","adcode":"533100","citycode":"0692"} +, +{"name":"瑞丽市","adcode":"533102","citycode":"0692"} +, +{"name":"芒市","adcode":"533103","citycode":"0692"} +, +{"name":"梁河县","adcode":"533122","citycode":"0692"} +, +{"name":"盈江县","adcode":"533123","citycode":"0692"} +, +{"name":"陇川县","adcode":"533124","citycode":"0692"} +, +{"name":"怒江傈僳族自治州","adcode":"533300","citycode":"0886"} +, +{"name":"泸水市","adcode":"533301","citycode":"0886"} +, +{"name":"福贡县","adcode":"533323","citycode":"0886"} +, +{"name":"贡山独龙族怒族自治县","adcode":"533324","citycode":"0886"} +, +{"name":"兰坪白族普米族自治县","adcode":"533325","citycode":"0886"} +, +{"name":"迪庆藏族自治州","adcode":"533400","citycode":"0887"} +, +{"name":"香格里拉市","adcode":"533401","citycode":"0887"} +, +{"name":"德钦县","adcode":"533422","citycode":"0887"} +, +{"name":"维西傈僳族自治县","adcode":"533423","citycode":"0887"} +, +{"name":"西藏自治区","adcode":"540000","citycode":"\\N"} +, +{"name":"拉萨市","adcode":"540100","citycode":"0891"} +, +{"name":"城关区","adcode":"540102","citycode":"0891"} +, +{"name":"堆龙德庆区","adcode":"540103","citycode":"0891"} +, +{"name":"达孜区","adcode":"540104","citycode":"0891"} +, +{"name":"林周县","adcode":"540121","citycode":"0891"} +, +{"name":"当雄县","adcode":"540122","citycode":"0891"} +, +{"name":"尼木县","adcode":"540123","citycode":"0891"} +, +{"name":"曲水县","adcode":"540124","citycode":"0891"} +, +{"name":"墨竹工卡县","adcode":"540127","citycode":"0891"} +, +{"name":"日喀则市","adcode":"540200","citycode":"0892"} +, +{"name":"桑珠孜区","adcode":"540202","citycode":"0892"} +, +{"name":"南木林县","adcode":"540221","citycode":"0892"} +, +{"name":"江孜县","adcode":"540222","citycode":"0892"} +, +{"name":"定日县","adcode":"540223","citycode":"0892"} +, +{"name":"萨迦县","adcode":"540224","citycode":"0892"} +, +{"name":"拉孜县","adcode":"540225","citycode":"0892"} +, +{"name":"昂仁县","adcode":"540226","citycode":"0892"} +, +{"name":"谢通门县","adcode":"540227","citycode":"0892"} +, +{"name":"白朗县","adcode":"540228","citycode":"0892"} +, +{"name":"仁布县","adcode":"540229","citycode":"0892"} +, +{"name":"康马县","adcode":"540230","citycode":"0892"} +, +{"name":"定结县","adcode":"540231","citycode":"0892"} +, +{"name":"仲巴县","adcode":"540232","citycode":"0892"} +, +{"name":"亚东县","adcode":"540233","citycode":"0892"} +, +{"name":"吉隆县","adcode":"540234","citycode":"0892"} +, +{"name":"聂拉木县","adcode":"540235","citycode":"0892"} +, +{"name":"萨嘎县","adcode":"540236","citycode":"0892"} +, +{"name":"岗巴县","adcode":"540237","citycode":"0892"} +, +{"name":"昌都市","adcode":"540300","citycode":"0895"} +, +{"name":"卡若区","adcode":"540302","citycode":"0895"} +, +{"name":"江达县","adcode":"540321","citycode":"0895"} +, +{"name":"贡觉县","adcode":"540322","citycode":"0895"} +, +{"name":"类乌齐县","adcode":"540323","citycode":"0895"} +, +{"name":"丁青县","adcode":"540324","citycode":"0895"} +, +{"name":"察雅县","adcode":"540325","citycode":"0895"} +, +{"name":"八宿县","adcode":"540326","citycode":"0895"} +, +{"name":"左贡县","adcode":"540327","citycode":"0895"} +, +{"name":"芒康县","adcode":"540328","citycode":"0895"} +, +{"name":"洛隆县","adcode":"540329","citycode":"0895"} +, +{"name":"边坝县","adcode":"540330","citycode":"0895"} +, +{"name":"林芝市","adcode":"540400","citycode":"0894"} +, +{"name":"巴宜区","adcode":"540402","citycode":"0894"} +, +{"name":"工布江达县","adcode":"540421","citycode":"0894"} +, +{"name":"墨脱县","adcode":"540423","citycode":"0894"} +, +{"name":"波密县","adcode":"540424","citycode":"0894"} +, +{"name":"察隅县","adcode":"540425","citycode":"0894"} +, +{"name":"朗县","adcode":"540426","citycode":"0894"} +, +{"name":"米林市","adcode":"540481","citycode":"0894"} +, +{"name":"山南市","adcode":"540500","citycode":"0893"} +, +{"name":"乃东区","adcode":"540502","citycode":"0893"} +, +{"name":"扎囊县","adcode":"540521","citycode":"0893"} +, +{"name":"贡嘎县","adcode":"540522","citycode":"0893"} +, +{"name":"桑日县","adcode":"540523","citycode":"0893"} +, +{"name":"琼结县","adcode":"540524","citycode":"0893"} +, +{"name":"曲松县","adcode":"540525","citycode":"0893"} +, +{"name":"措美县","adcode":"540526","citycode":"0893"} +, +{"name":"洛扎县","adcode":"540527","citycode":"0893"} +, +{"name":"加查县","adcode":"540528","citycode":"0893"} +, +{"name":"隆子县","adcode":"540529","citycode":"0893"} +, +{"name":"浪卡子县","adcode":"540531","citycode":"0893"} +, +{"name":"错那市","adcode":"540581","citycode":"0893"} +, +{"name":"那曲市","adcode":"540600","citycode":"0896"} +, +{"name":"色尼区","adcode":"540602","citycode":"0896"} +, +{"name":"嘉黎县","adcode":"540621","citycode":"0896"} +, +{"name":"比如县","adcode":"540622","citycode":"0896"} +, +{"name":"聂荣县","adcode":"540623","citycode":"0896"} +, +{"name":"安多县","adcode":"540624","citycode":"0896"} +, +{"name":"申扎县","adcode":"540625","citycode":"0896"} +, +{"name":"索县","adcode":"540626","citycode":"0896"} +, +{"name":"班戈县","adcode":"540627","citycode":"0896"} +, +{"name":"巴青县","adcode":"540628","citycode":"0896"} +, +{"name":"尼玛县","adcode":"540629","citycode":"0896"} +, +{"name":"双湖县","adcode":"540630","citycode":"0896"} +, +{"name":"阿里地区","adcode":"542500","citycode":"0897"} +, +{"name":"普兰县","adcode":"542521","citycode":"0897"} +, +{"name":"札达县","adcode":"542522","citycode":"0897"} +, +{"name":"噶尔县","adcode":"542523","citycode":"0897"} +, +{"name":"日土县","adcode":"542524","citycode":"0897"} +, +{"name":"革吉县","adcode":"542525","citycode":"0897"} +, +{"name":"改则县","adcode":"542526","citycode":"0897"} +, +{"name":"措勤县","adcode":"542527","citycode":"0897"} +, +{"name":"陕西省","adcode":"610000","citycode":"\\N"} +, +{"name":"西安市","adcode":"610100","citycode":"029"} +, +{"name":"新城区","adcode":"610102","citycode":"029"} +, +{"name":"碑林区","adcode":"610103","citycode":"029"} +, +{"name":"莲湖区","adcode":"610104","citycode":"029"} +, +{"name":"灞桥区","adcode":"610111","citycode":"029"} +, +{"name":"未央区","adcode":"610112","citycode":"029"} +, +{"name":"雁塔区","adcode":"610113","citycode":"029"} +, +{"name":"阎良区","adcode":"610114","citycode":"029"} +, +{"name":"临潼区","adcode":"610115","citycode":"029"} +, +{"name":"长安区","adcode":"610116","citycode":"029"} +, +{"name":"高陵区","adcode":"610117","citycode":"029"} +, +{"name":"鄠邑区","adcode":"610118","citycode":"029"} +, +{"name":"蓝田县","adcode":"610122","citycode":"029"} +, +{"name":"周至县","adcode":"610124","citycode":"029"} +, +{"name":"铜川市","adcode":"610200","citycode":"0919"} +, +{"name":"王益区","adcode":"610202","citycode":"0919"} +, +{"name":"印台区","adcode":"610203","citycode":"0919"} +, +{"name":"耀州区","adcode":"610204","citycode":"0919"} +, +{"name":"宜君县","adcode":"610222","citycode":"0919"} +, +{"name":"宝鸡市","adcode":"610300","citycode":"0917"} +, +{"name":"渭滨区","adcode":"610302","citycode":"0917"} +, +{"name":"金台区","adcode":"610303","citycode":"0917"} +, +{"name":"陈仓区","adcode":"610304","citycode":"0917"} +, +{"name":"凤翔区","adcode":"610305","citycode":"0917"} +, +{"name":"岐山县","adcode":"610323","citycode":"0917"} +, +{"name":"扶风县","adcode":"610324","citycode":"0917"} +, +{"name":"眉县","adcode":"610326","citycode":"0917"} +, +{"name":"陇县","adcode":"610327","citycode":"0917"} +, +{"name":"千阳县","adcode":"610328","citycode":"0917"} +, +{"name":"麟游县","adcode":"610329","citycode":"0917"} +, +{"name":"凤县","adcode":"610330","citycode":"0917"} +, +{"name":"太白县","adcode":"610331","citycode":"0917"} +, +{"name":"咸阳市","adcode":"610400","citycode":"0910"} +, +{"name":"秦都区","adcode":"610402","citycode":"0910"} +, +{"name":"杨陵区","adcode":"610403","citycode":"0910"} +, +{"name":"渭城区","adcode":"610404","citycode":"0910"} +, +{"name":"三原县","adcode":"610422","citycode":"0910"} +, +{"name":"泾阳县","adcode":"610423","citycode":"0910"} +, +{"name":"乾县","adcode":"610424","citycode":"0910"} +, +{"name":"礼泉县","adcode":"610425","citycode":"0910"} +, +{"name":"永寿县","adcode":"610426","citycode":"0910"} +, +{"name":"长武县","adcode":"610428","citycode":"0910"} +, +{"name":"旬邑县","adcode":"610429","citycode":"0910"} +, +{"name":"淳化县","adcode":"610430","citycode":"0910"} +, +{"name":"武功县","adcode":"610431","citycode":"0910"} +, +{"name":"兴平市","adcode":"610481","citycode":"0910"} +, +{"name":"彬州市","adcode":"610482","citycode":"0910"} +, +{"name":"渭南市","adcode":"610500","citycode":"0913"} +, +{"name":"临渭区","adcode":"610502","citycode":"0913"} +, +{"name":"华州区","adcode":"610503","citycode":"0913"} +, +{"name":"潼关县","adcode":"610522","citycode":"0913"} +, +{"name":"大荔县","adcode":"610523","citycode":"0913"} +, +{"name":"合阳县","adcode":"610524","citycode":"0913"} +, +{"name":"澄城县","adcode":"610525","citycode":"0913"} +, +{"name":"蒲城县","adcode":"610526","citycode":"0913"} +, +{"name":"白水县","adcode":"610527","citycode":"0913"} +, +{"name":"富平县","adcode":"610528","citycode":"0913"} +, +{"name":"韩城市","adcode":"610581","citycode":"0913"} +, +{"name":"华阴市","adcode":"610582","citycode":"0913"} +, +{"name":"延安市","adcode":"610600","citycode":"0911"} +, +{"name":"宝塔区","adcode":"610602","citycode":"0911"} +, +{"name":"安塞区","adcode":"610603","citycode":"0911"} +, +{"name":"延长县","adcode":"610621","citycode":"0911"} +, +{"name":"延川县","adcode":"610622","citycode":"0911"} +, +{"name":"志丹县","adcode":"610625","citycode":"0911"} +, +{"name":"吴起县","adcode":"610626","citycode":"0911"} +, +{"name":"甘泉县","adcode":"610627","citycode":"0911"} +, +{"name":"富县","adcode":"610628","citycode":"0911"} +, +{"name":"洛川县","adcode":"610629","citycode":"0911"} +, +{"name":"宜川县","adcode":"610630","citycode":"0911"} +, +{"name":"黄龙县","adcode":"610631","citycode":"0911"} +, +{"name":"黄陵县","adcode":"610632","citycode":"0911"} +, +{"name":"子长市","adcode":"610681","citycode":"0911"} +, +{"name":"汉中市","adcode":"610700","citycode":"0916"} +, +{"name":"汉台区","adcode":"610702","citycode":"0916"} +, +{"name":"南郑区","adcode":"610703","citycode":"0916"} +, +{"name":"城固县","adcode":"610722","citycode":"0916"} +, +{"name":"洋县","adcode":"610723","citycode":"0916"} +, +{"name":"西乡县","adcode":"610724","citycode":"0916"} +, +{"name":"勉县","adcode":"610725","citycode":"0916"} +, +{"name":"宁强县","adcode":"610726","citycode":"0916"} +, +{"name":"略阳县","adcode":"610727","citycode":"0916"} +, +{"name":"镇巴县","adcode":"610728","citycode":"0916"} +, +{"name":"留坝县","adcode":"610729","citycode":"0916"} +, +{"name":"佛坪县","adcode":"610730","citycode":"0916"} +, +{"name":"榆林市","adcode":"610800","citycode":"0912"} +, +{"name":"榆阳区","adcode":"610802","citycode":"0912"} +, +{"name":"横山区","adcode":"610803","citycode":"0912"} +, +{"name":"府谷县","adcode":"610822","citycode":"0912"} +, +{"name":"靖边县","adcode":"610824","citycode":"0912"} +, +{"name":"定边县","adcode":"610825","citycode":"0912"} +, +{"name":"绥德县","adcode":"610826","citycode":"0912"} +, +{"name":"米脂县","adcode":"610827","citycode":"0912"} +, +{"name":"佳县","adcode":"610828","citycode":"0912"} +, +{"name":"吴堡县","adcode":"610829","citycode":"0912"} +, +{"name":"清涧县","adcode":"610830","citycode":"0912"} +, +{"name":"子洲县","adcode":"610831","citycode":"0912"} +, +{"name":"神木市","adcode":"610881","citycode":"0912"} +, +{"name":"安康市","adcode":"610900","citycode":"0915"} +, +{"name":"汉滨区","adcode":"610902","citycode":"0915"} +, +{"name":"汉阴县","adcode":"610921","citycode":"0915"} +, +{"name":"石泉县","adcode":"610922","citycode":"0915"} +, +{"name":"宁陕县","adcode":"610923","citycode":"0915"} +, +{"name":"紫阳县","adcode":"610924","citycode":"0915"} +, +{"name":"岚皋县","adcode":"610925","citycode":"0915"} +, +{"name":"平利县","adcode":"610926","citycode":"0915"} +, +{"name":"镇坪县","adcode":"610927","citycode":"0915"} +, +{"name":"白河县","adcode":"610929","citycode":"0915"} +, +{"name":"旬阳市","adcode":"610981","citycode":"0915"} +, +{"name":"商洛市","adcode":"611000","citycode":"0914"} +, +{"name":"商州区","adcode":"611002","citycode":"0914"} +, +{"name":"洛南县","adcode":"611021","citycode":"0914"} +, +{"name":"丹凤县","adcode":"611022","citycode":"0914"} +, +{"name":"商南县","adcode":"611023","citycode":"0914"} +, +{"name":"山阳县","adcode":"611024","citycode":"0914"} +, +{"name":"镇安县","adcode":"611025","citycode":"0914"} +, +{"name":"柞水县","adcode":"611026","citycode":"0914"} +, +{"name":"甘肃省","adcode":"620000","citycode":"\\N"} +, +{"name":"兰州市","adcode":"620100","citycode":"0931"} +, +{"name":"城关区","adcode":"620102","citycode":"0931"} +, +{"name":"七里河区","adcode":"620103","citycode":"0931"} +, +{"name":"西固区","adcode":"620104","citycode":"0931"} +, +{"name":"安宁区","adcode":"620105","citycode":"0931"} +, +{"name":"红古区","adcode":"620111","citycode":"0931"} +, +{"name":"永登县","adcode":"620121","citycode":"0931"} +, +{"name":"皋兰县","adcode":"620122","citycode":"0931"} +, +{"name":"榆中县","adcode":"620123","citycode":"0931"} +, +{"name":"嘉峪关市","adcode":"620200","citycode":"1937"} +, +{"name":"金昌市","adcode":"620300","citycode":"0935"} +, +{"name":"金川区","adcode":"620302","citycode":"0935"} +, +{"name":"永昌县","adcode":"620321","citycode":"0935"} +, +{"name":"白银市","adcode":"620400","citycode":"0943"} +, +{"name":"白银区","adcode":"620402","citycode":"0943"} +, +{"name":"平川区","adcode":"620403","citycode":"0943"} +, +{"name":"靖远县","adcode":"620421","citycode":"0943"} +, +{"name":"会宁县","adcode":"620422","citycode":"0943"} +, +{"name":"景泰县","adcode":"620423","citycode":"0943"} +, +{"name":"天水市","adcode":"620500","citycode":"0938"} +, +{"name":"秦州区","adcode":"620502","citycode":"0938"} +, +{"name":"麦积区","adcode":"620503","citycode":"0938"} +, +{"name":"清水县","adcode":"620521","citycode":"0938"} +, +{"name":"秦安县","adcode":"620522","citycode":"0938"} +, +{"name":"甘谷县","adcode":"620523","citycode":"0938"} +, +{"name":"武山县","adcode":"620524","citycode":"0938"} +, +{"name":"张家川回族自治县","adcode":"620525","citycode":"0938"} +, +{"name":"武威市","adcode":"620600","citycode":"1935"} +, +{"name":"凉州区","adcode":"620602","citycode":"1935"} +, +{"name":"民勤县","adcode":"620621","citycode":"1935"} +, +{"name":"古浪县","adcode":"620622","citycode":"1935"} +, +{"name":"天祝藏族自治县","adcode":"620623","citycode":"1935"} +, +{"name":"张掖市","adcode":"620700","citycode":"0936"} +, +{"name":"甘州区","adcode":"620702","citycode":"0936"} +, +{"name":"肃南裕固族自治县","adcode":"620721","citycode":"0936"} +, +{"name":"民乐县","adcode":"620722","citycode":"0936"} +, +{"name":"临泽县","adcode":"620723","citycode":"0936"} +, +{"name":"高台县","adcode":"620724","citycode":"0936"} +, +{"name":"山丹县","adcode":"620725","citycode":"0936"} +, +{"name":"平凉市","adcode":"620800","citycode":"0933"} +, +{"name":"崆峒区","adcode":"620802","citycode":"0933"} +, +{"name":"泾川县","adcode":"620821","citycode":"0933"} +, +{"name":"灵台县","adcode":"620822","citycode":"0933"} +, +{"name":"崇信县","adcode":"620823","citycode":"0933"} +, +{"name":"庄浪县","adcode":"620825","citycode":"0933"} +, +{"name":"静宁县","adcode":"620826","citycode":"0933"} +, +{"name":"华亭市","adcode":"620881","citycode":"0933"} +, +{"name":"酒泉市","adcode":"620900","citycode":"0937"} +, +{"name":"肃州区","adcode":"620902","citycode":"0937"} +, +{"name":"金塔县","adcode":"620921","citycode":"0937"} +, +{"name":"瓜州县","adcode":"620922","citycode":"0937"} +, +{"name":"肃北蒙古族自治县","adcode":"620923","citycode":"0937"} +, +{"name":"阿克塞哈萨克族自治县","adcode":"620924","citycode":"0937"} +, +{"name":"玉门市","adcode":"620981","citycode":"0937"} +, +{"name":"敦煌市","adcode":"620982","citycode":"0937"} +, +{"name":"庆阳市","adcode":"621000","citycode":"0934"} +, +{"name":"西峰区","adcode":"621002","citycode":"0934"} +, +{"name":"庆城县","adcode":"621021","citycode":"0934"} +, +{"name":"环县","adcode":"621022","citycode":"0934"} +, +{"name":"华池县","adcode":"621023","citycode":"0934"} +, +{"name":"合水县","adcode":"621024","citycode":"0934"} +, +{"name":"正宁县","adcode":"621025","citycode":"0934"} +, +{"name":"宁县","adcode":"621026","citycode":"0934"} +, +{"name":"镇原县","adcode":"621027","citycode":"0934"} +, +{"name":"定西市","adcode":"621100","citycode":"0932"} +, +{"name":"安定区","adcode":"621102","citycode":"0932"} +, +{"name":"通渭县","adcode":"621121","citycode":"0932"} +, +{"name":"陇西县","adcode":"621122","citycode":"0932"} +, +{"name":"渭源县","adcode":"621123","citycode":"0932"} +, +{"name":"临洮县","adcode":"621124","citycode":"0932"} +, +{"name":"漳县","adcode":"621125","citycode":"0932"} +, +{"name":"岷县","adcode":"621126","citycode":"0932"} +, +{"name":"陇南市","adcode":"621200","citycode":"2935"} +, +{"name":"武都区","adcode":"621202","citycode":"2935"} +, +{"name":"成县","adcode":"621221","citycode":"2935"} +, +{"name":"文县","adcode":"621222","citycode":"2935"} +, +{"name":"宕昌县","adcode":"621223","citycode":"2935"} +, +{"name":"康县","adcode":"621224","citycode":"2935"} +, +{"name":"西和县","adcode":"621225","citycode":"2935"} +, +{"name":"礼县","adcode":"621226","citycode":"2935"} +, +{"name":"徽县","adcode":"621227","citycode":"2935"} +, +{"name":"两当县","adcode":"621228","citycode":"2935"} +, +{"name":"临夏回族自治州","adcode":"622900","citycode":"0930"} +, +{"name":"临夏市","adcode":"622901","citycode":"0930"} +, +{"name":"临夏县","adcode":"622921","citycode":"0930"} +, +{"name":"康乐县","adcode":"622922","citycode":"0930"} +, +{"name":"永靖县","adcode":"622923","citycode":"0930"} +, +{"name":"广河县","adcode":"622924","citycode":"0930"} +, +{"name":"和政县","adcode":"622925","citycode":"0930"} +, +{"name":"东乡族自治县","adcode":"622926","citycode":"0930"} +, +{"name":"积石山保安族东乡族撒拉族自治县","adcode":"622927","citycode":"0930"} +, +{"name":"甘南藏族自治州","adcode":"623000","citycode":"0941"} +, +{"name":"合作市","adcode":"623001","citycode":"0941"} +, +{"name":"临潭县","adcode":"623021","citycode":"0941"} +, +{"name":"卓尼县","adcode":"623022","citycode":"0941"} +, +{"name":"舟曲县","adcode":"623023","citycode":"0941"} +, +{"name":"迭部县","adcode":"623024","citycode":"0941"} +, +{"name":"玛曲县","adcode":"623025","citycode":"0941"} +, +{"name":"碌曲县","adcode":"623026","citycode":"0941"} +, +{"name":"夏河县","adcode":"623027","citycode":"0941"} +, +{"name":"青海省","adcode":"630000","citycode":"\\N"} +, +{"name":"西宁市","adcode":"630100","citycode":"0971"} +, +{"name":"城东区","adcode":"630102","citycode":"0971"} +, +{"name":"城中区","adcode":"630103","citycode":"0971"} +, +{"name":"城西区","adcode":"630104","citycode":"0971"} +, +{"name":"城北区","adcode":"630105","citycode":"0971"} +, +{"name":"湟中区","adcode":"630106","citycode":"0971"} +, +{"name":"大通回族土族自治县","adcode":"630121","citycode":"0971"} +, +{"name":"湟源县","adcode":"630123","citycode":"0971"} +, +{"name":"海东市","adcode":"630200","citycode":"0972"} +, +{"name":"乐都区","adcode":"630202","citycode":"0972"} +, +{"name":"平安区","adcode":"630203","citycode":"0972"} +, +{"name":"民和回族土族自治县","adcode":"630222","citycode":"0972"} +, +{"name":"互助土族自治县","adcode":"630223","citycode":"0972"} +, +{"name":"化隆回族自治县","adcode":"630224","citycode":"0972"} +, +{"name":"循化撒拉族自治县","adcode":"630225","citycode":"0972"} +, +{"name":"海北藏族自治州","adcode":"632200","citycode":"0970"} +, +{"name":"门源回族自治县","adcode":"632221","citycode":"0970"} +, +{"name":"祁连县","adcode":"632222","citycode":"0970"} +, +{"name":"海晏县","adcode":"632223","citycode":"0970"} +, +{"name":"刚察县","adcode":"632224","citycode":"0970"} +, +{"name":"黄南藏族自治州","adcode":"632300","citycode":"0973"} +, +{"name":"同仁市","adcode":"632301","citycode":"0973"} +, +{"name":"尖扎县","adcode":"632322","citycode":"0973"} +, +{"name":"泽库县","adcode":"632323","citycode":"0973"} +, +{"name":"河南蒙古族自治县","adcode":"632324","citycode":"0973"} +, +{"name":"海南藏族自治州","adcode":"632500","citycode":"0974"} +, +{"name":"共和县","adcode":"632521","citycode":"0974"} +, +{"name":"同德县","adcode":"632522","citycode":"0974"} +, +{"name":"贵德县","adcode":"632523","citycode":"0974"} +, +{"name":"兴海县","adcode":"632524","citycode":"0974"} +, +{"name":"贵南县","adcode":"632525","citycode":"0974"} +, +{"name":"果洛藏族自治州","adcode":"632600","citycode":"0975"} +, +{"name":"玛沁县","adcode":"632621","citycode":"0975"} +, +{"name":"班玛县","adcode":"632622","citycode":"0975"} +, +{"name":"甘德县","adcode":"632623","citycode":"0975"} +, +{"name":"达日县","adcode":"632624","citycode":"0975"} +, +{"name":"久治县","adcode":"632625","citycode":"0975"} +, +{"name":"玛多县","adcode":"632626","citycode":"0975"} +, +{"name":"玉树藏族自治州","adcode":"632700","citycode":"0976"} +, +{"name":"玉树市","adcode":"632701","citycode":"0976"} +, +{"name":"杂多县","adcode":"632722","citycode":"0976"} +, +{"name":"称多县","adcode":"632723","citycode":"0976"} +, +{"name":"治多县","adcode":"632724","citycode":"0976"} +, +{"name":"囊谦县","adcode":"632725","citycode":"0976"} +, +{"name":"曲麻莱县","adcode":"632726","citycode":"0976"} +, +{"name":"海西蒙古族藏族自治州","adcode":"632800","citycode":"0977"} +, +{"name":"格尔木市","adcode":"632801","citycode":"0977"} +, +{"name":"德令哈市","adcode":"632802","citycode":"0977"} +, +{"name":"茫崖市","adcode":"632803","citycode":"0977"} +, +{"name":"乌兰县","adcode":"632821","citycode":"0977"} +, +{"name":"都兰县","adcode":"632822","citycode":"0977"} +, +{"name":"天峻县","adcode":"632823","citycode":"0977"} +, +{"name":"海西蒙古族藏族自治州直辖","adcode":"632825","citycode":"0977"} +, +{"name":"宁夏回族自治区","adcode":"640000","citycode":"\\N"} +, +{"name":"银川市","adcode":"640100","citycode":"0951"} +, +{"name":"兴庆区","adcode":"640104","citycode":"0951"} +, +{"name":"西夏区","adcode":"640105","citycode":"0951"} +, +{"name":"金凤区","adcode":"640106","citycode":"0951"} +, +{"name":"永宁县","adcode":"640121","citycode":"0951"} +, +{"name":"贺兰县","adcode":"640122","citycode":"0951"} +, +{"name":"灵武市","adcode":"640181","citycode":"0951"} +, +{"name":"石嘴山市","adcode":"640200","citycode":"0952"} +, +{"name":"大武口区","adcode":"640202","citycode":"0952"} +, +{"name":"惠农区","adcode":"640205","citycode":"0952"} +, +{"name":"平罗县","adcode":"640221","citycode":"0952"} +, +{"name":"吴忠市","adcode":"640300","citycode":"0953"} +, +{"name":"利通区","adcode":"640302","citycode":"0953"} +, +{"name":"红寺堡区","adcode":"640303","citycode":"0953"} +, +{"name":"盐池县","adcode":"640323","citycode":"0953"} +, +{"name":"同心县","adcode":"640324","citycode":"0953"} +, +{"name":"青铜峡市","adcode":"640381","citycode":"0953"} +, +{"name":"固原市","adcode":"640400","citycode":"0954"} +, +{"name":"原州区","adcode":"640402","citycode":"0954"} +, +{"name":"西吉县","adcode":"640422","citycode":"0954"} +, +{"name":"隆德县","adcode":"640423","citycode":"0954"} +, +{"name":"泾源县","adcode":"640424","citycode":"0954"} +, +{"name":"彭阳县","adcode":"640425","citycode":"0954"} +, +{"name":"中卫市","adcode":"640500","citycode":"1953"} +, +{"name":"沙坡头区","adcode":"640502","citycode":"1953"} +, +{"name":"中宁县","adcode":"640521","citycode":"1953"} +, +{"name":"海原县","adcode":"640522","citycode":"1953"} +, +{"name":"新疆维吾尔自治区","adcode":"650000","citycode":"\\N"} +, +{"name":"乌鲁木齐市","adcode":"650100","citycode":"0991"} +, +{"name":"天山区","adcode":"650102","citycode":"0991"} +, +{"name":"沙依巴克区","adcode":"650103","citycode":"0991"} +, +{"name":"新市区","adcode":"650104","citycode":"0991"} +, +{"name":"水磨沟区","adcode":"650105","citycode":"0991"} +, +{"name":"头屯河区","adcode":"650106","citycode":"0991"} +, +{"name":"达坂城区","adcode":"650107","citycode":"0991"} +, +{"name":"米东区","adcode":"650109","citycode":"0991"} +, +{"name":"乌鲁木齐县","adcode":"650121","citycode":"0991"} +, +{"name":"克拉玛依市","adcode":"650200","citycode":"0990"} +, +{"name":"独山子区","adcode":"650202","citycode":"0990"} +, +{"name":"克拉玛依区","adcode":"650203","citycode":"0990"} +, +{"name":"白碱滩区","adcode":"650204","citycode":"0990"} +, +{"name":"乌尔禾区","adcode":"650205","citycode":"0990"} +, +{"name":"吐鲁番市","adcode":"650400","citycode":"0995"} +, +{"name":"高昌区","adcode":"650402","citycode":"0995"} +, +{"name":"鄯善县","adcode":"650421","citycode":"0995"} +, +{"name":"托克逊县","adcode":"650422","citycode":"0995"} +, +{"name":"哈密市","adcode":"650500","citycode":"0902"} +, +{"name":"伊州区","adcode":"650502","citycode":"0902"} +, +{"name":"巴里坤哈萨克自治县","adcode":"650521","citycode":"0902"} +, +{"name":"伊吾县","adcode":"650522","citycode":"0902"} +, +{"name":"昌吉回族自治州","adcode":"652300","citycode":"0994"} +, +{"name":"昌吉市","adcode":"652301","citycode":"0994"} +, +{"name":"阜康市","adcode":"652302","citycode":"0994"} +, +{"name":"呼图壁县","adcode":"652323","citycode":"0994"} +, +{"name":"玛纳斯县","adcode":"652324","citycode":"0994"} +, +{"name":"奇台县","adcode":"652325","citycode":"0994"} +, +{"name":"吉木萨尔县","adcode":"652327","citycode":"0994"} +, +{"name":"木垒哈萨克自治县","adcode":"652328","citycode":"0994"} +, +{"name":"博尔塔拉蒙古自治州","adcode":"652700","citycode":"0909"} +, +{"name":"博乐市","adcode":"652701","citycode":"0909"} +, +{"name":"阿拉山口市","adcode":"652702","citycode":"0909"} +, +{"name":"精河县","adcode":"652722","citycode":"0909"} +, +{"name":"温泉县","adcode":"652723","citycode":"0909"} +, +{"name":"巴音郭楞蒙古自治州","adcode":"652800","citycode":"0996"} +, +{"name":"库尔勒市","adcode":"652801","citycode":"0996"} +, +{"name":"轮台县","adcode":"652822","citycode":"0996"} +, +{"name":"尉犁县","adcode":"652823","citycode":"0996"} +, +{"name":"若羌县","adcode":"652824","citycode":"0996"} +, +{"name":"且末县","adcode":"652825","citycode":"0996"} +, +{"name":"焉耆回族自治县","adcode":"652826","citycode":"0996"} +, +{"name":"和静县","adcode":"652827","citycode":"0996"} +, +{"name":"和硕县","adcode":"652828","citycode":"0996"} +, +{"name":"博湖县","adcode":"652829","citycode":"0996"} +, +{"name":"阿克苏地区","adcode":"652900","citycode":"0997"} +, +{"name":"阿克苏市","adcode":"652901","citycode":"0997"} +, +{"name":"库车市","adcode":"652902","citycode":"0997"} +, +{"name":"温宿县","adcode":"652922","citycode":"0997"} +, +{"name":"沙雅县","adcode":"652924","citycode":"0997"} +, +{"name":"新和县","adcode":"652925","citycode":"0997"} +, +{"name":"拜城县","adcode":"652926","citycode":"0997"} +, +{"name":"乌什县","adcode":"652927","citycode":"0997"} +, +{"name":"阿瓦提县","adcode":"652928","citycode":"0997"} +, +{"name":"柯坪县","adcode":"652929","citycode":"0997"} +, +{"name":"克孜勒苏柯尔克孜自治州","adcode":"653000","citycode":"0908"} +, +{"name":"阿图什市","adcode":"653001","citycode":"0908"} +, +{"name":"阿克陶县","adcode":"653022","citycode":"0908"} +, +{"name":"阿合奇县","adcode":"653023","citycode":"0908"} +, +{"name":"乌恰县","adcode":"653024","citycode":"0908"} +, +{"name":"喀什地区","adcode":"653100","citycode":"0998"} +, +{"name":"喀什市","adcode":"653101","citycode":"0998"} +, +{"name":"疏附县","adcode":"653121","citycode":"0998"} +, +{"name":"疏勒县","adcode":"653122","citycode":"0998"} +, +{"name":"英吉沙县","adcode":"653123","citycode":"0998"} +, +{"name":"泽普县","adcode":"653124","citycode":"0998"} +, +{"name":"莎车县","adcode":"653125","citycode":"0998"} +, +{"name":"叶城县","adcode":"653126","citycode":"0998"} +, +{"name":"麦盖提县","adcode":"653127","citycode":"0998"} +, +{"name":"岳普湖县","adcode":"653128","citycode":"0998"} +, +{"name":"伽师县","adcode":"653129","citycode":"0998"} +, +{"name":"巴楚县","adcode":"653130","citycode":"0998"} +, +{"name":"塔什库尔干塔吉克自治县","adcode":"653131","citycode":"0998"} +, +{"name":"和田地区","adcode":"653200","citycode":"0903"} +, +{"name":"和田市","adcode":"653201","citycode":"0903"} +, +{"name":"和田县","adcode":"653221","citycode":"0903"} +, +{"name":"墨玉县","adcode":"653222","citycode":"0903"} +, +{"name":"皮山县","adcode":"653223","citycode":"0903"} +, +{"name":"洛浦县","adcode":"653224","citycode":"0903"} +, +{"name":"策勒县","adcode":"653225","citycode":"0903"} +, +{"name":"于田县","adcode":"653226","citycode":"0903"} +, +{"name":"民丰县","adcode":"653227","citycode":"0903"} +, +{"name":"伊犁哈萨克自治州","adcode":"654000","citycode":"0999"} +, +{"name":"伊宁市","adcode":"654002","citycode":"0999"} +, +{"name":"奎屯市","adcode":"654003","citycode":"0999"} +, +{"name":"霍尔果斯市","adcode":"654004","citycode":"0999"} +, +{"name":"伊宁县","adcode":"654021","citycode":"0999"} +, +{"name":"察布查尔锡伯自治县","adcode":"654022","citycode":"0999"} +, +{"name":"霍城县","adcode":"654023","citycode":"0999"} +, +{"name":"巩留县","adcode":"654024","citycode":"0999"} +, +{"name":"新源县","adcode":"654025","citycode":"0999"} +, +{"name":"昭苏县","adcode":"654026","citycode":"0999"} +, +{"name":"特克斯县","adcode":"654027","citycode":"0999"} +, +{"name":"尼勒克县","adcode":"654028","citycode":"0999"} +, +{"name":"塔城地区","adcode":"654200","citycode":"0901"} +, +{"name":"塔城市","adcode":"654201","citycode":"0901"} +, +{"name":"乌苏市","adcode":"654202","citycode":"0901"} +, +{"name":"沙湾市","adcode":"654203","citycode":"0901"} +, +{"name":"额敏县","adcode":"654221","citycode":"0901"} +, +{"name":"托里县","adcode":"654224","citycode":"0901"} +, +{"name":"裕民县","adcode":"654225","citycode":"0901"} +, +{"name":"和布克赛尔蒙古自治县","adcode":"654226","citycode":"0901"} +, +{"name":"阿勒泰地区","adcode":"654300","citycode":"0906"} +, +{"name":"阿勒泰市","adcode":"654301","citycode":"0906"} +, +{"name":"布尔津县","adcode":"654321","citycode":"0906"} +, +{"name":"富蕴县","adcode":"654322","citycode":"0906"} +, +{"name":"福海县","adcode":"654323","citycode":"0906"} +, +{"name":"哈巴河县","adcode":"654324","citycode":"0906"} +, +{"name":"青河县","adcode":"654325","citycode":"0906"} +, +{"name":"吉木乃县","adcode":"654326","citycode":"0906"} +, +{"name":"石河子市","adcode":"659001","citycode":"0993"} +, +{"name":"阿拉尔市","adcode":"659002","citycode":"1997"} +, +{"name":"图木舒克市","adcode":"659003","citycode":"1998"} +, +{"name":"五家渠市","adcode":"659004","citycode":"1994"} +, +{"name":"北屯市","adcode":"659005","citycode":"1906"} +, +{"name":"铁门关市","adcode":"659006","citycode":"1996"} +, +{"name":"双河市","adcode":"659007","citycode":"1909"} +, +{"name":"可克达拉市","adcode":"659008","citycode":"1999"} +, +{"name":"昆玉市","adcode":"659009","citycode":"1903"} +, +{"name":"胡杨河市","adcode":"659010","citycode":"0992"} +, +{"name":"新星市","adcode":"659011","citycode":"2940"} +, +{"name":"白杨市","adcode":"659012","citycode":"2941"} +, +{"name":"台湾省","adcode":"710000","citycode":"1886"} +, +{"name":"香港特别行政区","adcode":"810000","citycode":"1852"} +, +{"name":"中西区","adcode":"810001","citycode":"1852"} +, +{"name":"湾仔区","adcode":"810002","citycode":"1852"} +, +{"name":"东区","adcode":"810003","citycode":"1852"} +, +{"name":"南区","adcode":"810004","citycode":"1852"} +, +{"name":"油尖旺区","adcode":"810005","citycode":"1852"} +, +{"name":"深水埗区","adcode":"810006","citycode":"1852"} +, +{"name":"九龙城区","adcode":"810007","citycode":"1852"} +, +{"name":"黄大仙区","adcode":"810008","citycode":"1852"} +, +{"name":"观塘区","adcode":"810009","citycode":"1852"} +, +{"name":"荃湾区","adcode":"810010","citycode":"1852"} +, +{"name":"屯门区","adcode":"810011","citycode":"1852"} +, +{"name":"元朗区","adcode":"810012","citycode":"1852"} +, +{"name":"北区","adcode":"810013","citycode":"1852"} +, +{"name":"大埔区","adcode":"810014","citycode":"1852"} +, +{"name":"西贡区","adcode":"810015","citycode":"1852"} +, +{"name":"沙田区","adcode":"810016","citycode":"1852"} +, +{"name":"葵青区","adcode":"810017","citycode":"1852"} +, +{"name":"离岛区","adcode":"810018","citycode":"1852"} +, +{"name":"澳门特别行政区","adcode":"820000","citycode":"1853"} +, +{"name":"花地玛堂区","adcode":"820001","citycode":"1853"} +, +{"name":"花王堂区","adcode":"820002","citycode":"1853"} +, +{"name":"望德堂区","adcode":"820003","citycode":"1853"} +, +{"name":"大堂区","adcode":"820004","citycode":"1853"} +, +{"name":"风顺堂区","adcode":"820005","citycode":"1853"} +, +{"name":"嘉模堂区","adcode":"820006","citycode":"1853"} +, +{"name":"路氹填海区","adcode":"820007","citycode":"1853"} +, +{"name":"圣方济各堂区","adcode":"820008","citycode":"1853"} + +] \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/static/default.png b/unpackage/dist/build/app-plus/static/default.png new file mode 100644 index 0000000..8f46ecd Binary files /dev/null and b/unpackage/dist/build/app-plus/static/default.png differ diff --git a/unpackage/dist/build/app-plus/static/home/daodian.png b/unpackage/dist/build/app-plus/static/home/daodian.png new file mode 100644 index 0000000..c0b1f6a Binary files /dev/null and b/unpackage/dist/build/app-plus/static/home/daodian.png differ diff --git a/unpackage/dist/build/app-plus/static/home/search.png b/unpackage/dist/build/app-plus/static/home/search.png new file mode 100644 index 0000000..1bcacf0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/home/search.png differ diff --git a/unpackage/dist/build/app-plus/static/home/yuyue.png b/unpackage/dist/build/app-plus/static/home/yuyue.png new file mode 100644 index 0000000..eed41cd Binary files /dev/null and b/unpackage/dist/build/app-plus/static/home/yuyue.png differ diff --git a/unpackage/dist/build/app-plus/static/images/Fill.jpg b/unpackage/dist/build/app-plus/static/images/Fill.jpg new file mode 100644 index 0000000..babd78e Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/Fill.jpg differ diff --git a/unpackage/dist/build/app-plus/static/images/accout_bg.png b/unpackage/dist/build/app-plus/static/images/accout_bg.png new file mode 100644 index 0000000..ee77504 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/accout_bg.png differ diff --git a/unpackage/dist/build/app-plus/static/images/add_icon.png b/unpackage/dist/build/app-plus/static/images/add_icon.png new file mode 100644 index 0000000..3111c88 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/add_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/agree_n.png b/unpackage/dist/build/app-plus/static/images/agree_n.png new file mode 100644 index 0000000..b9e9cfb Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/agree_n.png differ diff --git a/unpackage/dist/build/app-plus/static/images/agree_y.png b/unpackage/dist/build/app-plus/static/images/agree_y.png new file mode 100644 index 0000000..811e97f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/agree_y.png differ diff --git a/unpackage/dist/build/app-plus/static/images/alipay.png b/unpackage/dist/build/app-plus/static/images/alipay.png new file mode 100644 index 0000000..ba7147a Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/alipay.png differ diff --git a/unpackage/dist/build/app-plus/static/images/arrow_right.png b/unpackage/dist/build/app-plus/static/images/arrow_right.png new file mode 100644 index 0000000..0f62fa5 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/arrow_right.png differ diff --git a/unpackage/dist/build/app-plus/static/images/back.png b/unpackage/dist/build/app-plus/static/images/back.png new file mode 100644 index 0000000..d9edf2b Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/back.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/bj.png b/unpackage/dist/build/app-plus/static/images/background/bj.png new file mode 100644 index 0000000..90a3816 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/bj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/bj2.png b/unpackage/dist/build/app-plus/static/images/background/bj2.png new file mode 100644 index 0000000..5b7cf7d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/bj2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/bj3.png b/unpackage/dist/build/app-plus/static/images/background/bj3.png new file mode 100644 index 0000000..01e926f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/bj3.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/buttonBj.png b/unpackage/dist/build/app-plus/static/images/background/buttonBj.png new file mode 100644 index 0000000..412c413 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/buttonBj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/editPassword.png b/unpackage/dist/build/app-plus/static/images/background/editPassword.png new file mode 100644 index 0000000..a064539 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/editPassword.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/headerBj.png b/unpackage/dist/build/app-plus/static/images/background/headerBj.png new file mode 100644 index 0000000..021f57d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/headerBj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/headerBj2.png b/unpackage/dist/build/app-plus/static/images/background/headerBj2.png new file mode 100644 index 0000000..eca2de8 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/headerBj2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lottery-more.png b/unpackage/dist/build/app-plus/static/images/background/lottery-more.png new file mode 100644 index 0000000..f438908 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lottery-more.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj.png new file mode 100644 index 0000000..4712d9d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj10.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj10.png new file mode 100644 index 0000000..27dc9fb Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj10.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj11.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj11.png new file mode 100644 index 0000000..fb37d75 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj11.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj12.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj12.png new file mode 100644 index 0000000..8a09c52 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj12.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj13.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj13.png new file mode 100644 index 0000000..e84a94d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj13.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj14.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj14.png new file mode 100644 index 0000000..a313e72 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj14.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj2.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj2.png new file mode 100644 index 0000000..e8f456f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj3-footer.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj3-footer.png new file mode 100644 index 0000000..7d7b6fb Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj3-footer.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj3.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj3.png new file mode 100644 index 0000000..c861dae Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj3.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj4.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj4.png new file mode 100644 index 0000000..3a0d9bd Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj4.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj5.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj5.png new file mode 100644 index 0000000..1421837 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj5.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj6.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj6.png new file mode 100644 index 0000000..63bcc02 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj6.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj7.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj7.png new file mode 100644 index 0000000..e24bdce Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj7.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj8.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj8.png new file mode 100644 index 0000000..f488b39 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj8.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/lotteryBj9.png b/unpackage/dist/build/app-plus/static/images/background/lotteryBj9.png new file mode 100644 index 0000000..0e0f65f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/lotteryBj9.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/selfOperatedTip.png b/unpackage/dist/build/app-plus/static/images/background/selfOperatedTip.png new file mode 100644 index 0000000..8dd8088 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/selfOperatedTip.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/storeTip.png b/unpackage/dist/build/app-plus/static/images/background/storeTip.png new file mode 100644 index 0000000..bf1994f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/storeTip.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/storeTip2.png b/unpackage/dist/build/app-plus/static/images/background/storeTip2.png new file mode 100644 index 0000000..1271caa Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/storeTip2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/storeTip3.png b/unpackage/dist/build/app-plus/static/images/background/storeTip3.png new file mode 100644 index 0000000..faa8ebd Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/storeTip3.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/tipBj.png b/unpackage/dist/build/app-plus/static/images/background/tipBj.png new file mode 100644 index 0000000..45953ff Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/tipBj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/tipBj2.png b/unpackage/dist/build/app-plus/static/images/background/tipBj2.png new file mode 100644 index 0000000..d619952 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/tipBj2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/background/tipBj3.png b/unpackage/dist/build/app-plus/static/images/background/tipBj3.png new file mode 100644 index 0000000..7ca1a72 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/background/tipBj3.png differ diff --git a/unpackage/dist/build/app-plus/static/images/bankcard.png b/unpackage/dist/build/app-plus/static/images/bankcard.png new file mode 100644 index 0000000..d6e8be8 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/bankcard.png differ diff --git a/unpackage/dist/build/app-plus/static/images/bg.png b/unpackage/dist/build/app-plus/static/images/bg.png new file mode 100644 index 0000000..c10605a Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/bg.png differ diff --git a/unpackage/dist/build/app-plus/static/images/biao.png b/unpackage/dist/build/app-plus/static/images/biao.png new file mode 100644 index 0000000..028c6e4 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/biao.png differ diff --git a/unpackage/dist/build/app-plus/static/images/boder_icon.png b/unpackage/dist/build/app-plus/static/images/boder_icon.png new file mode 100644 index 0000000..eca3c2e Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/boder_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/camera.png b/unpackage/dist/build/app-plus/static/images/camera.png new file mode 100644 index 0000000..2a7053c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/camera.png differ diff --git a/unpackage/dist/build/app-plus/static/images/clock.png b/unpackage/dist/build/app-plus/static/images/clock.png new file mode 100644 index 0000000..3519efd Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/clock.png differ diff --git a/unpackage/dist/build/app-plus/static/images/concact_icon.png b/unpackage/dist/build/app-plus/static/images/concact_icon.png new file mode 100644 index 0000000..fef6143 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/concact_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/dataBox.png b/unpackage/dist/build/app-plus/static/images/dataBox.png new file mode 100644 index 0000000..01a42e3 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/dataBox.png differ diff --git a/unpackage/dist/build/app-plus/static/images/delete_icon.png b/unpackage/dist/build/app-plus/static/images/delete_icon.png new file mode 100644 index 0000000..24a7744 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/delete_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/dislook.png b/unpackage/dist/build/app-plus/static/images/dislook.png new file mode 100644 index 0000000..8110a87 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/dislook.png differ diff --git a/unpackage/dist/build/app-plus/static/images/dislook_psd.png b/unpackage/dist/build/app-plus/static/images/dislook_psd.png new file mode 100644 index 0000000..f14a93f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/dislook_psd.png differ diff --git a/unpackage/dist/build/app-plus/static/images/edit_active.png b/unpackage/dist/build/app-plus/static/images/edit_active.png new file mode 100644 index 0000000..fbe1aec Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/edit_active.png differ diff --git a/unpackage/dist/build/app-plus/static/images/edit_icon.png b/unpackage/dist/build/app-plus/static/images/edit_icon.png new file mode 100644 index 0000000..305a6f0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/edit_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/cancel.png b/unpackage/dist/build/app-plus/static/images/evaluate/cancel.png new file mode 100644 index 0000000..de7f4ad Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/cancel.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/delete-icon.png b/unpackage/dist/build/app-plus/static/images/evaluate/delete-icon.png new file mode 100644 index 0000000..f2c421a Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/delete-icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/map.png b/unpackage/dist/build/app-plus/static/images/evaluate/map.png new file mode 100644 index 0000000..219754e Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/map.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/more.png b/unpackage/dist/build/app-plus/static/images/evaluate/more.png new file mode 100644 index 0000000..cb31928 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/more.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/open.png b/unpackage/dist/build/app-plus/static/images/evaluate/open.png new file mode 100644 index 0000000..184196f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/open.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/pay.png b/unpackage/dist/build/app-plus/static/images/evaluate/pay.png new file mode 100644 index 0000000..e71cd54 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/pay.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/payOk.png b/unpackage/dist/build/app-plus/static/images/evaluate/payOk.png new file mode 100644 index 0000000..e1dc253 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/payOk.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/pending.png b/unpackage/dist/build/app-plus/static/images/evaluate/pending.png new file mode 100644 index 0000000..6cf4c78 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/pending.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/pendingService.png b/unpackage/dist/build/app-plus/static/images/evaluate/pendingService.png new file mode 100644 index 0000000..c4b95ce Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/pendingService.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/phone.png b/unpackage/dist/build/app-plus/static/images/evaluate/phone.png new file mode 100644 index 0000000..7ec2938 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/phone.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/photo.jpg b/unpackage/dist/build/app-plus/static/images/evaluate/photo.jpg new file mode 100644 index 0000000..dfe1cf1 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/photo.jpg differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/right.png b/unpackage/dist/build/app-plus/static/images/evaluate/right.png new file mode 100644 index 0000000..eae04e8 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/right.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/score1.png b/unpackage/dist/build/app-plus/static/images/evaluate/score1.png new file mode 100644 index 0000000..3048cb8 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/score1.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/score2.png b/unpackage/dist/build/app-plus/static/images/evaluate/score2.png new file mode 100644 index 0000000..6032e71 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/score2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/score3.png b/unpackage/dist/build/app-plus/static/images/evaluate/score3.png new file mode 100644 index 0000000..f050deb Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/score3.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/score4.png b/unpackage/dist/build/app-plus/static/images/evaluate/score4.png new file mode 100644 index 0000000..2fc4482 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/score4.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/score5.png b/unpackage/dist/build/app-plus/static/images/evaluate/score5.png new file mode 100644 index 0000000..c99e724 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/score5.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/star.png b/unpackage/dist/build/app-plus/static/images/evaluate/star.png new file mode 100644 index 0000000..2409cba Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/star.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/star2.png b/unpackage/dist/build/app-plus/static/images/evaluate/star2.png new file mode 100644 index 0000000..3d1f69c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/star2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/star_ash.png b/unpackage/dist/build/app-plus/static/images/evaluate/star_ash.png new file mode 100644 index 0000000..16b78b8 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/star_ash.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/star_ash2.png b/unpackage/dist/build/app-plus/static/images/evaluate/star_ash2.png new file mode 100644 index 0000000..6476e9d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/star_ash2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/star_red.png b/unpackage/dist/build/app-plus/static/images/evaluate/star_red.png new file mode 100644 index 0000000..a7025e8 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/star_red.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/star_red2.png b/unpackage/dist/build/app-plus/static/images/evaluate/star_red2.png new file mode 100644 index 0000000..f90de6c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/star_red2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/evaluate/upload.png b/unpackage/dist/build/app-plus/static/images/evaluate/upload.png new file mode 100644 index 0000000..b937482 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/evaluate/upload.png differ diff --git a/unpackage/dist/build/app-plus/static/images/filter_icon.png b/unpackage/dist/build/app-plus/static/images/filter_icon.png new file mode 100644 index 0000000..b30eb37 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/filter_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/go_map.png b/unpackage/dist/build/app-plus/static/images/go_map.png new file mode 100644 index 0000000..39d5d2b Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/go_map.png differ diff --git a/unpackage/dist/build/app-plus/static/images/go_phone.png b/unpackage/dist/build/app-plus/static/images/go_phone.png new file mode 100644 index 0000000..c0c327b Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/go_phone.png differ diff --git a/unpackage/dist/build/app-plus/static/images/gohome_location.png b/unpackage/dist/build/app-plus/static/images/gohome_location.png new file mode 100644 index 0000000..5e9a103 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/gohome_location.png differ diff --git a/unpackage/dist/build/app-plus/static/images/home/bgtext.png b/unpackage/dist/build/app-plus/static/images/home/bgtext.png new file mode 100644 index 0000000..6a8c178 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/home/bgtext.png differ diff --git a/unpackage/dist/build/app-plus/static/images/home/left_icon.png b/unpackage/dist/build/app-plus/static/images/home/left_icon.png new file mode 100644 index 0000000..859ce68 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/home/left_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/home/loc_icon.png b/unpackage/dist/build/app-plus/static/images/home/loc_icon.png new file mode 100644 index 0000000..3146a97 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/home/loc_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/home/right.png b/unpackage/dist/build/app-plus/static/images/home/right.png new file mode 100644 index 0000000..500eefc Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/home/right.png differ diff --git a/unpackage/dist/build/app-plus/static/images/home/right_gary.png b/unpackage/dist/build/app-plus/static/images/home/right_gary.png new file mode 100644 index 0000000..d2a0e88 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/home/right_gary.png differ diff --git a/unpackage/dist/build/app-plus/static/images/home/right_icon.png b/unpackage/dist/build/app-plus/static/images/home/right_icon.png new file mode 100644 index 0000000..93ae97c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/home/right_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/home/topbgimage.png b/unpackage/dist/build/app-plus/static/images/home/topbgimage.png new file mode 100644 index 0000000..bbbc2fe Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/home/topbgimage.png differ diff --git a/unpackage/dist/build/app-plus/static/images/home/zyBanner.png b/unpackage/dist/build/app-plus/static/images/home/zyBanner.png new file mode 100644 index 0000000..ea5e1a7 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/home/zyBanner.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/Introduction.png b/unpackage/dist/build/app-plus/static/images/icons/Introduction.png new file mode 100644 index 0000000..5309019 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/Introduction.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/active.png b/unpackage/dist/build/app-plus/static/images/icons/active.png new file mode 100644 index 0000000..6bd6e5b Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/active.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/addPhoto.png b/unpackage/dist/build/app-plus/static/images/icons/addPhoto.png new file mode 100644 index 0000000..30347dd Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/addPhoto.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/add_time.png b/unpackage/dist/build/app-plus/static/images/icons/add_time.png new file mode 100644 index 0000000..4df483f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/add_time.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/add_work.png b/unpackage/dist/build/app-plus/static/images/icons/add_work.png new file mode 100644 index 0000000..689a4ff Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/add_work.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/address_gray.png b/unpackage/dist/build/app-plus/static/images/icons/address_gray.png new file mode 100644 index 0000000..deffdb7 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/address_gray.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/address_icon.png b/unpackage/dist/build/app-plus/static/images/icons/address_icon.png new file mode 100644 index 0000000..f00d9d8 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/address_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/address_icon2.png b/unpackage/dist/build/app-plus/static/images/icons/address_icon2.png new file mode 100644 index 0000000..12b24e7 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/address_icon2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/address_icon3.png b/unpackage/dist/build/app-plus/static/images/icons/address_icon3.png new file mode 100644 index 0000000..7bd7027 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/address_icon3.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/adress.png b/unpackage/dist/build/app-plus/static/images/icons/adress.png new file mode 100644 index 0000000..5c30c53 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/adress.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/award.png b/unpackage/dist/build/app-plus/static/images/icons/award.png new file mode 100644 index 0000000..d11d319 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/award.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/cancel.png b/unpackage/dist/build/app-plus/static/images/icons/cancel.png new file mode 100644 index 0000000..de7f4ad Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/cancel.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/close.png b/unpackage/dist/build/app-plus/static/images/icons/close.png new file mode 100644 index 0000000..cd3ce25 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/close.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/close2.png b/unpackage/dist/build/app-plus/static/images/icons/close2.png new file mode 100644 index 0000000..737e76a Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/close2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/diamond.png b/unpackage/dist/build/app-plus/static/images/icons/diamond.png new file mode 100644 index 0000000..654814a Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/diamond.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/experience.png b/unpackage/dist/build/app-plus/static/images/icons/experience.png new file mode 100644 index 0000000..1557325 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/experience.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/job_position.png b/unpackage/dist/build/app-plus/static/images/icons/job_position.png new file mode 100644 index 0000000..db89dd0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/job_position.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/job_position_order.png b/unpackage/dist/build/app-plus/static/images/icons/job_position_order.png new file mode 100644 index 0000000..f7591e0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/job_position_order.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/job_time.png b/unpackage/dist/build/app-plus/static/images/icons/job_time.png new file mode 100644 index 0000000..324792b Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/job_time.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/job_time_order.png b/unpackage/dist/build/app-plus/static/images/icons/job_time_order.png new file mode 100644 index 0000000..598f1e0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/job_time_order.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/location_icon.png b/unpackage/dist/build/app-plus/static/images/icons/location_icon.png new file mode 100644 index 0000000..a9ba69e Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/location_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/log_password.png b/unpackage/dist/build/app-plus/static/images/icons/log_password.png new file mode 100644 index 0000000..70e69fd Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/log_password.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/log_phone.png b/unpackage/dist/build/app-plus/static/images/icons/log_phone.png new file mode 100644 index 0000000..22b0bd5 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/log_phone.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/look.png b/unpackage/dist/build/app-plus/static/images/icons/look.png new file mode 100644 index 0000000..0a05b03 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/look.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/lottery-address.png b/unpackage/dist/build/app-plus/static/images/icons/lottery-address.png new file mode 100644 index 0000000..bbbf6f8 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/lottery-address.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/lottery-close.png b/unpackage/dist/build/app-plus/static/images/icons/lottery-close.png new file mode 100644 index 0000000..c88ac46 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/lottery-close.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/lottery-right.png b/unpackage/dist/build/app-plus/static/images/icons/lottery-right.png new file mode 100644 index 0000000..1d3d45a Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/lottery-right.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/lottery-rule.png b/unpackage/dist/build/app-plus/static/images/icons/lottery-rule.png new file mode 100644 index 0000000..48e1b8c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/lottery-rule.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/lottery.png b/unpackage/dist/build/app-plus/static/images/icons/lottery.png new file mode 100644 index 0000000..7e11ebb Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/lottery.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/noLook.png b/unpackage/dist/build/app-plus/static/images/icons/noLook.png new file mode 100644 index 0000000..10345ef Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/noLook.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/no_icon.png b/unpackage/dist/build/app-plus/static/images/icons/no_icon.png new file mode 100644 index 0000000..e250d6b Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/no_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/no_icon2.png b/unpackage/dist/build/app-plus/static/images/icons/no_icon2.png new file mode 100644 index 0000000..8a75ee0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/no_icon2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/notify1.png b/unpackage/dist/build/app-plus/static/images/icons/notify1.png new file mode 100644 index 0000000..93453d4 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/notify1.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/notify2.png b/unpackage/dist/build/app-plus/static/images/icons/notify2.png new file mode 100644 index 0000000..3036ae1 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/notify2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/pay.png b/unpackage/dist/build/app-plus/static/images/icons/pay.png new file mode 100644 index 0000000..e71cd54 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/pay.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/payOk.png b/unpackage/dist/build/app-plus/static/images/icons/payOk.png new file mode 100644 index 0000000..e1dc253 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/payOk.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/pending.png b/unpackage/dist/build/app-plus/static/images/icons/pending.png new file mode 100644 index 0000000..6cf4c78 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/pending.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/pendingService.png b/unpackage/dist/build/app-plus/static/images/icons/pendingService.png new file mode 100644 index 0000000..c4b95ce Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/pendingService.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/phone.png b/unpackage/dist/build/app-plus/static/images/icons/phone.png new file mode 100644 index 0000000..ddd8d57 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/phone.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/phone_gray.png b/unpackage/dist/build/app-plus/static/images/icons/phone_gray.png new file mode 100644 index 0000000..c014c12 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/phone_gray.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/pinTuan.png b/unpackage/dist/build/app-plus/static/images/icons/pinTuan.png new file mode 100644 index 0000000..a0896bd Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/pinTuan.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/play.png b/unpackage/dist/build/app-plus/static/images/icons/play.png new file mode 100644 index 0000000..20e5f6c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/play.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/position.png b/unpackage/dist/build/app-plus/static/images/icons/position.png new file mode 100644 index 0000000..86d1678 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/position.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/record.png b/unpackage/dist/build/app-plus/static/images/icons/record.png new file mode 100644 index 0000000..e360297 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/record.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/right7_13.png b/unpackage/dist/build/app-plus/static/images/icons/right7_13.png new file mode 100644 index 0000000..5077262 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/right7_13.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/right7_14.png b/unpackage/dist/build/app-plus/static/images/icons/right7_14.png new file mode 100644 index 0000000..9e12bc8 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/right7_14.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/right_20_36.png b/unpackage/dist/build/app-plus/static/images/icons/right_20_36.png new file mode 100644 index 0000000..e2f1629 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/right_20_36.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/right_20_40.png b/unpackage/dist/build/app-plus/static/images/icons/right_20_40.png new file mode 100644 index 0000000..7e80853 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/right_20_40.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/right_gray.png b/unpackage/dist/build/app-plus/static/images/icons/right_gray.png new file mode 100644 index 0000000..6d85e9d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/right_gray.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/right_gray14.png b/unpackage/dist/build/app-plus/static/images/icons/right_gray14.png new file mode 100644 index 0000000..3300046 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/right_gray14.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/right_gray2.png b/unpackage/dist/build/app-plus/static/images/icons/right_gray2.png new file mode 100644 index 0000000..5f7432b Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/right_gray2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/right_gray3.png b/unpackage/dist/build/app-plus/static/images/icons/right_gray3.png new file mode 100644 index 0000000..b28bd57 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/right_gray3.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/right_gray4.png b/unpackage/dist/build/app-plus/static/images/icons/right_gray4.png new file mode 100644 index 0000000..08a7bc7 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/right_gray4.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/right_gray5.png b/unpackage/dist/build/app-plus/static/images/icons/right_gray5.png new file mode 100644 index 0000000..cbe4c5b Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/right_gray5.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/right_gray6.png b/unpackage/dist/build/app-plus/static/images/icons/right_gray6.png new file mode 100644 index 0000000..a7ef7c2 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/right_gray6.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/right_gray7.png b/unpackage/dist/build/app-plus/static/images/icons/right_gray7.png new file mode 100644 index 0000000..48c2c54 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/right_gray7.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/right_gray8.png b/unpackage/dist/build/app-plus/static/images/icons/right_gray8.png new file mode 100644 index 0000000..2cbfccf Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/right_gray8.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/selfLogo.png b/unpackage/dist/build/app-plus/static/images/icons/selfLogo.png new file mode 100644 index 0000000..0451006 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/selfLogo.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/setting.png b/unpackage/dist/build/app-plus/static/images/icons/setting.png new file mode 100644 index 0000000..797bd65 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/setting.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/sound_no.png b/unpackage/dist/build/app-plus/static/images/icons/sound_no.png new file mode 100644 index 0000000..12090c3 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/sound_no.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/sound_yes.png b/unpackage/dist/build/app-plus/static/images/icons/sound_yes.png new file mode 100644 index 0000000..9e24d6b Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/sound_yes.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/staffAdd.png b/unpackage/dist/build/app-plus/static/images/icons/staffAdd.png new file mode 100644 index 0000000..2f6e1d7 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/staffAdd.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/staffCancel.png b/unpackage/dist/build/app-plus/static/images/icons/staffCancel.png new file mode 100644 index 0000000..c719a79 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/staffCancel.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/tabBj.png b/unpackage/dist/build/app-plus/static/images/icons/tabBj.png new file mode 100644 index 0000000..f37c370 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/tabBj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/tabBj2.png b/unpackage/dist/build/app-plus/static/images/icons/tabBj2.png new file mode 100644 index 0000000..1c4be29 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/tabBj2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/time.png b/unpackage/dist/build/app-plus/static/images/icons/time.png new file mode 100644 index 0000000..55861c0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/time.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/time_icon.png b/unpackage/dist/build/app-plus/static/images/icons/time_icon.png new file mode 100644 index 0000000..609f1d0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/time_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/tip.png b/unpackage/dist/build/app-plus/static/images/icons/tip.png new file mode 100644 index 0000000..5a0b626 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/tip.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/tip2.png b/unpackage/dist/build/app-plus/static/images/icons/tip2.png new file mode 100644 index 0000000..43d5d57 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/tip2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/tip3.png b/unpackage/dist/build/app-plus/static/images/icons/tip3.png new file mode 100644 index 0000000..de96888 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/tip3.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/tip_bg.png b/unpackage/dist/build/app-plus/static/images/icons/tip_bg.png new file mode 100644 index 0000000..bee0efb Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/tip_bg.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/tip_icon.png b/unpackage/dist/build/app-plus/static/images/icons/tip_icon.png new file mode 100644 index 0000000..0931aee Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/tip_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/triangle_down.png b/unpackage/dist/build/app-plus/static/images/icons/triangle_down.png new file mode 100644 index 0000000..19c7be4 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/triangle_down.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1.zip b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1.zip new file mode 100644 index 0000000..bd63ae7 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1.zip differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/package.json b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/package.json new file mode 100644 index 0000000..ac434cb --- /dev/null +++ b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/package.json @@ -0,0 +1,20 @@ +{ + "id": "uksir-vuex-uniapp-persistence", + "name": "vuex-uniapp-persistence", + "displayName": "vuex-uniapp-persistence", + "version": "1.0.1", + "description": "uniapp vue2 vuex 持久化", + "keywords": [ + "vuex", + "uniap", + "vue2", + "持久化", + "本地存储" + ], + "dcloudext": { + "category": [ + "JS SDK", + "通用 SDK" + ] + } +} \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/.gitignore b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/.gitignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/.npmrc b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/.npmrc new file mode 100644 index 0000000..abefb93 --- /dev/null +++ b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/.npmrc @@ -0,0 +1,3 @@ +registry=https://registry.npmjs.org/ +registry.npmjs.org/:always-auth=true +registry.npmjs.org/:_authToken=07a468368f5b8fb353fb0eb6b5260907efcd53bccd9b83b8d939ab02fd99bac5 diff --git a/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/index.js b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/index.js new file mode 100644 index 0000000..947f248 --- /dev/null +++ b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/index.js @@ -0,0 +1,13 @@ +const _ = require("lodash/fp/object"); +export default (key = "vuex-uniapp-persistence") => { + return function (store) { + // 当 store 初始化后调用 + const value = uni.getStorageSync(key); + if (value) { + store.replaceState(_.merge(store.state, value)); + } + store.subscribe((mutation, state) => { + uni.setStorageSync(key, state); + }); + }; +}; diff --git a/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/package-lock.json b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/package-lock.json new file mode 100644 index 0000000..06d6ad0 --- /dev/null +++ b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "vuex-uniapp-persistence", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + } + } +} diff --git a/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/package.json b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/package.json new file mode 100644 index 0000000..706065f --- /dev/null +++ b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/package.json @@ -0,0 +1,24 @@ +{ + "name": "vuex-uniapp-persistence", + "version": "1.0.1", + "description": "uniapp vue2 vuex 持久化", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "uniapp", + "vuex", + "uniapp", + "本地存储" + ], + "repository": { + "type": "git", + "url": "https://github.com/itcastWsy/vuex-uniapp-persistence" + }, + "author": "万少", + "license": "ISC", + "dependencies": { + "lodash": "^4.17.21" + } +} diff --git a/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/readme.md b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/readme.md new file mode 100644 index 0000000..0f1f6b1 --- /dev/null +++ b/unpackage/dist/build/app-plus/static/images/icons/uksir-vuex-uniapp-persistence_1.0.1/uksir-vuex-uniapp-persistence/readme.md @@ -0,0 +1,41 @@ +# 快速上手 + +## 安装 + +```sh +npm i vuex-uniapp-persistence +``` + +## 引入 + +`store.js` 引入 + +```js +// 页面路径:store/index.js +import Vue from "vue"; +import Vuex from "vuex"; +import persistence from "./plugins/persistence"; +Vue.use(Vuex); +const store = new Vuex.Store({ + // 使用模块 + plugins: [persistence()], +}); +export default store; +``` + +## api + +### persistence(key) + +**key** 是你设置 本地存储的 key 的名称,如果不传,默认就是 `vuex-uniapp-persistence` + +## 更新日志 + +### 1.0.1 + +将本地存储完全替换 state 修改为 合并本地存取和 state 融合到 vuex 中 + +## 联系我 + +- yeah126139163@163.com +- https://github.com/itcastWsy/vuex-uniapp-persistence diff --git a/unpackage/dist/build/app-plus/static/images/icons/wallet.png b/unpackage/dist/build/app-plus/static/images/icons/wallet.png new file mode 100644 index 0000000..a0a5a20 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/wallet.png differ diff --git a/unpackage/dist/build/app-plus/static/images/icons/yes_icon.png b/unpackage/dist/build/app-plus/static/images/icons/yes_icon.png new file mode 100644 index 0000000..811e97f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/icons/yes_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/id_fan.png b/unpackage/dist/build/app-plus/static/images/id_fan.png new file mode 100644 index 0000000..7e532ae Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/id_fan.png differ diff --git a/unpackage/dist/build/app-plus/static/images/id_ren.png b/unpackage/dist/build/app-plus/static/images/id_ren.png new file mode 100644 index 0000000..a008665 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/id_ren.png differ diff --git a/unpackage/dist/build/app-plus/static/images/id_zheng.png b/unpackage/dist/build/app-plus/static/images/id_zheng.png new file mode 100644 index 0000000..8ce689a Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/id_zheng.png differ diff --git a/unpackage/dist/build/app-plus/static/images/list_icon.png b/unpackage/dist/build/app-plus/static/images/list_icon.png new file mode 100644 index 0000000..fb107d5 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/list_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/locate.jpg b/unpackage/dist/build/app-plus/static/images/locate.jpg new file mode 100644 index 0000000..e38c8e4 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/locate.jpg differ diff --git a/unpackage/dist/build/app-plus/static/images/location_icon.png b/unpackage/dist/build/app-plus/static/images/location_icon.png new file mode 100644 index 0000000..2813ac0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/location_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/look_psd.png b/unpackage/dist/build/app-plus/static/images/look_psd.png new file mode 100644 index 0000000..cd67aad Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/look_psd.png differ diff --git a/unpackage/dist/build/app-plus/static/images/mapCenter.png b/unpackage/dist/build/app-plus/static/images/mapCenter.png new file mode 100644 index 0000000..856ee58 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/mapCenter.png differ diff --git a/unpackage/dist/build/app-plus/static/images/map_icon.png b/unpackage/dist/build/app-plus/static/images/map_icon.png new file mode 100644 index 0000000..8dd6c71 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/map_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/mute.png b/unpackage/dist/build/app-plus/static/images/mute.png new file mode 100644 index 0000000..2a938fc Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/mute.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/86@2x.png b/unpackage/dist/build/app-plus/static/images/my/86@2x.png new file mode 100644 index 0000000..b240f9d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/86@2x.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/address.png b/unpackage/dist/build/app-plus/static/images/my/address.png new file mode 100644 index 0000000..70882ae Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/address.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/business.png b/unpackage/dist/build/app-plus/static/images/my/business.png new file mode 100644 index 0000000..195100d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/business.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/collect.png b/unpackage/dist/build/app-plus/static/images/my/collect.png new file mode 100644 index 0000000..de49f54 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/collect.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/complaint.png b/unpackage/dist/build/app-plus/static/images/my/complaint.png new file mode 100644 index 0000000..df03b41 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/complaint.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/contact.png b/unpackage/dist/build/app-plus/static/images/my/contact.png new file mode 100644 index 0000000..2178a4e Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/contact.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/finnish.png b/unpackage/dist/build/app-plus/static/images/my/finnish.png new file mode 100644 index 0000000..eca9e3c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/finnish.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/history.png b/unpackage/dist/build/app-plus/static/images/my/history.png new file mode 100644 index 0000000..aa627d1 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/history.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/interest.png b/unpackage/dist/build/app-plus/static/images/my/interest.png new file mode 100644 index 0000000..80059cf Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/interest.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/invite_icon.png b/unpackage/dist/build/app-plus/static/images/my/invite_icon.png new file mode 100644 index 0000000..fe2153b Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/invite_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/master.png b/unpackage/dist/build/app-plus/static/images/my/master.png new file mode 100644 index 0000000..f603e63 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/master.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/message.png b/unpackage/dist/build/app-plus/static/images/my/message.png new file mode 100644 index 0000000..e10bbe7 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/message.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/settings.png b/unpackage/dist/build/app-plus/static/images/my/settings.png new file mode 100644 index 0000000..54f89f9 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/settings.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/share.png b/unpackage/dist/build/app-plus/static/images/my/share.png new file mode 100644 index 0000000..a8428b9 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/share.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/unaccepted.png b/unpackage/dist/build/app-plus/static/images/my/unaccepted.png new file mode 100644 index 0000000..3b25a41 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/unaccepted.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/unevaluated.png b/unpackage/dist/build/app-plus/static/images/my/unevaluated.png new file mode 100644 index 0000000..0a179db Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/unevaluated.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/unpaid.png b/unpackage/dist/build/app-plus/static/images/my/unpaid.png new file mode 100644 index 0000000..709013d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/unpaid.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/unserved.png b/unpackage/dist/build/app-plus/static/images/my/unserved.png new file mode 100644 index 0000000..a1d5562 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/unserved.png differ diff --git a/unpackage/dist/build/app-plus/static/images/my/wallet.png b/unpackage/dist/build/app-plus/static/images/my/wallet.png new file mode 100644 index 0000000..2ae4b22 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/my/wallet.png differ diff --git a/unpackage/dist/build/app-plus/static/images/no_login.png b/unpackage/dist/build/app-plus/static/images/no_login.png new file mode 100644 index 0000000..dc52be0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/no_login.png differ diff --git a/unpackage/dist/build/app-plus/static/images/nologin_head.png b/unpackage/dist/build/app-plus/static/images/nologin_head.png new file mode 100644 index 0000000..4dc319c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/nologin_head.png differ diff --git a/unpackage/dist/build/app-plus/static/images/order_bg.png b/unpackage/dist/build/app-plus/static/images/order_bg.png new file mode 100644 index 0000000..d515893 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/order_bg.png differ diff --git a/unpackage/dist/build/app-plus/static/images/order_phone.png b/unpackage/dist/build/app-plus/static/images/order_phone.png new file mode 100644 index 0000000..8eee839 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/order_phone.png differ diff --git a/unpackage/dist/build/app-plus/static/images/pay_icon.png b/unpackage/dist/build/app-plus/static/images/pay_icon.png new file mode 100644 index 0000000..9b3286e Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/pay_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/phone_icon.png b/unpackage/dist/build/app-plus/static/images/phone_icon.png new file mode 100644 index 0000000..5325f52 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/phone_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/pintuan.png b/unpackage/dist/build/app-plus/static/images/pintuan.png new file mode 100644 index 0000000..0b523cb Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/pintuan.png differ diff --git a/unpackage/dist/build/app-plus/static/images/pintuan_done.png b/unpackage/dist/build/app-plus/static/images/pintuan_done.png new file mode 100644 index 0000000..39a8ba9 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/pintuan_done.png differ diff --git a/unpackage/dist/build/app-plus/static/images/pintuan_fail.png b/unpackage/dist/build/app-plus/static/images/pintuan_fail.png new file mode 100644 index 0000000..7c0e802 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/pintuan_fail.png differ diff --git a/unpackage/dist/build/app-plus/static/images/pintuan_ing.png b/unpackage/dist/build/app-plus/static/images/pintuan_ing.png new file mode 100644 index 0000000..90039d2 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/pintuan_ing.png differ diff --git a/unpackage/dist/build/app-plus/static/images/position_hui.png b/unpackage/dist/build/app-plus/static/images/position_hui.png new file mode 100644 index 0000000..3d7baf0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/position_hui.png differ diff --git a/unpackage/dist/build/app-plus/static/images/position_icon.png b/unpackage/dist/build/app-plus/static/images/position_icon.png new file mode 100644 index 0000000..a131632 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/position_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/position_icon_2.png b/unpackage/dist/build/app-plus/static/images/position_icon_2.png new file mode 100644 index 0000000..72d08e5 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/position_icon_2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/position_icon_3x.png b/unpackage/dist/build/app-plus/static/images/position_icon_3x.png new file mode 100644 index 0000000..34ddbdd Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/position_icon_3x.png differ diff --git a/unpackage/dist/build/app-plus/static/images/psd_icon.png b/unpackage/dist/build/app-plus/static/images/psd_icon.png new file mode 100644 index 0000000..197100f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/psd_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/recruit.png b/unpackage/dist/build/app-plus/static/images/recruit.png new file mode 100644 index 0000000..d164765 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/recruit.png differ diff --git a/unpackage/dist/build/app-plus/static/images/recruit/Effect.png b/unpackage/dist/build/app-plus/static/images/recruit/Effect.png new file mode 100644 index 0000000..e43f469 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/recruit/Effect.png differ diff --git a/unpackage/dist/build/app-plus/static/images/recruit/add.png b/unpackage/dist/build/app-plus/static/images/recruit/add.png new file mode 100644 index 0000000..bb71cb8 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/recruit/add.png differ diff --git a/unpackage/dist/build/app-plus/static/images/recruit/bj1.png b/unpackage/dist/build/app-plus/static/images/recruit/bj1.png new file mode 100644 index 0000000..b7103cf Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/recruit/bj1.png differ diff --git a/unpackage/dist/build/app-plus/static/images/recruit/bj2.png b/unpackage/dist/build/app-plus/static/images/recruit/bj2.png new file mode 100644 index 0000000..2ec5a0f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/recruit/bj2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/recruit/btn.gif b/unpackage/dist/build/app-plus/static/images/recruit/btn.gif new file mode 100644 index 0000000..0111310 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/recruit/btn.gif differ diff --git a/unpackage/dist/build/app-plus/static/images/recruit/btn.png b/unpackage/dist/build/app-plus/static/images/recruit/btn.png new file mode 100644 index 0000000..6f85c2f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/recruit/btn.png differ diff --git a/unpackage/dist/build/app-plus/static/images/recruit/close.png b/unpackage/dist/build/app-plus/static/images/recruit/close.png new file mode 100644 index 0000000..101527f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/recruit/close.png differ diff --git a/unpackage/dist/build/app-plus/static/images/recruit/guide.png b/unpackage/dist/build/app-plus/static/images/recruit/guide.png new file mode 100644 index 0000000..fdc44aa Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/recruit/guide.png differ diff --git a/unpackage/dist/build/app-plus/static/images/recruit/search_icon.png b/unpackage/dist/build/app-plus/static/images/recruit/search_icon.png new file mode 100644 index 0000000..78af14c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/recruit/search_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/recruit/tip.png b/unpackage/dist/build/app-plus/static/images/recruit/tip.png new file mode 100644 index 0000000..050dc73 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/recruit/tip.png differ diff --git a/unpackage/dist/build/app-plus/static/images/refresh.jpg b/unpackage/dist/build/app-plus/static/images/refresh.jpg new file mode 100644 index 0000000..b4a9130 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/refresh.jpg differ diff --git a/unpackage/dist/build/app-plus/static/images/remove_icon.png b/unpackage/dist/build/app-plus/static/images/remove_icon.png new file mode 100644 index 0000000..08baad9 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/remove_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/revise.png b/unpackage/dist/build/app-plus/static/images/revise.png new file mode 100644 index 0000000..dfeb845 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/revise.png differ diff --git a/unpackage/dist/build/app-plus/static/images/search.png b/unpackage/dist/build/app-plus/static/images/search.png new file mode 100644 index 0000000..1bcacf0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/search.png differ diff --git a/unpackage/dist/build/app-plus/static/images/search_1.png b/unpackage/dist/build/app-plus/static/images/search_1.png new file mode 100644 index 0000000..d00f50d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/search_1.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/address.png b/unpackage/dist/build/app-plus/static/images/shop/address.png new file mode 100644 index 0000000..115f668 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/address.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/alipay.png b/unpackage/dist/build/app-plus/static/images/shop/alipay.png new file mode 100644 index 0000000..ea8365f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/alipay.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/buy_service.png b/unpackage/dist/build/app-plus/static/images/shop/buy_service.png new file mode 100644 index 0000000..5fc7b12 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/buy_service.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/buy_time.png b/unpackage/dist/build/app-plus/static/images/shop/buy_time.png new file mode 100644 index 0000000..827ed48 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/buy_time.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/close.png b/unpackage/dist/build/app-plus/static/images/shop/close.png new file mode 100644 index 0000000..ad59131 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/close.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/imgAndText/add.png b/unpackage/dist/build/app-plus/static/images/shop/imgAndText/add.png new file mode 100644 index 0000000..1b3e9f6 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/imgAndText/add.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/imgAndText/bz.png b/unpackage/dist/build/app-plus/static/images/shop/imgAndText/bz.png new file mode 100644 index 0000000..3bfda61 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/imgAndText/bz.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/imgAndText/camera.png b/unpackage/dist/build/app-plus/static/images/shop/imgAndText/camera.png new file mode 100644 index 0000000..9c4cec0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/imgAndText/camera.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/imgAndText/fenge.png b/unpackage/dist/build/app-plus/static/images/shop/imgAndText/fenge.png new file mode 100644 index 0000000..e15b9ba Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/imgAndText/fenge.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/imgAndText/text.png b/unpackage/dist/build/app-plus/static/images/shop/imgAndText/text.png new file mode 100644 index 0000000..d7c0383 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/imgAndText/text.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/jdBj.png b/unpackage/dist/build/app-plus/static/images/shop/jdBj.png new file mode 100644 index 0000000..50d20bc Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/jdBj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/noData.png b/unpackage/dist/build/app-plus/static/images/shop/noData.png new file mode 100644 index 0000000..8abad2e Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/noData.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/noPrize.png b/unpackage/dist/build/app-plus/static/images/shop/noPrize.png new file mode 100644 index 0000000..9ba6499 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/noPrize.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/payBj.png b/unpackage/dist/build/app-plus/static/images/shop/payBj.png new file mode 100644 index 0000000..4201da9 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/payBj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pay_icon.png b/unpackage/dist/build/app-plus/static/images/shop/pay_icon.png new file mode 100644 index 0000000..db1976f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pay_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/phone.png b/unpackage/dist/build/app-plus/static/images/shop/phone.png new file mode 100644 index 0000000..04daed8 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/phone.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/add.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/add.png new file mode 100644 index 0000000..efe4283 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/add.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/bj.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/bj.png new file mode 100644 index 0000000..96c99eb Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/bj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/bj2.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/bj2.png new file mode 100644 index 0000000..0e83f9c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/bj2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/bj3.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/bj3.png new file mode 100644 index 0000000..d242445 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/bj3.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/bottomBj.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/bottomBj.png new file mode 100644 index 0000000..4f48d15 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/bottomBj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/btnBj.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/btnBj.png new file mode 100644 index 0000000..1d9f0f2 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/btnBj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/button.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/button.png new file mode 100644 index 0000000..1b474ea Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/button.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/group.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/group.png new file mode 100644 index 0000000..419ba1f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/group.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/group2.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/group2.png new file mode 100644 index 0000000..9abc60c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/group2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/jiantou.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/jiantou.png new file mode 100644 index 0000000..e29a8c7 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/jiantou.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/jiantou2.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/jiantou2.png new file mode 100644 index 0000000..0ed456d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/jiantou2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/jiantou3.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/jiantou3.png new file mode 100644 index 0000000..4559cae Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/jiantou3.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/map.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/map.png new file mode 100644 index 0000000..8bc7e63 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/map.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/order_phone.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/order_phone.png new file mode 100644 index 0000000..8228274 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/order_phone.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/phone.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/phone.png new file mode 100644 index 0000000..4e7f13d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/phone.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/radioYes.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/radioYes.png new file mode 100644 index 0000000..63aa9c6 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/radioYes.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/rightArrow.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/rightArrow.png new file mode 100644 index 0000000..63bda92 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/rightArrow.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/right_gray.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/right_gray.png new file mode 100644 index 0000000..96fd974 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/right_gray.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/share.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/share.png new file mode 100644 index 0000000..fae9c1f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/share.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/shareBj.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/shareBj.png new file mode 100644 index 0000000..7fa1148 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/shareBj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/tjt.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/tjt.png new file mode 100644 index 0000000..caa3dcc Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/tjt.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/warn.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/warn.png new file mode 100644 index 0000000..bef1ec9 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/warn.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/whiteRight.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/whiteRight.png new file mode 100644 index 0000000..ae4997d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/whiteRight.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/wx.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/wx.png new file mode 100644 index 0000000..3309163 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/wx.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/pintuan/yes.png b/unpackage/dist/build/app-plus/static/images/shop/pintuan/yes.png new file mode 100644 index 0000000..a38da5b Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/pintuan/yes.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/right.png b/unpackage/dist/build/app-plus/static/images/shop/right.png new file mode 100644 index 0000000..7a8f4c1 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/right.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/service_gl.png b/unpackage/dist/build/app-plus/static/images/shop/service_gl.png new file mode 100644 index 0000000..ff8a735 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/service_gl.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/service_order.png b/unpackage/dist/build/app-plus/static/images/shop/service_order.png new file mode 100644 index 0000000..98740a0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/service_order.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/station_gl.png b/unpackage/dist/build/app-plus/static/images/shop/station_gl.png new file mode 100644 index 0000000..023cc66 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/station_gl.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/station_order.png b/unpackage/dist/build/app-plus/static/images/shop/station_order.png new file mode 100644 index 0000000..138cb07 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/station_order.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/time_order.png b/unpackage/dist/build/app-plus/static/images/shop/time_order.png new file mode 100644 index 0000000..d2ac82c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/time_order.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/user_order.png b/unpackage/dist/build/app-plus/static/images/shop/user_order.png new file mode 100644 index 0000000..9b618ec Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/user_order.png differ diff --git a/unpackage/dist/build/app-plus/static/images/shop/wechat.png b/unpackage/dist/build/app-plus/static/images/shop/wechat.png new file mode 100644 index 0000000..4fb51be Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/shop/wechat.png differ diff --git a/unpackage/dist/build/app-plus/static/images/sign-green.png b/unpackage/dist/build/app-plus/static/images/sign-green.png new file mode 100644 index 0000000..5820527 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/sign-green.png differ diff --git a/unpackage/dist/build/app-plus/static/images/sign-grew.png b/unpackage/dist/build/app-plus/static/images/sign-grew.png new file mode 100644 index 0000000..ab024f6 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/sign-grew.png differ diff --git a/unpackage/dist/build/app-plus/static/images/sign-red.png b/unpackage/dist/build/app-plus/static/images/sign-red.png new file mode 100644 index 0000000..87d8871 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/sign-red.png differ diff --git a/unpackage/dist/build/app-plus/static/images/sort_d.png b/unpackage/dist/build/app-plus/static/images/sort_d.png new file mode 100644 index 0000000..4895469 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/sort_d.png differ diff --git a/unpackage/dist/build/app-plus/static/images/sort_g.png b/unpackage/dist/build/app-plus/static/images/sort_g.png new file mode 100644 index 0000000..6b447c7 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/sort_g.png differ diff --git a/unpackage/dist/build/app-plus/static/images/sort_no.png b/unpackage/dist/build/app-plus/static/images/sort_no.png new file mode 100644 index 0000000..105a242 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/sort_no.png differ diff --git a/unpackage/dist/build/app-plus/static/images/sq_icon.png b/unpackage/dist/build/app-plus/static/images/sq_icon.png new file mode 100644 index 0000000..c4c8139 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/sq_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/star_n.png b/unpackage/dist/build/app-plus/static/images/star_n.png new file mode 100644 index 0000000..38e0f08 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/star_n.png differ diff --git a/unpackage/dist/build/app-plus/static/images/star_y.png b/unpackage/dist/build/app-plus/static/images/star_y.png new file mode 100644 index 0000000..cfb1612 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/star_y.png differ diff --git a/unpackage/dist/build/app-plus/static/images/stop_use.png b/unpackage/dist/build/app-plus/static/images/stop_use.png new file mode 100644 index 0000000..80f17a4 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/stop_use.png differ diff --git a/unpackage/dist/build/app-plus/static/images/submit-fail.png b/unpackage/dist/build/app-plus/static/images/submit-fail.png new file mode 100644 index 0000000..44f8df7 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/submit-fail.png differ diff --git a/unpackage/dist/build/app-plus/static/images/submit-success.png b/unpackage/dist/build/app-plus/static/images/submit-success.png new file mode 100644 index 0000000..b6c98ff Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/submit-success.png differ diff --git a/unpackage/dist/build/app-plus/static/images/success_icon.png b/unpackage/dist/build/app-plus/static/images/success_icon.png new file mode 100644 index 0000000..e8a3d7e Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/success_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/banner.png b/unpackage/dist/build/app-plus/static/images/syr/banner.png new file mode 100644 index 0000000..e6302ba Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/banner.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/buy_station.png b/unpackage/dist/build/app-plus/static/images/syr/buy_station.png new file mode 100644 index 0000000..f5c5baf Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/buy_station.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/card.png b/unpackage/dist/build/app-plus/static/images/syr/card.png new file mode 100644 index 0000000..02a912c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/card.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/company.png b/unpackage/dist/build/app-plus/static/images/syr/company.png new file mode 100644 index 0000000..f2d6d31 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/company.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/distance.png b/unpackage/dist/build/app-plus/static/images/syr/distance.png new file mode 100644 index 0000000..e3014e5 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/distance.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/introduction.png b/unpackage/dist/build/app-plus/static/images/syr/introduction.png new file mode 100644 index 0000000..5309019 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/introduction.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/price1.png b/unpackage/dist/build/app-plus/static/images/syr/price1.png new file mode 100644 index 0000000..ef8b10d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/price1.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/price2.png b/unpackage/dist/build/app-plus/static/images/syr/price2.png new file mode 100644 index 0000000..f88505f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/price2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/price3.png b/unpackage/dist/build/app-plus/static/images/syr/price3.png new file mode 100644 index 0000000..95876fe Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/price3.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/service_gl.png b/unpackage/dist/build/app-plus/static/images/syr/service_gl.png new file mode 100644 index 0000000..ff8a735 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/service_gl.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/shop_order.png b/unpackage/dist/build/app-plus/static/images/syr/shop_order.png new file mode 100644 index 0000000..ba8c1dd Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/shop_order.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/station_order.png b/unpackage/dist/build/app-plus/static/images/syr/station_order.png new file mode 100644 index 0000000..14217e8 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/station_order.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/time_gl.png b/unpackage/dist/build/app-plus/static/images/syr/time_gl.png new file mode 100644 index 0000000..6032531 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/time_gl.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/time_order.png b/unpackage/dist/build/app-plus/static/images/syr/time_order.png new file mode 100644 index 0000000..d2ac82c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/time_order.png differ diff --git a/unpackage/dist/build/app-plus/static/images/syr/user_order.png b/unpackage/dist/build/app-plus/static/images/syr/user_order.png new file mode 100644 index 0000000..13dafb7 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/syr/user_order.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tab/reserve1.png b/unpackage/dist/build/app-plus/static/images/tab/reserve1.png new file mode 100644 index 0000000..eb1627c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tab/reserve1.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tab/shangjia.png b/unpackage/dist/build/app-plus/static/images/tab/shangjia.png new file mode 100644 index 0000000..776b75a Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tab/shangjia.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tab/xiajia.png b/unpackage/dist/build/app-plus/static/images/tab/xiajia.png new file mode 100644 index 0000000..dec1d53 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tab/xiajia.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/dis_home.png b/unpackage/dist/build/app-plus/static/images/tabbar/dis_home.png new file mode 100644 index 0000000..376fa17 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/dis_home.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/dis_my.png b/unpackage/dist/build/app-plus/static/images/tabbar/dis_my.png new file mode 100644 index 0000000..2ee1982 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/dis_my.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/dis_order.png b/unpackage/dist/build/app-plus/static/images/tabbar/dis_order.png new file mode 100644 index 0000000..80a8974 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/dis_order.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/home_icon.png b/unpackage/dist/build/app-plus/static/images/tabbar/home_icon.png new file mode 100644 index 0000000..bc5777a Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/home_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/home_icon_active.png b/unpackage/dist/build/app-plus/static/images/tabbar/home_icon_active.png new file mode 100644 index 0000000..8b30d50 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/home_icon_active.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/home_icon_dis.png b/unpackage/dist/build/app-plus/static/images/tabbar/home_icon_dis.png new file mode 100644 index 0000000..3b2397d Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/home_icon_dis.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/my_icon.png b/unpackage/dist/build/app-plus/static/images/tabbar/my_icon.png new file mode 100644 index 0000000..4a51608 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/my_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/my_icon_active.png b/unpackage/dist/build/app-plus/static/images/tabbar/my_icon_active.png new file mode 100644 index 0000000..fac18e6 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/my_icon_active.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/my_icon_dis.png b/unpackage/dist/build/app-plus/static/images/tabbar/my_icon_dis.png new file mode 100644 index 0000000..ee90213 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/my_icon_dis.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/new_home.png b/unpackage/dist/build/app-plus/static/images/tabbar/new_home.png new file mode 100644 index 0000000..b53545b Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/new_home.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/new_home_gray.png b/unpackage/dist/build/app-plus/static/images/tabbar/new_home_gray.png new file mode 100644 index 0000000..96f2b0f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/new_home_gray.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/new_message.png b/unpackage/dist/build/app-plus/static/images/tabbar/new_message.png new file mode 100644 index 0000000..d78e893 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/new_message.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/new_message_gray.png b/unpackage/dist/build/app-plus/static/images/tabbar/new_message_gray.png new file mode 100644 index 0000000..ad69144 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/new_message_gray.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/new_my.png b/unpackage/dist/build/app-plus/static/images/tabbar/new_my.png new file mode 100644 index 0000000..797ed38 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/new_my.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/new_my_gray.png b/unpackage/dist/build/app-plus/static/images/tabbar/new_my_gray.png new file mode 100644 index 0000000..6db8a24 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/new_my_gray.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/new_order.png b/unpackage/dist/build/app-plus/static/images/tabbar/new_order.png new file mode 100644 index 0000000..54d44a3 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/new_order.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/new_order_gray.png b/unpackage/dist/build/app-plus/static/images/tabbar/new_order_gray.png new file mode 100644 index 0000000..baebf74 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/new_order_gray.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tabbar/order_icon.png b/unpackage/dist/build/app-plus/static/images/tabbar/order_icon.png new file mode 100644 index 0000000..a24362f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tabbar/order_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/tell_icon.png b/unpackage/dist/build/app-plus/static/images/tell_icon.png new file mode 100644 index 0000000..3afdde0 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/tell_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/time_icon.png b/unpackage/dist/build/app-plus/static/images/time_icon.png new file mode 100644 index 0000000..f84c7e6 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/time_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/images/unmute.png b/unpackage/dist/build/app-plus/static/images/unmute.png new file mode 100644 index 0000000..bee0a77 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/unmute.png differ diff --git a/unpackage/dist/build/app-plus/static/images/upload-img.png b/unpackage/dist/build/app-plus/static/images/upload-img.png new file mode 100644 index 0000000..e0ca3b4 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/upload-img.png differ diff --git a/unpackage/dist/build/app-plus/static/images/upload/bj.png b/unpackage/dist/build/app-plus/static/images/upload/bj.png new file mode 100644 index 0000000..02fb1c4 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/upload/bj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/wallet/bj.png b/unpackage/dist/build/app-plus/static/images/wallet/bj.png new file mode 100644 index 0000000..3198ad5 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/wallet/bj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/wallet/bj2.png b/unpackage/dist/build/app-plus/static/images/wallet/bj2.png new file mode 100644 index 0000000..df1d950 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/wallet/bj2.png differ diff --git a/unpackage/dist/build/app-plus/static/images/wallet/close.png b/unpackage/dist/build/app-plus/static/images/wallet/close.png new file mode 100644 index 0000000..c943eb8 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/wallet/close.png differ diff --git a/unpackage/dist/build/app-plus/static/images/wallet/default.png b/unpackage/dist/build/app-plus/static/images/wallet/default.png new file mode 100644 index 0000000..ce25446 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/wallet/default.png differ diff --git a/unpackage/dist/build/app-plus/static/images/wallet/default_yes.png b/unpackage/dist/build/app-plus/static/images/wallet/default_yes.png new file mode 100644 index 0000000..afbb1a3 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/wallet/default_yes.png differ diff --git a/unpackage/dist/build/app-plus/static/images/wallet/right.png b/unpackage/dist/build/app-plus/static/images/wallet/right.png new file mode 100644 index 0000000..c92a31a Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/wallet/right.png differ diff --git a/unpackage/dist/build/app-plus/static/images/wallet/tip.png b/unpackage/dist/build/app-plus/static/images/wallet/tip.png new file mode 100644 index 0000000..d12a67c Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/wallet/tip.png differ diff --git a/unpackage/dist/build/app-plus/static/images/wallet/tipBj.png b/unpackage/dist/build/app-plus/static/images/wallet/tipBj.png new file mode 100644 index 0000000..6bd7cc5 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/wallet/tipBj.png differ diff --git a/unpackage/dist/build/app-plus/static/images/wallet/wallet.png b/unpackage/dist/build/app-plus/static/images/wallet/wallet.png new file mode 100644 index 0000000..86b59a7 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/wallet/wallet.png differ diff --git a/unpackage/dist/build/app-plus/static/images/wechat.png b/unpackage/dist/build/app-plus/static/images/wechat.png new file mode 100644 index 0000000..6f413db Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/wechat.png differ diff --git a/unpackage/dist/build/app-plus/static/images/whiteBack.png b/unpackage/dist/build/app-plus/static/images/whiteBack.png new file mode 100644 index 0000000..dbd6f9f Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/whiteBack.png differ diff --git a/unpackage/dist/build/app-plus/static/images/zk_icon.png b/unpackage/dist/build/app-plus/static/images/zk_icon.png new file mode 100644 index 0000000..2e5f642 Binary files /dev/null and b/unpackage/dist/build/app-plus/static/images/zk_icon.png differ diff --git a/unpackage/dist/build/app-plus/static/logo.png b/unpackage/dist/build/app-plus/static/logo.png new file mode 100644 index 0000000..3338d5e Binary files /dev/null and b/unpackage/dist/build/app-plus/static/logo.png differ diff --git a/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-android/config.json b/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-android/config.json new file mode 100644 index 0000000..86d6318 --- /dev/null +++ b/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-android/config.json @@ -0,0 +1,29 @@ +{ + "minSdkVersion": "21", + "dependencies": [ + "com.google.android.material:material:1.3.0", + "com.google.code.gson:gson:2.9.1", + "commons-codec:commons-codec:1.15", + "com.github.bumptech.glide:glide:4.12.0", + "com.tencent.timpush:timpush:8.8.+", + "com.tencent.liteav.tuikit:tuicore:8.8.+", + "com.tencent.timpush:huawei:8.8.+", + "com.tencent.timpush:xiaomi:8.8.+", + "com.tencent.timpush:oppo:8.8.+", + "com.tencent.timpush:meizu:8.8.+", + "com.tencent.timpush:fcm:8.8.+", + "com.tencent.timpush:vivo:8.5.6864", + "com.tencent.timpush:honor:8.5.6864" + ], + "project": { + "plugins": [ + "com.huawei.agconnect", + "com.hihonor.mcs.asplugin" + ], + "dependencies": [ + "com.huawei.agconnect:agcp:1.9.1.301", + "com.google.gms:google-services:4.3.15", + "com.hihonor.mcs:asplugin:2.0.1.300" + ] + } +} \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-android/src/index.kt b/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-android/src/index.kt new file mode 100644 index 0000000..7d44916 --- /dev/null +++ b/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-android/src/index.kt @@ -0,0 +1,299 @@ +@file:Suppress("UNCHECKED_CAST", "USELESS_CAST", "INAPPLICABLE_JVM_NAME", "UNUSED_ANONYMOUS_PARAMETER", "SENSELESS_COMPARISON", "NAME_SHADOWING", "UNNECESSARY_NOT_NULL_ASSERTION") +package uts.sdk.modules.TencentCloudPush +import android.content.Context +import com.tencent.qcloud.tim.push.TIMPushCallback +import com.tencent.qcloud.tim.push.TIMPushListener +import com.tencent.qcloud.tim.push.TIMPushManager +import com.tencent.qcloud.tim.push.TIMPushMessage +import com.tencent.qcloud.tim.push.config.TIMPushConfig +import io.dcloud.uniapp.* +import io.dcloud.uniapp.extapi.* +import io.dcloud.uts.* +import io.dcloud.uts.Map +import io.dcloud.uts.Set +import kotlin.properties.Delegates +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Deferred +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import io.dcloud.uts.UTSAndroid +open class PushCallbackOptions ( + @JsonNotNull + open var apiName: String, + open var success: (res: Any?) -> Unit, + open var fail: (errCode: Number, errMsg: String) -> Unit, +) : UTSObject() +open class PushListenerOptions ( + open var listener: (eventType: String, data: Any) -> Unit, +) : UTSObject() +val LOG_PREFIX: String = "Push |" +open class PushCallback : TIMPushCallback { + private var apiName: String + private var success: ((data: Any?) -> Unit) + private var fail: ((errCode: Number, errMsg: String) -> Unit) + constructor(options: PushCallbackOptions){ + this.apiName = options.apiName + this.success = options.success + this.fail = options.fail + } + override fun onSuccess(data: Any?) { + console.log("" + LOG_PREFIX + " " + this.apiName + " ok, data:", data) + if (data == null) { + this.success?.invoke("") + } else { + this.success?.invoke(data) + } + } + override fun onError(errCode: Int, errMsg: String, data: Any?) { + this.fail?.invoke(errCode as Number, errMsg) + } +} +val LOG_PREFIX__1: String = "Push | PushListener" +open class PushListener : TIMPushListener { + private var listener: ((eventType: String, data: Any) -> Unit) + constructor(options: PushListenerOptions){ + this.listener = options.listener + console.log("" + LOG_PREFIX__1 + " ok") + } + override fun onRecvPushMessage(message: TIMPushMessage) { + this.listener("message_received", _uO("data" to message)) + } + override fun onRevokePushMessage(messageID: String) { + this.listener("message_revoked", _uO("data" to messageID)) + } + override fun onNotificationClicked(ext: String) { + this.listener("notification_clicked", _uO("data" to ext)) + } +} +val context: Context? = UTSAndroid.getAppContext() +val runBlock1 = run { + console.warn("Push | package.name:", context?.getPackageName()) + TIMPushConfig.getInstance().setRunningPlatform(2) +} +val Push = TIMPushManager.getInstance() +open class EVENT { + companion object { + var MESSAGE_RECEIVED: String = "message_received" + var MESSAGE_REVOKED: String = "message_revoked" + var NOTIFICATION_CLICKED: String = "notification_clicked" + } +} +var disableNotification = false +fun disablePostNotificationInForeground(disable: Boolean): Unit { + console.log("Push | disablePostNotificationInForeground", disable) + disableNotification = disable + Push.disablePostNotificationInForeground(disableNotification) +} +fun registerPush(SDKAppID: Number, appKey: String, onSuccess: (data: String) -> Unit, onError: ((errCode: Number, errMsg: String) -> Unit)?): Unit { + if (SDKAppID == 0) { + onError?.invoke(9010001, "Invalid SDKAppID") + } else if (appKey == "") { + onError?.invoke(9010002, "Invalid appKey") + } + val pushCbOptions = PushCallbackOptions(apiName = "registerPush", success = fun(res: Any?){ + Push.disablePostNotificationInForeground(disableNotification) + var token: String = res as String + onSuccess(token) + } + , fail = fun(errCode: Number, errMsg: String){ + onError?.invoke(errCode, errMsg) + } + ) + Push.registerPush(context, SDKAppID.toInt(), appKey, PushCallback(pushCbOptions)) +} +fun setRegistrationID(registrationID: String, onSuccess: () -> Unit): Unit { + val pushCbOptions = PushCallbackOptions(apiName = "setRegistrationID", success = fun(res: Any?){ + onSuccess() + } + , fail = fun(errCode: Number, errMsg: String){}) + Push.setRegistrationID(registrationID, PushCallback(pushCbOptions)) +} +fun getRegistrationID(onSuccess: (registrationID: String) -> Unit): Unit { + val pushCbOptions = PushCallbackOptions(apiName = "getRegistrationID", success = fun(res: Any?){ + var registrationID: String = res as String + onSuccess(registrationID) + } + , fail = fun(errCode: Number, errMsg: String){}) + Push.getRegistrationID(PushCallback(pushCbOptions)) +} +fun unRegisterPush(onSuccess: () -> Unit, onError: ((errCode: Number, errMsg: String) -> Unit)?): Unit { + val pushCbOptions = PushCallbackOptions(apiName = "unRegisterPush", success = fun(res: Any?){ + onSuccess() + } + , fail = fun(errCode: Number, errMsg: String){}) + Push.unRegisterPush(PushCallback(pushCbOptions)) +} +fun createNotificationChannel(options: Any, onSuccess: (extInfo: String) -> Unit): Unit { + val pushCbOptions = PushCallbackOptions(apiName = "createNotificationChannel", success = fun(res: Any?){ + var ret: String = res as String + onSuccess(ret) + } + , fail = fun(errCode: Number, errMsg: String){}) + Push.callExperimentalAPI("createNotificationChannel", JSON.stringify(options), PushCallback(pushCbOptions)) +} +fun getNotificationExtInfo(onSuccess: (extInfo: String) -> Unit): Unit { + val pushCbOptions = PushCallbackOptions(apiName = "getNotificationExtInfo", success = fun(res: Any?){ + var ret: String = res as String + onSuccess(ret) + } + , fail = fun(errCode: Number, errMsg: String){}) + Push.callExperimentalAPI("getNotificationExtInfo", null, PushCallback(pushCbOptions)) +} +val listenerMap = Map Unit>>() +val pushListenerOptions = PushListenerOptions(listener = fun(eventName: String, data: Any){ + listenerMap.get(eventName)?.forEach(fun(item){ + item(data) + } + ) +} +) +val pushListener = PushListener(pushListenerOptions) +fun addPushListener(eventName: String, listener: (res: Any) -> Unit): Unit { + if (listenerMap.size === 0) { + Push.addPushListener(pushListener) + } + val listeners = _uA( + listener + ) as UTSArray<(res: Any) -> Unit> + listenerMap.get(eventName)?.forEach(fun(item){ + listeners.push(item) + } + ) + listenerMap.set(eventName, listeners) +} +fun removePushListener(eventName: String, listener: ((res: Any) -> Unit)?): Unit { + listenerMap.`delete`(eventName) + if (listenerMap.size === 0) { + Push.removePushListener(pushListener) + } +} +open class EVENTByJs : EVENT { + constructor() : super() {} + companion object { + var MESSAGE_RECEIVED = EVENT.MESSAGE_RECEIVED + var MESSAGE_REVOKED = EVENT.MESSAGE_REVOKED + var NOTIFICATION_CLICKED = EVENT.NOTIFICATION_CLICKED + } +} +fun disablePostNotificationInForegroundByJs(disable: Boolean): Unit { + return disablePostNotificationInForeground(disable) +} +fun registerPushByJs(SDKAppID: Number, appKey: String, onSuccess: UTSCallback, onError: UTSCallback?): Unit { + return registerPush(SDKAppID, appKey, if (onSuccess.fnJS != null) { + onSuccess.fnJS + } else { + onSuccess.fnJS = fun(data: String){ + onSuccess(data) + } + onSuccess.fnJS + } + as (data: String) -> Unit, if (onError == null) { + null + } else { + if (onError.fnJS != null) { + onError.fnJS + } else { + onError.fnJS = fun(errCode: Number, errMsg: String){ + onError(errCode, errMsg) + } + onError.fnJS + } + as (errCode: Number, errMsg: String) -> Unit + } + ) +} +fun setRegistrationIDByJs(registrationID: String, onSuccess: UTSCallback): Unit { + return setRegistrationID(registrationID, if (onSuccess.fnJS != null) { + onSuccess.fnJS + } else { + onSuccess.fnJS = fun(){ + onSuccess() + } + onSuccess.fnJS + } + as () -> Unit) +} +fun getRegistrationIDByJs(onSuccess: UTSCallback): Unit { + return getRegistrationID(if (onSuccess.fnJS != null) { + onSuccess.fnJS + } else { + onSuccess.fnJS = fun(registrationID: String){ + onSuccess(registrationID) + } + onSuccess.fnJS + } + as (registrationID: String) -> Unit) +} +fun unRegisterPushByJs(onSuccess: UTSCallback, onError: UTSCallback?): Unit { + return unRegisterPush(if (onSuccess.fnJS != null) { + onSuccess.fnJS + } else { + onSuccess.fnJS = fun(){ + onSuccess() + } + onSuccess.fnJS + } + as () -> Unit, if (onError == null) { + null + } else { + if (onError.fnJS != null) { + onError.fnJS + } else { + onError.fnJS = fun(errCode: Number, errMsg: String){ + onError(errCode, errMsg) + } + onError.fnJS + } + as (errCode: Number, errMsg: String) -> Unit + } + ) +} +fun createNotificationChannelByJs(options: Any, onSuccess: UTSCallback): Unit { + return createNotificationChannel(options, if (onSuccess.fnJS != null) { + onSuccess.fnJS + } else { + onSuccess.fnJS = fun(extInfo: String){ + onSuccess(extInfo) + } + onSuccess.fnJS + } + as (extInfo: String) -> Unit) +} +fun getNotificationExtInfoByJs(onSuccess: UTSCallback): Unit { + return getNotificationExtInfo(if (onSuccess.fnJS != null) { + onSuccess.fnJS + } else { + onSuccess.fnJS = fun(extInfo: String){ + onSuccess(extInfo) + } + onSuccess.fnJS + } + as (extInfo: String) -> Unit) +} +fun addPushListenerByJs(eventName: String, listener: UTSCallback): Unit { + return addPushListener(eventName, if (listener.fnJS != null) { + listener.fnJS + } else { + listener.fnJS = fun(res: Any){ + listener(res) + } + listener.fnJS + } + as (res: Any) -> Unit) +} +fun removePushListenerByJs(eventName: String, listener: UTSCallback?): Unit { + return removePushListener(eventName, if (listener == null) { + null + } else { + if (listener.fnJS != null) { + listener.fnJS + } else { + listener.fnJS = fun(res: Any){ + listener(res) + } + listener.fnJS + } + as (res: Any) -> Unit + } + ) +} diff --git a/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-ios/UTS.entitlements b/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-ios/UTS.entitlements new file mode 100644 index 0000000..903def2 --- /dev/null +++ b/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-ios/UTS.entitlements @@ -0,0 +1,8 @@ + + + + + aps-environment + development + + diff --git a/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-ios/config.json b/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-ios/config.json new file mode 100644 index 0000000..89a7927 --- /dev/null +++ b/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-ios/config.json @@ -0,0 +1,11 @@ +{ + "deploymentTarget": "9.0", + "dependencies-pods": [ + { + "name": "TXIMSDK_Plus_iOS_XCFramework", + "version": "8.8.7357" + }, { + "name": "TIMPush", + "version": "8.8.7357" + }] +} diff --git a/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-ios/src/index.swift b/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-ios/src/index.swift new file mode 100644 index 0000000..e0512e1 --- /dev/null +++ b/unpackage/dist/build/app-plus/uni_modules/TencentCloud-Push/utssdk/app-ios/src/index.swift @@ -0,0 +1,260 @@ +import DCloudUTSFoundation +import TIMPush +@objc(UTSSDKModulesTencentCloudPushPushListenerOptions) +@objcMembers +public class PushListenerOptions : NSObject, UTSObject { + public var listener: ((_ eventType: String, _ data: Any) -> Void)! + public subscript(_ key: String) -> Any? { + get { + return utsSubscriptGetValue(key) + } + set { + switch(key){ + case "listener": + self.listener = try! utsSubscriptCheckValue(newValue) + default: + break + } + } + } + public override init() { + super.init() + } + public init(_ obj: UTSJSONObject) { + self.listener = obj["listener"] as! ((_ eventType: String, _ data: Any) -> Void) + } +} +public var LOG_PREFIX: String = "Push | PushListener" +@objc(UTSSDKModulesTencentCloudPushPushListener) +@objcMembers +public class PushListener : NSObject, TIMPushListener { + private var listener: ((_ eventType: String, _ data: Any) -> Void) + public init(_ options: PushListenerOptions){ + self.listener = options.listener + console.log(""" +\(LOG_PREFIX) ok +""") + } + public func onRecvPushMessage(_ message: TIMPushMessage) { + self.listener("message_received", UTSJSONObject([ + "data": message + ])) + } + public func onRevokePushMessage(_ messageID: String) { + self.listener("message_revoked", UTSJSONObject([ + "data": messageID + ])) + } + public func onNotificationClicked(_ ext: String) { + self.listener("notification_clicked", UTSJSONObject([ + "data": ext + ])) + } +} +public var LOG_PREFIX__1 = "Push |" +@objc(UTSSDKModulesTencentCloudPushEVENT) +@objcMembers +public class EVENT : NSObject { + public static var MESSAGE_RECEIVED: String = "message_received" + public static var MESSAGE_REVOKED: String = "message_revoked" + public static var NOTIFICATION_CLICKED: String = "notification_clicked" +} +public func setRunningPlatform() -> Void { + console.log(LOG_PREFIX__1, "setRunningPlatform") + var param = NSString("{\"runningPlatform\":2}") + TIMPushManager.callExperimentalAPI("setPushConfig", param: param, succ: { + (ext: NSObject?) -> Void in + var platform: String = ext as! String + console.log(LOG_PREFIX__1, "setRunningPlatform ok. platform:", platform) + }, fail: { + (code: Int32?, desc: String?) -> Void in + console.log(LOG_PREFIX__1, """ +setRunningPlatform fail. code: \(code), desc: \(desc) +""") + }) +} +public var disableNotification = false +public func disablePostNotificationInForeground(_ _disable: Bool) -> Void { + console.log(LOG_PREFIX__1, "disablePostNotificationInForeground", _disable) + disableNotification = _disable + TIMPushManager.disablePostNotificationInForeground(disable: disableNotification) +} +public func registerPush(_ SDKAppID: NSNumber, _ appKey: String, _ onSuccess: @escaping (_ data: String) -> Void, _ onError: ((_ errCode: NSNumber, _ errMsg: String) -> Void)?) -> Void { + if (SDKAppID == 0) { + onError?(9010001, "Invalid SDKAppID") + } else if (appKey == "") { + onError?(9010002, "Invalid appKey") + } + setRunningPlatform() + TIMPushManager.registerPush(SDKAppID.toInt32(), appKey: appKey, succ: { + (deviceToken: Data?) -> Void in + TIMPushManager.disablePostNotificationInForeground(disable: disableNotification) + console.log("devicetoken ->", deviceToken, deviceToken?.count) + onSuccess("") + }, fail: { + (code: Int32?, desc: String?) -> Void in + onError?(code as! NSNumber, desc as! String) + }) +} +public func unRegisterPush(_ onSuccess: @escaping () -> Void, _ onError: @escaping (_ errCode: NSNumber, _ errMsg: String) -> Void) -> Void { + TIMPushManager.unRegisterPush({ + () -> Void in + onSuccess() + }, fail: { + (code: Int32?, desc: String?) -> Void in + onError(code as! NSNumber, desc as! String) + }) +} +public func setRegistrationID(_ registrationID: String, _ onSuccess: @escaping () -> Void) -> Void { + console.log(LOG_PREFIX__1, "setRegistrationID", """ +registrationID:\(registrationID) +""") + TIMPushManager.setRegistrationID(registrationID, callback: { + () -> Void in + console.log(LOG_PREFIX__1, "setRegistrationID ok") + onSuccess() + }) +} +public func getRegistrationID(_ onSuccess: @escaping (_ registrationID: String) -> Void) -> Void { + TIMPushManager.getRegistrationID({ + (value: String?) -> Void in + var ret: String = value as! String + onSuccess(ret) + }) +} +public func createNotificationChannel(_ options: Any, _ onSuccess: @escaping (_ data: String) -> Void) -> Void {} +public func getNotificationExtInfo(_ onSuccess: @escaping (_ extInfo: String) -> Void) -> Void { + console.log(LOG_PREFIX__1, "getNotificationExtInfo") + TIMPushManager.callExperimentalAPI("getNotificationExtInfo", param: UTSJSONObject([:]), succ: { + (ext: NSObject?) -> Void in + var str: String = ext as! String + console.log(LOG_PREFIX__1, "getNotificationExtInfo ok. ext:", str) + onSuccess(str) + }, fail: { + (code: Int32?, desc: String?) -> Void in + }) +} +public var listenerMap = Map Void>>() +public var pushListenerOptions = PushListenerOptions(UTSJSONObject([ + "listener": { + (_ eventName: String, _ data: Any) -> Void in + listenerMap.get(eventName)?.forEach({ + (_ item) -> Void in + item(data) + }) + } +])) +public var pushListener = PushListener(pushListenerOptions) +public func addPushListener(_ eventName: String, _ _listener: @escaping (_ res: Any) -> Void) -> Void { + console.log(LOG_PREFIX__1, "addPushListener", eventName) + if (listenerMap.size === 0) { + TIMPushManager.addPushListener(listener: pushListener) + } + var listeners = [ + _listener + ] as! Array<(_ res: Any) -> Void> + listenerMap.get(eventName)?.forEach({ + (item) -> Void in + listeners.push(item) + }) + listenerMap.set(eventName, listeners) +} +public func removePushListener(_ eventName: String, _ _listener: ((_ res: Any) -> Void)?) -> Void { + console.log(LOG_PREFIX__1, "removePushListener", eventName) + listenerMap.delete(eventName) + if (listenerMap.size === 0) { + TIMPushManager.removePushListener(listener: pushListener) + } +} +@objc(UTSSDKModulesTencentCloudPushEVENTByJs) +@objcMembers +public class EVENTByJs : EVENT { +} +public func disablePostNotificationInForegroundByJs(_ _disable: Bool) -> Void { + return disablePostNotificationInForeground(_disable) +} +public func registerPushByJs(_ SDKAppID: NSNumber, _ appKey: String, _ onSuccess: UTSCallback, _ onError: UTSCallback?) -> Void { + return registerPush(SDKAppID, appKey, { + (data: String) -> Void in + onSuccess(data) + }, { + (errCode: NSNumber, errMsg: String) -> Void in + onError?(errCode, errMsg) + }) +} +public func unRegisterPushByJs(_ onSuccess: UTSCallback, _ onError: UTSCallback) -> Void { + return unRegisterPush({ + () -> Void in + onSuccess() + }, { + (errCode: NSNumber, errMsg: String) -> Void in + onError(errCode, errMsg) + }) +} +public func setRegistrationIDByJs(_ registrationID: String, _ onSuccess: UTSCallback) -> Void { + return setRegistrationID(registrationID, { + () -> Void in + onSuccess() + }) +} +public func getRegistrationIDByJs(_ onSuccess: UTSCallback) -> Void { + return getRegistrationID({ + (registrationID: String) -> Void in + onSuccess(registrationID) + }) +} +public func createNotificationChannelByJs(_ options: Any, _ onSuccess: UTSCallback) -> Void { + return createNotificationChannel(options, { + (data: String) -> Void in + onSuccess(data) + }) +} +public func getNotificationExtInfoByJs(_ onSuccess: UTSCallback) -> Void { + return getNotificationExtInfo({ + (extInfo: String) -> Void in + onSuccess(extInfo) + }) +} +public func addPushListenerByJs(_ eventName: String, _ _listener: UTSCallback) -> Void { + return addPushListener(eventName, { + (res: Any) -> Void in + _listener(res) + }) +} +public func removePushListenerByJs(_ eventName: String, _ _listener: UTSCallback?) -> Void { + return removePushListener(eventName, { + (res: Any) -> Void in + _listener?(res) + }) +} +@objc(UTSSDKModulesTencentCloudPushIndexSwift) +@objcMembers +public class UTSSDKModulesTencentCloudPushIndexSwift : NSObject { + public static func s_disablePostNotificationInForegroundByJs(_ _disable: Bool) -> Void { + return disablePostNotificationInForegroundByJs(_disable) + } + public static func s_registerPushByJs(_ SDKAppID: NSNumber, _ appKey: String, _ onSuccess: UTSCallback, _ onError: UTSCallback?) -> Void { + return registerPushByJs(SDKAppID, appKey, onSuccess, onError) + } + public static func s_unRegisterPushByJs(_ onSuccess: UTSCallback, _ onError: UTSCallback) -> Void { + return unRegisterPushByJs(onSuccess, onError) + } + public static func s_setRegistrationIDByJs(_ registrationID: String, _ onSuccess: UTSCallback) -> Void { + return setRegistrationIDByJs(registrationID, onSuccess) + } + public static func s_getRegistrationIDByJs(_ onSuccess: UTSCallback) -> Void { + return getRegistrationIDByJs(onSuccess) + } + public static func s_createNotificationChannelByJs(_ options: Any, _ onSuccess: UTSCallback) -> Void { + return createNotificationChannelByJs(options, onSuccess) + } + public static func s_getNotificationExtInfoByJs(_ onSuccess: UTSCallback) -> Void { + return getNotificationExtInfoByJs(onSuccess) + } + public static func s_addPushListenerByJs(_ eventName: String, _ _listener: UTSCallback) -> Void { + return addPushListenerByJs(eventName, _listener) + } + public static func s_removePushListenerByJs(_ eventName: String, _ _listener: UTSCallback?) -> Void { + return removePushListenerByJs(eventName, _listener) + } +} diff --git a/unpackage/dist/build/app-plus/uni_modules/lime-painter/hybrid/html/index.html b/unpackage/dist/build/app-plus/uni_modules/lime-painter/hybrid/html/index.html new file mode 100644 index 0000000..fdf884e --- /dev/null +++ b/unpackage/dist/build/app-plus/uni_modules/lime-painter/hybrid/html/index.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/uni_modules/lime-painter/hybrid/html/painter.js b/unpackage/dist/build/app-plus/uni_modules/lime-painter/hybrid/html/painter.js new file mode 100644 index 0000000..de93edb --- /dev/null +++ b/unpackage/dist/build/app-plus/uni_modules/lime-painter/hybrid/html/painter.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Painter={})}(this,(function(t){"use strict";var e=function(){return e=Object.assign||function(t){for(var e,i=1,n=arguments.length;i0&&r[r.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=360&&(s-=360);s<0&&(s+=360);if(0===(s=Math.round(s)))return{x0:Math.round(e/2)+n,y0:i+r,x1:Math.round(e/2)+n,y1:r};if(180===s)return{x0:Math.round(e/2)+n,y0:r,x1:Math.round(e/2)+n,y1:i+r};if(90===s)return{x0:n,y0:Math.round(i/2)+r,x1:e+n,y1:Math.round(i/2)+r};if(270===s)return{x0:e+n,y0:Math.round(i/2)+r,x1:n,y1:Math.round(i/2)+r};var a=Math.round(180*Math.asin(e/Math.sqrt(Math.pow(e,2)+Math.pow(i,2)))/Math.PI);if(s===a)return{x0:n,y0:i+r,x1:e+n,y1:r};if(s===180-a)return{x0:n,y0:r,x1:e+n,y1:i+r};if(s===180+a)return{x0:e+n,y0:r,x1:n,y1:i+r};if(s===360-a)return{x0:e+n,y0:i+r,x1:n,y1:r};var h=0,c=0,f=0,d=0;if(s180-a&&s<180||s>180&&s<180+a||s>360-a){var l=s*Math.PI/180,u=s360-a?i/2:-i/2,p=Math.tan(l)*u,g=s180-a&&s<180?e/2-p:-e/2-p;h=-(f=p+(v=Math.pow(Math.sin(l),2)*g)),c=-(d=u+v/Math.tan(l))}if(s>a&&s<90||s>90&&s<90+a||s>180+a&&s<270||s>270&&s<360-a){var v;l=(90-s)*Math.PI/180,p=s>a&&s<90||s>90&&s<90+a?e/2:-e/2,u=Math.tan(l)*p,g=s>a&&s<90||s>270&&s<360-a?i/2-u:-i/2-u;h=-(f=p+(v=Math.pow(Math.sin(l),2)*g)/Math.tan(l)),c=-(d=u+v)}return h=Math.round(h+e/2)+n,c=Math.round(i/2-c)+r,f=Math.round(f+e/2)+n,d=Math.round(i/2-d)+r,{x0:h,y0:c,x1:f,y1:d}}(r,t,e,i,n),a=s.x0,h=s.y0,c=s.x1,f=s.y1,d=o.createLinearGradient(a,h,c,f),l=r.match(/linear-gradient\((.+)\)/)[1],u=q(l.substring(l.indexOf(",")+1)),p=0;pt.length)&&(e=t.length);for(var i=0,n=new Array(e);i=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function K(t){return"number"==typeof t}function et(t){return"auto"===t||null===t}function it(t){return/%$/.test(t)}var nt=I,rt=z,ot=S,st=M,at=B,ht=O,ct=T;function ft(t){return t.replace(/-([a-z])/g,(function(t,e){return e.toUpperCase()}))}function dt(t,e){var i,n,r=function(t){var e=t.match(/([a-z]+)/)[1];return[e,ft(t.split(e)[1])]}(t),o=r[0],s=r[1],a=e.split(" ");if(s)return(i={})[o+s]=e,i;if(a.length&&!s){var h=a[0],c=a[1],f=a[2],l=a[3];return(n={})[o+d[0]]=h,n[o+d[1]]=c||h,n[o+d[2]]=f||h,n[o+d[3]]=l||c||h,n}}function lt(t){t=t.trim();for(var e=new Array,i="+",n="",r=t.length,o=0;o0;)"("===t[a+=1]&&(s+=1),")"===t[a]&&(s-=1);n="".concat(lt(t.slice(o+1,a))),o=a}if(isNaN(Number(t[o]))&&"."!==t[o]||o===r-1){var h=parseFloat(n);switch(i){case"+":e.push(h);break;case"-":e.push(-h);break;case"*":e.push(e.pop()*h);break;case"/":e.push(e.pop()/h)}i=t[o],n=""}}for(var c=0;e.length;)c+=e.pop();return c}var ut,pt=0,gt=function(){function t(){G(this,"elements",[]),G(this,"afterElements",[]),G(this,"beforeElements",[]),G(this,"ids",[]),G(this,"width",0),G(this,"height",0),G(this,"top",0),G(this,"left",0),G(this,"pre",null),G(this,"offsetX",0),G(this,"offsetY",0),pt++,this.id=pt}var e=t.prototype;return e.fixedBind=function(t,e){void 0===e&&(e=0),this.container=e?t.parent:t.root,this.container.fixedLine=this,this.fixedAdd(t)},e.fixedAdd=function(t){if(!this.ids.includes(t.id)){this.ids.push(t.id),this.elements.push(t);var e=t.computedStyle.zIndex;(void 0===e?0:e)>=0?this.afterElements.push(t):this.beforeElements.push(t),this.refreshLayout()}},e.bind=function(t){this.container=t.parent,this.container.line=null,this.container.lines?(this.container.lines.push(this),this.pre=this.getPreLine(),this.top=this.pre.top+this.pre.height,this.left=this.container.contentSize.left):(this.top=this.container.contentSize.top,this.left=this.container.contentSize.left,this.container.lines=[this]),this.isInline=t.isInline(),this.container.line=this,this.outerWidth=t.parent&&t.parent.contentSize.width?t.parent.contentSize.width:1/0,this.add(t)},e.getPreLine=function(){return this.container.lines[this.container.lines.length-2]},e.canIEnter=function(t){return!((100*t.offsetSize.width+100*this.width)/100>this.outerWidth)||(this.closeLine(),!1)},e.closeLine=function(){delete this.container.line},e.add=function(t){this.ids.includes(t.id)||(this.ids.push(t.id),this.elements.push(t),this.refreshWidthHeight(t))},e.refreshWidthHeight=function(t){t.offsetSize.height>this.height&&(this.height=t.offsetSize.height),this.width+=t.offsetSize.width||0,(this.container.lineMaxWidth||0)this[this.key.height]&&(this.container[this.key.lineMaxHeight]=this[this.key.height]=i),this[this.key.width]+=this.getWidth(t.offsetSize);var n=Math.min(this.getWidth(this),!this.getWidth(this.container.contentSize)&&1/0);(this.container[this.key.lineMaxWidth]||0)1)return 0;var e=t.style.alignSelf,i=this.getHeight(this.container.contentSize),n=i-this.getHeight(t.offsetSize);return e===f?n:e===h?n/2:"stretch"===e?(n&&t.name==S&&(t.style[this.key.width]=this.getWidth(t.offsetSize),t.style[this.key.height]=i,delete t.line,delete t.lines,t.getBoxWidthHeight()),0):0},r.layout=function(t,e){var i=this;this.refreshXAlign(),this.pre?(this.top=this.pre.top+this.pre.height+this.offsetY,this.left=e+this.offsetX):(this.top=Math.max(this.top,this.container.contentSize.top,t)+this.offsetY,this.left=Math.max(this.left,this.container.contentSize.left,e)+this.offsetX),this.elements.forEach((function(t,e){i.setIndent(t);var n=i.elements[e-1],r=i.getOffsetY(t);t.style[i.key.top]=i[i.key.top]+r,t.style[i.key.left]=n?n.offsetSize[i.key.left]+i.getWidth(n.offsetSize):i[i.key.left],t.getBoxPosition()}))},n}(gt),wt=I,mt=z,St=S,zt=k,It=B,Mt=P,kt=O,Bt=T,Wt=0,Pt={left:null,top:null,width:null,height:null},Ot=new Map,Tt=function(){function t(t,e,i,n){var r=this;G(this,"id",Wt++),G(this,"style",{left:null,top:null,width:null,height:null}),G(this,"computedStyle",{}),G(this,"originStyle",{}),G(this,"children",{}),G(this,"layoutBox",V({},Pt)),G(this,"contentSize",V({},Pt)),G(this,"clientSize",V({},Pt)),G(this,"borderSize",V({},Pt)),G(this,"offsetSize",V({},Pt)),this.ctx=n,this.root=i,e&&(this.parent=e),this.name=t.type||t.name,this.attributes=this.getAttributes(t);var o=function(t,e){var i,n=["color","fontSize","lineHeight","verticalAlign","fontWeight","textAlign"],r=t.type,o=void 0===r?ot:r,s=t.styles,h=void 0===s?{}:s,c=(e||{}).computedStyle,f=Object.assign({},F);if([rt,nt,st].includes(o)&&!h.display&&(f.display=at),c)for(var l=0;l=0&&f<0,$=h>=0&&l<0;return i==y[0]&&(this[i].left=t.left+s+g+j+(D?2*-f:0),this[i].top=t.top+h+b+W+($?2*-l:0),this[i].width=t.width+(this[i].widthAdd?0:C),this[i].height=t.height+(this[i].heightAdd?0:H),this[i].widthAdd=C,this[i].heightAdd=H),i==y[1]&&(this[i].left=t.left+s+j+(D<0?-f:0),this[i].top=t.top+h+W+($?-l:0),this[i].width=t.width+g+w,this[i].height=t.height+b+S),i==y[2]&&(this[i].left=t.left+s+j/2+(D<0?-f:0),this[i].top=t.top+h+W/2+($?-l:0),this[i].width=t.width+g+w+j/2+F/2,this[i].height=t.height+b+S+T/2+W/2),i==y[3]&&(this[i].left=t.left+(D<0?-f:0),this[i].top=t.top+($?-l:0),this[i].width=t.width+g+w+j+F+s+f,this[i].height=t.height+b+S+T+W+l+h),this[i]},e.layoutBoxUpdate=function(t,e,i,n){var r=this;if(void 0===i&&(i=-1),"border-box"==e.boxSizing){var o=e||{},s=o.border,a=(s=void 0===s?{}:s).borderWidth,h=void 0===a?0:a,c=o.borderTop,f=(c=void 0===c?{}:c).borderTopWidth,d=void 0===f?h:f,l=o.borderBottom,u=(l=void 0===l?{}:l).borderBottomWidth,p=void 0===u?h:u,g=o.borderRight,v=(g=void 0===g?{}:g).borderRightWidth,b=void 0===v?h:v,x=o.borderLeft,w=(x=void 0===x?{}:x).borderLeftWidth,m=void 0===w?h:w,S=o.padding,z=(S=void 0===S?{}:S).paddingTop,I=void 0===z?0:z,M=S.paddingRight,k=void 0===M?0:M,B=S.paddingBottom,W=void 0===B?0:B,P=S.paddingLeft,O=void 0===P?0:P;i||(t.width-=O+k+b+m),1!==i||n||(t.height-=I+W+d+p)}this.layoutBox&&(y.forEach((function(i){return r.layoutBox[i]=r.getOffsetSize(t,e,i)})),this.layoutBox=Object.assign({},this.layoutBox,this.layoutBox.borderSize))},e.getBoxPosition=function(){var t=this.computedStyle,e=this.fixedLine,i=this.lines,n=t.left,r=void 0===n?0:n,o=t.top,s=void 0===o?0:o,a=V({},this.contentSize,{left:r,top:s}),h=this.contentSize.top-this.offsetSize.top,c=this.contentSize.left-this.offsetSize.left;if(this.root.fixedLine&&!this.root.isDone){this.root.isDone=!0;for(var f,d=Z(this.root.fixedLine.elements);!(f=d()).done;){var l=f.value;l.setPosition(l,this.root.offsetSize),l.getBoxPosition()}}if(e)for(var u,p=Z(e.elements);!(u=p()).done;){var g=u.value,v=V({},this.borderSize,{left:r,top:s});g.setPosition(g,v);var y=this.borderSize.top-this.offsetSize.top,b=this.borderSize.left-this.offsetSize.left;g.style.left+=r+b,g.style.top+=s+y,g.getBoxPosition()}if(i)for(var x,w=Z(i);!(x=w()).done;){x.value.layout(a.top+h,a.left+c)}return this.layoutBoxUpdate(a,t),this.layoutBox},e.getBoxState=function(t,e){return this.isBlock(t)||this.isBlock(e)},e.isBlock=function(t){return void 0===t&&(t=this),t&&t.style.display==zt},e.isFlex=function(t){return void 0===t&&(t=this),t&&t.style.display==Mt},e.isInFlow=function(){return!(this.isAbsolute||this.isFixed)},e.inFlexBox=function(t){return void 0===t&&(t=this),!!t.isInFlow()&&(!!t.parent&&(!(!t.parent||t.parent.style.display!==Mt)||void 0))},e.isInline=function(t){return void 0===t&&(t=this),t&&t.style.display==It},e.contrastSize=function(t,e,i){var n=t;return i&&(n=Math.min(n,i)),e&&(n=Math.max(n,e)),n},e.measureText=function(t,e){var i=this.ctx.measureText(t),n=i.width,r=i.actualBoundingBoxAscent,o=i.actualBoundingBoxDescent;return{ascent:r,descent:o,width:n,fontHeight:r+o||.7*e+1}},e.getParentSize=function(t,e){if(void 0===t&&(t=this),void 0===e&&(e=!1),t&&t.parent){if(t.parent.contentSize.width)return t.parent.contentSize;if(e)return this.getParentSize(t.parent,e)}return null},e.getBoxWidthHeight=function(){var t=this,e=this.name,i=this.computedStyle,n=this.attributes,r=this.parent,o=void 0===r?{}:r,s=this.ctx,a=this.getChildren(),h=i.left,c=void 0===h?0:h,f=i.top,d=void 0===f?0:f,l=i.bottom,u=i.right,p=i.width,g=void 0===p?0:p,v=i.minWidth,y=i.maxWidth,b=i.minHeight,x=i.maxHeight,w=i.height,m=void 0===w?0:w,S=i.fontSize,z=i.fontWeight,I=i.fontFamily,M=i.fontStyle,k=i.position;i.textIndent;var B=i.lineClamp,W=i.lineHeight,P=i.padding,O=void 0===P?{}:P,T=i.margin,L=void 0===T?{}:T,R=i.border,F=(R=void 0===R?{}:R).borderWidth,A=void 0===F?0:F,E=i.borderRight,j=(E=void 0===E?{}:E).borderRightWidth,C=void 0===j?A:j,H=i.borderLeft,D=(H=void 0===H?{}:H).borderLeftWidth,$=void 0===D?A:D,U=o.contentSize&&o.contentSize.width,N=o.contentSize&&o.contentSize.height;if(it(g)&&U&&(g=Y(g,U)),it(g)&&!U&&(g=null),it(m)&&N&&(m=Y(m,N)),it(m)&&!N&&(m=null),it(v)&&U&&(v=Y(v,U)),it(y)&&U&&(y=Y(y,U)),it(b)&&N&&(b=Y(b,N)),it(x)&&N&&(x=Y(x,N)),i.padding&&U)for(var _ in i.padding)Object.hasOwnProperty.call(O,_)&&(O[_]=Y(O[_],U));var X=O.paddingRight,q=void 0===X?0:X,G=O.paddingLeft,V=void 0===G?0:G;if(i.margin&&[L.marginLeft,L.marginRight].includes("auto"))if(g){var J=U&&U-g-q-V-$-C||0;L.marginLeft==L.marginRight?L.marginLeft=L.marginRight=J/2:et(L.marginLeft)?L.marginLeft=J:L.marginRight=J}else L.marginLeft=L.marginRight=0;var Q=L.marginRight,Z=void 0===Q?0:Q,K=L.marginLeft,tt={width:g,height:m,left:0,top:0},nt=V+q+$+C+(void 0===K?0:K)+Z;if(this.offsetWidth=nt,e==mt&&!this.attributes.widths){var rt=n.text||"";s.save(),s.setFonts({fontFamily:I,fontSize:S,fontWeight:z,fontStyle:M}),rt.length,"\n"==rt&&(rt="",this.isBr=!0),(""+rt).split("\n").map((function(e){var i=Array.from(e).map((function(e){var i=""+(/^[\u4e00-\u9fa5]+$/.test(e)?"cn":e)+I+S+z+M,n=Ot.get(i);if(n)return{width:n,text:e};var r=t.measureText(e,S).width;return Ot.set(i,r),{width:r,text:e}})),n=t.measureText(e,S),r=n.fontHeight,o=n.ascent,s=n.descent;t.attributes.fontHeight=r,t.attributes.ascent=o,t.attributes.descent=s,t.attributes.widths||(t.attributes.widths=[]),t.attributes.widths.push({widths:i,total:i.reduce((function(t,e){return t+e.width}),0)})})),s.restore()}if(e==wt&&null==g){var ot=n.width,st=n.height;tt.width=this.contrastSize(Math.round(ot*m/st)||0,v,y),this.layoutBoxUpdate(tt,i,0)}if(e==mt&&null==g){var at=this.attributes.widths,ht=Math.max.apply(Math,at.map((function(t){return t.total})));if(o&&U>0&&(ht>U||this.isBlock(this))&&!this.isAbsolute&&!this.isFixed)ht=U;tt.width=this.contrastSize(ht,v,y),this.layoutBoxUpdate(tt,i,0)}if(e==mt&&(o.style.flex||!this.attributes.lines)){var ct=this.attributes.widths.length;this.attributes.widths.forEach((function(t){return t.widths.reduce((function(t,e,i){return t+e.width>tt.width?(ct++,e.width):t+e.width}),0)})),ct=B&&ct>B?B:ct,this.attributes.lines=ct}if(e==wt&&null==m){var ft=n.width,dt=n.height;n.text,tt.height=this.contrastSize(Y(tt.width*dt/ft)||0,b,x),this.layoutBoxUpdate(tt,i,1)}e==mt&&null==m&&(W=Y(W,S),tt.height=this.contrastSize(Y(this.attributes.lines*W),b,x),this.layoutBoxUpdate(tt,i,1,!0)),!g&&o&&o.children&&U&&(!this.isFlex(o)||o.isFlexCalc)&&([St,mt].includes(e)&&this.isFlex()||e==St&&this.isBlock(this)&&this.isInFlow())&&(tt.width=this.contrastSize(U-(o.isFlexCalc?0:nt),v,y),this.layoutBoxUpdate(tt,i)),g&&!it(g)&&(tt.width=this.contrastSize(g,v,y),this.layoutBoxUpdate(tt,i,0)),m&&!it(m)&&(tt.height=this.contrastSize(tt.height,b,x),this.layoutBoxUpdate(tt,i,1));var lt=0;if(a.length){var ut=null,pt=!1;a.forEach((function(e,n){e.getBoxWidthHeight();var r=a[n+1];if(r&&r.isInFlow()&&(e.next=r),!t.line||!t.line.ids.includes(e.id))if(e.isInFlow()&&!e.inFlexBox()){var o=t.getBoxState(ut,e);if(e.isBr)return pt=!0;t.line&&t.line.canIEnter(e)&&!o&&!pt?t.line.add(e):(pt=!1,(new gt).bind(e)),ut=e}else e.inFlexBox()?t.line&&(t.line.canIEnter(e)||"nowrap"==i.flexWrap)?t.line.add(e):(new xt).bind(e):e.isFixed?t.root.fixedLine?t.root.fixedLine.fixedAdd(e):(new gt).fixedBind(e):t.fixedLine?t.fixedLine.fixedAdd(e):(new gt).fixedBind(e,1)})),this.lines&&(lt=this.lines.reduce((function(t,e){return t+e.height}),0))}var vt=0,yt=0;if(!g&&(this.isAbsolute||this.isFixed)&&U){var bt=k==kt?U:this.root.width,zt=bt-(it(c)?Y(c,bt):c)-(it(u)?Y(u,bt):u);vt=i.left?zt:this.lineMaxWidth}if(!m&&(null!=d?d:this.isAbsolute||this.isFixed&&N)){var It=k==kt?N:this.root.height,Mt=It-(it(d)?Y(d,It):d)-(it(l)?Y(l,It):l);yt=i.top?Mt:0}if(g&&!it(g)||tt.width||(tt.width=vt||this.contrastSize((this.isBlock(this)&&!this.isInFlow()?U||o.lineMaxWidth:this.lineMaxWidth)||this.lineMaxWidth,v,y),this.layoutBoxUpdate(tt,i,0)),m||!lt&&!yt||(tt.height=yt||this.contrastSize(lt,b,x),this.layoutBoxUpdate(tt,i)),i.borderRadius&&this.borderSize&&this.borderSize.width)for(var _ in i.borderRadius)Object.hasOwnProperty.call(i.borderRadius,_)&&(i.borderRadius[_]=Y(i.borderRadius[_],this.borderSize.width));return this.layoutBox},e.layout=function(){return this.getBoxWidthHeight(),this.root.offsetSize=this.offsetSize,this.root.contentSize=this.contentSize,this.getBoxPosition(),this.offsetSize},t}(),Lt=function(){var t,e,i,n,r,o,s=[0,11,15,19,23,27,31,16,18,20,22,24,26,28,20,22,24,24,26,28,28,22,24,24,26,26,28,28,24,24,26,26,26,28,28,24,26,26,26,28,28],a=[3220,1468,2713,1235,3062,1890,2119,1549,2344,2936,1117,2583,1330,2470,1667,2249,2028,3780,481,4011,142,3098,831,3445,592,2517,1776,2234,1951,2827,1070,2660,1345,3177],h=[30660,29427,32170,30877,26159,25368,27713,26998,21522,20773,24188,23371,17913,16590,20375,19104,13663,12392,16177,14854,9396,8579,11994,11245,5769,5054,7399,6608,1890,597,3340,2107],c=[1,0,19,7,1,0,16,10,1,0,13,13,1,0,9,17,1,0,34,10,1,0,28,16,1,0,22,22,1,0,16,28,1,0,55,15,1,0,44,26,2,0,17,18,2,0,13,22,1,0,80,20,2,0,32,18,2,0,24,26,4,0,9,16,1,0,108,26,2,0,43,24,2,2,15,18,2,2,11,22,2,0,68,18,4,0,27,16,4,0,19,24,4,0,15,28,2,0,78,20,4,0,31,18,2,4,14,18,4,1,13,26,2,0,97,24,2,2,38,22,4,2,18,22,4,2,14,26,2,0,116,30,3,2,36,22,4,4,16,20,4,4,12,24,2,2,68,18,4,1,43,26,6,2,19,24,6,2,15,28,4,0,81,20,1,4,50,30,4,4,22,28,3,8,12,24,2,2,92,24,6,2,36,22,4,6,20,26,7,4,14,28,4,0,107,26,8,1,37,22,8,4,20,24,12,4,11,22,3,1,115,30,4,5,40,24,11,5,16,20,11,5,12,24,5,1,87,22,5,5,41,24,5,7,24,30,11,7,12,24,5,1,98,24,7,3,45,28,15,2,19,24,3,13,15,30,1,5,107,28,10,1,46,28,1,15,22,28,2,17,14,28,5,1,120,30,9,4,43,26,17,1,22,28,2,19,14,28,3,4,113,28,3,11,44,26,17,4,21,26,9,16,13,26,3,5,107,28,3,13,41,26,15,5,24,30,15,10,15,28,4,4,116,28,17,0,42,26,17,6,22,28,19,6,16,30,2,7,111,28,17,0,46,28,7,16,24,30,34,0,13,24,4,5,121,30,4,14,47,28,11,14,24,30,16,14,15,30,6,4,117,30,6,14,45,28,11,16,24,30,30,2,16,30,8,4,106,26,8,13,47,28,7,22,24,30,22,13,15,30,10,2,114,28,19,4,46,28,28,6,22,28,33,4,16,30,8,4,122,30,22,3,45,28,8,26,23,30,12,28,15,30,3,10,117,30,3,23,45,28,4,31,24,30,11,31,15,30,7,7,116,30,21,7,45,28,1,37,23,30,19,26,15,30,5,10,115,30,19,10,47,28,15,25,24,30,23,25,15,30,13,3,115,30,2,29,46,28,42,1,24,30,23,28,15,30,17,0,115,30,10,23,46,28,10,35,24,30,19,35,15,30,17,1,115,30,14,21,46,28,29,19,24,30,11,46,15,30,13,6,115,30,14,23,46,28,44,7,24,30,59,1,16,30,12,7,121,30,12,26,47,28,39,14,24,30,22,41,15,30,6,14,121,30,6,34,47,28,46,10,24,30,2,64,15,30,17,4,122,30,29,14,46,28,49,10,24,30,24,46,15,30,4,18,122,30,13,32,46,28,48,14,24,30,42,32,15,30,20,4,117,30,40,7,47,28,43,22,24,30,10,67,15,30,19,6,118,30,18,31,47,28,34,34,24,30,20,61,15,30],f=[255,0,1,25,2,50,26,198,3,223,51,238,27,104,199,75,4,100,224,14,52,141,239,129,28,193,105,248,200,8,76,113,5,138,101,47,225,36,15,33,53,147,142,218,240,18,130,69,29,181,194,125,106,39,249,185,201,154,9,120,77,228,114,166,6,191,139,98,102,221,48,253,226,152,37,179,16,145,34,136,54,208,148,206,143,150,219,189,241,210,19,92,131,56,70,64,30,66,182,163,195,72,126,110,107,58,40,84,250,133,186,61,202,94,155,159,10,21,121,43,78,212,229,172,115,243,167,87,7,112,192,247,140,128,99,13,103,74,222,237,49,197,254,24,227,165,153,119,38,184,180,124,17,68,146,217,35,32,137,46,55,63,209,91,149,188,207,205,144,135,151,178,220,252,190,97,242,86,211,171,20,42,93,158,132,60,57,83,71,109,65,162,31,45,67,216,183,123,164,118,196,23,73,236,127,12,111,246,108,161,59,82,41,157,85,170,251,96,134,177,187,204,62,90,203,89,95,176,156,169,160,81,11,245,22,235,122,117,44,215,79,174,213,233,230,231,173,232,116,214,244,234,168,80,88,175],d=[1,2,4,8,16,32,64,128,29,58,116,232,205,135,19,38,76,152,45,90,180,117,234,201,143,3,6,12,24,48,96,192,157,39,78,156,37,74,148,53,106,212,181,119,238,193,159,35,70,140,5,10,20,40,80,160,93,186,105,210,185,111,222,161,95,190,97,194,153,47,94,188,101,202,137,15,30,60,120,240,253,231,211,187,107,214,177,127,254,225,223,163,91,182,113,226,217,175,67,134,17,34,68,136,13,26,52,104,208,189,103,206,129,31,62,124,248,237,199,147,59,118,236,197,151,51,102,204,133,23,46,92,184,109,218,169,79,158,33,66,132,21,42,84,168,77,154,41,82,164,85,170,73,146,57,114,228,213,183,115,230,209,191,99,198,145,63,126,252,229,215,179,123,246,241,255,227,219,171,75,150,49,98,196,149,55,110,220,165,87,174,65,130,25,50,100,200,141,7,14,28,56,112,224,221,167,83,166,81,162,89,178,121,242,249,239,195,155,43,86,172,69,138,9,18,36,72,144,61,122,244,245,247,243,251,235,203,139,11,22,44,88,176,125,250,233,207,131,27,54,108,216,173,71,142,0],l=[],u=[],p=[],g=[],v=[],y=2;function b(t,e){var i;t>e&&(i=t,t=e,e=i),i=e,i*=e,i+=e,i>>=1,g[i+=t]=1}function x(t,i){var n;for(p[t+e*i]=1,n=-2;n<2;n++)p[t+n+e*(i-2)]=1,p[t-2+e*(i+n+1)]=1,p[t+2+e*(i+n)]=1,p[t+n+1+e*(i+2)]=1;for(n=0;n<2;n++)b(t-1,i+n),b(t+1,i-n),b(t-n,i-1),b(t+n,i+1)}function w(t){for(;t>=255;)t=((t-=255)>>8)+(255&t);return t}var m=[];function S(t,e,i,n){var r,o,s;for(r=0;re&&(i=t,t=e,e=i),i=e,i+=e*e,i>>=1,g[i+=t]}function I(t){var i,n,r,o;switch(t){case 0:for(n=0;n>1&1,i=0;i=5&&(i+=3+v[e]-5);for(e=3;et||3*v[e-3]>=4*v[e]||3*v[e+3]>=4*v[e])&&(i+=40);return i}function k(){var t,i,n,r,o,s=0,a=0;for(i=0;ie*e;)h-=e*e,c++;for(s+=10*c,t=0;t1)for(P=s[t],B=e-7;;){for(M=e-7;M>P-3&&(x(M,B),!(M6)for(P=a[t-7],W=17,M=0;M<6;M++)for(B=0;B<3;B++,W--)1&(W>11?t>>W-12:P>>W)?(p[5-M+e*(2-B+e-11)]=1,p[2-B+e-11+e*(5-M)]=1):(b(5-M,2-B+e-11),b(2-B+e-11,5-M));for(B=0;B=(M=r*(i+n)+n)-2&&(O=M-2,t>9&&O--),T=O,t>9){for(l[T+2]=0,l[T+3]=0;T--;)P=l[T],l[T+3]|=255&P<<4,l[T+2]=P>>4;l[2]|=255&O<<4,l[1]=O>>4,l[0]=64|O>>12}else{for(l[T+1]=0,l[T+2]=0;T--;)P=l[T],l[T+2]|=255&P<<4,l[T+1]=P>>4;l[1]|=255&O<<4,l[0]=64|O>>4}for(T=O+3-(t<10);T0;L--)m[L]=m[L]?m[L-1]^d[w(f[m[L]]+T)]:m[L-1];m[0]=d[w(f[m[0]]+T)]}for(T=0;T<=o;T++)m[T]=f[m[T]];for(W=M,B=0,T=0;T>=1)1&B&&(p[e-1-W+8*e]=1,W<6?p[8+e*W]=1:p[8+e*(W+1)]=1);for(W=0;W<7;W++,B>>=1)1&B&&(p[8+e*(e-7+W)]=1,W?p[6-W+8*e]=1:p[7+8*e]=1);return p}(v)},utf16to8:function(t){var e,i,n,r;for(e="",n=t.length,i=0;i=1&&r<=127?e+=t.charAt(i):r>2047?(e+=String.fromCharCode(224|r>>12&15),e+=String.fromCharCode(128|r>>6&63),e+=String.fromCharCode(128|r>>0&63)):(e+=String.fromCharCode(192|r>>6&31),e+=String.fromCharCode(128|r>>0&63));return e},draw:function(t,i,n,r,o){i.drawView(n,r);var s=i.ctx,a=n.contentSize,h=a.width,c=a.height,f=a.left,d=a.top;r.borderRadius,r.backgroundColor;var l=r.color,u=void 0===l?"#000000":l;r.border,n.contentSize.left,n.borderSize.left,n.contentSize.top,n.borderSize.top;if(y=o||y,s){s.save(),i.setOpacity(r),i.setTransform(n,r);var p=Math.min(h,c);t=this.utf16to8(t);var g=this.getFrame(t),v=p/e;s.setFillStyle(u);for(var b=0;b=s||n==c&&o=s)&&(a=e.width/i.width);var f=i.width*a,d=i.height*a,l=r||[],u=l[0],p=l[1],g=N(u)?Y(u,e.width):(e.width-f)*(U(u)?Y(u,1):{left:0,center:.5,right:1}[u||"center"]),v=N(p)?Y(p,e.height):(e.height-d)*(U(p)?Y(p,1):{top:0,center:.5,bottom:1}[p||"center"]),y=function(t,e){return[(t-g)/a,(e-v)/a]},b=y(0,0),x=b[0],w=b[1],m=y(e.width,e.height),S=m[0],z=m[1],I=Math.max,M=Math.min;return{sx:I(x,0),sy:I(w,0),sw:M(S-x,i.width),sh:M(z-w,i.height),dx:I(g,0),dy:I(v,0),dw:M(f,e.width),dh:M(d,e.height)}}({objectFit:u,objectPosition:v},e.contentSize,t),o=n.sx,s=n.sy,a=n.sh,h=n.sw,c=n.dx,f=n.dy,d=n.dh,l=n.dw;C==r.MP_BAIDU?i.drawImage(t.src,c+m,f+S,l,d,o,s,h,a):i.drawImage(t.src,o,s,h,a,c+m,f+S,l,d)}else i.drawImage(t.src,m,S,x,w)},k=function(){i.restore(),W.drawView(e,o,!1,!0,!1),h(1)},B=function(t){M(t),k()},B(t),[2]}))}))}))];case 1:return h.sent(),[2]}}))}))},t.prototype.drawText=function(t,e,i,n){var r=this,o=this.ctx,s=e.borderSize,a=e.contentSize,h=e.left,c=e.top,f=a.width,d=a.height,l=a.left-s.left||0,u=a.top-s.top||0,p=i.color,g=i.lineHeight,v=i.fontSize,y=i.fontWeight,b=i.fontFamily,x=i.fontStyle,w=i.textIndent,m=void 0===w?0:w,S=i.textAlign,z=i.textStroke,I=i.verticalAlign,M=void 0===I?Ct:I,k=i.backgroundColor,B=i.lineClamp,W=i.backgroundClip,P=i.textShadow,O=i.textDecoration;if(m=$(m)?m:0,this.drawView(e,i,W!=Ft),g=Y(g,v),t){o.save(),h+=l,c+=u;var T=n.fontHeight,L=n.descent,R=void 0===L?0:L,F=n.ascent,A=R+(void 0===F?0:F);switch(o.setFonts({fontFamily:b,fontSize:v,fontWeight:y,fontStyle:x}),o.setTextBaseline(Ct),o.setTextAlign(S),W?this.setBackground(k,f,d,h,c):o.setFillStyle(p),S){case Dt:break;case $t:h+=.5*f;break;case Yt:h+=f}var E=n.lines*g,j=Math.ceil((d-E)/2);switch(j<0&&(j=0),M){case jt:break;case Ct:c+=j;break;case Ht:c+=2*j}var C=(g-T)/2,H=g/2,D=function(t){var e=o.measureText(t),i=e.actualBoundingBoxDescent,n=void 0===i?0:i,r=e.actualBoundingBoxAscent;return M==jt?{fix:A?void 0===r?0:r:H-C/2,lineY:A?0:C-C/2}:M==Ct?{fix:A?H+n/4:H,lineY:A?0:C}:M==Ht?{fix:A?g-n:H+C/2,lineY:A?2*C:C+C/2}:{fix:0,height:0,lineY:0}},U=function(t,e,i){var r=t;switch(S){case Dt:r+=i;break;case $t:r=(t-=i/2)+i;break;case Yt:r=t,t-=i}if(O){o.setLineWidth(v/13),o.beginPath();var s=.1*n.fontHeight;/\bunderline\b/.test(O)&&(o.moveTo(t,e+n.fontHeight+s),o.lineTo(r,e+n.fontHeight+s)),/\boverline\b/.test(O)&&(o.moveTo(t,e-s),o.lineTo(r,e-s)),/\bline-through\b/.test(O)&&(o.moveTo(t,e+.5*n.fontHeight),o.lineTo(r,e+.5*n.fontHeight)),o.closePath(),o.setStrokeStyle(p),o.stroke()}},N=function(t,e,i){var n=function(){o.setLineWidth(z.width),o.setStrokeStyle(z.color),o.strokeText(t,e,i)},s="outset";z&&z.type!==s?(o.save(),r.setShadow({boxShadow:P}),o.fillText(t,e,i),o.restore(),n()):z&&z.type==s?(o.save(),r.setShadow({boxShadow:P}),n(),o.restore(),o.save(),o.fillText(t,e,i),o.restore()):(r.setShadow({boxShadow:P}),o.fillText(t,e,i))};if(!n.widths||1==n.widths.length&&n.widths[0].total+m<=a.width){var _=D(t),X=_.fix,q=void 0===X?0:X,G=_.lineY;return N(t,h+m,c+q),U(h+m,c+G,n&&n.widths&&n.widths[0].total||n.text),c+=g,o.restore(),void this.setBorder(e,i)}for(var V=c,J=h,Q="",Z=0,K=o.measureText("...").width,tt=n.widths,et=0;eta.width){Z>=B&&(Q+="…"),Z++,nt=0;var ct=D(Q);q=ct.fix,G=ct.lineY;N(Q,J,c+q),U(J,c+G,nt),c+=g,Q=""}else if(rt==it.length-1){et!=tt.length-1&&Z==B&&K+ntV+d||Z>B)break}}o.restore()}},t.prototype.source=function(t){return i(this,void 0,void 0,(function(){var e,i,r,o,s=this;return n(this,(function(n){switch(n.label){case 0:if(this.node=null,e=+new Date,"{}"==JSON.stringify(t))return[2];if(t.styles=t.styles||t.css||{},!t.type)for(i in t.type=Et,t)["views","children","type","css","styles"].includes(i)||(t.styles[i]=t[i],delete t[i]);return t.styles.boxSizing||(t.styles.boxSizing="border-box"),[4,this.create(t)];case 1:return(r=n.sent())?(o=r.layout()||{},this.size=o,this.node=r,this.onEffectFinished().then((function(t){return s.lifecycle("onEffectSuccess",t)})).catch((function(t){return s.lifecycle("onEffectFail",t)})),this.performance&&console.log("布局用时:"+(+new Date-e)+"ms"),[2,this.size]):[2,console.warn("no node")]}}))}))},t.prototype.getImageInfo=function(t){return this.imageBus[t]||(this.imageBus[t]=this.createImage(t,this.useCORS)),this.imageBus[t]},t.prototype.create=function(t,r){return i(this,void 0,void 0,(function(){function i(t,n,r){void 0===n&&(n={}),void 0===r&&(r=!0);var o=[];return t.forEach((function(t){var s=t.styles,a=void 0===s?{}:s,h=t.css,c=void 0===h?{}:h,f=t.children,d=void 0===f?[]:f,l=t.views,u=void 0===l?[]:l,p=t.text,g=void 0===p?"":p,v=t.type,y=void 0===v?"":v;!d&&u&&(t.children=d=u);var b={};b=e(e(r?e({},n):{},a),c);var x={},w={},m={};Object.keys(b).map((function(t){if(t.includes("padding")||t.includes("margin")){var e=dt(t,b[t]);Object.keys(e).map((function(t){t.includes("Left")?w[t]=e[t]:t.includes("Right")?m[t]=e[t]:x[t]=e[t]}))}}));if(b.textIndent&&(w.textIndent=b.textIndent,delete n.textIndent),""!==g){var S=Array.from(g);S.forEach((function(t,e){var i=Object.assign({},b,x);0===e?Object.assign(i,w):e==S.length-1&&Object.assign(i,m),delete i.padding,delete i.margin,o.push({type:"text",text:t,styles:i})}))}if(y==Rt||y==At)o.push(t);else if("block"===a.display&&d.length>0){var z=i(d,b,!1);t.children=z,t.flattened=!0,o.push(t)}else if(d.length>0){z=i(d,b,r);o=o.concat(z)}})),o}var o,s,a,h,c,f,d,l,u,p,g,v,y,b,x,w,m,S,z,I,M,k,B,P;return n(this,(function(n){switch(n.label){case 0:if(!t)return[2];if(t.styles||(t.styles=t.css||{}),o=t.type,s=t.show,a=void 0===s||s,h=o==Rt,c=[Ft,At].includes(o),f="textBox"==o,d=t.styles||{},l=d.backgroundImage,u=d.display,h&&!t.src&&!t.url)return[2];if(u==W||!a)return[2];if(c||f){if(p=t.children,g=t.views,!p&&g&&(t.children=p=g),!t.text&&(!p||p&&!p.length))return[2];p&&p.length&&!t.flattened&&(v=i(t.children||t.views),t.type="view",t.children=v)}if(!(h||t.type==Et&&l))return[3,4];y=h?t.src:"",b=/url\(['"]?(.*?)['"]?\)/.exec(l),l&&b&&b[1]&&(y=b[1]||""),n.label=1;case 1:return n.trys.push([1,3,,4]),[4,this.getImageInfo(y)];case 2:return x=n.sent(),w=x.width,m=x.height,!(S=x.path)&&h?[2]:(S&&(t.attributes=Object.assign(t.attributes||{},{width:w,height:m,path:S,src:S,naturalSrc:y})),[3,4]);case 3:return z=n.sent(),t.type!=Et?[2]:(this.lifecycle("onEffectFail",e(e({},z),{src:y})),[3,4]);case 4:if(this.count+=1,I=new Tt(t,r,this.root,this.ctx),!(M=t.children||t.views))return[3,8];k=0,n.label=5;case 5:return k0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("navigateTo",{url:encodeURI(n)})},navigateBack:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delta;r("navigateBack",{delta:parseInt(n)||1})},switchTab:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("switchTab",{url:encodeURI(n)})},reLaunch:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("reLaunch",{url:encodeURI(n)})},redirectTo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("redirectTo",{url:encodeURI(n)})},getEnv:function(e){o()?e({nvue:!0}):window.plus?e({plus:!0}):e({h5:!0})},postMessage:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r("postMessage",e.data||{})}},d=/uni-app/i.test(navigator.userAgent),s=/Html5Plus/i.test(navigator.userAgent),w=/complete|loaded|interactive/;var u=window.my&&navigator.userAgent.indexOf("AlipayClient")>-1;var g=window.swan&&window.swan.webView&&/swan/i.test(navigator.userAgent);var c=window.qq&&window.qq.miniProgram&&/QQ/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var v=window.tt&&window.tt.miniProgram&&/toutiaomicroapp/i.test(navigator.userAgent);var m=window.wx&&window.wx.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var p=window.qa&&/quickapp/i.test(navigator.userAgent);var f=window.ks&&window.ks.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var l=window.tt&&window.tt.miniProgram&&/Lark|Feishu/i.test(navigator.userAgent);var _=window.jd&&window.jd.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);for(var E,b=function(){window.UniAppJSBridge=!0,document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady",{bubbles:!0,cancelable:!0}))},h=[function(e){if(d||s)return window.__dcloud_weex_postMessage||window.__dcloud_weex_?document.addEventListener("DOMContentLoaded",e):window.plus&&w.test(document.readyState)?setTimeout(e,0):document.addEventListener("plusready",e),a},function(e){if(m)return window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),window.wx.miniProgram},function(e){if(c)return window.QQJSBridge&&window.QQJSBridge.invoke?setTimeout(e,0):document.addEventListener("QQJSBridgeReady",e),window.qq.miniProgram},function(e){if(u){document.addEventListener("DOMContentLoaded",e);var n=window.my;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){if(g)return document.addEventListener("DOMContentLoaded",e),window.swan.webView},function(e){if(v)return document.addEventListener("DOMContentLoaded",e),window.tt.miniProgram},function(e){if(p){window.QaJSBridge&&window.QaJSBridge.invoke?setTimeout(e,0):document.addEventListener("QaJSBridgeReady",e);var n=window.qa;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){if(f)return window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),window.ks.miniProgram},function(e){if(l)return document.addEventListener("DOMContentLoaded",e),window.tt.miniProgram},function(e){if(_)return window.JDJSBridgeReady&&window.JDJSBridgeReady.invoke?setTimeout(e,0):document.addEventListener("JDJSBridgeReady",e),window.jd.miniProgram},function(e){return document.addEventListener("DOMContentLoaded",e),a}],y=0;y { + document.body.onclick = function () { + return uni.postMessage({ + data: { + action: 'onClick' + } + }) + } + + uni.postMessage({ + data: { + action: 'onJSBridgeReady' + } + }) +}) +let options +let medias = [] +/** + * @description 获取标签的所有属性 + * @param {Element} ele + */ + +function getAttrs(ele) { + const attrs = Object.create(null) + + for (let i = ele.attributes.length; i--;) { + attrs[ele.attributes[i].name] = ele.attributes[i].value + } + + return attrs +} +/** + * @description 图片加载出错 + */ + +function onImgError() { + if (options[1]) { + this.src = options[1] + this.onerror = null + } // 取消监听点击 + + this.onclick = null + this.ontouchstart = null + uni.postMessage({ + data: { + action: 'onError', + source: 'img', + attrs: getAttrs(this) + } + }) +} +/** + * @description 创建 dom 结构 + * @param {object[]} nodes 节点数组 + * @param {Element} parent 父节点 + * @param {string} namespace 命名空间 + */ + +function createDom(nodes, parent, namespace) { + const _loop = function _loop(i) { + const node = nodes[i] + let ele = void 0 + + if (!node.type || node.type == 'node') { + let { name } = node // svg 需要设置 namespace + + if (name == 'svg') namespace = 'http://www.w3.org/2000/svg' + if (name == 'html' || name == 'body') name = 'div' // 创建标签 + + if (!namespace) ele = document.createElement(name); else ele = document.createElementNS(namespace, name) // 设置属性 + + for (const item in node.attrs) { + ele.setAttribute(item, node.attrs[item]) + } // 递归创建子节点 + + if (node.children) createDom(node.children, ele, namespace) // 处理图片 + + if (name == 'img') { + if (!ele.src && ele.getAttribute('data-src')) ele.src = ele.getAttribute('data-src') + + if (!node.attrs.ignore) { + // 监听图片点击事件 + ele.onclick = function (e) { + e.stopPropagation() + uni.postMessage({ + data: { + action: 'onImgTap', + attrs: getAttrs(this) + } + }) + } + } + + if (options[2]) { + image = new Image() + image.src = ele.src + ele.src = options[2] + + image.onload = function () { + ele.src = this.src + } + + image.onerror = function () { + ele.onerror() + } + } + + ele.onerror = onImgError + } // 处理链接 + else if (name == 'a') { + ele.addEventListener('click', function (e) { + e.stopPropagation() + e.preventDefault() // 阻止默认跳转 + + const href = this.getAttribute('href') + let offset + if (href && href[0] == '#') offset = (document.getElementById(href.substr(1)) || {}).offsetTop + uni.postMessage({ + data: { + action: 'onLinkTap', + attrs: getAttrs(this), + offset + } + }) + }, true) + } // 处理音视频 + else if (name == 'video' || name == 'audio') { + medias.push(ele) + + if (!node.attrs.autoplay) { + if (!node.attrs.controls) ele.setAttribute('controls', 'true') // 空白图占位 + + if (!node.attrs.poster) ele.setAttribute('poster', "data:image/svg+xml;utf8,") + } + + if (options[3]) { + ele.onplay = function () { + for (let _i = 0; _i < medias.length; _i++) { + if (medias[_i] != this) medias[_i].pause() + } + } + } + + ele.onerror = function () { + uni.postMessage({ + data: { + action: 'onError', + source: name, + attrs: getAttrs(this) + } + }) + } + } // 处理表格 + else if (name == 'table' && options[4] && !ele.style.cssText.includes('inline')) { + const div = document.createElement('div') + div.style.overflow = 'auto' + div.appendChild(ele) + ele = div + } else if (name == 'svg') namespace = void 0 + } else ele = document.createTextNode(node.text.replace(/&/g, '&')) + + parent.appendChild(ele) + } + + for (let i = 0; i < nodes.length; i++) { + var image + + _loop(i) + } +} // 设置 html 内容 + +window.setContent = function (nodes, opts, append) { + const ele = document.getElementById('content') // 背景颜色 + + if (opts[0]) document.body.bgColor = opts[0] // 长按复制 + + if (!opts[5]) ele.style.userSelect = 'none' + + if (!append) { + ele.innerHTML = '' // 不追加则先清空 + + medias = [] + } + + options = opts + const fragment = document.createDocumentFragment() + createDom(nodes, fragment) + ele.appendChild(fragment) // 触发事件 + + let height = ele.scrollHeight + uni.postMessage({ + data: { + action: 'onLoad', + height + } + }) + clearInterval(window.timer) + let ready = false + window.timer = setInterval(() => { + if (ele.scrollHeight != height) { + height = ele.scrollHeight + uni.postMessage({ + data: { + action: 'onHeightChange', + height + } + }) + } else if (!ready) { + ready = true + uni.postMessage({ + data: { + action: 'onReady' + } + }) + } + }, 350) +} // 回收计时器 + +window.onunload = function () { + clearInterval(window.timer) +} diff --git a/unpackage/dist/build/app-plus/uni_modules/uv-parse/static/app-plus/uv-parse/js/uni.webview.min.js b/unpackage/dist/build/app-plus/uni_modules/uv-parse/static/app-plus/uv-parse/js/uni.webview.min.js new file mode 100644 index 0000000..518332d --- /dev/null +++ b/unpackage/dist/build/app-plus/uni_modules/uv-parse/static/app-plus/uv-parse/js/uni.webview.min.js @@ -0,0 +1,19 @@ +!(function (e, n) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = n() : typeof define === 'function' && define.amd ? define(n) : (e = e || self).uni = n() }(this, (() => { + 'use strict' + + try { const e = {}; Object.defineProperty(e, 'passive', { get() { !0 } }), window.addEventListener('test-passive', null, e) } catch (e) {} const n = Object.prototype.hasOwnProperty; function t(e, t) { return n.call(e, t) } const i = []; const a = function (e, n) { const t = { options: { timestamp: +new Date() }, name: e, arg: n }; if (window.__dcloud_weex_postMessage || window.__dcloud_weex_) { if (e === 'postMessage') { const a = { data: [n] }; return window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessage(a) : window.__dcloud_weex_.postMessage(JSON.stringify(a)) } const o = { type: 'WEB_INVOKE_APPSERVICE', args: { data: t, webviewIds: i } }; window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessageToService(o) : window.__dcloud_weex_.postMessageToService(JSON.stringify(o)) } if (!window.plus) return window.parent.postMessage({ type: 'WEB_INVOKE_APPSERVICE', data: t, pageId: '' }, '*'); if (i.length === 0) { const r = plus.webview.currentWebview(); if (!r) throw new Error('plus.webview.currentWebview() is undefined'); const d = r.parent(); let s = ''; s = d ? d.id : r.id, i.push(s) } if (plus.webview.getWebviewById('__uniapp__service'))plus.webview.postMessageToUniNView({ type: 'WEB_INVOKE_APPSERVICE', args: { data: t, webviewIds: i } }, '__uniapp__service'); else { const w = JSON.stringify(t); plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat('WEB_INVOKE_APPSERVICE', '",').concat(w, ',').concat(JSON.stringify(i), ');')) } }; const o = { + navigateTo() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('navigateTo', { url: encodeURI(n) }) }, navigateBack() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.delta; a('navigateBack', { delta: parseInt(n) || 1 }) }, switchTab() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('switchTab', { url: encodeURI(n) }) }, reLaunch() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('reLaunch', { url: encodeURI(n) }) }, redirectTo() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('redirectTo', { url: encodeURI(n) }) }, getEnv(e) { window.plus ? e({ plus: !0 }) : e({ h5: !0 }) }, postMessage() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; a('postMessage', e.data || {}) } + }; const r = /uni-app/i.test(navigator.userAgent); const d = /Html5Plus/i.test(navigator.userAgent); const s = /complete|loaded|interactive/; const w = window.my && navigator.userAgent.indexOf('AlipayClient') > -1; const u = window.swan && window.swan.webView && /swan/i.test(navigator.userAgent); const c = window.qq && window.qq.miniProgram && /QQ/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); const g = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent); const v = window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); const p = window.qa && /quickapp/i.test(navigator.userAgent); for (var l, _ = function () { window.UniAppJSBridge = !0, document.dispatchEvent(new CustomEvent('UniAppJSBridgeReady', { bubbles: !0, cancelable: !0 })) }, f = [function (e) { if (r || d) return window.__dcloud_weex_postMessage || window.__dcloud_weex_ ? document.addEventListener('DOMContentLoaded', e) : window.plus && s.test(document.readyState) ? setTimeout(e, 0) : document.addEventListener('plusready', e), o }, function (e) { if (v) return window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('WeixinJSBridgeReady', e), window.wx.miniProgram }, function (e) { if (c) return window.QQJSBridge && window.QQJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('QQJSBridgeReady', e), window.qq.miniProgram }, function (e) { + if (w) { + document.addEventListener('DOMContentLoaded', e); const n = window.my; return { + navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv + } + } + }, function (e) { if (u) return document.addEventListener('DOMContentLoaded', e), window.swan.webView }, function (e) { if (g) return document.addEventListener('DOMContentLoaded', e), window.tt.miniProgram }, function (e) { + if (p) { + window.QaJSBridge && window.QaJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('QaJSBridgeReady', e); const n = window.qa; return { + navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv + } + } + }, function (e) { return document.addEventListener('DOMContentLoaded', e), o }], m = 0; m < f.length && !(l = f[m](_)); m++);l || (l = {}); const E = typeof uni !== 'undefined' ? uni : {}; if (!E.navigateTo) for (const b in l)t(l, b) && (E[b] = l[b]); return E.webView = l, E +}))) diff --git a/unpackage/dist/build/app-plus/uni_modules/uv-parse/static/app-plus/uv-parse/local.html b/unpackage/dist/build/app-plus/uni_modules/uv-parse/static/app-plus/uv-parse/local.html new file mode 100644 index 0000000..f78d703 --- /dev/null +++ b/unpackage/dist/build/app-plus/uni_modules/uv-parse/static/app-plus/uv-parse/local.html @@ -0,0 +1 @@ +
    \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/view.css b/unpackage/dist/build/app-plus/view.css new file mode 100644 index 0000000..5ddd750 --- /dev/null +++ b/unpackage/dist/build/app-plus/view.css @@ -0,0 +1 @@ +*{margin:0;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-tap-highlight-color:transparent}input[type=search]::-webkit-search-cancel-button{display:none}@font-face{font-weight:400;font-style:normal;font-family:uni;src:url("data:application/octet-stream;base64,AAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJAKEx+AAABfAAAAFZjbWFw65cFHQAAAhwAAAJQZ2x5ZvCRR/EAAASUAAAKtGhlYWQLKIN9AAAA4AAAADZoaGVhCCwD+gAAALwAAAAkaG10eEJo//8AAAHUAAAASGxvY2EYqhW6AAAEbAAAACZtYXhwASEAVQAAARgAAAAgbmFtZeNcHtgAAA9IAAAB5nBvc3T6bLhLAAARMAAAAOYAAQAAA+gAAABaA+j/////A+kAAQAAAAAAAAAAAAAAAAAAABIAAQAAAAEAACkCj3dfDzz1AAsD6AAAAADUER9XAAAAANQRH1f//wAAA+kD6gAAAAgAAgAAAAAAAAABAAAAEgBJAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQOwAZAABQAIAnoCvAAAAIwCegK8AAAB4AAxAQIAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA6gHqEQPoAAAAWgPqAAAAAAABAAAAAAAAAAAAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+j//wPoAAAD6AAAAAAABQAAAAMAAAAsAAAABAAAAXQAAQAAAAAAbgADAAEAAAAsAAMACgAAAXQABABCAAAABAAEAAEAAOoR//8AAOoB//8AAAABAAQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAANwAAAAAAAAAEQAA6gEAAOoBAAAAAQAA6gIAAOoCAAAAAgAA6gMAAOoDAAAAAwAA6gQAAOoEAAAABAAA6gUAAOoFAAAABQAA6gYAAOoGAAAABgAA6gcAAOoHAAAABwAA6ggAAOoIAAAACAAA6gkAAOoJAAAACQAA6goAAOoKAAAACgAA6gsAAOoLAAAACwAA6gwAAOoMAAAADAAA6g0AAOoNAAAADQAA6g4AAOoOAAAADgAA6g8AAOoPAAAADwAA6hAAAOoQAAAAEAAA6hEAAOoRAAAAEQAAAAAARgCMANIBJgF4AcQCMgJgAqgC/ANIA6YD/gROBKAE9AVaAAAAAgAAAAADrwOtABQAKQAAASIHBgcGFBcWFxYyNzY3NjQnJicmAyInJicmNDc2NzYyFxYXFhQHBgcGAfV4Z2Q7PDw7ZGfwZmQ7PDw7ZGZ4bl5bNjc3Nlte215bNjc3NlteA608O2Rn8GdjOzw8O2Nn8GdkOzz8rzc1W17bXlw1Nzc1XF7bXls1NwAAAAACAAAAAAOzA7MAFwAtAAABIgcGBwYVFBcWFxYzMjc2NzY1NCcmJyYTBwYiLwEmNjsBETQ2OwEyFhURMzIWAe52Z2Q7PT07ZGd2fGpmOz4+O2ZpIXYOKA52Dg0XXQsHJgcLXRcNA7M+O2ZqfHZnZDs9PTtkZ3Z9aWY7Pv3wmhISmhIaARcICwsI/ukaAAMAAAAAA+UD5QAXACMALAAAASIHBgcGFRQXFhcWMzI3Njc2NTQnJicmAxQrASI1AzQ7ATIHJyImNDYyFhQGAe6Ecm9BRERBb3KEiXZxQkREQnF1aQIxAwgCQgMBIxIZGSQZGQPkREJxdomEcm9BRERBb3KEinVxQkT9HQICAWICAjEZIxkZIxkAAAAAAwAAAAADsQPkABsAKgAzAAABBgcGBwYHBjcRFBcWFxYXNjc2NzY1ESQXJicmBzMyFhUDFAYrASInAzQ2EyImNDYyFhQGAfVBQTg7LDt/IEc+bF5sbF1tPUj+2KhQQVVvNAQGDAMCJgUBCwYeDxYWHhUVA+QPEg4SDhIpCv6tj3VkST4dHT5JZHWPAVNeNRkSGPwGBP7GAgMFAToEBv5AFR8VFR8VAAAAAgAAAAADsQPkABkALgAAAQYHBgc2BREUFxYXFhc2NzY3NjURJBcmJyYTAQYvASY/ATYyHwEWNjclNjIfARYB9VVVQk+v/tFHPmxebGxdbT1I/tGvT0JVo/7VBASKAwMSAQUBcQEFAgESAgUBEQQD4xMYEhk3YP6sjnVlSD8cHD9IZXWOAVRgNxkSGP62/tkDA48EBBkCAVYCAQHlAQIQBAAAAAACAAAAAAPkA+QAFwAtAAABIgcGBwYVFBcWFxYzMjc2NzY1NCcmJyYTAQYiLwEmPwE2Mh8BFjI3ATYyHwEWAe6Ecm9BQ0NCbnODiXVxQkREQnF1kf6gAQUBowMDFgEFAYUCBQEBQwIFARUEA+NEQnF1iYNzbkJDQ0FvcoSJdXFCRP6j/qUBAagEBR4CAWYBAQENAgIVBAAAAAQAAAAAA68DrQAUACkAPwBDAAABIgcGBwYUFxYXFjI3Njc2NCcmJyYDIicmJyY0NzY3NjIXFhcWFAcGBwYTBQ4BLwEmBg8BBhYfARYyNwE+ASYiFzAfAQH1eGdkOzw8O2Rn8GZkOzw8O2RmeG5eWzY3NzZbXtteWzY3NzZbXmn+9gYSBmAGDwUDBQEGfQUQBgElBQELEBUBAQOtPDtkZ/BnYzs8PDtjZ/BnZDs8/K83NVte215cNTc3NVxe215bNTcCJt0FAQVJBQIGBAcRBoAGBQEhBQ8LBAEBAAABAAAAAAO7AzoAFwAAEy4BPwE+AR8BFjY3ATYWFycWFAcBBiInPQoGBwUHGgzLDCELAh0LHwsNCgr9uQoeCgGzCyEOCw0HCZMJAQoBvgkCCg0LHQv9sQsKAAAAAAIAAAAAA+UD5gAXACwAAAEiBwYHBhUUFxYXFjMyNzY3NjU0JyYnJhMHBi8BJicmNRM0NjsBMhYVExceAQHvhHJvQUNDQm5zg4l1cUJEREJxdVcQAwT6AwIEEAMCKwIDDsUCAQPlREJxdYmDc25CQ0NBb3KEiXVxQkT9VhwEAncCAgMGAXoCAwMC/q2FAgQAAAQAAAAAA68DrQADABgALQAzAAABMB8BAyIHBgcGFBcWFxYyNzY3NjQnJicmAyInJicmNDc2NzYyFxYXFhQHBgcGAyMVMzUjAuUBAfJ4Z2Q7PDw7ZGfwZmQ7PDw7ZGZ4bl5bNjc3Nlte215bNjc3NltemyT92QKDAQEBLDw7ZGfwZ2M7PDw7Y2fwZ2Q7PPyvNzVbXtteXDU3NzVcXtteWzU3AjH9JAAAAAMAAAAAA+QD5AAXACcAMAAAASIHBgcGFRQXFhcWMzI3Njc2NTQnJicmAzMyFhUDFAYrASImNQM0NhMiJjQ2MhYUBgHuhHJvQUNDQm5zg4l1cUJEREJxdZ42BAYMAwInAwMMBh8PFhYeFhYD40RCcXWJg3NuQkNDQW9yhIl1cUJE/vYGBf7AAgMDAgFABQb+NhYfFhYfFgAABAAAAAADwAPAAAgAEgAoAD0AAAEyNjQmIgYUFhcjFTMRIxUzNSMDIgcGBwYVFBYXFjMyNzY3NjU0Jy4BAyInJicmNDc2NzYyFxYXFhQHBgcGAfQYISEwISFRjzk5yTorhG5rPT99am+DdmhlPD4+PMyFbV5bNTc3NVte2l5bNTc3NVteAqAiLyIiLyI5Hf7EHBwCsT89a26Ed8w8Pj48ZWh2g29qffyjNzVbXtpeWzU3NzVbXtpeWzU3AAADAAAAAAOoA6gACwAgADUAAAEHJwcXBxc3FzcnNwMiBwYHBhQXFhcWMjc2NzY0JyYnJgMiJyYnJjQ3Njc2MhcWFxYUBwYHBgKOmpocmpocmpocmpq2dmZiOjs7OmJm7GZiOjs7OmJmdmtdWTQ2NjRZXdZdWTQ2NjRZXQKqmpocmpocmpocmpoBGTs6YmbsZmI6Ozs6YmbsZmI6O/zCNjRZXdZdWTQ2NjRZXdZdWTQ2AAMAAAAAA+kD6gAaAC8AMAAAAQYHBiMiJyYnJjQ3Njc2MhcWFxYVFAcGBwEHATI3Njc2NCcmJyYiBwYHBhQXFhcWMwKONUBCR21dWjU3NzVaXdpdWzU2GBcrASM5/eBXS0grKysrSEuuSkkqLCwqSUpXASMrFxg2NVtd2l1aNTc3NVpdbUdCQDX+3jkBGSsrSEuuSkkqLCwqSUquS0grKwAC//8AAAPoA+gAFAAwAAABIgcGBwYQFxYXFiA3Njc2ECcmJyYTFg4BIi8BBwYuATQ/AScmPgEWHwE3Nh4BBg8BAfSIdHFDRERDcXQBEHRxQ0REQ3F0SQoBFBsKoqgKGxMKqKIKARQbCqKoChsUAQqoA+hEQ3F0/vB0cUNERENxdAEQdHFDRP1jChsTCqiiCgEUGwqiqAobFAEKqKIKARQbCqIAAAIAAAAAA+QD5AAXADQAAAEiBwYHBhUUFxYXFjMyNzY3NjU0JyYnJhMUBiMFFxYUDwEGLwEuAT8BNh8BFhQPAQUyFh0BAe6Ecm9BQ0NCbnODiXVxQkREQnF1fwQC/pGDAQEVAwTsAgEC7AQEFAIBhAFwAgMD40RCcXWJg3NuQkNDQW9yhIl1cUJE/fYCAwuVAgQCFAQE0AIFAtEEBBQCBQGVCwMDJwAAAAUAAAAAA9QD0wAjACcANwBHAEgAAAERFAYjISImNREjIiY9ATQ2MyE1NDYzITIWHQEhMhYdARQGIyERIREHIgYVERQWOwEyNjURNCYjISIGFREUFjsBMjY1ETQmKwEDeyYb/XYbJkMJDQ0JAQYZEgEvExkBBgkNDQn9CQJc0QkNDQktCQ0NCf7sCQ0NCS0JDQ0JLQMi/TQbJiYbAswMCiwJDS4SGRkSLg0JLAoM/UwCtGsNCf5NCQ0NCQGzCQ0NCf5NCQ0NCQGzCQ0AAAAAEADGAAEAAAAAAAEABAAAAAEAAAAAAAIABwAEAAEAAAAAAAMABAALAAEAAAAAAAQABAAPAAEAAAAAAAUACwATAAEAAAAAAAYABAAeAAEAAAAAAAoAKwAiAAEAAAAAAAsAEwBNAAMAAQQJAAEACABgAAMAAQQJAAIADgBoAAMAAQQJAAMACAB2AAMAAQQJAAQACAB+AAMAAQQJAAUAFgCGAAMAAQQJAAYACACcAAMAAQQJAAoAVgCkAAMAAQQJAAsAJgD6d2V1aVJlZ3VsYXJ3ZXVpd2V1aVZlcnNpb24gMS4wd2V1aUdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAHcAZQB1AGkAUgBlAGcAdQBsAGEAcgB3AGUAdQBpAHcAZQB1AGkAVgBlAHIAcwBpAG8AbgAgADEALgAwAHcAZQB1AGkARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETAAZjaXJjbGUIZG93bmxvYWQEaW5mbwxzYWZlX3N1Y2Nlc3MJc2FmZV93YXJuB3N1Y2Nlc3MOc3VjY2Vzcy1jaXJjbGURc3VjY2Vzcy1uby1jaXJjbGUHd2FpdGluZw53YWl0aW5nLWNpcmNsZQR3YXJuC2luZm8tY2lyY2xlBmNhbmNlbAZzZWFyY2gFY2xlYXIEYmFjawZkZWxldGUAAAAA") format("truetype")}@font-face{font-weight:400;font-style:normal;font-family:unibtn;src:url("data:application/octet-stream;base64,AAEAAAALAIAAAwAwT1MvMg8SAzoAAAC8AAAAYGNtYXAAILNAAAABHAAAAGRnYXNwAAAAEAAAAYAAAAAIZ2x5ZnVT/G4AAAGIAAAEHGhlYWQOAdVuAAAFpAAAADZoaGVhB3wDzAAABdwAAAAkaG10eCIABqYAAAYAAAAALGxvY2EDqgTMAAAGLAAAABhtYXhwAA8ATQAABkQAAAAgbmFtZXBR8sQAAAZkAAAB2nBvc3QAAwAAAAAIQAAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADmUAPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQASAAAAA4ACAACAAYAAQAg5gLmBuZQ//3//wAAAAAAIOYA5gTmUP/9//8AAf/jGgQaAxm6AAMAAQAAAAAAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQFgAHkCwQLqABYAAAEmNDc2MhcBHgEVFAYHAQYiJyY0NwkBAWAICAcWBwE1BAQEBP7LBxYHCAgBIv7eAsUHFwcICP7cBAsFBgsE/twICAcXCAETARMAAAEBWAB5ArkC6gAXAAAJAhYUBwYiJwEuATU0NjcBNjIXFhQHMQK5/t4BIggICBUI/swFAwMFATQIFQgICALF/u3+7QgXBwgIASQECwYFCwQBJAgIBxcHAAACANAAaQO6Aw0AHAA2AAAlFAYjISImNRE0NjsBNSMiBhURFBYzITI2PQEjFRMnBxcHDgMPATM1PgE3PgE/AgcXNyc3A1IHBP3CBAYGBLDAERgYEQJfERcuaKQhbndKgmM9BQEvBTYtLXVABmpuIaQBAaUEBwcEAagFBjEZEf40ERkZEqWUAbysI3MBBjxffkcIBzxuKysyBAEBdCKsAgIAAgCXAF4DcwMbADEASgAAAS4BLwIuASMiBg8CDgEHBhYfAQcGFhceATMyNj8BFx4BMzI2Nz4BJzQwNSc3PgEnBTYmLwE3PgE/ARceAR8BBw4BHwEnJgYPAQNzAgoG42cDCgcGCgNk4wYKAgEDBKUlAQUFAwYEAgUDyswCBQMGCgMCAQEoowUDAv38AQMEjcIFCQJWWAIJBcOMBAMBIq4FCwSuAhQGCAEfzQYGBgbOIwEIBgYMBJ/iBgwEAgICAWxqAQEGBgMJAwEB3qEFDAa2BgoEiB0BBgWxsAUGARuJBAsFwVoDAQJcAAIAvwB1A1ADEQAhAD4AAAEiBh0BFAYjISImPQE0JiMiBh0BHgEzITI2PQE0JicuASM3AS4BIyIGBwEGFBceATMyNjcBNjIXARYyNz4BJwL3Cg4LB/51CAsOCgkPASYbAYwbJwQDAwkFWf7mChgNDRgJ/uYGBwMJBQQIBAEZBRAFARoHEwcGAQYBsA4J4gcLCwfiCQ4OCeIbJycb4gQJAwQDNAEaCgkJCf7lBxMGBAMDAwEZBQX+5wYHBhMHAAAAAAMA3AF2AzEB+gALABcAJAAAATI2NTQmIyIGFRQWITI2NTQmIyIGFRQWITI2NTQmIyIGFRQWMwEeHCcnHBsnJwEDHCcnHBsnJwEEGycnGxwnJxwBdicbGycnGxsnJxsbJycbGycnGxsnJxsbJwAAAAABAOwAnQMUAs4AJQAAATc2NCcmIg8BJyYiBwYUHwEHBhQXHgEzMjY/ARceATMyNjc2NCcCKOwJCQgYCOzqCBgICQnq7AkJBAoGBQsE7OwECwUGCgQJCQG76gkXCQgI6+sICAgYCOvrCBgIBAQEBOvtBQQFBAgXCQABAAAAAQAA3hDrLV8PPPUACwQAAAAAANWUyKsAAAAA1ZTIqwAAAAADugMbAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAO6AAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWAEAAFYBAAA0AQAAJcEAAC/BAAA3AQAAOwAAAAAAAoAFAAeAEoAdgDGAToBmgHSAg4AAQAAAAsASwADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAA4AAAABAAAAAAACAAcAnwABAAAAAAADAA4ASwABAAAAAAAEAA4AtAABAAAAAAAFAAsAKgABAAAAAAAGAA4AdQABAAAAAAAKABoA3gADAAEECQABABwADgADAAEECQACAA4ApgADAAEECQADABwAWQADAAEECQAEABwAwgADAAEECQAFABYANQADAAEECQAGABwAgwADAAEECQAKADQA+HN0cmVhbWljb25mb250AHMAdAByAGUAYQBtAGkAYwBvAG4AZgBvAG4AdFZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMHN0cmVhbWljb25mb250AHMAdAByAGUAYQBtAGkAYwBvAG4AZgBvAG4AdHN0cmVhbWljb25mb250AHMAdAByAGUAYQBtAGkAYwBvAG4AZgBvAG4AdFJlZ3VsYXIAUgBlAGcAdQBsAGEAcnN0cmVhbWljb25mb250AHMAdAByAGUAYQBtAGkAYwBvAG4AZgBvAG4AdEZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format("truetype")}body,html{-webkit-user-select:none;user-select:none;width:100%}html{height:100%;height:100vh;width:100%;width:100vw}body{overflow-x:hidden;background-color:#fff;font-size:16px}[class*=" uni-icon-"],[class^=uni-icon-]{display:inline-block;vertical-align:middle;font:normal normal normal 14px/1 uni;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased}[class*=" uni-btn-icon"],[class^=uni-btn-icon]{display:inline-block;font:normal normal normal 14px/1 unibtn;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased}[class*=" uni-btn-icon"]:before,[class^=uni-btn-icon]:before{margin:0;box-sizing:border-box}.uni-icon-success-no-circle:before{content:"\EA08"}.uni-icon-error:before{content:"\EA0B"}.uni-loading,uni-button[loading]:before{background:rgba(0,0,0,0) url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=") no-repeat}.uni-loading{width:20px;height:20px;display:inline-block;vertical-align:middle;-webkit-animation:uni-loading 1s steps(12) infinite;animation:uni-loading 1s steps(12) infinite;background-size:100%}@-webkit-keyframes uni-loading{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes uni-loading{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}[nvue] uni-scroll-view,[nvue] uni-swiper-item,[nvue] uni-view{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-shrink:0;flex-shrink:0;-webkit-box-flex:0;-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:auto;flex-basis:auto;-webkit-box-align:stretch;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start}[nvue] uni-button{margin:0}[nvue-dir-row] uni-label,[nvue-dir-row] uni-swiper-item,[nvue-dir-row] uni-view{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}[nvue-dir-column] uni-label,[nvue-dir-column] uni-swiper-item,[nvue-dir-column] uni-view{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}[nvue-dir-row-reverse] uni-label,[nvue-dir-row-reverse] uni-swiper-item,[nvue-dir-row-reverse] uni-view{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;flex-direction:row-reverse}[nvue-dir-column-reverse] uni-label,[nvue-dir-column-reverse] uni-swiper-item,[nvue-dir-column-reverse] uni-view{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;flex-direction:column-reverse}[nvue] uni-image,[nvue] uni-input,[nvue] uni-scroll-view,[nvue] uni-swiper,[nvue] uni-swiper-item,[nvue] uni-text,[nvue] uni-textarea,[nvue] uni-video,[nvue] uni-view{position:relative;border:0 solid #000;box-sizing:border-box}[nvue] uni-swiper-item{position:absolute}html{--UI-BG:#fff;--UI-BG-1:#f7f7f7;--UI-BG-2:#fff;--UI-BG-3:#f7f7f7;--UI-BG-4:#4c4c4c;--UI-BG-5:#fff;--UI-FG:#000;--UI-FG-0:rgba(0,0,0,0.9);--UI-FG-HALF:rgba(0,0,0,0.9);--UI-FG-1:rgba(0,0,0,0.5);--UI-FG-2:rgba(0,0,0,0.3);--UI-FG-3:rgba(0,0,0,0.1)}@media (prefers-color-scheme:dark){html{--UI-BG-COLOR-ACTIVE:#373737;--UI-BORDER-COLOR-1:#373737;--UI-BG:#000;--UI-BG-0:#191919;--UI-BG-1:#1f1f1f;--UI-BG-2:#232323;--UI-BG-3:#2f2f2f;--UI-BG-4:#606060;--UI-BG-5:#2c2c2c;--UI-FG:#fff;--UI-FG-0:hsla(0,0%,100%,0.8);--UI-FG-HALF:hsla(0,0%,100%,0.6);--UI-FG-1:hsla(0,0%,100%,0.5);--UI-FG-2:hsla(0,0%,100%,0.3);--UI-FG-3:hsla(0,0%,100%,0.05)}body{background-color:var(--UI-BG-0);color:var(--UI-FG-0)}}uni-audio{display:none}uni-audio[controls]{display:inline-block}uni-audio[hidden]{display:none}.uni-audio-default{max-width:100%;min-width:302px;height:65px;background:#fcfcfc;border:1px solid #e0e0e0;border-radius:2.5px;display:inline-block;overflow:hidden}.uni-audio-left{width:65px;height:65px;float:left;background-color:#e6e6e6;background-size:100% 100%;background-position:50% 50%}.uni-audio-button{width:24px;height:24px;margin:20.5px;background-size:cover}.uni-audio-button.play{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAB4dJREFUaAXNWg1MlVUYvpcfIRCJ+MnCaOBl8dOcOCEQZ9kmI5cQG5Yb6MifKbMaGVobOtlibTWHDpgpxBUwF07826iFsMkYJhg559JdGiQSkUzSBA0QkZ7n4/u+nXsvwf3jwru99/y/3/N+3znvec97rlbjABofH38GYtaAV4MjwDqwH9gHTBoE3wd3gA3gi+B6rVY7hHR2CKD9wFngs+BHYGuJYziWMqiscwgP8wLvBQ+AHUWURZle1mqhtXQAhLui7xZwPvgFsBENDg7+Drp069at2z09Pf03b978u6mpqZ+dVq1aFRAVFeW/aNGigNDQ0JfDwsISfXx8wowETBT+QpIPLsf0GpuomvrXIgUAPhhizoGXi+II+tq1az/o9fpLFRUVd8S26fJZWVkLN2/enBgTE/PW/PnzF5v0b0P5HSjxp0m9WXFaBQD+NYw6C1bf+vDwcF9DQ4N+/fr19ciPm0m1osLT01N76tSpNaD3PTw8FgpD+TXSoESrUGeWnVIBgM/EiDKwJ0eiPNrS0nJsw4YNNd3d3aOscxSFhIS4V1dXpyckJGRB5jxZ7jDSbVDiW7lslriY1cgVMvjjKErgR0dH/zl06NCuFStWfOdo8HwkZVL2wYMHP3ny5AlNLonPPi5jkSpMfyb9AhjAadMIlsBjrndmZ2fnnThxos9UwEyUMzIynj9y5EgB1gb3ExK/xBuTTSczBQCeC/ZnsDTnCR6f9YMbN25QiNMoOjras7W1tcjb2ztcfijXRKzpwjaaQgBPU0lrI4HntOGbdzZ4AuYzt2/fvm9sbOweyyBiOidjlCr4Y6QAyrTzkqlEx9GSkpJ9zpo2BGNKfHZRUdF+1D+W24iNGFVSpxAAcxekryK9/cuXLx/FoqpWe85iBlPpvbi4uB0yBE4lHabSvyyLX2AXyhJ42nmYytPsMBcI+80ZWKZeGQsxEqtEkgJ4+3Sm9sh1Gm5SM2EqFfnWpsRSV1dXIYzbI2NWv0AqGiXXl+4Bd1ihs0XZu3fvHhgYGNBXVVUlWDTAyk7p6ekNIyMj7fIwYiVmIwWkNvo2trgHAQEBy+CghW7cuPGLvr6+L3fu3PmSJNBBP8R09erVHwVxEwrgU/AwkqQ00DFT8lamqkEICgqKKy4u1sMU7li6dKnVLvL/Pbe0tLRFaEsidi1+UlB5ng3ctBYsWLBV6GRxFnJ4yjIj7CX36uvrS1NTU+uwEM3ara3Al/gaTl+EPC6Vi/hNRUhHR8dPSt5Rqbu7+3Nr1679rL+//3BBQYHyYJvFd3V1iTNkNRV4RZF2G6TkHZ36+vpG5uXlHcah59Pk5GSbj5AY3y1gi6ACisOk4UlKaJyJrBYnsuTa2trjzc3N7/r7+9N1sYo6OzsfCAN0VEB9GzwGCo0zlnV1dfVOTEzMhn3Xl5eXx1rzIBOMflRAsv8UopxhrRFoT18vL68QHCu/am9vz7FUjglGHyow6xQcHBxjKwgqwKCTRIweKHlnpZhGDfC7LP4CJhgH3QCUxzd/AmboA0kP8zNNcDt+w8ZUvHv37l+tedaSJUueFfrfpwJ0oSVLxLiN0DgjWWxsDxobG79JSUn53haXRafT+QrAOjiFDEoFg05K3tEpduoxg8FweuXKlRlJSUm1toAnpvDwcB55FTJQAdUFYMRMaXFkil34l9zc3K2RkZElV65ceWSPbCz414XxF6kAXWfpdMNwHyNmQge7skNDQ3dOnjy5PzAwMLewsLDLLmEYDJMb5ObmFiXLIeZ6FxzNGOK+IFeyk91f4enTpyNtbW3HIiIiNsHCNCmy7U1zcnKWCTIuEDu/AOn8RKLRMFbJcJ9StjRlBIN94Y40ZmZmboqNja3iScrS8dP1IyaEWt4W+kmYaYVILHA/8GGglbHKdevWqV+FHaYjOGofw811hcfZOV1fW9pxzE1wcXGJlscSq6SA+qZhJfai8nN2wNHtDhb0pt7eXoe9Qcq1lRg3hRvNkLtyytuHfAHlKVOI+UIwQxYaRolramrSmZ8LhLefJIAnRmKVSFUAHbiq8yeqNRpGiWE5XlXKs5WWlZUthu3/SHh+voxVqlKnEEuYRvTPee5czjKjxDCr2bMVnYNF9IO7fRRQAokHxIuPeCig3t4YKcAeUCIYiRrcffjwYUd8fPyHzo6PwuJ4XL9+/QAWrjILOHWmDu5SAWjHa500sBSNZoibUWKGvNnuDOKbNwFPLLytITYjUteAWIuOvNbZptQxxF1ZWXnYGWuCc57TRnjzhMFbGmIyI7MpJPbAdMpEuQzsKdc/hi+jT0tLO+NoE0tTSWsjL9h58vP45qe8YppSAQqBEmaXfAy0MlbJcJ+tXqUMUMMdlpsUIuE78JYVO89mznn7LvmUh8gL+xzKknVS6hmrZLiPETNrr1npmNG3oXsg7LCKaFobx1yzKhKhBE3sFnA+mCFuI4IyBuyWzYjb/MHQh+lFN09SPIxgirxIlxhepeIWiHL41vPBFl90i4MtykOROfVXA4tAT9YJisyJP3tMu4gnA29aB2UY4V4DXg1m/FMH9gMrMSd6jwwe8PxtAPMU6JC/2/wHuyI2cMsNBRIAAAAASUVORK5CYII=)}.uni-audio-button.pause{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABatJREFUaAXVWl1IpFUYnllZGUf3wlz6MXER1ES7s83VUDJw6KpdaSTDwMnYFSK6KNirooHullKQCNzQRjZ/wom1u9ALQ0mT1ktFdEBWXLdibaH1jwmx5zme83W+z2Hm+7bZmc8X3jl/73vO837n/z3j9aSBjo6O8lBNC7gZXAUuBxeCz4FJj8APwTHwCngaPOX1evcRZocAuhAcAt8G74KdEnWoyzpobGYIjfnBn4D/BqeLWBfr9Du1wmtXAZXnQPY9cBj8HNhEe3t7sbW1tfn19fW7m5ubD5aXl7dnZmYeUKipqel8dXV1UUlJyfmysrILFRUV9X6/n8PMSveREQYPYHgdWgsTpW0ZAPDPQ3kC/JJeCUEvLi7+NDg4+EskEvldL0sVD4VCz3Z1db1SW1v7egJj7kD/Coy4l6qelAYAfB0quQ02vno8Hr8/OTkZaWtrmzo4ODhK1Uiycp/P5x0fH28JBAKh3Nxcow3osDdaYcRCMv2kBgD8O1D+BuyTlcTn5+cj7e3t0Y2NjX+SVey0rLS09OzY2Fiwvr4+BN1cqX+A8CqM+E6mTwRnTuTIDAn+FpIC/OHh4V+9vb0fNzQ0jKYbPJtknaybbbAtCYNt35JYZJY5SNgDctj8DFEBfnd3d627u/vT4eHhP8zqTybV0dHxTH9//+f5+fkVsgX2xKuJhtMJAwCeE/Y3sBiPBF9XV/fh0tISK8kY1dTU+BYWFvo0IzgnLlontmkIATyXSq42Ajy7kl8+0+D5ldgm29aGEzFNSIwUEWQyADlc59VSGe/r6/ssU8PmGI75l20TA3LjsoTYiNEgYwjBMu6CPKuIr4/Vph+TasyQzGJkbm7ubaxO1yQEDqVyDKU9pvUe+AhpAZ7rPJbKHyjgBuKyTUwSCzESqyBhAL4+D1PXZZ6Hm9STWCpV/U5DYiEmTe+6xOwRQwiJEAq/pQCPB0VFRdf+7w7LutJJ3LG3t7dvaseOdzGMImoIXVaN8WzjNvDERkzEpnAiFJjP4OvzMhJQBTyYqbjdEDov7+/vf4+6pu0wZQcGBi7arV/JWbAFiN2Lnzcg8COFuGkVFBSo2a70UoYEhC5+OqWgJoAv+mdeXt5bWpat6M7Ozk1tc7vMIfSa0lxdXf1VxZ2ETsGz7sfRoV4sFtMxNtOAF1hAugs6jrn3lxcmDV0VDTBuRrxJaYWujFowltMA40LNa6ArUWugLBgLaYByfXjUHVaTd13UgvEcDTjVRAPodBJE74GKuzW0YHxEA+gxE0TXh4q7NbRgfEgDeIQWRL+Nirs1tGCM0YAVBZZOJxV3a2jBuEIDphVYesxU3EnIY4ETeco+jg71LBinacAUWNxueFSlx4yCTmh0dPRLJ4AoOzIy8oWTNihLbNpxmpin1H2AnrcrFJqdnf0KM901tzFiUoQ94M3GxsYPZHoC94FW9gBJnEYZoa8SBy1hGNNuIWIiNg2PwKwbIPYDdhF9lZqgK6LEpA0fYv3PAHQF94IbCikdrcXFxWdVOtsh/abEpOG4ITGbvBI9EBA3f3qJo9FoUFPIapROX81zTYzEKkgNIQ8s4qwOH2d7PPQS9/T0vKjS2QqJQXqsFYSwxCrSpsmK6yVdi7zx0APmoVuvs7Pz/Wx55+jkHRoa+jonJ+cp4gHdAV+CAcbrjckASsCI0+vcpQGw7h6CVrDwRvMCTS8xvwbLM0Fsy+KZJha+1hCbiYw5oOdCkM86V1UejWBXZmJOsA22pXkeCIOvNAmfmk4MIQWaIYZTwiemYDAY3dracsUTU1IDpBGn95FP9Yac2KfzmVUzgkssHxfCYOGGR2gQvXp0jNG3lOyh+wKosrLykmWMq3q4SYXBth+6laLtEL3hqr8a2AZuFYQhrvizR8pJbAWeKA1j6OFuATeDq8D09hWClc+Jp0ceGHn/5hWWt8C0/N3mX15C4bDnCIuAAAAAAElFTkSuQmCC)}.uni-audio-right{box-sizing:border-box;height:65px;margin-left:65px;padding:11px 16.5px 13.5px 15px;overflow:hidden}.uni-audio-time{margin-top:3.5px;height:16.5px;font-size:12px;color:#888;float:right}.uni-audio-info{margin-right:70px;overflow:hidden}.uni-audio-name{height:22.5px;line-height:22.5px;margin-bottom:3.5px;font-size:14px;color:#353535}.uni-audio-author,.uni-audio-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.uni-audio-author{height:14.5px;line-height:14.5px;font-size:12px;color:#888}uni-button{position:relative;display:block;margin-left:auto;margin-right:auto;padding-left:14px;padding-right:14px;box-sizing:border-box;font-size:18px;text-align:center;text-decoration:none;line-height:2.55555556;border-radius:5px;-webkit-tap-highlight-color:transparent;overflow:hidden;color:#000;background-color:#f8f8f8;cursor:pointer}uni-button[hidden]{display:none!important}uni-button:after{content:" ";width:200%;height:200%;position:absolute;top:0;left:0;border:1px solid rgba(0,0,0,.2);-webkit-transform:scale(.5);transform:scale(.5);-webkit-transform-origin:0 0;transform-origin:0 0;box-sizing:border-box;border-radius:10px}uni-button[native]{padding-left:0;padding-right:0}uni-button[native] .uni-button-cover-view-wrapper{border:inherit;border-color:inherit;border-radius:inherit;background-color:inherit}uni-button[native] .uni-button-cover-view-inner{padding-left:14px;padding-right:14px}uni-button uni-cover-view{line-height:inherit;white-space:inherit}uni-button[type=default]{color:#000;background-color:#f8f8f8}uni-button[type=primary]{color:#fff;background-color:#007aff}uni-button[type=warn]{color:#fff;background-color:#e64340}uni-button[disabled]{color:hsla(0,0%,100%,.6);cursor:not-allowed}uni-button[disabled]:not([type]),uni-button[disabled][type=default]{color:rgba(0,0,0,.3);background-color:#f7f7f7}uni-button[disabled][type=primary]{background-color:rgba(0,122,255,.6)}uni-button[disabled][type=warn]{background-color:#ec8b89}uni-button[type=primary][plain]{color:#007aff;border:1px solid #007aff;background-color:rgba(0,0,0,0)}uni-button[type=primary][plain][disabled]{color:rgba(0,0,0,.2);border-color:rgba(0,0,0,.2)}uni-button[type=primary][plain]:after{border-width:0}uni-button[type=default][plain]{color:#353535;border:1px solid #353535;background-color:rgba(0,0,0,0)}uni-button[type=default][plain][disabled]{color:rgba(0,0,0,.2);border-color:rgba(0,0,0,.2)}uni-button[type=default][plain]:after{border-width:0}uni-button[plain]{color:#353535;border:1px solid #353535;background-color:rgba(0,0,0,0)}uni-button[plain][disabled]{color:rgba(0,0,0,.2);border-color:rgba(0,0,0,.2)}uni-button[plain]:after{border-width:0}uni-button[plain][native] .uni-button-cover-view-inner{padding:0}uni-button[type=warn][plain]{color:#e64340;border:1px solid #e64340;background-color:rgba(0,0,0,0)}uni-button[type=warn][plain][disabled]{color:rgba(0,0,0,.2);border-color:rgba(0,0,0,.2)}uni-button[type=warn][plain]:after{border-width:0}uni-button[size=mini]{display:inline-block;line-height:2.3;font-size:13px;padding:0 1.34em}uni-button[size=mini][native]{padding:0}uni-button[size=mini][native] .uni-button-cover-view-inner{padding:0 1.34em}uni-button[loading]:not([disabled]){cursor:progress}uni-button[loading]:before{content:" ";display:inline-block;width:18px;height:18px;vertical-align:middle;-webkit-animation:uni-loading 1s steps(12) infinite;animation:uni-loading 1s steps(12) infinite;background-size:100%}uni-button[loading][type=primary]{color:hsla(0,0%,100%,.6);background-color:#0062cc}uni-button[loading][type=primary][plain]{color:#007aff;background-color:rgba(0,0,0,0)}uni-button[loading][type=default]{color:rgba(0,0,0,.6);background-color:#dedede}uni-button[loading][type=default][plain]{color:#353535;background-color:rgba(0,0,0,0)}uni-button[loading][type=warn]{color:hsla(0,0%,100%,.6);background-color:#ce3c39}uni-button[loading][type=warn][plain]{color:#e64340;background-color:rgba(0,0,0,0)}uni-button[loading][native]:before{content:none}.button-hover{color:rgba(0,0,0,.6);background-color:#dedede}.button-hover[plain]{color:rgba(53,53,53,.6);border-color:rgba(53,53,53,.6);background-color:rgba(0,0,0,0)}.button-hover[type=primary]{color:hsla(0,0%,100%,.6);background-color:#0062cc}.button-hover[type=primary][plain]{color:rgba(0,122,255,.6);border-color:rgba(0,122,255,.6);background-color:rgba(0,0,0,0)}.button-hover[type=default]{color:rgba(0,0,0,.6);background-color:#dedede}.button-hover[type=default][plain]{color:rgba(53,53,53,.6);border-color:rgba(53,53,53,.6);background-color:rgba(0,0,0,0)}.button-hover[type=warn]{color:hsla(0,0%,100%,.6);background-color:#ce3c39}.button-hover[type=warn][plain]{color:rgba(230,67,64,.6);border-color:rgba(230,67,64,.6);background-color:rgba(0,0,0,0)}@media (prefers-color-scheme:dark){uni-button,uni-button[type=default]{color:#d6d6d6;background-color:#343434}.button-hover,.button-hover[type=default]{color:#d6d6d6;background-color:hsla(0,0%,100%,.1)}uni-button[disabled]:not([type]),uni-button[disabled][type=default]{color:hsla(0,0%,100%,.2);background-color:hsla(0,0%,100%,.08)}uni-button[type=primary][plain][disabled]{color:hsla(0,0%,100%,.2);border-color:hsla(0,0%,100%,.2)}uni-button[type=default][plain]{color:#d6d6d6;border:1px solid #d6d6d6}.button-hover[type=default][plain]{color:hsla(0,0%,58.8%,.6);border-color:hsla(0,0%,58.8%,.6);background-color:rgba(50,50,50,.2)}uni-button[type=default][plain][disabled]{border-color:hsla(0,0%,100%,.2);color:hsla(0,0%,100%,.2)}}uni-canvas{width:300px;height:150px;display:block;position:relative}uni-canvas>canvas{position:absolute;top:0;left:0;width:100%;height:100%}uni-checkbox-group[hidden]{display:none}uni-checkbox{-webkit-tap-highlight-color:transparent;display:inline-block;cursor:pointer}uni-checkbox[hidden]{display:none}uni-checkbox[disabled]{cursor:not-allowed}uni-checkbox .uni-checkbox-wrapper{display:-webkit-inline-flex;display:-webkit-inline-box;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;align-items:center;vertical-align:middle}uni-checkbox .uni-checkbox-input{margin-right:5px;-webkit-appearance:none;appearance:none;outline:0;border:1px solid #d1d1d1;background-color:#fff;border-radius:3px;width:22px;height:22px;position:relative}@media (hover:hover){uni-checkbox:not([disabled]) .uni-checkbox-input:hover{border-color:var(--HOVER-BD-COLOR,#007aff)!important}}uni-checkbox .uni-checkbox-input.uni-checkbox-input-checked{color:#007aff}uni-checkbox .uni-checkbox-input.uni-checkbox-input-checked:before{font:normal normal normal 14px/1 uni;content:"\EA08";font-size:22px;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%) scale(.73);-webkit-transform:translate(-50%,-48%) scale(.73)}uni-checkbox .uni-checkbox-input.uni-checkbox-input-disabled{background-color:#e1e1e1}uni-checkbox .uni-checkbox-input.uni-checkbox-input-disabled:before{color:#adadad}uni-checkbox-group{display:block}.ql-container{display:block;position:relative;box-sizing:border-box;-webkit-user-select:text;user-select:text;outline:none;overflow:hidden;width:100%;height:200px;min-height:200px}.ql-container[hidden]{display:none}.ql-container .ql-editor{position:relative;font-size:inherit;line-height:inherit;font-family:inherit;min-height:inherit;width:100%;height:100%;padding:0;overflow-x:hidden;overflow-y:auto;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-overflow-scrolling:touch}.ql-container .ql-editor::-webkit-scrollbar{width:0!important}.ql-container .ql-editor.scroll-disabled{overflow:hidden}.ql-container .ql-image-overlay{display:-webkit-box;display:-webkit-flex;display:flex;position:absolute;box-sizing:border-box;border:1px dashed #ccc;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-user-select:none;user-select:none}.ql-container .ql-image-overlay .ql-image-size{position:absolute;padding:4px 8px;text-align:center;background-color:#fff;color:#888;border:1px solid #ccc;box-sizing:border-box;opacity:.8;right:4px;top:4px;font-size:12px;display:inline-block;width:auto}.ql-container .ql-image-overlay .ql-image-toolbar{position:relative;text-align:center;box-sizing:border-box;background:#000;border-radius:5px;color:#fff;font-size:0;min-height:24px;z-index:100}.ql-container .ql-image-overlay .ql-image-toolbar span{display:inline-block;cursor:pointer;padding:5px;font-size:12px;border-right:1px solid #fff}.ql-container .ql-image-overlay .ql-image-toolbar span:last-child{border-right:0}.ql-container .ql-image-overlay .ql-image-toolbar span.triangle-up{padding:0;position:absolute;top:-12px;left:50%;-webkit-transform:translatex(-50%);transform:translatex(-50%);width:0;height:0;border-width:6px;border-style:solid;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #000 rgba(0,0,0,0)}.ql-container .ql-image-overlay .ql-image-handle{position:absolute;height:12px;width:12px;border-radius:50%;border:1px solid #ccc;box-sizing:border-box;background:#fff}.ql-container img{display:inline-block;max-width:100%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;height:100%;outline:none;overflow-y:auto;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor ol,.ql-editor p,.ql-editor pre,.ql-editor ul{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\2022"}.ql-editor ul[data-checked=false],.ql-editor ul[data-checked=true]{pointer-events:none}.ql-editor ul[data-checked=false]>li *,.ql-editor ul[data-checked=true]>li *{pointer-events:all}.ql-editor ul[data-checked=false]>li:before,.ql-editor ul[data-checked=true]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\2610"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:2em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl),.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:2em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right,.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:2em}.ql-editor .ql-indent-2:not(.ql-direction-rtl),.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:4em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right,.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:4em}.ql-editor .ql-indent-3:not(.ql-direction-rtl),.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:6em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right,.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor .ql-indent-4:not(.ql-direction-rtl),.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:8em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right,.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:8em}.ql-editor .ql-indent-5:not(.ql-direction-rtl),.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:10em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right,.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:10em}.ql-editor .ql-indent-6:not(.ql-direction-rtl),.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:12em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right,.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor .ql-indent-7:not(.ql-direction-rtl),.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:14em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right,.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:14em}.ql-editor .ql-indent-8:not(.ql-direction-rtl),.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:16em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right,.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:16em}.ql-editor .ql-indent-9:not(.ql-direction-rtl),.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:18em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right,.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:rgba(0,0,0,.6);content:attr(data-placeholder);font-style:italic;pointer-events:none;position:absolute}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}uni-icon{display:inline-block;font-size:0;box-sizing:border-box}uni-icon[hidden]{display:none}uni-icon>i{font:normal normal normal 14px/1 weui}uni-icon>i:before{margin:0;box-sizing:border-box}@font-face{font-weight:400;font-style:normal;font-family:weui;src:url("data:application/octet-stream;base64,AAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJAKEx8AAABfAAAAFZjbWFw65cFHQAAAhwAAAJQZ2x5Zp+UEEcAAASUAAAIvGhlYWQUqc7xAAAA4AAAADZoaGVhB/YD+wAAALwAAAAkaG10eEJoAAAAAAHUAAAASGxvY2EUxhJeAAAEbAAAACZtYXhwASEAQwAAARgAAAAgbmFtZeNcHtgAAA1QAAAB5nBvc3T6OoZLAAAPOAAAAOYAAQAAA+gAAABaA+gAAAAAA7MAAQAAAAAAAAAAAAAAAAAAABIAAQAAAAEAAMCU2KdfDzz1AAsD6AAAAADY7EUUAAAAANjsRRQAAAAAA7MD5AAAAAgAAgAAAAAAAAABAAAAEgA3AAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQOwAZAABQAIAnoCvAAAAIwCegK8AAAB4AAxAQIAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA6gHqEQPoAAAAWgPoAAAAAAABAAAAAAAAAAAAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAAAAABQAAAAMAAAAsAAAABAAAAXQAAQAAAAAAbgADAAEAAAAsAAMACgAAAXQABABCAAAABAAEAAEAAOoR//8AAOoB//8AAAABAAQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAANwAAAAAAAAAEQAA6gEAAOoBAAAAAQAA6gIAAOoCAAAAAgAA6gMAAOoDAAAAAwAA6gQAAOoEAAAABAAA6gUAAOoFAAAABQAA6gYAAOoGAAAABgAA6gcAAOoHAAAABwAA6ggAAOoIAAAACAAA6gkAAOoJAAAACQAA6goAAOoKAAAACgAA6gsAAOoLAAAACwAA6gwAAOoMAAAADAAA6g0AAOoNAAAADQAA6g4AAOoOAAAADgAA6g8AAOoPAAAADwAA6hAAAOoQAAAAEAAA6hEAAOoRAAAAEQAAAAAARACKAMQBEgFgAZIB4gH6AioCeAK0AwwDZAOiA9wEEAReAAAAAgAAAAADlQOVABQAKQAAJSInJicmNDc2NzYyFxYXFhQHBgcGJzI3Njc2NCcmJyYiBwYHBhQXFhcWAfRxYV83OTk3X2HiYV83OTk3X2FxZFVTMTIyMVNVyFVTMTIyMVNVUzk3X2HiYV83OTk3X2HiYV83OTIyMVNVyFVTMTIyMVNVyFVTMTIAAAIAAAAAA7MDswAXAC0AAAEiBwYHBhUUFxYXFjMyNzY3NjU0JyYnJhMHBiIvASY2OwERNDY7ATIWFREzMhYB7nZnZDs9PTtkZ3Z8amY7Pj47Zmkhdg4oDnYODRddCwcmBwtdFw0Dsz47Zmp8dmdkOz09O2Rndn1pZjs+/fCaEhKaEhoBFwgLCwj+6RoAAwAAAAADlQOVABQAGAAhAAAlIicmJyY0NzY3NjIXFhcWFAcGBwYDETMRJzI2NCYiBhQWAfRxYV83OTk3X2HiYV83OTk3X2GQPh8RGRkiGRlTOTdfYeJhXzc5OTdfYeJhXzc5AfT+3QEjKhgjGBgjGAAAAAACAAAAAAOxA+QAFwAsAAABBgcGDwERFBcWFxYXNjc2NzY1EScmJyYTAQYvASY/ATYyHwEWNjclNjIfARYB9WlsP3A3Rz5sXmxsXW09SDdwQGuP/tUEBIoDAxIBBQFxAQUCARICBQERBAPjFyASJBL+rI51ZUg/HBw/SGV1jgFUEiQSIP66/tkDA48EBBkCAVYCAQHlAQIQBAAAAAADAAAAAAOxA+QAFwAmAC8AAAEGBwYPAREUFxYXFhc2NzY3NjURJyYnJgczMhYVAxQGKwEiJwM0NhMiJjQ2MhYUBgH1aWtAcDdHPmxebGxdbT1IN3BAa4M0BAYMAwImBQELBh4PFhYeFRUD5BggEiQS/q2PdWRJPh0dPklkdY8BUxIkEiD4BgT+xgIDBQE6BAb+QBUfFRUfFQAAAAACAAAAAAOVA5UAFAAaAAAlIicmJyY0NzY3NjIXFhcWFAcGBwYDJwcXAScB9HFhXzc5OTdfYeJhXzc5OTdfYaJzLJ8BFi1TOTdfYeJhXzc5OTdfYeJhXzc5AUhzLJ8BFSwAAAAAAwAAAAADlQOVABQAKQAvAAAlIicmJyY0NzY3NjIXFhcWFAcGBwYnMjc2NzY0JyYnJiIHBgcGFBcWFxYTNxcBJzcB9HFhXzc5OTdfYeJhXzc5OTdfYXFkVVMxMjIxU1XIVVMxMjIxU1Uz8iT+6p8jUzk3X2HiYV83OTk3X2HiYV83OTIyMVNVyFVTMTIyMVNVyFVTMTIBBPIj/uufJAAAAAEAAAAAA5kDGAAHAAAlATcXARcBBgGF/vg7zgHYOv3vAcsBCTvPAdg7/e4BAAAAAAIAAAAAA5UDlQAFABoAAAE1IxUXNwMiJyYnJjQ3Njc2MhcWFxYUBwYHBgITPrEsvnFhXzc5OTdfYeJhXzc5OTdfYQIO4PqxLP7kOTdfYeJhXzc5OTdfYeJhXzc5AAAAAAMAAAAAA5UDlQAFABoALwAAARcHJzUzAyInJicmNDc2NzYyFxYXFhQHBgcGJzI3Njc2NCcmJyYiBwYHBhQXFhcWAg2iI7EyGXFhXzc5OTdfYeJhXzc5OTdfYXFkVVMxMjIxU1XIVVMxMjIxU1UCCaIksfr9ZTk3X2HiYV83OTk3X2HiYV83OTIyMVNVyFVTMTIyMVNVyFVTMTIAAAMAAAAAA5UDlQAUABgAIQAAJSInJicmNDc2NzYyFxYXFhQHBgcGAxMzEwMyNjQmIg4BFgH0cWFfNzk5N19h4mFfNzk5N19hkQU2BSAQFRUgFQEWUzk3X2HiYV83OTk3X2HiYV83OQKV/sQBPP43Fh8VFR8WAAAAAAQAAAAAA5UDlQAUACkALQA2AAAlIicmJyY0NzY3NjIXFhcWFAcGBwYnMjc2NzY0JyYnJiIHBgcGFBcWFxYTMxEjEyImNDYyFhQGAfRxYV83OTk3X2HiYV83OTk3X2FxZFVTMTIyMVNVyFVTMTIyMVNVSzIyGREZGSIZGVM5N19h4mFfNzk5N19h4mFfNzkyMjFTVchVUzEyMjFTVchVUzEyAcL+3QFNGCMYGCMYAAAAAwAAAAADlQOVABQAKQA1AAAlIicmJyY0NzY3NjIXFhcWFAcGBwYnMjc2NzY0JyYnJiIHBgcGFBcWFxYTFwcnByc3JzcXNxcB9HFhXzc5OTdfYeJhXzc5OTdfYXFkVVMxMjIxU1XIVVMxMjIxU1WHgiOCgiOCgiOCgiNTOTdfYeJhXzc5OTdfYeJhXzc5MjIxU1XIVVMxMjIxU1XIVVMxMgFvgiOCgiOCgiOCgiMAAAACAAAAAANUA0IAGAAlAAABFwcnDgEjIicmJyY0NzY3NjIXFhcWFRQGJzQuASIOARQeATI+AQKoqyOsJ180T0RCJycnJ0JEn0RCJiglDUFvg29BQW+Db0EBYKwjrCAjKCZCRJ9EQicnJydCRE82YZdBb0FBb4NvQUFvAAAAAgAAAAADlQOVAAsAIAAAATcnBycHFwcXNxc3AyInJicmNDc2NzYyFxYXFhQHBgcGAiB9LH19LH19LH19LKlxYV83OTk3X2HiYV83OTk3X2EB9H0sfX0sfX0sfX0s/tw5N19h4mFfNzk5N19h4mFfNzkAAAACAAAAAAOVA5UAFAAcAAAlIicmJyY0NzY3NjIXFhcWFAcGBwYDJzcnBwYfAQH0cWFfNzk5N19h4mFfNzk5N19hHoqKK7UBAbVTOTdfYeJhXzc5OTdfYeJhXzc5ARKPjy27AQG6AAAAAAUAAAAAA1cDbAAJAB0AJwArAC8AAAETHgEzITI2NxMzAw4BIyEiJicDIzU0NjMhMhYdASUyFh0BIzU0NjMHMxMjEzMDIwEaIgETDQEuDRMBIjIiAjAh/tIhMAIiVgwJApoJDP7xCQzQDAkVMhUyiTIVMgLd/cgOEhIOAjj9xSEuLiECOx4IDAwIHo4MCR0dCQz6/okBd/6JAAAAAAAAEADGAAEAAAAAAAEABAAAAAEAAAAAAAIABwAEAAEAAAAAAAMABAALAAEAAAAAAAQABAAPAAEAAAAAAAUACwATAAEAAAAAAAYABAAeAAEAAAAAAAoAKwAiAAEAAAAAAAsAEwBNAAMAAQQJAAEACABgAAMAAQQJAAIADgBoAAMAAQQJAAMACAB2AAMAAQQJAAQACAB+AAMAAQQJAAUAFgCGAAMAAQQJAAYACACcAAMAAQQJAAoAVgCkAAMAAQQJAAsAJgD6d2V1aVJlZ3VsYXJ3ZXVpd2V1aVZlcnNpb24gMS4wd2V1aUdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAHcAZQB1AGkAUgBlAGcAdQBsAGEAcgB3AGUAdQBpAHcAZQB1AGkAVgBlAHIAcwBpAG8AbgAgADEALgAwAHcAZQB1AGkARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETAAZjaXJjbGUIZG93bmxvYWQEaW5mbwxzYWZlLXN1Y2Nlc3MJc2FmZS13YXJuB3N1Y2Nlc3MOc3VjY2Vzcy1jaXJjbGURc3VjY2Vzcy1uby1jaXJjbGUHd2FpdGluZw53YWl0aW5nLWNpcmNsZQR3YXJuC2luZm8tY2lyY2xlBmNhbmNlbAZzZWFyY2gFY2xlYXIEYmFjawZkZWxldGUAAAAA") format("truetype")}.uni-icon-success:before{content:"\EA06"}.uni-icon-success_circle:before{content:"\EA07"}.uni-icon-success_no_circle:before{content:"\EA08"}.uni-icon-safe_success:before{content:"\EA04"}.uni-icon-safe_warn:before{content:"\EA05"}.uni-icon-info:before{content:"\EA03"}.uni-icon-info_circle:before{content:"\EA0C"}.uni-icon-warn:before{content:"\EA0B"}.uni-icon-waiting:before{content:"\EA09"}.uni-icon-waiting_circle:before{content:"\EA0A"}.uni-icon-circle:before{content:"\EA01"}.uni-icon-cancel:before{content:"\EA0D"}.uni-icon-download:before{content:"\EA02"}.uni-icon-search:before{content:"\EA0E"}.uni-icon-clear:before{content:"\EA0F"}.uni-icon-safe_success,.uni-icon-success,.uni-icon-success_circle,.uni-icon-success_no_circle{color:#007aff}.uni-icon-safe_warn{color:#ffbe00}.uni-icon-info{color:#10aeff}.uni-icon-info_circle{color:#007aff}.uni-icon-warn{color:#f76260}.uni-icon-waiting,.uni-icon-waiting_circle{color:#10aeff}.uni-icon-circle{color:#c9c9c9}.uni-icon-cancel{color:#f43530}.uni-icon-download{color:#007aff}.uni-icon-clear,.uni-icon-search{color:#b2b2b2}uni-image{width:320px;height:240px;display:inline-block;overflow:hidden;position:relative}uni-image[hidden]{display:none}uni-image>div,uni-image>img{width:100%;height:100%}uni-image>img{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;display:block;position:absolute;top:0;left:0;opacity:0}uni-image>.uni-image-will-change{will-change:transform}uni-input{display:block;font-size:16px;line-height:1.4em;height:1.4em;min-height:1.4em;overflow:hidden}uni-input[hidden]{display:none}.uni-input-form,.uni-input-input,.uni-input-placeholder,.uni-input-wrapper{outline:none;border:none;padding:0;margin:0;text-decoration:inherit}.uni-input-form,.uni-input-wrapper{display:-webkit-box;display:-webkit-flex;display:flex;position:relative;width:100%;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.uni-input-input,.uni-input-placeholder{width:100%}.uni-input-placeholder{position:absolute;top:auto!important;left:0;color:grey;overflow:hidden;text-overflow:clip;white-space:pre;word-break:keep-all;pointer-events:none;line-height:inherit}.uni-input-input{position:relative;display:block;height:100%;background:none;color:inherit;opacity:1;font:inherit;line-height:inherit;letter-spacing:inherit;text-align:inherit;text-indent:inherit;text-transform:inherit;text-shadow:inherit}.uni-input-input[type=search]::-webkit-search-cancel-button,.uni-input-input[type=search]::-webkit-search-decoration{display:none}.uni-input-input::-webkit-inner-spin-button,.uni-input-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.uni-input-input[type=number]{-moz-appearance:textfield}.uni-input-input:disabled{-webkit-text-fill-color:currentcolor}.uni-label-pointer{cursor:pointer}uni-movable-area{display:block;position:relative;width:10px;height:10px}uni-movable-area[hidden]{display:none}uni-movable-view{display:inline-block;width:10px;height:10px;top:0;left:0;position:absolute;cursor:grab}uni-movable-view[hidden]{display:none}uni-navigator{height:auto;width:auto;display:block;cursor:pointer}uni-navigator[hidden]{display:none}.navigator-hover{background-color:rgba(0,0,0,.1);opacity:.7}uni-picker-view-column{-webkit-flex:1;-webkit-box-flex:1;flex:1;position:relative;height:100%;overflow:hidden}uni-picker-view-column[hidden]{display:none}.uni-picker-view-group{height:100%;overflow:hidden}.uni-picker-view-mask{transform:translateZ(0);-webkit-transform:translateZ(0)}.uni-picker-view-indicator,.uni-picker-view-mask{position:absolute;left:0;width:100%;z-index:3;pointer-events:none}.uni-picker-view-mask{top:0;height:100%;margin:0 auto;background:-webkit-linear-gradient(top,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6)),-webkit-linear-gradient(bottom,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6));background:linear-gradient(180deg,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6)),linear-gradient(0deg,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6));background-position:top,bottom;background-size:100% 102px;background-repeat:no-repeat}.uni-picker-view-indicator{height:34px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.uni-picker-view-content{position:absolute;top:0;left:0;width:100%;will-change:transform;padding:102px 0;cursor:pointer}.uni-picker-view-content>*{height:34px;overflow:hidden}.uni-picker-view-indicator:before{top:0;border-top:1px solid #e5e5e5;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.uni-picker-view-indicator:after{bottom:0;border-bottom:1px solid #e5e5e5;-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.uni-picker-view-indicator:after,.uni-picker-view-indicator:before{content:" ";position:absolute;left:0;right:0;height:1px;color:#e5e5e5}@media (prefers-color-scheme:dark){.uni-picker-view-indicator:before{border-top-color:var(--UI-FG-3)}.uni-picker-view-indicator:after{border-bottom-color:var(--UI-FG-3)}.uni-picker-view-mask{background-image:-webkit-linear-gradient(top,rgba(35,35,35,.95),rgba(35,35,35,.6)),-webkit-linear-gradient(bottom,rgba(35,35,35,.95),rgba(35,35,35,.6));background-image:linear-gradient(180deg,rgba(35,35,35,.95),rgba(35,35,35,.6)),linear-gradient(0deg,rgba(35,35,35,.95),rgba(35,35,35,.6))}}uni-picker-view{display:block}uni-picker-view .uni-picker-view-wrapper{display:-webkit-box;display:-webkit-flex;display:flex;position:relative;overflow:hidden;height:100%}uni-picker-view[hidden]{display:none}uni-progress{display:-webkit-flex;display:-webkit-box;display:flex;-webkit-align-items:center;-webkit-box-align:center;align-items:center}uni-progress[hidden]{display:none}.uni-progress-bar{-webkit-flex:1;-webkit-box-flex:1;flex:1}.uni-progress-inner-bar{width:0;height:100%}.uni-progress-info{margin-top:0;margin-bottom:0;min-width:2em;margin-left:15px;font-size:16px}uni-radio-group[hidden]{display:none}uni-radio{-webkit-tap-highlight-color:transparent;display:inline-block;cursor:pointer}uni-radio[hidden]{display:none}uni-radio[disabled]{cursor:not-allowed}uni-radio .uni-radio-wrapper{display:-webkit-inline-flex;display:-webkit-inline-box;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;align-items:center;vertical-align:middle}uni-radio .uni-radio-input{-webkit-appearance:none;appearance:none;margin-right:5px;outline:0;border:1px solid #d1d1d1;background-color:#fff;border-radius:50%;width:22px;height:22px;position:relative}@media (any-hover:hover){uni-radio:not([disabled]) .uni-radio-input:hover{border-color:var(--HOVER-BD-COLOR,#007aff)!important}}uni-radio .uni-radio-input.uni-radio-input-checked:before{font:normal normal normal 14px/1 uni;content:"\EA08";font-size:18px;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%) scale(.73);-webkit-transform:translate(-50%,-48%) scale(.73)}uni-radio .uni-radio-input.uni-radio-input-disabled{background-color:#e1e1e1;border-color:#d1d1d1}uni-radio .uni-radio-input.uni-radio-input-disabled:before{color:#adadad}uni-radio-group{display:block}@-webkit-keyframes once-show{0%{top:0}}@keyframes once-show{0%{top:0}}uni-resize-sensor,uni-resize-sensor>div{position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden}uni-resize-sensor{display:block;z-index:-1;visibility:hidden;-webkit-animation:once-show 1ms;animation:once-show 1ms}uni-resize-sensor>div>div{position:absolute;left:0;top:0}uni-resize-sensor>div:first-child>div{width:100000px;height:100000px}uni-resize-sensor>div:last-child>div{width:200%;height:200%}uni-scroll-view{display:block;width:100%}uni-scroll-view[hidden]{display:none}.uni-scroll-view{position:relative;-webkit-overflow-scrolling:touch;max-height:inherit}.uni-scroll-view,.uni-scroll-view-content{width:100%;height:100%}.uni-scroll-view-refresher{position:relative;overflow:hidden}.uni-scroll-view-refresh{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;flex-direction:row}.uni-scroll-view-refresh,.uni-scroll-view-refresh-inner{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.uni-scroll-view-refresh-inner{line-height:0;width:40px;height:40px;border-radius:50%;background-color:#fff;box-shadow:0 1px 6px rgba(0,0,0,.117647),0 1px 4px rgba(0,0,0,.117647)}.uni-scroll-view-refresh__spinner{-webkit-transform-origin:center center;transform-origin:center center;-webkit-animation:uni-scroll-view-refresh-rotate 2s linear infinite;animation:uni-scroll-view-refresh-rotate 2s linear infinite}.uni-scroll-view-refresh__spinner>circle{stroke:currentColor;stroke-linecap:round;-webkit-animation:uni-scroll-view-refresh-dash 2s linear infinite;animation:uni-scroll-view-refresh-dash 2s linear infinite}@-webkit-keyframes uni-scroll-view-refresh-rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes uni-scroll-view-refresh-rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes uni-scroll-view-refresh-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes uni-scroll-view-refresh-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}uni-slider{margin:10px 18px;padding:0;display:block}uni-slider[hidden]{display:none}uni-slider .uni-slider-wrapper{display:-webkit-flex;display:-webkit-box;display:flex;-webkit-align-items:center;-webkit-box-align:center;align-items:center;min-height:16px}uni-slider .uni-slider-tap-area{-webkit-flex:1;-webkit-box-flex:1;flex:1;padding:8px 0}uni-slider .uni-slider-handle-wrapper{position:relative;height:2px;border-radius:5px;background-color:#e9e9e9;cursor:pointer;-webkit-tap-highlight-color:transparent}uni-slider .uni-slider-handle-wrapper,uni-slider .uni-slider-track{-webkit-transition:background-color .3s ease;transition:background-color .3s ease}uni-slider .uni-slider-track{height:100%;border-radius:6px;background-color:#007aff}uni-slider .uni-slider-handle,uni-slider .uni-slider-thumb{position:absolute;left:50%;top:50%;cursor:pointer;border-radius:50%;-webkit-transition:border-color .3s ease;transition:border-color .3s ease}uni-slider .uni-slider-handle{width:28px;height:28px;margin-top:-14px;margin-left:-14px;background-color:rgba(0,0,0,0);z-index:3;cursor:grab}uni-slider .uni-slider-thumb{z-index:2;box-shadow:0 0 4px rgba(0,0,0,.2)}uni-slider .uni-slider-step{position:absolute;width:100%;height:2px;background:rgba(0,0,0,0);z-index:1}uni-slider .uni-slider-value{width:3ch;color:#888;font-size:14px;margin-left:1em}uni-slider .uni-slider-disabled .uni-slider-track{background-color:#ccc}uni-slider .uni-slider-disabled .uni-slider-thumb{background-color:#fff;border-color:#ccc}uni-swiper-item{display:block;overflow:hidden;will-change:transform;position:absolute;width:100%;height:100%;cursor:grab}uni-swiper-item[hidden]{display:none}uni-swiper{display:block;height:150px}uni-swiper[hidden]{display:none}uni-swiper .uni-swiper-wrapper{overflow:hidden;position:relative;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0)}uni-swiper .uni-swiper-slides{position:absolute;left:0;top:0;right:0;bottom:0}uni-swiper .uni-swiper-slide-frame{position:absolute;left:0;top:0;width:100%;height:100%;will-change:transform}uni-swiper .uni-swiper-dots{position:absolute;font-size:0}uni-swiper .uni-swiper-dots-horizontal{left:50%;bottom:10px;text-align:center;white-space:nowrap;-webkit-transform:translate(-50%);transform:translate(-50%)}uni-swiper .uni-swiper-dots-horizontal .uni-swiper-dot{margin-right:8px}uni-swiper .uni-swiper-dots-horizontal .uni-swiper-dot:last-child{margin-right:0}uni-swiper .uni-swiper-dots-vertical{right:10px;top:50%;text-align:right;-webkit-transform:translateY(-50%);transform:translateY(-50%)}uni-swiper .uni-swiper-dots-vertical .uni-swiper-dot{display:block;margin-bottom:9px}uni-swiper .uni-swiper-dots-vertical .uni-swiper-dot:last-child{margin-bottom:0}uni-swiper .uni-swiper-dot{display:inline-block;width:8px;height:8px;cursor:pointer;-webkit-transition-property:background-color;transition-property:background-color;-webkit-transition-timing-function:ease;transition-timing-function:ease;background:rgba(0,0,0,.3);border-radius:50%}uni-swiper .uni-swiper-dot-active{background-color:#000}uni-swiper .uni-swiper-navigation{width:26px;height:26px;cursor:pointer;position:absolute;top:50%;margin-top:-13px;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-transition:all .2s;transition:all .2s;border-radius:50%;opacity:1}uni-swiper .uni-swiper-navigation-disabled{opacity:.35;cursor:not-allowed}uni-swiper .uni-swiper-navigation-hide{opacity:0;cursor:auto;pointer-events:none}uni-swiper .uni-swiper-navigation-prev{left:10px}uni-swiper .uni-swiper-navigation-prev i{margin-left:-1px;left:10px}uni-swiper .uni-swiper-navigation-prev.uni-swiper-navigation-vertical{top:18px;left:50%;margin-left:-13px}uni-swiper .uni-swiper-navigation-prev.uni-swiper-navigation-vertical i{-webkit-transform:rotate(90deg);transform:rotate(90deg);margin-left:auto;margin-top:-2px}uni-swiper .uni-swiper-navigation-next{right:10px}uni-swiper .uni-swiper-navigation-next i{-webkit-transform:rotate(180deg);transform:rotate(180deg)}uni-swiper .uni-swiper-navigation-next.uni-swiper-navigation-vertical{top:auto;bottom:5px;left:50%;margin-left:-13px}uni-swiper .uni-swiper-navigation-next.uni-swiper-navigation-vertical i{margin-top:2px;-webkit-transform:rotate(270deg);transform:rotate(270deg)}uni-switch{-webkit-tap-highlight-color:transparent;display:inline-block;cursor:pointer}uni-switch[hidden]{display:none}uni-switch[disabled]{cursor:not-allowed}uni-switch .uni-switch-wrapper{display:-webkit-inline-flex;display:-webkit-inline-box;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;align-items:center;vertical-align:middle}uni-switch .uni-switch-input{-webkit-appearance:none;appearance:none;position:relative;width:52px;height:32px;margin-right:5px;border:1px solid #dfdfdf;outline:0;border-radius:16px;box-sizing:border-box;background-color:#dfdfdf;-webkit-transition:background-color .1s,border .1s;transition:background-color .1s,border .1s}uni-switch[disabled] .uni-switch-input{opacity:.7}uni-switch .uni-switch-input:before{width:50px;background-color:#fdfdfd}uni-switch .uni-switch-input:after,uni-switch .uni-switch-input:before{content:" ";position:absolute;top:0;left:0;height:30px;border-radius:15px;transition:-webkit-transform .3s;-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}uni-switch .uni-switch-input:after{width:30px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.4)}uni-switch .uni-switch-input.uni-switch-input-checked{border-color:#007aff;background-color:#007aff}uni-switch .uni-switch-input.uni-switch-input-checked:before{-webkit-transform:scale(0);transform:scale(0)}uni-switch .uni-switch-input.uni-switch-input-checked:after{-webkit-transform:translateX(20px);transform:translateX(20px)}uni-switch .uni-checkbox-input{margin-right:5px;-webkit-appearance:none;appearance:none;outline:0;border:1px solid #d1d1d1;background-color:#fff;border-radius:3px;width:22px;height:22px;position:relative;color:#007aff}uni-switch:not([disabled]) .uni-checkbox-input:hover{border-color:#007aff}uni-switch .uni-checkbox-input.uni-checkbox-input-checked:before{font:normal normal normal 14px/1 uni;content:"\EA08";color:inherit;font-size:22px;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%) scale(.73);-webkit-transform:translate(-50%,-48%) scale(.73)}uni-switch .uni-checkbox-input.uni-checkbox-input-disabled{background-color:#e1e1e1}uni-switch .uni-checkbox-input.uni-checkbox-input-disabled:before{color:#adadad}@media (prefers-color-scheme:dark){uni-switch .uni-switch-input{border-color:#3b3b3f}uni-switch .uni-switch-input,uni-switch .uni-switch-input:before{background-color:#3b3b3f}uni-switch .uni-switch-input:after{background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.4)}uni-switch .uni-checkbox-input{background-color:#2c2c2c;border:1px solid #656565}}uni-text[selectable]{cursor:auto;user-select:text;-webkit-user-select:text}uni-text{white-space:pre-line}uni-text span{display:inline}uni-textarea{width:300px;height:150px;display:block;position:relative;font-size:16px;line-height:normal;white-space:pre-wrap;word-break:break-all}uni-textarea[hidden]{display:none}.uni-textarea-compute,.uni-textarea-line,.uni-textarea-placeholder,.uni-textarea-textarea,.uni-textarea-wrapper{outline:none;border:none;padding:0;margin:0;text-decoration:inherit}.uni-textarea-wrapper{display:block;position:relative;width:100%;height:100%;min-height:inherit;overflow-y:hidden}.uni-textarea-compute,.uni-textarea-line,.uni-textarea-placeholder,.uni-textarea-textarea{position:absolute;width:100%;height:100%;left:0;top:0;white-space:inherit;word-break:inherit}.uni-textarea-placeholder{color:grey;overflow:hidden}.uni-textarea-compute,.uni-textarea-line{visibility:hidden;height:auto}.uni-textarea-line{width:1em}.uni-textarea-compute-auto-height{overflow-wrap:break-word}.uni-textarea-textarea{resize:none;background:none;color:inherit;opacity:1;font:inherit;line-height:inherit;letter-spacing:inherit;text-align:inherit;text-indent:inherit;text-transform:inherit;text-shadow:inherit}.uni-textarea-textarea-fix-margin{width:auto;right:0;margin:0 -3px}.uni-textarea-textarea:disabled{-webkit-text-fill-color:currentcolor}uni-ad{display:block;overflow:hidden}uni-ad[hidden]{display:none}uni-ad .uni-ad-container{width:100%;height:100%;min-height:1px}uni-cover-image{display:block;line-height:1.2;overflow:hidden;height:100%;width:100%;pointer-events:auto}uni-cover-image[hidden]{display:none}uni-cover-image .uni-cover-image{width:100%;height:100%}uni-cover-view{display:block;line-height:1.2;overflow:hidden;white-space:nowrap;pointer-events:auto}uni-cover-view[hidden]{display:none}uni-cover-view .uni-cover-view{width:100%;height:100%;visibility:hidden;text-overflow:inherit;overflow:hidden;white-space:inherit;-webkit-align-items:inherit;-webkit-box-align:inherit;align-items:inherit;-webkit-justify-content:inherit;-webkit-box-pack:inherit;justify-content:inherit;-webkit-flex-direction:inherit;-webkit-box-orient:inherit;-webkit-box-direction:inherit;flex-direction:inherit;-webkit-flex-wrap:inherit;flex-wrap:inherit;display:inherit;overflow:inherit}uni-live-pusher{width:300px;height:225px;display:inline-block;line-height:0;overflow:hidden;position:relative}uni-live-pusher[hidden]{display:none}.uni-live-pusher-container{left:0;background-color:#000}.uni-live-pusher-container,.uni-live-pusher-slot{width:100%;height:100%;position:absolute;top:0;overflow:hidden}.uni-live-pusher-slot{pointer-events:none}uni-map{width:300px;height:225px;display:inline-block;line-height:0;overflow:hidden;position:relative}uni-map[hidden]{display:none}.uni-map-container{left:0;background-color:rgba(0,0,0,0)}.uni-map-container,.uni-map-slot{width:100%;height:100%;position:absolute;top:0;overflow:hidden}.uni-map-slot{pointer-events:none}uni-picker{display:block}uni-video{width:300px;height:225px;display:inline-block;line-height:0;overflow:hidden;position:relative}uni-video[hidden]{display:none}.uni-video-container{left:0;background-color:#000}.uni-video-container,.uni-video-slot{width:100%;height:100%;position:absolute;top:0;overflow:hidden}.uni-video-slot{pointer-events:none}uni-view{display:block}uni-view[hidden]{display:none}uni-web-view{position:absolute;left:0;right:0;top:0;bottom:0} \ No newline at end of file diff --git a/unpackage/dist/build/app-plus/view.umd.min.js b/unpackage/dist/build/app-plus/view.umd.min.js new file mode 100644 index 0000000..8201f97 --- /dev/null +++ b/unpackage/dist/build/app-plus/view.umd.min.js @@ -0,0 +1,6 @@ +(function(t,e){"object"===typeof exports&&"object"===typeof module?module.exports=e():"function"===typeof define&&define.amd?define([],e):"object"===typeof exports?exports["uni"]=e():t["uni"]=e()})("undefined"!==typeof self?self:this,(function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="393d")}({"005f":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));var i="onPageCreate"},"01aa":function(t,e,n){"use strict";var i=n("e32e"),r=n.n(i);r.a},"0372":function(t,e,n){"use strict";n.d(e,"d",(function(){return w})),n.d(e,"b",(function(){return S})),n.d(e,"c",(function(){return k})),n.d(e,"a",(function(){return x}));var i=n("e8d9"),r=(n("340d"),n("c80c"),n("0a80")),o=n("c14b"),a=n("0dbd"),s=n("1da9"),c=n("4ef5");function u(t){return u="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(t)}function l(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var h,d,f="zh-Hans",p="zh-Hant",v="en",m="fr",g="es",_={};function b(){if(C()){var t=Object.keys(__uniConfig.locales);t.length&&t.forEach((function(t){var e=_[t],n=__uniConfig.locales[t];e?Object.assign(e,n):_[t]=n}))}}Object.assign(_,(h={},l(h,v,r),l(h,g,o),l(h,m,a),l(h,f,s),l(h,p,c),h)),d="object"===("undefined"===typeof weex?"undefined":u(weex))?weex.requireModule("plus").getLanguage():"",b();var y=Object(i["a"])(d,_),w=y.t,S=y.mixin={beforeCreate:function(){var t=this,e=y.i18n.watchLocale((function(){t.$forceUpdate()}));this.$once("hook:beforeDestroy",(function(){e()}))},methods:{$$t:function(t,e){return w(t,e)}}},k=y.setLocale,x=y.getLocale;function C(){return"undefined"!==typeof __uniConfig&&__uniConfig.locales&&!!Object.keys(__uniConfig.locales).length}},"04a6":function(t,e,n){},"07b5":function(t,e,n){},"07d6":function(t,e,n){},"0834":function(t,e,n){"use strict";n.d(e,"d",(function(){return i})),n.d(e,"c",(function(){return r})),n.d(e,"h",(function(){return o})),n.d(e,"e",(function(){return a})),n.d(e,"g",(function(){return s})),n.d(e,"i",(function(){return c})),n.d(e,"a",(function(){return u})),n.d(e,"m",(function(){return l})),n.d(e,"j",(function(){return h})),n.d(e,"b",(function(){return d})),n.d(e,"l",(function(){return f})),n.d(e,"n",(function(){return p})),n.d(e,"k",(function(){return v})),n.d(e,"f",(function(){return m}));var i=2,r=4,o=6,a=10,s=20,c="vdSync",u="__uniapp__service",l="webviewReady",h="vdSyncCallback",d="invokeApi",f="webviewInserted",p="webviewRemoved",v="webviewId",m="setLocale"},"083e":function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return v}));var i=n("0834"),r=n("e534");function o(t,e){return l(t)||u(t,e)||s(t,e)||a()}function a(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(t,e){if(t){if("string"===typeof t)return c(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(t,e):void 0}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n1&&void 0!==arguments[1]?arguments[1]:{};h(this,e),this.pageId=t,this.addBatchVData=Object.create(null),this.updateBatchVData=[],this.vms=Object.create(null),this.version=n.version}return f(e,[{key:"addVData",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.addBatchVData[t]=[e,n]}},{key:"updateVData",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.updateBatchVData.push([t,e])}},{key:"addVm",value:function(t){var e=t._$id,n=this.vms[e];if(n){var i=Object(r["a"])(n,p(n),this.version);n._$id=i,this.vms[i]=n}this.vms[e]=t}},{key:"initVm",value:function(t){t._$id=Object(r["a"])(t,p(t),this.version);var e=this.addBatchVData[t._$id];e?delete this.addBatchVData[t._$id]:e=[{},{}];var n=e,i=o(n,2),a=i[0],s=i[1];Object.assign(t.$options,s),t.$r=a||Object.create(null),this.addVm(t)}},{key:"sendUIEvent",value:function(e,n,r){t.publishHandler(i["i"],{data:[[i["g"],[[e,n,r]]]],options:{timestamp:Date.now()}})}},{key:"clearAddBatchVData",value:function(){this.addBatchVData=Object.create(null)}},{key:"flush",value:function(){var t=this;this.updateBatchVData.forEach((function(e){var n=o(e,2),i=n[0],r=n[1],a=t.vms[i];if(!a)return console.error("Not found ".concat(i));Object.keys(r).forEach((function(t){Object.assign(a.$r[t]||(a.$r[t]=Object.create(null)),r[t])})),a.$forceUpdate()})),this.updateBatchVData.length=0}}]),e}()}).call(this,n("31d2"))},"09b2":function(t,e,n){"use strict";var i=n("3231");function r(t){var e;while(t){var n=getComputedStyle(t),i=n.transform||n.webkitTransform;e=(!i||"none"===i)&&e,e="fixed"===n.position||e,t=t.parentElement}return e}e["a"]={name:"Native",data:function(){return{position:{top:"0px",left:"0px",width:"0px",height:"0px",position:"static"},hidden:!1}},provide:function(){return{parentOnDraw:this._onDraw}},inject:{parentOnDraw:{default:null}},created:function(){this.isNative=!0,this.onCanInsertCallbacks=[],this.onDrawCallbacks=[]},mounted:function(){this._updatePosition(),this.onCanInsertCallbacks.forEach((function(t){return t()})),this.onCanInsertCallbacks=null,this.$on("uni-view-update",this._requestPositionUpdate)},methods:{_updatePosition:function(){var t=(this.$refs.container||this.$el).getBoundingClientRect();if(this.hidden=0===t.width||0===t.height,!this.hidden){var e=this.position;e.position=r(this.$el)?"absolute":"static";var n=["top","left","width","height"];n.forEach((function(n){var r=t[n];r="top"===n?r+("static"===e.position?document.documentElement.scrollTop||document.body.scrollTop||0:Object(i["a"])()):r,e[n]=r+"px"}))}},_requestPositionUpdate:function(){var t=this;this._positionUpdateRequest&&cancelAnimationFrame(this._positionUpdateRequest),this._positionUpdateRequest=requestAnimationFrame((function(){delete t._positionUpdateRequest,t._updatePosition()}))},_onParentReady:function(t){var e=this,n=function(n){t(n),e.onDrawCallbacks.forEach((function(t){return t(e.position)})),e.onDrawCallbacks=null};this._onSelfReady((function(){e.parentOnDraw?e.parentOnDraw(n):n({top:"0px",left:"0px",width:Number.MAX_SAFE_INTEGER+"px",height:Number.MAX_SAFE_INTEGER+"px",position:"static"})}))},_onSelfReady:function(t){this.onCanInsertCallbacks?this.onCanInsertCallbacks.push(t):t()},_onDraw:function(t){this.onDrawCallbacks?this.onDrawCallbacks.push(t):t(this.position)}}}},"0a18":function(t,e,n){"use strict";var i=n("c9d5"),r=n.n(i);r.a},"0a80":function(t){t.exports=JSON.parse('{"uni.app.quit":"Press back button again to exit","uni.async.error":"The connection timed out, click the screen to try again.","uni.showActionSheet.cancel":"Cancel","uni.showToast.unpaired":"Please note showToast must be paired with hideToast","uni.showLoading.unpaired":"Please note showLoading must be paired with hideLoading","uni.showModal.cancel":"Cancel","uni.showModal.confirm":"OK","uni.chooseImage.cancel":"Cancel","uni.chooseImage.sourceType.album":"Album","uni.chooseImage.sourceType.camera":"Camera","uni.chooseVideo.cancel":"Cancel","uni.chooseVideo.sourceType.album":"Album","uni.chooseVideo.sourceType.camera":"Camera","uni.chooseFile.notUserActivation":"File chooser dialog can only be shown with a user activation","uni.previewImage.cancel":"Cancel","uni.previewImage.button.save":"Save Image","uni.previewImage.save.success":"Saved successfully","uni.previewImage.save.fail":"Save failed","uni.setClipboardData.success":"Content copied","uni.scanCode.title":"Scan code","uni.scanCode.album":"Album","uni.scanCode.fail":"Recognition failure","uni.scanCode.flash.on":"Tap to turn light on","uni.scanCode.flash.off":"Tap to turn light off","uni.startSoterAuthentication.authContent":"Fingerprint recognition","uni.startSoterAuthentication.waitingContent":"Unrecognizable","uni.picker.done":"Done","uni.picker.cancel":"Cancel","uni.video.danmu":"Danmu","uni.video.volume":"Volume","uni.button.feedback.title":"feedback","uni.button.feedback.send":"send","uni.chooseLocation.search":"Find Place","uni.chooseLocation.cancel":"Cancel"}')},"0abb":function(t,e,n){"use strict";n.r(e);var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("uni-icon",t._g({},t.$listeners),[n("i",{class:"uni-icon-"+t.type,style:{"font-size":t._converPx(t.size),color:t.color},attrs:{role:"img"}})])},r=[],o={name:"Icon",props:{type:{type:String,required:!0,default:""},size:{type:[String,Number],default:23},color:{type:String,default:""}},methods:{_converPx:function(t){return/^-?\d+[ur]px$/i.test(t)?t.replace(/(^-?\d+)[ur]px$/i,(function(t,e){return"".concat(uni.upx2px(parseFloat(e)),"px")})):/^-?[\d\.]+$/.test(t)?"".concat(t,"px"):t||""}}},a=o,s=(n("5b38"),n("8844")),c=Object(s["a"])(a,i,r,!1,null,null,null);e["default"]=c.exports},"0b62":function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var i={};function r(t,e,n){var r="string"===typeof t?window[t]:t;if(r)n();else{var o=i[e];if(!o){o=i[e]=[];var a=document.createElement("script");a.src=e,document.body.appendChild(a),a.onload=function(){o.forEach((function(t){return t()})),delete i[e]}}o.push(n)}}},"0c40":function(t,e,n){"use strict";(function(t){var i=n("340d"),r=n("0db8"),o=n("0e4a"),a=n("88a8");t.subscribe("getSelectedTextRange",(function(e){var n=e.pageId,i=e.callbackId,r=document.activeElement,o=r.tagName.toLowerCase(),a=["input","textarea"],s={};a.includes(o)?(s.errMsg="getSelectedTextRange:ok",s.start=r.selectionStart,s.end=r.selectionEnd):s.errMsg="getSelectedTextRange:fail no focused",t.publishHandler("onGetSelectedTextRange",{callbackId:i,data:s},n)}));var s,c=200;e["a"]={name:"Field",mixins:[r["a"],o["a"],a["a"]],model:{prop:"value",event:"update:value"},props:{value:{type:[String,Number],default:""},autoFocus:{type:[Boolean,String],default:!1},focus:{type:[Boolean,String],default:!1},cursor:{type:[Number,String],default:-1},selectionStart:{type:[Number,String],default:-1},selectionEnd:{type:[Number,String],default:-1},confirmHold:{type:Boolean,default:!1},ignoreCompositionEvent:{type:Boolean,default:!0}},data:function(){return{composing:!1,valueSync:this._getValueString(this.value,this.type),focusSync:this.focus,fixColor:0===String(navigator.vendor).indexOf("Apple")&&CSS.supports("image-orientation:from-image")}},watch:{focus:function(t){t?this._focus():this._blur()},focusSync:function(t){this.$emit("update:focus",t)},cursorNumber:function(){this._checkCursor()},selectionStartNumber:function(){this._checkSelection()},selectionEndNumber:function(){this._checkSelection()}},computed:{needFocus:function(){return this.autoFocus||this.focus},cursorNumber:function(){var t=Number(this.cursor);return isNaN(t)?-1:t},selectionStartNumber:function(){var t=Number(this.selectionStart);return isNaN(t)?-1:t},selectionEndNumber:function(){var t=Number(this.selectionEnd);return isNaN(t)?-1:t}},created:function(){var t=this,e=this.__valueChange=Object(i["d"])((function(e){t.valueSync=t._getValueString(e,t.type)}),100);this.$watch("value",e),this.__triggerInput=Object(i["p"])((function(e,n){t.__valueChange.cancel(),t.$emit("update:value",n.value),t.$trigger("input",e,n)}),100),this.$triggerInput=function(e,n,i){t.__valueChange.cancel(),t.__triggerInput(e,n),i&&t.__triggerInput.flush()}},beforeDestroy:function(){this.__valueChange.cancel(),this.__triggerInput.cancel()},directives:{field:{inserted:function(t,e,n){n.context._initField(t)}}},methods:{_getValueString:function(t,e){return"number"===e&&isNaN(Number(t))&&(t=""),null===t?"":String(t)},_initField:function(t){var e=this;this._field=t,s=s||Date.now(),this.needFocus&&setTimeout((function(){e._focus()}))},_focus:function(){if(this.needFocus){var t=this._field;if(t&&window.plus){var e=c-(Date.now()-s);e>0?setTimeout(this._focus.bind(this),e):(t.focus(),this.userInteract||"none"===this.inputmode||plus.key.showSoftKeybord())}else setTimeout(this._focus.bind(this),100)}},_blur:function(){var t=this._field;t&&t.blur()},_onFocus:function(t){this.focusSync=!0,this.$trigger("focus",t,{value:this.valueSync}),this._checkSelection(),this._checkCursor()},_onBlur:function(t){this.composing&&(this.composing=!1,this._onInput(t,!0)),this.focusSync=!1;var e,n=t.target;"number"===n.type?(n.type="text",e=n.selectionEnd,n.type="number"):e=n.selectionEnd,this.$trigger("blur",t,{value:this.valueSync,cursor:e})},_checkSelection:function(){var t=this._field;this.focusSync&&this.selectionStartNumber>-1&&this.selectionEndNumber>-1&&"number"!==t.type&&(t.selectionStart=this.selectionStartNumber,t.selectionEnd=this.selectionEndNumber)},_checkCursor:function(){var t=this._field;this.focusSync&&this.selectionStartNumber<0&&this.selectionEndNumber<0&&this.cursorNumber>-1&&"number"!==t.type&&(t.selectionEnd=t.selectionStart=this.cursorNumber)}}}}).call(this,n("31d2"))},"0c61":function(t,e,n){},"0db3":function(t,e,n){"use strict";function i(t,e){if(t===e._$id)return e;for(var n=e.$children,r=n.length,o=0;o=0&&e.item(n)!==this);return n>-1}),t}n.d(e,"b",(function(){return r})),n.d(e,"a",(function(){return o}))},"0db8":function(t,e,n){"use strict";function i(t,e){for(var n=this.$children,r=n.length,o=arguments.length,a=new Array(o>2?o-2:0),s=2;s2?r-2:0),a=2;a2?n-2:0),o=2;o=13)&&document.activeElement.blur()};t.addEventListener("focus",(function(){e=!0,clearTimeout(i),document.addEventListener("click",h,!1),s=l,a&&n.$trigger("keyboardheightchange",{},{height:a,duration:0}),f(n),d(n)})),r&&t.addEventListener("click",(function(){!n.disabled&&e&&0===a&&d(n)})),r||(parseInt(o)<12&&t.addEventListener("touchstart",(function(){n.disabled||e||d(n)})),parseFloat(o)>=14.6&&!c&&Object(u["m"])((function(){var t=plus.webview.currentWebview();c=t.getStyle()||{}})));var v=function(){document.removeEventListener("click",h,!1),s=null,a&&n.$trigger("keyboardheightchange",{},{height:0,duration:0}),p(n),r&&(i=setTimeout((function(){d(n,!0)}),300)),n.isApple&&document.documentElement.scrollTo(document.documentElement.scrollLeft,document.documentElement.scrollTop)};t.addEventListener("blur",(function(){n.isApple&&t.blur(),e=!1,v()}))}}}},"0ee4":function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(i){"object"===typeof window&&(n=window)}t.exports=n},"120f":function(t,e,n){"use strict";n.r(e);var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("uni-resize-sensor",{on:{"~animationstart":function(e){return t.update(e)}}},[n("div",{on:{scroll:t.update}},[n("div")]),n("div",{on:{scroll:t.update}},[n("div")])])},r=[],o=1e5,a={name:"ResizeSensor",props:{initial:{type:[Boolean,String],default:!1}},data:function(){return{size:{width:-1,height:-1}}},watch:{size:{deep:!0,handler:function(t){this.$emit("resize",Object.assign({},t))}}},mounted:function(){!0===this.initial&&this.$nextTick(this.update),this.$el.offsetParent!==this.$el.parentNode&&(this.$el.parentNode.style.position="relative"),"AnimationEvent"in window||this.reset()},activated:function(){this.reset()},methods:{reset:function(){var t=this.$el.firstChild;t.scrollLeft=o,t.scrollTop=o;var e=this.$el.lastChild;e.scrollLeft=o,e.scrollTop=o},update:function(){this.size.width=this.$el.offsetWidth,this.size.height=this.$el.offsetHeight,this.reset()}}},s=a,c=(n("2eb1"),n("8844")),u=Object(c["a"])(s,i,r,!1,null,null,null);e["default"]=u.exports},1332:function(t,e,n){},"15ad":function(t,e,n){},"15f4":function(t,e,n){"use strict";(function(t){var i=n("909e"),r=n("d97d"),o=n("df5a"),a=n("0b62");function s(t){return s="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function c(){return"ios"===plus.os.name.toLowerCase()}e["a"]={name:"Editor",mixins:[i["f"],i["a"],i["d"]],props:{id:{type:String,default:""},readOnly:{type:[Boolean,String],default:!1},placeholder:{type:String,default:""},showImgSize:{type:[Boolean,String],default:!1},showImgToolbar:{type:[Boolean,String],default:!1},showImgResize:{type:[Boolean,String],default:!1}},data:function(){return{quillReady:!1}},computed:{},watch:{readOnly:function(t){if(this.quillReady){var e=this.quill;e.enable(!t),t||e.blur()}},placeholder:function(t){this.quillReady&&this.setPlaceHolder(t)}},mounted:function(){var t=this,e=[];this.showImgSize&&e.push("DisplaySize"),this.showImgToolbar&&e.push("Toolbar"),this.showImgResize&&e.push("Resize");var n="./__uniappquill.js";Object(a["a"])(window.Quill,n,(function(){if(e.length){var n="./__uniappquillimageresize.js";Object(a["a"])(window.ImageResize,n,(function(){t.initQuill(e)}))}else t.initQuill(e)}))},methods:{_textChangeHandler:function(){this.$trigger("input",{},this.getContents())},_handleSubscribe:function(e){var n,i,r,o=this,a=e.type,c=e.data,u=c.options,l=c.callbackId,h=this.quill,d=window.Quill;if(this.quillReady){switch(a){case"format":var f=u.name,p=void 0===f?"":f,v=u.value,m=void 0!==v&&v;i=h.getSelection(!0);var g=h.getFormat(i)[p]||!1;if(["bold","italic","underline","strike","ins"].includes(p))m=!g;else if("direction"===p){m=("rtl"!==m||!g)&&m;var _=h.getFormat(i).align;"rtl"!==m||_?m||"right"!==_||h.format("align",!1,d.sources.USER):h.format("align","right",d.sources.USER)}else if("indent"===p){var b="rtl"===h.getFormat(i).direction;m="+1"===m,b&&(m=!m),m=m?"+1":"-1"}else"list"===p&&(m="check"===m?"unchecked":m,g="checked"===g?"unchecked":g),m=g&&g!==(m||!1)||!g&&m?m:!g;h.format(p,m,d.sources.USER);break;case"insertDivider":i=h.getSelection(!0),h.insertText(i.index,"\n",d.sources.USER),h.insertEmbed(i.index+1,"divider",!0,d.sources.USER),h.setSelection(i.index+2,d.sources.SILENT);break;case"insertImage":i=h.getSelection(!0);var y=u.src,w=void 0===y?"":y,S=u.alt,k=void 0===S?"":S,x=u.width,C=void 0===x?"":x,T=u.height,O=void 0===T?"":T,$=u.extClass,E=void 0===$?"":$,I=u.data,A=void 0===I?{}:I,M=this.$getRealPath(w);h.insertEmbed(i.index,"image",M,d.sources.SILENT);var P=!!/^(file|blob):/.test(M)&&M;h.formatText(i.index,1,"data-local",P,d.sources.SILENT),h.formatText(i.index,1,"alt",k,d.sources.SILENT),h.formatText(i.index,1,"width",C,d.sources.SILENT),h.formatText(i.index,1,"height",O,d.sources.SILENT),h.formatText(i.index,1,"class",E,d.sources.SILENT),h.formatText(i.index,1,"data-custom",Object.keys(A).map((function(t){return"".concat(t,"=").concat(A[t])})).join("&"),d.sources.SILENT),h.setSelection(i.index+1,d.sources.SILENT),h.scrollIntoView(),setTimeout((function(){o._textChangeHandler()}),1e3);break;case"insertText":i=h.getSelection(!0);var j=u.text,L=void 0===j?"":j;h.insertText(i.index,L,d.sources.USER),h.setSelection(i.index+L.length,0,d.sources.SILENT);break;case"setContents":var N=u.delta,D=u.html;"object"===s(N)?h.setContents(N,d.sources.SILENT):"string"===typeof D?h.setContents(this.html2delta(D),d.sources.SILENT):r="contents is missing";break;case"getContents":n=this.getContents();break;case"clear":h.setContents([]);break;case"removeFormat":i=h.getSelection(!0);var R=d.import("parchment");i.length?h.removeFormat(i,d.sources.USER):Object.keys(h.getFormat(i)).forEach((function(t){R.query(t,R.Scope.INLINE)&&h.format(t,!1)}));break;case"undo":h.history.undo();break;case"redo":h.history.redo();break;case"blur":h.blur();break;case"getSelectionText":i=h.selection.savedRange,n={text:""},i&&0!==i.length&&(n.text=h.getText(i.index,i.length));break;case"scrollIntoView":h.scrollIntoView();break;default:break}this.updateStatus(i)}else r="not ready";l&&t.publishHandler("onEditorMethodCallback",{callbackId:l,data:Object.assign({},n,{errMsg:"".concat(a,":").concat(r?"fail "+r:"ok")})},this.$page.id)},setPlaceHolder:function(t){var e="data-placeholder",n=this.quill.root;n.getAttribute(e)!==t&&n.setAttribute(e,t)},initQuill:function(t){var e=this,n=window.Quill;o["a"](n);var i={toolbar:!1,readOnly:this.readOnly,placeholder:this.placeholder,modules:{}};t.length&&(n.register("modules/ImageResize",window.ImageResize.default),i.modules.ImageResize={modules:t});var r=this.quill=new n(this.$el,i),a=r.root,s=["focus","blur","input"];s.forEach((function(t){a.addEventListener(t,(function(n){var i=e.getContents();if("input"===t){if(c()){var r=(i.html.match(/([\s\S]*)<\/span>/)||[])[1],o=r&&r.replace(/\s/g,"")?"":e.placeholder;e.setPlaceHolder(o)}n.stopPropagation()}else e.$trigger(t,n,i)}))})),r.on(n.events.TEXT_CHANGE,this._textChangeHandler),r.on(n.events.SELECTION_CHANGE,this.updateStatus.bind(this)),r.on(n.events.SCROLL_OPTIMIZE,(function(){var t=r.selection.getRange()[0];e.updateStatus(t)})),r.clipboard.addMatcher(Node.ELEMENT_NODE,(function(t,n){return e.skipMatcher||(n.ops=n.ops.filter((function(t){var e=t.insert;return"string"===typeof e})).map((function(t){var e=t.insert;return{insert:e}}))),n})),this.initKeyboard(a),this.quillReady=!0,this.$trigger("ready",event,{})},getContents:function(){var t=this.quill,e=t.root[["inner", "HTML"].join("")],n=t.getText(),i=t.getContents();return{html:e,text:n,delta:i}},html2delta:function(t){var e,n=["span","strong","b","ins","em","i","u","a","del","s","sub","sup","img","div","p","h1","h2","h3","h4","h5","h6","hr","ol","ul","li","br"],i="";Object(r["a"])(t,{start:function(t,r,o){if(n.includes(t)){e=!1;var a=r.map((function(t){var e=t.name,n=t.value;return"".concat(e,'="').concat(n,'"')})).join(" "),s="<".concat(t," ").concat(a," ").concat(o?"/":"",">");i+=s}else e=!o},end:function(t){e||(i+=""))},chars:function(t){e||(i+=t)}}),this.skipMatcher=!0;var o=this.quill.clipboard.convert(i);return this.skipMatcher=!1,o},updateStatus:function(t){var e=this,n=t?this.quill.getFormat(t):{},i=Object.keys(n);(i.length!==Object.keys(this.__status||{}).length||i.find((function(t){return n[t]!==e.__status[t]})))&&(this.__status=n,this.$trigger("statuschange",{},n))}}}}).call(this,n("31d2"))},1720:function(t,e,n){"use strict";var i=n("a187"),r=n.n(i);r.a},"1af3":function(t,e,n){"use strict";function i(t){return s(t)||a(t)||o(t)||r()}function r(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(t,e){if(t){if("string"===typeof t)return c(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(t,e):void 0}}function a(t){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}function s(t){if(Array.isArray(t))return c(t)}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n=0&&(s.length=1),d.push("".concat(a,"(").concat(s.join(","),")"));else if(r.concat(o).includes(s[0])){a=s[0];var c=s[1];h[a]=o.includes(a)?u(c):c}})),h.transform=h.webkitTransform=d.join(" "),h.transition=h.webkitTransition=Object.keys(h).map((function(t){return"".concat(l(t)," ").concat(c.duration,"ms ").concat(c.timingFunction," ").concat(c.delay,"ms")})).join(","),h.transformOrigin=h.webkitTransformOrigin=s.transformOrigin,h}function d(t){var e=t.animation;if(e&&e.actions&&e.actions.length){var n=0,i=e.actions,r=e.actions.length;setTimeout((function(){o()}),0)}function o(){var e=i[n],a=e.option.transition,s=h(e);Object.keys(s).forEach((function(e){t.$el.style[e]=s[e]})),n+=1,n>>16&65535|0,a=0;while(0!==n){a=n>2e3?2e3:n,n-=a;do{r=r+e[i++]|0,o=o+r|0}while(--a);r%=65521,o%=65521}return r|o<<16|0}t.exports=i},"2ace":function(t,e,n){"use strict";(function(t){var i=n("340d");e["a"]={props:{id:{type:String,default:""}},created:function(){var t=this;this._addListeners(this.id),this.$watch("id",(function(e,n){t._removeListeners(n,!0),t._addListeners(e,!0)}))},beforeDestroy:function(){this._removeListeners(this.id)},methods:{_addListeners:function(e,n){var r=this;if(!n||e){var o=this.$options.listeners;Object(i["i"])(o)&&Object.keys(o).forEach((function(i){n?0!==i.indexOf("@")&&0!==i.indexOf("uni-")&&t.on("uni-".concat(i,"-").concat(r.$page.id,"-").concat(e),r[o[i]]):0===i.indexOf("@")?r.$on("uni-".concat(i.substr(1)),r[o[i]]):0===i.indexOf("uni-")?t.on(i,r[o[i]]):e&&t.on("uni-".concat(i,"-").concat(r.$page.id,"-").concat(e),r[o[i]])}))}},_removeListeners:function(e,n){var r=this;if(!n||e){var o=this.$options.listeners;Object(i["i"])(o)&&Object.keys(o).forEach((function(i){n?0!==i.indexOf("@")&&0!==i.indexOf("uni-")&&t.off("uni-".concat(i,"-").concat(r.$page.id,"-").concat(e),r[o[i]]):0===i.indexOf("@")?r.$off("uni-".concat(i.substr(1)),r[o[i]]):0===i.indexOf("uni-")?t.off(i,r[o[i]]):e&&t.off("uni-".concat(i,"-").concat(r.$page.id,"-").concat(e),r[o[i]])}))}}}}}).call(this,n("31d2"))},"2b44":function(t,e,n){"use strict";var i=n("82de"),r=15,o=852,a=592,s=0,c=1,u=2,l=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],h=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],d=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],f=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(t,e,n,p,v,m,g,_){var b,y,w,S,k,x,C,T,O,$=_.bits,E=0,I=0,A=0,M=0,P=0,j=0,L=0,N=0,D=0,R=0,B=null,F=0,z=new i.Buf16(r+1),V=new i.Buf16(r+1),H=null,Y=0;for(E=0;E<=r;E++)z[E]=0;for(I=0;I=1;M--)if(0!==z[M])break;if(P>M&&(P=M),0===M)return v[m++]=20971520,v[m++]=20971520,_.bits=1,0;for(A=1;A0&&(t===s||1!==M))return-1;for(V[1]=0,E=1;Eo||t===u&&D>a)return 1;for(;;){C=E-L,g[I]x?(T=H[Y+g[I]],O=B[F+g[I]]):(T=96,O=0),b=1<>L)+y]=C<<24|T<<16|O|0}while(0!==y);b=1<>=1;if(0!==b?(R&=b-1,R+=b):R=0,I++,0===--z[E]){if(E===M)break;E=e[n+g[I]]}if(E>P&&(R&S)!==w){0===L&&(L=P),k+=A,j=E-L,N=1<o||t===u&&D>a)return 1;w=R&S,v[w]=P<<24|j<<16|k-m|0}}return 0!==R&&(v[k+R]=E-L<<24|64<<16|0),_.bits=P,0}},"2be0":function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));var i=n("340d"),r=n("909e");function o(){this.$dispatch("Form","uni-form-group-update",{type:"add",vm:this})}function a(){this.$dispatch("Form","uni-form-group-update",{type:"remove",vm:this})}var s={name:"uni://form-field",init:function(t,e){e.constructor.options.props&&e.constructor.options.props.name&&e.constructor.options.props.value||(e.constructor.options.props||(e.constructor.options.props={}),e.constructor.options.props.name||(e.constructor.options.props.name=t.props.name={type:String}),e.constructor.options.props.value||(e.constructor.options.props.value=t.props.value={type:null})),t.propsData||(t.propsData={});var n=e.$vnode;if(n&&n.data&&n.data.attrs&&(Object(i["g"])(n.data.attrs,"name")&&(t.propsData.name=n.data.attrs.name),Object(i["g"])(n.data.attrs,"value")&&(t.propsData.value=n.data.attrs.value)),!e.constructor.options.methods||!e.constructor.options.methods._getFormData){e.constructor.options.methods||(e.constructor.options.methods={}),t.methods||(t.methods={});var s={_getFormData:function(){return this.name?{key:this.name,value:this.value}:{}},_resetFormData:function(){this.value=""}};Object.assign(e.constructor.options.methods,s),Object.assign(t.methods,s),Object.assign(e.constructor.options.methods,r["a"].methods),Object.assign(t.methods,r["a"].methods);var c=t.created;e.constructor.options.created=t.created=c?[].concat(o,c):[o];var u=t.beforeDestroy;e.constructor.options.beforeDestroy=t.beforeDestroy=u?[].concat(a,u):[a]}}};function c(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var u=c({},s.name,s);function l(t,e){t.behaviors.forEach((function(n){var i=u[n];i&&i.init(t,e)}))}},"2c65":function(t,e,n){"use strict";var i=n("7e48"),r=n("82de"),o=n("2e30"),a=n("d233"),s=n("d80f"),c=n("87de"),u=n("ea4b"),l=Object.prototype.toString;function h(t){if(!(this instanceof h))return new h(t);this.options=r.assign({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0===(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new c,this.strm.avail_out=0;var n=i.inflateInit2(this.strm,e.windowBits);if(n!==a.Z_OK)throw new Error(s[n]);if(this.header=new u,i.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"===typeof e.dictionary?e.dictionary=o.string2buf(e.dictionary):"[object ArrayBuffer]"===l.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(n=i.inflateSetDictionary(this.strm,e.dictionary),n!==a.Z_OK)))throw new Error(s[n])}function d(t,e){var n=new h(e);if(n.push(t,!0),n.err)throw n.msg||s[n.err];return n.result}function f(t,e){return e=e||{},e.raw=!0,d(t,e)}h.prototype.push=function(t,e){var n,s,c,u,h,d=this.strm,f=this.options.chunkSize,p=this.options.dictionary,v=!1;if(this.ended)return!1;s=e===~~e?e:!0===e?a.Z_FINISH:a.Z_NO_FLUSH,"string"===typeof t?d.input=o.binstring2buf(t):"[object ArrayBuffer]"===l.call(t)?d.input=new Uint8Array(t):d.input=t,d.next_in=0,d.avail_in=d.input.length;do{if(0===d.avail_out&&(d.output=new r.Buf8(f),d.next_out=0,d.avail_out=f),n=i.inflate(d,a.Z_NO_FLUSH),n===a.Z_NEED_DICT&&p&&(n=i.inflateSetDictionary(this.strm,p)),n===a.Z_BUF_ERROR&&!0===v&&(n=a.Z_OK,v=!1),n!==a.Z_STREAM_END&&n!==a.Z_OK)return this.onEnd(n),this.ended=!0,!1;d.next_out&&(0!==d.avail_out&&n!==a.Z_STREAM_END&&(0!==d.avail_in||s!==a.Z_FINISH&&s!==a.Z_SYNC_FLUSH)||("string"===this.options.to?(c=o.utf8border(d.output,d.next_out),u=d.next_out-c,h=o.buf2string(d.output,c),d.next_out=u,d.avail_out=f-u,u&&r.arraySet(d.output,d.output,c,u,0),this.onData(h)):this.onData(r.shrinkBuf(d.output,d.next_out)))),0===d.avail_in&&0===d.avail_out&&(v=!0)}while((d.avail_in>0||0===d.avail_out)&&n!==a.Z_STREAM_END);return n===a.Z_STREAM_END&&(s=a.Z_FINISH),s===a.Z_FINISH?(n=i.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===a.Z_OK):s!==a.Z_SYNC_FLUSH||(this.onEnd(a.Z_OK),d.avail_out=0,!0)},h.prototype.onData=function(t){this.chunks.push(t)},h.prototype.onEnd=function(t){t===a.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Inflate=h,e.inflate=d,e.inflateRaw=f,e.ungzip=d},"2cc9":function(t,e,n){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var n=0;n=252?6:s>=248?5:s>=240?4:s>=224?3:s>=192?2:1;function c(t,e){if(e<65534&&(t.subarray&&o||!t.subarray&&r))return String.fromCharCode.apply(null,i.shrinkBuf(t,e));for(var n="",a=0;a>>6,e[a++]=128|63&n):n<65536?(e[a++]=224|n>>>12,e[a++]=128|n>>>6&63,e[a++]=128|63&n):(e[a++]=240|n>>>18,e[a++]=128|n>>>12&63,e[a++]=128|n>>>6&63,e[a++]=128|63&n);return e},e.buf2binstring=function(t){return c(t,t.length)},e.binstring2buf=function(t){for(var e=new i.Buf8(t.length),n=0,r=e.length;n4)u[i++]=65533,n+=o-1;else{r&=2===o?31:3===o?15:7;while(o>1&&n1?u[i++]=65533:r<65536?u[i++]=r:(r-=65536,u[i++]=55296|r>>10&1023,u[i++]=56320|1023&r)}return c(u,i)},e.utf8border=function(t,e){var n;e=e||t.length,e>t.length&&(e=t.length),n=e-1;while(n>=0&&128===(192&t[n]))n--;return n<0||0===n?e:n+a[t[n]]>e?n:e}},"2eb1":function(t,e,n){"use strict";var i=n("0c61"),r=n.n(i);r.a},"31d2":function(t,e,n){"use strict";n.r(e),n.d(e,"on",(function(){return v})),n.d(e,"off",(function(){return m})),n.d(e,"once",(function(){return g})),n.d(e,"emit",(function(){return _})),n.d(e,"subscribe",(function(){return b})),n.d(e,"unsubscribe",(function(){return y})),n.d(e,"subscribeHandler",(function(){return w})),n.d(e,"publishHandler",(function(){return f["a"]}));var i=n("4f39");function r(t){var e=t.pageStyle,n=t.rootFontSize,i=document.querySelector("uni-page-body")||document.body;i.setAttribute("style",e),n&&document.documentElement.style.fontSize!==n&&(document.documentElement.style.fontSize=n)}var o=n("49c2"),a=n("d661"),s=n("c08f"),c={setPageMeta:r,requestComponentInfo:o["a"],requestComponentObserver:a["b"],destroyComponentObserver:a["a"],requestMediaQueryObserver:s["b"],destroyMediaQueryObserver:s["a"]},u=n("493f"),l=n("fa95"),h=n("6149");function d(t){Object.keys(c).forEach((function(e){t(e,c[e])})),t("pageScrollTo",u["c"]),t("loadFontFace",l["a"]),Object(h["a"])(t)}var f=n("b379"),p=new i["a"],v=p.$on.bind(p),m=p.$off.bind(p),g=p.$once.bind(p),_=p.$emit.bind(p);function b(t,e){return v("service."+t,e)}function y(t,e){return m("service."+t,e)}function w(t,e,n){_("service."+t,e,n)}d(b)},3231:function(t,e,n){"use strict";function i(){return plus.navigator.isImmersedStatusbar()?Math.round("iOS"===plus.os.name?plus.navigator.getSafeAreaInsets().top:plus.navigator.getStatusbarHeight()):0}n.d(e,"a",(function(){return o}));var r=n("c80c");function o(){var t=plus.webview.currentWebview(),e=t.getStyle();return e=e&&e.titleNView,e&&"default"===e.type?r["a"]+i():0}},"340d":function(t,e,n){"use strict";n.d(e,"o",(function(){return i})),n.d(e,"h",(function(){return u})),n.d(e,"j",(function(){return l})),n.d(e,"i",(function(){return h})),n.d(e,"g",(function(){return d})),n.d(e,"q",(function(){return f})),n.d(e,"a",(function(){return p})),n.d(e,"l",(function(){return v})),n.d(e,"b",(function(){return g})),n.d(e,"d",(function(){return _})),n.d(e,"p",(function(){return b})),n.d(e,"k",(function(){return y})),n.d(e,"e",(function(){return w})),n.d(e,"n",(function(){return S})),n.d(e,"m",(function(){return k})),n.d(e,"f",(function(){return $})),n.d(e,"c",(function(){return I}));var i=!1;try{var r={};Object.defineProperty(r,"passive",{get:function(){i=!0}}),window.addEventListener("test-passive",null,r)}catch(A){}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",a=/^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;"function"!==typeof atob||atob;var s=Object.prototype.toString,c=Object.prototype.hasOwnProperty;Array.isArray,Object.assign;function u(t){return"function"===typeof t}function l(t){return"string"===typeof t}function h(t){return"[object Object]"===s.call(t)}function d(t,e){return c.call(t,e)}function f(t){return s.call(t).slice(8,-1)}function p(t){var e=Object.create(null);return function(n){var i=e[n];return i||(e[n]=t(n))}}function v(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(){if(t){for(var i=arguments.length,r=new Array(i),o=0;o0&&(e.__lines__.forEach((function(t){e.removeOverlay(t)})),e.__lines__=[]),t.forEach((function(t){var n=t.color,i=t.width,r=t.points.map((function(t){return new plus.maps.Point(t.longitude,t.latitude)})),o=new plus.maps.Polyline(r);if(n){var a=c(n);o.setStrokeColor(a.color),o.setStrokeOpacity(a.opacity)}i&&o.setLineWidth(i),e.addOverlay(o),e.__lines__.push(o)}))},_addMapCircles:function(t){var e=this.map;e.__circles__.length>0&&(e.__circles__.forEach((function(t){e.removeOverlay(t)})),e.__circles__=[]),t.forEach((function(t){var n=t.latitude,i=t.longitude,r=t.color,o=t.fillColor,a=t.radius,s=t.strokeWidth,u=new plus.maps.Circle(new plus.maps.Point(i,n),a);if(r){var l=c(r);u.setStrokeColor(l.color),u.setStrokeOpacity(l.opacity)}if(o){var h=c(o);u.setFillColor(h.color),u.setFillOpacity(h.opacity)}s&&u.setLineWidth(s),e.addOverlay(u),e.__circles__.push(u)}))},_addMapPolygons:function(t){var e=this.map,n=e.__polygons__;n.forEach((function(t){e.removeOverlay(t)})),n.length=0,t.forEach((function(t){var i=t.points,r=t.strokeWidth,o=t.strokeColor,a=t.fillColor,s=[];i&&i.forEach((function(t){var e=t.latitude,n=t.longitude;s.push(new plus.maps.Point(n,e))}));var u=new plus.maps.Polygon(s);if(o){var l=c(o);u.setStrokeColor(l.color),u.setStrokeOpacity(l.opacity)}if(a){var h=c(a);u.setFillColor(h.color),u.setFillOpacity(h.opacity)}r&&u.setLineWidth(r),e.addOverlay(u),n.push(u)}))}}}}).call(this,n("31d2"))},3596:function(t,e,n){},"36a6":function(t,e,n){},"383e":function(t,e,n){"use strict";n.r(e);var i=n("39bd"),r=n("340d");var o,a,s={name:"Swiper",mixins:[i["a"]],props:{indicatorDots:{type:[Boolean,String],default:!1},vertical:{type:[Boolean,String],default:!1},autoplay:{type:[Boolean,String],default:!1},circular:{type:[Boolean,String],default:!1},interval:{type:[Number,String],default:5e3},duration:{type:[Number,String],default:500},current:{type:[Number,String],default:0},indicatorColor:{type:String,default:""},indicatorActiveColor:{type:String,default:""},previousMargin:{type:String,default:""},nextMargin:{type:String,default:""},currentItemId:{type:String,default:""},skipHiddenItemLayout:{type:[Boolean,String],default:!1},displayMultipleItems:{type:[Number,String],default:1},disableTouch:{type:[Boolean,String],default:!1},navigation:{type:[Boolean,String],default:!1},navigationColor:{type:String,default:"#fff"},navigationActiveColor:{type:String,default:"rgba(53, 53, 53, 0.6)"}},data:function(){return{currentSync:Math.round(this.current)||0,currentItemIdSync:this.currentItemId||"",userTracking:!1,currentChangeSource:"",items:[],isNavigationAuto:!1,hideNavigation:!1,prevDisabled:!1,nextDisabled:!1}},computed:{intervalNumber:function(){var t=Number(this.interval);return isNaN(t)?5e3:t},durationNumber:function(){var t=Number(this.duration);return isNaN(t)?500:t},displayMultipleItemsNumber:function(){var t=Math.round(this.displayMultipleItems);return isNaN(t)?1:t},slidesStyle:function(){var t={};return(this.nextMargin||this.previousMargin)&&(t=this.vertical?{left:0,right:0,top:this._upx2px(this.previousMargin),bottom:this._upx2px(this.nextMargin)}:{top:0,bottom:0,left:this._upx2px(this.previousMargin),right:this._upx2px(this.nextMargin)}),t},slideFrameStyle:function(){var t=Math.abs(100/this.displayMultipleItemsNumber)+"%";return{width:this.vertical?"100%":t,height:this.vertical?t:"100%"}},swiperEnabled:function(){return this.items.length>this.displayMultipleItemsNumber},circularEnabled:function(){return this.circular&&this.swiperEnabled}},watch:{vertical:function(){this._resetLayout()},circular:function(){this._resetLayout()},intervalNumber:function(t){this._timer&&(this._cancelSchedule(),this._scheduleAutoplay())},current:function(t){this._currentCheck()},currentSync:function(t,e){this._currentChanged(t,e),this.$emit("update:current",t),this._setNavigationState()},currentItemId:function(t){this._currentCheck()},currentItemIdSync:function(t){this.$emit("update:currentItemId",t)},displayMultipleItemsNumber:function(){this._resetLayout()},navigation:{immediate:!0,handler:function(t){this.isNavigationAuto="auto"===t,this.hideNavigation=!0!==t||this.isNavigationAuto,this._navigationSwiperAddMouseEvent()}},items:function(){this._setNavigationState()},swiperEnabled:function(t){t||(this.prevDisabled=!0,this.nextDisabled=!0,this.isNavigationAuto&&(this.hideNavigation=!0))}},created:function(){this._invalid=!0,this._viewportPosition=0,this._viewportMoveRatio=1,this._animating=null,this._requestedAnimation=!1,this._userDirectionChecked=!1,this._contentTrackViewport=0,this._contentTrackSpeed=0,this._contentTrackT=0},mounted:function(){var t=this;this._currentCheck(),this.touchtrack(this.$refs.slidesWrapper,"_handleContentTrack",!0),this._resetLayout(),this.$watch((function(){return t.autoplay&&!t.userTracking}),this._inintAutoplay),this._inintAutoplay(this.autoplay&&!this.userTracking),this.$watch("items.length",this._resetLayout),this._navigationSwiperAddMouseEvent()},beforeDestroy:function(){this._cancelSchedule(),cancelAnimationFrame(this._animationFrame)},methods:{_inintAutoplay:function(t){t?this._scheduleAutoplay():this._cancelSchedule()},_currentCheck:function(){var t=-1;if(this.currentItemId)for(var e=0,n=this.items;er/2?1:0)}var o=this.items[t];o&&this._itemReady(o,(function(){var t=n.currentItemIdSync=o.componentInstance.itemId||"";n.$trigger("change",{},{current:n.currentSync,currentItemId:t,source:i})}))},_scheduleAutoplay:function(){var t=this;function e(){t._timer=null,t.currentChangeSource="autoplay",t.circularEnabled?t.currentSync=t._normalizeCurrentValue(t.currentSync+1):t.currentSync=t.currentSync+t.displayMultipleItemsNumbere-this.displayMultipleItemsNumber)return e-this.displayMultipleItemsNumber;return n},_upx2px:function(t){return/\d+[ur]px$/i.test(t)&&t.replace(/\d+[ur]px$/i,(function(t){return"".concat(uni.upx2px(parseFloat(t)),"px")})),t||""},_resetLayout:function(){if(this._isMounted){this._cancelSchedule(),this._endViewportAnimation();for(var t=this.items,e=0;e0&&this._viewportMoveRatio<1||(this._viewportMoveRatio=1)}var r=this._viewportPosition;this._viewportPosition=-2;var o=this.currentSync;o>=0?(this._invalid=!1,this.userTracking?(this._updateViewport(r+o-this._contentTrackViewport),this._contentTrackViewport=o):(this._updateViewport(o),this.autoplay&&this._scheduleAutoplay())):(this._invalid=!0,this._updateViewport(-this.displayMultipleItemsNumber-1))}},_checkCircularLayout:function(t){if(!this._invalid)for(var e=this.items,n=e.length,i=t+this.displayMultipleItemsNumber,r=0;r=this.items.length&&(t-=this.items.length),t=this._transitionStart%1>.5||this._transitionStart<0?t-1:t,this.$trigger("transition",{},{dx:this.vertical?0:t*r.offsetWidth,dy:this.vertical?t*r.offsetHeight:0})},_animateFrameFuncProto:function(){var t=this;if(this._animating){var e=this._animating,n=e.toPos,i=e.acc,r=e.endTime,o=e.source,a=r-Date.now();if(a<=0){this._updateViewport(n),this._animating=null,this._requestedAnimation=!1,this._transitionStart=null;var s=this.items[this.currentSync];s&&this._itemReady(s,(function(){var e=s.componentInstance.itemId||"";t.$trigger("animationfinish",{},{current:t.currentSync,currentItemId:e,source:o})}))}else{var c=i*a*a/2,u=n+c;this._updateViewport(u),this._animationFrame=requestAnimationFrame(this._animateFrameFuncProto.bind(this))}}else this._requestedAnimation=!1},_animateViewport:function(t,e,n){this._cancelViewportAnimation();var i=this.durationNumber,r=this.items.length,o=this._viewportPosition;if(this.circularEnabled)if(n<0){for(;ot;)o-=r}else if(n>0){for(;o>t;)o-=r;for(;o+rt;)o-=r;o+r-tr)&&(i<0?i=-o(-i):i>r&&(i=r+o(i-r)),e._contentTrackSpeed=0),e._updateViewport(i)}var s=this._contentTrackT-n||1;this.vertical?a(-t.dy/this.$refs.slideFrame.offsetHeight,-t.ddy/s):a(-t.dx/this.$refs.slideFrame.offsetWidth,-t.ddx/s)},_handleTrackEnd:function(t){this.userTracking=!1;var e=this._contentTrackSpeed/Math.abs(this._contentTrackSpeed),n=0;!t&&Math.abs(this._contentTrackSpeed)>.2&&(n=.5*e);var i=this._normalizeCurrentValue(this._viewportPosition+n);t?this._updateViewport(this._contentTrackViewport):(this.currentChangeSource="touch",this.currentSync=i,this._animateViewport(i,"touch",0!==n?n:0===i&&this.circularEnabled&&this._viewportPosition>=1?1:0))},_handleContentTrack:function(t){if(!this.disableTouch&&this.items.length&&!this._invalid){if("start"===t.detail.state)return this.userTracking=!0,this._userDirectionChecked=!1,this._handleTrackStart();if("end"===t.detail.state)return this._handleTrackEnd(!1);if("cancel"===t.detail.state)return this._handleTrackEnd(!0);if(this.userTracking){if(!this._userDirectionChecked){this._userDirectionChecked=!0;var e=Math.abs(t.detail.dx),n=Math.abs(t.detail.dy);if((e>=n&&this.vertical||e<=n&&!this.vertical)&&(this.userTracking=!1),!this.userTracking)return void(this.autoplay&&this._scheduleAutoplay())}return this._handleTrackMove(t.detail),!1}}},_onSwiperDotClick:function(t){this._animateViewport(this.currentSync=t,this.currentChangeSource="click",this.circularEnabled?1:0)},_navigationClick:function(t,e,n){if(t.stopPropagation(),!n){var i=this.items.length,r=this.currentSync;switch(e){case"prev":r--,r<0&&this.circularEnabled&&(r=i-1);break;case"next":r++,r>=i&&this.circularEnabled&&(r=0);break}this._onSwiperDotClick(r)}},_navigationMouseMove:function(t){var e=this;clearTimeout(this.hideNavigationTimer);var n=t.clientX,i=t.clientY,r=this.$refs.slidesWrapper.getBoundingClientRect(),o=r.left,a=r.right,s=r.top,c=r.bottom,u=r.width,l=r.height,h=!1;h=this.vertical?!(i-s=t}},render:function(t){var e=this,n=[],i=[];this.$slots.default&&Object(r["e"])(this.$slots.default,t).forEach((function(t){t.componentOptions&&"v-uni-swiper-item"===t.componentOptions.tag&&i.push(t)}));for(var o=function(i,r){var o=e.currentSync;n.push(t("div",{on:{click:function(){return e._onSwiperDotClick(i)}},class:{"uni-swiper-dot":!0,"uni-swiper-dot-active":i=o||i0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;return Array.isArray(t[e])&&t[e].length}function o(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=JSON.parse(JSON.stringify(t));return e}function a(t){var e={},n=t.__vue__;function r(t,n){var r=t.$attrs;for(var o in r)if(o.startsWith("data-")){var a=Object(i["b"])(o.substr(5).toLowerCase()),s=r[o];e[a]=n?s:e[a]||s}}if(n){var a=n;while(a&&a.$el===t)r(a),a=a.$children[0];var s=n.$parent;while(s&&s.$el===t)r(s,!0),s=s.$parent}else e=Object.assign({},t.dataset,t.__uniDataset);return o(e)}},3934:function(t,e,n){},"393d":function(t,e,n){"use strict";if(n.r(e),n.d(e,"upx2px",(function(){return a["h"]})),n.d(e,"navigateTo",(function(){return a["d"]})),n.d(e,"navigateBack",(function(){return a["c"]})),n.d(e,"reLaunch",(function(){return a["e"]})),n.d(e,"redirectTo",(function(){return a["f"]})),n.d(e,"switchTab",(function(){return a["g"]})),n.d(e,"getSystemInfoSync",(function(){return a["b"]})),n.d(e,"canIUse",(function(){return a["a"]})),"undefined"!==typeof window){var i=window.document.currentScript,r=n("a944");i=r(),"currentScript"in document||Object.defineProperty(document,"currentScript",{get:r});var o=i&&i.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);o&&(n.p=o[1])}var a=n("1c83")},"39bd":function(t,e,n){"use strict";var i=function(t,e,n,i){t.addEventListener(e,(function(t){"function"===typeof n&&!1===n(t)&&(t.preventDefault(),t.stopPropagation())}),{capture:i,passive:!1})};e["a"]={beforeDestroy:function(){document.removeEventListener("mousemove",this.__mouseMoveEventListener),document.removeEventListener("mouseup",this.__mouseUpEventListener)},methods:{touchtrack:function(t,e,n){var r,o,a,s=this,c=this,u=0,l=0,h=0,d=0,f=function(t,n,i,r){if(!1===c[e]({target:t.target,currentTarget:t.currentTarget,preventDefault:t.preventDefault.bind(t),stopPropagation:t.stopPropagation.bind(t),touches:t.touches,changedTouches:t.changedTouches,detail:{state:n,x:i,y:r,dx:i-u,dy:r-l,ddx:i-h,ddy:r-d,timeStamp:t.timeStamp}}))return!1},p=null;i(t,"touchstart",(function(t){if(o=!0,1===t.touches.length&&!p)return p=t,u=h=t.touches[0].pageX,l=d=t.touches[0].pageY,f(t,"start",u,l)})),i(t,"mousedown",(function(t){if(a=!0,!o&&!p)return p=t,u=h=t.pageX,l=d=t.pageY,f(t,"start",u,l)})),i(t,"touchmove",(function(t){if(1===t.touches.length&&p){var e=f(t,"move",t.touches[0].pageX,t.touches[0].pageY);return h=t.touches[0].pageX,d=t.touches[0].pageY,e}}));var v=this.__clickEventListener=function(t){t.preventDefault(),t.stopPropagation()},m=this.__mouseMoveEventListener=function(t){if(!o&&a&&p){!r&&(Math.abs(h-u)>2||Math.abs(d-l)>2)&&(document.addEventListener("click",v,!0),r=!0);var e=f(t,"move",t.pageX,t.pageY);return h=t.pageX,d=t.pageY,e}};document.addEventListener("mousemove",m),i(t,"touchend",(function(t){if(0===t.touches.length&&p)return o=!1,p=null,f(t,"end",t.changedTouches[0].pageX,t.changedTouches[0].pageY)}));var g=this.__mouseUpEventListener=function(t){if(a=!1,!o&&p)return r&&setTimeout((function(){document.removeEventListener("click",s.__clickEventListener,!0),r=!1}),0),p=null,f(t,"end",t.pageX,t.pageY)};document.addEventListener("mouseup",g),i(t,"touchcancel",(function(t){if(p){o=!1;var e=p;return p=null,f(t,n?"cancel":"end",e.touches[0].pageX,e.touches[0].pageY)}}))}}}},"3a3e":function(t,e,n){"use strict";n.r(e);var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("uni-radio-group",t._g({},t.$listeners),[t._t("default")],2)},r=[],o=n("909e"),a={name:"RadioGroup",mixins:[o["a"],o["e"]],props:{name:{type:String,default:""}},data:function(){return{radioList:[]}},listeners:{"@radio-change":"_changeHandler","@radio-group-update":"_radioGroupUpdateHandler"},mounted:function(){this._resetRadioGroupValue(this.radioList.length-1)},created:function(){this.$dispatch("Form","uni-form-group-update",{type:"add",vm:this})},beforeDestroy:function(){this.$dispatch("Form","uni-form-group-update",{type:"remove",vm:this})},methods:{_changeHandler:function(t,e){var n=this.radioList.indexOf(e);this._resetRadioGroupValue(n,!0),this.$trigger("change",t,{value:e.radioValue})},_radioGroupUpdateHandler:function(t){if("add"===t.type)this.radioList.push(t.vm);else{var e=this.radioList.indexOf(t.vm);this.radioList.splice(e,1)}},_resetRadioGroupValue:function(t,e){var n=this;this.radioList.forEach((function(i,r){r!==t&&(e?n.radioList[r].radioChecked=!1:n.radioList.forEach((function(t,e){r>=e||n.radioList[e].radioChecked&&(n.radioList[r].radioChecked=!1)})))}))},_getFormData:function(){var t={};if(""!==this.name){var e="";this.radioList.forEach((function(t){t.radioChecked&&(e=t.value)})),t.value=e,t.key=this.name}return t}}},s=a,c=(n("01aa"),n("8844")),u=Object(c["a"])(s,i,r,!1,null,null,null);e["default"]=u.exports},"3c5f":function(t,e,n){"use strict";var i=n("df50"),r=n.n(i);r.a},"3e92":function(t,e,n){"use strict";var i=n("d0aa"),r=n.n(i);r.a},4452:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var i=0;function r(t,e,n){var r="".concat(Date.now()).concat(i++),o=t.split(","),a=o[0],s=o[1],c=(a.match(/data:image\/(\S+?);/)||[null,"png"])[1].replace("jpeg","jpg"),u="".concat(r,".").concat(c),l="".concat(e,"/").concat(u),h=e.indexOf("/"),d=e.substring(0,h),f=e.substring(h+1);plus.io.resolveLocalFileSystemURL(d,(function(t){t.getDirectory(f,{create:!0,exclusive:!1},(function(t){t.getFile(u,{create:!0,exclusive:!1},(function(t){t.createWriter((function(t){t.onwrite=function(){n(null,l)},t.onerror=n,t.seek(0),t.writeAsBinary(s)}),n)}),n)}),n)}),n)}},"466b":function(t,e,n){},"48fe":function(t,e,n){},"493c":function(t,e,n){"use strict";var i=n("f5ee"),r=n.n(i);r.a},"493f":function(t,e,n){"use strict";(function(t){n.d(e,"b",(function(){return o})),n.d(e,"c",(function(){return a})),n.d(e,"a",(function(){return c}));var i,r=n("b379");function o(t){t.preventDefault()}function a(t){var e=t.scrollTop,n=t.selector,i=t.duration;if("undefined"===typeof e){var r=document.querySelector(n);if(r){var o=r.getBoundingClientRect(),a=o.top;o.height;e=a+window.pageYOffset}}var s=document.documentElement,c=s.clientHeight,u=s.scrollHeight;function l(t){if(t<=0)window.scrollTo(0,e);else{var n=e-window.scrollY;requestAnimationFrame((function(){window.scrollTo(0,window.scrollY+n/t*10),l(t-10)}))}}e=Math.min(e,u-c),0!==i?window.scrollY!==e&&l(i):s.scrollTop=document.body.scrollTop=e}var s=0;function c(e,n){var o=n.enablePageScroll,a=n.enablePageReachBottom,c=n.onReachBottomDistance,u=n.enableTransparentTitleNView,l=!1,h=!1,d=!0;function f(){var t=document.documentElement.scrollHeight,e=window.innerHeight,n=window.scrollY,i=n>0&&t>e&&n+e+c>=t,r=Math.abs(t-s)>c;return!i||h&&!r?(!i&&h&&(h=!1),!1):(s=t,h=!0,!0)}function p(){var n=getCurrentPages();if(n.length&&n[n.length-1].$page.id===e){var s=window.pageYOffset;o&&Object(r["a"])("onPageScroll",{scrollTop:s},e),u&&t.emit("onPageScroll",{scrollTop:s}),a&&d&&(c()||(i=setTimeout(c,300))),l=!1}function c(){if(f())return Object(r["a"])("onReachBottom",{},e),d=!1,setTimeout((function(){d=!0}),350),!0}}return function(){clearTimeout(i),l||requestAnimationFrame(p),l=!0}}}).call(this,n("31d2"))},"49c2":function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return l}));var i=n("38ce"),r=n("340d"),o=n("96a6"),a=n("0db3");function s(t){var e={};if(t.id&&(e.id=""),t.dataset&&(e.dataset={}),t.rect&&(e.left=0,e.right=0,e.top=0,e.bottom=0),t.size&&(e.width=document.documentElement.clientWidth,e.height=document.documentElement.clientHeight),t.scrollOffset){var n=document.documentElement,i=document.body;e.scrollLeft=n.scrollLeft||i.scrollLeft||0,e.scrollTop=n.scrollTop||i.scrollTop||0,e.scrollHeight=n.scrollHeight||i.scrollHeight||0,e.scrollWidth=n.scrollWidth||i.scrollWidth||0}return e}function c(t,e){var n={},a=Object(o["a"])(),s=a.top;if(e.node){var c=t.tagName.split("-")[1]||t.tagName;c&&(n.node=t.querySelector(c))}if(e.id&&(n.id=t.id),e.dataset&&(n.dataset=Object(i["a"])(t)),e.rect||e.size){var u=t.getBoundingClientRect();e.rect&&(n.left=u.left,n.right=u.right,n.top=u.top-s,n.bottom=u.bottom-s),e.size&&(n.width=u.width,n.height=u.height)}if(Array.isArray(e.properties)){var l=t.__vue__&&t.__vue__.$props;l&&e.properties.forEach((function(t){"string"===typeof t&&(t=Object(r["b"])(t),null!=l[t]&&(n[t]=l[t]))}))}if(e.scrollOffset&&("UNI-SCROLL-VIEW"===t.tagName&&t.__vue__&&t.__vue__.getScrollPosition?Object.assign(n,t.__vue__.getScrollPosition()):(n.scrollLeft=0,n.scrollTop=0,n.scrollHeight=0,n.scrollWidth=0)),Array.isArray(e.computedStyle)){var h=getComputedStyle(t);e.computedStyle.forEach((function(t){n[t]=h[t]}))}return e.context&&t.__vue__&&t.__vue__._getContextInfo&&(n.context=t.__vue__._getContextInfo()),n}function u(t,e,n,i,r){var o=Object(a["a"])(Object(a["b"])(e,t));if(!o||o&&8===o.nodeType)return i?null:[];if(i){var s=o.matches(n)?o:o.querySelector(n);return s?c(s,r):null}var u=[],l=o.querySelectorAll(n);return l&&l.length&&(u=[].map.call(l,(function(t){return c(t,r)}))),o.matches(n)&&u.unshift(c(o,r)),u}function l(e,n){var i,r=e.reqId,o=e.reqs;if(n._isVue)i=n;else{var a=getCurrentPages(),c=a.find((function(t){return t.$page.id===n}));if(!c)throw new Error("Not Found:Page[".concat(n,"]"));i=c.$vm}var l=[];o.forEach((function(t){var e=t.component,n=t.selector,r=t.single,o=t.fields;0===e?l.push(s(o)):l.push(u(i,e,n,r,o))})),t.publishHandler("onRequestComponentInfo",{reqId:r,res:l})}}).call(this,n("31d2"))},"49c7":function(t,e,n){"use strict";var i=n("07d6"),r=n.n(i);r.a},"4ba6":function(t,e,n){"use strict";function i(t,e,n){return t>e-n&&t0){var u=(-n-Math.sqrt(o))/(2*i),l=(-n+Math.sqrt(o))/(2*i),h=(e-u*t)/(l-u),d=t-h;return{x:function(t){var e,n;return t===this._t&&(e=this._powER1T,n=this._powER2T),this._t=t,e||(e=this._powER1T=Math.pow(Math.E,u*t)),n||(n=this._powER2T=Math.pow(Math.E,l*t)),d*e+h*n},dx:function(t){var e,n;return t===this._t&&(e=this._powER1T,n=this._powER2T),this._t=t,e||(e=this._powER1T=Math.pow(Math.E,u*t)),n||(n=this._powER2T=Math.pow(Math.E,l*t)),d*u*e+h*l*n}}}var f=Math.sqrt(4*i*r-n*n)/(2*i),p=-n/2*i,v=t,m=(e-p*t)/f;return{x:function(t){return Math.pow(Math.E,p*t)*(v*Math.cos(f*t)+m*Math.sin(f*t))},dx:function(t){var e=Math.pow(Math.E,p*t),n=Math.cos(f*t),i=Math.sin(f*t);return e*(m*f*n-v*f*i)+p*e*(m*i+v*n)}}},o.prototype.x=function(t){return void 0===t&&(t=((new Date).getTime()-this._startTime)/1e3),this._solution?this._endPosition+this._solution.x(t):0},o.prototype.dx=function(t){return void 0===t&&(t=((new Date).getTime()-this._startTime)/1e3),this._solution?this._solution.dx(t):0},o.prototype.setEnd=function(t,e,n){if(n||(n=(new Date).getTime()),t!==this._endPosition||!r(e,.4)){e=e||0;var i=this._endPosition;this._solution&&(r(e,.4)&&(e=this._solution.dx((n-this._startTime)/1e3)),i=this._solution.x((n-this._startTime)/1e3),r(e,.4)&&(e=0),r(i,.4)&&(i=0),i+=this._endPosition),this._solution&&r(i-t,.4)&&r(e,.4)||(this._endPosition=t,this._solution=this._solve(i-this._endPosition,e),this._startTime=n)}},o.prototype.snap=function(t){this._startTime=(new Date).getTime(),this._endPosition=t,this._solution={x:function(){return 0},dx:function(){return 0}}},o.prototype.done=function(t){return t||(t=(new Date).getTime()),i(this.x(),this._endPosition,.4)&&r(this.dx(),.4)},o.prototype.reconfigure=function(t,e,n){this._m=t,this._k=e,this._c=n,this.done()||(this._solution=this._solve(this.x()-this._endPosition,this.dx()),this._startTime=(new Date).getTime())},o.prototype.springConstant=function(){return this._k},o.prototype.damping=function(){return this._c},o.prototype.configuration=function(){function t(t,e){t.reconfigure(1,e,t.damping())}function e(t,e){t.reconfigure(1,t.springConstant(),e)}return[{label:"Spring Constant",read:this.springConstant.bind(this),write:t.bind(this,this),min:100,max:1e3},{label:"Damping",read:this.damping.bind(this),write:e.bind(this,this),min:1,max:500}]}},"4dc6":function(t,e,n){"use strict";var i=n("655d"),r=n.n(i);r.a},"4ead":function(t,e,n){"use strict";var i=n("a004"),r=n.n(i),o=n("38ce"),a=n("340d");function s(t){t.config.errorHandler=function(e,n,i){var r=Object(a["q"])(e);t.util.warn("Error in ".concat(i,': "').concat("Error"===r?e.toString():e,'"'),n);var s="function"===typeof getApp&&getApp();s&&Object(o["b"])(s.$options,"onError")?s.__call_hook("onError",e):console.error(e)};var e=t.config.isReservedTag;t.config.isReservedTag=function(t){return-1!==r.a.indexOf(t)||e(t)},t.config.ignoredElements=r.a;var n=t.config.getTagNamespace,i=["switch","image","text","view"];t.config.getTagNamespace=function(t){return!~i.indexOf(t)&&n(t)}}var c=n("9602"),u=n("95eb"),l=n("d96c");function h(t){Object.defineProperty(t.prototype,"$page",{get:function(){return getCurrentPages()[0].$page}}),t.prototype.$handleVModelEvent=function(t,e){l["b"].sendUIEvent(this._$id,t,{type:"input",target:{value:e}})},t.prototype.$handleViewEvent=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.stop&&t.stopPropagation(),e.prevent&&t.preventDefault();var n=this.$handleEvent(t),i=this._$id,r=t.$origCurrentTarget||t.currentTarget,o=(r===this.$el&&"page"!==this.$options.mpType?"r-":"")+n.options.nid;if("undefined"===typeof o)return console.error("[".concat(i,"] nid not found"));delete n._processed,delete n.mp,delete n.preventDefault,delete n.stopPropagation,delete n.options,delete n.$origCurrentTarget,l["b"].sendUIEvent(i,o,n)}}n("249f"),e["a"]={install:function(t,e){t.prototype._$getRealPath=u["a"],s(t),c["a"].install(t,e),Object(l["a"])(t),h(t)}}},"4ef5":function(t){t.exports=JSON.parse('{"uni.app.quit":"再按一次退出應用","uni.async.error":"連接服務器超時,點擊屏幕重試","uni.showActionSheet.cancel":"取消","uni.showToast.unpaired":"請注意 showToast 與 hideToast 必須配對使用","uni.showLoading.unpaired":"請注意 showLoading 與 hideLoading 必須配對使用","uni.showModal.cancel":"取消","uni.showModal.confirm":"確定","uni.chooseImage.cancel":"取消","uni.chooseImage.sourceType.album":"從相冊選擇","uni.chooseImage.sourceType.camera":"拍攝","uni.chooseVideo.cancel":"取消","uni.chooseVideo.sourceType.album":"從相冊選擇","uni.chooseVideo.sourceType.camera":"拍攝","uni.chooseFile.notUserActivation":"文件選擇器對話框只能在由用戶激活時顯示","uni.previewImage.cancel":"取消","uni.previewImage.button.save":"保存圖像","uni.previewImage.save.success":"保存圖像到相冊成功","uni.previewImage.save.fail":"保存圖像到相冊失敗","uni.setClipboardData.success":"內容已復制","uni.scanCode.title":"掃碼","uni.scanCode.album":"相冊","uni.scanCode.fail":"識別失敗","uni.scanCode.flash.on":"輕觸照亮","uni.scanCode.flash.off":"輕觸關閉","uni.startSoterAuthentication.authContent":"指紋識別中...","uni.startSoterAuthentication.waitingContent":"無法識別","uni.picker.done":"完成","uni.picker.cancel":"取消","uni.video.danmu":"彈幕","uni.video.volume":"音量","uni.button.feedback.title":"問題反饋","uni.button.feedback.send":"發送","uni.chooseLocation.search":"搜索地點","uni.chooseLocation.cancel":"取消"}')},"4f39":function(t,e,n){"use strict";(function(t){function n(t){return n="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)} +/*! + * Vue.js v2.6.11 + * (c) 2014-2022 Evan You + * Released under the MIT License. + */var i=Object.freeze({});function r(t){return void 0===t||null===t}function o(t){return void 0!==t&&null!==t}function a(t){return!0===t}function s(t){return!1===t}function c(t){return"string"===typeof t||"number"===typeof t||"symbol"===n(t)||"boolean"===typeof t}function u(t){return null!==t&&"object"===n(t)}var l=Object.prototype.toString;function h(t){return"[object Object]"===l.call(t)}function d(t){return"[object RegExp]"===l.call(t)}function f(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function p(t){return o(t)&&"function"===typeof t.then&&"function"===typeof t.catch}function v(t){return null==t?"":Array.isArray(t)||h(t)&&t.toString===l?JSON.stringify(t,null,2):String(t)}function m(t){var e=parseFloat(t);return isNaN(e)?t:e}function g(t,e){for(var n=Object.create(null),i=t.split(","),r=0;r-1)return t.splice(n,1)}}var y=Object.prototype.hasOwnProperty;function w(t,e){return y.call(t,e)}function S(t){var e=Object.create(null);return function(n){var i=e[n];return i||(e[n]=t(n))}}var k=/-(\w)/g,x=S((function(t){return t.replace(k,(function(t,e){return e?e.toUpperCase():""}))})),C=S((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),T=/\B([A-Z])/g,O=S((function(t){return t.replace(T,"-$1").toLowerCase()}));function $(t,e){function n(n){var i=arguments.length;return i?i>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function E(t,e){return t.bind(e)}var I=Function.prototype.bind?E:$;function A(t,e){e=e||0;var n=t.length-e,i=new Array(n);while(n--)i[n]=t[n+e];return i}function M(t,e){for(var n in e)t[n]=e[n];return t}function P(t){for(var e={},n=0;n0,it=tt&&tt.indexOf("edge/")>0,rt=(tt&&tt.indexOf("android"),tt&&/iphone|ipad|ipod|ios/.test(tt)||"ios"===Q),ot=(tt&&/chrome\/\d+/.test(tt),tt&&/phantomjs/.test(tt),tt&&tt.match(/firefox\/(\d+)/)),at={}.watch,st=!1;if(K)try{var ct={};Object.defineProperty(ct,"passive",{get:function(){st=!0}}),window.addEventListener("test-passive",null,ct)}catch(Ma){}var ut=function(){return void 0===Z&&(Z=!K&&!J&&"undefined"!==typeof t&&(t["process"]&&"server"===t["process"].env.VUE_ENV)),Z},lt=K&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ht(t){return"function"===typeof t&&/native code/.test(t.toString())}var dt,ft="undefined"!==typeof Symbol&&ht(Symbol)&&"undefined"!==typeof Reflect&&ht(Reflect.ownKeys);dt="undefined"!==typeof Set&&ht(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var pt=j,vt=0,mt=function(){this.id=vt++,this.subs=[]};function gt(t){mt.SharedObject.targetStack.push(t),mt.SharedObject.target=t,mt.target=t}function _t(){mt.SharedObject.targetStack.pop(),mt.SharedObject.target=mt.SharedObject.targetStack[mt.SharedObject.targetStack.length-1],mt.target=mt.SharedObject.target}mt.prototype.addSub=function(t){this.subs.push(t)},mt.prototype.removeSub=function(t){b(this.subs,t)},mt.prototype.depend=function(){mt.SharedObject.target&&mt.SharedObject.target.addDep(this)},mt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(o&&!w(r,"default"))a=!1;else if(""===a||a===O(t)){var c=te(String,r.type);(c<0||s0&&(i=$e(i,(e||"")+"_"+n),Oe(i[0])&&Oe(u)&&(l[s]=St(u.text+i[0].text),i.shift()),l.push.apply(l,i)):c(i)?Oe(u)?l[s]=St(u.text+i):""!==i&&l.push(St(i)):Oe(i)&&Oe(u)?l[s]=St(u.text+i.text):(a(t._isVList)&&o(i.tag)&&r(i.key)&&o(e)&&(i.key="__vlist"+e+"_"+n+"__"),l.push(i)));return l}function Ee(t){var e=t.$options.provide;e&&(t._provided="function"===typeof e?e.call(t):e)}function Ie(t){var e=Ae(t.$options.inject,t);e&&(Et(!1),Object.keys(e).forEach((function(n){jt(t,n,e[n])})),Et(!0))}function Ae(t,e){if(t){for(var n=Object.create(null),i=ft?Reflect.ownKeys(t):Object.keys(t),r=0;r0,a=t?!!t.$stable:!o,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==i&&s===n.$key&&!o&&!n.$hasNormal)return n;for(var c in r={},t)t[c]&&"$"!==c[0]&&(r[c]=Le(e,c,t[c]))}else r={};for(var u in e)u in r||(r[u]=Ne(e,u));return t&&Object.isExtensible(t)&&(t._normalized=r),U(r,"$stable",a),U(r,"$key",s),U(r,"$hasNormal",o),r}function Le(t,e,i){var r=function(){var t=arguments.length?i.apply(null,arguments):i({});return t=t&&"object"===n(t)&&!Array.isArray(t)?[t]:Te(t),t&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return i.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function Ne(t,e){return function(){return t[e]}}function De(t,e){var n,i,r,a,s;if(Array.isArray(t)||"string"===typeof t)for(n=new Array(t.length),i=0,r=t.length;i1?A(n):n;for(var i=A(arguments,1),r='event handler for "'+t+'"',o=0,a=n.length;odocument.createEvent("Event").timeStamp&&(Zn=function(){return Gn.now()})}function Kn(){var t,e;for(qn=Zn(),Wn=!0,zn.sort((function(t,e){return t.id-e.id})),Un=0;UnUn&&zn[n].id>t.id)n--;zn.splice(n+1,0,t)}else zn.push(t);Yn||(Yn=!0,pe(Kn))}}var ni=0,ii=function(t,e,n,i,r){this.vm=t,r&&(t._watcher=this),t._watchers.push(this),i?(this.deep=!!i.deep,this.user=!!i.user,this.lazy=!!i.lazy,this.sync=!!i.sync,this.before=i.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++ni,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new dt,this.newDepIds=new dt,this.expression="","function"===typeof e?this.getter=e:(this.getter=q(e),this.getter||(this.getter=j)),this.value=this.lazy?void 0:this.get()};ii.prototype.get=function(){var t;gt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(Ma){if(!this.user)throw Ma;ee(Ma,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&me(t),_t(),this.cleanupDeps()}return t},ii.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},ii.prototype.cleanupDeps=function(){var t=this.deps.length;while(t--){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},ii.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():ei(this)},ii.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||u(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(Ma){ee(Ma,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},ii.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},ii.prototype.depend=function(){var t=this.deps.length;while(t--)this.deps[t].depend()},ii.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||b(this.vm._watchers,this);var t=this.deps.length;while(t--)this.deps[t].removeSub(this);this.active=!1}};var ri={enumerable:!0,configurable:!0,get:j,set:j};function oi(t,e,n){ri.get=function(){return this[e][n]},ri.set=function(t){this[e][n]=t},Object.defineProperty(t,n,ri)}function ai(t){t._watchers=[];var e=t.$options;e.props&&si(t,e.props),e.methods&&vi(t,e.methods),e.data?ci(t):Pt(t._data={},!0),e.computed&&hi(t,e.computed),e.watch&&e.watch!==at&&mi(t,e.watch)}function si(t,e){var n=t.$options.propsData||{},i=t._props={},r=t.$options._propKeys=[],o=!t.$parent;o||Et(!1);var a=function(o){r.push(o);var a=Gt(o,e,n,t);jt(i,o,a),o in t||oi(t,"_props",o)};for(var s in e)a(s);Et(!0)}function ci(t){var e=t.$options.data;e=t._data="function"===typeof e?ui(e,t):e||{},h(e)||(e={});var n=Object.keys(e),i=t.$options.props,r=(t.$options.methods,n.length);while(r--){var o=n[r];0,i&&w(i,o)||W(o)||oi(t,"_data",o)}Pt(e,!0)}function ui(t,e){gt();try{return t.call(e,e)}catch(Ma){return ee(Ma,e,"data()"),{}}finally{_t()}}var li={lazy:!0};function hi(t,e){var n=t._computedWatchers=Object.create(null),i=ut();for(var r in e){var o=e[r],a="function"===typeof o?o:o.get;0,i||(n[r]=new ii(t,a||j,j,li)),r in t||di(t,r,o)}}function di(t,e,n){var i=!ut();"function"===typeof n?(ri.get=i?fi(e):pi(n),ri.set=j):(ri.get=n.get?i&&!1!==n.cache?fi(e):pi(n.get):j,ri.set=n.set||j),Object.defineProperty(t,e,ri)}function fi(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),mt.SharedObject.target&&e.depend(),e.value}}function pi(t){return function(){return t.call(this,this)}}function vi(t,e){t.$options.props;for(var n in e)t[n]="function"!==typeof e[n]?j:I(e[n],t)}function mi(t,e){for(var n in e){var i=e[n];if(Array.isArray(i))for(var r=0;r-1)return this;var n=A(arguments,1);return n.unshift(this),"function"===typeof t.install?t.install.apply(t,n):"function"===typeof t&&t.apply(null,n),e.push(t),this}}function Ti(t){t.mixin=function(t){return this.options=qt(this.options,t),this}}function Oi(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,i=n.cid,r=t._Ctor||(t._Ctor={});if(r[i])return r[i];var o=t.name||n.options.name;var a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=qt(n.options,t),a["super"]=n,a.options.props&&$i(a),a.options.computed&&Ei(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,z.forEach((function(t){a[t]=n[t]})),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=M({},a.options),r[i]=a,a}}function $i(t){var e=t.options.props;for(var n in e)oi(t.prototype,"_props",n)}function Ei(t){var e=t.options.computed;for(var n in e)di(t.prototype,n,e[n])}function Ii(t){z.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&h(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"===typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}function Ai(t){return t&&(t.Ctor.options.name||t.tag)}function Mi(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"===typeof t?t.split(",").indexOf(e)>-1:!!d(t)&&t.test(e)}function Pi(t,e){var n=t.cache,i=t.keys,r=t._vnode;for(var o in n){var a=n[o];if(a){var s=Ai(a.componentOptions);s&&!e(s)&&ji(n,o,i,r)}}}function ji(t,e,n,i){var r=t[e];!r||i&&r.tag===i.tag||r.componentInstance.$destroy(),t[e]=null,b(n,e)}yi(xi),_i(xi),In(xi),jn(xi),bn(xi);var Li=[String,RegExp,Array],Ni={name:"keep-alive",abstract:!0,props:{include:Li,exclude:Li,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)ji(this.cache,t,this.keys)},mounted:function(){var t=this;this.$watch("include",(function(e){Pi(t,(function(t){return Mi(e,t)}))})),this.$watch("exclude",(function(e){Pi(t,(function(t){return!Mi(e,t)}))}))},render:function(){var t=this.$slots.default,e=xn(t),n=e&&e.componentOptions;if(n){var i=Ai(n),r=this,o=r.include,a=r.exclude;if(o&&(!i||!Mi(o,i))||a&&i&&Mi(a,i))return e;var s=this,c=s.cache,u=s.keys,l=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;c[l]?(e.componentInstance=c[l].componentInstance,b(u,l),u.push(l)):(c[l]=e,u.push(l),this.max&&u.length>parseInt(this.max)&&ji(c,u[0],u,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}},Di={KeepAlive:Ni};function Ri(t){var e={get:function(){return H}};Object.defineProperty(t,"config",e),t.util={warn:pt,extend:M,mergeOptions:qt,defineReactive:jt},t.set=Lt,t.delete=Nt,t.nextTick=pe,t.observable=function(t){return Pt(t),t},t.options=Object.create(null),z.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,M(t.options.components,Di),Ci(t),Ti(t),Oi(t),Ii(t)}Ri(xi),Object.defineProperty(xi.prototype,"$isServer",{get:ut}),Object.defineProperty(xi.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(xi,"FunctionalRenderContext",{value:Je}),xi.version="2.6.11";var Bi=g("style,class"),Fi=g("input,textarea,option,select,progress"),zi=function(t,e,n){return"value"===n&&Fi(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Vi=g("contenteditable,draggable,spellcheck"),Hi=g("events,caret,typing,plaintext-only"),Yi=function(t,e){return Zi(e)||"false"===e?"false":"contenteditable"===t&&Hi(e)?e:"true"},Wi=g("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Ui="http://www.w3.org/1999/xlink",Xi=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},qi=function(t){return Xi(t)?t.slice(6,t.length):""},Zi=function(t){return null==t||!1===t};function Gi(t){var e=t.data,n=t,i=t;while(o(i.componentInstance))i=i.componentInstance._vnode,i&&i.data&&(e=Ki(i.data,e));while(o(n=n.parent))n&&n.data&&(e=Ki(e,n.data));return Ji(e.staticClass,e.class)}function Ki(t,e){return{staticClass:Qi(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function Ji(t,e){return o(t)||o(e)?Qi(t,tr(e)):""}function Qi(t,e){return t?e?t+" "+e:t:e||""}function tr(t){return Array.isArray(t)?er(t):u(t)?nr(t):"string"===typeof t?t:""}function er(t){for(var e,n="",i=0,r=t.length;i-1?cr[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:cr[t]=/HTMLUnknownElement/.test(e.toString())}var lr=g("text,number,password,search,email,tel,url");function hr(t){if("string"===typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function dr(t,e){var n=document.createElement(t);return"select"!==t||e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n}function fr(t,e){return document.createElementNS(ir[t],e)}function pr(t){return document.createTextNode(t)}function vr(t){return document.createComment(t)}function mr(t,e,n){t.insertBefore(e,n)}function gr(t,e){t.removeChild(e)}function _r(t,e){t.appendChild(e)}function br(t){return t.parentNode}function yr(t){return t.nextSibling}function wr(t){return t.tagName}function Sr(t,e){t.textContent=e}function kr(t,e){t.setAttribute(e,"")}var xr=Object.freeze({createElement:dr,createElementNS:fr,createTextNode:pr,createComment:vr,insertBefore:mr,removeChild:gr,appendChild:_r,parentNode:br,nextSibling:yr,tagName:wr,setTextContent:Sr,setStyleScope:kr}),Cr={create:function(t,e){Tr(e)},update:function(t,e){t.data.ref!==e.data.ref&&(Tr(t,!0),Tr(e))},destroy:function(t){Tr(t,!0)}};function Tr(t,e){var n=t.data.ref;if(o(n)){var i=t.context,r=t.componentInstance||t.elm,a=i.$refs;e?Array.isArray(a[n])?b(a[n],r):a[n]===r&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].indexOf(r)<0&&a[n].push(r):a[n]=[r]:a[n]=r}}var Or=new bt("",{},[]),$r=["create","activate","update","remove","destroy"];function Er(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&o(t.data)===o(e.data)&&Ir(t,e)||a(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&r(e.asyncFactory.error))}function Ir(t,e){if("input"!==t.tag)return!0;var n,i=o(n=t.data)&&o(n=n.attrs)&&n.type,r=o(n=e.data)&&o(n=n.attrs)&&n.type;return i===r||lr(i)&&lr(r)}function Ar(t,e,n){var i,r,a={};for(i=e;i<=n;++i)r=t[i].key,o(r)&&(a[r]=i);return a}function Mr(t){var e,n,i={},s=t.modules,u=t.nodeOps;for(e=0;e<$r.length;++e)for(i[$r[e]]=[],n=0;nv?(h=r(n[_+1])?null:n[_+1].elm,k(t,h,n,p,_,i)):p>_&&C(e,d,v)}function $(t,e,n,i){for(var r=n;r-1?Ur(t,e,n):Wi(e)?Zi(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Vi(e)?t.setAttribute(e,Yi(e,n)):Xi(e)?Zi(n)?t.removeAttributeNS(Ui,qi(e)):t.setAttributeNS(Ui,e,n):Ur(t,e,n)}function Ur(t,e,n){if(Zi(n))t.removeAttribute(e);else{if(et&&!nt&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var i=function e(n){n.stopImmediatePropagation(),t.removeEventListener("input",e)};t.addEventListener("input",i),t.__ieph=!0}t.setAttribute(e,n)}}var Xr={create:Yr,update:Yr};function qr(t,e){var n=e.elm,i=e.data,a=t.data;if(!(r(i.staticClass)&&r(i.class)&&(r(a)||r(a.staticClass)&&r(a.class))&&r(n.__wxsAddClass)&&r(n.__wxsRemoveClass))){var s=Gi(e),c=n._transitionClasses;if(o(c)&&(s=Qi(s,tr(c))),Array.isArray(n.__wxsRemoveClass)&&n.__wxsRemoveClass.length){var u=s.split(/\s+/);n.__wxsRemoveClass.forEach((function(t){var e=u.findIndex((function(e){return e===t}));-1!==e&&u.splice(e,1)})),s=u.join(" "),n.__wxsRemoveClass.length=0}if(n.__wxsAddClass){var l=s.split(/\s+/).concat(n.__wxsAddClass.split(/\s+/)),h=Object.create(null);l.forEach((function(t){t&&(h[t]=1)})),s=Object.keys(h).join(" ")}var d=e.context,f=d.$options.mpOptions&&d.$options.mpOptions.externalClasses;Array.isArray(f)&&f.forEach((function(t){var e=d[x(t)];e&&(s=s.replace(t,e))})),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Zr,Gr={create:qr,update:qr},Kr="__r",Jr="__c";function Qr(t){if(o(t[Kr])){var e=et?"change":"input";t[e]=[].concat(t[Kr],t[e]||[]),delete t[Kr]}o(t[Jr])&&(t.change=[].concat(t[Jr],t.change||[]),delete t[Jr])}function to(t,e,n){var i=Zr;return function r(){var o=e.apply(null,arguments);null!==o&&io(t,r,n,i)}}var eo=ae&&!(ot&&Number(ot[1])<=53);function no(t,e,n,i){if(eo){var r=qn,o=e;e=o._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=r||t.timeStamp<=0||t.target.ownerDocument!==document)return o.apply(this,arguments)}}Zr.addEventListener(t,e,st?{capture:n,passive:i}:n)}function io(t,e,n,i){(i||Zr).removeEventListener(t,e._wrapper||e,n)}function ro(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},i=t.data.on||{};Zr=e.elm,Qr(n),ye(n,i,no,io,to,e.context),Zr=void 0}}var oo,ao={create:ro,update:ro};function so(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,i,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in o(c.__ob__)&&(c=e.data.domProps=M({},c)),s)n in c||(a[n]="");for(n in c){if(i=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),i===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=i;var u=r(i)?"":String(i);co(a,u)&&(a.value=u)}else if("innerHTML"===n&&or(a.tagName)&&r(a[["inner", "HTML"].join("")])){oo=oo||document.createElement("div"),oo[["inner", "HTML"].join("")]=""+i+"";var l=oo.firstChild;while(a.firstChild)a.removeChild(a.firstChild);while(l.firstChild)a.appendChild(l.firstChild)}else if(i!==s[n])try{a[n]=i}catch(Ma){}}}}function co(t,e){return!t.composing&&("OPTION"===t.tagName||uo(t,e)||lo(t,e))}function uo(t,e){var n=!0;try{n=document.activeElement!==t}catch(Ma){}return n&&t.value!==e}function lo(t,e){var n=t.value,i=t._vModifiers;if(o(i)){if(i.number)return m(n)!==m(e);if(i.trim)return n.trim()!==e.trim()}return n!==e}var ho={create:so,update:so},fo=S((function(t){var e={},n=/;(?![^(]*\))/g,i=/:(.+)/;return t.split(n).forEach((function(t){if(t){var n=t.split(i);n.length>1&&(e[n[0].trim()]=n[1].trim())}})),e}));function po(t){var e=vo(t.style);return t.staticStyle?M(t.staticStyle,e):e}function vo(t){return Array.isArray(t)?P(t):"string"===typeof t?fo(t):t}function mo(t,e){var n,i={};if(e){var r=t;while(r.componentInstance)r=r.componentInstance._vnode,r&&r.data&&(n=po(r.data))&&M(i,n)}(n=po(t.data))&&M(i,n);var o=t;while(o=o.parent)o.data&&(n=po(o.data))&&M(i,n);return i}var go,_o=/^--/,bo=/\s*!important$/,yo=/\b([+-]?\d+(\.\d+)?)[r|u]px\b/g,wo=function(t){return"string"===typeof t?t.replace(yo,(function(t,e){return uni.upx2px(e)+"px"})):t},So=/url\(\s*['"](.+?\.(jpg|gif|png))['"]\s*\)/,ko=/url\(\s*([a-zA-Z0-9\.\-\_\/]+?\.(jpg|gif|png))\s*\)/,xo=function(t,e){if("string"===typeof t&&-1!==t.indexOf("url(")){var n=t.match(So)||t.match(ko);n&&3===n.length&&(t=t.replace(n[1],e._$getRealPath(n[1])))}return t},Co=function(t,e,n,i){if(i&&i._$getRealPath&&n&&(n=xo(n,i)),_o.test(e))t.style.setProperty(e,n);else if(bo.test(n))t.style.setProperty(O(e),n.replace(bo,""),"important");else{var r=Oo(e);if(Array.isArray(n))for(var o=0,a=n.length;o-1?e.split(Io).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Mo(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Io).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{var n=" "+(t.getAttribute("class")||"")+" ",i=" "+e+" ";while(n.indexOf(i)>=0)n=n.replace(i," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function Po(t){if(t){if("object"===n(t)){var e={};return!1!==t.css&&M(e,jo(t.name||"v")),M(e,t),e}return"string"===typeof t?jo(t):void 0}}var jo=S((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),Lo=K&&!nt,No="transition",Do="animation",Ro="transition",Bo="transitionend",Fo="animation",zo="animationend";Lo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Ro="WebkitTransition",Bo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Fo="WebkitAnimation",zo="webkitAnimationEnd"));var Vo=K?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Ho(t){Vo((function(){Vo(t)}))}function Yo(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Ao(t,e))}function Wo(t,e){t._transitionClasses&&b(t._transitionClasses,e),Mo(t,e)}function Uo(t,e,n){var i=qo(t,e),r=i.type,o=i.timeout,a=i.propCount;if(!r)return n();var s=r===No?Bo:zo,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c0&&(n=No,l=a,h=o.length):e===Do?u>0&&(n=Do,l=u,h=c.length):(l=Math.max(a,u),n=l>0?a>u?No:Do:null,h=n?n===No?o.length:c.length:0);var d=n===No&&Xo.test(i[Ro+"Property"]);return{type:n,timeout:l,propCount:h,hasTransform:d}}function Zo(t,e){while(t.length1}function ea(t,e){!0!==e.data.show&&Ko(e)}var na=K?{create:ea,activate:ea,remove:function(t,e){!0!==t.data.show?Jo(t,e):e()}}:{},ia=[Hr,Xr,Gr,ao,ho,Eo,na],ra=ia.concat(Fr),oa=Mr({nodeOps:xr,modules:ra});nt&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&fa(t,"input")}));var aa={inserted:function(t,e,n,i){"select"===n.tag?(i.elm&&!i.elm._vOptions?we(n,"postpatch",(function(){aa.componentUpdated(t,e,n)})):sa(t,e,n.context),t._vOptions=[].map.call(t.options,la)):("textarea"===n.tag||lr(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",ha),t.addEventListener("compositionend",da),t.addEventListener("change",da),nt&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){sa(t,e,n.context);var i=t._vOptions,r=t._vOptions=[].map.call(t.options,la);if(r.some((function(t,e){return!D(t,i[e])}))){var o=t.multiple?e.value.some((function(t){return ua(t,r)})):e.value!==e.oldValue&&ua(e.value,r);o&&fa(t,"change")}}}};function sa(t,e,n){ca(t,e,n),(et||it)&&setTimeout((function(){ca(t,e,n)}),0)}function ca(t,e,n){var i=e.value,r=t.multiple;if(!r||Array.isArray(i)){for(var o,a,s=0,c=t.options.length;s-1,a.selected!==o&&(a.selected=o);else if(D(la(a),i))return void(t.selectedIndex!==s&&(t.selectedIndex=s));r||(t.selectedIndex=-1)}}function ua(t,e){return e.every((function(e){return!D(e,t)}))}function la(t){return"_value"in t?t._value:t.value}function ha(t){t.target.composing=!0}function da(t){t.target.composing&&(t.target.composing=!1,fa(t.target,"input"))}function fa(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function pa(t){return!t.componentInstance||t.data&&t.data.transition?t:pa(t.componentInstance._vnode)}var va={bind:function(t,e,n){var i=e.value;n=pa(n);var r=n.data&&n.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;i&&r?(n.data.show=!0,Ko(n,(function(){t.style.display=o}))):t.style.display=i?o:"none"},update:function(t,e,n){var i=e.value,r=e.oldValue;if(!i!==!r){n=pa(n);var o=n.data&&n.data.transition;o?(n.data.show=!0,i?Ko(n,(function(){t.style.display=t.__vOriginalDisplay})):Jo(n,(function(){t.style.display="none"}))):t.style.display=i?t.__vOriginalDisplay:"none"}},unbind:function(t,e,n,i,r){r||(t.style.display=t.__vOriginalDisplay)}},ma={model:aa,show:va},ga={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function _a(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?_a(xn(e.children)):t}function ba(t){var e={},n=t.$options;for(var i in n.propsData)e[i]=t[i];var r=n._parentListeners;for(var o in r)e[x(o)]=r[o];return e}function ya(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function wa(t){while(t=t.parent)if(t.data.transition)return!0}function Sa(t,e){return e.key===t.key&&e.tag===t.tag}var ka=function(t){return t.tag||kn(t)},xa=function(t){return"show"===t.name},Ca={name:"transition",props:ga,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(ka),n.length)){0;var i=this.mode;0;var r=n[0];if(wa(this.$vnode))return r;var o=_a(r);if(!o)return r;if(this._leaving)return ya(t,r);var a="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?a+"comment":a+o.tag:c(o.key)?0===String(o.key).indexOf(a)?o.key:a+o.key:o.key;var s=(o.data||(o.data={})).transition=ba(this),u=this._vnode,l=_a(u);if(o.data.directives&&o.data.directives.some(xa)&&(o.data.show=!0),l&&l.data&&!Sa(o,l)&&!kn(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var h=l.data.transition=M({},s);if("out-in"===i)return this._leaving=!0,we(h,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),ya(t,r);if("in-out"===i){if(kn(o))return u;var d,f=function(){d()};we(s,"afterEnter",f),we(s,"enterCancelled",f),we(h,"delayLeave",(function(t){d=t}))}}return r}}},Ta=M({tag:String,moveClass:String},ga);delete Ta.mode;var Oa={props:Ta,beforeMount:function(){var t=this,e=this._update;this._update=function(n,i){var r=Mn(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,r(),e.call(t,n,i)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),i=this.prevChildren=this.children,r=this.$slots.default||[],o=this.children=[],a=ba(this),s=0;s>>24,v>>>=S,m-=S,S=w>>>16&255,0===S)$[s++]=65535&w;else{if(!(16&S)){if(0===(64&S)){w=g[(65535&w)+(v&(1<>>=S,m-=S),m<15&&(v+=O[o++]<>>24,v>>>=S,m-=S,S=w>>>16&255,!(16&S)){if(0===(64&S)){w=_[(65535&w)+(v&(1<l){t.msg="invalid distance too far back",n.mode=i;break t}if(v>>>=S,m-=S,S=s-c,x>S){if(S=x-S,S>d&&n.sane){t.msg="invalid distance too far back",n.mode=i;break t}if(C=0,T=p,0===f){if(C+=h-S,S2)$[s++]=T[C++],$[s++]=T[C++],$[s++]=T[C++],k-=3;k&&($[s++]=T[C++],k>1&&($[s++]=T[C++]))}else{C=s-x;do{$[s++]=$[C++],$[s++]=$[C++],$[s++]=$[C++],k-=3}while(k>2);k&&($[s++]=$[C++],k>1&&($[s++]=$[C++]))}break}}break}}while(o>3,o-=k,m-=k<<3,v&=(1<4?9:0)}function et(t){var e=t.length;while(--e>=0)t[e]=0}function nt(t){var e=t.state,n=e.pending;n>t.avail_out&&(n=t.avail_out),0!==n&&(r.arraySet(t.output,e.pending_buf,e.pending_out,n,t.next_out),t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,0===e.pending&&(e.pending_out=0))}function it(t,e){o._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,nt(t.strm)}function rt(t,e){t.pending_buf[t.pending++]=e}function ot(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function at(t,e,n,i){var o=t.avail_in;return o>i&&(o=i),0===o?0:(t.avail_in-=o,r.arraySet(e,t.input,t.next_in,o,n),1===t.state.wrap?t.adler=a(t.adler,e,o,n):2===t.state.wrap&&(t.adler=s(t.adler,e,o,n)),t.next_in+=o,t.total_in+=o,o)}function st(t,e){var n,i,r=t.max_chain_length,o=t.strstart,a=t.prev_length,s=t.nice_match,c=t.strstart>t.w_size-B?t.strstart-(t.w_size-B):0,u=t.window,l=t.w_mask,h=t.prev,d=t.strstart+R,f=u[o+a-1],p=u[o+a];t.prev_length>=t.good_match&&(r>>=2),s>t.lookahead&&(s=t.lookahead);do{if(n=e,u[n+a]===p&&u[n+a-1]===f&&u[n]===u[o]&&u[++n]===u[o+1]){o+=2,n++;do{}while(u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&u[++o]===u[++n]&&oa){if(t.match_start=e,a=i,i>=s)break;f=u[o+a-1],p=u[o+a]}}}while((e=h[e&l])>c&&0!==--r);return a<=t.lookahead?a:t.lookahead}function ct(t){var e,n,i,o,a,s=t.w_size;do{if(o=t.window_size-t.lookahead-t.strstart,t.strstart>=s+(s-B)){r.arraySet(t.window,t.window,s,s,0),t.match_start-=s,t.strstart-=s,t.block_start-=s,n=t.hash_size,e=n;do{i=t.head[--e],t.head[e]=i>=s?i-s:0}while(--n);n=s,e=n;do{i=t.prev[--e],t.prev[e]=i>=s?i-s:0}while(--n);o+=s}if(0===t.strm.avail_in)break;if(n=at(t.strm,t.window,t.strstart+t.lookahead,o),t.lookahead+=n,t.lookahead+t.insert>=D){a=t.strstart-t.insert,t.ins_h=t.window[a],t.ins_h=(t.ins_h<t.pending_buf_size-5&&(n=t.pending_buf_size-5);;){if(t.lookahead<=1){if(ct(t),0===t.lookahead&&e===u)return q;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+n;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,it(t,!1),0===t.strm.avail_out))return q;if(t.strstart-t.block_start>=t.w_size-B&&(it(t,!1),0===t.strm.avail_out))return q}return t.insert=0,e===d?(it(t,!0),0===t.strm.avail_out?G:K):(t.strstart>t.block_start&&(it(t,!1),t.strm.avail_out),q)}function lt(t,e){for(var n,i;;){if(t.lookahead=D&&(t.ins_h=(t.ins_h<=D)if(i=o._tr_tally(t,t.strstart-t.match_start,t.match_length-D),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=D){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<=D&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=D-1)),t.prev_length>=D&&t.match_length<=t.prev_length){r=t.strstart+t.lookahead-D,i=o._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-D),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=r&&(t.ins_h=(t.ins_h<=D&&t.strstart>0&&(r=t.strstart-1,i=s[r],i===s[++r]&&i===s[++r]&&i===s[++r])){a=t.strstart+R;do{}while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&rt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=D?(n=o._tr_tally(t,1,t.match_length-D),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=o._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(it(t,!1),0===t.strm.avail_out))return q}return t.insert=0,e===d?(it(t,!0),0===t.strm.avail_out?G:K):t.last_lit&&(it(t,!1),0===t.strm.avail_out)?q:Z}function ft(t,e){for(var n;;){if(0===t.lookahead&&(ct(t),0===t.lookahead)){if(e===u)return q;break}if(t.match_length=0,n=o._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(it(t,!1),0===t.strm.avail_out))return q}return t.insert=0,e===d?(it(t,!0),0===t.strm.avail_out?G:K):t.last_lit&&(it(t,!1),0===t.strm.avail_out)?q:Z}function pt(t,e,n,i,r){this.good_length=t,this.max_lazy=e,this.nice_length=n,this.max_chain=i,this.func=r}function vt(t){t.window_size=2*t.w_size,et(t.head),t.max_lazy_match=i[t.level].max_lazy,t.good_match=i[t.level].good_length,t.nice_match=i[t.level].nice_length,t.max_chain_length=i[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=D-1,t.match_available=0,t.ins_h=0}function mt(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=T,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new r.Buf16(2*L),this.dyn_dtree=new r.Buf16(2*(2*P+1)),this.bl_tree=new r.Buf16(2*(2*j+1)),et(this.dyn_ltree),et(this.dyn_dtree),et(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new r.Buf16(N+1),this.heap=new r.Buf16(2*M+1),et(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new r.Buf16(2*M+1),et(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function gt(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=C,e=t.state,e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?z:U,t.adler=2===e.wrap?0:1,e.last_flush=u,o._tr_init(e),p):Q(t,m)}function _t(t){var e=gt(t);return e===p&&vt(t.state),e}function bt(t,e){return t&&t.state?2!==t.state.wrap?m:(t.state.gzhead=e,p):m}function yt(t,e,n,i,o,a){if(!t)return m;var s=1;if(e===b&&(e=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),o<1||o>O||n!==T||i<8||i>15||e<0||e>9||a<0||a>k)return Q(t,m);8===i&&(i=9);var c=new mt;return t.state=c,c.strm=t,c.wrap=s,c.gzhead=null,c.w_bits=i,c.w_size=1<f||e<0)return t?Q(t,m):m;if(r=t.state,!t.output||!t.input&&0!==t.avail_in||r.status===X&&e!==d)return Q(t,0===t.avail_out?_:m);if(r.strm=t,n=r.last_flush,r.last_flush=e,r.status===z)if(2===r.wrap)t.adler=0,rt(r,31),rt(r,139),rt(r,8),r.gzhead?(rt(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),rt(r,255&r.gzhead.time),rt(r,r.gzhead.time>>8&255),rt(r,r.gzhead.time>>16&255),rt(r,r.gzhead.time>>24&255),rt(r,9===r.level?2:r.strategy>=w||r.level<2?4:0),rt(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(rt(r,255&r.gzhead.extra.length),rt(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(t.adler=s(t.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=V):(rt(r,0),rt(r,0),rt(r,0),rt(r,0),rt(r,0),rt(r,9===r.level?2:r.strategy>=w||r.level<2?4:0),rt(r,J),r.status=U);else{var g=T+(r.w_bits-8<<4)<<8,b=-1;b=r.strategy>=w||r.level<2?0:r.level<6?1:6===r.level?2:3,g|=b<<6,0!==r.strstart&&(g|=F),g+=31-g%31,r.status=U,ot(r,g),0!==r.strstart&&(ot(r,t.adler>>>16),ot(r,65535&t.adler)),t.adler=1}if(r.status===V)if(r.gzhead.extra){a=r.pending;while(r.gzindex<(65535&r.gzhead.extra.length)){if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=s(t.adler,r.pending_buf,r.pending-a,a)),nt(t),a=r.pending,r.pending===r.pending_buf_size))break;rt(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++}r.gzhead.hcrc&&r.pending>a&&(t.adler=s(t.adler,r.pending_buf,r.pending-a,a)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=H)}else r.status=H;if(r.status===H)if(r.gzhead.name){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=s(t.adler,r.pending_buf,r.pending-a,a)),nt(t),a=r.pending,r.pending===r.pending_buf_size)){c=1;break}c=r.gzindexa&&(t.adler=s(t.adler,r.pending_buf,r.pending-a,a)),0===c&&(r.gzindex=0,r.status=Y)}else r.status=Y;if(r.status===Y)if(r.gzhead.comment){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=s(t.adler,r.pending_buf,r.pending-a,a)),nt(t),a=r.pending,r.pending===r.pending_buf_size)){c=1;break}c=r.gzindexa&&(t.adler=s(t.adler,r.pending_buf,r.pending-a,a)),0===c&&(r.status=W)}else r.status=W;if(r.status===W&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&nt(t),r.pending+2<=r.pending_buf_size&&(rt(r,255&t.adler),rt(r,t.adler>>8&255),t.adler=0,r.status=U)):r.status=U),0!==r.pending){if(nt(t),0===t.avail_out)return r.last_flush=-1,p}else if(0===t.avail_in&&tt(e)<=tt(n)&&e!==d)return Q(t,_);if(r.status===X&&0!==t.avail_in)return Q(t,_);if(0!==t.avail_in||0!==r.lookahead||e!==u&&r.status!==X){var y=r.strategy===w?ft(r,e):r.strategy===S?dt(r,e):i[r.level].func(r,e);if(y!==G&&y!==K||(r.status=X),y===q||y===G)return 0===t.avail_out&&(r.last_flush=-1),p;if(y===Z&&(e===l?o._tr_align(r):e!==f&&(o._tr_stored_block(r,0,0,!1),e===h&&(et(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),nt(t),0===t.avail_out))return r.last_flush=-1,p}return e!==d?p:r.wrap<=0?v:(2===r.wrap?(rt(r,255&t.adler),rt(r,t.adler>>8&255),rt(r,t.adler>>16&255),rt(r,t.adler>>24&255),rt(r,255&t.total_in),rt(r,t.total_in>>8&255),rt(r,t.total_in>>16&255),rt(r,t.total_in>>24&255)):(ot(r,t.adler>>>16),ot(r,65535&t.adler)),nt(t),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?p:v)}function kt(t){var e;return t&&t.state?(e=t.state.status,e!==z&&e!==V&&e!==H&&e!==Y&&e!==W&&e!==U&&e!==X?Q(t,m):(t.state=null,e===U?Q(t,g):p)):m}function xt(t,e){var n,i,o,s,c,u,l,h,d=e.length;if(!t||!t.state)return m;if(n=t.state,s=n.wrap,2===s||1===s&&n.status!==z||n.lookahead)return m;1===s&&(t.adler=a(t.adler,e,d,0)),n.wrap=0,d>=n.w_size&&(0===s&&(et(n.head),n.strstart=0,n.block_start=0,n.insert=0),h=new r.Buf8(n.w_size),r.arraySet(h,e,d-n.w_size,n.w_size,0),e=h,d=n.w_size),c=t.avail_in,u=t.next_in,l=t.input,t.avail_in=d,t.next_in=0,t.input=e,ct(n);while(n.lookahead>=D){i=n.strstart,o=n.lookahead-(D-1);do{n.ins_h=(n.ins_h< should have url attribute when using navigateTo, redirectTo, reLaunch or switchTab")}}},l=u,h=(n("9848"),n("8844")),d=Object(h["a"])(l,i,r,!1,null,null,null);e["default"]=d.exports},"5e27":function(t,e,n){"use strict";var i=n("2d10"),r=n.n(i);r.a},6140:function(t,e,n){},6149:function(t,e,n){"use strict";(function(t,i){n.d(e,"a",(function(){return p}));var r=n("340d"),o=n("0372"),a=n("493f"),s=n("005f"),c=n("0834"),u=n("fa3e"),l=!!r["o"]&&{passive:!1};function h(e){var n=e.statusbarHeight,i=e.windowTop,r=e.windowBottom;if(t.__WINDOW_TOP=i,t.__WINDOW_BOTTOM=r,uni.canIUse("css.var")){var o=document.documentElement.style;o.setProperty("--window-left","0px"),o.setProperty("--window-right","0px"),o.setProperty("--window-top",i+"px"),o.setProperty("--window-bottom",r+"px"),o.setProperty("--status-bar-height",n+"px")}}function d(t,e){var n=t.locale,i=t.statusbarHeight,r=t.windowTop,s=t.windowBottom,c=t.disableScroll,d=t.onPageScroll,f=t.onPageReachBottom,p=t.onReachBottomDistance;Object(o["c"])(n),h({statusbarHeight:i,windowTop:r,windowBottom:s}),c?document.addEventListener("touchmove",a["b"],l):(d||f)&&requestAnimationFrame((function(){document.addEventListener("scroll",Object(a["a"])(e,{enablePageScroll:d,enablePageReachBottom:f,onReachBottomDistance:p}))})),!0===(__uniConfig.globalStyle||__uniConfig.window||{}).dynamicRpx&&Object(u["a"])()}function f(){i.publishHandler("webviewReady")}function p(t){t(c["m"],f),t(s["a"],d),t(c["f"],o["c"])}}).call(this,n("0ee4"),n("31d2"))},6183:function(t,e,n){},"62cb":function(t,e,n){},"63b1":function(t,e,n){"use strict";n.r(e);var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("uni-canvas",t._g({attrs:{"canvas-id":t.canvasId,"disable-scroll":t.disableScroll}},t._listeners),[n("canvas",{ref:"canvas",attrs:{width:"300",height:"150"}}),n("div",{staticStyle:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",overflow:"hidden"}},[t._t("default")],2),n("v-uni-resize-sensor",{ref:"sensor",on:{resize:t._resize}})],1)},r=[],o=n("89b6"),a=o["a"],s=(n("ebc5"),n("8844")),c=Object(s["a"])(a,i,r,!1,null,null,null);e["default"]=c.exports},"655d":function(t,e,n){},"65ce":function(t,e,n){"use strict";n.r(e);var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("uni-movable-view",t._g({},t.$listeners),[n("v-uni-resize-sensor",{on:{resize:t.setParent}}),t._t("default")],2)},r=[],o=n("39bd");function a(t,e,n){return t>e-n&&tthis._t&&(t=this._t,this._lastDt=t);var e=this._x_v*t+.5*this._x_a*Math.pow(t,2)+this._x_s,n=this._y_v*t+.5*this._y_a*Math.pow(t,2)+this._y_s;return(this._x_a>0&&ethis._endPositionX)&&(e=this._endPositionX),(this._y_a>0&&nthis._endPositionY)&&(n=this._endPositionY),{x:e,y:n}},u.prototype.ds=function(t){return void 0===t&&(t=((new Date).getTime()-this._startTime)/1e3),t>this._t&&(t=this._t),{dx:this._x_v+this._x_a*t,dy:this._y_v+this._y_a*t}},u.prototype.delta=function(){return{x:-1.5*Math.pow(this._x_v,2)/this._x_a||0,y:-1.5*Math.pow(this._y_v,2)/this._y_a||0}},u.prototype.dt=function(){return-this._x_v/this._x_a},u.prototype.done=function(){var t=a(this.s().x,this._endPositionX)||a(this.s().y,this._endPositionY)||this._lastDt===this._t;return this._lastDt=null,t},u.prototype.setEnd=function(t,e){this._endPositionX=t,this._endPositionY=e},u.prototype.reconfigure=function(t,e){this._m=t,this._f=1e3*e},l.prototype._solve=function(t,e){var n=this._c,i=this._m,r=this._k,o=n*n-4*i*r;if(0===o){var a=-n/(2*i),s=t,c=e/(a*t);return{x:function(t){return(s+c*t)*Math.pow(Math.E,a*t)},dx:function(t){var e=Math.pow(Math.E,a*t);return a*(s+c*t)*e+c*e}}}if(o>0){var u=(-n-Math.sqrt(o))/(2*i),l=(-n+Math.sqrt(o))/(2*i),h=(e-u*t)/(l-u),d=t-h;return{x:function(t){var e,n;return t===this._t&&(e=this._powER1T,n=this._powER2T),this._t=t,e||(e=this._powER1T=Math.pow(Math.E,u*t)),n||(n=this._powER2T=Math.pow(Math.E,l*t)),d*e+h*n},dx:function(t){var e,n;return t===this._t&&(e=this._powER1T,n=this._powER2T),this._t=t,e||(e=this._powER1T=Math.pow(Math.E,u*t)),n||(n=this._powER2T=Math.pow(Math.E,l*t)),d*u*e+h*l*n}}}var f=Math.sqrt(4*i*r-n*n)/(2*i),p=-n/2*i,v=t,m=(e-p*t)/f;return{x:function(t){return Math.pow(Math.E,p*t)*(v*Math.cos(f*t)+m*Math.sin(f*t))},dx:function(t){var e=Math.pow(Math.E,p*t),n=Math.cos(f*t),i=Math.sin(f*t);return e*(m*f*n-v*f*i)+p*e*(m*i+v*n)}}},l.prototype.x=function(t){return void 0===t&&(t=((new Date).getTime()-this._startTime)/1e3),this._solution?this._endPosition+this._solution.x(t):0},l.prototype.dx=function(t){return void 0===t&&(t=((new Date).getTime()-this._startTime)/1e3),this._solution?this._solution.dx(t):0},l.prototype.setEnd=function(t,e,n){if(n||(n=(new Date).getTime()),t!==this._endPosition||!s(e,.1)){e=e||0;var i=this._endPosition;this._solution&&(s(e,.1)&&(e=this._solution.dx((n-this._startTime)/1e3)),i=this._solution.x((n-this._startTime)/1e3),s(e,.1)&&(e=0),s(i,.1)&&(i=0),i+=this._endPosition),this._solution&&s(i-t,.1)&&s(e,.1)||(this._endPosition=t,this._solution=this._solve(i-this._endPosition,e),this._startTime=n)}},l.prototype.snap=function(t){this._startTime=(new Date).getTime(),this._endPosition=t,this._solution={x:function(){return 0},dx:function(){return 0}}},l.prototype.done=function(t){return t||(t=(new Date).getTime()),a(this.x(),this._endPosition,.1)&&s(this.dx(),.1)},l.prototype.reconfigure=function(t,e,n){this._m=t,this._k=e,this._c=n,this.done()||(this._solution=this._solve(this.x()-this._endPosition,this.dx()),this._startTime=(new Date).getTime())},l.prototype.springConstant=function(){return this._k},l.prototype.damping=function(){return this._c},l.prototype.configuration=function(){function t(t,e){t.reconfigure(1,e,t.damping())}function e(t,e){t.reconfigure(1,t.springConstant(),e)}return[{label:"Spring Constant",read:this.springConstant.bind(this),write:t.bind(this,this),min:100,max:1e3},{label:"Damping",read:this.damping.bind(this),write:e.bind(this,this),min:1,max:500}]},h.prototype.setEnd=function(t,e,n,i){var r=(new Date).getTime();this._springX.setEnd(t,i,r),this._springY.setEnd(e,i,r),this._springScale.setEnd(n,i,r),this._startTime=r},h.prototype.x=function(){var t=((new Date).getTime()-this._startTime)/1e3;return{x:this._springX.x(t),y:this._springY.x(t),scale:this._springScale.x(t)}},h.prototype.done=function(){var t=(new Date).getTime();return this._springX.done(t)&&this._springY.done(t)&&this._springScale.done(t)},h.prototype.reconfigure=function(t,e,n){this._springX.reconfigure(t,e,n),this._springY.reconfigure(t,e,n),this._springScale.reconfigure(t,e,n)};var d=n("9ac0"),f=!1;function p(t){f||(f=!0,requestAnimationFrame((function(){t(),f=!1})))}function v(t,e){if(t===e)return 0;var n=t.offsetLeft;return t.offsetParent?n+=v(t.offsetParent,e):0}function m(t,e){if(t===e)return 0;var n=t.offsetTop;return t.offsetParent?n+=m(t.offsetParent,e):0}function g(t,e){return+((1e3*t-1e3*e)/1e3).toFixed(1)}function _(t,e,n){var i=function(t){t&&t.id&&cancelAnimationFrame(t.id),t&&(t.cancelled=!0)},r={id:0,cancelled:!1};function o(e,n,i,r){if(!e||!e.cancelled){i(n);var a=t.done();a||e.cancelled||(e.id=requestAnimationFrame(o.bind(null,e,n,i,r))),a&&r&&r(n)}}return o(r,t,e,n),{cancel:i.bind(null,r),model:t}}var b={name:"MovableView",mixins:[o["a"]],props:{direction:{type:String,default:"none"},inertia:{type:[Boolean,String],default:!1},outOfBounds:{type:[Boolean,String],default:!1},x:{type:[Number,String],default:0},y:{type:[Number,String],default:0},damping:{type:[Number,String],default:20},friction:{type:[Number,String],default:2},disabled:{type:[Boolean,String],default:!1},scale:{type:[Boolean,String],default:!1},scaleMin:{type:[Number,String],default:.1},scaleMax:{type:[Number,String],default:10},scaleValue:{type:[Number,String],default:1},animation:{type:[Boolean,String],default:!0}},data:function(){return{xSync:this._getPx(this.x),ySync:this._getPx(this.y),scaleValueSync:Number(this.scaleValue)||1,width:0,height:0,minX:0,minY:0,maxX:0,maxY:0}},computed:{dampingNumber:function(){var t=Number(this.damping);return isNaN(t)?20:t},frictionNumber:function(){var t=Number(this.friction);return isNaN(t)||t<=0?2:t},scaleMinNumber:function(){var t=Number(this.scaleMin);return isNaN(t)?.1:t},scaleMaxNumber:function(){var t=Number(this.scaleMax);return isNaN(t)?10:t},xMove:function(){return"all"===this.direction||"horizontal"===this.direction},yMove:function(){return"all"===this.direction||"vertical"===this.direction}},watch:{x:function(t){this.xSync=this._getPx(t)},xSync:function(t){this._setX(t)},y:function(t){this.ySync=this._getPx(t)},ySync:function(t){this._setY(t)},disabled:function(){this.__handleTouchStart()},scaleValue:function(t){this.scaleValueSync=Number(t)||0},scaleValueSync:function(t){this._setScaleValue(t)},scaleMinNumber:function(){this._setScaleMinOrMax()},scaleMaxNumber:function(){this._setScaleMinOrMax()}},created:function(){this._offset={x:0,y:0},this._scaleOffset={x:0,y:0},this._translateX=0,this._translateY=0,this._scale=1,this._oldScale=1,this._STD=new h(1,9*Math.pow(this.dampingNumber,2)/40,this.dampingNumber),this._friction=new u(1,this.frictionNumber),this._declineX=new c,this._declineY=new c,this.__touchInfo={historyX:[0,0],historyY:[0,0],historyT:[0,0]}},mounted:function(){this.touchtrack(this.$el,"_onTrack"),this.setParent(),this._friction.reconfigure(1,this.frictionNumber),this._STD.reconfigure(1,9*Math.pow(this.dampingNumber,2)/40,this.dampingNumber),this.$el.style.transformOrigin="center",Object(d["b"])()},methods:{_getPx:function(t){return/\d+[ur]px$/i.test(t)?uni.upx2px(parseFloat(t)):Number(t)||0},_setX:function(t){if(this.xMove){if(t+this._scaleOffset.x===this._translateX)return this._translateX;this._SFA&&this._SFA.cancel(),this._animationTo(t+this._scaleOffset.x,this.ySync+this._scaleOffset.y,this._scale)}return t},_setY:function(t){if(this.yMove){if(t+this._scaleOffset.y===this._translateY)return this._translateY;this._SFA&&this._SFA.cancel(),this._animationTo(this.xSync+this._scaleOffset.x,t+this._scaleOffset.y,this._scale)}return t},_setScaleMinOrMax:function(){if(!this.scale)return!1;this._updateScale(this._scale,!0),this._updateOldScale(this._scale)},_setScaleValue:function(t){return!!this.scale&&(t=this._adjustScale(t),this._updateScale(t,!0),this._updateOldScale(t),t)},__handleTouchStart:function(){this._isScaling||this.disabled||(Object(d["a"])({disable:!0}),this._FA&&this._FA.cancel(),this._SFA&&this._SFA.cancel(),this.__touchInfo.historyX=[0,0],this.__touchInfo.historyY=[0,0],this.__touchInfo.historyT=[0,0],this.xMove&&(this.__baseX=this._translateX),this.yMove&&(this.__baseY=this._translateY),this.$el.style.willChange="transform",this._checkCanMove=null,this._firstMoveDirection=null,this._isTouching=!0)},__handleTouchMove:function(t){var e=this;if(!this._isScaling&&!this.disabled&&this._isTouching){var n=this._translateX,i=this._translateY;if(null===this._firstMoveDirection&&(this._firstMoveDirection=Math.abs(t.detail.dx/t.detail.dy)>1?"htouchmove":"vtouchmove"),this.xMove&&(n=t.detail.dx+this.__baseX,this.__touchInfo.historyX.shift(),this.__touchInfo.historyX.push(n),this.yMove||null!==this._checkCanMove||(this._checkCanMove=Math.abs(t.detail.dx/t.detail.dy)<1)),this.yMove&&(i=t.detail.dy+this.__baseY,this.__touchInfo.historyY.shift(),this.__touchInfo.historyY.push(i),this.xMove||null!==this._checkCanMove||(this._checkCanMove=Math.abs(t.detail.dy/t.detail.dx)<1)),this.__touchInfo.historyT.shift(),this.__touchInfo.historyT.push(t.detail.timeStamp),!this._checkCanMove){t.preventDefault();var r="touch";nthis.maxX&&(this.outOfBounds?(r="touch-out-of-bounds",n=this.maxX+this._declineX.x(n-this.maxX)):n=this.maxX),ithis.maxY&&(this.outOfBounds?(r="touch-out-of-bounds",i=this.maxY+this._declineY.x(i-this.maxY)):i=this.maxY),p((function(){e._setTransform(n,i,e._scale,r)}))}}},__handleTouchEnd:function(){var t=this;if(!this._isScaling&&!this.disabled&&this._isTouching&&(Object(d["a"])({disable:!1}),this.$el.style.willChange="auto",this._isTouching=!1,!this._checkCanMove&&!this._revise("out-of-bounds")&&this.inertia)){var e=1e3*(this.__touchInfo.historyX[1]-this.__touchInfo.historyX[0])/(this.__touchInfo.historyT[1]-this.__touchInfo.historyT[0]),n=1e3*(this.__touchInfo.historyY[1]-this.__touchInfo.historyY[0])/(this.__touchInfo.historyT[1]-this.__touchInfo.historyT[0]);this._friction.setV(e,n),this._friction.setS(this._translateX,this._translateY);var i=this._friction.delta().x,r=this._friction.delta().y,o=i+this._translateX,a=r+this._translateY;othis.maxX&&(o=this.maxX,a=this._translateY+(this.maxX-this._translateX)*r/i),athis.maxY&&(a=this.maxY,o=this._translateX+(this.maxY-this._translateY)*i/r),this._friction.setEnd(o,a),this._FA=_(this._friction,(function(){var e=t._friction.s(),n=e.x,i=e.y;t._setTransform(n,i,t._scale,"friction")}),(function(){t._FA.cancel()}))}},_onTrack:function(t){switch(t.detail.state){case"start":this.__handleTouchStart();break;case"move":this.__handleTouchMove(t);break;case"end":this.__handleTouchEnd()}},_getLimitXY:function(t,e){var n=!1;return t>this.maxX?(t=this.maxX,n=!0):tthis.maxY?(e=this.maxY,n=!0):e3&&void 0!==arguments[3]?arguments[3]:"",r=arguments.length>4?arguments[4]:void 0,o=arguments.length>5?arguments[5]:void 0;null!==t&&"NaN"!==t.toString()&&"number"===typeof t||(t=this._translateX||0),null!==e&&"NaN"!==e.toString()&&"number"===typeof e||(e=this._translateY||0),t=Number(t.toFixed(1)),e=Number(e.toFixed(1)),n=Number(n.toFixed(1)),this._translateX===t&&this._translateY===e||r||this.$trigger("change",{},{x:g(t,this._scaleOffset.x),y:g(e,this._scaleOffset.y),source:i}),this.scale||(n=this._scale),n=this._adjustScale(n),n=+n.toFixed(3),o&&n!==this._scale&&this.$trigger("scale",{},{x:t,y:e,scale:n});var a="translateX("+t+"px) translateY("+e+"px) translateZ(0px) scale("+n+")";this.$el.style.transform=a,this.$el.style.webkitTransform=a,this._translateX=t,this._translateY=e,this._scale=n}}},y=b,w=(n("5e27"),n("8844")),S=Object(w["a"])(y,i,r,!1,null,null,null);e["default"]=S.exports},"65db":function(t,e,n){},6632:function(t,e,n){"use strict";var i=n("82de"),r=4,o=0,a=1,s=2;function c(t){var e=t.length;while(--e>=0)t[e]=0}var u=0,l=1,h=2,d=3,f=258,p=29,v=256,m=v+1+p,g=30,_=19,b=2*m+1,y=15,w=16,S=7,k=256,x=16,C=17,T=18,O=[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],$=[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],E=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],I=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],A=512,M=new Array(2*(m+2));c(M);var P=new Array(2*g);c(P);var j=new Array(A);c(j);var L=new Array(f-d+1);c(L);var N=new Array(p);c(N);var D,R,B,F=new Array(g);function z(t,e,n,i,r){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=t&&t.length}function V(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function H(t){return t<256?j[t]:j[256+(t>>>7)]}function Y(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function W(t,e,n){t.bi_valid>w-n?(t.bi_buf|=e<>w-t.bi_valid,t.bi_valid+=n-w):(t.bi_buf|=e<>>=1,n<<=1}while(--e>0);return n>>>1}function q(t){16===t.bi_valid?(Y(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}function Z(t,e){var n,i,r,o,a,s,c=e.dyn_tree,u=e.max_code,l=e.stat_desc.static_tree,h=e.stat_desc.has_stree,d=e.stat_desc.extra_bits,f=e.stat_desc.extra_base,p=e.stat_desc.max_length,v=0;for(o=0;o<=y;o++)t.bl_count[o]=0;for(c[2*t.heap[t.heap_max]+1]=0,n=t.heap_max+1;np&&(o=p,v++),c[2*i+1]=o,i>u||(t.bl_count[o]++,a=0,i>=f&&(a=d[i-f]),s=c[2*i],t.opt_len+=s*(o+a),h&&(t.static_len+=s*(l[2*i+1]+a)));if(0!==v){do{o=p-1;while(0===t.bl_count[o])o--;t.bl_count[o]--,t.bl_count[o+1]+=2,t.bl_count[p]--,v-=2}while(v>0);for(o=p;0!==o;o--){i=t.bl_count[o];while(0!==i)r=t.heap[--n],r>u||(c[2*r+1]!==o&&(t.opt_len+=(o-c[2*r+1])*c[2*r],c[2*r+1]=o),i--)}}}function G(t,e,n){var i,r,o=new Array(y+1),a=0;for(i=1;i<=y;i++)o[i]=a=a+n[i-1]<<1;for(r=0;r<=e;r++){var s=t[2*r+1];0!==s&&(t[2*r]=X(o[s]++,s))}}function K(){var t,e,n,i,r,o=new Array(y+1);for(n=0,i=0;i>=7;i8?Y(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function tt(t,e,n,r){Q(t),r&&(Y(t,n),Y(t,~n)),i.arraySet(t.pending_buf,t.window,e,n,t.pending),t.pending+=n}function et(t,e,n,i){var r=2*e,o=2*n;return t[r]>1;n>=1;n--)nt(t,o,n);r=c;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],nt(t,o,1),i=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=i,o[2*r]=o[2*n]+o[2*i],t.depth[r]=(t.depth[n]>=t.depth[i]?t.depth[n]:t.depth[i])+1,o[2*n+1]=o[2*i+1]=r,t.heap[1]=r++,nt(t,o,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],Z(t,e),G(o,u,t.bl_count)}function ot(t,e,n){var i,r,o=-1,a=e[1],s=0,c=7,u=4;for(0===a&&(c=138,u=3),e[2*(n+1)+1]=65535,i=0;i<=n;i++)r=a,a=e[2*(i+1)+1],++s=3;e--)if(0!==t.bl_tree[2*I[e]+1])break;return t.opt_len+=3*(e+1)+5+5+4,e}function ct(t,e,n,i){var r;for(W(t,e-257,5),W(t,n-1,5),W(t,i-4,4),r=0;r>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return o;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return a;for(e=32;e0?(t.strm.data_type===s&&(t.strm.data_type=ut(t)),rt(t,t.l_desc),rt(t,t.d_desc),c=st(t),o=t.opt_len+3+7>>>3,a=t.static_len+3+7>>>3,a<=o&&(o=a)):o=a=n+5,n+4<=o&&-1!==e?dt(t,e,n,i):t.strategy===r||a===o?(W(t,(l<<1)+(i?1:0),3),it(t,M,P)):(W(t,(h<<1)+(i?1:0),3),ct(t,t.l_desc.max_code+1,t.d_desc.max_code+1,c+1),it(t,t.dyn_ltree,t.dyn_dtree)),J(t),i&&Q(t)}function vt(t,e,n){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(L[n]+v+1)]++,t.dyn_dtree[2*H(e)]++),t.last_lit===t.lit_bufsize-1}e._tr_init=ht,e._tr_stored_block=dt,e._tr_flush_block=pt,e._tr_tally=vt,e._tr_align=ft},6729:function(t,e,n){},"6a2e":function(t,e,n){},"76d7":function(t,e,n){"use strict";var i=n("3934"),r=n.n(i);r.a},"7aa4":function(t,e,n){},"7aa9":function(t,e,n){"use strict";n.r(e);var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("uni-rich-text",t._g({},t.$listeners),[n("div",{ref:"content"},[n("v-uni-resize-sensor",{ref:"sensor",on:{resize:function(e){return t._updateView()}}})],1)])},r=[],o=n("d97d");function a(t){return t.replace(/<\?xml.*\?>\n/,"").replace(/\n/,"").replace(/\n/,"")}function s(t){return t.reduce((function(t,e){var n=e.value,i=e.name;return n.match(/ /)&&-1===["style","src"].indexOf(i)&&(n=n.split(" ")),t[i]?Array.isArray(t[i])?t[i].push(n):t[i]=[t[i],n]:t[i]=n,t}),{})}function c(t){t=a(t);var e=[],n={node:"root",children:[]};return Object(o["a"])(t,{start:function(t,i,r){var o={name:t};if(0!==i.length&&(o.attrs=s(i)),r){var a=e[0]||n;a.children||(a.children=[]),a.children.push(o)}else e.unshift(o)},end:function(t){var i=e.shift();if(i.name!==t&&console.error("invalid state: mismatch end tag"),0===e.length)n.children.push(i);else{var r=e[0];r.children||(r.children=[]),r.children.push(i)}},chars:function(t){var i={type:"text",text:t};if(0===e.length)n.children.push(i);else{var r=e[0];r.children||(r.children=[]),r.children.push(i)}},comment:function(t){var n={node:"comment",text:t},i=e[0];i&&(i.children||(i.children=[]),i.children.push(n))}}),n.children}var u=n("340d"),l=n("95eb"),h={a:"",abbr:"",address:"",article:"",aside:"",b:"",bdi:"",bdo:["dir"],big:"",blockquote:"",br:"",caption:"",center:"",cite:"",code:"",col:["span","width"],colgroup:["span","width"],dd:"",del:"",div:"",dl:"",dt:"",em:"",fieldset:"",font:"",footer:"",h1:"",h2:"",h3:"",h4:"",h5:"",h6:"",header:"",hr:"",i:"",img:["alt","src","height","width"],ins:"",label:"",legend:"",li:"",mark:"",nav:"",ol:["start","type"],p:"",pre:"",q:"",rt:"",ruby:"",s:"",section:"",small:"",span:"",strong:"",sub:"",sup:"",table:["width"],tbody:"",td:["colspan","height","rowspan","width"],tfoot:"",th:["colspan","height","rowspan","width"],thead:"",tr:["colspan","height","rowspan","width"],tt:"",u:"",ul:""},d={amp:"&",gt:">",lt:"<",nbsp:" ",quot:'"',apos:"'"};function f(t){return t.replace(/&(([a-zA-Z]+)|(#x{0,1}[\da-zA-Z]+));/gi,(function(t,e){if(Object(u["g"])(d,e)&&d[e])return d[e];if(/^#[0-9]{1,4}$/.test(e))return String.fromCharCode(e.slice(1));if(/^#x[0-9a-f]{1,4}$/i.test(e))return String.fromCharCode("0"+e.slice(1));var n=document.createElement("div");return n[["inner", "HTML"].join("")]=t,n.innerText||n.textContent}))}function p(t,e,n){return"img"===t&&"src"===e?Object(l["a"])(n):n}function v(t,e,n,i){return t.forEach((function(t){if(Object(u["i"])(t))if(Object(u["g"])(t,"type")&&"node"!==t.type)"text"===t.type&&"string"===typeof t.text&&""!==t.text&&e.appendChild(document.createTextNode(f(t.text)));else{if("string"!==typeof t.name||!t.name)return;var r=t.name.toLowerCase();if(!Object(u["g"])(h,r))return;var o=document.createElement(r);if(!o)return;var a=t.attrs;if(n&&o.setAttribute(n,""),Object(u["i"])(a)){var s=h[r]||[];Object.keys(a).forEach((function(t){var e=a[t];switch(t){case"class":Array.isArray(e)&&(e=e.join(" "));case"style":o.setAttribute(t,e);break;default:-1!==s.indexOf(t)&&o.setAttribute(t,p(r,t,e))}}))}m(t,o,i);var c=t.children;Array.isArray(c)&&c.length&&v(t.children,o,n,i),e.appendChild(o)}})),e}function m(t,e,n){["a","img"].includes(t.name)&&n&&(e.setAttribute("onClick","return false;"),e.addEventListener("click",(function(e){n(e,{node:t}),e.stopPropagation()}),!0))}var g={name:"RichText",props:{nodes:{type:[Array,String],default:function(){return[]}}},watch:{nodes:function(t){this._renderNodes(t)}},mounted:function(){this._renderNodes(this.nodes)},methods:{_renderNodes:function(t){var e="",n=this;while(n)!e&&(e=n.$options._scopeId),n=n.$parent;var i=!!this.$listeners.itemclick;if(this._isMounted){"string"===typeof t&&(t=c(t));var r=v(t,document.createDocumentFragment(),e,i&&this.triggerItemClick);r.appendChild(this.$refs.sensor.$el);var o=this.$refs.content;o[["inner", "HTML"].join("")]="",o.appendChild(r)}},_updateView:function(){window.dispatchEvent(new CustomEvent("updateview"))},triggerItemClick:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.$trigger("itemclick",t,e)}}},_=g,b=n("8844"),y=Object(b["a"])(_,i,r,!1,null,null,null);e["default"]=y.exports},"7cb0":function(t,e,n){"use strict";n.r(e);var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("uni-web-view",t._g({},t.$listeners))},r=[],o=n("94b3"),a=o["a"],s=(n("bdb5"),n("8844")),c=Object(s["a"])(a,i,r,!1,null,null,null);e["default"]=c.exports},"7cce":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return c}));var i=n("340d"),r=function(){var t=document.createElement("canvas");t.height=t.width=0;var e=t.getContext("2d"),n=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/n}(),o=function(t,e){for(var n in t)Object(i["g"])(t,n)&&e(t[n],n)},a={fillRect:"all",clearRect:"all",strokeRect:"all",moveTo:"all",lineTo:"all",arc:[0,1,2],arcTo:"all",bezierCurveTo:"all",isPointinPath:"all",isPointinStroke:"all",quadraticCurveTo:"all",rect:"all",translate:"all",createRadialGradient:"all",createLinearGradient:"all",transform:[4,5],setTransform:[4,5]},s=CanvasRenderingContext2D.prototype;function c(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t.width=t.offsetWidth*(e?r:1),t.height=t.offsetHeight*(e?r:1),t.__hidpi__=e,t.__context2d__=t.getContext("2d"),t.__context2d__.__hidpi__=e}s.drawImageByCanvas=function(t){return function(e,n,i,o,a,s,c,u,l,h){if(!this.__hidpi__)return t.apply(this,arguments);n*=r,i*=r,o*=r,a*=r,s*=r,c*=r,u=h?u*r:u,l=h?l*r:l,t.call(this,e,n,i,o,a,s,c,u,l)}}(s.drawImage),1!==r&&(o(a,(function(t,e){s[e]=function(e){return function(){if(!this.__hidpi__)return e.apply(this,arguments);var n=Array.prototype.slice.call(arguments);if("all"===t)n=n.map((function(t){return t*r}));else if(Array.isArray(t))for(var i=0;i>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function ot(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function at(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=S,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new i.Buf32(tt),e.distcode=e.distdyn=new i.Buf32(et),e.sane=1,e.back=-1,p):g}function st(t){var e;return t&&t.state?(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,at(t)):g}function ct(t,e){var n,i;return t&&t.state?(i=t.state,e<0?(n=0,e=-e):(n=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?g:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=n,i.wbits=e,st(t))):g}function ut(t,e){var n,i;return t?(i=new ot,t.state=i,i.window=null,n=ct(t,e),n!==p&&(t.state=null),n):g}function lt(t){return ut(t,it)}var ht,dt,ft=!0;function pt(t){if(ft){var e;ht=new i.Buf32(512),dt=new i.Buf32(32),e=0;while(e<144)t.lens[e++]=8;while(e<256)t.lens[e++]=9;while(e<280)t.lens[e++]=7;while(e<288)t.lens[e++]=8;s(u,t.lens,0,288,ht,0,t.work,{bits:9}),e=0;while(e<32)t.lens[e++]=5;s(l,t.lens,0,32,dt,0,t.work,{bits:5}),ft=!1}t.lencode=ht,t.lenbits=9,t.distcode=dt,t.distbits=5}function vt(t,e,n,r){var o,a=t.state;return null===a.window&&(a.wsize=1<=a.wsize?(i.arraySet(a.window,e,n-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(o=a.wsize-a.wnext,o>r&&(o=r),i.arraySet(a.window,e,n-r,o,a.wnext),r-=o,r?(i.arraySet(a.window,e,n-r,r,0),a.wnext=r,a.whave=a.wsize):(a.wnext+=o,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,n.check=o(n.check,Ot,2,0),st=0,ct=0,n.mode=k;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&st)<<8)+(st>>8))%31){t.msg="incorrect header check",n.mode=K;break}if((15&st)!==w){t.msg="unknown compression method",n.mode=K;break}if(st>>>=4,ct-=4,St=8+(15&st),0===n.wbits)n.wbits=St;else if(St>n.wbits){t.msg="invalid window size",n.mode=K;break}n.dmax=1<>8&1),512&n.flags&&(Ot[0]=255&st,Ot[1]=st>>>8&255,n.check=o(n.check,Ot,2,0)),st=0,ct=0,n.mode=x;case x:while(ct<32){if(0===ot)break t;ot--,st+=tt[nt++]<>>8&255,Ot[2]=st>>>16&255,Ot[3]=st>>>24&255,n.check=o(n.check,Ot,4,0)),st=0,ct=0,n.mode=C;case C:while(ct<16){if(0===ot)break t;ot--,st+=tt[nt++]<>8),512&n.flags&&(Ot[0]=255&st,Ot[1]=st>>>8&255,n.check=o(n.check,Ot,2,0)),st=0,ct=0,n.mode=T;case T:if(1024&n.flags){while(ct<16){if(0===ot)break t;ot--,st+=tt[nt++]<>>8&255,n.check=o(n.check,Ot,2,0)),st=0,ct=0}else n.head&&(n.head.extra=null);n.mode=O;case O:if(1024&n.flags&&(ht=n.length,ht>ot&&(ht=ot),ht&&(n.head&&(St=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),i.arraySet(n.head.extra,tt,nt,ht,St)),512&n.flags&&(n.check=o(n.check,tt,ht,nt)),ot-=ht,nt+=ht,n.length-=ht),n.length))break t;n.length=0,n.mode=$;case $:if(2048&n.flags){if(0===ot)break t;ht=0;do{St=tt[nt+ht++],n.head&&St&&n.length<65536&&(n.head.name+=String.fromCharCode(St))}while(St&&ht>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=P;break;case A:while(ct<32){if(0===ot)break t;ot--,st+=tt[nt++]<>>=7&ct,ct-=7&ct,n.mode=q;break}while(ct<3){if(0===ot)break t;ot--,st+=tt[nt++]<>>=1,ct-=1,3&st){case 0:n.mode=L;break;case 1:if(pt(n),n.mode=z,e===f){st>>>=2,ct-=2;break t}break;case 2:n.mode=R;break;case 3:t.msg="invalid block type",n.mode=K}st>>>=2,ct-=2;break;case L:st>>>=7&ct,ct-=7&ct;while(ct<32){if(0===ot)break t;ot--,st+=tt[nt++]<>>16^65535)){t.msg="invalid stored block lengths",n.mode=K;break}if(n.length=65535&st,st=0,ct=0,n.mode=N,e===f)break t;case N:n.mode=D;case D:if(ht=n.length,ht){if(ht>ot&&(ht=ot),ht>at&&(ht=at),0===ht)break t;i.arraySet(et,tt,nt,ht,it),ot-=ht,nt+=ht,at-=ht,it+=ht,n.length-=ht;break}n.mode=P;break;case R:while(ct<14){if(0===ot)break t;ot--,st+=tt[nt++]<>>=5,ct-=5,n.ndist=1+(31&st),st>>>=5,ct-=5,n.ncode=4+(15&st),st>>>=4,ct-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=K;break}n.have=0,n.mode=B;case B:while(n.have>>=3,ct-=3}while(n.have<19)n.lens[$t[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,xt={bits:n.lenbits},kt=s(c,n.lens,0,19,n.lencode,0,n.work,xt),n.lenbits=xt.bits,kt){t.msg="invalid code lengths set",n.mode=K;break}n.have=0,n.mode=F;case F:while(n.have>>24,gt=Tt>>>16&255,_t=65535&Tt,mt<=ct)break;if(0===ot)break t;ot--,st+=tt[nt++]<>>=mt,ct-=mt,n.lens[n.have++]=_t;else{if(16===_t){Ct=mt+2;while(ct>>=mt,ct-=mt,0===n.have){t.msg="invalid bit length repeat",n.mode=K;break}St=n.lens[n.have-1],ht=3+(3&st),st>>>=2,ct-=2}else if(17===_t){Ct=mt+3;while(ct>>=mt,ct-=mt,St=0,ht=3+(7&st),st>>>=3,ct-=3}else{Ct=mt+7;while(ct>>=mt,ct-=mt,St=0,ht=11+(127&st),st>>>=7,ct-=7}if(n.have+ht>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=K;break}while(ht--)n.lens[n.have++]=St}}if(n.mode===K)break;if(0===n.lens[256]){t.msg="invalid code -- missing end-of-block",n.mode=K;break}if(n.lenbits=9,xt={bits:n.lenbits},kt=s(u,n.lens,0,n.nlen,n.lencode,0,n.work,xt),n.lenbits=xt.bits,kt){t.msg="invalid literal/lengths set",n.mode=K;break}if(n.distbits=6,n.distcode=n.distdyn,xt={bits:n.distbits},kt=s(l,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,xt),n.distbits=xt.bits,kt){t.msg="invalid distances set",n.mode=K;break}if(n.mode=z,e===f)break t;case z:n.mode=V;case V:if(ot>=6&&at>=258){t.next_out=it,t.avail_out=at,t.next_in=nt,t.avail_in=ot,n.hold=st,n.bits=ct,a(t,lt),it=t.next_out,et=t.output,at=t.avail_out,nt=t.next_in,tt=t.input,ot=t.avail_in,st=n.hold,ct=n.bits,n.mode===P&&(n.back=-1);break}for(n.back=0;;){if(Tt=n.lencode[st&(1<>>24,gt=Tt>>>16&255,_t=65535&Tt,mt<=ct)break;if(0===ot)break t;ot--,st+=tt[nt++]<>bt)],mt=Tt>>>24,gt=Tt>>>16&255,_t=65535&Tt,bt+mt<=ct)break;if(0===ot)break t;ot--,st+=tt[nt++]<>>=bt,ct-=bt,n.back+=bt}if(st>>>=mt,ct-=mt,n.back+=mt,n.length=_t,0===gt){n.mode=X;break}if(32>){n.back=-1,n.mode=P;break}if(64>){t.msg="invalid literal/length code",n.mode=K;break}n.extra=15>,n.mode=H;case H:if(n.extra){Ct=n.extra;while(ct>>=n.extra,ct-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Y;case Y:for(;;){if(Tt=n.distcode[st&(1<>>24,gt=Tt>>>16&255,_t=65535&Tt,mt<=ct)break;if(0===ot)break t;ot--,st+=tt[nt++]<>bt)],mt=Tt>>>24,gt=Tt>>>16&255,_t=65535&Tt,bt+mt<=ct)break;if(0===ot)break t;ot--,st+=tt[nt++]<>>=bt,ct-=bt,n.back+=bt}if(st>>>=mt,ct-=mt,n.back+=mt,64>){t.msg="invalid distance code",n.mode=K;break}n.offset=_t,n.extra=15>,n.mode=W;case W:if(n.extra){Ct=n.extra;while(ct>>=n.extra,ct-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=K;break}n.mode=U;case U:if(0===at)break t;if(ht=lt-at,n.offset>ht){if(ht=n.offset-ht,ht>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=K;break}ht>n.wnext?(ht-=n.wnext,dt=n.wsize-ht):dt=n.wnext-ht,ht>n.length&&(ht=n.length),ft=n.window}else ft=et,dt=it-n.offset,ht=n.length;ht>at&&(ht=at),at-=ht,n.length-=ht;do{et[it++]=ft[dt++]}while(--ht);0===n.length&&(n.mode=V);break;case X:if(0===at)break t;et[it++]=n.length,at--,n.mode=V;break;case q:if(n.wrap){while(ct<32){if(0===ot)break t;ot--,st|=tt[nt++]<10&&(t=2*Math.round(t/2)),t}var s={name:"Image",props:{src:{type:String,default:""},mode:{type:String,default:"scaleToFill"},lazyLoad:{type:[Boolean,String],default:!1},draggable:{type:Boolean,default:!1}},data:function(){return{originalWidth:0,originalHeight:0,originalStyle:{width:"",height:""},contentPath:""}},computed:{ratio:function(){return this.originalWidth&&this.originalHeight?this.originalWidth/this.originalHeight:0},style:function(){var t="auto",e="",n="no-repeat";switch(this.mode){case"aspectFit":t="contain",e="center center";break;case"aspectFill":t="cover",e="center center";break;case"widthFix":case"heightFix":t="100% 100%";break;case"top":e="center top";break;case"bottom":e="center bottom";break;case"center":e="center center";break;case"left":e="left center";break;case"right":e="right center";break;case"top left":e="left top";break;case"top right":e="right top";break;case"bottom left":e="left bottom";break;case"bottom right":e="right bottom";break;default:t="100% 100%",e="0% 0%";break}return{"background-image":this.contentPath?'url("'.concat(this.contentPath,'")'):"none","background-position":e,"background-size":t,"background-repeat":n}}},watch:{src:function(t,e){this._loadImage()},mode:function(t,e){"widthFix"!==e&&"heightFix"!==e||this._resetSize(),"widthFix"!==t&&"heightFix"!==t||this._fixSize()},contentPath:function(t){!t&&this.__img&&(this.__img.remove(),delete this.__img)}},mounted:function(){this.originalStyle.width=this.$el.style.width||"",this.originalStyle.height=this.$el.style.height||"",this._loadImage()},beforeDestroy:function(){this._clearImage()},methods:{_fixSize:function(){if(this.ratio){var t=this.$el;if("widthFix"===this.mode){var e=t.offsetWidth;e&&(t.style.height=a(e/this.ratio)+"px")}else if("heightFix"===this.mode){var n=t.offsetHeight;n&&(t.style.width=a(n*this.ratio)+"px")}}window.dispatchEvent(new CustomEvent("updateview"))},_resetSize:function(){this.$el.style.width=this.originalStyle.width,this.$el.style.height=this.originalStyle.height},_resetData:function(){this.originalWidth=0,this.originalHeight=0,this.contentPath=""},_loadImage:function(){var t=this,e=this.$getRealPath(this.src);if(e){var n=this._img=this._img||new Image;n.onload=function(i){t._img=null;var r=t.originalWidth=n.width,o=t.originalHeight=n.height;t._fixSize(),t.contentPath=e,n.draggable=t.draggable,t.__img&&t.__img.remove(),t.__img=n,t.$el.appendChild(n),t.$trigger("load",i,{width:r,height:o})},n.onerror=function(e){t._img=null,t._resetData(),t.$trigger("error",e,{errMsg:"GET ".concat(t.src," 404 (Not Found)")})},n.src=e}else this._clearImage(),this._resetData()},_clearImage:function(){var t=this._img;t&&(t.onload=null,t.onerror=null,this._img=null)}}},c=s,u=(n("4dc6"),n("8844")),l=Object(u["a"])(c,i,r,!1,null,null,null);e["default"]=l.exports},"801b":function(t,e,n){"use strict";n.r(e);var i=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("uni-progress",t._g({staticClass:"uni-progress"},t.$listeners),[n("div",{staticClass:"uni-progress-bar",style:t.outerBarStyle},[n("div",{staticClass:"uni-progress-inner-bar",style:t.innerBarStyle})]),t.showInfo?[n("p",{staticClass:"uni-progress-info"},[t._v(" "+t._s(t.currentPercent)+"% ")])]:t._e()],2)},r=[],o={activeColor:"#007AFF",backgroundColor:"#EBEBEB",activeMode:"backwards"},a={name:"Progress",props:{percent:{type:[Number,String],default:0,validator:function(t){return!isNaN(parseFloat(t,10))}},showInfo:{type:[Boolean,String],default:!1},strokeWidth:{type:[Number,String],default:6,validator:function(t){return!isNaN(parseFloat(t,10))}},color:{type:String,default:o.activeColor},activeColor:{type:String,default:o.activeColor},backgroundColor:{type:String,default:o.backgroundColor},active:{type:[Boolean,String],default:!1},activeMode:{type:String,default:o.activeMode},duration:{type:[Number,String],default:30,validator:function(t){return!isNaN(parseFloat(t,10))}}},data:function(){return{currentPercent:0,strokeTimer:0,lastPercent:0}},computed:{outerBarStyle:function(){return"background-color: ".concat(this.backgroundColor,"; height: ").concat(this.strokeWidth,"px;")},innerBarStyle:function(){var t="";return t=this.color!==o.activeColor&&this.activeColor===o.activeColor?this.color:this.activeColor,"width: ".concat(this.currentPercent,"%;background-color: ").concat(t)},realPercent:function(){var t=parseFloat(this.percent,10);return t<0&&(t=0),t>100&&(t=100),t}},watch:{realPercent:function(t,e){this.strokeTimer&&clearInterval(this.strokeTimer),this.lastPercent=e||0,this._activeAnimation()}},created:function(){this._activeAnimation()},methods:{_activeAnimation:function(){var t=this;this.active?(this.currentPercent=this.activeMode===o.activeMode?0:this.lastPercent,this.strokeTimer=setInterval((function(){t.currentPercent+1>t.realPercent?(t.currentPercent=t.realPercent,t.strokeTimer&&clearInterval(t.strokeTimer)):t.currentPercent+=1}),parseFloat(this.duration))):this.currentPercent=this.realPercent}}},s=a,c=(n("a18d"),n("8844")),u=Object(c["a"])(s,i,r,!1,null,null,null);e["default"]=u.exports},"82de":function(t,e,n){"use strict";var i="undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint16Array&&"undefined"!==typeof Int32Array;function r(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.assign=function(t){var e=Array.prototype.slice.call(arguments,1);while(e.length){var n=e.shift();if(n){if("object"!==typeof n)throw new TypeError(n+"must be non-object");for(var i in n)r(n,i)&&(t[i]=n[i])}}return t},e.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var o={arraySet:function(t,e,n,i,r){if(e.subarray&&t.subarray)t.set(e.subarray(n,n+i),r);else for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:{};if(!i){var e=["touchstart","touchmove","touchend","mousedown","mouseup"];e.forEach((function(t){document.addEventListener(t,(function(){!s&&c(!0),s++,setTimeout((function(){!--s&&c(!1)}),0)}),o)})),i=!0}a.push(t)}function l(t){var e=a.indexOf(t);e>=0&&a.splice(e,1)}e["a"]={data:function(){return{userInteract:!1}},mounted:function(){u(this)},beforeDestroy:function(){l(this)},addInteractListener:u,getStatus:function(){return!!s}}},"89b6":function(t,e,n){"use strict";(function(t){var i,r=n("909e"),o=n("7cce"),a=n("4452"),s=n("a82d");function c(t){return d(t)||h(t)||l(t)||u()}function u(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function l(t,e){if(t){if("string"===typeof t)return f(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(t,e):void 0}}function h(t){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}function d(t){if(Array.isArray(t))return f(t)}function f(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return i||(i=document.createElement("canvas")),i.width=t,i.height=e,i}e["a"]={name:"Canvas",mixins:[r["f"]],props:{canvasId:{type:String,default:""},disableScroll:{type:[Boolean,String],default:!1},hidpi:{type:Boolean,default:!0}},data:function(){return{actionsWaiting:!1}},computed:{id:function(){return this.canvasId},_listeners:function(){var t=this,e=Object.assign({},this.$listeners),n=["touchstart","touchmove","touchend"];return n.forEach((function(n){var i=e[n],r=[];i&&r.push((function(e){t.$trigger(n,Object.assign({},e,{touches:v(e.currentTarget,e.touches),changedTouches:v(e.currentTarget,e.changedTouches)}))})),t.disableScroll&&"touchmove"===n&&r.push(t._touchmove),e[n]=r})),e},pixelRatio:function(){return this.hidpi?o["a"]:1}},created:function(){this._actionsDefer=[],this._images={}},mounted:function(){this._resize()},beforeDestroy:function(){var t=this.$refs.canvas;t.height=t.width=0},methods:{_handleSubscribe:function(t){var e=t.type,n=t.data,i=void 0===n?{}:n,r=this[e];0!==e.indexOf("_")&&"function"===typeof r&&r(i)},_resize:function(t){var e=this.$refs.canvas,n=!t||e.width!==Math.floor(t.width*this.pixelRatio)||e.height!==Math.floor(t.height*this.pixelRatio);if(n)if(e.width>0&&e.height>0){var i=e.getContext("2d"),r=i.getImageData(0,0,e.width,e.height);Object(o["b"])(e,this.hidpi),i.putImageData(r,0,0)}else Object(o["b"])(e,this.hidpi)},_touchmove:function(t){t.preventDefault()},actionsChanged:function(e){var n=this,i=e.actions,r=e.reserve,o=e.callbackId,a=this;if(i)if(this.actionsWaiting)this._actionsDefer.push([i,r,o]);else{var s=this.$refs.canvas,u=s.getContext("2d");r||(u.fillStyle="#000000",u.strokeStyle="#000000",u.shadowColor="#000000",u.shadowBlur=0,u.shadowOffsetX=0,u.shadowOffsetY=0,u.setTransform(1,0,0,1,0,0),u.clearRect(0,0,s.width,s.height)),this.preloadImage(i);var l=function(t){var e=i[t],r=e.method,s=e.data;if(/^set/.test(r)&&"setTransform"!==r){var l,h=r[3].toLowerCase()+r.slice(4);if("fillStyle"===h||"strokeStyle"===h){if("normal"===s[0])l=p(s[1]);else if("linear"===s[0]){var v=u.createLinearGradient.apply(u,c(s[1]));s[2].forEach((function(t){var e=t[0],n=p(t[1]);v.addColorStop(e,n)})),l=v}else if("radial"===s[0]){var m=s[1][0],g=s[1][1],_=s[1][2],b=u.createRadialGradient(m,g,0,m,g,_);s[2].forEach((function(t){var e=t[0],n=p(t[1]);b.addColorStop(e,n)})),l=b}else if("pattern"===s[0]){var y=n.checkImageLoaded(s[1],i.slice(t+1),o,(function(t){t&&(u[h]=u.createPattern(t,s[2]))}));return y?"continue":"break"}u[h]=l}else if("globalAlpha"===h)u[h]=s[0]/255;else if("shadow"===h)d=["shadowOffsetX","shadowOffsetY","shadowBlur","shadowColor"],s.forEach((function(t,e){u[d[e]]="shadowColor"===d[e]?p(t):t}));else if("fontSize"===h){var w=u.__font__||u.font;u.__font__=u.font=w.replace(/\d+\.?\d*px/,s[0]+"px")}else"lineDash"===h?(u.setLineDash(s[0]),u.lineDashOffset=s[1]||0):"textBaseline"===h?("normal"===s[0]&&(s[0]="alphabetic"),u[h]=s[0]):"font"===h?u.__font__=u.font=s[0]:u[h]=s[0]}else if("fillPath"===r||"strokePath"===r)r=r.replace(/Path/,""),u.beginPath(),s.forEach((function(t){u[t.method].apply(u,t.data)})),u[r]();else if("fillText"===r)u.fillText.apply(u,s);else if("drawImage"===r){if(f=function(){var e=c(s),n=e[0],r=e.slice(1);if(a._images=a._images||{},!a.checkImageLoaded(n,i.slice(t+1),o,(function(t){t&&u.drawImage.apply(u,[t].concat(c(r.slice(4,8)),c(r.slice(0,4))))})))return"break"}(),"break"===f)return"break"}else"clip"===r?(s.forEach((function(t){u[t.method].apply(u,t.data)})),u.clip()):u[r].apply(u,s)};t:for(var h=0;h0&&void 0!==arguments[0])||arguments[0];return!!a["o"]&&{passive:t}},u=c(),l={name:"ScrollView",mixins:[o["a"]],props:{scrollX:{type:[Boolean,String],default:!1},scrollY:{type:[Boolean,String],default:!1},upperThreshold:{type:[Number,String],default:50},lowerThreshold:{type:[Number,String],default:50},scrollTop:{type:[Number,String],default:0},scrollLeft:{type:[Number,String],default:0},scrollIntoView:{type:String,default:""},scrollWithAnimation:{type:[Boolean,String],default:!1},enableBackToTop:{type:[Boolean,String],default:!1},refresherEnabled:{type:[Boolean,String],default:!1},refresherThreshold:{type:Number,default:45},refresherDefaultStyle:{type:String,default:"back"},refresherBackground:{type:String,default:"#fff"},refresherTriggered:{type:[Boolean,String],default:!1}},data:function(){return{lastScrollTop:this.scrollTopNumber,lastScrollLeft:this.scrollLeftNumber,lastScrollToUpperTime:0,lastScrollToLowerTime:0,refresherHeight:0,refreshRotate:0,refreshState:""}},computed:{upperThresholdNumber:function(){var t=Number(this.upperThreshold);return isNaN(t)?50:t},lowerThresholdNumber:function(){var t=Number(this.lowerThreshold);return isNaN(t)?50:t},scrollTopNumber:function(){return Number(this.scrollTop)||0},scrollLeftNumber:function(){return Number(this.scrollLeft)||0}},watch:{scrollTopNumber:function(t){this._scrollTopChanged(t)},scrollLeftNumber:function(t){this._scrollLeftChanged(t)},scrollIntoView:function(t){this._scrollIntoViewChanged(t)},refresherTriggered:function(t){!0===t?this._setRefreshState("refreshing"):!1===t&&this._setRefreshState("restore")}},mounted:function(){var t=this,e=null,n=null;this._attached=!0,this.toUpperNumber=0,this.triggerAbort=!1,this.beforeRefreshing=!1,this._scrollTopChanged(this.scrollTopNumber),this._scrollLeftChanged(this.scrollLeftNumber),this._scrollIntoViewChanged(this.scrollIntoView),this.__handleScroll=function(e){e.preventDefault(),e.stopPropagation(),t._handleScroll.bind(t,e)()},this.__handleTouchMove=function(i){if(null!==e){var r=i.touches[0].pageX,o=i.touches[0].pageY,a=t.$refs.main;if(Math.abs(r-e.x)>Math.abs(o-e.y))if(t.scrollX){if(0===a.scrollLeft&&r>e.x)return void(n=!1);if(a.scrollWidth===a.offsetWidth+a.scrollLeft&&re.y)n=!1,t.refresherEnabled&&!1!==i.cancelable&&i.preventDefault();else{if(a.scrollHeight===a.offsetHeight+a.scrollTop&&o0&&(t.triggerAbort=!0,t.$trigger("refresherpulling",i,{deltaY:s})));var c=t.refresherHeight/t.refresherThreshold;t.refreshRotate=360*(c>1?1:c)}}},this.__handleTouchStart=function(t){1===t.touches.length&&(Object(s["a"])({disable:!0}),e={x:t.touches[0].pageX,y:t.touches[0].pageY})},this.__handleTouchEnd=function(n){e=null,Object(s["a"])({disable:!1}),t.refresherHeight>=t.refresherThreshold?t._setRefreshState("refreshing"):t._setRefreshState("refresherabort")},this.$refs.main.addEventListener("touchstart",this.__handleTouchStart,u),this.$refs.main.addEventListener("touchmove",this.__handleTouchMove,c(!1)),this.$refs.main.addEventListener("scroll",this.__handleScroll,c(!1)),this.$refs.main.addEventListener("touchend",this.__handleTouchEnd,u),Object(s["b"])()},activated:function(){this.scrollY&&(this.$refs.main.scrollTop=this.lastScrollTop),this.scrollX&&(this.$refs.main.scrollLeft=this.lastScrollLeft)},beforeDestroy:function(){this.$refs.main.removeEventListener("touchstart",this.__handleTouchStart,u),this.$refs.main.removeEventListener("touchmove",this.__handleTouchMove,u),this.$refs.main.removeEventListener("scroll",this.__handleScroll,c(!1)),this.$refs.main.removeEventListener("touchend",this.__handleTouchEnd,u)},methods:{scrollTo:function(t,e){var n=this.$refs.main;t<0?t=0:"x"===e&&t>n.scrollWidth-n.offsetWidth?t=n.scrollWidth-n.offsetWidth:"y"===e&&t>n.scrollHeight-n.offsetHeight&&(t=n.scrollHeight-n.offsetHeight);var i=0,r="";"x"===e?i=n.scrollLeft-t:"y"===e&&(i=n.scrollTop-t),0!==i&&(this.$refs.content.style.transition="transform .3s ease-out",this.$refs.content.style.webkitTransition="-webkit-transform .3s ease-out","x"===e?r="translateX("+i+"px) translateZ(0)":"y"===e&&(r="translateY("+i+"px) translateZ(0)"),this.$refs.content.removeEventListener("transitionend",this.__transitionEnd),this.$refs.content.removeEventListener("webkitTransitionEnd",this.__transitionEnd),this.__transitionEnd=this._transitionEnd.bind(this,t,e),this.$refs.content.addEventListener("transitionend",this.__transitionEnd),this.$refs.content.addEventListener("webkitTransitionEnd",this.__transitionEnd),"x"===e?n.style.overflowX="hidden":"y"===e&&(n.style.overflowY="hidden"),this.$refs.content.style.transform=r,this.$refs.content.style.webkitTransform=r)},_handleTrack:function(t){if("start"===t.detail.state)return this._x=t.detail.x,this._y=t.detail.y,void(this._noBubble=null);"end"===t.detail.state&&(this._noBubble=!1),null===this._noBubble&&this.scrollY&&(Math.abs(this._y-t.detail.y)/Math.abs(this._x-t.detail.x)>1?this._noBubble=!0:this._noBubble=!1),null===this._noBubble&&this.scrollX&&(Math.abs(this._x-t.detail.x)/Math.abs(this._y-t.detail.y)>1?this._noBubble=!0:this._noBubble=!1),this._x=t.detail.x,this._y=t.detail.y,this._noBubble&&t.stopPropagation()},_handleScroll:function(t){var e=t.target;this.$trigger("scroll",t,{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,scrollWidth:e.scrollWidth,deltaX:this.lastScrollLeft-e.scrollLeft,deltaY:this.lastScrollTop-e.scrollTop}),this.scrollY&&(e.scrollTop<=this.upperThresholdNumber&&this.lastScrollTop-e.scrollTop>0&&t.timeStamp-this.lastScrollToUpperTime>200&&(this.$trigger("scrolltoupper",t,{direction:"top"}),this.lastScrollToUpperTime=t.timeStamp),e.scrollTop+e.offsetHeight+this.lowerThresholdNumber>=e.scrollHeight&&this.lastScrollTop-e.scrollTop<0&&t.timeStamp-this.lastScrollToLowerTime>200&&(this.$trigger("scrolltolower",t,{direction:"bottom"}),this.lastScrollToLowerTime=t.timeStamp)),this.scrollX&&(e.scrollLeft<=this.upperThresholdNumber&&this.lastScrollLeft-e.scrollLeft>0&&t.timeStamp-this.lastScrollToUpperTime>200&&(this.$trigger("scrolltoupper",t,{direction:"left"}),this.lastScrollToUpperTime=t.timeStamp),e.scrollLeft+e.offsetWidth+this.lowerThresholdNumber>=e.scrollWidth&&this.lastScrollLeft-e.scrollLeft<0&&t.timeStamp-this.lastScrollToLowerTime>200&&(this.$trigger("scrolltolower",t,{direction:"right"}),this.lastScrollToLowerTime=t.timeStamp)),this.lastScrollTop=e.scrollTop,this.lastScrollLeft=e.scrollLeft},_scrollTopChanged:function(t){this.scrollY&&(this._innerSetScrollTop?this._innerSetScrollTop=!1:this.scrollWithAnimation?this.scrollTo(t,"y"):this.$refs.main.scrollTop=t)},_scrollLeftChanged:function(t){this.scrollX&&(this._innerSetScrollLeft?this._innerSetScrollLeft=!1:this.scrollWithAnimation?this.scrollTo(t,"x"):this.$refs.main.scrollLeft=t)},_scrollIntoViewChanged:function(t){if(t){if(!/^[_a-zA-Z][-_a-zA-Z0-9:]*$/.test(t))return void console.error("id error: scroll-into-view=".concat(t));var e=this.$el.querySelector("#"+t);if(e){var n=this.$refs.main.getBoundingClientRect(),i=e.getBoundingClientRect();if(this.scrollX){var r=i.left-n.left,o=this.$refs.main.scrollLeft,a=o+r;this.scrollWithAnimation?this.scrollTo(a,"x"):this.$refs.main.scrollLeft=a}if(this.scrollY){var s=i.top-n.top,c=this.$refs.main.scrollTop,u=c+s;this.scrollWithAnimation?this.scrollTo(u,"y"):this.$refs.main.scrollTop=u}}}},_transitionEnd:function(t,e){this.$refs.content.style.transition="",this.$refs.content.style.webkitTransition="",this.$refs.content.style.transform="",this.$refs.content.style.webkitTransform="";var n=this.$refs.main;"x"===e?(n.style.overflowX=this.scrollX?"auto":"hidden",n.scrollLeft=t):"y"===e&&(n.style.overflowY=this.scrollY?"auto":"hidden",n.scrollTop=t),this.$refs.content.removeEventListener("transitionend",this.__transitionEnd),this.$refs.content.removeEventListener("webkitTransitionEnd",this.__transitionEnd)},_setRefreshState:function(t){switch(t){case"refreshing":this.refresherHeight=this.refresherThreshold,this.beforeRefreshing||(this.beforeRefreshing=!0,this.$trigger("refresherrefresh",{},{}));break;case"restore":case"refresherabort":this.beforeRefreshing=!1,this.refresherHeight=this.toUpperNumber=0,"restore"===t&&(this.triggerAbort=!1,this.$trigger("refresherrestore",{},{})),"refresherabort"===t&&this.triggerAbort&&(this.triggerAbort=!1,this.$trigger("refresherabort",{},{}));break}this.refreshState=t},getScrollPosition:function(){var t=this.$refs.main;return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop,scrollHeight:t.scrollHeight,scrollWidth:t.scrollWidth}}}},h=l,d=(n("f08e"),n("8844")),f=Object(d["a"])(h,i,r,!1,null,null,null);e["default"]=f.exports},9080:function(t,e,n){},"909e":function(t,e,n){"use strict";n.d(e,"a",(function(){return i["a"]})),n.d(e,"e",(function(){return r["a"]})),n.d(e,"c",(function(){return o})),n.d(e,"f",(function(){return a["a"]})),n.d(e,"d",(function(){return s["a"]})),n.d(e,"b",(function(){return c["a"]}));var i=n("0db8"),r=n("2ace"),o={data:function(){return{hovering:!1}},props:{hoverClass:{type:String,default:"none"},hoverStopPropagation:{type:Boolean,default:!1},hoverStartTime:{type:[Number,String],default:50},hoverStayTime:{type:[Number,String],default:400}},methods:{_hoverTouchStart:function(t){t.touches.length>1||this._handleHoverStart(t)},_hoverMousedown:function(t){this._hoverTouch||(this._handleHoverStart(t),window.addEventListener("mouseup",this._hoverMouseup))},_handleHoverStart:function(t){var e=this;t._hoverPropagationStopped||this.hoverClass&&"none"!==this.hoverClass&&!this.disabled&&(this.hoverStopPropagation&&(t._hoverPropagationStopped=!0),this._hoverTouch=!0,this._hoverStartTimer=setTimeout((function(){e.hovering=!0,e._hoverTouch||e._hoverReset()}),this.hoverStartTime))},_hoverMouseup:function(){this._hoverTouch&&(this._handleHoverEnd(),window.removeEventListener("mouseup",this._hoverMouseup))},_hoverTouchEnd:function(){this._handleHoverEnd()},_handleHoverEnd:function(){this._hoverTouch=!1,this.hovering&&this._hoverReset()},_hoverReset:function(){var t=this;requestAnimationFrame((function(){clearTimeout(t._hoverStayTimer),t._hoverStayTimer=setTimeout((function(){t.hovering=!1}),t.hoverStayTime)}))},_hoverTouchCancel:function(){this._hoverTouch=!1,this.hovering=!1,clearTimeout(this._hoverStartTimer)}}},a=n("23a1"),s=n("0e4a"),c=n("0c40");n("88a8")},"94b3":function(t,e,n){"use strict";(function(t){var i=n("0834"),r=n("c80c"),o=!1,a=function(t){var e=t.webviewStyles,n=t.htmlId,i=t.updateTitle,a=plus.webview.currentWebview(),s=Object.assign({"uni-app":"none",isUniH5:!0,contentAdjust:!1},e),c=a.getTitleNView();c&&(plus.navigator.isImmersedStatusbar()?s.top=r["a"]+plus.navigator.getStatusbarHeight():s.top=r["a"],s.bottom=0),o=plus.webview.create("",n,s),c&&o.addEventListener("titleUpdate",(function(){if(i){var t=o.getTitle();a.setStyle({titleNView:{titleText:t&&"null"!==t?t:" "}})}})),plus.webview.currentWebview().append(o)},s=function(t){var e=t.src,n=t.webviewStyles,i=e||"";i&&(/^(http|https):\/\//.test(i)&&n.progress&&o.setStyle({progress:{color:n.progress.color}}),o.loadURL(i))},c=function(){plus.webview.currentWebview().remove(o),o.close("none"),o=!1};e["a"]={name:"WebView",props:{src:{type:String,default:""},updateTitle:{type:Boolean,default:!0},webviewStyles:{type:Object,default:function(){return{}}}},watch:{src:function(t,e){o&&s({src:this.$getRealPath(t),webviewStyles:this.webviewStyles})}},mounted:function(){this.htmlId=i["k"]+this.$page.id,a({webviewStyles:this.webviewStyles,htmlId:this.htmlId,updateTitle:this.updateTitle}),s({src:this.$getRealPath(this.src),webviewStyles:this.webviewStyles}),t.publishHandler(i["l"],{},this.$page.id)},beforeDestroy:function(){c(),t.publishHandler(i["n"],{},this.$page.id)}}}).call(this,n("31d2"))},9593:function(t,e,n){"use strict";var i=n("83c2"),r=n.n(i);r.a},"95bd":function(t,e,n){"use strict";var i=n("1fdf"),r=n.n(i);r.a},"95eb":function(t,e,n){"use strict";function i(t,e){if(e){if(0===e.indexOf("/"))return e}else{if(e=t,0===e.indexOf("/"))return e;var n=getCurrentPages();t=n.length?n[n.length-1].$page.route:""}if(0===e.indexOf("./"))return i(t,e.substr(2));for(var r=e.split("/"),o=r.length,a=0;a0?t.split("/"):[];return s.splice(s.length-a-1,a+1),"/"+s.concat(r).join("/")}n.d(e,"a",(function(){return u}));var r,o=/^([a-z-]+:)?\/\//i,a=/^data:.*,.*/;function s(t){return plus.io.convertLocalFileSystemURL(t).replace(/^\/?apps\//,"/android_asset/apps/").replace(/\/$/,"")}function c(t){return r||(r="file://"+s("_www")+"/"),r+t}function u(t){if(0===t.indexOf("/"))return 0===t.indexOf("//")?"https:"+t:t.startsWith("/storage/")||t.startsWith("/sdcard/")||t.includes("/Containers/Data/Application/")?"file://"+t:c(t.substr(1));if(o.test(t)||a.test(t)||0===t.indexOf("blob:"))return t;if(0===t.indexOf("_www")||0===t.indexOf("_do"))return"file://"+s(t);var e=getCurrentPages();return e.length?c(i(e[e.length-1].$page.route,t).substr(1)):t}},9602:function(t,e,n){"use strict";(function(t){n("38ce");var i=n("cce2"),r=n("2be0"),o=n("f98c");e["a"]={install:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.routes;Object(i["a"])();var n=function(t,e){for(var n=t.target;n&&n!==e;n=n.parentNode)if(n.tagName&&0===n.tagName.indexOf("UNI-"))break;return n};t.prototype.$handleEvent=function(t){if(t instanceof Event){var e=n(t,this.$el);t=i["b"].call(this,t.type,t,{},e||t.target,t.currentTarget)}return t},t.prototype.$getComponentDescriptor=function(t,e){return Object(o["b"])(t||this,e)},Object.defineProperty(t.prototype,"$ownerInstance",{get:function(){return this.$getComponentDescriptor(this)}}),t.prototype.$handleWxsEvent=function(t){if(t instanceof Event){var e=t.currentTarget,r=e&&(e.__vue__||e),o=e&&r.$getComponentDescriptor&&r.$getComponentDescriptor(r,!1),a=t;t=i["b"].call(this,a.type,a,{},n(a,this.$el)||a.target,a.currentTarget),t.instance=o,t.preventDefault=function(){return a.preventDefault()},t.stopPropagation=function(){return a.stopPropagation()}}return t},t.mixin({beforeCreate:function(){var t=this,e=this.$options,n=e.wxs;n&&Object.keys(n).forEach((function(e){t[e]=n[e]})),e.behaviors&&e.behaviors.length&&Object(r["a"])(e,this)}})}}}).call(this,n("31d2"))},"960c":function(t,e,n){"use strict";n.r(e);var i,r,o={name:"View",functional:!0,render:function(t,e){return t("uni-view",e.data,e.children)}},a=o,s=(n("e443"),n("8844")),c=Object(s["a"])(a,i,r,!1,null,null,null);e["default"]=c.exports},"96a6":function(t,e,n){"use strict";function i(){return{top:0,bottom:0,left:0,right:0}}n.d(e,"a",(function(){return i}))},9848:function(t,e,n){"use strict";var i=n("65db"),r=n.n(i);r.a},9854:function(t,e,n){"use strict";var i=n("f669"),r=n.n(i);r.a},"9a7c":function(t,e,n){"use strict";(function(t){var i=n("909e"),r=n("09b2"),o=["adpid","data"];e["a"]={name:"Ad",mixins:[i["f"],r["a"]],props:{adpid:{type:[Number,String],default:""},data:{type:Object,default:null},dataCount:{type:Number,default:5},channel:{type:String,default:""}},data:function(){return{hidden:!1}},computed:{attrs:function(){var t=this,e={};return o.forEach((function(n){var i=t.$props[n];i="src"===n?t.$getRealPath(i):i,e[n.replace(/[A-Z]/g,(function(t){return"-"+t.toLowerCase()}))]=i})),e}},watch:{hidden:function(t){this.adView&&this.adView[t?"hide":"show"]()},adpid:function(t){t&&this._loadData(t)},data:function(t){t&&this._fillData(t)}},mounted:function(){var e=this;this._onParentReady((function(){e._adId="AdView-"+e._newGUID();var n=Object.assign({id:e._adId},e.position),i=e.adView=plus.ad.createAdView(n);i.interceptTouchEvent(!1),plus.webview.currentWebview().append(i),e.hidden&&i.hide(),e.$watch("attrs",(function(){e._request()}),{deep:!0}),e.$watch("position",(function(){e.adView&&e.adView.setStyle(e.position)}),{deep:!0}),i.setDislikeListener&&i.setDislikeListener((function(t){e.adView&&e.adView.close(),e.$refs.container.style.height="0px",e._updateView(),e.$trigger("close",{},t)})),i.setRenderingListener&&i.setRenderingListener((function(t){0===t.result?(e.$refs.container.style.height=t.height+"px",e._updateView()):e.$trigger("error",{},{errCode:t.result})})),i.setAdClickedListener((function(t){e.$trigger("adclicked",{},t)})),e._callbackId=e.$page.id+e._adId,t.subscribe(e._callbackId,e._handleAdData.bind(e)),e._request()}))},beforeDestroy:function(){this.adView&&this.adView.close(),delete this.adView},methods:{_handleAdData:function(t){var e=t.type,n=t.data,i=void 0===n?{}:n;switch(e){case"success":this._fillData(i);break;case"fail":this.$trigger("error",{},i);break}},_request:function(){this.adView&&(this.data?this._fillData(this.data):this.adpid&&this._loadData())},_loadData:function(e){var n={adpid:e||this.adpid,width:this.position.width,count:this.dataCount,ext:{channel:this.channel}};t.publishHandler("onAdMethodCallback",{callbackId:this._callbackId,data:n},this.$page.id)},_fillData:function(t){this.adView.renderingBind(t),this.$trigger("load",{},{})},_updateView:function(){window.dispatchEvent(new CustomEvent("updateview"))},_newGUID:function(){for(var t="",e="xxxxxxxx-xxxx",n=0;nt.length)&&(e=t.length);for(var n=0,i=new Array(e);n=0)&&(this.valueSync.length=t.length,t.forEach((function(t,e){t!==n.valueSync[e]&&n.$set(n.valueSync,e,t)})))},valueSync:{deep:!0,handler:function(t,e){if(""===this.changeSource)this._valueChanged(t);else{this.changeSource="";var n=t.map((function(t){return t}));this.$emit("update:value",n),this.$trigger("change",{},{value:n})}}}},methods:{getItemIndex:function(t){return this.items.indexOf(t)},getItemValue:function(t){return this.valueSync[this.getItemIndex(t.$vnode)]||0},setItemValue:function(t,e){var n=this.getItemIndex(t.$vnode),i=this.valueSync[n];i!==e&&(this.changeSource="touch",this.$set(this.valueSync,n,e))},_valueChanged:function(t){this.items.forEach((function(e,n){e.componentInstance.setCurrent(t[n]||0)}))},_resize:function(t){var e=t.height;this.height=e}},render:function(t){var e=[];return this.$slots.default&&Object(i["e"])(this.$slots.default,t).forEach((function(t){t.componentOptions&&"v-uni-picker-view-column"===t.componentOptions.tag&&e.push(t)})),this.items=e,t("uni-picker-view",{on:this.$listeners},[t("v-uni-resize-sensor",{attrs:{initial:!0},on:{resize:this._resize}}),t("div",{ref:"wrapper",class:"uni-picker-view-wrapper"},e)])}},f=d,p=(n("1720"),n("8844")),v=Object(p["a"])(f,l,h,!1,null,null,null);e["default"]=v.exports},a004:function(t,e){t.exports=["uni-app","uni-layout","uni-content","uni-main","uni-top-window","uni-left-window","uni-right-window","uni-tabbar","uni-page","uni-page-head","uni-page-wrapper","uni-page-body","uni-page-refresh","uni-actionsheet","uni-modal","uni-toast","uni-resize-sensor","uni-shadow-root","uni-ad","uni-audio","uni-button","uni-camera","uni-canvas","uni-checkbox","uni-checkbox-group","uni-cover-image","uni-cover-view","uni-editor","uni-form","uni-functional-page-navigator","uni-icon","uni-image","uni-input","uni-label","uni-live-player","uni-live-pusher","uni-map","uni-movable-area","uni-movable-view","uni-navigator","uni-official-account","uni-open-data","uni-picker","uni-picker-view","uni-picker-view-column","uni-progress","uni-radio","uni-radio-group","uni-rich-text","uni-scroll-view","uni-slider","uni-swiper","uni-swiper-item","uni-switch","uni-text","uni-textarea","uni-video","uni-view","uni-web-view"]},a048:function(t,e,n){"use strict";(function(t){var i=n("909e"),r=n("2cc9"),o=n("ea56"),a=n("3231"),s=n("0372"),c=n("c80c"),u={SELECTOR:"selector",MULTISELECTOR:"multiSelector",TIME:"time",DATE:"date"},l={YEAR:"year",MONTH:"month",DAY:"day"};function h(t){return t>9?t:"0".concat(t)}function d(t,e){t=String(t||"");var n=new Date;return e===u.TIME?(t=t.split(":"),2===t.length&&n.setHours(parseInt(t[0]),parseInt(t[1]))):(t=t.split("-"),3===t.length&&n.setFullYear(parseInt(t[0]),parseInt(t[1]-1),parseInt(t[2]))),n}function f(){if(this.mode===u.TIME)return"00:00";if(this.mode===u.DATE){var t=(new Date).getFullYear()-100;switch(this.fields){case l.YEAR:return t;case l.MONTH:return t+"-01";default:return t+"-01-01"}}return""}function p(){if(this.mode===u.TIME)return"23:59";if(this.mode===u.DATE){var t=(new Date).getFullYear()+100;switch(this.fields){case l.YEAR:return t;case l.MONTH:return t+"-12";default:return t+"-12-31"}}return""}e["a"]={name:"Picker",mixins:[s["b"],i["a"]],props:{name:{type:String,default:""},range:{type:Array,default:function(){return[]}},rangeKey:{type:String,default:""},value:{type:[Number,String,Array],default:0},mode:{type:String,default:u.SELECTOR,validator:function(t){return Object.values(u).indexOf(t)>=0}},fields:{type:String,default:""},start:{type:String,default:f},end:{type:String,default:p},disabled:{type:[Boolean,String],default:!1}},data:function(){return{valueSync:null,theme:__uniConfig.darkmode?plus.navigator.getUIStyle():"light"}},watch:{value:function(){this._setValueSync()}},created:function(){var e=this;this.$dispatch("Form","uni-form-group-update",{type:"add",vm:this}),Object.keys(this.$props).forEach((function(t){"name"!==t&&e.$watch(t,(function(n){var i={};i[t]=n,e._updatePicker(i)}))})),this._setValueSync(),t.subscribe(c["b"],this._onThemeChange)},mounted:function(){o["a"]((function(t){t&&o["b"]()}))},beforeDestroy:function(){this.$dispatch("Form","uni-form-group-update",{type:"remove",vm:this}),t.unsubscribe(c["b"],this._onThemeChange)},methods:{_setValueSync:function(){var t=this.value;switch(this.mode){case u.MULTISELECTOR:Array.isArray(t)||(t=[]),Array.isArray(this.valueSync)||(this.valueSync=[]);for(var e=this.valueSync.length=Math.max(t.length,this.range.length),n=0;nNumber(this.max)&&(this.sliderValue=Number(this.max)),this.$dispatch("Form","uni-form-group-update",{type:"add",vm:this})},beforeDestroy:function(){this.$dispatch("Form","uni-form-group-update",{type:"remove",vm:this})},methods:{_onUserChangedValue:function(t){var e=Number(this.max),n=Number(this.min),i=this.$refs["uni-slider-value"],r=getComputedStyle(i,null).marginLeft,o=i.offsetWidth;o+=parseInt(r);var a=this.$refs["uni-slider"],c=a.offsetWidth-(this.showValue?o:0),u=a.getBoundingClientRect().left,l=(t.x-u)/c,h=(this.truthStep+"").split(".")[1];this.sliderValue=parseFloat(this._filterValue(n,this.truthStep,s(n,e,l)).toFixed(h?h.length:0))},_filterValue:function(t,e,n){return Math.round((n-t)/e)*e+t},_getValueWidth:function(){return 100*(this.sliderValue-this.min)/(this.max-this.min)+"%"},_getBgColor:function(){return"#e9e9e9"!==this.backgroundColor?this.backgroundColor:"#007aff"!==this.color?this.color:"#007aff"},_getActiveColor:function(){return"#007aff"!==this.activeColor?this.activeColor:"#e9e9e9"!==this.selectedColor?this.selectedColor:"#e9e9e9"},_onTrack:function(t){if(!this.disabled)return"move"===t.detail.state?(this._onUserChangedValue({x:t.detail.x}),this.$trigger("changing",t,{value:this.sliderValue}),!1):"end"===t.detail.state&&this.$trigger("change",t,{value:this.sliderValue})},_onClick:function(t){this.disabled||(this._onUserChangedValue(t),this.$trigger("change",t,{value:this.sliderValue}))},_resetFormData:function(){this.sliderValue=this.min},_getFormData:function(){var t={};return""!==this.name&&(t.value=this.sliderValue,t.key=this.name),t}}},u=c,l=(n("f2a9"),n("8844")),h=Object(l["a"])(u,i,r,!1,null,null,null);e["default"]=h.exports},a187:function(t,e,n){},a18d:function(t,e,n){"use strict";var i=n("07b5"),r=n.n(i);r.a},a1d7:function(t,e,n){var i={"./audio/index.vue":"d55f","./button/index.vue":"d6fb","./canvas/index.vue":"63b1","./checkbox-group/index.vue":"d514","./checkbox/index.vue":"ca37","./editor/index.vue":"b1d2","./form/index.vue":"baa1","./icon/index.vue":"0abb","./image/index.vue":"7efa","./input/index.vue":"e0e1","./label/index.vue":"2a78","./movable-area/index.vue":"dbe8","./movable-view/index.vue":"65ce","./navigator/index.vue":"5c1f","./picker-view-column/index.vue":"e510","./picker-view/index.vue":"9eba","./progress/index.vue":"801b","./radio-group/index.vue":"3a3e","./radio/index.vue":"1f8a","./resize-sensor/index.vue":"120f","./rich-text/index.vue":"7aa9","./scroll-view/index.vue":"8f80","./slider/index.vue":"a050","./swiper-item/index.vue":"2066","./swiper/index.vue":"383e","./switch/index.vue":"c1f1","./text/index.vue":"e9d1","./textarea/index.vue":"da9d"};function r(t){var e=o(t);return n(e)}function o(t){if(!n.o(i,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return i[t]}r.keys=function(){return Object.keys(i)},r.resolve=o,t.exports=r,r.id="a1d7"},a5bd:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return o}));var i=[];function r(){return i}function o(t,e){i.length=0,i.push({$page:{id:t,route:e}})}},a770:function(t,e){(function(){"use strict";if("object"===typeof window)if("IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype)"isIntersecting"in window.IntersectionObserverEntry.prototype||Object.defineProperty(window.IntersectionObserverEntry.prototype,"isIntersecting",{get:function(){return this.intersectionRatio>0}});else{var t=window.document,e=[];i.prototype.THROTTLE_TIMEOUT=100,i.prototype.POLL_INTERVAL=null,i.prototype.USE_MUTATION_OBSERVER=!0,i.prototype.observe=function(t){var e=this._observationTargets.some((function(e){return e.element==t}));if(!e){if(!t||1!=t.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:t,entry:null}),this._monitorIntersections(),this._checkForIntersections()}},i.prototype.unobserve=function(t){this._observationTargets=this._observationTargets.filter((function(e){return e.element!=t})),this._observationTargets.length||(this._unmonitorIntersections(),this._unregisterInstance())},i.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorIntersections(),this._unregisterInstance()},i.prototype.takeRecords=function(){var t=this._queuedEntries.slice();return this._queuedEntries=[],t},i.prototype._initThresholds=function(t){var e=t||[0];return Array.isArray(e)||(e=[e]),e.sort().filter((function(t,e,n){if("number"!=typeof t||isNaN(t)||t<0||t>1)throw new Error("threshold must be a number between 0 and 1 inclusively");return t!==n[e-1]}))},i.prototype._parseRootMargin=function(t){var e=t||"0px",n=e.split(/\s+/).map((function(t){var e=/^(-?\d*\.?\d+)(px|%)$/.exec(t);if(!e)throw new Error("rootMargin must be specified in pixels or percent");return{value:parseFloat(e[1]),unit:e[2]}}));return n[1]=n[1]||n[0],n[2]=n[2]||n[0],n[3]=n[3]||n[1],n},i.prototype._monitorIntersections=function(){this._monitoringIntersections||(this._monitoringIntersections=!0,this.POLL_INTERVAL?this._monitoringInterval=setInterval(this._checkForIntersections,this.POLL_INTERVAL):(a(window,"resize",this._checkForIntersections,!0),a(t,"scroll",this._checkForIntersections,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in window&&(this._domObserver=new MutationObserver(this._checkForIntersections),this._domObserver.observe(t,{attributes:!0,childList:!0,characterData:!0,subtree:!0}))))},i.prototype._unmonitorIntersections=function(){this._monitoringIntersections&&(this._monitoringIntersections=!1,clearInterval(this._monitoringInterval),this._monitoringInterval=null,s(window,"resize",this._checkForIntersections,!0),s(t,"scroll",this._checkForIntersections,!0),this._domObserver&&(this._domObserver.disconnect(),this._domObserver=null))},i.prototype._checkForIntersections=function(){var t=this._rootIsInDom(),e=t?this._getRootRect():l();this._observationTargets.forEach((function(i){var o=i.element,a=u(o),s=this._rootContainsTarget(o),c=i.entry,l=t&&s&&this._computeTargetAndRootIntersection(o,e),h=i.entry=new n({time:r(),target:o,boundingClientRect:a,rootBounds:e,intersectionRect:l});c?t&&s?this._hasCrossedThreshold(c,h)&&this._queuedEntries.push(h):c&&c.isIntersecting&&this._queuedEntries.push(h):this._queuedEntries.push(h)}),this),this._queuedEntries.length&&this._callback(this.takeRecords(),this)},i.prototype._computeTargetAndRootIntersection=function(e,n){if("none"!=window.getComputedStyle(e).display){var i=u(e),r=i,o=d(e),a=!1;while(!a){var s=null,l=1==o.nodeType?window.getComputedStyle(o):{};if("none"==l.display)return;if(o==this.root||o==t?(a=!0,s=n):o!=t.body&&o!=t.documentElement&&"visible"!=l.overflow&&(s=u(o)),s&&(r=c(s,r),!r))break;o=d(o)}return r}},i.prototype._getRootRect=function(){var e;if(this.root)e=u(this.root);else{var n=t.documentElement,i=t.body;e={top:0,left:0,right:n.clientWidth||i.clientWidth,width:n.clientWidth||i.clientWidth,bottom:n.clientHeight||i.clientHeight,height:n.clientHeight||i.clientHeight}}return this._expandRectByRootMargin(e)},i.prototype._expandRectByRootMargin=function(t){var e=this._rootMarginValues.map((function(e,n){return"px"==e.unit?e.value:e.value*(n%2?t.width:t.height)/100})),n={top:t.top-e[0],right:t.right+e[1],bottom:t.bottom+e[2],left:t.left-e[3]};return n.width=n.right-n.left,n.height=n.bottom-n.top,n},i.prototype._hasCrossedThreshold=function(t,e){var n=t&&t.isIntersecting?t.intersectionRatio||0:-1,i=e.isIntersecting?e.intersectionRatio||0:-1;if(n!==i)for(var r=0;r=0&&s>=0&&{top:n,bottom:i,left:r,right:o,width:a,height:s}}function u(t){var e;try{e=t.getBoundingClientRect()}catch(n){}return e?(e.width&&e.height||(e={top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:e.right-e.left,height:e.bottom-e.top}),e):l()}function l(){return{top:0,bottom:0,left:0,right:0,width:0,height:0}}function h(t,e){var n=e;while(n){if(n==t)return!0;n=d(n)}return!1}function d(t){var e=t.parentNode;return e&&11==e.nodeType&&e.host?e.host:e&&e.assignedSlot?e.assignedSlot.parentNode:e}})()},a82d:function(t,e,n){"use strict";n.d(e,"a",(function(){return a}));var i=0;function r(t){return new Promise((function(e,n){function r(){var r=new plus.nativeObj.Bitmap("bitmap_".concat(Date.now(),"_").concat(Math.random(),"_").concat(++i));r.load(t,(function(){e(r.toBase64Data()),r.clear()}),(function(t){r.clear(),n(t)}))}plus.io.resolveLocalFileSystemURL(t,(function(t){t.file((function(t){var n=new plus.io.FileReader;n.onload=function(t){e(t.target.result)},n.onerror=r,n.readAsDataURL(t)}),r)}),r)}))}function o(t){return new Promise((function(e,n){0===t.indexOf("http://")||0===t.indexOf("https://")?plus.downloader.createDownload(t,{filename:"_doc/uniapp_temp/download/"},(function(t,i){200===i?e(t.filename):n(new Error("network fail"))})).start():e(t)}))}function a(t){return o(t).then((function(t){return window.webkit&&window.webkit.messageHandlers?r(t):plus.io.convertLocalFileSystemURL(t)}))}},a944:function(t,e,n){var i,r,o;(function(n,a){r=[],i=a,o="function"===typeof i?i.apply(e,r):i,void 0===o||(t.exports=o)})("undefined"!==typeof self&&self,(function(){function t(){if(document.currentScript)return document.currentScript;try{throw new Error}catch(h){var t,e,n,i=/.*at [^(]*\((.*):(.+):(.+)\)$/gi,r=/@([^@]*):(\d+):(\d+)\s*$/gi,o=i.exec(h.stack)||r.exec(h.stack),a=o&&o[1]||!1,s=o&&o[2]||!1,c=document.location.href.replace(document.location.hash,""),u=document.getElementsByTagName("script");a===c&&(t=document.documentElement.outerHTML,e=new RegExp("(?:[^\\n]+?\\n){0,"+(s-2)+"}[^<]*